summaryrefslogtreecommitdiff
path: root/Build/source/libs
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2023-12-22 17:28:50 +0000
committerKarl Berry <karl@freefriends.org>2023-12-22 17:28:50 +0000
commitbaf6f642710d586bcf020e81f271f0808697abac (patch)
treea412709af5c91febc1dce56bdf0ecdf15f05e7bb /Build/source/libs
parent3f20a8c6c01165eb0d3400db3d8f0827b1c0deaf (diff)
icu 74.2
git-svn-id: svn://tug.org/texlive/trunk@69195 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/libs')
-rw-r--r--Build/source/libs/icu/ChangeLog5
-rw-r--r--Build/source/libs/icu/TLpatches/ChangeLog4
-rw-r--r--Build/source/libs/icu/TLpatches/TL-Changes22
-rw-r--r--Build/source/libs/icu/TLpatches/patch-01-configure-gcc4
-rw-r--r--Build/source/libs/icu/TLpatches/patch-12-mingw4
-rw-r--r--Build/source/libs/icu/TLpatches/patch-13-STATIC_PREFIX8
-rw-r--r--Build/source/libs/icu/TLpatches/patch-19-netbsd4
-rw-r--r--Build/source/libs/icu/icu-src/APIChangeReport.html929
-rw-r--r--Build/source/libs/icu/icu-src/APIChangeReport.md471
-rwxr-xr-xBuild/source/libs/icu/icu-src/build_qnx/Makefile54
-rwxr-xr-xBuild/source/libs/icu/icu-src/build_qnx/build-hooks81
-rwxr-xr-xBuild/source/libs/icu/icu-src/build_qnx/linux-x86_64-o/GNUmakefile8
-rwxr-xr-xBuild/source/libs/icu/icu-src/build_qnx/nto-aarch64-le/GNUmakefile8
-rwxr-xr-xBuild/source/libs/icu/icu-src/build_qnx/nto-x86_64-o/GNUmakefile8
-rw-r--r--Build/source/libs/icu/icu-src/source/Doxyfile.in7
-rw-r--r--Build/source/libs/icu/icu-src/source/acinclude.m41
-rw-r--r--Build/source/libs/icu/icu-src/source/aclocal.m410
-rw-r--r--Build/source/libs/icu/icu-src/source/allinone/Build.Windows.IcuVersion.props2
-rw-r--r--Build/source/libs/icu/icu-src/source/common/BUILD.bazel5
-rw-r--r--Build/source/libs/icu/icu-src/source/common/appendable.cpp14
-rw-r--r--Build/source/libs/icu/icu-src/source/common/bmpset.cpp12
-rw-r--r--Build/source/libs/icu/icu-src/source/common/bmpset.h4
-rw-r--r--Build/source/libs/icu/icu-src/source/common/brkeng.cpp153
-rw-r--r--Build/source/libs/icu/icu-src/source/common/brkeng.h61
-rw-r--r--Build/source/libs/icu/icu-src/source/common/brkiter.cpp76
-rw-r--r--Build/source/libs/icu/icu-src/source/common/bytestream.cpp4
-rw-r--r--Build/source/libs/icu/icu-src/source/common/bytestrie.cpp18
-rw-r--r--Build/source/libs/icu/icu-src/source/common/bytestriebuilder.cpp34
-rw-r--r--Build/source/libs/icu/icu-src/source/common/bytestrieiterator.cpp26
-rw-r--r--Build/source/libs/icu/icu-src/source/common/caniter.cpp84
-rw-r--r--Build/source/libs/icu/icu-src/source/common/characterproperties.cpp36
-rw-r--r--Build/source/libs/icu/icu-src/source/common/chariter.cpp6
-rw-r--r--Build/source/libs/icu/icu-src/source/common/charstr.cpp16
-rw-r--r--Build/source/libs/icu/icu-src/source/common/charstr.h6
-rw-r--r--Build/source/libs/icu/icu-src/source/common/charstrmap.h4
-rw-r--r--Build/source/libs/icu/icu-src/source/common/cmemory.cpp18
-rw-r--r--Build/source/libs/icu/icu-src/source/common/cmemory.h94
-rw-r--r--Build/source/libs/icu/icu-src/source/common/common.vcxproj4
-rw-r--r--Build/source/libs/icu/icu-src/source/common/common.vcxproj.filters18
-rw-r--r--Build/source/libs/icu/icu-src/source/common/common_uwp.vcxproj4
-rw-r--r--Build/source/libs/icu/icu-src/source/common/cpputils.h4
-rw-r--r--Build/source/libs/icu/icu-src/source/common/cstr.cpp2
-rw-r--r--Build/source/libs/icu/icu-src/source/common/cstring.cpp18
-rw-r--r--Build/source/libs/icu/icu-src/source/common/dictbe.cpp37
-rw-r--r--Build/source/libs/icu/icu-src/source/common/dictbe.h7
-rw-r--r--Build/source/libs/icu/icu-src/source/common/dictionarydata.cpp20
-rw-r--r--Build/source/libs/icu/icu-src/source/common/dictionarydata.h12
-rw-r--r--Build/source/libs/icu/icu-src/source/common/edits.cpp10
-rw-r--r--Build/source/libs/icu/icu-src/source/common/emojiprops.cpp12
-rw-r--r--Build/source/libs/icu/icu-src/source/common/emojiprops.h6
-rw-r--r--Build/source/libs/icu/icu-src/source/common/filteredbrk.cpp74
-rw-r--r--Build/source/libs/icu/icu-src/source/common/filterednormalizer2.cpp8
-rw-r--r--Build/source/libs/icu/icu-src/source/common/hash.h14
-rw-r--r--Build/source/libs/icu/icu-src/source/common/icudataver.cpp6
-rw-r--r--Build/source/libs/icu/icu-src/source/common/icuplug.cpp112
-rw-r--r--Build/source/libs/icu/icu-src/source/common/loadednormalizer2impl.cpp115
-rw-r--r--Build/source/libs/icu/icu-src/source/common/localefallback_data.h1842
-rw-r--r--Build/source/libs/icu/icu-src/source/common/localematcher.cpp14
-rw-r--r--Build/source/libs/icu/icu-src/source/common/locavailable.cpp14
-rw-r--r--Build/source/libs/icu/icu-src/source/common/locbased.cpp4
-rw-r--r--Build/source/libs/icu/icu-src/source/common/locdispnames.cpp116
-rw-r--r--Build/source/libs/icu/icu-src/source/common/locdspnm.cpp96
-rw-r--r--Build/source/libs/icu/icu-src/source/common/locid.cpp229
-rw-r--r--Build/source/libs/icu/icu-src/source/common/loclikely.cpp786
-rw-r--r--Build/source/libs/icu/icu-src/source/common/loclikelysubtags.cpp415
-rw-r--r--Build/source/libs/icu/icu-src/source/common/loclikelysubtags.h28
-rw-r--r--Build/source/libs/icu/icu-src/source/common/locmap.cpp26
-rw-r--r--Build/source/libs/icu/icu-src/source/common/locresdata.cpp34
-rw-r--r--Build/source/libs/icu/icu-src/source/common/locutil.cpp54
-rw-r--r--Build/source/libs/icu/icu-src/source/common/lsr.cpp24
-rw-r--r--Build/source/libs/icu/icu-src/source/common/lsr.h7
-rw-r--r--Build/source/libs/icu/icu-src/source/common/lstmbe.cpp18
-rw-r--r--Build/source/libs/icu/icu-src/source/common/lstmbe.h4
-rw-r--r--Build/source/libs/icu/icu-src/source/common/messagepattern.cpp172
-rw-r--r--Build/source/libs/icu/icu-src/source/common/mlbe.cpp270
-rw-r--r--Build/source/libs/icu/icu-src/source/common/mlbe.h116
-rw-r--r--Build/source/libs/icu/icu-src/source/common/norm2_nfc_data.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/common/norm2allmodes.h143
-rw-r--r--Build/source/libs/icu/icu-src/source/common/normalizer2.cpp120
-rw-r--r--Build/source/libs/icu/icu-src/source/common/normalizer2impl.cpp274
-rw-r--r--Build/source/libs/icu/icu-src/source/common/normalizer2impl.h97
-rw-r--r--Build/source/libs/icu/icu-src/source/common/normlzr.cpp14
-rw-r--r--Build/source/libs/icu/icu-src/source/common/patternprops.cpp16
-rw-r--r--Build/source/libs/icu/icu-src/source/common/patternprops.h8
-rw-r--r--Build/source/libs/icu/icu-src/source/common/pluralmap.cpp2
-rw-r--r--Build/source/libs/icu/icu-src/source/common/pluralmap.h40
-rw-r--r--Build/source/libs/icu/icu-src/source/common/propname.cpp22
-rw-r--r--Build/source/libs/icu/icu-src/source/common/propname_data.h2008
-rw-r--r--Build/source/libs/icu/icu-src/source/common/propsvec.cpp44
-rw-r--r--Build/source/libs/icu/icu-src/source/common/punycode.cpp42
-rw-r--r--Build/source/libs/icu/icu-src/source/common/putil.cpp289
-rw-r--r--Build/source/libs/icu/icu-src/source/common/rbbi.cpp241
-rw-r--r--Build/source/libs/icu/icu-src/source/common/rbbi_cache.cpp7
-rw-r--r--Build/source/libs/icu/icu-src/source/common/rbbidata.cpp20
-rw-r--r--Build/source/libs/icu/icu-src/source/common/rbbidata.h4
-rw-r--r--Build/source/libs/icu/icu-src/source/common/rbbinode.cpp50
-rw-r--r--Build/source/libs/icu/icu-src/source/common/rbbirb.cpp41
-rw-r--r--Build/source/libs/icu/icu-src/source/common/rbbirb.h3
-rw-r--r--Build/source/libs/icu/icu-src/source/common/rbbiscan.cpp82
-rw-r--r--Build/source/libs/icu/icu-src/source/common/rbbiscan.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/common/rbbisetb.cpp26
-rw-r--r--Build/source/libs/icu/icu-src/source/common/rbbistbl.cpp38
-rw-r--r--Build/source/libs/icu/icu-src/source/common/rbbitblb.cpp93
-rw-r--r--Build/source/libs/icu/icu-src/source/common/rbbitblb.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/common/resbund.cpp50
-rw-r--r--Build/source/libs/icu/icu-src/source/common/resbund_cnv.cpp8
-rw-r--r--Build/source/libs/icu/icu-src/source/common/resource.h12
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ruleiter.cpp2
-rw-r--r--Build/source/libs/icu/icu-src/source/common/schriter.cpp2
-rw-r--r--Build/source/libs/icu/icu-src/source/common/serv.cpp168
-rw-r--r--Build/source/libs/icu/icu-src/source/common/serv.h70
-rw-r--r--Build/source/libs/icu/icu-src/source/common/servlk.cpp14
-rw-r--r--Build/source/libs/icu/icu-src/source/common/servlkf.cpp20
-rw-r--r--Build/source/libs/icu/icu-src/source/common/servloc.h4
-rw-r--r--Build/source/libs/icu/icu-src/source/common/servls.cpp40
-rw-r--r--Build/source/libs/icu/icu-src/source/common/servnotf.cpp22
-rw-r--r--Build/source/libs/icu/icu-src/source/common/servnotf.h6
-rw-r--r--Build/source/libs/icu/icu-src/source/common/servrbf.cpp12
-rw-r--r--Build/source/libs/icu/icu-src/source/common/servslkf.cpp12
-rw-r--r--Build/source/libs/icu/icu-src/source/common/sharedobject.h20
-rw-r--r--Build/source/libs/icu/icu-src/source/common/simpleformatter.cpp36
-rw-r--r--Build/source/libs/icu/icu-src/source/common/sources.txt3
-rw-r--r--Build/source/libs/icu/icu-src/source/common/static_unicode_sets.cpp2
-rw-r--r--Build/source/libs/icu/icu-src/source/common/stringpiece.cpp4
-rw-r--r--Build/source/libs/icu/icu-src/source/common/stringtriebuilder.cpp74
-rw-r--r--Build/source/libs/icu/icu-src/source/common/uarrsort.cpp4
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ubidi.cpp150
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ubidi_props.cpp2
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ubidi_props_data.h133
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ubidiln.cpp46
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ubiditransform.cpp86
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ubidiwrt.cpp58
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ubrk.cpp52
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ucase.cpp260
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ucase.h10
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ucase_props_data.h131
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ucasemap.cpp57
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ucasemap_imp.h27
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ucasemap_titlecase_brkiter.cpp6
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ucat.cpp12
-rw-r--r--Build/source/libs/icu/icu-src/source/common/uchar.cpp42
-rw-r--r--Build/source/libs/icu/icu-src/source/common/uchar_props_data.h5924
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ucharstrie.cpp40
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ucharstriebuilder.cpp92
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ucharstrieiterator.cpp30
-rw-r--r--Build/source/libs/icu/icu-src/source/common/uchriter.cpp18
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ucln_cmn.cpp12
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ucmndata.cpp18
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ucnv.cpp455
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ucnv2022.cpp160
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ucnv_bld.cpp224
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ucnv_cb.cpp16
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ucnv_cnv.cpp26
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ucnv_ct.cpp36
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ucnv_err.cpp102
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ucnv_ext.cpp54
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ucnv_io.cpp72
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ucnv_lmb.cpp72
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ucnv_set.cpp8
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ucnv_u16.cpp166
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ucnv_u32.cpp124
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ucnv_u7.cpp164
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ucnv_u8.cpp76
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ucnvbocu.cpp72
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ucnvdisp.cpp10
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ucnvhz.cpp46
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ucnvisci.cpp58
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ucnvlat1.cpp72
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ucnvmbcs.cpp308
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ucnvscsu.cpp150
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ucnvsel.cpp114
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ucol_data.h4
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ucol_swp.cpp14
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ucurr.cpp394
-rw-r--r--Build/source/libs/icu/icu-src/source/common/udata.cpp214
-rw-r--r--Build/source/libs/icu/icu-src/source/common/udatamem.cpp20
-rw-r--r--Build/source/libs/icu/icu-src/source/common/udataswp.cpp52
-rw-r--r--Build/source/libs/icu/icu-src/source/common/uenum.cpp56
-rw-r--r--Build/source/libs/icu/icu-src/source/common/uhash.cpp122
-rw-r--r--Build/source/libs/icu/icu-src/source/common/uidna.cpp136
-rw-r--r--Build/source/libs/icu/icu-src/source/common/uinvchar.cpp38
-rw-r--r--Build/source/libs/icu/icu-src/source/common/uiter.cpp86
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ulist.cpp70
-rw-r--r--Build/source/libs/icu/icu-src/source/common/uloc.cpp292
-rw-r--r--Build/source/libs/icu/icu-src/source/common/uloc_keytype.cpp114
-rw-r--r--Build/source/libs/icu/icu-src/source/common/uloc_tag.cpp350
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ulocale.cpp99
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ulocbuilder.cpp156
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ulocimp.h75
-rw-r--r--Build/source/libs/icu/icu-src/source/common/umapfile.cpp4
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unames.cpp62
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unicode/appendable.h4
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unicode/brkiter.h5
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unicode/bytestrie.h16
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unicode/caniter.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unicode/casemap.h66
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unicode/char16ptr.h4
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unicode/chariter.h8
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unicode/docmain.h6
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unicode/edits.h14
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unicode/icuplug.h8
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unicode/localematcher.h12
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unicode/localpointer.h102
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unicode/locid.h36
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unicode/messagepattern.h10
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unicode/normalizer2.h70
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unicode/normlzr.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unicode/parsepos.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unicode/platform.h35
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unicode/rbbi.h154
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unicode/rep.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unicode/resbund.h12
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unicode/simpleformatter.h10
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unicode/strenum.h30
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unicode/stringtriebuilder.h20
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unicode/symtable.h8
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unicode/uchar.h68
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unicode/ucharstrie.h18
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unicode/uclean.h6
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unicode/uconfig.h10
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unicode/udata.h4
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unicode/ulocale.h229
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unicode/ulocbuilder.h441
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unicode/umachine.h36
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unicode/uniset.h45
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unicode/unistr.h97
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unicode/unorm2.h26
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unicode/uobject.h26
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unicode/urename.h76
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unicode/ures.h9
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unicode/uset.h58
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unicode/usetiter.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unicode/ustring.h6
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unicode/utext.h16
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unicode/uvernum.h12
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unifiedcache.cpp44
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unifiedcache.h36
-rw-r--r--Build/source/libs/icu/icu-src/source/common/uniquecharstr.h42
-rw-r--r--Build/source/libs/icu/icu-src/source/common/uniset.cpp84
-rw-r--r--Build/source/libs/icu/icu-src/source/common/uniset_closure.cpp274
-rw-r--r--Build/source/libs/icu/icu-src/source/common/uniset_props.cpp37
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unisetspan.cpp64
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unisetspan.h8
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unistr.cpp310
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unistr_case.cpp24
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unistr_case_locale.cpp4
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unistr_cnv.cpp10
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unistr_props.cpp2
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unistrappender.h6
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unorm.cpp44
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unormcmp.cpp42
-rw-r--r--Build/source/libs/icu/icu-src/source/common/unormimp.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/common/uobject.cpp18
-rw-r--r--Build/source/libs/icu/icu-src/source/common/uposixdefs.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/common/uprops.cpp92
-rw-r--r--Build/source/libs/icu/icu-src/source/common/uprops.h3
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ures_cnv.cpp18
-rw-r--r--Build/source/libs/icu/icu-src/source/common/uresbund.cpp808
-rw-r--r--Build/source/libs/icu/icu-src/source/common/uresdata.cpp140
-rw-r--r--Build/source/libs/icu/icu-src/source/common/uresdata.h6
-rw-r--r--Build/source/libs/icu/icu-src/source/common/uresimp.h6
-rw-r--r--Build/source/libs/icu/icu-src/source/common/usc_impl.cpp40
-rw-r--r--Build/source/libs/icu/icu-src/source/common/uscript.cpp19
-rw-r--r--Build/source/libs/icu/icu-src/source/common/uscript_props.cpp4
-rw-r--r--Build/source/libs/icu/icu-src/source/common/uset.cpp44
-rw-r--r--Build/source/libs/icu/icu-src/source/common/uset_imp.h11
-rw-r--r--Build/source/libs/icu/icu-src/source/common/uset_props.cpp34
-rw-r--r--Build/source/libs/icu/icu-src/source/common/usetiter.cpp22
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ushape.cpp168
-rw-r--r--Build/source/libs/icu/icu-src/source/common/usprep.cpp130
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ustack.cpp4
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ustr_cnv.cpp78
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ustr_titlecase_brkiter.cpp58
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ustr_wcs.cpp80
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ustrcase.cpp219
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ustrcase_locale.cpp18
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ustrenum.cpp76
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ustrenum.h4
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ustrfmt.cpp14
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ustring.cpp398
-rw-r--r--Build/source/libs/icu/icu-src/source/common/ustrtrns.cpp268
-rw-r--r--Build/source/libs/icu/icu-src/source/common/utext.cpp281
-rw-r--r--Build/source/libs/icu/icu-src/source/common/utf_impl.cpp2
-rw-r--r--Build/source/libs/icu/icu-src/source/common/util.cpp30
-rw-r--r--Build/source/libs/icu/icu-src/source/common/util.h4
-rw-r--r--Build/source/libs/icu/icu-src/source/common/util_props.cpp6
-rw-r--r--Build/source/libs/icu/icu-src/source/common/utrace.cpp70
-rw-r--r--Build/source/libs/icu/icu-src/source/common/utrie.cpp80
-rw-r--r--Build/source/libs/icu/icu-src/source/common/utrie2.cpp58
-rw-r--r--Build/source/libs/icu/icu-src/source/common/utrie2.h14
-rw-r--r--Build/source/libs/icu/icu-src/source/common/utrie2_builder.cpp96
-rw-r--r--Build/source/libs/icu/icu-src/source/common/utrie_swap.cpp6
-rw-r--r--Build/source/libs/icu/icu-src/source/common/uts46.cpp133
-rw-r--r--Build/source/libs/icu/icu-src/source/common/uvector.cpp2
-rw-r--r--Build/source/libs/icu/icu-src/source/common/uvector.h22
-rw-r--r--Build/source/libs/icu/icu-src/source/common/uvectr32.cpp10
-rw-r--r--Build/source/libs/icu/icu-src/source/common/uvectr32.h26
-rw-r--r--Build/source/libs/icu/icu-src/source/common/uvectr64.cpp10
-rw-r--r--Build/source/libs/icu/icu-src/source/common/uvectr64.h20
-rw-r--r--Build/source/libs/icu/icu-src/source/common/wintz.cpp8
-rw-r--r--Build/source/libs/icu/icu-src/source/config/mh-darwin-ppc85
-rwxr-xr-xBuild/source/libs/icu/icu-src/source/configure21
-rw-r--r--Build/source/libs/icu/icu-src/source/configure.ac2
-rw-r--r--Build/source/libs/icu/icu-src/source/data/BUILDRULES.py46
-rw-r--r--Build/source/libs/icu/icu-src/source/data/cldr-icu-readme.txt367
-rw-r--r--Build/source/libs/icu/icu-src/source/data/dtd/cldr/common/dtd/ldml.dtd72
-rw-r--r--Build/source/libs/icu/icu-src/source/data/icu4j-readme.txt10
-rw-r--r--Build/source/libs/icu/icu-src/source/data/in/coll/ucadata-implicithan-icu4x.icubin180428 -> 180608 bytes
-rw-r--r--Build/source/libs/icu/icu-src/source/data/in/coll/ucadata-implicithan.icubin191884 -> 192064 bytes
-rw-r--r--Build/source/libs/icu/icu-src/source/data/in/coll/ucadata-unihan-icu4x.icubin558728 -> 561188 bytes
-rw-r--r--Build/source/libs/icu/icu-src/source/data/in/coll/ucadata-unihan.icubin570184 -> 572644 bytes
-rw-r--r--Build/source/libs/icu/icu-src/source/data/in/icudt74l.dat (renamed from Build/source/libs/icu/icu-src/source/data/in/icudt72l.dat)bin21034768 -> 20552464 bytes
-rw-r--r--Build/source/libs/icu/icu-src/source/data/in/nfc.nrmbin35392 -> 35392 bytes
-rw-r--r--Build/source/libs/icu/icu-src/source/data/in/nfkc.nrmbin55112 -> 55112 bytes
-rw-r--r--Build/source/libs/icu/icu-src/source/data/in/nfkc_cf.nrmbin52432 -> 52432 bytes
-rw-r--r--Build/source/libs/icu/icu-src/source/data/in/nfkc_scf.nrmbin0 -> 51972 bytes
-rw-r--r--Build/source/libs/icu/icu-src/source/data/in/pnames.icubin44272 -> 44673 bytes
-rw-r--r--Build/source/libs/icu/icu-src/source/data/in/ubidi.icubin27616 -> 27584 bytes
-rw-r--r--Build/source/libs/icu/icu-src/source/data/in/ucase.icubin30482 -> 30476 bytes
-rw-r--r--Build/source/libs/icu/icu-src/source/data/in/uemoji.icubin13024 -> 13300 bytes
-rw-r--r--Build/source/libs/icu/icu-src/source/data/in/ulayout.icubin13728 -> 13728 bytes
-rw-r--r--Build/source/libs/icu/icu-src/source/data/in/unames.icubin295992 -> 296088 bytes
-rw-r--r--Build/source/libs/icu/icu-src/source/data/in/uprops.icubin141028 -> 141604 bytes
-rw-r--r--Build/source/libs/icu/icu-src/source/data/in/uts46.nrmbin59756 -> 59820 bytes
-rw-r--r--Build/source/libs/icu/icu-src/source/data/makedata.mak11
-rw-r--r--Build/source/libs/icu/icu-src/source/data/unidata/CaseFolding.txt9
-rw-r--r--Build/source/libs/icu/icu-src/source/data/unidata/DerivedCoreProperties.txt277
-rw-r--r--Build/source/libs/icu/icu-src/source/data/unidata/DerivedNormalizationProps.txt6079
-rw-r--r--Build/source/libs/icu/icu-src/source/data/unidata/FractionalUCA.txt1740
-rw-r--r--Build/source/libs/icu/icu-src/source/data/unidata/NormalizationCorrections.txt6
-rw-r--r--Build/source/libs/icu/icu-src/source/data/unidata/NormalizationTest.txt6
-rw-r--r--Build/source/libs/icu/icu-src/source/data/unidata/SpecialCasing.txt6
-rw-r--r--Build/source/libs/icu/icu-src/source/data/unidata/UCARules.txt46
-rw-r--r--Build/source/libs/icu/icu-src/source/data/unidata/UnicodeData.txt7
-rw-r--r--Build/source/libs/icu/icu-src/source/data/unidata/changes.txt576
-rw-r--r--Build/source/libs/icu/icu-src/source/data/unidata/confusables.txt10
-rw-r--r--Build/source/libs/icu/icu-src/source/data/unidata/emoji-sequences.txt17
-rw-r--r--Build/source/libs/icu/icu-src/source/data/unidata/emoji-zwj-sequences.txt146
-rwxr-xr-xBuild/source/libs/icu/icu-src/source/data/unidata/generate.sh1
-rw-r--r--Build/source/libs/icu/icu-src/source/data/unidata/norm2/BUILD.bazel2
-rw-r--r--Build/source/libs/icu/icu-src/source/data/unidata/norm2/nfc.txt2
-rw-r--r--Build/source/libs/icu/icu-src/source/data/unidata/norm2/nfkc.txt2
-rw-r--r--Build/source/libs/icu/icu-src/source/data/unidata/norm2/nfkc_cf.txt2
-rw-r--r--Build/source/libs/icu/icu-src/source/data/unidata/norm2/nfkc_scf.txt6071
-rw-r--r--Build/source/libs/icu/icu-src/source/data/unidata/norm2/uts46.txt23
-rw-r--r--Build/source/libs/icu/icu-src/source/data/unidata/ppucd.txt14695
-rw-r--r--Build/source/libs/icu/icu-src/source/extra/scrptrun/scrptrun.cpp4
-rw-r--r--Build/source/libs/icu/icu-src/source/extra/scrptrun/scrptrun.h16
-rw-r--r--Build/source/libs/icu/icu-src/source/extra/scrptrun/srtest.cpp2
-rw-r--r--Build/source/libs/icu/icu-src/source/extra/uconv/uconv.cpp60
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/alphaindex.cpp194
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/anytrans.cpp42
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/anytrans.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/astro.cpp24
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/basictz.cpp26
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/bocsu.cpp2
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/brktrans.cpp8
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/buddhcal.cpp7
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/buddhcal.h19
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/calendar.cpp615
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/casetrn.cpp2
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/cecal.cpp33
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/cecal.h41
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/chnsecal.cpp198
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/chnsecal.h94
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/choicfmt.cpp50
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/coleitr.cpp42
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/coll.cpp104
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/collationbuilder.cpp131
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/collationdata.h24
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/collationdatabuilder.cpp66
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/collationdatareader.cpp82
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/collationdatareader.h4
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/collationdatawriter.cpp34
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/collationfastlatin.cpp50
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/collationfastlatin.h8
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/collationfastlatinbuilder.cpp34
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/collationiterator.cpp34
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/collationiterator.h6
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/collationkeys.cpp6
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/collationkeys.h4
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/collationroot.cpp32
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/collationruleparser.cpp85
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/collationruleparser.h4
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/collationsets.cpp114
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/collationsets.h16
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/collationsettings.cpp16
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/collationsettings.h10
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/collationtailoring.cpp20
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/collationtailoring.h4
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/collationweights.cpp2
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/coptccal.cpp18
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/coptccal.h18
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/cpdtrans.cpp52
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/cpdtrans.h12
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/csdetect.cpp64
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/csmatch.cpp10
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/csmatch.h8
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/csrucode.cpp6
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/curramt.cpp6
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/currfmt.cpp2
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/currpinf.cpp18
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/currunit.cpp2
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/dangical.cpp23
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/dangical.h18
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/datefmt.cpp71
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/dayperiodrules.cpp32
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/dcfmtsym.cpp124
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/decContext.cpp8
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/decNumber.cpp316
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/decNumber.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/decimfmt.cpp32
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/double-conversion-double-to-string.cpp9
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/double-conversion-double-to-string.h31
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/double-conversion-string-to-double.h4
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/dt_impl.h114
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/dtfmtsym.cpp392
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/dtitv_impl.h112
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/dtitvfmt.cpp44
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/dtitvinf.cpp34
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/dtptngen.cpp106
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/dtptngen_impl.h140
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/dtrule.cpp14
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/erarules.cpp8
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/esctrn.cpp34
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/ethpccal.cpp178
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/ethpccal.h173
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/fmtable.cpp76
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/formattedval_impl.h23
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/formattedvalue.cpp2
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/fphdlimp.cpp8
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/fphdlimp.h22
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/fpositer.cpp14
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/funcrepl.cpp6
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/gender.cpp57
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/gregocal.cpp55
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/gregoimp.cpp27
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/hebrwcal.cpp89
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/hebrwcal.h75
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/i18n.vcxproj3
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/i18n.vcxproj.filters9
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/i18n_uwp.vcxproj3
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/indiancal.cpp25
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/indiancal.h30
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/inputext.cpp4
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/islamcal.cpp601
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/islamcal.h478
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/iso8601cal.cpp43
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/iso8601cal.h102
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/japancal.cpp8
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/japancal.h8
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/listformatter.cpp11
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/measfmt.cpp70
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/measunit.cpp84
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/measunit_extra.cpp28
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/measure.cpp4
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/msgfmt.cpp331
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/msgfmt_impl.h4
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/name2uni.cpp22
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/nfrlist.h18
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/nfrs.cpp38
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/nfrs.h4
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/nfrule.cpp158
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/nfrule.h4
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/nfsubs.cpp152
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/nfsubs.h6
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/nortrans.cpp4
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/number_asformat.h14
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/number_capi.cpp183
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/number_compact.cpp18
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/number_compact.h14
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/number_decimalquantity.cpp4
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/number_decimalquantity.h12
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/number_fluent.cpp12
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/number_formatimpl.cpp82
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/number_formatimpl.h32
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/number_grouping.cpp2
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/number_longnames.cpp28
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/number_longnames.h10
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/number_mapper.h40
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/number_microprops.h22
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/number_modifiers.cpp11
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/number_modifiers.h132
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/number_multiplier.cpp4
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/number_multiplier.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/number_patternmodifier.cpp33
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/number_patternmodifier.h27
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/number_patternstring.cpp2
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/number_patternstring.h26
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/number_rounding.cpp2
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/number_scientific.h18
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/number_simple.cpp255
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/number_skeletons.cpp14
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/number_symbolswrapper.cpp4
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/number_usageprefs.cpp8
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/number_usageprefs.h4
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/number_utypes.h3
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/numfmt.cpp204
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/numparse_affixes.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/numparse_currency.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/numparse_types.h6
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/numparse_utils.h4
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/numparse_validators.h26
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/numrange_capi.cpp5
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/numrange_fluent.cpp12
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/numrange_impl.cpp12
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/numsys.cpp2
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/numsys_impl.h4
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/olsontz.cpp134
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/olsontz.h22
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/persncal.cpp24
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/persncal.h28
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/pluralranges.cpp4
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/plurfmt.cpp68
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/plurrule.cpp67
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/plurrule_impl.h138
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/quant.cpp12
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/quantityformatter.cpp26
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/quantityformatter.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/rbnf.cpp446
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/rbt.cpp8
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/rbt.h4
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/rbt_data.cpp8
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/rbt_data.h10
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/rbt_pars.cpp238
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/rbt_pars.h18
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/rbt_rule.cpp68
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/rbt_rule.h4
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/rbt_set.cpp22
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/rbt_set.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/rbtz.cpp102
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/regexcmp.cpp94
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/regeximp.cpp22
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/regeximp.h14
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/regexst.cpp2
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/regextxt.cpp8
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/region.cpp138
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/region_impl.h4
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/reldatefmt.cpp58
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/reldtfmt.cpp92
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/reldtfmt.h12
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/rematch.cpp220
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/remtrans.cpp4
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/repattrn.cpp130
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/rulebasedcollator.cpp174
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/scientificnumberformatter.cpp22
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/scriptset.cpp4
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/search.cpp30
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/selfmt.cpp6
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/selfmtimpl.h110
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/simpletz.cpp60
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/smpdtfmt.cpp515
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/smpdtfst.cpp34
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/sortkey.cpp14
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/sources.txt2
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/standardplural.cpp16
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/strmatch.cpp16
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/strrepl.cpp24
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/stsearch.cpp55
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/taiwncal.h4
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/timezone.cpp262
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/titletrn.cpp4
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/tmunit.cpp4
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/tmutamt.cpp2
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/tmutfmt.cpp177
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/translit.cpp112
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/transreg.cpp149
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/transreg.h19
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/tridpars.cpp158
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/tzfmt.cpp307
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/tzgnames.cpp234
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/tznames.cpp66
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/tznames_impl.cpp566
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/tznames_impl.h24
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/tzrule.cpp30
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/tztrans.cpp36
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/ucal.cpp99
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/ucln_in.cpp4
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/ucol.cpp104
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/ucol_res.cpp142
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/ucol_sit.cpp72
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/ucoleitr.cpp40
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/ucsdet.cpp16
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/udat.cpp199
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/udateintervalformat.cpp26
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/udatpg.cpp88
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/ufieldpositer.cpp4
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/uitercollationiterator.cpp10
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/uitercollationiterator.h4
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/ulistformatter.cpp26
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/ulocdata.cpp98
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/umsg.cpp118
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/umsg_imp.h28
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unesctrn.cpp30
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unesctrn.h4
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/uni2name.cpp8
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/alphaindex.h6
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/basictz.h8
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/calendar.h117
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/choicfmt.h12
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/coleitr.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/coll.h18
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/compactdecimalformat.h16
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/curramt.h10
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/currunit.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/datefmt.h6
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/dcfmtsym.h15
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/decimfmt.h70
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/displayoptions.h48
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/dtfmtsym.h12
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/dtitvfmt.h20
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/dtitvinf.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/dtptngen.h6
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/fieldpos.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/fmtable.h10
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/formattednumber.h211
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/gregocal.h29
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/listformatter.h14
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/measfmt.h4
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/measunit.h52
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/measure.h12
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/msgfmt.h26
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/numberformatter.h220
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/numberrangeformatter.h31
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/numfmt.h41
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/numsys.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/plurfmt.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/plurrule.h12
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/rbnf.h12
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/rbtz.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/regex.h36
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/region.h10
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/reldatefmt.h31
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/search.h12
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/simplenumberformatter.h329
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/simpletz.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/smpdtfmt.h47
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/sortkey.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/stsearch.h16
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/tblcoll.h18
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/timezone.h57
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/translit.h12
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/tzfmt.h18
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/tznames.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/ucal.h67
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/ucol.h44
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/udatpg.h6
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/udisplayoptions.h120
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/uformattednumber.h224
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/unum.h64
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/unumberformatter.h282
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/unumberoptions.h173
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/ureldatefmt.h4
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/usimplenumberformatter.h305
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/uspoof.h311
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unicode/vtzone.h6
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/units_complexconverter.cpp4
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/units_converter.cpp16
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/units_converter.h10
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/units_data.cpp109
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/units_data.h1
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unum.cpp212
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/unumsys.cpp4
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/upluralrules.cpp30
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/uregex.cpp236
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/uregexc.cpp6
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/usearch.cpp46
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/uspoof.cpp310
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/uspoof_build.cpp22
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/uspoof_conf.cpp56
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/uspoof_conf.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/uspoof_impl.cpp84
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/uspoof_impl.h12
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/utf16collationiterator.cpp44
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/utf16collationiterator.h34
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/utf8collationiterator.cpp4
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/utf8collationiterator.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/utmscale.cpp12
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/utrans.cpp114
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/vtzone.cpp120
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/vzone.cpp20
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/windtfmt.cpp46
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/windtfmt.h4
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/winnmfmt.cpp32
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/winnmfmt.h4
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/wintzimpl.cpp12
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/zonemeta.cpp322
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/zonemeta.h35
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/zrule.cpp8
-rw-r--r--Build/source/libs/icu/icu-src/source/io/locbund.cpp26
-rw-r--r--Build/source/libs/icu/icu-src/source/io/sprintf.cpp34
-rw-r--r--Build/source/libs/icu/icu-src/source/io/sscanf.cpp28
-rw-r--r--Build/source/libs/icu/icu-src/source/io/ucln_io.cpp4
-rw-r--r--Build/source/libs/icu/icu-src/source/io/ufile.cpp30
-rw-r--r--Build/source/libs/icu/icu-src/source/io/ufmt_cmn.cpp28
-rw-r--r--Build/source/libs/icu/icu-src/source/io/uprintf.cpp30
-rw-r--r--Build/source/libs/icu/icu-src/source/io/uprntf_p.cpp122
-rw-r--r--Build/source/libs/icu/icu-src/source/io/uscanf.cpp10
-rw-r--r--Build/source/libs/icu/icu-src/source/io/uscanf_p.cpp104
-rw-r--r--Build/source/libs/icu/icu-src/source/io/ustdio.cpp100
-rw-r--r--Build/source/libs/icu/icu-src/source/io/ustream.cpp12
-rw-r--r--Build/source/libs/icu/icu-src/source/layoutex/ParagraphLayout.cpp124
-rw-r--r--Build/source/libs/icu/icu-src/source/layoutex/RunArrays.cpp20
-rw-r--r--Build/source/libs/icu/icu-src/source/layoutex/layout/ParagraphLayout.h16
-rw-r--r--Build/source/libs/icu/icu-src/source/layoutex/layout/RunArrays.h16
-rw-r--r--Build/source/libs/icu/icu-src/source/layoutex/playout.cpp54
-rw-r--r--Build/source/libs/icu/icu-src/source/layoutex/plruns.cpp52
-rw-r--r--Build/source/libs/icu/icu-src/source/python/icutools/databuilder/__main__.py5
-rw-r--r--Build/source/libs/icu/icu-src/source/python/icutools/databuilder/filtration.py4
-rwxr-xr-xBuild/source/libs/icu/icu-src/source/runConfigureICU2
-rw-r--r--Build/source/libs/icu/icu-src/source/samples/break/break.cpp4
-rw-r--r--Build/source/libs/icu/icu-src/source/samples/case/case.cpp10
-rw-r--r--Build/source/libs/icu/icu-src/source/samples/citer/citer.cpp14
-rw-r--r--Build/source/libs/icu/icu-src/source/samples/coll/coll.cpp8
-rw-r--r--Build/source/libs/icu/icu-src/source/samples/datecal/cal.cpp2
-rw-r--r--Build/source/libs/icu/icu-src/source/samples/datefmt/util.cpp2
-rw-r--r--Build/source/libs/icu/icu-src/source/samples/dtitvfmtsample/dtitvfmtsample.cpp4
-rw-r--r--Build/source/libs/icu/icu-src/source/samples/dtptngsample/dtptngsample.cpp4
-rw-r--r--Build/source/libs/icu/icu-src/source/samples/layout/FontMap.cpp24
-rw-r--r--Build/source/libs/icu/icu-src/source/samples/layout/FontTableCache.cpp10
-rw-r--r--Build/source/libs/icu/icu-src/source/samples/layout/GDIFontInstance.cpp50
-rw-r--r--Build/source/libs/icu/icu-src/source/samples/layout/GDIFontMap.cpp2
-rw-r--r--Build/source/libs/icu/icu-src/source/samples/layout/GDIGUISupport.cpp2
-rw-r--r--Build/source/libs/icu/icu-src/source/samples/layout/GnomeFontInstance.cpp16
-rw-r--r--Build/source/libs/icu/icu-src/source/samples/layout/GnomeFontMap.cpp2
-rw-r--r--Build/source/libs/icu/icu-src/source/samples/layout/GnomeGUISupport.cpp2
-rw-r--r--Build/source/libs/icu/icu-src/source/samples/layout/ScriptCompositeFontInstance.cpp10
-rw-r--r--Build/source/libs/icu/icu-src/source/samples/layout/ScriptCompositeFontInstance.h4
-rw-r--r--Build/source/libs/icu/icu-src/source/samples/layout/UnicodeReader.cpp10
-rw-r--r--Build/source/libs/icu/icu-src/source/samples/layout/UnicodeReader.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/samples/layout/cmaps.cpp6
-rw-r--r--Build/source/libs/icu/icu-src/source/samples/layout/gnomelayout.cpp44
-rw-r--r--Build/source/libs/icu/icu-src/source/samples/layout/layout.cpp46
-rw-r--r--Build/source/libs/icu/icu-src/source/samples/layout/paragraph.cpp30
-rw-r--r--Build/source/libs/icu/icu-src/source/samples/layout/ucreader.cpp2
-rw-r--r--Build/source/libs/icu/icu-src/source/samples/layout/ucreader.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/samples/legacy/legacy.cpp12
-rw-r--r--Build/source/libs/icu/icu-src/source/samples/legacy/newcol.cpp16
-rw-r--r--Build/source/libs/icu/icu-src/source/samples/legacy/oldcol.cpp20
-rw-r--r--Build/source/libs/icu/icu-src/source/samples/msgfmt/util.cpp2
-rw-r--r--Build/source/libs/icu/icu-src/source/samples/numfmt/main.cpp12
-rw-r--r--Build/source/libs/icu/icu-src/source/samples/numfmt/util.cpp18
-rw-r--r--Build/source/libs/icu/icu-src/source/samples/strsrch/strsrch.cpp10
-rw-r--r--Build/source/libs/icu/icu-src/source/samples/translit/answers/unaccent.cpp8
-rw-r--r--Build/source/libs/icu/icu-src/source/samples/translit/answers/unaccent.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/samples/translit/unaccent.cpp8
-rw-r--r--Build/source/libs/icu/icu-src/source/samples/translit/unaccent.h6
-rw-r--r--Build/source/libs/icu/icu-src/source/samples/translit/util.cpp2
-rw-r--r--Build/source/libs/icu/icu-src/source/samples/ucnv/convsamp.cpp108
-rw-r--r--Build/source/libs/icu/icu-src/source/samples/ugrep/ugrep.cpp16
-rw-r--r--Build/source/libs/icu/icu-src/source/samples/ustring/ustring.cpp58
-rw-r--r--Build/source/libs/icu/icu-src/source/stubdata/stubdata.cpp22
-rw-r--r--Build/source/libs/icu/icu-src/source/stubdata/stubdata.h7
-rw-r--r--Build/source/libs/icu/icu-src/source/test/cintltst/Makefile.in5
-rw-r--r--Build/source/libs/icu/icu-src/source/test/cintltst/capitst.c12
-rw-r--r--Build/source/libs/icu/icu-src/source/test/cintltst/cbiditst.c6
-rw-r--r--Build/source/libs/icu/icu-src/source/test/cintltst/ccaltst.c121
-rw-r--r--Build/source/libs/icu/icu-src/source/test/cintltst/ccaltst.h4
-rw-r--r--Build/source/libs/icu/icu-src/source/test/cintltst/ccolltst.c8
-rw-r--r--Build/source/libs/icu/icu-src/source/test/cintltst/ccurrtst.c3
-rw-r--r--Build/source/libs/icu/icu-src/source/test/cintltst/cdateintervalformattest.c8
-rw-r--r--Build/source/libs/icu/icu-src/source/test/cintltst/cdattst.c101
-rw-r--r--Build/source/libs/icu/icu-src/source/test/cintltst/cdtrgtst.c43
-rw-r--r--Build/source/libs/icu/icu-src/source/test/cintltst/cintltst.c5
-rw-r--r--Build/source/libs/icu/icu-src/source/test/cintltst/cintltst.vcxproj2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/cintltst/cintltst.vcxproj.filters6
-rw-r--r--Build/source/libs/icu/icu-src/source/test/cintltst/cldrtest.c16
-rw-r--r--Build/source/libs/icu/icu-src/source/test/cintltst/cloctst.c89
-rw-r--r--Build/source/libs/icu/icu-src/source/test/cintltst/cnormtst.c16
-rw-r--r--Build/source/libs/icu/icu-src/source/test/cintltst/cnumtst.c134
-rw-r--r--Build/source/libs/icu/icu-src/source/test/cintltst/crestst.c14
-rw-r--r--Build/source/libs/icu/icu-src/source/test/cintltst/creststn.c221
-rw-r--r--Build/source/libs/icu/icu-src/source/test/cintltst/cucdapi.c7
-rw-r--r--Build/source/libs/icu/icu-src/source/test/cintltst/cucdtst.c10
-rw-r--r--Build/source/libs/icu/icu-src/source/test/cintltst/cutiltst.c4
-rw-r--r--Build/source/libs/icu/icu-src/source/test/cintltst/nccbtst.c18
-rw-r--r--Build/source/libs/icu/icu-src/source/test/cintltst/ncnvfbts.c10
-rw-r--r--Build/source/libs/icu/icu-src/source/test/cintltst/ncnvtst.c10
-rw-r--r--Build/source/libs/icu/icu-src/source/test/cintltst/nucnvtst.c10
-rw-r--r--Build/source/libs/icu/icu-src/source/test/cintltst/putiltst.c2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/cintltst/spooftest.c77
-rw-r--r--Build/source/libs/icu/icu-src/source/test/cintltst/sprpdata.c4
-rw-r--r--Build/source/libs/icu/icu-src/source/test/cintltst/tracetst.c18
-rw-r--r--Build/source/libs/icu/icu-src/source/test/cintltst/ucptrietest.c4
-rw-r--r--Build/source/libs/icu/icu-src/source/test/cintltst/udatatst.c6
-rw-r--r--Build/source/libs/icu/icu-src/source/test/cintltst/ulocaletst.c285
-rw-r--r--Build/source/libs/icu/icu-src/source/test/cintltst/ulocbuildertst.c1796
-rw-r--r--Build/source/libs/icu/icu-src/source/test/cintltst/unumberformattertst.c63
-rw-r--r--Build/source/libs/icu/icu-src/source/test/cintltst/usrchtst.c2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/cintltst/utransts.c10
-rw-r--r--Build/source/libs/icu/icu-src/source/test/depstest/dependencies.txt37
-rw-r--r--Build/source/libs/icu/icu-src/source/test/fuzzer/Makefile.in2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/fuzzer/calendar_fuzzer.cpp132
-rw-r--r--Build/source/libs/icu/icu-src/source/test/fuzzer/collator_compare_fuzzer.cpp29
-rw-r--r--Build/source/libs/icu/icu-src/source/test/fuzzer/collator_compare_fuzzer_seed_corpus.txtbin0 -> 10526 bytes
-rw-r--r--Build/source/libs/icu/icu-src/source/test/fuzzer/date_format_fuzzer.cpp87
-rw-r--r--Build/source/libs/icu/icu-src/source/test/fuzzer/list_format_fuzzer.cpp69
-rw-r--r--Build/source/libs/icu/icu-src/source/test/fuzzer/locale_morph_fuzzer.cpp109
-rw-r--r--Build/source/libs/icu/icu-src/source/test/fuzzer/locale_morph_fuzzer_seed_corpus.txt30
-rw-r--r--Build/source/libs/icu/icu-src/source/test/fuzzer/locale_util.h1
-rw-r--r--Build/source/libs/icu/icu-src/source/test/fuzzer/relative_date_time_formatter_fuzzer.cpp99
-rw-r--r--Build/source/libs/icu/icu-src/source/test/fuzzer/uregex_open_fuzzer.cpp4
-rwxr-xr-xBuild/source/libs/icu/icu-src/source/test/hdrtst/testtagsguards.sh2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/Makefile.in7
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/aliastst.cpp18
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/aliastst.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/allcoll.cpp4
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/allcoll.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/alphaindextst.cpp78
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/alphaindextst.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/apicoll.cpp150
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/apicoll.h6
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/astrotst.cpp26
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/astrotst.h14
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/bidiconf.cpp38
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/bytestrietest.cpp10
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/calcasts.cpp4
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/callimts.cpp8
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/callimts.h4
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/calregts.cpp93
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/calregts.h117
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/caltest.cpp2396
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/caltest.h160
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/caltztst.h4
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/canittst.cpp20
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/canittst.h6
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/citrtest.cpp58
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/citrtest.h10
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/collationtest.cpp145
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/colldata.cpp46
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/colldata.h6
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/compactdecimalformattest.cpp12
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/convtest.cpp162
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/convtest.h10
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/cpdtrtst.cpp14
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/cpdtrtst.h14
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/csdetest.cpp70
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/csdetest.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/currcoll.cpp7
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/currcoll.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/dadrcal.cpp22
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/dadrcal.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/dadrfmt.cpp20
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/dadrfmt.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/datadrivennumberformattestsuite.cpp18
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/datadrivennumberformattestsuite.h4
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/dcfmapts.cpp6
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/dcfmapts.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/dcfmtest.cpp16
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/dcfmtest.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/decoll.cpp10
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/decoll.h6
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/dtfmapts.cpp22
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/dtfmapts.h8
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/dtfmrgts.cpp128
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/dtfmrgts.h72
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/dtfmtrtts.cpp12
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/dtfmtrtts.h6
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/dtfmttst.cpp500
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/dtfmttst.h119
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/dtifmtts.cpp136
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/dtifmtts.h4
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/dtptngts.cpp63
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/dtptngts.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/encoll.cpp214
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/encoll.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/erarulestest.cpp4
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/erarulestest.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/escoll.cpp4
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/escoll.h6
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/ficoll.cpp4
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/ficoll.h6
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/fldset.cpp8
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/fldset.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/frcoll.cpp10
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/frcoll.h10
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/g7coll.cpp12
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/g7coll.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/genderinfotest.cpp2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/icusvtst.cpp202
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/icusvtst.h16
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/idnaconf.cpp60
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/idnaconf.h6
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/idnaref.cpp158
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/incaltst.cpp43
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/incaltst.h64
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/intltest.cpp231
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/intltest.h34
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/intltest.vcxproj2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/intltest.vcxproj.filters6
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/itercoll.cpp70
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/itercoll.h4
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/itformat.cpp2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/itformat.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/itmajor.h4
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/itrbbi.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/itrbnf.cpp113
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/itrbnfp.cpp14
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/itrbnfrt.cpp12
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/itspoof.cpp95
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/itspoof.h14
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/ittrans.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/itutil.cpp82
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/itutil.h4
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/jacoll.cpp24
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/jacoll.h16
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/jamotest.cpp52
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/jamotest.h8
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/lcukocol.cpp4
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/lcukocol.h6
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/listformattertest.cpp2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/localebuildertest.cpp2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/localebuildertest.h64
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/localematchertest.cpp4
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/locnmtst.cpp62
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/locnmtst.h34
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/loctest.cpp411
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/loctest.h97
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/lstmbetst.cpp14
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/lstmbetst.h4
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/measfmttest.cpp834
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/miscdtfm.cpp8
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/miscdtfm.h6
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/mnkytst.cpp14
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/mnkytst.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/msfmrgts.cpp34
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/msfmrgts.h46
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/nmfmapts.cpp28
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/nmfmapts.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/nmfmtrt.cpp10
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/nmfmtrt.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/normconf.cpp24
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/normconf.h4
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/nptrans.cpp30
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/nptrans.h12
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/numberformattesttuple.cpp13
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/numbertest.h19
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/numbertest_affixutils.cpp2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/numbertest_api.cpp102
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/numbertest_permutation.cpp6
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/numbertest_simple.cpp230
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/numbertest_skeletons.cpp50
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/numfmtdatadriventest.cpp10
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/numfmtspectest.cpp6
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/numfmtst.cpp408
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/numfmtst.h90
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/numrgts.cpp264
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/numrgts.h132
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/pluralmaptest.cpp12
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/plurfmts.cpp30
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/plurfmts.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/plurults.cpp42
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/plurults.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/pptest.cpp2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/pptest.h8
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/rbbiapts.cpp87
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/rbbiapts.h14
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/rbbimonkeytest.cpp48
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/rbbimonkeytest.h6
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/rbbitst.cpp626
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/rbbitst.h4
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/regcoll.cpp190
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/regcoll.h9
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/regextst.cpp350
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/regextst.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/regiontst.cpp104
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/regiontst.h24
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/reldatefmttest.cpp36
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/reptest.cpp36
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/reptest.h4
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/restest.cpp192
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/restest.h15
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/restsnew.cpp30
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/restsnew.h24
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/scientificnumberformattertest.cpp8
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/sdtfmtts.cpp4
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/sdtfmtts.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/selfmts.cpp12
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/selfmts.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/sfwdchit.cpp20
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/sfwdchit.h12
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/simpleformattertest.cpp44
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/simplethread.cpp10
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/srchtest.cpp280
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/srchtest.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/ssearch.cpp130
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/ssearch.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/static_unisets_test.cpp6
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/strcase.cpp101
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/strtest.cpp36
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/strtest.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/svccoll.cpp68
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/svccoll.h6
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/tchcfmt.cpp18
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/tchcfmt.h12
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/testidn.cpp34
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/testidna.cpp164
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/testidna.h22
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/testutil.cpp4
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/testutil.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/tfsmalls.cpp14
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/tfsmalls.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/thcoll.cpp22
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/thcoll.h12
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/tmsgfmt.cpp96
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/tmsgfmt.h36
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/tokiter.cpp4
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/transapi.cpp52
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/transapi.h36
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/transrt.cpp50
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/transrt.h32
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/transtst.cpp326
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/transtst.h176
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/trcoll.cpp4
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/trcoll.h6
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/trnserr.cpp14
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/trnserr.h14
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/tscoll.cpp10
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/tscoll.h6
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/tsdate.cpp2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/tsdate.h6
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/tsdcfmsy.cpp6
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/tsdcfmsy.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/tsdtfmsy.h12
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/tsmthred.cpp84
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/tsmthred.h10
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/tsnmfmt.cpp4
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/tsnmfmt.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/tsputil.cpp22
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/tsputil.h26
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/tstnorm.cpp37
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/tstnorm.h39
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/tstnrapi.cpp14
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/tufmtts.cpp58
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/tzbdtest.cpp2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/tzbdtest.h6
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/tzfmttst.cpp81
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/tzfmttst.h20
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/tzoffloc.cpp2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/tzoffloc.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/tzregts.cpp6
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/tzregts.h40
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/tzrulets.cpp156
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/tzrulets.h36
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/tztest.cpp186
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/tztest.h49
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/ucaconf.cpp20
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/ucaconf.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/ucdtest.cpp176
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/ucdtest.h7
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/uchar_type_build_test.cpp7
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/ucharstrietest.cpp16
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/unifiedcachetest.cpp52
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/units_data_test.cpp2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/units_router_test.cpp2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/units_test.cpp28
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/uobjtest.cpp61
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/uobjtest.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/usettest.cpp366
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/usettest.h40
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/ustrtest.cpp250
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/ustrtest.h26
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/uts46test.cpp32
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/utxttest.cpp535
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/utxttest.h3
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/uvectest.cpp16
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/uvectest.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/v32test.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/windttst.cpp24
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/winnmtst.cpp36
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/winutil.cpp6
-rw-r--r--Build/source/libs/icu/icu-src/source/test/iotest/Makefile.in4
-rw-r--r--Build/source/libs/icu/icu-src/source/test/iotest/iotest.cpp82
-rw-r--r--Build/source/libs/icu/icu-src/source/test/iotest/stream.cpp16
-rw-r--r--Build/source/libs/icu/icu-src/source/test/letest/FontObject.cpp26
-rw-r--r--Build/source/libs/icu/icu-src/source/test/letest/FontTableCache.cpp8
-rw-r--r--Build/source/libs/icu/icu-src/source/test/letest/PortableFontInstance.cpp60
-rw-r--r--Build/source/libs/icu/icu-src/source/test/letest/SimpleFontInstance.cpp2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/letest/cmaps.cpp6
-rw-r--r--Build/source/libs/icu/icu-src/source/test/letest/gendata.cpp40
-rw-r--r--Build/source/libs/icu/icu-src/source/test/letest/letest.cpp94
-rw-r--r--Build/source/libs/icu/icu-src/source/test/letest/letsutil.cpp18
-rw-r--r--Build/source/libs/icu/icu-src/source/test/letest/xmlreader.cpp16
-rw-r--r--Build/source/libs/icu/icu-src/source/test/perf/DateFmtPerf/DateFmtPerf.cpp6
-rw-r--r--Build/source/libs/icu/icu-src/source/test/perf/DateFmtPerf/DateFmtPerf.h10
-rw-r--r--Build/source/libs/icu/icu-src/source/test/perf/charperf/charperf.cpp4
-rw-r--r--Build/source/libs/icu/icu-src/source/test/perf/charperf/charperf.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/perf/collationperf/collperf.cpp76
-rw-r--r--Build/source/libs/icu/icu-src/source/test/perf/collperf/collperf.cpp104
-rw-r--r--Build/source/libs/icu/icu-src/source/test/perf/collperf2/collperf2.cpp158
-rw-r--r--Build/source/libs/icu/icu-src/source/test/perf/convperf/convperf.cpp134
-rw-r--r--Build/source/libs/icu/icu-src/source/test/perf/convperf/convperf.h84
-rw-r--r--Build/source/libs/icu/icu-src/source/test/perf/dicttrieperf/dicttrieperf.cpp24
-rw-r--r--Build/source/libs/icu/icu-src/source/test/perf/howExpensiveIs/howExpensiveIs.cpp114
-rw-r--r--Build/source/libs/icu/icu-src/source/test/perf/howExpensiveIs/sieve.cpp2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/perf/leperf/FontObject.cpp26
-rw-r--r--Build/source/libs/icu/icu-src/source/test/perf/leperf/FontTableCache.cpp8
-rw-r--r--Build/source/libs/icu/icu-src/source/test/perf/leperf/PortableFontInstance.cpp60
-rw-r--r--Build/source/libs/icu/icu-src/source/test/perf/leperf/SimpleFontInstance.cpp2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/perf/leperf/cmaps.cpp6
-rw-r--r--Build/source/libs/icu/icu-src/source/test/perf/leperf/leperf.cpp6
-rw-r--r--Build/source/libs/icu/icu-src/source/test/perf/leperf/letrperf.cpp12
-rw-r--r--Build/source/libs/icu/icu-src/source/test/perf/leperf/xmlreader.cpp16
-rw-r--r--Build/source/libs/icu/icu-src/source/test/perf/normperf/dtfmtrtperf.cpp4
-rw-r--r--Build/source/libs/icu/icu-src/source/test/perf/normperf/dtfmtrtperf.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/perf/normperf/normperf.cpp34
-rw-r--r--Build/source/libs/icu/icu-src/source/test/perf/normperf/normperf.h84
-rw-r--r--Build/source/libs/icu/icu-src/source/test/perf/normperf/simplenormperf.cpp22
-rw-r--r--Build/source/libs/icu/icu-src/source/test/perf/strsrchperf/strsrchperf.cpp20
-rw-r--r--Build/source/libs/icu/icu-src/source/test/perf/strsrchperf/strsrchperf.h18
-rw-r--r--Build/source/libs/icu/icu-src/source/test/perf/ubrkperf/ubrkperf.cpp12
-rw-r--r--Build/source/libs/icu/icu-src/source/test/perf/ubrkperf/ubrkperf.h14
-rw-r--r--Build/source/libs/icu/icu-src/source/test/perf/ubrkperf/ubrkperfold.cpp36
-rw-r--r--Build/source/libs/icu/icu-src/source/test/perf/ucnvavailperf/ucnvavailperf.cpp10
-rw-r--r--Build/source/libs/icu/icu-src/source/test/perf/unisetperf/draft/bitset.cpp4
-rw-r--r--Build/source/libs/icu/icu-src/source/test/perf/unisetperf/draft/trieset.cpp12
-rw-r--r--Build/source/libs/icu/icu-src/source/test/perf/unisetperf/draft/unicont.h10
-rw-r--r--Build/source/libs/icu/icu-src/source/test/perf/unisetperf/unisetperf.cpp44
-rw-r--r--Build/source/libs/icu/icu-src/source/test/perf/usetperf/usetperf.cpp10
-rw-r--r--Build/source/libs/icu/icu-src/source/test/perf/ustrperf/stringperf.cpp14
-rw-r--r--Build/source/libs/icu/icu-src/source/test/perf/ustrperf/stringperf.h104
-rw-r--r--Build/source/libs/icu/icu-src/source/test/perf/utfperf/utfperf.cpp38
-rw-r--r--Build/source/libs/icu/icu-src/source/test/perf/utrie2perf/utrie2perf.cpp26
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/BUILDRULES.py2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/BidiTest.txt6
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/CollationTest_NON_IGNORABLE_SHORT.txt179
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/CollationTest_SHIFTED_SHORT.txt145
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/GraphemeBreakTest.txt881
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/IdnaTestV2.txt6046
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/LineBreakTest.txt3344
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/Makefile.in3
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/SentenceBreakTest.txt18
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/WordBreakTest.txt11
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/break_rules/README.md2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/break_rules/line.txt30
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/break_rules/line_cj.txt30
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/break_rules/line_loose.txt30
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/break_rules/line_loose_cj.txt30
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/break_rules/line_normal.txt30
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/break_rules/line_normal_cj.txt30
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/break_rules/word.txt2
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/localeIdentifiers/_readme.txt11
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/localeIdentifiers/likelySubtags.txt1700
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/localeIdentifiers/localeCanonicalization.txt (renamed from Build/source/libs/icu/icu-src/source/test/testdata/localeCanonicalization.txt)145
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/localeIdentifiers/localeDisplayName.txt335
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/_header.txt6
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/_readme.txt6
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/af.txt818
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/am.txt551
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ar.txt790
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/as.txt818
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/az.txt704
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/be.txt762
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/bg.txt766
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/bn.txt584
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/bs.txt779
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ca.txt786
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/catalog.txt122
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/chr.txt781
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/cs.txt783
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/cy.txt818
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/da.txt757
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/de.txt771
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/de_CH.txt772
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/dsb.txt773
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/el.txt684
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/en.txt818
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/en_AU.txt818
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/en_CA.txt818
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/en_GB.txt818
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/en_IN.txt818
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/es.txt824
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/es_419.txt830
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/es_MX.txt831
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/es_US.txt801
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/et.txt749
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/eu.txt758
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/fa.txt734
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/fi.txt780
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/fil.txt818
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/fr.txt830
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/fr_CA.txt831
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ga.txt815
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/gd.txt818
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/gl.txt824
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/gu.txt820
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ha.txt762
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ha_NE.txt762
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/he.txt780
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/hi.txt806
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/hi_Latn.txt818
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/hr.txt770
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/hsb.txt773
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/hu.txt816
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/hy.txt730
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/id.txt766
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ig.txt794
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/is.txt806
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/it.txt812
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ja.txt619
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/jv.txt812
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ka.txt633
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/kk.txt698
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/km.txt811
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/kn.txt818
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ko.txt611
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/kok.txt555
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ky.txt664
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/lo.txt716
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/lt.txt746
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/lv.txt782
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/mk.txt787
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ml.txt818
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/mn.txt762
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/mr.txt800
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ms.txt724
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/my.txt823
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ne.txt818
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/nl.txt819
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/nn.txt790
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/no.txt790
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/or.txt812
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/pa.txt830
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/pl.txt762
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ps.txt566
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/pt.txt814
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/pt_PT.txt814
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/qu.txt820
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ro.txt818
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ru.txt803
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/sc.txt820
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/sd.txt551
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/si.txt812
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/sk.txt782
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/sl.txt818
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/so.txt812
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/sq.txt655
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/sr.txt818
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/sr_Cyrl_BA.txt818
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/sr_Latn.txt818
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/sr_Latn_BA.txt818
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/sv.txt806
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/sw.txt806
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/sw_KE.txt806
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ta.txt823
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/te.txt794
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/tg.txt546
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/th.txt660
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ti.txt761
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/tk.txt775
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/tr.txt752
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/uk.txt806
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ur.txt818
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/uz.txt818
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/vi.txt774
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/wo.txt551
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/yo.txt809
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/yo_BJ.txt809
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/yue.txt697
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/yue_Hans.txt631
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/zh.txt730
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/zh_Hant.txt727
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/zh_Hant_HK.txt712
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/zu.txt635
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/units/unitPreferencesTest.txt654
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/cldr/units/unitsTest.txt69
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/conversion.txt58
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/dcfmtest.txt8
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/numberformattestspecification.txt189
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/rbbitst.txt103
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/root.txt40
-rw-r--r--Build/source/libs/icu/icu-src/source/test/testdata/structLocale.txt135
-rw-r--r--Build/source/libs/icu/icu-src/source/test/thaitest/thaitest.cpp64
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/ctestfw/ctest.c12
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/ctestfw/datamap.cpp26
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/ctestfw/testdata.cpp46
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/ctestfw/tstdtmod.cpp50
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/ctestfw/unicode/testdata.h10
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/ctestfw/unicode/tstdtmod.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/ctestfw/unicode/uperf.h14
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/ctestfw/unicode/utimer.h10
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/ctestfw/uperf.cpp78
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/escapesrc/escapesrc.cpp6
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/escapesrc/tblgen.cpp6
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/genbrk/genbrk.cpp34
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/genccode/genccode.c1
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/gencfu/gencfu.cpp30
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/gencolusb/extract_unsafe_backwards.cpp6
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/gencolusb/verify_uset.cpp2
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/gendict/gendict.cpp32
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/gennorm2/extradata.cpp16
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/gennorm2/extradata.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/gennorm2/gennorm2.cpp12
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/gennorm2/n2builder.cpp38
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/gennorm2/norms.cpp4
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/gennorm2/norms.h4
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/genrb/derb.cpp114
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/genrb/genrb.cpp68
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/genrb/parse.cpp496
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/genrb/prscmnts.cpp40
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/genrb/rbutil.c10
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/genrb/reslist.cpp196
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/genrb/reslist.h42
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/genrb/wrtjava.cpp44
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/genrb/wrtxml.cpp182
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/gentest/gentest.c12
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/icuexportdata/icuexportdata.cpp298
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/icuinfo/icuinfo.cpp18
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/icupkg/icupkg.cpp32
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/icuswap/icuswap.cpp32
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/makeconv/genmbcs.cpp8
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/makeconv/makeconv.cpp48
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/pkgdata/pkgdata.cpp250
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/pkgdata/pkgtypes.h6
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/toolutil/dbgutil.cpp26
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/toolutil/filestrm.cpp14
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/toolutil/filetools.cpp14
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/toolutil/flagparser.cpp16
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/toolutil/package.cpp78
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/toolutil/pkg_genc.cpp109
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/toolutil/pkg_genc.h1
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/toolutil/pkg_gencmn.cpp60
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/toolutil/pkg_icu.cpp22
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/toolutil/pkgitems.cpp30
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/toolutil/ppucd.cpp64
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/toolutil/ppucd.h4
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/toolutil/swapimpl.cpp22
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/toolutil/toolutil.cpp20
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/toolutil/toolutil.h2
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/toolutil/ucbuf.cpp166
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/toolutil/ucln_tu.cpp4
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/toolutil/ucm.cpp38
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/toolutil/ucmstate.cpp16
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/toolutil/udbgutil.cpp89
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/toolutil/unewdata.cpp54
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/toolutil/uoptions.cpp12
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/toolutil/uparse.cpp28
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/toolutil/writesrc.cpp79
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/toolutil/xmlparser.cpp92
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/toolutil/xmlparser.h10
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/tzcode/icuregions1
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/tzcode/icuzdump.cpp36
-rw-r--r--Build/source/libs/icu/icu-src/source/tools/tzcode/tz2icu.cpp4
1343 files changed, 166820 insertions, 43774 deletions
diff --git a/Build/source/libs/icu/ChangeLog b/Build/source/libs/icu/ChangeLog
index faa6ef6ebeb..5556842b149 100644
--- a/Build/source/libs/icu/ChangeLog
+++ b/Build/source/libs/icu/ChangeLog
@@ -1,3 +1,8 @@
+2023-12-22 Karl Berry <karl@freefriends.org>
+
+ * Import 74.2.
+ (version.ac): update.
+
2023-01-07 Karl Berry <karl@freefriends.org>
* Import 72.1.
diff --git a/Build/source/libs/icu/TLpatches/ChangeLog b/Build/source/libs/icu/TLpatches/ChangeLog
index 9de282acba6..b39dd4b4263 100644
--- a/Build/source/libs/icu/TLpatches/ChangeLog
+++ b/Build/source/libs/icu/TLpatches/ChangeLog
@@ -1,3 +1,7 @@
+2023-12-22 Karl Berry <karl@freefriends.org>
+
+ * Update for icu-74.2. No changes to patches.
+
2023-01-07 Karl Berry <karl@freefriends.org>
* Update for icu-72.1. No changes to patches.
diff --git a/Build/source/libs/icu/TLpatches/TL-Changes b/Build/source/libs/icu/TLpatches/TL-Changes
index a56c2da779f..5ef34ab620b 100644
--- a/Build/source/libs/icu/TLpatches/TL-Changes
+++ b/Build/source/libs/icu/TLpatches/TL-Changes
@@ -1,6 +1,5 @@
Changes applied to the icu tree as obtained from:
- github.com/unicode-org/icu/releases/download/release-72-1/icu4c-72_1-src.tgz
- and icu4c-72_1-data.zip
+ github.com/unicode-org/icu/releases/download/release-74-2/icu4c-74_2-src.tgz
cd $Build/source/libs/icu # for whatever $Build directory
# update version.ac
@@ -41,7 +40,7 @@ cp -p $aux/config.guess $aux/config.sub $aux/install-sh source
# Assuming all seems ok, reduce size of source/data/in/icudt*.dat
# to decrease data segment size, e.g., for old BSD. First, check
# that we successfully built the full .dat:
-ver=72
+ver=74
srcdat=$Build/source/libs/icu/icu-src/source/data/in/icudt${ver}l.dat
cd $Work/libs/icu/icu-build/data/out/build/icudt${ver}l
indat=../../tmp/icudt${ver}l.dat
@@ -55,13 +54,20 @@ icupkg="env LD_LIBRARY_PATH=$gnu/lib ../../../../bin/icupkg"
# then remove some elements unused by the icu clients in our tree, which are
# bibtexu (in texk/bibtex-x), upmendex, and xetex (in texk/web2c/xetexdir).
outdat=icudt${ver}l.dat
-$icupkg -r 'curr/*' $indat $outdat && \mv $outdat $indat
-$icupkg -r 'lang/*' $indat $outdat && \mv $outdat $indat
-$icupkg -r 'region/*' $indat $outdat && \mv $outdat $indat
-$icupkg -r 'rfc*.spp' $indat $outdat && \mv $outdat $indat
-$icupkg -r 'zone/*' $indat $outdat && \mv $outdat $indat
+$icupkg -r 'curr/*' $indat $outdat && \mv -v $outdat $indat
+$icupkg -r 'lang/*' $indat $outdat && \mv -v $outdat $indat
+$icupkg -r 'region/*' $indat $outdat && \mv -v $outdat $indat
+$icupkg -r 'rfc*.spp' $indat $outdat && \mv -v $outdat $indat
+$icupkg -r 'zone/*' $indat $outdat && \mv -v $outdat $indat
ls -l $indat $srcdat # indat should be about 2/3 the size
cp $indat $srcdat
+# check that nothing besides backup files is left, back in the srcdir:
+cd $Build/source/libs/icu # for whatever $Build directory
+svn status | grep -v '^[MAD]' | sort -k 2b
+
+# In 74.2, LICENSE became a (broken) symlink; revert to file.
+
+# if all is ok.
# update icu/ChangeLog and icu/TLpatches/ChangeLog.
# then commit.
diff --git a/Build/source/libs/icu/TLpatches/patch-01-configure-gcc b/Build/source/libs/icu/TLpatches/patch-01-configure-gcc
index cd969d6f3cd..58d184cad68 100644
--- a/Build/source/libs/icu/TLpatches/patch-01-configure-gcc
+++ b/Build/source/libs/icu/TLpatches/patch-01-configure-gcc
@@ -1,8 +1,8 @@
For TL, we do not want to prefer clang(++) for ICU
when the whole rest of the tree prefers gcc.
---- source/configure~ 2022-10-18 17:53:21.000000000 -0700
-+++ source/configure 2023-01-07 15:09:32.437894684 -0800
+--- source/configure~ 2023-12-11 14:27:41.000000000 -0800
++++ source/configure 2023-12-22 09:03:59.452738354 -0800
@@ -2925,5 +2925,5 @@
ac_compiler_gnu=$ac_cv_c_compiler_gnu
if test -n "$ac_tool_prefix"; then
diff --git a/Build/source/libs/icu/TLpatches/patch-12-mingw b/Build/source/libs/icu/TLpatches/patch-12-mingw
index 107337c8060..be27e6393a1 100644
--- a/Build/source/libs/icu/TLpatches/patch-12-mingw
+++ b/Build/source/libs/icu/TLpatches/patch-12-mingw
@@ -1,7 +1,7 @@
We don't want this for TeX Live cross compilation.
---- source/config/mh-mingw~ 2022-10-18 17:53:21.000000000 -0700
-+++ source/config/mh-mingw 2023-01-07 15:09:46.768812704 -0800
+--- source/config/mh-mingw~ 2023-12-11 14:27:41.000000000 -0800
++++ source/config/mh-mingw 2023-12-22 09:04:46.480466115 -0800
@@ -76,25 +76,7 @@
STATIC_O = ao
diff --git a/Build/source/libs/icu/TLpatches/patch-13-STATIC_PREFIX b/Build/source/libs/icu/TLpatches/patch-13-STATIC_PREFIX
index 33d4535bc3c..6ab924174a3 100644
--- a/Build/source/libs/icu/TLpatches/patch-13-STATIC_PREFIX
+++ b/Build/source/libs/icu/TLpatches/patch-13-STATIC_PREFIX
@@ -1,7 +1,7 @@
No `s' for STATIC_PREFIX.
---- source/config/Makefile.inc.in~ 2022-10-18 17:53:21.000000000 -0700
-+++ source/config/Makefile.inc.in 2023-01-07 15:09:50.833789452 -0800
+--- source/config/Makefile.inc.in~ 2023-12-11 14:27:41.000000000 -0800
++++ source/config/Makefile.inc.in 2023-12-22 09:05:20.588268662 -0800
@@ -47,5 +47,5 @@
# Static library prefix and file extension
@@ -9,8 +9,8 @@
+STATIC_PREFIX =
LIBSICU = lib$(STATIC_PREFIX)$(ICUPREFIX)
A = a
---- source/icudefs.mk.in~ 2022-10-18 17:53:21.000000000 -0700
-+++ source/icudefs.mk.in 2023-01-07 15:09:50.856789320 -0800
+--- source/icudefs.mk.in~ 2023-12-11 14:27:41.000000000 -0800
++++ source/icudefs.mk.in 2023-12-22 09:05:20.588268662 -0800
@@ -214,5 +214,5 @@
## If we can't use the shared libraries, use the static libraries
ifneq ($(ENABLE_SHARED),YES)
diff --git a/Build/source/libs/icu/TLpatches/patch-19-netbsd b/Build/source/libs/icu/TLpatches/patch-19-netbsd
index 987ec13af07..446584cd321 100644
--- a/Build/source/libs/icu/TLpatches/patch-19-netbsd
+++ b/Build/source/libs/icu/TLpatches/patch-19-netbsd
@@ -2,8 +2,8 @@
From: Marc Baudoin <babafou@babafou.eu.org>
tlbuild
---- source/common/uposixdefs.h~ 2022-10-18 17:53:21.000000000 -0700
-+++ source/common/uposixdefs.h 2023-01-07 15:09:54.231770013 -0800
+--- source/common/uposixdefs.h~ 2023-12-11 14:27:41.000000000 -0800
++++ source/common/uposixdefs.h 2023-12-22 09:06:04.056017024 -0800
@@ -75,3 +75,7 @@
#endif
diff --git a/Build/source/libs/icu/icu-src/APIChangeReport.html b/Build/source/libs/icu/icu-src/APIChangeReport.html
index 49a8b98c56c..58a33293e82 100644
--- a/Build/source/libs/icu/icu-src/APIChangeReport.html
+++ b/Build/source/libs/icu/icu-src/APIChangeReport.html
@@ -5,31 +5,31 @@
-->
<head>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>ICU4C API Comparison: ICU 71 with ICU 72</title>
+<title>ICU4C API Comparison: ICU 73 with ICU 74</title>
<link type="text/css" href="icu4c.css" rel="stylesheet">
</head>
<body>
<a name="#_top"></a>
-<h1>ICU4C API Comparison: ICU 71 with ICU 72</h1>
+<h1>ICU4C API Comparison: ICU 73 with ICU 74</h1>
<div id="toc">
<ul>
<li>
-<a href="#removed">Removed from ICU 71</a>
+<a href="#removed">Removed from ICU 73</a>
</li>
<li>
-<a href="#deprecated">Deprecated or Obsoleted in ICU 72</a>
+<a href="#deprecated">Deprecated or Obsoleted in ICU 74</a>
</li>
<li>
-<a href="#changed">Changed in ICU 72</a>
+<a href="#changed">Changed in ICU 74</a>
</li>
<li>
-<a href="#promoted">Promoted to stable in ICU 72</a>
+<a href="#promoted">Promoted to stable in ICU 74</a>
</li>
<li>
-<a href="#added">Added in ICU 72</a>
+<a href="#added">Added in ICU 74</a>
</li>
<li>
-<a href="#other">Other existing drafts in ICU 72</a>
+<a href="#other">Other existing drafts in ICU 74</a>
</li>
<li>
<a href="#simplifications">Signature Simplifications</a>
@@ -38,674 +38,959 @@
<hr>
</div>
<a name="removed"></a>
-<h2>Removed from ICU 71</h2>
+<h2>Removed from ICU 73</h2>
<table BORDER="1" class="genTable">
<THEAD>
<tr>
-<th>File</th><th>API</th><th>ICU 71</th><th>ICU 72</th>
+<th>File</th><th>API</th><th>ICU 73</th><th>ICU 74</th>
+</tr>
+</THEAD>
+</table>
+<P></P>
+<a href="#_top">(jump back to top)</a>
+<hr>
+<a name="deprecated"></a>
+<h2>Deprecated or Obsoleted in ICU 74</h2>
+<table BORDER="1" class="genTable">
+<THEAD>
+<tr>
+<th>File</th><th>API</th><th>ICU 73</th><th>ICU 74</th>
+</tr>
+</THEAD>
+</table>
+<P></P>
+<a href="#_top">(jump back to top)</a>
+<hr>
+<a name="changed"></a>
+<h2>Changed in ICU 74 (old, new)</h2>
+<table BORDER="1" class="genTable">
+<THEAD>
+<tr>
+<th>File</th><th>API</th><th>ICU 73</th><th>ICU 74</th>
</tr>
</THEAD>
<tr class="row1">
-<td class="file">calendar.h</td><td class="proto">bool icu::Calendar::isSet(EDateFields) const</td><td class="">Deprecated<br>ICU 2.6</td><td>(missing)<br>
-<span class=""><span></span></span></td>
+<td class="file">displayoptions.h</td><td class="proto">Builder icu::DisplayOptions::copyToBuilder() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">calendar.h</td><td class="proto">int32_t icu::Calendar::get(EDateFields, UErrorCode&amp;) const</td><td class="">Deprecated<br>ICU 2.6</td><td>(missing)<br>
-<span class=""><span></span></span></td>
+<td class="file">displayoptions.h</td><td class="proto">Builder&amp; icu::DisplayOptions::Builder::setCapitalization(UDisplayOptionsCapitalization)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">calendar.h</td><td class="proto">int32_t icu::Calendar::getActualMaximum(EDateFields, UErrorCode&amp;) const</td><td class="">Deprecated<br>ICU 2.6</td><td>(missing)<br>
-<span class=""><span></span></span></td>
+<td class="file">displayoptions.h</td><td class="proto">Builder&amp; icu::DisplayOptions::Builder::setDisplayLength(UDisplayOptionsDisplayLength)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">calendar.h</td><td class="proto">void icu::Calendar::clear(EDateFields)</td><td class="">Deprecated<br>ICU 2.6</td><td>(missing)<br>
-<span class=""><span></span></span></td>
+<td class="file">displayoptions.h</td><td class="proto">Builder&amp; icu::DisplayOptions::Builder::setGrammaticalCase(UDisplayOptionsGrammaticalCase)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">calendar.h</td><td class="proto">void icu::Calendar::set(EDateFields, int32_t)</td><td class="">Deprecated<br>ICU 2.6</td><td>(missing)<br>
-<span class=""><span></span></span></td>
+<td class="file">displayoptions.h</td><td class="proto">Builder&amp; icu::DisplayOptions::Builder::setNameStyle(UDisplayOptionsNameStyle)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">calendar.h</td><td class="proto">void icu::Calendar::setFirstDayOfWeek(EDaysOfWeek)</td><td class="">Deprecated<br>ICU 2.6</td><td>(missing)<br>
-<span class=""><span></span></span></td>
+<td class="file">displayoptions.h</td><td class="proto">Builder&amp; icu::DisplayOptions::Builder::setNounClass(UDisplayOptionsNounClass)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">dtptngen.h</td><td class="proto"><tt>static</tt> DateTimePatternGenerator* icu::DateTimePatternGenerator::internalMakeInstance(const Locale&amp;, UErrorCode&amp;)</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
+<td class="file">displayoptions.h</td><td class="proto">Builder&amp; icu::DisplayOptions::Builder::setPluralCategory(UDisplayOptionsPluralCategory)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">gregocal.h</td><td class="proto">int32_t icu::GregorianCalendar::getActualMaximum(EDateFields) const</td><td class="">Deprecated<br>ICU 2.6</td><td>(missing)<br>
-<span class=""><span></span></span></td>
+<td class="file">displayoptions.h</td><td class="proto">Builder&amp; icu::DisplayOptions::Builder::setSubstituteHandling(UDisplayOptionsSubstituteHandling)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">NounClass icu::number::FormattedNumber::getNounClass(UErrorCode&amp;) const</td><td class="">Draft<br>ICU 71</td><td>(missing)<br>
-<span class=""><span></span></span></td>
+<td class="file">displayoptions.h</td><td class="proto">DisplayOptions icu::DisplayOptions::Builder::build()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">const char* icu::number::FormattedNumber::getGender(UErrorCode&amp;) const</td><td class="">Deprecated</td><td>(missing)<br>
-<span class=""><span></span></span></td>
+<td class="file">displayoptions.h</td><td class="proto">DisplayOptions&amp; icu::DisplayOptions::operator=(DisplayOptions&amp;&amp;)=default</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">plurrule.h</td><td class="proto">int32_t icu::PluralRules::getSamples(const UnicodeString&amp;, FixedDecimal*, int32_t, UErrorCode&amp;)</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
+<td class="file">displayoptions.h</td><td class="proto">DisplayOptions&amp; icu::DisplayOptions::operator=(const DisplayOptions&amp;)=default</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">plurrule.h</td><td class="proto"><tt>static</tt> bool icu::PluralRules::hasOverride(const Locale&amp;)</td><td class="">Internal</td><td>(missing)<br>
-<span class=""><span></span></span></td>
+<td class="file">displayoptions.h</td><td class="proto">UDisplayOptionsCapitalization icu::DisplayOptions::getCapitalization() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">tzrule.h</td><td class="proto">bool icu::InitialTimeZoneRule::getStartInYear(int32_t, int32_t, int32_t, UDate&amp;) const</td><td class="stabchange">Stable<br>ICU 3.8</td><td>(missing)<br>
-<span class=""><span></span></span></td>
+<td class="file">displayoptions.h</td><td class="proto">UDisplayOptionsDisplayLength icu::DisplayOptions::getDisplayLength() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
-</table>
-<P></P>
-<a href="#_top">(jump back to top)</a>
-<hr>
-<a name="deprecated"></a>
-<h2>Deprecated or Obsoleted in ICU 72</h2>
-<table BORDER="1" class="genTable">
-<THEAD>
-<tr>
-<th>File</th><th>API</th><th>ICU 71</th><th>ICU 72</th>
+<tr class="row0">
+<td class="file">displayoptions.h</td><td class="proto">UDisplayOptionsGrammaticalCase icu::DisplayOptions::getGrammaticalCase() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
-</THEAD>
-</table>
-<P></P>
-<a href="#_top">(jump back to top)</a>
-<hr>
-<a name="changed"></a>
-<h2>Changed in ICU 72 (old, new)</h2>
-<table BORDER="1" class="genTable">
-<THEAD>
-<tr>
-<th>File</th><th>API</th><th>ICU 71</th><th>ICU 72</th>
+<tr class="row1">
+<td class="file">displayoptions.h</td><td class="proto">UDisplayOptionsNameStyle icu::DisplayOptions::getNameStyle() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+</tr>
+<tr class="row0">
+<td class="file">displayoptions.h</td><td class="proto">UDisplayOptionsNounClass icu::DisplayOptions::getNounClass() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+</tr>
+<tr class="row1">
+<td class="file">displayoptions.h</td><td class="proto">UDisplayOptionsPluralCategory icu::DisplayOptions::getPluralCategory() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+</tr>
+<tr class="row0">
+<td class="file">displayoptions.h</td><td class="proto">UDisplayOptionsSubstituteHandling icu::DisplayOptions::getSubstituteHandling() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+</tr>
+<tr class="row1">
+<td class="file">displayoptions.h</td><td class="proto">icu::DisplayOptions::DisplayOptions(const DisplayOptions&amp;)=default</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+</tr>
+<tr class="row0">
+<td class="file">displayoptions.h</td><td class="proto"><tt>static</tt> Builder icu::DisplayOptions::builder()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+</tr>
+<tr class="row1">
+<td class="file">formattednumber.h</td><td class="proto">UDisplayOptionsNounClass icu::number::FormattedNumber::getNounClass(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+</tr>
+<tr class="row0">
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getQuarter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+</tr>
+<tr class="row1">
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getTonne()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+</tr>
+<tr class="row0">
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createQuarter(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+</tr>
+<tr class="row1">
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createTonne(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+</tr>
+<tr class="row0">
+<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::displayOptions(const DisplayOptions&amp;) const&amp;</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+</tr>
+<tr class="row1">
+<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::displayOptions(const DisplayOptions&amp;)&amp;&amp;</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+</tr>
+<tr class="row0">
+<td class="file">udisplayoptions.h</td><td class="proto">UDisplayOptionsGrammaticalCase udispopt_fromGrammaticalCaseIdentifier(const char*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+</tr>
+<tr class="row1">
+<td class="file">udisplayoptions.h</td><td class="proto">UDisplayOptionsNounClass udispopt_fromNounClassIdentifier(const char*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+</tr>
+<tr class="row0">
+<td class="file">udisplayoptions.h</td><td class="proto">UDisplayOptionsPluralCategory udispopt_fromPluralCategoryIdentifier(const char*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+</tr>
+<tr class="row1">
+<td class="file">udisplayoptions.h</td><td class="proto">const char* udispopt_getGrammaticalCaseIdentifier(UDisplayOptionsGrammaticalCase)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+</tr>
+<tr class="row0">
+<td class="file">udisplayoptions.h</td><td class="proto">const char* udispopt_getNounClassIdentifier(UDisplayOptionsNounClass)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+</tr>
+<tr class="row1">
+<td class="file">udisplayoptions.h</td><td class="proto">const char* udispopt_getPluralCategoryIdentifier(UDisplayOptionsPluralCategory)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+</tr>
+<tr class="row0">
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_BEGINNING_OF_SENTENCE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
-</THEAD>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getItem()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 70</td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_MIDDLE_OF_SENTENCE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getKilowattHourPer100Kilometer()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 70</td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_STANDALONE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createItem(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 70</td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_UI_LIST_OR_MENU</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createKilowattHourPer100Kilometer(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 70</td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_UNDEFINED</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::unitDisplayCase(StringPiece) const&amp;</td><td class="">Internal<br>ICU 69</td><td>Internal<br>
-<span class=""><span></span></span></td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsDisplayLength::UDISPOPT_DISPLAY_LENGTH_FULL</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::unitDisplayCase(StringPiece)&amp;&amp;</td><td class="">Internal<br>ICU 69</td><td>Internal<br>
-<span class=""><span></span></span></td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsDisplayLength::UDISPOPT_DISPLAY_LENGTH_SHORT</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">icu::number::FormattedNumberRange::FormattedNumberRange()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 70</td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsDisplayLength::UDISPOPT_DISPLAY_LENGTH_UNDEFINED</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">uchar.h</td><td class="proto">bool u_stringHasBinaryProperty(const UChar*, int32_t, UProperty)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 70</td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_ABLATIVE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_BASIC_EMOJI</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 70</td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_ACCUSATIVE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_EMOJI_KEYCAP_SEQUENCE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 70</td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_COMITATIVE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_RGI_EMOJI_FLAG_SEQUENCE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 70</td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_DATIVE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_RGI_EMOJI_MODIFIER_SEQUENCE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 70</td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_ERGATIVE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_RGI_EMOJI_TAG_SEQUENCE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 70</td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_GENITIVE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_RGI_EMOJI_ZWJ_SEQUENCE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 70</td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_INSTRUMENTAL</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_RGI_EMOJI</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 70</td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_LOCATIVE_COPULATIVE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatSymbolType::UDAT_NARROW_QUARTERS</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 70</td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_LOCATIVE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatSymbolType::UDAT_STANDALONE_NARROW_QUARTERS</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 70</td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_NOMINATIVE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">uformattedvalue.h</td><td class="proto"><tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_NUMBER_RANGE_SPAN</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 69</td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_OBLIQUE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">uniset.h</td><td class="proto">bool icu::UnicodeSet::hasStrings() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 70</td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_PREPOSITIONAL</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">uset.h</td><td class="proto">bool uset_hasStrings(const USet*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 70</td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_SOCIATIVE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">uset.h</td><td class="proto">int32_t uset_getRangeCount(const USet*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 70</td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_UNDEFINED</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">usetiter.h</td><td class="proto">UnicodeSetIterator &amp; icu::UnicodeSetIterator::skipToStrings()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 70</td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_VOCATIVE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+</tr>
+<tr class="row1">
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNameStyle::UDISPOPT_NAME_STYLE_DIALECT_NAMES</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+</tr>
+<tr class="row0">
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNameStyle::UDISPOPT_NAME_STYLE_STANDARD_NAMES</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+</tr>
+<tr class="row1">
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNameStyle::UDISPOPT_NAME_STYLE_UNDEFINED</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+</tr>
+<tr class="row0">
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_ANIMATE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+</tr>
+<tr class="row1">
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_COMMON</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+</tr>
+<tr class="row0">
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_FEMININE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+</tr>
+<tr class="row1">
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_INANIMATE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+</tr>
+<tr class="row0">
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_MASCULINE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+</tr>
+<tr class="row1">
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_NEUTER</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+</tr>
+<tr class="row0">
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_OTHER</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+</tr>
+<tr class="row1">
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_PERSONAL</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+</tr>
+<tr class="row0">
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_UNDEFINED</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+</tr>
+<tr class="row1">
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_FEW</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+</tr>
+<tr class="row0">
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_MANY</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+</tr>
+<tr class="row1">
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_ONE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+</tr>
+<tr class="row0">
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_OTHER</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+</tr>
+<tr class="row1">
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_TWO</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+</tr>
+<tr class="row0">
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_UNDEFINED</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+</tr>
+<tr class="row1">
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_ZERO</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+</tr>
+<tr class="row0">
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsSubstituteHandling::UDISPOPT_SUBSTITUTE_HANDLING_NO_SUBSTITUTE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+</tr>
+<tr class="row1">
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsSubstituteHandling::UDISPOPT_SUBSTITUTE_HANDLING_SUBSTITUTE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+</tr>
+<tr class="row0">
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsSubstituteHandling::UDISPOPT_SUBSTITUTE_HANDLING_UNDEFINED</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+</tr>
+<tr class="row1">
+<td class="file">unum.h</td><td class="proto">bool unum_hasAttribute(const UNumberFormat*, UNumberFormatAttribute)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
</table>
<P></P>
<a href="#_top">(jump back to top)</a>
<hr>
<a name="promoted"></a>
-<h2>Promoted to stable in ICU 72</h2>
+<h2>Promoted to stable in ICU 74</h2>
<table BORDER="1" class="genTable">
<THEAD>
<tr>
-<th>File</th><th>API</th><th>ICU 71</th><th>ICU 72</th>
+<th>File</th><th>API</th><th>ICU 73</th><th>ICU 74</th>
</tr>
</THEAD>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getItem()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 70</td>
+<td class="file">displayoptions.h</td><td class="proto">Builder icu::DisplayOptions::copyToBuilder() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getKilowattHourPer100Kilometer()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 70</td>
+<td class="file">displayoptions.h</td><td class="proto">Builder&amp; icu::DisplayOptions::Builder::setCapitalization(UDisplayOptionsCapitalization)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createItem(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 70</td>
+<td class="file">displayoptions.h</td><td class="proto">Builder&amp; icu::DisplayOptions::Builder::setDisplayLength(UDisplayOptionsDisplayLength)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createKilowattHourPer100Kilometer(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 70</td>
+<td class="file">displayoptions.h</td><td class="proto">Builder&amp; icu::DisplayOptions::Builder::setGrammaticalCase(UDisplayOptionsGrammaticalCase)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">icu::number::FormattedNumberRange::FormattedNumberRange()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 70</td>
+<td class="file">displayoptions.h</td><td class="proto">Builder&amp; icu::DisplayOptions::Builder::setNameStyle(UDisplayOptionsNameStyle)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">uchar.h</td><td class="proto">bool u_stringHasBinaryProperty(const UChar*, int32_t, UProperty)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 70</td>
+<td class="file">displayoptions.h</td><td class="proto">Builder&amp; icu::DisplayOptions::Builder::setNounClass(UDisplayOptionsNounClass)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_ARABIC_EXTENDED_C</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 72</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 72.">(Born Stable)</b></td>
+<td class="file">displayoptions.h</td><td class="proto">Builder&amp; icu::DisplayOptions::Builder::setPluralCategory(UDisplayOptionsPluralCategory)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_H</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 72</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 72.">(Born Stable)</b></td>
+<td class="file">displayoptions.h</td><td class="proto">Builder&amp; icu::DisplayOptions::Builder::setSubstituteHandling(UDisplayOptionsSubstituteHandling)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_CYRILLIC_EXTENDED_D</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 72</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 72.">(Born Stable)</b></td>
+<td class="file">displayoptions.h</td><td class="proto">DisplayOptions icu::DisplayOptions::Builder::build()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_DEVANAGARI_EXTENDED_A</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 72</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 72.">(Born Stable)</b></td>
+<td class="file">displayoptions.h</td><td class="proto">DisplayOptions&amp; icu::DisplayOptions::operator=(DisplayOptions&amp;&amp;)=default</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_KAKTOVIK_NUMERALS</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 72</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 72.">(Born Stable)</b></td>
+<td class="file">displayoptions.h</td><td class="proto">DisplayOptions&amp; icu::DisplayOptions::operator=(const DisplayOptions&amp;)=default</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_KAWI</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 72</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 72.">(Born Stable)</b></td>
+<td class="file">displayoptions.h</td><td class="proto">UDisplayOptionsCapitalization icu::DisplayOptions::getCapitalization() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_NAG_MUNDARI</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 72</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 72.">(Born Stable)</b></td>
+<td class="file">displayoptions.h</td><td class="proto">UDisplayOptionsDisplayLength icu::DisplayOptions::getDisplayLength() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_BASIC_EMOJI</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 70</td>
+<td class="file">displayoptions.h</td><td class="proto">UDisplayOptionsGrammaticalCase icu::DisplayOptions::getGrammaticalCase() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_EMOJI_KEYCAP_SEQUENCE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 70</td>
+<td class="file">displayoptions.h</td><td class="proto">UDisplayOptionsNameStyle icu::DisplayOptions::getNameStyle() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_RGI_EMOJI_FLAG_SEQUENCE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 70</td>
+<td class="file">displayoptions.h</td><td class="proto">UDisplayOptionsNounClass icu::DisplayOptions::getNounClass() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_RGI_EMOJI_MODIFIER_SEQUENCE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 70</td>
+<td class="file">displayoptions.h</td><td class="proto">UDisplayOptionsPluralCategory icu::DisplayOptions::getPluralCategory() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_RGI_EMOJI_TAG_SEQUENCE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 70</td>
+<td class="file">displayoptions.h</td><td class="proto">UDisplayOptionsSubstituteHandling icu::DisplayOptions::getSubstituteHandling() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_RGI_EMOJI_ZWJ_SEQUENCE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 70</td>
+<td class="file">displayoptions.h</td><td class="proto">icu::DisplayOptions::DisplayOptions(const DisplayOptions&amp;)=default</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_RGI_EMOJI</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 70</td>
+<td class="file">displayoptions.h</td><td class="proto"><tt>static</tt> Builder icu::DisplayOptions::builder()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatSymbolType::UDAT_NARROW_QUARTERS</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 70</td>
+<td class="file">formattednumber.h</td><td class="proto">UDisplayOptionsNounClass icu::number::FormattedNumber::getNounClass(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatSymbolType::UDAT_STANDALONE_NARROW_QUARTERS</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 70</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getQuarter()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">uformattedvalue.h</td><td class="proto"><tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_NUMBER_RANGE_SPAN</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 69</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getTonne()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">uniset.h</td><td class="proto">bool icu::UnicodeSet::hasStrings() const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 70</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createQuarter(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_KAWI</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 72</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 72.">(Born Stable)</b></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createTonne(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_NAG_MUNDARI</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 72</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 72.">(Born Stable)</b></td>
+<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::displayOptions(const DisplayOptions&amp;) const&amp;</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">uset.h</td><td class="proto">bool uset_hasStrings(const USet*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 70</td>
+<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::displayOptions(const DisplayOptions&amp;)&amp;&amp;</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">uset.h</td><td class="proto">int32_t uset_getRangeCount(const USet*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 70</td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 74</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 74.">(Born Stable)</b></td>
</tr>
<tr class="row1">
-<td class="file">usetiter.h</td><td class="proto">UnicodeSetIterator &amp; icu::UnicodeSetIterator::skipToStrings()</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 70</td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_AKSARA_PREBASE</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 74</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 74.">(Born Stable)</b></td>
</tr>
-</table>
-<P></P>
-<a href="#_top">(jump back to top)</a>
-<hr>
-<a name="added"></a>
-<h2>Added in ICU 72</h2>
-<table BORDER="1" class="genTable">
-<THEAD>
-<tr>
-<th>File</th><th>API</th><th>ICU 71</th><th>ICU 72</th>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_AKSARA_START</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 74</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 74.">(Born Stable)</b></td>
+</tr>
+<tr class="row1">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_AKSARA</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 74</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 74.">(Born Stable)</b></td>
+</tr>
+<tr class="row0">
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_VIRAMA_FINAL</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 74</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 74.">(Born Stable)</b></td>
</tr>
-</THEAD>
<tr class="row1">
-<td class="file">displayoptions.h</td><td class="proto">Builder icu::DisplayOptions::copyToBuilder() const</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_VIRAMA</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 74</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 74.">(Born Stable)</b></td>
</tr>
<tr class="row0">
-<td class="file">displayoptions.h</td><td class="proto">Builder&amp; icu::DisplayOptions::Builder::setCapitalization(UDisplayOptionsCapitalization)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">udisplayoptions.h</td><td class="proto">UDisplayOptionsGrammaticalCase udispopt_fromGrammaticalCaseIdentifier(const char*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">displayoptions.h</td><td class="proto">Builder&amp; icu::DisplayOptions::Builder::setDisplayLength(UDisplayOptionsDisplayLength)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">udisplayoptions.h</td><td class="proto">UDisplayOptionsNounClass udispopt_fromNounClassIdentifier(const char*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">displayoptions.h</td><td class="proto">Builder&amp; icu::DisplayOptions::Builder::setGrammaticalCase(UDisplayOptionsGrammaticalCase)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">udisplayoptions.h</td><td class="proto">UDisplayOptionsPluralCategory udispopt_fromPluralCategoryIdentifier(const char*)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">displayoptions.h</td><td class="proto">Builder&amp; icu::DisplayOptions::Builder::setNameStyle(UDisplayOptionsNameStyle)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">udisplayoptions.h</td><td class="proto">const char* udispopt_getGrammaticalCaseIdentifier(UDisplayOptionsGrammaticalCase)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">displayoptions.h</td><td class="proto">Builder&amp; icu::DisplayOptions::Builder::setNounClass(UDisplayOptionsNounClass)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">udisplayoptions.h</td><td class="proto">const char* udispopt_getNounClassIdentifier(UDisplayOptionsNounClass)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">displayoptions.h</td><td class="proto">Builder&amp; icu::DisplayOptions::Builder::setPluralCategory(UDisplayOptionsPluralCategory)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">udisplayoptions.h</td><td class="proto">const char* udispopt_getPluralCategoryIdentifier(UDisplayOptionsPluralCategory)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">displayoptions.h</td><td class="proto">Builder&amp; icu::DisplayOptions::Builder::setSubstituteHandling(UDisplayOptionsSubstituteHandling)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_BEGINNING_OF_SENTENCE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">displayoptions.h</td><td class="proto">DisplayOptions icu::DisplayOptions::Builder::build()</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_MIDDLE_OF_SENTENCE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">displayoptions.h</td><td class="proto">DisplayOptions&amp; icu::DisplayOptions::operator=(DisplayOptions&amp;&amp;) noexcept=default</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_STANDALONE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">displayoptions.h</td><td class="proto">DisplayOptions&amp; icu::DisplayOptions::operator=(const DisplayOptions&amp;)=default</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_UI_LIST_OR_MENU</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">displayoptions.h</td><td class="proto">UDisplayOptionsCapitalization icu::DisplayOptions::getCapitalization() const</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_UNDEFINED</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">displayoptions.h</td><td class="proto">UDisplayOptionsDisplayLength icu::DisplayOptions::getDisplayLength() const</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsDisplayLength::UDISPOPT_DISPLAY_LENGTH_FULL</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">displayoptions.h</td><td class="proto">UDisplayOptionsGrammaticalCase icu::DisplayOptions::getGrammaticalCase() const</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsDisplayLength::UDISPOPT_DISPLAY_LENGTH_SHORT</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">displayoptions.h</td><td class="proto">UDisplayOptionsNameStyle icu::DisplayOptions::getNameStyle() const</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsDisplayLength::UDISPOPT_DISPLAY_LENGTH_UNDEFINED</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">displayoptions.h</td><td class="proto">UDisplayOptionsNounClass icu::DisplayOptions::getNounClass() const</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_ABLATIVE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">displayoptions.h</td><td class="proto">UDisplayOptionsPluralCategory icu::DisplayOptions::getPluralCategory() const</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_ACCUSATIVE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">displayoptions.h</td><td class="proto">UDisplayOptionsSubstituteHandling icu::DisplayOptions::getSubstituteHandling() const</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_COMITATIVE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">displayoptions.h</td><td class="proto">icu::DisplayOptions::DisplayOptions(const DisplayOptions&amp;)=default</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_DATIVE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">displayoptions.h</td><td class="proto"><tt>static</tt> Builder icu::DisplayOptions::builder()</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_ERGATIVE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getQuarter()</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_GENITIVE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getTonne()</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_INSTRUMENTAL</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createQuarter(UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_LOCATIVE_COPULATIVE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createTonne(UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_LOCATIVE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::displayOptions(const DisplayOptions&amp;) const&amp;</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_NOMINATIVE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::displayOptions(const DisplayOptions&amp;)&amp;&amp;</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_OBLIQUE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">UDisplayOptionsNounClass icu::number::FormattedNumber::getNounClass(UErrorCode&amp;) const</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_PREPOSITIONAL</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">platform.h</td><td class="proto"><tt>#define</tt> U_HIDDEN</td><td class="">(missing)</td><td>Internal<br>
-<span class=""><span></span></span></td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_SOCIATIVE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">plurrule.h</td><td class="proto">int32_t icu::PluralRules::getSamples(const UnicodeString&amp;, DecimalQuantity*, int32_t, UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
-<span class=""><span></span></span></td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_UNDEFINED</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_ARABIC_EXTENDED_C</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 72</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 72.">(Born Stable)</b></td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_VOCATIVE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_H</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 72</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 72.">(Born Stable)</b></td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNameStyle::UDISPOPT_NAME_STYLE_DIALECT_NAMES</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_CYRILLIC_EXTENDED_D</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 72</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 72.">(Born Stable)</b></td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNameStyle::UDISPOPT_NAME_STYLE_STANDARD_NAMES</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_DEVANAGARI_EXTENDED_A</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 72</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 72.">(Born Stable)</b></td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNameStyle::UDISPOPT_NAME_STYLE_UNDEFINED</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_KAKTOVIK_NUMERALS</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 72</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 72.">(Born Stable)</b></td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_ANIMATE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_KAWI</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 72</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 72.">(Born Stable)</b></td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_COMMON</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_NAG_MUNDARI</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 72</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 72.">(Born Stable)</b></td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_FEMININE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto">UDisplayOptionsGrammaticalCase udispopt_fromGrammaticalCaseIdentifier(const char*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_INANIMATE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto">UDisplayOptionsNounClass udispopt_fromNounClassIdentifier(const char*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_MASCULINE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto">UDisplayOptionsPluralCategory udispopt_fromPluralCategoryIdentifier(const char*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_NEUTER</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto">const char* udispopt_getGrammaticalCaseIdentifier(UDisplayOptionsGrammaticalCase)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_OTHER</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto">const char* udispopt_getNounClassIdentifier(UDisplayOptionsNounClass)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_PERSONAL</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto">const char* udispopt_getPluralCategoryIdentifier(UDisplayOptionsPluralCategory)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_UNDEFINED</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_BEGINNING_OF_SENTENCE</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_FEW</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_MIDDLE_OF_SENTENCE</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_MANY</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_STANDALONE</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_ONE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_UI_LIST_OR_MENU</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_OTHER</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_UNDEFINED</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_TWO</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsDisplayLength::UDISPOPT_DISPLAY_LENGTH_FULL</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_UNDEFINED</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsDisplayLength::UDISPOPT_DISPLAY_LENGTH_SHORT</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_ZERO</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsDisplayLength::UDISPOPT_DISPLAY_LENGTH_UNDEFINED</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsSubstituteHandling::UDISPOPT_SUBSTITUTE_HANDLING_NO_SUBSTITUTE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_ABLATIVE</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsSubstituteHandling::UDISPOPT_SUBSTITUTE_HANDLING_SUBSTITUTE</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_ACCUSATIVE</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsSubstituteHandling::UDISPOPT_SUBSTITUTE_HANDLING_UNDEFINED</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_COMITATIVE</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">unum.h</td><td class="proto">bool unum_hasAttribute(const UNumberFormat*, UNumberFormatAttribute)</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 72</td>
+</tr>
+</table>
+<P></P>
+<a href="#_top">(jump back to top)</a>
+<hr>
+<a name="added"></a>
+<h2>Added in ICU 74</h2>
+<table BORDER="1" class="genTable">
+<THEAD>
+<tr>
+<th>File</th><th>API</th><th>ICU 73</th><th>ICU 74</th>
+</tr>
+</THEAD>
+<tr class="row1">
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getGasolineEnergyDensity()</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_DATIVE</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createGasolineEnergyDensity(UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_ERGATIVE</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">measure.h</td><td class="proto">bool icu::Measure::operator!=(const UObject&amp;) const</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_GENITIVE</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">normalizer2.h</td><td class="proto"><tt>static</tt> const Normalizer2* icu::Normalizer2::getNFKCSimpleCasefoldInstance(UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_INSTRUMENTAL</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">rbbi.h</td><td class="proto">bool icu::ExternalBreakEngine::handles(UChar32) const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 74</span></span></td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_LOCATIVE_COPULATIVE</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">rbbi.h</td><td class="proto">bool icu::ExternalBreakEngine::isFor(UChar32, const char*) const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 74</span></span></td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_LOCATIVE</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">rbbi.h</td><td class="proto">icu::ExternalBreakEngine::~ExternalBreakEngine()</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 74</span></span></td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_NOMINATIVE</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">rbbi.h</td><td class="proto">int32_t icu::ExternalBreakEngine::fillBreaks(UText*, int32_t, int32_t, int32_t*, int32_t, UErrorCode&amp;) const</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 74</span></span></td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_OBLIQUE</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">rbbi.h</td><td class="proto"><tt>static</tt> void icu::RuleBasedBreakIterator::registerExternalBreakEngine(ExternalBreakEngine*, UErrorCode&amp;)</td><td class="">(missing)</td><td>Internal<br>
+<span class=""><span>ICU 74</span></span></td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_PREPOSITIONAL</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">timezone.h</td><td class="proto"><tt>static</tt> UnicodeString&amp; icu::TimeZone::getIanaID(const UnicodeString&amp;, UnicodeString&amp;, UErrorCode&amp;)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_SOCIATIVE</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">ucal.h</td><td class="proto">int32_t ucal_getIanaTimeZoneID(const UChar*, int32_t, UChar*, int32_t, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_UNDEFINED</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 74</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 74.">(Born Stable)</b></td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_VOCATIVE</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_AKSARA_PREBASE</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 74</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 74.">(Born Stable)</b></td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNameStyle::UDISPOPT_NAME_STYLE_DIALECT_NAMES</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_AKSARA_START</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 74</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 74.">(Born Stable)</b></td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNameStyle::UDISPOPT_NAME_STYLE_STANDARD_NAMES</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_AKSARA</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 74</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 74.">(Born Stable)</b></td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNameStyle::UDISPOPT_NAME_STYLE_UNDEFINED</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_VIRAMA_FINAL</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 74</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 74.">(Born Stable)</b></td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_ANIMATE</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> ULineBreak::U_LB_VIRAMA</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 74</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 74.">(Born Stable)</b></td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_COMMON</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_IDS_UNARY_OPERATOR</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_FEMININE</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_ID_COMPAT_MATH_CONTINUE</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_INANIMATE</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_ID_COMPAT_MATH_START</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_MASCULINE</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">ulocale.h</td><td class="proto">UEnumeration* ulocale_getKeywords(const ULocale*, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_NEUTER</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">ulocale.h</td><td class="proto">UEnumeration* ulocale_getUnicodeKeywords(const ULocale*, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_OTHER</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">ulocale.h</td><td class="proto">ULocale* ulocale_openForLanguageTag(const char*, int32_t, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_PERSONAL</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">ulocale.h</td><td class="proto">ULocale* ulocale_openForLocaleID(const char*, int32_t, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_UNDEFINED</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">ulocale.h</td><td class="proto">bool ulocale_isBogus(const ULocale*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_FEW</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">ulocale.h</td><td class="proto">const char* ulocale_getBaseName(const ULocale*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_MANY</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">ulocale.h</td><td class="proto">const char* ulocale_getLanguage(const ULocale*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_ONE</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">ulocale.h</td><td class="proto">const char* ulocale_getLocaleID(const ULocale*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_OTHER</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">ulocale.h</td><td class="proto">const char* ulocale_getRegion(const ULocale*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_TWO</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">ulocale.h</td><td class="proto">const char* ulocale_getScript(const ULocale*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_UNDEFINED</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">ulocale.h</td><td class="proto">const char* ulocale_getVariant(const ULocale*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_ZERO</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">ulocale.h</td><td class="proto">int32_t ulocale_getKeywordValue(const ULocale*, const char*, int32_t, char*, int32_t, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsSubstituteHandling::UDISPOPT_SUBSTITUTE_HANDLING_NO_SUBSTITUTE</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">ulocale.h</td><td class="proto">int32_t ulocale_getUnicodeKeywordValue(const ULocale*, const char*, int32_t, char*, int32_t, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
</tr>
<tr class="row0">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsSubstituteHandling::UDISPOPT_SUBSTITUTE_HANDLING_SUBSTITUTE</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">ulocale.h</td><td class="proto">void ulocale_close(ULocale*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
</tr>
<tr class="row1">
-<td class="file">udisplayoptions.h</td><td class="proto"><tt>enum</tt> UDisplayOptionsSubstituteHandling::UDISPOPT_SUBSTITUTE_HANDLING_UNDEFINED</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">ulocbuilder.h</td><td class="proto">ULocale* ulocbld_buildULocale(ULocaleBuilder*, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
</tr>
<tr class="row0">
-<td class="file">unum.h</td><td class="proto">bool unum_hasAttribute(const UNumberFormat*, UNumberFormatAttribute)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 72</span></span></td>
+<td class="file">ulocbuilder.h</td><td class="proto">ULocaleBuilder* ulocbld_open()</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
</tr>
<tr class="row1">
-<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_KAWI</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 72</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 72.">(Born Stable)</b></td>
+<td class="file">ulocbuilder.h</td><td class="proto">bool ulocbld_copyErrorTo(const ULocaleBuilder*, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
</tr>
<tr class="row0">
-<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_NAG_MUNDARI</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 72</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 72.">(Born Stable)</b></td>
+<td class="file">ulocbuilder.h</td><td class="proto">int32_t ulocbld_buildLanguageTag(ULocaleBuilder*, char*, int32_t, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">ulocbuilder.h</td><td class="proto">int32_t ulocbld_buildLocaleID(ULocaleBuilder*, char*, int32_t, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">ulocbuilder.h</td><td class="proto">void ulocbld_addUnicodeLocaleAttribute(ULocaleBuilder*, const char*, int32_t)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">ulocbuilder.h</td><td class="proto">void ulocbld_adoptULocale(ULocaleBuilder*, ULocale*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">ulocbuilder.h</td><td class="proto">void ulocbld_clear(ULocaleBuilder*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">ulocbuilder.h</td><td class="proto">void ulocbld_clearExtensions(ULocaleBuilder*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">ulocbuilder.h</td><td class="proto">void ulocbld_close(ULocaleBuilder*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">ulocbuilder.h</td><td class="proto">void ulocbld_removeUnicodeLocaleAttribute(ULocaleBuilder*, const char*, int32_t)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">ulocbuilder.h</td><td class="proto">void ulocbld_setExtension(ULocaleBuilder*, char, const char*, int32_t)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">ulocbuilder.h</td><td class="proto">void ulocbld_setLanguage(ULocaleBuilder*, const char*, int32_t)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">ulocbuilder.h</td><td class="proto">void ulocbld_setLanguageTag(ULocaleBuilder*, const char*, int32_t)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">ulocbuilder.h</td><td class="proto">void ulocbld_setLocale(ULocaleBuilder*, const char*, int32_t)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">ulocbuilder.h</td><td class="proto">void ulocbld_setRegion(ULocaleBuilder*, const char*, int32_t)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">ulocbuilder.h</td><td class="proto">void ulocbld_setScript(ULocaleBuilder*, const char*, int32_t)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">ulocbuilder.h</td><td class="proto">void ulocbld_setUnicodeLocaleKeyword(ULocaleBuilder*, const char*, int32_t, const char*, int32_t)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">ulocbuilder.h</td><td class="proto">void ulocbld_setVariant(ULocaleBuilder*, const char*, int32_t)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">unorm2.h</td><td class="proto">const UNormalizer2* unorm2_getNFKCSimpleCasefoldInstance(UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uspoof.h</td><td class="proto">icu::UnicodeString&amp; uspoof_getBidiSkeletonUnicodeString(const USpoofChecker*, UBiDiDirection, const icu::UnicodeString&amp;, icu::UnicodeString&amp;, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uspoof.h</td><td class="proto">int32_t uspoof_getBidiSkeleton(const USpoofChecker*, UBiDiDirection, const UChar*, int32_t, UChar*, int32_t, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uspoof.h</td><td class="proto">int32_t uspoof_getBidiSkeletonUTF8(const USpoofChecker*, UBiDiDirection, const char*, int32_t, char*, int32_t, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uspoof.h</td><td class="proto">uint32_t uspoof_areBidiConfusable(const USpoofChecker*, UBiDiDirection, const UChar*, int32_t, const UChar*, int32_t, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uspoof.h</td><td class="proto">uint32_t uspoof_areBidiConfusableUTF8(const USpoofChecker*, UBiDiDirection, const char*, int32_t, const char*, int32_t, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uspoof.h</td><td class="proto">uint32_t uspoof_areBidiConfusableUnicodeString(const USpoofChecker*, UBiDiDirection, const icu::UnicodeString&amp;, const icu::UnicodeString&amp;, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 74</span></span></td>
</tr>
</table>
<P></P>
<a href="#_top">(jump back to top)</a>
<hr>
<a name="other"></a>
-<h2>Other existing drafts in ICU 72</h2>
+<h2>Other existing drafts in ICU 74</h2>
<div class="other">
<table BORDER="1" class="genTable">
<THEAD>
<tr>
-<th>File</th><th>API</th><th>ICU 71</th><th>ICU 72</th>
+<th>File</th><th>API</th><th>ICU 73</th><th>ICU 74</th>
</tr>
</THEAD>
<tr class="row1">
-<td class="file">dtptngen.h</td><td class="proto">const UnicodeString&amp; icu::DateTimePatternGenerator::getDateTimeFormat(UDateFormatStyle, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 71</td>
+<td class="file">calendar.h</td><td class="proto">bool icu::Calendar::inTemporalLeapYear(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
</tr>
<tr class="row0">
-<td class="file">dtptngen.h</td><td class="proto">void icu::DateTimePatternGenerator::setDateTimeFormat(UDateFormatStyle, const UnicodeString&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 71</td>
+<td class="file">calendar.h</td><td class="proto">const char* icu::Calendar::getTemporalMonthCode(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
</tr>
<tr class="row1">
+<td class="file">calendar.h</td><td class="proto">void icu::Calendar::setTemporalMonthCode(const char*, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+</tr>
+<tr class="row0">
<td class="file">measfmt.h</td><td class="proto">void icu::MeasureFormat::parseObject(const UnicodeString&amp;, Formattable&amp;, ParsePosition&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 53</td>
</tr>
+<tr class="row1">
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getBeaufort()</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+</tr>
+<tr class="row0">
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createBeaufort(UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+</tr>
+<tr class="row1">
+<td class="file">numfmt.h</td><td class="proto"><tt>enum</tt> icu::NumberFormat::ERoundingMode::kRoundHalfCeiling</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+</tr>
+<tr class="row0">
+<td class="file">numfmt.h</td><td class="proto"><tt>enum</tt> icu::NumberFormat::ERoundingMode::kRoundHalfFloor</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+</tr>
+<tr class="row1">
+<td class="file">numfmt.h</td><td class="proto"><tt>enum</tt> icu::NumberFormat::ERoundingMode::kRoundHalfOdd</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+</tr>
+<tr class="row0">
+<td class="file">simplenumberformatter.h</td><td class="proto">FormattedNumber icu::number::SimpleNumberFormatter::format(SimpleNumber, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+</tr>
+<tr class="row1">
+<td class="file">simplenumberformatter.h</td><td class="proto">FormattedNumber icu::number::SimpleNumberFormatter::formatInt64(int64_t, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+</tr>
+<tr class="row0">
+<td class="file">simplenumberformatter.h</td><td class="proto">SimpleNumber&amp; icu::number::SimpleNumber::operator=(SimpleNumber&amp;&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+</tr>
+<tr class="row1">
+<td class="file">simplenumberformatter.h</td><td class="proto">SimpleNumberFormatter&amp; icu::number::SimpleNumberFormatter::operator=(SimpleNumberFormatter&amp;&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+</tr>
+<tr class="row0">
+<td class="file">simplenumberformatter.h</td><td class="proto">icu::number::SimpleNumber::SimpleNumber()=default</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+</tr>
+<tr class="row1">
+<td class="file">simplenumberformatter.h</td><td class="proto">icu::number::SimpleNumber::SimpleNumber(SimpleNumber&amp;&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> IncrementPrecision icu::number::Precision::incrementExact(uint64_t, int16_t)</td><td class="" colspan="2" align="center">Draft<br>ICU 71</td>
+<td class="file">simplenumberformatter.h</td><td class="proto">icu::number::SimpleNumber::~SimpleNumber()</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
</tr>
<tr class="row1">
-<td class="file">udatpg.h</td><td class="proto">const UChar* udatpg_getDateTimeFormatForStyle(const UDateTimePatternGenerator*, UDateFormatStyle, int32_t*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 71</td>
+<td class="file">simplenumberformatter.h</td><td class="proto">icu::number::SimpleNumberFormatter::SimpleNumberFormatter()=default</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
</tr>
<tr class="row0">
-<td class="file">udatpg.h</td><td class="proto">void udatpg_setDateTimeFormatForStyle(UDateTimePatternGenerator*, UDateFormatStyle, const UChar*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 71</td>
+<td class="file">simplenumberformatter.h</td><td class="proto">icu::number::SimpleNumberFormatter::SimpleNumberFormatter(SimpleNumberFormatter&amp;&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
</tr>
<tr class="row1">
-<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatFields::UNUM_APPROXIMATELY_SIGN_FIELD</td><td class="" colspan="2" align="center">Draft<br>ICU 71</td>
+<td class="file">simplenumberformatter.h</td><td class="proto">icu::number::SimpleNumberFormatter::~SimpleNumberFormatter()</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
</tr>
<tr class="row0">
+<td class="file">simplenumberformatter.h</td><td class="proto"><tt>static</tt> SimpleNumber icu::number::SimpleNumber::forInt64(int64_t, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+</tr>
+<tr class="row1">
+<td class="file">simplenumberformatter.h</td><td class="proto"><tt>static</tt> SimpleNumberFormatter icu::number::SimpleNumberFormatter::forLocale(const icu::Locale&amp;, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+</tr>
+<tr class="row0">
+<td class="file">simplenumberformatter.h</td><td class="proto"><tt>static</tt> SimpleNumberFormatter icu::number::SimpleNumberFormatter::forLocaleAndGroupingStrategy(const icu::Locale&amp;, UNumberGroupingStrategy, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+</tr>
+<tr class="row1">
+<td class="file">simplenumberformatter.h</td><td class="proto"><tt>static</tt> SimpleNumberFormatter icu::number::SimpleNumberFormatter::forLocaleAndSymbolsAndGroupingStrategy(const icu::Locale&amp;, const DecimalFormatSymbols&amp;, UNumberGroupingStrategy, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+</tr>
+<tr class="row0">
+<td class="file">simplenumberformatter.h</td><td class="proto">void icu::number::SimpleNumber::multiplyByPowerOfTen(int32_t, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+</tr>
+<tr class="row1">
+<td class="file">simplenumberformatter.h</td><td class="proto">void icu::number::SimpleNumber::roundTo(int32_t, UNumberFormatRoundingMode, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+</tr>
+<tr class="row0">
+<td class="file">simplenumberformatter.h</td><td class="proto">void icu::number::SimpleNumber::setMinimumFractionDigits(uint32_t, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+</tr>
+<tr class="row1">
+<td class="file">simplenumberformatter.h</td><td class="proto">void icu::number::SimpleNumber::setMinimumIntegerDigits(uint32_t, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+</tr>
+<tr class="row0">
+<td class="file">simplenumberformatter.h</td><td class="proto">void icu::number::SimpleNumber::setSign(USimpleNumberSign, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+</tr>
+<tr class="row1">
+<td class="file">simplenumberformatter.h</td><td class="proto">void icu::number::SimpleNumber::truncateStart(uint32_t, UErrorCode&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+</tr>
+<tr class="row0">
+<td class="file">ucal.h</td><td class="proto"><tt>enum</tt> UCalendarDateFields::UCAL_ORDINAL_MONTH</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+</tr>
+<tr class="row1">
<td class="file">uregex.h</td><td class="proto"><tt>enum</tt> URegexpFlag::UREGEX_CANON_EQ</td><td class="" colspan="2" align="center">Draft<br>ICU 2.4</td>
</tr>
+<tr class="row0">
+<td class="file">uset.h</td><td class="proto"><tt>enum</tt> (anonymous)::USET_SIMPLE_CASE_INSENSITIVE</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+</tr>
+<tr class="row1">
+<td class="file">usimplenumberformatter.h</td><td class="proto">USimpleNumber* usnum_openForInt64(int64_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+</tr>
+<tr class="row0">
+<td class="file">usimplenumberformatter.h</td><td class="proto">USimpleNumberFormatter* usnumf_openForLocale(const char*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+</tr>
+<tr class="row1">
+<td class="file">usimplenumberformatter.h</td><td class="proto">USimpleNumberFormatter* usnumf_openForLocaleAndGroupingStrategy(const char*, UNumberGroupingStrategy, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+</tr>
+<tr class="row0">
+<td class="file">usimplenumberformatter.h</td><td class="proto"><tt>enum</tt> USimpleNumberSign::UNUM_SIMPLE_NUMBER_MINUS_SIGN</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+</tr>
+<tr class="row1">
+<td class="file">usimplenumberformatter.h</td><td class="proto"><tt>enum</tt> USimpleNumberSign::UNUM_SIMPLE_NUMBER_NO_SIGN</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+</tr>
+<tr class="row0">
+<td class="file">usimplenumberformatter.h</td><td class="proto"><tt>enum</tt> USimpleNumberSign::UNUM_SIMPLE_NUMBER_PLUS_SIGN</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+</tr>
+<tr class="row1">
+<td class="file">usimplenumberformatter.h</td><td class="proto">void usnum_close(USimpleNumber*)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+</tr>
+<tr class="row0">
+<td class="file">usimplenumberformatter.h</td><td class="proto">void usnum_multiplyByPowerOfTen(USimpleNumber*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+</tr>
+<tr class="row1">
+<td class="file">usimplenumberformatter.h</td><td class="proto">void usnum_roundTo(USimpleNumber*, int32_t, UNumberFormatRoundingMode, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+</tr>
+<tr class="row0">
+<td class="file">usimplenumberformatter.h</td><td class="proto">void usnum_setMinimumFractionDigits(USimpleNumber*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+</tr>
+<tr class="row1">
+<td class="file">usimplenumberformatter.h</td><td class="proto">void usnum_setMinimumIntegerDigits(USimpleNumber*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+</tr>
+<tr class="row0">
+<td class="file">usimplenumberformatter.h</td><td class="proto">void usnum_setSign(USimpleNumber*, USimpleNumberSign, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+</tr>
+<tr class="row1">
+<td class="file">usimplenumberformatter.h</td><td class="proto">void usnum_setToInt64(USimpleNumber*, int64_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+</tr>
+<tr class="row0">
+<td class="file">usimplenumberformatter.h</td><td class="proto">void usnum_truncateStart(USimpleNumber*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+</tr>
+<tr class="row1">
+<td class="file">usimplenumberformatter.h</td><td class="proto">void usnumf_close(USimpleNumberFormatter*)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+</tr>
+<tr class="row0">
+<td class="file">usimplenumberformatter.h</td><td class="proto">void usnumf_format(const USimpleNumberFormatter*, USimpleNumber*, UFormattedNumber*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+</tr>
+<tr class="row1">
+<td class="file">usimplenumberformatter.h</td><td class="proto">void usnumf_formatInt64(const USimpleNumberFormatter*, int64_t, UFormattedNumber*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 73</td>
+</tr>
</table>
</div>
<P></P>
@@ -722,7 +1007,7 @@
<a href="#_top">(jump back to top)</a>
<hr>
<p>
-<i><font size="-1">Contents generated by StableAPI tool on Thu Oct 06 11:06:39 PDT 2022<br>
+<i><font size="-1">Contents generated by StableAPI tool on Mon Oct 02 17:50:42 PDT 2023<br>
Copyright &copy; 2017 and later: Unicode, Inc. and others.<br>
License &amp; terms of use: http://www.unicode.org/copyright.html
</font></i>
diff --git a/Build/source/libs/icu/icu-src/APIChangeReport.md b/Build/source/libs/icu/icu-src/APIChangeReport.md
index f004f2cb905..e978673252f 100644
--- a/Build/source/libs/icu/icu-src/APIChangeReport.md
+++ b/Build/source/libs/icu/icu-src/APIChangeReport.md
@@ -5,223 +5,334 @@
License & terms of use: http://www.unicode.org/copyright.html
-->
-# ICU4C API Comparison: ICU 71 with ICU 72
+# ICU4C API Comparison: ICU 73 with ICU 74
> _Note_ Markdown format of this document is new for ICU 65.
-- [Removed from ICU 71](#removed)
-- [Deprecated or Obsoleted in ICU 72](#deprecated)
-- [Changed in ICU 72](#changed)
-- [Promoted to stable in ICU 72](#promoted)
-- [Added in ICU 72](#added)
-- [Other existing drafts in ICU 72](#other)
+- [Removed from ICU 73](#removed)
+- [Deprecated or Obsoleted in ICU 74](#deprecated)
+- [Changed in ICU 74](#changed)
+- [Promoted to stable in ICU 74](#promoted)
+- [Added in ICU 74](#added)
+- [Other existing drafts in ICU 74](#other)
- [Signature Simplifications](#simplifications)
## Removed
-Removed from ICU 71
+Removed from ICU 73
-| File | API | ICU 71 | ICU 72 |
+| File | API | ICU 73 | ICU 74 |
|---|---|---|---|
-| calendar.h | bool icu::Calendar::isSet(EDateFields) const | DeprecatedICU 2.6 | (missing)
-| calendar.h | int32_t icu::Calendar::get(EDateFields, UErrorCode&amp;) const | DeprecatedICU 2.6 | (missing)
-| calendar.h | int32_t icu::Calendar::getActualMaximum(EDateFields, UErrorCode&amp;) const | DeprecatedICU 2.6 | (missing)
-| calendar.h | void icu::Calendar::clear(EDateFields) | DeprecatedICU 2.6 | (missing)
-| calendar.h | void icu::Calendar::set(EDateFields, int32_t) | DeprecatedICU 2.6 | (missing)
-| calendar.h | void icu::Calendar::setFirstDayOfWeek(EDaysOfWeek) | DeprecatedICU 2.6 | (missing)
-| dtptngen.h | <tt>static</tt> DateTimePatternGenerator* icu::DateTimePatternGenerator::internalMakeInstance(const Locale&amp;, UErrorCode&amp;) | Internal | (missing)
-| gregocal.h | int32_t icu::GregorianCalendar::getActualMaximum(EDateFields) const | DeprecatedICU 2.6 | (missing)
-| numberformatter.h | NounClass icu::number::FormattedNumber::getNounClass(UErrorCode&amp;) const | DraftICU 71 | (missing)
-| numberformatter.h | const char* icu::number::FormattedNumber::getGender(UErrorCode&amp;) const | Deprecated | (missing)
-| plurrule.h | int32_t icu::PluralRules::getSamples(const UnicodeString&amp;, FixedDecimal*, int32_t, UErrorCode&amp;) | Internal | (missing)
-| plurrule.h | <tt>static</tt> bool icu::PluralRules::hasOverride(const Locale&amp;) | Internal | (missing)
-| tzrule.h | bool icu::InitialTimeZoneRule::getStartInYear(int32_t, int32_t, int32_t, UDate&amp;) const | StableICU 3.8 | (missing)
## Deprecated
-Deprecated or Obsoleted in ICU 72
+Deprecated or Obsoleted in ICU 74
-| File | API | ICU 71 | ICU 72 |
+| File | API | ICU 73 | ICU 74 |
|---|---|---|---|
## Changed
-Changed in ICU 72 (old, new)
+Changed in ICU 74 (old, new)
-| File | API | ICU 71 | ICU 72 |
+| File | API | ICU 73 | ICU 74 |
|---|---|---|---|
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getItem() | Draft→StableICU 70
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getKilowattHourPer100Kilometer() | Draft→StableICU 70
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createItem(UErrorCode&amp;) | Draft→StableICU 70
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createKilowattHourPer100Kilometer(UErrorCode&amp;) | Draft→StableICU 70
-| numberformatter.h | Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::unitDisplayCase(StringPiece) const&amp; | InternalICU 69 | Internal
-| numberformatter.h | Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::unitDisplayCase(StringPiece)&amp;&amp; | InternalICU 69 | Internal
-| numberrangeformatter.h | icu::number::FormattedNumberRange::FormattedNumberRange() | Draft→StableICU 70
-| uchar.h | bool u_stringHasBinaryProperty(const UChar*, int32_t, UProperty) | Draft→StableICU 70
-| uchar.h | <tt>enum</tt> UProperty::UCHAR_BASIC_EMOJI | Draft→StableICU 70
-| uchar.h | <tt>enum</tt> UProperty::UCHAR_EMOJI_KEYCAP_SEQUENCE | Draft→StableICU 70
-| uchar.h | <tt>enum</tt> UProperty::UCHAR_RGI_EMOJI_FLAG_SEQUENCE | Draft→StableICU 70
-| uchar.h | <tt>enum</tt> UProperty::UCHAR_RGI_EMOJI_MODIFIER_SEQUENCE | Draft→StableICU 70
-| uchar.h | <tt>enum</tt> UProperty::UCHAR_RGI_EMOJI_TAG_SEQUENCE | Draft→StableICU 70
-| uchar.h | <tt>enum</tt> UProperty::UCHAR_RGI_EMOJI_ZWJ_SEQUENCE | Draft→StableICU 70
-| uchar.h | <tt>enum</tt> UProperty::UCHAR_RGI_EMOJI | Draft→StableICU 70
-| udat.h | <tt>enum</tt> UDateFormatSymbolType::UDAT_NARROW_QUARTERS | Draft→StableICU 70
-| udat.h | <tt>enum</tt> UDateFormatSymbolType::UDAT_STANDALONE_NARROW_QUARTERS | Draft→StableICU 70
-| uformattedvalue.h | <tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_NUMBER_RANGE_SPAN | Draft→StableICU 69
-| uniset.h | bool icu::UnicodeSet::hasStrings() const | Draft→StableICU 70
-| uset.h | bool uset_hasStrings(const USet*) | Draft→StableICU 70
-| uset.h | int32_t uset_getRangeCount(const USet*) | Draft→StableICU 70
-| usetiter.h | UnicodeSetIterator &amp; icu::UnicodeSetIterator::skipToStrings() | Draft→StableICU 70
+| displayoptions.h | Builder icu::DisplayOptions::copyToBuilder() const | Draft→StableICU 72
+| displayoptions.h | Builder&amp; icu::DisplayOptions::Builder::setCapitalization(UDisplayOptionsCapitalization) | Draft→StableICU 72
+| displayoptions.h | Builder&amp; icu::DisplayOptions::Builder::setDisplayLength(UDisplayOptionsDisplayLength) | Draft→StableICU 72
+| displayoptions.h | Builder&amp; icu::DisplayOptions::Builder::setGrammaticalCase(UDisplayOptionsGrammaticalCase) | Draft→StableICU 72
+| displayoptions.h | Builder&amp; icu::DisplayOptions::Builder::setNameStyle(UDisplayOptionsNameStyle) | Draft→StableICU 72
+| displayoptions.h | Builder&amp; icu::DisplayOptions::Builder::setNounClass(UDisplayOptionsNounClass) | Draft→StableICU 72
+| displayoptions.h | Builder&amp; icu::DisplayOptions::Builder::setPluralCategory(UDisplayOptionsPluralCategory) | Draft→StableICU 72
+| displayoptions.h | Builder&amp; icu::DisplayOptions::Builder::setSubstituteHandling(UDisplayOptionsSubstituteHandling) | Draft→StableICU 72
+| displayoptions.h | DisplayOptions icu::DisplayOptions::Builder::build() | Draft→StableICU 72
+| displayoptions.h | DisplayOptions&amp; icu::DisplayOptions::operator=(DisplayOptions&amp;&amp;)=default | Draft→StableICU 72
+| displayoptions.h | DisplayOptions&amp; icu::DisplayOptions::operator=(const DisplayOptions&amp;)=default | Draft→StableICU 72
+| displayoptions.h | UDisplayOptionsCapitalization icu::DisplayOptions::getCapitalization() const | Draft→StableICU 72
+| displayoptions.h | UDisplayOptionsDisplayLength icu::DisplayOptions::getDisplayLength() const | Draft→StableICU 72
+| displayoptions.h | UDisplayOptionsGrammaticalCase icu::DisplayOptions::getGrammaticalCase() const | Draft→StableICU 72
+| displayoptions.h | UDisplayOptionsNameStyle icu::DisplayOptions::getNameStyle() const | Draft→StableICU 72
+| displayoptions.h | UDisplayOptionsNounClass icu::DisplayOptions::getNounClass() const | Draft→StableICU 72
+| displayoptions.h | UDisplayOptionsPluralCategory icu::DisplayOptions::getPluralCategory() const | Draft→StableICU 72
+| displayoptions.h | UDisplayOptionsSubstituteHandling icu::DisplayOptions::getSubstituteHandling() const | Draft→StableICU 72
+| displayoptions.h | icu::DisplayOptions::DisplayOptions(const DisplayOptions&amp;)=default | Draft→StableICU 72
+| displayoptions.h | <tt>static</tt> Builder icu::DisplayOptions::builder() | Draft→StableICU 72
+| formattednumber.h | UDisplayOptionsNounClass icu::number::FormattedNumber::getNounClass(UErrorCode&amp;) const | Draft→StableICU 72
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getQuarter() | Draft→StableICU 72
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getTonne() | Draft→StableICU 72
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createQuarter(UErrorCode&amp;) | Draft→StableICU 72
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createTonne(UErrorCode&amp;) | Draft→StableICU 72
+| numberformatter.h | Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::displayOptions(const DisplayOptions&amp;) const&amp; | Draft→StableICU 72
+| numberformatter.h | Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::displayOptions(const DisplayOptions&amp;)&amp;&amp; | Draft→StableICU 72
+| udisplayoptions.h | UDisplayOptionsGrammaticalCase udispopt_fromGrammaticalCaseIdentifier(const char*) | Draft→StableICU 72
+| udisplayoptions.h | UDisplayOptionsNounClass udispopt_fromNounClassIdentifier(const char*) | Draft→StableICU 72
+| udisplayoptions.h | UDisplayOptionsPluralCategory udispopt_fromPluralCategoryIdentifier(const char*) | Draft→StableICU 72
+| udisplayoptions.h | const char* udispopt_getGrammaticalCaseIdentifier(UDisplayOptionsGrammaticalCase) | Draft→StableICU 72
+| udisplayoptions.h | const char* udispopt_getNounClassIdentifier(UDisplayOptionsNounClass) | Draft→StableICU 72
+| udisplayoptions.h | const char* udispopt_getPluralCategoryIdentifier(UDisplayOptionsPluralCategory) | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_BEGINNING_OF_SENTENCE | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_MIDDLE_OF_SENTENCE | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_STANDALONE | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_UI_LIST_OR_MENU | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_UNDEFINED | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsDisplayLength::UDISPOPT_DISPLAY_LENGTH_FULL | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsDisplayLength::UDISPOPT_DISPLAY_LENGTH_SHORT | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsDisplayLength::UDISPOPT_DISPLAY_LENGTH_UNDEFINED | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_ABLATIVE | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_ACCUSATIVE | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_COMITATIVE | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_DATIVE | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_ERGATIVE | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_GENITIVE | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_INSTRUMENTAL | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_LOCATIVE_COPULATIVE | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_LOCATIVE | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_NOMINATIVE | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_OBLIQUE | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_PREPOSITIONAL | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_SOCIATIVE | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_UNDEFINED | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_VOCATIVE | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNameStyle::UDISPOPT_NAME_STYLE_DIALECT_NAMES | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNameStyle::UDISPOPT_NAME_STYLE_STANDARD_NAMES | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNameStyle::UDISPOPT_NAME_STYLE_UNDEFINED | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_ANIMATE | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_COMMON | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_FEMININE | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_INANIMATE | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_MASCULINE | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_NEUTER | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_OTHER | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_PERSONAL | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_UNDEFINED | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_FEW | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_MANY | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_ONE | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_OTHER | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_TWO | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_UNDEFINED | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_ZERO | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsSubstituteHandling::UDISPOPT_SUBSTITUTE_HANDLING_NO_SUBSTITUTE | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsSubstituteHandling::UDISPOPT_SUBSTITUTE_HANDLING_SUBSTITUTE | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsSubstituteHandling::UDISPOPT_SUBSTITUTE_HANDLING_UNDEFINED | Draft→StableICU 72
+| unum.h | bool unum_hasAttribute(const UNumberFormat*, UNumberFormatAttribute) | Draft→StableICU 72
## Promoted
-Promoted to stable in ICU 72
+Promoted to stable in ICU 74
-| File | API | ICU 71 | ICU 72 |
+| File | API | ICU 73 | ICU 74 |
|---|---|---|---|
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getItem() | Draft→StableICU 70
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getKilowattHourPer100Kilometer() | Draft→StableICU 70
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createItem(UErrorCode&amp;) | Draft→StableICU 70
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createKilowattHourPer100Kilometer(UErrorCode&amp;) | Draft→StableICU 70
-| numberrangeformatter.h | icu::number::FormattedNumberRange::FormattedNumberRange() | Draft→StableICU 70
-| uchar.h | bool u_stringHasBinaryProperty(const UChar*, int32_t, UProperty) | Draft→StableICU 70
-| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_ARABIC_EXTENDED_C | (missing) | StableICU 72| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_H | (missing) | StableICU 72| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_CYRILLIC_EXTENDED_D | (missing) | StableICU 72| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_DEVANAGARI_EXTENDED_A | (missing) | StableICU 72| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_KAKTOVIK_NUMERALS | (missing) | StableICU 72| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_KAWI | (missing) | StableICU 72| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_NAG_MUNDARI | (missing) | StableICU 72| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> UProperty::UCHAR_BASIC_EMOJI | Draft→StableICU 70
-| uchar.h | <tt>enum</tt> UProperty::UCHAR_EMOJI_KEYCAP_SEQUENCE | Draft→StableICU 70
-| uchar.h | <tt>enum</tt> UProperty::UCHAR_RGI_EMOJI_FLAG_SEQUENCE | Draft→StableICU 70
-| uchar.h | <tt>enum</tt> UProperty::UCHAR_RGI_EMOJI_MODIFIER_SEQUENCE | Draft→StableICU 70
-| uchar.h | <tt>enum</tt> UProperty::UCHAR_RGI_EMOJI_TAG_SEQUENCE | Draft→StableICU 70
-| uchar.h | <tt>enum</tt> UProperty::UCHAR_RGI_EMOJI_ZWJ_SEQUENCE | Draft→StableICU 70
-| uchar.h | <tt>enum</tt> UProperty::UCHAR_RGI_EMOJI | Draft→StableICU 70
-| udat.h | <tt>enum</tt> UDateFormatSymbolType::UDAT_NARROW_QUARTERS | Draft→StableICU 70
-| udat.h | <tt>enum</tt> UDateFormatSymbolType::UDAT_STANDALONE_NARROW_QUARTERS | Draft→StableICU 70
-| uformattedvalue.h | <tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_NUMBER_RANGE_SPAN | Draft→StableICU 69
-| uniset.h | bool icu::UnicodeSet::hasStrings() const | Draft→StableICU 70
-| uscript.h | <tt>enum</tt> UScriptCode::USCRIPT_KAWI | (missing) | StableICU 72| *(Born Stable)* |
-| uscript.h | <tt>enum</tt> UScriptCode::USCRIPT_NAG_MUNDARI | (missing) | StableICU 72| *(Born Stable)* |
-| uset.h | bool uset_hasStrings(const USet*) | Draft→StableICU 70
-| uset.h | int32_t uset_getRangeCount(const USet*) | Draft→StableICU 70
-| usetiter.h | UnicodeSetIterator &amp; icu::UnicodeSetIterator::skipToStrings() | Draft→StableICU 70
+| displayoptions.h | Builder icu::DisplayOptions::copyToBuilder() const | Draft→StableICU 72
+| displayoptions.h | Builder&amp; icu::DisplayOptions::Builder::setCapitalization(UDisplayOptionsCapitalization) | Draft→StableICU 72
+| displayoptions.h | Builder&amp; icu::DisplayOptions::Builder::setDisplayLength(UDisplayOptionsDisplayLength) | Draft→StableICU 72
+| displayoptions.h | Builder&amp; icu::DisplayOptions::Builder::setGrammaticalCase(UDisplayOptionsGrammaticalCase) | Draft→StableICU 72
+| displayoptions.h | Builder&amp; icu::DisplayOptions::Builder::setNameStyle(UDisplayOptionsNameStyle) | Draft→StableICU 72
+| displayoptions.h | Builder&amp; icu::DisplayOptions::Builder::setNounClass(UDisplayOptionsNounClass) | Draft→StableICU 72
+| displayoptions.h | Builder&amp; icu::DisplayOptions::Builder::setPluralCategory(UDisplayOptionsPluralCategory) | Draft→StableICU 72
+| displayoptions.h | Builder&amp; icu::DisplayOptions::Builder::setSubstituteHandling(UDisplayOptionsSubstituteHandling) | Draft→StableICU 72
+| displayoptions.h | DisplayOptions icu::DisplayOptions::Builder::build() | Draft→StableICU 72
+| displayoptions.h | DisplayOptions&amp; icu::DisplayOptions::operator=(DisplayOptions&amp;&amp;)=default | Draft→StableICU 72
+| displayoptions.h | DisplayOptions&amp; icu::DisplayOptions::operator=(const DisplayOptions&amp;)=default | Draft→StableICU 72
+| displayoptions.h | UDisplayOptionsCapitalization icu::DisplayOptions::getCapitalization() const | Draft→StableICU 72
+| displayoptions.h | UDisplayOptionsDisplayLength icu::DisplayOptions::getDisplayLength() const | Draft→StableICU 72
+| displayoptions.h | UDisplayOptionsGrammaticalCase icu::DisplayOptions::getGrammaticalCase() const | Draft→StableICU 72
+| displayoptions.h | UDisplayOptionsNameStyle icu::DisplayOptions::getNameStyle() const | Draft→StableICU 72
+| displayoptions.h | UDisplayOptionsNounClass icu::DisplayOptions::getNounClass() const | Draft→StableICU 72
+| displayoptions.h | UDisplayOptionsPluralCategory icu::DisplayOptions::getPluralCategory() const | Draft→StableICU 72
+| displayoptions.h | UDisplayOptionsSubstituteHandling icu::DisplayOptions::getSubstituteHandling() const | Draft→StableICU 72
+| displayoptions.h | icu::DisplayOptions::DisplayOptions(const DisplayOptions&amp;)=default | Draft→StableICU 72
+| displayoptions.h | <tt>static</tt> Builder icu::DisplayOptions::builder() | Draft→StableICU 72
+| formattednumber.h | UDisplayOptionsNounClass icu::number::FormattedNumber::getNounClass(UErrorCode&amp;) const | Draft→StableICU 72
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getQuarter() | Draft→StableICU 72
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getTonne() | Draft→StableICU 72
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createQuarter(UErrorCode&amp;) | Draft→StableICU 72
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createTonne(UErrorCode&amp;) | Draft→StableICU 72
+| numberformatter.h | Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::displayOptions(const DisplayOptions&amp;) const&amp; | Draft→StableICU 72
+| numberformatter.h | Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::displayOptions(const DisplayOptions&amp;)&amp;&amp; | Draft→StableICU 72
+| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I | (missing) | StableICU 74| *(Born Stable)* |
+| uchar.h | <tt>enum</tt> ULineBreak::U_LB_AKSARA_PREBASE | (missing) | StableICU 74| *(Born Stable)* |
+| uchar.h | <tt>enum</tt> ULineBreak::U_LB_AKSARA_START | (missing) | StableICU 74| *(Born Stable)* |
+| uchar.h | <tt>enum</tt> ULineBreak::U_LB_AKSARA | (missing) | StableICU 74| *(Born Stable)* |
+| uchar.h | <tt>enum</tt> ULineBreak::U_LB_VIRAMA_FINAL | (missing) | StableICU 74| *(Born Stable)* |
+| uchar.h | <tt>enum</tt> ULineBreak::U_LB_VIRAMA | (missing) | StableICU 74| *(Born Stable)* |
+| udisplayoptions.h | UDisplayOptionsGrammaticalCase udispopt_fromGrammaticalCaseIdentifier(const char*) | Draft→StableICU 72
+| udisplayoptions.h | UDisplayOptionsNounClass udispopt_fromNounClassIdentifier(const char*) | Draft→StableICU 72
+| udisplayoptions.h | UDisplayOptionsPluralCategory udispopt_fromPluralCategoryIdentifier(const char*) | Draft→StableICU 72
+| udisplayoptions.h | const char* udispopt_getGrammaticalCaseIdentifier(UDisplayOptionsGrammaticalCase) | Draft→StableICU 72
+| udisplayoptions.h | const char* udispopt_getNounClassIdentifier(UDisplayOptionsNounClass) | Draft→StableICU 72
+| udisplayoptions.h | const char* udispopt_getPluralCategoryIdentifier(UDisplayOptionsPluralCategory) | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_BEGINNING_OF_SENTENCE | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_MIDDLE_OF_SENTENCE | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_STANDALONE | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_UI_LIST_OR_MENU | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_UNDEFINED | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsDisplayLength::UDISPOPT_DISPLAY_LENGTH_FULL | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsDisplayLength::UDISPOPT_DISPLAY_LENGTH_SHORT | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsDisplayLength::UDISPOPT_DISPLAY_LENGTH_UNDEFINED | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_ABLATIVE | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_ACCUSATIVE | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_COMITATIVE | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_DATIVE | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_ERGATIVE | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_GENITIVE | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_INSTRUMENTAL | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_LOCATIVE_COPULATIVE | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_LOCATIVE | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_NOMINATIVE | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_OBLIQUE | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_PREPOSITIONAL | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_SOCIATIVE | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_UNDEFINED | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_VOCATIVE | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNameStyle::UDISPOPT_NAME_STYLE_DIALECT_NAMES | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNameStyle::UDISPOPT_NAME_STYLE_STANDARD_NAMES | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNameStyle::UDISPOPT_NAME_STYLE_UNDEFINED | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_ANIMATE | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_COMMON | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_FEMININE | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_INANIMATE | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_MASCULINE | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_NEUTER | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_OTHER | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_PERSONAL | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_UNDEFINED | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_FEW | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_MANY | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_ONE | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_OTHER | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_TWO | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_UNDEFINED | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_ZERO | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsSubstituteHandling::UDISPOPT_SUBSTITUTE_HANDLING_NO_SUBSTITUTE | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsSubstituteHandling::UDISPOPT_SUBSTITUTE_HANDLING_SUBSTITUTE | Draft→StableICU 72
+| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsSubstituteHandling::UDISPOPT_SUBSTITUTE_HANDLING_UNDEFINED | Draft→StableICU 72
+| unum.h | bool unum_hasAttribute(const UNumberFormat*, UNumberFormatAttribute) | Draft→StableICU 72
## Added
-Added in ICU 72
+Added in ICU 74
-| File | API | ICU 71 | ICU 72 |
+| File | API | ICU 73 | ICU 74 |
|---|---|---|---|
-| displayoptions.h | Builder icu::DisplayOptions::copyToBuilder() const | (missing) | DraftICU 72
-| displayoptions.h | Builder&amp; icu::DisplayOptions::Builder::setCapitalization(UDisplayOptionsCapitalization) | (missing) | DraftICU 72
-| displayoptions.h | Builder&amp; icu::DisplayOptions::Builder::setDisplayLength(UDisplayOptionsDisplayLength) | (missing) | DraftICU 72
-| displayoptions.h | Builder&amp; icu::DisplayOptions::Builder::setGrammaticalCase(UDisplayOptionsGrammaticalCase) | (missing) | DraftICU 72
-| displayoptions.h | Builder&amp; icu::DisplayOptions::Builder::setNameStyle(UDisplayOptionsNameStyle) | (missing) | DraftICU 72
-| displayoptions.h | Builder&amp; icu::DisplayOptions::Builder::setNounClass(UDisplayOptionsNounClass) | (missing) | DraftICU 72
-| displayoptions.h | Builder&amp; icu::DisplayOptions::Builder::setPluralCategory(UDisplayOptionsPluralCategory) | (missing) | DraftICU 72
-| displayoptions.h | Builder&amp; icu::DisplayOptions::Builder::setSubstituteHandling(UDisplayOptionsSubstituteHandling) | (missing) | DraftICU 72
-| displayoptions.h | DisplayOptions icu::DisplayOptions::Builder::build() | (missing) | DraftICU 72
-| displayoptions.h | DisplayOptions&amp; icu::DisplayOptions::operator=(DisplayOptions&amp;&amp;) noexcept=default | (missing) | DraftICU 72
-| displayoptions.h | DisplayOptions&amp; icu::DisplayOptions::operator=(const DisplayOptions&amp;)=default | (missing) | DraftICU 72
-| displayoptions.h | UDisplayOptionsCapitalization icu::DisplayOptions::getCapitalization() const | (missing) | DraftICU 72
-| displayoptions.h | UDisplayOptionsDisplayLength icu::DisplayOptions::getDisplayLength() const | (missing) | DraftICU 72
-| displayoptions.h | UDisplayOptionsGrammaticalCase icu::DisplayOptions::getGrammaticalCase() const | (missing) | DraftICU 72
-| displayoptions.h | UDisplayOptionsNameStyle icu::DisplayOptions::getNameStyle() const | (missing) | DraftICU 72
-| displayoptions.h | UDisplayOptionsNounClass icu::DisplayOptions::getNounClass() const | (missing) | DraftICU 72
-| displayoptions.h | UDisplayOptionsPluralCategory icu::DisplayOptions::getPluralCategory() const | (missing) | DraftICU 72
-| displayoptions.h | UDisplayOptionsSubstituteHandling icu::DisplayOptions::getSubstituteHandling() const | (missing) | DraftICU 72
-| displayoptions.h | icu::DisplayOptions::DisplayOptions(const DisplayOptions&amp;)=default | (missing) | DraftICU 72
-| displayoptions.h | <tt>static</tt> Builder icu::DisplayOptions::builder() | (missing) | DraftICU 72
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getQuarter() | (missing) | DraftICU 72
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getTonne() | (missing) | DraftICU 72
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createQuarter(UErrorCode&amp;) | (missing) | DraftICU 72
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createTonne(UErrorCode&amp;) | (missing) | DraftICU 72
-| numberformatter.h | Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::displayOptions(const DisplayOptions&amp;) const&amp; | (missing) | DraftICU 72
-| numberformatter.h | Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::displayOptions(const DisplayOptions&amp;)&amp;&amp; | (missing) | DraftICU 72
-| numberformatter.h | UDisplayOptionsNounClass icu::number::FormattedNumber::getNounClass(UErrorCode&amp;) const | (missing) | DraftICU 72
-| platform.h | <tt>#define</tt> U_HIDDEN | (missing) | Internal
-| plurrule.h | int32_t icu::PluralRules::getSamples(const UnicodeString&amp;, DecimalQuantity*, int32_t, UErrorCode&amp;) | (missing) | Internal
-| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_ARABIC_EXTENDED_C | (missing) | StableICU 72| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_H | (missing) | StableICU 72| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_CYRILLIC_EXTENDED_D | (missing) | StableICU 72| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_DEVANAGARI_EXTENDED_A | (missing) | StableICU 72| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_KAKTOVIK_NUMERALS | (missing) | StableICU 72| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_KAWI | (missing) | StableICU 72| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_NAG_MUNDARI | (missing) | StableICU 72| *(Born Stable)* |
-| udisplayoptions.h | UDisplayOptionsGrammaticalCase udispopt_fromGrammaticalCaseIdentifier(const char*) | (missing) | DraftICU 72
-| udisplayoptions.h | UDisplayOptionsNounClass udispopt_fromNounClassIdentifier(const char*) | (missing) | DraftICU 72
-| udisplayoptions.h | UDisplayOptionsPluralCategory udispopt_fromPluralCategoryIdentifier(const char*) | (missing) | DraftICU 72
-| udisplayoptions.h | const char* udispopt_getGrammaticalCaseIdentifier(UDisplayOptionsGrammaticalCase) | (missing) | DraftICU 72
-| udisplayoptions.h | const char* udispopt_getNounClassIdentifier(UDisplayOptionsNounClass) | (missing) | DraftICU 72
-| udisplayoptions.h | const char* udispopt_getPluralCategoryIdentifier(UDisplayOptionsPluralCategory) | (missing) | DraftICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_BEGINNING_OF_SENTENCE | (missing) | DraftICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_MIDDLE_OF_SENTENCE | (missing) | DraftICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_STANDALONE | (missing) | DraftICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_UI_LIST_OR_MENU | (missing) | DraftICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsCapitalization::UDISPOPT_CAPITALIZATION_UNDEFINED | (missing) | DraftICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsDisplayLength::UDISPOPT_DISPLAY_LENGTH_FULL | (missing) | DraftICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsDisplayLength::UDISPOPT_DISPLAY_LENGTH_SHORT | (missing) | DraftICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsDisplayLength::UDISPOPT_DISPLAY_LENGTH_UNDEFINED | (missing) | DraftICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_ABLATIVE | (missing) | DraftICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_ACCUSATIVE | (missing) | DraftICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_COMITATIVE | (missing) | DraftICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_DATIVE | (missing) | DraftICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_ERGATIVE | (missing) | DraftICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_GENITIVE | (missing) | DraftICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_INSTRUMENTAL | (missing) | DraftICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_LOCATIVE_COPULATIVE | (missing) | DraftICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_LOCATIVE | (missing) | DraftICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_NOMINATIVE | (missing) | DraftICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_OBLIQUE | (missing) | DraftICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_PREPOSITIONAL | (missing) | DraftICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_SOCIATIVE | (missing) | DraftICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_UNDEFINED | (missing) | DraftICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsGrammaticalCase::UDISPOPT_GRAMMATICAL_CASE_VOCATIVE | (missing) | DraftICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNameStyle::UDISPOPT_NAME_STYLE_DIALECT_NAMES | (missing) | DraftICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNameStyle::UDISPOPT_NAME_STYLE_STANDARD_NAMES | (missing) | DraftICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNameStyle::UDISPOPT_NAME_STYLE_UNDEFINED | (missing) | DraftICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_ANIMATE | (missing) | DraftICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_COMMON | (missing) | DraftICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_FEMININE | (missing) | DraftICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_INANIMATE | (missing) | DraftICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_MASCULINE | (missing) | DraftICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_NEUTER | (missing) | DraftICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_OTHER | (missing) | DraftICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_PERSONAL | (missing) | DraftICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsNounClass::UDISPOPT_NOUN_CLASS_UNDEFINED | (missing) | DraftICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_FEW | (missing) | DraftICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_MANY | (missing) | DraftICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_ONE | (missing) | DraftICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_OTHER | (missing) | DraftICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_TWO | (missing) | DraftICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_UNDEFINED | (missing) | DraftICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsPluralCategory::UDISPOPT_PLURAL_CATEGORY_ZERO | (missing) | DraftICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsSubstituteHandling::UDISPOPT_SUBSTITUTE_HANDLING_NO_SUBSTITUTE | (missing) | DraftICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsSubstituteHandling::UDISPOPT_SUBSTITUTE_HANDLING_SUBSTITUTE | (missing) | DraftICU 72
-| udisplayoptions.h | <tt>enum</tt> UDisplayOptionsSubstituteHandling::UDISPOPT_SUBSTITUTE_HANDLING_UNDEFINED | (missing) | DraftICU 72
-| unum.h | bool unum_hasAttribute(const UNumberFormat*, UNumberFormatAttribute) | (missing) | DraftICU 72
-| uscript.h | <tt>enum</tt> UScriptCode::USCRIPT_KAWI | (missing) | StableICU 72| *(Born Stable)* |
-| uscript.h | <tt>enum</tt> UScriptCode::USCRIPT_NAG_MUNDARI | (missing) | StableICU 72| *(Born Stable)* |
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getGasolineEnergyDensity() | (missing) | DraftICU 74
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createGasolineEnergyDensity(UErrorCode&amp;) | (missing) | DraftICU 74
+| measure.h | bool icu::Measure::operator!=(const UObject&amp;) const | (missing) | DraftICU 74
+| normalizer2.h | <tt>static</tt> const Normalizer2* icu::Normalizer2::getNFKCSimpleCasefoldInstance(UErrorCode&amp;) | (missing) | DraftICU 74
+| rbbi.h | bool icu::ExternalBreakEngine::handles(UChar32) const | (missing) | InternalICU 74
+| rbbi.h | bool icu::ExternalBreakEngine::isFor(UChar32, const char*) const | (missing) | InternalICU 74
+| rbbi.h | icu::ExternalBreakEngine::~ExternalBreakEngine() | (missing) | InternalICU 74
+| rbbi.h | int32_t icu::ExternalBreakEngine::fillBreaks(UText*, int32_t, int32_t, int32_t*, int32_t, UErrorCode&amp;) const | (missing) | InternalICU 74
+| rbbi.h | <tt>static</tt> void icu::RuleBasedBreakIterator::registerExternalBreakEngine(ExternalBreakEngine*, UErrorCode&amp;) | (missing) | InternalICU 74
+| timezone.h | <tt>static</tt> UnicodeString&amp; icu::TimeZone::getIanaID(const UnicodeString&amp;, UnicodeString&amp;, UErrorCode&amp;) | (missing) | DraftICU 74
+| ucal.h | int32_t ucal_getIanaTimeZoneID(const UChar*, int32_t, UChar*, int32_t, UErrorCode*) | (missing) | DraftICU 74
+| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I | (missing) | StableICU 74| *(Born Stable)* |
+| uchar.h | <tt>enum</tt> ULineBreak::U_LB_AKSARA_PREBASE | (missing) | StableICU 74| *(Born Stable)* |
+| uchar.h | <tt>enum</tt> ULineBreak::U_LB_AKSARA_START | (missing) | StableICU 74| *(Born Stable)* |
+| uchar.h | <tt>enum</tt> ULineBreak::U_LB_AKSARA | (missing) | StableICU 74| *(Born Stable)* |
+| uchar.h | <tt>enum</tt> ULineBreak::U_LB_VIRAMA_FINAL | (missing) | StableICU 74| *(Born Stable)* |
+| uchar.h | <tt>enum</tt> ULineBreak::U_LB_VIRAMA | (missing) | StableICU 74| *(Born Stable)* |
+| uchar.h | <tt>enum</tt> UProperty::UCHAR_IDS_UNARY_OPERATOR | (missing) | DraftICU 74
+| uchar.h | <tt>enum</tt> UProperty::UCHAR_ID_COMPAT_MATH_CONTINUE | (missing) | DraftICU 74
+| uchar.h | <tt>enum</tt> UProperty::UCHAR_ID_COMPAT_MATH_START | (missing) | DraftICU 74
+| ulocale.h | UEnumeration* ulocale_getKeywords(const ULocale*, UErrorCode*) | (missing) | DraftICU 74
+| ulocale.h | UEnumeration* ulocale_getUnicodeKeywords(const ULocale*, UErrorCode*) | (missing) | DraftICU 74
+| ulocale.h | ULocale* ulocale_openForLanguageTag(const char*, int32_t, UErrorCode*) | (missing) | DraftICU 74
+| ulocale.h | ULocale* ulocale_openForLocaleID(const char*, int32_t, UErrorCode*) | (missing) | DraftICU 74
+| ulocale.h | bool ulocale_isBogus(const ULocale*) | (missing) | DraftICU 74
+| ulocale.h | const char* ulocale_getBaseName(const ULocale*) | (missing) | DraftICU 74
+| ulocale.h | const char* ulocale_getLanguage(const ULocale*) | (missing) | DraftICU 74
+| ulocale.h | const char* ulocale_getLocaleID(const ULocale*) | (missing) | DraftICU 74
+| ulocale.h | const char* ulocale_getRegion(const ULocale*) | (missing) | DraftICU 74
+| ulocale.h | const char* ulocale_getScript(const ULocale*) | (missing) | DraftICU 74
+| ulocale.h | const char* ulocale_getVariant(const ULocale*) | (missing) | DraftICU 74
+| ulocale.h | int32_t ulocale_getKeywordValue(const ULocale*, const char*, int32_t, char*, int32_t, UErrorCode*) | (missing) | DraftICU 74
+| ulocale.h | int32_t ulocale_getUnicodeKeywordValue(const ULocale*, const char*, int32_t, char*, int32_t, UErrorCode*) | (missing) | DraftICU 74
+| ulocale.h | void ulocale_close(ULocale*) | (missing) | DraftICU 74
+| ulocbuilder.h | ULocale* ulocbld_buildULocale(ULocaleBuilder*, UErrorCode*) | (missing) | DraftICU 74
+| ulocbuilder.h | ULocaleBuilder* ulocbld_open() | (missing) | DraftICU 74
+| ulocbuilder.h | bool ulocbld_copyErrorTo(const ULocaleBuilder*, UErrorCode*) | (missing) | DraftICU 74
+| ulocbuilder.h | int32_t ulocbld_buildLanguageTag(ULocaleBuilder*, char*, int32_t, UErrorCode*) | (missing) | DraftICU 74
+| ulocbuilder.h | int32_t ulocbld_buildLocaleID(ULocaleBuilder*, char*, int32_t, UErrorCode*) | (missing) | DraftICU 74
+| ulocbuilder.h | void ulocbld_addUnicodeLocaleAttribute(ULocaleBuilder*, const char*, int32_t) | (missing) | DraftICU 74
+| ulocbuilder.h | void ulocbld_adoptULocale(ULocaleBuilder*, ULocale*) | (missing) | DraftICU 74
+| ulocbuilder.h | void ulocbld_clear(ULocaleBuilder*) | (missing) | DraftICU 74
+| ulocbuilder.h | void ulocbld_clearExtensions(ULocaleBuilder*) | (missing) | DraftICU 74
+| ulocbuilder.h | void ulocbld_close(ULocaleBuilder*) | (missing) | DraftICU 74
+| ulocbuilder.h | void ulocbld_removeUnicodeLocaleAttribute(ULocaleBuilder*, const char*, int32_t) | (missing) | DraftICU 74
+| ulocbuilder.h | void ulocbld_setExtension(ULocaleBuilder*, char, const char*, int32_t) | (missing) | DraftICU 74
+| ulocbuilder.h | void ulocbld_setLanguage(ULocaleBuilder*, const char*, int32_t) | (missing) | DraftICU 74
+| ulocbuilder.h | void ulocbld_setLanguageTag(ULocaleBuilder*, const char*, int32_t) | (missing) | DraftICU 74
+| ulocbuilder.h | void ulocbld_setLocale(ULocaleBuilder*, const char*, int32_t) | (missing) | DraftICU 74
+| ulocbuilder.h | void ulocbld_setRegion(ULocaleBuilder*, const char*, int32_t) | (missing) | DraftICU 74
+| ulocbuilder.h | void ulocbld_setScript(ULocaleBuilder*, const char*, int32_t) | (missing) | DraftICU 74
+| ulocbuilder.h | void ulocbld_setUnicodeLocaleKeyword(ULocaleBuilder*, const char*, int32_t, const char*, int32_t) | (missing) | DraftICU 74
+| ulocbuilder.h | void ulocbld_setVariant(ULocaleBuilder*, const char*, int32_t) | (missing) | DraftICU 74
+| unorm2.h | const UNormalizer2* unorm2_getNFKCSimpleCasefoldInstance(UErrorCode*) | (missing) | DraftICU 74
+| uspoof.h | icu::UnicodeString&amp; uspoof_getBidiSkeletonUnicodeString(const USpoofChecker*, UBiDiDirection, const icu::UnicodeString&amp;, icu::UnicodeString&amp;, UErrorCode*) | (missing) | DraftICU 74
+| uspoof.h | int32_t uspoof_getBidiSkeleton(const USpoofChecker*, UBiDiDirection, const UChar*, int32_t, UChar*, int32_t, UErrorCode*) | (missing) | DraftICU 74
+| uspoof.h | int32_t uspoof_getBidiSkeletonUTF8(const USpoofChecker*, UBiDiDirection, const char*, int32_t, char*, int32_t, UErrorCode*) | (missing) | DraftICU 74
+| uspoof.h | uint32_t uspoof_areBidiConfusable(const USpoofChecker*, UBiDiDirection, const UChar*, int32_t, const UChar*, int32_t, UErrorCode*) | (missing) | DraftICU 74
+| uspoof.h | uint32_t uspoof_areBidiConfusableUTF8(const USpoofChecker*, UBiDiDirection, const char*, int32_t, const char*, int32_t, UErrorCode*) | (missing) | DraftICU 74
+| uspoof.h | uint32_t uspoof_areBidiConfusableUnicodeString(const USpoofChecker*, UBiDiDirection, const icu::UnicodeString&amp;, const icu::UnicodeString&amp;, UErrorCode*) | (missing) | DraftICU 74
## Other
-Other existing drafts in ICU 72
+Other existing drafts in ICU 74
-| File | API | ICU 71 | ICU 72 |
+| File | API | ICU 73 | ICU 74 |
|---|---|---|---|
-| dtptngen.h | const UnicodeString&amp; icu::DateTimePatternGenerator::getDateTimeFormat(UDateFormatStyle, UErrorCode&amp;) const | DraftICU 71 |
-| dtptngen.h | void icu::DateTimePatternGenerator::setDateTimeFormat(UDateFormatStyle, const UnicodeString&amp;, UErrorCode&amp;) | DraftICU 71 |
+| calendar.h | bool icu::Calendar::inTemporalLeapYear(UErrorCode&amp;) const | DraftICU 73 |
+| calendar.h | const char* icu::Calendar::getTemporalMonthCode(UErrorCode&amp;) const | DraftICU 73 |
+| calendar.h | void icu::Calendar::setTemporalMonthCode(const char*, UErrorCode&amp;) | DraftICU 73 |
| measfmt.h | void icu::MeasureFormat::parseObject(const UnicodeString&amp;, Formattable&amp;, ParsePosition&amp;) const | DraftICU 53 |
-| numberformatter.h | <tt>static</tt> IncrementPrecision icu::number::Precision::incrementExact(uint64_t, int16_t) | DraftICU 71 |
-| udatpg.h | const UChar* udatpg_getDateTimeFormatForStyle(const UDateTimePatternGenerator*, UDateFormatStyle, int32_t*, UErrorCode*) | DraftICU 71 |
-| udatpg.h | void udatpg_setDateTimeFormatForStyle(UDateTimePatternGenerator*, UDateFormatStyle, const UChar*, int32_t, UErrorCode*) | DraftICU 71 |
-| unum.h | <tt>enum</tt> UNumberFormatFields::UNUM_APPROXIMATELY_SIGN_FIELD | DraftICU 71 |
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getBeaufort() | DraftICU 73 |
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createBeaufort(UErrorCode&amp;) | DraftICU 73 |
+| numfmt.h | <tt>enum</tt> icu::NumberFormat::ERoundingMode::kRoundHalfCeiling | DraftICU 73 |
+| numfmt.h | <tt>enum</tt> icu::NumberFormat::ERoundingMode::kRoundHalfFloor | DraftICU 73 |
+| numfmt.h | <tt>enum</tt> icu::NumberFormat::ERoundingMode::kRoundHalfOdd | DraftICU 73 |
+| simplenumberformatter.h | FormattedNumber icu::number::SimpleNumberFormatter::format(SimpleNumber, UErrorCode&amp;) const | DraftICU 73 |
+| simplenumberformatter.h | FormattedNumber icu::number::SimpleNumberFormatter::formatInt64(int64_t, UErrorCode&amp;) const | DraftICU 73 |
+| simplenumberformatter.h | SimpleNumber&amp; icu::number::SimpleNumber::operator=(SimpleNumber&amp;&amp;) | DraftICU 73 |
+| simplenumberformatter.h | SimpleNumberFormatter&amp; icu::number::SimpleNumberFormatter::operator=(SimpleNumberFormatter&amp;&amp;) | DraftICU 73 |
+| simplenumberformatter.h | icu::number::SimpleNumber::SimpleNumber()=default | DraftICU 73 |
+| simplenumberformatter.h | icu::number::SimpleNumber::SimpleNumber(SimpleNumber&amp;&amp;) | DraftICU 73 |
+| simplenumberformatter.h | icu::number::SimpleNumber::~SimpleNumber() | DraftICU 73 |
+| simplenumberformatter.h | icu::number::SimpleNumberFormatter::SimpleNumberFormatter()=default | DraftICU 73 |
+| simplenumberformatter.h | icu::number::SimpleNumberFormatter::SimpleNumberFormatter(SimpleNumberFormatter&amp;&amp;) | DraftICU 73 |
+| simplenumberformatter.h | icu::number::SimpleNumberFormatter::~SimpleNumberFormatter() | DraftICU 73 |
+| simplenumberformatter.h | <tt>static</tt> SimpleNumber icu::number::SimpleNumber::forInt64(int64_t, UErrorCode&amp;) | DraftICU 73 |
+| simplenumberformatter.h | <tt>static</tt> SimpleNumberFormatter icu::number::SimpleNumberFormatter::forLocale(const icu::Locale&amp;, UErrorCode&amp;) | DraftICU 73 |
+| simplenumberformatter.h | <tt>static</tt> SimpleNumberFormatter icu::number::SimpleNumberFormatter::forLocaleAndGroupingStrategy(const icu::Locale&amp;, UNumberGroupingStrategy, UErrorCode&amp;) | DraftICU 73 |
+| simplenumberformatter.h | <tt>static</tt> SimpleNumberFormatter icu::number::SimpleNumberFormatter::forLocaleAndSymbolsAndGroupingStrategy(const icu::Locale&amp;, const DecimalFormatSymbols&amp;, UNumberGroupingStrategy, UErrorCode&amp;) | DraftICU 73 |
+| simplenumberformatter.h | void icu::number::SimpleNumber::multiplyByPowerOfTen(int32_t, UErrorCode&amp;) | DraftICU 73 |
+| simplenumberformatter.h | void icu::number::SimpleNumber::roundTo(int32_t, UNumberFormatRoundingMode, UErrorCode&amp;) | DraftICU 73 |
+| simplenumberformatter.h | void icu::number::SimpleNumber::setMinimumFractionDigits(uint32_t, UErrorCode&amp;) | DraftICU 73 |
+| simplenumberformatter.h | void icu::number::SimpleNumber::setMinimumIntegerDigits(uint32_t, UErrorCode&amp;) | DraftICU 73 |
+| simplenumberformatter.h | void icu::number::SimpleNumber::setSign(USimpleNumberSign, UErrorCode&amp;) | DraftICU 73 |
+| simplenumberformatter.h | void icu::number::SimpleNumber::truncateStart(uint32_t, UErrorCode&amp;) | DraftICU 73 |
+| ucal.h | <tt>enum</tt> UCalendarDateFields::UCAL_ORDINAL_MONTH | DraftICU 73 |
| uregex.h | <tt>enum</tt> URegexpFlag::UREGEX_CANON_EQ | DraftICU 2.4 |
+| uset.h | <tt>enum</tt> (anonymous)::USET_SIMPLE_CASE_INSENSITIVE | DraftICU 73 |
+| usimplenumberformatter.h | USimpleNumber* usnum_openForInt64(int64_t, UErrorCode*) | DraftICU 73 |
+| usimplenumberformatter.h | USimpleNumberFormatter* usnumf_openForLocale(const char*, UErrorCode*) | DraftICU 73 |
+| usimplenumberformatter.h | USimpleNumberFormatter* usnumf_openForLocaleAndGroupingStrategy(const char*, UNumberGroupingStrategy, UErrorCode*) | DraftICU 73 |
+| usimplenumberformatter.h | <tt>enum</tt> USimpleNumberSign::UNUM_SIMPLE_NUMBER_MINUS_SIGN | DraftICU 73 |
+| usimplenumberformatter.h | <tt>enum</tt> USimpleNumberSign::UNUM_SIMPLE_NUMBER_NO_SIGN | DraftICU 73 |
+| usimplenumberformatter.h | <tt>enum</tt> USimpleNumberSign::UNUM_SIMPLE_NUMBER_PLUS_SIGN | DraftICU 73 |
+| usimplenumberformatter.h | void usnum_close(USimpleNumber*) | DraftICU 73 |
+| usimplenumberformatter.h | void usnum_multiplyByPowerOfTen(USimpleNumber*, int32_t, UErrorCode*) | DraftICU 73 |
+| usimplenumberformatter.h | void usnum_roundTo(USimpleNumber*, int32_t, UNumberFormatRoundingMode, UErrorCode*) | DraftICU 73 |
+| usimplenumberformatter.h | void usnum_setMinimumFractionDigits(USimpleNumber*, int32_t, UErrorCode*) | DraftICU 73 |
+| usimplenumberformatter.h | void usnum_setMinimumIntegerDigits(USimpleNumber*, int32_t, UErrorCode*) | DraftICU 73 |
+| usimplenumberformatter.h | void usnum_setSign(USimpleNumber*, USimpleNumberSign, UErrorCode*) | DraftICU 73 |
+| usimplenumberformatter.h | void usnum_setToInt64(USimpleNumber*, int64_t, UErrorCode*) | DraftICU 73 |
+| usimplenumberformatter.h | void usnum_truncateStart(USimpleNumber*, int32_t, UErrorCode*) | DraftICU 73 |
+| usimplenumberformatter.h | void usnumf_close(USimpleNumberFormatter*) | DraftICU 73 |
+| usimplenumberformatter.h | void usnumf_format(const USimpleNumberFormatter*, USimpleNumber*, UFormattedNumber*, UErrorCode*) | DraftICU 73 |
+| usimplenumberformatter.h | void usnumf_formatInt64(const USimpleNumberFormatter*, int64_t, UFormattedNumber*, UErrorCode*) | DraftICU 73 |
## Simplifications
@@ -231,7 +342,7 @@ This section shows cases where the signature was "simplified" for the sake of co
## Colophon
-Contents generated by StableAPI tool on Thu Oct 06 11:06:50 PDT 2022
+Contents generated by StableAPI tool on Mon Oct 02 17:52:32 PDT 2023
Copyright © 2019 and later: Unicode, Inc. and others.
License & terms of use: http://www.unicode.org/copyright.html
diff --git a/Build/source/libs/icu/icu-src/build_qnx/Makefile b/Build/source/libs/icu/icu-src/build_qnx/Makefile
new file mode 100755
index 00000000000..15599b23a7c
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/build_qnx/Makefile
@@ -0,0 +1,54 @@
+# © 2023 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+INSTALL_TARGETS =
+
+ifeq ($(strip $(CPULIST)),)
+ INSTALL_TARGETS += install-aarch64 install-x86_64
+else
+
+ifeq ($(filter aarch64,$(CPULIST)), aarch64)
+ INSTALL_TARGETS += install-aarch64
+endif
+
+ifeq ($(filter x86_64,$(CPULIST)), x86_64)
+ INSTALL_TARGETS += install-x86_64
+endif
+endif
+
+linux_CLEANFILES_LIST := $(filter-out linux-x86_64-o/GNUmakefile, $(wildcard linux-x86_64-o/*))
+aarch64_CLEANFILES_LIST := $(filter-out nto-aarch64-le/GNUmakefile, $(wildcard nto-aarch64-le/*))
+x86_64_CLEANFILES_LIST := $(filter-out nto-x86_64-o/GNUmakefile, $(wildcard nto-x86_64-o/*))
+
+all: install
+
+install: install-linux $(INSTALL_TARGETS)
+
+hinstall:
+
+clean: clean-linux clean-aarch64 clean-x86_64
+
+clean-linux:
+ifneq ($(strip $(linux_CLEANFILES_LIST)),)
+ rm -rf $(linux_CLEANFILES_LIST)
+endif
+
+clean-aarch64:
+ifneq ($(strip $(aarch64_CLEANFILES_LIST)),)
+ rm -rf $(aarch64_CLEANFILES_LIST)
+endif
+
+clean-x86_64:
+ifneq ($(strip $(x86_64_CLEANFILES_LIST)),)
+ rm -rf $(x86_64_CLEANFILES_LIST)
+endif
+
+install-linux:
+ $(MAKE) -C linux-x86_64-o -f GNUmakefile
+
+install-aarch64: install-linux
+ $(MAKE) -C nto-aarch64-le -f GNUmakefile install
+
+install-x86_64: install-linux
+ $(MAKE) -C nto-x86_64-o -f GNUmakefile install
+
+
diff --git a/Build/source/libs/icu/icu-src/build_qnx/build-hooks b/Build/source/libs/icu/icu-src/build_qnx/build-hooks
new file mode 100755
index 00000000000..93fe62ea7b4
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/build_qnx/build-hooks
@@ -0,0 +1,81 @@
+# © 2023 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+function hook_preconfigure {
+ if [ "${TARGET_SYSNAME}" == "nto" ]; then
+# set the current directory for use in configure_opts
+ CURDIR="${PWD}"
+# prefix is the base path where files are installed in the target filesystem. It is also
+# the base path for all architecture independent files
+ configure_opts="${configure_opts} --prefix=/usr"
+# exec-prefix is the base path for architecture dependent files.
+ configure_opts="${configure_opts} --exec-prefix=/${cpudir}/usr"
+ configure_opts="${configure_opts} --with-cross-build=${CURDIR}/../linux-x86_64-o"
+ configure_opts="${configure_opts} --with-data-packaging=auto"
+ configure_opts="${configure_opts} --srcdir=../../source"
+
+ CFLAGS="$CFLAGS -fPIC"
+ CPPFLAGS="$CPPFLAGS -fPIC"
+ CXXFLAGS="$CXXFLAGS -std=gnu++11"
+ else
+# prefix is the base path where architecture independent files are installed in the target filesystem
+ configure_opts="${configure_opts} --prefix=/"
+ configure_opts="${configure_opts} --srcdir=../../source"
+ fi
+}
+
+function hook_configure {
+ if [ -z "${ac_version}" ]; then
+ unset _guess
+ _pat='/[Gg]enerated.*[Aa]utoconf/s/.*\([1-9]\.[0-9][0-9]*\).*/\1/p'
+ [ "${_guess}" ] || _guess=$(../../source/configure --version | sed -n -e "${_pat}")
+ [ "${_guess}" ] || _guess=$(sed -n -e "1,10{
+ ${_pat}
+ }" <../../source/configure)
+ AutoconfVersion ${_guess}
+ fi
+ ../../source/configure \
+ ${ac_host:+"--host=${ac_host}"} \
+ ${ac_build:+"--build=${ac_build}"} \
+ ${configure_opts} \
+ ${ac_params:+${CC:+"CC=${CC}"}} \
+ ${ac_params:+${CFLAGS:+"CFLAGS=-O2 ${CFLAGS}"}} \
+ ${ac_params:+${CPPFLAGS:+"CPPFLAGS=${CPPFLAGS}"}} \
+ ${ac_params:+${LDFLAGS:+"LDFLAGS=${LDFLAGS}"}} \
+ ${ac_params:+${CXX:+"CXX=${CXX}"}} \
+ ${ac_params:+${CXXFLAGS:+"CXXFLAGS=-O2 ${CXXFLAGS}"}} \
+ ${ac_params:+${ac_autotools:+${ac_autotools}}} \
+ || Error "configure failed";
+}
+
+
+function hook_premake {
+ if [ "${TARGET_SYSNAME}" == "nto" ]; then
+ DESTDIR=${DESTDIR:-${INSTALL_ROOT_nto}}
+ export DESTDIR
+ fi
+}
+
+function hook_postmake {
+ if [ "${TARGET_SYSNAME}" == "linux" ]; then
+ make -fMakefile config/icucross.mk
+ make -fMakefile config/icucross.inc
+ fi
+
+ if [ "${TARGET_SYSNAME}" == "nto" ]; then
+ if [ -e "data/out/tmp/icudt72l.dat" ]; then
+ cp -fv data/out/tmp/icudt72l.dat "${DESTDIR}/usr/share/icu/"
+ fi
+ cd test
+ JLEVEL=4 make all-recursive
+ cd -
+ mkdir -p ${INSTALL_ROOT_nto}/${cpudir}/usr/bin/icu_tests/test/testdata
+ mkdir -p ${INSTALL_ROOT_nto}/${cpudir}/usr/bin/icu_tests/data/out
+ cp test/cintltst/cintltst ${INSTALL_ROOT_nto}/${cpudir}/usr/bin/icu_tests
+ cp test/intltest/intltest ${INSTALL_ROOT_nto}/${cpudir}/usr/bin/icu_tests
+ cp test/iotest/iotest ${INSTALL_ROOT_nto}/${cpudir}/usr/bin/icu_tests
+ cp -r data/out/build ${INSTALL_ROOT_nto}/${cpudir}/usr/bin/icu_tests/data/out
+ cp -r test/testdata/out ${INSTALL_ROOT_nto}/${cpudir}/usr/bin/icu_tests/test/testdata
+ cp -r ../../source/test/testdata ${INSTALL_ROOT_nto}/${cpudir}/usr/bin/icu_tests/test
+ cp -r ../../source/data ${INSTALL_ROOT_nto}/${cpudir}/usr/bin/icu_tests/
+ fi
+}
diff --git a/Build/source/libs/icu/icu-src/build_qnx/linux-x86_64-o/GNUmakefile b/Build/source/libs/icu/icu-src/build_qnx/linux-x86_64-o/GNUmakefile
new file mode 100755
index 00000000000..da455da2213
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/build_qnx/linux-x86_64-o/GNUmakefile
@@ -0,0 +1,8 @@
+# © 2023 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+ifndef QCONFIG
+QCONFIG=qconfig.mk
+endif
+include $(QCONFIG)
+
+include $(MKFILES_ROOT)/qmake-cfg.mk
diff --git a/Build/source/libs/icu/icu-src/build_qnx/nto-aarch64-le/GNUmakefile b/Build/source/libs/icu/icu-src/build_qnx/nto-aarch64-le/GNUmakefile
new file mode 100755
index 00000000000..da455da2213
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/build_qnx/nto-aarch64-le/GNUmakefile
@@ -0,0 +1,8 @@
+# © 2023 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+ifndef QCONFIG
+QCONFIG=qconfig.mk
+endif
+include $(QCONFIG)
+
+include $(MKFILES_ROOT)/qmake-cfg.mk
diff --git a/Build/source/libs/icu/icu-src/build_qnx/nto-x86_64-o/GNUmakefile b/Build/source/libs/icu/icu-src/build_qnx/nto-x86_64-o/GNUmakefile
new file mode 100755
index 00000000000..da455da2213
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/build_qnx/nto-x86_64-o/GNUmakefile
@@ -0,0 +1,8 @@
+# © 2023 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+ifndef QCONFIG
+QCONFIG=qconfig.mk
+endif
+include $(QCONFIG)
+
+include $(MKFILES_ROOT)/qmake-cfg.mk
diff --git a/Build/source/libs/icu/icu-src/source/Doxyfile.in b/Build/source/libs/icu/icu-src/source/Doxyfile.in
index d851b19e381..75bab9365ee 100644
--- a/Build/source/libs/icu/icu-src/source/Doxyfile.in
+++ b/Build/source/libs/icu/icu-src/source/Doxyfile.in
@@ -148,7 +148,7 @@ INLINE_INHERITED_MEMB = NO
# shortest path that makes the file name unique will be used
# The default value is: YES.
-FULL_PATH_NAMES = NO
+FULL_PATH_NAMES = YES
# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
# Stripping is only done if one of the specified strings matches the left-hand
@@ -160,7 +160,7 @@ FULL_PATH_NAMES = NO
# will be relative from the directory where doxygen is started.
# This tag requires that the tag FULL_PATH_NAMES is set to YES.
-STRIP_FROM_PATH =
+STRIP_FROM_PATH = @srcdir@
# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
# path mentioned in the documentation of a class, which tells the reader which
@@ -2085,8 +2085,7 @@ PREDEFINED = U_EXPORT2= \
U_IN_DOXYGEN=1 \
U_CHAR16_IS_TYPEDEF=0 \
U_CPLUSPLUS_VERSION=11 \
- U_WCHAR_IS_UTF16 \
- U_FINAL=final
+ U_WCHAR_IS_UTF16
# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
# tag can be used to specify a list of macro names that should be expanded. The
diff --git a/Build/source/libs/icu/icu-src/source/acinclude.m4 b/Build/source/libs/icu/icu-src/source/acinclude.m4
index 507f41f521c..7d0862b5320 100644
--- a/Build/source/libs/icu/icu-src/source/acinclude.m4
+++ b/Build/source/libs/icu/icu-src/source/acinclude.m4
@@ -77,6 +77,7 @@ x86_64-*-cygwin)
*-*ibm-openedition*|*-*-os390*) icu_cv_host_frag=mh-os390 ;;
*-*-os400*) icu_cv_host_frag=mh-os400 ;;
*-apple-rhapsody*) icu_cv_host_frag=mh-darwin ;;
+powerpc*-apple-darwin*) icu_cv_host_frag=mh-darwin-ppc ;;
*-apple-darwin*) icu_cv_host_frag=mh-darwin ;;
*-*-beos) icu_cv_host_frag=mh-beos ;;
*-*-haiku) icu_cv_host_frag=mh-haiku ;;
diff --git a/Build/source/libs/icu/icu-src/source/aclocal.m4 b/Build/source/libs/icu/icu-src/source/aclocal.m4
index b75871aa141..1e0201d1e27 100644
--- a/Build/source/libs/icu/icu-src/source/aclocal.m4
+++ b/Build/source/libs/icu/icu-src/source/aclocal.m4
@@ -1,6 +1,6 @@
-# generated automatically by aclocal 1.15.1 -*- Autoconf -*-
+# generated automatically by aclocal 1.16.1 -*- Autoconf -*-
-# Copyright (C) 1996-2017 Free Software Foundation, Inc.
+# Copyright (C) 1996-2018 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -67,7 +67,7 @@ AS_VAR_POPDEF([CACHEVAR])dnl
])dnl AX_CHECK_COMPILE_FLAGS
dnl pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
-dnl serial 11 (pkg-config-0.29)
+dnl serial 11 (pkg-config-0.29.1)
dnl
dnl Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
dnl Copyright © 2012-2015 Dan Nicholson <dbn.lists@gmail.com>
@@ -109,7 +109,7 @@ dnl
dnl See the "Since" comment for each macro you use to see what version
dnl of the macros you require.
m4_defun([PKG_PREREQ],
-[m4_define([PKG_MACROS_VERSION], [0.29])
+[m4_define([PKG_MACROS_VERSION], [0.29.1])
m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1,
[m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])])
])dnl PKG_PREREQ
@@ -154,7 +154,7 @@ dnl Check to see whether a particular set of modules exists. Similar to
dnl PKG_CHECK_MODULES(), but does not set variables or print errors.
dnl
dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
-dnl only at the first occurrence in configure.ac, so if the first place
+dnl only at the first occurence in configure.ac, so if the first place
dnl it's called might be skipped (such as if it is within an "if", you
dnl have to call PKG_CHECK_EXISTS manually
AC_DEFUN([PKG_CHECK_EXISTS],
diff --git a/Build/source/libs/icu/icu-src/source/allinone/Build.Windows.IcuVersion.props b/Build/source/libs/icu/icu-src/source/allinone/Build.Windows.IcuVersion.props
index 627a9a2abd4..6ee398af3d3 100644
--- a/Build/source/libs/icu/icu-src/source/allinone/Build.Windows.IcuVersion.props
+++ b/Build/source/libs/icu/icu-src/source/allinone/Build.Windows.IcuVersion.props
@@ -3,6 +3,6 @@
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- This file is used to set the ICU Major Version number, which is used as a suffix on various file names in other Visual Studio projects. -->
<PropertyGroup>
- <IcuMajorVersion>72</IcuMajorVersion>
+ <IcuMajorVersion>74</IcuMajorVersion>
</PropertyGroup>
</Project>
diff --git a/Build/source/libs/icu/icu-src/source/common/BUILD.bazel b/Build/source/libs/icu/icu-src/source/common/BUILD.bazel
index e385d3b243f..3ecae30c437 100644
--- a/Build/source/libs/icu/icu-src/source/common/BUILD.bazel
+++ b/Build/source/libs/icu/icu-src/source/common/BUILD.bazel
@@ -342,6 +342,7 @@ cc_library(
"dictionarydata.cpp",
"filteredbrk.cpp",
"lstmbe.cpp",
+ "mlbe.cpp",
"rbbi.cpp",
"rbbi_cache.cpp",
"rbbidata.cpp",
@@ -602,12 +603,16 @@ cc_library(
"locbased.cpp",
"locid.cpp",
"loclikely.cpp",
+ "loclikelysubtags.cpp",
"locmap.cpp",
+ "lsr.cpp",
"resbund.cpp",
"resource.cpp",
"uloc.cpp",
"uloc_tag.cpp",
"uloc_keytype.cpp",
+ "ulocale.cpp",
+ "ulocbuilder.cpp",
"uresbund.cpp",
"uresdata.cpp",
"wintz.cpp",
diff --git a/Build/source/libs/icu/icu-src/source/common/appendable.cpp b/Build/source/libs/icu/icu-src/source/common/appendable.cpp
index f9b20180eb7..c0fbcc6530a 100644
--- a/Build/source/libs/icu/icu-src/source/common/appendable.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/appendable.cpp
@@ -25,23 +25,23 @@ Appendable::~Appendable() {}
UBool
Appendable::appendCodePoint(UChar32 c) {
if(c<=0xffff) {
- return appendCodeUnit((UChar)c);
+ return appendCodeUnit((char16_t)c);
} else {
return appendCodeUnit(U16_LEAD(c)) && appendCodeUnit(U16_TRAIL(c));
}
}
UBool
-Appendable::appendString(const UChar *s, int32_t length) {
+Appendable::appendString(const char16_t *s, int32_t length) {
if(length<0) {
- UChar c;
+ char16_t c;
while((c=*s++)!=0) {
if(!appendCodeUnit(c)) {
return false;
}
}
} else if(length>0) {
- const UChar *limit=s+length;
+ const char16_t *limit=s+length;
do {
if(!appendCodeUnit(*s++)) {
return false;
@@ -56,14 +56,14 @@ Appendable::reserveAppendCapacity(int32_t /*appendCapacity*/) {
return true;
}
-UChar *
+char16_t *
Appendable::getAppendBuffer(int32_t minCapacity,
int32_t /*desiredCapacityHint*/,
- UChar *scratch, int32_t scratchCapacity,
+ char16_t *scratch, int32_t scratchCapacity,
int32_t *resultCapacity) {
if(minCapacity<1 || scratchCapacity<minCapacity) {
*resultCapacity=0;
- return NULL;
+ return nullptr;
}
*resultCapacity=scratchCapacity;
return scratch;
diff --git a/Build/source/libs/icu/icu-src/source/common/bmpset.cpp b/Build/source/libs/icu/icu-src/source/common/bmpset.cpp
index 14ab8942678..641c675c670 100644
--- a/Build/source/libs/icu/icu-src/source/common/bmpset.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/bmpset.cpp
@@ -319,9 +319,9 @@ BMPSet::contains(UChar32 c) const {
* Check for sufficient length for trail unit for each surrogate pair.
* Handle single surrogates as surrogate code points as usual in ICU.
*/
-const UChar *
-BMPSet::span(const UChar *s, const UChar *limit, USetSpanCondition spanCondition) const {
- UChar c, c2;
+const char16_t *
+BMPSet::span(const char16_t *s, const char16_t *limit, USetSpanCondition spanCondition) const {
+ char16_t c, c2;
if(spanCondition) {
// span
@@ -408,9 +408,9 @@ BMPSet::span(const UChar *s, const UChar *limit, USetSpanCondition spanCondition
}
/* Symmetrical with span(). */
-const UChar *
-BMPSet::spanBack(const UChar *s, const UChar *limit, USetSpanCondition spanCondition) const {
- UChar c, c2;
+const char16_t *
+BMPSet::spanBack(const char16_t *s, const char16_t *limit, USetSpanCondition spanCondition) const {
+ char16_t c, c2;
if(spanCondition) {
// span
diff --git a/Build/source/libs/icu/icu-src/source/common/bmpset.h b/Build/source/libs/icu/icu-src/source/common/bmpset.h
index e1982ac669d..fad0310038a 100644
--- a/Build/source/libs/icu/icu-src/source/common/bmpset.h
+++ b/Build/source/libs/icu/icu-src/source/common/bmpset.h
@@ -48,14 +48,14 @@ public:
* It must be s<limit and spanCondition==0 or 1.
* @return The string pointer which limits the span.
*/
- const UChar *span(const UChar *s, const UChar *limit, USetSpanCondition spanCondition) const;
+ const char16_t *span(const char16_t *s, const char16_t *limit, USetSpanCondition spanCondition) const;
/*
* Span the trailing substring for which each character c has spanCondition==contains(c).
* It must be s<limit and spanCondition==0 or 1.
* @return The string pointer which starts the span.
*/
- const UChar *spanBack(const UChar *s, const UChar *limit, USetSpanCondition spanCondition) const;
+ const char16_t *spanBack(const char16_t *s, const char16_t *limit, USetSpanCondition spanCondition) const;
/*
* Span the initial substring for which each character c has spanCondition==contains(c).
diff --git a/Build/source/libs/icu/icu-src/source/common/brkeng.cpp b/Build/source/libs/icu/icu-src/source/common/brkeng.cpp
index bd6abbb55a7..3f58287532e 100644
--- a/Build/source/libs/icu/icu-src/source/common/brkeng.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/brkeng.cpp
@@ -21,6 +21,7 @@
#include "unicode/uscript.h"
#include "unicode/ucharstrie.h"
#include "unicode/bytestrie.h"
+#include "unicode/rbbi.h"
#include "brkeng.h"
#include "cmemory.h"
@@ -70,19 +71,21 @@ UnhandledEngine::~UnhandledEngine() {
}
UBool
-UnhandledEngine::handles(UChar32 c) const {
+UnhandledEngine::handles(UChar32 c, const char* locale) const {
+ (void)locale; // Unused
return fHandled && fHandled->contains(c);
}
int32_t
UnhandledEngine::findBreaks( UText *text,
- int32_t /* startPos */,
+ int32_t startPos,
int32_t endPos,
UVector32 &/*foundBreaks*/,
UBool /* isPhraseBreaking */,
UErrorCode &status) const {
if (U_FAILURE(status)) return 0;
- UChar32 c = utext_current32(text);
+ utext_setNativeIndex(text, startPos);
+ UChar32 c = utext_current32(text);
while((int32_t)utext_getNativeIndex(text) < endPos && fHandled->contains(c)) {
utext_next32(text); // TODO: recast loop to work with post-increment operations.
c = utext_current32(text);
@@ -120,41 +123,39 @@ ICULanguageBreakFactory::~ICULanguageBreakFactory() {
}
}
-U_NAMESPACE_END
-U_CDECL_BEGIN
-static void U_CALLCONV _deleteEngine(void *obj) {
- delete (const icu::LanguageBreakEngine *) obj;
+void ICULanguageBreakFactory::ensureEngines(UErrorCode& status) {
+ static UMutex gBreakEngineMutex;
+ Mutex m(&gBreakEngineMutex);
+ if (fEngines == nullptr) {
+ LocalPointer<UStack> engines(new UStack(uprv_deleteUObject, nullptr, status), status);
+ if (U_SUCCESS(status)) {
+ fEngines = engines.orphan();
+ }
+ }
}
-U_CDECL_END
-U_NAMESPACE_BEGIN
const LanguageBreakEngine *
-ICULanguageBreakFactory::getEngineFor(UChar32 c) {
- const LanguageBreakEngine *lbe = NULL;
+ICULanguageBreakFactory::getEngineFor(UChar32 c, const char* locale) {
+ const LanguageBreakEngine *lbe = nullptr;
UErrorCode status = U_ZERO_ERROR;
+ ensureEngines(status);
+ if (U_FAILURE(status) ) {
+ // Note: no way to return error code to caller.
+ return nullptr;
+ }
static UMutex gBreakEngineMutex;
Mutex m(&gBreakEngineMutex);
-
- if (fEngines == nullptr) {
- LocalPointer<UStack> engines(new UStack(_deleteEngine, nullptr, status), status);
- if (U_FAILURE(status) ) {
- // Note: no way to return error code to caller.
- return nullptr;
- }
- fEngines = engines.orphan();
- } else {
- int32_t i = fEngines->size();
- while (--i >= 0) {
- lbe = (const LanguageBreakEngine *)(fEngines->elementAt(i));
- if (lbe != NULL && lbe->handles(c)) {
- return lbe;
- }
+ int32_t i = fEngines->size();
+ while (--i >= 0) {
+ lbe = (const LanguageBreakEngine *)(fEngines->elementAt(i));
+ if (lbe != nullptr && lbe->handles(c, locale)) {
+ return lbe;
}
}
-
+
// We didn't find an engine. Create one.
- lbe = loadEngineFor(c);
+ lbe = loadEngineFor(c, locale);
if (lbe != nullptr) {
fEngines->push((void *)lbe, status);
}
@@ -162,7 +163,7 @@ ICULanguageBreakFactory::getEngineFor(UChar32 c) {
}
const LanguageBreakEngine *
-ICULanguageBreakFactory::loadEngineFor(UChar32 c) {
+ICULanguageBreakFactory::loadEngineFor(UChar32 c, const char*) {
UErrorCode status = U_ZERO_ERROR;
UScriptCode code = uscript_getScript(c, &status);
if (U_SUCCESS(status)) {
@@ -185,7 +186,7 @@ ICULanguageBreakFactory::loadEngineFor(UChar32 c) {
}
status = U_ZERO_ERROR; // fallback to dictionary based
DictionaryMatcher *m = loadDictionaryMatcherFor(code);
- if (m != NULL) {
+ if (m != nullptr) {
switch(code) {
case USCRIPT_THAI:
engine = new ThaiBreakEngine(m, status);
@@ -230,17 +231,17 @@ ICULanguageBreakFactory::loadEngineFor(UChar32 c) {
default:
break;
}
- if (engine == NULL) {
+ if (engine == nullptr) {
delete m;
}
else if (U_FAILURE(status)) {
delete engine;
- engine = NULL;
+ engine = nullptr;
}
return engine;
}
}
- return NULL;
+ return nullptr;
}
DictionaryMatcher *
@@ -250,16 +251,16 @@ ICULanguageBreakFactory::loadDictionaryMatcherFor(UScriptCode script) {
UResourceBundle *b = ures_open(U_ICUDATA_BRKITR, "", &status);
b = ures_getByKeyWithFallback(b, "dictionaries", b, &status);
int32_t dictnlength = 0;
- const UChar *dictfname =
+ const char16_t *dictfname =
ures_getStringByKeyWithFallback(b, uscript_getShortName(script), &dictnlength, &status);
if (U_FAILURE(status)) {
ures_close(b);
- return NULL;
+ return nullptr;
}
CharString dictnbuf;
CharString ext;
- const UChar *extStart = u_memrchr(dictfname, 0x002e, dictnlength); // last dot
- if (extStart != NULL) {
+ const char16_t *extStart = u_memrchr(dictfname, 0x002e, dictnlength); // last dot
+ if (extStart != nullptr) {
int32_t len = (int32_t)(extStart - dictfname);
ext.appendInvariantChars(UnicodeString(false, extStart + 1, dictnlength - len - 1), status);
dictnlength = len;
@@ -274,29 +275,93 @@ ICULanguageBreakFactory::loadDictionaryMatcherFor(UScriptCode script) {
const int32_t *indexes = (const int32_t *)data;
const int32_t offset = indexes[DictionaryData::IX_STRING_TRIE_OFFSET];
const int32_t trieType = indexes[DictionaryData::IX_TRIE_TYPE] & DictionaryData::TRIE_TYPE_MASK;
- DictionaryMatcher *m = NULL;
+ DictionaryMatcher *m = nullptr;
if (trieType == DictionaryData::TRIE_TYPE_BYTES) {
const int32_t transform = indexes[DictionaryData::IX_TRANSFORM];
const char *characters = (const char *)(data + offset);
m = new BytesDictionaryMatcher(characters, transform, file);
}
else if (trieType == DictionaryData::TRIE_TYPE_UCHARS) {
- const UChar *characters = (const UChar *)(data + offset);
+ const char16_t *characters = (const char16_t *)(data + offset);
m = new UCharsDictionaryMatcher(characters, file);
}
- if (m == NULL) {
+ if (m == nullptr) {
// no matcher exists to take ownership - either we are an invalid
// type or memory allocation failed
udata_close(file);
}
return m;
- } else if (dictfname != NULL) {
+ } else if (dictfname != nullptr) {
// we don't have a dictionary matcher.
- // returning NULL here will cause us to fail to find a dictionary break engine, as expected
+ // returning nullptr here will cause us to fail to find a dictionary break engine, as expected
status = U_ZERO_ERROR;
- return NULL;
+ return nullptr;
+ }
+ return nullptr;
+}
+
+
+void ICULanguageBreakFactory::addExternalEngine(
+ ExternalBreakEngine* external, UErrorCode& status) {
+ LocalPointer<ExternalBreakEngine> engine(external, status);
+ ensureEngines(status);
+ LocalPointer<BreakEngineWrapper> wrapper(
+ new BreakEngineWrapper(engine.orphan(), status), status);
+ static UMutex gBreakEngineMutex;
+ Mutex m(&gBreakEngineMutex);
+ fEngines->push(wrapper.getAlias(), status);
+ wrapper.orphan();
+}
+
+BreakEngineWrapper::BreakEngineWrapper(
+ ExternalBreakEngine* engine, UErrorCode &status) : delegate(engine, status) {
+}
+
+BreakEngineWrapper::~BreakEngineWrapper() {
+}
+
+UBool BreakEngineWrapper::handles(UChar32 c, const char* locale) const {
+ return delegate->isFor(c, locale);
+}
+
+int32_t BreakEngineWrapper::findBreaks(
+ UText *text,
+ int32_t startPos,
+ int32_t endPos,
+ UVector32 &foundBreaks,
+ UBool /* isPhraseBreaking */,
+ UErrorCode &status) const {
+ if (U_FAILURE(status)) return 0;
+ int32_t result = 0;
+
+ // Find the span of characters included in the set.
+ // The span to break begins at the current position in the text, and
+ // extends towards the start or end of the text, depending on 'reverse'.
+
+ utext_setNativeIndex(text, startPos);
+ int32_t start = (int32_t)utext_getNativeIndex(text);
+ int32_t current;
+ int32_t rangeStart;
+ int32_t rangeEnd;
+ UChar32 c = utext_current32(text);
+ while((current = (int32_t)utext_getNativeIndex(text)) < endPos && delegate->handles(c)) {
+ utext_next32(text); // TODO: recast loop for postincrement
+ c = utext_current32(text);
}
- return NULL;
+ rangeStart = start;
+ rangeEnd = current;
+ int32_t beforeSize = foundBreaks.size();
+ int32_t additionalCapacity = rangeEnd - rangeStart + 1;
+ // enlarge to contains (rangeEnd-rangeStart+1) more items
+ foundBreaks.ensureCapacity(beforeSize+additionalCapacity, status);
+ if (U_FAILURE(status)) return 0;
+ foundBreaks.setSize(beforeSize + beforeSize+additionalCapacity);
+ result = delegate->fillBreaks(text, rangeStart, rangeEnd, foundBreaks.getBuffer()+beforeSize,
+ additionalCapacity, status);
+ if (U_FAILURE(status)) return 0;
+ foundBreaks.setSize(beforeSize + result);
+ utext_setNativeIndex(text, current);
+ return result;
}
U_NAMESPACE_END
diff --git a/Build/source/libs/icu/icu-src/source/common/brkeng.h b/Build/source/libs/icu/icu-src/source/common/brkeng.h
index 127ba59e186..42a3d697cfe 100644
--- a/Build/source/libs/icu/icu-src/source/common/brkeng.h
+++ b/Build/source/libs/icu/icu-src/source/common/brkeng.h
@@ -10,6 +10,7 @@
#ifndef BRKENG_H
#define BRKENG_H
+#include "unicode/umisc.h"
#include "unicode/utypes.h"
#include "unicode/uobject.h"
#include "unicode/utext.h"
@@ -21,6 +22,7 @@ class UnicodeSet;
class UStack;
class UVector32;
class DictionaryMatcher;
+class ExternalBreakEngine;
/*******************************************************************
* LanguageBreakEngine
@@ -35,7 +37,7 @@ class DictionaryMatcher;
* <p>LanguageBreakEngines should normally be implemented so as to
* be shared between threads without locking.</p>
*/
-class LanguageBreakEngine : public UMemory {
+class LanguageBreakEngine : public UObject {
public:
/**
@@ -54,10 +56,11 @@ class LanguageBreakEngine : public UMemory {
* a particular kind of break.</p>
*
* @param c A character which begins a run that the engine might handle
+ * @param locale The locale.
* @return true if this engine handles the particular character and break
* type.
*/
- virtual UBool handles(UChar32 c) const = 0;
+ virtual UBool handles(UChar32 c, const char* locale) const = 0;
/**
* <p>Find any breaks within a run in the supplied text.</p>
@@ -81,6 +84,35 @@ class LanguageBreakEngine : public UMemory {
};
/*******************************************************************
+ * BreakEngineWrapper
+ */
+
+/**
+ * <p>BreakEngineWrapper implement LanguageBreakEngine by
+ * a thin wrapper that delegate the task to ExternalBreakEngine
+ * </p>
+ */
+class BreakEngineWrapper : public LanguageBreakEngine {
+ public:
+
+ BreakEngineWrapper(ExternalBreakEngine* engine, UErrorCode &status);
+
+ virtual ~BreakEngineWrapper();
+
+ virtual UBool handles(UChar32 c, const char* locale) const override;
+
+ virtual int32_t findBreaks( UText *text,
+ int32_t startPos,
+ int32_t endPos,
+ UVector32 &foundBreaks,
+ UBool isPhraseBreaking,
+ UErrorCode &status) const override;
+
+ private:
+ LocalPointer<ExternalBreakEngine> delegate;
+};
+
+/*******************************************************************
* LanguageBreakFactory
*/
@@ -125,9 +157,10 @@ class LanguageBreakFactory : public UMemory {
*
* @param c A character that begins a run for which a LanguageBreakEngine is
* sought.
+ * @param locale The locale.
* @return A LanguageBreakEngine with the desired characteristics, or 0.
*/
- virtual const LanguageBreakEngine *getEngineFor(UChar32 c) = 0;
+ virtual const LanguageBreakEngine *getEngineFor(UChar32 c, const char* locale) = 0;
};
@@ -174,10 +207,11 @@ class UnhandledEngine : public LanguageBreakEngine {
* a particular kind of break.</p>
*
* @param c A character which begins a run that the engine might handle
+ * @param locale The locale.
* @return true if this engine handles the particular character and break
* type.
*/
- virtual UBool handles(UChar32 c) const override;
+ virtual UBool handles(UChar32 c, const char* locale) const override;
/**
* <p>Find any breaks within a run in the supplied text.</p>
@@ -247,9 +281,18 @@ class ICULanguageBreakFactory : public LanguageBreakFactory {
*
* @param c A character that begins a run for which a LanguageBreakEngine is
* sought.
+ * @param locale The locale.
* @return A LanguageBreakEngine with the desired characteristics, or 0.
*/
- virtual const LanguageBreakEngine *getEngineFor(UChar32 c) override;
+ virtual const LanguageBreakEngine *getEngineFor(UChar32 c, const char* locale) override;
+
+ /**
+ * Add and adopt the engine and return an URegistryKey.
+ * @param engine The ExternalBreakEngine to be added and adopt. The caller
+ * pass the ownership and should not release the memory after this.
+ * @param status the error code.
+ */
+ virtual void addExternalEngine(ExternalBreakEngine* engine, UErrorCode& status);
protected:
/**
@@ -258,17 +301,21 @@ protected:
*
* @param c A character that begins a run for which a LanguageBreakEngine is
* sought.
+ * @param locale The locale.
* @return A LanguageBreakEngine with the desired characteristics, or 0.
*/
- virtual const LanguageBreakEngine *loadEngineFor(UChar32 c);
+ virtual const LanguageBreakEngine *loadEngineFor(UChar32 c, const char* locale);
/**
* <p>Create a DictionaryMatcher for the specified script and break type.</p>
* @param script An ISO 15924 script code that identifies the dictionary to be
* created.
- * @return A DictionaryMatcher with the desired characteristics, or NULL.
+ * @return A DictionaryMatcher with the desired characteristics, or nullptr.
*/
virtual DictionaryMatcher *loadDictionaryMatcherFor(UScriptCode script);
+
+ private:
+ void ensureEngines(UErrorCode& status);
};
U_NAMESPACE_END
diff --git a/Build/source/libs/icu/icu-src/source/common/brkiter.cpp b/Build/source/libs/icu/icu-src/source/common/brkiter.cpp
index d6996734e3c..b452cf2c050 100644
--- a/Build/source/libs/icu/icu-src/source/common/brkiter.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/brkiter.cpp
@@ -27,6 +27,7 @@
#include "unicode/rbbi.h"
#include "unicode/brkiter.h"
#include "unicode/udata.h"
+#include "unicode/uloc.h"
#include "unicode/ures.h"
#include "unicode/ustring.h"
#include "unicode/filteredbrk.h"
@@ -60,15 +61,15 @@ BreakIterator::buildInstance(const Locale& loc, const char *type, UErrorCode &st
char ext[4]={'\0'};
CharString actualLocale;
int32_t size;
- const UChar* brkfname = NULL;
+ const char16_t* brkfname = nullptr;
UResourceBundle brkRulesStack;
UResourceBundle brkNameStack;
UResourceBundle *brkRules = &brkRulesStack;
UResourceBundle *brkName = &brkNameStack;
- RuleBasedBreakIterator *result = NULL;
+ RuleBasedBreakIterator *result = nullptr;
if (U_FAILURE(status))
- return NULL;
+ return nullptr;
ures_initStackObject(brkRules);
ures_initStackObject(brkName);
@@ -95,9 +96,9 @@ BreakIterator::buildInstance(const Locale& loc, const char *type, UErrorCode &st
if (U_SUCCESS(status) && brkfname) {
actualLocale.append(ures_getLocaleInternal(brkName, &status), -1, status);
- UChar* extStart=u_strchr(brkfname, 0x002e);
+ char16_t* extStart=u_strchr(brkfname, 0x002e);
int len = 0;
- if(extStart!=NULL){
+ if (extStart != nullptr){
len = (int)(extStart-brkfname);
u_UCharsToChars(extStart+1, ext, sizeof(ext)); // nul terminates the buff
u_UCharsToChars(brkfname, fnbuff, len);
@@ -112,27 +113,30 @@ BreakIterator::buildInstance(const Locale& loc, const char *type, UErrorCode &st
UDataMemory* file = udata_open(U_ICUDATA_BRKITR, ext, fnbuff, &status);
if (U_FAILURE(status)) {
ures_close(b);
- return NULL;
+ return nullptr;
}
// Create a RuleBasedBreakIterator
- result = new RuleBasedBreakIterator(file, uprv_strstr(type, "phrase") != NULL, status);
+ result = new RuleBasedBreakIterator(file, uprv_strstr(type, "phrase") != nullptr, status);
// If there is a result, set the valid locale and actual locale, and the kind
- if (U_SUCCESS(status) && result != NULL) {
+ if (U_SUCCESS(status) && result != nullptr) {
U_LOCALE_BASED(locBased, *(BreakIterator*)result);
+
locBased.setLocaleIDs(ures_getLocaleByType(b, ULOC_VALID_LOCALE, &status),
actualLocale.data());
+ uprv_strncpy(result->requestLocale, loc.getName(), ULOC_FULLNAME_CAPACITY);
+ result->requestLocale[ULOC_FULLNAME_CAPACITY-1] = 0; // always terminate
}
ures_close(b);
- if (U_FAILURE(status) && result != NULL) { // Sometimes redundant check, but simple
+ if (U_FAILURE(status) && result != nullptr) { // Sometimes redundant check, but simple
delete result;
- return NULL;
+ return nullptr;
}
- if (result == NULL) {
+ if (result == nullptr) {
udata_close(file);
if (U_SUCCESS(status)) {
status = U_MEMORY_ALLOCATION_ERROR;
@@ -202,18 +206,20 @@ BreakIterator::getAvailableLocales(int32_t& count)
BreakIterator::BreakIterator()
{
- *validLocale = *actualLocale = 0;
+ *validLocale = *actualLocale = *requestLocale = 0;
}
BreakIterator::BreakIterator(const BreakIterator &other) : UObject(other) {
uprv_strncpy(actualLocale, other.actualLocale, sizeof(actualLocale));
uprv_strncpy(validLocale, other.validLocale, sizeof(validLocale));
+ uprv_strncpy(requestLocale, other.requestLocale, sizeof(requestLocale));
}
BreakIterator &BreakIterator::operator =(const BreakIterator &other) {
if (this != &other) {
uprv_strncpy(actualLocale, other.actualLocale, sizeof(actualLocale));
uprv_strncpy(validLocale, other.validLocale, sizeof(validLocale));
+ uprv_strncpy(requestLocale, other.requestLocale, sizeof(requestLocale));
}
return *this;
}
@@ -260,7 +266,7 @@ public:
}
virtual UObject* handleDefault(const ICUServiceKey& key, UnicodeString* /*actualID*/, UErrorCode& status) const override {
- LocaleKey& lkey = (LocaleKey&)key;
+ LocaleKey& lkey = static_cast<LocaleKey&>(const_cast<ICUServiceKey&>(key));
int32_t kind = lkey.kind();
Locale loc;
lkey.currentLocale(loc);
@@ -280,7 +286,7 @@ ICUBreakIteratorService::~ICUBreakIteratorService() {}
U_NAMESPACE_END
static icu::UInitOnce gInitOnceBrkiter {};
-static icu::ICULocaleService* gService = NULL;
+static icu::ICULocaleService* gService = nullptr;
@@ -288,11 +294,11 @@ static icu::ICULocaleService* gService = NULL;
* Release all static memory held by breakiterator.
*/
U_CDECL_BEGIN
-static UBool U_CALLCONV breakiterator_cleanup(void) {
+static UBool U_CALLCONV breakiterator_cleanup() {
#if !UCONFIG_NO_SERVICE
if (gService) {
delete gService;
- gService = NULL;
+ gService = nullptr;
}
gInitOnceBrkiter.reset();
#endif
@@ -302,13 +308,13 @@ U_CDECL_END
U_NAMESPACE_BEGIN
static void U_CALLCONV
-initService(void) {
+initService() {
gService = new ICUBreakIteratorService();
ucln_common_registerCleanup(UCLN_COMMON_BREAKITERATOR, breakiterator_cleanup);
}
static ICULocaleService*
-getService(void)
+getService()
{
umtx_initOnce(gInitOnceBrkiter, &initService);
return gService;
@@ -318,9 +324,9 @@ getService(void)
// -------------------------------------
static inline UBool
-hasService(void)
+hasService()
{
- return !gInitOnceBrkiter.isReset() && getService() != NULL;
+ return !gInitOnceBrkiter.isReset() && getService() != nullptr;
}
// -------------------------------------
@@ -329,9 +335,9 @@ URegistryKey U_EXPORT2
BreakIterator::registerInstance(BreakIterator* toAdopt, const Locale& locale, UBreakIteratorType kind, UErrorCode& status)
{
ICULocaleService *service = getService();
- if (service == NULL) {
+ if (service == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
return service->registerInstance(toAdopt, locale, kind, status);
}
@@ -353,11 +359,11 @@ BreakIterator::unregister(URegistryKey key, UErrorCode& status)
// -------------------------------------
StringEnumeration* U_EXPORT2
-BreakIterator::getAvailableLocales(void)
+BreakIterator::getAvailableLocales()
{
ICULocaleService *service = getService();
- if (service == NULL) {
- return NULL;
+ if (service == nullptr) {
+ return nullptr;
}
return service->getAvailableLocales();
}
@@ -369,7 +375,7 @@ BreakIterator*
BreakIterator::createInstance(const Locale& loc, int32_t kind, UErrorCode& status)
{
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
#if !UCONFIG_NO_SERVICE
@@ -386,7 +392,7 @@ BreakIterator::createInstance(const Locale& loc, int32_t kind, UErrorCode& statu
// handleDefault calls), so we don't touch it. YES, A COMMENT
// THIS LONG is a sign of bad code -- so the action item is to
// revisit this in ICU 3.0 and clean it up/fix it/remove it.
- if (U_SUCCESS(status) && (result != NULL) && *actualLoc.getName() != 0) {
+ if (U_SUCCESS(status) && (result != nullptr) && *actualLoc.getName() != 0) {
U_LOCALE_BASED(locBased, *result);
locBased.setLocaleIDs(actualLoc.getName(), actualLoc.getName());
}
@@ -407,10 +413,10 @@ BreakIterator::makeInstance(const Locale& loc, int32_t kind, UErrorCode& status)
{
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
- BreakIterator *result = NULL;
+ BreakIterator *result = nullptr;
switch (kind) {
case UBRK_CHARACTER:
{
@@ -439,8 +445,8 @@ BreakIterator::makeInstance(const Locale& loc, int32_t kind, UErrorCode& status)
uprv_strcat(lb_lw, "_");
uprv_strcat(lb_lw, value.data());
}
- // lw=phrase is only supported in Japanese.
- if (uprv_strcmp(loc.getLanguage(), "ja") == 0) {
+ // lw=phrase is only supported in Japanese and Korean
+ if (uprv_strcmp(loc.getLanguage(), "ja") == 0 || uprv_strcmp(loc.getLanguage(), "ko") == 0) {
value.clear();
loc.getKeywordValue("lw", valueSink, kvStatus);
if (U_SUCCESS(kvStatus) && value == "phrase") {
@@ -485,7 +491,7 @@ BreakIterator::makeInstance(const Locale& loc, int32_t kind, UErrorCode& status)
}
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
return result;
@@ -493,12 +499,18 @@ BreakIterator::makeInstance(const Locale& loc, int32_t kind, UErrorCode& status)
Locale
BreakIterator::getLocale(ULocDataLocaleType type, UErrorCode& status) const {
+ if (type == ULOC_REQUESTED_LOCALE) {
+ return Locale(requestLocale);
+ }
U_LOCALE_BASED(locBased, *this);
return locBased.getLocale(type, status);
}
const char *
BreakIterator::getLocaleID(ULocDataLocaleType type, UErrorCode& status) const {
+ if (type == ULOC_REQUESTED_LOCALE) {
+ return requestLocale;
+ }
U_LOCALE_BASED(locBased, *this);
return locBased.getLocaleID(type, status);
}
diff --git a/Build/source/libs/icu/icu-src/source/common/bytestream.cpp b/Build/source/libs/icu/icu-src/source/common/bytestream.cpp
index c14f206dfe4..bd870cd3b2f 100644
--- a/Build/source/libs/icu/icu-src/source/common/bytestream.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/bytestream.cpp
@@ -20,7 +20,7 @@ char* ByteSink::GetAppendBuffer(int32_t min_capacity,
int32_t* result_capacity) {
if (min_capacity < 1 || scratch_capacity < min_capacity) {
*result_capacity = 0;
- return NULL;
+ return nullptr;
}
*result_capacity = scratch_capacity;
return scratch;
@@ -70,7 +70,7 @@ char* CheckedArrayByteSink::GetAppendBuffer(int32_t min_capacity,
int32_t* result_capacity) {
if (min_capacity < 1 || scratch_capacity < min_capacity) {
*result_capacity = 0;
- return NULL;
+ return nullptr;
}
int32_t available = capacity_ - size_;
if (available >= min_capacity) {
diff --git a/Build/source/libs/icu/icu-src/source/common/bytestrie.cpp b/Build/source/libs/icu/icu-src/source/common/bytestrie.cpp
index c272cc40221..532ea9e9c0a 100644
--- a/Build/source/libs/icu/icu-src/source/common/bytestrie.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/bytestrie.cpp
@@ -68,7 +68,7 @@ BytesTrie::jumpByDelta(const uint8_t *pos) {
UStringTrieResult
BytesTrie::current() const {
const uint8_t *pos=pos_;
- if(pos==NULL) {
+ if(pos==nullptr) {
return USTRINGTRIE_NO_MATCH;
} else {
int32_t node;
@@ -182,7 +182,7 @@ BytesTrie::nextImpl(const uint8_t *pos, int32_t inByte) {
UStringTrieResult
BytesTrie::next(int32_t inByte) {
const uint8_t *pos=pos_;
- if(pos==NULL) {
+ if(pos==nullptr) {
return USTRINGTRIE_NO_MATCH;
}
if(inByte<0) {
@@ -212,7 +212,7 @@ BytesTrie::next(const char *s, int32_t sLength) {
return current();
}
const uint8_t *pos=pos_;
- if(pos==NULL) {
+ if(pos==nullptr) {
return USTRINGTRIE_NO_MATCH;
}
int32_t length=remainingMatchLength_; // Actual remaining match length minus 1.
@@ -317,8 +317,8 @@ BytesTrie::findUniqueValueFromBranch(const uint8_t *pos, int32_t length,
UBool haveUniqueValue, int32_t &uniqueValue) {
while(length>kMaxBranchLinearSubNodeLength) {
++pos; // ignore the comparison byte
- if(NULL==findUniqueValueFromBranch(jumpByDelta(pos), length>>1, haveUniqueValue, uniqueValue)) {
- return NULL;
+ if(nullptr==findUniqueValueFromBranch(jumpByDelta(pos), length>>1, haveUniqueValue, uniqueValue)) {
+ return nullptr;
}
length=length-(length>>1);
pos=skipDelta(pos);
@@ -333,7 +333,7 @@ BytesTrie::findUniqueValueFromBranch(const uint8_t *pos, int32_t length,
if(isFinal) {
if(haveUniqueValue) {
if(value!=uniqueValue) {
- return NULL;
+ return nullptr;
}
} else {
uniqueValue=value;
@@ -341,7 +341,7 @@ BytesTrie::findUniqueValueFromBranch(const uint8_t *pos, int32_t length,
}
} else {
if(!findUniqueValue(pos+value, haveUniqueValue, uniqueValue)) {
- return NULL;
+ return nullptr;
}
haveUniqueValue=true;
}
@@ -358,7 +358,7 @@ BytesTrie::findUniqueValue(const uint8_t *pos, UBool haveUniqueValue, int32_t &u
node=*pos++;
}
pos=findUniqueValueFromBranch(pos, node+1, haveUniqueValue, uniqueValue);
- if(pos==NULL) {
+ if(pos==nullptr) {
return false;
}
haveUniqueValue=true;
@@ -387,7 +387,7 @@ BytesTrie::findUniqueValue(const uint8_t *pos, UBool haveUniqueValue, int32_t &u
int32_t
BytesTrie::getNextBytes(ByteSink &out) const {
const uint8_t *pos=pos_;
- if(pos==NULL) {
+ if(pos==nullptr) {
return 0;
}
if(remainingMatchLength_>=0) {
diff --git a/Build/source/libs/icu/icu-src/source/common/bytestriebuilder.cpp b/Build/source/libs/icu/icu-src/source/common/bytestriebuilder.cpp
index ac7d3d867e5..876e0dfa160 100644
--- a/Build/source/libs/icu/icu-src/source/common/bytestriebuilder.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/bytestriebuilder.cpp
@@ -127,13 +127,13 @@ BytesTrieElement::compareStringTo(const BytesTrieElement &other, const CharStrin
}
BytesTrieBuilder::BytesTrieBuilder(UErrorCode &errorCode)
- : strings(NULL), elements(NULL), elementsCapacity(0), elementsLength(0),
- bytes(NULL), bytesCapacity(0), bytesLength(0) {
+ : strings(nullptr), elements(nullptr), elementsCapacity(0), elementsLength(0),
+ bytes(nullptr), bytesCapacity(0), bytesLength(0) {
if(U_FAILURE(errorCode)) {
return;
}
strings=new CharString();
- if(strings==NULL) {
+ if(strings==nullptr) {
errorCode=U_MEMORY_ALLOCATION_ERROR;
}
}
@@ -162,7 +162,7 @@ BytesTrieBuilder::add(StringPiece s, int32_t value, UErrorCode &errorCode) {
newCapacity=4*elementsCapacity;
}
BytesTrieElement *newElements=new BytesTrieElement[newCapacity];
- if(newElements==NULL) {
+ if(newElements==nullptr) {
errorCode=U_MEMORY_ALLOCATION_ERROR;
return *this; // error instead of dereferencing null
}
@@ -192,13 +192,13 @@ U_CDECL_END
BytesTrie *
BytesTrieBuilder::build(UStringTrieBuildOption buildOption, UErrorCode &errorCode) {
buildBytes(buildOption, errorCode);
- BytesTrie *newTrie=NULL;
+ BytesTrie *newTrie=nullptr;
if(U_SUCCESS(errorCode)) {
newTrie=new BytesTrie(bytes, bytes+(bytesCapacity-bytesLength));
- if(newTrie==NULL) {
+ if(newTrie==nullptr) {
errorCode=U_MEMORY_ALLOCATION_ERROR;
} else {
- bytes=NULL; // The new trie now owns the array.
+ bytes=nullptr; // The new trie now owns the array.
bytesCapacity=0;
}
}
@@ -220,7 +220,7 @@ BytesTrieBuilder::buildBytes(UStringTrieBuildOption buildOption, UErrorCode &err
if(U_FAILURE(errorCode)) {
return;
}
- if(bytes!=NULL && bytesLength>0) {
+ if(bytes!=nullptr && bytesLength>0) {
// Already built.
return;
}
@@ -256,7 +256,7 @@ BytesTrieBuilder::buildBytes(UStringTrieBuildOption buildOption, UErrorCode &err
if(bytesCapacity<capacity) {
uprv_free(bytes);
bytes=static_cast<char *>(uprv_malloc(capacity));
- if(bytes==NULL) {
+ if(bytes==nullptr) {
errorCode=U_MEMORY_ALLOCATION_ERROR;
bytesCapacity=0;
return;
@@ -264,7 +264,7 @@ BytesTrieBuilder::buildBytes(UStringTrieBuildOption buildOption, UErrorCode &err
bytesCapacity=capacity;
}
StringTrieBuilder::build(buildOption, elementsLength, errorCode);
- if(bytes==NULL) {
+ if(bytes==nullptr) {
errorCode=U_MEMORY_ALLOCATION_ERROR;
}
}
@@ -282,7 +282,7 @@ BytesTrieBuilder::getElementStringLength(int32_t i) const {
return elements[i].getStringLength(*strings);
}
-UChar
+char16_t
BytesTrieBuilder::getElementUnit(int32_t i, int32_t byteIndex) const {
return (uint8_t)elements[i].charAt(byteIndex, *strings);
}
@@ -329,7 +329,7 @@ BytesTrieBuilder::skipElementsBySomeUnits(int32_t i, int32_t byteIndex, int32_t
}
int32_t
-BytesTrieBuilder::indexOfElementWithNextUnit(int32_t i, int32_t byteIndex, UChar byte) const {
+BytesTrieBuilder::indexOfElementWithNextUnit(int32_t i, int32_t byteIndex, char16_t byte) const {
char b=(char)byte;
while(b==elements[i].charAt(byteIndex, *strings)) {
++i;
@@ -351,13 +351,13 @@ BytesTrieBuilder::BTLinearMatchNode::operator==(const Node &other) const {
if(!LinearMatchNode::operator==(other)) {
return false;
}
- const BTLinearMatchNode &o=(const BTLinearMatchNode &)other;
+ const BTLinearMatchNode &o=static_cast<const BTLinearMatchNode &>(other);
return 0==uprv_memcmp(s, o.s, length);
}
void
BytesTrieBuilder::BTLinearMatchNode::write(StringTrieBuilder &builder) {
- BytesTrieBuilder &b=(BytesTrieBuilder &)builder;
+ BytesTrieBuilder &b=static_cast<BytesTrieBuilder &>(builder);
next->write(builder);
b.write(s, length);
offset=b.write(b.getMinLinearMatch()+length-1);
@@ -374,7 +374,7 @@ BytesTrieBuilder::createLinearMatchNode(int32_t i, int32_t byteIndex, int32_t le
UBool
BytesTrieBuilder::ensureCapacity(int32_t length) {
- if(bytes==NULL) {
+ if(bytes==nullptr) {
return false; // previous memory allocation had failed
}
if(length>bytesCapacity) {
@@ -383,10 +383,10 @@ BytesTrieBuilder::ensureCapacity(int32_t length) {
newCapacity*=2;
} while(newCapacity<=length);
char *newBytes=static_cast<char *>(uprv_malloc(newCapacity));
- if(newBytes==NULL) {
+ if(newBytes==nullptr) {
// unable to allocate memory
uprv_free(bytes);
- bytes=NULL;
+ bytes=nullptr;
bytesCapacity=0;
return false;
}
diff --git a/Build/source/libs/icu/icu-src/source/common/bytestrieiterator.cpp b/Build/source/libs/icu/icu-src/source/common/bytestrieiterator.cpp
index eacb7eedb0d..65f54be48ae 100644
--- a/Build/source/libs/icu/icu-src/source/common/bytestrieiterator.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/bytestrieiterator.cpp
@@ -27,7 +27,7 @@ BytesTrie::Iterator::Iterator(const void *trieBytes, int32_t maxStringLength,
: bytes_(static_cast<const uint8_t *>(trieBytes)),
pos_(bytes_), initialPos_(bytes_),
remainingMatchLength_(-1), initialRemainingMatchLength_(-1),
- str_(NULL), maxLength_(maxStringLength), value_(0), stack_(NULL) {
+ str_(nullptr), maxLength_(maxStringLength), value_(0), stack_(nullptr) {
if(U_FAILURE(errorCode)) {
return;
}
@@ -39,7 +39,7 @@ BytesTrie::Iterator::Iterator(const void *trieBytes, int32_t maxStringLength,
// cost is minimal.
str_=new CharString();
stack_=new UVector32(errorCode);
- if(U_SUCCESS(errorCode) && (str_==NULL || stack_==NULL)) {
+ if(U_SUCCESS(errorCode) && (str_==nullptr || stack_==nullptr)) {
errorCode=U_MEMORY_ALLOCATION_ERROR;
}
}
@@ -49,7 +49,7 @@ BytesTrie::Iterator::Iterator(const BytesTrie &trie, int32_t maxStringLength,
: bytes_(trie.bytes_), pos_(trie.pos_), initialPos_(trie.pos_),
remainingMatchLength_(trie.remainingMatchLength_),
initialRemainingMatchLength_(trie.remainingMatchLength_),
- str_(NULL), maxLength_(maxStringLength), value_(0), stack_(NULL) {
+ str_(nullptr), maxLength_(maxStringLength), value_(0), stack_(nullptr) {
if(U_FAILURE(errorCode)) {
return;
}
@@ -58,7 +58,7 @@ BytesTrie::Iterator::Iterator(const BytesTrie &trie, int32_t maxStringLength,
if(U_FAILURE(errorCode)) {
return;
}
- if(str_==NULL || stack_==NULL) {
+ if(str_==nullptr || stack_==nullptr) {
errorCode=U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -96,7 +96,7 @@ BytesTrie::Iterator::reset() {
}
UBool
-BytesTrie::Iterator::hasNext() const { return pos_!=NULL || !stack_->isEmpty(); }
+BytesTrie::Iterator::hasNext() const { return pos_!=nullptr || !stack_->isEmpty(); }
UBool
BytesTrie::Iterator::next(UErrorCode &errorCode) {
@@ -104,7 +104,7 @@ BytesTrie::Iterator::next(UErrorCode &errorCode) {
return false;
}
const uint8_t *pos=pos_;
- if(pos==NULL) {
+ if(pos==nullptr) {
if(stack_->isEmpty()) {
return false;
}
@@ -118,7 +118,7 @@ BytesTrie::Iterator::next(UErrorCode &errorCode) {
length=(int32_t)((uint32_t)length>>16);
if(length>1) {
pos=branchNext(pos, length, errorCode);
- if(pos==NULL) {
+ if(pos==nullptr) {
return true; // Reached a final value.
}
} else {
@@ -137,7 +137,7 @@ BytesTrie::Iterator::next(UErrorCode &errorCode) {
UBool isFinal=(UBool)(node&kValueIsFinal);
value_=readValue(pos, node>>1);
if(isFinal || (maxLength_>0 && str_->length()==maxLength_)) {
- pos_=NULL;
+ pos_=nullptr;
} else {
pos_=skipValue(pos, node);
}
@@ -151,7 +151,7 @@ BytesTrie::Iterator::next(UErrorCode &errorCode) {
node=*pos++;
}
pos=branchNext(pos, node+1, errorCode);
- if(pos==NULL) {
+ if(pos==nullptr) {
return true; // Reached a final value.
}
} else {
@@ -170,12 +170,12 @@ BytesTrie::Iterator::next(UErrorCode &errorCode) {
StringPiece
BytesTrie::Iterator::getString() const {
- return str_ == NULL ? StringPiece() : str_->toStringPiece();
+ return str_ == nullptr ? StringPiece() : str_->toStringPiece();
}
UBool
BytesTrie::Iterator::truncateAndStop() {
- pos_=NULL;
+ pos_=nullptr;
value_=-1; // no real value for str
return true;
}
@@ -203,9 +203,9 @@ BytesTrie::Iterator::branchNext(const uint8_t *pos, int32_t length, UErrorCode &
stack_->addElement(((length-1)<<16)|str_->length(), errorCode);
str_->append((char)trieByte, errorCode);
if(isFinal) {
- pos_=NULL;
+ pos_=nullptr;
value_=value;
- return NULL;
+ return nullptr;
} else {
return pos+value;
}
diff --git a/Build/source/libs/icu/icu-src/source/common/caniter.cpp b/Build/source/libs/icu/icu-src/source/common/caniter.cpp
index 81f17265fbb..64a3c65d29a 100644
--- a/Build/source/libs/icu/icu-src/source/common/caniter.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/caniter.cpp
@@ -68,10 +68,10 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(CanonicalIterator)
*@param source string to get results for
*/
CanonicalIterator::CanonicalIterator(const UnicodeString &sourceStr, UErrorCode &status) :
- pieces(NULL),
+ pieces(nullptr),
pieces_length(0),
- pieces_lengths(NULL),
- current(NULL),
+ pieces_lengths(nullptr),
+ current(nullptr),
current_length(0),
nfd(*Normalizer2::getNFDInstance(status)),
nfcImpl(*Normalizer2Factory::getNFCImpl(status))
@@ -87,23 +87,23 @@ CanonicalIterator::~CanonicalIterator() {
void CanonicalIterator::cleanPieces() {
int32_t i = 0;
- if(pieces != NULL) {
+ if(pieces != nullptr) {
for(i = 0; i < pieces_length; i++) {
- if(pieces[i] != NULL) {
+ if(pieces[i] != nullptr) {
delete[] pieces[i];
}
}
uprv_free(pieces);
- pieces = NULL;
+ pieces = nullptr;
pieces_length = 0;
}
- if(pieces_lengths != NULL) {
+ if(pieces_lengths != nullptr) {
uprv_free(pieces_lengths);
- pieces_lengths = NULL;
+ pieces_lengths = nullptr;
}
- if(current != NULL) {
+ if(current != nullptr) {
uprv_free(current);
- current = NULL;
+ current = nullptr;
current_length = 0;
}
}
@@ -170,7 +170,7 @@ void CanonicalIterator::setSource(const UnicodeString &newSource, UErrorCode &st
UChar32 cp = 0;
int32_t start = 0;
int32_t i = 0;
- UnicodeString *list = NULL;
+ UnicodeString *list = nullptr;
nfd.normalize(newSource, source, status);
if(U_FAILURE(status)) {
@@ -187,7 +187,7 @@ void CanonicalIterator::setSource(const UnicodeString &newSource, UErrorCode &st
pieces_length = 1;
current = (int32_t*)uprv_malloc(1 * sizeof(int32_t));
current_length = 1;
- if (pieces == NULL || pieces_lengths == NULL || current == NULL) {
+ if (pieces == nullptr || pieces_lengths == nullptr || current == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
goto CleanPartialInitialization;
}
@@ -233,7 +233,7 @@ void CanonicalIterator::setSource(const UnicodeString &newSource, UErrorCode &st
pieces_lengths = (int32_t*)uprv_malloc(list_length * sizeof(int32_t));
current = (int32_t*)uprv_malloc(list_length * sizeof(int32_t));
current_length = list_length;
- if (pieces == NULL || pieces_lengths == NULL || current == NULL) {
+ if (pieces == nullptr || pieces_lengths == nullptr || current == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
goto CleanPartialInitialization;
}
@@ -252,7 +252,7 @@ void CanonicalIterator::setSource(const UnicodeString &newSource, UErrorCode &st
return;
// Common section to cleanup all local variables and reset object variables.
CleanPartialInitialization:
- if (list != NULL) {
+ if (list != nullptr) {
delete[] list;
}
cleanPieces();
@@ -276,7 +276,7 @@ void U_EXPORT2 CanonicalIterator::permute(UnicodeString &source, UBool skipZeros
// we check for length < 2 to keep from counting code points all the time
if (source.length() <= 2 && source.countChar32() <= 1) {
UnicodeString *toPut = new UnicodeString(source);
- /* test for NULL */
+ /* test for nullptr */
if (toPut == 0) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
@@ -295,7 +295,7 @@ void U_EXPORT2 CanonicalIterator::permute(UnicodeString &source, UBool skipZeros
for (i = 0; i < source.length(); i += U16_LENGTH(cp)) {
cp = source.char32At(i);
- const UHashElement *ne = NULL;
+ const UHashElement *ne = nullptr;
int32_t el = UHASH_FIRST;
UnicodeString subPermuteString = source;
@@ -321,11 +321,11 @@ void U_EXPORT2 CanonicalIterator::permute(UnicodeString &source, UBool skipZeros
// prefix this character to all of them
ne = subpermute.nextElement(el);
- while (ne != NULL) {
+ while (ne != nullptr) {
UnicodeString *permRes = (UnicodeString *)(ne->value.pointer);
UnicodeString *chStr = new UnicodeString(cp);
- //test for NULL
- if (chStr == NULL) {
+ //test for nullptr
+ if (chStr == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -352,7 +352,7 @@ UnicodeString* CanonicalIterator::getEquivalents(const UnicodeString &segment, i
permutations.setValueDeleter(uprv_deleteUObject);
basic.setValueDeleter(uprv_deleteUObject);
- UChar USeg[256];
+ char16_t USeg[256];
int32_t segLen = segment.extract(USeg, 256, status);
getEquivalents2(&basic, USeg, segLen, status);
@@ -360,23 +360,23 @@ UnicodeString* CanonicalIterator::getEquivalents(const UnicodeString &segment, i
// add only the ones that are canonically equivalent
// TODO: optimize by not permuting any class zero.
- const UHashElement *ne = NULL;
+ const UHashElement *ne = nullptr;
int32_t el = UHASH_FIRST;
//Iterator it = basic.iterator();
ne = basic.nextElement(el);
//while (it.hasNext())
- while (ne != NULL) {
+ while (ne != nullptr) {
//String item = (String) it.next();
UnicodeString item = *((UnicodeString *)(ne->value.pointer));
permutations.removeAll();
permute(item, CANITER_SKIP_ZEROES, &permutations, status);
- const UHashElement *ne2 = NULL;
+ const UHashElement *ne2 = nullptr;
int32_t el2 = UHASH_FIRST;
//Iterator it2 = permutations.iterator();
ne2 = permutations.nextElement(el2);
//while (it2.hasNext())
- while (ne2 != NULL) {
+ while (ne2 != nullptr) {
//String possible = (String) it2.next();
//UnicodeString *possible = new UnicodeString(*((UnicodeString *)(ne2->value.pointer)));
UnicodeString possible(*((UnicodeString *)(ne2->value.pointer)));
@@ -403,24 +403,24 @@ UnicodeString* CanonicalIterator::getEquivalents(const UnicodeString &segment, i
}
// convert into a String[] to clean up storage
//String[] finalResult = new String[result.size()];
- UnicodeString *finalResult = NULL;
+ UnicodeString *finalResult = nullptr;
int32_t resultCount;
if((resultCount = result.count()) != 0) {
finalResult = new UnicodeString[resultCount];
if (finalResult == 0) {
status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
}
else {
status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
//result.toArray(finalResult);
result_len = 0;
el = UHASH_FIRST;
ne = result.nextElement(el);
- while(ne != NULL) {
+ while(ne != nullptr) {
finalResult[result_len++] = *((UnicodeString *)(ne->value.pointer));
ne = result.nextElement(el);
}
@@ -429,10 +429,10 @@ UnicodeString* CanonicalIterator::getEquivalents(const UnicodeString &segment, i
return finalResult;
}
-Hashtable *CanonicalIterator::getEquivalents2(Hashtable *fillinResult, const UChar *segment, int32_t segLen, UErrorCode &status) {
+Hashtable *CanonicalIterator::getEquivalents2(Hashtable *fillinResult, const char16_t *segment, int32_t segLen, UErrorCode &status) {
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
//if (PROGRESS) printf("Adding: %s\n", UToS(Tr(segment)));
@@ -457,7 +457,7 @@ Hashtable *CanonicalIterator::getEquivalents2(Hashtable *fillinResult, const UCh
UChar32 cp2 = iter.getCodepoint();
Hashtable remainder(status);
remainder.setValueDeleter(uprv_deleteUObject);
- if (extract(&remainder, cp2, segment, segLen, i, status) == NULL) {
+ if (extract(&remainder, cp2, segment, segLen, i, status) == nullptr) {
continue;
}
@@ -467,13 +467,13 @@ Hashtable *CanonicalIterator::getEquivalents2(Hashtable *fillinResult, const UCh
int32_t el = UHASH_FIRST;
const UHashElement *ne = remainder.nextElement(el);
- while (ne != NULL) {
+ while (ne != nullptr) {
UnicodeString item = *((UnicodeString *)(ne->value.pointer));
UnicodeString *toAdd = new UnicodeString(prefix);
- /* test for NULL */
+ /* test for nullptr */
if (toAdd == 0) {
status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
*toAdd += item;
fillinResult->put(*toAdd, toAdd, status);
@@ -487,7 +487,7 @@ Hashtable *CanonicalIterator::getEquivalents2(Hashtable *fillinResult, const UCh
/* Test for buffer overflows */
if(U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
return fillinResult;
}
@@ -497,13 +497,13 @@ Hashtable *CanonicalIterator::getEquivalents2(Hashtable *fillinResult, const UCh
* (with canonical rearrangement!)
* If so, take the remainder, and return the equivalents
*/
-Hashtable *CanonicalIterator::extract(Hashtable *fillinResult, UChar32 comp, const UChar *segment, int32_t segLen, int32_t segmentPos, UErrorCode &status) {
+Hashtable *CanonicalIterator::extract(Hashtable *fillinResult, UChar32 comp, const char16_t *segment, int32_t segLen, int32_t segmentPos, UErrorCode &status) {
//Hashtable *CanonicalIterator::extract(UChar32 comp, const UnicodeString &segment, int32_t segLen, int32_t segmentPos, UErrorCode &status) {
//if (PROGRESS) printf(" extract: %s, ", UToS(Tr(UnicodeString(comp))));
//if (PROGRESS) printf("%s, %i\n", UToS(Tr(segment)), segmentPos);
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
UnicodeString temp(comp);
@@ -511,13 +511,13 @@ Hashtable *CanonicalIterator::extract(Hashtable *fillinResult, UChar32 comp, con
UnicodeString decompString;
nfd.normalize(temp, decompString, status);
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
if (decompString.isBogus()) {
status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
- const UChar *decomp=decompString.getBuffer();
+ const char16_t *decomp=decompString.getBuffer();
int32_t decompLen=decompString.length();
// See if it matches the start of segment (at segmentPos)
@@ -561,7 +561,7 @@ Hashtable *CanonicalIterator::extract(Hashtable *fillinResult, UChar32 comp, con
}
}
if (!ok)
- return NULL; // we failed, characters left over
+ return nullptr; // we failed, characters left over
//if (PROGRESS) printf("Matches\n");
@@ -575,7 +575,7 @@ Hashtable *CanonicalIterator::extract(Hashtable *fillinResult, UChar32 comp, con
UnicodeString trial;
nfd.normalize(temp, trial, status);
if(U_FAILURE(status) || trial.compare(segment+segmentPos, segLen - segmentPos) != 0) {
- return NULL;
+ return nullptr;
}
return getEquivalents2(fillinResult, temp.getBuffer()+inputLen, temp.length()-inputLen, status);
diff --git a/Build/source/libs/icu/icu-src/source/common/characterproperties.cpp b/Build/source/libs/icu/icu-src/source/common/characterproperties.cpp
index 2316a391a38..f1e15b488d5 100644
--- a/Build/source/libs/icu/icu-src/source/common/characterproperties.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/characterproperties.cpp
@@ -67,7 +67,7 @@ _set_addRange(USet *set, UChar32 start, UChar32 end) {
}
void U_CALLCONV
-_set_addString(USet *set, const UChar *str, int32_t length) {
+_set_addString(USet *set, const char16_t *str, int32_t length) {
((UnicodeSet *)set)->add(icu::UnicodeString((UBool)(length<0), str, length));
}
@@ -169,7 +169,7 @@ void U_CALLCONV initInclusion(UPropertySource src, UErrorCode &errorCode) {
case UPROPS_SRC_INPC:
case UPROPS_SRC_INSC:
case UPROPS_SRC_VO:
- uprops_addPropertyStarts((UPropertySource)src, &sa, &errorCode);
+ uprops_addPropertyStarts(src, &sa, &errorCode);
break;
case UPROPS_SRC_EMOJI: {
const icu::EmojiProps *ep = icu::EmojiProps::getSingleton(errorCode);
@@ -178,6 +178,14 @@ void U_CALLCONV initInclusion(UPropertySource src, UErrorCode &errorCode) {
}
break;
}
+ case UPROPS_SRC_IDSU:
+ // New in Unicode 15.1 for just two characters.
+ sa.add(sa.set, 0x2FFE);
+ sa.add(sa.set, 0x2FFF + 1);
+ break;
+ case UPROPS_SRC_ID_COMPAT_MATH:
+ uprops_addPropertyStarts(src, &sa, &errorCode);
+ break;
default:
errorCode = U_INTERNAL_PROGRAM_ERROR;
break;
@@ -377,22 +385,30 @@ UCPMap *makeMap(UProperty property, UErrorCode &errorCode) {
} // namespace
-U_NAMESPACE_USE
+U_NAMESPACE_BEGIN
-U_CAPI const USet * U_EXPORT2
-u_getBinaryPropertySet(UProperty property, UErrorCode *pErrorCode) {
- if (U_FAILURE(*pErrorCode)) { return nullptr; }
+const UnicodeSet *CharacterProperties::getBinaryPropertySet(UProperty property, UErrorCode &errorCode) {
+ if (U_FAILURE(errorCode)) { return nullptr; }
if (property < 0 || UCHAR_BINARY_LIMIT <= property) {
- *pErrorCode = U_ILLEGAL_ARGUMENT_ERROR;
+ errorCode = U_ILLEGAL_ARGUMENT_ERROR;
return nullptr;
}
Mutex m(&cpMutex);
UnicodeSet *set = sets[property];
if (set == nullptr) {
- sets[property] = set = makeSet(property, *pErrorCode);
+ sets[property] = set = makeSet(property, errorCode);
}
- if (U_FAILURE(*pErrorCode)) { return nullptr; }
- return set->toUSet();
+ return set;
+}
+
+U_NAMESPACE_END
+
+U_NAMESPACE_USE
+
+U_CAPI const USet * U_EXPORT2
+u_getBinaryPropertySet(UProperty property, UErrorCode *pErrorCode) {
+ const UnicodeSet *set = CharacterProperties::getBinaryPropertySet(property, *pErrorCode);
+ return U_SUCCESS(*pErrorCode) ? set->toUSet() : nullptr;
}
U_CAPI const UCPMap * U_EXPORT2
diff --git a/Build/source/libs/icu/icu-src/source/common/chariter.cpp b/Build/source/libs/icu/icu-src/source/common/chariter.cpp
index 887119a0eba..16f3b1e14d0 100644
--- a/Build/source/libs/icu/icu-src/source/common/chariter.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/chariter.cpp
@@ -85,14 +85,14 @@ CharacterIterator::operator=(const CharacterIterator &that) {
// implementing first[32]PostInc() directly in a subclass should be faster
// but these implementations make subclassing a little easier
-UChar
-CharacterIterator::firstPostInc(void) {
+char16_t
+CharacterIterator::firstPostInc() {
setToStart();
return nextPostInc();
}
UChar32
-CharacterIterator::first32PostInc(void) {
+CharacterIterator::first32PostInc() {
setToStart();
return next32PostInc();
}
diff --git a/Build/source/libs/icu/icu-src/source/common/charstr.cpp b/Build/source/libs/icu/icu-src/source/common/charstr.cpp
index 8a0994c7374..f76cc8a4dc9 100644
--- a/Build/source/libs/icu/icu-src/source/common/charstr.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/charstr.cpp
@@ -26,12 +26,12 @@
U_NAMESPACE_BEGIN
-CharString::CharString(CharString&& src) U_NOEXCEPT
+CharString::CharString(CharString&& src) noexcept
: buffer(std::move(src.buffer)), len(src.len) {
src.len = 0; // not strictly necessary because we make no guarantees on the source string
}
-CharString& CharString::operator=(CharString&& src) U_NOEXCEPT {
+CharString& CharString::operator=(CharString&& src) noexcept {
buffer = std::move(src.buffer);
len = src.len;
src.len = 0; // not strictly necessary because we make no guarantees on the source string
@@ -113,7 +113,7 @@ CharString &CharString::append(const char *s, int32_t sLength, UErrorCode &error
if(U_FAILURE(errorCode)) {
return *this;
}
- if(sLength<-1 || (s==NULL && sLength!=0)) {
+ if(sLength<-1 || (s==nullptr && sLength!=0)) {
errorCode=U_ILLEGAL_ARGUMENT_ERROR;
return *this;
}
@@ -181,7 +181,7 @@ char *CharString::getAppendBuffer(int32_t minCapacity,
UErrorCode &errorCode) {
if(U_FAILURE(errorCode)) {
resultCapacity=0;
- return NULL;
+ return nullptr;
}
int32_t appendCapacity=buffer.getCapacity()-len-1; // -1 for NUL
if(appendCapacity>=minCapacity) {
@@ -193,14 +193,14 @@ char *CharString::getAppendBuffer(int32_t minCapacity,
return buffer.getAlias()+len;
}
resultCapacity=0;
- return NULL;
+ return nullptr;
}
CharString &CharString::appendInvariantChars(const UnicodeString &s, UErrorCode &errorCode) {
return appendInvariantChars(s.getBuffer(), s.length(), errorCode);
}
-CharString &CharString::appendInvariantChars(const UChar* uchars, int32_t ucharsLen, UErrorCode &errorCode) {
+CharString &CharString::appendInvariantChars(const char16_t* uchars, int32_t ucharsLen, UErrorCode &errorCode) {
if(U_FAILURE(errorCode)) {
return *this;
}
@@ -226,8 +226,8 @@ UBool CharString::ensureCapacity(int32_t capacity,
if(desiredCapacityHint==0) {
desiredCapacityHint=capacity+buffer.getCapacity();
}
- if( (desiredCapacityHint<=capacity || buffer.resize(desiredCapacityHint, len+1)==NULL) &&
- buffer.resize(capacity, len+1)==NULL
+ if( (desiredCapacityHint<=capacity || buffer.resize(desiredCapacityHint, len+1)==nullptr) &&
+ buffer.resize(capacity, len+1)==nullptr
) {
errorCode=U_MEMORY_ALLOCATION_ERROR;
return false;
diff --git a/Build/source/libs/icu/icu-src/source/common/charstr.h b/Build/source/libs/icu/icu-src/source/common/charstr.h
index 92a75d3d2f9..7749a804b93 100644
--- a/Build/source/libs/icu/icu-src/source/common/charstr.h
+++ b/Build/source/libs/icu/icu-src/source/common/charstr.h
@@ -59,13 +59,13 @@ public:
* Move constructor; might leave src in an undefined state.
* This string will have the same contents and state that the source string had.
*/
- CharString(CharString &&src) U_NOEXCEPT;
+ CharString(CharString &&src) noexcept;
/**
* Move assignment operator; might leave src in an undefined state.
* This string will have the same contents and state that the source string had.
* The behavior is undefined if *this and src are the same object.
*/
- CharString &operator=(CharString &&src) U_NOEXCEPT;
+ CharString &operator=(CharString &&src) noexcept;
/**
* Replaces this string's contents with the other string's contents.
@@ -156,7 +156,7 @@ public:
UErrorCode &errorCode);
CharString &appendInvariantChars(const UnicodeString &s, UErrorCode &errorCode);
- CharString &appendInvariantChars(const UChar* uchars, int32_t ucharsLen, UErrorCode& errorCode);
+ CharString &appendInvariantChars(const char16_t* uchars, int32_t ucharsLen, UErrorCode& errorCode);
/**
* Appends a filename/path part, e.g., a directory name.
diff --git a/Build/source/libs/icu/icu-src/source/common/charstrmap.h b/Build/source/libs/icu/icu-src/source/common/charstrmap.h
index 3320a462085..64d5fd12542 100644
--- a/Build/source/libs/icu/icu-src/source/common/charstrmap.h
+++ b/Build/source/libs/icu/icu-src/source/common/charstrmap.h
@@ -26,7 +26,7 @@ public:
map = uhash_openSize(uhash_hashChars, uhash_compareChars, uhash_compareChars,
size, &errorCode);
}
- CharStringMap(CharStringMap &&other) U_NOEXCEPT : map(other.map) {
+ CharStringMap(CharStringMap &&other) noexcept : map(other.map) {
other.map = nullptr;
}
CharStringMap(const CharStringMap &other) = delete;
@@ -34,7 +34,7 @@ public:
uhash_close(map);
}
- CharStringMap &operator=(CharStringMap &&other) U_NOEXCEPT {
+ CharStringMap &operator=(CharStringMap &&other) noexcept {
map = other.map;
other.map = nullptr;
return *this;
diff --git a/Build/source/libs/icu/icu-src/source/common/cmemory.cpp b/Build/source/libs/icu/icu-src/source/common/cmemory.cpp
index 64f5034921f..e59d4b0efe3 100644
--- a/Build/source/libs/icu/icu-src/source/common/cmemory.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/cmemory.cpp
@@ -15,8 +15,8 @@
* If you have a need to replace ICU allocation, this is the
* place to do it.
*
-* Note that uprv_malloc(0) returns a non-NULL pointer, and
-* that a subsequent free of that pointer value is a NOP.
+* Note that uprv_malloc(0) returns a non-nullptr pointer,
+* and that a subsequent free of that pointer value is a NOP.
*
******************************************************************************
*/
@@ -103,7 +103,7 @@ uprv_free(void *buffer) {
U_CAPI void * U_EXPORT2
uprv_calloc(size_t num, size_t size) {
- void *mem = NULL;
+ void *mem = nullptr;
size *= num;
mem = uprv_malloc(size);
if (mem) {
@@ -118,7 +118,7 @@ u_setMemoryFunctions(const void *context, UMemAllocFn *a, UMemReallocFn *r, UMem
if (U_FAILURE(*status)) {
return;
}
- if (a==NULL || r==NULL || f==NULL) {
+ if (a==nullptr || r==nullptr || f==nullptr) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
@@ -129,10 +129,10 @@ u_setMemoryFunctions(const void *context, UMemAllocFn *a, UMemReallocFn *r, UMem
}
-U_CFUNC UBool cmemory_cleanup(void) {
- pContext = NULL;
- pAlloc = NULL;
- pRealloc = NULL;
- pFree = NULL;
+U_CFUNC UBool cmemory_cleanup() {
+ pContext = nullptr;
+ pAlloc = nullptr;
+ pRealloc = nullptr;
+ pFree = nullptr;
return true;
}
diff --git a/Build/source/libs/icu/icu-src/source/common/cmemory.h b/Build/source/libs/icu/icu-src/source/common/cmemory.h
index f03b7dcce6b..3705c2dfd0e 100644
--- a/Build/source/libs/icu/icu-src/source/common/cmemory.h
+++ b/Build/source/libs/icu/icu-src/source/common/cmemory.h
@@ -192,13 +192,13 @@ public:
* Constructor takes ownership.
* @param p simple pointer to an array of T items that is adopted
*/
- explicit LocalMemory(T *p=NULL) : LocalPointerBase<T>(p) {}
+ explicit LocalMemory(T *p=nullptr) : LocalPointerBase<T>(p) {}
/**
* Move constructor, leaves src with isNull().
* @param src source smart pointer
*/
- LocalMemory(LocalMemory<T> &&src) U_NOEXCEPT : LocalPointerBase<T>(src.ptr) {
- src.ptr=NULL;
+ LocalMemory(LocalMemory<T> &&src) noexcept : LocalPointerBase<T>(src.ptr) {
+ src.ptr=nullptr;
}
/**
* Destructor deletes the memory it owns.
@@ -212,17 +212,17 @@ public:
* @param src source smart pointer
* @return *this
*/
- LocalMemory<T> &operator=(LocalMemory<T> &&src) U_NOEXCEPT {
+ LocalMemory<T> &operator=(LocalMemory<T> &&src) noexcept {
uprv_free(LocalPointerBase<T>::ptr);
LocalPointerBase<T>::ptr=src.ptr;
- src.ptr=NULL;
+ src.ptr=nullptr;
return *this;
}
/**
* Swap pointers.
* @param other other smart pointer
*/
- void swap(LocalMemory<T> &other) U_NOEXCEPT {
+ void swap(LocalMemory<T> &other) noexcept {
T *temp=LocalPointerBase<T>::ptr;
LocalPointerBase<T>::ptr=other.ptr;
other.ptr=temp;
@@ -232,7 +232,7 @@ public:
* @param p1 will get p2's pointer
* @param p2 will get p1's pointer
*/
- friend inline void swap(LocalMemory<T> &p1, LocalMemory<T> &p2) U_NOEXCEPT {
+ friend inline void swap(LocalMemory<T> &p1, LocalMemory<T> &p2) noexcept {
p1.swap(p2);
}
/**
@@ -248,21 +248,21 @@ public:
* Deletes the array it owns, allocates a new one and reset its bytes to 0.
* Returns the new array pointer.
* If the allocation fails, then the current array is unchanged and
- * this method returns NULL.
+ * this method returns nullptr.
* @param newCapacity must be >0
- * @return the allocated array pointer, or NULL if the allocation failed
+ * @return the allocated array pointer, or nullptr if the allocation failed
*/
inline T *allocateInsteadAndReset(int32_t newCapacity=1);
/**
* Deletes the array it owns and allocates a new one, copying length T items.
* Returns the new array pointer.
* If the allocation fails, then the current array is unchanged and
- * this method returns NULL.
+ * this method returns nullptr.
* @param newCapacity must be >0
* @param length number of T items to be copied from the old array to the new one;
* must be no more than the capacity of the old array,
* which the caller must track because the LocalMemory does not track it
- * @return the allocated array pointer, or NULL if the allocation failed
+ * @return the allocated array pointer, or nullptr if the allocation failed
*/
inline T *allocateInsteadAndCopy(int32_t newCapacity=1, int32_t length=0);
/**
@@ -278,14 +278,14 @@ template<typename T>
inline T *LocalMemory<T>::allocateInsteadAndReset(int32_t newCapacity) {
if(newCapacity>0) {
T *p=(T *)uprv_malloc(newCapacity*sizeof(T));
- if(p!=NULL) {
+ if(p!=nullptr) {
uprv_memset(p, 0, newCapacity*sizeof(T));
uprv_free(LocalPointerBase<T>::ptr);
LocalPointerBase<T>::ptr=p;
}
return p;
} else {
- return NULL;
+ return nullptr;
}
}
@@ -294,7 +294,7 @@ template<typename T>
inline T *LocalMemory<T>::allocateInsteadAndCopy(int32_t newCapacity, int32_t length) {
if(newCapacity>0) {
T *p=(T *)uprv_malloc(newCapacity*sizeof(T));
- if(p!=NULL) {
+ if(p!=nullptr) {
if(length>0) {
if(length>newCapacity) {
length=newCapacity;
@@ -306,7 +306,7 @@ inline T *LocalMemory<T>::allocateInsteadAndCopy(int32_t newCapacity, int32_t le
}
return p;
} else {
- return NULL;
+ return nullptr;
}
}
@@ -332,10 +332,10 @@ template<typename T, int32_t stackCapacity>
class MaybeStackArray {
public:
// No heap allocation. Use only on the stack.
- static void* U_EXPORT2 operator new(size_t) U_NOEXCEPT = delete;
- static void* U_EXPORT2 operator new[](size_t) U_NOEXCEPT = delete;
+ static void* U_EXPORT2 operator new(size_t) noexcept = delete;
+ static void* U_EXPORT2 operator new[](size_t) noexcept = delete;
#if U_HAVE_PLACEMENT_NEW
- static void* U_EXPORT2 operator new(size_t, void*) U_NOEXCEPT = delete;
+ static void* U_EXPORT2 operator new(size_t, void*) noexcept = delete;
#endif
/**
@@ -364,11 +364,11 @@ public:
/**
* Move constructor: transfers ownership or copies the stack array.
*/
- MaybeStackArray(MaybeStackArray<T, stackCapacity> &&src) U_NOEXCEPT;
+ MaybeStackArray(MaybeStackArray<T, stackCapacity> &&src) noexcept;
/**
* Move assignment: transfers ownership or copies the stack array.
*/
- MaybeStackArray<T, stackCapacity> &operator=(MaybeStackArray<T, stackCapacity> &&src) U_NOEXCEPT;
+ MaybeStackArray<T, stackCapacity> &operator=(MaybeStackArray<T, stackCapacity> &&src) noexcept;
/**
* Returns the array capacity (number of T items).
* @return array capacity
@@ -403,11 +403,11 @@ public:
/**
* Deletes the array (if owned) and aliases another one, no transfer of ownership.
* If the arguments are illegal, then the current array is unchanged.
- * @param otherArray must not be NULL
+ * @param otherArray must not be nullptr
* @param otherCapacity must be >0
*/
void aliasInstead(T *otherArray, int32_t otherCapacity) {
- if(otherArray!=NULL && otherCapacity>0) {
+ if(otherArray!=nullptr && otherCapacity>0) {
releaseArray();
ptr=otherArray;
capacity=otherCapacity;
@@ -418,17 +418,17 @@ public:
* Deletes the array (if owned) and allocates a new one, copying length T items.
* Returns the new array pointer.
* If the allocation fails, then the current array is unchanged and
- * this method returns NULL.
+ * this method returns nullptr.
* @param newCapacity can be less than or greater than the current capacity;
* must be >0
* @param length number of T items to be copied from the old array to the new one
- * @return the allocated array pointer, or NULL if the allocation failed
+ * @return the allocated array pointer, or nullptr if the allocation failed
*/
inline T *resize(int32_t newCapacity, int32_t length=0);
/**
* Gives up ownership of the array if owned, or else clones it,
* copying length T items; resets itself to the internal stack array.
- * Returns NULL if the allocation failed.
+ * Returns nullptr if the allocation failed.
* @param length number of T items to copy when cloning,
* and capacity of the clone when cloning
* @param resultCapacity will be set to the returned array's capacity (output-only)
@@ -443,7 +443,7 @@ protected:
if (U_FAILURE(status)) {
return;
}
- if (this->resize(src.capacity, 0) == NULL) {
+ if (this->resize(src.capacity, 0) == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -475,7 +475,7 @@ private:
template<typename T, int32_t stackCapacity>
icu::MaybeStackArray<T, stackCapacity>::MaybeStackArray(
- MaybeStackArray <T, stackCapacity>&& src) U_NOEXCEPT
+ MaybeStackArray <T, stackCapacity>&& src) noexcept
: ptr(src.ptr), capacity(src.capacity), needToRelease(src.needToRelease) {
if (src.ptr == src.stackArray) {
ptr = stackArray;
@@ -487,7 +487,7 @@ icu::MaybeStackArray<T, stackCapacity>::MaybeStackArray(
template<typename T, int32_t stackCapacity>
inline MaybeStackArray <T, stackCapacity>&
-MaybeStackArray<T, stackCapacity>::operator=(MaybeStackArray <T, stackCapacity>&& src) U_NOEXCEPT {
+MaybeStackArray<T, stackCapacity>::operator=(MaybeStackArray <T, stackCapacity>&& src) noexcept {
releaseArray(); // in case this instance had its own memory allocated
capacity = src.capacity;
needToRelease = src.needToRelease;
@@ -508,7 +508,7 @@ inline T *MaybeStackArray<T, stackCapacity>::resize(int32_t newCapacity, int32_t
::fprintf(::stderr, "MaybeStackArray (resize) alloc %d * %lu\n", newCapacity, sizeof(T));
#endif
T *p=(T *)uprv_malloc(newCapacity*sizeof(T));
- if(p!=NULL) {
+ if(p!=nullptr) {
if(length>0) {
if(length>capacity) {
length=capacity;
@@ -525,7 +525,7 @@ inline T *MaybeStackArray<T, stackCapacity>::resize(int32_t newCapacity, int32_t
}
return p;
} else {
- return NULL;
+ return nullptr;
}
}
@@ -535,7 +535,7 @@ inline T *MaybeStackArray<T, stackCapacity>::orphanOrClone(int32_t length, int32
if(needToRelease) {
p=ptr;
} else if(length<=0) {
- return NULL;
+ return nullptr;
} else {
if(length>capacity) {
length=capacity;
@@ -544,8 +544,8 @@ inline T *MaybeStackArray<T, stackCapacity>::orphanOrClone(int32_t length, int32
#if U_DEBUG && defined(UPRV_MALLOC_COUNT)
::fprintf(::stderr,"MaybeStacArray (orphan) alloc %d * %lu\n", length,sizeof(T));
#endif
- if(p==NULL) {
- return NULL;
+ if(p==nullptr) {
+ return nullptr;
}
uprv_memcpy(p, ptr, (size_t)length*sizeof(T));
}
@@ -568,10 +568,10 @@ template<typename H, typename T, int32_t stackCapacity>
class MaybeStackHeaderAndArray {
public:
// No heap allocation. Use only on the stack.
- static void* U_EXPORT2 operator new(size_t) U_NOEXCEPT = delete;
- static void* U_EXPORT2 operator new[](size_t) U_NOEXCEPT = delete;
+ static void* U_EXPORT2 operator new(size_t) noexcept = delete;
+ static void* U_EXPORT2 operator new[](size_t) noexcept = delete;
#if U_HAVE_PLACEMENT_NEW
- static void* U_EXPORT2 operator new(size_t, void*) U_NOEXCEPT = delete;
+ static void* U_EXPORT2 operator new(size_t, void*) noexcept = delete;
#endif
/**
@@ -618,11 +618,11 @@ public:
/**
* Deletes the memory block (if owned) and aliases another one, no transfer of ownership.
* If the arguments are illegal, then the current memory is unchanged.
- * @param otherArray must not be NULL
+ * @param otherArray must not be nullptr
* @param otherCapacity must be >0
*/
void aliasInstead(H *otherMemory, int32_t otherCapacity) {
- if(otherMemory!=NULL && otherCapacity>0) {
+ if(otherMemory!=nullptr && otherCapacity>0) {
releaseMemory();
ptr=otherMemory;
capacity=otherCapacity;
@@ -634,17 +634,17 @@ public:
* copying the header and length T array items.
* Returns the new header pointer.
* If the allocation fails, then the current memory is unchanged and
- * this method returns NULL.
+ * this method returns nullptr.
* @param newCapacity can be less than or greater than the current capacity;
* must be >0
* @param length number of T items to be copied from the old array to the new one
- * @return the allocated pointer, or NULL if the allocation failed
+ * @return the allocated pointer, or nullptr if the allocation failed
*/
inline H *resize(int32_t newCapacity, int32_t length=0);
/**
* Gives up ownership of the memory if owned, or else clones it,
* copying the header and length T array items; resets itself to the internal memory.
- * Returns NULL if the allocation failed.
+ * Returns nullptr if the allocation failed.
* @param length number of T items to copy when cloning,
* and array capacity of the clone when cloning
* @param resultCapacity will be set to the returned array's capacity (output-only)
@@ -680,7 +680,7 @@ inline H *MaybeStackHeaderAndArray<H, T, stackCapacity>::resize(int32_t newCapac
::fprintf(::stderr,"MaybeStackHeaderAndArray alloc %d + %d * %ul\n", sizeof(H),newCapacity,sizeof(T));
#endif
H *p=(H *)uprv_malloc(sizeof(H)+newCapacity*sizeof(T));
- if(p!=NULL) {
+ if(p!=nullptr) {
if(length<0) {
length=0;
} else if(length>0) {
@@ -699,7 +699,7 @@ inline H *MaybeStackHeaderAndArray<H, T, stackCapacity>::resize(int32_t newCapac
}
return p;
} else {
- return NULL;
+ return nullptr;
}
}
@@ -719,8 +719,8 @@ inline H *MaybeStackHeaderAndArray<H, T, stackCapacity>::orphanOrClone(int32_t l
::fprintf(::stderr,"MaybeStackHeaderAndArray (orphan) alloc %ul + %d * %lu\n", sizeof(H),length,sizeof(T));
#endif
p=(H *)uprv_malloc(sizeof(H)+length*sizeof(T));
- if(p==NULL) {
- return NULL;
+ if(p==nullptr) {
+ return nullptr;
}
uprv_memcpy(p, ptr, sizeof(H)+(size_t)length*sizeof(T));
}
@@ -768,12 +768,12 @@ public:
MemoryPool(const MemoryPool&) = delete;
MemoryPool& operator=(const MemoryPool&) = delete;
- MemoryPool(MemoryPool&& other) U_NOEXCEPT : fCount(other.fCount),
+ MemoryPool(MemoryPool&& other) noexcept : fCount(other.fCount),
fPool(std::move(other.fPool)) {
other.fCount = 0;
}
- MemoryPool& operator=(MemoryPool&& other) U_NOEXCEPT {
+ MemoryPool& operator=(MemoryPool&& other) noexcept {
// Since `this` may contain instances that need to be deleted, we can't
// just throw them away and replace them with `other`. The normal way of
// dealing with this in C++ is to swap `this` and `other`, rather than
diff --git a/Build/source/libs/icu/icu-src/source/common/common.vcxproj b/Build/source/libs/icu/icu-src/source/common/common.vcxproj
index e35e1b0cff7..be3093bd939 100644
--- a/Build/source/libs/icu/icu-src/source/common/common.vcxproj
+++ b/Build/source/libs/icu/icu-src/source/common/common.vcxproj
@@ -88,6 +88,7 @@
<ClCompile Include="brkiter.cpp" />
<ClCompile Include="dictbe.cpp" />
<ClCompile Include="lstmbe.cpp" />
+ <ClCompile Include="mlbe.cpp" />
<ClCompile Include="pluralmap.cpp" />
<ClCompile Include="rbbi.cpp" />
<ClCompile Include="rbbidata.cpp" />
@@ -166,6 +167,7 @@
<ClCompile Include="uidna.cpp" />
<ClCompile Include="uts46.cpp" />
<ClCompile Include="localebuilder.cpp" />
+ <ClCompile Include="ulocbuilder.cpp" />
<ClCompile Include="localematcher.cpp" />
<ClCompile Include="localeprioritylist.cpp" />
<ClCompile Include="locavailable.cpp" />
@@ -184,6 +186,7 @@
<ClCompile Include="ucat.cpp" />
<ClCompile Include="uloc.cpp" />
<ClCompile Include="uloc_tag.cpp" />
+ <ClCompile Include="ulocale.cpp" />
<ClCompile Include="ures_cnv.cpp" />
<ClCompile Include="uresbund.cpp" />
<ClCompile Include="uresdata.cpp" />
@@ -282,6 +285,7 @@
<ClInclude Include="brkeng.h" />
<ClInclude Include="dictbe.h" />
<ClInclude Include="lstmbe.h" />
+ <ClInclude Include="mlbe.h" />
<ClInclude Include="rbbidata.h" />
<ClInclude Include="rbbinode.h" />
<ClInclude Include="rbbirb.h" />
diff --git a/Build/source/libs/icu/icu-src/source/common/common.vcxproj.filters b/Build/source/libs/icu/icu-src/source/common/common.vcxproj.filters
index 38bc0c1b869..1faff8765d3 100644
--- a/Build/source/libs/icu/icu-src/source/common/common.vcxproj.filters
+++ b/Build/source/libs/icu/icu-src/source/common/common.vcxproj.filters
@@ -76,6 +76,9 @@
<ClCompile Include="lstmbe.cpp">
<Filter>break iteration</Filter>
</ClCompile>
+ <ClCompile Include="mlbe.cpp">
+ <Filter>break iteration</Filter>
+ </ClCompile>
<ClCompile Include="rbbi.cpp">
<Filter>break iteration</Filter>
</ClCompile>
@@ -319,6 +322,9 @@
<ClCompile Include="localebuilder.cpp">
<Filter>locales &amp; resources</Filter>
</ClCompile>
+ <ClCompile Include="ulocbuilder.cpp">
+ <Filter>locales &amp; resources</Filter>
+ </ClCompile>
<ClCompile Include="localematcher.cpp">
<Filter>locales &amp; resources</Filter>
</ClCompile>
@@ -370,6 +376,9 @@
<ClCompile Include="uloc_tag.cpp">
<Filter>locales &amp; resources</Filter>
</ClCompile>
+ <ClCompile Include="ulocale.cpp">
+ <Filter>locales &amp; resources</Filter>
+ </ClCompile>
<ClCompile Include="ures_cnv.cpp">
<Filter>locales &amp; resources</Filter>
</ClCompile>
@@ -660,6 +669,9 @@
<ClInclude Include="lstmbe.h">
<Filter>break iteration</Filter>
</ClInclude>
+ <ClInclude Include="mlbe.h">
+ <Filter>break iteration</Filter>
+ </ClInclude>
<ClInclude Include="rbbidata.h">
<Filter>break iteration</Filter>
</ClInclude>
@@ -1126,6 +1138,9 @@
<CustomBuild Include="unicode\localebuilder.h">
<Filter>locales &amp; resources</Filter>
</CustomBuild>
+ <CustomBuild Include="unicode\ulocbuilder.h">
+ <Filter>locales &amp; resources</Filter>
+ </CustomBuild>
<CustomBuild Include="unicode\localematcher.h">
<Filter>locales &amp; resources</Filter>
</CustomBuild>
@@ -1141,6 +1156,9 @@
<CustomBuild Include="unicode\uloc.h">
<Filter>locales &amp; resources</Filter>
</CustomBuild>
+ <CustomBuild Include="unicode\ulocale.h">
+ <Filter>locales &amp; resources</Filter>
+ </CustomBuild>
<CustomBuild Include="unicode\ures.h">
<Filter>locales &amp; resources</Filter>
</CustomBuild>
diff --git a/Build/source/libs/icu/icu-src/source/common/common_uwp.vcxproj b/Build/source/libs/icu/icu-src/source/common/common_uwp.vcxproj
index fc165629f29..b40f65c5272 100644
--- a/Build/source/libs/icu/icu-src/source/common/common_uwp.vcxproj
+++ b/Build/source/libs/icu/icu-src/source/common/common_uwp.vcxproj
@@ -222,6 +222,7 @@
<ClCompile Include="brkiter.cpp" />
<ClCompile Include="dictbe.cpp" />
<ClCompile Include="lstmbe.cpp" />
+ <ClCompile Include="mlbe.cpp" />
<ClCompile Include="pluralmap.cpp" />
<ClCompile Include="rbbi.cpp" />
<ClCompile Include="rbbidata.cpp" />
@@ -300,6 +301,7 @@
<ClCompile Include="uidna.cpp" />
<ClCompile Include="uts46.cpp" />
<ClCompile Include="localebuilder.cpp" />
+ <ClCompile Include="ulocbuilder.cpp" />
<ClCompile Include="localematcher.cpp" />
<ClCompile Include="localeprioritylist.cpp" />
<ClCompile Include="locavailable.cpp" />
@@ -318,6 +320,7 @@
<ClCompile Include="ucat.cpp" />
<ClCompile Include="uloc.cpp" />
<ClCompile Include="uloc_tag.cpp" />
+ <ClCompile Include="ulocale.cpp" />
<ClCompile Include="ures_cnv.cpp" />
<ClCompile Include="uresbund.cpp" />
<ClCompile Include="uresdata.cpp" />
@@ -417,6 +420,7 @@
<ClInclude Include="brkeng.h" />
<ClInclude Include="dictbe.h" />
<ClInclude Include="lstmbe.h" />
+ <ClInclude Include="mlbe.h" />
<ClInclude Include="rbbidata.h" />
<ClInclude Include="rbbinode.h" />
<ClInclude Include="rbbirb.h" />
diff --git a/Build/source/libs/icu/icu-src/source/common/cpputils.h b/Build/source/libs/icu/icu-src/source/common/cpputils.h
index 307e5704864..2eda999a657 100644
--- a/Build/source/libs/icu/icu-src/source/common/cpputils.h
+++ b/Build/source/libs/icu/icu-src/source/common/cpputils.h
@@ -62,8 +62,8 @@ inline void uprv_arrayCopy(const int32_t* src, int32_t srcStart,
static
inline void
-uprv_arrayCopy(const UChar *src, int32_t srcStart,
- UChar *dst, int32_t dstStart, int32_t count)
+uprv_arrayCopy(const char16_t *src, int32_t srcStart,
+ char16_t *dst, int32_t dstStart, int32_t count)
{ uprv_memcpy(dst+dstStart, src+srcStart, (size_t)count * sizeof(*src)); }
/**
diff --git a/Build/source/libs/icu/icu-src/source/common/cstr.cpp b/Build/source/libs/icu/icu-src/source/common/cstr.cpp
index 24654f8fc22..b87597e4504 100644
--- a/Build/source/libs/icu/icu-src/source/common/cstr.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/cstr.cpp
@@ -21,7 +21,7 @@ U_NAMESPACE_BEGIN
CStr::CStr(const UnicodeString &in) {
UErrorCode status = U_ZERO_ERROR;
#if !UCONFIG_NO_CONVERSION || U_CHARSET_IS_UTF8
- int32_t length = in.extract(0, in.length(), static_cast<char *>(NULL), static_cast<uint32_t>(0));
+ int32_t length = in.extract(0, in.length(), static_cast<char *>(nullptr), static_cast<uint32_t>(0));
int32_t resultCapacity = 0;
char *buf = s.getAppendBuffer(length, length, resultCapacity, status);
if (U_SUCCESS(status)) {
diff --git a/Build/source/libs/icu/icu-src/source/common/cstring.cpp b/Build/source/libs/icu/icu-src/source/common/cstring.cpp
index 06275c4b564..e95816c1301 100644
--- a/Build/source/libs/icu/icu-src/source/common/cstring.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/cstring.cpp
@@ -189,7 +189,7 @@ T_CString_integerToString(char* buffer, int32_t v, int32_t radix)
/*
* Takes a int64_t and fills in a char* string with that number "radix"-based.
* Writes at most 21: chars ("-9223372036854775807" plus NUL).
- * Returns the length of the string, not including the terminating NULL.
+ * Returns the length of the string, not including the terminating NUL.
*/
U_CAPI int32_t U_EXPORT2
T_CString_int64ToString(char* buffer, int64_t v, uint32_t radix)
@@ -233,16 +233,16 @@ T_CString_stringToInteger(const char *integerString, int32_t radix)
U_CAPI int U_EXPORT2
uprv_stricmp(const char *str1, const char *str2) {
- if(str1==NULL) {
- if(str2==NULL) {
+ if(str1==nullptr) {
+ if(str2==nullptr) {
return 0;
} else {
return -1;
}
- } else if(str2==NULL) {
+ } else if(str2==nullptr) {
return 1;
} else {
- /* compare non-NULL strings lexically with lowercase */
+ /* compare non-nullptr strings lexically with lowercase */
int rc;
unsigned char c1, c2;
@@ -272,16 +272,16 @@ uprv_stricmp(const char *str1, const char *str2) {
U_CAPI int U_EXPORT2
uprv_strnicmp(const char *str1, const char *str2, uint32_t n) {
- if(str1==NULL) {
- if(str2==NULL) {
+ if(str1==nullptr) {
+ if(str2==nullptr) {
return 0;
} else {
return -1;
}
- } else if(str2==NULL) {
+ } else if(str2==nullptr) {
return 1;
} else {
- /* compare non-NULL strings lexically with lowercase */
+ /* compare non-nullptr strings lexically with lowercase */
int rc;
unsigned char c1, c2;
diff --git a/Build/source/libs/icu/icu-src/source/common/dictbe.cpp b/Build/source/libs/icu/icu-src/source/common/dictbe.cpp
index 768eb49b95c..3d672c03bfb 100644
--- a/Build/source/libs/icu/icu-src/source/common/dictbe.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/dictbe.cpp
@@ -42,7 +42,7 @@ DictionaryBreakEngine::~DictionaryBreakEngine() {
}
UBool
-DictionaryBreakEngine::handles(UChar32 c) const {
+DictionaryBreakEngine::handles(UChar32 c, const char*) const {
return fSet.contains(c);
}
@@ -54,13 +54,13 @@ DictionaryBreakEngine::findBreaks( UText *text,
UBool isPhraseBreaking,
UErrorCode& status) const {
if (U_FAILURE(status)) return 0;
- (void)startPos; // TODO: remove this param?
int32_t result = 0;
// Find the span of characters included in the set.
// The span to break begins at the current position in the text, and
// extends towards the start or end of the text, depending on 'reverse'.
+ utext_setNativeIndex(text, startPos);
int32_t start = (int32_t)utext_getNativeIndex(text);
int32_t current;
int32_t rangeStart;
@@ -140,7 +140,7 @@ int32_t PossibleWord::candidates( UText *text, DictionaryMatcher *dict, int32_t
int32_t start = (int32_t)utext_getNativeIndex(text);
if (start != offset) {
offset = start;
- count = dict->matches(text, rangeEnd-start, UPRV_LENGTHOF(cuLengths), cuLengths, cpLengths, NULL, &prefix);
+ count = dict->matches(text, rangeEnd-start, UPRV_LENGTHOF(cuLengths), cuLengths, cpLengths, nullptr, &prefix);
// Dictionary leaves text after longest prefix, not longest word. Back up.
if (count <= 0) {
utext_setNativeIndex(text, start);
@@ -1054,9 +1054,10 @@ foundBest:
*/
static const uint32_t kuint32max = 0xFFFFFFFF;
CjkBreakEngine::CjkBreakEngine(DictionaryMatcher *adoptDictionary, LanguageType type, UErrorCode &status)
-: DictionaryBreakEngine(), fDictionary(adoptDictionary) {
+: DictionaryBreakEngine(), fDictionary(adoptDictionary), isCj(false) {
UTRACE_ENTRY(UTRACE_UBRK_CREATE_BREAK_ENGINE);
UTRACE_DATA1(UTRACE_INFO, "dictbe=%s", "Hani");
+ fMlBreakEngine = nullptr;
nfkcNorm2 = Normalizer2::getNFKCInstance(status);
// Korean dictionary only includes Hangul syllables
fHangulWordSet.applyPattern(UnicodeString(u"[\\uac00-\\ud7a3]"), status);
@@ -1073,11 +1074,20 @@ CjkBreakEngine::CjkBreakEngine(DictionaryMatcher *adoptDictionary, LanguageType
if (U_SUCCESS(status)) {
setCharacters(fHangulWordSet);
}
- } else { //Chinese and Japanese
+ } else { // Chinese and Japanese
UnicodeSet cjSet(UnicodeString(u"[[:Han:][:Hiragana:][:Katakana:]\\u30fc\\uff70\\uff9e\\uff9f]"), status);
+ isCj = true;
if (U_SUCCESS(status)) {
setCharacters(cjSet);
+#if UCONFIG_USE_ML_PHRASE_BREAKING
+ fMlBreakEngine = new MlBreakEngine(fDigitOrOpenPunctuationOrAlphabetSet,
+ fClosePunctuationSet, status);
+ if (fMlBreakEngine == nullptr) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ }
+#else
initJapanesePhraseParameter(status);
+#endif
}
}
UTRACE_EXIT_STATUS(status);
@@ -1085,6 +1095,7 @@ CjkBreakEngine::CjkBreakEngine(DictionaryMatcher *adoptDictionary, LanguageType
CjkBreakEngine::~CjkBreakEngine(){
delete fDictionary;
+ delete fMlBreakEngine;
}
// The katakanaCost values below are based on the length frequencies of all
@@ -1135,7 +1146,7 @@ CjkBreakEngine::divideUpDictionaryRange( UText *inText,
UnicodeString inString;
// inputMap[inStringIndex] = corresponding native index from UText inText.
- // If NULL then mapping is 1:1
+ // If nullptr then mapping is 1:1
LocalPointer<UVector32> inputMap;
// if UText has the input string as one contiguous UTF-16 chunk
@@ -1251,7 +1262,15 @@ CjkBreakEngine::divideUpDictionaryRange( UText *inText,
}
}
}
-
+
+#if UCONFIG_USE_ML_PHRASE_BREAKING
+ // PhraseBreaking is supported in ja and ko; MlBreakEngine only supports ja.
+ if (isPhraseBreaking && isCj) {
+ return fMlBreakEngine->divideUpRange(inText, rangeStart, rangeEnd, foundBreaks, inString,
+ inputMap, status);
+ }
+#endif
+
// bestSnlp[i] is the snlp of the best segmentation of the first i
// code points in the range to be matched.
UVector32 bestSnlp(numCodePts + 1, status);
@@ -1292,9 +1311,9 @@ CjkBreakEngine::divideUpDictionaryRange( UText *inText,
int32_t count;
utext_setNativeIndex(&fu, ix);
count = fDictionary->matches(&fu, maxWordSize, numCodePts,
- NULL, lengths.getBuffer(), values.getBuffer(), NULL);
+ nullptr, lengths.getBuffer(), values.getBuffer(), nullptr);
// Note: lengths is filled with code point lengths
- // The NULL parameter is the ignored code unit lengths.
+ // The nullptr parameter is the ignored code unit lengths.
// if there are no single character matches found in the dictionary
// starting with this character, treat character as a 1-character word
diff --git a/Build/source/libs/icu/icu-src/source/common/dictbe.h b/Build/source/libs/icu/icu-src/source/common/dictbe.h
index ca1a3c28b7b..e512071fa45 100644
--- a/Build/source/libs/icu/icu-src/source/common/dictbe.h
+++ b/Build/source/libs/icu/icu-src/source/common/dictbe.h
@@ -16,11 +16,13 @@
#include "brkeng.h"
#include "hash.h"
+#include "mlbe.h"
#include "uvectr32.h"
U_NAMESPACE_BEGIN
class DictionaryMatcher;
+class MlBreakEngine;
class Normalizer2;
/*******************************************************************
@@ -60,10 +62,11 @@ class DictionaryBreakEngine : public LanguageBreakEngine {
* a particular kind of break.</p>
*
* @param c A character which begins a run that the engine might handle
+ * @param locale The locale.
* @return true if this engine handles the particular character and break
* type.
*/
- virtual UBool handles(UChar32 c) const override;
+ virtual UBool handles(UChar32 c, const char* locale) const override;
/**
* <p>Find any breaks within a run in the supplied text.</p>
@@ -374,6 +377,8 @@ class CjkBreakEngine : public DictionaryBreakEngine {
DictionaryMatcher *fDictionary;
const Normalizer2 *nfkcNorm2;
+ MlBreakEngine *fMlBreakEngine;
+ bool isCj;
private:
// Load Japanese extensions.
diff --git a/Build/source/libs/icu/icu-src/source/common/dictionarydata.cpp b/Build/source/libs/icu/icu-src/source/common/dictionarydata.cpp
index 6e2dbee5b61..80b6d82d56a 100644
--- a/Build/source/libs/icu/icu-src/source/common/dictionarydata.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/dictionarydata.cpp
@@ -57,13 +57,13 @@ int32_t UCharsDictionaryMatcher::matches(UText *text, int32_t maxLength, int32_t
codePointsMatched += 1;
if (USTRINGTRIE_HAS_VALUE(result)) {
if (wordCount < limit) {
- if (values != NULL) {
+ if (values != nullptr) {
values[wordCount] = uct.getValue();
}
- if (lengths != NULL) {
+ if (lengths != nullptr) {
lengths[wordCount] = lengthMatched;
}
- if (cpLengths != NULL) {
+ if (cpLengths != nullptr) {
cpLengths[wordCount] = codePointsMatched;
}
++wordCount;
@@ -80,7 +80,7 @@ int32_t UCharsDictionaryMatcher::matches(UText *text, int32_t maxLength, int32_t
}
}
- if (prefix != NULL) {
+ if (prefix != nullptr) {
*prefix = codePointsMatched;
}
return wordCount;
@@ -124,13 +124,13 @@ int32_t BytesDictionaryMatcher::matches(UText *text, int32_t maxLength, int32_t
codePointsMatched += 1;
if (USTRINGTRIE_HAS_VALUE(result)) {
if (wordCount < limit) {
- if (values != NULL) {
+ if (values != nullptr) {
values[wordCount] = bt.getValue();
}
- if (lengths != NULL) {
+ if (lengths != nullptr) {
lengths[wordCount] = lengthMatched;
}
- if (cpLengths != NULL) {
+ if (cpLengths != nullptr) {
cpLengths[wordCount] = codePointsMatched;
}
++wordCount;
@@ -147,7 +147,7 @@ int32_t BytesDictionaryMatcher::matches(UText *text, int32_t maxLength, int32_t
}
}
- if (prefix != NULL) {
+ if (prefix != nullptr) {
*prefix = codePointsMatched;
}
return wordCount;
@@ -170,7 +170,7 @@ udict_swap(const UDataSwapper *ds, const void *inData, int32_t length,
int32_t i, offset, size;
headerSize = udata_swapDataHeader(ds, inData, length, outData, pErrorCode);
- if (pErrorCode == NULL || U_FAILURE(*pErrorCode)) return 0;
+ if (pErrorCode == nullptr || U_FAILURE(*pErrorCode)) return 0;
pInfo = (const UDataInfo *)((const char *)inData + 4);
if (!(pInfo->dataFormat[0] == 0x44 &&
pInfo->dataFormat[1] == 0x69 &&
@@ -184,7 +184,7 @@ udict_swap(const UDataSwapper *ds, const void *inData, int32_t length,
}
inBytes = (const uint8_t *)inData + headerSize;
- outBytes = (uint8_t *)outData + headerSize;
+ outBytes = (outData == nullptr) ? nullptr : (uint8_t *)outData + headerSize;
inIndexes = (const int32_t *)inBytes;
if (length >= 0) {
diff --git a/Build/source/libs/icu/icu-src/source/common/dictionarydata.h b/Build/source/libs/icu/icu-src/source/common/dictionarydata.h
index e75716f54b9..8751e502d5e 100644
--- a/Build/source/libs/icu/icu-src/source/common/dictionarydata.h
+++ b/Build/source/libs/icu/icu-src/source/common/dictionarydata.h
@@ -79,15 +79,15 @@ public:
* matching words to be found.
* @param lengths output array, filled with the lengths of the matches, in order,
* from shortest to longest. Lengths are in native indexing units
- * of the UText. May be NULL.
+ * of the UText. May be nullptr.
* @param cpLengths output array, filled with the lengths of the matches, in order,
* from shortest to longest. Lengths are the number of Unicode code points.
- * May be NULL.
+ * May be nullptr.
* @param values Output array, filled with the values associated with the words found.
- * May be NULL.
+ * May be nullptr.
* @param prefix Output parameter, the code point length of the prefix match, even if that
* prefix didn't lead to a complete word. Will always be >= the cpLength
- * of the longest complete word matched. May be NULL.
+ * of the longest complete word matched. May be nullptr.
* @return Number of matching words found.
*/
virtual int32_t matches(UText *text, int32_t maxLength, int32_t limit,
@@ -103,14 +103,14 @@ class U_COMMON_API UCharsDictionaryMatcher : public DictionaryMatcher {
public:
// constructs a new UCharsDictionaryMatcher.
// The UDataMemory * will be closed on this object's destruction.
- UCharsDictionaryMatcher(const UChar *c, UDataMemory *f) : characters(c), file(f) { }
+ UCharsDictionaryMatcher(const char16_t *c, UDataMemory *f) : characters(c), file(f) { }
virtual ~UCharsDictionaryMatcher();
virtual int32_t matches(UText *text, int32_t maxLength, int32_t limit,
int32_t *lengths, int32_t *cpLengths, int32_t *values,
int32_t *prefix) const override;
virtual int32_t getType() const override;
private:
- const UChar *characters;
+ const char16_t *characters;
UDataMemory *file;
};
diff --git a/Build/source/libs/icu/icu-src/source/common/edits.cpp b/Build/source/libs/icu/icu-src/source/common/edits.cpp
index 21d7c3f0061..3348145d48d 100644
--- a/Build/source/libs/icu/icu-src/source/common/edits.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/edits.cpp
@@ -35,7 +35,7 @@ const int32_t LENGTH_IN_2TRAIL = 62;
} // namespace
-void Edits::releaseArray() U_NOEXCEPT {
+void Edits::releaseArray() noexcept {
if (array != stackArray) {
uprv_free(array);
}
@@ -63,7 +63,7 @@ Edits &Edits::copyArray(const Edits &other) {
return *this;
}
-Edits &Edits::moveArray(Edits &src) U_NOEXCEPT {
+Edits &Edits::moveArray(Edits &src) noexcept {
if (U_FAILURE(errorCode_)) {
length = delta = numChanges = 0;
return *this;
@@ -94,7 +94,7 @@ Edits &Edits::operator=(const Edits &other) {
return copyArray(other);
}
-Edits &Edits::operator=(Edits &&src) U_NOEXCEPT {
+Edits &Edits::operator=(Edits &&src) noexcept {
length = src.length;
delta = src.delta;
numChanges = src.numChanges;
@@ -106,7 +106,7 @@ Edits::~Edits() {
releaseArray();
}
-void Edits::reset() U_NOEXCEPT {
+void Edits::reset() noexcept {
length = delta = numChanges = 0;
errorCode_ = U_ZERO_ERROR;
}
@@ -233,7 +233,7 @@ UBool Edits::growArray() {
return false;
}
uint16_t *newArray = (uint16_t *)uprv_malloc((size_t)newCapacity * 2);
- if (newArray == NULL) {
+ if (newArray == nullptr) {
errorCode_ = U_MEMORY_ALLOCATION_ERROR;
return false;
}
diff --git a/Build/source/libs/icu/icu-src/source/common/emojiprops.cpp b/Build/source/libs/icu/icu-src/source/common/emojiprops.cpp
index d07e07c6ccc..f2b3f4762f3 100644
--- a/Build/source/libs/icu/icu-src/source/common/emojiprops.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/emojiprops.cpp
@@ -46,7 +46,7 @@ void U_CALLCONV initSingleton(UErrorCode &errorCode) {
// TODO: turn this into a shared helper function
// Requires the major version to match, and then requires at least the minor version.
UBool udata_isAcceptableMajorMinor(
- const UDataInfo &info, const UChar *dataFormat, uint8_t major, uint8_t minor) {
+ const UDataInfo &info, const char16_t *dataFormat, uint8_t major, uint8_t minor) {
return
info.size >= 20 &&
info.isBigEndian == U_IS_BIG_ENDIAN &&
@@ -104,7 +104,7 @@ EmojiProps::load(UErrorCode &errorCode) {
offset = inIndexes[i];
nextOffset = inIndexes[i + 1];
// Set/leave nullptr if there is no UCharsTrie.
- const UChar *p = nextOffset > offset ? (const UChar *)(inBytes + offset) : nullptr;
+ const char16_t *p = nextOffset > offset ? (const char16_t *)(inBytes + offset) : nullptr;
stringTries[getStringTrieIndex(i)] = p;
}
}
@@ -160,14 +160,14 @@ EmojiProps::hasBinaryPropertyImpl(UChar32 c, UProperty which) const {
}
UBool
-EmojiProps::hasBinaryProperty(const UChar *s, int32_t length, UProperty which) {
+EmojiProps::hasBinaryProperty(const char16_t *s, int32_t length, UProperty which) {
UErrorCode errorCode = U_ZERO_ERROR;
const EmojiProps *ep = getSingleton(errorCode);
return U_SUCCESS(errorCode) && ep->hasBinaryPropertyImpl(s, length, which);
}
UBool
-EmojiProps::hasBinaryPropertyImpl(const UChar *s, int32_t length, UProperty which) const {
+EmojiProps::hasBinaryPropertyImpl(const char16_t *s, int32_t length, UProperty which) const {
if (s == nullptr && length != 0) { return false; }
if (length <= 0 && (length == 0 || *s == 0)) { return false; } // empty string
// The caller should have delegated single code points to hasBinaryProperty(c, which).
@@ -181,7 +181,7 @@ EmojiProps::hasBinaryPropertyImpl(const UChar *s, int32_t length, UProperty whic
lastProp = UCHAR_RGI_EMOJI_ZWJ_SEQUENCE;
}
for (int32_t prop = firstProp; prop <= lastProp; ++prop) {
- const UChar *trieUChars = stringTries[prop - UCHAR_BASIC_EMOJI];
+ const char16_t *trieUChars = stringTries[prop - UCHAR_BASIC_EMOJI];
if (trieUChars != nullptr) {
UCharsTrie trie(trieUChars);
UStringTrieResult result = trie.next(s, length);
@@ -206,7 +206,7 @@ EmojiProps::addStrings(const USetAdder *sa, UProperty which, UErrorCode &errorCo
lastProp = UCHAR_RGI_EMOJI_ZWJ_SEQUENCE;
}
for (int32_t prop = firstProp; prop <= lastProp; ++prop) {
- const UChar *trieUChars = stringTries[prop - UCHAR_BASIC_EMOJI];
+ const char16_t *trieUChars = stringTries[prop - UCHAR_BASIC_EMOJI];
if (trieUChars != nullptr) {
UCharsTrie::Iterator iter(trieUChars, 0, errorCode);
while (iter.next(errorCode)) {
diff --git a/Build/source/libs/icu/icu-src/source/common/emojiprops.h b/Build/source/libs/icu/icu-src/source/common/emojiprops.h
index 457847c303a..777b7b11a83 100644
--- a/Build/source/libs/icu/icu-src/source/common/emojiprops.h
+++ b/Build/source/libs/icu/icu-src/source/common/emojiprops.h
@@ -23,7 +23,7 @@ public:
static const EmojiProps *getSingleton(UErrorCode &errorCode);
static UBool hasBinaryProperty(UChar32 c, UProperty which);
- static UBool hasBinaryProperty(const UChar *s, int32_t length, UProperty which);
+ static UBool hasBinaryProperty(const char16_t *s, int32_t length, UProperty which);
void addPropertyStarts(const USetAdder *sa, UErrorCode &errorCode) const;
void addStrings(const USetAdder *sa, UProperty which, UErrorCode &errorCode) const;
@@ -78,11 +78,11 @@ private:
void load(UErrorCode &errorCode);
UBool hasBinaryPropertyImpl(UChar32 c, UProperty which) const;
- UBool hasBinaryPropertyImpl(const UChar *s, int32_t length, UProperty which) const;
+ UBool hasBinaryPropertyImpl(const char16_t *s, int32_t length, UProperty which) const;
UDataMemory *memory = nullptr;
UCPTrie *cpTrie = nullptr;
- const UChar *stringTries[6] = { nullptr, nullptr, nullptr, nullptr, nullptr, nullptr };
+ const char16_t *stringTries[6] = { nullptr, nullptr, nullptr, nullptr, nullptr, nullptr };
};
U_NAMESPACE_END
diff --git a/Build/source/libs/icu/icu-src/source/common/filteredbrk.cpp b/Build/source/libs/icu/icu-src/source/common/filteredbrk.cpp
index baa1d4e42d2..a705b037c47 100644
--- a/Build/source/libs/icu/icu-src/source/common/filteredbrk.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/filteredbrk.cpp
@@ -35,7 +35,7 @@ static void _fb_trace(const char *m, const UnicodeString *s, UBool b, int32_t d,
if(s) {
s->extract(0,s->length(),buf,2048);
} else {
- strcpy(buf,"NULL");
+ strcpy(buf,"nullptr");
}
fprintf(stderr,"%s:%d: %s. s='%s'(%p), b=%c, d=%d\n",
f, l, m, buf, (const void*)s, b?'T':'F',(int)d);
@@ -102,7 +102,7 @@ class UStringSet : public UVector {
inline UBool add(const UnicodeString& str, UErrorCode &status) {
if(U_FAILURE(status)) return false;
UnicodeString *t = new UnicodeString(str);
- if(t==NULL) {
+ if(t==nullptr) {
status = U_MEMORY_ALLOCATION_ERROR; return false;
}
return adopt(t, status);
@@ -130,7 +130,7 @@ static const int32_t kPARTIAL = (1<<0); //< partial - need to run through forwar
static const int32_t kMATCH = (1<<1); //< exact match - skip this one.
static const int32_t kSuppressInReverse = (1<<0);
static const int32_t kAddToForward = (1<<1);
-static const UChar kFULLSTOP = 0x002E; // '.'
+static const char16_t kFULLSTOP = 0x002E; // '.'
/**
* Shared data for SimpleFilteredSentenceBreakIterator
@@ -191,7 +191,7 @@ public:
return clone();
}
virtual SimpleFilteredSentenceBreakIterator* clone() const override { return new SimpleFilteredSentenceBreakIterator(*this); }
- virtual UClassID getDynamicClassID(void) const override { return NULL; }
+ virtual UClassID getDynamicClassID() const override { return nullptr; }
virtual bool operator==(const BreakIterator& o) const override { if(this==&o) return true; return false; }
/* -- text modifying -- */
@@ -202,20 +202,20 @@ public:
/* -- other functions that are just delegated -- */
virtual UText *getUText(UText *fillIn, UErrorCode &status) const override { return fDelegate->getUText(fillIn,status); }
- virtual CharacterIterator& getText(void) const override { return fDelegate->getText(); }
+ virtual CharacterIterator& getText() const override { return fDelegate->getText(); }
/* -- ITERATION -- */
- virtual int32_t first(void) override;
+ virtual int32_t first() override;
virtual int32_t preceding(int32_t offset) override;
- virtual int32_t previous(void) override;
+ virtual int32_t previous() override;
virtual UBool isBoundary(int32_t offset) override;
- virtual int32_t current(void) const override { return fDelegate->current(); } // we keep the delegate current, so this should be correct.
+ virtual int32_t current() const override { return fDelegate->current(); } // we keep the delegate current, so this should be correct.
- virtual int32_t next(void) override;
+ virtual int32_t next() override;
virtual int32_t next(int32_t n) override;
virtual int32_t following(int32_t offset) override;
- virtual int32_t last(void) override;
+ virtual int32_t last() override;
private:
/**
@@ -289,11 +289,11 @@ SimpleFilteredSentenceBreakIterator::breakExceptionAt(int32_t n) {
// Assume a space is following the '.' (so we handle the case: "Mr. /Brown")
if(utext_previous32(fText.getAlias())==u' ') { // TODO: skip a class of chars here??
// TODO only do this the 1st time?
- //if(debug2) u_printf("skipping prev: |%C| \n", (UChar)uch);
+ //if(debug2) u_printf("skipping prev: |%C| \n", (char16_t)uch);
} else {
- //if(debug2) u_printf("not skipping prev: |%C| \n", (UChar)uch);
+ //if(debug2) u_printf("not skipping prev: |%C| \n", (char16_t)uch);
utext_next32(fText.getAlias());
- //if(debug2) u_printf(" -> : |%C| \n", (UChar)uch);
+ //if(debug2) u_printf(" -> : |%C| \n", (char16_t)uch);
}
{
@@ -309,20 +309,20 @@ SimpleFilteredSentenceBreakIterator::breakExceptionAt(int32_t n) {
if(!USTRINGTRIE_HAS_NEXT(r)) {
break;
}
- //if(debug2) u_printf("rev< /%C/ cont?%d @%d\n", (UChar)uch, r, utext_getNativeIndex(fText.getAlias()));
+ //if(debug2) u_printf("rev< /%C/ cont?%d @%d\n", (char16_t)uch, r, utext_getNativeIndex(fText.getAlias()));
}
}
//if(bestValue >= 0) {
- //if(debug2) u_printf("rev<+/%C/+end of seq.. r=%d, bestPosn=%d, bestValue=%d\n", (UChar)uch, r, bestPosn, bestValue);
+ //if(debug2) u_printf("rev<+/%C/+end of seq.. r=%d, bestPosn=%d, bestValue=%d\n", (char16_t)uch, r, bestPosn, bestValue);
//}
if(bestPosn>=0) {
- //if(debug2) u_printf("rev< /%C/ end of seq.. r=%d, bestPosn=%d, bestValue=%d\n", (UChar)uch, r, bestPosn, bestValue);
+ //if(debug2) u_printf("rev< /%C/ end of seq.. r=%d, bestPosn=%d, bestValue=%d\n", (char16_t)uch, r, bestPosn, bestValue);
//if(USTRINGTRIE_MATCHES(r)) { // matched - so, now what?
//int32_t bestValue = iter.getValue();
- ////if(debug2) u_printf("rev< /%C/ matched, skip..%d bestValue=%d\n", (UChar)uch, r, bestValue);
+ ////if(debug2) u_printf("rev< /%C/ matched, skip..%d bestValue=%d\n", (char16_t)uch, r, bestValue);
if(bestValue == kMATCH) { // exact match!
//if(debug2) u_printf(" exact backward match\n");
@@ -340,15 +340,15 @@ SimpleFilteredSentenceBreakIterator::breakExceptionAt(int32_t n) {
UChar32 uch;
while((uch=utext_next32(fText.getAlias()))!=U_SENTINEL &&
USTRINGTRIE_HAS_NEXT(rfwd=iter.nextForCodePoint(uch))) {
- //if(debug2) u_printf("fwd> /%C/ cont?%d @%d\n", (UChar)uch, rfwd, utext_getNativeIndex(fText.getAlias()));
+ //if(debug2) u_printf("fwd> /%C/ cont?%d @%d\n", (char16_t)uch, rfwd, utext_getNativeIndex(fText.getAlias()));
}
if(USTRINGTRIE_MATCHES(rfwd)) {
- //if(debug2) u_printf("fwd> /%C/ == forward match!\n", (UChar)uch);
+ //if(debug2) u_printf("fwd> /%C/ == forward match!\n", (char16_t)uch);
// only full matches here, nothing to check
// skip the next:
return kExceptionHere;
} else {
- //if(debug2) u_printf("fwd> /%C/ no match.\n", (UChar)uch);
+ //if(debug2) u_printf("fwd> /%C/ no match.\n", (char16_t)uch);
// no match (no exception) -return the 'underlying' break
return kNoExceptionHere;
}
@@ -356,7 +356,7 @@ SimpleFilteredSentenceBreakIterator::breakExceptionAt(int32_t n) {
return kNoExceptionHere; // internal error and/or no forwards trie
}
} else {
- //if(debug2) u_printf("rev< /%C/ .. no match..%d\n", (UChar)uch, r); // no best match
+ //if(debug2) u_printf("rev< /%C/ .. no match..%d\n", (char16_t)uch, r); // no best match
return kNoExceptionHere; // No match - so exit. Not an exception.
}
}
@@ -428,7 +428,7 @@ SimpleFilteredSentenceBreakIterator::next() {
}
int32_t
-SimpleFilteredSentenceBreakIterator::first(void) {
+SimpleFilteredSentenceBreakIterator::first() {
// Don't suppress a break opportunity at the beginning of text.
return fDelegate->first();
}
@@ -439,7 +439,7 @@ SimpleFilteredSentenceBreakIterator::preceding(int32_t offset) {
}
int32_t
-SimpleFilteredSentenceBreakIterator::previous(void) {
+SimpleFilteredSentenceBreakIterator::previous() {
return internalPrev(fDelegate->previous());
}
@@ -473,7 +473,7 @@ SimpleFilteredSentenceBreakIterator::following(int32_t offset) {
}
int32_t
-SimpleFilteredSentenceBreakIterator::last(void) {
+SimpleFilteredSentenceBreakIterator::last() {
// Don't suppress a break opportunity at the end of text.
return fDelegate->last();
}
@@ -516,7 +516,7 @@ SimpleFilteredBreakIteratorBuilder::SimpleFilteredBreakIteratorBuilder(const Loc
#endif
return; // leaves the builder empty, if you try to use it.
}
- LocalUResourceBundlePointer exceptions(ures_getByKeyWithFallback(b.getAlias(), "exceptions", NULL, &subStatus));
+ LocalUResourceBundlePointer exceptions(ures_getByKeyWithFallback(b.getAlias(), "exceptions", nullptr, &subStatus));
if (U_FAILURE(subStatus) || (subStatus == U_USING_DEFAULT_WARNING) ) {
status = subStatus; // copy the failing status
#if FB_DEBUG
@@ -524,7 +524,7 @@ SimpleFilteredBreakIteratorBuilder::SimpleFilteredBreakIteratorBuilder(const Loc
#endif
return; // leaves the builder empty, if you try to use it.
}
- LocalUResourceBundlePointer breaks(ures_getByKeyWithFallback(exceptions.getAlias(), "SentenceBreak", NULL, &subStatus));
+ LocalUResourceBundlePointer breaks(ures_getByKeyWithFallback(exceptions.getAlias(), "SentenceBreak", nullptr, &subStatus));
#if FB_DEBUG
{
@@ -590,7 +590,7 @@ SimpleFilteredBreakIteratorBuilder::build(BreakIterator* adoptBreakIterator, UEr
LocalPointer<UCharsTrieBuilder> builder(new UCharsTrieBuilder(status), status);
LocalPointer<UCharsTrieBuilder> builder2(new UCharsTrieBuilder(status), status);
if(U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
int32_t revCount = 0;
@@ -620,7 +620,7 @@ SimpleFilteredBreakIteratorBuilder::build(BreakIterator* adoptBreakIterator, UEr
} else {
FB_TRACE("build",abbr,false,i);
status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
partials[n] = 0; // default: not partial
n++;
@@ -682,21 +682,21 @@ SimpleFilteredBreakIteratorBuilder::build(BreakIterator* adoptBreakIterator, UEr
////if(debug2) u_printf("SUPPRESS- not Added(%d): /%S/ status=%s\n",partials[i], ustrs[i].getTerminatedBuffer(), u_errorName(status));
}
}
- FB_TRACE("AbbrCount",NULL,false, subCount);
+ FB_TRACE("AbbrCount",nullptr,false, subCount);
if(revCount>0) {
backwardsTrie.adoptInstead(builder->build(USTRINGTRIE_BUILD_FAST, status));
if(U_FAILURE(status)) {
- FB_TRACE(u_errorName(status),NULL,false, -1);
- return NULL;
+ FB_TRACE(u_errorName(status),nullptr,false, -1);
+ return nullptr;
}
}
if(fwdCount>0) {
forwardsPartialTrie.adoptInstead(builder2->build(USTRINGTRIE_BUILD_FAST, status));
if(U_FAILURE(status)) {
- FB_TRACE(u_errorName(status),NULL,false, -1);
- return NULL;
+ FB_TRACE(u_errorName(status),nullptr,false, -1);
+ return nullptr;
}
}
@@ -714,9 +714,9 @@ FilteredBreakIteratorBuilder::~FilteredBreakIteratorBuilder() {
FilteredBreakIteratorBuilder *
FilteredBreakIteratorBuilder::createInstance(const Locale& where, UErrorCode& status) {
- if(U_FAILURE(status)) return NULL;
+ if(U_FAILURE(status)) return nullptr;
LocalPointer<FilteredBreakIteratorBuilder> ret(new SimpleFilteredBreakIteratorBuilder(where, status), status);
- return (U_SUCCESS(status))? ret.orphan(): NULL;
+ return (U_SUCCESS(status))? ret.orphan(): nullptr;
}
FilteredBreakIteratorBuilder *
@@ -726,9 +726,9 @@ FilteredBreakIteratorBuilder::createInstance(UErrorCode &status) {
FilteredBreakIteratorBuilder *
FilteredBreakIteratorBuilder::createEmptyInstance(UErrorCode& status) {
- if(U_FAILURE(status)) return NULL;
+ if(U_FAILURE(status)) return nullptr;
LocalPointer<FilteredBreakIteratorBuilder> ret(new SimpleFilteredBreakIteratorBuilder(status), status);
- return (U_SUCCESS(status))? ret.orphan(): NULL;
+ return (U_SUCCESS(status))? ret.orphan(): nullptr;
}
U_NAMESPACE_END
diff --git a/Build/source/libs/icu/icu-src/source/common/filterednormalizer2.cpp b/Build/source/libs/icu/icu-src/source/common/filterednormalizer2.cpp
index 63f01206e97..5eafcb6d78f 100644
--- a/Build/source/libs/icu/icu-src/source/common/filterednormalizer2.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/filterednormalizer2.cpp
@@ -346,15 +346,15 @@ U_NAMESPACE_USE
U_CAPI UNormalizer2 * U_EXPORT2
unorm2_openFiltered(const UNormalizer2 *norm2, const USet *filterSet, UErrorCode *pErrorCode) {
if(U_FAILURE(*pErrorCode)) {
- return NULL;
+ return nullptr;
}
- if(filterSet==NULL) {
+ if(filterSet==nullptr) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
Normalizer2 *fn2=new FilteredNormalizer2(*(Normalizer2 *)norm2,
*UnicodeSet::fromUSet(filterSet));
- if(fn2==NULL) {
+ if(fn2==nullptr) {
*pErrorCode=U_MEMORY_ALLOCATION_ERROR;
}
return (UNormalizer2 *)fn2;
diff --git a/Build/source/libs/icu/icu-src/source/common/hash.h b/Build/source/libs/icu/icu-src/source/common/hash.h
index c9afeaf562e..bc103ee72ca 100644
--- a/Build/source/libs/icu/icu-src/source/common/hash.h
+++ b/Build/source/libs/icu/icu-src/source/common/hash.h
@@ -97,7 +97,7 @@ public:
inline int32_t removei(const UnicodeString& key);
- inline void removeAll(void);
+ inline void removeAll();
inline UBool containsKey(const UnicodeString& key) const;
@@ -159,7 +159,7 @@ inline Hashtable::Hashtable(UBool ignoreKeyCase, UErrorCode& status)
: uhash_hashUnicodeString,
ignoreKeyCase ? uhash_compareCaselessUnicodeString
: uhash_compareUnicodeString,
- NULL,
+ nullptr,
status);
}
@@ -170,25 +170,25 @@ inline Hashtable::Hashtable(UBool ignoreKeyCase, int32_t size, UErrorCode& statu
: uhash_hashUnicodeString,
ignoreKeyCase ? uhash_compareCaselessUnicodeString
: uhash_compareUnicodeString,
- NULL, size,
+ nullptr, size,
status);
}
inline Hashtable::Hashtable(UErrorCode& status)
: hash(0)
{
- init(uhash_hashUnicodeString, uhash_compareUnicodeString, NULL, status);
+ init(uhash_hashUnicodeString, uhash_compareUnicodeString, nullptr, status);
}
inline Hashtable::Hashtable()
: hash(0)
{
UErrorCode status = U_ZERO_ERROR;
- init(uhash_hashUnicodeString, uhash_compareUnicodeString, NULL, status);
+ init(uhash_hashUnicodeString, uhash_compareUnicodeString, nullptr, status);
}
inline Hashtable::~Hashtable() {
- if (hash != NULL) {
+ if (hash != nullptr) {
uhash_close(hash);
}
}
@@ -246,7 +246,7 @@ inline const UHashElement* Hashtable::nextElement(int32_t& pos) const {
return uhash_nextElement(hash, &pos);
}
-inline void Hashtable::removeAll(void) {
+inline void Hashtable::removeAll() {
uhash_removeAll(hash);
}
diff --git a/Build/source/libs/icu/icu-src/source/common/icudataver.cpp b/Build/source/libs/icu/icu-src/source/common/icudataver.cpp
index d3144113741..809d080512f 100644
--- a/Build/source/libs/icu/icu-src/source/common/icudataver.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/icudataver.cpp
@@ -15,14 +15,14 @@
#include "uresimp.h" /* for ures_getVersionByKey */
U_CAPI void U_EXPORT2 u_getDataVersion(UVersionInfo dataVersionFillin, UErrorCode *status) {
- UResourceBundle *icudatares = NULL;
+ UResourceBundle *icudatares = nullptr;
if (U_FAILURE(*status)) {
return;
}
- if (dataVersionFillin != NULL) {
- icudatares = ures_openDirect(NULL, U_ICU_VERSION_BUNDLE , status);
+ if (dataVersionFillin != nullptr) {
+ icudatares = ures_openDirect(nullptr, U_ICU_VERSION_BUNDLE , status);
if (U_SUCCESS(*status)) {
ures_getVersionByKey(icudatares, U_ICU_DATA_KEY, dataVersionFillin, status);
}
diff --git a/Build/source/libs/icu/icu-src/source/common/icuplug.cpp b/Build/source/libs/icu/icu-src/source/common/icuplug.cpp
index 72b5d271755..7aa70a506b0 100644
--- a/Build/source/libs/icu/icu-src/source/common/icuplug.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/icuplug.cpp
@@ -52,9 +52,9 @@ struct UPlugData {
UPlugEntrypoint *entrypoint; /**< plugin entrypoint */
uint32_t structSize; /**< initialized to the size of this structure */
uint32_t token; /**< must be U_PLUG_TOKEN */
- void *lib; /**< plugin library, or NULL */
+ void *lib; /**< plugin library, or nullptr */
char libName[UPLUG_NAME_MAX]; /**< library name */
- char sym[UPLUG_NAME_MAX]; /**< plugin symbol, or NULL */
+ char sym[UPLUG_NAME_MAX]; /**< plugin symbol, or nullptr */
char config[UPLUG_NAME_MAX]; /**< configuration data */
void *context; /**< user context data */
char name[UPLUG_NAME_MAX]; /**< name of plugin */
@@ -148,9 +148,9 @@ static int32_t searchForLibrary(void *lib) {
U_CAPI char * U_EXPORT2
uplug_findLibrary(void *lib, UErrorCode *status) {
int32_t libEnt;
- char *ret = NULL;
+ char *ret = nullptr;
if(U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
libEnt = searchForLibrary(lib);
if(libEnt!=-1) {
@@ -164,9 +164,9 @@ uplug_findLibrary(void *lib, UErrorCode *status) {
U_CAPI void * U_EXPORT2
uplug_openLibrary(const char *libName, UErrorCode *status) {
int32_t libEntry = -1;
- void *lib = NULL;
+ void *lib = nullptr;
- if(U_FAILURE(*status)) return NULL;
+ if(U_FAILURE(*status)) return nullptr;
libEntry = searchForLibraryName(libName);
if(libEntry == -1) {
@@ -177,7 +177,7 @@ uplug_openLibrary(const char *libName, UErrorCode *status) {
#if UPLUG_TRACE
DBG((stderr, "uplug_openLibrary() - out of library slots (max %d)\n", libraryMax));
#endif
- return NULL;
+ return nullptr;
}
/* Some operating systems don't want
DL operations from multiple threads. */
@@ -186,9 +186,9 @@ uplug_openLibrary(const char *libName, UErrorCode *status) {
DBG((stderr, "uplug_openLibrary(%s,%s) libEntry %d, lib %p\n", libName, u_errorName(*status), libEntry, lib));
#endif
- if(libraryList[libEntry].lib == NULL || U_FAILURE(*status)) {
+ if(libraryList[libEntry].lib == nullptr || U_FAILURE(*status)) {
/* cleanup. */
- libraryList[libEntry].lib = NULL; /* failure with open */
+ libraryList[libEntry].lib = nullptr; /* failure with open */
libraryList[libEntry].name[0] = 0;
#if UPLUG_TRACE
DBG((stderr, "uplug_openLibrary(%s,%s) libEntry %d, lib %p\n", libName, u_errorName(*status), libEntry, lib));
@@ -252,14 +252,14 @@ static int32_t uplug_pluginNumber(UPlugData* d) {
U_CAPI UPlugData * U_EXPORT2
uplug_nextPlug(UPlugData *prior) {
- if(prior==NULL) {
+ if(prior==nullptr) {
return pluginList;
} else {
UPlugData *nextPlug = &prior[1];
UPlugData *pastPlug = &pluginList[pluginCount];
if(nextPlug>=pastPlug) {
- return NULL;
+ return nullptr;
} else {
return nextPlug;
}
@@ -273,7 +273,7 @@ uplug_nextPlug(UPlugData *prior) {
*/
static void uplug_callPlug(UPlugData *plug, UPlugReason reason, UErrorCode *status) {
UPlugTokenReturn token;
- if(plug==NULL||U_FAILURE(*status)) {
+ if(plug==nullptr||U_FAILURE(*status)) {
return;
}
token = (*(plug->entrypoint))(plug, reason, status);
@@ -330,15 +330,15 @@ static void uplug_loadPlug(UPlugData *plug, UErrorCode *status) {
static UPlugData *uplug_allocateEmptyPlug(UErrorCode *status)
{
- UPlugData *plug = NULL;
+ UPlugData *plug = nullptr;
if(U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
if(pluginCount == UPLUG_PLUGIN_INITIAL_COUNT) {
*status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
plug = &pluginList[pluginCount++];
@@ -353,8 +353,8 @@ static UPlugData *uplug_allocateEmptyPlug(UErrorCode *status)
plug->libName[0] = 0;
plug->config[0]=0;
plug->sym[0]=0;
- plug->lib=NULL;
- plug->entrypoint=NULL;
+ plug->lib=nullptr;
+ plug->entrypoint=nullptr;
return plug;
@@ -364,16 +364,16 @@ static UPlugData *uplug_allocatePlug(UPlugEntrypoint *entrypoint, const char *co
UErrorCode *status) {
UPlugData *plug = uplug_allocateEmptyPlug(status);
if(U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
- if(config!=NULL) {
+ if(config!=nullptr) {
uprv_strncpy(plug->config, config, UPLUG_NAME_MAX);
} else {
plug->config[0] = 0;
}
- if(symName!=NULL) {
+ if(symName!=nullptr) {
uprv_strncpy(plug->sym, symName, UPLUG_NAME_MAX);
} else {
plug->sym[0] = 0;
@@ -393,7 +393,7 @@ static void uplug_deallocatePlug(UPlugData *plug, UErrorCode *status) {
uplug_closeLibrary(plug->lib, &subStatus);
#endif
}
- plug->lib = NULL;
+ plug->lib = nullptr;
if(U_SUCCESS(*status) && U_FAILURE(subStatus)) {
*status = subStatus;
}
@@ -410,7 +410,7 @@ static void uplug_deallocatePlug(UPlugData *plug, UErrorCode *status) {
}
static void uplug_doUnloadPlug(UPlugData *plugToRemove, UErrorCode *status) {
- if(plugToRemove != NULL) {
+ if(plugToRemove != nullptr) {
uplug_unloadPlug(plugToRemove, status);
uplug_deallocatePlug(plugToRemove, status);
}
@@ -418,14 +418,14 @@ static void uplug_doUnloadPlug(UPlugData *plugToRemove, UErrorCode *status) {
U_CAPI void U_EXPORT2
uplug_removePlug(UPlugData *plug, UErrorCode *status) {
- UPlugData *cursor = NULL;
- UPlugData *plugToRemove = NULL;
+ UPlugData *cursor = nullptr;
+ UPlugData *plugToRemove = nullptr;
if(U_FAILURE(*status)) return;
- for(cursor=pluginList;cursor!=NULL;) {
+ for(cursor=pluginList;cursor!=nullptr;) {
if(cursor==plug) {
plugToRemove = plug;
- cursor=NULL;
+ cursor=nullptr;
} else {
cursor = uplug_nextPlug(cursor);
}
@@ -481,7 +481,7 @@ uplug_getLibraryName(UPlugData *data, UErrorCode *status) {
#if U_ENABLE_DYLOAD
return uplug_findLibrary(data->lib, status);
#else
- return NULL;
+ return nullptr;
#endif
}
}
@@ -510,7 +510,7 @@ uplug_getConfiguration(UPlugData *data) {
U_CAPI UPlugData* U_EXPORT2
uplug_getPlugInternal(int32_t n) {
if(n <0 || n >= pluginCount) {
- return NULL;
+ return nullptr;
} else {
return &(pluginList[n]);
}
@@ -530,7 +530,7 @@ uplug_getPlugLoadStatus(UPlugData *plug) {
*/
static UPlugData* uplug_initPlugFromEntrypointAndLibrary(UPlugEntrypoint *entrypoint, const char *config, void *lib, const char *sym,
UErrorCode *status) {
- UPlugData *plug = NULL;
+ UPlugData *plug = nullptr;
plug = uplug_allocatePlug(entrypoint, config, lib, sym, status);
@@ -538,13 +538,13 @@ static UPlugData* uplug_initPlugFromEntrypointAndLibrary(UPlugEntrypoint *entryp
return plug;
} else {
uplug_deallocatePlug(plug, status);
- return NULL;
+ return nullptr;
}
}
U_CAPI UPlugData* U_EXPORT2
uplug_loadPlugFromEntrypoint(UPlugEntrypoint *entrypoint, const char *config, UErrorCode *status) {
- UPlugData* plug = uplug_initPlugFromEntrypointAndLibrary(entrypoint, config, NULL, NULL, status);
+ UPlugData* plug = uplug_initPlugFromEntrypointAndLibrary(entrypoint, config, nullptr, nullptr, status);
uplug_loadPlug(plug, status);
return plug;
}
@@ -555,25 +555,25 @@ static UPlugData*
uplug_initErrorPlug(const char *libName, const char *sym, const char *config, const char *nameOrError, UErrorCode loadStatus, UErrorCode *status)
{
UPlugData *plug = uplug_allocateEmptyPlug(status);
- if(U_FAILURE(*status)) return NULL;
+ if(U_FAILURE(*status)) return nullptr;
plug->pluginStatus = loadStatus;
plug->awaitingLoad = false; /* Won't load. */
plug->dontUnload = true; /* cannot unload. */
- if(sym!=NULL) {
+ if(sym!=nullptr) {
uprv_strncpy(plug->sym, sym, UPLUG_NAME_MAX);
}
- if(libName!=NULL) {
+ if(libName!=nullptr) {
uprv_strncpy(plug->libName, libName, UPLUG_NAME_MAX);
}
- if(nameOrError!=NULL) {
+ if(nameOrError!=nullptr) {
uprv_strncpy(plug->name, nameOrError, UPLUG_NAME_MAX);
}
- if(config!=NULL) {
+ if(config!=nullptr) {
uprv_strncpy(plug->config, config, UPLUG_NAME_MAX);
}
@@ -585,39 +585,39 @@ uplug_initErrorPlug(const char *libName, const char *sym, const char *config, co
*/
static UPlugData*
uplug_initPlugFromLibrary(const char *libName, const char *sym, const char *config, UErrorCode *status) {
- void *lib = NULL;
- UPlugData *plug = NULL;
- if(U_FAILURE(*status)) { return NULL; }
+ void *lib = nullptr;
+ UPlugData *plug = nullptr;
+ if(U_FAILURE(*status)) { return nullptr; }
lib = uplug_openLibrary(libName, status);
- if(lib!=NULL && U_SUCCESS(*status)) {
- UPlugEntrypoint *entrypoint = NULL;
+ if(lib!=nullptr && U_SUCCESS(*status)) {
+ UPlugEntrypoint *entrypoint = nullptr;
entrypoint = (UPlugEntrypoint*)uprv_dlsym_func(lib, sym, status);
- if(entrypoint!=NULL&&U_SUCCESS(*status)) {
+ if(entrypoint!=nullptr&&U_SUCCESS(*status)) {
plug = uplug_initPlugFromEntrypointAndLibrary(entrypoint, config, lib, sym, status);
- if(plug!=NULL&&U_SUCCESS(*status)) {
+ if(plug!=nullptr&&U_SUCCESS(*status)) {
plug->lib = lib; /* plug takes ownership of library */
- lib = NULL; /* library is now owned by plugin. */
+ lib = nullptr; /* library is now owned by plugin. */
}
} else {
UErrorCode subStatus = U_ZERO_ERROR;
- plug = uplug_initErrorPlug(libName,sym,config,"ERROR: Could not load entrypoint",(lib==NULL)?U_MISSING_RESOURCE_ERROR:*status,&subStatus);
+ plug = uplug_initErrorPlug(libName,sym,config,"ERROR: Could not load entrypoint",(lib==nullptr)?U_MISSING_RESOURCE_ERROR:*status,&subStatus);
}
- if(lib!=NULL) { /* still need to close the lib */
+ if(lib!=nullptr) { /* still need to close the lib */
UErrorCode subStatus = U_ZERO_ERROR;
uplug_closeLibrary(lib, &subStatus); /* don't care here */
}
} else {
UErrorCode subStatus = U_ZERO_ERROR;
- plug = uplug_initErrorPlug(libName,sym,config,"ERROR: could not load library",(lib==NULL)?U_MISSING_RESOURCE_ERROR:*status,&subStatus);
+ plug = uplug_initErrorPlug(libName,sym,config,"ERROR: could not load library",(lib==nullptr)?U_MISSING_RESOURCE_ERROR:*status,&subStatus);
}
return plug;
}
U_CAPI UPlugData* U_EXPORT2
uplug_loadPlugFromLibrary(const char *libName, const char *sym, const char *config, UErrorCode *status) {
- UPlugData *plug = NULL;
- if(U_FAILURE(*status)) { return NULL; }
+ UPlugData *plug = nullptr;
+ if(U_FAILURE(*status)) { return nullptr; }
plug = uplug_initPlugFromLibrary(libName, sym, config, status);
uplug_loadPlug(plug, status);
@@ -632,7 +632,7 @@ U_CAPI UPlugLevel U_EXPORT2 uplug_getCurrentLevel() {
return gCurrentLevel;
}
-static UBool U_CALLCONV uplug_cleanup(void)
+static UBool U_CALLCONV uplug_cleanup()
{
int32_t i;
@@ -712,7 +712,7 @@ uplug_getPluginFile() {
#if U_ENABLE_DYLOAD && !UCONFIG_NO_FILE_IO
return plugin_file;
#else
- return NULL;
+ return nullptr;
#endif
}
@@ -728,7 +728,7 @@ uplug_init(UErrorCode *status) {
const char *env = getenv("ICU_PLUGINS");
if(U_FAILURE(*status)) return;
- if(env != NULL) {
+ if(env != nullptr) {
plugin_dir.append(env, -1, *status);
}
if(U_FAILURE(*status)) return;
@@ -791,7 +791,7 @@ uplug_init(UErrorCode *status) {
#ifdef __MVS__
if (iscics()) /* 12 Nov 2011 JAM */
{
- f = NULL;
+ f = nullptr;
}
else
#endif
@@ -799,9 +799,9 @@ uplug_init(UErrorCode *status) {
f = fopen(pluginFile.data(), "r");
}
- if(f != NULL) {
+ if(f != nullptr) {
char linebuf[1024];
- char *p, *libName=NULL, *symName=NULL, *config=NULL;
+ char *p, *libName=nullptr, *symName=nullptr, *config=nullptr;
int32_t line = 0;
@@ -843,7 +843,7 @@ uplug_init(UErrorCode *status) {
}
/* chop whitespace at the end of the config */
- if(config!=NULL&&*config!=0) {
+ if(config!=nullptr&&*config!=0) {
p = config+strlen(config);
while(p>config&&isspace((int)*(--p))) {
*p=0;
diff --git a/Build/source/libs/icu/icu-src/source/common/loadednormalizer2impl.cpp b/Build/source/libs/icu/icu-src/source/common/loadednormalizer2impl.cpp
index 24ff629f84f..99b8f3e86c6 100644
--- a/Build/source/libs/icu/icu-src/source/common/loadednormalizer2impl.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/loadednormalizer2impl.cpp
@@ -33,7 +33,7 @@ U_NAMESPACE_BEGIN
class LoadedNormalizer2Impl : public Normalizer2Impl {
public:
- LoadedNormalizer2Impl() : memory(NULL), ownedTrie(NULL) {}
+ LoadedNormalizer2Impl() : memory(nullptr), ownedTrie(nullptr) {}
virtual ~LoadedNormalizer2Impl();
void load(const char *packageName, const char *name, UErrorCode &errorCode);
@@ -93,7 +93,7 @@ LoadedNormalizer2Impl::load(const char *packageName, const char *name, UErrorCod
int32_t offset=inIndexes[IX_NORM_TRIE_OFFSET];
int32_t nextOffset=inIndexes[IX_EXTRA_DATA_OFFSET];
ownedTrie=ucptrie_openFromBinary(UCPTRIE_TYPE_FAST, UCPTRIE_VALUE_BITS_16,
- inBytes+offset, nextOffset-offset, NULL,
+ inBytes+offset, nextOffset-offset, nullptr,
&errorCode);
if(U_FAILURE(errorCode)) {
return;
@@ -117,12 +117,12 @@ Norm2AllModes::createInstance(const char *packageName,
const char *name,
UErrorCode &errorCode) {
if(U_FAILURE(errorCode)) {
- return NULL;
+ return nullptr;
}
LoadedNormalizer2Impl *impl=new LoadedNormalizer2Impl;
- if(impl==NULL) {
+ if(impl==nullptr) {
errorCode=U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
impl->load(packageName, name, errorCode);
return createInstance(impl, errorCode);
@@ -143,19 +143,24 @@ static icu::UInitOnce nfkcInitOnce {};
static Norm2AllModes *nfkc_cfSingleton;
static icu::UInitOnce nfkc_cfInitOnce {};
-static UHashtable *cache=NULL;
+static Norm2AllModes *nfkc_scfSingleton;
+static icu::UInitOnce nfkc_scfInitOnce {};
+
+static UHashtable *cache=nullptr;
// UInitOnce singleton initialization function
static void U_CALLCONV initSingletons(const char *what, UErrorCode &errorCode) {
#if !NORM2_HARDCODE_NFC_DATA
if (uprv_strcmp(what, "nfc") == 0) {
- nfcSingleton = Norm2AllModes::createInstance(NULL, "nfc", errorCode);
+ nfcSingleton = Norm2AllModes::createInstance(nullptr, "nfc", errorCode);
} else
#endif
if (uprv_strcmp(what, "nfkc") == 0) {
- nfkcSingleton = Norm2AllModes::createInstance(NULL, "nfkc", errorCode);
+ nfkcSingleton = Norm2AllModes::createInstance(nullptr, "nfkc", errorCode);
} else if (uprv_strcmp(what, "nfkc_cf") == 0) {
- nfkc_cfSingleton = Norm2AllModes::createInstance(NULL, "nfkc_cf", errorCode);
+ nfkc_cfSingleton = Norm2AllModes::createInstance(nullptr, "nfkc_cf", errorCode);
+ } else if (uprv_strcmp(what, "nfkc_scf") == 0) {
+ nfkc_scfSingleton = Norm2AllModes::createInstance(nullptr, "nfkc_scf", errorCode);
} else {
UPRV_UNREACHABLE_EXIT; // Unknown singleton
}
@@ -171,20 +176,24 @@ static void U_CALLCONV deleteNorm2AllModes(void *allModes) {
static UBool U_CALLCONV uprv_loaded_normalizer2_cleanup() {
#if !NORM2_HARDCODE_NFC_DATA
delete nfcSingleton;
- nfcSingleton = NULL;
+ nfcSingleton = nullptr;
nfcInitOnce.reset();
#endif
delete nfkcSingleton;
- nfkcSingleton = NULL;
+ nfkcSingleton = nullptr;
nfkcInitOnce.reset();
delete nfkc_cfSingleton;
- nfkc_cfSingleton = NULL;
+ nfkc_cfSingleton = nullptr;
nfkc_cfInitOnce.reset();
+ delete nfkc_scfSingleton;
+ nfkc_scfSingleton = nullptr;
+ nfkc_scfInitOnce.reset();
+
uhash_close(cache);
- cache=NULL;
+ cache=nullptr;
return true;
}
@@ -193,7 +202,7 @@ U_CDECL_END
#if !NORM2_HARDCODE_NFC_DATA
const Norm2AllModes *
Norm2AllModes::getNFCInstance(UErrorCode &errorCode) {
- if(U_FAILURE(errorCode)) { return NULL; }
+ if(U_FAILURE(errorCode)) { return nullptr; }
umtx_initOnce(nfcInitOnce, &initSingletons, "nfc", errorCode);
return nfcSingleton;
}
@@ -201,64 +210,77 @@ Norm2AllModes::getNFCInstance(UErrorCode &errorCode) {
const Norm2AllModes *
Norm2AllModes::getNFKCInstance(UErrorCode &errorCode) {
- if(U_FAILURE(errorCode)) { return NULL; }
+ if(U_FAILURE(errorCode)) { return nullptr; }
umtx_initOnce(nfkcInitOnce, &initSingletons, "nfkc", errorCode);
return nfkcSingleton;
}
const Norm2AllModes *
Norm2AllModes::getNFKC_CFInstance(UErrorCode &errorCode) {
- if(U_FAILURE(errorCode)) { return NULL; }
+ if(U_FAILURE(errorCode)) { return nullptr; }
umtx_initOnce(nfkc_cfInitOnce, &initSingletons, "nfkc_cf", errorCode);
return nfkc_cfSingleton;
}
+const Norm2AllModes *
+Norm2AllModes::getNFKC_SCFInstance(UErrorCode &errorCode) {
+ if(U_FAILURE(errorCode)) { return nullptr; }
+ umtx_initOnce(nfkc_scfInitOnce, &initSingletons, "nfkc_scf", errorCode);
+ return nfkc_scfSingleton;
+}
+
#if !NORM2_HARDCODE_NFC_DATA
const Normalizer2 *
Normalizer2::getNFCInstance(UErrorCode &errorCode) {
const Norm2AllModes *allModes=Norm2AllModes::getNFCInstance(errorCode);
- return allModes!=NULL ? &allModes->comp : NULL;
+ return allModes!=nullptr ? &allModes->comp : nullptr;
}
const Normalizer2 *
Normalizer2::getNFDInstance(UErrorCode &errorCode) {
const Norm2AllModes *allModes=Norm2AllModes::getNFCInstance(errorCode);
- return allModes!=NULL ? &allModes->decomp : NULL;
+ return allModes!=nullptr ? &allModes->decomp : nullptr;
}
const Normalizer2 *Normalizer2Factory::getFCDInstance(UErrorCode &errorCode) {
const Norm2AllModes *allModes=Norm2AllModes::getNFCInstance(errorCode);
- return allModes!=NULL ? &allModes->fcd : NULL;
+ return allModes!=nullptr ? &allModes->fcd : nullptr;
}
const Normalizer2 *Normalizer2Factory::getFCCInstance(UErrorCode &errorCode) {
const Norm2AllModes *allModes=Norm2AllModes::getNFCInstance(errorCode);
- return allModes!=NULL ? &allModes->fcc : NULL;
+ return allModes!=nullptr ? &allModes->fcc : nullptr;
}
const Normalizer2Impl *
Normalizer2Factory::getNFCImpl(UErrorCode &errorCode) {
const Norm2AllModes *allModes=Norm2AllModes::getNFCInstance(errorCode);
- return allModes!=NULL ? allModes->impl : NULL;
+ return allModes!=nullptr ? allModes->impl : nullptr;
}
#endif
const Normalizer2 *
Normalizer2::getNFKCInstance(UErrorCode &errorCode) {
const Norm2AllModes *allModes=Norm2AllModes::getNFKCInstance(errorCode);
- return allModes!=NULL ? &allModes->comp : NULL;
+ return allModes!=nullptr ? &allModes->comp : nullptr;
}
const Normalizer2 *
Normalizer2::getNFKDInstance(UErrorCode &errorCode) {
const Norm2AllModes *allModes=Norm2AllModes::getNFKCInstance(errorCode);
- return allModes!=NULL ? &allModes->decomp : NULL;
+ return allModes!=nullptr ? &allModes->decomp : nullptr;
}
const Normalizer2 *
Normalizer2::getNFKCCasefoldInstance(UErrorCode &errorCode) {
const Norm2AllModes *allModes=Norm2AllModes::getNFKC_CFInstance(errorCode);
- return allModes!=NULL ? &allModes->comp : NULL;
+ return allModes!=nullptr ? &allModes->comp : nullptr;
+}
+
+const Normalizer2 *
+Normalizer2::getNFKCSimpleCasefoldInstance(UErrorCode &errorCode) {
+ const Norm2AllModes *allModes=Norm2AllModes::getNFKC_SCFInstance(errorCode);
+ return allModes!=nullptr ? &allModes->comp : nullptr;
}
const Normalizer2 *
@@ -267,50 +289,52 @@ Normalizer2::getInstance(const char *packageName,
UNormalization2Mode mode,
UErrorCode &errorCode) {
if(U_FAILURE(errorCode)) {
- return NULL;
+ return nullptr;
}
- if(name==NULL || *name==0) {
+ if(name==nullptr || *name==0) {
errorCode=U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
- const Norm2AllModes *allModes=NULL;
- if(packageName==NULL) {
+ const Norm2AllModes *allModes=nullptr;
+ if(packageName==nullptr) {
if(0==uprv_strcmp(name, "nfc")) {
allModes=Norm2AllModes::getNFCInstance(errorCode);
} else if(0==uprv_strcmp(name, "nfkc")) {
allModes=Norm2AllModes::getNFKCInstance(errorCode);
} else if(0==uprv_strcmp(name, "nfkc_cf")) {
allModes=Norm2AllModes::getNFKC_CFInstance(errorCode);
+ } else if(0==uprv_strcmp(name, "nfkc_scf")) {
+ allModes=Norm2AllModes::getNFKC_SCFInstance(errorCode);
}
}
- if(allModes==NULL && U_SUCCESS(errorCode)) {
+ if(allModes==nullptr && U_SUCCESS(errorCode)) {
{
Mutex lock;
- if(cache!=NULL) {
+ if(cache!=nullptr) {
allModes=(Norm2AllModes *)uhash_get(cache, name);
}
}
- if(allModes==NULL) {
+ if(allModes==nullptr) {
ucln_common_registerCleanup(UCLN_COMMON_LOADED_NORMALIZER2, uprv_loaded_normalizer2_cleanup);
LocalPointer<Norm2AllModes> localAllModes(
Norm2AllModes::createInstance(packageName, name, errorCode));
if(U_SUCCESS(errorCode)) {
Mutex lock;
- if(cache==NULL) {
- cache=uhash_open(uhash_hashChars, uhash_compareChars, NULL, &errorCode);
+ if(cache==nullptr) {
+ cache=uhash_open(uhash_hashChars, uhash_compareChars, nullptr, &errorCode);
if(U_FAILURE(errorCode)) {
- return NULL;
+ return nullptr;
}
uhash_setKeyDeleter(cache, uprv_free);
uhash_setValueDeleter(cache, deleteNorm2AllModes);
}
void *temp=uhash_get(cache, name);
- if(temp==NULL) {
+ if(temp==nullptr) {
int32_t keyLength= static_cast<int32_t>(uprv_strlen(name)+1);
char *nameCopy=(char *)uprv_malloc(keyLength);
- if(nameCopy==NULL) {
+ if(nameCopy==nullptr) {
errorCode=U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
uprv_memcpy(nameCopy, name, keyLength);
allModes=localAllModes.getAlias();
@@ -322,7 +346,7 @@ Normalizer2::getInstance(const char *packageName,
}
}
}
- if(allModes!=NULL && U_SUCCESS(errorCode)) {
+ if(allModes!=nullptr && U_SUCCESS(errorCode)) {
switch(mode) {
case UNORM2_COMPOSE:
return &allModes->comp;
@@ -336,13 +360,13 @@ Normalizer2::getInstance(const char *packageName,
break; // do nothing
}
}
- return NULL;
+ return nullptr;
}
const Normalizer2 *
Normalizer2Factory::getInstance(UNormalizationMode mode, UErrorCode &errorCode) {
if(U_FAILURE(errorCode)) {
- return NULL;
+ return nullptr;
}
switch(mode) {
case UNORM_NFD:
@@ -363,13 +387,13 @@ Normalizer2Factory::getInstance(UNormalizationMode mode, UErrorCode &errorCode)
const Normalizer2Impl *
Normalizer2Factory::getNFKCImpl(UErrorCode &errorCode) {
const Norm2AllModes *allModes=Norm2AllModes::getNFKCInstance(errorCode);
- return allModes!=NULL ? allModes->impl : NULL;
+ return allModes!=nullptr ? allModes->impl : nullptr;
}
const Normalizer2Impl *
Normalizer2Factory::getNFKC_CFImpl(UErrorCode &errorCode) {
const Norm2AllModes *allModes=Norm2AllModes::getNFKC_CFInstance(errorCode);
- return allModes!=NULL ? allModes->impl : NULL;
+ return allModes!=nullptr ? allModes->impl : nullptr;
}
U_NAMESPACE_END
@@ -394,6 +418,11 @@ unorm2_getNFKCCasefoldInstance(UErrorCode *pErrorCode) {
}
U_CAPI const UNormalizer2 * U_EXPORT2
+unorm2_getNFKCSimpleCasefoldInstance(UErrorCode *pErrorCode) {
+ return (const UNormalizer2 *)Normalizer2::getNFKCSimpleCasefoldInstance(*pErrorCode);
+}
+
+U_CAPI const UNormalizer2 * U_EXPORT2
unorm2_getInstance(const char *packageName,
const char *name,
UNormalization2Mode mode,
diff --git a/Build/source/libs/icu/icu-src/source/common/localefallback_data.h b/Build/source/libs/icu/icu-src/source/common/localefallback_data.h
index da725de42d9..c847edefff5 100644
--- a/Build/source/libs/icu/icu-src/source/common/localefallback_data.h
+++ b/Build/source/libs/icu/icu-src/source/common/localefallback_data.h
@@ -11,418 +11,1123 @@
//======================================================================
// Default script table
const char scriptCodeChars[] =
- "Aghb\0Ahom\0Arab\0Armi\0Armn\0Avst\0Bamu\0Bass\0Beng\0Brah\0Cakm\0"
- "Cans\0Cari\0Cham\0Cher\0Chrs\0Copt\0Cprt\0Cyrl\0Deva\0Egyp\0Ethi\0"
- "Geor\0Gong\0Gonm\0Goth\0Grek\0Gujr\0Guru\0Hans\0Hant\0Hebr\0Hluw\0"
- "Hmnp\0Ital\0Jpan\0Kali\0Kana\0Kawi\0Khar\0Khmr\0Kits\0Knda\0Kore\0"
- "Lana\0Laoo\0Lepc\0Lina\0Lisu\0Lyci\0Lydi\0Mand\0Mani\0Medf\0Merc\0"
- "Mlym\0Mong\0Mroo\0Mymr\0Narb\0Nkoo\0Nshu\0Ogam\0Olck\0Orkh\0Orya\0"
- "Osge\0Ougr\0Pauc\0Phli\0Phnx\0Plrd\0Prti\0Rohg\0Runr\0Samr\0Sarb\0"
- "Saur\0Sgnw\0Sinh\0Sogd\0Sora\0Soyo\0Syrc\0Tale\0Talu\0Taml\0Tang\0"
- "Tavt\0Telu\0Tfng\0Thaa\0Thai\0Tibt\0Tnsa\0Toto\0Ugar\0Vaii\0Wcho\0"
- "Xpeo\0Xsux\0Yiii\0";
+ "Aghb\0Ahom\0Arab\0Armi\0Armn\0Avst\0Bamu\0Bass\0Batk\0Beng\0Bopo\0"
+ "Brah\0Cakm\0Cans\0Cari\0Cham\0Cher\0Chrs\0Copt\0Cprt\0Cyrl\0Deva\0"
+ "Egyp\0Elym\0Ethi\0Geor\0Gong\0Gonm\0Goth\0Gran\0Grek\0Gujr\0Guru\0"
+ "Hang\0Hani\0Hans\0Hant\0Hebr\0Hluw\0Hmnp\0Ital\0Java\0Jpan\0Kali\0"
+ "Kana\0Kawi\0Khar\0Khmr\0Kits\0Knda\0Kore\0Lana\0Laoo\0Lepc\0Lina\0"
+ "Linb\0Lisu\0Lyci\0Lydi\0Mand\0Mani\0Marc\0Medf\0Merc\0Mlym\0Modi\0"
+ "Mong\0Mroo\0Mtei\0Mymr\0Narb\0Newa\0Nkoo\0Nshu\0Ogam\0Olck\0Orkh\0"
+ "Orya\0Osge\0Pauc\0Phli\0Phnx\0Plrd\0Prti\0Rjng\0Rohg\0Runr\0Samr\0"
+ "Sarb\0Saur\0Sgnw\0Sinh\0Sogd\0Sora\0Soyo\0Syrc\0Tagb\0Takr\0Tale\0"
+ "Talu\0Taml\0Tang\0Tavt\0Telu\0Tfng\0Thaa\0Thai\0Tibt\0Tnsa\0Toto\0"
+ "Ugar\0Vaii\0Wcho\0Xpeo\0Xsux\0Yiii\0";
const char dsLocaleIDChars[] =
- "ab\0abq\0adp\0ady\0ae\0aeb\0aho\0ajt\0akk\0alt\0am\0apc\0apd\0"
- "ar\0arc\0arq\0ars\0ary\0arz\0as\0ase\0av\0avl\0awa\0az_IQ\0az_IR\0"
- "az_RU\0ba\0bal\0bap\0bax\0bcq\0be\0bej\0bfq\0bft\0bfy\0bg\0bgc\0"
- "bgn\0bgx\0bhb\0bhi\0bho\0bji\0bjj\0blt\0bn\0bo\0bpy\0bqi\0bra\0"
- "brh\0brx\0bsq\0bst\0btv\0bua\0byn\0ccp\0ce\0chm\0chr\0cja\0cjm\0"
- "ckb\0cmg\0cop\0cr\0crh\0crk\0crl\0csw\0ctd\0cu\0cv\0dar\0dcc\0"
- "dgl\0dmf\0doi\0drh\0drs\0dty\0dv\0dz\0egy\0eky\0el\0esg\0ett\0"
- "fa\0fia\0fub\0gan\0gbm\0gbz\0gez\0ggn\0gjk\0gju\0glk\0gmv\0gof\0"
- "gom\0gon\0got\0grc\0grt\0gu\0gvr\0gwc\0gwt\0ha_CM\0ha_SD\0hak\0"
- "haz\0hdy\0he\0hi\0hlu\0hmd\0hnd\0hne\0hnj\0hno\0hoc\0hoj\0hsn\0"
- "hy\0ii\0inh\0iu\0iw\0ja\0ji\0jml\0ka\0kaa\0kaw\0kbd\0kby\0kdt\0"
- "kfr\0kfy\0khb\0khn\0kht\0khw\0kjg\0kk\0kk_AF\0kk_CN\0kk_IR\0kk_MN\0"
- "km\0kn\0ko\0koi\0kok\0kqy\0krc\0kru\0ks\0ktb\0ku_LB\0kum\0kv\0"
- "kvx\0kxc\0kxl\0kxm\0kxp\0ky\0ky_CN\0kzh\0lab\0lad\0lah\0lbe\0"
- "lcp\0lep\0lez\0lif\0lis\0lki\0lmn\0lo\0lrc\0luz\0lwl\0lzh\0mag\0"
- "mai\0man_GN\0mde\0mdf\0mdx\0mfa\0mgp\0mk\0mki\0ml\0mn\0mn_CN\0"
- "mni\0mnw\0mr\0mrd\0mrj\0mro\0ms_CC\0mtr\0mvy\0mwr\0mww\0my\0mym\0"
- "myv\0myz\0mzn\0nan\0ne\0new\0nnp\0nod\0noe\0non\0nqo\0nsk\0nst\0"
- "oj\0ojs\0or\0oru\0os\0osa\0ota\0otk\0oui\0pa\0pa_PK\0pal\0peo\0"
- "phl\0phn\0pka\0pnt\0ppa\0pra\0prd\0ps\0raj\0rhg\0rif\0rjs\0rkt\0"
- "rmt\0ru\0rue\0ryu\0sa\0sah\0sat\0saz\0sck\0scl\0sd\0sd_IN\0sdh\0"
- "sga\0sgw\0shi\0shn\0shu\0si\0skr\0smp\0sog\0sou\0sr\0srb\0srx\0"
- "swb\0swv\0syl\0syr\0ta\0taj\0tcy\0tdd\0tdg\0tdh\0te\0tg\0tg_PK\0"
- "th\0thl\0thq\0thr\0ti\0tig\0tkt\0trw\0tsd\0tsf\0tsj\0tt\0tts\0"
- "txg\0txo\0tyv\0udi\0udm\0ug\0ug_KZ\0ug_MN\0uga\0uk\0unr\0unr_NP\0"
- "unx\0ur\0uz_AF\0uz_CN\0vai\0wal\0wbq\0wbr\0wni\0wsg\0wtm\0wuu\0"
- "xco\0xcr\0xlc\0xld\0xmf\0xmn\0xmr\0xna\0xnr\0xpr\0xsa\0xsr\0yi\0"
- "yue\0yue_CN\0zdj\0zgh\0zh\0zh_AU\0zh_BN\0zh_GB\0zh_GF\0zh_HK\0"
- "zh_ID\0zh_MO\0zh_PA\0zh_PF\0zh_PH\0zh_SR\0zh_TH\0zh_TW\0zh_US\0"
- "zh_VN\0zhx\0zkt\0";
+ "aaf\0aao\0aat\0ab\0abh\0abl\0abv\0acm\0acq\0acw\0acx\0adf\0adx\0"
+ "ady\0ae\0aeb\0aec\0aee\0aeq\0afb\0agi\0agj\0agx\0ahg\0aho\0ahr\0"
+ "aib\0aij\0ain\0aio\0aiq\0ajp\0akk\0akv\0alk\0all\0alr\0alt\0alw\0"
+ "am\0ams\0amw\0ani\0anp\0anr\0anu\0aot\0apc\0apd\0aph\0aqc\0ar\0"
+ "arc\0arq\0ars\0ary\0arz\0as\0ase\0ask\0atn\0atv\0auj\0auz\0av\0"
+ "avd\0avl\0awa\0awn\0axm\0ayh\0ayl\0ayn\0ayp\0az_IQ\0az_IR\0az_RU\0"
+ "azb\0ba\0bal\0bap\0bax\0bbl\0bcq\0bdv\0bdz\0be\0bee\0bej\0bfb\0"
+ "bfq\0bft\0bfu\0bfw\0bfy\0bfz\0bg\0bgc\0bgd\0bgn\0bgp\0bgq\0bgw\0"
+ "bgx\0bha\0bhb\0bhd\0bhe\0bhh\0bhi\0bhj\0bhm\0bhn\0bho\0bht\0bhu\0"
+ "biy\0bjf\0bjj\0bjm\0blk\0blt\0bmj\0bn\0bns\0bo\0bph\0bpx\0bpy\0"
+ "bqi\0bra\0brb\0brd\0brh\0brk\0brv\0brx\0bsh\0bsk\0bsq\0bst\0btd\0"
+ "btm\0btv\0bua\0bwe\0bxm\0bxu\0byh\0byn\0byw\0bzi\0cbn\0ccp\0cde\0"
+ "cdh\0cdi\0cdj\0cdm\0cdo\0cdz\0ce\0cgk\0chg\0chm\0chr\0chx\0cih\0"
+ "cja\0cji\0cjm\0cjy\0ckb\0ckt\0clh\0clw\0cmg\0cna\0cnp\0cog\0cop\0"
+ "cpg\0cr\0crh\0crj\0crk\0crl\0crm\0csh\0csp\0csw\0ctd\0ctg\0ctn\0"
+ "ctt\0cu\0cuu\0cv\0czh\0czk\0daq\0dar\0dcc\0ddo\0def\0deh\0der\0"
+ "dhi\0dhn\0dho\0dhw\0dka\0dlg\0dmf\0dmk\0dml\0dng\0dnu\0dnv\0doi\0"
+ "dox\0dre\0drq\0drs\0dry\0dso\0dty\0dub\0duh\0dus\0dv\0dwk\0dwz\0"
+ "dz\0dzl\0ecr\0ecy\0egy\0eky\0el\0emg\0emu\0enf\0enh\0era\0esg\0"
+ "esh\0ett\0eve\0evn\0fa\0fay\0faz\0fia\0fmu\0fub\0gan\0gaq\0gas\0"
+ "gau\0gbj\0gbk\0gbl\0gbm\0gbz\0gdb\0gdo\0gdx\0gez\0ggg\0gha\0ghe\0"
+ "ghr\0ght\0gig\0gin\0gjk\0gju\0gld\0glh\0glk\0gmv\0gmy\0goe\0gof\0"
+ "gok\0gom\0gon\0got\0gra\0grc\0grt\0gru\0gu\0gvr\0gwc\0gwf\0gwt\0"
+ "gyo\0gzi\0ha_CM\0ha_SD\0hac\0hak\0har\0haz\0hbo\0hdy\0he\0hi\0"
+ "hii\0hit\0hkh\0hlb\0hlu\0hmd\0hmj\0hmq\0hnd\0hne\0hnj\0hnj_AU\0"
+ "hnj_CN\0hnj_FR\0hnj_GF\0hnj_LA\0hnj_MM\0hnj_SR\0hnj_TH\0hnj_VN\0"
+ "hno\0hoc\0hoh\0hoj\0how\0hoy\0hpo\0hrt\0hrz\0hsn\0hss\0htx\0hut\0"
+ "huy\0huz\0hy\0hyw\0ii\0imy\0inh\0int\0ior\0iru\0isk\0itk\0itl\0"
+ "iu\0iw\0ja\0jad\0jat\0jbe\0jbn\0jct\0jda\0jdg\0jdt\0jee\0jge\0"
+ "ji\0jje\0jkm\0jml\0jna\0jnd\0jnl\0jns\0jog\0jpa\0jpr\0jrb\0jrb_MA\0"
+ "jul\0jun\0juy\0jya\0jye\0ka\0kaa\0kap\0kaw\0kbd\0kbu\0kby\0kca\0"
+ "kdq\0kdt\0ket\0kex\0key\0kfa\0kfb\0kfc\0kfd\0kfe\0kfh\0kfi\0kfk\0"
+ "kfm\0kfp\0kfq\0kfr\0kfs\0kfx\0kfy\0kgj\0kgy\0khb\0khf\0khg\0khn\0"
+ "kht\0khv\0khw\0kif\0kim\0kip\0kjg\0kjh\0kjl\0kjo\0kjp\0kjt\0kk\0"
+ "kk_AF\0kk_CN\0kk_IR\0kk_MN\0kkf\0kkh\0kkt\0kle\0klj\0klr\0km\0"
+ "kmj\0kmz\0kn\0ko\0koi\0kok\0kpt\0kpy\0kqd\0kqy\0kra\0krc\0krk\0"
+ "krr\0kru\0krv\0ks\0ksu\0ksw\0ksz\0ktb\0ktl\0ktp\0ku_LB\0kuf\0"
+ "kum\0kv\0kva\0kvq\0kvt\0kvx\0kvy\0kxf\0kxk\0kxm\0kxp\0ky\0ky_CN\0"
+ "kyu\0kyv\0kyw\0lab\0lad\0lae\0lah\0lbc\0lbe\0lbf\0lbj\0lbm\0lbo\0"
+ "lbr\0lcp\0lep\0lez\0lhm\0lhs\0lif\0lis\0lkh\0lki\0lmh\0lmn\0lo\0"
+ "loy\0lpo\0lrc\0lrk\0lrl\0lsa\0lsd\0lss\0luk\0luu\0luv\0luz\0lwl\0"
+ "lwm\0lya\0lzh\0mag\0mai\0man_GN\0mby\0mde\0mdf\0mdx\0mdy\0mfa\0"
+ "mfi\0mgp\0mhj\0mid\0mjl\0mjq\0mjr\0mjt\0mju\0mjv\0mjz\0mk\0mkb\0"
+ "mke\0mki\0mkm\0ml\0mlf\0mn\0mn_CN\0mni\0mnj\0mns\0mnw\0mpz\0mr\0"
+ "mra\0mrd\0mrj\0mro\0mrr\0ms_CC\0mtm\0mtr\0mud\0muk\0mut\0muv\0"
+ "muz\0mvf\0mvy\0mvz\0mwr\0mwt\0mww\0my\0mym\0myv\0myz\0mzn\0nan\0"
+ "nao\0ncd\0ncq\0ndf\0ne\0neg\0neh\0nei\0new\0ngt\0nio\0nit\0niv\0"
+ "nli\0nlm\0nlx\0nmm\0nnp\0nod\0noe\0nog\0noi\0non\0nos\0npb\0nqo\0"
+ "nsd\0nsf\0nsk\0nst\0nsv\0nty\0ntz\0nwc\0nwx\0nyl\0nyq\0oaa\0oac\0"
+ "oar\0oav\0obm\0obr\0odk\0oht\0oj\0ojs\0okm\0oko\0okz\0ola\0ole\0"
+ "omk\0omp\0omr\0oon\0or\0ort\0oru\0orv\0os\0osa\0osc\0osi\0ota\0"
+ "otb\0otk\0oty\0pa\0pa_PK\0pal\0paq\0pbt\0pcb\0pce\0pcf\0pcg\0"
+ "pch\0pci\0pcj\0peg\0peo\0pgd\0pgg\0pgl\0pgn\0phd\0phk\0phl\0phn\0"
+ "pho\0phr\0pht\0phv\0phw\0pi\0pka\0pkr\0plk\0pll\0pmh\0pnt\0pra\0"
+ "prc\0prd\0prp\0prt\0prx\0ps\0psh\0psi\0pst\0pum\0pwo\0pwr\0pww\0"
+ "pyx\0qxq\0raa\0rab\0raf\0rah\0raj\0rav\0rbb\0rdb\0rei\0rhg\0rji\0"
+ "rjs\0rka\0rki\0rkt\0rmi\0rmt\0rmz\0rom_BG\0rsk\0rtw\0ru\0rue\0"
+ "rut\0rwr\0ryu\0sa\0sah\0sam\0sat\0saz\0sbn\0sbu\0sck\0scl\0scl_IN\0"
+ "scp\0sct\0scu\0scx\0sd\0sd_IN\0sdb\0sdf\0sdg\0sdh\0sds\0sel\0"
+ "sfm\0sga\0sgh\0sgj\0sgr\0sgt\0sgw\0sgy\0shd\0shi\0shm\0shn\0shu\0"
+ "shv\0si\0sia\0sip\0siy\0siz\0sjd\0sjp\0sjt\0skb\0skj\0skr\0slq\0"
+ "smh\0smp\0smu\0smy\0soa\0sog\0soi\0sou\0spt\0spv\0sqo\0sqq\0sqt\0"
+ "sr\0srb\0srh\0srx\0srz\0ssh\0sss\0sts\0stv\0sty\0suz\0sva\0swb\0"
+ "swi\0swv\0syc\0syl\0syn\0syr\0syw\0ta\0tab\0taj\0tbk\0tcn\0tco\0"
+ "tcx\0tcy\0tda\0tdb\0tdd\0tdg\0tdh\0te\0tes\0tg\0tg_PK\0tge\0tgf\0"
+ "th\0the\0thf\0thi\0thl\0thm\0thq\0thr\0ths\0ti\0tig\0tij\0tin\0"
+ "tjl\0tjo\0tkb\0tks\0tkt\0tmk\0tmr\0tnv\0tov\0tpu\0tra\0trg\0trm\0"
+ "trw\0tsd\0tsj\0tt\0tth\0tto\0tts\0tvn\0twm\0txg\0txo\0tyr\0tyv\0"
+ "ude\0udg\0udi\0udm\0ug\0ug_KZ\0ug_MN\0uga\0ugh\0ugo\0uk\0uki\0"
+ "ulc\0unr\0unr_NP\0unx\0ur\0urk\0ush\0uum\0uz_AF\0uz_CN\0uzs\0"
+ "vaa\0vaf\0vah\0vai\0vas\0vav\0vay\0vgr\0vmd\0vmh\0wal\0wbk\0wbq\0"
+ "wbr\0wlo\0wme\0wne\0wni\0wsg\0wsv\0wtm\0wuu\0xal\0xan\0xas\0xco\0"
+ "xcr\0xdq\0xhe\0xhm\0xis\0xka\0xkc\0xkj\0xkp\0xlc\0xld\0xly\0xmf\0"
+ "xmn\0xmr\0xna\0xnr\0xpg\0xpi\0xpm\0xpr\0xrm\0xrn\0xsa\0xsr\0xss\0"
+ "xub\0xuj\0xve\0xvi\0xwo\0xzh\0yai\0ybh\0ybi\0ydg\0yea\0yej\0yeu\0"
+ "ygp\0yhd\0yi\0yig\0yih\0yiv\0ykg\0yna\0ynk\0yoi\0yoy\0yrk\0ysd\0"
+ "ysn\0ysp\0ysr\0ysy\0yud\0yue\0yue_CN\0yug\0yux\0ywq\0ywu\0zau\0"
+ "zba\0zch\0zdj\0zeh\0zen\0zgb\0zgh\0zgm\0zgn\0zh\0zh_AU\0zh_BN\0"
+ "zh_GB\0zh_GF\0zh_HK\0zh_ID\0zh_MO\0zh_PA\0zh_PF\0zh_PH\0zh_SR\0"
+ "zh_TH\0zh_TW\0zh_US\0zh_VN\0zhd\0zhx\0zkb\0zko\0zkt\0zkz\0zlj\0"
+ "zln\0zlq\0zqe\0zrp\0zum\0zyg\0zyn\0zzj\0";
const int32_t defaultScriptTable[] = {
- 0, 90, // ab -> Cyrl
- 3, 90, // abq -> Cyrl
- 7, 465, // adp -> Tibt
- 11, 90, // ady -> Cyrl
- 15, 25, // ae -> Avst
- 18, 10, // aeb -> Arab
- 22, 5, // aho -> Ahom
- 26, 10, // ajt -> Arab
- 30, 500, // akk -> Xsux
- 34, 90, // alt -> Cyrl
- 38, 105, // am -> Ethi
- 41, 10, // apc -> Arab
- 45, 10, // apd -> Arab
- 49, 10, // ar -> Arab
- 52, 15, // arc -> Armi
- 56, 10, // arq -> Arab
- 60, 10, // ars -> Arab
- 64, 10, // ary -> Arab
- 68, 10, // arz -> Arab
- 72, 40, // as -> Beng
- 75, 390, // ase -> Sgnw
- 79, 90, // av -> Cyrl
- 82, 10, // avl -> Arab
- 86, 95, // awa -> Deva
- 90, 10, // az_IQ -> Arab
- 96, 10, // az_IR -> Arab
- 102, 90, // az_RU -> Cyrl
- 108, 90, // ba -> Cyrl
- 111, 10, // bal -> Arab
- 115, 95, // bap -> Deva
- 119, 30, // bax -> Bamu
- 123, 105, // bcq -> Ethi
- 127, 90, // be -> Cyrl
- 130, 10, // bej -> Arab
- 134, 430, // bfq -> Taml
- 138, 10, // bft -> Arab
- 142, 95, // bfy -> Deva
- 146, 90, // bg -> Cyrl
- 149, 95, // bgc -> Deva
- 153, 10, // bgn -> Arab
- 157, 130, // bgx -> Grek
- 161, 95, // bhb -> Deva
- 165, 95, // bhi -> Deva
- 169, 95, // bho -> Deva
- 173, 105, // bji -> Ethi
- 177, 95, // bjj -> Deva
- 181, 440, // blt -> Tavt
- 185, 40, // bn -> Beng
- 188, 465, // bo -> Tibt
- 191, 40, // bpy -> Beng
- 195, 10, // bqi -> Arab
- 199, 95, // bra -> Deva
- 203, 10, // brh -> Arab
- 207, 95, // brx -> Deva
- 211, 35, // bsq -> Bass
- 215, 105, // bst -> Ethi
- 219, 95, // btv -> Deva
- 223, 90, // bua -> Cyrl
- 227, 105, // byn -> Ethi
- 231, 50, // ccp -> Cakm
- 235, 90, // ce -> Cyrl
- 238, 90, // chm -> Cyrl
- 242, 70, // chr -> Cher
- 246, 10, // cja -> Arab
- 250, 65, // cjm -> Cham
- 254, 10, // ckb -> Arab
- 258, 410, // cmg -> Soyo
- 262, 80, // cop -> Copt
- 266, 55, // cr -> Cans
- 269, 90, // crh -> Cyrl
- 273, 55, // crk -> Cans
- 277, 55, // crl -> Cans
- 281, 55, // csw -> Cans
- 285, 340, // ctd -> Pauc
- 289, 90, // cu -> Cyrl
- 292, 90, // cv -> Cyrl
- 295, 90, // dar -> Cyrl
- 299, 10, // dcc -> Arab
- 303, 10, // dgl -> Arab
- 307, 265, // dmf -> Medf
- 311, 95, // doi -> Deva
- 315, 280, // drh -> Mong
- 319, 105, // drs -> Ethi
- 323, 95, // dty -> Deva
- 327, 455, // dv -> Thaa
- 330, 465, // dz -> Tibt
- 333, 100, // egy -> Egyp
- 337, 180, // eky -> Kali
- 341, 130, // el -> Grek
- 344, 120, // esg -> Gonm
- 348, 170, // ett -> Ital
- 352, 10, // fa -> Arab
- 355, 10, // fia -> Arab
- 359, 10, // fub -> Arab
- 363, 145, // gan -> Hans
- 367, 95, // gbm -> Deva
- 371, 10, // gbz -> Arab
- 375, 105, // gez -> Ethi
- 379, 95, // ggn -> Deva
- 383, 10, // gjk -> Arab
- 387, 10, // gju -> Arab
- 391, 10, // glk -> Arab
- 395, 105, // gmv -> Ethi
- 399, 105, // gof -> Ethi
- 403, 95, // gom -> Deva
- 407, 445, // gon -> Telu
- 411, 125, // got -> Goth
- 415, 85, // grc -> Cprt
- 419, 40, // grt -> Beng
- 423, 135, // gu -> Gujr
- 426, 95, // gvr -> Deva
- 430, 10, // gwc -> Arab
- 434, 10, // gwt -> Arab
- 438, 10, // ha_CM -> Arab
- 444, 10, // ha_SD -> Arab
- 450, 145, // hak -> Hans
- 454, 10, // haz -> Arab
- 458, 105, // hdy -> Ethi
- 462, 155, // he -> Hebr
- 465, 95, // hi -> Deva
- 468, 160, // hlu -> Hluw
- 472, 355, // hmd -> Plrd
- 476, 10, // hnd -> Arab
- 480, 95, // hne -> Deva
- 484, 165, // hnj -> Hmnp
- 488, 10, // hno -> Arab
- 492, 95, // hoc -> Deva
- 496, 95, // hoj -> Deva
- 500, 145, // hsn -> Hans
- 504, 20, // hy -> Armn
- 507, 505, // ii -> Yiii
- 510, 90, // inh -> Cyrl
- 514, 55, // iu -> Cans
- 517, 155, // iw -> Hebr
- 520, 175, // ja -> Jpan
- 523, 155, // ji -> Hebr
- 526, 95, // jml -> Deva
- 530, 110, // ka -> Geor
- 533, 90, // kaa -> Cyrl
- 537, 190, // kaw -> Kawi
- 541, 90, // kbd -> Cyrl
- 545, 10, // kby -> Arab
- 549, 460, // kdt -> Thai
- 553, 95, // kfr -> Deva
- 557, 95, // kfy -> Deva
- 561, 425, // khb -> Talu
- 565, 95, // khn -> Deva
- 569, 290, // kht -> Mymr
- 573, 10, // khw -> Arab
- 577, 225, // kjg -> Laoo
- 581, 90, // kk -> Cyrl
- 584, 10, // kk_AF -> Arab
- 590, 10, // kk_CN -> Arab
- 596, 10, // kk_IR -> Arab
- 602, 10, // kk_MN -> Arab
- 608, 200, // km -> Khmr
- 611, 210, // kn -> Knda
- 614, 215, // ko -> Kore
- 617, 90, // koi -> Cyrl
- 621, 95, // kok -> Deva
- 625, 105, // kqy -> Ethi
- 629, 90, // krc -> Cyrl
- 633, 95, // kru -> Deva
- 637, 10, // ks -> Arab
- 640, 105, // ktb -> Ethi
- 644, 10, // ku_LB -> Arab
- 650, 90, // kum -> Cyrl
- 654, 90, // kv -> Cyrl
- 657, 10, // kvx -> Arab
- 661, 105, // kxc -> Ethi
- 665, 95, // kxl -> Deva
- 669, 460, // kxm -> Thai
- 673, 10, // kxp -> Arab
- 677, 90, // ky -> Cyrl
- 680, 10, // ky_CN -> Arab
- 686, 10, // kzh -> Arab
- 690, 235, // lab -> Lina
- 694, 155, // lad -> Hebr
- 698, 10, // lah -> Arab
- 702, 90, // lbe -> Cyrl
- 706, 460, // lcp -> Thai
- 710, 230, // lep -> Lepc
- 714, 90, // lez -> Cyrl
- 718, 95, // lif -> Deva
- 722, 240, // lis -> Lisu
- 726, 10, // lki -> Arab
- 730, 445, // lmn -> Telu
- 734, 225, // lo -> Laoo
- 737, 10, // lrc -> Arab
- 741, 10, // luz -> Arab
- 745, 460, // lwl -> Thai
- 749, 145, // lzh -> Hans
- 753, 95, // mag -> Deva
- 757, 95, // mai -> Deva
- 761, 300, // man_GN -> Nkoo
- 768, 10, // mde -> Arab
- 772, 90, // mdf -> Cyrl
- 776, 105, // mdx -> Ethi
- 780, 10, // mfa -> Arab
- 784, 95, // mgp -> Deva
- 788, 90, // mk -> Cyrl
- 791, 10, // mki -> Arab
- 795, 275, // ml -> Mlym
- 798, 90, // mn -> Cyrl
- 801, 280, // mn_CN -> Mong
- 807, 40, // mni -> Beng
- 811, 290, // mnw -> Mymr
- 815, 95, // mr -> Deva
- 818, 95, // mrd -> Deva
- 822, 90, // mrj -> Cyrl
- 826, 285, // mro -> Mroo
- 830, 10, // ms_CC -> Arab
- 836, 95, // mtr -> Deva
- 840, 10, // mvy -> Arab
- 844, 95, // mwr -> Deva
- 848, 165, // mww -> Hmnp
- 852, 290, // my -> Mymr
- 855, 105, // mym -> Ethi
- 859, 90, // myv -> Cyrl
- 863, 255, // myz -> Mand
- 867, 10, // mzn -> Arab
- 871, 145, // nan -> Hans
- 875, 95, // ne -> Deva
- 878, 95, // new -> Deva
- 882, 490, // nnp -> Wcho
- 886, 220, // nod -> Lana
- 890, 95, // noe -> Deva
- 894, 370, // non -> Runr
- 898, 300, // nqo -> Nkoo
- 902, 55, // nsk -> Cans
- 906, 470, // nst -> Tnsa
- 910, 55, // oj -> Cans
- 913, 55, // ojs -> Cans
- 917, 325, // or -> Orya
- 920, 10, // oru -> Arab
- 924, 90, // os -> Cyrl
- 927, 330, // osa -> Osge
- 931, 10, // ota -> Arab
- 935, 320, // otk -> Orkh
- 939, 335, // oui -> Ougr
- 943, 140, // pa -> Guru
- 946, 10, // pa_PK -> Arab
- 952, 345, // pal -> Phli
- 956, 495, // peo -> Xpeo
- 960, 10, // phl -> Arab
- 964, 350, // phn -> Phnx
- 968, 45, // pka -> Brah
- 972, 130, // pnt -> Grek
- 976, 95, // ppa -> Deva
- 980, 195, // pra -> Khar
- 984, 10, // prd -> Arab
- 988, 10, // ps -> Arab
- 991, 95, // raj -> Deva
- 995, 365, // rhg -> Rohg
- 999, 450, // rif -> Tfng
- 1003, 95, // rjs -> Deva
- 1007, 40, // rkt -> Beng
- 1011, 10, // rmt -> Arab
- 1015, 90, // ru -> Cyrl
- 1018, 90, // rue -> Cyrl
- 1022, 185, // ryu -> Kana
- 1026, 95, // sa -> Deva
- 1029, 90, // sah -> Cyrl
- 1033, 315, // sat -> Olck
- 1037, 385, // saz -> Saur
- 1041, 95, // sck -> Deva
- 1045, 10, // scl -> Arab
- 1049, 10, // sd -> Arab
- 1052, 95, // sd_IN -> Deva
- 1058, 10, // sdh -> Arab
- 1062, 310, // sga -> Ogam
- 1066, 105, // sgw -> Ethi
- 1070, 450, // shi -> Tfng
- 1074, 290, // shn -> Mymr
- 1078, 10, // shu -> Arab
- 1082, 395, // si -> Sinh
- 1085, 10, // skr -> Arab
- 1089, 375, // smp -> Samr
- 1093, 400, // sog -> Sogd
- 1097, 460, // sou -> Thai
- 1101, 90, // sr -> Cyrl
- 1104, 405, // srb -> Sora
- 1108, 95, // srx -> Deva
- 1112, 10, // swb -> Arab
- 1116, 95, // swv -> Deva
- 1120, 40, // syl -> Beng
- 1124, 415, // syr -> Syrc
- 1128, 430, // ta -> Taml
- 1131, 95, // taj -> Deva
- 1135, 210, // tcy -> Knda
- 1139, 420, // tdd -> Tale
- 1143, 95, // tdg -> Deva
- 1147, 95, // tdh -> Deva
- 1151, 445, // te -> Telu
- 1154, 90, // tg -> Cyrl
- 1157, 10, // tg_PK -> Arab
- 1163, 460, // th -> Thai
- 1166, 95, // thl -> Deva
- 1170, 95, // thq -> Deva
- 1174, 95, // thr -> Deva
- 1178, 105, // ti -> Ethi
- 1181, 105, // tig -> Ethi
- 1185, 95, // tkt -> Deva
- 1189, 10, // trw -> Arab
- 1193, 130, // tsd -> Grek
- 1197, 95, // tsf -> Deva
- 1201, 465, // tsj -> Tibt
- 1205, 90, // tt -> Cyrl
- 1208, 460, // tts -> Thai
- 1212, 435, // txg -> Tang
- 1216, 475, // txo -> Toto
- 1220, 90, // tyv -> Cyrl
- 1224, 0, // udi -> Aghb
- 1228, 90, // udm -> Cyrl
- 1232, 10, // ug -> Arab
- 1235, 90, // ug_KZ -> Cyrl
- 1241, 90, // ug_MN -> Cyrl
- 1247, 480, // uga -> Ugar
- 1251, 90, // uk -> Cyrl
- 1254, 40, // unr -> Beng
- 1258, 95, // unr_NP -> Deva
- 1265, 40, // unx -> Beng
- 1269, 10, // ur -> Arab
- 1272, 10, // uz_AF -> Arab
- 1278, 90, // uz_CN -> Cyrl
- 1284, 485, // vai -> Vaii
- 1288, 105, // wal -> Ethi
- 1292, 445, // wbq -> Telu
- 1296, 95, // wbr -> Deva
- 1300, 10, // wni -> Arab
- 1304, 115, // wsg -> Gong
- 1308, 95, // wtm -> Deva
- 1312, 145, // wuu -> Hans
- 1316, 75, // xco -> Chrs
- 1320, 60, // xcr -> Cari
- 1324, 245, // xlc -> Lyci
- 1328, 250, // xld -> Lydi
- 1332, 110, // xmf -> Geor
- 1336, 260, // xmn -> Mani
- 1340, 270, // xmr -> Merc
- 1344, 295, // xna -> Narb
- 1348, 95, // xnr -> Deva
- 1352, 360, // xpr -> Prti
- 1356, 380, // xsa -> Sarb
- 1360, 95, // xsr -> Deva
- 1364, 155, // yi -> Hebr
- 1367, 150, // yue -> Hant
- 1371, 145, // yue_CN -> Hans
- 1378, 10, // zdj -> Arab
- 1382, 450, // zgh -> Tfng
- 1386, 145, // zh -> Hans
- 1389, 150, // zh_AU -> Hant
- 1395, 150, // zh_BN -> Hant
- 1401, 150, // zh_GB -> Hant
- 1407, 150, // zh_GF -> Hant
- 1413, 150, // zh_HK -> Hant
- 1419, 150, // zh_ID -> Hant
- 1425, 150, // zh_MO -> Hant
- 1431, 150, // zh_PA -> Hant
- 1437, 150, // zh_PF -> Hant
- 1443, 150, // zh_PH -> Hant
- 1449, 150, // zh_SR -> Hant
- 1455, 150, // zh_TH -> Hant
- 1461, 150, // zh_TW -> Hant
- 1467, 150, // zh_US -> Hant
- 1473, 150, // zh_VN -> Hant
- 1479, 305, // zhx -> Nshu
- 1483, 205, // zkt -> Kits
+ 0, 320, // aaf -> Mlym
+ 4, 10, // aao -> Arab
+ 8, 150, // aat -> Grek
+ 12, 100, // ab -> Cyrl
+ 15, 10, // abh -> Arab
+ 19, 420, // abl -> Rjng
+ 23, 10, // abv -> Arab
+ 27, 10, // acm -> Arab
+ 31, 10, // acq -> Arab
+ 35, 10, // acw -> Arab
+ 39, 10, // acx -> Arab
+ 43, 10, // adf -> Arab
+ 47, 535, // adx -> Tibt
+ 51, 100, // ady -> Cyrl
+ 55, 25, // ae -> Avst
+ 58, 10, // aeb -> Arab
+ 62, 10, // aec -> Arab
+ 66, 10, // aee -> Arab
+ 70, 10, // aeq -> Arab
+ 74, 10, // afb -> Arab
+ 78, 105, // agi -> Deva
+ 82, 120, // agj -> Ethi
+ 86, 100, // agx -> Cyrl
+ 90, 120, // ahg -> Ethi
+ 94, 5, // aho -> Ahom
+ 98, 105, // ahr -> Deva
+ 102, 10, // aib -> Arab
+ 106, 185, // aij -> Hebr
+ 110, 220, // ain -> Kana
+ 114, 345, // aio -> Mymr
+ 118, 10, // aiq -> Arab
+ 122, 10, // ajp -> Arab
+ 126, 570, // akk -> Xsux
+ 130, 100, // akv -> Cyrl
+ 134, 260, // alk -> Laoo
+ 138, 320, // all -> Mlym
+ 142, 100, // alr -> Cyrl
+ 146, 100, // alt -> Cyrl
+ 150, 120, // alw -> Ethi
+ 154, 120, // am -> Ethi
+ 157, 210, // ams -> Jpan
+ 161, 475, // amw -> Syrc
+ 165, 100, // ani -> Cyrl
+ 169, 105, // anp -> Deva
+ 173, 105, // anr -> Deva
+ 177, 120, // anu -> Ethi
+ 181, 45, // aot -> Beng
+ 185, 10, // apc -> Arab
+ 189, 10, // apd -> Arab
+ 193, 105, // aph -> Deva
+ 197, 100, // aqc -> Cyrl
+ 201, 10, // ar -> Arab
+ 204, 15, // arc -> Armi
+ 208, 10, // arq -> Arab
+ 212, 10, // ars -> Arab
+ 216, 10, // ary -> Arab
+ 220, 10, // arz -> Arab
+ 224, 45, // as -> Beng
+ 227, 450, // ase -> Sgnw
+ 231, 10, // ask -> Arab
+ 235, 10, // atn -> Arab
+ 239, 100, // atv -> Cyrl
+ 243, 10, // auj -> Arab
+ 247, 10, // auz -> Arab
+ 251, 100, // av -> Cyrl
+ 254, 10, // avd -> Arab
+ 258, 10, // avl -> Arab
+ 262, 105, // awa -> Deva
+ 266, 120, // awn -> Ethi
+ 270, 20, // axm -> Armn
+ 274, 10, // ayh -> Arab
+ 278, 10, // ayl -> Arab
+ 282, 10, // ayn -> Arab
+ 286, 10, // ayp -> Arab
+ 290, 10, // az_IQ -> Arab
+ 296, 10, // az_IR -> Arab
+ 302, 100, // az_RU -> Cyrl
+ 308, 10, // azb -> Arab
+ 312, 100, // ba -> Cyrl
+ 315, 10, // bal -> Arab
+ 319, 105, // bap -> Deva
+ 323, 30, // bax -> Bamu
+ 327, 125, // bbl -> Geor
+ 331, 120, // bcq -> Ethi
+ 335, 385, // bdv -> Orya
+ 339, 10, // bdz -> Arab
+ 343, 100, // be -> Cyrl
+ 346, 105, // bee -> Deva
+ 350, 10, // bej -> Arab
+ 354, 105, // bfb -> Deva
+ 358, 500, // bfq -> Taml
+ 362, 10, // bft -> Arab
+ 366, 535, // bfu -> Tibt
+ 370, 385, // bfw -> Orya
+ 374, 105, // bfy -> Deva
+ 378, 105, // bfz -> Deva
+ 382, 100, // bg -> Cyrl
+ 385, 105, // bgc -> Deva
+ 389, 105, // bgd -> Deva
+ 393, 10, // bgn -> Arab
+ 397, 10, // bgp -> Arab
+ 401, 105, // bgq -> Deva
+ 405, 105, // bgw -> Deva
+ 409, 150, // bgx -> Grek
+ 413, 105, // bha -> Deva
+ 417, 105, // bhb -> Deva
+ 421, 105, // bhd -> Deva
+ 425, 10, // bhe -> Arab
+ 429, 100, // bhh -> Cyrl
+ 433, 105, // bhi -> Deva
+ 437, 105, // bhj -> Deva
+ 441, 10, // bhm -> Arab
+ 445, 475, // bhn -> Syrc
+ 449, 105, // bho -> Deva
+ 453, 485, // bht -> Takr
+ 457, 105, // bhu -> Deva
+ 461, 105, // biy -> Deva
+ 465, 475, // bjf -> Syrc
+ 469, 105, // bjj -> Deva
+ 473, 10, // bjm -> Arab
+ 477, 345, // blk -> Mymr
+ 481, 510, // blt -> Tavt
+ 485, 105, // bmj -> Deva
+ 489, 45, // bn -> Beng
+ 492, 105, // bns -> Deva
+ 496, 535, // bo -> Tibt
+ 499, 100, // bph -> Cyrl
+ 503, 105, // bpx -> Deva
+ 507, 45, // bpy -> Beng
+ 511, 10, // bqi -> Arab
+ 515, 105, // bra -> Deva
+ 519, 235, // brb -> Khmr
+ 523, 105, // brd -> Deva
+ 527, 10, // brh -> Arab
+ 531, 10, // brk -> Arab
+ 535, 260, // brv -> Laoo
+ 539, 105, // brx -> Deva
+ 543, 10, // bsh -> Arab
+ 547, 10, // bsk -> Arab
+ 551, 35, // bsq -> Bass
+ 555, 120, // bst -> Ethi
+ 559, 40, // btd -> Batk
+ 563, 40, // btm -> Batk
+ 567, 105, // btv -> Deva
+ 571, 100, // bua -> Cyrl
+ 575, 345, // bwe -> Mymr
+ 579, 100, // bxm -> Cyrl
+ 583, 330, // bxu -> Mong
+ 587, 105, // byh -> Deva
+ 591, 120, // byn -> Ethi
+ 595, 105, // byw -> Deva
+ 599, 530, // bzi -> Thai
+ 603, 530, // cbn -> Thai
+ 607, 60, // ccp -> Cakm
+ 611, 515, // cde -> Telu
+ 615, 105, // cdh -> Deva
+ 619, 155, // cdi -> Gujr
+ 623, 105, // cdj -> Deva
+ 627, 105, // cdm -> Deva
+ 631, 175, // cdo -> Hans
+ 635, 45, // cdz -> Beng
+ 639, 100, // ce -> Cyrl
+ 642, 535, // cgk -> Tibt
+ 646, 10, // chg -> Arab
+ 650, 100, // chm -> Cyrl
+ 654, 80, // chr -> Cher
+ 658, 105, // chx -> Deva
+ 662, 105, // cih -> Deva
+ 666, 10, // cja -> Arab
+ 670, 100, // cji -> Cyrl
+ 674, 75, // cjm -> Cham
+ 678, 175, // cjy -> Hans
+ 682, 10, // ckb -> Arab
+ 686, 100, // ckt -> Cyrl
+ 690, 10, // clh -> Arab
+ 694, 100, // clw -> Cyrl
+ 698, 470, // cmg -> Soyo
+ 702, 535, // cna -> Tibt
+ 706, 175, // cnp -> Hans
+ 710, 530, // cog -> Thai
+ 714, 90, // cop -> Copt
+ 718, 150, // cpg -> Grek
+ 722, 65, // cr -> Cans
+ 725, 100, // crh -> Cyrl
+ 729, 65, // crj -> Cans
+ 733, 65, // crk -> Cans
+ 737, 65, // crl -> Cans
+ 741, 65, // crm -> Cans
+ 745, 345, // csh -> Mymr
+ 749, 175, // csp -> Hans
+ 753, 65, // csw -> Cans
+ 757, 395, // ctd -> Pauc
+ 761, 45, // ctg -> Beng
+ 765, 105, // ctn -> Deva
+ 769, 500, // ctt -> Taml
+ 773, 100, // cu -> Cyrl
+ 776, 255, // cuu -> Lana
+ 780, 100, // cv -> Cyrl
+ 783, 175, // czh -> Hans
+ 787, 185, // czk -> Hebr
+ 791, 105, // daq -> Deva
+ 795, 100, // dar -> Cyrl
+ 799, 10, // dcc -> Arab
+ 803, 100, // ddo -> Cyrl
+ 807, 10, // def -> Arab
+ 811, 10, // deh -> Arab
+ 815, 45, // der -> Beng
+ 819, 105, // dhi -> Deva
+ 823, 155, // dhn -> Gujr
+ 827, 105, // dho -> Deva
+ 831, 105, // dhw -> Deva
+ 835, 535, // dka -> Tibt
+ 839, 100, // dlg -> Cyrl
+ 843, 310, // dmf -> Medf
+ 847, 10, // dmk -> Arab
+ 851, 10, // dml -> Arab
+ 855, 100, // dng -> Cyrl
+ 859, 345, // dnu -> Mymr
+ 863, 345, // dnv -> Mymr
+ 867, 105, // doi -> Deva
+ 871, 120, // dox -> Ethi
+ 875, 535, // dre -> Tibt
+ 879, 105, // drq -> Deva
+ 883, 120, // drs -> Ethi
+ 887, 105, // dry -> Deva
+ 891, 385, // dso -> Orya
+ 895, 105, // dty -> Deva
+ 899, 155, // dub -> Gujr
+ 903, 105, // duh -> Deva
+ 907, 105, // dus -> Deva
+ 911, 525, // dv -> Thaa
+ 914, 385, // dwk -> Orya
+ 918, 105, // dwz -> Deva
+ 922, 535, // dz -> Tibt
+ 925, 535, // dzl -> Tibt
+ 929, 150, // ecr -> Grek
+ 933, 95, // ecy -> Cprt
+ 937, 110, // egy -> Egyp
+ 941, 215, // eky -> Kali
+ 945, 150, // el -> Grek
+ 948, 105, // emg -> Deva
+ 952, 105, // emu -> Deva
+ 956, 100, // enf -> Cyrl
+ 960, 100, // enh -> Cyrl
+ 964, 500, // era -> Taml
+ 968, 135, // esg -> Gonm
+ 972, 10, // esh -> Arab
+ 976, 200, // ett -> Ital
+ 980, 100, // eve -> Cyrl
+ 984, 100, // evn -> Cyrl
+ 988, 10, // fa -> Arab
+ 991, 10, // fay -> Arab
+ 995, 10, // faz -> Arab
+ 999, 10, // fia -> Arab
+ 1003, 105, // fmu -> Deva
+ 1007, 10, // fub -> Arab
+ 1011, 175, // gan -> Hans
+ 1015, 385, // gaq -> Orya
+ 1019, 155, // gas -> Gujr
+ 1023, 515, // gau -> Telu
+ 1027, 385, // gbj -> Orya
+ 1031, 105, // gbk -> Deva
+ 1035, 155, // gbl -> Gujr
+ 1039, 105, // gbm -> Deva
+ 1043, 10, // gbz -> Arab
+ 1047, 385, // gdb -> Orya
+ 1051, 100, // gdo -> Cyrl
+ 1055, 105, // gdx -> Deva
+ 1059, 120, // gez -> Ethi
+ 1063, 10, // ggg -> Arab
+ 1067, 10, // gha -> Arab
+ 1071, 105, // ghe -> Deva
+ 1075, 10, // ghr -> Arab
+ 1079, 535, // ght -> Tibt
+ 1083, 10, // gig -> Arab
+ 1087, 100, // gin -> Cyrl
+ 1091, 10, // gjk -> Arab
+ 1095, 10, // gju -> Arab
+ 1099, 100, // gld -> Cyrl
+ 1103, 10, // glh -> Arab
+ 1107, 10, // glk -> Arab
+ 1111, 120, // gmv -> Ethi
+ 1115, 275, // gmy -> Linb
+ 1119, 535, // goe -> Tibt
+ 1123, 120, // gof -> Ethi
+ 1127, 105, // gok -> Deva
+ 1131, 105, // gom -> Deva
+ 1135, 515, // gon -> Telu
+ 1139, 140, // got -> Goth
+ 1143, 105, // gra -> Deva
+ 1147, 95, // grc -> Cprt
+ 1151, 45, // grt -> Beng
+ 1155, 120, // gru -> Ethi
+ 1159, 155, // gu -> Gujr
+ 1162, 105, // gvr -> Deva
+ 1166, 10, // gwc -> Arab
+ 1170, 10, // gwf -> Arab
+ 1174, 10, // gwt -> Arab
+ 1178, 105, // gyo -> Deva
+ 1182, 10, // gzi -> Arab
+ 1186, 10, // ha_CM -> Arab
+ 1192, 10, // ha_SD -> Arab
+ 1198, 10, // hac -> Arab
+ 1202, 175, // hak -> Hans
+ 1206, 120, // har -> Ethi
+ 1210, 10, // haz -> Arab
+ 1214, 185, // hbo -> Hebr
+ 1218, 120, // hdy -> Ethi
+ 1222, 185, // he -> Hebr
+ 1225, 105, // hi -> Deva
+ 1228, 485, // hii -> Takr
+ 1232, 570, // hit -> Xsux
+ 1236, 10, // hkh -> Arab
+ 1240, 105, // hlb -> Deva
+ 1244, 190, // hlu -> Hluw
+ 1248, 410, // hmd -> Plrd
+ 1252, 50, // hmj -> Bopo
+ 1256, 50, // hmq -> Bopo
+ 1260, 10, // hnd -> Arab
+ 1264, 105, // hne -> Deva
+ 1268, 195, // hnj -> Hmnp
+ 1272, 260, // hnj_AU -> Laoo
+ 1279, 260, // hnj_CN -> Laoo
+ 1286, 260, // hnj_FR -> Laoo
+ 1293, 260, // hnj_GF -> Laoo
+ 1300, 260, // hnj_LA -> Laoo
+ 1307, 260, // hnj_MM -> Laoo
+ 1314, 260, // hnj_SR -> Laoo
+ 1321, 260, // hnj_TH -> Laoo
+ 1328, 260, // hnj_VN -> Laoo
+ 1335, 10, // hno -> Arab
+ 1339, 105, // hoc -> Deva
+ 1343, 10, // hoh -> Arab
+ 1347, 105, // hoj -> Deva
+ 1351, 170, // how -> Hani
+ 1355, 105, // hoy -> Deva
+ 1359, 345, // hpo -> Mymr
+ 1363, 475, // hrt -> Syrc
+ 1367, 10, // hrz -> Arab
+ 1371, 175, // hsn -> Hans
+ 1375, 10, // hss -> Arab
+ 1379, 570, // htx -> Xsux
+ 1383, 105, // hut -> Deva
+ 1387, 185, // huy -> Hebr
+ 1391, 100, // huz -> Cyrl
+ 1395, 20, // hy -> Armn
+ 1398, 20, // hyw -> Armn
+ 1402, 575, // ii -> Yiii
+ 1405, 285, // imy -> Lyci
+ 1409, 100, // inh -> Cyrl
+ 1413, 345, // int -> Mymr
+ 1417, 120, // ior -> Ethi
+ 1421, 500, // iru -> Taml
+ 1425, 10, // isk -> Arab
+ 1429, 185, // itk -> Hebr
+ 1433, 100, // itl -> Cyrl
+ 1437, 65, // iu -> Cans
+ 1440, 185, // iw -> Hebr
+ 1443, 210, // ja -> Jpan
+ 1446, 10, // jad -> Arab
+ 1450, 10, // jat -> Arab
+ 1454, 185, // jbe -> Hebr
+ 1458, 10, // jbn -> Arab
+ 1462, 100, // jct -> Cyrl
+ 1466, 535, // jda -> Tibt
+ 1470, 10, // jdg -> Arab
+ 1474, 100, // jdt -> Cyrl
+ 1478, 105, // jee -> Deva
+ 1482, 125, // jge -> Geor
+ 1486, 185, // ji -> Hebr
+ 1489, 165, // jje -> Hang
+ 1493, 345, // jkm -> Mymr
+ 1497, 105, // jml -> Deva
+ 1501, 485, // jna -> Takr
+ 1505, 10, // jnd -> Arab
+ 1509, 105, // jnl -> Deva
+ 1513, 105, // jns -> Deva
+ 1517, 10, // jog -> Arab
+ 1521, 185, // jpa -> Hebr
+ 1525, 185, // jpr -> Hebr
+ 1529, 185, // jrb -> Hebr
+ 1533, 10, // jrb_MA -> Arab
+ 1540, 105, // jul -> Deva
+ 1544, 385, // jun -> Orya
+ 1548, 385, // juy -> Orya
+ 1552, 535, // jya -> Tibt
+ 1556, 185, // jye -> Hebr
+ 1560, 125, // ka -> Geor
+ 1563, 100, // kaa -> Cyrl
+ 1567, 100, // kap -> Cyrl
+ 1571, 225, // kaw -> Kawi
+ 1575, 100, // kbd -> Cyrl
+ 1579, 10, // kbu -> Arab
+ 1583, 10, // kby -> Arab
+ 1587, 100, // kca -> Cyrl
+ 1591, 45, // kdq -> Beng
+ 1595, 530, // kdt -> Thai
+ 1599, 100, // ket -> Cyrl
+ 1603, 105, // kex -> Deva
+ 1607, 515, // key -> Telu
+ 1611, 245, // kfa -> Knda
+ 1615, 105, // kfb -> Deva
+ 1619, 515, // kfc -> Telu
+ 1623, 245, // kfd -> Knda
+ 1627, 500, // kfe -> Taml
+ 1631, 320, // kfh -> Mlym
+ 1635, 500, // kfi -> Taml
+ 1639, 105, // kfk -> Deva
+ 1643, 10, // kfm -> Arab
+ 1647, 105, // kfp -> Deva
+ 1651, 105, // kfq -> Deva
+ 1655, 105, // kfr -> Deva
+ 1659, 105, // kfs -> Deva
+ 1663, 105, // kfx -> Deva
+ 1667, 105, // kfy -> Deva
+ 1671, 105, // kgj -> Deva
+ 1675, 105, // kgy -> Deva
+ 1679, 495, // khb -> Talu
+ 1683, 530, // khf -> Thai
+ 1687, 535, // khg -> Tibt
+ 1691, 105, // khn -> Deva
+ 1695, 345, // kht -> Mymr
+ 1699, 100, // khv -> Cyrl
+ 1703, 10, // khw -> Arab
+ 1707, 105, // kif -> Deva
+ 1711, 100, // kim -> Cyrl
+ 1715, 105, // kip -> Deva
+ 1719, 260, // kjg -> Laoo
+ 1723, 100, // kjh -> Cyrl
+ 1727, 105, // kjl -> Deva
+ 1731, 105, // kjo -> Deva
+ 1735, 345, // kjp -> Mymr
+ 1739, 530, // kjt -> Thai
+ 1743, 100, // kk -> Cyrl
+ 1746, 10, // kk_AF -> Arab
+ 1752, 10, // kk_CN -> Arab
+ 1758, 10, // kk_IR -> Arab
+ 1764, 10, // kk_MN -> Arab
+ 1770, 535, // kkf -> Tibt
+ 1774, 255, // kkh -> Lana
+ 1778, 105, // kkt -> Deva
+ 1782, 105, // kle -> Deva
+ 1786, 10, // klj -> Arab
+ 1790, 105, // klr -> Deva
+ 1794, 235, // km -> Khmr
+ 1797, 105, // kmj -> Deva
+ 1801, 10, // kmz -> Arab
+ 1805, 245, // kn -> Knda
+ 1808, 250, // ko -> Kore
+ 1811, 100, // koi -> Cyrl
+ 1815, 105, // kok -> Deva
+ 1819, 100, // kpt -> Cyrl
+ 1823, 100, // kpy -> Cyrl
+ 1827, 475, // kqd -> Syrc
+ 1831, 120, // kqy -> Ethi
+ 1835, 105, // kra -> Deva
+ 1839, 100, // krc -> Cyrl
+ 1843, 100, // krk -> Cyrl
+ 1847, 235, // krr -> Khmr
+ 1851, 105, // kru -> Deva
+ 1855, 235, // krv -> Khmr
+ 1859, 10, // ks -> Arab
+ 1862, 345, // ksu -> Mymr
+ 1866, 345, // ksw -> Mymr
+ 1870, 105, // ksz -> Deva
+ 1874, 120, // ktb -> Ethi
+ 1878, 10, // ktl -> Arab
+ 1882, 410, // ktp -> Plrd
+ 1886, 10, // ku_LB -> Arab
+ 1892, 260, // kuf -> Laoo
+ 1896, 100, // kum -> Cyrl
+ 1900, 100, // kv -> Cyrl
+ 1903, 100, // kva -> Cyrl
+ 1907, 345, // kvq -> Mymr
+ 1911, 345, // kvt -> Mymr
+ 1915, 10, // kvx -> Arab
+ 1919, 215, // kvy -> Kali
+ 1923, 345, // kxf -> Mymr
+ 1927, 345, // kxk -> Mymr
+ 1931, 530, // kxm -> Thai
+ 1935, 10, // kxp -> Arab
+ 1939, 100, // ky -> Cyrl
+ 1942, 10, // ky_CN -> Arab
+ 1948, 215, // kyu -> Kali
+ 1952, 105, // kyv -> Deva
+ 1956, 105, // kyw -> Deva
+ 1960, 270, // lab -> Lina
+ 1964, 185, // lad -> Hebr
+ 1968, 105, // lae -> Deva
+ 1972, 10, // lah -> Arab
+ 1976, 280, // lbc -> Lisu
+ 1980, 100, // lbe -> Cyrl
+ 1984, 105, // lbf -> Deva
+ 1988, 535, // lbj -> Tibt
+ 1992, 105, // lbm -> Deva
+ 1996, 260, // lbo -> Laoo
+ 2000, 105, // lbr -> Deva
+ 2004, 530, // lcp -> Thai
+ 2008, 265, // lep -> Lepc
+ 2012, 100, // lez -> Cyrl
+ 2016, 105, // lhm -> Deva
+ 2020, 475, // lhs -> Syrc
+ 2024, 105, // lif -> Deva
+ 2028, 280, // lis -> Lisu
+ 2032, 535, // lkh -> Tibt
+ 2036, 10, // lki -> Arab
+ 2040, 105, // lmh -> Deva
+ 2044, 515, // lmn -> Telu
+ 2048, 260, // lo -> Laoo
+ 2051, 105, // loy -> Deva
+ 2055, 410, // lpo -> Plrd
+ 2059, 10, // lrc -> Arab
+ 2063, 10, // lrk -> Arab
+ 2067, 10, // lrl -> Arab
+ 2071, 10, // lsa -> Arab
+ 2075, 185, // lsd -> Hebr
+ 2079, 10, // lss -> Arab
+ 2083, 535, // luk -> Tibt
+ 2087, 105, // luu -> Deva
+ 2091, 10, // luv -> Arab
+ 2095, 10, // luz -> Arab
+ 2099, 530, // lwl -> Thai
+ 2103, 530, // lwm -> Thai
+ 2107, 535, // lya -> Tibt
+ 2111, 175, // lzh -> Hans
+ 2115, 105, // mag -> Deva
+ 2119, 105, // mai -> Deva
+ 2123, 360, // man_GN -> Nkoo
+ 2130, 10, // mby -> Arab
+ 2134, 10, // mde -> Arab
+ 2138, 100, // mdf -> Cyrl
+ 2142, 120, // mdx -> Ethi
+ 2146, 120, // mdy -> Ethi
+ 2150, 10, // mfa -> Arab
+ 2154, 10, // mfi -> Arab
+ 2158, 105, // mgp -> Deva
+ 2162, 10, // mhj -> Arab
+ 2166, 295, // mid -> Mand
+ 2170, 105, // mjl -> Deva
+ 2174, 320, // mjq -> Mlym
+ 2178, 320, // mjr -> Mlym
+ 2182, 105, // mjt -> Deva
+ 2186, 515, // mju -> Telu
+ 2190, 320, // mjv -> Mlym
+ 2194, 105, // mjz -> Deva
+ 2198, 100, // mk -> Cyrl
+ 2201, 105, // mkb -> Deva
+ 2205, 105, // mke -> Deva
+ 2209, 10, // mki -> Arab
+ 2213, 530, // mkm -> Thai
+ 2217, 320, // ml -> Mlym
+ 2220, 530, // mlf -> Thai
+ 2224, 100, // mn -> Cyrl
+ 2227, 330, // mn_CN -> Mong
+ 2233, 45, // mni -> Beng
+ 2237, 10, // mnj -> Arab
+ 2241, 100, // mns -> Cyrl
+ 2245, 345, // mnw -> Mymr
+ 2249, 530, // mpz -> Thai
+ 2253, 105, // mr -> Deva
+ 2256, 530, // mra -> Thai
+ 2260, 105, // mrd -> Deva
+ 2264, 100, // mrj -> Cyrl
+ 2268, 335, // mro -> Mroo
+ 2272, 105, // mrr -> Deva
+ 2276, 10, // ms_CC -> Arab
+ 2282, 100, // mtm -> Cyrl
+ 2286, 105, // mtr -> Deva
+ 2290, 100, // mud -> Cyrl
+ 2294, 535, // muk -> Tibt
+ 2298, 105, // mut -> Deva
+ 2302, 500, // muv -> Taml
+ 2306, 120, // muz -> Ethi
+ 2310, 330, // mvf -> Mong
+ 2314, 10, // mvy -> Arab
+ 2318, 120, // mvz -> Ethi
+ 2322, 105, // mwr -> Deva
+ 2326, 345, // mwt -> Mymr
+ 2330, 195, // mww -> Hmnp
+ 2334, 345, // my -> Mymr
+ 2337, 120, // mym -> Ethi
+ 2341, 100, // myv -> Cyrl
+ 2345, 295, // myz -> Mand
+ 2349, 10, // mzn -> Arab
+ 2353, 175, // nan -> Hans
+ 2357, 105, // nao -> Deva
+ 2361, 105, // ncd -> Deva
+ 2365, 260, // ncq -> Laoo
+ 2369, 100, // ndf -> Cyrl
+ 2373, 105, // ne -> Deva
+ 2376, 100, // neg -> Cyrl
+ 2380, 535, // neh -> Tibt
+ 2384, 570, // nei -> Xsux
+ 2388, 105, // new -> Deva
+ 2392, 260, // ngt -> Laoo
+ 2396, 100, // nio -> Cyrl
+ 2400, 515, // nit -> Telu
+ 2404, 100, // niv -> Cyrl
+ 2408, 10, // nli -> Arab
+ 2412, 10, // nlm -> Arab
+ 2416, 105, // nlx -> Deva
+ 2420, 105, // nmm -> Deva
+ 2424, 560, // nnp -> Wcho
+ 2428, 255, // nod -> Lana
+ 2432, 105, // noe -> Deva
+ 2436, 100, // nog -> Cyrl
+ 2440, 105, // noi -> Deva
+ 2444, 430, // non -> Runr
+ 2448, 575, // nos -> Yiii
+ 2452, 535, // npb -> Tibt
+ 2456, 360, // nqo -> Nkoo
+ 2460, 575, // nsd -> Yiii
+ 2464, 575, // nsf -> Yiii
+ 2468, 65, // nsk -> Cans
+ 2472, 540, // nst -> Tnsa
+ 2476, 575, // nsv -> Yiii
+ 2480, 575, // nty -> Yiii
+ 2484, 10, // ntz -> Arab
+ 2488, 355, // nwc -> Newa
+ 2492, 105, // nwx -> Deva
+ 2496, 530, // nyl -> Thai
+ 2500, 10, // nyq -> Arab
+ 2504, 100, // oaa -> Cyrl
+ 2508, 100, // oac -> Cyrl
+ 2512, 475, // oar -> Syrc
+ 2516, 125, // oav -> Geor
+ 2520, 405, // obm -> Phnx
+ 2524, 345, // obr -> Mymr
+ 2528, 10, // odk -> Arab
+ 2532, 570, // oht -> Xsux
+ 2536, 65, // oj -> Cans
+ 2539, 65, // ojs -> Cans
+ 2543, 165, // okm -> Hang
+ 2547, 170, // oko -> Hani
+ 2551, 235, // okz -> Khmr
+ 2555, 105, // ola -> Deva
+ 2559, 535, // ole -> Tibt
+ 2563, 100, // omk -> Cyrl
+ 2567, 340, // omp -> Mtei
+ 2571, 325, // omr -> Modi
+ 2575, 105, // oon -> Deva
+ 2579, 385, // or -> Orya
+ 2582, 515, // ort -> Telu
+ 2586, 10, // oru -> Arab
+ 2590, 100, // orv -> Cyrl
+ 2594, 100, // os -> Cyrl
+ 2597, 390, // osa -> Osge
+ 2601, 200, // osc -> Ital
+ 2605, 205, // osi -> Java
+ 2609, 10, // ota -> Arab
+ 2613, 535, // otb -> Tibt
+ 2617, 380, // otk -> Orkh
+ 2621, 145, // oty -> Gran
+ 2625, 160, // pa -> Guru
+ 2628, 10, // pa_PK -> Arab
+ 2634, 400, // pal -> Phli
+ 2638, 100, // paq -> Cyrl
+ 2642, 10, // pbt -> Arab
+ 2646, 235, // pcb -> Khmr
+ 2650, 345, // pce -> Mymr
+ 2654, 320, // pcf -> Mlym
+ 2658, 320, // pcg -> Mlym
+ 2662, 105, // pch -> Deva
+ 2666, 105, // pci -> Deva
+ 2670, 515, // pcj -> Telu
+ 2674, 385, // peg -> Orya
+ 2678, 565, // peo -> Xpeo
+ 2682, 230, // pgd -> Khar
+ 2686, 105, // pgg -> Deva
+ 2690, 370, // pgl -> Ogam
+ 2694, 200, // pgn -> Ital
+ 2698, 105, // phd -> Deva
+ 2702, 345, // phk -> Mymr
+ 2706, 10, // phl -> Arab
+ 2710, 405, // phn -> Phnx
+ 2714, 260, // pho -> Laoo
+ 2718, 10, // phr -> Arab
+ 2722, 530, // pht -> Thai
+ 2726, 10, // phv -> Arab
+ 2730, 105, // phw -> Deva
+ 2734, 455, // pi -> Sinh
+ 2737, 55, // pka -> Brah
+ 2741, 320, // pkr -> Mlym
+ 2745, 10, // plk -> Arab
+ 2749, 345, // pll -> Mymr
+ 2753, 55, // pmh -> Brah
+ 2757, 150, // pnt -> Grek
+ 2761, 230, // pra -> Khar
+ 2765, 10, // prc -> Arab
+ 2769, 10, // prd -> Arab
+ 2773, 155, // prp -> Gujr
+ 2777, 530, // prt -> Thai
+ 2781, 10, // prx -> Arab
+ 2785, 10, // ps -> Arab
+ 2788, 10, // psh -> Arab
+ 2792, 10, // psi -> Arab
+ 2796, 10, // pst -> Arab
+ 2800, 105, // pum -> Deva
+ 2804, 345, // pwo -> Mymr
+ 2808, 105, // pwr -> Deva
+ 2812, 530, // pww -> Thai
+ 2816, 345, // pyx -> Mymr
+ 2820, 10, // qxq -> Arab
+ 2824, 105, // raa -> Deva
+ 2828, 105, // rab -> Deva
+ 2832, 105, // raf -> Deva
+ 2836, 45, // rah -> Beng
+ 2840, 105, // raj -> Deva
+ 2844, 105, // rav -> Deva
+ 2848, 345, // rbb -> Mymr
+ 2852, 10, // rdb -> Arab
+ 2856, 385, // rei -> Orya
+ 2860, 425, // rhg -> Rohg
+ 2864, 105, // rji -> Deva
+ 2868, 105, // rjs -> Deva
+ 2872, 235, // rka -> Khmr
+ 2876, 345, // rki -> Mymr
+ 2880, 45, // rkt -> Beng
+ 2884, 20, // rmi -> Armn
+ 2888, 10, // rmt -> Arab
+ 2892, 345, // rmz -> Mymr
+ 2896, 100, // rom_BG -> Cyrl
+ 2903, 100, // rsk -> Cyrl
+ 2907, 105, // rtw -> Deva
+ 2911, 100, // ru -> Cyrl
+ 2914, 100, // rue -> Cyrl
+ 2918, 100, // rut -> Cyrl
+ 2922, 105, // rwr -> Deva
+ 2926, 220, // ryu -> Kana
+ 2930, 105, // sa -> Deva
+ 2933, 100, // sah -> Cyrl
+ 2937, 435, // sam -> Samr
+ 2941, 375, // sat -> Olck
+ 2945, 445, // saz -> Saur
+ 2949, 10, // sbn -> Arab
+ 2953, 535, // sbu -> Tibt
+ 2957, 105, // sck -> Deva
+ 2961, 10, // scl -> Arab
+ 2965, 10, // scl_IN -> Arab
+ 2972, 105, // scp -> Deva
+ 2976, 260, // sct -> Laoo
+ 2980, 485, // scu -> Takr
+ 2984, 150, // scx -> Grek
+ 2988, 10, // sd -> Arab
+ 2991, 105, // sd_IN -> Deva
+ 2997, 10, // sdb -> Arab
+ 3001, 10, // sdf -> Arab
+ 3005, 10, // sdg -> Arab
+ 3009, 10, // sdh -> Arab
+ 3013, 10, // sds -> Arab
+ 3017, 100, // sel -> Cyrl
+ 3021, 410, // sfm -> Plrd
+ 3025, 370, // sga -> Ogam
+ 3029, 100, // sgh -> Cyrl
+ 3033, 105, // sgj -> Deva
+ 3037, 10, // sgr -> Arab
+ 3041, 535, // sgt -> Tibt
+ 3045, 120, // sgw -> Ethi
+ 3049, 10, // sgy -> Arab
+ 3053, 10, // shd -> Arab
+ 3057, 520, // shi -> Tfng
+ 3061, 10, // shm -> Arab
+ 3065, 345, // shn -> Mymr
+ 3069, 10, // shu -> Arab
+ 3073, 10, // shv -> Arab
+ 3077, 455, // si -> Sinh
+ 3080, 100, // sia -> Cyrl
+ 3084, 535, // sip -> Tibt
+ 3088, 10, // siy -> Arab
+ 3092, 10, // siz -> Arab
+ 3096, 100, // sjd -> Cyrl
+ 3100, 105, // sjp -> Deva
+ 3104, 100, // sjt -> Cyrl
+ 3108, 530, // skb -> Thai
+ 3112, 105, // skj -> Deva
+ 3116, 10, // skr -> Arab
+ 3120, 10, // slq -> Arab
+ 3124, 575, // smh -> Yiii
+ 3128, 435, // smp -> Samr
+ 3132, 235, // smu -> Khmr
+ 3136, 10, // smy -> Arab
+ 3140, 510, // soa -> Tavt
+ 3144, 460, // sog -> Sogd
+ 3148, 105, // soi -> Deva
+ 3152, 530, // sou -> Thai
+ 3156, 535, // spt -> Tibt
+ 3160, 385, // spv -> Orya
+ 3164, 10, // sqo -> Arab
+ 3168, 260, // sqq -> Laoo
+ 3172, 10, // sqt -> Arab
+ 3176, 100, // sr -> Cyrl
+ 3179, 465, // srb -> Sora
+ 3183, 10, // srh -> Arab
+ 3187, 105, // srx -> Deva
+ 3191, 10, // srz -> Arab
+ 3195, 10, // ssh -> Arab
+ 3199, 260, // sss -> Laoo
+ 3203, 10, // sts -> Arab
+ 3207, 120, // stv -> Ethi
+ 3211, 100, // sty -> Cyrl
+ 3215, 105, // suz -> Deva
+ 3219, 125, // sva -> Geor
+ 3223, 10, // swb -> Arab
+ 3227, 170, // swi -> Hani
+ 3231, 105, // swv -> Deva
+ 3235, 475, // syc -> Syrc
+ 3239, 45, // syl -> Beng
+ 3243, 475, // syn -> Syrc
+ 3247, 475, // syr -> Syrc
+ 3251, 105, // syw -> Deva
+ 3255, 500, // ta -> Taml
+ 3258, 100, // tab -> Cyrl
+ 3262, 105, // taj -> Deva
+ 3266, 480, // tbk -> Tagb
+ 3270, 535, // tcn -> Tibt
+ 3274, 345, // tco -> Mymr
+ 3278, 500, // tcx -> Taml
+ 3282, 245, // tcy -> Knda
+ 3286, 520, // tda -> Tfng
+ 3290, 105, // tdb -> Deva
+ 3294, 490, // tdd -> Tale
+ 3298, 105, // tdg -> Deva
+ 3302, 105, // tdh -> Deva
+ 3306, 515, // te -> Telu
+ 3309, 205, // tes -> Java
+ 3313, 100, // tg -> Cyrl
+ 3316, 10, // tg_PK -> Arab
+ 3322, 105, // tge -> Deva
+ 3326, 535, // tgf -> Tibt
+ 3330, 530, // th -> Thai
+ 3333, 105, // the -> Deva
+ 3337, 105, // thf -> Deva
+ 3341, 490, // thi -> Tale
+ 3345, 105, // thl -> Deva
+ 3349, 530, // thm -> Thai
+ 3353, 105, // thq -> Deva
+ 3357, 105, // thr -> Deva
+ 3361, 105, // ths -> Deva
+ 3365, 120, // ti -> Ethi
+ 3368, 120, // tig -> Ethi
+ 3372, 105, // tij -> Deva
+ 3376, 100, // tin -> Cyrl
+ 3380, 345, // tjl -> Mymr
+ 3384, 10, // tjo -> Arab
+ 3388, 105, // tkb -> Deva
+ 3392, 10, // tks -> Arab
+ 3396, 105, // tkt -> Deva
+ 3400, 105, // tmk -> Deva
+ 3404, 475, // tmr -> Syrc
+ 3408, 60, // tnv -> Cakm
+ 3412, 10, // tov -> Arab
+ 3416, 235, // tpu -> Khmr
+ 3420, 10, // tra -> Arab
+ 3424, 185, // trg -> Hebr
+ 3428, 10, // trm -> Arab
+ 3432, 10, // trw -> Arab
+ 3436, 150, // tsd -> Grek
+ 3440, 535, // tsj -> Tibt
+ 3444, 100, // tt -> Cyrl
+ 3447, 260, // tth -> Laoo
+ 3451, 260, // tto -> Laoo
+ 3455, 530, // tts -> Thai
+ 3459, 345, // tvn -> Mymr
+ 3463, 105, // twm -> Deva
+ 3467, 505, // txg -> Tang
+ 3471, 545, // txo -> Toto
+ 3475, 510, // tyr -> Tavt
+ 3479, 100, // tyv -> Cyrl
+ 3483, 100, // ude -> Cyrl
+ 3487, 320, // udg -> Mlym
+ 3491, 0, // udi -> Aghb
+ 3495, 100, // udm -> Cyrl
+ 3499, 10, // ug -> Arab
+ 3502, 100, // ug_KZ -> Cyrl
+ 3508, 100, // ug_MN -> Cyrl
+ 3514, 550, // uga -> Ugar
+ 3518, 100, // ugh -> Cyrl
+ 3522, 530, // ugo -> Thai
+ 3526, 100, // uk -> Cyrl
+ 3529, 385, // uki -> Orya
+ 3533, 100, // ulc -> Cyrl
+ 3537, 45, // unr -> Beng
+ 3541, 105, // unr_NP -> Deva
+ 3548, 45, // unx -> Beng
+ 3552, 10, // ur -> Arab
+ 3555, 530, // urk -> Thai
+ 3559, 10, // ush -> Arab
+ 3563, 150, // uum -> Grek
+ 3567, 10, // uz_AF -> Arab
+ 3573, 100, // uz_CN -> Cyrl
+ 3579, 10, // uzs -> Arab
+ 3583, 500, // vaa -> Taml
+ 3587, 10, // vaf -> Arab
+ 3591, 105, // vah -> Deva
+ 3595, 555, // vai -> Vaii
+ 3599, 105, // vas -> Deva
+ 3603, 105, // vav -> Deva
+ 3607, 105, // vay -> Deva
+ 3611, 10, // vgr -> Arab
+ 3615, 245, // vmd -> Knda
+ 3619, 10, // vmh -> Arab
+ 3623, 120, // wal -> Ethi
+ 3627, 10, // wbk -> Arab
+ 3631, 515, // wbq -> Telu
+ 3635, 105, // wbr -> Deva
+ 3639, 10, // wlo -> Arab
+ 3643, 105, // wme -> Deva
+ 3647, 10, // wne -> Arab
+ 3651, 10, // wni -> Arab
+ 3655, 130, // wsg -> Gong
+ 3659, 10, // wsv -> Arab
+ 3663, 105, // wtm -> Deva
+ 3667, 175, // wuu -> Hans
+ 3671, 100, // xal -> Cyrl
+ 3675, 120, // xan -> Ethi
+ 3679, 100, // xas -> Cyrl
+ 3683, 85, // xco -> Chrs
+ 3687, 70, // xcr -> Cari
+ 3691, 100, // xdq -> Cyrl
+ 3695, 10, // xhe -> Arab
+ 3699, 235, // xhm -> Khmr
+ 3703, 385, // xis -> Orya
+ 3707, 10, // xka -> Arab
+ 3711, 10, // xkc -> Arab
+ 3715, 10, // xkj -> Arab
+ 3719, 10, // xkp -> Arab
+ 3723, 285, // xlc -> Lyci
+ 3727, 290, // xld -> Lydi
+ 3731, 115, // xly -> Elym
+ 3735, 125, // xmf -> Geor
+ 3739, 300, // xmn -> Mani
+ 3743, 315, // xmr -> Merc
+ 3747, 350, // xna -> Narb
+ 3751, 105, // xnr -> Deva
+ 3755, 150, // xpg -> Grek
+ 3759, 370, // xpi -> Ogam
+ 3763, 100, // xpm -> Cyrl
+ 3767, 415, // xpr -> Prti
+ 3771, 100, // xrm -> Cyrl
+ 3775, 100, // xrn -> Cyrl
+ 3779, 440, // xsa -> Sarb
+ 3783, 105, // xsr -> Deva
+ 3787, 100, // xss -> Cyrl
+ 3791, 500, // xub -> Taml
+ 3795, 500, // xuj -> Taml
+ 3799, 200, // xve -> Ital
+ 3803, 10, // xvi -> Arab
+ 3807, 100, // xwo -> Cyrl
+ 3811, 305, // xzh -> Marc
+ 3815, 100, // yai -> Cyrl
+ 3819, 105, // ybh -> Deva
+ 3823, 105, // ybi -> Deva
+ 3827, 10, // ydg -> Arab
+ 3831, 320, // yea -> Mlym
+ 3835, 150, // yej -> Grek
+ 3839, 515, // yeu -> Telu
+ 3843, 410, // ygp -> Plrd
+ 3847, 185, // yhd -> Hebr
+ 3851, 185, // yi -> Hebr
+ 3854, 575, // yig -> Yiii
+ 3858, 185, // yih -> Hebr
+ 3862, 575, // yiv -> Yiii
+ 3866, 100, // ykg -> Cyrl
+ 3870, 410, // yna -> Plrd
+ 3874, 100, // ynk -> Cyrl
+ 3878, 210, // yoi -> Jpan
+ 3882, 530, // yoy -> Thai
+ 3886, 100, // yrk -> Cyrl
+ 3890, 575, // ysd -> Yiii
+ 3894, 575, // ysn -> Yiii
+ 3898, 575, // ysp -> Yiii
+ 3902, 100, // ysr -> Cyrl
+ 3906, 410, // ysy -> Plrd
+ 3910, 185, // yud -> Hebr
+ 3914, 180, // yue -> Hant
+ 3918, 175, // yue_CN -> Hans
+ 3925, 100, // yug -> Cyrl
+ 3929, 100, // yux -> Cyrl
+ 3933, 410, // ywq -> Plrd
+ 3937, 410, // ywu -> Plrd
+ 3941, 535, // zau -> Tibt
+ 3945, 10, // zba -> Arab
+ 3949, 170, // zch -> Hani
+ 3953, 10, // zdj -> Arab
+ 3957, 170, // zeh -> Hani
+ 3961, 520, // zen -> Tfng
+ 3965, 170, // zgb -> Hani
+ 3969, 520, // zgh -> Tfng
+ 3973, 170, // zgm -> Hani
+ 3977, 170, // zgn -> Hani
+ 3981, 175, // zh -> Hans
+ 3984, 180, // zh_AU -> Hant
+ 3990, 180, // zh_BN -> Hant
+ 3996, 180, // zh_GB -> Hant
+ 4002, 180, // zh_GF -> Hant
+ 4008, 180, // zh_HK -> Hant
+ 4014, 180, // zh_ID -> Hant
+ 4020, 180, // zh_MO -> Hant
+ 4026, 180, // zh_PA -> Hant
+ 4032, 180, // zh_PF -> Hant
+ 4038, 180, // zh_PH -> Hant
+ 4044, 180, // zh_SR -> Hant
+ 4050, 180, // zh_TH -> Hant
+ 4056, 180, // zh_TW -> Hant
+ 4062, 180, // zh_US -> Hant
+ 4068, 180, // zh_VN -> Hant
+ 4074, 170, // zhd -> Hani
+ 4078, 365, // zhx -> Nshu
+ 4082, 100, // zkb -> Cyrl
+ 4086, 100, // zko -> Cyrl
+ 4090, 240, // zkt -> Kits
+ 4094, 100, // zkz -> Cyrl
+ 4098, 170, // zlj -> Hani
+ 4102, 170, // zln -> Hani
+ 4106, 170, // zlq -> Hani
+ 4110, 170, // zqe -> Hani
+ 4114, 185, // zrp -> Hebr
+ 4118, 10, // zum -> Arab
+ 4122, 170, // zyg -> Hani
+ 4126, 170, // zyn -> Hani
+ 4130, 170, // zzj -> Hani
};
//======================================================================
@@ -433,35 +1138,36 @@ const char parentLocaleChars[] =
"en_AU\0en_BB\0en_BE\0en_BM\0en_BS\0en_BW\0en_BZ\0en_CC\0en_CH\0"
"en_CK\0en_CM\0en_CX\0en_CY\0en_DE\0en_DG\0en_DK\0en_DM\0en_Dsrt\0"
"en_ER\0en_FI\0en_FJ\0en_FK\0en_FM\0en_GB\0en_GD\0en_GG\0en_GH\0"
- "en_GI\0en_GM\0en_GY\0en_HK\0en_IE\0en_IL\0en_IM\0en_IN\0en_IO\0"
- "en_JE\0en_JM\0en_KE\0en_KI\0en_KN\0en_KY\0en_LC\0en_LR\0en_LS\0"
- "en_MG\0en_MO\0en_MS\0en_MT\0en_MU\0en_MV\0en_MW\0en_MY\0en_NA\0"
- "en_NF\0en_NG\0en_NL\0en_NR\0en_NU\0en_NZ\0en_PG\0en_PK\0en_PN\0"
- "en_PW\0en_RW\0en_SB\0en_SC\0en_SD\0en_SE\0en_SG\0en_SH\0en_SI\0"
- "en_SL\0en_SS\0en_SX\0en_SZ\0en_Shaw\0en_TC\0en_TK\0en_TO\0en_TT\0"
- "en_TV\0en_TZ\0en_UG\0en_VC\0en_VG\0en_VU\0en_WS\0en_ZA\0en_ZM\0"
- "en_ZW\0es_419\0es_AR\0es_BO\0es_BR\0es_BZ\0es_CL\0es_CO\0es_CR\0"
- "es_CU\0es_DO\0es_EC\0es_GT\0es_HN\0es_MX\0es_NI\0es_PA\0es_PE\0"
- "es_PR\0es_PY\0es_SV\0es_US\0es_UY\0es_VE\0ff_Adlm\0ff_Arab\0fr_HT\0"
- "ha_Arab\0hi_Latn\0ht\0iu_Latn\0kk_Arab\0ks_Deva\0ku_Arab\0ky_Arab\0"
- "ky_Latn\0ml_Arab\0mn_Mong\0mni_Mtei\0ms_Arab\0nb\0nn\0no\0pa_Arab\0"
- "pt_AO\0pt_CH\0pt_CV\0pt_FR\0pt_GQ\0pt_GW\0pt_LU\0pt_MO\0pt_MZ\0"
- "pt_PT\0pt_ST\0pt_TL\0root\0sat_Deva\0sd_Deva\0sd_Khoj\0sd_Sind\0"
- "shi_Latn\0so_Arab\0sr_Latn\0sw_Arab\0tg_Arab\0ug_Cyrl\0uz_Arab\0"
- "uz_Cyrl\0vai_Latn\0wo_Arab\0yo_Arab\0yue_Hans\0zh_Hant\0zh_Hant_HK\0"
- "zh_Hant_MO\0";
+ "en_GI\0en_GM\0en_GY\0en_HK\0en_ID\0en_IE\0en_IL\0en_IM\0en_IN\0"
+ "en_IO\0en_JE\0en_JM\0en_KE\0en_KI\0en_KN\0en_KY\0en_LC\0en_LR\0"
+ "en_LS\0en_MG\0en_MO\0en_MS\0en_MT\0en_MU\0en_MV\0en_MW\0en_MY\0"
+ "en_NA\0en_NF\0en_NG\0en_NL\0en_NR\0en_NU\0en_NZ\0en_PG\0en_PK\0"
+ "en_PN\0en_PW\0en_RW\0en_SB\0en_SC\0en_SD\0en_SE\0en_SG\0en_SH\0"
+ "en_SI\0en_SL\0en_SS\0en_SX\0en_SZ\0en_Shaw\0en_TC\0en_TK\0en_TO\0"
+ "en_TT\0en_TV\0en_TZ\0en_UG\0en_VC\0en_VG\0en_VU\0en_WS\0en_ZA\0"
+ "en_ZM\0en_ZW\0es_419\0es_AR\0es_BO\0es_BR\0es_BZ\0es_CL\0es_CO\0"
+ "es_CR\0es_CU\0es_DO\0es_EC\0es_GT\0es_HN\0es_JP\0es_MX\0es_NI\0"
+ "es_PA\0es_PE\0es_PR\0es_PY\0es_SV\0es_US\0es_UY\0es_VE\0ff_Adlm\0"
+ "ff_Arab\0fr_HT\0ha_Arab\0hi_Latn\0ht\0iu_Latn\0kk_Arab\0ks_Deva\0"
+ "ku_Arab\0kxv_Deva\0kxv_Orya\0kxv_Telu\0ky_Arab\0ky_Latn\0ml_Arab\0"
+ "mn_Mong\0mni_Mtei\0ms_Arab\0nb\0nn\0no\0no_NO\0pa_Arab\0pt_AO\0"
+ "pt_CH\0pt_CV\0pt_FR\0pt_GQ\0pt_GW\0pt_LU\0pt_MO\0pt_MZ\0pt_PT\0"
+ "pt_ST\0pt_TL\0root\0sat_Deva\0sd_Deva\0sd_Khoj\0sd_Sind\0shi_Latn\0"
+ "so_Arab\0sr_Latn\0sw_Arab\0tg_Arab\0ug_Cyrl\0uz_Arab\0uz_Cyrl\0"
+ "vai_Latn\0wo_Arab\0yo_Arab\0yue_Hans\0zh_Hant\0zh_Hant_HK\0zh_Hant_MO\0"
+ "";
const int32_t parentLocaleTable[] = {
- 0, 1017, // az_Arab -> root
- 8, 1017, // az_Cyrl -> root
- 16, 1017, // bal_Latn -> root
- 25, 1017, // blt_Latn -> root
- 34, 1017, // bm_Nkoo -> root
- 42, 1017, // bs_Cyrl -> root
- 50, 1017, // byn_Latn -> root
- 59, 1017, // cu_Glag -> root
- 67, 1017, // dje_Arab -> root
- 76, 1017, // dyo_Arab -> root
+ 0, 1062, // az_Arab -> root
+ 8, 1062, // az_Cyrl -> root
+ 16, 1062, // bal_Latn -> root
+ 25, 1062, // blt_Latn -> root
+ 34, 1062, // bm_Nkoo -> root
+ 42, 1062, // bs_Cyrl -> root
+ 50, 1062, // byn_Latn -> root
+ 59, 1062, // cu_Glag -> root
+ 67, 1062, // dje_Arab -> root
+ 76, 1062, // dyo_Arab -> root
92, 85, // en_150 -> en_001
99, 85, // en_AG -> en_001
105, 85, // en_AI -> en_001
@@ -483,7 +1189,7 @@ const int32_t parentLocaleTable[] = {
201, 85, // en_DG -> en_001
207, 92, // en_DK -> en_150
213, 85, // en_DM -> en_001
- 219, 1017, // en_Dsrt -> root
+ 219, 1062, // en_Dsrt -> root
227, 85, // en_ER -> en_001
233, 92, // en_FI -> en_150
239, 85, // en_FJ -> en_001
@@ -497,135 +1203,141 @@ const int32_t parentLocaleTable[] = {
287, 85, // en_GM -> en_001
293, 85, // en_GY -> en_001
299, 85, // en_HK -> en_001
- 305, 85, // en_IE -> en_001
- 311, 85, // en_IL -> en_001
- 317, 85, // en_IM -> en_001
- 323, 85, // en_IN -> en_001
- 329, 85, // en_IO -> en_001
- 335, 85, // en_JE -> en_001
- 341, 85, // en_JM -> en_001
- 347, 85, // en_KE -> en_001
- 353, 85, // en_KI -> en_001
- 359, 85, // en_KN -> en_001
- 365, 85, // en_KY -> en_001
- 371, 85, // en_LC -> en_001
- 377, 85, // en_LR -> en_001
- 383, 85, // en_LS -> en_001
- 389, 85, // en_MG -> en_001
- 395, 85, // en_MO -> en_001
- 401, 85, // en_MS -> en_001
- 407, 85, // en_MT -> en_001
- 413, 85, // en_MU -> en_001
- 419, 85, // en_MV -> en_001
- 425, 85, // en_MW -> en_001
- 431, 85, // en_MY -> en_001
- 437, 85, // en_NA -> en_001
- 443, 85, // en_NF -> en_001
- 449, 85, // en_NG -> en_001
- 455, 92, // en_NL -> en_150
- 461, 85, // en_NR -> en_001
- 467, 85, // en_NU -> en_001
- 473, 85, // en_NZ -> en_001
- 479, 85, // en_PG -> en_001
- 485, 85, // en_PK -> en_001
- 491, 85, // en_PN -> en_001
- 497, 85, // en_PW -> en_001
- 503, 85, // en_RW -> en_001
- 509, 85, // en_SB -> en_001
- 515, 85, // en_SC -> en_001
- 521, 85, // en_SD -> en_001
- 527, 92, // en_SE -> en_150
- 533, 85, // en_SG -> en_001
- 539, 85, // en_SH -> en_001
- 545, 92, // en_SI -> en_150
- 551, 85, // en_SL -> en_001
- 557, 85, // en_SS -> en_001
- 563, 85, // en_SX -> en_001
- 569, 85, // en_SZ -> en_001
- 575, 1017, // en_Shaw -> root
- 583, 85, // en_TC -> en_001
- 589, 85, // en_TK -> en_001
- 595, 85, // en_TO -> en_001
- 601, 85, // en_TT -> en_001
- 607, 85, // en_TV -> en_001
- 613, 85, // en_TZ -> en_001
- 619, 85, // en_UG -> en_001
- 625, 85, // en_VC -> en_001
- 631, 85, // en_VG -> en_001
- 637, 85, // en_VU -> en_001
- 643, 85, // en_WS -> en_001
- 649, 85, // en_ZA -> en_001
- 655, 85, // en_ZM -> en_001
- 661, 85, // en_ZW -> en_001
- 674, 667, // es_AR -> es_419
- 680, 667, // es_BO -> es_419
- 686, 667, // es_BR -> es_419
- 692, 667, // es_BZ -> es_419
- 698, 667, // es_CL -> es_419
- 704, 667, // es_CO -> es_419
- 710, 667, // es_CR -> es_419
- 716, 667, // es_CU -> es_419
- 722, 667, // es_DO -> es_419
- 728, 667, // es_EC -> es_419
- 734, 667, // es_GT -> es_419
- 740, 667, // es_HN -> es_419
- 746, 667, // es_MX -> es_419
- 752, 667, // es_NI -> es_419
- 758, 667, // es_PA -> es_419
- 764, 667, // es_PE -> es_419
- 770, 667, // es_PR -> es_419
- 776, 667, // es_PY -> es_419
- 782, 667, // es_SV -> es_419
- 788, 667, // es_US -> es_419
- 794, 667, // es_UY -> es_419
- 800, 667, // es_VE -> es_419
- 806, 1017, // ff_Adlm -> root
- 814, 1017, // ff_Arab -> root
- 828, 1017, // ha_Arab -> root
- 836, 323, // hi_Latn -> en_IN
- 844, 822, // ht -> fr_HT
- 847, 1017, // iu_Latn -> root
- 855, 1017, // kk_Arab -> root
- 863, 1017, // ks_Deva -> root
- 871, 1017, // ku_Arab -> root
- 879, 1017, // ky_Arab -> root
- 887, 1017, // ky_Latn -> root
- 895, 1017, // ml_Arab -> root
- 903, 1017, // mn_Mong -> root
- 911, 1017, // mni_Mtei -> root
- 920, 1017, // ms_Arab -> root
- 928, 934, // nb -> no
- 931, 934, // nn -> no
- 937, 1017, // pa_Arab -> root
- 945, 999, // pt_AO -> pt_PT
- 951, 999, // pt_CH -> pt_PT
- 957, 999, // pt_CV -> pt_PT
- 963, 999, // pt_FR -> pt_PT
- 969, 999, // pt_GQ -> pt_PT
- 975, 999, // pt_GW -> pt_PT
- 981, 999, // pt_LU -> pt_PT
- 987, 999, // pt_MO -> pt_PT
- 993, 999, // pt_MZ -> pt_PT
- 1005, 999, // pt_ST -> pt_PT
- 1011, 999, // pt_TL -> pt_PT
- 1022, 1017, // sat_Deva -> root
- 1031, 1017, // sd_Deva -> root
- 1039, 1017, // sd_Khoj -> root
- 1047, 1017, // sd_Sind -> root
- 1055, 1017, // shi_Latn -> root
- 1064, 1017, // so_Arab -> root
- 1072, 1017, // sr_Latn -> root
- 1080, 1017, // sw_Arab -> root
- 1088, 1017, // tg_Arab -> root
- 1096, 1017, // ug_Cyrl -> root
- 1104, 1017, // uz_Arab -> root
- 1112, 1017, // uz_Cyrl -> root
- 1120, 1017, // vai_Latn -> root
- 1129, 1017, // wo_Arab -> root
- 1137, 1017, // yo_Arab -> root
- 1145, 1017, // yue_Hans -> root
- 1154, 1017, // zh_Hant -> root
- 1173, 1162, // zh_Hant_MO -> zh_Hant_HK
+ 305, 85, // en_ID -> en_001
+ 311, 85, // en_IE -> en_001
+ 317, 85, // en_IL -> en_001
+ 323, 85, // en_IM -> en_001
+ 329, 85, // en_IN -> en_001
+ 335, 85, // en_IO -> en_001
+ 341, 85, // en_JE -> en_001
+ 347, 85, // en_JM -> en_001
+ 353, 85, // en_KE -> en_001
+ 359, 85, // en_KI -> en_001
+ 365, 85, // en_KN -> en_001
+ 371, 85, // en_KY -> en_001
+ 377, 85, // en_LC -> en_001
+ 383, 85, // en_LR -> en_001
+ 389, 85, // en_LS -> en_001
+ 395, 85, // en_MG -> en_001
+ 401, 85, // en_MO -> en_001
+ 407, 85, // en_MS -> en_001
+ 413, 85, // en_MT -> en_001
+ 419, 85, // en_MU -> en_001
+ 425, 85, // en_MV -> en_001
+ 431, 85, // en_MW -> en_001
+ 437, 85, // en_MY -> en_001
+ 443, 85, // en_NA -> en_001
+ 449, 85, // en_NF -> en_001
+ 455, 85, // en_NG -> en_001
+ 461, 92, // en_NL -> en_150
+ 467, 85, // en_NR -> en_001
+ 473, 85, // en_NU -> en_001
+ 479, 85, // en_NZ -> en_001
+ 485, 85, // en_PG -> en_001
+ 491, 85, // en_PK -> en_001
+ 497, 85, // en_PN -> en_001
+ 503, 85, // en_PW -> en_001
+ 509, 85, // en_RW -> en_001
+ 515, 85, // en_SB -> en_001
+ 521, 85, // en_SC -> en_001
+ 527, 85, // en_SD -> en_001
+ 533, 92, // en_SE -> en_150
+ 539, 85, // en_SG -> en_001
+ 545, 85, // en_SH -> en_001
+ 551, 92, // en_SI -> en_150
+ 557, 85, // en_SL -> en_001
+ 563, 85, // en_SS -> en_001
+ 569, 85, // en_SX -> en_001
+ 575, 85, // en_SZ -> en_001
+ 581, 1062, // en_Shaw -> root
+ 589, 85, // en_TC -> en_001
+ 595, 85, // en_TK -> en_001
+ 601, 85, // en_TO -> en_001
+ 607, 85, // en_TT -> en_001
+ 613, 85, // en_TV -> en_001
+ 619, 85, // en_TZ -> en_001
+ 625, 85, // en_UG -> en_001
+ 631, 85, // en_VC -> en_001
+ 637, 85, // en_VG -> en_001
+ 643, 85, // en_VU -> en_001
+ 649, 85, // en_WS -> en_001
+ 655, 85, // en_ZA -> en_001
+ 661, 85, // en_ZM -> en_001
+ 667, 85, // en_ZW -> en_001
+ 680, 673, // es_AR -> es_419
+ 686, 673, // es_BO -> es_419
+ 692, 673, // es_BR -> es_419
+ 698, 673, // es_BZ -> es_419
+ 704, 673, // es_CL -> es_419
+ 710, 673, // es_CO -> es_419
+ 716, 673, // es_CR -> es_419
+ 722, 673, // es_CU -> es_419
+ 728, 673, // es_DO -> es_419
+ 734, 673, // es_EC -> es_419
+ 740, 673, // es_GT -> es_419
+ 746, 673, // es_HN -> es_419
+ 752, 673, // es_JP -> es_419
+ 758, 673, // es_MX -> es_419
+ 764, 673, // es_NI -> es_419
+ 770, 673, // es_PA -> es_419
+ 776, 673, // es_PE -> es_419
+ 782, 673, // es_PR -> es_419
+ 788, 673, // es_PY -> es_419
+ 794, 673, // es_SV -> es_419
+ 800, 673, // es_US -> es_419
+ 806, 673, // es_UY -> es_419
+ 812, 673, // es_VE -> es_419
+ 818, 1062, // ff_Adlm -> root
+ 826, 1062, // ff_Arab -> root
+ 840, 1062, // ha_Arab -> root
+ 848, 329, // hi_Latn -> en_IN
+ 856, 834, // ht -> fr_HT
+ 859, 1062, // iu_Latn -> root
+ 867, 1062, // kk_Arab -> root
+ 875, 1062, // ks_Deva -> root
+ 883, 1062, // ku_Arab -> root
+ 891, 1062, // kxv_Deva -> root
+ 900, 1062, // kxv_Orya -> root
+ 909, 1062, // kxv_Telu -> root
+ 918, 1062, // ky_Arab -> root
+ 926, 1062, // ky_Latn -> root
+ 934, 1062, // ml_Arab -> root
+ 942, 1062, // mn_Mong -> root
+ 950, 1062, // mni_Mtei -> root
+ 959, 1062, // ms_Arab -> root
+ 967, 973, // nb -> no
+ 970, 973, // nn -> no
+ 976, 973, // no_NO -> no
+ 982, 1062, // pa_Arab -> root
+ 990, 1044, // pt_AO -> pt_PT
+ 996, 1044, // pt_CH -> pt_PT
+ 1002, 1044, // pt_CV -> pt_PT
+ 1008, 1044, // pt_FR -> pt_PT
+ 1014, 1044, // pt_GQ -> pt_PT
+ 1020, 1044, // pt_GW -> pt_PT
+ 1026, 1044, // pt_LU -> pt_PT
+ 1032, 1044, // pt_MO -> pt_PT
+ 1038, 1044, // pt_MZ -> pt_PT
+ 1050, 1044, // pt_ST -> pt_PT
+ 1056, 1044, // pt_TL -> pt_PT
+ 1067, 1062, // sat_Deva -> root
+ 1076, 1062, // sd_Deva -> root
+ 1084, 1062, // sd_Khoj -> root
+ 1092, 1062, // sd_Sind -> root
+ 1100, 1062, // shi_Latn -> root
+ 1109, 1062, // so_Arab -> root
+ 1117, 1062, // sr_Latn -> root
+ 1125, 1062, // sw_Arab -> root
+ 1133, 1062, // tg_Arab -> root
+ 1141, 1062, // ug_Cyrl -> root
+ 1149, 1062, // uz_Arab -> root
+ 1157, 1062, // uz_Cyrl -> root
+ 1165, 1062, // vai_Latn -> root
+ 1174, 1062, // wo_Arab -> root
+ 1182, 1062, // yo_Arab -> root
+ 1190, 1062, // yue_Hans -> root
+ 1199, 1062, // zh_Hant -> root
+ 1218, 1207, // zh_Hant_MO -> zh_Hant_HK
};
diff --git a/Build/source/libs/icu/icu-src/source/common/localematcher.cpp b/Build/source/libs/icu/icu-src/source/common/localematcher.cpp
index 2f8664b6f7b..6fc578af118 100644
--- a/Build/source/libs/icu/icu-src/source/common/localematcher.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/localematcher.cpp
@@ -51,7 +51,7 @@ typedef enum ULocMatchLifetime ULocMatchLifetime;
U_NAMESPACE_BEGIN
-LocaleMatcher::Result::Result(LocaleMatcher::Result &&src) U_NOEXCEPT :
+LocaleMatcher::Result::Result(LocaleMatcher::Result &&src) noexcept :
desiredLocale(src.desiredLocale),
supportedLocale(src.supportedLocale),
desiredIndex(src.desiredIndex),
@@ -70,7 +70,7 @@ LocaleMatcher::Result::~Result() {
}
}
-LocaleMatcher::Result &LocaleMatcher::Result::operator=(LocaleMatcher::Result &&src) U_NOEXCEPT {
+LocaleMatcher::Result &LocaleMatcher::Result::operator=(LocaleMatcher::Result &&src) noexcept {
this->~Result();
desiredLocale = src.desiredLocale;
@@ -122,7 +122,7 @@ Locale LocaleMatcher::Result::makeResolvedLocale(UErrorCode &errorCode) const {
return b.build(errorCode);
}
-LocaleMatcher::Builder::Builder(LocaleMatcher::Builder &&src) U_NOEXCEPT :
+LocaleMatcher::Builder::Builder(LocaleMatcher::Builder &&src) noexcept :
errorCode_(src.errorCode_),
supportedLocales_(src.supportedLocales_),
thresholdDistance_(src.thresholdDistance_),
@@ -142,7 +142,7 @@ LocaleMatcher::Builder::~Builder() {
delete maxDistanceSupported_;
}
-LocaleMatcher::Builder &LocaleMatcher::Builder::operator=(LocaleMatcher::Builder &&src) U_NOEXCEPT {
+LocaleMatcher::Builder &LocaleMatcher::Builder::operator=(LocaleMatcher::Builder &&src) noexcept {
this->~Builder();
errorCode_ = src.errorCode_;
@@ -307,7 +307,7 @@ LSR getMaximalLsrOrUnd(const XLikelySubtags &likelySubtags, const Locale &locale
if (U_FAILURE(errorCode) || locale.isBogus() || *locale.getName() == 0 /* "und" */) {
return UND_LSR;
} else {
- return likelySubtags.makeMaximizedLsrFrom(locale, errorCode);
+ return likelySubtags.makeMaximizedLsrFrom(locale, false, errorCode);
}
}
@@ -483,7 +483,7 @@ LocaleMatcher::LocaleMatcher(const Builder &builder, UErrorCode &errorCode) :
}
}
-LocaleMatcher::LocaleMatcher(LocaleMatcher &&src) U_NOEXCEPT :
+LocaleMatcher::LocaleMatcher(LocaleMatcher &&src) noexcept :
likelySubtags(src.likelySubtags),
localeDistance(src.localeDistance),
thresholdDistance(src.thresholdDistance),
@@ -520,7 +520,7 @@ LocaleMatcher::~LocaleMatcher() {
delete ownedDefaultLocale;
}
-LocaleMatcher &LocaleMatcher::operator=(LocaleMatcher &&src) U_NOEXCEPT {
+LocaleMatcher &LocaleMatcher::operator=(LocaleMatcher &&src) noexcept {
this->~LocaleMatcher();
thresholdDistance = src.thresholdDistance;
diff --git a/Build/source/libs/icu/icu-src/source/common/locavailable.cpp b/Build/source/libs/icu/icu-src/source/common/locavailable.cpp
index cf341e1f74c..0ea20939888 100644
--- a/Build/source/libs/icu/icu-src/source/common/locavailable.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/locavailable.cpp
@@ -35,7 +35,7 @@
U_NAMESPACE_BEGIN
-static icu::Locale* availableLocaleList = NULL;
+static icu::Locale* availableLocaleList = nullptr;
static int32_t availableLocaleListCount;
static icu::UInitOnce gInitOnceLocale {};
@@ -43,13 +43,13 @@ U_NAMESPACE_END
U_CDECL_BEGIN
-static UBool U_CALLCONV locale_available_cleanup(void)
+static UBool U_CALLCONV locale_available_cleanup()
{
U_NAMESPACE_USE
if (availableLocaleList) {
delete []availableLocaleList;
- availableLocaleList = NULL;
+ availableLocaleList = nullptr;
}
availableLocaleListCount = 0;
gInitOnceLocale.reset();
@@ -71,7 +71,7 @@ void U_CALLCONV locale_available_init() {
if(availableLocaleListCount) {
availableLocaleList = new Locale[availableLocaleListCount];
}
- if (availableLocaleList == NULL) {
+ if (availableLocaleList == nullptr) {
availableLocaleListCount= 0;
}
for (int32_t locCount=availableLocaleListCount-1; locCount>=0; --locCount) {
@@ -106,7 +106,7 @@ icu::UInitOnce ginstalledLocalesInitOnce {};
class AvailableLocalesSink : public ResourceSink {
public:
- void put(const char *key, ResourceValue &value, UBool /*noFallback*/, UErrorCode &status) U_OVERRIDE {
+ void put(const char *key, ResourceValue &value, UBool /*noFallback*/, UErrorCode &status) override {
ResourceTable resIndexTable = value.getTable(status);
if (U_FAILURE(status)) {
return;
@@ -196,7 +196,7 @@ class AvailableLocalesStringEnumeration : public StringEnumeration {
/* ### Get available **************************************************/
-static UBool U_CALLCONV uloc_cleanup(void) {
+static UBool U_CALLCONV uloc_cleanup() {
for (int32_t i = 0; i < UPRV_LENGTHOF(gAvailableLocaleNames); i++) {
uprv_free(gAvailableLocaleNames[i]);
gAvailableLocaleNames[i] = nullptr;
@@ -212,7 +212,7 @@ static UBool U_CALLCONV uloc_cleanup(void) {
static void U_CALLCONV loadInstalledLocales(UErrorCode& status) {
ucln_common_registerCleanup(UCLN_COMMON_ULOC, uloc_cleanup);
- icu::LocalUResourceBundlePointer rb(ures_openDirect(NULL, "res_index", &status));
+ icu::LocalUResourceBundlePointer rb(ures_openDirect(nullptr, "res_index", &status));
AvailableLocalesSink sink;
ures_getAllItemsWithFallback(rb.getAlias(), "", sink, status);
}
diff --git a/Build/source/libs/icu/icu-src/source/common/locbased.cpp b/Build/source/libs/icu/icu-src/source/common/locbased.cpp
index ff378b4cc78..adcf2f843c0 100644
--- a/Build/source/libs/icu/icu-src/source/common/locbased.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/locbased.cpp
@@ -22,7 +22,7 @@ Locale LocaleBased::getLocale(ULocDataLocaleType type, UErrorCode& status) const
const char* LocaleBased::getLocaleID(ULocDataLocaleType type, UErrorCode& status) const {
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
switch(type) {
@@ -32,7 +32,7 @@ const char* LocaleBased::getLocaleID(ULocDataLocaleType type, UErrorCode& status
return actual;
default:
status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
}
diff --git a/Build/source/libs/icu/icu-src/source/common/locdispnames.cpp b/Build/source/libs/icu/icu-src/source/common/locdispnames.cpp
index 637556cc71d..3ec1b81c812 100644
--- a/Build/source/libs/icu/icu-src/source/common/locdispnames.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/locdispnames.cpp
@@ -55,7 +55,7 @@ Locale::getDisplayLanguage(UnicodeString& dispLang) const
UnicodeString&
Locale::getDisplayLanguage(const Locale &displayLocale,
UnicodeString &result) const {
- UChar *buffer;
+ char16_t *buffer;
UErrorCode errorCode=U_ZERO_ERROR;
int32_t length;
@@ -95,7 +95,7 @@ Locale::getDisplayScript(UnicodeString& dispScript) const
UnicodeString&
Locale::getDisplayScript(const Locale &displayLocale,
UnicodeString &result) const {
- UChar *buffer;
+ char16_t *buffer;
UErrorCode errorCode=U_ZERO_ERROR;
int32_t length;
@@ -135,7 +135,7 @@ Locale::getDisplayCountry(UnicodeString& dispCntry) const
UnicodeString&
Locale::getDisplayCountry(const Locale &displayLocale,
UnicodeString &result) const {
- UChar *buffer;
+ char16_t *buffer;
UErrorCode errorCode=U_ZERO_ERROR;
int32_t length;
@@ -175,7 +175,7 @@ Locale::getDisplayVariant(UnicodeString& dispVar) const
UnicodeString&
Locale::getDisplayVariant(const Locale &displayLocale,
UnicodeString &result) const {
- UChar *buffer;
+ char16_t *buffer;
UErrorCode errorCode=U_ZERO_ERROR;
int32_t length;
@@ -215,7 +215,7 @@ Locale::getDisplayName( UnicodeString& name ) const
UnicodeString&
Locale::getDisplayName(const Locale &displayLocale,
UnicodeString &result) const {
- UChar *buffer;
+ char16_t *buffer;
UErrorCode errorCode=U_ZERO_ERROR;
int32_t length;
@@ -302,12 +302,12 @@ _getStringOrCopyKey(const char *path, const char *locale,
const char* subTableKey,
const char *itemKey,
const char *substitute,
- UChar *dest, int32_t destCapacity,
+ char16_t *dest, int32_t destCapacity,
UErrorCode *pErrorCode) {
- const UChar *s = NULL;
+ const char16_t *s = nullptr;
int32_t length = 0;
- if(itemKey==NULL) {
+ if(itemKey==nullptr) {
/* top-level item: normal resource bundle access */
icu::LocalUResourceBundlePointer rb(ures_open(path, locale, pErrorCode));
@@ -318,7 +318,7 @@ _getStringOrCopyKey(const char *path, const char *locale,
} else {
bool isLanguageCode = (uprv_strncmp(tableKey, _kLanguages, 9) == 0);
/* Language code should not be a number. If it is, set the error code. */
- if (isLanguageCode && uprv_strtol(itemKey, NULL, 10)) {
+ if (isLanguageCode && uprv_strtol(itemKey, nullptr, 10)) {
*pErrorCode = U_MISSING_RESOURCE_ERROR;
} else {
/* second-level item, use special fallback */
@@ -344,7 +344,7 @@ _getStringOrCopyKey(const char *path, const char *locale,
if(U_SUCCESS(*pErrorCode)) {
int32_t copyLength=uprv_min(length, destCapacity);
- if(copyLength>0 && s != NULL) {
+ if(copyLength>0 && s != nullptr) {
u_memcpy(dest, s, copyLength);
}
} else {
@@ -362,21 +362,21 @@ typedef int32_t U_CALLCONV UDisplayNameGetter(const char *, char *, int32_t, UE
static int32_t
_getDisplayNameForComponent(const char *locale,
const char *displayLocale,
- UChar *dest, int32_t destCapacity,
+ char16_t *dest, int32_t destCapacity,
UDisplayNameGetter *getter,
const char *tag,
UErrorCode *pErrorCode) {
char localeBuffer[ULOC_FULLNAME_CAPACITY*4];
int32_t length;
UErrorCode localStatus;
- const char* root = NULL;
+ const char* root = nullptr;
/* argument checking */
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return 0;
}
- if(destCapacity<0 || (destCapacity>0 && dest==NULL)) {
+ if(destCapacity<0 || (destCapacity>0 && dest==nullptr)) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -399,7 +399,7 @@ _getDisplayNameForComponent(const char *locale,
root = tag == _kCountries ? U_ICUDATA_REGION : U_ICUDATA_LANG;
return _getStringOrCopyKey(root, displayLocale,
- tag, NULL, localeBuffer,
+ tag, nullptr, localeBuffer,
localeBuffer,
dest, destCapacity,
pErrorCode);
@@ -408,7 +408,7 @@ _getDisplayNameForComponent(const char *locale,
U_CAPI int32_t U_EXPORT2
uloc_getDisplayLanguage(const char *locale,
const char *displayLocale,
- UChar *dest, int32_t destCapacity,
+ char16_t *dest, int32_t destCapacity,
UErrorCode *pErrorCode) {
return _getDisplayNameForComponent(locale, displayLocale, dest, destCapacity,
uloc_getLanguage, _kLanguages, pErrorCode);
@@ -417,7 +417,7 @@ uloc_getDisplayLanguage(const char *locale,
U_CAPI int32_t U_EXPORT2
uloc_getDisplayScript(const char* locale,
const char* displayLocale,
- UChar *dest, int32_t destCapacity,
+ char16_t *dest, int32_t destCapacity,
UErrorCode *pErrorCode)
{
UErrorCode err = U_ZERO_ERROR;
@@ -442,7 +442,7 @@ uloc_getDisplayScript(const char* locale,
static int32_t
uloc_getDisplayScriptInContext(const char* locale,
const char* displayLocale,
- UChar *dest, int32_t destCapacity,
+ char16_t *dest, int32_t destCapacity,
UErrorCode *pErrorCode)
{
return _getDisplayNameForComponent(locale, displayLocale, dest, destCapacity,
@@ -452,7 +452,7 @@ uloc_getDisplayScriptInContext(const char* locale,
U_CAPI int32_t U_EXPORT2
uloc_getDisplayCountry(const char *locale,
const char *displayLocale,
- UChar *dest, int32_t destCapacity,
+ char16_t *dest, int32_t destCapacity,
UErrorCode *pErrorCode) {
return _getDisplayNameForComponent(locale, displayLocale, dest, destCapacity,
uloc_getCountry, _kCountries, pErrorCode);
@@ -466,7 +466,7 @@ uloc_getDisplayCountry(const char *locale,
U_CAPI int32_t U_EXPORT2
uloc_getDisplayVariant(const char *locale,
const char *displayLocale,
- UChar *dest, int32_t destCapacity,
+ char16_t *dest, int32_t destCapacity,
UErrorCode *pErrorCode) {
return _getDisplayNameForComponent(locale, displayLocale, dest, destCapacity,
uloc_getVariant, _kVariants, pErrorCode);
@@ -487,14 +487,14 @@ uloc_getDisplayVariant(const char *locale,
U_CAPI int32_t U_EXPORT2
uloc_getDisplayName(const char *locale,
const char *displayLocale,
- UChar *dest, int32_t destCapacity,
+ char16_t *dest, int32_t destCapacity,
UErrorCode *pErrorCode)
{
- static const UChar defaultSeparator[9] = { 0x007b, 0x0030, 0x007d, 0x002c, 0x0020, 0x007b, 0x0031, 0x007d, 0x0000 }; /* "{0}, {1}" */
- static const UChar sub0[4] = { 0x007b, 0x0030, 0x007d , 0x0000 } ; /* {0} */
- static const UChar sub1[4] = { 0x007b, 0x0031, 0x007d , 0x0000 } ; /* {1} */
+ static const char16_t defaultSeparator[9] = { 0x007b, 0x0030, 0x007d, 0x002c, 0x0020, 0x007b, 0x0031, 0x007d, 0x0000 }; /* "{0}, {1}" */
+ static const char16_t sub0[4] = { 0x007b, 0x0030, 0x007d , 0x0000 } ; /* {0} */
+ static const char16_t sub1[4] = { 0x007b, 0x0031, 0x007d , 0x0000 } ; /* {1} */
static const int32_t subLen = 3;
- static const UChar defaultPattern[10] = {
+ static const char16_t defaultPattern[10] = {
0x007b, 0x0030, 0x007d, 0x0020, 0x0028, 0x007b, 0x0031, 0x007d, 0x0029, 0x0000
}; /* {0} ({1}) */
static const int32_t defaultPatLen = 9;
@@ -503,16 +503,16 @@ uloc_getDisplayName(const char *locale,
int32_t length; /* of formatted result */
- const UChar *separator;
+ const char16_t *separator;
int32_t sepLen = 0;
- const UChar *pattern;
+ const char16_t *pattern;
int32_t patLen = 0;
int32_t sub0Pos, sub1Pos;
- UChar formatOpenParen = 0x0028; // (
- UChar formatReplaceOpenParen = 0x005B; // [
- UChar formatCloseParen = 0x0029; // )
- UChar formatReplaceCloseParen = 0x005D; // ]
+ char16_t formatOpenParen = 0x0028; // (
+ char16_t formatReplaceOpenParen = 0x005B; // [
+ char16_t formatCloseParen = 0x0029; // )
+ char16_t formatReplaceCloseParen = 0x005D; // ]
UBool haveLang = true; /* assume true, set false if we find we don't have
a lang component in the locale */
@@ -522,11 +522,11 @@ uloc_getDisplayName(const char *locale,
int32_t langi = 0; /* index of the language substitution (0 or 1), virtually always 0 */
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return 0;
}
- if(destCapacity<0 || (destCapacity>0 && dest==NULL)) {
+ if(destCapacity<0 || (destCapacity>0 && dest==nullptr)) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -537,7 +537,7 @@ uloc_getDisplayName(const char *locale,
icu::LocalUResourceBundlePointer locbundle(
ures_open(U_ICUDATA_LANG, displayLocale, &status));
icu::LocalUResourceBundlePointer dspbundle(
- ures_getByKeyWithFallback(locbundle.getAlias(), _kLocaleDisplayPattern, NULL, &status));
+ ures_getByKeyWithFallback(locbundle.getAlias(), _kLocaleDisplayPattern, nullptr, &status));
separator=ures_getStringByKeyWithFallback(dspbundle.getAlias(), _kSeparator, &sepLen, &status);
pattern=ures_getStringByKeyWithFallback(dspbundle.getAlias(), _kPattern, &patLen, &status);
@@ -557,13 +557,13 @@ uloc_getDisplayName(const char *locale,
* This is similar to how pattern is handled below.
*/
{
- UChar *p0=u_strstr(separator, sub0);
- UChar *p1=u_strstr(separator, sub1);
- if (p0==NULL || p1==NULL || p1<p0) {
+ char16_t *p0=u_strstr(separator, sub0);
+ char16_t *p1=u_strstr(separator, sub1);
+ if (p0==nullptr || p1==nullptr || p1<p0) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
- separator = (const UChar *)p0 + subLen;
+ separator = (const char16_t *)p0 + subLen;
sepLen = static_cast<int32_t>(p1 - separator);
}
@@ -574,9 +574,9 @@ uloc_getDisplayName(const char *locale,
sub1Pos=defaultSub1Pos;
// use default formatOpenParen etc. set above
} else { /* non-default pattern */
- UChar *p0=u_strstr(pattern, sub0);
- UChar *p1=u_strstr(pattern, sub1);
- if (p0==NULL || p1==NULL) {
+ char16_t *p0=u_strstr(pattern, sub0);
+ char16_t *p1=u_strstr(pattern, sub1);
+ if (p0==nullptr || p1==nullptr) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -586,7 +586,7 @@ uloc_getDisplayName(const char *locale,
int32_t t=sub0Pos; sub0Pos=sub1Pos; sub1Pos=t;
langi=1;
}
- if (u_strchr(pattern, 0xFF08) != NULL) {
+ if (u_strchr(pattern, 0xFF08) != nullptr) {
formatOpenParen = 0xFF08; // fullwidth (
formatReplaceOpenParen = 0xFF3B; // fullwidth [
formatCloseParen = 0xFF09; // fullwidth )
@@ -602,7 +602,7 @@ uloc_getDisplayName(const char *locale,
* adjust the parameters so padding is not added, and repeat.
*/
do {
- UChar* p=dest;
+ char16_t* p=dest;
int32_t patPos=0; /* position in the pattern, used for non-substitution portions */
int32_t langLen=0; /* length of language substitution */
int32_t langPos=0; /* position in output of language substitution */
@@ -665,7 +665,7 @@ uloc_getDisplayName(const char *locale,
U_FALLTHROUGH;
default: {
const char* kw=uenum_next(kenum.getAlias(), &len, pErrorCode);
- if (kw == NULL) {
+ if (kw == nullptr) {
len=0; /* mark that we didn't add a component */
subdone=true;
} else {
@@ -712,7 +712,7 @@ uloc_getDisplayName(const char *locale,
if (len>0) {
/* we added a component, so add separator and write it if there's room. */
if(len+sepLen<=cap) {
- const UChar * plimit = p + len;
+ const char16_t * plimit = p + len;
for (; p < plimit; p++) {
if (*p == formatOpenParen) {
*p = formatReplaceOpenParen;
@@ -788,24 +788,24 @@ uloc_getDisplayName(const char *locale,
U_CAPI int32_t U_EXPORT2
uloc_getDisplayKeyword(const char* keyword,
const char* displayLocale,
- UChar* dest,
+ char16_t* dest,
int32_t destCapacity,
UErrorCode* status){
/* argument checking */
- if(status==NULL || U_FAILURE(*status)) {
+ if(status==nullptr || U_FAILURE(*status)) {
return 0;
}
- if(destCapacity<0 || (destCapacity>0 && dest==NULL)) {
+ if(destCapacity<0 || (destCapacity>0 && dest==nullptr)) {
*status=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
- /* pass itemKey=NULL to look for a top-level item */
+ /* pass itemKey=nullptr to look for a top-level item */
return _getStringOrCopyKey(U_ICUDATA_LANG, displayLocale,
- _kKeys, NULL,
+ _kKeys, nullptr,
keyword,
keyword,
dest, destCapacity,
@@ -820,17 +820,17 @@ U_CAPI int32_t U_EXPORT2
uloc_getDisplayKeywordValue( const char* locale,
const char* keyword,
const char* displayLocale,
- UChar* dest,
+ char16_t* dest,
int32_t destCapacity,
UErrorCode* status){
/* argument checking */
- if(status==NULL || U_FAILURE(*status)) {
+ if(status==nullptr || U_FAILURE(*status)) {
return 0;
}
- if(destCapacity<0 || (destCapacity>0 && dest==NULL)) {
+ if(destCapacity<0 || (destCapacity>0 && dest==nullptr)) {
*status=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -849,14 +849,14 @@ uloc_getDisplayKeywordValue( const char* locale,
if(uprv_stricmp(keyword, _kCurrency)==0){
int32_t dispNameLen = 0;
- const UChar *dispName = NULL;
+ const char16_t *dispName = nullptr;
icu::LocalUResourceBundlePointer bundle(
ures_open(U_ICUDATA_CURR, displayLocale, status));
icu::LocalUResourceBundlePointer currencies(
- ures_getByKey(bundle.getAlias(), _kCurrencies, NULL, status));
+ ures_getByKey(bundle.getAlias(), _kCurrencies, nullptr, status));
icu::LocalUResourceBundlePointer currency(
- ures_getByKeyWithFallback(currencies.getAlias(), keywordValue.data(), NULL, status));
+ ures_getByKeyWithFallback(currencies.getAlias(), keywordValue.data(), nullptr, status));
dispName = ures_getStringByIndex(currency.getAlias(), UCURRENCY_DISPLAY_NAME_INDEX, &dispNameLen, status);
@@ -869,8 +869,8 @@ uloc_getDisplayKeywordValue( const char* locale,
}
}
- /* now copy the dispName over if not NULL */
- if(dispName != NULL){
+ /* now copy the dispName over if not nullptr */
+ if(dispName != nullptr){
if(dispNameLen <= destCapacity){
u_memcpy(dest, dispName, dispNameLen);
return u_terminateUChars(dest, destCapacity, dispNameLen, status);
diff --git a/Build/source/libs/icu/icu-src/source/common/locdspnm.cpp b/Build/source/libs/icu/icu-src/source/common/locdspnm.cpp
index 401f1fecbff..73fe531c543 100644
--- a/Build/source/libs/icu/icu-src/source/common/locdspnm.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/locdspnm.cpp
@@ -40,7 +40,7 @@ static int32_t ncat(char *buffer, uint32_t buflen, ...) {
char *p = buffer;
const char* e = buffer + buflen - 1;
- if (buffer == NULL || buflen < 1) {
+ if (buffer == nullptr || buflen < 1) {
return -1;
}
@@ -86,16 +86,16 @@ public:
inline UnicodeString &
ICUDataTable::get(const char* tableKey, const char* itemKey, UnicodeString& result) const {
- return get(tableKey, NULL, itemKey, result);
+ return get(tableKey, nullptr, itemKey, result);
}
inline UnicodeString &
ICUDataTable::getNoFallback(const char* tableKey, const char* itemKey, UnicodeString& result) const {
- return getNoFallback(tableKey, NULL, itemKey, result);
+ return getNoFallback(tableKey, nullptr, itemKey, result);
}
ICUDataTable::ICUDataTable(const char* path, const Locale& locale)
- : path(NULL), locale(Locale::getRoot())
+ : path(nullptr), locale(Locale::getRoot())
{
if (path) {
int32_t len = static_cast<int32_t>(uprv_strlen(path));
@@ -110,7 +110,7 @@ ICUDataTable::ICUDataTable(const char* path, const Locale& locale)
ICUDataTable::~ICUDataTable() {
if (path) {
uprv_free((void*) path);
- path = NULL;
+ path = nullptr;
}
}
@@ -125,7 +125,7 @@ ICUDataTable::get(const char* tableKey, const char* subTableKey, const char* ite
UErrorCode status = U_ZERO_ERROR;
int32_t len = 0;
- const UChar *s = uloc_getTableStringWithFallback(path, locale.getName(),
+ const char16_t *s = uloc_getTableStringWithFallback(path, locale.getName(),
tableKey, subTableKey, itemKey,
&len, &status);
if (U_SUCCESS(status) && len > 0) {
@@ -140,7 +140,7 @@ ICUDataTable::getNoFallback(const char* tableKey, const char* subTableKey, const
UErrorCode status = U_ZERO_ERROR;
int32_t len = 0;
- const UChar *s = uloc_getTableStringWithFallback(path, locale.getName(),
+ const char16_t *s = uloc_getTableStringWithFallback(path, locale.getName(),
tableKey, subTableKey, itemKey,
&len, &status);
if (U_SUCCESS(status)) {
@@ -347,7 +347,7 @@ private:
UnicodeString& keyDisplayName(const char* key, UnicodeString& result, UBool skipAdjust) const;
UnicodeString& keyValueDisplayName(const char* key, const char* value,
UnicodeString& result, UBool skipAdjust) const;
- void initialize(void);
+ void initialize();
struct CapitalizationContextSink;
};
@@ -358,7 +358,7 @@ LocaleDisplayNamesImpl::LocaleDisplayNamesImpl(const Locale& locale,
, langData(U_ICUDATA_LANG, locale)
, regionData(U_ICUDATA_REGION, locale)
, capitalizationContext(UDISPCTX_CAPITALIZATION_NONE)
- , capitalizationBrkIter(NULL)
+ , capitalizationBrkIter(nullptr)
, nameLength(UDISPCTX_LENGTH_FULL)
, substitute(UDISPCTX_SUBSTITUTE)
{
@@ -371,7 +371,7 @@ LocaleDisplayNamesImpl::LocaleDisplayNamesImpl(const Locale& locale,
, langData(U_ICUDATA_LANG, locale)
, regionData(U_ICUDATA_REGION, locale)
, capitalizationContext(UDISPCTX_CAPITALIZATION_NONE)
- , capitalizationBrkIter(NULL)
+ , capitalizationBrkIter(nullptr)
, nameLength(UDISPCTX_LENGTH_FULL)
, substitute(UDISPCTX_SUBSTITUTE)
{
@@ -447,7 +447,7 @@ struct LocaleDisplayNamesImpl::CapitalizationContextSink : public ResourceSink {
LocaleDisplayNamesImpl::CapitalizationContextSink::~CapitalizationContextSink() {}
void
-LocaleDisplayNamesImpl::initialize(void) {
+LocaleDisplayNamesImpl::initialize() {
LocaleDisplayNamesImpl *nonConstThis = (LocaleDisplayNamesImpl *)this;
nonConstThis->locale = langData.getLocale() == Locale::getRoot()
? regionData.getLocale()
@@ -467,16 +467,16 @@ LocaleDisplayNamesImpl::initialize(void) {
pattern = UnicodeString("{0} ({1})", -1, US_INV);
}
format.applyPatternMinMaxArguments(pattern, 2, 2, status);
- if (pattern.indexOf((UChar)0xFF08) >= 0) {
- formatOpenParen.setTo((UChar)0xFF08); // fullwidth (
- formatReplaceOpenParen.setTo((UChar)0xFF3B); // fullwidth [
- formatCloseParen.setTo((UChar)0xFF09); // fullwidth )
- formatReplaceCloseParen.setTo((UChar)0xFF3D); // fullwidth ]
+ if (pattern.indexOf((char16_t)0xFF08) >= 0) {
+ formatOpenParen.setTo((char16_t)0xFF08); // fullwidth (
+ formatReplaceOpenParen.setTo((char16_t)0xFF3B); // fullwidth [
+ formatCloseParen.setTo((char16_t)0xFF09); // fullwidth )
+ formatReplaceCloseParen.setTo((char16_t)0xFF3D); // fullwidth ]
} else {
- formatOpenParen.setTo((UChar)0x0028); // (
- formatReplaceOpenParen.setTo((UChar)0x005B); // [
- formatCloseParen.setTo((UChar)0x0029); // )
- formatReplaceCloseParen.setTo((UChar)0x005D); // ]
+ formatOpenParen.setTo((char16_t)0x0028); // (
+ formatReplaceOpenParen.setTo((char16_t)0x005B); // [
+ formatCloseParen.setTo((char16_t)0x0029); // )
+ formatReplaceCloseParen.setTo((char16_t)0x005D); // ]
}
UnicodeString ktPattern;
@@ -492,7 +492,7 @@ LocaleDisplayNamesImpl::initialize(void) {
// Also check whether we will need a break iterator (depends on the data)
UBool needBrkIter = false;
if (capitalizationContext == UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU || capitalizationContext == UDISPCTX_CAPITALIZATION_FOR_STANDALONE) {
- LocalUResourceBundlePointer resource(ures_open(NULL, locale.getName(), &status));
+ LocalUResourceBundlePointer resource(ures_open(nullptr, locale.getName(), &status));
if (U_FAILURE(status)) { return; }
CapitalizationContextSink sink(*this);
ures_getAllItemsWithFallback(resource.getAlias(), "contextTransforms", sink, status);
@@ -510,7 +510,7 @@ LocaleDisplayNamesImpl::initialize(void) {
capitalizationBrkIter = BreakIterator::createSentenceInstance(locale, status);
if (U_FAILURE(status)) {
delete capitalizationBrkIter;
- capitalizationBrkIter = NULL;
+ capitalizationBrkIter = nullptr;
}
}
#endif
@@ -554,7 +554,7 @@ LocaleDisplayNamesImpl::adjustForUsageAndContext(CapContextUsage usage,
UnicodeString& result) const {
#if !UCONFIG_NO_BREAK_ITERATION
// check to see whether we need to titlecase result
- if ( result.length() > 0 && u_islower(result.char32At(0)) && capitalizationBrkIter!= NULL &&
+ if ( result.length() > 0 && u_islower(result.char32At(0)) && capitalizationBrkIter!= nullptr &&
( capitalizationContext==UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE || fCapitalization[usage] ) ) {
// note fCapitalization[usage] won't be set unless capitalizationContext is UI_LIST_OR_MENU or STANDALONE
static UMutex capitalizationBrkIterLock;
@@ -660,7 +660,7 @@ LocaleDisplayNamesImpl::localeDisplayName(const Locale& loc,
UnicodeString temp2;
char value[ULOC_KEYWORD_AND_VALUES_CAPACITY]; // sigh, no ULOC_VALUE_CAPACITY
const char* key;
- while ((key = e->next((int32_t *)0, status)) != NULL) {
+ while ((key = e->next((int32_t *)0, status)) != nullptr) {
value[0] = 0;
loc.getKeywordValue(key, value, ULOC_KEYWORD_AND_VALUES_CAPACITY, status);
if (U_FAILURE(status) || status == U_STRING_NOT_TERMINATED_WARNING) {
@@ -680,7 +680,7 @@ LocaleDisplayNamesImpl::localeDisplayName(const Locale& loc,
appendWithSep(resultRemainder, temp3);
} else {
appendWithSep(resultRemainder, temp)
- .append((UChar)0x3d /* = */)
+ .append((char16_t)0x3d /* = */)
.append(temp2);
}
}
@@ -702,7 +702,7 @@ LocaleDisplayNamesImpl::appendWithSep(UnicodeString& buffer, const UnicodeString
} else {
const UnicodeString *values[2] = { &buffer, &src };
UErrorCode status = U_ZERO_ERROR;
- separatorFormat.formatAndReplace(values, 2, buffer, NULL, 0, status);
+ separatorFormat.formatAndReplace(values, 2, buffer, nullptr, 0, status);
}
return buffer;
}
@@ -724,7 +724,7 @@ LocaleDisplayNamesImpl::localeIdName(const char* localeId,
}
}
langData.getNoFallback("Languages", localeId, result);
- if (result.isBogus() && uprv_strchr(localeId, '_') == NULL) {
+ if (result.isBogus() && uprv_strchr(localeId, '_') == nullptr) {
// Canonicalize lang and try again, ICU-20870
// (only for language codes without script or region)
Locale canonLocale = Locale::createCanonical(localeId);
@@ -747,7 +747,7 @@ LocaleDisplayNamesImpl::localeIdName(const char* localeId,
UnicodeString&
LocaleDisplayNamesImpl::languageDisplayName(const char* lang,
UnicodeString& result) const {
- if (uprv_strcmp("root", lang) == 0 || uprv_strchr(lang, '_') != NULL) {
+ if (uprv_strcmp("root", lang) == 0 || uprv_strchr(lang, '_') != nullptr) {
return result = UnicodeString(lang, -1, US_INV);
}
if (nameLength == UDISPCTX_LENGTH_SHORT) {
@@ -879,7 +879,7 @@ LocaleDisplayNamesImpl::keyValueDisplayName(const char* key,
UErrorCode sts = U_ZERO_ERROR;
UnicodeString ustrValue(value, -1, US_INV);
int32_t len;
- const UChar *currencyName = ucurr_getName(ustrValue.getTerminatedBuffer(),
+ const char16_t *currencyName = ucurr_getName(ustrValue.getTerminatedBuffer(),
locale.getBaseName(), UCURR_LONG_NAME, nullptr /* isChoiceFormat */, &len, &sts);
if (U_FAILURE(sts)) {
// Return the value as is on failure
@@ -922,7 +922,7 @@ LocaleDisplayNames::createInstance(const Locale& locale,
LocaleDisplayNames*
LocaleDisplayNames::createInstance(const Locale& locale,
UDisplayContext *contexts, int32_t length) {
- if (contexts == NULL) {
+ if (contexts == nullptr) {
length = 0;
}
return new LocaleDisplayNamesImpl(locale, contexts, length);
@@ -941,7 +941,7 @@ uldn_open(const char * locale,
if (U_FAILURE(*pErrorCode)) {
return 0;
}
- if (locale == NULL) {
+ if (locale == nullptr) {
locale = uloc_getDefault();
}
return (ULocaleDisplayNames *)LocaleDisplayNames::createInstance(Locale(locale), dialectHandling);
@@ -954,7 +954,7 @@ uldn_openForContext(const char * locale,
if (U_FAILURE(*pErrorCode)) {
return 0;
}
- if (locale == NULL) {
+ if (locale == nullptr) {
locale = uloc_getDefault();
}
return (ULocaleDisplayNames *)LocaleDisplayNames::createInstance(Locale(locale), contexts, length);
@@ -971,7 +971,7 @@ uldn_getLocale(const ULocaleDisplayNames *ldn) {
if (ldn) {
return ((const LocaleDisplayNames *)ldn)->getLocale().getName();
}
- return NULL;
+ return nullptr;
}
U_CAPI UDialectHandling U_EXPORT2
@@ -995,13 +995,13 @@ uldn_getContext(const ULocaleDisplayNames *ldn,
U_CAPI int32_t U_EXPORT2
uldn_localeDisplayName(const ULocaleDisplayNames *ldn,
const char *locale,
- UChar *result,
+ char16_t *result,
int32_t maxResultSize,
UErrorCode *pErrorCode) {
if (U_FAILURE(*pErrorCode)) {
return 0;
}
- if (ldn == NULL || locale == NULL || (result == NULL && maxResultSize > 0) || maxResultSize < 0) {
+ if (ldn == nullptr || locale == nullptr || (result == nullptr && maxResultSize > 0) || maxResultSize < 0) {
*pErrorCode = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -1017,13 +1017,13 @@ uldn_localeDisplayName(const ULocaleDisplayNames *ldn,
U_CAPI int32_t U_EXPORT2
uldn_languageDisplayName(const ULocaleDisplayNames *ldn,
const char *lang,
- UChar *result,
+ char16_t *result,
int32_t maxResultSize,
UErrorCode *pErrorCode) {
if (U_FAILURE(*pErrorCode)) {
return 0;
}
- if (ldn == NULL || lang == NULL || (result == NULL && maxResultSize > 0) || maxResultSize < 0) {
+ if (ldn == nullptr || lang == nullptr || (result == nullptr && maxResultSize > 0) || maxResultSize < 0) {
*pErrorCode = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -1035,13 +1035,13 @@ uldn_languageDisplayName(const ULocaleDisplayNames *ldn,
U_CAPI int32_t U_EXPORT2
uldn_scriptDisplayName(const ULocaleDisplayNames *ldn,
const char *script,
- UChar *result,
+ char16_t *result,
int32_t maxResultSize,
UErrorCode *pErrorCode) {
if (U_FAILURE(*pErrorCode)) {
return 0;
}
- if (ldn == NULL || script == NULL || (result == NULL && maxResultSize > 0) || maxResultSize < 0) {
+ if (ldn == nullptr || script == nullptr || (result == nullptr && maxResultSize > 0) || maxResultSize < 0) {
*pErrorCode = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -1053,7 +1053,7 @@ uldn_scriptDisplayName(const ULocaleDisplayNames *ldn,
U_CAPI int32_t U_EXPORT2
uldn_scriptCodeDisplayName(const ULocaleDisplayNames *ldn,
UScriptCode scriptCode,
- UChar *result,
+ char16_t *result,
int32_t maxResultSize,
UErrorCode *pErrorCode) {
return uldn_scriptDisplayName(ldn, uscript_getName(scriptCode), result, maxResultSize, pErrorCode);
@@ -1062,13 +1062,13 @@ uldn_scriptCodeDisplayName(const ULocaleDisplayNames *ldn,
U_CAPI int32_t U_EXPORT2
uldn_regionDisplayName(const ULocaleDisplayNames *ldn,
const char *region,
- UChar *result,
+ char16_t *result,
int32_t maxResultSize,
UErrorCode *pErrorCode) {
if (U_FAILURE(*pErrorCode)) {
return 0;
}
- if (ldn == NULL || region == NULL || (result == NULL && maxResultSize > 0) || maxResultSize < 0) {
+ if (ldn == nullptr || region == nullptr || (result == nullptr && maxResultSize > 0) || maxResultSize < 0) {
*pErrorCode = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -1080,13 +1080,13 @@ uldn_regionDisplayName(const ULocaleDisplayNames *ldn,
U_CAPI int32_t U_EXPORT2
uldn_variantDisplayName(const ULocaleDisplayNames *ldn,
const char *variant,
- UChar *result,
+ char16_t *result,
int32_t maxResultSize,
UErrorCode *pErrorCode) {
if (U_FAILURE(*pErrorCode)) {
return 0;
}
- if (ldn == NULL || variant == NULL || (result == NULL && maxResultSize > 0) || maxResultSize < 0) {
+ if (ldn == nullptr || variant == nullptr || (result == nullptr && maxResultSize > 0) || maxResultSize < 0) {
*pErrorCode = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -1098,13 +1098,13 @@ uldn_variantDisplayName(const ULocaleDisplayNames *ldn,
U_CAPI int32_t U_EXPORT2
uldn_keyDisplayName(const ULocaleDisplayNames *ldn,
const char *key,
- UChar *result,
+ char16_t *result,
int32_t maxResultSize,
UErrorCode *pErrorCode) {
if (U_FAILURE(*pErrorCode)) {
return 0;
}
- if (ldn == NULL || key == NULL || (result == NULL && maxResultSize > 0) || maxResultSize < 0) {
+ if (ldn == nullptr || key == nullptr || (result == nullptr && maxResultSize > 0) || maxResultSize < 0) {
*pErrorCode = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -1117,13 +1117,13 @@ U_CAPI int32_t U_EXPORT2
uldn_keyValueDisplayName(const ULocaleDisplayNames *ldn,
const char *key,
const char *value,
- UChar *result,
+ char16_t *result,
int32_t maxResultSize,
UErrorCode *pErrorCode) {
if (U_FAILURE(*pErrorCode)) {
return 0;
}
- if (ldn == NULL || key == NULL || value == NULL || (result == NULL && maxResultSize > 0)
+ if (ldn == nullptr || key == nullptr || value == nullptr || (result == nullptr && maxResultSize > 0)
|| maxResultSize < 0) {
*pErrorCode = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
diff --git a/Build/source/libs/icu/icu-src/source/common/locid.cpp b/Build/source/libs/icu/icu-src/source/common/locid.cpp
index 5cd083866c7..64ff63f3611 100644
--- a/Build/source/libs/icu/icu-src/source/common/locid.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/locid.cpp
@@ -58,18 +58,18 @@
#include "uvector.h"
U_CDECL_BEGIN
-static UBool U_CALLCONV locale_cleanup(void);
+static UBool U_CALLCONV locale_cleanup();
U_CDECL_END
U_NAMESPACE_BEGIN
-static Locale *gLocaleCache = NULL;
+static Locale *gLocaleCache = nullptr;
static UInitOnce gLocaleCacheInitOnce {};
// gDefaultLocaleMutex protects all access to gDefaultLocalesHashT and gDefaultLocale.
static UMutex gDefaultLocaleMutex;
-static UHashtable *gDefaultLocalesHashT = NULL;
-static Locale *gDefaultLocale = NULL;
+static UHashtable *gDefaultLocalesHashT = nullptr;
+static Locale *gDefaultLocale = nullptr;
/**
* \def ULOC_STRING_LIMIT
@@ -115,19 +115,19 @@ deleteLocale(void *obj) {
delete (icu::Locale *) obj;
}
-static UBool U_CALLCONV locale_cleanup(void)
+static UBool U_CALLCONV locale_cleanup()
{
U_NAMESPACE_USE
delete [] gLocaleCache;
- gLocaleCache = NULL;
+ gLocaleCache = nullptr;
gLocaleCacheInitOnce.reset();
if (gDefaultLocalesHashT) {
uhash_close(gDefaultLocalesHashT); // Automatically deletes all elements, using deleter func.
- gDefaultLocalesHashT = NULL;
+ gDefaultLocalesHashT = nullptr;
}
- gDefaultLocale = NULL;
+ gDefaultLocale = nullptr;
return true;
}
@@ -135,9 +135,9 @@ static UBool U_CALLCONV locale_cleanup(void)
static void U_CALLCONV locale_init(UErrorCode &status) {
U_NAMESPACE_USE
- U_ASSERT(gLocaleCache == NULL);
+ U_ASSERT(gLocaleCache == nullptr);
gLocaleCache = new Locale[(int)eMAX_LOCALES];
- if (gLocaleCache == NULL) {
+ if (gLocaleCache == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -173,11 +173,11 @@ Locale *locale_set_default_internal(const char *id, UErrorCode& status) {
UBool canonicalize = false;
- // If given a NULL string for the locale id, grab the default
+ // If given a nullptr string for the locale id, grab the default
// name from the system.
// (Different from most other locale APIs, where a null name means use
// the current ICU default locale.)
- if (id == NULL) {
+ if (id == nullptr) {
id = uprv_getDefaultLocaleID(); // This function not thread safe? TODO: verify.
canonicalize = true; // always canonicalize host ID
}
@@ -196,8 +196,8 @@ Locale *locale_set_default_internal(const char *id, UErrorCode& status) {
return gDefaultLocale;
}
- if (gDefaultLocalesHashT == NULL) {
- gDefaultLocalesHashT = uhash_open(uhash_hashChars, uhash_compareChars, NULL, &status);
+ if (gDefaultLocalesHashT == nullptr) {
+ gDefaultLocalesHashT = uhash_open(uhash_hashChars, uhash_compareChars, nullptr, &status);
if (U_FAILURE(status)) {
return gDefaultLocale;
}
@@ -206,9 +206,9 @@ Locale *locale_set_default_internal(const char *id, UErrorCode& status) {
}
Locale *newDefault = (Locale *)uhash_get(gDefaultLocalesHashT, localeNameBuf.data());
- if (newDefault == NULL) {
+ if (newDefault == nullptr) {
newDefault = new Locale(Locale::eBOGUS);
- if (newDefault == NULL) {
+ if (newDefault == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return gDefaultLocale;
}
@@ -235,7 +235,7 @@ locale_set_default(const char *id)
/* end */
U_CFUNC const char *
-locale_get_default(void)
+locale_get_default()
{
U_NAMESPACE_USE
return Locale::getDefault().getName();
@@ -257,19 +257,19 @@ Locale::~Locale()
if ((baseName != fullName) && (baseName != fullNameBuffer)) {
uprv_free(baseName);
}
- baseName = NULL;
+ baseName = nullptr;
/*if fullName is on the heap, we free it*/
if (fullName != fullNameBuffer)
{
uprv_free(fullName);
- fullName = NULL;
+ fullName = nullptr;
}
}
Locale::Locale()
- : UObject(), fullName(fullNameBuffer), baseName(NULL)
+ : UObject(), fullName(fullNameBuffer), baseName(nullptr)
{
- init(NULL, false);
+ init(nullptr, false);
}
/*
@@ -278,7 +278,7 @@ Locale::Locale()
* the default locale.)
*/
Locale::Locale(Locale::ELocaleType)
- : UObject(), fullName(fullNameBuffer), baseName(NULL)
+ : UObject(), fullName(fullNameBuffer), baseName(nullptr)
{
setToBogus();
}
@@ -288,11 +288,11 @@ Locale::Locale( const char * newLanguage,
const char * newCountry,
const char * newVariant,
const char * newKeywords)
- : UObject(), fullName(fullNameBuffer), baseName(NULL)
+ : UObject(), fullName(fullNameBuffer), baseName(nullptr)
{
- if( (newLanguage==NULL) && (newCountry == NULL) && (newVariant == NULL) )
+ if( (newLanguage==nullptr) && (newCountry == nullptr) && (newVariant == nullptr) )
{
- init(NULL, false); /* shortcut */
+ init(nullptr, false); /* shortcut */
}
else
{
@@ -305,7 +305,7 @@ Locale::Locale( const char * newLanguage,
// Check the sizes of the input strings.
// Language
- if ( newLanguage != NULL )
+ if ( newLanguage != nullptr )
{
lsize = (int32_t)uprv_strlen(newLanguage);
if ( lsize < 0 || lsize > ULOC_STRING_LIMIT ) { // int32 wrap
@@ -317,7 +317,7 @@ Locale::Locale( const char * newLanguage,
CharString togo(newLanguage, lsize, status); // start with newLanguage
// _Country
- if ( newCountry != NULL )
+ if ( newCountry != nullptr )
{
csize = (int32_t)uprv_strlen(newCountry);
if ( csize < 0 || csize > ULOC_STRING_LIMIT ) { // int32 wrap
@@ -327,7 +327,7 @@ Locale::Locale( const char * newLanguage,
}
// _Variant
- if ( newVariant != NULL )
+ if ( newVariant != nullptr )
{
// remove leading _'s
while(newVariant[0] == SEP_CHAR)
@@ -347,7 +347,7 @@ Locale::Locale( const char * newLanguage,
}
}
- if ( newKeywords != NULL)
+ if ( newKeywords != nullptr)
{
ksize = (int32_t)uprv_strlen(newKeywords);
if ( ksize < 0 || ksize > ULOC_STRING_LIMIT ) {
@@ -402,12 +402,12 @@ Locale::Locale( const char * newLanguage,
}
Locale::Locale(const Locale &other)
- : UObject(other), fullName(fullNameBuffer), baseName(NULL)
+ : UObject(other), fullName(fullNameBuffer), baseName(nullptr)
{
*this = other;
}
-Locale::Locale(Locale&& other) U_NOEXCEPT
+Locale::Locale(Locale&& other) noexcept
: UObject(other), fullName(fullNameBuffer), baseName(fullName) {
*this = std::move(other);
}
@@ -445,7 +445,7 @@ Locale& Locale::operator=(const Locale& other) {
return *this;
}
-Locale& Locale::operator=(Locale&& other) U_NOEXCEPT {
+Locale& Locale::operator=(Locale&& other) noexcept {
if ((baseName != fullName) && (baseName != fullNameBuffer)) uprv_free(baseName);
if (fullName != fullNameBuffer) uprv_free(fullName);
@@ -563,7 +563,7 @@ private:
LocalMemory<int32_t>& replacementIndexes,
int32_t &length,
void (*checkType)(const char* type),
- void (*checkReplacement)(const UnicodeString& replacement),
+ void (*checkReplacement)(const UChar* replacement),
UErrorCode &status);
// Read the languageAlias data from alias to
@@ -700,7 +700,7 @@ AliasDataBuilder::readAlias(
LocalMemory<int32_t>& replacementIndexes,
int32_t &length,
void (*checkType)(const char* type),
- void (*checkReplacement)(const UnicodeString& replacement),
+ void (*checkReplacement)(const UChar* replacement),
UErrorCode &status) {
if (U_FAILURE(status)) {
return;
@@ -720,8 +720,8 @@ AliasDataBuilder::readAlias(
LocalUResourceBundlePointer res(
ures_getNextResource(alias, nullptr, &status));
const char* aliasFrom = ures_getKey(res.getAlias());
- UnicodeString aliasTo =
- ures_getUnicodeStringByKey(res.getAlias(), "replacement", &status);
+ const UChar* aliasTo =
+ ures_getStringByKey(res.getAlias(), "replacement", nullptr, &status);
if (U_FAILURE(status)) return;
checkType(aliasFrom);
@@ -766,7 +766,7 @@ AliasDataBuilder::readLanguageAlias(
#else
[](const char*) {},
#endif
- [](const UnicodeString&) {}, status);
+ [](const UChar*) {}, status);
}
/**
@@ -790,12 +790,12 @@ AliasDataBuilder::readScriptAlias(
[](const char* type) {
U_ASSERT(uprv_strlen(type) == 4);
},
- [](const UnicodeString& replacement) {
- U_ASSERT(replacement.length() == 4);
+ [](const UChar* replacement) {
+ U_ASSERT(u_strlen(replacement) == 4);
},
#else
[](const char*) {},
- [](const UnicodeString&) { },
+ [](const UChar*) { },
#endif
status);
}
@@ -824,7 +824,7 @@ AliasDataBuilder::readTerritoryAlias(
#else
[](const char*) {},
#endif
- [](const UnicodeString&) { },
+ [](const UChar*) { },
status);
}
@@ -851,15 +851,16 @@ AliasDataBuilder::readVariantAlias(
U_ASSERT(uprv_strlen(type) != 4 ||
(type[0] >= '0' && type[0] <= '9'));
},
- [](const UnicodeString& replacement) {
- U_ASSERT(replacement.length() >= 4 && replacement.length() <= 8);
- U_ASSERT(replacement.length() != 4 ||
- (replacement.charAt(0) >= u'0' &&
- replacement.charAt(0) <= u'9'));
+ [](const UChar* replacement) {
+ int32_t len = u_strlen(replacement);
+ U_ASSERT(len >= 4 && len <= 8);
+ U_ASSERT(len != 4 ||
+ (*replacement >= u'0' &&
+ *replacement <= u'9'));
},
#else
[](const char*) {},
- [](const UnicodeString&) { },
+ [](const UChar*) { },
#endif
status);
}
@@ -888,7 +889,7 @@ AliasDataBuilder::readSubdivisionAlias(
#else
[](const char*) {},
#endif
- [](const UnicodeString&) { },
+ [](const UChar*) { },
status);
}
@@ -1066,7 +1067,13 @@ class AliasReplacer {
public:
AliasReplacer(UErrorCode status) :
language(nullptr), script(nullptr), region(nullptr),
- extensions(nullptr), variants(status),
+ extensions(nullptr),
+ // store value in variants only once
+ variants(nullptr,
+ ([](UElement e1, UElement e2) -> UBool {
+ return 0==uprv_strcmp((const char*)e1.pointer,
+ (const char*)e2.pointer);}),
+ status),
data(nullptr) {
}
~AliasReplacer() {
@@ -1513,7 +1520,7 @@ AliasReplacer::replaceTransformedExtensions(
CharString& transformedExtensions, CharString& output, UErrorCode& status)
{
// The content of the transformedExtensions will be modified in this
- // function to NULL-terminating (tkey-tvalue) pairs.
+ // function to NUL-terminating (tkey-tvalue) pairs.
if (U_FAILURE(status)) {
return false;
}
@@ -1548,7 +1555,7 @@ AliasReplacer::replaceTransformedExtensions(
}
const char* nextTKey = ultag_getTKeyStart(tvalue);
if (nextTKey != nullptr) {
- *((char*)(nextTKey-1)) = '\0'; // NULL terminate tvalue
+ *((char*)(nextTKey-1)) = '\0'; // NUL terminate tvalue
}
tfields.insertElementAt((void*)tkey, tfields.size(), status);
if (U_FAILURE(status)) {
@@ -1570,7 +1577,7 @@ AliasReplacer::replaceTransformedExtensions(
return false;
}
// Split the "tkey-tvalue" pair string so that we can canonicalize the tvalue.
- *((char*)tvalue++) = '\0'; // NULL terminate tkey
+ *((char*)tvalue++) = '\0'; // NUL terminate tkey
output.append(tfield, status).append('-', status);
const char* bcpTValue = ulocimp_toBcpType(tfield, tvalue, nullptr, nullptr);
output.append((bcpTValue == nullptr) ? tvalue : bcpTValue, status);
@@ -1652,10 +1659,16 @@ AliasReplacer::replace(const Locale& locale, CharString& out, UErrorCode& status
while ((end = uprv_strchr(start, SEP_CHAR)) != nullptr &&
U_SUCCESS(status)) {
*end = NULL_CHAR; // null terminate inside variantsBuff
- variants.addElement(start, status);
+ // do not add "" or duplicate data to variants
+ if (*start && !variants.contains(start)) {
+ variants.addElement(start, status);
+ }
start = end + 1;
}
- variants.addElement(start, status);
+ // do not add "" or duplicate data to variants
+ if (*start && !variants.contains(start)) {
+ variants.addElement(start, status);
+ }
}
if (U_FAILURE(status)) { return false; }
@@ -1822,7 +1835,7 @@ Locale& Locale::init(const char* localeID, UBool canonicalize)
if ((baseName != fullName) && (baseName != fullNameBuffer)) {
uprv_free(baseName);
}
- baseName = NULL;
+ baseName = nullptr;
if(fullName != fullNameBuffer) {
uprv_free(fullName);
fullName = fullNameBuffer;
@@ -1840,7 +1853,7 @@ Locale& Locale::init(const char* localeID, UBool canonicalize)
int32_t length;
UErrorCode err;
- if(localeID == NULL) {
+ if(localeID == nullptr) {
// not an error, just set the default locale
return *this = getDefault();
}
@@ -1889,8 +1902,8 @@ Locale& Locale::init(const char* localeID, UBool canonicalize)
// variant may contain @foo or .foo POSIX cruft; remove it
separator = uprv_strchr(field[fieldIdx-1], '@');
char* sep2 = uprv_strchr(field[fieldIdx-1], '.');
- if (separator!=NULL || sep2!=NULL) {
- if (separator==NULL || (sep2!=NULL && separator > sep2)) {
+ if (separator!=nullptr || sep2!=nullptr) {
+ if (separator==nullptr || (sep2!=nullptr && separator > sep2)) {
separator = sep2;
}
fieldLen[fieldIdx-1] = (int32_t)(separator - field[fieldIdx-1]);
@@ -1974,14 +1987,14 @@ Locale::initBaseName(UErrorCode &status) {
if (U_FAILURE(status)) {
return;
}
- U_ASSERT(baseName==NULL || baseName==fullName);
+ U_ASSERT(baseName==nullptr || baseName==fullName);
const char *atPtr = uprv_strchr(fullName, '@');
const char *eqPtr = uprv_strchr(fullName, '=');
if (atPtr && eqPtr && atPtr < eqPtr) {
// Key words exist.
int32_t baseNameLength = (int32_t)(atPtr - fullName);
baseName = (char *)uprv_malloc(baseNameLength + 1);
- if (baseName == NULL) {
+ if (baseName == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -2012,7 +2025,7 @@ Locale::setToBogus() {
if((baseName != fullName) && (baseName != fullNameBuffer)) {
uprv_free(baseName);
}
- baseName = NULL;
+ baseName = nullptr;
if(fullName != fullNameBuffer) {
uprv_free(fullName);
fullName = fullNameBuffer;
@@ -2030,12 +2043,12 @@ Locale::getDefault()
{
{
Mutex lock(&gDefaultLocaleMutex);
- if (gDefaultLocale != NULL) {
+ if (gDefaultLocale != nullptr) {
return *gDefaultLocale;
}
}
UErrorCode status = U_ZERO_ERROR;
- return *locale_set_default_internal(NULL, status);
+ return *locale_set_default_internal(nullptr, status);
}
@@ -2079,6 +2092,10 @@ Locale::addLikelySubtags(UErrorCode& status) {
void
Locale::minimizeSubtags(UErrorCode& status) {
+ Locale::minimizeSubtags(false, status);
+}
+void
+Locale::minimizeSubtags(bool favorScript, UErrorCode& status) {
if (U_FAILURE(status)) {
return;
}
@@ -2086,7 +2103,7 @@ Locale::minimizeSubtags(UErrorCode& status) {
CharString minimizedLocaleID;
{
CharStringByteSink sink(&minimizedLocaleID);
- ulocimp_minimizeSubtags(fullName, sink, &status);
+ ulocimp_minimizeSubtags(fullName, sink, favorScript, &status);
}
if (U_FAILURE(status)) {
@@ -2244,134 +2261,134 @@ void Locale::setFromPOSIXID(const char *posixID)
}
const Locale & U_EXPORT2
-Locale::getRoot(void)
+Locale::getRoot()
{
return getLocale(eROOT);
}
const Locale & U_EXPORT2
-Locale::getEnglish(void)
+Locale::getEnglish()
{
return getLocale(eENGLISH);
}
const Locale & U_EXPORT2
-Locale::getFrench(void)
+Locale::getFrench()
{
return getLocale(eFRENCH);
}
const Locale & U_EXPORT2
-Locale::getGerman(void)
+Locale::getGerman()
{
return getLocale(eGERMAN);
}
const Locale & U_EXPORT2
-Locale::getItalian(void)
+Locale::getItalian()
{
return getLocale(eITALIAN);
}
const Locale & U_EXPORT2
-Locale::getJapanese(void)
+Locale::getJapanese()
{
return getLocale(eJAPANESE);
}
const Locale & U_EXPORT2
-Locale::getKorean(void)
+Locale::getKorean()
{
return getLocale(eKOREAN);
}
const Locale & U_EXPORT2
-Locale::getChinese(void)
+Locale::getChinese()
{
return getLocale(eCHINESE);
}
const Locale & U_EXPORT2
-Locale::getSimplifiedChinese(void)
+Locale::getSimplifiedChinese()
{
return getLocale(eCHINA);
}
const Locale & U_EXPORT2
-Locale::getTraditionalChinese(void)
+Locale::getTraditionalChinese()
{
return getLocale(eTAIWAN);
}
const Locale & U_EXPORT2
-Locale::getFrance(void)
+Locale::getFrance()
{
return getLocale(eFRANCE);
}
const Locale & U_EXPORT2
-Locale::getGermany(void)
+Locale::getGermany()
{
return getLocale(eGERMANY);
}
const Locale & U_EXPORT2
-Locale::getItaly(void)
+Locale::getItaly()
{
return getLocale(eITALY);
}
const Locale & U_EXPORT2
-Locale::getJapan(void)
+Locale::getJapan()
{
return getLocale(eJAPAN);
}
const Locale & U_EXPORT2
-Locale::getKorea(void)
+Locale::getKorea()
{
return getLocale(eKOREA);
}
const Locale & U_EXPORT2
-Locale::getChina(void)
+Locale::getChina()
{
return getLocale(eCHINA);
}
const Locale & U_EXPORT2
-Locale::getPRC(void)
+Locale::getPRC()
{
return getLocale(eCHINA);
}
const Locale & U_EXPORT2
-Locale::getTaiwan(void)
+Locale::getTaiwan()
{
return getLocale(eTAIWAN);
}
const Locale & U_EXPORT2
-Locale::getUK(void)
+Locale::getUK()
{
return getLocale(eUK);
}
const Locale & U_EXPORT2
-Locale::getUS(void)
+Locale::getUS()
{
return getLocale(eUS);
}
const Locale & U_EXPORT2
-Locale::getCanada(void)
+Locale::getCanada()
{
return getLocale(eCANADA);
}
const Locale & U_EXPORT2
-Locale::getCanadaFrench(void)
+Locale::getCanadaFrench()
{
return getLocale(eCANADA_FRENCH);
}
@@ -2381,12 +2398,12 @@ Locale::getLocale(int locid)
{
Locale *localeCache = getLocaleCache();
U_ASSERT((locid < eMAX_LOCALES)&&(locid>=0));
- if (localeCache == NULL) {
+ if (localeCache == nullptr) {
// Failure allocating the locale cache.
- // The best we can do is return a NULL reference.
+ // The best we can do is return a nullptr reference.
locid = 0;
}
- return localeCache[locid]; /*operating on NULL*/
+ return localeCache[locid]; /*operating on nullptr*/
}
/*
@@ -2394,7 +2411,7 @@ This function is defined this way in order to get around static
initialization and static destruction.
*/
Locale *
-Locale::getLocaleCache(void)
+Locale::getLocaleCache()
{
UErrorCode status = U_ZERO_ERROR;
umtx_initOnce(gLocaleCacheInitOnce, locale_init, status);
@@ -2402,25 +2419,26 @@ Locale::getLocaleCache(void)
}
class KeywordEnumeration : public StringEnumeration {
-private:
+protected:
char *keywords;
+private:
char *current;
int32_t length;
UnicodeString currUSKey;
static const char fgClassID;/* Warning this is used beyond the typical RTTI usage. */
public:
- static UClassID U_EXPORT2 getStaticClassID(void) { return (UClassID)&fgClassID; }
- virtual UClassID getDynamicClassID(void) const override { return getStaticClassID(); }
+ static UClassID U_EXPORT2 getStaticClassID() { return (UClassID)&fgClassID; }
+ virtual UClassID getDynamicClassID() const override { return getStaticClassID(); }
public:
KeywordEnumeration(const char *keys, int32_t keywordLen, int32_t currentIndex, UErrorCode &status)
: keywords((char *)&fgClassID), current((char *)&fgClassID), length(0) {
if(U_SUCCESS(status) && keywordLen != 0) {
- if(keys == NULL || keywordLen < 0) {
+ if(keys == nullptr || keywordLen < 0) {
status = U_ILLEGAL_ARGUMENT_ERROR;
} else {
keywords = (char *)uprv_malloc(keywordLen+1);
- if (keywords == NULL) {
+ if (keywords == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
}
else {
@@ -2458,14 +2476,14 @@ public:
result = current;
len = (int32_t)uprv_strlen(current);
current += len+1;
- if(resultLength != NULL) {
+ if(resultLength != nullptr) {
*resultLength = len;
}
} else {
- if(resultLength != NULL) {
+ if(resultLength != nullptr) {
*resultLength = 0;
}
- result = NULL;
+ result = nullptr;
}
return result;
}
@@ -2510,6 +2528,17 @@ public:
if (resultLength != nullptr) *resultLength = 0;
return nullptr;
}
+ virtual int32_t count(UErrorCode &/*status*/) const override {
+ char *kw = keywords;
+ int32_t result = 0;
+ while(*kw) {
+ if (uloc_toUnicodeLocaleKey(kw) != nullptr) {
+ result++;
+ }
+ kw += uprv_strlen(kw)+1;
+ }
+ return result;
+ }
};
// Out-of-line virtual destructor to serve as the "key function".
@@ -2518,7 +2547,7 @@ UnicodeKeywordEnumeration::~UnicodeKeywordEnumeration() = default;
StringEnumeration *
Locale::createKeywords(UErrorCode &status) const
{
- StringEnumeration *result = NULL;
+ StringEnumeration *result = nullptr;
if (U_FAILURE(status)) {
return result;
@@ -2547,7 +2576,7 @@ Locale::createKeywords(UErrorCode &status) const
StringEnumeration *
Locale::createUnicodeKeywords(UErrorCode &status) const
{
- StringEnumeration *result = NULL;
+ StringEnumeration *result = nullptr;
if (U_FAILURE(status)) {
return result;
diff --git a/Build/source/libs/icu/icu-src/source/common/loclikely.cpp b/Build/source/libs/icu/icu-src/source/common/loclikely.cpp
index ec0dca28a45..eedfb8149e2 100644
--- a/Build/source/libs/icu/icu-src/source/common/loclikely.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/loclikely.cpp
@@ -31,83 +31,11 @@
#include "charstr.h"
#include "cmemory.h"
#include "cstring.h"
+#include "loclikelysubtags.h"
#include "ulocimp.h"
#include "ustr_imp.h"
/**
- * These are the canonical strings for unknown languages, scripts and regions.
- **/
-static const char* const unknownLanguage = "und";
-static const char* const unknownScript = "Zzzz";
-static const char* const unknownRegion = "ZZ";
-
-/**
- * This function looks for the localeID in the likelySubtags resource.
- *
- * @param localeID The tag to find.
- * @param buffer A buffer to hold the matching entry
- * @param bufferLength The length of the output buffer
- * @return A pointer to "buffer" if found, or a null pointer if not.
- */
-static const char* U_CALLCONV
-findLikelySubtags(const char* localeID,
- char* buffer,
- int32_t bufferLength,
- UErrorCode* err) {
- const char* result = NULL;
-
- if (!U_FAILURE(*err)) {
- int32_t resLen = 0;
- const UChar* s = NULL;
- UErrorCode tmpErr = U_ZERO_ERROR;
- icu::LocalUResourceBundlePointer subtags(ures_openDirect(NULL, "likelySubtags", &tmpErr));
- if (U_SUCCESS(tmpErr)) {
- icu::CharString und;
- if (localeID != NULL) {
- if (*localeID == '\0') {
- localeID = unknownLanguage;
- } else if (*localeID == '_') {
- und.append(unknownLanguage, *err);
- und.append(localeID, *err);
- if (U_FAILURE(*err)) {
- return NULL;
- }
- localeID = und.data();
- }
- }
- s = ures_getStringByKey(subtags.getAlias(), localeID, &resLen, &tmpErr);
-
- if (U_FAILURE(tmpErr)) {
- /*
- * If a resource is missing, it's not really an error, it's
- * just that we don't have any data for that particular locale ID.
- */
- if (tmpErr != U_MISSING_RESOURCE_ERROR) {
- *err = tmpErr;
- }
- }
- else if (resLen >= bufferLength) {
- /* The buffer should never overflow. */
- *err = U_INTERNAL_PROGRAM_ERROR;
- }
- else {
- u_UCharsToChars(s, buffer, resLen + 1);
- if (resLen >= 3 &&
- uprv_strnicmp(buffer, unknownLanguage, 3) == 0 &&
- (resLen == 3 || buffer[3] == '_')) {
- uprv_memmove(buffer, buffer + 3, resLen - 3 + 1);
- }
- result = buffer;
- }
- } else {
- *err = tmpErr;
- }
- }
-
- return result;
-}
-
-/**
* Append a tag to a buffer, adding the separator if necessary. The buffer
* must be large enough to contain the resulting tag plus any separator
* necessary. The tag must not be a zero-length string.
@@ -140,12 +68,12 @@ appendTag(
/**
* Create a tag string from the supplied parameters. The lang, script and region
- * parameters may be NULL pointers. If they are, their corresponding length parameters
+ * parameters may be nullptr pointers. If they are, their corresponding length parameters
* must be less than or equal to 0.
*
* 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
+ * parameter is not nullptr, it will be parsed for potential language, script and region tags
+ * to be used when constructing the new tag. If the alternateTags parameter is nullptr, or
* it contains no language tag, the default tag for the unknown language is used.
*
* If the length of the new string exceeds the capacity of the output buffer,
@@ -211,7 +139,7 @@ createTagStringWithAlternates(
&tagLength,
/*withSeparator=*/false);
}
- else if (alternateTags == NULL) {
+ else if (alternateTags == nullptr) {
/*
* Use the empty string for an unknown language, if
* we found no language.
@@ -258,7 +186,7 @@ createTagStringWithAlternates(
&tagLength,
/*withSeparator=*/true);
}
- else if (alternateTags != NULL) {
+ else if (alternateTags != nullptr) {
/*
* Parse the alternateTags string for the script.
*/
@@ -295,7 +223,7 @@ createTagStringWithAlternates(
regionAppended = true;
}
- else if (alternateTags != NULL) {
+ else if (alternateTags != nullptr) {
/*
* Parse the alternateTags string for the region.
*/
@@ -361,57 +289,6 @@ error:
}
/**
- * Create a tag string from the supplied parameters. The lang, script and region
- * parameters may be NULL pointers. If they are, their corresponding length parameters
- * must be less than or equal to 0. If the lang parameter is an empty string, the
- * default value for an unknown language is written to the output buffer.
- *
- * If the length of the new string exceeds the capacity of the output buffer,
- * the function copies as many bytes to the output buffer as it can, and returns
- * the error U_BUFFER_OVERFLOW_ERROR.
- *
- * If an illegal argument is provided, the function returns the error
- * U_ILLEGAL_ARGUMENT_ERROR.
- *
- * @param lang The language tag to use.
- * @param langLength The length of the language tag.
- * @param script The script tag to use.
- * @param scriptLength The length of the script tag.
- * @param region The region tag to use.
- * @param regionLength The length of the region tag.
- * @param trailing Any trailing data to append to the new tag.
- * @param trailingLength The length of the trailing data.
- * @param sink The output sink receiving the tag string.
- * @param err A pointer to a UErrorCode for error reporting.
- **/
-static void U_CALLCONV
-createTagString(
- const char* lang,
- int32_t langLength,
- const char* script,
- int32_t scriptLength,
- const char* region,
- int32_t regionLength,
- const char* trailing,
- int32_t trailingLength,
- icu::ByteSink& sink,
- UErrorCode* err)
-{
- createTagStringWithAlternates(
- lang,
- langLength,
- script,
- scriptLength,
- region,
- regionLength,
- trailing,
- trailingLength,
- NULL,
- sink,
- err);
-}
-
-/**
* Parse the language, script, and region subtags from a tag string, and copy the
* results into the corresponding output parameters. The buffers are null-terminated,
* unless overflow occurs.
@@ -454,13 +331,13 @@ parseTagString(
int32_t subtagLength = 0;
if(U_FAILURE(*err) ||
- localeID == NULL ||
- lang == NULL ||
- langLength == NULL ||
- script == NULL ||
- scriptLength == NULL ||
- region == NULL ||
- regionLength == NULL) {
+ localeID == nullptr ||
+ lang == nullptr ||
+ langLength == nullptr ||
+ script == nullptr ||
+ scriptLength == nullptr ||
+ region == nullptr ||
+ regionLength == nullptr) {
goto error;
}
@@ -494,13 +371,6 @@ parseTagString(
*scriptLength = subtagLength;
if (*scriptLength > 0) {
- if (uprv_strnicmp(script, unknownScript, *scriptLength) == 0) {
- /**
- * If the script part is the "unknown" script, then don't return it.
- **/
- *scriptLength = 0;
- }
-
/*
* Move past any separator.
*/
@@ -517,14 +387,7 @@ parseTagString(
*regionLength = subtagLength;
- if (*regionLength > 0) {
- if (uprv_strnicmp(region, unknownRegion, *regionLength) == 0) {
- /**
- * If the region part is the "unknown" region, then don't return it.
- **/
- *regionLength = 0;
- }
- } else if (*position != 0 && *position != '@') {
+ if (*regionLength <= 0 && *position != 0 && *position != '@') {
/* back up over consumed trailing separator */
--position;
}
@@ -546,264 +409,6 @@ error:
goto exit;
}
-static UBool U_CALLCONV
-createLikelySubtagsString(
- const char* lang,
- int32_t langLength,
- const char* script,
- int32_t scriptLength,
- const char* region,
- int32_t regionLength,
- const char* variants,
- int32_t variantsLength,
- icu::ByteSink& sink,
- UErrorCode* err) {
- /**
- * ULOC_FULLNAME_CAPACITY will provide enough capacity
- * that we can build a string that contains the language,
- * script and region code without worrying about overrunning
- * the user-supplied buffer.
- **/
- char likelySubtagsBuffer[ULOC_FULLNAME_CAPACITY];
-
- if(U_FAILURE(*err)) {
- goto error;
- }
-
- /**
- * Try the language with the script and region first.
- **/
- if (scriptLength > 0 && regionLength > 0) {
-
- const char* likelySubtags = NULL;
-
- icu::CharString tagBuffer;
- {
- icu::CharStringByteSink sink(&tagBuffer);
- createTagString(
- lang,
- langLength,
- script,
- scriptLength,
- region,
- regionLength,
- NULL,
- 0,
- sink,
- err);
- }
- if(U_FAILURE(*err)) {
- goto error;
- }
-
- likelySubtags =
- findLikelySubtags(
- tagBuffer.data(),
- likelySubtagsBuffer,
- sizeof(likelySubtagsBuffer),
- err);
- if(U_FAILURE(*err)) {
- goto error;
- }
-
- if (likelySubtags != NULL) {
- /* Always use the language tag from the
- maximal string, since it may be more
- specific than the one provided. */
- createTagStringWithAlternates(
- NULL,
- 0,
- NULL,
- 0,
- NULL,
- 0,
- variants,
- variantsLength,
- likelySubtags,
- sink,
- err);
- return true;
- }
- }
-
- /**
- * Try the language with just the script.
- **/
- if (scriptLength > 0) {
-
- const char* likelySubtags = NULL;
-
- icu::CharString tagBuffer;
- {
- icu::CharStringByteSink sink(&tagBuffer);
- createTagString(
- lang,
- langLength,
- script,
- scriptLength,
- NULL,
- 0,
- NULL,
- 0,
- sink,
- err);
- }
- if(U_FAILURE(*err)) {
- goto error;
- }
-
- likelySubtags =
- findLikelySubtags(
- tagBuffer.data(),
- likelySubtagsBuffer,
- sizeof(likelySubtagsBuffer),
- err);
- if(U_FAILURE(*err)) {
- goto error;
- }
-
- if (likelySubtags != NULL) {
- /* Always use the language tag from the
- maximal string, since it may be more
- specific than the one provided. */
- createTagStringWithAlternates(
- NULL,
- 0,
- NULL,
- 0,
- region,
- regionLength,
- variants,
- variantsLength,
- likelySubtags,
- sink,
- err);
- return true;
- }
- }
-
- /**
- * Try the language with just the region.
- **/
- if (regionLength > 0) {
-
- const char* likelySubtags = NULL;
-
- icu::CharString tagBuffer;
- {
- icu::CharStringByteSink sink(&tagBuffer);
- createTagString(
- lang,
- langLength,
- NULL,
- 0,
- region,
- regionLength,
- NULL,
- 0,
- sink,
- err);
- }
- if(U_FAILURE(*err)) {
- goto error;
- }
-
- likelySubtags =
- findLikelySubtags(
- tagBuffer.data(),
- likelySubtagsBuffer,
- sizeof(likelySubtagsBuffer),
- err);
- if(U_FAILURE(*err)) {
- goto error;
- }
-
- if (likelySubtags != NULL) {
- /* Always use the language tag from the
- maximal string, since it may be more
- specific than the one provided. */
- createTagStringWithAlternates(
- NULL,
- 0,
- script,
- scriptLength,
- NULL,
- 0,
- variants,
- variantsLength,
- likelySubtags,
- sink,
- err);
- return true;
- }
- }
-
- /**
- * Finally, try just the language.
- **/
- {
- const char* likelySubtags = NULL;
-
- icu::CharString tagBuffer;
- {
- icu::CharStringByteSink sink(&tagBuffer);
- createTagString(
- lang,
- langLength,
- NULL,
- 0,
- NULL,
- 0,
- NULL,
- 0,
- sink,
- err);
- }
- if(U_FAILURE(*err)) {
- goto error;
- }
-
- likelySubtags =
- findLikelySubtags(
- tagBuffer.data(),
- likelySubtagsBuffer,
- sizeof(likelySubtagsBuffer),
- err);
- if(U_FAILURE(*err)) {
- goto error;
- }
-
- if (likelySubtags != NULL) {
- /* Always use the language tag from the
- maximal string, since it may be more
- specific than the one provided. */
- createTagStringWithAlternates(
- NULL,
- 0,
- script,
- scriptLength,
- region,
- regionLength,
- variants,
- variantsLength,
- likelySubtags,
- sink,
- err);
- return true;
- }
- }
-
- return false;
-
-error:
-
- if (!U_FAILURE(*err)) {
- *err = U_ILLEGAL_ARGUMENT_ERROR;
- }
-
- return false;
-}
-
#define CHECK_TRAILING_VARIANT_SIZE(trailing, trailingLength) UPRV_BLOCK_MACRO_BEGIN { \
int32_t count = 0; \
int32_t i; \
@@ -836,12 +441,11 @@ _uloc_addLikelySubtags(const char* localeID,
const char* trailing = "";
int32_t trailingLength = 0;
int32_t trailingIndex = 0;
- UBool success = false;
if(U_FAILURE(*err)) {
goto error;
}
- if (localeID == NULL) {
+ if (localeID == nullptr) {
goto error;
}
@@ -862,6 +466,9 @@ _uloc_addLikelySubtags(const char* localeID,
goto error;
}
+ if (langLength > 3) {
+ goto error;
+ }
/* Find the length of the trailing portion. */
while (_isIDSeparator(localeID[trailingIndex])) {
@@ -871,30 +478,42 @@ _uloc_addLikelySubtags(const char* localeID,
trailingLength = (int32_t)uprv_strlen(trailing);
CHECK_TRAILING_VARIANT_SIZE(trailing, trailingLength);
-
- success =
- createLikelySubtagsString(
- lang,
- langLength,
- script,
- scriptLength,
- region,
- regionLength,
+ {
+ const icu::XLikelySubtags* likelySubtags = icu::XLikelySubtags::getSingleton(*err);
+ if(U_FAILURE(*err)) {
+ goto error;
+ }
+ // We need to keep l on the stack because lsr may point into internal
+ // memory of l.
+ icu::Locale l = icu::Locale::createFromName(localeID);
+ if (l.isBogus()) {
+ goto error;
+ }
+ icu::LSR lsr = likelySubtags->makeMaximizedLsrFrom(l, true, *err);
+ if(U_FAILURE(*err)) {
+ goto error;
+ }
+ const char* language = lsr.language;
+ if (uprv_strcmp(language, "und") == 0) {
+ language = "";
+ }
+ createTagStringWithAlternates(
+ language,
+ (int32_t)uprv_strlen(language),
+ lsr.script,
+ (int32_t)uprv_strlen(lsr.script),
+ lsr.region,
+ (int32_t)uprv_strlen(lsr.region),
trailing,
trailingLength,
+ nullptr,
sink,
err);
-
- if (!success) {
- const int32_t localIDLength = (int32_t)uprv_strlen(localeID);
-
- /*
- * If we get here, we need to return localeID.
- */
- sink.Append(localeID, localIDLength);
+ if(U_FAILURE(*err)) {
+ goto error;
+ }
}
-
- return success;
+ return true;
error:
@@ -913,6 +532,7 @@ static UBool _ulocimp_addLikelySubtags(const char*, icu::ByteSink&, UErrorCode*)
static void
_uloc_minimizeSubtags(const char* localeID,
icu::ByteSink& sink,
+ bool favorScript,
UErrorCode* err) {
icu::CharString maximizedTagBuffer;
@@ -925,12 +545,11 @@ _uloc_minimizeSubtags(const char* localeID,
const char* trailing = "";
int32_t trailingLength = 0;
int32_t trailingIndex = 0;
- UBool successGetMax = false;
if(U_FAILURE(*err)) {
goto error;
}
- else if (localeID == NULL) {
+ else if (localeID == nullptr) {
goto error;
}
@@ -964,213 +583,38 @@ _uloc_minimizeSubtags(const char* localeID,
CHECK_TRAILING_VARIANT_SIZE(trailing, trailingLength);
{
- icu::CharString base;
- {
- icu::CharStringByteSink baseSink(&base);
- createTagString(
- lang,
- langLength,
- script,
- scriptLength,
- region,
- regionLength,
- NULL,
- 0,
- baseSink,
- err);
- }
-
- /**
- * First, we need to first get the maximization
- * from AddLikelySubtags.
- **/
- {
- icu::CharStringByteSink maxSink(&maximizedTagBuffer);
- successGetMax = _ulocimp_addLikelySubtags(base.data(), maxSink, err);
- }
- }
-
- if(U_FAILURE(*err)) {
- goto error;
- }
-
- if (!successGetMax) {
- /**
- * If we got here, return the locale ID parameter unchanged.
- **/
- const int32_t localeIDLength = (int32_t)uprv_strlen(localeID);
- sink.Append(localeID, localeIDLength);
- return;
- }
-
- // In the following, the lang, script, region are referring to those in
- // the maximizedTagBuffer, not the one in the localeID.
- langLength = sizeof(lang);
- scriptLength = sizeof(script);
- regionLength = sizeof(region);
- parseTagString(
- maximizedTagBuffer.data(),
- lang,
- &langLength,
- script,
- &scriptLength,
- region,
- &regionLength,
- err);
- if(U_FAILURE(*err)) {
- goto error;
- }
-
- /**
- * Start first with just the language.
- **/
- {
- icu::CharString tagBuffer;
- {
- icu::CharStringByteSink tagSink(&tagBuffer);
- createLikelySubtagsString(
- lang,
- langLength,
- NULL,
- 0,
- NULL,
- 0,
- NULL,
- 0,
- tagSink,
- err);
- }
-
+ const icu::XLikelySubtags* likelySubtags = icu::XLikelySubtags::getSingleton(*err);
if(U_FAILURE(*err)) {
goto error;
}
- else if (!tagBuffer.isEmpty() &&
- uprv_strnicmp(
- maximizedTagBuffer.data(),
- tagBuffer.data(),
- tagBuffer.length()) == 0) {
-
- createTagString(
- lang,
- langLength,
- NULL,
- 0,
- NULL,
- 0,
- trailing,
- trailingLength,
- sink,
- err);
- return;
- }
- }
-
- /**
- * Next, try the language and region.
- **/
- if (regionLength > 0) {
-
- icu::CharString tagBuffer;
- {
- icu::CharStringByteSink tagSink(&tagBuffer);
- createLikelySubtagsString(
- lang,
- langLength,
- NULL,
- 0,
- region,
- regionLength,
- NULL,
- 0,
- tagSink,
- err);
- }
-
+ icu::LSR lsr = likelySubtags->minimizeSubtags(
+ {lang, langLength},
+ {script, scriptLength},
+ {region, regionLength},
+ favorScript,
+ *err);
if(U_FAILURE(*err)) {
goto error;
}
- else if (!tagBuffer.isEmpty() &&
- uprv_strnicmp(
- maximizedTagBuffer.data(),
- tagBuffer.data(),
- tagBuffer.length()) == 0) {
-
- createTagString(
- lang,
- langLength,
- NULL,
- 0,
- region,
- regionLength,
- trailing,
- trailingLength,
- sink,
- err);
- return;
- }
- }
-
- /**
- * 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 (scriptLength > 0) {
- icu::CharString tagBuffer;
- {
- icu::CharStringByteSink tagSink(&tagBuffer);
- createLikelySubtagsString(
- lang,
- langLength,
- script,
- scriptLength,
- NULL,
- 0,
- NULL,
- 0,
- tagSink,
- err);
- }
-
+ const char* language = lsr.language;
+ if (uprv_strcmp(language, "und") == 0) {
+ language = "";
+ }
+ createTagStringWithAlternates(
+ language,
+ (int32_t)uprv_strlen(language),
+ lsr.script,
+ (int32_t)uprv_strlen(lsr.script),
+ lsr.region,
+ (int32_t)uprv_strlen(lsr.region),
+ trailing,
+ trailingLength,
+ nullptr,
+ sink,
+ err);
if(U_FAILURE(*err)) {
goto error;
}
- else if (!tagBuffer.isEmpty() &&
- uprv_strnicmp(
- maximizedTagBuffer.data(),
- tagBuffer.data(),
- tagBuffer.length()) == 0) {
-
- createTagString(
- lang,
- langLength,
- script,
- scriptLength,
- NULL,
- 0,
- trailing,
- trailingLength,
- sink,
- err);
- return;
- }
- }
-
- {
- /**
- * If we got here, return the max + trail.
- **/
- createTagString(
- lang,
- langLength,
- script,
- scriptLength,
- region,
- regionLength,
- trailing,
- trailingLength,
- sink,
- err);
return;
}
@@ -1181,31 +625,6 @@ error:
}
}
-static int32_t
-do_canonicalize(const char* localeID,
- char* buffer,
- int32_t bufferCapacity,
- UErrorCode* err)
-{
- int32_t canonicalizedSize = uloc_canonicalize(
- localeID,
- buffer,
- bufferCapacity,
- err);
-
- if (*err == U_STRING_NOT_TERMINATED_WARNING ||
- *err == U_BUFFER_OVERFLOW_ERROR) {
- return canonicalizedSize;
- }
- else if (U_FAILURE(*err)) {
-
- return -1;
- }
- else {
- return canonicalizedSize;
- }
-}
-
U_CAPI int32_t U_EXPORT2
uloc_addLikelySubtags(const char* localeID,
char* maximizedLocaleID,
@@ -1239,14 +658,13 @@ static UBool
_ulocimp_addLikelySubtags(const char* localeID,
icu::ByteSink& sink,
UErrorCode* status) {
- PreflightingLocaleIDBuffer localeBuffer;
- do {
- localeBuffer.requestedCapacity = do_canonicalize(localeID, localeBuffer.getBuffer(),
- localeBuffer.getCapacity(), status);
- } while (localeBuffer.needToTryAgain(status));
-
+ icu::CharString localeBuffer;
+ {
+ icu::CharStringByteSink localeSink(&localeBuffer);
+ ulocimp_canonicalize(localeID, localeSink, status);
+ }
if (U_SUCCESS(*status)) {
- return _uloc_addLikelySubtags(localeBuffer.getBuffer(), sink, status);
+ return _uloc_addLikelySubtags(localeBuffer.data(), sink, status);
} else {
return false;
}
@@ -1271,7 +689,7 @@ uloc_minimizeSubtags(const char* localeID,
icu::CheckedArrayByteSink sink(
minimizedLocaleID, minimizedLocaleIDCapacity);
- ulocimp_minimizeSubtags(localeID, sink, status);
+ ulocimp_minimizeSubtags(localeID, sink, false, status);
int32_t reslen = sink.NumberOfBytesAppended();
if (U_FAILURE(*status)) {
@@ -1291,14 +709,14 @@ uloc_minimizeSubtags(const char* localeID,
U_CAPI void U_EXPORT2
ulocimp_minimizeSubtags(const char* localeID,
icu::ByteSink& sink,
+ bool favorScript,
UErrorCode* status) {
- PreflightingLocaleIDBuffer localeBuffer;
- do {
- localeBuffer.requestedCapacity = do_canonicalize(localeID, localeBuffer.getBuffer(),
- localeBuffer.getCapacity(), status);
- } while (localeBuffer.needToTryAgain(status));
-
- _uloc_minimizeSubtags(localeBuffer.getBuffer(), sink, status);
+ icu::CharString localeBuffer;
+ {
+ icu::CharStringByteSink localeSink(&localeBuffer);
+ ulocimp_canonicalize(localeID, localeSink, status);
+ }
+ _uloc_minimizeSubtags(localeBuffer.data(), sink, favorScript, status);
}
// Pairs of (language subtag, + or -) for finding out fast if common languages
@@ -1324,7 +742,7 @@ uloc_isRightToLeft(const char *locale) {
}
if (langLength > 0) {
const char* langPtr = uprv_strstr(LANG_DIR_STRING, lang);
- if (langPtr != NULL) {
+ if (langPtr != nullptr) {
switch (langPtr[langLength]) {
case '-': return false;
case '+': return true;
@@ -1374,16 +792,26 @@ ulocimp_getRegionForSupplementalData(const char *localeID, UBool inferRegion,
UErrorCode rgStatus = U_ZERO_ERROR;
// First check for rg keyword value
- int32_t rgLen = uloc_getKeywordValue(localeID, "rg", rgBuf, ULOC_RG_BUFLEN, &rgStatus);
- if (U_FAILURE(rgStatus) || rgLen != 6) {
+ icu::CharString rg;
+ {
+ icu::CharStringByteSink sink(&rg);
+ ulocimp_getKeywordValue(localeID, "rg", sink, &rgStatus);
+ }
+ int32_t rgLen = rg.length();
+ if (U_FAILURE(rgStatus) || rgLen < 3 || rgLen > 7) {
rgLen = 0;
} else {
- // rgBuf guaranteed to be zero terminated here, with text len 6
- char *rgPtr = rgBuf;
- for (; *rgPtr!= 0; rgPtr++) {
- *rgPtr = uprv_toupper(*rgPtr);
+ // chop off the subdivision code (which will generally be "zzzz" anyway)
+ const char* const data = rg.data();
+ if (uprv_isASCIILetter(data[0])) {
+ rgLen = 2;
+ rgBuf[0] = uprv_toupper(data[0]);
+ rgBuf[1] = uprv_toupper(data[1]);
+ } else {
+ // assume three-digit region code
+ rgLen = 3;
+ uprv_memcpy(rgBuf, data, rgLen);
}
- rgLen = (uprv_strcmp(rgBuf+2, "ZZZZ") == 0)? 2: 0;
}
if (rgLen == 0) {
diff --git a/Build/source/libs/icu/icu-src/source/common/loclikelysubtags.cpp b/Build/source/libs/icu/icu-src/source/common/loclikelysubtags.cpp
index e913c66a35b..c2a7011b509 100644
--- a/Build/source/libs/icu/icu-src/source/common/loclikelysubtags.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/loclikelysubtags.cpp
@@ -11,6 +11,7 @@
#include "unicode/locid.h"
#include "unicode/uobject.h"
#include "unicode/ures.h"
+#include "unicode/uscript.h"
#include "charstr.h"
#include "cstring.h"
#include "loclikelysubtags.h"
@@ -23,6 +24,7 @@
#include "uniquecharstr.h"
#include "uresdata.h"
#include "uresimp.h"
+#include "uvector.h"
U_NAMESPACE_BEGIN
@@ -81,11 +83,18 @@ struct XLikelySubtagsData {
// Read all strings in the resource bundle and convert them to invariant char *.
LocalMemory<int32_t> languageIndexes, regionIndexes, lsrSubtagIndexes;
int32_t languagesLength = 0, regionsLength = 0, lsrSubtagsLength = 0;
+ ResourceArray m49Array;
+ if (likelyTable.findValue("m49", value)) {
+ m49Array = value.getArray(errorCode);
+ } else {
+ errorCode = U_MISSING_RESOURCE_ERROR;
+ return;
+ }
if (!readStrings(likelyTable, "languageAliases", value,
languageIndexes, languagesLength, errorCode) ||
!readStrings(likelyTable, "regionAliases", value,
regionIndexes, regionsLength, errorCode) ||
- !readStrings(likelyTable, "lsrs", value,
+ !readLSREncodedStrings(likelyTable, "lsrnum", value, m49Array,
lsrSubtagIndexes,lsrSubtagsLength, errorCode)) {
return;
}
@@ -136,7 +145,7 @@ struct XLikelySubtagsData {
if (!readStrings(matchTable, "partitions", value,
partitionIndexes, partitionsLength, errorCode) ||
- !readStrings(matchTable, "paradigms", value,
+ !readLSREncodedStrings(matchTable, "paradigmnum", value, m49Array,
paradigmSubtagIndexes, paradigmSubtagsLength, errorCode)) {
return;
}
@@ -233,10 +242,96 @@ private:
return false;
}
for (int i = 0; i < length; ++i) {
- stringArray.getValue(i, value); // returns true because i < length
- rawIndexes[i] = strings.add(value.getUnicodeString(errorCode), errorCode);
+ if (stringArray.getValue(i, value)) { // returns true because i < length
+ int32_t strLength = 0;
+ rawIndexes[i] = strings.add(value.getString(strLength, errorCode), errorCode);
+ if (U_FAILURE(errorCode)) { return false; }
+ }
+ }
+ }
+ return true;
+ }
+ UnicodeString toLanguage(int encoded) {
+ if (encoded == 0) {
+ return UNICODE_STRING_SIMPLE("");
+ }
+ if (encoded == 1) {
+ return UNICODE_STRING_SIMPLE("skip");
+ }
+ encoded &= 0x00ffffff;
+ encoded %= 27*27*27;
+ char lang[3];
+ lang[0] = 'a' + ((encoded % 27) - 1);
+ lang[1] = 'a' + (((encoded / 27 ) % 27) - 1);
+ if (encoded / (27 * 27) == 0) {
+ return UnicodeString(lang, 2, US_INV);
+ }
+ lang[2] = 'a' + ((encoded / (27 * 27)) - 1);
+ return UnicodeString(lang, 3, US_INV);
+ }
+ UnicodeString toScript(int encoded) {
+ if (encoded == 0) {
+ return UNICODE_STRING_SIMPLE("");
+ }
+ if (encoded == 1) {
+ return UNICODE_STRING_SIMPLE("script");
+ }
+ encoded = (encoded >> 24) & 0x000000ff;
+ const char* script = uscript_getShortName(static_cast<UScriptCode>(encoded));
+ if (script == nullptr) {
+ return UNICODE_STRING_SIMPLE("");
+ }
+ U_ASSERT(uprv_strlen(script) == 4);
+ return UnicodeString(script, 4, US_INV);
+ }
+ UnicodeString m49IndexToCode(const ResourceArray &m49Array, ResourceValue &value, int index, UErrorCode &errorCode) {
+ if (U_FAILURE(errorCode)) {
+ return UNICODE_STRING_SIMPLE("");
+ }
+ if (m49Array.getValue(index, value)) {
+ return value.getUnicodeString(errorCode);
+ }
+ // "m49" does not include the index.
+ errorCode = U_MISSING_RESOURCE_ERROR;
+ return UNICODE_STRING_SIMPLE("");
+ }
+
+ UnicodeString toRegion(const ResourceArray& m49Array, ResourceValue &value, int encoded, UErrorCode &errorCode) {
+ if (encoded == 0 || encoded == 1) {
+ return UNICODE_STRING_SIMPLE("");
+ }
+ encoded &= 0x00ffffff;
+ encoded /= 27 * 27 * 27;
+ encoded %= 27 * 27;
+ if (encoded < 27) {
+ // Selected M49 code index, find the code from "m49" resource.
+ return m49IndexToCode(m49Array, value, encoded, errorCode);
+ }
+ char region[2];
+ region[0] = 'A' + ((encoded % 27) - 1);
+ region[1] = 'A' + (((encoded / 27) % 27) - 1);
+ return UnicodeString(region, 2, US_INV);
+ }
+
+ bool readLSREncodedStrings(const ResourceTable &table, const char* key, ResourceValue &value, const ResourceArray& m49Array,
+ LocalMemory<int32_t> &indexes, int32_t &length, UErrorCode &errorCode) {
+ if (table.findValue(key, value)) {
+ const int32_t* vectors = value.getIntVector(length, errorCode);
+ if (U_FAILURE(errorCode)) { return false; }
+ if (length == 0) { return true; }
+ int32_t *rawIndexes = indexes.allocateInsteadAndCopy(length * 3);
+ if (rawIndexes == nullptr) {
+ errorCode = U_MEMORY_ALLOCATION_ERROR;
+ return false;
+ }
+ for (int i = 0; i < length; ++i) {
+ rawIndexes[i*3] = strings.addByValue(toLanguage(vectors[i]), errorCode);
+ rawIndexes[i*3+1] = strings.addByValue(toScript(vectors[i]), errorCode);
+ rawIndexes[i*3+2] = strings.addByValue(
+ toRegion(m49Array, value, vectors[i], errorCode), errorCode);
if (U_FAILURE(errorCode)) { return false; }
}
+ length *= 3;
}
return true;
}
@@ -245,15 +340,52 @@ private:
namespace {
XLikelySubtags *gLikelySubtags = nullptr;
+UVector *gMacroregions = nullptr;
UInitOnce gInitOnce {};
UBool U_CALLCONV cleanup() {
delete gLikelySubtags;
gLikelySubtags = nullptr;
+ delete gMacroregions;
+ gMacroregions = nullptr;
gInitOnce.reset();
return true;
}
+static const char16_t RANGE_MARKER = 0x7E; /* '~' */
+UVector* loadMacroregions(UErrorCode &status) {
+ LocalPointer<UVector> newMacroRegions(new UVector(uprv_deleteUObject, uhash_compareUnicodeString, status), status);
+
+ LocalUResourceBundlePointer supplementalData(ures_openDirect(nullptr,"supplementalData",&status));
+ LocalUResourceBundlePointer idValidity(ures_getByKey(supplementalData.getAlias(),"idValidity",nullptr,&status));
+ LocalUResourceBundlePointer regionList(ures_getByKey(idValidity.getAlias(),"region",nullptr,&status));
+ LocalUResourceBundlePointer regionMacro(ures_getByKey(regionList.getAlias(),"macroregion",nullptr,&status));
+
+ if (U_FAILURE(status)) {
+ return nullptr;
+ }
+
+ while (U_SUCCESS(status) && ures_hasNext(regionMacro.getAlias())) {
+ UnicodeString regionName = ures_getNextUnicodeString(regionMacro.getAlias(),nullptr,&status);
+ int32_t rangeMarkerLocation = regionName.indexOf(RANGE_MARKER);
+ char16_t buf[6];
+ regionName.extract(buf,6,status);
+ if ( rangeMarkerLocation > 0 ) {
+ char16_t endRange = regionName.charAt(rangeMarkerLocation+1);
+ buf[rangeMarkerLocation] = 0;
+ while ( buf[rangeMarkerLocation-1] <= endRange && U_SUCCESS(status)) {
+ LocalPointer<UnicodeString> newRegion(new UnicodeString(buf), status);
+ newMacroRegions->adoptElement(newRegion.orphan(),status);
+ buf[rangeMarkerLocation-1]++;
+ }
+ } else {
+ LocalPointer<UnicodeString> newRegion(new UnicodeString(regionName), status);
+ newMacroRegions->adoptElement(newRegion.orphan(),status);
+ }
+ }
+ return newMacroRegions.orphan();
+}
+
} // namespace
void U_CALLCONV XLikelySubtags::initLikelySubtags(UErrorCode &errorCode) {
@@ -263,10 +395,14 @@ void U_CALLCONV XLikelySubtags::initLikelySubtags(UErrorCode &errorCode) {
data.load(errorCode);
if (U_FAILURE(errorCode)) { return; }
gLikelySubtags = new XLikelySubtags(data);
- if (gLikelySubtags == nullptr) {
+ gMacroregions = loadMacroregions(errorCode);
+ if (U_FAILURE(errorCode) || gLikelySubtags == nullptr || gMacroregions == nullptr) {
+ delete gLikelySubtags;
+ delete gMacroregions;
errorCode = U_MEMORY_ALLOCATION_ERROR;
return;
}
+
ucln_common_registerCleanup(UCLN_COMMON_LIKELY_SUBTAGS, cleanup);
}
@@ -317,15 +453,32 @@ XLikelySubtags::~XLikelySubtags() {
delete[] lsrs;
}
-LSR XLikelySubtags::makeMaximizedLsrFrom(const Locale &locale, UErrorCode &errorCode) const {
+LSR XLikelySubtags::makeMaximizedLsrFrom(const Locale &locale,
+ bool returnInputIfUnmatch,
+ UErrorCode &errorCode) const {
+ if (locale.isBogus()) {
+ errorCode = U_ILLEGAL_ARGUMENT_ERROR;
+ return LSR("", "", "", LSR::EXPLICIT_LSR);
+ }
const char *name = locale.getName();
if (uprv_isAtSign(name[0]) && name[1] == 'x' && name[2] == '=') { // name.startsWith("@x=")
// Private use language tag x-subtag-subtag... which CLDR changes to
// und-x-subtag-subtag...
return LSR(name, "", "", LSR::EXPLICIT_LSR);
}
- return makeMaximizedLsr(locale.getLanguage(), locale.getScript(), locale.getCountry(),
- locale.getVariant(), errorCode);
+ LSR max = makeMaximizedLsr(locale.getLanguage(), locale.getScript(), locale.getCountry(),
+ locale.getVariant(), returnInputIfUnmatch, errorCode);
+
+ if (uprv_strlen(max.language) == 0 &&
+ uprv_strlen(max.script) == 0 &&
+ uprv_strlen(max.region) == 0) {
+ // No match. ICU API mandate us to
+ // If the provided ULocale instance is already in the maximal form, or
+ // there is no data available available for maximization, it will be
+ // returned.
+ return LSR(locale.getLanguage(), locale.getScript(), locale.getCountry(), LSR::EXPLICIT_LSR, errorCode);
+ }
+ return max;
}
namespace {
@@ -338,7 +491,9 @@ const char *getCanonical(const CharStringMap &aliases, const char *alias) {
} // namespace
LSR XLikelySubtags::makeMaximizedLsr(const char *language, const char *script, const char *region,
- const char *variant, UErrorCode &errorCode) const {
+ const char *variant,
+ bool returnInputIfUnmatch,
+ UErrorCode &errorCode) const {
// Handle pseudolocales like en-XA, ar-XB, fr-PSCRACK.
// They should match only themselves,
// not other locales with what looks like the same language and script subtags.
@@ -378,64 +533,91 @@ LSR XLikelySubtags::makeMaximizedLsr(const char *language, const char *script, c
language = getCanonical(languageAliases, language);
// (We have no script mappings.)
region = getCanonical(regionAliases, region);
- return maximize(language, script, region);
+ return maximize(language, script, region, returnInputIfUnmatch, errorCode);
}
-LSR XLikelySubtags::maximize(const char *language, const char *script, const char *region) const {
- if (uprv_strcmp(language, "und") == 0) {
+LSR XLikelySubtags::maximize(const char *language, const char *script, const char *region,
+ bool returnInputIfUnmatch,
+ UErrorCode &errorCode) const {
+ return maximize({language, (int32_t)uprv_strlen(language)},
+ {script, (int32_t)uprv_strlen(script)},
+ {region, (int32_t)uprv_strlen(region)},
+ returnInputIfUnmatch,
+ errorCode);
+}
+
+bool XLikelySubtags::isMacroregion(StringPiece& region, UErrorCode& errorCode) const {
+ // In Java, we use Region class. In C++, since Region is under i18n,
+ // we read the same data used by Region into gMacroregions avoid dependency
+ // from common to i18n/region.cpp
+ if (U_FAILURE(errorCode)) { return false; }
+ umtx_initOnce(gInitOnce, &XLikelySubtags::initLikelySubtags, errorCode);
+ if (U_FAILURE(errorCode)) { return false; }
+ UnicodeString str(UnicodeString::fromUTF8(region));
+ return gMacroregions->contains((void *)&str);
+}
+
+LSR XLikelySubtags::maximize(StringPiece language, StringPiece script, StringPiece region,
+ bool returnInputIfUnmatch,
+ UErrorCode &errorCode) const {
+ if (U_FAILURE(errorCode)) {
+ return LSR(language, script, region, LSR::EXPLICIT_LSR, errorCode);
+ }
+ if (language.compare("und") == 0) {
language = "";
}
- if (uprv_strcmp(script, "Zzzz") == 0) {
+ if (script.compare("Zzzz") == 0) {
script = "";
}
- if (uprv_strcmp(region, "ZZ") == 0) {
+ if (region.compare("ZZ") == 0) {
region = "";
}
- if (*script != 0 && *region != 0 && *language != 0) {
- return LSR(language, script, region, LSR::EXPLICIT_LSR); // already maximized
+ if (!script.empty() && !region.empty() && !language.empty()) {
+ return LSR(language, script, region, LSR::EXPLICIT_LSR, errorCode); // already maximized
}
+ bool retainLanguage = false;
+ bool retainScript = false;
+ bool retainRegion = false;
- uint32_t retainOldMask = 0;
BytesTrie iter(trie);
uint64_t state;
int32_t value;
// Small optimization: Array lookup for first language letter.
int32_t c0;
- if (0 <= (c0 = uprv_lowerOrdinal(language[0])) && c0 <= 25 &&
- language[1] != 0 && // language.length() >= 2
+ if (0 <= (c0 = uprv_lowerOrdinal(language.data()[0])) && c0 <= 25 &&
+ language.length() >= 2 &&
(state = trieFirstLetterStates[c0]) != 0) {
value = trieNext(iter.resetToState64(state), language, 1);
} else {
value = trieNext(iter, language, 0);
}
+ bool matchLanguage = (value >= 0);
+ bool matchScript = false;
if (value >= 0) {
- if (*language != 0) {
- retainOldMask |= 4;
- }
+ retainLanguage = !language.empty();
state = iter.getState64();
} else {
- retainOldMask |= 4;
+ retainLanguage = true;
iter.resetToState64(trieUndState); // "und" ("*")
state = 0;
}
+ if (value >= 0 && !script.empty()) {
+ matchScript = true;
+ }
if (value > 0) {
// Intermediate or final value from just language.
if (value == SKIP_SCRIPT) {
value = 0;
}
- if (*script != 0) {
- retainOldMask |= 2;
- }
+ retainScript = !script.empty();
} else {
value = trieNext(iter, script, 0);
if (value >= 0) {
- if (*script != 0) {
- retainOldMask |= 2;
- }
+ retainScript = !script.empty();
state = iter.getState64();
} else {
- retainOldMask |= 2;
+ retainScript = true;
if (state == 0) {
iter.resetToState64(trieUndZzzzState); // "und-Zzzz" ("**")
} else {
@@ -447,19 +629,19 @@ LSR XLikelySubtags::maximize(const char *language, const char *script, const cha
}
}
+ bool matchRegion = false;
if (value > 0) {
// Final value from just language or language+script.
- if (*region != 0) {
- retainOldMask |= 1;
- }
+ retainRegion = !region.empty();
} else {
value = trieNext(iter, region, 0);
if (value >= 0) {
- if (*region != 0) {
- retainOldMask |= 1;
+ if (!region.empty() && !isMacroregion(region, errorCode)) {
+ retainRegion = true;
+ matchRegion = true;
}
} else {
- retainOldMask |= 1;
+ retainRegion = true;
if (state == 0) {
value = defaultLsrIndex;
} else {
@@ -470,28 +652,33 @@ LSR XLikelySubtags::maximize(const char *language, const char *script, const cha
}
}
U_ASSERT(value < lsrsLength);
- const LSR &result = lsrs[value];
+ const LSR &matched = lsrs[value];
- if (*language == 0) {
- language = "und";
+ if (returnInputIfUnmatch &&
+ (!(matchLanguage || matchScript || (matchRegion && language.empty())))) {
+ return LSR("", "", "", LSR::EXPLICIT_LSR, errorCode); // no matching.
+ }
+ if (language.empty()) {
+ language = StringPiece("und");
}
- if (retainOldMask == 0) {
+ if (!(retainLanguage || retainScript || retainRegion)) {
// Quickly return a copy of the lookup-result LSR
// without new allocation of the subtags.
- return LSR(result.language, result.script, result.region, result.flags);
+ return LSR(matched.language, matched.script, matched.region, matched.flags);
}
- if ((retainOldMask & 4) == 0) {
- language = result.language;
+ if (!retainLanguage) {
+ language = matched.language;
}
- if ((retainOldMask & 2) == 0) {
- script = result.script;
+ if (!retainScript) {
+ script = matched.script;
}
- if ((retainOldMask & 1) == 0) {
- region = result.region;
+ if (!retainRegion) {
+ region = matched.region;
}
+ int32_t retainMask = (retainLanguage ? 4 : 0) + (retainScript ? 2 : 0) + (retainRegion ? 1 : 0);
// retainOldMask flags = LSR explicit-subtag flags
- return LSR(language, script, region, retainOldMask);
+ return LSR(language, script, region, retainMask, errorCode);
}
int32_t XLikelySubtags::compareLikely(const LSR &lsr, const LSR &other, int32_t likelyInfo) const {
@@ -627,57 +814,97 @@ int32_t XLikelySubtags::trieNext(BytesTrie &iter, const char *s, int32_t i) {
default: return -1;
}
}
+int32_t XLikelySubtags::trieNext(BytesTrie &iter, StringPiece s, int32_t i) {
+ UStringTrieResult result;
+ uint8_t c;
+ if (s.length() == i) {
+ result = iter.next(u'*');
+ } else {
+ c = s.data()[i];
+ for (;;) {
+ c = uprv_invCharToAscii(c);
+ // EBCDIC: If s[i] is not an invariant character,
+ // then c is now 0 and will simply not match anything, which is harmless.
+ if (i+1 != s.length()) {
+ if (!USTRINGTRIE_HAS_NEXT(iter.next(c))) {
+ return -1;
+ }
+ c = s.data()[++i];
+ } else {
+ // last character of this subtag
+ result = iter.next(c | 0x80);
+ break;
+ }
+ }
+ }
+ switch (result) {
+ case USTRINGTRIE_NO_MATCH: return -1;
+ case USTRINGTRIE_NO_VALUE: return 0;
+ case USTRINGTRIE_INTERMEDIATE_VALUE:
+ U_ASSERT(iter.getValue() == SKIP_SCRIPT);
+ return SKIP_SCRIPT;
+ case USTRINGTRIE_FINAL_VALUE: return iter.getValue();
+ default: return -1;
+ }
+}
-// TODO(ICU-20777): Switch Locale/uloc_ likely-subtags API from the old code
-// in loclikely.cpp to this new code, including activating this
-// minimizeSubtags() function. The LocaleMatcher does not minimize.
-#if 0
-LSR XLikelySubtags::minimizeSubtags(const char *languageIn, const char *scriptIn,
- const char *regionIn, ULocale.Minimize fieldToFavor,
+LSR XLikelySubtags::minimizeSubtags(StringPiece language, StringPiece script,
+ StringPiece region,
+ bool favorScript,
UErrorCode &errorCode) const {
- LSR result = maximize(languageIn, scriptIn, regionIn);
-
- // We could try just a series of checks, like:
- // LSR result2 = addLikelySubtags(languageIn, "", "");
- // if result.equals(result2) return result2;
- // However, we can optimize 2 of the cases:
- // (languageIn, "", "")
- // (languageIn, "", regionIn)
-
- // value00 = lookup(result.language, "", "")
- BytesTrie iter = new BytesTrie(trie);
- int value = trieNext(iter, result.language, 0);
- U_ASSERT(value >= 0);
- if (value == 0) {
- value = trieNext(iter, "", 0);
- U_ASSERT(value >= 0);
- if (value == 0) {
- value = trieNext(iter, "", 0);
- }
- }
- U_ASSERT(value > 0);
- LSR value00 = lsrs[value];
- boolean favorRegionOk = false;
- if (result.script.equals(value00.script)) { //script is default
- if (result.region.equals(value00.region)) {
- return new LSR(result.language, "", "", LSR.DONT_CARE_FLAGS);
- } else if (fieldToFavor == ULocale.Minimize.FAVOR_REGION) {
- return new LSR(result.language, "", result.region, LSR.DONT_CARE_FLAGS);
- } else {
- favorRegionOk = true;
+ LSR max = maximize(language, script, region, true, errorCode);
+ if (U_FAILURE(errorCode)) {
+ return max;
+ }
+ // If no match, return it.
+ if (uprv_strlen(max.language) == 0 &&
+ uprv_strlen(max.script) == 0 &&
+ uprv_strlen(max.region) == 0) {
+ // No match. ICU API mandate us to
+ // "If this Locale is already in the minimal form, or not valid, or
+ // there is no data available for minimization, the Locale will be
+ // unchanged."
+ return LSR(language, script, region, LSR::EXPLICIT_LSR, errorCode);
+ }
+ // try language
+ LSR test = maximize(max.language, "", "", true, errorCode);
+ if (U_FAILURE(errorCode)) {
+ return max;
+ }
+ if (test.isEquivalentTo(max)) {
+ return LSR(max.language, "", "", LSR::DONT_CARE_FLAGS, errorCode);
+ }
+
+ if (!favorScript) {
+ // favor Region
+ // try language and region
+ test = maximize(max.language, "", max.region, true, errorCode);
+ if (U_FAILURE(errorCode)) {
+ return max;
+ }
+ if (test.isEquivalentTo(max)) {
+ return LSR(max.language, "", max.region, LSR::DONT_CARE_FLAGS, errorCode);
}
}
-
- // The last case is not as easy to optimize.
- // Maybe do later, but for now use the straightforward code.
- LSR result2 = maximize(languageIn, scriptIn, "");
- if (result2.equals(result)) {
- return new LSR(result.language, result.script, "", LSR.DONT_CARE_FLAGS);
- } else if (favorRegionOk) {
- return new LSR(result.language, "", result.region, LSR.DONT_CARE_FLAGS);
+ // try language and script
+ test = maximize(max.language, max.script, "", true, errorCode);
+ if (U_FAILURE(errorCode)) {
+ return max;
+ }
+ if (test.isEquivalentTo(max)) {
+ return LSR(max.language, max.script, "", LSR::DONT_CARE_FLAGS, errorCode);
+ }
+ if (favorScript) {
+ // try language and region
+ test = maximize(max.language, "", max.region, true, errorCode);
+ if (U_FAILURE(errorCode)) {
+ return max;
+ }
+ if (test.isEquivalentTo(max)) {
+ return LSR(max.language, "", max.region, LSR::DONT_CARE_FLAGS, errorCode);
+ }
}
- return result;
+ return LSR(max.language, max.script, max.region, LSR::DONT_CARE_FLAGS, errorCode);
}
-#endif
U_NAMESPACE_END
diff --git a/Build/source/libs/icu/icu-src/source/common/loclikelysubtags.h b/Build/source/libs/icu/icu-src/source/common/loclikelysubtags.h
index 14a01a5eac7..ebd9c153068 100644
--- a/Build/source/libs/icu/icu-src/source/common/loclikelysubtags.h
+++ b/Build/source/libs/icu/icu-src/source/common/loclikelysubtags.h
@@ -11,6 +11,7 @@
#include "unicode/utypes.h"
#include "unicode/bytestrie.h"
#include "unicode/locid.h"
+#include "unicode/stringpiece.h"
#include "unicode/uobject.h"
#include "unicode/ures.h"
#include "charstrmap.h"
@@ -47,7 +48,9 @@ public:
static const XLikelySubtags *getSingleton(UErrorCode &errorCode);
// VisibleForTesting
- LSR makeMaximizedLsrFrom(const Locale &locale, UErrorCode &errorCode) const;
+ LSR makeMaximizedLsrFrom(const Locale &locale,
+ bool returnInputIfUnmatch,
+ UErrorCode &errorCode) const;
/**
* Tests whether lsr is "more likely" than other.
@@ -61,13 +64,9 @@ public:
*/
int32_t compareLikely(const LSR &lsr, const LSR &other, int32_t likelyInfo) const;
- // TODO(ICU-20777): Switch Locale/uloc_ likely-subtags API from the old code
- // in loclikely.cpp to this new code, including activating this
- // minimizeSubtags() function. The LocaleMatcher does not minimize.
-#if 0
- LSR minimizeSubtags(const char *languageIn, const char *scriptIn, const char *regionIn,
- ULocale.Minimize fieldToFavor, UErrorCode &errorCode) const;
-#endif
+ LSR minimizeSubtags(StringPiece language, StringPiece script, StringPiece region,
+ bool favorScript,
+ UErrorCode &errorCode) const;
// visible for LocaleDistance
const LocaleDistanceData &getDistanceData() const { return distanceData; }
@@ -80,16 +79,25 @@ private:
static void initLikelySubtags(UErrorCode &errorCode);
LSR makeMaximizedLsr(const char *language, const char *script, const char *region,
- const char *variant, UErrorCode &errorCode) const;
+ const char *variant,
+ bool returnInputIfUnmatch,
+ UErrorCode &errorCode) const;
/**
* Raw access to addLikelySubtags. Input must be in canonical format, eg "en", not "eng" or "EN".
*/
- LSR maximize(const char *language, const char *script, const char *region) const;
+ LSR maximize(const char *language, const char *script, const char *region,
+ bool returnInputIfUnmatch,
+ UErrorCode &errorCode) const;
+ LSR maximize(StringPiece language, StringPiece script, StringPiece region,
+ bool returnInputIfUnmatch,
+ UErrorCode &errorCode) const;
int32_t getLikelyIndex(const char *language, const char *script) const;
+ bool isMacroregion(StringPiece& region, UErrorCode &errorCode) const;
static int32_t trieNext(BytesTrie &iter, const char *s, int32_t i);
+ static int32_t trieNext(BytesTrie &iter, StringPiece s, int32_t i);
UResourceBundle *langInfoBundle;
// We could store the strings by value, except that if there were few enough strings,
diff --git a/Build/source/libs/icu/icu-src/source/common/locmap.cpp b/Build/source/libs/icu/icu-src/source/common/locmap.cpp
index 78cfd1ca86b..e41cfd1027d 100644
--- a/Build/source/libs/icu/icu-src/source/common/locmap.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/locmap.cpp
@@ -1054,7 +1054,7 @@ uprv_convertToPosix(uint32_t hostid, char *posixID, int32_t posixIDCapacity, UEr
uint16_t langID;
uint32_t localeIndex;
UBool bLookup = true;
- const char *pPosixID = NULL;
+ const char *pPosixID = nullptr;
#if U_PLATFORM_HAS_WIN32_API && UCONFIG_USE_WINDOWS_LCID_MAPPING_API
static_assert(ULOC_FULLNAME_CAPACITY > LOCALE_NAME_MAX_LENGTH, "Windows locale names have smaller length than ICU locale names.");
@@ -1110,7 +1110,7 @@ uprv_convertToPosix(uint32_t hostid, char *posixID, int32_t posixIDCapacity, UEr
#endif
if (bLookup) {
- const char *pCandidate = NULL;
+ const char *pCandidate = nullptr;
langID = LANGUAGE_LCID(hostid);
for (localeIndex = 0; localeIndex < gLocaleCount; localeIndex++) {
@@ -1123,7 +1123,7 @@ uprv_convertToPosix(uint32_t hostid, char *posixID, int32_t posixIDCapacity, UEr
/* On Windows, when locale name has a variant, we still look up the hardcoded table.
If a match in the hardcoded table is longer than the Windows locale name without
variant, we use the one as the result */
- if (pCandidate && (pPosixID == NULL || uprv_strlen(pCandidate) > uprv_strlen(pPosixID))) {
+ if (pCandidate && (pPosixID == nullptr || uprv_strlen(pCandidate) > uprv_strlen(pPosixID))) {
pPosixID = pCandidate;
}
}
@@ -1170,7 +1170,7 @@ uprv_convertToLCIDPlatform(const char* localeID, UErrorCode* status)
// conversion functionality when available.
#if U_PLATFORM_HAS_WIN32_API && UCONFIG_USE_WINDOWS_LCID_MAPPING_API
int32_t len;
- char baseName[ULOC_FULLNAME_CAPACITY] = {};
+ icu::CharString baseName;
const char * mylocaleID = localeID;
// Check any for keywords.
@@ -1189,19 +1189,23 @@ uprv_convertToLCIDPlatform(const char* localeID, UErrorCode* status)
else
{
// If the locale ID contains keywords other than collation, just use the base name.
- len = uloc_getBaseName(localeID, baseName, UPRV_LENGTHOF(baseName) - 1, status);
-
- if (U_SUCCESS(*status) && len > 0)
{
- baseName[len] = 0;
- mylocaleID = baseName;
+ icu::CharStringByteSink sink(&baseName);
+ ulocimp_getBaseName(localeID, sink, status);
+ }
+ if (U_SUCCESS(*status) && !baseName.isEmpty())
+ {
+ mylocaleID = baseName.data();
}
}
}
- char asciiBCP47Tag[LOCALE_NAME_MAX_LENGTH] = {};
// this will change it from de_DE@collation=phonebook to de-DE-u-co-phonebk form
- (void)uloc_toLanguageTag(mylocaleID, asciiBCP47Tag, UPRV_LENGTHOF(asciiBCP47Tag), false, status);
+ icu::CharString asciiBCP47Tag;
+ {
+ icu::CharStringByteSink sink(&asciiBCP47Tag);
+ ulocimp_toLanguageTag(mylocaleID, sink, false, status);
+ }
if (U_SUCCESS(*status))
{
diff --git a/Build/source/libs/icu/icu-src/source/common/locresdata.cpp b/Build/source/libs/icu/icu-src/source/common/locresdata.cpp
index d1d9a4729f1..c9d1cdddde4 100644
--- a/Build/source/libs/icu/icu-src/source/common/locresdata.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/locresdata.cpp
@@ -24,6 +24,8 @@
#include "unicode/putil.h"
#include "unicode/uloc.h"
#include "unicode/ures.h"
+#include "bytesinkutil.h"
+#include "charstr.h"
#include "cstring.h"
#include "ulocimp.h"
#include "uresimp.h"
@@ -41,7 +43,7 @@
* default locale because that would result in a mix of languages that is
* unpredictable to the programmer and most likely useless.
*/
-U_CAPI const UChar * U_EXPORT2
+U_CAPI const char16_t * U_EXPORT2
uloc_getTableStringWithFallback(const char *path, const char *locale,
const char *tableKey, const char *subTableKey,
const char *itemKey,
@@ -49,7 +51,7 @@ uloc_getTableStringWithFallback(const char *path, const char *locale,
UErrorCode *pErrorCode)
{
/* char localeBuffer[ULOC_FULLNAME_CAPACITY*4];*/
- const UChar *item=NULL;
+ const char16_t *item=nullptr;
UErrorCode errorCode;
char explicitFallbackName[ULOC_FULLNAME_CAPACITY] = {0};
@@ -63,7 +65,7 @@ uloc_getTableStringWithFallback(const char *path, const char *locale,
if(U_FAILURE(errorCode)) {
/* total failure, not even root could be opened */
*pErrorCode=errorCode;
- return NULL;
+ return nullptr;
} else if(errorCode==U_USING_DEFAULT_WARNING ||
(errorCode==U_USING_FALLBACK_WARNING && *pErrorCode!=U_USING_DEFAULT_WARNING)
) {
@@ -76,7 +78,7 @@ uloc_getTableStringWithFallback(const char *path, const char *locale,
icu::StackUResourceBundle subTable;
ures_getByKeyWithFallback(rb.getAlias(), tableKey, table.getAlias(), &errorCode);
- if (subTableKey != NULL) {
+ if (subTableKey != nullptr) {
/*
ures_getByKeyWithFallback(table.getAlias(), subTableKey, subTable.getAlias(), &errorCode);
item = ures_getStringByKeyWithFallback(subTable.getAlias(), itemKey, pLength, &errorCode);
@@ -91,7 +93,7 @@ uloc_getTableStringWithFallback(const char *path, const char *locale,
if(U_SUCCESS(errorCode)){
item = ures_getStringByKeyWithFallback(table.getAlias(), itemKey, pLength, &errorCode);
if(U_FAILURE(errorCode)){
- const char* replacement = NULL;
+ const char* replacement = nullptr;
*pErrorCode = errorCode; /*save the errorCode*/
errorCode = U_ZERO_ERROR;
/* may be a deprecated code */
@@ -101,7 +103,7 @@ uloc_getTableStringWithFallback(const char *path, const char *locale,
replacement = uloc_getCurrentLanguageID(itemKey);
}
/*pointer comparison is ok since uloc_getCurrentCountryID & uloc_getCurrentLanguageID return the key itself is replacement is not found*/
- if(replacement!=NULL && itemKey != replacement){
+ if(replacement!=nullptr && itemKey != replacement){
item = ures_getStringByKeyWithFallback(table.getAlias(), replacement, pLength, &errorCode);
if(U_SUCCESS(errorCode)){
*pErrorCode = errorCode;
@@ -117,7 +119,7 @@ uloc_getTableStringWithFallback(const char *path, const char *locale,
/* still can't figure out ?.. try the fallback mechanism */
int32_t len = 0;
- const UChar* fallbackLocale = NULL;
+ const char16_t* fallbackLocale = nullptr;
*pErrorCode = errorCode;
errorCode = U_ZERO_ERROR;
@@ -156,18 +158,20 @@ _uloc_getOrientationHelper(const char* localeId,
ULayoutType result = ULOC_LAYOUT_UNKNOWN;
if (!U_FAILURE(*status)) {
- int32_t length = 0;
- char localeBuffer[ULOC_FULLNAME_CAPACITY];
-
- uloc_canonicalize(localeId, localeBuffer, sizeof(localeBuffer), status);
+ icu::CharString localeBuffer;
+ {
+ icu::CharStringByteSink sink(&localeBuffer);
+ ulocimp_canonicalize(localeId, sink, status);
+ }
if (!U_FAILURE(*status)) {
- const UChar* const value =
+ int32_t length = 0;
+ const char16_t* const value =
uloc_getTableStringWithFallback(
- NULL,
- localeBuffer,
+ nullptr,
+ localeBuffer.data(),
"layout",
- NULL,
+ nullptr,
key,
&length,
status);
diff --git a/Build/source/libs/icu/icu-src/source/common/locutil.cpp b/Build/source/libs/icu/icu-src/source/common/locutil.cpp
index 6e2bd497f81..776d1d59636 100644
--- a/Build/source/libs/icu/icu-src/source/common/locutil.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/locutil.cpp
@@ -22,11 +22,11 @@
// see LocaleUtility::getAvailableLocaleNames
static icu::UInitOnce LocaleUtilityInitOnce {};
-static icu::Hashtable * LocaleUtility_cache = NULL;
+static icu::Hashtable * LocaleUtility_cache = nullptr;
-#define UNDERSCORE_CHAR ((UChar)0x005f)
-#define AT_SIGN_CHAR ((UChar)64)
-#define PERIOD_CHAR ((UChar)46)
+#define UNDERSCORE_CHAR ((char16_t)0x005f)
+#define AT_SIGN_CHAR ((char16_t)64)
+#define PERIOD_CHAR ((char16_t)46)
/*
******************************************************************
@@ -36,10 +36,10 @@ static icu::Hashtable * LocaleUtility_cache = NULL;
* Release all static memory held by Locale Utility.
*/
U_CDECL_BEGIN
-static UBool U_CALLCONV service_cleanup(void) {
+static UBool U_CALLCONV service_cleanup() {
if (LocaleUtility_cache) {
delete LocaleUtility_cache;
- LocaleUtility_cache = NULL;
+ LocaleUtility_cache = nullptr;
}
return true;
}
@@ -47,15 +47,15 @@ static UBool U_CALLCONV service_cleanup(void) {
static void U_CALLCONV locale_utility_init(UErrorCode &status) {
using namespace icu;
- U_ASSERT(LocaleUtility_cache == NULL);
+ U_ASSERT(LocaleUtility_cache == nullptr);
ucln_common_registerCleanup(UCLN_COMMON_SERVICE, service_cleanup);
LocaleUtility_cache = new Hashtable(status);
if (U_FAILURE(status)) {
delete LocaleUtility_cache;
- LocaleUtility_cache = NULL;
+ LocaleUtility_cache = nullptr;
return;
}
- if (LocaleUtility_cache == NULL) {
+ if (LocaleUtility_cache == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -69,7 +69,7 @@ U_NAMESPACE_BEGIN
UnicodeString&
LocaleUtility::canonicalLocaleString(const UnicodeString* id, UnicodeString& result)
{
- if (id == NULL) {
+ if (id == nullptr) {
result.setToBogus();
} else {
// Fix case only (no other changes) up to the first '@' or '.' or
@@ -94,14 +94,14 @@ LocaleUtility::canonicalLocaleString(const UnicodeString* id, UnicodeString& res
n = end;
}
for (; i < n; ++i) {
- UChar c = result.charAt(i);
+ char16_t c = result.charAt(i);
if (c >= 0x0041 && c <= 0x005a) {
c += 0x20;
result.setCharAt(i, c);
}
}
for (n = end; i < n; ++i) {
- UChar c = result.charAt(i);
+ char16_t c = result.charAt(i);
if (c >= 0x0061 && c <= 0x007a) {
c -= 0x20;
result.setCharAt(i, c);
@@ -112,7 +112,7 @@ LocaleUtility::canonicalLocaleString(const UnicodeString* id, UnicodeString& res
#if 0
// This code does a proper full level 2 canonicalization of id.
- // It's nasty to go from UChar to char to char to UChar -- but
+ // It's nasty to go from char16_t to char to char to char16_t -- but
// that's what you have to do to use the uloc_canonicalize
// function on UnicodeStrings.
@@ -172,7 +172,7 @@ LocaleUtility::initLocaleFromName(const UnicodeString& id, Locale& result)
int32_t prev, i;
prev = 0;
for(;;) {
- i = id.indexOf((UChar)0x40, prev);
+ i = id.indexOf((char16_t)0x40, prev);
if(i < 0) {
// no @ between prev and the rest of the string
id.extract(prev, INT32_MAX, buffer + prev, BUFLEN - prev, US_INV);
@@ -214,45 +214,45 @@ LocaleUtility::getAvailableLocaleNames(const UnicodeString& bundleID)
UErrorCode status = U_ZERO_ERROR;
umtx_initOnce(LocaleUtilityInitOnce, locale_utility_init, status);
Hashtable *cache = LocaleUtility_cache;
- if (cache == NULL) {
+ if (cache == nullptr) {
// Catastrophic failure.
- return NULL;
+ return nullptr;
}
Hashtable* htp;
- umtx_lock(NULL);
+ umtx_lock(nullptr);
htp = (Hashtable*) cache->get(bundleID);
- umtx_unlock(NULL);
+ umtx_unlock(nullptr);
- if (htp == NULL) {
+ if (htp == nullptr) {
htp = new Hashtable(status);
if (htp && U_SUCCESS(status)) {
CharString cbundleID;
cbundleID.appendInvariantChars(bundleID, status);
- const char* path = cbundleID.isEmpty() ? NULL : cbundleID.data();
+ const char* path = cbundleID.isEmpty() ? nullptr : cbundleID.data();
icu::LocalUEnumerationPointer uenum(ures_openAvailableLocales(path, &status));
for (;;) {
- const UChar* id = uenum_unext(uenum.getAlias(), NULL, &status);
- if (id == NULL) {
+ const char16_t* id = uenum_unext(uenum.getAlias(), nullptr, &status);
+ if (id == nullptr) {
break;
}
htp->put(UnicodeString(id), (void*)htp, status);
}
if (U_FAILURE(status)) {
delete htp;
- return NULL;
+ return nullptr;
}
- umtx_lock(NULL);
+ umtx_lock(nullptr);
Hashtable *t = static_cast<Hashtable *>(cache->get(bundleID));
- if (t != NULL) {
+ if (t != nullptr) {
// Another thread raced through this code, creating the cache entry first.
// Discard ours and return theirs.
- umtx_unlock(NULL);
+ umtx_unlock(nullptr);
delete htp;
htp = t;
} else {
cache->put(bundleID, (void*)htp, status);
- umtx_unlock(NULL);
+ umtx_unlock(nullptr);
}
}
}
diff --git a/Build/source/libs/icu/icu-src/source/common/lsr.cpp b/Build/source/libs/icu/icu-src/source/common/lsr.cpp
index 1f0b69ab0fd..bd231ecdb5e 100644
--- a/Build/source/libs/icu/icu-src/source/common/lsr.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/lsr.cpp
@@ -31,7 +31,27 @@ LSR::LSR(char prefix, const char *lang, const char *scr, const char *r, int32_t
}
}
-LSR::LSR(LSR &&other) U_NOEXCEPT :
+LSR::LSR(StringPiece lang, StringPiece scr, StringPiece r, int32_t f,
+ UErrorCode &errorCode) :
+ language(nullptr), script(nullptr), region(nullptr),
+ regionIndex(indexForRegion(r.data())), flags(f) {
+ if (U_SUCCESS(errorCode)) {
+ CharString data;
+ data.append(lang, errorCode).append('\0', errorCode);
+ int32_t scriptOffset = data.length();
+ data.append(scr, errorCode).append('\0', errorCode);
+ int32_t regionOffset = data.length();
+ data.append(r, errorCode);
+ owned = data.cloneData(errorCode);
+ if (U_SUCCESS(errorCode)) {
+ language = owned;
+ script = owned + scriptOffset;
+ region = owned + regionOffset;
+ }
+ }
+}
+
+LSR::LSR(LSR &&other) noexcept :
language(other.language), script(other.script), region(other.region), owned(other.owned),
regionIndex(other.regionIndex), flags(other.flags),
hashCode(other.hashCode) {
@@ -46,7 +66,7 @@ void LSR::deleteOwned() {
uprv_free(owned);
}
-LSR &LSR::operator=(LSR &&other) U_NOEXCEPT {
+LSR &LSR::operator=(LSR &&other) noexcept {
this->~LSR();
language = other.language;
script = other.script;
diff --git a/Build/source/libs/icu/icu-src/source/common/lsr.h b/Build/source/libs/icu/icu-src/source/common/lsr.h
index af993c11d60..313286e93d8 100644
--- a/Build/source/libs/icu/icu-src/source/common/lsr.h
+++ b/Build/source/libs/icu/icu-src/source/common/lsr.h
@@ -7,6 +7,7 @@
#ifndef __LSR_H__
#define __LSR_H__
+#include "unicode/stringpiece.h"
#include "unicode/utypes.h"
#include "unicode/uobject.h"
#include "cstring.h"
@@ -45,7 +46,9 @@ struct LSR final : public UMemory {
*/
LSR(char prefix, const char *lang, const char *scr, const char *r, int32_t f,
UErrorCode &errorCode);
- LSR(LSR &&other) U_NOEXCEPT;
+ LSR(StringPiece lang, StringPiece scr, StringPiece r, int32_t f,
+ UErrorCode &errorCode);
+ LSR(LSR &&other) noexcept;
LSR(const LSR &other) = delete;
inline ~LSR() {
// Pure inline code for almost all instances.
@@ -54,7 +57,7 @@ struct LSR final : public UMemory {
}
}
- LSR &operator=(LSR &&other) U_NOEXCEPT;
+ LSR &operator=(LSR &&other) noexcept;
LSR &operator=(const LSR &other) = delete;
/**
diff --git a/Build/source/libs/icu/icu-src/source/common/lstmbe.cpp b/Build/source/libs/icu/icu-src/source/common/lstmbe.cpp
index f6114cdfe25..fb8eb01761c 100644
--- a/Build/source/libs/icu/icu-src/source/common/lstmbe.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/lstmbe.cpp
@@ -361,7 +361,7 @@ struct LSTMData : public UMemory {
~LSTMData();
UHashtable* fDict;
EmbeddingType fType;
- const UChar* fName;
+ const char16_t* fName;
ConstArray2D fEmbedding;
ConstArray2D fForwardW;
ConstArray2D fForwardU;
@@ -394,7 +394,7 @@ LSTMData::LSTMData(UResourceBundle* rb, UErrorCode &status)
ures_getByKey(rb, "hunits", nullptr, &status));
if (U_FAILURE(status)) return;
int32_t hunits = ures_getInt(hunits_res.getAlias(), &status);
- const UChar* type = ures_getStringByKey(rb, "type", nullptr, &status);
+ const char16_t* type = ures_getStringByKey(rb, "type", nullptr, &status);
if (U_FAILURE(status)) return;
if (u_strCompare(type, -1, u"codepoints", -1, false) == 0) {
fType = CODE_POINTS;
@@ -419,7 +419,7 @@ LSTMData::LSTMData(UResourceBundle* rb, UErrorCode &status)
int32_t stringLength;
for (int32_t idx = 0; idx < num_index; idx++) {
stringArray.getValue(idx, value);
- const UChar* str = value.getString(stringLength, status);
+ const char16_t* str = value.getString(stringLength, status);
uhash_putiAllowZero(fDict, (void*)str, idx, &status);
if (U_FAILURE(status)) return;
#ifdef LSTM_VECTORIZER_DEBUG
@@ -477,7 +477,7 @@ public:
UVector32 &offsets, UVector32 &indices,
UErrorCode &status) const = 0;
protected:
- int32_t stringToIndex(const UChar* str) const {
+ int32_t stringToIndex(const char16_t* str) const {
UBool found = false;
int32_t ret = uhash_getiAndFound(fDict, (const void*)str, &found);
if (!found) {
@@ -524,13 +524,13 @@ void CodePointsVectorizer::vectorize(
if (U_FAILURE(status)) return;
utext_setNativeIndex(text, startPos);
int32_t current;
- UChar str[2] = {0, 0};
+ char16_t str[2] = {0, 0};
while (U_SUCCESS(status) &&
(current = (int32_t)utext_getNativeIndex(text)) < endPos) {
// Since the LSTMBreakEngine is currently only accept chars in BMP,
// we can ignore the possibility of hitting supplementary code
// point.
- str[0] = (UChar) utext_next32(text);
+ str[0] = (char16_t) utext_next32(text);
U_ASSERT(!U_IS_SURROGATE(str[0]));
offsets.addElement(current, status);
indices.addElement(stringToIndex(str), status);
@@ -576,7 +576,7 @@ void GraphemeClusterVectorizer::vectorize(
}
int32_t last = startPos;
int32_t current = startPos;
- UChar str[MAX_GRAPHEME_CLSTER_LENGTH];
+ char16_t str[MAX_GRAPHEME_CLSTER_LENGTH];
while ((current = graphemeIter->next()) != BreakIterator::DONE) {
if (current >= endPos) {
break;
@@ -777,7 +777,7 @@ LSTMBreakEngine::~LSTMBreakEngine() {
delete fVectorizer;
}
-const UChar* LSTMBreakEngine::name() const {
+const char16_t* LSTMBreakEngine::name() const {
return fData->fName;
}
@@ -846,7 +846,7 @@ U_CAPI void U_EXPORT2 DeleteLSTMData(const LSTMData* data)
delete data;
}
-U_CAPI const UChar* U_EXPORT2 LSTMDataName(const LSTMData* data)
+U_CAPI const char16_t* U_EXPORT2 LSTMDataName(const LSTMData* data)
{
return data->fName;
}
diff --git a/Build/source/libs/icu/icu-src/source/common/lstmbe.h b/Build/source/libs/icu/icu-src/source/common/lstmbe.h
index ffdf805eca2..77c97d85fa8 100644
--- a/Build/source/libs/icu/icu-src/source/common/lstmbe.h
+++ b/Build/source/libs/icu/icu-src/source/common/lstmbe.h
@@ -45,7 +45,7 @@ public:
*/
virtual ~LSTMBreakEngine();
- virtual const UChar* name() const;
+ virtual const char16_t* name() const;
protected:
/**
@@ -79,7 +79,7 @@ U_CAPI const LSTMData* U_EXPORT2 CreateLSTMDataForScript(
UScriptCode script, UErrorCode& status);
U_CAPI void U_EXPORT2 DeleteLSTMData(const LSTMData* data);
-U_CAPI const UChar* U_EXPORT2 LSTMDataName(const LSTMData* data);
+U_CAPI const char16_t* U_EXPORT2 LSTMDataName(const LSTMData* data);
U_NAMESPACE_END
diff --git a/Build/source/libs/icu/icu-src/source/common/messagepattern.cpp b/Build/source/libs/icu/icu-src/source/common/messagepattern.cpp
index 52afab5f026..82cb638e4ed 100644
--- a/Build/source/libs/icu/icu-src/source/common/messagepattern.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/messagepattern.cpp
@@ -32,56 +32,56 @@ U_NAMESPACE_BEGIN
// Unicode character/code point constants ---------------------------------- ***
-static const UChar u_pound=0x23;
-static const UChar u_apos=0x27;
-static const UChar u_plus=0x2B;
-static const UChar u_comma=0x2C;
-static const UChar u_minus=0x2D;
-static const UChar u_dot=0x2E;
-static const UChar u_colon=0x3A;
-static const UChar u_lessThan=0x3C;
-static const UChar u_equal=0x3D;
-static const UChar u_A=0x41;
-static const UChar u_C=0x43;
-static const UChar u_D=0x44;
-static const UChar u_E=0x45;
-static const UChar u_H=0x48;
-static const UChar u_I=0x49;
-static const UChar u_L=0x4C;
-static const UChar u_N=0x4E;
-static const UChar u_O=0x4F;
-static const UChar u_P=0x50;
-static const UChar u_R=0x52;
-static const UChar u_S=0x53;
-static const UChar u_T=0x54;
-static const UChar u_U=0x55;
-static const UChar u_Z=0x5A;
-static const UChar u_a=0x61;
-static const UChar u_c=0x63;
-static const UChar u_d=0x64;
-static const UChar u_e=0x65;
-static const UChar u_f=0x66;
-static const UChar u_h=0x68;
-static const UChar u_i=0x69;
-static const UChar u_l=0x6C;
-static const UChar u_n=0x6E;
-static const UChar u_o=0x6F;
-static const UChar u_p=0x70;
-static const UChar u_r=0x72;
-static const UChar u_s=0x73;
-static const UChar u_t=0x74;
-static const UChar u_u=0x75;
-static const UChar u_z=0x7A;
-static const UChar u_leftCurlyBrace=0x7B;
-static const UChar u_pipe=0x7C;
-static const UChar u_rightCurlyBrace=0x7D;
-static const UChar u_lessOrEqual=0x2264; // U+2264 is <=
-
-static const UChar kOffsetColon[]={ // "offset:"
+static const char16_t u_pound=0x23;
+static const char16_t u_apos=0x27;
+static const char16_t u_plus=0x2B;
+static const char16_t u_comma=0x2C;
+static const char16_t u_minus=0x2D;
+static const char16_t u_dot=0x2E;
+static const char16_t u_colon=0x3A;
+static const char16_t u_lessThan=0x3C;
+static const char16_t u_equal=0x3D;
+static const char16_t u_A=0x41;
+static const char16_t u_C=0x43;
+static const char16_t u_D=0x44;
+static const char16_t u_E=0x45;
+static const char16_t u_H=0x48;
+static const char16_t u_I=0x49;
+static const char16_t u_L=0x4C;
+static const char16_t u_N=0x4E;
+static const char16_t u_O=0x4F;
+static const char16_t u_P=0x50;
+static const char16_t u_R=0x52;
+static const char16_t u_S=0x53;
+static const char16_t u_T=0x54;
+static const char16_t u_U=0x55;
+static const char16_t u_Z=0x5A;
+static const char16_t u_a=0x61;
+static const char16_t u_c=0x63;
+static const char16_t u_d=0x64;
+static const char16_t u_e=0x65;
+static const char16_t u_f=0x66;
+static const char16_t u_h=0x68;
+static const char16_t u_i=0x69;
+static const char16_t u_l=0x6C;
+static const char16_t u_n=0x6E;
+static const char16_t u_o=0x6F;
+static const char16_t u_p=0x70;
+static const char16_t u_r=0x72;
+static const char16_t u_s=0x73;
+static const char16_t u_t=0x74;
+static const char16_t u_u=0x75;
+static const char16_t u_z=0x7A;
+static const char16_t u_leftCurlyBrace=0x7B;
+static const char16_t u_pipe=0x7C;
+static const char16_t u_rightCurlyBrace=0x7D;
+static const char16_t u_lessOrEqual=0x2264; // U+2264 is <=
+
+static const char16_t kOffsetColon[]={ // "offset:"
u_o, u_f, u_f, u_s, u_e, u_t, u_colon
};
-static const UChar kOther[]={ // "other"
+static const char16_t kOther[]={ // "other"
u_o, u_t, u_h, u_e, u_r
};
@@ -112,7 +112,7 @@ MessagePatternList<T, stackCapacity>::copyFrom(
int32_t length,
UErrorCode &errorCode) {
if(U_SUCCESS(errorCode) && length>0) {
- if(length>a.getCapacity() && NULL==a.resize(length)) {
+ if(length>a.getCapacity() && nullptr==a.resize(length)) {
errorCode=U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -126,7 +126,7 @@ MessagePatternList<T, stackCapacity>::ensureCapacityForOneMore(int32_t oldLength
if(U_FAILURE(errorCode)) {
return false;
}
- if(a.getCapacity()>oldLength || a.resize(2*oldLength, oldLength)!=NULL) {
+ if(a.getCapacity()>oldLength || a.resize(2*oldLength, oldLength)!=nullptr) {
return true;
}
errorCode=U_MEMORY_ALLOCATION_ERROR;
@@ -145,24 +145,24 @@ class MessagePatternPartsList : public MessagePatternList<MessagePattern::Part,
MessagePattern::MessagePattern(UErrorCode &errorCode)
: aposMode(UCONFIG_MSGPAT_DEFAULT_APOSTROPHE_MODE),
- partsList(NULL), parts(NULL), partsLength(0),
- numericValuesList(NULL), numericValues(NULL), numericValuesLength(0),
+ partsList(nullptr), parts(nullptr), partsLength(0),
+ numericValuesList(nullptr), numericValues(nullptr), numericValuesLength(0),
hasArgNames(false), hasArgNumbers(false), needsAutoQuoting(false) {
init(errorCode);
}
MessagePattern::MessagePattern(UMessagePatternApostropheMode mode, UErrorCode &errorCode)
: aposMode(mode),
- partsList(NULL), parts(NULL), partsLength(0),
- numericValuesList(NULL), numericValues(NULL), numericValuesLength(0),
+ partsList(nullptr), parts(nullptr), partsLength(0),
+ numericValuesList(nullptr), numericValues(nullptr), numericValuesLength(0),
hasArgNames(false), hasArgNumbers(false), needsAutoQuoting(false) {
init(errorCode);
}
MessagePattern::MessagePattern(const UnicodeString &pattern, UParseError *parseError, UErrorCode &errorCode)
: aposMode(UCONFIG_MSGPAT_DEFAULT_APOSTROPHE_MODE),
- partsList(NULL), parts(NULL), partsLength(0),
- numericValuesList(NULL), numericValues(NULL), numericValuesLength(0),
+ partsList(nullptr), parts(nullptr), partsLength(0),
+ numericValuesList(nullptr), numericValues(nullptr), numericValuesLength(0),
hasArgNames(false), hasArgNumbers(false), needsAutoQuoting(false) {
if(init(errorCode)) {
parse(pattern, parseError, errorCode);
@@ -175,7 +175,7 @@ MessagePattern::init(UErrorCode &errorCode) {
return false;
}
partsList=new MessagePatternPartsList();
- if(partsList==NULL) {
+ if(partsList==nullptr) {
errorCode=U_MEMORY_ALLOCATION_ERROR;
return false;
}
@@ -185,8 +185,8 @@ MessagePattern::init(UErrorCode &errorCode) {
MessagePattern::MessagePattern(const MessagePattern &other)
: UObject(other), aposMode(other.aposMode), msg(other.msg),
- partsList(NULL), parts(NULL), partsLength(0),
- numericValuesList(NULL), numericValues(NULL), numericValuesLength(0),
+ partsList(nullptr), parts(nullptr), partsLength(0),
+ numericValuesList(nullptr), numericValues(nullptr), numericValuesLength(0),
hasArgNames(other.hasArgNames), hasArgNumbers(other.hasArgNumbers),
needsAutoQuoting(other.needsAutoQuoting) {
UErrorCode errorCode=U_ZERO_ERROR;
@@ -217,13 +217,13 @@ MessagePattern::copyStorage(const MessagePattern &other, UErrorCode &errorCode)
if(U_FAILURE(errorCode)) {
return false;
}
- parts=NULL;
+ parts=nullptr;
partsLength=0;
- numericValues=NULL;
+ numericValues=nullptr;
numericValuesLength=0;
- if(partsList==NULL) {
+ if(partsList==nullptr) {
partsList=new MessagePatternPartsList();
- if(partsList==NULL) {
+ if(partsList==nullptr) {
errorCode=U_MEMORY_ALLOCATION_ERROR;
return false;
}
@@ -238,9 +238,9 @@ MessagePattern::copyStorage(const MessagePattern &other, UErrorCode &errorCode)
partsLength=other.partsLength;
}
if(other.numericValuesLength>0) {
- if(numericValuesList==NULL) {
+ if(numericValuesList==nullptr) {
numericValuesList=new MessagePatternDoubleList();
- if(numericValuesList==NULL) {
+ if(numericValuesList==nullptr) {
errorCode=U_MEMORY_ALLOCATION_ERROR;
return false;
}
@@ -351,7 +351,7 @@ MessagePattern::autoQuoteApostropheDeep() const {
for(int32_t i=count; i>0;) {
const Part &part=getPart(--i);
if(part.getType()==UMSGPAT_PART_TYPE_INSERT_CHAR) {
- modified.insert(part.index, (UChar)part.value);
+ modified.insert(part.index, (char16_t)part.value);
}
}
return modified;
@@ -407,7 +407,7 @@ MessagePattern::preParse(const UnicodeString &pattern, UParseError *parseError,
if(U_FAILURE(errorCode)) {
return;
}
- if(parseError!=NULL) {
+ if(parseError!=nullptr) {
parseError->line=0;
parseError->offset=0;
parseError->preContext[0]=0;
@@ -422,10 +422,10 @@ MessagePattern::preParse(const UnicodeString &pattern, UParseError *parseError,
void
MessagePattern::postParse() {
- if(partsList!=NULL) {
+ if(partsList!=nullptr) {
parts=partsList->a.getAlias();
}
- if(numericValuesList!=NULL) {
+ if(numericValuesList!=nullptr) {
numericValues=numericValuesList->a.getAlias();
}
}
@@ -451,7 +451,7 @@ MessagePattern::parseMessage(int32_t index, int32_t msgStartLength,
if(index>=msg.length()) {
break;
}
- UChar c=msg.charAt(index++);
+ char16_t c=msg.charAt(index++);
if(c==u_apos) {
if(index==msg.length()) {
// The apostrophe is the last character in the pattern.
@@ -582,7 +582,7 @@ MessagePattern::parseArg(int32_t index, int32_t argStartLength, int32_t nestingL
errorCode=U_UNMATCHED_BRACES;
return 0;
}
- UChar c=msg.charAt(index);
+ char16_t c=msg.charAt(index);
if(c==u_rightCurlyBrace) {
// all done
} else if(c!=u_comma) {
@@ -663,7 +663,7 @@ MessagePattern::parseSimpleStyle(int32_t index, UParseError *parseError, UErrorC
int32_t start=index;
int32_t nestedBraces=0;
while(index<msg.length()) {
- UChar c=msg.charAt(index++);
+ char16_t c=msg.charAt(index++);
if(c==u_apos) {
// Treat apostrophe as quoting but include it in the style part.
// Find the end of the quoted literal text.
@@ -738,7 +738,7 @@ MessagePattern::parseChoiceStyle(int32_t index, int32_t nestingLevel,
errorCode=U_PATTERN_SYNTAX_ERROR;
return 0;
}
- UChar c=msg.charAt(index);
+ char16_t c=msg.charAt(index);
if(!(c==u_pound || c==u_lessThan || c==u_lessOrEqual)) { // U+2264 is <=
setParseError(parseError, start); // Expected choice separator (#<\u2264) instead of c.
errorCode=U_PATTERN_SYNTAX_ERROR;
@@ -895,7 +895,7 @@ MessagePattern::parseArgNumber(const UnicodeString &s, int32_t start, int32_t li
int32_t number;
// Defer numeric errors until we know there are only digits.
UBool badNumber;
- UChar c=s.charAt(start++);
+ char16_t c=s.charAt(start++);
if(c==0x30) {
if(start==limit) {
return 0;
@@ -941,7 +941,7 @@ MessagePattern::parseDouble(int32_t start, int32_t limit, UBool allowInfinity,
int32_t value=0;
int32_t isNegative=0; // not boolean so that we can easily add it to value
int32_t index=start;
- UChar c=msg.charAt(index++);
+ char16_t c=msg.charAt(index++);
if(c==u_minus) {
isNegative=1;
if(index==limit) {
@@ -1004,17 +1004,17 @@ MessagePattern::parseDouble(int32_t start, int32_t limit, UBool allowInfinity,
int32_t
MessagePattern::skipWhiteSpace(int32_t index) {
- const UChar *s=msg.getBuffer();
+ const char16_t *s=msg.getBuffer();
int32_t msgLength=msg.length();
- const UChar *t=PatternProps::skipWhiteSpace(s+index, msgLength-index);
+ const char16_t *t=PatternProps::skipWhiteSpace(s+index, msgLength-index);
return (int32_t)(t-s);
}
int32_t
MessagePattern::skipIdentifier(int32_t index) {
- const UChar *s=msg.getBuffer();
+ const char16_t *s=msg.getBuffer();
int32_t msgLength=msg.length();
- const UChar *t=PatternProps::skipIdentifier(s+index, msgLength-index);
+ const char16_t *t=PatternProps::skipIdentifier(s+index, msgLength-index);
return (int32_t)(t-s);
}
@@ -1022,7 +1022,7 @@ int32_t
MessagePattern::skipDouble(int32_t index) {
int32_t msgLength=msg.length();
while(index<msgLength) {
- UChar c=msg.charAt(index);
+ char16_t c=msg.charAt(index);
// U+221E: Allow the infinity symbol, for ChoiceFormat patterns.
if((c<0x30 && c!=u_plus && c!=u_minus && c!=u_dot) || (c>0x39 && c!=u_e && c!=u_E && c!=0x221e)) {
break;
@@ -1039,7 +1039,7 @@ MessagePattern::isArgTypeChar(UChar32 c) {
UBool
MessagePattern::isChoice(int32_t index) {
- UChar c;
+ char16_t c;
return
((c=msg.charAt(index++))==u_c || c==u_C) &&
((c=msg.charAt(index++))==u_h || c==u_H) &&
@@ -1051,7 +1051,7 @@ MessagePattern::isChoice(int32_t index) {
UBool
MessagePattern::isPlural(int32_t index) {
- UChar c;
+ char16_t c;
return
((c=msg.charAt(index++))==u_p || c==u_P) &&
((c=msg.charAt(index++))==u_l || c==u_L) &&
@@ -1063,7 +1063,7 @@ MessagePattern::isPlural(int32_t index) {
UBool
MessagePattern::isSelect(int32_t index) {
- UChar c;
+ char16_t c;
return
((c=msg.charAt(index++))==u_s || c==u_S) &&
((c=msg.charAt(index++))==u_e || c==u_E) &&
@@ -1075,7 +1075,7 @@ MessagePattern::isSelect(int32_t index) {
UBool
MessagePattern::isOrdinal(int32_t index) {
- UChar c;
+ char16_t c;
return
((c=msg.charAt(index++))==u_o || c==u_O) &&
((c=msg.charAt(index++))==u_r || c==u_R) &&
@@ -1127,9 +1127,9 @@ MessagePattern::addArgDoublePart(double numericValue, int32_t start, int32_t len
return;
}
int32_t numericIndex=numericValuesLength;
- if(numericValuesList==NULL) {
+ if(numericValuesList==nullptr) {
numericValuesList=new MessagePatternDoubleList();
- if(numericValuesList==NULL) {
+ if(numericValuesList==nullptr) {
errorCode=U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -1147,7 +1147,7 @@ MessagePattern::addArgDoublePart(double numericValue, int32_t start, int32_t len
void
MessagePattern::setParseError(UParseError *parseError, int32_t index) {
- if(parseError==NULL) {
+ if(parseError==nullptr) {
return;
}
parseError->offset=index;
diff --git a/Build/source/libs/icu/icu-src/source/common/mlbe.cpp b/Build/source/libs/icu/icu-src/source/common/mlbe.cpp
new file mode 100644
index 00000000000..7e734f2c8ad
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/common/mlbe.cpp
@@ -0,0 +1,270 @@
+// © 2022 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_BREAK_ITERATION
+
+#include "cmemory.h"
+#include "mlbe.h"
+#include "uassert.h"
+#include "ubrkimpl.h"
+#include "unicode/resbund.h"
+#include "unicode/udata.h"
+#include "unicode/utf16.h"
+#include "uresimp.h"
+#include "util.h"
+#include "uvectr32.h"
+
+U_NAMESPACE_BEGIN
+
+enum class ModelIndex { kUWStart = 0, kBWStart = 6, kTWStart = 9 };
+
+MlBreakEngine::MlBreakEngine(const UnicodeSet &digitOrOpenPunctuationOrAlphabetSet,
+ const UnicodeSet &closePunctuationSet, UErrorCode &status)
+ : fDigitOrOpenPunctuationOrAlphabetSet(digitOrOpenPunctuationOrAlphabetSet),
+ fClosePunctuationSet(closePunctuationSet),
+ fNegativeSum(0) {
+ if (U_FAILURE(status)) {
+ return;
+ }
+ loadMLModel(status);
+}
+
+MlBreakEngine::~MlBreakEngine() {}
+
+int32_t MlBreakEngine::divideUpRange(UText *inText, int32_t rangeStart, int32_t rangeEnd,
+ UVector32 &foundBreaks, const UnicodeString &inString,
+ const LocalPointer<UVector32> &inputMap,
+ UErrorCode &status) const {
+ if (U_FAILURE(status)) {
+ return 0;
+ }
+ if (rangeStart >= rangeEnd) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
+
+ UVector32 boundary(inString.countChar32() + 1, status);
+ if (U_FAILURE(status)) {
+ return 0;
+ }
+ int32_t numBreaks = 0;
+ int32_t codePointLength = inString.countChar32();
+ // The ML algorithm groups six char and evaluates whether the 4th char is a breakpoint.
+ // In each iteration, it evaluates the 4th char and then moves forward one char like a sliding
+ // window. Initially, the first six values in the indexList are [-1, -1, 0, 1, 2, 3]. After
+ // moving forward, finally the last six values in the indexList are
+ // [length-4, length-3, length-2, length-1, -1, -1]. The "+4" here means four extra "-1".
+ int32_t indexSize = codePointLength + 4;
+ int32_t *indexList = (int32_t *)uprv_malloc(indexSize * sizeof(int32_t));
+ if (indexList == nullptr) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ return 0;
+ }
+ int32_t numCodeUnits = initIndexList(inString, indexList, status);
+
+ // Add a break for the start.
+ boundary.addElement(0, status);
+ numBreaks++;
+ if (U_FAILURE(status)) return 0;
+
+ for (int32_t idx = 0; idx + 1 < codePointLength && U_SUCCESS(status); idx++) {
+ numBreaks =
+ evaluateBreakpoint(inString, indexList, idx, numCodeUnits, numBreaks, boundary, status);
+ if (idx + 4 < codePointLength) {
+ indexList[idx + 6] = numCodeUnits;
+ numCodeUnits += U16_LENGTH(inString.char32At(indexList[idx + 6]));
+ }
+ }
+ uprv_free(indexList);
+
+ if (U_FAILURE(status)) return 0;
+
+ // Add a break for the end if there is not one there already.
+ if (boundary.lastElementi() != inString.countChar32()) {
+ boundary.addElement(inString.countChar32(), status);
+ numBreaks++;
+ }
+
+ int32_t prevCPPos = -1;
+ int32_t prevUTextPos = -1;
+ int32_t correctedNumBreaks = 0;
+ for (int32_t i = 0; i < numBreaks; i++) {
+ int32_t cpPos = boundary.elementAti(i);
+ int32_t utextPos = inputMap.isValid() ? inputMap->elementAti(cpPos) : cpPos + rangeStart;
+ U_ASSERT(cpPos > prevCPPos);
+ U_ASSERT(utextPos >= prevUTextPos);
+
+ if (utextPos > prevUTextPos) {
+ if (utextPos != rangeStart ||
+ (utextPos > 0 &&
+ fClosePunctuationSet.contains(utext_char32At(inText, utextPos - 1)))) {
+ foundBreaks.push(utextPos, status);
+ correctedNumBreaks++;
+ }
+ } else {
+ // Normalization expanded the input text, the dictionary found a boundary
+ // within the expansion, giving two boundaries with the same index in the
+ // original text. Ignore the second. See ticket #12918.
+ --numBreaks;
+ }
+ prevCPPos = cpPos;
+ prevUTextPos = utextPos;
+ }
+ (void)prevCPPos; // suppress compiler warnings about unused variable
+
+ UChar32 nextChar = utext_char32At(inText, rangeEnd);
+ if (!foundBreaks.isEmpty() && foundBreaks.peeki() == rangeEnd) {
+ // In phrase breaking, there has to be a breakpoint between Cj character and
+ // the number/open punctuation.
+ // E.g. る文字「ãã†ã ã€äº¬éƒ½ã€->ã‚‹â–文字â–「ãã†ã ã€â–京都ã€-> breakpoint between å­— and「
+ // E.g. 乗車率9ï¼ï¼…程度ã ã‚ã†ã‹ -> 乗車â–率â–ï¼™ï¼ï¼…â–程度ã ã‚ã†ã‹ -> breakpoint between 率 and ï¼™
+ // E.g. ã—ã‹ã‚‚ロゴãŒï¼µï½Žï½‰ï½ƒï½ï½„ï½…ï¼ -> ã—ã‹ã‚‚â–ロゴãŒâ–Unicï½ï½„ï½…ï¼-> breakpoint between ㌠and ï¼µ
+ if (!fDigitOrOpenPunctuationOrAlphabetSet.contains(nextChar)) {
+ foundBreaks.popi();
+ correctedNumBreaks--;
+ }
+ }
+
+ return correctedNumBreaks;
+}
+
+int32_t MlBreakEngine::evaluateBreakpoint(const UnicodeString &inString, int32_t *indexList,
+ int32_t startIdx, int32_t numCodeUnits, int32_t numBreaks,
+ UVector32 &boundary, UErrorCode &status) const {
+ if (U_FAILURE(status)) {
+ return numBreaks;
+ }
+ int32_t start = 0, end = 0;
+ int32_t score = fNegativeSum;
+
+ for (int i = 0; i < 6; i++) {
+ // UW1 ~ UW6
+ start = startIdx + i;
+ if (indexList[start] != -1) {
+ end = (indexList[start + 1] != -1) ? indexList[start + 1] : numCodeUnits;
+ score += fModel[static_cast<int32_t>(ModelIndex::kUWStart) + i].geti(
+ inString.tempSubString(indexList[start], end - indexList[start]));
+ }
+ }
+ for (int i = 0; i < 3; i++) {
+ // BW1 ~ BW3
+ start = startIdx + i + 1;
+ if (indexList[start] != -1 && indexList[start + 1] != -1) {
+ end = (indexList[start + 2] != -1) ? indexList[start + 2] : numCodeUnits;
+ score += fModel[static_cast<int32_t>(ModelIndex::kBWStart) + i].geti(
+ inString.tempSubString(indexList[start], end - indexList[start]));
+ }
+ }
+ for (int i = 0; i < 4; i++) {
+ // TW1 ~ TW4
+ start = startIdx + i;
+ if (indexList[start] != -1 && indexList[start + 1] != -1 && indexList[start + 2] != -1) {
+ end = (indexList[start + 3] != -1) ? indexList[start + 3] : numCodeUnits;
+ score += fModel[static_cast<int32_t>(ModelIndex::kTWStart) + i].geti(
+ inString.tempSubString(indexList[start], end - indexList[start]));
+ }
+ }
+
+ if (score > 0) {
+ boundary.addElement(startIdx + 1, status);
+ numBreaks++;
+ }
+ return numBreaks;
+}
+
+int32_t MlBreakEngine::initIndexList(const UnicodeString &inString, int32_t *indexList,
+ UErrorCode &status) const {
+ if (U_FAILURE(status)) {
+ return 0;
+ }
+ int32_t index = 0;
+ int32_t length = inString.countChar32();
+ // Set all (lenght+4) items inside indexLength to -1 presuming -1 is 4 bytes of 0xff.
+ uprv_memset(indexList, 0xff, (length + 4) * sizeof(int32_t));
+ if (length > 0) {
+ indexList[2] = 0;
+ index = U16_LENGTH(inString.char32At(0));
+ if (length > 1) {
+ indexList[3] = index;
+ index += U16_LENGTH(inString.char32At(index));
+ if (length > 2) {
+ indexList[4] = index;
+ index += U16_LENGTH(inString.char32At(index));
+ if (length > 3) {
+ indexList[5] = index;
+ index += U16_LENGTH(inString.char32At(index));
+ }
+ }
+ }
+ }
+ return index;
+}
+
+void MlBreakEngine::loadMLModel(UErrorCode &error) {
+ // BudouX's model consists of thirteen categories, each of which is make up of pairs of the
+ // feature and its score. As integrating it into jaml.txt, we define thirteen kinds of key and
+ // value to represent the feature and the corresponding score respectively.
+
+ if (U_FAILURE(error)) return;
+
+ UnicodeString key;
+ StackUResourceBundle stackTempBundle;
+ ResourceDataValue modelKey;
+
+ LocalUResourceBundlePointer rbp(ures_openDirect(U_ICUDATA_BRKITR, "jaml", &error));
+ UResourceBundle *rb = rbp.getAlias();
+ if (U_FAILURE(error)) return;
+
+ int32_t index = 0;
+ initKeyValue(rb, "UW1Keys", "UW1Values", fModel[index++], error);
+ initKeyValue(rb, "UW2Keys", "UW2Values", fModel[index++], error);
+ initKeyValue(rb, "UW3Keys", "UW3Values", fModel[index++], error);
+ initKeyValue(rb, "UW4Keys", "UW4Values", fModel[index++], error);
+ initKeyValue(rb, "UW5Keys", "UW5Values", fModel[index++], error);
+ initKeyValue(rb, "UW6Keys", "UW6Values", fModel[index++], error);
+ initKeyValue(rb, "BW1Keys", "BW1Values", fModel[index++], error);
+ initKeyValue(rb, "BW2Keys", "BW2Values", fModel[index++], error);
+ initKeyValue(rb, "BW3Keys", "BW3Values", fModel[index++], error);
+ initKeyValue(rb, "TW1Keys", "TW1Values", fModel[index++], error);
+ initKeyValue(rb, "TW2Keys", "TW2Values", fModel[index++], error);
+ initKeyValue(rb, "TW3Keys", "TW3Values", fModel[index++], error);
+ initKeyValue(rb, "TW4Keys", "TW4Values", fModel[index++], error);
+ fNegativeSum /= 2;
+}
+
+void MlBreakEngine::initKeyValue(UResourceBundle *rb, const char *keyName, const char *valueName,
+ Hashtable &model, UErrorCode &error) {
+ int32_t keySize = 0;
+ int32_t valueSize = 0;
+ int32_t stringLength = 0;
+ UnicodeString key;
+ StackUResourceBundle stackTempBundle;
+ ResourceDataValue modelKey;
+
+ // get modelValues
+ LocalUResourceBundlePointer modelValue(ures_getByKey(rb, valueName, nullptr, &error));
+ const int32_t *value = ures_getIntVector(modelValue.getAlias(), &valueSize, &error);
+ if (U_FAILURE(error)) return;
+
+ // get modelKeys
+ ures_getValueWithFallback(rb, keyName, stackTempBundle.getAlias(), modelKey, error);
+ ResourceArray stringArray = modelKey.getArray(error);
+ keySize = stringArray.getSize();
+ if (U_FAILURE(error)) return;
+
+ for (int32_t idx = 0; idx < keySize; idx++) {
+ stringArray.getValue(idx, modelKey);
+ key = UnicodeString(modelKey.getString(stringLength, error));
+ if (U_SUCCESS(error)) {
+ U_ASSERT(idx < valueSize);
+ fNegativeSum -= value[idx];
+ model.puti(key, value[idx], error);
+ }
+ }
+}
+
+U_NAMESPACE_END
+
+#endif /* #if !UCONFIG_NO_BREAK_ITERATION */
diff --git a/Build/source/libs/icu/icu-src/source/common/mlbe.h b/Build/source/libs/icu/icu-src/source/common/mlbe.h
new file mode 100644
index 00000000000..38de47e5f57
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/common/mlbe.h
@@ -0,0 +1,116 @@
+// © 2022 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#ifndef MLBREAKENGINE_H
+#define MLBREAKENGINE_H
+
+#include "hash.h"
+#include "unicode/resbund.h"
+#include "unicode/uniset.h"
+#include "unicode/utext.h"
+#include "uvectr32.h"
+
+U_NAMESPACE_BEGIN
+
+#if !UCONFIG_NO_BREAK_ITERATION
+
+/**
+ * A machine learning break engine for the phrase breaking in Japanese.
+ */
+class MlBreakEngine : public UMemory {
+ public:
+ /**
+ * Constructor.
+ *
+ * @param digitOrOpenPunctuationOrAlphabetSet An UnicodeSet with the digit, open punctuation and
+ * alphabet.
+ * @param closePunctuationSet An UnicodeSet with close punctuation.
+ * @param status Information on any errors encountered.
+ */
+ MlBreakEngine(const UnicodeSet &digitOrOpenPunctuationOrAlphabetSet,
+ const UnicodeSet &closePunctuationSet, UErrorCode &status);
+
+ /**
+ * Virtual destructor.
+ */
+ virtual ~MlBreakEngine();
+
+ public:
+ /**
+ * Divide up a range of characters handled by this break engine.
+ *
+ * @param inText A UText representing the text
+ * @param rangeStart The start of the range of the characters
+ * @param rangeEnd The end of the range of the characters
+ * @param foundBreaks Output of C array of int32_t break positions, or 0
+ * @param inString The normalized string of text ranging from rangeStart to rangeEnd
+ * @param inputMap The vector storing the native index of inText
+ * @param status Information on any errors encountered.
+ * @return The number of breaks found
+ */
+ int32_t divideUpRange(UText *inText, int32_t rangeStart, int32_t rangeEnd,
+ UVector32 &foundBreaks, const UnicodeString &inString,
+ const LocalPointer<UVector32> &inputMap, UErrorCode &status) const;
+
+ private:
+ /**
+ * Load the machine learning's model file.
+ *
+ * @param error Information on any errors encountered.
+ */
+ void loadMLModel(UErrorCode &error);
+
+ /**
+ * In the machine learning's model file, specify the name of the key and value to load the
+ * corresponding feature and its score.
+ *
+ * @param rb A ResouceBundle corresponding to the model file.
+ * @param keyName The kay name in the model file.
+ * @param valueName The value name in the model file.
+ * @param model A hashtable to store the pairs of the feature and its score.
+ * @param error Information on any errors encountered.
+ */
+ void initKeyValue(UResourceBundle *rb, const char *keyName, const char *valueName,
+ Hashtable &model, UErrorCode &error);
+
+ /**
+ * Initialize the index list from the input string.
+ *
+ * @param inString A input string to be segmented.
+ * @param indexList A code unit index list of inString.
+ * @param status Information on any errors encountered.
+ * @return The number of code units of the first four characters in inString.
+ */
+ int32_t initIndexList(const UnicodeString &inString, int32_t *indexList,
+ UErrorCode &status) const;
+
+ /**
+ * Evaluate whether the index is a potential breakpoint.
+ *
+ * @param inString A input string to be segmented.
+ * @param indexList A code unit index list of the inString.
+ * @param startIdx The start index of the indexList.
+ * @param numCodeUnits The current code unit boundary of the indexList.
+ * @param numBreaks The accumulated number of breakpoints.
+ * @param boundary A vector including the index of the breakpoint.
+ * @param status Information on any errors encountered.
+ * @return The number of breakpoints
+ */
+ int32_t evaluateBreakpoint(const UnicodeString &inString, int32_t *indexList, int32_t startIdx,
+ int32_t numCodeUnits, int32_t numBreaks, UVector32 &boundary,
+ UErrorCode &status) const;
+
+ void printUnicodeString(const UnicodeString &s) const;
+
+ UnicodeSet fDigitOrOpenPunctuationOrAlphabetSet;
+ UnicodeSet fClosePunctuationSet;
+ Hashtable fModel[13]; // {UW1, UW2, ... UW6, BW1, ... BW3, TW1, TW2, ... TW4} 6+3+4= 13
+ int32_t fNegativeSum;
+};
+
+#endif
+
+U_NAMESPACE_END
+
+/* MLBREAKENGINE_H */
+#endif
diff --git a/Build/source/libs/icu/icu-src/source/common/norm2_nfc_data.h b/Build/source/libs/icu/icu-src/source/common/norm2_nfc_data.h
index ebe3e6ba906..3dada06c573 100644
--- a/Build/source/libs/icu/icu-src/source/common/norm2_nfc_data.h
+++ b/Build/source/libs/icu/icu-src/source/common/norm2_nfc_data.h
@@ -10,7 +10,7 @@
#ifdef INCLUDED_FROM_NORMALIZER2_CPP
static const UVersionInfo norm2_nfc_data_formatVersion={4,0,0,0};
-static const UVersionInfo norm2_nfc_data_dataVersion={0xf,0,0,0};
+static const UVersionInfo norm2_nfc_data_dataVersion={0xf,1,0,0};
static const int32_t norm2_nfc_data_indexes[Normalizer2Impl::IX_COUNT]={
0x50,0x4cb8,0x8920,0x8a20,0x8a20,0x8a20,0x8a20,0x8a20,0xc0,0x300,0xae2,0x29e0,0x3c66,0xfc00,0x1288,0x3b9c,
diff --git a/Build/source/libs/icu/icu-src/source/common/norm2allmodes.h b/Build/source/libs/icu/icu-src/source/common/norm2allmodes.h
index 584835da57b..a2cfc89c1a8 100644
--- a/Build/source/libs/icu/icu-src/source/common/norm2allmodes.h
+++ b/Build/source/libs/icu/icu-src/source/common/norm2allmodes.h
@@ -38,13 +38,13 @@ public:
virtual UnicodeString &
normalize(const UnicodeString &src,
UnicodeString &dest,
- UErrorCode &errorCode) const U_OVERRIDE {
+ UErrorCode &errorCode) const override {
if(U_FAILURE(errorCode)) {
dest.setToBogus();
return dest;
}
- const UChar *sArray=src.getBuffer();
- if(&dest==&src || sArray==NULL) {
+ const char16_t *sArray=src.getBuffer();
+ if(&dest==&src || sArray==nullptr) {
errorCode=U_ILLEGAL_ARGUMENT_ERROR;
dest.setToBogus();
return dest;
@@ -57,20 +57,20 @@ public:
return dest;
}
virtual void
- normalize(const UChar *src, const UChar *limit,
+ normalize(const char16_t *src, const char16_t *limit,
ReorderingBuffer &buffer, UErrorCode &errorCode) const = 0;
// normalize and append
virtual UnicodeString &
normalizeSecondAndAppend(UnicodeString &first,
const UnicodeString &second,
- UErrorCode &errorCode) const U_OVERRIDE {
+ UErrorCode &errorCode) const override {
return normalizeSecondAndAppend(first, second, true, errorCode);
}
virtual UnicodeString &
append(UnicodeString &first,
const UnicodeString &second,
- UErrorCode &errorCode) const U_OVERRIDE {
+ UErrorCode &errorCode) const override {
return normalizeSecondAndAppend(first, second, false, errorCode);
}
UnicodeString &
@@ -82,8 +82,8 @@ public:
if(U_FAILURE(errorCode)) {
return first;
}
- const UChar *secondArray=second.getBuffer();
- if(&first==&second || secondArray==NULL) {
+ const char16_t *secondArray=second.getBuffer();
+ if(&first==&second || secondArray==nullptr) {
errorCode=U_ILLEGAL_ARGUMENT_ERROR;
return first;
}
@@ -103,15 +103,15 @@ public:
return first;
}
virtual void
- normalizeAndAppend(const UChar *src, const UChar *limit, UBool doNormalize,
+ normalizeAndAppend(const char16_t *src, const char16_t *limit, UBool doNormalize,
UnicodeString &safeMiddle,
ReorderingBuffer &buffer, UErrorCode &errorCode) const = 0;
virtual UBool
- getDecomposition(UChar32 c, UnicodeString &decomposition) const U_OVERRIDE {
- UChar buffer[4];
+ getDecomposition(UChar32 c, UnicodeString &decomposition) const override {
+ char16_t buffer[4];
int32_t length;
- const UChar *d=impl.getDecomposition(c, buffer, length);
- if(d==NULL) {
+ const char16_t *d=impl.getDecomposition(c, buffer, length);
+ if(d==nullptr) {
return false;
}
if(d==buffer) {
@@ -122,11 +122,11 @@ public:
return true;
}
virtual UBool
- getRawDecomposition(UChar32 c, UnicodeString &decomposition) const U_OVERRIDE {
- UChar buffer[30];
+ getRawDecomposition(UChar32 c, UnicodeString &decomposition) const override {
+ char16_t buffer[30];
int32_t length;
- const UChar *d=impl.getRawDecomposition(c, buffer, length);
- if(d==NULL) {
+ const char16_t *d=impl.getRawDecomposition(c, buffer, length);
+ if(d==nullptr) {
return false;
}
if(d==buffer) {
@@ -137,47 +137,47 @@ public:
return true;
}
virtual UChar32
- composePair(UChar32 a, UChar32 b) const U_OVERRIDE {
+ composePair(UChar32 a, UChar32 b) const override {
return impl.composePair(a, b);
}
virtual uint8_t
- getCombiningClass(UChar32 c) const U_OVERRIDE {
+ getCombiningClass(UChar32 c) const override {
return impl.getCC(impl.getNorm16(c));
}
// quick checks
virtual UBool
- isNormalized(const UnicodeString &s, UErrorCode &errorCode) const U_OVERRIDE {
+ isNormalized(const UnicodeString &s, UErrorCode &errorCode) const override {
if(U_FAILURE(errorCode)) {
return false;
}
- const UChar *sArray=s.getBuffer();
- if(sArray==NULL) {
+ const char16_t *sArray=s.getBuffer();
+ if(sArray==nullptr) {
errorCode=U_ILLEGAL_ARGUMENT_ERROR;
return false;
}
- const UChar *sLimit=sArray+s.length();
+ const char16_t *sLimit=sArray+s.length();
return sLimit==spanQuickCheckYes(sArray, sLimit, errorCode);
}
virtual UNormalizationCheckResult
- quickCheck(const UnicodeString &s, UErrorCode &errorCode) const U_OVERRIDE {
+ quickCheck(const UnicodeString &s, UErrorCode &errorCode) const override {
return Normalizer2WithImpl::isNormalized(s, errorCode) ? UNORM_YES : UNORM_NO;
}
virtual int32_t
- spanQuickCheckYes(const UnicodeString &s, UErrorCode &errorCode) const U_OVERRIDE {
+ spanQuickCheckYes(const UnicodeString &s, UErrorCode &errorCode) const override {
if(U_FAILURE(errorCode)) {
return 0;
}
- const UChar *sArray=s.getBuffer();
- if(sArray==NULL) {
+ const char16_t *sArray=s.getBuffer();
+ if(sArray==nullptr) {
errorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
return (int32_t)(spanQuickCheckYes(sArray, sArray+s.length(), errorCode)-sArray);
}
- virtual const UChar *
- spanQuickCheckYes(const UChar *src, const UChar *limit, UErrorCode &errorCode) const = 0;
+ virtual const char16_t *
+ spanQuickCheckYes(const char16_t *src, const char16_t *limit, UErrorCode &errorCode) const = 0;
virtual UNormalizationCheckResult getQuickCheck(UChar32) const {
return UNORM_YES;
@@ -193,21 +193,21 @@ public:
private:
virtual void
- normalize(const UChar *src, const UChar *limit,
- ReorderingBuffer &buffer, UErrorCode &errorCode) const U_OVERRIDE {
+ normalize(const char16_t *src, const char16_t *limit,
+ ReorderingBuffer &buffer, UErrorCode &errorCode) const override {
impl.decompose(src, limit, &buffer, errorCode);
}
using Normalizer2WithImpl::normalize; // Avoid warning about hiding base class function.
virtual void
- normalizeAndAppend(const UChar *src, const UChar *limit, UBool doNormalize,
+ normalizeAndAppend(const char16_t *src, const char16_t *limit, UBool doNormalize,
UnicodeString &safeMiddle,
- ReorderingBuffer &buffer, UErrorCode &errorCode) const U_OVERRIDE {
+ ReorderingBuffer &buffer, UErrorCode &errorCode) const override {
impl.decomposeAndAppend(src, limit, doNormalize, safeMiddle, buffer, errorCode);
}
void
normalizeUTF8(uint32_t options, StringPiece src, ByteSink &sink,
- Edits *edits, UErrorCode &errorCode) const U_OVERRIDE {
+ Edits *edits, UErrorCode &errorCode) const override {
if (U_FAILURE(errorCode)) {
return;
}
@@ -219,7 +219,7 @@ private:
sink.Flush();
}
virtual UBool
- isNormalizedUTF8(StringPiece sp, UErrorCode &errorCode) const U_OVERRIDE {
+ isNormalizedUTF8(StringPiece sp, UErrorCode &errorCode) const override {
if(U_FAILURE(errorCode)) {
return false;
}
@@ -228,21 +228,21 @@ private:
return sLimit == impl.decomposeUTF8(0, s, sLimit, nullptr, nullptr, errorCode);
}
- virtual const UChar *
- spanQuickCheckYes(const UChar *src, const UChar *limit, UErrorCode &errorCode) const U_OVERRIDE {
- return impl.decompose(src, limit, NULL, errorCode);
+ virtual const char16_t *
+ spanQuickCheckYes(const char16_t *src, const char16_t *limit, UErrorCode &errorCode) const override {
+ return impl.decompose(src, limit, nullptr, errorCode);
}
using Normalizer2WithImpl::spanQuickCheckYes; // Avoid warning about hiding base class function.
- virtual UNormalizationCheckResult getQuickCheck(UChar32 c) const U_OVERRIDE {
+ virtual UNormalizationCheckResult getQuickCheck(UChar32 c) const override {
return impl.isDecompYes(impl.getNorm16(c)) ? UNORM_YES : UNORM_NO;
}
- virtual UBool hasBoundaryBefore(UChar32 c) const U_OVERRIDE {
+ virtual UBool hasBoundaryBefore(UChar32 c) const override {
return impl.hasDecompBoundaryBefore(c);
}
- virtual UBool hasBoundaryAfter(UChar32 c) const U_OVERRIDE {
+ virtual UBool hasBoundaryAfter(UChar32 c) const override {
return impl.hasDecompBoundaryAfter(c);
}
- virtual UBool isInert(UChar32 c) const U_OVERRIDE {
+ virtual UBool isInert(UChar32 c) const override {
return impl.isDecompInert(c);
}
};
@@ -255,15 +255,15 @@ public:
private:
virtual void
- normalize(const UChar *src, const UChar *limit,
- ReorderingBuffer &buffer, UErrorCode &errorCode) const U_OVERRIDE {
+ normalize(const char16_t *src, const char16_t *limit,
+ ReorderingBuffer &buffer, UErrorCode &errorCode) const override {
impl.compose(src, limit, onlyContiguous, true, buffer, errorCode);
}
using Normalizer2WithImpl::normalize; // Avoid warning about hiding base class function.
void
normalizeUTF8(uint32_t options, StringPiece src, ByteSink &sink,
- Edits *edits, UErrorCode &errorCode) const U_OVERRIDE {
+ Edits *edits, UErrorCode &errorCode) const override {
if (U_FAILURE(errorCode)) {
return;
}
@@ -277,19 +277,19 @@ private:
}
virtual void
- normalizeAndAppend(const UChar *src, const UChar *limit, UBool doNormalize,
+ normalizeAndAppend(const char16_t *src, const char16_t *limit, UBool doNormalize,
UnicodeString &safeMiddle,
- ReorderingBuffer &buffer, UErrorCode &errorCode) const U_OVERRIDE {
+ ReorderingBuffer &buffer, UErrorCode &errorCode) const override {
impl.composeAndAppend(src, limit, doNormalize, onlyContiguous, safeMiddle, buffer, errorCode);
}
virtual UBool
- isNormalized(const UnicodeString &s, UErrorCode &errorCode) const U_OVERRIDE {
+ isNormalized(const UnicodeString &s, UErrorCode &errorCode) const override {
if(U_FAILURE(errorCode)) {
return false;
}
- const UChar *sArray=s.getBuffer();
- if(sArray==NULL) {
+ const char16_t *sArray=s.getBuffer();
+ if(sArray==nullptr) {
errorCode=U_ILLEGAL_ARGUMENT_ERROR;
return false;
}
@@ -301,7 +301,7 @@ private:
return impl.compose(sArray, sArray+s.length(), onlyContiguous, false, buffer, errorCode);
}
virtual UBool
- isNormalizedUTF8(StringPiece sp, UErrorCode &errorCode) const U_OVERRIDE {
+ isNormalizedUTF8(StringPiece sp, UErrorCode &errorCode) const override {
if(U_FAILURE(errorCode)) {
return false;
}
@@ -309,12 +309,12 @@ private:
return impl.composeUTF8(0, onlyContiguous, s, s + sp.length(), nullptr, nullptr, errorCode);
}
virtual UNormalizationCheckResult
- quickCheck(const UnicodeString &s, UErrorCode &errorCode) const U_OVERRIDE {
+ quickCheck(const UnicodeString &s, UErrorCode &errorCode) const override {
if(U_FAILURE(errorCode)) {
return UNORM_MAYBE;
}
- const UChar *sArray=s.getBuffer();
- if(sArray==NULL) {
+ const char16_t *sArray=s.getBuffer();
+ if(sArray==nullptr) {
errorCode=U_ILLEGAL_ARGUMENT_ERROR;
return UNORM_MAYBE;
}
@@ -322,21 +322,21 @@ private:
impl.composeQuickCheck(sArray, sArray+s.length(), onlyContiguous, &qcResult);
return qcResult;
}
- virtual const UChar *
- spanQuickCheckYes(const UChar *src, const UChar *limit, UErrorCode &) const U_OVERRIDE {
- return impl.composeQuickCheck(src, limit, onlyContiguous, NULL);
+ virtual const char16_t *
+ spanQuickCheckYes(const char16_t *src, const char16_t *limit, UErrorCode &) const override {
+ return impl.composeQuickCheck(src, limit, onlyContiguous, nullptr);
}
using Normalizer2WithImpl::spanQuickCheckYes; // Avoid warning about hiding base class function.
- virtual UNormalizationCheckResult getQuickCheck(UChar32 c) const U_OVERRIDE {
+ virtual UNormalizationCheckResult getQuickCheck(UChar32 c) const override {
return impl.getCompQuickCheck(impl.getNorm16(c));
}
- virtual UBool hasBoundaryBefore(UChar32 c) const U_OVERRIDE {
+ virtual UBool hasBoundaryBefore(UChar32 c) const override {
return impl.hasCompBoundaryBefore(c);
}
- virtual UBool hasBoundaryAfter(UChar32 c) const U_OVERRIDE {
+ virtual UBool hasBoundaryAfter(UChar32 c) const override {
return impl.hasCompBoundaryAfter(c, onlyContiguous);
}
- virtual UBool isInert(UChar32 c) const U_OVERRIDE {
+ virtual UBool isInert(UChar32 c) const override {
return impl.isCompInert(c, onlyContiguous);
}
@@ -350,29 +350,29 @@ public:
private:
virtual void
- normalize(const UChar *src, const UChar *limit,
- ReorderingBuffer &buffer, UErrorCode &errorCode) const U_OVERRIDE {
+ normalize(const char16_t *src, const char16_t *limit,
+ ReorderingBuffer &buffer, UErrorCode &errorCode) const override {
impl.makeFCD(src, limit, &buffer, errorCode);
}
using Normalizer2WithImpl::normalize; // Avoid warning about hiding base class function.
virtual void
- normalizeAndAppend(const UChar *src, const UChar *limit, UBool doNormalize,
+ normalizeAndAppend(const char16_t *src, const char16_t *limit, UBool doNormalize,
UnicodeString &safeMiddle,
- ReorderingBuffer &buffer, UErrorCode &errorCode) const U_OVERRIDE {
+ ReorderingBuffer &buffer, UErrorCode &errorCode) const override {
impl.makeFCDAndAppend(src, limit, doNormalize, safeMiddle, buffer, errorCode);
}
- virtual const UChar *
- spanQuickCheckYes(const UChar *src, const UChar *limit, UErrorCode &errorCode) const U_OVERRIDE {
- return impl.makeFCD(src, limit, NULL, errorCode);
+ virtual const char16_t *
+ spanQuickCheckYes(const char16_t *src, const char16_t *limit, UErrorCode &errorCode) const override {
+ return impl.makeFCD(src, limit, nullptr, errorCode);
}
using Normalizer2WithImpl::spanQuickCheckYes; // Avoid warning about hiding base class function.
- virtual UBool hasBoundaryBefore(UChar32 c) const U_OVERRIDE {
+ virtual UBool hasBoundaryBefore(UChar32 c) const override {
return impl.hasFCDBoundaryBefore(c);
}
- virtual UBool hasBoundaryAfter(UChar32 c) const U_OVERRIDE {
+ virtual UBool hasBoundaryAfter(UChar32 c) const override {
return impl.hasFCDBoundaryAfter(c);
}
- virtual UBool isInert(UChar32 c) const U_OVERRIDE {
+ virtual UBool isInert(UChar32 c) const override {
return impl.isFCDInert(c);
}
};
@@ -391,6 +391,7 @@ struct Norm2AllModes : public UMemory {
static const Norm2AllModes *getNFCInstance(UErrorCode &errorCode);
static const Norm2AllModes *getNFKCInstance(UErrorCode &errorCode);
static const Norm2AllModes *getNFKC_CFInstance(UErrorCode &errorCode);
+ static const Norm2AllModes *getNFKC_SCFInstance(UErrorCode &errorCode);
Normalizer2Impl *impl;
ComposeNormalizer2 comp;
diff --git a/Build/source/libs/icu/icu-src/source/common/normalizer2.cpp b/Build/source/libs/icu/icu-src/source/common/normalizer2.cpp
index 3617264490e..6856736b888 100644
--- a/Build/source/libs/icu/icu-src/source/common/normalizer2.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/normalizer2.cpp
@@ -87,7 +87,7 @@ class NoopNormalizer2 : public Normalizer2 {
virtual UnicodeString &
normalize(const UnicodeString &src,
UnicodeString &dest,
- UErrorCode &errorCode) const U_OVERRIDE {
+ UErrorCode &errorCode) const override {
if(U_SUCCESS(errorCode)) {
if(&dest!=&src) {
dest=src;
@@ -99,7 +99,7 @@ class NoopNormalizer2 : public Normalizer2 {
}
virtual void
normalizeUTF8(uint32_t options, StringPiece src, ByteSink &sink,
- Edits *edits, UErrorCode &errorCode) const U_OVERRIDE {
+ Edits *edits, UErrorCode &errorCode) const override {
if(U_SUCCESS(errorCode)) {
if (edits != nullptr) {
if ((options & U_EDITS_NO_RESET) == 0) {
@@ -117,7 +117,7 @@ class NoopNormalizer2 : public Normalizer2 {
virtual UnicodeString &
normalizeSecondAndAppend(UnicodeString &first,
const UnicodeString &second,
- UErrorCode &errorCode) const U_OVERRIDE {
+ UErrorCode &errorCode) const override {
if(U_SUCCESS(errorCode)) {
if(&first!=&second) {
first.append(second);
@@ -130,7 +130,7 @@ class NoopNormalizer2 : public Normalizer2 {
virtual UnicodeString &
append(UnicodeString &first,
const UnicodeString &second,
- UErrorCode &errorCode) const U_OVERRIDE {
+ UErrorCode &errorCode) const override {
if(U_SUCCESS(errorCode)) {
if(&first!=&second) {
first.append(second);
@@ -141,29 +141,29 @@ class NoopNormalizer2 : public Normalizer2 {
return first;
}
virtual UBool
- getDecomposition(UChar32, UnicodeString &) const U_OVERRIDE {
+ getDecomposition(UChar32, UnicodeString &) const override {
return false;
}
- // No need to U_OVERRIDE the default getRawDecomposition().
+ // No need to override the default getRawDecomposition().
virtual UBool
- isNormalized(const UnicodeString &, UErrorCode &errorCode) const U_OVERRIDE {
+ isNormalized(const UnicodeString &, UErrorCode &errorCode) const override {
return U_SUCCESS(errorCode);
}
virtual UBool
- isNormalizedUTF8(StringPiece, UErrorCode &errorCode) const U_OVERRIDE {
+ isNormalizedUTF8(StringPiece, UErrorCode &errorCode) const override {
return U_SUCCESS(errorCode);
}
virtual UNormalizationCheckResult
- quickCheck(const UnicodeString &, UErrorCode &) const U_OVERRIDE {
+ quickCheck(const UnicodeString &, UErrorCode &) const override {
return UNORM_YES;
}
virtual int32_t
- spanQuickCheckYes(const UnicodeString &s, UErrorCode &) const U_OVERRIDE {
+ spanQuickCheckYes(const UnicodeString &s, UErrorCode &) const override {
return s.length();
}
- virtual UBool hasBoundaryBefore(UChar32) const U_OVERRIDE { return true; }
- virtual UBool hasBoundaryAfter(UChar32) const U_OVERRIDE { return true; }
- virtual UBool isInert(UChar32) const U_OVERRIDE { return true; }
+ virtual UBool hasBoundaryBefore(UChar32) const override { return true; }
+ virtual UBool hasBoundaryAfter(UChar32) const override { return true; }
+ virtual UBool isInert(UChar32) const override { return true; }
};
NoopNormalizer2::~NoopNormalizer2() {}
@@ -190,7 +190,7 @@ static void U_CALLCONV initNoopSingleton(UErrorCode &errorCode) {
return;
}
noopSingleton=new NoopNormalizer2;
- if(noopSingleton==NULL) {
+ if(noopSingleton==nullptr) {
errorCode=U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -198,7 +198,7 @@ static void U_CALLCONV initNoopSingleton(UErrorCode &errorCode) {
}
const Normalizer2 *Normalizer2Factory::getNoopInstance(UErrorCode &errorCode) {
- if(U_FAILURE(errorCode)) { return NULL; }
+ if(U_FAILURE(errorCode)) { return nullptr; }
umtx_initOnce(noopInitOnce, &initNoopSingleton, errorCode);
return noopSingleton;
}
@@ -216,13 +216,13 @@ Norm2AllModes *
Norm2AllModes::createInstance(Normalizer2Impl *impl, UErrorCode &errorCode) {
if(U_FAILURE(errorCode)) {
delete impl;
- return NULL;
+ return nullptr;
}
Norm2AllModes *allModes=new Norm2AllModes(impl);
- if(allModes==NULL) {
+ if(allModes==nullptr) {
errorCode=U_MEMORY_ALLOCATION_ERROR;
delete impl;
- return NULL;
+ return nullptr;
}
return allModes;
}
@@ -231,12 +231,12 @@ Norm2AllModes::createInstance(Normalizer2Impl *impl, UErrorCode &errorCode) {
Norm2AllModes *
Norm2AllModes::createNFCInstance(UErrorCode &errorCode) {
if(U_FAILURE(errorCode)) {
- return NULL;
+ return nullptr;
}
Normalizer2Impl *impl=new Normalizer2Impl;
- if(impl==NULL) {
+ if(impl==nullptr) {
errorCode=U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
impl->init(norm2_nfc_data_indexes, &norm2_nfc_data_trie,
norm2_nfc_data_extraData, norm2_nfc_data_smallFCD);
@@ -254,7 +254,7 @@ static void U_CALLCONV initNFCSingleton(UErrorCode &errorCode) {
const Norm2AllModes *
Norm2AllModes::getNFCInstance(UErrorCode &errorCode) {
- if(U_FAILURE(errorCode)) { return NULL; }
+ if(U_FAILURE(errorCode)) { return nullptr; }
umtx_initOnce(nfcInitOnce, &initNFCSingleton, errorCode);
return nfcSingleton;
}
@@ -262,29 +262,29 @@ Norm2AllModes::getNFCInstance(UErrorCode &errorCode) {
const Normalizer2 *
Normalizer2::getNFCInstance(UErrorCode &errorCode) {
const Norm2AllModes *allModes=Norm2AllModes::getNFCInstance(errorCode);
- return allModes!=NULL ? &allModes->comp : NULL;
+ return allModes!=nullptr ? &allModes->comp : nullptr;
}
const Normalizer2 *
Normalizer2::getNFDInstance(UErrorCode &errorCode) {
const Norm2AllModes *allModes=Norm2AllModes::getNFCInstance(errorCode);
- return allModes!=NULL ? &allModes->decomp : NULL;
+ return allModes!=nullptr ? &allModes->decomp : nullptr;
}
const Normalizer2 *Normalizer2Factory::getFCDInstance(UErrorCode &errorCode) {
const Norm2AllModes *allModes=Norm2AllModes::getNFCInstance(errorCode);
- return allModes!=NULL ? &allModes->fcd : NULL;
+ return allModes!=nullptr ? &allModes->fcd : nullptr;
}
const Normalizer2 *Normalizer2Factory::getFCCInstance(UErrorCode &errorCode) {
const Norm2AllModes *allModes=Norm2AllModes::getNFCInstance(errorCode);
- return allModes!=NULL ? &allModes->fcc : NULL;
+ return allModes!=nullptr ? &allModes->fcc : nullptr;
}
const Normalizer2Impl *
Normalizer2Factory::getNFCImpl(UErrorCode &errorCode) {
const Norm2AllModes *allModes=Norm2AllModes::getNFCInstance(errorCode);
- return allModes!=NULL ? allModes->impl : NULL;
+ return allModes!=nullptr ? allModes->impl : nullptr;
}
#endif // NORM2_HARDCODE_NFC_DATA
@@ -292,11 +292,11 @@ U_CDECL_BEGIN
static UBool U_CALLCONV uprv_normalizer2_cleanup() {
delete noopSingleton;
- noopSingleton = NULL;
+ noopSingleton = nullptr;
noopInitOnce.reset();
#if NORM2_HARDCODE_NFC_DATA
delete nfcSingleton;
- nfcSingleton = NULL;
+ nfcSingleton = nullptr;
nfcInitOnce.reset();
#endif
return true;
@@ -327,29 +327,29 @@ unorm2_close(UNormalizer2 *norm2) {
U_CAPI int32_t U_EXPORT2
unorm2_normalize(const UNormalizer2 *norm2,
- const UChar *src, int32_t length,
- UChar *dest, int32_t capacity,
+ const char16_t *src, int32_t length,
+ char16_t *dest, int32_t capacity,
UErrorCode *pErrorCode) {
if(U_FAILURE(*pErrorCode)) {
return 0;
}
- if( (src==NULL ? length!=0 : length<-1) ||
- (dest==NULL ? capacity!=0 : capacity<0) ||
- (src==dest && src!=NULL)
+ if( (src==nullptr ? length!=0 : length<-1) ||
+ (dest==nullptr ? capacity!=0 : capacity<0) ||
+ (src==dest && src!=nullptr)
) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
UnicodeString destString(dest, 0, capacity);
- // length==0: Nothing to do, and n2wi->normalize(NULL, NULL, buffer, ...) would crash.
+ // length==0: Nothing to do, and n2wi->normalize(nullptr, nullptr, buffer, ...) would crash.
if(length!=0) {
const Normalizer2 *n2=(const Normalizer2 *)norm2;
const Normalizer2WithImpl *n2wi=dynamic_cast<const Normalizer2WithImpl *>(n2);
- if(n2wi!=NULL) {
+ if(n2wi!=nullptr) {
// Avoid duplicate argument checking and support NUL-terminated src.
ReorderingBuffer buffer(n2wi->impl, destString);
if(buffer.init(length, *pErrorCode)) {
- n2wi->normalize(src, length>=0 ? src+length : NULL, buffer, *pErrorCode);
+ n2wi->normalize(src, length>=0 ? src+length : nullptr, buffer, *pErrorCode);
}
} else {
UnicodeString srcString(length<0, src, length);
@@ -361,34 +361,34 @@ unorm2_normalize(const UNormalizer2 *norm2,
static int32_t
normalizeSecondAndAppend(const UNormalizer2 *norm2,
- UChar *first, int32_t firstLength, int32_t firstCapacity,
- const UChar *second, int32_t secondLength,
+ char16_t *first, int32_t firstLength, int32_t firstCapacity,
+ const char16_t *second, int32_t secondLength,
UBool doNormalize,
UErrorCode *pErrorCode) {
if(U_FAILURE(*pErrorCode)) {
return 0;
}
- if( (second==NULL ? secondLength!=0 : secondLength<-1) ||
- (first==NULL ? (firstCapacity!=0 || firstLength!=0) :
+ if( (second==nullptr ? secondLength!=0 : secondLength<-1) ||
+ (first==nullptr ? (firstCapacity!=0 || firstLength!=0) :
(firstCapacity<0 || firstLength<-1)) ||
- (first==second && first!=NULL)
+ (first==second && first!=nullptr)
) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
UnicodeString firstString(first, firstLength, firstCapacity);
firstLength=firstString.length(); // In case it was -1.
- // secondLength==0: Nothing to do, and n2wi->normalizeAndAppend(NULL, NULL, buffer, ...) would crash.
+ // secondLength==0: Nothing to do, and n2wi->normalizeAndAppend(nullptr, nullptr, buffer, ...) would crash.
if(secondLength!=0) {
const Normalizer2 *n2=(const Normalizer2 *)norm2;
const Normalizer2WithImpl *n2wi=dynamic_cast<const Normalizer2WithImpl *>(n2);
- if(n2wi!=NULL) {
+ if(n2wi!=nullptr) {
// Avoid duplicate argument checking and support NUL-terminated src.
UnicodeString safeMiddle;
{
ReorderingBuffer buffer(n2wi->impl, firstString);
if(buffer.init(firstLength+secondLength+1, *pErrorCode)) { // destCapacity>=-1
- n2wi->normalizeAndAppend(second, secondLength>=0 ? second+secondLength : NULL,
+ n2wi->normalizeAndAppend(second, secondLength>=0 ? second+secondLength : nullptr,
doNormalize, safeMiddle, buffer, *pErrorCode);
}
} // The ReorderingBuffer destructor finalizes firstString.
@@ -396,7 +396,7 @@ normalizeSecondAndAppend(const UNormalizer2 *norm2,
// Restore the modified suffix of the first string.
// This does not restore first[] array contents between firstLength and firstCapacity.
// (That might be uninitialized memory, as far as we know.)
- if(first!=NULL) { /* don't dereference NULL */
+ if(first!=nullptr) { /* don't dereference nullptr */
safeMiddle.extract(0, 0x7fffffff, first+firstLength-safeMiddle.length());
if(firstLength<firstCapacity) {
first[firstLength]=0; // NUL-terminate in case it was originally.
@@ -417,8 +417,8 @@ normalizeSecondAndAppend(const UNormalizer2 *norm2,
U_CAPI int32_t U_EXPORT2
unorm2_normalizeSecondAndAppend(const UNormalizer2 *norm2,
- UChar *first, int32_t firstLength, int32_t firstCapacity,
- const UChar *second, int32_t secondLength,
+ char16_t *first, int32_t firstLength, int32_t firstCapacity,
+ const char16_t *second, int32_t secondLength,
UErrorCode *pErrorCode) {
return normalizeSecondAndAppend(norm2,
first, firstLength, firstCapacity,
@@ -428,8 +428,8 @@ unorm2_normalizeSecondAndAppend(const UNormalizer2 *norm2,
U_CAPI int32_t U_EXPORT2
unorm2_append(const UNormalizer2 *norm2,
- UChar *first, int32_t firstLength, int32_t firstCapacity,
- const UChar *second, int32_t secondLength,
+ char16_t *first, int32_t firstLength, int32_t firstCapacity,
+ const char16_t *second, int32_t secondLength,
UErrorCode *pErrorCode) {
return normalizeSecondAndAppend(norm2,
first, firstLength, firstCapacity,
@@ -439,12 +439,12 @@ unorm2_append(const UNormalizer2 *norm2,
U_CAPI int32_t U_EXPORT2
unorm2_getDecomposition(const UNormalizer2 *norm2,
- UChar32 c, UChar *decomposition, int32_t capacity,
+ UChar32 c, char16_t *decomposition, int32_t capacity,
UErrorCode *pErrorCode) {
if(U_FAILURE(*pErrorCode)) {
return 0;
}
- if(decomposition==NULL ? capacity!=0 : capacity<0) {
+ if(decomposition==nullptr ? capacity!=0 : capacity<0) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -458,12 +458,12 @@ unorm2_getDecomposition(const UNormalizer2 *norm2,
U_CAPI int32_t U_EXPORT2
unorm2_getRawDecomposition(const UNormalizer2 *norm2,
- UChar32 c, UChar *decomposition, int32_t capacity,
+ UChar32 c, char16_t *decomposition, int32_t capacity,
UErrorCode *pErrorCode) {
if(U_FAILURE(*pErrorCode)) {
return 0;
}
- if(decomposition==NULL ? capacity!=0 : capacity<0) {
+ if(decomposition==nullptr ? capacity!=0 : capacity<0) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -487,12 +487,12 @@ unorm2_getCombiningClass(const UNormalizer2 *norm2, UChar32 c) {
U_CAPI UBool U_EXPORT2
unorm2_isNormalized(const UNormalizer2 *norm2,
- const UChar *s, int32_t length,
+ const char16_t *s, int32_t length,
UErrorCode *pErrorCode) {
if(U_FAILURE(*pErrorCode)) {
return 0;
}
- if((s==NULL && length!=0) || length<-1) {
+ if((s==nullptr && length!=0) || length<-1) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -502,12 +502,12 @@ unorm2_isNormalized(const UNormalizer2 *norm2,
U_CAPI UNormalizationCheckResult U_EXPORT2
unorm2_quickCheck(const UNormalizer2 *norm2,
- const UChar *s, int32_t length,
+ const char16_t *s, int32_t length,
UErrorCode *pErrorCode) {
if(U_FAILURE(*pErrorCode)) {
return UNORM_NO;
}
- if((s==NULL && length!=0) || length<-1) {
+ if((s==nullptr && length!=0) || length<-1) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return UNORM_NO;
}
@@ -517,12 +517,12 @@ unorm2_quickCheck(const UNormalizer2 *norm2,
U_CAPI int32_t U_EXPORT2
unorm2_spanQuickCheckYes(const UNormalizer2 *norm2,
- const UChar *s, int32_t length,
+ const char16_t *s, int32_t length,
UErrorCode *pErrorCode) {
if(U_FAILURE(*pErrorCode)) {
return 0;
}
- if((s==NULL && length!=0) || length<-1) {
+ if((s==nullptr && length!=0) || length<-1) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
diff --git a/Build/source/libs/icu/icu-src/source/common/normalizer2impl.cpp b/Build/source/libs/icu/icu-src/source/common/normalizer2impl.cpp
index d7e05e44d72..cdf570d76bd 100644
--- a/Build/source/libs/icu/icu-src/source/common/normalizer2impl.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/normalizer2impl.cpp
@@ -81,8 +81,8 @@ UChar32 codePointFromValidUTF8(const uint8_t *cpStart, const uint8_t *cpLimit) {
case 2:
return ((c&0x1f)<<6) | (cpStart[1]&0x3f);
case 3:
- // no need for (c&0xf) because the upper bits are truncated after <<12 in the cast to (UChar)
- return (UChar)((c<<12) | ((cpStart[1]&0x3f)<<6) | (cpStart[2]&0x3f));
+ // no need for (c&0xf) because the upper bits are truncated after <<12 in the cast to (char16_t)
+ return (char16_t)((c<<12) | ((cpStart[1]&0x3f)<<6) | (cpStart[2]&0x3f));
case 4:
return ((c&7)<<18) | ((cpStart[1]&0x3f)<<12) | ((cpStart[2]&0x3f)<<6) | (cpStart[3]&0x3f);
default:
@@ -182,7 +182,7 @@ ReorderingBuffer::ReorderingBuffer(const Normalizer2Impl &ni, UnicodeString &des
UBool ReorderingBuffer::init(int32_t destCapacity, UErrorCode &errorCode) {
int32_t length=str.length();
start=str.getBuffer(destCapacity);
- if(start==NULL) {
+ if(start==nullptr) {
// getBuffer() already did str.setToBogus()
errorCode=U_MEMORY_ALLOCATION_ERROR;
return false;
@@ -204,7 +204,7 @@ UBool ReorderingBuffer::init(int32_t destCapacity, UErrorCode &errorCode) {
return true;
}
-UBool ReorderingBuffer::equals(const UChar *otherStart, const UChar *otherLimit) const {
+UBool ReorderingBuffer::equals(const char16_t *otherStart, const char16_t *otherLimit) const {
int32_t length=(int32_t)(limit-start);
return
length==(int32_t)(otherLimit-otherStart) &&
@@ -256,7 +256,7 @@ UBool ReorderingBuffer::appendSupplementary(UChar32 c, uint8_t cc, UErrorCode &e
return true;
}
-UBool ReorderingBuffer::append(const UChar *s, int32_t length, UBool isNFD,
+UBool ReorderingBuffer::append(const char16_t *s, int32_t length, UBool isNFD,
uint8_t leadCC, uint8_t trailCC,
UErrorCode &errorCode) {
if(length==0) {
@@ -272,7 +272,7 @@ UBool ReorderingBuffer::append(const UChar *s, int32_t length, UBool isNFD,
} else if(leadCC<=1) {
reorderStart=limit+1; // Ok if not a code point boundary.
}
- const UChar *sLimit=s+length;
+ const char16_t *sLimit=s+length;
do { *limit++=*s++; } while(s!=sLimit);
lastCC=trailCC;
} else {
@@ -304,7 +304,7 @@ UBool ReorderingBuffer::appendZeroCC(UChar32 c, UErrorCode &errorCode) {
}
remainingCapacity-=cpLength;
if(cpLength==1) {
- *limit++=(UChar)c;
+ *limit++=(char16_t)c;
} else {
limit[0]=U16_LEAD(c);
limit[1]=U16_TRAIL(c);
@@ -315,7 +315,7 @@ UBool ReorderingBuffer::appendZeroCC(UChar32 c, UErrorCode &errorCode) {
return true;
}
-UBool ReorderingBuffer::appendZeroCC(const UChar *s, const UChar *sLimit, UErrorCode &errorCode) {
+UBool ReorderingBuffer::appendZeroCC(const char16_t *s, const char16_t *sLimit, UErrorCode &errorCode) {
if(s==sLimit) {
return true;
}
@@ -362,7 +362,7 @@ UBool ReorderingBuffer::resize(int32_t appendLength, UErrorCode &errorCode) {
newCapacity=256;
}
start=str.getBuffer(newCapacity);
- if(start==NULL) {
+ if(start==nullptr) {
// getBuffer() already did str.setToBogus()
errorCode=U_MEMORY_ALLOCATION_ERROR;
return false;
@@ -375,7 +375,7 @@ UBool ReorderingBuffer::resize(int32_t appendLength, UErrorCode &errorCode) {
void ReorderingBuffer::skipPrevious() {
codePointLimit=codePointStart;
- UChar c=*--codePointStart;
+ char16_t c=*--codePointStart;
if(U16_IS_TRAIL(c) && start<codePointStart && U16_IS_LEAD(*(codePointStart-1))) {
--codePointStart;
}
@@ -387,7 +387,7 @@ uint8_t ReorderingBuffer::previousCC() {
return 0;
}
UChar32 c=*--codePointStart;
- UChar c2;
+ char16_t c2;
if(U16_IS_TRAIL(c) && start<codePointStart && U16_IS_LEAD(c2=*(codePointStart-1))) {
--codePointStart;
c=U16_GET_SUPPLEMENTARY(c2, c);
@@ -400,8 +400,8 @@ uint8_t ReorderingBuffer::previousCC() {
void ReorderingBuffer::insert(UChar32 c, uint8_t cc) {
for(setIterator(), skipPrevious(); previousCC()>cc;) {}
// insert c at codePointLimit, after the character with prevCC<=cc
- UChar *q=limit;
- UChar *r=limit+=U16_LENGTH(c);
+ char16_t *q=limit;
+ char16_t *r=limit+=U16_LENGTH(c);
do {
*--r=*--q;
} while(codePointLimit!=q);
@@ -429,9 +429,9 @@ Normalizer2Impl::~Normalizer2Impl() {
void
Normalizer2Impl::init(const int32_t *inIndexes, const UCPTrie *inTrie,
const uint16_t *inExtraData, const uint8_t *inSmallFCD) {
- minDecompNoCP = static_cast<UChar>(inIndexes[IX_MIN_DECOMP_NO_CP]);
- minCompNoMaybeCP = static_cast<UChar>(inIndexes[IX_MIN_COMP_NO_MAYBE_CP]);
- minLcccCP = static_cast<UChar>(inIndexes[IX_MIN_LCCC_CP]);
+ minDecompNoCP = static_cast<char16_t>(inIndexes[IX_MIN_DECOMP_NO_CP]);
+ minCompNoMaybeCP = static_cast<char16_t>(inIndexes[IX_MIN_COMP_NO_MAYBE_CP]);
+ minLcccCP = static_cast<char16_t>(inIndexes[IX_MIN_LCCC_CP]);
minYesNo = static_cast<uint16_t>(inIndexes[IX_MIN_YES_NO]);
minYesNoMappingsOnly = static_cast<uint16_t>(inIndexes[IX_MIN_YES_NO_MAPPINGS_ONLY]);
@@ -503,7 +503,7 @@ Normalizer2Impl::addPropertyStarts(const USetAdder *sa, UErrorCode & /*errorCode
}
/* add Hangul LV syllables and LV+1 because of skippables */
- for(UChar c=Hangul::HANGUL_BASE; c<Hangul::HANGUL_LIMIT; c+=Hangul::JAMO_T_COUNT) {
+ for(char16_t c=Hangul::HANGUL_BASE; c<Hangul::HANGUL_LIMIT; c+=Hangul::JAMO_T_COUNT) {
sa->add(sa->set, c);
sa->add(sa->set, c+1);
}
@@ -524,8 +524,8 @@ Normalizer2Impl::addCanonIterPropertyStarts(const USetAdder *sa, UErrorCode &err
}
}
-const UChar *
-Normalizer2Impl::copyLowPrefixFromNulTerminated(const UChar *src,
+const char16_t *
+Normalizer2Impl::copyLowPrefixFromNulTerminated(const char16_t *src,
UChar32 minNeedDataCP,
ReorderingBuffer *buffer,
UErrorCode &errorCode) const {
@@ -534,13 +534,13 @@ Normalizer2Impl::copyLowPrefixFromNulTerminated(const UChar *src,
// data and check the first part of the string.
// After this prefix, determine the string length to simplify the rest
// of the code.
- const UChar *prevSrc=src;
- UChar c;
+ const char16_t *prevSrc=src;
+ char16_t c;
while((c=*src++)<minNeedDataCP && c!=0) {}
// Back out the last character for full processing.
// Copy this prefix.
if(--src!=prevSrc) {
- if(buffer!=NULL) {
+ if(buffer!=nullptr) {
buffer->appendZeroCC(prevSrc, src, errorCode);
}
}
@@ -554,8 +554,8 @@ Normalizer2Impl::decompose(const UnicodeString &src, UnicodeString &dest,
dest.setToBogus();
return dest;
}
- const UChar *sArray=src.getBuffer();
- if(&dest==&src || sArray==NULL) {
+ const char16_t *sArray=src.getBuffer();
+ if(&dest==&src || sArray==nullptr) {
errorCode=U_ILLEGAL_ARGUMENT_ERROR;
dest.setToBogus();
return dest;
@@ -565,11 +565,11 @@ Normalizer2Impl::decompose(const UnicodeString &src, UnicodeString &dest,
}
void
-Normalizer2Impl::decompose(const UChar *src, const UChar *limit,
+Normalizer2Impl::decompose(const char16_t *src, const char16_t *limit,
UnicodeString &dest,
int32_t destLengthEstimate,
UErrorCode &errorCode) const {
- if(destLengthEstimate<0 && limit!=NULL) {
+ if(destLengthEstimate<0 && limit!=nullptr) {
destLengthEstimate=(int32_t)(limit-src);
}
dest.remove();
@@ -580,14 +580,14 @@ Normalizer2Impl::decompose(const UChar *src, const UChar *limit,
}
// Dual functionality:
-// buffer!=NULL: normalize
-// buffer==NULL: isNormalized/spanQuickCheckYes
-const UChar *
-Normalizer2Impl::decompose(const UChar *src, const UChar *limit,
+// buffer!=nullptr: normalize
+// buffer==nullptr: isNormalized/spanQuickCheckYes
+const char16_t *
+Normalizer2Impl::decompose(const char16_t *src, const char16_t *limit,
ReorderingBuffer *buffer,
UErrorCode &errorCode) const {
UChar32 minNoCP=minDecompNoCP;
- if(limit==NULL) {
+ if(limit==nullptr) {
src=copyLowPrefixFromNulTerminated(src, minNoCP, buffer, errorCode);
if(U_FAILURE(errorCode)) {
return src;
@@ -595,12 +595,12 @@ Normalizer2Impl::decompose(const UChar *src, const UChar *limit,
limit=u_strchr(src, 0);
}
- const UChar *prevSrc;
+ const char16_t *prevSrc;
UChar32 c=0;
uint16_t norm16=0;
// only for quick check
- const UChar *prevBoundary=src;
+ const char16_t *prevBoundary=src;
uint8_t prevCC=0;
for(;;) {
@@ -613,7 +613,7 @@ Normalizer2Impl::decompose(const UChar *src, const UChar *limit,
} else if(!U16_IS_LEAD(c)) {
break;
} else {
- UChar c2;
+ char16_t c2;
if((src+1)!=limit && U16_IS_TRAIL(c2=src[1])) {
c=U16_GET_SUPPLEMENTARY(c, c2);
norm16=UCPTRIE_FAST_SUPP_GET(normTrie, UCPTRIE_16, c);
@@ -629,7 +629,7 @@ Normalizer2Impl::decompose(const UChar *src, const UChar *limit,
}
// copy these code units all at once
if(src!=prevSrc) {
- if(buffer!=NULL) {
+ if(buffer!=nullptr) {
if(!buffer->appendZeroCC(prevSrc, src, errorCode)) {
break;
}
@@ -644,7 +644,7 @@ Normalizer2Impl::decompose(const UChar *src, const UChar *limit,
// Check one above-minimum, relevant code point.
src+=U16_LENGTH(c);
- if(buffer!=NULL) {
+ if(buffer!=nullptr) {
if(!decompose(c, norm16, *buffer, errorCode)) {
break;
}
@@ -669,8 +669,8 @@ Normalizer2Impl::decompose(const UChar *src, const UChar *limit,
// fail the quick check loop and/or where the quick check loop's overhead
// is unlikely to be amortized.
// Called by the compose() and makeFCD() implementations.
-const UChar *
-Normalizer2Impl::decomposeShort(const UChar *src, const UChar *limit,
+const char16_t *
+Normalizer2Impl::decomposeShort(const char16_t *src, const char16_t *limit,
UBool stopAtCompBoundary, UBool onlyContiguous,
ReorderingBuffer &buffer, UErrorCode &errorCode) const {
if (U_FAILURE(errorCode)) {
@@ -680,7 +680,7 @@ Normalizer2Impl::decomposeShort(const UChar *src, const UChar *limit,
if (stopAtCompBoundary && *src < minCompNoMaybeCP) {
return src;
}
- const UChar *prevSrc = src;
+ const char16_t *prevSrc = src;
UChar32 c;
uint16_t norm16;
UCPTRIE_FAST_U16_NEXT(normTrie, UCPTRIE_16, src, limit, c, norm16);
@@ -714,7 +714,7 @@ UBool Normalizer2Impl::decompose(UChar32 c, uint16_t norm16,
return buffer.append(c, 0, errorCode);
} else if(isHangulLV(norm16) || isHangulLVT(norm16)) {
// Hangul syllable: decompose algorithmically
- UChar jamos[3];
+ char16_t jamos[3];
return buffer.appendZeroCC(jamos, jamos+Hangul::decompose(c, jamos), errorCode);
}
// c decomposes, get everything from the variable-length extra data
@@ -728,7 +728,7 @@ UBool Normalizer2Impl::decompose(UChar32 c, uint16_t norm16,
} else {
leadCC=0;
}
- return buffer.append((const UChar *)mapping+1, length, true, leadCC, trailCC, errorCode);
+ return buffer.append((const char16_t *)mapping+1, length, true, leadCC, trailCC, errorCode);
}
// Dual functionality:
@@ -943,14 +943,14 @@ Normalizer2Impl::decomposeShort(const uint8_t *src, const uint8_t *limit,
return src;
}
-const UChar *
-Normalizer2Impl::getDecomposition(UChar32 c, UChar buffer[4], int32_t &length) const {
+const char16_t *
+Normalizer2Impl::getDecomposition(UChar32 c, char16_t buffer[4], int32_t &length) const {
uint16_t norm16;
if(c<minDecompNoCP || isMaybeOrNonZeroCC(norm16=getNorm16(c))) {
// c does not decompose
return nullptr;
}
- const UChar *decomp = nullptr;
+ const char16_t *decomp = nullptr;
if(isDecompNoAlgorithmic(norm16)) {
// Maps to an isCompYesAndZeroCC.
c=mapAlgorithmic(c, norm16);
@@ -970,19 +970,19 @@ Normalizer2Impl::getDecomposition(UChar32 c, UChar buffer[4], int32_t &length) c
// c decomposes, get everything from the variable-length extra data
const uint16_t *mapping=getMapping(norm16);
length=*mapping&MAPPING_LENGTH_MASK;
- return (const UChar *)mapping+1;
+ return (const char16_t *)mapping+1;
}
// The capacity of the buffer must be 30=MAPPING_LENGTH_MASK-1
// so that a raw mapping fits that consists of one unit ("rm0")
// plus all but the first two code units of the normal mapping.
// The maximum length of a normal mapping is 31=MAPPING_LENGTH_MASK.
-const UChar *
-Normalizer2Impl::getRawDecomposition(UChar32 c, UChar buffer[30], int32_t &length) const {
+const char16_t *
+Normalizer2Impl::getRawDecomposition(UChar32 c, char16_t buffer[30], int32_t &length) const {
uint16_t norm16;
if(c<minDecompNoCP || isDecompYes(norm16=getNorm16(c))) {
// c does not decompose
- return NULL;
+ return nullptr;
} else if(isHangulLV(norm16) || isHangulLVT(norm16)) {
// Hangul syllable: decompose algorithmically
Hangul::getRawDecomposition(c, buffer);
@@ -1005,21 +1005,21 @@ Normalizer2Impl::getRawDecomposition(UChar32 c, UChar buffer[30], int32_t &lengt
uint16_t rm0=*rawMapping;
if(rm0<=MAPPING_LENGTH_MASK) {
length=rm0;
- return (const UChar *)rawMapping-rm0;
+ return (const char16_t *)rawMapping-rm0;
} else {
// Copy the normal mapping and replace its first two code units with rm0.
- buffer[0]=(UChar)rm0;
- u_memcpy(buffer+1, (const UChar *)mapping+1+2, mLength-2);
+ buffer[0]=(char16_t)rm0;
+ u_memcpy(buffer+1, (const char16_t *)mapping+1+2, mLength-2);
length=mLength-1;
return buffer;
}
} else {
length=mLength;
- return (const UChar *)mapping+1;
+ return (const char16_t *)mapping+1;
}
}
-void Normalizer2Impl::decomposeAndAppend(const UChar *src, const UChar *limit,
+void Normalizer2Impl::decomposeAndAppend(const char16_t *src, const char16_t *limit,
UBool doDecompose,
UnicodeString &safeMiddle,
ReorderingBuffer &buffer,
@@ -1032,9 +1032,9 @@ void Normalizer2Impl::decomposeAndAppend(const UChar *src, const UChar *limit,
// Just merge the strings at the boundary.
bool isFirst = true;
uint8_t firstCC = 0, prevCC = 0, cc;
- const UChar *p = src;
+ const char16_t *p = src;
while (p != limit) {
- const UChar *codePointStart = p;
+ const char16_t *codePointStart = p;
UChar32 c;
uint16_t norm16;
UCPTRIE_FAST_U16_NEXT(normTrie, UCPTRIE_16, p, limit, c, norm16);
@@ -1048,7 +1048,7 @@ void Normalizer2Impl::decomposeAndAppend(const UChar *src, const UChar *limit,
}
prevCC = cc;
}
- if(limit==NULL) { // appendZeroCC() needs limit!=NULL
+ if(limit==nullptr) { // appendZeroCC() needs limit!=nullptr
limit=u_strchr(p, 0);
}
@@ -1218,13 +1218,13 @@ void Normalizer2Impl::addComposites(const uint16_t *list, UnicodeSet &set) const
*/
void Normalizer2Impl::recompose(ReorderingBuffer &buffer, int32_t recomposeStartIndex,
UBool onlyContiguous) const {
- UChar *p=buffer.getStart()+recomposeStartIndex;
- UChar *limit=buffer.getLimit();
+ char16_t *p=buffer.getStart()+recomposeStartIndex;
+ char16_t *limit=buffer.getLimit();
if(p==limit) {
return;
}
- UChar *starter, *pRemove, *q, *r;
+ char16_t *starter, *pRemove, *q, *r;
const uint16_t *compositionsList;
UChar32 c, compositeAndFwd;
uint16_t norm16;
@@ -1233,8 +1233,8 @@ void Normalizer2Impl::recompose(ReorderingBuffer &buffer, int32_t recomposeStart
// Some of the following variables are not used until we have a forward-combining starter
// and are only initialized now to avoid compiler warnings.
- compositionsList=NULL; // used as indicator for whether we have a forward-combining starter
- starter=NULL;
+ compositionsList=nullptr; // used as indicator for whether we have a forward-combining starter
+ starter=nullptr;
starterIsSupplementary=false;
prevCC=0;
@@ -1244,7 +1244,7 @@ void Normalizer2Impl::recompose(ReorderingBuffer &buffer, int32_t recomposeStart
if( // this character combines backward and
isMaybe(norm16) &&
// we have seen a starter that combines forward and
- compositionsList!=NULL &&
+ compositionsList!=nullptr &&
// the backward-combining character is not blocked
(prevCC<cc || prevCC==0)
) {
@@ -1252,15 +1252,15 @@ void Normalizer2Impl::recompose(ReorderingBuffer &buffer, int32_t recomposeStart
// c is a Jamo V/T, see if we can compose it with the previous character.
if(c<Hangul::JAMO_T_BASE) {
// c is a Jamo Vowel, compose with previous Jamo L and following Jamo T.
- UChar prev=(UChar)(*starter-Hangul::JAMO_L_BASE);
+ char16_t prev=(char16_t)(*starter-Hangul::JAMO_L_BASE);
if(prev<Hangul::JAMO_L_COUNT) {
pRemove=p-1;
- UChar syllable=(UChar)
+ char16_t syllable=(char16_t)
(Hangul::HANGUL_BASE+
(prev*Hangul::JAMO_V_COUNT+(c-Hangul::JAMO_V_BASE))*
Hangul::JAMO_T_COUNT);
- UChar t;
- if(p!=limit && (t=(UChar)(*p-Hangul::JAMO_T_BASE))<Hangul::JAMO_T_COUNT) {
+ char16_t t;
+ if(p!=limit && (t=(char16_t)(*p-Hangul::JAMO_T_BASE))<Hangul::JAMO_T_COUNT) {
++p;
syllable+=t; // The next character was a Jamo T.
}
@@ -1284,7 +1284,7 @@ void Normalizer2Impl::recompose(ReorderingBuffer &buffer, int32_t recomposeStart
if(p==limit) {
break;
}
- compositionsList=NULL;
+ compositionsList=nullptr;
continue;
} else if((compositeAndFwd=combine(compositionsList, c))>=0) {
// The starter and the combining mark (c) do combine.
@@ -1298,7 +1298,7 @@ void Normalizer2Impl::recompose(ReorderingBuffer &buffer, int32_t recomposeStart
starter[0]=U16_LEAD(composite);
starter[1]=U16_TRAIL(composite);
} else {
- *starter=(UChar)composite;
+ *starter=(char16_t)composite;
// The composite is shorter than the starter,
// move the intermediate characters forward one.
starterIsSupplementary=false;
@@ -1323,7 +1323,7 @@ void Normalizer2Impl::recompose(ReorderingBuffer &buffer, int32_t recomposeStart
*--starter=U16_LEAD(composite); // undo the temporary increment
} else {
// both are on the BMP
- *starter=(UChar)composite;
+ *starter=(char16_t)composite;
}
/* remove the combining mark by moving the following text over it */
@@ -1346,7 +1346,7 @@ void Normalizer2Impl::recompose(ReorderingBuffer &buffer, int32_t recomposeStart
compositionsList=
getCompositionsListForComposite(getRawNorm16(composite));
} else {
- compositionsList=NULL;
+ compositionsList=nullptr;
}
// We combined; continue with looking for compositions.
@@ -1363,7 +1363,7 @@ void Normalizer2Impl::recompose(ReorderingBuffer &buffer, int32_t recomposeStart
// If c did not combine, then check if it is a starter.
if(cc==0) {
// Found a new starter.
- if((compositionsList=getCompositionsListForDecompYes(norm16))!=NULL) {
+ if((compositionsList=getCompositionsListForDecompYes(norm16))!=nullptr) {
// It may combine with something, prepare for it.
if(U_IS_BMP(c)) {
starterIsSupplementary=false;
@@ -1375,7 +1375,7 @@ void Normalizer2Impl::recompose(ReorderingBuffer &buffer, int32_t recomposeStart
}
} else if(onlyContiguous) {
// FCC: no discontiguous compositions; any intervening character blocks.
- compositionsList=NULL;
+ compositionsList=nullptr;
}
}
buffer.setReorderingLimit(limit);
@@ -1435,16 +1435,16 @@ Normalizer2Impl::composePair(UChar32 a, UChar32 b) const {
// doCompose: normalize
// !doCompose: isNormalized (buffer must be empty and initialized)
UBool
-Normalizer2Impl::compose(const UChar *src, const UChar *limit,
+Normalizer2Impl::compose(const char16_t *src, const char16_t *limit,
UBool onlyContiguous,
UBool doCompose,
ReorderingBuffer &buffer,
UErrorCode &errorCode) const {
- const UChar *prevBoundary=src;
+ const char16_t *prevBoundary=src;
UChar32 minNoMaybeCP=minCompNoMaybeCP;
- if(limit==NULL) {
+ if(limit==nullptr) {
src=copyLowPrefixFromNulTerminated(src, minNoMaybeCP,
- doCompose ? &buffer : NULL,
+ doCompose ? &buffer : nullptr,
errorCode);
if(U_FAILURE(errorCode)) {
return false;
@@ -1463,7 +1463,7 @@ Normalizer2Impl::compose(const UChar *src, const UChar *limit,
for (;;) {
// Fast path: Scan over a sequence of characters below the minimum "no or maybe" code point,
// or with (compYes && ccc==0) properties.
- const UChar *prevSrc;
+ const char16_t *prevSrc;
UChar32 c = 0;
uint16_t norm16 = 0;
for (;;) {
@@ -1482,7 +1482,7 @@ Normalizer2Impl::compose(const UChar *src, const UChar *limit,
if(!U16_IS_LEAD(c)) {
break;
} else {
- UChar c2;
+ char16_t c2;
if(src!=limit && U16_IS_TRAIL(c2=*src)) {
++src;
c=U16_GET_SUPPLEMENTARY(c, c2);
@@ -1528,7 +1528,7 @@ Normalizer2Impl::compose(const UChar *src, const UChar *limit,
if (prevBoundary != prevSrc && !buffer.appendZeroCC(prevBoundary, prevSrc, errorCode)) {
break;
}
- const UChar *mapping = reinterpret_cast<const UChar *>(getMapping(norm16));
+ const char16_t *mapping = reinterpret_cast<const char16_t *>(getMapping(norm16));
int32_t length = *mapping++ & MAPPING_LENGTH_MASK;
if(!buffer.appendZeroCC(mapping, mapping + length, errorCode)) {
break;
@@ -1552,11 +1552,11 @@ Normalizer2Impl::compose(const UChar *src, const UChar *limit,
// Other "noNo" type, or need to examine more text around this character:
// Fall through to the slow path.
} else if (isJamoVT(norm16) && prevBoundary != prevSrc) {
- UChar prev=*(prevSrc-1);
+ char16_t prev=*(prevSrc-1);
if(c<Hangul::JAMO_T_BASE) {
// The current character is a Jamo Vowel,
// compose with previous Jamo L and following Jamo T.
- UChar l = (UChar)(prev-Hangul::JAMO_L_BASE);
+ char16_t l = (char16_t)(prev-Hangul::JAMO_L_BASE);
if(l<Hangul::JAMO_L_COUNT) {
if (!doCompose) {
return false;
@@ -1581,7 +1581,7 @@ Normalizer2Impl::compose(const UChar *src, const UChar *limit,
if (prevBoundary != prevSrc && !buffer.appendZeroCC(prevBoundary, prevSrc, errorCode)) {
break;
}
- if(!buffer.appendBMP((UChar)syllable, 0, errorCode)) {
+ if(!buffer.appendBMP((char16_t)syllable, 0, errorCode)) {
break;
}
prevBoundary = src;
@@ -1606,7 +1606,7 @@ Normalizer2Impl::compose(const UChar *src, const UChar *limit,
if (prevBoundary != prevSrc && !buffer.appendZeroCC(prevBoundary, prevSrc, errorCode)) {
break;
}
- if(!buffer.appendBMP((UChar)syllable, 0, errorCode)) {
+ if(!buffer.appendBMP((char16_t)syllable, 0, errorCode)) {
break;
}
prevBoundary = src;
@@ -1627,7 +1627,7 @@ Normalizer2Impl::compose(const UChar *src, const UChar *limit,
} else {
// If !onlyContiguous (not FCC), then we ignore the tccc of
// the previous character which passed the quick check "yes && ccc==0" test.
- const UChar *nextSrc;
+ const char16_t *nextSrc;
uint16_t n16;
for (;;) {
if (src == limit) {
@@ -1667,7 +1667,7 @@ Normalizer2Impl::compose(const UChar *src, const UChar *limit,
// Slow path: Find the nearest boundaries around the current character,
// decompose and recompose.
if (prevBoundary != prevSrc && !norm16HasCompBoundaryBefore(norm16)) {
- const UChar *p = prevSrc;
+ const char16_t *p = prevSrc;
UCPTRIE_FAST_U16_PREV(normTrie, UCPTRIE_16, prevBoundary, p, c, norm16);
if (!norm16HasCompBoundaryAfter(norm16, onlyContiguous)) {
prevSrc = p;
@@ -1703,17 +1703,17 @@ Normalizer2Impl::compose(const UChar *src, const UChar *limit,
}
// Very similar to compose(): Make the same changes in both places if relevant.
-// pQCResult==NULL: spanQuickCheckYes
-// pQCResult!=NULL: quickCheck (*pQCResult must be UNORM_YES)
-const UChar *
-Normalizer2Impl::composeQuickCheck(const UChar *src, const UChar *limit,
+// pQCResult==nullptr: spanQuickCheckYes
+// pQCResult!=nullptr: quickCheck (*pQCResult must be UNORM_YES)
+const char16_t *
+Normalizer2Impl::composeQuickCheck(const char16_t *src, const char16_t *limit,
UBool onlyContiguous,
UNormalizationCheckResult *pQCResult) const {
- const UChar *prevBoundary=src;
+ const char16_t *prevBoundary=src;
UChar32 minNoMaybeCP=minCompNoMaybeCP;
- if(limit==NULL) {
+ if(limit==nullptr) {
UErrorCode errorCode=U_ZERO_ERROR;
- src=copyLowPrefixFromNulTerminated(src, minNoMaybeCP, NULL, errorCode);
+ src=copyLowPrefixFromNulTerminated(src, minNoMaybeCP, nullptr, errorCode);
limit=u_strchr(src, 0);
if (prevBoundary != src) {
if (hasCompBoundaryAfter(*(src-1), onlyContiguous)) {
@@ -1727,7 +1727,7 @@ Normalizer2Impl::composeQuickCheck(const UChar *src, const UChar *limit,
for(;;) {
// Fast path: Scan over a sequence of characters below the minimum "no or maybe" code point,
// or with (compYes && ccc==0) properties.
- const UChar *prevSrc;
+ const char16_t *prevSrc;
UChar32 c = 0;
uint16_t norm16 = 0;
for (;;) {
@@ -1743,7 +1743,7 @@ Normalizer2Impl::composeQuickCheck(const UChar *src, const UChar *limit,
if(!U16_IS_LEAD(c)) {
break;
} else {
- UChar c2;
+ char16_t c2;
if(src!=limit && U16_IS_TRAIL(c2=*src)) {
++src;
c=U16_GET_SUPPLEMENTARY(c, c2);
@@ -1766,7 +1766,7 @@ Normalizer2Impl::composeQuickCheck(const UChar *src, const UChar *limit,
if (norm16HasCompBoundaryBefore(norm16)) {
prevBoundary = prevSrc;
} else {
- const UChar *p = prevSrc;
+ const char16_t *p = prevSrc;
uint16_t n16;
UCPTRIE_FAST_U16_PREV(normTrie, UCPTRIE_16, prevBoundary, p, c, n16);
if (norm16HasCompBoundaryAfter(n16, onlyContiguous)) {
@@ -1788,7 +1788,7 @@ Normalizer2Impl::composeQuickCheck(const UChar *src, const UChar *limit,
} else {
// If !onlyContiguous (not FCC), then we ignore the tccc of
// the previous character which passed the quick check "yes && ccc==0" test.
- const UChar *nextSrc;
+ const char16_t *nextSrc;
for (;;) {
if (norm16 < MIN_YES_YES_WITH_CC) {
if (pQCResult != nullptr) {
@@ -1821,30 +1821,30 @@ Normalizer2Impl::composeQuickCheck(const UChar *src, const UChar *limit,
}
}
}
- if(pQCResult!=NULL) {
+ if(pQCResult!=nullptr) {
*pQCResult=UNORM_NO;
}
return prevBoundary;
}
}
-void Normalizer2Impl::composeAndAppend(const UChar *src, const UChar *limit,
+void Normalizer2Impl::composeAndAppend(const char16_t *src, const char16_t *limit,
UBool doCompose,
UBool onlyContiguous,
UnicodeString &safeMiddle,
ReorderingBuffer &buffer,
UErrorCode &errorCode) const {
if(!buffer.isEmpty()) {
- const UChar *firstStarterInSrc=findNextCompBoundary(src, limit, onlyContiguous);
+ const char16_t *firstStarterInSrc=findNextCompBoundary(src, limit, onlyContiguous);
if(src!=firstStarterInSrc) {
- const UChar *lastStarterInDest=findPreviousCompBoundary(buffer.getStart(),
+ const char16_t *lastStarterInDest=findPreviousCompBoundary(buffer.getStart(),
buffer.getLimit(), onlyContiguous);
int32_t destSuffixLength=(int32_t)(buffer.getLimit()-lastStarterInDest);
UnicodeString middle(lastStarterInDest, destSuffixLength);
buffer.removeSuffix(destSuffixLength);
safeMiddle=middle;
middle.append(src, (int32_t)(firstStarterInSrc-src));
- const UChar *middleStart=middle.getBuffer();
+ const char16_t *middleStart=middle.getBuffer();
compose(middleStart, middleStart+middle.length(), onlyContiguous,
true, buffer, errorCode);
if(U_FAILURE(errorCode)) {
@@ -1856,7 +1856,7 @@ void Normalizer2Impl::composeAndAppend(const UChar *src, const UChar *limit,
if(doCompose) {
compose(src, limit, onlyContiguous, true, buffer, errorCode);
} else {
- if(limit==NULL) { // appendZeroCC() needs limit!=NULL
+ if(limit==nullptr) { // appendZeroCC() needs limit!=nullptr
limit=u_strchr(src, 0);
}
buffer.appendZeroCC(src, limit, errorCode);
@@ -1933,7 +1933,7 @@ Normalizer2Impl::composeUTF8(uint32_t options, UBool onlyContiguous,
}
const uint16_t *mapping = getMapping(norm16);
int32_t length = *mapping++ & MAPPING_LENGTH_MASK;
- if (!ByteSinkUtil::appendChange(prevSrc, src, (const UChar *)mapping, length,
+ if (!ByteSinkUtil::appendChange(prevSrc, src, (const char16_t *)mapping, length,
*sink, edits, errorCode)) {
break;
}
@@ -2120,7 +2120,7 @@ Normalizer2Impl::composeUTF8(uint32_t options, UBool onlyContiguous,
return true;
}
-UBool Normalizer2Impl::hasCompBoundaryBefore(const UChar *src, const UChar *limit) const {
+UBool Normalizer2Impl::hasCompBoundaryBefore(const char16_t *src, const char16_t *limit) const {
if (src == limit || *src < minCompNoMaybeCP) {
return true;
}
@@ -2139,7 +2139,7 @@ UBool Normalizer2Impl::hasCompBoundaryBefore(const uint8_t *src, const uint8_t *
return norm16HasCompBoundaryBefore(norm16);
}
-UBool Normalizer2Impl::hasCompBoundaryAfter(const UChar *start, const UChar *p,
+UBool Normalizer2Impl::hasCompBoundaryAfter(const char16_t *start, const char16_t *p,
UBool onlyContiguous) const {
if (start == p) {
return true;
@@ -2160,10 +2160,10 @@ UBool Normalizer2Impl::hasCompBoundaryAfter(const uint8_t *start, const uint8_t
return norm16HasCompBoundaryAfter(norm16, onlyContiguous);
}
-const UChar *Normalizer2Impl::findPreviousCompBoundary(const UChar *start, const UChar *p,
+const char16_t *Normalizer2Impl::findPreviousCompBoundary(const char16_t *start, const char16_t *p,
UBool onlyContiguous) const {
while (p != start) {
- const UChar *codePointLimit = p;
+ const char16_t *codePointLimit = p;
UChar32 c;
uint16_t norm16;
UCPTRIE_FAST_U16_PREV(normTrie, UCPTRIE_16, start, p, c, norm16);
@@ -2177,10 +2177,10 @@ const UChar *Normalizer2Impl::findPreviousCompBoundary(const UChar *start, const
return p;
}
-const UChar *Normalizer2Impl::findNextCompBoundary(const UChar *p, const UChar *limit,
+const char16_t *Normalizer2Impl::findNextCompBoundary(const char16_t *p, const char16_t *limit,
UBool onlyContiguous) const {
while (p != limit) {
- const UChar *codePointStart = p;
+ const char16_t *codePointStart = p;
UChar32 c;
uint16_t norm16;
UCPTRIE_FAST_U16_NEXT(normTrie, UCPTRIE_16, p, limit, c, norm16);
@@ -2194,7 +2194,7 @@ const UChar *Normalizer2Impl::findNextCompBoundary(const UChar *p, const UChar *
return p;
}
-uint8_t Normalizer2Impl::getPreviousTrailCC(const UChar *start, const UChar *p) const {
+uint8_t Normalizer2Impl::getPreviousTrailCC(const char16_t *start, const char16_t *p) const {
if (start == p) {
return 0;
}
@@ -2267,17 +2267,17 @@ uint16_t Normalizer2Impl::getFCD16FromNormData(UChar32 c) const {
#endif
// Dual functionality:
-// buffer!=NULL: normalize
-// buffer==NULL: isNormalized/quickCheck/spanQuickCheckYes
-const UChar *
-Normalizer2Impl::makeFCD(const UChar *src, const UChar *limit,
+// buffer!=nullptr: normalize
+// buffer==nullptr: isNormalized/quickCheck/spanQuickCheckYes
+const char16_t *
+Normalizer2Impl::makeFCD(const char16_t *src, const char16_t *limit,
ReorderingBuffer *buffer,
UErrorCode &errorCode) const {
// Tracks the last FCD-safe boundary, before lccc=0 or after properly-ordered tccc<=1.
// Similar to the prevBoundary in the compose() implementation.
- const UChar *prevBoundary=src;
+ const char16_t *prevBoundary=src;
int32_t prevFCD16=0;
- if(limit==NULL) {
+ if(limit==nullptr) {
src=copyLowPrefixFromNulTerminated(src, minLcccCP, buffer, errorCode);
if(U_FAILURE(errorCode)) {
return src;
@@ -2300,7 +2300,7 @@ Normalizer2Impl::makeFCD(const UChar *src, const UChar *limit,
// The exception is the call to decomposeShort() which uses the buffer
// in the normal way.
- const UChar *prevSrc;
+ const char16_t *prevSrc;
UChar32 c=0;
uint16_t fcd16=0;
@@ -2315,7 +2315,7 @@ Normalizer2Impl::makeFCD(const UChar *src, const UChar *limit,
++src;
} else {
if(U16_IS_LEAD(c)) {
- UChar c2;
+ char16_t c2;
if((src+1)!=limit && U16_IS_TRAIL(c2=src[1])) {
c=U16_GET_SUPPLEMENTARY(c, c2);
}
@@ -2330,7 +2330,7 @@ Normalizer2Impl::makeFCD(const UChar *src, const UChar *limit,
}
// copy these code units all at once
if(src!=prevSrc) {
- if(buffer!=NULL && !buffer->appendZeroCC(prevSrc, src, errorCode)) {
+ if(buffer!=nullptr && !buffer->appendZeroCC(prevSrc, src, errorCode)) {
break;
}
if(src==limit) {
@@ -2350,7 +2350,7 @@ Normalizer2Impl::makeFCD(const UChar *src, const UChar *limit,
}
}
} else {
- const UChar *p=src-1;
+ const char16_t *p=src-1;
if(U16_IS_TRAIL(*p) && prevSrc<p && U16_IS_LEAD(*(p-1))) {
--p;
// Need to fetch the previous character's FCD value because
@@ -2376,12 +2376,12 @@ Normalizer2Impl::makeFCD(const UChar *src, const UChar *limit,
if((fcd16&0xff)<=1) {
prevBoundary=src;
}
- if(buffer!=NULL && !buffer->appendZeroCC(c, errorCode)) {
+ if(buffer!=nullptr && !buffer->appendZeroCC(c, errorCode)) {
break;
}
prevFCD16=fcd16;
continue;
- } else if(buffer==NULL) {
+ } else if(buffer==nullptr) {
return prevBoundary; // quick check "no"
} else {
/*
@@ -2410,22 +2410,22 @@ Normalizer2Impl::makeFCD(const UChar *src, const UChar *limit,
return src;
}
-void Normalizer2Impl::makeFCDAndAppend(const UChar *src, const UChar *limit,
+void Normalizer2Impl::makeFCDAndAppend(const char16_t *src, const char16_t *limit,
UBool doMakeFCD,
UnicodeString &safeMiddle,
ReorderingBuffer &buffer,
UErrorCode &errorCode) const {
if(!buffer.isEmpty()) {
- const UChar *firstBoundaryInSrc=findNextFCDBoundary(src, limit);
+ const char16_t *firstBoundaryInSrc=findNextFCDBoundary(src, limit);
if(src!=firstBoundaryInSrc) {
- const UChar *lastBoundaryInDest=findPreviousFCDBoundary(buffer.getStart(),
+ const char16_t *lastBoundaryInDest=findPreviousFCDBoundary(buffer.getStart(),
buffer.getLimit());
int32_t destSuffixLength=(int32_t)(buffer.getLimit()-lastBoundaryInDest);
UnicodeString middle(lastBoundaryInDest, destSuffixLength);
buffer.removeSuffix(destSuffixLength);
safeMiddle=middle;
middle.append(src, (int32_t)(firstBoundaryInSrc-src));
- const UChar *middleStart=middle.getBuffer();
+ const char16_t *middleStart=middle.getBuffer();
makeFCD(middleStart, middleStart+middle.length(), &buffer, errorCode);
if(U_FAILURE(errorCode)) {
return;
@@ -2436,16 +2436,16 @@ void Normalizer2Impl::makeFCDAndAppend(const UChar *src, const UChar *limit,
if(doMakeFCD) {
makeFCD(src, limit, &buffer, errorCode);
} else {
- if(limit==NULL) { // appendZeroCC() needs limit!=NULL
+ if(limit==nullptr) { // appendZeroCC() needs limit!=nullptr
limit=u_strchr(src, 0);
}
buffer.appendZeroCC(src, limit, errorCode);
}
}
-const UChar *Normalizer2Impl::findPreviousFCDBoundary(const UChar *start, const UChar *p) const {
+const char16_t *Normalizer2Impl::findPreviousFCDBoundary(const char16_t *start, const char16_t *p) const {
while(start<p) {
- const UChar *codePointLimit = p;
+ const char16_t *codePointLimit = p;
UChar32 c;
uint16_t norm16;
UCPTRIE_FAST_U16_PREV(normTrie, UCPTRIE_16, start, p, c, norm16);
@@ -2459,9 +2459,9 @@ const UChar *Normalizer2Impl::findPreviousFCDBoundary(const UChar *start, const
return p;
}
-const UChar *Normalizer2Impl::findNextFCDBoundary(const UChar *p, const UChar *limit) const {
+const char16_t *Normalizer2Impl::findNextFCDBoundary(const char16_t *p, const char16_t *limit) const {
while(p<limit) {
- const UChar *codePointStart=p;
+ const char16_t *codePointStart=p;
UChar32 c;
uint16_t norm16;
UCPTRIE_FAST_U16_NEXT(normTrie, UCPTRIE_16, p, limit, c, norm16);
@@ -2479,7 +2479,7 @@ const UChar *Normalizer2Impl::findNextFCDBoundary(const UChar *p, const UChar *l
CanonIterData::CanonIterData(UErrorCode &errorCode) :
mutableTrie(umutablecptrie_open(0, 0, &errorCode)), trie(nullptr),
- canonStartSets(uprv_deleteUObject, NULL, errorCode) {}
+ canonStartSets(uprv_deleteUObject, nullptr, errorCode) {}
CanonIterData::~CanonIterData() {
umutablecptrie_close(mutableTrie);
@@ -2535,9 +2535,9 @@ initCanonIterData(Normalizer2Impl *impl, UErrorCode &errorCode) {
U_CDECL_END
void InitCanonIterData::doInit(Normalizer2Impl *impl, UErrorCode &errorCode) {
- U_ASSERT(impl->fCanonIterData == NULL);
+ U_ASSERT(impl->fCanonIterData == nullptr);
impl->fCanonIterData = new CanonIterData(errorCode);
- if (impl->fCanonIterData == NULL) {
+ if (impl->fCanonIterData == nullptr) {
errorCode=U_MEMORY_ALLOCATION_ERROR;
}
if (U_SUCCESS(errorCode)) {
@@ -2562,7 +2562,7 @@ void InitCanonIterData::doInit(Normalizer2Impl *impl, UErrorCode &errorCode) {
}
if (U_FAILURE(errorCode)) {
delete impl->fCanonIterData;
- impl->fCanonIterData = NULL;
+ impl->fCanonIterData = nullptr;
}
}
@@ -2710,7 +2710,7 @@ unorm2_swap(const UDataSwapper *ds,
/* udata_swapDataHeader checks the arguments */
headerSize=udata_swapDataHeader(ds, inData, length, outData, pErrorCode);
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return 0;
}
@@ -2733,7 +2733,7 @@ unorm2_swap(const UDataSwapper *ds,
}
inBytes=(const uint8_t *)inData+headerSize;
- outBytes=(uint8_t *)outData+headerSize;
+ outBytes=(outData == nullptr) ? nullptr : (uint8_t *)outData+headerSize;
inIndexes=(const int32_t *)inBytes;
int32_t minIndexesLength;
diff --git a/Build/source/libs/icu/icu-src/source/common/normalizer2impl.h b/Build/source/libs/icu/icu-src/source/common/normalizer2impl.h
index 449e7783848..f5ede24fc20 100644
--- a/Build/source/libs/icu/icu-src/source/common/normalizer2impl.h
+++ b/Build/source/libs/icu/icu-src/source/common/normalizer2impl.h
@@ -99,16 +99,16 @@ public:
* Decomposes c, which must be a Hangul syllable, into buffer
* and returns the length of the decomposition (2 or 3).
*/
- static inline int32_t decompose(UChar32 c, UChar buffer[3]) {
+ static inline int32_t decompose(UChar32 c, char16_t buffer[3]) {
c-=HANGUL_BASE;
UChar32 c2=c%JAMO_T_COUNT;
c/=JAMO_T_COUNT;
- buffer[0]=(UChar)(JAMO_L_BASE+c/JAMO_V_COUNT);
- buffer[1]=(UChar)(JAMO_V_BASE+c%JAMO_V_COUNT);
+ buffer[0]=(char16_t)(JAMO_L_BASE+c/JAMO_V_COUNT);
+ buffer[1]=(char16_t)(JAMO_V_BASE+c%JAMO_V_COUNT);
if(c2==0) {
return 2;
} else {
- buffer[2]=(UChar)(JAMO_T_BASE+c2);
+ buffer[2]=(char16_t)(JAMO_T_BASE+c2);
return 3;
}
}
@@ -117,17 +117,17 @@ public:
* Decomposes c, which must be a Hangul syllable, into buffer.
* This is the raw, not recursive, decomposition. Its length is always 2.
*/
- static inline void getRawDecomposition(UChar32 c, UChar buffer[2]) {
+ static inline void getRawDecomposition(UChar32 c, char16_t buffer[2]) {
UChar32 orig=c;
c-=HANGUL_BASE;
UChar32 c2=c%JAMO_T_COUNT;
if(c2==0) {
c/=JAMO_T_COUNT;
- buffer[0]=(UChar)(JAMO_L_BASE+c/JAMO_V_COUNT);
- buffer[1]=(UChar)(JAMO_V_BASE+c%JAMO_V_COUNT);
+ buffer[0]=(char16_t)(JAMO_L_BASE+c/JAMO_V_COUNT);
+ buffer[1]=(char16_t)(JAMO_V_BASE+c%JAMO_V_COUNT);
} else {
- buffer[0]=(UChar)(orig-c2); // LV syllable
- buffer[1]=(UChar)(JAMO_T_BASE+c2);
+ buffer[0]=(char16_t)(orig-c2); // LV syllable
+ buffer[1]=(char16_t)(JAMO_T_BASE+c2);
}
}
private:
@@ -154,22 +154,22 @@ public:
UBool isEmpty() const { return start==limit; }
int32_t length() const { return (int32_t)(limit-start); }
- UChar *getStart() { return start; }
- UChar *getLimit() { return limit; }
+ char16_t *getStart() { return start; }
+ char16_t *getLimit() { return limit; }
uint8_t getLastCC() const { return lastCC; }
- UBool equals(const UChar *start, const UChar *limit) const;
+ UBool equals(const char16_t *start, const char16_t *limit) const;
UBool equals(const uint8_t *otherStart, const uint8_t *otherLimit) const;
UBool append(UChar32 c, uint8_t cc, UErrorCode &errorCode) {
return (c<=0xffff) ?
- appendBMP((UChar)c, cc, errorCode) :
+ appendBMP((char16_t)c, cc, errorCode) :
appendSupplementary(c, cc, errorCode);
}
- UBool append(const UChar *s, int32_t length, UBool isNFD,
+ UBool append(const char16_t *s, int32_t length, UBool isNFD,
uint8_t leadCC, uint8_t trailCC,
UErrorCode &errorCode);
- UBool appendBMP(UChar c, uint8_t cc, UErrorCode &errorCode) {
+ UBool appendBMP(char16_t c, uint8_t cc, UErrorCode &errorCode) {
if(remainingCapacity==0 && !resize(1, errorCode)) {
return false;
}
@@ -186,10 +186,10 @@ public:
return true;
}
UBool appendZeroCC(UChar32 c, UErrorCode &errorCode);
- UBool appendZeroCC(const UChar *s, const UChar *sLimit, UErrorCode &errorCode);
+ UBool appendZeroCC(const char16_t *s, const char16_t *sLimit, UErrorCode &errorCode);
void remove();
void removeSuffix(int32_t suffixLength);
- void setReorderingLimit(UChar *newLimit) {
+ void setReorderingLimit(char16_t *newLimit) {
remainingCapacity+=(int32_t)(limit-newLimit);
reorderStart=limit=newLimit;
lastCC=0;
@@ -213,9 +213,9 @@ private:
UBool appendSupplementary(UChar32 c, uint8_t cc, UErrorCode &errorCode);
void insert(UChar32 c, uint8_t cc);
- static void writeCodePoint(UChar *p, UChar32 c) {
+ static void writeCodePoint(char16_t *p, UChar32 c) {
if(c<=0xffff) {
- *p=(UChar)c;
+ *p=(char16_t)c;
} else {
p[0]=U16_LEAD(c);
p[1]=U16_TRAIL(c);
@@ -225,7 +225,7 @@ private:
const Normalizer2Impl &impl;
UnicodeString &str;
- UChar *start, *reorderStart, *limit;
+ char16_t *start, *reorderStart, *limit;
int32_t remainingCapacity;
uint8_t lastCC;
@@ -234,7 +234,7 @@ private:
void skipPrevious(); // Requires start<codePointStart.
uint8_t previousCC(); // Returns 0 if there is no previous character.
- UChar *codePointStart, *codePointLimit;
+ char16_t *codePointStart, *codePointLimit;
};
/**
@@ -322,12 +322,12 @@ public:
* @param limit The end of the string, or NULL.
* @return The lccc(c) in bits 15..8 and tccc(c) in bits 7..0.
*/
- uint16_t nextFCD16(const UChar *&s, const UChar *limit) const {
+ uint16_t nextFCD16(const char16_t *&s, const char16_t *limit) const {
UChar32 c=*s++;
if(c<minDecompNoCP || !singleLeadMightHaveNonZeroFCD16(c)) {
return 0;
}
- UChar c2;
+ char16_t c2;
if(U16_IS_LEAD(c) && s!=limit && U16_IS_TRAIL(c2=*s)) {
c=U16_GET_SUPPLEMENTARY(c, c2);
++s;
@@ -340,7 +340,7 @@ public:
* @param s A valid pointer into a string. Requires start<s.
* @return The lccc(c) in bits 15..8 and tccc(c) in bits 7..0.
*/
- uint16_t previousFCD16(const UChar *start, const UChar *&s) const {
+ uint16_t previousFCD16(const char16_t *start, const char16_t *&s) const {
UChar32 c=*--s;
if(c<minDecompNoCP) {
return 0;
@@ -350,7 +350,7 @@ public:
return 0;
}
} else {
- UChar c2;
+ char16_t c2;
if(start<s && U16_IS_LEAD(c2=*(s-1))) {
c=U16_GET_SUPPLEMENTARY(c2, c);
--s;
@@ -376,7 +376,7 @@ public:
* @param length out-only, takes the length of the decomposition, if any
* @return pointer to the decomposition, or NULL if none
*/
- const UChar *getDecomposition(UChar32 c, UChar buffer[4], int32_t &length) const;
+ const char16_t *getDecomposition(UChar32 c, char16_t buffer[4], int32_t &length) const;
/**
* Gets the raw decomposition for one code point.
@@ -385,7 +385,7 @@ public:
* @param length out-only, takes the length of the decomposition, if any
* @return pointer to the decomposition, or NULL if none
*/
- const UChar *getRawDecomposition(UChar32 c, UChar buffer[30], int32_t &length) const;
+ const char16_t *getRawDecomposition(UChar32 c, char16_t buffer[30], int32_t &length) const;
UChar32 composePair(UChar32 a, UChar32 b) const;
@@ -480,13 +480,13 @@ public:
* limit can be NULL if src is NUL-terminated.
* destLengthEstimate is the initial dest buffer capacity and can be -1.
*/
- void decompose(const UChar *src, const UChar *limit,
+ void decompose(const char16_t *src, const char16_t *limit,
UnicodeString &dest, int32_t destLengthEstimate,
UErrorCode &errorCode) const;
- const UChar *decompose(const UChar *src, const UChar *limit,
+ const char16_t *decompose(const char16_t *src, const char16_t *limit,
ReorderingBuffer *buffer, UErrorCode &errorCode) const;
- void decomposeAndAppend(const UChar *src, const UChar *limit,
+ void decomposeAndAppend(const char16_t *src, const char16_t *limit,
UBool doDecompose,
UnicodeString &safeMiddle,
ReorderingBuffer &buffer,
@@ -497,15 +497,15 @@ public:
const uint8_t *src, const uint8_t *limit,
ByteSink *sink, Edits *edits, UErrorCode &errorCode) const;
- UBool compose(const UChar *src, const UChar *limit,
+ UBool compose(const char16_t *src, const char16_t *limit,
UBool onlyContiguous,
UBool doCompose,
ReorderingBuffer &buffer,
UErrorCode &errorCode) const;
- const UChar *composeQuickCheck(const UChar *src, const UChar *limit,
+ const char16_t *composeQuickCheck(const char16_t *src, const char16_t *limit,
UBool onlyContiguous,
UNormalizationCheckResult *pQCResult) const;
- void composeAndAppend(const UChar *src, const UChar *limit,
+ void composeAndAppend(const char16_t *src, const char16_t *limit,
UBool doCompose,
UBool onlyContiguous,
UnicodeString &safeMiddle,
@@ -517,9 +517,9 @@ public:
const uint8_t *src, const uint8_t *limit,
ByteSink *sink, icu::Edits *edits, UErrorCode &errorCode) const;
- const UChar *makeFCD(const UChar *src, const UChar *limit,
+ const char16_t *makeFCD(const char16_t *src, const char16_t *limit,
ReorderingBuffer *buffer, UErrorCode &errorCode) const;
- void makeFCDAndAppend(const UChar *src, const UChar *limit,
+ void makeFCDAndAppend(const char16_t *src, const char16_t *limit,
UBool doMakeFCD,
UnicodeString &safeMiddle,
ReorderingBuffer &buffer,
@@ -608,7 +608,7 @@ private:
return (uint8_t)(*getMapping(norm16)>>8); // tccc from yesNo
}
}
- uint8_t getPreviousTrailCC(const UChar *start, const UChar *p) const;
+ uint8_t getPreviousTrailCC(const char16_t *start, const char16_t *p) const;
uint8_t getPreviousTrailCC(const uint8_t *start, const uint8_t *p) const;
// Requires algorithmic-NoNo.
@@ -651,14 +651,14 @@ private:
getCompositionsListForComposite(norm16);
}
- const UChar *copyLowPrefixFromNulTerminated(const UChar *src,
+ const char16_t *copyLowPrefixFromNulTerminated(const char16_t *src,
UChar32 minNeedDataCP,
ReorderingBuffer *buffer,
UErrorCode &errorCode) const;
enum StopAt { STOP_AT_LIMIT, STOP_AT_DECOMP_BOUNDARY, STOP_AT_COMP_BOUNDARY };
- const UChar *decomposeShort(const UChar *src, const UChar *limit,
+ const char16_t *decomposeShort(const char16_t *src, const char16_t *limit,
UBool stopAtCompBoundary, UBool onlyContiguous,
ReorderingBuffer &buffer, UErrorCode &errorCode) const;
UBool decompose(UChar32 c, uint16_t norm16,
@@ -679,9 +679,9 @@ private:
UBool norm16HasCompBoundaryBefore(uint16_t norm16) const {
return norm16 < minNoNoCompNoMaybeCC || isAlgorithmicNoNo(norm16);
}
- UBool hasCompBoundaryBefore(const UChar *src, const UChar *limit) const;
+ UBool hasCompBoundaryBefore(const char16_t *src, const char16_t *limit) const;
UBool hasCompBoundaryBefore(const uint8_t *src, const uint8_t *limit) const;
- UBool hasCompBoundaryAfter(const UChar *start, const UChar *p,
+ UBool hasCompBoundaryAfter(const char16_t *start, const char16_t *p,
UBool onlyContiguous) const;
UBool hasCompBoundaryAfter(const uint8_t *start, const uint8_t *p,
UBool onlyContiguous) const;
@@ -695,11 +695,11 @@ private:
(norm16 & DELTA_TCCC_MASK) <= DELTA_TCCC_1 : *getMapping(norm16) <= 0x1ff);
}
- const UChar *findPreviousCompBoundary(const UChar *start, const UChar *p, UBool onlyContiguous) const;
- const UChar *findNextCompBoundary(const UChar *p, const UChar *limit, UBool onlyContiguous) const;
+ const char16_t *findPreviousCompBoundary(const char16_t *start, const char16_t *p, UBool onlyContiguous) const;
+ const char16_t *findNextCompBoundary(const char16_t *p, const char16_t *limit, UBool onlyContiguous) const;
- const UChar *findPreviousFCDBoundary(const UChar *start, const UChar *p) const;
- const UChar *findNextFCDBoundary(const UChar *p, const UChar *limit) const;
+ const char16_t *findPreviousFCDBoundary(const char16_t *start, const char16_t *p) const;
+ const char16_t *findNextFCDBoundary(const char16_t *p, const char16_t *limit) const;
void makeCanonIterDataFromNorm16(UChar32 start, UChar32 end, const uint16_t norm16,
CanonIterData &newData, UErrorCode &errorCode) const;
@@ -710,9 +710,9 @@ private:
// UVersionInfo dataVersion;
// BMP code point thresholds for quick check loops looking at single UTF-16 code units.
- UChar minDecompNoCP;
- UChar minCompNoMaybeCP;
- UChar minLcccCP;
+ char16_t minDecompNoCP;
+ char16_t minCompNoMaybeCP;
+ char16_t minLcccCP;
// Norm16 value thresholds for quick check combinations and types of extra data.
uint16_t minYesNo;
@@ -789,7 +789,8 @@ unorm_getFCD16(UChar32 c);
*
* Normalizer2 .nrm data files provide data for the Unicode Normalization algorithms.
* ICU ships with data files for standard Unicode Normalization Forms
- * NFC and NFD (nfc.nrm), NFKC and NFKD (nfkc.nrm) and NFKC_Casefold (nfkc_cf.nrm).
+ * NFC and NFD (nfc.nrm), NFKC and NFKD (nfkc.nrm),
+ * NFKC_Casefold (nfkc_cf.nrm) and NFKC_Simple_Casefold (nfkc_scf.nrm).
* Custom (application-specific) data can be built into additional .nrm files
* with the gennorm2 build tool.
* ICU ships with one such file, uts46.nrm, for the implementation of UTS #46.
diff --git a/Build/source/libs/icu/icu-src/source/common/normlzr.cpp b/Build/source/libs/icu/icu-src/source/common/normlzr.cpp
index 58de61591f8..52b9ffd54a3 100644
--- a/Build/source/libs/icu/icu-src/source/common/normlzr.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/normlzr.cpp
@@ -38,7 +38,7 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(Normalizer)
//-------------------------------------------------------------------------
Normalizer::Normalizer(const UnicodeString& str, UNormalizationMode mode) :
- UObject(), fFilteredNorm2(NULL), fNorm2(NULL), fUMode(mode), fOptions(0),
+ UObject(), fFilteredNorm2(nullptr), fNorm2(nullptr), fUMode(mode), fOptions(0),
text(new StringCharacterIterator(str)),
currentIndex(0), nextIndex(0),
buffer(), bufferPos(0)
@@ -47,7 +47,7 @@ Normalizer::Normalizer(const UnicodeString& str, UNormalizationMode mode) :
}
Normalizer::Normalizer(ConstChar16Ptr str, int32_t length, UNormalizationMode mode) :
- UObject(), fFilteredNorm2(NULL), fNorm2(NULL), fUMode(mode), fOptions(0),
+ UObject(), fFilteredNorm2(nullptr), fNorm2(nullptr), fUMode(mode), fOptions(0),
text(new UCharCharacterIterator(str, length)),
currentIndex(0), nextIndex(0),
buffer(), bufferPos(0)
@@ -56,7 +56,7 @@ Normalizer::Normalizer(ConstChar16Ptr str, int32_t length, UNormalizationMode mo
}
Normalizer::Normalizer(const CharacterIterator& iter, UNormalizationMode mode) :
- UObject(), fFilteredNorm2(NULL), fNorm2(NULL), fUMode(mode), fOptions(0),
+ UObject(), fFilteredNorm2(nullptr), fNorm2(nullptr), fUMode(mode), fOptions(0),
text(iter.clone()),
currentIndex(0), nextIndex(0),
buffer(), bufferPos(0)
@@ -65,7 +65,7 @@ Normalizer::Normalizer(const CharacterIterator& iter, UNormalizationMode mode) :
}
Normalizer::Normalizer(const Normalizer &copy) :
- UObject(copy), fFilteredNorm2(NULL), fNorm2(NULL), fUMode(copy.fUMode), fOptions(copy.fOptions),
+ UObject(copy), fFilteredNorm2(nullptr), fNorm2(nullptr), fUMode(copy.fUMode), fOptions(copy.fOptions),
text(copy.text->clone()),
currentIndex(copy.currentIndex), nextIndex(copy.nextIndex),
buffer(copy.buffer), bufferPos(copy.bufferPos)
@@ -410,7 +410,7 @@ Normalizer::setText(const UnicodeString& newText,
return;
}
CharacterIterator *newIter = new StringCharacterIterator(newText);
- if (newIter == NULL) {
+ if (newIter == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -431,7 +431,7 @@ Normalizer::setText(const CharacterIterator& newText,
return;
}
CharacterIterator *newIter = newText.clone();
- if (newIter == NULL) {
+ if (newIter == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -449,7 +449,7 @@ Normalizer::setText(ConstChar16Ptr newText,
return;
}
CharacterIterator *newIter = new UCharCharacterIterator(newText, length);
- if (newIter == NULL) {
+ if (newIter == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
diff --git a/Build/source/libs/icu/icu-src/source/common/patternprops.cpp b/Build/source/libs/icu/icu-src/source/common/patternprops.cpp
index da3243d3010..9922683cda5 100644
--- a/Build/source/libs/icu/icu-src/source/common/patternprops.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/patternprops.cpp
@@ -164,8 +164,8 @@ PatternProps::isWhiteSpace(UChar32 c) {
}
}
-const UChar *
-PatternProps::skipWhiteSpace(const UChar *s, int32_t length) {
+const char16_t *
+PatternProps::skipWhiteSpace(const char16_t *s, int32_t length) {
while(length>0 && isWhiteSpace(*s)) {
++s;
--length;
@@ -183,8 +183,8 @@ PatternProps::skipWhiteSpace(const UnicodeString& s, int32_t start) {
return i;
}
-const UChar *
-PatternProps::trimWhiteSpace(const UChar *s, int32_t &length) {
+const char16_t *
+PatternProps::trimWhiteSpace(const char16_t *s, int32_t &length) {
if(length<=0 || (!isWhiteSpace(s[0]) && !isWhiteSpace(s[length-1]))) {
return s;
}
@@ -205,11 +205,11 @@ PatternProps::trimWhiteSpace(const UChar *s, int32_t &length) {
}
UBool
-PatternProps::isIdentifier(const UChar *s, int32_t length) {
+PatternProps::isIdentifier(const char16_t *s, int32_t length) {
if(length<=0) {
return false;
}
- const UChar *limit=s+length;
+ const char16_t *limit=s+length;
do {
if(isSyntaxOrWhiteSpace(*s++)) {
return false;
@@ -218,8 +218,8 @@ PatternProps::isIdentifier(const UChar *s, int32_t length) {
return true;
}
-const UChar *
-PatternProps::skipIdentifier(const UChar *s, int32_t length) {
+const char16_t *
+PatternProps::skipIdentifier(const char16_t *s, int32_t length) {
while(length>0 && !isSyntaxOrWhiteSpace(*s)) {
++s;
--length;
diff --git a/Build/source/libs/icu/icu-src/source/common/patternprops.h b/Build/source/libs/icu/icu-src/source/common/patternprops.h
index 4ead56e1cdb..23a88333f4e 100644
--- a/Build/source/libs/icu/icu-src/source/common/patternprops.h
+++ b/Build/source/libs/icu/icu-src/source/common/patternprops.h
@@ -62,7 +62,7 @@ public:
* Skips over Pattern_White_Space starting at s.
* @return The smallest pointer at or after s with a non-white space character.
*/
- static const UChar *skipWhiteSpace(const UChar *s, int32_t length);
+ static const char16_t *skipWhiteSpace(const char16_t *s, int32_t length);
/**
* Skips over Pattern_White_Space starting at index start in s.
@@ -73,21 +73,21 @@ public:
/**
* @return s except with leading and trailing Pattern_White_Space removed and length adjusted.
*/
- static const UChar *trimWhiteSpace(const UChar *s, int32_t &length);
+ static const char16_t *trimWhiteSpace(const char16_t *s, int32_t &length);
/**
* Tests whether the string contains a "pattern identifier", that is,
* whether it contains only non-Pattern_White_Space, non-Pattern_Syntax characters.
* @return true if there are no Pattern_White_Space or Pattern_Syntax characters in s.
*/
- static UBool isIdentifier(const UChar *s, int32_t length);
+ static UBool isIdentifier(const char16_t *s, int32_t length);
/**
* Skips over a "pattern identifier" starting at index s.
* @return The smallest pointer at or after s with
* a Pattern_White_Space or Pattern_Syntax character.
*/
- static const UChar *skipIdentifier(const UChar *s, int32_t length);
+ static const char16_t *skipIdentifier(const char16_t *s, int32_t length);
private:
PatternProps() = delete; // no constructor: all static methods
diff --git a/Build/source/libs/icu/icu-src/source/common/pluralmap.cpp b/Build/source/libs/icu/icu-src/source/common/pluralmap.cpp
index ec87f0198e1..7e6156de89c 100644
--- a/Build/source/libs/icu/icu-src/source/common/pluralmap.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/pluralmap.cpp
@@ -36,7 +36,7 @@ PluralMapBase::toCategory(const UnicodeString &pluralForm) {
const char *PluralMapBase::getCategoryName(Category c) {
int32_t index = c;
return (index < 0 || index >= UPRV_LENGTHOF(gPluralForms)) ?
- NULL : gPluralForms[index];
+ nullptr : gPluralForms[index];
}
diff --git a/Build/source/libs/icu/icu-src/source/common/pluralmap.h b/Build/source/libs/icu/icu-src/source/common/pluralmap.h
index 4988fd2699f..11683599edd 100644
--- a/Build/source/libs/icu/icu-src/source/common/pluralmap.h
+++ b/Build/source/libs/icu/icu-src/source/common/pluralmap.h
@@ -53,7 +53,7 @@ public:
/**
* Converts a category to a name.
- * Passing NONE or CATEGORY_COUNT for category returns NULL.
+ * Passing NONE or CATEGORY_COUNT for category returns nullptr.
*/
static const char *getCategoryName(Category category);
};
@@ -89,7 +89,7 @@ public:
fVariants[0] = &fOtherVariant;
for (int32_t i = 1; i < UPRV_LENGTHOF(fVariants); ++i) {
fVariants[i] = other.fVariants[i] ?
- new T(*other.fVariants[i]) : NULL;
+ new T(*other.fVariants[i]) : nullptr;
}
}
@@ -98,12 +98,12 @@ public:
return *this;
}
for (int32_t i = 0; i < UPRV_LENGTHOF(fVariants); ++i) {
- if (fVariants[i] != NULL && other.fVariants[i] != NULL) {
+ if (fVariants[i] != nullptr && other.fVariants[i] != nullptr) {
*fVariants[i] = *other.fVariants[i];
- } else if (fVariants[i] != NULL) {
+ } else if (fVariants[i] != nullptr) {
delete fVariants[i];
- fVariants[i] = NULL;
- } else if (other.fVariants[i] != NULL) {
+ fVariants[i] = nullptr;
+ } else if (other.fVariants[i] != nullptr) {
fVariants[i] = new T(*other.fVariants[i]);
} else {
// do nothing
@@ -125,28 +125,28 @@ public:
*fVariants[0] = T();
for (int32_t i = 1; i < UPRV_LENGTHOF(fVariants); ++i) {
delete fVariants[i];
- fVariants[i] = NULL;
+ fVariants[i] = nullptr;
}
}
/**
* Iterates through the mappings in this instance, set index to NONE
* prior to using. Call next repeatedly to get the values until it
- * returns NULL. Each time next returns, caller may pass index
+ * returns nullptr. Each time next returns, caller may pass index
* to getCategoryName() to get the name of the plural category.
- * When this function returns NULL, index is CATEGORY_COUNT
+ * When this function returns nullptr, index is CATEGORY_COUNT
*/
const T *next(Category &index) const {
int32_t idx = index;
++idx;
for (; idx < UPRV_LENGTHOF(fVariants); ++idx) {
- if (fVariants[idx] != NULL) {
+ if (fVariants[idx] != nullptr) {
index = static_cast<Category>(idx);
return fVariants[idx];
}
}
index = static_cast<Category>(idx);
- return NULL;
+ return nullptr;
}
/**
@@ -172,7 +172,7 @@ public:
*/
const T &get(Category v) const {
int32_t index = v;
- if (index < 0 || index >= UPRV_LENGTHOF(fVariants) || fVariants[index] == NULL) {
+ if (index < 0 || index >= UPRV_LENGTHOF(fVariants) || fVariants[index] == nullptr) {
return *fVariants[0];
}
return *fVariants[index];
@@ -207,7 +207,7 @@ public:
T *getMutable(
Category category,
UErrorCode &status) {
- return getMutable(category, NULL, status);
+ return getMutable(category, nullptr, status);
}
/**
@@ -218,7 +218,7 @@ public:
T *getMutable(
const char *category,
UErrorCode &status) {
- return getMutable(toCategory(category), NULL, status);
+ return getMutable(toCategory(category), nullptr, status);
}
/**
@@ -243,7 +243,7 @@ public:
if (fVariants[i] == rhs.fVariants[i]) {
continue;
}
- if (fVariants[i] == NULL || rhs.fVariants[i] == NULL) {
+ if (fVariants[i] == nullptr || rhs.fVariants[i] == nullptr) {
return false;
}
if (!eqFunc(*fVariants[i], *rhs.fVariants[i])) {
@@ -262,15 +262,15 @@ private:
const T *defaultValue,
UErrorCode &status) {
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
int32_t index = category;
if (index < 0 || index >= UPRV_LENGTHOF(fVariants)) {
status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
- if (fVariants[index] == NULL) {
- fVariants[index] = defaultValue == NULL ?
+ if (fVariants[index] == nullptr) {
+ fVariants[index] = defaultValue == nullptr ?
new T() : new T(*defaultValue);
}
if (!fVariants[index]) {
@@ -282,7 +282,7 @@ private:
void initializeNew() {
fVariants[0] = &fOtherVariant;
for (int32_t i = 1; i < UPRV_LENGTHOF(fVariants); ++i) {
- fVariants[i] = NULL;
+ fVariants[i] = nullptr;
}
}
};
diff --git a/Build/source/libs/icu/icu-src/source/common/propname.cpp b/Build/source/libs/icu/icu-src/source/common/propname.cpp
index 8f0045fdac5..45062bfbd93 100644
--- a/Build/source/libs/icu/icu-src/source/common/propname.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/propname.cpp
@@ -204,20 +204,20 @@ int32_t PropNameData::findPropertyValueNameGroup(int32_t valueMapIndex, int32_t
const char *PropNameData::getName(const char *nameGroup, int32_t nameIndex) {
int32_t numNames=*nameGroup++;
if(nameIndex<0 || numNames<=nameIndex) {
- return NULL;
+ return nullptr;
}
// Skip nameIndex names.
for(; nameIndex>0; --nameIndex) {
nameGroup=uprv_strchr(nameGroup, 0)+1;
}
if(*nameGroup==0) {
- return NULL; // no name (Property[Value]Aliases.txt has "n/a")
+ return nullptr; // no name (Property[Value]Aliases.txt has "n/a")
}
return nameGroup;
}
UBool PropNameData::containsName(BytesTrie &trie, const char *name) {
- if(name==NULL) {
+ if(name==nullptr) {
return false;
}
UStringTrieResult result=USTRINGTRIE_NO_VALUE;
@@ -239,7 +239,7 @@ UBool PropNameData::containsName(BytesTrie &trie, const char *name) {
const char *PropNameData::getPropertyName(int32_t property, int32_t nameChoice) {
int32_t valueMapIndex=findProperty(property);
if(valueMapIndex==0) {
- return NULL; // Not a known property.
+ return nullptr; // Not a known property.
}
return getName(nameGroups+valueMaps[valueMapIndex], nameChoice);
}
@@ -247,11 +247,11 @@ const char *PropNameData::getPropertyName(int32_t property, int32_t nameChoice)
const char *PropNameData::getPropertyValueName(int32_t property, int32_t value, int32_t nameChoice) {
int32_t valueMapIndex=findProperty(property);
if(valueMapIndex==0) {
- return NULL; // Not a known property.
+ return nullptr; // Not a known property.
}
int32_t nameGroupOffset=findPropertyValueNameGroup(valueMaps[valueMapIndex+1], value);
if(nameGroupOffset==0) {
- return NULL;
+ return nullptr;
}
return getName(nameGroups+nameGroupOffset, nameChoice);
}
@@ -289,7 +289,10 @@ U_NAMESPACE_END
U_CAPI const char* U_EXPORT2
u_getPropertyName(UProperty property,
- UPropertyNameChoice nameChoice) {
+ UPropertyNameChoice nameChoice) UPRV_NO_SANITIZE_UNDEFINED {
+ // The nameChoice is really an integer with a couple of named constants.
+ // Unicode allows for names other than short and long ones.
+ // If present, these will be returned for U_LONG_PROPERTY_NAME + i, where i=1, 2,...
U_NAMESPACE_USE
return PropNameData::getPropertyName(property, nameChoice);
}
@@ -303,7 +306,10 @@ u_getPropertyEnum(const char* alias) {
U_CAPI const char* U_EXPORT2
u_getPropertyValueName(UProperty property,
int32_t value,
- UPropertyNameChoice nameChoice) {
+ UPropertyNameChoice nameChoice) UPRV_NO_SANITIZE_UNDEFINED {
+ // The nameChoice is really an integer with a couple of named constants.
+ // Unicode allows for names other than short and long ones.
+ // If present, these will be returned for U_LONG_PROPERTY_NAME + i, where i=1, 2,...
U_NAMESPACE_USE
return PropNameData::getPropertyValueName(property, value, nameChoice);
}
diff --git a/Build/source/libs/icu/icu-src/source/common/propname_data.h b/Build/source/libs/icu/icu-src/source/common/propname_data.h
index 1e247874b6a..7bdbe8ec430 100644
--- a/Build/source/libs/icu/icu-src/source/common/propname_data.h
+++ b/Build/source/libs/icu/icu-src/source/common/propname_data.h
@@ -11,101 +11,102 @@
U_NAMESPACE_BEGIN
-const int32_t PropNameData::indexes[8]={0x20,0x1660,0x5294,0xacd0,0xacd0,0xacd0,0x31,0};
+const int32_t PropNameData::indexes[8]={0x20,0x1690,0x5337,0xae61,0xae61,0xae61,0x31,0};
-const int32_t PropNameData::valueMaps[1424]={
-6,0,0x48,0,0xf1,0x368,0xf1,0x37e,0xf1,0x393,0xf1,0x3a9,0xf1,0x3b4,0xf1,0x3d5,
-0xf1,0x3e5,0xf1,0x3f4,0xf1,0x402,0xf1,0x426,0xf1,0x43d,0xf1,0x455,0xf1,0x46c,0xf1,0x47b,
-0xf1,0x48a,0xf1,0x49b,0xf1,0x4a9,0xf1,0x4bb,0xf1,0x4d5,0xf1,0x4f0,0xf1,0x505,0xf1,0x522,
-0xf1,0x533,0xf1,0x53e,0xf1,0x55d,0xf1,0x573,0xf1,0x584,0xf1,0x594,0xf1,0x5af,0xf1,0x5c8,
-0xf1,0x5d9,0xf1,0x5f3,0xf1,0x606,0xf1,0x616,0xf1,0x630,0xf1,0x649,0xf1,0x660,0xf1,0x674,
-0xf1,0x68a,0xf1,0x69e,0xf1,0x6b4,0xf1,0x6ce,0xf1,0x6e6,0xf1,0x702,0xf1,0x70a,0xf1,0x712,
-0xf1,0x71a,0xf1,0x722,0xf1,0x72b,0xf1,0x738,0xf1,0x74b,0xf1,0x768,0xf1,0x785,0xf1,0x7a2,
-0xf1,0x7c0,0xf1,0x7de,0xf1,0x802,0xf1,0x80f,0xf1,0x829,0xf1,0x83e,0xf1,0x859,0xf1,0x870,
-0xf1,0x887,0xf1,0x8a9,0xf1,0x8c8,0xf1,0x8e1,0xf1,0x90e,0xf1,0x947,0xf1,0x978,0xf1,0x9a7,
-0xf1,0x9d6,0xf1,0x1000,0x1019,0x9eb,0x16d,0xc0b,0x188,0x3279,0xf7,0x3298,0x2d4,0x33d6,0x2ea,0x3430,
-0x2f4,0x368d,0x316,0x3fb8,0x382,0x4028,0x38c,0x42c2,0x3bb,0x4300,0x3c3,0x4e45,0x48f,0x4ec3,0x499,0x4ee8,
-0x49f,0x4f02,0x4a5,0x4f23,0x4ac,0x4f3d,0xf7,0x4f62,0xf7,0x4f88,0x4b3,0x5032,0x4c9,0x50ab,0x4dc,0x515d,
-0x4f7,0x5194,0x4fe,0x5374,0x512,0x57f4,0x53a,0x2000,0x2001,0x5853,0x542,0x3000,0x3001,0x58df,0,0x4000,
-0x400e,0x58f1,0,0x58fa,0,0x5914,0,0x5925,0,0x5936,0,0x594c,0,0x5955,0,0x5972,
-0,0x5990,0,0x59ae,0,0x59cc,0,0x59e2,0,0x59f6,0,0x5a0c,0,0x7000,0x7001,0x5a25,
-0,0x844,0x12,0,1,0x12,0x20,0x862,0x4a,0,1,6,7,8,9,0xa,
-0xb,0xc,0xd,0xe,0xf,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,
-0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x54,0x5b,0x67,0x6b,0x76,0x7a,
-0x81,0x82,0x84,0x85,0xc8,0xca,0xd6,0xd8,0xda,0xdc,0xde,0xe0,0xe2,0xe4,0xe6,0xe8,
-0xe9,0xea,0xf0,0x2e,0x40,0x4c,0x5e,0x68,0x79,0x84,0x91,0x9e,0xab,0xb8,0xc5,0xd2,
-0xdf,0xec,0xf9,0x106,0x113,0x120,0x12d,0x13a,0x147,0x154,0x161,0x16e,0x17b,0x188,0x195,0x1a2,
-0x1af,0x1bc,0x1c9,0x1d6,0x1e3,0x1f0,0x1fd,0x20c,0x21b,0x22a,0x239,0x248,0x257,0x266,0x275,0x28f,
-0x2a3,0x2b7,0x2d2,0x2e1,0x2ea,0x2fa,0x302,0x30b,0x31a,0x323,0x333,0x344,0x355,0xa03,1,0,
-0x17,0x9fa,0xa0b,0xa1c,0xa30,0xa47,0xa5f,0xa71,0xa86,0xa9d,0xab2,0xac2,0xad4,0xaf1,0xb0d,0xb1f,
-0xb3c,0xb58,0xb74,0xb89,0xb9e,0xbb8,0xbd3,0xbee,0xba5,1,0,0x148,0xc16,0xc23,0xc36,0xc5e,
-0xc7c,0xc9a,0xcb2,0xcdd,0xd07,0xd1f,0xd32,0xd45,0xd54,0xd63,0xd72,0xd81,0xd98,0xda9,0xdbc,0xdcf,
-0xddc,0xde9,0xdf8,0xe09,0xe1e,0xe2f,0xe3a,0xe43,0xe54,0xe65,0xe78,0xe8a,0xe9d,0xeb0,0xeef,0xefc,
-0xf09,0xf16,0xf2b,0xf5b,0xf75,0xf96,0xfc1,0xfe4,0x1042,0x1069,0x1084,0x1093,0x10ba,0x10e2,0x1105,0x1128,
-0x1152,0x116b,0x118a,0x11ad,0x11d1,0x11e4,0x11fe,0x1228,0x1240,0x1268,0x1291,0x12a4,0x12b7,0x12ca,0x12f1,0x1300,
-0x1320,0x134e,0x136c,0x139a,0x13b6,0x13d1,0x13ea,0x1403,0x1424,0x1454,0x1473,0x1495,0x14c9,0x14f6,0x153b,0x155c,
-0x1586,0x15a7,0x15d0,0x15e3,0x1616,0x162d,0x163c,0x164d,0x1678,0x168f,0x16c0,0x16ee,0x1731,0x173c,0x1775,0x1786,
-0x1797,0x17a4,0x17b7,0x17f1,0x1815,0x1839,0x1873,0x18ab,0x18d6,0x18ee,0x191a,0x1946,0x1953,0x1962,0x197f,0x19a1,
-0x19cf,0x19ef,0x1a16,0x1a3d,0x1a5c,0x1a6f,0x1a80,0x1a91,0x1ab6,0x1adb,0x1b02,0x1b36,0x1b63,0x1b81,0x1b94,0x1bad,
-0x1be6,0x1bf5,0x1c15,0x1c37,0x1c59,0x1c70,0x1c87,0x1cb4,0x1ccd,0x1ce6,0x1d17,0x1d41,0x1d5c,0x1d6f,0x1d8e,0x1d97,
-0x1daa,0x1dc8,0x1de6,0x1df9,0x1e10,0x1e25,0x1e5a,0x1e7e,0x1e93,0x1ea2,0x1eb5,0x1ed9,0x1ee2,0x1f06,0x1f1d,0x1f30,
-0x1f3f,0x1f4a,0x1f6b,0x1f83,0x1f92,0x1fa1,0x1fb0,0x1fc7,0x1fdc,0x1ff1,0x202a,0x203d,0x2059,0x2064,0x2071,0x209f,
-0x20c3,0x20e6,0x20f9,0x211b,0x212e,0x2149,0x216c,0x218f,0x21b4,0x21c5,0x21f4,0x2221,0x2238,0x2253,0x2262,0x228d,
-0x22c5,0x22ff,0x232d,0x233e,0x234b,0x236f,0x237e,0x239a,0x23b4,0x23d1,0x2409,0x241e,0x244b,0x246a,0x2498,0x24b8,
-0x24ec,0x24fb,0x2525,0x2548,0x2573,0x257e,0x258f,0x25aa,0x25ce,0x25db,0x25f0,0x2617,0x2642,0x2679,0x268c,0x269d,
-0x26cd,0x26de,0x26ed,0x2702,0x2720,0x2733,0x2746,0x275d,0x277a,0x2785,0x278e,0x27b0,0x27c5,0x27ea,0x2801,0x282a,
-0x2845,0x285a,0x2873,0x2894,0x28c9,0x28da,0x290b,0x292f,0x2940,0x2959,0x2964,0x2991,0x29b3,0x29e1,0x2a14,0x2a23,
-0x2a34,0x2a51,0x2a93,0x2aba,0x2ac7,0x2adc,0x2b00,0x2b26,0x2b5f,0x2b70,0x2b94,0x2b9f,0x2bac,0x2bbb,0x2be0,0x2c0e,
-0x2c2a,0x2c47,0x2c54,0x2c65,0x2c83,0x2ca6,0x2cc3,0x2cd0,0x2cf0,0x2d0d,0x2d2e,0x2d57,0x2d68,0x2d87,0x2da0,0x2db9,
-0x2dca,0x2e13,0x2e24,0x2e3d,0x2e6c,0x2e99,0x2ebe,0x2f00,0x2f1c,0x2f2b,0x2f42,0x2f70,0x2f89,0x2fb2,0x2fcc,0x3007,
-0x3025,0x3034,0x3054,0x306f,0x3093,0x30af,0x30cd,0x30eb,0x3102,0x3111,0x311c,0x3159,0x316c,0x3196,0x31b6,0x31e4,
-0x3208,0x3230,0x3255,0x3260,0x1fa9,1,0,0x12,0x32af,0x32bf,0x32d2,0x32e2,0x32f2,0x3301,0x3311,0x3323,
-0x3336,0x3348,0x3358,0x3368,0x3377,0x3386,0x3396,0x33a3,0x33b2,0x33c6,0x2067,1,0,6,0x33eb,0x33f6,
-0x3403,0x3410,0x341d,0x3428,0x20ab,1,0,0x1e,0x3445,0x3454,0x3469,0x347e,0x3493,0x34a7,0x34b8,0x34cc,
-0x34df,0x34f0,0x3509,0x351b,0x352c,0x3540,0x3553,0x356b,0x357d,0x3588,0x3598,0x35a6,0x35bb,0x35d0,0x35e6,0x3600,
-0x3616,0x3626,0x363a,0x364e,0x365f,0x3677,0x22d6,1,0,0x68,0x369f,0x36c2,0x36cb,0x36d8,0x36e3,0x36ec,
-0x36f7,0x3700,0x3719,0x371e,0x3727,0x3744,0x374d,0x375a,0x3763,0x3787,0x378e,0x3797,0x37aa,0x37b5,0x37be,0x37c9,
-0x37e2,0x37eb,0x37fa,0x3805,0x380e,0x3819,0x3822,0x3829,0x3832,0x383d,0x3846,0x385f,0x3868,0x3875,0x3880,0x3891,
-0x389c,0x38b1,0x38c8,0x38d1,0x38da,0x38f3,0x38fe,0x3907,0x3910,0x3927,0x3944,0x394f,0x3960,0x396b,0x3972,0x397f,
-0x398c,0x39b9,0x39ce,0x39d7,0x39f2,0x3a15,0x3a36,0x3a57,0x3a7c,0x3aa3,0x3ac4,0x3ae7,0x3b08,0x3b2f,0x3b50,0x3b75,
-0x3b94,0x3bb3,0x3bd2,0x3bef,0x3c10,0x3c31,0x3c54,0x3c79,0x3c98,0x3cb7,0x3cd8,0x3cff,0x3d24,0x3d43,0x3d64,0x3d87,
-0x3da2,0x3dbb,0x3dd6,0x3def,0x3e0c,0x3e27,0x3e44,0x3e63,0x3e80,0x3e9d,0x3ebc,0x3ed9,0x3ef4,0x3f11,0x3f2e,0x3f61,
-0x3f88,0x3f9b,0x2639,1,0,6,0x3fc9,0x3fd8,0x3fe8,0x3ff8,0x4008,0x4019,0x2697,1,0,0x2b,
-0x4037,0x4043,0x4051,0x4060,0x406f,0x407f,0x4090,0x40a4,0x40b9,0x40cf,0x40e2,0x40f6,0x4106,0x410f,0x411a,0x412a,
-0x4146,0x4158,0x4166,0x4175,0x4181,0x4196,0x41aa,0x41bd,0x41cb,0x41df,0x41ed,0x41f7,0x4209,0x4215,0x4223,0x4233,
-0x423a,0x4241,0x4248,0x424f,0x4256,0x426c,0x428d,0x870,0x429f,0x42aa,0x42b9,0x28f0,1,0,4,0x42d3,
-0x42de,0x42ea,0x42f4,0x2916,1,0,0xc8,0x430b,0x4318,0x432d,0x433a,0x4349,0x4357,0x4366,0x4375,0x4387,
-0x4396,0x43a4,0x43b5,0x43c4,0x43d3,0x43e0,0x43ec,0x43fb,0x440a,0x4414,0x4421,0x442e,0x443d,0x444b,0x445a,0x4466,
-0x4470,0x447c,0x448c,0x449c,0x44aa,0x44b6,0x44c7,0x44d3,0x44df,0x44ed,0x44fa,0x4506,0x4513,0xe2f,0x4520,0x452e,
-0x4548,0x4551,0x455f,0x456d,0x4579,0x4588,0x4596,0x45a4,0x45b0,0x45bf,0x45cd,0x45db,0x45e8,0x45f7,0x4612,0x4621,
-0x4632,0x4643,0x4656,0x4668,0x4677,0x4689,0x4698,0x46a4,0x46af,0x1f3f,0x46bc,0x46c7,0x46d2,0x46dd,0x46e8,0x4703,
-0x470e,0x4719,0x4724,0x4737,0x474b,0x4756,0x4765,0x4774,0x477f,0x478a,0x4797,0x47a6,0x47b4,0x47bf,0x47da,0x47e4,
-0x47f5,0x4806,0x4815,0x4826,0x4831,0x483c,0x4847,0x4852,0x485d,0x4868,0x4873,0x487d,0x4888,0x4898,0x48a3,0x48b1,
-0x48be,0x48c9,0x48d8,0x48e5,0x48f2,0x4901,0x490e,0x491f,0x4931,0x4941,0x494c,0x495f,0x4976,0x4984,0x4991,0x499c,
-0x49a9,0x49ba,0x49d6,0x49ec,0x49f7,0x4a14,0x4a24,0x4a33,0x4a3e,0x4a49,0x2059,0x4a55,0x4a60,0x4a78,0x4a88,0x4a97,
-0x4aa5,0x4ab3,0x4abe,0x4ac9,0x4add,0x4af4,0x4b0c,0x4b1c,0x4b2c,0x4b3c,0x4b4e,0x4b59,0x4b64,0x4b6e,0x4b7a,0x4b88,
-0x4b9b,0x4ba7,0x4bb4,0x4bbf,0x4bdb,0x4be8,0x4bf6,0x4c0f,0x2959,0x4c1e,0x277a,0x4c2b,0x4c39,0x4c4b,0x4c59,0x4c65,
-0x4c75,0x2b94,0x4c83,0x4c8f,0x4c9a,0x4ca5,0x4cb0,0x4cc4,0x4cd2,0x4ce9,0x4cf5,0x4d09,0x4d17,0x4d29,0x4d3f,0x4d4d,
-0x4d5f,0x4d6d,0x4d8a,0x4d9c,0x4da9,0x4dba,0x4dcc,0x4de6,0x4df3,0x4e06,0x4e17,0x3111,0x4e24,0x3255,0x4e33,0x3370,
-1,0,6,0x4e5f,0x4e72,0x4e82,0x4e90,0x4ea1,0x4eb1,0x33cc,0x12,0,1,0x4edb,0x4ee1,0x33d9,
-0x12,0,1,0x4edb,0x4ee1,0x33e6,1,0,3,0x4edb,0x4ee1,0x4f1a,0x33fc,1,0,3,
-0x4edb,0x4ee1,0x4f1a,0x3412,1,0,0x12,0x4fa4,0x4fae,0x4fba,0x4fc1,0x4fcc,0x4fd1,0x4fd8,0x4fdf,0x4fe8,
-0x4fed,0x4ff2,0x5002,0x870,0x429f,0x500e,0x42aa,0x501e,0x42b9,0x34bb,1,0,0xf,0x4fa4,0x5045,0x504f,
-0x5059,0x5064,0x4175,0x506e,0x507a,0x5082,0x5089,0x5093,0x4fba,0x4fc1,0x4fd1,0x509d,0x3542,1,0,0x17,
-0x4fa4,0x50ba,0x5059,0x50c6,0x50d3,0x50e1,0x4175,0x50ec,0x4fba,0x50fd,0x4fd1,0x510c,0x511a,0x870,0x428d,0x5126,
-0x5137,0x429f,0x500e,0x42aa,0x501e,0x42b9,0x5148,0x365f,1,0,3,0x517b,0x5183,0x518b,0x3678,1,
-0,0x10,0x51b4,0x51bb,0x51ca,0x51eb,0x520e,0x5219,0x5238,0x524f,0x525c,0x5265,0x5284,0x52b7,0x52d2,0x5301,
-0x531e,0x5343,0x3711,1,0,0x24,0x5392,0x539f,0x53b2,0x53bf,0x53ec,0x5411,0x5426,0x5445,0x5466,0x5493,
-0x54cc,0x54ef,0x5512,0x553f,0x5574,0x559b,0x55c4,0x55fb,0x562a,0x564b,0x5670,0x567f,0x56a2,0x56b9,0x56c6,0x56d5,
-0x56f2,0x570b,0x572e,0x5753,0x576c,0x5781,0x5790,0x57a1,0x57ae,0x57cf,0x38e1,1,0,4,0x580d,0x5818,
-0x5830,0x5848,0x391d,0x36,1,2,4,8,0xe,0x10,0x20,0x3e,0x40,0x80,0x100,0x1c0,
-0x200,0x400,0x800,0xe00,0x1000,0x2000,0x4000,0x7000,0x8000,0x10000,0x20000,0x40000,0x78001,0x80000,0x100000,0x200000,
-0x400000,0x800000,0x1000000,0x2000000,0x4000000,0x8000000,0xf000000,0x10000000,0x20000000,0x30f80000,0x3445,0x3454,0x3469,0x347e,0x5881,0x3493,
-0x34a7,0x5877,0x34b8,0x34cc,0x34df,0x5892,0x34f0,0x3509,0x351b,0x58a9,0x352c,0x3540,0x3553,0x58d2,0x356b,0x357d,
-0x3588,0x3598,0x586e,0x35a6,0x35bb,0x35d0,0x35e6,0x3600,0x3616,0x3626,0x363a,0x364e,0x58c8,0x365f,0x3677,0x58b3
+const int32_t PropNameData::valueMaps[1436]={
+6,0,0x4b,0,0xf7,0x368,0xf7,0x37e,0xf7,0x393,0xf7,0x3a9,0xf7,0x3b4,0xf7,0x3d5,
+0xf7,0x3e5,0xf7,0x3f4,0xf7,0x402,0xf7,0x426,0xf7,0x43d,0xf7,0x455,0xf7,0x46c,0xf7,0x47b,
+0xf7,0x48a,0xf7,0x49b,0xf7,0x4a9,0xf7,0x4bb,0xf7,0x4d5,0xf7,0x4f0,0xf7,0x505,0xf7,0x522,
+0xf7,0x533,0xf7,0x53e,0xf7,0x55d,0xf7,0x573,0xf7,0x584,0xf7,0x594,0xf7,0x5af,0xf7,0x5c8,
+0xf7,0x5d9,0xf7,0x5f3,0xf7,0x606,0xf7,0x616,0xf7,0x630,0xf7,0x649,0xf7,0x660,0xf7,0x674,
+0xf7,0x68a,0xf7,0x69e,0xf7,0x6b4,0xf7,0x6ce,0xf7,0x6e6,0xf7,0x702,0xf7,0x70a,0xf7,0x712,
+0xf7,0x71a,0xf7,0x722,0xf7,0x72b,0xf7,0x738,0xf7,0x74b,0xf7,0x768,0xf7,0x785,0xf7,0x7a2,
+0xf7,0x7c0,0xf7,0x7de,0xf7,0x802,0xf7,0x80f,0xf7,0x829,0xf7,0x83e,0xf7,0x859,0xf7,0x870,
+0xf7,0x887,0xf7,0x8a9,0xf7,0x8c8,0xf7,0x8e1,0xf7,0x90e,0xf7,0x947,0xf7,0x978,0xf7,0x9a7,
+0xf7,0x9d6,0xf7,0x9eb,0xf7,0xa04,0xf7,0xa2f,0xf7,0x1000,0x1019,0xa60,0x173,0xc80,0x18e,0x331c,
+0xfd,0x333b,0x2db,0x3479,0x2f1,0x34d3,0x2fb,0x3730,0x31d,0x405b,0x389,0x40cb,0x393,0x43b0,0x3c7,0x43ee,
+0x3cf,0x4f33,0x49b,0x4fb1,0x4a5,0x4fd6,0x4ab,0x4ff0,0x4b1,0x5011,0x4b8,0x502b,0xfd,0x5050,0xfd,0x5076,
+0x4bf,0x5120,0x4d5,0x5199,0x4e8,0x524b,0x503,0x5282,0x50a,0x5462,0x51e,0x58e2,0x546,0x2000,0x2001,0x5941,
+0x54e,0x3000,0x3001,0x59cd,0,0x4000,0x400e,0x59df,0,0x59e8,0,0x5a02,0,0x5a13,0,0x5a24,
+0,0x5a3a,0,0x5a43,0,0x5a60,0,0x5a7e,0,0x5a9c,0,0x5aba,0,0x5ad0,0,0x5ae4,
+0,0x5afa,0,0x7000,0x7001,0x5b13,0,0x87a,0x12,0,1,0x12,0x20,0x898,0x4a,0,
+1,6,7,8,9,0xa,0xb,0xc,0xd,0xe,0xf,0x10,0x11,0x12,0x13,0x14,
+0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,
+0x54,0x5b,0x67,0x6b,0x76,0x7a,0x81,0x82,0x84,0x85,0xc8,0xca,0xd6,0xd8,0xda,0xdc,
+0xde,0xe0,0xe2,0xe4,0xe6,0xe8,0xe9,0xea,0xf0,0x2e,0x40,0x4c,0x5e,0x68,0x79,0x84,
+0x91,0x9e,0xab,0xb8,0xc5,0xd2,0xdf,0xec,0xf9,0x106,0x113,0x120,0x12d,0x13a,0x147,0x154,
+0x161,0x16e,0x17b,0x188,0x195,0x1a2,0x1af,0x1bc,0x1c9,0x1d6,0x1e3,0x1f0,0x1fd,0x20c,0x21b,0x22a,
+0x239,0x248,0x257,0x266,0x275,0x28f,0x2a3,0x2b7,0x2d2,0x2e1,0x2ea,0x2fa,0x302,0x30b,0x31a,0x323,
+0x333,0x344,0x355,0xa39,1,0,0x17,0xa6f,0xa80,0xa91,0xaa5,0xabc,0xad4,0xae6,0xafb,0xb12,
+0xb27,0xb37,0xb49,0xb66,0xb82,0xb94,0xbb1,0xbcd,0xbe9,0xbfe,0xc13,0xc2d,0xc48,0xc63,0xbdb,1,
+0,0x149,0xc8b,0xc98,0xcab,0xcd3,0xcf1,0xd0f,0xd27,0xd52,0xd7c,0xd94,0xda7,0xdba,0xdc9,0xdd8,
+0xde7,0xdf6,0xe0d,0xe1e,0xe31,0xe44,0xe51,0xe5e,0xe6d,0xe7e,0xe93,0xea4,0xeaf,0xeb8,0xec9,0xeda,
+0xeed,0xeff,0xf12,0xf25,0xf64,0xf71,0xf7e,0xf8b,0xfa0,0xfd0,0xfea,0x100b,0x1036,0x1059,0x10b7,0x10de,
+0x10f9,0x1108,0x112f,0x1157,0x117a,0x119d,0x11c7,0x11e0,0x11ff,0x1222,0x1246,0x1259,0x1273,0x129d,0x12b5,0x12dd,
+0x1306,0x1319,0x132c,0x133f,0x1366,0x1375,0x1395,0x13c3,0x13e1,0x140f,0x142b,0x1446,0x145f,0x1478,0x1499,0x14c9,
+0x14e8,0x150a,0x153e,0x156b,0x15b0,0x15d1,0x15fb,0x161c,0x1645,0x1658,0x168b,0x16a2,0x16b1,0x16c2,0x16ed,0x1704,
+0x1735,0x1763,0x17a6,0x17b1,0x17ea,0x17fb,0x180c,0x1819,0x182c,0x1866,0x188a,0x18ae,0x18e8,0x1920,0x194b,0x1963,
+0x198f,0x19bb,0x19c8,0x19d7,0x19f4,0x1a16,0x1a44,0x1a64,0x1a8b,0x1ab2,0x1ad1,0x1ae4,0x1af5,0x1b06,0x1b2b,0x1b50,
+0x1b77,0x1bab,0x1bd8,0x1bf6,0x1c09,0x1c22,0x1c5b,0x1c6a,0x1c8a,0x1cac,0x1cce,0x1ce5,0x1cfc,0x1d29,0x1d42,0x1d5b,
+0x1d8c,0x1db6,0x1dd1,0x1de4,0x1e03,0x1e0c,0x1e1f,0x1e3d,0x1e5b,0x1e6e,0x1e85,0x1e9a,0x1ecf,0x1ef3,0x1f08,0x1f17,
+0x1f2a,0x1f4e,0x1f57,0x1f7b,0x1f92,0x1fa5,0x1fb4,0x1fbf,0x1fe0,0x1ff8,0x2007,0x2016,0x2025,0x203c,0x2051,0x2066,
+0x209f,0x20b2,0x20ce,0x20d9,0x20e6,0x2114,0x2138,0x215b,0x216e,0x2190,0x21a3,0x21be,0x21e1,0x2204,0x2229,0x223a,
+0x2269,0x2296,0x22ad,0x22c8,0x22d7,0x2302,0x233a,0x2374,0x23a2,0x23b3,0x23c0,0x23e4,0x23f3,0x240f,0x2429,0x2446,
+0x247e,0x2493,0x24c0,0x24df,0x250d,0x252d,0x2561,0x2570,0x259a,0x25bd,0x25e8,0x25f3,0x2604,0x261f,0x2643,0x2650,
+0x2665,0x268c,0x26b7,0x26ee,0x2701,0x2712,0x2742,0x2753,0x2762,0x2777,0x2795,0x27a8,0x27bb,0x27d2,0x27ef,0x27fa,
+0x2803,0x2825,0x283a,0x285f,0x2876,0x289f,0x28ba,0x28cf,0x28e8,0x2909,0x293e,0x294f,0x2980,0x29a4,0x29b5,0x29ce,
+0x29d9,0x2a06,0x2a28,0x2a56,0x2a89,0x2a98,0x2aa9,0x2ac6,0x2b08,0x2b2f,0x2b3c,0x2b51,0x2b75,0x2b9b,0x2bd4,0x2be5,
+0x2c09,0x2c14,0x2c21,0x2c30,0x2c55,0x2c83,0x2c9f,0x2cbc,0x2cc9,0x2cda,0x2cf8,0x2d1b,0x2d38,0x2d45,0x2d65,0x2d82,
+0x2da3,0x2dcc,0x2ddd,0x2dfc,0x2e15,0x2e2e,0x2e3f,0x2e88,0x2e99,0x2eb2,0x2ee1,0x2f0e,0x2f33,0x2f75,0x2f91,0x2fa0,
+0x2fb7,0x2fe5,0x2ffe,0x3027,0x3041,0x307c,0x309a,0x30a9,0x30c9,0x30e4,0x3108,0x3124,0x3142,0x3160,0x3177,0x3186,
+0x3191,0x31ce,0x31e1,0x320b,0x322b,0x3259,0x327d,0x32a5,0x32ca,0x32d5,0x32ee,0x1fe5,1,0,0x12,0x3352,
+0x3362,0x3375,0x3385,0x3395,0x33a4,0x33b4,0x33c6,0x33d9,0x33eb,0x33fb,0x340b,0x341a,0x3429,0x3439,0x3446,0x3455,
+0x3469,0x20a3,1,0,6,0x348e,0x3499,0x34a6,0x34b3,0x34c0,0x34cb,0x20e7,1,0,0x1e,0x34e8,
+0x34f7,0x350c,0x3521,0x3536,0x354a,0x355b,0x356f,0x3582,0x3593,0x35ac,0x35be,0x35cf,0x35e3,0x35f6,0x360e,0x3620,
+0x362b,0x363b,0x3649,0x365e,0x3673,0x3689,0x36a3,0x36b9,0x36c9,0x36dd,0x36f1,0x3702,0x371a,0x2312,1,0,
+0x68,0x3742,0x3765,0x376e,0x377b,0x3786,0x378f,0x379a,0x37a3,0x37bc,0x37c1,0x37ca,0x37e7,0x37f0,0x37fd,0x3806,
+0x382a,0x3831,0x383a,0x384d,0x3858,0x3861,0x386c,0x3885,0x388e,0x389d,0x38a8,0x38b1,0x38bc,0x38c5,0x38cc,0x38d5,
+0x38e0,0x38e9,0x3902,0x390b,0x3918,0x3923,0x3934,0x393f,0x3954,0x396b,0x3974,0x397d,0x3996,0x39a1,0x39aa,0x39b3,
+0x39ca,0x39e7,0x39f2,0x3a03,0x3a0e,0x3a15,0x3a22,0x3a2f,0x3a5c,0x3a71,0x3a7a,0x3a95,0x3ab8,0x3ad9,0x3afa,0x3b1f,
+0x3b46,0x3b67,0x3b8a,0x3bab,0x3bd2,0x3bf3,0x3c18,0x3c37,0x3c56,0x3c75,0x3c92,0x3cb3,0x3cd4,0x3cf7,0x3d1c,0x3d3b,
+0x3d5a,0x3d7b,0x3da2,0x3dc7,0x3de6,0x3e07,0x3e2a,0x3e45,0x3e5e,0x3e79,0x3e92,0x3eaf,0x3eca,0x3ee7,0x3f06,0x3f23,
+0x3f40,0x3f5f,0x3f7c,0x3f97,0x3fb4,0x3fd1,0x4004,0x402b,0x403e,0x2675,1,0,6,0x406c,0x407b,0x408b,
+0x409b,0x40ab,0x40bc,0x26d3,1,0,0x30,0x40da,0x40e6,0x40f4,0x4103,0x4112,0x4122,0x4133,0x4147,0x415c,
+0x4172,0x4185,0x4199,0x41a9,0x41b2,0x41bd,0x41cd,0x41e9,0x41fb,0x4209,0x4218,0x4224,0x4239,0x424d,0x4260,0x426e,
+0x4282,0x4290,0x429a,0x42ac,0x42b8,0x42c6,0x42d6,0x42dd,0x42e4,0x42eb,0x42f2,0x42f9,0x430f,0x4330,0x870,0x4342,
+0x434d,0x435c,0x4365,0x4370,0x4383,0x4394,0x43a5,0x2963,1,0,4,0x43c1,0x43cc,0x43d8,0x43e2,0x2989,
+1,0,0xc8,0x43f9,0x4406,0x441b,0x4428,0x4437,0x4445,0x4454,0x4463,0x4475,0x4484,0x4492,0x44a3,0x44b2,
+0x44c1,0x44ce,0x44da,0x44e9,0x44f8,0x4502,0x450f,0x451c,0x452b,0x4539,0x4548,0x4554,0x455e,0x456a,0x457a,0x458a,
+0x4598,0x45a4,0x45b5,0x45c1,0x45cd,0x45db,0x45e8,0x45f4,0x4601,0xea4,0x460e,0x461c,0x4636,0x463f,0x464d,0x465b,
+0x4667,0x4676,0x4684,0x4692,0x469e,0x46ad,0x46bb,0x46c9,0x46d6,0x46e5,0x4700,0x470f,0x4720,0x4731,0x4744,0x4756,
+0x4765,0x4777,0x4786,0x4792,0x479d,0x1fb4,0x47aa,0x47b5,0x47c0,0x47cb,0x47d6,0x47f1,0x47fc,0x4807,0x4812,0x4825,
+0x4839,0x4844,0x4853,0x4862,0x486d,0x4878,0x4885,0x4894,0x48a2,0x48ad,0x48c8,0x48d2,0x48e3,0x48f4,0x4903,0x4914,
+0x491f,0x492a,0x4935,0x4940,0x494b,0x4956,0x4961,0x496b,0x4976,0x4986,0x4991,0x499f,0x49ac,0x49b7,0x49c6,0x49d3,
+0x49e0,0x49ef,0x49fc,0x4a0d,0x4a1f,0x4a2f,0x4a3a,0x4a4d,0x4a64,0x4a72,0x4a7f,0x4a8a,0x4a97,0x4aa8,0x4ac4,0x4ada,
+0x4ae5,0x4b02,0x4b12,0x4b21,0x4b2c,0x4b37,0x20ce,0x4b43,0x4b4e,0x4b66,0x4b76,0x4b85,0x4b93,0x4ba1,0x4bac,0x4bb7,
+0x4bcb,0x4be2,0x4bfa,0x4c0a,0x4c1a,0x4c2a,0x4c3c,0x4c47,0x4c52,0x4c5c,0x4c68,0x4c76,0x4c89,0x4c95,0x4ca2,0x4cad,
+0x4cc9,0x4cd6,0x4ce4,0x4cfd,0x29ce,0x4d0c,0x27ef,0x4d19,0x4d27,0x4d39,0x4d47,0x4d53,0x4d63,0x2c09,0x4d71,0x4d7d,
+0x4d88,0x4d93,0x4d9e,0x4db2,0x4dc0,0x4dd7,0x4de3,0x4df7,0x4e05,0x4e17,0x4e2d,0x4e3b,0x4e4d,0x4e5b,0x4e78,0x4e8a,
+0x4e97,0x4ea8,0x4eba,0x4ed4,0x4ee1,0x4ef4,0x4f05,0x3186,0x4f12,0x32ca,0x4f21,0x33e3,1,0,6,0x4f4d,
+0x4f60,0x4f70,0x4f7e,0x4f8f,0x4f9f,0x343f,0x12,0,1,0x4fc9,0x4fcf,0x344c,0x12,0,1,0x4fc9,
+0x4fcf,0x3459,1,0,3,0x4fc9,0x4fcf,0x5008,0x346f,1,0,3,0x4fc9,0x4fcf,0x5008,0x3485,
+1,0,0x12,0x5092,0x509c,0x50a8,0x50af,0x50ba,0x50bf,0x50c6,0x50cd,0x50d6,0x50db,0x50e0,0x50f0,0x870,
+0x4342,0x50fc,0x434d,0x510c,0x435c,0x352e,1,0,0xf,0x5092,0x5133,0x513d,0x5147,0x5152,0x4218,0x515c,
+0x5168,0x5170,0x5177,0x5181,0x50a8,0x50af,0x50bf,0x518b,0x35b5,1,0,0x17,0x5092,0x51a8,0x5147,0x51b4,
+0x51c1,0x51cf,0x4218,0x51da,0x50a8,0x51eb,0x50bf,0x51fa,0x5208,0x870,0x4330,0x5214,0x5225,0x4342,0x50fc,0x434d,
+0x510c,0x435c,0x5236,0x36d2,1,0,3,0x5269,0x5271,0x5279,0x36eb,1,0,0x10,0x52a2,0x52a9,
+0x52b8,0x52d9,0x52fc,0x5307,0x5326,0x533d,0x534a,0x5353,0x5372,0x53a5,0x53c0,0x53ef,0x540c,0x5431,0x3784,1,
+0,0x24,0x5480,0x548d,0x54a0,0x54ad,0x54da,0x54ff,0x5514,0x5533,0x5554,0x5581,0x55ba,0x55dd,0x5600,0x562d,
+0x5662,0x5689,0x56b2,0x56e9,0x5718,0x5739,0x575e,0x576d,0x5790,0x57a7,0x57b4,0x57c3,0x57e0,0x57f9,0x581c,0x5841,
+0x585a,0x586f,0x587e,0x588f,0x589c,0x58bd,0x3954,1,0,4,0x58fb,0x5906,0x591e,0x5936,0x3990,0x36,
+1,2,4,8,0xe,0x10,0x20,0x3e,0x40,0x80,0x100,0x1c0,0x200,0x400,0x800,0xe00,
+0x1000,0x2000,0x4000,0x7000,0x8000,0x10000,0x20000,0x40000,0x78001,0x80000,0x100000,0x200000,0x400000,0x800000,0x1000000,0x2000000,
+0x4000000,0x8000000,0xf000000,0x10000000,0x20000000,0x30f80000,0x34e8,0x34f7,0x350c,0x3521,0x596f,0x3536,0x354a,0x5965,0x355b,0x356f,
+0x3582,0x5980,0x3593,0x35ac,0x35be,0x5997,0x35cf,0x35e3,0x35f6,0x59c0,0x360e,0x3620,0x362b,0x363b,0x595c,0x3649,
+0x365e,0x3673,0x3689,0x36a3,0x36b9,0x36c9,0x36dd,0x36f1,0x59b6,0x3702,0x371a,0x59a1
};
-const uint8_t PropNameData::bytesTries[15412]={
+const uint8_t PropNameData::bytesTries[15527]={
0,0x15,0x6d,0xc3,0xc7,0x73,0xc2,0x12,0x76,0x7a,0x76,0x6a,0x77,0xa2,0x52,0x78,
1,0x64,0x50,0x69,0x10,0x64,1,0x63,0x30,0x73,0x62,0x13,0x74,0x61,0x72,0x74,
0x63,0x60,0x16,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x61,0x13,0x69,0x67,0x69,0x74,
@@ -166,913 +167,920 @@ const uint8_t PropNameData::bytesTries[15412]={
0x30,0x77,0x10,0x73,0x77,0x11,0x79,0x6e,0x75,0x12,0x65,0x72,0x6e,1,0x73,0x38,
0x77,0x18,0x68,0x69,0x74,0x65,0x73,0x70,0x61,0x63,0x65,0x77,0x14,0x79,0x6e,0x74,
0x61,0x78,0x75,0x10,0x6d,0x9f,1,0x6d,0x3c,0x75,0x1a,0x6f,0x74,0x61,0x74,0x69,
-0x6f,0x6e,0x6d,0x61,0x72,0x6b,0x53,0x12,0x61,0x72,0x6b,0x53,0x66,0xc1,0xf8,0x69,
-0xc1,0x3c,0x69,0xa2,0x6f,0x6a,0xa4,9,0x6c,4,0x62,0xc3,8,0x63,0x8c,0x65,
+0x6f,0x6e,0x6d,0x61,0x72,0x6b,0x53,0x12,0x61,0x72,0x6b,0x53,0x66,0xc2,0x2e,0x69,
+0xc1,0x72,0x69,0xa2,0x6f,0x6a,0xa4,0x3f,0x6c,4,0x62,0xc3,8,0x63,0x8c,0x65,
0x98,0x69,0xa2,0x56,0x6f,2,0x65,0x4b,0x67,0x4c,0x77,0x11,0x65,0x72,0x4c,0x13,
0x63,0x61,0x73,0x65,0x4c,0x16,0x6d,0x61,0x70,0x70,0x69,0x6e,0x67,0xd9,0x40,4,
0x11,0x69,0x63,0x1f,0x61,0x6c,0x6f,0x72,0x64,0x65,0x72,0x65,0x78,0x63,0x65,0x70,
0x74,0x69,0x6f,0x6e,0x4b,0xd8,0x40,4,0x11,0x63,0x63,0xc3,0x10,0x18,0x61,0x64,
0x63,0x61,0x6e,0x6f,0x6e,0x69,0x63,0x1f,0x61,0x6c,0x63,0x6f,0x6d,0x62,0x69,0x6e,
0x69,0x6e,0x67,0x63,0x6c,0x61,0x73,0x73,0xc3,0x10,0x16,0x6e,0x65,0x62,0x72,0x65,
-0x61,0x6b,0xc3,8,2,0x64,0x4a,0x6e,0xa2,0x5b,0x73,1,0x63,0xd9,0x40,3,
-0x6f,0x16,0x63,0x6f,0x6d,0x6d,0x65,0x6e,0x74,0xd9,0x40,3,2,0x63,0x80,0x65,
-0x90,0x73,0x40,1,0x62,0x52,0x74,0x46,1,0x61,0x40,0x72,0x1c,0x69,0x6e,0x61,
-0x72,0x79,0x6f,0x70,0x65,0x72,0x61,0x74,0x6f,0x72,0x47,0x11,0x72,0x74,0x41,0x44,
-0x1c,0x69,0x6e,0x61,0x72,0x79,0x6f,0x70,0x65,0x72,0x61,0x74,0x6f,0x72,0x45,0x3e,
-0x16,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x3f,0x10,0x6f,0x42,0x16,0x67,0x72,0x61,
-0x70,0x68,0x69,0x63,0x43,2,0x64,0x2e,0x70,0x86,0x73,0x10,0x63,0xc3,0x17,0x11,
-0x69,0x63,1,0x70,0x46,0x73,0x1e,0x79,0x6c,0x6c,0x61,0x62,0x69,0x63,0x63,0x61,
-0x74,0x65,0x67,0x6f,0x72,0x79,0xc3,0x17,0x10,0x6f,0x1f,0x73,0x69,0x74,0x69,0x6f,
-0x6e,0x61,0x6c,0x63,0x61,0x74,0x65,0x67,0x6f,0x72,0x79,0xc3,0x16,0x10,0x63,0xc3,
-0x16,2,0x67,0xc3,6,0x6f,0x26,0x74,0xc3,7,0x11,0x69,0x6e,1,0x63,0x4a,
-0x69,0x11,0x6e,0x67,1,0x67,0x2e,0x74,0x12,0x79,0x70,0x65,0xc3,7,0x13,0x72,
-0x6f,0x75,0x70,0xc3,6,0x48,0x15,0x6f,0x6e,0x74,0x72,0x6f,0x6c,0x49,0x66,0x86,
-0x67,0xa2,0x4a,0x68,3,0x61,0x36,0x65,0x58,0x73,0x68,0x79,0x13,0x70,0x68,0x65,
-0x6e,0x3d,0x1f,0x6e,0x67,0x75,0x6c,0x73,0x79,0x6c,0x6c,0x61,0x62,0x6c,0x65,0x74,
-0x79,0x70,0x65,0xc3,0xb,0x10,0x78,0x3a,0x14,0x64,0x69,0x67,0x69,0x74,0x3b,0x10,
-0x74,0xc3,0xb,0x16,0x75,0x6c,0x6c,0x63,0x6f,0x6d,0x70,0x1f,0x6f,0x73,0x69,0x74,
-0x69,0x6f,0x6e,0x65,0x78,0x63,0x6c,0x75,0x73,0x69,0x6f,0x6e,0x33,2,0x63,0xa2,
-0x44,0x65,0xa2,0x4b,0x72,3,0x61,0x34,0x62,0x84,0x65,0x8a,0x6c,0x12,0x69,0x6e,
-0x6b,0x39,0x11,0x70,0x68,0x7c,0x12,0x65,0x6d,0x65,3,0x62,0x5e,0x63,0x30,0x65,
-0x48,0x6c,0x12,0x69,0x6e,0x6b,0x39,0x1a,0x6c,0x75,0x73,0x74,0x65,0x72,0x62,0x72,
-0x65,0x61,0x6b,0xc3,0x12,0x14,0x78,0x74,0x65,0x6e,0x64,0x37,0x12,0x61,0x73,0x65,
-0x35,0x11,0x78,0x74,0x37,0xc2,5,1,0x62,0xc3,0x12,0x6d,0xd9,0x20,0,0x1c,
-0x6e,0x65,0x72,0x61,0x6c,0x63,0x61,0x74,0x65,0x67,0x6f,0x72,0x79,0xc2,5,0x13,
-0x6d,0x61,0x73,0x6b,0xd9,0x20,0,0x61,0xa2,0xa2,0x62,0xa2,0xd0,0x63,0xa4,0x4f,
-0x64,0xa6,0x1c,0x65,5,0x6d,0x75,0x6d,0x6e,0x70,0xa2,0x6b,0x78,0x10,0x74,0x30,
-1,0x65,0x2c,0x70,0x12,0x69,0x63,0x74,0xa1,0x12,0x6e,0x64,0x65,1,0x64,0x24,
-0x72,0x31,0x1b,0x70,0x69,0x63,0x74,0x6f,0x67,0x72,0x61,0x70,0x68,0x69,0x63,0xa1,
-0x10,0x6f,1,0x64,0x97,0x6a,0x10,0x69,0x92,3,0x63,0x44,0x6b,0x54,0x6d,0x70,
-0x70,0x1a,0x72,0x65,0x73,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x95,0x17,0x6f,
-0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x9b,0x1c,0x65,0x79,0x63,0x61,0x70,0x73,0x65,
-0x71,0x75,0x65,0x6e,0x63,0x65,0xa3,0x42,0x16,0x6f,0x64,0x69,0x66,0x69,0x65,0x72,
-0x96,0x13,0x62,0x61,0x73,0x65,0x99,0x12,0x72,0x65,0x73,0x95,0x61,0x30,0x62,0x4e,
-0x63,0x12,0x6f,0x6d,0x70,0x9b,0xc2,4,0x1b,0x73,0x74,0x61,0x73,0x69,0x61,0x6e,
-0x77,0x69,0x64,0x74,0x68,0xc3,4,0x12,0x61,0x73,0x65,0x99,3,0x67,0x44,0x68,
-0x4a,0x6c,0x4e,0x73,0x1a,0x63,0x69,0x69,0x68,0x65,0x78,0x64,0x69,0x67,0x69,0x74,
-0x23,0x10,0x65,0xd9,0x40,0,0x11,0x65,0x78,0x23,1,0x6e,0x38,0x70,0x11,0x68,
-0x61,0x20,0x14,0x62,0x65,0x74,0x69,0x63,0x21,0x11,0x75,0x6d,0x79,5,0x6c,0x22,
-0x6c,0x36,0x6d,0x52,0x70,1,0x62,0xd9,0x40,0xd,0x74,0xc3,0x15,2,0x61,0x32,
-0x6b,0xc3,1,0x6f,0x11,0x63,0x6b,0xc3,1,0x11,0x6e,0x6b,0x7b,0x10,0x67,0xd9,
-0x40,1,0x61,0xa2,0x4f,0x63,0xc3,0,0x69,0x11,0x64,0x69,2,0x63,0x54,0x6d,
-0x74,0x70,0x1b,0x61,0x69,0x72,0x65,0x64,0x62,0x72,0x61,0x63,0x6b,0x65,0x74,0xd8,
-0x40,0xd,0x13,0x74,0x79,0x70,0x65,0xc3,0x15,0x24,1,0x6c,0x30,0x6f,0x14,0x6e,
-0x74,0x72,0x6f,0x6c,0x25,0x12,0x61,0x73,0x73,0xc3,0,0x26,0x14,0x69,0x72,0x72,
-0x6f,0x72,1,0x65,0x38,0x69,0x16,0x6e,0x67,0x67,0x6c,0x79,0x70,0x68,0xd9,0x40,
-1,0x10,0x64,0x27,0x17,0x73,0x69,0x63,0x65,0x6d,0x6f,0x6a,0x69,0xa3,0x41,6,
-0x68,0x7c,0x68,0x54,0x69,0x85,0x6f,0xa2,0x6f,0x77,4,0x63,0x30,0x6b,0x36,0x6c,
-0x87,0x74,0x8b,0x75,0x89,1,0x66,0x8d,0x6d,0x8f,0x11,0x63,0x66,0x91,0x18,0x61,
-0x6e,0x67,0x65,0x73,0x77,0x68,0x65,0x6e,4,0x63,0x44,0x6c,0x6c,0x6e,0x7e,0x74,
-0x98,0x75,0x18,0x70,0x70,0x65,0x72,0x63,0x61,0x73,0x65,0x64,0x89,0x12,0x61,0x73,
-0x65,1,0x66,0x30,0x6d,0x14,0x61,0x70,0x70,0x65,0x64,0x8f,0x14,0x6f,0x6c,0x64,
-0x65,0x64,0x8d,0x18,0x6f,0x77,0x65,0x72,0x63,0x61,0x73,0x65,0x64,0x87,0x1c,0x66,
-0x6b,0x63,0x63,0x61,0x73,0x65,0x66,0x6f,0x6c,0x64,0x65,0x64,0x91,0x18,0x69,0x74,
-0x6c,0x65,0x63,0x61,0x73,0x65,0x64,0x8b,0x13,0x6d,0x70,0x65,0x78,0x33,0x61,0x2e,
-0x63,0xa2,0x48,0x66,0xd9,0x40,2,1,0x6e,0x72,0x73,0x10,0x65,3,0x64,0x83,
-0x66,0x3a,0x69,0x4a,0x73,0x17,0x65,0x6e,0x73,0x69,0x74,0x69,0x76,0x65,0x65,0x15,
-0x6f,0x6c,0x64,0x69,0x6e,0x67,0xd9,0x40,2,0x17,0x67,0x6e,0x6f,0x72,0x61,0x62,
-0x6c,0x65,0x85,0x13,0x6f,0x6e,0x69,0x63,0x1f,0x61,0x6c,0x63,0x6f,0x6d,0x62,0x69,
-0x6e,0x69,0x6e,0x67,0x63,0x6c,0x61,0x73,0x73,0xc3,2,0x10,0x63,0xc3,2,3,
-0x61,0x30,0x65,0x34,0x69,0xa2,0x41,0x74,0xc3,3,0x11,0x73,0x68,0x29,2,0x63,
-0x3a,0x66,0x58,0x70,0x2c,0x16,0x72,0x65,0x63,0x61,0x74,0x65,0x64,0x2d,0x1d,0x6f,
-0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x74,0x79,0x70,0x65,0xc3,3,0x15,
-0x61,0x75,0x6c,0x74,0x69,0x67,0x1f,0x6e,0x6f,0x72,0x61,0x62,0x6c,0x65,0x63,0x6f,
-0x64,0x65,0x70,0x6f,0x69,0x6e,0x74,0x2b,0x2a,0x10,0x61,0x2e,0x15,0x63,0x72,0x69,
-0x74,0x69,0x63,0x2f,3,0x66,0x34,0x6e,0x3e,0x74,0x42,0x79,0x22,0x11,0x65,0x73,
-0x23,0x20,0x13,0x61,0x6c,0x73,0x65,0x21,0x20,0x10,0x6f,0x21,0x22,0x12,0x72,0x75,
-0x65,0x23,0xb,0x6b,0x5b,0x6f,0x23,0x6f,0x3c,0x72,0x4c,0x76,1,0x69,0x24,0x72,
-0x33,0x13,0x72,0x61,0x6d,0x61,0x33,0x10,0x76,0x22,0x14,0x65,0x72,0x6c,0x61,0x79,
-0x23,0xa2,0xe2,0x13,0x69,0x67,0x68,0x74,0xa3,0xe2,0x6b,0x58,0x6c,0x74,0x6e,3,
-0x6b,0x2f,0x6f,0x30,0x72,0x21,0x75,0x12,0x6b,0x74,0x61,0x2f,0x19,0x74,0x72,0x65,
-0x6f,0x72,0x64,0x65,0x72,0x65,0x64,0x21,1,0x61,0x24,0x76,0x31,0x18,0x6e,0x61,
-0x76,0x6f,0x69,0x63,0x69,0x6e,0x67,0x31,0xa2,0xe0,0x12,0x65,0x66,0x74,0xa3,0xe0,
-0x64,0x45,0x64,0x4e,0x68,0x88,0x69,1,0x6f,0x26,0x73,0xa3,0xf0,0x1a,0x74,0x61,
-0x73,0x75,0x62,0x73,0x63,0x72,0x69,0x70,0x74,0xa3,0xf0,2,0x61,0xa3,0xea,0x62,
-0xa3,0xe9,0x6f,0x13,0x75,0x62,0x6c,0x65,1,0x61,0x30,0x62,0x13,0x65,0x6c,0x6f,
-0x77,0xa3,0xe9,0x13,0x62,0x6f,0x76,0x65,0xa3,0xea,0x12,0x61,0x6e,0x72,0x2c,0x15,
-0x65,0x61,0x64,0x69,0x6e,0x67,0x2d,0x61,0xa2,0x7b,0x62,0xa2,0xd4,0x63,0x11,0x63,
-0x63,4,0x31,0x3c,0x32,0xa2,0x42,0x33,0xa2,0x56,0x38,0xa2,0x64,0x39,0x10,0x31,
-0xa3,0x5b,9,0x35,0xa,0x35,0x3f,0x36,0x41,0x37,0x43,0x38,0x45,0x39,0x47,0x30,
-0x30,0x31,0x3c,0x32,0x42,0x33,0x4e,0x34,0x3d,0x34,1,0x33,0xa3,0x67,0x37,0xa3,
-0x6b,0x36,0x10,0x38,0xa3,0x76,0x38,1,0x32,0xa3,0x7a,0x39,0xa3,0x81,0x3a,2,
-0x30,0xa3,0x82,0x32,0xa3,0x84,0x33,0xa3,0x85,9,0x35,0xa,0x35,0x53,0x36,0x55,
-0x37,0x57,0x38,0x59,0x39,0x5b,0x30,0x49,0x31,0x4b,0x32,0x4d,0x33,0x4f,0x34,0x51,
-6,0x33,8,0x33,0x63,0x34,0x65,0x35,0x67,0x36,0x69,0x30,0x5d,0x31,0x5f,0x32,
-0x61,0x10,0x34,0xa3,0x54,0xa2,0xe6,3,0x62,0xa0,0x6c,0xa3,0xe4,0x72,0xa3,0xe8,
-0x74,2,0x61,0x74,0x62,0x7c,0x74,0x14,0x61,0x63,0x68,0x65,0x64,1,0x61,0x3e,
-0x62,0x13,0x65,0x6c,0x6f,0x77,0xa2,0xca,0x13,0x6c,0x65,0x66,0x74,0xa3,0xc8,0x13,
-0x62,0x6f,0x76,0x65,0xa2,0xd6,0x14,0x72,0x69,0x67,0x68,0x74,0xa3,0xd8,0xa2,0xd6,
-0x10,0x72,0xa3,0xd8,0xa2,0xca,0x10,0x6c,0xa3,0xc8,0x12,0x6f,0x76,0x65,0xa2,0xe6,
-1,0x6c,0x30,0x72,0x13,0x69,0x67,0x68,0x74,0xa3,0xe8,0x12,0x65,0x66,0x74,0xa3,
-0xe4,0xa2,0xdc,2,0x65,0x2c,0x6c,0xa3,0xda,0x72,0xa3,0xde,0x12,0x6c,0x6f,0x77,
-0xa2,0xdc,1,0x6c,0x30,0x72,0x13,0x69,0x67,0x68,0x74,0xa3,0xde,0x12,0x65,0x66,
-0x74,0xa3,0xda,0xb,0x6e,0xc0,0xca,0x72,0x5f,0x72,0x46,0x73,0xa2,0x48,0x77,1,
-0x68,0x24,0x73,0x33,0x17,0x69,0x74,0x65,0x73,0x70,0x61,0x63,0x65,0x33,0x22,1,
-0x69,0x30,0x6c,2,0x65,0x3d,0x69,0x4b,0x6f,0x3f,0x18,0x67,0x68,0x74,0x74,0x6f,
-0x6c,0x65,0x66,0x74,0x22,2,0x65,0x38,0x69,0x48,0x6f,0x16,0x76,0x65,0x72,0x72,
-0x69,0x64,0x65,0x3f,0x17,0x6d,0x62,0x65,0x64,0x64,0x69,0x6e,0x67,0x3d,0x15,0x73,
-0x6f,0x6c,0x61,0x74,0x65,0x4b,0x30,0x1e,0x65,0x67,0x6d,0x65,0x6e,0x74,0x73,0x65,
-0x70,0x61,0x72,0x61,0x74,0x6f,0x72,0x31,0x6e,0xa2,0x41,0x6f,0xa2,0x53,0x70,2,
-0x61,0x66,0x64,0x86,0x6f,0x1b,0x70,0x64,0x69,0x72,0x65,0x63,0x74,0x69,0x6f,0x6e,
-0x61,0x6c,1,0x66,0x32,0x69,0x15,0x73,0x6f,0x6c,0x61,0x74,0x65,0x4d,0x14,0x6f,
-0x72,0x6d,0x61,0x74,0x41,0x1f,0x72,0x61,0x67,0x72,0x61,0x70,0x68,0x73,0x65,0x70,
-0x61,0x72,0x61,0x74,0x6f,0x72,0x2f,1,0x66,0x41,0x69,0x4d,1,0x6f,0x28,0x73,
-0x10,0x6d,0x43,0x1b,0x6e,0x73,0x70,0x61,0x63,0x69,0x6e,0x67,0x6d,0x61,0x72,0x6b,
-0x43,1,0x6e,0x35,0x74,0x19,0x68,0x65,0x72,0x6e,0x65,0x75,0x74,0x72,0x61,0x6c,
-0x35,0x65,0x88,0x65,0x98,0x66,0xa2,0x6a,0x6c,0x20,1,0x65,0x30,0x72,2,0x65,
-0x37,0x69,0x49,0x6f,0x39,0x18,0x66,0x74,0x74,0x6f,0x72,0x69,0x67,0x68,0x74,0x20,
-2,0x65,0x38,0x69,0x48,0x6f,0x16,0x76,0x65,0x72,0x72,0x69,0x64,0x65,0x39,0x17,
-0x6d,0x62,0x65,0x64,0x64,0x69,0x6e,0x67,0x37,0x15,0x73,0x6f,0x6c,0x61,0x74,0x65,
-0x49,3,0x6e,0x25,0x73,0x27,0x74,0x29,0x75,0x15,0x72,0x6f,0x70,0x65,0x61,0x6e,
-2,0x6e,0x3c,0x73,0x46,0x74,0x18,0x65,0x72,0x6d,0x69,0x6e,0x61,0x74,0x6f,0x72,
-0x29,0x14,0x75,0x6d,0x62,0x65,0x72,0x25,0x17,0x65,0x70,0x61,0x72,0x61,0x74,0x6f,
-0x72,0x27,1,0x69,0x28,0x73,0x10,0x69,0x47,0x1f,0x72,0x73,0x74,0x73,0x74,0x72,
-0x6f,0x6e,0x67,0x69,0x73,0x6f,0x6c,0x61,0x74,0x65,0x47,0x61,0x4e,0x62,0x84,0x63,
-1,0x6f,0x24,0x73,0x2d,0x1c,0x6d,0x6d,0x6f,0x6e,0x73,0x65,0x70,0x61,0x72,0x61,
-0x74,0x6f,0x72,0x2d,2,0x6c,0x3b,0x6e,0x2b,0x72,0x13,0x61,0x62,0x69,0x63,1,
-0x6c,0x30,0x6e,0x14,0x75,0x6d,0x62,0x65,0x72,0x2b,0x14,0x65,0x74,0x74,0x65,0x72,
-0x3b,0x2e,1,0x6e,0x45,0x6f,0x1c,0x75,0x6e,0x64,0x61,0x72,0x79,0x6e,0x65,0x75,
-0x74,0x72,0x61,0x6c,0x45,0,0x16,0x6d,0xc9,0x20,0x74,0xc2,0x30,0x77,0x89,0x77,
-0x86,0x79,0xa2,0x46,0x7a,1,0x61,0x58,0x6e,0x1a,0x61,0x6d,0x65,0x6e,0x6e,0x79,
-0x6d,0x75,0x73,0x69,0x63,0xa4,0x40,0x19,0x61,0x6c,0x6e,0x6f,0x74,0x61,0x74,0x69,
-0x6f,0x6e,0xa5,0x40,0x1c,0x6e,0x61,0x62,0x61,0x7a,0x61,0x72,0x73,0x71,0x75,0x61,
-0x72,0x65,0xa5,0x18,0x10,0x61,1,0x6e,0x36,0x72,0x16,0x61,0x6e,0x67,0x63,0x69,
-0x74,0x69,0xa3,0xfc,0x12,0x63,0x68,0x6f,0xa5,0x2c,1,0x65,0x88,0x69,2,0x6a,
-0x3c,0x72,0x68,0x73,0x17,0x79,0x6c,0x6c,0x61,0x62,0x6c,0x65,0x73,0xa3,0x48,0x12,
-0x69,0x6e,0x67,0xa2,0x74,0x1e,0x68,0x65,0x78,0x61,0x67,0x72,0x61,0x6d,0x73,0x79,
-0x6d,0x62,0x6f,0x6c,0x73,0xa3,0x74,0x16,0x61,0x64,0x69,0x63,0x61,0x6c,0x73,0xa3,
-0x49,0x13,0x7a,0x69,0x64,0x69,0xa5,0x34,0x74,0xa2,0x65,0x75,0xa4,0x4f,0x76,3,
-0x61,0x3c,0x65,0x80,0x69,0xa2,0x50,0x73,0xa2,0x6c,0x12,0x73,0x75,0x70,0xa3,0x7d,
-1,0x69,0xa3,0x9f,0x72,0x1e,0x69,0x61,0x74,0x69,0x6f,0x6e,0x73,0x65,0x6c,0x65,
-0x63,0x74,0x6f,0x72,0x73,0xa2,0x6c,0x19,0x73,0x75,0x70,0x70,0x6c,0x65,0x6d,0x65,
-0x6e,0x74,0xa3,0x7d,1,0x64,0x3c,0x72,0x19,0x74,0x69,0x63,0x61,0x6c,0x66,0x6f,
-0x72,0x6d,0x73,0xa3,0x91,0x14,0x69,0x63,0x65,0x78,0x74,0xa2,0xaf,0x16,0x65,0x6e,
-0x73,0x69,0x6f,0x6e,0x73,0xa3,0xaf,0x15,0x74,0x68,0x6b,0x75,0x71,0x69,0xa5,0x3f,
-5,0x69,0x3f,0x69,0x5a,0x6f,0x8c,0x72,0x1c,0x61,0x6e,0x73,0x70,0x6f,0x72,0x74,
-0x61,0x6e,0x64,0x6d,0x61,0x70,0xa2,0xcf,0x16,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,
-0xa3,0xcf,2,0x62,0x34,0x66,0x3c,0x72,0x13,0x68,0x75,0x74,0x61,0xa3,0xfb,0x13,
-0x65,0x74,0x61,0x6e,0x57,0x14,0x69,0x6e,0x61,0x67,0x68,0xa3,0x90,0x11,0x74,0x6f,
-0xa5,0x3d,0x61,0x3e,0x65,0xa2,0xa0,0x68,0x10,0x61,1,0x61,0x24,0x69,0x53,0x11,
-0x6e,0x61,0x3d,4,0x67,0x8e,0x69,0xa2,0x49,0x6b,0xa2,0x72,0x6d,0xa2,0x74,0x6e,
-0x10,0x67,1,0x73,0x68,0x75,0x10,0x74,0xa4,0x10,1,0x63,0x40,0x73,0x11,0x75,
-0x70,0xa4,0x33,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa5,0x33,0x18,0x6f,0x6d,
-0x70,0x6f,0x6e,0x65,0x6e,0x74,0x73,0xa5,0x11,0x10,0x61,0xa5,0x3c,2,0x61,0x2a,
-0x62,0x32,0x73,0xa3,0x60,0x12,0x6c,0x6f,0x67,0xa3,0x62,0x13,0x61,0x6e,0x77,0x61,
-0xa3,0x65,3,0x6c,0x52,0x74,0x56,0x76,0x5e,0x78,0x16,0x75,0x61,0x6e,0x6a,0x69,
-0x6e,0x67,0xa2,0x7c,0x16,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa3,0x7c,0x10,0x65,
-0xa3,0x70,0x12,0x68,0x61,0x6d,0xa3,0xae,0x12,0x69,0x65,0x74,0xa3,0xb7,0x11,0x72,
-0x69,0xa3,0xdc,0x11,0x69,0x6c,0x48,0x12,0x73,0x75,0x70,0xa4,0x2b,0x16,0x70,0x6c,
-0x65,0x6d,0x65,0x6e,0x74,0xa5,0x2b,0x13,0x6c,0x75,0x67,0x75,0x4b,2,0x63,0x8c,
-0x67,0xa2,0x41,0x6e,0x1f,0x69,0x66,0x69,0x65,0x64,0x63,0x61,0x6e,0x61,0x64,0x69,
-0x61,0x6e,0x61,0x62,0x6f,0x1f,0x72,0x69,0x67,0x69,0x6e,0x61,0x6c,0x73,0x79,0x6c,
-0x6c,0x61,0x62,0x69,0x63,0x73,0x62,0x17,0x65,0x78,0x74,0x65,0x6e,0x64,0x65,0x64,
-0xa2,0xad,0x10,0x61,0xa5,0x3e,0x11,0x61,0x73,0x62,0x12,0x65,0x78,0x74,0xa2,0xad,
-0x10,0x61,0xa5,0x3e,0x15,0x61,0x72,0x69,0x74,0x69,0x63,0xa3,0x78,0x70,0xc3,0x4b,
-0x70,0xa6,0x61,0x72,0xa8,0x1d,0x73,7,0x6f,0xc1,0xbe,0x6f,0xa2,0x69,0x70,0xa2,
-0x85,0x75,0xa2,0xa4,0x79,2,0x6c,0x50,0x6d,0x62,0x72,0x12,0x69,0x61,0x63,0x3a,
-0x12,0x73,0x75,0x70,0xa4,0x17,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa5,0x17,
-0x17,0x6f,0x74,0x69,0x6e,0x61,0x67,0x72,0x69,0xa3,0x8f,0x13,0x62,0x6f,0x6c,0x73,
-1,0x61,0x4c,0x66,0x10,0x6f,0x1f,0x72,0x6c,0x65,0x67,0x61,0x63,0x79,0x63,0x6f,
-0x6d,0x70,0x75,0x74,0x69,0x6e,0x67,0xa5,0x32,0x1f,0x6e,0x64,0x70,0x69,0x63,0x74,
-0x6f,0x67,0x72,0x61,0x70,0x68,0x73,0x65,0x78,0x74,1,0x61,0xa5,0x2a,0x65,0x14,
-0x6e,0x64,0x65,0x64,0x61,0xa5,0x2a,2,0x67,0x34,0x72,0x3e,0x79,0x13,0x6f,0x6d,
-0x62,0x6f,0xa5,0x16,0x13,0x64,0x69,0x61,0x6e,0xa5,0x23,0x17,0x61,0x73,0x6f,0x6d,
-0x70,0x65,0x6e,0x67,0xa3,0xda,1,0x61,0x32,0x65,0x14,0x63,0x69,0x61,0x6c,0x73,
-0xa3,0x56,0x12,0x63,0x69,0x6e,0x1f,0x67,0x6d,0x6f,0x64,0x69,0x66,0x69,0x65,0x72,
-0x6c,0x65,0x74,0x74,0x65,0x72,0x73,0x2d,2,0x6e,0x48,0x70,0x76,0x74,0x1d,0x74,
-0x6f,0x6e,0x73,0x69,0x67,0x6e,0x77,0x72,0x69,0x74,0x69,0x6e,0x67,0xa5,6,0x15,
-0x64,0x61,0x6e,0x65,0x73,0x65,0xa2,0x9b,0x12,0x73,0x75,0x70,0xa2,0xdb,0x16,0x70,
-0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0xdb,4,0x61,0xa2,0xa8,0x65,0x5c,0x6d,0x9e,
-0x70,0xa2,0x4b,0x73,0x13,0x79,0x6d,0x62,0x6f,0x1f,0x6c,0x73,0x61,0x6e,0x64,0x70,
-0x69,0x63,0x74,0x6f,0x67,0x72,0x61,0x70,0x68,0x73,0xa5,5,0x10,0x72,1,0x61,
-0x4e,0x73,0x12,0x63,0x72,0x69,0x1f,0x70,0x74,0x73,0x61,0x6e,0x64,0x73,0x75,0x62,
-0x73,0x63,0x72,0x69,0x70,0x74,0x73,0x73,0x14,0x6e,0x64,0x73,0x75,0x62,0x73,0x1b,
-0x61,0x74,0x68,0x6f,0x70,0x65,0x72,0x61,0x74,0x6f,0x72,0x73,0xa3,0x6a,1,0x6c,
-0x40,0x75,1,0x61,0x6e,0x6e,0x17,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0xa3,
-0x8e,0x15,0x65,0x6d,0x65,0x6e,0x74,0x61,1,0x6c,0x50,0x72,0x1e,0x79,0x70,0x72,
-0x69,0x76,0x61,0x74,0x65,0x75,0x73,0x65,0x61,0x72,0x65,0x61,1,0x61,0xa3,0x6d,
-0x62,0xa3,0x6e,3,0x61,0x5c,0x6d,0x78,0x70,0xa2,0x41,0x73,0x13,0x79,0x6d,0x62,
-0x6f,0x1f,0x6c,0x73,0x61,0x6e,0x64,0x70,0x69,0x63,0x74,0x6f,0x67,0x72,0x61,0x70,
-0x68,0x73,0xa5,5,0x14,0x72,0x72,0x6f,0x77,0x73,2,0x61,0xa3,0x67,0x62,0xa3,
-0x68,0x63,0xa3,0xfa,0x13,0x61,0x74,0x68,0x65,0x1f,0x6d,0x61,0x74,0x69,0x63,0x61,
-0x6c,0x6f,0x70,0x65,0x72,0x61,0x74,0x6f,0x72,0x73,0xa3,0x6a,0x19,0x75,0x6e,0x63,
-0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0xa3,0x8e,0x61,0x88,0x68,0xa2,0x48,0x69,0xa2,
-0x71,0x6d,0x12,0x61,0x6c,0x6c,1,0x66,0x46,0x6b,0x15,0x61,0x6e,0x61,0x65,0x78,
-0x74,0xa4,0x29,0x15,0x65,0x6e,0x73,0x69,0x6f,0x6e,0xa5,0x29,0x12,0x6f,0x72,0x6d,
-1,0x73,0xa3,0x54,0x76,0x16,0x61,0x72,0x69,0x61,0x6e,0x74,0x73,0xa3,0x54,1,
-0x6d,0x36,0x75,0x16,0x72,0x61,0x73,0x68,0x74,0x72,0x61,0xa3,0xa1,0x15,0x61,0x72,
-0x69,0x74,0x61,0x6e,0xa3,0xac,1,0x61,0x52,0x6f,0x13,0x72,0x74,0x68,0x61,0x1f,
-0x6e,0x64,0x66,0x6f,0x72,0x6d,0x61,0x74,0x63,0x6f,0x6e,0x74,0x72,0x6f,0x6c,0x73,
-0xa3,0xf7,1,0x72,0x2e,0x76,0x12,0x69,0x61,0x6e,0xa3,0x79,0x12,0x61,0x64,0x61,
-0xa3,0xd9,1,0x64,0x50,0x6e,0x13,0x68,0x61,0x6c,0x61,0x50,0x1d,0x61,0x72,0x63,
-0x68,0x61,0x69,0x63,0x6e,0x75,0x6d,0x62,0x65,0x72,0x73,0xa3,0xf9,0x13,0x64,0x68,
-0x61,0x6d,0xa3,0xf8,5,0x72,0x35,0x72,0x44,0x73,0x64,0x75,1,0x61,0xa3,0x4e,
-0x6e,0x17,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x71,0x17,0x69,0x76,0x61,0x74,
-0x65,0x75,0x73,0x65,0xa2,0x4e,0x13,0x61,0x72,0x65,0x61,0xa3,0x4e,0x1b,0x61,0x6c,
-0x74,0x65,0x72,0x70,0x61,0x68,0x6c,0x61,0x76,0x69,0xa3,0xf6,0x61,0x40,0x68,0x82,
-0x6c,0x19,0x61,0x79,0x69,0x6e,0x67,0x63,0x61,0x72,0x64,0x73,0xa3,0xcc,2,0x68,
-0x38,0x6c,0x4a,0x75,0x15,0x63,0x69,0x6e,0x68,0x61,0x75,0xa3,0xf5,0x17,0x61,0x77,
-0x68,0x68,0x6d,0x6f,0x6e,0x67,0xa3,0xf3,0x15,0x6d,0x79,0x72,0x65,0x6e,0x65,0xa3,
-0xf4,1,0x61,0x8e,0x6f,1,0x65,0x74,0x6e,0x16,0x65,0x74,0x69,0x63,0x65,0x78,
-0x74,0xa2,0x72,1,0x65,0x2c,0x73,0x11,0x75,0x70,0xa3,0x8d,0x15,0x6e,0x73,0x69,
-0x6f,0x6e,0x73,0xa2,0x72,0x19,0x73,0x75,0x70,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,
-0xa3,0x8d,0x15,0x6e,0x69,0x63,0x69,0x61,0x6e,0xa3,0x97,1,0x67,0x3e,0x69,0x13,
-0x73,0x74,0x6f,0x73,0xa2,0xa6,0x13,0x64,0x69,0x73,0x63,0xa3,0xa6,0x12,0x73,0x70,
-0x61,0xa3,0x96,1,0x65,0x5c,0x75,1,0x6d,0x2a,0x6e,0x11,0x69,0x63,0x67,0x10,
-0x69,0xa2,0xc0,0x1d,0x6e,0x75,0x6d,0x65,0x72,0x61,0x6c,0x73,0x79,0x6d,0x62,0x6f,
-0x6c,0x73,0xa3,0xc0,0x13,0x6a,0x61,0x6e,0x67,0xa3,0xa3,0x6d,0xa2,0xf0,0x6e,0xa8,
-0x23,0x6f,6,0x70,0x63,0x70,0x56,0x72,0x8a,0x73,0xa2,0x4c,0x74,0x10,0x74,0x1f,
-0x6f,0x6d,0x61,0x6e,0x73,0x69,0x79,0x61,0x71,0x6e,0x75,0x6d,0x62,0x65,0x72,0x73,
-0xa5,0x28,0x18,0x74,0x69,0x63,0x61,0x6c,0x63,0x68,0x61,0x72,0x1f,0x61,0x63,0x74,
-0x65,0x72,0x72,0x65,0x63,0x6f,0x67,0x6e,0x69,0x74,0x69,0x6f,0x6e,0x85,1,0x69,
-0x46,0x6e,0x1e,0x61,0x6d,0x65,0x6e,0x74,0x61,0x6c,0x64,0x69,0x6e,0x67,0x62,0x61,
-0x74,0x73,0xa3,0xf2,0x11,0x79,0x61,0x47,1,0x61,0x30,0x6d,0x13,0x61,0x6e,0x79,
-0x61,0xa3,0x7a,0x11,0x67,0x65,0xa5,0xf,0x63,0xa2,0x7b,0x67,0xa2,0x7b,0x6c,1,
-0x63,0xa2,0x6c,0x64,6,0x70,0x42,0x70,0x3a,0x73,0x5a,0x74,0x88,0x75,0x14,0x79,
-0x67,0x68,0x75,0x72,0xa5,0x3b,0x11,0x65,0x72,1,0x6d,0x2e,0x73,0x12,0x69,0x61,
-0x6e,0xa3,0x8c,0x11,0x69,0x63,0xa3,0xf1,0x10,0x6f,1,0x67,0x3a,0x75,0x18,0x74,
-0x68,0x61,0x72,0x61,0x62,0x69,0x61,0x6e,0xa3,0xbb,0x13,0x64,0x69,0x61,0x6e,0xa5,
-0x22,0x14,0x75,0x72,0x6b,0x69,0x63,0xa3,0xbf,0x68,0x42,0x69,0x54,0x6e,0x1a,0x6f,
-0x72,0x74,0x68,0x61,0x72,0x61,0x62,0x69,0x61,0x6e,0xa3,0xf0,0x17,0x75,0x6e,0x67,
-0x61,0x72,0x69,0x61,0x6e,0xa5,4,0x14,0x74,0x61,0x6c,0x69,0x63,0xa3,0x58,0x13,
-0x68,0x69,0x6b,0x69,0xa3,0x9d,0x10,0x72,0x85,0x12,0x68,0x61,0x6d,0x65,6,0x6f,
-0x86,0x6f,0x6c,0x72,0xa2,0x61,0x75,0xa2,0x62,0x79,0x14,0x61,0x6e,0x6d,0x61,0x72,
-0x58,0x12,0x65,0x78,0x74,2,0x61,0xa3,0xb6,0x62,0xa3,0xee,0x65,0x13,0x6e,0x64,
-0x65,0x64,1,0x61,0xa3,0xb6,0x62,0xa3,0xee,1,0x64,0x52,0x6e,0x15,0x67,0x6f,
-0x6c,0x69,0x61,0x6e,0x6a,0x12,0x73,0x75,0x70,0xa4,0xd,0x16,0x70,0x6c,0x65,0x6d,
-0x65,0x6e,0x74,0xa5,0xd,0x10,0x69,0xa2,0xec,0x13,0x66,0x69,0x65,0x72,1,0x6c,
-0x3c,0x74,0x19,0x6f,0x6e,0x65,0x6c,0x65,0x74,0x74,0x65,0x72,0x73,0xa3,0x8a,0x15,
-0x65,0x74,0x74,0x65,0x72,0x73,0x2d,0x10,0x6f,0xa3,0xed,1,0x6c,0x44,0x73,0x11,
-0x69,0x63,0xa2,0x5c,0x18,0x61,0x6c,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa3,0x5c,
-0x13,0x74,0x61,0x6e,0x69,0xa5,3,0x61,0xa2,0x9b,0x65,0xa4,0x4c,0x69,1,0x61,
-0xa2,0x8f,0x73,0x10,0x63,5,0x70,0x18,0x70,0xa2,0x71,0x73,0x36,0x74,0x17,0x65,
-0x63,0x68,0x6e,0x69,0x63,0x61,0x6c,0x81,0x15,0x79,0x6d,0x62,0x6f,0x6c,0x73,0x8f,
-0x61,0xa2,0x66,0x65,0x46,0x6d,0x19,0x61,0x74,0x68,0x73,0x79,0x6d,0x62,0x6f,0x6c,
-0x73,1,0x61,0xa3,0x66,0x62,0xa3,0x69,0x17,0x6c,0x6c,0x61,0x6e,0x65,0x6f,0x75,
-0x73,2,0x6d,0x3a,0x73,0x6c,0x74,0x17,0x65,0x63,0x68,0x6e,0x69,0x63,0x61,0x6c,
-0x81,0x11,0x61,0x74,0x1f,0x68,0x65,0x6d,0x61,0x74,0x69,0x63,0x61,0x6c,0x73,0x79,
-0x6d,0x62,0x6f,0x6c,0x73,1,0x61,0xa3,0x66,0x62,0xa3,0x69,0x15,0x79,0x6d,0x62,
-0x6f,0x6c,0x73,0x8e,0x12,0x61,0x6e,0x64,1,0x61,0x3c,0x70,0x19,0x69,0x63,0x74,
-0x6f,0x67,0x72,0x61,0x70,0x68,0x73,0xa3,0xcd,0x14,0x72,0x72,0x6f,0x77,0x73,0xa3,
-0x73,0x10,0x6f,0xa3,0xd8,7,0x72,0x6f,0x72,0x44,0x73,0x4e,0x74,0x62,0x79,0x19,
-0x61,0x6e,0x6e,0x75,0x6d,0x65,0x72,0x61,0x6c,0x73,0xa5,0x20,0x13,0x63,0x68,0x65,
-0x6e,0xa5,0xc,0x18,0x61,0x72,0x61,0x6d,0x67,0x6f,0x6e,0x64,0x69,0xa5,0x14,0x10,
-0x68,2,0x61,0x3a,0x65,0x4a,0x6f,0x17,0x70,0x65,0x72,0x61,0x74,0x6f,0x72,0x73,
-0x7f,0x16,0x6c,0x70,0x68,0x61,0x6e,0x75,0x6d,0xa3,0x5d,0x16,0x6d,0x61,0x74,0x69,
-0x63,0x61,0x6c,1,0x61,0x36,0x6f,0x17,0x70,0x65,0x72,0x61,0x74,0x6f,0x72,0x73,
-0x7f,0x11,0x6c,0x70,0x1f,0x68,0x61,0x6e,0x75,0x6d,0x65,0x72,0x69,0x63,0x73,0x79,
-0x6d,0x62,0x6f,0x6c,0x73,0xa3,0x5d,0x68,0x50,0x6b,0x7e,0x6c,0x88,0x6e,1,0x64,
-0x34,0x69,0x15,0x63,0x68,0x61,0x65,0x61,0x6e,0xa3,0xea,0x12,0x61,0x69,0x63,0xa3,
-0xc6,1,0x61,0x3e,0x6a,0x12,0x6f,0x6e,0x67,0xa2,0xaa,0x14,0x74,0x69,0x6c,0x65,
-0x73,0xa3,0xaa,0x13,0x6a,0x61,0x6e,0x69,0xa3,0xe9,0x13,0x61,0x73,0x61,0x72,0xa5,
-0x1f,0x15,0x61,0x79,0x61,0x6c,0x61,0x6d,0x4f,3,0x64,0x6c,0x65,0x7e,0x6e,0xa2,
-0x47,0x72,0x14,0x6f,0x69,0x74,0x69,0x63,1,0x63,0x3c,0x68,0x19,0x69,0x65,0x72,
-0x6f,0x67,0x6c,0x79,0x70,0x68,0x73,0xa3,0xd7,0x15,0x75,0x72,0x73,0x69,0x76,0x65,
-0xa3,0xd6,0x17,0x65,0x66,0x61,0x69,0x64,0x72,0x69,0x6e,0xa5,0x21,0x17,0x74,0x65,
-0x69,0x6d,0x61,0x79,0x65,0x6b,0xa2,0xb8,0x12,0x65,0x78,0x74,0xa2,0xd5,0x16,0x65,
-0x6e,0x73,0x69,0x6f,0x6e,0x73,0xa3,0xd5,0x18,0x64,0x65,0x6b,0x69,0x6b,0x61,0x6b,
-0x75,0x69,0xa3,0xeb,6,0x6b,0x3b,0x6b,0x56,0x6f,0x5a,0x75,0x64,0x79,0x11,0x69,
-0x61,0x1f,0x6b,0x65,0x6e,0x67,0x70,0x75,0x61,0x63,0x68,0x75,0x65,0x68,0x6d,0x6f,
-0x6e,0x67,0xa5,0x27,0x10,0x6f,0xa3,0x92,0x14,0x62,0x6c,0x6f,0x63,0x6b,0x21,1,
-0x6d,0x2c,0x73,0x11,0x68,0x75,0xa5,0x15,0x17,0x62,0x65,0x72,0x66,0x6f,0x72,0x6d,
-0x73,0x7b,0x61,0x44,0x62,0x21,0x65,0x10,0x77,1,0x61,0xa5,0xe,0x74,0x14,0x61,
-0x69,0x6c,0x75,0x65,0xa3,0x8b,2,0x62,0x3c,0x67,0x4a,0x6e,0x17,0x64,0x69,0x6e,
-0x61,0x67,0x61,0x72,0x69,0xa5,0x26,0x15,0x61,0x74,0x61,0x65,0x61,0x6e,0xa3,0xef,
-0x16,0x6d,0x75,0x6e,0x64,0x61,0x72,0x69,0xa5,0x47,0x67,0xc4,0x5d,0x6a,0xc1,0xe4,
-0x6a,0xa2,0xdf,0x6b,0xa2,0xf8,0x6c,4,0x61,0x54,0x65,0xa2,0x6b,0x69,0xa2,0x82,
-0x6f,0xa2,0xc1,0x79,1,0x63,0x2e,0x64,0x12,0x69,0x61,0x6e,0xa3,0xa9,0x12,0x69,
-0x61,0x6e,0xa3,0xa7,1,0x6f,0x55,0x74,0x11,0x69,0x6e,1,0x31,0x96,0x65,0x11,
-0x78,0x74,6,0x64,0x21,0x64,0xa3,0x95,0x65,0x2c,0x66,0xa5,0x39,0x67,0xa5,0x3a,
-0xa2,0xe7,0x13,0x6e,0x64,0x65,0x64,6,0x64,0xc,0x64,0xa3,0x95,0x65,0xa3,0xe7,
-0x66,0xa5,0x39,0x67,0xa5,0x3a,0x61,0x2a,0x62,0x29,0x63,0xa3,0x94,0x26,0x18,0x64,
-0x64,0x69,0x74,0x69,0x6f,0x6e,0x61,0x6c,0x6d,0x24,0x12,0x73,0x75,0x70,0x24,0x16,
-0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x25,1,0x70,0x42,0x74,0x1d,0x74,0x65,0x72,
-0x6c,0x69,0x6b,0x65,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0x79,0x12,0x63,0x68,0x61,
-0xa3,0x9c,2,0x6d,0x4e,0x6e,0x54,0x73,0x10,0x75,0xa2,0xb0,0x12,0x73,0x75,0x70,
-0xa4,0x31,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa5,0x31,0x11,0x62,0x75,0xa3,
-0x6f,0x12,0x65,0x61,0x72,1,0x61,0xa3,0xe8,0x62,1,0x69,0x38,0x73,0x17,0x79,
-0x6c,0x6c,0x61,0x62,0x61,0x72,0x79,0xa3,0x75,0x17,0x64,0x65,0x6f,0x67,0x72,0x61,
-0x6d,0x73,0xa3,0x76,0x1a,0x77,0x73,0x75,0x72,0x72,0x6f,0x67,0x61,0x74,0x65,0x73,
-0xa3,0x4d,0x10,0x61,1,0x6d,0x32,0x76,0x14,0x61,0x6e,0x65,0x73,0x65,0xa3,0xb5,
-0x10,0x6f,0x5c,0x12,0x65,0x78,0x74,1,0x61,0xa3,0xb4,0x62,0xa3,0xb9,1,0x61,
-0xa2,0x43,0x68,4,0x61,0x40,0x69,0x50,0x6d,0x6e,0x6f,0x86,0x75,0x15,0x64,0x61,
-0x77,0x61,0x64,0x69,0xa3,0xe6,0x16,0x72,0x6f,0x73,0x68,0x74,0x68,0x69,0xa3,0x89,
-0x1d,0x74,0x61,0x6e,0x73,0x6d,0x61,0x6c,0x6c,0x73,0x63,0x72,0x69,0x70,0x74,0xa5,
-0x30,0x11,0x65,0x72,0x68,0x16,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa3,0x71,0x12,
-0x6a,0x6b,0x69,0xa3,0xe5,5,0x74,0x35,0x74,0x34,0x77,0x7a,0x79,0x13,0x61,0x68,
-0x6c,0x69,0xa3,0xa2,0x14,0x61,0x6b,0x61,0x6e,0x61,0x9e,1,0x65,0x4c,0x70,0x10,
-0x68,0x1f,0x6f,0x6e,0x65,0x74,0x69,0x63,0x65,0x78,0x74,0x65,0x6e,0x73,0x69,0x6f,
-0x6e,0x73,0xa3,0x6b,0x11,0x78,0x74,0xa3,0x6b,0x10,0x69,0xa5,0x46,0x69,0xa2,0x4e,
-0x6b,0xa2,0x51,0x6e,3,0x61,0x34,0x62,0x84,0x67,0x8a,0x6e,0x12,0x61,0x64,0x61,
-0x4d,1,0x65,0x40,0x73,0x11,0x75,0x70,0xa2,0xcb,0x16,0x70,0x6c,0x65,0x6d,0x65,
-0x6e,0x74,0xa3,0xcb,0x11,0x78,0x74,2,0x61,0xa5,0x13,0x62,0xa5,0x38,0x65,0x13,
-0x6e,0x64,0x65,0x64,1,0x61,0xa5,0x13,0x62,0xa5,0x38,0x11,0x75,0x6e,0xa3,0x42,
-0x11,0x78,0x69,0x96,0x17,0x72,0x61,0x64,0x69,0x63,0x61,0x6c,0x73,0x97,0x12,0x74,
-0x68,0x69,0xa3,0xc1,0x1c,0x74,0x6f,0x76,0x69,0x6b,0x6e,0x75,0x6d,0x65,0x72,0x61,
-0x6c,0x73,0xa5,0x45,0x67,0xa2,0xb5,0x68,0xa4,0x84,0x69,3,0x64,0x4c,0x6d,0xa2,
-0x55,0x6e,0xa2,0x62,0x70,0x13,0x61,0x65,0x78,0x74,0x2a,0x16,0x65,0x6e,0x73,0x69,
-0x6f,0x6e,0x73,0x2b,1,0x63,0x99,0x65,0x17,0x6f,0x67,0x72,0x61,0x70,0x68,0x69,
-0x63,1,0x64,0x56,0x73,0x15,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa4,0xb,0x1d,0x61,
-0x6e,0x64,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0xa5,0xb,0x13,
-0x65,0x73,0x63,0x72,0x1f,0x69,0x70,0x74,0x69,0x6f,0x6e,0x63,0x68,0x61,0x72,0x61,
-0x63,0x74,0x65,0x72,0x73,0x99,0x1c,0x70,0x65,0x72,0x69,0x61,0x6c,0x61,0x72,0x61,
-0x6d,0x61,0x69,0x63,0xa3,0xba,1,0x64,0x62,0x73,0x1b,0x63,0x72,0x69,0x70,0x74,
-0x69,0x6f,0x6e,0x61,0x6c,0x70,0x61,1,0x68,0x32,0x72,0x14,0x74,0x68,0x69,0x61,
-0x6e,0xa3,0xbd,0x13,0x6c,0x61,0x76,0x69,0xa3,0xbe,0x11,0x69,0x63,1,0x6e,0x3e,
-0x73,0x1a,0x69,0x79,0x61,0x71,0x6e,0x75,0x6d,0x62,0x65,0x72,0x73,0xa5,0x1e,0x19,
-0x75,0x6d,0x62,0x65,0x72,0x66,0x6f,0x72,0x6d,0x73,0xa3,0xb2,4,0x65,0x74,0x6c,
-0xa2,0x82,0x6f,0xa2,0x9a,0x72,0xa2,0x9e,0x75,2,0x6a,0x34,0x6e,0x3e,0x72,0x14,
-0x6d,0x75,0x6b,0x68,0x69,0x43,0x14,0x61,0x72,0x61,0x74,0x69,0x45,0x18,0x6a,0x61,
-0x6c,0x61,0x67,0x6f,0x6e,0x64,0x69,0xa5,0x1c,1,0x6e,0xa2,0x46,0x6f,1,0x6d,
-0x6e,0x72,0x13,0x67,0x69,0x61,0x6e,0x5a,1,0x65,0x40,0x73,0x11,0x75,0x70,0xa2,
-0x87,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0x87,0x11,0x78,0x74,0xa4,0x1b,
-0x14,0x65,0x6e,0x64,0x65,0x64,0xa5,0x1b,0x1a,0x65,0x74,0x72,0x69,0x63,0x73,0x68,
-0x61,0x70,0x65,0x73,0x8c,0x12,0x65,0x78,0x74,0xa2,0xe3,0x14,0x65,0x6e,0x64,0x65,
-0x64,0xa3,0xe3,0x1e,0x65,0x72,0x61,0x6c,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,
-0x69,0x6f,0x6e,0x71,0x17,0x61,0x67,0x6f,0x6c,0x69,0x74,0x69,0x63,0xa2,0x88,0x12,
-0x73,0x75,0x70,0xa4,0xa,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa5,0xa,0x13,
-0x74,0x68,0x69,0x63,0xa3,0x59,1,0x61,0x5c,0x65,0x11,0x65,0x6b,0x30,1,0x61,
-0x38,0x65,0x11,0x78,0x74,0x6e,0x14,0x65,0x6e,0x64,0x65,0x64,0x6f,0x17,0x6e,0x64,
-0x63,0x6f,0x70,0x74,0x69,0x63,0x31,0x13,0x6e,0x74,0x68,0x61,0xa3,0xe4,2,0x61,
-0xa2,0x48,0x65,0xa2,0xdf,0x69,1,0x67,0x30,0x72,0x14,0x61,0x67,0x61,0x6e,0x61,
-0x9d,0x10,0x68,1,0x70,0x3a,0x73,0x18,0x75,0x72,0x72,0x6f,0x67,0x61,0x74,0x65,
-0x73,0xa3,0x4b,1,0x72,0x3c,0x75,0x19,0x73,0x75,0x72,0x72,0x6f,0x67,0x61,0x74,
-0x65,0x73,0xa3,0x4c,0x11,0x69,0x76,0x1f,0x61,0x74,0x65,0x75,0x73,0x65,0x73,0x75,
-0x72,0x72,0x6f,0x67,0x61,0x74,0x65,0x73,0xa3,0x4c,2,0x6c,0x32,0x6e,0x9a,0x74,
-0x12,0x72,0x61,0x6e,0xa5,2,0x10,0x66,2,0x61,0x58,0x6d,0x70,0x77,0x14,0x69,
-0x64,0x74,0x68,0x61,0x1f,0x6e,0x64,0x66,0x75,0x6c,0x6c,0x77,0x69,0x64,0x74,0x68,
-0x66,0x6f,0x72,0x6d,0x73,0xa3,0x57,0x1a,0x6e,0x64,0x66,0x75,0x6c,0x6c,0x66,0x6f,
-0x72,0x6d,0x73,0xa3,0x57,0x13,0x61,0x72,0x6b,0x73,0xa3,0x52,2,0x67,0x34,0x69,
-0xa2,0x45,0x75,0x12,0x6e,0x6f,0x6f,0xa3,0x63,0x11,0x75,0x6c,0xa2,0x4a,2,0x63,
-0x3c,0x6a,0x5e,0x73,0x17,0x79,0x6c,0x6c,0x61,0x62,0x6c,0x65,0x73,0xa3,0x4a,0x1f,
-0x6f,0x6d,0x70,0x61,0x74,0x69,0x62,0x69,0x6c,0x69,0x74,0x79,0x6a,0x61,0x6d,0x6f,
-0xa3,0x41,0x12,0x61,0x6d,0x6f,0x5c,0x17,0x65,0x78,0x74,0x65,0x6e,0x64,0x65,0x64,
-1,0x61,0xa3,0xb4,0x62,0xa3,0xb9,0x19,0x66,0x69,0x72,0x6f,0x68,0x69,0x6e,0x67,
-0x79,0x61,0xa5,0x1d,0x13,0x62,0x72,0x65,0x77,0x37,0x61,0xa4,0xc,0x62,0xa6,0x59,
-0x63,0xa8,0x2e,0x64,0xac,0xe3,0x65,5,0x6d,0xa9,0x6d,0x94,0x6e,0xa2,0x41,0x74,
-0x15,0x68,0x69,0x6f,0x70,0x69,0x63,0x5e,1,0x65,0x40,0x73,0x11,0x75,0x70,0xa2,
-0x86,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0x86,0x11,0x78,0x74,0xa2,0x85,
-2,0x61,0xa3,0xc8,0x62,0xa5,0x37,0x65,0x13,0x6e,0x64,0x65,0x64,0xa2,0x85,1,
-0x61,0xa3,0xc8,0x62,0xa5,0x37,0x16,0x6f,0x74,0x69,0x63,0x6f,0x6e,0x73,0xa3,0xce,
-0x15,0x63,0x6c,0x6f,0x73,0x65,0x64,2,0x61,0x5a,0x63,0x9e,0x69,0x1c,0x64,0x65,
-0x6f,0x67,0x72,0x61,0x70,0x68,0x69,0x63,0x73,0x75,0x70,0xa2,0xc4,0x16,0x70,0x6c,
-0x65,0x6d,0x65,0x6e,0x74,0xa3,0xc4,0x16,0x6c,0x70,0x68,0x61,0x6e,0x75,0x6d,0x86,
-1,0x65,0x2c,0x73,0x11,0x75,0x70,0xa3,0xc3,0x13,0x72,0x69,0x63,0x73,0x86,0x18,
-0x75,0x70,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0xc3,0x11,0x6a,0x6b,0xa2,0x44,
-0x1f,0x6c,0x65,0x74,0x74,0x65,0x72,0x73,0x61,0x6e,0x64,0x6d,0x6f,0x6e,0x74,0x68,
-0x73,0xa3,0x44,0x61,0x4a,0x67,0x76,0x6c,1,0x62,0x30,0x79,0x13,0x6d,0x61,0x69,
-0x63,0xa5,0x25,0x13,0x61,0x73,0x61,0x6e,0xa3,0xe2,0x13,0x72,0x6c,0x79,0x64,0x1f,
-0x79,0x6e,0x61,0x73,0x74,0x69,0x63,0x63,0x75,0x6e,0x65,0x69,0x66,0x6f,0x72,0x6d,
-0xa5,1,0x1f,0x79,0x70,0x74,0x69,0x61,0x6e,0x68,0x69,0x65,0x72,0x6f,0x67,0x6c,
-0x79,0x70,0x68,1,0x66,0x26,0x73,0xa3,0xc2,0x1c,0x6f,0x72,0x6d,0x61,0x74,0x63,
-0x6f,0x6e,0x74,0x72,0x6f,0x6c,0x73,0xa5,0x24,7,0x6e,0xc0,0xf2,0x6e,0x3e,0x72,
-0xa2,0x5d,0x73,0xa2,0xe5,0x76,0x14,0x65,0x73,0x74,0x61,0x6e,0xa3,0xbc,1,0x61,
-0x92,0x63,0x13,0x69,0x65,0x6e,0x74,1,0x67,0x34,0x73,0x15,0x79,0x6d,0x62,0x6f,
-0x6c,0x73,0xa3,0xa5,0x13,0x72,0x65,0x65,0x6b,1,0x6d,0x34,0x6e,0x15,0x75,0x6d,
-0x62,0x65,0x72,0x73,0xa3,0x7f,0x13,0x75,0x73,0x69,0x63,0xa2,0x7e,0x19,0x61,0x6c,
-0x6e,0x6f,0x74,0x61,0x74,0x69,0x6f,0x6e,0xa3,0x7e,0x10,0x74,0x1f,0x6f,0x6c,0x69,
-0x61,0x6e,0x68,0x69,0x65,0x72,0x6f,0x67,0x6c,0x79,0x70,0x68,0x73,0xa3,0xfe,2,
-0x61,0x32,0x6d,0xa2,0x7e,0x72,0x12,0x6f,0x77,0x73,0x7d,0x12,0x62,0x69,0x63,0x38,
-3,0x65,0x4a,0x6d,0x80,0x70,0xa2,0x50,0x73,0x11,0x75,0x70,0xa2,0x80,0x16,0x70,
-0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0x80,0x11,0x78,0x74,3,0x61,0xa3,0xd2,0x62,
-0xa5,0x35,0x63,0xa5,0x41,0x65,0x13,0x6e,0x64,0x65,0x64,2,0x61,0xa3,0xd2,0x62,
-0xa5,0x35,0x63,0xa5,0x41,0x12,0x61,0x74,0x68,0xa2,0xd3,0x18,0x65,0x6d,0x61,0x74,
-0x69,0x63,0x61,0x6c,0x61,0x1f,0x6c,0x70,0x68,0x61,0x62,0x65,0x74,0x69,0x63,0x73,
-0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa3,0xd3,1,0x66,0x42,0x72,0x1e,0x65,0x73,0x65,
-0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x66,0x6f,0x72,0x6d,0x73,1,0x61,0xa3,0x51,
-0x62,0xa3,0x55,0x14,0x65,0x6e,0x69,0x61,0x6e,0x35,0x12,0x63,0x69,0x69,0x23,0x64,
-0x9e,0x65,0xa2,0x42,0x68,0xa2,0x4d,0x6c,1,0x63,0x62,0x70,0x17,0x68,0x61,0x62,
-0x65,0x74,0x69,0x63,0x70,1,0x66,0xa3,0x50,0x72,0x1e,0x65,0x73,0x65,0x6e,0x74,
-0x61,0x74,0x69,0x6f,0x6e,0x66,0x6f,0x72,0x6d,0x73,0xa3,0x50,0x16,0x68,0x65,0x6d,
-0x69,0x63,0x61,0x6c,0xa2,0xd0,0x16,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa3,0xd0,
-0x12,0x6c,0x61,0x6d,0xa5,7,0x1a,0x67,0x65,0x61,0x6e,0x6e,0x75,0x6d,0x62,0x65,
-0x72,0x73,0xa3,0x77,0x11,0x6f,0x6d,0xa3,0xfd,7,0x6f,0x71,0x6f,0x64,0x72,0xa2,
-0x41,0x75,0xa2,0x58,0x79,0x1b,0x7a,0x61,0x6e,0x74,0x69,0x6e,0x65,0x6d,0x75,0x73,
-0x69,0x63,0xa2,0x5b,0x18,0x61,0x6c,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa3,0x5b,
-1,0x70,0x34,0x78,0x16,0x64,0x72,0x61,0x77,0x69,0x6e,0x67,0x89,0x14,0x6f,0x6d,
-0x6f,0x66,0x6f,0xa0,0x12,0x65,0x78,0x74,0xa2,0x43,0x14,0x65,0x6e,0x64,0x65,0x64,
-0xa3,0x43,0x10,0x61,1,0x68,0x40,0x69,0x12,0x6c,0x6c,0x65,0x92,0x17,0x70,0x61,
-0x74,0x74,0x65,0x72,0x6e,0x73,0x93,0x11,0x6d,0x69,0xa3,0xc9,1,0x67,0x2c,0x68,
-0x11,0x69,0x64,0xa3,0x64,0x14,0x69,0x6e,0x65,0x73,0x65,0xa3,0x81,0x61,0x48,0x65,
-0xa2,0x4e,0x68,0xa2,0x52,0x6c,0x1a,0x6f,0x63,0x6b,0x65,0x6c,0x65,0x6d,0x65,0x6e,
-0x74,0x73,0x8b,3,0x6c,0x34,0x6d,0x40,0x73,0x66,0x74,0x11,0x61,0x6b,0xa3,0xc7,
-0x14,0x69,0x6e,0x65,0x73,0x65,0xa3,0x93,0x11,0x75,0x6d,0xa2,0xb1,0x12,0x73,0x75,
-0x70,0xa2,0xca,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0xca,1,0x69,0x30,
-0x73,0x13,0x61,0x76,0x61,0x68,0xa3,0xdd,0x15,0x63,0x6c,0x61,0x74,0x69,0x6e,0x23,
-0x14,0x6e,0x67,0x61,0x6c,0x69,0x41,0x16,0x61,0x69,0x6b,0x73,0x75,0x6b,0x69,0xa5,
-8,5,0x6f,0xc1,0x60,0x6f,0xa2,0x69,0x75,0xa4,0x24,0x79,1,0x70,0xa2,0x44,
-0x72,0x14,0x69,0x6c,0x6c,0x69,0x63,0x32,1,0x65,0x4c,0x73,0x11,0x75,0x70,0xa2,
-0x61,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa2,0x61,0x12,0x61,0x72,0x79,0xa3,
-0x61,0x11,0x78,0x74,4,0x61,0xa3,0x9e,0x62,0xa3,0xa0,0x63,0xa5,9,0x64,0xa5,
-0x43,0x65,0x13,0x6e,0x64,0x65,0x64,3,0x61,0xa3,0x9e,0x62,0xa3,0xa0,0x63,0xa5,
-9,0x64,0xa5,0x43,0x10,0x72,1,0x69,0x34,0x6f,0x15,0x6d,0x69,0x6e,0x6f,0x61,
-0x6e,0xa5,0x36,0x1a,0x6f,0x74,0x73,0x79,0x6c,0x6c,0x61,0x62,0x61,0x72,0x79,0xa3,
-0x7b,3,0x6d,0x5a,0x6e,0xa2,0x95,0x70,0xa2,0xa0,0x75,0x17,0x6e,0x74,0x69,0x6e,
-0x67,0x72,0x6f,0x64,0xa2,0x9a,0x17,0x6e,0x75,0x6d,0x65,0x72,0x61,0x6c,0x73,0xa3,
-0x9a,2,0x62,0x3a,0x6d,0xa2,0x5f,0x70,0x15,0x61,0x74,0x6a,0x61,0x6d,0x6f,0xa3,
-0x41,0x14,0x69,0x6e,0x69,0x6e,0x67,2,0x64,0x46,0x68,0x9e,0x6d,0x1d,0x61,0x72,
-0x6b,0x73,0x66,0x6f,0x72,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0x77,0x1e,0x69,0x61,
-0x63,0x72,0x69,0x74,0x69,0x63,0x61,0x6c,0x6d,0x61,0x72,0x6b,0x73,0x2e,2,0x65,
-0x40,0x66,0xa6,0x4c,0x73,0x18,0x75,0x70,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,
-0x83,0x16,0x78,0x74,0x65,0x6e,0x64,0x65,0x64,0xa3,0xe0,0x17,0x61,0x6c,0x66,0x6d,
-0x61,0x72,0x6b,0x73,0xa3,0x52,0x11,0x6f,0x6e,0x1f,0x69,0x6e,0x64,0x69,0x63,0x6e,
-0x75,0x6d,0x62,0x65,0x72,0x66,0x6f,0x72,0x6d,0x73,0xa3,0xb2,0x1b,0x74,0x72,0x6f,
-0x6c,0x70,0x69,0x63,0x74,0x75,0x72,0x65,0x73,0x83,0x12,0x74,0x69,0x63,0xa2,0x84,
-0x1b,0x65,0x70,0x61,0x63,0x74,0x6e,0x75,0x6d,0x62,0x65,0x72,0x73,0xa3,0xdf,1,
-0x6e,0x3e,0x72,0x1b,0x72,0x65,0x6e,0x63,0x79,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,
-0x75,0x15,0x65,0x69,0x66,0x6f,0x72,0x6d,0xa2,0x98,0x16,0x6e,0x75,0x6d,0x62,0x65,
-0x72,0x73,0xa2,0x99,0x1d,0x61,0x6e,0x64,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,
-0x69,0x6f,0x6e,0xa3,0x99,0x61,0xa2,0xe4,0x68,0xa4,0xe,0x6a,0x10,0x6b,0xa2,0x47,
-4,0x63,0x8c,0x65,0xa2,0x80,0x72,0xa2,0x9b,0x73,0xa2,0xad,0x75,0x1f,0x6e,0x69,
-0x66,0x69,0x65,0x64,0x69,0x64,0x65,0x6f,0x67,0x72,0x61,0x70,0x68,0x73,0xa2,0x47,
-0x18,0x65,0x78,0x74,0x65,0x6e,0x73,0x69,0x6f,0x6e,7,0x65,0x6b,0x65,0xa5,0,
-0x66,0xa5,0x12,0x67,0xa5,0x2e,0x68,0xa5,0x42,0x14,0x6f,0x6d,0x70,0x61,0x74,0xa2,
-0x45,1,0x66,0x96,0x69,1,0x62,0x44,0x64,0x17,0x65,0x6f,0x67,0x72,0x61,0x70,
-0x68,0x73,0xa2,0x4f,0x12,0x73,0x75,0x70,0xa3,0x5f,0x14,0x69,0x6c,0x69,0x74,0x79,
-0xa2,0x45,1,0x66,0x54,0x69,0x18,0x64,0x65,0x6f,0x67,0x72,0x61,0x70,0x68,0x73,
-0xa2,0x4f,0x19,0x73,0x75,0x70,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0x5f,0x13,
-0x6f,0x72,0x6d,0x73,0xa3,0x53,0x11,0x78,0x74,7,0x65,0xc,0x65,0xa5,0,0x66,
-0xa5,0x12,0x67,0xa5,0x2e,0x68,0xa5,0x42,0x61,0xa3,0x46,0x62,0xa3,0x5e,0x63,0xa3,
-0xc5,0x64,0xa3,0xd1,0x19,0x61,0x64,0x69,0x63,0x61,0x6c,0x73,0x73,0x75,0x70,0x94,
-0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x95,1,0x74,0x50,0x79,0x14,0x6d,0x62,
-0x6f,0x6c,0x73,0x9a,0x1d,0x61,0x6e,0x64,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,
-0x69,0x6f,0x6e,0x9b,0x14,0x72,0x6f,0x6b,0x65,0x73,0xa3,0x82,2,0x6e,0x48,0x72,
-0x64,0x75,0x1d,0x63,0x61,0x73,0x69,0x61,0x6e,0x61,0x6c,0x62,0x61,0x6e,0x69,0x61,
-0x6e,0xa3,0xde,0x1d,0x61,0x64,0x69,0x61,0x6e,0x73,0x79,0x6c,0x6c,0x61,0x62,0x69,
-0x63,0x73,0x63,0x12,0x69,0x61,0x6e,0xa3,0xa8,2,0x61,0x3a,0x65,0x4c,0x6f,0x16,
-0x72,0x61,0x73,0x6d,0x69,0x61,0x6e,0xa5,0x2d,1,0x6b,0x26,0x6d,0xa3,0xa4,0x11,
-0x6d,0x61,0xa3,0xd4,1,0x72,0x38,0x73,0x17,0x73,0x73,0x79,0x6d,0x62,0x6f,0x6c,
-0x73,0xa5,0x19,0x13,0x6f,0x6b,0x65,0x65,0x60,0x12,0x73,0x75,0x70,0xa2,0xff,0x16,
-0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0xff,3,0x65,0x3e,0x69,0x8e,0x6f,0xa2,
-0x71,0x75,0x15,0x70,0x6c,0x6f,0x79,0x61,0x6e,0xa3,0xe1,1,0x73,0x60,0x76,0x16,
-0x61,0x6e,0x61,0x67,0x61,0x72,0x69,0x3e,0x12,0x65,0x78,0x74,0xa2,0xb3,1,0x61,
-0xa5,0x44,0x65,0x13,0x6e,0x64,0x65,0x64,0xa2,0xb3,0x10,0x61,0xa5,0x44,0x13,0x65,
-0x72,0x65,0x74,0xa3,0x5a,2,0x61,0x3a,0x6e,0x82,0x76,0x16,0x65,0x73,0x61,0x6b,
-0x75,0x72,0x75,0xa5,0x2f,0x18,0x63,0x72,0x69,0x74,0x69,0x63,0x61,0x6c,0x73,0x2e,
-2,0x65,0x30,0x66,0x36,0x73,0x11,0x75,0x70,0xa3,0x83,0x11,0x78,0x74,0xa3,0xe0,
-0x18,0x6f,0x72,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0x77,0x14,0x67,0x62,0x61,0x74,
-0x73,0x91,1,0x67,0x3e,0x6d,0x12,0x69,0x6e,0x6f,0xa2,0xab,0x14,0x74,0x69,0x6c,
-0x65,0x73,0xa3,0xab,0x11,0x72,0x61,0xa5,0x1a,8,0x6d,0x5f,0x6d,0x3a,0x6e,0x48,
-0x73,0x7a,0x76,0xa2,0x4b,0x77,0x12,0x69,0x64,0x65,0x43,0x11,0x65,0x64,0x32,0x12,
-0x69,0x61,0x6c,0x33,2,0x61,0x40,0x62,0x37,0x6f,1,0x62,0x28,0x6e,0x10,0x65,
-0x21,0x13,0x72,0x65,0x61,0x6b,0x37,0x10,0x72,0x34,0x12,0x72,0x6f,0x77,0x35,2,
-0x6d,0x38,0x71,0x46,0x75,1,0x62,0x3d,0x70,0x3e,0x11,0x65,0x72,0x3f,1,0x61,
-0x24,0x6c,0x39,0x11,0x6c,0x6c,0x39,1,0x72,0x3b,0x75,0x12,0x61,0x72,0x65,0x3b,
-0x12,0x65,0x72,0x74,0x40,0x13,0x69,0x63,0x61,0x6c,0x41,0x63,0x58,0x65,0x92,0x66,
-0x96,0x69,1,0x6e,0x36,0x73,0x10,0x6f,0x30,0x14,0x6c,0x61,0x74,0x65,0x64,0x31,
-0x11,0x69,0x74,0x2e,0x12,0x69,0x61,0x6c,0x2f,2,0x61,0x36,0x69,0x48,0x6f,0x10,
-0x6d,0x24,0x12,0x70,0x61,0x74,0x25,0x10,0x6e,0x22,0x15,0x6f,0x6e,0x69,0x63,0x61,
-0x6c,0x23,0x13,0x72,0x63,0x6c,0x65,0x27,0x11,0x6e,0x63,0x27,2,0x69,0x3a,0x6f,
-0x44,0x72,0x10,0x61,0x2c,0x14,0x63,0x74,0x69,0x6f,0x6e,0x2d,0x10,0x6e,0x28,0x11,
-0x61,0x6c,0x29,0x11,0x6e,0x74,0x2b,4,0x61,0x3a,0x66,0x4c,0x68,0x5e,0x6e,0x70,
-0x77,0x2a,0x12,0x69,0x64,0x65,0x2b,0x22,0x17,0x6d,0x62,0x69,0x67,0x75,0x6f,0x75,
-0x73,0x23,0x26,0x17,0x75,0x6c,0x6c,0x77,0x69,0x64,0x74,0x68,0x27,0x24,0x17,0x61,
-0x6c,0x66,0x77,0x69,0x64,0x74,0x68,0x25,0x20,1,0x61,0x30,0x65,0x14,0x75,0x74,
-0x72,0x61,0x6c,0x21,0x28,0x13,0x72,0x72,0x6f,0x77,0x29,0xd,0x6e,0xc0,0xfb,0x73,
-0x6d,0x73,0x3a,0x74,0x98,0x75,0xa2,0x49,0x7a,2,0x6c,0x3b,0x70,0x3d,0x73,0x39,
-5,0x6f,0x28,0x6f,0x57,0x70,0x34,0x75,0x16,0x72,0x72,0x6f,0x67,0x61,0x74,0x65,
-0x45,0x11,0x61,0x63,1,0x65,0x32,0x69,0x15,0x6e,0x67,0x6d,0x61,0x72,0x6b,0x31,
-0x18,0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x6f,0x72,0x39,0x63,0x53,0x6b,0x55,0x6d,
-0x51,0x1d,0x69,0x74,0x6c,0x65,0x63,0x61,0x73,0x65,0x6c,0x65,0x74,0x74,0x65,0x72,
-0x27,1,0x6e,0x40,0x70,0x1c,0x70,0x65,0x72,0x63,0x61,0x73,0x65,0x6c,0x65,0x74,
-0x74,0x65,0x72,0x23,0x17,0x61,0x73,0x73,0x69,0x67,0x6e,0x65,0x64,0x21,0x6e,0x8a,
-0x6f,0xa2,0x47,0x70,8,0x66,0x14,0x66,0x5b,0x69,0x59,0x6f,0x4f,0x72,0x24,0x73,
-0x49,0x17,0x69,0x76,0x61,0x74,0x65,0x75,0x73,0x65,0x43,0x61,0x2c,0x63,0x4d,0x64,
-0x47,0x65,0x4b,0x1f,0x72,0x61,0x67,0x72,0x61,0x70,0x68,0x73,0x65,0x70,0x61,0x72,
-0x61,0x74,0x6f,0x72,0x3d,2,0x64,0x33,0x6c,0x35,0x6f,0x36,0x1b,0x6e,0x73,0x70,
-0x61,0x63,0x69,0x6e,0x67,0x6d,0x61,0x72,0x6b,0x2d,1,0x70,0x7c,0x74,0x12,0x68,
-0x65,0x72,3,0x6c,0x38,0x6e,0x42,0x70,0x4c,0x73,0x14,0x79,0x6d,0x62,0x6f,0x6c,
-0x57,0x14,0x65,0x74,0x74,0x65,0x72,0x2b,0x14,0x75,0x6d,0x62,0x65,0x72,0x37,0x19,
-0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x4f,0x1c,0x65,0x6e,0x70,0x75,
-0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x49,0x66,0x9e,0x66,0x88,0x69,0xa2,
-0x4b,0x6c,0xa2,0x5c,0x6d,4,0x61,0x60,0x63,0x31,0x65,0x2f,0x6e,0x2d,0x6f,0x15,
-0x64,0x69,0x66,0x69,0x65,0x72,1,0x6c,0x30,0x73,0x14,0x79,0x6d,0x62,0x6f,0x6c,
-0x55,0x14,0x65,0x74,0x74,0x65,0x72,0x29,0x17,0x74,0x68,0x73,0x79,0x6d,0x62,0x6f,
-0x6c,0x51,1,0x69,0x2e,0x6f,0x13,0x72,0x6d,0x61,0x74,0x41,0x1d,0x6e,0x61,0x6c,
-0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x5b,0x10,0x6e,0x1f,0x69,
-0x74,0x69,0x61,0x6c,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x59,
-6,0x6d,0x18,0x6d,0x29,0x6f,0x28,0x74,0x27,0x75,0x23,0x2a,0x1c,0x77,0x65,0x72,
-0x63,0x61,0x73,0x65,0x6c,0x65,0x74,0x74,0x65,0x72,0x25,0x65,0x28,0x69,0x3c,0x6c,
-0x25,0x19,0x74,0x74,0x65,0x72,0x6e,0x75,0x6d,0x62,0x65,0x72,0x35,0x1a,0x6e,0x65,
-0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x6f,0x72,0x3b,0x63,0x44,0x64,0xa2,0x60,0x65,
-0x1b,0x6e,0x63,0x6c,0x6f,0x73,0x69,0x6e,0x67,0x6d,0x61,0x72,0x6b,0x2f,6,0x6e,
-0x39,0x6e,0x46,0x6f,0x4e,0x73,0x45,0x75,0x1b,0x72,0x72,0x65,0x6e,0x63,0x79,0x73,
-0x79,0x6d,0x62,0x6f,0x6c,0x53,0x20,0x12,0x74,0x72,0x6c,0x3f,0x42,0x10,0x6e,1,
-0x6e,0x2c,0x74,0x12,0x72,0x6f,0x6c,0x3f,0x1f,0x65,0x63,0x74,0x6f,0x72,0x70,0x75,
-0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x4d,0x63,0x3f,0x66,0x41,0x6c,0x1d,
-0x6f,0x73,0x65,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x4b,2,
-0x61,0x30,0x65,0x4a,0x69,0x12,0x67,0x69,0x74,0x33,0x1c,0x73,0x68,0x70,0x75,0x6e,
-0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x47,0x1a,0x63,0x69,0x6d,0x61,0x6c,0x6e,
-0x75,0x6d,0x62,0x65,0x72,0x33,0,0x13,0x6e,0xc1,0xf,0x74,0x76,0x74,0x4c,0x76,
-0x9a,0x77,0xa2,0x48,0x79,0xa2,0x49,0x7a,1,0x61,0x2c,0x68,0x12,0x61,0x69,0x6e,
-0x8b,0x11,0x69,0x6e,0x85,2,0x61,0x36,0x65,0x3c,0x68,0x14,0x69,0x6e,0x79,0x65,
-0x68,0xa3,0x66,1,0x68,0x71,0x77,0x73,1,0x68,0x28,0x74,0x10,0x68,0x77,0x16,
-0x6d,0x61,0x72,0x62,0x75,0x74,0x61,0x74,0x13,0x67,0x6f,0x61,0x6c,0x3d,0x1a,0x65,
-0x72,0x74,0x69,0x63,0x61,0x6c,0x74,0x61,0x69,0x6c,0xa3,0x67,0x11,0x61,0x77,0x79,
-1,0x65,0x32,0x75,0x11,0x64,0x68,0x80,0x11,0x68,0x65,0x83,0x10,0x68,0x7a,1,
-0x62,0x34,0x77,0x16,0x69,0x74,0x68,0x74,0x61,0x69,0x6c,0x7f,0x14,0x61,0x72,0x72,
-0x65,0x65,0x7d,0x6e,0xa2,0x4c,0x70,0xa2,0x69,0x71,0xa2,0x69,0x72,0xa2,0x6f,0x73,
-5,0x74,0x22,0x74,0x38,0x77,0x4c,0x79,0x16,0x72,0x69,0x61,0x63,0x77,0x61,0x77,
-0x6f,0x18,0x72,0x61,0x69,0x67,0x68,0x74,0x77,0x61,0x77,0xa3,0x55,0x15,0x61,0x73,
-0x68,0x6b,0x61,0x66,0x6d,0x61,0x2e,0x65,0x38,0x68,0x11,0x69,0x6e,0x6b,0x10,0x64,
-0x62,0x11,0x68,0x65,0x65,1,0x65,0x2e,0x6d,0x13,0x6b,0x61,0x74,0x68,0x69,0x10,
-0x6e,0x67,2,0x6f,0x2c,0x75,0x50,0x79,0x10,0x61,0x91,1,0x6a,0x28,0x6f,0x10,
-0x6e,0x55,0x1a,0x6f,0x69,0x6e,0x69,0x6e,0x67,0x67,0x72,0x6f,0x75,0x70,0x21,0x10,
-0x6e,0x57,0x10,0x65,0x59,0x10,0x61,1,0x66,0x5b,0x70,0x10,0x68,0x5d,1,0x65,
-0x38,0x6f,0x18,0x68,0x69,0x6e,0x67,0x79,0x61,0x79,0x65,0x68,0x93,1,0x68,0x5f,
-0x76,0x16,0x65,0x72,0x73,0x65,0x64,0x70,0x65,0x61,0x67,0xc1,0xc7,0x67,0xa4,0x52,
-0x68,0xa4,0x59,0x6b,0xa4,0x99,0x6c,0xa4,0xb2,0x6d,2,0x61,0x2e,0x65,0xa4,0x3e,
-0x69,0x10,0x6d,0x53,1,0x6c,0xa2,0xe7,0x6e,0x16,0x69,0x63,0x68,0x61,0x65,0x61,
-0x6e,0,0x12,0x6e,0x76,0x73,0x51,0x73,0x3e,0x74,0x5c,0x77,0xa0,0x79,0xa2,0x42,
-0x7a,0x13,0x61,0x79,0x69,0x6e,0xa3,0x54,0x10,0x61,1,0x64,0x2e,0x6d,0x12,0x65,
-0x6b,0x68,0xa3,0x4c,0x11,0x68,0x65,0xa3,0x4b,3,0x61,0x38,0x65,0x3c,0x68,0x4a,
-0x77,0x13,0x65,0x6e,0x74,0x79,0xa3,0x51,0x10,0x77,0xa3,0x4d,1,0x6e,0xa3,0x4e,
-0x74,0x10,0x68,0xa3,0x4f,0x14,0x61,0x6d,0x65,0x64,0x68,0xa3,0x50,0x11,0x61,0x77,
-0xa3,0x52,0x12,0x6f,0x64,0x68,0xa3,0x53,0x6e,0x3a,0x6f,0x40,0x70,0x46,0x71,0x4a,
-0x72,0x12,0x65,0x73,0x68,0xa3,0x4a,0x11,0x75,0x6e,0xa3,0x46,0x11,0x6e,0x65,0xa3,
-0x47,0x10,0x65,0xa3,0x48,0x12,0x6f,0x70,0x68,0xa3,0x49,0x67,0x33,0x67,0x38,0x68,
-0x40,0x6b,0x5e,0x6c,0x66,0x6d,0x11,0x65,0x6d,0xa3,0x45,0x13,0x69,0x6d,0x65,0x6c,
-0xa1,1,0x65,0x32,0x75,0x14,0x6e,0x64,0x72,0x65,0x64,0xa3,0x42,0x11,0x74,0x68,
-0xa3,0x41,0x12,0x61,0x70,0x68,0xa3,0x43,0x14,0x61,0x6d,0x65,0x64,0x68,0xa3,0x44,
-0x61,0x34,0x62,0x4a,0x64,0x50,0x66,0x12,0x69,0x76,0x65,0x9f,1,0x6c,0x2a,0x79,
-0x11,0x69,0x6e,0x97,0x12,0x65,0x70,0x68,0x95,0x12,0x65,0x74,0x68,0x99,1,0x61,
-0x30,0x68,0x14,0x61,0x6d,0x65,0x64,0x68,0x9d,0x13,0x6c,0x65,0x74,0x68,0x9b,0x15,
-0x61,0x79,0x61,0x6c,0x61,0x6d,6,0x6e,0x2c,0x6e,0x34,0x72,0x5e,0x73,0x62,0x74,
-0x11,0x74,0x61,0xa3,0x63,2,0x67,0x2e,0x6e,0x32,0x79,0x10,0x61,0xa3,0x60,0x10,
-0x61,0xa3,0x5d,1,0x61,0xa3,0x5e,0x6e,0x10,0x61,0xa3,0x5f,0x10,0x61,0xa3,0x61,
-0x11,0x73,0x61,0xa3,0x62,0x62,0x3c,0x6a,0x42,0x6c,0x10,0x6c,1,0x61,0xa3,0x5b,
-0x6c,0x10,0x61,0xa3,0x5c,0x11,0x68,0x61,0xa3,0x59,0x10,0x61,0xa3,0x5a,0x11,0x65,
-0x6d,0x51,0x10,0x61,1,0x66,0x37,0x6d,0x11,0x61,0x6c,0x39,1,0x61,0x40,0x65,
-0x3e,1,0x68,0x28,0x74,0x10,0x68,0x45,0x40,0x13,0x67,0x6f,0x61,0x6c,0x43,2,
-0x68,0x3b,0x6d,0x5c,0x6e,0x1a,0x69,0x66,0x69,0x72,0x6f,0x68,0x69,0x6e,0x67,0x79,
-0x61,1,0x6b,0x2a,0x70,0x10,0x61,0xa3,0x65,0x15,0x69,0x6e,0x6e,0x61,0x79,0x61,
-0xa3,0x64,0x1a,0x7a,0x61,0x6f,0x6e,0x68,0x65,0x68,0x67,0x6f,0x61,0x6c,0x3d,2,
-0x61,0x3a,0x68,0x44,0x6e,0x17,0x6f,0x74,0x74,0x65,0x64,0x68,0x65,0x68,0x4b,1,
-0x66,0x47,0x70,0x10,0x68,0x49,0x12,0x61,0x70,0x68,0x89,0x11,0x61,0x6d,0x4c,0x12,
-0x61,0x64,0x68,0x4f,0x61,0x6e,0x62,0xa2,0x54,0x64,0xa2,0x70,0x65,0x31,0x66,2,
-0x61,0x3e,0x65,0x4a,0x69,0x19,0x6e,0x61,0x6c,0x73,0x65,0x6d,0x6b,0x61,0x74,0x68,
-0x35,0x15,0x72,0x73,0x69,0x79,0x65,0x68,0x8f,0x86,0x10,0x68,0x33,2,0x66,0x3c,
-0x69,0x70,0x6c,1,0x61,0x28,0x65,0x10,0x66,0x27,0x11,0x70,0x68,0x25,0x14,0x72,
-0x69,0x63,0x61,0x6e,2,0x66,0x30,0x6e,0x36,0x71,0x11,0x61,0x66,0xa3,0x58,0x11,
-0x65,0x68,0xa3,0x56,0x12,0x6f,0x6f,0x6e,0xa3,0x57,0x10,0x6e,0x23,1,0x65,0x4a,
-0x75,0x10,0x72,0x1f,0x75,0x73,0x68,0x61,0x73,0x6b,0x69,0x79,0x65,0x68,0x62,0x61,
-0x72,0x72,0x65,0x65,0x8d,1,0x68,0x29,0x74,0x10,0x68,0x2b,0x11,0x61,0x6c,0x2c,
-0x16,0x61,0x74,0x68,0x72,0x69,0x73,0x68,0x2f,7,0x6e,0x2e,0x6e,0x2c,0x72,0x3e,
-0x74,0x56,0x75,0x21,0x18,0x6f,0x6e,0x6a,0x6f,0x69,0x6e,0x69,0x6e,0x67,0x21,0x28,
-0x1a,0x69,0x67,0x68,0x74,0x6a,0x6f,0x69,0x6e,0x69,0x6e,0x67,0x29,0x2a,0x19,0x72,
-0x61,0x6e,0x73,0x70,0x61,0x72,0x65,0x6e,0x74,0x2b,0x63,0x23,0x64,0x40,0x6a,0x56,
-0x6c,0x26,0x19,0x65,0x66,0x74,0x6a,0x6f,0x69,0x6e,0x69,0x6e,0x67,0x27,0x24,0x19,
-0x75,0x61,0x6c,0x6a,0x6f,0x69,0x6e,0x69,0x6e,0x67,0x25,0x19,0x6f,0x69,0x6e,0x63,
-0x61,0x75,0x73,0x69,0x6e,0x67,0x23,0,0x13,0x6e,0xc0,0xd0,0x73,0x49,0x73,0x48,
-0x75,0x78,0x77,0x84,0x78,0x9c,0x7a,0x10,0x77,0x58,1,0x6a,0x75,0x73,0x13,0x70,
-0x61,0x63,0x65,0x59,4,0x61,0x51,0x67,0x53,0x70,0x28,0x75,0x30,0x79,0x57,0x54,
-0x12,0x61,0x63,0x65,0x55,0x16,0x72,0x72,0x6f,0x67,0x61,0x74,0x65,0x53,0x15,0x6e,
-0x6b,0x6e,0x6f,0x77,0x6e,0x21,1,0x6a,0x5d,0x6f,0x17,0x72,0x64,0x6a,0x6f,0x69,
-0x6e,0x65,0x72,0x5d,0x10,0x78,0x21,0x6e,0x60,0x6f,0xa2,0x41,0x70,0xa2,0x50,0x71,
-0xa2,0x6e,0x72,1,0x65,0x24,0x69,0x6f,0x1e,0x67,0x69,0x6f,0x6e,0x61,0x6c,0x69,
-0x6e,0x64,0x69,0x63,0x61,0x74,0x6f,0x72,0x6f,4,0x65,0x3e,0x6c,0x5b,0x6f,0x46,
-0x73,0x45,0x75,0x46,0x14,0x6d,0x65,0x72,0x69,0x63,0x47,0x15,0x78,0x74,0x6c,0x69,
-0x6e,0x65,0x5b,0x17,0x6e,0x73,0x74,0x61,0x72,0x74,0x65,0x72,0x45,0x10,0x70,0x48,
-0x1c,0x65,0x6e,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x49,1,
-0x6f,0x3e,0x72,0x4c,0x1a,0x65,0x66,0x69,0x78,0x6e,0x75,0x6d,0x65,0x72,0x69,0x63,
-0x4d,0x4a,0x1b,0x73,0x74,0x66,0x69,0x78,0x6e,0x75,0x6d,0x65,0x72,0x69,0x63,0x4b,
-0x10,0x75,0x4e,0x16,0x6f,0x74,0x61,0x74,0x69,0x6f,0x6e,0x4f,0x68,0x7b,0x68,0x50,
-0x69,0x86,0x6a,0xa2,0x61,0x6c,0xa2,0x65,0x6d,0x1c,0x61,0x6e,0x64,0x61,0x74,0x6f,
-0x72,0x79,0x62,0x72,0x65,0x61,0x6b,0x2d,4,0x32,0x5f,0x33,0x61,0x65,0x34,0x6c,
-0x6d,0x79,0x3a,0x13,0x70,0x68,0x65,0x6e,0x3b,0x19,0x62,0x72,0x65,0x77,0x6c,0x65,
-0x74,0x74,0x65,0x72,0x6d,2,0x64,0x28,0x6e,0x3c,0x73,0x41,0x3c,0x18,0x65,0x6f,
-0x67,0x72,0x61,0x70,0x68,0x69,0x63,0x3d,0x3e,1,0x66,0x3e,0x73,0x11,0x65,0x70,
-1,0x61,0x22,0x65,0x14,0x72,0x61,0x62,0x6c,0x65,0x3f,0x18,0x69,0x78,0x6e,0x75,
-0x6d,0x65,0x72,0x69,0x63,0x41,2,0x6c,0x63,0x74,0x65,0x76,0x67,1,0x66,0x43,
-0x69,0x15,0x6e,0x65,0x66,0x65,0x65,0x64,0x43,0x61,0x40,0x62,0x70,0x63,0xa2,0x55,
-0x65,0xa2,0xdb,0x67,0x10,0x6c,0x38,0x11,0x75,0x65,0x39,2,0x69,0x23,0x6c,0x34,
-0x6d,0x16,0x62,0x69,0x67,0x75,0x6f,0x75,0x73,0x23,0x24,0x17,0x70,0x68,0x61,0x62,
-0x65,0x74,0x69,0x63,0x25,4,0x32,0x27,0x61,0x29,0x62,0x2b,0x6b,0x2d,0x72,0x12,
-0x65,0x61,0x6b,2,0x61,0x36,0x62,0x3e,0x73,0x15,0x79,0x6d,0x62,0x6f,0x6c,0x73,
-0x57,0x13,0x66,0x74,0x65,0x72,0x29,1,0x65,0x2a,0x6f,0x11,0x74,0x68,0x27,0x13,
-0x66,0x6f,0x72,0x65,0x2b,7,0x6d,0x51,0x6d,0x33,0x6f,0x28,0x70,0x69,0x72,0x35,
-1,0x6d,0x76,0x6e,1,0x64,0x3c,0x74,0x1a,0x69,0x6e,0x67,0x65,0x6e,0x74,0x62,
-0x72,0x65,0x61,0x6b,0x2f,0x15,0x69,0x74,0x69,0x6f,0x6e,0x61,0x1f,0x6c,0x6a,0x61,
-0x70,0x61,0x6e,0x65,0x73,0x65,0x73,0x74,0x61,0x72,0x74,0x65,0x72,0x6b,1,0x62,
-0x3a,0x70,0x19,0x6c,0x65,0x78,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x51,0x18,0x69,
-0x6e,0x69,0x6e,0x67,0x6d,0x61,0x72,0x6b,0x33,0x61,0x6a,0x62,0x2f,0x6a,0x6b,0x6c,
-0x30,0x13,0x6f,0x73,0x65,0x70,1,0x61,0x38,0x75,0x18,0x6e,0x63,0x74,0x75,0x61,
-0x74,0x69,0x6f,0x6e,0x31,0x18,0x72,0x65,0x6e,0x74,0x68,0x65,0x73,0x69,0x73,0x69,
-0x1b,0x72,0x72,0x69,0x61,0x67,0x65,0x72,0x65,0x74,0x75,0x72,0x6e,0x35,2,0x62,
-0x3e,0x6d,0x46,0x78,0x36,0x18,0x63,0x6c,0x61,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x37,
-0x70,0x12,0x61,0x73,0x65,0x71,0x72,0x16,0x6f,0x64,0x69,0x66,0x69,0x65,0x72,0x73,
-1,0x64,0x42,0x6e,1,0x6f,0x32,0x75,0x26,0x14,0x6d,0x65,0x72,0x69,0x63,0x27,
-0x11,0x6e,0x65,0x21,1,0x65,0x2e,0x69,0x24,0x12,0x67,0x69,0x74,0x25,0x22,0x14,
-0x63,0x69,0x6d,0x61,0x6c,0x23,0,0x18,0x6e,0xc4,0x6f,0x74,0xc1,0x91,0x77,0x96,
-0x77,0xa2,0x4c,0x78,0xa2,0x70,0x79,0xa2,0x7a,0x7a,6,0x73,0x1e,0x73,0x34,0x78,
-0x42,0x79,0x48,0x7a,0x11,0x7a,0x7a,0xa3,0x67,0x10,0x79,1,0x65,0xa3,0xae,0x6d,
-0xa3,0x81,0x11,0x78,0x78,0xa3,0x66,0x11,0x79,0x79,0x21,0x61,0x30,0x69,0x58,0x6d,
-0x11,0x74,0x68,0xa3,0x80,0x10,0x6e,1,0x61,0x26,0x62,0xa3,0xb1,0x1a,0x62,0x61,
-0x7a,0x61,0x72,0x73,0x71,0x75,0x61,0x72,0x65,0xa3,0xb1,0x11,0x6e,0x68,0x23,2,
-0x61,0x30,0x63,0x5a,0x6f,0x11,0x6c,0x65,0xa3,0x9b,1,0x6e,0x3c,0x72,0x10,0x61,
-0xa2,0x92,0x15,0x6e,0x67,0x63,0x69,0x74,0x69,0xa3,0x92,0x12,0x63,0x68,0x6f,0xa3,
-0xbc,0x11,0x68,0x6f,0xa3,0xbc,1,0x70,0x2c,0x73,0x11,0x75,0x78,0xa3,0x65,0x11,
-0x65,0x6f,0x9b,1,0x65,0x2c,0x69,0x72,0x11,0x69,0x69,0x73,0x11,0x7a,0x69,0xa2,
-0xc0,0x11,0x64,0x69,0xa3,0xc0,0x74,0x66,0x75,0xa2,0xde,0x76,1,0x61,0x48,0x69,
-1,0x73,0x38,0x74,0x10,0x68,0xa2,0xc5,0x13,0x6b,0x75,0x71,0x69,0xa3,0xc5,0x10,
-0x70,0xa3,0x64,0x10,0x69,0xa2,0x63,0x10,0x69,0xa3,0x63,7,0x68,0x3e,0x68,0x34,
-0x69,0x48,0x6e,0x86,0x6f,0x11,0x74,0x6f,0xa3,0xc4,0x10,0x61,1,0x61,0x24,0x69,
-0x6d,0x6a,0x11,0x6e,0x61,0x6b,2,0x62,0x3a,0x66,0x4a,0x72,0x10,0x68,0xa2,0x9e,
-0x12,0x75,0x74,0x61,0xa3,0x9e,1,0x65,0x24,0x74,0x6f,0x12,0x74,0x61,0x6e,0x6f,
-0x14,0x69,0x6e,0x61,0x67,0x68,0x99,0x11,0x73,0x61,0xa3,0xc3,0x61,0x36,0x65,0xa2,
-0x65,0x66,0xa2,0x71,0x67,0x11,0x6c,0x67,0x75,6,0x6c,0x28,0x6c,0x32,0x6d,0x38,
-0x6e,0x44,0x76,0x10,0x74,0xa3,0x7f,1,0x65,0x89,0x75,0x97,1,0x69,0x24,0x6c,
-0x67,0x10,0x6c,0x67,0x10,0x67,0xa2,0x9a,1,0x73,0x2a,0x75,0x10,0x74,0xa3,0x9a,
-0x10,0x61,0xa3,0xc3,0x67,0x36,0x69,0x52,0x6b,0x10,0x72,0xa2,0x99,0x10,0x69,0xa3,
-0x99,1,0x61,0x30,0x62,0x7a,0x13,0x61,0x6e,0x77,0x61,0x7b,0x12,0x6c,0x6f,0x67,
-0x75,2,0x6c,0x32,0x74,0x34,0x76,0x12,0x69,0x65,0x74,0xa3,0x7f,0x10,0x65,0x89,
-0x12,0x68,0x61,0x6d,0xa3,0x6a,1,0x6c,0x2a,0x6e,0x10,0x67,0xa3,0x62,0x10,0x75,
-0x68,0x11,0x67,0x75,0x69,0x11,0x6e,0x67,0x99,1,0x67,0x32,0x6e,0x14,0x6b,0x6e,
-0x6f,0x77,0x6e,0xa3,0x67,0x11,0x61,0x72,0x8a,0x13,0x69,0x74,0x69,0x63,0x8b,0x71,
-0xc1,0x13,0x71,0xa2,0xde,0x72,0xa2,0xe3,0x73,6,0x69,0x8a,0x69,0x72,0x6f,0xa2,
-0x4c,0x75,0xa2,0x75,0x79,1,0x6c,0x46,0x72,4,0x63,0x65,0x65,0xa3,0x5f,0x69,
-0x2c,0x6a,0xa3,0x60,0x6e,0xa3,0x61,0x11,0x61,0x63,0x65,0x10,0x6f,0x94,0x16,0x74,
-0x69,0x6e,0x61,0x67,0x72,0x69,0x95,2,0x64,0x3c,0x67,0x4c,0x6e,1,0x64,0xa3,
-0x91,0x68,0x62,0x12,0x61,0x6c,0x61,0x63,0x10,0x64,0xa2,0xa6,0x12,0x68,0x61,0x6d,
-0xa3,0xa6,0x17,0x6e,0x77,0x72,0x69,0x74,0x69,0x6e,0x67,0xa3,0x70,2,0x67,0x3a,
-0x72,0x52,0x79,0x10,0x6f,0xa2,0xb0,0x12,0x6d,0x62,0x6f,0xa3,0xb0,1,0x64,0x26,
-0x6f,0xa3,0xb8,0xa2,0xb7,0x12,0x69,0x61,0x6e,0xa3,0xb7,0x10,0x61,0xa2,0x98,0x16,
-0x73,0x6f,0x6d,0x70,0x65,0x6e,0x67,0xa3,0x98,0x11,0x6e,0x64,0xa2,0x71,0x14,0x61,
-0x6e,0x65,0x73,0x65,0xa3,0x71,0x61,0x5c,0x67,0xa2,0x43,0x68,1,0x61,0x2a,0x72,
-0x10,0x64,0xa3,0x97,2,0x72,0x28,0x76,0x30,0x77,0x87,0x12,0x61,0x64,0x61,0xa3,
-0x97,0x12,0x69,0x61,0x6e,0x87,2,0x6d,0x40,0x72,0x58,0x75,0x10,0x72,0xa2,0x6f,
-0x15,0x61,0x73,0x68,0x74,0x72,0x61,0xa3,0x6f,1,0x61,0x26,0x72,0xa3,0x7e,0x14,
-0x72,0x69,0x74,0x61,0x6e,0xa3,0x7e,1,0x61,0xa3,0x5e,0x62,0xa3,0x85,0x11,0x6e,
-0x77,0xa3,0x70,0x11,0x61,0x61,1,0x63,0x2f,0x69,0x23,3,0x65,0x3e,0x6a,0x48,
-0x6f,0x4e,0x75,0x10,0x6e,1,0x69,0x24,0x72,0x61,0x10,0x63,0x61,0x13,0x6a,0x61,
-0x6e,0x67,0xa3,0x6e,0x11,0x6e,0x67,0xa3,0x6e,1,0x68,0x2a,0x72,0x10,0x6f,0xa3,
-0x5d,0x10,0x67,0xa3,0xb6,0x6e,0xa2,0x83,0x6f,0xa4,1,0x70,5,0x6c,0x1e,0x6c,
-0x44,0x72,0x4a,0x73,0x1b,0x61,0x6c,0x74,0x65,0x72,0x70,0x61,0x68,0x6c,0x61,0x76,
-0x69,0xa3,0x7b,0x11,0x72,0x64,0xa3,0x5c,0x11,0x74,0x69,0xa3,0x7d,0x61,0x7c,0x65,
-0xa2,0x54,0x68,3,0x61,0x3e,0x6c,0x4e,0x6e,0x5e,0x6f,0x16,0x65,0x6e,0x69,0x63,
-0x69,0x61,0x6e,0xa3,0x5b,0x10,0x67,0xa2,0x5a,0x12,0x73,0x70,0x61,0xa3,0x5a,2,
-0x69,0xa3,0x7a,0x70,0xa3,0x7b,0x76,0xa3,0x7c,0x10,0x78,0xa3,0x5b,2,0x68,0x3e,
-0x6c,0x50,0x75,0x10,0x63,0xa2,0xa5,0x14,0x69,0x6e,0x68,0x61,0x75,0xa3,0xa5,0x17,
-0x61,0x77,0x68,0x68,0x6d,0x6f,0x6e,0x67,0xa3,0x4b,0x10,0x6d,0xa2,0x90,0x14,0x79,
-0x72,0x65,0x6e,0x65,0xa3,0x90,0x11,0x72,0x6d,0xa3,0x59,6,0x6b,0x36,0x6b,0x56,
-0x73,0x6e,0x75,0x74,0x79,0x11,0x69,0x61,0x1f,0x6b,0x65,0x6e,0x67,0x70,0x75,0x61,
-0x63,0x68,0x75,0x65,0x68,0x6d,0x6f,0x6e,0x67,0xa3,0xba,1,0x67,0x2e,0x6f,0xa2,
-0x57,0x10,0x6f,0xa3,0x57,0x10,0x62,0xa3,0x84,0x11,0x68,0x75,0xa3,0x96,0x12,0x73,
-0x68,0x75,0xa3,0x96,0x61,0x42,0x62,0x9e,0x65,0x10,0x77,1,0x61,0xa3,0xaa,0x74,
-0x14,0x61,0x69,0x6c,0x75,0x65,0x97,3,0x62,0x32,0x67,0x40,0x6e,0x56,0x72,0x10,
-0x62,0xa3,0x8e,0x15,0x61,0x74,0x61,0x65,0x61,0x6e,0xa3,0x8f,0x10,0x6d,0xa2,0xc7,
-0x15,0x75,0x6e,0x64,0x61,0x72,0x69,0xa3,0xc7,0x10,0x64,0xa2,0xbb,0x16,0x69,0x6e,
-0x61,0x67,0x61,0x72,0x69,0xa3,0xbb,0x11,0x61,0x74,0xa3,0x8f,4,0x67,0x3c,0x6c,
-0x4e,0x72,0xa2,0x8e,0x73,0xa2,0x9c,0x75,0x11,0x67,0x72,0xa3,0xc2,1,0x61,0x2a,
-0x68,0x11,0x61,0x6d,0x5b,0x10,0x6d,0x5b,1,0x63,0xa2,0x6a,0x64,6,0x70,0x41,
-0x70,0x3a,0x73,0x58,0x74,0x86,0x75,0x14,0x79,0x67,0x68,0x75,0x72,0xa3,0xc2,0x11,
-0x65,0x72,1,0x6d,0x2c,0x73,0x12,0x69,0x61,0x6e,0x9b,0x11,0x69,0x63,0xa3,0x59,
-0x10,0x6f,1,0x67,0x3a,0x75,0x18,0x74,0x68,0x61,0x72,0x61,0x62,0x69,0x61,0x6e,
-0xa3,0x85,0x13,0x64,0x69,0x61,0x6e,0xa3,0xb8,0x14,0x75,0x72,0x6b,0x69,0x63,0xa3,
-0x58,0x68,0x42,0x69,0x54,0x6e,0x1a,0x6f,0x72,0x74,0x68,0x61,0x72,0x61,0x62,0x69,
-0x61,0x6e,0xa3,0x8e,0x17,0x75,0x6e,0x67,0x61,0x72,0x69,0x61,0x6e,0xa3,0x4c,0x14,
-0x74,0x61,0x6c,0x69,0x63,0x5d,1,0x68,0x26,0x6b,0xa3,0x6d,0x12,0x69,0x6b,0x69,
-0xa3,0x6d,2,0x69,0x2c,0x6b,0x30,0x79,0x10,0x61,0x5f,0x11,0x79,0x61,0x5f,0x10,
-0x68,0xa3,0x58,2,0x61,0x36,0x67,0x3c,0x6d,0x10,0x61,0x84,0x12,0x6e,0x79,0x61,
-0x85,0x11,0x67,0x65,0xa3,0xab,0x10,0x65,0xa3,0xab,0x68,0xc3,0x15,0x6b,0xc2,0x2c,
-0x6b,0xa4,0x17,0x6c,0xa4,0xba,0x6d,8,0x6f,0x46,0x6f,0x48,0x72,0x74,0x74,0x80,
-0x75,0x86,0x79,1,0x61,0x28,0x6d,0x10,0x72,0x59,0x13,0x6e,0x6d,0x61,0x72,0x59,
-2,0x64,0x2e,0x6e,0x32,0x6f,0x10,0x6e,0xa3,0x72,0x10,0x69,0xa3,0xa3,0x10,0x67,
-0x56,0x14,0x6f,0x6c,0x69,0x61,0x6e,0x57,0x10,0x6f,0xa2,0x95,0x10,0x6f,0xa3,0x95,
-0x11,0x65,0x69,0xa3,0x73,0x11,0x6c,0x74,0xa2,0xa4,0x12,0x61,0x6e,0x69,0xa3,0xa4,
-0x61,0x36,0x65,0xa2,0x67,0x69,0xa2,0xbd,0x6c,0x11,0x79,0x6d,0x55,6,0x6e,0x38,
-0x6e,0x32,0x72,0x5c,0x73,0x6c,0x79,0x10,0x61,0xa3,0x55,1,0x64,0x38,0x69,0xa2,
-0x79,0x15,0x63,0x68,0x61,0x65,0x61,0x6e,0xa3,0x79,0xa2,0x54,0x12,0x61,0x69,0x63,
-0xa3,0x54,0x10,0x63,0xa2,0xa9,0x12,0x68,0x65,0x6e,0xa3,0xa9,0x18,0x61,0x72,0x61,
-0x6d,0x67,0x6f,0x6e,0x64,0x69,0xa3,0xaf,0x68,0x36,0x6b,0x4c,0x6c,0x15,0x61,0x79,
-0x61,0x6c,0x61,0x6d,0x55,1,0x61,0x26,0x6a,0xa3,0xa0,0x13,0x6a,0x61,0x6e,0x69,
-0xa3,0xa0,0x10,0x61,0xa2,0xb4,0x12,0x73,0x61,0x72,0xa3,0xb4,3,0x64,0x78,0x65,
-0x94,0x6e,0xa2,0x42,0x72,1,0x63,0xa3,0x8d,0x6f,0xa2,0x56,0x13,0x69,0x74,0x69,
-0x63,1,0x63,0x3c,0x68,0x19,0x69,0x65,0x72,0x6f,0x67,0x6c,0x79,0x70,0x68,0x73,
-0xa3,0x56,0x15,0x75,0x72,0x73,0x69,0x76,0x65,0xa3,0x8d,1,0x65,0x26,0x66,0xa3,
-0xb5,0x16,0x66,0x61,0x69,0x64,0x72,0x69,0x6e,0xa3,0xb5,0x17,0x74,0x65,0x69,0x6d,
-0x61,0x79,0x65,0x6b,0xa3,0x73,0x10,0x64,0xa2,0x8c,0x17,0x65,0x6b,0x69,0x6b,0x61,
-0x6b,0x75,0x69,0xa3,0x8c,0x11,0x61,0x6f,0xa3,0x5c,6,0x6e,0x1a,0x6e,0x34,0x6f,
-0x38,0x70,0x3e,0x74,0x11,0x68,0x69,0xa3,0x78,0x11,0x64,0x61,0x4b,0x11,0x72,0x65,
-0xa3,0x77,0x11,0x65,0x6c,0xa3,0x8a,0x61,0x32,0x68,0xa2,0x44,0x69,0x11,0x74,0x73,
-0xa3,0xbf,5,0x74,0x23,0x74,0x34,0x77,0x56,0x79,0x13,0x61,0x68,0x6c,0x69,0xa3,
-0x4f,0x14,0x61,0x6b,0x61,0x6e,0x61,0x4c,0x19,0x6f,0x72,0x68,0x69,0x72,0x61,0x67,
-0x61,0x6e,0x61,0x8d,0x10,0x69,0xa3,0xc6,0x69,0x38,0x6c,0x40,0x6e,1,0x61,0x4d,
-0x6e,0x12,0x61,0x64,0x61,0x4b,0x12,0x74,0x68,0x69,0xa3,0x78,0x10,0x69,0xa3,0x4f,
-4,0x61,0x40,0x69,0x52,0x6d,0x70,0x6f,0x7c,0x75,0x15,0x64,0x61,0x77,0x61,0x64,
-0x69,0xa3,0x91,0x10,0x72,0x92,0x15,0x6f,0x73,0x68,0x74,0x68,0x69,0x93,0x1d,0x74,
-0x61,0x6e,0x73,0x6d,0x61,0x6c,0x6c,0x73,0x63,0x72,0x69,0x70,0x74,0xa3,0xbf,1,
-0x65,0x24,0x72,0x4f,0x10,0x72,0x4f,0x10,0x6a,0xa2,0x9d,0x11,0x6b,0x69,0xa3,0x9d,
-4,0x61,0x5c,0x65,0x90,0x69,0xa0,0x6f,0xa2,0x5d,0x79,1,0x63,0x34,0x64,0x10,
-0x69,0xa2,0x6c,0x11,0x61,0x6e,0xa3,0x6c,0x10,0x69,0xa2,0x6b,0x11,0x61,0x6e,0xa3,
-0x6b,2,0x6e,0x42,0x6f,0x46,0x74,3,0x66,0xa3,0x50,0x67,0xa3,0x51,0x69,0x24,
-0x6e,0x53,0x10,0x6e,0x53,0x10,0x61,0xa3,0x6a,0x50,0x10,0x6f,0x51,0x11,0x70,0x63,
-0xa2,0x52,0x11,0x68,0x61,0xa3,0x52,2,0x6d,0x2e,0x6e,0x36,0x73,0x10,0x75,0xa3,
-0x83,0x10,0x62,0x80,0x10,0x75,0x81,2,0x61,0xa3,0x53,0x62,0x83,0x65,0x11,0x61,
-0x72,1,0x61,0xa3,0x53,0x62,0x83,0x11,0x6d,0x61,0xa3,0x8b,0x68,0x6e,0x69,0xa2,
-0x95,0x6a,2,0x61,0x30,0x70,0x52,0x75,0x11,0x72,0x63,0xa3,0x94,1,0x6d,0x38,
-0x76,0x10,0x61,0xa2,0x4e,0x13,0x6e,0x65,0x73,0x65,0xa3,0x4e,0x10,0x6f,0xa3,0xad,
-0x11,0x61,0x6e,0xa3,0x69,6,0x6c,0x1e,0x6c,0x34,0x6d,0x3a,0x72,0x48,0x75,0x11,
-0x6e,0x67,0xa3,0x4c,0x11,0x75,0x77,0xa3,0x9c,0x10,0x6e,1,0x67,0xa3,0x4b,0x70,
-0xa3,0xba,0x11,0x6b,0x74,0x8d,0x61,0x3c,0x65,0xa2,0x43,0x69,0x11,0x72,0x61,0x48,
-0x13,0x67,0x61,0x6e,0x61,0x49,1,0x6e,0x34,0x74,0x10,0x72,0xa2,0xa2,0x11,0x61,
-0x6e,0xa3,0xa2,0x42,6,0x6f,0xe,0x6f,0x77,0x73,0xa3,0x49,0x74,0xa3,0x4a,0x75,
-0x12,0x6e,0x6f,0x6f,0x77,0x62,0xa3,0xac,0x67,0x3e,0x69,0x42,0x19,0x66,0x69,0x72,
-0x6f,0x68,0x69,0x6e,0x67,0x79,0x61,0xa3,0xb6,0x44,0x11,0x75,0x6c,0x45,0x11,0x62,
-0x72,0x46,0x11,0x65,0x77,0x47,2,0x6d,0x2e,0x6e,0x4a,0x74,0x11,0x61,0x6c,0x5d,
-0x1c,0x70,0x65,0x72,0x69,0x61,0x6c,0x61,0x72,0x61,0x6d,0x61,0x69,0x63,0xa3,0x74,
-2,0x64,0x66,0x68,0x6a,0x73,0x1b,0x63,0x72,0x69,0x70,0x74,0x69,0x6f,0x6e,0x61,
-0x6c,0x70,0x61,1,0x68,0x32,0x72,0x14,0x74,0x68,0x69,0x61,0x6e,0xa3,0x7d,0x13,
-0x6c,0x61,0x76,0x69,0xa3,0x7a,0x10,0x73,0xa3,0x4d,0x15,0x65,0x72,0x69,0x74,0x65,
-0x64,0x23,0x64,0xc1,0xd,0x64,0xa2,0x7a,0x65,0xa2,0xc1,0x67,4,0x65,0x82,0x6c,
-0x9a,0x6f,0xa2,0x46,0x72,0xa2,0x55,0x75,2,0x6a,0x3c,0x6e,0x4e,0x72,1,0x6d,
-0x24,0x75,0x41,0x13,0x75,0x6b,0x68,0x69,0x41,1,0x61,0x24,0x72,0x3f,0x13,0x72,
-0x61,0x74,0x69,0x3f,0x18,0x6a,0x61,0x6c,0x61,0x67,0x6f,0x6e,0x64,0x69,0xa3,0xb3,
-0x10,0x6f,1,0x6b,0xa3,0x48,0x72,0x38,0x13,0x67,0x69,0x61,0x6e,0x39,0x11,0x61,
-0x67,0x90,0x15,0x6f,0x6c,0x69,0x74,0x69,0x63,0x91,1,0x6e,0x30,0x74,0x10,0x68,
-0x3a,0x11,0x69,0x63,0x3b,1,0x67,0xa3,0xb3,0x6d,0xa3,0xaf,1,0x61,0x32,0x65,
-1,0x65,0x24,0x6b,0x3d,0x10,0x6b,0x3d,0x10,0x6e,0xa2,0x89,0x12,0x74,0x68,0x61,
-0xa3,0x89,4,0x65,0x46,0x69,0x6c,0x6f,0x8c,0x73,0x9a,0x75,0x11,0x70,0x6c,0xa2,
-0x87,0x13,0x6f,0x79,0x61,0x6e,0xa3,0x87,1,0x73,0x38,0x76,0x10,0x61,0x34,0x15,
-0x6e,0x61,0x67,0x61,0x72,0x69,0x35,0x13,0x65,0x72,0x65,0x74,0x33,1,0x61,0x36,
-0x76,0x16,0x65,0x73,0x61,0x6b,0x75,0x72,0x75,0xa3,0xbe,0x10,0x6b,0xa3,0xbe,0x11,
-0x67,0x72,0xa2,0xb2,0x10,0x61,0xa3,0xb2,0x11,0x72,0x74,0x33,2,0x67,0x3a,0x6c,
-0x72,0x74,0x11,0x68,0x69,0x36,0x13,0x6f,0x70,0x69,0x63,0x37,0x10,0x79,2,0x64,
-0xa3,0x45,0x68,0xa3,0x46,0x70,0xa2,0x47,0x1e,0x74,0x69,0x61,0x6e,0x68,0x69,0x65,
-0x72,0x6f,0x67,0x6c,0x79,0x70,0x68,0x73,0xa3,0x47,1,0x62,0x36,0x79,0x10,0x6d,
-0xa2,0xb9,0x12,0x61,0x69,0x63,0xa3,0xb9,0x10,0x61,0xa2,0x88,0x12,0x73,0x61,0x6e,
-0xa3,0x88,0x61,0xa2,0xc9,0x62,0xa4,0x2e,0x63,6,0x6f,0x52,0x6f,0x76,0x70,0x92,
-0x75,0xa2,0x41,0x79,1,0x70,0x3e,0x72,2,0x69,0x2a,0x6c,0x31,0x73,0xa3,0x44,
-0x13,0x6c,0x6c,0x69,0x63,0x31,0x10,0x72,1,0x69,0x34,0x6f,0x15,0x6d,0x69,0x6e,
-0x6f,0x61,0x6e,0xa3,0xc1,0x11,0x6f,0x74,0x7f,1,0x6d,0x30,0x70,0x10,0x74,0x2e,
-0x11,0x69,0x63,0x2f,0x12,0x6d,0x6f,0x6e,0x21,1,0x6d,0x28,0x72,0x10,0x74,0x7f,
-0x10,0x6e,0xa3,0xc1,0x16,0x6e,0x65,0x69,0x66,0x6f,0x72,0x6d,0xa3,0x65,0x61,0x32,
-0x68,0xa2,0x41,0x69,0x11,0x72,0x74,0xa3,0x43,3,0x6b,0x4c,0x6e,0x50,0x72,0x76,
-0x75,0x1d,0x63,0x61,0x73,0x69,0x61,0x6e,0x61,0x6c,0x62,0x61,0x6e,0x69,0x61,0x6e,
-0xa3,0x9f,0x10,0x6d,0xa3,0x76,1,0x61,0x24,0x73,0x71,0x1d,0x64,0x69,0x61,0x6e,
-0x61,0x62,0x6f,0x72,0x69,0x67,0x69,0x6e,0x61,0x6c,0x71,0x10,0x69,0xa2,0x68,0x11,
-0x61,0x6e,0xa3,0x68,3,0x61,0x32,0x65,0x44,0x6f,0x52,0x72,0x10,0x73,0xa3,0xbd,
-1,0x6b,0x26,0x6d,0xa3,0x42,0x11,0x6d,0x61,0xa3,0x76,0x10,0x72,0x2c,0x13,0x6f,
-0x6b,0x65,0x65,0x2d,0x16,0x72,0x61,0x73,0x6d,0x69,0x61,0x6e,0xa3,0xbd,6,0x68,
-0x4a,0x68,0x48,0x6e,0x4e,0x72,0x76,0x76,1,0x65,0x2a,0x73,0x10,0x74,0xa3,0x75,
-0x13,0x73,0x74,0x61,0x6e,0xa3,0x75,0x11,0x6f,0x6d,0xa3,0xa1,0x11,0x61,0x74,0x1f,
-0x6f,0x6c,0x69,0x61,0x6e,0x68,0x69,0x65,0x72,0x6f,0x67,0x6c,0x79,0x70,0x68,0x73,
-0xa3,0x9c,1,0x61,0x3e,0x6d,2,0x65,0x2a,0x69,0xa3,0x74,0x6e,0x27,0x13,0x6e,
-0x69,0x61,0x6e,0x27,0x10,0x62,0x24,0x11,0x69,0x63,0x25,0x64,0x30,0x66,0x44,0x67,
-0x11,0x68,0x62,0xa3,0x9f,0x10,0x6c,1,0x61,0x26,0x6d,0xa3,0xa7,0x10,0x6d,0xa3,
-0xa7,0x11,0x61,0x6b,0xa3,0x93,6,0x6c,0x3c,0x6c,0x52,0x6f,0x56,0x72,0x66,0x75,
-1,0x67,0x30,0x68,1,0x64,0x79,0x69,0x10,0x64,0x79,0x10,0x69,0x8e,0x13,0x6e,
-0x65,0x73,0x65,0x8f,0x11,0x69,0x73,0xa1,0x11,0x70,0x6f,0x2a,0x13,0x6d,0x6f,0x66,
-0x6f,0x2b,0x10,0x61,1,0x68,0x2e,0x69,0x7c,0x12,0x6c,0x6c,0x65,0x7d,0xa2,0x41,
-0x11,0x6d,0x69,0xa3,0x41,0x61,0x48,0x65,0x9c,0x68,1,0x61,0x2a,0x6b,0x10,0x73,
-0xa3,0xa8,0x15,0x69,0x6b,0x73,0x75,0x6b,0x69,0xa3,0xa8,3,0x6c,0x3a,0x6d,0x48,
-0x73,0x54,0x74,1,0x61,0x24,0x6b,0x9f,0x10,0x6b,0x9f,0x10,0x69,0x9c,0x13,0x6e,
-0x65,0x73,0x65,0x9d,0x10,0x75,0xa2,0x82,0x10,0x6d,0xa3,0x82,0x10,0x73,0xa2,0x86,
-0x13,0x61,0x76,0x61,0x68,0xa3,0x86,0x11,0x6e,0x67,0x28,0x12,0x61,0x6c,0x69,0x29,
-3,0x6c,0x42,0x6e,0x90,0x74,0xa2,0x46,0x76,0x24,0x17,0x6f,0x77,0x65,0x6c,0x6a,
-0x61,0x6d,0x6f,0x25,0x22,1,0x65,0x54,0x76,0x28,1,0x73,0x38,0x74,0x2a,0x17,
-0x73,0x79,0x6c,0x6c,0x61,0x62,0x6c,0x65,0x2b,0x16,0x79,0x6c,0x6c,0x61,0x62,0x6c,
-0x65,0x29,0x18,0x61,0x64,0x69,0x6e,0x67,0x6a,0x61,0x6d,0x6f,0x23,1,0x61,0x21,
-0x6f,0x1a,0x74,0x61,0x70,0x70,0x6c,0x69,0x63,0x61,0x62,0x6c,0x65,0x21,0x26,0x1a,
-0x72,0x61,0x69,0x6c,0x69,0x6e,0x67,0x6a,0x61,0x6d,0x6f,0x27,1,0x6e,0x2c,0x79,
-0x22,0x11,0x65,0x73,0x23,0x20,0x10,0x6f,0x21,1,0x6e,0x2c,0x79,0x22,0x11,0x65,
-0x73,0x23,0x20,0x10,0x6f,0x21,2,0x6d,0x30,0x6e,0x3a,0x79,0x22,0x11,0x65,0x73,
-0x23,0x24,0x13,0x61,0x79,0x62,0x65,0x25,0x20,0x10,0x6f,0x21,2,0x6d,0x30,0x6e,
-0x3a,0x79,0x22,0x11,0x65,0x73,0x23,0x24,0x13,0x61,0x79,0x62,0x65,0x25,0x20,0x10,
-0x6f,0x21,0xb,0x72,0x39,0x76,0xc,0x76,0x33,0x78,0x2a,0x7a,0x11,0x77,0x6a,0x43,
-0x10,0x78,0x21,0x72,0x28,0x73,0x50,0x74,0x31,1,0x65,0x24,0x69,0x39,0x1e,0x67,
-0x69,0x6f,0x6e,0x61,0x6c,0x69,0x6e,0x64,0x69,0x63,0x61,0x74,0x6f,0x72,0x39,1,
-0x6d,0x35,0x70,0x18,0x61,0x63,0x69,0x6e,0x67,0x6d,0x61,0x72,0x6b,0x35,0x6c,0x1f,
-0x6c,0x3c,0x6f,0x4a,0x70,1,0x70,0x37,0x72,0x14,0x65,0x70,0x65,0x6e,0x64,0x37,
-0x28,1,0x66,0x2b,0x76,0x2c,0x10,0x74,0x2f,0x13,0x74,0x68,0x65,0x72,0x21,0x63,
-0x4c,0x65,0x64,0x67,1,0x61,0x3a,0x6c,0x19,0x75,0x65,0x61,0x66,0x74,0x65,0x72,
-0x7a,0x77,0x6a,0x41,0x10,0x7a,0x41,2,0x6e,0x23,0x6f,0x24,0x72,0x25,0x14,0x6e,
-0x74,0x72,0x6f,0x6c,0x23,2,0x62,0x34,0x6d,0x4e,0x78,0x26,0x13,0x74,0x65,0x6e,
-0x64,0x27,0x3a,1,0x61,0x24,0x67,0x3d,0x11,0x73,0x65,0x3a,0x12,0x67,0x61,0x7a,
-0x3d,0x3e,0x16,0x6f,0x64,0x69,0x66,0x69,0x65,0x72,0x3f,9,0x6e,0x4a,0x6e,0x34,
-0x6f,0x44,0x73,0x60,0x75,0x94,0x78,0x10,0x78,0x21,0x10,0x75,0x2a,0x14,0x6d,0x65,
-0x72,0x69,0x63,0x2b,1,0x6c,0x2c,0x74,0x12,0x68,0x65,0x72,0x21,0x14,0x65,0x74,
-0x74,0x65,0x72,0x2d,3,0x63,0x36,0x65,0x46,0x70,0x31,0x74,0x32,0x12,0x65,0x72,
-0x6d,0x33,0x3c,0x16,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x3d,0x2e,0x10,0x70,0x2f,
-0x10,0x70,0x34,0x12,0x70,0x65,0x72,0x35,0x61,0x46,0x63,0x52,0x65,0x64,0x66,0x72,
-0x6c,2,0x65,0x2d,0x66,0x3b,0x6f,0x28,0x12,0x77,0x65,0x72,0x29,0x10,0x74,0x22,
-0x12,0x65,0x72,0x6d,0x23,1,0x6c,0x24,0x72,0x37,0x24,0x12,0x6f,0x73,0x65,0x25,
-0x10,0x78,0x38,0x13,0x74,0x65,0x6e,0x64,0x39,0x10,0x6f,0x26,0x13,0x72,0x6d,0x61,
-0x74,0x27,0,0x10,0x6c,0x88,0x72,0x40,0x72,0x36,0x73,0x5e,0x77,0x7a,0x78,0x8a,
-0x7a,0x11,0x77,0x6a,0x4b,1,0x65,0x24,0x69,0x3b,0x1e,0x67,0x69,0x6f,0x6e,0x61,
-0x6c,0x69,0x6e,0x64,0x69,0x63,0x61,0x74,0x6f,0x72,0x3b,1,0x69,0x24,0x71,0x3f,
-0x18,0x6e,0x67,0x6c,0x65,0x71,0x75,0x6f,0x74,0x65,0x3f,0x17,0x73,0x65,0x67,0x73,
-0x70,0x61,0x63,0x65,0x4d,0x10,0x78,0x21,0x6c,0x36,0x6d,0x3c,0x6e,0x76,0x6f,0x13,
-0x74,0x68,0x65,0x72,0x21,1,0x65,0x23,0x66,0x35,3,0x62,0x37,0x69,0x28,0x6c,
-0x29,0x6e,0x2b,0x10,0x64,1,0x6c,0x34,0x6e,0x11,0x75,0x6d,0x2a,0x12,0x6c,0x65,
-0x74,0x37,0x14,0x65,0x74,0x74,0x65,0x72,0x29,2,0x65,0x36,0x6c,0x39,0x75,0x2c,
-0x14,0x6d,0x65,0x72,0x69,0x63,0x2d,0x14,0x77,0x6c,0x69,0x6e,0x65,0x39,0x66,0x3f,
-0x66,0x40,0x67,0x4e,0x68,0x70,0x6b,0x10,0x61,0x26,0x15,0x74,0x61,0x6b,0x61,0x6e,
-0x61,0x27,0x10,0x6f,0x24,0x13,0x72,0x6d,0x61,0x74,0x25,1,0x61,0x3a,0x6c,0x19,
-0x75,0x65,0x61,0x66,0x74,0x65,0x72,0x7a,0x77,0x6a,0x49,0x10,0x7a,0x49,1,0x65,
-0x24,0x6c,0x3d,0x19,0x62,0x72,0x65,0x77,0x6c,0x65,0x74,0x74,0x65,0x72,0x3d,0x61,
-0x86,0x63,0x92,0x64,0x94,0x65,2,0x62,0x44,0x6d,0x5e,0x78,0x2e,0x13,0x74,0x65,
-0x6e,0x64,0x32,0x15,0x6e,0x75,0x6d,0x6c,0x65,0x74,0x2f,0x42,1,0x61,0x24,0x67,
-0x45,0x11,0x73,0x65,0x42,0x12,0x67,0x61,0x7a,0x45,0x46,0x16,0x6f,0x64,0x69,0x66,
-0x69,0x65,0x72,0x47,0x15,0x6c,0x65,0x74,0x74,0x65,0x72,0x23,0x10,0x72,0x31,1,
-0x6f,0x24,0x71,0x41,0x18,0x75,0x62,0x6c,0x65,0x71,0x75,0x6f,0x74,0x65,0x41,2,
-0x63,0x32,0x6e,0x3c,0x6f,0x22,0x12,0x70,0x65,0x6e,0x23,0x24,0x13,0x6c,0x6f,0x73,
-0x65,0x25,0x20,0x12,0x6f,0x6e,0x65,0x21,6,0x6f,0x65,0x6f,0x4a,0x72,0x5c,0x74,
-0x64,0x76,0x1d,0x69,0x73,0x75,0x61,0x6c,0x6f,0x72,0x64,0x65,0x72,0x6c,0x65,0x66,
-0x74,0x3d,0x18,0x76,0x65,0x72,0x73,0x74,0x72,0x75,0x63,0x6b,0x2d,0x13,0x69,0x67,
-0x68,0x74,0x2f,0x11,0x6f,0x70,0x30,0x12,0x61,0x6e,0x64,2,0x62,0x32,0x6c,0x62,
-0x72,0x13,0x69,0x67,0x68,0x74,0x3b,0x14,0x6f,0x74,0x74,0x6f,0x6d,0x32,0x12,0x61,
-0x6e,0x64,1,0x6c,0x2e,0x72,0x13,0x69,0x67,0x68,0x74,0x35,0x12,0x65,0x66,0x74,
-0x3f,0x12,0x65,0x66,0x74,0x36,0x17,0x61,0x6e,0x64,0x72,0x69,0x67,0x68,0x74,0x39,
-0x62,0x2c,0x6c,0x5c,0x6e,0x10,0x61,0x21,0x14,0x6f,0x74,0x74,0x6f,0x6d,0x22,0x12,
-0x61,0x6e,0x64,1,0x6c,0x2e,0x72,0x13,0x69,0x67,0x68,0x74,0x27,0x12,0x65,0x66,
-0x74,0x25,0x12,0x65,0x66,0x74,0x28,0x17,0x61,0x6e,0x64,0x72,0x69,0x67,0x68,0x74,
-0x2b,0xd,0x6e,0xaa,0x72,0x70,0x72,0x92,0x73,0xa2,0x46,0x74,0xa2,0x54,0x76,1,
-0x69,0x60,0x6f,0x12,0x77,0x65,0x6c,0x62,1,0x64,0x3a,0x69,0x19,0x6e,0x64,0x65,
-0x70,0x65,0x6e,0x64,0x65,0x6e,0x74,0x67,0x17,0x65,0x70,0x65,0x6e,0x64,0x65,0x6e,
-0x74,0x65,1,0x72,0x2e,0x73,0x13,0x61,0x72,0x67,0x61,0x61,0x12,0x61,0x6d,0x61,
-0x5f,0x1d,0x65,0x67,0x69,0x73,0x74,0x65,0x72,0x73,0x68,0x69,0x66,0x74,0x65,0x72,
-0x57,0x1e,0x79,0x6c,0x6c,0x61,0x62,0x6c,0x65,0x6d,0x6f,0x64,0x69,0x66,0x69,0x65,
-0x72,0x59,0x12,0x6f,0x6e,0x65,1,0x6c,0x2c,0x6d,0x12,0x61,0x72,0x6b,0x5d,0x14,
-0x65,0x74,0x74,0x65,0x72,0x5b,0x6e,0x3c,0x6f,0x7c,0x70,0x18,0x75,0x72,0x65,0x6b,
-0x69,0x6c,0x6c,0x65,0x72,0x55,1,0x6f,0x4c,0x75,1,0x6b,0x3c,0x6d,0x12,0x62,
-0x65,0x72,0x50,0x15,0x6a,0x6f,0x69,0x6e,0x65,0x72,0x53,0x11,0x74,0x61,0x4f,0x16,
-0x6e,0x6a,0x6f,0x69,0x6e,0x65,0x72,0x4d,0x13,0x74,0x68,0x65,0x72,0x21,0x67,0x3e,
-0x67,0x4a,0x69,0x64,0x6a,0x82,0x6d,0x1d,0x6f,0x64,0x69,0x66,0x79,0x69,0x6e,0x67,
-0x6c,0x65,0x74,0x74,0x65,0x72,0x4b,0x1c,0x65,0x6d,0x69,0x6e,0x61,0x74,0x69,0x6f,
-0x6e,0x6d,0x61,0x72,0x6b,0x45,0x1e,0x6e,0x76,0x69,0x73,0x69,0x62,0x6c,0x65,0x73,
-0x74,0x61,0x63,0x6b,0x65,0x72,0x47,0x14,0x6f,0x69,0x6e,0x65,0x72,0x49,0x61,0xa2,
-0xba,0x62,0xa2,0xc0,0x63,1,0x61,0xa2,0xa2,0x6f,0x16,0x6e,0x73,0x6f,0x6e,0x61,
-0x6e,0x74,0x2a,8,0x6b,0x67,0x6b,0x48,0x6d,0x52,0x70,0x5c,0x73,0xa2,0x42,0x77,
-0x19,0x69,0x74,0x68,0x73,0x74,0x61,0x63,0x6b,0x65,0x72,0x43,0x14,0x69,0x6c,0x6c,
-0x65,0x72,0x35,0x14,0x65,0x64,0x69,0x61,0x6c,0x37,1,0x6c,0x52,0x72,0x10,0x65,
-1,0x63,0x2e,0x66,0x13,0x69,0x78,0x65,0x64,0x3d,0x19,0x65,0x64,0x69,0x6e,0x67,
-0x72,0x65,0x70,0x68,0x61,0x3b,0x18,0x61,0x63,0x65,0x68,0x6f,0x6c,0x64,0x65,0x72,
-0x39,0x10,0x75,1,0x62,0x3e,0x63,0x1b,0x63,0x65,0x65,0x64,0x69,0x6e,0x67,0x72,
-0x65,0x70,0x68,0x61,0x41,0x15,0x6a,0x6f,0x69,0x6e,0x65,0x64,0x3f,0x64,0x4c,0x66,
-0x52,0x68,0x5a,0x69,0x1e,0x6e,0x69,0x74,0x69,0x61,0x6c,0x70,0x6f,0x73,0x74,0x66,
-0x69,0x78,0x65,0x64,0x33,0x12,0x65,0x61,0x64,0x2d,0x13,0x69,0x6e,0x61,0x6c,0x2f,
-0x18,0x65,0x61,0x64,0x6c,0x65,0x74,0x74,0x65,0x72,0x31,0x1d,0x6e,0x74,0x69,0x6c,
-0x6c,0x61,0x74,0x69,0x6f,0x6e,0x6d,0x61,0x72,0x6b,0x29,0x16,0x76,0x61,0x67,0x72,
-0x61,0x68,0x61,0x23,1,0x69,0x4a,0x72,0x10,0x61,0x1f,0x68,0x6d,0x69,0x6a,0x6f,
-0x69,0x6e,0x69,0x6e,0x67,0x6e,0x75,0x6d,0x62,0x65,0x72,0x27,0x12,0x6e,0x64,0x75,
-0x25,2,0x72,0x38,0x74,0x46,0x75,0x26,0x15,0x70,0x72,0x69,0x67,0x68,0x74,0x27,
-0x20,0x15,0x6f,0x74,0x61,0x74,0x65,0x64,0x21,1,0x72,0x24,0x75,0x25,0x22,0x18,
-0x61,0x6e,0x73,0x66,0x6f,0x72,0x6d,0x65,0x64,1,0x72,0x32,0x75,0x15,0x70,0x72,
-0x69,0x67,0x68,0x74,0x25,0x15,0x6f,0x74,0x61,0x74,0x65,0x64,0x23,0xd,0x6e,0xc1,
-0x86,0x73,0xa8,0x73,0x4c,0x74,0xa2,0x76,0x75,0xa2,0x83,0x7a,0xd8,0x70,0,2,
-0x6c,0xd9,0x20,0,0x70,0xd9,0x40,0,0x73,0xc3,0,0xfe,0xf,0,0,0,
-7,0x6f,0x3c,0x6f,0xff,8,0,0,0,0x70,0x3a,0x75,0x6e,0x79,0x13,0x6d,
-0x62,0x6f,0x6c,0xff,0xf,0,0,0,0x11,0x61,0x63,1,0x65,0x34,0x69,0x15,
-0x6e,0x67,0x6d,0x61,0x72,0x6b,0xa5,0,0x18,0x73,0x65,0x70,0x61,0x72,0x61,0x74,
-0x6f,0x72,0xc3,0,0x16,0x72,0x72,0x6f,0x67,0x61,0x74,0x65,0xe1,0,0,0x63,
-0xff,2,0,0,0,0x65,0x38,0x6b,0xff,4,0,0,0,0x6d,0xff,1,
-0,0,0,0x16,0x70,0x61,0x72,0x61,0x74,0x6f,0x72,0xd9,0x70,0,0x1d,0x69,
-0x74,0x6c,0x65,0x63,0x61,0x73,0x65,0x6c,0x65,0x74,0x74,0x65,0x72,0x31,1,0x6e,
-0x40,0x70,0x1c,0x70,0x65,0x72,0x63,0x61,0x73,0x65,0x6c,0x65,0x74,0x74,0x65,0x72,
-0x25,0x17,0x61,0x73,0x73,0x69,0x67,0x6e,0x65,0x64,0x23,0x6e,0xa2,0x69,0x6f,0xa2,
-0x89,0x70,0xfe,0x30,0xf8,0,0,9,0x69,0x33,0x69,0xff,0x10,0,0,0,
-0x6f,0xfd,0x80,0,0,0x72,0x54,0x73,0xf9,0,0,0x75,0x12,0x6e,0x63,0x74,
-0xfe,0x30,0xf8,0,0,0x15,0x75,0x61,0x74,0x69,0x6f,0x6e,0xff,0x30,0xf8,0,
-0,0x17,0x69,0x76,0x61,0x74,0x65,0x75,0x73,0x65,0xdd,0,0,0x61,0x48,0x63,
-0xfd,0x40,0,0,0x64,0xe9,0,0,0x65,0xfd,0x20,0,0,0x66,0xff,0x20,
-0,0,0,0x1f,0x72,0x61,0x67,0x72,0x61,0x70,0x68,0x73,0x65,0x70,0x61,0x72,
-0x61,0x74,0x6f,0x72,0xd9,0x40,0,0xbe,0,3,0x64,0xa7,0,0x6c,0xab,0,
-0x6f,0x30,0x75,0x13,0x6d,0x62,0x65,0x72,0xbf,0,0xb2,0,0x1b,0x6e,0x73,0x70,
-0x61,0x63,0x69,0x6e,0x67,0x6d,0x61,0x72,0x6b,0xa1,1,0x70,0x92,0x74,0x12,0x68,
-0x65,0x72,0xe6,0x80,1,3,0x6c,0x40,0x6e,0x4a,0x70,0x56,0x73,0x14,0x79,0x6d,
-0x62,0x6f,0x6c,0xff,8,0,0,0,0x14,0x65,0x74,0x74,0x65,0x72,0x61,0x14,
-0x75,0x6d,0x62,0x65,0x72,0xb3,0,0x19,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,
-0x6f,0x6e,0xfd,0x80,0,0,0x1c,0x65,0x6e,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,
-0x74,0x69,0x6f,0x6e,0xf9,0,0,0x66,0xc0,0xc4,0x66,0xa2,0x47,0x69,0xa2,0x64,
-0x6c,0xa2,0x79,0x6d,0xa4,0xc0,4,0x61,0x6c,0x63,0xa5,0,0x65,0xa3,0x80,0x6e,
-0xa1,0x6f,0x15,0x64,0x69,0x66,0x69,0x65,0x72,1,0x6c,0x38,0x73,0x14,0x79,0x6d,
-0x62,0x6f,0x6c,0xff,4,0,0,0,0x14,0x65,0x74,0x74,0x65,0x72,0x41,1,
-0x72,0x3c,0x74,0x16,0x68,0x73,0x79,0x6d,0x62,0x6f,0x6c,0xff,1,0,0,0,
-0x10,0x6b,0xa5,0xc0,1,0x69,0x32,0x6f,0x13,0x72,0x6d,0x61,0x74,0xdb,0,0,
-0x1d,0x6e,0x61,0x6c,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0xff,
-0x20,0,0,0,0x10,0x6e,0x1f,0x69,0x74,0x69,0x61,0x6c,0x70,0x75,0x6e,0x63,
-0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0xff,0x10,0,0,0,0x9c,7,0x6d,0x18,
-0x6d,0x41,0x6f,0x28,0x74,0x31,0x75,0x25,0x60,0x1c,0x77,0x65,0x72,0x63,0x61,0x73,
-0x65,0x6c,0x65,0x74,0x74,0x65,0x72,0x29,0x63,0x3d,0x65,0x28,0x69,0x42,0x6c,0x29,
-0x13,0x74,0x74,0x65,0x72,0x9c,0x15,0x6e,0x75,0x6d,0x62,0x65,0x72,0xab,0,0x1a,
-0x6e,0x65,0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x6f,0x72,0xd9,0x20,0,0x63,0x46,
-0x64,0xa2,0x96,0x65,0x1b,0x6e,0x63,0x6c,0x6f,0x73,0x69,0x6e,0x67,0x6d,0x61,0x72,
-0x6b,0xa3,0x80,0xe6,0x80,1,7,0x6e,0x57,0x6e,0x52,0x6f,0x5e,0x73,0xe1,0,
-0,0x75,0x1b,0x72,0x72,0x65,0x6e,0x63,0x79,0x73,0x79,0x6d,0x62,0x6f,0x6c,0xff,
-2,0,0,0,0x22,0x12,0x74,0x72,0x6c,0xd9,0x80,0,0xdc,0,0,1,
-0x6d,0x62,0x6e,1,0x6e,0x30,0x74,0x12,0x72,0x6f,0x6c,0xd9,0x80,0,0x1f,0x65,
-0x63,0x74,0x6f,0x72,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0xfd,
-0x40,0,0,0x19,0x62,0x69,0x6e,0x69,0x6e,0x67,0x6d,0x61,0x72,0x6b,0xa5,0xc0,
-0x61,0x58,0x63,0xd9,0x80,0,0x66,0xdb,0,0,0x6c,0x1d,0x6f,0x73,0x65,0x70,
-0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0xfd,0x20,0,0,0x18,0x73,
-0x65,0x64,0x6c,0x65,0x74,0x74,0x65,0x72,0x3d,2,0x61,0x32,0x65,0x50,0x69,0x12,
-0x67,0x69,0x74,0xa7,0,0x1c,0x73,0x68,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,
-0x69,0x6f,0x6e,0xe9,0,0,0x1a,0x63,0x69,0x6d,0x61,0x6c,0x6e,0x75,0x6d,0x62,
-0x65,0x72,0xa7,0
+0x61,0x6b,0xc3,8,2,0x64,0x4a,0x6e,0xa2,0x91,0x73,1,0x63,0xd9,0x40,3,
+0x6f,0x16,0x63,0x6f,0x6d,0x6d,0x65,0x6e,0x74,0xd9,0x40,3,2,0x63,0xa2,0x44,
+0x65,0xa2,0x6c,0x73,0x40,2,0x62,0x48,0x74,0x64,0x75,0xa2,0x48,0x1b,0x6e,0x61,
+0x72,0x79,0x6f,0x70,0x65,0x72,0x61,0x74,0x6f,0x72,0xa3,0x48,0x44,0x1c,0x69,0x6e,
+0x61,0x72,0x79,0x6f,0x70,0x65,0x72,0x61,0x74,0x6f,0x72,0x45,0x46,1,0x61,0x40,
+0x72,0x1c,0x69,0x6e,0x61,0x72,0x79,0x6f,0x70,0x65,0x72,0x61,0x74,0x6f,0x72,0x47,
+0x11,0x72,0x74,0x41,0x3e,0x10,0x6f,1,0x6d,0x30,0x6e,0x14,0x74,0x69,0x6e,0x75,
+0x65,0x3f,0x16,0x70,0x61,0x74,0x6d,0x61,0x74,0x68,1,0x63,0x30,0x73,0x13,0x74,
+0x61,0x72,0x74,0xa3,0x49,0x16,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0xa3,0x4a,0x10,
+0x6f,0x42,0x16,0x67,0x72,0x61,0x70,0x68,0x69,0x63,0x43,2,0x64,0x2e,0x70,0x86,
+0x73,0x10,0x63,0xc3,0x17,0x11,0x69,0x63,1,0x70,0x46,0x73,0x1e,0x79,0x6c,0x6c,
+0x61,0x62,0x69,0x63,0x63,0x61,0x74,0x65,0x67,0x6f,0x72,0x79,0xc3,0x17,0x10,0x6f,
+0x1f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x61,0x6c,0x63,0x61,0x74,0x65,0x67,0x6f,0x72,
+0x79,0xc3,0x16,0x10,0x63,0xc3,0x16,2,0x67,0xc3,6,0x6f,0x26,0x74,0xc3,7,
+0x11,0x69,0x6e,1,0x63,0x4a,0x69,0x11,0x6e,0x67,1,0x67,0x2e,0x74,0x12,0x79,
+0x70,0x65,0xc3,7,0x13,0x72,0x6f,0x75,0x70,0xc3,6,0x48,0x15,0x6f,0x6e,0x74,
+0x72,0x6f,0x6c,0x49,0x66,0x86,0x67,0xa2,0x4a,0x68,3,0x61,0x36,0x65,0x58,0x73,
+0x68,0x79,0x13,0x70,0x68,0x65,0x6e,0x3d,0x1f,0x6e,0x67,0x75,0x6c,0x73,0x79,0x6c,
+0x6c,0x61,0x62,0x6c,0x65,0x74,0x79,0x70,0x65,0xc3,0xb,0x10,0x78,0x3a,0x14,0x64,
+0x69,0x67,0x69,0x74,0x3b,0x10,0x74,0xc3,0xb,0x16,0x75,0x6c,0x6c,0x63,0x6f,0x6d,
+0x70,0x1f,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x65,0x78,0x63,0x6c,0x75,0x73,0x69,
+0x6f,0x6e,0x33,2,0x63,0xa2,0x44,0x65,0xa2,0x4b,0x72,3,0x61,0x34,0x62,0x84,
+0x65,0x8a,0x6c,0x12,0x69,0x6e,0x6b,0x39,0x11,0x70,0x68,0x7c,0x12,0x65,0x6d,0x65,
+3,0x62,0x5e,0x63,0x30,0x65,0x48,0x6c,0x12,0x69,0x6e,0x6b,0x39,0x1a,0x6c,0x75,
+0x73,0x74,0x65,0x72,0x62,0x72,0x65,0x61,0x6b,0xc3,0x12,0x14,0x78,0x74,0x65,0x6e,
+0x64,0x37,0x12,0x61,0x73,0x65,0x35,0x11,0x78,0x74,0x37,0xc2,5,1,0x62,0xc3,
+0x12,0x6d,0xd9,0x20,0,0x1c,0x6e,0x65,0x72,0x61,0x6c,0x63,0x61,0x74,0x65,0x67,
+0x6f,0x72,0x79,0xc2,5,0x13,0x6d,0x61,0x73,0x6b,0xd9,0x20,0,0x61,0xa2,0xa2,
+0x62,0xa2,0xd0,0x63,0xa4,0x4f,0x64,0xa6,0x1c,0x65,5,0x6d,0x75,0x6d,0x6e,0x70,
+0xa2,0x6b,0x78,0x10,0x74,0x30,1,0x65,0x2c,0x70,0x12,0x69,0x63,0x74,0xa1,0x12,
+0x6e,0x64,0x65,1,0x64,0x24,0x72,0x31,0x1b,0x70,0x69,0x63,0x74,0x6f,0x67,0x72,
+0x61,0x70,0x68,0x69,0x63,0xa1,0x10,0x6f,1,0x64,0x97,0x6a,0x10,0x69,0x92,3,
+0x63,0x44,0x6b,0x54,0x6d,0x70,0x70,0x1a,0x72,0x65,0x73,0x65,0x6e,0x74,0x61,0x74,
+0x69,0x6f,0x6e,0x95,0x17,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x9b,0x1c,0x65,
+0x79,0x63,0x61,0x70,0x73,0x65,0x71,0x75,0x65,0x6e,0x63,0x65,0xa3,0x42,0x16,0x6f,
+0x64,0x69,0x66,0x69,0x65,0x72,0x96,0x13,0x62,0x61,0x73,0x65,0x99,0x12,0x72,0x65,
+0x73,0x95,0x61,0x30,0x62,0x4e,0x63,0x12,0x6f,0x6d,0x70,0x9b,0xc2,4,0x1b,0x73,
+0x74,0x61,0x73,0x69,0x61,0x6e,0x77,0x69,0x64,0x74,0x68,0xc3,4,0x12,0x61,0x73,
+0x65,0x99,3,0x67,0x44,0x68,0x4a,0x6c,0x4e,0x73,0x1a,0x63,0x69,0x69,0x68,0x65,
+0x78,0x64,0x69,0x67,0x69,0x74,0x23,0x10,0x65,0xd9,0x40,0,0x11,0x65,0x78,0x23,
+1,0x6e,0x38,0x70,0x11,0x68,0x61,0x20,0x14,0x62,0x65,0x74,0x69,0x63,0x21,0x11,
+0x75,0x6d,0x79,5,0x6c,0x22,0x6c,0x36,0x6d,0x52,0x70,1,0x62,0xd9,0x40,0xd,
+0x74,0xc3,0x15,2,0x61,0x32,0x6b,0xc3,1,0x6f,0x11,0x63,0x6b,0xc3,1,0x11,
+0x6e,0x6b,0x7b,0x10,0x67,0xd9,0x40,1,0x61,0xa2,0x4f,0x63,0xc3,0,0x69,0x11,
+0x64,0x69,2,0x63,0x54,0x6d,0x74,0x70,0x1b,0x61,0x69,0x72,0x65,0x64,0x62,0x72,
+0x61,0x63,0x6b,0x65,0x74,0xd8,0x40,0xd,0x13,0x74,0x79,0x70,0x65,0xc3,0x15,0x24,
+1,0x6c,0x30,0x6f,0x14,0x6e,0x74,0x72,0x6f,0x6c,0x25,0x12,0x61,0x73,0x73,0xc3,
+0,0x26,0x14,0x69,0x72,0x72,0x6f,0x72,1,0x65,0x38,0x69,0x16,0x6e,0x67,0x67,
+0x6c,0x79,0x70,0x68,0xd9,0x40,1,0x10,0x64,0x27,0x17,0x73,0x69,0x63,0x65,0x6d,
+0x6f,0x6a,0x69,0xa3,0x41,6,0x68,0x7c,0x68,0x54,0x69,0x85,0x6f,0xa2,0x6f,0x77,
+4,0x63,0x30,0x6b,0x36,0x6c,0x87,0x74,0x8b,0x75,0x89,1,0x66,0x8d,0x6d,0x8f,
+0x11,0x63,0x66,0x91,0x18,0x61,0x6e,0x67,0x65,0x73,0x77,0x68,0x65,0x6e,4,0x63,
+0x44,0x6c,0x6c,0x6e,0x7e,0x74,0x98,0x75,0x18,0x70,0x70,0x65,0x72,0x63,0x61,0x73,
+0x65,0x64,0x89,0x12,0x61,0x73,0x65,1,0x66,0x30,0x6d,0x14,0x61,0x70,0x70,0x65,
+0x64,0x8f,0x14,0x6f,0x6c,0x64,0x65,0x64,0x8d,0x18,0x6f,0x77,0x65,0x72,0x63,0x61,
+0x73,0x65,0x64,0x87,0x1c,0x66,0x6b,0x63,0x63,0x61,0x73,0x65,0x66,0x6f,0x6c,0x64,
+0x65,0x64,0x91,0x18,0x69,0x74,0x6c,0x65,0x63,0x61,0x73,0x65,0x64,0x8b,0x13,0x6d,
+0x70,0x65,0x78,0x33,0x61,0x2e,0x63,0xa2,0x48,0x66,0xd9,0x40,2,1,0x6e,0x72,
+0x73,0x10,0x65,3,0x64,0x83,0x66,0x3a,0x69,0x4a,0x73,0x17,0x65,0x6e,0x73,0x69,
+0x74,0x69,0x76,0x65,0x65,0x15,0x6f,0x6c,0x64,0x69,0x6e,0x67,0xd9,0x40,2,0x17,
+0x67,0x6e,0x6f,0x72,0x61,0x62,0x6c,0x65,0x85,0x13,0x6f,0x6e,0x69,0x63,0x1f,0x61,
+0x6c,0x63,0x6f,0x6d,0x62,0x69,0x6e,0x69,0x6e,0x67,0x63,0x6c,0x61,0x73,0x73,0xc3,
+2,0x10,0x63,0xc3,2,3,0x61,0x30,0x65,0x34,0x69,0xa2,0x41,0x74,0xc3,3,
+0x11,0x73,0x68,0x29,2,0x63,0x3a,0x66,0x58,0x70,0x2c,0x16,0x72,0x65,0x63,0x61,
+0x74,0x65,0x64,0x2d,0x1d,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x74,
+0x79,0x70,0x65,0xc3,3,0x15,0x61,0x75,0x6c,0x74,0x69,0x67,0x1f,0x6e,0x6f,0x72,
+0x61,0x62,0x6c,0x65,0x63,0x6f,0x64,0x65,0x70,0x6f,0x69,0x6e,0x74,0x2b,0x2a,0x10,
+0x61,0x2e,0x15,0x63,0x72,0x69,0x74,0x69,0x63,0x2f,3,0x66,0x34,0x6e,0x3e,0x74,
+0x42,0x79,0x22,0x11,0x65,0x73,0x23,0x20,0x13,0x61,0x6c,0x73,0x65,0x21,0x20,0x10,
+0x6f,0x21,0x22,0x12,0x72,0x75,0x65,0x23,0xb,0x6b,0x5b,0x6f,0x23,0x6f,0x3c,0x72,
+0x4c,0x76,1,0x69,0x24,0x72,0x33,0x13,0x72,0x61,0x6d,0x61,0x33,0x10,0x76,0x22,
+0x14,0x65,0x72,0x6c,0x61,0x79,0x23,0xa2,0xe2,0x13,0x69,0x67,0x68,0x74,0xa3,0xe2,
+0x6b,0x58,0x6c,0x74,0x6e,3,0x6b,0x2f,0x6f,0x30,0x72,0x21,0x75,0x12,0x6b,0x74,
+0x61,0x2f,0x19,0x74,0x72,0x65,0x6f,0x72,0x64,0x65,0x72,0x65,0x64,0x21,1,0x61,
+0x24,0x76,0x31,0x18,0x6e,0x61,0x76,0x6f,0x69,0x63,0x69,0x6e,0x67,0x31,0xa2,0xe0,
+0x12,0x65,0x66,0x74,0xa3,0xe0,0x64,0x45,0x64,0x4e,0x68,0x88,0x69,1,0x6f,0x26,
+0x73,0xa3,0xf0,0x1a,0x74,0x61,0x73,0x75,0x62,0x73,0x63,0x72,0x69,0x70,0x74,0xa3,
+0xf0,2,0x61,0xa3,0xea,0x62,0xa3,0xe9,0x6f,0x13,0x75,0x62,0x6c,0x65,1,0x61,
+0x30,0x62,0x13,0x65,0x6c,0x6f,0x77,0xa3,0xe9,0x13,0x62,0x6f,0x76,0x65,0xa3,0xea,
+0x12,0x61,0x6e,0x72,0x2c,0x15,0x65,0x61,0x64,0x69,0x6e,0x67,0x2d,0x61,0xa2,0x7b,
+0x62,0xa2,0xd4,0x63,0x11,0x63,0x63,4,0x31,0x3c,0x32,0xa2,0x42,0x33,0xa2,0x56,
+0x38,0xa2,0x64,0x39,0x10,0x31,0xa3,0x5b,9,0x35,0xa,0x35,0x3f,0x36,0x41,0x37,
+0x43,0x38,0x45,0x39,0x47,0x30,0x30,0x31,0x3c,0x32,0x42,0x33,0x4e,0x34,0x3d,0x34,
+1,0x33,0xa3,0x67,0x37,0xa3,0x6b,0x36,0x10,0x38,0xa3,0x76,0x38,1,0x32,0xa3,
+0x7a,0x39,0xa3,0x81,0x3a,2,0x30,0xa3,0x82,0x32,0xa3,0x84,0x33,0xa3,0x85,9,
+0x35,0xa,0x35,0x53,0x36,0x55,0x37,0x57,0x38,0x59,0x39,0x5b,0x30,0x49,0x31,0x4b,
+0x32,0x4d,0x33,0x4f,0x34,0x51,6,0x33,8,0x33,0x63,0x34,0x65,0x35,0x67,0x36,
+0x69,0x30,0x5d,0x31,0x5f,0x32,0x61,0x10,0x34,0xa3,0x54,0xa2,0xe6,3,0x62,0xa0,
+0x6c,0xa3,0xe4,0x72,0xa3,0xe8,0x74,2,0x61,0x74,0x62,0x7c,0x74,0x14,0x61,0x63,
+0x68,0x65,0x64,1,0x61,0x3e,0x62,0x13,0x65,0x6c,0x6f,0x77,0xa2,0xca,0x13,0x6c,
+0x65,0x66,0x74,0xa3,0xc8,0x13,0x62,0x6f,0x76,0x65,0xa2,0xd6,0x14,0x72,0x69,0x67,
+0x68,0x74,0xa3,0xd8,0xa2,0xd6,0x10,0x72,0xa3,0xd8,0xa2,0xca,0x10,0x6c,0xa3,0xc8,
+0x12,0x6f,0x76,0x65,0xa2,0xe6,1,0x6c,0x30,0x72,0x13,0x69,0x67,0x68,0x74,0xa3,
+0xe8,0x12,0x65,0x66,0x74,0xa3,0xe4,0xa2,0xdc,2,0x65,0x2c,0x6c,0xa3,0xda,0x72,
+0xa3,0xde,0x12,0x6c,0x6f,0x77,0xa2,0xdc,1,0x6c,0x30,0x72,0x13,0x69,0x67,0x68,
+0x74,0xa3,0xde,0x12,0x65,0x66,0x74,0xa3,0xda,0xb,0x6e,0xc0,0xca,0x72,0x5f,0x72,
+0x46,0x73,0xa2,0x48,0x77,1,0x68,0x24,0x73,0x33,0x17,0x69,0x74,0x65,0x73,0x70,
+0x61,0x63,0x65,0x33,0x22,1,0x69,0x30,0x6c,2,0x65,0x3d,0x69,0x4b,0x6f,0x3f,
+0x18,0x67,0x68,0x74,0x74,0x6f,0x6c,0x65,0x66,0x74,0x22,2,0x65,0x38,0x69,0x48,
+0x6f,0x16,0x76,0x65,0x72,0x72,0x69,0x64,0x65,0x3f,0x17,0x6d,0x62,0x65,0x64,0x64,
+0x69,0x6e,0x67,0x3d,0x15,0x73,0x6f,0x6c,0x61,0x74,0x65,0x4b,0x30,0x1e,0x65,0x67,
+0x6d,0x65,0x6e,0x74,0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x6f,0x72,0x31,0x6e,0xa2,
+0x41,0x6f,0xa2,0x53,0x70,2,0x61,0x66,0x64,0x86,0x6f,0x1b,0x70,0x64,0x69,0x72,
+0x65,0x63,0x74,0x69,0x6f,0x6e,0x61,0x6c,1,0x66,0x32,0x69,0x15,0x73,0x6f,0x6c,
+0x61,0x74,0x65,0x4d,0x14,0x6f,0x72,0x6d,0x61,0x74,0x41,0x1f,0x72,0x61,0x67,0x72,
+0x61,0x70,0x68,0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x6f,0x72,0x2f,1,0x66,0x41,
+0x69,0x4d,1,0x6f,0x28,0x73,0x10,0x6d,0x43,0x1b,0x6e,0x73,0x70,0x61,0x63,0x69,
+0x6e,0x67,0x6d,0x61,0x72,0x6b,0x43,1,0x6e,0x35,0x74,0x19,0x68,0x65,0x72,0x6e,
+0x65,0x75,0x74,0x72,0x61,0x6c,0x35,0x65,0x88,0x65,0x98,0x66,0xa2,0x6a,0x6c,0x20,
+1,0x65,0x30,0x72,2,0x65,0x37,0x69,0x49,0x6f,0x39,0x18,0x66,0x74,0x74,0x6f,
+0x72,0x69,0x67,0x68,0x74,0x20,2,0x65,0x38,0x69,0x48,0x6f,0x16,0x76,0x65,0x72,
+0x72,0x69,0x64,0x65,0x39,0x17,0x6d,0x62,0x65,0x64,0x64,0x69,0x6e,0x67,0x37,0x15,
+0x73,0x6f,0x6c,0x61,0x74,0x65,0x49,3,0x6e,0x25,0x73,0x27,0x74,0x29,0x75,0x15,
+0x72,0x6f,0x70,0x65,0x61,0x6e,2,0x6e,0x3c,0x73,0x46,0x74,0x18,0x65,0x72,0x6d,
+0x69,0x6e,0x61,0x74,0x6f,0x72,0x29,0x14,0x75,0x6d,0x62,0x65,0x72,0x25,0x17,0x65,
+0x70,0x61,0x72,0x61,0x74,0x6f,0x72,0x27,1,0x69,0x28,0x73,0x10,0x69,0x47,0x1f,
+0x72,0x73,0x74,0x73,0x74,0x72,0x6f,0x6e,0x67,0x69,0x73,0x6f,0x6c,0x61,0x74,0x65,
+0x47,0x61,0x4e,0x62,0x84,0x63,1,0x6f,0x24,0x73,0x2d,0x1c,0x6d,0x6d,0x6f,0x6e,
+0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x6f,0x72,0x2d,2,0x6c,0x3b,0x6e,0x2b,0x72,
+0x13,0x61,0x62,0x69,0x63,1,0x6c,0x30,0x6e,0x14,0x75,0x6d,0x62,0x65,0x72,0x2b,
+0x14,0x65,0x74,0x74,0x65,0x72,0x3b,0x2e,1,0x6e,0x45,0x6f,0x1c,0x75,0x6e,0x64,
+0x61,0x72,0x79,0x6e,0x65,0x75,0x74,0x72,0x61,0x6c,0x45,0,0x16,0x6d,0xc9,0x20,
+0x74,0xc2,0x30,0x77,0x89,0x77,0x86,0x79,0xa2,0x46,0x7a,1,0x61,0x58,0x6e,0x1a,
+0x61,0x6d,0x65,0x6e,0x6e,0x79,0x6d,0x75,0x73,0x69,0x63,0xa4,0x40,0x19,0x61,0x6c,
+0x6e,0x6f,0x74,0x61,0x74,0x69,0x6f,0x6e,0xa5,0x40,0x1c,0x6e,0x61,0x62,0x61,0x7a,
+0x61,0x72,0x73,0x71,0x75,0x61,0x72,0x65,0xa5,0x18,0x10,0x61,1,0x6e,0x36,0x72,
+0x16,0x61,0x6e,0x67,0x63,0x69,0x74,0x69,0xa3,0xfc,0x12,0x63,0x68,0x6f,0xa5,0x2c,
+1,0x65,0x88,0x69,2,0x6a,0x3c,0x72,0x68,0x73,0x17,0x79,0x6c,0x6c,0x61,0x62,
+0x6c,0x65,0x73,0xa3,0x48,0x12,0x69,0x6e,0x67,0xa2,0x74,0x1e,0x68,0x65,0x78,0x61,
+0x67,0x72,0x61,0x6d,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa3,0x74,0x16,0x61,0x64,
+0x69,0x63,0x61,0x6c,0x73,0xa3,0x49,0x13,0x7a,0x69,0x64,0x69,0xa5,0x34,0x74,0xa2,
+0x65,0x75,0xa4,0x4f,0x76,3,0x61,0x3c,0x65,0x80,0x69,0xa2,0x50,0x73,0xa2,0x6c,
+0x12,0x73,0x75,0x70,0xa3,0x7d,1,0x69,0xa3,0x9f,0x72,0x1e,0x69,0x61,0x74,0x69,
+0x6f,0x6e,0x73,0x65,0x6c,0x65,0x63,0x74,0x6f,0x72,0x73,0xa2,0x6c,0x19,0x73,0x75,
+0x70,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0x7d,1,0x64,0x3c,0x72,0x19,0x74,
+0x69,0x63,0x61,0x6c,0x66,0x6f,0x72,0x6d,0x73,0xa3,0x91,0x14,0x69,0x63,0x65,0x78,
+0x74,0xa2,0xaf,0x16,0x65,0x6e,0x73,0x69,0x6f,0x6e,0x73,0xa3,0xaf,0x15,0x74,0x68,
+0x6b,0x75,0x71,0x69,0xa5,0x3f,5,0x69,0x3f,0x69,0x5a,0x6f,0x8c,0x72,0x1c,0x61,
+0x6e,0x73,0x70,0x6f,0x72,0x74,0x61,0x6e,0x64,0x6d,0x61,0x70,0xa2,0xcf,0x16,0x73,
+0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa3,0xcf,2,0x62,0x34,0x66,0x3c,0x72,0x13,0x68,
+0x75,0x74,0x61,0xa3,0xfb,0x13,0x65,0x74,0x61,0x6e,0x57,0x14,0x69,0x6e,0x61,0x67,
+0x68,0xa3,0x90,0x11,0x74,0x6f,0xa5,0x3d,0x61,0x3e,0x65,0xa2,0xa0,0x68,0x10,0x61,
+1,0x61,0x24,0x69,0x53,0x11,0x6e,0x61,0x3d,4,0x67,0x8e,0x69,0xa2,0x49,0x6b,
+0xa2,0x72,0x6d,0xa2,0x74,0x6e,0x10,0x67,1,0x73,0x68,0x75,0x10,0x74,0xa4,0x10,
+1,0x63,0x40,0x73,0x11,0x75,0x70,0xa4,0x33,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,
+0x74,0xa5,0x33,0x18,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x73,0xa5,0x11,0x10,
+0x61,0xa5,0x3c,2,0x61,0x2a,0x62,0x32,0x73,0xa3,0x60,0x12,0x6c,0x6f,0x67,0xa3,
+0x62,0x13,0x61,0x6e,0x77,0x61,0xa3,0x65,3,0x6c,0x52,0x74,0x56,0x76,0x5e,0x78,
+0x16,0x75,0x61,0x6e,0x6a,0x69,0x6e,0x67,0xa2,0x7c,0x16,0x73,0x79,0x6d,0x62,0x6f,
+0x6c,0x73,0xa3,0x7c,0x10,0x65,0xa3,0x70,0x12,0x68,0x61,0x6d,0xa3,0xae,0x12,0x69,
+0x65,0x74,0xa3,0xb7,0x11,0x72,0x69,0xa3,0xdc,0x11,0x69,0x6c,0x48,0x12,0x73,0x75,
+0x70,0xa4,0x2b,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa5,0x2b,0x13,0x6c,0x75,
+0x67,0x75,0x4b,2,0x63,0x8c,0x67,0xa2,0x41,0x6e,0x1f,0x69,0x66,0x69,0x65,0x64,
+0x63,0x61,0x6e,0x61,0x64,0x69,0x61,0x6e,0x61,0x62,0x6f,0x1f,0x72,0x69,0x67,0x69,
+0x6e,0x61,0x6c,0x73,0x79,0x6c,0x6c,0x61,0x62,0x69,0x63,0x73,0x62,0x17,0x65,0x78,
+0x74,0x65,0x6e,0x64,0x65,0x64,0xa2,0xad,0x10,0x61,0xa5,0x3e,0x11,0x61,0x73,0x62,
+0x12,0x65,0x78,0x74,0xa2,0xad,0x10,0x61,0xa5,0x3e,0x15,0x61,0x72,0x69,0x74,0x69,
+0x63,0xa3,0x78,0x70,0xc3,0x4b,0x70,0xa6,0x61,0x72,0xa8,0x1d,0x73,7,0x6f,0xc1,
+0xbe,0x6f,0xa2,0x69,0x70,0xa2,0x85,0x75,0xa2,0xa4,0x79,2,0x6c,0x50,0x6d,0x62,
+0x72,0x12,0x69,0x61,0x63,0x3a,0x12,0x73,0x75,0x70,0xa4,0x17,0x16,0x70,0x6c,0x65,
+0x6d,0x65,0x6e,0x74,0xa5,0x17,0x17,0x6f,0x74,0x69,0x6e,0x61,0x67,0x72,0x69,0xa3,
+0x8f,0x13,0x62,0x6f,0x6c,0x73,1,0x61,0x4c,0x66,0x10,0x6f,0x1f,0x72,0x6c,0x65,
+0x67,0x61,0x63,0x79,0x63,0x6f,0x6d,0x70,0x75,0x74,0x69,0x6e,0x67,0xa5,0x32,0x1f,
+0x6e,0x64,0x70,0x69,0x63,0x74,0x6f,0x67,0x72,0x61,0x70,0x68,0x73,0x65,0x78,0x74,
+1,0x61,0xa5,0x2a,0x65,0x14,0x6e,0x64,0x65,0x64,0x61,0xa5,0x2a,2,0x67,0x34,
+0x72,0x3e,0x79,0x13,0x6f,0x6d,0x62,0x6f,0xa5,0x16,0x13,0x64,0x69,0x61,0x6e,0xa5,
+0x23,0x17,0x61,0x73,0x6f,0x6d,0x70,0x65,0x6e,0x67,0xa3,0xda,1,0x61,0x32,0x65,
+0x14,0x63,0x69,0x61,0x6c,0x73,0xa3,0x56,0x12,0x63,0x69,0x6e,0x1f,0x67,0x6d,0x6f,
+0x64,0x69,0x66,0x69,0x65,0x72,0x6c,0x65,0x74,0x74,0x65,0x72,0x73,0x2d,2,0x6e,
+0x48,0x70,0x76,0x74,0x1d,0x74,0x6f,0x6e,0x73,0x69,0x67,0x6e,0x77,0x72,0x69,0x74,
+0x69,0x6e,0x67,0xa5,6,0x15,0x64,0x61,0x6e,0x65,0x73,0x65,0xa2,0x9b,0x12,0x73,
+0x75,0x70,0xa2,0xdb,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0xdb,4,0x61,
+0xa2,0xa8,0x65,0x5c,0x6d,0x9e,0x70,0xa2,0x4b,0x73,0x13,0x79,0x6d,0x62,0x6f,0x1f,
+0x6c,0x73,0x61,0x6e,0x64,0x70,0x69,0x63,0x74,0x6f,0x67,0x72,0x61,0x70,0x68,0x73,
+0xa5,5,0x10,0x72,1,0x61,0x4e,0x73,0x12,0x63,0x72,0x69,0x1f,0x70,0x74,0x73,
+0x61,0x6e,0x64,0x73,0x75,0x62,0x73,0x63,0x72,0x69,0x70,0x74,0x73,0x73,0x14,0x6e,
+0x64,0x73,0x75,0x62,0x73,0x1b,0x61,0x74,0x68,0x6f,0x70,0x65,0x72,0x61,0x74,0x6f,
+0x72,0x73,0xa3,0x6a,1,0x6c,0x40,0x75,1,0x61,0x6e,0x6e,0x17,0x63,0x74,0x75,
+0x61,0x74,0x69,0x6f,0x6e,0xa3,0x8e,0x15,0x65,0x6d,0x65,0x6e,0x74,0x61,1,0x6c,
+0x50,0x72,0x1e,0x79,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x75,0x73,0x65,0x61,0x72,
+0x65,0x61,1,0x61,0xa3,0x6d,0x62,0xa3,0x6e,3,0x61,0x5c,0x6d,0x78,0x70,0xa2,
+0x41,0x73,0x13,0x79,0x6d,0x62,0x6f,0x1f,0x6c,0x73,0x61,0x6e,0x64,0x70,0x69,0x63,
+0x74,0x6f,0x67,0x72,0x61,0x70,0x68,0x73,0xa5,5,0x14,0x72,0x72,0x6f,0x77,0x73,
+2,0x61,0xa3,0x67,0x62,0xa3,0x68,0x63,0xa3,0xfa,0x13,0x61,0x74,0x68,0x65,0x1f,
+0x6d,0x61,0x74,0x69,0x63,0x61,0x6c,0x6f,0x70,0x65,0x72,0x61,0x74,0x6f,0x72,0x73,
+0xa3,0x6a,0x19,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0xa3,0x8e,0x61,
+0x88,0x68,0xa2,0x48,0x69,0xa2,0x71,0x6d,0x12,0x61,0x6c,0x6c,1,0x66,0x46,0x6b,
+0x15,0x61,0x6e,0x61,0x65,0x78,0x74,0xa4,0x29,0x15,0x65,0x6e,0x73,0x69,0x6f,0x6e,
+0xa5,0x29,0x12,0x6f,0x72,0x6d,1,0x73,0xa3,0x54,0x76,0x16,0x61,0x72,0x69,0x61,
+0x6e,0x74,0x73,0xa3,0x54,1,0x6d,0x36,0x75,0x16,0x72,0x61,0x73,0x68,0x74,0x72,
+0x61,0xa3,0xa1,0x15,0x61,0x72,0x69,0x74,0x61,0x6e,0xa3,0xac,1,0x61,0x52,0x6f,
+0x13,0x72,0x74,0x68,0x61,0x1f,0x6e,0x64,0x66,0x6f,0x72,0x6d,0x61,0x74,0x63,0x6f,
+0x6e,0x74,0x72,0x6f,0x6c,0x73,0xa3,0xf7,1,0x72,0x2e,0x76,0x12,0x69,0x61,0x6e,
+0xa3,0x79,0x12,0x61,0x64,0x61,0xa3,0xd9,1,0x64,0x50,0x6e,0x13,0x68,0x61,0x6c,
+0x61,0x50,0x1d,0x61,0x72,0x63,0x68,0x61,0x69,0x63,0x6e,0x75,0x6d,0x62,0x65,0x72,
+0x73,0xa3,0xf9,0x13,0x64,0x68,0x61,0x6d,0xa3,0xf8,5,0x72,0x35,0x72,0x44,0x73,
+0x64,0x75,1,0x61,0xa3,0x4e,0x6e,0x17,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,
+0x71,0x17,0x69,0x76,0x61,0x74,0x65,0x75,0x73,0x65,0xa2,0x4e,0x13,0x61,0x72,0x65,
+0x61,0xa3,0x4e,0x1b,0x61,0x6c,0x74,0x65,0x72,0x70,0x61,0x68,0x6c,0x61,0x76,0x69,
+0xa3,0xf6,0x61,0x40,0x68,0x82,0x6c,0x19,0x61,0x79,0x69,0x6e,0x67,0x63,0x61,0x72,
+0x64,0x73,0xa3,0xcc,2,0x68,0x38,0x6c,0x4a,0x75,0x15,0x63,0x69,0x6e,0x68,0x61,
+0x75,0xa3,0xf5,0x17,0x61,0x77,0x68,0x68,0x6d,0x6f,0x6e,0x67,0xa3,0xf3,0x15,0x6d,
+0x79,0x72,0x65,0x6e,0x65,0xa3,0xf4,1,0x61,0x8e,0x6f,1,0x65,0x74,0x6e,0x16,
+0x65,0x74,0x69,0x63,0x65,0x78,0x74,0xa2,0x72,1,0x65,0x2c,0x73,0x11,0x75,0x70,
+0xa3,0x8d,0x15,0x6e,0x73,0x69,0x6f,0x6e,0x73,0xa2,0x72,0x19,0x73,0x75,0x70,0x70,
+0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0x8d,0x15,0x6e,0x69,0x63,0x69,0x61,0x6e,0xa3,
+0x97,1,0x67,0x3e,0x69,0x13,0x73,0x74,0x6f,0x73,0xa2,0xa6,0x13,0x64,0x69,0x73,
+0x63,0xa3,0xa6,0x12,0x73,0x70,0x61,0xa3,0x96,1,0x65,0x5c,0x75,1,0x6d,0x2a,
+0x6e,0x11,0x69,0x63,0x67,0x10,0x69,0xa2,0xc0,0x1d,0x6e,0x75,0x6d,0x65,0x72,0x61,
+0x6c,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa3,0xc0,0x13,0x6a,0x61,0x6e,0x67,0xa3,
+0xa3,0x6d,0xa2,0xf0,0x6e,0xa8,0x23,0x6f,6,0x70,0x63,0x70,0x56,0x72,0x8a,0x73,
+0xa2,0x4c,0x74,0x10,0x74,0x1f,0x6f,0x6d,0x61,0x6e,0x73,0x69,0x79,0x61,0x71,0x6e,
+0x75,0x6d,0x62,0x65,0x72,0x73,0xa5,0x28,0x18,0x74,0x69,0x63,0x61,0x6c,0x63,0x68,
+0x61,0x72,0x1f,0x61,0x63,0x74,0x65,0x72,0x72,0x65,0x63,0x6f,0x67,0x6e,0x69,0x74,
+0x69,0x6f,0x6e,0x85,1,0x69,0x46,0x6e,0x1e,0x61,0x6d,0x65,0x6e,0x74,0x61,0x6c,
+0x64,0x69,0x6e,0x67,0x62,0x61,0x74,0x73,0xa3,0xf2,0x11,0x79,0x61,0x47,1,0x61,
+0x30,0x6d,0x13,0x61,0x6e,0x79,0x61,0xa3,0x7a,0x11,0x67,0x65,0xa5,0xf,0x63,0xa2,
+0x7b,0x67,0xa2,0x7b,0x6c,1,0x63,0xa2,0x6c,0x64,6,0x70,0x42,0x70,0x3a,0x73,
+0x5a,0x74,0x88,0x75,0x14,0x79,0x67,0x68,0x75,0x72,0xa5,0x3b,0x11,0x65,0x72,1,
+0x6d,0x2e,0x73,0x12,0x69,0x61,0x6e,0xa3,0x8c,0x11,0x69,0x63,0xa3,0xf1,0x10,0x6f,
+1,0x67,0x3a,0x75,0x18,0x74,0x68,0x61,0x72,0x61,0x62,0x69,0x61,0x6e,0xa3,0xbb,
+0x13,0x64,0x69,0x61,0x6e,0xa5,0x22,0x14,0x75,0x72,0x6b,0x69,0x63,0xa3,0xbf,0x68,
+0x42,0x69,0x54,0x6e,0x1a,0x6f,0x72,0x74,0x68,0x61,0x72,0x61,0x62,0x69,0x61,0x6e,
+0xa3,0xf0,0x17,0x75,0x6e,0x67,0x61,0x72,0x69,0x61,0x6e,0xa5,4,0x14,0x74,0x61,
+0x6c,0x69,0x63,0xa3,0x58,0x13,0x68,0x69,0x6b,0x69,0xa3,0x9d,0x10,0x72,0x85,0x12,
+0x68,0x61,0x6d,0x65,6,0x6f,0x86,0x6f,0x6c,0x72,0xa2,0x61,0x75,0xa2,0x62,0x79,
+0x14,0x61,0x6e,0x6d,0x61,0x72,0x58,0x12,0x65,0x78,0x74,2,0x61,0xa3,0xb6,0x62,
+0xa3,0xee,0x65,0x13,0x6e,0x64,0x65,0x64,1,0x61,0xa3,0xb6,0x62,0xa3,0xee,1,
+0x64,0x52,0x6e,0x15,0x67,0x6f,0x6c,0x69,0x61,0x6e,0x6a,0x12,0x73,0x75,0x70,0xa4,
+0xd,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa5,0xd,0x10,0x69,0xa2,0xec,0x13,
+0x66,0x69,0x65,0x72,1,0x6c,0x3c,0x74,0x19,0x6f,0x6e,0x65,0x6c,0x65,0x74,0x74,
+0x65,0x72,0x73,0xa3,0x8a,0x15,0x65,0x74,0x74,0x65,0x72,0x73,0x2d,0x10,0x6f,0xa3,
+0xed,1,0x6c,0x44,0x73,0x11,0x69,0x63,0xa2,0x5c,0x18,0x61,0x6c,0x73,0x79,0x6d,
+0x62,0x6f,0x6c,0x73,0xa3,0x5c,0x13,0x74,0x61,0x6e,0x69,0xa5,3,0x61,0xa2,0x9b,
+0x65,0xa4,0x4c,0x69,1,0x61,0xa2,0x8f,0x73,0x10,0x63,5,0x70,0x18,0x70,0xa2,
+0x71,0x73,0x36,0x74,0x17,0x65,0x63,0x68,0x6e,0x69,0x63,0x61,0x6c,0x81,0x15,0x79,
+0x6d,0x62,0x6f,0x6c,0x73,0x8f,0x61,0xa2,0x66,0x65,0x46,0x6d,0x19,0x61,0x74,0x68,
+0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,1,0x61,0xa3,0x66,0x62,0xa3,0x69,0x17,0x6c,
+0x6c,0x61,0x6e,0x65,0x6f,0x75,0x73,2,0x6d,0x3a,0x73,0x6c,0x74,0x17,0x65,0x63,
+0x68,0x6e,0x69,0x63,0x61,0x6c,0x81,0x11,0x61,0x74,0x1f,0x68,0x65,0x6d,0x61,0x74,
+0x69,0x63,0x61,0x6c,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,1,0x61,0xa3,0x66,0x62,
+0xa3,0x69,0x15,0x79,0x6d,0x62,0x6f,0x6c,0x73,0x8e,0x12,0x61,0x6e,0x64,1,0x61,
+0x3c,0x70,0x19,0x69,0x63,0x74,0x6f,0x67,0x72,0x61,0x70,0x68,0x73,0xa3,0xcd,0x14,
+0x72,0x72,0x6f,0x77,0x73,0xa3,0x73,0x10,0x6f,0xa3,0xd8,7,0x72,0x6f,0x72,0x44,
+0x73,0x4e,0x74,0x62,0x79,0x19,0x61,0x6e,0x6e,0x75,0x6d,0x65,0x72,0x61,0x6c,0x73,
+0xa5,0x20,0x13,0x63,0x68,0x65,0x6e,0xa5,0xc,0x18,0x61,0x72,0x61,0x6d,0x67,0x6f,
+0x6e,0x64,0x69,0xa5,0x14,0x10,0x68,2,0x61,0x3a,0x65,0x4a,0x6f,0x17,0x70,0x65,
+0x72,0x61,0x74,0x6f,0x72,0x73,0x7f,0x16,0x6c,0x70,0x68,0x61,0x6e,0x75,0x6d,0xa3,
+0x5d,0x16,0x6d,0x61,0x74,0x69,0x63,0x61,0x6c,1,0x61,0x36,0x6f,0x17,0x70,0x65,
+0x72,0x61,0x74,0x6f,0x72,0x73,0x7f,0x11,0x6c,0x70,0x1f,0x68,0x61,0x6e,0x75,0x6d,
+0x65,0x72,0x69,0x63,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa3,0x5d,0x68,0x50,0x6b,
+0x7e,0x6c,0x88,0x6e,1,0x64,0x34,0x69,0x15,0x63,0x68,0x61,0x65,0x61,0x6e,0xa3,
+0xea,0x12,0x61,0x69,0x63,0xa3,0xc6,1,0x61,0x3e,0x6a,0x12,0x6f,0x6e,0x67,0xa2,
+0xaa,0x14,0x74,0x69,0x6c,0x65,0x73,0xa3,0xaa,0x13,0x6a,0x61,0x6e,0x69,0xa3,0xe9,
+0x13,0x61,0x73,0x61,0x72,0xa5,0x1f,0x15,0x61,0x79,0x61,0x6c,0x61,0x6d,0x4f,3,
+0x64,0x6c,0x65,0x7e,0x6e,0xa2,0x47,0x72,0x14,0x6f,0x69,0x74,0x69,0x63,1,0x63,
+0x3c,0x68,0x19,0x69,0x65,0x72,0x6f,0x67,0x6c,0x79,0x70,0x68,0x73,0xa3,0xd7,0x15,
+0x75,0x72,0x73,0x69,0x76,0x65,0xa3,0xd6,0x17,0x65,0x66,0x61,0x69,0x64,0x72,0x69,
+0x6e,0xa5,0x21,0x17,0x74,0x65,0x69,0x6d,0x61,0x79,0x65,0x6b,0xa2,0xb8,0x12,0x65,
+0x78,0x74,0xa2,0xd5,0x16,0x65,0x6e,0x73,0x69,0x6f,0x6e,0x73,0xa3,0xd5,0x18,0x64,
+0x65,0x6b,0x69,0x6b,0x61,0x6b,0x75,0x69,0xa3,0xeb,6,0x6b,0x3b,0x6b,0x56,0x6f,
+0x5a,0x75,0x64,0x79,0x11,0x69,0x61,0x1f,0x6b,0x65,0x6e,0x67,0x70,0x75,0x61,0x63,
+0x68,0x75,0x65,0x68,0x6d,0x6f,0x6e,0x67,0xa5,0x27,0x10,0x6f,0xa3,0x92,0x14,0x62,
+0x6c,0x6f,0x63,0x6b,0x21,1,0x6d,0x2c,0x73,0x11,0x68,0x75,0xa5,0x15,0x17,0x62,
+0x65,0x72,0x66,0x6f,0x72,0x6d,0x73,0x7b,0x61,0x44,0x62,0x21,0x65,0x10,0x77,1,
+0x61,0xa5,0xe,0x74,0x14,0x61,0x69,0x6c,0x75,0x65,0xa3,0x8b,2,0x62,0x3c,0x67,
+0x4a,0x6e,0x17,0x64,0x69,0x6e,0x61,0x67,0x61,0x72,0x69,0xa5,0x26,0x15,0x61,0x74,
+0x61,0x65,0x61,0x6e,0xa3,0xef,0x16,0x6d,0x75,0x6e,0x64,0x61,0x72,0x69,0xa5,0x47,
+0x67,0xc4,0x5d,0x6a,0xc1,0xe4,0x6a,0xa2,0xdf,0x6b,0xa2,0xf8,0x6c,4,0x61,0x54,
+0x65,0xa2,0x6b,0x69,0xa2,0x82,0x6f,0xa2,0xc1,0x79,1,0x63,0x2e,0x64,0x12,0x69,
+0x61,0x6e,0xa3,0xa9,0x12,0x69,0x61,0x6e,0xa3,0xa7,1,0x6f,0x55,0x74,0x11,0x69,
+0x6e,1,0x31,0x96,0x65,0x11,0x78,0x74,6,0x64,0x21,0x64,0xa3,0x95,0x65,0x2c,
+0x66,0xa5,0x39,0x67,0xa5,0x3a,0xa2,0xe7,0x13,0x6e,0x64,0x65,0x64,6,0x64,0xc,
+0x64,0xa3,0x95,0x65,0xa3,0xe7,0x66,0xa5,0x39,0x67,0xa5,0x3a,0x61,0x2a,0x62,0x29,
+0x63,0xa3,0x94,0x26,0x18,0x64,0x64,0x69,0x74,0x69,0x6f,0x6e,0x61,0x6c,0x6d,0x24,
+0x12,0x73,0x75,0x70,0x24,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x25,1,0x70,
+0x42,0x74,0x1d,0x74,0x65,0x72,0x6c,0x69,0x6b,0x65,0x73,0x79,0x6d,0x62,0x6f,0x6c,
+0x73,0x79,0x12,0x63,0x68,0x61,0xa3,0x9c,2,0x6d,0x4e,0x6e,0x54,0x73,0x10,0x75,
+0xa2,0xb0,0x12,0x73,0x75,0x70,0xa4,0x31,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,
+0xa5,0x31,0x11,0x62,0x75,0xa3,0x6f,0x12,0x65,0x61,0x72,1,0x61,0xa3,0xe8,0x62,
+1,0x69,0x38,0x73,0x17,0x79,0x6c,0x6c,0x61,0x62,0x61,0x72,0x79,0xa3,0x75,0x17,
+0x64,0x65,0x6f,0x67,0x72,0x61,0x6d,0x73,0xa3,0x76,0x1a,0x77,0x73,0x75,0x72,0x72,
+0x6f,0x67,0x61,0x74,0x65,0x73,0xa3,0x4d,0x10,0x61,1,0x6d,0x32,0x76,0x14,0x61,
+0x6e,0x65,0x73,0x65,0xa3,0xb5,0x10,0x6f,0x5c,0x12,0x65,0x78,0x74,1,0x61,0xa3,
+0xb4,0x62,0xa3,0xb9,1,0x61,0xa2,0x43,0x68,4,0x61,0x40,0x69,0x50,0x6d,0x6e,
+0x6f,0x86,0x75,0x15,0x64,0x61,0x77,0x61,0x64,0x69,0xa3,0xe6,0x16,0x72,0x6f,0x73,
+0x68,0x74,0x68,0x69,0xa3,0x89,0x1d,0x74,0x61,0x6e,0x73,0x6d,0x61,0x6c,0x6c,0x73,
+0x63,0x72,0x69,0x70,0x74,0xa5,0x30,0x11,0x65,0x72,0x68,0x16,0x73,0x79,0x6d,0x62,
+0x6f,0x6c,0x73,0xa3,0x71,0x12,0x6a,0x6b,0x69,0xa3,0xe5,5,0x74,0x35,0x74,0x34,
+0x77,0x7a,0x79,0x13,0x61,0x68,0x6c,0x69,0xa3,0xa2,0x14,0x61,0x6b,0x61,0x6e,0x61,
+0x9e,1,0x65,0x4c,0x70,0x10,0x68,0x1f,0x6f,0x6e,0x65,0x74,0x69,0x63,0x65,0x78,
+0x74,0x65,0x6e,0x73,0x69,0x6f,0x6e,0x73,0xa3,0x6b,0x11,0x78,0x74,0xa3,0x6b,0x10,
+0x69,0xa5,0x46,0x69,0xa2,0x4e,0x6b,0xa2,0x51,0x6e,3,0x61,0x34,0x62,0x84,0x67,
+0x8a,0x6e,0x12,0x61,0x64,0x61,0x4d,1,0x65,0x40,0x73,0x11,0x75,0x70,0xa2,0xcb,
+0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0xcb,0x11,0x78,0x74,2,0x61,0xa5,
+0x13,0x62,0xa5,0x38,0x65,0x13,0x6e,0x64,0x65,0x64,1,0x61,0xa5,0x13,0x62,0xa5,
+0x38,0x11,0x75,0x6e,0xa3,0x42,0x11,0x78,0x69,0x96,0x17,0x72,0x61,0x64,0x69,0x63,
+0x61,0x6c,0x73,0x97,0x12,0x74,0x68,0x69,0xa3,0xc1,0x1c,0x74,0x6f,0x76,0x69,0x6b,
+0x6e,0x75,0x6d,0x65,0x72,0x61,0x6c,0x73,0xa5,0x45,0x67,0xa2,0xb5,0x68,0xa4,0x84,
+0x69,3,0x64,0x4c,0x6d,0xa2,0x55,0x6e,0xa2,0x62,0x70,0x13,0x61,0x65,0x78,0x74,
+0x2a,0x16,0x65,0x6e,0x73,0x69,0x6f,0x6e,0x73,0x2b,1,0x63,0x99,0x65,0x17,0x6f,
+0x67,0x72,0x61,0x70,0x68,0x69,0x63,1,0x64,0x56,0x73,0x15,0x79,0x6d,0x62,0x6f,
+0x6c,0x73,0xa4,0xb,0x1d,0x61,0x6e,0x64,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,
+0x69,0x6f,0x6e,0xa5,0xb,0x13,0x65,0x73,0x63,0x72,0x1f,0x69,0x70,0x74,0x69,0x6f,
+0x6e,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x73,0x99,0x1c,0x70,0x65,0x72,
+0x69,0x61,0x6c,0x61,0x72,0x61,0x6d,0x61,0x69,0x63,0xa3,0xba,1,0x64,0x62,0x73,
+0x1b,0x63,0x72,0x69,0x70,0x74,0x69,0x6f,0x6e,0x61,0x6c,0x70,0x61,1,0x68,0x32,
+0x72,0x14,0x74,0x68,0x69,0x61,0x6e,0xa3,0xbd,0x13,0x6c,0x61,0x76,0x69,0xa3,0xbe,
+0x11,0x69,0x63,1,0x6e,0x3e,0x73,0x1a,0x69,0x79,0x61,0x71,0x6e,0x75,0x6d,0x62,
+0x65,0x72,0x73,0xa5,0x1e,0x19,0x75,0x6d,0x62,0x65,0x72,0x66,0x6f,0x72,0x6d,0x73,
+0xa3,0xb2,4,0x65,0x74,0x6c,0xa2,0x82,0x6f,0xa2,0x9a,0x72,0xa2,0x9e,0x75,2,
+0x6a,0x34,0x6e,0x3e,0x72,0x14,0x6d,0x75,0x6b,0x68,0x69,0x43,0x14,0x61,0x72,0x61,
+0x74,0x69,0x45,0x18,0x6a,0x61,0x6c,0x61,0x67,0x6f,0x6e,0x64,0x69,0xa5,0x1c,1,
+0x6e,0xa2,0x46,0x6f,1,0x6d,0x6e,0x72,0x13,0x67,0x69,0x61,0x6e,0x5a,1,0x65,
+0x40,0x73,0x11,0x75,0x70,0xa2,0x87,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,
+0x87,0x11,0x78,0x74,0xa4,0x1b,0x14,0x65,0x6e,0x64,0x65,0x64,0xa5,0x1b,0x1a,0x65,
+0x74,0x72,0x69,0x63,0x73,0x68,0x61,0x70,0x65,0x73,0x8c,0x12,0x65,0x78,0x74,0xa2,
+0xe3,0x14,0x65,0x6e,0x64,0x65,0x64,0xa3,0xe3,0x1e,0x65,0x72,0x61,0x6c,0x70,0x75,
+0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x71,0x17,0x61,0x67,0x6f,0x6c,0x69,
+0x74,0x69,0x63,0xa2,0x88,0x12,0x73,0x75,0x70,0xa4,0xa,0x16,0x70,0x6c,0x65,0x6d,
+0x65,0x6e,0x74,0xa5,0xa,0x13,0x74,0x68,0x69,0x63,0xa3,0x59,1,0x61,0x5c,0x65,
+0x11,0x65,0x6b,0x30,1,0x61,0x38,0x65,0x11,0x78,0x74,0x6e,0x14,0x65,0x6e,0x64,
+0x65,0x64,0x6f,0x17,0x6e,0x64,0x63,0x6f,0x70,0x74,0x69,0x63,0x31,0x13,0x6e,0x74,
+0x68,0x61,0xa3,0xe4,2,0x61,0xa2,0x48,0x65,0xa2,0xdf,0x69,1,0x67,0x30,0x72,
+0x14,0x61,0x67,0x61,0x6e,0x61,0x9d,0x10,0x68,1,0x70,0x3a,0x73,0x18,0x75,0x72,
+0x72,0x6f,0x67,0x61,0x74,0x65,0x73,0xa3,0x4b,1,0x72,0x3c,0x75,0x19,0x73,0x75,
+0x72,0x72,0x6f,0x67,0x61,0x74,0x65,0x73,0xa3,0x4c,0x11,0x69,0x76,0x1f,0x61,0x74,
+0x65,0x75,0x73,0x65,0x73,0x75,0x72,0x72,0x6f,0x67,0x61,0x74,0x65,0x73,0xa3,0x4c,
+2,0x6c,0x32,0x6e,0x9a,0x74,0x12,0x72,0x61,0x6e,0xa5,2,0x10,0x66,2,0x61,
+0x58,0x6d,0x70,0x77,0x14,0x69,0x64,0x74,0x68,0x61,0x1f,0x6e,0x64,0x66,0x75,0x6c,
+0x6c,0x77,0x69,0x64,0x74,0x68,0x66,0x6f,0x72,0x6d,0x73,0xa3,0x57,0x1a,0x6e,0x64,
+0x66,0x75,0x6c,0x6c,0x66,0x6f,0x72,0x6d,0x73,0xa3,0x57,0x13,0x61,0x72,0x6b,0x73,
+0xa3,0x52,2,0x67,0x34,0x69,0xa2,0x45,0x75,0x12,0x6e,0x6f,0x6f,0xa3,0x63,0x11,
+0x75,0x6c,0xa2,0x4a,2,0x63,0x3c,0x6a,0x5e,0x73,0x17,0x79,0x6c,0x6c,0x61,0x62,
+0x6c,0x65,0x73,0xa3,0x4a,0x1f,0x6f,0x6d,0x70,0x61,0x74,0x69,0x62,0x69,0x6c,0x69,
+0x74,0x79,0x6a,0x61,0x6d,0x6f,0xa3,0x41,0x12,0x61,0x6d,0x6f,0x5c,0x17,0x65,0x78,
+0x74,0x65,0x6e,0x64,0x65,0x64,1,0x61,0xa3,0xb4,0x62,0xa3,0xb9,0x19,0x66,0x69,
+0x72,0x6f,0x68,0x69,0x6e,0x67,0x79,0x61,0xa5,0x1d,0x13,0x62,0x72,0x65,0x77,0x37,
+0x61,0xa4,0xc,0x62,0xa6,0x59,0x63,0xa8,0x2e,0x64,0xac,0xe9,0x65,5,0x6d,0xa9,
+0x6d,0x94,0x6e,0xa2,0x41,0x74,0x15,0x68,0x69,0x6f,0x70,0x69,0x63,0x5e,1,0x65,
+0x40,0x73,0x11,0x75,0x70,0xa2,0x86,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,
+0x86,0x11,0x78,0x74,0xa2,0x85,2,0x61,0xa3,0xc8,0x62,0xa5,0x37,0x65,0x13,0x6e,
+0x64,0x65,0x64,0xa2,0x85,1,0x61,0xa3,0xc8,0x62,0xa5,0x37,0x16,0x6f,0x74,0x69,
+0x63,0x6f,0x6e,0x73,0xa3,0xce,0x15,0x63,0x6c,0x6f,0x73,0x65,0x64,2,0x61,0x5a,
+0x63,0x9e,0x69,0x1c,0x64,0x65,0x6f,0x67,0x72,0x61,0x70,0x68,0x69,0x63,0x73,0x75,
+0x70,0xa2,0xc4,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0xc4,0x16,0x6c,0x70,
+0x68,0x61,0x6e,0x75,0x6d,0x86,1,0x65,0x2c,0x73,0x11,0x75,0x70,0xa3,0xc3,0x13,
+0x72,0x69,0x63,0x73,0x86,0x18,0x75,0x70,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,
+0xc3,0x11,0x6a,0x6b,0xa2,0x44,0x1f,0x6c,0x65,0x74,0x74,0x65,0x72,0x73,0x61,0x6e,
+0x64,0x6d,0x6f,0x6e,0x74,0x68,0x73,0xa3,0x44,0x61,0x4a,0x67,0x76,0x6c,1,0x62,
+0x30,0x79,0x13,0x6d,0x61,0x69,0x63,0xa5,0x25,0x13,0x61,0x73,0x61,0x6e,0xa3,0xe2,
+0x13,0x72,0x6c,0x79,0x64,0x1f,0x79,0x6e,0x61,0x73,0x74,0x69,0x63,0x63,0x75,0x6e,
+0x65,0x69,0x66,0x6f,0x72,0x6d,0xa5,1,0x1f,0x79,0x70,0x74,0x69,0x61,0x6e,0x68,
+0x69,0x65,0x72,0x6f,0x67,0x6c,0x79,0x70,0x68,1,0x66,0x26,0x73,0xa3,0xc2,0x1c,
+0x6f,0x72,0x6d,0x61,0x74,0x63,0x6f,0x6e,0x74,0x72,0x6f,0x6c,0x73,0xa5,0x24,7,
+0x6e,0xc0,0xf2,0x6e,0x3e,0x72,0xa2,0x5d,0x73,0xa2,0xe5,0x76,0x14,0x65,0x73,0x74,
+0x61,0x6e,0xa3,0xbc,1,0x61,0x92,0x63,0x13,0x69,0x65,0x6e,0x74,1,0x67,0x34,
+0x73,0x15,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa3,0xa5,0x13,0x72,0x65,0x65,0x6b,1,
+0x6d,0x34,0x6e,0x15,0x75,0x6d,0x62,0x65,0x72,0x73,0xa3,0x7f,0x13,0x75,0x73,0x69,
+0x63,0xa2,0x7e,0x19,0x61,0x6c,0x6e,0x6f,0x74,0x61,0x74,0x69,0x6f,0x6e,0xa3,0x7e,
+0x10,0x74,0x1f,0x6f,0x6c,0x69,0x61,0x6e,0x68,0x69,0x65,0x72,0x6f,0x67,0x6c,0x79,
+0x70,0x68,0x73,0xa3,0xfe,2,0x61,0x32,0x6d,0xa2,0x7e,0x72,0x12,0x6f,0x77,0x73,
+0x7d,0x12,0x62,0x69,0x63,0x38,3,0x65,0x4a,0x6d,0x80,0x70,0xa2,0x50,0x73,0x11,
+0x75,0x70,0xa2,0x80,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0x80,0x11,0x78,
+0x74,3,0x61,0xa3,0xd2,0x62,0xa5,0x35,0x63,0xa5,0x41,0x65,0x13,0x6e,0x64,0x65,
+0x64,2,0x61,0xa3,0xd2,0x62,0xa5,0x35,0x63,0xa5,0x41,0x12,0x61,0x74,0x68,0xa2,
+0xd3,0x18,0x65,0x6d,0x61,0x74,0x69,0x63,0x61,0x6c,0x61,0x1f,0x6c,0x70,0x68,0x61,
+0x62,0x65,0x74,0x69,0x63,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa3,0xd3,1,0x66,
+0x42,0x72,0x1e,0x65,0x73,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x66,0x6f,0x72,
+0x6d,0x73,1,0x61,0xa3,0x51,0x62,0xa3,0x55,0x14,0x65,0x6e,0x69,0x61,0x6e,0x35,
+0x12,0x63,0x69,0x69,0x23,0x64,0x9e,0x65,0xa2,0x42,0x68,0xa2,0x4d,0x6c,1,0x63,
+0x62,0x70,0x17,0x68,0x61,0x62,0x65,0x74,0x69,0x63,0x70,1,0x66,0xa3,0x50,0x72,
+0x1e,0x65,0x73,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x66,0x6f,0x72,0x6d,0x73,
+0xa3,0x50,0x16,0x68,0x65,0x6d,0x69,0x63,0x61,0x6c,0xa2,0xd0,0x16,0x73,0x79,0x6d,
+0x62,0x6f,0x6c,0x73,0xa3,0xd0,0x12,0x6c,0x61,0x6d,0xa5,7,0x1a,0x67,0x65,0x61,
+0x6e,0x6e,0x75,0x6d,0x62,0x65,0x72,0x73,0xa3,0x77,0x11,0x6f,0x6d,0xa3,0xfd,7,
+0x6f,0x71,0x6f,0x64,0x72,0xa2,0x41,0x75,0xa2,0x58,0x79,0x1b,0x7a,0x61,0x6e,0x74,
+0x69,0x6e,0x65,0x6d,0x75,0x73,0x69,0x63,0xa2,0x5b,0x18,0x61,0x6c,0x73,0x79,0x6d,
+0x62,0x6f,0x6c,0x73,0xa3,0x5b,1,0x70,0x34,0x78,0x16,0x64,0x72,0x61,0x77,0x69,
+0x6e,0x67,0x89,0x14,0x6f,0x6d,0x6f,0x66,0x6f,0xa0,0x12,0x65,0x78,0x74,0xa2,0x43,
+0x14,0x65,0x6e,0x64,0x65,0x64,0xa3,0x43,0x10,0x61,1,0x68,0x40,0x69,0x12,0x6c,
+0x6c,0x65,0x92,0x17,0x70,0x61,0x74,0x74,0x65,0x72,0x6e,0x73,0x93,0x11,0x6d,0x69,
+0xa3,0xc9,1,0x67,0x2c,0x68,0x11,0x69,0x64,0xa3,0x64,0x14,0x69,0x6e,0x65,0x73,
+0x65,0xa3,0x81,0x61,0x48,0x65,0xa2,0x4e,0x68,0xa2,0x52,0x6c,0x1a,0x6f,0x63,0x6b,
+0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x73,0x8b,3,0x6c,0x34,0x6d,0x40,0x73,0x66,
+0x74,0x11,0x61,0x6b,0xa3,0xc7,0x14,0x69,0x6e,0x65,0x73,0x65,0xa3,0x93,0x11,0x75,
+0x6d,0xa2,0xb1,0x12,0x73,0x75,0x70,0xa2,0xca,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,
+0x74,0xa3,0xca,1,0x69,0x30,0x73,0x13,0x61,0x76,0x61,0x68,0xa3,0xdd,0x15,0x63,
+0x6c,0x61,0x74,0x69,0x6e,0x23,0x14,0x6e,0x67,0x61,0x6c,0x69,0x41,0x16,0x61,0x69,
+0x6b,0x73,0x75,0x6b,0x69,0xa5,8,5,0x6f,0xc1,0x60,0x6f,0xa2,0x69,0x75,0xa4,
+0x24,0x79,1,0x70,0xa2,0x44,0x72,0x14,0x69,0x6c,0x6c,0x69,0x63,0x32,1,0x65,
+0x4c,0x73,0x11,0x75,0x70,0xa2,0x61,0x16,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa2,
+0x61,0x12,0x61,0x72,0x79,0xa3,0x61,0x11,0x78,0x74,4,0x61,0xa3,0x9e,0x62,0xa3,
+0xa0,0x63,0xa5,9,0x64,0xa5,0x43,0x65,0x13,0x6e,0x64,0x65,0x64,3,0x61,0xa3,
+0x9e,0x62,0xa3,0xa0,0x63,0xa5,9,0x64,0xa5,0x43,0x10,0x72,1,0x69,0x34,0x6f,
+0x15,0x6d,0x69,0x6e,0x6f,0x61,0x6e,0xa5,0x36,0x1a,0x6f,0x74,0x73,0x79,0x6c,0x6c,
+0x61,0x62,0x61,0x72,0x79,0xa3,0x7b,3,0x6d,0x5a,0x6e,0xa2,0x95,0x70,0xa2,0xa0,
+0x75,0x17,0x6e,0x74,0x69,0x6e,0x67,0x72,0x6f,0x64,0xa2,0x9a,0x17,0x6e,0x75,0x6d,
+0x65,0x72,0x61,0x6c,0x73,0xa3,0x9a,2,0x62,0x3a,0x6d,0xa2,0x5f,0x70,0x15,0x61,
+0x74,0x6a,0x61,0x6d,0x6f,0xa3,0x41,0x14,0x69,0x6e,0x69,0x6e,0x67,2,0x64,0x46,
+0x68,0x9e,0x6d,0x1d,0x61,0x72,0x6b,0x73,0x66,0x6f,0x72,0x73,0x79,0x6d,0x62,0x6f,
+0x6c,0x73,0x77,0x1e,0x69,0x61,0x63,0x72,0x69,0x74,0x69,0x63,0x61,0x6c,0x6d,0x61,
+0x72,0x6b,0x73,0x2e,2,0x65,0x40,0x66,0xa6,0x52,0x73,0x18,0x75,0x70,0x70,0x6c,
+0x65,0x6d,0x65,0x6e,0x74,0xa3,0x83,0x16,0x78,0x74,0x65,0x6e,0x64,0x65,0x64,0xa3,
+0xe0,0x17,0x61,0x6c,0x66,0x6d,0x61,0x72,0x6b,0x73,0xa3,0x52,0x11,0x6f,0x6e,0x1f,
+0x69,0x6e,0x64,0x69,0x63,0x6e,0x75,0x6d,0x62,0x65,0x72,0x66,0x6f,0x72,0x6d,0x73,
+0xa3,0xb2,0x1b,0x74,0x72,0x6f,0x6c,0x70,0x69,0x63,0x74,0x75,0x72,0x65,0x73,0x83,
+0x12,0x74,0x69,0x63,0xa2,0x84,0x1b,0x65,0x70,0x61,0x63,0x74,0x6e,0x75,0x6d,0x62,
+0x65,0x72,0x73,0xa3,0xdf,1,0x6e,0x3e,0x72,0x1b,0x72,0x65,0x6e,0x63,0x79,0x73,
+0x79,0x6d,0x62,0x6f,0x6c,0x73,0x75,0x15,0x65,0x69,0x66,0x6f,0x72,0x6d,0xa2,0x98,
+0x16,0x6e,0x75,0x6d,0x62,0x65,0x72,0x73,0xa2,0x99,0x1d,0x61,0x6e,0x64,0x70,0x75,
+0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0xa3,0x99,0x61,0xa2,0xea,0x68,0xa4,
+0x14,0x6a,0x10,0x6b,0xa2,0x47,4,0x63,0x92,0x65,0xa2,0x83,0x72,0xa2,0xa1,0x73,
+0xa2,0xb3,0x75,0x1f,0x6e,0x69,0x66,0x69,0x65,0x64,0x69,0x64,0x65,0x6f,0x67,0x72,
+0x61,0x70,0x68,0x73,0xa2,0x47,0x18,0x65,0x78,0x74,0x65,0x6e,0x73,0x69,0x6f,0x6e,
+8,0x65,0x71,0x65,0xa5,0,0x66,0xa5,0x12,0x67,0xa5,0x2e,0x68,0xa5,0x42,0x69,
+0xa5,0x48,0x14,0x6f,0x6d,0x70,0x61,0x74,0xa2,0x45,1,0x66,0x96,0x69,1,0x62,
+0x44,0x64,0x17,0x65,0x6f,0x67,0x72,0x61,0x70,0x68,0x73,0xa2,0x4f,0x12,0x73,0x75,
+0x70,0xa3,0x5f,0x14,0x69,0x6c,0x69,0x74,0x79,0xa2,0x45,1,0x66,0x54,0x69,0x18,
+0x64,0x65,0x6f,0x67,0x72,0x61,0x70,0x68,0x73,0xa2,0x4f,0x19,0x73,0x75,0x70,0x70,
+0x6c,0x65,0x6d,0x65,0x6e,0x74,0xa3,0x5f,0x13,0x6f,0x72,0x6d,0x73,0xa3,0x53,0x11,
+0x78,0x74,8,0x65,0xf,0x65,0xa5,0,0x66,0xa5,0x12,0x67,0xa5,0x2e,0x68,0xa5,
+0x42,0x69,0xa5,0x48,0x61,0xa3,0x46,0x62,0xa3,0x5e,0x63,0xa3,0xc5,0x64,0xa3,0xd1,
+0x19,0x61,0x64,0x69,0x63,0x61,0x6c,0x73,0x73,0x75,0x70,0x94,0x16,0x70,0x6c,0x65,
+0x6d,0x65,0x6e,0x74,0x95,1,0x74,0x50,0x79,0x14,0x6d,0x62,0x6f,0x6c,0x73,0x9a,
+0x1d,0x61,0x6e,0x64,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x9b,
+0x14,0x72,0x6f,0x6b,0x65,0x73,0xa3,0x82,2,0x6e,0x48,0x72,0x64,0x75,0x1d,0x63,
+0x61,0x73,0x69,0x61,0x6e,0x61,0x6c,0x62,0x61,0x6e,0x69,0x61,0x6e,0xa3,0xde,0x1d,
+0x61,0x64,0x69,0x61,0x6e,0x73,0x79,0x6c,0x6c,0x61,0x62,0x69,0x63,0x73,0x63,0x12,
+0x69,0x61,0x6e,0xa3,0xa8,2,0x61,0x3a,0x65,0x4c,0x6f,0x16,0x72,0x61,0x73,0x6d,
+0x69,0x61,0x6e,0xa5,0x2d,1,0x6b,0x26,0x6d,0xa3,0xa4,0x11,0x6d,0x61,0xa3,0xd4,
+1,0x72,0x38,0x73,0x17,0x73,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0xa5,0x19,0x13,
+0x6f,0x6b,0x65,0x65,0x60,0x12,0x73,0x75,0x70,0xa2,0xff,0x16,0x70,0x6c,0x65,0x6d,
+0x65,0x6e,0x74,0xa3,0xff,3,0x65,0x3e,0x69,0x8e,0x6f,0xa2,0x71,0x75,0x15,0x70,
+0x6c,0x6f,0x79,0x61,0x6e,0xa3,0xe1,1,0x73,0x60,0x76,0x16,0x61,0x6e,0x61,0x67,
+0x61,0x72,0x69,0x3e,0x12,0x65,0x78,0x74,0xa2,0xb3,1,0x61,0xa5,0x44,0x65,0x13,
+0x6e,0x64,0x65,0x64,0xa2,0xb3,0x10,0x61,0xa5,0x44,0x13,0x65,0x72,0x65,0x74,0xa3,
+0x5a,2,0x61,0x3a,0x6e,0x82,0x76,0x16,0x65,0x73,0x61,0x6b,0x75,0x72,0x75,0xa5,
+0x2f,0x18,0x63,0x72,0x69,0x74,0x69,0x63,0x61,0x6c,0x73,0x2e,2,0x65,0x30,0x66,
+0x36,0x73,0x11,0x75,0x70,0xa3,0x83,0x11,0x78,0x74,0xa3,0xe0,0x18,0x6f,0x72,0x73,
+0x79,0x6d,0x62,0x6f,0x6c,0x73,0x77,0x14,0x67,0x62,0x61,0x74,0x73,0x91,1,0x67,
+0x3e,0x6d,0x12,0x69,0x6e,0x6f,0xa2,0xab,0x14,0x74,0x69,0x6c,0x65,0x73,0xa3,0xab,
+0x11,0x72,0x61,0xa5,0x1a,8,0x6d,0x5f,0x6d,0x3a,0x6e,0x48,0x73,0x7a,0x76,0xa2,
+0x4b,0x77,0x12,0x69,0x64,0x65,0x43,0x11,0x65,0x64,0x32,0x12,0x69,0x61,0x6c,0x33,
+2,0x61,0x40,0x62,0x37,0x6f,1,0x62,0x28,0x6e,0x10,0x65,0x21,0x13,0x72,0x65,
+0x61,0x6b,0x37,0x10,0x72,0x34,0x12,0x72,0x6f,0x77,0x35,2,0x6d,0x38,0x71,0x46,
+0x75,1,0x62,0x3d,0x70,0x3e,0x11,0x65,0x72,0x3f,1,0x61,0x24,0x6c,0x39,0x11,
+0x6c,0x6c,0x39,1,0x72,0x3b,0x75,0x12,0x61,0x72,0x65,0x3b,0x12,0x65,0x72,0x74,
+0x40,0x13,0x69,0x63,0x61,0x6c,0x41,0x63,0x58,0x65,0x92,0x66,0x96,0x69,1,0x6e,
+0x36,0x73,0x10,0x6f,0x30,0x14,0x6c,0x61,0x74,0x65,0x64,0x31,0x11,0x69,0x74,0x2e,
+0x12,0x69,0x61,0x6c,0x2f,2,0x61,0x36,0x69,0x48,0x6f,0x10,0x6d,0x24,0x12,0x70,
+0x61,0x74,0x25,0x10,0x6e,0x22,0x15,0x6f,0x6e,0x69,0x63,0x61,0x6c,0x23,0x13,0x72,
+0x63,0x6c,0x65,0x27,0x11,0x6e,0x63,0x27,2,0x69,0x3a,0x6f,0x44,0x72,0x10,0x61,
+0x2c,0x14,0x63,0x74,0x69,0x6f,0x6e,0x2d,0x10,0x6e,0x28,0x11,0x61,0x6c,0x29,0x11,
+0x6e,0x74,0x2b,4,0x61,0x3a,0x66,0x4c,0x68,0x5e,0x6e,0x70,0x77,0x2a,0x12,0x69,
+0x64,0x65,0x2b,0x22,0x17,0x6d,0x62,0x69,0x67,0x75,0x6f,0x75,0x73,0x23,0x26,0x17,
+0x75,0x6c,0x6c,0x77,0x69,0x64,0x74,0x68,0x27,0x24,0x17,0x61,0x6c,0x66,0x77,0x69,
+0x64,0x74,0x68,0x25,0x20,1,0x61,0x30,0x65,0x14,0x75,0x74,0x72,0x61,0x6c,0x21,
+0x28,0x13,0x72,0x72,0x6f,0x77,0x29,0xd,0x6e,0xc0,0xfb,0x73,0x6d,0x73,0x3a,0x74,
+0x98,0x75,0xa2,0x49,0x7a,2,0x6c,0x3b,0x70,0x3d,0x73,0x39,5,0x6f,0x28,0x6f,
+0x57,0x70,0x34,0x75,0x16,0x72,0x72,0x6f,0x67,0x61,0x74,0x65,0x45,0x11,0x61,0x63,
+1,0x65,0x32,0x69,0x15,0x6e,0x67,0x6d,0x61,0x72,0x6b,0x31,0x18,0x73,0x65,0x70,
+0x61,0x72,0x61,0x74,0x6f,0x72,0x39,0x63,0x53,0x6b,0x55,0x6d,0x51,0x1d,0x69,0x74,
+0x6c,0x65,0x63,0x61,0x73,0x65,0x6c,0x65,0x74,0x74,0x65,0x72,0x27,1,0x6e,0x40,
+0x70,0x1c,0x70,0x65,0x72,0x63,0x61,0x73,0x65,0x6c,0x65,0x74,0x74,0x65,0x72,0x23,
+0x17,0x61,0x73,0x73,0x69,0x67,0x6e,0x65,0x64,0x21,0x6e,0x8a,0x6f,0xa2,0x47,0x70,
+8,0x66,0x14,0x66,0x5b,0x69,0x59,0x6f,0x4f,0x72,0x24,0x73,0x49,0x17,0x69,0x76,
+0x61,0x74,0x65,0x75,0x73,0x65,0x43,0x61,0x2c,0x63,0x4d,0x64,0x47,0x65,0x4b,0x1f,
+0x72,0x61,0x67,0x72,0x61,0x70,0x68,0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x6f,0x72,
+0x3d,2,0x64,0x33,0x6c,0x35,0x6f,0x36,0x1b,0x6e,0x73,0x70,0x61,0x63,0x69,0x6e,
+0x67,0x6d,0x61,0x72,0x6b,0x2d,1,0x70,0x7c,0x74,0x12,0x68,0x65,0x72,3,0x6c,
+0x38,0x6e,0x42,0x70,0x4c,0x73,0x14,0x79,0x6d,0x62,0x6f,0x6c,0x57,0x14,0x65,0x74,
+0x74,0x65,0x72,0x2b,0x14,0x75,0x6d,0x62,0x65,0x72,0x37,0x19,0x75,0x6e,0x63,0x74,
+0x75,0x61,0x74,0x69,0x6f,0x6e,0x4f,0x1c,0x65,0x6e,0x70,0x75,0x6e,0x63,0x74,0x75,
+0x61,0x74,0x69,0x6f,0x6e,0x49,0x66,0x9e,0x66,0x88,0x69,0xa2,0x4b,0x6c,0xa2,0x5c,
+0x6d,4,0x61,0x60,0x63,0x31,0x65,0x2f,0x6e,0x2d,0x6f,0x15,0x64,0x69,0x66,0x69,
+0x65,0x72,1,0x6c,0x30,0x73,0x14,0x79,0x6d,0x62,0x6f,0x6c,0x55,0x14,0x65,0x74,
+0x74,0x65,0x72,0x29,0x17,0x74,0x68,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x51,1,0x69,
+0x2e,0x6f,0x13,0x72,0x6d,0x61,0x74,0x41,0x1d,0x6e,0x61,0x6c,0x70,0x75,0x6e,0x63,
+0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x5b,0x10,0x6e,0x1f,0x69,0x74,0x69,0x61,0x6c,
+0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x59,6,0x6d,0x18,0x6d,
+0x29,0x6f,0x28,0x74,0x27,0x75,0x23,0x2a,0x1c,0x77,0x65,0x72,0x63,0x61,0x73,0x65,
+0x6c,0x65,0x74,0x74,0x65,0x72,0x25,0x65,0x28,0x69,0x3c,0x6c,0x25,0x19,0x74,0x74,
+0x65,0x72,0x6e,0x75,0x6d,0x62,0x65,0x72,0x35,0x1a,0x6e,0x65,0x73,0x65,0x70,0x61,
+0x72,0x61,0x74,0x6f,0x72,0x3b,0x63,0x44,0x64,0xa2,0x60,0x65,0x1b,0x6e,0x63,0x6c,
+0x6f,0x73,0x69,0x6e,0x67,0x6d,0x61,0x72,0x6b,0x2f,6,0x6e,0x39,0x6e,0x46,0x6f,
+0x4e,0x73,0x45,0x75,0x1b,0x72,0x72,0x65,0x6e,0x63,0x79,0x73,0x79,0x6d,0x62,0x6f,
+0x6c,0x53,0x20,0x12,0x74,0x72,0x6c,0x3f,0x42,0x10,0x6e,1,0x6e,0x2c,0x74,0x12,
+0x72,0x6f,0x6c,0x3f,0x1f,0x65,0x63,0x74,0x6f,0x72,0x70,0x75,0x6e,0x63,0x74,0x75,
+0x61,0x74,0x69,0x6f,0x6e,0x4d,0x63,0x3f,0x66,0x41,0x6c,0x1d,0x6f,0x73,0x65,0x70,
+0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x4b,2,0x61,0x30,0x65,0x4a,
+0x69,0x12,0x67,0x69,0x74,0x33,0x1c,0x73,0x68,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,
+0x74,0x69,0x6f,0x6e,0x47,0x1a,0x63,0x69,0x6d,0x61,0x6c,0x6e,0x75,0x6d,0x62,0x65,
+0x72,0x33,0,0x13,0x6e,0xc1,0xf,0x74,0x76,0x74,0x4c,0x76,0x9a,0x77,0xa2,0x48,
+0x79,0xa2,0x49,0x7a,1,0x61,0x2c,0x68,0x12,0x61,0x69,0x6e,0x8b,0x11,0x69,0x6e,
+0x85,2,0x61,0x36,0x65,0x3c,0x68,0x14,0x69,0x6e,0x79,0x65,0x68,0xa3,0x66,1,
+0x68,0x71,0x77,0x73,1,0x68,0x28,0x74,0x10,0x68,0x77,0x16,0x6d,0x61,0x72,0x62,
+0x75,0x74,0x61,0x74,0x13,0x67,0x6f,0x61,0x6c,0x3d,0x1a,0x65,0x72,0x74,0x69,0x63,
+0x61,0x6c,0x74,0x61,0x69,0x6c,0xa3,0x67,0x11,0x61,0x77,0x79,1,0x65,0x32,0x75,
+0x11,0x64,0x68,0x80,0x11,0x68,0x65,0x83,0x10,0x68,0x7a,1,0x62,0x34,0x77,0x16,
+0x69,0x74,0x68,0x74,0x61,0x69,0x6c,0x7f,0x14,0x61,0x72,0x72,0x65,0x65,0x7d,0x6e,
+0xa2,0x4c,0x70,0xa2,0x69,0x71,0xa2,0x69,0x72,0xa2,0x6f,0x73,5,0x74,0x22,0x74,
+0x38,0x77,0x4c,0x79,0x16,0x72,0x69,0x61,0x63,0x77,0x61,0x77,0x6f,0x18,0x72,0x61,
+0x69,0x67,0x68,0x74,0x77,0x61,0x77,0xa3,0x55,0x15,0x61,0x73,0x68,0x6b,0x61,0x66,
+0x6d,0x61,0x2e,0x65,0x38,0x68,0x11,0x69,0x6e,0x6b,0x10,0x64,0x62,0x11,0x68,0x65,
+0x65,1,0x65,0x2e,0x6d,0x13,0x6b,0x61,0x74,0x68,0x69,0x10,0x6e,0x67,2,0x6f,
+0x2c,0x75,0x50,0x79,0x10,0x61,0x91,1,0x6a,0x28,0x6f,0x10,0x6e,0x55,0x1a,0x6f,
+0x69,0x6e,0x69,0x6e,0x67,0x67,0x72,0x6f,0x75,0x70,0x21,0x10,0x6e,0x57,0x10,0x65,
+0x59,0x10,0x61,1,0x66,0x5b,0x70,0x10,0x68,0x5d,1,0x65,0x38,0x6f,0x18,0x68,
+0x69,0x6e,0x67,0x79,0x61,0x79,0x65,0x68,0x93,1,0x68,0x5f,0x76,0x16,0x65,0x72,
+0x73,0x65,0x64,0x70,0x65,0x61,0x67,0xc1,0xc7,0x67,0xa4,0x52,0x68,0xa4,0x59,0x6b,
+0xa4,0x99,0x6c,0xa4,0xb2,0x6d,2,0x61,0x2e,0x65,0xa4,0x3e,0x69,0x10,0x6d,0x53,
+1,0x6c,0xa2,0xe7,0x6e,0x16,0x69,0x63,0x68,0x61,0x65,0x61,0x6e,0,0x12,0x6e,
+0x76,0x73,0x51,0x73,0x3e,0x74,0x5c,0x77,0xa0,0x79,0xa2,0x42,0x7a,0x13,0x61,0x79,
+0x69,0x6e,0xa3,0x54,0x10,0x61,1,0x64,0x2e,0x6d,0x12,0x65,0x6b,0x68,0xa3,0x4c,
+0x11,0x68,0x65,0xa3,0x4b,3,0x61,0x38,0x65,0x3c,0x68,0x4a,0x77,0x13,0x65,0x6e,
+0x74,0x79,0xa3,0x51,0x10,0x77,0xa3,0x4d,1,0x6e,0xa3,0x4e,0x74,0x10,0x68,0xa3,
+0x4f,0x14,0x61,0x6d,0x65,0x64,0x68,0xa3,0x50,0x11,0x61,0x77,0xa3,0x52,0x12,0x6f,
+0x64,0x68,0xa3,0x53,0x6e,0x3a,0x6f,0x40,0x70,0x46,0x71,0x4a,0x72,0x12,0x65,0x73,
+0x68,0xa3,0x4a,0x11,0x75,0x6e,0xa3,0x46,0x11,0x6e,0x65,0xa3,0x47,0x10,0x65,0xa3,
+0x48,0x12,0x6f,0x70,0x68,0xa3,0x49,0x67,0x33,0x67,0x38,0x68,0x40,0x6b,0x5e,0x6c,
+0x66,0x6d,0x11,0x65,0x6d,0xa3,0x45,0x13,0x69,0x6d,0x65,0x6c,0xa1,1,0x65,0x32,
+0x75,0x14,0x6e,0x64,0x72,0x65,0x64,0xa3,0x42,0x11,0x74,0x68,0xa3,0x41,0x12,0x61,
+0x70,0x68,0xa3,0x43,0x14,0x61,0x6d,0x65,0x64,0x68,0xa3,0x44,0x61,0x34,0x62,0x4a,
+0x64,0x50,0x66,0x12,0x69,0x76,0x65,0x9f,1,0x6c,0x2a,0x79,0x11,0x69,0x6e,0x97,
+0x12,0x65,0x70,0x68,0x95,0x12,0x65,0x74,0x68,0x99,1,0x61,0x30,0x68,0x14,0x61,
+0x6d,0x65,0x64,0x68,0x9d,0x13,0x6c,0x65,0x74,0x68,0x9b,0x15,0x61,0x79,0x61,0x6c,
+0x61,0x6d,6,0x6e,0x2c,0x6e,0x34,0x72,0x5e,0x73,0x62,0x74,0x11,0x74,0x61,0xa3,
+0x63,2,0x67,0x2e,0x6e,0x32,0x79,0x10,0x61,0xa3,0x60,0x10,0x61,0xa3,0x5d,1,
+0x61,0xa3,0x5e,0x6e,0x10,0x61,0xa3,0x5f,0x10,0x61,0xa3,0x61,0x11,0x73,0x61,0xa3,
+0x62,0x62,0x3c,0x6a,0x42,0x6c,0x10,0x6c,1,0x61,0xa3,0x5b,0x6c,0x10,0x61,0xa3,
+0x5c,0x11,0x68,0x61,0xa3,0x59,0x10,0x61,0xa3,0x5a,0x11,0x65,0x6d,0x51,0x10,0x61,
+1,0x66,0x37,0x6d,0x11,0x61,0x6c,0x39,1,0x61,0x40,0x65,0x3e,1,0x68,0x28,
+0x74,0x10,0x68,0x45,0x40,0x13,0x67,0x6f,0x61,0x6c,0x43,2,0x68,0x3b,0x6d,0x5c,
+0x6e,0x1a,0x69,0x66,0x69,0x72,0x6f,0x68,0x69,0x6e,0x67,0x79,0x61,1,0x6b,0x2a,
+0x70,0x10,0x61,0xa3,0x65,0x15,0x69,0x6e,0x6e,0x61,0x79,0x61,0xa3,0x64,0x1a,0x7a,
+0x61,0x6f,0x6e,0x68,0x65,0x68,0x67,0x6f,0x61,0x6c,0x3d,2,0x61,0x3a,0x68,0x44,
+0x6e,0x17,0x6f,0x74,0x74,0x65,0x64,0x68,0x65,0x68,0x4b,1,0x66,0x47,0x70,0x10,
+0x68,0x49,0x12,0x61,0x70,0x68,0x89,0x11,0x61,0x6d,0x4c,0x12,0x61,0x64,0x68,0x4f,
+0x61,0x6e,0x62,0xa2,0x54,0x64,0xa2,0x70,0x65,0x31,0x66,2,0x61,0x3e,0x65,0x4a,
+0x69,0x19,0x6e,0x61,0x6c,0x73,0x65,0x6d,0x6b,0x61,0x74,0x68,0x35,0x15,0x72,0x73,
+0x69,0x79,0x65,0x68,0x8f,0x86,0x10,0x68,0x33,2,0x66,0x3c,0x69,0x70,0x6c,1,
+0x61,0x28,0x65,0x10,0x66,0x27,0x11,0x70,0x68,0x25,0x14,0x72,0x69,0x63,0x61,0x6e,
+2,0x66,0x30,0x6e,0x36,0x71,0x11,0x61,0x66,0xa3,0x58,0x11,0x65,0x68,0xa3,0x56,
+0x12,0x6f,0x6f,0x6e,0xa3,0x57,0x10,0x6e,0x23,1,0x65,0x4a,0x75,0x10,0x72,0x1f,
+0x75,0x73,0x68,0x61,0x73,0x6b,0x69,0x79,0x65,0x68,0x62,0x61,0x72,0x72,0x65,0x65,
+0x8d,1,0x68,0x29,0x74,0x10,0x68,0x2b,0x11,0x61,0x6c,0x2c,0x16,0x61,0x74,0x68,
+0x72,0x69,0x73,0x68,0x2f,7,0x6e,0x2e,0x6e,0x2c,0x72,0x3e,0x74,0x56,0x75,0x21,
+0x18,0x6f,0x6e,0x6a,0x6f,0x69,0x6e,0x69,0x6e,0x67,0x21,0x28,0x1a,0x69,0x67,0x68,
+0x74,0x6a,0x6f,0x69,0x6e,0x69,0x6e,0x67,0x29,0x2a,0x19,0x72,0x61,0x6e,0x73,0x70,
+0x61,0x72,0x65,0x6e,0x74,0x2b,0x63,0x23,0x64,0x40,0x6a,0x56,0x6c,0x26,0x19,0x65,
+0x66,0x74,0x6a,0x6f,0x69,0x6e,0x69,0x6e,0x67,0x27,0x24,0x19,0x75,0x61,0x6c,0x6a,
+0x6f,0x69,0x6e,0x69,0x6e,0x67,0x25,0x19,0x6f,0x69,0x6e,0x63,0x61,0x75,0x73,0x69,
+0x6e,0x67,0x23,0,0x14,0x6e,0xc0,0xe5,0x73,0x5e,0x77,0x23,0x77,0x40,0x78,0x58,
+0x7a,0x10,0x77,0x58,1,0x6a,0x75,0x73,0x13,0x70,0x61,0x63,0x65,0x59,1,0x6a,
+0x5d,0x6f,0x17,0x72,0x64,0x6a,0x6f,0x69,0x6e,0x65,0x72,0x5d,0x10,0x78,0x21,0x73,
+0x4a,0x75,0x7a,0x76,1,0x66,0x7d,0x69,0x7e,0x13,0x72,0x61,0x6d,0x61,0x7e,0x14,
+0x66,0x69,0x6e,0x61,0x6c,0x7d,4,0x61,0x51,0x67,0x53,0x70,0x28,0x75,0x30,0x79,
+0x57,0x54,0x12,0x61,0x63,0x65,0x55,0x16,0x72,0x72,0x6f,0x67,0x61,0x74,0x65,0x53,
+0x15,0x6e,0x6b,0x6e,0x6f,0x77,0x6e,0x21,0x6e,0x60,0x6f,0xa2,0x41,0x70,0xa2,0x50,
+0x71,0xa2,0x6e,0x72,1,0x65,0x24,0x69,0x6f,0x1e,0x67,0x69,0x6f,0x6e,0x61,0x6c,
+0x69,0x6e,0x64,0x69,0x63,0x61,0x74,0x6f,0x72,0x6f,4,0x65,0x3e,0x6c,0x5b,0x6f,
+0x46,0x73,0x45,0x75,0x46,0x14,0x6d,0x65,0x72,0x69,0x63,0x47,0x15,0x78,0x74,0x6c,
+0x69,0x6e,0x65,0x5b,0x17,0x6e,0x73,0x74,0x61,0x72,0x74,0x65,0x72,0x45,0x10,0x70,
+0x48,0x1c,0x65,0x6e,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x49,
+1,0x6f,0x3e,0x72,0x4c,0x1a,0x65,0x66,0x69,0x78,0x6e,0x75,0x6d,0x65,0x72,0x69,
+0x63,0x4d,0x4a,0x1b,0x73,0x74,0x66,0x69,0x78,0x6e,0x75,0x6d,0x65,0x72,0x69,0x63,
+0x4b,0x10,0x75,0x4e,0x16,0x6f,0x74,0x61,0x74,0x69,0x6f,0x6e,0x4f,0x68,0x7b,0x68,
+0x50,0x69,0x86,0x6a,0xa2,0x61,0x6c,0xa2,0x65,0x6d,0x1c,0x61,0x6e,0x64,0x61,0x74,
+0x6f,0x72,0x79,0x62,0x72,0x65,0x61,0x6b,0x2d,4,0x32,0x5f,0x33,0x61,0x65,0x34,
+0x6c,0x6d,0x79,0x3a,0x13,0x70,0x68,0x65,0x6e,0x3b,0x19,0x62,0x72,0x65,0x77,0x6c,
+0x65,0x74,0x74,0x65,0x72,0x6d,2,0x64,0x28,0x6e,0x3c,0x73,0x41,0x3c,0x18,0x65,
+0x6f,0x67,0x72,0x61,0x70,0x68,0x69,0x63,0x3d,0x3e,1,0x66,0x3e,0x73,0x11,0x65,
+0x70,1,0x61,0x22,0x65,0x14,0x72,0x61,0x62,0x6c,0x65,0x3f,0x18,0x69,0x78,0x6e,
+0x75,0x6d,0x65,0x72,0x69,0x63,0x41,2,0x6c,0x63,0x74,0x65,0x76,0x67,1,0x66,
+0x43,0x69,0x15,0x6e,0x65,0x66,0x65,0x65,0x64,0x43,0x61,0x42,0x62,0xa2,0x49,0x63,
+0xa2,0x76,0x65,0xa2,0xfc,0x67,0x10,0x6c,0x38,0x11,0x75,0x65,0x39,5,0x6d,0xf,
+0x6d,0x28,0x70,0x79,0x73,0x7b,0x16,0x62,0x69,0x67,0x75,0x6f,0x75,0x73,0x23,0x69,
+0x23,0x6b,0x38,0x6c,0x24,0x17,0x70,0x68,0x61,0x62,0x65,0x74,0x69,0x63,0x25,0x76,
+0x13,0x73,0x61,0x72,0x61,0x76,1,0x70,0x2e,0x73,0x13,0x74,0x61,0x72,0x74,0x7b,
+0x15,0x72,0x65,0x62,0x61,0x73,0x65,0x79,4,0x32,0x27,0x61,0x29,0x62,0x2b,0x6b,
+0x2d,0x72,0x12,0x65,0x61,0x6b,2,0x61,0x36,0x62,0x3e,0x73,0x15,0x79,0x6d,0x62,
+0x6f,0x6c,0x73,0x57,0x13,0x66,0x74,0x65,0x72,0x29,1,0x65,0x2a,0x6f,0x11,0x74,
+0x68,0x27,0x13,0x66,0x6f,0x72,0x65,0x2b,7,0x6d,0x51,0x6d,0x33,0x6f,0x28,0x70,
+0x69,0x72,0x35,1,0x6d,0x76,0x6e,1,0x64,0x3c,0x74,0x1a,0x69,0x6e,0x67,0x65,
+0x6e,0x74,0x62,0x72,0x65,0x61,0x6b,0x2f,0x15,0x69,0x74,0x69,0x6f,0x6e,0x61,0x1f,
+0x6c,0x6a,0x61,0x70,0x61,0x6e,0x65,0x73,0x65,0x73,0x74,0x61,0x72,0x74,0x65,0x72,
+0x6b,1,0x62,0x3a,0x70,0x19,0x6c,0x65,0x78,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,
+0x51,0x18,0x69,0x6e,0x69,0x6e,0x67,0x6d,0x61,0x72,0x6b,0x33,0x61,0x6a,0x62,0x2f,
+0x6a,0x6b,0x6c,0x30,0x13,0x6f,0x73,0x65,0x70,1,0x61,0x38,0x75,0x18,0x6e,0x63,
+0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0x31,0x18,0x72,0x65,0x6e,0x74,0x68,0x65,0x73,
+0x69,0x73,0x69,0x1b,0x72,0x72,0x69,0x61,0x67,0x65,0x72,0x65,0x74,0x75,0x72,0x6e,
+0x35,2,0x62,0x3e,0x6d,0x46,0x78,0x36,0x18,0x63,0x6c,0x61,0x6d,0x61,0x74,0x69,
+0x6f,0x6e,0x37,0x70,0x12,0x61,0x73,0x65,0x71,0x72,0x16,0x6f,0x64,0x69,0x66,0x69,
+0x65,0x72,0x73,1,0x64,0x42,0x6e,1,0x6f,0x32,0x75,0x26,0x14,0x6d,0x65,0x72,
+0x69,0x63,0x27,0x11,0x6e,0x65,0x21,1,0x65,0x2e,0x69,0x24,0x12,0x67,0x69,0x74,
+0x25,0x22,0x14,0x63,0x69,0x6d,0x61,0x6c,0x23,0,0x18,0x6e,0xc4,0x6f,0x74,0xc1,
+0x91,0x77,0x96,0x77,0xa2,0x4c,0x78,0xa2,0x70,0x79,0xa2,0x7a,0x7a,6,0x73,0x1e,
+0x73,0x34,0x78,0x42,0x79,0x48,0x7a,0x11,0x7a,0x7a,0xa3,0x67,0x10,0x79,1,0x65,
+0xa3,0xae,0x6d,0xa3,0x81,0x11,0x78,0x78,0xa3,0x66,0x11,0x79,0x79,0x21,0x61,0x30,
+0x69,0x58,0x6d,0x11,0x74,0x68,0xa3,0x80,0x10,0x6e,1,0x61,0x26,0x62,0xa3,0xb1,
+0x1a,0x62,0x61,0x7a,0x61,0x72,0x73,0x71,0x75,0x61,0x72,0x65,0xa3,0xb1,0x11,0x6e,
+0x68,0x23,2,0x61,0x30,0x63,0x5a,0x6f,0x11,0x6c,0x65,0xa3,0x9b,1,0x6e,0x3c,
+0x72,0x10,0x61,0xa2,0x92,0x15,0x6e,0x67,0x63,0x69,0x74,0x69,0xa3,0x92,0x12,0x63,
+0x68,0x6f,0xa3,0xbc,0x11,0x68,0x6f,0xa3,0xbc,1,0x70,0x2c,0x73,0x11,0x75,0x78,
+0xa3,0x65,0x11,0x65,0x6f,0x9b,1,0x65,0x2c,0x69,0x72,0x11,0x69,0x69,0x73,0x11,
+0x7a,0x69,0xa2,0xc0,0x11,0x64,0x69,0xa3,0xc0,0x74,0x66,0x75,0xa2,0xde,0x76,1,
+0x61,0x48,0x69,1,0x73,0x38,0x74,0x10,0x68,0xa2,0xc5,0x13,0x6b,0x75,0x71,0x69,
+0xa3,0xc5,0x10,0x70,0xa3,0x64,0x10,0x69,0xa2,0x63,0x10,0x69,0xa3,0x63,7,0x68,
+0x3e,0x68,0x34,0x69,0x48,0x6e,0x86,0x6f,0x11,0x74,0x6f,0xa3,0xc4,0x10,0x61,1,
+0x61,0x24,0x69,0x6d,0x6a,0x11,0x6e,0x61,0x6b,2,0x62,0x3a,0x66,0x4a,0x72,0x10,
+0x68,0xa2,0x9e,0x12,0x75,0x74,0x61,0xa3,0x9e,1,0x65,0x24,0x74,0x6f,0x12,0x74,
+0x61,0x6e,0x6f,0x14,0x69,0x6e,0x61,0x67,0x68,0x99,0x11,0x73,0x61,0xa3,0xc3,0x61,
+0x36,0x65,0xa2,0x65,0x66,0xa2,0x71,0x67,0x11,0x6c,0x67,0x75,6,0x6c,0x28,0x6c,
+0x32,0x6d,0x38,0x6e,0x44,0x76,0x10,0x74,0xa3,0x7f,1,0x65,0x89,0x75,0x97,1,
+0x69,0x24,0x6c,0x67,0x10,0x6c,0x67,0x10,0x67,0xa2,0x9a,1,0x73,0x2a,0x75,0x10,
+0x74,0xa3,0x9a,0x10,0x61,0xa3,0xc3,0x67,0x36,0x69,0x52,0x6b,0x10,0x72,0xa2,0x99,
+0x10,0x69,0xa3,0x99,1,0x61,0x30,0x62,0x7a,0x13,0x61,0x6e,0x77,0x61,0x7b,0x12,
+0x6c,0x6f,0x67,0x75,2,0x6c,0x32,0x74,0x34,0x76,0x12,0x69,0x65,0x74,0xa3,0x7f,
+0x10,0x65,0x89,0x12,0x68,0x61,0x6d,0xa3,0x6a,1,0x6c,0x2a,0x6e,0x10,0x67,0xa3,
+0x62,0x10,0x75,0x68,0x11,0x67,0x75,0x69,0x11,0x6e,0x67,0x99,1,0x67,0x32,0x6e,
+0x14,0x6b,0x6e,0x6f,0x77,0x6e,0xa3,0x67,0x11,0x61,0x72,0x8a,0x13,0x69,0x74,0x69,
+0x63,0x8b,0x71,0xc1,0x13,0x71,0xa2,0xde,0x72,0xa2,0xe3,0x73,6,0x69,0x8a,0x69,
+0x72,0x6f,0xa2,0x4c,0x75,0xa2,0x75,0x79,1,0x6c,0x46,0x72,4,0x63,0x65,0x65,
+0xa3,0x5f,0x69,0x2c,0x6a,0xa3,0x60,0x6e,0xa3,0x61,0x11,0x61,0x63,0x65,0x10,0x6f,
+0x94,0x16,0x74,0x69,0x6e,0x61,0x67,0x72,0x69,0x95,2,0x64,0x3c,0x67,0x4c,0x6e,
+1,0x64,0xa3,0x91,0x68,0x62,0x12,0x61,0x6c,0x61,0x63,0x10,0x64,0xa2,0xa6,0x12,
+0x68,0x61,0x6d,0xa3,0xa6,0x17,0x6e,0x77,0x72,0x69,0x74,0x69,0x6e,0x67,0xa3,0x70,
+2,0x67,0x3a,0x72,0x52,0x79,0x10,0x6f,0xa2,0xb0,0x12,0x6d,0x62,0x6f,0xa3,0xb0,
+1,0x64,0x26,0x6f,0xa3,0xb8,0xa2,0xb7,0x12,0x69,0x61,0x6e,0xa3,0xb7,0x10,0x61,
+0xa2,0x98,0x16,0x73,0x6f,0x6d,0x70,0x65,0x6e,0x67,0xa3,0x98,0x11,0x6e,0x64,0xa2,
+0x71,0x14,0x61,0x6e,0x65,0x73,0x65,0xa3,0x71,0x61,0x5c,0x67,0xa2,0x43,0x68,1,
+0x61,0x2a,0x72,0x10,0x64,0xa3,0x97,2,0x72,0x28,0x76,0x30,0x77,0x87,0x12,0x61,
+0x64,0x61,0xa3,0x97,0x12,0x69,0x61,0x6e,0x87,2,0x6d,0x40,0x72,0x58,0x75,0x10,
+0x72,0xa2,0x6f,0x15,0x61,0x73,0x68,0x74,0x72,0x61,0xa3,0x6f,1,0x61,0x26,0x72,
+0xa3,0x7e,0x14,0x72,0x69,0x74,0x61,0x6e,0xa3,0x7e,1,0x61,0xa3,0x5e,0x62,0xa3,
+0x85,0x11,0x6e,0x77,0xa3,0x70,0x11,0x61,0x61,1,0x63,0x2f,0x69,0x23,3,0x65,
+0x3e,0x6a,0x48,0x6f,0x4e,0x75,0x10,0x6e,1,0x69,0x24,0x72,0x61,0x10,0x63,0x61,
+0x13,0x6a,0x61,0x6e,0x67,0xa3,0x6e,0x11,0x6e,0x67,0xa3,0x6e,1,0x68,0x2a,0x72,
+0x10,0x6f,0xa3,0x5d,0x10,0x67,0xa3,0xb6,0x6e,0xa2,0x83,0x6f,0xa4,1,0x70,5,
+0x6c,0x1e,0x6c,0x44,0x72,0x4a,0x73,0x1b,0x61,0x6c,0x74,0x65,0x72,0x70,0x61,0x68,
+0x6c,0x61,0x76,0x69,0xa3,0x7b,0x11,0x72,0x64,0xa3,0x5c,0x11,0x74,0x69,0xa3,0x7d,
+0x61,0x7c,0x65,0xa2,0x54,0x68,3,0x61,0x3e,0x6c,0x4e,0x6e,0x5e,0x6f,0x16,0x65,
+0x6e,0x69,0x63,0x69,0x61,0x6e,0xa3,0x5b,0x10,0x67,0xa2,0x5a,0x12,0x73,0x70,0x61,
+0xa3,0x5a,2,0x69,0xa3,0x7a,0x70,0xa3,0x7b,0x76,0xa3,0x7c,0x10,0x78,0xa3,0x5b,
+2,0x68,0x3e,0x6c,0x50,0x75,0x10,0x63,0xa2,0xa5,0x14,0x69,0x6e,0x68,0x61,0x75,
+0xa3,0xa5,0x17,0x61,0x77,0x68,0x68,0x6d,0x6f,0x6e,0x67,0xa3,0x4b,0x10,0x6d,0xa2,
+0x90,0x14,0x79,0x72,0x65,0x6e,0x65,0xa3,0x90,0x11,0x72,0x6d,0xa3,0x59,6,0x6b,
+0x36,0x6b,0x56,0x73,0x6e,0x75,0x74,0x79,0x11,0x69,0x61,0x1f,0x6b,0x65,0x6e,0x67,
+0x70,0x75,0x61,0x63,0x68,0x75,0x65,0x68,0x6d,0x6f,0x6e,0x67,0xa3,0xba,1,0x67,
+0x2e,0x6f,0xa2,0x57,0x10,0x6f,0xa3,0x57,0x10,0x62,0xa3,0x84,0x11,0x68,0x75,0xa3,
+0x96,0x12,0x73,0x68,0x75,0xa3,0x96,0x61,0x42,0x62,0x9e,0x65,0x10,0x77,1,0x61,
+0xa3,0xaa,0x74,0x14,0x61,0x69,0x6c,0x75,0x65,0x97,3,0x62,0x32,0x67,0x40,0x6e,
+0x56,0x72,0x10,0x62,0xa3,0x8e,0x15,0x61,0x74,0x61,0x65,0x61,0x6e,0xa3,0x8f,0x10,
+0x6d,0xa2,0xc7,0x15,0x75,0x6e,0x64,0x61,0x72,0x69,0xa3,0xc7,0x10,0x64,0xa2,0xbb,
+0x16,0x69,0x6e,0x61,0x67,0x61,0x72,0x69,0xa3,0xbb,0x11,0x61,0x74,0xa3,0x8f,4,
+0x67,0x3c,0x6c,0x4e,0x72,0xa2,0x8e,0x73,0xa2,0x9c,0x75,0x11,0x67,0x72,0xa3,0xc2,
+1,0x61,0x2a,0x68,0x11,0x61,0x6d,0x5b,0x10,0x6d,0x5b,1,0x63,0xa2,0x6a,0x64,
+6,0x70,0x41,0x70,0x3a,0x73,0x58,0x74,0x86,0x75,0x14,0x79,0x67,0x68,0x75,0x72,
+0xa3,0xc2,0x11,0x65,0x72,1,0x6d,0x2c,0x73,0x12,0x69,0x61,0x6e,0x9b,0x11,0x69,
+0x63,0xa3,0x59,0x10,0x6f,1,0x67,0x3a,0x75,0x18,0x74,0x68,0x61,0x72,0x61,0x62,
+0x69,0x61,0x6e,0xa3,0x85,0x13,0x64,0x69,0x61,0x6e,0xa3,0xb8,0x14,0x75,0x72,0x6b,
+0x69,0x63,0xa3,0x58,0x68,0x42,0x69,0x54,0x6e,0x1a,0x6f,0x72,0x74,0x68,0x61,0x72,
+0x61,0x62,0x69,0x61,0x6e,0xa3,0x8e,0x17,0x75,0x6e,0x67,0x61,0x72,0x69,0x61,0x6e,
+0xa3,0x4c,0x14,0x74,0x61,0x6c,0x69,0x63,0x5d,1,0x68,0x26,0x6b,0xa3,0x6d,0x12,
+0x69,0x6b,0x69,0xa3,0x6d,2,0x69,0x2c,0x6b,0x30,0x79,0x10,0x61,0x5f,0x11,0x79,
+0x61,0x5f,0x10,0x68,0xa3,0x58,2,0x61,0x36,0x67,0x3c,0x6d,0x10,0x61,0x84,0x12,
+0x6e,0x79,0x61,0x85,0x11,0x67,0x65,0xa3,0xab,0x10,0x65,0xa3,0xab,0x68,0xc3,0x15,
+0x6b,0xc2,0x2c,0x6b,0xa4,0x17,0x6c,0xa4,0xba,0x6d,8,0x6f,0x46,0x6f,0x48,0x72,
+0x74,0x74,0x80,0x75,0x86,0x79,1,0x61,0x28,0x6d,0x10,0x72,0x59,0x13,0x6e,0x6d,
+0x61,0x72,0x59,2,0x64,0x2e,0x6e,0x32,0x6f,0x10,0x6e,0xa3,0x72,0x10,0x69,0xa3,
+0xa3,0x10,0x67,0x56,0x14,0x6f,0x6c,0x69,0x61,0x6e,0x57,0x10,0x6f,0xa2,0x95,0x10,
+0x6f,0xa3,0x95,0x11,0x65,0x69,0xa3,0x73,0x11,0x6c,0x74,0xa2,0xa4,0x12,0x61,0x6e,
+0x69,0xa3,0xa4,0x61,0x36,0x65,0xa2,0x67,0x69,0xa2,0xbd,0x6c,0x11,0x79,0x6d,0x55,
+6,0x6e,0x38,0x6e,0x32,0x72,0x5c,0x73,0x6c,0x79,0x10,0x61,0xa3,0x55,1,0x64,
+0x38,0x69,0xa2,0x79,0x15,0x63,0x68,0x61,0x65,0x61,0x6e,0xa3,0x79,0xa2,0x54,0x12,
+0x61,0x69,0x63,0xa3,0x54,0x10,0x63,0xa2,0xa9,0x12,0x68,0x65,0x6e,0xa3,0xa9,0x18,
+0x61,0x72,0x61,0x6d,0x67,0x6f,0x6e,0x64,0x69,0xa3,0xaf,0x68,0x36,0x6b,0x4c,0x6c,
+0x15,0x61,0x79,0x61,0x6c,0x61,0x6d,0x55,1,0x61,0x26,0x6a,0xa3,0xa0,0x13,0x6a,
+0x61,0x6e,0x69,0xa3,0xa0,0x10,0x61,0xa2,0xb4,0x12,0x73,0x61,0x72,0xa3,0xb4,3,
+0x64,0x78,0x65,0x94,0x6e,0xa2,0x42,0x72,1,0x63,0xa3,0x8d,0x6f,0xa2,0x56,0x13,
+0x69,0x74,0x69,0x63,1,0x63,0x3c,0x68,0x19,0x69,0x65,0x72,0x6f,0x67,0x6c,0x79,
+0x70,0x68,0x73,0xa3,0x56,0x15,0x75,0x72,0x73,0x69,0x76,0x65,0xa3,0x8d,1,0x65,
+0x26,0x66,0xa3,0xb5,0x16,0x66,0x61,0x69,0x64,0x72,0x69,0x6e,0xa3,0xb5,0x17,0x74,
+0x65,0x69,0x6d,0x61,0x79,0x65,0x6b,0xa3,0x73,0x10,0x64,0xa2,0x8c,0x17,0x65,0x6b,
+0x69,0x6b,0x61,0x6b,0x75,0x69,0xa3,0x8c,0x11,0x61,0x6f,0xa3,0x5c,6,0x6e,0x1a,
+0x6e,0x34,0x6f,0x38,0x70,0x3e,0x74,0x11,0x68,0x69,0xa3,0x78,0x11,0x64,0x61,0x4b,
+0x11,0x72,0x65,0xa3,0x77,0x11,0x65,0x6c,0xa3,0x8a,0x61,0x32,0x68,0xa2,0x44,0x69,
+0x11,0x74,0x73,0xa3,0xbf,5,0x74,0x23,0x74,0x34,0x77,0x56,0x79,0x13,0x61,0x68,
+0x6c,0x69,0xa3,0x4f,0x14,0x61,0x6b,0x61,0x6e,0x61,0x4c,0x19,0x6f,0x72,0x68,0x69,
+0x72,0x61,0x67,0x61,0x6e,0x61,0x8d,0x10,0x69,0xa3,0xc6,0x69,0x38,0x6c,0x40,0x6e,
+1,0x61,0x4d,0x6e,0x12,0x61,0x64,0x61,0x4b,0x12,0x74,0x68,0x69,0xa3,0x78,0x10,
+0x69,0xa3,0x4f,4,0x61,0x40,0x69,0x52,0x6d,0x70,0x6f,0x7c,0x75,0x15,0x64,0x61,
+0x77,0x61,0x64,0x69,0xa3,0x91,0x10,0x72,0x92,0x15,0x6f,0x73,0x68,0x74,0x68,0x69,
+0x93,0x1d,0x74,0x61,0x6e,0x73,0x6d,0x61,0x6c,0x6c,0x73,0x63,0x72,0x69,0x70,0x74,
+0xa3,0xbf,1,0x65,0x24,0x72,0x4f,0x10,0x72,0x4f,0x10,0x6a,0xa2,0x9d,0x11,0x6b,
+0x69,0xa3,0x9d,4,0x61,0x5c,0x65,0x90,0x69,0xa0,0x6f,0xa2,0x5d,0x79,1,0x63,
+0x34,0x64,0x10,0x69,0xa2,0x6c,0x11,0x61,0x6e,0xa3,0x6c,0x10,0x69,0xa2,0x6b,0x11,
+0x61,0x6e,0xa3,0x6b,2,0x6e,0x42,0x6f,0x46,0x74,3,0x66,0xa3,0x50,0x67,0xa3,
+0x51,0x69,0x24,0x6e,0x53,0x10,0x6e,0x53,0x10,0x61,0xa3,0x6a,0x50,0x10,0x6f,0x51,
+0x11,0x70,0x63,0xa2,0x52,0x11,0x68,0x61,0xa3,0x52,2,0x6d,0x2e,0x6e,0x36,0x73,
+0x10,0x75,0xa3,0x83,0x10,0x62,0x80,0x10,0x75,0x81,2,0x61,0xa3,0x53,0x62,0x83,
+0x65,0x11,0x61,0x72,1,0x61,0xa3,0x53,0x62,0x83,0x11,0x6d,0x61,0xa3,0x8b,0x68,
+0x6e,0x69,0xa2,0x95,0x6a,2,0x61,0x30,0x70,0x52,0x75,0x11,0x72,0x63,0xa3,0x94,
+1,0x6d,0x38,0x76,0x10,0x61,0xa2,0x4e,0x13,0x6e,0x65,0x73,0x65,0xa3,0x4e,0x10,
+0x6f,0xa3,0xad,0x11,0x61,0x6e,0xa3,0x69,6,0x6c,0x1e,0x6c,0x34,0x6d,0x3a,0x72,
+0x48,0x75,0x11,0x6e,0x67,0xa3,0x4c,0x11,0x75,0x77,0xa3,0x9c,0x10,0x6e,1,0x67,
+0xa3,0x4b,0x70,0xa3,0xba,0x11,0x6b,0x74,0x8d,0x61,0x3c,0x65,0xa2,0x43,0x69,0x11,
+0x72,0x61,0x48,0x13,0x67,0x61,0x6e,0x61,0x49,1,0x6e,0x34,0x74,0x10,0x72,0xa2,
+0xa2,0x11,0x61,0x6e,0xa3,0xa2,0x42,6,0x6f,0xe,0x6f,0x77,0x73,0xa3,0x49,0x74,
+0xa3,0x4a,0x75,0x12,0x6e,0x6f,0x6f,0x77,0x62,0xa3,0xac,0x67,0x3e,0x69,0x42,0x19,
+0x66,0x69,0x72,0x6f,0x68,0x69,0x6e,0x67,0x79,0x61,0xa3,0xb6,0x44,0x11,0x75,0x6c,
+0x45,0x11,0x62,0x72,0x46,0x11,0x65,0x77,0x47,2,0x6d,0x2e,0x6e,0x4a,0x74,0x11,
+0x61,0x6c,0x5d,0x1c,0x70,0x65,0x72,0x69,0x61,0x6c,0x61,0x72,0x61,0x6d,0x61,0x69,
+0x63,0xa3,0x74,2,0x64,0x66,0x68,0x6a,0x73,0x1b,0x63,0x72,0x69,0x70,0x74,0x69,
+0x6f,0x6e,0x61,0x6c,0x70,0x61,1,0x68,0x32,0x72,0x14,0x74,0x68,0x69,0x61,0x6e,
+0xa3,0x7d,0x13,0x6c,0x61,0x76,0x69,0xa3,0x7a,0x10,0x73,0xa3,0x4d,0x15,0x65,0x72,
+0x69,0x74,0x65,0x64,0x23,0x64,0xc1,0xd,0x64,0xa2,0x7a,0x65,0xa2,0xc1,0x67,4,
+0x65,0x82,0x6c,0x9a,0x6f,0xa2,0x46,0x72,0xa2,0x55,0x75,2,0x6a,0x3c,0x6e,0x4e,
+0x72,1,0x6d,0x24,0x75,0x41,0x13,0x75,0x6b,0x68,0x69,0x41,1,0x61,0x24,0x72,
+0x3f,0x13,0x72,0x61,0x74,0x69,0x3f,0x18,0x6a,0x61,0x6c,0x61,0x67,0x6f,0x6e,0x64,
+0x69,0xa3,0xb3,0x10,0x6f,1,0x6b,0xa3,0x48,0x72,0x38,0x13,0x67,0x69,0x61,0x6e,
+0x39,0x11,0x61,0x67,0x90,0x15,0x6f,0x6c,0x69,0x74,0x69,0x63,0x91,1,0x6e,0x30,
+0x74,0x10,0x68,0x3a,0x11,0x69,0x63,0x3b,1,0x67,0xa3,0xb3,0x6d,0xa3,0xaf,1,
+0x61,0x32,0x65,1,0x65,0x24,0x6b,0x3d,0x10,0x6b,0x3d,0x10,0x6e,0xa2,0x89,0x12,
+0x74,0x68,0x61,0xa3,0x89,4,0x65,0x46,0x69,0x6c,0x6f,0x8c,0x73,0x9a,0x75,0x11,
+0x70,0x6c,0xa2,0x87,0x13,0x6f,0x79,0x61,0x6e,0xa3,0x87,1,0x73,0x38,0x76,0x10,
+0x61,0x34,0x15,0x6e,0x61,0x67,0x61,0x72,0x69,0x35,0x13,0x65,0x72,0x65,0x74,0x33,
+1,0x61,0x36,0x76,0x16,0x65,0x73,0x61,0x6b,0x75,0x72,0x75,0xa3,0xbe,0x10,0x6b,
+0xa3,0xbe,0x11,0x67,0x72,0xa2,0xb2,0x10,0x61,0xa3,0xb2,0x11,0x72,0x74,0x33,2,
+0x67,0x3a,0x6c,0x72,0x74,0x11,0x68,0x69,0x36,0x13,0x6f,0x70,0x69,0x63,0x37,0x10,
+0x79,2,0x64,0xa3,0x45,0x68,0xa3,0x46,0x70,0xa2,0x47,0x1e,0x74,0x69,0x61,0x6e,
+0x68,0x69,0x65,0x72,0x6f,0x67,0x6c,0x79,0x70,0x68,0x73,0xa3,0x47,1,0x62,0x36,
+0x79,0x10,0x6d,0xa2,0xb9,0x12,0x61,0x69,0x63,0xa3,0xb9,0x10,0x61,0xa2,0x88,0x12,
+0x73,0x61,0x6e,0xa3,0x88,0x61,0xa2,0xc9,0x62,0xa4,0x2e,0x63,6,0x6f,0x52,0x6f,
+0x76,0x70,0x92,0x75,0xa2,0x41,0x79,1,0x70,0x3e,0x72,2,0x69,0x2a,0x6c,0x31,
+0x73,0xa3,0x44,0x13,0x6c,0x6c,0x69,0x63,0x31,0x10,0x72,1,0x69,0x34,0x6f,0x15,
+0x6d,0x69,0x6e,0x6f,0x61,0x6e,0xa3,0xc1,0x11,0x6f,0x74,0x7f,1,0x6d,0x30,0x70,
+0x10,0x74,0x2e,0x11,0x69,0x63,0x2f,0x12,0x6d,0x6f,0x6e,0x21,1,0x6d,0x28,0x72,
+0x10,0x74,0x7f,0x10,0x6e,0xa3,0xc1,0x16,0x6e,0x65,0x69,0x66,0x6f,0x72,0x6d,0xa3,
+0x65,0x61,0x32,0x68,0xa2,0x41,0x69,0x11,0x72,0x74,0xa3,0x43,3,0x6b,0x4c,0x6e,
+0x50,0x72,0x76,0x75,0x1d,0x63,0x61,0x73,0x69,0x61,0x6e,0x61,0x6c,0x62,0x61,0x6e,
+0x69,0x61,0x6e,0xa3,0x9f,0x10,0x6d,0xa3,0x76,1,0x61,0x24,0x73,0x71,0x1d,0x64,
+0x69,0x61,0x6e,0x61,0x62,0x6f,0x72,0x69,0x67,0x69,0x6e,0x61,0x6c,0x71,0x10,0x69,
+0xa2,0x68,0x11,0x61,0x6e,0xa3,0x68,3,0x61,0x32,0x65,0x44,0x6f,0x52,0x72,0x10,
+0x73,0xa3,0xbd,1,0x6b,0x26,0x6d,0xa3,0x42,0x11,0x6d,0x61,0xa3,0x76,0x10,0x72,
+0x2c,0x13,0x6f,0x6b,0x65,0x65,0x2d,0x16,0x72,0x61,0x73,0x6d,0x69,0x61,0x6e,0xa3,
+0xbd,6,0x68,0x4a,0x68,0x48,0x6e,0x4e,0x72,0x76,0x76,1,0x65,0x2a,0x73,0x10,
+0x74,0xa3,0x75,0x13,0x73,0x74,0x61,0x6e,0xa3,0x75,0x11,0x6f,0x6d,0xa3,0xa1,0x11,
+0x61,0x74,0x1f,0x6f,0x6c,0x69,0x61,0x6e,0x68,0x69,0x65,0x72,0x6f,0x67,0x6c,0x79,
+0x70,0x68,0x73,0xa3,0x9c,1,0x61,0x3e,0x6d,2,0x65,0x2a,0x69,0xa3,0x74,0x6e,
+0x27,0x13,0x6e,0x69,0x61,0x6e,0x27,0x10,0x62,0x24,0x11,0x69,0x63,0x25,0x64,0x30,
+0x66,0x44,0x67,0x11,0x68,0x62,0xa3,0x9f,0x10,0x6c,1,0x61,0x26,0x6d,0xa3,0xa7,
+0x10,0x6d,0xa3,0xa7,0x11,0x61,0x6b,0xa3,0x93,6,0x6c,0x3c,0x6c,0x52,0x6f,0x56,
+0x72,0x66,0x75,1,0x67,0x30,0x68,1,0x64,0x79,0x69,0x10,0x64,0x79,0x10,0x69,
+0x8e,0x13,0x6e,0x65,0x73,0x65,0x8f,0x11,0x69,0x73,0xa1,0x11,0x70,0x6f,0x2a,0x13,
+0x6d,0x6f,0x66,0x6f,0x2b,0x10,0x61,1,0x68,0x2e,0x69,0x7c,0x12,0x6c,0x6c,0x65,
+0x7d,0xa2,0x41,0x11,0x6d,0x69,0xa3,0x41,0x61,0x48,0x65,0x9c,0x68,1,0x61,0x2a,
+0x6b,0x10,0x73,0xa3,0xa8,0x15,0x69,0x6b,0x73,0x75,0x6b,0x69,0xa3,0xa8,3,0x6c,
+0x3a,0x6d,0x48,0x73,0x54,0x74,1,0x61,0x24,0x6b,0x9f,0x10,0x6b,0x9f,0x10,0x69,
+0x9c,0x13,0x6e,0x65,0x73,0x65,0x9d,0x10,0x75,0xa2,0x82,0x10,0x6d,0xa3,0x82,0x10,
+0x73,0xa2,0x86,0x13,0x61,0x76,0x61,0x68,0xa3,0x86,0x11,0x6e,0x67,0x28,0x12,0x61,
+0x6c,0x69,0x29,3,0x6c,0x42,0x6e,0x90,0x74,0xa2,0x46,0x76,0x24,0x17,0x6f,0x77,
+0x65,0x6c,0x6a,0x61,0x6d,0x6f,0x25,0x22,1,0x65,0x54,0x76,0x28,1,0x73,0x38,
+0x74,0x2a,0x17,0x73,0x79,0x6c,0x6c,0x61,0x62,0x6c,0x65,0x2b,0x16,0x79,0x6c,0x6c,
+0x61,0x62,0x6c,0x65,0x29,0x18,0x61,0x64,0x69,0x6e,0x67,0x6a,0x61,0x6d,0x6f,0x23,
+1,0x61,0x21,0x6f,0x1a,0x74,0x61,0x70,0x70,0x6c,0x69,0x63,0x61,0x62,0x6c,0x65,
+0x21,0x26,0x1a,0x72,0x61,0x69,0x6c,0x69,0x6e,0x67,0x6a,0x61,0x6d,0x6f,0x27,1,
+0x6e,0x2c,0x79,0x22,0x11,0x65,0x73,0x23,0x20,0x10,0x6f,0x21,1,0x6e,0x2c,0x79,
+0x22,0x11,0x65,0x73,0x23,0x20,0x10,0x6f,0x21,2,0x6d,0x30,0x6e,0x3a,0x79,0x22,
+0x11,0x65,0x73,0x23,0x24,0x13,0x61,0x79,0x62,0x65,0x25,0x20,0x10,0x6f,0x21,2,
+0x6d,0x30,0x6e,0x3a,0x79,0x22,0x11,0x65,0x73,0x23,0x24,0x13,0x61,0x79,0x62,0x65,
+0x25,0x20,0x10,0x6f,0x21,0xb,0x72,0x39,0x76,0xc,0x76,0x33,0x78,0x2a,0x7a,0x11,
+0x77,0x6a,0x43,0x10,0x78,0x21,0x72,0x28,0x73,0x50,0x74,0x31,1,0x65,0x24,0x69,
+0x39,0x1e,0x67,0x69,0x6f,0x6e,0x61,0x6c,0x69,0x6e,0x64,0x69,0x63,0x61,0x74,0x6f,
+0x72,0x39,1,0x6d,0x35,0x70,0x18,0x61,0x63,0x69,0x6e,0x67,0x6d,0x61,0x72,0x6b,
+0x35,0x6c,0x1f,0x6c,0x3c,0x6f,0x4a,0x70,1,0x70,0x37,0x72,0x14,0x65,0x70,0x65,
+0x6e,0x64,0x37,0x28,1,0x66,0x2b,0x76,0x2c,0x10,0x74,0x2f,0x13,0x74,0x68,0x65,
+0x72,0x21,0x63,0x4c,0x65,0x64,0x67,1,0x61,0x3a,0x6c,0x19,0x75,0x65,0x61,0x66,
+0x74,0x65,0x72,0x7a,0x77,0x6a,0x41,0x10,0x7a,0x41,2,0x6e,0x23,0x6f,0x24,0x72,
+0x25,0x14,0x6e,0x74,0x72,0x6f,0x6c,0x23,2,0x62,0x34,0x6d,0x4e,0x78,0x26,0x13,
+0x74,0x65,0x6e,0x64,0x27,0x3a,1,0x61,0x24,0x67,0x3d,0x11,0x73,0x65,0x3a,0x12,
+0x67,0x61,0x7a,0x3d,0x3e,0x16,0x6f,0x64,0x69,0x66,0x69,0x65,0x72,0x3f,9,0x6e,
+0x4a,0x6e,0x34,0x6f,0x44,0x73,0x60,0x75,0x94,0x78,0x10,0x78,0x21,0x10,0x75,0x2a,
+0x14,0x6d,0x65,0x72,0x69,0x63,0x2b,1,0x6c,0x2c,0x74,0x12,0x68,0x65,0x72,0x21,
+0x14,0x65,0x74,0x74,0x65,0x72,0x2d,3,0x63,0x36,0x65,0x46,0x70,0x31,0x74,0x32,
+0x12,0x65,0x72,0x6d,0x33,0x3c,0x16,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x3d,0x2e,
+0x10,0x70,0x2f,0x10,0x70,0x34,0x12,0x70,0x65,0x72,0x35,0x61,0x46,0x63,0x52,0x65,
+0x64,0x66,0x72,0x6c,2,0x65,0x2d,0x66,0x3b,0x6f,0x28,0x12,0x77,0x65,0x72,0x29,
+0x10,0x74,0x22,0x12,0x65,0x72,0x6d,0x23,1,0x6c,0x24,0x72,0x37,0x24,0x12,0x6f,
+0x73,0x65,0x25,0x10,0x78,0x38,0x13,0x74,0x65,0x6e,0x64,0x39,0x10,0x6f,0x26,0x13,
+0x72,0x6d,0x61,0x74,0x27,0,0x10,0x6c,0x88,0x72,0x40,0x72,0x36,0x73,0x5e,0x77,
+0x7a,0x78,0x8a,0x7a,0x11,0x77,0x6a,0x4b,1,0x65,0x24,0x69,0x3b,0x1e,0x67,0x69,
+0x6f,0x6e,0x61,0x6c,0x69,0x6e,0x64,0x69,0x63,0x61,0x74,0x6f,0x72,0x3b,1,0x69,
+0x24,0x71,0x3f,0x18,0x6e,0x67,0x6c,0x65,0x71,0x75,0x6f,0x74,0x65,0x3f,0x17,0x73,
+0x65,0x67,0x73,0x70,0x61,0x63,0x65,0x4d,0x10,0x78,0x21,0x6c,0x36,0x6d,0x3c,0x6e,
+0x76,0x6f,0x13,0x74,0x68,0x65,0x72,0x21,1,0x65,0x23,0x66,0x35,3,0x62,0x37,
+0x69,0x28,0x6c,0x29,0x6e,0x2b,0x10,0x64,1,0x6c,0x34,0x6e,0x11,0x75,0x6d,0x2a,
+0x12,0x6c,0x65,0x74,0x37,0x14,0x65,0x74,0x74,0x65,0x72,0x29,2,0x65,0x36,0x6c,
+0x39,0x75,0x2c,0x14,0x6d,0x65,0x72,0x69,0x63,0x2d,0x14,0x77,0x6c,0x69,0x6e,0x65,
+0x39,0x66,0x3f,0x66,0x40,0x67,0x4e,0x68,0x70,0x6b,0x10,0x61,0x26,0x15,0x74,0x61,
+0x6b,0x61,0x6e,0x61,0x27,0x10,0x6f,0x24,0x13,0x72,0x6d,0x61,0x74,0x25,1,0x61,
+0x3a,0x6c,0x19,0x75,0x65,0x61,0x66,0x74,0x65,0x72,0x7a,0x77,0x6a,0x49,0x10,0x7a,
+0x49,1,0x65,0x24,0x6c,0x3d,0x19,0x62,0x72,0x65,0x77,0x6c,0x65,0x74,0x74,0x65,
+0x72,0x3d,0x61,0x86,0x63,0x92,0x64,0x94,0x65,2,0x62,0x44,0x6d,0x5e,0x78,0x2e,
+0x13,0x74,0x65,0x6e,0x64,0x32,0x15,0x6e,0x75,0x6d,0x6c,0x65,0x74,0x2f,0x42,1,
+0x61,0x24,0x67,0x45,0x11,0x73,0x65,0x42,0x12,0x67,0x61,0x7a,0x45,0x46,0x16,0x6f,
+0x64,0x69,0x66,0x69,0x65,0x72,0x47,0x15,0x6c,0x65,0x74,0x74,0x65,0x72,0x23,0x10,
+0x72,0x31,1,0x6f,0x24,0x71,0x41,0x18,0x75,0x62,0x6c,0x65,0x71,0x75,0x6f,0x74,
+0x65,0x41,2,0x63,0x32,0x6e,0x3c,0x6f,0x22,0x12,0x70,0x65,0x6e,0x23,0x24,0x13,
+0x6c,0x6f,0x73,0x65,0x25,0x20,0x12,0x6f,0x6e,0x65,0x21,6,0x6f,0x65,0x6f,0x4a,
+0x72,0x5c,0x74,0x64,0x76,0x1d,0x69,0x73,0x75,0x61,0x6c,0x6f,0x72,0x64,0x65,0x72,
+0x6c,0x65,0x66,0x74,0x3d,0x18,0x76,0x65,0x72,0x73,0x74,0x72,0x75,0x63,0x6b,0x2d,
+0x13,0x69,0x67,0x68,0x74,0x2f,0x11,0x6f,0x70,0x30,0x12,0x61,0x6e,0x64,2,0x62,
+0x32,0x6c,0x62,0x72,0x13,0x69,0x67,0x68,0x74,0x3b,0x14,0x6f,0x74,0x74,0x6f,0x6d,
+0x32,0x12,0x61,0x6e,0x64,1,0x6c,0x2e,0x72,0x13,0x69,0x67,0x68,0x74,0x35,0x12,
+0x65,0x66,0x74,0x3f,0x12,0x65,0x66,0x74,0x36,0x17,0x61,0x6e,0x64,0x72,0x69,0x67,
+0x68,0x74,0x39,0x62,0x2c,0x6c,0x5c,0x6e,0x10,0x61,0x21,0x14,0x6f,0x74,0x74,0x6f,
+0x6d,0x22,0x12,0x61,0x6e,0x64,1,0x6c,0x2e,0x72,0x13,0x69,0x67,0x68,0x74,0x27,
+0x12,0x65,0x66,0x74,0x25,0x12,0x65,0x66,0x74,0x28,0x17,0x61,0x6e,0x64,0x72,0x69,
+0x67,0x68,0x74,0x2b,0xd,0x6e,0xaa,0x72,0x70,0x72,0x92,0x73,0xa2,0x46,0x74,0xa2,
+0x54,0x76,1,0x69,0x60,0x6f,0x12,0x77,0x65,0x6c,0x62,1,0x64,0x3a,0x69,0x19,
+0x6e,0x64,0x65,0x70,0x65,0x6e,0x64,0x65,0x6e,0x74,0x67,0x17,0x65,0x70,0x65,0x6e,
+0x64,0x65,0x6e,0x74,0x65,1,0x72,0x2e,0x73,0x13,0x61,0x72,0x67,0x61,0x61,0x12,
+0x61,0x6d,0x61,0x5f,0x1d,0x65,0x67,0x69,0x73,0x74,0x65,0x72,0x73,0x68,0x69,0x66,
+0x74,0x65,0x72,0x57,0x1e,0x79,0x6c,0x6c,0x61,0x62,0x6c,0x65,0x6d,0x6f,0x64,0x69,
+0x66,0x69,0x65,0x72,0x59,0x12,0x6f,0x6e,0x65,1,0x6c,0x2c,0x6d,0x12,0x61,0x72,
+0x6b,0x5d,0x14,0x65,0x74,0x74,0x65,0x72,0x5b,0x6e,0x3c,0x6f,0x7c,0x70,0x18,0x75,
+0x72,0x65,0x6b,0x69,0x6c,0x6c,0x65,0x72,0x55,1,0x6f,0x4c,0x75,1,0x6b,0x3c,
+0x6d,0x12,0x62,0x65,0x72,0x50,0x15,0x6a,0x6f,0x69,0x6e,0x65,0x72,0x53,0x11,0x74,
+0x61,0x4f,0x16,0x6e,0x6a,0x6f,0x69,0x6e,0x65,0x72,0x4d,0x13,0x74,0x68,0x65,0x72,
+0x21,0x67,0x3e,0x67,0x4a,0x69,0x64,0x6a,0x82,0x6d,0x1d,0x6f,0x64,0x69,0x66,0x79,
+0x69,0x6e,0x67,0x6c,0x65,0x74,0x74,0x65,0x72,0x4b,0x1c,0x65,0x6d,0x69,0x6e,0x61,
+0x74,0x69,0x6f,0x6e,0x6d,0x61,0x72,0x6b,0x45,0x1e,0x6e,0x76,0x69,0x73,0x69,0x62,
+0x6c,0x65,0x73,0x74,0x61,0x63,0x6b,0x65,0x72,0x47,0x14,0x6f,0x69,0x6e,0x65,0x72,
+0x49,0x61,0xa2,0xba,0x62,0xa2,0xc0,0x63,1,0x61,0xa2,0xa2,0x6f,0x16,0x6e,0x73,
+0x6f,0x6e,0x61,0x6e,0x74,0x2a,8,0x6b,0x67,0x6b,0x48,0x6d,0x52,0x70,0x5c,0x73,
+0xa2,0x42,0x77,0x19,0x69,0x74,0x68,0x73,0x74,0x61,0x63,0x6b,0x65,0x72,0x43,0x14,
+0x69,0x6c,0x6c,0x65,0x72,0x35,0x14,0x65,0x64,0x69,0x61,0x6c,0x37,1,0x6c,0x52,
+0x72,0x10,0x65,1,0x63,0x2e,0x66,0x13,0x69,0x78,0x65,0x64,0x3d,0x19,0x65,0x64,
+0x69,0x6e,0x67,0x72,0x65,0x70,0x68,0x61,0x3b,0x18,0x61,0x63,0x65,0x68,0x6f,0x6c,
+0x64,0x65,0x72,0x39,0x10,0x75,1,0x62,0x3e,0x63,0x1b,0x63,0x65,0x65,0x64,0x69,
+0x6e,0x67,0x72,0x65,0x70,0x68,0x61,0x41,0x15,0x6a,0x6f,0x69,0x6e,0x65,0x64,0x3f,
+0x64,0x4c,0x66,0x52,0x68,0x5a,0x69,0x1e,0x6e,0x69,0x74,0x69,0x61,0x6c,0x70,0x6f,
+0x73,0x74,0x66,0x69,0x78,0x65,0x64,0x33,0x12,0x65,0x61,0x64,0x2d,0x13,0x69,0x6e,
+0x61,0x6c,0x2f,0x18,0x65,0x61,0x64,0x6c,0x65,0x74,0x74,0x65,0x72,0x31,0x1d,0x6e,
+0x74,0x69,0x6c,0x6c,0x61,0x74,0x69,0x6f,0x6e,0x6d,0x61,0x72,0x6b,0x29,0x16,0x76,
+0x61,0x67,0x72,0x61,0x68,0x61,0x23,1,0x69,0x4a,0x72,0x10,0x61,0x1f,0x68,0x6d,
+0x69,0x6a,0x6f,0x69,0x6e,0x69,0x6e,0x67,0x6e,0x75,0x6d,0x62,0x65,0x72,0x27,0x12,
+0x6e,0x64,0x75,0x25,2,0x72,0x38,0x74,0x46,0x75,0x26,0x15,0x70,0x72,0x69,0x67,
+0x68,0x74,0x27,0x20,0x15,0x6f,0x74,0x61,0x74,0x65,0x64,0x21,1,0x72,0x24,0x75,
+0x25,0x22,0x18,0x61,0x6e,0x73,0x66,0x6f,0x72,0x6d,0x65,0x64,1,0x72,0x32,0x75,
+0x15,0x70,0x72,0x69,0x67,0x68,0x74,0x25,0x15,0x6f,0x74,0x61,0x74,0x65,0x64,0x23,
+0xd,0x6e,0xc1,0x86,0x73,0xa8,0x73,0x4c,0x74,0xa2,0x76,0x75,0xa2,0x83,0x7a,0xd8,
+0x70,0,2,0x6c,0xd9,0x20,0,0x70,0xd9,0x40,0,0x73,0xc3,0,0xfe,0xf,
+0,0,0,7,0x6f,0x3c,0x6f,0xff,8,0,0,0,0x70,0x3a,0x75,0x6e,
+0x79,0x13,0x6d,0x62,0x6f,0x6c,0xff,0xf,0,0,0,0x11,0x61,0x63,1,0x65,
+0x34,0x69,0x15,0x6e,0x67,0x6d,0x61,0x72,0x6b,0xa5,0,0x18,0x73,0x65,0x70,0x61,
+0x72,0x61,0x74,0x6f,0x72,0xc3,0,0x16,0x72,0x72,0x6f,0x67,0x61,0x74,0x65,0xe1,
+0,0,0x63,0xff,2,0,0,0,0x65,0x38,0x6b,0xff,4,0,0,0,
+0x6d,0xff,1,0,0,0,0x16,0x70,0x61,0x72,0x61,0x74,0x6f,0x72,0xd9,0x70,
+0,0x1d,0x69,0x74,0x6c,0x65,0x63,0x61,0x73,0x65,0x6c,0x65,0x74,0x74,0x65,0x72,
+0x31,1,0x6e,0x40,0x70,0x1c,0x70,0x65,0x72,0x63,0x61,0x73,0x65,0x6c,0x65,0x74,
+0x74,0x65,0x72,0x25,0x17,0x61,0x73,0x73,0x69,0x67,0x6e,0x65,0x64,0x23,0x6e,0xa2,
+0x69,0x6f,0xa2,0x89,0x70,0xfe,0x30,0xf8,0,0,9,0x69,0x33,0x69,0xff,0x10,
+0,0,0,0x6f,0xfd,0x80,0,0,0x72,0x54,0x73,0xf9,0,0,0x75,0x12,
+0x6e,0x63,0x74,0xfe,0x30,0xf8,0,0,0x15,0x75,0x61,0x74,0x69,0x6f,0x6e,0xff,
+0x30,0xf8,0,0,0x17,0x69,0x76,0x61,0x74,0x65,0x75,0x73,0x65,0xdd,0,0,
+0x61,0x48,0x63,0xfd,0x40,0,0,0x64,0xe9,0,0,0x65,0xfd,0x20,0,0,
+0x66,0xff,0x20,0,0,0,0x1f,0x72,0x61,0x67,0x72,0x61,0x70,0x68,0x73,0x65,
+0x70,0x61,0x72,0x61,0x74,0x6f,0x72,0xd9,0x40,0,0xbe,0,3,0x64,0xa7,0,
+0x6c,0xab,0,0x6f,0x30,0x75,0x13,0x6d,0x62,0x65,0x72,0xbf,0,0xb2,0,0x1b,
+0x6e,0x73,0x70,0x61,0x63,0x69,0x6e,0x67,0x6d,0x61,0x72,0x6b,0xa1,1,0x70,0x92,
+0x74,0x12,0x68,0x65,0x72,0xe6,0x80,1,3,0x6c,0x40,0x6e,0x4a,0x70,0x56,0x73,
+0x14,0x79,0x6d,0x62,0x6f,0x6c,0xff,8,0,0,0,0x14,0x65,0x74,0x74,0x65,
+0x72,0x61,0x14,0x75,0x6d,0x62,0x65,0x72,0xb3,0,0x19,0x75,0x6e,0x63,0x74,0x75,
+0x61,0x74,0x69,0x6f,0x6e,0xfd,0x80,0,0,0x1c,0x65,0x6e,0x70,0x75,0x6e,0x63,
+0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0xf9,0,0,0x66,0xc0,0xc4,0x66,0xa2,0x47,
+0x69,0xa2,0x64,0x6c,0xa2,0x79,0x6d,0xa4,0xc0,4,0x61,0x6c,0x63,0xa5,0,0x65,
+0xa3,0x80,0x6e,0xa1,0x6f,0x15,0x64,0x69,0x66,0x69,0x65,0x72,1,0x6c,0x38,0x73,
+0x14,0x79,0x6d,0x62,0x6f,0x6c,0xff,4,0,0,0,0x14,0x65,0x74,0x74,0x65,
+0x72,0x41,1,0x72,0x3c,0x74,0x16,0x68,0x73,0x79,0x6d,0x62,0x6f,0x6c,0xff,1,
+0,0,0,0x10,0x6b,0xa5,0xc0,1,0x69,0x32,0x6f,0x13,0x72,0x6d,0x61,0x74,
+0xdb,0,0,0x1d,0x6e,0x61,0x6c,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,
+0x6f,0x6e,0xff,0x20,0,0,0,0x10,0x6e,0x1f,0x69,0x74,0x69,0x61,0x6c,0x70,
+0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0xff,0x10,0,0,0,0x9c,
+7,0x6d,0x18,0x6d,0x41,0x6f,0x28,0x74,0x31,0x75,0x25,0x60,0x1c,0x77,0x65,0x72,
+0x63,0x61,0x73,0x65,0x6c,0x65,0x74,0x74,0x65,0x72,0x29,0x63,0x3d,0x65,0x28,0x69,
+0x42,0x6c,0x29,0x13,0x74,0x74,0x65,0x72,0x9c,0x15,0x6e,0x75,0x6d,0x62,0x65,0x72,
+0xab,0,0x1a,0x6e,0x65,0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x6f,0x72,0xd9,0x20,
+0,0x63,0x46,0x64,0xa2,0x96,0x65,0x1b,0x6e,0x63,0x6c,0x6f,0x73,0x69,0x6e,0x67,
+0x6d,0x61,0x72,0x6b,0xa3,0x80,0xe6,0x80,1,7,0x6e,0x57,0x6e,0x52,0x6f,0x5e,
+0x73,0xe1,0,0,0x75,0x1b,0x72,0x72,0x65,0x6e,0x63,0x79,0x73,0x79,0x6d,0x62,
+0x6f,0x6c,0xff,2,0,0,0,0x22,0x12,0x74,0x72,0x6c,0xd9,0x80,0,0xdc,
+0,0,1,0x6d,0x62,0x6e,1,0x6e,0x30,0x74,0x12,0x72,0x6f,0x6c,0xd9,0x80,
+0,0x1f,0x65,0x63,0x74,0x6f,0x72,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,
+0x6f,0x6e,0xfd,0x40,0,0,0x19,0x62,0x69,0x6e,0x69,0x6e,0x67,0x6d,0x61,0x72,
+0x6b,0xa5,0xc0,0x61,0x58,0x63,0xd9,0x80,0,0x66,0xdb,0,0,0x6c,0x1d,0x6f,
+0x73,0x65,0x70,0x75,0x6e,0x63,0x74,0x75,0x61,0x74,0x69,0x6f,0x6e,0xfd,0x20,0,
+0,0x18,0x73,0x65,0x64,0x6c,0x65,0x74,0x74,0x65,0x72,0x3d,2,0x61,0x32,0x65,
+0x50,0x69,0x12,0x67,0x69,0x74,0xa7,0,0x1c,0x73,0x68,0x70,0x75,0x6e,0x63,0x74,
+0x75,0x61,0x74,0x69,0x6f,0x6e,0xe9,0,0,0x1a,0x63,0x69,0x6d,0x61,0x6c,0x6e,
+0x75,0x6d,0x62,0x65,0x72,0xa7,0
};
-const char PropNameData::nameGroups[23100]={
+const char PropNameData::nameGroups[23338]={
2,'A','l','p','h','a',0,'A','l','p','h','a','b','e','t','i','c',0,
4,'N',0,'N','o',0,'F',0,'F','a','l','s','e',0,4,'Y',0,'Y','e','s',0,'T',0,'T','r','u','e',0,
2,'N','R',0,'N','o','t','_','R','e','o','r','d','e','r','e','d',0,
@@ -1176,6 +1184,10 @@ const char PropNameData::nameGroups[23100]={
2,'R','G','I','_','E','m','o','j','i','_','Z','W','J','_','S','e','q','u','e','n','c','e',0,
'R','G','I','_','E','m','o','j','i','_','Z','W','J','_','S','e','q','u','e','n','c','e',0,
2,'R','G','I','_','E','m','o','j','i',0,'R','G','I','_','E','m','o','j','i',0,
+2,'I','D','S','U',0,'I','D','S','_','U','n','a','r','y','_','O','p','e','r','a','t','o','r',0,
+2,'I','D','_','C','o','m','p','a','t','_','M','a','t','h','_','S','t','a','r','t',0,'I','D','_','C','o','m','p','a','t','_',
+'M','a','t','h','_','S','t','a','r','t',0,2,'I','D','_','C','o','m','p','a','t','_','M','a','t','h','_','C','o','n','t','i',
+'n','u','e',0,'I','D','_','C','o','m','p','a','t','_','M','a','t','h','_','C','o','n','t','i','n','u','e',0,
2,'b','c',0,'B','i','d','i','_','C','l','a','s','s',0,2,'L',0,'L','e','f','t','_','T','o','_','R','i','g','h','t',0,
2,'R',0,'R','i','g','h','t','_','T','o','_','L','e','f','t',0,
2,'E','N',0,'E','u','r','o','p','e','a','n','_','N','u','m','b','e','r',0,
@@ -1568,9 +1580,11 @@ const char PropNameData::nameGroups[23100]={
'e','n','d','e','d','_','A',0,2,'K','a','k','t','o','v','i','k','_','N','u','m','e','r','a','l','s',0,
'K','a','k','t','o','v','i','k','_','N','u','m','e','r','a','l','s',0,
2,'K','a','w','i',0,'K','a','w','i',0,2,'N','a','g','_','M','u','n','d','a','r','i',0,
-'N','a','g','_','M','u','n','d','a','r','i',0,2,'c','c','c',0,'C','a','n','o','n','i','c','a','l','_','C','o','m','b','i',
-'n','i','n','g','_','C','l','a','s','s',0,2,'d','t',0,'D','e','c','o','m','p','o','s','i','t','i','o','n','_','T','y','p',
-'e',0,3,'N','o','n','e',0,'N','o','n','e',0,'n','o','n','e',0,
+'N','a','g','_','M','u','n','d','a','r','i',0,2,'C','J','K','_','E','x','t','_','I',0,'C','J','K','_','U','n','i','f','i',
+'e','d','_','I','d','e','o','g','r','a','p','h','s','_','E','x','t','e','n','s','i','o','n','_','I',0,
+2,'c','c','c',0,'C','a','n','o','n','i','c','a','l','_','C','o','m','b','i','n','i','n','g','_','C','l','a','s','s',0,
+2,'d','t',0,'D','e','c','o','m','p','o','s','i','t','i','o','n','_','T','y','p','e',0,
+3,'N','o','n','e',0,'N','o','n','e',0,'n','o','n','e',0,
3,'C','a','n',0,'C','a','n','o','n','i','c','a','l',0,'c','a','n',0,
3,'C','o','m',0,'C','o','m','p','a','t',0,'c','o','m',0,
3,'E','n','c',0,'C','i','r','c','l','e',0,'e','n','c',0,
@@ -1739,7 +1753,11 @@ const char PropNameData::nameGroups[23100]={
's','i','s',0,2,'C','J',0,'C','o','n','d','i','t','i','o','n','a','l','_','J','a','p','a','n','e','s','e','_','S','t','a',
'r','t','e','r',0,2,'H','L',0,'H','e','b','r','e','w','_','L','e','t','t','e','r',0,
2,'E','B',0,'E','_','B','a','s','e',0,2,'E','M',0,'E','_','M','o','d','i','f','i','e','r',0,
-2,'Z','W','J',0,'Z','W','J',0,2,'n','t',0,'N','u','m','e','r','i','c','_','T','y','p','e',0,
+2,'Z','W','J',0,'Z','W','J',0,2,'A','K',0,'A','k','s','a','r','a',0,
+2,'A','P',0,'A','k','s','a','r','a','_','P','r','e','b','a','s','e',0,
+2,'A','S',0,'A','k','s','a','r','a','_','S','t','a','r','t',0,
+2,'V','F',0,'V','i','r','a','m','a','_','F','i','n','a','l',0,
+2,'V','I',0,'V','i','r','a','m','a',0,2,'n','t',0,'N','u','m','e','r','i','c','_','T','y','p','e',0,
2,'N','o','n','e',0,'N','o','n','e',0,2,'D','e',0,'D','e','c','i','m','a','l',0,
2,'D','i',0,'D','i','g','i','t',0,2,'N','u',0,'N','u','m','e','r','i','c',0,
2,'s','c',0,'S','c','r','i','p','t',0,2,'Z','y','y','y',0,'C','o','m','m','o','n',0,
diff --git a/Build/source/libs/icu/icu-src/source/common/propsvec.cpp b/Build/source/libs/icu/icu-src/source/common/propsvec.cpp
index e5caa4b9d2c..18cc3e8cd8e 100644
--- a/Build/source/libs/icu/icu-src/source/common/propsvec.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/propsvec.cpp
@@ -47,21 +47,21 @@ upvec_open(int32_t columns, UErrorCode *pErrorCode) {
uint32_t cp;
if(U_FAILURE(*pErrorCode)) {
- return NULL;
+ return nullptr;
}
if(columns<1) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
columns+=2; /* count range start and limit columns */
pv=(UPropsVectors *)uprv_malloc(sizeof(UPropsVectors));
v=(uint32_t *)uprv_malloc(UPVEC_INITIAL_ROWS*columns*4);
- if(pv==NULL || v==NULL) {
+ if(pv==nullptr || v==nullptr) {
uprv_free(pv);
uprv_free(v);
*pErrorCode=U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
uprv_memset(pv, 0, sizeof(UPropsVectors));
pv->v=v;
@@ -85,7 +85,7 @@ upvec_open(int32_t columns, UErrorCode *pErrorCode) {
U_CAPI void U_EXPORT2
upvec_close(UPropsVectors *pv) {
- if(pv!=NULL) {
+ if(pv!=nullptr) {
uprv_free(pv->v);
uprv_free(pv);
}
@@ -165,7 +165,7 @@ upvec_setValue(UPropsVectors *pv,
if(U_FAILURE(*pErrorCode)) {
return;
}
- if( pv==NULL ||
+ if( pv==nullptr ||
start<0 || start>end || end>UPVEC_MAX_CP ||
column<0 || column>=(pv->columns-2)
) {
@@ -216,7 +216,7 @@ upvec_setValue(UPropsVectors *pv,
return;
}
newVectors=(uint32_t *)uprv_malloc(newMaxRows*columns*4);
- if(newVectors==NULL) {
+ if(newVectors==nullptr) {
*pErrorCode=U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -296,15 +296,15 @@ upvec_getRow(const UPropsVectors *pv, int32_t rowIndex,
int32_t columns;
if(pv->isCompacted || rowIndex<0 || rowIndex>=pv->rows) {
- return NULL;
+ return nullptr;
}
columns=pv->columns;
row=pv->v+rowIndex*columns;
- if(pRangeStart!=NULL) {
+ if(pRangeStart!=nullptr) {
*pRangeStart=(UChar32)row[0];
}
- if(pRangeEnd!=NULL) {
+ if(pRangeEnd!=nullptr) {
*pRangeEnd=(UChar32)row[1]-1;
}
return row+2;
@@ -342,7 +342,7 @@ upvec_compact(UPropsVectors *pv, UPVecCompactHandler *handler, void *context, UE
if(U_FAILURE(*pErrorCode)) {
return;
}
- if(handler==NULL) {
+ if(handler==nullptr) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return;
}
@@ -437,12 +437,12 @@ upvec_compact(UPropsVectors *pv, UPVecCompactHandler *handler, void *context, UE
U_CAPI const uint32_t * U_EXPORT2
upvec_getArray(const UPropsVectors *pv, int32_t *pRows, int32_t *pColumns) {
if(!pv->isCompacted) {
- return NULL;
+ return nullptr;
}
- if(pRows!=NULL) {
+ if(pRows!=nullptr) {
*pRows=pv->rows;
}
- if(pColumns!=NULL) {
+ if(pColumns!=nullptr) {
*pColumns=pv->columns-2;
}
return pv->v;
@@ -455,23 +455,23 @@ upvec_cloneArray(const UPropsVectors *pv,
int32_t byteLength;
if(U_FAILURE(*pErrorCode)) {
- return NULL;
+ return nullptr;
}
if(!pv->isCompacted) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
byteLength=pv->rows*(pv->columns-2)*4;
clonedArray=(uint32_t *)uprv_malloc(byteLength);
- if(clonedArray==NULL) {
+ if(clonedArray==nullptr) {
*pErrorCode=U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
uprv_memcpy(clonedArray, pv->v, byteLength);
- if(pRows!=NULL) {
+ if(pRows!=nullptr) {
*pRows=pv->rows;
}
- if(pColumns!=NULL) {
+ if(pColumns!=nullptr) {
*pColumns=pv->columns-2;
}
return clonedArray;
@@ -479,12 +479,12 @@ upvec_cloneArray(const UPropsVectors *pv,
U_CAPI UTrie2 * U_EXPORT2
upvec_compactToUTrie2WithRowIndexes(UPropsVectors *pv, UErrorCode *pErrorCode) {
- UPVecToUTrie2Context toUTrie2={ NULL, 0, 0, 0 };
+ UPVecToUTrie2Context toUTrie2={ nullptr, 0, 0, 0 };
upvec_compact(pv, upvec_compactToUTrie2Handler, &toUTrie2, pErrorCode);
utrie2_freeze(toUTrie2.trie, UTRIE2_16_VALUE_BITS, pErrorCode);
if(U_FAILURE(*pErrorCode)) {
utrie2_close(toUTrie2.trie);
- toUTrie2.trie=NULL;
+ toUTrie2.trie=nullptr;
}
return toUTrie2.trie;
}
diff --git a/Build/source/libs/icu/icu-src/source/common/punycode.cpp b/Build/source/libs/icu/icu-src/source/common/punycode.cpp
index f95722da27d..7ebdebc1888 100644
--- a/Build/source/libs/icu/icu-src/source/common/punycode.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/punycode.cpp
@@ -179,21 +179,21 @@ constexpr int32_t DECODE_MAX_CHARS=2000;
// encode
U_CAPI int32_t
-u_strToPunycode(const UChar *src, int32_t srcLength,
- UChar *dest, int32_t destCapacity,
+u_strToPunycode(const char16_t *src, int32_t srcLength,
+ char16_t *dest, int32_t destCapacity,
const UBool *caseFlags,
UErrorCode *pErrorCode) {
int32_t cpBuffer[ENCODE_MAX_CODE_UNITS];
int32_t n, delta, handledCPCount, basicLength, destLength, bias, j, m, q, k, t, srcCPCount;
- UChar c, c2;
+ char16_t c, c2;
/* argument checking */
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return 0;
}
- if(src==NULL || srcLength<-1 || (dest==NULL && destCapacity!=0)) {
+ if(src==nullptr || srcLength<-1 || (dest==nullptr && destCapacity!=0)) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -221,13 +221,13 @@ u_strToPunycode(const UChar *src, int32_t srcLength,
cpBuffer[srcCPCount++]=0;
if(destLength<destCapacity) {
dest[destLength]=
- caseFlags!=NULL ?
+ caseFlags!=nullptr ?
asciiCaseMap((char)c, caseFlags[j]) :
(char)c;
}
++destLength;
} else {
- n=(caseFlags!=NULL && caseFlags[j])<<31L;
+ n=(caseFlags!=nullptr && caseFlags[j])<<31L;
if(U16_IS_SINGLE(c)) {
n|=c;
} else if(U16_IS_LEAD(c) && U16_IS_TRAIL(c2=src[j+1])) {
@@ -249,13 +249,13 @@ u_strToPunycode(const UChar *src, int32_t srcLength,
cpBuffer[srcCPCount++]=0;
if(destLength<destCapacity) {
dest[destLength]=
- caseFlags!=NULL ?
+ caseFlags!=nullptr ?
asciiCaseMap((char)c, caseFlags[j]) :
(char)c;
}
++destLength;
} else {
- n=(caseFlags!=NULL && caseFlags[j])<<31L;
+ n=(caseFlags!=nullptr && caseFlags[j])<<31L;
if(U16_IS_SINGLE(c)) {
n|=c;
} else if(U16_IS_LEAD(c) && (j+1)<srcLength && U16_IS_TRAIL(c2=src[j+1])) {
@@ -371,20 +371,20 @@ u_strToPunycode(const UChar *src, int32_t srcLength,
// decode
U_CAPI int32_t
-u_strFromPunycode(const UChar *src, int32_t srcLength,
- UChar *dest, int32_t destCapacity,
+u_strFromPunycode(const char16_t *src, int32_t srcLength,
+ char16_t *dest, int32_t destCapacity,
UBool *caseFlags,
UErrorCode *pErrorCode) {
int32_t n, destLength, i, bias, basicLength, j, in, oldi, w, k, digit, t,
destCPCount, firstSupplementaryIndex, cpLength;
- UChar b;
+ char16_t b;
/* argument checking */
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return 0;
}
- if(src==NULL || srcLength<-1 || (dest==NULL && destCapacity!=0)) {
+ if(src==nullptr || srcLength<-1 || (dest==nullptr && destCapacity!=0)) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -421,9 +421,9 @@ u_strFromPunycode(const UChar *src, int32_t srcLength,
}
if(j<destCapacity) {
- dest[j]=(UChar)b;
+ dest[j]=(char16_t)b;
- if(caseFlags!=NULL) {
+ if(caseFlags!=nullptr) {
caseFlags[j]=IS_BASIC_UPPERCASE(b);
}
}
@@ -525,7 +525,7 @@ u_strFromPunycode(const UChar *src, int32_t srcLength,
/* Insert n at position i of the output: */
cpLength=U16_LENGTH(n);
- if(dest!=NULL && ((destLength+cpLength)<=destCapacity)) {
+ if(dest!=nullptr && ((destLength+cpLength)<=destCapacity)) {
int32_t codeUnitIndex;
/*
@@ -550,12 +550,12 @@ u_strFromPunycode(const UChar *src, int32_t srcLength,
U16_FWD_N(dest, codeUnitIndex, destLength, i-codeUnitIndex);
}
- /* use the UChar index codeUnitIndex instead of the code point index i */
+ /* use the char16_t index codeUnitIndex instead of the code point index i */
if(codeUnitIndex<destLength) {
uprv_memmove(dest+codeUnitIndex+cpLength,
dest+codeUnitIndex,
(destLength-codeUnitIndex)*U_SIZEOF_UCHAR);
- if(caseFlags!=NULL) {
+ if(caseFlags!=nullptr) {
uprv_memmove(caseFlags+codeUnitIndex+cpLength,
caseFlags+codeUnitIndex,
destLength-codeUnitIndex);
@@ -563,13 +563,13 @@ u_strFromPunycode(const UChar *src, int32_t srcLength,
}
if(cpLength==1) {
/* BMP, insert one code unit */
- dest[codeUnitIndex]=(UChar)n;
+ dest[codeUnitIndex]=(char16_t)n;
} else {
/* supplementary character, insert two code units */
dest[codeUnitIndex]=U16_LEAD(n);
dest[codeUnitIndex+1]=U16_TRAIL(n);
}
- if(caseFlags!=NULL) {
+ if(caseFlags!=nullptr) {
/* Case of last character determines uppercase flag: */
caseFlags[codeUnitIndex]=IS_BASIC_UPPERCASE(src[in-1]);
if(cpLength==2) {
diff --git a/Build/source/libs/icu/icu-src/source/common/putil.cpp b/Build/source/libs/icu/icu-src/source/common/putil.cpp
index f27c8737d21..ab25f3b996d 100644
--- a/Build/source/libs/icu/icu-src/source/common/putil.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/putil.cpp
@@ -248,7 +248,7 @@ UBool fakeClock_set = false; /** True if fake clock has spun up **/
static UDate getUTCtime_real() {
struct timeval posixTime;
- gettimeofday(&posixTime, NULL);
+ gettimeofday(&posixTime, nullptr);
return (UDate)(((int64_t)posixTime.tv_sec * U_MILLIS_PER_SECOND) + (posixTime.tv_usec/1000));
}
@@ -258,7 +258,7 @@ static UDate getUTCtime_fake() {
if(!fakeClock_set) {
UDate real = getUTCtime_real();
const char *fake_start = getenv("U_FAKETIME_START");
- if((fake_start!=NULL) && (fake_start[0]!=0)) {
+ if((fake_start!=nullptr) && (fake_start[0]!=0)) {
sscanf(fake_start,"%lf",&fakeClock_t0);
fakeClock_dt = fakeClock_t0 - real;
fprintf(stderr,"U_DEBUG_FAKETIME was set at compile time, so the ICU clock will start at a preset value\n"
@@ -319,7 +319,7 @@ uprv_getRawUTCtime()
#if HAVE_GETTIMEOFDAY
struct timeval posixTime;
- gettimeofday(&posixTime, NULL);
+ gettimeofday(&posixTime, nullptr);
return (UDate)(((int64_t)posixTime.tv_sec * U_MILLIS_PER_SECOND) + (posixTime.tv_usec/1000));
#else
time_t epochtime;
@@ -580,7 +580,7 @@ uprv_trunc(double d)
* type of arbitrary bit length.
*/
U_CAPI double U_EXPORT2
-uprv_maxMantissa(void)
+uprv_maxMantissa()
{
return pow(2.0, DBL_MANT_DIG + 1.0) - 1.0;
}
@@ -612,11 +612,11 @@ uprv_maximumPtr(void * base)
* Unlike other operating systems, the pointer model isn't determined at
* compile time on i5/OS.
*/
- if ((base != NULL) && (_TESTPTR(base, _C_TERASPACE_CHECK))) {
+ if ((base != nullptr) && (_TESTPTR(base, _C_TERASPACE_CHECK))) {
/* if it is a TERASPACE pointer the max is 2GB - 4k */
return ((void *)(((char *)base)-((uint32_t)(base))+((uint32_t)0x7fffefff)));
}
- /* otherwise 16MB since NULL ptr is not checkable or the ptr is not TERASPACE */
+ /* otherwise 16MB since nullptr ptr is not checkable or the ptr is not TERASPACE */
return ((void *)(((char *)base)-((uint32_t)(base))+((uint32_t)0xffefff)));
#else
@@ -722,7 +722,7 @@ extern U_IMPORT char *U_TZNAME[];
#include <dirent.h> /* Needed to search through system timezone files */
#endif
static char gTimeZoneBuffer[PATH_MAX];
-static char *gTimeZoneBufferPtr = NULL;
+static const char *gTimeZoneBufferPtr = nullptr;
#endif
#if !U_PLATFORM_USES_ONLY_WIN32_API
@@ -879,7 +879,7 @@ static const char* remapShortTimeZone(const char *stdID, const char *dstID, int3
return OFFSET_ZONE_MAPPINGS[idx].olsonID;
}
}
- return NULL;
+ return nullptr;
}
#endif
@@ -907,14 +907,14 @@ static UBool compareBinaryFiles(const char* defaultTZFileName, const char* TZFil
char bufferFile[MAX_READ_SIZE];
UBool result = true;
- if (tzInfo->defaultTZFilePtr == NULL) {
+ if (tzInfo->defaultTZFilePtr == nullptr) {
tzInfo->defaultTZFilePtr = fopen(defaultTZFileName, "r");
}
file = fopen(TZFileName, "r");
tzInfo->defaultTZPosition = 0; /* reset position to begin search */
- if (file != NULL && tzInfo->defaultTZFilePtr != NULL) {
+ if (file != nullptr && tzInfo->defaultTZFilePtr != nullptr) {
/* First check that the file size are equal. */
if (tzInfo->defaultTZFileSize == 0) {
fseek(tzInfo->defaultTZFilePtr, 0, SEEK_END);
@@ -930,7 +930,7 @@ static UBool compareBinaryFiles(const char* defaultTZFileName, const char* TZFil
/* Store the data from the files in separate buffers and
* compare each byte to determine equality.
*/
- if (tzInfo->defaultTZBuffer == NULL) {
+ if (tzInfo->defaultTZBuffer == nullptr) {
rewind(tzInfo->defaultTZFilePtr);
tzInfo->defaultTZBuffer = (char*)uprv_malloc(sizeof(char) * tzInfo->defaultTZFileSize);
sizeFileRead = fread(tzInfo->defaultTZBuffer, 1, tzInfo->defaultTZFileSize, tzInfo->defaultTZFilePtr);
@@ -953,7 +953,7 @@ static UBool compareBinaryFiles(const char* defaultTZFileName, const char* TZFil
result = false;
}
- if (file != NULL) {
+ if (file != nullptr) {
fclose(file);
}
@@ -964,17 +964,17 @@ static UBool compareBinaryFiles(const char* defaultTZFileName, const char* TZFil
/* dirent also lists two entries: "." and ".." that we can safely ignore. */
#define SKIP1 "."
#define SKIP2 ".."
-static UBool U_CALLCONV putil_cleanup(void);
-static CharString *gSearchTZFileResult = NULL;
+static UBool U_CALLCONV putil_cleanup();
+static CharString *gSearchTZFileResult = nullptr;
/*
* This method recursively traverses the directory given for a matching TZ file and returns the first match.
* This function is not thread safe - it uses a global, gSearchTZFileResult, to hold its results.
*/
static char* searchForTZFile(const char* path, DefaultTZInfo* tzInfo) {
- DIR* dirp = NULL;
- struct dirent* dirEntry = NULL;
- char* result = NULL;
+ DIR* dirp = nullptr;
+ struct dirent* dirEntry = nullptr;
+ char* result = nullptr;
UErrorCode status = U_ZERO_ERROR;
/* Save the current path */
@@ -984,20 +984,20 @@ static char* searchForTZFile(const char* path, DefaultTZInfo* tzInfo) {
}
dirp = opendir(path);
- if (dirp == NULL) {
+ if (dirp == nullptr) {
goto cleanupAndReturn;
}
- if (gSearchTZFileResult == NULL) {
+ if (gSearchTZFileResult == nullptr) {
gSearchTZFileResult = new CharString;
- if (gSearchTZFileResult == NULL) {
+ if (gSearchTZFileResult == nullptr) {
goto cleanupAndReturn;
}
ucln_common_registerCleanup(UCLN_COMMON_PUTIL, putil_cleanup);
}
/* Check each entry in the directory. */
- while((dirEntry = readdir(dirp)) != NULL) {
+ while((dirEntry = readdir(dirp)) != nullptr) {
const char* dirName = dirEntry->d_name;
if (uprv_strcmp(dirName, SKIP1) != 0 && uprv_strcmp(dirName, SKIP2) != 0
&& uprv_strcmp(TZFILE_SKIP, dirName) != 0 && uprv_strcmp(TZFILE_SKIP2, dirName) != 0) {
@@ -1008,8 +1008,8 @@ static char* searchForTZFile(const char* path, DefaultTZInfo* tzInfo) {
break;
}
- DIR* subDirp = NULL;
- if ((subDirp = opendir(newpath.data())) != NULL) {
+ DIR* subDirp = nullptr;
+ if ((subDirp = opendir(newpath.data())) != nullptr) {
/* If this new path is a directory, make a recursive call with the newpath. */
closedir(subDirp);
newpath.append('/', status);
@@ -1021,11 +1021,11 @@ static char* searchForTZFile(const char* path, DefaultTZInfo* tzInfo) {
Have to get out here. Otherwise, we'd keep looking
and return the first match in the top-level directory
if there's a match in the top-level. If not, this function
- would return NULL and set gTimeZoneBufferPtr to NULL in initDefault().
+ would return nullptr and set gTimeZoneBufferPtr to nullptr in initDefault().
It worked without this in most cases because we have a fallback of calling
localtime_r to figure out the default timezone.
*/
- if (result != NULL)
+ if (result != nullptr)
break;
} else {
if(compareBinaryFiles(TZDEFAULT, newpath.data(), tzInfo)) {
@@ -1074,7 +1074,7 @@ static void u_property_read(void* cookie, const char* name, const char* value,
#endif
U_CAPI void U_EXPORT2
-uprv_tzname_clear_cache(void)
+uprv_tzname_clear_cache()
{
#if U_PLATFORM == U_PF_ANDROID
/* Android's timezone is stored in system property. */
@@ -1104,7 +1104,7 @@ uprv_tzname_clear_cache(void)
#endif
#if defined(CHECK_LOCALTIME_LINK) && !defined(DEBUG_SKIP_LOCALTIME_LINK)
- gTimeZoneBufferPtr = NULL;
+ gTimeZoneBufferPtr = nullptr;
#endif
}
@@ -1112,11 +1112,11 @@ U_CAPI const char* U_EXPORT2
uprv_tzname(int n)
{
(void)n; // Avoid unreferenced parameter warning.
- const char *tzid = NULL;
+ const char *tzid = nullptr;
#if U_PLATFORM_USES_ONLY_WIN32_API
tzid = uprv_detectWindowsTimeZone();
- if (tzid != NULL) {
+ if (tzid != nullptr) {
return tzid;
}
@@ -1134,7 +1134,7 @@ uprv_tzname(int n)
int ret;
tzid = getenv("TZFILE");
- if (tzid != NULL) {
+ if (tzid != nullptr) {
return tzid;
}
#endif*/
@@ -1146,7 +1146,7 @@ uprv_tzname(int n)
#else
tzid = getenv("TZ");
#endif
- if (tzid != NULL && isValidOlsonID(tzid)
+ if (tzid != nullptr && isValidOlsonID(tzid)
#if U_PLATFORM == U_PF_SOLARIS
/* Don't misinterpret TZ "localtime" on Solaris as a time zone name. */
&& uprv_strcmp(tzid, TZ_ENV_CHECK) != 0
@@ -1165,46 +1165,61 @@ uprv_tzname(int n)
#if defined(CHECK_LOCALTIME_LINK) && !defined(DEBUG_SKIP_LOCALTIME_LINK)
/* Caller must handle threading issues */
- if (gTimeZoneBufferPtr == NULL) {
+ if (gTimeZoneBufferPtr == nullptr) {
/*
This is a trick to look at the name of the link to get the Olson ID
because the tzfile contents is underspecified.
This isn't guaranteed to work because it may not be a symlink.
*/
- int32_t ret = (int32_t)readlink(TZDEFAULT, gTimeZoneBuffer, sizeof(gTimeZoneBuffer)-1);
- if (0 < ret) {
+ char *ret = realpath(TZDEFAULT, gTimeZoneBuffer);
+ if (ret != nullptr && uprv_strcmp(TZDEFAULT, gTimeZoneBuffer) != 0) {
int32_t tzZoneInfoTailLen = uprv_strlen(TZZONEINFOTAIL);
- gTimeZoneBuffer[ret] = 0;
- char * tzZoneInfoTailPtr = uprv_strstr(gTimeZoneBuffer, TZZONEINFOTAIL);
-
- if (tzZoneInfoTailPtr != NULL
- && isValidOlsonID(tzZoneInfoTailPtr + tzZoneInfoTailLen))
- {
- return (gTimeZoneBufferPtr = tzZoneInfoTailPtr + tzZoneInfoTailLen);
+ const char *tzZoneInfoTailPtr = uprv_strstr(gTimeZoneBuffer, TZZONEINFOTAIL);
+ // MacOS14 has the realpath as something like
+ // /usr/share/zoneinfo.default/Australia/Melbourne
+ // which will not have "/zoneinfo/" in the path.
+ // Therefore if we fail, we fall back to read the link which is
+ // /var/db/timezone/zoneinfo/Australia/Melbourne
+ // We also fall back to reading the link if the realpath leads to something like
+ // /usr/share/zoneinfo/posixrules
+ if (tzZoneInfoTailPtr == nullptr ||
+ uprv_strcmp(tzZoneInfoTailPtr + tzZoneInfoTailLen, "posixrules") == 0) {
+ ssize_t size = readlink(TZDEFAULT, gTimeZoneBuffer, sizeof(gTimeZoneBuffer)-1);
+ if (size > 0) {
+ gTimeZoneBuffer[size] = 0;
+ tzZoneInfoTailPtr = uprv_strstr(gTimeZoneBuffer, TZZONEINFOTAIL);
+ }
+ }
+ if (tzZoneInfoTailPtr != nullptr) {
+ tzZoneInfoTailPtr += tzZoneInfoTailLen;
+ skipZoneIDPrefix(&tzZoneInfoTailPtr);
+ if (isValidOlsonID(tzZoneInfoTailPtr)) {
+ return (gTimeZoneBufferPtr = tzZoneInfoTailPtr);
+ }
}
} else {
#if defined(SEARCH_TZFILE)
DefaultTZInfo* tzInfo = (DefaultTZInfo*)uprv_malloc(sizeof(DefaultTZInfo));
- if (tzInfo != NULL) {
- tzInfo->defaultTZBuffer = NULL;
+ if (tzInfo != nullptr) {
+ tzInfo->defaultTZBuffer = nullptr;
tzInfo->defaultTZFileSize = 0;
- tzInfo->defaultTZFilePtr = NULL;
+ tzInfo->defaultTZFilePtr = nullptr;
tzInfo->defaultTZstatus = false;
tzInfo->defaultTZPosition = 0;
gTimeZoneBufferPtr = searchForTZFile(TZZONEINFO, tzInfo);
/* Free previously allocated memory */
- if (tzInfo->defaultTZBuffer != NULL) {
+ if (tzInfo->defaultTZBuffer != nullptr) {
uprv_free(tzInfo->defaultTZBuffer);
}
- if (tzInfo->defaultTZFilePtr != NULL) {
+ if (tzInfo->defaultTZFilePtr != nullptr) {
fclose(tzInfo->defaultTZFilePtr);
}
uprv_free(tzInfo);
}
- if (gTimeZoneBufferPtr != NULL && isValidOlsonID(gTimeZoneBufferPtr)) {
+ if (gTimeZoneBufferPtr != nullptr && isValidOlsonID(gTimeZoneBufferPtr)) {
return gTimeZoneBufferPtr;
}
#endif
@@ -1247,7 +1262,7 @@ uprv_tzname(int n)
daylightType = U_DAYLIGHT_NONE;
}
tzid = remapShortTimeZone(U_TZNAME[0], U_TZNAME[1], daylightType, uprv_timezone());
- if (tzid != NULL) {
+ if (tzid != nullptr) {
return tzid;
}
}
@@ -1261,37 +1276,37 @@ uprv_tzname(int n)
/* Get and set the ICU data directory --------------------------------------- */
static icu::UInitOnce gDataDirInitOnce {};
-static char *gDataDirectory = NULL;
+static char *gDataDirectory = nullptr;
UInitOnce gTimeZoneFilesInitOnce {};
-static CharString *gTimeZoneFilesDirectory = NULL;
+static CharString *gTimeZoneFilesDirectory = nullptr;
#if U_POSIX_LOCALE || U_PLATFORM_USES_ONLY_WIN32_API
- static const char *gCorrectedPOSIXLocale = NULL; /* Sometimes heap allocated */
+ static const char *gCorrectedPOSIXLocale = nullptr; /* Sometimes heap allocated */
static bool gCorrectedPOSIXLocaleHeapAllocated = false;
#endif
-static UBool U_CALLCONV putil_cleanup(void)
+static UBool U_CALLCONV putil_cleanup()
{
if (gDataDirectory && *gDataDirectory) {
uprv_free(gDataDirectory);
}
- gDataDirectory = NULL;
+ gDataDirectory = nullptr;
gDataDirInitOnce.reset();
delete gTimeZoneFilesDirectory;
- gTimeZoneFilesDirectory = NULL;
+ gTimeZoneFilesDirectory = nullptr;
gTimeZoneFilesInitOnce.reset();
#ifdef SEARCH_TZFILE
delete gSearchTZFileResult;
- gSearchTZFileResult = NULL;
+ gSearchTZFileResult = nullptr;
#endif
#if U_POSIX_LOCALE || U_PLATFORM_USES_ONLY_WIN32_API
if (gCorrectedPOSIXLocale && gCorrectedPOSIXLocaleHeapAllocated) {
uprv_free(const_cast<char *>(gCorrectedPOSIXLocale));
- gCorrectedPOSIXLocale = NULL;
+ gCorrectedPOSIXLocale = nullptr;
gCorrectedPOSIXLocaleHeapAllocated = false;
}
#endif
@@ -1307,9 +1322,9 @@ u_setDataDirectory(const char *directory) {
char *newDataDir;
int32_t length;
- if(directory==NULL || *directory==0) {
+ if(directory==nullptr || *directory==0) {
/* A small optimization to prevent the malloc and copy when the
- shared library is used, and this is a way to make sure that NULL
+ shared library is used, and this is a way to make sure that nullptr
is never returned.
*/
newDataDir = (char *)"";
@@ -1318,7 +1333,7 @@ u_setDataDirectory(const char *directory) {
length=(int32_t)uprv_strlen(directory);
newDataDir = (char *)uprv_malloc(length + 2);
/* Exit out if newDataDir could not be created. */
- if (newDataDir == NULL) {
+ if (newDataDir == nullptr) {
return;
}
uprv_strcpy(newDataDir, directory);
@@ -1326,7 +1341,7 @@ u_setDataDirectory(const char *directory) {
#if (U_FILE_SEP_CHAR != U_FILE_ALT_SEP_CHAR)
{
char *p;
- while((p = uprv_strchr(newDataDir, U_FILE_ALT_SEP_CHAR)) != NULL) {
+ while((p = uprv_strchr(newDataDir, U_FILE_ALT_SEP_CHAR)) != nullptr) {
*p = U_FILE_SEP_CHAR;
}
}
@@ -1389,7 +1404,7 @@ static BOOL U_CALLCONV getIcuDataDirectoryUnderWindowsDirectory(char* directoryB
UErrorCode status = U_ZERO_ERROR;
int32_t windowsPathUtf8Len = 0;
u_strToUTF8(windowsPathUtf8, static_cast<int32_t>(UPRV_LENGTHOF(windowsPathUtf8)),
- &windowsPathUtf8Len, reinterpret_cast<const UChar*>(windowsPath), -1, &status);
+ &windowsPathUtf8Len, reinterpret_cast<const char16_t*>(windowsPath), -1, &status);
if (U_SUCCESS(status) && (status != U_STRING_NOT_TERMINATED_WARNING) &&
(windowsPathUtf8Len < (UPRV_LENGTHOF(windowsPathUtf8) - 1))) {
@@ -1419,7 +1434,7 @@ static void U_CALLCONV dataDirectoryInitFn() {
return;
}
- const char *path = NULL;
+ const char *path = nullptr;
#if defined(ICU_DATA_DIR_PREFIX_ENV_VAR)
char datadir_path_buffer[PATH_MAX];
#endif
@@ -1452,7 +1467,7 @@ static void U_CALLCONV dataDirectoryInitFn() {
* set their own path.
*/
#if defined(ICU_DATA_DIR) || defined(U_ICU_DATA_DEFAULT_DIR)
- if(path==NULL || *path==0) {
+ if(path==nullptr || *path==0) {
# if defined(ICU_DATA_DIR_PREFIX_ENV_VAR)
const char *prefix = getenv(ICU_DATA_DIR_PREFIX_ENV_VAR);
# endif
@@ -1462,8 +1477,8 @@ static void U_CALLCONV dataDirectoryInitFn() {
path=U_ICU_DATA_DEFAULT_DIR;
# endif
# if defined(ICU_DATA_DIR_PREFIX_ENV_VAR)
- if (prefix != NULL) {
- snprintf(datadir_path_buffer, PATH_MAX, "%s%s", prefix, path);
+ if (prefix != nullptr) {
+ snprintf(datadir_path_buffer, sizeof(datadir_path_buffer), "%s%s", prefix, path);
path=datadir_path_buffer;
}
# endif
@@ -1477,7 +1492,7 @@ static void U_CALLCONV dataDirectoryInitFn() {
}
#endif
- if(path==NULL) {
+ if(path==nullptr) {
/* It looks really bad, set it to something. */
path = "";
}
@@ -1487,7 +1502,7 @@ static void U_CALLCONV dataDirectoryInitFn() {
}
U_CAPI const char * U_EXPORT2
-u_getDataDirectory(void) {
+u_getDataDirectory() {
umtx_initOnce(gDataDirInitOnce, &dataDirectoryInitFn);
return gDataDirectory;
}
@@ -1500,7 +1515,7 @@ static void setTimeZoneFilesDir(const char *path, UErrorCode &status) {
gTimeZoneFilesDirectory->append(path, status);
#if (U_FILE_SEP_CHAR != U_FILE_ALT_SEP_CHAR)
char *p = gTimeZoneFilesDirectory->data();
- while ((p = uprv_strchr(p, U_FILE_ALT_SEP_CHAR)) != NULL) {
+ while ((p = uprv_strchr(p, U_FILE_ALT_SEP_CHAR)) != nullptr) {
*p = U_FILE_SEP_CHAR;
}
#endif
@@ -1510,10 +1525,10 @@ static void setTimeZoneFilesDir(const char *path, UErrorCode &status) {
#define TO_STRING_2(x) #x
static void U_CALLCONV TimeZoneDataDirInitFn(UErrorCode &status) {
- U_ASSERT(gTimeZoneFilesDirectory == NULL);
+ U_ASSERT(gTimeZoneFilesDirectory == nullptr);
ucln_common_registerCleanup(UCLN_COMMON_PUTIL, putil_cleanup);
gTimeZoneFilesDirectory = new CharString();
- if (gTimeZoneFilesDirectory == NULL) {
+ if (gTimeZoneFilesDirectory == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -1541,19 +1556,19 @@ static void U_CALLCONV TimeZoneDataDirInitFn(UErrorCode &status) {
#endif // U_PLATFORM_HAS_WINUWP_API
#if defined(U_TIMEZONE_FILES_DIR)
- if (dir == NULL) {
+ if (dir == nullptr) {
// Build time configuration setting.
dir = TO_STRING(U_TIMEZONE_FILES_DIR);
}
#endif
- if (dir == NULL) {
+ if (dir == nullptr) {
dir = "";
}
#if defined(ICU_TIMEZONE_FILES_DIR_PREFIX_ENV_VAR)
- if (prefix != NULL) {
- snprintf(timezonefilesdir_path_buffer, PATH_MAX, "%s%s", prefix, dir);
+ if (prefix != nullptr) {
+ snprintf(timezonefilesdir_path_buffer, sizeof(timezonefilesdir_path_buffer), "%s%s", prefix, dir);
dir = timezonefilesdir_path_buffer;
}
#endif
@@ -1586,7 +1601,7 @@ u_setTimeZoneFilesDirectory(const char *path, UErrorCode *status) {
*/
static const char *uprv_getPOSIXIDForCategory(int category)
{
- const char* posixID = NULL;
+ const char* posixID = nullptr;
if (category == LC_MESSAGES || category == LC_CTYPE) {
/*
* On Solaris two different calls to setlocale can result in
@@ -1596,7 +1611,7 @@ static const char *uprv_getPOSIXIDForCategory(int category)
*
* LC_ALL can't be used because it's platform dependent. The LANG
* environment variable seems to affect LC_CTYPE variable by default.
- * Here is what setlocale(LC_ALL, NULL) can return.
+ * Here is what setlocale(LC_ALL, nullptr) can return.
* HPUX can return 'C C C C C C C'
* Solaris can return /en_US/C/C/C/C/C on the second try.
* Linux can return LC_CTYPE=C;LC_NUMERIC=C;...
@@ -1604,9 +1619,9 @@ static const char *uprv_getPOSIXIDForCategory(int category)
* The default codepage detection also needs to use LC_CTYPE.
*
* Do not call setlocale(LC_*, "")! Using an empty string instead
- * of NULL, will modify the libc behavior.
+ * of nullptr, will modify the libc behavior.
*/
- posixID = setlocale(category, NULL);
+ posixID = setlocale(category, nullptr);
if ((posixID == 0)
|| (uprv_strcmp("C", posixID) == 0)
|| (uprv_strcmp("POSIX", posixID) == 0))
@@ -1647,9 +1662,9 @@ static const char *uprv_getPOSIXIDForCategory(int category)
/* Return just the POSIX id for the default locale, whatever happens to be in
* it. It gets the value from LC_MESSAGES and indirectly from LC_ALL and LANG.
*/
-static const char *uprv_getPOSIXIDForDefaultLocale(void)
+static const char *uprv_getPOSIXIDForDefaultLocale()
{
- static const char* posixID = NULL;
+ static const char* posixID = nullptr;
if (posixID == 0) {
posixID = uprv_getPOSIXIDForCategory(LC_MESSAGES);
}
@@ -1660,9 +1675,9 @@ static const char *uprv_getPOSIXIDForDefaultLocale(void)
/* Return just the POSIX id for the default codepage, whatever happens to be in
* it. It gets the value from LC_CTYPE and indirectly from LC_ALL and LANG.
*/
-static const char *uprv_getPOSIXIDForDefaultCodepage(void)
+static const char *uprv_getPOSIXIDForDefaultCodepage()
{
- static const char* posixID = NULL;
+ static const char* posixID = nullptr;
if (posixID == 0) {
posixID = uprv_getPOSIXIDForCategory(LC_CTYPE);
}
@@ -1861,16 +1876,16 @@ The leftmost codepage (.xxx) wins.
const char *localeID = getenv("LC_ALL");
char *p;
- if (localeID == NULL)
+ if (localeID == nullptr)
localeID = getenv("LANG");
- if (localeID == NULL)
- localeID = setlocale(LC_ALL, NULL);
+ if (localeID == nullptr)
+ localeID = setlocale(LC_ALL, nullptr);
/* Make sure we have something... */
- if (localeID == NULL)
+ if (localeID == nullptr)
return "en_US_POSIX";
/* Extract the locale name from the path. */
- if((p = uprv_strrchr(localeID, '/')) != NULL)
+ if((p = uprv_strrchr(localeID, '/')) != nullptr)
{
/* Increment p to start of locale name. */
p++;
@@ -1881,7 +1896,7 @@ The leftmost codepage (.xxx) wins.
uprv_strcpy(correctedLocale, localeID);
/* Strip off the '.locale' extension. */
- if((p = uprv_strchr(correctedLocale, '.')) != NULL) {
+ if((p = uprv_strchr(correctedLocale, '.')) != nullptr) {
*p = 0;
}
@@ -1961,12 +1976,12 @@ names to the ICU alias table in the data directory.
*/
static const char*
remapPlatformDependentCodepage(const char *locale, const char *name) {
- if (locale != NULL && *locale == 0) {
+ if (locale != nullptr && *locale == 0) {
/* Make sure that an empty locale is handled the same way. */
- locale = NULL;
+ locale = nullptr;
}
- if (name == NULL) {
- return NULL;
+ if (name == nullptr) {
+ return nullptr;
}
#if U_PLATFORM == U_PF_AIX
if (uprv_strcmp(name, "IBM-943") == 0) {
@@ -1978,7 +1993,7 @@ remapPlatformDependentCodepage(const char *locale, const char *name) {
name = "IBM-5348";
}
#elif U_PLATFORM == U_PF_SOLARIS
- if (locale != NULL && uprv_strcmp(name, "EUC") == 0) {
+ if (locale != nullptr && uprv_strcmp(name, "EUC") == 0) {
/* Solaris underspecifies the "EUC" name. */
if (uprv_strcmp(locale, "zh_CN") == 0) {
name = "EUC-CN";
@@ -2005,7 +2020,7 @@ remapPlatformDependentCodepage(const char *locale, const char *name) {
name = "ISO-8859-1";
}
#elif U_PLATFORM_IS_DARWIN_BASED
- if (locale == NULL && *name == 0) {
+ if (locale == nullptr && *name == 0) {
/*
No locale was specified, and an empty name was passed in.
This usually indicates that nl_langinfo didn't return valid information.
@@ -2017,7 +2032,7 @@ remapPlatformDependentCodepage(const char *locale, const char *name) {
/* Remap CP949 to a similar codepage to avoid issues with backslash and won symbol. */
name = "EUC-KR";
}
- else if (locale != NULL && uprv_strcmp(locale, "en_US_POSIX") != 0 && uprv_strcmp(name, "US-ASCII") == 0) {
+ else if (locale != nullptr && uprv_strcmp(locale, "en_US_POSIX") != 0 && uprv_strcmp(name, "US-ASCII") == 0) {
/*
* For non C/POSIX locale, default the code page to UTF-8 instead of US-ASCII.
*/
@@ -2029,7 +2044,7 @@ remapPlatformDependentCodepage(const char *locale, const char *name) {
name = "EUC-KR";
}
#elif U_PLATFORM == U_PF_HPUX
- if (locale != NULL && uprv_strcmp(locale, "zh_HK") == 0 && uprv_strcmp(name, "big5") == 0) {
+ if (locale != nullptr && uprv_strcmp(locale, "zh_HK") == 0 && uprv_strcmp(name, "big5") == 0) {
/* HP decided to extend big5 as hkbig5 even though it's not compatible :-( */
/* zh_TW.big5 is not the same charset as zh_HK.big5! */
name = "hkbig5";
@@ -2043,7 +2058,7 @@ remapPlatformDependentCodepage(const char *locale, const char *name) {
name = "eucjis";
}
#elif U_PLATFORM == U_PF_LINUX
- if (locale != NULL && uprv_strcmp(name, "euc") == 0) {
+ if (locale != nullptr && uprv_strcmp(name, "euc") == 0) {
/* Linux underspecifies the "EUC" name. */
if (uprv_strcmp(locale, "korean") == 0) {
name = "EUC-KR";
@@ -2061,7 +2076,7 @@ remapPlatformDependentCodepage(const char *locale, const char *name) {
*/
name = "eucjis";
}
- else if (locale != NULL && uprv_strcmp(locale, "en_US_POSIX") != 0 &&
+ else if (locale != nullptr && uprv_strcmp(locale, "en_US_POSIX") != 0 &&
(uprv_strcmp(name, "ANSI_X3.4-1968") == 0 || uprv_strcmp(name, "US-ASCII") == 0)) {
/*
* For non C/POSIX locale, default the code page to UTF-8 instead of US-ASCII.
@@ -2070,13 +2085,13 @@ remapPlatformDependentCodepage(const char *locale, const char *name) {
}
/*
* Linux returns ANSI_X3.4-1968 for C/POSIX, but the call site takes care of
- * it by falling back to 'US-ASCII' when NULL is returned from this
+ * it by falling back to 'US-ASCII' when nullptr is returned from this
* function. So, we don't have to worry about it here.
*/
#endif
- /* return NULL when "" is passed in */
+ /* return nullptr when "" is passed in */
if (*name == 0) {
- name = NULL;
+ name = nullptr;
}
return name;
}
@@ -2085,16 +2100,16 @@ static const char*
getCodepageFromPOSIXID(const char *localeName, char * buffer, int32_t buffCapacity)
{
char localeBuf[100];
- const char *name = NULL;
- char *variant = NULL;
+ const char *name = nullptr;
+ char *variant = nullptr;
- if (localeName != NULL && (name = (uprv_strchr(localeName, '.'))) != NULL) {
+ if (localeName != nullptr && (name = (uprv_strchr(localeName, '.'))) != nullptr) {
size_t localeCapacity = uprv_min(sizeof(localeBuf), (name-localeName)+1);
uprv_strncpy(localeBuf, localeName, localeCapacity);
- localeBuf[localeCapacity-1] = 0; /* ensure NULL termination */
+ localeBuf[localeCapacity-1] = 0; /* ensure NUL termination */
name = uprv_strncpy(buffer, name+1, buffCapacity);
- buffer[buffCapacity-1] = 0; /* ensure NULL termination */
- if ((variant = const_cast<char *>(uprv_strchr(name, '@'))) != NULL) {
+ buffer[buffCapacity-1] = 0; /* ensure NUL termination */
+ if ((variant = const_cast<char *>(uprv_strchr(name, '@'))) != nullptr) {
*variant = 0;
}
name = remapPlatformDependentCodepage(localeBuf, name);
@@ -2124,7 +2139,7 @@ int_getDefaultCodepage()
}
/* else use the default */
}
- sprintf(codepage,"ibm-%d", ccsid);
+ snprintf(codepage, sizeof(codepage), "ibm-%d", ccsid);
return codepage;
#elif U_PLATFORM == U_PF_OS390
@@ -2132,7 +2147,7 @@ int_getDefaultCodepage()
strncpy(codepage, nl_langinfo(CODESET),63-strlen(UCNV_SWAP_LFNL_OPTION_STRING));
strcat(codepage,UCNV_SWAP_LFNL_OPTION_STRING);
- codepage[63] = 0; /* NULL terminate */
+ codepage[63] = 0; /* NUL terminate */
return codepage;
@@ -2161,7 +2176,7 @@ int_getDefaultCodepage()
// are between 3 and 19999
if (codepageNumber > 0 && codepageNumber < 20000)
{
- sprintf(codepage, "windows-%ld", codepageNumber);
+ snprintf(codepage, sizeof(codepage), "windows-%ld", codepageNumber);
return codepage;
}
// If the codepage number call failed then return UTF-8
@@ -2169,8 +2184,8 @@ int_getDefaultCodepage()
#elif U_POSIX_LOCALE
static char codesetName[100];
- const char *localeName = NULL;
- const char *name = NULL;
+ const char *localeName = nullptr;
+ const char *name = nullptr;
localeName = uprv_getPOSIXIDForDefaultCodepage();
uprv_memset(codesetName, 0, sizeof(codesetName));
@@ -2193,10 +2208,10 @@ int_getDefaultCodepage()
} else
#endif
{
- codeset = remapPlatformDependentCodepage(NULL, codeset);
+ codeset = remapPlatformDependentCodepage(nullptr, codeset);
}
- if (codeset != NULL) {
+ if (codeset != nullptr) {
uprv_strncpy(codesetName, codeset, sizeof(codesetName));
codesetName[sizeof(codesetName)-1] = 0;
return codesetName;
@@ -2229,12 +2244,12 @@ int_getDefaultCodepage()
U_CAPI const char* U_EXPORT2
uprv_getDefaultCodepage()
{
- static char const *name = NULL;
- umtx_lock(NULL);
- if (name == NULL) {
+ static char const *name = nullptr;
+ umtx_lock(nullptr);
+ if (name == nullptr) {
name = int_getDefaultCodepage();
}
- umtx_unlock(NULL);
+ umtx_unlock(nullptr);
return name;
}
#endif /* !U_CHARSET_IS_UTF8 */
@@ -2249,11 +2264,11 @@ u_versionFromString(UVersionInfo versionArray, const char *versionString) {
char *end;
uint16_t part=0;
- if(versionArray==NULL) {
+ if(versionArray==nullptr) {
return;
}
- if(versionString!=NULL) {
+ if(versionString!=nullptr) {
for(;;) {
versionArray[part]=(uint8_t)uprv_strtoul(versionString, &end, 10);
if(end==versionString || ++part==U_MAX_VERSION_LENGTH || *end!=U_VERSION_DELIMITER) {
@@ -2269,8 +2284,8 @@ u_versionFromString(UVersionInfo versionArray, const char *versionString) {
}
U_CAPI void U_EXPORT2
-u_versionFromUString(UVersionInfo versionArray, const UChar *versionString) {
- if(versionArray!=NULL && versionString!=NULL) {
+u_versionFromUString(UVersionInfo versionArray, const char16_t *versionString) {
+ if(versionArray!=nullptr && versionString!=nullptr) {
char versionChars[U_MAX_VERSION_STRING_LENGTH+1];
int32_t len = u_strlen(versionString);
if(len>U_MAX_VERSION_STRING_LENGTH) {
@@ -2287,11 +2302,11 @@ u_versionToString(const UVersionInfo versionArray, char *versionString) {
uint16_t count, part;
uint8_t field;
- if(versionString==NULL) {
+ if(versionString==nullptr) {
return;
}
- if(versionArray==NULL) {
+ if(versionArray==nullptr) {
versionString[0]=0;
return;
}
@@ -2362,10 +2377,10 @@ u_getVersion(UVersionInfo versionArray) {
U_CAPI void * U_EXPORT2
uprv_dl_open(const char *libName, UErrorCode *status) {
- void *ret = NULL;
+ void *ret = nullptr;
if(U_FAILURE(*status)) return ret;
ret = dlopen(libName, RTLD_NOW|RTLD_GLOBAL);
- if(ret==NULL) {
+ if(ret==nullptr) {
#ifdef U_TRACE_DYLOAD
printf("dlerror on dlopen(%s): %s\n", libName, dlerror());
#endif
@@ -2386,10 +2401,10 @@ uprv_dlsym_func(void *lib, const char* sym, UErrorCode *status) {
UVoidFunction *fp;
void *vp;
} uret;
- uret.fp = NULL;
+ uret.fp = nullptr;
if(U_FAILURE(*status)) return uret.fp;
uret.vp = dlsym(lib, sym);
- if(uret.vp == NULL) {
+ if(uret.vp == nullptr) {
#ifdef U_TRACE_DYLOAD
printf("dlerror on dlsym(%p,%s): %s\n", lib,sym, dlerror());
#endif
@@ -2405,13 +2420,13 @@ uprv_dlsym_func(void *lib, const char* sym, UErrorCode *status) {
U_CAPI void * U_EXPORT2
uprv_dl_open(const char *libName, UErrorCode *status) {
- HMODULE lib = NULL;
+ HMODULE lib = nullptr;
- if(U_FAILURE(*status)) return NULL;
+ if(U_FAILURE(*status)) return nullptr;
lib = LoadLibraryA(libName);
- if(lib==NULL) {
+ if(lib==nullptr) {
*status = U_MISSING_RESOURCE_ERROR;
}
@@ -2431,13 +2446,13 @@ uprv_dl_close(void *lib, UErrorCode *status) {
U_CAPI UVoidFunction* U_EXPORT2
uprv_dlsym_func(void *lib, const char* sym, UErrorCode *status) {
HMODULE handle = (HMODULE)lib;
- UVoidFunction* addr = NULL;
+ UVoidFunction* addr = nullptr;
- if(U_FAILURE(*status) || lib==NULL) return NULL;
+ if(U_FAILURE(*status) || lib==nullptr) return nullptr;
addr = (UVoidFunction*)GetProcAddress(handle, sym);
- if(addr==NULL) {
+ if(addr==nullptr) {
DWORD lastError = GetLastError();
if(lastError == ERROR_PROC_NOT_FOUND) {
*status = U_MISSING_RESOURCE_ERROR;
@@ -2456,9 +2471,9 @@ uprv_dlsym_func(void *lib, const char* sym, UErrorCode *status) {
U_CAPI void * U_EXPORT2
uprv_dl_open(const char *libName, UErrorCode *status) {
(void)libName;
- if(U_FAILURE(*status)) return NULL;
+ if(U_FAILURE(*status)) return nullptr;
*status = U_UNSUPPORTED_ERROR;
- return NULL;
+ return nullptr;
}
U_CAPI void U_EXPORT2
@@ -2476,7 +2491,7 @@ uprv_dlsym_func(void *lib, const char* sym, UErrorCode *status) {
if(U_SUCCESS(*status)) {
*status = U_UNSUPPORTED_ERROR;
}
- return (UVoidFunction*)NULL;
+ return (UVoidFunction*)nullptr;
}
#endif
diff --git a/Build/source/libs/icu/icu-src/source/common/rbbi.cpp b/Build/source/libs/icu/icu-src/source/common/rbbi.cpp
index 2769263894b..599279fb72b 100644
--- a/Build/source/libs/icu/icu-src/source/common/rbbi.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/rbbi.cpp
@@ -63,9 +63,8 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(RuleBasedBreakIterator)
* tables object that is passed in as a parameter.
*/
RuleBasedBreakIterator::RuleBasedBreakIterator(RBBIDataHeader* data, UErrorCode &status)
- : fSCharIter(UnicodeString())
+ : RuleBasedBreakIterator(&status)
{
- init(status);
fData = new RBBIDataWrapper(data, status); // status checked in constructor
if (U_FAILURE(status)) {return;}
if(fData == nullptr) {
@@ -102,13 +101,12 @@ RuleBasedBreakIterator::RuleBasedBreakIterator(UDataMemory* udm, UBool isPhraseB
RuleBasedBreakIterator::RuleBasedBreakIterator(const uint8_t *compiledRules,
uint32_t ruleLength,
UErrorCode &status)
- : fSCharIter(UnicodeString())
+ : RuleBasedBreakIterator(&status)
{
- init(status);
if (U_FAILURE(status)) {
return;
}
- if (compiledRules == NULL || ruleLength < sizeof(RBBIDataHeader)) {
+ if (compiledRules == nullptr || ruleLength < sizeof(RBBIDataHeader)) {
status = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
@@ -141,9 +139,8 @@ RuleBasedBreakIterator::RuleBasedBreakIterator(const uint8_t *compiledRules,
//
//-------------------------------------------------------------------------------
RuleBasedBreakIterator::RuleBasedBreakIterator(UDataMemory* udm, UErrorCode &status)
- : fSCharIter(UnicodeString())
+ : RuleBasedBreakIterator(&status)
{
- init(status);
fData = new RBBIDataWrapper(udm, status); // status checked in constructor
if (U_FAILURE(status)) {return;}
if(fData == nullptr) {
@@ -170,9 +167,8 @@ RuleBasedBreakIterator::RuleBasedBreakIterator(UDataMemory* udm, UErrorCode &sta
RuleBasedBreakIterator::RuleBasedBreakIterator( const UnicodeString &rules,
UParseError &parseError,
UErrorCode &status)
- : fSCharIter(UnicodeString())
+ : RuleBasedBreakIterator(&status)
{
- init(status);
if (U_FAILURE(status)) {return;}
RuleBasedBreakIterator *bi = (RuleBasedBreakIterator *)
RBBIRuleBuilder::createRuleBasedBreakIterator(rules, &parseError, status);
@@ -194,10 +190,39 @@ RuleBasedBreakIterator::RuleBasedBreakIterator( const UnicodeString &rules,
// of rules.
//-------------------------------------------------------------------------------
RuleBasedBreakIterator::RuleBasedBreakIterator()
- : fSCharIter(UnicodeString())
+ : RuleBasedBreakIterator(nullptr)
{
- UErrorCode status = U_ZERO_ERROR;
- init(status);
+}
+
+/**
+ * Simple Constructor with an error code.
+ * Handles common initialization for all other constructors.
+ */
+RuleBasedBreakIterator::RuleBasedBreakIterator(UErrorCode *status) {
+ UErrorCode ec = U_ZERO_ERROR;
+ if (status == nullptr) {
+ status = &ec;
+ }
+ utext_openUChars(&fText, nullptr, 0, status);
+ LocalPointer<DictionaryCache> lpDictionaryCache(new DictionaryCache(this, *status), *status);
+ LocalPointer<BreakCache> lpBreakCache(new BreakCache(this, *status), *status);
+ if (U_FAILURE(*status)) {
+ fErrorCode = *status;
+ return;
+ }
+ fDictionaryCache = lpDictionaryCache.orphan();
+ fBreakCache = lpBreakCache.orphan();
+
+#ifdef RBBI_DEBUG
+ static UBool debugInitDone = false;
+ if (debugInitDone == false) {
+ char *debugEnv = getenv("U_RBBIDEBUG");
+ if (debugEnv && uprv_strstr(debugEnv, "trace")) {
+ gTrace = true;
+ }
+ debugInitDone = true;
+ }
+#endif
}
@@ -208,11 +233,8 @@ RuleBasedBreakIterator::RuleBasedBreakIterator()
//
//-------------------------------------------------------------------------------
RuleBasedBreakIterator::RuleBasedBreakIterator(const RuleBasedBreakIterator& other)
-: BreakIterator(other),
- fSCharIter(UnicodeString())
+: RuleBasedBreakIterator()
{
- UErrorCode status = U_ZERO_ERROR;
- this->init(status);
*this = other;
}
@@ -261,9 +283,9 @@ RuleBasedBreakIterator::operator=(const RuleBasedBreakIterator& that) {
}
BreakIterator::operator=(that);
- if (fLanguageBreakEngines != NULL) {
+ if (fLanguageBreakEngines != nullptr) {
delete fLanguageBreakEngines;
- fLanguageBreakEngines = NULL; // Just rebuild for now
+ fLanguageBreakEngines = nullptr; // Just rebuild for now
}
// TODO: clone fLanguageBreakEngines from "that"
UErrorCode status = U_ZERO_ERROR;
@@ -274,22 +296,22 @@ RuleBasedBreakIterator::operator=(const RuleBasedBreakIterator& that) {
}
fCharIter = &fSCharIter;
- if (that.fCharIter != NULL && that.fCharIter != &that.fSCharIter) {
+ if (that.fCharIter != nullptr && that.fCharIter != &that.fSCharIter) {
// This is a little bit tricky - it will initially appear that
// this->fCharIter is adopted, even if that->fCharIter was
// not adopted. That's ok.
fCharIter = that.fCharIter->clone();
}
fSCharIter = that.fSCharIter;
- if (fCharIter == NULL) {
+ if (fCharIter == nullptr) {
fCharIter = &fSCharIter;
}
- if (fData != NULL) {
+ if (fData != nullptr) {
fData->removeReference();
- fData = NULL;
+ fData = nullptr;
}
- if (that.fData != NULL) {
+ if (that.fData != nullptr) {
fData = that.fData->addReference();
}
@@ -315,58 +337,6 @@ RuleBasedBreakIterator::operator=(const RuleBasedBreakIterator& that) {
return *this;
}
-
-
-//-----------------------------------------------------------------------------
-//
-// init() Shared initialization routine. Used by all the constructors.
-// Initializes all fields, leaving the object in a consistent state.
-//
-//-----------------------------------------------------------------------------
-void RuleBasedBreakIterator::init(UErrorCode &status) {
- fCharIter = nullptr;
- fData = nullptr;
- fPosition = 0;
- fRuleStatusIndex = 0;
- fDone = false;
- fDictionaryCharCount = 0;
- fLanguageBreakEngines = nullptr;
- fUnhandledBreakEngine = nullptr;
- fBreakCache = nullptr;
- fDictionaryCache = nullptr;
- fLookAheadMatches = nullptr;
- fIsPhraseBreaking = false;
-
- // Note: IBM xlC is unable to assign or initialize member fText from UTEXT_INITIALIZER.
- // fText = UTEXT_INITIALIZER;
- static const UText initializedUText = UTEXT_INITIALIZER;
- uprv_memcpy(&fText, &initializedUText, sizeof(UText));
-
- if (U_FAILURE(status)) {
- return;
- }
-
- utext_openUChars(&fText, NULL, 0, &status);
- fDictionaryCache = new DictionaryCache(this, status);
- fBreakCache = new BreakCache(this, status);
- if (U_SUCCESS(status) && (fDictionaryCache == NULL || fBreakCache == NULL)) {
- status = U_MEMORY_ALLOCATION_ERROR;
- }
-
-#ifdef RBBI_DEBUG
- static UBool debugInitDone = false;
- if (debugInitDone == false) {
- char *debugEnv = getenv("U_RBBIDEBUG");
- if (debugEnv && uprv_strstr(debugEnv, "trace")) {
- gTrace = true;
- }
- debugInitDone = true;
- }
-#endif
-}
-
-
-
//-----------------------------------------------------------------------------
//
// clone - Returns a newly-constructed RuleBasedBreakIterator with the same
@@ -396,7 +366,7 @@ RuleBasedBreakIterator::operator==(const BreakIterator& that) const {
// and does not implement an equality function that would otherwise be
// checked at this point.
- const RuleBasedBreakIterator& that2 = (const RuleBasedBreakIterator&) that;
+ const RuleBasedBreakIterator& that2 = static_cast<const RuleBasedBreakIterator&>(that);
if (!utext_equals(&fText, &that2.fText)) {
// The two break iterators are operating on different text,
@@ -412,7 +382,7 @@ RuleBasedBreakIterator::operator==(const BreakIterator& that) const {
}
if (that2.fData == fData ||
- (fData != NULL && that2.fData != NULL && *that2.fData == *fData)) {
+ (fData != nullptr && that2.fData != nullptr && *that2.fData == *fData)) {
// The two break iterators are using the same rules.
return true;
}
@@ -424,9 +394,9 @@ RuleBasedBreakIterator::operator==(const BreakIterator& that) const {
* @return A hash code
*/
int32_t
-RuleBasedBreakIterator::hashCode(void) const {
+RuleBasedBreakIterator::hashCode() const {
int32_t hash = 0;
- if (fData != NULL) {
+ if (fData != nullptr) {
hash = fData->hashCode();
}
return hash;
@@ -447,7 +417,7 @@ void RuleBasedBreakIterator::setText(UText *ut, UErrorCode &status) {
// Return one over an empty string instead - this is the closest
// we can come to signaling a failure.
// (GetText() is obsolete, this failure is sort of OK)
- fSCharIter.setText(UnicodeString());
+ fSCharIter.setText(u"", 0);
if (fCharIter != &fSCharIter) {
// existing fCharIter was adopted from the outside. Delete it now.
@@ -494,10 +464,10 @@ RuleBasedBreakIterator::adoptText(CharacterIterator* newText) {
UErrorCode status = U_ZERO_ERROR;
fBreakCache->reset();
fDictionaryCache->reset();
- if (newText==NULL || newText->startIndex() != 0) {
+ if (newText==nullptr || newText->startIndex() != 0) {
// startIndex !=0 wants to be an error, but there's no way to report it.
// Make the iterator text be an empty string.
- utext_openUChars(&fText, NULL, 0, &status);
+ utext_openUChars(&fText, nullptr, 0, &status);
} else {
utext_openCharacterIterator(&fText, newText, &status);
}
@@ -520,7 +490,7 @@ RuleBasedBreakIterator::setText(const UnicodeString& newText) {
// Needed in case someone calls getText().
// Can not, unfortunately, do this lazily on the (probably never)
// call to getText(), because getText is const.
- fSCharIter.setText(newText);
+ fSCharIter.setText(newText.getBuffer(), newText.length());
if (fCharIter != &fSCharIter) {
// old fCharIter was adopted from the outside. Delete it.
@@ -542,7 +512,7 @@ RuleBasedBreakIterator &RuleBasedBreakIterator::refreshInputText(UText *input, U
if (U_FAILURE(status)) {
return *this;
}
- if (input == NULL) {
+ if (input == nullptr) {
status = U_ILLEGAL_ARGUMENT_ERROR;
return *this;
}
@@ -568,7 +538,7 @@ RuleBasedBreakIterator &RuleBasedBreakIterator::refreshInputText(UText *input, U
* Sets the current iteration position to the beginning of the text, position zero.
* @return The new iterator position, which is zero.
*/
-int32_t RuleBasedBreakIterator::first(void) {
+int32_t RuleBasedBreakIterator::first() {
UErrorCode status = U_ZERO_ERROR;
if (!fBreakCache->seek(0)) {
fBreakCache->populateNear(0, status);
@@ -582,7 +552,7 @@ int32_t RuleBasedBreakIterator::first(void) {
* Sets the current iteration position to the end of the text.
* @return The text's past-the-end offset.
*/
-int32_t RuleBasedBreakIterator::last(void) {
+int32_t RuleBasedBreakIterator::last() {
int32_t endPos = (int32_t)utext_nativeLength(&fText);
UBool endShouldBeBoundary = isBoundary(endPos); // Has side effect of setting iterator position.
(void)endShouldBeBoundary;
@@ -620,7 +590,7 @@ int32_t RuleBasedBreakIterator::next(int32_t n) {
* Advances the iterator to the next boundary position.
* @return The position of the first boundary after this one.
*/
-int32_t RuleBasedBreakIterator::next(void) {
+int32_t RuleBasedBreakIterator::next() {
fBreakCache->next();
return fDone ? UBRK_DONE : fPosition;
}
@@ -633,7 +603,7 @@ int32_t RuleBasedBreakIterator::next(void) {
*
* @return The position of the boundary position immediately preceding the starting position.
*/
-int32_t RuleBasedBreakIterator::previous(void) {
+int32_t RuleBasedBreakIterator::previous() {
UErrorCode status = U_ZERO_ERROR;
fBreakCache->previous(status);
return fDone ? UBRK_DONE : fPosition;
@@ -730,7 +700,7 @@ UBool RuleBasedBreakIterator::isBoundary(int32_t offset) {
* Returns the current iteration position.
* @return The current iteration position.
*/
-int32_t RuleBasedBreakIterator::current(void) const {
+int32_t RuleBasedBreakIterator::current() const {
return fPosition;
}
@@ -1009,7 +979,7 @@ int32_t RuleBasedBreakIterator::handleSafePrevious(int32_t fromPosition) {
#endif
// if we're already at the start of the text, return DONE.
- if (fData == NULL || UTEXT_GETNATIVEINDEX(&fText)==0) {
+ if (fData == nullptr || UTEXT_GETNATIVEINDEX(&fText)==0) {
return BreakIterator::DONE;
}
@@ -1117,10 +1087,10 @@ int32_t RuleBasedBreakIterator::getRuleStatusVec(
//
//-------------------------------------------------------------------------------
const uint8_t *RuleBasedBreakIterator::getBinaryRules(uint32_t &length) {
- const uint8_t *retPtr = NULL;
+ const uint8_t *retPtr = nullptr;
length = 0;
- if (fData != NULL) {
+ if (fData != nullptr) {
retPtr = (const uint8_t *)fData->fHeader;
length = fData->fHeader->fLength;
}
@@ -1131,16 +1101,16 @@ const uint8_t *RuleBasedBreakIterator::getBinaryRules(uint32_t &length) {
RuleBasedBreakIterator *RuleBasedBreakIterator::createBufferClone(
void * /*stackBuffer*/, int32_t &bufferSize, UErrorCode &status) {
if (U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
if (bufferSize == 0) {
bufferSize = 1; // preflighting for deprecated functionality
- return NULL;
+ return nullptr;
}
BreakIterator *clonedBI = clone();
- if (clonedBI == NULL) {
+ if (clonedBI == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
} else {
status = U_SAFECLONE_ALLOCATED_WARNING;
@@ -1155,12 +1125,13 @@ static icu::UStack *gLanguageBreakFactories = nullptr;
static const icu::UnicodeString *gEmptyString = nullptr;
static icu::UInitOnce gLanguageBreakFactoriesInitOnce {};
static icu::UInitOnce gRBBIInitOnce {};
+static icu::ICULanguageBreakFactory *gICULanguageBreakFactory = nullptr;
/**
* Release all static memory held by breakiterator.
*/
U_CDECL_BEGIN
-UBool U_CALLCONV rbbi_cleanup(void) {
+UBool U_CALLCONV rbbi_cleanup() {
delete gLanguageBreakFactories;
gLanguageBreakFactories = nullptr;
delete gEmptyString;
@@ -1183,38 +1154,42 @@ static void U_CALLCONV rbbiInit() {
ucln_common_registerCleanup(UCLN_COMMON_RBBI, rbbi_cleanup);
}
-static void U_CALLCONV initLanguageFactories() {
- UErrorCode status = U_ZERO_ERROR;
- U_ASSERT(gLanguageBreakFactories == NULL);
- gLanguageBreakFactories = new UStack(_deleteFactory, NULL, status);
- if (gLanguageBreakFactories != NULL && U_SUCCESS(status)) {
- ICULanguageBreakFactory *builtIn = new ICULanguageBreakFactory(status);
- gLanguageBreakFactories->push(builtIn, status);
+static void U_CALLCONV initLanguageFactories(UErrorCode& status) {
+ U_ASSERT(gLanguageBreakFactories == nullptr);
+ gLanguageBreakFactories = new UStack(_deleteFactory, nullptr, status);
+ if (gLanguageBreakFactories != nullptr && U_SUCCESS(status)) {
+ LocalPointer<ICULanguageBreakFactory> factory(new ICULanguageBreakFactory(status), status);
+ if (U_SUCCESS(status)) {
+ gICULanguageBreakFactory = factory.orphan();
+ gLanguageBreakFactories->push(gICULanguageBreakFactory, status);
#ifdef U_LOCAL_SERVICE_HOOK
- LanguageBreakFactory *extra = (LanguageBreakFactory *)uprv_svc_hook("languageBreakFactory", &status);
- if (extra != NULL) {
- gLanguageBreakFactories->push(extra, status);
- }
+ LanguageBreakFactory *extra = (LanguageBreakFactory *)uprv_svc_hook("languageBreakFactory", &status);
+ if (extra != nullptr) {
+ gLanguageBreakFactories->push(extra, status);
+ }
#endif
+ }
}
ucln_common_registerCleanup(UCLN_COMMON_RBBI, rbbi_cleanup);
}
+void ensureLanguageFactories(UErrorCode& status) {
+ umtx_initOnce(gLanguageBreakFactoriesInitOnce, &initLanguageFactories, status);
+}
static const LanguageBreakEngine*
-getLanguageBreakEngineFromFactory(UChar32 c)
+getLanguageBreakEngineFromFactory(UChar32 c, const char* locale)
{
- umtx_initOnce(gLanguageBreakFactoriesInitOnce, &initLanguageFactories);
- if (gLanguageBreakFactories == NULL) {
- return NULL;
- }
+ UErrorCode status = U_ZERO_ERROR;
+ ensureLanguageFactories(status);
+ if (U_FAILURE(status)) return nullptr;
int32_t i = gLanguageBreakFactories->size();
- const LanguageBreakEngine *lbe = NULL;
+ const LanguageBreakEngine *lbe = nullptr;
while (--i >= 0) {
LanguageBreakFactory *factory = (LanguageBreakFactory *)(gLanguageBreakFactories->elementAt(i));
- lbe = factory->getEngineFor(c);
- if (lbe != NULL) {
+ lbe = factory->getEngineFor(c, locale);
+ if (lbe != nullptr) {
break;
}
}
@@ -1229,33 +1204,33 @@ getLanguageBreakEngineFromFactory(UChar32 c)
//
//-------------------------------------------------------------------------------
const LanguageBreakEngine *
-RuleBasedBreakIterator::getLanguageBreakEngine(UChar32 c) {
- const LanguageBreakEngine *lbe = NULL;
+RuleBasedBreakIterator::getLanguageBreakEngine(UChar32 c, const char* locale) {
+ const LanguageBreakEngine *lbe = nullptr;
UErrorCode status = U_ZERO_ERROR;
- if (fLanguageBreakEngines == NULL) {
+ if (fLanguageBreakEngines == nullptr) {
fLanguageBreakEngines = new UStack(status);
- if (fLanguageBreakEngines == NULL || U_FAILURE(status)) {
+ if (fLanguageBreakEngines == nullptr || U_FAILURE(status)) {
delete fLanguageBreakEngines;
fLanguageBreakEngines = 0;
- return NULL;
+ return nullptr;
}
}
int32_t i = fLanguageBreakEngines->size();
while (--i >= 0) {
lbe = (const LanguageBreakEngine *)(fLanguageBreakEngines->elementAt(i));
- if (lbe->handles(c)) {
+ if (lbe->handles(c, locale)) {
return lbe;
}
}
// No existing dictionary took the character. See if a factory wants to
// give us a new LanguageBreakEngine for this character.
- lbe = getLanguageBreakEngineFromFactory(c);
+ lbe = getLanguageBreakEngineFromFactory(c, locale);
// If we got one, use it and push it on our stack.
- if (lbe != NULL) {
+ if (lbe != nullptr) {
fLanguageBreakEngines->push((void *)lbe, status);
// Even if we can't remember it, we can keep looking it up, so
// return it even if the push fails.
@@ -1264,9 +1239,9 @@ RuleBasedBreakIterator::getLanguageBreakEngine(UChar32 c) {
// No engine is forthcoming for this character. Add it to the
// reject set. Create the reject break engine if needed.
- if (fUnhandledBreakEngine == NULL) {
+ if (fUnhandledBreakEngine == nullptr) {
fUnhandledBreakEngine = new UnhandledEngine(status);
- if (U_SUCCESS(status) && fUnhandledBreakEngine == NULL) {
+ if (U_SUCCESS(status) && fUnhandledBreakEngine == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return nullptr;
}
@@ -1278,7 +1253,7 @@ RuleBasedBreakIterator::getLanguageBreakEngine(UChar32 c) {
if (U_FAILURE(status)) {
delete fUnhandledBreakEngine;
fUnhandledBreakEngine = 0;
- return NULL;
+ return nullptr;
}
}
@@ -1289,6 +1264,18 @@ RuleBasedBreakIterator::getLanguageBreakEngine(UChar32 c) {
return fUnhandledBreakEngine;
}
+#ifndef U_HIDE_DRAFT_API
+void U_EXPORT2 RuleBasedBreakIterator::registerExternalBreakEngine(
+ ExternalBreakEngine* toAdopt, UErrorCode& status) {
+ LocalPointer<ExternalBreakEngine> engine(toAdopt, status);
+ if (U_FAILURE(status)) return;
+ ensureLanguageFactories(status);
+ if (U_FAILURE(status)) return;
+ gICULanguageBreakFactory->addExternalEngine(engine.orphan(), status);
+}
+#endif /* U_HIDE_DRAFT_API */
+
+
void RuleBasedBreakIterator::dumpCache() {
fBreakCache->dumpCache();
}
@@ -1303,7 +1290,7 @@ void RuleBasedBreakIterator::dumpTables() {
const UnicodeString&
RuleBasedBreakIterator::getRules() const {
- if (fData != NULL) {
+ if (fData != nullptr) {
return fData->getRuleSourceString();
} else {
umtx_initOnce(gRBBIInitOnce, &rbbiInit);
diff --git a/Build/source/libs/icu/icu-src/source/common/rbbi_cache.cpp b/Build/source/libs/icu/icu-src/source/common/rbbi_cache.cpp
index 45e02528cf9..f7a283f69e4 100644
--- a/Build/source/libs/icu/icu-src/source/common/rbbi_cache.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/rbbi_cache.cpp
@@ -158,12 +158,13 @@ void RuleBasedBreakIterator::DictionaryCache::populateDictionary(int32_t startPo
// We now have a dictionary character. Get the appropriate language object
// to deal with it.
- const LanguageBreakEngine *lbe = fBI->getLanguageBreakEngine(c);
+ const LanguageBreakEngine *lbe = fBI->getLanguageBreakEngine(
+ c, fBI->getLocaleID(ULOC_REQUESTED_LOCALE, status));
// Ask the language object if there are any breaks. It will add them to the cache and
// leave the text pointer on the other side of its range, ready to search for the next one.
- if (lbe != NULL) {
- foundBreakCount += lbe->findBreaks(text, rangeStart, rangeEnd, fBreaks, fBI->fIsPhraseBreaking, status);
+ if (lbe != nullptr) {
+ foundBreakCount += lbe->findBreaks(text, current, rangeEnd, fBreaks, fBI->fIsPhraseBreaking, status);
}
// Reload the loop variables for the next go-round
diff --git a/Build/source/libs/icu/icu-src/source/common/rbbidata.cpp b/Build/source/libs/icu/icu-src/source/common/rbbidata.cpp
index f50fc458a51..49603b61934 100644
--- a/Build/source/libs/icu/icu-src/source/common/rbbidata.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/rbbidata.cpp
@@ -78,13 +78,13 @@ UBool RBBIDataWrapper::isDataVersionAcceptable(const UVersionInfo version) {
//
//-----------------------------------------------------------------------------
void RBBIDataWrapper::init0() {
- fHeader = NULL;
- fForwardTable = NULL;
- fReverseTable = NULL;
- fRuleSource = NULL;
- fRuleStatusTable = NULL;
- fTrie = NULL;
- fUDataMem = NULL;
+ fHeader = nullptr;
+ fForwardTable = nullptr;
+ fReverseTable = nullptr;
+ fRuleSource = nullptr;
+ fRuleStatusTable = nullptr;
+ fTrie = nullptr;
+ fUDataMem = nullptr;
fRefCount = 0;
fDontFreeData = true;
}
@@ -246,7 +246,7 @@ void RBBIDataWrapper::printTable(const char *heading, const RBBIStateTable *tab
}
RBBIDebugPrintf("\n");
- if (table == NULL) {
+ if (table == nullptr) {
RBBIDebugPrintf(" N U L L T A B L E\n\n");
return;
}
@@ -305,10 +305,10 @@ U_CAPI int32_t U_EXPORT2
ubrk_swap(const UDataSwapper *ds, const void *inData, int32_t length, void *outData,
UErrorCode *status) {
- if (status == NULL || U_FAILURE(*status)) {
+ if (status == nullptr || U_FAILURE(*status)) {
return 0;
}
- if(ds==NULL || inData==NULL || length<-1 || (length>0 && outData==NULL)) {
+ if(ds==nullptr || inData==nullptr || length<-1 || (length>0 && outData==nullptr)) {
*status=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
diff --git a/Build/source/libs/icu/icu-src/source/common/rbbidata.h b/Build/source/libs/icu/icu-src/source/common/rbbidata.h
index 1bc76d5e5dc..c48de3d9357 100644
--- a/Build/source/libs/icu/icu-src/source/common/rbbidata.h
+++ b/Build/source/libs/icu/icu-src/source/common/rbbidata.h
@@ -85,7 +85,7 @@ struct RBBIDataHeader {
uint32_t fTrie; /* Offset to Trie data for character categories */
uint32_t fTrieLen;
uint32_t fRuleSource; /* Offset to the source for for the break */
- uint32_t fRuleSourceLen; /* rules. Stored UChar *. */
+ uint32_t fRuleSourceLen; /* rules. Stored char16_t *. */
uint32_t fStatusTable; /* Offset to the table of rule status values */
uint32_t fStatusTableLen;
@@ -205,7 +205,7 @@ private:
U_NAMESPACE_END
-U_CFUNC UBool rbbi_cleanup(void);
+U_CFUNC UBool rbbi_cleanup();
#endif /* C++ */
diff --git a/Build/source/libs/icu/icu-src/source/common/rbbinode.cpp b/Build/source/libs/icu/icu-src/source/common/rbbinode.cpp
index da5937cafd7..7aa75d5ffb7 100644
--- a/Build/source/libs/icu/icu-src/source/common/rbbinode.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/rbbinode.cpp
@@ -52,10 +52,10 @@ RBBINode::RBBINode(NodeType t) : UMemory() {
fSerialNum = ++gLastSerial;
#endif
fType = t;
- fParent = NULL;
- fLeftChild = NULL;
- fRightChild = NULL;
- fInputSet = NULL;
+ fParent = nullptr;
+ fLeftChild = nullptr;
+ fRightChild = nullptr;
+ fInputSet = nullptr;
fFirstPos = 0;
fLastPos = 0;
fNullable = false;
@@ -82,9 +82,9 @@ RBBINode::RBBINode(const RBBINode &other) : UMemory(other) {
fSerialNum = ++gLastSerial;
#endif
fType = other.fType;
- fParent = NULL;
- fLeftChild = NULL;
- fRightChild = NULL;
+ fParent = nullptr;
+ fLeftChild = nullptr;
+ fRightChild = nullptr;
fInputSet = other.fInputSet;
fPrecedence = other.fPrecedence;
fText = other.fText;
@@ -113,7 +113,7 @@ RBBINode::RBBINode(const RBBINode &other) : UMemory(other) {
RBBINode::~RBBINode() {
// printf("deleting node %8x serial %4d\n", this, this->fSerialNum);
delete fInputSet;
- fInputSet = NULL;
+ fInputSet = nullptr;
switch (this->fType) {
case varRef:
@@ -124,9 +124,9 @@ RBBINode::~RBBINode() {
default:
delete fLeftChild;
- fLeftChild = NULL;
+ fLeftChild = nullptr;
delete fRightChild;
- fRightChild = NULL;
+ fRightChild = nullptr;
}
@@ -158,12 +158,12 @@ RBBINode *RBBINode::cloneTree() {
} else {
n = new RBBINode(*this);
// Check for null pointer.
- if (n != NULL) {
- if (fLeftChild != NULL) {
+ if (n != nullptr) {
+ if (fLeftChild != nullptr) {
n->fLeftChild = fLeftChild->cloneTree();
n->fLeftChild->fParent = n;
}
- if (fRightChild != NULL) {
+ if (fRightChild != nullptr) {
n->fRightChild = fRightChild->cloneTree();
n->fRightChild->fParent = n;
}
@@ -195,7 +195,7 @@ RBBINode *RBBINode::cloneTree() {
RBBINode *RBBINode::flattenVariables() {
if (fType == varRef) {
RBBINode *retNode = fLeftChild->cloneTree();
- if (retNode != NULL) {
+ if (retNode != nullptr) {
retNode->fRuleRoot = this->fRuleRoot;
retNode->fChainIn = this->fChainIn;
}
@@ -203,11 +203,11 @@ RBBINode *RBBINode::flattenVariables() {
return retNode;
}
- if (fLeftChild != NULL) {
+ if (fLeftChild != nullptr) {
fLeftChild = fLeftChild->flattenVariables();
fLeftChild->fParent = this;
}
- if (fRightChild != NULL) {
+ if (fRightChild != nullptr) {
fRightChild = fRightChild->flattenVariables();
fRightChild->fParent = this;
}
@@ -226,7 +226,7 @@ RBBINode *RBBINode::flattenVariables() {
void RBBINode::flattenSets() {
U_ASSERT(fType != setRef);
- if (fLeftChild != NULL) {
+ if (fLeftChild != nullptr) {
if (fLeftChild->fType==setRef) {
RBBINode *setRefNode = fLeftChild;
RBBINode *usetNode = setRefNode->fLeftChild;
@@ -239,7 +239,7 @@ void RBBINode::flattenSets() {
}
}
- if (fRightChild != NULL) {
+ if (fRightChild != nullptr) {
if (fRightChild->fType==setRef) {
RBBINode *setRefNode = fRightChild;
RBBINode *usetNode = setRefNode->fLeftChild;
@@ -270,10 +270,10 @@ void RBBINode::findNodes(UVector *dest, RBBINode::NodeType kind, UErrorCode &s
if (fType == kind) {
dest->addElement(this, status);
}
- if (fLeftChild != NULL) {
+ if (fLeftChild != nullptr) {
fLeftChild->findNodes(dest, kind, status);
}
- if (fRightChild != NULL) {
+ if (fRightChild != nullptr) {
fRightChild->findNodes(dest, kind, status);
}
}
@@ -287,7 +287,7 @@ void RBBINode::findNodes(UVector *dest, RBBINode::NodeType kind, UErrorCode &s
#ifdef RBBI_DEBUG
static int32_t serial(const RBBINode *node) {
- return (node == NULL? -1 : node->fSerialNum);
+ return (node == nullptr? -1 : node->fSerialNum);
}
@@ -311,7 +311,7 @@ void RBBINode::printNode(const RBBINode *node) {
"opLParen"
};
- if (node==NULL) {
+ if (node==nullptr) {
RBBIDebugPrintf("%10p", (void *)node);
} else {
RBBIDebugPrintf("%10p %5d %12s %c%c %5d %5d %5d %6d %d ",
@@ -350,15 +350,15 @@ void RBBINode::printTree(const RBBINode *node, UBool printHeading) {
printNodeHeader();
}
printNode(node);
- if (node != NULL) {
+ if (node != nullptr) {
// Only dump the definition under a variable reference if asked to.
// Unconditionally dump children of all other node types.
if (node->fType != varRef) {
- if (node->fLeftChild != NULL) {
+ if (node->fLeftChild != nullptr) {
printTree(node->fLeftChild, false);
}
- if (node->fRightChild != NULL) {
+ if (node->fRightChild != nullptr) {
printTree(node->fRightChild, false);
}
}
diff --git a/Build/source/libs/icu/icu-src/source/common/rbbirb.cpp b/Build/source/libs/icu/icu-src/source/common/rbbirb.cpp
index a9d76f24827..92cccc1a339 100644
--- a/Build/source/libs/icu/icu-src/source/common/rbbirb.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/rbbirb.cpp
@@ -52,26 +52,25 @@ RBBIRuleBuilder::RBBIRuleBuilder(const UnicodeString &rules,
{
fStatus = &status; // status is checked below
fParseError = parseErr;
- fDebugEnv = NULL;
+ fDebugEnv = nullptr;
#ifdef RBBI_DEBUG
fDebugEnv = getenv("U_RBBIDEBUG");
#endif
- fForwardTree = NULL;
- fReverseTree = NULL;
- fSafeFwdTree = NULL;
- fSafeRevTree = NULL;
+ fForwardTree = nullptr;
+ fReverseTree = nullptr;
+ fSafeFwdTree = nullptr;
+ fSafeRevTree = nullptr;
fDefaultTree = &fForwardTree;
- fForwardTable = NULL;
- fRuleStatusVals = NULL;
+ fForwardTable = nullptr;
+ fRuleStatusVals = nullptr;
fChainRules = false;
- fLBCMNoChain = false;
fLookAheadHardBreak = false;
- fUSetNodes = NULL;
- fRuleStatusVals = NULL;
- fScanner = NULL;
- fSetBuilder = NULL;
+ fUSetNodes = nullptr;
+ fRuleStatusVals = nullptr;
+ fScanner = nullptr;
+ fSetBuilder = nullptr;
if (parseErr) {
uprv_memset(parseErr, 0, sizeof(UParseError));
}
@@ -104,7 +103,7 @@ RBBIRuleBuilder::~RBBIRuleBuilder() {
int i;
for (i=0; ; i++) {
RBBINode *n = (RBBINode *)fUSetNodes->elementAt(i);
- if (n==NULL) {
+ if (n==nullptr) {
break;
}
delete n;
@@ -138,7 +137,7 @@ RBBIDataHeader *RBBIRuleBuilder::flattenData() {
int32_t i;
if (U_FAILURE(*fStatus)) {
- return NULL;
+ return nullptr;
}
// Remove whitespace from the rules to make it smaller.
@@ -183,9 +182,9 @@ RBBIDataHeader *RBBIRuleBuilder::flattenData() {
#endif
RBBIDataHeader *data = (RBBIDataHeader *)uprv_malloc(totalSize);
- if (data == NULL) {
+ if (data == nullptr) {
*fStatus = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
uprv_memset(data, 0, totalSize);
@@ -226,7 +225,7 @@ RBBIDataHeader *RBBIRuleBuilder::flattenData() {
fStrippedRules.getBuffer(), fStrippedRules.length(),
0xfffd, nullptr, fStatus);
if (U_FAILURE(*fStatus)) {
- return NULL;
+ return nullptr;
}
return data;
@@ -250,7 +249,7 @@ RBBIRuleBuilder::createRuleBasedBreakIterator( const UnicodeString &rules,
//
RBBIRuleBuilder builder(rules, parseError, status);
if (U_FAILURE(status)) { // status checked here bcos build below doesn't
- return NULL;
+ return nullptr;
}
RBBIDataHeader *data = builder.build(status);
@@ -267,9 +266,9 @@ RBBIRuleBuilder::createRuleBasedBreakIterator( const UnicodeString &rules,
RuleBasedBreakIterator *This = new RuleBasedBreakIterator(data, status);
if (U_FAILURE(status)) {
delete This;
- This = NULL;
+ This = nullptr;
}
- else if(This == NULL) { // test for NULL
+ else if(This == nullptr) { // test for nullptr
status = U_MEMORY_ALLOCATION_ERROR;
}
return This;
@@ -328,7 +327,7 @@ RBBIDataHeader *RBBIRuleBuilder::build(UErrorCode &status) {
// Package up the compiled data into a memory image
// in the run-time format.
//
- RBBIDataHeader *data = flattenData(); // returns NULL if error
+ RBBIDataHeader *data = flattenData(); // returns nullptr if error
if (U_FAILURE(status)) {
return nullptr;
}
diff --git a/Build/source/libs/icu/icu-src/source/common/rbbirb.h b/Build/source/libs/icu/icu-src/source/common/rbbirb.h
index d983a184b64..96d3aa643dd 100644
--- a/Build/source/libs/icu/icu-src/source/common/rbbirb.h
+++ b/Build/source/libs/icu/icu-src/source/common/rbbirb.h
@@ -159,9 +159,6 @@ public:
UBool fChainRules; // True for chained Unicode TR style rules.
// False for traditional regexp rules.
- UBool fLBCMNoChain; // True: suppress chaining of rules on
- // chars with LineBreak property == CM.
-
UBool fLookAheadHardBreak; // True: Look ahead matches cause an
// immediate break, no continuing for the
// longest match.
diff --git a/Build/source/libs/icu/icu-src/source/common/rbbiscan.cpp b/Build/source/libs/icu/icu-src/source/common/rbbiscan.cpp
index 92cf77664f6..844b0639099 100644
--- a/Build/source/libs/icu/icu-src/source/common/rbbiscan.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/rbbiscan.cpp
@@ -46,7 +46,7 @@
// source form of the state transition table for the RBBI rule parser.
//
//------------------------------------------------------------------------------
-static const UChar gRuleSet_rule_char_pattern[] = {
+static const char16_t gRuleSet_rule_char_pattern[] = {
// Characters that may appear as literals in patterns without escaping or quoting.
// [ ^ [ \ p { Z } \ u 0 0 2 0
0x5b, 0x5e, 0x5b, 0x5c, 0x70, 0x7b, 0x5a, 0x7d, 0x5c, 0x75, 0x30, 0x30, 0x32, 0x30,
@@ -55,19 +55,19 @@ static const UChar gRuleSet_rule_char_pattern[] = {
// { L } ] - [ \ p { N } ] ]
0x7b, 0x4c, 0x7d, 0x5d, 0x2d, 0x5b, 0x5c, 0x70, 0x7b, 0x4e, 0x7d, 0x5d, 0x5d, 0};
-static const UChar gRuleSet_name_char_pattern[] = {
+static const char16_t gRuleSet_name_char_pattern[] = {
// [ _ \ p { L } \ p { N } ]
0x5b, 0x5f, 0x5c, 0x70, 0x7b, 0x4c, 0x7d, 0x5c, 0x70, 0x7b, 0x4e, 0x7d, 0x5d, 0};
-static const UChar gRuleSet_digit_char_pattern[] = {
+static const char16_t gRuleSet_digit_char_pattern[] = {
// [ 0 - 9 ]
0x5b, 0x30, 0x2d, 0x39, 0x5d, 0};
-static const UChar gRuleSet_name_start_char_pattern[] = {
+static const char16_t gRuleSet_name_start_char_pattern[] = {
// [ _ \ p { L } ]
0x5b, 0x5f, 0x5c, 0x70, 0x7b, 0x4c, 0x7d, 0x5d, 0 };
-static const UChar kAny[] = {0x61, 0x6e, 0x79, 0x00}; // "any"
+static const char16_t kAny[] = {0x61, 0x6e, 0x79, 0x00}; // "any"
U_CDECL_BEGIN
@@ -97,18 +97,18 @@ RBBIRuleScanner::RBBIRuleScanner(RBBIRuleBuilder *rb)
fCharNum = 0;
fLastChar = 0;
- fStateTable = NULL;
+ fStateTable = nullptr;
fStack[0] = 0;
fStackPtr = 0;
- fNodeStack[0] = NULL;
+ fNodeStack[0] = nullptr;
fNodeStackPtr = 0;
fReverseRule = false;
fLookAheadRule = false;
fNoChainInRule = false;
- fSymbolTable = NULL;
- fSetTable = NULL;
+ fSymbolTable = nullptr;
+ fSetTable = nullptr;
fRuleNum = 0;
fOptionStart = 0;
@@ -146,11 +146,11 @@ RBBIRuleScanner::RBBIRuleScanner(RBBIRuleBuilder *rb)
}
fSymbolTable = new RBBISymbolTable(this, rb->fRules, *rb->fStatus);
- if (fSymbolTable == NULL) {
+ if (fSymbolTable == nullptr) {
*rb->fStatus = U_MEMORY_ALLOCATION_ERROR;
return;
}
- fSetTable = uhash_open(uhash_hashUnicodeString, uhash_compareUnicodeString, NULL, rb->fStatus);
+ fSetTable = uhash_open(uhash_hashUnicodeString, uhash_compareUnicodeString, nullptr, rb->fStatus);
if (U_FAILURE(*rb->fStatus)) {
return;
}
@@ -166,9 +166,9 @@ RBBIRuleScanner::RBBIRuleScanner(RBBIRuleBuilder *rb)
//------------------------------------------------------------------------------
RBBIRuleScanner::~RBBIRuleScanner() {
delete fSymbolTable;
- if (fSetTable != NULL) {
+ if (fSetTable != nullptr) {
uhash_close(fSetTable);
- fSetTable = NULL;
+ fSetTable = nullptr;
}
@@ -199,7 +199,7 @@ RBBIRuleScanner::~RBBIRuleScanner() {
//------------------------------------------------------------------------------
UBool RBBIRuleScanner::doParseActions(int32_t action)
{
- RBBINode *n = NULL;
+ RBBINode *n = nullptr;
UBool returnVal = true;
@@ -374,7 +374,7 @@ UBool RBBIRuleScanner::doParseActions(int32_t action)
//
RBBINode **destRules = (fReverseRule? &fRB->fSafeRevTree : fRB->fDefaultTree);
- if (*destRules != NULL) {
+ if (*destRules != nullptr) {
// This is not the first rule encountered.
// OR previous stuff (from *destRules)
// with the current rule expression (on the Node Stack)
@@ -547,8 +547,6 @@ UBool RBBIRuleScanner::doParseActions(int32_t action)
UnicodeString opt(fRB->fRules, fOptionStart, fScanIndex-fOptionStart);
if (opt == UNICODE_STRING("chain", 5)) {
fRB->fChainRules = true;
- } else if (opt == UNICODE_STRING("LBCMNoChain", 11)) {
- fRB->fLBCMNoChain = true;
} else if (opt == UNICODE_STRING("forward", 7)) {
fRB->fDefaultTree = &fRB->fForwardTree;
} else if (opt == UNICODE_STRING("reverse", 7)) {
@@ -583,7 +581,7 @@ UBool RBBIRuleScanner::doParseActions(int32_t action)
case doEndVariableName:
n = fNodeStack[fNodeStackPtr];
- if (n==NULL || n->fType != RBBINode::varRef) {
+ if (n==nullptr || n->fType != RBBINode::varRef) {
error(U_BRK_INTERNAL_ERROR);
break;
}
@@ -598,7 +596,7 @@ UBool RBBIRuleScanner::doParseActions(int32_t action)
case doCheckVarDef:
n = fNodeStack[fNodeStackPtr];
- if (n->fLeftChild == NULL) {
+ if (n->fLeftChild == nullptr) {
error(U_BRK_UNDEFINED_VARIABLE);
returnVal = false;
}
@@ -737,7 +735,7 @@ void RBBIRuleScanner::findSetFor(const UnicodeString &s, RBBINode *node, Unicode
// If so, just use the cached set in the new node.
// delete any set provided by the caller, since we own it.
el = (RBBISetTableEl *)uhash_get(fSetTable, &s);
- if (el != NULL) {
+ if (el != nullptr) {
delete setToAdopt;
node->fLeftChild = el->val;
U_ASSERT(node->fLeftChild->fType == RBBINode::uset);
@@ -747,7 +745,7 @@ void RBBIRuleScanner::findSetFor(const UnicodeString &s, RBBINode *node, Unicode
// 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 (setToAdopt == nullptr) {
if (s.compare(kAny, -1) == 0) {
setToAdopt = new UnicodeSet(0x000000, 0x10ffff);
} else {
@@ -762,7 +760,7 @@ void RBBIRuleScanner::findSetFor(const UnicodeString &s, RBBINode *node, Unicode
// This new uset node becomes the child of the caller's setReference node.
//
RBBINode *usetNode = new RBBINode(RBBINode::uset);
- if (usetNode == NULL) {
+ if (usetNode == nullptr) {
error(U_MEMORY_ALLOCATION_ERROR);
return;
}
@@ -783,14 +781,14 @@ void RBBIRuleScanner::findSetFor(const UnicodeString &s, RBBINode *node, Unicode
//
el = (RBBISetTableEl *)uprv_malloc(sizeof(RBBISetTableEl));
UnicodeString *tkey = new UnicodeString(s);
- if (tkey == NULL || el == NULL || setToAdopt == NULL) {
+ if (tkey == nullptr || el == nullptr || setToAdopt == nullptr) {
// Delete to avoid memory leak
delete tkey;
- tkey = NULL;
+ tkey = nullptr;
uprv_free(el);
- el = NULL;
+ el = nullptr;
delete setToAdopt;
- setToAdopt = NULL;
+ setToAdopt = nullptr;
error(U_MEMORY_ALLOCATION_ERROR);
return;
@@ -809,15 +807,15 @@ void RBBIRuleScanner::findSetFor(const UnicodeString &s, RBBINode *node, Unicode
// Numeric because there is no portable way to enter them as literals.
// (Think EBCDIC).
//
-static const UChar chCR = 0x0d; // New lines, for terminating comments.
-static const UChar chLF = 0x0a;
-static const UChar chNEL = 0x85; // NEL newline variant
-static const UChar chLS = 0x2028; // Unicode Line Separator
-static const UChar chApos = 0x27; // single quote, for quoted chars.
-static const UChar chPound = 0x23; // '#', introduces a comment.
-static const UChar chBackSlash = 0x5c; // '\' introduces a char escape
-static const UChar chLParen = 0x28;
-static const UChar chRParen = 0x29;
+static const char16_t chCR = 0x0d; // New lines, for terminating comments.
+static const char16_t chLF = 0x0a;
+static const char16_t chNEL = 0x85; // NEL newline variant
+static const char16_t chLS = 0x2028; // Unicode Line Separator
+static const char16_t chApos = 0x27; // single quote, for quoted chars.
+static const char16_t chPound = 0x23; // '#', introduces a comment.
+static const char16_t chBackSlash = 0x5c; // '\' introduces a char escape
+static const char16_t chLParen = 0x28;
+static const char16_t chRParen = 0x29;
//------------------------------------------------------------------------------
@@ -918,7 +916,7 @@ void RBBIRuleScanner::nextChar(RBBIRuleChar &c) {
// Toggle quoting mode.
// Return either '(' or ')', because quotes cause a grouping of the quoted text.
fQuoteMode = !fQuoteMode;
- if (fQuoteMode == true) {
+ if (fQuoteMode) {
c.fChar = chLParen;
} else {
c.fChar = chRParen;
@@ -1119,7 +1117,7 @@ void RBBIRuleScanner::parse() {
// If there are no forward rules set an error.
//
- if (fRB->fForwardTree == NULL) {
+ if (fRB->fForwardTree == nullptr) {
error(U_BRK_RULE_SYNTAX);
return;
}
@@ -1169,16 +1167,16 @@ void RBBIRuleScanner::printNodeStack(const char *title) {
//------------------------------------------------------------------------------
RBBINode *RBBIRuleScanner::pushNewNode(RBBINode::NodeType t) {
if (U_FAILURE(*fRB->fStatus)) {
- return NULL;
+ return nullptr;
}
if (fNodeStackPtr >= kStackSize - 1) {
error(U_BRK_RULE_SYNTAX);
RBBIDebugPuts("RBBIRuleScanner::pushNewNode - stack overflow.");
- return NULL;
+ return nullptr;
}
fNodeStackPtr++;
fNodeStack[fNodeStackPtr] = new RBBINode(t);
- if (fNodeStack[fNodeStackPtr] == NULL) {
+ if (fNodeStack[fNodeStackPtr] == nullptr) {
*fRB->fStatus = U_MEMORY_ALLOCATION_ERROR;
}
return fNodeStack[fNodeStackPtr];
@@ -1214,7 +1212,7 @@ void RBBIRuleScanner::scanSet() {
startPos = fScanIndex;
UErrorCode localStatus = U_ZERO_ERROR;
uset = new UnicodeSet();
- if (uset == NULL) {
+ if (uset == nullptr) {
localStatus = U_MEMORY_ALLOCATION_ERROR;
} else {
uset->applyPatternIgnoreSpace(fRB->fRules, pos, fSymbolTable, localStatus);
@@ -1232,7 +1230,7 @@ void RBBIRuleScanner::scanSet() {
// Verify that the set contains at least one code point.
//
- U_ASSERT(uset!=NULL);
+ U_ASSERT(uset!=nullptr);
if (uset->isEmpty()) {
// This set is empty.
// Make it an error, because it almost certainly is not what the user wanted.
diff --git a/Build/source/libs/icu/icu-src/source/common/rbbiscan.h b/Build/source/libs/icu/icu-src/source/common/rbbiscan.h
index bf3203880bc..8a419b9d76b 100644
--- a/Build/source/libs/icu/icu-src/source/common/rbbiscan.h
+++ b/Build/source/libs/icu/icu-src/source/common/rbbiscan.h
@@ -86,7 +86,7 @@ private:
void error(UErrorCode e); // error reporting convenience function.
void fixOpStack(RBBINode::OpPrecedence p);
// a character.
- void findSetFor(const UnicodeString &s, RBBINode *node, UnicodeSet *setToAdopt = NULL);
+ void findSetFor(const UnicodeString &s, RBBINode *node, UnicodeSet *setToAdopt = nullptr);
UChar32 nextCharLL();
#ifdef RBBI_DEBUG
diff --git a/Build/source/libs/icu/icu-src/source/common/rbbisetb.cpp b/Build/source/libs/icu/icu-src/source/common/rbbisetb.cpp
index 11c47156d64..e6c72954bc3 100644
--- a/Build/source/libs/icu/icu-src/source/common/rbbisetb.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/rbbisetb.cpp
@@ -74,7 +74,7 @@ RBBISetBuilder::~RBBISetBuilder()
RangeDescriptor *nextRangeDesc;
// Walk through & delete the linked list of RangeDescriptors
- for (nextRangeDesc = fRangeList; nextRangeDesc!=NULL;) {
+ for (nextRangeDesc = fRangeList; nextRangeDesc!=nullptr;) {
RangeDescriptor *r = nextRangeDesc;
nextRangeDesc = r->fNext;
delete r;
@@ -104,7 +104,7 @@ void RBBISetBuilder::buildRanges() {
// that is in no sets.
//
fRangeList = new RangeDescriptor(*fStatus); // will check for status here
- if (fRangeList == NULL) {
+ if (fRangeList == nullptr) {
*fStatus = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -121,7 +121,7 @@ void RBBISetBuilder::buildRanges() {
int ni;
for (ni=0; ; ni++) { // Loop over each of the UnicodeSets encountered in the input rules
usetNode = (RBBINode *)this->fRB->fUSetNodes->elementAt(ni);
- if (usetNode==NULL) {
+ if (usetNode==nullptr) {
break;
}
@@ -252,7 +252,7 @@ void RBBISetBuilder::buildRanges() {
UnicodeString bofString(u"bof");
for (ni=0; ; ni++) { // Loop over each of the UnicodeSets encountered in the input rules
usetNode = (RBBINode *)this->fRB->fUSetNodes->elementAt(ni);
- if (usetNode==NULL) {
+ if (usetNode==nullptr) {
break;
}
UnicodeSet *inputSet = usetNode->fInputSet;
@@ -376,12 +376,12 @@ void RBBISetBuilder::addValToSets(UVector *sets, uint32_t val) {
void RBBISetBuilder::addValToSet(RBBINode *usetNode, uint32_t val) {
RBBINode *leafNode = new RBBINode(RBBINode::leafChar);
- if (leafNode == NULL) {
+ if (leafNode == nullptr) {
*fStatus = U_MEMORY_ALLOCATION_ERROR;
return;
}
leafNode->fVal = (unsigned short)val;
- if (usetNode->fLeftChild == NULL) {
+ if (usetNode->fLeftChild == nullptr) {
usetNode->fLeftChild = leafNode;
leafNode->fParent = usetNode;
} else {
@@ -389,7 +389,7 @@ void RBBISetBuilder::addValToSet(RBBINode *usetNode, uint32_t val) {
// 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);
- if (orNode == NULL) {
+ if (orNode == nullptr) {
*fStatus = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -507,9 +507,9 @@ void RBBISetBuilder::printRangeGroups() {
RBBINode *usetNode = (RBBINode *)rlRange->fIncludesSets->elementAt(i);
UnicodeString setName = UNICODE_STRING("anon", 4);
RBBINode *setRef = usetNode->fParent;
- if (setRef != NULL) {
+ if (setRef != nullptr) {
RBBINode *varRef = setRef->fParent;
- if (varRef != NULL && varRef->fType == RBBINode::varRef) {
+ if (varRef != nullptr && varRef->fType == RBBINode::varRef) {
setName = varRef->fText;
}
}
@@ -551,16 +551,16 @@ void RBBISetBuilder::printSets() {
UnicodeString setName;
usetNode = (RBBINode *)fRB->fUSetNodes->elementAt(i);
- if (usetNode == NULL) {
+ if (usetNode == nullptr) {
break;
}
RBBIDebugPrintf("%3d ", i);
setName = UNICODE_STRING("anonymous", 9);
setRef = usetNode->fParent;
- if (setRef != NULL) {
+ if (setRef != nullptr) {
varRef = setRef->fParent;
- if (varRef != NULL && varRef->fType == RBBINode::varRef) {
+ if (varRef != nullptr && varRef->fType == RBBINode::varRef) {
setName = varRef->fText;
}
}
@@ -568,7 +568,7 @@ void RBBISetBuilder::printSets() {
RBBIDebugPrintf(" ");
RBBI_DEBUG_printUnicodeString(usetNode->fText);
RBBIDebugPrintf("\n");
- if (usetNode->fLeftChild != NULL) {
+ if (usetNode->fLeftChild != nullptr) {
RBBINode::printTree(usetNode->fLeftChild, true);
}
}
diff --git a/Build/source/libs/icu/icu-src/source/common/rbbistbl.cpp b/Build/source/libs/icu/icu-src/source/common/rbbistbl.cpp
index 554aeb793f7..844351bd0df 100644
--- a/Build/source/libs/icu/icu-src/source/common/rbbistbl.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/rbbistbl.cpp
@@ -41,12 +41,12 @@ U_CDECL_END
U_NAMESPACE_BEGIN
RBBISymbolTable::RBBISymbolTable(RBBIRuleScanner *rs, const UnicodeString &rules, UErrorCode &status)
- :fRules(rules), fRuleScanner(rs), ffffString(UChar(0xffff))
+ :fRules(rules), fRuleScanner(rs), ffffString(char16_t(0xffff))
{
- fHashTable = NULL;
- fCachedSetLookup = NULL;
+ fHashTable = nullptr;
+ fCachedSetLookup = nullptr;
- fHashTable = uhash_open(uhash_hashUnicodeString, uhash_compareUnicodeString, NULL, &status);
+ fHashTable = uhash_open(uhash_hashUnicodeString, uhash_compareUnicodeString, nullptr, &status);
// uhash_open checks status
if (U_FAILURE(status)) {
return;
@@ -79,8 +79,8 @@ const UnicodeString *RBBISymbolTable::lookup(const UnicodeString& s) const
RBBISymbolTable *This = (RBBISymbolTable *)this; // cast off const
el = (RBBISymbolTableEntry *)uhash_get(fHashTable, &s);
- if (el == NULL) {
- return NULL;
+ if (el == nullptr) {
+ return nullptr;
}
varRefNode = el->val;
@@ -98,7 +98,7 @@ const UnicodeString *RBBISymbolTable::lookup(const UnicodeString& s) const
// The variable refers to something other than just a set.
// return the original source string for the expression
retString = &exprNode->fText;
- This->fCachedSetLookup = NULL;
+ This->fCachedSetLookup = nullptr;
}
return retString;
}
@@ -118,7 +118,7 @@ const UnicodeString *RBBISymbolTable::lookup(const UnicodeString& s) const
// and we just need to remember what set to return between these two calls.
const UnicodeFunctor *RBBISymbolTable::lookupMatcher(UChar32 ch) const
{
- UnicodeSet *retVal = NULL;
+ UnicodeSet *retVal = nullptr;
RBBISymbolTable *This = (RBBISymbolTable *)this; // cast off const
if (ch == 0xffff) {
retVal = fCachedSetLookup;
@@ -144,7 +144,7 @@ UnicodeString RBBISymbolTable::parseReference(const UnicodeString& text,
int32_t i = start;
UnicodeString result;
while (i < limit) {
- UChar c = text.charAt(i);
+ char16_t c = text.charAt(i);
if ((i==start && !u_isIDStart(c)) || !u_isIDPart(c)) {
break;
}
@@ -163,15 +163,15 @@ UnicodeString RBBISymbolTable::parseReference(const UnicodeString& text,
//
// 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.
+// in the table for this name, return nullptr.
//
RBBINode *RBBISymbolTable::lookupNode(const UnicodeString &key) const{
- RBBINode *retNode = NULL;
+ RBBINode *retNode = nullptr;
RBBISymbolTableEntry *el;
el = (RBBISymbolTableEntry *)uhash_get(fHashTable, &key);
- if (el != NULL) {
+ if (el != nullptr) {
retNode = el->val;
}
return retNode;
@@ -191,13 +191,13 @@ void RBBISymbolTable::addEntry (const UnicodeString &key, RBBINode *
return;
}
e = (RBBISymbolTableEntry *)uhash_get(fHashTable, &key);
- if (e != NULL) {
+ if (e != nullptr) {
err = U_BRK_VARIABLE_REDFINITION;
return;
}
e = new RBBISymbolTableEntry;
- if (e == NULL) {
+ if (e == nullptr) {
err = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -207,7 +207,7 @@ void RBBISymbolTable::addEntry (const UnicodeString &key, RBBINode *
}
-RBBISymbolTableEntry::RBBISymbolTableEntry() : UMemory(), key(), val(NULL) {}
+RBBISymbolTableEntry::RBBISymbolTableEntry() : UMemory(), key(), val(nullptr) {}
RBBISymbolTableEntry::~RBBISymbolTableEntry() {
// The "val" of a symbol table entry is a variable reference node.
@@ -215,7 +215,7 @@ RBBISymbolTableEntry::~RBBISymbolTableEntry() {
// Unlike other node types, children of variable reference nodes are not
// automatically recursively deleted. We do it manually here.
delete val->fLeftChild;
- val->fLeftChild = NULL;
+ val->fLeftChild = nullptr;
delete val;
@@ -233,10 +233,10 @@ void RBBISymbolTable::rbbiSymtablePrint() const {
"-------------------------------------------------------------------\n");
int32_t pos = UHASH_FIRST;
- const UHashElement *e = NULL;
+ const UHashElement *e = nullptr;
for (;;) {
e = uhash_nextElement(fHashTable, &pos);
- if (e == NULL ) {
+ if (e == nullptr ) {
break;
}
RBBISymbolTableEntry *s = (RBBISymbolTableEntry *)e->value.pointer;
@@ -249,7 +249,7 @@ void RBBISymbolTable::rbbiSymtablePrint() const {
pos = -1;
for (;;) {
e = uhash_nextElement(fHashTable, &pos);
- if (e == NULL ) {
+ if (e == nullptr ) {
break;
}
RBBISymbolTableEntry *s = (RBBISymbolTableEntry *)e->value.pointer;
diff --git a/Build/source/libs/icu/icu-src/source/common/rbbitblb.cpp b/Build/source/libs/icu/icu-src/source/common/rbbitblb.cpp
index 0e3ec7999f7..8b40136fc7c 100644
--- a/Build/source/libs/icu/icu-src/source/common/rbbitblb.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/rbbitblb.cpp
@@ -73,7 +73,7 @@ void RBBITableBuilder::buildForwardTable() {
// If there were no rules, just return. This situation can easily arise
// for the reverse rules.
- if (fTree==NULL) {
+ if (fTree==nullptr) {
return;
}
@@ -99,7 +99,7 @@ void RBBITableBuilder::buildForwardTable() {
RBBINode *bofTop = new RBBINode(RBBINode::opCat);
RBBINode *bofLeaf = new RBBINode(RBBINode::leafChar);
// Delete and exit if memory allocation failed.
- if (bofTop == NULL || bofLeaf == NULL) {
+ if (bofTop == nullptr || bofLeaf == nullptr) {
*fStatus = U_MEMORY_ALLOCATION_ERROR;
delete bofTop;
delete bofLeaf;
@@ -119,7 +119,7 @@ void RBBITableBuilder::buildForwardTable() {
//
RBBINode *cn = new RBBINode(RBBINode::opCat);
// Exit if memory allocation failed.
- if (cn == NULL) {
+ if (cn == nullptr) {
*fStatus = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -127,7 +127,7 @@ void RBBITableBuilder::buildForwardTable() {
fTree->fParent = cn;
RBBINode *endMarkerNode = cn->fRightChild = new RBBINode(RBBINode::endMark);
// Delete and exit if memory allocation failed.
- if (cn->fRightChild == NULL) {
+ if (cn->fRightChild == nullptr) {
*fStatus = U_MEMORY_ALLOCATION_ERROR;
delete cn;
return;
@@ -203,7 +203,7 @@ void RBBITableBuilder::buildForwardTable() {
//
//-----------------------------------------------------------------------------
void RBBITableBuilder::calcNullable(RBBINode *n) {
- if (n == NULL) {
+ if (n == nullptr) {
return;
}
if (n->fType == RBBINode::setRef ||
@@ -250,7 +250,7 @@ void RBBITableBuilder::calcNullable(RBBINode *n) {
//
//-----------------------------------------------------------------------------
void RBBITableBuilder::calcFirstPos(RBBINode *n) {
- if (n == NULL) {
+ if (n == nullptr) {
return;
}
if (n->fType == RBBINode::leafChar ||
@@ -296,7 +296,7 @@ void RBBITableBuilder::calcFirstPos(RBBINode *n) {
//
//-----------------------------------------------------------------------------
void RBBITableBuilder::calcLastPos(RBBINode *n) {
- if (n == NULL) {
+ if (n == nullptr) {
return;
}
if (n->fType == RBBINode::leafChar ||
@@ -342,7 +342,7 @@ void RBBITableBuilder::calcLastPos(RBBINode *n) {
//
//-----------------------------------------------------------------------------
void RBBITableBuilder::calcFollowPos(RBBINode *n) {
- if (n == NULL ||
+ if (n == nullptr ||
n->fType == RBBINode::leafChar ||
n->fType == RBBINode::endMark) {
return;
@@ -387,7 +387,7 @@ void RBBITableBuilder::calcFollowPos(RBBINode *n) {
//
//-----------------------------------------------------------------------------
void RBBITableBuilder::addRuleRootNodes(UVector *dest, RBBINode *node) {
- if (node == NULL || U_FAILURE(*fStatus)) {
+ if (node == nullptr || U_FAILURE(*fStatus)) {
return;
}
U_ASSERT(!dest->hasDeleter());
@@ -458,21 +458,6 @@ void RBBITableBuilder::calcChainedFollowPos(RBBINode *tree, RBBINode *endMarkNod
// We've got a node that can end a match.
- // !!LBCMNoChain implementation: If this node's val correspond to
- // the Line Break $CM char class, don't chain from it.
- // TODO: Remove this. !!LBCMNoChain is deprecated, and is not used
- // by any of the standard ICU rules.
- if (fRB->fLBCMNoChain) {
- UChar32 c = this->fRB->fSetBuilder->getFirstChar(endNode->fVal);
- if (c != -1) {
- // c == -1 occurs with sets containing only the {eof} marker string.
- ULineBreak cLBProp = (ULineBreak)u_getIntPropertyValue(c, UCHAR_LINE_BREAK);
- if (cLBProp == U_LB_COMBINING_MARK) {
- continue;
- }
- }
- }
-
// Now iterate over the nodes that can start a match, looking for ones
// with the same char class as our ending node.
RBBINode *startNode;
@@ -567,21 +552,21 @@ void RBBITableBuilder::buildStateTable() {
return;
}
RBBIStateDescriptor *failState;
- // Set it to NULL to avoid uninitialized warning
- RBBIStateDescriptor *initialState = NULL;
+ // Set it to nullptr to avoid uninitialized warning
+ RBBIStateDescriptor *initialState = nullptr;
//
// Add a dummy state 0 - the stop state. Not from Aho.
int lastInputSymbol = fRB->fSetBuilder->getNumCharCategories() - 1;
failState = new RBBIStateDescriptor(lastInputSymbol, fStatus);
- if (failState == NULL) {
+ if (failState == nullptr) {
*fStatus = U_MEMORY_ALLOCATION_ERROR;
goto ExitBuildSTdeleteall;
}
failState->fPositions = new UVector(*fStatus);
- if (failState->fPositions == NULL) {
+ if (failState->fPositions == nullptr) {
*fStatus = U_MEMORY_ALLOCATION_ERROR;
}
- if (failState->fPositions == NULL || U_FAILURE(*fStatus)) {
+ if (failState->fPositions == nullptr || U_FAILURE(*fStatus)) {
goto ExitBuildSTdeleteall;
}
fDStates->addElement(failState, *fStatus);
@@ -592,14 +577,14 @@ void RBBITableBuilder::buildStateTable() {
// initially, the only unmarked state in Dstates is firstpos(root),
// where toot is the root of the syntax tree for (r)#;
initialState = new RBBIStateDescriptor(lastInputSymbol, fStatus);
- if (initialState == NULL) {
+ if (initialState == nullptr) {
*fStatus = U_MEMORY_ALLOCATION_ERROR;
}
if (U_FAILURE(*fStatus)) {
goto ExitBuildSTdeleteall;
}
initialState->fPositions = new UVector(*fStatus);
- if (initialState->fPositions == NULL) {
+ if (initialState->fPositions == nullptr) {
*fStatus = U_MEMORY_ALLOCATION_ERROR;
}
if (U_FAILURE(*fStatus)) {
@@ -613,7 +598,7 @@ void RBBITableBuilder::buildStateTable() {
// while there is an unmarked state T in Dstates do begin
for (;;) {
- RBBIStateDescriptor *T = NULL;
+ RBBIStateDescriptor *T = nullptr;
int32_t tx;
for (tx=1; tx<fDStates->size(); tx++) {
RBBIStateDescriptor *temp;
@@ -623,7 +608,7 @@ void RBBITableBuilder::buildStateTable() {
break;
}
}
- if (T == NULL) {
+ if (T == nullptr) {
break;
}
@@ -636,15 +621,15 @@ void RBBITableBuilder::buildStateTable() {
// 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;
- UVector *U = NULL;
+ UVector *U = nullptr;
RBBINode *p;
int32_t px;
for (px=0; px<T->fPositions->size(); px++) {
p = (RBBINode *)T->fPositions->elementAt(px);
if ((p->fType == RBBINode::leafChar) && (p->fVal == a)) {
- if (U == NULL) {
+ if (U == nullptr) {
U = new UVector(*fStatus);
- if (U == NULL) {
+ if (U == nullptr) {
*fStatus = U_MEMORY_ALLOCATION_ERROR;
goto ExitBuildSTdeleteall;
}
@@ -656,7 +641,7 @@ void RBBITableBuilder::buildStateTable() {
// if U is not empty and not in DStates then
int32_t ux = 0;
UBool UinDstates = false;
- if (U != NULL) {
+ if (U != nullptr) {
U_ASSERT(U->size() > 0);
int ix;
for (ix=0; ix<fDStates->size(); ix++) {
@@ -675,7 +660,7 @@ void RBBITableBuilder::buildStateTable() {
if (!UinDstates)
{
RBBIStateDescriptor *newState = new RBBIStateDescriptor(lastInputSymbol, fStatus);
- if (newState == NULL) {
+ if (newState == nullptr) {
*fStatus = U_MEMORY_ALLOCATION_ERROR;
}
if (U_FAILURE(*fStatus)) {
@@ -942,7 +927,7 @@ void RBBITableBuilder::mergeRuleStatusVals() {
for (n=0; n<fDStates->size(); n++) {
RBBIStateDescriptor *sd = (RBBIStateDescriptor *)fDStates->elementAt(n);
UVector *thisStatesTagValues = sd->fTagVals;
- if (thisStatesTagValues == NULL) {
+ if (thisStatesTagValues == nullptr) {
// No tag values are explicitly associated with this state.
// Set the default tag value.
sd->fTagsIdx = 0;
@@ -1012,10 +997,10 @@ void RBBITableBuilder::mergeRuleStatusVals() {
void RBBITableBuilder::sortedAdd(UVector **vector, int32_t val) {
int32_t i;
- if (*vector == NULL) {
+ if (*vector == nullptr) {
*vector = new UVector(*fStatus);
}
- if (*vector == NULL || U_FAILURE(*fStatus)) {
+ if (*vector == nullptr || U_FAILURE(*fStatus)) {
return;
}
UVector *vec = *vector;
@@ -1053,7 +1038,7 @@ void RBBITableBuilder::setAdd(UVector *dest, UVector *source) {
void **destLim, **sourceLim;
if (destOriginalSize > destArray.getCapacity()) {
- if (destArray.resize(destOriginalSize) == NULL) {
+ if (destArray.resize(destOriginalSize) == nullptr) {
return;
}
}
@@ -1061,7 +1046,7 @@ void RBBITableBuilder::setAdd(UVector *dest, UVector *source) {
destLim = destPtr + destOriginalSize; // destArray.getArrayLimit()?
if (sourceSize > sourceArray.getCapacity()) {
- if (sourceArray.resize(sourceSize) == NULL) {
+ if (sourceArray.resize(sourceSize) == nullptr) {
return;
}
}
@@ -1125,7 +1110,7 @@ UBool RBBITableBuilder::setEquals(UVector *a, UVector *b) {
//-----------------------------------------------------------------------------
#ifdef RBBI_DEBUG
void RBBITableBuilder::printPosSets(RBBINode *n) {
- if (n==NULL) {
+ if (n==nullptr) {
return;
}
printf("\n");
@@ -1339,7 +1324,7 @@ int32_t RBBITableBuilder::getTableSize() const {
int32_t numCols;
int32_t rowSize;
- if (fTree == NULL) {
+ if (fTree == nullptr) {
return 0;
}
@@ -1373,7 +1358,7 @@ void RBBITableBuilder::exportTable(void *where) {
uint32_t state;
int col;
- if (U_FAILURE(*fStatus) || fTree == NULL) {
+ if (U_FAILURE(*fStatus) || fTree == nullptr) {
return;
}
@@ -1651,7 +1636,7 @@ void RBBITableBuilder::printSet(UVector *s) {
int32_t i;
for (i=0; i<s->size(); i++) {
const RBBINode *v = static_cast<const RBBINode *>(s->elementAt(i));
- RBBIDebugPrintf("%5d", v==NULL? -1 : v->fSerialNum);
+ RBBIDebugPrintf("%5d", v==nullptr? -1 : v->fSerialNum);
}
RBBIDebugPrintf("\n");
}
@@ -1777,15 +1762,15 @@ RBBIStateDescriptor::RBBIStateDescriptor(int lastInputSymbol, UErrorCode *fStatu
fAccepting = 0;
fLookAhead = 0;
fTagsIdx = 0;
- fTagVals = NULL;
- fPositions = NULL;
- fDtran = NULL;
+ fTagVals = nullptr;
+ fPositions = nullptr;
+ fDtran = nullptr;
fDtran = new UVector32(lastInputSymbol+1, *fStatus);
if (U_FAILURE(*fStatus)) {
return;
}
- if (fDtran == NULL) {
+ if (fDtran == nullptr) {
*fStatus = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -1800,9 +1785,9 @@ RBBIStateDescriptor::~RBBIStateDescriptor() {
delete fPositions;
delete fDtran;
delete fTagVals;
- fPositions = NULL;
- fDtran = NULL;
- fTagVals = NULL;
+ fPositions = nullptr;
+ fDtran = nullptr;
+ fTagVals = nullptr;
}
U_NAMESPACE_END
diff --git a/Build/source/libs/icu/icu-src/source/common/rbbitblb.h b/Build/source/libs/icu/icu-src/source/common/rbbitblb.h
index 2ac66da11f0..01eee3da4ef 100644
--- a/Build/source/libs/icu/icu-src/source/common/rbbitblb.h
+++ b/Build/source/libs/icu/icu-src/source/common/rbbitblb.h
@@ -156,7 +156,7 @@ private:
public:
#ifdef RBBI_DEBUG
void printSet(UVector *s);
- void printPosSets(RBBINode *n /* = NULL*/);
+ void printPosSets(RBBINode *n /* = nullptr */);
void printStates();
void printRuleStatusTable();
void printReverseTable();
diff --git a/Build/source/libs/icu/icu-src/source/common/resbund.cpp b/Build/source/libs/icu/icu-src/source/common/resbund.cpp
index 8591a625f95..54383c981d1 100644
--- a/Build/source/libs/icu/icu-src/source/common/resbund.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/resbund.cpp
@@ -177,13 +177,13 @@ U_NAMESPACE_BEGIN
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(ResourceBundle)
ResourceBundle::ResourceBundle(UErrorCode &err)
- :UObject(), fLocale(NULL)
+ :UObject(), fLocale(nullptr)
{
fResource = ures_open(0, Locale::getDefault().getName(), &err);
}
ResourceBundle::ResourceBundle(const ResourceBundle &other)
- :UObject(other), fLocale(NULL)
+ :UObject(other), fLocale(nullptr)
{
UErrorCode status = U_ZERO_ERROR;
@@ -191,23 +191,23 @@ ResourceBundle::ResourceBundle(const ResourceBundle &other)
fResource = ures_copyResb(0, other.fResource, &status);
} else {
/* Copying a bad resource bundle */
- fResource = NULL;
+ fResource = nullptr;
}
}
ResourceBundle::ResourceBundle(UResourceBundle *res, UErrorCode& err)
- :UObject(), fLocale(NULL)
+ :UObject(), fLocale(nullptr)
{
if (res) {
fResource = ures_copyResb(0, res, &err);
} else {
/* Copying a bad resource bundle */
- fResource = NULL;
+ fResource = nullptr;
}
}
ResourceBundle::ResourceBundle(const char* path, const Locale& locale, UErrorCode& err)
- :UObject(), fLocale(NULL)
+ :UObject(), fLocale(nullptr)
{
fResource = ures_open(path, locale.getName(), &err);
}
@@ -220,18 +220,18 @@ ResourceBundle& ResourceBundle::operator=(const ResourceBundle& other)
}
if(fResource != 0) {
ures_close(fResource);
- fResource = NULL;
+ fResource = nullptr;
}
- if (fLocale != NULL) {
+ if (fLocale != nullptr) {
delete fLocale;
- fLocale = NULL;
+ fLocale = nullptr;
}
UErrorCode status = U_ZERO_ERROR;
if (other.fResource) {
fResource = ures_copyResb(0, other.fResource, &status);
} else {
/* Copying a bad resource bundle */
- fResource = NULL;
+ fResource = nullptr;
}
return *this;
}
@@ -241,7 +241,7 @@ ResourceBundle::~ResourceBundle()
if(fResource != 0) {
ures_close(fResource);
}
- if(fLocale != NULL) {
+ if(fLocale != nullptr) {
delete(fLocale);
}
}
@@ -253,7 +253,7 @@ ResourceBundle::clone() const {
UnicodeString ResourceBundle::getString(UErrorCode& status) const {
int32_t len = 0;
- const UChar *r = ures_getString(fResource, &len, &status);
+ const char16_t *r = ures_getString(fResource, &len, &status);
return UnicodeString(true, r, len);
}
@@ -273,27 +273,27 @@ int32_t ResourceBundle::getInt(UErrorCode& status) const {
return ures_getInt(fResource, &status);
}
-const char *ResourceBundle::getName(void) const {
+const char *ResourceBundle::getName() const {
return ures_getName(fResource);
}
-const char *ResourceBundle::getKey(void) const {
+const char *ResourceBundle::getKey() const {
return ures_getKey(fResource);
}
-UResType ResourceBundle::getType(void) const {
+UResType ResourceBundle::getType() const {
return ures_getType(fResource);
}
-int32_t ResourceBundle::getSize(void) const {
+int32_t ResourceBundle::getSize() const {
return ures_getSize(fResource);
}
-UBool ResourceBundle::hasNext(void) const {
+UBool ResourceBundle::hasNext() const {
return ures_hasNext(fResource);
}
-void ResourceBundle::resetIterator(void) {
+void ResourceBundle::resetIterator() {
ures_resetIterator(fResource);
}
@@ -311,13 +311,13 @@ ResourceBundle ResourceBundle::getNext(UErrorCode& status) {
UnicodeString ResourceBundle::getNextString(UErrorCode& status) {
int32_t len = 0;
- const UChar* r = ures_getNextString(fResource, &len, 0, &status);
+ const char16_t* r = ures_getNextString(fResource, &len, 0, &status);
return UnicodeString(true, r, len);
}
UnicodeString ResourceBundle::getNextString(const char ** key, UErrorCode& status) {
int32_t len = 0;
- const UChar* r = ures_getNextString(fResource, &len, key, &status);
+ const char16_t* r = ures_getNextString(fResource, &len, key, &status);
return UnicodeString(true, r, len);
}
@@ -335,7 +335,7 @@ ResourceBundle ResourceBundle::get(int32_t indexR, UErrorCode& status) const {
UnicodeString ResourceBundle::getStringEx(int32_t indexS, UErrorCode& status) const {
int32_t len = 0;
- const UChar* r = ures_getStringByIndex(fResource, indexS, &len, &status);
+ const char16_t* r = ures_getStringByIndex(fResource, indexS, &len, &status);
return UnicodeString(true, r, len);
}
@@ -363,7 +363,7 @@ ResourceBundle ResourceBundle::getWithFallback(const char* key, UErrorCode& stat
}
UnicodeString ResourceBundle::getStringEx(const char* key, UErrorCode& status) const {
int32_t len = 0;
- const UChar* r = ures_getStringByKey(fResource, key, &len, &status);
+ const char16_t* r = ures_getStringByKey(fResource, key, &len, &status);
return UnicodeString(true, r, len);
}
@@ -377,17 +377,17 @@ void ResourceBundle::getVersion(UVersionInfo versionInfo) const {
ures_getVersion(fResource, versionInfo);
}
-const Locale &ResourceBundle::getLocale(void) const {
+const Locale &ResourceBundle::getLocale() const {
static UMutex gLocaleLock;
Mutex lock(&gLocaleLock);
- if (fLocale != NULL) {
+ if (fLocale != nullptr) {
return *fLocale;
}
UErrorCode status = U_ZERO_ERROR;
const char *localeName = ures_getLocaleInternal(fResource, &status);
ResourceBundle *ncThis = const_cast<ResourceBundle *>(this);
ncThis->fLocale = new Locale(localeName);
- return ncThis->fLocale != NULL ? *ncThis->fLocale : Locale::getDefault();
+ return ncThis->fLocale != nullptr ? *ncThis->fLocale : Locale::getDefault();
}
const Locale ResourceBundle::getLocale(ULocDataLocaleType type, UErrorCode &status) const
diff --git a/Build/source/libs/icu/icu-src/source/common/resbund_cnv.cpp b/Build/source/libs/icu/icu-src/source/common/resbund_cnv.cpp
index 45c0b399bff..7f83f06f0e0 100644
--- a/Build/source/libs/icu/icu-src/source/common/resbund_cnv.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/resbund_cnv.cpp
@@ -27,14 +27,14 @@ U_NAMESPACE_BEGIN
ResourceBundle::ResourceBundle( const UnicodeString& path,
const Locale& locale,
UErrorCode& error)
- :UObject(), fLocale(NULL)
+ :UObject(), fLocale(nullptr)
{
constructForLocale(path, locale, error);
}
ResourceBundle::ResourceBundle( const UnicodeString& path,
UErrorCode& error)
- :UObject(), fLocale(NULL)
+ :UObject(), fLocale(nullptr)
{
constructForLocale(path, Locale::getDefault(), error);
}
@@ -45,11 +45,11 @@ ResourceBundle::constructForLocale(const UnicodeString& path,
UErrorCode& error)
{
if (path.isEmpty()) {
- fResource = ures_open(NULL, locale.getName(), &error);
+ fResource = ures_open(nullptr, locale.getName(), &error);
}
else {
UnicodeString nullTerminatedPath(path);
- nullTerminatedPath.append((UChar)0);
+ nullTerminatedPath.append((char16_t)0);
fResource = ures_openU(nullTerminatedPath.getBuffer(), locale.getName(), &error);
}
}
diff --git a/Build/source/libs/icu/icu-src/source/common/resource.h b/Build/source/libs/icu/icu-src/source/common/resource.h
index 1483f7d6bcc..79ed897bd12 100644
--- a/Build/source/libs/icu/icu-src/source/common/resource.h
+++ b/Build/source/libs/icu/icu-src/source/common/resource.h
@@ -45,7 +45,7 @@ class ResourceValue;
class U_COMMON_API ResourceArray {
public:
/** Constructs an empty array object. */
- ResourceArray() : items16(NULL), items32(NULL), length(0) {}
+ ResourceArray() : items16(nullptr), items32(nullptr), length(0) {}
/** Only for implementation use. @internal */
ResourceArray(const uint16_t *i16, const uint32_t *i32, int32_t len,
@@ -80,7 +80,7 @@ private:
class U_COMMON_API ResourceTable {
public:
/** Constructs an empty table object. */
- ResourceTable() : keys16(NULL), keys32(NULL), items16(NULL), items32(NULL), length(0) {}
+ ResourceTable() : keys16(nullptr), keys32(nullptr), items16(nullptr), items32(nullptr), length(0) {}
/** Only for implementation use. @internal */
ResourceTable(const uint16_t *k16, const int32_t *k32,
@@ -136,22 +136,22 @@ public:
*
* @see ures_getString()
*/
- virtual const UChar *getString(int32_t &length, UErrorCode &errorCode) const = 0;
+ virtual const char16_t *getString(int32_t &length, UErrorCode &errorCode) const = 0;
inline UnicodeString getUnicodeString(UErrorCode &errorCode) const {
int32_t len = 0;
- const UChar *r = getString(len, errorCode);
+ const char16_t *r = getString(len, errorCode);
return UnicodeString(true, r, len);
}
/**
* Sets U_RESOURCE_TYPE_MISMATCH if this is not an alias resource.
*/
- virtual const UChar *getAliasString(int32_t &length, UErrorCode &errorCode) const = 0;
+ virtual const char16_t *getAliasString(int32_t &length, UErrorCode &errorCode) const = 0;
inline UnicodeString getAliasUnicodeString(UErrorCode &errorCode) const {
int32_t len = 0;
- const UChar *r = getAliasString(len, errorCode);
+ const char16_t *r = getAliasString(len, errorCode);
return UnicodeString(true, r, len);
}
diff --git a/Build/source/libs/icu/icu-src/source/common/ruleiter.cpp b/Build/source/libs/icu/icu-src/source/common/ruleiter.cpp
index 33ffd3d8337..690635a9089 100644
--- a/Build/source/libs/icu/icu-src/source/common/ruleiter.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ruleiter.cpp
@@ -130,7 +130,7 @@ void RuleCharacterIterator::jumpahead(int32_t count) {
UnicodeString& RuleCharacterIterator::toString(UnicodeString& result) const {
int32_t b = pos.getIndex();
text.extract(0, b, result);
- return result.append((UChar) 0x7C).append(text, b, 0x7FFFFFFF); // Insert '|' at index
+ return result.append((char16_t) 0x7C).append(text, b, 0x7FFFFFFF); // Insert '|' at index
}
*/
diff --git a/Build/source/libs/icu/icu-src/source/common/schriter.cpp b/Build/source/libs/icu/icu-src/source/common/schriter.cpp
index 83b3db4ab0a..d4bac8fd4f2 100644
--- a/Build/source/libs/icu/icu-src/source/common/schriter.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/schriter.cpp
@@ -93,7 +93,7 @@ StringCharacterIterator::operator==(const ForwardCharacterIterator& that) const
return false;
}
- StringCharacterIterator& realThat = (StringCharacterIterator&)that;
+ const StringCharacterIterator& realThat = static_cast<const StringCharacterIterator&>(that);
return text == realThat.text
&& pos == realThat.pos
diff --git a/Build/source/libs/icu/icu-src/source/common/serv.cpp b/Build/source/libs/icu/icu-src/source/common/serv.cpp
index 9d8c04149ce..5248f7c192b 100644
--- a/Build/source/libs/icu/icu-src/source/common/serv.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/serv.cpp
@@ -25,7 +25,7 @@ U_NAMESPACE_BEGIN
******************************************************************
*/
-const UChar ICUServiceKey::PREFIX_DELIMITER = 0x002F; /* '/' */
+const char16_t ICUServiceKey::PREFIX_DELIMITER = 0x002F; /* '/' */
ICUServiceKey::ICUServiceKey(const UnicodeString& id)
: _id(id) {
@@ -144,7 +144,7 @@ SimpleFactory::create(const ICUServiceKey& key, const ICUService* service, UErro
return service->cloneInstance(_instance);
}
}
- return NULL;
+ return nullptr;
}
void
@@ -243,7 +243,7 @@ public:
CacheEntry* unref() {
if ((--refcount) == 0) {
delete this;
- return NULL;
+ return nullptr;
}
return this;
}
@@ -294,14 +294,14 @@ StringPair::create(const UnicodeString& displayName,
{
if (U_SUCCESS(status)) {
StringPair* sp = new StringPair(displayName, id);
- if (sp == NULL || sp->isBogus()) {
+ if (sp == nullptr || sp->isBogus()) {
status = U_MEMORY_ALLOCATION_ERROR;
delete sp;
- return NULL;
+ return nullptr;
}
return sp;
}
- return NULL;
+ return nullptr;
}
UBool
@@ -332,20 +332,20 @@ static UMutex lock;
ICUService::ICUService()
: name()
, timestamp(0)
-, factories(NULL)
-, serviceCache(NULL)
-, idCache(NULL)
-, dnCache(NULL)
+, factories(nullptr)
+, serviceCache(nullptr)
+, idCache(nullptr)
+, dnCache(nullptr)
{
}
ICUService::ICUService(const UnicodeString& newName)
: name(newName)
, timestamp(0)
-, factories(NULL)
-, serviceCache(NULL)
-, idCache(NULL)
-, dnCache(NULL)
+, factories(nullptr)
+, serviceCache(nullptr)
+, idCache(nullptr)
+, dnCache(nullptr)
{
}
@@ -355,20 +355,20 @@ ICUService::~ICUService()
Mutex mutex(&lock);
clearCaches();
delete factories;
- factories = NULL;
+ factories = nullptr;
}
}
UObject*
ICUService::get(const UnicodeString& descriptor, UErrorCode& status) const
{
- return get(descriptor, NULL, status);
+ return get(descriptor, nullptr, status);
}
UObject*
ICUService::get(const UnicodeString& descriptor, UnicodeString* actualReturn, UErrorCode& status) const
{
- UObject* result = NULL;
+ UObject* result = nullptr;
ICUServiceKey* key = createKey(&descriptor, status);
if (key) {
result = getKey(*key, actualReturn, status);
@@ -380,7 +380,7 @@ ICUService::get(const UnicodeString& descriptor, UnicodeString* actualReturn, UE
UObject*
ICUService::getKey(ICUServiceKey& key, UErrorCode& status) const
{
- return getKey(key, NULL, status);
+ return getKey(key, nullptr, status);
}
// this is a vector that subclasses of ICUService can override to further customize the result object
@@ -389,7 +389,7 @@ ICUService::getKey(ICUServiceKey& key, UErrorCode& status) const
UObject*
ICUService::getKey(ICUServiceKey& key, UnicodeString* actualReturn, UErrorCode& status) const
{
- return getKey(key, actualReturn, NULL, status);
+ return getKey(key, actualReturn, nullptr, status);
}
// make it possible to call reentrantly on systems that don't have reentrant mutexes.
@@ -417,7 +417,7 @@ UObject*
ICUService::getKey(ICUServiceKey& key, UnicodeString* actualReturn, const ICUServiceFactory* factory, UErrorCode& status) const
{
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
if (isDefault()) {
@@ -426,7 +426,7 @@ ICUService::getKey(ICUServiceKey& key, UnicodeString* actualReturn, const ICUSer
ICUService* ncthis = (ICUService*)this; // cast away semantic const
- CacheEntry* result = NULL;
+ CacheEntry* result = nullptr;
{
// The factory list can't be modified until we're done,
// otherwise we might update the cache with an invalid result.
@@ -437,17 +437,17 @@ ICUService::getKey(ICUServiceKey& key, UnicodeString* actualReturn, const ICUSer
// if factory is not null, we're calling from within the mutex,
// and since some unix machines don't have reentrant mutexes we
// need to make sure not to try to lock it again.
- XMutex mutex(&lock, factory != NULL);
+ XMutex mutex(&lock, factory != nullptr);
- if (serviceCache == NULL) {
+ if (serviceCache == nullptr) {
ncthis->serviceCache = new Hashtable(status);
- if (ncthis->serviceCache == NULL) {
+ if (ncthis->serviceCache == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
if (U_FAILURE(status)) {
delete serviceCache;
- return NULL;
+ return nullptr;
}
serviceCache->setValueDeleter(cacheDeleter);
}
@@ -460,7 +460,7 @@ ICUService::getKey(ICUServiceKey& key, UnicodeString* actualReturn, const ICUSer
int32_t limit = factories->size();
UBool cacheResult = true;
- if (factory != NULL) {
+ if (factory != nullptr) {
for (int32_t i = 0; i < limit; ++i) {
if (factory == (const ICUServiceFactory*)factories->elementAt(i)) {
startIndex = i + 1;
@@ -470,7 +470,7 @@ ICUService::getKey(ICUServiceKey& key, UnicodeString* actualReturn, const ICUSer
if (startIndex == 0) {
// throw new InternalError("Factory " + factory + "not registered with service: " + this);
status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
cacheResult = false;
}
@@ -479,7 +479,7 @@ ICUService::getKey(ICUServiceKey& key, UnicodeString* actualReturn, const ICUSer
currentDescriptor.remove();
key.currentDescriptor(currentDescriptor);
result = (CacheEntry*)serviceCache->get(currentDescriptor);
- if (result != NULL) {
+ if (result != nullptr) {
break;
}
@@ -493,13 +493,13 @@ ICUService::getKey(ICUServiceKey& key, UnicodeString* actualReturn, const ICUSer
ICUServiceFactory* f = (ICUServiceFactory*)factories->elementAt(index++);
LocalPointer<UObject> service(f->create(key, this, status));
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
if (service.isValid()) {
result = new CacheEntry(currentDescriptor, service.getAlias());
- if (result == NULL) {
+ if (result == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
service.orphan(); // result now owns service.
@@ -513,32 +513,32 @@ ICUService::getKey(ICUServiceKey& key, UnicodeString* actualReturn, const ICUSer
// fallback to the one that succeeded, we want to hit the
// cache the first time next goaround.
if (cacheDescriptorList.isNull()) {
- cacheDescriptorList.adoptInsteadAndCheckErrorCode(new UVector(uprv_deleteUObject, NULL, 5, status), status);
+ cacheDescriptorList.adoptInsteadAndCheckErrorCode(new UVector(uprv_deleteUObject, nullptr, 5, status), status);
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
}
LocalPointer<UnicodeString> idToCache(new UnicodeString(currentDescriptor), status);
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
if (idToCache->isBogus()) {
status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
cacheDescriptorList->adoptElement(idToCache.orphan(), status);
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
} while (key.fallback());
outerEnd:
- if (result != NULL) {
+ if (result != nullptr) {
if (putInCache && cacheResult) {
serviceCache->put(result->actualDescriptor, result, status);
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
if (cacheDescriptorList.isValid()) {
@@ -547,7 +547,7 @@ outerEnd:
serviceCache->put(*desc, result, status);
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
result->ref();
@@ -556,9 +556,9 @@ outerEnd:
}
}
- if (actualReturn != NULL) {
+ if (actualReturn != nullptr) {
// strip null prefix
- if (result->actualDescriptor.indexOf((UChar)0x2f) == 0) { // U+002f=slash (/)
+ if (result->actualDescriptor.indexOf((char16_t)0x2f) == 0) { // U+002f=slash (/)
actualReturn->remove();
actualReturn->append(result->actualDescriptor,
1,
@@ -570,7 +570,7 @@ outerEnd:
if (actualReturn->isBogus()) {
status = U_MEMORY_ALLOCATION_ERROR;
delete result;
- return NULL;
+ return nullptr;
}
}
@@ -588,12 +588,12 @@ outerEnd:
UObject*
ICUService::handleDefault(const ICUServiceKey& /* key */, UnicodeString* /* actualIDReturn */, UErrorCode& /* status */) const
{
- return NULL;
+ return nullptr;
}
UVector&
ICUService::getVisibleIDs(UVector& result, UErrorCode& status) const {
- return getVisibleIDs(result, NULL, status);
+ return getVisibleIDs(result, nullptr, status);
}
UVector&
@@ -609,17 +609,17 @@ ICUService::getVisibleIDs(UVector& result, const UnicodeString* matchID, UErrorC
{
Mutex mutex(&lock);
const Hashtable* map = getVisibleIDMap(status);
- if (map != NULL) {
+ if (map != nullptr) {
ICUServiceKey* fallbackKey = createKey(matchID, status);
for (int32_t pos = UHASH_FIRST; U_SUCCESS(status); ) {
const UHashElement* e = map->nextElement(pos);
- if (e == NULL) {
+ if (e == nullptr) {
break;
}
const UnicodeString* id = (const UnicodeString*)e->key.pointer;
- if (fallbackKey != NULL) {
+ if (fallbackKey != nullptr) {
if (!fallbackKey->isFallbackOf(*id)) {
continue;
}
@@ -640,23 +640,23 @@ ICUService::getVisibleIDs(UVector& result, const UnicodeString* matchID, UErrorC
const Hashtable*
ICUService::getVisibleIDMap(UErrorCode& status) const {
- if (U_FAILURE(status)) return NULL;
+ if (U_FAILURE(status)) return nullptr;
// must only be called when lock is already held
ICUService* ncthis = (ICUService*)this; // cast away semantic const
- if (idCache == NULL) {
+ if (idCache == nullptr) {
ncthis->idCache = new Hashtable(status);
- if (idCache == NULL) {
+ if (idCache == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
- } else if (factories != NULL) {
+ } else if (factories != nullptr) {
for (int32_t pos = factories->size(); --pos >= 0;) {
ICUServiceFactory* f = (ICUServiceFactory*)factories->elementAt(pos);
f->updateVisibleIDs(*idCache, status);
}
if (U_FAILURE(status)) {
delete idCache;
- ncthis->idCache = NULL;
+ ncthis->idCache = nullptr;
}
}
}
@@ -678,9 +678,9 @@ ICUService::getDisplayName(const UnicodeString& id, UnicodeString& result, const
UErrorCode status = U_ZERO_ERROR;
Mutex mutex(&lock);
const Hashtable* map = getVisibleIDMap(status);
- if (map != NULL) {
+ if (map != nullptr) {
ICUServiceFactory* f = (ICUServiceFactory*)map->get(id);
- if (f != NULL) {
+ if (f != nullptr) {
f->getDisplayName(id, locale, result);
return result;
}
@@ -688,11 +688,11 @@ ICUService::getDisplayName(const UnicodeString& id, UnicodeString& result, const
// fallback
status = U_ZERO_ERROR;
ICUServiceKey* fallbackKey = createKey(&id, status);
- while (fallbackKey != NULL && fallbackKey->fallback()) {
+ while (fallbackKey != nullptr && fallbackKey->fallback()) {
UnicodeString us;
fallbackKey->currentID(us);
f = (ICUServiceFactory*)map->get(us);
- if (f != NULL) {
+ if (f != nullptr) {
f->getDisplayName(id, locale, result);
delete fallbackKey;
return result;
@@ -708,14 +708,14 @@ ICUService::getDisplayName(const UnicodeString& id, UnicodeString& result, const
UVector&
ICUService::getDisplayNames(UVector& result, UErrorCode& status) const
{
- return getDisplayNames(result, Locale::getDefault(), NULL, status);
+ return getDisplayNames(result, Locale::getDefault(), nullptr, status);
}
UVector&
ICUService::getDisplayNames(UVector& result, const Locale& locale, UErrorCode& status) const
{
- return getDisplayNames(result, locale, NULL, status);
+ return getDisplayNames(result, locale, nullptr, status);
}
UVector&
@@ -730,25 +730,25 @@ ICUService::getDisplayNames(UVector& result,
ICUService* ncthis = (ICUService*)this; // cast away semantic const
Mutex mutex(&lock);
- if (dnCache != NULL && dnCache->locale != locale) {
+ if (dnCache != nullptr && dnCache->locale != locale) {
delete dnCache;
- ncthis->dnCache = NULL;
+ ncthis->dnCache = nullptr;
}
- if (dnCache == NULL) {
+ if (dnCache == nullptr) {
const Hashtable* m = getVisibleIDMap(status);
if (U_FAILURE(status)) {
return result;
}
ncthis->dnCache = new DNCache(locale);
- if (dnCache == NULL) {
+ if (dnCache == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return result;
}
int32_t pos = UHASH_FIRST;
- const UHashElement* entry = NULL;
- while ((entry = m->nextElement(pos)) != NULL) {
+ const UHashElement* entry = nullptr;
+ while ((entry = m->nextElement(pos)) != nullptr) {
const UnicodeString* id = (const UnicodeString*)entry->key.pointer;
ICUServiceFactory* f = (ICUServiceFactory*)entry->value.pointer;
UnicodeString dname;
@@ -762,7 +762,7 @@ ICUService::getDisplayNames(UVector& result,
}
}
delete dnCache;
- ncthis->dnCache = NULL;
+ ncthis->dnCache = nullptr;
return result;
}
}
@@ -774,10 +774,10 @@ ICUService::getDisplayNames(UVector& result,
* at the next position, which in this case will be 0.
*/
int32_t pos = UHASH_FIRST;
- const UHashElement *entry = NULL;
- while ((entry = dnCache->cache.nextElement(pos)) != NULL) {
+ const UHashElement *entry = nullptr;
+ while ((entry = dnCache->cache.nextElement(pos)) != nullptr) {
const UnicodeString* id = (const UnicodeString*)entry->value.pointer;
- if (matchKey != NULL && !matchKey->isFallbackOf(*id)) {
+ if (matchKey != nullptr && !matchKey->isFallbackOf(*id)) {
continue;
}
const UnicodeString* dn = (const UnicodeString*)entry->key.pointer;
@@ -803,30 +803,30 @@ URegistryKey
ICUService::registerInstance(UObject* objToAdopt, const UnicodeString& id, UBool visible, UErrorCode& status)
{
ICUServiceKey* key = createKey(&id, status);
- if (key != NULL) {
+ if (key != nullptr) {
UnicodeString canonicalID;
key->canonicalID(canonicalID);
delete key;
ICUServiceFactory* f = createSimpleFactory(objToAdopt, canonicalID, visible, status);
- if (f != NULL) {
+ if (f != nullptr) {
return registerFactory(f, status);
}
}
delete objToAdopt;
- return NULL;
+ return nullptr;
}
ICUServiceFactory*
ICUService::createSimpleFactory(UObject* objToAdopt, const UnicodeString& id, UBool visible, UErrorCode& status)
{
if (U_SUCCESS(status)) {
- if ((objToAdopt != NULL) && (!id.isBogus())) {
+ if ((objToAdopt != nullptr) && (!id.isBogus())) {
return new SimpleFactory(objToAdopt, id, visible);
}
status = U_ILLEGAL_ARGUMENT_ERROR;
}
- return NULL;
+ return nullptr;
}
URegistryKey
@@ -865,7 +865,7 @@ ICUService::unregister(URegistryKey rkey, UErrorCode& status)
{
ICUServiceFactory *factory = (ICUServiceFactory*)rkey;
UBool result = false;
- if (factory != NULL && factories != NULL) {
+ if (factory != nullptr && factories != nullptr) {
Mutex mutex(&lock);
if (factories->removeElement(factory)) {
@@ -896,7 +896,7 @@ ICUService::reset()
void
ICUService::reInitializeFactories()
{
- if (factories != NULL) {
+ if (factories != nullptr) {
factories->removeAllElements();
}
}
@@ -910,7 +910,7 @@ ICUService::isDefault() const
ICUServiceKey*
ICUService::createKey(const UnicodeString* id, UErrorCode& status) const
{
- return (U_FAILURE(status) || id == NULL) ? NULL : new ICUServiceKey(*id);
+ return (U_FAILURE(status) || id == nullptr) ? nullptr : new ICUServiceKey(*id);
}
void
@@ -919,29 +919,29 @@ ICUService::clearCaches()
// callers synchronize before use
++timestamp;
delete dnCache;
- dnCache = NULL;
+ dnCache = nullptr;
delete idCache;
- idCache = NULL;
- delete serviceCache; serviceCache = NULL;
+ idCache = nullptr;
+ delete serviceCache; serviceCache = nullptr;
}
void
ICUService::clearServiceCache()
{
// callers synchronize before use
- delete serviceCache; serviceCache = NULL;
+ delete serviceCache; serviceCache = nullptr;
}
UBool
ICUService::acceptsListener(const EventListener& l) const
{
- return dynamic_cast<const ServiceListener*>(&l) != NULL;
+ return dynamic_cast<const ServiceListener*>(&l) != nullptr;
}
void
ICUService::notifyListener(EventListener& l) const
{
- ((ServiceListener&)l).serviceChanged(*this);
+ (static_cast<ServiceListener&>(l)).serviceChanged(*this);
}
UnicodeString&
@@ -953,7 +953,7 @@ ICUService::getName(UnicodeString& result) const
int32_t
ICUService::countFactories() const
{
- return factories == NULL ? 0 : factories->size();
+ return factories == nullptr ? 0 : factories->size();
}
int32_t
diff --git a/Build/source/libs/icu/icu-src/source/common/serv.h b/Build/source/libs/icu/icu-src/source/common/serv.h
index 3bd3d9a9b9e..9aea548fc3a 100644
--- a/Build/source/libs/icu/icu-src/source/common/serv.h
+++ b/Build/source/libs/icu/icu-src/source/common/serv.h
@@ -74,7 +74,7 @@ class U_COMMON_API ICUServiceKey : public UObject {
const UnicodeString _id;
protected:
- static const UChar PREFIX_DELIMITER;
+ static const char16_t PREFIX_DELIMITER;
public:
@@ -217,7 +217,7 @@ class U_COMMON_API ICUServiceFactory : public UObject {
/**
* <p>Create a service object from the key, if this factory
- * supports the key. Otherwise, return NULL.</p>
+ * supports the key. Otherwise, return nullptr.</p>
*
* <p>If the factory supports the key, then it can call
* the service's getKey(ICUServiceKey, String[], ICUServiceFactory) method
@@ -230,7 +230,7 @@ class U_COMMON_API ICUServiceFactory : public UObject {
* @param key the service key.
* @param service the service with which this factory is registered.
* @param status the error code status.
- * @return the service object, or NULL if the factory does not support the key.
+ * @return the service object, or nullptr if the factory does not support the key.
*/
virtual UObject* create(const ICUServiceKey& key, const ICUService* service, UErrorCode& status) const = 0;
@@ -292,7 +292,7 @@ class U_COMMON_API SimpleFactory : public ICUServiceFactory {
/**
* <p>Construct a SimpleFactory that maps a single ID to a single
* service instance. If visible is true, the ID will be visible.
- * The instance must not be NULL. The SimpleFactory will adopt
+ * The instance must not be nullptr. The SimpleFactory will adopt
* the instance, which must not be changed subsequent to this call.</p>
*
* @param instanceToAdopt the service instance to adopt.
@@ -313,7 +313,7 @@ class U_COMMON_API SimpleFactory : public ICUServiceFactory {
* @param key the service key.
* @param service the service with which this factory is registered.
* @param status the error code status.
- * @return the service object, or NULL if the factory does not support the key.
+ * @return the service object, or nullptr if the factory does not support the key.
*/
virtual UObject* create(const ICUServiceKey& key, const ICUService* service, UErrorCode& status) const override;
@@ -420,7 +420,7 @@ public:
* @param displayName the displayName.
* @param id the ID.
* @param status the error code status.
- * @return a StringPair if the creation was successful, otherwise NULL.
+ * @return a StringPair if the creation was successful, otherwise nullptr.
*/
static StringPair* create(const UnicodeString& displayName,
const UnicodeString& id,
@@ -593,7 +593,7 @@ class U_COMMON_API ICUService : public ICUNotifier {
*
* @param descriptor the descriptor.
* @param status the error code status.
- * @return the service instance, or NULL.
+ * @return the service instance, or nullptr.
*/
UObject* get(const UnicodeString& descriptor, UErrorCode& status) const;
@@ -602,9 +602,9 @@ class U_COMMON_API ICUService : public ICUNotifier {
* createKey to create a key from the provided descriptor.</p>
*
* @param descriptor the descriptor.
- * @param actualReturn a pointer to a UnicodeString to hold the matched descriptor, or NULL.
+ * @param actualReturn a pointer to a UnicodeString to hold the matched descriptor, or nullptr.
* @param status the error code status.
- * @return the service instance, or NULL.
+ * @return the service instance, or nullptr.
*/
UObject* get(const UnicodeString& descriptor, UnicodeString* actualReturn, UErrorCode& status) const;
@@ -613,15 +613,15 @@ class U_COMMON_API ICUService : public ICUNotifier {
*
* @param key the key.
* @param status the error code status.
- * @return the service instance, or NULL.
+ * @return the service instance, or nullptr.
*/
UObject* getKey(ICUServiceKey& key, UErrorCode& status) const;
/**
* <p>Given a key, return a service object, and, if actualReturn
- * is not NULL, the descriptor with which it was found in the
+ * is not nullptr, the descriptor with which it was found in the
* first element of actualReturn. If no service object matches
- * this key, returns NULL and leaves actualReturn unchanged.</p>
+ * this key, returns nullptr and leaves actualReturn unchanged.</p>
*
* <p>This queries the cache using the key's descriptor, and if no
* object in the cache matches, tries the key on each
@@ -635,9 +635,9 @@ class U_COMMON_API ICUService : public ICUNotifier {
* result before returning it.
*
* @param key the key.
- * @param actualReturn a pointer to a UnicodeString to hold the matched descriptor, or NULL.
+ * @param actualReturn a pointer to a UnicodeString to hold the matched descriptor, or nullptr.
* @param status the error code status.
- * @return the service instance, or NULL.
+ * @return the service instance, or nullptr.
*/
virtual UObject* getKey(ICUServiceKey& key, UnicodeString* actualReturn, UErrorCode& status) const;
@@ -648,10 +648,10 @@ class U_COMMON_API ICUService : public ICUNotifier {
* should not call it directly, but call through one of the other get functions.</p>
*
* @param key the key.
- * @param actualReturn a pointer to a UnicodeString to hold the matched descriptor, or NULL.
+ * @param actualReturn a pointer to a UnicodeString to hold the matched descriptor, or nullptr.
* @param factory the factory making the recursive call.
* @param status the error code status.
- * @return the service instance, or NULL.
+ * @return the service instance, or nullptr.
*/
UObject* getKey(ICUServiceKey& key, UnicodeString* actualReturn, const ICUServiceFactory* factory, UErrorCode& status) const;
@@ -677,11 +677,11 @@ class U_COMMON_API ICUService : public ICUNotifier {
* new elements, if any, are added.</p>
*
* <p>matchID is passed to createKey to create a key. If the key
- * is not NULL, its isFallbackOf method is used to filter out IDs
+ * is not nullptr, its isFallbackOf method is used to filter out IDs
* that don't match the key or have it as a fallback.</p>
*
* @param result a vector to hold the returned IDs.
- * @param matchID an ID used to filter the result, or NULL if all IDs are desired.
+ * @param matchID an ID used to filter the result, or nullptr if all IDs are desired.
* @param status the error code status.
* @return the result vector.
*/
@@ -711,7 +711,7 @@ class U_COMMON_API ICUService : public ICUNotifier {
/**
* <p>Convenience override of getDisplayNames(const Locale&, const UnicodeString*) that
- * uses the current default Locale as the locale and NULL for
+ * uses the current default Locale as the locale and nullptr for
* the matchID.</p>
*
* @param result a vector to hold the returned displayName/id StringPairs.
@@ -722,7 +722,7 @@ class U_COMMON_API ICUService : public ICUNotifier {
/**
* <p>Convenience override of getDisplayNames(const Locale&, const UnicodeString*) that
- * uses NULL for the matchID.</p>
+ * uses nullptr for the matchID.</p>
*
* @param result a vector to hold the returned displayName/id StringPairs.
* @param locale the locale in which to localize the ID.
@@ -746,12 +746,12 @@ class U_COMMON_API ICUService : public ICUNotifier {
* discarded before new elements, if any, are added.</p>
*
* <p>matchID is passed to createKey to create a key. If the key
- * is not NULL, its isFallbackOf method is used to filter out IDs
+ * is not nullptr, its isFallbackOf method is used to filter out IDs
* that don't match the key or have it as a fallback.</p>
*
* @param result a vector to hold the returned displayName/id StringPairs.
* @param locale the locale in which to localize the ID.
- * @param matchID an ID used to filter the result, or NULL if all IDs are desired.
+ * @param matchID an ID used to filter the result, or nullptr if all IDs are desired.
* @param status the error code status.
* @return the result vector. */
UVector& getDisplayNames(UVector& result,
@@ -830,7 +830,7 @@ class U_COMMON_API ICUService : public ICUNotifier {
*
* <p>This issues a serviceChanged notification to registered listeners.</p>
*/
- virtual void reset(void);
+ virtual void reset();
/**
* <p>Return true if the service is in its default state.</p>
@@ -838,10 +838,10 @@ class U_COMMON_API ICUService : public ICUNotifier {
* <p>The default implementation returns true if there are no
* factories registered.</p>
*/
- virtual UBool isDefault(void) const;
+ virtual UBool isDefault() const;
/**
- * <p>Create a key from an ID. If ID is NULL, returns NULL.</p>
+ * <p>Create a key from an ID. If ID is nullptr, returns nullptr.</p>
*
* <p>The default implementation creates an ICUServiceKey instance.
* Subclasses can override to define more useful keys appropriate
@@ -849,7 +849,7 @@ class U_COMMON_API ICUService : public ICUNotifier {
*
* @param a pointer to the ID for which to create a default ICUServiceKey.
* @param status the error code status.
- * @return the ICUServiceKey corresponding to ID, or NULL.
+ * @return the ICUServiceKey corresponding to ID, or nullptr.
*/
virtual ICUServiceKey* createKey(const UnicodeString* id, UErrorCode& status) const;
@@ -859,7 +859,7 @@ class U_COMMON_API ICUService : public ICUNotifier {
* This is public so factories can call it, but should really be protected.</p>
*
* @param instance the service instance to clone.
- * @return a clone of the passed-in instance, or NULL if cloning was unsuccessful.
+ * @return a clone of the passed-in instance, or nullptr if cloning was unsuccessful.
*/
virtual UObject* cloneInstance(UObject* instance) const = 0;
@@ -895,18 +895,18 @@ class U_COMMON_API ICUService : public ICUNotifier {
* directly, since it must only be called while holding write
* access to the factory list.</p>
*/
- virtual void reInitializeFactories(void);
+ virtual void reInitializeFactories();
/**
* <p>Default handler for this service if no factory in the factory list
* handled the key passed to getKey.</p>
*
- * <p>The default implementation returns NULL.</p>
+ * <p>The default implementation returns nullptr.</p>
*
* @param key the key.
- * @param actualReturn a pointer to a UnicodeString to hold the matched descriptor, or NULL.
+ * @param actualReturn a pointer to a UnicodeString to hold the matched descriptor, or nullptr.
* @param status the error code status.
- * @return the service instance, or NULL.
+ * @return the service instance, or nullptr.
*/
virtual UObject* handleDefault(const ICUServiceKey& key, UnicodeString* actualReturn, UErrorCode& status) const;
@@ -918,7 +918,7 @@ class U_COMMON_API ICUService : public ICUNotifier {
* should generally not call this method directly, as it must only
* be called while synchronized on the factory lock.</p>
*/
- virtual void clearCaches(void);
+ virtual void clearCaches();
/**
* <p>Return true if the listener is accepted.</p>
@@ -955,7 +955,7 @@ class U_COMMON_API ICUService : public ICUNotifier {
* the resolution of IDs also changes, requiring the cache to be
* flushed, but not the visible IDs themselves.</p>
*/
- void clearServiceCache(void);
+ void clearServiceCache();
/**
* <p>Return a map from visible IDs to factories.
@@ -972,14 +972,14 @@ class U_COMMON_API ICUService : public ICUNotifier {
*
* @return the timestamp.
*/
- int32_t getTimestamp(void) const;
+ int32_t getTimestamp() const;
/**
* <p>Return the number of registered factories.</p>
*
* @return the number of factories registered at the time of the call.
*/
- int32_t countFactories(void) const;
+ int32_t countFactories() const;
private:
diff --git a/Build/source/libs/icu/icu-src/source/common/servlk.cpp b/Build/source/libs/icu/icu-src/source/common/servlk.cpp
index 70218066595..ba275ea3011 100644
--- a/Build/source/libs/icu/icu-src/source/common/servlk.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/servlk.cpp
@@ -21,9 +21,9 @@
#include "charstr.h"
#include "uassert.h"
-#define UNDERSCORE_CHAR ((UChar)0x005f)
-#define AT_SIGN_CHAR ((UChar)64)
-#define PERIOD_CHAR ((UChar)46)
+#define UNDERSCORE_CHAR ((char16_t)0x005f)
+#define AT_SIGN_CHAR ((char16_t)64)
+#define PERIOD_CHAR ((char16_t)46)
U_NAMESPACE_BEGIN
@@ -41,8 +41,8 @@ LocaleKey::createWithCanonicalFallback(const UnicodeString* primaryID,
int32_t kind,
UErrorCode& status)
{
- if (primaryID == NULL || U_FAILURE(status)) {
- return NULL;
+ if (primaryID == nullptr || U_FAILURE(status)) {
+ return nullptr;
}
UnicodeString canonicalPrimaryID;
LocaleUtility::canonicalLocaleString(primaryID, canonicalPrimaryID);
@@ -61,7 +61,7 @@ LocaleKey::LocaleKey(const UnicodeString& primaryID,
{
_fallbackID.setToBogus();
if (_primaryID.length() != 0) {
- if (canonicalFallbackID != NULL && _primaryID != *canonicalFallbackID) {
+ if (canonicalFallbackID != nullptr && _primaryID != *canonicalFallbackID) {
_fallbackID = *canonicalFallbackID;
}
}
@@ -74,7 +74,7 @@ LocaleKey::~LocaleKey() {}
UnicodeString&
LocaleKey::prefix(UnicodeString& result) const {
if (_kind != KIND_ANY) {
- UChar buffer[64];
+ char16_t buffer[64];
uprv_itou(buffer, 64, _kind, 10, 0);
UnicodeString temp(buffer);
result.append(temp);
diff --git a/Build/source/libs/icu/icu-src/source/common/servlkf.cpp b/Build/source/libs/icu/icu-src/source/common/servlkf.cpp
index 7ccb0c72aa6..f5bb0418c4e 100644
--- a/Build/source/libs/icu/icu-src/source/common/servlkf.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/servlkf.cpp
@@ -22,9 +22,9 @@
#include "ucln_cmn.h"
#include "uassert.h"
-#define UNDERSCORE_CHAR ((UChar)0x005f)
-#define AT_SIGN_CHAR ((UChar)64)
-#define PERIOD_CHAR ((UChar)46)
+#define UNDERSCORE_CHAR ((char16_t)0x005f)
+#define AT_SIGN_CHAR ((char16_t)64)
+#define PERIOD_CHAR ((char16_t)46)
U_NAMESPACE_BEGIN
@@ -47,14 +47,14 @@ LocaleKeyFactory::~LocaleKeyFactory() {
UObject*
LocaleKeyFactory::create(const ICUServiceKey& key, const ICUService* service, UErrorCode& status) const {
if (handlesKey(key, status)) {
- const LocaleKey& lkey = (const LocaleKey&)key;
+ const LocaleKey& lkey = static_cast<const LocaleKey&>(key);
int32_t kind = lkey.kind();
Locale loc;
lkey.currentLocale(loc);
return handleCreate(loc, kind, service, status);
}
- return NULL;
+ return nullptr;
}
UBool
@@ -63,7 +63,7 @@ LocaleKeyFactory::handlesKey(const ICUServiceKey& key, UErrorCode& status) const
if (supported) {
UnicodeString id;
key.currentID(id);
- return supported->get(id) != NULL;
+ return supported->get(id) != nullptr;
}
return false;
}
@@ -73,9 +73,9 @@ LocaleKeyFactory::updateVisibleIDs(Hashtable& result, UErrorCode& status) const
const Hashtable* supported = getSupportedIDs(status);
if (supported) {
UBool visible = (_coverage & 0x1) == 0;
- const UHashElement* elem = NULL;
+ const UHashElement* elem = nullptr;
int32_t pos = UHASH_FIRST;
- while ((elem = supported->nextElement(pos)) != NULL) {
+ while ((elem = supported->nextElement(pos)) != nullptr) {
const UnicodeString& id = *((const UnicodeString*)elem->key.pointer);
if (!visible) {
result.remove(id);
@@ -109,7 +109,7 @@ LocaleKeyFactory::handleCreate(const Locale& /* loc */,
int32_t /* kind */,
const ICUService* /* service */,
UErrorCode& /* status */) const {
- return NULL;
+ return nullptr;
}
//UBool
@@ -120,7 +120,7 @@ LocaleKeyFactory::handleCreate(const Locale& /* loc */,
const Hashtable*
LocaleKeyFactory::getSupportedIDs(UErrorCode& /* status */) const {
- return NULL;
+ return nullptr;
}
#ifdef SERVICE_DEBUG
diff --git a/Build/source/libs/icu/icu-src/source/common/servloc.h b/Build/source/libs/icu/icu-src/source/common/servloc.h
index 29c50a27d1a..49d12409058 100644
--- a/Build/source/libs/icu/icu-src/source/common/servloc.h
+++ b/Build/source/libs/icu/icu-src/source/common/servloc.h
@@ -258,7 +258,7 @@ public:
protected:
/**
* Utility method used by create(ICUServiceKey, ICUService). Subclasses can implement
- * this instead of create. The default returns NULL.
+ * this instead of create. The default returns nullptr.
*/
virtual UObject* handleCreate(const Locale& loc, int32_t kind, const ICUService* service, UErrorCode& status) const;
@@ -518,7 +518,7 @@ class U_COMMON_API ICULocaleService : public ICUService
* Convenience method for callers using locales. This returns the standard
* service ID enumeration.
*/
- virtual StringEnumeration* getAvailableLocales(void) const;
+ virtual StringEnumeration* getAvailableLocales() const;
protected:
diff --git a/Build/source/libs/icu/icu-src/source/common/servls.cpp b/Build/source/libs/icu/icu-src/source/common/servls.cpp
index 19481122efa..978a956df7c 100644
--- a/Build/source/libs/icu/icu-src/source/common/servls.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/servls.cpp
@@ -20,9 +20,9 @@
#include "charstr.h"
#include "uassert.h"
-#define UNDERSCORE_CHAR ((UChar)0x005f)
-#define AT_SIGN_CHAR ((UChar)64)
-#define PERIOD_CHAR ((UChar)46)
+#define UNDERSCORE_CHAR ((char16_t)0x005f)
+#define AT_SIGN_CHAR ((char16_t)64)
+#define PERIOD_CHAR ((char16_t)46)
U_NAMESPACE_BEGIN
@@ -44,13 +44,13 @@ ICULocaleService::~ICULocaleService()
UObject*
ICULocaleService::get(const Locale& locale, UErrorCode& status) const
{
- return get(locale, LocaleKey::KIND_ANY, NULL, status);
+ return get(locale, LocaleKey::KIND_ANY, nullptr, status);
}
UObject*
ICULocaleService::get(const Locale& locale, int32_t kind, UErrorCode& status) const
{
- return get(locale, kind, NULL, status);
+ return get(locale, kind, nullptr, status);
}
UObject*
@@ -62,7 +62,7 @@ ICULocaleService::get(const Locale& locale, Locale* actualReturn, UErrorCode& st
UObject*
ICULocaleService::get(const Locale& locale, int32_t kind, Locale* actualReturn, UErrorCode& status) const
{
- UObject* result = NULL;
+ UObject* result = nullptr;
if (U_FAILURE(status)) {
return result;
}
@@ -73,13 +73,13 @@ ICULocaleService::get(const Locale& locale, int32_t kind, Locale* actualReturn,
} else {
ICUServiceKey* key = createKey(&locName, kind, status);
if (key) {
- if (actualReturn == NULL) {
+ if (actualReturn == nullptr) {
result = getKey(*key, status);
} else {
UnicodeString temp;
result = getKey(*key, &temp, status);
- if (result != NULL) {
+ if (result != nullptr) {
key->parseSuffix(temp);
LocaleUtility::initLocaleFromName(temp, *actualReturn);
}
@@ -117,11 +117,11 @@ URegistryKey
ICULocaleService::registerInstance(UObject* objToAdopt, const Locale& locale, int32_t kind, int32_t coverage, UErrorCode& status)
{
ICUServiceFactory * factory = new SimpleLocaleKeyFactory(objToAdopt, locale, kind, coverage);
- if (factory != NULL) {
+ if (factory != nullptr) {
return registerFactory(factory, status);
}
delete objToAdopt;
- return NULL;
+ return nullptr;
}
#if 0
@@ -143,11 +143,11 @@ URegistryKey
ICULocaleService::registerInstance(UObject* objToAdopt, const UnicodeString& locale, int32_t kind, int32_t coverage, UErrorCode& status)
{
ICUServiceFactory * factory = new SimpleLocaleKeyFactory(objToAdopt, locale, kind, coverage);
- if (factory != NULL) {
+ if (factory != nullptr) {
return registerFactory(factory, status);
}
delete objToAdopt;
- return NULL;
+ return nullptr;
}
#endif
@@ -162,7 +162,7 @@ private:
ServiceEnumeration(const ICULocaleService* service, UErrorCode &status)
: _service(service)
, _timestamp(service->getTimestamp())
- , _ids(uprv_deleteUObject, NULL, status)
+ , _ids(uprv_deleteUObject, nullptr, status)
, _pos(0)
{
_service->getVisibleIDs(_ids, status);
@@ -171,7 +171,7 @@ private:
ServiceEnumeration(const ServiceEnumeration &other, UErrorCode &status)
: _service(other._service)
, _timestamp(other._timestamp)
- , _ids(uprv_deleteUObject, NULL, status)
+ , _ids(uprv_deleteUObject, nullptr, status)
, _pos(0)
{
if(U_SUCCESS(status)) {
@@ -197,7 +197,7 @@ public:
return result;
}
delete result;
- return NULL;
+ return nullptr;
}
virtual ~ServiceEnumeration();
@@ -207,7 +207,7 @@ public:
ServiceEnumeration *cl = new ServiceEnumeration(*this, status);
if(U_FAILURE(status)) {
delete cl;
- cl = NULL;
+ cl = nullptr;
}
return cl;
}
@@ -230,7 +230,7 @@ public:
if (upToDate(status) && (_pos < _ids.size())) {
return (const UnicodeString*)_ids[_pos++];
}
- return NULL;
+ return nullptr;
}
virtual void reset(UErrorCode& status) override {
@@ -245,8 +245,8 @@ public:
}
public:
- static UClassID U_EXPORT2 getStaticClassID(void);
- virtual UClassID getDynamicClassID(void) const override;
+ static UClassID U_EXPORT2 getStaticClassID();
+ virtual UClassID getDynamicClassID() const override;
};
ServiceEnumeration::~ServiceEnumeration() {}
@@ -254,7 +254,7 @@ ServiceEnumeration::~ServiceEnumeration() {}
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(ServiceEnumeration)
StringEnumeration*
-ICULocaleService::getAvailableLocales(void) const
+ICULocaleService::getAvailableLocales() const
{
return ServiceEnumeration::create(this);
}
diff --git a/Build/source/libs/icu/icu-src/source/common/servnotf.cpp b/Build/source/libs/icu/icu-src/source/common/servnotf.cpp
index d9fb3887520..b2ad663a488 100644
--- a/Build/source/libs/icu/icu-src/source/common/servnotf.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/servnotf.cpp
@@ -23,16 +23,16 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(EventListener)
static UMutex notifyLock;
-ICUNotifier::ICUNotifier(void)
-: listeners(NULL)
+ICUNotifier::ICUNotifier()
+: listeners(nullptr)
{
}
-ICUNotifier::~ICUNotifier(void) {
+ICUNotifier::~ICUNotifier() {
{
Mutex lmx(&notifyLock);
delete listeners;
- listeners = NULL;
+ listeners = nullptr;
}
}
@@ -41,14 +41,14 @@ void
ICUNotifier::addListener(const EventListener* l, UErrorCode& status)
{
if (U_SUCCESS(status)) {
- if (l == NULL) {
+ if (l == nullptr) {
status = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
if (acceptsListener(*l)) {
Mutex lmx(&notifyLock);
- if (listeners == NULL) {
+ if (listeners == nullptr) {
LocalPointer<UVector> lpListeners(new UVector(5, status), status);
if (U_FAILURE(status)) {
return;
@@ -78,14 +78,14 @@ void
ICUNotifier::removeListener(const EventListener *l, UErrorCode& status)
{
if (U_SUCCESS(status)) {
- if (l == NULL) {
+ if (l == nullptr) {
status = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
{
Mutex lmx(&notifyLock);
- if (listeners != NULL) {
+ if (listeners != nullptr) {
// identity equality check
for (int i = 0, e = listeners->size(); i < e; ++i) {
const EventListener* el = (const EventListener*)listeners->elementAt(i);
@@ -93,7 +93,7 @@ ICUNotifier::removeListener(const EventListener *l, UErrorCode& status)
listeners->removeElementAt(i);
if (listeners->size() == 0) {
delete listeners;
- listeners = NULL;
+ listeners = nullptr;
}
return;
}
@@ -104,10 +104,10 @@ ICUNotifier::removeListener(const EventListener *l, UErrorCode& status)
}
void
-ICUNotifier::notifyChanged(void)
+ICUNotifier::notifyChanged()
{
Mutex lmx(&notifyLock);
- if (listeners != NULL) {
+ if (listeners != nullptr) {
for (int i = 0, e = listeners->size(); i < e; ++i) {
EventListener* el = (EventListener*)listeners->elementAt(i);
notifyListener(*el);
diff --git a/Build/source/libs/icu/icu-src/source/common/servnotf.h b/Build/source/libs/icu/icu-src/source/common/servnotf.h
index e3b2cac32e4..840fe1ae87f 100644
--- a/Build/source/libs/icu/icu-src/source/common/servnotf.h
+++ b/Build/source/libs/icu/icu-src/source/common/servnotf.h
@@ -75,9 +75,9 @@ class U_COMMON_API ICUNotifier : public UMemory {
private: UVector* listeners;
public:
- ICUNotifier(void);
+ ICUNotifier();
- virtual ~ICUNotifier(void);
+ virtual ~ICUNotifier();
/**
* Add a listener to be notified when notifyChanged is called.
@@ -101,7 +101,7 @@ public:
* indefinitely block the calling thread. Callers should beware of
* deadlock situations.
*/
- virtual void notifyChanged(void);
+ virtual void notifyChanged();
protected:
/**
diff --git a/Build/source/libs/icu/icu-src/source/common/servrbf.cpp b/Build/source/libs/icu/icu-src/source/common/servrbf.cpp
index 94279ab3a15..a4feca2c3b0 100644
--- a/Build/source/libs/icu/icu-src/source/common/servrbf.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/servrbf.cpp
@@ -22,9 +22,9 @@
#include "ucln_cmn.h"
#include "uassert.h"
-#define UNDERSCORE_CHAR ((UChar)0x005f)
-#define AT_SIGN_CHAR ((UChar)64)
-#define PERIOD_CHAR ((UChar)46)
+#define UNDERSCORE_CHAR ((char16_t)0x005f)
+#define AT_SIGN_CHAR ((char16_t)64)
+#define PERIOD_CHAR ((char16_t)46)
U_NAMESPACE_BEGIN
@@ -48,7 +48,7 @@ ICUResourceBundleFactory::getSupportedIDs(UErrorCode& status) const
if (U_SUCCESS(status)) {
return LocaleUtility::getAvailableLocaleNames(_bundleName);
}
- return NULL;
+ return nullptr;
}
UObject*
@@ -63,11 +63,11 @@ ICUResourceBundleFactory::handleCreate(const Locale& loc, int32_t /* kind */, co
int32_t length;
length=_bundleName.extract(0, INT32_MAX, pkg, (int32_t)sizeof(pkg), US_INV);
if(length>=(int32_t)sizeof(pkg)) {
- return NULL;
+ return nullptr;
}
return new ResourceBundle(pkg, loc, status);
}
- return NULL;
+ return nullptr;
}
#ifdef SERVICE_DEBUG
diff --git a/Build/source/libs/icu/icu-src/source/common/servslkf.cpp b/Build/source/libs/icu/icu-src/source/common/servslkf.cpp
index 09154d1b919..b3ab1cc9ce9 100644
--- a/Build/source/libs/icu/icu-src/source/common/servslkf.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/servslkf.cpp
@@ -21,9 +21,9 @@
#include "charstr.h"
#include "uassert.h"
-#define UNDERSCORE_CHAR ((UChar)0x005f)
-#define AT_SIGN_CHAR ((UChar)64)
-#define PERIOD_CHAR ((UChar)46)
+#define UNDERSCORE_CHAR ((char16_t)0x005f)
+#define AT_SIGN_CHAR ((char16_t)64)
+#define PERIOD_CHAR ((char16_t)46)
U_NAMESPACE_BEGIN
@@ -57,14 +57,14 @@ SimpleLocaleKeyFactory::SimpleLocaleKeyFactory(UObject* objToAdopt,
SimpleLocaleKeyFactory::~SimpleLocaleKeyFactory()
{
delete _obj;
- _obj = NULL;
+ _obj = nullptr;
}
UObject*
SimpleLocaleKeyFactory::create(const ICUServiceKey& key, const ICUService* service, UErrorCode& status) const
{
if (U_SUCCESS(status)) {
- const LocaleKey& lkey = (const LocaleKey&)key;
+ const LocaleKey& lkey = static_cast<const LocaleKey&>(key);
if (_kind == LocaleKey::KIND_ANY || _kind == lkey.kind()) {
UnicodeString keyID;
lkey.currentID(keyID);
@@ -73,7 +73,7 @@ SimpleLocaleKeyFactory::create(const ICUServiceKey& key, const ICUService* servi
}
}
}
- return NULL;
+ return nullptr;
}
//UBool
diff --git a/Build/source/libs/icu/icu-src/source/common/sharedobject.h b/Build/source/libs/icu/icu-src/source/common/sharedobject.h
index 6298662bbaf..5532ec48d88 100644
--- a/Build/source/libs/icu/icu-src/source/common/sharedobject.h
+++ b/Build/source/libs/icu/icu-src/source/common/sharedobject.h
@@ -57,14 +57,14 @@ public:
SharedObject() :
softRefCount(0),
hardRefCount(0),
- cachePtr(NULL) {}
+ cachePtr(nullptr) {}
/** Initializes totalRefCount, softRefCount to 0. */
SharedObject(const SharedObject &other) :
UObject(other),
softRefCount(0),
hardRefCount(0),
- cachePtr(NULL) {}
+ cachePtr(nullptr) {}
virtual ~SharedObject();
@@ -116,7 +116,7 @@ public:
* If there are multiple owners, then ptr is replaced with a
* copy-constructed clone,
* and that is returned.
- * Returns NULL if cloning failed.
+ * Returns nullptr if cloning failed.
*
* T must be a subclass of SharedObject.
*/
@@ -125,7 +125,7 @@ public:
const T *p = ptr;
if(p->getRefCount() <= 1) { return const_cast<T *>(p); }
T *p2 = new T(*p);
- if(p2 == NULL) { return NULL; }
+ if(p2 == nullptr) { return nullptr; }
p->removeRef();
ptr = p2;
p2->addRef();
@@ -135,7 +135,7 @@ public:
/**
* Makes dest an owner of the object pointed to by src while adjusting
* reference counts and deleting the previous object dest pointed to
- * if necessary. Before this call is made, dest must either be NULL or
+ * if necessary. Before this call is made, dest must either be nullptr or
* be included in the reference count of the object it points to.
*
* T must be a subclass of SharedObject.
@@ -143,20 +143,20 @@ public:
template<typename T>
static void copyPtr(const T *src, const T *&dest) {
if(src != dest) {
- if(dest != NULL) { dest->removeRef(); }
+ if(dest != nullptr) { dest->removeRef(); }
dest = src;
- if(src != NULL) { src->addRef(); }
+ if(src != nullptr) { src->addRef(); }
}
}
/**
- * Equivalent to copyPtr(NULL, dest).
+ * Equivalent to copyPtr(nullptr, dest).
*/
template<typename T>
static void clearPtr(const T *&ptr) {
- if (ptr != NULL) {
+ if (ptr != nullptr) {
ptr->removeRef();
- ptr = NULL;
+ ptr = nullptr;
}
}
diff --git a/Build/source/libs/icu/icu-src/source/common/simpleformatter.cpp b/Build/source/libs/icu/icu-src/source/common/simpleformatter.cpp
index 01d3024cfc3..16256270727 100644
--- a/Build/source/libs/icu/icu-src/source/common/simpleformatter.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/simpleformatter.cpp
@@ -25,11 +25,11 @@ namespace {
*/
const int32_t ARG_NUM_LIMIT = 0x100;
/**
- * Initial and maximum char/UChar value set for a text segment.
+ * Initial and maximum char/char16_t value set for a text segment.
* Segment length char values are from ARG_NUM_LIMIT+1 to this value here.
* Normally 0xffff, but can be as small as ARG_NUM_LIMIT+1 for testing.
*/
-const UChar SEGMENT_LENGTH_PLACEHOLDER_CHAR = 0xffff;
+const char16_t SEGMENT_LENGTH_PLACEHOLDER_CHAR = 0xffff;
/**
* Maximum length of a text segment. Longer segments are split into shorter ones.
*/
@@ -45,7 +45,7 @@ enum {
};
inline UBool isInvalidArray(const void *array, int32_t length) {
- return (length < 0 || (array == NULL && length != 0));
+ return (length < 0 || (array == nullptr && length != 0));
}
} // namespace
@@ -70,15 +70,15 @@ UBool SimpleFormatter::applyPatternMinMaxArguments(
// Parse consistent with MessagePattern, but
// - support only simple numbered arguments
// - build a simple binary structure into the result string
- const UChar *patternBuffer = pattern.getBuffer();
+ const char16_t *patternBuffer = pattern.getBuffer();
int32_t patternLength = pattern.length();
// Reserve the first char for the number of arguments.
- compiledPattern.setTo((UChar)0);
+ compiledPattern.setTo((char16_t)0);
int32_t textLength = 0;
int32_t maxArg = -1;
UBool inQuote = false;
for (int32_t i = 0; i < patternLength;) {
- UChar c = patternBuffer[i++];
+ char16_t c = patternBuffer[i++];
if (c == APOS) {
if (i < patternLength && (c = patternBuffer[i]) == APOS) {
// double apostrophe, skip the second one
@@ -98,7 +98,7 @@ UBool SimpleFormatter::applyPatternMinMaxArguments(
} else if (!inQuote && c == OPEN_BRACE) {
if (textLength > 0) {
compiledPattern.setCharAt(compiledPattern.length() - textLength - 1,
- (UChar)(ARG_NUM_LIMIT + textLength));
+ (char16_t)(ARG_NUM_LIMIT + textLength));
textLength = 0;
}
int32_t argNumber;
@@ -129,7 +129,7 @@ UBool SimpleFormatter::applyPatternMinMaxArguments(
if (argNumber > maxArg) {
maxArg = argNumber;
}
- compiledPattern.append((UChar)argNumber);
+ compiledPattern.append((char16_t)argNumber);
continue;
} // else: c is part of literal text
// Append c and track the literal-text segment length.
@@ -144,14 +144,14 @@ UBool SimpleFormatter::applyPatternMinMaxArguments(
}
if (textLength > 0) {
compiledPattern.setCharAt(compiledPattern.length() - textLength - 1,
- (UChar)(ARG_NUM_LIMIT + textLength));
+ (char16_t)(ARG_NUM_LIMIT + textLength));
}
int32_t argCount = maxArg + 1;
if (argCount < min || max < argCount) {
errorCode = U_ILLEGAL_ARGUMENT_ERROR;
return false;
}
- compiledPattern.setCharAt(0, (UChar)argCount);
+ compiledPattern.setCharAt(0, (char16_t)argCount);
return true;
}
@@ -159,7 +159,7 @@ UnicodeString& SimpleFormatter::format(
const UnicodeString &value0,
UnicodeString &appendTo, UErrorCode &errorCode) const {
const UnicodeString *values[] = { &value0 };
- return formatAndAppend(values, 1, appendTo, NULL, 0, errorCode);
+ return formatAndAppend(values, 1, appendTo, nullptr, 0, errorCode);
}
UnicodeString& SimpleFormatter::format(
@@ -167,7 +167,7 @@ UnicodeString& SimpleFormatter::format(
const UnicodeString &value1,
UnicodeString &appendTo, UErrorCode &errorCode) const {
const UnicodeString *values[] = { &value0, &value1 };
- return formatAndAppend(values, 2, appendTo, NULL, 0, errorCode);
+ return formatAndAppend(values, 2, appendTo, nullptr, 0, errorCode);
}
UnicodeString& SimpleFormatter::format(
@@ -176,7 +176,7 @@ UnicodeString& SimpleFormatter::format(
const UnicodeString &value2,
UnicodeString &appendTo, UErrorCode &errorCode) const {
const UnicodeString *values[] = { &value0, &value1, &value2 };
- return formatAndAppend(values, 3, appendTo, NULL, 0, errorCode);
+ return formatAndAppend(values, 3, appendTo, nullptr, 0, errorCode);
}
UnicodeString& SimpleFormatter::formatAndAppend(
@@ -192,7 +192,7 @@ UnicodeString& SimpleFormatter::formatAndAppend(
return appendTo;
}
return format(compiledPattern.getBuffer(), compiledPattern.length(), values,
- appendTo, NULL, true,
+ appendTo, nullptr, true,
offsets, offsetsLength, errorCode);
}
@@ -207,7 +207,7 @@ UnicodeString &SimpleFormatter::formatAndReplace(
errorCode = U_ILLEGAL_ARGUMENT_ERROR;
return result;
}
- const UChar *cp = compiledPattern.getBuffer();
+ const char16_t *cp = compiledPattern.getBuffer();
int32_t cpLength = compiledPattern.length();
if (valuesLength < getArgumentLimit(cp, cpLength)) {
errorCode = U_ILLEGAL_ARGUMENT_ERROR;
@@ -246,7 +246,7 @@ UnicodeString &SimpleFormatter::formatAndReplace(
}
UnicodeString SimpleFormatter::getTextWithNoArguments(
- const UChar *compiledPattern,
+ const char16_t *compiledPattern,
int32_t compiledPatternLength,
int32_t* offsets,
int32_t offsetsLength) {
@@ -272,7 +272,7 @@ UnicodeString SimpleFormatter::getTextWithNoArguments(
}
UnicodeString &SimpleFormatter::format(
- const UChar *compiledPattern, int32_t compiledPatternLength,
+ const char16_t *compiledPattern, int32_t compiledPatternLength,
const UnicodeString *const *values,
UnicodeString &result, const UnicodeString *resultCopy, UBool forbidResultAsValue,
int32_t *offsets, int32_t offsetsLength,
@@ -287,7 +287,7 @@ UnicodeString &SimpleFormatter::format(
int32_t n = compiledPattern[i++];
if (n < ARG_NUM_LIMIT) {
const UnicodeString *value = values[n];
- if (value == NULL) {
+ if (value == nullptr) {
errorCode = U_ILLEGAL_ARGUMENT_ERROR;
return result;
}
diff --git a/Build/source/libs/icu/icu-src/source/common/sources.txt b/Build/source/libs/icu/icu-src/source/common/sources.txt
index e5c39dd2ce3..c1d2080bcc6 100644
--- a/Build/source/libs/icu/icu-src/source/common/sources.txt
+++ b/Build/source/libs/icu/icu-src/source/common/sources.txt
@@ -43,6 +43,7 @@ locutil.cpp
lsr.cpp
lstmbe.cpp
messagepattern.cpp
+mlbe.cpp
normalizer2.cpp
normalizer2impl.cpp
normlzr.cpp
@@ -138,6 +139,8 @@ ulist.cpp
uloc.cpp
uloc_keytype.cpp
uloc_tag.cpp
+ulocale.cpp
+ulocbuilder.cpp
umapfile.cpp
umath.cpp
umutablecptrie.cpp
diff --git a/Build/source/libs/icu/icu-src/source/common/static_unicode_sets.cpp b/Build/source/libs/icu/icu-src/source/common/static_unicode_sets.cpp
index db9432f49a8..0db5ea000d4 100644
--- a/Build/source/libs/icu/icu-src/source/common/static_unicode_sets.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/static_unicode_sets.cpp
@@ -72,7 +72,7 @@ void saveSet(Key key, const UnicodeString& unicodeSetPattern, UErrorCode& status
class ParseDataSink : public ResourceSink {
public:
- void put(const char* key, ResourceValue& value, UBool /*noFallback*/, UErrorCode& status) U_OVERRIDE {
+ void put(const char* key, ResourceValue& value, UBool /*noFallback*/, UErrorCode& status) override {
ResourceTable contextsTable = value.getTable(status);
if (U_FAILURE(status)) { return; }
for (int i = 0; contextsTable.getKeyAndValue(i, key, value); i++) {
diff --git a/Build/source/libs/icu/icu-src/source/common/stringpiece.cpp b/Build/source/libs/icu/icu-src/source/common/stringpiece.cpp
index 99089e08ef9..eb9766c0180 100644
--- a/Build/source/libs/icu/icu-src/source/common/stringpiece.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/stringpiece.cpp
@@ -16,7 +16,7 @@
U_NAMESPACE_BEGIN
StringPiece::StringPiece(const char* str)
- : ptr_(str), length_((str == NULL) ? 0 : static_cast<int32_t>(uprv_strlen(str))) { }
+ : ptr_(str), length_((str == nullptr) ? 0 : static_cast<int32_t>(uprv_strlen(str))) { }
StringPiece::StringPiece(const StringPiece& x, int32_t pos) {
if (pos < 0) {
@@ -45,7 +45,7 @@ StringPiece::StringPiece(const StringPiece& x, int32_t pos, int32_t len) {
void StringPiece::set(const char* str) {
ptr_ = str;
- if (str != NULL)
+ if (str != nullptr)
length_ = static_cast<int32_t>(uprv_strlen(str));
else
length_ = 0;
diff --git a/Build/source/libs/icu/icu-src/source/common/stringtriebuilder.cpp b/Build/source/libs/icu/icu-src/source/common/stringtriebuilder.cpp
index e6670d1cb71..2a40dc88fd8 100644
--- a/Build/source/libs/icu/icu-src/source/common/stringtriebuilder.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/stringtriebuilder.cpp
@@ -36,7 +36,7 @@ U_CDECL_END
U_NAMESPACE_BEGIN
-StringTrieBuilder::StringTrieBuilder() : nodes(NULL) {}
+StringTrieBuilder::StringTrieBuilder() : nodes(nullptr) {}
StringTrieBuilder::~StringTrieBuilder() {
deleteCompactBuilder();
@@ -47,10 +47,10 @@ StringTrieBuilder::createCompactBuilder(int32_t sizeGuess, UErrorCode &errorCode
if(U_FAILURE(errorCode)) {
return;
}
- nodes=uhash_openSize(hashStringTrieNode, equalStringTrieNodes, NULL,
+ nodes=uhash_openSize(hashStringTrieNode, equalStringTrieNodes, nullptr,
sizeGuess, &errorCode);
if(U_SUCCESS(errorCode)) {
- if(nodes==NULL) {
+ if(nodes==nullptr) {
errorCode=U_MEMORY_ALLOCATION_ERROR;
} else {
uhash_setKeyDeleter(nodes, uprv_deleteUObject);
@@ -61,7 +61,7 @@ StringTrieBuilder::createCompactBuilder(int32_t sizeGuess, UErrorCode &errorCode
void
StringTrieBuilder::deleteCompactBuilder() {
uhash_close(nodes);
- nodes=NULL;
+ nodes=nullptr;
}
void
@@ -133,7 +133,7 @@ StringTrieBuilder::writeNode(int32_t start, int32_t limit, int32_t unitIndex) {
// length different units at unitIndex
int32_t
StringTrieBuilder::writeBranchSubNode(int32_t start, int32_t limit, int32_t unitIndex, int32_t length) {
- UChar middleUnits[kMaxSplitBranchLevels];
+ char16_t middleUnits[kMaxSplitBranchLevels];
int32_t lessThan[kMaxSplitBranchLevels];
int32_t ltLength=0;
while(length>getMaxBranchLinearSubNodeLength()) {
@@ -154,7 +154,7 @@ StringTrieBuilder::writeBranchSubNode(int32_t start, int32_t limit, int32_t unit
int32_t unitNumber=0;
do {
int32_t i=starts[unitNumber]=start;
- UChar unit=getElementUnit(i++, unitIndex);
+ char16_t unit=getElementUnit(i++, unitIndex);
i=indexOfElementWithNextUnit(i, unitIndex, unit);
isFinal[unitNumber]= start==i-1 && unitIndex+1==getElementStringLength(start);
start=i;
@@ -207,7 +207,7 @@ StringTrieBuilder::writeBranchSubNode(int32_t start, int32_t limit, int32_t unit
StringTrieBuilder::Node *
StringTrieBuilder::makeNode(int32_t start, int32_t limit, int32_t unitIndex, UErrorCode &errorCode) {
if(U_FAILURE(errorCode)) {
- return NULL;
+ return nullptr;
}
UBool hasValue=false;
int32_t value=0;
@@ -244,7 +244,7 @@ StringTrieBuilder::makeNode(int32_t start, int32_t limit, int32_t unitIndex, UEr
Node *subNode=makeBranchSubNode(start, limit, unitIndex, length, errorCode);
node=new BranchHeadNode(length, subNode);
}
- if(hasValue && node!=NULL) {
+ if(hasValue && node!=nullptr) {
if(matchNodesCanHaveValues()) {
((ValueNode *)node)->setValue(value);
} else {
@@ -260,9 +260,9 @@ StringTrieBuilder::Node *
StringTrieBuilder::makeBranchSubNode(int32_t start, int32_t limit, int32_t unitIndex,
int32_t length, UErrorCode &errorCode) {
if(U_FAILURE(errorCode)) {
- return NULL;
+ return nullptr;
}
- UChar middleUnits[kMaxSplitBranchLevels];
+ char16_t middleUnits[kMaxSplitBranchLevels];
Node *lessThan[kMaxSplitBranchLevels];
int32_t ltLength=0;
while(length>getMaxBranchLinearSubNodeLength()) {
@@ -278,18 +278,18 @@ StringTrieBuilder::makeBranchSubNode(int32_t start, int32_t limit, int32_t unitI
length=length-length/2;
}
if(U_FAILURE(errorCode)) {
- return NULL;
+ return nullptr;
}
ListBranchNode *listNode=new ListBranchNode();
- if(listNode==NULL) {
+ if(listNode==nullptr) {
errorCode=U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
// For each unit, find its elements array start and whether it has a final value.
int32_t unitNumber=0;
do {
int32_t i=start;
- UChar unit=getElementUnit(i++, unitIndex);
+ char16_t unit=getElementUnit(i++, unitIndex);
i=indexOfElementWithNextUnit(i, unitIndex, unit);
if(start==i-1 && unitIndex+1==getElementStringLength(start)) {
listNode->add(unit, getElementValue(start));
@@ -299,7 +299,7 @@ StringTrieBuilder::makeBranchSubNode(int32_t start, int32_t limit, int32_t unitI
start=i;
} while(++unitNumber<length-1);
// unitNumber==length-1, and the maxUnit elements range is [start..limit[
- UChar unit=getElementUnit(start, unitIndex);
+ char16_t unit=getElementUnit(start, unitIndex);
if(start==limit-1 && unitIndex+1==getElementStringLength(start)) {
listNode->add(unit, getElementValue(start));
} else {
@@ -319,14 +319,14 @@ StringTrieBuilder::Node *
StringTrieBuilder::registerNode(Node *newNode, UErrorCode &errorCode) {
if(U_FAILURE(errorCode)) {
delete newNode;
- return NULL;
+ return nullptr;
}
- if(newNode==NULL) {
+ if(newNode==nullptr) {
errorCode=U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
const UHashElement *old=uhash_find(nodes, newNode);
- if(old!=NULL) {
+ if(old!=nullptr) {
delete newNode;
return (Node *)old->key.pointer;
}
@@ -339,7 +339,7 @@ StringTrieBuilder::registerNode(Node *newNode, UErrorCode &errorCode) {
U_ASSERT(oldValue==0);
if(U_FAILURE(errorCode)) {
delete newNode;
- return NULL;
+ return nullptr;
}
return newNode;
}
@@ -347,17 +347,17 @@ StringTrieBuilder::registerNode(Node *newNode, UErrorCode &errorCode) {
StringTrieBuilder::Node *
StringTrieBuilder::registerFinalValue(int32_t value, UErrorCode &errorCode) {
if(U_FAILURE(errorCode)) {
- return NULL;
+ return nullptr;
}
FinalValueNode key(value);
const UHashElement *old=uhash_find(nodes, &key);
- if(old!=NULL) {
+ if(old!=nullptr) {
return (Node *)old->key.pointer;
}
Node *newNode=new FinalValueNode(value);
- if(newNode==NULL) {
+ if(newNode==nullptr) {
errorCode=U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
// If uhash_puti() returns a non-zero value from an equivalent, previously
// registered node, then uhash_find() failed to find that and we will leak newNode.
@@ -368,7 +368,7 @@ StringTrieBuilder::registerFinalValue(int32_t value, UErrorCode &errorCode) {
U_ASSERT(oldValue==0);
if(U_FAILURE(errorCode)) {
delete newNode;
- return NULL;
+ return nullptr;
}
return newNode;
}
@@ -404,7 +404,7 @@ StringTrieBuilder::FinalValueNode::operator==(const Node &other) const {
if(!Node::operator==(other)) {
return false;
}
- const FinalValueNode &o=(const FinalValueNode &)other;
+ const FinalValueNode &o=static_cast<const FinalValueNode &>(other);
return value==o.value;
}
@@ -421,7 +421,7 @@ StringTrieBuilder::ValueNode::operator==(const Node &other) const {
if(!Node::operator==(other)) {
return false;
}
- const ValueNode &o=(const ValueNode &)other;
+ const ValueNode &o=static_cast<const ValueNode &>(other);
return hasValue==o.hasValue && (!hasValue || value==o.value);
}
@@ -433,7 +433,7 @@ StringTrieBuilder::IntermediateValueNode::operator==(const Node &other) const {
if(!ValueNode::operator==(other)) {
return false;
}
- const IntermediateValueNode &o=(const IntermediateValueNode &)other;
+ const IntermediateValueNode &o=static_cast<const IntermediateValueNode &>(other);
return next==o.next;
}
@@ -459,7 +459,7 @@ StringTrieBuilder::LinearMatchNode::operator==(const Node &other) const {
if(!ValueNode::operator==(other)) {
return false;
}
- const LinearMatchNode &o=(const LinearMatchNode &)other;
+ const LinearMatchNode &o=static_cast<const LinearMatchNode &>(other);
return length==o.length && next==o.next;
}
@@ -479,7 +479,7 @@ StringTrieBuilder::ListBranchNode::operator==(const Node &other) const {
if(!Node::operator==(other)) {
return false;
}
- const ListBranchNode &o=(const ListBranchNode &)other;
+ const ListBranchNode &o=static_cast<const ListBranchNode &>(other);
for(int32_t i=0; i<length; ++i) {
if(units[i]!=o.units[i] || values[i]!=o.values[i] || equal[i]!=o.equal[i]) {
return false;
@@ -496,7 +496,7 @@ StringTrieBuilder::ListBranchNode::markRightEdgesFirst(int32_t edgeNumber) {
int32_t i=length;
do {
Node *edge=equal[--i];
- if(edge!=NULL) {
+ if(edge!=nullptr) {
edgeNumber=edge->markRightEdgesFirst(edgeNumber-step);
}
// For all but the rightmost edge, decrement the edge number.
@@ -515,17 +515,17 @@ StringTrieBuilder::ListBranchNode::write(StringTrieBuilder &builder) {
// Instead we write the minUnit sub-node last, for a shorter delta.
int32_t unitNumber=length-1;
Node *rightEdge=equal[unitNumber];
- int32_t rightEdgeNumber= rightEdge==NULL ? firstEdgeNumber : rightEdge->getOffset();
+ int32_t rightEdgeNumber= rightEdge==nullptr ? firstEdgeNumber : rightEdge->getOffset();
do {
--unitNumber;
- if(equal[unitNumber]!=NULL) {
+ if(equal[unitNumber]!=nullptr) {
equal[unitNumber]->writeUnlessInsideRightEdge(firstEdgeNumber, rightEdgeNumber, builder);
}
} while(unitNumber>0);
// The maxUnit sub-node is written as the very last one because we do
// not jump for it at all.
unitNumber=length-1;
- if(rightEdge==NULL) {
+ if(rightEdge==nullptr) {
builder.writeValueAndFinal(values[unitNumber], true);
} else {
rightEdge->write(builder);
@@ -535,7 +535,7 @@ StringTrieBuilder::ListBranchNode::write(StringTrieBuilder &builder) {
while(--unitNumber>=0) {
int32_t value;
UBool isFinal;
- if(equal[unitNumber]==NULL) {
+ if(equal[unitNumber]==nullptr) {
// Write the final value for the one string ending with this unit.
value=values[unitNumber];
isFinal=true;
@@ -558,7 +558,7 @@ StringTrieBuilder::SplitBranchNode::operator==(const Node &other) const {
if(!Node::operator==(other)) {
return false;
}
- const SplitBranchNode &o=(const SplitBranchNode &)other;
+ const SplitBranchNode &o=static_cast<const SplitBranchNode &>(other);
return unit==o.unit && lessThan==o.lessThan && greaterOrEqual==o.greaterOrEqual;
}
@@ -592,7 +592,7 @@ StringTrieBuilder::BranchHeadNode::operator==(const Node &other) const {
if(!ValueNode::operator==(other)) {
return false;
}
- const BranchHeadNode &o=(const BranchHeadNode &)other;
+ const BranchHeadNode &o=static_cast<const BranchHeadNode &>(other);
return length==o.length && next==o.next;
}
diff --git a/Build/source/libs/icu/icu-src/source/common/uarrsort.cpp b/Build/source/libs/icu/icu-src/source/common/uarrsort.cpp
index 17b6964ffe0..f9daa4b30ff 100644
--- a/Build/source/libs/icu/icu-src/source/common/uarrsort.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/uarrsort.cpp
@@ -256,10 +256,10 @@ U_CAPI void U_EXPORT2
uprv_sortArray(void *array, int32_t length, int32_t itemSize,
UComparator *cmp, const void *context,
UBool sortStable, UErrorCode *pErrorCode) {
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return;
}
- if((length>0 && array==NULL) || length<0 || itemSize<=0 || cmp==NULL) {
+ if((length>0 && array==nullptr) || length<0 || itemSize<=0 || cmp==nullptr) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return;
}
diff --git a/Build/source/libs/icu/icu-src/source/common/ubidi.cpp b/Build/source/libs/icu/icu-src/source/common/ubidi.cpp
index eb40a212e17..fcf82fa97a8 100644
--- a/Build/source/libs/icu/icu-src/source/common/ubidi.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ubidi.cpp
@@ -34,14 +34,14 @@
* rules of the BiDi algorithm, in this example to the second rule of the
* resolution of weak types.
*
- * For handling surrogate pairs, where two UChar's form one "abstract" (or UTF-32)
- * character according to UTF-16, the second UChar gets the directional property of
+ * For handling surrogate pairs, where two char16_t's form one "abstract" (or UTF-32)
+ * character according to UTF-16, the second char16_t gets the directional property of
* the entire character assigned, while the first one gets a BN, a boundary
* neutral, type, which is ignored by most of the algorithm according to
* rule (X9) and the implementation suggestions of the BiDi algorithm.
*
* Later, adjustWSLevels() will set the level for each BN to that of the
- * following character (UChar), which results in surrogate pairs getting the
+ * following character (char16_t), which results in surrogate pairs getting the
* same level on each of their surrogates.
*
* In a UTF-8 implementation, the same thing could be done: the last byte of
@@ -124,7 +124,7 @@ static const Flags flagO[2]={ DIRPROP_FLAG(LRO), DIRPROP_FLAG(RLO) };
/* UBiDi object management -------------------------------------------------- */
U_CAPI UBiDi * U_EXPORT2
-ubidi_open(void)
+ubidi_open()
{
UErrorCode errorCode=U_ZERO_ERROR;
return ubidi_openSized(0, 0, &errorCode);
@@ -135,21 +135,21 @@ ubidi_openSized(int32_t maxLength, int32_t maxRunCount, UErrorCode *pErrorCode)
UBiDi *pBiDi;
/* check the argument values */
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
- return NULL;
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
+ return nullptr;
} else if(maxLength<0 || maxRunCount<0) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
- return NULL; /* invalid arguments */
+ return nullptr; /* invalid arguments */
}
/* allocate memory for the object */
pBiDi=(UBiDi *)uprv_malloc(sizeof(UBiDi));
- if(pBiDi==NULL) {
+ if(pBiDi==nullptr) {
*pErrorCode=U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
- /* reset the object, all pointers NULL, all flags false, all sizes 0 */
+ /* reset the object, all pointers nullptr, all flags false, all sizes 0 */
uprv_memset(pBiDi, 0, sizeof(UBiDi));
/* allocate memory for arrays as requested */
@@ -178,18 +178,18 @@ ubidi_openSized(int32_t maxLength, int32_t maxRunCount, UErrorCode *pErrorCode)
return pBiDi;
} else {
ubidi_close(pBiDi);
- return NULL;
+ return nullptr;
}
}
/*
- * We are allowed to allocate memory if memory==NULL or
+ * We are allowed to allocate memory if memory==nullptr or
* mayAllocate==true for each array that we need.
* We also try to grow memory as needed if we
* allocate it.
*
* Assume sizeNeeded>0.
- * If *pMemory!=NULL, then assume *pSize>0.
+ * If *pMemory!=nullptr, then assume *pSize>0.
*
* ### this realloc() may unnecessarily copy the old data,
* which we know we don't need any more;
@@ -199,9 +199,9 @@ U_CFUNC UBool
ubidi_getMemory(BidiMemoryForAllocation *bidiMem, int32_t *pSize, UBool mayAllocate, int32_t sizeNeeded) {
void **pMemory = (void **)bidiMem;
/* check for existing memory */
- if(*pMemory==NULL) {
+ if(*pMemory==nullptr) {
/* we need to allocate memory */
- if(mayAllocate && (*pMemory=uprv_malloc(sizeNeeded))!=NULL) {
+ if(mayAllocate && (*pMemory=uprv_malloc(sizeNeeded))!=nullptr) {
*pSize=sizeNeeded;
return true;
} else {
@@ -222,7 +222,7 @@ ubidi_getMemory(BidiMemoryForAllocation *bidiMem, int32_t *pSize, UBool mayAlloc
* realloc, but it is needed when adding runs using getRunsMemory()
* in setParaRunsOnly()
*/
- if((memory=uprv_realloc(*pMemory, sizeNeeded))!=NULL) {
+ if((memory=uprv_realloc(*pMemory, sizeNeeded))!=nullptr) {
*pMemory=memory;
*pSize=sizeNeeded;
return true;
@@ -236,27 +236,27 @@ ubidi_getMemory(BidiMemoryForAllocation *bidiMem, int32_t *pSize, UBool mayAlloc
U_CAPI void U_EXPORT2
ubidi_close(UBiDi *pBiDi) {
- if(pBiDi!=NULL) {
- pBiDi->pParaBiDi=NULL; /* in case one tries to reuse this block */
- if(pBiDi->dirPropsMemory!=NULL) {
+ if(pBiDi!=nullptr) {
+ pBiDi->pParaBiDi=nullptr; /* in case one tries to reuse this block */
+ if(pBiDi->dirPropsMemory!=nullptr) {
uprv_free(pBiDi->dirPropsMemory);
}
- if(pBiDi->levelsMemory!=NULL) {
+ if(pBiDi->levelsMemory!=nullptr) {
uprv_free(pBiDi->levelsMemory);
}
- if(pBiDi->openingsMemory!=NULL) {
+ if(pBiDi->openingsMemory!=nullptr) {
uprv_free(pBiDi->openingsMemory);
}
- if(pBiDi->parasMemory!=NULL) {
+ if(pBiDi->parasMemory!=nullptr) {
uprv_free(pBiDi->parasMemory);
}
- if(pBiDi->runsMemory!=NULL) {
+ if(pBiDi->runsMemory!=nullptr) {
uprv_free(pBiDi->runsMemory);
}
- if(pBiDi->isolatesMemory!=NULL) {
+ if(pBiDi->isolatesMemory!=nullptr) {
uprv_free(pBiDi->isolatesMemory);
}
- if(pBiDi->insertPoints.points!=NULL) {
+ if(pBiDi->insertPoints.points!=nullptr) {
uprv_free(pBiDi->insertPoints.points);
}
@@ -268,7 +268,7 @@ ubidi_close(UBiDi *pBiDi) {
U_CAPI void U_EXPORT2
ubidi_setInverse(UBiDi *pBiDi, UBool isInverse) {
- if(pBiDi!=NULL) {
+ if(pBiDi!=nullptr) {
pBiDi->isInverse=isInverse;
pBiDi->reorderingMode = isInverse ? UBIDI_REORDER_INVERSE_NUMBERS_AS_L
: UBIDI_REORDER_DEFAULT;
@@ -277,7 +277,7 @@ ubidi_setInverse(UBiDi *pBiDi, UBool isInverse) {
U_CAPI UBool U_EXPORT2
ubidi_isInverse(UBiDi *pBiDi) {
- if(pBiDi!=NULL) {
+ if(pBiDi!=nullptr) {
return pBiDi->isInverse;
} else {
return false;
@@ -300,8 +300,8 @@ ubidi_isInverse(UBiDi *pBiDi) {
* fallbacks for unsupported combinations.
*/
U_CAPI void U_EXPORT2
-ubidi_setReorderingMode(UBiDi *pBiDi, UBiDiReorderingMode reorderingMode) {
- if ((pBiDi!=NULL) && (reorderingMode >= UBIDI_REORDER_DEFAULT)
+ubidi_setReorderingMode(UBiDi *pBiDi, UBiDiReorderingMode reorderingMode) UPRV_NO_SANITIZE_UNDEFINED {
+ if ((pBiDi!=nullptr) && (reorderingMode >= UBIDI_REORDER_DEFAULT)
&& (reorderingMode < UBIDI_REORDER_COUNT)) {
pBiDi->reorderingMode = reorderingMode;
pBiDi->isInverse = (UBool)(reorderingMode == UBIDI_REORDER_INVERSE_NUMBERS_AS_L);
@@ -310,7 +310,7 @@ ubidi_setReorderingMode(UBiDi *pBiDi, UBiDiReorderingMode reorderingMode) {
U_CAPI UBiDiReorderingMode U_EXPORT2
ubidi_getReorderingMode(UBiDi *pBiDi) {
- if (pBiDi!=NULL) {
+ if (pBiDi!=nullptr) {
return pBiDi->reorderingMode;
} else {
return UBIDI_REORDER_DEFAULT;
@@ -322,14 +322,14 @@ ubidi_setReorderingOptions(UBiDi *pBiDi, uint32_t reorderingOptions) {
if (reorderingOptions & UBIDI_OPTION_REMOVE_CONTROLS) {
reorderingOptions&=~UBIDI_OPTION_INSERT_MARKS;
}
- if (pBiDi!=NULL) {
+ if (pBiDi!=nullptr) {
pBiDi->reorderingOptions=reorderingOptions;
}
}
U_CAPI uint32_t U_EXPORT2
ubidi_getReorderingOptions(UBiDi *pBiDi) {
- if (pBiDi!=NULL) {
+ if (pBiDi!=nullptr) {
return pBiDi->reorderingOptions;
} else {
return 0;
@@ -337,14 +337,14 @@ ubidi_getReorderingOptions(UBiDi *pBiDi) {
}
U_CAPI UBiDiDirection U_EXPORT2
-ubidi_getBaseDirection(const UChar *text,
+ubidi_getBaseDirection(const char16_t *text,
int32_t length){
int32_t i;
UChar32 uchar;
UCharDirection dir;
- if( text==NULL || length<-1 ){
+ if( text==nullptr || length<-1 ){
return UBIDI_NEUTRAL;
}
@@ -373,7 +373,7 @@ int32_t length){
*/
static DirProp
firstL_R_AL(UBiDi *pBiDi) {
- const UChar *text=pBiDi->prologue;
+ const char16_t *text=pBiDi->prologue;
int32_t length=pBiDi->proLength;
int32_t i;
UChar32 uchar;
@@ -426,7 +426,7 @@ checkParaCount(UBiDi *pBiDi) {
*/
static UBool
getDirProps(UBiDi *pBiDi) {
- const UChar *text=pBiDi->text;
+ const char16_t *text=pBiDi->text;
DirProp *dirProps=pBiDi->dirPropsMemory; /* pBiDi->dirProps is const */
int32_t i=0, originalLength=pBiDi->originalLength;
@@ -744,7 +744,7 @@ bracketProcessPDI(BracketData *bd) {
/* newly found opening bracket: create an openings entry */
static UBool /* return true if success */
-bracketAddOpening(BracketData *bd, UChar match, int32_t position) {
+bracketAddOpening(BracketData *bd, char16_t match, int32_t position) {
IsoRun *pLastIsoRun=&bd->isoRuns[bd->isoRunLast];
Opening *pOpening;
if(pLastIsoRun->limit>=bd->openingsCount) { /* no available new entry */
@@ -881,7 +881,7 @@ bracketProcessChar(BracketData *bd, int32_t position) {
dirProps=bd->pBiDi->dirProps;
dirProp=dirProps[position];
if(dirProp==ON) {
- UChar c, match;
+ char16_t c, match;
int32_t idx;
/* First see if it is a matching closing bracket. Hopefully, this is
more efficient than checking if it is a closing bracket at all */
@@ -918,7 +918,7 @@ bracketProcessChar(BracketData *bd, int32_t position) {
bracket or it is a case of N0d */
/* Now see if it is an opening bracket */
if(c)
- match= static_cast<UChar>(u_getBidiPairedBracket(c)); /* get the matching char */
+ match= static_cast<char16_t>(u_getBidiPairedBracket(c)); /* get the matching char */
else
match=0;
if(match!=c && /* has a matching char */
@@ -1072,7 +1072,7 @@ static UBiDiDirection
resolveExplicitLevels(UBiDi *pBiDi, UErrorCode *pErrorCode) {
DirProp *dirProps=pBiDi->dirProps;
UBiDiLevel *levels=pBiDi->levels;
- const UChar *text=pBiDi->text;
+ const char16_t *text=pBiDi->text;
int32_t i=0, length=pBiDi->length;
Flags flags=pBiDi->flags; /* collect all directionalities in the text */
@@ -1797,7 +1797,7 @@ addPoint(UBiDi *pBiDi, int32_t pos, int32_t flag)
if (pInsertPoints->capacity == 0)
{
pInsertPoints->points=static_cast<Point *>(uprv_malloc(sizeof(Point)*FIRSTALLOC));
- if (pInsertPoints->points == NULL)
+ if (pInsertPoints->points == nullptr)
{
pInsertPoints->errorCode=U_MEMORY_ALLOCATION_ERROR;
return;
@@ -1809,7 +1809,7 @@ addPoint(UBiDi *pBiDi, int32_t pos, int32_t flag)
Point * savePoints=pInsertPoints->points;
pInsertPoints->points=static_cast<Point *>(uprv_realloc(pInsertPoints->points,
pInsertPoints->capacity*2*sizeof(Point)));
- if (pInsertPoints->points == NULL)
+ if (pInsertPoints->points == nullptr)
{
pInsertPoints->points=savePoints;
pInsertPoints->errorCode=U_MEMORY_ALLOCATION_ERROR;
@@ -2068,7 +2068,7 @@ processPropertySeq(UBiDi *pBiDi, LevState *pLevState, uint8_t _prop,
*/
static DirProp
lastL_R_AL(UBiDi *pBiDi) {
- const UChar *text=pBiDi->prologue;
+ const char16_t *text=pBiDi->prologue;
int32_t length=pBiDi->proLength;
int32_t i;
UChar32 uchar;
@@ -2096,7 +2096,7 @@ lastL_R_AL(UBiDi *pBiDi) {
*/
static DirProp
firstL_R_AL_EN_AN(UBiDi *pBiDi) {
- const UChar *text=pBiDi->epilogue;
+ const char16_t *text=pBiDi->epilogue;
int32_t length=pBiDi->epiLength;
int32_t i;
UChar32 uchar;
@@ -2326,13 +2326,13 @@ adjustWSLevels(UBiDi *pBiDi) {
U_CAPI void U_EXPORT2
ubidi_setContext(UBiDi *pBiDi,
- const UChar *prologue, int32_t proLength,
- const UChar *epilogue, int32_t epiLength,
+ const char16_t *prologue, int32_t proLength,
+ const char16_t *epilogue, int32_t epiLength,
UErrorCode *pErrorCode) {
/* check the argument values */
RETURN_VOID_IF_NULL_OR_FAILING_ERRCODE(pErrorCode);
- if(pBiDi==NULL || proLength<-1 || epiLength<-1 ||
- (prologue==NULL && proLength!=0) || (epilogue==NULL && epiLength!=0)) {
+ if(pBiDi==nullptr || proLength<-1 || epiLength<-1 ||
+ (prologue==nullptr && proLength!=0) || (epilogue==nullptr && epiLength!=0)) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return;
}
@@ -2362,11 +2362,11 @@ setParaSuccess(UBiDi *pBiDi) {
#define BIDI_ABS(x) ((x)>=0 ? (x) : (-(x)))
static void
-setParaRunsOnly(UBiDi *pBiDi, const UChar *text, int32_t length,
+setParaRunsOnly(UBiDi *pBiDi, const char16_t *text, int32_t length,
UBiDiLevel paraLevel, UErrorCode *pErrorCode) {
- int32_t *runsOnlyMemory = NULL;
+ int32_t *runsOnlyMemory = nullptr;
int32_t *visualMap;
- UChar *visualText;
+ char16_t *visualText;
int32_t saveLength, saveTrailingWSStart;
const UBiDiLevel *levels;
UBiDiLevel *saveLevels;
@@ -2381,17 +2381,17 @@ setParaRunsOnly(UBiDi *pBiDi, const UChar *text, int32_t length,
pBiDi->reorderingMode=UBIDI_REORDER_DEFAULT;
if(length==0) {
- ubidi_setPara(pBiDi, text, length, paraLevel, NULL, pErrorCode);
+ ubidi_setPara(pBiDi, text, length, paraLevel, nullptr, pErrorCode);
goto cleanup3;
}
/* obtain memory for mapping table and visual text */
- runsOnlyMemory=static_cast<int32_t *>(uprv_malloc(length*(sizeof(int32_t)+sizeof(UChar)+sizeof(UBiDiLevel))));
- if(runsOnlyMemory==NULL) {
+ runsOnlyMemory=static_cast<int32_t *>(uprv_malloc(length*(sizeof(int32_t)+sizeof(char16_t)+sizeof(UBiDiLevel))));
+ if(runsOnlyMemory==nullptr) {
*pErrorCode=U_MEMORY_ALLOCATION_ERROR;
goto cleanup3;
}
visualMap=runsOnlyMemory;
- visualText=(UChar *)&visualMap[length];
+ visualText=(char16_t *)&visualMap[length];
saveLevels=(UBiDiLevel *)&visualText[length];
saveOptions=pBiDi->reorderingOptions;
if(saveOptions & UBIDI_OPTION_INSERT_MARKS) {
@@ -2399,7 +2399,7 @@ setParaRunsOnly(UBiDi *pBiDi, const UChar *text, int32_t length,
pBiDi->reorderingOptions|=UBIDI_OPTION_REMOVE_CONTROLS;
}
paraLevel&=1; /* accept only 0 or 1 */
- ubidi_setPara(pBiDi, text, length, paraLevel, NULL, pErrorCode);
+ ubidi_setPara(pBiDi, text, length, paraLevel, nullptr, pErrorCode);
if(U_FAILURE(*pErrorCode)) {
goto cleanup3;
}
@@ -2437,7 +2437,7 @@ setParaRunsOnly(UBiDi *pBiDi, const UChar *text, int32_t length,
*/
saveMayAllocateText=pBiDi->mayAllocateText;
pBiDi->mayAllocateText=false;
- ubidi_setPara(pBiDi, visualText, visualLength, paraLevel, NULL, pErrorCode);
+ ubidi_setPara(pBiDi, visualText, visualLength, paraLevel, nullptr, pErrorCode);
pBiDi->mayAllocateText=saveMayAllocateText;
ubidi_getRuns(pBiDi, pErrorCode);
if(U_FAILURE(*pErrorCode)) {
@@ -2551,7 +2551,7 @@ setParaRunsOnly(UBiDi *pBiDi, const UChar *text, int32_t length,
/* ubidi_setPara ------------------------------------------------------------ */
U_CAPI void U_EXPORT2
-ubidi_setPara(UBiDi *pBiDi, const UChar *text, int32_t length,
+ubidi_setPara(UBiDi *pBiDi, const char16_t *text, int32_t length,
UBiDiLevel paraLevel, UBiDiLevel *embeddingLevels,
UErrorCode *pErrorCode) {
UBiDiDirection direction;
@@ -2559,7 +2559,7 @@ ubidi_setPara(UBiDi *pBiDi, const UChar *text, int32_t length,
/* check the argument values */
RETURN_VOID_IF_NULL_OR_FAILING_ERRCODE(pErrorCode);
- if(pBiDi==NULL || text==NULL || length<-1 ||
+ if(pBiDi==nullptr || text==nullptr || length<-1 ||
(paraLevel>UBIDI_MAX_EXPLICIT_LEVEL && paraLevel<UBIDI_DEFAULT_LTR)) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return;
@@ -2576,16 +2576,16 @@ ubidi_setPara(UBiDi *pBiDi, const UChar *text, int32_t length,
}
/* initialize the UBiDi structure */
- pBiDi->pParaBiDi=NULL; /* mark unfinished setPara */
+ pBiDi->pParaBiDi=nullptr; /* mark unfinished setPara */
pBiDi->text=text;
pBiDi->length=pBiDi->originalLength=pBiDi->resultLength=length;
pBiDi->paraLevel=paraLevel;
pBiDi->direction=(UBiDiDirection)(paraLevel&1);
pBiDi->paraCount=1;
- pBiDi->dirProps=NULL;
- pBiDi->levels=NULL;
- pBiDi->runs=NULL;
+ pBiDi->dirProps=nullptr;
+ pBiDi->levels=nullptr;
+ pBiDi->runs=nullptr;
pBiDi->insertPoints.size=0; /* clean up from last call */
pBiDi->insertPoints.confirmed=0; /* clean up from last call */
@@ -2640,7 +2640,7 @@ ubidi_setPara(UBiDi *pBiDi, const UChar *text, int32_t length,
pBiDi->trailingWSStart=length; /* the levels[] will reflect the WS run */
/* are explicit levels specified? */
- if(embeddingLevels==NULL) {
+ if(embeddingLevels==nullptr) {
/* no: determine explicit levels according to the (Xn) rules */\
if(getLevelsMemory(pBiDi, length)) {
pBiDi->levels=pBiDi->levelsMemory;
@@ -2737,7 +2737,7 @@ ubidi_setPara(UBiDi *pBiDi, const UChar *text, int32_t length,
* Examples for "insignificant" ones are empty embeddings
* LRE-PDF, LRE-RLE-PDF-PDF, etc.
*/
- if(embeddingLevels==NULL && pBiDi->paraCount<=1 &&
+ if(embeddingLevels==nullptr && pBiDi->paraCount<=1 &&
!(pBiDi->flags&DIRPROP_FLAG_MULTI_RUNS)) {
resolveImplicitLevels(pBiDi, 0, length,
GET_LR_FROM_LEVEL(GET_PARALEVEL(pBiDi, 0)),
@@ -2856,14 +2856,14 @@ ubidi_setPara(UBiDi *pBiDi, const UChar *text, int32_t length,
U_CAPI void U_EXPORT2
ubidi_orderParagraphsLTR(UBiDi *pBiDi, UBool orderParagraphsLTR) {
- if(pBiDi!=NULL) {
+ if(pBiDi!=nullptr) {
pBiDi->orderParagraphsLTR=orderParagraphsLTR;
}
}
U_CAPI UBool U_EXPORT2
ubidi_isOrderParagraphsLTR(UBiDi *pBiDi) {
- if(pBiDi!=NULL) {
+ if(pBiDi!=nullptr) {
return pBiDi->orderParagraphsLTR;
} else {
return false;
@@ -2879,12 +2879,12 @@ ubidi_getDirection(const UBiDi *pBiDi) {
}
}
-U_CAPI const UChar * U_EXPORT2
+U_CAPI const char16_t * U_EXPORT2
ubidi_getText(const UBiDi *pBiDi) {
if(IS_VALID_PARA_OR_LINE(pBiDi)) {
return pBiDi->text;
} else {
- return NULL;
+ return nullptr;
}
}
@@ -2952,13 +2952,13 @@ ubidi_getParagraphByIndex(const UBiDi *pBiDi, int32_t paraIndex,
} else {
paraStart=0;
}
- if(pParaStart!=NULL) {
+ if(pParaStart!=nullptr) {
*pParaStart=paraStart;
}
- if(pParaLimit!=NULL) {
+ if(pParaLimit!=nullptr) {
*pParaLimit=pBiDi->paras[paraIndex].limit;
}
- if(pParaLevel!=NULL) {
+ if(pParaLevel!=nullptr) {
*pParaLevel=GET_PARALEVEL(pBiDi, paraStart);
}
}
@@ -2987,7 +2987,7 @@ ubidi_setClassCallback(UBiDi *pBiDi, UBiDiClassCallback *newFn,
const void **oldContext, UErrorCode *pErrorCode)
{
RETURN_VOID_IF_NULL_OR_FAILING_ERRCODE(pErrorCode);
- if(pBiDi==NULL) {
+ if(pBiDi==nullptr) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return;
}
@@ -3006,7 +3006,7 @@ ubidi_setClassCallback(UBiDi *pBiDi, UBiDiClassCallback *newFn,
U_CAPI void U_EXPORT2
ubidi_getClassCallback(UBiDi *pBiDi, UBiDiClassCallback **fn, const void **context)
{
- if(pBiDi==NULL) {
+ if(pBiDi==nullptr) {
return;
}
if( fn )
@@ -3024,7 +3024,7 @@ ubidi_getCustomizedClass(UBiDi *pBiDi, UChar32 c)
{
UCharDirection dir;
- if( pBiDi->fnClassCallback == NULL ||
+ if( pBiDi->fnClassCallback == nullptr ||
(dir = (*pBiDi->fnClassCallback)(pBiDi->coClassCallback, c)) == U_BIDI_CLASS_DEFAULT )
{
dir = ubidi_getClass(c);
diff --git a/Build/source/libs/icu/icu-src/source/common/ubidi_props.cpp b/Build/source/libs/icu/icu-src/source/common/ubidi_props.cpp
index 3ba58f7af99..8f3f6a65c4b 100644
--- a/Build/source/libs/icu/icu-src/source/common/ubidi_props.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ubidi_props.cpp
@@ -69,7 +69,7 @@ ubidi_addPropertyStarts(const USetAdder *sa, UErrorCode *pErrorCode) {
}
/* add the start code point of each same-value range of the trie */
- utrie2_enum(&ubidi_props_singleton.trie, NULL, _enumPropertyStartsRange, sa);
+ utrie2_enum(&ubidi_props_singleton.trie, nullptr, _enumPropertyStartsRange, sa);
/* add the code points from the bidi mirroring table */
length=ubidi_props_singleton.indexes[UBIDI_IX_MIRROR_LENGTH];
diff --git a/Build/source/libs/icu/icu-src/source/common/ubidi_props_data.h b/Build/source/libs/icu/icu-src/source/common/ubidi_props_data.h
index 01fcc968cb8..f85dc096756 100644
--- a/Build/source/libs/icu/icu-src/source/common/ubidi_props_data.h
+++ b/Build/source/libs/icu/icu-src/source/common/ubidi_props_data.h
@@ -9,11 +9,11 @@
#ifdef INCLUDED_FROM_UBIDI_PROPS_C
-static const UVersionInfo ubidi_props_dataVersion={0xf,0,0,0};
+static const UVersionInfo ubidi_props_dataVersion={0xf,1,0,0};
-static const int32_t ubidi_props_indexes[UBIDI_IX_TOP]={0x10,0x6bc0,0x65d0,0x28,0x620,0x8cc,0x10ac0,0x10d24,0,0,0,0,0,0,0,0x6702b6};
+static const int32_t ubidi_props_indexes[UBIDI_IX_TOP]={0x10,0x6ba0,0x65b0,0x28,0x620,0x8cc,0x10ac0,0x10d24,0,0,0,0,0,0,0,0x6702b6};
-static const uint16_t ubidi_props_trieIndex[13024]={
+static const uint16_t ubidi_props_trieIndex[13008]={
0x387,0x38f,0x397,0x39f,0x3b7,0x3bf,0x3c7,0x3cf,0x3a7,0x3af,0x3a7,0x3af,0x3a7,0x3af,0x3a7,0x3af,
0x3a7,0x3af,0x3a7,0x3af,0x3d5,0x3dd,0x3e5,0x3ed,0x3f5,0x3fd,0x3f9,0x401,0x409,0x411,0x40c,0x414,
0x3a7,0x3af,0x3a7,0x3af,0x41c,0x424,0x3a7,0x3af,0x3a7,0x3af,0x3a7,0x3af,0x42a,0x432,0x43a,0x442,
@@ -38,8 +38,8 @@ static const uint16_t ubidi_props_trieIndex[13024]={
0x7e8,0x7f0,0x7f8,0x7ff,0x806,0x80e,0x812,0x7e0,0x67c,0x67c,0x67c,0x81a,0x820,0x67c,0x67c,0x826,
0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x82e,0x3a7,0x3a7,0x3a7,0x836,0x3a7,0x3a7,0x3a7,0x3f5,
0x83e,0x846,0x849,0x3a7,0x851,0x67c,0x67c,0x67f,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x858,0x85e,
-0x86e,0x866,0x3a7,0x3a7,0x876,0x61f,0x3a7,0x3ce,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x67c,0x835,
-0x3dc,0x3a7,0x87e,0x886,0x3a7,0x88e,0x896,0x3a7,0x3a7,0x3a7,0x3a7,0x89a,0x3a7,0x3a7,0x674,0x3cd,
+0x86e,0x866,0x3a7,0x3a7,0x876,0x61f,0x3a7,0x3ce,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x67c,0x87e,
+0x3dc,0x3a7,0x85e,0x882,0x3a7,0x88a,0x892,0x3a7,0x3a7,0x3a7,0x3a7,0x896,0x3a7,0x3a7,0x674,0x3cd,
0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
@@ -96,10 +96,10 @@ static const uint16_t ubidi_props_trieIndex[13024]={
0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
-0x3a7,0x3a7,0x3a7,0x3a7,0x87e,0x67c,0x595,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
-0x8a1,0x3a7,0x3a7,0x8a6,0x8ae,0x3a7,0x3a7,0x5cb,0x67c,0x673,0x3a7,0x3a7,0x8b6,0x3a7,0x3a7,0x3a7,
-0x8be,0x8c5,0x645,0x8cd,0x3a7,0x3a7,0x5a1,0x8d5,0x3a7,0x8dd,0x8e4,0x3a7,0x501,0x8e9,0x3a7,0x51a,
-0x3a7,0x8f1,0x8f9,0x51c,0x3a7,0x8fd,0x51b,0x905,0x3a7,0x3a7,0x3a7,0x90b,0x3a7,0x3a7,0x3a7,0x912,
+0x3a7,0x3a7,0x3a7,0x3a7,0x85e,0x67c,0x595,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
+0x89d,0x3a7,0x3a7,0x8a2,0x8aa,0x3a7,0x3a7,0x5cb,0x67c,0x673,0x3a7,0x3a7,0x8b2,0x3a7,0x3a7,0x3a7,
+0x8ba,0x8c1,0x645,0x8c9,0x3a7,0x3a7,0x5a1,0x8d1,0x3a7,0x8d9,0x8e0,0x3a7,0x501,0x8e5,0x3a7,0x51a,
+0x3a7,0x8ed,0x8f5,0x51c,0x3a7,0x8f9,0x51b,0x901,0x3a7,0x3a7,0x3a7,0x907,0x3a7,0x3a7,0x3a7,0x90e,
0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
@@ -139,9 +139,9 @@ static const uint16_t ubidi_props_trieIndex[13024]={
0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
-0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x926,0x91a,0x91e,0x4a6,0x4a6,0x4a6,0x4a6,0x4a6,
-0x4a6,0x4a6,0x4a6,0x4a6,0x4a6,0x4a6,0x4a6,0x4a6,0x4a6,0x92e,0x936,0x4a6,0x4a6,0x4a6,0x93b,0x93f,
-0x947,0x94f,0x953,0x95b,0x4a6,0x4a6,0x4a6,0x95f,0x967,0x397,0x96f,0x977,0x3a7,0x3a7,0x3a7,0x97f,
+0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x922,0x916,0x91a,0x4a6,0x4a6,0x4a6,0x4a6,0x4a6,
+0x4a6,0x4a6,0x4a6,0x4a6,0x4a6,0x4a6,0x4a6,0x4a6,0x4a6,0x92a,0x932,0x4a6,0x4a6,0x4a6,0x937,0x93b,
+0x943,0x94b,0x94f,0x957,0x4a6,0x4a6,0x4a6,0x95b,0x963,0x397,0x96b,0x973,0x3a7,0x3a7,0x3a7,0x97b,
0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
0xe9c,0xe9c,0xedc,0xf1c,0xe9c,0xe9c,0xe9c,0xe9c,0xe9c,0xe9c,0xf54,0xf94,0xfd4,0xfe4,0x1024,0x1030,
@@ -178,68 +178,68 @@ static const uint16_t ubidi_props_trieIndex[13024]={
0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd89,
0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,
0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0x1a0,0xd89,
-0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x987,0x3a7,0x67c,0x67c,0x98f,0x61f,0x3a7,0x514,
-0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x997,0x3a7,0x3a7,0x3a7,0x99e,0x3a7,0x3a7,0x3a7,0x3a7,
+0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x983,0x3a7,0x67c,0x67c,0x98b,0x61f,0x3a7,0x514,
+0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x993,0x3a7,0x3a7,0x3a7,0x99a,0x3a7,0x3a7,0x3a7,0x3a7,
0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
-0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x9a6,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,
-0x9ae,0x9b2,0x43c,0x43c,0x43c,0x43c,0x9c2,0x9ba,0x43c,0x9ca,0x43c,0x43c,0x9d2,0x9d8,0x43c,0x43c,
-0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x9e8,0x9e0,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,
-0x43c,0x43c,0x43c,0x9f0,0x43c,0x9f8,0x4a6,0xa00,0x43c,0xa08,0xa0f,0xa15,0xa1d,0xa21,0xa29,0x43c,
-0x51b,0xa31,0xa38,0xa3f,0x41e,0xa47,0x569,0x3a7,0x501,0xa4e,0x3a7,0xa54,0x41e,0xa59,0xa61,0x3a7,
-0x3a7,0xa66,0x51b,0x3a7,0x3a7,0x3a7,0x836,0xa6e,0x41e,0x5a3,0x57e,0xa75,0x3a7,0x3a7,0x3a7,0x3a7,
-0x3a7,0xa31,0xa7d,0x3a7,0x3a7,0xa85,0xa8d,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0xa91,0xa99,0x3a7,
-0x3a7,0xaa1,0x57e,0xaa9,0x3a7,0xaaf,0x3a7,0x3a7,0x60f,0xab7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
-0xabc,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0xac3,0xacb,0x3a7,0x3a7,0x3a7,0xace,0x57e,0xad6,
-0xada,0xae2,0x3a7,0xae9,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
-0xaf0,0x3a7,0x3a7,0xafe,0xaf8,0x3a7,0x3a7,0x3a7,0xb06,0xb0e,0x3a7,0xb12,0x3a7,0x3a7,0x3a7,0x3a7,
-0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x5a5,0x41e,0x99e,0xb1a,0x3a7,0x3a7,0x3a7,0xb27,0xb22,0x3a7,
+0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x9a2,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,
+0x9aa,0x9ae,0x43c,0x43c,0x43c,0x43c,0x9be,0x9b6,0x43c,0x9c6,0x43c,0x43c,0x9ce,0x9d4,0x43c,0x43c,
+0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x9e4,0x9dc,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,
+0x43c,0x43c,0x43c,0x9ec,0x43c,0x9f4,0x4a6,0x9fc,0x43c,0xa04,0xa0b,0xa11,0xa19,0xa1d,0xa25,0x43c,
+0x51b,0xa2d,0xa34,0xa3b,0x41e,0xa43,0x569,0x3a7,0x501,0xa4a,0x3a7,0xa50,0x41e,0xa55,0xa5d,0x3a7,
+0x3a7,0xa62,0x51b,0x3a7,0x3a7,0x3a7,0x836,0xa6a,0x41e,0x5a3,0x57e,0xa71,0x3a7,0x3a7,0x3a7,0x3a7,
+0x3a7,0xa2d,0xa79,0x3a7,0x3a7,0xa81,0xa89,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0xa8d,0xa95,0x3a7,
+0x3a7,0xa9d,0x57e,0xaa5,0x3a7,0xaab,0x3a7,0x3a7,0x60f,0xab3,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
+0xab8,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0xabf,0xac7,0x3a7,0x3a7,0x3a7,0xaca,0x57e,0xad2,
+0xad6,0xade,0x3a7,0xae5,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
+0xaec,0x3a7,0x3a7,0xafa,0xaf4,0x3a7,0x3a7,0x3a7,0xb02,0xb0a,0x3a7,0xb0e,0x3a7,0x3a7,0x3a7,0x3a7,
+0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x5a5,0x41e,0x99a,0xb16,0x3a7,0x3a7,0x3a7,0xb23,0xb1e,0x3a7,
0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
-0xb2f,0xb37,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
-0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0xb3d,
-0x3a7,0xb43,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
+0xb2b,0xb33,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
+0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0xb39,
+0x3a7,0xb3f,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
-0x3a7,0x3a7,0xa55,0x3a7,0xb49,0x3a7,0x3a7,0xb51,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
+0x3a7,0x3a7,0xa51,0x3a7,0xb45,0x3a7,0x3a7,0xb4d,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
-0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x535,0xb59,0x3a7,0x3a7,
+0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x535,0xb55,0x3a7,0x3a7,
0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
-0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3f5,0xb61,0x500,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
-0x3a7,0x3a7,0x3a7,0x3a7,0xb69,0xb71,0xb77,0x3a7,0xb7d,0x67c,0x67c,0xb85,0x3a7,0x3a7,0x3a7,0x3a7,
-0x3a7,0x67c,0x67c,0xb8d,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
-0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0xb93,
-0x3a7,0xb9a,0x3a7,0xb96,0x3a7,0xb9d,0x3a7,0xba5,0xba9,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
-0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3f5,0xbb1,0x3f5,0xbb8,0xbbf,0xbc7,0x3a7,
+0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3f5,0xb5d,0x500,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
+0x3a7,0x3a7,0x3a7,0x3a7,0xb65,0xb6d,0xb73,0x3a7,0xb79,0x67c,0x67c,0xb81,0x3a7,0x3a7,0x3a7,0x3a7,
+0x3a7,0x67c,0x67c,0xb89,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
+0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0xb8f,
+0x3a7,0xb96,0x3a7,0xb92,0x3a7,0xb99,0x3a7,0xba1,0xba5,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
+0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3f5,0xbad,0x3f5,0xbb4,0xbbb,0xbc3,0x3a7,
0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
-0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0xbcf,0xbd7,0x3a7,0x3a7,0xa55,0x3a7,0x3a7,
-0x3a7,0x3a7,0xb43,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0xa81,0x3a7,
-0xbdc,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
-0xbe4,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
-0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0xbec,
-0x43c,0xbf4,0xbf4,0xbfb,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,
-0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x91e,0x4a6,0x4a6,0x43c,
-0x43c,0x4a6,0x4a6,0xc03,0x43c,0x43c,0x43c,0x43c,0x43c,0x4a6,0x4a6,0x4a6,0x4a6,0x4a6,0x4a6,0x4a6,
-0xc0b,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x67c,0xc13,0x67c,0x67c,0x67f,0xc18,0xc1c,
-0x858,0xc24,0x3c9,0x3a7,0xc2a,0x3a7,0xc2f,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x783,0x3a7,0x3a7,0x3a7,
+0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0xbcb,0xbd3,0x3a7,0x3a7,0xa51,0x3a7,0x3a7,
+0x3a7,0x3a7,0xb3f,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0xa7d,0x3a7,
+0xbd8,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
+0xbe0,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
+0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0xbe8,
+0x43c,0xbf0,0xbf0,0xbf7,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,
+0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x91a,0x4a6,0x4a6,0x43c,
+0x43c,0x4a6,0x4a6,0xbff,0x43c,0x43c,0x43c,0x43c,0x43c,0x4a6,0x4a6,0x4a6,0x4a6,0x4a6,0x4a6,0x4a6,
+0xc07,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x43c,0x67c,0xc0f,0x67c,0x67c,0x67f,0xc14,0xc18,
+0x858,0xc20,0x3c9,0x3a7,0xc26,0x3a7,0xc2b,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x783,0x3a7,0x3a7,0x3a7,
0x3a7,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,
-0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0xc37,
-0x98f,0x67c,0x67c,0x67c,0xc3e,0x67c,0x67c,0xc45,0xc4d,0xc13,0x67c,0xc55,0x67c,0xc5d,0xc62,0x3a7,
-0x3a7,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67f,0xc6a,0xc73,0xc77,0xc7f,
-0xc6f,0x67c,0x67c,0x67c,0x67c,0xc87,0x67c,0x792,0xc8f,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
+0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0xc33,
+0x98b,0x67c,0x67c,0x67c,0xc3a,0x67c,0x67c,0xc41,0xc49,0xc0f,0x67c,0xc51,0x67c,0xc59,0xc5e,0x3a7,
+0x3a7,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67c,0x67f,0xc66,0xc6f,0xc73,0xc7b,
+0xc6b,0x67c,0x67c,0x67c,0x67c,0xc83,0x67c,0x792,0xc8b,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
-0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0xc96,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
+0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0xc92,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,
-0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0xc96,0xca6,0xc9e,0xc9e,0xc9e,0xca7,0xca7,0xca7,
-0xca7,0x3f5,0x3f5,0x3f5,0x3f5,0x3f5,0x3f5,0x3f5,0xcaf,0xca7,0xca7,0xca7,0xca7,0xca7,0xca7,0xca7,
-0xca7,0xca7,0xca7,0xca7,0xca7,0xca7,0xca7,0xca7,0xca7,0xca7,0xca7,0xca7,0xca7,0xca7,0xca7,0xca7,
-0xca7,0xca7,0xca7,0xca7,0xca7,0xca7,0xca7,0xca7,0xca7,0xca7,0xca7,0xca7,0xca7,0xca7,0xca7,0xca7,
-0xca7,0xca7,0xca7,0xca7,0xca7,0xca7,0xca7,0xca7,0xca7,0xca7,0xca7,0xca7,0xca7,0xca7,0xca7,0xca7,
-0xca7,0xca7,0xca7,0xca7,0xca7,0xca7,0xca7,0xca7,0xca7,0x386,0x386,0x386,0x12,0x12,0x12,0x12,
+0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0x3a7,0xc92,0xca2,0xc9a,0xc9a,0xc9a,0xca3,0xca3,0xca3,
+0xca3,0x3f5,0x3f5,0x3f5,0x3f5,0x3f5,0x3f5,0x3f5,0xcab,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,
+0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,
+0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,
+0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,
+0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0xca3,0x386,0x386,0x386,0x12,0x12,0x12,0x12,
0x12,0x12,0x12,0x12,0x12,8,7,8,9,7,0x12,0x12,0x12,0x12,0x12,0x12,
0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,7,7,7,8,9,0xa,0xa,4,
4,4,0xa,0xa,0x310a,0xf20a,0xa,3,6,3,6,6,2,2,2,2,
@@ -551,15 +551,14 @@ static const uint16_t ubidi_props_trieIndex[13024]={
0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
-0xa,0xa,0xa,0xa,0,0,0,0,0xa,0,0,0,0,0,0,0,
+0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,
0,0,0xb1,0xb1,0xb1,0xb1,0,0,0xa,0,0,0,0,0,0xa,0xa,
0,0,0,0,0,0xa,0xa,0xa,9,0xa,0xa,0xa,0xa,0,0,0,
0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0x310a,0xf20a,0xa,0xa,0x310a,0xf20a,0x310a,0xf20a,
0x310a,0xf20a,0x310a,0xf20a,0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0xb1,0xb1,0xa,0xa,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
-0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0,0,0,0,0,0,0,
+0,0xb1,0xb1,0xa,0xa,0,0,0,0xa,0xa,0xa,0xa,0,0,0,0,
+0,0,0,0,0,0,0,0xa,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0xa,0xa,0xa,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
@@ -925,7 +924,7 @@ static const uint8_t ubidi_props_jgArray2[612]={
};
static const UBiDiProps ubidi_props_singleton={
- NULL,
+ nullptr,
ubidi_props_indexes,
ubidi_props_mirrors,
ubidi_props_jgArray,
@@ -933,16 +932,16 @@ static const UBiDiProps ubidi_props_singleton={
{
ubidi_props_trieIndex,
ubidi_props_trieIndex+3612,
- NULL,
+ nullptr,
3612,
- 9412,
+ 9396,
0x1a0,
0xe9c,
0x0,
0x0,
0x110000,
- 0x32dc,
- NULL, 0, false, false, 0, NULL
+ 0x32cc,
+ nullptr, 0, false, false, 0, nullptr
},
{ 2,2,0,0 }
};
diff --git a/Build/source/libs/icu/icu-src/source/common/ubidiln.cpp b/Build/source/libs/icu/icu-src/source/common/ubidiln.cpp
index 430ece39d28..63c4f9190a9 100644
--- a/Build/source/libs/icu/icu-src/source/common/ubidiln.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ubidiln.cpp
@@ -37,7 +37,7 @@
* This means that there is a UBiDi 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.
+ * Only if the length of the text is zero, then levels==dirProps==nullptr.
*
* The overall directionality of the paragraph
* or line is used to bypass the reordering steps if possible.
@@ -134,25 +134,25 @@ ubidi_setLine(const UBiDi *pParaBiDi,
RETURN_VOID_IF_NOT_VALID_PARA(pParaBiDi, *pErrorCode);
RETURN_VOID_IF_BAD_RANGE(start, 0, limit, *pErrorCode);
RETURN_VOID_IF_BAD_RANGE(limit, 0, pParaBiDi->length+1, *pErrorCode);
- if(pLineBiDi==NULL) {
+ if(pLineBiDi==nullptr) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return;
}
- if(ubidi_getParagraph(pParaBiDi, start, NULL, NULL, NULL, pErrorCode) !=
- ubidi_getParagraph(pParaBiDi, limit-1, NULL, NULL, NULL, pErrorCode)) {
+ if(ubidi_getParagraph(pParaBiDi, start, nullptr, nullptr, nullptr, pErrorCode) !=
+ ubidi_getParagraph(pParaBiDi, limit-1, nullptr, nullptr, nullptr, pErrorCode)) {
/* the line crosses a paragraph boundary */
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return;
}
/* set the values in pLineBiDi from its pParaBiDi parent */
- pLineBiDi->pParaBiDi=NULL; /* mark unfinished setLine */
+ pLineBiDi->pParaBiDi=nullptr; /* mark unfinished setLine */
pLineBiDi->text=pParaBiDi->text+start;
length=pLineBiDi->length=limit-start;
pLineBiDi->resultLength=pLineBiDi->originalLength=length;
pLineBiDi->paraLevel=GET_PARALEVEL(pParaBiDi, start);
pLineBiDi->paraCount=pParaBiDi->paraCount;
- pLineBiDi->runs=NULL;
+ pLineBiDi->runs=nullptr;
pLineBiDi->flags=0;
pLineBiDi->reorderingMode=pParaBiDi->reorderingMode;
pLineBiDi->reorderingOptions=pParaBiDi->reorderingOptions;
@@ -263,11 +263,11 @@ U_CAPI const UBiDiLevel * U_EXPORT2
ubidi_getLevels(UBiDi *pBiDi, UErrorCode *pErrorCode) {
int32_t start, length;
- RETURN_IF_NULL_OR_FAILING_ERRCODE(pErrorCode, NULL);
- RETURN_IF_NOT_VALID_PARA_OR_LINE(pBiDi, *pErrorCode, NULL);
+ RETURN_IF_NULL_OR_FAILING_ERRCODE(pErrorCode, nullptr);
+ RETURN_IF_NOT_VALID_PARA_OR_LINE(pBiDi, *pErrorCode, nullptr);
if((length=pBiDi->length)<=0) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
if((start=pBiDi->trailingWSStart)==length) {
/* the current levels array reflects the WS run */
@@ -297,7 +297,7 @@ ubidi_getLevels(UBiDi *pBiDi, UErrorCode *pErrorCode) {
} else {
/* out of memory */
*pErrorCode=U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
}
@@ -373,10 +373,10 @@ ubidi_getVisualRun(UBiDi *pBiDi, int32_t runIndex,
RETURN_IF_BAD_RANGE(runIndex, 0, pBiDi->runCount, errorCode, UBIDI_LTR);
start=pBiDi->runs[runIndex].logicalStart;
- if(pLogicalStart!=NULL) {
+ if(pLogicalStart!=nullptr) {
*pLogicalStart=GET_INDEX(start);
}
- if(pLength!=NULL) {
+ if(pLength!=nullptr) {
if(runIndex>0) {
*pLength=pBiDi->runs[runIndex].visualLimit-
pBiDi->runs[runIndex-1].visualLimit;
@@ -694,7 +694,7 @@ ubidi_getRuns(UBiDi *pBiDi, UErrorCode*) {
/* handle remove BiDi control characters */
if(pBiDi->controlCount>0) {
int32_t runIndex;
- const UChar *start=pBiDi->text, *limit=start+pBiDi->length, *pu;
+ const char16_t *start=pBiDi->text, *limit=start+pBiDi->length, *pu;
for(pu=start; pu<limit; pu++) {
if(IS_BIDI_CONTROL_CHAR(*pu)) {
runIndex=getRunFromLogicalIndex(pBiDi, (int32_t)(pu-start));
@@ -713,7 +713,7 @@ prepareReorder(const UBiDiLevel *levels, int32_t length,
int32_t start;
UBiDiLevel level, minLevel, maxLevel;
- if(levels==NULL || length<=0) {
+ if(levels==nullptr || length<=0) {
return false;
}
@@ -751,7 +751,7 @@ ubidi_reorderLogical(const UBiDiLevel *levels, int32_t length, int32_t *indexMap
int32_t start, limit, sumOfSosEos;
UBiDiLevel minLevel = 0, maxLevel = 0;
- if(indexMap==NULL || !prepareReorder(levels, length, indexMap, &minLevel, &maxLevel)) {
+ if(indexMap==nullptr || !prepareReorder(levels, length, indexMap, &minLevel, &maxLevel)) {
return;
}
@@ -814,7 +814,7 @@ ubidi_reorderVisual(const UBiDiLevel *levels, int32_t length, int32_t *indexMap)
int32_t start, end, limit, temp;
UBiDiLevel minLevel = 0, maxLevel = 0;
- if(indexMap==NULL || !prepareReorder(levels, length, indexMap, &minLevel, &maxLevel)) {
+ if(indexMap==nullptr || !prepareReorder(levels, length, indexMap, &minLevel, &maxLevel)) {
return;
}
@@ -941,7 +941,7 @@ ubidi_getVisualIndex(UBiDi *pBiDi, int32_t logicalIndex, UErrorCode *pErrorCode)
Run *runs=pBiDi->runs;
int32_t i, j, start, limit, length, insertRemove;
int32_t visualStart=0, controlFound=0;
- UChar uchar=pBiDi->text[logicalIndex];
+ char16_t uchar=pBiDi->text[logicalIndex];
/* is the logical index pointing to a control ? */
if(IS_BIDI_CONTROL_CHAR(uchar)) {
return UBIDI_MAP_NOWHERE;
@@ -1036,7 +1036,7 @@ ubidi_getLogicalIndex(UBiDi *pBiDi, int32_t visualIndex, UErrorCode *pErrorCode)
/* handle removed BiDi control characters */
int32_t controlFound=0, insertRemove, length;
int32_t logicalStart, logicalEnd, visualStart=0, j, k;
- UChar uchar;
+ char16_t uchar;
UBool evenRun;
/* add number of controls until visual index */
for(i=0; ; i++, visualStart+=length) {
@@ -1113,7 +1113,7 @@ ubidi_getLogicalMap(UBiDi *pBiDi, int32_t *indexMap, UErrorCode *pErrorCode) {
ubidi_countRuns(pBiDi, pErrorCode);
if(U_FAILURE(*pErrorCode)) {
/* no op */
- } else if(indexMap==NULL) {
+ } else if(indexMap==nullptr) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
} else {
/* fill a logical-to-visual index map using the runs[] */
@@ -1171,7 +1171,7 @@ ubidi_getLogicalMap(UBiDi *pBiDi, int32_t *indexMap, UErrorCode *pErrorCode) {
int32_t controlFound=0, runCount=pBiDi->runCount;
int32_t length, insertRemove;
UBool evenRun;
- UChar uchar;
+ char16_t uchar;
visualStart=0;
/* subtract number of controls found until each index */
for(i=0; i<runCount; i++, visualStart+=length) {
@@ -1210,7 +1210,7 @@ ubidi_getLogicalMap(UBiDi *pBiDi, int32_t *indexMap, UErrorCode *pErrorCode) {
U_CAPI void U_EXPORT2
ubidi_getVisualMap(UBiDi *pBiDi, int32_t *indexMap, UErrorCode *pErrorCode) {
RETURN_VOID_IF_NULL_OR_FAILING_ERRCODE(pErrorCode);
- if(indexMap==NULL) {
+ if(indexMap==nullptr) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return;
}
@@ -1277,7 +1277,7 @@ ubidi_getVisualMap(UBiDi *pBiDi, int32_t *indexMap, UErrorCode *pErrorCode) {
else if(pBiDi->controlCount>0) {
int32_t runCount=pBiDi->runCount, logicalEnd;
int32_t insertRemove, length, i, j, k, m;
- UChar uchar;
+ char16_t uchar;
UBool evenRun;
runs=pBiDi->runs;
visualStart=0;
@@ -1317,7 +1317,7 @@ ubidi_getVisualMap(UBiDi *pBiDi, int32_t *indexMap, UErrorCode *pErrorCode) {
U_CAPI void U_EXPORT2
ubidi_invertMap(const int32_t *srcMap, int32_t *destMap, int32_t length) {
- if(srcMap!=NULL && destMap!=NULL && length>0) {
+ if(srcMap!=nullptr && destMap!=nullptr && length>0) {
const int32_t *pi;
int32_t destLength=-1, count=0;
/* find highest value and count positive indexes in srcMap */
diff --git a/Build/source/libs/icu/icu-src/source/common/ubiditransform.cpp b/Build/source/libs/icu/icu-src/source/common/ubiditransform.cpp
index 24fffd9c460..01f5901a2c2 100644
--- a/Build/source/libs/icu/icu-src/source/common/ubiditransform.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ubiditransform.cpp
@@ -78,8 +78,8 @@ typedef struct {
struct UBiDiTransform {
UBiDi *pBidi; /* pointer to a UBiDi object */
const ReorderingScheme *pActiveScheme; /* effective reordering scheme */
- UChar *src; /* input text */
- UChar *dest; /* output text */
+ char16_t *src; /* input text */
+ char16_t *dest; /* output text */
uint32_t srcLength; /* input text length - not really needed as we are zero-terminated and can u_strlen */
uint32_t srcSize; /* input text capacity excluding the trailing zero */
uint32_t destSize; /* output text capacity */
@@ -92,10 +92,10 @@ struct UBiDiTransform {
U_CAPI UBiDiTransform* U_EXPORT2
ubiditransform_open(UErrorCode *pErrorCode)
{
- UBiDiTransform *pBiDiTransform = NULL;
+ UBiDiTransform *pBiDiTransform = nullptr;
if (U_SUCCESS(*pErrorCode)) {
pBiDiTransform = (UBiDiTransform*) uprv_calloc(1, sizeof(UBiDiTransform));
- if (pBiDiTransform == NULL) {
+ if (pBiDiTransform == nullptr) {
*pErrorCode = U_MEMORY_ALLOCATION_ERROR;
}
}
@@ -105,11 +105,11 @@ ubiditransform_open(UErrorCode *pErrorCode)
U_CAPI void U_EXPORT2
ubiditransform_close(UBiDiTransform *pBiDiTransform)
{
- if (pBiDiTransform != NULL) {
- if (pBiDiTransform->pBidi != NULL) {
+ if (pBiDiTransform != nullptr) {
+ if (pBiDiTransform->pBidi != nullptr) {
ubidi_close(pBiDiTransform->pBidi);
}
- if (pBiDiTransform->src != NULL) {
+ if (pBiDiTransform->src != nullptr) {
uprv_free(pBiDiTransform->src);
}
uprv_free(pBiDiTransform);
@@ -129,7 +129,7 @@ static UBool
action_resolve(UBiDiTransform *pTransform, UErrorCode *pErrorCode)
{
ubidi_setPara(pTransform->pBidi, pTransform->src, pTransform->srcLength,
- pTransform->pActiveScheme->baseLevel, NULL, pErrorCode);
+ pTransform->pActiveScheme->baseLevel, nullptr, pErrorCode);
return false;
}
@@ -215,12 +215,12 @@ action_reverse(UBiDiTransform *pTransform, UErrorCode *pErrorCode)
*
* @param pTransform A pointer to the <code>UBiDiTransform</code> structure.
* @param newSrc A pointer whose value is to be used as input text.
- * @param newLength A length of the new text in <code>UChar</code>s.
- * @param newSize A new source capacity in <code>UChar</code>s.
+ * @param newLength A length of the new text in <code>char16_t</code>s.
+ * @param newSize A new source capacity in <code>char16_t</code>s.
* @param pErrorCode Pointer to the error code value.
*/
static void
-updateSrc(UBiDiTransform *pTransform, const UChar *newSrc, uint32_t newLength,
+updateSrc(UBiDiTransform *pTransform, const char16_t *newSrc, uint32_t newLength,
uint32_t newSize, UErrorCode *pErrorCode)
{
if (newSize < newLength) {
@@ -229,12 +229,12 @@ updateSrc(UBiDiTransform *pTransform, const UChar *newSrc, uint32_t newLength,
}
if (newSize > pTransform->srcSize) {
newSize += 50; // allocate slightly more than needed right now
- if (pTransform->src != NULL) {
+ if (pTransform->src != nullptr) {
uprv_free(pTransform->src);
- pTransform->src = NULL;
+ pTransform->src = nullptr;
}
- pTransform->src = (UChar *)uprv_malloc(newSize * sizeof(UChar));
- if (pTransform->src == NULL) {
+ pTransform->src = (char16_t *)uprv_malloc(newSize * sizeof(char16_t));
+ if (pTransform->src == nullptr) {
*pErrorCode = U_MEMORY_ALLOCATION_ERROR;
//pTransform->srcLength = pTransform->srcSize = 0;
return;
@@ -331,52 +331,52 @@ static const ReorderingScheme Schemes[] =
{
/* 0: Logical LTR => Visual LTR */
{LTR, LOGICAL, LTR, VISUAL, SHAPE_LOGICAL, SHAPE_LOGICAL, LTR,
- {action_shapeArabic, action_resolve, action_reorder, NULL}},
+ {action_shapeArabic, action_resolve, action_reorder, nullptr}},
/* 1: Logical RTL => Visual LTR */
{RTL, LOGICAL, LTR, VISUAL, SHAPE_LOGICAL, SHAPE_VISUAL, RTL,
- {action_resolve, action_reorder, action_shapeArabic, NULL}},
+ {action_resolve, action_reorder, action_shapeArabic, nullptr}},
/* 2: Logical LTR => Visual RTL */
{LTR, LOGICAL, RTL, VISUAL, SHAPE_LOGICAL, SHAPE_LOGICAL, LTR,
- {action_shapeArabic, action_resolve, action_reorder, action_reverse, NULL}},
+ {action_shapeArabic, action_resolve, action_reorder, action_reverse, nullptr}},
/* 3: Logical RTL => Visual RTL */
{RTL, LOGICAL, RTL, VISUAL, SHAPE_LOGICAL, SHAPE_VISUAL, RTL,
- {action_resolve, action_reorder, action_shapeArabic, action_reverse, NULL}},
+ {action_resolve, action_reorder, action_shapeArabic, action_reverse, nullptr}},
/* 4: Visual LTR => Logical RTL */
{LTR, VISUAL, RTL, LOGICAL, SHAPE_LOGICAL, SHAPE_VISUAL, RTL,
- {action_shapeArabic, action_setInverse, action_resolve, action_reorder, NULL}},
+ {action_shapeArabic, action_setInverse, action_resolve, action_reorder, nullptr}},
/* 5: Visual RTL => Logical RTL */
{RTL, VISUAL, RTL, LOGICAL, SHAPE_LOGICAL, SHAPE_VISUAL, RTL,
- {action_reverse, action_shapeArabic, action_setInverse, action_resolve, action_reorder, NULL}},
+ {action_reverse, action_shapeArabic, action_setInverse, action_resolve, action_reorder, nullptr}},
/* 6: Visual LTR => Logical LTR */
{LTR, VISUAL, LTR, LOGICAL, SHAPE_LOGICAL, SHAPE_LOGICAL, LTR,
- {action_setInverse, action_resolve, action_reorder, action_shapeArabic, NULL}},
+ {action_setInverse, action_resolve, action_reorder, action_shapeArabic, nullptr}},
/* 7: Visual RTL => Logical LTR */
{RTL, VISUAL, LTR, LOGICAL, SHAPE_LOGICAL, SHAPE_LOGICAL, LTR,
- {action_reverse, action_setInverse, action_resolve, action_reorder, action_shapeArabic, NULL}},
+ {action_reverse, action_setInverse, action_resolve, action_reorder, action_shapeArabic, nullptr}},
/* 8: Logical LTR => Logical RTL */
{LTR, LOGICAL, RTL, LOGICAL, SHAPE_LOGICAL, SHAPE_LOGICAL, LTR,
- {action_shapeArabic, action_resolve, action_mirror, action_setRunsOnly, action_resolve, action_reorder, NULL}},
+ {action_shapeArabic, action_resolve, action_mirror, action_setRunsOnly, action_resolve, action_reorder, nullptr}},
/* 9: Logical RTL => Logical LTR */
{RTL, LOGICAL, LTR, LOGICAL, SHAPE_LOGICAL, SHAPE_LOGICAL, RTL,
- {action_resolve, action_mirror, action_setRunsOnly, action_resolve, action_reorder, action_shapeArabic, NULL}},
+ {action_resolve, action_mirror, action_setRunsOnly, action_resolve, action_reorder, action_shapeArabic, nullptr}},
/* 10: Visual LTR => Visual RTL */
{LTR, VISUAL, RTL, VISUAL, SHAPE_LOGICAL, SHAPE_VISUAL, LTR,
- {action_shapeArabic, action_setInverse, action_resolve, action_mirror, action_reverse, NULL}},
+ {action_shapeArabic, action_setInverse, action_resolve, action_mirror, action_reverse, nullptr}},
/* 11: Visual RTL => Visual LTR */
{RTL, VISUAL, LTR, VISUAL, SHAPE_LOGICAL, SHAPE_VISUAL, LTR,
- {action_reverse, action_shapeArabic, action_setInverse, action_resolve, action_mirror, NULL}},
+ {action_reverse, action_shapeArabic, action_setInverse, action_resolve, action_mirror, nullptr}},
/* 12: Logical LTR => Logical LTR */
{LTR, LOGICAL, LTR, LOGICAL, SHAPE_LOGICAL, SHAPE_LOGICAL, LTR,
- {action_resolve, action_mirror, action_shapeArabic, NULL}},
+ {action_resolve, action_mirror, action_shapeArabic, nullptr}},
/* 13: Logical RTL => Logical RTL */
{RTL, LOGICAL, RTL, LOGICAL, SHAPE_VISUAL, SHAPE_LOGICAL, RTL,
- {action_resolve, action_mirror, action_shapeArabic, NULL}},
+ {action_resolve, action_mirror, action_shapeArabic, nullptr}},
/* 14: Visual LTR => Visual LTR */
{LTR, VISUAL, LTR, VISUAL, SHAPE_LOGICAL, SHAPE_VISUAL, LTR,
- {action_resolve, action_mirror, action_shapeArabic, NULL}},
+ {action_resolve, action_mirror, action_shapeArabic, nullptr}},
/* 15: Visual RTL => Visual RTL */
{RTL, VISUAL, RTL, VISUAL, SHAPE_LOGICAL, SHAPE_VISUAL, LTR,
- {action_reverse, action_resolve, action_mirror, action_shapeArabic, action_reverse, NULL}}
+ {action_reverse, action_resolve, action_mirror, action_shapeArabic, action_reverse, nullptr}}
};
static const uint32_t nSchemes = sizeof(Schemes) / sizeof(*Schemes);
@@ -387,7 +387,7 @@ static const uint32_t nSchemes = sizeof(Schemes) / sizeof(*Schemes);
* of the first strong bidi character.
*/
static void
-resolveBaseDirection(const UChar *text, uint32_t length,
+resolveBaseDirection(const char16_t *text, uint32_t length,
UBiDiLevel *pInLevel, UBiDiLevel *pOutLevel)
{
switch (*pInLevel) {
@@ -417,7 +417,7 @@ resolveBaseDirection(const UChar *text, uint32_t length,
* Finds a valid <code>ReorderingScheme</code> matching the
* caller-defined scheme.
*
- * @return A valid <code>ReorderingScheme</code> object or NULL
+ * @return A valid <code>ReorderingScheme</code> object or nullptr
*/
static const ReorderingScheme*
findMatchingScheme(UBiDiLevel inLevel, UBiDiLevel outLevel,
@@ -431,13 +431,13 @@ findMatchingScheme(UBiDiLevel inLevel, UBiDiLevel outLevel,
return pScheme;
}
}
- return NULL;
+ return nullptr;
}
U_CAPI uint32_t U_EXPORT2
ubiditransform_transform(UBiDiTransform *pBiDiTransform,
- const UChar *src, int32_t srcLength,
- UChar *dest, int32_t destSize,
+ const char16_t *src, int32_t srcLength,
+ char16_t *dest, int32_t destSize,
UBiDiLevel inParaLevel, UBiDiOrder inOrder,
UBiDiLevel outParaLevel, UBiDiOrder outOrder,
UBiDiMirroring doMirroring, uint32_t shapingOptions,
@@ -446,19 +446,19 @@ ubiditransform_transform(UBiDiTransform *pBiDiTransform,
uint32_t destLength = 0;
UBool textChanged = false;
const UBiDiTransform *pOrigTransform = pBiDiTransform;
- const UBiDiAction *action = NULL;
+ const UBiDiAction *action = nullptr;
if (U_FAILURE(*pErrorCode)) {
return 0;
}
- if (src == NULL || dest == NULL) {
+ if (src == nullptr || dest == nullptr) {
*pErrorCode = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
CHECK_LEN(src, srcLength, pErrorCode);
CHECK_LEN(dest, destSize, pErrorCode);
- if (pBiDiTransform == NULL) {
+ if (pBiDiTransform == nullptr) {
pBiDiTransform = ubiditransform_open(pErrorCode);
if (U_FAILURE(*pErrorCode)) {
return 0;
@@ -470,7 +470,7 @@ ubiditransform_transform(UBiDiTransform *pBiDiTransform,
pBiDiTransform->pActiveScheme = findMatchingScheme(inParaLevel, outParaLevel,
inOrder, outOrder);
- if (pBiDiTransform->pActiveScheme == NULL) {
+ if (pBiDiTransform->pActiveScheme == nullptr) {
goto cleanup;
}
pBiDiTransform->reorderingOptions = doMirroring ? UBIDI_DO_MIRRORING
@@ -486,7 +486,7 @@ ubiditransform_transform(UBiDiTransform *pBiDiTransform,
if (U_FAILURE(*pErrorCode)) {
goto cleanup;
}
- if (pBiDiTransform->pBidi == NULL) {
+ if (pBiDiTransform->pBidi == nullptr) {
pBiDiTransform->pBidi = ubidi_openSized(0, 0, pErrorCode);
if (U_FAILURE(*pErrorCode)) {
goto cleanup;
@@ -521,8 +521,8 @@ cleanup:
if (pOrigTransform != pBiDiTransform) {
ubiditransform_close(pBiDiTransform);
} else {
- pBiDiTransform->dest = NULL;
- pBiDiTransform->pDestLength = NULL;
+ pBiDiTransform->dest = nullptr;
+ pBiDiTransform->pDestLength = nullptr;
pBiDiTransform->srcLength = 0;
pBiDiTransform->destSize = 0;
}
diff --git a/Build/source/libs/icu/icu-src/source/common/ubidiwrt.cpp b/Build/source/libs/icu/icu-src/source/common/ubidiwrt.cpp
index a69c0a4b8b1..969807c2437 100644
--- a/Build/source/libs/icu/icu-src/source/common/ubidiwrt.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ubidiwrt.cpp
@@ -56,8 +56,8 @@
* we are writing RTL output in reverse.
*/
static int32_t
-doWriteForward(const UChar *src, int32_t srcLength,
- UChar *dest, int32_t destSize,
+doWriteForward(const char16_t *src, int32_t srcLength,
+ char16_t *dest, int32_t destSize,
uint16_t options,
UErrorCode *pErrorCode) {
/* optimize for several combinations of options */
@@ -93,7 +93,7 @@ doWriteForward(const UChar *src, int32_t srcLength,
case UBIDI_REMOVE_BIDI_CONTROLS: {
/* copy the LTR run and remove any BiDi control characters */
int32_t remaining=destSize;
- UChar c;
+ char16_t c;
do {
c=*src++;
if(!IS_BIDI_CONTROL_CHAR(c)) {
@@ -149,8 +149,8 @@ doWriteForward(const UChar *src, int32_t srcLength,
}
static int32_t
-doWriteReverse(const UChar *src, int32_t srcLength,
- UChar *dest, int32_t destSize,
+doWriteReverse(const char16_t *src, int32_t srcLength,
+ char16_t *dest, int32_t destSize,
uint16_t options,
UErrorCode *pErrorCode) {
/*
@@ -248,7 +248,7 @@ doWriteReverse(const UChar *src, int32_t srcLength,
/* we need to find out the destination length of the run,
which will not include the BiDi control characters */
int32_t length=srcLength;
- UChar ch;
+ char16_t ch;
i=0;
do {
@@ -306,26 +306,26 @@ doWriteReverse(const UChar *src, int32_t srcLength,
}
U_CAPI int32_t U_EXPORT2
-ubidi_writeReverse(const UChar *src, int32_t srcLength,
- UChar *dest, int32_t destSize,
+ubidi_writeReverse(const char16_t *src, int32_t srcLength,
+ char16_t *dest, int32_t destSize,
uint16_t options,
UErrorCode *pErrorCode) {
int32_t destLength;
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return 0;
}
/* more error checking */
- if( src==NULL || srcLength<-1 ||
- destSize<0 || (destSize>0 && dest==NULL))
+ if( src==nullptr || srcLength<-1 ||
+ destSize<0 || (destSize>0 && dest==nullptr))
{
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
/* do input and output overlap? */
- if( dest!=NULL &&
+ if( dest!=nullptr &&
((src>=dest && src<dest+destSize) ||
(dest>=src && dest<src+srcLength)))
{
@@ -355,29 +355,29 @@ ubidi_writeReverse(const UChar *src, int32_t srcLength,
#endif
U_CAPI int32_t U_EXPORT2
ubidi_writeReordered(UBiDi *pBiDi,
- UChar *dest, int32_t destSize,
+ char16_t *dest, int32_t destSize,
uint16_t options,
UErrorCode *pErrorCode) {
- const UChar *text;
- UChar *saveDest;
+ const char16_t *text;
+ char16_t *saveDest;
int32_t length, destCapacity;
int32_t run, runCount, logicalStart, runLength;
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return 0;
}
/* more error checking */
- if( pBiDi==NULL ||
- (text=pBiDi->text)==NULL || (length=pBiDi->length)<0 ||
- destSize<0 || (destSize>0 && dest==NULL))
+ if( pBiDi==nullptr ||
+ (text=pBiDi->text)==nullptr || (length=pBiDi->length)<0 ||
+ destSize<0 || (destSize>0 && dest==nullptr))
{
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
/* do input and output overlap? */
- if( dest!=NULL &&
+ if( dest!=nullptr &&
((text>=dest && text<dest+destSize) ||
(dest>=text && dest<text+pBiDi->originalLength)))
{
@@ -451,7 +451,7 @@ ubidi_writeReordered(UBiDi *pBiDi,
dest, destSize,
options, pErrorCode);
}
- if(dest!=NULL) {
+ if(dest!=nullptr) {
dest+=runLength;
}
destSize-=runLength;
@@ -459,8 +459,8 @@ ubidi_writeReordered(UBiDi *pBiDi,
} else {
/* insert BiDi controls for "inverse BiDi" */
const DirProp *dirProps=pBiDi->dirProps;
- const UChar *src;
- UChar uc;
+ const char16_t *src;
+ char16_t uc;
UBiDiDirection dir;
int32_t markFlag;
@@ -495,7 +495,7 @@ ubidi_writeReordered(UBiDi *pBiDi,
runLength=doWriteForward(src, runLength,
dest, destSize,
(uint16_t)(options&~UBIDI_DO_MIRRORING), pErrorCode);
- if(dest!=NULL) {
+ if(dest!=nullptr) {
dest+=runLength;
}
destSize-=runLength;
@@ -539,7 +539,7 @@ ubidi_writeReordered(UBiDi *pBiDi,
runLength=doWriteReverse(src, runLength,
dest, destSize,
options, pErrorCode);
- if(dest!=NULL) {
+ if(dest!=nullptr) {
dest+=runLength;
}
destSize-=runLength;
@@ -578,7 +578,7 @@ ubidi_writeReordered(UBiDi *pBiDi,
dest, destSize,
options, pErrorCode);
}
- if(dest!=NULL) {
+ if(dest!=nullptr) {
dest+=runLength;
}
destSize-=runLength;
@@ -586,7 +586,7 @@ ubidi_writeReordered(UBiDi *pBiDi,
} else {
/* insert BiDi controls for "inverse BiDi" */
const DirProp *dirProps=pBiDi->dirProps;
- const UChar *src;
+ const char16_t *src;
UBiDiDirection dir;
for(run=runCount; --run>=0;) {
@@ -605,7 +605,7 @@ ubidi_writeReordered(UBiDi *pBiDi,
runLength=doWriteReverse(src, runLength,
dest, destSize,
(uint16_t)(options&~UBIDI_DO_MIRRORING), pErrorCode);
- if(dest!=NULL) {
+ if(dest!=nullptr) {
dest+=runLength;
}
destSize-=runLength;
@@ -627,7 +627,7 @@ ubidi_writeReordered(UBiDi *pBiDi,
runLength=doWriteForward(src, runLength,
dest, destSize,
options, pErrorCode);
- if(dest!=NULL) {
+ if(dest!=nullptr) {
dest+=runLength;
}
destSize-=runLength;
diff --git a/Build/source/libs/icu/icu-src/source/common/ubrk.cpp b/Build/source/libs/icu/icu-src/source/common/ubrk.cpp
index f4e064961f3..46ec0d785ad 100644
--- a/Build/source/libs/icu/icu-src/source/common/ubrk.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ubrk.cpp
@@ -33,7 +33,7 @@ U_NAMESPACE_USE
U_CAPI UBreakIterator* U_EXPORT2
ubrk_open(UBreakIteratorType type,
const char *locale,
- const UChar *text,
+ const char16_t *text,
int32_t textLength,
UErrorCode *status)
{
@@ -79,7 +79,7 @@ ubrk_open(UBreakIteratorType type,
UBreakIterator *uBI = (UBreakIterator *)result;
- if (text != NULL) {
+ if (text != nullptr) {
ubrk_setText(uBI, text, textLength, status);
}
return uBI;
@@ -94,14 +94,14 @@ ubrk_open(UBreakIteratorType type,
//
//------------------------------------------------------------------------------
U_CAPI UBreakIterator* U_EXPORT2
-ubrk_openRules( const UChar *rules,
+ubrk_openRules( const char16_t *rules,
int32_t rulesLength,
- const UChar *text,
+ const char16_t *text,
int32_t textLength,
UParseError *parseErr,
UErrorCode *status) {
- if (status == NULL || U_FAILURE(*status)){
+ if (status == nullptr || U_FAILURE(*status)){
return 0;
}
@@ -113,7 +113,7 @@ ubrk_openRules( const UChar *rules,
}
UBreakIterator *uBI = (UBreakIterator *)result;
- if (text != NULL) {
+ if (text != nullptr) {
ubrk_setText(uBI, text, textLength, status);
}
return uBI;
@@ -122,22 +122,22 @@ ubrk_openRules( const UChar *rules,
U_CAPI UBreakIterator* U_EXPORT2
ubrk_openBinaryRules(const uint8_t *binaryRules, int32_t rulesLength,
- const UChar * text, int32_t textLength,
+ const char16_t * text, int32_t textLength,
UErrorCode * status)
{
if (U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
if (rulesLength < 0) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
LocalPointer<RuleBasedBreakIterator> lpRBBI(new RuleBasedBreakIterator(binaryRules, rulesLength, *status), *status);
if (U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
UBreakIterator *uBI = reinterpret_cast<UBreakIterator *>(lpRBBI.orphan());
- if (text != NULL) {
+ if (text != nullptr) {
ubrk_setText(uBI, text, textLength, status);
}
return uBI;
@@ -151,24 +151,24 @@ ubrk_safeClone(
int32_t *pBufferSize,
UErrorCode *status)
{
- if (status == NULL || U_FAILURE(*status)){
- return NULL;
+ if (status == nullptr || U_FAILURE(*status)){
+ return nullptr;
}
- if (bi == NULL) {
+ if (bi == nullptr) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
- if (pBufferSize != NULL) {
+ if (pBufferSize != nullptr) {
int32_t inputSize = *pBufferSize;
*pBufferSize = 1;
if (inputSize == 0) {
- return NULL; // preflighting for deprecated functionality
+ return nullptr; // preflighting for deprecated functionality
}
}
BreakIterator *newBI = ((BreakIterator *)bi)->clone();
- if (newBI == NULL) {
+ if (newBI == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
- } else if (pBufferSize != NULL) {
+ } else if (pBufferSize != nullptr) {
*status = U_SAFECLONE_ALLOCATED_WARNING;
}
return (UBreakIterator *)newBI;
@@ -188,14 +188,14 @@ ubrk_close(UBreakIterator *bi)
U_CAPI void U_EXPORT2
ubrk_setText(UBreakIterator* bi,
- const UChar* text,
+ const char16_t* text,
int32_t textLength,
UErrorCode* status)
{
UText ut = UTEXT_INITIALIZER;
utext_openUChars(&ut, text, textLength, status);
((BreakIterator*)bi)->setText(&ut, *status);
- // A stack allocated UText wrapping a UChar * string
+ // A stack allocated UText wrapping a char16_t * string
// can be dumped without explicitly closing it.
}
@@ -304,11 +304,11 @@ ubrk_getLocaleByType(const UBreakIterator *bi,
ULocDataLocaleType type,
UErrorCode* status)
{
- if (bi == NULL) {
+ if (bi == nullptr) {
if (U_SUCCESS(*status)) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
}
- return NULL;
+ return nullptr;
}
return ((BreakIterator*)bi)->getLocaleID(type, *status);
}
@@ -331,12 +331,12 @@ ubrk_getBinaryRules(UBreakIterator *bi,
if (U_FAILURE(*status)) {
return 0;
}
- if ((binaryRules == NULL && rulesCapacity > 0) || rulesCapacity < 0) {
+ if ((binaryRules == nullptr && rulesCapacity > 0) || rulesCapacity < 0) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
RuleBasedBreakIterator* rbbi;
- if ((rbbi = dynamic_cast<RuleBasedBreakIterator*>(reinterpret_cast<BreakIterator*>(bi))) == NULL) {
+ if ((rbbi = dynamic_cast<RuleBasedBreakIterator*>(reinterpret_cast<BreakIterator*>(bi))) == nullptr) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -346,7 +346,7 @@ ubrk_getBinaryRules(UBreakIterator *bi,
*status = U_INDEX_OUTOFBOUNDS_ERROR;
return 0;
}
- if (binaryRules != NULL) { // if not preflighting
+ if (binaryRules != nullptr) { // if not preflighting
// Here we know rulesLength <= INT32_MAX and rulesCapacity >= 0, can cast safely
if ((int32_t)rulesLength > rulesCapacity) {
*status = U_BUFFER_OVERFLOW_ERROR;
diff --git a/Build/source/libs/icu/icu-src/source/common/ucase.cpp b/Build/source/libs/icu/icu-src/source/common/ucase.cpp
index 3d1750265b1..4fd23fc935c 100644
--- a/Build/source/libs/icu/icu-src/source/common/ucase.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ucase.cpp
@@ -50,7 +50,7 @@ ucase_addPropertyStarts(const USetAdder *sa, UErrorCode *pErrorCode) {
}
/* add the start code point of each same-value range of the trie */
- utrie2_enum(&ucase_props_singleton.trie, NULL, _enumPropertyStartsRange, sa);
+ utrie2_enum(&ucase_props_singleton.trie, nullptr, _enumPropertyStartsRange, sa);
/* add code points with hardcoded properties, plus the ones following them */
@@ -195,47 +195,17 @@ ucase_totitle(UChar32 c) {
return c;
}
-static const UChar iDot[2] = { 0x69, 0x307 };
-static const UChar jDot[2] = { 0x6a, 0x307 };
-static const UChar iOgonekDot[3] = { 0x12f, 0x307 };
-static const UChar iDotGrave[3] = { 0x69, 0x307, 0x300 };
-static const UChar iDotAcute[3] = { 0x69, 0x307, 0x301 };
-static const UChar iDotTilde[3] = { 0x69, 0x307, 0x303 };
+static const char16_t iDot[2] = { 0x69, 0x307 };
+static const char16_t jDot[2] = { 0x6a, 0x307 };
+static const char16_t iOgonekDot[3] = { 0x12f, 0x307 };
+static const char16_t iDotGrave[3] = { 0x69, 0x307, 0x300 };
+static const char16_t iDotAcute[3] = { 0x69, 0x307, 0x301 };
+static const char16_t iDotTilde[3] = { 0x69, 0x307, 0x303 };
U_CFUNC void U_EXPORT2
ucase_addCaseClosure(UChar32 c, const USetAdder *sa) {
- uint16_t props;
-
- /*
- * 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 */
- sa->add(sa->set, 0x69);
- return;
- case 0x69:
- sa->add(sa->set, 0x49);
- return;
- case 0x130:
- /* dotted I is in a class with <0069 0307> (for canonical equivalence with <0049 0307>) */
- sa->addString(sa->set, iDot, 2);
- return;
- case 0x131:
- /* dotless i is in a class by itself */
- return;
- default:
- /* otherwise use the data file data */
- break;
- }
-
- props=UTRIE2_GET16(&ucase_props_singleton.trie, c);
+ uint16_t props=UTRIE2_GET16(&ucase_props_singleton.trie, c);
if(!UCASE_HAS_EXCEPTION(props)) {
if(UCASE_GET_TYPE(props)!=UCASE_NONE) {
/* add the one simple case mapping, no matter what type it is */
@@ -249,19 +219,42 @@ ucase_addCaseClosure(UChar32 c, const USetAdder *sa) {
* c has exceptions, so there may be multiple simple and/or
* full case mappings. Add them all.
*/
- const uint16_t *pe0, *pe=GET_EXCEPTIONS(&ucase_props_singleton, props);
- const UChar *closure;
+ const uint16_t *pe=GET_EXCEPTIONS(&ucase_props_singleton, props);
uint16_t excWord=*pe++;
- int32_t idx, closureLength, fullLength, length;
-
- pe0=pe;
+ const uint16_t *pe0=pe;
+
+ // 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.
+ if (excWord&UCASE_EXC_CONDITIONAL_FOLD) {
+ // These characters have Turkic case foldings. Hardcode their closure.
+ if (c == 0x49) {
+ // Regular i and I are in one equivalence class.
+ sa->add(sa->set, 0x69);
+ return;
+ } else if (c == 0x130) {
+ // Dotted I is in a class with <0069 0307>
+ // (for canonical equivalence with <0049 0307>).
+ sa->addString(sa->set, iDot, 2);
+ return;
+ }
+ } else if (c == 0x69) {
+ sa->add(sa->set, 0x49);
+ return;
+ } else if (c == 0x131) {
+ // Dotless i is in a class by itself.
+ return;
+ }
/* add all simple case mappings */
- for(idx=UCASE_EXC_LOWER; idx<=UCASE_EXC_TITLE; ++idx) {
+ for(int32_t idx=UCASE_EXC_LOWER; idx<=UCASE_EXC_TITLE; ++idx) {
if(HAS_SLOT(excWord, idx)) {
pe=pe0;
- GET_SLOT_VALUE(excWord, idx, pe, c);
- sa->add(sa->set, c);
+ UChar32 mapping;
+ GET_SLOT_VALUE(excWord, idx, pe, mapping);
+ sa->add(sa->set, mapping);
}
}
if(HAS_SLOT(excWord, UCASE_EXC_DELTA)) {
@@ -272,19 +265,22 @@ ucase_addCaseClosure(UChar32 c, const USetAdder *sa) {
}
/* get the closure string pointer & length */
+ const char16_t *closure;
+ int32_t closureLength;
if(HAS_SLOT(excWord, UCASE_EXC_CLOSURE)) {
pe=pe0;
GET_SLOT_VALUE(excWord, UCASE_EXC_CLOSURE, pe, closureLength);
closureLength&=UCASE_CLOSURE_MAX_LENGTH; /* higher bits are reserved */
- closure=(const UChar *)pe+1; /* behind this slot, unless there are full case mappings */
+ closure=(const char16_t *)pe+1; /* behind this slot, unless there are full case mappings */
} else {
closureLength=0;
- closure=NULL;
+ closure=nullptr;
}
/* add the full case folding */
if(HAS_SLOT(excWord, UCASE_EXC_FULL_MAPPINGS)) {
pe=pe0;
+ int32_t fullLength;
GET_SLOT_VALUE(excWord, UCASE_EXC_FULL_MAPPINGS, pe, fullLength);
/* start of full case mapping strings */
@@ -297,9 +293,9 @@ ucase_addCaseClosure(UChar32 c, const USetAdder *sa) {
fullLength>>=4;
/* add the full case folding string */
- length=fullLength&0xf;
+ int32_t length=fullLength&0xf;
if(length!=0) {
- sa->addString(sa->set, (const UChar *)pe, length);
+ sa->addString(sa->set, (const char16_t *)pe, length);
pe+=length;
}
@@ -309,13 +305,113 @@ ucase_addCaseClosure(UChar32 c, const USetAdder *sa) {
fullLength>>=4;
pe+=fullLength;
- closure=(const UChar *)pe; /* behind full case mappings */
+ closure=(const char16_t *)pe; /* behind full case mappings */
}
/* add each code point in the closure string */
- for(idx=0; idx<closureLength;) {
- U16_NEXT_UNSAFE(closure, idx, c);
- sa->add(sa->set, c);
+ for(int32_t idx=0; idx<closureLength;) {
+ UChar32 mapping;
+ U16_NEXT_UNSAFE(closure, idx, mapping);
+ sa->add(sa->set, mapping);
+ }
+ }
+}
+
+U_CFUNC void U_EXPORT2
+ucase_addSimpleCaseClosure(UChar32 c, const USetAdder *sa) {
+ uint16_t props=UTRIE2_GET16(&ucase_props_singleton.trie, c);
+ if(!UCASE_HAS_EXCEPTION(props)) {
+ if(UCASE_GET_TYPE(props)!=UCASE_NONE) {
+ /* add the one simple case mapping, no matter what type it is */
+ int32_t delta=UCASE_GET_DELTA(props);
+ if(delta!=0) {
+ sa->add(sa->set, c+delta);
+ }
+ }
+ } else {
+ // c has exceptions. Add the mappings relevant for scf=Simple_Case_Folding.
+ const uint16_t *pe=GET_EXCEPTIONS(&ucase_props_singleton, props);
+ uint16_t excWord=*pe++;
+ const uint16_t *pe0=pe;
+
+ // Hardcode the case closure of i and its relatives and ignore the
+ // data file data for these characters, like in ucase_addCaseClosure().
+ if (excWord&UCASE_EXC_CONDITIONAL_FOLD) {
+ // These characters have Turkic case foldings. Hardcode their closure.
+ if (c == 0x49) {
+ // Regular i and I are in one equivalence class.
+ sa->add(sa->set, 0x69);
+ return;
+ } else if (c == 0x130) {
+ // For scf=Simple_Case_Folding, dotted I is in a class by itself.
+ return;
+ }
+ } else if (c == 0x69) {
+ sa->add(sa->set, 0x49);
+ return;
+ } else if (c == 0x131) {
+ // Dotless i is in a class by itself.
+ return;
+ }
+
+ // Add all simple case mappings.
+ for(int32_t idx=UCASE_EXC_LOWER; idx<=UCASE_EXC_TITLE; ++idx) {
+ if(HAS_SLOT(excWord, idx)) {
+ pe=pe0;
+ UChar32 mapping;
+ GET_SLOT_VALUE(excWord, idx, pe, mapping);
+ sa->add(sa->set, mapping);
+ }
+ }
+ if(HAS_SLOT(excWord, UCASE_EXC_DELTA)) {
+ pe=pe0;
+ int32_t delta;
+ GET_SLOT_VALUE(excWord, UCASE_EXC_DELTA, pe, delta);
+ UChar32 mapping = (excWord&UCASE_EXC_DELTA_IS_NEGATIVE)==0 ? c+delta : c-delta;
+ sa->add(sa->set, mapping);
+ }
+
+ /* get the closure string pointer & length */
+ const char16_t *closure;
+ int32_t closureLength;
+ if(HAS_SLOT(excWord, UCASE_EXC_CLOSURE)) {
+ pe=pe0;
+ GET_SLOT_VALUE(excWord, UCASE_EXC_CLOSURE, pe, closureLength);
+ closureLength&=UCASE_CLOSURE_MAX_LENGTH; /* higher bits are reserved */
+ closure=(const char16_t *)pe+1; /* behind this slot, unless there are full case mappings */
+ } else {
+ closureLength=0;
+ closure=nullptr;
+ }
+
+ // Skip the full case mappings.
+ if(closureLength > 0 && HAS_SLOT(excWord, UCASE_EXC_FULL_MAPPINGS)) {
+ pe=pe0;
+ int32_t fullLength;
+ GET_SLOT_VALUE(excWord, UCASE_EXC_FULL_MAPPINGS, pe, fullLength);
+
+ /* start of full case mapping strings */
+ ++pe;
+
+ fullLength&=0xffff; /* bits 16 and higher are reserved */
+
+ // Skip all 4 full case mappings.
+ pe+=fullLength&UCASE_FULL_LOWER;
+ fullLength>>=4;
+ pe+=fullLength&0xf;
+ fullLength>>=4;
+ pe+=fullLength&0xf;
+ fullLength>>=4;
+ pe+=fullLength;
+
+ closure=(const char16_t *)pe; /* behind full case mappings */
+ }
+
+ // Add each code point in the closure string whose scf maps back to c.
+ for(int32_t idx=0; idx<closureLength;) {
+ UChar32 mapping;
+ U16_NEXT_UNSAFE(closure, idx, mapping);
+ sa->add(sa->set, mapping);
}
}
}
@@ -325,7 +421,7 @@ ucase_addCaseClosure(UChar32 c, const USetAdder *sa) {
* must be length>0 and max>0 and length<=max
*/
static inline int32_t
-strcmpMax(const UChar *s, int32_t length, const UChar *t, int32_t max) {
+strcmpMax(const char16_t *s, int32_t length, const char16_t *t, int32_t max) {
int32_t c1, c2;
max-=length; /* we require length<=max, so no need to decrement max in the loop */
@@ -350,10 +446,10 @@ strcmpMax(const UChar *s, int32_t length, const UChar *t, int32_t max) {
}
U_CFUNC UBool U_EXPORT2
-ucase_addStringCaseClosure(const UChar *s, int32_t length, const USetAdder *sa) {
+ucase_addStringCaseClosure(const char16_t *s, int32_t length, const USetAdder *sa) {
int32_t i, start, limit, result, unfoldRows, unfoldRowWidth, unfoldStringWidth;
- if(ucase_props_singleton.unfold==NULL || s==NULL) {
+ if(ucase_props_singleton.unfold==nullptr || s==nullptr) {
return false; /* no reverse case folding data, or no string */
}
if(length<=1) {
@@ -383,7 +479,7 @@ ucase_addStringCaseClosure(const UChar *s, int32_t length, const USetAdder *sa)
limit=unfoldRows;
while(start<limit) {
i=(start+limit)/2;
- const UChar *p=reinterpret_cast<const UChar *>(unfold+(i*unfoldRowWidth));
+ const char16_t *p=reinterpret_cast<const char16_t *>(unfold+(i*unfoldRowWidth));
result=strcmpMax(s, length, p, unfoldStringWidth);
if(result==0) {
@@ -409,7 +505,7 @@ ucase_addStringCaseClosure(const UChar *s, int32_t length, const USetAdder *sa)
U_NAMESPACE_BEGIN
FullCaseFoldingIterator::FullCaseFoldingIterator()
- : unfold(reinterpret_cast<const UChar *>(ucase_props_singleton.unfold)),
+ : unfold(reinterpret_cast<const char16_t *>(ucase_props_singleton.unfold)),
unfoldRows(unfold[UCASE_UNFOLD_ROWS]),
unfoldRowWidth(unfold[UCASE_UNFOLD_ROW_WIDTH]),
unfoldStringWidth(unfold[UCASE_UNFOLD_STRING_WIDTH]),
@@ -421,7 +517,7 @@ FullCaseFoldingIterator::FullCaseFoldingIterator()
UChar32
FullCaseFoldingIterator::next(UnicodeString &full) {
// Advance past the last-delivered code point.
- const UChar *p=unfold+(currentRow*unfoldRowWidth);
+ const char16_t *p=unfold+(currentRow*unfoldRowWidth);
if(rowCpIndex>=unfoldRowWidth || p[rowCpIndex]==0) {
++currentRow;
p+=unfoldRowWidth;
@@ -708,7 +804,7 @@ ucase_isCaseSensitive(UChar32 c) {
#define is_sep(c) ((c)=='_' || (c)=='-' || (c)==0)
/**
- * Requires non-NULL locale ID but otherwise does the equivalent of
+ * Requires non-nullptr locale ID but otherwise does the equivalent of
* checking for language codes as if uloc_getLanguage() were called:
* Accepts both 2- and 3-letter codes and accepts case variants.
*/
@@ -721,7 +817,7 @@ ucase_getCaseLocale(const char *locale) {
* examined and copied/transformed.
*
* Because this code does not want to depend on uloc, the caller must
- * pass in a non-NULL locale, i.e., may need to call uloc_getDefault().
+ * pass in a non-nullptr locale, i.e., may need to call uloc_getDefault().
*/
char c=*locale++;
// Fastpath for English "en" which is often used for default (=root locale) case mappings,
@@ -904,7 +1000,7 @@ static UBool
isFollowedByCasedLetter(UCaseContextIterator *iter, void *context, int8_t dir) {
UChar32 c;
- if(iter==NULL) {
+ if(iter==nullptr) {
return false;
}
@@ -929,7 +1025,7 @@ isPrecededBySoftDotted(UCaseContextIterator *iter, void *context) {
int32_t dotType;
int8_t dir;
- if(iter==NULL) {
+ if(iter==nullptr) {
return false;
}
@@ -986,7 +1082,7 @@ isPrecededBy_I(UCaseContextIterator *iter, void *context) {
int32_t dotType;
int8_t dir;
- if(iter==NULL) {
+ if(iter==nullptr) {
return false;
}
@@ -1010,7 +1106,7 @@ isFollowedByMoreAbove(UCaseContextIterator *iter, void *context) {
int32_t dotType;
int8_t dir;
- if(iter==NULL) {
+ if(iter==nullptr) {
return false;
}
@@ -1033,7 +1129,7 @@ isFollowedByDotAbove(UCaseContextIterator *iter, void *context) {
int32_t dotType;
int8_t dir;
- if(iter==NULL) {
+ if(iter==nullptr) {
return false;
}
@@ -1053,7 +1149,7 @@ isFollowedByDotAbove(UCaseContextIterator *iter, void *context) {
U_CAPI int32_t U_EXPORT2
ucase_toFullLower(UChar32 c,
UCaseContextIterator *iter, void *context,
- const UChar **pString,
+ const char16_t **pString,
int32_t loc) {
// The sign of the result has meaning, input must be non-negative so that it can be returned as is.
U_ASSERT(c >= 0);
@@ -1180,7 +1276,7 @@ ucase_toFullLower(UChar32 c,
full&=UCASE_FULL_LOWER;
if(full!=0) {
/* set the output pointer to the lowercase mapping */
- *pString=reinterpret_cast<const UChar *>(pe+1);
+ *pString=reinterpret_cast<const char16_t *>(pe+1);
/* return the string length */
return full;
@@ -1204,7 +1300,7 @@ ucase_toFullLower(UChar32 c,
static int32_t
toUpperOrTitle(UChar32 c,
UCaseContextIterator *iter, void *context,
- const UChar **pString,
+ const char16_t **pString,
int32_t loc,
UBool upperNotTitle) {
// The sign of the result has meaning, input must be non-negative so that it can be returned as is.
@@ -1286,7 +1382,7 @@ toUpperOrTitle(UChar32 c,
if(full!=0) {
/* set the output pointer to the result string */
- *pString=reinterpret_cast<const UChar *>(pe);
+ *pString=reinterpret_cast<const char16_t *>(pe);
/* return the string length */
return full;
@@ -1315,7 +1411,7 @@ toUpperOrTitle(UChar32 c,
U_CAPI int32_t U_EXPORT2
ucase_toFullUpper(UChar32 c,
UCaseContextIterator *iter, void *context,
- const UChar **pString,
+ const char16_t **pString,
int32_t caseLocale) {
return toUpperOrTitle(c, iter, context, pString, caseLocale, true);
}
@@ -1323,7 +1419,7 @@ ucase_toFullUpper(UChar32 c,
U_CAPI int32_t U_EXPORT2
ucase_toFullTitle(UChar32 c,
UCaseContextIterator *iter, void *context,
- const UChar **pString,
+ const char16_t **pString,
int32_t caseLocale) {
return toUpperOrTitle(c, iter, context, pString, caseLocale, false);
}
@@ -1440,7 +1536,7 @@ ucase_fold(UChar32 c, uint32_t options) {
U_CAPI int32_t U_EXPORT2
ucase_toFullFolding(UChar32 c,
- const UChar **pString,
+ const char16_t **pString,
uint32_t options) {
// The sign of the result has meaning, input must be non-negative so that it can be returned as is.
U_ASSERT(c >= 0);
@@ -1493,7 +1589,7 @@ ucase_toFullFolding(UChar32 c,
if(full!=0) {
/* set the output pointer to the result string */
- *pString=reinterpret_cast<const UChar *>(pe);
+ *pString=reinterpret_cast<const char16_t *>(pe);
/* return the string length */
return full;
@@ -1562,7 +1658,7 @@ u_foldCase(UChar32 c, uint32_t options) {
U_CFUNC int32_t U_EXPORT2
ucase_hasBinaryProperty(UChar32 c, UProperty which) {
/* case mapping properties */
- const UChar *resultString;
+ const char16_t *resultString;
switch(which) {
case UCHAR_LOWERCASE:
return (UBool)(UCASE_LOWER==ucase_getType(c));
@@ -1589,17 +1685,17 @@ ucase_hasBinaryProperty(UChar32 c, UProperty which) {
* start sets for normalization and case mappings.
*/
case UCHAR_CHANGES_WHEN_LOWERCASED:
- return (UBool)(ucase_toFullLower(c, NULL, NULL, &resultString, UCASE_LOC_ROOT)>=0);
+ return (UBool)(ucase_toFullLower(c, nullptr, nullptr, &resultString, UCASE_LOC_ROOT)>=0);
case UCHAR_CHANGES_WHEN_UPPERCASED:
- return (UBool)(ucase_toFullUpper(c, NULL, NULL, &resultString, UCASE_LOC_ROOT)>=0);
+ return (UBool)(ucase_toFullUpper(c, nullptr, nullptr, &resultString, UCASE_LOC_ROOT)>=0);
case UCHAR_CHANGES_WHEN_TITLECASED:
- return (UBool)(ucase_toFullTitle(c, NULL, NULL, &resultString, UCASE_LOC_ROOT)>=0);
+ return (UBool)(ucase_toFullTitle(c, nullptr, nullptr, &resultString, UCASE_LOC_ROOT)>=0);
/* case UCHAR_CHANGES_WHEN_CASEFOLDED: -- in uprops.c */
case UCHAR_CHANGES_WHEN_CASEMAPPED:
return (UBool)(
- ucase_toFullLower(c, NULL, NULL, &resultString, UCASE_LOC_ROOT)>=0 ||
- ucase_toFullUpper(c, NULL, NULL, &resultString, UCASE_LOC_ROOT)>=0 ||
- ucase_toFullTitle(c, NULL, NULL, &resultString, UCASE_LOC_ROOT)>=0);
+ ucase_toFullLower(c, nullptr, nullptr, &resultString, UCASE_LOC_ROOT)>=0 ||
+ ucase_toFullUpper(c, nullptr, nullptr, &resultString, UCASE_LOC_ROOT)>=0 ||
+ ucase_toFullTitle(c, nullptr, nullptr, &resultString, UCASE_LOC_ROOT)>=0);
default:
return false;
}
diff --git a/Build/source/libs/icu/icu-src/source/common/ucase.h b/Build/source/libs/icu/icu-src/source/common/ucase.h
index 049f0429122..e03b311870f 100644
--- a/Build/source/libs/icu/icu-src/source/common/ucase.h
+++ b/Build/source/libs/icu/icu-src/source/common/ucase.h
@@ -108,6 +108,10 @@ ucase_fold(UChar32 c, uint32_t options);
U_CFUNC void U_EXPORT2
ucase_addCaseClosure(UChar32 c, const USetAdder *sa);
+/** Case closure with only scf=Simple_Case_Folding. */
+U_CFUNC void U_EXPORT2
+ucase_addSimpleCaseClosure(UChar32 c, const USetAdder *sa);
+
/**
* Maps the string to single code points and adds the associated case closure
* mappings.
@@ -142,7 +146,7 @@ private:
FullCaseFoldingIterator(const FullCaseFoldingIterator &) = delete; // no copy
FullCaseFoldingIterator &operator=(const FullCaseFoldingIterator &) = delete; // no assignment
- const UChar *unfold;
+ const char16_t *unfold;
int32_t unfoldRows;
int32_t unfoldRowWidth;
int32_t unfoldStringWidth;
@@ -159,9 +163,9 @@ private:
namespace LatinCase {
/** Case mapping/folding data for code points up to U+017F. */
-constexpr UChar LIMIT = 0x180;
+constexpr char16_t LIMIT = 0x180;
/** U+017F case-folds and uppercases crossing the ASCII boundary. */
-constexpr UChar LONG_S = 0x17f;
+constexpr char16_t LONG_S = 0x17f;
/** Exception: Complex mapping, or too-large delta. */
constexpr int8_t EXC = -0x80;
diff --git a/Build/source/libs/icu/icu-src/source/common/ucase_props_data.h b/Build/source/libs/icu/icu-src/source/common/ucase_props_data.h
index b7797d14d73..92b59520cc5 100644
--- a/Build/source/libs/icu/icu-src/source/common/ucase_props_data.h
+++ b/Build/source/libs/icu/icu-src/source/common/ucase_props_data.h
@@ -9,9 +9,9 @@
#ifdef INCLUDED_FROM_UCASE_CPP
-static const UVersionInfo ucase_props_dataVersion={0xf,0,0,0};
+static const UVersionInfo ucase_props_dataVersion={0xf,1,0,0};
-static const int32_t ucase_props_indexes[UCASE_IX_TOP]={0x10,0x76f2,0x66c8,0x683,0x172,0,0,0,0,0,0,0,0,0,0,3};
+static const int32_t ucase_props_indexes[UCASE_IX_TOP]={0x10,0x76ec,0x66c8,0x680,0x172,0,0,0,0,0,0,0,0,0,0,3};
static const uint16_t ucase_props_trieIndex[13148]={
0x355,0x35d,0x365,0x36d,0x37b,0x383,0x38b,0x393,0x39b,0x3a3,0x3aa,0x3b2,0x3ba,0x3c2,0x3ca,0x3d2,
@@ -509,9 +509,9 @@ static const uint16_t ucase_props_trieIndex[13148]={
0x39b9,0x3a29,0x3a99,0x3b09,0x3b7b,0x3beb,0x3c5b,0x3ccb,0x3d3b,0x3dab,0x3e1b,0x3e8b,0x411,0x411,0x3ef9,0x3f79,
0x3fe9,0,0x4069,0x40e9,0xfc12,0xfc12,0xdb12,0xdb12,0x419b,4,0x4209,4,4,4,0x4259,0x42d9,
0x4349,0,0x43c9,0x4449,0xd512,0xd512,0xd512,0xd512,0x44fb,4,4,4,0x411,0x411,0x4569,0x4619,
-0,0,0x46e9,0x4769,0xfc12,0xfc12,0xce12,0xce12,0,4,4,4,0x411,0x411,0x4819,0x48c9,
-0x4999,0x391,0x4a19,0x4a99,0xfc12,0xfc12,0xc812,0xc812,0xfc92,4,4,4,0,0,0x4b49,0x4bc9,
-0x4c39,0,0x4cb9,0x4d39,0xc012,0xc012,0xc112,0xc112,0x4deb,4,4,0,0,0,0,0,
+0,0,0x46d9,0x4759,0xfc12,0xfc12,0xce12,0xce12,0,4,4,4,0x411,0x411,0x4809,0x48b9,
+0x4979,0x391,0x49f9,0x4a79,0xfc12,0xfc12,0xc812,0xc812,0xfc92,4,4,4,0,0,0x4b29,0x4ba9,
+0x4c19,0,0x4c99,0x4d19,0xc012,0xc012,0xc112,0xc112,0x4dcb,4,4,0,0,0,0,0,
0,0,0,0,0,0,0,4,4,4,4,4,0,0,0,0,
0,0,0,0,4,4,0,0,0,0,0,0,4,0,0,4,
0,0,4,4,4,4,4,0,0,0,0,0,0,0,0,0,
@@ -525,8 +525,8 @@ static const uint16_t ucase_props_trieIndex[13148]={
0x64,0x44,0x64,0x64,0x64,0x64,0x64,0x64,0x44,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,2,
0,0,1,2,2,2,1,1,2,2,2,1,0,2,0,0,
-0,2,2,2,2,2,0,0,0,0,0,0,2,0,0x4e5a,0,
-2,0,0x4e9a,0x4eda,2,2,0,1,2,2,0xe12,2,1,0,0,0,
+0,2,2,2,2,2,0,0,0,0,0,0,2,0,0x4e3a,0,
+2,0,0x4e7a,0x4eba,2,2,0,1,2,2,0xe12,2,1,0,0,0,
0,1,0,0,1,1,2,2,0,0,0,0,0,2,1,1,
0x21,0x21,0,0,0,0,0xf211,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0x812,0x812,0x812,0x812,0x812,0x812,0x812,0x812,
@@ -541,13 +541,13 @@ static const uint16_t ucase_props_trieIndex[13148]={
0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,
0x1812,0x1812,0x1812,0x1812,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,
0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,0xe811,
-0xe811,0xe811,0xe811,0xe811,0x92,0xff91,0x4f1a,0x4f3a,0x4f5a,0x4f79,0x4f99,0x92,0xff91,0x92,0xff91,0x92,
-0xff91,0x4fba,0x4fda,0x4ffa,0x501a,1,0x92,0xff91,1,0x92,0xff91,1,1,1,1,1,
-0x25,5,0x503a,0x503a,0x92,0xff91,0x92,0xff91,1,0,0,0,0,0,0,0x92,
+0xe811,0xe811,0xe811,0xe811,0x92,0xff91,0x4efa,0x4f1a,0x4f3a,0x4f59,0x4f79,0x92,0xff91,0x92,0xff91,0x92,
+0xff91,0x4f9a,0x4fba,0x4fda,0x4ffa,1,0x92,0xff91,1,0x92,0xff91,1,1,1,1,1,
+0x25,5,0x501a,0x501a,0x92,0xff91,0x92,0xff91,1,0,0,0,0,0,0,0x92,
0xff91,0x92,0xff91,0x44,0x44,0x44,0x92,0xff91,0,0,0,0,0,0,0,0,
-0,0,0,0,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,
-0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,
-0x5059,0x5059,0x5059,0x5059,0x5059,0x5059,0,0x5059,0,0,0,0,0,0x5059,0,0,
+0,0,0,0,0x5039,0x5039,0x5039,0x5039,0x5039,0x5039,0x5039,0x5039,0x5039,0x5039,0x5039,0x5039,
+0x5039,0x5039,0x5039,0x5039,0x5039,0x5039,0x5039,0x5039,0x5039,0x5039,0x5039,0x5039,0x5039,0x5039,0x5039,0x5039,
+0x5039,0x5039,0x5039,0x5039,0x5039,0x5039,0,0x5039,0,0,0,0,0,0x5039,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0x64,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,
@@ -562,7 +562,7 @@ static const uint16_t ucase_props_trieIndex[13148]={
0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,
-0x92,0xff91,0x507a,0x50b9,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,
+0x92,0xff91,0x505a,0x5099,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,
0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0,0x44,4,4,4,0,
0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0,4,0x92,0xff91,0x92,0xff91,
0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,
@@ -573,11 +573,11 @@ static const uint16_t ucase_props_trieIndex[13148]={
4,4,4,4,4,4,4,4,4,4,4,4,4,4,0x92,0xff91,
0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,1,1,0x92,0xff91,
0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,
-5,1,1,1,1,1,1,1,1,0x92,0xff91,0x92,0xff91,0x50fa,0x92,0xff91,
-0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,4,4,4,0x92,0xff91,0x511a,1,0,
+5,1,1,1,1,1,1,1,1,0x92,0xff91,0x92,0xff91,0x50da,0x92,0xff91,
+0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,4,4,4,0x92,0xff91,0x50fa,1,0,
0x92,0xff91,0x92,0xff91,0x1811,1,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,
-0x92,0xff91,0x513a,0x515a,0x517a,0x519a,0x513a,1,0x51ba,0x51da,0x51fa,0x521a,0x92,0xff91,0x92,0xff91,
-0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0xe812,0x523a,0x525a,0x92,0xff91,0x92,0xff91,0,
+0x92,0xff91,0x511a,0x513a,0x515a,0x517a,0x511a,1,0x519a,0x51ba,0x51da,0x51fa,0x92,0xff91,0x92,0xff91,
+0x92,0xff91,0x92,0xff91,0x92,0xff91,0x92,0xff91,0xe812,0x521a,0x523a,0x92,0xff91,0x92,0xff91,0,
0,0,0,0,0x92,0xff91,0,1,0,1,0x92,0xff91,0x92,0xff91,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,5,5,5,0x92,0xff91,0,5,5,1,0,0,0,0,0,
@@ -607,17 +607,17 @@ static const uint16_t ucase_props_trieIndex[13148]={
0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,0,
0,0,0,4,4,0,0x64,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,1,1,1,1,1,1,1,1,0x5279,1,1,1,1,
+1,1,1,1,1,1,1,1,1,1,1,0x5259,1,1,1,1,
1,1,1,4,5,5,5,5,1,1,1,1,1,1,1,1,
-1,5,4,4,0,0,0,0,0x5299,0x52c9,0x52f9,0x5329,0x5359,0x5389,0x53b9,0x53e9,
-0x5419,0x5449,0x5479,0x54a9,0x54d9,0x5509,0x5539,0x5569,0x5b99,0x5bc9,0x5bf9,0x5c29,0x5c59,0x5c89,0x5cb9,0x5ce9,
-0x5d19,0x5d49,0x5d79,0x5da9,0x5dd9,0x5e09,0x5e39,0x5e69,0x5e99,0x5ec9,0x5ef9,0x5f29,0x5f59,0x5f89,0x5fb9,0x5fe9,
-0x6019,0x6049,0x6079,0x60a9,0x60d9,0x6109,0x6139,0x6169,0x5599,0x55c9,0x55f9,0x5629,0x5659,0x5689,0x56b9,0x56e9,
-0x5719,0x5749,0x5779,0x57a9,0x57d9,0x5809,0x5839,0x5869,0x5899,0x58c9,0x58f9,0x5929,0x5959,0x5989,0x59b9,0x59e9,
-0x5a19,0x5a49,0x5a79,0x5aa9,0x5ad9,0x5b09,0x5b39,0x5b69,0,0,0,0,0,4,0,0,
+1,5,4,4,0,0,0,0,0x5279,0x52a9,0x52d9,0x5309,0x5339,0x5369,0x5399,0x53c9,
+0x53f9,0x5429,0x5459,0x5489,0x54b9,0x54e9,0x5519,0x5549,0x5b79,0x5ba9,0x5bd9,0x5c09,0x5c39,0x5c69,0x5c99,0x5cc9,
+0x5cf9,0x5d29,0x5d59,0x5d89,0x5db9,0x5de9,0x5e19,0x5e49,0x5e79,0x5ea9,0x5ed9,0x5f09,0x5f39,0x5f69,0x5f99,0x5fc9,
+0x5ff9,0x6029,0x6059,0x6089,0x60b9,0x60e9,0x6119,0x6149,0x5579,0x55a9,0x55d9,0x5609,0x5639,0x5669,0x5699,0x56c9,
+0x56f9,0x5729,0x5759,0x5789,0x57b9,0x57e9,0x5819,0x5849,0x5879,0x58a9,0x58d9,0x5909,0x5939,0x5969,0x5999,0x59c9,
+0x59f9,0x5a29,0x5a59,0x5a89,0x5ab9,0x5ae9,0x5b19,0x5b49,0,0,0,0,0,4,0,0,
4,0,0,0,0,0x64,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0x6199,0x6219,0x6299,0x6319,0x63c9,0x6479,0x6519,0,
-0,0,0,0,0,0,0,0,0,0,0,0x65b9,0x6639,0x66b9,0x6739,0x67b9,
+0,0,0,0,0,0,0,0,0x6179,0x61f9,0x6279,0x62f9,0x63a9,0x6459,0x64e9,0,
+0,0,0,0,0,0,0,0,0,0,0,0x6589,0x6609,0x6689,0x6709,0x6789,
0,0,0,0,0,0,0x64,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,0,0,0,4,
@@ -838,7 +838,7 @@ static const uint16_t ucase_props_trieIndex[13148]={
0,0,0,0,0,0,0,0,0,0,0,0
};
-static const uint16_t ucase_props_exceptions[1667]={
+static const uint16_t ucase_props_exceptions[1664]={
0xc850,0x20,2,0x130,0x131,0x4810,0x20,0x841,0x6b,1,0x212a,0x841,0x73,1,0x17f,0x5c50,
0x20,2,0x130,0x131,0x844,0x4b,1,0x212a,0x844,0x53,1,0x17f,0x806,0x3bc,0x39c,0x841,
0xe5,1,0x212b,0x8c0,1,0x2220,0x73,0x73,0x53,0x53,0x53,0x73,0x1e9e,0x844,0xc5,1,
@@ -909,41 +909,40 @@ static const uint16_t ucase_props_exceptions[1667]={
0x3b7,0x3b9,0x397,0x399,0x880,0x2220,0x3ae,0x3b9,0x389,0x399,0x389,0x345,0x880,0x2220,0x3b7,0x342,
0x397,0x342,0x397,0x342,0x880,0x3330,0x3b7,0x342,0x3b9,0x397,0x342,0x399,0x397,0x342,0x345,0xc90,
9,0x220,0x3b7,0x3b9,0x397,0x399,0x880,0x3330,0x3b9,0x308,0x300,0x399,0x308,0x300,0x399,0x308,
-0x300,0x8c0,1,0x3330,0x3b9,0x308,0x301,0x399,0x308,0x301,0x399,0x308,0x301,0x390,0x880,0x2220,
-0x3b9,0x342,0x399,0x342,0x399,0x342,0x880,0x3330,0x3b9,0x308,0x342,0x399,0x308,0x342,0x399,0x308,
-0x342,0x880,0x3330,0x3c5,0x308,0x300,0x3a5,0x308,0x300,0x3a5,0x308,0x300,0x8c0,1,0x3330,0x3c5,
-0x308,0x301,0x3a5,0x308,0x301,0x3a5,0x308,0x301,0x3b0,0x880,0x2220,0x3c1,0x313,0x3a1,0x313,0x3a1,
-0x313,0x880,0x2220,0x3c5,0x342,0x3a5,0x342,0x3a5,0x342,0x880,0x3330,0x3c5,0x308,0x342,0x3a5,0x308,
-0x342,0x3a5,0x308,0x342,0x880,0x2220,0x1f7c,0x3b9,0x1ffa,0x399,0x1ffa,0x345,0x890,9,0x220,0x3c9,
-0x3b9,0x3a9,0x399,0x880,0x2220,0x3ce,0x3b9,0x38f,0x399,0x38f,0x345,0x880,0x2220,0x3c9,0x342,0x3a9,
-0x342,0x3a9,0x342,0x880,0x3330,0x3c9,0x342,0x3b9,0x3a9,0x342,0x399,0x3a9,0x342,0x345,0xc90,9,
-0x220,0x3c9,0x3b9,0x3a9,0x399,0xc50,0x1d5d,1,0x3a9,0xc50,0x20bf,1,0x4b,0xc50,0x2046,1,
-0xc5,0xc10,0x29f7,0xc10,0xee6,0xc10,0x29e7,0xc10,0x2a2b,0xc10,0x2a28,0xc10,0x2a1c,0xc10,0x29fd,0xc10,
-0x2a1f,0xc10,0x2a1e,0xc10,0x2a3f,0xc10,0x1c60,0x841,0xa64b,1,0x1c88,0x844,0xa64a,1,0x1c88,0xc10,
-0x8a04,0xc10,0xa528,0xc10,0xa544,0xc10,0xa54f,0xc10,0xa54b,0xc10,0xa541,0xc10,0xa512,0xc10,0xa52a,0xc10,
-0xa515,0x810,0x3a0,0xc10,0xa543,0xc10,0x8a38,0xc10,0x3a0,0x806,0x13a0,0x13a0,0x806,0x13a1,0x13a1,0x806,
-0x13a2,0x13a2,0x806,0x13a3,0x13a3,0x806,0x13a4,0x13a4,0x806,0x13a5,0x13a5,0x806,0x13a6,0x13a6,0x806,0x13a7,
-0x13a7,0x806,0x13a8,0x13a8,0x806,0x13a9,0x13a9,0x806,0x13aa,0x13aa,0x806,0x13ab,0x13ab,0x806,0x13ac,0x13ac,
-0x806,0x13ad,0x13ad,0x806,0x13ae,0x13ae,0x806,0x13af,0x13af,0x806,0x13b0,0x13b0,0x806,0x13b1,0x13b1,0x806,
-0x13b2,0x13b2,0x806,0x13b3,0x13b3,0x806,0x13b4,0x13b4,0x806,0x13b5,0x13b5,0x806,0x13b6,0x13b6,0x806,0x13b7,
-0x13b7,0x806,0x13b8,0x13b8,0x806,0x13b9,0x13b9,0x806,0x13ba,0x13ba,0x806,0x13bb,0x13bb,0x806,0x13bc,0x13bc,
-0x806,0x13bd,0x13bd,0x806,0x13be,0x13be,0x806,0x13bf,0x13bf,0x806,0x13c0,0x13c0,0x806,0x13c1,0x13c1,0x806,
-0x13c2,0x13c2,0x806,0x13c3,0x13c3,0x806,0x13c4,0x13c4,0x806,0x13c5,0x13c5,0x806,0x13c6,0x13c6,0x806,0x13c7,
-0x13c7,0x806,0x13c8,0x13c8,0x806,0x13c9,0x13c9,0x806,0x13ca,0x13ca,0x806,0x13cb,0x13cb,0x806,0x13cc,0x13cc,
-0x806,0x13cd,0x13cd,0x806,0x13ce,0x13ce,0x806,0x13cf,0x13cf,0x806,0x13d0,0x13d0,0x806,0x13d1,0x13d1,0x806,
-0x13d2,0x13d2,0x806,0x13d3,0x13d3,0x806,0x13d4,0x13d4,0x806,0x13d5,0x13d5,0x806,0x13d6,0x13d6,0x806,0x13d7,
-0x13d7,0x806,0x13d8,0x13d8,0x806,0x13d9,0x13d9,0x806,0x13da,0x13da,0x806,0x13db,0x13db,0x806,0x13dc,0x13dc,
-0x806,0x13dd,0x13dd,0x806,0x13de,0x13de,0x806,0x13df,0x13df,0x806,0x13e0,0x13e0,0x806,0x13e1,0x13e1,0x806,
-0x13e2,0x13e2,0x806,0x13e3,0x13e3,0x806,0x13e4,0x13e4,0x806,0x13e5,0x13e5,0x806,0x13e6,0x13e6,0x806,0x13e7,
-0x13e7,0x806,0x13e8,0x13e8,0x806,0x13e9,0x13e9,0x806,0x13ea,0x13ea,0x806,0x13eb,0x13eb,0x806,0x13ec,0x13ec,
-0x806,0x13ed,0x13ed,0x806,0x13ee,0x13ee,0x806,0x13ef,0x13ef,0x880,0x2220,0x66,0x66,0x46,0x46,0x46,
-0x66,0x880,0x2220,0x66,0x69,0x46,0x49,0x46,0x69,0x880,0x2220,0x66,0x6c,0x46,0x4c,0x46,
-0x6c,0x880,0x3330,0x66,0x66,0x69,0x46,0x46,0x49,0x46,0x66,0x69,0x880,0x3330,0x66,0x66,
-0x6c,0x46,0x46,0x4c,0x46,0x66,0x6c,0x8c0,1,0x2220,0x73,0x74,0x53,0x54,0x53,0x74,
-0xfb06,0x8c0,1,0x2220,0x73,0x74,0x53,0x54,0x53,0x74,0xfb05,0x880,0x2220,0x574,0x576,0x544,
-0x546,0x544,0x576,0x880,0x2220,0x574,0x565,0x544,0x535,0x544,0x565,0x880,0x2220,0x574,0x56b,0x544,
-0x53b,0x544,0x56b,0x880,0x2220,0x57e,0x576,0x54e,0x546,0x54e,0x576,0x880,0x2220,0x574,0x56d,0x544,
-0x53d,0x544,0x56d
+0x300,0x882,0x390,0x3330,0x3b9,0x308,0x301,0x399,0x308,0x301,0x399,0x308,0x301,0x880,0x2220,0x3b9,
+0x342,0x399,0x342,0x399,0x342,0x880,0x3330,0x3b9,0x308,0x342,0x399,0x308,0x342,0x399,0x308,0x342,
+0x880,0x3330,0x3c5,0x308,0x300,0x3a5,0x308,0x300,0x3a5,0x308,0x300,0x882,0x3b0,0x3330,0x3c5,0x308,
+0x301,0x3a5,0x308,0x301,0x3a5,0x308,0x301,0x880,0x2220,0x3c1,0x313,0x3a1,0x313,0x3a1,0x313,0x880,
+0x2220,0x3c5,0x342,0x3a5,0x342,0x3a5,0x342,0x880,0x3330,0x3c5,0x308,0x342,0x3a5,0x308,0x342,0x3a5,
+0x308,0x342,0x880,0x2220,0x1f7c,0x3b9,0x1ffa,0x399,0x1ffa,0x345,0x890,9,0x220,0x3c9,0x3b9,0x3a9,
+0x399,0x880,0x2220,0x3ce,0x3b9,0x38f,0x399,0x38f,0x345,0x880,0x2220,0x3c9,0x342,0x3a9,0x342,0x3a9,
+0x342,0x880,0x3330,0x3c9,0x342,0x3b9,0x3a9,0x342,0x399,0x3a9,0x342,0x345,0xc90,9,0x220,0x3c9,
+0x3b9,0x3a9,0x399,0xc50,0x1d5d,1,0x3a9,0xc50,0x20bf,1,0x4b,0xc50,0x2046,1,0xc5,0xc10,
+0x29f7,0xc10,0xee6,0xc10,0x29e7,0xc10,0x2a2b,0xc10,0x2a28,0xc10,0x2a1c,0xc10,0x29fd,0xc10,0x2a1f,0xc10,
+0x2a1e,0xc10,0x2a3f,0xc10,0x1c60,0x841,0xa64b,1,0x1c88,0x844,0xa64a,1,0x1c88,0xc10,0x8a04,0xc10,
+0xa528,0xc10,0xa544,0xc10,0xa54f,0xc10,0xa54b,0xc10,0xa541,0xc10,0xa512,0xc10,0xa52a,0xc10,0xa515,0x810,
+0x3a0,0xc10,0xa543,0xc10,0x8a38,0xc10,0x3a0,0x806,0x13a0,0x13a0,0x806,0x13a1,0x13a1,0x806,0x13a2,0x13a2,
+0x806,0x13a3,0x13a3,0x806,0x13a4,0x13a4,0x806,0x13a5,0x13a5,0x806,0x13a6,0x13a6,0x806,0x13a7,0x13a7,0x806,
+0x13a8,0x13a8,0x806,0x13a9,0x13a9,0x806,0x13aa,0x13aa,0x806,0x13ab,0x13ab,0x806,0x13ac,0x13ac,0x806,0x13ad,
+0x13ad,0x806,0x13ae,0x13ae,0x806,0x13af,0x13af,0x806,0x13b0,0x13b0,0x806,0x13b1,0x13b1,0x806,0x13b2,0x13b2,
+0x806,0x13b3,0x13b3,0x806,0x13b4,0x13b4,0x806,0x13b5,0x13b5,0x806,0x13b6,0x13b6,0x806,0x13b7,0x13b7,0x806,
+0x13b8,0x13b8,0x806,0x13b9,0x13b9,0x806,0x13ba,0x13ba,0x806,0x13bb,0x13bb,0x806,0x13bc,0x13bc,0x806,0x13bd,
+0x13bd,0x806,0x13be,0x13be,0x806,0x13bf,0x13bf,0x806,0x13c0,0x13c0,0x806,0x13c1,0x13c1,0x806,0x13c2,0x13c2,
+0x806,0x13c3,0x13c3,0x806,0x13c4,0x13c4,0x806,0x13c5,0x13c5,0x806,0x13c6,0x13c6,0x806,0x13c7,0x13c7,0x806,
+0x13c8,0x13c8,0x806,0x13c9,0x13c9,0x806,0x13ca,0x13ca,0x806,0x13cb,0x13cb,0x806,0x13cc,0x13cc,0x806,0x13cd,
+0x13cd,0x806,0x13ce,0x13ce,0x806,0x13cf,0x13cf,0x806,0x13d0,0x13d0,0x806,0x13d1,0x13d1,0x806,0x13d2,0x13d2,
+0x806,0x13d3,0x13d3,0x806,0x13d4,0x13d4,0x806,0x13d5,0x13d5,0x806,0x13d6,0x13d6,0x806,0x13d7,0x13d7,0x806,
+0x13d8,0x13d8,0x806,0x13d9,0x13d9,0x806,0x13da,0x13da,0x806,0x13db,0x13db,0x806,0x13dc,0x13dc,0x806,0x13dd,
+0x13dd,0x806,0x13de,0x13de,0x806,0x13df,0x13df,0x806,0x13e0,0x13e0,0x806,0x13e1,0x13e1,0x806,0x13e2,0x13e2,
+0x806,0x13e3,0x13e3,0x806,0x13e4,0x13e4,0x806,0x13e5,0x13e5,0x806,0x13e6,0x13e6,0x806,0x13e7,0x13e7,0x806,
+0x13e8,0x13e8,0x806,0x13e9,0x13e9,0x806,0x13ea,0x13ea,0x806,0x13eb,0x13eb,0x806,0x13ec,0x13ec,0x806,0x13ed,
+0x13ed,0x806,0x13ee,0x13ee,0x806,0x13ef,0x13ef,0x880,0x2220,0x66,0x66,0x46,0x46,0x46,0x66,0x880,
+0x2220,0x66,0x69,0x46,0x49,0x46,0x69,0x880,0x2220,0x66,0x6c,0x46,0x4c,0x46,0x6c,0x880,
+0x3330,0x66,0x66,0x69,0x46,0x46,0x49,0x46,0x66,0x69,0x880,0x3330,0x66,0x66,0x6c,0x46,
+0x46,0x4c,0x46,0x66,0x6c,0x882,0xfb06,0x2220,0x73,0x74,0x53,0x54,0x53,0x74,0x8c0,1,
+0x2220,0x73,0x74,0x53,0x54,0x53,0x74,0xfb05,0x880,0x2220,0x574,0x576,0x544,0x546,0x544,0x576,
+0x880,0x2220,0x574,0x565,0x544,0x535,0x544,0x565,0x880,0x2220,0x574,0x56b,0x544,0x53b,0x544,0x56b,
+0x880,0x2220,0x57e,0x576,0x54e,0x546,0x54e,0x576,0x880,0x2220,0x574,0x56d,0x544,0x53d,0x544,0x56d
};
static const uint16_t ucase_props_unfold[370]={
@@ -974,14 +973,14 @@ static const uint16_t ucase_props_unfold[370]={
};
static const UCaseProps ucase_props_singleton={
- NULL,
+ nullptr,
ucase_props_indexes,
ucase_props_exceptions,
ucase_props_unfold,
{
ucase_props_trieIndex,
ucase_props_trieIndex+3412,
- NULL,
+ nullptr,
3412,
9736,
0x188,
@@ -990,7 +989,7 @@ static const UCaseProps ucase_props_singleton={
0x0,
0xe0800,
0x3358,
- NULL, 0, false, false, 0, NULL
+ nullptr, 0, false, false, 0, nullptr
},
{ 4,0,0,0 }
};
diff --git a/Build/source/libs/icu/icu-src/source/common/ucasemap.cpp b/Build/source/libs/icu/icu-src/source/common/ucasemap.cpp
index fc0439db0f6..f6a0106aecd 100644
--- a/Build/source/libs/icu/icu-src/source/common/ucasemap.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ucasemap.cpp
@@ -49,7 +49,7 @@ U_NAMESPACE_USE
UCaseMap::UCaseMap(const char *localeID, uint32_t opts, UErrorCode *pErrorCode) :
#if !UCONFIG_NO_BREAK_ITERATION
- iter(NULL),
+ iter(nullptr),
#endif
caseLocale(UCASE_LOC_UNKNOWN), options(opts) {
ucasemap_setLocale(this, localeID, pErrorCode);
@@ -64,15 +64,15 @@ UCaseMap::~UCaseMap() {
U_CAPI UCaseMap * U_EXPORT2
ucasemap_open(const char *locale, uint32_t options, UErrorCode *pErrorCode) {
if(U_FAILURE(*pErrorCode)) {
- return NULL;
+ return nullptr;
}
UCaseMap *csm = new UCaseMap(locale, options, pErrorCode);
- if(csm==NULL) {
+ if(csm==nullptr) {
*pErrorCode = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
} else if (U_FAILURE(*pErrorCode)) {
delete csm;
- return NULL;
+ return nullptr;
}
return csm;
}
@@ -97,7 +97,7 @@ ucasemap_setLocale(UCaseMap *csm, const char *locale, UErrorCode *pErrorCode) {
if(U_FAILURE(*pErrorCode)) {
return;
}
- if (locale != NULL && *locale == 0) {
+ if (locale != nullptr && *locale == 0) {
csm->locale[0] = 0;
csm->caseLocale = UCASE_LOC_ROOT;
return;
@@ -136,14 +136,14 @@ namespace {
/* append a full case mapping result, see UCASE_MAX_STRING_LENGTH */
inline UBool
-appendResult(int32_t cpLength, int32_t result, const UChar *s,
+appendResult(int32_t cpLength, int32_t result, const char16_t *s,
ByteSink &sink, uint32_t options, icu::Edits *edits, UErrorCode &errorCode) {
U_ASSERT(U_SUCCESS(errorCode));
/* decode the result */
if(result<0) {
/* (not) original code point */
- if(edits!=NULL) {
+ if(edits!=nullptr) {
edits->addUnchanged(cpLength);
}
if((options & U_OMIT_UNCHANGED_TEXT) == 0) {
@@ -292,7 +292,7 @@ void toLower(int32_t caseLocale, uint32_t options,
break;
}
// slow path
- const UChar *s;
+ const char16_t *s;
if (caseLocale >= 0) {
csc->cpStart = cpStart;
csc->cpLimit = srcIndex;
@@ -402,7 +402,7 @@ void toUpper(int32_t caseLocale, uint32_t options,
// slow path
csc->cpStart = cpStart;
csc->cpLimit = srcIndex;
- const UChar *s;
+ const char16_t *s;
c = ucase_toFullUpper(c, utf8_caseContextIterator, csc, &s, caseLocale);
if (c >= 0) {
ByteSinkUtil::appendUnchanged(src + prev, cpStart - prev,
@@ -580,7 +580,7 @@ ucasemap_internalUTF8ToTitle(
if(c>=0) {
csc.cpStart=titleStart;
csc.cpLimit=titleLimit;
- const UChar *s;
+ const char16_t *s;
c=ucase_toFullTitle(c, utf8_caseContextIterator, &csc, &s, caseLocale);
if (!appendResult(titleLimit-titleStart, c, s, sink, options, edits, errorCode)) {
return;
@@ -679,14 +679,18 @@ void toUpper(uint32_t options,
// Adding one only to the final vowel in a longer sequence
// (which does not occur in normal writing) would require lookahead.
// Set the same flag as for preserving an existing dialytika.
- if ((data & HAS_VOWEL) != 0 && (state & AFTER_VOWEL_WITH_ACCENT) != 0 &&
- (upper == 0x399 || upper == 0x3A5)) {
- data |= HAS_DIALYTIKA;
+ if ((data & HAS_VOWEL) != 0 &&
+ (state & (AFTER_VOWEL_WITH_PRECOMPOSED_ACCENT | AFTER_VOWEL_WITH_COMBINING_ACCENT)) !=
+ 0 &&
+ (upper == 0x399 || upper == 0x3A5)) {
+ data |= (state & AFTER_VOWEL_WITH_PRECOMPOSED_ACCENT) != 0 ? HAS_DIALYTIKA
+ : HAS_COMBINING_DIALYTIKA;
}
int32_t numYpogegrammeni = 0; // Map each one to a trailing, spacing, capital iota.
if ((data & HAS_YPOGEGRAMMENI) != 0) {
numYpogegrammeni = 1;
}
+ const UBool hasPrecomposedAccent = (data & HAS_ACCENT) != 0;
// Skip combining diacritics after this Greek letter.
int32_t nextNextIndex = nextIndex;
while (nextIndex < srcLength) {
@@ -704,7 +708,8 @@ void toUpper(uint32_t options,
}
}
if ((data & HAS_VOWEL_AND_ACCENT_AND_DIALYTIKA) == HAS_VOWEL_AND_ACCENT) {
- nextState |= AFTER_VOWEL_WITH_ACCENT;
+ nextState |= hasPrecomposedAccent ? AFTER_VOWEL_WITH_PRECOMPOSED_ACCENT
+ : AFTER_VOWEL_WITH_COMBINING_ACCENT;
}
// Map according to Greek rules.
UBool addTonos = false;
@@ -715,7 +720,7 @@ void toUpper(uint32_t options,
!isFollowedByCasedLetter(src, nextIndex, srcLength)) {
// Keep disjunctive "or" with (only) a tonos.
// We use the same "word boundary" conditions as for the Final_Sigma test.
- if (i == nextIndex) {
+ if (hasPrecomposedAccent) {
upper = 0x389; // Preserve the precomposed form.
} else {
addTonos = true;
@@ -757,11 +762,11 @@ void toUpper(uint32_t options,
int32_t newLength = (i2 - i) + numYpogegrammeni * 2; // 2 bytes per U+0399
change |= oldLength != newLength;
if (change) {
- if (edits != NULL) {
+ if (edits != nullptr) {
edits->addReplace(oldLength, newLength);
}
} else {
- if (edits != NULL) {
+ if (edits != nullptr) {
edits->addUnchanged(oldLength);
}
// Write unchanged text?
@@ -783,8 +788,8 @@ void toUpper(uint32_t options,
}
}
} else if(c>=0) {
- const UChar *s;
- c=ucase_toFullUpper(c, NULL, NULL, &s, UCASE_LOC_GREEK);
+ const char16_t *s;
+ c=ucase_toFullUpper(c, nullptr, nullptr, &s, UCASE_LOC_GREEK);
if (!appendResult(nextIndex - i, c, s, sink, options, edits, errorCode)) {
return;
}
@@ -891,8 +896,8 @@ ucasemap_mapUTF8(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITERATOR_P
return 0;
}
if( destCapacity<0 ||
- (dest==NULL && destCapacity>0) ||
- (src==NULL && srcLength!=0) || srcLength<-1
+ (dest==nullptr && destCapacity>0) ||
+ (src==nullptr && srcLength!=0) || srcLength<-1
) {
errorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
@@ -904,7 +909,7 @@ ucasemap_mapUTF8(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITERATOR_P
}
/* check for overlapping source and destination */
- if( dest!=NULL &&
+ if( dest!=nullptr &&
((src>=dest && src<(dest+destCapacity)) ||
(dest>=src && dest<(src+srcLength)))
) {
@@ -940,7 +945,7 @@ ucasemap_utf8ToLower(const UCaseMap *csm,
csm->caseLocale, csm->options, UCASEMAP_BREAK_ITERATOR_NULL
dest, destCapacity,
src, srcLength,
- ucasemap_internalUTF8ToLower, NULL, *pErrorCode);
+ ucasemap_internalUTF8ToLower, nullptr, *pErrorCode);
}
U_CAPI int32_t U_EXPORT2
@@ -952,7 +957,7 @@ ucasemap_utf8ToUpper(const UCaseMap *csm,
csm->caseLocale, csm->options, UCASEMAP_BREAK_ITERATOR_NULL
dest, destCapacity,
src, srcLength,
- ucasemap_internalUTF8ToUpper, NULL, *pErrorCode);
+ ucasemap_internalUTF8ToUpper, nullptr, *pErrorCode);
}
U_CAPI int32_t U_EXPORT2
@@ -964,7 +969,7 @@ ucasemap_utf8FoldCase(const UCaseMap *csm,
UCASE_LOC_ROOT, csm->options, UCASEMAP_BREAK_ITERATOR_NULL
dest, destCapacity,
src, srcLength,
- ucasemap_internalUTF8Fold, NULL, *pErrorCode);
+ ucasemap_internalUTF8Fold, nullptr, *pErrorCode);
}
U_NAMESPACE_BEGIN
diff --git a/Build/source/libs/icu/icu-src/source/common/ucasemap_imp.h b/Build/source/libs/icu/icu-src/source/common/ucasemap_imp.h
index e17a0ae5a36..bc83c6bd788 100644
--- a/Build/source/libs/icu/icu-src/source/common/ucasemap_imp.h
+++ b/Build/source/libs/icu/icu-src/source/common/ucasemap_imp.h
@@ -139,16 +139,16 @@ ustrcase_getCaseLocale(const char *locale);
/** Implements UStringCaseMapper. */
U_CFUNC int32_t U_CALLCONV
ustrcase_internalToLower(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITERATOR_PARAM
- UChar *dest, int32_t destCapacity,
- const UChar *src, int32_t srcLength,
+ char16_t *dest, int32_t destCapacity,
+ const char16_t *src, int32_t srcLength,
icu::Edits *edits,
UErrorCode &errorCode);
/** Implements UStringCaseMapper. */
U_CFUNC int32_t U_CALLCONV
ustrcase_internalToUpper(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITERATOR_PARAM
- UChar *dest, int32_t destCapacity,
- const UChar *src, int32_t srcLength,
+ char16_t *dest, int32_t destCapacity,
+ const char16_t *src, int32_t srcLength,
icu::Edits *edits,
UErrorCode &errorCode);
@@ -158,8 +158,8 @@ ustrcase_internalToUpper(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_IT
U_CFUNC int32_t U_CALLCONV
ustrcase_internalToTitle(int32_t caseLocale, uint32_t options,
icu::BreakIterator *iter,
- UChar *dest, int32_t destCapacity,
- const UChar *src, int32_t srcLength,
+ char16_t *dest, int32_t destCapacity,
+ const char16_t *src, int32_t srcLength,
icu::Edits *edits,
UErrorCode &errorCode);
@@ -168,8 +168,8 @@ ustrcase_internalToTitle(int32_t caseLocale, uint32_t options,
/** Implements UStringCaseMapper. */
U_CFUNC int32_t U_CALLCONV
ustrcase_internalFold(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITERATOR_PARAM
- UChar *dest, int32_t destCapacity,
- const UChar *src, int32_t srcLength,
+ char16_t *dest, int32_t destCapacity,
+ const char16_t *src, int32_t srcLength,
icu::Edits *edits,
UErrorCode &errorCode);
@@ -179,8 +179,8 @@ ustrcase_internalFold(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITERA
*/
U_CFUNC int32_t
ustrcase_map(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITERATOR_PARAM
- UChar *dest, int32_t destCapacity,
- const UChar *src, int32_t srcLength,
+ char16_t *dest, int32_t destCapacity,
+ const char16_t *src, int32_t srcLength,
UStringCaseMapper *stringCaseMapper,
icu::Edits *edits,
UErrorCode &errorCode);
@@ -192,8 +192,8 @@ ustrcase_map(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITERATOR_PARAM
*/
U_CFUNC int32_t
ustrcase_mapWithOverlap(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITERATOR_PARAM
- UChar *dest, int32_t destCapacity,
- const UChar *src, int32_t srcLength,
+ char16_t *dest, int32_t destCapacity,
+ const char16_t *src, int32_t srcLength,
UStringCaseMapper *stringCaseMapper,
UErrorCode &errorCode);
@@ -263,7 +263,8 @@ static const uint32_t HAS_EITHER_DIALYTIKA = HAS_DIALYTIKA | HAS_COMBINING_DIALY
// State bits.
static const uint32_t AFTER_CASED = 1;
-static const uint32_t AFTER_VOWEL_WITH_ACCENT = 2;
+static const uint32_t AFTER_VOWEL_WITH_COMBINING_ACCENT = 2;
+static const uint32_t AFTER_VOWEL_WITH_PRECOMPOSED_ACCENT = 4;
uint32_t getLetterData(UChar32 c);
diff --git a/Build/source/libs/icu/icu-src/source/common/ucasemap_titlecase_brkiter.cpp b/Build/source/libs/icu/icu-src/source/common/ucasemap_titlecase_brkiter.cpp
index c21dfb7698a..c2b44a2c788 100644
--- a/Build/source/libs/icu/icu-src/source/common/ucasemap_titlecase_brkiter.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ucasemap_titlecase_brkiter.cpp
@@ -66,7 +66,7 @@ int32_t CaseMap::utf8ToTitle(
utext_openUTF8(&utext, src, srcLength, &errorCode);
LocalPointer<BreakIterator> ownedIter;
iter = ustrcase_getTitleBreakIterator(nullptr, locale, options, iter, ownedIter, errorCode);
- if(iter==NULL) {
+ if(iter==nullptr) {
utext_close(&utext);
return 0;
}
@@ -111,7 +111,7 @@ ucasemap_utf8ToTitle(UCaseMap *csm,
if (U_FAILURE(*pErrorCode)) {
return 0;
}
- if(csm->iter==NULL) {
+ if(csm->iter==nullptr) {
LocalPointer<BreakIterator> ownedIter;
BreakIterator *iter = ustrcase_getTitleBreakIterator(
nullptr, csm->locale, csm->options, nullptr, ownedIter, *pErrorCode);
@@ -126,7 +126,7 @@ ucasemap_utf8ToTitle(UCaseMap *csm,
csm->caseLocale, csm->options, csm->iter,
dest, destCapacity,
src, srcLength,
- ucasemap_internalUTF8ToTitle, NULL, *pErrorCode);
+ ucasemap_internalUTF8ToTitle, nullptr, *pErrorCode);
utext_close(&utext);
return length;
}
diff --git a/Build/source/libs/icu/icu-src/source/common/ucat.cpp b/Build/source/libs/icu/icu-src/source/common/ucat.cpp
index dac56eeb5ce..2f7fdcd980c 100644
--- a/Build/source/libs/icu/icu-src/source/common/ucat.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ucat.cpp
@@ -43,18 +43,18 @@ u_catopen(const char* name, const char* locale, UErrorCode* ec) {
U_CAPI void U_EXPORT2
u_catclose(u_nl_catd catd) {
- ures_close((UResourceBundle*) catd); /* may be NULL */
+ ures_close((UResourceBundle*) catd); /* may be nullptr */
}
-U_CAPI const UChar* U_EXPORT2
+U_CAPI const char16_t* U_EXPORT2
u_catgets(u_nl_catd catd, int32_t set_num, int32_t msg_num,
- const UChar* s,
+ const char16_t* s,
int32_t* len, UErrorCode* ec) {
char key[MAX_KEY_LEN];
- const UChar* result;
+ const char16_t* result;
- if (ec == NULL || U_FAILURE(*ec)) {
+ if (ec == nullptr || U_FAILURE(*ec)) {
goto ERROR;
}
@@ -69,7 +69,7 @@ u_catgets(u_nl_catd catd, int32_t set_num, int32_t msg_num,
ERROR:
/* In case of any failure, return s */
- if (len != NULL) {
+ if (len != nullptr) {
*len = u_strlen(s);
}
return s;
diff --git a/Build/source/libs/icu/icu-src/source/common/uchar.cpp b/Build/source/libs/icu/icu-src/source/common/uchar.cpp
index 7789a3b88a6..ff12962baa5 100644
--- a/Build/source/libs/icu/icu-src/source/common/uchar.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/uchar.cpp
@@ -76,7 +76,7 @@ U_CAPI void U_EXPORT2
u_enumCharTypes(UCharEnumTypeRange *enumRange, const void *context) {
struct _EnumTypeCallback callback;
- if(enumRange==NULL) {
+ if(enumRange==nullptr) {
return;
}
@@ -304,30 +304,6 @@ u_ispunct(UChar32 c) {
return (UBool)((CAT_MASK(props)&U_GC_P_MASK)!=0);
}
-/* Checks if the Unicode character can start a Unicode identifier.*/
-U_CAPI UBool U_EXPORT2
-u_isIDStart(UChar32 c) {
- /* same as u_isalpha() */
- uint32_t props;
- GET_PROPS(c, props);
- return (UBool)((CAT_MASK(props)&(U_GC_L_MASK|U_GC_NL_MASK))!=0);
-}
-
-/* Checks if the Unicode character can be a Unicode identifier part other than starting the
- identifier.*/
-U_CAPI UBool U_EXPORT2
-u_isIDPart(UChar32 c) {
- uint32_t props;
- GET_PROPS(c, props);
- return (UBool)(
- (CAT_MASK(props)&
- (U_GC_ND_MASK|U_GC_NL_MASK|
- U_GC_L_MASK|
- U_GC_PC_MASK|U_GC_MC_MASK|U_GC_MN_MASK)
- )!=0 ||
- u_isIDIgnorable(c));
-}
-
/*Checks if the Unicode character can be ignorable in a Java or Unicode identifier.*/
U_CAPI UBool U_EXPORT2
u_isIDIgnorable(UChar32 c) {
@@ -509,7 +485,7 @@ u_forDigit(int32_t digit, int8_t radix) {
U_CAPI void U_EXPORT2
u_getUnicodeVersion(UVersionInfo versionArray) {
- if(versionArray!=NULL) {
+ if(versionArray!=nullptr) {
uprv_memcpy(versionArray, dataVersion, U_MAX_VERSION_LENGTH);
}
}
@@ -546,7 +522,7 @@ uprv_getMaxValues(int32_t column) {
U_CAPI void U_EXPORT2
u_charAge(UChar32 c, UVersionInfo versionArray) {
- if(versionArray!=NULL) {
+ if(versionArray!=nullptr) {
uint32_t version=u_getUnicodeProperties(c, 0)>>UPROPS_AGE_SHIFT;
versionArray[0]=(uint8_t)(version>>4);
versionArray[1]=(uint8_t)(version&0xf);
@@ -556,7 +532,7 @@ u_charAge(UChar32 c, UVersionInfo versionArray) {
U_CAPI UScriptCode U_EXPORT2
uscript_getScript(UChar32 c, UErrorCode *pErrorCode) {
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return USCRIPT_INVALID_CODE;
}
if((uint32_t)c>0x10ffff) {
@@ -577,7 +553,7 @@ uscript_getScript(UChar32 c, UErrorCode *pErrorCode) {
}
U_CAPI UBool U_EXPORT2
-uscript_hasScript(UChar32 c, UScriptCode sc) {
+uscript_hasScript(UChar32 c, UScriptCode sc) UPRV_NO_SANITIZE_UNDEFINED {
uint32_t scriptX=u_getUnicodeProperties(c, 0)&UPROPS_SCRIPT_X_MASK;
uint32_t codeOrIndex=uprops_mergeScriptCodeOrIndex(scriptX);
if(scriptX<UPROPS_SCRIPT_X_WITH_COMMON) {
@@ -603,10 +579,10 @@ U_CAPI int32_t U_EXPORT2
uscript_getScriptExtensions(UChar32 c,
UScriptCode *scripts, int32_t capacity,
UErrorCode *pErrorCode) {
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return 0;
}
- if(capacity<0 || (capacity>0 && scripts==NULL)) {
+ if(capacity<0 || (capacity>0 && scripts==nullptr)) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -666,7 +642,7 @@ uchar_addPropertyStarts(const USetAdder *sa, UErrorCode *pErrorCode) {
}
/* add the start code point of each same-value range of the main trie */
- utrie2_enum(&propsTrie, NULL, _enumPropertyStartsRange, sa);
+ utrie2_enum(&propsTrie, nullptr, _enumPropertyStartsRange, sa);
/* add code points with hardcoded properties, plus the ones following them */
@@ -728,5 +704,5 @@ upropsvec_addPropertyStarts(const USetAdder *sa, UErrorCode *pErrorCode) {
}
/* add the start code point of each same-value range of the properties vectors trie */
- utrie2_enum(&propsVectorsTrie, NULL, _enumPropertyStartsRange, sa);
+ utrie2_enum(&propsVectorsTrie, nullptr, _enumPropertyStartsRange, sa);
}
diff --git a/Build/source/libs/icu/icu-src/source/common/uchar_props_data.h b/Build/source/libs/icu/icu-src/source/common/uchar_props_data.h
index acbeadd249b..03242239753 100644
--- a/Build/source/libs/icu/icu-src/source/common/uchar_props_data.h
+++ b/Build/source/libs/icu/icu-src/source/common/uchar_props_data.h
@@ -9,9 +9,9 @@
#ifdef INCLUDED_FROM_UCHAR_C
-static const UVersionInfo dataVersion={0xf,0,0,0};
+static const UVersionInfo dataVersion={0xf,1,0,0};
-static const uint16_t propsTrie_index[23016]={
+static const uint16_t propsTrie_index[23156]={
0x495,0x49d,0x4a5,0x4ad,0x4c5,0x4cd,0x4d5,0x4dd,0x4e5,0x4ed,0x4f3,0x4fb,0x503,0x50b,0x513,0x51b,
0x521,0x529,0x531,0x539,0x53c,0x544,0x54c,0x554,0x55c,0x564,0x560,0x568,0x570,0x578,0x57d,0x585,
0x58d,0x595,0x599,0x5a1,0x5a9,0x5b1,0x5b9,0x5c1,0x5bd,0x5c5,0x5ca,0x5d2,0x5d8,0x5e0,0x5e8,0x5f0,
@@ -51,53 +51,57 @@ static const uint16_t propsTrie_index[23016]={
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x934,0x934,
-0xc2e,0x600,0xc31,0x600,0xc39,0xc3f,0xc47,0xc4f,0xc54,0x600,0x600,0xc58,0x600,0x600,0x600,0x600,
-0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0xc5f,0x600,0xc66,0xc6c,0x600,0x600,0x600,0x600,
-0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0xc74,0x600,0x600,0x600,0xc7c,0x600,
+0xc2e,0xc35,0xc37,0x600,0xc3f,0xc45,0xc4d,0xc55,0xc5a,0x600,0x600,0xc5e,0x600,0x600,0x600,0xc64,
+0xc6b,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0xc72,0x600,0xc79,0xc7f,0x600,0x600,0x600,0x600,
+0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0xc87,0x600,0x600,0x600,0xc8f,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
-0x600,0x600,0x600,0x600,0x600,0x600,0xc7e,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
-0x600,0x600,0x600,0x600,0x600,0x600,0x600,0xc85,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
+0x600,0x600,0x600,0x600,0x600,0x600,0xc91,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
+0x600,0x600,0x600,0x600,0x600,0x600,0x600,0xc98,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
-0x600,0x600,0x600,0xc8c,0x600,0x600,0x600,0xc93,0xc9b,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
+0x600,0x600,0x600,0xc9f,0x600,0x600,0x600,0xca6,0xcae,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
-0x600,0x600,0x600,0x600,0x600,0x600,0x600,0xca0,0x600,0x600,0xca8,0x600,0x600,0x600,0x600,0x600,
+0x600,0x600,0x600,0x600,0x600,0x600,0xcb3,0xcb8,0x600,0x600,0xcc0,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
-0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0xcac,0x600,
+0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0xcc4,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
+0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0xcc9,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
+0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0xcc7,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
-0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0xcaf,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
+0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0xcd1,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
-0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0xcb2,0x600,0x600,0x600,
+0x600,0x600,0x600,0xcd7,0xcdf,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
+0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0xce5,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
-0x600,0x600,0x600,0xcb8,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
+0x600,0x600,0x600,0x600,0xcec,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
+0x600,0xcf1,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
-0x600,0x600,0x600,0x600,0xcc0,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
-0x600,0xcc5,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
+0x600,0x600,0x600,0x600,0x600,0xcf6,0x600,0x600,0x600,0xc32,0x600,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
-0x600,0x600,0x600,0x600,0x600,0xcca,0x600,0x600,0x600,0xccf,0x600,0x600,0x600,0x600,0x600,0x600,
+0xcd3,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
+0x600,0x600,0x600,0x600,0x600,0xcfc,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
+0x600,0xd04,0xd0b,0xd0f,0x600,0x600,0x600,0xccb,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
-0x600,0xcd7,0xcde,0xce2,0x600,0x600,0x600,0xce9,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
+0xd1e,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
+0x600,0x600,0x600,0x600,0xd16,0x934,0xd26,0x9ad,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
+0xd2b,0xd33,0x4e5,0xd43,0xd3b,0x600,0x600,0xd4b,0xd53,0xd63,0x4e5,0xd68,0xd70,0xd76,0xd7d,0xd5b,
+0xd85,0xd8d,0x600,0xd95,0xda5,0xda8,0xd9d,0xdb0,0x655,0xdb8,0xdbf,0x8f6,0x6a3,0xdcf,0xdc7,0xdd7,
+0x600,0xddf,0xde7,0xdef,0x600,0xdf7,0xdff,0xe07,0xe0f,0xe17,0xe1b,0xe23,0x535,0x535,0x600,0xe2b,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
-0xcf7,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
-0x600,0x600,0x600,0x600,0xcef,0x934,0xcff,0x9ad,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
-0xd04,0xd0c,0x4e5,0xd1c,0xd14,0x600,0x600,0xd24,0xd2c,0xd3c,0x4e5,0xd41,0xd49,0xd4f,0xd56,0xd34,
-0xd5e,0xd66,0x600,0xd6e,0xd7e,0xd81,0xd76,0xd89,0x655,0xd91,0xd98,0x8f6,0x6a3,0xda8,0xda0,0xdb0,
-0x600,0xdb8,0xdc0,0xdc8,0x600,0xdd0,0xdd8,0xde0,0xde8,0xdf0,0xdf4,0xdfc,0x535,0x535,0x600,0xe04,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
@@ -115,33 +119,29 @@ static const uint16_t propsTrie_index[23016]={
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
-0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
-0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
-0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
-0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
-0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0xe0c,0xe18,0xe10,
+0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0xe33,0xe3f,0xe37,
0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
-0xe20,0xe20,0xe20,0xe20,0xe20,0xe20,0xe20,0xe20,0xe20,0xe20,0xe20,0xe20,0xe20,0xe20,0xe20,0xe20,
-0xe20,0xe20,0xe20,0xe20,0xe20,0xe20,0xe20,0xe20,0xe20,0xe20,0xe20,0xe20,0xe20,0xe20,0xe20,0xe20,
-0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,
-0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,
-0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,
-0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,
-0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,
-0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,
-0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,
-0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,
-0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,
-0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,
-0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,
-0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,
-0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0x600,0x600,0x600,0xe30,0x600,0xcea,0xe37,0xe3c,
-0x600,0x600,0x600,0xe44,0x600,0x600,0x901,0x4b5,0xe5a,0xe4a,0xe52,0x600,0x600,0xe62,0xe6a,0x600,
-0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0xe6f,0x938,0x600,0xe77,0x600,0xe7d,0xe81,
-0xe89,0xe91,0xe98,0xea0,0x600,0x600,0x600,0xea6,0xebe,0x4a5,0xec6,0xece,0xed3,0x916,0xeae,0xeb6,
-0xe20,0xe20,0xe20,0xe20,0xe20,0xe20,0xe20,0xe20,0xe20,0xe20,0xe20,0xe20,0xe20,0xe20,0xe20,0xe20,
-0xe20,0xe20,0xe20,0xe20,0xe20,0xe20,0xe20,0xe20,0xe20,0xe20,0xe20,0xe20,0xe20,0xe20,0xe20,0xe20,
+0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,
+0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,
+0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,
+0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,
+0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,
+0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,
+0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,
+0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,
+0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,
+0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,
+0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,
+0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,
+0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,
+0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,
+0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0x600,0x600,0x600,0xe57,0x600,0xccc,0xe5e,0xe63,
+0x600,0x600,0x600,0xe6b,0x600,0x600,0x901,0x4b5,0xe81,0xe71,0xe79,0x600,0x600,0xe89,0xe91,0x600,
+0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0xe96,0x938,0x600,0xe9e,0x600,0xea4,0xea8,
+0xeb0,0xeb8,0xebf,0xec7,0x600,0x600,0x600,0xecd,0xee5,0x4a5,0xeed,0xef5,0xefa,0x916,0xed5,0xedd,
+0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,
+0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,0xe47,
0x12d4,0x12d4,0x1314,0x1354,0x1394,0x13cc,0x140c,0x144c,0x1484,0x14c4,0x14f0,0x1530,0x1570,0x1580,0x15c0,0x15f4,
0x1634,0x1664,0x16a4,0x16e4,0x16f4,0x1728,0x1760,0x17a0,0x17e0,0x1820,0x1854,0x1880,0x18c0,0x18f8,0x1914,0x1954,
0xa80,0xac0,0xb00,0xb40,0xb80,0xbab,0xbeb,0xa40,0xc0e,0xa40,0xa40,0xa40,0xa40,0xc4e,0x1db,0x1db,
@@ -180,132 +180,132 @@ static const uint16_t propsTrie_index[23016]={
0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
-0xedb,0xee2,0xeea,0x4b5,0x600,0x600,0x600,0xef2,0xf02,0xefa,0xf19,0xf0a,0xf11,0xf21,0xf25,0xf29,
-0x4b5,0x4b5,0x4b5,0x4b5,0x8f6,0x600,0xf31,0xf39,0x600,0xf41,0xf49,0xf4d,0xf55,0x600,0xf5d,0x4b5,
-0x58d,0x597,0xf65,0x600,0xf69,0xf71,0xf81,0xf79,0x600,0xf89,0x600,0xf90,0xfa0,0xf98,0x4b5,0x4b5,
-0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0xb88,0x902,0xfa8,0xfb8,0xfb0,0x4b5,0x4b5,
-0xfc8,0xfc0,0xfcb,0xfd3,0x916,0xfdb,0x4b5,0xfe3,0xfeb,0xff3,0x4b5,0x4b5,0x600,0x1003,0x100b,0xffb,
-0x101b,0x1022,0x1013,0x102a,0x1032,0x4b5,0x1042,0x103a,0x600,0x1045,0x104d,0x1055,0x105d,0x1065,0x4b5,0x4b5,
-0x600,0x600,0x106d,0x4b5,0x58d,0x1075,0x535,0x107d,0x600,0x1085,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
-0x4b5,0x4b5,0x4b5,0x108d,0x600,0x1095,0x4b5,0x109a,0x10a2,0x10aa,0x10b1,0xfdf,0x10b9,0xfdf,0x10c1,0xb88,
-0x10d1,0x636,0x10d9,0x10c9,0x98f,0x10e1,0x10e9,0x10ef,0x1107,0x10f7,0x10ff,0x110b,0x98f,0x111b,0x1113,0x1123,
-0x113b,0x112b,0x1133,0x4b5,0x1142,0x114a,0x658,0x1152,0x1162,0x1168,0x1170,0x115a,0x4b5,0x4b5,0x4b5,0x4b5,
-0x600,0x1178,0x1180,0x1099,0x600,0x1188,0x1190,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x600,0x1198,0x11a0,0x4b5,
-0x600,0x11a8,0x11b0,0x11b8,0x600,0x11c8,0x11c0,0x4b5,0x870,0x11d0,0x11d8,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
-0x600,0x11e0,0x4b5,0x4b5,0x4b5,0x58d,0x535,0x11e8,0x11f8,0x11fe,0x11f0,0x4b5,0x4b5,0x120e,0x1212,0x1206,
-0x122a,0x121a,0x1222,0x600,0x1238,0x1232,0x600,0x8f7,0x1248,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
-0x1256,0x125b,0x1240,0x1250,0x126b,0x1263,0x4b5,0x4b5,0x127a,0x127e,0x1272,0x128e,0x1286,0x11c0,0x4b5,0x4b5,
-0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x1292,0x12a2,0x12a7,0x129a,0x4b5,0x4b5,0x12af,0x12bf,0x12b7,
+0xf02,0xf09,0xf11,0x4b5,0x600,0x600,0x600,0xf19,0xf29,0xf21,0xf40,0xf31,0xf38,0xf48,0xbbd,0xf50,
+0x4b5,0x4b5,0x4b5,0x4b5,0x8f6,0x600,0xf58,0xf60,0x600,0xf68,0xf70,0xf74,0xf7c,0x600,0xf84,0x4b5,
+0x58d,0x597,0xf8c,0x600,0xf90,0xf98,0xfa8,0xfa0,0x600,0xfb0,0x600,0xfb7,0xfc7,0xfbf,0x4b5,0x4b5,
+0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0xb88,0x902,0xfcf,0xfdf,0xfd7,0x4b5,0x4b5,
+0xfef,0xfe7,0xff2,0xffa,0x916,0x1002,0x4b5,0x100a,0x1012,0x101a,0x4b5,0x4b5,0x600,0x102a,0x1032,0x1022,
+0x1042,0x1049,0x103a,0x1051,0x1059,0x4b5,0x1069,0x1061,0x600,0x106c,0x1074,0x107c,0x1084,0x108c,0x4b5,0x4b5,
+0x600,0x600,0x1094,0x4b5,0x58d,0x109c,0x535,0x10a4,0x600,0x10ac,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
+0x4b5,0x4b5,0x4b5,0x10b4,0x600,0x10bc,0x4b5,0x10c1,0x10c9,0x10d1,0x10d8,0x1006,0x10e0,0x1006,0x10e8,0xb88,
+0x10f8,0x636,0x1100,0x10f0,0x98f,0x1108,0x1110,0x1116,0x112e,0x111e,0x1126,0x1132,0x98f,0x1142,0x113a,0x114a,
+0x1162,0x1152,0x115a,0x4b5,0x1169,0x1171,0x658,0x1179,0x1189,0x118f,0x1197,0x1181,0x4b5,0x4b5,0x4b5,0x4b5,
+0x600,0x119f,0x11a7,0x10c0,0x600,0x11af,0x11b7,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x600,0x11bf,0x11c7,0x4b5,
+0x600,0x11cf,0x11d7,0x11df,0x600,0x11ef,0x11e7,0x4b5,0x870,0x11f7,0x11ff,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
+0x600,0x1207,0x4b5,0x4b5,0x4b5,0x58d,0x535,0x120f,0x121f,0x1225,0x1217,0x4b5,0x4b5,0x1235,0x1239,0x122d,
+0x1251,0x1241,0x1249,0x600,0x125f,0x1259,0x600,0x8f7,0x126f,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
+0x127d,0x1282,0x1267,0x1277,0x1292,0x128a,0x4b5,0x4b5,0x12a1,0x12a5,0x1299,0x12b5,0x12ad,0x11e7,0x4b5,0x4b5,
+0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x12b9,0x12c9,0x12ce,0x12c1,0x4b5,0x4b5,0x12d6,0x12e6,0x12de,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x901,0x4b5,0x4b5,0x4b5,
-0x12cf,0x12d7,0x12df,0x12c7,0x600,0x600,0x600,0x600,0x600,0x600,0x12e7,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
+0x12f6,0x12fe,0x1306,0x12ee,0x600,0x600,0x600,0x600,0x600,0x600,0x130e,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
-0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0xfdf,0x600,0x600,0x12ef,0x600,0x600,0x600,0x600,0x600,
+0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x1006,0x600,0x600,0x1316,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
-0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x12f7,0x12ff,0x4b5,0x4b5,
+0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x131e,0x1326,0x4b5,0x4b5,
0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
-0x11d8,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x600,0x600,
+0x11ff,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x8f7,
-0x916,0xda4,0x600,0x916,0x1307,0x130c,0x600,0x131c,0x1324,0x132c,0x1314,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
+0x916,0xdcb,0x600,0x916,0x132e,0x1333,0x600,0x1343,0x134b,0x1353,0x133b,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
-0x58d,0x535,0x1334,0x4b5,0x4b5,0x4b5,0x600,0x600,0x133c,0x1341,0x1347,0x4b5,0x4b5,0x134f,0x600,0x600,
+0x58d,0x535,0x135b,0x4b5,0x4b5,0x4b5,0x600,0x600,0x1363,0x1368,0x136e,0x4b5,0x4b5,0x1376,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
-0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x1357,0x600,0x600,
+0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x137e,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
-0x600,0x600,0x600,0x600,0x902,0x4b5,0x106d,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
+0x600,0x600,0x600,0x600,0x902,0x4b5,0x1094,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
-0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x135d,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
-0x1365,0x136a,0x1371,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0xe10,0x4b5,
+0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x1384,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
+0x138c,0x1391,0x1398,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0xe37,0x4b5,
0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
-0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x600,0x600,0x600,0x1377,0x137c,0x1384,0x4b5,0x4b5,0x4b5,
+0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x600,0x600,0x600,0x139e,0x13a3,0x13ab,0x4b5,0x4b5,0x4b5,
0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
-0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x55c,0x1394,0x139b,0x934,0x934,0x934,0x138c,0x4b5,0x934,0x934,0x934,
-0x934,0x934,0x934,0x934,0xbb7,0x934,0x13a2,0x934,0x13a9,0x13b1,0x13b7,0x934,0xade,0x934,0x934,0x13bf,
-0x4b5,0x4b5,0x4b5,0x13c7,0x13c7,0x934,0x934,0xadb,0x13cf,0x4b5,0x4b5,0x4b5,0x4b5,0x13df,0x13e6,0x13eb,
-0x13f1,0x13f9,0x1401,0x1409,0x13e3,0x1411,0x1419,0x1421,0x1426,0x13f8,0x13df,0x13e6,0x13e2,0x13f1,0x142e,0x13e0,
-0x1431,0x13e3,0x1439,0x1441,0x1449,0x1450,0x143c,0x1444,0x144c,0x1453,0x143f,0x145b,0x13d7,0x934,0x934,0x934,
-0x934,0x934,0x934,0x934,0x934,0x934,0x934,0x934,0x934,0x934,0x934,0x934,0x934,0x55c,0x146b,0x55c,
-0x1472,0x1479,0x1463,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
+0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x55c,0x13bb,0x13c2,0x934,0x934,0x934,0x13b3,0x4b5,0x934,0x934,0x934,
+0x934,0x934,0x934,0x934,0xbb7,0x934,0x13c9,0x934,0x13d0,0x13d8,0x13de,0x934,0xade,0x934,0x934,0x13e6,
+0x4b5,0x4b5,0x4b5,0x13ee,0x13ee,0x934,0x934,0xadb,0x13f6,0x4b5,0x4b5,0x4b5,0x4b5,0x1406,0x140d,0x1412,
+0x1418,0x1420,0x1428,0x1430,0x140a,0x1438,0x1440,0x1448,0x144d,0x141f,0x1406,0x140d,0x1409,0x1418,0x1455,0x1407,
+0x1458,0x140a,0x1460,0x1468,0x1470,0x1477,0x1463,0x146b,0x1473,0x147a,0x1466,0x1482,0x13fe,0x934,0x934,0x934,
+0x934,0x934,0x934,0x934,0x934,0x934,0x934,0x934,0x934,0x934,0x934,0x934,0x934,0x55c,0x1492,0x55c,
+0x1499,0x14a0,0x148a,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
-0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x1488,0x1490,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x1480,0x1498,0x9d4,
-0x14a8,0x14a0,0x4b5,0x4b5,0x4b5,0x600,0x14b8,0x14b0,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
-0x4b5,0xfdf,0x14c0,0x600,0x14c8,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
-0x4b5,0x4b5,0x4b5,0xfdf,0x14d0,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
-0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x14d8,0x600,0x600,0x600,
-0x600,0x600,0x600,0x14e0,0x4b5,0x58d,0x14f0,0x14e8,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
+0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x14af,0x14b7,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x14a7,0x14bf,0x9d4,
+0x14cf,0x14c7,0x4b5,0x4b5,0x4b5,0x600,0x14df,0x14d7,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
+0x4b5,0x1006,0x14e7,0x600,0x14ef,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
+0x4b5,0x4b5,0x4b5,0x1006,0x14f7,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
+0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x14ff,0x600,0x600,0x600,
+0x600,0x600,0x600,0x1507,0x4b5,0x58d,0x1517,0x150f,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
-0x14f8,0x1508,0x1500,0x4b5,0x4b5,0x1518,0x1510,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x1528,0x1530,0x1538,
-0x1540,0x1548,0x1550,0x4b5,0x1520,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x934,0x1558,0x934,
-0x934,0xbaf,0x13a0,0x1560,0xbb7,0x1568,0x934,0x934,0x934,0x934,0xbb9,0x4b5,0x1570,0x1578,0x157c,0x1584,
-0x158c,0x4b5,0x4b5,0x4b5,0x4b5,0x934,0x934,0x934,0x934,0x934,0x934,0x934,0x1594,0x934,0x934,0x934,
+0x151f,0x152f,0x1527,0x4b5,0x4b5,0x153f,0x1537,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x154f,0x1557,0x155f,
+0x1567,0x156f,0x1577,0x4b5,0x1547,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x934,0x157f,0x934,
+0x934,0xbaf,0x13c7,0x1587,0xbb7,0x158f,0x934,0x934,0x934,0x934,0xbb9,0x4b5,0x1597,0x159f,0x15a3,0x15ab,
+0x15b3,0x4b5,0x4b5,0x4b5,0x4b5,0x934,0x934,0x934,0x934,0x934,0x934,0x934,0x15bb,0x934,0x934,0x934,
0x934,0x934,0x934,0x934,0x934,0x934,0x934,0x934,0x934,0x934,0x934,0x934,0x934,0x934,0x934,0x934,
-0x934,0x934,0x934,0x157d,0x159c,0x934,0x934,0x934,0x15a4,0x934,0x934,0x15ab,0x15b3,0x1558,0x934,0x15bb,
-0x934,0x15c3,0x15c8,0x4b5,0x4b5,0x934,0x934,0x934,0x934,0x934,0x934,0x934,0x934,0x934,0x934,0xbaf,
-0x15d0,0x15d9,0x15dd,0x15e5,0x15d5,0x934,0x934,0x934,0x934,0x15ed,0x934,0xade,0x11bc,0x4b5,0x4b5,0x4b5,
+0x934,0x934,0x934,0x15a4,0x15c3,0x934,0x934,0x934,0x15cb,0x934,0x934,0x15d2,0x15da,0x157f,0x934,0x15e2,
+0x934,0x15ea,0x15ef,0x4b5,0x4b5,0x934,0x934,0x934,0x934,0x934,0x934,0x934,0x934,0x934,0x934,0xbaf,
+0x15f7,0x1600,0x1604,0x160c,0x15fc,0x934,0x934,0x934,0x934,0x1614,0x934,0xade,0x11e3,0x4b5,0x4b5,0x4b5,
0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
-0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x15f5,0x600,0x600,
-0x15fc,0x600,0x600,0x600,0x1604,0x600,0x160c,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
+0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x161c,0x600,0x600,
+0x1623,0x600,0x600,0x600,0x162b,0x600,0x1633,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
-0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0xc90,0x600,0x600,
-0x1614,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x161c,0x1624,0x600,0x600,0x600,
+0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0xca3,0x600,0x600,
+0x163b,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x1643,0x164b,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
-0x600,0x600,0x600,0x600,0xccf,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
+0x600,0x600,0x600,0x600,0xc32,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
-0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x162b,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
+0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x1652,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
-0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x1632,0x600,0x600,0x600,
+0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x1659,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
-0x600,0x600,0x600,0x600,0x1639,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
+0x600,0x600,0x600,0x600,0x1660,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x4b5,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
-0x600,0x600,0x600,0x600,0x600,0x600,0x901,0x600,0x600,0x600,0x600,0x600,0x600,0xf69,0x600,0x600,
+0x600,0x600,0x600,0x600,0x600,0x600,0x901,0x600,0x600,0x600,0x600,0x600,0x600,0xf90,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
-0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x1641,0x600,0x600,
+0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x1668,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
-0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x1649,0x4b5,0x4b5,
-0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
-0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x600,0x600,
-0x600,0x600,0x1651,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0xf69,0x4b5,
+0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x1670,0x600,0x600,
+0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
+0xf90,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x600,0x600,
+0x600,0x600,0x1674,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0xf90,0x4b5,
0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x67d,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,
-0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x1314,0x4b5,
+0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x133b,0x4b5,
0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
-0x4b5,0x1661,0x1659,0x1659,0x1659,0x4b5,0x4b5,0x4b5,0x4b5,0x55c,0x55c,0x55c,0x55c,0x55c,0x55c,0x55c,
-0x1669,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
+0x4b5,0x1684,0x167c,0x167c,0x167c,0x4b5,0x4b5,0x4b5,0x4b5,0x55c,0x55c,0x55c,0x55c,0x55c,0x55c,0x55c,
+0x168c,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
-0x4b5,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,
-0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,
-0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,
-0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,
-0x1671,0x494,0x494,0x494,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,
+0x4b5,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,
+0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,
+0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,
+0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,
+0x1694,0x494,0x494,0x494,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,
0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,
0xf,0xf,0xf,0xf,0xc,0x17,0x17,0x17,0x19,0x17,0x17,0x17,0x14,0x15,0x17,0x18,
0x17,0x13,0x17,0x17,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x17,0x17,
@@ -765,7 +765,7 @@ static const uint16_t propsTrie_index[23016]={
0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
0x1b,0x1b,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
-0,0,0,0,0x1b,0x58a,0x5ca,0x60a,0x64a,0x68a,0x6ca,0x70a,0x74a,0x78a,6,6,
+0x1b,0x1b,0x1b,0x1b,0x1b,0x58a,0x5ca,0x60a,0x64a,0x68a,0x6ca,0x70a,0x74a,0x78a,6,6,
6,6,8,8,0x13,4,4,4,4,4,0x1b,0x1b,0x7ca,0xa4a,0xcca,4,
5,0x17,0x1b,0x1b,0xc,0x17,0x17,0x17,0x1b,4,5,0x54a,0x14,0x15,0x14,0x15,
0x14,0x15,0x14,0x15,0x14,0x15,0x1b,0x1b,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,
@@ -778,7 +778,7 @@ static const uint16_t propsTrie_index[23016]={
5,5,5,5,0,5,5,5,5,5,5,5,5,5,5,5,
5,5,5,5,5,5,5,0,0x1b,0x1b,0x58b,0x5cb,0x60b,0x64b,0x1b,0x1b,
0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,0,0,
-0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,
+0,0,0,0x1b,5,5,5,5,5,5,5,5,5,5,5,5,
5,5,5,5,0x58b,0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b,0x74b,0x78b,0x7cb,0x1b,0x1b,
0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
0x1b,0x1b,0x1b,0x1b,0x7cb,0xa4b,0xccb,0xf4b,0x11cb,0x144b,0x16cb,0x194b,0x1b,0xa8b,0xacb,0xb0b,
@@ -793,820 +793,829 @@ static const uint16_t propsTrie_index[23016]={
5,5,5,5,5,0x705,5,5,5,5,5,5,5,5,5,5,
5,5,5,5,5,5,5,5,0x585,5,5,0x705,5,5,5,0x7885,
5,0x605,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,0x5c5,5,5,5,5,5,5,5,
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,0x785,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-0x5c5,5,5,5,5,5,5,5,0x685,5,0x645,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,0x785,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,0x5c5,5,5,5,5,5,5,5,
+0x685,5,0x645,5,5,5,5,5,5,5,5,5,5,5,5,5,
+0x7b85,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+5,5,5,0x7985,0x7c5,5,5,5,5,5,5,5,5,5,5,5,
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,5,0x7985,0x7c5,5,5,5,
+5,5,5,0x7845,5,5,5,5,5,5,5,5,0x605,5,5,5,
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,5,0x7845,5,5,5,5,
-5,5,5,5,0x605,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,5,5,5,0x685,5,5,
-5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-0x1e45,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-0x7985,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,5,5,5,5,0x7a85,5,
+5,5,5,5,5,0x685,5,5,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,0x1e45,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,0x5c5,5,5,5,5,5,5,
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,5,5,5,0x5c5,5,0x745,5,0x6c5,5,5,
+5,5,0x5c5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,5,0x7985,5,5,5,
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,0x7c5,5,0x7845,0xa45,0xcc5,5,5,5,5,5,5,0xf45,5,5,5,
+5,5,5,5,5,5,5,5,5,5,0x7905,5,5,5,5,5,
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,0x605,0x605,0x605,0x605,5,5,5,5,5,5,5,5,5,5,5,
+5,5,5,5,5,0x5c5,5,0x745,5,0x6c5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,5,5,0x7c5,5,0x7845,
+0xa45,0xcc5,5,5,5,5,5,5,0xf45,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,5,5,0x605,0x605,0x605,
+0x605,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0x645,
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,0x645,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,0x585,5,5,5,5,5,5,5,0x585,5,5,
+5,0x585,5,5,5,5,5,5,5,0x585,5,5,5,5,5,5,
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,0x585,5,5,5,5,5,
+5,5,5,5,5,5,0x585,5,5,5,5,5,5,5,5,5,
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,0x785,0xa45,5,5,5,5,
-5,5,5,5,5,5,5,5,0x585,0x5c5,0x605,5,0x5c5,5,5,5,
+5,5,5,5,5,5,0x785,0xa45,5,5,5,5,5,5,5,5,
+5,5,5,5,0x585,0x5c5,0x605,5,0x5c5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,5,0x705,5,5,5,
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
5,5,5,5,5,5,5,5,5,5,5,5,5,5,0x7c5,5,
5,5,5,5,5,5,5,5,5,5,5,5,0x745,5,5,5,
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
5,5,0x705,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,5,5,5,5,0x785,5,
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,5,5,5,5,0x1e45,5,
+5,5,0x545,5,5,5,5,5,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,0x785,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,0x1e45,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+5,0x8005,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+5,0x79c5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
5,5,5,5,5,5,0x645,5,5,5,5,5,5,5,5,5,
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
0x7885,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
5,5,5,5,5,5,0x5c5,5,5,5,5,0x5c5,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,5,5,0x5c5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,5,5,5,0x7845,5,5,
-5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,5,5,5,5,0x6c5,5,
-5,5,5,5,0x1e45,5,5,5,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,0x785,5,5,5,5,5,5,
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-0x6c5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,0x545,5,5,5,5,5,
-5,5,5,5,5,5,5,5,5,0,0,0,0x1b,0x1b,0x1b,0x1b,
-0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,5,5,5,5,
+5,0x7845,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,4,5,5,5,5,5,5,5,5,5,5,0x1b,0x1b,0x1b,0x1b,
-0x1b,0x1b,0x1b,0,0,0,0,0,0,0,0,0,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,5,5,4,0x17,0x17,0x17,
+5,5,0x6c5,5,5,5,5,5,0x1e45,5,5,5,5,5,5,5,
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,5,5,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+5,5,5,5,0x6c5,5,5,5,5,5,5,5,5,5,5,5,
+5,5,5,5,5,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,5,5,4,5,5,
+5,5,5,5,5,5,5,5,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,
+0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,4,0x17,0x17,0x17,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,5,0x49,0x89,0xc9,0x109,
+0x149,0x189,0x1c9,0x209,0x249,0x289,5,5,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,1,2,1,2,
1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,
-1,2,1,2,1,2,1,2,1,2,1,2,4,4,6,6,
-1,2,1,2,1,2,1,2,1,2,1,2,1,2,5,6,
-7,7,7,0x17,6,6,6,6,6,6,6,6,6,6,0x17,4,
-5,5,5,5,5,5,0x58a,0x5ca,0x60a,0x64a,0x68a,0x6ca,0x70a,0x74a,0x78a,0x54a,
-6,6,0x17,0x17,0x17,0x17,0x17,0x17,0,0,0,0,0,0,0,0,
+1,2,1,2,1,2,1,2,4,4,6,6,1,2,1,2,
+1,2,1,2,1,2,1,2,1,2,5,6,7,7,7,0x17,
+6,6,6,6,6,6,6,6,6,6,0x17,4,5,5,5,5,
+5,5,0x58a,0x5ca,0x60a,0x64a,0x68a,0x6ca,0x70a,0x74a,0x78a,0x54a,6,6,0x17,0x17,
+0x17,0x17,0x17,0x17,0,0,0,0,0,0,0,0,0x1a,0x1a,0x1a,0x1a,
0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
-0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,4,4,4,4,4,4,4,4,4,
+0x1a,0x1a,0x1a,4,4,4,4,4,4,4,4,4,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,
+4,1,2,5,4,4,2,5,5,5,5,5,0x1a,0x1a,1,2,
+1,2,1,2,1,2,1,2,1,2,1,2,2,2,1,2,
+1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,
+4,2,2,2,2,2,2,2,2,1,2,1,2,1,1,2,
+1,2,1,2,1,2,1,2,4,0x1a,0x1a,1,2,1,2,5,
+1,2,1,2,2,2,1,2,1,2,1,2,1,2,1,2,
+1,2,1,1,1,1,1,2,1,1,1,1,1,2,1,2,
+1,2,1,2,1,2,1,2,1,1,1,1,2,1,2,0,
+0,0,0,0,1,2,0,2,0,2,1,2,1,2,0,0,
+0,0,0,0,5,5,6,5,5,5,6,5,5,5,5,6,
+5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,8,8,6,6,8,0x1b,0x1b,0x1b,0x1b,
+6,0,0,0,0x34cb,0x344b,0x3ccb,0x37cb,0x35cb,0x3fcb,0x1b,0x1b,0x19,0x1b,0,0,
+0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,0x17,0x17,0x17,0x17,0,0,0,0,
+0,0,0,0,8,8,8,8,6,6,0,0,0,0,0,0,
+0,0,0x17,0x17,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,
+0,0,0,0,8,8,5,5,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+5,5,5,5,8,8,8,8,8,8,8,8,8,8,8,8,
+6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+6,6,5,5,5,5,5,5,0x17,0x17,0x17,5,0x17,5,5,6,
+5,5,5,5,5,5,6,6,6,6,6,6,6,6,0x17,0x17,
+5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+5,5,5,6,6,6,6,6,6,6,6,6,6,6,8,8,
+0,0,0,0,0,0,0,0,0,0,0,0x17,8,0x17,0x17,0x17,
+0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,4,0x49,0x89,0xc9,0x109,
+0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0x17,0x17,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,
+8,8,6,6,6,6,8,8,6,6,8,8,5,5,5,5,
+5,6,4,5,5,5,5,5,5,5,5,5,0x49,0x89,0xc9,0x109,
+0x149,0x189,0x1c9,0x209,0x249,0x289,5,5,5,5,5,0,5,5,5,5,
+5,5,5,5,5,6,6,6,6,6,6,8,8,6,6,8,
+8,6,6,0,0,0,0,0,0,0,0,0,5,5,5,6,
+5,5,5,5,5,5,5,5,6,8,0,0,0x49,0x89,0xc9,0x109,
+0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0x17,0x17,0x17,0x17,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,5,4,5,5,5,
+5,5,5,0x1b,0x1b,0x1b,5,8,6,8,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,5,6,5,6,6,
+6,5,5,6,6,5,5,5,5,5,6,6,5,6,5,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,4,4,4,1,2,5,4,4,2,5,5,5,5,5,
-0x1a,0x1a,1,2,1,2,1,2,1,2,1,2,1,2,1,2,
-2,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,
-1,2,1,2,4,2,2,2,2,2,2,2,2,1,2,1,
-2,1,1,2,1,2,1,2,1,2,1,2,4,0x1a,0x1a,1,
-2,1,2,5,1,2,1,2,2,2,1,2,1,2,1,2,
-1,2,1,2,1,2,1,1,1,1,1,2,1,1,1,1,
-1,2,1,2,1,2,1,2,1,2,1,2,1,1,1,1,
-2,1,2,0,0,0,0,0,1,2,0,2,0,2,1,2,
-1,2,0,0,0,0,0,0,5,5,6,5,5,5,6,5,
-5,5,5,6,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,5,8,8,6,6,8,
-0x1b,0x1b,0x1b,0x1b,6,0,0,0,0x34cb,0x344b,0x3ccb,0x37cb,0x35cb,0x3fcb,0x1b,0x1b,
-0x19,0x1b,0,0,0,0,0,0,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,5,5,0x17,0x17,0x17,0x17,
-0,0,0,0,0,0,0,0,8,8,8,8,6,6,0,0,
-0,0,0,0,0,0,0x17,0x17,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,
-0x249,0x289,0,0,0,0,0,0,8,8,5,5,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,5,5,8,8,8,8,8,8,8,8,
-8,8,8,8,6,6,6,6,6,6,6,6,6,6,6,6,
-6,6,6,6,6,6,5,5,5,5,5,5,0x17,0x17,0x17,5,
-0x17,5,5,6,5,5,5,5,5,5,6,6,6,6,6,6,
-6,6,0x17,0x17,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,
-6,6,8,8,0,0,0,0,0,0,0,0,0,0,0,0x17,
-8,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,4,
-0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0x17,0x17,
-5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,6,8,8,6,6,6,6,8,8,6,6,8,8,
-5,5,5,5,5,6,4,5,5,5,5,5,5,5,5,5,
-0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,5,5,5,5,5,0,
-5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,8,
-8,6,6,8,8,6,6,0,0,0,0,0,0,0,0,0,
-5,5,5,6,5,5,5,5,5,5,5,5,6,8,0,0,
-0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0x17,0x17,0x17,0x17,
-5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-4,5,5,5,5,5,5,0x1b,0x1b,0x1b,5,8,6,8,5,5,
-5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-6,5,6,6,6,5,5,6,6,5,5,5,5,5,6,6,
-5,6,5,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,5,5,4,0x17,0x17,
-5,5,5,5,5,5,5,5,5,5,5,8,6,6,8,8,
-0x17,0x17,5,4,4,8,6,0,0,0,0,0,0,0,0,0,
-0,5,5,5,5,5,5,0,0,5,5,5,5,5,5,0,
-0,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,
-5,5,5,5,5,5,5,0,5,5,5,5,5,5,5,0,
+0,0,0,0,0,0,0,5,5,4,0x17,0x17,5,5,5,5,
+5,5,5,5,5,5,5,8,6,6,8,8,0x17,0x17,5,4,
+4,8,6,0,0,0,0,0,0,0,0,0,0,5,5,5,
+5,5,5,0,0,5,5,5,5,5,5,0,0,5,5,5,
+5,5,5,0,0,0,0,0,0,0,0,0,5,5,5,5,
+5,5,5,0,5,5,5,5,5,5,5,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,0x1a,4,4,4,4,
-2,2,2,2,2,2,2,2,2,4,0x1a,0x1a,0,0,0,0,
-2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
-5,5,5,8,8,6,8,8,6,8,8,0x17,8,6,0,0,
-0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0,0,
-5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,
-5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,
-5,5,5,5,5,5,5,0,0,0,0,5,5,5,5,5,
+2,2,2,2,2,2,2,0x1a,4,4,4,4,2,2,2,2,
+2,2,2,2,2,4,0x1a,0x1a,0,0,0,0,2,2,2,2,
+2,2,2,2,2,2,2,2,2,2,2,2,5,5,5,8,
+8,6,8,8,6,8,8,0x17,8,6,0,0,0x49,0x89,0xc9,0x109,
+0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0,0,5,5,5,5,
+0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,0,0,0,0,5,5,5,5,
+5,5,5,0,0,0,0,5,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,5,0x12,0x12,0x12,0x12,
0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
-0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x11,0x11,0x11,0x11,
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
-0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
-5,5,5,5,5,5,5,5,5,5,5,0x605,5,5,5,5,
-5,5,5,0x7c5,5,5,5,5,0x5c5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,5,5,5,0x6c5,5,0x6c5,
-5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,5,5,5,0x7c5,5,5,
-5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,
-5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,0x18,5,5,5,5,5,5,5,5,5,5,5,5,5,0,
-5,5,5,5,5,0,5,0,5,5,0,5,5,0,5,5,
-5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,5,5,2,2,2,2,2,2,2,0,
-0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,
-0,0,0,0,0,5,6,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
-0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,0x15,0x14,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,5,5,0,0,5,5,
-5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,
-0,0,0,0x1b,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,
-0x19,0x1b,0x1b,0x1b,6,6,6,6,6,6,6,6,6,6,6,6,
-6,6,6,6,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x14,0x15,0x17,0,0,
-0,0,0,0,6,6,6,6,6,6,6,6,6,6,6,6,
-6,6,6,6,0x17,0x13,0x13,0x16,0x16,0x14,0x15,0x14,0x15,0x14,0x15,0x14,
-0x15,0x14,0x15,0x14,0x15,0x17,0x17,0x14,0x15,0x17,0x17,0x17,0x17,0x16,0x16,0x16,
-0x17,0x17,0x17,0,0x17,0x17,0x17,0x17,0x13,0x14,0x15,0x14,0x15,0x14,0x15,0x17,
-0x17,0x17,0x18,0x13,0x18,0x18,0x18,0,0x17,0x19,0x17,0x17,0,0,0,0,
-5,5,5,5,5,0,5,5,5,5,5,5,5,5,5,5,
+0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,5,5,5,5,
+5,5,5,5,5,5,5,0x605,5,5,5,5,5,5,5,0x7c5,
+5,5,5,5,0x5c5,5,5,5,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,0x6c5,5,0x6c5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,0x7c5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,0,0,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,5,5,0x18,5,5,
+5,5,5,5,5,5,5,5,5,5,5,0,5,5,5,5,
+5,0,5,0,5,5,0,5,5,0,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+5,5,5,5,2,2,2,2,2,2,2,0,0,0,0,0,
+0,0,0,0,0,0,0,2,2,2,2,2,0,0,0,0,
+0,5,6,5,5,5,5,5,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,0x15,0x14,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,0,0,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0x1b,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+5,5,5,5,5,5,5,5,5,5,5,5,0x19,0x1b,0x1b,0x1b,
+6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x14,0x15,0x17,0,0,0,0,0,0,
+6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+0x17,0x13,0x13,0x16,0x16,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x14,
+0x15,0x17,0x17,0x14,0x15,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x17,0x17,0x17,0,
+0x17,0x17,0x17,0x17,0x13,0x14,0x15,0x14,0x15,0x14,0x15,0x17,0x17,0x17,0x18,0x13,
+0x18,0x18,0x18,0,0x17,0x19,0x17,0x17,0,0,0,0,5,5,5,5,
+5,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,0,0,0x10,0,0,5,5,5,5,5,5,
-0,0,5,5,5,5,5,5,0,0,5,5,5,5,5,5,
-0,0,5,5,5,0,0,0,0x19,0x19,0x18,0x1a,0x1b,0x19,0x19,0,
-0x1b,0x18,0x18,0x18,0x18,0x1b,0x1b,0,0,0,0,0,0,0,0,0,
-0,0x10,0x10,0x10,0x1b,0x1b,0,0,0,0x17,0x17,0x17,0x19,0x17,0x17,0x17,
-0x14,0x15,0x17,0x18,0x17,0x13,0x17,0x17,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,
-0x249,0x289,0x17,0x17,0x18,0x18,0x18,0x17,0x1a,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,0x14,0x18,0x15,0x18,0x14,0x15,0x17,0x14,0x15,0x17,0x17,5,5,
-5,5,5,5,5,5,5,5,4,5,5,5,5,5,5,5,
+5,0,0,0x10,0,0,5,5,5,5,5,5,0,0,5,5,
+5,5,5,5,0,0,5,5,5,5,5,5,0,0,5,5,
+5,0,0,0,0x19,0x19,0x18,0x1a,0x1b,0x19,0x19,0,0x1b,0x18,0x18,0x18,
+0x18,0x1b,0x1b,0,0,0,0,0,0,0,0,0,0,0x10,0x10,0x10,
+0x1b,0x1b,0,0,0,0x17,0x17,0x17,0x19,0x17,0x17,0x17,0x14,0x15,0x17,0x18,
+0x17,0x13,0x17,0x17,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x17,0x17,
+0x18,0x18,0x18,0x17,0x1a,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,0x14,
+0x18,0x15,0x18,0x14,0x15,0x17,0x14,0x15,0x17,0x17,5,5,5,5,5,5,
+5,5,5,5,4,5,5,5,5,5,5,5,5,5,5,5,
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,4,4,5,5,5,5,
-5,5,5,5,5,5,5,5,0,5,5,5,5,5,5,5,
+5,5,5,5,5,5,4,4,5,5,5,5,5,5,5,5,
+5,5,5,5,0,5,5,5,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,0,5,5,5,5,
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,
-5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,0,5,5,0,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,0,0,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,0,0,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,0,0,0,0,0,0xb00b,0xb80b,0x784b,0x804b,0x884b,0x904b,0x984b,0xa04b,
-0xa84b,0xb04b,0xb84b,0x788b,0x808b,0x888b,0x908b,0x988b,0xa08b,0xa88b,0xb08b,0xb88b,0,0,0,0x1b,
-0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x17,0x17,0x17,0,0,0,0,0x58b,
-0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b,0x74b,0x78b,0x7cb,0xa4b,0xccb,0xf4b,0x11cb,0x144b,0x16cb,0x194b,
-0x1bcb,0x1e4b,0x800b,0x880b,0x900b,0x980b,0xa00b,0xa80b,0x7ca,0x7ca,0x7ca,0x7ca,0x7ca,0xcca,0x11ca,0x11ca,
-0x11ca,0x11ca,0x1e4a,0x880a,0x980a,0x980a,0x980a,0x980a,0x980a,0x784a,0x984a,0x68a,0x11ca,0x344b,0x344b,0x388b,
-0x3ccb,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x54b,0x34cb,
-0x1b,0x1b,0x1b,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
-0x1b,0,0,0,0x34ca,0x344a,0x58a,0x68a,0x11ca,0x980a,0x984a,0x988a,0x68a,0x7ca,0x11ca,0x1e4a,
-0x980a,0x784a,0x984a,0x68a,0x7ca,0x11ca,0x1e4a,0x980a,0x784a,0x788a,0x988a,0x7ca,0x58a,0x58a,0x58a,0x5ca,
-0x5ca,0x5ca,0x5ca,0x68a,0x1b,0,0,0,0,0,0,0,0,0,0,0,
+5,5,0,5,5,5,5,5,5,5,5,5,5,5,5,5,
+5,5,0,0,5,5,5,5,5,5,5,5,5,5,5,5,
+5,5,0,0,5,5,5,5,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,
+0,0,0,0,0xb00b,0xb80b,0x784b,0x804b,0x884b,0x904b,0x984b,0xa04b,0xa84b,0xb04b,0xb84b,0x788b,
+0x808b,0x888b,0x908b,0x988b,0xa08b,0xa88b,0xb08b,0xb88b,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,
+0x1b,0x1b,0x1b,0x1b,0x17,0x17,0x17,0,0,0,0,0x58b,0x5cb,0x60b,0x64b,0x68b,
+0x6cb,0x70b,0x74b,0x78b,0x7cb,0xa4b,0xccb,0xf4b,0x11cb,0x144b,0x16cb,0x194b,0x1bcb,0x1e4b,0x800b,0x880b,
+0x900b,0x980b,0xa00b,0xa80b,0x7ca,0x7ca,0x7ca,0x7ca,0x7ca,0xcca,0x11ca,0x11ca,0x11ca,0x11ca,0x1e4a,0x880a,
+0x980a,0x980a,0x980a,0x980a,0x980a,0x784a,0x984a,0x68a,0x11ca,0x344b,0x344b,0x388b,0x3ccb,0x1b,0x1b,0x1b,
+0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x54b,0x34cb,0x1b,0x1b,0x1b,0,
+0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,
+0x34ca,0x344a,0x58a,0x68a,0x11ca,0x980a,0x984a,0x988a,0x68a,0x7ca,0x11ca,0x1e4a,0x980a,0x784a,0x984a,0x68a,
+0x7ca,0x11ca,0x1e4a,0x980a,0x784a,0x788a,0x988a,0x7ca,0x58a,0x58a,0x58a,0x5ca,0x5ca,0x5ca,0x5ca,0x68a,
+0x1b,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
-0x1b,6,0,0,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,6,0x58b,0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b,0x74b,0x78b,0x7cb,0xa4b,
-0xccb,0xf4b,0x11cb,0x144b,0x16cb,0x194b,0x1bcb,0x1e4b,0x800b,0x880b,0x900b,0x980b,0xa00b,0xa80b,0xb00b,0xb80b,
-0,0,0,0,0x58b,0x68b,0x7cb,0x11cb,0,0,0,0,0,0,0,0,
-0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,0x1bca,5,5,5,5,5,5,5,5,0xb80a,0,
-0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,0,
-0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,
+0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,6,0,0,
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,0,0x17,5,5,5,5,0,0,0,0,5,5,5,5,
-5,5,5,5,0x17,0x58a,0x5ca,0x7ca,0xa4a,0x1e4a,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,5,5,5,5,5,5,5,5,5,5,5,5,
+5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+6,0x58b,0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b,0x74b,0x78b,0x7cb,0xa4b,0xccb,0xf4b,0x11cb,0x144b,
+0x16cb,0x194b,0x1bcb,0x1e4b,0x800b,0x880b,0x900b,0x980b,0xa00b,0xa80b,0xb00b,0xb80b,0,0,0,0,
+0x58b,0x68b,0x7cb,0x11cb,0,0,0,0,0,0,0,0,0,5,5,5,
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,
-0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,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,
-0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,1,0,0,0,0,2,2,2,2,
-2,2,2,2,5,5,5,5,5,5,5,5,0,0,0,0,
-0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0x17,
-1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,
-2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,
-2,2,0,2,2,2,2,2,2,2,0,2,2,0,0,0,
-1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,
-1,1,1,0,1,1,0,2,2,2,2,2,2,2,2,2,
-5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
-4,0,4,4,4,4,4,4,4,4,4,0,0,0,0,0,
-4,4,4,4,4,4,0,4,4,4,4,4,4,4,4,4,
-4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+5,0x1bca,5,5,5,5,5,5,5,5,0xb80a,0,0,0,0,0,
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,0,5,5,0,0,0,5,0,0,5,
-5,5,5,5,5,5,0,0,5,0,5,5,5,5,5,5,
+5,5,5,5,5,5,6,6,6,6,6,0,0,0,0,0,
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,0,0x17,0x58b,0x5cb,0x60b,0x7cb,0xa4b,0x1e4b,0x784b,0x788b,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0x17,
+5,5,5,5,0,0,0,0,5,5,5,5,5,5,5,5,
+0x17,0x58a,0x5ca,0x7ca,0xa4a,0x1e4a,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,
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,0x1b,0x1b,0x58b,0x5cb,0x60b,0x64b,0x68b,0x7cb,0xa4b,0,0,0,0,
-0,0,0,0x58b,0x5cb,0x60b,0x64b,0x64b,0x68b,0x7cb,0xa4b,0x1e4b,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,
-5,5,0,0,0,0,0,0x58b,0x68b,0x7cb,0xa4b,0x1e4b,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,
+0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0,0,
+1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+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,0,0,0,0,
+1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+1,1,1,1,0,0,0,0,2,2,2,2,2,2,2,2,
+5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,0x58b,0x7cb,0xa4b,0x1e4b,0x5cb,0x60b,0,0,0,0x17,5,5,5,5,
+0,0,0,0,0,0,0,0,0,0,0,0x17,1,1,1,1,
+1,1,1,1,1,1,1,0,1,1,1,1,2,2,0,2,
+2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,
+2,2,2,2,2,2,0,2,2,0,0,0,1,1,1,1,
+1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,
+1,1,0,2,2,2,2,2,2,2,2,2,5,5,5,5,
+5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,
+4,4,4,4,4,4,4,4,4,4,4,4,4,0,4,4,
+4,4,4,4,4,4,4,0,0,0,0,0,4,4,4,4,
+4,4,0,4,4,4,4,4,4,4,4,4,4,4,4,4,
+4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+5,5,0,5,5,0,0,0,5,0,0,5,5,5,5,5,
+5,5,0,0,5,0,5,5,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0x17,
+0x58b,0x5cb,0x60b,0x7cb,0xa4b,0x1e4b,0x784b,0x788b,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0x1b,
+0x1b,0x58b,0x5cb,0x60b,0x64b,0x68b,0x7cb,0xa4b,0,0,0,0,0,0,0,0x58b,
+0x5cb,0x60b,0x64b,0x64b,0x68b,0x7cb,0xa4b,0x1e4b,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,0,5,5,0,0,
+0,0,0,0x58b,0x68b,0x7cb,0xa4b,0x1e4b,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,5,5,5,0x58b,0x7cb,
+0xa4b,0x1e4b,0x5cb,0x60b,0,0,0,0x17,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+5,5,0,0,0,0,0,0x17,0xa04b,0xa84b,0xb04b,0xb84b,0x788b,0x808b,0x888b,0x908b,
+0x988b,0xa08b,0xa88b,0xb08b,0xb88b,0x78cb,0x80cb,0x88cb,0x90cb,0x98cb,0xa0cb,0xa8cb,0xb0cb,0xb8cb,0x36cb,0x354b,
+0x34cb,0x348b,0x46cb,0x344b,0x4ecb,0x388b,0x3ccb,0x454b,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+0,0,0,0,0x5ecb,0x344b,5,5,0x58b,0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b,0x74b,
+0x78b,0x7cb,0xa4b,0xccb,0xf4b,0x11cb,0x144b,0x16cb,0,0,0x1e4b,0x800b,0x880b,0x900b,0x980b,0xa00b,
+0xa80b,0xb00b,0xb80b,0x784b,0x804b,0x884b,0x904b,0x984b,0x30b,0x34b,0x38b,0x3cb,0x7cb,0xa4b,0x1e4b,0x784b,
+0x344b,0,0,0,0,0,0,0,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+0x17,0,0,0,0,0,0,0,5,6,6,6,0,6,6,0,
+0,0,0,0,6,6,6,6,5,5,5,5,0,5,5,5,
+0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,0,0,6,6,6,0,
+0,0,0,6,5,5,5,5,5,5,5,5,5,5,5,5,
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,0,0,0,0,0,0x17,0xa04b,0xa84b,0xb04b,0xb84b,
-0x788b,0x808b,0x888b,0x908b,0x988b,0xa08b,0xa88b,0xb08b,0xb88b,0x78cb,0x80cb,0x88cb,0x90cb,0x98cb,0xa0cb,0xa8cb,
-0xb0cb,0xb8cb,0x36cb,0x354b,0x34cb,0x348b,0x46cb,0x344b,0x4ecb,0x388b,0x3ccb,0x454b,5,5,5,5,
+5,0x58b,0x11cb,0x17,5,5,5,5,5,5,5,5,5,5,5,5,
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,0,0,0,0,0x5ecb,0x344b,5,5,0x58b,0x5cb,0x60b,0x64b,
-0x68b,0x6cb,0x70b,0x74b,0x78b,0x7cb,0xa4b,0xccb,0xf4b,0x11cb,0x144b,0x16cb,0,0,0x1e4b,0x800b,
-0x880b,0x900b,0x980b,0xa00b,0xa80b,0xb00b,0xb80b,0x784b,0x804b,0x884b,0x904b,0x984b,0x30b,0x34b,0x38b,0x3cb,
-0x7cb,0xa4b,0x1e4b,0x784b,0x344b,0,0,0,0,0,0,0,0x17,0x17,0x17,0x17,
-0x17,0x17,0x17,0x17,0x17,0,0,0,0,0,0,0,5,6,6,6,
-0,6,6,0,0,0,0,0,6,6,6,6,5,5,5,5,
-0,5,5,5,0,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,
-6,6,6,0,0,0,0,6,5,5,5,5,5,5,5,5,
+5,0x58b,0x7cb,0xa4b,5,5,5,5,5,6,6,0,0,0,0,0x58b,
+0x68b,0x7cb,0xa4b,0x1e4b,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,0,0,0,0,
+0,0,0,0,5,5,5,5,5,5,5,5,0x1b,5,5,5,
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,0x58b,0x11cb,0x17,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,0,0,0,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,0x58b,0x7cb,0xa4b,5,5,5,5,5,6,6,0,
-0,0,0,0x58b,0x68b,0x7cb,0xa4b,0x1e4b,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,
-0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,
-0x1b,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,0,0,0,0x17,0x17,0x17,
-0x17,0x17,0x17,0x17,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,0,0,0x58b,0x5cb,0x60b,0x64b,
-0x7cb,0xa4b,0x1e4b,0x784b,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,5,0,0,0,0,0,0x58b,0x5cb,0x60b,0x64b,
-0x7cb,0xa4b,0x1e4b,0x784b,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,0,0,0,0,0,0,0,0x17,0x17,0x17,
-0x17,0,0,0,0,0,0,0,0,0,0,0,0,0x58b,0x5cb,0x60b,
-0x64b,0x7cb,0xa4b,0x1e4b,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,5,5,5,5,5,5,5,5,5,0,0,0,
-0,0,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,1,
-1,1,1,1,1,1,1,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,0,0,0,0,0,0,0,0x58b,0x68b,
-0x7cb,0x11cb,0x1e4b,0x784b,5,5,5,5,6,6,6,6,0,0,0,0,
-0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,
-0,0,0,0,0x30b,0x34b,0x38b,0x3cb,0x40b,0x44b,0x48b,0x4cb,0x50b,0x7cb,0xa4b,0xccb,
-0xf4b,0x11cb,0x144b,0x16cb,0x194b,0x1bcb,0x1e4b,0x800b,0x880b,0x900b,0x980b,0xa00b,0xa80b,0xb00b,0xb80b,0x344b,
-0x34cb,0x348b,0x388b,0,5,5,5,5,5,5,5,5,5,5,0,6,
-6,0x13,0,0,5,5,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,6,6,6,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,0,0,0x58b,0x5cb,0x60b,0x64b,0x7cb,0xa4b,0x1e4b,0x784b,
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,0x58b,0x5cb,0x60b,0x64b,0x68b,0x7cb,0xa4b,0xccb,0x1e4b,0x344b,5,
-0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,
-6,6,6,6,6,0x58b,0x7cb,0xa4b,0x1e4b,0x17,0x17,0x17,0x17,0x17,0,0,
-0,0,0,0,5,5,6,6,6,6,0x17,0x17,0x17,0x17,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,5,5,5,5,5,0x58b,0x5cb,0x60b,0x64b,0x7cb,0xa4b,0x1e4b,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0x144b,0x16cb,0x194b,0x1bcb,0x1e4b,0x784b,0x49,0x89,0xc9,0x109,0x149,0x189,
-0x1c9,0x209,0x249,0x289,6,5,5,6,6,5,0,0,0,0,0,0,
-0,0,0,6,8,6,8,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,6,6,6,6,6,6,6,0x17,0x17,0x17,0x17,0x17,
-0x17,0x17,0,0,0,0,0x30b,0x34b,0x38b,0x3cb,0x40b,0x44b,0x48b,0x4cb,0x50b,0x7cb,
-0xa4b,0xccb,0xf4b,0x11cb,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,8,8,8,6,6,6,6,8,8,6,6,0x17,
-0x17,0x10,0x17,0x17,0x17,0x17,6,0,0,0,0,0,0,0,0,0,
-0,0x10,0,0,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,0,0,0,0,0,0,0,0x49,0x89,0xc9,0x109,
-0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0,0,5,5,5,5,
-5,5,5,6,6,6,6,6,8,6,6,6,6,6,6,6,
-6,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x17,0x17,0x17,0x17,
-5,8,8,5,0,0,0,0,0,0,0,0,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,5,
+5,5,5,0,0,0,0,0,0x58b,0x5cb,0x60b,0x64b,0x7cb,0xa4b,0x1e4b,0x784b,
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,
-0x17,0x17,5,0,0,0,0,0,0,0,0,0,8,5,5,5,
-5,0x17,0x17,0x17,0x17,6,6,6,6,0x17,8,6,0x49,0x89,0xc9,0x109,
-0x149,0x189,0x1c9,0x209,0x249,0x289,5,0x17,5,0x17,0x17,0x17,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,8,
-8,8,6,6,6,6,6,6,6,6,6,8,0,0x58b,0x5cb,0x60b,
-0x64b,0x68b,0x6cb,0x70b,0x74b,0x78b,0x7cb,0xa4b,0xccb,0xf4b,0x11cb,0x144b,0x16cb,0x194b,0x1bcb,0x1e4b,
-0x784b,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,
-5,5,5,5,5,5,5,5,8,8,8,6,6,6,8,8,
-6,8,6,6,0x17,0x17,0x17,0x17,0x17,0x17,6,5,5,6,0,0,
+5,5,0,0,0,0,0,0,0,0x17,0x17,0x17,0x17,0,0,0,
+0,0,0,0,0,0,0,0,0,0x58b,0x5cb,0x60b,0x64b,0x7cb,0xa4b,0x1e4b,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,5,
-5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,
-5,0,5,5,5,5,0,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,0,5,5,5,5,5,5,5,5,5,
-5,0x17,0,0,0,0,0,0,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,5,5,8,8,8,6,6,6,6,6,
-6,6,6,0,0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,
-0x249,0x289,0,0,0,0,0,0,5,5,8,8,0,0,6,6,
-6,6,6,6,6,0,0,0,6,6,6,6,6,0,0,0,
-0,0,0,0,0,0,0,0,6,6,8,8,0,5,5,5,
-5,5,5,5,5,0,0,5,5,0,0,5,5,5,5,5,
-5,5,5,5,5,5,5,5,5,0,5,5,5,5,5,5,
-5,0,5,5,0,5,5,5,5,5,0,6,6,5,8,8,
-6,8,8,8,8,0,0,8,8,0,0,8,8,8,0,0,
-5,0,0,0,0,0,0,8,0,0,0,0,0,5,5,5,
-5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,8,8,8,6,6,6,6,6,6,6,6,
-8,8,6,6,6,8,6,5,5,5,5,0x17,0x17,0x17,0x17,0x17,
-0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x17,0x17,0,0x17,6,5,
-5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-8,8,8,6,6,6,6,6,6,8,6,8,8,8,8,6,
-6,8,6,6,5,5,0x17,5,0,0,0,0,0,0,0,0,
-0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0,0,
-5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,8,
-8,8,6,6,6,6,0,0,8,8,8,8,6,6,8,6,
-6,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
-0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,5,5,5,5,6,6,0,0,
-5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-8,8,8,6,6,6,6,6,6,6,6,8,8,6,8,6,
-6,0x17,0x17,0x17,5,0,0,0,0,0,0,0,0,0,0,0,
-0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0,0,
-0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,0,0,
+5,5,5,5,5,5,5,5,5,0,0,0,0,0,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,1,1,1,1,1,
+1,1,1,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,0,0,0,0,0,0,0,0x58b,0x68b,0x7cb,0x11cb,0x1e4b,0x784b,
+5,5,5,5,6,6,6,6,0,0,0,0,0,0,0,0,
0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0,0,
+0x30b,0x34b,0x38b,0x3cb,0x40b,0x44b,0x48b,0x4cb,0x50b,0x7cb,0xa4b,0xccb,0xf4b,0x11cb,0x144b,0x16cb,
+0x194b,0x1bcb,0x1e4b,0x800b,0x880b,0x900b,0x980b,0xa00b,0xa80b,0xb00b,0xb80b,0x344b,0x34cb,0x348b,0x388b,0,
+5,5,5,5,5,5,5,5,5,5,0,6,6,0x13,0,0,
+5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-5,5,5,5,5,5,5,5,5,5,5,6,8,6,8,8,
-6,6,6,6,6,6,8,6,5,0x17,0,0,0,0,0,0,
-8,8,6,6,6,6,8,6,6,6,6,6,0,0,0,0,
-0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x7cb,0xa4b,0x17,0x17,0x17,0x1b,
-5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,
+0,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+5,0x58b,0x5cb,0x60b,0x64b,0x68b,0x7cb,0xa4b,0xccb,0x1e4b,0x344b,5,0,0,0,0,
+0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,
+6,0x58b,0x7cb,0xa4b,0x1e4b,0x17,0x17,0x17,0x17,0x17,0,0,0,0,0,0,
+5,5,6,6,6,6,0x17,0x17,0x17,0x17,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-5,5,5,5,5,5,5,5,5,5,5,5,8,8,8,6,
-6,6,6,6,6,6,6,6,8,6,6,0x17,0,0,0,0,
-0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x7cb,0xa4b,0xccb,0xf4b,0x11cb,0x144b,
-0x16cb,0x194b,0x1bcb,0,0,0,0,0,0,0,0,0,0,0,0,5,
-8,5,8,6,0x17,0x17,0x17,0,0,0,0,0,0,0,0,0,
-0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0,0,
-5,5,5,5,5,5,5,0,0,5,0,0,5,5,5,5,
-5,5,5,5,0,5,5,0,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,5,5,8,8,8,8,8,8,0,8,
-8,0,0,6,6,8,6,5,6,5,0x17,5,8,0,0,0,
+5,5,5,5,5,0x58b,0x5cb,0x60b,0x64b,0x7cb,0xa4b,0x1e4b,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0x144b,0x16cb,0x194b,0x1bcb,0x1e4b,0x784b,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,
+6,5,5,6,6,5,0,0,0,0,0,0,0,0,0,6,
+8,6,8,5,5,5,5,5,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+6,6,6,6,6,6,6,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,0,
+0,0,0x30b,0x34b,0x38b,0x3cb,0x40b,0x44b,0x48b,0x4cb,0x50b,0x7cb,0xa4b,0xccb,0xf4b,0x11cb,
+5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+8,8,8,6,6,6,6,8,8,6,6,0x17,0x17,0x10,0x17,0x17,
+0x17,0x17,6,0,0,0,0,0,0,0,0,0,0,0x10,0,0,
+5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+5,0,0,0,0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,
+0x249,0x289,0,0,0,0,0,0,5,5,5,5,5,5,5,6,
+6,6,6,6,8,6,6,6,6,6,6,6,6,0,0x49,0x89,
+0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x17,0x17,0x17,0x17,5,8,8,5,
0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,
-0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,5,5,5,8,8,8,6,6,6,6,
-0,0,6,6,8,8,8,8,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,
-6,8,5,6,6,6,6,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,6,
-0,0,0,0,0,0,0,0,5,6,6,6,6,6,6,8,
-8,6,6,6,5,5,5,5,5,6,6,6,6,6,6,6,
-6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,5,5,0x17,0x17,0x17,0,0,0,0,0,
+5,5,5,5,5,5,5,5,6,6,6,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,6,0x17,0x17,5,0,
+0,0,0,0,0,0,0,0,8,5,5,5,5,0x17,0x17,0x17,
+0x17,6,6,6,6,0x17,8,6,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,
+0x249,0x289,5,0x17,5,0x17,0x17,0x17,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,8,8,8,6,6,
+6,6,6,6,6,6,6,8,0,0x58b,0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b,
+0x74b,0x78b,0x7cb,0xa4b,0xccb,0xf4b,0x11cb,0x144b,0x16cb,0x194b,0x1bcb,0x1e4b,0x784b,0,0,0,
0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,
-6,6,6,6,6,6,6,8,6,6,0x17,0x17,0x17,5,0x17,0x17,
-5,0x17,0x17,0x17,0x17,0x17,0,0,0,0,0,0,0,0,0,0,
-0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x58b,0x5cb,0x60b,0x64b,0x68b,0x6cb,
-0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,0,0,0,0,0,
+5,5,5,5,8,8,8,6,6,6,8,8,6,8,6,6,
+0x17,0x17,0x17,0x17,0x17,0x17,6,5,5,6,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0x70b,0x74b,0x78b,0x7cb,0xa4b,0xccb,0xf4b,0x11cb,0x144b,0x16cb,0x194b,0x1bcb,0x1e4b,0,0,0,
-0x17,0x17,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,5,8,6,6,6,6,
-6,6,6,0,6,6,6,6,6,6,8,6,6,6,6,6,
-6,6,6,6,0,8,6,6,6,6,6,6,6,8,6,6,
-8,6,6,0,0,0,0,0,0,0,0,0,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,5,5,0,0,6,6,
-6,6,6,6,6,6,6,6,6,6,6,6,6,6,5,6,
-0,0,0,0,0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,
-0x249,0x289,0,0,0,0,0,0,5,5,5,5,5,5,5,0,
+0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,0,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,0,5,0,5,5,
5,5,0,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,0,
-0,0,6,0,6,6,0,6,5,5,5,5,5,5,5,5,
-5,5,8,8,8,8,8,0,6,6,0,8,8,6,8,6,
-5,0,0,0,0,0,0,0,5,5,5,5,5,5,0,5,
-5,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,5,6,6,8,8,0x17,
-0x17,0,0,0,0,0,0,0,6,8,6,0x17,0x17,0x17,0x17,0x17,
-0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,
-0x249,0x289,0,0,0,0,0,0,6,6,5,8,5,5,5,5,
-5,5,5,5,5,5,5,5,5,0,5,5,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-8,8,6,6,6,6,6,0,0,0,8,8,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0x19,0x1b,0x1b,0x1b,
-0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0x17,0xcd0b,0xcc0b,0xcb0b,0xd00b,
-0xca0b,0xcf0b,0xcb4b,0xd04b,0xc90b,0x37cb,0x37cb,0x364b,0x35cb,0xc94b,0x3fcb,0x350b,0x34cb,0x344b,0x344b,0x3ccb,
-0xcd0b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x19,0x19,0x34ca,0x354a,0x34ca,0x34ca,
-0x344a,0x348a,0x388a,0xf4a,0x11ca,0x64a,0x68a,0x6ca,0x70a,0x74a,0x78a,0,0x17,0x17,0x17,0x17,
-0x17,0,0,0,0,0,0,0,0,0,0,0,0x5ca,0x60a,0x64a,0x68a,
-0x6ca,0x70a,0x74a,0x78a,0x60a,0x64a,0x68a,0x6ca,0x70a,0x74a,0x78a,0x64a,0x68a,0x6ca,0x70a,0x74a,
-0x78a,0x58a,0x5ca,0x60a,0x64a,0x68a,0x6ca,0x70a,0x74a,0x78a,0x58a,0x5ca,0x60a,0x64a,0x68a,0x5ca,
-0x60a,0x60a,0x64a,0x68a,0x6ca,0x70a,0x74a,0x78a,0x58a,0x5ca,0x60a,0x60a,0x64a,0x68a,0xc08a,0xc18a,
-0x58a,0x5ca,0x60a,0x60a,0x64a,0x68a,0x60a,0x60a,0x64a,0x64a,0x64a,0x64a,0x6ca,0x70a,0x70a,0x70a,
-0x74a,0x74a,0x78a,0x78a,0x78a,0x78a,0x5ca,0x60a,0x64a,0x68a,0x6ca,0x58a,0x5ca,0x60a,0x64a,0x64a,
-0x68a,0x68a,0x5ca,0x60a,0x58a,0x5ca,0x348a,0x388a,0x454a,0x348a,0x388a,0x35ca,5,5,5,5,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+5,5,0,5,5,5,5,5,5,5,5,5,5,0x17,0,0,
+0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,
+5,5,5,5,8,8,8,6,6,6,6,6,6,6,6,0,
+0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,
+0,0,0,0,5,5,8,8,0,0,6,6,6,6,6,6,
+6,0,0,0,6,6,6,6,6,0,0,0,0,0,0,0,
+0,0,0,0,6,6,8,8,0,5,5,5,5,5,5,5,
+5,0,0,5,5,0,0,5,5,5,5,5,5,5,5,5,
+5,5,5,5,5,0,5,5,5,5,5,5,5,0,5,5,
+0,5,5,5,5,5,0,6,6,5,8,8,6,8,8,8,
+8,0,0,8,8,0,0,8,8,8,0,0,5,0,0,0,
+0,0,0,8,0,0,0,0,0,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+5,8,8,8,6,6,6,6,6,6,6,6,8,8,6,6,
+6,8,6,5,5,5,5,0x17,0x17,0x17,0x17,0x17,0x49,0x89,0xc9,0x109,
+0x149,0x189,0x1c9,0x209,0x249,0x289,0x17,0x17,0,0x17,6,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,5,8,8,8,6,
+6,6,6,6,6,8,6,8,8,8,8,6,6,8,6,6,
+5,5,0x17,5,0,0,0,0,0,0,0,0,0x49,0x89,0xc9,0x109,
+0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0,0,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,8,8,8,6,6,
+6,6,0,0,8,8,8,8,6,6,8,6,6,0x17,0x17,0x17,
+0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+0x17,0x17,0x17,0x17,5,5,5,5,6,6,0,0,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,5,8,8,8,6,
+6,6,6,6,6,6,6,8,8,6,8,6,6,0x17,0x17,0x17,
+5,0,0,0,0,0,0,0,0,0,0,0,0x49,0x89,0xc9,0x109,
+0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0,0,0x17,0x17,0x17,0x17,
+0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x49,0x89,0xc9,0x109,
+0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,5,5,5,0x17,0x17,0,
+5,5,5,5,5,5,5,6,8,6,8,8,6,6,6,6,
+6,6,8,6,5,0x17,0,0,0,0,0,0,8,8,6,6,
+6,6,8,6,6,6,6,6,0,0,0,0,0x49,0x89,0xc9,0x109,
+0x149,0x189,0x1c9,0x209,0x249,0x289,0x7cb,0xa4b,0x17,0x17,0x17,0x1b,5,5,5,5,
+5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,5,5,0x10,0x10,0x10,0x10,
-0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,6,5,5,5,
-5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,
-6,6,0,0,0,0,0,0,0,0,0,0,0x49,0x89,0xc9,0x109,
+5,5,5,5,5,5,5,5,8,8,8,6,6,6,6,6,
+6,6,6,6,8,6,6,0x17,0,0,0,0,0x49,0x89,0xc9,0x109,
+0x149,0x189,0x1c9,0x209,0x249,0x289,0x7cb,0xa4b,0xccb,0xf4b,0x11cb,0x144b,0x16cb,0x194b,0x1bcb,0,
+0,0,0,0,0,0,0,0,0,0,0,5,8,5,8,6,
+0x17,0x17,0x17,0,0,0,0,0,0,0,0,0,0x49,0x89,0xc9,0x109,
0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0,0,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,
-6,6,6,6,6,0x17,0,0,0,0,0,0,0,0,0,0,
+5,5,5,0,0,5,0,0,5,5,5,5,5,5,5,5,
+0,5,5,0,5,5,5,5,5,5,5,5,5,5,5,5,
+5,5,5,5,8,8,8,8,8,8,0,8,8,0,0,6,
+6,8,6,5,6,5,0x17,5,8,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,5,5,5,5,5,5,5,5,0,0,5,5,
+5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+5,5,5,5,5,8,8,8,6,6,6,6,0,0,6,6,
+8,8,8,8,5,5,5,5,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,6,6,6,6,6,6,8,5,6,
+6,6,6,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,6,0,0,0,0,
+0,0,0,0,5,6,6,6,6,6,6,8,8,6,6,6,
+5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,5,
+5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+5,5,5,5,0x17,0x17,0x17,0,0,0,0,0,0,0,0,0,
+0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,
+6,6,6,8,6,6,0x17,0x17,0x17,5,0x17,0x17,5,0x17,0x17,0x17,
+0x17,0x17,0,0,0,0,0,0,0,0,0,0,0x49,0x89,0xc9,0x109,
+0x149,0x189,0x1c9,0x209,0x249,0x289,0x58b,0x5cb,0x60b,0x64b,0x68b,0x6cb,0x17,0x17,0x17,0x17,
+0x17,0x17,0x17,0x17,0x17,0x17,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x70b,0x74b,0x78b,0x7cb,
+0xa4b,0xccb,0xf4b,0x11cb,0x144b,0x16cb,0x194b,0x1bcb,0x1e4b,0,0,0,0x17,0x17,5,5,
+5,5,5,5,5,5,5,5,5,5,5,5,5,0,5,5,
+5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,8,6,6,6,6,6,6,6,0,
+6,6,6,6,6,6,8,6,6,6,6,6,6,6,6,6,
+0,8,6,6,6,6,6,6,6,8,6,6,8,6,6,0,
+0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,0,0,6,6,6,6,6,6,
+6,6,6,6,6,6,6,6,6,6,5,6,0,0,0,0,
+0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,
+0,0,0,0,5,5,5,5,5,5,5,0,5,5,0,5,
+5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+5,5,5,5,5,6,6,6,6,6,6,0,0,0,6,0,
+6,6,0,6,5,5,5,5,5,5,5,5,5,5,8,8,
+8,8,8,0,6,6,0,8,8,6,8,6,5,0,0,0,
+0,0,0,0,5,5,5,5,5,5,0,5,5,0,5,5,
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,6,6,8,8,0x17,0x17,0,0,0,
+0,0,0,0,6,8,6,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+0x17,0x17,0x17,0x17,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,
+0,0,0,0,6,6,5,8,5,5,5,5,5,5,5,5,
+5,5,5,5,5,0,5,5,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,5,8,8,6,6,
+6,6,6,0,0,0,8,8,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0x19,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0x17,0xcd0b,0xcc0b,0xcb0b,0xd00b,0xca0b,0xcf0b,0xcb4b,0xd04b,
+0xc90b,0x37cb,0x37cb,0x364b,0x35cb,0xc94b,0x3fcb,0x350b,0x34cb,0x344b,0x344b,0x3ccb,0xcd0b,0x1b,0x1b,0x1b,
+0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x19,0x19,0x34ca,0x354a,0x34ca,0x34ca,0x344a,0x348a,0x388a,0xf4a,
+0x11ca,0x64a,0x68a,0x6ca,0x70a,0x74a,0x78a,0,0x17,0x17,0x17,0x17,0x17,0,0,0,
+0,0,0,0,0,0,0,0,0x5ca,0x60a,0x64a,0x68a,0x6ca,0x70a,0x74a,0x78a,
+0x60a,0x64a,0x68a,0x6ca,0x70a,0x74a,0x78a,0x64a,0x68a,0x6ca,0x70a,0x74a,0x78a,0x58a,0x5ca,0x60a,
+0x64a,0x68a,0x6ca,0x70a,0x74a,0x78a,0x58a,0x5ca,0x60a,0x64a,0x68a,0x5ca,0x60a,0x60a,0x64a,0x68a,
+0x6ca,0x70a,0x74a,0x78a,0x58a,0x5ca,0x60a,0x60a,0x64a,0x68a,0xc08a,0xc18a,0x58a,0x5ca,0x60a,0x60a,
+0x64a,0x68a,0x60a,0x60a,0x64a,0x64a,0x64a,0x64a,0x6ca,0x70a,0x70a,0x70a,0x74a,0x74a,0x78a,0x78a,
+0x78a,0x78a,0x5ca,0x60a,0x64a,0x68a,0x6ca,0x58a,0x5ca,0x60a,0x64a,0x64a,0x68a,0x68a,0x5ca,0x60a,
+0x58a,0x5ca,0x348a,0x388a,0x454a,0x348a,0x388a,0x35ca,5,5,5,5,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,0x17,0x17,0,0,0,0,0,
+0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,6,5,5,5,5,5,5,6,
+6,6,6,6,6,6,6,6,6,6,6,6,6,6,0,0,
+0,0,0,0,0,0,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,
+0x249,0x289,0,0,0,0,0,0,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,0,0,6,6,6,6,
+6,0x17,0,0,0,0,0,0,0,0,0,0,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,
+6,6,6,0x17,0x17,0x17,0x17,0x17,0x1b,0x1b,0x1b,0x1b,4,4,4,4,
+0x17,0x1b,0,0,0,0,0,0,0,0,0,0,0x49,0x89,0xc9,0x109,
+0x149,0x189,0x1c9,0x209,0x249,0x289,0,0x7cb,0x1e4b,0x788b,0x790b,0x798b,0x7a0b,0x7a8b,0,5,
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-6,6,6,6,6,6,6,0x17,0x17,0x17,0x17,0x17,0x1b,0x1b,0x1b,0x1b,
-4,4,4,4,0x17,0x1b,0,0,0,0,0,0,0,0,0,0,
-0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0x7cb,0x1e4b,0x788b,0x790b,0x798b,
-0x7a0b,0x7a8b,0,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,5,5,0,0,0,0,0,5,5,5,
-0x54b,0x58b,0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b,0x74b,0x78b,0x7cb,0x80b,0x84b,0x88b,0x8cb,0x90b,
-0x94b,0x98b,0x9cb,0xa0b,0x58b,0x5cb,0x60b,0x17,0x17,0x17,0x17,0,0,0,0,0,
-5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,6,
-5,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
+5,5,5,5,0,0,0,0,0,5,5,5,0x54b,0x58b,0x5cb,0x60b,
+0x64b,0x68b,0x6cb,0x70b,0x74b,0x78b,0x7cb,0x80b,0x84b,0x88b,0x8cb,0x90b,0x94b,0x98b,0x9cb,0xa0b,
+0x58b,0x5cb,0x60b,0x17,0x17,0x17,0x17,0,0,0,0,0,5,5,5,5,
+5,5,5,5,5,5,5,0,0,0,0,6,5,8,8,8,
8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
-8,8,8,8,0,0,0,0,0,0,0,6,6,6,6,4,
-4,4,4,4,4,4,4,4,4,4,4,4,4,4,0x17,4,
-6,0,0,0,0,0,0,0,0,0,0,0,8,8,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,
+8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
+0,0,0,0,0,0,0,6,6,6,6,4,4,4,4,4,
+4,4,4,4,4,4,4,4,4,4,0x17,4,6,0,0,0,
+0,0,0,0,0,0,0,0,8,8,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,4,4,4,4,0,4,4,4,4,4,4,4,
-0,4,4,0,5,5,5,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,5,5,5,0,0,5,0,0,
-0,0,0,0,0,0,0,0,5,5,5,5,0,0,0,0,
-0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,5,0,0,0,0,0,5,5,5,5,
-5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,
-5,5,5,5,5,5,5,5,5,5,0,0,0x1b,6,6,0x17,
-0x10,0x10,0x10,0x10,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,0,0,0,0,0,0,
+4,4,4,4,0,4,4,4,4,4,4,4,0,4,4,0,
+5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,5,5,5,0,0,5,0,0,0,0,0,0,
+0,0,0,0,5,5,5,5,0,0,0,0,0,0,0,0,
+5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+5,5,5,0,0,0,0,0,5,5,5,5,5,5,5,5,
+5,5,5,5,5,0,0,0,0,0,0,0,5,5,5,5,
+5,5,5,5,5,5,0,0,0x1b,6,6,0x17,0x10,0x10,0x10,0x10,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-6,6,6,6,6,6,6,6,6,6,6,6,6,6,0,0,
-6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
-6,6,6,0,0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b,
-0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,
-0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
-0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,8,8,6,6,6,0x1b,0x1b,
-0x1b,8,8,8,8,8,8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,6,
-6,6,6,6,6,6,6,0x1b,0x1b,6,6,6,6,6,6,6,
+0,0,0,0,0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,6,
+6,6,6,6,6,6,6,6,6,6,0,0,6,6,6,6,
+6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,0,
+0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0x1b,0x1b,0x1b,
0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
-0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,6,6,6,6,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
-0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,6,6,
-6,0x1b,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0x54b,0x58b,0x5cb,0x60b,
-0x64b,0x68b,0x6cb,0x70b,0x74b,0x78b,0x7cb,0x80b,0x84b,0x88b,0x8cb,0x90b,0x94b,0x98b,0x9cb,0xa0b,
-0,0,0,0,0,0,0,0,0,0,0,0,0x58b,0x5cb,0x60b,0x64b,
-0x68b,0x6cb,0x70b,0x74b,0x78b,0x7cb,0xa4b,0xccb,0xf4b,0x11cb,0x144b,0x16cb,0x194b,0x1bcb,0x58b,0x5cb,
-0x60b,0x64b,0x68b,0x58b,0x68b,0,0,0,0,0,0,0,0x249,0x289,0x49,0x89,
-0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,
-0x249,0x289,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,1,1,1,1,
+0x1b,0x1b,0x1b,0x1b,0x1b,8,8,6,6,6,0x1b,0x1b,0x1b,8,8,8,
+8,8,8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,6,6,6,6,6,
+6,6,6,0x1b,0x1b,6,6,6,6,6,6,6,0x1b,0x1b,0x1b,0x1b,
+0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+0x1b,0x1b,6,6,6,6,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,6,6,6,0x1b,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0x54b,0x58b,0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b,
+0x74b,0x78b,0x7cb,0x80b,0x84b,0x88b,0x8cb,0x90b,0x94b,0x98b,0x9cb,0xa0b,0,0,0,0,
+0,0,0,0,0,0,0,0,0x58b,0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b,0x74b,
+0x78b,0x7cb,0xa4b,0xccb,0xf4b,0x11cb,0x144b,0x16cb,0x194b,0x1bcb,0x58b,0x5cb,0x60b,0x64b,0x68b,0x58b,
+0x68b,0,0,0,0,0,0,0,0x249,0x289,0x49,0x89,0xc9,0x109,0x149,0x189,
+0x1c9,0x209,0x249,0x289,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0x49,0x89,
+0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,
-2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,
-1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,
-2,0,2,2,2,2,2,2,2,2,2,2,1,1,1,1,
+1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,
+1,1,1,1,1,1,2,2,2,2,2,2,2,0,2,2,
+2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,
+1,1,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,1,0,1,1,
+0,0,1,0,0,1,1,0,0,1,1,1,1,0,1,1,
+1,1,1,1,1,1,2,2,2,2,0,2,0,2,2,2,
+2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,
+1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+2,2,2,2,1,1,0,1,1,1,1,0,0,1,1,1,
+1,1,1,1,1,0,1,1,1,1,1,1,1,0,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
-1,0,1,1,0,0,1,0,0,1,1,0,0,1,1,1,
-1,0,1,1,1,1,1,1,1,1,2,2,2,2,0,2,
-0,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,
-2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,2,2,2,2,1,1,0,1,1,1,1,0,
-0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,
+2,2,2,2,2,2,2,2,1,1,0,1,1,1,1,0,
+1,1,1,1,1,0,1,0,0,0,1,1,1,1,1,1,
1,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,1,1,0,1,
-1,1,1,0,1,1,1,1,1,0,1,0,0,0,1,1,
-1,1,1,1,1,0,2,2,2,2,2,2,2,2,2,2,
-2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,
+1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+1,1,1,1,1,1,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,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,2,2,2,2,2,2,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,0x18,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,0x18,
-2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0x18,
+2,2,2,2,2,2,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,0x18,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,0x18,2,2,2,2,
+2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+1,1,1,1,1,1,1,1,1,1,1,0x18,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,0x18,2,2,2,2,2,2,1,1,1,1,
-1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,0x18,
-2,2,2,2,2,2,1,2,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,
-0x1c9,0x209,0x249,0x289,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0,6,6,6,
-6,6,6,6,6,6,6,6,6,6,6,6,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,6,
-6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
-6,6,6,0x1b,0x1b,0x1b,0x1b,6,6,6,6,6,6,6,6,6,
-6,6,6,6,6,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,6,0x1b,0x1b,
-0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,6,0x1b,0x1b,0x17,0x17,0x17,0x17,0x17,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,
-6,6,6,6,6,6,6,0,6,6,6,6,6,6,6,6,
-6,6,6,6,6,6,6,6,6,0,0,6,6,6,6,6,
-2,2,2,2,2,2,2,2,2,2,5,2,2,2,2,2,
-2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,
-0,0,0,0,0,2,2,2,2,2,2,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-6,6,0,6,6,0,6,6,6,6,6,0,0,0,0,0,
-4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,5,0x1b,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,
-6,6,6,6,6,6,6,4,4,4,4,4,4,4,0,0,
-5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,
-0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0,0x19,
-5,5,5,5,5,5,5,5,5,5,5,4,6,6,6,6,
-0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0,0,
-5,5,5,5,5,5,5,0,5,5,5,5,0,5,5,0,
-5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,
-5,5,5,5,5,0,0,0x58b,0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b,0x74b,0x78b,
-6,6,6,6,6,6,6,0,0,0,0,0,0,0,0,0,
-2,2,2,2,6,6,6,6,6,6,6,4,0,0,0,0,
-0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0x17,0x17,
-1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+2,0x18,2,2,2,2,2,2,1,1,1,1,1,1,1,1,
+1,1,1,1,1,1,1,1,2,2,2,0x18,2,2,2,2,
+2,2,1,2,0,0,0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0x249,0x289,
+0x49,0x89,0xc9,0x109,0x149,0x189,0x1c9,0x209,0,6,6,6,6,6,6,6,
+6,6,6,6,6,6,6,6,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,6,6,6,6,6,6,6,6,
+6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,0x1b,
+0x1b,0x1b,0x1b,6,6,6,6,6,6,6,6,6,6,6,6,6,
+6,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,6,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+0x1b,0x1b,0x1b,0x1b,6,0x1b,0x1b,0x17,0x17,0x17,0x17,0x17,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,6,6,6,6,6,
+6,6,6,0,6,6,6,6,6,6,6,6,6,6,6,6,
+6,6,6,6,6,0,0,6,6,6,6,6,2,2,2,2,
+2,2,2,2,2,2,5,2,2,2,2,2,2,2,2,2,
+2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,
+0,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,6,6,0,6,
+6,0,6,6,6,6,6,0,0,0,0,0,4,4,4,4,
+4,4,4,4,4,4,4,4,4,4,4,4,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,
+4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x49,0x89,0xc9,0x109,
+0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,5,0x1b,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,
+5,5,5,5,5,5,5,5,5,0,0,0,6,6,6,6,
+6,6,6,4,4,4,4,4,4,4,0,0,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,6,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,
+5,5,5,5,5,5,5,5,6,6,6,6,0x49,0x89,0xc9,0x109,
+0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0,0x19,5,5,5,5,
+5,5,5,5,5,5,5,4,6,6,6,6,0x49,0x89,0xc9,0x109,
+0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0,0,5,5,5,5,
+5,5,5,0,5,5,5,5,0,5,5,0,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,0,5,5,5,5,
+5,0,0,0x58b,0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b,0x74b,0x78b,6,6,6,6,
+6,6,6,0,0,0,0,0,0,0,0,0,2,2,2,2,
+6,6,6,6,6,6,6,4,0,0,0,0,0x49,0x89,0xc9,0x109,
+0x149,0x189,0x1c9,0x209,0x249,0x289,0,0,0,0,0x17,0x17,1,1,2,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0x58b,0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b,0x74b,0x78b,0x7cb,0xa4b,0xccb,0xf4b,0x11cb,0x144b,
-0x78cb,0x794b,0x814b,0x58b,0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b,0x74b,0x78b,0x1b,0x34cb,0x344b,0x3ccb,
-0x19,0x58b,0x5cb,0x788b,0x78cb,0,0,0,0,0,0,0,0,0,0,0,
-0x16cb,0x194b,0x1bcb,0x1e4b,0x800b,0x880b,0x900b,0x980b,0xa00b,0xa80b,0xb00b,0xb80b,0x784b,0x804b,0x884b,0x904b,
-0x984b,0xa04b,0xa84b,0xb04b,0xb84b,0x788b,0x808b,0x888b,0x908b,0x988b,0xa08b,0xa88b,0xb08b,0xb88b,0x78cb,0x80cb,
-0x984b,0xa04b,0xa84b,0xb04b,0xb84b,0x788b,0x808b,0x888b,0x908b,0x988b,0xa08b,0xa88b,0xb08b,0xb88b,0x1b,0x5cb,
-0x60b,0x64b,0x68b,0x6cb,0x70b,0x74b,0x78b,0x7cb,0x900b,0xa00b,0x804b,0x788b,0x344b,0x354b,0,0,
-0,0x58b,0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b,0x74b,0x78b,0x7cb,0xa4b,0xccb,0xf4b,0x11cb,0x144b,
-0x16cb,0x194b,0x1bcb,0x1e4b,0x800b,0x880b,0x900b,0x980b,0xa00b,0xa80b,0xb00b,0xb80b,0x784b,0x804b,0x884b,0x904b,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0x18,0x18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-5,5,5,5,0,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-0,5,5,0,5,0,0,5,0,5,5,5,5,5,5,5,
-5,5,5,0,5,5,5,5,0,5,0,5,0,0,0,0,
-0,0,5,0,0,0,0,5,0,5,0,5,0,5,5,5,
-0,5,5,0,5,0,0,5,0,5,0,5,0,5,0,5,
-0,5,5,0,5,0,0,5,5,5,5,0,5,5,5,5,
-5,5,5,0,5,5,5,5,0,5,5,5,5,0,5,0,
-5,5,5,5,5,5,5,5,5,5,0,5,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,
-0,5,5,5,0,5,5,5,5,5,0,5,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,
+2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0x58b,0x5cb,0x60b,
+0x64b,0x68b,0x6cb,0x70b,0x74b,0x78b,0x7cb,0xa4b,0xccb,0xf4b,0x11cb,0x144b,0x78cb,0x794b,0x814b,0x58b,
+0x5cb,0x60b,0x64b,0x68b,0x6cb,0x70b,0x74b,0x78b,0x1b,0x34cb,0x344b,0x3ccb,0x19,0x58b,0x5cb,0x788b,
+0x78cb,0,0,0,0,0,0,0,0,0,0,0,0x16cb,0x194b,0x1bcb,0x1e4b,
+0x800b,0x880b,0x900b,0x980b,0xa00b,0xa80b,0xb00b,0xb80b,0x784b,0x804b,0x884b,0x904b,0x984b,0xa04b,0xa84b,0xb04b,
+0xb84b,0x788b,0x808b,0x888b,0x908b,0x988b,0xa08b,0xa88b,0xb08b,0xb88b,0x78cb,0x80cb,0x984b,0xa04b,0xa84b,0xb04b,
+0xb84b,0x788b,0x808b,0x888b,0x908b,0x988b,0xa08b,0xa88b,0xb08b,0xb88b,0x1b,0x5cb,0x60b,0x64b,0x68b,0x6cb,
+0x70b,0x74b,0x78b,0x7cb,0x900b,0xa00b,0x804b,0x788b,0x344b,0x354b,0,0,0,0x58b,0x5cb,0x60b,
+0x64b,0x68b,0x6cb,0x70b,0x74b,0x78b,0x7cb,0xa4b,0xccb,0xf4b,0x11cb,0x144b,0x16cb,0x194b,0x1bcb,0x1e4b,
+0x800b,0x880b,0x900b,0x980b,0xa00b,0xa80b,0xb00b,0xb80b,0x784b,0x804b,0x884b,0x904b,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x18,0x18,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,
+0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,5,0,5,5,0,
+5,0,0,5,0,5,5,5,5,5,5,5,5,5,5,0,
+5,5,5,5,0,5,0,5,0,0,0,0,0,0,5,0,
+0,0,0,5,0,5,0,5,0,5,5,5,0,5,5,0,
+5,0,0,5,0,5,0,5,0,5,0,5,0,5,5,0,
+5,0,0,5,5,5,5,0,5,5,5,5,5,5,5,0,
+5,5,5,5,0,5,5,5,5,0,5,0,5,5,5,5,
+5,5,5,5,5,5,0,5,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,0,0,0,0,0,5,5,5,
+0,5,5,5,5,5,0,5,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,0,0,0,0,0x1b,0x1b,0x1b,0x1b,
+0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0x1b,0x1b,0x1b,0x1b,
+0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0x1b,0x1b,0x1b,
+0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0x1b,0x1b,0x1b,
+0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x2cb,0x2cb,0x30b,0x34b,
+0x38b,0x3cb,0x40b,0x44b,0x48b,0x4cb,0x50b,0x54b,0x54b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,
+0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b,
0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
-0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
-0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
-0x2cb,0x2cb,0x30b,0x34b,0x38b,0x3cb,0x40b,0x44b,0x48b,0x4cb,0x50b,0x54b,0x54b,0x1b,0x1b,0x1b,
-0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
-0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
-0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
-0x1b,0x1b,0x1b,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
-0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,
-0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,0,
+0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0x1b,0x1b,0x1b,0x1b,
+0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,0,0x1b,0x1b,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b,
0x1b,0x1b,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b,
0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
-0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,
-0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,
-0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,
+0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,
+0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0x1b,0x1b,0x1b,0x1b,
+0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0x1b,0x1b,0x1b,0x1b,
0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
-0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,
+0x1b,0x1b,0x1b,0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
-0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b,
-0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0x1b,0,0,0,
+0x1b,0x1b,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+0x1b,0x1b,0x1b,0x1b,0,0,0,0,0x1b,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+0x1b,0x1b,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0x1b,0x1b,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b,
-0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b,
-0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b,
-0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b,
-0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,
-0x1b,0x1b,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,
-0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,
-0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,
-0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0x1b,0x1b,0x1b,0x1b,
+0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,0,
+0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,0,
0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
-0x1b,0x1b,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,
-0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
-0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
-0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
-0x1b,0x1b,0x1b,0x1b,5,0x705,5,5,5,5,5,5,5,5,5,5,
+0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0x1b,
+0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,0,0,0x1b,0x1b,
+0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,
+0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+0x1b,0x1b,0x1b,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+5,0x705,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,0x645,5,5,5,5,5,5,5,5,5,5,5,
+0x645,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,5,5,5,0x645,5,
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,0x645,5,5,5,5,5,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,5,5,0x685,5,5,
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,0x685,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0xcc5,
+5,5,5,5,5,5,5,5,0xf45,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,0xf45,5,5,5,5,5,5,5,
+5,5,5,5,5,5,0x6c5,5,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,0x605,5,5,5,5,5,5,
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,0xcc5,5,5,5,5,5,5,5,5,0xf45,5,5,5,
-5,5,5,5,5,5,5,5,5,5,5,5,0xf45,5,5,5,
-5,5,5,5,5,5,5,5,5,5,0x6c5,5,5,5,5,5,
-5,5,5,5,5,5,5,5,5,5,5,5,5,0x605,5,5,
+5,5,5,5,5,0x605,5,5,5,5,5,5,5,5,5,5,
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,5,5,5,0x605,5,5,5,5,5,5,
+0x605,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0x605,
+5,5,5,5,5,5,5,5,5,5,5,5,5,0x645,5,5,
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,0x605,5,5,5,5,5,5,5,5,5,5,5,
+5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,0x605,5,5,5,5,5,5,5,5,5,5,5,5,
-5,0x645,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,0x785,5,5,5,5,5,5,5,5,5,5,5,
-5,5,5,5,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+0x785,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-0x10,0x10,0x10,0x10,0,0x10,0,0,0,0,0,0,0,0,0,0,
+0,0x10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,6,6,6,6,6,6,6,6,6,6,6,6,
-6,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
-0x11,0x11,0,0,0,0,0,0
+0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0,0,
+0,0,0,0
};
static const UTrie2 propsTrie={
propsTrie_index,
propsTrie_index+4692,
- NULL,
+ nullptr,
4692,
- 18324,
+ 18464,
0xa40,
0x12d4,
0x0,
0x0,
0x110000,
- 0x59e4,
- NULL, 0, false, false, 0, NULL
+ 0x5a70,
+ nullptr, 0, false, false, 0, nullptr
};
-static const uint16_t propsVectorsTrie_index[32692]={
-0x539,0x541,0x549,0x551,0x569,0x571,0x579,0x581,0x589,0x591,0x599,0x5a1,0x5a9,0x5b1,0x5b9,0x5c1,
-0x5c8,0x5d0,0x5d8,0x5e0,0x5e3,0x5eb,0x5f3,0x5fb,0x603,0x60b,0x613,0x61b,0x623,0x62b,0x633,0x63b,
-0x643,0x64b,0x652,0x65a,0x662,0x66a,0x672,0x67a,0x682,0x68a,0x68f,0x697,0x69e,0x6a6,0x6ae,0x6b6,
-0x6be,0x6c6,0x6ce,0x6d6,0x6dd,0x6e5,0x6ed,0x6f5,0x6fd,0x705,0x70d,0x715,0x71d,0x725,0x72d,0x735,
-0x1b39,0xd8a,0xe56,0x118d,0x12cc,0x1d01,0x1ea0,0x1cf9,0x13e6,0x13f6,0x13de,0x13ee,0x80a,0x810,0x818,0x820,
-0x828,0x82e,0x836,0x83e,0x846,0x84c,0x854,0x85c,0x864,0x86a,0x872,0x87a,0x882,0x88a,0x892,0x899,
-0x8a1,0x8a7,0x8af,0x8b7,0x8bf,0x8c5,0x8cd,0x8d5,0x8dd,0x13fe,0x8e5,0x8ed,0x8f5,0x8fc,0x904,0x90c,
-0x914,0x918,0x920,0x927,0x92f,0x937,0x93f,0x947,0x1719,0x1721,0x94f,0x957,0x95f,0x967,0x96f,0x976,
-0x177f,0x176f,0x1777,0x1a74,0x1a7c,0x140e,0x97e,0x1406,0x1662,0x1662,0x1664,0x1422,0x1423,0x1416,0x1418,0x141a,
-0x1787,0x1789,0x986,0x1789,0x98e,0x993,0x99b,0x178e,0x9a1,0x1789,0x9a7,0x9af,0xc6a,0x1796,0x1796,0x9b7,
-0x17a6,0x17a7,0x17a7,0x17a7,0x17a7,0x17a7,0x17a7,0x17a7,0x17a7,0x17a7,0x17a7,0x17a7,0x17a7,0x17a7,0x17a7,0x17a7,
-0x17a7,0x17a7,0x17a7,0x179e,0x9bf,0x17af,0x17af,0x9c7,0xb92,0xb9a,0xba2,0xbaa,0x17bf,0x17b7,0x9cf,0x9d7,
-0x9df,0x17c9,0x17d1,0x9e7,0x17c7,0x9ef,0x1b41,0xd92,0xbb2,0xbba,0xbc2,0xbc7,0x19da,0xc91,0xc98,0x1936,
-0xc42,0x1b49,0xd9a,0xda2,0xdaa,0xdb2,0xf60,0xf64,0x1a3a,0x1a3f,0xcd0,0xcd8,0x1ab0,0x1ab8,0x1c19,0xe5e,
-0x1ac0,0xd1e,0xd26,0x1ac8,0x1105,0x11b5,0xf38,0xdba,0x1956,0x193e,0x194e,0x1946,0x19f2,0x19ea,0x19a6,0x1a32,
-0x142b,0x142b,0x142b,0x142b,0x142e,0x142b,0x142b,0x1436,0x9f7,0x143e,0x9fb,0xa03,0x143e,0xa0b,0xa13,0xa1b,
-0x144e,0x1446,0x1456,0xa23,0xa2b,0x145e,0xa33,0xa3b,0x1466,0x146e,0x1476,0x147e,0xa43,0x1486,0x148d,0x1495,
-0x149d,0x14a5,0x14ad,0x14b5,0x14bd,0x14c4,0x14cc,0x14d4,0x14dc,0x14e4,0x14e7,0x14e9,0x17d9,0x18cc,0x18d2,0x1a22,
-0x14f1,0xa4b,0xa53,0x1617,0x161c,0x161f,0x1625,0x14f9,0x162d,0x162d,0x1509,0x1501,0x1511,0x1519,0x1521,0x1529,
-0x1531,0x1539,0x1541,0x1549,0x18da,0x192e,0x1a84,0x1be1,0x1559,0x155f,0x1567,0x156f,0x1551,0x1577,0x18e2,0x18e9,
-0x17e1,0x17e1,0x17e1,0x17e1,0x17e1,0x17e1,0x17e1,0x17e1,0x18f1,0x18f1,0x18f1,0x18f1,0x18f9,0x1900,0x1902,0x1909,
-0x1911,0x1915,0x1915,0x1918,0x1915,0x1915,0x191e,0x1915,0x195e,0x1a2a,0x1a8c,0xbcf,0xbd5,0x1d45,0x1d4d,0x1e2b,
-0x19ca,0x19be,0x19c2,0x1a47,0x19ae,0x19ae,0x19ae,0xc52,0x19b6,0xc72,0x1a0a,0xcc0,0xc5a,0xc62,0xc62,0x1ad0,
-0x19fa,0x1a94,0xca8,0xcb0,0xa5b,0x17e9,0x17e9,0xa63,0x17f1,0x17f1,0x17f1,0x17f1,0x17f1,0x17f1,0xa6b,0x73d,
-0x164a,0x166c,0xa73,0x1674,0xa7b,0x167c,0x1684,0x168c,0xa83,0xa88,0x1694,0x169b,0xa8d,0x17f9,0x1a1a,0xc4a,
-0xa95,0x16f6,0x16fd,0x16a3,0x1705,0x1709,0x16ab,0x16af,0x16c8,0x16c8,0x16ca,0x16b7,0x16bf,0x16bf,0x16c0,0x1711,
-0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,
-0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,
-0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,
-0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,
-0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,
-0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,
-0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,
-0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,
-0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,
-0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,
-0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,
-0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,
-0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1804,0x1966,0x1966,
-0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,
-0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,
-0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,
-0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,
-0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,
-0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,
-0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,
-0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,
-0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,
-0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,
-0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,
-0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,
-0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,
-0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,
-0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,
-0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,
-0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,
-0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,
-0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,
-0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,
-0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,
-0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,
-0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,
-0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,
-0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,
-0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,
-0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,
-0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,
-0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,
-0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,
-0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,
-0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,
-0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,
-0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,
-0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,
-0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,
-0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,
-0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,
-0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,
-0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,
-0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d2,0x16d9,0x1b31,0x1f0c,
-0x180c,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,
-0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,
-0x1812,0x1812,0x1812,0x1812,0xa9d,0x181a,0xaa5,0x1b51,0x1adc,0x1adc,0x1adc,0x1adc,0x1adc,0x1adc,0x1adc,0x1adc,
-0x1ad8,0xd2e,0x1aec,0x1ae4,0x1aee,0x1b59,0x1b59,0xdc2,0x19d2,0x1a4f,0x1aa4,0x1aa8,0x1a9c,0x1c11,0xce0,0xce7,
-0x1a02,0xcb8,0x1a57,0xcef,0x1af6,0x1af9,0xd36,0x1b61,0x1b09,0x1b01,0xd3e,0xdca,0x1b69,0x1b6d,0xdd2,0x100f,
-0x1b11,0xd46,0xd4e,0x1b75,0x1b85,0x1b7d,0xdda,0xf08,0xe66,0xe6e,0x1d9b,0xfbf,0x1e48,0x1e48,0x1b8d,0xde2,
-0x1761,0x1762,0x1763,0x1764,0x1765,0x1766,0x1767,0x1761,0x1762,0x1763,0x1764,0x1765,0x1766,0x1767,0x1761,0x1762,
-0x1763,0x1764,0x1765,0x1766,0x1767,0x1761,0x1762,0x1763,0x1764,0x1765,0x1766,0x1767,0x1761,0x1762,0x1763,0x1764,
-0x1765,0x1766,0x1767,0x1761,0x1762,0x1763,0x1764,0x1765,0x1766,0x1767,0x1761,0x1762,0x1763,0x1764,0x1765,0x1766,
-0x1767,0x1761,0x1762,0x1763,0x1764,0x1765,0x1766,0x1767,0x1761,0x1762,0x1763,0x1764,0x1765,0x1766,0x1767,0x1761,
-0x1762,0x1763,0x1764,0x1765,0x1766,0x1767,0x1761,0x1762,0x1763,0x1764,0x1765,0x1766,0x1767,0x1761,0x1762,0x1763,
-0x1764,0x1765,0x1766,0x1767,0x1761,0x1762,0x1763,0x1764,0x1765,0x1766,0x1767,0x1761,0x1762,0x1763,0x1764,0x1765,
-0x1766,0x1767,0x1761,0x1762,0x1763,0x1764,0x1765,0x1766,0x1767,0x1761,0x1762,0x1763,0x1764,0x1765,0x1766,0x1767,
-0x1761,0x1762,0x1763,0x1764,0x1765,0x1766,0x1767,0x1761,0x1762,0x1763,0x1764,0x1765,0x1766,0x1767,0x1761,0x1762,
-0x1763,0x1764,0x1765,0x1766,0x1767,0x1761,0x1762,0x1763,0x1764,0x1765,0x1766,0x1767,0x1761,0x1762,0x1763,0x1764,
-0x1765,0x1766,0x1767,0x1761,0x1762,0x1763,0x1764,0x1765,0x1766,0x1767,0x1761,0x1762,0x1763,0x1764,0x1765,0x1766,
-0x1767,0x1761,0x1762,0x1763,0x1764,0x1765,0x1766,0x1767,0x1761,0x1762,0x1763,0x1764,0x1765,0x1766,0x1767,0x1761,
-0x1762,0x1763,0x1764,0x1765,0x1766,0x1767,0x1761,0x1762,0x1763,0x1764,0x1765,0x1766,0x1767,0x1761,0x1762,0x1763,
-0x1764,0x1765,0x1766,0x1767,0x1761,0x1762,0x1763,0x1764,0x1765,0x1766,0x1767,0x1761,0x1762,0x1763,0x1764,0x1765,
-0x1766,0x1767,0x1761,0x1762,0x1763,0x1764,0x1765,0x1766,0x1767,0x1761,0x1762,0x1763,0x1764,0x1765,0x1766,0x1767,
-0x1761,0x1762,0x1763,0x1764,0x1765,0x1766,0x1767,0x1761,0x1762,0x1763,0x1764,0x1765,0x1766,0x1767,0x1761,0x1762,
-0x1763,0x1764,0x1765,0x1766,0x1767,0x1761,0x1762,0x1763,0x1764,0x1765,0x1766,0x1767,0x1761,0x1762,0x1763,0x1764,
-0x1765,0x1766,0x1767,0x1761,0x1762,0x1763,0x1764,0x1765,0x1766,0x1767,0x1761,0x1762,0x1763,0x1764,0x1765,0x1766,
-0x1767,0x1761,0x1762,0x1763,0x1764,0x1765,0x1766,0x1767,0x1761,0x1762,0x1763,0x1764,0x1765,0x1766,0x1767,0x1761,
-0x1762,0x1763,0x1764,0x1765,0x1766,0x1767,0x1761,0x1762,0x1763,0x1764,0x1765,0x1766,0x1767,0x1761,0x1762,0x1763,
-0x1764,0x1765,0x1766,0x1767,0x1761,0x1762,0x1763,0x1764,0x1765,0x1766,0x1767,0x1761,0x1762,0x1763,0x1764,0x1765,
-0x1766,0x1767,0x1761,0x1762,0x1763,0x1764,0x1765,0x1766,0x1767,0x1761,0x1762,0x1763,0x1764,0x1765,0x1766,0x1767,
-0x1761,0x1762,0x1763,0x1764,0x1765,0x1766,0x1767,0x1761,0x1762,0x1763,0x1764,0x1765,0x1766,0xaad,0xdea,0xded,
-0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,
-0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,
-0x1739,0x1739,0x1739,0x1739,0x1739,0x1739,0x1739,0x1739,0x1739,0x1739,0x1739,0x1739,0x1739,0x1739,0x1739,0x1739,
-0x1739,0x1739,0x1739,0x1739,0x1739,0x1739,0x1739,0x1739,0x1739,0x1739,0x1739,0x1739,0x1739,0x1739,0x1739,0x1739,
-0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,
-0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,
-0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,
-0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,
-0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,
-0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,
-0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,
-0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,
-0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,
-0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,
-0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,
-0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,
-0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x16e1,0x16e1,0x16e1,0x16e1,0x16e1,0x16e1,0x16e1,0x16e1,
-0x16e6,0x16ee,0x1926,0x13a3,0x1a12,0x1a12,0x13a7,0x13ae,0xab5,0xabd,0xac5,0x1597,0x159e,0x15a6,0xacd,0x15ae,
-0x15ec,0x15ec,0x157f,0x1587,0x15b6,0x15e3,0x15e4,0x15f4,0x15be,0x15c3,0x15cb,0x15d3,0xad5,0x15db,0xadd,0x158f,
-0xcc8,0x15fc,0xae5,0xaed,0x1604,0x160a,0x160f,0xaf5,0xb05,0x1652,0x165a,0x163d,0x1642,0xb0d,0xb15,0xafd,
-0x1729,0x1729,0x1729,0x1729,0x1729,0x1729,0x1729,0x1729,0x1729,0x1729,0x1729,0x1729,0x1729,0x1729,0x1729,0x1729,
-0x1729,0x1729,0x1729,0x1729,0x1729,0x1729,0x1729,0x1729,0x1729,0x1729,0x1729,0x1729,0x1731,0x1731,0x1731,0x1731,
-0x1564,0x1564,0x15a4,0x15e4,0x1624,0x1664,0x16a4,0x16e4,0x1720,0x1760,0x178c,0x17cc,0x180c,0x184c,0x188c,0x18cc,
-0x190c,0x1948,0x1988,0x19c8,0x1a08,0x1a3c,0x1a78,0x1ab8,0x1af8,0x1b38,0x1b74,0x1bb4,0x1bf4,0x1c34,0x1c74,0x1cb4,
-0xe59,0xa80,0xac0,0xb00,0xb40,0xb6b,0xf99,0xa40,0xed9,0xa40,0xa40,0xa40,0xa40,0xbab,0x13e2,0x13e2,
+static const uint16_t propsVectorsTrie_index[32764]={
+0x53e,0x546,0x54e,0x556,0x56e,0x576,0x57e,0x586,0x58e,0x596,0x59e,0x5a6,0x5ae,0x5b6,0x5be,0x5c6,
+0x5cd,0x5d5,0x5dd,0x5e5,0x5e8,0x5f0,0x5f8,0x600,0x608,0x610,0x618,0x620,0x628,0x630,0x638,0x640,
+0x648,0x650,0x657,0x65f,0x667,0x66f,0x677,0x67f,0x687,0x68f,0x694,0x69c,0x6a3,0x6ab,0x6b3,0x6bb,
+0x6c3,0x6cb,0x6d3,0x6db,0x6e2,0x6ea,0x6f2,0x6fa,0x702,0x70a,0x712,0x71a,0x722,0x72a,0x732,0x73a,
+0x1b43,0xd8f,0xe5b,0x1192,0x12d1,0x1d0b,0x1eaa,0x1d03,0x13f0,0x1400,0x13e8,0x13f8,0x80f,0x815,0x81d,0x825,
+0x82d,0x833,0x83b,0x843,0x84b,0x851,0x859,0x861,0x869,0x86f,0x877,0x87f,0x887,0x88f,0x897,0x89e,
+0x8a6,0x8ac,0x8b4,0x8bc,0x8c4,0x8ca,0x8d2,0x8da,0x8e2,0x1408,0x8ea,0x8f2,0x8fa,0x901,0x909,0x911,
+0x919,0x91d,0x925,0x92c,0x934,0x93c,0x944,0x94c,0x1723,0x172b,0x954,0x95c,0x964,0x96c,0x974,0x97b,
+0x1789,0x1779,0x1781,0x1a7e,0x1a86,0x1418,0x983,0x1410,0x166c,0x166c,0x166e,0x142c,0x142d,0x1420,0x1422,0x1424,
+0x1791,0x1793,0x98b,0x1793,0x993,0x998,0x9a0,0x1798,0x9a6,0x1793,0x9ac,0x9b4,0xc6f,0x17a0,0x17a0,0x9bc,
+0x17b0,0x17b1,0x17b1,0x17b1,0x17b1,0x17b1,0x17b1,0x17b1,0x17b1,0x17b1,0x17b1,0x17b1,0x17b1,0x17b1,0x17b1,0x17b1,
+0x17b1,0x17b1,0x17b1,0x17a8,0x9c4,0x17b9,0x17b9,0x9cc,0xb97,0xb9f,0xba7,0xbaf,0x17c9,0x17c1,0x9d4,0x9dc,
+0x9e4,0x17d3,0x17db,0x9ec,0x17d1,0x9f4,0x1b4b,0xd97,0xbb7,0xbbf,0xbc7,0xbcc,0x19e4,0xc96,0xc9d,0x1940,
+0xc47,0x1b53,0xd9f,0xda7,0xdaf,0xdb7,0xf65,0xf69,0x1a44,0x1a49,0xcd5,0xcdd,0x1aba,0x1ac2,0x1c23,0xe63,
+0x1aca,0xd23,0xd2b,0x1ad2,0x110a,0x11ba,0xf3d,0xdbf,0x1960,0x1948,0x1958,0x1950,0x19fc,0x19f4,0x19b0,0x1a3c,
+0x1435,0x1435,0x1435,0x1435,0x1438,0x1435,0x1435,0x1440,0x9fc,0x1448,0xa00,0xa08,0x1448,0xa10,0xa18,0xa20,
+0x1458,0x1450,0x1460,0xa28,0xa30,0x1468,0xa38,0xa40,0x1470,0x1478,0x1480,0x1488,0xa48,0x1490,0x1497,0x149f,
+0x14a7,0x14af,0x14b7,0x14bf,0x14c7,0x14ce,0x14d6,0x14de,0x14e6,0x14ee,0x14f1,0x14f3,0x17e3,0x18d6,0x18dc,0x1a2c,
+0x14fb,0xa50,0xa58,0x1621,0x1626,0x1629,0x162f,0x1503,0x1637,0x1637,0x1513,0x150b,0x151b,0x1523,0x152b,0x1533,
+0x153b,0x1543,0x154b,0x1553,0x18e4,0x1938,0x1a8e,0x1beb,0x1563,0x1569,0x1571,0x1579,0x155b,0x1581,0x18ec,0x18f3,
+0x17eb,0x17eb,0x17eb,0x17eb,0x17eb,0x17eb,0x17eb,0x17eb,0x18fb,0x18fb,0x18fb,0x18fb,0x1903,0x190a,0x190c,0x1913,
+0x191b,0x191f,0x191f,0x1922,0x191f,0x191f,0x1928,0x191f,0x1968,0x1a34,0x1a96,0xbd4,0xbda,0x1d4f,0x1d57,0x1e35,
+0x19d4,0x19c8,0x19cc,0x1a51,0x19b8,0x19b8,0x19b8,0xc57,0x19c0,0xc77,0x1a14,0xcc5,0xc5f,0xc67,0xc67,0x1ada,
+0x1a04,0x1a9e,0xcad,0xcb5,0xa60,0x17f3,0x17f3,0xa68,0x17fb,0x17fb,0x17fb,0x17fb,0x17fb,0x17fb,0xa70,0x742,
+0x1654,0x1676,0xa78,0x167e,0xa80,0x1686,0x168e,0x1696,0xa88,0xa8d,0x169e,0x16a5,0xa92,0x1803,0x1a24,0xc4f,
+0xa9a,0x1700,0x1707,0x16ad,0x170f,0x1713,0x16b5,0x16b9,0x16d2,0x16d2,0x16d4,0x16c1,0x16c9,0x16c9,0x16ca,0x171b,
+0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,
+0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,
+0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,
+0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,
+0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,
+0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,
+0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,
+0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,
+0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,
+0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,
+0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,
+0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,
+0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180b,0x180e,0x1970,0x1970,
+0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
+0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
+0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
+0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
+0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
+0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
+0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
+0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
+0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
+0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
+0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
+0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
+0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
+0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
+0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
+0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
+0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
+0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
+0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
+0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
+0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
+0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
+0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
+0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
+0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
+0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
+0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
+0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
+0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
+0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
+0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
+0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
+0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
+0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
+0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
+0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
+0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
+0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
+0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
+0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,
+0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16dc,0x16e3,0x1b3b,0x1f16,
+0x1816,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,
+0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,0x181c,
+0x181c,0x181c,0x181c,0x181c,0xaa2,0x1824,0xaaa,0x1b5b,0x1ae6,0x1ae6,0x1ae6,0x1ae6,0x1ae6,0x1ae6,0x1ae6,0x1ae6,
+0x1ae2,0xd33,0x1af6,0x1aee,0x1af8,0x1b63,0x1b63,0xdc7,0x19dc,0x1a59,0x1aae,0x1ab2,0x1aa6,0x1c1b,0xce5,0xcec,
+0x1a0c,0xcbd,0x1a61,0xcf4,0x1b00,0x1b03,0xd3b,0x1b6b,0x1b13,0x1b0b,0xd43,0xdcf,0x1b73,0x1b77,0xdd7,0x1014,
+0x1b1b,0xd4b,0xd53,0x1b7f,0x1b8f,0x1b87,0xddf,0xf0d,0xe6b,0xe73,0x1da5,0xfc4,0x1e52,0x1e52,0x1b97,0xde7,
+0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,
+0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,
+0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,
+0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,
+0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,
+0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,
+0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,
+0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,
+0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,
+0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,
+0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,
+0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,
+0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,
+0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,
+0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,
+0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,
+0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,
+0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,
+0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,
+0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,
+0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,
+0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0x1771,0x176b,0x176c,0x176d,0x176e,0x176f,0x1770,0xab2,0xdef,0xdf2,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,
+0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,0x1743,
+0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,
+0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,
+0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,
+0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,
+0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,
+0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,
+0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,
+0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,
+0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,
+0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,
+0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,
+0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,
+0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x163f,0x16eb,0x16eb,0x16eb,0x16eb,0x16eb,0x16eb,0x16eb,0x16eb,
+0x16f0,0x16f8,0x1930,0x139d,0x1a1c,0x1a1c,0x13a1,0x13a8,0xaba,0xac2,0xaca,0x15a1,0x15a8,0x15b0,0xad2,0x15b8,
+0x15f6,0x15f6,0x1589,0x1591,0x15c0,0x15ed,0x15ee,0x15fe,0x15c8,0x15cd,0x15d5,0x15dd,0xada,0x15e5,0xae2,0x1599,
+0xccd,0x1606,0xaea,0xaf2,0x160e,0x1614,0x1619,0xafa,0xb0a,0x165c,0x1664,0x1647,0x164c,0xb12,0xb1a,0xb02,
+0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,
+0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x1733,0x173b,0x173b,0x173b,0x173b,
+0x1578,0x1578,0x15b8,0x15f8,0x1638,0x1678,0x16b8,0x16f8,0x1734,0x1774,0x17a0,0x17e0,0x1820,0x1860,0x18a0,0x18e0,
+0x1920,0x195c,0x199c,0x19dc,0x1a1c,0x1a50,0x1a8c,0x1acc,0x1b0c,0x1b4c,0x1b88,0x1bc8,0x1c08,0x1c48,0x1c88,0x1cc8,
+0xe59,0xa80,0xac0,0xb00,0xb40,0xb6b,0xf99,0xa40,0xed9,0xa40,0xa40,0xa40,0xa40,0xbab,0x13f5,0x13f5,
0xf19,0xfd9,0xa40,0xa40,0xa40,0xbeb,0xf59,0xc2b,0xa40,0xc51,0xc91,0xcd1,0xd11,0xd51,0xe99,0xdc9,
-0x1322,0x1322,0x1322,0x1322,0x1322,0x1322,0x1322,0x1322,0x1322,0x1322,0x1322,0x1322,0x1322,0x1322,0x1322,0x1322,
-0x1322,0x1322,0x1322,0x1322,0x1019,0x1362,0x1157,0x1197,0x13a2,0x11a2,0x1422,0x1422,0x1422,0x1059,0x1079,0x10b9,
-0x1462,0x1462,0x11e2,0x14a2,0x10f9,0x1079,0x1079,0x1079,0x1079,0x1079,0x1079,0x1079,0x1079,0x1079,0x1079,0x1079,
-0x1079,0x1079,0x1079,0x1079,0x1079,0x1079,0x1079,0x1079,0x1079,0x1079,0x1079,0x1079,0x1079,0x1079,0x1079,0x1117,
+0x1335,0x1335,0x1335,0x1335,0x1335,0x1335,0x1335,0x1335,0x1335,0x1335,0x1335,0x1335,0x1335,0x1335,0x1335,0x1335,
+0x1335,0x1335,0x1335,0x1335,0x1019,0x1375,0x116a,0x11aa,0x13b5,0x11b5,0x1435,0x1435,0x1435,0x1059,0x108c,0x10cc,
+0x1475,0x1475,0x11f5,0x14b5,0x110c,0x108c,0x108c,0x108c,0x108c,0x108c,0x108c,0x108c,0x108c,0x108c,0x108c,0x108c,
+0x108c,0x108c,0x108c,0x108c,0x108c,0x108c,0x108c,0x108c,0x108c,0x108c,0x108c,0x108c,0x108c,0x108c,0x108c,0x112a,
0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,
0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xd89,
0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,
@@ -1629,1954 +1638,1958 @@ static const uint16_t propsVectorsTrie_index[32692]={
0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xd89,
0xe09,0xe19,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,
0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xa40,0xd89,
-0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,
-0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x1222,
-0x12e2,0x12e2,0x12e2,0x12e2,0x12e2,0x12e2,0x12e2,0x12e2,0x12e2,0x12e2,0x12e2,0x12e2,0x12e2,0x12e2,0x12e2,0x12e2,
-0x12e2,0x12e2,0x12e2,0x12e2,0x12e2,0x12e2,0x12e2,0x12e2,0x12e2,0x12e2,0x12e2,0x12e2,0x12e2,0x12e2,0x12e2,0x1262,
-0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,
-0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,
-0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,
-0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,
-0xc27,0xc2a,0xdf5,0x1deb,0x1017,0x745,0x559,0x10b1,0xcf7,0xd76,0x559,0x559,0x1d11,0xf10,0xf18,0x1e33,
-0xc7a,0xc81,0xc89,0x1b95,0x1dcb,0x559,0x1dab,0xfe7,0x1b9d,0xdfd,0xe05,0xe0d,0x103f,0x74d,0x559,0x559,
-0x1ba5,0x1ba5,0x755,0x559,0x1e60,0x10c9,0x1e58,0x10d1,0x1f4c,0x11cb,0x559,0x559,0x559,0x559,0x559,0x559,
-0x559,0x559,0x559,0xe15,0x1fa4,0x12c4,0x1346,0x1347,0x1f6c,0x11f3,0x11fa,0x1201,0x1303,0x1307,0x127b,0x1211,
-0x1c21,0x1c23,0xe76,0xe7d,0x1bad,0x1bb5,0xe1d,0xf30,0x1d09,0xef8,0xf00,0xfdf,0x1d29,0x1d2d,0x1d35,0x105f,
-0xfaf,0x1d8b,0x75d,0x559,0x10b9,0x10c1,0x1d93,0xfb7,0xf91,0xf97,0xf9f,0xfa7,0x559,0x559,0x559,0x559,
-0x1ed0,0x1ec8,0x113b,0x1143,0x1e13,0x1e0b,0x1087,0x559,0x559,0x559,0x559,0x559,0x1dfb,0x1047,0x104f,0x1057,
-0x1dc3,0x1dbb,0xff7,0x1133,0x1d3d,0xf40,0x765,0x559,0x1097,0x109f,0x76d,0x559,0x559,0x559,0x559,0x559,
-0x1f44,0x11ad,0x775,0x559,0x559,0x1e23,0x1e1b,0x108f,0x1283,0x1289,0x1291,0x559,0x559,0x1219,0x121d,0x1225,
-0x1f04,0x1efc,0x1195,0x1ef4,0x1eec,0x1185,0x1df3,0x1037,0x1357,0x135a,0x135a,0x559,0x559,0x559,0x559,0x559,
-0x10e9,0x10ee,0x10f6,0x10fd,0x1125,0x112b,0x559,0x559,0x1169,0x116d,0x1175,0x11bd,0x11c3,0x77d,0x559,0x559,
-0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x11db,0x136a,0x136f,0x1377,0x559,0x559,0x781,0x1f8c,0x126b,
-0x1a5f,0x1a5f,0x1a5f,0x1a5f,0x1a5f,0x1a5f,0x1a5f,0x1a5f,0x1a5f,0x1a5f,0x1a5f,0x1a5f,0x1a5f,0x1a5f,0x1a5f,0x1a5f,
-0x1a5f,0x1a5f,0x1a5f,0x1a5f,0x1a5f,0x1a5f,0x1a5f,0x1a5f,0x1a5f,0x1a5f,0x1a5f,0x1a64,0xcff,0xd06,0xd06,0xd06,
-0x1a6c,0x1a6c,0x1a6c,0xd0e,0x1e50,0x1e50,0x1e50,0x1e50,0x1e50,0x1e50,0x789,0x559,0x559,0x559,0x559,0x559,
-0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,
-0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,
-0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,
-0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x78d,0x1fbc,0x1fbc,0x12d4,0x1c2b,0x1c2b,0x1c2b,0x1c2b,0x1c2b,
-0x1c2b,0x1c2b,0x1c2b,0x1c2b,0x1c2b,0x1c2b,0x1c2b,0x1c2b,0x1c2b,0x1c2b,0x1c2b,0x1c2b,0xe85,0xfff,0x1007,0x1fc4,
-0x130f,0x1317,0xf48,0x1de3,0x1ddb,0x1027,0x102f,0x795,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,
-0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x1f64,0x1f5c,0x11eb,
-0x559,0x559,0x559,0x1d21,0x1d21,0xf20,0x1d19,0xf28,0x559,0x559,0x111d,0x559,0x559,0x559,0x559,0x559,
-0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,
-0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,
-0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,
-0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x799,0x559,0x559,0x559,0x559,0x559,
-0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,
-0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x1d73,0x1d73,0x1d73,0xf6c,0xf71,
-0x7a1,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,
-0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,
-0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,
-0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x1fd4,0x1337,0x133e,0x1fcc,0x1fcc,0x1fcc,0x7a9,
-0x559,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0xb2b,0x184f,0xb33,0x1850,0x1847,0x1858,0x185e,0x1866,
-0xb3b,0x198e,0x198e,0x7b1,0x559,0x559,0x559,0x1362,0x11e3,0x197e,0x197e,0xc32,0xd16,0x559,0x559,0x559,
-0x559,0x1897,0x189e,0xb43,0x18a1,0xb4b,0xb53,0xb5b,0x189b,0xb63,0xb6b,0xb73,0x18a0,0x18a8,0x1897,0x189e,
-0x189a,0x18a1,0x18a9,0x1898,0x189f,0x189b,0xb7a,0x186e,0x1876,0x187d,0x1884,0x1871,0x1879,0x1880,0x1887,0xb82,
-0x188f,0x1e78,0x1e78,0x1e78,0x1e78,0x1e78,0x1e78,0x1e78,0x1e78,0x1e78,0x1e78,0x1e78,0x1e78,0x1e78,0x1e78,0x1e78,
-0x1e78,0x1e68,0x1e6b,0x1e68,0x1e72,0x10d9,0x7b9,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,
-0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,
-0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x12f0,0x12f8,0x12fb,0x12fb,0x12fb,0x12fb,0x12fb,
-0x12fb,0x110d,0x1115,0x1fdc,0x134f,0x7c1,0x559,0x559,0x559,0x1f84,0x122d,0x7c9,0x559,0x559,0x559,0x559,
-0x559,0x559,0x559,0x559,0x559,0x7cd,0x131f,0x1f94,0x1273,0x559,0x559,0x559,0x559,0x559,0x559,0x559,
-0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x7d5,0x137f,0x559,0x559,0x559,0x559,0x559,0x559,0x559,
-0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,
-0x12dc,0x1db3,0x1db3,0x1db3,0x1db3,0x1db3,0x1db3,0xfef,0x559,0x1ec0,0x1eb8,0x10e1,0x559,0x559,0x559,0x559,
-0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,
-0x559,0x559,0x559,0x559,0x7dd,0x1f54,0x11d3,0x559,0x559,0x1235,0x1236,0x7e5,0x559,0x559,0x559,0x559,
-0x559,0xebd,0xec5,0xecd,0xed5,0xedd,0xee5,0xeec,0xef0,0x559,0x559,0x559,0x559,0x559,0x559,0x559,
-0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,
-0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,
-0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,
-0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x7e9,0x1067,0x1e03,0x106d,0x1e03,0x1075,0x107a,0x107f,
-0x107f,0x1e88,0x1ea8,0x1eb0,0x1f1c,0x1e90,0x1f74,0x1e98,0x1f24,0x1f7c,0x1f7c,0x119d,0x11a5,0x124d,0x1253,0x125b,
-0x1263,0x1f9c,0x1f9c,0x1f9c,0x1f9c,0x12a7,0x1f9c,0x12ad,0x12b1,0x7f1,0x7f1,0x7f1,0x7f1,0x7f1,0x7f1,0x7f1,
-0x7f1,0x7f1,0x7f1,0x7f1,0x7f1,0x7f1,0x7f1,0x7f1,0x7f1,0x7f1,0x7f1,0x7f1,0x7f1,0x7f1,0x7f1,0x7f1,
-0x7f1,0x7f1,0x7f1,0x7f1,0x7f1,0x7f1,0x7f1,0x7f1,0x7f2,0xb8a,0x18b1,0x18b1,0x18b1,0x7fa,0x7fa,0x7fa,
-0x7fa,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x802,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,
-0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,
-0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,
-0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,
-0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0x7fa,0xbdd,0xbe4,0xbec,0xbf4,0x196e,0x196e,0x196e,
-0xbfc,0xc04,0xc07,0x199e,0x1996,0xc3a,0xd56,0xd5a,0xd5e,0x559,0x559,0x559,0x559,0xd66,0x1b19,0xd6e,
-0xf58,0x1822,0xb1d,0xb23,0x101f,0xc0f,0x19e2,0xca0,0x559,0x1837,0x182a,0x182f,0x1976,0xc17,0xc1f,0x114b,
-0x1151,0x1d7b,0xf79,0x1d6b,0xf50,0x1327,0x132f,0x559,0x559,0x1da3,0x1da3,0x1da3,0x1da3,0x1da3,0x1da3,0x1da3,
-0x1da3,0x1da3,0xfc7,0xfcf,0xfd7,0x12e4,0x12e8,0x559,0x559,0x1b21,0xd7e,0x1b29,0x1b29,0xd82,0xe8d,0xe95,
-0xe9d,0x1bf1,0x1bd9,0x1bf9,0x1c01,0x1be9,0xe25,0xe29,0xe30,0xe38,0xe3c,0xe44,0xe4c,0xe4e,0xe4e,0xe4e,
-0xe4e,0x1c62,0x1c6a,0x1c62,0x1c70,0x1c78,0x1c43,0x1c80,0x1c88,0x1c62,0x1c90,0x1c98,0x1c9f,0x1ca7,0x1c4b,0x1c62,
-0x1cac,0x1c53,0x1c5a,0x1cb4,0x1cba,0x1d5c,0x1d63,0x1d55,0x1cc1,0x1cc9,0x1cd1,0x1cd9,0x1dd3,0x1ce1,0x1ce9,0xea5,
-0xead,0x1c33,0x1c33,0x1c33,0xeb5,0x1d83,0x1d83,0xf81,0xf89,0x559,0x559,0x559,0x559,0x559,0x559,0x559,
-0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,
-0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x1e3b,0x1e3b,0x1e3b,0x1e3b,0x1e3b,0x1e3b,0x1e3b,
-0x1e3b,0x1e3b,0x1e3b,0x1e3b,0x1e3b,0x1e3b,0x1e3b,0x1e40,0x1e3b,0x1e3b,0x1e3b,0x10a7,0x10a9,0x559,0x559,0x559,
-0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,
-0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,
-0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,
-0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,
-0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1159,0x1c3b,0x1f14,0x1f14,0x1f14,0x1f14,0x1f14,0x1f14,
-0x1f14,0x1f34,0x1161,0x123e,0x1245,0x1f3c,0x1f3c,0x1f3c,0x1f3c,0x1f3c,0x1f3c,0x1f3c,0x1f3c,0x1f3c,0x1f3c,0x1f3c,
-0x117d,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,
-0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,
-0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x1bbd,0x1bbd,0x1bbd,0x1bbd,0x1bbd,0x1bbd,0x1bbd,
-0x1bbd,0x1bbd,0x1bbd,0x1bbd,0x1bbd,0x1bbd,0x1bbd,0x1bbd,0x1bbd,0x1bbd,0x1bbd,0x1bbf,0x1bbd,0x1bc7,0x1bbd,0x1bbd,
-0x1bbd,0x1bbd,0x1bbd,0x1bbd,0x1bca,0x1bbd,0x1bbd,0x1bbd,0x1bbd,0x1bbd,0x1bd1,0x1209,0x559,0x559,0x559,0x559,
-0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,
-0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x1ee0,0x1ee0,0x1ee0,0x1ee0,0x1ee0,0x1ee0,0x1ee0,
-0x1ee0,0x1ee0,0x1ee0,0x1ee0,0x1ee0,0x1ee0,0x1ee0,0x1ee0,0x1ee0,0x1ee0,0x1ee0,0x1ee0,0x1ee0,0x1ee0,0x1ee0,0x1ee0,
-0x1ee4,0x1fb4,0x1fb4,0x1fb4,0x1fb4,0x1fb4,0x1fb4,0x1fb4,0x1fb4,0x1fb4,0x1fb4,0x1fb4,0x1fb4,0x1fb4,0x1fb4,0x1299,
-0x129f,0x12b9,0x12bc,0x12bc,0x12bc,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,
-0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x559,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,
-0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,
-0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,
-0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18bc,
-0x1387,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,
-0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,
-0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x138f,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,
-0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,
-0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,
-0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,
-0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x18c4,0x18c4,0x18c4,0x18c4,0x18c4,0x18c4,0x18c4,
-0x18c4,0x18c4,0x18c4,0x18c4,0x18c4,0x18c4,0x18c4,0x18c4,0x18c4,0x13b6,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,
-0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,
-0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,
-0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1393,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,
-0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,
-0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x139b,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,
-0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,
-0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,
-0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,
-0x1387,0x1387,0x1387,0x1387,0x1387,0x1387,0x1393,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,
-0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,
-0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,
-0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,
-0x13be,0x1cf1,0x1cf1,0x1cf1,0x1cf1,0x1cf1,0x1cf1,0x13c6,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,
-0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,
-0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,
-0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,
-0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x13ce,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,
-0x1f2c,0x1f2c,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,
-0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x13d6,0x1fe4,0x1fe4,0x1fe4,
-0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,
-0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,
-0x1fe4,0x1fe4,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,
-0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,
-0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,
-0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,
-0x1751,0x1741,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,
-0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,
-0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,
-0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,
-0x1759,0x1749,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,
-0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,
-0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,
-0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,0x1751,
-0x1751,0x1751,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,
-0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,
-0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,
-0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,0x1759,
-0x1759,0x1759,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,
-0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,
-0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,
-0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,0x18b9,
-0x18b9,0x18b9,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,
-0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,
-0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,
-0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,0x1c09,
-0x1c09,0x1c09,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,
-0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,
-0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,
-0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,0x1e80,
-0x1e80,0x1e80,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,
-0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,
-0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,
-0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,0x1ed8,
-0x1ed8,0x1ed8,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,
-0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,
-0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,
-0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,0x1f2c,
-0x1f2c,0x1f2c,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,
-0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,
-0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,
-0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,0x1fac,
-0x1fac,0x1fac,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,
-0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,
-0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,
-0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,0x1fe4,
-0x1fe4,0x1fe4,0x538,0x538,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e5,0x2ee,0x2e8,
-0x2e8,0x2eb,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,
-0x2e2,0x2e2,0x2e2,0x2e2,0x7da,0x7d4,0x7b9,0x79e,0x7aa,0x7a7,0x79e,0x7b6,0x7a4,0x7b0,0x79e,0x7cb,
-0x7c2,0x7b3,0x7d7,0x7ad,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x7bf,0x7bc,
-0x7c5,0x7c5,0x7c5,0x7d4,0x79e,0x7e6,0x7e6,0x7e6,0x7e6,0x7e6,0x7e6,0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,
-0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,0x7a4,
-0x7aa,0x7b0,0x7d1,0x798,0x7ce,0x7e3,0x7e3,0x7e3,0x7e3,0x7e3,0x7e3,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,
-0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7a4,
-0x7c8,0x7a1,0x7c5,0x2e2,0,0,0,0,0,0,0,0,0,0,0,0,
+0x12b5,0x12b5,0x12b5,0x12b5,0x12b5,0x12b5,0x12b5,0x12b5,0x12b5,0x12b5,0x12b5,0x12b5,0x12b5,0x12b5,0x12b5,0x12b5,
+0x12b5,0x12b5,0x12b5,0x12b5,0x12b5,0x12b5,0x12b5,0x12b5,0x12b5,0x12b5,0x12b5,0x12b5,0x12b5,0x12b5,0x12b5,0x1235,
+0x12f5,0x12f5,0x12f5,0x12f5,0x12f5,0x12f5,0x12f5,0x12f5,0x12f5,0x12f5,0x12f5,0x12f5,0x12f5,0x12f5,0x12f5,0x12f5,
+0x12f5,0x12f5,0x12f5,0x12f5,0x12f5,0x12f5,0x12f5,0x12f5,0x12f5,0x12f5,0x12f5,0x12f5,0x12f5,0x12f5,0x12f5,0x1275,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0xc2c,0xc2f,0xdfa,0x1df5,0x101c,0x74a,0x55e,0x10b6,0xcfc,0xd7b,0x55e,0x55e,0x1d1b,0xf15,0xf1d,0x1e3d,
+0xc7f,0xc86,0xc8e,0x1b9f,0x1dd5,0x55e,0x1db5,0xfec,0x1ba7,0xe02,0xe0a,0xe12,0x1044,0x752,0x55e,0x55e,
+0x1baf,0x1baf,0x75a,0x55e,0x1e6a,0x10ce,0x1e62,0x10d6,0x1f56,0x11d0,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0xe1a,0x1fae,0x12c9,0x134b,0x134c,0x1f76,0x11f8,0x11ff,0x1206,0x1308,0x130c,0x1280,0x1216,
+0x1c2b,0x1c2d,0xe7b,0xe82,0x1bb7,0x1bbf,0xe22,0xf35,0x1d13,0xefd,0xf05,0xfe4,0x1d33,0x1d37,0x1d3f,0x1064,
+0xfb4,0x1d95,0x762,0x55e,0x10be,0x10c6,0x1d9d,0xfbc,0xf96,0xf9c,0xfa4,0xfac,0x55e,0x55e,0x55e,0x55e,
+0x1eda,0x1ed2,0x1140,0x1148,0x1e1d,0x1e15,0x108c,0x55e,0x55e,0x55e,0x55e,0x55e,0x1e05,0x104c,0x1054,0x105c,
+0x1dcd,0x1dc5,0xffc,0x1138,0x1d47,0xf45,0x76a,0x55e,0x109c,0x10a4,0x772,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x1f4e,0x11b2,0x77a,0x55e,0x55e,0x1e2d,0x1e25,0x1094,0x1288,0x128e,0x1296,0x55e,0x55e,0x121e,0x1222,0x122a,
+0x1f0e,0x1f06,0x119a,0x1efe,0x1ef6,0x118a,0x1dfd,0x103c,0x135c,0x135f,0x135f,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x10ee,0x10f3,0x10fb,0x1102,0x112a,0x1130,0x55e,0x55e,0x116e,0x1172,0x117a,0x11c2,0x11c8,0x782,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x11e0,0x136f,0x1374,0x137c,0x55e,0x55e,0x786,0x1f96,0x1270,
+0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,
+0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a69,0x1a6e,0xd04,0xd0b,0xd0b,0xd0b,
+0x1a76,0x1a76,0x1a76,0xd13,0x1e5a,0x1e5a,0x1e5a,0x1e5a,0x1e5a,0x1e5a,0x78e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x792,0x1fc6,0x1fc6,0x12d9,0x1c35,0x1c35,0x1c35,0x1c35,0x1c35,
+0x1c35,0x1c35,0x1c35,0x1c35,0x1c35,0x1c35,0x1c35,0x1c35,0x1c35,0x1c35,0x1c35,0x1c35,0xe8a,0x1004,0x100c,0x1fce,
+0x1314,0x131c,0xf4d,0x1ded,0x1de5,0x102c,0x1034,0x79a,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x1f6e,0x1f66,0x11f0,
+0x55e,0x55e,0x55e,0x1d2b,0x1d2b,0xf25,0x1d23,0xf2d,0x55e,0x55e,0x1122,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x79e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x1d7d,0x1d7d,0x1d7d,0xf71,0xf76,
+0x7a6,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x1fde,0x133c,0x1343,0x1fd6,0x1fd6,0x1fd6,0x7ae,
+0x55e,0x1849,0x1849,0x1849,0x1849,0x1849,0x1849,0x1849,0xb30,0x1859,0xb38,0x185a,0x1851,0x1862,0x1868,0x1870,
+0xb40,0x1998,0x1998,0x7b6,0x55e,0x55e,0x55e,0x1367,0x11e8,0x1988,0x1988,0xc37,0xd1b,0x55e,0x55e,0x55e,
+0x55e,0x18a1,0x18a8,0xb48,0x18ab,0xb50,0xb58,0xb60,0x18a5,0xb68,0xb70,0xb78,0x18aa,0x18b2,0x18a1,0x18a8,
+0x18a4,0x18ab,0x18b3,0x18a2,0x18a9,0x18a5,0xb7f,0x1878,0x1880,0x1887,0x188e,0x187b,0x1883,0x188a,0x1891,0xb87,
+0x1899,0x1e82,0x1e82,0x1e82,0x1e82,0x1e82,0x1e82,0x1e82,0x1e82,0x1e82,0x1e82,0x1e82,0x1e82,0x1e82,0x1e82,0x1e82,
+0x1e82,0x1e72,0x1e75,0x1e72,0x1e7c,0x10de,0x7be,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x12f5,0x12fd,0x1300,0x1300,0x1300,0x1300,0x1300,
+0x1300,0x1112,0x111a,0x1fe6,0x1354,0x7c6,0x55e,0x55e,0x55e,0x1f8e,0x1232,0x7ce,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x7d2,0x1324,0x1f9e,0x1278,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x7da,0x1384,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x12e1,0x1dbd,0x1dbd,0x1dbd,0x1dbd,0x1dbd,0x1dbd,0xff4,0x55e,0x1eca,0x1ec2,0x10e6,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x7e2,0x1f5e,0x11d8,0x55e,0x55e,0x123a,0x123b,0x7ea,0x55e,0x55e,0x55e,0x55e,
+0x55e,0xec2,0xeca,0xed2,0xeda,0xee2,0xeea,0xef1,0xef5,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x7ee,0x106c,0x1e0d,0x1072,0x1e0d,0x107a,0x107f,0x1084,
+0x1084,0x1e92,0x1eb2,0x1eba,0x1f26,0x1e9a,0x1f7e,0x1ea2,0x1f2e,0x1f86,0x1f86,0x11a2,0x11aa,0x1252,0x1258,0x1260,
+0x1268,0x1fa6,0x1fa6,0x1fa6,0x1fa6,0x12ac,0x1fa6,0x12b2,0x12b6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,
+0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,
+0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f6,0x7f7,0xb8f,0x18bb,0x18bb,0x18bb,0x7ff,0x7ff,0x7ff,
+0x7ff,0x1990,0x1990,0x1990,0x1990,0x1990,0x1990,0x1990,0x807,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,
+0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,
+0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,
+0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,
+0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0x7ff,0xbe2,0xbe9,0xbf1,0xbf9,0x1978,0x1978,0x1978,
+0xc01,0xc09,0xc0c,0x19a8,0x19a0,0xc3f,0xd5b,0xd5f,0xd63,0x55e,0x55e,0x55e,0x55e,0xd6b,0x1b23,0xd73,
+0xf5d,0x182c,0xb22,0xb28,0x1024,0xc14,0x19ec,0xca5,0x55e,0x1841,0x1834,0x1839,0x1980,0xc1c,0xc24,0x1150,
+0x1156,0x1d85,0xf7e,0x1d75,0xf55,0x132c,0x1334,0x55e,0x55e,0x1dad,0x1dad,0x1dad,0x1dad,0x1dad,0x1dad,0x1dad,
+0x1dad,0x1dad,0xfcc,0xfd4,0xfdc,0x12e9,0x12ed,0x55e,0x55e,0x1b2b,0xd83,0x1b33,0x1b33,0xd87,0xe92,0xe9a,
+0xea2,0x1bfb,0x1be3,0x1c03,0x1c0b,0x1bf3,0xe2a,0xe2e,0xe35,0xe3d,0xe41,0xe49,0xe51,0xe53,0xe53,0xe53,
+0xe53,0x1c6c,0x1c74,0x1c6c,0x1c7a,0x1c82,0x1c4d,0x1c8a,0x1c92,0x1c6c,0x1c9a,0x1ca2,0x1ca9,0x1cb1,0x1c55,0x1c6c,
+0x1cb6,0x1c5d,0x1c64,0x1cbe,0x1cc4,0x1d66,0x1d6d,0x1d5f,0x1ccb,0x1cd3,0x1cdb,0x1ce3,0x1ddd,0x1ceb,0x1cf3,0xeaa,
+0xeb2,0x1c3d,0x1c3d,0x1c3d,0xeba,0x1d8d,0x1d8d,0xf86,0xf8e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x1e45,0x1e45,0x1e45,0x1e45,0x1e45,0x1e45,0x1e45,
+0x1e45,0x1e45,0x1e45,0x1e45,0x1e45,0x1e45,0x1e45,0x1e4a,0x1e45,0x1e45,0x1e45,0x10ac,0x10ae,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,
+0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,
+0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,
+0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,
+0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x115e,0x1c45,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,0x1f1e,
+0x1f1e,0x1f3e,0x1166,0x1243,0x124a,0x1f46,0x1f46,0x1f46,0x1f46,0x1f46,0x1f46,0x1f46,0x1f46,0x1f46,0x1f46,0x1f46,
+0x1182,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x1bc7,0x1bc7,0x1bc7,0x1bc7,0x1bc7,0x1bc7,0x1bc7,
+0x1bc7,0x1bc7,0x1bc7,0x1bc7,0x1bc7,0x1bc7,0x1bc7,0x1bc7,0x1bc7,0x1bc7,0x1bc7,0x1bc9,0x1bc7,0x1bd1,0x1bc7,0x1bc7,
+0x1bc7,0x1bc7,0x1bc7,0x1bc7,0x1bd4,0x1bc7,0x1bc7,0x1bc7,0x1bc7,0x1bc7,0x1bdb,0x120e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x1eea,0x1eea,0x1eea,0x1eea,0x1eea,0x1eea,0x1eea,
+0x1eea,0x1eea,0x1eea,0x1eea,0x1eea,0x1eea,0x1eea,0x1eea,0x1eea,0x1eea,0x1eea,0x1eea,0x1eea,0x1eea,0x1eea,0x1eea,
+0x1eee,0x1fbe,0x1fbe,0x1fbe,0x1fbe,0x1fbe,0x1fbe,0x1fbe,0x1fbe,0x1fbe,0x1fbe,0x1fbe,0x1fbe,0x1fbe,0x1fbe,0x129e,
+0x12a4,0x12be,0x12c1,0x12c1,0x12c1,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,
+0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x55e,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,
+0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,
+0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,
+0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c6,
+0x138c,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,
+0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,
+0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x13d0,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,
+0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x1ff6,0x13e0,0x138c,0x138c,0x138c,0x138c,
+0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
+0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
+0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
+0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x18ce,0x18ce,0x18ce,0x18ce,
+0x18ce,0x18ce,0x18ce,0x18ce,0x18ce,0x18ce,0x18ce,0x18ce,0x18ce,0x18ce,0x18ce,0x18ce,0x13b0,0x138c,0x138c,0x138c,
+0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
+0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
+0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138d,0x1fee,0x1fee,0x1fee,0x1fee,
+0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,
+0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1395,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
+0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
+0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
+0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
+0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138d,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,
+0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,
+0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,
+0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,
+0x1c13,0x1c13,0x1c13,0x13b8,0x1cfb,0x1cfb,0x1cfb,0x1cfb,0x1cfb,0x1cfb,0x13c0,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,
+0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,
+0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,
+0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,
+0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x13c8,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,
+0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,
+0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x13d8,
+0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,
+0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,
+0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,
+0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,
+0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,
+0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,
+0x175b,0x175b,0x175b,0x175b,0x174b,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,
+0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,
+0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,
+0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,
+0x1763,0x1763,0x1763,0x1763,0x1753,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,
+0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,
+0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,
+0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,
+0x175b,0x175b,0x175b,0x175b,0x175b,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,
+0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,
+0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,
+0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,0x1763,
+0x1763,0x1763,0x1763,0x1763,0x1763,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,
+0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,
+0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,
+0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,
+0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,
+0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,
+0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,
+0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,
+0x1c13,0x1c13,0x1c13,0x1c13,0x1c13,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,
+0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,
+0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,
+0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,
+0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1e8a,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,
+0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,
+0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,
+0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,
+0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1ee2,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,
+0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,
+0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,
+0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,
+0x1f36,0x1f36,0x1f36,0x1f36,0x1f36,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,
+0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,
+0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,
+0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,
+0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fb6,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,
+0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,
+0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,
+0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,
+0x1fee,0x1fee,0x1fee,0x1fee,0x1fee,0x53d,0x53d,0x53d,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,
+0x2e2,0x2e5,0x2ee,0x2e8,0x2e8,0x2eb,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,
+0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x2e2,0x7da,0x7d4,0x7b9,0x79e,0x7aa,0x7a7,0x79e,0x7b6,
+0x7a4,0x7b0,0x79e,0x7cb,0x7c2,0x7b3,0x7d7,0x7ad,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,0x79b,
+0x79b,0x79b,0x7bf,0x7bc,0x7c5,0x7c5,0x7c5,0x7d4,0x79e,0x7e6,0x7e6,0x7e6,0x7e6,0x7e6,0x7e6,0x7e0,
+0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,0x7e0,
+0x7e0,0x7e0,0x7e0,0x7a4,0x7aa,0x7b0,0x7d1,0x798,0x7ce,0x7e3,0x7e3,0x7e3,0x7e3,0x7e3,0x7e3,0x7dd,
+0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,0x7dd,
+0x7dd,0x7dd,0x7dd,0x7a4,0x7c8,0x7a1,0x7c5,0x2e2,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x300,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,
+0,0,0,0,0,0,0,0,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x300,0x2f1,0x2f1,
0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,
-0x2f1,0x2f1,0x2f1,0x2f1,0x2f4,0x64b,0x7ef,0x7f2,0x651,0x7f2,0x7ec,0x645,0x63c,0x2fa,0x65a,0x2fd,
-0x7f5,0x633,0x648,0x7e9,0x64e,0x657,0x639,0x639,0x63f,0x2f7,0x645,0x642,0x63c,0x639,0x65a,0x2fd,
-0x636,0x636,0x636,0x64b,0x306,0x306,0x306,0x306,0x306,0x306,0x663,0x306,0x306,0x306,0x306,0x306,
-0x306,0x306,0x306,0x306,0x663,0x306,0x306,0x306,0x306,0x306,0x306,0x654,0x663,0x306,0x306,0x306,
-0x306,0x306,0x663,0x65d,0x660,0x660,0x303,0x303,0x303,0x303,0x65d,0x303,0x660,0x660,0x660,0x303,
-0x660,0x660,0x303,0x303,0x65d,0x303,0x660,0x660,0x303,0x303,0x303,0x654,0x65d,0x660,0x660,0x303,
-0x660,0x303,0x65d,0x303,0x312,0x669,0x312,0x309,0x312,0x309,0x312,0x309,0x312,0x309,0x312,0x309,
-0x312,0x309,0x312,0x309,0x30f,0x666,0x312,0x669,0x312,0x309,0x312,0x309,0x312,0x309,0x312,0x669,
-0x312,0x309,0x312,0x309,0x312,0x309,0x312,0x309,0x312,0x309,0x66f,0x666,0x312,0x309,0x312,0x669,
-0x312,0x309,0x312,0x309,0x312,0x666,0x672,0x66c,0x312,0x309,0x312,0x309,0x666,0x312,0x309,0x312,
-0x309,0x312,0x309,0x672,0x66c,0x66f,0x666,0x312,0x669,0x312,0x309,0x312,0x669,0x675,0x66f,0x666,
-0x312,0x669,0x312,0x309,0x312,0x309,0x66f,0x666,0x312,0x309,0x312,0x309,0x312,0x309,0x312,0x309,
-0x312,0x309,0x312,0x309,0x312,0x309,0x312,0x309,0x312,0x309,0x66f,0x666,0x312,0x309,0x312,0x669,
-0x312,0x309,0x312,0x309,0x312,0x309,0x312,0x309,0x312,0x309,0x312,0x309,0x312,0x312,0x309,0x312,
-0x309,0x312,0x309,0x30c,0x315,0x321,0x321,0x315,0x321,0x315,0x321,0x321,0x315,0x321,0x321,0x321,
-0x315,0x315,0x321,0x321,0x321,0x321,0x315,0x321,0x321,0x315,0x321,0x321,0x321,0x315,0x315,0x315,
-0x321,0x321,0x315,0x321,0x324,0x318,0x321,0x315,0x321,0x315,0x321,0x321,0x315,0x321,0x315,0x315,
-0x321,0x315,0x321,0x324,0x318,0x321,0x321,0x321,0x315,0x321,0x315,0x321,0x321,0x315,0x315,0x31e,
-0x321,0x315,0x315,0x315,0x31e,0x31e,0x31e,0x31e,0x327,0x327,0x31b,0x327,0x327,0x31b,0x327,0x327,
-0x31b,0x324,0x678,0x324,0x678,0x324,0x678,0x324,0x678,0x324,0x678,0x324,0x678,0x324,0x678,0x324,
-0x678,0x315,0x324,0x318,0x324,0x318,0x324,0x318,0x321,0x315,0x324,0x318,0x324,0x318,0x324,0x318,
-0x324,0x318,0x324,0x318,0x318,0x327,0x327,0x31b,0x324,0x318,0x9cf,0x9cf,0x9d2,0x9cc,0x324,0x318,
-0x324,0x318,0x324,0x318,0x324,0x318,0x324,0x318,0x324,0x318,0x324,0x318,0x324,0x318,0x324,0x318,
-0x324,0x318,0x324,0x318,0x324,0x318,0x324,0x318,0x9d2,0x9cc,0x9d2,0x9cc,0x9cf,0x9c9,0x9d2,0x9cc,
-0xb8b,0xc84,0x9cf,0x9c9,0x9cf,0x9c9,0x9d2,0x9cc,0x9d2,0x9cc,0x9d2,0x9cc,0x9d2,0x9cc,0x9d2,0x9cc,
-0x9d2,0x9cc,0x9d2,0x9cc,0xc84,0xc84,0xc84,0xd7d,0xd7d,0xd7d,0xd80,0xd80,0xd7d,0xd80,0xd80,0xd7d,
-0xd7d,0xd80,0xebe,0xec1,0xec1,0xec1,0xec1,0xebe,0xec1,0xebe,0xec1,0xebe,0xec1,0xebe,0xec1,0xebe,
-0x32a,0x67b,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,
-0x32a,0x67b,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,
+0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f1,0x2f4,0x64b,0x7ef,0x7f2,0x651,0x7f2,0x7ec,0x645,
+0x63c,0x2fa,0x65a,0x2fd,0x7f5,0x633,0x648,0x7e9,0x64e,0x657,0x639,0x639,0x63f,0x2f7,0x645,0x642,
+0x63c,0x639,0x65a,0x2fd,0x636,0x636,0x636,0x64b,0x306,0x306,0x306,0x306,0x306,0x306,0x663,0x306,
+0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x306,0x663,0x306,0x306,0x306,0x306,0x306,0x306,0x654,
+0x663,0x306,0x306,0x306,0x306,0x306,0x663,0x65d,0x660,0x660,0x303,0x303,0x303,0x303,0x65d,0x303,
+0x660,0x660,0x660,0x303,0x660,0x660,0x303,0x303,0x65d,0x303,0x660,0x660,0x303,0x303,0x303,0x654,
+0x65d,0x660,0x660,0x303,0x660,0x303,0x65d,0x303,0x312,0x669,0x312,0x309,0x312,0x309,0x312,0x309,
+0x312,0x309,0x312,0x309,0x312,0x309,0x312,0x309,0x30f,0x666,0x312,0x669,0x312,0x309,0x312,0x309,
+0x312,0x309,0x312,0x669,0x312,0x309,0x312,0x309,0x312,0x309,0x312,0x309,0x312,0x309,0x66f,0x666,
+0x312,0x309,0x312,0x669,0x312,0x309,0x312,0x309,0x312,0x666,0x672,0x66c,0x312,0x309,0x312,0x309,
+0x666,0x312,0x309,0x312,0x309,0x312,0x309,0x672,0x66c,0x66f,0x666,0x312,0x669,0x312,0x309,0x312,
+0x669,0x675,0x66f,0x666,0x312,0x669,0x312,0x309,0x312,0x309,0x66f,0x666,0x312,0x309,0x312,0x309,
+0x312,0x309,0x312,0x309,0x312,0x309,0x312,0x309,0x312,0x309,0x312,0x309,0x312,0x309,0x66f,0x666,
+0x312,0x309,0x312,0x669,0x312,0x309,0x312,0x309,0x312,0x309,0x312,0x309,0x312,0x309,0x312,0x309,
+0x312,0x312,0x309,0x312,0x309,0x312,0x309,0x30c,0x315,0x321,0x321,0x315,0x321,0x315,0x321,0x321,
+0x315,0x321,0x321,0x321,0x315,0x315,0x321,0x321,0x321,0x321,0x315,0x321,0x321,0x315,0x321,0x321,
+0x321,0x315,0x315,0x315,0x321,0x321,0x315,0x321,0x324,0x318,0x321,0x315,0x321,0x315,0x321,0x321,
+0x315,0x321,0x315,0x315,0x321,0x315,0x321,0x324,0x318,0x321,0x321,0x321,0x315,0x321,0x315,0x321,
+0x321,0x315,0x315,0x31e,0x321,0x315,0x315,0x315,0x31e,0x31e,0x31e,0x31e,0x327,0x327,0x31b,0x327,
+0x327,0x31b,0x327,0x327,0x31b,0x324,0x678,0x324,0x678,0x324,0x678,0x324,0x678,0x324,0x678,0x324,
+0x678,0x324,0x678,0x324,0x678,0x315,0x324,0x318,0x324,0x318,0x324,0x318,0x321,0x315,0x324,0x318,
+0x324,0x318,0x324,0x318,0x324,0x318,0x324,0x318,0x318,0x327,0x327,0x31b,0x324,0x318,0x9cf,0x9cf,
+0x9d2,0x9cc,0x324,0x318,0x324,0x318,0x324,0x318,0x324,0x318,0x324,0x318,0x324,0x318,0x324,0x318,
+0x324,0x318,0x324,0x318,0x324,0x318,0x324,0x318,0x324,0x318,0x324,0x318,0x9d2,0x9cc,0x9d2,0x9cc,
+0x9cf,0x9c9,0x9d2,0x9cc,0xb8e,0xc87,0x9cf,0x9c9,0x9cf,0x9c9,0x9d2,0x9cc,0x9d2,0x9cc,0x9d2,0x9cc,
+0x9d2,0x9cc,0x9d2,0x9cc,0x9d2,0x9cc,0x9d2,0x9cc,0xc87,0xc87,0xc87,0xd80,0xd80,0xd80,0xd83,0xd83,
+0xd80,0xd83,0xd83,0xd80,0xd80,0xd83,0xec1,0xec4,0xec4,0xec4,0xec4,0xec1,0xec4,0xec1,0xec4,0xec1,
+0xec4,0xec1,0xec4,0xec1,0x32a,0x67b,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,
+0x32a,0x32a,0x32a,0x32a,0x32a,0x67b,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,
0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,
-0x32d,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,
-0x32a,0x32a,0x32a,0x32a,0x32a,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0xc87,0xc87,0x342,0x342,0x342,0x342,
-0x342,0x342,0x342,0x342,0x342,0x339,0x339,0x339,0x339,0x339,0x339,0x339,0x336,0x336,0x333,0x333,
-0x681,0x333,0x339,0x684,0x33c,0x684,0x684,0x684,0x33c,0x684,0x339,0x339,0x687,0x33f,0x333,0x333,
-0x333,0x333,0x333,0x333,0x67e,0x67e,0x67e,0x67e,0x330,0x67e,0x333,0xb01,0x342,0x342,0x342,0x342,
-0x342,0x333,0x333,0x333,0x333,0x333,0x9de,0x9de,0x9db,0x9d8,0x9db,0xc8a,0xc8a,0xc8a,0xc8a,0xc8a,
-0xc8a,0xc8a,0xc8a,0xc8a,0xc8a,0xc8a,0xc8a,0xc8a,0xc8a,0xc8a,0xc8a,0xc8a,0x68a,0x68a,0x68a,0x68a,
+0x32a,0x32a,0x32a,0x32a,0x32d,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,
+0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x32a,0x9d5,0x9d5,0x9d5,0x9d5,0x9d5,0xc8a,0xc8a,
+0x342,0x342,0x342,0x342,0x342,0x342,0x342,0x342,0x342,0x339,0x339,0x339,0x339,0x339,0x339,0x339,
+0x336,0x336,0x333,0x333,0x681,0x333,0x339,0x684,0x33c,0x684,0x684,0x684,0x33c,0x684,0x339,0x339,
+0x687,0x33f,0x333,0x333,0x333,0x333,0x333,0x333,0x67e,0x67e,0x67e,0x67e,0x330,0x67e,0x333,0xb04,
+0x342,0x342,0x342,0x342,0x342,0x333,0x333,0x333,0x333,0x333,0x9de,0x9de,0x9db,0x9d8,0x9db,0xc8d,
+0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,0xc8d,
+0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,
0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,
0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,
0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,
-0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68a,0x68d,0x68d,0x92d,0x68d,
-0x68d,0x930,0xb04,0xb04,0xb04,0xb04,0xb04,0xb04,0xb04,0xb04,0xb04,0xc3c,0xd47,0xd47,0xd47,0xd47,
-0xd47,0xd47,0xd47,0xd47,0xe82,0xe82,0xe82,0xe82,0xe85,0xd4a,0xd4a,0xd4a,0x690,0x690,0xb07,0xc81,
-0xc81,0xc81,0xc81,0xc81,0xc81,0xc81,0xc81,0xc81,0xc81,0xc81,0xc81,0xc81,0xf6c,0xf69,0xf6c,0xf69,
-0x34e,0x357,0xf6c,0xf69,9,9,0x35d,0xec4,0xec4,0xec4,0x345,0x14af,9,9,9,9,
-0x35a,0x348,0x36c,0x34b,0x36c,0x36c,0x36c,9,0x36c,9,0x36c,0x36c,0x363,0x696,0x696,0x696,
-0x696,0x696,0x696,0x696,0x696,0x696,0x696,0x696,0x696,0x696,0x696,0x696,0x696,0x696,9,0x696,
-0x696,0x696,0x696,0x696,0x696,0x696,0x36c,0x36c,0x363,0x363,0x363,0x363,0x363,0x693,0x693,0x693,
-0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x360,0x693,
-0x693,0x693,0x693,0x693,0x693,0x693,0x363,0x363,0x363,0x363,0x363,0xf6c,0x36f,0x36f,0x372,0x36c,
-0x36c,0x36f,0x366,0x9e1,0xb94,0xb91,0x369,0x9e1,0x369,0x9e1,0x369,0x9e1,0x369,0x9e1,0x354,0x351,
-0x354,0x351,0x354,0x351,0x354,0x351,0x354,0x351,0x354,0x351,0x354,0x351,0x36f,0x36f,0x366,0x360,
-0xb43,0xb40,0xb8e,0xc90,0xc8d,0xc93,0xc90,0xc8d,0xd83,0xd86,0xd86,0xd86,0x9f0,0x6a2,0x37e,0x381,
-0x37e,0x37e,0x37e,0x381,0x37e,0x37e,0x37e,0x37e,0x381,0x9f0,0x381,0x37e,0x69f,0x69f,0x69f,0x69f,
-0x69f,0x69f,0x69f,0x69f,0x69f,0x6a2,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,
-0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x699,0x699,0x699,0x699,
-0x699,0x699,0x699,0x699,0x699,0x69c,0x699,0x699,0x699,0x699,0x699,0x699,0x699,0x699,0x699,0x699,
-0x699,0x699,0x699,0x699,0x699,0x699,0x699,0x699,0x9ea,0x69c,0x378,0x37b,0x378,0x378,0x378,0x37b,
-0x378,0x378,0x378,0x378,0x37b,0x9ea,0x37b,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,
-0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x381,0x37b,
-0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x375,0x939,0x93c,0x91e,0x91e,0x1116,
-0x9e4,0x9e4,0xb9a,0xb97,0x9ed,0x9e7,0x9ed,0x9e7,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,
+0x68d,0x68d,0x92d,0x68d,0x68d,0x930,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xb07,0xc3f,
+0xd4a,0xd4a,0xd4a,0xd4a,0xd4a,0xd4a,0xd4a,0xd4a,0xe85,0xe85,0xe85,0xe85,0xe88,0xd4d,0xd4d,0xd4d,
+0x690,0x690,0xb0a,0xc84,0xc84,0xc84,0xc84,0xc84,0xc84,0xc84,0xc84,0xc84,0xc84,0xc84,0xc84,0xc84,
+0xf6f,0xf6c,0xf6f,0xf6c,0x34e,0x357,0xf6f,0xf6c,9,9,0x35d,0xec7,0xec7,0xec7,0x345,0x14b8,
+9,9,9,9,0x35a,0x348,0x36c,0x34b,0x36c,0x36c,0x36c,9,0x36c,9,0x36c,0x36c,
+0x363,0x696,0x696,0x696,0x696,0x696,0x696,0x696,0x696,0x696,0x696,0x696,0x696,0x696,0x696,0x696,
+0x696,0x696,9,0x696,0x696,0x696,0x696,0x696,0x696,0x696,0x36c,0x36c,0x363,0x363,0x363,0x363,
+0x363,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x693,
+0x693,0x693,0x360,0x693,0x693,0x693,0x693,0x693,0x693,0x693,0x363,0x363,0x363,0x363,0x363,0xf6f,
+0x36f,0x36f,0x372,0x36c,0x36c,0x36f,0x366,0x9e1,0xb97,0xb94,0x369,0x9e1,0x369,0x9e1,0x369,0x9e1,
+0x369,0x9e1,0x354,0x351,0x354,0x351,0x354,0x351,0x354,0x351,0x354,0x351,0x354,0x351,0x354,0x351,
+0x36f,0x36f,0x366,0x360,0xb46,0xb43,0xb91,0xc93,0xc90,0xc96,0xc93,0xc90,0xd86,0xd89,0xd89,0xd89,
+0x9f0,0x6a2,0x37e,0x381,0x37e,0x37e,0x37e,0x381,0x37e,0x37e,0x37e,0x37e,0x381,0x9f0,0x381,0x37e,
+0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x6a2,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,
+0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,0x69f,
+0x699,0x699,0x699,0x699,0x699,0x699,0x699,0x699,0x699,0x69c,0x699,0x699,0x699,0x699,0x699,0x699,
+0x699,0x699,0x699,0x699,0x699,0x699,0x699,0x699,0x699,0x699,0x699,0x699,0x9ea,0x69c,0x378,0x37b,
+0x378,0x378,0x378,0x37b,0x378,0x378,0x378,0x378,0x37b,0x9ea,0x37b,0x378,0x37e,0x378,0x37e,0x378,
0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,
+0x37e,0x378,0x381,0x37b,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x375,0x939,
+0x93c,0x91e,0x91e,0x111c,0x9e4,0x9e4,0xb9d,0xb9a,0x9ed,0x9e7,0x9ed,0x9e7,0x37e,0x378,0x37e,0x378,
0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,
-0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x381,0x37b,0x37e,0x378,0xb9a,0xb97,0x37e,
-0x378,0xb9a,0xb97,0x37e,0x378,0xb9a,0xb97,0xec7,0x381,0x37b,0x381,0x37b,0x37e,0x378,0x381,0x37b,
-0x37e,0x378,0x381,0x37b,0x381,0x37b,0x381,0x37b,0x37e,0x378,0x381,0x37b,0x381,0x37b,0x381,0x37b,
-0x37e,0x378,0x381,0x37b,0x9f0,0x9ea,0x381,0x37b,0x381,0x37b,0x381,0x37b,0x381,0x37b,0xd8c,0xd89,
-0x381,0x37b,0xeca,0xec7,0xeca,0xec7,0xeca,0xec7,0xc00,0xbfd,0xc00,0xbfd,0xc00,0xbfd,0xc00,0xbfd,
-0xc00,0xbfd,0xc00,0xbfd,0xc00,0xbfd,0xc00,0xbfd,0xef7,0xef4,0xef7,0xef4,0xfe7,0xfe4,0xfe7,0xfe4,
-0xfe7,0xfe4,0xfe7,0xfe4,0xfe7,0xfe4,0xfe7,0xfe4,0xfe7,0xfe4,0xfe7,0xfe4,0x114f,0x114c,0x1329,0x1326,
-0x14e5,0x14e2,0x14e5,0x14e2,0x14e5,0x14e2,0x14e5,0x14e2,0xc,0x393,0x393,0x393,0x393,0x393,0x393,0x393,
+0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,
+0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x378,0x37e,0x381,0x37b,0x37e,
+0x378,0xb9d,0xb9a,0x37e,0x378,0xb9d,0xb9a,0x37e,0x378,0xb9d,0xb9a,0xeca,0x381,0x37b,0x381,0x37b,
+0x37e,0x378,0x381,0x37b,0x37e,0x378,0x381,0x37b,0x381,0x37b,0x381,0x37b,0x37e,0x378,0x381,0x37b,
+0x381,0x37b,0x381,0x37b,0x37e,0x378,0x381,0x37b,0x9f0,0x9ea,0x381,0x37b,0x381,0x37b,0x381,0x37b,
+0x381,0x37b,0xd8f,0xd8c,0x381,0x37b,0xecd,0xeca,0xecd,0xeca,0xecd,0xeca,0xc03,0xc00,0xc03,0xc00,
+0xc03,0xc00,0xc03,0xc00,0xc03,0xc00,0xc03,0xc00,0xc03,0xc00,0xc03,0xc00,0xefa,0xef7,0xefa,0xef7,
+0xfea,0xfe7,0xfea,0xfe7,0xfea,0xfe7,0xfea,0xfe7,0xfea,0xfe7,0xfea,0xfe7,0xfea,0xfe7,0xfea,0xfe7,
+0x1155,0x1152,0x132f,0x132c,0x14ee,0x14eb,0x14ee,0x14eb,0x14ee,0x14eb,0x14ee,0x14eb,0xc,0x393,0x393,0x393,
0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,0x393,
-0x393,0x393,0x393,0xc,0xc,0x396,0x384,0x384,0x384,0x38a,0x384,0x387,0x18ea,0x38d,0x38d,0x38d,
+0x393,0x393,0x393,0x393,0x393,0x393,0x393,0xc,0xc,0x396,0x384,0x384,0x384,0x38a,0x384,0x387,
+0x18f9,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,
0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,
-0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x38d,0x390,
-0x18ea,0x399,0x9f3,0xc,0xc,0x14b2,0x14b2,0x13ce,0xf,0x960,0x960,0x960,0x960,0x960,0x960,0x960,
-0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0xd8f,0x960,0x960,0x960,0x960,0x960,
-0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,
-0x39c,0x39c,0xecd,0x39c,0x39c,0x39c,0x3a8,0x39c,0x39f,0x39c,0x39c,0x3ab,0x963,0xd92,0xd95,0xd92,
-0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,
+0x38d,0x38d,0x38d,0x390,0x18f9,0x399,0x9f3,0xc,0xc,0x14bb,0x14bb,0x13d7,0xf,0x960,0x960,0x960,
+0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0xd92,0x960,
+0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x960,0x39c,0x39c,0x39c,0x39c,
+0x39c,0x39c,0x39c,0x39c,0x39c,0x39c,0xed0,0x39c,0x39c,0x39c,0x3a8,0x39c,0x39f,0x39c,0x39c,0x3ab,
+0x963,0xd95,0xd98,0xd95,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0x3ae,0x3ae,0x3ae,0x3ae,
0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,
-0x3ae,0x3ae,0x3ae,0xf,0xf,0xf,0xf,0x18ed,0x3ae,0x3ae,0x3ae,0x3a5,0x3a2,0xf,0xf,0xf,
-0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xca8,0xca8,0xca8,0xca8,0x13d1,0x14b5,0xf75,0xf75,
-0xf75,0xf72,0xf72,0xd9b,0x8a6,0xca2,0xc9f,0xc9f,0xc96,0xc96,0xc96,0xc96,0xc96,0xc96,0xf6f,0xf6f,
-0xf6f,0xf6f,0xf6f,0x8a3,0x14ac,0x1afd,0xd9e,0x8a9,0x12f0,0x3c9,0x3cc,0x3cc,0x3cc,0x3cc,0x3cc,0x3c9,
+0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0x3ae,0xf,0xf,0xf,0xf,0x18fc,0x3ae,0x3ae,0x3ae,0x3a5,
+0x3a2,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xcab,0xcab,0xcab,0xcab,
+0x13da,0x14be,0xf78,0xf78,0xf78,0xf75,0xf75,0xd9e,0x8a6,0xca5,0xca2,0xca2,0xc99,0xc99,0xc99,0xc99,
+0xc99,0xc99,0xf72,0xf72,0xf72,0xf72,0xf72,0x8a3,0x14b5,0x1b0f,0xda1,0x8a9,0x12f6,0x3c9,0x3cc,0x3cc,
+0x3cc,0x3cc,0x3cc,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,
+0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0xf7b,0xf7b,0xf7b,0xf7b,0xf7b,0x8ac,0x3c9,0x3c9,0x3c9,
+0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0xb3d,
+0xb3d,0xb3d,0xc99,0xc9f,0xc9c,0xd9b,0xd9b,0xd9b,0xd9b,0xd9b,0xd9b,0x12f3,0x93f,0x93f,0x93f,0x93f,
+0x93f,0x93f,0x93f,0x93f,0x93f,0x93f,0x3c3,0x3c0,0x3bd,0x3ba,0xba0,0xba0,0x921,0x3c9,0x3c9,0x3d5,
+0x3c9,0x3cf,0x3cf,0x3cf,0x3cf,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,
0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,
-0x3c9,0x3c9,0x3c9,0xf78,0xf78,0xf78,0xf78,0xf78,0x8ac,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,
-0x3c9,0x3c9,0x3c9,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0x924,0xb3a,0xb3a,0xb3a,0xc96,0xc9c,
-0xc99,0xd98,0xd98,0xd98,0xd98,0xd98,0xd98,0x12ed,0x93f,0x93f,0x93f,0x93f,0x93f,0x93f,0x93f,0x93f,
-0x93f,0x93f,0x3c3,0x3c0,0x3bd,0x3ba,0xb9d,0xb9d,0x921,0x3c9,0x3c9,0x3d5,0x3c9,0x3cf,0x3cf,0x3cf,
-0x3cf,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,
0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,
0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,
-0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x9f9,0x9f9,0x3c9,0x3c9,
-0x3c9,0x3c9,0x3c9,0x9f9,0x3cc,0x3c9,0x3cc,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,
-0x3c9,0x3c9,0x3c9,0x9f9,0x3c9,0x3c9,0x3c9,0x3cc,0x942,0x3c9,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,
-0x3b4,0x3b1,0x3ba,0x3b7,0x3b7,0x3b4,0x3b4,0x3b4,0x3b4,0x3d2,0x3d2,0x3b4,0x3b4,0x3ba,0x3b7,0x3b7,
-0x3b7,0x3b4,0xca5,0xca5,0x3c6,0x3c6,0x3c6,0x3c6,0x3c6,0x3c6,0x3c6,0x3c6,0x3c6,0x3c6,0x9f9,0x9f9,
-0x9f9,0x9f6,0x9f6,0xca5,0xa0e,0xa0e,0xa0e,0xa08,0xa08,0xa08,0xa08,0xa08,0xa08,0xa08,0xa08,0xa05,
-0xa08,0xa05,0x12,0xa11,0xa0b,0x9fc,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,
+0x9f9,0x9f9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x9f9,0x3cc,0x3c9,0x3cc,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,
+0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x3c9,0x9f9,0x3c9,0x3c9,0x3c9,0x3cc,0x942,0x3c9,0x3b4,0x3b4,
+0x3b4,0x3b4,0x3b4,0x3b4,0x3b4,0x3b1,0x3ba,0x3b7,0x3b7,0x3b4,0x3b4,0x3b4,0x3b4,0x3d2,0x3d2,0x3b4,
+0x3b4,0x3ba,0x3b7,0x3b7,0x3b7,0x3b4,0xca8,0xca8,0x3c6,0x3c6,0x3c6,0x3c6,0x3c6,0x3c6,0x3c6,0x3c6,
+0x3c6,0x3c6,0x9f9,0x9f9,0x9f9,0x9f6,0x9f6,0xca8,0xa0e,0xa0e,0xa0e,0xa08,0xa08,0xa08,0xa08,0xa08,
+0xa08,0xa08,0xa08,0xa05,0xa08,0xa05,0x12,0xa11,0xa0b,0x9fc,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,
0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,
-0xa0b,0xcab,0xcab,0xcab,0xa02,0xa02,0xa02,0xa02,0xa02,0xa02,0xa02,0xa02,0xa02,0xa02,0xa02,0xa02,
-0xa02,0xa02,0xa02,0xa02,0x9ff,0x9ff,0x9ff,0x9ff,0x9ff,0x9ff,0x9ff,0x9ff,0x9ff,0x9ff,0x9ff,0x12,
-0x12,0xcab,0xcab,0xcab,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,
-0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,
-0xdfb,0xdfb,0xff9,0xff9,0xff9,0xff9,0xff9,0xff9,0xff9,0xff9,0xff9,0xff9,0xff9,0xff9,0xff9,0xff9,
-0xff9,0xff9,0xff9,0xff9,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,
+0xa0b,0xa0b,0xa0b,0xa0b,0xa0b,0xcae,0xcae,0xcae,0xa02,0xa02,0xa02,0xa02,0xa02,0xa02,0xa02,0xa02,
+0xa02,0xa02,0xa02,0xa02,0xa02,0xa02,0xa02,0xa02,0x9ff,0x9ff,0x9ff,0x9ff,0x9ff,0x9ff,0x9ff,0x9ff,
+0x9ff,0x9ff,0x9ff,0x12,0x12,0xcae,0xcae,0xcae,0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,
+0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,
+0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,0xdfe,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,
+0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,
0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,
-0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,
-0xa14,0xa14,0xa14,0xa14,0xa14,0xba0,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
-0x15,0x15,0x15,0x15,0xf0f,0xf0f,0xf0f,0xf0f,0xf0f,0xf0f,0xf0f,0xf0f,0xf0f,0xf0f,0xf12,0xf12,
-0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,
-0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf06,
-0xf06,0xf06,0xf06,0xf06,0xf06,0xf06,0xf06,0xf06,0xf15,0xf15,0xf09,0xf09,0xf0c,0xf1b,0xf18,0x102,
-0x102,0x1911,0x1914,0x1914,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0xb13,0xb13,0xb16,0xb16,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,
-0x6f,0x6f,0x6f,0x6f,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,0x1617,0x1617,0x1617,0x1617,0x1617,
-0x1617,0x1617,0x1617,0x1617,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1650,0x1650,0x1650,
-0x1650,0x1650,0x1650,0x1650,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x16b,0x16b,0x16b,
-0x16b,0x16b,0x16b,0x16b,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0x1bdb,0x1bd8,0x1c2,0x1c2,0x1c2,0x1c2,0x1c2,0x1c2,0x1c2,0x1c2,0x1c2,0x1c2,
-0x1c2,0x1c2,0x1c2,0x1c2,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0x1488,0x1488,0x1488,0x1488,0x1488,0x1488,0x1488,0x1488,0x1488,0x1488,0x1a7,0x1a7,
-0x1a7,0x1a7,0x1a7,0x1a7,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x201,0x201,0x201,0x201,0x201,
-0x201,0x201,0x201,0x201,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0x249,0x249,0x249,0x249,0x249,0x249,0x249,0x249,0x249,0x249,0x249,0x249,
-0x249,0x249,0x249,0x249,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0x195f,0x195f,0x195f,0x195f,0x195f,0x195f,0x195f,0x195f,0x195f,0x195f,0x24f,0x24f,
-0x24f,0x24f,0x24f,0x24f,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0x1ac1,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,
-0x28b,0x28b,0x28b,0x28b,0x1752,0x1752,0x1752,0x1752,0x207,0x207,0x207,0x207,0x207,0x207,0x207,0x207,
-0x207,0x207,0x207,0x207,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,
-0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,
-0x163e,0x163e,0x163e,0x163e,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x2a0,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,0x1bc3,
-0x2a0,0x1bc3,0x1bc3,0x2a0,0x16b6,0x16b6,0x16b6,0x16b6,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,
-0x1ef,0x1ef,0x1ef,0x1ef,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,
-0x2b5,0x2b5,0x2b5,0x2b5,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0xdf2,0xdf2,0xdef,0xdef,0xdef,0xdf2,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,
-0xd5,0xd5,0xd5,0xd5,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0x213,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,
-0x176a,0x176a,0x176a,0x176a,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,
-0x2bb,0x2bb,0x2bb,0x1bf6,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0x1a13,0x1a13,0x1a13,0x1a13,0x1a13,0x1a13,0x1a13,0x1a13,0x1a13,0x1a13,0x270,0x270,
-0x270,0x270,0x1a16,0x1a10,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0x1b93,0x1b93,0x1b93,0x1b93,0x1b93,0x1b93,0x1b93,0x1b93,0x1b93,0x1b93,0x1b93,0x1b93,
-0x1b93,0x1b93,0x1b93,0x1b93,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0x1c26,0x1c26,0x1c26,0x1c26,0x1c26,0x1c26,0x1c26,0x1c26,0x1c26,0x1c26,0x1c26,0x1c26,
-0x1c26,0x1c26,0x1c26,0x1c26,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0x255,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,
-0x1974,0x1974,0x1974,0x1974,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,
-0x273,0x273,0x273,0x273,0,0,0,0,0,0,0,0,0,0,0,0,
+0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa17,0xa14,0xa14,
+0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xa14,0xba3,0x15,0x15,0x15,0x15,0x15,0x15,
+0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,0xf12,
+0xf12,0xf12,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,
+0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,0xf15,
+0xf15,0xf15,0xf15,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf09,0xf18,0xf18,0xf0c,0xf0c,
+0xf0f,0xf1e,0xf1b,0xff,0xff,0x1920,0x1923,0x1923,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0xb16,0xb16,0xb19,0xb19,0xb16,0xb16,0xb16,0xb16,
+0xb16,0xb16,0xb16,0xb16,0x1c53,0x1c53,0x1c50,0x1c50,0x1dd,0x1dd,0x1dd,0x1dd,0x1dd,0x1dd,0x1dd,0x1626,
+0x1626,0x1626,0x1626,0x1626,0x1626,0x1626,0x1626,0x1626,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,
+0x1e9,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0x165f,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,
+0x1248,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0x1bed,0x1bea,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,
+0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,
+0x1491,0x1491,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1fe,
+0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0x246,0x246,0x246,0x246,0x246,0x246,0x246,0x246,
+0x246,0x246,0x246,0x246,0x246,0x246,0x246,0x246,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,
+0x196e,0x196e,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0x1ad3,0x288,0x288,0x288,0x288,0x288,0x288,0x288,
+0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x1761,0x1761,0x1761,0x1761,0x204,0x204,0x204,0x204,
+0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,
+0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,
+0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0x1bd5,0x1bd5,0x1bd5,0x1bd5,0x29d,0x1bd5,0x1bd5,0x1bd5,
+0x1bd5,0x1bd5,0x1bd5,0x1bd5,0x29d,0x1bd5,0x1bd5,0x29d,0x16c5,0x16c5,0x16c5,0x16c5,0x1ec,0x1ec,0x1ec,0x1ec,
+0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x2b2,0x2b2,0x2b2,0x2b2,
+0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0xdf5,0xdf5,0xdf2,0xdf2,0xdf2,0xdf5,0xd2,0xd2,
+0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0x210,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,
+0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,
+0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x1c08,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0x1a25,0x1a25,0x1a25,0x1a25,0x1a25,0x1a25,0x1a25,0x1a25,
+0x1a25,0x1a25,0x26d,0x26d,0x26d,0x26d,0x1a28,0x1a22,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,
+0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0x1c38,0x1c38,0x1c38,0x1c38,0x1c38,0x1c38,0x1c38,0x1c38,
+0x1c38,0x1c38,0x1c38,0x1c38,0x1c38,0x1c38,0x1c38,0x1c38,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0x252,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,
+0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,
+0x270,0x270,0x270,0x270,0x270,0x270,0x270,0x270,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0x95d,0x95d,3,3,3,3,3,3,3,3,3,3,3,3,
+0,0,0,0,0,0,0x95d,0x95d,3,3,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
-3,3,3,3,3,3,0x95d,0x95d,6,6,6,6,6,6,6,6,
+3,3,3,3,3,3,3,3,3,3,0x95d,0x95d,6,6,6,6,
6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
-6,6,6,6,6,6,6,6,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,
-0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,6,6,6,6,6,6,6,6,
-6,6,6,6,6,6,6,6,0x14bb,0x3f0,0x3ff,0x3ff,0x18,0x405,0x405,0x405,
-0x405,0x405,0x405,0x405,0x405,0x18,0x18,0x405,0x405,0x18,0x18,0x405,0x405,0x405,0x405,0x405,
-0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x18,0x405,0x405,0x405,0x405,0x405,0x405,
-0x405,0x18,0x405,0x18,0x18,0x18,0x405,0x405,0x405,0x405,0x18,0x18,0x3f3,0xcb1,0x3f0,0x3ff,
-0x3ff,0x3f0,0x3f0,0x3f0,0x3f0,0x18,0x18,0x3ff,0x3ff,0x18,0x18,0x402,0x402,0x3f6,0xda4,0x18,
-0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x3f0,0x18,0x18,0x18,0x18,0x408,0x408,0x18,0x408,
-0x405,0x405,0x3f0,0x3f0,0x18,0x18,0x948,0x948,0x948,0x948,0x948,0x948,0x948,0x948,0x948,0x948,
-0x405,0x405,0x3fc,0x3fc,0x3f9,0x3f9,0x3f9,0x3f9,0x3f9,0x3fc,0x3f9,0x1125,0x184b,0x1848,0x18f0,0x18,
-0x1b,0xcb4,0x40b,0xcb7,0x1b,0x417,0x417,0x417,0x417,0x417,0x417,0x1b,0x1b,0x1b,0x1b,0x417,
-0x417,0x1b,0x1b,0x417,0x417,0x417,0x417,0x417,0x417,0x417,0x417,0x417,0x417,0x417,0x417,0x417,
-0x417,0x1b,0x417,0x417,0x417,0x417,0x417,0x417,0x417,0x1b,0x417,0x41a,0x1b,0x417,0x41a,0x1b,
-0x417,0x417,0x1b,0x1b,0x40e,0x1b,0x414,0x414,0x414,0x40b,0x40b,0x1b,0x1b,0x1b,0x1b,0x40b,
-0x40b,0x1b,0x1b,0x40b,0x40b,0x411,0x1b,0x1b,0x1b,0xf81,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
-0x1b,0x41a,0x41a,0x41a,0x417,0x1b,0x41a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x94b,0x94b,
-0x94b,0x94b,0x94b,0x94b,0x94b,0x94b,0x94b,0x94b,0x40b,0x40b,0x417,0x417,0x417,0xf81,0x18f3,0x1b,
-0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1e,0x41d,0x41d,0x426,0x1e,0x429,0x429,0x429,
-0x429,0x429,0x429,0x429,0xcc0,0x429,0x1e,0x429,0x429,0x429,0x1e,0x429,0x429,0x429,0x429,0x429,
-0x429,0x429,0x429,0x429,0x429,0x429,0x429,0x429,0x429,0x1e,0x429,0x429,0x429,0x429,0x429,0x429,
-0x429,0x1e,0x429,0x429,0x1e,0x429,0x429,0x429,0x429,0x429,0x1e,0x1e,0x420,0x429,0x426,0x426,
-0x426,0x41d,0x41d,0x41d,0x41d,0x41d,0x1e,0x41d,0x41d,0x426,0x1e,0x426,0x426,0x423,0x1e,0x1e,
-0x429,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
-0x429,0xcc0,0xcba,0xcba,0x1e,0x1e,0x94e,0x94e,0x94e,0x94e,0x94e,0x94e,0x94e,0x94e,0x94e,0x94e,
-0x13d4,0xcbd,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x16cb,0x184e,0x184e,0x184e,0x1851,0x1851,0x1851,
-0x21,0x42c,0x43b,0x43b,0x21,0x441,0x441,0x441,0x441,0x441,0x441,0x441,0x441,0x21,0x21,0x441,
-0x441,0x21,0x21,0x441,0x441,0x441,0x441,0x441,0x441,0x441,0x441,0x441,0x441,0x441,0x441,0x441,
-0x441,0x21,0x441,0x441,0x441,0x441,0x441,0x441,0x441,0x21,0x441,0x441,0x21,0xcc3,0x441,0x441,
-0x441,0x441,0x21,0x21,0x42f,0x441,0x42c,0x42c,0x43b,0x42c,0x42c,0x42c,0xf84,0x21,0x21,0x43b,
-0x43e,0x21,0x21,0x43e,0x43e,0x432,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x1a5b,0x42c,0x42c,
-0x21,0x21,0x21,0x21,0x444,0x444,0x21,0x441,0x441,0x441,0xf84,0xf84,0x21,0x21,0x438,0x438,
-0x438,0x438,0x438,0x438,0x438,0x438,0x438,0x438,0x435,0xcc3,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,0x12fc,
-0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x24,0x24,0x447,0x453,0x24,0x453,0x453,0x453,
-0x453,0x453,0x453,0x24,0x24,0x24,0x453,0x453,0x453,0x24,0x453,0x453,0x456,0x453,0x24,0x24,
-0x24,0x453,0x453,0x24,0x453,0x24,0x453,0x453,0x24,0x24,0x24,0x453,0x453,0x24,0x24,0x24,
-0x453,0x453,0x453,0x24,0x24,0x24,0x453,0x453,0x453,0x453,0x453,0x453,0x453,0x453,0xda7,0x453,
-0x453,0x453,0x24,0x24,0x24,0x24,0x447,0x44d,0x447,0x44d,0x44d,0x24,0x24,0x24,0x44d,0x44d,
-0x44d,0x24,0x450,0x450,0x450,0x44a,0x24,0x24,0xf87,0x24,0x24,0x24,0x24,0x24,0x24,0x447,
-0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0xebb,0x954,0x954,0x954,0x954,0x954,
-0x954,0x954,0x954,0x954,0x951,0x951,0x951,0xd77,0xcc6,0xcc6,0xcc6,0xcc6,0xcc6,0xcc9,0xcc6,0x24,
-0x24,0x24,0x24,0x24,0x14be,0x465,0x465,0x465,0x18f6,0x468,0x468,0x468,0x468,0x468,0x468,0x468,
-0x468,0x27,0x468,0x468,0x468,0x27,0x468,0x468,0x468,0x468,0x468,0x468,0x468,0x468,0x468,0x468,
-0x468,0x468,0x468,0x468,0x468,0x27,0x468,0x468,0x468,0x468,0x468,0x468,0x468,0x468,0x468,0x468,
-0x14c1,0x468,0x468,0x468,0x468,0x468,0x27,0x27,0x1b00,0xf90,0x459,0x459,0x459,0x465,0x465,0x465,
-0x465,0x27,0x459,0x459,0x45c,0x27,0x459,0x459,0x459,0x45f,0x27,0x27,0x27,0x27,0x27,0x27,
-0x27,0x459,0x459,0x27,0xf90,0xf90,0x16ce,0x27,0x27,0x1b03,0x27,0x27,0x468,0x468,0xf8a,0xf8a,
-0x27,0x27,0x462,0x462,0x462,0x462,0x462,0x462,0x462,0x462,0x462,0x462,0x27,0x27,0x27,0x27,
-0x27,0x27,0x27,0x19bf,0xf8d,0xf8d,0xf8d,0xf8d,0xf8d,0xf8d,0xf8d,0xf8d,0x178e,0x14c4,0x471,0x471,
-0x18f9,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x2a,0x477,0x477,0x477,0x2a,0x477,0x477,
-0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x2a,0x477,0x477,
-0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x2a,0x477,0x477,0x477,0x477,0x477,0x2a,0x2a,
-0xccc,0xccf,0x471,0x46b,0x474,0x471,0x46b,0x471,0x471,0x2a,0x46b,0x474,0x474,0x2a,0x474,0x474,
-0x46b,0x46e,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x46b,0x46b,0x2a,0x2a,0x2a,0x2a,0x2a,
-0x2a,0x1b06,0x477,0x2a,0x477,0x477,0xed3,0xed3,0x2a,0x2a,0x957,0x957,0x957,0x957,0x957,0x957,
-0x957,0x957,0x957,0x957,0x2a,0xed6,0xed6,0x1bc9,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,
-0x2a,0x2a,0x2a,0x2a,0x1854,0x14c7,0x483,0x483,0x1a5e,0x489,0x489,0x489,0x489,0x489,0x489,0x489,
-0x489,0x2d,0x489,0x489,0x489,0x2d,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,
-0x489,0x489,0x489,0x489,0x483,0x47a,0x47a,0x47a,0xf93,0x2d,0x483,0x483,0x483,0x2d,0x486,0x486,
-0x486,0x47d,0x1302,0x1791,0x2d,0x2d,0x2d,0x2d,0x1794,0x1794,0x1794,0x47a,0x1791,0x1791,0x1791,0x1791,
-0x1791,0x1791,0x1791,0x16d1,0x489,0x489,0xf93,0xf93,0x2d,0x2d,0x480,0x480,0x480,0x480,0x480,0x480,
-0x480,0x480,0x480,0x480,0xf96,0xf96,0xf96,0xf96,0xf96,0xf96,0x1791,0x1791,0x1791,0xf99,0xf9c,0xf9c,
-0xf9c,0xf9c,0xf9c,0xf9c,0x30,0x1a61,0xa23,0xa23,0x30,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,
-0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0x30,0x30,0x30,0xa29,0xa29,
-0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,
-0xa29,0xa29,0x30,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0x30,0xa29,0x30,0x30,
-0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0x30,0x30,0x30,0xa1d,0x30,0x30,0x30,0x30,0xa1a,
-0xa23,0xa23,0xa1a,0xa1a,0xa1a,0x30,0xa1a,0x30,0xa23,0xa23,0xa26,0xa23,0xa26,0xa26,0xa26,0xa1a,
-0x30,0x30,0x30,0x30,0x30,0x30,0x14ca,0x14ca,0x14ca,0x14ca,0x14ca,0x14ca,0x14ca,0x14ca,0x14ca,0x14ca,
-0x30,0x30,0xa23,0xa23,0xa20,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
-0x33,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,
+6,6,6,6,6,6,6,6,6,6,6,6,0xd53,0xd53,0xd53,0xd53,
+0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,6,6,6,6,
+6,6,6,6,6,6,6,6,6,6,6,6,0x14c4,0x3f0,0x3ff,0x3ff,
+0x18,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x18,0x18,0x405,0x405,0x18,0x18,0x405,
+0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x405,0x18,0x405,0x405,
+0x405,0x405,0x405,0x405,0x405,0x18,0x405,0x18,0x18,0x18,0x405,0x405,0x405,0x405,0x18,0x18,
+0x3f3,0xcb4,0x3f0,0x3ff,0x3ff,0x3f0,0x3f0,0x3f0,0x3f0,0x18,0x18,0x3ff,0x3ff,0x18,0x18,0x402,
+0x402,0x3f6,0xda7,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x3f0,0x18,0x18,0x18,0x18,
+0x408,0x408,0x18,0x408,0x405,0x405,0x3f0,0x3f0,0x18,0x18,0x948,0x948,0x948,0x948,0x948,0x948,
+0x948,0x948,0x948,0x948,0x405,0x405,0x3fc,0x3fc,0x3f9,0x3f9,0x3f9,0x3f9,0x3f9,0x3fc,0x3f9,0x112b,
+0x185a,0x1857,0x18ff,0x18,0x1b,0xcb7,0x40b,0xcba,0x1b,0x417,0x417,0x417,0x417,0x417,0x417,0x1b,
+0x1b,0x1b,0x1b,0x417,0x417,0x1b,0x1b,0x417,0x417,0x417,0x417,0x417,0x417,0x417,0x417,0x417,
+0x417,0x417,0x417,0x417,0x417,0x1b,0x417,0x417,0x417,0x417,0x417,0x417,0x417,0x1b,0x417,0x41a,
+0x1b,0x417,0x41a,0x1b,0x417,0x417,0x1b,0x1b,0x40e,0x1b,0x414,0x414,0x414,0x40b,0x40b,0x1b,
+0x1b,0x1b,0x1b,0x40b,0x40b,0x1b,0x1b,0x40b,0x40b,0x411,0x1b,0x1b,0x1b,0xf84,0x1b,0x1b,
+0x1b,0x1b,0x1b,0x1b,0x1b,0x41a,0x41a,0x41a,0x417,0x1b,0x41a,0x1b,0x1b,0x1b,0x1b,0x1b,
+0x1b,0x1b,0x94b,0x94b,0x94b,0x94b,0x94b,0x94b,0x94b,0x94b,0x94b,0x94b,0x40b,0x40b,0x417,0x417,
+0x417,0xf84,0x1902,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1e,0x41d,0x41d,0x426,
+0x1e,0x429,0x429,0x429,0x429,0x429,0x429,0x429,0xcc3,0x429,0x1e,0x429,0x429,0x429,0x1e,0x429,
+0x429,0x429,0x429,0x429,0x429,0x429,0x429,0x429,0x429,0x429,0x429,0x429,0x429,0x1e,0x429,0x429,
+0x429,0x429,0x429,0x429,0x429,0x1e,0x429,0x429,0x1e,0x429,0x429,0x429,0x429,0x429,0x1e,0x1e,
+0x420,0x429,0x426,0x426,0x426,0x41d,0x41d,0x41d,0x41d,0x41d,0x1e,0x41d,0x41d,0x426,0x1e,0x426,
+0x426,0x423,0x1e,0x1e,0x429,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+0x1e,0x1e,0x1e,0x1e,0x429,0xcc3,0xcbd,0xcbd,0x1e,0x1e,0x94e,0x94e,0x94e,0x94e,0x94e,0x94e,
+0x94e,0x94e,0x94e,0x94e,0x13dd,0xcc0,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x16da,0x185d,0x185d,
+0x185d,0x1860,0x1860,0x1860,0x21,0x42c,0x43b,0x43b,0x21,0x441,0x441,0x441,0x441,0x441,0x441,0x441,
+0x441,0x21,0x21,0x441,0x441,0x21,0x21,0x441,0x441,0x441,0x441,0x441,0x441,0x441,0x441,0x441,
+0x441,0x441,0x441,0x441,0x441,0x21,0x441,0x441,0x441,0x441,0x441,0x441,0x441,0x21,0x441,0x441,
+0x21,0xcc6,0x441,0x441,0x441,0x441,0x21,0x21,0x42f,0x441,0x42c,0x42c,0x43b,0x42c,0x42c,0x42c,
+0xf87,0x21,0x21,0x43b,0x43e,0x21,0x21,0x43e,0x43e,0x432,0x21,0x21,0x21,0x21,0x21,0x21,
+0x21,0x1a6d,0x42c,0x42c,0x21,0x21,0x21,0x21,0x444,0x444,0x21,0x441,0x441,0x441,0xf87,0xf87,
+0x21,0x21,0x438,0x438,0x438,0x438,0x438,0x438,0x438,0x438,0x438,0x438,0x435,0xcc6,0x1302,0x1302,
+0x1302,0x1302,0x1302,0x1302,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x24,0x24,0x447,0x453,
+0x24,0x453,0x453,0x453,0x453,0x453,0x453,0x24,0x24,0x24,0x453,0x453,0x453,0x24,0x453,0x453,
+0x456,0x453,0x24,0x24,0x24,0x453,0x453,0x24,0x453,0x24,0x453,0x453,0x24,0x24,0x24,0x453,
+0x453,0x24,0x24,0x24,0x453,0x453,0x453,0x24,0x24,0x24,0x453,0x453,0x453,0x453,0x453,0x453,
+0x453,0x453,0xdaa,0x453,0x453,0x453,0x24,0x24,0x24,0x24,0x447,0x44d,0x447,0x44d,0x44d,0x24,
+0x24,0x24,0x44d,0x44d,0x44d,0x24,0x450,0x450,0x450,0x44a,0x24,0x24,0xf8a,0x24,0x24,0x24,
+0x24,0x24,0x24,0x447,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0xebe,0x954,
+0x954,0x954,0x954,0x954,0x954,0x954,0x954,0x954,0x951,0x951,0x951,0xd7a,0xcc9,0xcc9,0xcc9,0xcc9,
+0xcc9,0xccc,0xcc9,0x24,0x24,0x24,0x24,0x24,0x14c7,0x465,0x465,0x465,0x1905,0x468,0x468,0x468,
+0x468,0x468,0x468,0x468,0x468,0x27,0x468,0x468,0x468,0x27,0x468,0x468,0x468,0x468,0x468,0x468,
+0x468,0x468,0x468,0x468,0x468,0x468,0x468,0x468,0x468,0x27,0x468,0x468,0x468,0x468,0x468,0x468,
+0x468,0x468,0x468,0x468,0x14ca,0x468,0x468,0x468,0x468,0x468,0x27,0x27,0x1b12,0xf93,0x459,0x459,
+0x459,0x465,0x465,0x465,0x465,0x27,0x459,0x459,0x45c,0x27,0x459,0x459,0x459,0x45f,0x27,0x27,
+0x27,0x27,0x27,0x27,0x27,0x459,0x459,0x27,0xf93,0xf93,0x16dd,0x27,0x27,0x1b15,0x27,0x27,
+0x468,0x468,0xf8d,0xf8d,0x27,0x27,0x462,0x462,0x462,0x462,0x462,0x462,0x462,0x462,0x462,0x462,
+0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x19d1,0xf90,0xf90,0xf90,0xf90,0xf90,0xf90,0xf90,0xf90,
+0x179d,0x14cd,0x471,0x471,0x1908,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x2a,0x477,0x477,
+0x477,0x2a,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,
+0x477,0x2a,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x477,0x2a,0x477,0x477,0x477,
+0x477,0x477,0x2a,0x2a,0xccf,0xcd2,0x471,0x46b,0x474,0x471,0x46b,0x471,0x471,0x2a,0x46b,0x474,
+0x474,0x2a,0x474,0x474,0x46b,0x46e,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x46b,0x46b,0x2a,
+0x2a,0x2a,0x2a,0x2a,0x2a,0x1b18,0x477,0x2a,0x477,0x477,0xed6,0xed6,0x2a,0x2a,0x957,0x957,
+0x957,0x957,0x957,0x957,0x957,0x957,0x957,0x957,0x2a,0xed9,0xed9,0x1bdb,0x2a,0x2a,0x2a,0x2a,
+0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x1863,0x14d0,0x483,0x483,0x1a70,0x489,0x489,0x489,
+0x489,0x489,0x489,0x489,0x489,0x2d,0x489,0x489,0x489,0x2d,0x489,0x489,0x489,0x489,0x489,0x489,
+0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x483,0x47a,0x47a,0x47a,0xf96,0x2d,0x483,0x483,
+0x483,0x2d,0x486,0x486,0x486,0x47d,0x1308,0x17a0,0x2d,0x2d,0x2d,0x2d,0x17a3,0x17a3,0x17a3,0x47a,
+0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x17a0,0x16e0,0x489,0x489,0xf96,0xf96,0x2d,0x2d,0x480,0x480,
+0x480,0x480,0x480,0x480,0x480,0x480,0x480,0x480,0xf99,0xf99,0xf99,0xf99,0xf99,0xf99,0x17a0,0x17a0,
+0x17a0,0xf9c,0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,0xf9f,0x30,0x1a73,0xa23,0xa23,0x30,0xa29,0xa29,0xa29,
+0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0x30,
+0x30,0x30,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,
+0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0x30,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,
+0x30,0xa29,0x30,0x30,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0xa29,0x30,0x30,0x30,0xa1d,0x30,
+0x30,0x30,0x30,0xa1a,0xa23,0xa23,0xa1a,0xa1a,0xa1a,0x30,0xa1a,0x30,0xa23,0xa23,0xa26,0xa23,
+0xa26,0xa26,0xa26,0xa1a,0x30,0x30,0x30,0x30,0x30,0x30,0x14d3,0x14d3,0x14d3,0x14d3,0x14d3,0x14d3,
+0x14d3,0x14d3,0x14d3,0x14d3,0x30,0x30,0xa23,0xa23,0xa20,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
+0x30,0x30,0x30,0x30,0x33,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,
0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,
-0x4a4,0x48f,0x4a4,0x4a1,0x48f,0x48f,0x48f,0x48f,0x48f,0x48f,0x495,0x33,0x33,0x33,0x33,0x48c,
-0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4a4,0x4a7,0x492,0x492,0x492,0x492,0x492,0x492,0x48f,0x492,0x498,
-0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49b,0x49b,0x33,0x33,0x33,0x33,
+0x4a4,0x4a4,0x4a4,0x4a4,0x4a4,0x48f,0x4a4,0x4a1,0x48f,0x48f,0x48f,0x48f,0x48f,0x48f,0x495,0x33,
+0x33,0x33,0x33,0x48c,0x4aa,0x4aa,0x4aa,0x4aa,0x4aa,0x4a4,0x4a7,0x492,0x492,0x492,0x492,0x492,
+0x492,0x48f,0x492,0x498,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49b,0x49b,
0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,
-0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x36,0x4b9,0x4b9,0x36,
-0x4b9,0x36,0x19c5,0x4b9,0x4b9,0x19c5,0x4b9,0x36,0x19c5,0x4b9,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,
-0x4b9,0x4b9,0x4b9,0x4b9,0x19c5,0x4b9,0x4b9,0x4b9,0x4b9,0x4b9,0x4b9,0x4b9,0x19c5,0x4b9,0x4b9,0x4b9,
-0x36,0x4b9,0x36,0x4b9,0x19c5,0x19c5,0x4b9,0x4b9,0x19c5,0x4b9,0x4b9,0x4b9,0x4b9,0x4ad,0x4b9,0x4b6,
-0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x19c2,0x4ad,0x4ad,0x4b9,0x36,0x36,0x4c2,0x4c2,0x4c2,0x4c2,
-0x4c2,0x36,0x4bf,0x36,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4ad,0x1bcc,0x36,0x4b3,0x4b3,0x4b3,0x4b3,
-0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x36,0x36,0x4bc,0x4bc,0x13d7,0x13d7,0x36,0x36,0x36,0x36,
+0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,
+0x36,0x4b9,0x4b9,0x36,0x4b9,0x36,0x19d7,0x4b9,0x4b9,0x19d7,0x4b9,0x36,0x19d7,0x4b9,0x19d7,0x19d7,
+0x19d7,0x19d7,0x19d7,0x19d7,0x4b9,0x4b9,0x4b9,0x4b9,0x19d7,0x4b9,0x4b9,0x4b9,0x4b9,0x4b9,0x4b9,0x4b9,
+0x19d7,0x4b9,0x4b9,0x4b9,0x36,0x4b9,0x36,0x4b9,0x19d7,0x19d7,0x4b9,0x4b9,0x19d7,0x4b9,0x4b9,0x4b9,
+0x4b9,0x4ad,0x4b9,0x4b6,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x4ad,0x19d4,0x4ad,0x4ad,0x4b9,0x36,0x36,
+0x4c2,0x4c2,0x4c2,0x4c2,0x4c2,0x36,0x4bf,0x36,0x4b0,0x4b0,0x4b0,0x4b0,0x4b0,0x4ad,0x1bde,0x36,
+0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x4b3,0x36,0x36,0x4bc,0x4bc,0x13e0,0x13e0,
+0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
-0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x99c,0x99c,0x99c,0x99f,
-0x99c,0x99c,0x99c,0x99c,0x39,0x99c,0x99c,0x99c,0x99c,0x99f,0x99c,0x99c,0x99c,0x99c,0x99f,0x99c,
-0x99c,0x99c,0x99c,0x99f,0x99c,0x99c,0x99c,0x99c,0x99f,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,
-0x99c,0x99c,0x99c,0x99c,0x99c,0x99f,0xa38,0xfa8,0xfa8,0x39,0x39,0x39,0x39,0x966,0x966,0x969,
-0x966,0x969,0x969,0x975,0x969,0x975,0x966,0x966,0x966,0x966,0x966,0x996,0x966,0x969,0x96f,0x96f,
-0x972,0x97b,0x96c,0x96c,0x99c,0x99c,0x99c,0x99c,0x130b,0x1305,0x1305,0x1305,0x966,0x966,0x966,0x969,
-0x966,0x966,0xa2c,0x966,0x39,0x966,0x966,0x966,0x966,0x969,0x966,0x966,0x966,0x966,0x969,0x966,
-0x966,0x966,0x966,0x969,0x966,0x966,0x966,0x966,0x969,0x966,0xa2c,0xa2c,0xa2c,0x966,0x966,0x966,
-0x966,0x966,0x966,0x966,0xa2c,0x969,0xa2c,0xa2c,0xa2c,0x39,0xa35,0xa35,0xa32,0xa32,0xa32,0xa32,
-0xa32,0xa32,0xa2f,0xa32,0xa32,0xa32,0xa32,0xa32,0xa32,0x39,0xf9f,0xa32,0xdaa,0xdaa,0xfa2,0xfa5,
-0xf9f,0x1128,0x1128,0x1128,0x1128,0x1308,0x1308,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,
+0x99c,0x99c,0x99c,0x99f,0x99c,0x99c,0x99c,0x99c,0x39,0x99c,0x99c,0x99c,0x99c,0x99f,0x99c,0x99c,
+0x99c,0x99c,0x99f,0x99c,0x99c,0x99c,0x99c,0x99f,0x99c,0x99c,0x99c,0x99c,0x99f,0x99c,0x99c,0x99c,
+0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99c,0x99f,0xa38,0xfab,0xfab,0x39,0x39,0x39,
+0x39,0x966,0x966,0x969,0x966,0x969,0x969,0x975,0x969,0x975,0x966,0x966,0x966,0x966,0x966,0x996,
+0x966,0x969,0x96f,0x96f,0x972,0x97b,0x96c,0x96c,0x99c,0x99c,0x99c,0x99c,0x1311,0x130b,0x130b,0x130b,
+0x966,0x966,0x966,0x969,0x966,0x966,0xa2c,0x966,0x39,0x966,0x966,0x966,0x966,0x969,0x966,0x966,
+0x966,0x966,0x969,0x966,0x966,0x966,0x966,0x969,0x966,0x966,0x966,0x966,0x969,0x966,0xa2c,0xa2c,
+0xa2c,0x966,0x966,0x966,0x966,0x966,0x966,0x966,0xa2c,0x969,0xa2c,0xa2c,0xa2c,0x39,0xa35,0xa35,
+0xa32,0xa32,0xa32,0xa32,0xa32,0xa32,0xa2f,0xa32,0xa32,0xa32,0xa32,0xa32,0xa32,0x39,0xfa2,0xa32,
+0xdad,0xdad,0xfa5,0xfa8,0xfa2,0x112e,0x112e,0x112e,0x112e,0x130e,0x130e,0x39,0x39,0x39,0x39,0x39,
0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,
-0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x3c,0x13dd,
-0x3c,0x3c,0x3c,0x3c,0x3c,0x13dd,0x3c,0x3c,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,
-0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xdb9,
+0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x4c8,0x4c8,0x4c8,0x4c8,
+0x4c8,0x4c8,0x3c,0x13e6,0x3c,0x3c,0x3c,0x3c,0x3c,0x13e6,0x3c,0x3c,0x4c5,0x4c5,0x4c5,0x4c5,
+0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0xa62,0xa62,0xa62,0xa62,
+0xa62,0xa62,0xa62,0xdbc,0xa62,0x3f,0xa62,0xa62,0xa62,0xa62,0x3f,0x3f,0xa62,0xa62,0xa62,0xa62,
+0xa62,0xa62,0xa62,0x3f,0xa62,0x3f,0xa62,0xa62,0xa62,0xa62,0x3f,0x3f,0xa62,0xa62,0xa62,0xa62,
+0xa62,0xa62,0xa62,0xdbc,0xa62,0x3f,0xa62,0xa62,0xa62,0xa62,0x3f,0x3f,0xa62,0xa62,0xa62,0xa62,
+0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xdbc,
0xa62,0x3f,0xa62,0xa62,0xa62,0xa62,0x3f,0x3f,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0x3f,
-0xa62,0x3f,0xa62,0xa62,0xa62,0xa62,0x3f,0x3f,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xdb9,
-0xa62,0x3f,0xa62,0xa62,0xa62,0xa62,0x3f,0x3f,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,
-0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xdb9,0xa62,0x3f,0xa62,0xa62,
-0xa62,0xa62,0x3f,0x3f,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0x3f,0xa62,0x3f,0xa62,0xa62,
-0xa62,0xa62,0x3f,0x3f,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xdb9,0xa62,0xa62,0xa62,0xa62,
-0xa62,0xa62,0xa62,0x3f,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,
-0xa62,0xa62,0xa62,0xdb9,0xa62,0x3f,0xa62,0xa62,0xa62,0xa62,0x3f,0x3f,0xa62,0xa62,0xa62,0xa62,
-0xa62,0xa62,0xa62,0xdb9,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,
-0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0x3f,0x3f,0x130e,0x130e,0xdb3,0xdb6,0xa5c,0xa65,0xa59,
-0xa59,0xa59,0xa59,0xa65,0xa65,0xa5f,0xa5f,0xa5f,0xa5f,0xa5f,0xa5f,0xa5f,0xa5f,0xa5f,0xa56,0xa56,
-0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0x3f,0x3f,0x3f,0xa68,0xa68,0xa68,0xa68,
+0xa62,0x3f,0xa62,0xa62,0xa62,0xa62,0x3f,0x3f,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xdbc,
+0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0x3f,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,
+0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xdbc,0xa62,0x3f,0xa62,0xa62,0xa62,0xa62,0x3f,0x3f,
+0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xdbc,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,
+0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0x3f,0x3f,0x1314,0x1314,0xdb6,
+0xdb9,0xa5c,0xa65,0xa59,0xa59,0xa59,0xa59,0xa65,0xa65,0xa5f,0xa5f,0xa5f,0xa5f,0xa5f,0xa5f,0xa5f,
+0xa5f,0xa5f,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0xa56,0x3f,0x3f,0x3f,
0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,
-0xa68,0x16d7,0x42,0x42,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x16d4,0x42,0x42,0xa7a,0xa7d,0xa7d,0xa7d,
-0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,
-0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa77,0xa74,0x45,0x45,0x45,0xa83,0xa83,0xa83,0xa83,
-0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa80,0xa80,0xa80,0xa83,0xa83,0xa83,0x14cd,0x14cd,0x14cd,
-0x14cd,0x14cd,0x14cd,0x14cd,0x14cd,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0xaa4,0xaa4,0xaa4,0xaa4,
-0xaa4,0xaa4,0xa86,0xaa4,0xaa4,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa8c,0xa89,
-0xa9b,0xa9b,0xa9e,0xaa7,0xa95,0xa92,0xa9b,0xa98,0xaa7,0xcd2,0x4b,0x4b,0xaa1,0xaa1,0xaa1,0xaa1,
-0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0xcd5,0xcd5,0xcd5,0xcd5,
-0xcd5,0xcd5,0xcd5,0xcd5,0xcd5,0xcd5,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0xab6,0xab6,0xb2e,0xb31,
-0xabc,0xb2b,0xab9,0xab6,0xabf,0xace,0xac2,0xad1,0xad1,0xad1,0xaad,0x1b09,0xac5,0xac5,0xac5,0xac5,
-0xac5,0xac5,0xac5,0xac5,0xac5,0xac5,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0xac8,0xac8,0xac8,0xac8,
-0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,
-0xac8,0xac8,0xac8,0xac8,0x18fc,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0xac8,0xac8,0xac8,0xac8,
-0xac8,0xac8,0xac8,0xac8,0xac8,0xab0,0xfc6,0x4e,0x4e,0x4e,0x4e,0x4e,0x117f,0x117f,0x117f,0x117f,
-0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x4e6,0x4e6,0x4e6,0x4e6,
-0x4e6,0x4e6,0x4e6,0x4e6,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e6,0x4e6,0x4e6,0x4e6,
-0x4e6,0x4e6,0x51,0x51,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x51,0x51,0x4e6,0x4e6,0x4e6,0x4e6,
-0x4e6,0x4e6,0x4e6,0x4e6,0x51,0x4e9,0x51,0x4e9,0x51,0x4e9,0x51,0x4e9,0x4e6,0x4e6,0x4e6,0x4e6,
-0x4e6,0x4e6,0x4e6,0x4e6,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e6,0x4e6,0x4e6,0x4e6,
-0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x51,0x51,0x4e6,0x4e6,0x4e6,0x4e6,
-0x4e6,0x4e6,0x4e6,0x4e6,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e6,0x4e6,0x4e6,0x4e6,
-0x4e6,0x51,0x4e6,0x4e6,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e0,0x4e6,0x4e0,0x4e0,0x4dd,0x4e6,0x4e6,
-0x4e6,0x51,0x4e6,0x4e6,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4dd,0x4dd,0x4dd,0x4e6,0x4e6,0x4e6,0x4e6,
-0x51,0x51,0x4e6,0x4e6,0x4e9,0x4e9,0x4e9,0x4e9,0x51,0x4dd,0x4dd,0x4dd,0x4e6,0x4e6,0x4e6,0x4e6,
-0x4e6,0x4e6,0x4e6,0x4e6,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4dd,0x4dd,0x4dd,0x51,0x51,0x4e6,0x4e6,
-0x4e6,0x51,0x4e6,0x4e6,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e3,0x4e0,0x51,0xba6,0xba9,0xba9,0xba9,
-0xfcf,0x54,0x14a9,0x14a9,0x14a9,0x14a9,0x4f2,0x4f2,0x4f2,0x4f2,0x4f2,0x4f2,0x53d,0xbbb,0x57,0x57,
-0x6d8,0x53d,0x53d,0x53d,0x53d,0x53d,0x543,0x555,0x543,0x54f,0x549,0x6db,0x53a,0x6d5,0x6d5,0x6d5,
-0x6d5,0x53a,0x53a,0x53a,0x53a,0x53a,0x540,0x552,0x540,0x54c,0x546,0x57,0xdc2,0xdc2,0xdc2,0xdc2,
-0xdc2,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x1311,0x57,0x57,0x57,0x1b0c,0x5a,0x5a,0x5a,
-0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x564,0x564,0x564,0x564,
-0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x561,0x561,0x561,0x561,0x564,0xadd,0xadd,
-0xbc1,0xbc7,0xbc7,0xbc4,0xbc4,0xbc4,0xbc4,0xdc8,0xed9,0xed9,0xed9,0xed9,0x1113,0x5d,0x5d,0x5d,
-0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x594,0x594,0x594,0xae6,
-0xee2,0xfd5,0xfd5,0xfd5,0xfd5,0x126f,0x16dd,0x16dd,0x60,0x60,0x60,0x60,0x702,0x702,0x702,0x702,
-0x702,0x702,0x702,0x702,0x702,0x702,0x5a0,0x5a0,0x59d,0x59d,0x59d,0x59d,0x5c1,0x5c1,0x5c1,0x5c1,
-0x5c1,0xaef,0xaef,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,
-0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x5c4,0x5c4,0x5c4,0x5c4,
-0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,
-0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0xb0a,0xb0a,0xb0a,0xb0a,
-0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,
-0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0x69,0xb0a,0xb0a,0xb0a,0xb0a,0xb0d,0xb0a,0xb0a,0xb0a,0xb0a,
-0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0d,
-0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0xb10,0xb10,0xb10,0xb10,
-0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,
-0xb10,0xb10,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x72,0x822,0x81c,0x822,
-0x81c,0x822,0x81c,0x822,0x81c,0x822,0x81c,0x81c,0x81f,0x81c,0x81f,0x81c,0x81f,0x81c,0x81f,0x81c,
-0x81f,0x81c,0x81f,0x81c,0x81f,0x81c,0x81f,0x81c,0x81f,0x81c,0x81f,0x81c,0x81c,0x81c,0x81c,0x822,
-0x81c,0x822,0x81c,0x822,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,0x822,0x81c,0x81c,0x81c,0x81c,0x81c,
-0x81f,0xc60,0xc60,0x72,0x72,0x936,0x936,0x8fd,0x8fd,0x825,0x828,0xc5d,0x75,0x75,0x75,0x75,
-0x75,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,
-0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x1101,0x18c3,0x19aa,
-0x78,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,
-0x83d,0x83d,0x83d,0x78,0x906,0x906,0x909,0x909,0x909,0x909,0x909,0x909,0x909,0x909,0x909,0x909,
-0x909,0x909,0x909,0x909,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,
+0xa68,0xa68,0xa68,0xa68,0xa68,0x16e6,0x42,0x42,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x42,0x42,
+0xa7a,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,
+0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa7d,0xa77,0xa74,0x45,0x45,0x45,
+0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa80,0xa80,0xa80,0xa83,0xa83,
+0xa83,0x14d6,0x14d6,0x14d6,0x14d6,0x14d6,0x14d6,0x14d6,0x14d6,0x48,0x48,0x48,0x48,0x48,0x48,0x48,
+0xaa4,0xaa4,0xaa4,0xaa4,0xaa4,0xaa4,0xa86,0xaa4,0xaa4,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,0xa89,
+0xa89,0xa89,0xa8c,0xa89,0xaad,0xaad,0xa9e,0xaa7,0xa95,0xa92,0xa9b,0xa98,0xaa7,0xcd5,0x4b,0x4b,
+0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0xaa1,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,
+0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0xcd8,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,
+0xab9,0xab9,0xb31,0xb34,0xabf,0xb2e,0xabc,0xab9,0xac2,0xad1,0xac5,0xad4,0xad4,0xad4,0xab0,0x1b1b,
+0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,
+0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,
+0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0x190b,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,
+0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xab3,0xfc9,0x4e,0x4e,0x4e,0x4e,0x4e,
+0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,
+0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,
+0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x51,0x51,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x51,0x51,
+0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x51,0x4e9,0x51,0x4e9,0x51,0x4e9,0x51,0x4e9,
+0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,
+0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x51,0x51,
+0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,
+0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x51,0x4e6,0x4e6,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e0,0x4e6,0x4e0,
+0x4e0,0x4dd,0x4e6,0x4e6,0x4e6,0x51,0x4e6,0x4e6,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4dd,0x4dd,0x4dd,
+0x4e6,0x4e6,0x4e6,0x4e6,0x51,0x51,0x4e6,0x4e6,0x4e9,0x4e9,0x4e9,0x4e9,0x51,0x4dd,0x4dd,0x4dd,
+0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4dd,0x4dd,0x4dd,
+0x51,0x51,0x4e6,0x4e6,0x4e6,0x51,0x4e6,0x4e6,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e3,0x4e0,0x51,
+0xba9,0xbac,0xbac,0xbac,0xfd2,0x54,0x14b2,0x14b2,0x14b2,0x14b2,0x4f2,0x4f2,0x4f2,0x4f2,0x4f2,0x4f2,
+0x53d,0xbbe,0x57,0x57,0x6d8,0x53d,0x53d,0x53d,0x53d,0x53d,0x543,0x555,0x543,0x54f,0x549,0x6db,
+0x53a,0x6d5,0x6d5,0x6d5,0x6d5,0x53a,0x53a,0x53a,0x53a,0x53a,0x540,0x552,0x540,0x54c,0x546,0x57,
+0xdc5,0xdc5,0xdc5,0xdc5,0xdc5,0x1317,0x1317,0x1317,0x1317,0x1317,0x1317,0x1317,0x1317,0x57,0x57,0x57,
+0x1b1e,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,
+0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x564,0x561,0x561,0x561,
+0x561,0x564,0xae0,0xae0,0xbc4,0xbca,0xbca,0xbc7,0xbc7,0xbc7,0xbc7,0xdcb,0xedc,0xedc,0xedc,0xedc,
+0x1119,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,
+0x594,0x594,0x594,0xae9,0xee5,0xfd8,0xfd8,0xfd8,0xfd8,0x1275,0x16ec,0x16ec,0x60,0x60,0x60,0x60,
+0x702,0x702,0x702,0x702,0x702,0x702,0x702,0x702,0x702,0x702,0x5a0,0x5a0,0x59d,0x59d,0x59d,0x59d,
+0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0xaf2,0xaf2,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,
+0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,
+0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x5c4,0x66,0x66,0x66,0x66,0x66,
+0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,
+0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,
+0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0x69,0xb0d,0xb0d,0xb0d,0xb0d,0xb10,
+0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,
+0xb0d,0xb0d,0xb0d,0xb10,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,
+0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,
+0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,
+0x6f,0x822,0x81c,0x822,0x81c,0x822,0x81c,0x822,0x81c,0x822,0x81c,0x81c,0x81f,0x81c,0x81f,0x81c,
+0x81f,0x81c,0x81f,0x81c,0x81f,0x81c,0x81f,0x81c,0x81f,0x81c,0x81f,0x81c,0x81f,0x81c,0x81f,0x81c,
+0x81c,0x81c,0x81c,0x822,0x81c,0x822,0x81c,0x822,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,0x822,0x81c,
+0x81c,0x81c,0x81c,0x81c,0x81f,0xc63,0xc63,0x6f,0x6f,0x936,0x936,0x8fd,0x8fd,0x825,0x828,0xc60,
+0x72,0x72,0x72,0x72,0x72,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,
+0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,0x83a,
+0x83a,0x1107,0x18d2,0x19bc,0x75,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,
+0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x75,0x906,0x906,0x909,0x909,0x909,0x909,0x909,0x909,
+0x909,0x909,0x909,0x909,0x909,0x909,0x909,0x909,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,
0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,0x846,
-0x846,0xd5c,0xd5c,0x7b,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,
-0xb22,0x7e,0x7e,0x7e,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,
-0xb28,0xb28,0xb28,0xb28,0xb28,0xc69,0xb28,0xb28,0xb28,0xc69,0xb28,0x81,0x81,0x81,0x81,0x81,
-0x81,0x81,0x81,0x81,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,
-0x11a6,0x11a6,0x11a6,0x11a6,0x9c0,0x9c0,0x9c0,0x9c0,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,
-0x84,0x84,0x84,0x84,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,
-0x121b,0x121b,0x121b,0x121b,0x609,0x609,0x609,0x609,0x609,0x609,0x609,0x87,0x87,0x87,0x87,0x87,
-0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,0x87,0x87,0x87,0x87,
-0x87,0xafb,0x5fa,0x600,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x5fd,0x600,0x600,
-0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x87,0x600,0x600,0x600,0x600,
-0x600,0x87,0x600,0x87,0x600,0x600,0x87,0x600,0x600,0x87,0x600,0x600,0x600,0x600,0x600,0x600,
-0x600,0x600,0x600,0x603,0x615,0x60f,0x615,0x60f,0x612,0x618,0x615,0x60f,0x612,0x618,0x615,0x60f,
-0x612,0x618,0x615,0x60f,0x1323,0x1323,0x1b0f,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,
-0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x615,0x60f,0x612,0x618,0x615,0x60f,0x615,0x60f,0x615,
-0x60f,0x615,0x615,0x60f,0x60f,0x60f,0x60f,0x612,0x60f,0x60f,0x612,0x60f,0x612,0x612,0x612,0x60f,
-0x612,0x612,0x612,0x612,0x8a,0x8a,0x612,0x612,0x612,0x612,0x60f,0x60f,0x612,0x60f,0x60f,0x60f,
-0x60f,0x612,0x60f,0x60f,0x60f,0x60f,0x60f,0x612,0x612,0x612,0x60f,0x60f,0x8a,0x8a,0x8a,0x8a,
-0x8a,0x8a,0x8a,0x1b0f,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,
-0xb46,0xb46,0xb46,0xb46,0x85e,0x870,0x86d,0x870,0x86d,0xc7e,0xc7e,0xd68,0xd65,0x861,0x861,0x861,
-0x861,0x873,0x873,0x873,0x88b,0x88e,0x89d,0x8d,0x891,0x894,0x8a0,0x8a0,0x888,0x87f,0x879,0x87f,
-0x879,0x87f,0x879,0x87c,0x87c,0x897,0x897,0x89a,0x897,0x897,0x897,0x8d,0x897,0x885,0x882,0x87c,
-0x8d,0x8d,0x8d,0x8d,0x621,0x62d,0x621,0xbfa,0x621,0x90,0x621,0x62d,0x621,0x62d,0x621,0x62d,
-0x621,0x62d,0x621,0x62d,0x62d,0x62a,0x624,0x627,0x62d,0x62a,0x624,0x627,0x62d,0x62a,0x624,0x627,
-0x62d,0x62a,0x624,0x62a,0x624,0x62a,0x624,0x627,0x62d,0x62a,0x624,0x62a,0x624,0x62a,0x624,0x62a,
-0x624,0x90,0x90,0x61e,0x75f,0x762,0x777,0x77a,0x759,0x762,0x762,0x96,0x741,0x744,0x744,0x744,
-0x744,0x741,0x741,0x96,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0xafe,0xafe,0xafe,
-0x9c3,0x73b,0x630,0x630,0x96,0x789,0x768,0x759,0x762,0x75f,0x759,0x76b,0x75c,0x756,0x759,0x777,
-0x76e,0x765,0x786,0x759,0x783,0x783,0x783,0x783,0x783,0x783,0x783,0x783,0x783,0x783,0x774,0x771,
-0x777,0x777,0x777,0x789,0x74a,0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x747,
+0x846,0x846,0x846,0x846,0x846,0xd5f,0xd5f,0x78,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,
+0xb25,0xb25,0xb25,0xb25,0xb25,0x7b,0x7b,0x7b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,
+0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xc6c,0xb2b,0xb2b,0xb2b,0xc6c,0xb2b,0x7e,
+0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,
+0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x9c0,0x9c0,0x9c0,0x9c0,0x81,0x81,0x81,0x81,
+0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x1221,0x1221,0x1221,0x1221,0x1221,0x1221,0x1221,0x1221,
+0x1221,0x1221,0x1221,0x1221,0x1221,0x1221,0x1221,0x1221,0x609,0x609,0x609,0x609,0x609,0x609,0x609,0x84,
+0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x5f7,0x5f7,0x5f7,0x5f7,0x5f7,
+0x84,0x84,0x84,0x84,0x84,0xafe,0x5fa,0x600,0x606,0x606,0x606,0x606,0x606,0x606,0x606,0x606,
+0x606,0x5fd,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x84,
+0x600,0x600,0x600,0x600,0x600,0x84,0x600,0x84,0x600,0x600,0x84,0x600,0x600,0x84,0x600,0x600,
+0x600,0x600,0x600,0x600,0x600,0x600,0x600,0x603,0x615,0x60f,0x615,0x60f,0x612,0x618,0x615,0x60f,
+0x612,0x618,0x615,0x60f,0x612,0x618,0x615,0x60f,0x1329,0x1329,0x1b21,0x87,0x87,0x87,0x87,0x87,
+0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x615,0x60f,0x612,0x618,0x615,
+0x60f,0x615,0x60f,0x615,0x60f,0x615,0x615,0x60f,0x60f,0x60f,0x60f,0x612,0x60f,0x60f,0x612,0x60f,
+0x612,0x612,0x612,0x60f,0x612,0x612,0x612,0x612,0x87,0x87,0x612,0x612,0x612,0x612,0x60f,0x60f,
+0x612,0x60f,0x60f,0x60f,0x60f,0x612,0x60f,0x60f,0x60f,0x60f,0x60f,0x612,0x612,0x612,0x60f,0x60f,
+0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x1b21,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,
+0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0x85e,0x870,0x86d,0x870,0x86d,0xc81,0xc81,0xd6b,
+0xd68,0x861,0x861,0x861,0x861,0x873,0x873,0x873,0x88b,0x88e,0x89d,0x8a,0x891,0x894,0x8a0,0x8a0,
+0x888,0x87f,0x879,0x87f,0x879,0x87f,0x879,0x87c,0x87c,0x897,0x897,0x89a,0x897,0x897,0x897,0x8a,
+0x897,0x885,0x882,0x87c,0x8a,0x8a,0x8a,0x8a,0x621,0x62d,0x621,0xbfd,0x621,0x8d,0x621,0x62d,
+0x621,0x62d,0x621,0x62d,0x621,0x62d,0x621,0x62d,0x62d,0x62a,0x624,0x627,0x62d,0x62a,0x624,0x627,
+0x62d,0x62a,0x624,0x627,0x62d,0x62a,0x624,0x62a,0x624,0x62a,0x624,0x627,0x62d,0x62a,0x624,0x62a,
+0x624,0x62a,0x624,0x62a,0x624,0x8d,0x8d,0x61e,0x75f,0x762,0x777,0x77a,0x759,0x762,0x762,0x93,
+0x741,0x744,0x744,0x744,0x744,0x741,0x741,0x93,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,
+0x90,0xb01,0xb01,0xb01,0x9c3,0x73b,0x630,0x630,0x93,0x789,0x768,0x759,0x762,0x75f,0x759,0x76b,
+0x75c,0x756,0x759,0x777,0x76e,0x765,0x786,0x759,0x783,0x783,0x783,0x783,0x783,0x783,0x783,0x783,
+0x783,0x783,0x774,0x771,0x777,0x777,0x777,0x789,0x74a,0x747,0x747,0x747,0x747,0x747,0x747,0x747,
0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x747,
-0x747,0x747,0x747,0x96,0x96,0x96,0x747,0x747,0x747,0x747,0x747,0x747,0x96,0x96,0x747,0x747,
-0x747,0x747,0x747,0x747,0x96,0x96,0x747,0x747,0x747,0x747,0x747,0x747,0x96,0x96,0x747,0x747,
-0x747,0x96,0x96,0x96,0xb49,0xb49,0xb49,0xb49,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
-0x99,0x1860,0x1860,0x1860,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,
-0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0x9c,0x9c,0x9c,0x9c,0x9c,0x1626,0x1626,0x1626,0x1626,
-0x1626,0x1626,0x1626,0x1626,0x1626,0x1626,0x1626,0x1626,0x1626,0x1626,0x1626,0x1626,0xb58,0xb58,0xb58,0xb58,
-0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,
-0xb58,0xb58,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0xb64,0xb64,0xb64,0xb64,
-0xb64,0xb64,0xb64,0xa2,0xa2,0xfe1,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,
-0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0x16e3,0x16e3,0x16e3,0x16e3,
-0x16e3,0x16e3,0x16e3,0x16e3,0x16e3,0x1b12,0x1b12,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,
-0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xb7c,0xb7c,0xb7c,0xb7c,
-0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,
-0xb79,0xa5,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb7c,0xb7c,0xb79,0xb79,
-0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,
-0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb7c,0xa5,0xb7c,0xb7c,0xa5,0xa5,0xb7c,0xa5,
-0xa5,0xb7c,0xb7c,0xa5,0xa5,0xb7c,0xb7c,0xb7c,0xb7c,0xa5,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
-0xb7c,0xb7c,0xb79,0xb79,0xb79,0xb79,0xa5,0xb79,0xa5,0xb79,0xb79,0xb79,0xb79,0xcf0,0xb79,0xb79,
-0xa5,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb7c,0xb7c,0xb7c,0xb7c,
-0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb79,0xb79,0xb79,0xb79,
-0xb7c,0xb7c,0xa5,0xb7c,0xb7c,0xb7c,0xb7c,0xa5,0xa5,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
-0xb7c,0xa5,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xa5,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,
-0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,
-0xb79,0xb79,0xb79,0xb79,0xb7c,0xb7c,0xa5,0xb7c,0xb7c,0xb7c,0xb7c,0xa5,0xb7c,0xb7c,0xb7c,0xb7c,
-0xb7c,0xa5,0xb7c,0xa5,0xa5,0xa5,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xa5,0xb79,0xb79,
-0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xdda,0xdda,0xa5,0xa5,
+0x747,0x747,0x747,0x747,0x747,0x747,0x747,0x93,0x93,0x93,0x747,0x747,0x747,0x747,0x747,0x747,
+0x93,0x93,0x747,0x747,0x747,0x747,0x747,0x747,0x93,0x93,0x747,0x747,0x747,0x747,0x747,0x747,
+0x93,0x93,0x747,0x747,0x747,0x93,0x93,0x93,0xb4c,0xb4c,0xb4c,0xb4c,0x96,0x96,0x96,0x96,
+0x96,0x96,0x96,0x96,0x96,0x186f,0x186f,0x186f,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,
+0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0x99,0x99,0x99,0x99,0x99,
+0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,
+0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,
+0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,
+0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0x9f,0x9f,0xfe4,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,
+0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,
+0x16f2,0x16f2,0x16f2,0x16f2,0x16f2,0x16f2,0x16f2,0x16f2,0x16f2,0x1b24,0x1b24,0x9f,0x9f,0x9f,0x9f,0x9f,
+0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,
+0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7c,0xb7c,
+0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xa2,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
+0xb7f,0xb7f,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
+0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7f,0xa2,0xb7f,0xb7f,
+0xa2,0xa2,0xb7f,0xa2,0xa2,0xb7f,0xb7f,0xa2,0xa2,0xb7f,0xb7f,0xb7f,0xb7f,0xa2,0xb7f,0xb7f,
+0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7c,0xb7c,0xb7c,0xb7c,0xa2,0xb7c,0xa2,0xb7c,0xb7c,0xb7c,
+0xb7c,0xcf3,0xb7c,0xb7c,0xa2,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
+0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,
+0xb7c,0xb7c,0xb7c,0xb7c,0xb7f,0xb7f,0xa2,0xb7f,0xb7f,0xb7f,0xb7f,0xa2,0xa2,0xb7f,0xb7f,0xb7f,
+0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xa2,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xa2,0xb7c,0xb7c,
0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
-0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb79,0xb79,0xb79,0xb73,0xb79,0xb79,0xb79,0xb79,
-0xb79,0xb79,0xef1,0xeee,0xa5,0xa5,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,
-0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xa8,0xb82,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,
-0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,
-0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,0xc09,
-0xc09,0xc09,0xc09,0xc09,0xc09,0x1b18,0xc09,0xc09,0xc09,0xc09,0xc03,0xc03,0xc06,0x1b15,0xab,0xab,
-0xab,0xab,0xab,0xab,0xab,0xab,0xab,0x1b18,0xc12,0xc12,0xc12,0xc12,0xc12,0xc12,0xc12,0xc12,
-0xc12,0xc12,0xc12,0xc12,0xc12,0xc12,0xc12,0xc12,0xc12,0xc12,0xc0c,0xc0c,0xc0f,0xc72,0xc72,0xae,
-0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,
-0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xc18,0xc15,0xc15,0xb1,0xb1,0xb1,0xb1,
-0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,
-0xc1e,0xc1e,0xc1e,0xc1e,0xc1e,0xb4,0xc1e,0xc1e,0xc1e,0xb4,0xc1b,0xc1b,0xb4,0xb4,0xb4,0xb4,
-0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,
-0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,0xd02,
-0xd02,0xd02,0xd02,0xd02,0xd02,0x14e8,0x14e8,0xb7,0xcf3,0xcf3,0xcf3,0xcff,0xcff,0xcff,0xcff,0xcf3,
-0xcf3,0xcff,0xcff,0xcff,0xb7,0xb7,0xb7,0xb7,0xcff,0xcff,0xcf3,0xcff,0xcff,0xcff,0xcff,0xcff,
-0xcff,0xcf6,0xcf6,0xcf6,0xb7,0xb7,0xb7,0xb7,0xcf9,0xb7,0xb7,0xb7,0xd05,0xd05,0xcfc,0xcfc,
-0xcfc,0xcfc,0xcfc,0xcfc,0xcfc,0xcfc,0xcfc,0xcfc,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,
-0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xd08,0xba,0xba,0xd08,0xd08,0xd08,0xd08,
-0xd08,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0x14eb,0x14eb,0x14eb,0x14eb,
-0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,
-0xbd,0xbd,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,
-0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0xbd,0x1a64,0x14eb,0x14eb,0x14eb,0x14eb,
-0x14eb,0x14eb,0x14eb,0x14eb,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,
-0xc0,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,
-0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xc0,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,
-0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xc0,0xd2c,0xd2c,0xc0,0xd2c,
-0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xc0,0xc0,
-0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xc0,0xc0,
-0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
-0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
-0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,
-0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xc3,0xc3,0xc3,0xc3,0xc3,
-0xd6e,0xd6e,0xd74,0xc6,0xc6,0xc6,0xc6,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,
-0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,0xd6b,
-0xc6,0xc6,0xc6,0xd71,0xd71,0xd71,0xd71,0xd71,0xd71,0xd71,0xd71,0xd71,0xd35,0xd35,0xd35,0xd35,
-0xd35,0xd35,0xd35,0xd35,0xd35,0xd35,0xd35,0xd35,0xd35,0xd35,0xd35,0xd35,0xd35,0xd35,0xd35,0xd35,
-0xd35,0xd35,0xd35,0xd35,0xd35,0xd35,0xd35,0xd35,0xd35,0xd35,0xc9,0xd32,0xd3e,0xd3e,0xd3e,0xd3e,
-0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,
-0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xcc,0xcc,0xd3b,0xd3b,0xd3b,0xd3b,
-0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x1824,0x1824,0x1824,0x1824,
-0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0xd41,0xd41,0xd41,0xd41,
-0xd41,0xd41,0xcf,0xcf,0xd41,0xcf,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,
-0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xcf,0xd41,
-0xd41,0xcf,0xcf,0xcf,0xd41,0xcf,0xcf,0xd41,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,
-0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd2,
-0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,
-0xdf5,0xdf5,0xdf5,0x14ee,0x14ee,0x179a,0x179a,0xd8,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,
-0x10e0,0x10e0,0x10e0,0x10e0,0x1a73,0x129,0x129,0x129,0xe07,0xe07,0xe07,0xe07,0xe07,0xe07,0xe07,0xe07,
-0xe07,0xe07,0xe07,0xe07,0xe07,0xe07,0xe07,0xe07,0xe07,0xe07,0xe07,0xe07,0xe07,0xe07,0xe07,0xdfe,
-0xdfe,0xe04,0xe04,0xdfe,0xdb,0xdb,0xe01,0xe01,0x1110,0x1110,0x1110,0x1110,0xde,0xde,0xde,0xde,
-0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,
-0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xe19,0xe16,0xe19,0xe16,0xe16,0xe0d,0xe0d,0xe0d,
-0xe0d,0xe0d,0xe0d,0x115b,0x1158,0x115b,0x1158,0x1155,0x1155,0x1155,0x13e6,0x13e3,0xe1,0xe1,0xe1,0xe1,
-0xe1,0xe13,0xe10,0xe10,0xe10,0xe0d,0xe13,0xe10,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,
-0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe4,
-0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe4,
-0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe4,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe4,
-0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe1c,0xe4,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,
-0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,
-0xe1f,0xe1f,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xea,0x13e9,
-0xea,0xea,0xea,0xea,0xea,0x13e9,0xea,0xea,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,
-0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe3d,0xe31,0xe31,0xe31,0xed,0xe31,0xe31,0xed,
-0xed,0xed,0xed,0xed,0xe31,0xe31,0xe31,0xe31,0xe3d,0xe3d,0xe3d,0xe3d,0xed,0xe3d,0xe3d,0xe3d,
-0xed,0xe3d,0xe3d,0xe3d,0xe3d,0xe3d,0xe3d,0xe3d,0xe3d,0xe3d,0xe3d,0xe3d,0xe3d,0xe3d,0xe3d,0xe3d,
-0xe3d,0xe3d,0xe3d,0xe3d,0xe3d,0xe3d,0xe3d,0xe3d,0x1905,0x1905,0xed,0xed,0xe2e,0xe2e,0xe2e,0xed,
-0xed,0xed,0xed,0xe34,0xe37,0xe37,0xe37,0xe37,0xe37,0xe37,0xe37,0xe37,0x1902,0xed,0xed,0xed,
-0xed,0xed,0xed,0xed,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe40,0xe40,0xe37,0xed,0xed,0xed,
-0xed,0xed,0xed,0xed,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0x1161,0x1161,
-0xf0,0xf0,0xf0,0xf0,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4f,0xe4f,0xe4f,0xe4c,0xe4c,0xe4f,0xe4c,
-0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,
-0xe49,0xe49,0xe49,0xe49,0xe49,0xe49,0xe49,0xe49,0xe49,0xe49,0x115e,0xf0,0xf0,0xf0,0xe46,0xe46,
-0xe55,0xe55,0xe55,0xe55,0xf3,0xf3,0xf3,0xf3,0xe55,0xe55,0xe55,0xe55,0xe55,0xe55,0xe55,0xe55,
-0xe52,0xe55,0xe55,0xe55,0xe55,0xe55,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,
-0x14fd,0x1503,0x1500,0x1845,0x17a0,0x1869,0x1869,0x1869,0x1869,0x1869,0x190b,0x1908,0x190e,0x1908,0x190e,0x19cb,
-0x1a67,0x1a67,0x1a67,0x1b2a,0x1b2a,0x1b24,0x1b21,0x1b24,0x1b21,0x1b24,0x1b21,0x1b24,0x1b21,0x1b27,0xf6,0xf6,
-0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,
-0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,
-0xe79,0xe79,0xe79,0xe76,0xe76,0xe6d,0xe6d,0xe76,0xe73,0xe73,0xe73,0xe73,0x1a6a,0xf9,0xf9,0xf9,
-0x12cc,0x12cc,0x12cc,0x12cf,0x12cf,0x12cf,0x12c6,0x12c6,0x12c9,0x12c6,0x14d,0x14d,0x14d,0x14d,0x14d,0x14d,
-0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0x13f5,0x13f5,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xe7f,
-0x1335,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0x1332,
-0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,
-0xeac,0xe9d,0xe97,0xea9,0xea6,0xea0,0xea0,0xeaf,0xe9a,0xea3,0xff,0xff,0xff,0xff,0xff,0xff,
-0xf33,0xf33,0xf1e,0xf33,0xf36,0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,0x1b2d,0x105,0x105,0x105,
-0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf2d,0xf3f,0xf3f,0xf24,0xf2a,0xf3f,0xf3f,
-0xf27,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf21,0xf21,0xf21,0xf21,0xf21,
-0xf21,0xf21,0xf21,0xf21,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0x1b30,0x1b30,0x105,
-0x1b39,0x1b33,0x19d1,0x19ce,0x19d1,0x19d1,0x19d1,0x1a70,0x1a6d,0x1a70,0x1a6d,0x108,0x108,0x108,0x108,0x108,
-0x1b39,0x1b33,0x108,0x1b33,0x108,0x1b33,0x1b39,0x1b33,0x1b39,0x1b33,0x108,0x108,0x108,0x108,0x108,0x108,
-0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x1b36,0x1b36,
-0x1b36,0x1a70,0x1a6d,0x150c,0x13fe,0x13fe,0x1338,0x103b,0x103b,0x103b,0x103b,0x103b,0xf4e,0xf4e,0xf4e,0xf4e,
-0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,
-0xf4b,0xf4b,0xf51,0xf51,0x10b,0x10b,0x10b,0x10b,0x10b,0x10b,0x10b,0x10b,0xf5a,0xf5a,0xf5a,0xf5a,
-0xf5a,0xf5a,0xf5a,0xf5a,0xf5a,0xf5a,0xf5a,0xf5a,0xf5a,0xf5a,0xf5a,0xf5a,0xf5a,0xf5a,0xf5a,0xf5a,
-0xf5a,0xf5a,0xf54,0xf54,0xf54,0xf54,0x116a,0x116a,0x10e,0x10e,0x10e,0xf57,0x1512,0x1512,0x1512,0x1512,
-0x1512,0x1512,0x1512,0x1512,0x1512,0x1512,0x1512,0x1512,0x1512,0x1512,0x1512,0x1512,0x1512,0x1512,0x1512,0x1512,
-0x1512,0x1512,0x1512,0x1512,0x1512,0x16f2,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,
-0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,
-0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0xf63,0xf63,0xf63,0x1518,0x1518,0x1518,0x1518,0x1518,
-0x1518,0x1518,0x1518,0x1518,0x1518,0x1518,0x1518,0x114,0xf60,0xf60,0xf60,0xf60,0x1515,0x114,0x114,0x114,
-0x114,0x114,0x114,0x114,0x114,0x114,0x114,0x114,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,
-0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0x191d,0x191d,0x191d,0x191d,0x191d,0x191d,
-0x191d,0x117,0x117,0x117,0x117,0x117,0x117,0x117,0x1062,0x1062,0x1062,0x1062,0x105f,0x105f,0x105f,0x105f,
-0x105f,0x105f,0x105f,0x105f,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x105f,0x105f,0x1056,0x1053,
-0x11a,0x11a,0x11a,0x1065,0x1065,0x1059,0x1059,0x1059,0x105c,0x105c,0x105c,0x105c,0x105c,0x105c,0x105c,0x105c,
-0x105c,0x105c,0x11a,0x11a,0x11a,0x1062,0x1062,0x1062,0x1068,0x1068,0x1068,0x1068,0x1068,0x1068,0x1068,0x1068,
-0x1068,0x1068,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x107d,0x107d,0x107d,0x107d,0x107d,0x107d,0x107d,0x107d,
-0x107d,0x107d,0x1080,0x1080,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,
-0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0x10a7,0x10a7,0x10a7,0x10a7,0x10a1,0x17a6,0x120,0x120,
-0x120,0x120,0x120,0x120,0x120,0x120,0x10ad,0x10ad,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,0x10a4,
-0x10a4,0x10a4,0x120,0x120,0x120,0x120,0x120,0x120,0x10cb,0x10cb,0x10cb,0x10cb,0x10cb,0x10cb,0x10cb,0x10bf,
-0x10bf,0x10bf,0x10bf,0x10bf,0x10bf,0x10bf,0x10bf,0x10bf,0x10bf,0x10bf,0x10c5,0x10c8,0x123,0x123,0x123,0x123,
-0x123,0x123,0x123,0x123,0x123,0x123,0x123,0x10c2,0x10da,0x10da,0x10da,0x10da,0x10da,0x10da,0x10da,0x10da,
-0x10da,0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,0x10d7,0x10d7,0x10ce,0x10ce,0x10d7,0x10d7,0x10ce,0x10ce,0x126,
-0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x10da,0x10da,0x10da,0x10ce,0x10da,0x10da,0x10da,0x10da,
-0x10da,0x10da,0x10da,0x10da,0x10ce,0x10d7,0x126,0x126,0x10d4,0x10d4,0x10d4,0x10d4,0x10d4,0x10d4,0x10d4,0x10d4,
-0x10d4,0x10d4,0x126,0x126,0x10d1,0x10dd,0x10dd,0x10dd,0x1524,0x129,0x129,0x129,0x129,0x129,0x129,0x129,
-0x129,0x129,0x129,0x129,0x129,0x129,0x129,0x129,0x129,0x129,0x129,0x129,0x129,0x129,0x129,0x129,
-0x129,0x129,0x129,0x129,0x129,0x129,0x129,0x129,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,
-0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,
-0x10e3,0x10e3,0x10e3,0x10e3,0x10e3,0x10e6,0x12c,0x12c,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,
+0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7f,0xb7f,0xa2,0xb7f,0xb7f,0xb7f,0xb7f,0xa2,
+0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xa2,0xb7f,0xa2,0xa2,0xa2,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,
+0xb7f,0xa2,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
+0xddd,0xddd,0xa2,0xa2,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,
+0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7c,0xb7c,0xb7c,0xb76,
+0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xef4,0xef1,0xa2,0xa2,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,
+0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xa5,0xb85,0xa5,0xa5,
+0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,
+0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xc0c,0xc0c,0xc0c,0xc0c,
+0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0xc0c,0x1b2a,0xc0c,0xc0c,0xc0c,0xc0c,0xc06,0xc06,
+0xc09,0x1b27,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0x1b2a,0xc15,0xc15,0xc15,0xc15,
+0xc15,0xc15,0xc15,0xc15,0xc15,0xc15,0xc15,0xc15,0xc15,0xc15,0xc15,0xc15,0xc15,0xc15,0xc0f,0xc0f,
+0xc12,0xc75,0xc75,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xc1b,0xc1b,0xc1b,0xc1b,
+0xc1b,0xc1b,0xc1b,0xc1b,0xc1b,0xc1b,0xc1b,0xc1b,0xc1b,0xc1b,0xc1b,0xc1b,0xc1b,0xc1b,0xc18,0xc18,
+0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xc21,0xc21,0xc21,0xc21,
+0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xb1,0xc21,0xc21,0xc21,0xb1,0xc1e,0xc1e,
+0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xd05,0xd05,0xd05,0xd05,
+0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,
+0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0xd05,0x14f1,0x14f1,0xb4,0xcf6,0xcf6,0xcf6,0xd02,
+0xd02,0xd02,0xd02,0xcf6,0xcf6,0xd02,0xd02,0xd02,0xb4,0xb4,0xb4,0xb4,0xd02,0xd02,0xcf6,0xd02,
+0xd02,0xd02,0xd02,0xd02,0xd02,0xcf9,0xcf9,0xcf9,0xb4,0xb4,0xb4,0xb4,0xcfc,0xb4,0xb4,0xb4,
+0xd08,0xd08,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xcff,0xd0b,0xd0b,0xd0b,0xd0b,
+0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xb7,0xb7,
+0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,
+0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,
+0x14f4,0x14f4,0x14f4,0x14f4,0xba,0xba,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,
+0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0xba,0x1a76,
+0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,
+0xd2f,0xd2f,0xd2f,0xd2f,0xbd,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,
+0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xbd,0xd2f,0xd2f,0xd2f,0xd2f,
+0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xbd,
+0xd2f,0xd2f,0xbd,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,
+0xd2f,0xd2f,0xbd,0xbd,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,
+0xd2f,0xd2f,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,
+0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,
+0xbd,0xbd,0xbd,0xbd,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,
+0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xc0,
+0xc0,0xc0,0xc0,0xc0,0xd71,0xd71,0xd77,0xc3,0xc3,0xc3,0xc3,0xd6e,0xd6e,0xd6e,0xd6e,0xd6e,
+0xd6e,0xd6e,0xd6e,0xd6e,0xd6e,0xd6e,0xd6e,0xd6e,0xd6e,0xd6e,0xd6e,0xd6e,0xd6e,0xd6e,0xd6e,0xd6e,
+0xd6e,0xd6e,0xd6e,0xd6e,0xc3,0xc3,0xc3,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,0xd74,
+0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,
+0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xc6,0xd35,
+0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,
+0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xd41,0xc9,0xc9,
+0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xd3e,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,
+0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,
+0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xcc,0xcc,0xd44,0xcc,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,
+0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,
+0xd44,0xd44,0xcc,0xd44,0xd44,0xcc,0xcc,0xcc,0xd44,0xcc,0xcc,0xd44,0xd47,0xd47,0xd47,0xd47,
+0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,
+0xd47,0xd47,0xd47,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xdf8,0xdf8,0xdf8,0xdf8,
+0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0x14f7,0x14f7,0x17a9,0x17a9,0xd5,0x10e6,0x10e6,0x10e6,0x10e6,
+0x10e6,0x10e6,0x10e6,0x10e6,0x10e6,0x10e6,0x10e6,0x10e6,0x1a85,0x126,0x126,0x126,0xe0a,0xe0a,0xe0a,0xe0a,
+0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,0xe0a,
+0xe0a,0xe0a,0xe0a,0xe01,0xe01,0xe07,0xe07,0xe01,0xd8,0xd8,0xe04,0xe04,0x1113,0x1113,0x1113,0x1113,
+0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0x1c56,0xc72,0xc72,0xc72,0xc72,
+0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xc72,0xe1c,0xe19,0xe1c,0xe19,
+0xe19,0xe10,0xe10,0xe10,0xe10,0xe10,0xe10,0x1161,0x115e,0x1161,0x115e,0x115b,0x115b,0x115b,0x13ef,0x13ec,
+0xde,0xde,0xde,0xde,0xde,0xe16,0xe13,0xe13,0xe13,0xe10,0xe16,0xe13,0xe1f,0xe1f,0xe1f,0xe1f,
+0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,
+0xe1f,0xe1f,0xe1f,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1f,0xe1f,0xe1f,0xe1f,
+0xe1f,0xe1f,0xe1f,0xe1,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1,0xe1f,0xe1f,0xe1f,0xe1f,
+0xe1f,0xe1f,0xe1f,0xe1,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1f,0xe1,0xe25,0xe25,0xe25,0xe25,
+0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe22,0xe22,0xe22,0xe22,
+0xe22,0xe22,0xe22,0xe22,0xe22,0xe22,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe28,0xe28,0xe28,0xe28,
+0xe28,0xe28,0xe7,0x13f2,0xe7,0xe7,0xe7,0xe7,0xe7,0x13f2,0xe7,0xe7,0xe7f,0xe7f,0xe7f,0xe7f,
+0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe40,0xe34,0xe34,0xe34,
+0xea,0xe34,0xe34,0xea,0xea,0xea,0xea,0xea,0xe34,0xe34,0xe34,0xe34,0xe40,0xe40,0xe40,0xe40,
+0xea,0xe40,0xe40,0xe40,0xea,0xe40,0xe40,0xe40,0xe40,0xe40,0xe40,0xe40,0xe40,0xe40,0xe40,0xe40,
+0xe40,0xe40,0xe40,0xe40,0xe40,0xe40,0xe40,0xe40,0xe40,0xe40,0xe40,0xe40,0x1914,0x1914,0xea,0xea,
+0xe31,0xe31,0xe31,0xea,0xea,0xea,0xea,0xe37,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,0xe3a,
+0x1911,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xe3d,0xe3d,0xe3d,0xe3d,0xe3d,0xe3d,0xe43,0xe43,
+0xe3a,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,
+0xe4f,0xe4f,0x1167,0x1167,0xed,0xed,0xed,0xed,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe52,0xe52,0xe52,
+0xe4f,0xe4f,0xe52,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xed,0xed,
+0xed,0xed,0xed,0xed,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0x1164,0xed,
+0xed,0xed,0xe49,0xe49,0xe58,0xe58,0xe58,0xe58,0xf0,0xf0,0xf0,0xf0,0xe58,0xe58,0xe58,0xe58,
+0xe58,0xe58,0xe58,0xe58,0xe55,0xe58,0xe58,0xe58,0xe58,0xe58,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,
+0xf0,0xf0,0xf0,0xf0,0x1506,0x150c,0x1509,0x1854,0x17af,0x1878,0x1878,0x1878,0x1878,0x1878,0x191a,0x1917,
+0x191d,0x1917,0x191d,0x19dd,0x1a79,0x1a79,0x1a79,0x1b3c,0x1b3c,0x1b36,0x1b33,0x1b36,0x1b33,0x1b36,0x1b33,0x1b36,
+0x1b33,0x1b39,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,
+0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,
+0xf3,0xf3,0xf3,0xf3,0xe7c,0xe7c,0xe7c,0xe79,0xe79,0xe70,0xe70,0xe79,0xe76,0xe76,0xe76,0xe76,
+0x1a7c,0xf6,0xf6,0xf6,0x12cc,0x12cc,0x12cc,0x12cf,0x12cf,0x12cf,0x12d2,0x12d2,0x12d5,0x12d2,0x14a,0x14a,
+0x14a,0x14a,0x14a,0x14a,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0x13fe,0x13fe,0xf9,0xf9,0xf9,0xf9,
+0xf9,0xf9,0xf9,0xe82,0x133b,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,
+0xf9,0xf9,0xf9,0x1338,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,0xc45,
+0xc45,0xc45,0xc45,0xc45,0xeaf,0xea0,0xe9a,0xeac,0xea9,0xea3,0xea3,0xeb2,0xe9d,0xea6,0xfc,0xfc,
+0xfc,0xfc,0xfc,0xfc,0xf36,0xf36,0xf21,0xf36,0xf39,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,
+0x1b3f,0x102,0x102,0x102,0xf30,0xf30,0xf30,0xf30,0xf30,0xf30,0xf30,0xf30,0xf30,0xf30,0xf42,0xf42,
+0xf2a,0xf2d,0xf42,0xf42,0xf27,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf24,
+0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf24,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,0xf2a,
+0xf2a,0x1b42,0x1b42,0x102,0x1b4b,0x1b45,0x19e3,0x19e0,0x19e3,0x19e3,0x19e3,0x1a82,0x1a7f,0x1a82,0x1a7f,0x105,
+0x105,0x105,0x105,0x105,0x1b4b,0x1b45,0x105,0x1b45,0x105,0x1b45,0x1b4b,0x1b45,0x1b4b,0x1b45,0x105,0x105,
+0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,0x105,
+0x105,0x105,0x1b48,0x1b48,0x1b48,0x1a82,0x1a7f,0x1515,0x1407,0x1407,0x133e,0x103e,0x103e,0x103e,0x103e,0x103e,
+0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,
+0xf51,0xf51,0xf51,0xf51,0xf4e,0xf4e,0xf54,0xf54,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,
+0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,
+0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf57,0xf57,0xf57,0xf57,0x1170,0x1170,0x10b,0x10b,0x10b,0xf5a,
+0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,
+0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x1701,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,
+0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,
+0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0x10e,0xf66,0xf66,0xf66,0x1521,
+0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x1521,0x111,0xf63,0xf63,0xf63,0xf63,
+0x151e,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0x111,0xf69,0xf69,0xf69,0xf69,
+0xf69,0xf69,0xf69,0xf69,0xf69,0xf69,0xf69,0xf69,0xf69,0xf69,0xf69,0xf69,0xf69,0xf69,0x192c,0x192c,
+0x192c,0x192c,0x192c,0x192c,0x192c,0x114,0x114,0x114,0x114,0x114,0x114,0x114,0x1065,0x1065,0x1065,0x1065,
+0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0x1053,0x1053,0x1053,0x1053,0x1053,0x1053,0x1053,0x1053,
+0x1062,0x1062,0x1059,0x1056,0x117,0x117,0x117,0x1068,0x1068,0x105c,0x105c,0x105c,0x105f,0x105f,0x105f,0x105f,
+0x105f,0x105f,0x105f,0x105f,0x105f,0x105f,0x117,0x117,0x117,0x1065,0x1065,0x1065,0x106b,0x106b,0x106b,0x106b,
+0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106e,0x106e,0x106e,0x106e,0x106e,0x106e,0x1080,0x1080,0x1080,0x1080,
+0x1080,0x1080,0x1080,0x1080,0x1080,0x1080,0x1083,0x1083,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,
+0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x11a,0x10aa,0x10aa,0x10aa,0x10aa,
+0x10a4,0x17b5,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0x10b0,0x10b0,0x10a7,0x10a7,0x10a7,0x10a7,
+0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x11d,0x11d,0x11d,0x11d,0x11d,0x11d,0x10ce,0x10ce,0x10ce,0x10ce,
+0x10ce,0x10ce,0x10ce,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c2,0x10c8,0x10cb,
+0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x10c5,0x10e0,0x10e0,0x10e0,0x10e0,
+0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10d1,0x10d1,0x10d1,0x10d1,0x10d1,0x10d1,0x10da,0x10da,0x10d1,0x10d1,0x10da,
+0x10da,0x10d1,0x10d1,0x123,0x123,0x123,0x123,0x123,0x123,0x123,0x123,0x123,0x10dd,0x10dd,0x10dd,0x10d1,
+0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0x10dd,0x10d1,0x10da,0x123,0x123,0x10d7,0x10d7,0x10d7,0x10d7,
+0x10d7,0x10d7,0x10d7,0x10d7,0x10d7,0x10d7,0x123,0x123,0x10d4,0x10e3,0x10e3,0x10e3,0x152d,0x126,0x126,0x126,
+0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,
+0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x126,0x10e9,0x10e9,0x10e9,0x10e9,
0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,
-0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x12f,0x12f,0x12f,0x10ec,0x10ec,0x10ec,0x10ec,0x10ec,0x10ec,0x10ec,0x10ec,
-0x10ec,0x10ec,0x10ec,0x10ec,0x10ec,0x10ec,0x10ec,0x10ec,0x10ec,0x132,0x132,0x132,0x132,0x132,0x132,0x132,
-0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x132,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,
-0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,
-0x10f2,0x10f2,0x135,0x135,0x135,0x135,0x135,0x10ef,0x10f5,0x10f5,0x10f5,0x10f5,0x10f5,0x10f5,0x10f5,0x10f5,
-0x10f5,0x10f5,0x10f5,0x10f5,0x138,0x138,0x138,0x138,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,
-0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x13b,0x13b,0x13b,0x13b,
-0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x1170,0x1170,0x1170,0x1170,0x1179,0x1170,0x1170,0x1170,
-0x1179,0x1170,0x1170,0x1170,0x1170,0x116d,0x13e,0x13e,0x1176,0x1176,0x1176,0x1176,0x1176,0x1176,0x1176,0x117c,
-0x1176,0x117c,0x1176,0x1176,0x1176,0x117c,0x117c,0x13e,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,
-0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x141,0x141,
-0x141,0x141,0x141,0x141,0x141,0x141,0x141,0x141,0x119a,0x119a,0x119a,0x119a,0x119a,0x119a,0x119a,0x119a,
-0x119a,0x119a,0x119a,0x119a,0x119a,0x119a,0x119a,0x119a,0x119a,0x119a,0x119a,0x119a,0x119a,0x1197,0x1182,0x1197,
-0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x1182,0x144,0x118b,0x1194,0x1182,0x1194,0x1194,0x1182,0x1182,0x1182,
-0x1182,0x1182,0x1182,0x1182,0x1182,0x1197,0x1197,0x1197,0x1197,0x1197,0x1197,0x1182,0x1182,0x1188,0x1188,0x1188,
-0x1188,0x1188,0x1188,0x1188,0x1188,0x144,0x144,0x1185,0x1191,0x1191,0x1191,0x1191,0x1191,0x1191,0x1191,0x1191,
-0x1191,0x1191,0x144,0x144,0x144,0x144,0x144,0x144,0x1191,0x1191,0x1191,0x1191,0x1191,0x1191,0x1191,0x1191,
-0x1191,0x1191,0x144,0x144,0x144,0x144,0x144,0x144,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e,0x119d,
-0x11a0,0x11a0,0x11a0,0x11a0,0x118e,0x118e,0x144,0x144,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,
-0x1563,0x1563,0x1563,0x1563,0x1563,0x1563,0x1560,0x1a85,0x12e1,0x12ba,0x12d8,0x12d8,0x12d8,0x12d8,0x12d8,0x12d8,
-0x12d8,0x12c0,0x12bd,0x12b4,0x12b4,0x12de,0x12b4,0x12b4,0x12b4,0x12b4,0x12c3,0x149d,0x14a3,0x14a0,0x14a0,0x18e4,
-0x16b9,0x16b9,0x1a52,0x147,0x147,0x147,0x147,0x147,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,
-0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11ac,0x11ac,0x11af,0x11b8,0x11b2,0x11b2,0x11b2,0x11b8,
-0x14a,0x14a,0x14a,0x14a,0x14a,0x14a,0x14a,0x14a,0x12a5,0x12a5,0x12a5,0x12a5,0x12a5,0x12a5,0x12a5,0x12a5,
-0x12a5,0x12a5,0x12a5,0x12a5,0x12a5,0x12a5,0x12a5,0x12a5,0x12a5,0x12a5,0x12a5,0x12a5,0x12a5,0x12a5,0x12a5,0x12a5,
-0x12a5,0x12a5,0x12a5,0x12a5,0x12a5,0x150,0x150,0x150,0x11d6,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11ca,0x11cd,
-0x11dc,0x11dc,0x11ca,0x11ca,0x11ca,0x11ca,0x153,0x12d5,0x11d0,0x11d0,0x11d0,0x11d0,0x11d0,0x11d0,0x11d0,0x11d0,
-0x11d0,0x11d0,0x153,0x153,0x153,0x153,0x11ca,0x11ca,0x11fa,0x11ee,0x11fa,0x156,0x156,0x156,0x156,0x156,
-0x156,0x156,0x156,0x156,0x156,0x156,0x156,0x156,0x156,0x156,0x156,0x156,0x156,0x156,0x156,0x156,
-0x156,0x156,0x156,0x11f7,0x11f7,0x11fd,0x11f1,0x11f4,0x1212,0x1212,0x1212,0x120c,0x120c,0x1203,0x120c,0x120c,
-0x1203,0x120c,0x120c,0x1215,0x120f,0x1206,0x159,0x159,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,0x1209,
-0x1209,0x1209,0x159,0x159,0x159,0x159,0x159,0x159,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x121b,0x15c,
-0x15c,0x15c,0x15c,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,
-0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,
-0x15c,0x15c,0x15c,0x15c,0x1224,0x1224,0x1224,0x1224,0x1224,0x1224,0x1224,0x1224,0x1224,0x1224,0x1224,0x1224,
-0x1224,0x1224,0x1224,0x1224,0x1224,0x1224,0x1224,0x1224,0x1224,0x1224,0x15f,0x1221,0x121e,0x121e,0x121e,0x121e,
-0x121e,0x121e,0x121e,0x121e,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,
-0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x162,0x162,0x162,0x122d,0x1230,0x1230,
-0x1230,0x1230,0x1230,0x1230,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,
-0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x165,0x165,0x1236,0x1236,0x1236,0x1236,
-0x1236,0x1236,0x1236,0x1236,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,
-0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x168,0x168,0x168,0x168,0x168,0x123c,0x123c,0x123c,0x123c,
-0x123c,0x123c,0x123c,0x123c,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,
-0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,
-0x1245,0x1245,0x1245,0x16e,0x125d,0x125d,0x1b3c,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,
-0x171,0x1926,0x171,0x171,0x147c,0x147c,0x147c,0x147c,0x147c,0x147c,0x147c,0x147c,0x147c,0x147c,0x147c,0x147c,
-0x147c,0x147c,0x147c,0x147c,0x1827,0x1827,0x1827,0x1827,0x1827,0x1827,0x1827,0x1827,0x1827,0x1827,0x1827,0x1827,
-0x1827,0x1a76,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,
-0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,
-0x174,0x174,0x174,0x174,0x174,0x174,0x1344,0x1344,0x1344,0x1344,0x1344,0x1344,0x1344,0x1344,0x1344,0x1344,
-0x1344,0x1344,0x1344,0x1344,0x1344,0x1344,0x1344,0x1344,0x1344,0x1344,0x1344,0x1344,0x1344,0x1344,0x1344,0x1344,
-0x12ae,0x13a7,0x13a7,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,
+0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10e9,0x10ec,0x129,0x129,0x10ef,0x10ef,0x10ef,0x10ef,
+0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,
+0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x10ef,0x12c,0x12c,0x12c,0x10f2,0x10f2,0x10f2,0x10f2,
+0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x12f,0x12f,0x12f,
+0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x12f,0x10f8,0x10f8,0x10f8,0x10f8,
+0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,
+0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x132,0x132,0x132,0x132,0x132,0x10f5,0x10fb,0x10fb,0x10fb,0x10fb,
+0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x135,0x135,0x135,0x135,0x10fe,0x10fe,0x10fe,0x10fe,
+0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,
+0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x138,0x1176,0x1176,0x1176,0x1176,
+0x117f,0x1176,0x1176,0x1176,0x117f,0x1176,0x1176,0x1176,0x1176,0x1173,0x13b,0x13b,0x117c,0x117c,0x117c,0x117c,
+0x117c,0x117c,0x117c,0x1182,0x117c,0x1182,0x117c,0x117c,0x117c,0x1182,0x1182,0x13b,0x1185,0x1185,0x1185,0x1185,
+0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,
+0x1185,0x1185,0x13e,0x13e,0x13e,0x13e,0x13e,0x13e,0x13e,0x13e,0x13e,0x13e,0x11a0,0x11a0,0x11a0,0x11a0,
+0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,
+0x11a0,0x119d,0x1188,0x119d,0x1188,0x1188,0x1188,0x1188,0x1188,0x1188,0x1188,0x141,0x1191,0x119a,0x1188,0x119a,
+0x119a,0x1188,0x1188,0x1188,0x1188,0x1188,0x1188,0x1188,0x1188,0x119d,0x119d,0x119d,0x119d,0x119d,0x119d,0x1188,
+0x1188,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e,0x118e,0x141,0x141,0x118b,0x1197,0x1197,0x1197,0x1197,
+0x1197,0x1197,0x1197,0x1197,0x1197,0x1197,0x141,0x141,0x141,0x141,0x141,0x141,0x1197,0x1197,0x1197,0x1197,
+0x1197,0x1197,0x1197,0x1197,0x1197,0x1197,0x141,0x141,0x141,0x141,0x141,0x141,0x1194,0x1194,0x1194,0x1194,
+0x1194,0x1194,0x1194,0x11a3,0x11a6,0x11a6,0x11a6,0x11a6,0x1194,0x1194,0x141,0x141,0x156c,0x156c,0x156c,0x156c,
+0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x156c,0x1569,0x1a97,0x12e7,0x12c0,0x12de,0x12de,
+0x12de,0x12de,0x12de,0x12de,0x12de,0x12c6,0x12c3,0x12ba,0x12ba,0x12e4,0x12ba,0x12ba,0x12ba,0x12ba,0x12c9,0x14a6,
+0x14ac,0x14a9,0x14a9,0x18f3,0x16c8,0x16c8,0x1a64,0x144,0x144,0x144,0x144,0x144,0x11bb,0x11bb,0x11bb,0x11bb,
+0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11b2,0x11b2,0x11b5,0x11be,
+0x11b8,0x11b8,0x11b8,0x11be,0x147,0x147,0x147,0x147,0x147,0x147,0x147,0x147,0x12ab,0x12ab,0x12ab,0x12ab,
0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,
-0x12ab,0x12ab,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x13a7,0x182a,0x177,0x177,0x177,0x177,
-0x12a8,0x12a8,0x12a8,0x12a8,0x12a8,0x12a8,0x12a8,0x12a8,0x12a8,0x177,0x177,0x177,0x177,0x177,0x177,0x177,
-0x13cb,0x13cb,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,
-0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,
-0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,
-0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x177,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,
-0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,0x134d,
-0x134d,0x1347,0x1347,0x1347,0x17a,0x17a,0x134a,0x17a,0x135f,0x135f,0x135f,0x135f,0x135f,0x135f,0x1350,0x1359,
-0x1353,0x1353,0x1359,0x1359,0x1359,0x1353,0x1359,0x1353,0x1353,0x1353,0x135c,0x135c,0x17d,0x17d,0x17d,0x17d,
-0x17d,0x17d,0x17d,0x17d,0x1356,0x1356,0x1356,0x1356,0x180,0x1362,0x1362,0x1362,0x1362,0x1362,0x1362,0x180,
-0x180,0x1362,0x1362,0x1362,0x1362,0x1362,0x1362,0x180,0x180,0x1362,0x1362,0x1362,0x1362,0x1362,0x1362,0x180,
-0x180,0x180,0x180,0x180,0x180,0x180,0x180,0x180,0x1362,0x1362,0x1362,0x1362,0x1362,0x1362,0x1362,0x180,
-0x1362,0x1362,0x1362,0x1362,0x1362,0x1362,0x1362,0x180,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,
-0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1368,0x137a,
-0x137a,0x136e,0x136e,0x136e,0x136e,0x136e,0x183,0x183,0x183,0x183,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,
-0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x136b,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,
-0x1371,0x1371,0x1371,0x1371,0x1b42,0x1b45,0x1b45,0x1b3f,0x1b3f,0x1b45,0x183,0x183,0x183,0x183,0x183,0x183,
-0x183,0x183,0x183,0x1533,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,
-0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x186,0x186,0x186,
-0x186,0x186,0x186,0x186,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,
-0x1380,0x1380,0x1380,0x189,0x189,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,
-0x1380,0x1380,0x1380,0x1536,0x189,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,
-0x1380,0x1380,0x1380,0x13b0,0x189,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,0x1380,
-0x1380,0x1380,0x1380,0x1380,0x1536,0x1536,0x1536,0x1536,0x1536,0x1536,0x1536,0x1536,0x1536,0x1536,0x1536,0x1536,
-0x1536,0x1536,0x1536,0x1536,0x1536,0x1536,0x1536,0x1536,0x1536,0x1536,0x189,0x189,0x189,0x189,0x189,0x189,
-0x189,0x189,0x189,0x189,0x13c5,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,
-0x16b0,0x1542,0x1542,0x1542,0x1782,0x1833,0x1833,0x186c,0x186c,0x1a34,0x1adf,0x1adf,0x18c,0x18c,0x18c,0x18c,
-0x1c2c,0x1bae,0x1bae,0x1bae,0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x16ad,
-0x16ad,0x18c,0x18c,0x18c,0x1542,0x1542,0x1542,0x1542,0x1833,0x1833,0x1833,0x18cf,0x18cf,0x19b0,0x1a34,0x1adf,
-0x1adf,0x18c,0x18c,0x18c,0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,
-0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1bd2,0x1bd2,0x1bd2,0x18f,0x18f,0x18f,0x18f,0x1bd2,
-0x1bd2,0x1bd2,0x1bd2,0x1bd2,0x141f,0x141f,0x141f,0x141f,0x192,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,
-0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,
-0x141f,0x141f,0x141f,0x141f,0x192,0x141f,0x141f,0x192,0x141f,0x192,0x192,0x141f,0x192,0x141f,0x141f,0x141f,
-0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x192,0x141f,0x141f,0x141f,0x141f,0x192,0x141f,0x192,0x141f,
-0x192,0x192,0x192,0x192,0x192,0x192,0x141f,0x192,0x192,0x192,0x192,0x141f,0x192,0x141f,0x192,0x141f,
-0x192,0x141f,0x141f,0x141f,0x192,0x141f,0x141f,0x192,0x141f,0x192,0x192,0x141f,0x192,0x141f,0x192,0x141f,
-0x192,0x141f,0x192,0x141f,0x192,0x141f,0x141f,0x192,0x141f,0x192,0x192,0x141f,0x141f,0x141f,0x141f,0x192,
-0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x192,0x141f,0x141f,0x141f,0x141f,0x192,0x141f,0x141f,0x141f,
-0x141f,0x192,0x141f,0x192,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x192,0x141f,
-0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,
-0x192,0x192,0x192,0x192,0x192,0x141f,0x141f,0x141f,0x192,0x141f,0x141f,0x141f,0x141f,0x141f,0x192,0x141f,
-0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,
-0x192,0x192,0x192,0x192,0x192,0x192,0x192,0x192,0x192,0x192,0x192,0x192,0x192,0x192,0x192,0x192,
-0x192,0x192,0x192,0x192,0x192,0x192,0x192,0x192,0x192,0x192,0x192,0x192,0x192,0x192,0x192,0x192,
-0x141c,0x141c,0x192,0x192,0x192,0x192,0x192,0x192,0x192,0x192,0x192,0x192,0x192,0x192,0x192,0x192,
-0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1422,0x1422,0x1422,0x1422,0x1422,0x1431,0x1422,0x1425,0x1425,
-0x1422,0x1422,0x1422,0x1428,0x1428,0x195,0x142e,0x142e,0x142e,0x142e,0x142e,0x142e,0x142e,0x142e,0x142e,0x142e,
-0x142b,0x1437,0x1437,0x1437,0x1932,0x192f,0x192f,0x1a7c,0x195,0x195,0x195,0x195,0x195,0x195,0x195,0x195,
-0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,
-0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1443,0x1440,0x143a,0x143a,0x1440,0x1440,
-0x1449,0x1449,0x1443,0x1446,0x1446,0x1440,0x143d,0x198,0x198,0x198,0x198,0x198,0x198,0x198,0x198,0x198,
-0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,
-0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x19b,0x19b,0x19b,0x19b,0x1707,0x1707,0x144c,0x144c,
-0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,
-0x19b,0x19b,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,
-0x1458,0x1458,0x1458,0x1458,0x1458,0x19dd,0x19dd,0x19dd,0x19dd,0x19dd,0x19dd,0x19e,0x19e,0x19e,0x19e,0x19d7,
-0x1458,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,
-0x19da,0x19da,0x19da,0x19da,0x19da,0x19da,0x19da,0x19da,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,0x19e,0x1452,
-0x1452,0x1452,0x1452,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,0x145b,
-0x147c,0x147c,0x147c,0x147c,0x147c,0x147c,0x147c,0x147c,0x147c,0x1a1,0x1a1,0x1a1,0x1a1,0x1a1,0x1a1,0x1a1,
-0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1a1,0x1a1,0x1a1,0x1a1,0x1a1,0x1a1,
-0x147f,0x147f,0x147f,0x147f,0x147f,0x147f,0x147f,0x147f,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,0x1a4,
-0x12db,0x12d8,0x12db,0x12b7,0x12d8,0x12de,0x12de,0x12e1,0x12de,0x12e1,0x12e4,0x12d8,0x12e1,0x12e1,0x12d8,0x12d8,
-0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1482,0x148b,0x1482,0x148b,0x148b,
-0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x148e,0x1485,0x19e0,0x1b51,0x1a7,0x1a7,0x1a7,0x1a7,0x1a7,0x1a7,
-0x1554,0x1554,0x1554,0x1554,0x1554,0x1554,0x1554,0x1554,0x1554,0x1554,0x1554,0x1554,0x1554,0x1554,0x1aa,0x1aa,
-0x1551,0x1551,0x1551,0x1551,0x1551,0x1557,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,
-0x155d,0x155d,0x155d,0x155d,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x1ad,0x155a,
-0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x2b2,0x1b9c,0x1b9c,0x1b9c,0x1b9c,
-0x16bc,0x16b3,0x16b3,0x16b3,0x16b3,0x16b3,0x16b3,0x16b3,0x16b3,0x16b3,0x16b3,0x16b3,0x16b3,0x16b3,0x16b3,0x16b3,
-0x16b3,0x16b3,0x16b3,0x16b3,0x16b3,0x16b3,0x16b3,0x16b3,0x16b3,0x16b3,0x16b3,0x16b3,0x1b0,0x1b0,0x1b0,0x1b0,
-0x1a85,0x1b57,0x1b57,0x1b57,0x1b57,0x1b57,0x1b57,0x1b57,0x1b57,0x1b57,0x1b57,0x1b57,0x1b54,0x1b54,0x1b54,0x1b3,
-0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,
-0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,
-0x156f,0x156f,0x156f,0x156f,0x156f,0x156f,0x156f,0x156f,0x156f,0x156f,0x156f,0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,
-0x156f,0x156f,0x156f,0x156f,0x156f,0x156f,0x156f,0x156f,0x156f,0x156f,0x156f,0x156f,0x156f,0x1b6,0x1b6,0x1b6,
-0x1b6,0x1b6,0x1b6,0x1b6,0x156f,0x156f,0x156f,0x156f,0x156f,0x156f,0x156f,0x156f,0x156f,0x156f,0x1b6,0x1b6,
-0x156c,0x1566,0x1569,0x1572,0x1575,0x1575,0x1575,0x1575,0x1575,0x1575,0x1575,0x1575,0x1b9,0x1b9,0x1b9,0x1b9,
-0x1b9,0x1b9,0x1b9,0x1b9,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,
-0x155d,0x155d,0x155d,0x155d,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,
-0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1935,0x1935,0x1935,0x1935,0x1bd5,0x1bc,0x1bc,
-0x1bc,0x1bc,0x1bc,0x1bc,0x1a37,0x1a37,0x1a37,0x1a37,0x1a37,0x1a37,0x1a37,0x1a37,0x1a37,0x1a37,0x1a37,0x1a37,
-0x1bc,0x1bc,0x1bc,0x1bc,0x1bb1,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,
-0x1bc,0x1bc,0x1bc,0x1bc,0x171c,0x16bf,0x1581,0x16c5,0x1bf,0x158a,0x158a,0x158a,0x158a,0x158a,0x158a,0x158a,
-0x158a,0x1bf,0x1bf,0x158a,0x158a,0x1bf,0x1bf,0x158a,0x158a,0x158a,0x158a,0x158a,0x158a,0x158a,0x158a,0x158a,
-0x158a,0x158a,0x158a,0x158a,0x158a,0x1bf,0x158a,0x158a,0x158a,0x158a,0x158a,0x158a,0x158a,0x1bf,0x158a,0x158a,
-0x1bf,0x158a,0x158a,0x158a,0x158a,0x158a,0x1bf,0x19bc,0x16c2,0x158a,0x157b,0x1581,0x157b,0x1581,0x1581,0x1581,
-0x1581,0x1bf,0x1bf,0x1581,0x1581,0x1bf,0x1bf,0x1584,0x1584,0x1587,0x1bf,0x1bf,0x171f,0x1bf,0x1bf,0x1bf,
-0x1bf,0x1bf,0x1bf,0x157b,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x158d,0x158a,0x158a,0x158a,0x158a,0x1581,0x1581,
-0x1bf,0x1bf,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x1bf,0x1bf,0x1bf,0x157e,0x157e,0x157e,0x157e,
-0x157e,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x1bf,0x15a2,0x15a2,0x15a2,0x15a2,
-0x15a2,0x15a2,0x15a2,0x15a2,0x15a2,0x15a2,0x15a2,0x15a2,0x15a2,0x15a2,0x15a2,0x15a2,0x15a2,0x15a2,0x1c2,0x15a2,
-0x15a2,0x15a2,0x15a2,0x15a2,0x15a2,0x15a2,0x15a2,0x15a2,0x15a2,0x15a2,0x15a2,0x15a2,0x15b4,0x15b4,0x15b4,0x15a8,
-0x15a8,0x15a8,0x15a8,0x15a8,0x15a8,0x15ab,0x15ae,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x15b1,0x15b1,0x15b1,0x15b1,
-0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1c5,0x1722,0x1722,0x1722,0x1722,
-0x15c0,0x15bd,0x19e3,0x19e3,0x1a8b,0x1a8e,0x1a88,0x1a88,0x1c8,0x1c8,0x1c8,0x1c8,0x174f,0x174f,0x174f,0x174f,
-0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x15c6,0x15c6,0x15c6,0x15c6,
-0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,
-0x15c6,0x15c6,0x15c6,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x15c6,0x15c6,0x15c6,0x15c6,
-0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,
-0x15c6,0x15c6,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x15c6,0x15c6,0x15c6,0x15c6,
-0x15c6,0x15c6,0x15c6,0x15c6,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,
-0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x15d2,0x15d2,0x15d2,0x15d2,
-0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15d2,0x15c9,
-0x15cc,0x15cf,0x15d2,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x15e1,0x15e1,0x15e1,0x15e1,
-0x15e1,0x15d5,0x15d5,0x1d1,0x1d1,0x1d1,0x1d1,0x15d8,0x15d8,0x15d8,0x15d8,0x15d8,0x15de,0x15de,0x16c8,0x15de,
-0x15de,0x15de,0x15db,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x15ea,0x15ea,0x15ea,0x15ea,
-0x15ea,0x1d4,0x1d4,0x15e7,0x15e7,0x15e7,0x15e7,0x15e7,0x15e7,0x15e7,0x15e7,0x15e7,0x15e4,0x15e4,0x15e4,0x15e4,
-0x15e4,0x15e4,0x15e4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x15ed,0x15ff,0x15ff,0x15f3,
-0x15fc,0x1d7,0x1d7,0x1d7,0x1d7,0x1d7,0x1d7,0x1d7,0x1d7,0x1d7,0x1d7,0x1d7,0x15f6,0x15f6,0x15f6,0x15f6,
-0x15f6,0x15f6,0x15f6,0x15f6,0x15f6,0x15f6,0x1d7,0x1d7,0x1d7,0x1d7,0x1d7,0x1d7,0x1605,0x1605,0x1605,0x1605,
-0x1605,0x1605,0x1605,0x1605,0x1605,0x1605,0x1605,0x1605,0x1605,0x1605,0x1605,0x1605,0x1605,0x1605,0x1605,0x1605,
-0x1605,0x1605,0x1605,0x1605,0x1605,0x1605,0x1605,0x1605,0x1605,0x1605,0x1605,0x1da,0x1602,0x1602,0x1602,0x1602,
-0x1602,0x1602,0x1602,0x1602,0x1602,0x1602,0x1da,0x1da,0x1da,0x1da,0x1608,0x1608,0x1b8d,0x1b8d,0x1b8d,0x1b8d,
-0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1611,0x1611,0x1611,0x1611,
-0x1611,0x160b,0x1614,0x1611,0x1611,0x1611,0x1611,0x1611,0x1611,0x1611,0x1611,0x1611,0x160e,0x160e,0x160e,0x160e,
-0x160e,0x160e,0x160e,0x160e,0x160e,0x160e,0x1611,0x1611,0x1611,0x1611,0x1611,0x1dd,0x161a,0x161a,0x161a,0x161a,
-0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,
-0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x161a,0x1e0,0x1626,0x1626,0x1626,0x1626,
-0x1626,0x1626,0x1626,0x1626,0x1626,0x1626,0x1626,0x1626,0x1626,0x1626,0x1626,0x1626,0x1626,0x1626,0x1626,0x1626,
-0x1626,0x1626,0x1623,0x1623,0x1623,0x1623,0x1623,0x1e3,0x1e3,0x1e3,0x1e3,0x1e3,0x163e,0x163e,0x1641,0x1641,
-0x1644,0x1635,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x163b,0x163b,0x163b,0x163b,
-0x163b,0x163b,0x163b,0x163b,0x163b,0x163b,0x1e6,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1e6,0x163e,
-0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,
-0x163e,0x163e,0x163e,0x163e,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x163e,0x163e,0x163e,0x164d,0x164d,0x164d,0x164d,
-0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,
-0x164d,0x164d,0x164d,0x164d,0x164d,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1656,0x1656,0x1656,0x1656,
-0x1656,0x1656,0x1656,0x1656,0x1656,0x1656,0x1656,0x1656,0x1656,0x1656,0x1656,0x1656,0x1656,0x1656,0x1ec,0x1ec,
-0x1ec,0x1ec,0x1ec,0x1ec,0x1ec,0x1653,0x1653,0x1653,0x1653,0x1ec,0x1ec,0x1ec,0x1671,0x1671,0x1671,0x1671,
-0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1659,0x166b,0x166b,0x1659,0x1659,
-0x1659,0x1659,0x1f2,0x1f2,0x166b,0x166b,0x166e,0x166e,0x1659,0x1659,0x166b,0x165f,0x165c,0x1662,0x1674,0x1674,
-0x1665,0x1665,0x1668,0x1668,0x1668,0x1674,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,0x172b,
-0x172b,0x172b,0x172b,0x172b,0x1728,0x1728,0x1728,0x1728,0x1725,0x1725,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,
-0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,
-0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f5,0x1677,0x1677,0x1677,
-0x1677,0x1677,0x1677,0x1677,0x1677,0x1677,0x1677,0x1677,0x1677,0x1677,0x1677,0x1677,0x1677,0x1677,0x1677,0x1677,
-0x1677,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x167a,0x167a,0x167a,0x167a,
-0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x1f8,0x1f8,0x1f8,0x1f8,0x167a,0x167a,0x167a,0x167a,
-0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x1f8,0x1f8,0x1f8,0x1f8,
-0x1f8,0x1f8,0x1f8,0x1f8,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x1f8,0x1f8,
-0x1f8,0x1f8,0x1f8,0x1f8,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x1f8,0x1f8,0x1f8,0x1f8,
-0x1f8,0x1f8,0x1f8,0x1f8,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,
-0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x1f8,0x1f8,0x1a91,0x1a91,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,
-0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,
-0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x167d,0x168c,0x1683,0x1680,
-0x1692,0x1692,0x1686,0x1692,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1689,0x1689,0x1689,0x1689,
-0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1698,0x1698,0x1698,0x1698,
-0x1698,0x1698,0x1698,0x1698,0x1698,0x1698,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1695,0x1fe,
-0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x1fe,0x169e,0x1740,0x1740,0x1740,0x1740,
-0x1740,0x1740,0x1740,0x1740,0x1740,0x1740,0x1740,0x1740,0x1740,0x1740,0x1740,0x1740,0x1740,0x1740,0x1740,0x1740,
-0x1740,0x1740,0x1740,0x1740,0x1740,0x1740,0x1938,0x201,0x201,0x172e,0x172e,0x172e,0x173a,0x173a,0x172e,0x172e,
-0x172e,0x172e,0x173d,0x172e,0x172e,0x172e,0x172e,0x1731,0x201,0x201,0x201,0x201,0x1737,0x1737,0x1737,0x1737,
-0x1737,0x1737,0x1737,0x1737,0x1737,0x1737,0x1734,0x1734,0x1743,0x1743,0x1743,0x1734,0x1746,0x1746,0x1746,0x1746,
-0x1746,0x1746,0x1746,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,
-0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,0x204,
-0x204,0x204,0x204,0x204,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,
-0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x1758,0x20a,0x1758,0x1758,0x20a,0x20a,0x20a,0x20a,0x20a,0x1755,
-0x1755,0x1755,0x1755,0x1755,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x20d,0x175b,0x20d,0x175b,0x175b,
-0x175b,0x175b,0x20d,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,
-0x175b,0x175b,0x20d,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175b,0x175e,0x20d,0x20d,
-0x20d,0x20d,0x20d,0x20d,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,
-0x15b7,0x15b7,0x15b7,0x15b7,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,
-0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,
-0x210,0x210,0x210,0x210,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,
-0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x1761,0x1761,
-0x1761,0x1761,0x1761,0x1761,0x176d,0x176d,0x176d,0x176d,0x176a,0x176d,0x176d,0x1770,0x1773,0x1770,0x1770,0x176d,
-0x213,0x213,0x213,0x213,0x213,0x213,0x213,0x213,0x213,0x213,0x213,0x213,0x213,0x213,0x213,0x176a,
-0x176a,0x176a,0x176a,0x176a,0x17ca,0x17ca,0x17ca,0x17ca,0x17c1,0x17c1,0x17c1,0x17bb,0x17be,0x17be,0x17be,0x19e6,
-0x216,0x216,0x216,0x216,0x17c7,0x17c7,0x17c7,0x17c7,0x17c7,0x17c7,0x17c7,0x17c7,0x17c7,0x17c7,0x216,0x216,
-0x216,0x216,0x17c4,0x17c4,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x219,0x17e5,0x17e5,
-0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,
-0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e2,0x17d0,0x17d0,0x17d0,0x17d0,0x17d0,0x17d0,0x17d0,0x219,
-0x17d0,0x17d0,0x17d0,0x17d0,0x17d0,0x17d0,0x17e2,0x17d3,0x17e5,0x17e8,0x17e8,0x17dc,0x17d9,0x17d9,0x219,0x219,
-0x219,0x219,0x219,0x219,0x219,0x219,0x219,0x219,0x17df,0x17df,0x17df,0x17df,0x17df,0x17df,0x17df,0x17df,
-0x17df,0x17df,0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,
-0x17d6,0x219,0x219,0x219,0x17f4,0x17f7,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,
-0x17fd,0x17fd,0x17fd,0x17fd,0x17eb,0x17eb,0x17eb,0x17eb,0x17eb,0x17eb,0x17eb,0x17eb,0x17eb,0x21c,0x21c,0x21c,
-0x21c,0x21c,0x21c,0x21c,0x1956,0x1956,0x1956,0x1956,0x1956,0x1956,0x1956,0x1956,0x1956,0x1956,0x1956,0x1956,
-0x1956,0x1956,0x1956,0x1956,0x17ee,0x17ee,0x17ee,0x17ee,0x17ee,0x17ee,0x17ee,0x21f,0x17ee,0x17ee,0x17ee,0x17ee,
-0x17ee,0x17ee,0x17ee,0x17ee,0x17ee,0x17ee,0x17ee,0x17ee,0x17ee,0x17ee,0x17ee,0x17ee,0x17ee,0x21f,0x21f,0x17ee,
-0x17ee,0x17ee,0x17ee,0x17ee,0x17ee,0x17ee,0x21f,0x17ee,0x17ee,0x21f,0x17ee,0x17ee,0x17ee,0x17ee,0x17ee,0x21f,
-0x21f,0x21f,0x21f,0x21f,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,
-0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x183c,0x18d8,0x1a40,0x1a43,0x1aeb,0x222,0x222,0x222,0x222,0x222,0x222,0x222,
-0x222,0x222,0x222,0x222,0x1ae8,0x1ae8,0x222,0x222,0x222,0x222,0x222,0x222,0x222,0x222,0x222,0x222,
-0x222,0x222,0x222,0x222,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,
-0x17fd,0x17fd,0x17fd,0x17fd,0x225,0x225,0x17f1,0x17f1,0x17f1,0x17f1,0x17f1,0x17f1,0x17f1,0x17f1,0x17f1,0x17f1,
-0x17f1,0x17f1,0x17f1,0x17f1,0x225,0x17fa,0x17f1,0x17f1,0x17f1,0x17f1,0x17f1,0x17f1,0x17f1,0x17fa,0x17f1,0x17f1,
-0x17fa,0x17f1,0x17f1,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x1800,0x1800,0x1800,0x1800,
-0x1800,0x1800,0x1800,0x1800,0x1800,0x1800,0x1800,0x1800,0x1800,0x228,0x228,0x228,0x228,0x228,0x228,0x228,
-0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x1818,0x1818,0x1809,0x1803,
-0x1803,0x1818,0x1806,0x181b,0x181b,0x181b,0x181b,0x181e,0x181e,0x1812,0x180f,0x180c,0x1815,0x1815,0x1815,0x1815,
-0x1815,0x1815,0x1815,0x1815,0x1815,0x1815,0x1a94,0x1812,0x22b,0x180c,0x193b,0x19e9,0x1a97,0x1a97,0x22b,0x22b,
-0x22b,0x22b,0x22b,0x22b,0x22b,0x22b,0x22b,0x22b,0x22b,0x22b,0x22b,0x22b,0x22b,0x22b,0x22b,0x22b,
-0x22b,0x22b,0x22b,0x22b,0x22b,0x22b,0x22b,0x22b,0x22b,0x22b,0x22b,0x22b,0x1824,0x1824,0x1824,0x1824,
-0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,
-0x22e,0x22e,0x22e,0x22e,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,
-0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,0x1821,
-0x22e,0x22e,0x22e,0x22e,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,
-0x183f,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x1a46,0x231,0x231,0x231,0x231,
-0x231,0x231,0x231,0x231,0x1bba,0x1bba,0x1bba,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x234,
-0x234,0x234,0x234,0x234,0x276,0x276,0x1c2f,0x276,0x276,0x276,0x276,0x276,0x276,0x276,0x276,0x276,
-0x276,0x276,0x276,0x276,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x237,0x187e,0x187e,0x237,0x187e,
-0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,
-0x187e,0x187e,0x187e,0x187e,0x187e,0x1872,0x1872,0x1872,0x1872,0x1872,0x1872,0x237,0x237,0x237,0x1872,0x237,
-0x1872,0x1872,0x237,0x1872,0x1872,0x1872,0x1875,0x1872,0x1878,0x1878,0x1881,0x1872,0x237,0x237,0x237,0x237,
-0x237,0x237,0x237,0x237,0x187b,0x187b,0x187b,0x187b,0x187b,0x187b,0x187b,0x187b,0x187b,0x187b,0x237,0x237,
-0x237,0x237,0x237,0x237,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,
-0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,
-0x23a,0x23a,0x23a,0x23a,0x1890,0x1893,0x1893,0x23d,0x23d,0x23d,0x23d,0x23d,0x23d,0x23d,0x23d,0x23d,
-0x23d,0x23d,0x23d,0x23d,0x1b96,0x1b96,0x1b96,0x1b96,0x1b96,0x1b96,0x1b96,0x1b96,0x1b96,0x1b96,0x1b96,0x1b96,
-0x1b96,0x1b96,0x1b96,0x1b96,0x18a2,0x18a2,0x18a2,0x18a2,0x18a2,0x18a2,0x18a2,0x18a2,0x18a2,0x18a2,0x18a2,0x240,
-0x240,0x240,0x240,0x240,0x1b63,0x1b63,0x1b63,0x1b63,0x1b63,0x1b63,0x1b63,0x1b63,0x1b63,0x1b63,0x1b63,0x1b63,
-0x1b63,0x1b63,0x1b63,0x1b63,0x18ae,0x18b1,0x18c0,0x18c0,0x18b1,0x18b4,0x18ae,0x18ab,0x243,0x243,0x243,0x243,
-0x243,0x243,0x243,0x243,0x1899,0x1884,0x1884,0x1884,0x1884,0x1884,0x1884,0x1896,0x1896,0x1884,0x1884,0x1884,
-0x1899,0x1899,0x1899,0x1899,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,
-0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x246,0x246,0x246,0x246,0x246,0x246,0x246,0x246,
-0x246,0x246,0x246,0x246,0x1941,0x1941,0x1941,0x1941,0x1941,0x1941,0x1941,0x1941,0x1941,0x1941,0x1941,0x1941,
-0x1941,0x1941,0x246,0x246,0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1af1,0x1c35,0x1c35,0x1c35,0x1a4f,0x1a4f,0x1a4f,0x1bbd,
-0x1bbd,0x279,0x279,0x279,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,
-0x1950,0x1950,0x1950,0x1944,0x1944,0x1944,0x1944,0x1944,0x1944,0x1944,0x1944,0x1944,0x1950,0x194a,0x1947,0x194d,
-0x249,0x249,0x249,0x249,0x1956,0x1956,0x1956,0x1956,0x1956,0x1956,0x1956,0x1956,0x1956,0x1956,0x1956,0x1956,
-0x1956,0x1956,0x1956,0x1956,0x1956,0x1956,0x1956,0x1956,0x1956,0x1956,0x1956,0x1956,0x1956,0x1956,0x1956,0x24c,
-0x24c,0x1956,0x1956,0x1956,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x24f,0x1965,0x1965,0x24f,0x1965,0x1965,
+0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x12ab,0x14d,0x14d,0x14d,0x11dc,0x11d0,0x11d0,0x11d0,
+0x11d0,0x11d0,0x11d0,0x11d3,0x11e2,0x11e2,0x11d0,0x11d0,0x11d0,0x11d0,0x150,0x12db,0x11d6,0x11d6,0x11d6,0x11d6,
+0x11d6,0x11d6,0x11d6,0x11d6,0x11d6,0x11d6,0x150,0x150,0x150,0x150,0x11d0,0x11d0,0x1200,0x11f4,0x1200,0x153,
+0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x153,
+0x153,0x153,0x153,0x153,0x153,0x153,0x153,0x11fd,0x11fd,0x1203,0x11f7,0x11fa,0x1218,0x1218,0x1218,0x1212,
+0x1212,0x1209,0x1212,0x1212,0x1209,0x1212,0x1212,0x121b,0x1215,0x120c,0x156,0x156,0x120f,0x120f,0x120f,0x120f,
+0x120f,0x120f,0x120f,0x120f,0x120f,0x120f,0x156,0x156,0x156,0x156,0x156,0x156,0x1221,0x1221,0x1221,0x1221,
+0x1221,0x1221,0x1221,0x159,0x159,0x159,0x159,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,
+0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,0x121e,
+0x121e,0x121e,0x121e,0x121e,0x159,0x159,0x159,0x159,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,
+0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x15c,0x1227,
+0x1224,0x1224,0x1224,0x1224,0x1224,0x1224,0x1224,0x1224,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,
+0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x15f,0x15f,
+0x15f,0x1233,0x1236,0x1236,0x1236,0x1236,0x1236,0x1236,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,
+0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x123f,0x162,0x162,
+0x123c,0x123c,0x123c,0x123c,0x123c,0x123c,0x123c,0x123c,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,
+0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x1245,0x165,0x165,0x165,0x165,0x165,
+0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,
+0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,
+0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x124b,0x16b,0x1263,0x1263,0x1b4e,0x16e,0x16e,0x16e,0x16e,0x16e,
+0x16e,0x16e,0x16e,0x16e,0x16e,0x1935,0x16e,0x16e,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,
+0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1836,0x1836,0x1836,0x1836,0x1836,0x1836,0x1836,0x1836,
+0x1836,0x1836,0x1836,0x1836,0x1836,0x1a88,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,
+0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,
+0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x171,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,
+0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,0x134a,
+0x134a,0x134a,0x134a,0x134a,0x12b4,0x13b0,0x13b0,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,
+0x174,0x174,0x174,0x174,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,
+0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x13b0,0x1839,
+0x174,0x174,0x174,0x174,0x12ae,0x12ae,0x12ae,0x12ae,0x12ae,0x12ae,0x12ae,0x12ae,0x12ae,0x174,0x174,0x174,
+0x174,0x174,0x174,0x174,0x13d4,0x13d4,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,
+0x174,0x174,0x174,0x174,0x18d8,0x18d8,0x18d8,0x18d8,0x18d8,0x18d8,0x174,0x174,0x174,0x174,0x174,0x174,
+0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,
+0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x174,0x1353,0x1353,0x1353,0x1353,
+0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,0x1353,
+0x1353,0x1353,0x1353,0x1353,0x1353,0x134d,0x134d,0x134d,0x177,0x177,0x1350,0x177,0x1365,0x1365,0x1365,0x1365,
+0x1365,0x1365,0x1356,0x135f,0x1359,0x1359,0x135f,0x135f,0x135f,0x1359,0x135f,0x1359,0x1359,0x1359,0x1362,0x1362,
+0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x17a,0x135c,0x135c,0x135c,0x135c,0x17d,0x1368,0x1368,0x1368,
+0x1368,0x1368,0x1368,0x17d,0x17d,0x1368,0x1368,0x1368,0x1368,0x1368,0x1368,0x17d,0x17d,0x1368,0x1368,0x1368,
+0x1368,0x1368,0x1368,0x17d,0x17d,0x17d,0x17d,0x17d,0x17d,0x17d,0x17d,0x17d,0x1368,0x1368,0x1368,0x1368,
+0x1368,0x1368,0x1368,0x17d,0x1368,0x1368,0x1368,0x1368,0x1368,0x1368,0x1368,0x17d,0x15cf,0x15cf,0x15cf,0x15cf,
+0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x136b,0x136b,0x136b,0x136b,
+0x136b,0x136b,0x136e,0x1383,0x1383,0x1374,0x1374,0x1374,0x1374,0x1374,0x180,0x180,0x180,0x180,0x1371,0x1371,
+0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1371,0x1377,0x1377,
+0x1377,0x1377,0x1377,0x1377,0x1377,0x1377,0x1377,0x1377,0x1b54,0x1b57,0x1b57,0x1b51,0x1b51,0x1b57,0x180,0x180,
+0x180,0x180,0x180,0x180,0x180,0x180,0x180,0x153c,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,
+0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,
+0x1386,0x183,0x183,0x183,0x183,0x183,0x183,0x183,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,
+0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x186,0x186,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,
+0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x153f,0x186,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,
+0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x13b9,0x186,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,
+0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x1389,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,
+0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x153f,0x186,0x186,
+0x186,0x186,0x186,0x186,0x186,0x186,0x186,0x186,0x13ce,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x154b,0x154b,
+0x154b,0x154b,0x154b,0x154b,0x16bf,0x154b,0x154b,0x154b,0x1791,0x1842,0x1842,0x187b,0x187b,0x1a46,0x1af1,0x1af1,
+0x189,0x189,0x189,0x189,0x1c3e,0x1bc0,0x1bc0,0x1bc0,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,0x154b,
+0x154b,0x154b,0x154b,0x16bc,0x16bc,0x189,0x189,0x189,0x154b,0x154b,0x154b,0x154b,0x1842,0x1842,0x1842,0x18de,
+0x18de,0x19c2,0x1a46,0x1af1,0x1af1,0x189,0x189,0x189,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
+0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x1be4,0x1be4,0x1be4,0x18c,
+0x18c,0x18c,0x18c,0x1be4,0x1be4,0x1be4,0x1be4,0x1be4,0x1428,0x1428,0x1428,0x1428,0x18f,0x1428,0x1428,0x1428,
+0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,
+0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x18f,0x1428,0x1428,0x18f,0x1428,0x18f,0x18f,0x1428,
+0x18f,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x18f,0x1428,0x1428,0x1428,0x1428,
+0x18f,0x1428,0x18f,0x1428,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x1428,0x18f,0x18f,0x18f,0x18f,0x1428,
+0x18f,0x1428,0x18f,0x1428,0x18f,0x1428,0x1428,0x1428,0x18f,0x1428,0x1428,0x18f,0x1428,0x18f,0x18f,0x1428,
+0x18f,0x1428,0x18f,0x1428,0x18f,0x1428,0x18f,0x1428,0x18f,0x1428,0x1428,0x18f,0x1428,0x18f,0x18f,0x1428,
+0x1428,0x1428,0x1428,0x18f,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x18f,0x1428,0x1428,0x1428,0x1428,
+0x18f,0x1428,0x1428,0x1428,0x1428,0x18f,0x1428,0x18f,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,
+0x1428,0x1428,0x18f,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,
+0x1428,0x1428,0x1428,0x1428,0x18f,0x18f,0x18f,0x18f,0x18f,0x1428,0x1428,0x1428,0x18f,0x1428,0x1428,0x1428,
+0x1428,0x1428,0x18f,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,0x1428,
+0x1428,0x1428,0x1428,0x1428,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,
+0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,
+0x18f,0x18f,0x18f,0x18f,0x1425,0x1425,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,0x18f,
+0x18f,0x18f,0x18f,0x18f,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x142b,0x142b,0x142b,0x142b,0x142b,
+0x143a,0x142b,0x142e,0x142e,0x142b,0x142b,0x142b,0x1431,0x1431,0x192,0x1437,0x1437,0x1437,0x1437,0x1437,0x1437,
+0x1437,0x1437,0x1437,0x1437,0x1434,0x1440,0x1440,0x1440,0x1941,0x193e,0x193e,0x1a8e,0x192,0x192,0x192,0x192,
+0x192,0x192,0x192,0x192,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,
+0x15e1,0x15e1,0x15e1,0x15e1,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x144c,0x1449,
+0x1443,0x1443,0x1449,0x1449,0x1452,0x1452,0x144c,0x144f,0x144f,0x1449,0x1446,0x195,0x195,0x195,0x195,0x195,
+0x195,0x195,0x195,0x195,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,
+0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x198,0x198,0x198,0x198,
+0x1716,0x1716,0x1455,0x1455,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,
+0x1716,0x1716,0x1716,0x1716,0x198,0x198,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,
+0x1716,0x1716,0x1716,0x1716,0x1461,0x1461,0x1461,0x1461,0x1461,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19b,
+0x19b,0x19b,0x19b,0x19e9,0x1461,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,
+0x145e,0x145e,0x145e,0x145e,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,0x19ec,0x19b,0x19b,0x19b,0x19b,
+0x19b,0x19b,0x19b,0x145b,0x145b,0x145b,0x145b,0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,0x1464,
+0x1464,0x1464,0x1464,0x1464,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x1485,0x19e,0x19e,0x19e,
+0x19e,0x19e,0x19e,0x19e,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x1482,0x19e,0x19e,
+0x19e,0x19e,0x19e,0x19e,0x1488,0x1488,0x1488,0x1488,0x1488,0x1488,0x1488,0x1488,0x1a1,0x1a1,0x1a1,0x1a1,
+0x1a1,0x1a1,0x1a1,0x1a1,0x12e1,0x12de,0x12e1,0x12bd,0x12de,0x12e4,0x12e4,0x12e7,0x12e4,0x12e7,0x12ea,0x12de,
+0x12e7,0x12e7,0x12de,0x12de,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x148b,
+0x1494,0x148b,0x1494,0x1494,0x148b,0x148b,0x148b,0x148b,0x148b,0x148b,0x1497,0x148e,0x19f2,0x1b63,0x1a4,0x1a4,
+0x1a4,0x1a4,0x1a4,0x1a4,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,
+0x155d,0x155d,0x1a7,0x1a7,0x155a,0x155a,0x155a,0x155a,0x155a,0x1560,0x1a7,0x1a7,0x1a7,0x1a7,0x1a7,0x1a7,
+0x1a7,0x1a7,0x1a7,0x1a7,0x1566,0x1566,0x1566,0x1566,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,0x1aa,
+0x1aa,0x1aa,0x1aa,0x1563,0x1bae,0x1bae,0x1bae,0x1bae,0x1bae,0x1bae,0x1bae,0x1bae,0x1bae,0x1bae,0x1bae,0x2af,
+0x1bae,0x1bae,0x1bae,0x1bae,0x16cb,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,
+0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,0x16c2,
+0x1ad,0x1ad,0x1ad,0x1ad,0x1a97,0x1b69,0x1b69,0x1b69,0x1b69,0x1b69,0x1b69,0x1b69,0x1b69,0x1b69,0x1b69,0x1b69,
+0x1b66,0x1b66,0x1b66,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,
+0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,0x1b0,
+0x1b0,0x1b0,0x1b0,0x1b0,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1b3,
+0x1b3,0x1b3,0x1b3,0x1b3,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,
+0x1578,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1b3,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,
+0x1578,0x1578,0x1b3,0x1b3,0x1575,0x156f,0x1572,0x157b,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,
+0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,0x1b6,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,
+0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,
+0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1944,0x1944,0x1944,
+0x1944,0x1be7,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1a49,0x1a49,0x1a49,0x1a49,0x1a49,0x1a49,0x1a49,0x1a49,
+0x1a49,0x1a49,0x1a49,0x1a49,0x1b9,0x1b9,0x1b9,0x1b9,0x1bc3,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,
+0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x1b9,0x172b,0x16ce,0x158a,0x16d4,0x1bc,0x1596,0x1596,0x1596,
+0x1596,0x1596,0x1596,0x1596,0x1596,0x1bc,0x1bc,0x1596,0x1596,0x1bc,0x1bc,0x1596,0x1596,0x1596,0x1596,0x1596,
+0x1596,0x1596,0x1596,0x1596,0x1596,0x1596,0x1596,0x1596,0x1596,0x1bc,0x1596,0x1596,0x1596,0x1596,0x1596,0x1596,
+0x1596,0x1bc,0x1596,0x1596,0x1bc,0x1596,0x1596,0x1596,0x1596,0x1596,0x1bc,0x19ce,0x16d1,0x1593,0x1584,0x158a,
+0x1584,0x158a,0x158a,0x158a,0x158a,0x1bc,0x1bc,0x158a,0x158a,0x1bc,0x1bc,0x158d,0x158d,0x1590,0x1bc,0x1bc,
+0x172e,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,0x1584,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,0x159c,0x1599,0x1599,
+0x1596,0x1596,0x158a,0x158a,0x1bc,0x1bc,0x1587,0x1587,0x1587,0x1587,0x1587,0x1587,0x1587,0x1bc,0x1bc,0x1bc,
+0x1587,0x1587,0x1587,0x1587,0x1587,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,0x1bc,
+0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,
+0x15b1,0x15b1,0x1bf,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,
+0x15c3,0x15c3,0x15c3,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15ba,0x15bd,0x1c2,0x1c2,0x1c2,0x1c2,0x1c2,
+0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x1c2,0x1c2,0x1c2,0x1c2,0x1c2,0x1c2,
+0x1731,0x1731,0x1731,0x1731,0x15cf,0x15cc,0x19f5,0x19f5,0x1a9d,0x1aa0,0x1a9a,0x1a9a,0x1c5,0x1c5,0x1c5,0x1c5,
+0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,
+0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,
+0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,
+0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,
+0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,
+0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,
+0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,
+0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,
+0x15e1,0x15e1,0x15e1,0x15d8,0x15db,0x15de,0x15e1,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,0x1cb,
+0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15e4,0x15e4,0x1ce,0x1ce,0x1ce,0x1ce,0x15e7,0x15e7,0x15e7,0x15e7,0x15e7,
+0x15ed,0x15ed,0x16d7,0x15ed,0x15ed,0x15ed,0x15ea,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,0x1ce,
+0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x1d1,0x1d1,0x15f6,0x15f6,0x15f6,0x15f6,0x15f6,0x15f6,0x15f6,0x15f6,0x15f6,
+0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x15f3,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,0x1d1,
+0x15fc,0x160e,0x160e,0x1602,0x160b,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,
+0x1605,0x1605,0x1605,0x1605,0x1605,0x1605,0x1605,0x1605,0x1605,0x1605,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,0x1d4,
+0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,
+0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1614,0x1d7,
+0x1611,0x1611,0x1611,0x1611,0x1611,0x1611,0x1611,0x1611,0x1611,0x1611,0x1d7,0x1d7,0x1d7,0x1d7,0x1617,0x1617,
+0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,
+0x1620,0x1620,0x1620,0x1620,0x1620,0x161a,0x1623,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,
+0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x161d,0x1620,0x1620,0x1620,0x1620,0x1620,0x1da,
+0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,
+0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1dd,
+0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,
+0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x1632,0x1632,0x1632,0x1632,0x1632,0x1e0,0x1e0,0x1e0,0x1e0,0x1e0,
+0x164d,0x164d,0x1650,0x1650,0x1653,0x1644,0x1e3,0x1e3,0x1e3,0x1e3,0x1e3,0x1e3,0x1e3,0x1e3,0x1e3,0x1e3,
+0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x1e3,0x1644,0x1644,0x1644,0x1644,0x1644,
+0x1644,0x1644,0x1e3,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,
+0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x1e3,0x1e3,0x1e3,0x1e3,0x1e3,0x164d,0x164d,0x164d,
+0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,
+0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,
+0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,0x1665,
+0x1665,0x1665,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1e9,0x1662,0x1662,0x1662,0x1662,0x1e9,0x1e9,0x1e9,
+0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1668,
+0x167a,0x167a,0x1668,0x1668,0x1668,0x1668,0x1ef,0x1ef,0x167a,0x167a,0x167d,0x167d,0x1668,0x1668,0x167a,0x166e,
+0x166b,0x1671,0x1683,0x1683,0x1674,0x1674,0x1677,0x1677,0x1677,0x1683,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,
+0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x173a,0x1737,0x1737,0x1737,0x1737,0x1734,0x1734,0x1ef,0x1ef,
+0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,
+0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,0x1ef,
+0x1f2,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,0x1686,
+0x1686,0x1686,0x1686,0x1686,0x1686,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,0x1f2,
+0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1f5,0x1f5,0x1f5,0x1f5,
+0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,
+0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,
+0x1689,0x1689,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,
+0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,
+0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1f5,0x1f5,0x1aa3,0x1aa3,0x1f5,0x1f5,
+0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,
+0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,0x1f5,
+0x168c,0x169b,0x1692,0x168f,0x16a1,0x16a1,0x1695,0x16a1,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,
+0x1698,0x1698,0x1698,0x1698,0x1698,0x1698,0x1698,0x1698,0x1698,0x1698,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,0x1f8,
+0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a7,0x16a4,0x16a4,0x16a4,0x16a4,0x16a4,0x16a4,
+0x16a4,0x16a4,0x16a4,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x1fb,0x16ad,
+0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,
+0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x1947,0x1fe,0x1fe,0x173d,0x173d,0x173d,
+0x1749,0x1749,0x173d,0x173d,0x173d,0x173d,0x174c,0x173d,0x173d,0x173d,0x173d,0x1740,0x1fe,0x1fe,0x1fe,0x1fe,
+0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1743,0x1743,0x1752,0x1752,0x1752,0x1743,
+0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,
+0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,
+0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x201,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,
+0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x207,0x1767,0x1767,0x207,0x207,
+0x207,0x207,0x207,0x1764,0x1764,0x1764,0x1764,0x1764,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x20a,
+0x176a,0x20a,0x176a,0x176a,0x176a,0x176a,0x20a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,
+0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x20a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,
+0x176a,0x176d,0x20a,0x20a,0x20a,0x20a,0x20a,0x20a,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,
+0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,
+0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x20d,0x20d,0x20d,0x20d,0x20d,
+0x20d,0x20d,0x20d,0x20d,0x20d,0x20d,0x20d,0x20d,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,
+0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x20d,0x20d,0x20d,0x20d,0x20d,
+0x20d,0x20d,0x1770,0x1770,0x1770,0x1770,0x1770,0x1770,0x177c,0x177c,0x177c,0x177c,0x1779,0x177c,0x177c,0x177f,
+0x1782,0x177f,0x177f,0x177c,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,0x210,
+0x210,0x210,0x210,0x1779,0x1779,0x1779,0x1779,0x1779,0x17d9,0x17d9,0x17d9,0x17d9,0x17d0,0x17d0,0x17d0,0x17ca,
+0x17cd,0x17cd,0x17cd,0x19f8,0x213,0x213,0x213,0x213,0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,0x17d6,
+0x17d6,0x17d6,0x213,0x213,0x213,0x213,0x17d3,0x17d3,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,
+0x17f4,0x216,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,
+0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f4,0x17f1,0x17df,0x17df,0x17df,0x17df,
+0x17df,0x17df,0x17df,0x216,0x17df,0x17df,0x17df,0x17df,0x17df,0x17df,0x17f1,0x17e2,0x17f4,0x17f7,0x17f7,0x17eb,
+0x17e8,0x17e8,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x216,0x17ee,0x17ee,0x17ee,0x17ee,
+0x17ee,0x17ee,0x17ee,0x17ee,0x17ee,0x17ee,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,
+0x17e5,0x17e5,0x17e5,0x17e5,0x17e5,0x216,0x216,0x216,0x1803,0x1806,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,
+0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x17fa,0x17fa,0x17fa,0x17fa,0x17fa,0x17fa,0x17fa,0x17fa,
+0x17fa,0x219,0x219,0x219,0x219,0x219,0x219,0x219,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,
+0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x21c,
+0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,
+0x17fd,0x21c,0x21c,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x17fd,0x21c,0x17fd,0x17fd,0x21c,0x17fd,0x17fd,
+0x17fd,0x17fd,0x17fd,0x21c,0x21c,0x21c,0x21c,0x21c,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,
+0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x184b,0x18e7,0x1a52,0x1a55,0x1afd,0x21f,0x21f,0x21f,
+0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x1afa,0x1afa,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,
+0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x21f,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,
+0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x180c,0x222,0x222,0x1800,0x1800,0x1800,0x1800,0x1800,0x1800,
+0x1800,0x1800,0x1800,0x1800,0x1800,0x1800,0x1800,0x1800,0x222,0x1809,0x1800,0x1800,0x1800,0x1800,0x1800,0x1800,
+0x1800,0x1809,0x1800,0x1800,0x1809,0x1800,0x1800,0x222,0x222,0x222,0x222,0x222,0x222,0x222,0x222,0x222,
+0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x180f,0x225,0x225,0x225,
+0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,0x225,
+0x1827,0x1827,0x1818,0x1812,0x1812,0x1827,0x1815,0x182a,0x182a,0x182a,0x182a,0x182d,0x182d,0x1821,0x181e,0x181b,
+0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1824,0x1aa6,0x1821,0x228,0x181b,0x194a,0x19fb,
+0x1aa9,0x1aa9,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,
+0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,
+0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,0x1833,
+0x1833,0x1833,0x1833,0x1833,0x22b,0x22b,0x22b,0x22b,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,
+0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,0x1830,
+0x1830,0x1830,0x1830,0x1830,0x22b,0x22b,0x22b,0x22b,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,
+0x184e,0x184e,0x184e,0x184e,0x184e,0x19cb,0x19cb,0x19cb,0x19cb,0x19cb,0x1a58,0x1a58,0x1a58,0x1a58,0x1a58,0x1a58,
+0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x22e,0x1bcc,0x1bcc,0x1bcc,0x231,0x231,0x231,0x231,0x231,
+0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x231,0x273,0x273,0x1c41,0x273,0x273,0x273,0x273,0x273,
+0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x234,
+0x188d,0x188d,0x234,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,
+0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x188d,0x1881,0x1881,0x1881,0x1881,0x1881,0x1881,0x234,
+0x234,0x234,0x1881,0x234,0x1881,0x1881,0x234,0x1881,0x1881,0x1881,0x1884,0x1881,0x1887,0x1887,0x1890,0x1881,
+0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x234,0x188a,0x188a,0x188a,0x188a,0x188a,0x188a,0x188a,0x188a,
+0x188a,0x188a,0x234,0x234,0x234,0x234,0x234,0x234,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,
+0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,
+0x18f0,0x18f0,0x18f0,0x18f0,0x237,0x237,0x237,0x237,0x189f,0x18a2,0x18a2,0x23a,0x23a,0x23a,0x23a,0x23a,
+0x23a,0x23a,0x23a,0x23a,0x23a,0x23a,0x23a,0x23a,0x1ba8,0x1ba8,0x1ba8,0x1ba8,0x1ba8,0x1ba8,0x1ba8,0x1ba8,
+0x1ba8,0x1ba8,0x1ba8,0x1ba8,0x1ba8,0x1ba8,0x1ba8,0x1ba8,0x18b1,0x18b1,0x18b1,0x18b1,0x18b1,0x18b1,0x18b1,0x18b1,
+0x18b1,0x18b1,0x18b1,0x23d,0x23d,0x23d,0x23d,0x23d,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,
+0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x18bd,0x18c0,0x18cf,0x18cf,0x18c0,0x18c3,0x18bd,0x18ba,
+0x240,0x240,0x240,0x240,0x240,0x240,0x240,0x240,0x18a8,0x1893,0x1893,0x1893,0x1893,0x1893,0x1893,0x18a5,
+0x18a5,0x1893,0x1893,0x1893,0x18a8,0x18a8,0x18a8,0x18a8,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,
+0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x243,0x243,0x243,0x243,
+0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x243,0x1950,0x1950,0x1950,0x1950,0x1950,0x1950,0x1950,0x1950,
+0x1950,0x1950,0x1950,0x1950,0x1950,0x1950,0x243,0x243,0x1a61,0x1a61,0x1a61,0x1a61,0x1b03,0x1c47,0x1c47,0x1c47,
+0x1a61,0x1a61,0x1a61,0x1bcf,0x1bcf,0x276,0x276,0x276,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,
+0x1962,0x1962,0x1962,0x1962,0x195f,0x195f,0x195f,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,
+0x195f,0x1959,0x1956,0x195c,0x246,0x246,0x246,0x246,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,
0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,
-0x1965,0x1965,0x1965,0x1965,0x1965,0x1965,0x1962,0x1962,0x1962,0x1962,0x1962,0x24f,0x1959,0x1959,0x24f,0x1962,
-0x1962,0x1959,0x1962,0x195c,0x1965,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x196e,0x196e,0x1971,0x1971,
-0x1968,0x1968,0x1968,0x1968,0x252,0x252,0x252,0x252,0x252,0x252,0x252,0x252,0x196b,0x196b,0x196b,0x196b,
-0x196b,0x196b,0x196b,0x196b,0x196b,0x196b,0x252,0x252,0x252,0x252,0x252,0x252,0x1974,0x1974,0x1974,0x1974,
-0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1977,0x1974,0x1974,0x1974,0x1977,0x1974,0x1974,0x1974,
-0x1974,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x255,0x1980,0x1980,0x1980,0x1980,
-0x1980,0x1980,0x1980,0x1980,0x1980,0x1980,0x1980,0x1980,0x1980,0x1980,0x1980,0x1980,0x1980,0x1980,0x1980,0x197a,
-0x197a,0x197d,0x197d,0x1983,0x1983,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x1986,0x1986,0x1986,0x1986,
-0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,0x1986,
-0x25b,0x25b,0x25b,0x25b,0x25b,0x25b,0x25b,0x25b,0x25b,0x25b,0x25b,0x25b,0x1989,0x1989,0x1989,0x1989,
-0x1989,0x1989,0x1989,0x1989,0x1989,0x1989,0x1989,0x1989,0x1989,0x1989,0x1989,0x1989,0x1989,0x1989,0x1989,0x1989,
-0x1989,0x1989,0x1989,0x198c,0x1995,0x1989,0x1989,0x25e,0x25e,0x25e,0x25e,0x25e,0x1998,0x1998,0x1998,0x1998,
-0x1998,0x1998,0x1998,0x199b,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x19a4,0x19a4,0x19a4,0x19a4,
-0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x199e,0x199e,
-0x199e,0x199e,0x199e,0x199e,0x199e,0x199e,0x199e,0x199e,0x199e,0x19a1,0x19a1,0x19a1,0x19a1,0x19a7,0x19a7,0x19a7,
-0x19a7,0x19a7,0x264,0x264,0x264,0x264,0x264,0x264,0x264,0x264,0x264,0x264,0x264,0x264,0x264,0x264,
-0x264,0x264,0x264,0x264,0x1b84,0x1b84,0x1b84,0x1b84,0x1b84,0x1b84,0x1b84,0x1b84,0x1b84,0x1b84,0x1b84,0x1b84,
-0x1b84,0x1b84,0x1b84,0x1b84,0x1be7,0x1bed,0x1bed,0x1bed,0x1bed,0x1bed,0x1bed,0x1bea,0x1bea,0x1bea,0x1bea,0x1bea,
-0x1bea,0x1bea,0x1bea,0x1bea,0x1bea,0x1bea,0x1bea,0x1bea,0x1bea,0x1bea,0x267,0x267,0x267,0x267,0x267,0x267,
-0x267,0x267,0x267,0x267,0x19fb,0x19fb,0x19fb,0x19fb,0x19fb,0x19fb,0x19fb,0x19fb,0x19fb,0x19fb,0x19fb,0x19fb,
-0x19fb,0x19fb,0x19fb,0x19fb,0x19fb,0x19fb,0x19fb,0x19fb,0x19fb,0x19fb,0x19fb,0x26a,0x26a,0x26a,0x26a,0x26a,
-0x26a,0x26a,0x26a,0x26a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x26d,0x26d,0x1a0a,0x1a0a,
-0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,
-0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a0a,0x1a07,0x1a07,0x1a07,0x19fe,0x19fe,0x19fe,0x19fe,0x26d,0x26d,0x19fe,0x19fe,
-0x1a07,0x1a07,0x1a07,0x1a07,0x1a01,0x1a0a,0x1a04,0x1a0a,0x1a07,0x26d,0x26d,0x26d,0x26d,0x26d,0x26d,0x26d,
-0x26d,0x26d,0x26d,0x26d,0x26d,0x26d,0x26d,0x26d,0x26d,0x26d,0x26d,0x26d,0x26d,0x26d,0x26d,0x26d,
-0x26d,0x26d,0x26d,0x26d,0x1a16,0x1a16,0x1a16,0x1a16,0x1a16,0x1a16,0x1a16,0x1a16,0x1a16,0x1a16,0x1a16,0x1a16,
-0x1a16,0x270,0x270,0x270,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a16,0x1a16,0x1a16,0x1a16,0x1a16,
-0x1a19,0x1a19,0x270,0x270,0x273,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,
-0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,
-0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x273,0x273,0x276,0x276,0x276,0x276,0x276,0x276,0x276,0x276,
-0x276,0x276,0x276,0x276,0x276,0x276,0x276,0x276,0x1a49,0x1a49,0x1a49,0x276,0x276,0x1c32,0x276,0x276,
-0x276,0x276,0x276,0x276,0x276,0x276,0x276,0x276,0x1a4c,0x1a4c,0x1a4c,0x1a4c,0x276,0x276,0x276,0x276,
-0x276,0x276,0x276,0x276,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,
-0x18e1,0x18e1,0x18e1,0x18e1,0x1a4f,0x1a4f,0x1a4f,0x1af1,0x1af1,0x1af1,0x1af1,0x1c35,0x1c35,0x279,0x279,0x279,
-0x279,0x279,0x279,0x279,0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1af1,0x1af1,0x1af1,0x1af1,0x1af1,0x1af1,
-0x1af1,0x1af1,0x1af1,0x1af1,0x1af1,0x1bbd,0x1bbd,0x1bbd,0x1bbd,0x1c35,0x1c35,0x1c35,0x1af1,0x1af1,0x1af1,0x1af1,
-0x1af1,0x1af1,0x1af1,0x1bbd,0x1bbd,0x1bbd,0x1bbd,0x1c35,0x1c35,0x1c35,0x279,0x1c35,0x1af1,0x1af1,0x1af1,0x1bc0,
-0x1bc0,0x1bc0,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x1c35,0x1c35,0x1af1,0x1af1,0x1af1,0x1af1,
-0x1af1,0x1af1,0x1af1,0x1bbd,0x1bbd,0x1bbd,0x1c35,0x1c35,0x279,0x279,0x279,0x279,0x1bbd,0x1bbd,0x1bbd,0x1bbd,
-0x1bbd,0x1bbd,0x1bbd,0x1bbd,0x1c35,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x1bc0,0x1bc0,0x1bc0,0x1bc0,
-0x1bc0,0x1bc0,0x1bc0,0x1c38,0x1c38,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x1a25,0x1a1f,0x1a1f,0x1a1f,
-0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x27c,0x27c,
-0x27c,0x27c,0x27c,0x27c,0x27c,0x27c,0x27c,0x27c,0x27c,0x27c,0x27c,0x1a22,0x1a31,0x1a31,0x1a31,0x1a31,
-0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a28,0x1a28,0x1a28,0x1a28,0x1a2e,0x1a2e,0x1a2e,0x1a2e,
-0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x27f,0x27f,0x27f,0x27f,0x27f,0x1a2b,0x1a9d,0x1a9d,0x1a9d,0x1a9d,
-0x1a9d,0x1a9a,0x1a9a,0x1a9a,0x1a9a,0x1a9a,0x1a9a,0x1a9a,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,
-0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x1ab8,0x1ab8,0x1ab8,0x1ab8,
-0x1ab8,0x1ab8,0x1ab8,0x285,0x285,0x1ab8,0x285,0x285,0x1ab8,0x1ab8,0x1ab8,0x1ab8,0x1ab8,0x1ab8,0x1ab8,0x1ab8,
-0x285,0x1ab8,0x1ab8,0x285,0x1ab8,0x1ab8,0x1ab8,0x1ab8,0x1ab8,0x1ab8,0x1ab8,0x1ab8,0x1ab8,0x1ab8,0x1ab8,0x1ab8,
-0x1ab8,0x1ab8,0x1ab8,0x1ab8,0x1aa0,0x1aaf,0x1aaf,0x1aaf,0x1aaf,0x1aaf,0x285,0x1aaf,0x1ab2,0x285,0x285,0x1aa0,
-0x1aa0,0x1ab5,0x1aa6,0x1abb,0x1aaf,0x1abb,0x1aaf,0x1aa3,0x1abe,0x1aa9,0x1abe,0x285,0x285,0x285,0x285,0x285,
-0x285,0x285,0x285,0x285,0x1aac,0x1aac,0x1aac,0x1aac,0x1aac,0x1aac,0x1aac,0x1aac,0x1aac,0x1aac,0x285,0x285,
-0x285,0x285,0x285,0x285,0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,
-0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,0x288,0x288,0x288,0x288,0x288,0x288,
-0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288,
-0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x288,0x1ac4,0x1ac4,0x1ac4,0x1ac4,
-0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x28e,
-0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x28e,
+0x1965,0x1965,0x1965,0x249,0x249,0x1965,0x1965,0x1965,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x24c,0x1974,
+0x1974,0x24c,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,
+0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1971,0x1971,0x1971,0x1971,0x1971,0x24c,
+0x1968,0x1968,0x24c,0x1971,0x1971,0x1968,0x1971,0x196b,0x1974,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,0x24c,
+0x197d,0x197d,0x1980,0x1980,0x1977,0x1977,0x1977,0x1977,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,
+0x197a,0x197a,0x197a,0x197a,0x197a,0x197a,0x197a,0x197a,0x197a,0x197a,0x24f,0x24f,0x24f,0x24f,0x24f,0x24f,
+0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1986,0x1983,0x1983,0x1983,
+0x1986,0x1983,0x1983,0x1983,0x1983,0x252,0x252,0x252,0x252,0x252,0x252,0x252,0x252,0x252,0x252,0x252,
+0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,
+0x1992,0x1992,0x198f,0x1989,0x1989,0x198c,0x198c,0x1995,0x1995,0x255,0x255,0x255,0x255,0x255,0x255,0x255,
+0x1998,0x1998,0x1998,0x1998,0x1998,0x1998,0x1998,0x1998,0x1998,0x1998,0x1998,0x1998,0x1998,0x1998,0x1998,0x1998,
+0x1998,0x1998,0x1998,0x1998,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,0x258,
+0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,
+0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199e,0x19a7,0x199b,0x199b,0x25b,0x25b,0x25b,0x25b,0x25b,
+0x19aa,0x19aa,0x19aa,0x19aa,0x19aa,0x19aa,0x19aa,0x19ad,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,0x25e,
+0x19b6,0x19b6,0x19b6,0x19b6,0x19b6,0x19b6,0x19b6,0x19b6,0x19b6,0x19b6,0x19b6,0x19b6,0x19b6,0x19b6,0x19b6,0x19b6,
+0x19b6,0x19b6,0x19b0,0x19b0,0x19b0,0x19b0,0x19b0,0x19b0,0x19b0,0x19b0,0x19b0,0x19b0,0x19b0,0x19b3,0x19b3,0x19b3,
+0x19b3,0x19b9,0x19b9,0x19b9,0x19b9,0x19b9,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,
+0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x261,0x1b96,0x1b96,0x1b96,0x1b96,0x1b96,0x1b96,0x1b96,0x1b96,
+0x1b96,0x1b96,0x1b96,0x1b96,0x1b96,0x1b96,0x1b96,0x1b96,0x1bf9,0x1bff,0x1bff,0x1bff,0x1bff,0x1bff,0x1bff,0x1bfc,
+0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x264,0x264,
+0x264,0x264,0x264,0x264,0x264,0x264,0x264,0x264,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,
+0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x1a0d,0x267,
+0x267,0x267,0x267,0x267,0x267,0x267,0x267,0x267,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,
+0x26a,0x26a,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,
+0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a1c,0x1a19,0x1a19,0x1a19,0x1a10,0x1a10,0x1a10,0x1a10,
+0x26a,0x26a,0x1a10,0x1a10,0x1a19,0x1a19,0x1a19,0x1a19,0x1a13,0x1a1c,0x1a16,0x1a1c,0x1a19,0x26a,0x26a,0x26a,
+0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,
+0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x26a,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,
+0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x26d,0x26d,0x26d,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a28,
+0x1a28,0x1a28,0x1a28,0x1a28,0x1a2b,0x1a2b,0x26d,0x26d,0x270,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,
+0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,
+0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x1a2e,0x270,0x270,0x273,0x273,0x273,0x273,
+0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x1a5b,0x1a5b,0x1a5b,0x273,
+0x273,0x1c44,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x1a5e,0x1a5e,0x1a5e,0x1a5e,
+0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x273,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,
+0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x1a61,0x1a61,0x1a61,0x1b03,0x1b03,0x1b03,0x1b03,0x1c47,
+0x1c47,0x276,0x276,0x276,0x276,0x276,0x276,0x276,0x1a61,0x1a61,0x1a61,0x1a61,0x1a61,0x1a61,0x1b03,0x1b03,
+0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1c47,0x1c47,0x1c47,
+0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1c47,0x1c47,0x1c47,0x276,0x1c47,
+0x1b03,0x1b03,0x1b03,0x1bd2,0x1bd2,0x1bd2,0x276,0x276,0x276,0x276,0x276,0x276,0x276,0x276,0x1c47,0x1c47,
+0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1b03,0x1bcf,0x1bcf,0x1bcf,0x1c47,0x1c47,0x276,0x276,0x276,0x276,
+0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1bcf,0x1c47,0x276,0x276,0x276,0x276,0x276,0x276,0x276,
+0x1bd2,0x1bd2,0x1bd2,0x1bd2,0x1bd2,0x1bd2,0x1bd2,0x1c4a,0x1c4a,0x276,0x276,0x276,0x276,0x276,0x276,0x276,
+0x1a37,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,
+0x1a31,0x1a31,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x279,0x1a34,
+0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a3a,0x1a3a,0x1a3a,0x1a3a,
+0x1a40,0x1a40,0x1a40,0x1a40,0x1a40,0x1a40,0x1a40,0x1a40,0x1a40,0x1a40,0x27c,0x27c,0x27c,0x27c,0x27c,0x1a3d,
+0x1aaf,0x1aaf,0x1aaf,0x1aaf,0x1aaf,0x1aac,0x1aac,0x1aac,0x1aac,0x1aac,0x1aac,0x1aac,0x27f,0x27f,0x27f,0x27f,
+0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,0x27f,
+0x1aca,0x1aca,0x1aca,0x1aca,0x1aca,0x1aca,0x1aca,0x282,0x282,0x1aca,0x282,0x282,0x1aca,0x1aca,0x1aca,0x1aca,
+0x1aca,0x1aca,0x1aca,0x1aca,0x282,0x1aca,0x1aca,0x282,0x1aca,0x1aca,0x1aca,0x1aca,0x1aca,0x1aca,0x1aca,0x1aca,
+0x1aca,0x1aca,0x1aca,0x1aca,0x1aca,0x1aca,0x1aca,0x1aca,0x1ab2,0x1ac1,0x1ac1,0x1ac1,0x1ac1,0x1ac1,0x282,0x1ac1,
+0x1ac4,0x282,0x282,0x1ab2,0x1ab2,0x1ac7,0x1ab8,0x1acd,0x1ac1,0x1acd,0x1ac1,0x1ab5,0x1ad0,0x1abb,0x1ad0,0x282,
+0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x282,0x1abe,0x1abe,0x1abe,0x1abe,0x1abe,0x1abe,0x1abe,0x1abe,
+0x1abe,0x1abe,0x282,0x282,0x282,0x282,0x282,0x282,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,
+0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x285,0x285,
+0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,
+0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,0x285,
+0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,
+0x1ad6,0x1ad6,0x1ad6,0x28b,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,
+0x1ad6,0x1ad6,0x1ad6,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,
+0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x1ad9,0x1ad9,0x1ad9,0x1ad9,0x1ad9,0x1ad9,0x1ad9,0x1ad9,
+0x1ad9,0x1ad9,0x28b,0x28b,0x28b,0x28b,0x28b,0x28b,0x1b0c,0x1b0c,0x1b0c,0x1b0c,0x1b0c,0x1b0c,0x1b0c,0x1b0c,
+0x1b0c,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,
0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,0x28e,
-0x28e,0x28e,0x28e,0x28e,0x1ac7,0x1ac7,0x1ac7,0x1ac7,0x1ac7,0x1ac7,0x1ac7,0x1ac7,0x1ac7,0x1ac7,0x28e,0x28e,
-0x28e,0x28e,0x28e,0x28e,0x1afa,0x1afa,0x1afa,0x1afa,0x1afa,0x1afa,0x1afa,0x1afa,0x1afa,0x291,0x291,0x291,
-0x291,0x291,0x291,0x291,0x291,0x291,0x291,0x291,0x291,0x291,0x291,0x291,0x291,0x291,0x291,0x291,
-0x291,0x291,0x291,0x291,0x291,0x291,0x291,0x291,0x291,0x291,0x291,0x291,0x291,0x291,0x291,0x291,
-0x1ad0,0x1ad0,0x1ad0,0x1ad0,0x1ad0,0x1ad0,0x1ad0,0x1ad0,0x1ad0,0x1ad0,0x294,0x1aca,0x1aca,0x1acd,0x294,0x294,
-0x1ad0,0x1ad0,0x294,0x294,0x294,0x294,0x294,0x294,0x294,0x294,0x294,0x294,0x294,0x294,0x294,0x294,
-0x1b63,0x1b63,0x1b63,0x1b63,0x1b63,0x1b63,0x1b63,0x1b63,0x1b60,0x1b63,0x1b63,0x1b63,0x1b63,0x1b63,0x1b63,0x297,
-0x1b66,0x1b66,0x297,0x297,0x297,0x297,0x297,0x297,0x1b5d,0x1b5d,0x1b5d,0x1b5d,0x1b5d,0x1b5d,0x1b5d,0x1b5d,
-0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,
-0x1b6c,0x1b69,0x1b69,0x29a,0x29a,0x29a,0x29a,0x29a,0x29a,0x29a,0x29a,0x29a,0x29a,0x29a,0x29a,0x29a,
-0x1b6f,0x1b6f,0x1b6f,0x1b6f,0x1b6f,0x1b6f,0x1b6f,0x29d,0x1b6f,0x1b6f,0x1b6f,0x1b6f,0x29d,0x1b6f,0x1b6f,0x29d,
-0x1b6f,0x1b6f,0x1b6f,0x1b6f,0x1b6f,0x1b6f,0x1b6f,0x1b6f,0x1b6f,0x1b6f,0x1b6f,0x1b6f,0x1b6f,0x1b6f,0x1b6f,0x29d,
-0x1b72,0x1b78,0x1b78,0x1b75,0x1b75,0x1b75,0x2a3,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,
-0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,
-0x1b75,0x2a3,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,
-0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7e,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,
-0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x1b7b,0x2a6,
-0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x1bf0,0x1bf0,0x1bf0,0x1bf0,0x1bf0,0x1bf0,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,
-0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,
-0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x1b84,0x1b84,0x1b81,0x1b81,
-0x1b81,0x1b81,0x1b87,0x1b87,0x1b87,0x1b87,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,
-0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x1a9d,0x1a9d,0x1a9d,0x1a9d,
-0x1a9d,0x1a9d,0x1a9d,0x1a9d,0x1a9d,0x1a9d,0x1a9d,0x1a9d,0x1a9d,0x1a9d,0x1a9d,0x1a9d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,
+0x28e,0x28e,0x28e,0x28e,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x291,0x1adc,
+0x1adc,0x1adf,0x291,0x291,0x1ae2,0x1ae2,0x291,0x291,0x291,0x291,0x291,0x291,0x291,0x291,0x291,0x291,
+0x291,0x291,0x291,0x291,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b75,0x1b72,0x1b75,0x1b75,0x1b75,
+0x1b75,0x1b75,0x1b75,0x294,0x1b78,0x1b78,0x294,0x294,0x294,0x294,0x294,0x294,0x1b6f,0x1b6f,0x1b6f,0x1b6f,
+0x1b6f,0x1b6f,0x1b6f,0x1b6f,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,
+0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7b,0x1b7b,0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x297,0x297,
+0x297,0x297,0x297,0x297,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x29a,0x1b81,0x1b81,0x1b81,0x1b81,
+0x29a,0x1b81,0x1b81,0x29a,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,0x1b81,
+0x1b81,0x1b81,0x1b81,0x29a,0x1b84,0x1b8a,0x1b8a,0x1b87,0x1b87,0x1b87,0x2a0,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,
+0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,
+0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x2a0,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x1b87,0x2a0,
+0x2a0,0x2a0,0x2a0,0x2a0,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b90,0x1b8d,
0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,
-0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x2ac,0x1b8a,0x1b8a,0x1b8a,0x1b8a,
-0x1b8a,0x1b8a,0x1b8a,0x1b8a,0x1b8a,0x1b8a,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x1554,0x1554,0x1554,0x1554,
-0x1554,0x1554,0x1554,0x1554,0x1554,0x1554,0x1554,0x1554,0x1554,0x1554,0x1554,0x1554,0x1b93,0x1b93,0x1b93,0x1b93,
-0x1b93,0x1b93,0x1b93,0x1b93,0x1b93,0x1b93,0x1b93,0x1b93,0x1b93,0x1b93,0x1b90,0x2af,0x2af,0x2af,0x2af,0x2af,
-0x2af,0x2af,0x2af,0x2af,0x2af,0x2af,0x2af,0x2af,0x2af,0x2af,0x2af,0x2af,0x1b9c,0x1b9c,0x1b9c,0x1b9c,
-0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x2b2,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x2b2,
-0x1b9c,0x1b9c,0x2b2,0x1b99,0x1b99,0x1b99,0x1b99,0x1b99,0x1b99,0x1b99,0x1b99,0x1b99,0x1b99,0x1b99,0x2b2,0x1b99,
-0x1b99,0x1b99,0x1b99,0x1b99,0x1b99,0x1b99,0x1b99,0x1b99,0x1b99,0x1b99,0x1b99,0x1b99,0x1b99,0x1b99,0x2b2,0x1b99,
-0x1b99,0x1b99,0x1b99,0x1b99,0x1b99,0x1b99,0x2b2,0x1b99,0x1b99,0x2b2,0x2b2,0x2b2,0x1ba2,0x1ba2,0x1ba2,0x1ba2,
-0x1ba2,0x1ba2,0x1ba2,0x1ba2,0x1ba2,0x1ba2,0x1ba2,0x1ba2,0x1ba2,0x1ba2,0x2b5,0x2b5,0x1ba2,0x1ba2,0x1ba2,0x1ba2,
-0x1ba2,0x1ba2,0x1ba2,0x1ba2,0x1ba2,0x1ba2,0x1ba2,0x1ba2,0x1ba2,0x1ba2,0x1ba2,0x1ba2,0x1ba2,0x1ba2,0x1ba2,0x2b5,
-0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,
-0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,
+0x1b8d,0x1b8d,0x1b8d,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x1c02,0x1c02,0x1c02,0x1c02,0x1c02,0x1c02,0x2a3,
+0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,
+0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,0x2a3,
+0x1b96,0x1b96,0x1b93,0x1b93,0x1b93,0x1b93,0x1b99,0x1b99,0x1b99,0x1b99,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,
+0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,0x2a6,
+0x1aaf,0x1aaf,0x1aaf,0x1aaf,0x1aaf,0x1aaf,0x1aaf,0x1aaf,0x1aaf,0x1aaf,0x1aaf,0x1aaf,0x1aaf,0x1aaf,0x1aaf,0x1aaf,
+0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,
+0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x2a9,
+0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x1b9c,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,0x2a9,
+0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,
+0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba5,0x1ba2,0x2ac,
+0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,0x2ac,
+0x1bae,0x1bae,0x1bae,0x1bae,0x1bae,0x1bae,0x1bae,0x1bae,0x1bae,0x1bae,0x1bae,0x2af,0x1bae,0x1bae,0x1bae,0x1bae,
+0x1bae,0x1bae,0x1bae,0x2af,0x1bae,0x1bae,0x2af,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,
+0x1bab,0x1bab,0x2af,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,
+0x1bab,0x1bab,0x2af,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x1bab,0x2af,0x1bab,0x1bab,0x2af,0x2af,0x2af,
+0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x2b2,0x2b2,
+0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,
+0x1bb4,0x1bb4,0x1bb4,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x2b2,0x1bb1,0x1bb1,0x1bb1,0x1bb1,
+0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x2b5,0x2b5,0x2b5,0x2b5,
+0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,
+0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x2b5,0x1c05,0x1c05,0x1c05,
+0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0e,0x1c0e,0x1c0e,0x2b8,0x2b8,
0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,
-0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x2b8,0x1bf3,0x1bf3,0x1bf3,0x1bf9,0x1bf9,0x1bf9,0x1bf9,
-0x1bf9,0x1bf9,0x1bf9,0x1bf9,0x1bf9,0x1bf9,0x1bf9,0x1bfc,0x1bfc,0x1bfc,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,
-0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x1bff,0x1bff,0x1bff,0x1bff,
-0x1bff,0x1bff,0x1bff,0x1bff,0x1bff,0x1bff,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,
-0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,
-0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x1c02,0x1c02,0x1c02,0x1c02,0x1c02,0x1c02,0x1c02,0x1c02,
-0x1c02,0x1c02,0x1c02,0x1c02,0x1c02,0x1c02,0x1c02,0x1c02,0x1c02,0x1c02,0x1c02,0x1c02,0x2c1,0x2c1,0x2c1,0x2c1,
-0x2c1,0x2c1,0x2c1,0x2c1,0x2c1,0x2c1,0x2c1,0x2c1,0x1c05,0x1c05,0x1c1a,0x1c11,0x1c17,0x1c17,0x1c17,0x1c17,
-0x1c17,0x1c17,0x1c17,0x1c17,0x1c17,0x1c17,0x1c17,0x1c17,0x1c17,0x2c4,0x1c17,0x1c17,0x1c17,0x1c17,0x1c17,0x1c17,
-0x1c17,0x1c17,0x1c17,0x1c17,0x1c17,0x1c17,0x1c17,0x1c17,0x1c17,0x1c17,0x1c17,0x1c17,0x1c17,0x1c17,0x1c17,0x1c17,
-0x1c11,0x1c11,0x1c05,0x1c05,0x1c05,0x1c05,0x1c05,0x2c4,0x2c4,0x2c4,0x1c11,0x1c11,0x1c05,0x1c14,0x1c08,0x1c1d,
-0x1c1d,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0e,0x1c0e,0x1c0e,0x1c0e,
-0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x2c4,0x2c4,0x2c4,0x2c4,0x2c4,0x2c4,0x1c26,0x1c26,0x1c26,0x1c26,
-0x1c26,0x1c26,0x1c26,0x1c26,0x1c26,0x1c26,0x1c26,0x1c26,0x1c20,0x1c20,0x1c20,0x1c20,0x1c23,0x1c23,0x1c23,0x1c23,
-0x1c23,0x1c23,0x1c23,0x1c23,0x1c23,0x1c23,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2ca,0x2ca,0x2ca,0x2ca,
+0x1c11,0x1c11,0x1c11,0x1c11,0x1c11,0x1c11,0x1c11,0x1c11,0x1c11,0x1c11,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,
+0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,
+0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x2bb,0x1c14,0x1c14,0x1c14,0x1c14,
+0x1c14,0x1c14,0x1c14,0x1c14,0x1c14,0x1c14,0x1c14,0x1c14,0x1c14,0x1c14,0x1c14,0x1c14,0x1c14,0x1c14,0x1c14,0x1c14,
+0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x2be,0x1c17,0x1c17,0x1c2c,0x1c23,
+0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x2c1,0x1c29,0x1c29,
+0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,0x1c29,
+0x1c29,0x1c29,0x1c29,0x1c29,0x1c23,0x1c23,0x1c17,0x1c17,0x1c17,0x1c17,0x1c17,0x2c1,0x2c1,0x2c1,0x1c23,0x1c23,
+0x1c17,0x1c26,0x1c1a,0x1c2f,0x1c2f,0x1c1d,0x1c1d,0x1c1d,0x1c1d,0x1c1d,0x1c1d,0x1c1d,0x1c1d,0x1c1d,0x1c1d,0x1c1d,
+0x1c20,0x1c20,0x1c20,0x1c20,0x1c20,0x1c20,0x1c20,0x1c20,0x1c20,0x1c20,0x2c1,0x2c1,0x2c1,0x2c1,0x2c1,0x2c1,
+0x1c38,0x1c38,0x1c38,0x1c38,0x1c38,0x1c38,0x1c38,0x1c38,0x1c38,0x1c38,0x1c38,0x1c38,0x1c32,0x1c32,0x1c32,0x1c32,
+0x1c35,0x1c35,0x1c35,0x1c35,0x1c35,0x1c35,0x1c35,0x1c35,0x1c35,0x1c35,0x2c4,0x2c4,0x2c4,0x2c4,0x2c4,0x2c4,
+0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,
+0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,
+0x2c7,0x2c7,0x95d,0x95d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,
+0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,0x2c7,
+0x2c7,0x2c7,0x2c7,0x2c7,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0x12a5,
+0x12a5,0x12a5,0x2ca,0x2ca,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,
+0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0x2ca,0x2ca,
0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,
-0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x18db,0x2dc,0x2dc,0x2dc,
-0x2dc,0x2dc,0x2dc,0x2dc,0x2dc,0x2dc,0x2dc,0x2dc,0x2dc,0x2dc,0x2dc,0x2dc,0x2ca,0x2ca,0x2ca,0x2ca,
0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,
-0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x95d,0x95d,0x1c3b,0x1c3b,0x1c3b,0x1c3b,
-0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x2ca,0x2ca,0x2ca,0x2ca,
-0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0x2ca,0xc6c,0xc6c,0xc6c,0xc6c,
-0xc6c,0xc6c,0xc6c,0xc6c,0xc6c,0xc6c,0xc6c,0x129f,0x129f,0x129f,0x2cd,0x2cd,0xe94,0xe94,0xe94,0xe94,
-0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,
-0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0x2cd,0x2cd,0x2cd,0x2cd,0x2cd,0x2cd,0x2cd,0x2cd,0x2cd,0x2cd,
-0x2cd,0x2cd,0x2cd,0x2cd,0x2cd,0x2cd,0x2cd,0x2cd,0x2cd,0x2cd,0x2cd,0x2cd,0x2cd,0x2cd,0x2cd,0x2cd,
-0x2cd,0x2cd,0x2cd,0x2cd,0x2cd,0x2cd,0x2cd,0x2cd,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,
-0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,
-0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0x2d0,0x2d0,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,
-0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x1bab,0x1bab,0x1bab,
-0x1bab,0x1c29,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x2d3,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,
-0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,
-0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x2d6,0x2d6,0x1785,0x1785,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,
-0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,
-0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,
-0x1af4,0x1af4,0x1af4,0x2df,0x2df,0x2df,0x2df,0x2df,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,
-0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x3e7,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,
-0x3db,0x3e7,0x3e7,0x3e7,0x3e7,0x3e1,0x111f,0x12f6,0x3ea,0x927,0x92a,0x3d8,0x3d8,0x111c,0x12f3,0x12f3,
-0x3ed,0x3ed,0x3ed,0x3ed,0x3ed,0x3ed,0x3ed,0x3ed,0x111c,0x3db,0x3db,0x3e7,0xcae,0x3ea,0x3ea,0x3ea,
+0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,
+0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0x2cd,0x2cd,
+0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,
+0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x1bbd,0x1bbd,0x1bbd,0x1bbd,0x1c3b,0x2d0,0x2d0,0x2d0,0x2d0,0x2d0,0x2d0,
+0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,
+0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x2d3,0x2d3,
+0x1794,0x1794,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,0x2d6,
+0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,
+0x18ea,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,0x2d9,
+0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,
+0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x2dc,0x2dc,0x2dc,0x2dc,0x2dc,
+0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,
+0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,
+0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x2df,0x2df,
+0x3e7,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3db,0x3e7,0x3e7,0x3e7,0x3e7,0x3e1,0x1125,0x12fc,
+0x3ea,0x927,0x92a,0x3d8,0x3d8,0x1122,0x12f9,0x12f9,0x3ed,0x3ed,0x3ed,0x3ed,0x3ed,0x3ed,0x3ed,0x3ed,
+0x1122,0x3db,0x3db,0x3e7,0xcb1,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,
0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,
-0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3db,0x3db,0x8af,0x8b2,0x945,0x945,
-0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x3e4,0xf7e,0xf7b,0x12f9,0x12f9,0x12f9,0x12f9,0x12f9,
-0x14b8,0x1122,0x1122,0xed0,0xed0,0xda1,0xed0,0xed0,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,
-0x3ea,0x3ed,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ed,0x3ea,0x3ea,0x3ed,0x3ea,0x3ea,0x3ea,
-0x3ea,0x3ea,0x12f3,0x12f6,0x3de,0x3ea,0x3e7,0x3e7,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,
-0x489,0x12ff,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,
-0x489,0x489,0x12ff,0x1857,0x1857,0xf9c,0x47a,0x483,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,
-0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0xba3,
-0xba3,0xdb0,0xdb0,0x8b5,0xdad,0x13da,0x13da,0x13da,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,
+0x3ea,0x3ea,0x3db,0x3db,0x8af,0x8b2,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,0x945,
+0x3e4,0xf81,0xf7e,0x12ff,0x12ff,0x12ff,0x12ff,0x12ff,0x14c1,0x1128,0x1128,0xed3,0xed3,0xda4,0xed3,0xed3,
+0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ed,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,
+0x3ea,0x3ed,0x3ea,0x3ea,0x3ed,0x3ea,0x3ea,0x3ea,0x3ea,0x3ea,0x12f9,0x12fc,0x3de,0x3ea,0x3e7,0x3e7,
+0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x1305,0x489,0x489,0x489,0x489,0x489,0x489,
+0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x489,0x1305,0x1866,0x1866,0xf9f,0x47a,0x483,
+0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,
+0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0x4c5,0xba6,0xba6,0xdb3,0xdb3,0x8b5,0xdb0,0x13e3,0x13e3,0x13e3,
0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,
-0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4ce,0x4ce,0x4ce,0x1137,0x1137,0x1137,0x1137,0x1137,
-0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,
+0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,0x4c8,
+0x4ce,0x4ce,0x4ce,0x113d,0x113d,0x113d,0x113d,0x113d,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,
0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,
-0x4cb,0x4cb,0x1134,0x1134,0x1134,0x1134,0x1134,0x1134,0x4d1,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,
+0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x4cb,0x113a,0x113a,0x113a,0x113a,0x113a,0x113a,
+0x4d1,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,
0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,
-0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4ce,0x4da,0x4d4,0x4da,0x4d4,
+0x4ce,0x4ce,0x4ce,0x4ce,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,
0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,
-0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4d4,0x4d4,
-0x4d4,0x4d4,0x4d7,0x9a2,0xfc9,0xfc9,0xfcc,0xfc9,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,
+0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4d4,0x4d4,0x4d4,0x4d4,0x4d7,0x9a2,0xfcc,0xfcc,0xfcf,0xfcc,
0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,
-0x4da,0x4d4,0xfcc,0xfc9,0xfcc,0xfc9,0xfcc,0xfc9,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,
-0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,
-0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x6a5,0x6a5,0x6a8,0x504,0x6b4,0x6b1,0x6b1,0x6ae,
-0x52e,0x52e,0x4ec,0x4ec,0x4ec,0x4ec,0x4ec,0xb34,0x6b7,0x510,0x6cf,0x6d2,0x525,0x6b7,0x513,0x513,
-0x504,0x51f,0x51f,0x6a5,0x52b,0x528,0x6ab,0x4fe,0x4f5,0x4f5,0x4f8,0x4f8,0x4f8,0x4f8,0x4f8,0x4fb,
-0x4f8,0x4f8,0x4f8,0x4ef,0x537,0x534,0x531,0x531,0x6c3,0x519,0x516,0x6c0,0x6bd,0x6ba,0x6cc,0x507,
-0x6c9,0x6c9,0x51c,0x51f,0x6c6,0x6c6,0x51c,0x51f,0x501,0x504,0x504,0x504,0x522,0x50d,0x50a,0xbb8,
-0xad7,0xad7,0xad4,0xad4,0xad4,0xad4,0xbaf,0xbaf,0xbaf,0xbaf,0xbb5,0xcdb,0xcd8,0xdbc,0xdbf,0xbb2,
-0xdbf,0xdbf,0xdbf,0xdbf,0xdbc,0xdbf,0xdbf,0xbac,0x55b,0x55b,0x55b,0x55b,0x55b,0x55b,0x55b,0x558,
-0x55e,0x73e,0x55b,0x9a5,0x9c6,0xada,0xada,0xada,0xbbe,0xbbe,0xdc5,0xdc5,0xdc5,0xdc5,0x1140,0x1143,
-0x1143,0x1314,0x14a6,0x14d0,0x14d3,0x14d3,0x16da,0x185a,0x56a,0x56a,0x582,0x6e4,0x567,0x6de,0x56a,0x57f,
-0x567,0x6e4,0x579,0x582,0x582,0x582,0x579,0x579,0x582,0x582,0x582,0x6ea,0x567,0x582,0x6e7,0x567,
-0x576,0x582,0x582,0x582,0x582,0x582,0x567,0x567,0x56d,0x6de,0x6e1,0x567,0x582,0x567,0x6ed,0x567,
-0x582,0x570,0x588,0x6f0,0x582,0x582,0x573,0x579,0x582,0x582,0x585,0x582,0x579,0x57c,0x57c,0x57c,
-0x57c,0xae3,0xae0,0xcde,0xdce,0xbd3,0xbd6,0xbd6,0xbd0,0xbcd,0xbcd,0xbcd,0xbcd,0xbd6,0xbd3,0xbd3,
-0xbd3,0xbd3,0xbca,0xbcd,0xdcb,0xedc,0xedf,0xfd2,0x1146,0x1146,0x1146,0x6f6,0x6f3,0x58b,0x58e,0x58e,
-0x58e,0x58e,0x58e,0x6f3,0x6f6,0x6f6,0x6f3,0x58e,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,
-0x6fc,0x6fc,0x6fc,0x6fc,0x597,0x597,0x597,0x597,0x6f9,0x6f9,0x6f9,0x6f9,0x6f9,0x6f9,0x6f9,0x6f9,
-0x6f9,0x6f9,0x591,0x591,0x591,0x591,0x591,0x591,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,
-0x59a,0x59d,0x59d,0x59d,0x59d,0x59d,0x5a0,0x59a,0x59d,0x59d,0x59a,0x59a,0x59a,0x59a,0x59d,0x59d,
-0x6ff,0x6ff,0x59a,0x59a,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,
-0x59d,0x5a0,0x5a0,0x5a0,0x59d,0x59d,0x702,0x59d,0x702,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,
-0x59a,0x59d,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,0x59d,0x59d,0x59a,0x6ff,0x59a,0x59a,0x59a,0xae9,
-0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xae9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,0xbd9,
-0xbd9,0xbd9,0xbd9,0xbd9,0x705,0x5a3,0x705,0x705,0x5a6,0x5a3,0x5a3,0x705,0x705,0x5a6,0x5a3,0x705,
-0x5a6,0x5a3,0x5a3,0x705,0x5a3,0x705,0x5b2,0x5af,0x5a3,0x705,0x5a3,0x5a3,0x5a3,0x5a3,0x705,0x5a3,
-0x5a3,0x705,0x705,0x705,0x705,0x5a3,0x5a3,0x705,0x5a6,0x705,0x5a6,0x705,0x705,0x705,0x705,0x705,
-0x70b,0x5a9,0x705,0x5a9,0x5a9,0x5a3,0x5a3,0x5a3,0x705,0x705,0x705,0x705,0x5a3,0x5a3,0x5a3,0x5a3,
-0x705,0x705,0x5a3,0x5a3,0x5a3,0x5a6,0x5a3,0x5a3,0x5a6,0x5a3,0x5a3,0x5a6,0x705,0x5a6,0x5a3,0x5a3,
-0x705,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x705,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
-0x5a3,0x5a3,0x5a3,0x5a3,0x708,0x705,0x5a6,0x5a3,0x705,0x705,0x705,0x705,0x5a3,0x5a3,0x705,0x705,
-0x5a3,0x5a6,0x708,0x708,0x5a6,0x5a6,0x5a3,0x5a3,0x5a6,0x5a6,0x5a3,0x5a3,0x5a6,0x5a6,0x5a3,0x5a3,
-0x5a3,0x5a3,0x5a3,0x5a3,0x5a6,0x5a6,0x705,0x705,0x5a6,0x5a6,0x705,0x705,0x5a6,0x5a6,0x5a3,0x5a3,
-0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x705,0x5a3,0x5a3,0x5a3,0x705,0x5a3,0x5a3,
-0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x705,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a6,0x5a6,0x5a6,0x5a6,
-0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x705,
+0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0x4da,0x4d4,0xfcf,0xfcc,0xfcf,0xfcc,0xfcf,0xfcc,
+0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,
+0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e6,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,0x4e9,
+0x6a5,0x6a5,0x6a8,0x504,0x6b4,0x6b1,0x6b1,0x6ae,0x52e,0x52e,0x4ec,0x4ec,0x4ec,0x4ec,0x4ec,0xb37,
+0x6b7,0x510,0x6cf,0x6d2,0x525,0x6b7,0x513,0x513,0x504,0x51f,0x51f,0x6a5,0x52b,0x528,0x6ab,0x4fe,
+0x4f5,0x4f5,0x4f8,0x4f8,0x4f8,0x4f8,0x4f8,0x4fb,0x4f8,0x4f8,0x4f8,0x4ef,0x537,0x534,0x531,0x531,
+0x6c3,0x519,0x516,0x6c0,0x6bd,0x6ba,0x6cc,0x507,0x6c9,0x6c9,0x51c,0x51f,0x6c6,0x6c6,0x51c,0x51f,
+0x501,0x504,0x504,0x504,0x522,0x50d,0x50a,0xbbb,0xada,0xada,0xad7,0xad7,0xad7,0xad7,0xbb2,0xbb2,
+0xbb2,0xbb2,0xbb8,0xcde,0xcdb,0xdbf,0xdc2,0xbb5,0xdc2,0xdc2,0xdc2,0xdc2,0xdbf,0xdc2,0xdc2,0xbaf,
+0x55b,0x55b,0x55b,0x55b,0x55b,0x55b,0x55b,0x558,0x55e,0x73e,0x55b,0x9a5,0x9c6,0xadd,0xadd,0xadd,
+0xbc1,0xbc1,0xdc8,0xdc8,0xdc8,0xdc8,0x1146,0x1149,0x1149,0x131a,0x14af,0x14d9,0x14dc,0x14dc,0x16e9,0x1869,
+0x56a,0x56a,0x582,0x6e4,0x567,0x6de,0x56a,0x57f,0x567,0x6e4,0x579,0x582,0x582,0x582,0x579,0x579,
+0x582,0x582,0x582,0x6ea,0x567,0x582,0x6e7,0x567,0x576,0x582,0x582,0x582,0x582,0x582,0x567,0x567,
+0x56d,0x6de,0x6e1,0x567,0x582,0x567,0x6ed,0x567,0x582,0x570,0x588,0x6f0,0x582,0x582,0x573,0x579,
+0x582,0x582,0x585,0x582,0x579,0x57c,0x57c,0x57c,0x57c,0xae6,0xae3,0xce1,0xdd1,0xbd6,0xbd9,0xbd9,
+0xbd3,0xbd0,0xbd0,0xbd0,0xbd0,0xbd9,0xbd6,0xbd6,0xbd6,0xbd6,0xbcd,0xbd0,0xdce,0xedf,0xee2,0xfd5,
+0x114c,0x114c,0x114c,0x6f6,0x6f3,0x58b,0x58e,0x58e,0x58e,0x58e,0x58e,0x6f3,0x6f6,0x6f6,0x6f3,0x58e,
+0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x6fc,0x597,0x597,0x597,0x597,
+0x6f9,0x6f9,0x6f9,0x6f9,0x6f9,0x6f9,0x6f9,0x6f9,0x6f9,0x6f9,0x591,0x591,0x591,0x591,0x591,0x591,
+0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59a,0x59d,0x59d,0x59d,0x59d,0x59d,0x5a0,0x59a,
+0x59d,0x59d,0x59a,0x59a,0x59a,0x59a,0x59d,0x59d,0x6ff,0x6ff,0x59a,0x59a,0x59d,0x59d,0x59d,0x59d,
+0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x5a0,0x5a0,0x5a0,0x59d,0x59d,0x702,0x59d,
+0x702,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59d,0x59a,0x59d,0x59a,0x59a,0x59a,0x59a,0x59a,0x59a,
+0x59d,0x59d,0x59a,0x6ff,0x59a,0x59a,0x59a,0xaec,0xaec,0xaec,0xaec,0xaec,0xaec,0xaec,0xaec,0xaec,
+0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0x705,0x5a3,0x705,0x705,
+0x5a6,0x5a3,0x5a3,0x705,0x705,0x5a6,0x5a3,0x705,0x5a6,0x5a3,0x5a3,0x705,0x5a3,0x705,0x5b2,0x5af,
+0x5a3,0x705,0x5a3,0x5a3,0x5a3,0x5a3,0x705,0x5a3,0x5a3,0x705,0x705,0x705,0x705,0x5a3,0x5a3,0x705,
+0x5a6,0x705,0x5a6,0x705,0x705,0x705,0x705,0x705,0x70b,0x5a9,0x705,0x5a9,0x5a9,0x5a3,0x5a3,0x5a3,
+0x705,0x705,0x705,0x705,0x5a3,0x5a3,0x5a3,0x5a3,0x705,0x705,0x5a3,0x5a3,0x5a3,0x5a6,0x5a3,0x5a3,
+0x5a6,0x5a3,0x5a3,0x5a6,0x705,0x5a6,0x5a3,0x5a3,0x705,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x705,0x5a3,
+0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x708,0x705,0x5a6,0x5a3,
+0x705,0x705,0x705,0x705,0x5a3,0x5a3,0x705,0x705,0x5a3,0x5a6,0x708,0x708,0x5a6,0x5a6,0x5a3,0x5a3,
+0x5a6,0x5a6,0x5a3,0x5a3,0x5a6,0x5a6,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a6,0x5a6,0x705,0x705,
+0x5a6,0x5a6,0x705,0x705,0x5a6,0x5a6,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+0x5a3,0x705,0x5a3,0x5a3,0x5a3,0x705,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x705,0x5a3,0x5a3,
+0x5a3,0x5a3,0x5a3,0x5a3,0x5a6,0x5a6,0x5a6,0x5a6,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x705,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
-0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
-0x5a6,0x5a6,0x5a6,0x5a6,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a6,0x5a6,0x5a6,0x5a6,0x5a3,0x5ac,
-0x5a3,0x5a3,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,0xbdc,
-0x5b5,0xaec,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5be,0x5bb,0x5be,0x5bb,0x5b5,0x5b5,0x5b5,0x5b5,
-0x5b5,0x5b5,0x70e,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x7fe,0x7fe,0x5b5,0x5b5,0x5b5,0x5b5,
-0x5b8,0x5b8,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x804,0x801,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,
+0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a6,0x5a6,0x5a6,0x5a6,0x5a3,0x5a3,0x5a3,0x5a3,
+0x5a3,0x5a3,0x5a6,0x5a6,0x5a6,0x5a6,0x5a3,0x5ac,0x5a3,0x5a3,0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,
+0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,0x5b5,0xaef,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,
+0x5be,0x5bb,0x5be,0x5bb,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x70e,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,
+0x5b5,0x5b5,0x7fe,0x7fe,0x5b5,0x5b5,0x5b5,0x5b5,0x5b8,0x5b8,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,
+0x5b5,0x804,0x801,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,
0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,
-0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0xaec,
-0xbe2,0xaec,0xaec,0xaec,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,
+0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0x5b5,0xaef,0xbe5,0xaef,0xaef,0xaef,0x5c1,0x5c1,0x5c1,0x5c1,
0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,
-0x5c1,0x5c1,0x5c1,0x5c1,0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x5c7,0xc3f,
-0xc3f,0xc3f,0xc3f,0xc3f,0xc3f,0xc3f,0xc3f,0xc3f,0xc3f,0xc3f,0xc3f,0xc3f,0xc3f,0xc3f,0xc3f,0xc3f,
-0xc3f,0xc3f,0xc3f,0xd4d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,
-0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x5ca,0x5cd,0x5cd,0x5cd,0x5cd,0x5cd,0x5cd,0x5cd,
-0x5cd,0x5cd,0x5cd,0x5cd,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,
-0x5cd,0x5cd,0x5cd,0x5cd,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,
-0x71d,0x71d,0x71d,0x71d,0x720,0x720,0x720,0x720,0x720,0x720,0x720,0x720,0x720,0x720,0x720,0x720,
-0x720,0x720,0x720,0x720,0x5d0,0x5d0,0x720,0x720,0x720,0x720,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,
-0xbe5,0xbe5,0xbe5,0xbe5,0x726,0x726,0x5d3,0x723,0x723,0x723,0x723,0x723,0x723,0x723,0x5d3,0x5d3,
-0x5d3,0x5d3,0x5d6,0x5d6,0x5d6,0x5d6,0x726,0x726,0x5d6,0x5d6,0x726,0x726,0x5d3,0x5d3,0x5d3,0x5d3,
-0x726,0x726,0x5d6,0x5d6,0x726,0x726,0x5d3,0x5d3,0x5d3,0x5d3,0x726,0x726,0x723,0x5d3,0x5d6,0x726,
-0x5d3,0x5d3,0x723,0x726,0x726,0x726,0x5d6,0x5d6,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,
-0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x726,0x723,0x726,0x723,0x5d3,0x5d6,0x5d6,0x5d6,0x5d6,0x5d6,
-0x5d6,0x5d3,0x5d3,0x723,0xaf2,0xaf2,0xaf2,0xaf2,0xaf2,0xaf2,0xaf2,0xaf2,0xbe8,0xbe8,0xbe8,0xbe8,
-0xbe8,0xc57,0xc57,0xbe8,0x5dc,0x5dc,0x5dc,0x5dc,0x5d9,0x72f,0x72f,0x5d9,0x5d9,0x729,0x5d9,0x5d9,
-0x5d9,0x5d9,0x729,0x729,0x5d9,0x5d9,0x5d9,0x5d9,0xd56,0xd56,0xbeb,0xbeb,0xdd7,0xaf5,0x5dc,0x5dc,
-0x72c,0x5df,0x72c,0x5dc,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,
-0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5dc,0x5dc,0x5dc,
-0x5d9,0x5d9,0x5d9,0x5d9,0x72f,0x5d9,0x72f,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x807,0x807,0x807,0x807,
-0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,
-0x5d9,0x5d9,0x5d9,0x5d9,0x72f,0x72f,0x5e2,0x72f,0x729,0x729,0x5d9,0x729,0x72c,0x729,0x729,0x5d9,
-0x729,0x72f,0x5e2,0x72f,0xaf5,0xaf5,0xbee,0xbee,0xbee,0xbee,0xbee,0xbee,0xbee,0xbee,0xbee,0xbee,
-0xbee,0xbee,0xdd4,0xe8b,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,
-0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e8,0x139b,0x139b,0x139b,0x5e8,0x5e8,0x5e8,0x5e8,
-0x5e8,0x5e8,0x5e8,0x5e8,0x14d9,0x5ee,0x5ee,0x5ee,0x5ee,0x139b,0x5e8,0x5e8,0x5ee,0x5ee,0x139e,0x139e,
-0x5f4,0x5f4,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,
-0x5e8,0x5e8,0x5e8,0x5e8,0x139b,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,
-0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x735,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,
-0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x139b,0x5e8,0x139b,0x5e8,0x5e8,0x5e8,0x5e8,0x139b,
-0x139b,0x139b,0x5e8,0x1299,0x5e8,0x5e8,0x5e8,0x5f1,0x5f1,0x5f1,0x5f1,0x1320,0x1320,0x5e8,0x5eb,0x5eb,
-0x5ee,0x5e8,0x5e8,0x5e8,0xbf4,0xbf1,0xbf4,0xbf1,0xbf4,0xbf1,0xbf4,0xbf1,0xbf4,0xbf1,0xbf4,0xbf1,
-0xbf4,0xbf1,0x732,0x732,0x732,0x732,0x732,0x732,0x732,0x732,0x732,0x732,0x5e8,0x5e8,0x5e8,0x5e8,
-0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x139b,0x5e8,0x5e8,0x5e8,
-0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x139b,0x615,0x615,0x615,0x615,
+0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x5c1,0x717,0x717,0x717,0x717,
+0x717,0x717,0x717,0x717,0x717,0x717,0x5c7,0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,
+0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,0xc42,0xd50,0x71d,0x71d,0x71d,0x71d,
+0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,
+0x5ca,0x5cd,0x5cd,0x5cd,0x5cd,0x5cd,0x5cd,0x5cd,0x5cd,0x5cd,0x5cd,0x5cd,0x71d,0x71d,0x71d,0x71d,
+0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x5cd,0x5cd,0x5cd,0x5cd,0x71d,0x71d,0x71d,0x71d,
+0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x720,0x720,0x720,0x720,
+0x720,0x720,0x720,0x720,0x720,0x720,0x720,0x720,0x720,0x720,0x720,0x720,0x5d0,0x5d0,0x720,0x720,
+0x720,0x720,0xbe8,0xbe8,0xbe8,0xbe8,0xbe8,0xbe8,0xbe8,0xbe8,0xbe8,0xbe8,0x726,0x726,0x5d3,0x723,
+0x723,0x723,0x723,0x723,0x723,0x723,0x5d3,0x5d3,0x5d3,0x5d3,0x5d6,0x5d6,0x5d6,0x5d6,0x726,0x726,
+0x5d6,0x5d6,0x726,0x726,0x5d3,0x5d3,0x5d3,0x5d3,0x726,0x726,0x5d6,0x5d6,0x726,0x726,0x5d3,0x5d3,
+0x5d3,0x5d3,0x726,0x726,0x723,0x5d3,0x5d6,0x726,0x5d3,0x5d3,0x723,0x726,0x726,0x726,0x5d6,0x5d6,
+0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x5d3,0x726,0x723,
+0x726,0x723,0x5d3,0x5d6,0x5d6,0x5d6,0x5d6,0x5d6,0x5d6,0x5d3,0x5d3,0x723,0xaf5,0xaf5,0xaf5,0xaf5,
+0xaf5,0xaf5,0xaf5,0xaf5,0xbeb,0xbeb,0xbeb,0xbeb,0xbeb,0xc5a,0xc5a,0xbeb,0x5dc,0x5dc,0x5dc,0x5dc,
+0x5d9,0x72f,0x72f,0x5d9,0x5d9,0x729,0x5d9,0x5d9,0x5d9,0x5d9,0x729,0x729,0x5d9,0x5d9,0x5d9,0x5d9,
+0xd59,0xd59,0xbee,0xbee,0xdda,0xaf8,0x5dc,0x5dc,0x72c,0x5df,0x72c,0x5dc,0x5d9,0x5d9,0x5d9,0x5d9,
+0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,
+0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5dc,0x5dc,0x5dc,0x5d9,0x5d9,0x5d9,0x5d9,0x72f,0x5d9,0x72f,0x5d9,
+0x5d9,0x5d9,0x5d9,0x5d9,0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807,0x807,
+0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x5d9,0x72f,0x72f,0x5e2,0x72f,
+0x729,0x729,0x5d9,0x729,0x72c,0x729,0x729,0x5d9,0x729,0x72f,0x5e2,0x72f,0xaf8,0xaf8,0xbf1,0xbf1,
+0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xdd7,0xe8e,0x5e5,0x5e5,0x5e5,0x5e5,
+0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,0x5e5,
+0x5e8,0x13a4,0x13a4,0x13a4,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x14e2,0x5ee,0x5ee,0x5ee,
+0x5ee,0x13a4,0x5e8,0x5e8,0x5ee,0x5ee,0x13a7,0x13a7,0x5f4,0x5f4,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,
+0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x13a4,0x5e8,0x5e8,0x5e8,
+0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,
+0x5e8,0x735,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,
+0x13a4,0x5e8,0x13a4,0x5e8,0x5e8,0x5e8,0x5e8,0x13a4,0x13a4,0x13a4,0x5e8,0x129f,0x5e8,0x5e8,0x5e8,0x5f1,
+0x5f1,0x5f1,0x5f1,0x1326,0x1326,0x5e8,0x5eb,0x5eb,0x5ee,0x5e8,0x5e8,0x5e8,0xbf7,0xbf4,0xbf7,0xbf4,
+0xbf7,0xbf4,0xbf7,0xbf4,0xbf7,0xbf4,0xbf7,0xbf4,0xbf7,0xbf4,0x732,0x732,0x732,0x732,0x732,0x732,
+0x732,0x732,0x732,0x732,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,
+0x5e8,0x5e8,0x5e8,0x5e8,0x13a4,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,0x5e8,
+0x5e8,0x5e8,0x5e8,0x13a4,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,
0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,
-0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x60c,0x60c,0x60c,0x60c,0x60c,0x60c,
+0x615,0x615,0x60c,0x60c,0x60c,0x60c,0x60c,0x60c,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,
0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,
-0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0xb46,0xb46,0xb46,0xb46,
-0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0xb46,0x615,0x615,0x95a,0x615,
-0x615,0x615,0x615,0x615,0x615,0x615,0x60c,0x60c,0xbf7,0xd7a,0x1b0f,0x1b0f,0x612,0x618,0x615,0x60f,
+0x60f,0x60f,0x60f,0x60f,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,0xb49,
+0xb49,0xb49,0xb49,0xb49,0x615,0x615,0x95a,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x60c,0x60c,
+0xbfa,0xd7d,0x1b21,0x1b21,0x612,0x618,0x615,0x60f,0x612,0x618,0x615,0x60f,0x612,0x618,0x615,0x60f,
0x612,0x618,0x615,0x60f,0x612,0x618,0x615,0x60f,0x612,0x618,0x615,0x60f,0x612,0x618,0x615,0x60f,
-0x612,0x618,0x615,0x60f,0x612,0x618,0x615,0x60f,0x612,0x618,0x615,0x60f,0x615,0x60f,0x615,0x60f,
-0x615,0x60f,0x615,0x60f,0x615,0x60f,0x615,0x60f,0x612,0x618,0x615,0x60f,0x612,0x618,0x615,0x60f,
-0x612,0x618,0x615,0x60f,0x612,0x618,0x615,0x60f,0x615,0x60f,0x612,0x618,0x615,0x60f,0x615,0x60f,
-0x612,0x618,0x615,0x60f,0x612,0x618,0x615,0x60f,0x615,0x60f,0x1323,0x1323,0x1323,0x1323,0x1323,0x1323,
-0x1323,0x1323,0x1323,0x1323,0x1323,0x1323,0x1323,0x1323,0x615,0x60f,0x615,0x60f,0x615,0x60f,0x612,0x618,
0x612,0x618,0x615,0x60f,0x615,0x60f,0x615,0x60f,0x615,0x60f,0x615,0x60f,0x615,0x60f,0x615,0x60f,
-0x612,0x615,0x60f,0x612,0x615,0x60f,0x612,0x618,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,
-0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x612,
-0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,
-0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,
-0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x612,0x612,0x612,0x612,0x612,0x612,0x612,
-0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x60f,0x615,0x918,0x91b,0x1b0f,0x1b0f,0x1b0f,0x1b0f,
-0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x1b0f,0x612,0x60f,0x612,0x612,
-0x612,0x612,0x612,0x612,0x60f,0x612,0x60f,0x60f,0x612,0x612,0x60f,0x60f,0x612,0x612,0x60f,0x612,
-0x60f,0x612,0x60f,0x60f,0x612,0x60f,0x60f,0x612,0x60f,0x612,0x60f,0x60f,0x612,0x60f,0x612,0x612,
-0x60f,0x60f,0x60f,0x612,0x60f,0x60f,0x60f,0x60f,0x60f,0x612,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,
+0x612,0x618,0x615,0x60f,0x612,0x618,0x615,0x60f,0x612,0x618,0x615,0x60f,0x612,0x618,0x615,0x60f,
+0x615,0x60f,0x612,0x618,0x615,0x60f,0x615,0x60f,0x612,0x618,0x615,0x60f,0x612,0x618,0x615,0x60f,
+0x615,0x60f,0x1329,0x1329,0x1329,0x1329,0x1329,0x1329,0x1329,0x1329,0x1329,0x1329,0x1329,0x1329,0x1329,0x1329,
+0x615,0x60f,0x615,0x60f,0x615,0x60f,0x612,0x618,0x612,0x618,0x615,0x60f,0x615,0x60f,0x615,0x60f,
+0x615,0x60f,0x615,0x60f,0x615,0x60f,0x615,0x60f,0x612,0x615,0x60f,0x612,0x615,0x60f,0x612,0x618,
0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,
-0x612,0x612,0x60f,0x60f,0x612,0x60f,0x612,0x60f,0x60f,0x60f,0x60f,0x60f,0x612,0x612,0x612,0x612,
-0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,
-0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x618,
+0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,
0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,
+0x615,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,
+0x60f,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,
+0x60f,0x615,0x918,0x91b,0x1b21,0x1b21,0x1b21,0x1b21,0x1b21,0x1b21,0x1b21,0x1b21,0x1b21,0x1b21,0x1b21,0x1b21,
+0x1b21,0x1b21,0x1b21,0x1b21,0x612,0x60f,0x612,0x612,0x612,0x612,0x612,0x612,0x60f,0x612,0x60f,0x60f,
+0x612,0x612,0x60f,0x60f,0x612,0x612,0x60f,0x612,0x60f,0x612,0x60f,0x60f,0x612,0x60f,0x60f,0x612,
+0x60f,0x612,0x60f,0x60f,0x612,0x60f,0x612,0x612,0x60f,0x60f,0x60f,0x612,0x60f,0x60f,0x60f,0x60f,
+0x60f,0x612,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,
+0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x60f,0x612,0x612,0x60f,0x60f,0x612,0x60f,0x612,0x60f,
+0x60f,0x60f,0x60f,0x60f,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,
+0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x612,
+0x612,0x612,0x612,0x612,0x612,0x612,0x612,0x618,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,
0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,
-0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,
-0x618,0x618,0x618,0x618,0x618,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,
-0x61b,0x61b,0x61b,0x61b,0xfde,0xfde,0xfde,0x14dc,0x14dc,0x14dc,0x14dc,0x14dc,0x14dc,0x14dc,0x16e0,0x16e0,
-0x864,0x86a,0x86a,0x876,0x876,0x867,0x85e,0x867,0x85e,0x867,0x85e,0x867,0x85e,0x867,0x85e,0x867,
-0x62a,0x62a,0x624,0x62a,0x624,0x62a,0x624,0x62a,0x624,0x62a,0x624,0x627,0x62d,0x62a,0x624,0x62a,
-0x624,0x627,0x62d,0x62a,0x624,0x62a,0x624,0x627,0x62d,0x62a,0x624,0x627,0x62d,0x62a,0x624,0x627,
-0x62d,0x62a,0x624,0x62a,0x624,0x62a,0x624,0x62a,0x624,0x62a,0x624,0x627,0x62d,0x62a,0x624,0x627,
+0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,
+0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x618,0x615,0x615,0x615,
+0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x615,0x61b,0x61b,0x61b,0x61b,0xfe1,0xfe1,0xfe1,0x14e5,
+0x14e5,0x14e5,0x14e5,0x14e5,0x14e5,0x14e5,0x16ef,0x16ef,0x864,0x86a,0x86a,0x876,0x876,0x867,0x85e,0x867,
+0x85e,0x867,0x85e,0x867,0x85e,0x867,0x85e,0x867,0x62a,0x62a,0x624,0x62a,0x624,0x62a,0x624,0x62a,
+0x624,0x62a,0x624,0x627,0x62d,0x62a,0x624,0x62a,0x624,0x627,0x62d,0x62a,0x624,0x62a,0x624,0x627,
+0x62d,0x62a,0x624,0x627,0x62d,0x62a,0x624,0x627,0x62d,0x62a,0x624,0x62a,0x624,0x62a,0x624,0x62a,
+0x624,0x62a,0x624,0x627,0x62d,0x62a,0x624,0x627,0x62d,0x62a,0x624,0x627,0x62d,0x62a,0x624,0x627,
0x62d,0x62a,0x624,0x627,0x62d,0x62a,0x624,0x627,0x62d,0x62a,0x624,0x627,0x62d,0x62a,0x624,0x627,
-0x62d,0x62a,0x624,0x627,0x62d,0x62a,0x624,0x627,0x62d,0x62a,0x624,0x627,0x714,0x714,0x714,0x714,
-0x714,0x714,0x714,0x714,0x714,0x714,0x714,0x714,0x714,0x714,0x714,0x714,0x714,0x714,0x714,0x714,
+0x62d,0x62a,0x624,0x627,0x714,0x714,0x714,0x714,0x714,0x714,0x714,0x714,0x714,0x714,0x714,0x714,
+0x714,0x714,0x714,0x714,0x714,0x714,0x714,0x714,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,
0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,
-0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,
-0x711,0x711,0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,
-0x71a,0x71a,0x71a,0x71a,0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,
-0x717,0x717,0x717,0x717,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,
+0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x711,0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,
+0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,0x71a,0x717,0x717,0x717,0x717,
+0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x717,0x71d,0x71d,0x71d,0x71d,
0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,
-0x71d,0x71d,0x71d,0x71d,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,
+0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x71d,0x738,0x738,0x738,0x738,
0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,
-0x738,0x738,0x738,0x738,0xc45,0x8c7,0x8c1,0x8be,0x8c4,0x8bb,0x74d,0x750,0x750,0x750,0x750,0x750,
-0x750,0x750,0x750,0x750,0x8cd,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,
+0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0x738,0xc48,0x8c7,0x8be,0x8bb,
+0x8c1,0x8c4,0x74d,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x750,0x8cd,0x74d,0x74d,0x74d,
0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,
-0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x8ca,0x8ca,0x753,0x8dc,0x8df,0x8e5,0x80a,0x816,0x8fa,0x813,
-0x8d3,0x8d0,0x8d3,0x8d0,0x8d9,0x8d6,0x8d9,0x8d6,0x8d3,0x8d0,0x810,0x8e5,0x8d3,0x8d0,0x8d3,0x8d0,
-0x8d3,0x8d0,0x8d3,0x8d0,0x8eb,0x8f1,0x8ee,0x8ee,0x759,0x795,0x795,0x795,0x795,0x795,0x795,0x78f,
-0x78f,0x78f,0x78f,0x78f,0x78f,0x78f,0x78f,0x78f,0x78f,0x78f,0x78f,0x78f,0x78f,0x78f,0x78f,0x78f,
-0x78f,0x78f,0x78f,0x75c,0x777,0x756,0x77d,0x780,0x77a,0x792,0x792,0x792,0x792,0x792,0x792,0x78c,
-0x78c,0x78c,0x78c,0x78c,0x78c,0x78c,0x78c,0x78c,0x78c,0x78c,0x78c,0x78c,0x78c,0x78c,0x78c,0x78c,
-0x78c,0x78c,0x78c,0x75c,0x777,0x756,0x777,0xc48,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,
+0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x74d,0x8ca,0x8ca,
+0x753,0x8dc,0x8df,0x8e5,0x80a,0x816,0x8fa,0x813,0x8d3,0x8d0,0x8d3,0x8d0,0x8d9,0x8d6,0x8d9,0x8d6,
+0x8d3,0x8d0,0x810,0x8e5,0x8d3,0x8d0,0x8d3,0x8d0,0x8d3,0x8d0,0x8d3,0x8d0,0x8eb,0x8f1,0x8ee,0x8ee,
+0x759,0x795,0x795,0x795,0x795,0x795,0x795,0x78f,0x78f,0x78f,0x78f,0x78f,0x78f,0x78f,0x78f,0x78f,
+0x78f,0x78f,0x78f,0x78f,0x78f,0x78f,0x78f,0x78f,0x78f,0x78f,0x78f,0x75c,0x777,0x756,0x77d,0x780,
+0x77a,0x792,0x792,0x792,0x792,0x792,0x792,0x78c,0x78c,0x78c,0x78c,0x78c,0x78c,0x78c,0x78c,0x78c,
+0x78c,0x78c,0x78c,0x78c,0x78c,0x78c,0x78c,0x78c,0x78c,0x78c,0x78c,0x75c,0x777,0x756,0x777,0xc4b,
+0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,
0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,
-0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x7f8,0x1293,0x1293,0x1293,0x1293,0x1293,0x7fb,
-0x810,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x813,0x933,0x933,0x933,0x933,0x819,0x819,
-0x8e8,0x8f7,0x8f7,0x8f7,0x8f7,0x8f4,0x80d,0x8e2,0xb19,0xb19,0xb19,0xc5a,0xc78,0xc75,0xb37,0x8b8,
-0x81f,0x81c,0x81f,0x822,0x81c,0x81f,0x81c,0x81f,0x81c,0x81f,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,
-0x81f,0x81f,0x81c,0x81f,0x81f,0x81c,0x81f,0x81f,0x81c,0x81f,0x81f,0x81c,0x81f,0x81f,0x81c,0x81c,
-0xc7b,0x831,0x82b,0x831,0x82b,0x831,0x82b,0x831,0x82b,0x831,0x82b,0x82b,0x82e,0x82b,0x82e,0x82b,
-0x82e,0x82b,0x82e,0x82b,0x82e,0x82b,0x82e,0x82b,0x82e,0x82b,0x82e,0x82b,0x82e,0x82b,0x82e,0x82b,
-0x82e,0x82b,0x82e,0x831,0x82b,0x82e,0x82b,0x82e,0x82b,0x82e,0x82b,0x82b,0x82b,0x82b,0x82b,0x82b,
-0x82e,0x82e,0x82b,0x82e,0x82e,0x82b,0x82e,0x82e,0x82b,0x82e,0x82e,0x82b,0x82e,0x82e,0x82b,0x82b,
-0x82b,0x82b,0x82b,0x831,0x82b,0x831,0x82b,0x831,0x82b,0x82b,0x82b,0x82b,0x82b,0x82b,0x831,0x82b,
-0x82b,0x82b,0x82b,0x82b,0x82e,0x831,0x831,0x82e,0x82e,0x82e,0x82e,0x900,0x903,0x834,0x837,0xc63,
+0x7f8,0x7f8,0x1299,0x1299,0x1299,0x1299,0x1299,0x7fb,0x810,0x813,0x813,0x813,0x813,0x813,0x813,0x813,
+0x813,0x813,0x933,0x933,0x933,0x933,0x819,0x819,0x8e8,0x8f7,0x8f7,0x8f7,0x8f7,0x8f4,0x80d,0x8e2,
+0xb1c,0xb1c,0xb1c,0xc5d,0xc7b,0xc78,0xb3a,0x8b8,0x81f,0x81c,0x81f,0x822,0x81c,0x81f,0x81c,0x81f,
+0x81c,0x81f,0x81c,0x81c,0x81c,0x81c,0x81c,0x81c,0x81f,0x81f,0x81c,0x81f,0x81f,0x81c,0x81f,0x81f,
+0x81c,0x81f,0x81f,0x81c,0x81f,0x81f,0x81c,0x81c,0xc7e,0x831,0x82b,0x831,0x82b,0x831,0x82b,0x831,
+0x82b,0x831,0x82b,0x82b,0x82e,0x82b,0x82e,0x82b,0x82e,0x82b,0x82e,0x82b,0x82e,0x82b,0x82e,0x82b,
+0x82e,0x82b,0x82e,0x82b,0x82e,0x82b,0x82e,0x82b,0x82e,0x82b,0x82e,0x831,0x82b,0x82e,0x82b,0x82e,
+0x82b,0x82e,0x82b,0x82b,0x82b,0x82b,0x82b,0x82b,0x82e,0x82e,0x82b,0x82e,0x82e,0x82b,0x82e,0x82e,
+0x82b,0x82e,0x82e,0x82b,0x82e,0x82e,0x82b,0x82b,0x82b,0x82b,0x82b,0x831,0x82b,0x831,0x82b,0x831,
+0x82b,0x82b,0x82b,0x82b,0x82b,0x82b,0x831,0x82b,0x82b,0x82b,0x82b,0x82b,0x82e,0x831,0x831,0x82e,
+0x82e,0x82e,0x82e,0x900,0x903,0x834,0x837,0xc66,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,
0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,
+0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x840,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,
0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,
-0x840,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,
-0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x83d,0x849,0x849,0x849,0x849,
+0x83d,0x83d,0x83d,0x83d,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,
0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,
-0x849,0x849,0x849,0x849,0x849,0x849,0x849,0x849,0xd5f,0xd5f,0xe8e,0x843,0x90c,0x90c,0x90c,0x90c,
-0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0xd59,0xd59,0xd59,0xd59,0x84c,0x84c,0x84c,0x84c,
+0xd62,0xd62,0xe91,0x843,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,
+0xd5c,0xd5c,0xd5c,0xd5c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,
0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,
-0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x84c,0x1a58,0x912,0x912,0x912,0x912,
-0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x84f,0x84f,0x84f,
-0x84f,0x84f,0x84f,0xd62,0xd62,0xd62,0xd62,0x915,0x915,0x915,0x915,0x915,0x84f,0x84f,0x84f,0x84f,
+0x84c,0x84c,0x84c,0x1a6a,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,
+0x912,0x912,0x912,0x912,0x912,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0xd65,0xd65,0xd65,0xd65,0x915,
+0x915,0x915,0x915,0x915,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,
0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,
-0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0xd62,0xd62,
-0x852,0x852,0x852,0x852,0x852,0x852,0x852,0x852,0x852,0x852,0x852,0x852,0x852,0x852,0x852,0x852,
+0x84f,0x84f,0x84f,0x84f,0x84f,0x84f,0xd65,0xd65,0x852,0x852,0x852,0x852,0x852,0x852,0x852,0x852,
0x852,0x852,0x852,0x852,0x852,0x852,0x852,0x852,0x852,0x852,0x852,0x852,0x852,0x852,0x852,0x852,
-0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,
+0x852,0x852,0x852,0x852,0x852,0x852,0x852,0x852,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,
0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,
-0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,
-0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,0xe91,
-0x1104,0x1104,0x1104,0x1104,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,
+0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,0x855,
+0x855,0x855,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,
+0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0x110a,0x110a,0x110a,0x110a,0x858,0x858,0x858,0x858,
0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,
-0x858,0x858,0x858,0x858,0x858,0x858,0x85b,0x85b,0x858,0x85b,0x858,0x85b,0x85b,0x858,0x858,0x858,
-0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x85b,0x858,0x85b,0x858,0x85b,0x85b,0x858,0x858,0x85b,
-0x85b,0x85b,0x858,0x858,0x858,0x858,0x1497,0x1497,0xc6c,0xc6c,0xc6c,0xc6c,0xc6c,0xc6c,0xc6c,0xc6c,
-0xc6c,0xc6c,0xc6c,0xc6c,0xc6c,0xc6c,0xc6c,0xc6c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,
+0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x85b,0x85b,
+0x858,0x85b,0x858,0x85b,0x85b,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x858,0x85b,
+0x858,0x85b,0x858,0x85b,0x85b,0x858,0x858,0x85b,0x85b,0x85b,0x858,0x858,0x858,0x858,0x14a0,0x14a0,
+0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,
+0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,
0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,
-0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x90c,0x12d2,0x12d2,0x12d2,0x12d2,0x127b,0x127b,0x127b,0x127b,
-0x127b,0x127b,0x127b,0x127b,0xd59,0xc66,0xc66,0xc66,0xc66,0xc66,0xc66,0xc66,0xc66,0xc66,0xc66,0xc66,
-0xc66,0xc66,0xc66,0xc66,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,
+0x12d8,0x12d8,0x12d8,0x12d8,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0x1281,0xd5c,0xc69,0xc69,0xc69,
+0xc69,0xc69,0xc69,0xc69,0xc69,0xc69,0xc69,0xc69,0xc69,0xc69,0xc69,0xc69,0x90f,0x90f,0x90f,0x90f,
0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,
-0x90f,0x90f,0x90f,0x90f,0x90f,0xc66,0xc66,0xc66,0xc66,0xc66,0xc66,0xc66,0xc66,0xc66,0xc66,0xc66,
-0xc66,0xc66,0xc66,0xc66,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,
+0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0x90f,0xc69,0xc69,0xc69,
+0xc69,0xc69,0xc69,0xc69,0xc69,0xc69,0xc69,0xc69,0xc69,0xc69,0xc69,0xc69,0x912,0x912,0x912,0x912,
0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,
-0x912,0x912,0x912,0xd62,0x99c,0x97e,0x97e,0x97e,0x97e,0x978,0x97e,0x97e,0x990,0x97e,0x97e,0x97b,
-0x987,0x98d,0x98d,0x98d,0x98d,0x98d,0x990,0x978,0x984,0x978,0x978,0x978,0x96c,0x96c,0x978,0x978,
-0x978,0x978,0x978,0x978,0x993,0x993,0x993,0x993,0x993,0x993,0x993,0x993,0x993,0x993,0x978,0x978,
-0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x97b,0x96c,0x978,0x96c,0x978,0x96c,0x98a,0x981,
-0x98a,0x981,0x999,0x999,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,
+0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0x912,0xd65,0x99c,0x97e,0x97e,0x97e,
+0x97e,0x978,0x97e,0x97e,0x990,0x97e,0x97e,0x97b,0x987,0x98d,0x98d,0x98d,0x98d,0x98d,0x990,0x978,
+0x984,0x978,0x978,0x978,0x96c,0x96c,0x978,0x978,0x978,0x978,0x978,0x978,0x993,0x993,0x993,0x993,
+0x993,0x993,0x993,0x993,0x993,0x993,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,0x978,
+0x97b,0x96c,0x978,0x96c,0x978,0x96c,0x98a,0x981,0x98a,0x981,0x999,0x999,0x9a8,0x9a8,0x9a8,0x9a8,
0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,
-0x9a8,0x9a8,0x9a8,0x9a8,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,
+0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9a8,0x9ab,0x9ab,0x9ab,0x9ab,
0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,
-0x9ab,0x9ab,0x9ab,0x9ab,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,
+0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ab,0x9ae,0x9ae,0x9ae,0x9ae,
0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,
-0x9ae,0x9ae,0x9ae,0x9ae,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,
+0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9ae,0x9b7,0x9b7,0x9b7,0x9b7,
0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,
-0x9b7,0x9b7,0x9b1,0x9b1,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,
+0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b1,0x9b1,0x9ba,0x9ba,0x9ba,0x9ba,
0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,
-0x9ba,0x9ba,0x9b4,0x9b4,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,
+0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9b4,0x9b4,0x9b7,0x9b7,0x9b7,0x9b7,
0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,
-0x9b7,0x9b7,0x9b7,0x9b7,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,
+0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9b7,0x9ba,0x9ba,0x9ba,0x9ba,
0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,
-0x9ba,0x9ba,0x9ba,0x9ba,0x9bd,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,
+0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9ba,0x9bd,0x9c0,0x9c0,0x9c0,
+0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,
+0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9bd,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,
0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,
-0x9bd,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,
-0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0x9c0,0xa4d,0xa4d,0xfc3,0xa4d,
-0xa4d,0xa4d,0xa50,0xa4d,0xfc3,0xa4d,0xa4d,0xfba,0xa47,0xa3b,0xa3b,0xa3b,0xa3b,0xa4a,0xa3b,0xfab,
-0xfab,0xfab,0xa3b,0xa3e,0xa47,0xa41,0xfb1,0xfbd,0xfbd,0xfab,0xfab,0xfc3,0xb3d,0xb3d,0xb3d,0xb3d,
-0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xb3d,0xa53,0xa53,0xa44,0xa44,0xa44,0xa44,0xa4d,0xa4d,0xa4d,0xa4d,
-0xa4d,0xa4d,0xa4a,0xa4a,0xa3b,0xa3b,0xfc3,0xfc3,0xfc3,0xfc3,0xfab,0xfab,0xa4d,0xa4d,0xa4d,0xa4d,
+0x9c0,0x9c0,0x9c0,0x9c0,0xa4d,0xa4d,0xfc6,0xa4d,0xa4d,0xa4d,0xa50,0xa4d,0xfc6,0xa4d,0xa4d,0xfbd,
+0xa47,0xa3b,0xa3b,0xa3b,0xa3b,0xa4a,0xa3b,0xfae,0xfae,0xfae,0xa3b,0xa3e,0xa47,0xa41,0xfb4,0xfc0,
+0xfc0,0xfae,0xfae,0xfc6,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xb40,0xa53,0xa53,
+0xa44,0xa44,0xa44,0xa44,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4a,0xa4a,0xa3b,0xa3b,0xfc6,0xfc6,
+0xfc6,0xfc6,0xfae,0xfae,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,
0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,
-0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa4d,0xa62,0xa62,0xa62,0xa62,
-0xa62,0xa62,0xa62,0xdb9,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,
+0xa4d,0xa4d,0xa4d,0xa4d,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xdbc,0xa62,0xa62,0xa62,0xa62,
0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,
-0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xdb9,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,
-0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,
+0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xdbc,
+0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,0xa62,
+0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,
0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,
-0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa68,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,
-0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6b,0xa71,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0x113d,
-0x113d,0x113d,0x113d,0x113d,0x113d,0x113d,0x113d,0x113d,0x113a,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,
+0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6b,0xa71,0xa6e,
+0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,0x1143,
+0x1140,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,
0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,
-0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa6e,0xa83,0xa83,0xa83,0xa83,
+0xa6e,0xa6e,0xa6e,0xa6e,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,
0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,
-0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xa83,0xaa7,0xaa7,0xaa7,0xaaa,
-0xaaa,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,
-0xa8f,0xa8f,0xaa4,0xa86,0xa86,0xa86,0xa86,0xa86,0xa86,0xa86,0xaa4,0xaa4,0xaa7,0xaa7,0xaa7,0xaa7,
+0xa83,0xa83,0xa83,0xa83,0xaa7,0xaa7,0xaa7,0xaaa,0xaaa,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,
+0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xa8f,0xa8f,0xaa4,0xa86,0xa86,0xa86,0xa86,0xa86,
+0xa86,0xa86,0xaa4,0xaa4,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,
0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,
-0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xaa7,0xac8,0xac8,0xac8,0xac8,
-0xac8,0xab3,0xab3,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,
-0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,
-0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xacb,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,
-0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,0xac8,
-0xac8,0xac8,0xac8,0xac8,0xaec,0xaec,0xaec,0xaec,0xaec,0xaec,0xaec,0xaec,0xaec,0xaec,0xaec,0xaec,
-0xaec,0xaec,0xaec,0xaec,0xaec,0xaec,0xaec,0xaec,0xaec,0xaec,0xaec,0xaec,0xaec,0xaec,0xaec,0xbe2,
-0xbe2,0xbe2,0xbe2,0xbe2,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,
-0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,0xaf8,
-0xaf8,0xaf8,0xaf8,0xaf8,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,
-0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,0xb0a,
-0xb0a,0xb0a,0xb0a,0xb0a,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,
-0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,0xb10,
-0xb10,0xb10,0xb10,0xb10,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,
-0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0xb1c,0x13a1,0x13a1,0x13a1,0x1ad3,
-0x1ad3,0x1ad3,0x1ad3,0x1ad3,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,
+0xaa7,0xaa7,0xaa7,0xaa7,0xacb,0xacb,0xacb,0xacb,0xacb,0xab6,0xab6,0xacb,0xacb,0xacb,0xacb,0xacb,
+0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,
+0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xace,
+0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,
+0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xacb,0xaef,0xaef,0xaef,0xaef,
+0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,
+0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xaef,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xafb,0xafb,0xafb,0xafb,
+0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,
+0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xafb,0xb0d,0xb0d,0xb0d,0xb0d,
+0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,
+0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb0d,0xb13,0xb13,0xb13,0xb13,
+0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,
+0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb13,0xb1f,0xb1f,0xb1f,0xb1f,
0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,
-0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0xb1f,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,
+0xb1f,0xb1f,0xb1f,0xb1f,0x13aa,0x13aa,0x13aa,0x1ae5,0x1ae5,0x1ae5,0x1ae5,0x1ae5,0xb22,0xb22,0xb22,0xb22,
0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,
-0xb22,0xb22,0xb22,0xb22,0xb22,0xb25,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,
-0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,
-0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb28,0xb28,0xc69,0xc69,0xb28,0xb28,0xb28,0xb28,
-0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xc69,0xb28,0xb28,0xb28,
-0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb28,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,
-0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,
-0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0xb4c,0x14df,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xced,0xced,
-0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,
-0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xb52,0xcea,0xcea,0xd38,0xd38,0xd38,0xd38,
-0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xb55,0xb55,0xb55,0xb55,
+0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0xb22,0x1ae8,0x1ae8,
+0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0x1ae8,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,
+0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb28,0xb25,0xb25,
+0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,
+0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,0xb25,
+0xb2b,0xb2b,0xc6c,0xc6c,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,
+0xb2b,0xb2b,0xb2b,0xb2b,0xc6c,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,0xb2b,
+0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,
+0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0xb4f,0x14e8,
+0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xcf0,0xcf0,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,
0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,
-0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xb55,0xb58,0xb58,0xb58,0xb58,
+0xb55,0xb55,0xced,0xced,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,
+0xd3b,0xd3b,0xd3b,0xd3b,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,
0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,
-0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb58,0xb67,0xb67,0xb67,0xb67,
-0xb67,0xb5e,0xb6a,0xb70,0xb70,0xb70,0xb64,0xb64,0xb64,0xb6d,0xb61,0xb61,0xb61,0xb61,0xb61,0xb5b,
-0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb70,0xb70,0xb70,0xb70,0xb70,0xb64,0xb64,0xb64,0xb64,
-0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,
-0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb67,0xb67,
-0xb70,0xb70,0xb70,0xb64,0xb64,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb70,0xb64,0xb64,0xb64,0xb64,
-0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,
-0xb64,0xb64,0xb70,0xb70,0xb70,0xb70,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,
-0xb64,0xb64,0xb64,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,
-0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,
-0xb64,0xb64,0xb64,0xb64,0xb64,0xb64,0x16e3,0x16e3,0xb7c,0xb73,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,
-0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,
-0xb79,0xb79,0xb79,0xb73,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
-0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
-0xb7c,0xb7c,0xb7c,0xb73,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,
-0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb73,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,
+0xb58,0xb58,0xb58,0xb58,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,
+0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,0xb5b,
+0xb5b,0xb5b,0xb5b,0xb5b,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,0xb61,0xb6d,0xb73,0xb73,0xb73,0xb67,0xb67,
+0xb67,0xb70,0xb64,0xb64,0xb64,0xb64,0xb64,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb5e,0xb73,
+0xb73,0xb73,0xb73,0xb73,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,
+0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,
+0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb6a,0xb6a,0xb73,0xb73,0xb73,0xb67,0xb67,0xb73,0xb73,0xb73,
+0xb73,0xb73,0xb73,0xb73,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,
+0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb73,0xb73,0xb73,0xb73,0xb67,0xb67,
+0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb6a,0xb6a,0xb6a,0xb6a,0xb6a,
+0xb6a,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,
+0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0xb67,0x16f2,0x16f2,
+0xb7f,0xb76,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
+0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb76,0xb7c,0xb7c,0xb7c,0xb7c,
+0xb7c,0xb7c,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,
+0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb76,0xb7c,0xb7c,0xb7c,0xb7c,
0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
-0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb73,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,
-0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb76,0xb76,0xb76,0xb76,
-0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,
-0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb76,0xb7c,0xb7c,0xb7c,0xb7c,
+0xb7c,0xb76,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,
+0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb76,0xb7c,0xb7c,
0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
-0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,
-0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb7c,0xb7c,0xb7c,0xb7c,
-0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
-0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,
+0xb7c,0xb7c,0xb7c,0xb7c,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,
0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,0xb79,
+0xb79,0xb79,0xb79,0xb79,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,
+0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7c,0xb7c,
+0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
0xb7c,0xb7c,0xb7c,0xb7c,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,
-0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,
-0xb7f,0xb7f,0xb7f,0xb7f,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,
-0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,
-0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0xb85,0x1adc,0x1adc,0x1adc,0x1adc,0x1adc,0x1adc,0x1adc,0x1ba8,0x1ba8,
-0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,
+0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7f,0xb7c,0xb7c,
+0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,
+0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7c,0xb7f,0xb7f,0xb7f,0xb7f,0xb82,0xb82,0xb82,0xb82,
+0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,
+0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb82,0xb88,0xb88,0xb88,0xb88,
0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,
-0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,
-0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbdf,0xbe2,0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,
-0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,0xbdf,0xce1,0xce4,0xdd1,0xdd1,0xdd1,0xdd1,0xdd1,0xdd1,0xdd1,
-0xdd1,0xdd1,0xdd1,0xdd1,0xee8,0xee8,0xee8,0xee8,0xbee,0xbee,0xbee,0xbee,0xbee,0xbee,0xbee,0xbee,
-0xbee,0xbee,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xce7,0xdd4,0xe88,0xdd4,0xdd4,0xdd4,0xdd4,
-0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xfd8,0x1272,0x1272,0xddd,0xddd,0xddd,0xddd,0xddd,0xde3,0xde0,0xefa,
-0xefa,0xefa,0xefa,0x13e0,0xfea,0x13e0,0x132c,0x132c,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,
-0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc21,0xc4e,0xc4b,0xc4e,0xc4b,0xc4e,0xc4b,
-0x10fe,0x10fb,0xff0,0xfed,0xc24,0xc24,0xc24,0xc24,0xc24,0xc24,0xc24,0xc24,0xc24,0xc24,0xc24,0xc24,
-0xc24,0xc24,0xc24,0xc24,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,
-0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,
-0xc27,0xc27,0xc27,0xc27,0xc2a,0xc2a,0xc2a,0xc30,0xc2d,0xc54,0xc51,0xc30,0xc2d,0xc30,0xc2d,0xc30,
-0xc2d,0xc30,0xc2d,0xc30,0xc2d,0xc30,0xc2d,0xc30,0xc2d,0xc30,0xc2d,0xc30,0xc2d,0xc2a,0xc2a,0xc2a,
-0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,
+0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0xb88,0x1aee,
+0x1aee,0x1aee,0x1aee,0x1aee,0x1aee,0x1aee,0x1bba,0x1bba,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,
+0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,
+0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xb8b,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,
+0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe5,0xbe2,0xbe5,
+0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xbe2,0xce4,
+0xce7,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xeeb,0xeeb,0xeeb,0xeeb,
+0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xbf1,0xcea,0xcea,0xcea,0xcea,0xcea,0xcea,
+0xcea,0xcea,0xdd7,0xe8b,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xfdb,0x1278,0x1278,
+0xde0,0xde0,0xde0,0xde0,0xde0,0xde6,0xde3,0xefd,0xefd,0xefd,0xefd,0x13e9,0xfed,0x13e9,0x1332,0x1332,
+0xc24,0xc24,0xc24,0xc24,0xc24,0xc24,0xc24,0xc24,0xc24,0xc24,0xc24,0xc24,0xc24,0xc24,0xc24,0xc24,
+0xc24,0xc24,0xc51,0xc4e,0xc51,0xc4e,0xc51,0xc4e,0x1104,0x1101,0xff3,0xff0,0xc27,0xc27,0xc27,0xc27,
+0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc27,0xc2a,0xc2a,0xc2a,0xc2a,
0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,
-0xc30,0xc2d,0xc30,0xc2d,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,
-0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,
-0xc30,0xc2d,0xc2a,0xc2a,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,
-0xc39,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,
-0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,
-0xc33,0xc33,0xc33,0xc33,0xc39,0xc39,0xc39,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,
-0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,0xc33,
-0xc33,0xc33,0xc33,0xc33,0xc36,0xc33,0xc33,0xc33,0xc6c,0xc6c,0xc6c,0xc6c,0xc6c,0xc6c,0xc6c,0xc6c,
-0xc6c,0xc6c,0xc6c,0xc6c,0xc6c,0xc6c,0xc6c,0xc6c,0xc6c,0xc6c,0xc6c,0xc6c,0xc6c,0xc6c,0xc6c,0xc6c,
-0xc6c,0xc6c,0xc6c,0xc6c,0xc6c,0xc6c,0xc6c,0xc6c,0xce7,0xd53,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,
-0xdd4,0xdd4,0xe88,0xe88,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xdd4,0xeeb,0xfd8,0xfd8,0xfd8,0xfd8,0xfd8,
-0xfd8,0xfd8,0xfd8,0xfd8,0xfd8,0x1296,0x1296,0x1275,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,
-0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,
-0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd0b,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd11,0xd11,
-0xd11,0xd11,0xd11,0xd0e,0xd23,0xd23,0xd23,0xd1d,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,
-0xd23,0xd23,0xd23,0xd1d,0xd23,0xd23,0xd23,0xd23,0xd17,0xd17,0xd20,0xd20,0xd20,0xd20,0xd14,0xd14,
-0xd14,0xd14,0xd14,0xd1a,0xde9,0xde9,0xde9,0xde9,0xde9,0xde9,0xde9,0xde9,0xde9,0xde9,0xde9,0xde9,
-0xde6,0xde9,0xde9,0xde9,0xde9,0xde9,0xde9,0xde9,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,
-0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd1d,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,0xd23,
-0xd23,0xd23,0xd23,0xd23,0xd23,0xd17,0xd17,0xd17,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,
-0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,
-0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd1a,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,
-0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xefd,0xefd,0xefd,0xefd,
-0xefd,0xefd,0xefd,0x1107,0x1107,0xff3,0xff3,0xff3,0xd29,0xd29,0xd29,0xd29,0xd29,0xd29,0xd29,0xd29,
-0xd29,0xd29,0xd29,0xd29,0xd29,0xd29,0xd29,0xd29,0xd29,0xd29,0xd29,0xd29,0xd29,0xd29,0xd29,0xd29,
-0xd29,0xd29,0xd29,0xd29,0xd29,0xd29,0xd29,0xd29,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,
-0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,
-0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd2f,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,
-0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,
-0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd38,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,
-0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,
-0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd44,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,
-0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,
-0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xd50,0xdf2,0xdf2,0xdf2,0xdf2,0xdf2,0xdf2,0xdf2,0xdf2,
-0xdf2,0xdf2,0xdf2,0xdf2,0xdf2,0xdf2,0xdf2,0xdf2,0xdf2,0xdf2,0xdf2,0xdf2,0xdf2,0xdf2,0xdf2,0xdf2,
-0xdf2,0xdf2,0xdf2,0xdf2,0xdf2,0xdf2,0xdf2,0xdf2,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,
-0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf5,0xdf5,0xdf5,
-0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,
-0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,
-0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xeb8,0xeb8,0xe0a,0xe0a,0xf00,0xf00,0xf00,0xf00,
-0xf00,0xf00,0xf00,0xfff,0xfff,0x1002,0xfff,0xfff,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,
-0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xe19,0xe16,0xe19,0xe16,0xe19,0xe16,0xe19,0xe16,
-0xe19,0xe16,0xe19,0xe16,0xe19,0xe16,0xe19,0xe16,0xe19,0xe16,0xe19,0xe16,0xe19,0xe16,0xe19,0xe16,
-0xe19,0xe16,0xe19,0xe16,0xe19,0xe16,0xe19,0xe16,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,
-0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,
-0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe25,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,
-0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0x1b1e,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,
+0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2a,0xc2d,0xc2d,0xc2d,0xc33,
+0xc30,0xc57,0xc54,0xc33,0xc30,0xc33,0xc30,0xc33,0xc30,0xc33,0xc30,0xc33,0xc30,0xc33,0xc30,0xc33,
+0xc30,0xc33,0xc30,0xc33,0xc30,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,
+0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,
+0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc33,0xc30,0xc33,0xc30,0xc2d,0xc2d,0xc2d,0xc2d,
+0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,
+0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc2d,0xc33,0xc30,0xc2d,0xc2d,0xc36,0xc36,0xc36,0xc36,
+0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc3c,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,
+0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,
+0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc3c,0xc3c,0xc3c,0xc36,
+0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,
+0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc36,0xc39,0xc36,0xc36,0xc36,
+0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,
+0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,0xc6f,
+0xcea,0xd56,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xdd7,0xe8b,0xe8b,0xdd7,0xdd7,0xdd7,0xdd7,
+0xdd7,0xdd7,0xeee,0xfdb,0xfdb,0xfdb,0xfdb,0xfdb,0xfdb,0xfdb,0xfdb,0xfdb,0xfdb,0x129c,0x129c,0x127b,
+0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,
+0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,0xd0e,
+0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd14,0xd14,0xd14,0xd14,0xd14,0xd11,0xd26,0xd26,0xd26,0xd20,
+0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd20,0xd26,0xd26,0xd26,0xd26,
+0xd1a,0xd1a,0xd23,0xd23,0xd23,0xd23,0xd17,0xd17,0xd17,0xd17,0xd17,0xd1d,0xdec,0xdec,0xdec,0xdec,
+0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xde9,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,0xdec,
+0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd20,0xd26,
+0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd26,0xd1a,0xd1a,0xd1a,
+0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,
+0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,0xd1d,
+0xd29,0xd29,0xd29,0xd29,0xd29,0xd29,0xd29,0xd29,0xd29,0xd29,0xd29,0xd29,0xd29,0xd29,0xdef,0xdef,
+0xdef,0xdef,0xdef,0xdef,0xf00,0xf00,0xf00,0xf00,0xf00,0xf00,0xf00,0x110d,0x110d,0xff6,0xff6,0xff6,
+0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,
+0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,0xd2c,
+0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,
+0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,0xd32,
+0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,
+0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,0xd3b,
+0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,
+0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,0xd47,
+0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,
+0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,0xd53,
+0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,
+0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,0xdf5,
+0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,
+0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,0xdf8,
+0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,
+0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,0xdfb,
+0xebb,0xebb,0xe0d,0xe0d,0xf03,0xf03,0xf03,0xf03,0xf03,0xf03,0xf03,0x1002,0x1002,0x1005,0x1002,0x1002,
+0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,
+0xe1c,0xe19,0xe1c,0xe19,0xe1c,0xe19,0xe1c,0xe19,0xe1c,0xe19,0xe1c,0xe19,0xe1c,0xe19,0xe1c,0xe19,
+0xe1c,0xe19,0xe1c,0xe19,0xe1c,0xe19,0xe1c,0xe19,0xe1c,0xe19,0xe1c,0xe19,0xe1c,0xe19,0xe1c,0xe19,
+0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,
0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,
-0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0xe28,0x1b1b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,
+0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0x1b30,
0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,
-0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,0xeb2,
-0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xe43,0xf03,
-0xf03,0xf03,0xf03,0x1005,0x1005,0x1005,0x1005,0x1005,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,
-0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,
-0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe4c,0xe55,0xe55,0xe55,0xe55,0xe55,0xe55,0xe55,0xe55,
-0xe55,0xe55,0xe55,0xe55,0xe55,0xe55,0xe55,0xe55,0xe55,0xe55,0xe55,0xe55,0xe55,0xe55,0xe55,0xe55,
-0xe55,0xe55,0xe55,0xe55,0xe55,0xe55,0xe55,0xe55,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,
+0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0xe2b,0x1b2d,
+0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,
+0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,0xe2e,
+0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xe46,0xe46,0xe46,0xe46,0xe46,0xe46,0xe46,0xe46,
+0xe46,0xe46,0xe46,0xe46,0xe46,0xe46,0xe46,0xf06,0xf06,0xf06,0xf06,0x1008,0x1008,0x1008,0x1008,0x1008,
+0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,
+0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,0xe4f,
+0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,
+0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,0xe58,
+0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,
+0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe61,0xe5b,
0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,
-0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe58,0xe5b,0xe5b,0xe5b,0xe5b,0xe5b,0xe5b,0xe5b,0xe5b,
-0xe5b,0xe5b,0xe5b,0xe5b,0xe5b,0xe5b,0xe5b,0xe5b,0xe5b,0xe5b,0xe5b,0xe5b,0xe5b,0xe5b,0xe5b,0xe5b,
-0xe5b,0xe5b,0xe5b,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,
-0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe64,0xe61,0xe6a,
-0x1011,0x100b,0x101a,0x1008,0xe67,0xe67,0x1008,0x1008,0xe79,0xe79,0xe6d,0xe79,0xe79,0xe79,0xe70,0xe79,
-0xe79,0xe79,0xe79,0xe6d,0xe79,0xe79,0xe79,0xe79,0xe79,0xe79,0xe79,0xe79,0xe79,0xe79,0xe79,0xe79,
-0xe79,0xe79,0xe79,0xe79,0xe79,0xe79,0xe79,0xe79,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,
+0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe5e,0xe61,0xe61,0xe61,0xe61,0xe61,
+0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe6a,0xe67,0xe67,
+0xe67,0xe67,0xe67,0xe67,0xe67,0xe67,0xe64,0xe6d,0x1014,0x100e,0x101d,0x100b,0xe6a,0xe6a,0x100b,0x100b,
+0xe7c,0xe7c,0xe70,0xe7c,0xe7c,0xe7c,0xe73,0xe7c,0xe7c,0xe7c,0xe7c,0xe70,0xe7c,0xe7c,0xe7c,0xe7c,
0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,
-0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe7c,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,
-0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,
-0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xe94,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,
-0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0xeb5,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,
-0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0x1110,0xee8,0xee8,0xee8,0xee5,0xee5,0xee5,0xee5,0xee5,
-0x1149,0x1392,0x1392,0x1392,0x1392,0x1317,0x1317,0x1317,0x1395,0x131a,0x131a,0x1395,0x14d6,0x14d6,0x14d6,0x14d6,
-0x14d6,0x14d6,0x14d6,0x1797,0x1797,0x1797,0x1797,0x185d,0xefd,0xefd,0xefd,0xefd,0xff3,0xff3,0xff3,0xff3,
-0xff3,0xff3,0xff3,0xff3,0xff3,0xff3,0xff3,0xff3,0xff6,0xff6,0xff6,0xff6,0xff6,0xff6,0xff6,0xff6,
-0xff6,0xff6,0xff6,0xff6,0xff6,0xff6,0xff6,0xff6,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0xffc,0x14f1,
-0x14f1,0x14f1,0x14f1,0x14f1,0x14f1,0x14f1,0x14f1,0x14f1,0x14f1,0x14f1,0x14f1,0x14f1,0x14f1,0x14f4,0x1866,0x1866,
-0x18e7,0x1866,0x1bc6,0x179d,0x132f,0x1152,0xf00,0xf00,0xf1e,0xf1e,0xf1e,0xf1e,0xf30,0xf39,0xf3c,0xf39,
-0xf3c,0xf39,0xf3c,0xf39,0xf3c,0xf39,0xf3c,0xf39,0xf39,0xf39,0xf3c,0xf39,0xf39,0xf39,0xf39,0xf39,
-0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,0xf39,
-0xf21,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf1e,0xf33,0xf1e,0xf33,0xf30,0xf30,0xf45,0xf42,0xf45,0xf45,
-0xf45,0xf42,0xf42,0xf45,0xf42,0xf45,0xf42,0xf45,0xf42,0x102c,0x102c,0x102c,0x1167,0x1023,0x102c,0x1023,
-0xf42,0xf45,0xf42,0xf42,0x1023,0x1023,0x1023,0x1023,0x1026,0x1029,0x1167,0x1167,0xf48,0xf48,0x103e,0x1035,
-0x103e,0x1035,0x103e,0x1035,0x103e,0x1035,0x103e,0x1035,0x103e,0x1035,0x103e,0x1035,0x1035,0x1035,0x103e,0x1035,
-0x103e,0x1035,0x103e,0x1035,0x103e,0x1035,0x103e,0x1035,0x103e,0x1035,0x103e,0x1035,0xf4e,0xf4e,0xf4e,0xf4e,
-0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,
-0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf4e,0xf5d,0xf5d,0xf5d,0xf5d,
-0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,
-0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0xf5d,0x1512,
-0x1512,0x1512,0x1512,0x1512,0x1512,0x1512,0x1512,0x1512,0x1512,0x1512,0x1512,0x1512,0x1512,0x1512,0x1512,0x1512,
-0xf63,0xf63,0xf63,0xf63,0xf63,0xf63,0xf63,0xf63,0xf63,0xf63,0xf63,0xf63,0xf63,0xf63,0xf63,0xf63,
-0xf63,0xf63,0xf63,0xf63,0xf63,0xf63,0xf63,0xf63,0xf63,0xf63,0xf63,0xf63,0xf63,0xf63,0xf63,0xf63,
-0xfab,0xfc3,0xfba,0xfc0,0xfc0,0xfc3,0xfc3,0xfba,0xfba,0xfc0,0xfc0,0xfc0,0xfc0,0xfc0,0xfc3,0xfc3,
-0xfc3,0xfab,0xfab,0xfab,0xfab,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,
-0xfc3,0xfc3,0xfab,0xfba,0xfbd,0xfab,0xfab,0xfc0,0xfc0,0xfc0,0xfc0,0xfc0,0xfc0,0xfae,0xfc3,0xfc0,
-0xfb7,0xfb7,0xfb7,0xfb7,0xfb7,0xfb7,0xfb7,0xfb7,0xfb7,0xfb7,0x1131,0x1131,0x112e,0x112b,0xfb4,0xfb4,
-0xfdb,0xfdb,0xfdb,0xfdb,0x1296,0x1296,0x1275,0x1275,0x1275,0x1272,0x1272,0x1272,0x1272,0x1275,0x1398,0x1275,
-0x1275,0x1275,0x1272,0x1275,0x1296,0x1272,0x1272,0x1272,0x1275,0x1275,0x1272,0x1272,0x1275,0x1272,0x1272,0x1275,
-0xff6,0xff6,0xff6,0xff6,0xff6,0xff3,0xff3,0xff6,0xff6,0xff6,0xff6,0xff6,0xff6,0x14eb,0x14eb,0x14eb,
-0x1107,0xff3,0xff3,0xff3,0xff3,0x12a2,0x127e,0x127e,0x127e,0x127e,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,
-0x1017,0x1017,0x1014,0x100e,0x1014,0x100e,0x1014,0x100e,0x1014,0x100e,0x100b,0x100b,0x100b,0x100b,0x1020,0x101d,
-0x100b,0x1164,0x13ec,0x13ef,0x13ef,0x13ec,0x13ec,0x13ec,0x13ec,0x13ec,0x13f2,0x13f2,0x1506,0x14fa,0x14fa,0x14f7,
-0x103e,0x1035,0x103e,0x1035,0x103e,0x1035,0x103e,0x1035,0x1032,0x102f,0x102f,0x103e,0x1035,0x133b,0x1338,0x16ec,
-0x133b,0x1338,0x13fb,0x13f8,0x1509,0x1509,0x150f,0x1509,0x150f,0x1509,0x150f,0x1509,0x150f,0x1509,0x150f,0x1509,
-0x103e,0x1035,0x103e,0x1035,0x103e,0x1035,0x103e,0x1035,0x103e,0x1035,0x103e,0x1035,0x103e,0x1035,0x103e,0x1035,
-0x103e,0x1035,0x103e,0x1035,0x103e,0x1035,0x103e,0x1035,0x103e,0x1035,0x103e,0x1035,0x103e,0x1035,0x103e,0x1035,
-0x1038,0x1035,0x1035,0x1035,0x1035,0x1035,0x1035,0x1035,0x1035,0x103e,0x1035,0x103e,0x1035,0x103e,0x103e,0x1035,
-0x1041,0x1041,0x1047,0x104d,0x104d,0x104d,0x104d,0x104d,0x104d,0x104d,0x104d,0x104d,0x104d,0x104d,0x104d,0x104d,
-0x104d,0x104d,0x104d,0x104d,0x104d,0x104d,0x104d,0x104d,0x104d,0x104d,0x104d,0x104d,0x104d,0x104d,0x104d,0x104d,
-0x104d,0x1047,0x1041,0x1041,0x1041,0x1041,0x1047,0x1047,0x1041,0x1041,0x104a,0x1404,0x1401,0x1401,0x104d,0x104d,
-0x1044,0x1044,0x1044,0x1044,0x1044,0x1044,0x1044,0x1044,0x1044,0x1044,0x1407,0x1407,0x1407,0x1407,0x1407,0x1407,
-0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,
-0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,0x1062,
-0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,
-0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106b,0x106e,0x106e,0x106e,0x1071,0x106e,0x106e,0x1074,0x1074,
-0x1077,0x1077,0x1077,0x1077,0x1077,0x1077,0x1077,0x1077,0x1077,0x1077,0x1077,0x1077,0x1077,0x1077,0x1077,0x1077,
-0x1077,0x1077,0x1077,0x1077,0x1077,0x1077,0x1077,0x1077,0x1077,0x1077,0x1077,0x1077,0x1077,0x1077,0x1077,0x1077,
-0x1080,0x1080,0x1080,0x1080,0x1080,0x1080,0x1080,0x1080,0x1080,0x1080,0x1080,0x1080,0x1083,0x107a,0x1089,0x1086,
-0x1080,0x1080,0x1080,0x1080,0x1080,0x1080,0x1080,0x1080,0x1080,0x1080,0x1080,0x1080,0x1080,0x1080,0x1080,0x1080,
-0x1080,0x1080,0x1080,0x1080,0x1080,0x1080,0x1080,0x1080,0x1080,0x1080,0x1080,0x1080,0x1080,0x1080,0x1080,0x1080,
-0x1341,0x133e,0x109b,0x1095,0x109b,0x1095,0x109b,0x1095,0x109b,0x1095,0x109b,0x1095,0x109b,0x1095,0x1098,0x1119,
-0x108c,0x108c,0x108c,0x1092,0x140a,0x140a,0x140a,0x140a,0x140a,0x140a,0x140a,0x140a,0x108f,0x108f,0x1092,0x109e,
-0x109b,0x1095,0x109b,0x1095,0x109b,0x1095,0x109b,0x1095,0x109b,0x1095,0x109b,0x1095,0x109b,0x1095,0x109b,0x1095,
-0x109b,0x1095,0x109b,0x1095,0x109b,0x1095,0x109b,0x1095,0x109b,0x1095,0x109b,0x1095,0x109b,0x1095,0x109b,0x1095,
-0x151e,0x151b,0x151e,0x151b,0x1521,0x1521,0x16f5,0x140a,0x10a7,0x10a7,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,
-0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,
-0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,0x10a7,
-0x10a7,0x10a7,0x10a7,0x10a7,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b0,0x10b0,0x10b0,0x10b0,0x10b0,0x10b3,
-0x10b3,0x10b3,0x110d,0x10bc,0x10cb,0x10cb,0x10cb,0x10cb,0x10cb,0x10cb,0x10cb,0x10cb,0x10cb,0x10cb,0x10cb,0x10cb,
-0x10cb,0x10cb,0x10cb,0x10cb,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6,0x10b6,0x10b9,0x10b9,
-0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,
-0x10b9,0x10b9,0x10b9,0x10b9,0x10da,0x10da,0x10da,0x10da,0x10da,0x10da,0x10da,0x10da,0x10da,0x10da,0x10da,0x10da,
-0x10da,0x10da,0x10da,0x10da,0x10da,0x10da,0x10da,0x10da,0x10da,0x10da,0x10da,0x10da,0x10da,0x10da,0x10da,0x10da,
-0x10da,0x10da,0x10da,0x10da,0x10ec,0x10ec,0x10ec,0x10ec,0x10ec,0x10ec,0x10ec,0x10ec,0x10ec,0x10ec,0x10ec,0x10ec,
-0x10ec,0x10ec,0x10ec,0x10ec,0x10ec,0x10ec,0x10ec,0x10ec,0x10ec,0x10ec,0x10ec,0x10ec,0x10ec,0x10ec,0x10ec,0x10ec,
-0x10ec,0x10ec,0x10ec,0x10ec,0x10f5,0x10f5,0x10f5,0x10f5,0x110a,0x10f5,0x10f5,0x10f5,0x10f5,0x10f5,0x10f5,0x10f5,
-0x10f5,0x10f5,0x10f5,0x10f5,0x10f5,0x10f5,0x10f5,0x10f5,0x10f5,0x10f5,0x10f5,0x10f5,0x10f5,0x10f5,0x10f5,0x10f5,
-0x10f5,0x10f5,0x10f5,0x10f5,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,
-0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,0x10f8,
-0x10f8,0x10f8,0x10f8,0x10f8,0x1104,0x1104,0x1104,0x1104,0x129c,0x129c,0x129c,0x129c,0x129c,0x129c,0x129c,0x129c,
-0x1494,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x18c6,0x18c6,0x18c6,0x18c6,0x18c6,0x18c6,
-0x18c6,0x18c6,0x18c6,0x18c6,0x1179,0x1179,0x1179,0x1179,0x1179,0x1179,0x1179,0x1179,0x1179,0x1179,0x1179,0x1179,
-0x1179,0x1179,0x1179,0x1179,0x1179,0x1179,0x1179,0x1179,0x1179,0x1179,0x1170,0x1170,0x1173,0x1173,0x1179,0x1170,
-0x1170,0x1170,0x1170,0x1170,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,
+0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,
+0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,0xe7f,
+0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,
+0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,0xe97,
+0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,0xeb8,
+0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,0x1113,
+0xeeb,0xeeb,0xeeb,0xee8,0xee8,0xee8,0xee8,0xee8,0x114f,0x139b,0x139b,0x139b,0x139b,0x131d,0x131d,0x131d,
+0x139e,0x1320,0x1320,0x139e,0x14df,0x14df,0x14df,0x14df,0x14df,0x14df,0x14df,0x17a6,0x17a6,0x17a6,0x17a6,0x186c,
+0xf00,0xf00,0xf00,0xf00,0xff6,0xff6,0xff6,0xff6,0xff6,0xff6,0xff6,0xff6,0xff6,0xff6,0xff6,0xff6,
+0xff9,0xff9,0xff9,0xff9,0xff9,0xff9,0xff9,0xff9,0xff9,0xff9,0xff9,0xff9,0xff9,0xff9,0xff9,0xff9,
+0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,
+0x14fa,0x14fa,0x14fa,0x14fa,0x14fa,0x14fd,0x1875,0x1875,0x18f6,0x1875,0x1bd8,0x17ac,0x1335,0x1158,0xf03,0xf03,
+0xf21,0xf21,0xf21,0xf21,0xf33,0xf3c,0xf3f,0xf3c,0xf3f,0xf3c,0xf3f,0xf3c,0xf3f,0xf3c,0xf3f,0xf3c,
+0xf3c,0xf3c,0xf3f,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,
+0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf3c,0xf24,0xf21,0xf21,0xf21,0xf21,0xf21,0xf21,0xf36,
+0xf21,0xf36,0xf33,0xf33,0xf48,0xf45,0xf48,0xf48,0xf48,0xf45,0xf45,0xf48,0xf45,0xf48,0xf45,0xf48,
+0xf45,0x102f,0x102f,0x102f,0x116d,0x1026,0x102f,0x1026,0xf45,0xf48,0xf45,0xf45,0x1026,0x1026,0x1026,0x1026,
+0x1029,0x102c,0x116d,0x116d,0xf4b,0xf4b,0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,
+0x1041,0x1038,0x1041,0x1038,0x1038,0x1038,0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,
+0x1041,0x1038,0x1041,0x1038,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,
+0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,0xf51,
+0xf51,0xf51,0xf51,0xf51,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,
+0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,
+0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0xf60,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,
+0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0x151b,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,
+0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,
+0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xf66,0xfae,0xfc6,0xfbd,0xfc3,0xfc3,0xfc6,0xfc6,0xfbd,
+0xfbd,0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfc6,0xfc6,0xfc6,0xfae,0xfae,0xfae,0xfae,0xfc6,0xfc6,0xfc6,
+0xfc6,0xfc6,0xfc6,0xfc6,0xfc6,0xfc6,0xfc6,0xfc6,0xfc6,0xfc6,0xfae,0xfbd,0xfc0,0xfae,0xfae,0xfc3,
+0xfc3,0xfc3,0xfc3,0xfc3,0xfc3,0xfb1,0xfc6,0xfc3,0xfba,0xfba,0xfba,0xfba,0xfba,0xfba,0xfba,0xfba,
+0xfba,0xfba,0x1137,0x1137,0x1134,0x1131,0xfb7,0xfb7,0xfde,0xfde,0xfde,0xfde,0x129c,0x129c,0x127b,0x127b,
+0x127b,0x1278,0x1278,0x1278,0x1278,0x127b,0x13a1,0x127b,0x127b,0x127b,0x1278,0x127b,0x129c,0x1278,0x1278,0x1278,
+0x127b,0x127b,0x1278,0x1278,0x127b,0x1278,0x1278,0x127b,0xff9,0xff9,0xff9,0xff9,0xff9,0xff6,0xff6,0xff9,
+0xff9,0xff9,0xff9,0xff9,0xff9,0x14f4,0x14f4,0x14f4,0x110d,0xff6,0xff6,0xff6,0xff6,0x12a8,0x1284,0x1284,
+0x1284,0x1284,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x101a,0x101a,0x1017,0x1011,0x1017,0x1011,0x1017,0x1011,
+0x1017,0x1011,0x100e,0x100e,0x100e,0x100e,0x1023,0x1020,0x100e,0x116a,0x13f5,0x13f8,0x13f8,0x13f5,0x13f5,0x13f5,
+0x13f5,0x13f5,0x13fb,0x13fb,0x150f,0x1503,0x1503,0x1500,0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,
+0x1035,0x1032,0x1032,0x1041,0x1038,0x1341,0x133e,0x16fb,0x1341,0x133e,0x1404,0x1401,0x1512,0x1512,0x1518,0x1512,
+0x1518,0x1512,0x1518,0x1512,0x1518,0x1512,0x1518,0x1512,0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,
+0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,
+0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,0x1041,0x1038,0x103b,0x1038,0x1038,0x1038,0x1038,0x1038,0x1038,0x1038,
+0x1038,0x1041,0x1038,0x1041,0x1038,0x1041,0x1041,0x1038,0x1044,0x1044,0x104a,0x1050,0x1050,0x1050,0x1050,0x1050,
+0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,
+0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x1050,0x104a,0x1044,0x1044,0x1044,0x1044,0x104a,0x104a,
+0x1044,0x1044,0x104d,0x140d,0x140a,0x140a,0x1050,0x1050,0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,0x1047,
+0x1047,0x1047,0x1410,0x1410,0x1410,0x1410,0x1410,0x1410,0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,
+0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,
+0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,0x1065,0x106e,0x106e,0x106e,0x106e,0x106e,0x106e,0x106e,0x106e,
+0x106e,0x106e,0x106e,0x106e,0x106e,0x106e,0x106e,0x106e,0x106e,0x106e,0x106e,0x106e,0x106e,0x106e,0x106e,0x106e,
+0x1071,0x1071,0x1071,0x1074,0x1071,0x1071,0x1077,0x1077,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,
+0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,
+0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x107a,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,
+0x1083,0x1083,0x1083,0x1083,0x1086,0x107d,0x108c,0x1089,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,
+0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,
+0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1083,0x1347,0x1344,0x109e,0x1098,0x109e,0x1098,0x109e,0x1098,
+0x109e,0x1098,0x109e,0x1098,0x109e,0x1098,0x109b,0x111f,0x108f,0x108f,0x108f,0x1095,0x1413,0x1413,0x1413,0x1413,
+0x1413,0x1413,0x1413,0x1413,0x1092,0x1092,0x1095,0x10a1,0x109e,0x1098,0x109e,0x1098,0x109e,0x1098,0x109e,0x1098,
+0x109e,0x1098,0x109e,0x1098,0x109e,0x1098,0x109e,0x1098,0x109e,0x1098,0x109e,0x1098,0x109e,0x1098,0x109e,0x1098,
+0x109e,0x1098,0x109e,0x1098,0x109e,0x1098,0x109e,0x1098,0x1527,0x1524,0x1527,0x1524,0x152a,0x152a,0x1704,0x1413,
+0x10aa,0x10aa,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,
+0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,0x10ad,
+0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10aa,0x10bc,0x10bc,0x10bc,0x10bc,
+0x10bc,0x10bc,0x10b3,0x10b3,0x10b3,0x10b3,0x10b3,0x10b6,0x10b6,0x10b6,0x1116,0x10bf,0x10ce,0x10ce,0x10ce,0x10ce,
+0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,0x10ce,0x10b9,0x10b9,0x10b9,0x10b9,
+0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10b9,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,
+0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10bc,0x10e0,0x10e0,0x10e0,0x10e0,
+0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,
+0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10e0,0x10f2,0x10f2,0x10f2,0x10f2,
+0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,
+0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10f2,0x10fb,0x10fb,0x10fb,0x10fb,
+0x1110,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,
+0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fb,0x10fe,0x10fe,0x10fe,0x10fe,
+0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,
+0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x10fe,0x110a,0x110a,0x110a,0x110a,
+0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x12a2,0x149d,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,
+0x1785,0x1785,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x117f,0x117f,0x117f,0x117f,
0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,0x117f,
-0x117f,0x117f,0x117f,0x117f,0x119a,0x119a,0x119a,0x119a,0x119a,0x119a,0x119a,0x119a,0x119a,0x119a,0x119a,0x119a,
-0x119a,0x119a,0x119a,0x119a,0x119a,0x119a,0x119a,0x119a,0x119a,0x119a,0x119a,0x119a,0x119a,0x119a,0x119a,0x119a,
-0x119a,0x119a,0x119a,0x119a,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,
-0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,0x11a6,
-0x11a6,0x11a6,0x11a3,0x11a9,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,
-0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,0x11b5,
-0x11b5,0x11b5,0x11b5,0x11b5,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,
-0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x12e7,0x11c1,0x12ea,0x11c1,0x11c1,0x11c1,0x11c1,0x11be,0x11be,0x11be,0x11c1,
-0x16f8,0x16fb,0x1923,0x1920,0x11c4,0x11c4,0x11c4,0x11d3,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,
-0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,
-0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11d9,0x11c7,0x11d3,0x11d3,0x11c4,0x11c4,0x11c4,0x11c4,0x11d3,0x11d3,
-0x11c4,0x11c4,0x11d3,0x11d3,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,
-0x11e5,0x11e5,0x11e5,0x11e5,0x11e8,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11e5,0x11df,0x11df,0x11df,0x11e5,0x11e2,
-0x1527,0x152a,0x152d,0x152d,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,
-0x11f7,0x11f7,0x11f7,0x11f7,0x11eb,0x11f7,0x11eb,0x11eb,0x11eb,0x1200,0x1200,0x11eb,0x11eb,0x1200,0x11f7,0x1200,
-0x1200,0x11f7,0x11eb,0x11ee,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,
-0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,0x11f7,
-0x11f7,0x11f7,0x11f7,0x11f7,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,
-0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,0x1212,
-0x1212,0x1212,0x1212,0x1212,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,
-0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,0x122a,
-0x122a,0x1227,0x1227,0x1227,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,
-0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,0x1233,
-0x1233,0x1233,0x1233,0x1233,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,
-0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,0x1242,
-0x1242,0x1242,0x1242,0x1242,0x1248,0x1248,0x1254,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,
-0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x125a,0x1257,
-0x125a,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x1257,0x125a,
-0x1257,0x1257,0x1257,0x1257,0x1254,0x1254,0x1254,0x1248,0x1248,0x1248,0x1248,0x1254,0x1254,0x124e,0x124b,0x1251,
-0x1251,0x1260,0x125d,0x125d,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,
-0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,
-0x1263,0x1263,0x1263,0x1263,0x1269,0x1269,0x1269,0x1266,0x1266,0x1266,0x1263,0x1263,0x1263,0x1263,0x1266,0x1263,
-0x1263,0x1263,0x1269,0x1266,0x1269,0x1266,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,
-0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,
-0x1263,0x1269,0x1266,0x1266,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,0x1263,
-0x1263,0x1263,0x1263,0x1bcf,0x19f5,0x19f5,0x19f5,0x19f5,0x19f5,0x19f5,0x19f5,0x19f8,0x19f2,0x1be1,0x1be1,0x1be1,
-0x1be4,0x1bde,0x1be4,0x1bde,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1287,
-0x1287,0x1287,0x126c,0x1929,0x138f,0x1290,0x138f,0x138f,0x138f,0x138f,0x138f,0x138f,0x138f,0x138f,0x138f,0x138f,
-0x138f,0x1290,0x138f,0x1290,0x1275,0x1275,0x131d,0x1272,0x131d,0x131d,0x131d,0x131d,0x1272,0x1272,0x1296,0x1272,
-0x1272,0x1272,0x1272,0x1272,0x1272,0x1275,0x1296,0x1296,0x1275,0x1296,0x1272,0x1275,0x1275,0x1278,0x1296,0x1272,
-0x1272,0x1296,0x1275,0x1275,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x1281,0x1281,
-0x1281,0x1281,0x13a4,0x1386,0x128a,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x13a4,0x1827,
-0x1827,0x1827,0x1827,0x1827,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1530,
-0x1530,0x1a76,0x1a76,0x1a76,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,0x1284,
-0x1284,0x1284,0x1284,0x1284,0x138f,0x138f,0x1290,0x138f,0x138f,0x138f,0x1290,0x138f,0x138f,0x138f,0x128a,0x128a,
-0x128a,0x128a,0x128a,0x1389,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x128d,0x138c,0x138c,0x138c,0x138c,
-0x138c,0x138c,0x138c,0x128d,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x140d,0x140d,
-0x19d4,0x1a76,0x1a76,0x1a76,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x128d,0x138c,0x128d,
-0x128d,0x138c,0x138c,0x128d,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,
-0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,0x12b1,
-0x12b1,0x12b1,0x12b1,0x12b1,0x133b,0x1338,0x133b,0x1338,0x133b,0x1338,0x133b,0x1338,0x133b,0x1338,0x13fb,0x150f,
-0x150f,0x150f,0x17a3,0x1917,0x150f,0x150f,0x16ef,0x16ef,0x16ef,0x16e9,0x16ef,0x16e9,0x191a,0x1917,0x19d1,0x19ce,
-0x19d1,0x19ce,0x19d1,0x19ce,0x135f,0x135f,0x135f,0x135f,0x135f,0x135f,0x135f,0x135f,0x135f,0x135f,0x135f,0x135f,
-0x135f,0x135f,0x135f,0x135f,0x135f,0x135f,0x135f,0x135f,0x135f,0x135f,0x135f,0x135f,0x135f,0x135f,0x135f,0x135f,
-0x135f,0x135f,0x135f,0x135f,0x1374,0x1365,0x1374,0x1377,0x1377,0x1377,0x1377,0x1377,0x1377,0x1377,0x1377,0x1377,
-0x1377,0x1377,0x1377,0x1377,0x1377,0x1377,0x1377,0x1377,0x1377,0x1377,0x1377,0x1377,0x1377,0x1377,0x1377,0x1377,
-0x1377,0x1377,0x1377,0x1377,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x137d,0x137d,0x137d,0x137d,
-0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,
-0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x1383,0x1383,0x1383,0x1383,
-0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,
-0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x1383,0x13ad,0x13aa,0x18cc,0x18cc,
-0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,
-0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x13b6,0x13b6,0x13b6,0x13b6,
-0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,
-0x13b6,0x13b3,0x13b3,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b3,0x13b6,0x13b6,0x13b6,0x13b3,0x13b6,0x13b3,0x13b6,
-0x13b3,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b9,0x13b6,0x13b6,0x13b6,0x13b6,0x13b3,0x13b6,0x13b3,0x13b3,0x13b6,
-0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b3,0x13b3,0x13b3,0x13b3,
-0x13b3,0x13b3,0x13b3,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,
-0x13b6,0x13b6,0x13b6,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x13b6,0x13b6,0x13b6,
-0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,
-0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x13b3,0x1539,0x1539,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,
-0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,
-0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,
-0x153c,0x153c,0x153c,0x153c,0x153c,0x1779,0x1779,0x1779,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x153c,0x13b6,
-0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,
-0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x153c,0x1779,0x1779,
-0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b9,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,
-0x13b6,0x13b6,0x13b6,0x13b6,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x1539,0x1539,0x153c,0x153c,
-0x13b6,0x13b6,0x13b9,0x13b9,0x13b9,0x16a4,0x13b6,0x13b9,0x13b6,0x13b6,0x13b9,0x153f,0x153f,0x153c,0x153c,0x1779,
-0x1779,0x1779,0x1779,0x1779,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,
-0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,
-0x13b6,0x153c,0x153c,0x153c,0x16a4,0x153c,0x153c,0x153c,0x1779,0x1779,0x1779,0x177c,0x177c,0x177c,0x177c,0x177c,
-0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,
-0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x153c,
-0x13b6,0x153c,0x13b9,0x13b9,0x13b6,0x13b6,0x13b9,0x13b9,0x13b9,0x13b9,0x13b9,0x13b9,0x13b9,0x13b9,0x13b9,0x13b9,
-0x13b9,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,
-0x13b6,0x13b6,0x13b9,0x13b9,0x13b9,0x13b9,0x13b9,0x13b9,0x13b9,0x13b9,0x13b9,0x13b9,0x13b9,0x13b9,0x13b9,0x13b9,
-0x13b9,0x13b9,0x13b9,0x13b9,0x13b9,0x13b6,0x13b6,0x13b6,0x13b9,0x13b6,0x13b6,0x13b6,0x13b6,0x13b9,0x13b9,0x13b9,
-0x13b6,0x13b9,0x13b9,0x13b9,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b9,0x13b6,0x13b9,0x13b6,0x13b6,
-0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,
-0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x16a4,0x13b6,0x13b6,0x13b6,0x13b6,0x153c,0x153c,0x1779,
-0x1410,0x1410,0x1410,0x1410,0x1539,0x1539,0x1539,0x1539,0x1539,0x1539,0x153c,0x1779,0x1779,0x1779,0x1779,0x16fe,
-0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,0x13b6,
-0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153f,0x153f,0x153c,0x153c,
-0x153c,0x153c,0x1830,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,
-0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x1539,0x1539,0x1539,0x1539,0x1539,0x1539,0x153c,0x13b6,
-0x13b6,0x13b6,0x13b6,0x13b6,0x149a,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,
-0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x149a,0x13bc,0x13bc,0x13bc,0x149a,0x13bc,0x149a,0x13bc,0x149a,0x13bc,0x149a,
-0x13bc,0x13bc,0x13bc,0x149a,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x149a,0x149a,0x13bc,0x13bc,0x13bc,0x13bc,
-0x149a,0x13bc,0x149a,0x149a,0x13bc,0x13bc,0x13bc,0x13bc,0x149a,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,
-0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x16aa,0x16aa,0x177f,0x177f,0x13bf,0x13bf,0x13bf,0x13bc,0x13bc,0x13bc,0x13bf,
-0x13bf,0x13bf,0x13bf,0x13bf,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,
-0x1629,0x1629,0x1629,0x1629,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,
-0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,
-0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c5,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,
-0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c5,0x13c5,0x13c5,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,
-0x13c2,0x13c2,0x13c2,0x13c2,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,
-0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,
-0x13c8,0x13c8,0x13c8,0x13c8,0x17ac,0x17ac,0x17a9,0x1701,0x1416,0x1416,0x1416,0x1416,0x1416,0x1416,0x1413,0x1413,
-0x1413,0x1413,0x1413,0x1413,0x1416,0x1416,0x1416,0x1416,0x1416,0x1416,0x1416,0x1416,0x1416,0x1416,0x1416,0x1416,
-0x1416,0x1416,0x1416,0x1545,0x1419,0x1548,0x1419,0x1419,0x1419,0x1419,0x1419,0x1419,0x1419,0x1419,0x1419,0x1419,
-0x1419,0x1548,0x1548,0x1548,0x1548,0x1548,0x1548,0x1704,0x1704,0x1b4b,0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,0x17b2,
-0x17b2,0x17b2,0x1a79,0x1a79,0x1422,0x1422,0x1422,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,
-0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,0x1434,
-0x1434,0x1434,0x1434,0x1434,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,
-0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,0x144f,
-0x144f,0x144f,0x144f,0x144f,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,
-0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,0x1455,
-0x1455,0x1455,0x1455,0x19da,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,
+0x117f,0x117f,0x1176,0x1176,0x1179,0x1179,0x117f,0x1176,0x1176,0x1176,0x1176,0x1176,0x1185,0x1185,0x1185,0x1185,
+0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,
+0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x1185,0x11a0,0x11a0,0x11a0,0x11a0,
+0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,
+0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11a0,0x11ac,0x11ac,0x11ac,0x11ac,
+0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,
+0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11ac,0x11a9,0x11af,0x11bb,0x11bb,0x11bb,0x11bb,
+0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,
+0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11bb,0x11c1,0x11c1,0x11c1,0x11c1,
+0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x11c1,0x12ed,0x11c7,0x12f0,
+0x11c7,0x11c7,0x11c7,0x11c7,0x11c4,0x11c4,0x11c4,0x11c7,0x1707,0x170a,0x1932,0x192f,0x11ca,0x11ca,0x11ca,0x11d9,
+0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,
+0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11df,0x11cd,
+0x11d9,0x11d9,0x11ca,0x11ca,0x11ca,0x11ca,0x11d9,0x11d9,0x11ca,0x11ca,0x11d9,0x11d9,0x11eb,0x11eb,0x11eb,0x11eb,
+0x11eb,0x11eb,0x11eb,0x11eb,0x11eb,0x11eb,0x11eb,0x11eb,0x11eb,0x11eb,0x11eb,0x11eb,0x11ee,0x11eb,0x11eb,0x11eb,
+0x11eb,0x11eb,0x11eb,0x11e5,0x11e5,0x11e5,0x11eb,0x11e8,0x1530,0x1533,0x1536,0x1536,0x11fd,0x11fd,0x11fd,0x11fd,
+0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11f1,0x11fd,0x11f1,0x11f1,
+0x11f1,0x1206,0x1206,0x11f1,0x11f1,0x1206,0x11fd,0x1206,0x1206,0x11fd,0x11f1,0x11f4,0x11fd,0x11fd,0x11fd,0x11fd,
+0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,
+0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x11fd,0x1218,0x1218,0x1218,0x1218,
+0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,
+0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1218,0x1230,0x1230,0x1230,0x1230,
+0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,
+0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x1230,0x122d,0x122d,0x122d,0x1239,0x1239,0x1239,0x1239,
+0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,
+0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1239,0x1248,0x1248,0x1248,0x1248,
+0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,
+0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x1248,0x124e,0x124e,0x125a,0x125d,
+0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,
+0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x1260,0x125d,0x1260,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,
+0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x125d,0x1260,0x125d,0x125d,0x125d,0x125d,0x125a,0x125a,0x125a,0x124e,
+0x124e,0x124e,0x124e,0x125a,0x125a,0x1254,0x1251,0x1257,0x1257,0x1266,0x1263,0x1263,0x1269,0x1269,0x1269,0x1269,
+0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,
+0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x126f,0x126f,0x126f,0x126c,
+0x126c,0x126c,0x1269,0x1269,0x1269,0x1269,0x126c,0x1269,0x1269,0x1269,0x126f,0x126c,0x126f,0x126c,0x1269,0x1269,
+0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,
+0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x126f,0x126c,0x126c,0x1269,0x1269,0x1269,0x1269,
+0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1269,0x1be1,0x1a07,0x1a07,0x1a07,0x1a07,
+0x1a07,0x1a07,0x1a07,0x1a0a,0x1a04,0x1bf3,0x1bf3,0x1bf3,0x1bf6,0x1bf0,0x1bf6,0x1bf0,0x128a,0x128a,0x128a,0x128a,
+0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128d,0x128d,0x128d,0x1272,0x1938,0x1398,0x1296,0x1398,0x1398,
+0x1398,0x1398,0x1398,0x1398,0x1398,0x1398,0x1398,0x1398,0x1398,0x1296,0x1398,0x1296,0x127b,0x127b,0x1323,0x1278,
+0x1323,0x1323,0x1323,0x1323,0x1278,0x1278,0x129c,0x1278,0x1278,0x1278,0x1278,0x1278,0x1278,0x127b,0x129c,0x129c,
+0x127b,0x129c,0x1278,0x127b,0x127b,0x127e,0x129c,0x1278,0x1278,0x129c,0x127b,0x127b,0x1395,0x1395,0x1395,0x1395,
+0x1395,0x1395,0x1395,0x1395,0x1395,0x1395,0x1287,0x1287,0x1287,0x1287,0x13ad,0x138f,0x1290,0x13ad,0x13ad,0x13ad,
+0x13ad,0x13ad,0x13ad,0x13ad,0x13ad,0x13ad,0x13ad,0x1836,0x1836,0x1836,0x1836,0x1836,0x128a,0x128a,0x128a,0x128a,
+0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x1539,0x1539,0x1a88,0x1a88,0x1a88,0x128a,0x128a,0x128a,0x128a,
+0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x128a,0x1398,0x1398,0x1296,0x1398,
+0x1398,0x1398,0x1296,0x1398,0x1398,0x1398,0x1290,0x1290,0x1290,0x1290,0x1290,0x1392,0x1395,0x1395,0x1395,0x1395,
+0x1395,0x1395,0x1395,0x1293,0x1395,0x1395,0x1395,0x1395,0x1395,0x1395,0x1395,0x1293,0x1395,0x1395,0x1395,0x1395,
+0x1395,0x1395,0x1395,0x1395,0x1395,0x1395,0x1416,0x1416,0x19e6,0x1a88,0x1a88,0x1a88,0x1395,0x1395,0x1395,0x1395,
+0x1395,0x1395,0x1395,0x1395,0x1395,0x1293,0x1395,0x1293,0x1293,0x1395,0x1395,0x1293,0x12b7,0x12b7,0x12b7,0x12b7,
+0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,
+0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x12b7,0x1341,0x133e,0x1341,0x133e,
+0x1341,0x133e,0x1341,0x133e,0x1341,0x133e,0x1404,0x1518,0x1518,0x1518,0x17b2,0x1926,0x1518,0x1518,0x16fe,0x16fe,
+0x16fe,0x16f8,0x16fe,0x16f8,0x1929,0x1926,0x19e3,0x19e0,0x19e3,0x19e0,0x19e3,0x19e0,0x1365,0x1365,0x1365,0x1365,
+0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,
+0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x1365,0x137a,0x136b,0x137a,0x1380,
+0x1380,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,
+0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x137d,0x136b,0x136b,0x136b,0x136b,
+0x136b,0x136b,0x136b,0x136b,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,
+0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,0x1386,
+0x1386,0x1386,0x1386,0x1386,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
+0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,0x138c,
+0x138c,0x138c,0x138c,0x138c,0x13b6,0x13b3,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,
+0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,
+0x18db,0x18db,0x18db,0x18db,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,
+0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bc,0x13bc,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,
+0x13bc,0x13bf,0x13bf,0x13bf,0x13bc,0x13bf,0x13bc,0x13bf,0x13bc,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13c2,0x13bf,
+0x13bf,0x13bf,0x13bf,0x13bc,0x13bf,0x13bc,0x13bc,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,
+0x13bf,0x13bf,0x13bf,0x13bf,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,
+0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,
+0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,
+0x13bf,0x13bf,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x13bc,0x1542,0x1542,
+0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,
+0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,
+0x13bf,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1788,0x1788,0x1788,
+0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x1545,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,
+0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,
+0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x1545,0x1788,0x1788,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13c2,0x13bf,0x13bf,
+0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x1545,0x1545,0x1545,0x1545,
+0x1545,0x1545,0x1545,0x1545,0x1542,0x1542,0x1545,0x1545,0x13bf,0x13bf,0x13c2,0x13c2,0x13c2,0x16b3,0x13bf,0x13c2,
+0x13bf,0x13bf,0x13c2,0x1548,0x1548,0x1545,0x1545,0x1788,0x1788,0x1788,0x1788,0x1788,0x1545,0x1545,0x1545,0x1545,
+0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,
+0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x1545,0x1545,0x1545,0x16b3,0x1545,0x1545,0x1545,
+0x1788,0x1788,0x1788,0x178b,0x178b,0x178b,0x178b,0x178b,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,
+0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,
+0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x1545,0x13bf,0x1545,0x13c2,0x13c2,0x13bf,0x13bf,0x13c2,0x13c2,
+0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,
+0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,
+0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13c2,0x13bf,0x13bf,0x13bf,
+0x13c2,0x13bf,0x13bf,0x13bf,0x13bf,0x13c2,0x13c2,0x13c2,0x13bf,0x13c2,0x13c2,0x13c2,0x13bf,0x13bf,0x13bf,0x13bf,
+0x13bf,0x13bf,0x13bf,0x13c2,0x13bf,0x13c2,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,
+0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,
+0x16b3,0x13bf,0x13bf,0x13bf,0x13bf,0x1545,0x1545,0x1788,0x1419,0x1419,0x1419,0x1419,0x1542,0x1542,0x1542,0x1542,
+0x1542,0x1542,0x1545,0x1788,0x1788,0x1788,0x1788,0x170d,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,
+0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,
+0x1545,0x1545,0x1545,0x1545,0x1548,0x1548,0x1545,0x1545,0x1545,0x1545,0x183f,0x1545,0x1545,0x1545,0x1545,0x1545,
+0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,
+0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1545,0x13bf,0x13bf,0x13bf,0x13bf,0x13bf,0x14a3,0x13c5,0x13c5,0x13c5,
+0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x14a3,0x13c5,0x13c5,
+0x13c5,0x14a3,0x13c5,0x14a3,0x13c5,0x14a3,0x13c5,0x14a3,0x13c5,0x13c5,0x13c5,0x14a3,0x13c5,0x13c5,0x13c5,0x13c5,
+0x13c5,0x13c5,0x14a3,0x14a3,0x13c5,0x13c5,0x13c5,0x13c5,0x14a3,0x13c5,0x14a3,0x14a3,0x13c5,0x13c5,0x13c5,0x13c5,
+0x14a3,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x13c5,0x16b9,0x16b9,0x178e,
+0x178e,0x13c8,0x13c8,0x13c8,0x13c5,0x13c5,0x13c5,0x13c8,0x13c8,0x13c8,0x13c8,0x13c8,0x1638,0x1638,0x1638,0x1638,
+0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x13cb,0x13cb,0x13cb,0x13cb,
+0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,
+0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13ce,
+0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,
+0x13ce,0x13ce,0x13ce,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13cb,0x13d1,0x13d1,0x13d1,0x13d1,
+0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,
+0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x13d1,0x17bb,0x17bb,0x17b8,0x1710,
+0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141c,0x141c,0x141c,0x141c,0x141c,0x141c,0x141f,0x141f,0x141f,0x141f,
+0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x141f,0x154e,0x1422,0x1551,0x1422,0x1422,
+0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1422,0x1551,0x1551,0x1551,0x1551,0x1551,0x1551,0x1713,
+0x1713,0x1b5d,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x17c1,0x1a8b,0x1a8b,0x142b,0x142b,0x142b,0x143d,
+0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,
+0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x143d,0x1458,0x1458,0x1458,0x1458,
0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,
-0x1458,0x1458,0x1458,0x1458,0x145e,0x145e,0x146a,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,
-0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,
-0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x146a,0x146a,0x146a,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,
-0x145e,0x145e,0x145e,0x146a,0x146d,0x1470,0x1473,0x1473,0x1470,0x1476,0x1476,0x1461,0x1464,0x170a,0x170d,0x170d,
-0x170d,0x154e,0x1a82,0x1a7f,0x1467,0x1467,0x1467,0x1467,0x1467,0x1467,0x1467,0x1467,0x1467,0x1467,0x154b,0x1713,
-0x1716,0x1710,0x1719,0x1719,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,
-0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,0x1491,
-0x1491,0x1491,0x1491,0x1491,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,
-0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x18ff,0x18ff,
-0x18ff,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x19c8,0x14eb,0x14eb,
-0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x1863,0x18ff,0x18ff,0x18ff,0x18ff,0x18ff,0x18ff,0x18ff,0x18ff,0x18ff,
-0x18ff,0x18ff,0x18ff,0x18ff,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,
-0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x1539,0x1539,0x1539,0x1539,0x1539,0x1539,0x1539,0x1539,
-0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,
-0x153f,0x153c,0x153c,0x153c,0x153c,0x16a7,0x16a7,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,
-0x182d,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,
-0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x153c,0x155d,0x155d,0x155d,0x155d,
-0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,
-0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x155d,0x156f,0x156f,0x156f,0x156f,
-0x156f,0x156f,0x156f,0x156f,0x156f,0x156f,0x156f,0x156f,0x156f,0x156f,0x156f,0x156f,0x156f,0x156f,0x156f,0x156f,
-0x156f,0x156f,0x156f,0x156f,0x156f,0x156f,0x156f,0x156f,0x156f,0x156f,0x156f,0x156f,0x1575,0x1575,0x1575,0x1575,
-0x1575,0x1575,0x1575,0x1575,0x1575,0x1575,0x1575,0x1575,0x1575,0x1575,0x1575,0x1575,0x1575,0x1575,0x1575,0x1575,
-0x1575,0x1575,0x1575,0x1575,0x1575,0x1575,0x1575,0x1575,0x1575,0x1575,0x1575,0x1575,0x1578,0x1578,0x1578,0x1578,
+0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x1458,0x145e,0x145e,0x145e,0x145e,
+0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,
+0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x145e,0x19ec,0x1461,0x1461,0x1461,0x1461,
+0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,
+0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1461,0x1467,0x1467,0x1473,0x1479,
+0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,
+0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1479,0x1473,
+0x1473,0x1473,0x1467,0x1467,0x1467,0x1467,0x1467,0x1467,0x1467,0x1467,0x1467,0x1473,0x1476,0x1479,0x147c,0x147c,
+0x1479,0x147f,0x147f,0x146a,0x146d,0x1719,0x171c,0x171c,0x171c,0x1557,0x1a94,0x1a91,0x1470,0x1470,0x1470,0x1470,
+0x1470,0x1470,0x1470,0x1470,0x1470,0x1470,0x1554,0x1722,0x1725,0x171f,0x1728,0x1728,0x149a,0x149a,0x149a,0x149a,
+0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,
+0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x149a,0x14f4,0x14f4,0x14f4,0x14f4,
+0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,
+0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x190e,0x190e,0x190e,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,
+0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x19da,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x14f4,0x1872,0x190e,
+0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x1545,0x1545,0x1545,0x1545,
+0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,
+0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1542,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,
+0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1548,0x1545,0x1545,0x1545,0x1545,0x16b6,0x16b6,0x1545,
+0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x183c,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,
+0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,0x1545,
+0x1545,0x1545,0x1545,0x1545,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,
+0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,0x1566,
+0x1566,0x1566,0x1566,0x1566,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,
0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,
-0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x1578,0x15a2,0x15a2,0x15a2,0x15a2,
-0x15a2,0x15a2,0x15a2,0x15a2,0x15a2,0x15a2,0x15a2,0x15a2,0x159c,0x159c,0x159c,0x1590,0x1590,0x1590,0x159c,0x159c,
-0x1590,0x159f,0x1593,0x1590,0x15a5,0x15a5,0x1599,0x15a5,0x15a5,0x1596,0x17b5,0x1bdb,0x15b7,0x15b7,0x15b7,0x15b7,
-0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,
-0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15b7,0x15a8,0x15c0,0x15c0,0x15c0,0x15c0,
-0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,
-0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15c0,0x15ba,0x15c3,0x15c3,0x15c3,0x15c3,0x15c6,0x15c6,0x15c6,0x15c6,
+0x1578,0x1578,0x1578,0x1578,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,
+0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,0x157e,
+0x157e,0x157e,0x157e,0x157e,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,
+0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,0x1581,
+0x1581,0x1581,0x1581,0x1581,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,0x15b1,
+0x15ab,0x15ab,0x15ab,0x159f,0x159f,0x159f,0x15ab,0x15ab,0x159f,0x15ae,0x15a2,0x159f,0x15b4,0x15b4,0x15a8,0x15b4,
+0x15b4,0x15a5,0x17c4,0x1bed,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,
0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,
-0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15c6,0x15e1,0x15e1,0x15e1,0x15e1,
-0x15e1,0x15e1,0x15e1,0x15e1,0x15d8,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,
-0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15e1,0x15ea,0x15ea,0x15ea,0x15ea,
-0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,
-0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15ea,0x15fc,0x15fc,0x15fc,0x15fc,
-0x15fc,0x15fc,0x15fc,0x15fc,0x15fc,0x15fc,0x15fc,0x15fc,0x15fc,0x15fc,0x15fc,0x15fc,0x15f9,0x15f9,0x15f9,0x15ed,
-0x15ed,0x15ed,0x15ed,0x15ed,0x15ed,0x15ed,0x15ed,0x15f9,0x15f9,0x15ed,0x15f9,0x15f0,0x15fc,0x15fc,0x15fc,0x15fc,
-0x15fc,0x15fc,0x15fc,0x15fc,0x15fc,0x15fc,0x15fc,0x15fc,0x15fc,0x15fc,0x15fc,0x15fc,0x15fc,0x15fc,0x15fc,0x15fc,
-0x15fc,0x15fc,0x15fc,0x15fc,0x15fc,0x15fc,0x15fc,0x15fc,0x15fc,0x15fc,0x15fc,0x15fc,0x1620,0x1620,0x1620,0x1620,
-0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,
-0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,0x1620,0x161d,0x161d,0x161d,0x1629,0x1629,0x1629,0x1629,
-0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,0x1629,
-0x1629,0x1629,0x162f,0x162f,0x162f,0x162c,0x162c,0x162c,0x1629,0x1629,0x1629,0x1629,0x163e,0x163e,0x163e,0x163e,
-0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x1632,0x1632,0x1632,0x1632,
-0x1632,0x1632,0x1632,0x1644,0x1644,0x1638,0x1635,0x1635,0x1635,0x1635,0x1635,0x1635,0x163e,0x163e,0x163e,0x163e,
-0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,
-0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x163e,0x164a,0x164a,0x164a,0x164a,
-0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,0x164a,
-0x164a,0x164a,0x164a,0x1647,0x1647,0x1647,0x1647,0x1647,0x1647,0x1647,0x1647,0x1647,0x164d,0x164d,0x164d,0x164d,
+0x15c6,0x15c6,0x15c6,0x15b7,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,
+0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15cf,0x15c9,
+0x15d2,0x15d2,0x15d2,0x15d2,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,
+0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,0x15d5,
+0x15d5,0x15d5,0x15d5,0x15d5,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15e7,0x15f0,0x15f0,0x15f0,
+0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,0x15f0,
+0x15f0,0x15f0,0x15f0,0x15f0,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,
+0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,0x15f9,
+0x15f9,0x15f9,0x15f9,0x15f9,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,
+0x160b,0x160b,0x160b,0x160b,0x1608,0x1608,0x1608,0x15fc,0x15fc,0x15fc,0x15fc,0x15fc,0x15fc,0x15fc,0x15fc,0x1608,
+0x1608,0x15fc,0x1608,0x15ff,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,
+0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,0x160b,
+0x160b,0x160b,0x160b,0x160b,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,
+0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,0x162f,
+0x162f,0x162c,0x162c,0x162c,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,
+0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x1638,0x163e,0x163e,0x163e,0x163b,0x163b,0x163b,
+0x1638,0x1638,0x1638,0x1638,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,
+0x164d,0x164d,0x164d,0x164d,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1641,0x1653,0x1653,0x1647,0x1644,0x1644,
+0x1644,0x1644,0x1644,0x1644,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,
0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,
-0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x164d,0x1671,0x1671,0x1671,0x1671,
-0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,
-0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x1671,0x167a,0x167a,0x167a,0x167a,
-0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,
-0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x167a,0x1692,0x1692,0x1692,0x1692,
-0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x167d,0x168c,0x168c,0x167d,
-0x167d,0x167d,0x167d,0x167d,0x167d,0x168c,0x167d,0x168f,0x168f,0x167d,0x168f,0x167d,0x1692,0x1692,0x1692,0x1692,
-0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,
-0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x1692,0x169b,0x169b,0x169b,0x169b,
-0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,
-0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x169b,0x16a1,0x16a1,0x16a1,0x16a1,
+0x164d,0x164d,0x164d,0x164d,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,
+0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1659,0x1656,0x1656,0x1656,0x1656,0x1656,
+0x1656,0x1656,0x1656,0x1656,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,
+0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,0x165c,
+0x165c,0x165c,0x165c,0x165c,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,
+0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,0x1680,
+0x1680,0x1680,0x1680,0x1680,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,
+0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,0x1689,
+0x1689,0x1689,0x1689,0x1689,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,
+0x16a1,0x16a1,0x16a1,0x16a1,0x168c,0x169b,0x169b,0x168c,0x168c,0x168c,0x168c,0x168c,0x168c,0x169b,0x168c,0x169e,
+0x169e,0x168c,0x169e,0x168c,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,
0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,
-0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x16a1,0x18ff,0x18ff,0x18ff,0x18ff,
-0x18ff,0x18ff,0x18ff,0x18ff,0x18ff,0x18ff,0x18ff,0x18ff,0x16e6,0x16e6,0x16e6,0x16e6,0x18ff,0x18ff,0x18ff,0x18ff,
-0x18ff,0x18ff,0x18ff,0x18ff,0x18ff,0x18ff,0x18ff,0x18ff,0x18ff,0x18ff,0x18ff,0x19c8,0x1707,0x1707,0x1707,0x1707,
-0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,
-0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1707,0x1746,0x1746,0x1746,0x1746,
-0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,
-0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x174c,0x1749,
-0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,0x1746,
-0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,
-0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,0x174f,
-0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,
-0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,0x1752,
-0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,
-0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,0x1764,
-0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,
-0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,0x1767,
-0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,
-0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,
-0x176a,0x176a,0x176a,0x176d,0x176d,0x176d,0x176d,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,0x176a,
-0x176a,0x176a,0x176a,0x176a,0x176a,0x176d,0x176d,0x176d,0x176d,0x176d,0x176d,0x176d,0x176d,0x176a,0x176d,0x176d,
-0x176d,0x176d,0x176d,0x176d,0x176d,0x176d,0x176d,0x176d,0x176d,0x176d,0x176d,0x176d,0x176d,0x176d,0x176d,0x176d,
-0x176d,0x176d,0x176d,0x176d,0x176d,0x176d,0x176d,0x176d,0x176d,0x176d,0x176d,0x176d,0x176d,0x176d,0x176d,0x176d,
-0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,
-0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,0x1785,
-0x186f,0x186f,0x186f,0x186f,0x186f,0x186f,0x186f,0x186f,0x186f,0x186f,0x186f,0x186f,0x1ae5,0x1a3a,0x1a3a,0x1a3d,
-0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x1788,0x178b,0x1839,0x1839,0x1839,0x1839,0x1839,0x1839,0x18d5,
-0x1788,0x1788,0x1788,0x1788,0x1788,0x1836,0x1836,0x1836,0x1836,0x1836,0x1836,0x1836,0x1836,0x1836,0x1836,0x1836,
-0x1836,0x1836,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,
-0x1788,0x19b3,0x19b3,0x1a3a,0x1a3a,0x1a3a,0x1a3a,0x1a3a,0x1a3a,0x1a3a,0x1a3a,0x1ae2,0x1bb4,0x1a3d,0x1a3d,0x1a3d,
-0x18d2,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d2,0x18d2,
-0x1a79,0x1a79,0x1a79,0x1a79,0x1a79,0x1a79,0x1a79,0x1a79,0x1b4b,0x1b4e,0x1b48,0x1b48,0x1b48,0x1b48,0x1b48,0x1b48,
-0x1b48,0x1b48,0x1b48,0x192c,0x17af,0x17af,0x17af,0x17af,0x17af,0x17af,0x17af,0x17af,0x17af,0x17af,0x17af,0x17af,
-0x1836,0x1836,0x1836,0x1836,0x1836,0x1836,0x1839,0x1836,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,
-0x1839,0x18d5,0x18d5,0x1839,0x1839,0x1839,0x1839,0x1839,0x1839,0x1839,0x1836,0x17b8,0x1839,0x1839,0x1839,0x1a3a,
-0x1836,0x1836,0x1836,0x1836,0x1836,0x1836,0x17b8,0x1836,0x1836,0x1836,0x1836,0x1836,0x18d2,0x19b3,0x19b3,0x19b3,
-0x1836,0x1836,0x1836,0x1836,0x1836,0x1836,0x1836,0x1836,0x1836,0x1836,0x1836,0x1836,0x1836,0x1836,0x1836,0x18d2,
-0x17cd,0x17cd,0x17ca,0x17ca,0x17ca,0x17ca,0x17ca,0x17ca,0x17ca,0x17ca,0x17ca,0x17ca,0x17ca,0x17ca,0x17ca,0x17ca,
-0x17ca,0x17ca,0x17ca,0x17ca,0x17ca,0x17ca,0x17ca,0x17ca,0x17ca,0x17ca,0x17ca,0x17ca,0x17ca,0x17ca,0x17ca,0x17ca,
-0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,
-0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,0x17cd,
-0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,
-0x181b,0x181b,0x181b,0x181b,0x181b,0x1818,0x1818,0x1818,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,0x1803,
-0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,
-0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,0x181b,
-0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,
-0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,0x183f,
-0x1842,0x1842,0x1842,0x1842,0x1842,0x1842,0x1842,0x1842,0x1842,0x1842,0x1842,0x1842,0x1842,0x1842,0x1842,0x1842,
-0x1842,0x1842,0x1842,0x1842,0x1842,0x1842,0x1842,0x1842,0x1842,0x1842,0x1842,0x1842,0x1842,0x1842,0x1842,0x1842,
-0x1842,0x1842,0x1842,0x1aee,0x1aee,0x1aee,0x1aee,0x1aee,0x1aee,0x1aee,0x1aee,0x1aee,0x1aee,0x1aee,0x1aee,0x1aee,
-0x1899,0x1899,0x1899,0x1899,0x19ec,0x19ec,0x189c,0x189c,0x189c,0x189c,0x1884,0x1884,0x1884,0x1884,0x1884,0x1884,
-0x1884,0x1884,0x1884,0x1884,0x1884,0x1884,0x1884,0x1896,0x1887,0x188a,0x188d,0x189f,0x189f,0x193e,0x1890,0x1890,
-0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,
-0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,0x1899,
-0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,
-0x18ba,0x18ba,0x18ba,0x18a5,0x18ab,0x18a8,0x18a8,0x18a8,0x18a8,0x18b7,0x18bd,0x18a8,0x18a8,0x18a8,0x18a8,0x18b4,
-0x18ba,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,
-0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,0x18ba,
-0x18c6,0x18c6,0x18c6,0x18c6,0x18c6,0x18c6,0x18c6,0x18c6,0x18c6,0x18c6,0x18c6,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,
-0x1ad9,0x1ad9,0x1ad9,0x1ad9,0x1ad9,0x1ad9,0x1ad9,0x1ad9,0x1ad9,0x1ad9,0x1ad9,0x1ad9,0x1ad9,0x1ba5,0x1ba5,0x1ba5,
-0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,
-0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,0x18cc,
-0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x19b3,0x19b3,0x19b3,0x19b3,
-0x19b3,0x1a3a,0x1ae2,0x19b3,0x19b3,0x19b3,0x19b3,0x1ae5,0x1ae2,0x1bb4,0x19b3,0x1a3a,0x19b3,0x19b3,0x19b3,0x19b3,
-0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x18d2,0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,
-0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,
+0x16a1,0x16a1,0x16a1,0x16a1,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,
+0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,0x16aa,
+0x16aa,0x16aa,0x16aa,0x16aa,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,
+0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,0x16b0,
+0x16b0,0x16b0,0x16b0,0x16b0,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,
+0x16f5,0x16f5,0x16f5,0x16f5,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,0x190e,
+0x190e,0x190e,0x190e,0x19da,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,
+0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,0x1716,
+0x1716,0x1716,0x1716,0x1716,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,
+0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,
+0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x175b,0x1758,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,
+0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x1755,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,
+0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,
+0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x175e,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,
+0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,
+0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1761,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,
+0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,
+0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1773,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,
+0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,
+0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1776,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,
+0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,
+0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x177c,0x177c,0x177c,0x177c,0x1779,
+0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x1779,0x177c,0x177c,0x177c,
+0x177c,0x177c,0x177c,0x177c,0x177c,0x1779,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,
+0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,
+0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x177c,0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,
+0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,
+0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,0x1794,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,0x187e,
+0x187e,0x187e,0x187e,0x187e,0x1af7,0x1a4c,0x1a4c,0x1a4f,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,0x1797,
+0x179a,0x1848,0x1848,0x1848,0x1848,0x1848,0x1848,0x18e4,0x1797,0x1797,0x1797,0x1797,0x1797,0x1845,0x1845,0x1845,
+0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,
+0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x1797,0x19c5,0x19c5,0x1a4c,0x1a4c,0x1a4c,0x1a4c,0x1a4c,
+0x1a4c,0x1a4c,0x1a4c,0x1af4,0x1bc6,0x1a4f,0x1a4f,0x1a4f,0x18e1,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,
+0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e4,0x18e1,0x18e1,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,0x1a8b,
+0x1b5d,0x1b60,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x1b5a,0x193b,0x17be,0x17be,0x17be,0x17be,
+0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x17be,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1848,0x1845,
+0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x1848,0x18e4,0x18e4,0x1848,0x1848,0x1848,0x1848,0x1848,
+0x1848,0x1848,0x1845,0x17c7,0x1848,0x1848,0x1848,0x1a4c,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x17c7,0x1845,
+0x1845,0x1845,0x1845,0x1845,0x18e1,0x19c5,0x19c5,0x19c5,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,
+0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x1845,0x18e1,0x17dc,0x17dc,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,
+0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,
+0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17d9,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,
+0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,
+0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x17dc,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,
+0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x1827,0x1827,0x1827,
+0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x1812,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,
+0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,
+0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x182a,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,
+0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,
+0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x184e,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,
+0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,
+0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1851,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,
+0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x1b00,0x18a8,0x18a8,0x18a8,0x18a8,0x19fe,0x19fe,0x18ab,0x18ab,
+0x18ab,0x18ab,0x1893,0x1893,0x1893,0x1893,0x1893,0x1893,0x1893,0x1893,0x1893,0x1893,0x1893,0x1893,0x1893,0x18a5,
+0x1896,0x1899,0x189c,0x18ae,0x18ae,0x194d,0x189f,0x189f,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,
+0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,
+0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18a8,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,
+0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18b4,0x18ba,0x18b7,0x18b7,0x18b7,
+0x18b7,0x18c6,0x18cc,0x18b7,0x18b7,0x18b7,0x18b7,0x18c3,0x18c9,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,0x18b7,
+0x18b7,0x18b7,0x18b7,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,
+0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18c9,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,0x18d5,
+0x18d5,0x18d5,0x18d5,0x19bf,0x19bf,0x19bf,0x19bf,0x19bf,0x1aeb,0x1aeb,0x1aeb,0x1aeb,0x1aeb,0x1aeb,0x1aeb,0x1aeb,
+0x1aeb,0x1aeb,0x1aeb,0x1aeb,0x1aeb,0x1bb7,0x1bb7,0x1bb7,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,
0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,
-0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,
-0x18de,0x18de,0x18de,0x18de,0x18de,0x18de,0x18de,0x18de,0x18de,0x18de,0x18de,0x18de,0x18de,0x18de,0x18de,0x18de,
-0x18de,0x18de,0x18de,0x18de,0x18de,0x18de,0x18de,0x18de,0x18de,0x18de,0x18de,0x18de,0x18de,0x18de,0x18de,0x1bb7,
-0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,
-0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,
-0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,
-0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,0x1953,
-0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,
-0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,0x196e,
-0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,
-0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,0x1974,
-0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,
-0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,0x198f,
-0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,
-0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,0x1992,
-0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,
-0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x199b,0x1998,0x1998,0x1998,
-0x19b3,0x19b3,0x19b3,0x1ae2,0x1ae2,0x1a3a,0x1a3a,0x1a3a,0x1a3a,0x1a3a,0x1a3a,0x1ae2,0x1ae2,0x1ae2,0x1a3a,0x1a3a,
-0x19b3,0x19b3,0x19b3,0x19b3,0x19b3,0x19b6,0x19b6,0x19b3,0x19b6,0x19b6,0x1a3a,0x1a3d,0x1a3a,0x1a3a,0x1a3a,0x1a3a,
-0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,
-0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,0x19ef,
-0x1a16,0x1a16,0x1a16,0x1a16,0x1a16,0x1a16,0x1a16,0x1a16,0x1a16,0x1a16,0x1a16,0x1a16,0x1a16,0x1a16,0x1a16,0x1a16,
-0x1a16,0x1a16,0x1a16,0x1a16,0x1a16,0x1a16,0x1a16,0x1a16,0x1a16,0x1a16,0x1a16,0x1a16,0x1a16,0x1a16,0x1a16,0x1a16,
-0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,
-0x1a55,0x1a55,0x1a1f,0x1a55,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a1f,0x1a25,0x1a25,0x1a25,
-0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,
-0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,
-0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x1ac4,
-0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x1ac4,0x1ac4,
-0x1ad0,0x1ad0,0x1ad0,0x1ad0,0x1ad0,0x1ad0,0x1ad0,0x1ad0,0x1ad0,0x1ad0,0x1ad0,0x1ad0,0x1ad0,0x1ad0,0x1ad0,0x1ad0,
-0x1ad0,0x1ad0,0x1ad0,0x1ad0,0x1ad0,0x1ad0,0x1ad0,0x1ad0,0x1ad0,0x1ad0,0x1ad0,0x1ad0,0x1ad0,0x1ad0,0x1ad0,0x1ad0,
-0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,
-0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,0x1af4,
-0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,
-0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,0x1af7,
-0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,
-0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,0x1b6c,
-0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,
-0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,0x1b8d,
+0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18db,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,
+0x18e1,0x18e1,0x18e1,0x18e1,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x1a4c,0x1af4,0x19c5,0x19c5,0x19c5,0x19c5,0x1af7,
+0x1af4,0x1bc6,0x19c5,0x1a4c,0x19c5,0x19c5,0x19c5,0x19c5,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x18e1,0x19c5,
+0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,
+0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,
+0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,
+0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ea,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,
+0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,
+0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x18ed,0x1bc9,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,
+0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,
+0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x18f0,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,
+0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,
+0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x1962,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,
+0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,
+0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x197d,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,
+0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,
+0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x1983,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,
+0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,
+0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a1,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,
+0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,
+0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19a4,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,
+0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,
+0x19ad,0x19ad,0x19ad,0x19ad,0x19ad,0x19aa,0x19aa,0x19aa,0x19c5,0x19c5,0x19c5,0x1af4,0x1af4,0x1a4c,0x1a4c,0x1a4c,
+0x1a4c,0x1a4c,0x1a4c,0x1af4,0x1af4,0x1af4,0x1a4c,0x1a4c,0x19c5,0x19c5,0x19c5,0x19c5,0x19c5,0x19c8,0x19c8,0x19c5,
+0x19c8,0x19c8,0x1a4c,0x1a4f,0x1a4c,0x1a4c,0x1a4c,0x1a4c,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,
+0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,
+0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a01,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,
+0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,
+0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,
+0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a67,0x1a67,0x1a31,0x1a67,0x1a31,0x1a31,0x1a31,0x1a31,
+0x1a31,0x1a31,0x1a31,0x1a31,0x1a31,0x1a37,0x1a37,0x1a37,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,
+0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,
+0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1a43,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,
+0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,
+0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ad6,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,
+0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,
+0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1ae2,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,
+0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,
+0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b06,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,
+0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,
+0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b09,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,
+0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,
+0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b7e,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,
0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,
-0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,
-0x1ba2,0x1ba2,0x1ba2,0x1ba2,0x1ba2,0x1ba2,0x1ba2,0x1ba2,0x1ba2,0x1ba2,0x1ba2,0x1ba2,0x1ba2,0x1ba2,0x1ba2,0x1ba2,
-0x1ba2,0x1ba2,0x1ba2,0x1ba2,0x1ba2,0x1ba2,0x1ba2,0x1ba2,0x1ba2,0x1ba2,0x1ba2,0x1ba2,0x1ba2,0x1ba2,0x1ba2,0x1ba2,
-0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,0x1bfc,
-0x1bfc,0x1bf9,0x1bf9,0x1bf9,0x1bf9,0x1bf9,0x1bf9,0x1bf9,0x1bf9,0x1bf9,0x1bf9,0x1bf9,0x1bf9,0x1bf9,0x1bf9,0x1bf9,
-0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,
-0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,0x1c3b,
-0,0,0,0
+0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1b9f,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,
+0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,
+0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb1,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,
+0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,
+0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1bb4,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,
+0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0e,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,
+0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c0b,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,
+0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,
+0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c4d,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,
+0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,
+0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0x1c59,0,0,0,0
};
static const UTrie2 propsVectorsTrie={
propsVectorsTrie_index,
- propsVectorsTrie_index+5348,
- NULL,
- 5348,
- 27344,
+ propsVectorsTrie_index+5368,
+ nullptr,
+ 5368,
+ 27396,
0xa40,
- 0x1564,
+ 0x1578,
0x0,
0x0,
0x110000,
- 0x7fb0,
- NULL, 0, false, false, 0, NULL
+ 0x7ff8,
+ nullptr, 0, false, false, 0, nullptr
};
-static const uint32_t propsVectors[7230]={
+static const uint32_t propsVectors[7260]={
0x67,0,0,0x67,0,0xe00000,0x67,0x80000,0x20,0x867,0,0,0xa67,0,0,0xb67,
0,0,0xd67,0,0,0xe67,0,0,0x1067,0,0,0x1167,0,0,0x1267,0,
0,0x1367,0,0,0x1467,0,0,0x1567,0,0,0x1667,0,0,0x1767,0,0,
0x1867,0,0,0x1967,0,0,0x1a67,0,0,0x1b67,0,0,0x1d67,0,0,0x1f67,
0,0,0x2067,0,0,0x2267,0,0,0x2367,0,0,0x2467,0,0,0x2567,0,
0,0x2767,0,0,0x2867,0x80000,0x20,0x2967,0,0,0x2a67,0,0x1600000,0x2b67,0,0,
-0x2d67,0,0,0x3167,0x20000000,0,0x3267,0x20000000,0,0x3a67,0,0,0x3b67,0,0,0x3c67,
-0,0,0x3e67,0,0,0x4067,0,0,0x4167,0,0,0x4467,0,0,0x4867,0,
-0,0x4967,0,0,0x4a67,0,0,0x5067,0,0,0x5167,0,0,0x5467,0,0,
-0x5567,0,0,0x5667,0x80000,0x20,0x5767,0,0,0x5867,0,0,0x5967,0,0,0x5b67,
-0,0,0x5c67,0,0,0x5d67,0,0,0x6067,0x80000,0x20,0x6267,0,0,0x6367,0,
-0,0x6467,0,0,0x6567,0,0,0x6f67,0,0,0x7067,0,0,0x7367,0x20000000,0,
-0x7567,0,0,0x7667,0,0,0x7767,0,0,0x7867,0,0,0x7a67,0,0,0x7b67,
-0,0,0x7c67,0,0,0x7e67,0,0,0x7f67,0,0,0x8167,0,0,0x8267,0,
-0,0x8467,0,0,0x8567,0,0,0x8667,0,0,0x8767,0,0,0x8967,0,0,
-0x8b67,0,0,0x8c67,0,0,0x8e67,0x20000000,0,0x8f67,0,0,0x9067,0,0,0x9167,
-0,0,0x9267,0,0,0x9367,0,0,0x9567,0,0,0x9667,0,0,0x9767,0,
-0,0x9867,0,0,0x9967,0,0,0x9a67,0,0,0x9c67,0,0,0x9f67,0,0,
-0xa167,0,0,0xa367,0,0,0xa467,0,0,0xa567,0,0,0xa667,0,0,0xa767,
-0,0,0xa867,0,0,0xa967,0,0,0xaa67,0,0xe00000,0xab67,0,0xe00000,0xac67,0,
-0,0xad67,0,0,0xae67,0,0,0xaf67,0,0,0xb167,0,0,0xb267,0,0,
-0xb467,0,0,0xb567,0,0,0xb767,0,0,0xb867,0,0,0xb967,0,0,0xba67,
-0,0,0xbc67,0,0,0xbd67,0,0,0xbe67,0,0,0xbf67,0,0,0xc067,0,
-0,0xc167,0,0,0xc367,0,0xe00000,0xc467,0,0xe00000,0xc667,0,0,0xc767,0,0,
-0xc867,0,0,0xc967,0,0,0xca67,0,0,0xcc67,0,0xe00000,0xcf67,0,0xe00000,0xd067,
-0,0xe00000,0xd367,0,0,0xd467,0,0,0xd567,0,0,0xd667,0,0,0xd867,0,
-0,0xda67,0,0,0xdb67,0,0,0xdc67,0,0,0xdd67,0,0,0xde67,0,0,
-0xdf67,0,0,0xe067,0,0,0xe167,0,0,0xe267,0,0,0xe367,0,0xe00000,0xe467,
-0,0,0xe567,0,0,0xe667,0,0,0xe767,0,0,0xe867,0,0,0xe967,0,
-0,0xea67,0,0,0xeb67,0,0,0xec67,0,0,0xed67,0,0,0xee67,0,0,
-0xef67,0,0,0xf167,0,0,0xf367,0,0,0xf567,0,0,0xf667,0,0,0xf767,
-0,0,0xf867,0,0,0xf967,0,0,0xfa67,0,0xe00000,0xfb67,0,0,0xfc67,0,
-0,0xfd67,0,0,0xfe67,0,0,0x10167,0,0,0x10267,0,0,0x10367,0,0,
-0x10467,0,0,0x10667,0,0,0x10767,0,0,0x10867,0,0,0x10967,0,0,0x10a67,
-0,0,0x10b67,0,0,0x10c67,0,0,0x10d67,0,0,0x10e67,0,0,0x10f67,0,
-0,0x11067,0,0,0x11367,0,0,0x11467,0,0,0x11567,0,0,0x11667,0,0,
-0x11767,0,0,0x11867,0,0,0x11967,0,0xe00000,0x11a67,0,0,0x11b67,0,0,0x11c67,
-0,0,0x11d67,0,0,0x11e67,0,0,0x11f67,0,0,0x12067,0,0,0x12167,0,
-0,0x12267,0,0,0x12367,0,0,0x12467,0,0,0x12567,0,0,0x12667,0,0,
-0x12767,0,0,0x12867,0,0,0x12967,0,0,0x12a67,0,0xe00000,0x12b67,0,0,0x12c67,
-0,0,0x12d67,0,0,0x12f67,0,0,0x13067,0,0,0x13167,0,0,0x13267,0,
-0,0x13367,0,0,0x13467,0,0,0x13567,0,0,0x13667,0,0,0x13767,0,0,
-0x13867,0,0,0x13967,0,0,0x13a67,0,0,0x13b67,0,0,0x13c67,0,0,0x13d67,
-0,0,0x13f67,0,0,0x14067,0,0,0x14167,0,0,0x14367,0,0,0x14467,0,
-0,0x14567,0,0,0x14667,0,0,0x14767,0,0,0xa0067,0,0xe00000,0xa4f67,0,0xe00000,
-0xa5f67,0,0xe00000,0xac567,0,0xe00000,0xad167,0,0xe00000,0xb0067,0,0xe00000,0xb1267,0,0xe00000,0xb2e67,
+0x2d67,0,0,0x3167,0x20000000,0,0x3267,0x20000000,0,0x3a67,0,0,0x3b67,0,0,0x3e67,
+0,0,0x4067,0,0,0x4167,0,0,0x4467,0,0,0x4867,0,0,0x4967,0,
+0,0x4a67,0,0,0x5067,0,0,0x5167,0,0,0x5467,0,0,0x5567,0,0,
+0x5667,0x80000,0x20,0x5767,0,0,0x5867,0,0,0x5967,0,0,0x5b67,0,0,0x5c67,
+0,0,0x5d67,0,0,0x6067,0x80000,0x20,0x6267,0,0,0x6367,0,0,0x6467,0,
+0,0x6567,0,0,0x6f67,0,0,0x7067,0,0,0x7367,0x20000000,0,0x7567,0,0,
+0x7667,0,0,0x7767,0,0,0x7867,0,0,0x7a67,0,0,0x7b67,0,0,0x7c67,
+0,0,0x7e67,0,0,0x7f67,0,0,0x8167,0,0,0x8267,0,0,0x8467,0,
+0,0x8567,0,0,0x8667,0,0,0x8767,0,0,0x8967,0,0,0x8b67,0,0,
+0x8c67,0,0,0x8e67,0x20000000,0,0x8f67,0,0,0x9067,0,0,0x9167,0,0,0x9267,
+0,0,0x9367,0,0,0x9567,0,0,0x9667,0,0,0x9767,0,0,0x9867,0,
+0,0x9967,0,0,0x9a67,0,0,0x9c67,0,0,0x9f67,0,0,0xa167,0,0,
+0xa367,0,0,0xa467,0,0,0xa567,0,0,0xa667,0,0,0xa767,0,0,0xa867,
+0,0,0xa967,0,0,0xaa67,0,0xe00000,0xab67,0,0xe00000,0xac67,0,0,0xad67,0,
+0,0xae67,0,0,0xaf67,0,0,0xb167,0,0,0xb267,0,0,0xb467,0,0,
+0xb567,0,0,0xb767,0,0,0xb867,0,0,0xb967,0,0,0xba67,0,0,0xbc67,
+0,0,0xbd67,0,0,0xbe67,0,0,0xbf67,0,0,0xc067,0,0,0xc167,0,
+0,0xc367,0,0xe00000,0xc467,0,0xe00000,0xc667,0,0,0xc767,0,0,0xc867,0,0,
+0xc967,0,0,0xca67,0,0,0xcc67,0,0xe00000,0xcf67,0,0xe00000,0xd067,0,0xe00000,0xd367,
+0,0,0xd467,0,0,0xd567,0,0,0xd667,0,0,0xd867,0,0,0xda67,0,
+0,0xdb67,0,0,0xdc67,0,0,0xdd67,0,0,0xde67,0,0,0xdf67,0,0,
+0xe067,0,0,0xe167,0,0,0xe267,0,0,0xe367,0,0xe00000,0xe467,0,0,0xe567,
+0,0,0xe667,0,0,0xe767,0,0,0xe867,0,0,0xe967,0,0,0xea67,0,
+0,0xeb67,0,0,0xec67,0,0,0xed67,0,0,0xee67,0,0,0xef67,0,0,
+0xf167,0,0,0xf367,0,0,0xf567,0,0,0xf667,0,0,0xf767,0,0,0xf867,
+0,0,0xf967,0,0,0xfa67,0,0xe00000,0xfb67,0,0,0xfc67,0,0,0xfd67,0,
+0,0xfe67,0,0,0x10167,0,0,0x10267,0,0,0x10367,0,0,0x10467,0,0,
+0x10667,0,0,0x10767,0,0,0x10867,0,0,0x10967,0,0,0x10a67,0,0,0x10b67,
+0,0,0x10c67,0,0,0x10d67,0,0,0x10e67,0,0,0x10f67,0,0,0x11067,0,
+0,0x11367,0,0,0x11467,0,0,0x11567,0,0,0x11667,0,0,0x11767,0,0,
+0x11867,0,0,0x11967,0,0xe00000,0x11a67,0,0,0x11b67,0,0,0x11c67,0,0,0x11d67,
+0,0,0x11e67,0,0,0x11f67,0,0,0x12067,0,0,0x12167,0,0,0x12267,0,
+0,0x12367,0,0,0x12467,0,0,0x12567,0,0,0x12667,0,0,0x12767,0,0,
+0x12867,0,0,0x12967,0,0,0x12a67,0,0xe00000,0x12b67,0,0,0x12c67,0,0,0x12d67,
+0,0,0x12f67,0,0,0x13067,0,0,0x13167,0,0,0x13267,0,0,0x13367,0,
+0,0x13467,0,0,0x13567,0,0,0x13667,0,0,0x13767,0,0,0x13867,0,0,
+0x13967,0,0,0x13a67,0,0,0x13b67,0,0,0x13c67,0,0,0x13d67,0,0,0x13f67,
+0,0,0x14067,0,0,0x14167,0,0,0x14367,0,0,0x14467,0,0,0x14567,0,
+0,0x14667,0,0,0x14767,0,0,0xa0067,0,0xe00000,0xa4f67,0,0xe00000,0xa5f67,0,0xe00000,
+0xac567,0,0xe00000,0xad167,0,0xe00000,0xb0067,0,0xe00000,0xb1267,0,0xe00000,0xb2e67,0,0xe00000,0xb4867,
0,0xe00000,0x11000100,0,0x900020,0x11000100,0x40000001,0x440020,0x11000100,0x40000001,0x643020,0x11000100,0x40000001,0xa5a040,0x11000100,0x40000001,
0x116a8a0,0x11000200,0,0x900020,0x11000200,0x4000001,0xc4000b,0x11000200,0x7c00100,0x220402,0x11000200,0x24000000,0x200000,0x11000200,0x24000008,0x1710000,
0x11000200,0x40000001,0x1d3b020,0x11000219,0x7c00100,0x220401,0x11000219,0x7c00100,0x250401,0x11000319,0x7c00100,0x220401,0x11000319,0x7c00100,0x220402,0x11000319,
@@ -3590,7 +3603,7 @@ static const uint32_t propsVectors[7230]={
0x250400,0x11000908,0x7c00100,0x250401,0x11000a03,0x4000000,0x200400,0x11000a03,0x4000000,0x201000,0x11000a03,0x4000000,0x270000,0x11000a03,0x7c00100,0x220400,
0x11000a03,0x7c00100,0x220402,0x11000a03,0x7c00100,0x250400,0x11000a03,0x7c00500,0x230400,0x11000a03,0xc000010,0x1049400,0x11000b13,0x2802500,0x962460,0x11000b13,
0x4000000,0x200000,0x11000b13,0x4000000,0x201000,0x11000b13,0x4000000,0x230400,0x11000b13,0x4000002,0x400000,0x11000b13,0x4000010,0x200000,0x11000b13,0x7c00100,
-0x2633800,0x11000c00,0x80000000,0x218960,0x11000c02,0x2802100,0x962460,0x11000c02,0x2802400,0x962460,0x11000c02,0x4000000,0x200000,0x11000c02,0x4000000,0x1329400,
+0x2633800,0x11000c00,0x80000000,0x1329960,0x11000c02,0x2802100,0x962460,0x11000c02,0x2802400,0x962460,0x11000c02,0x4000000,0x200000,0x11000c02,0x4000000,0x1329400,
0x11000c02,0x4000000,0x1329800,0x11000c02,0x4000000,0x1500000,0x11000c02,0x6800000,0x1329800,0x11000c02,0x7c00100,0x230400,0x11000c02,0x7c00100,0x230401,0x11000c02,
0x7c00100,0x230402,0x11000c02,0x7c00500,0x230400,0x11000c02,0x7d00100,0x230400,0x11000f01,0x2802400,0x962460,0x11000f0a,0x2802100,0x962460,0x11000f0a,0x2802400,
0x962460,0x11000f0a,0x2806400,0x962460,0x11000f0a,0x4000000,0x200000,0x11000f0a,0x6800100,0x962540,0x11000f0a,0x7c00100,0x230400,0x11000f0a,0x7c00100,0x230401,
@@ -3614,7 +3627,7 @@ static const uint32_t propsVectors[7230]={
0x201c00,0x11002800,0x6800020,0x201c00,0x11002800,0x24000000,0x200000,0x11002800,0x24000000,0x200002,0x11002800,0x24000000,0x810000,0x11002800,0x24000000,0x1410000,
0x11002800,0x24000000,0x1500000,0x11002800,0x24000000,0x1500002,0x11002800,0x24000002,0x400000,0x11002800,0x24000006,0xc0000b,0x11002800,0x24000008,0x1410000,0x11002800,
0x24000008,0x1710000,0x11002800,0x24000020,0x1001400,0x11002800,0x24000020,0x1500002,0x11002800,0x2c000010,0x1248000,0x11002800,0x2c000010,0x1248002,0x11002800,0x40000001,
-0x63b020,0x11002800,0x40080000,0x918820,0x11002801,0x80000,0x2a65620,0x11002801,0x82000,0x962460,0x11002900,0x4000000,0x20000e,0x11002900,0x4000000,0x20000f,
+0x63b020,0x11002800,0x40080000,0x918820,0x11002801,0x2880000,0x2a65620,0x11002801,0x2882000,0x962460,0x11002900,0x4000000,0x20000e,0x11002900,0x4000000,0x20000f,
0x11002900,0x4000020,0x20000e,0x11002900,0x4000020,0x20000f,0x11002900,0x4000020,0x81000e,0x11002900,0x4000020,0x81000f,0x11002900,0x4000020,0x141000e,0x11002900,
0x4000020,0x141000f,0x11002900,0x4000022,0x20000e,0x11002900,0x4000022,0x20000f,0x11002a00,0x4000000,0x1500000,0x11002a00,0x4000000,0x1600000,0x11002a00,0x4000000,
0x1600002,0x11002b01,0x2000,0x962460,0x11002b01,0x2802020,0x962460,0x11002c00,0x4000000,0x200000,0x11002c00,0x4000000,0x200002,0x11002c00,0x4000000,0x20000f,
@@ -3670,17 +3683,17 @@ static const uint32_t propsVectors[7230]={
0x4000000,0x141000c,0x110a5400,0x4000000,0x150000c,0x110a5400,0x4000000,0x160000c,0x110a5400,0x4000002,0xe7000c,0x110a5400,0x4000010,0x87140c,0x110a5400,0x4000010,
0xe7000c,0x110a5400,0x4000010,0x120140c,0x110a5400,0x4000010,0x127100c,0x110a5400,0x4000020,0xe0000c,0x110a5400,0x4000026,0xe7000c,0x110a5400,0xc000010,0x80ac0c,
0x110a5400,0xc000010,0xb4800c,0x11400c0c,0x4000010,0xb00000,0x11400c0c,0x4000010,0x1071400,0x11400c17,0xc000010,0xb48000,0x11400c1e,0x7c00900,0x230400,0x11400f4b,
-0xc000010,0x448000,0x11400f5f,0xc000010,0x448000,0x11401d94,0x4000000,0x200000,0x11403dca,0x4000000,0xe00000,0x114457bf,0x4000004,0x120000a,0x114457bf,0x4000008,
-0x81000a,0x114457bf,0x4000008,0x141000a,0x114457bf,0x4000010,0x87000a,0x114457bf,0xc000010,0x84800a,0x114457c8,0x3802500,0x126246a,0x114457c8,0x7c00d00,0x2530c0a,
-0x114a3dbf,0x24000000,0x810000,0x114a3dbf,0x24000000,0x1410000,0x114a3dbf,0x24000008,0x810000,0x114a3dbf,0x24000008,0x1410000,0x114a3dbf,0x24000010,0x870000,0x114a3dbf,
-0x2c000010,0x848000,0x114a3dc5,0x4000000,0xe00000,0x114a3dc5,0x24000000,0xe00000,0x114a3dc5,0x24000002,0xe00000,0x114a3dc5,0x24000002,0x1200000,0x114a3dc5,0x24000008,
-0x810000,0x114a3dc5,0x24000008,0x1410000,0x114a3dc8,0x7c00900,0x930c00,0x114a3dc8,0x7c00900,0xe30c00,0x114a3dca,0x7c00300,0xe30000,0x114a3ec8,0x7000400,0x1200c02,
-0x114a3fbf,0x4000004,0x1200000,0x114a3fc8,0x7c00d00,0x2530c00,0x114a42ca,0x4000000,0xe00000,0x114a42ca,0x4000000,0xe0000f,0x114a44ca,0x4000000,0xe00002,0x114a44ca,
-0x4000000,0xe00003,0x114a45ca,0x4000000,0xe00002,0x114a45ca,0x4000000,0xe0000d,0x11505103,0x24000000,0x810000,0x11505103,0x24000000,0x1410000,0x1180090a,0x2802400,
+0xc000010,0x448000,0x11400f5f,0xc000010,0x448000,0x11401d94,0x4000000,0x200000,0x11403dcc,0x4000000,0xe00000,0x114457c1,0x4000008,0x81000a,0x114457c1,0x4000008,
+0x141000a,0x114457c1,0x4000010,0x87000a,0x114457c1,0x6800004,0x120000a,0x114457c1,0xc000010,0x84800a,0x114457ca,0x3802500,0x126246a,0x114457ca,0x7c00d00,0x2530c0a,
+0x114a3dc1,0x24000000,0x810000,0x114a3dc1,0x24000000,0x1410000,0x114a3dc1,0x24000008,0x810000,0x114a3dc1,0x24000008,0x1410000,0x114a3dc1,0x24000010,0x870000,0x114a3dc1,
+0x2c000010,0x848000,0x114a3dc7,0x4000000,0xe00000,0x114a3dc7,0x24000000,0xe00000,0x114a3dc7,0x24000002,0xe00000,0x114a3dc7,0x24000002,0x1200000,0x114a3dc7,0x24000008,
+0x810000,0x114a3dc7,0x24000008,0x1410000,0x114a3dca,0x7c00900,0x930c00,0x114a3dca,0x7c00900,0xe30c00,0x114a3dcc,0x7c00300,0xe30000,0x114a3eca,0x7000400,0x1200c02,
+0x114a3fc1,0x6800004,0x1200000,0x114a3fca,0x7c00d00,0x2530c00,0x114a42cc,0x4000000,0xe00000,0x114a42cc,0x4000000,0xe0000f,0x114a44cc,0x4000000,0xe00002,0x114a44cc,
+0x4000000,0xe00003,0x114a45cc,0x4000000,0xe00002,0x114a45cc,0x4000000,0xe0000d,0x11505113,0x24000000,0x810000,0x11505113,0x24000000,0x1410000,0x1180090a,0x2802400,
0x962460,0x11800c27,0x2802100,0x962460,0x11800c27,0x2802500,0x962460,0x11800f32,0x2802400,0x962460,0x11800f3f,0x2802400,0x962460,0x11820700,0x2802400,0x962460,
-0x11820700,0x2802500,0x962460,0x118a3dcb,0x2802400,0x962460,0x118a3ec8,0x2802400,0x962460,0x11c00904,0x2802400,0x962460,0x11c00908,0x2802400,0x962460,0x11c00c2c,
+0x11820700,0x2802500,0x962460,0x118a3dcd,0x2802400,0x962460,0x118a3eca,0x2802400,0x962460,0x11c00904,0x2802400,0x962460,0x11c00908,0x2802400,0x962460,0x11c00c2c,
0x6800000,0x1329800,0x11c00c30,0xc000010,0xb48000,0x11c00f78,0x6800000,0x1329800,0x11c0107d,0x6800000,0x1329800,0x11c01181,0x6800000,0x1329800,0x11c01285,0x6800000,
-0x1329800,0x11c01489,0x4000000,0x200000,0x11c01489,0x6800000,0x1329800,0x11c0168d,0x6800000,0x1329800,0x11d05107,0x7c00100,0x230408,0x20000067,0x1000,0,
+0x1329800,0x11c01489,0x4000000,0x200000,0x11c01489,0x6800000,0x1329800,0x11c0168d,0x6800000,0x1329800,0x11d05117,0x7c00100,0x230408,0x20000067,0x1000,0,
0x20000b13,0x2802400,0x962460,0x20000b13,0x2802500,0x962460,0x20001b27,0x2802100,0x962460,0x20001b27,0x2802100,0x962461,0x20001b27,0x2802400,0x962460,0x20001b27,
0x2802500,0x962460,0x20001b27,0x2806400,0x962460,0x20001b27,0x2902100,0x962462,0x20001b27,0x4000000,0x200000,0x20001b27,0x4000000,0x400000,0x20001b27,0x4000000,
0x500000,0x20001b27,0x4000000,0x810000,0x20001b27,0x4000000,0xb00000,0x20001b27,0x4000000,0xc0000b,0x20001b27,0x4000000,0x1410000,0x20001b27,0x4000010,0xb00000,
@@ -3692,7 +3705,7 @@ static const uint32_t propsVectors[7230]={
0x200400,0x3000080e,0x7c00100,0x220400,0x30000908,0x2000,0x962460,0x30000908,0x7c00100,0x220400,0x30000908,0x7c00100,0x220401,0x30000908,0x7c00100,0x250400,
0x30000908,0x7c00100,0x250401,0x30000a03,0x4000006,0x400400,0x30000c02,0x4000000,0x200000,0x30000c02,0x7c00100,0x230400,0x30000d22,0x2802100,0x962460,0x30000d22,
0x2802400,0x962460,0x30000d22,0x2802500,0x962460,0x30000d22,0x4000000,0x200000,0x30000d22,0x4000010,0x200000,0x30000d22,0x7c00100,0x230400,0x30000d22,0xc000010,
-0x248000,0x30000d22,0x80000000,0x218960,0x30000e25,0x2802500,0x962460,0x30000e25,0x7c00100,0x230400,0x30001821,0x2802100,0x962460,0x30001821,0x2806400,0x962460,
+0x248000,0x30000d22,0x80000000,0x218560,0x30000e25,0x2802500,0x962460,0x30000e25,0x7c00100,0x230400,0x30001821,0x2802100,0x962460,0x30001821,0x2806400,0x962460,
0x30001821,0x4000000,0x200000,0x30001821,0x6800100,0x962540,0x30001821,0x6800100,0x962541,0x30001821,0x7c00100,0x230400,0x30001b27,0x2802100,0x962460,0x30001b27,
0x2802400,0x962460,0x30001b27,0x4000000,0x200000,0x30001b27,0x4000000,0x400000,0x30001b27,0x7c00100,0x230400,0x30001c1c,0x2802100,0x1862460,0x30001c1c,0x2802400,
0x1862460,0x30001c1c,0x2806400,0x1862460,0x30001c1c,0x4000000,0x200000,0x30001c1c,0x6800100,0x1862400,0x30001c1c,0x6800100,0x1862540,0x30001c1c,0x7c00100,0x1830000,
@@ -3701,292 +3714,294 @@ static const uint32_t propsVectors[7230]={
0x230400,0x30002128,0xc000010,0x248000,0x3000221d,0x4000000,0x810000,0x3000221d,0x4000000,0x1410000,0x3000221d,0x4000001,0x445800,0x3000221d,0x7c00100,0x230400,
0x30002300,0x4000010,0x400000,0x30002320,0x7c00100,0x230400,0x30002417,0x2802100,0x1862460,0x30002417,0x2802400,0x1862460,0x30002417,0x2806400,0x1862460,0x30002417,
0x2882000,0x1862460,0x30002417,0x4000000,0x200000,0x30002417,0x4000000,0x400000,0x30002417,0x4000000,0x1600000,0x30002417,0x4000010,0x400000,0x30002417,0x4000010,
-0x1200000,0x30002417,0x6800000,0x1329800,0x30002417,0x6800100,0x1862540,0x30002417,0x7c00100,0x1830000,0x30002417,0x7d00100,0x1830000,0x3000251b,0x80000,0xc18820,
-0x3000251b,0x2802100,0x962460,0x3000251b,0x3c02100,0x962460,0x3000251b,0x4000000,0x200000,0x3000251b,0x4000006,0x500000,0x3000251b,0x4000010,0x400000,0x3000251b,
-0x4000010,0xb70000,0x3000251b,0x4000800,0x200000,0x3000251b,0x6800000,0x1329800,0x3000251b,0x7c00100,0x230400,0x3000251b,0x7c00900,0x230400,0x3000251b,0xc000010,
-0xb48000,0x3000251b,0x12882000,0x962460,0x30002800,0x24000000,0x200000,0x30002800,0x2c000010,0x1248002,0x30002a00,0x4000000,0x1600000,0x30002b01,0x2000,0x962460,
-0x30002c00,0x4000000,0x200000,0x30002c00,0x7c00100,0x220405,0x30002d19,0x7c00100,0x250400,0x30002e00,0x24000000,0x200000,0x30003000,0x24000000,0x200000,0x30003100,
-0x24000000,0x200000,0x30003600,0x24000000,0x200000,0x30003700,0x24000000,0x200000,0x3000392e,0x24000000,0x200000,0x30005013,0x7c00100,0x2633801,0x30005600,0,
-0x918820,0x30020600,0x4000400,0x500400,0x30020701,0x2802400,0x962460,0x30020701,0x2802400,0xc62460,0x300a3a11,0x4020000,0xe00000,0x300a3a11,0x4020000,0xe00002,
-0x300a3b11,0x4020000,0xe00002,0x300a3c00,0x4008000,0xe00000,0x300a3c00,0x4010000,0xe00000,0x300a3d11,0x7c00300,0xe30002,0x300a4305,0x7c00100,0xe30400,0x300a4611,
-0x7c40300,0xe30000,0x300a4829,0x7c00100,0xe30400,0x300a4829,0x7c00900,0x1230400,0x300a4929,0x4000000,0xe00000,0x3040259a,0x4000010,0x400000,0x3040259a,0x4000010,
-0xb70000,0x3040259a,0xc000010,0xb48000,0x304028ba,0x4000001,0xc41c0b,0x304a3dca,0x4000000,0xe00000,0x30800c27,0x2802100,0x962460,0x30c01c92,0x6800000,0x1329800,
-0x3100080e,0x7c00120,0x220402,0x3100080e,0x7c00120,0x250402,0x31005167,0x1000,0,0x3100581e,0x4000000,0x200000,0x3100581e,0x7c00100,0x230400,0x3100590d,
-0x7c00100,0x230400,0x31005a09,0x7c00100,0x220400,0x31005a09,0x7c00100,0x250400,0x31005b00,0x4000000,0x200000,0x31005c00,0x80000,0x918820,0x31005c00,0x2802000,
-0x962460,0x31005c00,0x2802400,0x962460,0x31005c00,0x4000000,0x200000,0x31005c00,0x4000000,0x200001,0x31005c00,0x6800000,0x962540,0x31005c00,0x6800400,0x962540,
-0x31005c01,0x2802400,0x962460,0x31005d00,0x4000020,0x200005,0x31005d00,0x6800020,0x1329805,0x31005d00,0x7c00120,0x220405,0x31005d00,0x7c00120,0x250405,0x31006000,
-0x82000,0x962460,0x31006000,0x180000,0x918820,0x310a5e11,0x7c40300,0xe30000,0x310a5f11,0x7c00300,0xe30001,0x32000419,0x7c00100,0x250400,0x3200080e,0x4000020,
-0x200000,0x3200080e,0x7c00100,0x220400,0x3200080e,0x7c00100,0x250400,0x32000908,0x7c00100,0x220400,0x32000908,0x7c00100,0x250400,0x32000c02,0x7c00100,0x230400,
-0x32000e25,0x7c00100,0x230400,0x32001d0c,0x7c00100,0x230400,0x32002800,0x80000,0x1e18820,0x32002800,0x80020,0x218820,0x32002800,0x4000001,0x445802,0x32002800,
-0x24000000,0x200000,0x32002800,0x24000000,0x1500002,0x32002800,0x24000020,0x200000,0x32002800,0x2c000010,0x1248002,0x32002919,0x7c00100,0x22040f,0x32002a00,0x4000000,
-0x1600000,0x32002b01,0x2000,0x962460,0x32002b01,0x2802000,0x962460,0x32002b01,0x2802020,0x962460,0x32002c00,0x4000000,0x200000,0x32002c00,0x4000020,0x200000,
-0x32002c00,0x4000020,0x200005,0x32002c00,0x7c00120,0x220405,0x32002c00,0x7c00120,0x250405,0x32002e00,0x24000020,0x200000,0x32002f00,0x24000020,0x200000,0x32003000,
-0x24000000,0x200000,0x32003000,0x24000020,0x200000,0x32003500,0x24000000,0x200000,0x32003600,0x24000020,0x200000,0x32003700,0x24000000,0x100000,0x32003700,0x24000000,
-0x200000,0x32003800,0x24000000,0x810000,0x32003800,0x24000000,0x1410000,0x32005102,0x4000000,0x1500008,0x32005502,0x7c00100,0x230400,0x32006108,0x7c00100,0x220400,
-0x32006108,0x7c00100,0x250400,0x3200622a,0x2802100,0x962460,0x3200622a,0x2806400,0x962460,0x3200622a,0x7c00100,0x230400,0x3200632b,0x2802100,0x962460,0x3200632b,
-0x6804000,0x962540,0x3200632b,0x7c00100,0x230400,0x3200642c,0x2802100,0x962460,0x3200642c,0x7c00100,0x230400,0x3200652d,0x2802100,0x962460,0x3200652d,0x7c00100,
-0x230400,0x32006600,0x24000020,0x200000,0x32006700,0x24000020,0x200000,0x32006800,0x24000020,0x200000,0x32006900,0x24000020,0x200000,0x32006900,0x24000020,0x810000,
-0x32006900,0x24000020,0x1410000,0x32006a00,0x24000020,0x200000,0x32006a00,0x24000020,0x200001,0x32006a00,0x24000020,0x200002,0x32020701,0x2882000,0xc62460,0x32023300,
-0x4000000,0x100000,0x32026c01,0x12882000,0x962460,0x32065700,0x4000000,0x810011,0x32065700,0x4000000,0x1410011,0x32086600,0x24000020,0x810000,0x32086600,0x24000020,
-0x1410000,0x32086900,0x24000020,0x810000,0x32086900,0x24000020,0x1410000,0x320a3600,0x24000020,0x200000,0x320a3d11,0x7c00100,0x1230400,0x320a3e14,0x7c00100,0xe30010,
-0x320a3e14,0x7c00100,0x2530000,0x320a3f16,0x7c00100,0xe30c10,0x320a4400,0x4000000,0xe00003,0x320a4929,0x4000000,0xe00000,0x320a4f11,0x7c00300,0xe30001,0x320a6b16,
-0x7c00100,0x2530c00,0x32406396,0xc000010,0x448000,0x324a3dcd,0x4000000,0xe00000,0x324a3dcd,0x7c00100,0x1230400,0x324a3fc8,0x4000002,0x1200c00,0x324a53c5,0x24000000,
-0xe00000,0x32820701,0x2802000,0x962460,0x40000419,0x7c00100,0x220400,0x40000519,0x7c00100,0x220400,0x40000600,0x4000400,0x200400,0x4000080e,0x7c00100,0x220400,
-0x4000080e,0x7c00100,0x250400,0x4000080e,0x7c00100,0x250402,0x40000c02,0x2802100,0x962460,0x40000c02,0x2802400,0x962460,0x40000c02,0x2802500,0x962460,0x40000c02,
-0x4000000,0x200000,0x40000c02,0x4000000,0x1071400,0x40000c02,0x7c00100,0x230400,0x40000c02,0x80000000,0x218960,0x40000d22,0x7c00100,0x230400,0x40000f0a,0x7c00100,
-0x230400,0x40001004,0x7c00100,0x230400,0x40001110,0x2802100,0x962460,0x40001110,0x6800100,0x962540,0x4000120f,0x2802100,0x962460,0x4000120f,0x4000000,0x1600000,
-0x4000120f,0x7c00100,0x230400,0x4000131f,0x7c00100,0x230400,0x40001423,0x4000000,0x200000,0x40001423,0x4000000,0x1600000,0x40001615,0x2802400,0x962460,0x40001615,
-0x7c00100,0x230400,0x40002417,0x2802400,0x1862460,0x40002417,0x4000000,0x200000,0x40002800,0x6800000,0x201c00,0x40002800,0x24000002,0x200000,0x40002c00,0x4000000,
-0x200002,0x40003000,0x24000000,0x200000,0x40003000,0x24000020,0x200000,0x40003700,0x24000000,0x200000,0x40005a09,0x7c00100,0x220400,0x40005a09,0x7c00100,0x250400,
-0x40005d00,0x7c00120,0x220405,0x40006f30,0x2802100,0x962460,0x40006f30,0x2802400,0x962460,0x40006f30,0x4000000,0x200000,0x40006f30,0x6800000,0x1329800,0x40006f30,
-0x6800100,0x962540,0x40006f30,0x7c00100,0x230400,0x40006f30,0xc000010,0xb48000,0x40007034,0x7c00100,0x1830000,0x40007117,0x4000000,0x200000,0x40007208,0x7c00100,
-0x220400,0x4000720e,0x7c00100,0x220400,0x4000720e,0x7c00500,0x22040e,0x4000720e,0x7c00500,0x22040f,0x40007219,0x7c00100,0x220400,0x40007219,0x7c00500,0x220400,
-0x40007219,0x7c00500,0x22040e,0x40007219,0x7c00500,0x22040f,0x40007300,0x24000000,0x200000,0x40007400,0x4000000,0x200000,0x40007531,0x7c00100,0x230400,0x40007631,
-0x7c00100,0x230400,0x40007835,0x4000010,0x400000,0x40007835,0x7c00100,0x230400,0x40007933,0x7c00100,0x230400,0x40007a32,0x6800000,0x1329800,0x40007a32,0x7c00100,
-0x230400,0x40007b2f,0x7c00100,0x230400,0x40007c00,0x4000000,0x200000,0x40020701,0x2802400,0x962460,0x40020701,0x2802400,0xc62460,0x40023300,0x4000000,0x200000,
-0x40027d01,0x12882000,0x962460,0x400a3700,0x24000000,0x200000,0x400a3700,0x24000000,0xe00000,0x400a4400,0x4000000,0xe0000d,0x400a4412,0x4000000,0xe00002,0x400a4412,
-0x4000000,0xe00003,0x400a4500,0x4000000,0xe0000d,0x400a5300,0x4000000,0x810010,0x400a5300,0x4000000,0x1410010,0x40507709,0x4000000,0x200000,0x4050770c,0x4000000,
-0x400000,0x4050770f,0x4000000,0x200000,0x4050770f,0x4000000,0x400000,0x40c01489,0x4000000,0x200000,0x40d05107,0x4000000,0x200000,0x41000419,0x7c00100,0x220400,
-0x41000419,0x7c00100,0x250400,0x4100080e,0x7c00100,0x220400,0x4100080e,0x7c00100,0x250400,0x41000908,0x7c00100,0x220400,0x41000908,0x7c00100,0x250400,0x41000b13,
-0x2802000,0x962460,0x41000b13,0x2802100,0x962460,0x41000b13,0x4000000,0xb00000,0x41000c02,0x2802100,0x962460,0x41000c02,0x4000000,0x1500000,0x41000c02,0xc000010,
-0xb48000,0x41000f0a,0x7c00100,0x230400,0x41001004,0x7c00100,0x230400,0x41001423,0x7c00100,0x230400,0x41001b27,0x4000000,0x500000,0x41001d0c,0x7c00100,0x22040f,
-0x41001d0c,0x7c00100,0x230400,0x41001f0b,0x2802400,0x962460,0x41001f0b,0x4000000,0x200000,0x41001f0b,0x7c00100,0x230400,0x41002800,0x24000000,0x200000,0x41002800,
-0x24000000,0x400000,0x41002919,0x7c00100,0x22040e,0x41002a00,0x4000000,0x1600000,0x41002b01,0x2802020,0x962460,0x41002c00,0x4000000,0x200000,0x41002c00,0x7c00120,
-0x220405,0x41003000,0x24000000,0x200000,0x41003700,0x24000000,0x200000,0x41003700,0x24000000,0xe00000,0x41005d00,0x7c00120,0x220405,0x41006600,0x24000020,0x200000,
-0x41006600,0x24000020,0x810000,0x41006600,0x24000020,0x1410000,0x41007208,0x7c00100,0x22040f,0x41007219,0x7c00100,0x220400,0x41007300,0x24000000,0x200000,0x41007e0e,
-0x2802000,0x962460,0x41007e0e,0x4000000,0x200000,0x41007f0e,0x4000000,0x200000,0x41007f0e,0x7c00100,0x230400,0x41008002,0x7c00100,0x230400,0x41008137,0x2802100,
-0x962460,0x41008137,0x4000000,0x200000,0x41008137,0x6800100,0x962540,0x41008137,0x7c00100,0x230400,0x41008301,0x2802000,0x962460,0x41008407,0x4000000,0x200000,
-0x41008407,0x4000000,0x400000,0x41008407,0x4000000,0xb00000,0x41008407,0x7c00100,0x220400,0x41008407,0x7c00100,0x250400,0x4100850b,0x7c00100,0x230400,0x4100860b,
-0x4000000,0x200000,0x4100860b,0x7c00100,0x230400,0x4100870c,0x7c00100,0x220400,0x41008838,0x7c00100,0x220400,0x41008838,0x7c00100,0x250400,0x41008939,0x2802000,
-0x962460,0x41008939,0x2802100,0x962460,0x41008939,0x2806000,0x962460,0x41008939,0x4000000,0x200000,0x41008939,0x4000000,0x400000,0x41008939,0x7c00100,0x230400,
-0x41008939,0xc000010,0x448000,0x41008a00,0x4000400,0x200400,0x41008b3b,0x4000000,0x1800000,0x41008b3b,0x6800000,0x1329800,0x41008b3b,0x7c00100,0x1830000,0x41008b3b,
-0x7e00100,0x1830000,0x41008c3d,0x4000010,0x400000,0x41008c3d,0x7c00100,0x230400,0x41008d0e,0x7c00100,0x22040f,0x41008d19,0x7c00100,0x220400,0x41008d19,0x7c00100,
-0x22040f,0x41008e00,0x24000000,0x200000,0x41008e00,0x24000000,0x400000,0x41008e00,0x24000000,0x1710000,0x41008e00,0x24000006,0x400000,0x41008f3a,0x2802100,0x962460,
-0x41008f3a,0x2806000,0x962460,0x41008f3a,0x4000000,0x200000,0x41008f3a,0x6800100,0x962540,0x41008f3a,0x7c00100,0x230400,0x4100903c,0x7c00100,0x230400,0x4100903c,
-0x7c00100,0x23040f,0x41020701,0x2802000,0x962460,0x41020701,0x2802000,0xc62460,0x410a3700,0x24000000,0x200000,0x410a3700,0x24000000,0xe00000,0x410a4412,0x4000000,
-0xe00003,0x410a4711,0x7c40300,0xe30000,0x410a4f11,0x7c00300,0xe30001,0x410a9100,0x4000000,0x800010,0x410a9100,0x4000000,0x810010,0x410a9100,0x4000000,0x870010,
-0x410a9100,0x4000000,0xb00010,0x410a9100,0x4000000,0xf00010,0x410a9100,0x4000000,0x1001410,0x410a9100,0x4000000,0x1071010,0x410a9100,0x4000000,0x1071410,0x410a9100,
-0x4000000,0x1410010,0x41408ad0,0x4000400,0x200000,0x414a82ca,0x4000000,0xe00000,0x41808300,0x2802000,0x962460,0x41c01489,0x6800000,0x1329800,0x50000419,0x7c00100,
-0x220400,0x50000419,0x7c00100,0x250400,0x5000080e,0x7c00100,0x220400,0x50000908,0x7c00100,0x220400,0x50000908,0x7c00100,0x250400,0x50000b13,0x2802500,0x962460,
-0x50000f0a,0x7c00100,0x230400,0x50001615,0x2802100,0x962460,0x50001615,0x7c00100,0x230400,0x50002b01,0x2802020,0x962460,0x50002c00,0x4000000,0x200000,0x50002c19,
-0x7c00100,0x220400,0x50002d19,0x7c00100,0x220400,0x50003000,0x24000000,0x200000,0x50003000,0x24000020,0x200000,0x50003700,0x24000000,0x200000,0x50005d00,0x7c00120,
-0x220405,0x50005d00,0x7c00120,0x250405,0x50006108,0x7c00100,0x220400,0x50006108,0x7c00100,0x250400,0x50006600,0x24000020,0x200000,0x50007300,0x24000000,0x200000,
-0x50008301,0x2802400,0x962460,0x50008a00,0x7c00500,0x230400,0x50009257,0x2802400,0x962460,0x50009257,0x4000000,0x200000,0x50009257,0x4000010,0x1071400,0x50009257,
-0x6800000,0x1329800,0x50009257,0x7c00100,0x230400,0x50009257,0x7c00500,0x230400,0x50009257,0x7c00900,0x230400,0x50009257,0xc000010,0xb48000,0x5000933e,0x2802100,
-0x962460,0x5000933e,0x2802400,0x962460,0x5000933e,0x4000000,0x200000,0x5000933e,0x4000000,0x400000,0x5000933e,0x4000010,0x400000,0x5000933e,0x6800000,0x1329800,
-0x5000933e,0x6800100,0x962540,0x5000933e,0x6800100,0x962541,0x5000933e,0x6804400,0x962540,0x5000933e,0x7c00100,0x230400,0x5000933e,0x7c00100,0x230401,0x5000933e,
-0xc000010,0x448000,0x50009419,0x7c00100,0x220400,0x50009419,0x7c00100,0x250400,0x50009500,0x4000400,0x200400,0x5000965a,0x4000000,0x500000,0x5000965a,0x7c00100,
-0x230400,0x5000965a,0xc000010,0xb48000,0x5000975b,0x4000000,0x200000,0x5000975b,0x4000010,0x400000,0x5000975b,0x7c00100,0x230400,0x50009865,0x7c00100,0x230400,
-0x50009965,0x4000010,0x400000,0x50009965,0x7c00100,0x230400,0x50409aca,0x4000000,0x200000,0x5100080e,0x7c00100,0x220400,0x5100080e,0x7c00100,0x250400,0x51000c02,
-0x2802100,0x962460,0x51000c02,0x4000000,0x1500000,0x51000c02,0x4000020,0x200000,0x51000c02,0x7c00100,0x230400,0x51000f0a,0x7c00100,0x230400,0x51000f0a,0x7c00500,
-0x230400,0x51001110,0x2802100,0x962460,0x5100131f,0x2802100,0x962460,0x51001423,0x7c00100,0x230400,0x51001524,0x2802100,0x962460,0x51001524,0x4000000,0x200000,
-0x51001524,0x7c00100,0x230400,0x5100171a,0x2802100,0x962460,0x5100171a,0x4000000,0x200000,0x5100171a,0x4000000,0x1500000,0x5100171a,0x7c00100,0x230400,0x51001b27,
-0x4000000,0x200000,0x51001b27,0x4000000,0x400000,0x51001b27,0x4000000,0x500000,0x51001b27,0x7c00100,0x230400,0x51001c1c,0x2802100,0x1862460,0x51001c1c,0x2802500,
-0x1862460,0x51001c1c,0x2806400,0x1862460,0x51001c1c,0x4000000,0x1800000,0x51001c1c,0x6800000,0x1329800,0x51001c1c,0x6800100,0x1862400,0x51001c1c,0x6800100,0x1862540,
-0x51001c1c,0x6800500,0x1862400,0x51001c1c,0x7c00100,0x1830000,0x5100251b,0x7c00100,0x230400,0x51002619,0x7c00100,0x220400,0x51002619,0x7c00100,0x250400,0x51002800,
-0x80020,0x218820,0x51002c00,0x4000000,0x200000,0x51002d19,0x7c00100,0x230400,0x51003700,0x24000000,0x200000,0x51003700,0x24000000,0xe00000,0x51005201,0x2802400,
-0x962460,0x51005c00,0x4000000,0x200000,0x51006108,0x7c00100,0x220400,0x51006108,0x7c00100,0x250400,0x51006600,0x24000020,0x200000,0x51006600,0x24000020,0x810000,
-0x51006600,0x24000020,0x1410000,0x51007300,0x24000000,0x200000,0x51007300,0x24000020,0x200000,0x51008002,0x7c00100,0x230400,0x51008301,0x2802000,0x962460,0x51008301,
-0x2802400,0x962460,0x51008301,0x2802400,0xc62460,0x51008a00,0x7c00500,0x230400,0x51008e00,0x24000000,0x200000,0x51008e00,0x24000000,0x400000,0x51008e00,0x24000000,
-0x810000,0x51008e00,0x24000000,0x1400000,0x51008e00,0x24000000,0x1410000,0x51008e00,0x24000000,0x1710000,0x51008e00,0x24000002,0x200000,0x51008e00,0x24000500,0x230400,
-0x51008e00,0x2c000010,0xb48000,0x51009419,0x7c00100,0x220400,0x51009419,0x7c00100,0x22040e,0x51009419,0x7c00100,0x22040f,0x51009419,0x7c00100,0x250400,0x51009500,
-0x4000400,0x200400,0x51009500,0x7c00500,0x230400,0x51009519,0x7c00100,0x220400,0x51009519,0x7c00100,0x22040f,0x51009519,0x7c00100,0x230400,0x51009519,0x7c00100,
-0x250400,0x51009b71,0x2802100,0x962460,0x51009b71,0x6800000,0x1329800,0x51009b71,0x6800100,0x962540,0x51009b71,0x6804400,0x962540,0x51009b71,0x7c00100,0x230400,
-0x51009c52,0x2802100,0x962460,0x51009c52,0x2802400,0x962460,0x51009c52,0x2802d00,0x962460,0x51009c52,0x4000010,0x400000,0x51009c52,0x6800000,0x1329800,0x51009c52,
-0x6800100,0x962540,0x51009c52,0x7c00100,0x230400,0x51009c52,0xc000010,0x448000,0x51009d6d,0x6800000,0x1329800,0x51009d6d,0x7c00100,0x230400,0x51009d6d,0x7c00500,
-0x230400,0x51009d6d,0x7c00d00,0x230400,0x51009d6d,0xc000010,0x448000,0x51009e08,0x2802100,0x962460,0x51009f63,0x4000010,0x400000,0x51009f63,0x6800000,0x1329800,
-0x51009f63,0x7c00100,0x230400,0x51009f63,0x7c00900,0x230400,0x51009f63,0xc000010,0x448000,0x51009f63,0xc000010,0xb48000,0x5100a008,0x2000,0x962460,0x5100a008,
-0x2802400,0x962460,0x5100a008,0x4000000,0x200000,0x5100a008,0x7c00100,0x220400,0x5100a008,0x7c00100,0x230400,0x5100a008,0x7c00100,0x250400,0x5100a008,0x7c00500,
-0x230400,0x5100a16f,0x2806400,0x962460,0x5100a16f,0x6800000,0x1329800,0x5100a16f,0x6800100,0x962540,0x5100a16f,0x7c00100,0x230400,0x5100a16f,0xc000010,0x448000,
-0x5100a24f,0x2802100,0x962460,0x5100a24f,0x2802400,0x962460,0x5100a24f,0x6800000,0x1329800,0x5100a24f,0x7c00100,0x230400,0x5100a24f,0xc000010,0x448000,0x5100a36e,
-0x2802100,0x962460,0x5100a36e,0x4000000,0x200000,0x5100a36e,0x6800100,0x962540,0x5100a36e,0x6804400,0x962540,0x5100a36e,0x7c00100,0x230400,0x5100a442,0x2802100,
-0x962460,0x5100a442,0x4000000,0x200000,0x5100a442,0x6800000,0x1329800,0x5100a442,0x6800100,0x962540,0x5100a442,0x7c00100,0x230400,0x5100a442,0xc000010,0x448000,
-0x5100a500,0x4000000,0x200000,0x5100a600,0x4000000,0x200000,0x5100a601,0x2802000,0x962460,0x5100a76b,0x7c00100,0x230400,0x5100a868,0x7c00100,0x230400,0x5100a96c,
-0x4000000,0x200000,0x5100a96c,0x7c00100,0x230400,0x5100aa00,0x4000000,0xe00000,0x5100ab00,0x4000000,0xe00000,0x51086600,0x24000020,0x810000,0x51086600,0x24000020,
-0x1410000,0x510a4005,0x7c00100,0xe30400,0x510a4711,0x7c40300,0xe30000,0x510a7300,0x24000000,0x200000,0x510aaa00,0x4000000,0xe00000,0x5140a2fe,0x4000400,0x400000,
-0x514a82ca,0x4000000,0xe00000,0x51802bbc,0x2802000,0x962460,0x51c00908,0x2802400,0x962460,0x51c0a008,0x2802400,0x962460,0x52000f0a,0x2802100,0x962460,0x52000f0a,
-0x6800100,0x962540,0x52000f0a,0x7c00100,0x230400,0x52001004,0x4000000,0x1600000,0x52001b00,0x4000000,0x200000,0x52001c1c,0x2802100,0x1862460,0x52001c1c,0x6800100,
-0x1862400,0x52001c1c,0x6800500,0x1862400,0x52001e12,0x7c00100,0x2230500,0x52001e12,0x7c00100,0x2330520,0x52002128,0x4000002,0x400000,0x52002128,0x7c00100,0x230400,
-0x52002a00,0x4000000,0x1500000,0x52002a00,0x4000000,0x1600000,0x52002d00,0x4000000,0x200006,0x52003000,0x24000000,0x200000,0x52006108,0x7c00100,0x220400,0x52006108,
-0x7c00100,0x250400,0x52008301,0x2802400,0x962460,0x52008407,0x2802400,0x962460,0x52008407,0x7c00100,0x220400,0x52008407,0x7c00100,0x250400,0x52008b3b,0x6800000,
-0x1800000,0x52008b3b,0x7c00100,0x1830000,0x52008e00,0x24000000,0x400000,0x52009419,0x7c00100,0x250400,0x5200975b,0x4000000,0x200000,0x5200ac7e,0x2802000,0x962460,
-0x5200ac7e,0x2802100,0x962460,0x5200ac7e,0x2802400,0x962460,0x5200ac7e,0x4000010,0x200000,0x5200ac7e,0x7c00100,0x230400,0x5200ac7e,0xc000010,0x248000,0x5200ad28,
-0x7c00100,0x230400,0x5200ae6a,0x2802100,0x1862460,0x5200ae6a,0x2802400,0x962460,0x5200ae6a,0x2802400,0x1862460,0x5200ae6a,0x2806000,0x1862460,0x5200ae6a,0x4000000,
-0x1800000,0x5200ae6a,0x6800000,0x1329800,0x5200ae6a,0x6800100,0x1862400,0x5200ae6a,0x6800100,0x1862540,0x5200ae6a,0x7c00100,0x1830000,0x5200ae6a,0x7c00900,0x1830000,
-0x5200ae6a,0xc000010,0x1848000,0x5200b083,0x4000010,0x400000,0x5200b083,0x7c00100,0x230400,0x5200b083,0xc000010,0x448000,0x5200b182,0x2802400,0x962460,0x5200b182,
-0x4000000,0x200000,0x5200b182,0x4000010,0x400000,0x5200b182,0x7c00100,0x230400,0x5200b182,0xc000010,0x448000,0x5200b30a,0x2802400,0x962460,0x5200b30a,0x4000000,
-0x200000,0x5200b30a,0x7c00100,0x230400,0x5200b54e,0x2802100,0x962460,0x5200b54e,0x2802400,0x962460,0x5200b54e,0x4000000,0x200000,0x5200b54e,0x4000010,0x400000,
-0x5200b54e,0x6800000,0x1329800,0x5200b54e,0x6800100,0x962540,0x5200b54e,0x6804400,0x962540,0x5200b54e,0x7c00100,0x230400,0x5200b54e,0xc000010,0x448000,0x5200b61c,
-0x4000000,0x1800000,0x5200b61c,0x6800500,0x1862400,0x5200b61c,0x7c00100,0x1830000,0x5200b61c,0x7c00900,0x1830000,0x5200b77f,0x2802100,0x1862460,0x5200b77f,0x2802400,
-0x1862460,0x5200b77f,0x4000000,0x1800000,0x5200b77f,0x4000010,0x1800000,0x5200b77f,0x7c00100,0x1830000,0x5200b77f,0x7c00500,0x1830000,0x5200b77f,0x7c00900,0x1830000,
-0x5200b77f,0x7e00100,0x1830000,0x5200b873,0x2802100,0x962460,0x5200b873,0x2806400,0x962460,0x5200b873,0x6800000,0x1329800,0x5200b873,0x6800100,0x962540,0x5200b873,
-0x6800400,0x962540,0x5200b873,0x7c00100,0x230400,0x5200b873,0xc000010,0x448000,0x5200b912,0x7c00100,0x2230500,0x5200b912,0x7c00100,0x2330520,0x5200ba74,0x4000000,
-0x200000,0x5200ba74,0x4000010,0x400000,0x5200ba74,0x7c00100,0x230400,0x5200bb85,0x4000000,0x200000,0x5200bb85,0x7c00100,0x230400,0x5200bc75,0x4000000,0x400000,
-0x5200bc75,0x4000010,0x400000,0x5200bc75,0x7c00100,0x230400,0x5200bd7d,0x4000000,0x200000,0x5200bd7d,0x7c00100,0x230400,0x5200be7a,0x4000000,0x200000,0x5200be7a,
-0x7c00100,0x230400,0x5200bf58,0x7c00100,0x230400,0x5200c002,0x4000000,0x200000,0x5200c178,0x2802100,0x962460,0x5200c178,0x2802400,0x962460,0x5200c178,0x2806400,
-0x962460,0x5200c178,0x4000000,0x200000,0x5200c178,0x6800100,0x962540,0x5200c178,0x7c00100,0x230400,0x5200c178,0x7c00100,0x230401,0x5200c178,0xc000010,0x448000,
-0x5200c178,0x80000000,0x218960,0x5200c247,0x7c00100,0x230400,0x5200c247,0x7c00100,0x830400,0x5200c247,0x7c00100,0x1430400,0x5200c300,0x4000000,0x200003,0x52022d00,
-0x4000000,0x100006,0x52023700,0x24000000,0x100000,0x52023700,0x24000000,0xe00000,0x52023700,0x24000000,0x2800000,0x52024400,0x4000000,0x100000,0x52027300,0x24000000,
-0x100000,0x5202c300,0x4000000,0x100000,0x5202c300,0x4000000,0x100002,0x5202c300,0x4000000,0x100003,0x5202c300,0x4000000,0x10000d,0x5202c300,0x4000100,0x150400,
-0x5202c300,0x4000100,0x15040d,0x520a1e12,0x7c00100,0x2130480,0x520a3700,0x24000000,0xe00000,0x520a3800,0x24000000,0x100000,0x520a4711,0x7c40300,0xe30000,0x520a4f11,
-0x7c00300,0xe30001,0x520a7300,0x24000000,0x100000,0x520ab412,0x7c00100,0x2130480,0x520ac400,0x4000000,0xe00002,0x520ac400,0x4000000,0xe0000d,0x520ac414,0x4000000,
-0xe0000d,0x520ac511,0x7c40300,0xe30000,0x5240af9c,0x7c00100,0x230400,0x5240afa1,0x4000400,0x200000,0x5240afa3,0x6800400,0x962540,0x5240afa3,0x7c00100,0x230400,
-0x5240afad,0x7c00100,0x230400,0x5240afaf,0x7c00100,0x230400,0x5240b2d2,0x4000000,0x200000,0x5240b2d2,0x4000000,0x1500000,0x5240b2dd,0x4000000,0x200000,0x5240b2eb,
-0x4000000,0x200000,0x524a44ca,0x4000000,0xe00003,0x5250b501,0x7c00900,0x230400,0x5280af9c,0x2802400,0x962460,0x5280af9d,0x2802400,0x962460,0x5280afa3,0x2802400,
-0x962460,0x5280afa5,0x2802400,0x962460,0x5280afa7,0x2802400,0x962460,0x52c0b3f8,0x2802400,0x962460,0x52c0b3fc,0x7c00100,0x230400,0x60000c02,0x2802100,0x962460,
-0x60000c02,0x7c00100,0x230400,0x60000f0a,0x2802100,0x962460,0x60000f0a,0x6800100,0x962540,0x60000f0a,0x7c00100,0x230400,0x6000131f,0x4000000,0x200000,0x6000171a,
-0x7c00100,0x230400,0x6000171a,0x7c00100,0x230560,0x60001b27,0x2802100,0x962460,0x60001b27,0x4000000,0xc00000,0x60001b27,0x7c00100,0x230400,0x60001f0b,0x2802400,
-0x962460,0x60002919,0x7c00100,0x22040e,0x60002a00,0x4000000,0x1600000,0x60003000,0x24000000,0x200000,0x60003000,0x24000000,0xe00000,0x60003700,0x24000000,0x200000,
-0x60003800,0x24000000,0x1710000,0x60005102,0x4000000,0x200000,0x60006108,0x7c00100,0x220400,0x60006108,0x7c00100,0x250400,0x60006600,0x24000020,0x200000,0x60008301,
-0x2802400,0xc62460,0x6000903c,0x2806000,0x962460,0x6000903c,0x4000000,0x400000,0x60009519,0x7c00100,0x220400,0x60009519,0x7c00100,0x250400,0x6000a008,0x7c00100,
-0x220400,0x6000a008,0x7c00100,0x250400,0x6000c300,0x4000000,0x2703580,0x6000c654,0x2802000,0x962460,0x6000c654,0x4000010,0x200000,0x6000c654,0x7c00100,0x230400,
-0x6000c73f,0x2802000,0x962460,0x6000c73f,0x2802100,0x962460,0x6000c73f,0x4000000,0x200000,0x6000c73f,0x6800100,0x962540,0x6000c73f,0x6804000,0x962540,0x6000c73f,
-0x7c00100,0x230400,0x6000c80b,0x7c00100,0x230400,0x6000c941,0x2802100,0x962460,0x6000c941,0x2806400,0x962460,0x6000c941,0x4000000,0x200000,0x6000c941,0x4000010,
-0x200000,0x6000c941,0x6800000,0x1329800,0x6000c941,0x6800100,0x962540,0x6000c941,0x7c00100,0x230400,0x6000c941,0xc000010,0x448000,0x6000ca82,0x7c00100,0x230400,
-0x6000cc00,0x4000000,0xe00000,0x6000d000,0x4000000,0x200000,0x6002c300,0x4000000,0x100000,0x6002c300,0x4000000,0x10000d,0x6002c300,0x4000100,0x150400,0x6002c300,
-0x4000100,0x15040d,0x600a3000,0x24000000,0x200000,0x600a3000,0x24000000,0xe00000,0x600a3700,0x24000000,0x200000,0x600a3800,0x24000000,0x200000,0x600a3800,0x24000000,
-0x2800000,0x600a4305,0x7c00100,0xe30400,0x600ac300,0x4000000,0x100000,0x600ac400,0x4000000,0xe0000d,0x600acb14,0x7c00100,0xe30000,0x600acb16,0x7c00100,0xe30c00,
-0x600acc00,0x4000000,0xe00000,0x600acd00,0x4000000,0x200000,0x600acd00,0x4000000,0xe00000,0x600acd00,0x4000000,0x2800000,0x600ace00,0x4000000,0xe00000,0x600ace00,
-0x4000000,0x2800000,0x600acf00,0x4000000,0xe00000,0x600acf00,0x4000000,0x2800000,0x600ad111,0x7c40300,0xe30000,0x604ac4ca,0x4000000,0xe00003,0x61000a03,0x4000000,
-0x1600000,0x61000c02,0x80000000,0x218960,0x6100120f,0x4000000,0x200000,0x61001a18,0x7c00100,0x1830000,0x61001d0c,0x7c00100,0x230400,0x61001d0c,0x7c00100,0x250400,
-0x61006600,0x24000020,0x200000,0x61008407,0x7c00100,0x220400,0x61008407,0x7c00100,0x250400,0x6100870c,0x7c00100,0x220400,0x61008e00,0x24000000,0x200000,0x61008e00,
-0x24000000,0x400000,0x61008e00,0x24000002,0x300000,0x6100903c,0x7c00100,0x230400,0x61009519,0x7c00100,0x220400,0x61009519,0x7c00100,0x250400,0x61009519,0x7c00500,
-0x22040f,0x61009b71,0x2802100,0x962460,0x61009b71,0x2806400,0x962460,0x61009b71,0x7c00100,0x230400,0x6100a008,0x2802100,0x962460,0x6100c300,0x4000000,0x20000f,
-0x6100cd00,0x4000000,0x200000,0x6100d202,0x2802400,0x962460,0x6100d202,0x2802500,0x962460,0x6100d202,0x7c00100,0x230400,0x6100d302,0x4000020,0x200000,0x6100d302,
-0x7c00120,0x230405,0x6100d476,0x2802100,0x962460,0x6100d476,0x2802100,0x962461,0x6100d476,0x2806400,0x962460,0x6100d476,0x4000000,0x400000,0x6100d476,0x6800000,
-0x1329800,0x6100d476,0x6800100,0x962540,0x6100d476,0x7c00100,0x230400,0x6100d476,0xc000010,0x448000,0x6100d573,0x2802100,0x962460,0x6100d573,0x2806400,0x962460,
-0x6100d573,0x6800100,0x962540,0x6100d573,0x7c00100,0x230400,0x6100d573,0x7c00900,0x230400,0x6100d573,0xc000010,0x448000,0x6100d68d,0x7c00100,0x230400,0x6100d756,
-0x7c00100,0x230400,0x6100d85c,0x2802500,0x962460,0x6100d85c,0x6800100,0x962540,0x6100d85c,0x7c00100,0x230400,0x6100d85c,0x7c00500,0x230400,0x6100d997,0x2802100,
-0x962460,0x6100d997,0x4000000,0x200000,0x6100d997,0x4000000,0x400000,0x6100d997,0x6800000,0x1329800,0x6100d997,0x6800100,0x962540,0x6100d997,0x6804400,0x962540,
-0x6100d997,0x7c00100,0x230400,0x6100d997,0x7c00100,0x230560,0x6100d997,0xc000010,0x448000,0x6100da98,0x6800000,0x1329800,0x6100da98,0x7c00100,0x230400,0x6100db71,
-0x4000000,0x200000,0x6100dc99,0x2802100,0x962460,0x6100dc99,0x2802400,0x962460,0x6100dc99,0x6800000,0x1329800,0x6100dc99,0x6800100,0x962540,0x6100dc99,0x6804400,
-0x962540,0x6100dc99,0x7c00100,0x230400,0x610a4711,0x7c40300,0xe30000,0x610a4f11,0x7c00300,0xe30001,0x610ace00,0x4000000,0xe00000,0x6140afa1,0x7c00100,0x230400,
-0x6140afa3,0x7c00100,0x230400,0x6180af9e,0x2802400,0x962460,0x62002a00,0x4000000,0x1600000,0x63002800,0x80000,0x918820,0x63c00c15,0x80000,0x918820,0x7000080e,
-0x7c00100,0x250400,0x70000a03,0x4000000,0x200000,0x70000c00,0x80000000,0x218960,0x70000f0a,0x7c00100,0x230400,0x70001004,0x7c00100,0x230400,0x70001524,0x2802100,
-0x962460,0x70001524,0x7c00100,0x230400,0x70001615,0x2802100,0x962460,0x7000171a,0x2802100,0x962460,0x70001821,0x6800000,0x1329800,0x70002320,0x7c00100,0x230400,
-0x70002a00,0x4000000,0x1500000,0x70002a00,0x4000000,0x1600000,0x70003000,0x24000000,0x200000,0x70003800,0x24000000,0xe00000,0x70005201,0x2802400,0x962460,0x7000581e,
-0x7c00100,0x230400,0x70006108,0x7c00100,0x220400,0x70006108,0x7c00100,0x250400,0x70006f30,0x7c00100,0x230400,0x70007300,0x24000000,0x200000,0x70007f0e,0x4000000,
-0x200000,0x70008301,0x2802100,0x962460,0x70008301,0x2802400,0x962460,0x70008e00,0x24000000,0x200000,0x70008e00,0x24000000,0x400000,0x70008e00,0x24000002,0x400000,
-0x70008e00,0x24000008,0x1410000,0x70008e00,0x24000010,0x400000,0x70008e00,0x2c000010,0x448000,0x70009519,0x7c00100,0x220400,0x70009519,0x7c00100,0x230400,0x70009519,
-0x7c00100,0x250400,0x70009865,0x7c00100,0x230400,0x70009965,0x4000010,0x400000,0x70009965,0x7c00100,0x230400,0x7000a008,0x7c00100,0x220400,0x7000a008,0x7c00100,
-0x250400,0x7000a008,0x7c00500,0x22040f,0x7000a50e,0x4000000,0x200000,0x7000b61c,0x2802500,0x1862460,0x7000b61c,0x6800500,0x1862400,0x7000b61c,0x7c00100,0x1830000,
-0x7000c300,0x4000000,0x100000,0x7000c941,0x2806000,0x962460,0x7000cc00,0x4000000,0xe00000,0x7000cd00,0x4000000,0x200000,0x7000cd00,0x4000000,0xe00000,0x7000cd00,
-0x4000000,0x2800000,0x7000cf00,0x4000000,0xe00000,0x7000d202,0x2802100,0x962460,0x7000d202,0x7c00100,0x230400,0x7000d997,0x7c00100,0x230400,0x7000d997,0xc000010,
-0x248000,0x7000dd86,0x2802400,0x962460,0x7000dd86,0x7c00100,0x230400,0x7000dd86,0xc000010,0x448000,0x7000de9f,0x4000000,0x200000,0x7000de9f,0x7c00100,0x230400,
-0x7000e001,0x2400,0x962460,0x7000e001,0x2802400,0x962460,0x7000e187,0x2802000,0x962460,0x7000e187,0x2802100,0x962460,0x7000e187,0x4000000,0x200000,0x7000e187,
-0x7c00100,0x230400,0x7000e187,0xc000010,0x448000,0x7000e288,0x7c00100,0x230400,0x7000e300,0x4000000,0x200000,0x7000e489,0x2802100,0x962460,0x7000e489,0x2802400,
-0x962460,0x7000e489,0x6800100,0x962540,0x7000e489,0x6800100,0x962541,0x7000e489,0x6804400,0x962540,0x7000e489,0x7c00100,0x230400,0x7000e489,0x7c00900,0x230400,
-0x7000e59d,0x2802100,0x962460,0x7000e59d,0x2802400,0x962460,0x7000e59d,0x4000000,0x200000,0x7000e59d,0x4000010,0x200000,0x7000e59d,0x6800100,0x962540,0x7000e59d,
-0x6804400,0x962540,0x7000e59d,0x7c00100,0x230400,0x7000e59d,0xc000010,0x448000,0x7000e691,0x2802100,0x962460,0x7000e691,0x2802400,0x962460,0x7000e691,0x2806400,
-0x962460,0x7000e691,0x6800000,0x1329800,0x7000e691,0x6800100,0x962540,0x7000e691,0x7c00100,0x230400,0x7000e700,0x4000400,0x200400,0x7000e70e,0x7c00100,0x220400,
-0x7000e719,0x7c00100,0x220400,0x7000e719,0x7c00500,0x22040f,0x7000e853,0x7c00100,0x230400,0x7000e9a0,0x2802400,0x962460,0x7000e9a0,0x4000000,0x200000,0x7000e9a0,
-0x4000000,0x500000,0x7000e9a0,0x7c00100,0x230400,0x7000ea79,0x2802400,0x962460,0x7000ea79,0x4000000,0x200000,0x7000ea79,0x4000000,0xf00000,0x7000ea79,0x4000010,
-0x400000,0x7000ea79,0x7c00100,0x230400,0x7000eb8c,0x2802400,0x962460,0x7000eb8c,0x4000000,0x200000,0x7000eb8c,0x7c00100,0x230400,0x7000eca3,0x2802100,0x962460,
-0x7000eca3,0x2806400,0x962460,0x7000eca3,0x4000000,0x200000,0x7000eca3,0x6800000,0x1329800,0x7000eca3,0x6800100,0x962540,0x7000eca3,0x7c00100,0x230400,0x7000eca3,
-0xc000010,0x448000,0x7000ed95,0x6800000,0x1329800,0x7000ed95,0x7c00100,0x230400,0x7000ed95,0xc000010,0x448000,0x7000ee1c,0x2802500,0x1862460,0x7000ee1c,0x6800000,
-0x1329800,0x7000ee1c,0x7c00100,0x1830000,0x7000ee1c,0x7c00900,0x1830000,0x7000ef8f,0x4000000,0x200000,0x7000ef8f,0x7c00100,0x230400,0x7000f08e,0x4000000,0x200000,
-0x7000f08e,0x7c00100,0x230400,0x7000f159,0x2802100,0x962460,0x7000f159,0x7c00100,0x230400,0x7000f200,0x4000000,0x200000,0x7000f200,0x4000000,0x1200000,0x7000f200,
-0x4000000,0x1710000,0x7000f34b,0x2802400,0x962460,0x7000f34b,0x4000000,0x200000,0x7000f34b,0x4000010,0x400000,0x7000f34b,0x6800000,0x1329800,0x7000f34b,0x7c00100,
-0x230400,0x7000f34b,0x7c00900,0x230400,0x7000f34b,0xc000010,0x448000,0x7000f490,0x4000000,0x200000,0x7000f490,0x7c00100,0x230400,0x7000f5a5,0x7c00100,0x230400,
-0x7000f67b,0x4000000,0x200000,0x7000f67b,0x4000010,0x200000,0x7000f67b,0x7c00100,0x230400,0x7000f8a6,0x2802100,0x962460,0x7000f8a6,0x2802400,0x962460,0x7000f8a6,
-0x2806400,0x962460,0x7000f8a6,0x4000000,0x500000,0x7000f8a6,0x4000010,0xb00000,0x7000f8a6,0x4000800,0x200000,0x7000f8a6,0x6800100,0x962540,0x7000f8a6,0x6800100,
-0x962541,0x7000f8a6,0x7c00100,0x230400,0x7000f8a6,0xc000010,0x448000,0x7000f921,0x4000000,0x200000,0x7000fa00,0x4000000,0x200000,0x7000fb9e,0x2802100,0x962460,
-0x7000fb9e,0x2802400,0x962460,0x7000fb9e,0x2806400,0x962460,0x7000fb9e,0x4000000,0x200000,0x7000fb9e,0x6800000,0x1329800,0x7000fb9e,0x6800100,0x962540,0x7000fb9e,
-0x6800100,0x962541,0x7000fb9e,0x7c00100,0x230400,0x7000fc92,0x4000000,0x200000,0x7000fc92,0x6800000,0x1329800,0x7000fc92,0x7c00100,0x220400,0x7000fc92,0x7c00100,
-0x230400,0x7000fc92,0x7c00100,0x250400,0x700acd00,0x4000000,0xe00000,0x700acd00,0x4000000,0x2800000,0x700ace00,0x4000000,0xe00000,0x700acf00,0x4000000,0xe00000,
-0x700acf00,0x4000000,0x2800000,0x7050df11,0x4000000,0x200000,0x7050f719,0x80000,0x918820,0x7080afa1,0x2802400,0x962460,0x7090df11,0x2802400,0x962460,0x70d0e417,
-0x2802100,0x962460,0x70d0e417,0x2802400,0x962460,0x70d0e417,0x6800100,0x962540,0x70d0ea15,0x4000010,0x400000,0x8000120f,0x7c00100,0x230400,0x80001524,0x7c00100,
-0x230400,0x8000171a,0x7c00100,0x230400,0x80002006,0x7c00100,0x220400,0x80002006,0x7c00100,0x250400,0x80002a00,0x4000000,0x1500000,0x80002d00,0x4000000,0x200000,
-0x80005208,0x2802400,0x962460,0x80005c00,0x4000000,0x200000,0x80007300,0x24000000,0x200000,0x80009519,0x7c00100,0x220400,0x80009519,0x7c00100,0x230400,0x80009519,
-0x7c00100,0x250400,0x80009865,0x7c00100,0x230400,0x8000a008,0x2802100,0x962460,0x8000b30a,0x4000000,0x500000,0x8000b30a,0x7c00100,0x230400,0x8000cd00,0x4000000,
-0xe00000,0x8000d202,0x2802500,0x962460,0x8000d202,0x7c00100,0x230400,0x8000d68d,0x4000000,0x200000,0x8000d997,0x2802000,0x962460,0x8000d997,0x2802400,0x962460,
-0x8000d997,0x4000000,0x400000,0x8000d997,0x4000000,0x500000,0x8000d997,0x7c00100,0x230400,0x8000d997,0xc000010,0x448000,0x8000e489,0x2802100,0x962460,0x8000e489,
-0x7c00100,0x230400,0x8000e719,0x7c00100,0x220400,0x8000f8a6,0x2802100,0x962460,0x8000f8a6,0x7c00100,0x230400,0x8000f8a6,0xc000010,0x448000,0x8000fda1,0x2802100,
-0x1862460,0x8000fda1,0x2806400,0x1862460,0x8000fda1,0x4000000,0x1800000,0x8000fda1,0x6800000,0x1329800,0x8000fda1,0x6800100,0x1862400,0x8000fda1,0x6800100,0x1862540,
-0x8000fda1,0x7c00100,0x1830000,0x8000fda1,0xc000010,0x448000,0x8000fe9c,0x7c00100,0x230400,0x8000fe9c,0x7c00100,0x830400,0x8000fe9c,0x7c00100,0x1430400,0x8000ff06,
-0x7c00100,0x220400,0x80010165,0x7c00100,0x230400,0x800102a2,0x4000000,0x200000,0x800102a2,0x7c00100,0x230400,0x800103a4,0x7c00100,0x230400,0x800103a4,0xc000010,
-0x448000,0x8001044c,0x4000000,0x200000,0x8001044c,0x7c00100,0x220400,0x8001044c,0x7c00100,0x250400,0x80010670,0x2802000,0x962460,0x80010670,0x4000000,0x200000,
-0x80010670,0x4000010,0x400000,0x80010670,0xc000010,0x448000,0x800a4711,0x7c40300,0xe30000,0x800acd00,0x4000000,0xe00000,0x800acd00,0x4000000,0x2902460,0x800ace00,
-0x4000000,0xe00000,0x800acf00,0x4000000,0xe00000,0x800b0011,0x7c40300,0xe30000,0x800b0500,0x4000000,0xe00000,0x800b0500,0x4000000,0x2800000,0x90001615,0x7c00100,
-0x230400,0x9000171a,0x4000000,0x200000,0x9000171a,0x7c00100,0x230400,0x90003000,0x24000000,0x200000,0x90007f0e,0x4000000,0x200000,0x90008301,0x2802400,0x962460,
-0x90008e00,0x24000000,0x400000,0x90009519,0x7c00100,0x250400,0x9000a16f,0x2802100,0x962460,0x9000d200,0x80000000,0x218960,0x9000d202,0x2802000,0x962460,0x9000d202,
-0x2802100,0x962460,0x9000d202,0x7c00100,0x230400,0x9000e59d,0x2802100,0x962460,0x90010500,0x4000000,0xe00000,0x900107a7,0x2802100,0x962460,0x900107a7,0x2802400,
-0x962460,0x900107a7,0x2802c00,0x962460,0x900107a7,0x4000000,0x1400000,0x900107a7,0x6800000,0x1329800,0x900107a7,0x7c00100,0x220400,0x900107a7,0x7c00100,0x250400,
-0x900108a8,0x2802100,0x962460,0x900108a8,0x2806400,0x962460,0x900108a8,0x4000000,0x200000,0x900108a8,0x4000000,0x400000,0x900108a8,0x4000010,0x400000,0x900108a8,
-0x6800000,0x1329800,0x900108a8,0x6800100,0x962540,0x900108a8,0x7c00100,0x230400,0x900108a8,0xc000010,0x448000,0x90010908,0x7c00100,0x220400,0x90010a38,0x2802100,
-0x962460,0x90010ca9,0x2802100,0x962460,0x90010ca9,0x4000000,0x500000,0x90010ca9,0x4000010,0xb00000,0x90010ca9,0x6800100,0x962540,0x90010ca9,0x7c00100,0x230400,
-0x90010d1b,0x4000000,0x500000,0x90010eaa,0x2802100,0x962460,0x90010eaa,0x2802400,0x962460,0x90010eaa,0x2806400,0x962460,0x90010eaa,0x4000000,0x200000,0x90010eaa,
-0x4000000,0x400000,0x90010eaa,0x4000010,0x400000,0x90010eaa,0x6800000,0x1329800,0x90010eaa,0x6800100,0x962540,0x90010eaa,0x7c00100,0x230400,0x90010eaa,0xc000010,
-0x448000,0x90010fab,0x7c00100,0x220400,0x90010fab,0x7c00100,0x250400,0x9002c300,0x4000000,0x100000,0x900ac400,0x4000000,0xe0000d,0x900acd00,0x4000000,0xe00000,
-0x900acd00,0x4000000,0x2800000,0x900acf00,0x4000000,0xe00000,0x900b0500,0x4000000,0xe00000,0x900b0500,0x4000000,0x2800000,0x900b0b9a,0x7c00900,0x1230400,0x900b109a,
-0x7c00300,0xe30000,0x900b119a,0x7c00300,0xe30000,0x90408e06,0x24000000,0x400000,0xa0001004,0x4000000,0x200000,0xa0001004,0x7c00100,0x230400,0xa000120f,0x2802100,
-0x962460,0xa000120f,0x2802400,0x962460,0xa000171a,0x2802100,0x962460,0xa000171a,0x2806400,0x962460,0xa0002a00,0x4000000,0x1600000,0xa0003000,0x24000000,0x200000,
-0xa000581e,0x7c00100,0x230400,0xa0007300,0x24000000,0x200000,0xa0008301,0x2802400,0x962460,0xa0008e00,0x24000000,0x400000,0xa000cf00,0x4000000,0xe00000,0xa0010500,
-0x4000000,0x200000,0xa00114af,0x2802100,0x962460,0xa00114af,0x2802400,0x962460,0xa00114af,0x2806400,0x962460,0xa00114af,0x6800000,0x1329800,0xa00114af,0x7c00100,
-0x230400,0xa00114af,0x7c00100,0x230560,0xa00116b0,0x2802100,0x962460,0xa00116b0,0x2802800,0x962460,0xa00116b0,0x2806400,0x962460,0xa00116b0,0x4000000,0x400000,
-0xa00116b0,0x4000000,0x500000,0xa00116b0,0x4000010,0x400000,0xa00116b0,0x6800100,0x962540,0xa00116b0,0x7c00100,0x230400,0xa00116b0,0x7c00100,0x230560,0xa00116b0,
-0xc000010,0x448000,0xa0011722,0x7c00100,0x230400,0xa00118b1,0x2802000,0x962460,0xa00118b1,0x2802100,0x962460,0xa00118b1,0x2806400,0x962460,0xa00118b1,0x4000000,
-0x200000,0xa00118b1,0x4000000,0x400000,0xa00118b1,0x4000000,0x500000,0xa00118b1,0x6800100,0x962540,0xa00118b1,0x7c00100,0x230400,0xa00118b1,0x7c00100,0x230560,
-0xa00118b1,0xc000010,0x448000,0xa00a4005,0x7c00100,0xe30400,0xa00a4711,0x7c40300,0xe30000,0xa00ac400,0x4000000,0xe00000,0xa00acb14,0x7c00100,0xe30000,0xa00acf00,
-0x4000000,0xe00000,0xa00b0500,0x4000000,0xe00000,0xa00b0500,0x4000000,0x2800000,0xa00b0b96,0x7c00900,0x1230400,0xa00b1211,0x7c40300,0xe30000,0xa00b1314,0x7c00100,
-0xe30000,0xa00b1596,0x7c00300,0xe30000,0xa040afb7,0x6800400,0x962540,0xa08083b8,0x2802400,0x962460,0xb0000a03,0x7c00100,0x220400,0xb0000b13,0x7c00100,0x2633800,
-0xb0001004,0x2802000,0x962460,0xb0001110,0x4000000,0x200000,0xb0001524,0x2802100,0x962460,0xb0001615,0x4000000,0x500000,0xb000251b,0x7c00100,0x230400,0xb0007300,
-0x24000000,0x200000,0xb0008939,0x4000000,0x200000,0xb0008939,0x7c00100,0x230400,0xb0008e00,0x24000000,0x200000,0xb0008e00,0x24000000,0x400000,0xb0008e00,0x24000010,
-0x400000,0xb0009257,0x2802000,0x962460,0xb0009257,0x4000000,0x1600000,0xb0009519,0x7c00100,0x220400,0xb0009519,0x7c00100,0x250400,0xb0009a00,0x4000000,0x200000,
-0xb000b30a,0x2802100,0x962460,0xb000b30a,0x7c00100,0x230400,0xb000c178,0x80000000,0x218960,0xb000c300,0x4000000,0x200000,0xb000d202,0x2802000,0x962460,0xb000d476,
-0x6800100,0x962540,0xb000d476,0x7c00100,0x230400,0xb000e300,0x4000000,0xe00000,0xb000fda1,0x7c00100,0x1830000,0xb0010eaa,0x2802000,0x962460,0xb00116b0,0x7c00100,
-0x230400,0xb0011900,0x4000000,0xe00000,0xb0011ab2,0x2802100,0x962460,0xb0011ab2,0x2802400,0x962460,0xb0011ab2,0x2806400,0x962460,0xb0011ab2,0x4000000,0x200000,
-0xb0011ab2,0x6800100,0x962540,0xb0011ab2,0x7c00100,0x230400,0xb0011b0c,0x7c00100,0x230400,0xb0011cb3,0x2802100,0x962460,0xb0011cb3,0x2806400,0x962460,0xb0011cb3,
-0x6800000,0x1329800,0xb0011cb3,0x6800100,0x962540,0xb0011cb3,0x7c00100,0x230400,0xb0011db6,0x2802500,0x962460,0xb0011db6,0x6800000,0x1329800,0xb0011db6,0x7c00100,
-0x230400,0xb0011db6,0x7c00500,0x230400,0xb0011e00,0x4000000,0x200000,0xb0011e00,0x4000000,0x1500000,0xb0011fb4,0x2802100,0x962460,0xb0011fb4,0x6800100,0x962540,
-0xb0011fb4,0x7c00100,0x230400,0xb0011fb4,0xc000010,0x248000,0xb0012000,0x4000000,0x200000,0xb00121b5,0x4000000,0x200000,0xb00121b5,0x4000010,0x400000,0xb00121b5,
-0x7c00100,0x220400,0xb00121b5,0x7c00100,0x250400,0xb00121b5,0xc000010,0x448000,0xb00122b8,0x4000000,0x200000,0xb00122b8,0x7c00100,0x230400,0xb00123b7,0x2802400,
-0x962460,0xb00123b7,0x4000000,0x200000,0xb00123b7,0x7c00100,0x230400,0xb00123b7,0xc000010,0x248000,0xb00a4005,0x7c00100,0xe30400,0xb00a4711,0x7c40300,0xe30000,
-0xb00acf00,0x4000000,0xe00000,0xb00b0500,0x4000000,0xe00000,0xb00b0500,0x4000000,0x2800000,0xb00b109a,0x7c00300,0xe30000,0xb080e487,0x2802000,0x962460,0xc0001524,
-0x4000000,0x500000,0xc0001a18,0x2806400,0x1862460,0xc0001a18,0x7c00100,0x1830000,0xc0007300,0x24000000,0x200000,0xc0008e00,0x24000010,0x400000,0xc0009519,0x7c00100,
-0x220400,0xc0009519,0x7c00100,0x250400,0xc000c300,0x4000000,0x20000f,0xc000d85c,0x2802100,0x962460,0xc000d85c,0x6800100,0x962540,0xc000d85c,0x7c00100,0x230400,
-0xc000dc99,0x7c00100,0x230400,0xc000e719,0x7c00100,0x220400,0xc00107a7,0x7c00100,0x230400,0xc0010eaa,0x7c00100,0x230400,0xc00116b0,0x7c00100,0x230560,0xc0011900,
-0x4000000,0x200000,0xc0012447,0,0x818820,0xc0012447,0,0xc18820,0xc0012447,0,0x1418820,0xc00125b9,0x7c00100,0x230400,0xc00126bb,0x2802100,
-0x962460,0xc00126bb,0x2806400,0x962460,0xc00126bb,0x4000000,0x500000,0xc00126bb,0x6800100,0x962540,0xc00126bb,0x7c00100,0x230400,0xc00127ba,0x2802400,0x962460,
-0xc00127ba,0x4000000,0x200000,0xc00127ba,0x6800000,0x1329800,0xc00127ba,0x7c00100,0x230400,0xc00127ba,0x7c00900,0x230400,0xc0012800,0x4000000,0x200000,0xc0012b23,
-0x4000000,0x200000,0xc0012b23,0x4000000,0x400000,0xc0012b23,0x4000000,0x1500000,0xc0012cbc,0x2802400,0x962460,0xc0012cbc,0x4000000,0x1600000,0xc0012cbc,0x6800000,
-0x1329800,0xc0012cbc,0x7c00100,0x230400,0xc00acf00,0x4000000,0xe00000,0xc00ae300,0x4000000,0xe00000,0xc00b0500,0x4000000,0xe00000,0xc00b0500,0x4000000,0x2800000,
-0xc00b0b11,0x4000000,0x1200000,0xc00b0b11,0x7c00900,0x1230400,0xc00b109a,0x7c00300,0xe30000,0xc00b2914,0x7c00100,0x2530000,0xc00b2916,0x7c00100,0x2530c00,0xc00b2a00,
-0x4000000,0xe00000,0xc040af5e,0x7c00100,0x230400,0xc0c12b89,0x4000000,0x200000,0xc14a44ca,0x4000000,0xe0000d,0xd000131f,0x2802c00,0x962460,0xd000171a,0x7c00100,
-0x230400,0xd0001821,0x2802100,0x962460,0xd0007300,0x24000000,0x200000,0xd0008e00,0x24000000,0x200000,0xd0008f3a,0x2806000,0x962460,0xd0009519,0x7c00100,0x220400,
-0xd0009519,0x7c00100,0x250400,0xd000a500,0x4000000,0x200000,0xd000c300,0x4000000,0xe00000,0xd000d202,0x7c00100,0x230400,0xd000d476,0x7c00100,0x230400,0xd000d997,
-0x2802100,0x962460,0xd000d997,0x6800100,0x962540,0xd000e001,0x2802100,0x962460,0xd000e700,0x4000400,0x200000,0xd000e719,0x7c00100,0x220400,0xd000e719,0x7c00500,
-0x22040f,0xd000fa00,0x4000000,0xe00000,0xd0010eaa,0x4000010,0x400000,0xd0010eaa,0x7c00100,0x230400,0xd0012dbd,0x4000000,0x200000,0xd0012dbd,0x7c00100,0x230400,
-0xd0012fbe,0x2802100,0x962460,0xd0012fbe,0x2802400,0x962460,0xd0012fbe,0x2806400,0x962460,0xd0012fbe,0x4000000,0x400000,0xd0012fbe,0x6800000,0x1329800,0xd0012fbe,
-0x6800100,0x962540,0xd0012fbe,0x6800100,0x962541,0xd0012fbe,0x6804400,0x962540,0xd0012fbe,0x7c00100,0x230400,0xd0012fbe,0x7c00100,0x230560,0xd0012fbe,0xc000010,
-0x448000,0xd0013183,0x7c00100,0x230400,0xd0013200,0x4000000,0x200000,0xd0013200,0x6800000,0x1329805,0xd00134c0,0x2802100,0x962460,0xd00134c0,0x4000002,0x400000,
-0xd00134c0,0x7c00100,0x230400,0xd00a4305,0x7c00100,0xe30400,0xd00a4611,0x7c40300,0xe30000,0xd00a4711,0x7c40300,0xe30000,0xd00a5e11,0x7c40300,0xe30000,0xd00acf00,
-0x4000000,0xe00000,0xd00b0500,0x4000000,0xe00000,0xd00b0500,0x4000000,0x2800000,0xd00b0b11,0x6800500,0x962540,0xd00b0bbf,0x2802200,0xc62460,0xd00b119a,0x7c00300,
-0xe30000,0xd00b2a00,0x4000000,0xe00000,0xd00b2e11,0x7c40300,0xe30000,0xd00b30bf,0x7c00300,0x230000,0xd00b339a,0x7c00300,0xe30000,0xe0000c02,0xc000010,0xb48000,
-0xe0001524,0x2802400,0x962460,0xe0001524,0x7c00100,0x230400,0xe0001615,0x7c00100,0x230400,0xe000251b,0x12882000,0x962460,0xe0002a00,0x4000000,0x1500000,0xe0005102,
-0x4000000,0x200000,0xe0005c00,0x4000000,0x200000,0xe000622a,0x6804400,0x962540,0xe000622a,0x7c00100,0x230400,0xe0008838,0x7c00100,0x220400,0xe0008838,0x7c00100,
-0x250400,0xe0008e00,0x24000000,0x810000,0xe0008e00,0x24000000,0x1410000,0xe0008e00,0x24000002,0x400000,0xe0008e00,0x2c000010,0xb48000,0xe000933e,0x7c00100,0x230400,
-0xe000933e,0xc000010,0x448000,0xe0009519,0x7c00100,0x220400,0xe0009519,0x7c00100,0x22040f,0xe0009519,0x7c00100,0x250400,0xe000c178,0x2802100,0x962460,0xe000c941,
-0x2802100,0x962460,0xe000c941,0x2806400,0x962460,0xe000c941,0x7c00100,0x230400,0xe000d202,0x2802400,0x962460,0xe000d202,0x7c00100,0x230400,0xe000d202,0x7c00500,
-0x230400,0xe000dc99,0x4000000,0x200000,0xe000e001,0x2802100,0x962460,0xe000e001,0x2802400,0x962460,0xe000fda1,0x7c00100,0x1830000,0xe0013502,0x2802400,0x962460,
-0xe0013502,0x4000000,0x200000,0xe0013502,0x7c00100,0x230400,0xe0013502,0x80000000,0x218960,0xe00136c1,0x4000000,0x200000,0xe00136c1,0x7c00100,0x230400,0xe001370b,
-0x7c00100,0x230400,0xe0013919,0x7c00500,0x220400,0xe0013919,0x7c00500,0x22040f,0xe0013919,0x7c00d00,0x23040f,0xe0013a19,0x7c00100,0x220400,0xe0013a19,0x7c00100,
-0x230400,0xe0013bc2,0x2802400,0x962460,0xe0013bc2,0x7c00100,0x230400,0xe0013bc2,0xc000010,0x248000,0xe0013cc3,0x6800000,0x1329800,0xe0013cc3,0x7c00100,0x230400,
-0xe0013dc4,0x2802400,0x962460,0xe0013dc4,0x7c00100,0x230400,0xe0013e28,0x7c00100,0x230400,0xe0013fc5,0x7c00100,0x220400,0xe0013fc5,0x7c00100,0x250400,0xe0014000,
-0x4000000,0x200000,0xe0014001,0x2802400,0x962460,0xe00a4711,0x7c40300,0xe30000,0xe00a5e11,0x7c40300,0xe30000,0xe00ac511,0x7c40300,0xe30000,0xe00acf00,0x4000000,
-0xe00000,0xe00ae300,0x4000000,0xe00000,0xe00b0500,0x4000000,0xe00000,0xe00b1314,0x7c00100,0xe30000,0xe00b1316,0x7c00100,0xe30c00,0xe00b2a00,0x4000000,0xe00000,
-0xe00b2a00,0x4000000,0x2800000,0xe00b3816,0x7c00500,0x230c00,0xe0808328,0x2802400,0x962460,0xf0001615,0x6800100,0x962540,0xf0001a18,0x2802000,0x1862460,0xf000c247,
-0x7c00100,0x230400,0xf000d000,0x4000000,0xe00000,0xf000e300,0x4000000,0xe00000,0xf000e59d,0x2802100,0x962460,0xf000e59d,0x7c00100,0x230400,0xf0012447,0,
-0x818820,0xf0012447,0,0xc18820,0xf0012447,0,0x1418820,0xf0012447,0x2802000,0x962460,0xf0012447,0x2802400,0x962460,0xf0012447,0x7c00100,0x230400,
-0xf0013a19,0x7c00100,0x220400,0xf0014102,0x2802400,0x962460,0xf0014308,0x2802100,0x962460,0xf0014308,0x7c00500,0x22040e,0xf0014308,0x7c00500,0x22040f,0xf001440a,
-0x4000000,0x500000,0xf0014500,0x4000000,0x200000,0xf00146c6,0x2802100,0x962460,0xf00146c6,0x2806000,0x962460,0xf00146c6,0x4000000,0xe00000,0xf00146c6,0x6800000,
-0x1329800,0xf00146c6,0x6800100,0x962540,0xf00146c6,0x6804000,0x962540,0xf00146c6,0x7c00100,0x230400,0xf00146c6,0x7c00100,0x230560,0xf00146c6,0xc000010,0x448000,
-0xf00147c7,0x2802000,0x962460,0xf00147c7,0x6800000,0x1329800,0xf00147c7,0x7c00100,0x230400,0xf00ac511,0x7c40300,0xe30000,0xf00acf00,0x4000000,0xe00000,0xf00b2914,
-0x7c00100,0x2530000,0xf00b2916,0x7c00100,0x2530c00,0xf00b2a00,0x4000000,0xe00000,0xf00b2a00,0x4000000,0x2800000,0xf00b4211,0x7c40300,0xe30000};
+0x1200000,0x30002417,0x6800000,0x1329800,0x30002417,0x6800100,0x1862540,0x30002417,0x7c00100,0x1830000,0x30002417,0x7d00100,0x1830000,0x30002417,0xc000010,0x448000,
+0x3000251b,0x80000,0xc18820,0x3000251b,0x2802100,0x962460,0x3000251b,0x3c02100,0x962460,0x3000251b,0x4000000,0x200000,0x3000251b,0x4000006,0x500000,0x3000251b,
+0x4000010,0x400000,0x3000251b,0x4000010,0xb70000,0x3000251b,0x4000800,0x200000,0x3000251b,0x6800000,0x1329800,0x3000251b,0x7c00100,0x230400,0x3000251b,0x7c00900,
+0x230400,0x3000251b,0xc000010,0xb48000,0x3000251b,0x12882000,0x962460,0x30002800,0x24000000,0x200000,0x30002800,0x2c000010,0x1248002,0x30002a00,0x4000000,0x1600000,
+0x30002b01,0x2000,0x962460,0x30002c00,0x4000000,0x200000,0x30002c00,0x7c00100,0x220405,0x30002d19,0x7c00100,0x250400,0x30002e00,0x24000000,0x200000,0x30003000,
+0x24000000,0x200000,0x30003100,0x24000000,0x200000,0x30003600,0x24000000,0x200000,0x30003700,0x24000000,0x200000,0x3000392e,0x24000000,0x200000,0x30005013,0x7c00100,
+0x2633801,0x30005600,0,0x918820,0x30020600,0x4000400,0x500400,0x30020701,0x2802400,0x962460,0x30020701,0x2802400,0xc62460,0x300a3a11,0x4020000,0xe00000,
+0x300a3a11,0x4020000,0xe00002,0x300a3b11,0x4020000,0xe00002,0x300a3c00,0x4008000,0xe00000,0x300a3c00,0x4010000,0xe00000,0x300a3d11,0x7c00300,0xe30002,0x300a4305,
+0x7c00100,0xe30400,0x300a4611,0x7c40300,0xe30000,0x300a4829,0x7c00100,0xe30400,0x300a4829,0x7c00900,0x1230400,0x300a4929,0x4000000,0xe00000,0x3040259a,0x4000010,
+0x400000,0x3040259a,0x4000010,0xb70000,0x3040259a,0xc000010,0xb48000,0x304028bc,0x4000001,0xc41c0b,0x304a3dcc,0x4000000,0xe00000,0x30800c27,0x2802100,0x962460,
+0x30c01c92,0x6800000,0x1329800,0x3100080e,0x7c00120,0x220402,0x3100080e,0x7c00120,0x250402,0x31005167,0x1000,0,0x3100581e,0x4000000,0x200000,0x3100581e,
+0x7c00100,0x230400,0x3100590d,0x7c00100,0x230400,0x31005a09,0x7c00100,0x220400,0x31005a09,0x7c00100,0x250400,0x31005b00,0x4000000,0x200000,0x31005c00,0x80000,
+0x918820,0x31005c00,0x2802000,0x962460,0x31005c00,0x2802400,0x962460,0x31005c00,0x4000000,0x200000,0x31005c00,0x4000000,0x200001,0x31005c00,0x6800000,0x962540,
+0x31005c00,0x6800400,0x962540,0x31005c01,0x2802400,0x962460,0x31005d00,0x4000020,0x200005,0x31005d00,0x6800020,0x1329805,0x31005d00,0x7c00120,0x220405,0x31005d00,
+0x7c00120,0x250405,0x31006000,0x82000,0x962460,0x31006000,0x180000,0x918820,0x310a5e11,0x7c40300,0xe30000,0x310a5f11,0x7c00300,0xe30001,0x32000419,0x7c00100,
+0x250400,0x3200080e,0x4000020,0x200000,0x3200080e,0x7c00100,0x220400,0x3200080e,0x7c00100,0x250400,0x32000908,0x7c00100,0x220400,0x32000908,0x7c00100,0x250400,
+0x32000c02,0x7c00100,0x230400,0x32000e25,0x7c00100,0x230400,0x32001d0c,0x7c00100,0x230400,0x32002800,0x80000,0x1e18820,0x32002800,0x80020,0x218820,0x32002800,
+0x4000001,0x445802,0x32002800,0x24000000,0x200000,0x32002800,0x24000000,0x1500002,0x32002800,0x24000020,0x200000,0x32002800,0x2c000010,0x1248002,0x32002919,0x7c00100,
+0x22040f,0x32002a00,0x4000000,0x1600000,0x32002b01,0x2000,0x962460,0x32002b01,0x2802000,0x962460,0x32002b01,0x2802020,0x962460,0x32002c00,0x4000000,0x200000,
+0x32002c00,0x4000020,0x200000,0x32002c00,0x4000020,0x200005,0x32002c00,0x7c00120,0x220405,0x32002c00,0x7c00120,0x250405,0x32002e00,0x24000020,0x200000,0x32002f00,
+0x24000020,0x200000,0x32003000,0x24000000,0x200000,0x32003000,0x24000020,0x200000,0x32003500,0x24000000,0x200000,0x32003600,0x24000020,0x200000,0x32003700,0x24000000,
+0x100000,0x32003700,0x24000000,0x200000,0x32003800,0x24000000,0x810000,0x32003800,0x24000000,0x1410000,0x32005102,0x4000000,0x1500008,0x32005502,0x7c00100,0x230400,
+0x32006108,0x7c00100,0x220400,0x32006108,0x7c00100,0x250400,0x3200622a,0x2802100,0x962460,0x3200622a,0x2806400,0x962460,0x3200622a,0x7c00100,0x230400,0x3200632b,
+0x2802100,0x962460,0x3200632b,0x6804000,0x962540,0x3200632b,0x7c00100,0x230400,0x3200642c,0x2802100,0x962460,0x3200642c,0x7c00100,0x230400,0x3200652d,0x2802100,
+0x962460,0x3200652d,0x7c00100,0x230400,0x32006600,0x24000020,0x200000,0x32006700,0x24000020,0x200000,0x32006800,0x24000020,0x200000,0x32006900,0x24000020,0x200000,
+0x32006900,0x24000020,0x810000,0x32006900,0x24000020,0x1410000,0x32006a00,0x24000020,0x200000,0x32006a00,0x24000020,0x200001,0x32006a00,0x24000020,0x200002,0x32020701,
+0x2882000,0xc62460,0x32023300,0x4000000,0x100000,0x32026c01,0x12882000,0x962460,0x32065700,0x4000000,0x810011,0x32065700,0x4000000,0x1410011,0x32086600,0x24000020,
+0x810000,0x32086600,0x24000020,0x1410000,0x32086900,0x24000020,0x810000,0x32086900,0x24000020,0x1410000,0x320a3600,0x24000020,0x200000,0x320a3d11,0x7c00100,0x1230400,
+0x320a3e14,0x7c00100,0xe30010,0x320a3e14,0x7c00100,0x2530000,0x320a3f16,0x7c00100,0xe30c10,0x320a4400,0x4000000,0xe00003,0x320a4929,0x4000000,0xe00000,0x320a4f11,
+0x7c00300,0xe30001,0x320a6b16,0x7c00100,0x2530c00,0x32406396,0xc000010,0x448000,0x324a3dcf,0x4000000,0xe00000,0x324a3dcf,0x7c00100,0x1230400,0x324a3fca,0x4000002,
+0x1200c00,0x324a53c7,0x24000000,0xe00000,0x32820701,0x2802000,0x962460,0x40000419,0x7c00100,0x220400,0x40000519,0x7c00100,0x220400,0x40000600,0x4000400,0x200400,
+0x4000080e,0x7c00100,0x220400,0x4000080e,0x7c00100,0x250400,0x4000080e,0x7c00100,0x250402,0x40000c02,0x2802100,0x962460,0x40000c02,0x2802400,0x962460,0x40000c02,
+0x2802500,0x962460,0x40000c02,0x4000000,0x200000,0x40000c02,0x4000000,0x1071400,0x40000c02,0x7c00100,0x230400,0x40000c02,0x80000000,0x1329960,0x40000d22,0x7c00100,
+0x230400,0x40000f0a,0x7c00100,0x230400,0x40001004,0x7c00100,0x230400,0x40001110,0x2802100,0x962460,0x40001110,0x6800100,0x962540,0x4000120f,0x2802100,0x962460,
+0x4000120f,0x4000000,0x1600000,0x4000120f,0x7c00100,0x230400,0x4000131f,0x7c00100,0x230400,0x40001423,0x4000000,0x200000,0x40001423,0x4000000,0x1600000,0x40001615,
+0x2802400,0x962460,0x40001615,0x7c00100,0x230400,0x40002417,0x2802400,0x1862460,0x40002417,0x4000000,0x200000,0x40002800,0x6800000,0x201c00,0x40002800,0x24000002,
+0x200000,0x40002c00,0x4000000,0x200002,0x40003000,0x24000000,0x200000,0x40003000,0x24000020,0x200000,0x40003700,0x24000000,0x200000,0x40005a09,0x7c00100,0x220400,
+0x40005a09,0x7c00100,0x250400,0x40005d00,0x7c00120,0x220405,0x40006f30,0x2802100,0x962460,0x40006f30,0x2802400,0x962460,0x40006f30,0x4000000,0x200000,0x40006f30,
+0x6800000,0x1329800,0x40006f30,0x6800100,0x962540,0x40006f30,0x7c00100,0x230400,0x40006f30,0xc000010,0xb48000,0x40007034,0x7c00100,0x1830000,0x40007117,0x4000000,
+0x200000,0x40007208,0x7c00100,0x220400,0x4000720e,0x7c00100,0x220400,0x4000720e,0x7c00500,0x22040e,0x4000720e,0x7c00500,0x22040f,0x40007219,0x7c00100,0x220400,
+0x40007219,0x7c00500,0x220400,0x40007219,0x7c00500,0x22040e,0x40007219,0x7c00500,0x22040f,0x40007300,0x24000000,0x200000,0x40007400,0x4000000,0x200000,0x40007531,
+0x7c00100,0x230400,0x40007631,0x7c00100,0x230400,0x40007835,0x4000010,0x400000,0x40007835,0x7c00100,0x230400,0x40007933,0x7c00100,0x230400,0x40007a32,0x6800000,
+0x1329800,0x40007a32,0x7c00100,0x230400,0x40007b2f,0x7c00100,0x230400,0x40007c00,0x4000000,0x200000,0x40020701,0x2802400,0x962460,0x40020701,0x2802400,0xc62460,
+0x40023300,0x4000000,0x200000,0x40027d01,0x12882000,0x962460,0x400a3700,0x24000000,0x200000,0x400a3700,0x24000000,0xe00000,0x400a4400,0x4000000,0xe0000d,0x400a4412,
+0x4000000,0xe00002,0x400a4412,0x4000000,0xe00003,0x400a4500,0x4000000,0xe0000d,0x400a5300,0x4000000,0x810010,0x400a5300,0x4000000,0x1410010,0x40507719,0x4000000,
+0x200000,0x4050771c,0x4000000,0x400000,0x4050771f,0x4000000,0x200000,0x4050771f,0x4000000,0x400000,0x40c01489,0x4000000,0x200000,0x40d05117,0x4000000,0x200000,
+0x41000419,0x7c00100,0x220400,0x41000419,0x7c00100,0x250400,0x4100080e,0x7c00100,0x220400,0x4100080e,0x7c00100,0x250400,0x41000908,0x7c00100,0x220400,0x41000908,
+0x7c00100,0x250400,0x41000b13,0x2802000,0x962460,0x41000b13,0x2802100,0x962460,0x41000b13,0x4000000,0xb00000,0x41000c02,0x2802100,0x962460,0x41000c02,0x4000000,
+0x1500000,0x41000c02,0xc000010,0xb48000,0x41000f0a,0x7c00100,0x230400,0x41001004,0x7c00100,0x230400,0x41001423,0x7c00100,0x230400,0x41001b27,0x4000000,0x500000,
+0x41001d0c,0x7c00100,0x22040f,0x41001d0c,0x7c00100,0x230400,0x41001f0b,0x2802400,0x962460,0x41001f0b,0x4000000,0x200000,0x41001f0b,0x7c00100,0x230400,0x41002800,
+0x24000000,0x200000,0x41002800,0x24000000,0x400000,0x41002919,0x7c00100,0x22040e,0x41002a00,0x4000000,0x1600000,0x41002b01,0x2802020,0x962460,0x41002c00,0x4000000,
+0x200000,0x41002c00,0x7c00120,0x220405,0x41003000,0x24000000,0x200000,0x41003700,0x24000000,0x200000,0x41003700,0x24000000,0xe00000,0x41005d00,0x7c00120,0x220405,
+0x41006600,0x24000020,0x200000,0x41006600,0x24000020,0x810000,0x41006600,0x24000020,0x1410000,0x41007208,0x7c00100,0x22040f,0x41007219,0x7c00100,0x220400,0x41007300,
+0x24000000,0x200000,0x41007e0e,0x2802000,0x962460,0x41007e0e,0x4000000,0x200000,0x41007f0e,0x4000000,0x200000,0x41007f0e,0x7c00100,0x230400,0x41008002,0x7c00100,
+0x230400,0x41008137,0x2802100,0x962460,0x41008137,0x4000000,0x200000,0x41008137,0x6800100,0x962540,0x41008137,0x7c00100,0x230400,0x41008301,0x2802000,0x962460,
+0x41008407,0x4000000,0x200000,0x41008407,0x4000000,0x400000,0x41008407,0x4000000,0xb00000,0x41008407,0x7c00100,0x220400,0x41008407,0x7c00100,0x250400,0x4100850b,
+0x7c00100,0x230400,0x4100860b,0x4000000,0x200000,0x4100860b,0x7c00100,0x230400,0x4100870c,0x7c00100,0x220400,0x41008838,0x7c00100,0x220400,0x41008838,0x7c00100,
+0x250400,0x41008939,0x2802000,0x962460,0x41008939,0x2802100,0x962460,0x41008939,0x2806000,0x962460,0x41008939,0x4000000,0x200000,0x41008939,0x4000000,0x400000,
+0x41008939,0x7c00100,0x230400,0x41008939,0xc000010,0x448000,0x41008a00,0x4000400,0x200400,0x41008b3b,0x4000000,0x1800000,0x41008b3b,0x6800000,0x1329800,0x41008b3b,
+0x7c00100,0x1830000,0x41008b3b,0x7e00100,0x1830000,0x41008c3d,0x4000010,0x400000,0x41008c3d,0x7c00100,0x230400,0x41008d0e,0x7c00100,0x22040f,0x41008d19,0x7c00100,
+0x220400,0x41008d19,0x7c00100,0x22040f,0x41008e00,0x24000000,0x200000,0x41008e00,0x24000000,0x400000,0x41008e00,0x24000000,0x1710000,0x41008e00,0x24000006,0x400000,
+0x41008f3a,0x2802100,0x962460,0x41008f3a,0x2806000,0x962460,0x41008f3a,0x4000000,0x200000,0x41008f3a,0x6800100,0x962540,0x41008f3a,0x7c00100,0x230400,0x4100903c,
+0x7c00100,0x230400,0x4100903c,0x7c00100,0x23040f,0x41020701,0x2802000,0x962460,0x41020701,0x2802000,0xc62460,0x410a3700,0x24000000,0x200000,0x410a3700,0x24000000,
+0xe00000,0x410a4412,0x4000000,0xe00003,0x410a4711,0x7c40300,0xe30000,0x410a4f11,0x7c00300,0xe30001,0x410a9100,0x4000000,0x800010,0x410a9100,0x4000000,0x810010,
+0x410a9100,0x4000000,0x870010,0x410a9100,0x4000000,0xb00010,0x410a9100,0x4000000,0xf00010,0x410a9100,0x4000000,0x1001410,0x410a9100,0x4000000,0x1071010,0x410a9100,
+0x4000000,0x1071410,0x410a9100,0x4000000,0x1410010,0x41408ad2,0x4000400,0x200000,0x414a82cc,0x4000000,0xe00000,0x41808300,0x2802000,0x962460,0x41c01489,0x6800000,
+0x1329800,0x50000419,0x7c00100,0x220400,0x50000419,0x7c00100,0x250400,0x5000080e,0x7c00100,0x220400,0x50000908,0x7c00100,0x220400,0x50000908,0x7c00100,0x250400,
+0x50000b13,0x2802500,0x962460,0x50000f0a,0x7c00100,0x230400,0x50001615,0x2802100,0x962460,0x50001615,0x7c00100,0x230400,0x50002b01,0x2802020,0x962460,0x50002c00,
+0x4000000,0x200000,0x50002c19,0x7c00100,0x220400,0x50002d19,0x7c00100,0x220400,0x50003000,0x24000000,0x200000,0x50003000,0x24000020,0x200000,0x50003700,0x24000000,
+0x200000,0x50005d00,0x7c00120,0x220405,0x50005d00,0x7c00120,0x250405,0x50006108,0x7c00100,0x220400,0x50006108,0x7c00100,0x250400,0x50006600,0x24000020,0x200000,
+0x50007300,0x24000000,0x200000,0x50008301,0x2802400,0x962460,0x50008a00,0x7c00500,0x230400,0x50009257,0x2802400,0x962460,0x50009257,0x4000000,0x200000,0x50009257,
+0x4000010,0x1071400,0x50009257,0x6800000,0x1329800,0x50009257,0x7c00100,0x230400,0x50009257,0x7c00500,0x230400,0x50009257,0x7c00900,0x230400,0x50009257,0xc000010,
+0xb48000,0x5000933e,0x2802100,0x962460,0x5000933e,0x2802400,0x962460,0x5000933e,0x4000000,0x400000,0x5000933e,0x4000000,0xe00000,0x5000933e,0x4000010,0x400000,
+0x5000933e,0x6800000,0xe29800,0x5000933e,0x6800100,0x962540,0x5000933e,0x6800100,0x962541,0x5000933e,0x6804400,0x2f62540,0x5000933e,0x7c00100,0x2b30400,0x5000933e,
+0x7c00100,0x2b30401,0x5000933e,0xc000010,0x448000,0x50009419,0x7c00100,0x220400,0x50009419,0x7c00100,0x250400,0x50009500,0x4000400,0x200400,0x5000965a,0x4000000,
+0x500000,0x5000965a,0x7c00100,0x230400,0x5000965a,0xc000010,0xb48000,0x5000975b,0x4000000,0x200000,0x5000975b,0x4000010,0x400000,0x5000975b,0x7c00100,0x230400,
+0x50009865,0x7c00100,0x230400,0x50009965,0x4000010,0x400000,0x50009965,0x7c00100,0x230400,0x50409acc,0x4000000,0x200000,0x5100080e,0x7c00100,0x220400,0x5100080e,
+0x7c00100,0x250400,0x51000c02,0x2802100,0x962460,0x51000c02,0x4000000,0x1500000,0x51000c02,0x4000020,0x200000,0x51000c02,0x7c00100,0x230400,0x51000f0a,0x7c00100,
+0x230400,0x51000f0a,0x7c00500,0x230400,0x51001110,0x2802100,0x962460,0x5100131f,0x2802100,0x962460,0x51001423,0x7c00100,0x230400,0x51001524,0x2802100,0x962460,
+0x51001524,0x4000000,0x200000,0x51001524,0x7c00100,0x230400,0x5100171a,0x2802100,0x962460,0x5100171a,0x4000000,0x200000,0x5100171a,0x4000000,0x1500000,0x5100171a,
+0x7c00100,0x230400,0x51001b27,0x4000000,0x200000,0x51001b27,0x4000000,0x400000,0x51001b27,0x4000000,0x500000,0x51001b27,0x7c00100,0x230400,0x51001c1c,0x2802100,
+0x1862460,0x51001c1c,0x2802500,0x1862460,0x51001c1c,0x2806400,0x1862460,0x51001c1c,0x4000000,0x1800000,0x51001c1c,0x6800000,0x1329800,0x51001c1c,0x6800100,0x1862400,
+0x51001c1c,0x6800100,0x1862540,0x51001c1c,0x6800500,0x1862400,0x51001c1c,0x7c00100,0x1830000,0x5100251b,0x7c00100,0x230400,0x51002619,0x7c00100,0x220400,0x51002619,
+0x7c00100,0x250400,0x51002800,0x80020,0x218820,0x51002c00,0x4000000,0x200000,0x51002d19,0x7c00100,0x230400,0x51003700,0x24000000,0x200000,0x51003700,0x24000000,
+0xe00000,0x51005201,0x2802400,0x962460,0x51005c00,0x4000000,0x200000,0x51006108,0x7c00100,0x220400,0x51006108,0x7c00100,0x250400,0x51006600,0x24000020,0x200000,
+0x51006600,0x24000020,0x810000,0x51006600,0x24000020,0x1410000,0x51007300,0x24000000,0x200000,0x51007300,0x24000020,0x200000,0x51008002,0x7c00100,0x230400,0x51008301,
+0x2802000,0x962460,0x51008301,0x2802400,0x962460,0x51008301,0x2802400,0xc62460,0x51008a00,0x7c00500,0x230400,0x51008e00,0x24000000,0x200000,0x51008e00,0x24000000,
+0x400000,0x51008e00,0x24000000,0x810000,0x51008e00,0x24000000,0x1400000,0x51008e00,0x24000000,0x1410000,0x51008e00,0x24000000,0x1710000,0x51008e00,0x24000002,0x200000,
+0x51008e00,0x24000500,0x230400,0x51008e00,0x2c000010,0xb48000,0x51009419,0x7c00100,0x220400,0x51009419,0x7c00100,0x22040e,0x51009419,0x7c00100,0x22040f,0x51009419,
+0x7c00100,0x250400,0x51009500,0x4000400,0x200400,0x51009500,0x7c00500,0x230400,0x51009519,0x7c00100,0x220400,0x51009519,0x7c00100,0x22040f,0x51009519,0x7c00100,
+0x230400,0x51009519,0x7c00100,0x250400,0x51009b71,0x2802100,0x962460,0x51009b71,0x6800000,0x1329800,0x51009b71,0x6800100,0x962540,0x51009b71,0x6804400,0x962540,
+0x51009b71,0x7c00100,0x230400,0x51009c52,0x2802100,0x962460,0x51009c52,0x2802400,0x962460,0x51009c52,0x2802d00,0x962460,0x51009c52,0x4000010,0x400000,0x51009c52,
+0x6800000,0x1329800,0x51009c52,0x6800100,0x962540,0x51009c52,0x7c00100,0x230400,0x51009c52,0xc000010,0x448000,0x51009d6d,0x6800000,0x1329800,0x51009d6d,0x7c00100,
+0x230400,0x51009d6d,0x7c00500,0x230400,0x51009d6d,0x7c00d00,0x230400,0x51009d6d,0xc000010,0x448000,0x51009e08,0x2802100,0x962460,0x51009f63,0x4000010,0x400000,
+0x51009f63,0x6800000,0x1329800,0x51009f63,0x7c00100,0x230400,0x51009f63,0x7c00900,0x230400,0x51009f63,0xc000010,0x448000,0x51009f63,0xc000010,0xb48000,0x5100a008,
+0x2000,0x962460,0x5100a008,0x2802400,0x962460,0x5100a008,0x4000000,0x200000,0x5100a008,0x7c00100,0x220400,0x5100a008,0x7c00100,0x230400,0x5100a008,0x7c00100,
+0x250400,0x5100a008,0x7c00500,0x230400,0x5100a16f,0x2806400,0x962460,0x5100a16f,0x6800000,0x1329800,0x5100a16f,0x6800100,0x962540,0x5100a16f,0x7c00100,0x230400,
+0x5100a16f,0xc000010,0x448000,0x5100a24f,0x2802100,0x962460,0x5100a24f,0x2802400,0x962460,0x5100a24f,0x6800000,0x1329800,0x5100a24f,0x7c00100,0x230400,0x5100a24f,
+0xc000010,0x448000,0x5100a36e,0x2802100,0x962460,0x5100a36e,0x4000000,0x200000,0x5100a36e,0x6800100,0x962540,0x5100a36e,0x6804400,0x962540,0x5100a36e,0x7c00100,
+0x230400,0x5100a442,0x2802100,0x962460,0x5100a442,0x4000000,0xe00000,0x5100a442,0x6800000,0xe29800,0x5100a442,0x6800100,0x962540,0x5100a442,0x7c00100,0x430400,
+0x5100a442,0x7c00100,0x2d30400,0x5100a442,0xc000010,0x448000,0x5100a500,0x4000000,0x200000,0x5100a600,0x4000000,0x200000,0x5100a601,0x2802000,0x962460,0x5100a76b,
+0x7c00100,0x230400,0x5100a868,0x7c00100,0x230400,0x5100a96c,0x4000000,0x200000,0x5100a96c,0x7c00100,0x230400,0x5100aa00,0x4000000,0xe00000,0x5100ab00,0x4000000,
+0xe00000,0x51086600,0x24000020,0x810000,0x51086600,0x24000020,0x1410000,0x510a4005,0x7c00100,0xe30400,0x510a4711,0x7c40300,0xe30000,0x510a7300,0x24000000,0x200000,
+0x510aaa00,0x4000000,0xe00000,0x514a82cc,0x4000000,0xe00000,0x5150a20e,0x4000400,0x400000,0x51802bbe,0x2802000,0x962460,0x51c00908,0x2802400,0x962460,0x51c0a008,
+0x2802400,0x962460,0x52000f0a,0x2802100,0x962460,0x52000f0a,0x6800100,0x962540,0x52000f0a,0x7c00100,0x230400,0x52001004,0x4000000,0x1600000,0x52001b00,0x4000000,
+0x200000,0x52001c1c,0x2802100,0x1862460,0x52001c1c,0x6800100,0x1862400,0x52001c1c,0x6800500,0x1862400,0x52001e12,0x7c00100,0x2230500,0x52001e12,0x7c00100,0x2330520,
+0x52002128,0x4000002,0x400000,0x52002128,0x7c00100,0x230400,0x52002a00,0x4000000,0x1500000,0x52002a00,0x4000000,0x1600000,0x52002d00,0x4000000,0x200006,0x52003000,
+0x24000000,0x200000,0x52006108,0x7c00100,0x220400,0x52006108,0x7c00100,0x250400,0x52008301,0x2802400,0x962460,0x52008407,0x2802400,0x962460,0x52008407,0x7c00100,
+0x220400,0x52008407,0x7c00100,0x250400,0x52008b3b,0x6800000,0x1800000,0x52008b3b,0x7c00100,0x1830000,0x52008e00,0x24000000,0x400000,0x52009419,0x7c00100,0x250400,
+0x5200975b,0x4000000,0x200000,0x5200ac7e,0x2802000,0x962460,0x5200ac7e,0x2802100,0x962460,0x5200ac7e,0x2802400,0x962460,0x5200ac7e,0x4000010,0x200000,0x5200ac7e,
+0x7c00100,0x230400,0x5200ac7e,0xc000010,0x248000,0x5200ad28,0x7c00100,0x230400,0x5200ae6a,0x2802100,0x1862460,0x5200ae6a,0x2802400,0x962460,0x5200ae6a,0x2802400,
+0x1862460,0x5200ae6a,0x2806000,0x1862460,0x5200ae6a,0x4000000,0x1800000,0x5200ae6a,0x6800000,0x1329800,0x5200ae6a,0x6800100,0x1862400,0x5200ae6a,0x6800100,0x1862540,
+0x5200ae6a,0x7c00100,0x1830000,0x5200ae6a,0x7c00900,0x1830000,0x5200ae6a,0xc000010,0x1848000,0x5200b083,0x4000010,0x400000,0x5200b083,0x7c00100,0x230400,0x5200b083,
+0xc000010,0x448000,0x5200b182,0x2802400,0x962460,0x5200b182,0x4000000,0x200000,0x5200b182,0x4000010,0x400000,0x5200b182,0x7c00100,0x230400,0x5200b182,0xc000010,
+0x448000,0x5200b30a,0x2802400,0x962460,0x5200b30a,0x4000000,0x200000,0x5200b30a,0x7c00100,0x230400,0x5200b54e,0x2802100,0x962460,0x5200b54e,0x2802400,0x962460,
+0x5200b54e,0x4000000,0xe00000,0x5200b54e,0x4000010,0x400000,0x5200b54e,0x6800000,0xe29800,0x5200b54e,0x6800100,0x962540,0x5200b54e,0x6804400,0x2f62540,0x5200b54e,
+0x7c00100,0x2b30400,0x5200b54e,0xc000010,0x448000,0x5200b61c,0x4000000,0x1800000,0x5200b61c,0x6800500,0x1862400,0x5200b61c,0x7c00100,0x1830000,0x5200b61c,0x7c00900,
+0x1830000,0x5200b77f,0x2802100,0x1862460,0x5200b77f,0x2802400,0x1862460,0x5200b77f,0x4000000,0x1800000,0x5200b77f,0x4000010,0x1800000,0x5200b77f,0x7c00100,0x1830000,
+0x5200b77f,0x7c00500,0x1830000,0x5200b77f,0x7c00900,0x1830000,0x5200b77f,0x7e00100,0x1830000,0x5200b873,0x2802100,0x962460,0x5200b873,0x2806400,0x962460,0x5200b873,
+0x6800000,0x1329800,0x5200b873,0x6800100,0x962540,0x5200b873,0x6800400,0x962540,0x5200b873,0x7c00100,0x230400,0x5200b873,0xc000010,0x448000,0x5200b912,0x7c00100,
+0x2230500,0x5200b912,0x7c00100,0x2330520,0x5200ba74,0x4000000,0x200000,0x5200ba74,0x4000010,0x400000,0x5200ba74,0x7c00100,0x230400,0x5200bb85,0x4000000,0x200000,
+0x5200bb85,0x7c00100,0x230400,0x5200bc75,0x4000000,0x400000,0x5200bc75,0x4000010,0x400000,0x5200bc75,0x7c00100,0x230400,0x5200bd7d,0x4000000,0x200000,0x5200bd7d,
+0x7c00100,0x230400,0x5200be7a,0x4000000,0x200000,0x5200be7a,0x7c00100,0x230400,0x5200bf58,0x7c00100,0x230400,0x5200c002,0x4000000,0x200000,0x5200c178,0x2802100,
+0x962460,0x5200c178,0x2802400,0x962460,0x5200c178,0x2806400,0x962460,0x5200c178,0x4000000,0x200000,0x5200c178,0x6800100,0x962540,0x5200c178,0x7c00100,0x230400,
+0x5200c178,0x7c00100,0x230401,0x5200c178,0xc000010,0x448000,0x5200c178,0x80000000,0x1329960,0x5200c247,0x7c00100,0x230400,0x5200c247,0x7c00100,0x830400,0x5200c247,
+0x7c00100,0x1430400,0x5200c300,0x4000000,0x200003,0x52022d00,0x4000000,0x100006,0x52023700,0x24000000,0x100000,0x52023700,0x24000000,0xe00000,0x52023700,0x24000000,
+0x2800000,0x52024400,0x4000000,0x100000,0x52027300,0x24000000,0x100000,0x5202c300,0x4000000,0x100000,0x5202c300,0x4000000,0x100002,0x5202c300,0x4000000,0x100003,
+0x5202c300,0x4000000,0x10000d,0x5202c300,0x4000100,0x150400,0x5202c300,0x4000100,0x15040d,0x520a1e12,0x7c00100,0x2130480,0x520a3700,0x24000000,0xe00000,0x520a3800,
+0x24000000,0x100000,0x520a4711,0x7c40300,0xe30000,0x520a4f11,0x7c00300,0xe30001,0x520a7300,0x24000000,0x100000,0x520ab412,0x7c00100,0x2130480,0x520ac400,0x4000000,
+0xe00002,0x520ac400,0x4000000,0xe0000d,0x520ac414,0x4000000,0xe0000d,0x520ac511,0x7c40300,0xe30000,0x5240af9c,0x7c00100,0x230400,0x5240afa1,0x4000400,0x200000,
+0x5240afa3,0x6800400,0x962540,0x5240afa3,0x7c00100,0x230400,0x5240afad,0x7c00100,0x230400,0x5240afaf,0x7c00100,0x230400,0x5240b2d4,0x4000000,0x200000,0x5240b2e3,
+0x4000000,0x200000,0x5240b2f1,0x4000000,0x200000,0x5240b2fc,0x4000000,0x1500000,0x524a44cc,0x4000000,0xe00003,0x5250b511,0x7c00900,0x430400,0x5280af9c,0x2802400,
+0x962460,0x5280af9d,0x2802400,0x962460,0x5280afa3,0x2802400,0x962460,0x5280afa5,0x2802400,0x962460,0x5280afa7,0x2802400,0x962460,0x52d0b308,0x2802400,0x962460,
+0x52d0b30c,0x7c00100,0x230400,0x60000c02,0x2802100,0x962460,0x60000c02,0x7c00100,0x230400,0x60000f0a,0x2802100,0x962460,0x60000f0a,0x6800100,0x962540,0x60000f0a,
+0x7c00100,0x230400,0x6000131f,0x4000000,0x200000,0x6000171a,0x7c00100,0x230400,0x6000171a,0x7c00100,0x230560,0x60001b27,0x2802100,0x962460,0x60001b27,0x4000000,
+0xc00000,0x60001b27,0x7c00100,0x230400,0x60001f0b,0x2802400,0x962460,0x60002919,0x7c00100,0x22040e,0x60002a00,0x4000000,0x1600000,0x60003000,0x24000000,0x200000,
+0x60003000,0x24000000,0xe00000,0x60003700,0x24000000,0x200000,0x60003800,0x24000000,0x1710000,0x60005102,0x4000000,0x200000,0x60006108,0x7c00100,0x220400,0x60006108,
+0x7c00100,0x250400,0x60006600,0x24000020,0x200000,0x60008301,0x2802400,0xc62460,0x6000903c,0x2806000,0x962460,0x6000903c,0x4000000,0x400000,0x60009519,0x7c00100,
+0x220400,0x60009519,0x7c00100,0x250400,0x6000a008,0x7c00100,0x220400,0x6000a008,0x7c00100,0x250400,0x6000c300,0x4000000,0x2703580,0x6000c654,0x2802000,0x962460,
+0x6000c654,0x4000010,0x200000,0x6000c654,0x7c00100,0x230400,0x6000c73f,0x2802000,0x962460,0x6000c73f,0x2802100,0x962460,0x6000c73f,0x4000000,0x200000,0x6000c73f,
+0x6800100,0x962540,0x6000c73f,0x6804000,0x2e62540,0x6000c73f,0x7c00100,0x2d30400,0x6000c80b,0x7c00100,0x230400,0x6000c941,0x2802100,0x962460,0x6000c941,0x2806400,
+0x2f62460,0x6000c941,0x4000000,0xe00000,0x6000c941,0x4000010,0xe00000,0x6000c941,0x6800000,0x2d29800,0x6000c941,0x6800100,0x962540,0x6000c941,0x7c00100,0x2b30400,
+0x6000c941,0x7c00100,0x2c30400,0x6000c941,0xc000010,0x448000,0x6000ca82,0x7c00100,0x230400,0x6000cc00,0x4000000,0xe00000,0x6000d000,0x4000000,0x200000,0x6002c300,
+0x4000000,0x100000,0x6002c300,0x4000000,0x10000d,0x6002c300,0x4000100,0x150400,0x6002c300,0x4000100,0x15040d,0x600a3000,0x24000000,0x200000,0x600a3000,0x24000000,
+0xe00000,0x600a3700,0x24000000,0x200000,0x600a3800,0x24000000,0x200000,0x600a3800,0x24000000,0x2800000,0x600a4305,0x7c00100,0xe30400,0x600ac300,0x4000000,0x100000,
+0x600ac400,0x4000000,0xe0000d,0x600acb14,0x7c00100,0xe30000,0x600acb16,0x7c00100,0xe30c00,0x600acc00,0x4000000,0xe00000,0x600acd00,0x4000000,0x200000,0x600acd00,
+0x4000000,0xe00000,0x600acd00,0x4000000,0x2800000,0x600ace00,0x4000000,0xe00000,0x600ace00,0x4000000,0x2800000,0x600acf00,0x4000000,0xe00000,0x600acf00,0x4000000,
+0x2800000,0x600ad111,0x7c40300,0xe30000,0x604ac4cc,0x4000000,0xe00003,0x61000a03,0x4000000,0x1600000,0x61000c02,0x80000000,0x1329960,0x6100120f,0x4000000,0x200000,
+0x61001a18,0x7c00100,0x1830000,0x61001d0c,0x7c00100,0x230400,0x61001d0c,0x7c00100,0x250400,0x61006600,0x24000020,0x200000,0x61008407,0x7c00100,0x220400,0x61008407,
+0x7c00100,0x250400,0x6100870c,0x7c00100,0x220400,0x61008e00,0x24000000,0x200000,0x61008e00,0x24000000,0x400000,0x61008e00,0x24000002,0x300000,0x6100903c,0x7c00100,
+0x230400,0x61009519,0x7c00100,0x220400,0x61009519,0x7c00100,0x250400,0x61009519,0x7c00500,0x22040f,0x61009b71,0x2802100,0x962460,0x61009b71,0x2806400,0x962460,
+0x61009b71,0x7c00100,0x230400,0x6100a008,0x2802100,0x962460,0x6100c300,0x4000000,0x20000f,0x6100cd00,0x4000000,0x200000,0x6100d202,0x2802400,0x962460,0x6100d202,
+0x2802500,0x962460,0x6100d202,0x7c00100,0x230400,0x6100d302,0x4000020,0x200000,0x6100d302,0x7c00120,0x230405,0x6100d476,0x2802100,0x962460,0x6100d476,0x2802100,
+0x962461,0x6100d476,0x2806400,0x962460,0x6100d476,0x4000000,0x400000,0x6100d476,0x6800000,0x1329800,0x6100d476,0x6800100,0x962540,0x6100d476,0x7c00100,0x230400,
+0x6100d476,0xc000010,0x448000,0x6100d573,0x2802100,0x962460,0x6100d573,0x2806400,0x962460,0x6100d573,0x6800100,0x962540,0x6100d573,0x7c00100,0x230400,0x6100d573,
+0x7c00900,0x230400,0x6100d573,0xc000010,0x448000,0x6100d68d,0x7c00100,0x230400,0x6100d756,0x7c00100,0x230400,0x6100d85c,0x2802500,0x962460,0x6100d85c,0x6800100,
+0x962540,0x6100d85c,0x7c00100,0x230400,0x6100d85c,0x7c00500,0x230400,0x6100d997,0x2802100,0x962460,0x6100d997,0x4000000,0x200000,0x6100d997,0x4000000,0x400000,
+0x6100d997,0x6800000,0x1329800,0x6100d997,0x6800100,0x962540,0x6100d997,0x6804400,0x962540,0x6100d997,0x7c00100,0x230400,0x6100d997,0x7c00100,0x230560,0x6100d997,
+0xc000010,0x448000,0x6100da98,0x6800000,0x1329800,0x6100da98,0x7c00100,0x230400,0x6100db71,0x4000000,0x200000,0x6100dc99,0x2802100,0x962460,0x6100dc99,0x2802400,
+0x962460,0x6100dc99,0x6800000,0x1329800,0x6100dc99,0x6800100,0x962540,0x6100dc99,0x6804400,0x962540,0x6100dc99,0x7c00100,0x230400,0x610a4711,0x7c40300,0xe30000,
+0x610a4f11,0x7c00300,0xe30001,0x610ace00,0x4000000,0xe00000,0x6140afa1,0x7c00100,0x230400,0x6140afa3,0x7c00100,0x230400,0x6180af9e,0x2802400,0x962460,0x62002a00,
+0x4000000,0x1600000,0x63002800,0x80000,0x918820,0x63c00c15,0x80000,0x918820,0x7000080e,0x7c00100,0x250400,0x70000a03,0x4000000,0x200000,0x70000c00,0x80000000,
+0x1329960,0x70000f0a,0x7c00100,0x230400,0x70001004,0x7c00100,0x230400,0x70001524,0x2802100,0x962460,0x70001524,0x7c00100,0x230400,0x70001615,0x2802100,0x962460,
+0x7000171a,0x2802100,0x962460,0x70001821,0x6800000,0x1329800,0x70002320,0x7c00100,0x230400,0x70002a00,0x4000000,0x1500000,0x70002a00,0x4000000,0x1600000,0x70003000,
+0x24000000,0x200000,0x70003800,0x24000000,0xe00000,0x70005201,0x2802400,0x962460,0x7000581e,0x7c00100,0x230400,0x70006108,0x7c00100,0x220400,0x70006108,0x7c00100,
+0x250400,0x70006f30,0x7c00100,0x230400,0x70007300,0x24000000,0x200000,0x70007f0e,0x4000000,0x200000,0x70008301,0x2802100,0x962460,0x70008301,0x2802400,0x962460,
+0x70008e00,0x24000000,0x200000,0x70008e00,0x24000000,0x400000,0x70008e00,0x24000002,0x400000,0x70008e00,0x24000008,0x1410000,0x70008e00,0x24000010,0x400000,0x70008e00,
+0x2c000010,0x448000,0x70009519,0x7c00100,0x220400,0x70009519,0x7c00100,0x230400,0x70009519,0x7c00100,0x250400,0x70009865,0x7c00100,0x230400,0x70009965,0x4000010,
+0x400000,0x70009965,0x7c00100,0x230400,0x7000a008,0x7c00100,0x220400,0x7000a008,0x7c00100,0x250400,0x7000a008,0x7c00500,0x22040f,0x7000a50e,0x4000000,0x200000,
+0x7000b61c,0x2802500,0x1862460,0x7000b61c,0x6800500,0x1862400,0x7000b61c,0x7c00100,0x1830000,0x7000c300,0x4000000,0x100000,0x7000c941,0x2806000,0xc62460,0x7000cc00,
+0x4000000,0xe00000,0x7000cd00,0x4000000,0x200000,0x7000cd00,0x4000000,0xe00000,0x7000cd00,0x4000000,0x2800000,0x7000cf00,0x4000000,0xe00000,0x7000d202,0x2802100,
+0x962460,0x7000d202,0x7c00100,0x230400,0x7000d997,0x7c00100,0x230400,0x7000d997,0xc000010,0x248000,0x7000dd86,0x2802400,0x962460,0x7000dd86,0x7c00100,0x230400,
+0x7000dd86,0xc000010,0x448000,0x7000de9f,0x4000000,0x200000,0x7000de9f,0x7c00100,0x230400,0x7000e001,0x2400,0x962460,0x7000e001,0x2802400,0x962460,0x7000e187,
+0x2802000,0x962460,0x7000e187,0x2802100,0x962460,0x7000e187,0x4000000,0x200000,0x7000e187,0x7c00100,0x230400,0x7000e187,0xc000010,0x448000,0x7000e288,0x7c00100,
+0x230400,0x7000e300,0x4000000,0x200000,0x7000e489,0x2802100,0x962460,0x7000e489,0x2802400,0x962460,0x7000e489,0x6800100,0x962540,0x7000e489,0x6800100,0x962541,
+0x7000e489,0x6804400,0x2f62540,0x7000e489,0x7c00100,0x430400,0x7000e489,0x7c00100,0x2b30400,0x7000e489,0x7c00100,0x2d30400,0x7000e489,0x7c00900,0x430400,0x7000e59d,
+0x2802100,0x962460,0x7000e59d,0x2802400,0x962460,0x7000e59d,0x4000000,0x200000,0x7000e59d,0x4000010,0x200000,0x7000e59d,0x6800100,0x962540,0x7000e59d,0x6804400,
+0x962540,0x7000e59d,0x7c00100,0x230400,0x7000e59d,0xc000010,0x448000,0x7000e691,0x2802100,0x962460,0x7000e691,0x2802400,0x962460,0x7000e691,0x2806400,0x962460,
+0x7000e691,0x6800000,0x1329800,0x7000e691,0x6800100,0x962540,0x7000e691,0x7c00100,0x230400,0x7000e700,0x4000400,0x200400,0x7000e70e,0x7c00100,0x220400,0x7000e719,
+0x7c00100,0x220400,0x7000e719,0x7c00500,0x22040f,0x7000e853,0x7c00100,0x230400,0x7000e9a0,0x2802400,0x962460,0x7000e9a0,0x4000000,0x200000,0x7000e9a0,0x4000000,
+0x500000,0x7000e9a0,0x7c00100,0x230400,0x7000ea79,0x2802400,0x962460,0x7000ea79,0x4000000,0x200000,0x7000ea79,0x4000000,0xf00000,0x7000ea79,0x4000010,0x400000,
+0x7000ea79,0x7c00100,0x230400,0x7000eb8c,0x2802400,0x962460,0x7000eb8c,0x4000000,0x200000,0x7000eb8c,0x7c00100,0x230400,0x7000eca3,0x2802100,0x962460,0x7000eca3,
+0x2806400,0x962460,0x7000eca3,0x4000000,0x200000,0x7000eca3,0x6800000,0x1329800,0x7000eca3,0x6800100,0x962540,0x7000eca3,0x7c00100,0x230400,0x7000eca3,0xc000010,
+0x448000,0x7000ed95,0x6800000,0x1329800,0x7000ed95,0x7c00100,0x230400,0x7000ed95,0xc000010,0x448000,0x7000ee1c,0x2802500,0x1862460,0x7000ee1c,0x6800000,0x1329800,
+0x7000ee1c,0x7c00100,0x1830000,0x7000ee1c,0x7c00900,0x1830000,0x7000ef8f,0x4000000,0x200000,0x7000ef8f,0x7c00100,0x230400,0x7000f08e,0x4000000,0x200000,0x7000f08e,
+0x7c00100,0x230400,0x7000f159,0x2802100,0x962460,0x7000f159,0x7c00100,0x230400,0x7000f200,0x4000000,0x200000,0x7000f200,0x4000000,0x1200000,0x7000f200,0x4000000,
+0x1710000,0x7000f34b,0x2802400,0x962460,0x7000f34b,0x4000000,0x200000,0x7000f34b,0x4000010,0x400000,0x7000f34b,0x6800000,0x1329800,0x7000f34b,0x7c00100,0x230400,
+0x7000f34b,0x7c00900,0x230400,0x7000f34b,0xc000010,0x448000,0x7000f490,0x4000000,0x200000,0x7000f490,0x7c00100,0x230400,0x7000f5a5,0x7c00100,0x230400,0x7000f67b,
+0x4000000,0x200000,0x7000f67b,0x4000010,0x200000,0x7000f67b,0x7c00100,0x230400,0x7000f8a6,0x2802100,0x962460,0x7000f8a6,0x2802400,0x962460,0x7000f8a6,0x2806400,
+0x962460,0x7000f8a6,0x4000000,0x500000,0x7000f8a6,0x4000010,0xb00000,0x7000f8a6,0x4000800,0x200000,0x7000f8a6,0x6800100,0x962540,0x7000f8a6,0x6800100,0x962541,
+0x7000f8a6,0x7c00100,0x230400,0x7000f8a6,0xc000010,0x448000,0x7000f921,0x4000000,0x200000,0x7000fa00,0x4000000,0x200000,0x7000fb9e,0x2802100,0x962460,0x7000fb9e,
+0x2802400,0x962460,0x7000fb9e,0x2806400,0x962460,0x7000fb9e,0x4000000,0x200000,0x7000fb9e,0x6800000,0x1329800,0x7000fb9e,0x6800100,0x962540,0x7000fb9e,0x6800100,
+0x962541,0x7000fb9e,0x7c00100,0x230400,0x7000fc92,0x4000000,0x200000,0x7000fc92,0x6800000,0x1329800,0x7000fc92,0x7c00100,0x220400,0x7000fc92,0x7c00100,0x230400,
+0x7000fc92,0x7c00100,0x250400,0x700acd00,0x4000000,0xe00000,0x700acd00,0x4000000,0x2800000,0x700ace00,0x4000000,0xe00000,0x700acf00,0x4000000,0xe00000,0x700acf00,
+0x4000000,0x2800000,0x7050df21,0x4000000,0x200000,0x7050f729,0x80000,0x918820,0x7080afa1,0x2802400,0x962460,0x7090df21,0x2802400,0x962460,0x70d0e427,0x2802100,
+0x962460,0x70d0e427,0x2802400,0x962460,0x70d0e427,0x6800100,0x962540,0x70d0ea25,0x4000010,0x400000,0x8000120f,0x7c00100,0x230400,0x80001524,0x7c00100,0x230400,
+0x8000171a,0x7c00100,0x230400,0x80002006,0x7c00100,0x220400,0x80002006,0x7c00100,0x250400,0x80002a00,0x4000000,0x1500000,0x80002d00,0x4000000,0x200000,0x80005208,
+0x2802400,0x962460,0x80005c00,0x4000000,0x200000,0x80007300,0x24000000,0x200000,0x80009519,0x7c00100,0x220400,0x80009519,0x7c00100,0x230400,0x80009519,0x7c00100,
+0x250400,0x80009865,0x7c00100,0x230400,0x8000a008,0x2802100,0x962460,0x8000b30a,0x4000000,0x500000,0x8000b30a,0x7c00100,0x230400,0x8000cd00,0x4000000,0xe00000,
+0x8000d202,0x2802500,0x962460,0x8000d202,0x7c00100,0x230400,0x8000d68d,0x4000000,0x200000,0x8000d997,0x2802000,0x962460,0x8000d997,0x2802400,0x962460,0x8000d997,
+0x4000000,0x400000,0x8000d997,0x4000000,0x500000,0x8000d997,0x7c00100,0x230400,0x8000d997,0xc000010,0x448000,0x8000e489,0x2802100,0x962460,0x8000e489,0x7c00100,
+0x2d30400,0x8000e719,0x7c00100,0x220400,0x8000f8a6,0x2802100,0x962460,0x8000f8a6,0x7c00100,0x230400,0x8000f8a6,0xc000010,0x448000,0x8000fda1,0x2802100,0x1862460,
+0x8000fda1,0x2806400,0x1862460,0x8000fda1,0x4000000,0x1800000,0x8000fda1,0x6800000,0x1329800,0x8000fda1,0x6800100,0x1862400,0x8000fda1,0x6800100,0x1862540,0x8000fda1,
+0x7c00100,0x1830000,0x8000fda1,0xc000010,0x448000,0x8000fe9c,0x7c00100,0x230400,0x8000fe9c,0x7c00100,0x830400,0x8000fe9c,0x7c00100,0x1430400,0x8000ff06,0x7c00100,
+0x220400,0x80010165,0x7c00100,0x230400,0x800102a2,0x4000000,0x200000,0x800102a2,0x7c00100,0x230400,0x800103a4,0x7c00100,0x230400,0x800103a4,0xc000010,0x448000,
+0x8001044c,0x4000000,0x200000,0x8001044c,0x7c00100,0x220400,0x8001044c,0x7c00100,0x250400,0x80010670,0x2802000,0x962460,0x80010670,0x4000000,0x200000,0x80010670,
+0x4000010,0x400000,0x80010670,0xc000010,0x448000,0x800a4711,0x7c40300,0xe30000,0x800acd00,0x4000000,0xe00000,0x800acd00,0x4000000,0x2902460,0x800ace00,0x4000000,
+0xe00000,0x800acf00,0x4000000,0xe00000,0x800b0011,0x7c40300,0xe30000,0x800b0500,0x4000000,0xe00000,0x800b0500,0x4000000,0x2800000,0x90001615,0x7c00100,0x230400,
+0x9000171a,0x4000000,0x200000,0x9000171a,0x7c00100,0x230400,0x90003000,0x24000000,0x200000,0x90007f0e,0x4000000,0x200000,0x90008301,0x2802400,0x962460,0x90008e00,
+0x24000000,0x400000,0x90009519,0x7c00100,0x250400,0x9000a16f,0x2802100,0x962460,0x9000d200,0x80000000,0x1329960,0x9000d202,0x2802000,0x962460,0x9000d202,0x2802100,
+0x962460,0x9000d202,0x7c00100,0x230400,0x9000e59d,0x2802100,0x962460,0x90010500,0x4000000,0xe00000,0x900107a7,0x2802100,0x962460,0x900107a7,0x2802400,0x962460,
+0x900107a7,0x2802c00,0x962460,0x900107a7,0x4000000,0x1400000,0x900107a7,0x6800000,0x1329800,0x900107a7,0x7c00100,0x220400,0x900107a7,0x7c00100,0x250400,0x900108a8,
+0x2802100,0x962460,0x900108a8,0x2806400,0x962460,0x900108a8,0x4000000,0x200000,0x900108a8,0x4000000,0x400000,0x900108a8,0x4000010,0x400000,0x900108a8,0x6800000,
+0x1329800,0x900108a8,0x6800100,0x962540,0x900108a8,0x7c00100,0x230400,0x900108a8,0xc000010,0x448000,0x90010908,0x7c00100,0x220400,0x90010a38,0x2802100,0x962460,
+0x90010ca9,0x2802100,0x962460,0x90010ca9,0x4000000,0x500000,0x90010ca9,0x4000010,0xb00000,0x90010ca9,0x6800100,0x962540,0x90010ca9,0x7c00100,0x230400,0x90010d1b,
+0x4000000,0x500000,0x90010eaa,0x2802100,0x962460,0x90010eaa,0x2802400,0x962460,0x90010eaa,0x2806400,0x962460,0x90010eaa,0x4000000,0x200000,0x90010eaa,0x4000000,
+0x400000,0x90010eaa,0x4000010,0x400000,0x90010eaa,0x6800000,0x1329800,0x90010eaa,0x6800100,0x962540,0x90010eaa,0x7c00100,0x230400,0x90010eaa,0xc000010,0x448000,
+0x90010fab,0x7c00100,0x220400,0x90010fab,0x7c00100,0x250400,0x9002c300,0x4000000,0x100000,0x900ac400,0x4000000,0xe0000d,0x900acd00,0x4000000,0xe00000,0x900acd00,
+0x4000000,0x2800000,0x900acf00,0x4000000,0xe00000,0x900b0500,0x4000000,0xe00000,0x900b0500,0x4000000,0x2800000,0x900b0b9a,0x7c00900,0x1230400,0x900b109a,0x7c00300,
+0xe30000,0x900b119a,0x7c00300,0xe30000,0x90408e06,0x24000000,0x400000,0xa0001004,0x4000000,0x200000,0xa0001004,0x7c00100,0x230400,0xa000120f,0x2802100,0x962460,
+0xa000120f,0x2802400,0x962460,0xa000171a,0x2802100,0x962460,0xa000171a,0x2806400,0x962460,0xa0002a00,0x4000000,0x1600000,0xa0003000,0x24000000,0x200000,0xa000581e,
+0x7c00100,0x230400,0xa0007300,0x24000000,0x200000,0xa0008301,0x2802400,0x962460,0xa0008e00,0x24000000,0x400000,0xa000cf00,0x4000000,0xe00000,0xa0010500,0x4000000,
+0x200000,0xa00114af,0x2802100,0x962460,0xa00114af,0x2802400,0x962460,0xa00114af,0x2806400,0x962460,0xa00114af,0x6800000,0x1329800,0xa00114af,0x7c00100,0x230400,
+0xa00114af,0x7c00100,0x230560,0xa00116b0,0x2802100,0x962460,0xa00116b0,0x2802800,0x962460,0xa00116b0,0x2806400,0x962460,0xa00116b0,0x4000000,0x400000,0xa00116b0,
+0x4000000,0x500000,0xa00116b0,0x4000010,0x400000,0xa00116b0,0x6800100,0x962540,0xa00116b0,0x7c00100,0x230400,0xa00116b0,0x7c00100,0x230560,0xa00116b0,0xc000010,
+0x448000,0xa0011722,0x7c00100,0x230400,0xa00118b1,0x2802000,0x962460,0xa00118b1,0x2802100,0x962460,0xa00118b1,0x2806400,0x962460,0xa00118b1,0x4000000,0x200000,
+0xa00118b1,0x4000000,0x400000,0xa00118b1,0x4000000,0x500000,0xa00118b1,0x6800100,0x962540,0xa00118b1,0x7c00100,0x230400,0xa00118b1,0x7c00100,0x230560,0xa00118b1,
+0xc000010,0x448000,0xa00a4005,0x7c00100,0xe30400,0xa00a4711,0x7c40300,0xe30000,0xa00ac400,0x4000000,0xe00000,0xa00acb14,0x7c00100,0xe30000,0xa00acf00,0x4000000,
+0xe00000,0xa00b0500,0x4000000,0xe00000,0xa00b0500,0x4000000,0x2800000,0xa00b0b96,0x7c00900,0x1230400,0xa00b1211,0x7c40300,0xe30000,0xa00b1314,0x7c00100,0xe30000,
+0xa00b1596,0x7c00300,0xe30000,0xa040afb9,0x6800400,0x962540,0xa08083ba,0x2802400,0x962460,0xb0000a03,0x7c00100,0x220400,0xb0000b13,0x7c00100,0x2633800,0xb0001004,
+0x2802000,0x962460,0xb0001110,0x4000000,0x200000,0xb0001524,0x2802100,0x962460,0xb0001615,0x4000000,0x500000,0xb000251b,0x7c00100,0x230400,0xb0007300,0x24000000,
+0x200000,0xb0008939,0x4000000,0x200000,0xb0008939,0x7c00100,0x230400,0xb0008e00,0x24000000,0x200000,0xb0008e00,0x24000000,0x400000,0xb0008e00,0x24000010,0x400000,
+0xb0009257,0x2802000,0x962460,0xb0009257,0x4000000,0x1600000,0xb0009519,0x7c00100,0x220400,0xb0009519,0x7c00100,0x250400,0xb0009a00,0x4000000,0x200000,0xb000b30a,
+0x2802100,0x962460,0xb000b30a,0x7c00100,0x230400,0xb000c178,0x80000000,0x1329960,0xb000c300,0x4000000,0x200000,0xb000d202,0x2802000,0x962460,0xb000d476,0x6800100,
+0x962540,0xb000d476,0x7c00100,0x230400,0xb000e300,0x4000000,0xe00000,0xb000fda1,0x7c00100,0x1830000,0xb0010eaa,0x2802000,0x962460,0xb00116b0,0x7c00100,0x230400,
+0xb0011900,0x4000000,0xe00000,0xb0011ab2,0x2802100,0x962460,0xb0011ab2,0x2802400,0x962460,0xb0011ab2,0x2806400,0x962460,0xb0011ab2,0x4000000,0x200000,0xb0011ab2,
+0x6800100,0x962540,0xb0011ab2,0x7c00100,0x230400,0xb0011b0c,0x7c00100,0x230400,0xb0011cb3,0x2802100,0x962460,0xb0011cb3,0x2806400,0x962460,0xb0011cb3,0x6800000,
+0x1329800,0xb0011cb3,0x6800100,0x962540,0xb0011cb3,0x7c00100,0x230400,0xb0011db6,0x2802500,0x962460,0xb0011db6,0x6800000,0x1329800,0xb0011db6,0x7c00100,0x230400,
+0xb0011db6,0x7c00500,0x230400,0xb0011e00,0x4000000,0x200000,0xb0011e00,0x4000000,0x1500000,0xb0011fb4,0x2802100,0x962460,0xb0011fb4,0x6800100,0x962540,0xb0011fb4,
+0x7c00100,0x430400,0xb0011fb4,0x7c00100,0x2d30400,0xb0011fb4,0xc000010,0x448000,0xb0012000,0x4000000,0x200000,0xb00121b5,0x4000000,0x200000,0xb00121b5,0x4000010,
+0x400000,0xb00121b5,0x7c00100,0x220400,0xb00121b5,0x7c00100,0x250400,0xb00121b5,0xc000010,0x448000,0xb00122b8,0x4000000,0x200000,0xb00122b8,0x7c00100,0x230400,
+0xb00123b7,0x2802400,0x962460,0xb00123b7,0x4000000,0x200000,0xb00123b7,0x7c00100,0x230400,0xb00123b7,0xc000010,0x248000,0xb00a4005,0x7c00100,0xe30400,0xb00a4711,
+0x7c40300,0xe30000,0xb00acf00,0x4000000,0xe00000,0xb00b0500,0x4000000,0xe00000,0xb00b0500,0x4000000,0x2800000,0xb00b109a,0x7c00300,0xe30000,0xb080e487,0x2802000,
+0x962460,0xc0001524,0x4000000,0x500000,0xc0001a18,0x2806400,0x1862460,0xc0001a18,0x7c00100,0x1830000,0xc0007300,0x24000000,0x200000,0xc0008e00,0x24000010,0x400000,
+0xc0009519,0x7c00100,0x220400,0xc0009519,0x7c00100,0x250400,0xc000c300,0x4000000,0x20000f,0xc000d85c,0x2802100,0x962460,0xc000d85c,0x6800100,0x962540,0xc000d85c,
+0x7c00100,0x230400,0xc000dc99,0x7c00100,0x230400,0xc000e719,0x7c00100,0x220400,0xc00107a7,0x7c00100,0x230400,0xc0010eaa,0x7c00100,0x230400,0xc00116b0,0x7c00100,
+0x230560,0xc0011900,0x4000000,0x200000,0xc0012447,0,0x818820,0xc0012447,0,0xc18820,0xc0012447,0,0x1418820,0xc00125b9,0x7c00100,0x230400,
+0xc00126bb,0x2802100,0x962460,0xc00126bb,0x2806400,0x962460,0xc00126bb,0x4000000,0x500000,0xc00126bb,0x6800100,0x962540,0xc00126bb,0x7c00100,0x230400,0xc00127ba,
+0x2802400,0x962460,0xc00127ba,0x4000000,0x200000,0xc00127ba,0x6800000,0x1329800,0xc00127ba,0x7c00100,0x230400,0xc00127ba,0x7c00900,0x230400,0xc0012800,0x4000000,
+0x200000,0xc0012b23,0x4000000,0x200000,0xc0012b23,0x4000000,0x400000,0xc0012b23,0x4000000,0x1500000,0xc0012cbc,0x2802400,0x962460,0xc0012cbc,0x4000000,0x1600000,
+0xc0012cbc,0x6800000,0x1329800,0xc0012cbc,0x7c00100,0x230400,0xc00acf00,0x4000000,0xe00000,0xc00ae300,0x4000000,0xe00000,0xc00b0500,0x4000000,0xe00000,0xc00b0500,
+0x4000000,0x2800000,0xc00b0b11,0x4000000,0x1200000,0xc00b0b11,0x7c00900,0x1230400,0xc00b109a,0x7c00300,0xe30000,0xc00b2914,0x7c00100,0x2530000,0xc00b2916,0x7c00100,
+0x2530c00,0xc00b2a00,0x4000000,0xe00000,0xc040af5e,0x7c00100,0x230400,0xc0c12b89,0x4000000,0x200000,0xc14a44cc,0x4000000,0xe0000d,0xd000131f,0x2802c00,0x962460,
+0xd000171a,0x7c00100,0x230400,0xd0001821,0x2802100,0x962460,0xd0007300,0x24000000,0x200000,0xd0008e00,0x24000000,0x200000,0xd0008f3a,0x2806000,0x962460,0xd0009519,
+0x7c00100,0x220400,0xd0009519,0x7c00100,0x250400,0xd000a500,0x4000000,0x200000,0xd000c300,0x4000000,0xe00000,0xd000d202,0x7c00100,0x230400,0xd000d476,0x7c00100,
+0x230400,0xd000d997,0x2802100,0x962460,0xd000d997,0x6800100,0x962540,0xd000e001,0x2802100,0x962460,0xd000e700,0x4000400,0x200000,0xd000e719,0x7c00100,0x220400,
+0xd000e719,0x7c00500,0x22040f,0xd000fa00,0x4000000,0xe00000,0xd0010eaa,0x4000010,0x400000,0xd0010eaa,0x7c00100,0x230400,0xd0012dbd,0x4000000,0x200000,0xd0012dbd,
+0x7c00100,0x230400,0xd0012fbe,0x2802100,0x962460,0xd0012fbe,0x2802400,0x962460,0xd0012fbe,0x2806400,0x2f62460,0xd0012fbe,0x4000000,0x400000,0xd0012fbe,0x6800000,
+0xe29800,0xd0012fbe,0x6800100,0x962540,0xd0012fbe,0x6800100,0x962541,0xd0012fbe,0x6804400,0x962540,0xd0012fbe,0x7c00100,0x2b30400,0xd0012fbe,0x7c00100,0x2c30560,
+0xd0012fbe,0xc000010,0x448000,0xd0013183,0x7c00100,0x230400,0xd0013200,0x4000000,0x200000,0xd0013200,0x6800000,0x1329805,0xd00134c0,0x2802100,0x962460,0xd00134c0,
+0x4000002,0x400000,0xd00134c0,0x7c00100,0x230400,0xd00a4305,0x7c00100,0xe30400,0xd00a4611,0x7c40300,0xe30000,0xd00a4711,0x7c40300,0xe30000,0xd00a5e11,0x7c40300,
+0xe30000,0xd00acf00,0x4000000,0xe00000,0xd00b0500,0x4000000,0xe00000,0xd00b0500,0x4000000,0x2800000,0xd00b0b11,0x6800500,0x962540,0xd00b0bbf,0x2802200,0xc62460,
+0xd00b119a,0x7c00300,0xe30000,0xd00b2a00,0x4000000,0xe00000,0xd00b2e11,0x7c40300,0xe30000,0xd00b30bf,0x7c00300,0x230000,0xd00b339a,0x7c00300,0xe30000,0xe0000c02,
+0xc000010,0xb48000,0xe0001524,0x2802400,0x962460,0xe0001524,0x7c00100,0x230400,0xe0001615,0x7c00100,0x230400,0xe000251b,0x12882000,0x962460,0xe0002a00,0x4000000,
+0x1500000,0xe0005102,0x4000000,0x200000,0xe0005c00,0x4000000,0x200000,0xe000622a,0x6804400,0x962540,0xe000622a,0x7c00100,0x230400,0xe0008838,0x7c00100,0x220400,
+0xe0008838,0x7c00100,0x250400,0xe0008e00,0x24000000,0x810000,0xe0008e00,0x24000000,0x1410000,0xe0008e00,0x24000002,0x400000,0xe0008e00,0x2c000010,0xb48000,0xe000933e,
+0x7c00100,0x2b30400,0xe000933e,0xc000010,0x448000,0xe0009519,0x7c00100,0x220400,0xe0009519,0x7c00100,0x22040f,0xe0009519,0x7c00100,0x250400,0xe000c178,0x2802100,
+0x962460,0xe000c941,0x2802100,0x962460,0xe000c941,0x2806400,0x962460,0xe000c941,0x7c00100,0x2b30400,0xe000d202,0x2802400,0x962460,0xe000d202,0x7c00100,0x230400,
+0xe000d202,0x7c00500,0x230400,0xe000dc99,0x4000000,0x200000,0xe000e001,0x2802100,0x962460,0xe000e001,0x2802400,0x962460,0xe000fda1,0x7c00100,0x1830000,0xe0013502,
+0x2802400,0x962460,0xe0013502,0x4000000,0x200000,0xe0013502,0x7c00100,0x230400,0xe0013502,0x80000000,0x1329960,0xe00136c1,0x4000000,0x200000,0xe00136c1,0x7c00100,
+0x230400,0xe001370b,0x7c00100,0x230400,0xe0013919,0x7c00500,0x220400,0xe0013919,0x7c00500,0x22040f,0xe0013919,0x7c00d00,0x23040f,0xe0013a19,0x7c00100,0x220400,
+0xe0013a19,0x7c00100,0x230400,0xe0013bc2,0x2802400,0x962460,0xe0013bc2,0x7c00100,0x230400,0xe0013bc2,0xc000010,0x248000,0xe0013cc3,0x6800000,0x1329800,0xe0013cc3,
+0x7c00100,0x230400,0xe0013dc4,0x2802400,0x962460,0xe0013dc4,0x7c00100,0x230400,0xe0013e28,0x7c00100,0x230400,0xe0013fc5,0x7c00100,0x220400,0xe0013fc5,0x7c00100,
+0x250400,0xe0014000,0x4000000,0x200000,0xe0014001,0x2802400,0x962460,0xe00a4711,0x7c40300,0xe30000,0xe00a5e11,0x7c40300,0xe30000,0xe00ac511,0x7c40300,0xe30000,
+0xe00acf00,0x4000000,0xe00000,0xe00ae300,0x4000000,0xe00000,0xe00b0500,0x4000000,0xe00000,0xe00b1314,0x7c00100,0xe30000,0xe00b1316,0x7c00100,0xe30c00,0xe00b2a00,
+0x4000000,0xe00000,0xe00b2a00,0x4000000,0x2800000,0xe00b3816,0x7c00500,0x230c00,0xe0808328,0x2802400,0x962460,0xf0001615,0x6800100,0x962540,0xf0001a18,0x2802000,
+0x1862460,0xf000c247,0x7c00100,0x1430400,0xf000d000,0x4000000,0xe00000,0xf000e300,0x4000000,0xe00000,0xf000e59d,0x2802100,0x962460,0xf000e59d,0x7c00100,0x230400,
+0xf0012447,0,0x818820,0xf0012447,0,0xc18820,0xf0012447,0,0x1418820,0xf0012447,0x2802000,0x962460,0xf0012447,0x2802400,0x962460,0xf0012447,
+0x7c00100,0x230400,0xf0013a19,0x7c00100,0x220400,0xf0014102,0x2802400,0x962460,0xf0014308,0x2802100,0x962460,0xf0014308,0x7c00500,0x22040e,0xf0014308,0x7c00500,
+0x22040f,0xf001440a,0x4000000,0x500000,0xf0014500,0x4000000,0x200000,0xf00146c6,0x2802100,0x962460,0xf00146c6,0x2806000,0x2f62460,0xf00146c6,0x4000000,0xe00000,
+0xf00146c6,0x6800000,0x2d29800,0xf00146c6,0x6800100,0x962540,0xf00146c6,0x6804000,0x962540,0xf00146c6,0x7c00100,0x2b30400,0xf00146c6,0x7c00100,0x2c30560,0xf00146c6,
+0xc000010,0x448000,0xf00147c7,0x2802000,0x962460,0xf00147c7,0x6800000,0x1329800,0xf00147c7,0x7c00100,0x230400,0xf00ac511,0x7c40300,0xe30000,0xf00acf00,0x4000000,
+0xe00000,0xf00b2914,0x7c00100,0x2530000,0xf00b2916,0x7c00100,0x2530c00,0xf00b2a00,0x4000000,0xe00000,0xf00b2a00,0x4000000,0x2800000,0xf00b4211,0x7c40300,0xe30000,
+0xf10a3c00,0x4000000,0xe00000,0xf10a3c00,0x4008000,0xe00000,0xf10a8200,0x4008000,0xe00000,0xf10b4811,0x7c40300,0xe30000};
-static const int32_t countPropsVectors=7230;
+static const int32_t countPropsVectors=7260;
static const int32_t propsVectorsColumns=3;
-static const uint16_t scriptExtensions[282]={
+static const uint16_t scriptExtensions[298]={
0x800e,0x8019,8,0x8059,8,2,8,0x8038,8,6,8,0x8019,2,0x22,0x25,0x57,
0xb6,0x80c0,2,0x22,0x8025,2,0x12,2,0x22,0x25,0x57,0xa7,0xb6,0x80c0,2,0x22,
0x54,0x79,0x7b,0xa7,0xb6,0xb7,0x80c2,2,0x8022,2,0x25,0x80c0,2,0x29,2,0x80b6,
@@ -3998,14 +4013,15 @@ static const uint16_t scriptExtensions[282]={
0x80a4,0x10,0x7f,0xf,0x809d,0xf,0x83,0x23,0x8089,0x23,0x87,0x15,0x80bb,0x15,0x8b,0x1c,
0x34,0x8076,0x1c,0x8f,0xc,0x8019,0x2a,0x2b,0x2c,0x802d,0x1b,0x805a,0x800a,4,0xa,0x15,
0x8089,0xa,0x8089,4,0x800a,0xa,0x8097,0xa,0x15,0x1a,0x1f,0x23,0x8024,0xa,0x80bb,4,
-0xa,0x15,0x1f,0x24,0x89,0x9e,0x80bb,0x8004,8,0x8022,0x19,0x801b,0xa,0x19,0x8089,5,
-0x11,0x12,0x14,0x16,0x8029,5,0x11,0x12,0x14,0x8016,0x8011,5,0x8011,0x11,0x14,0x8016,
-0x11,0x8019,0xa,0xf,0x10,0x78,0x91,0x99,0x9d,0x9e,0xa0,0xa3,0x80b2,0xa,0xf,0x10,
-0x15,0x1a,0x78,0x91,0x99,0x9d,0x9e,0xa0,0xa3,0xb2,0x80bb,0xa,0xf,0x10,0x15,0x78,
-0x91,0x99,0x9d,0x9e,0xa0,0xa3,0xb2,0x80bb,0xa,0xa3,0xa,0x8023,0xa,0xfa,0x19,0x1c,
-0x804f,0x37,0x804e,2,0x8057,2,0x8025,2,0x105,0x2f,0x31,0x8053,0x2f,0x31,0x80c1,0x2f,
-0x8031,2,0x8007,0x79,0x80c2,0x79,0x113,0x89,0x87,0x8087};
+0xa,0x15,0x1a,0x1f,0x21,0x24,0x89,0x9e,0x80bb,0x8004,8,0x8022,0x19,0x801b,0xa,0x19,
+0x8089,5,0x11,0x12,0x14,0x16,0x8029,5,0x11,0x12,0x14,0x8016,0x8011,5,0x8011,0x11,
+0x14,0x8016,0x11,0x8019,0xa,0xf,0x10,0x15,0x1a,0x78,0x91,0x97,0x99,0x9d,0x9e,0xa0,
+0xa3,0xb2,0x80bb,0xa,0xf,0x10,0x15,0x78,0x91,0x97,0x99,0x9d,0x9e,0xa0,0xa3,0xb2,
+0x80bb,0xa,0xf,0x10,0x78,0x91,0x99,0x9d,0x9e,0xa0,0xa3,0x80b2,0xa,0xf,0x10,0x78,
+0x91,0x97,0x99,0x9d,0x9e,0xa0,0xa3,0x80b2,0xa,0xa3,0xa,0x8023,0xa,0x10a,0x19,0x1c,
+0x804f,0x37,0x804e,2,0x8057,2,0x8025,2,0x115,0x2f,0x31,0x8053,0x2f,0x31,0x80c1,0x2f,
+0x8031,2,0x8007,0x79,0x80c2,0x79,0x123,0x89,0x87,0x8087};
-static const int32_t indexes[UPROPS_INDEX_COUNT]={0x2d08,0x2d08,0x2d08,0x2d08,0x6ce6,3,0x8924,0x89b1,0x89b1,0x89b1,0xb47c7,0x2a75a31,0,0,0,0};
+static const int32_t indexes[UPROPS_INDEX_COUNT]={0x2d4e,0x2d4e,0x2d4e,0x2d4e,0x6d50,3,0x89ac,0x8a41,0x8a41,0x8a41,0xb48c7,0x2f75a31,0,0,0,0};
#endif // INCLUDED_FROM_UCHAR_C
diff --git a/Build/source/libs/icu/icu-src/source/common/ucharstrie.cpp b/Build/source/libs/icu/icu-src/source/common/ucharstrie.cpp
index 24ab4257779..ba9cea7ba39 100644
--- a/Build/source/libs/icu/icu-src/source/common/ucharstrie.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ucharstrie.cpp
@@ -30,8 +30,8 @@ UCharsTrie::~UCharsTrie() {
UStringTrieResult
UCharsTrie::current() const {
- const UChar *pos=pos_;
- if(pos==NULL) {
+ const char16_t *pos=pos_;
+ if(pos==nullptr) {
return USTRINGTRIE_NO_MATCH;
} else {
int32_t node;
@@ -59,7 +59,7 @@ UCharsTrie::nextForCodePoint(UChar32 cp) {
}
UStringTrieResult
-UCharsTrie::branchNext(const UChar *pos, int32_t length, int32_t uchar) {
+UCharsTrie::branchNext(const char16_t *pos, int32_t length, int32_t uchar) {
// Branch according to the current unit.
if(length==0) {
length=*pos++;
@@ -121,7 +121,7 @@ UCharsTrie::branchNext(const UChar *pos, int32_t length, int32_t uchar) {
}
UStringTrieResult
-UCharsTrie::nextImpl(const UChar *pos, int32_t uchar) {
+UCharsTrie::nextImpl(const char16_t *pos, int32_t uchar) {
int32_t node=*pos++;
for(;;) {
if(node<kMinLinearMatch) {
@@ -153,8 +153,8 @@ UCharsTrie::nextImpl(const UChar *pos, int32_t uchar) {
UStringTrieResult
UCharsTrie::next(int32_t uchar) {
- const UChar *pos=pos_;
- if(pos==NULL) {
+ const char16_t *pos=pos_;
+ if(pos==nullptr) {
return USTRINGTRIE_NO_MATCH;
}
int32_t length=remainingMatchLength_; // Actual remaining match length minus 1.
@@ -176,13 +176,13 @@ UCharsTrie::next(int32_t uchar) {
UStringTrieResult
UCharsTrie::next(ConstChar16Ptr ptr, int32_t sLength) {
- const UChar *s=ptr;
+ const char16_t *s=ptr;
if(sLength<0 ? *s==0 : sLength==0) {
// Empty input.
return current();
}
- const UChar *pos=pos_;
- if(pos==NULL) {
+ const char16_t *pos=pos_;
+ if(pos==nullptr) {
return USTRINGTRIE_NO_MATCH;
}
int32_t length=remainingMatchLength_; // Actual remaining match length minus 1.
@@ -282,13 +282,13 @@ UCharsTrie::next(ConstChar16Ptr ptr, int32_t sLength) {
}
}
-const UChar *
-UCharsTrie::findUniqueValueFromBranch(const UChar *pos, int32_t length,
+const char16_t *
+UCharsTrie::findUniqueValueFromBranch(const char16_t *pos, int32_t length,
UBool haveUniqueValue, int32_t &uniqueValue) {
while(length>kMaxBranchLinearSubNodeLength) {
++pos; // ignore the comparison unit
- if(NULL==findUniqueValueFromBranch(jumpByDelta(pos), length>>1, haveUniqueValue, uniqueValue)) {
- return NULL;
+ if(nullptr==findUniqueValueFromBranch(jumpByDelta(pos), length>>1, haveUniqueValue, uniqueValue)) {
+ return nullptr;
}
length=length-(length>>1);
pos=skipDelta(pos);
@@ -304,7 +304,7 @@ UCharsTrie::findUniqueValueFromBranch(const UChar *pos, int32_t length,
if(isFinal) {
if(haveUniqueValue) {
if(value!=uniqueValue) {
- return NULL;
+ return nullptr;
}
} else {
uniqueValue=value;
@@ -312,7 +312,7 @@ UCharsTrie::findUniqueValueFromBranch(const UChar *pos, int32_t length,
}
} else {
if(!findUniqueValue(pos+value, haveUniqueValue, uniqueValue)) {
- return NULL;
+ return nullptr;
}
haveUniqueValue=true;
}
@@ -321,7 +321,7 @@ UCharsTrie::findUniqueValueFromBranch(const UChar *pos, int32_t length,
}
UBool
-UCharsTrie::findUniqueValue(const UChar *pos, UBool haveUniqueValue, int32_t &uniqueValue) {
+UCharsTrie::findUniqueValue(const char16_t *pos, UBool haveUniqueValue, int32_t &uniqueValue) {
int32_t node=*pos++;
for(;;) {
if(node<kMinLinearMatch) {
@@ -329,7 +329,7 @@ UCharsTrie::findUniqueValue(const UChar *pos, UBool haveUniqueValue, int32_t &un
node=*pos++;
}
pos=findUniqueValueFromBranch(pos, node+1, haveUniqueValue, uniqueValue);
- if(pos==NULL) {
+ if(pos==nullptr) {
return false;
}
haveUniqueValue=true;
@@ -365,8 +365,8 @@ UCharsTrie::findUniqueValue(const UChar *pos, UBool haveUniqueValue, int32_t &un
int32_t
UCharsTrie::getNextUChars(Appendable &out) const {
- const UChar *pos=pos_;
- if(pos==NULL) {
+ const char16_t *pos=pos_;
+ if(pos==nullptr) {
return 0;
}
if(remainingMatchLength_>=0) {
@@ -397,7 +397,7 @@ UCharsTrie::getNextUChars(Appendable &out) const {
}
void
-UCharsTrie::getNextBranchUChars(const UChar *pos, int32_t length, Appendable &out) {
+UCharsTrie::getNextBranchUChars(const char16_t *pos, int32_t length, Appendable &out) {
while(length>kMaxBranchLinearSubNodeLength) {
++pos; // ignore the comparison unit
getNextBranchUChars(jumpByDelta(pos), length>>1, out);
diff --git a/Build/source/libs/icu/icu-src/source/common/ucharstriebuilder.cpp b/Build/source/libs/icu/icu-src/source/common/ucharstriebuilder.cpp
index be3260941ee..95b32711a8e 100644
--- a/Build/source/libs/icu/icu-src/source/common/ucharstriebuilder.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ucharstriebuilder.cpp
@@ -47,7 +47,7 @@ public:
return strings[stringOffset];
}
- UChar charAt(int32_t index, const UnicodeString &strings) const {
+ char16_t charAt(int32_t index, const UnicodeString &strings) const {
return strings[stringOffset+1+index];
}
@@ -75,7 +75,7 @@ UCharsTrieElement::setTo(const UnicodeString &s, int32_t val,
return;
}
stringOffset=strings.length();
- strings.append((UChar)length);
+ strings.append((char16_t)length);
value=val;
strings.append(s);
}
@@ -86,8 +86,8 @@ UCharsTrieElement::compareStringTo(const UCharsTrieElement &other, const Unicode
}
UCharsTrieBuilder::UCharsTrieBuilder(UErrorCode & /*errorCode*/)
- : elements(NULL), elementsCapacity(0), elementsLength(0),
- uchars(NULL), ucharsCapacity(0), ucharsLength(0) {}
+ : elements(nullptr), elementsCapacity(0), elementsLength(0),
+ uchars(nullptr), ucharsCapacity(0), ucharsLength(0) {}
UCharsTrieBuilder::~UCharsTrieBuilder() {
delete[] elements;
@@ -112,7 +112,7 @@ UCharsTrieBuilder::add(const UnicodeString &s, int32_t value, UErrorCode &errorC
newCapacity=4*elementsCapacity;
}
UCharsTrieElement *newElements=new UCharsTrieElement[newCapacity];
- if(newElements==NULL) {
+ if(newElements==nullptr) {
errorCode=U_MEMORY_ALLOCATION_ERROR;
return *this;
}
@@ -145,13 +145,13 @@ U_CDECL_END
UCharsTrie *
UCharsTrieBuilder::build(UStringTrieBuildOption buildOption, UErrorCode &errorCode) {
buildUChars(buildOption, errorCode);
- UCharsTrie *newTrie=NULL;
+ UCharsTrie *newTrie=nullptr;
if(U_SUCCESS(errorCode)) {
newTrie=new UCharsTrie(uchars, uchars+(ucharsCapacity-ucharsLength));
- if(newTrie==NULL) {
+ if(newTrie==nullptr) {
errorCode=U_MEMORY_ALLOCATION_ERROR;
} else {
- uchars=NULL; // The new trie now owns the array.
+ uchars=nullptr; // The new trie now owns the array.
ucharsCapacity=0;
}
}
@@ -173,7 +173,7 @@ UCharsTrieBuilder::buildUChars(UStringTrieBuildOption buildOption, UErrorCode &e
if(U_FAILURE(errorCode)) {
return;
}
- if(uchars!=NULL && ucharsLength>0) {
+ if(uchars!=nullptr && ucharsLength>0) {
// Already built.
return;
}
@@ -204,7 +204,7 @@ UCharsTrieBuilder::buildUChars(UStringTrieBuildOption buildOption, UErrorCode &e
prev.fastCopyFrom(current);
}
}
- // Create and UChar-serialize the trie for the elements.
+ // Create and char16_t-serialize the trie for the elements.
ucharsLength=0;
int32_t capacity=strings.length();
if(capacity<1024) {
@@ -212,8 +212,8 @@ UCharsTrieBuilder::buildUChars(UStringTrieBuildOption buildOption, UErrorCode &e
}
if(ucharsCapacity<capacity) {
uprv_free(uchars);
- uchars=static_cast<UChar *>(uprv_malloc(capacity*2));
- if(uchars==NULL) {
+ uchars=static_cast<char16_t *>(uprv_malloc(capacity*2));
+ if(uchars==nullptr) {
errorCode=U_MEMORY_ALLOCATION_ERROR;
ucharsCapacity=0;
return;
@@ -221,7 +221,7 @@ UCharsTrieBuilder::buildUChars(UStringTrieBuildOption buildOption, UErrorCode &e
ucharsCapacity=capacity;
}
StringTrieBuilder::build(buildOption, elementsLength, errorCode);
- if(uchars==NULL) {
+ if(uchars==nullptr) {
errorCode=U_MEMORY_ALLOCATION_ERROR;
}
}
@@ -231,7 +231,7 @@ UCharsTrieBuilder::getElementStringLength(int32_t i) const {
return elements[i].getStringLength(strings);
}
-UChar
+char16_t
UCharsTrieBuilder::getElementUnit(int32_t i, int32_t unitIndex) const {
return elements[i].charAt(unitIndex, strings);
}
@@ -257,7 +257,7 @@ UCharsTrieBuilder::countElementUnits(int32_t start, int32_t limit, int32_t unitI
int32_t length=0; // Number of different units at unitIndex.
int32_t i=start;
do {
- UChar unit=elements[i++].charAt(unitIndex, strings);
+ char16_t unit=elements[i++].charAt(unitIndex, strings);
while(i<limit && unit==elements[i].charAt(unitIndex, strings)) {
++i;
}
@@ -269,7 +269,7 @@ UCharsTrieBuilder::countElementUnits(int32_t start, int32_t limit, int32_t unitI
int32_t
UCharsTrieBuilder::skipElementsBySomeUnits(int32_t i, int32_t unitIndex, int32_t count) const {
do {
- UChar unit=elements[i++].charAt(unitIndex, strings);
+ char16_t unit=elements[i++].charAt(unitIndex, strings);
while(unit==elements[i].charAt(unitIndex, strings)) {
++i;
}
@@ -278,14 +278,14 @@ UCharsTrieBuilder::skipElementsBySomeUnits(int32_t i, int32_t unitIndex, int32_t
}
int32_t
-UCharsTrieBuilder::indexOfElementWithNextUnit(int32_t i, int32_t unitIndex, UChar unit) const {
+UCharsTrieBuilder::indexOfElementWithNextUnit(int32_t i, int32_t unitIndex, char16_t unit) const {
while(unit==elements[i].charAt(unitIndex, strings)) {
++i;
}
return i;
}
-UCharsTrieBuilder::UCTLinearMatchNode::UCTLinearMatchNode(const UChar *units, int32_t len, Node *nextNode)
+UCharsTrieBuilder::UCTLinearMatchNode::UCTLinearMatchNode(const char16_t *units, int32_t len, Node *nextNode)
: LinearMatchNode(len, nextNode), s(units) {
hash=hash*37u+ustr_hashUCharsN(units, len);
}
@@ -298,7 +298,7 @@ UCharsTrieBuilder::UCTLinearMatchNode::operator==(const Node &other) const {
if(!LinearMatchNode::operator==(other)) {
return false;
}
- const UCTLinearMatchNode &o=(const UCTLinearMatchNode &)other;
+ const UCTLinearMatchNode &o=static_cast<const UCTLinearMatchNode &>(other);
return 0==u_memcmp(s, o.s, length);
}
@@ -321,7 +321,7 @@ UCharsTrieBuilder::createLinearMatchNode(int32_t i, int32_t unitIndex, int32_t l
UBool
UCharsTrieBuilder::ensureCapacity(int32_t length) {
- if(uchars==NULL) {
+ if(uchars==nullptr) {
return false; // previous memory allocation had failed
}
if(length>ucharsCapacity) {
@@ -329,11 +329,11 @@ UCharsTrieBuilder::ensureCapacity(int32_t length) {
do {
newCapacity*=2;
} while(newCapacity<=length);
- UChar *newUChars=static_cast<UChar *>(uprv_malloc(newCapacity*2));
- if(newUChars==NULL) {
+ char16_t *newUChars=static_cast<char16_t *>(uprv_malloc(newCapacity*2));
+ if(newUChars==nullptr) {
// unable to allocate memory
uprv_free(uchars);
- uchars=NULL;
+ uchars=nullptr;
ucharsCapacity=0;
return false;
}
@@ -351,13 +351,13 @@ UCharsTrieBuilder::write(int32_t unit) {
int32_t newLength=ucharsLength+1;
if(ensureCapacity(newLength)) {
ucharsLength=newLength;
- uchars[ucharsCapacity-ucharsLength]=(UChar)unit;
+ uchars[ucharsCapacity-ucharsLength]=(char16_t)unit;
}
return ucharsLength;
}
int32_t
-UCharsTrieBuilder::write(const UChar *s, int32_t length) {
+UCharsTrieBuilder::write(const char16_t *s, int32_t length) {
int32_t newLength=ucharsLength+length;
if(ensureCapacity(newLength)) {
ucharsLength=newLength;
@@ -376,22 +376,22 @@ UCharsTrieBuilder::writeValueAndFinal(int32_t i, UBool isFinal) {
if(0<=i && i<=UCharsTrie::kMaxOneUnitValue) {
return write(i|(isFinal<<15));
}
- UChar intUnits[3];
+ char16_t intUnits[3];
int32_t length;
if(i<0 || i>UCharsTrie::kMaxTwoUnitValue) {
- intUnits[0]=(UChar)(UCharsTrie::kThreeUnitValueLead);
- intUnits[1]=(UChar)((uint32_t)i>>16);
- intUnits[2]=(UChar)i;
+ intUnits[0]=(char16_t)(UCharsTrie::kThreeUnitValueLead);
+ intUnits[1]=(char16_t)((uint32_t)i>>16);
+ intUnits[2]=(char16_t)i;
length=3;
// } else if(i<=UCharsTrie::kMaxOneUnitValue) {
- // intUnits[0]=(UChar)(i);
+ // intUnits[0]=(char16_t)(i);
// length=1;
} else {
- intUnits[0]=(UChar)(UCharsTrie::kMinTwoUnitValueLead+(i>>16));
- intUnits[1]=(UChar)i;
+ intUnits[0]=(char16_t)(UCharsTrie::kMinTwoUnitValueLead+(i>>16));
+ intUnits[1]=(char16_t)i;
length=2;
}
- intUnits[0]=(UChar)(intUnits[0]|(isFinal<<15));
+ intUnits[0]=(char16_t)(intUnits[0]|(isFinal<<15));
return write(intUnits, length);
}
@@ -400,22 +400,22 @@ UCharsTrieBuilder::writeValueAndType(UBool hasValue, int32_t value, int32_t node
if(!hasValue) {
return write(node);
}
- UChar intUnits[3];
+ char16_t intUnits[3];
int32_t length;
if(value<0 || value>UCharsTrie::kMaxTwoUnitNodeValue) {
- intUnits[0]=(UChar)(UCharsTrie::kThreeUnitNodeValueLead);
- intUnits[1]=(UChar)((uint32_t)value>>16);
- intUnits[2]=(UChar)value;
+ intUnits[0]=(char16_t)(UCharsTrie::kThreeUnitNodeValueLead);
+ intUnits[1]=(char16_t)((uint32_t)value>>16);
+ intUnits[2]=(char16_t)value;
length=3;
} else if(value<=UCharsTrie::kMaxOneUnitNodeValue) {
- intUnits[0]=(UChar)((value+1)<<6);
+ intUnits[0]=(char16_t)((value+1)<<6);
length=1;
} else {
- intUnits[0]=(UChar)(UCharsTrie::kMinTwoUnitNodeValueLead+((value>>10)&0x7fc0));
- intUnits[1]=(UChar)value;
+ intUnits[0]=(char16_t)(UCharsTrie::kMinTwoUnitNodeValueLead+((value>>10)&0x7fc0));
+ intUnits[1]=(char16_t)value;
length=2;
}
- intUnits[0]|=(UChar)node;
+ intUnits[0]|=(char16_t)node;
return write(intUnits, length);
}
@@ -426,17 +426,17 @@ UCharsTrieBuilder::writeDeltaTo(int32_t jumpTarget) {
if(i<=UCharsTrie::kMaxOneUnitDelta) {
return write(i);
}
- UChar intUnits[3];
+ char16_t intUnits[3];
int32_t length;
if(i<=UCharsTrie::kMaxTwoUnitDelta) {
- intUnits[0]=(UChar)(UCharsTrie::kMinTwoUnitDeltaLead+(i>>16));
+ intUnits[0]=(char16_t)(UCharsTrie::kMinTwoUnitDeltaLead+(i>>16));
length=1;
} else {
- intUnits[0]=(UChar)(UCharsTrie::kThreeUnitDeltaLead);
- intUnits[1]=(UChar)(i>>16);
+ intUnits[0]=(char16_t)(UCharsTrie::kThreeUnitDeltaLead);
+ intUnits[1]=(char16_t)(i>>16);
length=2;
}
- intUnits[length++]=(UChar)i;
+ intUnits[length++]=(char16_t)i;
return write(intUnits, length);
}
diff --git a/Build/source/libs/icu/icu-src/source/common/ucharstrieiterator.cpp b/Build/source/libs/icu/icu-src/source/common/ucharstrieiterator.cpp
index 2ba43692ddd..176aed68259 100644
--- a/Build/source/libs/icu/icu-src/source/common/ucharstrieiterator.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ucharstrieiterator.cpp
@@ -27,7 +27,7 @@ UCharsTrie::Iterator::Iterator(ConstChar16Ptr trieUChars, int32_t maxStringLengt
pos_(uchars_), initialPos_(uchars_),
remainingMatchLength_(-1), initialRemainingMatchLength_(-1),
skipValue_(false),
- maxLength_(maxStringLength), value_(0), stack_(NULL) {
+ maxLength_(maxStringLength), value_(0), stack_(nullptr) {
if(U_FAILURE(errorCode)) {
return;
}
@@ -38,7 +38,7 @@ UCharsTrie::Iterator::Iterator(ConstChar16Ptr trieUChars, int32_t maxStringLengt
// via the UnicodeString and UVector32 implementations, so this additional
// cost is minimal.
stack_=new UVector32(errorCode);
- if(stack_==NULL) {
+ if(stack_==nullptr) {
errorCode=U_MEMORY_ALLOCATION_ERROR;
}
}
@@ -49,7 +49,7 @@ UCharsTrie::Iterator::Iterator(const UCharsTrie &trie, int32_t maxStringLength,
remainingMatchLength_(trie.remainingMatchLength_),
initialRemainingMatchLength_(trie.remainingMatchLength_),
skipValue_(false),
- maxLength_(maxStringLength), value_(0), stack_(NULL) {
+ maxLength_(maxStringLength), value_(0), stack_(nullptr) {
if(U_FAILURE(errorCode)) {
return;
}
@@ -57,7 +57,7 @@ UCharsTrie::Iterator::Iterator(const UCharsTrie &trie, int32_t maxStringLength,
if(U_FAILURE(errorCode)) {
return;
}
- if(stack_==NULL) {
+ if(stack_==nullptr) {
errorCode=U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -95,15 +95,15 @@ UCharsTrie::Iterator::reset() {
}
UBool
-UCharsTrie::Iterator::hasNext() const { return pos_!=NULL || !stack_->isEmpty(); }
+UCharsTrie::Iterator::hasNext() const { return pos_!=nullptr || !stack_->isEmpty(); }
UBool
UCharsTrie::Iterator::next(UErrorCode &errorCode) {
if(U_FAILURE(errorCode)) {
return false;
}
- const UChar *pos=pos_;
- if(pos==NULL) {
+ const char16_t *pos=pos_;
+ if(pos==nullptr) {
if(stack_->isEmpty()) {
return false;
}
@@ -117,7 +117,7 @@ UCharsTrie::Iterator::next(UErrorCode &errorCode) {
length=(int32_t)((uint32_t)length>>16);
if(length>1) {
pos=branchNext(pos, length, errorCode);
- if(pos==NULL) {
+ if(pos==nullptr) {
return true; // Reached a final value.
}
} else {
@@ -145,7 +145,7 @@ UCharsTrie::Iterator::next(UErrorCode &errorCode) {
value_=readNodeValue(pos, node);
}
if(isFinal || (maxLength_>0 && str_.length()==maxLength_)) {
- pos_=NULL;
+ pos_=nullptr;
} else {
// We cannot skip the value right here because it shares its
// lead unit with a match node which we have to evaluate
@@ -165,7 +165,7 @@ UCharsTrie::Iterator::next(UErrorCode &errorCode) {
node=*pos++;
}
pos=branchNext(pos, node+1, errorCode);
- if(pos==NULL) {
+ if(pos==nullptr) {
return true; // Reached a final value.
}
} else {
@@ -182,8 +182,8 @@ UCharsTrie::Iterator::next(UErrorCode &errorCode) {
}
// Branch node, needs to take the first outbound edge and push state for the rest.
-const UChar *
-UCharsTrie::Iterator::branchNext(const UChar *pos, int32_t length, UErrorCode &errorCode) {
+const char16_t *
+UCharsTrie::Iterator::branchNext(const char16_t *pos, int32_t length, UErrorCode &errorCode) {
while(length>kMaxBranchLinearSubNodeLength) {
++pos; // ignore the comparison unit
// Push state for the greater-or-equal edge.
@@ -195,7 +195,7 @@ UCharsTrie::Iterator::branchNext(const UChar *pos, int32_t length, UErrorCode &e
}
// List of key-value pairs where values are either final values or jump deltas.
// Read the first (key, value) pair.
- UChar trieUnit=*pos++;
+ char16_t trieUnit=*pos++;
int32_t node=*pos++;
UBool isFinal=(UBool)(node>>15);
int32_t value=readValue(pos, node&=0x7fff);
@@ -204,9 +204,9 @@ UCharsTrie::Iterator::branchNext(const UChar *pos, int32_t length, UErrorCode &e
stack_->addElement(((length-1)<<16)|str_.length(), errorCode);
str_.append(trieUnit);
if(isFinal) {
- pos_=NULL;
+ pos_=nullptr;
value_=value;
- return NULL;
+ return nullptr;
} else {
return pos+value;
}
diff --git a/Build/source/libs/icu/icu-src/source/common/uchriter.cpp b/Build/source/libs/icu/icu-src/source/common/uchriter.cpp
index f2a99538413..a7d30977e09 100644
--- a/Build/source/libs/icu/icu-src/source/common/uchriter.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/uchriter.cpp
@@ -75,7 +75,7 @@ UCharCharacterIterator::operator==(const ForwardCharacterIterator& that) const {
return false;
}
- UCharCharacterIterator& realThat = (UCharCharacterIterator&)that;
+ const UCharCharacterIterator& realThat = static_cast<const UCharCharacterIterator&>(that);
return text == realThat.text
&& textLength == realThat.textLength
@@ -94,7 +94,7 @@ UCharCharacterIterator::clone() const {
return new UCharCharacterIterator(*this);
}
-UChar
+char16_t
UCharCharacterIterator::first() {
pos = begin;
if(pos < end) {
@@ -104,7 +104,7 @@ UCharCharacterIterator::first() {
}
}
-UChar
+char16_t
UCharCharacterIterator::firstPostInc() {
pos = begin;
if(pos < end) {
@@ -114,7 +114,7 @@ UCharCharacterIterator::firstPostInc() {
}
}
-UChar
+char16_t
UCharCharacterIterator::last() {
pos = end;
if(pos > begin) {
@@ -124,7 +124,7 @@ UCharCharacterIterator::last() {
}
}
-UChar
+char16_t
UCharCharacterIterator::setIndex(int32_t position) {
if(position < begin) {
pos = begin;
@@ -140,7 +140,7 @@ UCharCharacterIterator::setIndex(int32_t position) {
}
}
-UChar
+char16_t
UCharCharacterIterator::current() const {
if (pos >= begin && pos < end) {
return text[pos];
@@ -149,7 +149,7 @@ UCharCharacterIterator::current() const {
}
}
-UChar
+char16_t
UCharCharacterIterator::next() {
if (pos + 1 < end) {
return text[++pos];
@@ -160,7 +160,7 @@ UCharCharacterIterator::next() {
}
}
-UChar
+char16_t
UCharCharacterIterator::nextPostInc() {
if (pos < end) {
return text[pos++];
@@ -174,7 +174,7 @@ UCharCharacterIterator::hasNext() {
return (UBool)(pos < end ? true : false);
}
-UChar
+char16_t
UCharCharacterIterator::previous() {
if (pos > begin) {
return text[--pos];
diff --git a/Build/source/libs/icu/icu-src/source/common/ucln_cmn.cpp b/Build/source/libs/icu/icu-src/source/common/ucln_cmn.cpp
index ea797d13449..c63bd221929 100644
--- a/Build/source/libs/icu/icu-src/source/common/ucln_cmn.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ucln_cmn.cpp
@@ -37,11 +37,11 @@ static cleanupFunc *gLibCleanupFunctions[UCLN_COMMON];
Please be sure that you have read ucln.h
************************************************/
U_CAPI void U_EXPORT2
-u_cleanup(void)
+u_cleanup()
{
UTRACE_ENTRY_OC(UTRACE_U_CLEANUP);
- icu::umtx_lock(NULL); /* Force a memory barrier, so that we are sure to see */
- icu::umtx_unlock(NULL); /* all state left around by any other threads. */
+ icu::umtx_lock(nullptr); /* Force a memory barrier, so that we are sure to see */
+ icu::umtx_unlock(nullptr); /* all state left around by any other threads. */
ucln_lib_cleanup();
@@ -57,7 +57,7 @@ U_CAPI void U_EXPORT2 ucln_cleanupOne(ECleanupLibraryType libType)
if (gLibCleanupFunctions[libType])
{
gLibCleanupFunctions[libType]();
- gLibCleanupFunctions[libType] = NULL;
+ gLibCleanupFunctions[libType] = nullptr;
}
}
@@ -102,7 +102,7 @@ ucln_registerCleanup(ECleanupLibraryType type,
}
}
-U_CFUNC UBool ucln_lib_cleanup(void) {
+U_CFUNC UBool ucln_lib_cleanup() {
int32_t libType = UCLN_START;
int32_t commonFunc = UCLN_COMMON_START;
@@ -114,7 +114,7 @@ U_CFUNC UBool ucln_lib_cleanup(void) {
if (gCommonCleanupFunctions[commonFunc])
{
gCommonCleanupFunctions[commonFunc]();
- gCommonCleanupFunctions[commonFunc] = NULL;
+ gCommonCleanupFunctions[commonFunc] = nullptr;
}
}
#if !UCLN_NO_AUTO_CLEANUP && (defined(UCLN_AUTO_ATEXIT) || defined(UCLN_AUTO_LOCAL))
diff --git a/Build/source/libs/icu/icu-src/source/common/ucmndata.cpp b/Build/source/libs/icu/icu-src/source/common/ucmndata.cpp
index 4215d66257d..69575d4e830 100644
--- a/Build/source/libs/icu/icu-src/source/common/ucmndata.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ucmndata.cpp
@@ -34,7 +34,7 @@
U_CFUNC uint16_t
udata_getHeaderSize(const DataHeader *udh) {
- if(udh==NULL) {
+ if(udh==nullptr) {
return 0;
} else if(udh->info.isBigEndian==U_IS_BIG_ENDIAN) {
/* same endianness */
@@ -48,7 +48,7 @@ udata_getHeaderSize(const DataHeader *udh) {
U_CFUNC uint16_t
udata_getInfoSize(const UDataInfo *info) {
- if(info==NULL) {
+ if(info==nullptr) {
return 0;
} else if(info->isBigEndian==U_IS_BIG_ENDIAN) {
/* same endianness */
@@ -216,7 +216,7 @@ static uint32_t U_CALLCONV
offsetTOCEntryCount(const UDataMemory *pData) {
int32_t retVal=0;
const UDataOffsetTOC *toc = (UDataOffsetTOC *)pData->toc;
- if (toc != NULL) {
+ if (toc != nullptr) {
retVal = toc->count;
}
return retVal;
@@ -229,7 +229,7 @@ offsetTOCLookupFn(const UDataMemory *pData,
UErrorCode *pErrorCode) {
(void)pErrorCode;
const UDataOffsetTOC *toc = (UDataOffsetTOC *)pData->toc;
- if(toc!=NULL) {
+ if(toc!=nullptr) {
const char *base=(const char *)toc;
int32_t number, count=(int32_t)toc->count;
@@ -257,7 +257,7 @@ offsetTOCLookupFn(const UDataMemory *pData,
#ifdef UDATA_DEBUG
fprintf(stderr, "%s: Not found.\n", tocEntryName);
#endif
- return NULL;
+ return nullptr;
}
} else {
#ifdef UDATA_DEBUG
@@ -271,7 +271,7 @@ offsetTOCLookupFn(const UDataMemory *pData,
static uint32_t U_CALLCONV pointerTOCEntryCount(const UDataMemory *pData) {
const PointerTOC *toc = (PointerTOC *)pData->toc;
- return (uint32_t)((toc != NULL) ? (toc->count) : 0);
+ return (uint32_t)((toc != nullptr) ? (toc->count) : 0);
}
static const DataHeader * U_CALLCONV pointerTOCLookupFn(const UDataMemory *pData,
@@ -279,7 +279,7 @@ static const DataHeader * U_CALLCONV pointerTOCLookupFn(const UDataMemory *pData
int32_t *pLength,
UErrorCode *pErrorCode) {
(void)pErrorCode;
- if(pData->toc!=NULL) {
+ if(pData->toc!=nullptr) {
const PointerTOC *toc = (PointerTOC *)pData->toc;
int32_t number, count=(int32_t)toc->count;
@@ -301,7 +301,7 @@ static const DataHeader * U_CALLCONV pointerTOCLookupFn(const UDataMemory *pData
#ifdef UDATA_DEBUG
fprintf(stderr, "%s: Not found.\n", name);
#endif
- return NULL;
+ return nullptr;
}
} else {
return pData->pHeader;
@@ -328,7 +328,7 @@ U_CFUNC void udata_checkCommonData(UDataMemory *udm, UErrorCode *err) {
return;
}
- if(udm==NULL || udm->pHeader==NULL) {
+ if(udm==nullptr || udm->pHeader==nullptr) {
*err=U_INVALID_FORMAT_ERROR;
} else if(!(udm->pHeader->dataHeader.magic1==0xda &&
udm->pHeader->dataHeader.magic2==0x27 &&
diff --git a/Build/source/libs/icu/icu-src/source/common/ucnv.cpp b/Build/source/libs/icu/icu-src/source/common/ucnv.cpp
index 26baa550c35..a7a07d65d61 100644
--- a/Build/source/libs/icu/icu-src/source/common/ucnv.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ucnv.cpp
@@ -48,7 +48,7 @@
typedef struct UAmbiguousConverter {
const char *name;
- const UChar variant5c;
+ const char16_t variant5c;
} UAmbiguousConverter;
static const UAmbiguousConverter ambiguousConverters[]={
@@ -75,11 +75,11 @@ ucnv_open (const char *name,
{
UConverter *r;
- if (err == NULL || U_FAILURE (*err)) {
- return NULL;
+ if (err == nullptr || U_FAILURE (*err)) {
+ return nullptr;
}
- r = ucnv_createConverter(NULL, name, err);
+ r = ucnv_createConverter(nullptr, name, err);
return r;
}
@@ -89,21 +89,21 @@ ucnv_openPackage (const char *packageName, const char *converterName, UErrorCo
return ucnv_createConverterFromPackage(packageName, converterName, err);
}
-/*Extracts the UChar* to a char* and calls through createConverter */
+/*Extracts the char16_t* to a char* and calls through createConverter */
U_CAPI UConverter* U_EXPORT2
-ucnv_openU (const UChar * name,
+ucnv_openU (const char16_t * name,
UErrorCode * err)
{
char asciiName[UCNV_MAX_CONVERTER_NAME_LENGTH];
- if (err == NULL || U_FAILURE(*err))
- return NULL;
- if (name == NULL)
- return ucnv_open (NULL, err);
+ if (err == nullptr || U_FAILURE(*err))
+ return nullptr;
+ if (name == nullptr)
+ return ucnv_open (nullptr, err);
if (u_strlen(name) >= UCNV_MAX_CONVERTER_NAME_LENGTH)
{
*err = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
return ucnv_open(u_austrcpy(asciiName, name), err);
}
@@ -140,14 +140,14 @@ ucnv_openCCSID (int32_t codepage,
char myName[UCNV_MAX_CONVERTER_NAME_LENGTH];
int32_t myNameLen;
- if (err == NULL || U_FAILURE (*err))
- return NULL;
+ if (err == nullptr || U_FAILURE (*err))
+ return nullptr;
/* ucnv_copyPlatformString could return "ibm-" or "cp" */
myNameLen = ucnv_copyPlatformString(myName, platform);
T_CString_integerToString(myName + myNameLen, codepage, 10);
- return ucnv_createConverter(NULL, myName, err);
+ return ucnv_createConverter(nullptr, myName, err);
}
/* Creating a temporary stack-based object that can be used in one thread,
@@ -164,47 +164,47 @@ ucnv_safeClone(const UConverter* cnv, void *stackBuffer, int32_t *pBufferSize, U
UConverterToUnicodeArgs toUArgs = {
sizeof(UConverterToUnicodeArgs),
true,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr
};
UConverterFromUnicodeArgs fromUArgs = {
sizeof(UConverterFromUnicodeArgs),
true,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr
};
UTRACE_ENTRY_OC(UTRACE_UCNV_CLONE);
- if (status == NULL || U_FAILURE(*status)){
+ if (status == nullptr || U_FAILURE(*status)){
UTRACE_EXIT_STATUS(status? *status: U_ILLEGAL_ARGUMENT_ERROR);
- return NULL;
+ return nullptr;
}
- if (cnv == NULL) {
+ if (cnv == nullptr) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
UTRACE_EXIT_STATUS(*status);
- return NULL;
+ return nullptr;
}
UTRACE_DATA3(UTRACE_OPEN_CLOSE, "clone converter %s at %p into stackBuffer %p",
ucnv_getName(cnv, status), cnv, stackBuffer);
- if (cnv->sharedData->impl->safeClone != NULL) {
+ if (cnv->sharedData->impl->safeClone != nullptr) {
/* call the custom safeClone function for sizing */
bufferSizeNeeded = 0;
- cnv->sharedData->impl->safeClone(cnv, NULL, &bufferSizeNeeded, status);
+ cnv->sharedData->impl->safeClone(cnv, nullptr, &bufferSizeNeeded, status);
if (U_FAILURE(*status)) {
UTRACE_EXIT_STATUS(*status);
- return NULL;
+ return nullptr;
}
}
else
@@ -213,7 +213,7 @@ ucnv_safeClone(const UConverter* cnv, void *stackBuffer, int32_t *pBufferSize, U
bufferSizeNeeded = sizeof(UConverter);
}
- if (pBufferSize == NULL) {
+ if (pBufferSize == nullptr) {
stackBufferSize = 1;
pBufferSize = &stackBufferSize;
} else {
@@ -221,7 +221,7 @@ ucnv_safeClone(const UConverter* cnv, void *stackBuffer, int32_t *pBufferSize, U
if (stackBufferSize <= 0){ /* 'preflighting' request - set needed size into *pBufferSize */
*pBufferSize = bufferSizeNeeded;
UTRACE_EXIT_VALUE(bufferSizeNeeded);
- return NULL;
+ return nullptr;
}
}
@@ -242,17 +242,17 @@ ucnv_safeClone(const UConverter* cnv, void *stackBuffer, int32_t *pBufferSize, U
}
/* Now, see if we must allocate any memory */
- if (stackBufferSize < bufferSizeNeeded || stackBuffer == NULL)
+ if (stackBufferSize < bufferSizeNeeded || stackBuffer == nullptr)
{
/* allocate one here...*/
localConverter = allocatedConverter = (UConverter *) uprv_malloc (bufferSizeNeeded);
- if(localConverter == NULL) {
+ if(localConverter == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
UTRACE_EXIT_STATUS(*status);
- return NULL;
+ return nullptr;
}
- // If pBufferSize was NULL as the input, pBufferSize is set to &stackBufferSize in this function.
+ // If pBufferSize was nullptr as the input, pBufferSize is set to &stackBufferSize in this function.
if (pBufferSize != &stackBufferSize) {
*status = U_SAFECLONE_ALLOCATED_WARNING;
}
@@ -262,7 +262,7 @@ ucnv_safeClone(const UConverter* cnv, void *stackBuffer, int32_t *pBufferSize, U
} else {
/* just use the stack buffer */
localConverter = (UConverter*) stackBuffer;
- allocatedConverter = NULL;
+ allocatedConverter = nullptr;
}
uprv_memset(localConverter, 0, bufferSizeNeeded);
@@ -276,27 +276,27 @@ ucnv_safeClone(const UConverter* cnv, void *stackBuffer, int32_t *pBufferSize, U
localConverter->subChars = (uint8_t *)localConverter->subUChars;
} else {
localConverter->subChars = (uint8_t *)uprv_malloc(UCNV_ERROR_BUFFER_LENGTH * U_SIZEOF_UCHAR);
- if (localConverter->subChars == NULL) {
+ if (localConverter->subChars == nullptr) {
uprv_free(allocatedConverter);
UTRACE_EXIT_STATUS(*status);
- return NULL;
+ return nullptr;
}
uprv_memcpy(localConverter->subChars, cnv->subChars, UCNV_ERROR_BUFFER_LENGTH * U_SIZEOF_UCHAR);
}
/* now either call the safeclone fcn or not */
- if (cnv->sharedData->impl->safeClone != NULL) {
+ if (cnv->sharedData->impl->safeClone != nullptr) {
/* call the custom safeClone function */
localConverter = cnv->sharedData->impl->safeClone(cnv, localConverter, pBufferSize, status);
}
- if(localConverter==NULL || U_FAILURE(*status)) {
- if (allocatedConverter != NULL && allocatedConverter->subChars != (uint8_t *)allocatedConverter->subUChars) {
+ if(localConverter==nullptr || U_FAILURE(*status)) {
+ if (allocatedConverter != nullptr && allocatedConverter->subChars != (uint8_t *)allocatedConverter->subUChars) {
uprv_free(allocatedConverter->subChars);
}
uprv_free(allocatedConverter);
UTRACE_EXIT_STATUS(*status);
- return NULL;
+ return nullptr;
}
/* increment refcount of shared data if needed */
@@ -312,9 +312,9 @@ ucnv_safeClone(const UConverter* cnv, void *stackBuffer, int32_t *pBufferSize, U
/* allow callback functions to handle any memory allocation */
toUArgs.converter = fromUArgs.converter = localConverter;
cbErr = U_ZERO_ERROR;
- cnv->fromCharErrorBehaviour(cnv->toUContext, &toUArgs, NULL, 0, UCNV_CLONE, &cbErr);
+ cnv->fromCharErrorBehaviour(cnv->toUContext, &toUArgs, nullptr, 0, UCNV_CLONE, &cbErr);
cbErr = U_ZERO_ERROR;
- cnv->fromUCharErrorBehaviour(cnv->fromUContext, &fromUArgs, NULL, 0, 0, UCNV_CLONE, &cbErr);
+ cnv->fromUCharErrorBehaviour(cnv->fromUContext, &fromUArgs, nullptr, 0, 0, UCNV_CLONE, &cbErr);
UTRACE_EXIT_PTR_STATUS(localConverter, *status);
return localConverter;
@@ -336,7 +336,7 @@ ucnv_close (UConverter * converter)
UTRACE_ENTRY_OC(UTRACE_UCNV_CLOSE);
- if (converter == NULL)
+ if (converter == nullptr)
{
UTRACE_EXIT();
return;
@@ -353,35 +353,35 @@ ucnv_close (UConverter * converter)
UConverterToUnicodeArgs toUArgs = {
sizeof(UConverterToUnicodeArgs),
true,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr
};
toUArgs.converter = converter;
errorCode = U_ZERO_ERROR;
- converter->fromCharErrorBehaviour(converter->toUContext, &toUArgs, NULL, 0, UCNV_CLOSE, &errorCode);
+ converter->fromCharErrorBehaviour(converter->toUContext, &toUArgs, nullptr, 0, UCNV_CLOSE, &errorCode);
}
if (converter->fromUCharErrorBehaviour != UCNV_FROM_U_DEFAULT_CALLBACK) {
UConverterFromUnicodeArgs fromUArgs = {
sizeof(UConverterFromUnicodeArgs),
true,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr
};
fromUArgs.converter = converter;
errorCode = U_ZERO_ERROR;
- converter->fromUCharErrorBehaviour(converter->fromUContext, &fromUArgs, NULL, 0, 0, UCNV_CLOSE, &errorCode);
+ converter->fromUCharErrorBehaviour(converter->fromUContext, &fromUArgs, nullptr, 0, 0, UCNV_CLOSE, &errorCode);
}
- if (converter->sharedData->impl->close != NULL) {
+ if (converter->sharedData->impl->close != nullptr) {
converter->sharedData->impl->close(converter);
}
@@ -400,7 +400,7 @@ ucnv_close (UConverter * converter)
UTRACE_EXIT();
}
-/*returns a single Name from the list, will return NULL if out of bounds
+/*returns a single Name from the list, will return nullptr if out of bounds
*/
U_CAPI const char* U_EXPORT2
ucnv_getAvailableName (int32_t n)
@@ -412,7 +412,7 @@ ucnv_getAvailableName (int32_t n)
return name;
}
}
- return NULL;
+ return nullptr;
}
U_CAPI int32_t U_EXPORT2
@@ -479,7 +479,7 @@ ucnv_setSubstChars (UConverter * converter,
U_CAPI void U_EXPORT2
ucnv_setSubstString(UConverter *cnv,
- const UChar *s,
+ const char16_t *s,
int32_t length,
UErrorCode *err) {
alignas(UConverter) char cloneBuffer[U_CNV_SAFECLONE_BUFFERSIZE];
@@ -492,14 +492,14 @@ ucnv_setSubstString(UConverter *cnv,
/* Let the following functions check all arguments. */
cloneSize = sizeof(cloneBuffer);
clone = ucnv_safeClone(cnv, cloneBuffer, &cloneSize, err);
- ucnv_setFromUCallBack(clone, UCNV_FROM_U_CALLBACK_STOP, NULL, NULL, NULL, err);
+ ucnv_setFromUCallBack(clone, UCNV_FROM_U_CALLBACK_STOP, nullptr, nullptr, nullptr, err);
length8 = ucnv_fromUChars(clone, chars, (int32_t)sizeof(chars), s, length, err);
ucnv_close(clone);
if (U_FAILURE(*err)) {
return;
}
- if (cnv->sharedData->impl->writeSub == NULL
+ if (cnv->sharedData->impl->writeSub == nullptr
#if !UCONFIG_NO_LEGACY_CONVERSION
|| (cnv->sharedData->staticData->conversionType == UCNV_MBCS &&
ucnv_MBCSGetType(cnv) != UCNV_EBCDIC_STATEFUL)
@@ -517,7 +517,7 @@ ucnv_setSubstString(UConverter *cnv,
if (length > UCNV_ERROR_BUFFER_LENGTH) {
/*
* Should not occur. The converter should output at least one byte
- * per UChar, which means that ucnv_fromUChars() should catch all
+ * per char16_t, which means that ucnv_fromUChars() should catch all
* overflows.
*/
*err = U_BUFFER_OVERFLOW_ERROR;
@@ -539,7 +539,7 @@ ucnv_setSubstString(UConverter *cnv,
if (cnv->subChars == (uint8_t *)cnv->subUChars) {
/* Allocate a new buffer for the string. */
cnv->subChars = (uint8_t *)uprv_malloc(UCNV_ERROR_BUFFER_LENGTH * U_SIZEOF_UCHAR);
- if (cnv->subChars == NULL) {
+ if (cnv->subChars == nullptr) {
cnv->subChars = (uint8_t *)cnv->subUChars;
*err = U_MEMORY_ALLOCATION_ERROR;
return;
@@ -569,7 +569,7 @@ ucnv_setSubstString(UConverter *cnv,
*/
static void _reset(UConverter *converter, UConverterResetChoice choice,
UBool callCallback) {
- if(converter == NULL) {
+ if(converter == nullptr) {
return;
}
@@ -581,31 +581,31 @@ static void _reset(UConverter *converter, UConverterResetChoice choice,
UConverterToUnicodeArgs toUArgs = {
sizeof(UConverterToUnicodeArgs),
true,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr
};
toUArgs.converter = converter;
errorCode = U_ZERO_ERROR;
- converter->fromCharErrorBehaviour(converter->toUContext, &toUArgs, NULL, 0, UCNV_RESET, &errorCode);
+ converter->fromCharErrorBehaviour(converter->toUContext, &toUArgs, nullptr, 0, UCNV_RESET, &errorCode);
}
if(choice!=UCNV_RESET_TO_UNICODE && converter->fromUCharErrorBehaviour != UCNV_FROM_U_DEFAULT_CALLBACK) {
UConverterFromUnicodeArgs fromUArgs = {
sizeof(UConverterFromUnicodeArgs),
true,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr
};
fromUArgs.converter = converter;
errorCode = U_ZERO_ERROR;
- converter->fromUCharErrorBehaviour(converter->fromUContext, &fromUArgs, NULL, 0, 0, UCNV_RESET, &errorCode);
+ converter->fromUCharErrorBehaviour(converter->fromUContext, &fromUArgs, nullptr, 0, 0, UCNV_RESET, &errorCode);
}
}
@@ -625,7 +625,7 @@ static void _reset(UConverter *converter, UConverterResetChoice choice,
converter->preFromULength = 0;
}
- if (converter->sharedData->impl->reset != NULL) {
+ if (converter->sharedData->impl->reset != nullptr) {
/* call the custom reset function */
converter->sharedData->impl->reset(converter, choice);
}
@@ -667,7 +667,7 @@ ucnv_getName (const UConverter * converter, UErrorCode * err)
{
if (U_FAILURE (*err))
- return NULL;
+ return nullptr;
if(converter->sharedData->impl->getName){
const char* temp= converter->sharedData->impl->getName(converter);
if(temp)
@@ -833,7 +833,7 @@ static void
_fromUnicodeWithCallback(UConverterFromUnicodeArgs *pArgs, UErrorCode *err) {
UConverterFromUnicode fromUnicode;
UConverter *cnv;
- const UChar *s;
+ const char16_t *s;
char *t;
int32_t *offsets;
int32_t sourceIndex;
@@ -841,8 +841,8 @@ _fromUnicodeWithCallback(UConverterFromUnicodeArgs *pArgs, UErrorCode *err) {
UBool converterSawEndOfInput, calledCallback;
/* variables for m:n conversion */
- UChar replay[UCNV_EXT_MAX_UCHARS];
- const UChar *realSource, *realSourceLimit;
+ char16_t replay[UCNV_EXT_MAX_UCHARS];
+ const char16_t *realSource, *realSourceLimit;
int32_t realSourceIndex;
UBool realFlush;
@@ -853,11 +853,11 @@ _fromUnicodeWithCallback(UConverterFromUnicodeArgs *pArgs, UErrorCode *err) {
/* get the converter implementation function */
sourceIndex=0;
- if(offsets==NULL) {
+ if(offsets==nullptr) {
fromUnicode=cnv->sharedData->impl->fromUnicode;
} else {
fromUnicode=cnv->sharedData->impl->fromUnicodeWithOffsets;
- if(fromUnicode==NULL) {
+ if(fromUnicode==nullptr) {
/* there is no WithOffsets implementation */
fromUnicode=cnv->sharedData->impl->fromUnicode;
/* we will write -1 for each offset */
@@ -867,10 +867,10 @@ _fromUnicodeWithCallback(UConverterFromUnicodeArgs *pArgs, UErrorCode *err) {
if(cnv->preFromULength>=0) {
/* normal mode */
- realSource=NULL;
+ realSource=nullptr;
/* avoid compiler warnings - not otherwise necessary, and the values do not matter */
- realSourceLimit=NULL;
+ realSourceLimit=nullptr;
realFlush=false;
realSourceIndex=0;
} else {
@@ -942,7 +942,7 @@ _fromUnicodeWithCallback(UConverterFromUnicodeArgs *pArgs, UErrorCode *err) {
*/
for(;;) {
/* update offsets if we write any */
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
int32_t length=(int32_t)(pArgs->target-t);
if(length>0) {
_updateOffsets(offsets, length, sourceIndex, errorInputLength);
@@ -967,7 +967,7 @@ _fromUnicodeWithCallback(UConverterFromUnicodeArgs *pArgs, UErrorCode *err) {
* 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) {
+ if(realSource==nullptr) {
realSource=pArgs->source;
realSourceLimit=pArgs->sourceLimit;
realFlush=pArgs->flush;
@@ -984,7 +984,7 @@ _fromUnicodeWithCallback(UConverterFromUnicodeArgs *pArgs, UErrorCode *err) {
cnv->preFromULength=0;
} else {
/* see implementation note before _fromUnicodeWithCallback() */
- U_ASSERT(realSource==NULL);
+ U_ASSERT(realSource==nullptr);
*err=U_INTERNAL_PROGRAM_ERROR;
}
}
@@ -1000,14 +1000,14 @@ _fromUnicodeWithCallback(UConverterFromUnicodeArgs *pArgs, UErrorCode *err) {
* (continue converting by breaking out of only the inner loop)
*/
break;
- } else if(realSource!=NULL) {
+ } else if(realSource!=nullptr) {
/* switch back from replaying to the real source and continue */
pArgs->source=realSource;
pArgs->sourceLimit=realSourceLimit;
pArgs->flush=realFlush;
sourceIndex=realSourceIndex;
- realSource=NULL;
+ realSource=nullptr;
break;
} else if(pArgs->flush && cnv->fromUChar32!=0) {
/*
@@ -1063,7 +1063,7 @@ _fromUnicodeWithCallback(UConverterFromUnicodeArgs *pArgs, UErrorCode *err) {
* copied back into the UConverter
* and the real arguments must be restored
*/
- if(realSource!=NULL) {
+ if(realSource!=nullptr) {
int32_t length;
U_ASSERT(cnv->preFromULength==0);
@@ -1130,10 +1130,10 @@ ucnv_outputOverflowFromUnicode(UConverter *cnv,
int32_t i, length;
t=*target;
- if(pOffsets!=NULL) {
+ if(pOffsets!=nullptr) {
offsets=*pOffsets;
} else {
- offsets=NULL;
+ offsets=nullptr;
}
overflow=(char *)cnv->charErrorBuffer;
@@ -1150,7 +1150,7 @@ ucnv_outputOverflowFromUnicode(UConverter *cnv,
cnv->charErrorBufferLength=(int8_t)j;
*target=t;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*pOffsets=offsets;
}
*err=U_BUFFER_OVERFLOW_ERROR;
@@ -1159,7 +1159,7 @@ ucnv_outputOverflowFromUnicode(UConverter *cnv,
/* copy the overflow contents to the target */
*t++=overflow[i++];
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=-1; /* no source index available for old output */
}
}
@@ -1167,7 +1167,7 @@ ucnv_outputOverflowFromUnicode(UConverter *cnv,
/* the overflow buffer is completely copied to the target */
cnv->charErrorBufferLength=0;
*target=t;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*pOffsets=offsets;
}
return false;
@@ -1176,20 +1176,20 @@ ucnv_outputOverflowFromUnicode(UConverter *cnv,
U_CAPI void U_EXPORT2
ucnv_fromUnicode(UConverter *cnv,
char **target, const char *targetLimit,
- const UChar **source, const UChar *sourceLimit,
+ const char16_t **source, const char16_t *sourceLimit,
int32_t *offsets,
UBool flush,
UErrorCode *err) {
UConverterFromUnicodeArgs args;
- const UChar *s;
+ const char16_t *s;
char *t;
/* check parameters */
- if(err==NULL || U_FAILURE(*err)) {
+ if(err==nullptr || U_FAILURE(*err)) {
return;
}
- if(cnv==NULL || target==NULL || source==NULL) {
+ if(cnv==nullptr || target==nullptr || source==nullptr) {
*err=U_ILLEGAL_ARGUMENT_ERROR;
return;
}
@@ -1200,10 +1200,10 @@ ucnv_fromUnicode(UConverter *cnv,
if ((const void *)U_MAX_PTR(sourceLimit) == (const void *)sourceLimit) {
/*
Prevent code from going into an infinite loop in case we do hit this
- limit. The limit pointer is expected to be on a UChar * boundary.
+ limit. The limit pointer is expected to be on a char16_t * boundary.
This also prevents the next argument check from failing.
*/
- sourceLimit = (const UChar *)(((const char *)sourceLimit) - 1);
+ sourceLimit = (const char16_t *)(((const char *)sourceLimit) - 1);
}
/*
@@ -1222,8 +1222,8 @@ ucnv_fromUnicode(UConverter *cnv,
* consumed or the target filled (unless an error occurs).
* An adjustment would be targetLimit=t+0x7fffffff; for example.
*
- * 3) Make sure that the user didn't incorrectly cast a UChar * pointer
- * to a char * pointer and provide an incomplete UChar code unit.
+ * 3) Make sure that the user didn't incorrectly cast a char16_t * pointer
+ * to a char * pointer and provide an incomplete char16_t code unit.
*/
if (sourceLimit<s || targetLimit<t ||
((size_t)(sourceLimit-s)>(size_t)0x3fffffff && sourceLimit>s) ||
@@ -1279,7 +1279,7 @@ _toUnicodeWithCallback(UConverterToUnicodeArgs *pArgs, UErrorCode *err) {
UConverterToUnicode toUnicode;
UConverter *cnv;
const char *s;
- UChar *t;
+ char16_t *t;
int32_t *offsets;
int32_t sourceIndex;
int32_t errorInputLength;
@@ -1298,11 +1298,11 @@ _toUnicodeWithCallback(UConverterToUnicodeArgs *pArgs, UErrorCode *err) {
/* get the converter implementation function */
sourceIndex=0;
- if(offsets==NULL) {
+ if(offsets==nullptr) {
toUnicode=cnv->sharedData->impl->toUnicode;
} else {
toUnicode=cnv->sharedData->impl->toUnicodeWithOffsets;
- if(toUnicode==NULL) {
+ if(toUnicode==nullptr) {
/* there is no WithOffsets implementation */
toUnicode=cnv->sharedData->impl->toUnicode;
/* we will write -1 for each offset */
@@ -1312,10 +1312,10 @@ _toUnicodeWithCallback(UConverterToUnicodeArgs *pArgs, UErrorCode *err) {
if(cnv->preToULength>=0) {
/* normal mode */
- realSource=NULL;
+ realSource=nullptr;
/* avoid compiler warnings - not otherwise necessary, and the values do not matter */
- realSourceLimit=NULL;
+ realSourceLimit=nullptr;
realFlush=false;
realSourceIndex=0;
} else {
@@ -1387,7 +1387,7 @@ _toUnicodeWithCallback(UConverterToUnicodeArgs *pArgs, UErrorCode *err) {
*/
for(;;) {
/* update offsets if we write any */
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
int32_t length=(int32_t)(pArgs->target-t);
if(length>0) {
_updateOffsets(offsets, length, sourceIndex, errorInputLength);
@@ -1412,7 +1412,7 @@ _toUnicodeWithCallback(UConverterToUnicodeArgs *pArgs, UErrorCode *err) {
* 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) {
+ if(realSource==nullptr) {
realSource=pArgs->source;
realSourceLimit=pArgs->sourceLimit;
realFlush=pArgs->flush;
@@ -1429,7 +1429,7 @@ _toUnicodeWithCallback(UConverterToUnicodeArgs *pArgs, UErrorCode *err) {
cnv->preToULength=0;
} else {
/* see implementation note before _fromUnicodeWithCallback() */
- U_ASSERT(realSource==NULL);
+ U_ASSERT(realSource==nullptr);
*err=U_INTERNAL_PROGRAM_ERROR;
}
}
@@ -1445,14 +1445,14 @@ _toUnicodeWithCallback(UConverterToUnicodeArgs *pArgs, UErrorCode *err) {
* (continue converting by breaking out of only the inner loop)
*/
break;
- } else if(realSource!=NULL) {
+ } else if(realSource!=nullptr) {
/* switch back from replaying to the real source and continue */
pArgs->source=realSource;
pArgs->sourceLimit=realSourceLimit;
pArgs->flush=realFlush;
sourceIndex=realSourceIndex;
- realSource=NULL;
+ realSource=nullptr;
break;
} else if(pArgs->flush && cnv->toULength>0) {
/*
@@ -1510,7 +1510,7 @@ _toUnicodeWithCallback(UConverterToUnicodeArgs *pArgs, UErrorCode *err) {
* copied back into the UConverter
* and the real arguments must be restored
*/
- if(realSource!=NULL) {
+ if(realSource!=nullptr) {
int32_t length;
U_ASSERT(cnv->preToULength==0);
@@ -1568,18 +1568,18 @@ _toUnicodeWithCallback(UConverterToUnicodeArgs *pArgs, UErrorCode *err) {
*/
static UBool
ucnv_outputOverflowToUnicode(UConverter *cnv,
- UChar **target, const UChar *targetLimit,
+ char16_t **target, const char16_t *targetLimit,
int32_t **pOffsets,
UErrorCode *err) {
int32_t *offsets;
- UChar *overflow, *t;
+ char16_t *overflow, *t;
int32_t i, length;
t=*target;
- if(pOffsets!=NULL) {
+ if(pOffsets!=nullptr) {
offsets=*pOffsets;
} else {
- offsets=NULL;
+ offsets=nullptr;
}
overflow=cnv->UCharErrorBuffer;
@@ -1596,7 +1596,7 @@ ucnv_outputOverflowToUnicode(UConverter *cnv,
cnv->UCharErrorBufferLength=(int8_t)j;
*target=t;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*pOffsets=offsets;
}
*err=U_BUFFER_OVERFLOW_ERROR;
@@ -1605,7 +1605,7 @@ ucnv_outputOverflowToUnicode(UConverter *cnv,
/* copy the overflow contents to the target */
*t++=overflow[i++];
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=-1; /* no source index available for old output */
}
}
@@ -1613,7 +1613,7 @@ ucnv_outputOverflowToUnicode(UConverter *cnv,
/* the overflow buffer is completely copied to the target */
cnv->UCharErrorBufferLength=0;
*target=t;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*pOffsets=offsets;
}
return false;
@@ -1621,21 +1621,21 @@ ucnv_outputOverflowToUnicode(UConverter *cnv,
U_CAPI void U_EXPORT2
ucnv_toUnicode(UConverter *cnv,
- UChar **target, const UChar *targetLimit,
+ char16_t **target, const char16_t *targetLimit,
const char **source, const char *sourceLimit,
int32_t *offsets,
UBool flush,
UErrorCode *err) {
UConverterToUnicodeArgs args;
const char *s;
- UChar *t;
+ char16_t *t;
/* check parameters */
- if(err==NULL || U_FAILURE(*err)) {
+ if(err==nullptr || U_FAILURE(*err)) {
return;
}
- if(cnv==NULL || target==NULL || source==NULL) {
+ if(cnv==nullptr || target==nullptr || source==nullptr) {
*err=U_ILLEGAL_ARGUMENT_ERROR;
return;
}
@@ -1646,10 +1646,10 @@ ucnv_toUnicode(UConverter *cnv,
if ((const void *)U_MAX_PTR(targetLimit) == (const void *)targetLimit) {
/*
Prevent code from going into an infinite loop in case we do hit this
- limit. The limit pointer is expected to be on a UChar * boundary.
+ limit. The limit pointer is expected to be on a char16_t * boundary.
This also prevents the next argument check from failing.
*/
- targetLimit = (const UChar *)(((const char *)targetLimit) - 1);
+ targetLimit = (const char16_t *)(((const char *)targetLimit) - 1);
}
/*
@@ -1668,8 +1668,8 @@ ucnv_toUnicode(UConverter *cnv,
* consumed or the target filled (unless an error occurs).
* An adjustment would be sourceLimit=t+0x7fffffff; for example.
*
- * 3) Make sure that the user didn't incorrectly cast a UChar * pointer
- * to a char * pointer and provide an incomplete UChar code unit.
+ * 3) Make sure that the user didn't incorrectly cast a char16_t * pointer
+ * to a char * pointer and provide an incomplete char16_t code unit.
*/
if (sourceLimit<s || targetLimit<t ||
((size_t)(sourceLimit-s)>(size_t)0x7fffffff && sourceLimit>s) ||
@@ -1723,20 +1723,20 @@ ucnv_toUnicode(UConverter *cnv,
U_CAPI int32_t U_EXPORT2
ucnv_fromUChars(UConverter *cnv,
char *dest, int32_t destCapacity,
- const UChar *src, int32_t srcLength,
+ const char16_t *src, int32_t srcLength,
UErrorCode *pErrorCode) {
- const UChar *srcLimit;
+ const char16_t *srcLimit;
char *originalDest, *destLimit;
int32_t destLength;
/* check arguments */
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return 0;
}
- if( cnv==NULL ||
- destCapacity<0 || (destCapacity>0 && dest==NULL) ||
- srcLength<-1 || (srcLength!=0 && src==NULL)
+ if( cnv==nullptr ||
+ destCapacity<0 || (destCapacity>0 && dest==nullptr) ||
+ srcLength<-1 || (srcLength!=0 && src==nullptr)
) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
@@ -1778,21 +1778,21 @@ ucnv_fromUChars(UConverter *cnv,
U_CAPI int32_t U_EXPORT2
ucnv_toUChars(UConverter *cnv,
- UChar *dest, int32_t destCapacity,
+ char16_t *dest, int32_t destCapacity,
const char *src, int32_t srcLength,
UErrorCode *pErrorCode) {
const char *srcLimit;
- UChar *originalDest, *destLimit;
+ char16_t *originalDest, *destLimit;
int32_t destLength;
/* check arguments */
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return 0;
}
- if( cnv==NULL ||
- destCapacity<0 || (destCapacity>0 && dest==NULL) ||
- srcLength<-1 || (srcLength!=0 && src==NULL))
+ if( cnv==nullptr ||
+ destCapacity<0 || (destCapacity>0 && dest==nullptr) ||
+ srcLength<-1 || (srcLength!=0 && src==nullptr))
{
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
@@ -1816,7 +1816,7 @@ ucnv_toUChars(UConverter *cnv,
/* if an overflow occurs, then get the preflighting length */
if(*pErrorCode==U_BUFFER_OVERFLOW_ERROR)
{
- UChar buffer[1024];
+ char16_t buffer[1024];
destLimit=buffer+UPRV_LENGTHOF(buffer);
do {
@@ -1841,17 +1841,17 @@ ucnv_getNextUChar(UConverter *cnv,
const char **source, const char *sourceLimit,
UErrorCode *err) {
UConverterToUnicodeArgs args;
- UChar buffer[U16_MAX_LENGTH];
+ char16_t buffer[U16_MAX_LENGTH];
const char *s;
UChar32 c;
int32_t i, length;
/* check parameters */
- if(err==NULL || U_FAILURE(*err)) {
+ if(err==nullptr || U_FAILURE(*err)) {
return 0xffff;
}
- if(cnv==NULL || source==NULL) {
+ if(cnv==nullptr || source==nullptr) {
*err=U_ILLEGAL_ARGUMENT_ERROR;
return 0xffff;
}
@@ -1883,7 +1883,7 @@ ucnv_getNextUChar(UConverter *cnv,
/* flush the target overflow buffer */
if(cnv->UCharErrorBufferLength>0) {
- UChar *overflow;
+ char16_t *overflow;
overflow=cnv->UCharErrorBuffer;
i=0;
@@ -1916,7 +1916,7 @@ ucnv_getNextUChar(UConverter *cnv,
/* prepare the converter arguments */
args.converter=cnv;
args.flush=true;
- args.offsets=NULL;
+ args.offsets=nullptr;
args.source=s;
args.sourceLimit=sourceLimit;
args.target=buffer;
@@ -1932,7 +1932,7 @@ ucnv_getNextUChar(UConverter *cnv,
* U_TRUNCATED_CHAR_FOUND for truncated input,
* in addition to setting toULength/toUBytes[]
*/
- if(cnv->toULength==0 && cnv->sharedData->impl->getNextUChar!=NULL) {
+ if(cnv->toULength==0 && cnv->sharedData->impl->getNextUChar!=nullptr) {
c=cnv->sharedData->impl->getNextUChar(&args, err);
*source=s=args.source;
if(*err==U_INDEX_OUTOFBOUNDS_ERROR) {
@@ -1949,7 +1949,7 @@ ucnv_getNextUChar(UConverter *cnv,
}
}
- /* convert to one UChar in buffer[0], or handle getNextUChar() errors */
+ /* convert to one char16_t in buffer[0], or handle getNextUChar() errors */
_toUnicodeWithCallback(&args, err);
if(*err==U_BUFFER_OVERFLOW_ERROR) {
@@ -1960,7 +1960,7 @@ ucnv_getNextUChar(UConverter *cnv,
length=(int32_t)(args.target-buffer);
} else {
/* write the lead surrogate from the overflow buffer */
- buffer[0]=(UChar)c;
+ buffer[0]=(char16_t)c;
args.target=buffer+1;
i=0;
length=1;
@@ -1982,7 +1982,7 @@ ucnv_getNextUChar(UConverter *cnv,
/* consume c=buffer[0], done */
} else {
/* got a lead surrogate, see if a trail surrogate follows */
- UChar c2;
+ char16_t c2;
if(cnv->UCharErrorBufferLength>0) {
/* got overflow output from the conversion */
@@ -2045,13 +2045,13 @@ U_CAPI void U_EXPORT2
ucnv_convertEx(UConverter *targetCnv, UConverter *sourceCnv,
char **target, const char *targetLimit,
const char **source, const char *sourceLimit,
- UChar *pivotStart, UChar **pivotSource,
- UChar **pivotTarget, const UChar *pivotLimit,
+ char16_t *pivotStart, char16_t **pivotSource,
+ char16_t **pivotTarget, const char16_t *pivotLimit,
UBool reset, UBool flush,
UErrorCode *pErrorCode) {
- UChar pivotBuffer[CHUNK_SIZE];
- const UChar *myPivotSource;
- UChar *myPivotTarget;
+ char16_t pivotBuffer[CHUNK_SIZE];
+ const char16_t *myPivotSource;
+ char16_t *myPivotTarget;
const char *s;
char *t;
@@ -2060,13 +2060,13 @@ ucnv_convertEx(UConverter *targetCnv, UConverter *sourceCnv,
UConverterConvert convert;
/* error checking */
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return;
}
- if( targetCnv==NULL || sourceCnv==NULL ||
- source==NULL || *source==NULL ||
- target==NULL || *target==NULL || targetLimit==NULL
+ if( targetCnv==nullptr || sourceCnv==nullptr ||
+ source==nullptr || *source==nullptr ||
+ target==nullptr || *target==nullptr || targetLimit==nullptr
) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return;
@@ -2074,7 +2074,7 @@ ucnv_convertEx(UConverter *targetCnv, UConverter *sourceCnv,
s=*source;
t=*target;
- if((sourceLimit!=NULL && sourceLimit<s) || targetLimit<t) {
+ if((sourceLimit!=nullptr && sourceLimit<s) || targetLimit<t) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return;
}
@@ -2084,14 +2084,14 @@ ucnv_convertEx(UConverter *targetCnv, UConverter *sourceCnv,
* int32_t. See ucnv_toUnicode() for a more detailed comment.
*/
if(
- (sourceLimit!=NULL && ((size_t)(sourceLimit-s)>(size_t)0x7fffffff && sourceLimit>s)) ||
+ (sourceLimit!=nullptr && ((size_t)(sourceLimit-s)>(size_t)0x7fffffff && sourceLimit>s)) ||
((size_t)(targetLimit-t)>(size_t)0x7fffffff && targetLimit>t)
) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return;
}
- if(pivotStart==NULL) {
+ if(pivotStart==nullptr) {
if(!flush) {
/* streaming conversion requires an explicit pivot buffer */
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
@@ -2100,19 +2100,19 @@ ucnv_convertEx(UConverter *targetCnv, UConverter *sourceCnv,
/* use the stack pivot buffer */
myPivotSource=myPivotTarget=pivotStart=pivotBuffer;
- pivotSource=(UChar **)&myPivotSource;
+ pivotSource=(char16_t **)&myPivotSource;
pivotTarget=&myPivotTarget;
pivotLimit=pivotBuffer+CHUNK_SIZE;
} else if( pivotStart>=pivotLimit ||
- pivotSource==NULL || *pivotSource==NULL ||
- pivotTarget==NULL || *pivotTarget==NULL ||
- pivotLimit==NULL
+ pivotSource==nullptr || *pivotSource==nullptr ||
+ pivotTarget==nullptr || *pivotTarget==nullptr ||
+ pivotLimit==nullptr
) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return;
}
- if(sourceLimit==NULL) {
+ if(sourceLimit==nullptr) {
/* get limit of single-byte-NUL-terminated source string */
sourceLimit=uprv_strchr(*source, 0);
}
@@ -2123,7 +2123,7 @@ ucnv_convertEx(UConverter *targetCnv, UConverter *sourceCnv,
*pivotSource=*pivotTarget=pivotStart;
} else if(targetCnv->charErrorBufferLength>0) {
/* output the targetCnv overflow buffer */
- if(ucnv_outputOverflowFromUnicode(targetCnv, target, targetLimit, NULL, pErrorCode)) {
+ if(ucnv_outputOverflowFromUnicode(targetCnv, target, targetLimit, nullptr, pErrorCode)) {
/* U_BUFFER_OVERFLOW_ERROR */
return;
}
@@ -2140,15 +2140,15 @@ ucnv_convertEx(UConverter *targetCnv, UConverter *sourceCnv,
/* Is direct-UTF-8 conversion available? */
if( sourceCnv->sharedData->staticData->conversionType==UCNV_UTF8 &&
- targetCnv->sharedData->impl->fromUTF8!=NULL
+ targetCnv->sharedData->impl->fromUTF8!=nullptr
) {
convert=targetCnv->sharedData->impl->fromUTF8;
} else if( targetCnv->sharedData->staticData->conversionType==UCNV_UTF8 &&
- sourceCnv->sharedData->impl->toUTF8!=NULL
+ sourceCnv->sharedData->impl->toUTF8!=nullptr
) {
convert=sourceCnv->sharedData->impl->toUTF8;
} else {
- convert=NULL;
+ convert=nullptr;
}
/*
@@ -2170,21 +2170,21 @@ ucnv_convertEx(UConverter *targetCnv, UConverter *sourceCnv,
* conversion, with function call overhead outweighing the benefits
* of direct conversion.
*/
- if(convert!=NULL && (pivotLimit-pivotStart)>32) {
+ if(convert!=nullptr && (pivotLimit-pivotStart)>32) {
pivotLimit=pivotStart+32;
}
/* prepare the converter arguments */
fromUArgs.converter=targetCnv;
fromUArgs.flush=false;
- fromUArgs.offsets=NULL;
+ fromUArgs.offsets=nullptr;
fromUArgs.target=*target;
fromUArgs.targetLimit=targetLimit;
fromUArgs.size=sizeof(fromUArgs);
toUArgs.converter=sourceCnv;
toUArgs.flush=flush;
- toUArgs.offsets=NULL;
+ toUArgs.offsets=nullptr;
toUArgs.source=s;
toUArgs.sourceLimit=sourceLimit;
toUArgs.targetLimit=pivotLimit;
@@ -2197,7 +2197,7 @@ ucnv_convertEx(UConverter *targetCnv, UConverter *sourceCnv,
*
* Otherwise stop using s and t from here on.
*/
- s=t=NULL;
+ s=t=nullptr;
/*
* conversion loop
@@ -2229,7 +2229,7 @@ ucnv_convertEx(UConverter *targetCnv, UConverter *sourceCnv,
_fromUnicodeWithCallback(&fromUArgs, pErrorCode);
if(U_FAILURE(*pErrorCode)) {
/* target overflow, or conversion error */
- *pivotSource=(UChar *)fromUArgs.source;
+ *pivotSource=(char16_t *)fromUArgs.source;
break;
}
@@ -2250,7 +2250,7 @@ ucnv_convertEx(UConverter *targetCnv, UConverter *sourceCnv,
*/
/* output the sourceCnv overflow buffer */
if(sourceCnv->UCharErrorBufferLength>0) {
- if(ucnv_outputOverflowToUnicode(sourceCnv, pivotTarget, pivotLimit, NULL, pErrorCode)) {
+ if(ucnv_outputOverflowToUnicode(sourceCnv, pivotTarget, pivotLimit, nullptr, pErrorCode)) {
/* U_BUFFER_OVERFLOW_ERROR */
*pErrorCode=U_ZERO_ERROR;
}
@@ -2277,7 +2277,7 @@ ucnv_convertEx(UConverter *targetCnv, UConverter *sourceCnv,
* but not if continuing a partial match
* or flushing the toUnicode replay buffer
*/
- if(convert!=NULL && targetCnv->preFromUFirstCP<0 && sourceCnv->preToULength==0) {
+ if(convert!=nullptr && targetCnv->preFromUFirstCP<0 && sourceCnv->preToULength==0) {
if(*pErrorCode==U_USING_DEFAULT_WARNING) {
/* remove a warning that may be set by this function */
*pErrorCode=U_ZERO_ERROR;
@@ -2405,8 +2405,8 @@ ucnv_internalConvert(UConverter *outConverter, UConverter *inConverter,
char *target, int32_t targetCapacity,
const char *source, int32_t sourceLength,
UErrorCode *pErrorCode) {
- UChar pivotBuffer[CHUNK_SIZE];
- UChar *pivot, *pivot2;
+ char16_t pivotBuffer[CHUNK_SIZE];
+ char16_t *pivot, *pivot2;
char *myTarget;
const char *sourceLimit;
@@ -2482,12 +2482,12 @@ ucnv_convert(const char *toConverterName, const char *fromConverterName,
UConverter *inConverter, *outConverter;
int32_t targetLength;
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return 0;
}
- if( source==NULL || sourceLength<-1 ||
- targetCapacity<0 || (targetCapacity>0 && target==NULL)
+ if( source==nullptr || sourceLength<-1 ||
+ targetCapacity<0 || (targetCapacity>0 && target==nullptr)
) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
@@ -2533,12 +2533,12 @@ ucnv_convertAlgorithmic(UBool convertToAlgorithmic,
UConverter *algoConverter, *to, *from;
int32_t targetLength;
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return 0;
}
- if( cnv==NULL || source==NULL || sourceLength<-1 ||
- targetCapacity<0 || (targetCapacity>0 && target==NULL)
+ if( cnv==nullptr || source==nullptr || sourceLength<-1 ||
+ targetCapacity<0 || (targetCapacity>0 && target==nullptr)
) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
@@ -2596,7 +2596,12 @@ ucnv_fromAlgorithmic(UConverter *cnv,
UConverterType algorithmicType,
char *target, int32_t targetCapacity,
const char *source, int32_t sourceLength,
- UErrorCode *pErrorCode) {
+ UErrorCode *pErrorCode) UPRV_NO_SANITIZE_UNDEFINED {
+
+ if(algorithmicType<0 || UCNV_NUMBER_OF_SUPPORTED_CONVERTER_TYPES<=algorithmicType) {
+ *pErrorCode = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
return ucnv_convertAlgorithmic(false, algorithmicType, cnv,
target, targetCapacity,
source, sourceLength,
@@ -2620,11 +2625,11 @@ ucnv_getStarters(const UConverter* converter,
UBool starters[256],
UErrorCode* err)
{
- if (err == NULL || U_FAILURE(*err)) {
+ if (err == nullptr || U_FAILURE(*err)) {
return;
}
- if(converter->sharedData->impl->getStarters != NULL) {
+ if(converter->sharedData->impl->getStarters != nullptr) {
converter->sharedData->impl->getStarters(converter, starters, err);
} else {
*err = U_ILLEGAL_ARGUMENT_ERROR;
@@ -2637,14 +2642,14 @@ static const UAmbiguousConverter *ucnv_getAmbiguous(const UConverter *cnv)
const char *name;
int32_t i;
- if(cnv==NULL) {
- return NULL;
+ if(cnv==nullptr) {
+ return nullptr;
}
errorCode=U_ZERO_ERROR;
name=ucnv_getName(cnv, &errorCode);
if(U_FAILURE(errorCode)) {
- return NULL;
+ return nullptr;
}
for(i=0; i<UPRV_LENGTHOF(ambiguousConverters); ++i)
@@ -2655,18 +2660,18 @@ static const UAmbiguousConverter *ucnv_getAmbiguous(const UConverter *cnv)
}
}
- return NULL;
+ return nullptr;
}
U_CAPI void U_EXPORT2
ucnv_fixFileSeparator(const UConverter *cnv,
- UChar* source,
+ char16_t* source,
int32_t sourceLength) {
const UAmbiguousConverter *a;
int32_t i;
- UChar variant5c;
+ char16_t variant5c;
- if(cnv==NULL || source==NULL || sourceLength<=0 || (a=ucnv_getAmbiguous(cnv))==NULL)
+ if(cnv==nullptr || source==nullptr || sourceLength<=0 || (a=ucnv_getAmbiguous(cnv))==nullptr)
{
return;
}
@@ -2681,7 +2686,7 @@ ucnv_fixFileSeparator(const UConverter *cnv,
U_CAPI UBool U_EXPORT2
ucnv_isAmbiguous(const UConverter *cnv) {
- return (UBool)(ucnv_getAmbiguous(cnv)!=NULL);
+ return (UBool)(ucnv_getAmbiguous(cnv)!=nullptr);
}
U_CAPI void U_EXPORT2
@@ -2702,11 +2707,11 @@ ucnv_getInvalidChars (const UConverter * converter,
int8_t * len,
UErrorCode * err)
{
- if (err == NULL || U_FAILURE(*err))
+ if (err == nullptr || U_FAILURE(*err))
{
return;
}
- if (len == NULL || errBytes == NULL || converter == NULL)
+ if (len == nullptr || errBytes == nullptr || converter == nullptr)
{
*err = U_ILLEGAL_ARGUMENT_ERROR;
return;
@@ -2724,15 +2729,15 @@ ucnv_getInvalidChars (const UConverter * converter,
U_CAPI void U_EXPORT2
ucnv_getInvalidUChars (const UConverter * converter,
- UChar *errChars,
+ char16_t *errChars,
int8_t * len,
UErrorCode * err)
{
- if (err == NULL || U_FAILURE(*err))
+ if (err == nullptr || U_FAILURE(*err))
{
return;
}
- if (len == NULL || errChars == NULL || converter == NULL)
+ if (len == nullptr || errChars == nullptr || converter == nullptr)
{
*err = U_ILLEGAL_ARGUMENT_ERROR;
return;
@@ -2763,16 +2768,16 @@ ucnv_detectUnicodeSignature( const char* source,
char start[SIG_MAX_LEN]={ '\xa5', '\xa5', '\xa5', '\xa5', '\xa5' };
int i = 0;
- if((pErrorCode==NULL) || U_FAILURE(*pErrorCode)){
- return NULL;
+ if((pErrorCode==nullptr) || U_FAILURE(*pErrorCode)){
+ return nullptr;
}
- if(source == NULL || sourceLength < -1){
+ if(source == nullptr || sourceLength < -1){
*pErrorCode = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
- if(signatureLength == NULL) {
+ if(signatureLength == nullptr) {
signatureLength = &dummy;
}
@@ -2836,16 +2841,16 @@ ucnv_detectUnicodeSignature( const char* source,
/* no known Unicode signature byte sequence recognized */
*signatureLength=0;
- return NULL;
+ return nullptr;
}
U_CAPI int32_t U_EXPORT2
ucnv_fromUCountPending(const UConverter* cnv, UErrorCode* status)
{
- if(status == NULL || U_FAILURE(*status)){
+ if(status == nullptr || U_FAILURE(*status)){
return -1;
}
- if(cnv == NULL){
+ if(cnv == nullptr){
*status = U_ILLEGAL_ARGUMENT_ERROR;
return -1;
}
@@ -2864,10 +2869,10 @@ ucnv_fromUCountPending(const UConverter* cnv, UErrorCode* status)
U_CAPI int32_t U_EXPORT2
ucnv_toUCountPending(const UConverter* cnv, UErrorCode* status){
- if(status == NULL || U_FAILURE(*status)){
+ if(status == nullptr || U_FAILURE(*status)){
return -1;
}
- if(cnv == NULL){
+ if(cnv == nullptr){
*status = U_ILLEGAL_ARGUMENT_ERROR;
return -1;
}
@@ -2888,7 +2893,7 @@ ucnv_isFixedWidth(UConverter *cnv, UErrorCode *status){
return false;
}
- if (cnv == NULL) {
+ if (cnv == nullptr) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return false;
}
diff --git a/Build/source/libs/icu/icu-src/source/common/ucnv2022.cpp b/Build/source/libs/icu/icu-src/source/common/ucnv2022.cpp
index ec096780e97..5989c1b405a 100644
--- a/Build/source/libs/icu/icu-src/source/common/ucnv2022.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ucnv2022.cpp
@@ -348,13 +348,13 @@ static const int32_t escSeqStateTable_Key_2022[MAX_STATES_2022] = {
static const char* const escSeqStateTable_Result_2022[MAX_STATES_2022] = {
/* 0 1 2 3 4 5 6 7 8 9 */
- NULL ,NULL ,NULL ,NULL ,NULL ,NULL ,NULL ,NULL ,"latin1" ,"latin1"
+ nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,"latin1" ,"latin1"
,"latin1" ,"ibm-865" ,"ibm-865" ,"ibm-865" ,"ibm-865" ,"ibm-865" ,"ibm-865" ,"JISX0201" ,"JISX0201" ,"latin1"
- ,"latin1" ,NULL ,"JISX-208" ,"ibm-5478" ,"JISX-208" ,NULL ,NULL ,NULL ,NULL ,"UTF8"
- ,"ISO-8859-1" ,"ISO-8859-7" ,"JIS-X-208" ,NULL ,"ibm-955" ,"ibm-367" ,"ibm-952" ,"ibm-949" ,"JISX-212" ,"ibm-1383"
+ ,"latin1" ,nullptr ,"JISX-208" ,"ibm-5478" ,"JISX-208" ,nullptr ,nullptr ,nullptr ,nullptr ,"UTF8"
+ ,"ISO-8859-1" ,"ISO-8859-7" ,"JIS-X-208" ,nullptr ,"ibm-955" ,"ibm-367" ,"ibm-952" ,"ibm-949" ,"JISX-212" ,"ibm-1383"
,"ibm-952" ,"ibm-964" ,"ibm-964" ,"ibm-964" ,"ibm-964" ,"ibm-964" ,"ibm-964" ,"ibm-5478" ,"ibm-949" ,"ISO-IR-165"
,"CNS-11643-1992,1" ,"CNS-11643-1992,2" ,"CNS-11643-1992,3" ,"CNS-11643-1992,4" ,"CNS-11643-1992,5" ,"CNS-11643-1992,6" ,"CNS-11643-1992,7" ,"UTF16_PlatformEndian" ,"UTF16_PlatformEndian" ,"UTF16_PlatformEndian"
- ,"UTF16_PlatformEndian" ,"UTF16_PlatformEndian" ,"UTF16_PlatformEndian" ,NULL ,"latin1" ,"ibm-912" ,"ibm-913" ,"ibm-914" ,"ibm-813" ,"ibm-1089"
+ ,"UTF16_PlatformEndian" ,"UTF16_PlatformEndian" ,"UTF16_PlatformEndian" ,nullptr ,"latin1" ,"ibm-912" ,"ibm-913" ,"ibm-914" ,"ibm-813" ,"ibm-1089"
,"ibm-920" ,"ibm-915" ,"ibm-915" ,"latin1"
};
@@ -481,7 +481,7 @@ _ISO2022Open(UConverter *cnv, UConverterLoadArgs *pArgs, UErrorCode *errorCode){
char myLocale[7]={' ',' ',' ',' ',' ',' ', '\0'};
cnv->extraInfo = uprv_malloc (sizeof (UConverterDataISO2022));
- if(cnv->extraInfo != NULL) {
+ if(cnv->extraInfo != nullptr) {
UConverterNamePieces stackPieces;
UConverterLoadArgs stackArgs=UCNV_LOAD_ARGS_INITIALIZER;
UConverterDataISO2022 *myConverterData=(UConverterDataISO2022 *) cnv->extraInfo;
@@ -557,7 +557,7 @@ _ISO2022Open(UConverter *cnv, UConverterLoadArgs *pArgs, UErrorCode *errorCode){
if(pArgs->onlyTestIsLoadable) {
ucnv_canCreateConverter(cnvName, errorCode); /* errorCode carries result */
uprv_free(cnv->extraInfo);
- cnv->extraInfo=NULL;
+ cnv->extraInfo=nullptr;
return;
} else {
myConverterData->currentConverter=ucnv_open(cnvName, errorCode);
@@ -659,10 +659,10 @@ _ISO2022Close(UConverter *converter) {
UConverterSharedData **array = myData->myConverterArray;
int32_t i;
- if (converter->extraInfo != NULL) {
+ if (converter->extraInfo != nullptr) {
/*close the array of converter pointers and free the memory*/
for (i=0; i<UCNV_2022_MAX_CONVERTERS; i++) {
- if(array[i]!=NULL) {
+ if(array[i]!=nullptr) {
ucnv_unloadSharedDataIfReady(array[i]);
}
}
@@ -671,7 +671,7 @@ _ISO2022Close(UConverter *converter) {
if(!converter->isExtraLocal){
uprv_free (converter->extraInfo);
- converter->extraInfo = NULL;
+ converter->extraInfo = nullptr;
}
}
}
@@ -694,7 +694,7 @@ _ISO2022Reset(UConverter *converter, UConverterResetChoice choice) {
myConverterData->key = 0;
if (converter->mode == UCNV_SO){
ucnv_close (myConverterData->currentConverter);
- myConverterData->currentConverter=NULL;
+ myConverterData->currentConverter=nullptr;
}
converter->mode = UCNV_SI;
}
@@ -729,7 +729,7 @@ _ISO2022getName(const UConverter* cnv){
UConverterDataISO2022* myData= (UConverterDataISO2022*)cnv->extraInfo;
return myData->name;
}
- return NULL;
+ return nullptr;
}
U_CDECL_END
@@ -891,7 +891,7 @@ DONE:
case ISO_2022:
{
const char *chosenConverterName = escSeqStateTable_Result_2022[offset];
- if(chosenConverterName == NULL) {
+ if(chosenConverterName == nullptr) {
/* SS2 or SS3 */
*err = U_UNSUPPORTED_ESCAPE_SEQUENCE;
_this->toUCallbackReason = UCNV_UNASSIGNED;
@@ -1171,7 +1171,7 @@ MBCS_FROM_UCHAR32_ISO2022(UConverterSharedData* sharedData,
}
cx=sharedData->mbcs.extIndexes;
- if(cx!=NULL) {
+ if(cx!=nullptr) {
return ucnv_extSimpleMatchFromU(cx, c, value, useFallback);
}
@@ -1259,7 +1259,7 @@ T_UConverter_toUnicode_ISO_2022_OFFSETS_LOGIC(UConverterToUnicodeArgs* args,
UErrorCode* err){
const char* mySourceLimit, *realSourceLimit;
const char* sourceStart;
- const UChar* myTargetStart;
+ const char16_t* myTargetStart;
UConverter* saveThis;
UConverterDataISO2022* myData;
int8_t length;
@@ -1274,7 +1274,7 @@ T_UConverter_toUnicode_ISO_2022_OFFSETS_LOGIC(UConverterToUnicodeArgs* args,
mySourceLimit = getEndOfBuffer_2022(&(args->source), realSourceLimit, args->flush);
if(args->source < mySourceLimit) {
- if(myData->currentConverter==NULL) {
+ if(myData->currentConverter==nullptr) {
myData->currentConverter = ucnv_open("ASCII",err);
if(U_FAILURE(*err)){
return;
@@ -1322,7 +1322,7 @@ T_UConverter_toUnicode_ISO_2022_OFFSETS_LOGIC(UConverterToUnicodeArgs* args,
*/
if (U_FAILURE(*err) ||
(args->source == realSourceLimit) ||
- (args->offsets != NULL && (args->target != myTargetStart || args->source != sourceStart) ||
+ (args->offsets != nullptr && (args->target != myTargetStart || args->source != sourceStart) ||
(mySourceLimit < realSourceLimit && myData->currentConverter->toULength > 0))
) {
/* copy partial or error input for truncated detection and error handling */
@@ -1351,7 +1351,7 @@ T_UConverter_toUnicode_ISO_2022_OFFSETS_LOGIC(UConverterToUnicodeArgs* args,
realSourceLimit,
ISO_2022,
err);
- if (U_FAILURE(*err) || (args->source != sourceStart && args->offsets != NULL)) {
+ if (U_FAILURE(*err) || (args->source != sourceStart && args->offsets != nullptr)) {
/* let the ucnv.c code update its current offset */
return;
}
@@ -1667,8 +1667,8 @@ UConverter_fromUnicode_ISO_2022_JP_OFFSETS_LOGIC(UConverterFromUnicodeArgs* args
ISO2022State *pFromU2022State;
uint8_t *target = (uint8_t *) args->target;
const uint8_t *targetLimit = (const uint8_t *) args->targetLimit;
- const UChar* source = args->source;
- const UChar* sourceLimit = args->sourceLimit;
+ const char16_t* source = args->source;
+ const char16_t* sourceLimit = args->sourceLimit;
int32_t* offsets = args->offsets;
UChar32 sourceChar;
char buffer[8];
@@ -1703,7 +1703,7 @@ getTrail:
/*look ahead to find the trail surrogate*/
if(source < sourceLimit) {
/* test the following code unit */
- UChar trail=(UChar) *source;
+ char16_t trail=(char16_t) *source;
if(U16_IS_TRAIL(trail)) {
source++;
sourceChar=U16_GET_SUPPLEMENTARY(sourceChar, trail);
@@ -2082,7 +2082,7 @@ UConverter_toUnicode_ISO_2022_JP_OFFSETS_LOGIC(UConverterToUnicodeArgs *args,
UErrorCode* err){
char tempBuf[2];
const char *mySource = (char *) args->source;
- UChar *myTarget = args->target;
+ char16_t *myTarget = args->target;
const char *mySourceLimit = args->sourceLimit;
uint32_t targetUniChar = 0x0000;
uint32_t mySourceChar = 0x0000;
@@ -2281,25 +2281,25 @@ getTrailByte:
if(args->offsets){
args->offsets[myTarget - args->target] = (int32_t)(mySource - args->source - (mySourceChar <= 0xff ? 1 : 2));
}
- *(myTarget++)=(UChar)targetUniChar;
+ *(myTarget++)=(char16_t)targetUniChar;
}
else if(targetUniChar > missingCharMarker){
/* disassemble the surrogate pair and write to output*/
targetUniChar-=0x0010000;
- *myTarget = (UChar)(0xd800+(UChar)(targetUniChar>>10));
+ *myTarget = (char16_t)(0xd800+(char16_t)(targetUniChar>>10));
if(args->offsets){
args->offsets[myTarget - args->target] = (int32_t)(mySource - args->source - (mySourceChar <= 0xff ? 1 : 2));
}
++myTarget;
if(myTarget< args->targetLimit){
- *myTarget = (UChar)(0xdc00+(UChar)(targetUniChar&0x3ff));
+ *myTarget = (char16_t)(0xdc00+(char16_t)(targetUniChar&0x3ff));
if(args->offsets){
args->offsets[myTarget - args->target] = (int32_t)(mySource - args->source - (mySourceChar <= 0xff ? 1 : 2));
}
++myTarget;
}else{
args->converter->UCharErrorBuffer[args->converter->UCharErrorBufferLength++]=
- (UChar)(0xdc00+(UChar)(targetUniChar&0x3ff));
+ (char16_t)(0xdc00+(char16_t)(targetUniChar&0x3ff));
}
}
@@ -2356,8 +2356,8 @@ UConverter_fromUnicode_ISO_2022_KR_OFFSETS_LOGIC_IBM(UConverterFromUnicodeArgs*
static void U_CALLCONV
UConverter_fromUnicode_ISO_2022_KR_OFFSETS_LOGIC(UConverterFromUnicodeArgs* args, UErrorCode* err){
- const UChar *source = args->source;
- const UChar *sourceLimit = args->sourceLimit;
+ const char16_t *source = args->source;
+ const char16_t *sourceLimit = args->sourceLimit;
unsigned char *target = (unsigned char *) args->target;
unsigned char *targetLimit = (unsigned char *) args->targetLimit;
int32_t* offsets = args->offsets;
@@ -2480,7 +2480,7 @@ getTrail:
/*look ahead to find the trail surrogate*/
if(source < sourceLimit) {
/* test the following code unit */
- UChar trail=(UChar) *source;
+ char16_t trail=(char16_t) *source;
if(U16_IS_TRAIL(trail)) {
source++;
sourceChar=U16_GET_SUPPLEMENTARY(sourceChar, trail);
@@ -2624,10 +2624,10 @@ UConverter_toUnicode_ISO_2022_KR_OFFSETS_LOGIC_IBM(UConverterToUnicodeArgs *args
*/
ucnv_MBCSToUnicodeWithOffsets(&subArgs, err);
- if(args->offsets != NULL && sourceStart != args->source) {
+ if(args->offsets != nullptr && sourceStart != args->source) {
/* update offsets to base them on the actual start of the input */
int32_t *offsets = args->offsets;
- UChar *target = args->target;
+ char16_t *target = args->target;
int32_t delta = (int32_t)(args->source - sourceStart);
while(target < subArgs.target) {
if(*offsets >= 0) {
@@ -2675,10 +2675,10 @@ UConverter_toUnicode_ISO_2022_KR_OFFSETS_LOGIC(UConverterToUnicodeArgs *args,
UErrorCode* err){
char tempBuf[2];
const char *mySource = ( char *) args->source;
- UChar *myTarget = args->target;
+ char16_t *myTarget = args->target;
const char *mySourceLimit = args->sourceLimit;
UChar32 targetUniChar = 0x0000;
- UChar mySourceChar = 0x0000;
+ char16_t mySourceChar = 0x0000;
UConverterDataISO2022* myData;
UConverterSharedData* sharedData ;
UBool useFallback;
@@ -2772,7 +2772,7 @@ getTrailByte:
/* report a pair of illegal bytes if the second byte is not a DBCS starter */
++mySource;
/* add another bit so that the code below writes 2 bytes in case of error */
- mySourceChar = static_cast<UChar>(0x10000 | (mySourceChar << 8) | trailByte);
+ mySourceChar = static_cast<char16_t>(0x10000 | (mySourceChar << 8) | trailByte);
}
} else {
args->converter->toUBytes[0] = (uint8_t)mySourceChar;
@@ -2789,7 +2789,7 @@ getTrailByte:
if(args->offsets) {
args->offsets[myTarget - args->target] = (int32_t)(mySource - args->source - (mySourceChar <= 0xff ? 1 : 2));
}
- *(myTarget++)=(UChar)targetUniChar;
+ *(myTarget++)=(char16_t)targetUniChar;
}
else {
/* Call the callback function*/
@@ -2919,8 +2919,8 @@ UConverter_fromUnicode_ISO_2022_CN_OFFSETS_LOGIC(UConverterFromUnicodeArgs* args
ISO2022State *pFromU2022State;
uint8_t *target = (uint8_t *) args->target;
const uint8_t *targetLimit = (const uint8_t *) args->targetLimit;
- const UChar* source = args->source;
- const UChar* sourceLimit = args->sourceLimit;
+ const char16_t* source = args->source;
+ const char16_t* sourceLimit = args->sourceLimit;
int32_t* offsets = args->offsets;
UChar32 sourceChar;
char buffer[8];
@@ -2952,7 +2952,7 @@ getTrail:
/*look ahead to find the trail surrogate*/
if(source < sourceLimit) {
/* test the following code unit */
- UChar trail=(UChar) *source;
+ char16_t trail=(char16_t) *source;
if(U16_IS_TRAIL(trail)) {
source++;
sourceChar=U16_GET_SUPPLEMENTARY(sourceChar, trail);
@@ -3268,7 +3268,7 @@ UConverter_toUnicode_ISO_2022_CN_OFFSETS_LOGIC(UConverterToUnicodeArgs *args,
UErrorCode* err){
char tempBuf[3];
const char *mySource = (char *) args->source;
- UChar *myTarget = args->target;
+ char16_t *myTarget = args->target;
const char *mySourceLimit = args->sourceLimit;
uint32_t targetUniChar = 0x0000;
uint32_t mySourceChar = 0x0000;
@@ -3417,7 +3417,7 @@ getTrailByte:
}
else{
if(mySourceChar <= 0x7f) {
- targetUniChar = (UChar) mySourceChar;
+ targetUniChar = (char16_t) mySourceChar;
}
}
break;
@@ -3426,25 +3426,25 @@ getTrailByte:
if(args->offsets){
args->offsets[myTarget - args->target] = (int32_t)(mySource - args->source - (mySourceChar <= 0xff ? 1 : 2));
}
- *(myTarget++)=(UChar)targetUniChar;
+ *(myTarget++)=(char16_t)targetUniChar;
}
else if(targetUniChar > missingCharMarker){
/* disassemble the surrogate pair and write to output*/
targetUniChar-=0x0010000;
- *myTarget = (UChar)(0xd800+(UChar)(targetUniChar>>10));
+ *myTarget = (char16_t)(0xd800+(char16_t)(targetUniChar>>10));
if(args->offsets){
args->offsets[myTarget - args->target] = (int32_t)(mySource - args->source - (mySourceChar <= 0xff ? 1 : 2));
}
++myTarget;
if(myTarget< args->targetLimit){
- *myTarget = (UChar)(0xdc00+(UChar)(targetUniChar&0x3ff));
+ *myTarget = (char16_t)(0xdc00+(char16_t)(targetUniChar&0x3ff));
if(args->offsets){
args->offsets[myTarget - args->target] = (int32_t)(mySource - args->source - (mySourceChar <= 0xff ? 1 : 2));
}
++myTarget;
}else{
args->converter->UCharErrorBuffer[args->converter->UCharErrorBufferLength++]=
- (UChar)(0xdc00+(UChar)(targetUniChar&0x3ff));
+ (char16_t)(0xdc00+(char16_t)(targetUniChar&0x3ff));
}
}
@@ -3599,7 +3599,7 @@ _ISO_2022_SafeClone(
if (*pBufferSize == 0) { /* 'preflighting' request - set needed size into *pBufferSize */
*pBufferSize = (int32_t)sizeof(struct cloneStruct);
- return NULL;
+ return nullptr;
}
cnvData = (UConverterDataISO2022 *)cnv->extraInfo;
@@ -3613,19 +3613,19 @@ _ISO_2022_SafeClone(
/* share the subconverters */
- if(cnvData->currentConverter != NULL) {
+ if(cnvData->currentConverter != nullptr) {
size = (int32_t)sizeof(UConverter);
localClone->mydata.currentConverter =
ucnv_safeClone(cnvData->currentConverter,
&localClone->currentConverter,
&size, status);
if(U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
}
for(i=0; i<UCNV_2022_MAX_CONVERTERS; ++i) {
- if(cnvData->myConverterArray[i] != NULL) {
+ if(cnvData->myConverterArray[i] != nullptr) {
ucnv_incrementRefCount(cnvData->myConverterArray[i]);
}
}
@@ -3721,7 +3721,7 @@ _ISO_2022_GetUnicodeSet(const UConverter *cnv,
for (i=0; i<UCNV_2022_MAX_CONVERTERS; i++) {
UConverterSetFilter filter;
- if(cnvData->myConverterArray[i]!=NULL) {
+ if(cnvData->myConverterArray[i]!=nullptr) {
if(cnvData->locale[0]=='j' && i==JISX208) {
/*
* Only add code points that map to Shift-JIS codes
@@ -3769,8 +3769,8 @@ _ISO_2022_GetUnicodeSet(const UConverter *cnv,
static const UConverterImpl _ISO2022Impl={
UCNV_ISO_2022,
- NULL,
- NULL,
+ nullptr,
+ nullptr,
_ISO2022Open,
_ISO2022Close,
@@ -3782,21 +3782,21 @@ static const UConverterImpl _ISO2022Impl={
ucnv_fromUnicode_UTF8,
ucnv_fromUnicode_UTF8_OFFSETS_LOGIC,
#else
- NULL,
- NULL,
- NULL,
- NULL,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
#endif
- NULL,
+ nullptr,
- NULL,
+ nullptr,
_ISO2022getName,
_ISO_2022_WriteSub,
_ISO_2022_SafeClone,
_ISO_2022_GetUnicodeSet,
- NULL,
- NULL
+ nullptr,
+ nullptr
};
static const UConverterStaticData _ISO2022StaticData={
sizeof(UConverterStaticData),
@@ -3805,7 +3805,7 @@ static const UConverterStaticData _ISO2022StaticData={
UCNV_IBM,
UCNV_ISO_2022,
1,
- 3, /* max 3 bytes per UChar from UTF-8 (4 bytes from surrogate _pair_) */
+ 3, /* max 3 bytes per char16_t from UTF-8 (4 bytes from surrogate _pair_) */
{ 0x1a, 0, 0, 0 },
1,
false,
@@ -3821,8 +3821,8 @@ const UConverterSharedData _ISO2022Data=
static const UConverterImpl _ISO2022JPImpl={
UCNV_ISO_2022,
- NULL,
- NULL,
+ nullptr,
+ nullptr,
_ISO2022Open,
_ISO2022Close,
@@ -3832,16 +3832,16 @@ static const UConverterImpl _ISO2022JPImpl={
UConverter_toUnicode_ISO_2022_JP_OFFSETS_LOGIC,
UConverter_fromUnicode_ISO_2022_JP_OFFSETS_LOGIC,
UConverter_fromUnicode_ISO_2022_JP_OFFSETS_LOGIC,
- NULL,
+ nullptr,
- NULL,
+ nullptr,
_ISO2022getName,
_ISO_2022_WriteSub,
_ISO_2022_SafeClone,
_ISO_2022_GetUnicodeSet,
- NULL,
- NULL
+ nullptr,
+ nullptr
};
static const UConverterStaticData _ISO2022JPStaticData={
sizeof(UConverterStaticData),
@@ -3850,7 +3850,7 @@ static const UConverterStaticData _ISO2022JPStaticData={
UCNV_IBM,
UCNV_ISO_2022,
1,
- 6, /* max 6 bytes per UChar: 4-byte escape sequence + DBCS */
+ 6, /* max 6 bytes per char16_t: 4-byte escape sequence + DBCS */
{ 0x1a, 0, 0, 0 },
1,
false,
@@ -3872,8 +3872,8 @@ const UConverterSharedData _ISO2022JPData=
static const UConverterImpl _ISO2022KRImpl={
UCNV_ISO_2022,
- NULL,
- NULL,
+ nullptr,
+ nullptr,
_ISO2022Open,
_ISO2022Close,
@@ -3883,16 +3883,16 @@ static const UConverterImpl _ISO2022KRImpl={
UConverter_toUnicode_ISO_2022_KR_OFFSETS_LOGIC,
UConverter_fromUnicode_ISO_2022_KR_OFFSETS_LOGIC,
UConverter_fromUnicode_ISO_2022_KR_OFFSETS_LOGIC,
- NULL,
+ nullptr,
- NULL,
+ nullptr,
_ISO2022getName,
_ISO_2022_WriteSub,
_ISO_2022_SafeClone,
_ISO_2022_GetUnicodeSet,
- NULL,
- NULL
+ nullptr,
+ nullptr
};
static const UConverterStaticData _ISO2022KRStaticData={
sizeof(UConverterStaticData),
@@ -3901,7 +3901,7 @@ static const UConverterStaticData _ISO2022KRStaticData={
UCNV_IBM,
UCNV_ISO_2022,
1,
- 8, /* max 8 bytes per UChar */
+ 8, /* max 8 bytes per char16_t */
{ 0x1a, 0, 0, 0 },
1,
false,
@@ -3923,8 +3923,8 @@ static const UConverterImpl _ISO2022CNImpl={
UCNV_ISO_2022,
- NULL,
- NULL,
+ nullptr,
+ nullptr,
_ISO2022Open,
_ISO2022Close,
@@ -3934,16 +3934,16 @@ static const UConverterImpl _ISO2022CNImpl={
UConverter_toUnicode_ISO_2022_CN_OFFSETS_LOGIC,
UConverter_fromUnicode_ISO_2022_CN_OFFSETS_LOGIC,
UConverter_fromUnicode_ISO_2022_CN_OFFSETS_LOGIC,
- NULL,
+ nullptr,
- NULL,
+ nullptr,
_ISO2022getName,
_ISO_2022_WriteSub,
_ISO_2022_SafeClone,
_ISO_2022_GetUnicodeSet,
- NULL,
- NULL
+ nullptr,
+ nullptr
};
static const UConverterStaticData _ISO2022CNStaticData={
sizeof(UConverterStaticData),
@@ -3952,7 +3952,7 @@ static const UConverterStaticData _ISO2022CNStaticData={
UCNV_IBM,
UCNV_ISO_2022,
1,
- 8, /* max 8 bytes per UChar: 4-byte CNS designator + 2 bytes for SS2/SS3 + DBCS */
+ 8, /* max 8 bytes per char16_t: 4-byte CNS designator + 2 bytes for SS2/SS3 + DBCS */
{ 0x1a, 0, 0, 0 },
1,
false,
diff --git a/Build/source/libs/icu/icu-src/source/common/ucnv_bld.cpp b/Build/source/libs/icu/icu-src/source/common/ucnv_bld.cpp
index a0fbfe2d7f5..564b645bed7 100644
--- a/Build/source/libs/icu/icu-src/source/common/ucnv_bld.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ucnv_bld.cpp
@@ -57,10 +57,10 @@ extern void UCNV_DEBUG_LOG(char *what, char *who, void *p, int l);
static const UConverterSharedData * const
converterData[UCNV_NUMBER_OF_SUPPORTED_CONVERTER_TYPES]={
- NULL, NULL,
+ nullptr, nullptr,
#if UCONFIG_NO_LEGACY_CONVERSION
- NULL,
+ nullptr,
#else
&_MBCSData,
#endif
@@ -68,22 +68,22 @@ converterData[UCNV_NUMBER_OF_SUPPORTED_CONVERTER_TYPES]={
&_Latin1Data,
&_UTF8Data, &_UTF16BEData, &_UTF16LEData,
#if UCONFIG_ONLY_HTML_CONVERSION
- NULL, NULL,
+ nullptr, nullptr,
#else
&_UTF32BEData, &_UTF32LEData,
#endif
- NULL,
+ nullptr,
#if UCONFIG_NO_LEGACY_CONVERSION
- NULL,
+ nullptr,
#else
&_ISO2022Data,
#endif
#if UCONFIG_NO_LEGACY_CONVERSION || UCONFIG_ONLY_HTML_CONVERSION
- NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL,
- NULL,
+ nullptr, nullptr, nullptr, nullptr, nullptr, nullptr,
+ nullptr, nullptr, nullptr, nullptr, nullptr, nullptr,
+ nullptr,
#else
&_LMBCSData1,&_LMBCSData2, &_LMBCSData3, &_LMBCSData4, &_LMBCSData5, &_LMBCSData6,
&_LMBCSData8,&_LMBCSData11,&_LMBCSData16,&_LMBCSData17,&_LMBCSData18,&_LMBCSData19,
@@ -91,27 +91,27 @@ converterData[UCNV_NUMBER_OF_SUPPORTED_CONVERTER_TYPES]={
#endif
#if UCONFIG_ONLY_HTML_CONVERSION
- NULL,
+ nullptr,
#else
&_SCSUData,
#endif
#if UCONFIG_NO_LEGACY_CONVERSION || UCONFIG_ONLY_HTML_CONVERSION
- NULL,
+ nullptr,
#else
&_ISCIIData,
#endif
&_ASCIIData,
#if UCONFIG_ONLY_HTML_CONVERSION
- NULL, NULL, &_UTF16Data, NULL, NULL, NULL,
+ nullptr, nullptr, &_UTF16Data, nullptr, nullptr, nullptr,
#else
&_UTF7Data, &_Bocu1Data, &_UTF16Data, &_UTF32Data, &_CESU8Data, &_IMAPData,
#endif
#if UCONFIG_NO_LEGACY_CONVERSION || UCONFIG_ONLY_HTML_CONVERSION
- NULL,
+ nullptr,
#else
&_CompoundTextData
#endif
@@ -193,20 +193,20 @@ static struct {
/*initializes some global variables */
-static UHashtable *SHARED_DATA_HASHTABLE = NULL;
+static UHashtable *SHARED_DATA_HASHTABLE = nullptr;
static icu::UMutex cnvCacheMutex;
/* Note: the global mutex is used for */
/* reference count updates. */
-static const char **gAvailableConverters = NULL;
+static const char **gAvailableConverters = nullptr;
static uint16_t gAvailableConverterCount = 0;
static icu::UInitOnce gAvailableConvertersInitOnce {};
#if !U_CHARSET_IS_UTF8
/* This contains the resolved converter name. So no further alias lookup is needed again. */
-static char gDefaultConverterNameBuffer[UCNV_MAX_CONVERTER_NAME_LENGTH + 1]; /* +1 for NULL */
-static const char *gDefaultConverterName = NULL;
+static char gDefaultConverterNameBuffer[UCNV_MAX_CONVERTER_NAME_LENGTH + 1]; /* +1 for nullptr */
+static const char *gDefaultConverterName = nullptr;
/*
If the default converter is an algorithmic converter, this is the cached value.
@@ -214,7 +214,7 @@ We don't cache a full UConverter and clone it because ucnv_clone doesn't have
less overhead than an algorithmic open. We don't cache non-algorithmic converters
because ucnv_flushCache must be able to unload the default converter and its table.
*/
-static const UConverterSharedData *gDefaultAlgorithmicSharedData = NULL;
+static const UConverterSharedData *gDefaultAlgorithmicSharedData = nullptr;
/* Does gDefaultConverterName have a converter option and require extra parsing? */
static UBool gDefaultConverterContainsOption;
@@ -232,7 +232,7 @@ ucnv_flushAvailableConverterCache() {
gAvailableConverterCount = 0;
if (gAvailableConverters) {
uprv_free((char **)gAvailableConverters);
- gAvailableConverters = NULL;
+ gAvailableConverters = nullptr;
}
gAvailableConvertersInitOnce.reset();
}
@@ -241,28 +241,28 @@ ucnv_flushAvailableConverterCache() {
/* in use by open converters. */
/* Not thread safe. */
/* Not supported API. */
-static UBool U_CALLCONV ucnv_cleanup(void) {
+static UBool U_CALLCONV ucnv_cleanup() {
ucnv_flushCache();
- if (SHARED_DATA_HASHTABLE != NULL && uhash_count(SHARED_DATA_HASHTABLE) == 0) {
+ if (SHARED_DATA_HASHTABLE != nullptr && uhash_count(SHARED_DATA_HASHTABLE) == 0) {
uhash_close(SHARED_DATA_HASHTABLE);
- SHARED_DATA_HASHTABLE = NULL;
+ SHARED_DATA_HASHTABLE = nullptr;
}
/* Isn't called from flushCache because other threads may have preexisting references to the table. */
ucnv_flushAvailableConverterCache();
#if !U_CHARSET_IS_UTF8
- gDefaultConverterName = NULL;
+ gDefaultConverterName = nullptr;
gDefaultConverterNameBuffer[0] = 0;
gDefaultConverterContainsOption = false;
- gDefaultAlgorithmicSharedData = NULL;
+ gDefaultAlgorithmicSharedData = nullptr;
#endif
- return (SHARED_DATA_HASHTABLE == NULL);
+ return (SHARED_DATA_HASHTABLE == nullptr);
}
U_CAPI void U_EXPORT2
-ucnv_enableCleanup(void) {
+ucnv_enableCleanup() {
ucln_common_registerCleanup(UCLN_COMMON_UCNV, ucnv_cleanup);
}
@@ -295,22 +295,22 @@ ucnv_data_unFlattenClone(UConverterLoadArgs *pArgs, UDataMemory *pData, UErrorCo
UConverterType type = (UConverterType)source->conversionType;
if(U_FAILURE(*status))
- return NULL;
+ return nullptr;
if( (uint16_t)type >= UCNV_NUMBER_OF_SUPPORTED_CONVERTER_TYPES ||
- converterData[type] == NULL ||
+ converterData[type] == nullptr ||
!converterData[type]->isReferenceCounted ||
converterData[type]->referenceCounter != 1 ||
source->structSize != sizeof(UConverterStaticData))
{
*status = U_INVALID_TABLE_FORMAT;
- return NULL;
+ return nullptr;
}
data = (UConverterSharedData *)uprv_malloc(sizeof(UConverterSharedData));
- if(data == NULL) {
+ if(data == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
/* copy initial values from the static structure for this type */
@@ -323,11 +323,11 @@ ucnv_data_unFlattenClone(UConverterLoadArgs *pArgs, UDataMemory *pData, UErrorCo
/* fill in fields from the loaded data */
data->dataMemory = (void*)pData; /* for future use */
- if(data->impl->load != NULL) {
+ if(data->impl->load != nullptr) {
data->impl->load(data, pArgs, raw + source->structSize, status);
if(U_FAILURE(*status)) {
uprv_free(data);
- return NULL;
+ return nullptr;
}
}
return data;
@@ -346,16 +346,16 @@ static UConverterSharedData *createConverterFromFile(UConverterLoadArgs *pArgs,
if (U_FAILURE (*err)) {
UTRACE_EXIT_STATUS(*err);
- return NULL;
+ return nullptr;
}
UTRACE_DATA2(UTRACE_OPEN_CLOSE, "load converter %s from package %s", pArgs->name, pArgs->pkg);
- data = udata_openChoice(pArgs->pkg, DATA_TYPE, pArgs->name, isCnvAcceptable, NULL, err);
+ data = udata_openChoice(pArgs->pkg, DATA_TYPE, pArgs->name, isCnvAcceptable, nullptr, err);
if(U_FAILURE(*err))
{
UTRACE_EXIT_STATUS(*err);
- return NULL;
+ return nullptr;
}
sharedData = ucnv_data_unFlattenClone(pArgs, data, err);
@@ -363,7 +363,7 @@ static UConverterSharedData *createConverterFromFile(UConverterLoadArgs *pArgs,
{
udata_close(data);
UTRACE_EXIT_STATUS(*err);
- return NULL;
+ return nullptr;
}
/*
@@ -413,7 +413,7 @@ getAlgorithmicTypeFromName(const char *realName)
}
}
- return NULL;
+ return nullptr;
}
/*
@@ -437,11 +437,11 @@ ucnv_shareConverterData(UConverterSharedData * data)
{
UErrorCode err = U_ZERO_ERROR;
/*Lazy evaluates the Hashtable itself */
- /*void *sanity = NULL;*/
+ /*void *sanity = nullptr;*/
- if (SHARED_DATA_HASHTABLE == NULL)
+ if (SHARED_DATA_HASHTABLE == nullptr)
{
- SHARED_DATA_HASHTABLE = uhash_openSize(uhash_hashChars, uhash_compareChars, NULL,
+ SHARED_DATA_HASHTABLE = uhash_openSize(uhash_hashChars, uhash_compareChars, nullptr,
ucnv_io_countKnownConverters(&err)*UCNV_CACHE_LOAD_FACTOR,
&err);
ucnv_enableCleanup();
@@ -454,7 +454,7 @@ ucnv_shareConverterData(UConverterSharedData * data)
/*
sanity = ucnv_getSharedConverterData (data->staticData->name);
- if(sanity != NULL)
+ if(sanity != nullptr)
{
UCNV_DEBUG_LOG("put:overwrite!",data->staticData->name,sanity);
}
@@ -466,7 +466,7 @@ ucnv_shareConverterData(UConverterSharedData * data)
uhash_put(SHARED_DATA_HASHTABLE,
(void*) data->staticData->name, /* Okay to cast away const as long as
- keyDeleter == NULL */
+ keyDeleter == nullptr */
data,
&err);
UCNV_DEBUG_LOG("put", data->staticData->name,data);
@@ -475,17 +475,17 @@ ucnv_shareConverterData(UConverterSharedData * data)
/* Look up a converter name in the shared data cache. */
/* cnvCacheMutex must be held by the caller to protect the hash table. */
-/* gets the shared data from the SHARED_DATA_HASHTABLE (might return NULL if it isn't there)
+/* gets the shared data from the SHARED_DATA_HASHTABLE (might return nullptr if it isn't there)
* @param name The name of the shared data
* @return the shared data from the SHARED_DATA_HASHTABLE
*/
static UConverterSharedData *
ucnv_getSharedConverterData(const char *name)
{
- /*special case when no Table has yet been created we return NULL */
- if (SHARED_DATA_HASHTABLE == NULL)
+ /*special case when no Table has yet been created we return nullptr */
+ if (SHARED_DATA_HASHTABLE == nullptr)
{
- return NULL;
+ return nullptr;
}
else
{
@@ -519,11 +519,11 @@ ucnv_deleteSharedConverterData(UConverterSharedData * deadSharedData)
return false;
}
- if (deadSharedData->impl->unload != NULL) {
+ if (deadSharedData->impl->unload != nullptr) {
deadSharedData->impl->unload(deadSharedData);
}
- if(deadSharedData->dataMemory != NULL)
+ if(deadSharedData->dataMemory != nullptr)
{
UDataMemory *data = (UDataMemory*)deadSharedData->dataMemory;
udata_close(data);
@@ -537,29 +537,29 @@ ucnv_deleteSharedConverterData(UConverterSharedData * deadSharedData)
/**
* Load a non-algorithmic converter.
- * If pkg==NULL, then this function must be called inside umtx_lock(&cnvCacheMutex).
+ * If pkg==nullptr, then this function must be called inside umtx_lock(&cnvCacheMutex).
*/
UConverterSharedData *
ucnv_load(UConverterLoadArgs *pArgs, UErrorCode *err) {
UConverterSharedData *mySharedConverterData;
- if(err == NULL || U_FAILURE(*err)) {
- return NULL;
+ if(err == nullptr || U_FAILURE(*err)) {
+ return nullptr;
}
- if(pArgs->pkg != NULL && *pArgs->pkg != 0) {
+ if(pArgs->pkg != nullptr && *pArgs->pkg != 0) {
/* application-provided converters are not currently cached */
return createConverterFromFile(pArgs, err);
}
mySharedConverterData = ucnv_getSharedConverterData(pArgs->name);
- if (mySharedConverterData == NULL)
+ if (mySharedConverterData == nullptr)
{
/*Not cached, we need to stream it in from file */
mySharedConverterData = createConverterFromFile(pArgs, err);
- if (U_FAILURE (*err) || (mySharedConverterData == NULL))
+ if (U_FAILURE (*err) || (mySharedConverterData == nullptr))
{
- return NULL;
+ return nullptr;
}
else if (!pArgs->onlyTestIsLoadable)
{
@@ -584,7 +584,7 @@ ucnv_load(UConverterLoadArgs *pArgs, UErrorCode *err) {
*/
U_CAPI void
ucnv_unload(UConverterSharedData *sharedData) {
- if(sharedData != NULL) {
+ if(sharedData != nullptr) {
if (sharedData->referenceCounter > 0) {
sharedData->referenceCounter--;
}
@@ -598,7 +598,7 @@ ucnv_unload(UConverterSharedData *sharedData) {
U_CFUNC void
ucnv_unloadSharedDataIfReady(UConverterSharedData *sharedData)
{
- if(sharedData != NULL && sharedData->isReferenceCounted) {
+ if(sharedData != nullptr && sharedData->isReferenceCounted) {
umtx_lock(&cnvCacheMutex);
ucnv_unload(sharedData);
umtx_unlock(&cnvCacheMutex);
@@ -608,7 +608,7 @@ ucnv_unloadSharedDataIfReady(UConverterSharedData *sharedData)
U_CFUNC void
ucnv_incrementRefCount(UConverterSharedData *sharedData)
{
- if(sharedData != NULL && sharedData->isReferenceCounted) {
+ if(sharedData != nullptr && sharedData->isReferenceCounted) {
umtx_lock(&cnvCacheMutex);
sharedData->referenceCounter++;
umtx_unlock(&cnvCacheMutex);
@@ -715,27 +715,27 @@ ucnv_loadSharedData(const char *converterName,
UErrorCode * err) {
UConverterNamePieces stackPieces;
UConverterLoadArgs stackArgs;
- UConverterSharedData *mySharedConverterData = NULL;
+ UConverterSharedData *mySharedConverterData = nullptr;
UErrorCode internalErrorCode = U_ZERO_ERROR;
UBool mayContainOption = true;
UBool checkForAlgorithmic = true;
if (U_FAILURE (*err)) {
- return NULL;
+ return nullptr;
}
- if(pPieces == NULL) {
- if(pArgs != NULL) {
+ if(pPieces == nullptr) {
+ if(pArgs != nullptr) {
/*
* Bad: We may set pArgs pointers to stackPieces fields
* which will be invalid after this function returns.
*/
*err = U_INTERNAL_PROGRAM_ERROR;
- return NULL;
+ return nullptr;
}
pPieces = &stackPieces;
}
- if(pArgs == NULL) {
+ if(pArgs == nullptr) {
uprv_memset(&stackArgs, 0, sizeof(stackArgs));
stackArgs.size = (int32_t)sizeof(stackArgs);
pArgs = &stackArgs;
@@ -749,17 +749,17 @@ ucnv_loadSharedData(const char *converterName,
pArgs->locale = pPieces->locale;
pArgs->options = pPieces->options;
- /* In case "name" is NULL we want to open the default converter. */
- if (converterName == NULL) {
+ /* In case "name" is nullptr we want to open the default converter. */
+ if (converterName == nullptr) {
#if U_CHARSET_IS_UTF8
pArgs->name = "UTF-8";
return (UConverterSharedData *)converterData[UCNV_UTF8];
#else
/* Call ucnv_getDefaultName first to query the name from the OS. */
pArgs->name = ucnv_getDefaultName();
- if (pArgs->name == NULL) {
+ if (pArgs->name == nullptr) {
*err = U_MISSING_RESOURCE_ERROR;
- return NULL;
+ return nullptr;
}
mySharedConverterData = (UConverterSharedData *)gDefaultAlgorithmicSharedData;
checkForAlgorithmic = false;
@@ -777,12 +777,12 @@ ucnv_loadSharedData(const char *converterName,
parseConverterOptions(converterName, pPieces, pArgs, err);
if (U_FAILURE(*err)) {
/* Very bad name used. */
- return NULL;
+ return nullptr;
}
/* get the canonical converter name */
pArgs->name = ucnv_io_getConverterName(pArgs->name, &mayContainOption, &internalErrorCode);
- if (U_FAILURE(internalErrorCode) || pArgs->name == NULL) {
+ if (U_FAILURE(internalErrorCode) || pArgs->name == nullptr) {
/*
* set the input name in case the converter was added
* without updating the alias table, or when there is no alias table
@@ -802,7 +802,7 @@ ucnv_loadSharedData(const char *converterName,
if (checkForAlgorithmic) {
mySharedConverterData = (UConverterSharedData *)getAlgorithmicTypeFromName(pArgs->name);
}
- if (mySharedConverterData == NULL)
+ if (mySharedConverterData == nullptr)
{
/* it is a data-based converter, get its shared data. */
/* Hold the cnvCacheMutex through the whole process of checking the */
@@ -810,14 +810,14 @@ ucnv_loadSharedData(const char *converterName,
/* to prevent other threads from modifying the cache during the */
/* process. */
pArgs->nestedLoads=1;
- pArgs->pkg=NULL;
+ pArgs->pkg=nullptr;
umtx_lock(&cnvCacheMutex);
mySharedConverterData = ucnv_load(pArgs, err);
umtx_unlock(&cnvCacheMutex);
- if (U_FAILURE (*err) || (mySharedConverterData == NULL))
+ if (U_FAILURE (*err) || (mySharedConverterData == nullptr))
{
- return NULL;
+ return nullptr;
}
}
@@ -851,7 +851,7 @@ ucnv_createConverter(UConverter *myUConverter, const char *converterName, UError
/* exit with error */
UTRACE_EXIT_STATUS(*err);
- return NULL;
+ return nullptr;
}
U_CFUNC UBool
@@ -894,15 +894,15 @@ ucnv_createAlgorithmicConverter(UConverter *myUConverter,
if(type<0 || UCNV_NUMBER_OF_SUPPORTED_CONVERTER_TYPES<=type) {
*err = U_ILLEGAL_ARGUMENT_ERROR;
UTRACE_EXIT_STATUS(U_ILLEGAL_ARGUMENT_ERROR);
- return NULL;
+ return nullptr;
}
sharedData = converterData[type];
- if(sharedData == NULL || sharedData->isReferenceCounted) {
+ if(sharedData == nullptr || sharedData->isReferenceCounted) {
/* not a valid type, or not an algorithmic converter */
*err = U_ILLEGAL_ARGUMENT_ERROR;
UTRACE_EXIT_STATUS(U_ILLEGAL_ARGUMENT_ERROR);
- return NULL;
+ return nullptr;
}
stackArgs.name = "";
@@ -928,7 +928,7 @@ ucnv_createConverterFromPackage(const char *packageName, const char *converterNa
if(U_FAILURE(*err)) {
UTRACE_EXIT_STATUS(*err);
- return NULL;
+ return nullptr;
}
UTRACE_DATA2(UTRACE_OPEN_CLOSE, "open converter %s from package %s", converterName, packageName);
@@ -941,7 +941,7 @@ ucnv_createConverterFromPackage(const char *packageName, const char *converterNa
if (U_FAILURE(*err)) {
/* Very bad name used. */
UTRACE_EXIT_STATUS(*err);
- return NULL;
+ return nullptr;
}
stackArgs.nestedLoads=1;
stackArgs.pkg=packageName;
@@ -951,16 +951,16 @@ ucnv_createConverterFromPackage(const char *packageName, const char *converterNa
if (U_FAILURE(*err)) {
UTRACE_EXIT_STATUS(*err);
- return NULL;
+ return nullptr;
}
/* create the actual converter */
- myUConverter = ucnv_createConverterFromSharedData(NULL, mySharedConverterData, &stackArgs, err);
+ myUConverter = ucnv_createConverterFromSharedData(nullptr, mySharedConverterData, &stackArgs, err);
if (U_FAILURE(*err)) {
ucnv_close(myUConverter);
UTRACE_EXIT_STATUS(*err);
- return NULL;
+ return nullptr;
}
UTRACE_EXIT_PTR_STATUS(myUConverter, *err);
@@ -980,14 +980,14 @@ ucnv_createConverterFromSharedData(UConverter *myUConverter,
ucnv_unloadSharedDataIfReady(mySharedConverterData);
return myUConverter;
}
- if(myUConverter == NULL)
+ if(myUConverter == nullptr)
{
myUConverter = (UConverter *) uprv_malloc (sizeof (UConverter));
- if(myUConverter == NULL)
+ if(myUConverter == nullptr)
{
*err = U_MEMORY_ALLOCATION_ERROR;
ucnv_unloadSharedDataIfReady(mySharedConverterData);
- return NULL;
+ return nullptr;
}
isCopyLocal = false;
} else {
@@ -1013,12 +1013,12 @@ ucnv_createConverterFromSharedData(UConverter *myUConverter,
myUConverter->toUCallbackReason = UCNV_ILLEGAL; /* default reason to invoke (*fromCharErrorBehaviour) */
}
- if(mySharedConverterData->impl->open != NULL) {
+ if(mySharedConverterData->impl->open != nullptr) {
mySharedConverterData->impl->open(myUConverter, pArgs, err);
if(U_FAILURE(*err) && !pArgs->onlyTestIsLoadable) {
/* don't ucnv_close() if onlyTestIsLoadable because not fully initialized */
ucnv_close(myUConverter);
- return NULL;
+ return nullptr;
}
}
@@ -1030,7 +1030,7 @@ ucnv_createConverterFromSharedData(UConverter *myUConverter,
U_CAPI int32_t U_EXPORT2
ucnv_flushCache ()
{
- UConverterSharedData *mySharedData = NULL;
+ UConverterSharedData *mySharedData = nullptr;
int32_t pos;
int32_t tableDeletedNum = 0;
const UHashElement *e;
@@ -1045,7 +1045,7 @@ ucnv_flushCache ()
/*if shared data hasn't even been lazy evaluated yet
* return 0
*/
- if (SHARED_DATA_HASHTABLE == NULL) {
+ if (SHARED_DATA_HASHTABLE == nullptr) {
UTRACE_EXIT_VALUE((int32_t)0);
return 0;
}
@@ -1072,7 +1072,7 @@ ucnv_flushCache ()
do {
remaining = 0;
pos = UHASH_FIRST;
- while ((e = uhash_nextElement (SHARED_DATA_HASHTABLE, &pos)) != NULL)
+ while ((e = uhash_nextElement (SHARED_DATA_HASHTABLE, &pos)) != nullptr)
{
mySharedData = (UConverterSharedData *) e->value.pointer;
/*deletes only if reference counter == 0 */
@@ -1102,7 +1102,7 @@ ucnv_flushCache ()
static void U_CALLCONV initAvailableConvertersList(UErrorCode &errCode) {
U_ASSERT(gAvailableConverterCount == 0);
- U_ASSERT(gAvailableConverters == NULL);
+ U_ASSERT(gAvailableConverters == nullptr);
ucnv_enableCleanup();
UEnumeration *allConvEnum = ucnv_openAllNames(&errCode);
@@ -1121,13 +1121,13 @@ static void U_CALLCONV initAvailableConvertersList(UErrorCode &errCode) {
/* Open the default converter to make sure that it has first dibs in the hash table. */
UErrorCode localStatus = U_ZERO_ERROR;
UConverter tempConverter;
- ucnv_close(ucnv_createConverter(&tempConverter, NULL, &localStatus));
+ ucnv_close(ucnv_createConverter(&tempConverter, nullptr, &localStatus));
gAvailableConverterCount = 0;
for (int32_t idx = 0; idx < allConverterCount; idx++) {
localStatus = U_ZERO_ERROR;
- const char *converterName = uenum_next(allConvEnum, NULL, &localStatus);
+ const char *converterName = uenum_next(allConvEnum, nullptr, &localStatus);
if (ucnv_canCreateConverter(converterName, &localStatus)) {
gAvailableConverters[gAvailableConverterCount++] = converterName;
}
@@ -1158,7 +1158,7 @@ ucnv_bld_getAvailableConverter(uint16_t n, UErrorCode *pErrorCode) {
}
*pErrorCode = U_INDEX_OUTOFBOUNDS_ERROR;
}
- return NULL;
+ return nullptr;
}
/* default converter name --------------------------------------------------- */
@@ -1181,7 +1181,7 @@ internalSetName(const char *name, UErrorCode *status) {
UConverterNamePieces stackPieces;
UConverterLoadArgs stackArgs=UCNV_LOAD_ARGS_INITIALIZER;
int32_t length=(int32_t)(uprv_strlen(name));
- UBool containsOption = (UBool)(uprv_strchr(name, UCNV_OPTION_SEP_CHAR) != NULL);
+ UBool containsOption = (UBool)(uprv_strchr(name, UCNV_OPTION_SEP_CHAR) != nullptr);
const UConverterSharedData *algorithmicSharedData;
stackArgs.name = name;
@@ -1240,22 +1240,22 @@ ucnv_getDefaultName() {
icu::Mutex lock(&cnvCacheMutex);
name = gDefaultConverterName;
}
- if(name==NULL) {
+ if(name==nullptr) {
UErrorCode errorCode = U_ZERO_ERROR;
- UConverter *cnv = NULL;
+ UConverter *cnv = nullptr;
name = uprv_getDefaultCodepage();
/* if the name is there, test it out and get the canonical name with options */
- if(name != NULL) {
+ if(name != nullptr) {
cnv = ucnv_open(name, &errorCode);
- if(U_SUCCESS(errorCode) && cnv != NULL) {
+ if(U_SUCCESS(errorCode) && cnv != nullptr) {
name = ucnv_getName(cnv, &errorCode);
}
}
- if(name == NULL || name[0] == 0
- || U_FAILURE(errorCode) || cnv == NULL
+ if(name == nullptr || name[0] == 0
+ || U_FAILURE(errorCode) || cnv == nullptr
|| uprv_strlen(name)>=sizeof(gDefaultConverterNameBuffer))
{
/* Panic time, let's use a fallback. */
@@ -1288,21 +1288,21 @@ See internalSetName or the API reference for details.
*/
U_CAPI void U_EXPORT2
ucnv_setDefaultName(const char *converterName) {
- if(converterName==NULL) {
+ if(converterName==nullptr) {
/* reset to the default codepage */
- gDefaultConverterName=NULL;
+ gDefaultConverterName=nullptr;
} else {
UErrorCode errorCode = U_ZERO_ERROR;
- UConverter *cnv = NULL;
- const char *name = NULL;
+ UConverter *cnv = nullptr;
+ const char *name = nullptr;
/* if the name is there, test it out and get the canonical name with options */
cnv = ucnv_open(converterName, &errorCode);
- if(U_SUCCESS(errorCode) && cnv != NULL) {
+ if(U_SUCCESS(errorCode) && cnv != nullptr) {
name = ucnv_getName(cnv, &errorCode);
}
- if(U_SUCCESS(errorCode) && name!=NULL) {
+ if(U_SUCCESS(errorCode) && name!=nullptr) {
internalSetName(name, &errorCode);
}
/* else this converter is bad to use. Don't change it to a bad value. */
@@ -1353,7 +1353,7 @@ ucnv_swap(const UDataSwapper *ds,
/* udata_swapDataHeader checks the arguments */
headerSize=udata_swapDataHeader(ds, inData, length, outData, pErrorCode);
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return 0;
}
@@ -1376,7 +1376,7 @@ ucnv_swap(const UDataSwapper *ds,
}
inBytes=(const uint8_t *)inData+headerSize;
- outBytes=(uint8_t *)outData+headerSize;
+ outBytes=(outData == nullptr) ? nullptr : (uint8_t *)outData+headerSize;
/* read the initial UConverterStaticData structure after the UDataInfo header */
inStaticData=(const UConverterStaticData *)inBytes;
@@ -1416,7 +1416,7 @@ ucnv_swap(const UDataSwapper *ds,
}
inBytes+=staticDataSize;
- outBytes+=staticDataSize;
+ if (outBytes != nullptr) outBytes+=staticDataSize;
if(length>=0) {
length-=(int32_t)staticDataSize;
}
@@ -1509,7 +1509,7 @@ ucnv_swap(const UDataSwapper *ds,
}
/* avoid compiler warnings - not otherwise necessary, and the value does not matter */
- inExtIndexes=NULL;
+ inExtIndexes=nullptr;
} else {
/* there is extension data after the base data, see ucnv_ext.h */
if(length>=0 && length<(extOffset+UCNV_EXT_INDEXES_MIN_LENGTH*4)) {
diff --git a/Build/source/libs/icu/icu-src/source/common/ucnv_cb.cpp b/Build/source/libs/icu/icu-src/source/common/ucnv_cb.cpp
index 7bfde828704..dd559270dd7 100644
--- a/Build/source/libs/icu/icu-src/source/common/ucnv_cb.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ucnv_cb.cpp
@@ -54,8 +54,8 @@ ucnv_cbFromUWriteBytes (UConverterFromUnicodeArgs *args,
U_CAPI void U_EXPORT2
ucnv_cbFromUWriteUChars(UConverterFromUnicodeArgs *args,
- const UChar** source,
- const UChar* sourceLimit,
+ const char16_t** source,
+ const char16_t* sourceLimit,
int32_t offsetIndex,
UErrorCode * err)
{
@@ -85,7 +85,7 @@ ucnv_cbFromUWriteUChars(UConverterFromUnicodeArgs *args,
args->targetLimit,
source,
sourceLimit,
- NULL, /* no offsets */
+ nullptr, /* no offsets */
false, /* no flush */
err);
@@ -140,7 +140,7 @@ ucnv_cbFromUWriteUChars(UConverterFromUnicodeArgs *args,
newTargetLimit,
source,
sourceLimit,
- NULL,
+ nullptr,
false,
&err2);
@@ -200,12 +200,12 @@ ucnv_cbFromUWriteSub (UConverterFromUnicodeArgs *args,
* and will not recurse.
* At worst we should get a U_BUFFER_OVERFLOW_ERROR.
*/
- const UChar *source = (const UChar *)converter->subChars;
+ const char16_t *source = (const char16_t *)converter->subChars;
ucnv_cbFromUWriteUChars(args, &source, source - length, offsetIndex, err);
return;
}
- if(converter->sharedData->impl->writeSub!=NULL) {
+ if(converter->sharedData->impl->writeSub!=nullptr) {
converter->sharedData->impl->writeSub(args, offsetIndex, err);
}
else if(converter->subChar1!=0 && (uint16_t)converter->invalidUCharBuffer[0]<=(uint16_t)0xffu) {
@@ -226,7 +226,7 @@ ucnv_cbFromUWriteSub (UConverterFromUnicodeArgs *args,
U_CAPI void U_EXPORT2
ucnv_cbToUWriteUChars (UConverterToUnicodeArgs *args,
- const UChar* source,
+ const char16_t* source,
int32_t length,
int32_t offsetIndex,
UErrorCode * err)
@@ -248,7 +248,7 @@ ucnv_cbToUWriteSub (UConverterToUnicodeArgs *args,
int32_t offsetIndex,
UErrorCode * err)
{
- static const UChar kSubstituteChar1 = 0x1A, kSubstituteChar = 0xFFFD;
+ static const char16_t kSubstituteChar1 = 0x1A, kSubstituteChar = 0xFFFD;
/* could optimize this case, just one uchar */
if(args->converter->invalidCharLength == 1 && args->converter->subChar1 != 0) {
diff --git a/Build/source/libs/icu/icu-src/source/common/ucnv_cnv.cpp b/Build/source/libs/icu/icu-src/source/common/ucnv_cnv.cpp
index ea71acf92c7..ffff9429ad9 100644
--- a/Build/source/libs/icu/icu-src/source/common/ucnv_cnv.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ucnv_cnv.cpp
@@ -62,7 +62,7 @@ ucnv_fromUWriteBytes(UConverter *cnv,
int32_t *o;
/* write bytes */
- if(offsets==NULL || (o=*offsets)==NULL) {
+ if(offsets==nullptr || (o=*offsets)==nullptr) {
while(length>0 && t<targetLimit) {
*t++=*bytes++;
--length;
@@ -80,7 +80,7 @@ ucnv_fromUWriteBytes(UConverter *cnv,
/* write overflow */
if(length>0) {
- if(cnv!=NULL) {
+ if(cnv!=nullptr) {
t=(char *)cnv->charErrorBuffer;
cnv->charErrorBufferLength=(int8_t)length;
do {
@@ -93,16 +93,16 @@ ucnv_fromUWriteBytes(UConverter *cnv,
U_CFUNC void
ucnv_toUWriteUChars(UConverter *cnv,
- const UChar *uchars, int32_t length,
- UChar **target, const UChar *targetLimit,
+ const char16_t *uchars, int32_t length,
+ char16_t **target, const char16_t *targetLimit,
int32_t **offsets,
int32_t sourceIndex,
UErrorCode *pErrorCode) {
- UChar *t=*target;
+ char16_t *t=*target;
int32_t *o;
/* write UChars */
- if(offsets==NULL || (o=*offsets)==NULL) {
+ if(offsets==nullptr || (o=*offsets)==nullptr) {
while(length>0 && t<targetLimit) {
*t++=*uchars++;
--length;
@@ -120,7 +120,7 @@ ucnv_toUWriteUChars(UConverter *cnv,
/* write overflow */
if(length>0) {
- if(cnv!=NULL) {
+ if(cnv!=nullptr) {
t=cnv->UCharErrorBuffer;
cnv->UCharErrorBufferLength=(int8_t)length;
do {
@@ -134,30 +134,30 @@ ucnv_toUWriteUChars(UConverter *cnv,
U_CFUNC void
ucnv_toUWriteCodePoint(UConverter *cnv,
UChar32 c,
- UChar **target, const UChar *targetLimit,
+ char16_t **target, const char16_t *targetLimit,
int32_t **offsets,
int32_t sourceIndex,
UErrorCode *pErrorCode) {
- UChar *t;
+ char16_t *t;
int32_t *o;
t=*target;
if(t<targetLimit) {
if(c<=0xffff) {
- *t++=(UChar)c;
+ *t++=(char16_t)c;
c=U_SENTINEL;
} else /* c is a supplementary code point */ {
*t++=U16_LEAD(c);
c=U16_TRAIL(c);
if(t<targetLimit) {
- *t++=(UChar)c;
+ *t++=(char16_t)c;
c=U_SENTINEL;
}
}
/* write offsets */
- if(offsets!=NULL && (o=*offsets)!=NULL) {
+ if(offsets!=nullptr && (o=*offsets)!=nullptr) {
*o++=sourceIndex;
if((*target+1)<t) {
*o++=sourceIndex;
@@ -170,7 +170,7 @@ ucnv_toUWriteCodePoint(UConverter *cnv,
/* write overflow from c */
if(c>=0) {
- if(cnv!=NULL) {
+ if(cnv!=nullptr) {
int8_t i=0;
U16_APPEND_UNSAFE(cnv->UCharErrorBuffer, i, c);
cnv->UCharErrorBufferLength=i;
diff --git a/Build/source/libs/icu/icu-src/source/common/ucnv_ct.cpp b/Build/source/libs/icu/icu-src/source/common/ucnv_ct.cpp
index c12e982b88b..46f30e5ece6 100644
--- a/Build/source/libs/icu/icu-src/source/common/ucnv_ct.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ucnv_ct.cpp
@@ -261,13 +261,13 @@ static COMPOUND_TEXT_CONVERTERS findStateFromEscSeq(const char* source, const ch
static void U_CALLCONV
_CompoundTextOpen(UConverter *cnv, UConverterLoadArgs *pArgs, UErrorCode *errorCode){
cnv->extraInfo = uprv_malloc (sizeof (UConverterDataCompoundText));
- if (cnv->extraInfo != NULL) {
+ if (cnv->extraInfo != nullptr) {
UConverterDataCompoundText *myConverterData = (UConverterDataCompoundText *) cnv->extraInfo;
UConverterNamePieces stackPieces;
UConverterLoadArgs stackArgs=UCNV_LOAD_ARGS_INITIALIZER;
- myConverterData->myConverterArray[COMPOUND_TEXT_SINGLE_0] = NULL;
+ myConverterData->myConverterArray[COMPOUND_TEXT_SINGLE_0] = nullptr;
myConverterData->myConverterArray[COMPOUND_TEXT_SINGLE_1] = ucnv_loadSharedData("icu-internal-compound-s1", &stackPieces, &stackArgs, errorCode);
myConverterData->myConverterArray[COMPOUND_TEXT_SINGLE_2] = ucnv_loadSharedData("icu-internal-compound-s2", &stackPieces, &stackArgs, errorCode);
myConverterData->myConverterArray[COMPOUND_TEXT_SINGLE_3] = ucnv_loadSharedData("icu-internal-compound-s3", &stackPieces, &stackArgs, errorCode);
@@ -306,16 +306,16 @@ _CompoundTextClose(UConverter *converter) {
UConverterDataCompoundText* myConverterData = (UConverterDataCompoundText*)(converter->extraInfo);
int32_t i;
- if (converter->extraInfo != NULL) {
+ if (converter->extraInfo != nullptr) {
/*close the array of converter pointers and free the memory*/
for (i = 0; i < NUM_OF_CONVERTERS; i++) {
- if (myConverterData->myConverterArray[i] != NULL) {
+ if (myConverterData->myConverterArray[i] != nullptr) {
ucnv_unloadSharedDataIfReady(myConverterData->myConverterArray[i]);
}
}
uprv_free(converter->extraInfo);
- converter->extraInfo = NULL;
+ converter->extraInfo = nullptr;
}
}
@@ -336,8 +336,8 @@ UConverter_fromUnicode_CompoundText_OFFSETS(UConverterFromUnicodeArgs* args, UEr
UConverter *cnv = args->converter;
uint8_t *target = (uint8_t *) args->target;
const uint8_t *targetLimit = (const uint8_t *) args->targetLimit;
- const UChar* source = args->source;
- const UChar* sourceLimit = args->sourceLimit;
+ const char16_t* source = args->source;
+ const char16_t* sourceLimit = args->sourceLimit;
/* int32_t* offsets = args->offsets; */
UChar32 sourceChar;
UBool useFallback = cnv->useFallback;
@@ -368,7 +368,7 @@ getTrail:
/*look ahead to find the trail surrogate*/
if(source < sourceLimit) {
/* test the following code unit */
- UChar trail=(UChar) *source;
+ char16_t trail=(char16_t) *source;
if(U16_IS_TRAIL(trail)) {
source++;
sourceChar=U16_GET_SUPPLEMENTARY(sourceChar, trail);
@@ -467,14 +467,14 @@ static void U_CALLCONV
UConverter_toUnicode_CompoundText_OFFSETS(UConverterToUnicodeArgs *args,
UErrorCode* err){
const char *mySource = (char *) args->source;
- UChar *myTarget = args->target;
+ char16_t *myTarget = args->target;
const char *mySourceLimit = args->sourceLimit;
const char *tmpSourceLimit = mySourceLimit;
uint32_t mySourceChar = 0x0000;
COMPOUND_TEXT_CONVERTERS currentState, tmpState;
int32_t sourceOffset = 0;
UConverterDataCompoundText *myConverterData = (UConverterDataCompoundText *) args->converter->extraInfo;
- UConverterSharedData* savedSharedData = NULL;
+ UConverterSharedData* savedSharedData = nullptr;
UConverterToUnicodeArgs subArgs;
int32_t minArgsSize;
@@ -602,8 +602,8 @@ static const UConverterImpl _CompoundTextImpl = {
UCNV_COMPOUND_TEXT,
- NULL,
- NULL,
+ nullptr,
+ nullptr,
_CompoundTextOpen,
_CompoundTextClose,
@@ -613,15 +613,15 @@ static const UConverterImpl _CompoundTextImpl = {
UConverter_toUnicode_CompoundText_OFFSETS,
UConverter_fromUnicode_CompoundText_OFFSETS,
UConverter_fromUnicode_CompoundText_OFFSETS,
- NULL,
+ nullptr,
- NULL,
+ nullptr,
_CompoundTextgetName,
- NULL,
- NULL,
+ nullptr,
+ nullptr,
_CompoundText_GetUnicodeSet,
- NULL,
- NULL
+ nullptr,
+ nullptr
};
static const UConverterStaticData _CompoundTextStaticData = {
diff --git a/Build/source/libs/icu/icu-src/source/common/ucnv_err.cpp b/Build/source/libs/icu/icu-src/source/common/ucnv_err.cpp
index 4210673ef93..761c442632f 100644
--- a/Build/source/libs/icu/icu-src/source/common/ucnv_err.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ucnv_err.cpp
@@ -91,7 +91,7 @@ U_CAPI void U_EXPORT2
UCNV_FROM_U_CALLBACK_STOP (
const void *context,
UConverterFromUnicodeArgs *fromUArgs,
- const UChar* codeUnits,
+ const char16_t* codeUnits,
int32_t length,
UChar32 codePoint,
UConverterCallbackReason reason,
@@ -132,7 +132,7 @@ U_CAPI void U_EXPORT2
UCNV_FROM_U_CALLBACK_SKIP (
const void *context,
UConverterFromUnicodeArgs *fromUArgs,
- const UChar* codeUnits,
+ const char16_t* codeUnits,
int32_t length,
UChar32 codePoint,
UConverterCallbackReason reason,
@@ -150,7 +150,7 @@ UCNV_FROM_U_CALLBACK_SKIP (
*/
*err = U_ZERO_ERROR;
}
- else if (context == NULL || (*((char*)context) == UCNV_PRV_STOP_ON_ILLEGAL && reason == UCNV_UNASSIGNED))
+ else if (context == nullptr || (*((char*)context) == UCNV_PRV_STOP_ON_ILLEGAL && reason == UCNV_UNASSIGNED))
{
*err = U_ZERO_ERROR;
}
@@ -163,7 +163,7 @@ U_CAPI void U_EXPORT2
UCNV_FROM_U_CALLBACK_SUBSTITUTE (
const void *context,
UConverterFromUnicodeArgs *fromArgs,
- const UChar* codeUnits,
+ const char16_t* codeUnits,
int32_t length,
UChar32 codePoint,
UConverterCallbackReason reason,
@@ -180,7 +180,7 @@ UCNV_FROM_U_CALLBACK_SUBSTITUTE (
*/
*err = U_ZERO_ERROR;
}
- else if (context == NULL || (*((char*)context) == UCNV_PRV_STOP_ON_ILLEGAL && reason == UCNV_UNASSIGNED))
+ else if (context == nullptr || (*((char*)context) == UCNV_PRV_STOP_ON_ILLEGAL && reason == UCNV_UNASSIGNED))
{
*err = U_ZERO_ERROR;
ucnv_cbFromUWriteSub(fromArgs, 0, err);
@@ -199,23 +199,23 @@ U_CAPI void U_EXPORT2
UCNV_FROM_U_CALLBACK_ESCAPE (
const void *context,
UConverterFromUnicodeArgs *fromArgs,
- const UChar *codeUnits,
+ const char16_t *codeUnits,
int32_t length,
UChar32 codePoint,
UConverterCallbackReason reason,
UErrorCode * err)
{
- UChar valueString[VALUE_STRING_LENGTH];
+ char16_t valueString[VALUE_STRING_LENGTH];
int32_t valueStringLength = 0;
int32_t i = 0;
- const UChar *myValueSource = NULL;
+ const char16_t *myValueSource = nullptr;
UErrorCode err2 = U_ZERO_ERROR;
- UConverterFromUCallback original = NULL;
+ UConverterFromUCallback original = nullptr;
const void *originalContext;
- UConverterFromUCallback ignoredCallback = NULL;
+ UConverterFromUCallback ignoredCallback = nullptr;
const void *ignoredContext;
if (reason > UCNV_IRREGULAR)
@@ -233,7 +233,7 @@ UCNV_FROM_U_CALLBACK_ESCAPE (
ucnv_setFromUCallBack (fromArgs->converter,
(UConverterFromUCallback) UCNV_FROM_U_CALLBACK_SUBSTITUTE,
- NULL,
+ nullptr,
&original,
&originalContext,
&err2);
@@ -243,12 +243,12 @@ UCNV_FROM_U_CALLBACK_ESCAPE (
*err = err2;
return;
}
- if(context==NULL)
+ if(context==nullptr)
{
while (i < length)
{
- valueString[valueStringLength++] = (UChar) UNICODE_PERCENT_SIGN_CODEPOINT; /* adding % */
- valueString[valueStringLength++] = (UChar) UNICODE_U_CODEPOINT; /* adding U */
+ valueString[valueStringLength++] = (char16_t) UNICODE_PERCENT_SIGN_CODEPOINT; /* adding % */
+ valueString[valueStringLength++] = (char16_t) UNICODE_U_CODEPOINT; /* adding U */
valueStringLength += uprv_itou (valueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, (uint16_t)codeUnits[i++], 16, 4);
}
}
@@ -259,78 +259,78 @@ UCNV_FROM_U_CALLBACK_ESCAPE (
case UCNV_PRV_ESCAPE_JAVA:
while (i < length)
{
- valueString[valueStringLength++] = (UChar) UNICODE_RS_CODEPOINT; /* adding \ */
- valueString[valueStringLength++] = (UChar) UNICODE_U_LOW_CODEPOINT; /* adding u */
+ valueString[valueStringLength++] = (char16_t) UNICODE_RS_CODEPOINT; /* adding \ */
+ valueString[valueStringLength++] = (char16_t) UNICODE_U_LOW_CODEPOINT; /* adding u */
valueStringLength += uprv_itou (valueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, (uint16_t)codeUnits[i++], 16, 4);
}
break;
case UCNV_PRV_ESCAPE_C:
- valueString[valueStringLength++] = (UChar) UNICODE_RS_CODEPOINT; /* adding \ */
+ valueString[valueStringLength++] = (char16_t) UNICODE_RS_CODEPOINT; /* adding \ */
if(length==2){
- valueString[valueStringLength++] = (UChar) UNICODE_U_CODEPOINT; /* adding U */
+ valueString[valueStringLength++] = (char16_t) UNICODE_U_CODEPOINT; /* adding U */
valueStringLength += uprv_itou (valueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, codePoint, 16, 8);
}
else{
- valueString[valueStringLength++] = (UChar) UNICODE_U_LOW_CODEPOINT; /* adding u */
+ valueString[valueStringLength++] = (char16_t) UNICODE_U_LOW_CODEPOINT; /* adding u */
valueStringLength += uprv_itou (valueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, (uint16_t)codeUnits[0], 16, 4);
}
break;
case UCNV_PRV_ESCAPE_XML_DEC:
- valueString[valueStringLength++] = (UChar) UNICODE_AMP_CODEPOINT; /* adding & */
- valueString[valueStringLength++] = (UChar) UNICODE_HASH_CODEPOINT; /* adding # */
+ valueString[valueStringLength++] = (char16_t) UNICODE_AMP_CODEPOINT; /* adding & */
+ valueString[valueStringLength++] = (char16_t) UNICODE_HASH_CODEPOINT; /* adding # */
if(length==2){
valueStringLength += uprv_itou (valueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, codePoint, 10, 0);
}
else{
valueStringLength += uprv_itou (valueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, (uint16_t)codeUnits[0], 10, 0);
}
- valueString[valueStringLength++] = (UChar) UNICODE_SEMICOLON_CODEPOINT; /* adding ; */
+ valueString[valueStringLength++] = (char16_t) UNICODE_SEMICOLON_CODEPOINT; /* adding ; */
break;
case UCNV_PRV_ESCAPE_XML_HEX:
- valueString[valueStringLength++] = (UChar) UNICODE_AMP_CODEPOINT; /* adding & */
- valueString[valueStringLength++] = (UChar) UNICODE_HASH_CODEPOINT; /* adding # */
- valueString[valueStringLength++] = (UChar) UNICODE_X_LOW_CODEPOINT; /* adding x */
+ valueString[valueStringLength++] = (char16_t) UNICODE_AMP_CODEPOINT; /* adding & */
+ valueString[valueStringLength++] = (char16_t) UNICODE_HASH_CODEPOINT; /* adding # */
+ valueString[valueStringLength++] = (char16_t) UNICODE_X_LOW_CODEPOINT; /* adding x */
if(length==2){
valueStringLength += uprv_itou (valueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, codePoint, 16, 0);
}
else{
valueStringLength += uprv_itou (valueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, (uint16_t)codeUnits[0], 16, 0);
}
- valueString[valueStringLength++] = (UChar) UNICODE_SEMICOLON_CODEPOINT; /* adding ; */
+ valueString[valueStringLength++] = (char16_t) UNICODE_SEMICOLON_CODEPOINT; /* adding ; */
break;
case UCNV_PRV_ESCAPE_UNICODE:
- valueString[valueStringLength++] = (UChar) UNICODE_LEFT_CURLY_CODEPOINT; /* adding { */
- valueString[valueStringLength++] = (UChar) UNICODE_U_CODEPOINT; /* adding U */
- valueString[valueStringLength++] = (UChar) UNICODE_PLUS_CODEPOINT; /* adding + */
+ valueString[valueStringLength++] = (char16_t) UNICODE_LEFT_CURLY_CODEPOINT; /* adding { */
+ valueString[valueStringLength++] = (char16_t) UNICODE_U_CODEPOINT; /* adding U */
+ valueString[valueStringLength++] = (char16_t) UNICODE_PLUS_CODEPOINT; /* adding + */
if (length == 2) {
valueStringLength += uprv_itou (valueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, codePoint, 16, 4);
} else {
valueStringLength += uprv_itou (valueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, (uint16_t)codeUnits[0], 16, 4);
}
- valueString[valueStringLength++] = (UChar) UNICODE_RIGHT_CURLY_CODEPOINT; /* adding } */
+ valueString[valueStringLength++] = (char16_t) UNICODE_RIGHT_CURLY_CODEPOINT; /* adding } */
break;
case UCNV_PRV_ESCAPE_CSS2:
- valueString[valueStringLength++] = (UChar) UNICODE_RS_CODEPOINT; /* adding \ */
+ valueString[valueStringLength++] = (char16_t) UNICODE_RS_CODEPOINT; /* adding \ */
valueStringLength += uprv_itou (valueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, codePoint, 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++] = (UChar) UNICODE_SPACE_CODEPOINT;
+ valueString[valueStringLength++] = (char16_t) UNICODE_SPACE_CODEPOINT;
break;
default:
while (i < length)
{
- valueString[valueStringLength++] = (UChar) UNICODE_PERCENT_SIGN_CODEPOINT; /* adding % */
- valueString[valueStringLength++] = (UChar) UNICODE_U_CODEPOINT; /* adding U */
+ valueString[valueStringLength++] = (char16_t) UNICODE_PERCENT_SIGN_CODEPOINT; /* adding % */
+ valueString[valueStringLength++] = (char16_t) UNICODE_U_CODEPOINT; /* adding U */
valueStringLength += uprv_itou (valueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, (uint16_t)codeUnits[i++], 16, 4);
}
}
@@ -373,7 +373,7 @@ UCNV_TO_U_CALLBACK_SKIP (
(void)length;
if (reason <= UCNV_IRREGULAR)
{
- if (context == NULL || (*((char*)context) == UCNV_PRV_STOP_ON_ILLEGAL && reason == UCNV_UNASSIGNED))
+ if (context == nullptr || (*((char*)context) == UCNV_PRV_STOP_ON_ILLEGAL && reason == UCNV_UNASSIGNED))
{
*err = U_ZERO_ERROR;
}
@@ -395,7 +395,7 @@ UCNV_TO_U_CALLBACK_SUBSTITUTE (
(void)length;
if (reason <= UCNV_IRREGULAR)
{
- if (context == NULL || (*((char*)context) == UCNV_PRV_STOP_ON_ILLEGAL && reason == UCNV_UNASSIGNED))
+ if (context == nullptr || (*((char*)context) == UCNV_PRV_STOP_ON_ILLEGAL && reason == UCNV_UNASSIGNED))
{
*err = U_ZERO_ERROR;
ucnv_cbToUWriteSub(toArgs,0,err);
@@ -417,7 +417,7 @@ UCNV_TO_U_CALLBACK_ESCAPE (
UConverterCallbackReason reason,
UErrorCode * err)
{
- UChar uniValueString[VALUE_STRING_LENGTH];
+ char16_t uniValueString[VALUE_STRING_LENGTH];
int32_t valueStringLength = 0;
int32_t i = 0;
@@ -426,12 +426,12 @@ UCNV_TO_U_CALLBACK_ESCAPE (
return;
}
- if(context==NULL)
+ if(context==nullptr)
{
while (i < length)
{
- uniValueString[valueStringLength++] = (UChar) UNICODE_PERCENT_SIGN_CODEPOINT; /* adding % */
- uniValueString[valueStringLength++] = (UChar) UNICODE_X_CODEPOINT; /* adding X */
+ uniValueString[valueStringLength++] = (char16_t) UNICODE_PERCENT_SIGN_CODEPOINT; /* adding % */
+ uniValueString[valueStringLength++] = (char16_t) UNICODE_X_CODEPOINT; /* adding X */
valueStringLength += uprv_itou (uniValueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, (uint8_t) codeUnits[i++], 16, 2);
}
}
@@ -442,36 +442,36 @@ UCNV_TO_U_CALLBACK_ESCAPE (
case UCNV_PRV_ESCAPE_XML_DEC:
while (i < length)
{
- uniValueString[valueStringLength++] = (UChar) UNICODE_AMP_CODEPOINT; /* adding & */
- uniValueString[valueStringLength++] = (UChar) UNICODE_HASH_CODEPOINT; /* adding # */
+ uniValueString[valueStringLength++] = (char16_t) UNICODE_AMP_CODEPOINT; /* adding & */
+ uniValueString[valueStringLength++] = (char16_t) UNICODE_HASH_CODEPOINT; /* adding # */
valueStringLength += uprv_itou (uniValueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, (uint8_t)codeUnits[i++], 10, 0);
- uniValueString[valueStringLength++] = (UChar) UNICODE_SEMICOLON_CODEPOINT; /* adding ; */
+ uniValueString[valueStringLength++] = (char16_t) UNICODE_SEMICOLON_CODEPOINT; /* adding ; */
}
break;
case UCNV_PRV_ESCAPE_XML_HEX:
while (i < length)
{
- uniValueString[valueStringLength++] = (UChar) UNICODE_AMP_CODEPOINT; /* adding & */
- uniValueString[valueStringLength++] = (UChar) UNICODE_HASH_CODEPOINT; /* adding # */
- uniValueString[valueStringLength++] = (UChar) UNICODE_X_LOW_CODEPOINT; /* adding x */
+ uniValueString[valueStringLength++] = (char16_t) UNICODE_AMP_CODEPOINT; /* adding & */
+ uniValueString[valueStringLength++] = (char16_t) UNICODE_HASH_CODEPOINT; /* adding # */
+ uniValueString[valueStringLength++] = (char16_t) UNICODE_X_LOW_CODEPOINT; /* adding x */
valueStringLength += uprv_itou (uniValueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, (uint8_t)codeUnits[i++], 16, 0);
- uniValueString[valueStringLength++] = (UChar) UNICODE_SEMICOLON_CODEPOINT; /* adding ; */
+ uniValueString[valueStringLength++] = (char16_t) UNICODE_SEMICOLON_CODEPOINT; /* adding ; */
}
break;
case UCNV_PRV_ESCAPE_C:
while (i < length)
{
- uniValueString[valueStringLength++] = (UChar) UNICODE_RS_CODEPOINT; /* adding \ */
- uniValueString[valueStringLength++] = (UChar) UNICODE_X_LOW_CODEPOINT; /* adding x */
+ uniValueString[valueStringLength++] = (char16_t) UNICODE_RS_CODEPOINT; /* adding \ */
+ uniValueString[valueStringLength++] = (char16_t) UNICODE_X_LOW_CODEPOINT; /* adding x */
valueStringLength += uprv_itou (uniValueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, (uint8_t)codeUnits[i++], 16, 2);
}
break;
default:
while (i < length)
{
- uniValueString[valueStringLength++] = (UChar) UNICODE_PERCENT_SIGN_CODEPOINT; /* adding % */
- uniValueString[valueStringLength++] = (UChar) UNICODE_X_CODEPOINT; /* adding X */
+ uniValueString[valueStringLength++] = (char16_t) UNICODE_PERCENT_SIGN_CODEPOINT; /* adding % */
+ uniValueString[valueStringLength++] = (char16_t) UNICODE_X_CODEPOINT; /* adding X */
uprv_itou (uniValueString + valueStringLength, VALUE_STRING_LENGTH - valueStringLength, (uint8_t) codeUnits[i++], 16, 2);
valueStringLength += 2;
}
diff --git a/Build/source/libs/icu/icu-src/source/common/ucnv_ext.cpp b/Build/source/libs/icu/icu-src/source/common/ucnv_ext.cpp
index ffc3c93033a..10d00a62c2c 100644
--- a/Build/source/libs/icu/icu-src/source/common/ucnv_ext.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ucnv_ext.cpp
@@ -132,7 +132,7 @@ ucnv_extMatchToU(const int32_t *cx, int8_t sisoState,
int32_t i, j, idx, length, matchLength;
uint8_t b;
- if(cx==NULL || cx[UCNV_EXT_TO_U_LENGTH]<=0) {
+ if(cx==nullptr || cx[UCNV_EXT_TO_U_LENGTH]<=0) {
return 0; /* no extension data, no match */
}
@@ -198,7 +198,7 @@ ucnv_extMatchToU(const int32_t *cx, int8_t sisoState,
}
}
- /* search for the current UChar */
+ /* search for the current char16_t */
value=ucnv_extFindToU(toUSection, length, b);
if(value==0) {
/* no match here, stop with the longest match so far */
@@ -236,7 +236,7 @@ ucnv_extMatchToU(const int32_t *cx, int8_t sisoState,
static inline void
ucnv_extWriteToU(UConverter *cnv, const int32_t *cx,
uint32_t value,
- UChar **target, const UChar *targetLimit,
+ char16_t **target, const char16_t *targetLimit,
int32_t **offsets, int32_t srcIndex,
UErrorCode *pErrorCode) {
/* output the result */
@@ -251,7 +251,7 @@ ucnv_extWriteToU(UConverter *cnv, const int32_t *cx,
/* output a string - with correct data we have resultLength>0 */
ucnv_toUWriteUChars(
cnv,
- UCNV_EXT_ARRAY(cx, UCNV_EXT_TO_U_UCHARS_INDEX, UChar)+
+ UCNV_EXT_ARRAY(cx, UCNV_EXT_TO_U_UCHARS_INDEX, char16_t)+
UCNV_EXT_TO_U_GET_INDEX(value),
UCNV_EXT_TO_U_GET_LENGTH(value),
target, targetLimit,
@@ -279,7 +279,7 @@ U_CFUNC UBool
ucnv_extInitialMatchToU(UConverter *cnv, const int32_t *cx,
int32_t firstLength,
const char **src, const char *srcLimit,
- UChar **target, const UChar *targetLimit,
+ char16_t **target, const char16_t *targetLimit,
int32_t **offsets, int32_t srcIndex,
UBool flush,
UErrorCode *pErrorCode) {
@@ -343,7 +343,7 @@ ucnv_extSimpleMatchToU(const int32_t *cx,
/* try to match */
match=ucnv_extMatchToU(cx, -1,
source, length,
- NULL, 0,
+ nullptr, 0,
&value,
useFallback, true);
if(match==length) {
@@ -459,10 +459,10 @@ extFromUUseMapping(UBool useFallback, uint32_t value, UChar32 firstCP) {
}
/*
- * @return index of the UChar, if found; else <0
+ * @return index of the char16_t, if found; else <0
*/
static inline int32_t
-ucnv_extFindFromU(const UChar *fromUSection, int32_t length, UChar u) {
+ucnv_extFindFromU(const char16_t *fromUSection, int32_t length, char16_t u) {
int32_t i, start, limit;
/* binary search */
@@ -508,7 +508,7 @@ ucnv_extFindFromU(const UChar *fromUSection, int32_t length, UChar u) {
}
/*
- * @param cx pointer to extension data; if NULL, returns 0
+ * @param cx pointer to extension data; if nullptr, 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
@@ -530,21 +530,21 @@ ucnv_extFindFromU(const UChar *fromUSection, int32_t length, UChar u) {
static int32_t
ucnv_extMatchFromU(const int32_t *cx,
UChar32 firstCP,
- const UChar *pre, int32_t preLength,
- const UChar *src, int32_t srcLength,
+ const char16_t *pre, int32_t preLength,
+ const char16_t *src, int32_t srcLength,
uint32_t *pMatchValue,
UBool useFallback, UBool flush) {
const uint16_t *stage12, *stage3;
const uint32_t *stage3b;
- const UChar *fromUTableUChars, *fromUSectionUChars;
+ const char16_t *fromUTableUChars, *fromUSectionUChars;
const uint32_t *fromUTableValues, *fromUSectionValues;
uint32_t value, matchValue;
int32_t i, j, idx, length, matchLength;
- UChar c;
+ char16_t c;
- if(cx==NULL) {
+ if(cx==nullptr) {
return 0; /* no extension data, no match */
}
@@ -575,7 +575,7 @@ ucnv_extMatchFromU(const int32_t *cx,
idx=(int32_t)UCNV_EXT_FROM_U_GET_PARTIAL_INDEX(value);
/* initialize */
- fromUTableUChars=UCNV_EXT_ARRAY(cx, UCNV_EXT_FROM_U_UCHARS_INDEX, UChar);
+ fromUTableUChars=UCNV_EXT_ARRAY(cx, UCNV_EXT_FROM_U_UCHARS_INDEX, char16_t);
fromUTableValues=UCNV_EXT_ARRAY(cx, UCNV_EXT_FROM_U_VALUES_INDEX, uint32_t);
matchValue=0;
@@ -618,7 +618,7 @@ ucnv_extMatchFromU(const int32_t *cx,
}
}
- /* search for the current UChar */
+ /* search for the current char16_t */
idx=ucnv_extFindFromU(fromUSectionUChars, length, c);
if(idx<0) {
/* no match here, stop with the longest match so far */
@@ -749,7 +749,7 @@ ucnv_extWriteFromU(UConverter *cnv, const int32_t *cx,
U_CFUNC UBool
ucnv_extInitialMatchFromU(UConverter *cnv, const int32_t *cx,
UChar32 cp,
- const UChar **src, const UChar *srcLimit,
+ const char16_t **src, const char16_t *srcLimit,
char **target, const char *targetLimit,
int32_t **offsets, int32_t srcIndex,
UBool flush,
@@ -759,7 +759,7 @@ ucnv_extInitialMatchFromU(UConverter *cnv, const int32_t *cx,
/* try to match */
match=ucnv_extMatchFromU(cx, cp,
- NULL, 0,
+ nullptr, 0,
*src, (int32_t)(srcLimit-*src),
&value,
cnv->useFallback, flush);
@@ -781,7 +781,7 @@ ucnv_extInitialMatchFromU(UConverter *cnv, const int32_t *cx,
return true;
} else if(match<0) {
/* save state for partial match */
- const UChar *s;
+ const char16_t *s;
int32_t j;
/* copy the first code point */
@@ -819,8 +819,8 @@ ucnv_extSimpleMatchFromU(const int32_t *cx,
/* try to match */
match=ucnv_extMatchFromU(cx,
cp,
- NULL, 0,
- NULL, 0,
+ nullptr, 0,
+ nullptr, 0,
&value,
useFallback, true);
if(match>=2) {
@@ -901,7 +901,7 @@ ucnv_extContinueMatchFromU(UConverter *cnv,
pErrorCode);
} else if(match<0) {
/* save state for partial match */
- const UChar *s;
+ const char16_t *s;
int32_t j;
/* just _append_ the newly consumed input to preFromU[] */
@@ -981,16 +981,16 @@ ucnv_extGetUnicodeSetString(const UConverterSharedData *sharedData,
UConverterUnicodeSet which,
int32_t minLength,
UChar32 firstCP,
- UChar s[UCNV_EXT_MAX_UCHARS], int32_t length,
+ char16_t s[UCNV_EXT_MAX_UCHARS], int32_t length,
int32_t sectionIndex,
UErrorCode *pErrorCode) {
- const UChar *fromUSectionUChars;
+ const char16_t *fromUSectionUChars;
const uint32_t *fromUSectionValues;
uint32_t value;
int32_t i, count;
- fromUSectionUChars=UCNV_EXT_ARRAY(cx, UCNV_EXT_FROM_U_UCHARS_INDEX, UChar)+sectionIndex;
+ fromUSectionUChars=UCNV_EXT_ARRAY(cx, UCNV_EXT_FROM_U_UCHARS_INDEX, char16_t)+sectionIndex;
fromUSectionValues=UCNV_EXT_ARRAY(cx, UCNV_EXT_FROM_U_VALUES_INDEX, uint32_t)+sectionIndex;
/* read first pair of the section */
@@ -1039,12 +1039,12 @@ ucnv_extGetUnicodeSet(const UConverterSharedData *sharedData,
uint32_t value;
int32_t st1, stage1Length, st2, st3, minLength;
- UChar s[UCNV_EXT_MAX_UCHARS];
+ char16_t s[UCNV_EXT_MAX_UCHARS];
UChar32 c;
int32_t length;
cx=sharedData->mbcs.extIndexes;
- if(cx==NULL) {
+ if(cx==nullptr) {
return;
}
diff --git a/Build/source/libs/icu/icu-src/source/common/ucnv_io.cpp b/Build/source/libs/icu/icu-src/source/common/ucnv_io.cpp
index c9d20cb941b..48bb5be42bd 100644
--- a/Build/source/libs/icu/icu-src/source/common/ucnv_io.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ucnv_io.cpp
@@ -174,7 +174,7 @@ typedef struct UAliasContext {
static const char DATA_NAME[] = "cnvalias";
static const char DATA_TYPE[] = "icu";
-static UDataMemory *gAliasData=NULL;
+static UDataMemory *gAliasData=nullptr;
static icu::UInitOnce gAliasDataInitOnce {};
enum {
@@ -216,11 +216,11 @@ isAcceptable(void * /*context*/,
pInfo->formatVersion[0]==3);
}
-static UBool U_CALLCONV ucnv_io_cleanup(void)
+static UBool U_CALLCONV ucnv_io_cleanup()
{
if (gAliasData) {
udata_close(gAliasData);
- gAliasData = NULL;
+ gAliasData = nullptr;
}
gAliasDataInitOnce.reset();
@@ -238,8 +238,8 @@ static void U_CALLCONV initAliasData(UErrorCode &errCode) {
ucln_common_registerCleanup(UCLN_COMMON_UCNV_IO, ucnv_io_cleanup);
- U_ASSERT(gAliasData == NULL);
- data = udata_openChoice(NULL, DATA_TYPE, DATA_NAME, isAcceptable, NULL, &errCode);
+ U_ASSERT(gAliasData == nullptr);
+ data = udata_openChoice(nullptr, DATA_TYPE, DATA_NAME, isAcceptable, nullptr, &errCode);
if(U_FAILURE(errCode)) {
return;
}
@@ -317,7 +317,7 @@ haveAliasData(UErrorCode *pErrorCode) {
static inline UBool
isAlias(const char *alias, UErrorCode *pErrorCode) {
- if(alias==NULL) {
+ if(alias==nullptr) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return false;
}
@@ -615,7 +615,7 @@ findConverter(const char *alias, UBool *containsOption, UErrorCode *pErrorCode)
/*
* Is this alias in this list?
- * alias and listOffset should be non-NULL.
+ * alias and listOffset should be non-nullptr.
*/
static inline UBool
isAliasInList(const char *alias, uint32_t listOffset) {
@@ -650,7 +650,7 @@ findTaggedAliasListsOffset(const char *alias, const char *standard, UErrorCode *
uint32_t tagNum = getTagNumber(standard);
/* Make a quick guess. Hopefully they used a TR22 canonical alias. */
- convNum = findConverter(alias, NULL, &myErr);
+ convNum = findConverter(alias, nullptr, &myErr);
if (myErr != U_ZERO_ERROR) {
*pErrorCode = myErr;
}
@@ -701,7 +701,7 @@ findTaggedConverterNum(const char *alias, const char *standard, UErrorCode *pErr
uint32_t tagNum = getTagNumber(standard);
/* Make a quick guess. Hopefully they used a TR22 canonical alias. */
- convNum = findConverter(alias, NULL, &myErr);
+ convNum = findConverter(alias, nullptr, &myErr);
if (myErr != U_ZERO_ERROR) {
*pErrorCode = myErr;
}
@@ -762,7 +762,7 @@ ucnv_io_getConverterName(const char *alias, UBool *containsOption, UErrorCode *p
}
}
- return NULL;
+ return nullptr;
}
U_CDECL_BEGIN
@@ -804,7 +804,7 @@ ucnv_io_nextStandardAliases(UEnumeration *enumerator,
if (resultLength) {
*resultLength = 0;
}
- return NULL;
+ return nullptr;
}
static void U_CALLCONV
@@ -822,8 +822,8 @@ U_CDECL_END
/* Enumerate the aliases for the specified converter and standard tag */
static const UEnumeration gEnumAliases = {
- NULL,
- NULL,
+ nullptr,
+ nullptr,
ucnv_io_closeUEnumeration,
ucnv_io_countStandardAliases,
uenum_unextDefault,
@@ -836,7 +836,7 @@ ucnv_openStandardNames(const char *convName,
const char *standard,
UErrorCode *pErrorCode)
{
- UEnumeration *myEnum = NULL;
+ UEnumeration *myEnum = nullptr;
if (haveAliasData(pErrorCode) && isAlias(convName, pErrorCode)) {
uint32_t listOffset = findTaggedAliasListsOffset(convName, standard, pErrorCode);
@@ -847,16 +847,16 @@ ucnv_openStandardNames(const char *convName,
UAliasContext *myContext;
myEnum = static_cast<UEnumeration *>(uprv_malloc(sizeof(UEnumeration)));
- if (myEnum == NULL) {
+ if (myEnum == nullptr) {
*pErrorCode = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
uprv_memcpy(myEnum, &gEnumAliases, sizeof(UEnumeration));
myContext = static_cast<UAliasContext *>(uprv_malloc(sizeof(UAliasContext)));
- if (myContext == NULL) {
+ if (myContext == nullptr) {
*pErrorCode = U_MEMORY_ALLOCATION_ERROR;
uprv_free(myEnum);
- return NULL;
+ return nullptr;
}
myContext->listOffset = listOffset;
myContext->listIdx = 0;
@@ -870,7 +870,7 @@ ucnv_openStandardNames(const char *convName,
static uint16_t
ucnv_io_countAliases(const char *alias, UErrorCode *pErrorCode) {
if(haveAliasData(pErrorCode) && isAlias(alias, pErrorCode)) {
- uint32_t convNum = findConverter(alias, NULL, pErrorCode);
+ uint32_t convNum = findConverter(alias, nullptr, pErrorCode);
if (convNum < gMainTable.converterListSize) {
/* tagListNum - 1 is the ALL tag */
int32_t listOffset = gMainTable.taggedAliasArray[(gMainTable.tagListSize - 1)*gMainTable.converterListSize + convNum];
@@ -889,7 +889,7 @@ static uint16_t
ucnv_io_getAliases(const char *alias, uint16_t start, const char **aliases, UErrorCode *pErrorCode) {
if(haveAliasData(pErrorCode) && isAlias(alias, pErrorCode)) {
uint32_t currAlias;
- uint32_t convNum = findConverter(alias, NULL, pErrorCode);
+ uint32_t convNum = findConverter(alias, nullptr, pErrorCode);
if (convNum < gMainTable.converterListSize) {
/* tagListNum - 1 is the ALL tag */
int32_t listOffset = gMainTable.taggedAliasArray[(gMainTable.tagListSize - 1)*gMainTable.converterListSize + convNum];
@@ -913,7 +913,7 @@ ucnv_io_getAliases(const char *alias, uint16_t start, const char **aliases, UErr
static const char *
ucnv_io_getAlias(const char *alias, uint16_t n, UErrorCode *pErrorCode) {
if(haveAliasData(pErrorCode) && isAlias(alias, pErrorCode)) {
- uint32_t convNum = findConverter(alias, NULL, pErrorCode);
+ uint32_t convNum = findConverter(alias, nullptr, pErrorCode);
if (convNum < gMainTable.converterListSize) {
/* tagListNum - 1 is the ALL tag */
int32_t listOffset = gMainTable.taggedAliasArray[(gMainTable.tagListSize - 1)*gMainTable.converterListSize + convNum];
@@ -932,7 +932,7 @@ ucnv_io_getAlias(const char *alias, uint16_t n, UErrorCode *pErrorCode) {
}
/* else converter not found */
}
- return NULL;
+ return nullptr;
}
static uint16_t
@@ -954,7 +954,7 @@ ucnv_getStandard(uint16_t n, UErrorCode *pErrorCode) {
*pErrorCode = U_INDEX_OUTOFBOUNDS_ERROR;
}
- return NULL;
+ return nullptr;
}
U_CAPI const char * U_EXPORT2
@@ -974,7 +974,7 @@ ucnv_getStandardName(const char *alias, const char *standard, UErrorCode *pError
}
}
- return NULL;
+ return nullptr;
}
U_CAPI uint16_t U_EXPORT2
@@ -997,7 +997,7 @@ ucnv_getAliases(const char *alias, const char **aliases, UErrorCode *pErrorCode)
}
U_CAPI uint16_t U_EXPORT2
-ucnv_countStandards(void)
+ucnv_countStandards()
{
UErrorCode err = U_ZERO_ERROR;
return ucnv_io_countStandards(&err);
@@ -1013,7 +1013,7 @@ ucnv_getCanonicalName(const char *alias, const char *standard, UErrorCode *pErro
}
}
- return NULL;
+ return nullptr;
}
U_CDECL_BEGIN
@@ -1042,7 +1042,7 @@ ucnv_io_nextAllConverters(UEnumeration *enumerator,
if (resultLength) {
*resultLength = 0;
}
- return NULL;
+ return nullptr;
}
static void U_CALLCONV
@@ -1051,8 +1051,8 @@ ucnv_io_resetAllConverters(UEnumeration *enumerator, UErrorCode * /*pErrorCode*/
}
U_CDECL_END
static const UEnumeration gEnumAllConverters = {
- NULL,
- NULL,
+ nullptr,
+ nullptr,
ucnv_io_closeUEnumeration,
ucnv_io_countAllConverters,
uenum_unextDefault,
@@ -1062,21 +1062,21 @@ static const UEnumeration gEnumAllConverters = {
U_CAPI UEnumeration * U_EXPORT2
ucnv_openAllNames(UErrorCode *pErrorCode) {
- UEnumeration *myEnum = NULL;
+ UEnumeration *myEnum = nullptr;
if (haveAliasData(pErrorCode)) {
uint16_t *myContext;
myEnum = static_cast<UEnumeration *>(uprv_malloc(sizeof(UEnumeration)));
- if (myEnum == NULL) {
+ if (myEnum == nullptr) {
*pErrorCode = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
uprv_memcpy(myEnum, &gEnumAllConverters, sizeof(UEnumeration));
myContext = static_cast<uint16_t *>(uprv_malloc(sizeof(uint16_t)));
- if (myContext == NULL) {
+ if (myContext == nullptr) {
*pErrorCode = U_MEMORY_ALLOCATION_ERROR;
uprv_free(myEnum);
- return NULL;
+ return nullptr;
}
*myContext = 0;
myEnum->context = myContext;
@@ -1153,7 +1153,7 @@ ucnv_swapAliases(const UDataSwapper *ds,
/* udata_swapDataHeader checks the arguments */
headerSize=udata_swapDataHeader(ds, inData, length, outData, pErrorCode);
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return 0;
}
@@ -1251,7 +1251,7 @@ ucnv_swapAliases(const UDataSwapper *ds,
tempTable.resort=resort;
} else {
tempTable.rows=(TempRow *)uprv_malloc(count*sizeof(TempRow)+count*2);
- if(tempTable.rows==NULL) {
+ if(tempTable.rows==nullptr) {
udata_printError(ds, "ucnv_swapAliases(): unable to allocate memory for sorting tables (max length: %u)\n",
count);
*pErrorCode=U_MEMORY_ALLOCATION_ERROR;
diff --git a/Build/source/libs/icu/icu-src/source/common/ucnv_lmb.cpp b/Build/source/libs/icu/icu-src/source/common/ucnv_lmb.cpp
index 78b8e407006..ab14a119efb 100644
--- a/Build/source/libs/icu/icu-src/source/common/ucnv_lmb.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ucnv_lmb.cpp
@@ -242,15 +242,15 @@ static const char * const OptGroupByteToCPName[ULMBCS_GRP_LAST + 1] = {
/* 0x0004 */ "windows-1256",
/* 0x0005 */ "windows-1251",
/* 0x0006 */ "ibm-852",
- /* 0x0007 */ NULL, /* Unused */
+ /* 0x0007 */ nullptr, /* Unused */
/* 0x0008 */ "windows-1254",
- /* 0x0009 */ NULL, /* Control char HT */
- /* 0x000A */ NULL, /* Control char LF */
+ /* 0x0009 */ nullptr, /* Control char HT */
+ /* 0x000A */ nullptr, /* 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 */
+ /* 0x000C */ nullptr, /* Unused */
+ /* 0x000D */ nullptr, /* Control char CR */
+ /* 0x000E */ nullptr, /* Unused */
+ /* 0x000F */ nullptr, /* Control chars: 0x0F20 + C0/C1 character: algorithmic */
/* 0x0010 */ "windows-932",
/* 0x0011 */ "windows-949",
/* 0x0012 */ "windows-950",
@@ -298,8 +298,8 @@ ambiguous mappings: */
static const struct _UniLMBCSGrpMap
{
- const UChar uniStartRange;
- const UChar uniEndRange;
+ const char16_t uniStartRange;
+ const char16_t uniEndRange;
const ulmbcs_byte_t GrpType;
} UniLMBCSGrpMap[]
=
@@ -445,7 +445,7 @@ static const struct _UniLMBCSGrpMap
};
static ulmbcs_byte_t
-FindLMBCSUniRange(UChar uniChar)
+FindLMBCSUniRange(char16_t uniChar)
{
const struct _UniLMBCSGrpMap * pTable = UniLMBCSGrpMap;
@@ -530,7 +530,7 @@ static const struct _LocaleLMBCSGrpMap
/* {"vi", ULMBCS_GRP_L1}, */
{"zhTW", ULMBCS_GRP_TW},
{"zh", ULMBCS_GRP_CN},
- {NULL, ULMBCS_GRP_L1}
+ {nullptr, ULMBCS_GRP_L1}
};
@@ -589,22 +589,22 @@ U_CDECL_END
#define DECLARE_LMBCS_DATA(n) \
static const UConverterImpl _LMBCSImpl##n={\
UCNV_LMBCS_##n,\
- NULL,NULL,\
+ nullptr,nullptr,\
_LMBCSOpen##n,\
_LMBCSClose,\
- NULL,\
+ nullptr,\
_LMBCSToUnicodeWithOffsets,\
_LMBCSToUnicodeWithOffsets,\
_LMBCSFromUnicode,\
_LMBCSFromUnicode,\
- NULL,\
- NULL,\
- NULL,\
- NULL,\
+ nullptr,\
+ nullptr,\
+ nullptr,\
+ nullptr,\
_LMBCSSafeClone,\
ucnv_getCompleteUnicodeSet,\
- NULL,\
- NULL\
+ nullptr,\
+ nullptr\
};\
static const UConverterStaticData _LMBCSStaticData##n={\
sizeof(UConverterStaticData),\
@@ -635,7 +635,7 @@ _LMBCSOpenWorker(UConverter* _this,
{
UConverterDataLMBCS * extraInfo = (UConverterDataLMBCS*)uprv_malloc (sizeof (UConverterDataLMBCS));
_this->extraInfo = extraInfo;
- if(extraInfo != NULL)
+ if(extraInfo != nullptr)
{
UConverterNamePieces stackPieces;
UConverterLoadArgs stackArgs= UCNV_LOAD_ARGS_INITIALIZER;
@@ -647,7 +647,7 @@ _LMBCSOpenWorker(UConverter* _this,
for (i=0; i <= ULMBCS_GRP_LAST && U_SUCCESS(*err); i++)
{
- if(OptGroupByteToCPName[i] != NULL) {
+ if(OptGroupByteToCPName[i] != nullptr) {
extraInfo->OptGrpConverter[i] = ucnv_loadSharedData(OptGroupByteToCPName[i], &stackPieces, &stackArgs, err);
}
}
@@ -669,19 +669,19 @@ U_CDECL_BEGIN
static void U_CALLCONV
_LMBCSClose(UConverter * _this)
{
- if (_this->extraInfo != NULL)
+ if (_this->extraInfo != nullptr)
{
ulmbcs_byte_t Ix;
UConverterDataLMBCS * extraInfo = (UConverterDataLMBCS *) _this->extraInfo;
for (Ix=0; Ix <= ULMBCS_GRP_LAST; Ix++)
{
- if (extraInfo->OptGrpConverter[Ix] != NULL)
+ if (extraInfo->OptGrpConverter[Ix] != nullptr)
ucnv_unloadSharedDataIfReady(extraInfo->OptGrpConverter[Ix]);
}
if (!_this->isExtraLocal) {
uprv_free (_this->extraInfo);
- _this->extraInfo = NULL;
+ _this->extraInfo = nullptr;
}
}
}
@@ -703,7 +703,7 @@ _LMBCSSafeClone(const UConverter *cnv,
if(*pBufferSize<=0) {
*pBufferSize=(int32_t)sizeof(LMBCSClone);
- return NULL;
+ return nullptr;
}
extraInfo=(UConverterDataLMBCS *)cnv->extraInfo;
@@ -715,7 +715,7 @@ _LMBCSSafeClone(const UConverter *cnv,
/* share the subconverters */
for(i = 0; i <= ULMBCS_GRP_LAST; ++i) {
- if(extraInfo->OptGrpConverter[i] != NULL) {
+ if(extraInfo->OptGrpConverter[i] != nullptr) {
ucnv_incrementRefCount(extraInfo->OptGrpConverter[i]);
}
}
@@ -748,7 +748,7 @@ LMBCSConversionWorker (
UConverterDataLMBCS * extraInfo, /* subconverters, opt & locale groups */
ulmbcs_byte_t group, /* The group to try */
ulmbcs_byte_t * pStartLMBCS, /* where to put the results */
- UChar * pUniChar, /* The input unicode character */
+ char16_t * pUniChar, /* The input unicode character */
ulmbcs_byte_t * lastConverterIndex, /* output: track last successful group used */
UBool * groups_tried /* output: track any unsuccessful groups */
)
@@ -824,7 +824,7 @@ LMBCSConversionWorker (
know we are writing LMBCS using the Unicode group
*/
static size_t
-LMBCSConvertUni(ulmbcs_byte_t * pLMBCS, UChar uniChar)
+LMBCSConvertUni(ulmbcs_byte_t * pLMBCS, char16_t uniChar)
{
/* encode into LMBCS Unicode range */
uint8_t LowCh = (uint8_t)(uniChar & 0x00FF);
@@ -853,7 +853,7 @@ _LMBCSFromUnicode(UConverterFromUnicodeArgs* args,
UErrorCode* err)
{
ulmbcs_byte_t lastConverterIndex = 0;
- UChar uniChar;
+ char16_t uniChar;
ulmbcs_byte_t LMBCS[ULMBCS_CHARSIZE_MAX];
ulmbcs_byte_t * pLMBCS;
int32_t bytes_written;
@@ -1085,7 +1085,7 @@ _LMBCSFromUnicode(UConverterFromUnicodeArgs* args,
/* A function to call when we are looking at the Unicode group byte in LMBCS */
-static UChar
+static char16_t
GetUniFromLMBCSUni(char const ** ppLMBCSin) /* Called with LMBCS-style Unicode byte stream */
{
uint8_t HighCh = *(*ppLMBCSin)++; /* Big-endian Unicode in LMBCS compatibility group*/
@@ -1096,7 +1096,7 @@ GetUniFromLMBCSUni(char const ** ppLMBCSin) /* Called with LMBCS-style Unicode
HighCh = LowCh;
LowCh = 0; /* zero-byte in LSB special character */
}
- return (UChar)((HighCh << 8) | LowCh);
+ return (char16_t)((HighCh << 8) | LowCh);
}
@@ -1177,7 +1177,7 @@ _LMBCSGetNextUCharWorker(UConverterToUnicodeArgs* args,
{
group = CurByte; /* group byte is in the source */
extraInfo = (UConverterDataLMBCS *) args->converter->extraInfo;
- if (group > ULMBCS_GRP_LAST || (cnv = extraInfo->OptGrpConverter[group]) == NULL)
+ if (group > ULMBCS_GRP_LAST || (cnv = extraInfo->OptGrpConverter[group]) == nullptr)
{
/* this is not a valid group byte - no converter*/
*err = U_INVALID_CHAR_FOUND;
@@ -1264,10 +1264,10 @@ _LMBCSToUnicodeWithOffsets(UConverterToUnicodeArgs* args,
UErrorCode* err)
{
char LMBCS [ULMBCS_CHARSIZE_MAX];
- UChar uniChar; /* one output UNICODE char */
+ char16_t uniChar; /* one output UNICODE char */
const char * saveSource; /* beginning of current code point */
const char * pStartLMBCS = args->source; /* beginning of whole string */
- const char * errSource = NULL; /* pointer to actual input in case an error occurs */
+ const char * errSource = nullptr; /* pointer to actual input in case an error occurs */
int8_t savebytes = 0;
/* Process from source to limit, or until error */
@@ -1292,7 +1292,7 @@ _LMBCSToUnicodeWithOffsets(UConverterToUnicodeArgs* args,
args->source = errSource = LMBCS;
args->sourceLimit = LMBCS+size_old+size_new;
savebytes = (int8_t)(size_old+size_new);
- uniChar = (UChar) _LMBCSGetNextUCharWorker(args, err);
+ uniChar = (char16_t) _LMBCSGetNextUCharWorker(args, err);
args->source = saveSource + ((args->source - LMBCS) - size_old);
args->sourceLimit = saveSourceLimit;
@@ -1314,7 +1314,7 @@ _LMBCSToUnicodeWithOffsets(UConverterToUnicodeArgs* args,
else
{
errSource = saveSource;
- uniChar = (UChar) _LMBCSGetNextUCharWorker(args, err);
+ uniChar = (char16_t) _LMBCSGetNextUCharWorker(args, err);
savebytes = (int8_t)(args->source - saveSource);
}
if (U_SUCCESS(*err))
diff --git a/Build/source/libs/icu/icu-src/source/common/ucnv_set.cpp b/Build/source/libs/icu/icu-src/source/common/ucnv_set.cpp
index 926cee0de81..872d8bc0662 100644
--- a/Build/source/libs/icu/icu-src/source/common/ucnv_set.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ucnv_set.cpp
@@ -34,23 +34,23 @@ ucnv_getUnicodeSet(const UConverter *cnv,
UConverterUnicodeSet whichSet,
UErrorCode *pErrorCode) {
/* argument checking */
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return;
}
- if(cnv==NULL || setFillIn==NULL || whichSet<UCNV_ROUNDTRIP_SET || UCNV_SET_COUNT<=whichSet) {
+ if(cnv==nullptr || setFillIn==nullptr || whichSet<UCNV_ROUNDTRIP_SET || UCNV_SET_COUNT<=whichSet) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return;
}
/* does this converter support this function? */
- if(cnv->sharedData->impl->getUnicodeSet==NULL) {
+ if(cnv->sharedData->impl->getUnicodeSet==nullptr) {
*pErrorCode=U_UNSUPPORTED_ERROR;
return;
}
{
USetAdder sa={
- NULL,
+ nullptr,
uset_add,
uset_addRange,
uset_addString,
diff --git a/Build/source/libs/icu/icu-src/source/common/ucnv_u16.cpp b/Build/source/libs/icu/icu-src/source/common/ucnv_u16.cpp
index bebdede4c44..c3bcfef50cb 100644
--- a/Build/source/libs/icu/icu-src/source/common/ucnv_u16.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ucnv_u16.cpp
@@ -52,12 +52,12 @@ static void U_CALLCONV
_UTF16BEFromUnicodeWithOffsets(UConverterFromUnicodeArgs *pArgs,
UErrorCode *pErrorCode) {
UConverter *cnv;
- const UChar *source;
+ const char16_t *source;
char *target;
int32_t *offsets;
uint32_t targetCapacity, length, sourceIndex;
- UChar c, trail;
+ char16_t c, trail;
char overflow[4];
source=pArgs->source;
@@ -92,7 +92,7 @@ _UTF16BEFromUnicodeWithOffsets(UConverterFromUnicodeArgs *pArgs,
/* c!=0 indicates in several places outside the main loops that a surrogate was found */
- if((c=(UChar)cnv->fromUChar32)!=0 && U16_IS_TRAIL(trail=*source) && targetCapacity>=4) {
+ if((c=(char16_t)cnv->fromUChar32)!=0 && U16_IS_TRAIL(trail=*source) && targetCapacity>=4) {
/* the last buffer ended with a lead surrogate, output the surrogate pair */
++source;
--length;
@@ -102,7 +102,7 @@ _UTF16BEFromUnicodeWithOffsets(UConverterFromUnicodeArgs *pArgs,
target[3]=(uint8_t)trail;
target+=4;
targetCapacity-=4;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=-1;
*offsets++=-1;
*offsets++=-1;
@@ -123,7 +123,7 @@ _UTF16BEFromUnicodeWithOffsets(UConverterFromUnicodeArgs *pArgs,
count>>=1;
length-=count;
- if(offsets==NULL) {
+ if(offsets==nullptr) {
while(count>0) {
c=*source++;
if(U16_IS_SINGLE(c)) {
@@ -257,11 +257,11 @@ _UTF16BEToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
UErrorCode *pErrorCode) {
UConverter *cnv;
const uint8_t *source;
- UChar *target;
+ char16_t *target;
int32_t *offsets;
uint32_t targetCapacity, length, count, sourceIndex;
- UChar c, trail;
+ char16_t c, trail;
if(pArgs->converter->mode<8) {
_UTF16ToUnicodeWithOffsets(pArgs, pErrorCode);
@@ -287,7 +287,7 @@ _UTF16BEToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
sourceIndex=0;
c=0;
- /* complete a partial UChar or pair from the last call */
+ /* complete a partial char16_t or pair from the last call */
if(cnv->toUnicodeStatus!=0) {
/*
* special case: single byte from a previous buffer,
@@ -306,11 +306,11 @@ _UTF16BEToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
++sourceIndex;
--length;
if(count==2) {
- c=((UChar)p[0]<<8)|p[1];
+ c=((char16_t)p[0]<<8)|p[1];
if(U16_IS_SINGLE(c)) {
/* output the BMP code point */
*target++=c;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=-1;
}
--targetCapacity;
@@ -325,14 +325,14 @@ _UTF16BEToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
break;
}
} else if(count==4) {
- c=((UChar)p[0]<<8)|p[1];
- trail=((UChar)p[2]<<8)|p[3];
+ c=((char16_t)p[0]<<8)|p[1];
+ trail=((char16_t)p[2]<<8)|p[3];
if(U16_IS_TRAIL(trail)) {
/* output the surrogate pair */
*target++=c;
if(targetCapacity>=2) {
*target++=trail;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=-1;
*offsets++=-1;
}
@@ -384,14 +384,14 @@ _UTF16BEToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
length-=count;
count>>=1;
targetCapacity-=count;
- if(offsets==NULL) {
+ if(offsets==nullptr) {
do {
- c=((UChar)source[0]<<8)|source[1];
+ c=((char16_t)source[0]<<8)|source[1];
source+=2;
if(U16_IS_SINGLE(c)) {
*target++=c;
} else if(U16_IS_SURROGATE_LEAD(c) && count>=2 &&
- U16_IS_TRAIL(trail=((UChar)source[0]<<8)|source[1])
+ U16_IS_TRAIL(trail=((char16_t)source[0]<<8)|source[1])
) {
source+=2;
--count;
@@ -403,14 +403,14 @@ _UTF16BEToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
} while(--count>0);
} else {
do {
- c=((UChar)source[0]<<8)|source[1];
+ c=((char16_t)source[0]<<8)|source[1];
source+=2;
if(U16_IS_SINGLE(c)) {
*target++=c;
*offsets++=sourceIndex;
sourceIndex+=2;
} else if(U16_IS_SURROGATE_LEAD(c) && count>=2 &&
- U16_IS_TRAIL(trail=((UChar)source[0]<<8)|source[1])
+ U16_IS_TRAIL(trail=((char16_t)source[0]<<8)|source[1])
) {
source+=2;
--count;
@@ -447,12 +447,12 @@ _UTF16BEToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
if(U16_IS_SURROGATE_LEAD(c)) {
if(length>=2) {
- if(U16_IS_TRAIL(trail=((UChar)source[0]<<8)|source[1])) {
+ if(U16_IS_TRAIL(trail=((char16_t)source[0]<<8)|source[1])) {
/* output the surrogate pair, will overflow (see conditions comment above) */
source+=2;
length-=2;
*target++=c;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
}
cnv->UCharErrorBuffer[0]=trail;
@@ -509,7 +509,7 @@ _UTF16BEGetNextUChar(UConverterToUnicodeArgs *pArgs, UErrorCode *err) {
}
if(s+2>sourceLimit) {
- /* only one byte: truncated UChar */
+ /* only one byte: truncated char16_t */
pArgs->converter->toUBytes[0]=*s++;
pArgs->converter->toULength=1;
pArgs->source=(const char *)s;
@@ -517,7 +517,7 @@ _UTF16BEGetNextUChar(UConverterToUnicodeArgs *pArgs, UErrorCode *err) {
return 0xffff;
}
- /* get one UChar */
+ /* get one char16_t */
c=((UChar32)*s<<8)|s[1];
s+=2;
@@ -525,10 +525,10 @@ _UTF16BEGetNextUChar(UConverterToUnicodeArgs *pArgs, UErrorCode *err) {
if(U_IS_SURROGATE(c)) {
if(U16_IS_SURROGATE_LEAD(c)) {
if(s+2<=sourceLimit) {
- UChar trail;
+ char16_t trail;
- /* get a second UChar and see if it is a trail surrogate */
- trail=((UChar)*s<<8)|s[1];
+ /* get a second char16_t and see if it is a trail surrogate */
+ trail=((char16_t)*s<<8)|s[1];
if(U16_IS_TRAIL(trail)) {
c=U16_GET_SUPPLEMENTARY(c, trail);
s+=2;
@@ -610,11 +610,11 @@ U_CDECL_END
static const UConverterImpl _UTF16BEImpl={
UCNV_UTF16_BigEndian,
- NULL,
- NULL,
+ nullptr,
+ nullptr,
_UTF16BEOpen,
- NULL,
+ nullptr,
_UTF16BEReset,
_UTF16BEToUnicodeWithOffsets,
@@ -623,14 +623,14 @@ static const UConverterImpl _UTF16BEImpl={
_UTF16BEFromUnicodeWithOffsets,
_UTF16BEGetNextUChar,
- NULL,
+ nullptr,
_UTF16BEGetName,
- NULL,
- NULL,
+ nullptr,
+ nullptr,
ucnv_getNonSurrogateUnicodeSet,
- NULL,
- NULL
+ nullptr,
+ nullptr
};
static const UConverterStaticData _UTF16BEStaticData={
@@ -653,12 +653,12 @@ static void U_CALLCONV
_UTF16LEFromUnicodeWithOffsets(UConverterFromUnicodeArgs *pArgs,
UErrorCode *pErrorCode) {
UConverter *cnv;
- const UChar *source;
+ const char16_t *source;
char *target;
int32_t *offsets;
uint32_t targetCapacity, length, sourceIndex;
- UChar c, trail;
+ char16_t c, trail;
char overflow[4];
source=pArgs->source;
@@ -693,7 +693,7 @@ _UTF16LEFromUnicodeWithOffsets(UConverterFromUnicodeArgs *pArgs,
/* c!=0 indicates in several places outside the main loops that a surrogate was found */
- if((c=(UChar)cnv->fromUChar32)!=0 && U16_IS_TRAIL(trail=*source) && targetCapacity>=4) {
+ if((c=(char16_t)cnv->fromUChar32)!=0 && U16_IS_TRAIL(trail=*source) && targetCapacity>=4) {
/* the last buffer ended with a lead surrogate, output the surrogate pair */
++source;
--length;
@@ -703,7 +703,7 @@ _UTF16LEFromUnicodeWithOffsets(UConverterFromUnicodeArgs *pArgs,
target[3]=(uint8_t)(trail>>8);
target+=4;
targetCapacity-=4;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=-1;
*offsets++=-1;
*offsets++=-1;
@@ -724,7 +724,7 @@ _UTF16LEFromUnicodeWithOffsets(UConverterFromUnicodeArgs *pArgs,
count>>=1;
length-=count;
- if(offsets==NULL) {
+ if(offsets==nullptr) {
while(count>0) {
c=*source++;
if(U16_IS_SINGLE(c)) {
@@ -858,11 +858,11 @@ _UTF16LEToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
UErrorCode *pErrorCode) {
UConverter *cnv;
const uint8_t *source;
- UChar *target;
+ char16_t *target;
int32_t *offsets;
uint32_t targetCapacity, length, count, sourceIndex;
- UChar c, trail;
+ char16_t c, trail;
if(pArgs->converter->mode<8) {
_UTF16ToUnicodeWithOffsets(pArgs, pErrorCode);
@@ -888,7 +888,7 @@ _UTF16LEToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
sourceIndex=0;
c=0;
- /* complete a partial UChar or pair from the last call */
+ /* complete a partial char16_t or pair from the last call */
if(cnv->toUnicodeStatus!=0) {
/*
* special case: single byte from a previous buffer,
@@ -907,11 +907,11 @@ _UTF16LEToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
++sourceIndex;
--length;
if(count==2) {
- c=((UChar)p[1]<<8)|p[0];
+ c=((char16_t)p[1]<<8)|p[0];
if(U16_IS_SINGLE(c)) {
/* output the BMP code point */
*target++=c;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=-1;
}
--targetCapacity;
@@ -926,14 +926,14 @@ _UTF16LEToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
break;
}
} else if(count==4) {
- c=((UChar)p[1]<<8)|p[0];
- trail=((UChar)p[3]<<8)|p[2];
+ c=((char16_t)p[1]<<8)|p[0];
+ trail=((char16_t)p[3]<<8)|p[2];
if(U16_IS_TRAIL(trail)) {
/* output the surrogate pair */
*target++=c;
if(targetCapacity>=2) {
*target++=trail;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=-1;
*offsets++=-1;
}
@@ -985,14 +985,14 @@ _UTF16LEToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
length-=count;
count>>=1;
targetCapacity-=count;
- if(offsets==NULL) {
+ if(offsets==nullptr) {
do {
- c=((UChar)source[1]<<8)|source[0];
+ c=((char16_t)source[1]<<8)|source[0];
source+=2;
if(U16_IS_SINGLE(c)) {
*target++=c;
} else if(U16_IS_SURROGATE_LEAD(c) && count>=2 &&
- U16_IS_TRAIL(trail=((UChar)source[1]<<8)|source[0])
+ U16_IS_TRAIL(trail=((char16_t)source[1]<<8)|source[0])
) {
source+=2;
--count;
@@ -1004,14 +1004,14 @@ _UTF16LEToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
} while(--count>0);
} else {
do {
- c=((UChar)source[1]<<8)|source[0];
+ c=((char16_t)source[1]<<8)|source[0];
source+=2;
if(U16_IS_SINGLE(c)) {
*target++=c;
*offsets++=sourceIndex;
sourceIndex+=2;
} else if(U16_IS_SURROGATE_LEAD(c) && count>=2 &&
- U16_IS_TRAIL(trail=((UChar)source[1]<<8)|source[0])
+ U16_IS_TRAIL(trail=((char16_t)source[1]<<8)|source[0])
) {
source+=2;
--count;
@@ -1048,12 +1048,12 @@ _UTF16LEToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
if(U16_IS_SURROGATE_LEAD(c)) {
if(length>=2) {
- if(U16_IS_TRAIL(trail=((UChar)source[1]<<8)|source[0])) {
+ if(U16_IS_TRAIL(trail=((char16_t)source[1]<<8)|source[0])) {
/* output the surrogate pair, will overflow (see conditions comment above) */
source+=2;
length-=2;
*target++=c;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
}
cnv->UCharErrorBuffer[0]=trail;
@@ -1110,7 +1110,7 @@ _UTF16LEGetNextUChar(UConverterToUnicodeArgs *pArgs, UErrorCode *err) {
}
if(s+2>sourceLimit) {
- /* only one byte: truncated UChar */
+ /* only one byte: truncated char16_t */
pArgs->converter->toUBytes[0]=*s++;
pArgs->converter->toULength=1;
pArgs->source=(const char *)s;
@@ -1118,7 +1118,7 @@ _UTF16LEGetNextUChar(UConverterToUnicodeArgs *pArgs, UErrorCode *err) {
return 0xffff;
}
- /* get one UChar */
+ /* get one char16_t */
c=((UChar32)s[1]<<8)|*s;
s+=2;
@@ -1126,10 +1126,10 @@ _UTF16LEGetNextUChar(UConverterToUnicodeArgs *pArgs, UErrorCode *err) {
if(U_IS_SURROGATE(c)) {
if(U16_IS_SURROGATE_LEAD(c)) {
if(s+2<=sourceLimit) {
- UChar trail;
+ char16_t trail;
- /* get a second UChar and see if it is a trail surrogate */
- trail=((UChar)s[1]<<8)|*s;
+ /* get a second char16_t and see if it is a trail surrogate */
+ trail=((char16_t)s[1]<<8)|*s;
if(U16_IS_TRAIL(trail)) {
c=U16_GET_SUPPLEMENTARY(c, trail);
s+=2;
@@ -1211,11 +1211,11 @@ U_CDECL_END
static const UConverterImpl _UTF16LEImpl={
UCNV_UTF16_LittleEndian,
- NULL,
- NULL,
+ nullptr,
+ nullptr,
_UTF16LEOpen,
- NULL,
+ nullptr,
_UTF16LEReset,
_UTF16LEToUnicodeWithOffsets,
@@ -1224,14 +1224,14 @@ static const UConverterImpl _UTF16LEImpl={
_UTF16LEFromUnicodeWithOffsets,
_UTF16LEGetNextUChar,
- NULL,
+ nullptr,
_UTF16LEGetName,
- NULL,
- NULL,
+ nullptr,
+ nullptr,
ucnv_getNonSurrogateUnicodeSet,
- NULL,
- NULL
+ nullptr,
+ nullptr
};
@@ -1447,7 +1447,7 @@ _UTF16ToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
}
/* add BOM size to offsets - see comment at offsetDelta declaration */
- if(offsets!=NULL && offsetDelta!=0) {
+ if(offsets!=nullptr && offsetDelta!=0) {
int32_t *offsetsLimit=pArgs->offsets;
while(offsets<offsetsLimit) {
*offsets++ += offsetDelta;
@@ -1493,11 +1493,11 @@ U_CDECL_END
static const UConverterImpl _UTF16Impl = {
UCNV_UTF16,
- NULL,
- NULL,
+ nullptr,
+ nullptr,
_UTF16Open,
- NULL,
+ nullptr,
_UTF16Reset,
_UTF16ToUnicodeWithOffsets,
@@ -1506,14 +1506,14 @@ static const UConverterImpl _UTF16Impl = {
_UTF16PEFromUnicodeWithOffsets,
_UTF16GetNextUChar,
- NULL, /* ### TODO implement getStarters for all Unicode encodings?! */
+ nullptr, /* ### TODO implement getStarters for all Unicode encodings?! */
_UTF16GetName,
- NULL,
- NULL,
+ nullptr,
+ nullptr,
ucnv_getNonSurrogateUnicodeSet,
- NULL,
- NULL
+ nullptr,
+ nullptr
};
static const UConverterStaticData _UTF16StaticData = {
@@ -1538,11 +1538,11 @@ const UConverterSharedData _UTF16Data =
static const UConverterImpl _UTF16v2Impl = {
UCNV_UTF16,
- NULL,
- NULL,
+ nullptr,
+ nullptr,
_UTF16Open,
- NULL,
+ nullptr,
_UTF16Reset,
_UTF16ToUnicodeWithOffsets,
@@ -1551,14 +1551,14 @@ static const UConverterImpl _UTF16v2Impl = {
_UTF16BEFromUnicodeWithOffsets,
_UTF16GetNextUChar,
- NULL, /* ### TODO implement getStarters for all Unicode encodings?! */
+ nullptr, /* ### TODO implement getStarters for all Unicode encodings?! */
_UTF16GetName,
- NULL,
- NULL,
+ nullptr,
+ nullptr,
ucnv_getNonSurrogateUnicodeSet,
- NULL,
- NULL
+ nullptr,
+ nullptr
};
static const UConverterStaticData _UTF16v2StaticData = {
diff --git a/Build/source/libs/icu/icu-src/source/common/ucnv_u32.cpp b/Build/source/libs/icu/icu-src/source/common/ucnv_u32.cpp
index bc160b71dd6..d513e8e7e0e 100644
--- a/Build/source/libs/icu/icu-src/source/common/ucnv_u32.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ucnv_u32.cpp
@@ -48,9 +48,9 @@ T_UConverter_toUnicode_UTF32_BE(UConverterToUnicodeArgs * args,
UErrorCode * err)
{
const unsigned char *mySource = (unsigned char *) args->source;
- UChar *myTarget = args->target;
+ char16_t *myTarget = args->target;
const unsigned char *sourceLimit = (unsigned char *) args->sourceLimit;
- const UChar *targetLimit = args->targetLimit;
+ const char16_t *targetLimit = args->targetLimit;
unsigned char *toUBytes = args->converter->toUBytes;
uint32_t ch, i;
@@ -87,18 +87,18 @@ morebytes:
if (ch <= MAXIMUM_UCS2)
{
/* fits in 16 bits */
- *(myTarget++) = (UChar) ch;
+ *(myTarget++) = (char16_t) ch;
}
else {
/* write out the surrogates */
*(myTarget++) = U16_LEAD(ch);
ch = U16_TRAIL(ch);
if (myTarget < targetLimit) {
- *(myTarget++) = (UChar)ch;
+ *(myTarget++) = (char16_t)ch;
}
else {
/* Put in overflow buffer (not handled here) */
- args->converter->UCharErrorBuffer[0] = (UChar) ch;
+ args->converter->UCharErrorBuffer[0] = (char16_t) ch;
args->converter->UCharErrorBufferLength = 1;
*err = U_BUFFER_OVERFLOW_ERROR;
break;
@@ -127,10 +127,10 @@ T_UConverter_toUnicode_UTF32_BE_OFFSET_LOGIC(UConverterToUnicodeArgs * args,
UErrorCode * err)
{
const unsigned char *mySource = (unsigned char *) args->source;
- UChar *myTarget = args->target;
+ char16_t *myTarget = args->target;
int32_t *myOffsets = args->offsets;
const unsigned char *sourceLimit = (unsigned char *) args->sourceLimit;
- const UChar *targetLimit = args->targetLimit;
+ const char16_t *targetLimit = args->targetLimit;
unsigned char *toUBytes = args->converter->toUBytes;
uint32_t ch, i;
int32_t offsetNum = 0;
@@ -167,7 +167,7 @@ morebytes:
/* Normal valid byte when the loop has not prematurely terminated (i < inBytes) */
if (ch <= MAXIMUM_UCS2) {
/* fits in 16 bits */
- *(myTarget++) = (UChar) ch;
+ *(myTarget++) = (char16_t) ch;
*(myOffsets++) = offsetNum;
}
else {
@@ -177,12 +177,12 @@ morebytes:
ch = U16_TRAIL(ch);
if (myTarget < targetLimit)
{
- *(myTarget++) = (UChar)ch;
+ *(myTarget++) = (char16_t)ch;
*(myOffsets++) = offsetNum;
}
else {
/* Put in overflow buffer (not handled here) */
- args->converter->UCharErrorBuffer[0] = (UChar) ch;
+ args->converter->UCharErrorBuffer[0] = (char16_t) ch;
args->converter->UCharErrorBufferLength = 1;
*err = U_BUFFER_OVERFLOW_ERROR;
break;
@@ -213,9 +213,9 @@ static void U_CALLCONV
T_UConverter_fromUnicode_UTF32_BE(UConverterFromUnicodeArgs * args,
UErrorCode * err)
{
- const UChar *mySource = args->source;
+ const char16_t *mySource = args->source;
unsigned char *myTarget;
- const UChar *sourceLimit = args->sourceLimit;
+ const char16_t *sourceLimit = args->sourceLimit;
const unsigned char *targetLimit = (unsigned char *) args->targetLimit;
UChar32 ch, ch2;
unsigned int indexToWrite;
@@ -314,10 +314,10 @@ static void U_CALLCONV
T_UConverter_fromUnicode_UTF32_BE_OFFSET_LOGIC(UConverterFromUnicodeArgs * args,
UErrorCode * err)
{
- const UChar *mySource = args->source;
+ const char16_t *mySource = args->source;
unsigned char *myTarget;
int32_t *myOffsets;
- const UChar *sourceLimit = args->sourceLimit;
+ const char16_t *sourceLimit = args->sourceLimit;
const unsigned char *targetLimit = (unsigned char *) args->targetLimit;
UChar32 ch, ch2;
int32_t offsetNum = 0;
@@ -465,12 +465,12 @@ U_CDECL_END
static const UConverterImpl _UTF32BEImpl = {
UCNV_UTF32_BigEndian,
- NULL,
- NULL,
+ nullptr,
+ nullptr,
- NULL,
- NULL,
- NULL,
+ nullptr,
+ nullptr,
+ nullptr,
T_UConverter_toUnicode_UTF32_BE,
T_UConverter_toUnicode_UTF32_BE_OFFSET_LOGIC,
@@ -478,14 +478,14 @@ static const UConverterImpl _UTF32BEImpl = {
T_UConverter_fromUnicode_UTF32_BE_OFFSET_LOGIC,
T_UConverter_getNextUChar_UTF32_BE,
- NULL,
- NULL,
- NULL,
- NULL,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
ucnv_getNonSurrogateUnicodeSet,
- NULL,
- NULL
+ nullptr,
+ nullptr
};
/* The 1232 CCSID refers to any version of Unicode with any endianness of UTF-32 */
@@ -510,9 +510,9 @@ T_UConverter_toUnicode_UTF32_LE(UConverterToUnicodeArgs * args,
UErrorCode * err)
{
const unsigned char *mySource = (unsigned char *) args->source;
- UChar *myTarget = args->target;
+ char16_t *myTarget = args->target;
const unsigned char *sourceLimit = (unsigned char *) args->sourceLimit;
- const UChar *targetLimit = args->targetLimit;
+ const char16_t *targetLimit = args->targetLimit;
unsigned char *toUBytes = args->converter->toUBytes;
uint32_t ch, i;
@@ -554,18 +554,18 @@ morebytes:
/* Normal valid byte when the loop has not prematurely terminated (i < inBytes) */
if (ch <= MAXIMUM_UCS2) {
/* fits in 16 bits */
- *(myTarget++) = (UChar) ch;
+ *(myTarget++) = (char16_t) ch;
}
else {
/* write out the surrogates */
*(myTarget++) = U16_LEAD(ch);
ch = U16_TRAIL(ch);
if (myTarget < targetLimit) {
- *(myTarget++) = (UChar)ch;
+ *(myTarget++) = (char16_t)ch;
}
else {
/* Put in overflow buffer (not handled here) */
- args->converter->UCharErrorBuffer[0] = (UChar) ch;
+ args->converter->UCharErrorBuffer[0] = (char16_t) ch;
args->converter->UCharErrorBufferLength = 1;
*err = U_BUFFER_OVERFLOW_ERROR;
break;
@@ -595,10 +595,10 @@ T_UConverter_toUnicode_UTF32_LE_OFFSET_LOGIC(UConverterToUnicodeArgs * args,
UErrorCode * err)
{
const unsigned char *mySource = (unsigned char *) args->source;
- UChar *myTarget = args->target;
+ char16_t *myTarget = args->target;
int32_t *myOffsets = args->offsets;
const unsigned char *sourceLimit = (unsigned char *) args->sourceLimit;
- const UChar *targetLimit = args->targetLimit;
+ const char16_t *targetLimit = args->targetLimit;
unsigned char *toUBytes = args->converter->toUBytes;
uint32_t ch, i;
int32_t offsetNum = 0;
@@ -643,7 +643,7 @@ morebytes:
if (ch <= MAXIMUM_UCS2)
{
/* fits in 16 bits */
- *(myTarget++) = (UChar) ch;
+ *(myTarget++) = (char16_t) ch;
*(myOffsets++) = offsetNum;
}
else {
@@ -653,13 +653,13 @@ morebytes:
ch = U16_TRAIL(ch);
if (myTarget < targetLimit)
{
- *(myTarget++) = (UChar)ch;
+ *(myTarget++) = (char16_t)ch;
*(myOffsets++) = offsetNum;
}
else
{
/* Put in overflow buffer (not handled here) */
- args->converter->UCharErrorBuffer[0] = (UChar) ch;
+ args->converter->UCharErrorBuffer[0] = (char16_t) ch;
args->converter->UCharErrorBufferLength = 1;
*err = U_BUFFER_OVERFLOW_ERROR;
break;
@@ -691,9 +691,9 @@ static void U_CALLCONV
T_UConverter_fromUnicode_UTF32_LE(UConverterFromUnicodeArgs * args,
UErrorCode * err)
{
- const UChar *mySource = args->source;
+ const char16_t *mySource = args->source;
unsigned char *myTarget;
- const UChar *sourceLimit = args->sourceLimit;
+ const char16_t *sourceLimit = args->sourceLimit;
const unsigned char *targetLimit = (unsigned char *) args->targetLimit;
UChar32 ch, ch2;
unsigned int indexToWrite;
@@ -800,10 +800,10 @@ static void U_CALLCONV
T_UConverter_fromUnicode_UTF32_LE_OFFSET_LOGIC(UConverterFromUnicodeArgs * args,
UErrorCode * err)
{
- const UChar *mySource = args->source;
+ const char16_t *mySource = args->source;
unsigned char *myTarget;
int32_t *myOffsets;
- const UChar *sourceLimit = args->sourceLimit;
+ const char16_t *sourceLimit = args->sourceLimit;
const unsigned char *targetLimit = (unsigned char *) args->targetLimit;
UChar32 ch, ch2;
unsigned int indexToWrite;
@@ -960,12 +960,12 @@ U_CDECL_END
static const UConverterImpl _UTF32LEImpl = {
UCNV_UTF32_LittleEndian,
- NULL,
- NULL,
+ nullptr,
+ nullptr,
- NULL,
- NULL,
- NULL,
+ nullptr,
+ nullptr,
+ nullptr,
T_UConverter_toUnicode_UTF32_LE,
T_UConverter_toUnicode_UTF32_LE_OFFSET_LOGIC,
@@ -973,14 +973,14 @@ static const UConverterImpl _UTF32LEImpl = {
T_UConverter_fromUnicode_UTF32_LE_OFFSET_LOGIC,
T_UConverter_getNextUChar_UTF32_LE,
- NULL,
- NULL,
- NULL,
- NULL,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
ucnv_getNonSurrogateUnicodeSet,
- NULL,
- NULL
+ nullptr,
+ nullptr
};
/* The 1232 CCSID refers to any version of Unicode with any endianness of UTF-32 */
@@ -1126,7 +1126,7 @@ _UTF32ToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
case 8:
/* call UTF-32BE */
pArgs->source=source;
- if(offsets==NULL) {
+ if(offsets==nullptr) {
T_UConverter_toUnicode_UTF32_BE(pArgs, pErrorCode);
} else {
T_UConverter_toUnicode_UTF32_BE_OFFSET_LOGIC(pArgs, pErrorCode);
@@ -1136,7 +1136,7 @@ _UTF32ToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
case 9:
/* call UTF-32LE */
pArgs->source=source;
- if(offsets==NULL) {
+ if(offsets==nullptr) {
T_UConverter_toUnicode_UTF32_LE(pArgs, pErrorCode);
} else {
T_UConverter_toUnicode_UTF32_LE_OFFSET_LOGIC(pArgs, pErrorCode);
@@ -1149,7 +1149,7 @@ _UTF32ToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
}
/* add BOM size to offsets - see comment at offsetDelta declaration */
- if(offsets!=NULL && offsetDelta!=0) {
+ if(offsets!=nullptr && offsetDelta!=0) {
int32_t *offsetsLimit=pArgs->offsets;
while(offsets<offsetsLimit) {
*offsets++ += offsetDelta;
@@ -1202,11 +1202,11 @@ U_CDECL_END
static const UConverterImpl _UTF32Impl = {
UCNV_UTF32,
- NULL,
- NULL,
+ nullptr,
+ nullptr,
_UTF32Open,
- NULL,
+ nullptr,
_UTF32Reset,
_UTF32ToUnicodeWithOffsets,
@@ -1220,14 +1220,14 @@ static const UConverterImpl _UTF32Impl = {
#endif
_UTF32GetNextUChar,
- NULL, /* ### TODO implement getStarters for all Unicode encodings?! */
- NULL,
- NULL,
- NULL,
+ nullptr, /* ### TODO implement getStarters for all Unicode encodings?! */
+ nullptr,
+ nullptr,
+ nullptr,
ucnv_getNonSurrogateUnicodeSet,
- NULL,
- NULL
+ nullptr,
+ nullptr
};
/* The 1236 CCSID refers to any version of Unicode with a BOM sensitive endianness of UTF-32 */
diff --git a/Build/source/libs/icu/icu-src/source/common/ucnv_u7.cpp b/Build/source/libs/icu/icu-src/source/common/ucnv_u7.cpp
index 8964ca01de0..398b528e832 100644
--- a/Build/source/libs/icu/icu-src/source/common/ucnv_u7.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ucnv_u7.cpp
@@ -212,8 +212,8 @@ _UTF7ToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
UErrorCode *pErrorCode) {
UConverter *cnv;
const uint8_t *source, *sourceLimit;
- UChar *target;
- const UChar *targetLimit;
+ char16_t *target;
+ const char16_t *targetLimit;
int32_t *offsets;
uint8_t *bytes;
@@ -280,7 +280,7 @@ directMode:
} else if(b!=PLUS) {
/* write directly encoded character */
*target++=b;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex++;
}
} else /* PLUS */ {
@@ -320,10 +320,10 @@ unicodeMode:
* base64Value==-1 for any legal character except base64 and minus sign, or
* base64Value==-3 for illegal characters:
* 1. In either case, leave Unicode mode.
- * 2.1. If we ended with an incomplete UChar or none after the +, then
+ * 2.1. If we ended with an incomplete char16_t or none after the +, then
* generate an error for the preceding erroneous sequence and deal with
* the current (possibly illegal) character next time through.
- * 2.2. Else the current char comes after a complete UChar, which was already
+ * 2.2. Else the current char comes after a complete char16_t, which was already
* pushed to the output buf, so:
* 2.2.1. If the current char is legal, just save it for processing next time.
* It may be for example, a plus which we need to deal with in direct mode.
@@ -339,14 +339,14 @@ unicodeMode:
*pErrorCode=U_ILLEGAL_CHAR_FOUND;
break;
} else if(bits!=0) {
- /* bits are illegally left over, a UChar is incomplete */
+ /* bits are illegally left over, a char16_t is incomplete */
/* don't include current char (legal or illegal) in error seq */
--source;
--byteIndex;
*pErrorCode=U_ILLEGAL_CHAR_FOUND;
break;
} else {
- /* previous UChar was complete */
+ /* previous char16_t was complete */
if(base64Value==-3) {
/* current character is illegal, deal with it here */
*pErrorCode=U_ILLEGAL_CHAR_FOUND;
@@ -374,8 +374,8 @@ unicodeMode:
++base64Counter;
break;
case 2:
- *target++=(UChar)((bits<<4)|(base64Value>>2));
- if(offsets!=NULL) {
+ *target++=(char16_t)((bits<<4)|(base64Value>>2));
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
sourceIndex=nextSourceIndex-1;
}
@@ -385,8 +385,8 @@ unicodeMode:
base64Counter=3;
break;
case 5:
- *target++=(UChar)((bits<<2)|(base64Value>>4));
- if(offsets!=NULL) {
+ *target++=(char16_t)((bits<<2)|(base64Value>>4));
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
sourceIndex=nextSourceIndex-1;
}
@@ -396,8 +396,8 @@ unicodeMode:
base64Counter=6;
break;
case 7:
- *target++=(UChar)((bits<<6)|base64Value);
- if(offsets!=NULL) {
+ *target++=(char16_t)((bits<<6)|base64Value);
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
sourceIndex=nextSourceIndex;
}
@@ -415,13 +415,13 @@ unicodeMode:
if(base64Counter==-1) {
/* +- i.e. a minus immediately following a plus */
*target++=PLUS;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex-1;
}
} else {
/* absorb the minus and leave the Unicode Mode */
if(bits!=0) {
- /* bits are illegally left over, a UChar is incomplete */
+ /* bits are illegally left over, a char16_t is incomplete */
*pErrorCode=U_ILLEGAL_CHAR_FOUND;
break;
}
@@ -462,12 +462,12 @@ static void U_CALLCONV
_UTF7FromUnicodeWithOffsets(UConverterFromUnicodeArgs *pArgs,
UErrorCode *pErrorCode) {
UConverter *cnv;
- const UChar *source, *sourceLimit;
+ const char16_t *source, *sourceLimit;
uint8_t *target, *targetLimit;
int32_t *offsets;
int32_t length, targetCapacity, sourceIndex;
- UChar c;
+ char16_t c;
/* UTF-7 state */
const UBool *encodeDirectly;
@@ -511,7 +511,7 @@ directMode:
if(c<=127 && encodeDirectly[c]) {
/* encode directly */
*target++=(uint8_t)c;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex++;
}
} else if(c==PLUS) {
@@ -519,14 +519,14 @@ directMode:
*target++=PLUS;
if(target<targetLimit) {
*target++=MINUS;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
*offsets++=sourceIndex++;
}
/* realign length and targetCapacity */
goto directMode;
} else {
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex++;
}
cnv->charErrorBuffer[0]=MINUS;
@@ -538,7 +538,7 @@ directMode:
/* un-read this character and switch to Unicode Mode */
--source;
*target++=PLUS;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
}
inDirectMode=false;
@@ -567,7 +567,7 @@ unicodeMode:
if(base64Counter!=0) {
/* write remaining bits for the previous character */
*target++=toBase64[bits];
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex-1;
}
}
@@ -575,7 +575,7 @@ unicodeMode:
/* need to terminate with a minus */
if(target<targetLimit) {
*target++=MINUS;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex-1;
}
} else {
@@ -601,12 +601,12 @@ unicodeMode:
*target++=toBase64[c>>10];
if(target<targetLimit) {
*target++=toBase64[(c>>4)&0x3f];
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
*offsets++=sourceIndex++;
}
} else {
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex++;
}
cnv->charErrorBuffer[0]=toBase64[(c>>4)&0x3f];
@@ -622,13 +622,13 @@ unicodeMode:
*target++=toBase64[(c>>8)&0x3f];
if(target<targetLimit) {
*target++=toBase64[(c>>2)&0x3f];
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
*offsets++=sourceIndex;
*offsets++=sourceIndex++;
}
} else {
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
*offsets++=sourceIndex++;
}
@@ -637,7 +637,7 @@ unicodeMode:
*pErrorCode=U_BUFFER_OVERFLOW_ERROR;
}
} else {
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex++;
}
cnv->charErrorBuffer[0]=toBase64[(c>>8)&0x3f];
@@ -654,13 +654,13 @@ unicodeMode:
*target++=toBase64[(c>>6)&0x3f];
if(target<targetLimit) {
*target++=toBase64[c&0x3f];
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
*offsets++=sourceIndex;
*offsets++=sourceIndex++;
}
} else {
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
*offsets++=sourceIndex++;
}
@@ -669,7 +669,7 @@ unicodeMode:
*pErrorCode=U_BUFFER_OVERFLOW_ERROR;
}
} else {
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex++;
}
cnv->charErrorBuffer[0]=toBase64[(c>>6)&0x3f];
@@ -699,7 +699,7 @@ unicodeMode:
if (base64Counter!=0) {
if(target<targetLimit) {
*target++=toBase64[bits];
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex-1;
}
} else {
@@ -710,7 +710,7 @@ unicodeMode:
/* Add final MINUS to terminate unicodeMode */
if(target<targetLimit) {
*target++=MINUS;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex-1;
}
} else {
@@ -748,27 +748,27 @@ U_CDECL_END
static const UConverterImpl _UTF7Impl={
UCNV_UTF7,
- NULL,
- NULL,
+ nullptr,
+ nullptr,
_UTF7Open,
- NULL,
+ nullptr,
_UTF7Reset,
_UTF7ToUnicodeWithOffsets,
_UTF7ToUnicodeWithOffsets,
_UTF7FromUnicodeWithOffsets,
_UTF7FromUnicodeWithOffsets,
- NULL,
+ nullptr,
- NULL,
+ nullptr,
_UTF7GetName,
- NULL, /* we don't need writeSub() because we never call a callback at fromUnicode() */
- NULL,
+ nullptr, /* we don't need writeSub() because we never call a callback at fromUnicode() */
+ nullptr,
ucnv_getCompleteUnicodeSet,
- NULL,
- NULL
+ nullptr,
+ nullptr
};
static const UConverterStaticData _UTF7StaticData={
@@ -896,8 +896,8 @@ _IMAPToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
UErrorCode *pErrorCode) {
UConverter *cnv;
const uint8_t *source, *sourceLimit;
- UChar *target;
- const UChar *targetLimit;
+ char16_t *target;
+ const char16_t *targetLimit;
int32_t *offsets;
uint8_t *bytes;
@@ -914,7 +914,7 @@ _IMAPToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
int32_t sourceIndex, nextSourceIndex;
- UChar c;
+ char16_t c;
uint8_t b;
/* set up the local pointers */
@@ -965,7 +965,7 @@ directMode:
} else if(b!=AMPERSAND) {
/* write directly encoded character */
*target++=b;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex++;
}
} else /* AMPERSAND */ {
@@ -1021,7 +1021,7 @@ unicodeMode:
++base64Counter;
break;
case 2:
- c=(UChar)((bits<<4)|(base64Value>>2));
+ c=(char16_t)((bits<<4)|(base64Value>>2));
if(isLegalIMAP(c)) {
/* illegal */
inDirectMode=true;
@@ -1029,7 +1029,7 @@ unicodeMode:
goto endloop;
}
*target++=c;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
sourceIndex=nextSourceIndex-1;
}
@@ -1039,7 +1039,7 @@ unicodeMode:
base64Counter=3;
break;
case 5:
- c=(UChar)((bits<<2)|(base64Value>>4));
+ c=(char16_t)((bits<<2)|(base64Value>>4));
if(isLegalIMAP(c)) {
/* illegal */
inDirectMode=true;
@@ -1047,7 +1047,7 @@ unicodeMode:
goto endloop;
}
*target++=c;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
sourceIndex=nextSourceIndex-1;
}
@@ -1057,7 +1057,7 @@ unicodeMode:
base64Counter=6;
break;
case 7:
- c=(UChar)((bits<<6)|base64Value);
+ c=(char16_t)((bits<<6)|base64Value);
if(isLegalIMAP(c)) {
/* illegal */
inDirectMode=true;
@@ -1065,7 +1065,7 @@ unicodeMode:
goto endloop;
}
*target++=c;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
sourceIndex=nextSourceIndex;
}
@@ -1083,13 +1083,13 @@ unicodeMode:
if(base64Counter==-1) {
/* &- i.e. a minus immediately following an ampersand */
*target++=AMPERSAND;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex-1;
}
} else {
/* absorb the minus and leave the Unicode Mode */
if(bits!=0 || (base64Counter!=0 && base64Counter!=3 && base64Counter!=6)) {
- /* bits are illegally left over, a UChar is incomplete */
+ /* bits are illegally left over, a char16_t is incomplete */
/* base64Counter other than 0, 3, 6 means non-minimal zero-padding, also illegal */
*pErrorCode=U_ILLEGAL_CHAR_FOUND;
break;
@@ -1163,12 +1163,12 @@ static void U_CALLCONV
_IMAPFromUnicodeWithOffsets(UConverterFromUnicodeArgs *pArgs,
UErrorCode *pErrorCode) {
UConverter *cnv;
- const UChar *source, *sourceLimit;
+ const char16_t *source, *sourceLimit;
uint8_t *target, *targetLimit;
int32_t *offsets;
int32_t length, targetCapacity, sourceIndex;
- UChar c;
+ char16_t c;
uint8_t b;
/* UTF-7 state */
@@ -1210,7 +1210,7 @@ directMode:
if(inSetDIMAP(c)) {
/* encode directly */
*target++=(uint8_t)c;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex++;
}
} else if(c==AMPERSAND) {
@@ -1218,14 +1218,14 @@ directMode:
*target++=AMPERSAND;
if(target<targetLimit) {
*target++=MINUS;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
*offsets++=sourceIndex++;
}
/* realign length and targetCapacity */
goto directMode;
} else {
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex++;
}
cnv->charErrorBuffer[0]=MINUS;
@@ -1237,7 +1237,7 @@ directMode:
/* un-read this character and switch to Unicode Mode */
--source;
*target++=AMPERSAND;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
}
inDirectMode=false;
@@ -1266,14 +1266,14 @@ unicodeMode:
if(base64Counter!=0) {
/* write remaining bits for the previous character */
*target++=TO_BASE64_IMAP(bits);
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex-1;
}
}
/* need to terminate with a minus */
if(target<targetLimit) {
*target++=MINUS;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex-1;
}
} else {
@@ -1300,12 +1300,12 @@ unicodeMode:
if(target<targetLimit) {
b=(uint8_t)((c>>4)&0x3f);
*target++=TO_BASE64_IMAP(b);
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
*offsets++=sourceIndex++;
}
} else {
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex++;
}
b=(uint8_t)((c>>4)&0x3f);
@@ -1325,13 +1325,13 @@ unicodeMode:
if(target<targetLimit) {
b=(uint8_t)((c>>2)&0x3f);
*target++=TO_BASE64_IMAP(b);
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
*offsets++=sourceIndex;
*offsets++=sourceIndex++;
}
} else {
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
*offsets++=sourceIndex++;
}
@@ -1341,7 +1341,7 @@ unicodeMode:
*pErrorCode=U_BUFFER_OVERFLOW_ERROR;
}
} else {
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex++;
}
b=(uint8_t)((c>>8)&0x3f);
@@ -1363,13 +1363,13 @@ unicodeMode:
if(target<targetLimit) {
b=(uint8_t)(c&0x3f);
*target++=TO_BASE64_IMAP(b);
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
*offsets++=sourceIndex;
*offsets++=sourceIndex++;
}
} else {
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
*offsets++=sourceIndex++;
}
@@ -1379,7 +1379,7 @@ unicodeMode:
*pErrorCode=U_BUFFER_OVERFLOW_ERROR;
}
} else {
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex++;
}
b=(uint8_t)((c>>6)&0x3f);
@@ -1411,7 +1411,7 @@ unicodeMode:
if(base64Counter!=0) {
if(target<targetLimit) {
*target++=TO_BASE64_IMAP(bits);
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex-1;
}
} else {
@@ -1422,7 +1422,7 @@ unicodeMode:
/* need to terminate with a minus */
if(target<targetLimit) {
*target++=MINUS;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex-1;
}
} else {
@@ -1450,26 +1450,26 @@ U_CDECL_END
static const UConverterImpl _IMAPImpl={
UCNV_IMAP_MAILBOX,
- NULL,
- NULL,
+ nullptr,
+ nullptr,
_UTF7Open,
- NULL,
+ nullptr,
_UTF7Reset,
_IMAPToUnicodeWithOffsets,
_IMAPToUnicodeWithOffsets,
_IMAPFromUnicodeWithOffsets,
_IMAPFromUnicodeWithOffsets,
- NULL,
+ nullptr,
- NULL,
- NULL,
- NULL, /* we don't need writeSub() because we never call a callback at fromUnicode() */
- NULL,
+ nullptr,
+ nullptr,
+ nullptr, /* we don't need writeSub() because we never call a callback at fromUnicode() */
+ nullptr,
ucnv_getCompleteUnicodeSet,
- NULL,
- NULL
+ nullptr,
+ nullptr
};
static const UConverterStaticData _IMAPStaticData={
diff --git a/Build/source/libs/icu/icu-src/source/common/ucnv_u8.cpp b/Build/source/libs/icu/icu-src/source/common/ucnv_u8.cpp
index 3c27f2e46e8..cf3bb22a02a 100644
--- a/Build/source/libs/icu/icu-src/source/common/ucnv_u8.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ucnv_u8.cpp
@@ -67,9 +67,9 @@ static void U_CALLCONV ucnv_toUnicode_UTF8 (UConverterToUnicodeArgs * args,
{
UConverter *cnv = args->converter;
const unsigned char *mySource = (unsigned char *) args->source;
- UChar *myTarget = args->target;
+ char16_t *myTarget = args->target;
const unsigned char *sourceLimit = (unsigned char *) args->sourceLimit;
- const UChar *targetLimit = args->targetLimit;
+ const char16_t *targetLimit = args->targetLimit;
unsigned char *toUBytes = cnv->toUBytes;
UBool isCESU8 = hasCESU8Data(cnv);
uint32_t ch, ch2 = 0;
@@ -93,7 +93,7 @@ static void U_CALLCONV ucnv_toUnicode_UTF8 (UConverterToUnicodeArgs * args,
ch = *(mySource++);
if (U8_IS_SINGLE(ch)) /* Simple case */
{
- *(myTarget++) = (UChar) ch;
+ *(myTarget++) = (char16_t) ch;
}
else
{
@@ -137,7 +137,7 @@ morebytes:
if (ch <= MAXIMUM_UCS2)
{
/* fits in 16 bits */
- *(myTarget++) = (UChar) ch;
+ *(myTarget++) = (char16_t) ch;
}
else
{
@@ -146,12 +146,12 @@ morebytes:
ch = U16_TRAIL(ch);
if (myTarget < targetLimit)
{
- *(myTarget++) = (UChar)ch;
+ *(myTarget++) = (char16_t)ch;
}
else
{
/* Put in overflow buffer (not handled here) */
- cnv->UCharErrorBuffer[0] = (UChar) ch;
+ cnv->UCharErrorBuffer[0] = (char16_t) ch;
cnv->UCharErrorBufferLength = 1;
*err = U_BUFFER_OVERFLOW_ERROR;
break;
@@ -183,11 +183,11 @@ static void U_CALLCONV ucnv_toUnicode_UTF8_OFFSETS_LOGIC (UConverterToUnicodeAr
{
UConverter *cnv = args->converter;
const unsigned char *mySource = (unsigned char *) args->source;
- UChar *myTarget = args->target;
+ char16_t *myTarget = args->target;
int32_t *myOffsets = args->offsets;
int32_t offsetNum = 0;
const unsigned char *sourceLimit = (unsigned char *) args->sourceLimit;
- const UChar *targetLimit = args->targetLimit;
+ const char16_t *targetLimit = args->targetLimit;
unsigned char *toUBytes = cnv->toUBytes;
UBool isCESU8 = hasCESU8Data(cnv);
uint32_t ch, ch2 = 0;
@@ -210,7 +210,7 @@ static void U_CALLCONV ucnv_toUnicode_UTF8_OFFSETS_LOGIC (UConverterToUnicodeAr
ch = *(mySource++);
if (U8_IS_SINGLE(ch)) /* Simple case */
{
- *(myTarget++) = (UChar) ch;
+ *(myTarget++) = (char16_t) ch;
*(myOffsets++) = offsetNum++;
}
else
@@ -253,7 +253,7 @@ morebytes:
if (ch <= MAXIMUM_UCS2)
{
/* fits in 16 bits */
- *(myTarget++) = (UChar) ch;
+ *(myTarget++) = (char16_t) ch;
*(myOffsets++) = offsetNum;
}
else
@@ -264,12 +264,12 @@ morebytes:
ch = U16_TRAIL(ch);
if (myTarget < targetLimit)
{
- *(myTarget++) = (UChar)ch;
+ *(myTarget++) = (char16_t)ch;
*(myOffsets++) = offsetNum;
}
else
{
- cnv->UCharErrorBuffer[0] = (UChar) ch;
+ cnv->UCharErrorBuffer[0] = (char16_t) ch;
cnv->UCharErrorBufferLength = 1;
*err = U_BUFFER_OVERFLOW_ERROR;
}
@@ -301,8 +301,8 @@ U_CFUNC void U_CALLCONV ucnv_fromUnicode_UTF8 (UConverterFromUnicodeArgs * args
UErrorCode * err)
{
UConverter *cnv = args->converter;
- const UChar *mySource = args->source;
- const UChar *sourceLimit = args->sourceLimit;
+ const char16_t *mySource = args->source;
+ const char16_t *sourceLimit = args->sourceLimit;
uint8_t *myTarget = (uint8_t *) args->target;
const uint8_t *targetLimit = (uint8_t *) args->targetLimit;
uint8_t *tempPtr;
@@ -415,9 +415,9 @@ U_CFUNC void U_CALLCONV ucnv_fromUnicode_UTF8_OFFSETS_LOGIC (UConverterFromUnic
UErrorCode * err)
{
UConverter *cnv = args->converter;
- const UChar *mySource = args->source;
+ const char16_t *mySource = args->source;
int32_t *myOffsets = args->offsets;
- const UChar *sourceLimit = args->sourceLimit;
+ const char16_t *sourceLimit = args->sourceLimit;
uint8_t *myTarget = (uint8_t *) args->target;
const uint8_t *targetLimit = (uint8_t *) args->targetLimit;
uint8_t *tempPtr;
@@ -859,12 +859,12 @@ U_CDECL_END
static const UConverterImpl _UTF8Impl={
UCNV_UTF8,
- NULL,
- NULL,
+ nullptr,
+ nullptr,
- NULL,
- NULL,
- NULL,
+ nullptr,
+ nullptr,
+ nullptr,
ucnv_toUnicode_UTF8,
ucnv_toUnicode_UTF8_OFFSETS_LOGIC,
@@ -872,10 +872,10 @@ static const UConverterImpl _UTF8Impl={
ucnv_fromUnicode_UTF8_OFFSETS_LOGIC,
ucnv_getNextUChar_UTF8,
- NULL,
- NULL,
- NULL,
- NULL,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
ucnv_getNonSurrogateUnicodeSet,
ucnv_UTF8FromUTF8,
@@ -887,7 +887,7 @@ static const UConverterStaticData _UTF8StaticData={
sizeof(UConverterStaticData),
"UTF-8",
1208, UCNV_IBM, UCNV_UTF8,
- 1, 3, /* max 3 bytes per UChar from UTF-8 (4 bytes from surrogate _pair_) */
+ 1, 3, /* max 3 bytes per char16_t from UTF-8 (4 bytes from surrogate _pair_) */
{ 0xef, 0xbf, 0xbd, 0 },3,false,false,
0,
0,
@@ -903,27 +903,27 @@ const UConverterSharedData _UTF8Data=
static const UConverterImpl _CESU8Impl={
UCNV_CESU8,
- NULL,
- NULL,
+ nullptr,
+ nullptr,
- NULL,
- NULL,
- NULL,
+ nullptr,
+ nullptr,
+ nullptr,
ucnv_toUnicode_UTF8,
ucnv_toUnicode_UTF8_OFFSETS_LOGIC,
ucnv_fromUnicode_UTF8,
ucnv_fromUnicode_UTF8_OFFSETS_LOGIC,
- NULL,
+ nullptr,
- NULL,
- NULL,
- NULL,
- NULL,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
ucnv_getCompleteUnicodeSet,
- NULL,
- NULL
+ nullptr,
+ nullptr
};
static const UConverterStaticData _CESU8StaticData={
diff --git a/Build/source/libs/icu/icu-src/source/common/ucnvbocu.cpp b/Build/source/libs/icu/icu-src/source/common/ucnvbocu.cpp
index edb49d36a9c..007722e474b 100644
--- a/Build/source/libs/icu/icu-src/source/common/ucnvbocu.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ucnvbocu.cpp
@@ -392,7 +392,7 @@ static void U_CALLCONV
_Bocu1FromUnicodeWithOffsets(UConverterFromUnicodeArgs *pArgs,
UErrorCode *pErrorCode) {
UConverter *cnv;
- const UChar *source, *sourceLimit;
+ const char16_t *source, *sourceLimit;
uint8_t *target;
int32_t targetCapacity;
int32_t *offsets;
@@ -456,7 +456,7 @@ fastSingle:
}
/* restore real values */
targetCapacity=(int32_t)((const uint8_t *)pArgs->targetLimit-target);
- sourceIndex=nextSourceIndex; /* wrong if offsets==NULL but does not matter */
+ sourceIndex=nextSourceIndex; /* wrong if offsets==nullptr but does not matter */
/* regular loop for all cases */
while(source<sourceLimit) {
@@ -485,7 +485,7 @@ fastSingle:
getTrail:
if(source<sourceLimit) {
/* test the following code unit */
- UChar trail=*source;
+ char16_t trail=*source;
if(U16_IS_TRAIL(trail)) {
++source;
++nextSourceIndex;
@@ -653,7 +653,7 @@ static void U_CALLCONV
_Bocu1FromUnicode(UConverterFromUnicodeArgs *pArgs,
UErrorCode *pErrorCode) {
UConverter *cnv;
- const UChar *source, *sourceLimit;
+ const char16_t *source, *sourceLimit;
uint8_t *target;
int32_t targetCapacity;
@@ -729,7 +729,7 @@ fastSingle:
getTrail:
if(source<sourceLimit) {
/* test the following code unit */
- UChar trail=*source;
+ char16_t trail=*source;
if(U16_IS_TRAIL(trail)) {
++source;
c=U16_GET_SUPPLEMENTARY(c, trail);
@@ -916,7 +916,7 @@ decodeBocu1LeadByte(int32_t b) {
}
/* return the state for decoding the trail byte(s) */
- return (diff<<2)|count;
+ return ((uint32_t)diff<<2)|count;
}
/**
@@ -957,8 +957,8 @@ _Bocu1ToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
UErrorCode *pErrorCode) {
UConverter *cnv;
const uint8_t *source, *sourceLimit;
- UChar *target;
- const UChar *targetLimit;
+ char16_t *target;
+ const char16_t *targetLimit;
int32_t *offsets;
int32_t prev, count, diff, c;
@@ -1009,7 +1009,7 @@ fastSingle:
if(BOCU1_START_NEG_2<=(c=*source) && c<BOCU1_START_POS_2) {
c=prev+(c-BOCU1_MIDDLE);
if(c<0x3000) {
- *target++=(UChar)c;
+ *target++=(char16_t)c;
*offsets++=nextSourceIndex++;
prev=BOCU1_SIMPLE_PREV(c);
} else {
@@ -1019,7 +1019,7 @@ fastSingle:
if(c!=0x20) {
prev=BOCU1_ASCII_PREV;
}
- *target++=(UChar)c;
+ *target++=(char16_t)c;
*offsets++=nextSourceIndex++;
} else {
break;
@@ -1027,7 +1027,7 @@ fastSingle:
++source;
--count;
}
- sourceIndex=nextSourceIndex; /* wrong if offsets==NULL but does not matter */
+ sourceIndex=nextSourceIndex; /* wrong if offsets==nullptr but does not matter */
/* decode a sequence of single and lead bytes */
while(source<sourceLimit) {
@@ -1043,7 +1043,7 @@ fastSingle:
/* Write a code point directly from a single-byte difference. */
c=prev+(c-BOCU1_MIDDLE);
if(c<0x3000) {
- *target++=(UChar)c;
+ *target++=(char16_t)c;
*offsets++=sourceIndex;
prev=BOCU1_SIMPLE_PREV(c);
sourceIndex=nextSourceIndex;
@@ -1057,7 +1057,7 @@ fastSingle:
if(c!=0x20) {
prev=BOCU1_ASCII_PREV;
}
- *target++=(UChar)c;
+ *target++=(char16_t)c;
*offsets++=sourceIndex;
sourceIndex=nextSourceIndex;
continue;
@@ -1128,7 +1128,7 @@ getTrail:
/* calculate the next prev and output c */
prev=BOCU1_PREV(c);
if(c<=0xffff) {
- *target++=(UChar)c;
+ *target++=(char16_t)c;
*offsets++=sourceIndex;
} else {
/* output surrogate pair */
@@ -1157,7 +1157,7 @@ endloop:
} else {
/* set the converter state back into UConverter */
cnv->toUnicodeStatus=(uint32_t)prev;
- cnv->mode=(diff<<2)|count;
+ cnv->mode=(int32_t)((uint32_t)diff<<2)|count;
}
cnv->toULength=byteIndex;
@@ -1180,8 +1180,8 @@ _Bocu1ToUnicode(UConverterToUnicodeArgs *pArgs,
UErrorCode *pErrorCode) {
UConverter *cnv;
const uint8_t *source, *sourceLimit;
- UChar *target;
- const UChar *targetLimit;
+ char16_t *target;
+ const char16_t *targetLimit;
int32_t prev, count, diff, c;
@@ -1224,7 +1224,7 @@ fastSingle:
if(BOCU1_START_NEG_2<=(c=*source) && c<BOCU1_START_POS_2) {
c=prev+(c-BOCU1_MIDDLE);
if(c<0x3000) {
- *target++=(UChar)c;
+ *target++=(char16_t)c;
prev=BOCU1_SIMPLE_PREV(c);
} else {
break;
@@ -1233,7 +1233,7 @@ fastSingle:
if(c!=0x20) {
prev=BOCU1_ASCII_PREV;
}
- *target++=(UChar)c;
+ *target++=(char16_t)c;
} else {
break;
}
@@ -1254,7 +1254,7 @@ fastSingle:
/* Write a code point directly from a single-byte difference. */
c=prev+(c-BOCU1_MIDDLE);
if(c<0x3000) {
- *target++=(UChar)c;
+ *target++=(char16_t)c;
prev=BOCU1_SIMPLE_PREV(c);
goto fastSingle;
}
@@ -1266,7 +1266,7 @@ fastSingle:
if(c!=0x20) {
prev=BOCU1_ASCII_PREV;
}
- *target++=(UChar)c;
+ *target++=(char16_t)c;
continue;
} else if(BOCU1_START_NEG_3<=c && c<BOCU1_START_POS_3 && source<sourceLimit) {
/* Optimize two-byte case. */
@@ -1332,7 +1332,7 @@ getTrail:
/* calculate the next prev and output c */
prev=BOCU1_PREV(c);
if(c<=0xffff) {
- *target++=(UChar)c;
+ *target++=(char16_t)c;
} else {
/* output surrogate pair */
*target++=U16_LEAD(c);
@@ -1356,7 +1356,7 @@ endloop:
} else {
/* set the converter state back into UConverter */
cnv->toUnicodeStatus=(uint32_t)prev;
- cnv->mode=(diff<<2)|count;
+ cnv->mode=((uint32_t)diff<<2)|count;
}
cnv->toULength=byteIndex;
@@ -1371,27 +1371,27 @@ endloop:
static const UConverterImpl _Bocu1Impl={
UCNV_BOCU1,
- NULL,
- NULL,
+ nullptr,
+ nullptr,
- NULL,
- NULL,
- NULL,
+ nullptr,
+ nullptr,
+ nullptr,
_Bocu1ToUnicode,
_Bocu1ToUnicodeWithOffsets,
_Bocu1FromUnicode,
_Bocu1FromUnicodeWithOffsets,
- NULL,
+ nullptr,
- NULL,
- NULL,
- NULL,
- NULL,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
ucnv_getCompleteUnicodeSet,
- NULL,
- NULL
+ nullptr,
+ nullptr
};
static const UConverterStaticData _Bocu1StaticData={
@@ -1399,7 +1399,7 @@ static const UConverterStaticData _Bocu1StaticData={
"BOCU-1",
1214, /* CCSID for BOCU-1 */
UCNV_IBM, UCNV_BOCU1,
- 1, 4, /* one UChar generates at least 1 byte and at most 4 bytes */
+ 1, 4, /* one char16_t generates at least 1 byte and at most 4 bytes */
{ 0x1a, 0, 0, 0 }, 1, /* BOCU-1 never needs to write a subchar */
false, false,
0,
diff --git a/Build/source/libs/icu/icu-src/source/common/ucnvdisp.cpp b/Build/source/libs/icu/icu-src/source/common/ucnvdisp.cpp
index ac86b985970..0830042d0bb 100644
--- a/Build/source/libs/icu/icu-src/source/common/ucnvdisp.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ucnvdisp.cpp
@@ -35,25 +35,25 @@
U_CAPI int32_t U_EXPORT2
ucnv_getDisplayName(const UConverter *cnv,
const char *displayLocale,
- UChar *displayName, int32_t displayNameCapacity,
+ char16_t *displayName, int32_t displayNameCapacity,
UErrorCode *pErrorCode) {
UResourceBundle *rb;
- const UChar *name;
+ const char16_t *name;
int32_t length;
UErrorCode localStatus = U_ZERO_ERROR;
/* check arguments */
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return 0;
}
- if(cnv==NULL || displayNameCapacity<0 || (displayNameCapacity>0 && displayName==NULL)) {
+ if(cnv==nullptr || displayNameCapacity<0 || (displayNameCapacity>0 && displayName==nullptr)) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
/* open the resource bundle and get the display name string */
- rb=ures_open(NULL, displayLocale, pErrorCode);
+ rb=ures_open(nullptr, displayLocale, pErrorCode);
if(U_FAILURE(*pErrorCode)) {
return 0;
}
diff --git a/Build/source/libs/icu/icu-src/source/common/ucnvhz.cpp b/Build/source/libs/icu/icu-src/source/common/ucnvhz.cpp
index e0d2f0775df..fa0f2b40ea7 100644
--- a/Build/source/libs/icu/icu-src/source/common/ucnvhz.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ucnvhz.cpp
@@ -42,7 +42,7 @@
while(len-->0){ \
if(targetIndex < targetLength){ \
args->target[targetIndex] = (unsigned char) *strToAppend; \
- if(args->offsets!=NULL){ \
+ if(args->offsets!=nullptr){ \
*(offsets++) = sourceIndex-1; \
} \
targetIndex++; \
@@ -84,7 +84,7 @@ _HZOpen(UConverter *cnv, UConverterLoadArgs *pArgs, UErrorCode *errorCode){
cnv->mode=0;
cnv->fromUChar32=0x0000;
cnv->extraInfo = uprv_calloc(1, sizeof(UConverterDataHZ));
- if(cnv->extraInfo != NULL){
+ if(cnv->extraInfo != nullptr){
((UConverterDataHZ*)cnv->extraInfo)->gbConverter = gbConverter;
}
else {
@@ -96,12 +96,12 @@ _HZOpen(UConverter *cnv, UConverterLoadArgs *pArgs, UErrorCode *errorCode){
static void U_CALLCONV
_HZClose(UConverter *cnv){
- if(cnv->extraInfo != NULL) {
+ if(cnv->extraInfo != nullptr) {
ucnv_close (((UConverterDataHZ *) (cnv->extraInfo))->gbConverter);
if(!cnv->isExtraLocal) {
uprv_free(cnv->extraInfo);
}
- cnv->extraInfo = NULL;
+ cnv->extraInfo = nullptr;
}
}
@@ -110,7 +110,7 @@ _HZReset(UConverter *cnv, UConverterResetChoice choice){
if(choice<=UCNV_RESET_TO_UNICODE) {
cnv->toUnicodeStatus = 0;
cnv->mode=0;
- if(cnv->extraInfo != NULL){
+ if(cnv->extraInfo != nullptr){
((UConverterDataHZ*)cnv->extraInfo)->isStateDBCS = false;
((UConverterDataHZ*)cnv->extraInfo)->isEmptySegment = false;
}
@@ -118,7 +118,7 @@ _HZReset(UConverter *cnv, UConverterResetChoice choice){
if(choice!=UCNV_RESET_TO_UNICODE) {
cnv->fromUnicodeStatus= 0;
cnv->fromUChar32=0x0000;
- if(cnv->extraInfo != NULL){
+ if(cnv->extraInfo != nullptr){
((UConverterDataHZ*)cnv->extraInfo)->isEscapeAppended = false;
((UConverterDataHZ*)cnv->extraInfo)->targetIndex = 0;
((UConverterDataHZ*)cnv->extraInfo)->sourceIndex = 0;
@@ -157,7 +157,7 @@ UConverter_toUnicode_HZ_OFFSETS_LOGIC(UConverterToUnicodeArgs *args,
UErrorCode* err){
char tempBuf[2];
const char *mySource = ( char *) args->source;
- UChar *myTarget = args->target;
+ char16_t *myTarget = args->target;
const char *mySourceLimit = args->sourceLimit;
UChar32 targetUniChar = 0x0000;
int32_t mySourceChar = 0x0000;
@@ -166,7 +166,7 @@ UConverter_toUnicode_HZ_OFFSETS_LOGIC(UConverterToUnicodeArgs *args,
tempBuf[1]=0;
/* Calling code already handles this situation. */
- /*if ((args->converter == NULL) || (args->targetLimit < args->target) || (mySourceLimit < args->source)){
+ /*if ((args->converter == nullptr) || (args->targetLimit < args->target) || (mySourceLimit < args->source)){
*err = U_ILLEGAL_ARGUMENT_ERROR;
return;
}*/
@@ -188,7 +188,7 @@ UConverter_toUnicode_HZ_OFFSETS_LOGIC(UConverterToUnicodeArgs *args,
if(args->offsets) {
args->offsets[myTarget - args->target]=(int32_t)(mySource - args->source - 2);
}
- *(myTarget++)=(UChar)mySourceChar;
+ *(myTarget++)=(char16_t)mySourceChar;
myData->isEmptySegment = false;
continue;
case UCNV_OPEN_BRACE:
@@ -288,7 +288,7 @@ UConverter_toUnicode_HZ_OFFSETS_LOGIC(UConverterToUnicodeArgs *args,
args->converter->mode = UCNV_TILDE;
continue;
} else if(mySourceChar <= 0x7f) {
- targetUniChar = (UChar)mySourceChar; /* ASCII */
+ targetUniChar = (char16_t)mySourceChar; /* ASCII */
myData->isEmptySegment = false; /* the segment has something valid */
} else {
targetUniChar = 0xffff;
@@ -300,7 +300,7 @@ UConverter_toUnicode_HZ_OFFSETS_LOGIC(UConverterToUnicodeArgs *args,
args->offsets[myTarget - args->target]=(int32_t)(mySource - args->source - 1-(myData->isStateDBCS));
}
- *(myTarget++)=(UChar)targetUniChar;
+ *(myTarget++)=(char16_t)targetUniChar;
}
else /* targetUniChar>=0xfffe */ {
if(targetUniChar == 0xfffe){
@@ -335,7 +335,7 @@ UConverter_toUnicode_HZ_OFFSETS_LOGIC(UConverterToUnicodeArgs *args,
static void U_CALLCONV
UConverter_fromUnicode_HZ_OFFSETS_LOGIC (UConverterFromUnicodeArgs * args,
UErrorCode * err){
- const UChar *mySource = args->source;
+ const char16_t *mySource = args->source;
char *myTarget = args->target;
int32_t* offsets = args->offsets;
int32_t mySourceIndex = 0;
@@ -348,10 +348,10 @@ UConverter_fromUnicode_HZ_OFFSETS_LOGIC (UConverterFromUnicodeArgs * args,
UBool isTargetUCharDBCS = (UBool) myConverterData->isTargetUCharDBCS;
UBool oldIsTargetUCharDBCS;
int len =0;
- const char* escSeq=NULL;
+ const char* escSeq=nullptr;
/* Calling code already handles this situation. */
- /*if ((args->converter == NULL) || (args->targetLimit < myTarget) || (args->sourceLimit < args->source)){
+ /*if ((args->converter == nullptr) || (args->targetLimit < myTarget) || (args->sourceLimit < args->source)){
*err = U_ILLEGAL_ARGUMENT_ERROR;
return;
}*/
@@ -363,7 +363,7 @@ UConverter_fromUnicode_HZ_OFFSETS_LOGIC (UConverterFromUnicodeArgs * args,
targetUniChar = missingCharMarker;
if (myTargetIndex < targetLength){
- mySourceChar = (UChar) mySource[mySourceIndex++];
+ mySourceChar = (char16_t) mySource[mySourceIndex++];
oldIsTargetUCharDBCS = isTargetUCharDBCS;
@@ -453,7 +453,7 @@ getTrail:
/*look ahead to find the trail surrogate*/
if(mySourceIndex < mySourceLength) {
/* test the following code unit */
- UChar trail=(UChar) args->source[mySourceIndex];
+ char16_t trail=(char16_t) args->source[mySourceIndex];
if(U16_IS_TRAIL(trail)) {
++mySourceIndex;
mySourceChar=U16_GET_SUPPLEMENTARY(args->converter->fromUChar32, trail);
@@ -579,8 +579,8 @@ static const UConverterImpl _HZImpl={
UCNV_HZ,
- NULL,
- NULL,
+ nullptr,
+ nullptr,
_HZOpen,
_HZClose,
@@ -590,15 +590,15 @@ static const UConverterImpl _HZImpl={
UConverter_toUnicode_HZ_OFFSETS_LOGIC,
UConverter_fromUnicode_HZ_OFFSETS_LOGIC,
UConverter_fromUnicode_HZ_OFFSETS_LOGIC,
- NULL,
+ nullptr,
- NULL,
- NULL,
+ nullptr,
+ nullptr,
_HZ_WriteSub,
_HZ_SafeClone,
_HZ_GetUnicodeSet,
- NULL,
- NULL
+ nullptr,
+ nullptr
};
static const UConverterStaticData _HZStaticData={
diff --git a/Build/source/libs/icu/icu-src/source/common/ucnvisci.cpp b/Build/source/libs/icu/icu-src/source/common/ucnvisci.cpp
index 4d747e1ff84..507a50c8925 100644
--- a/Build/source/libs/icu/icu-src/source/common/ucnvisci.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ucnvisci.cpp
@@ -119,8 +119,8 @@ typedef enum {
#define ISCII_CNV_PREFIX "ISCII,version="
typedef struct {
- UChar contextCharToUnicode; /* previous Unicode codepoint for contextual analysis */
- UChar contextCharFromUnicode; /* previous Unicode codepoint for contextual analysis */
+ char16_t contextCharToUnicode; /* previous Unicode codepoint for contextual analysis */
+ char16_t contextCharFromUnicode; /* previous Unicode codepoint for contextual analysis */
uint16_t defDeltaToUnicode; /* delta for switching to default state when DEF is encountered */
uint16_t currentDeltaFromUnicode; /* current delta in Indic block */
uint16_t currentDeltaToUnicode; /* current delta in Indic block */
@@ -195,7 +195,7 @@ _ISCIIOpen(UConverter *cnv, UConverterLoadArgs *pArgs, UErrorCode *errorCode) {
cnv->extraInfo = uprv_malloc(sizeof(UConverterDataISCII));
- if (cnv->extraInfo != NULL) {
+ if (cnv->extraInfo != nullptr) {
int32_t len=0;
UConverterDataISCII *converterData=
(UConverterDataISCII *) cnv->extraInfo;
@@ -223,7 +223,7 @@ _ISCIIOpen(UConverter *cnv, UConverterLoadArgs *pArgs, UErrorCode *errorCode) {
converterData->prevToUnicodeStatus = 0x0000;
} else {
uprv_free(cnv->extraInfo);
- cnv->extraInfo = NULL;
+ cnv->extraInfo = nullptr;
*errorCode = U_ILLEGAL_ARGUMENT_ERROR;
}
@@ -234,11 +234,11 @@ _ISCIIOpen(UConverter *cnv, UConverterLoadArgs *pArgs, UErrorCode *errorCode) {
static void U_CALLCONV
_ISCIIClose(UConverter *cnv) {
- if (cnv->extraInfo!=NULL) {
+ if (cnv->extraInfo!=nullptr) {
if (!cnv->isExtraLocal) {
uprv_free(cnv->extraInfo);
}
- cnv->extraInfo=NULL;
+ cnv->extraInfo=nullptr;
}
}
@@ -248,7 +248,7 @@ _ISCIIgetName(const UConverter* cnv) {
UConverterDataISCII* myData= (UConverterDataISCII*)cnv->extraInfo;
return myData->name;
}
- return NULL;
+ return nullptr;
}
static void U_CALLCONV
@@ -895,8 +895,8 @@ static const uint16_t nuktaSpecialCases[][2]={
static void U_CALLCONV
UConverter_fromUnicode_ISCII_OFFSETS_LOGIC(
UConverterFromUnicodeArgs * args, UErrorCode * err) {
- const UChar *source = args->source;
- const UChar *sourceLimit = args->sourceLimit;
+ const char16_t *source = args->source;
+ const char16_t *sourceLimit = args->sourceLimit;
unsigned char *target = (unsigned char *) args->target;
unsigned char *targetLimit = (unsigned char *) args->targetLimit;
int32_t* offsets = args->offsets;
@@ -908,7 +908,7 @@ UConverter_fromUnicode_ISCII_OFFSETS_LOGIC(
uint16_t range = 0;
UBool deltaChanged = false;
- if ((args->converter == NULL) || (args->targetLimit < args->target) || (args->sourceLimit < args->source)) {
+ if ((args->converter == nullptr) || (args->targetLimit < args->target) || (args->sourceLimit < args->source)) {
*err = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
@@ -1052,7 +1052,7 @@ UConverter_fromUnicode_ISCII_OFFSETS_LOGIC(
}
} else if (targetByteUnit != missingCharMarker) {
if (targetByteUnit==ISCII_HALANT) {
- converterData->contextCharFromUnicode = (UChar)targetByteUnit;
+ converterData->contextCharFromUnicode = (char16_t)targetByteUnit;
}
/* write targetByteUnit to target*/
WRITE_TO_TARGET_FROM_U(args,offsets,source,target,targetLimit,targetByteUnit,err);
@@ -1068,7 +1068,7 @@ getTrail:
/*look ahead to find the trail surrogate*/
if (source < sourceLimit) {
/* test the following code unit */
- UChar trail= (*source);
+ char16_t trail= (*source);
if (U16_IS_TRAIL(trail)) {
source++;
sourceChar=U16_GET_SUPPLEMENTARY(sourceChar, trail);
@@ -1131,13 +1131,13 @@ static const uint16_t lookupTable[][2]={
} \
/* now write the targetUniChar */ \
if(target<args->targetLimit){ \
- *(target)++ = (UChar)targetUniChar; \
+ *(target)++ = (char16_t)targetUniChar; \
if(offsets){ \
*(offsets)++ = (int32_t)(offset); \
} \
}else{ \
args->converter->UCharErrorBuffer[args->converter->UCharErrorBufferLength++] = \
- (UChar)targetUniChar; \
+ (char16_t)targetUniChar; \
*err = U_BUFFER_OVERFLOW_ERROR; \
} \
} UPRV_BLOCK_MACRO_END
@@ -1179,20 +1179,20 @@ static const uint16_t lookupTable[][2]={
static void U_CALLCONV
UConverter_toUnicode_ISCII_OFFSETS_LOGIC(UConverterToUnicodeArgs *args, UErrorCode* err) {
const char *source = ( char *) args->source;
- UChar *target = args->target;
+ char16_t *target = args->target;
const char *sourceLimit = args->sourceLimit;
- const UChar* targetLimit = args->targetLimit;
+ const char16_t* targetLimit = args->targetLimit;
uint32_t targetUniChar = 0x0000;
uint8_t sourceChar = 0x0000;
UConverterDataISCII* data;
- UChar32* toUnicodeStatus=NULL;
+ UChar32* toUnicodeStatus=nullptr;
UChar32 tempTargetUniChar = 0x0000;
- UChar* contextCharToUnicode= NULL;
+ char16_t* contextCharToUnicode= nullptr;
UBool found;
int i;
int offset = 0;
- if ((args->converter == NULL) || (target < args->target) || (source < args->source)) {
+ if ((args->converter == nullptr) || (target < args->target) || (source < args->source)) {
*err = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
@@ -1293,7 +1293,7 @@ UConverter_toUnicode_ISCII_OFFSETS_LOGIC(UConverterToUnicodeArgs *args, UErrorCo
case ISCII_INV:
case EXT:
case ATR:
- *contextCharToUnicode = (UChar)sourceChar;
+ *contextCharToUnicode = (char16_t)sourceChar;
if (*toUnicodeStatus != missingCharMarker) {
/* Write the previous toUnicodeStatus, this was delayed to handle consonant clustering for Gurmukhi script. */
@@ -1471,8 +1471,8 @@ UConverter_toUnicode_ISCII_OFFSETS_LOGIC(UConverterToUnicodeArgs *args, UErrorCo
if (targetUniChar != missingCharMarker) {
/* now save the targetUniChar for delayed write */
- *toUnicodeStatus = (UChar) targetUniChar;
- if (data->resetToDefaultToUnicode==true) {
+ *toUnicodeStatus = (char16_t) targetUniChar;
+ if (data->resetToDefaultToUnicode) {
data->currentDeltaToUnicode = data->defDeltaToUnicode;
data->currentMaskToUnicode = data->defMaskToUnicode;
data->resetToDefaultToUnicode=false;
@@ -1589,8 +1589,8 @@ static const UConverterImpl _ISCIIImpl={
UCNV_ISCII,
- NULL,
- NULL,
+ nullptr,
+ nullptr,
_ISCIIOpen,
_ISCIIClose,
@@ -1600,15 +1600,15 @@ static const UConverterImpl _ISCIIImpl={
UConverter_toUnicode_ISCII_OFFSETS_LOGIC,
UConverter_fromUnicode_ISCII_OFFSETS_LOGIC,
UConverter_fromUnicode_ISCII_OFFSETS_LOGIC,
- NULL,
+ nullptr,
- NULL,
+ nullptr,
_ISCIIgetName,
- NULL,
+ nullptr,
_ISCII_SafeClone,
_ISCIIGetUnicodeSet,
- NULL,
- NULL
+ nullptr,
+ nullptr
};
static const UConverterStaticData _ISCIIStaticData={
diff --git a/Build/source/libs/icu/icu-src/source/common/ucnvlat1.cpp b/Build/source/libs/icu/icu-src/source/common/ucnvlat1.cpp
index 05aad6a0e03..09206885269 100644
--- a/Build/source/libs/icu/icu-src/source/common/ucnvlat1.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ucnvlat1.cpp
@@ -36,7 +36,7 @@ static void U_CALLCONV
_Latin1ToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
UErrorCode *pErrorCode) {
const uint8_t *source;
- UChar *target;
+ char16_t *target;
int32_t targetCapacity, length;
int32_t *offsets;
@@ -51,7 +51,7 @@ _Latin1ToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
sourceIndex=0;
/*
- * since the conversion here is 1:1 UChar:uint8_t, we need only one counter
+ * since the conversion here is 1:1 char16_t:uint8_t, we need only one counter
* for the minimum of the sourceLength and targetCapacity
*/
length=(int32_t)((const uint8_t *)pArgs->sourceLimit-source);
@@ -82,7 +82,7 @@ _Latin1ToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
source+=8;
} while(--count>0);
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
do {
offsets[0]=sourceIndex++;
offsets[1]=sourceIndex++;
@@ -108,7 +108,7 @@ _Latin1ToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
pArgs->target=target;
/* set offsets */
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
while(length>0) {
*offsets++=sourceIndex++;
--length;
@@ -137,13 +137,13 @@ static void U_CALLCONV
_Latin1FromUnicodeWithOffsets(UConverterFromUnicodeArgs *pArgs,
UErrorCode *pErrorCode) {
UConverter *cnv;
- const UChar *source, *sourceLimit;
+ const char16_t *source, *sourceLimit;
uint8_t *target, *oldTarget;
int32_t targetCapacity, length;
int32_t *offsets;
UChar32 cp;
- UChar c, max;
+ char16_t c, max;
int32_t sourceIndex;
@@ -168,7 +168,7 @@ _Latin1FromUnicodeWithOffsets(UConverterFromUnicodeArgs *pArgs,
sourceIndex= cp==0 ? 0 : -1;
/*
- * since the conversion here is 1:1 UChar:uint8_t, we need only one counter
+ * since the conversion here is 1:1 char16_t:uint8_t, we need only one counter
* for the minimum of the sourceLength and targetCapacity
*/
length=(int32_t)(sourceLimit-source);
@@ -185,7 +185,7 @@ _Latin1FromUnicodeWithOffsets(UConverterFromUnicodeArgs *pArgs,
/* unroll the loop with the most common case */
if(targetCapacity>=16) {
int32_t count, loops;
- UChar u, oredChars;
+ char16_t u, oredChars;
loops=count=targetCapacity>>4;
do {
@@ -233,7 +233,7 @@ _Latin1FromUnicodeWithOffsets(UConverterFromUnicodeArgs *pArgs,
count=loops-count;
targetCapacity-=16*count;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
oldTarget+=16*count;
while(count>0) {
*offsets++=sourceIndex++;
@@ -274,7 +274,7 @@ _Latin1FromUnicodeWithOffsets(UConverterFromUnicodeArgs *pArgs,
getTrail:
if(source<sourceLimit) {
/* test the following code unit */
- UChar trail=*source;
+ char16_t trail=*source;
if(U16_IS_TRAIL(trail)) {
++source;
cp=U16_GET_SUPPLEMENTARY(cp, trail);
@@ -300,7 +300,7 @@ getTrail:
noMoreInput:
/* set offsets since the start */
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
size_t count=target-oldTarget;
while(count>0) {
*offsets++=sourceIndex++;
@@ -438,12 +438,12 @@ U_CDECL_END
static const UConverterImpl _Latin1Impl={
UCNV_LATIN_1,
- NULL,
- NULL,
+ nullptr,
+ nullptr,
- NULL,
- NULL,
- NULL,
+ nullptr,
+ nullptr,
+ nullptr,
_Latin1ToUnicodeWithOffsets,
_Latin1ToUnicodeWithOffsets,
@@ -451,13 +451,13 @@ static const UConverterImpl _Latin1Impl={
_Latin1FromUnicodeWithOffsets,
_Latin1GetNextUChar,
- NULL,
- NULL,
- NULL,
- NULL,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
_Latin1GetUnicodeSet,
- NULL,
+ nullptr,
ucnv_Latin1FromUTF8
};
@@ -482,7 +482,7 @@ static void U_CALLCONV
_ASCIIToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
UErrorCode *pErrorCode) {
const uint8_t *source, *sourceLimit;
- UChar *target, *oldTarget;
+ char16_t *target, *oldTarget;
int32_t targetCapacity, length;
int32_t *offsets;
@@ -501,7 +501,7 @@ _ASCIIToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
sourceIndex=0;
/*
- * since the conversion here is 1:1 UChar:uint8_t, we need only one counter
+ * since the conversion here is 1:1 char16_t:uint8_t, we need only one counter
* for the minimum of the sourceLength and targetCapacity
*/
length=(int32_t)(sourceLimit-source);
@@ -512,7 +512,7 @@ _ASCIIToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
if(targetCapacity>=8) {
/* This loop is unrolled for speed and improved pipelining. */
int32_t count, loops;
- UChar oredChars;
+ char16_t oredChars;
loops=count=targetCapacity>>3;
do {
@@ -536,7 +536,7 @@ _ASCIIToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
count=loops-count;
targetCapacity-=count*8;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
oldTarget+=count*8;
while(count>0) {
offsets[0]=sourceIndex++;
@@ -572,7 +572,7 @@ _ASCIIToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
}
/* set offsets since the start */
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
size_t count=target-oldTarget;
while(count>0) {
*offsets++=sourceIndex++;
@@ -717,12 +717,12 @@ U_CDECL_END
static const UConverterImpl _ASCIIImpl={
UCNV_US_ASCII,
- NULL,
- NULL,
+ nullptr,
+ nullptr,
- NULL,
- NULL,
- NULL,
+ nullptr,
+ nullptr,
+ nullptr,
_ASCIIToUnicodeWithOffsets,
_ASCIIToUnicodeWithOffsets,
@@ -730,13 +730,13 @@ static const UConverterImpl _ASCIIImpl={
_Latin1FromUnicodeWithOffsets,
_ASCIIGetNextUChar,
- NULL,
- NULL,
- NULL,
- NULL,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
_ASCIIGetUnicodeSet,
- NULL,
+ nullptr,
ucnv_ASCIIFromUTF8
};
diff --git a/Build/source/libs/icu/icu-src/source/common/ucnvmbcs.cpp b/Build/source/libs/icu/icu-src/source/common/ucnvmbcs.cpp
index 0e753c8ffbf..d7606039800 100644
--- a/Build/source/libs/icu/icu-src/source/common/ucnvmbcs.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ucnvmbcs.cpp
@@ -438,8 +438,8 @@ static const UConverterImpl _SBCSUTF8Impl={
ucnv_MBCSUnload,
ucnv_MBCSOpen,
- NULL,
- NULL,
+ nullptr,
+ nullptr,
ucnv_MBCSToUnicodeWithOffsets,
ucnv_MBCSToUnicodeWithOffsets,
@@ -450,10 +450,10 @@ static const UConverterImpl _SBCSUTF8Impl={
ucnv_MBCSGetStarters,
ucnv_MBCSGetName,
ucnv_MBCSWriteSub,
- NULL,
+ nullptr,
ucnv_MBCSGetUnicodeSet,
- NULL,
+ nullptr,
ucnv_SBCSFromUTF8
};
@@ -464,8 +464,8 @@ static const UConverterImpl _DBCSUTF8Impl={
ucnv_MBCSUnload,
ucnv_MBCSOpen,
- NULL,
- NULL,
+ nullptr,
+ nullptr,
ucnv_MBCSToUnicodeWithOffsets,
ucnv_MBCSToUnicodeWithOffsets,
@@ -476,10 +476,10 @@ static const UConverterImpl _DBCSUTF8Impl={
ucnv_MBCSGetStarters,
ucnv_MBCSGetName,
ucnv_MBCSWriteSub,
- NULL,
+ nullptr,
ucnv_MBCSGetUnicodeSet,
- NULL,
+ nullptr,
ucnv_DBCSFromUTF8
};
@@ -490,8 +490,8 @@ static const UConverterImpl _MBCSImpl={
ucnv_MBCSUnload,
ucnv_MBCSOpen,
- NULL,
- NULL,
+ nullptr,
+ nullptr,
ucnv_MBCSToUnicodeWithOffsets,
ucnv_MBCSToUnicodeWithOffsets,
@@ -502,10 +502,10 @@ static const UConverterImpl _MBCSImpl={
ucnv_MBCSGetStarters,
ucnv_MBCSGetName,
ucnv_MBCSWriteSub,
- NULL,
+ nullptr,
ucnv_MBCSGetUnicodeSet,
- NULL,
- NULL
+ nullptr,
+ nullptr
};
/* Static data is in tools/makeconv/ucnvstat.c for data-based
@@ -514,7 +514,7 @@ static const UConverterImpl _MBCSImpl={
const UConverterSharedData _MBCSData={
sizeof(UConverterSharedData), 1,
- NULL, NULL, false, true, &_MBCSImpl,
+ nullptr, nullptr, false, true, &_MBCSImpl,
0, UCNV_MBCS_TABLE_INITIALIZER
};
@@ -683,7 +683,7 @@ enumToU(UConverterMBCSTable *mbcsTable, int8_t stateProps[],
action=MBCS_ENTRY_FINAL_ACTION(entry);
if(action==MBCS_STATE_VALID_DIRECT_16) {
/* output BMP code point */
- c=(UChar)MBCS_ENTRY_FINAL_VALUE_16(entry);
+ c=(char16_t)MBCS_ENTRY_FINAL_VALUE_16(entry);
} else if(action==MBCS_STATE_VALID_16) {
int32_t finalOffset=offset+MBCS_ENTRY_FINAL_VALUE_16(entry);
c=unicodeCodeUnits[finalOffset];
@@ -1104,7 +1104,7 @@ ucnv_MBCSGetUnicodeSet(const UConverter *cnv,
static UChar32
_extFromU(UConverter *cnv, const UConverterSharedData *sharedData,
UChar32 cp,
- const UChar **source, const UChar *sourceLimit,
+ const char16_t **source, const char16_t *sourceLimit,
uint8_t **target, const uint8_t *targetLimit,
int32_t **offsets, int32_t sourceIndex,
UBool flush,
@@ -1113,7 +1113,7 @@ _extFromU(UConverter *cnv, const UConverterSharedData *sharedData,
cnv->useSubChar1=false;
- if( (cx=sharedData->mbcs.extIndexes)!=NULL &&
+ if( (cx=sharedData->mbcs.extIndexes)!=nullptr &&
ucnv_extInitialMatchFromU(
cnv, cx,
cp, source, sourceLimit,
@@ -1172,13 +1172,13 @@ static int8_t
_extToU(UConverter *cnv, const UConverterSharedData *sharedData,
int8_t length,
const uint8_t **source, const uint8_t *sourceLimit,
- UChar **target, const UChar *targetLimit,
+ char16_t **target, const char16_t *targetLimit,
int32_t **offsets, int32_t sourceIndex,
UBool flush,
UErrorCode *pErrorCode) {
const int32_t *cx;
- if( (cx=sharedData->mbcs.extIndexes)!=NULL &&
+ if( (cx=sharedData->mbcs.extIndexes)!=nullptr &&
ucnv_extInitialMatchToU(
cnv, cx,
length, (const char **)source, (const char *)sourceLimit,
@@ -1349,7 +1349,7 @@ _EBCDICSwapLFNL(UConverterSharedData *sharedData, UErrorCode *pErrorCode) {
sizeofFromUBytes+
UCNV_MAX_CONVERTER_NAME_LENGTH+20;
p=(uint8_t *)uprv_malloc(size);
- if(p==NULL) {
+ if(p==nullptr) {
*pErrorCode=U_MEMORY_ALLOCATION_ERROR;
return false;
}
@@ -1383,18 +1383,18 @@ _EBCDICSwapLFNL(UConverterSharedData *sharedData, UErrorCode *pErrorCode) {
uprv_strcat(name, UCNV_SWAP_LFNL_OPTION_STRING);
/* set the pointers */
- icu::umtx_lock(NULL);
- if(mbcsTable->swapLFNLStateTable==NULL) {
+ icu::umtx_lock(nullptr);
+ if(mbcsTable->swapLFNLStateTable==nullptr) {
mbcsTable->swapLFNLStateTable=newStateTable;
mbcsTable->swapLFNLFromUnicodeBytes=(uint8_t *)newResults;
mbcsTable->swapLFNLName=name;
- newStateTable=NULL;
+ newStateTable=nullptr;
}
- icu::umtx_unlock(NULL);
+ icu::umtx_unlock(nullptr);
/* release the allocated memory if another thread beat us to it */
- if(newStateTable!=NULL) {
+ if(newStateTable!=nullptr) {
uprv_free(newStateTable);
}
return true;
@@ -1489,7 +1489,7 @@ reconstituteData(UConverterMBCSTable *mbcsTable,
uint32_t *stage2;
uint32_t dataLength=stage1Length*2+fullStage2Length*4+mbcsTable->fromUBytesLength;
mbcsTable->reconstitutedData=(uint8_t *)uprv_malloc(dataLength);
- if(mbcsTable->reconstitutedData==NULL) {
+ if(mbcsTable->reconstitutedData==nullptr) {
*pErrorCode=U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -1593,7 +1593,7 @@ ucnv_MBCSLoad(UConverterSharedData *sharedData,
const char *baseName;
/* extension-only file, load the base table and set values appropriately */
- if((extIndexes=mbcsTable->extIndexes)==NULL) {
+ if((extIndexes=mbcsTable->extIndexes)==nullptr) {
/* extension-only file without extension */
*pErrorCode=U_INVALID_TABLE_FORMAT;
return;
@@ -1626,7 +1626,7 @@ ucnv_MBCSLoad(UConverterSharedData *sharedData,
return;
}
if( baseSharedData->staticData->conversionType!=UCNV_MBCS ||
- baseSharedData->mbcs.baseSharedData!=NULL
+ baseSharedData->mbcs.baseSharedData!=nullptr
) {
ucnv_unload(baseSharedData);
*pErrorCode=U_INVALID_TABLE_FORMAT;
@@ -1657,15 +1657,15 @@ ucnv_MBCSLoad(UConverterSharedData *sharedData,
* 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;
+ mbcsTable->swapLFNLStateTable=nullptr;
+ mbcsTable->swapLFNLFromUnicodeBytes=nullptr;
+ mbcsTable->swapLFNLName=nullptr;
/*
* The reconstitutedData must be deleted only when the base converter
* is unloaded.
*/
- mbcsTable->reconstitutedData=NULL;
+ mbcsTable->reconstitutedData=nullptr;
/*
* Set a special, runtime-only outputType if the extension converter
@@ -1703,7 +1703,7 @@ ucnv_MBCSLoad(UConverterSharedData *sharedData,
/* allocate a new state table and copy the base state table contents */
count=mbcsTable->countStates;
newStateTable=(int32_t (*)[256])uprv_malloc((count+1)*1024);
- if(newStateTable==NULL) {
+ if(newStateTable==nullptr) {
ucnv_unload(baseSharedData);
*pErrorCode=U_MEMORY_ALLOCATION_ERROR;
return;
@@ -1828,7 +1828,7 @@ ucnv_MBCSLoad(UConverterSharedData *sharedData,
mbcsTable->mbcsIndex=(const uint16_t *)
(mbcsTable->fromUnicodeBytes+
(noFromU ? 0 : mbcsTable->fromUBytesLength));
- mbcsTable->maxFastUChar=(((UChar)header->version[2])<<8)|0xff;
+ mbcsTable->maxFastUChar=(((char16_t)header->version[2])<<8)|0xff;
}
}
@@ -1880,16 +1880,16 @@ static void U_CALLCONV
ucnv_MBCSUnload(UConverterSharedData *sharedData) {
UConverterMBCSTable *mbcsTable=&sharedData->mbcs;
- if(mbcsTable->swapLFNLStateTable!=NULL) {
+ if(mbcsTable->swapLFNLStateTable!=nullptr) {
uprv_free(mbcsTable->swapLFNLStateTable);
}
if(mbcsTable->stateTableOwned) {
uprv_free((void *)mbcsTable->stateTable);
}
- if(mbcsTable->baseSharedData!=NULL) {
+ if(mbcsTable->baseSharedData!=nullptr) {
ucnv_unload(mbcsTable->baseSharedData);
}
- if(mbcsTable->reconstitutedData!=NULL) {
+ if(mbcsTable->reconstitutedData!=nullptr) {
uprv_free(mbcsTable->reconstitutedData);
}
}
@@ -1919,9 +1919,9 @@ ucnv_MBCSOpen(UConverter *cnv,
/* do this because double-checked locking is broken */
UBool isCached;
- icu::umtx_lock(NULL);
- isCached=mbcsTable->swapLFNLStateTable!=NULL;
- icu::umtx_unlock(NULL);
+ icu::umtx_lock(nullptr);
+ isCached=mbcsTable->swapLFNLStateTable!=nullptr;
+ icu::umtx_unlock(nullptr);
if(!isCached) {
if(!_EBCDICSwapLFNL(cnv->sharedData, pErrorCode)) {
@@ -1935,18 +1935,18 @@ ucnv_MBCSOpen(UConverter *cnv,
}
}
- if(uprv_strstr(pArgs->name, "18030")!=NULL) {
- if(uprv_strstr(pArgs->name, "gb18030")!=NULL || uprv_strstr(pArgs->name, "GB18030")!=NULL) {
+ if(uprv_strstr(pArgs->name, "18030")!=nullptr) {
+ if(uprv_strstr(pArgs->name, "gb18030")!=nullptr || uprv_strstr(pArgs->name, "GB18030")!=nullptr) {
/* set a flag for GB 18030 mode, which changes the callback behavior */
cnv->options|=_MBCS_OPTION_GB18030;
}
- } else if((uprv_strstr(pArgs->name, "KEIS")!=NULL) || (uprv_strstr(pArgs->name, "keis")!=NULL)) {
+ } else if((uprv_strstr(pArgs->name, "KEIS")!=nullptr) || (uprv_strstr(pArgs->name, "keis")!=nullptr)) {
/* set a flag for KEIS converter, which changes the SI/SO character sequence */
cnv->options|=_MBCS_OPTION_KEIS;
- } else if((uprv_strstr(pArgs->name, "JEF")!=NULL) || (uprv_strstr(pArgs->name, "jef")!=NULL)) {
+ } else if((uprv_strstr(pArgs->name, "JEF")!=nullptr) || (uprv_strstr(pArgs->name, "jef")!=nullptr)) {
/* set a flag for JEF converter, which changes the SI/SO character sequence */
cnv->options|=_MBCS_OPTION_JEF;
- } else if((uprv_strstr(pArgs->name, "JIPS")!=NULL) || (uprv_strstr(pArgs->name, "jips")!=NULL)) {
+ } else if((uprv_strstr(pArgs->name, "JIPS")!=nullptr) || (uprv_strstr(pArgs->name, "jips")!=nullptr)) {
/* set a flag for JIPS converter, which changes the SI/SO character sequence */
cnv->options|=_MBCS_OPTION_JIPS;
}
@@ -1957,7 +1957,7 @@ ucnv_MBCSOpen(UConverter *cnv,
}
extIndexes=mbcsTable->extIndexes;
- if(extIndexes!=NULL) {
+ if(extIndexes!=nullptr) {
maxBytesPerUChar=(int8_t)UCNV_GET_MAX_BYTES_PER_UCHAR(extIndexes);
if(outputType==MBCS_OUTPUT_2_SISO) {
++maxBytesPerUChar; /* SO + multiple DBCS */
@@ -1989,7 +1989,7 @@ U_CDECL_BEGIN
static const char* U_CALLCONV
ucnv_MBCSGetName(const UConverter *cnv) {
- if((cnv->options&UCNV_OPTION_SWAP_LFNL)!=0 && cnv->sharedData->mbcs.swapLFNLName!=NULL) {
+ if((cnv->options&UCNV_OPTION_SWAP_LFNL)!=0 && cnv->sharedData->mbcs.swapLFNLName!=nullptr) {
return cnv->sharedData->mbcs.swapLFNLName;
} else {
return cnv->sharedData->staticData->name;
@@ -2034,8 +2034,8 @@ ucnv_MBCSSingleToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
UErrorCode *pErrorCode) {
UConverter *cnv;
const uint8_t *source, *sourceLimit;
- UChar *target;
- const UChar *targetLimit;
+ char16_t *target;
+ const char16_t *targetLimit;
int32_t *offsets;
const int32_t (*stateTable)[256];
@@ -2043,7 +2043,7 @@ ucnv_MBCSSingleToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
int32_t sourceIndex;
int32_t entry;
- UChar c;
+ char16_t c;
uint8_t action;
/* set up the local pointers */
@@ -2085,8 +2085,8 @@ ucnv_MBCSSingleToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
/* test the most common case first */
if(MBCS_ENTRY_FINAL_IS_VALID_DIRECT_16(entry)) {
/* output BMP code point */
- *target++=(UChar)MBCS_ENTRY_FINAL_VALUE_16(entry);
- if(offsets!=NULL) {
+ *target++=(char16_t)MBCS_ENTRY_FINAL_VALUE_16(entry);
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
}
@@ -2105,14 +2105,14 @@ ucnv_MBCSSingleToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
) {
entry=MBCS_ENTRY_FINAL_VALUE(entry);
/* output surrogate pair */
- *target++=(UChar)(0xd800|(UChar)(entry>>10));
- if(offsets!=NULL) {
+ *target++=(char16_t)(0xd800|(char16_t)(entry>>10));
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
}
- c=(UChar)(0xdc00|(UChar)(entry&0x3ff));
+ c=(char16_t)(0xdc00|(char16_t)(entry&0x3ff));
if(target<targetLimit) {
*target++=c;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
}
} else {
@@ -2128,8 +2128,8 @@ ucnv_MBCSSingleToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
} else if(action==MBCS_STATE_FALLBACK_DIRECT_16) {
if(UCNV_TO_U_USE_FALLBACK(cnv)) {
/* output BMP code point */
- *target++=(UChar)MBCS_ENTRY_FINAL_VALUE_16(entry);
- if(offsets!=NULL) {
+ *target++=(char16_t)MBCS_ENTRY_FINAL_VALUE_16(entry);
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
}
@@ -2186,7 +2186,7 @@ ucnv_MBCSSingleToBMPWithOffsets(UConverterToUnicodeArgs *pArgs,
UErrorCode *pErrorCode) {
UConverter *cnv;
const uint8_t *source, *sourceLimit, *lastSource;
- UChar *target;
+ char16_t *target;
int32_t targetCapacity, length;
int32_t *offsets;
@@ -2216,7 +2216,7 @@ ucnv_MBCSSingleToBMPWithOffsets(UConverterToUnicodeArgs *pArgs,
lastSource=source;
/*
- * since the conversion here is 1:1 UChar:uint8_t, we need only one counter
+ * since the conversion here is 1:1 char16_t:uint8_t, we need only one counter
* for the minimum of the sourceLength and targetCapacity
*/
length=(int32_t)(sourceLimit-source);
@@ -2234,37 +2234,37 @@ unrolled:
loops=count=targetCapacity>>4;
do {
oredEntries=entry=stateTable[0][*source++];
- *target++=(UChar)MBCS_ENTRY_FINAL_VALUE_16(entry);
+ *target++=(char16_t)MBCS_ENTRY_FINAL_VALUE_16(entry);
oredEntries|=entry=stateTable[0][*source++];
- *target++=(UChar)MBCS_ENTRY_FINAL_VALUE_16(entry);
+ *target++=(char16_t)MBCS_ENTRY_FINAL_VALUE_16(entry);
oredEntries|=entry=stateTable[0][*source++];
- *target++=(UChar)MBCS_ENTRY_FINAL_VALUE_16(entry);
+ *target++=(char16_t)MBCS_ENTRY_FINAL_VALUE_16(entry);
oredEntries|=entry=stateTable[0][*source++];
- *target++=(UChar)MBCS_ENTRY_FINAL_VALUE_16(entry);
+ *target++=(char16_t)MBCS_ENTRY_FINAL_VALUE_16(entry);
oredEntries|=entry=stateTable[0][*source++];
- *target++=(UChar)MBCS_ENTRY_FINAL_VALUE_16(entry);
+ *target++=(char16_t)MBCS_ENTRY_FINAL_VALUE_16(entry);
oredEntries|=entry=stateTable[0][*source++];
- *target++=(UChar)MBCS_ENTRY_FINAL_VALUE_16(entry);
+ *target++=(char16_t)MBCS_ENTRY_FINAL_VALUE_16(entry);
oredEntries|=entry=stateTable[0][*source++];
- *target++=(UChar)MBCS_ENTRY_FINAL_VALUE_16(entry);
+ *target++=(char16_t)MBCS_ENTRY_FINAL_VALUE_16(entry);
oredEntries|=entry=stateTable[0][*source++];
- *target++=(UChar)MBCS_ENTRY_FINAL_VALUE_16(entry);
+ *target++=(char16_t)MBCS_ENTRY_FINAL_VALUE_16(entry);
oredEntries|=entry=stateTable[0][*source++];
- *target++=(UChar)MBCS_ENTRY_FINAL_VALUE_16(entry);
+ *target++=(char16_t)MBCS_ENTRY_FINAL_VALUE_16(entry);
oredEntries|=entry=stateTable[0][*source++];
- *target++=(UChar)MBCS_ENTRY_FINAL_VALUE_16(entry);
+ *target++=(char16_t)MBCS_ENTRY_FINAL_VALUE_16(entry);
oredEntries|=entry=stateTable[0][*source++];
- *target++=(UChar)MBCS_ENTRY_FINAL_VALUE_16(entry);
+ *target++=(char16_t)MBCS_ENTRY_FINAL_VALUE_16(entry);
oredEntries|=entry=stateTable[0][*source++];
- *target++=(UChar)MBCS_ENTRY_FINAL_VALUE_16(entry);
+ *target++=(char16_t)MBCS_ENTRY_FINAL_VALUE_16(entry);
oredEntries|=entry=stateTable[0][*source++];
- *target++=(UChar)MBCS_ENTRY_FINAL_VALUE_16(entry);
+ *target++=(char16_t)MBCS_ENTRY_FINAL_VALUE_16(entry);
oredEntries|=entry=stateTable[0][*source++];
- *target++=(UChar)MBCS_ENTRY_FINAL_VALUE_16(entry);
+ *target++=(char16_t)MBCS_ENTRY_FINAL_VALUE_16(entry);
oredEntries|=entry=stateTable[0][*source++];
- *target++=(UChar)MBCS_ENTRY_FINAL_VALUE_16(entry);
+ *target++=(char16_t)MBCS_ENTRY_FINAL_VALUE_16(entry);
oredEntries|=entry=stateTable[0][*source++];
- *target++=(UChar)MBCS_ENTRY_FINAL_VALUE_16(entry);
+ *target++=(char16_t)MBCS_ENTRY_FINAL_VALUE_16(entry);
/* were all 16 entries really valid? */
if(!MBCS_ENTRY_FINAL_IS_VALID_DIRECT_16(oredEntries)) {
@@ -2277,7 +2277,7 @@ unrolled:
count=loops-count;
targetCapacity-=16*count;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
lastSource+=16*count;
while(count>0) {
*offsets++=sourceIndex++;
@@ -2310,7 +2310,7 @@ unrolled:
/* test the most common case first */
if(MBCS_ENTRY_FINAL_IS_VALID_DIRECT_16(entry)) {
/* output BMP code point */
- *target++=(UChar)MBCS_ENTRY_FINAL_VALUE_16(entry);
+ *target++=(char16_t)MBCS_ENTRY_FINAL_VALUE_16(entry);
--targetCapacity;
continue;
}
@@ -2323,7 +2323,7 @@ unrolled:
if(action==MBCS_STATE_FALLBACK_DIRECT_16) {
if(UCNV_TO_U_USE_FALLBACK(cnv)) {
/* output BMP code point */
- *target++=(UChar)MBCS_ENTRY_FINAL_VALUE_16(entry);
+ *target++=(char16_t)MBCS_ENTRY_FINAL_VALUE_16(entry);
--targetCapacity;
continue;
}
@@ -2338,7 +2338,7 @@ unrolled:
}
/* set offsets since the start or the last extension */
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
int32_t count=(int32_t)(source-lastSource);
/* predecrement: do not set the offset for the callback-causing character */
@@ -2388,7 +2388,7 @@ unrolled:
}
/* set offsets since the start or the last callback */
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
size_t count=source-lastSource;
while(count>0) {
*offsets++=sourceIndex++;
@@ -2466,8 +2466,8 @@ ucnv_MBCSToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
UErrorCode *pErrorCode) {
UConverter *cnv;
const uint8_t *source, *sourceLimit;
- UChar *target;
- const UChar *targetLimit;
+ char16_t *target;
+ const char16_t *targetLimit;
int32_t *offsets;
const int32_t (*stateTable)[256];
@@ -2481,7 +2481,7 @@ ucnv_MBCSToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
int32_t sourceIndex, nextSourceIndex;
int32_t entry;
- UChar c;
+ char16_t c;
uint8_t action;
/* use optimized function if possible */
@@ -2558,7 +2558,7 @@ ucnv_MBCSToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
if(byteIndex==0) {
/* optimized loop for 1/2-byte input and BMP output */
- if(offsets==NULL) {
+ if(offsets==nullptr) {
do {
entry=stateTable[state][*source];
if(MBCS_ENTRY_IS_TRANSITION(entry)) {
@@ -2585,7 +2585,7 @@ ucnv_MBCSToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
if(MBCS_ENTRY_FINAL_IS_VALID_DIRECT_16(entry)) {
/* output BMP code point */
++source;
- *target++=(UChar)MBCS_ENTRY_FINAL_VALUE_16(entry);
+ *target++=(char16_t)MBCS_ENTRY_FINAL_VALUE_16(entry);
state=(uint8_t)MBCS_ENTRY_FINAL_STATE(entry); /* typically 0 */
} else {
/* leave the optimized loop */
@@ -2593,7 +2593,7 @@ ucnv_MBCSToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
}
}
} while(source<sourceLimit && target<targetLimit);
- } else /* offsets!=NULL */ {
+ } else /* offsets!=nullptr */ {
do {
entry=stateTable[state][*source];
if(MBCS_ENTRY_IS_TRANSITION(entry)) {
@@ -2608,7 +2608,7 @@ ucnv_MBCSToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
) {
++source;
*target++=c;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
sourceIndex=(nextSourceIndex+=2);
}
@@ -2625,8 +2625,8 @@ ucnv_MBCSToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
if(MBCS_ENTRY_FINAL_IS_VALID_DIRECT_16(entry)) {
/* output BMP code point */
++source;
- *target++=(UChar)MBCS_ENTRY_FINAL_VALUE_16(entry);
- if(offsets!=NULL) {
+ *target++=(char16_t)MBCS_ENTRY_FINAL_VALUE_16(entry);
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
sourceIndex=++nextSourceIndex;
}
@@ -2682,15 +2682,15 @@ ucnv_MBCSToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
if(c<0xfffe) {
/* output BMP code point */
*target++=c;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
}
byteIndex=0;
} else if(c==0xfffe) {
if(UCNV_TO_U_USE_FALLBACK(cnv) && (entry=(int32_t)ucnv_MBCSGetFallback(&cnv->sharedData->mbcs, offset))!=0xfffe) {
/* output fallback BMP code point */
- *target++=(UChar)entry;
- if(offsets!=NULL) {
+ *target++=(char16_t)entry;
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
}
byteIndex=0;
@@ -2701,8 +2701,8 @@ ucnv_MBCSToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
}
} else if(action==MBCS_STATE_VALID_DIRECT_16) {
/* output BMP code point */
- *target++=(UChar)MBCS_ENTRY_FINAL_VALUE_16(entry);
- if(offsets!=NULL) {
+ *target++=(char16_t)MBCS_ENTRY_FINAL_VALUE_16(entry);
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
}
byteIndex=0;
@@ -2712,20 +2712,20 @@ ucnv_MBCSToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
if(c<0xd800) {
/* output BMP code point below 0xd800 */
*target++=c;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
}
byteIndex=0;
} else if(UCNV_TO_U_USE_FALLBACK(cnv) ? c<=0xdfff : c<=0xdbff) {
/* output roundtrip or fallback surrogate pair */
- *target++=(UChar)(c&0xdbff);
- if(offsets!=NULL) {
+ *target++=(char16_t)(c&0xdbff);
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
}
byteIndex=0;
if(target<targetLimit) {
*target++=unicodeCodeUnits[offset];
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
}
} else {
@@ -2740,7 +2740,7 @@ ucnv_MBCSToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
} else if(UCNV_TO_U_USE_FALLBACK(cnv) ? (c&0xfffe)==0xe000 : c==0xe000) {
/* output roundtrip BMP code point above 0xd800 or fallback BMP code point */
*target++=unicodeCodeUnits[offset];
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
}
byteIndex=0;
@@ -2753,15 +2753,15 @@ ucnv_MBCSToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
) {
entry=MBCS_ENTRY_FINAL_VALUE(entry);
/* output surrogate pair */
- *target++=(UChar)(0xd800|(UChar)(entry>>10));
- if(offsets!=NULL) {
+ *target++=(char16_t)(0xd800|(char16_t)(entry>>10));
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
}
byteIndex=0;
- c=(UChar)(0xdc00|(UChar)(entry&0x3ff));
+ c=(char16_t)(0xdc00|(char16_t)(entry&0x3ff));
if(target<targetLimit) {
*target++=c;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
}
} else {
@@ -2793,8 +2793,8 @@ ucnv_MBCSToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
} else if(action==MBCS_STATE_FALLBACK_DIRECT_16) {
if(UCNV_TO_U_USE_FALLBACK(cnv)) {
/* output BMP code point */
- *target++=(UChar)MBCS_ENTRY_FINAL_VALUE_16(entry);
- if(offsets!=NULL) {
+ *target++=(char16_t)MBCS_ENTRY_FINAL_VALUE_16(entry);
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
}
byteIndex=0;
@@ -2908,7 +2908,7 @@ ucnv_MBCSSingleGetNextUChar(UConverterToUnicodeArgs *pArgs,
if(MBCS_ENTRY_FINAL_IS_VALID_DIRECT_16(entry)) {
/* output BMP code point */
- return (UChar)MBCS_ENTRY_FINAL_VALUE_16(entry);
+ return (char16_t)MBCS_ENTRY_FINAL_VALUE_16(entry);
}
/*
@@ -2924,7 +2924,7 @@ ucnv_MBCSSingleGetNextUChar(UConverterToUnicodeArgs *pArgs,
} else if(action==MBCS_STATE_FALLBACK_DIRECT_16) {
if(UCNV_TO_U_USE_FALLBACK(cnv)) {
/* output BMP code point */
- return (UChar)MBCS_ENTRY_FINAL_VALUE_16(entry);
+ return (char16_t)MBCS_ENTRY_FINAL_VALUE_16(entry);
}
} else if(action==MBCS_STATE_UNASSIGNED) {
/* just fall through */
@@ -3054,7 +3054,7 @@ ucnv_MBCSGetNextUChar(UConverterToUnicodeArgs *pArgs,
action=(uint8_t)(MBCS_ENTRY_FINAL_ACTION(entry));
if(action==MBCS_STATE_VALID_DIRECT_16) {
/* output BMP code point */
- c=(UChar)MBCS_ENTRY_FINAL_VALUE_16(entry);
+ c=(char16_t)MBCS_ENTRY_FINAL_VALUE_16(entry);
break;
} else if(action==MBCS_STATE_VALID_16) {
offset+=MBCS_ENTRY_FINAL_VALUE_16(entry);
@@ -3112,7 +3112,7 @@ ucnv_MBCSGetNextUChar(UConverterToUnicodeArgs *pArgs,
} else if(action==MBCS_STATE_FALLBACK_DIRECT_16) {
if(UCNV_TO_U_USE_FALLBACK(cnv)) {
/* output BMP code point */
- c=(UChar)MBCS_ENTRY_FINAL_VALUE_16(entry);
+ c=(char16_t)MBCS_ENTRY_FINAL_VALUE_16(entry);
break;
}
} else if(action==MBCS_STATE_UNASSIGNED) {
@@ -3213,7 +3213,7 @@ ucnv_MBCSSingleSimpleGetNextUChar(UConverterSharedData *sharedData,
if(MBCS_ENTRY_FINAL_IS_VALID_DIRECT_16(entry)) {
/* output BMP code point */
- return (UChar)MBCS_ENTRY_FINAL_VALUE_16(entry);
+ return (char16_t)MBCS_ENTRY_FINAL_VALUE_16(entry);
}
/*
@@ -3229,7 +3229,7 @@ ucnv_MBCSSingleSimpleGetNextUChar(UConverterSharedData *sharedData,
return 0xfffe;
}
/* output BMP code point */
- return (UChar)MBCS_ENTRY_FINAL_VALUE_16(entry);
+ return (char16_t)MBCS_ENTRY_FINAL_VALUE_16(entry);
} else if(action==MBCS_STATE_FALLBACK_DIRECT_20) {
if(!TO_U_USE_FALLBACK(useFallback)) {
return 0xfffe;
@@ -3331,7 +3331,7 @@ ucnv_MBCSSimpleGetNextUChar(UConverterSharedData *sharedData,
break;
} else if(action==MBCS_STATE_VALID_DIRECT_16) {
/* output BMP code point */
- c=(UChar)MBCS_ENTRY_FINAL_VALUE_16(entry);
+ c=(char16_t)MBCS_ENTRY_FINAL_VALUE_16(entry);
break;
} else if(action==MBCS_STATE_VALID_16_PAIR) {
offset+=MBCS_ENTRY_FINAL_VALUE_16(entry);
@@ -3360,7 +3360,7 @@ ucnv_MBCSSimpleGetNextUChar(UConverterSharedData *sharedData,
break;
}
/* output BMP code point */
- c=(UChar)MBCS_ENTRY_FINAL_VALUE_16(entry);
+ c=(char16_t)MBCS_ENTRY_FINAL_VALUE_16(entry);
break;
} else if(action==MBCS_STATE_FALLBACK_DIRECT_20) {
if(!TO_U_USE_FALLBACK(useFallback)) {
@@ -3391,7 +3391,7 @@ ucnv_MBCSSimpleGetNextUChar(UConverterSharedData *sharedData,
if(c==0xfffe) {
/* try an extension mapping */
const int32_t *cx=sharedData->mbcs.extIndexes;
- if(cx!=NULL) {
+ if(cx!=nullptr) {
return ucnv_extSimpleMatchToU(cx, source, length, useFallback);
}
}
@@ -3406,7 +3406,7 @@ static void
ucnv_MBCSDoubleFromUnicodeWithOffsets(UConverterFromUnicodeArgs *pArgs,
UErrorCode *pErrorCode) {
UConverter *cnv;
- const UChar *source, *sourceLimit;
+ const char16_t *source, *sourceLimit;
uint8_t *target;
int32_t targetCapacity;
int32_t *offsets;
@@ -3468,14 +3468,14 @@ ucnv_MBCSDoubleFromUnicodeWithOffsets(UConverterFromUnicodeArgs *pArgs,
if(targetCapacity>0) {
/*
* Get a correct Unicode code point:
- * a single UChar for a BMP code point or
+ * a single char16_t for a BMP code point or
* a matched surrogate pair for a "supplementary code point".
*/
c=*source++;
++nextSourceIndex;
if(c<=0x7f && IS_ASCII_ROUNDTRIP(c, asciiRoundtrips)) {
*target++=(uint8_t)c;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
sourceIndex=nextSourceIndex;
}
@@ -3506,7 +3506,7 @@ ucnv_MBCSDoubleFromUnicodeWithOffsets(UConverterFromUnicodeArgs *pArgs,
getTrail:
if(source<sourceLimit) {
/* test the following code unit */
- UChar trail=*source;
+ char16_t trail=*source;
if(U16_IS_TRAIL(trail)) {
++source;
++nextSourceIndex;
@@ -3585,7 +3585,7 @@ unassigned:
if(value<=0xff) {
/* this is easy because we know that there is enough space */
*target++=(uint8_t)value;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
}
--targetCapacity;
@@ -3593,13 +3593,13 @@ unassigned:
*target++=(uint8_t)(value>>8);
if(2<=targetCapacity) {
*target++=(uint8_t)value;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
*offsets++=sourceIndex;
}
targetCapacity-=2;
} else {
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
}
cnv->charErrorBuffer[0]=(char)value;
@@ -3638,7 +3638,7 @@ static void
ucnv_MBCSSingleFromUnicodeWithOffsets(UConverterFromUnicodeArgs *pArgs,
UErrorCode *pErrorCode) {
UConverter *cnv;
- const UChar *source, *sourceLimit;
+ const char16_t *source, *sourceLimit;
uint8_t *target;
int32_t targetCapacity;
int32_t *offsets;
@@ -3701,7 +3701,7 @@ ucnv_MBCSSingleFromUnicodeWithOffsets(UConverterFromUnicodeArgs *pArgs,
if(targetCapacity>0) {
/*
* Get a correct Unicode code point:
- * a single UChar for a BMP code point or
+ * a single char16_t for a BMP code point or
* a matched surrogate pair for a "supplementary code point".
*/
c=*source++;
@@ -3711,7 +3711,7 @@ ucnv_MBCSSingleFromUnicodeWithOffsets(UConverterFromUnicodeArgs *pArgs,
getTrail:
if(source<sourceLimit) {
/* test the following code unit */
- UChar trail=*source;
+ char16_t trail=*source;
if(U16_IS_TRAIL(trail)) {
++source;
++nextSourceIndex;
@@ -3750,7 +3750,7 @@ getTrail:
/* length==1 */
/* this is easy because we know that there is enough space */
*target++=(uint8_t)value;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
}
--targetCapacity;
@@ -3814,7 +3814,7 @@ static void
ucnv_MBCSSingleFromBMPWithOffsets(UConverterFromUnicodeArgs *pArgs,
UErrorCode *pErrorCode) {
UConverter *cnv;
- const UChar *source, *sourceLimit, *lastSource;
+ const char16_t *source, *sourceLimit, *lastSource;
uint8_t *target;
int32_t targetCapacity, length;
int32_t *offsets;
@@ -3861,7 +3861,7 @@ ucnv_MBCSSingleFromBMPWithOffsets(UConverterFromUnicodeArgs *pArgs,
lastSource=source;
/*
- * since the conversion here is 1:1 UChar:uint8_t, we need only one counter
+ * since the conversion here is 1:1 char16_t:uint8_t, we need only one counter
* for the minimum of the sourceLength and targetCapacity
*/
length=(int32_t)(sourceLimit-source);
@@ -3908,7 +3908,7 @@ unrolled:
count=loops-count;
targetCapacity-=4*count;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
lastSource+=4*count;
while(count>0) {
*offsets++=sourceIndex++;
@@ -3926,7 +3926,7 @@ unrolled:
while(targetCapacity>0) {
/*
* Get a correct Unicode code point:
- * a single UChar for a BMP code point or
+ * a single char16_t for a BMP code point or
* a matched surrogate pair for a "supplementary code point".
*/
c=*source++;
@@ -3960,7 +3960,7 @@ unrolled:
getTrail:
if(source<sourceLimit) {
/* test the following code unit */
- UChar trail=*source;
+ char16_t trail=*source;
if(U16_IS_TRAIL(trail)) {
++source;
c=U16_GET_SUPPLEMENTARY(c, trail);
@@ -3992,7 +3992,7 @@ getTrail:
length=U16_LENGTH(c);
/* set offsets since the start or the last extension */
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
int32_t count=(int32_t)(source-lastSource);
/* do not set the offset for this character */
@@ -4042,7 +4042,7 @@ getTrail:
}
/* set offsets since the start or the last callback */
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
size_t count=source-lastSource;
if (count > 0 && *pErrorCode == U_TRUNCATED_CHAR_FOUND) {
/*
@@ -4071,7 +4071,7 @@ U_CFUNC void
ucnv_MBCSFromUnicodeWithOffsets(UConverterFromUnicodeArgs *pArgs,
UErrorCode *pErrorCode) {
UConverter *cnv;
- const UChar *source, *sourceLimit;
+ const char16_t *source, *sourceLimit;
uint8_t *target;
int32_t targetCapacity;
int32_t *offsets;
@@ -4135,7 +4135,7 @@ ucnv_MBCSFromUnicodeWithOffsets(UConverterFromUnicodeArgs *pArgs,
if(cnv->sharedData->mbcs.utf8Friendly) {
mbcsIndex=cnv->sharedData->mbcs.mbcsIndex;
} else {
- mbcsIndex=NULL;
+ mbcsIndex=nullptr;
}
if((cnv->options&UCNV_OPTION_SWAP_LFNL)!=0) {
bytes=cnv->sharedData->mbcs.swapLFNLFromUnicodeBytes;
@@ -4197,14 +4197,14 @@ ucnv_MBCSFromUnicodeWithOffsets(UConverterFromUnicodeArgs *pArgs,
if(targetCapacity>0) {
/*
* Get a correct Unicode code point:
- * a single UChar for a BMP code point or
+ * a single char16_t for a BMP code point or
* a matched surrogate pair for a "supplementary code point".
*/
c=*source++;
++nextSourceIndex;
if(c<=0x7f && IS_ASCII_ROUNDTRIP(c, asciiRoundtrips)) {
*target++=(uint8_t)c;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
prevSourceIndex=sourceIndex;
sourceIndex=nextSourceIndex;
@@ -4218,7 +4218,7 @@ ucnv_MBCSFromUnicodeWithOffsets(UConverterFromUnicodeArgs *pArgs,
* to avoid dealing with surrogates.
* MBCS_FAST_MAX must be >=0xd7ff.
*/
- if(c<=0xd7ff && mbcsIndex!=NULL) {
+ if(c<=0xd7ff && mbcsIndex!=nullptr) {
value=mbcsIndex[c>>6];
/* get the bytes and the length for the output (copied from below and adapted for utf8Friendly data) */
@@ -4390,7 +4390,7 @@ ucnv_MBCSFromUnicodeWithOffsets(UConverterFromUnicodeArgs *pArgs,
getTrail:
if(source<sourceLimit) {
/* test the following code unit */
- UChar trail=*source;
+ char16_t trail=*source;
if(U16_IS_TRAIL(trail)) {
++source;
++nextSourceIndex;
@@ -4628,7 +4628,7 @@ unassigned:
targetCapacity=(int32_t)(pArgs->targetLimit-(char *)target);
/* normal end of conversion: prepare for a new character */
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
prevSourceIndex=sourceIndex;
sourceIndex=nextSourceIndex;
}
@@ -4640,7 +4640,7 @@ unassigned:
/* write the output character bytes from value and length */
/* from the first if in the loop we know that targetCapacity>0 */
if(length<=targetCapacity) {
- if(offsets==NULL) {
+ if(offsets==nullptr) {
switch(length) {
/* each branch falls through to the next one */
case 4:
@@ -4719,19 +4719,19 @@ unassigned:
/* each branch falls through to the next one */
case 3:
*target++=(uint8_t)(value>>16);
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
}
U_FALLTHROUGH;
case 2:
*target++=(uint8_t)(value>>8);
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
}
U_FALLTHROUGH;
case 1:
*target++=(uint8_t)value;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
}
U_FALLTHROUGH;
@@ -4749,7 +4749,7 @@ unassigned:
/* normal end of conversion: prepare for a new character */
c=0;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
prevSourceIndex=sourceIndex;
sourceIndex=nextSourceIndex;
}
@@ -4787,7 +4787,7 @@ unassigned:
*target++=(uint8_t)siBytes[1];
}
}
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
/* set the last source character's index (sourceIndex points at sourceLimit now) */
*offsets++=prevSourceIndex;
}
@@ -4961,7 +4961,7 @@ ucnv_MBCSFromUChar32(UConverterSharedData *sharedData,
}
cx=sharedData->mbcs.extIndexes;
- if(cx!=NULL) {
+ if(cx!=nullptr) {
length=ucnv_extSimpleMatchFromU(cx, c, pValue, useFallback);
return length>=0 ? length : -length; /* return abs(length); */
}
@@ -5257,12 +5257,12 @@ moreBytes:
* If we have a partial match on c, we will return and revert
* to UTF-8->UTF-16->charset conversion.
*/
- static const UChar nul=0;
- const UChar *noSource=&nul;
+ static const char16_t nul=0;
+ const char16_t *noSource=&nul;
c=_extFromU(cnv, cnv->sharedData,
c, &noSource, noSource,
&target, target+targetCapacity,
- NULL, -1,
+ nullptr, -1,
pFromUArgs->flush,
pErrorCode);
@@ -5560,12 +5560,12 @@ unassigned:
* If we have a partial match on c, we will return and revert
* to UTF-8->UTF-16->charset conversion.
*/
- static const UChar nul=0;
- const UChar *noSource=&nul;
+ static const char16_t nul=0;
+ const char16_t *noSource=&nul;
c=_extFromU(cnv, cnv->sharedData,
c, &noSource, noSource,
&target, target+targetCapacity,
- NULL, -1,
+ nullptr, -1,
pFromUArgs->flush,
pErrorCode);
@@ -5658,7 +5658,7 @@ ucnv_MBCSWriteSub(UConverterFromUnicodeArgs *pArgs,
/* first, select between subChar and subChar1 */
if( cnv->subChar1!=0 &&
- (cnv->sharedData->mbcs.extIndexes!=NULL ?
+ (cnv->sharedData->mbcs.extIndexes!=nullptr ?
cnv->useSubChar1 :
(cnv->invalidUCharBuffer[0]<=0xff))
) {
diff --git a/Build/source/libs/icu/icu-src/source/common/ucnvscsu.cpp b/Build/source/libs/icu/icu-src/source/common/ucnvscsu.cpp
index 86e850a998a..2138e289cad 100644
--- a/Build/source/libs/icu/icu-src/source/common/ucnvscsu.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ucnvscsu.cpp
@@ -200,8 +200,8 @@ _SCSUOpen(UConverter *cnv,
return;
}
cnv->extraInfo=uprv_malloc(sizeof(SCSUData));
- if(cnv->extraInfo!=NULL) {
- if(locale!=NULL && locale[0]=='j' && locale[1]=='a' && (locale[2]==0 || locale[2]=='_')) {
+ if(cnv->extraInfo!=nullptr) {
+ if(locale!=nullptr && locale[0]=='j' && locale[1]=='a' && (locale[2]==0 || locale[2]=='_')) {
((SCSUData *)cnv->extraInfo)->locale=l_ja;
} else {
((SCSUData *)cnv->extraInfo)->locale=lGeneric;
@@ -218,11 +218,11 @@ _SCSUOpen(UConverter *cnv,
static void U_CALLCONV
_SCSUClose(UConverter *cnv) {
- if(cnv->extraInfo!=NULL) {
+ if(cnv->extraInfo!=nullptr) {
if(!cnv->isExtraLocal) {
uprv_free(cnv->extraInfo);
}
- cnv->extraInfo=NULL;
+ cnv->extraInfo=nullptr;
}
}
@@ -234,8 +234,8 @@ _SCSUToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
UConverter *cnv;
SCSUData *scsu;
const uint8_t *source, *sourceLimit;
- UChar *target;
- const UChar *targetLimit;
+ char16_t *target;
+ const char16_t *targetLimit;
int32_t *offsets;
UBool isSingleByteMode;
uint8_t state, byteOne;
@@ -294,33 +294,33 @@ fastSingle:
++nextSourceIndex;
if(b<=0x7f) {
/* write US-ASCII graphic character or DEL */
- *target++=(UChar)b;
- if(offsets!=NULL) {
+ *target++=(char16_t)b;
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
}
} else {
/* write from dynamic window */
uint32_t c=scsu->toUDynamicOffsets[dynamicWindow]+(b&0x7f);
if(c<=0xffff) {
- *target++=(UChar)c;
- if(offsets!=NULL) {
+ *target++=(char16_t)c;
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
}
} else {
/* output surrogate pair */
- *target++=(UChar)(0xd7c0+(c>>10));
+ *target++=(char16_t)(0xd7c0+(c>>10));
if(target<targetLimit) {
- *target++=(UChar)(0xdc00|(c&0x3ff));
- if(offsets!=NULL) {
+ *target++=(char16_t)(0xdc00|(c&0x3ff));
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
*offsets++=sourceIndex;
}
} else {
/* target overflow */
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
}
- cnv->UCharErrorBuffer[0]=(UChar)(0xdc00|(c&0x3ff));
+ cnv->UCharErrorBuffer[0]=(char16_t)(0xdc00|(c&0x3ff));
cnv->UCharErrorBufferLength=1;
*pErrorCode=U_BUFFER_OVERFLOW_ERROR;
goto endloop;
@@ -347,8 +347,8 @@ singleByteMode:
/* here: b<0x20 because otherwise we would be in fastSingle */
if((1UL<<b)&0x2601 /* binary 0010 0110 0000 0001, check for b==0xd || b==0xa || b==9 || b==0 */) {
/* CR/LF/TAB/NUL */
- *target++=(UChar)b;
- if(offsets!=NULL) {
+ *target++=(char16_t)b;
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
}
sourceIndex=nextSourceIndex;
@@ -392,8 +392,8 @@ singleByteMode:
state=quotePairTwo;
break;
case quotePairTwo:
- *target++=(UChar)((byteOne<<8)|b);
- if(offsets!=NULL) {
+ *target++=(char16_t)((byteOne<<8)|b);
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
}
sourceIndex=nextSourceIndex;
@@ -402,33 +402,33 @@ singleByteMode:
case quoteOne:
if(b<0x80) {
/* all static offsets are in the BMP */
- *target++=(UChar)(staticOffsets[quoteWindow]+b);
- if(offsets!=NULL) {
+ *target++=(char16_t)(staticOffsets[quoteWindow]+b);
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
}
} else {
/* write from dynamic window */
uint32_t c=scsu->toUDynamicOffsets[quoteWindow]+(b&0x7f);
if(c<=0xffff) {
- *target++=(UChar)c;
- if(offsets!=NULL) {
+ *target++=(char16_t)c;
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
}
} else {
/* output surrogate pair */
- *target++=(UChar)(0xd7c0+(c>>10));
+ *target++=(char16_t)(0xd7c0+(c>>10));
if(target<targetLimit) {
- *target++=(UChar)(0xdc00|(c&0x3ff));
- if(offsets!=NULL) {
+ *target++=(char16_t)(0xdc00|(c&0x3ff));
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
*offsets++=sourceIndex;
}
} else {
/* target overflow */
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
}
- cnv->UCharErrorBuffer[0]=(UChar)(0xdc00|(c&0x3ff));
+ cnv->UCharErrorBuffer[0]=(char16_t)(0xdc00|(c&0x3ff));
cnv->UCharErrorBufferLength=1;
*pErrorCode=U_BUFFER_OVERFLOW_ERROR;
goto endloop;
@@ -478,8 +478,8 @@ singleByteMode:
if(state==readCommand) {
fastUnicode:
while(source+1<sourceLimit && target<targetLimit && (uint8_t)((b=*source)-UC0)>(Urs-UC0)) {
- *target++=(UChar)((b<<8)|source[1]);
- if(offsets!=NULL) {
+ *target++=(char16_t)((b<<8)|source[1]);
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
}
sourceIndex=nextSourceIndex;
@@ -542,8 +542,8 @@ fastUnicode:
state=quotePairTwo;
break;
case quotePairTwo:
- *target++=(UChar)((byteOne<<8)|b);
- if(offsets!=NULL) {
+ *target++=(char16_t)((byteOne<<8)|b);
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
}
sourceIndex=nextSourceIndex;
@@ -588,8 +588,8 @@ _SCSUToUnicode(UConverterToUnicodeArgs *pArgs,
UConverter *cnv;
SCSUData *scsu;
const uint8_t *source, *sourceLimit;
- UChar *target;
- const UChar *targetLimit;
+ char16_t *target;
+ const char16_t *targetLimit;
UBool isSingleByteMode;
uint8_t state, byteOne;
int8_t quoteWindow, dynamicWindow;
@@ -639,20 +639,20 @@ fastSingle:
++source;
if(b<=0x7f) {
/* write US-ASCII graphic character or DEL */
- *target++=(UChar)b;
+ *target++=(char16_t)b;
} else {
/* write from dynamic window */
uint32_t c=scsu->toUDynamicOffsets[dynamicWindow]+(b&0x7f);
if(c<=0xffff) {
- *target++=(UChar)c;
+ *target++=(char16_t)c;
} else {
/* output surrogate pair */
- *target++=(UChar)(0xd7c0+(c>>10));
+ *target++=(char16_t)(0xd7c0+(c>>10));
if(target<targetLimit) {
- *target++=(UChar)(0xdc00|(c&0x3ff));
+ *target++=(char16_t)(0xdc00|(c&0x3ff));
} else {
/* target overflow */
- cnv->UCharErrorBuffer[0]=(UChar)(0xdc00|(c&0x3ff));
+ cnv->UCharErrorBuffer[0]=(char16_t)(0xdc00|(c&0x3ff));
cnv->UCharErrorBufferLength=1;
*pErrorCode=U_BUFFER_OVERFLOW_ERROR;
goto endloop;
@@ -677,7 +677,7 @@ singleByteMode:
/* here: b<0x20 because otherwise we would be in fastSingle */
if((1UL<<b)&0x2601 /* binary 0010 0110 0000 0001, check for b==0xd || b==0xa || b==9 || b==0 */) {
/* CR/LF/TAB/NUL */
- *target++=(UChar)b;
+ *target++=(char16_t)b;
goto fastSingle;
} else if(SC0<=b) {
if(b<=SC7) {
@@ -716,26 +716,26 @@ singleByteMode:
state=quotePairTwo;
break;
case quotePairTwo:
- *target++=(UChar)((byteOne<<8)|b);
+ *target++=(char16_t)((byteOne<<8)|b);
state=readCommand;
goto fastSingle;
case quoteOne:
if(b<0x80) {
/* all static offsets are in the BMP */
- *target++=(UChar)(staticOffsets[quoteWindow]+b);
+ *target++=(char16_t)(staticOffsets[quoteWindow]+b);
} else {
/* write from dynamic window */
uint32_t c=scsu->toUDynamicOffsets[quoteWindow]+(b&0x7f);
if(c<=0xffff) {
- *target++=(UChar)c;
+ *target++=(char16_t)c;
} else {
/* output surrogate pair */
- *target++=(UChar)(0xd7c0+(c>>10));
+ *target++=(char16_t)(0xd7c0+(c>>10));
if(target<targetLimit) {
- *target++=(UChar)(0xdc00|(c&0x3ff));
+ *target++=(char16_t)(0xdc00|(c&0x3ff));
} else {
/* target overflow */
- cnv->UCharErrorBuffer[0]=(UChar)(0xdc00|(c&0x3ff));
+ cnv->UCharErrorBuffer[0]=(char16_t)(0xdc00|(c&0x3ff));
cnv->UCharErrorBufferLength=1;
*pErrorCode=U_BUFFER_OVERFLOW_ERROR;
goto endloop;
@@ -782,7 +782,7 @@ singleByteMode:
if(state==readCommand) {
fastUnicode:
while(source+1<sourceLimit && target<targetLimit && (uint8_t)((b=*source)-UC0)>(Urs-UC0)) {
- *target++=(UChar)((b<<8)|source[1]);
+ *target++=(char16_t)((b<<8)|source[1]);
source+=2;
}
}
@@ -839,7 +839,7 @@ fastUnicode:
state=quotePairTwo;
break;
case quotePairTwo:
- *target++=(UChar)((byteOne<<8)|b);
+ *target++=(char16_t)((byteOne<<8)|b);
state=readCommand;
goto fastUnicode;
}
@@ -1012,7 +1012,7 @@ _SCSUFromUnicodeWithOffsets(UConverterFromUnicodeArgs *pArgs,
UErrorCode *pErrorCode) {
UConverter *cnv;
SCSUData *scsu;
- const UChar *source, *sourceLimit;
+ const char16_t *source, *sourceLimit;
uint8_t *target;
int32_t targetCapacity;
int32_t *offsets;
@@ -1029,7 +1029,7 @@ _SCSUFromUnicodeWithOffsets(UConverterFromUnicodeArgs *pArgs,
/* variables for compression heuristics */
uint32_t offset;
- UChar lead, trail;
+ char16_t lead, trail;
int code;
int8_t window;
@@ -1076,7 +1076,7 @@ loop:
if((c-0x20)<=0x5f) {
/* pass US-ASCII graphic character through */
*target++=(uint8_t)c;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
}
--targetCapacity;
@@ -1084,7 +1084,7 @@ loop:
if((1UL<<c)&0x2601 /* binary 0010 0110 0000 0001, check for b==0xd || b==0xa || b==9 || b==0 */) {
/* CR/LF/TAB/NUL */
*target++=(uint8_t)c;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
}
--targetCapacity;
@@ -1097,14 +1097,14 @@ loop:
} else if((delta=c-currentOffset)<=0x7f) {
/* use the current dynamic window */
*target++=(uint8_t)(delta|0x80);
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
}
--targetCapacity;
} else if(U16_IS_SURROGATE(c)) {
if(U16_IS_SURROGATE_LEAD(c)) {
getTrailSingle:
- lead=(UChar)c;
+ lead=(char16_t)c;
if(source<sourceLimit) {
/* test the following code unit */
trail=*source;
@@ -1135,7 +1135,7 @@ getTrailSingle:
if((delta=c-currentOffset)<=0x7f) {
/* use the current dynamic window */
*target++=(uint8_t)(delta|0x80);
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
}
--targetCapacity;
@@ -1161,7 +1161,7 @@ getTrailSingle:
/* change to Unicode mode and output this (lead, trail) pair */
isSingleByteMode=false;
*target++=(uint8_t)SCU;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
}
--targetCapacity;
@@ -1255,7 +1255,7 @@ getTrailSingle:
if(targetCapacity>=2) {
*target++=(uint8_t)(c>>8);
*target++=(uint8_t)c;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
*offsets++=sourceIndex;
}
@@ -1301,7 +1301,7 @@ getTrailSingle:
/* c is a surrogate */
if(U16_IS_SURROGATE_LEAD(c)) {
getTrailUnicode:
- lead=(UChar)c;
+ lead=(char16_t)c;
if(source<sourceLimit) {
/* test the following code unit */
trail=*source;
@@ -1392,7 +1392,7 @@ outputBytes:
/* write the output character bytes from c and length [code copied from ucnvmbcs.c] */
/* from the first if in the loop we know that targetCapacity>0 */
if(length<=targetCapacity) {
- if(offsets==NULL) {
+ if(offsets==nullptr) {
switch(length) {
/* each branch falls through to the next one */
case 4:
@@ -1480,19 +1480,19 @@ outputBytes:
/* each branch falls through to the next one */
case 3:
*target++=(uint8_t)(c>>16);
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
}
U_FALLTHROUGH;
case 2:
*target++=(uint8_t)(c>>8);
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
}
U_FALLTHROUGH;
case 1:
*target++=(uint8_t)c;
- if(offsets!=NULL) {
+ if(offsets!=nullptr) {
*offsets++=sourceIndex;
}
U_FALLTHROUGH;
@@ -1520,7 +1520,7 @@ _SCSUFromUnicode(UConverterFromUnicodeArgs *pArgs,
UErrorCode *pErrorCode) {
UConverter *cnv;
SCSUData *scsu;
- const UChar *source, *sourceLimit;
+ const char16_t *source, *sourceLimit;
uint8_t *target;
int32_t targetCapacity;
@@ -1534,7 +1534,7 @@ _SCSUFromUnicode(UConverterFromUnicodeArgs *pArgs,
/* variables for compression heuristics */
uint32_t offset;
- UChar lead, trail;
+ char16_t lead, trail;
int code;
int8_t window;
@@ -1594,7 +1594,7 @@ loop:
} else if(U16_IS_SURROGATE(c)) {
if(U16_IS_SURROGATE_LEAD(c)) {
getTrailSingle:
- lead=(UChar)c;
+ lead=(char16_t)c;
if(source<sourceLimit) {
/* test the following code unit */
trail=*source;
@@ -1778,7 +1778,7 @@ getTrailSingle:
/* c is a surrogate */
if(U16_IS_SURROGATE_LEAD(c)) {
getTrailUnicode:
- lead=(UChar)c;
+ lead=(char16_t)c;
if(source<sourceLimit) {
/* test the following code unit */
trail=*source;
@@ -1923,7 +1923,7 @@ outputBytes:
cnv->charErrorBufferLength=(int8_t)length;
/* now output what fits into the regular target */
- c>>=8*length; /* length was reduced by targetCapacity */
+ c = (length == 4) ? 0 : c >> 8*length; /* length was reduced by targetCapacity */
switch(targetCapacity) {
/* each branch falls through to the next one */
case 3:
@@ -2000,8 +2000,8 @@ U_CDECL_END
static const UConverterImpl _SCSUImpl={
UCNV_SCSU,
- NULL,
- NULL,
+ nullptr,
+ nullptr,
_SCSUOpen,
_SCSUClose,
@@ -2011,15 +2011,15 @@ static const UConverterImpl _SCSUImpl={
_SCSUToUnicodeWithOffsets,
_SCSUFromUnicode,
_SCSUFromUnicodeWithOffsets,
- NULL,
+ nullptr,
- NULL,
+ nullptr,
_SCSUGetName,
- NULL,
+ nullptr,
_SCSUSafeClone,
ucnv_getCompleteUnicodeSet,
- NULL,
- NULL
+ nullptr,
+ nullptr
};
static const UConverterStaticData _SCSUStaticData={
@@ -2027,7 +2027,7 @@ static const UConverterStaticData _SCSUStaticData={
"SCSU",
1212, /* CCSID for SCSU */
UCNV_IBM, UCNV_SCSU,
- 1, 3, /* one UChar generates at least 1 byte and at most 3 bytes */
+ 1, 3, /* one char16_t generates at least 1 byte and at most 3 bytes */
/*
* The subchar here is ignored because _SCSUOpen() sets U+fffd as a Unicode
* substitution string.
diff --git a/Build/source/libs/icu/icu-src/source/common/ucnvsel.cpp b/Build/source/libs/icu/icu-src/source/common/ucnvsel.cpp
index 15ee596a23c..a286646395b 100644
--- a/Build/source/libs/icu/icu-src/source/common/ucnvsel.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ucnvsel.cpp
@@ -104,7 +104,7 @@ static void generateSelectorData(UConverterSelector* result,
UChar32 start_char;
UChar32 end_char;
UErrorCode smallStatus = U_ZERO_ERROR;
- uset_getItem(unicode_point_set, j, &start_char, &end_char, NULL, 0,
+ uset_getItem(unicode_point_set, j, &start_char, &end_char, nullptr, 0,
&smallStatus);
if (U_FAILURE(smallStatus)) {
// this will be reached for the converters that fill the set with
@@ -128,7 +128,7 @@ static void generateSelectorData(UConverterSelector* result,
UChar32 start_char;
UChar32 end_char;
- uset_getItem(excludedCodePoints, j, &start_char, &end_char, NULL, 0,
+ uset_getItem(excludedCodePoints, j, &start_char, &end_char, nullptr, 0,
status);
for (int32_t col = 0; col < columns; col++) {
upvec_setValue(upvec, start_char, end_char, col, static_cast<uint32_t>(~0), static_cast<uint32_t>(~0),
@@ -140,25 +140,25 @@ static void generateSelectorData(UConverterSelector* result,
// alright. Now, let's put things in the same exact form you'd get when you
// unserialize things.
result->trie = upvec_compactToUTrie2WithRowIndexes(upvec, status);
- result->pv = upvec_cloneArray(upvec, &result->pvCount, NULL, status);
+ result->pv = upvec_cloneArray(upvec, &result->pvCount, nullptr, status);
result->pvCount *= columns; // number of uint32_t = rows * columns
result->ownPv = true;
}
/* open a selector. If converterListSize is 0, build for all converters.
- If excludedCodePoints is NULL, don't exclude any codepoints */
+ If excludedCodePoints is nullptr, don't exclude any codepoints */
U_CAPI UConverterSelector* U_EXPORT2
ucnvsel_open(const char* const* converterList, int32_t converterListSize,
const USet* excludedCodePoints,
const UConverterUnicodeSet whichSet, UErrorCode* status) {
// check if already failed
if (U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
// ensure args make sense!
- if (converterListSize < 0 || (converterList == NULL && converterListSize != 0)) {
+ if (converterListSize < 0 || (converterList == nullptr && converterListSize != 0)) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
// allocate a new converter
@@ -166,28 +166,28 @@ ucnvsel_open(const char* const* converterList, int32_t converterListSize,
(UConverterSelector*)uprv_malloc(sizeof(UConverterSelector)));
if (newSelector.isNull()) {
*status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
uprv_memset(newSelector.getAlias(), 0, sizeof(UConverterSelector));
if (converterListSize == 0) {
- converterList = NULL;
+ converterList = nullptr;
converterListSize = ucnv_countAvailable();
}
newSelector->encodings =
(char**)uprv_malloc(converterListSize * sizeof(char*));
if (!newSelector->encodings) {
*status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
- newSelector->encodings[0] = NULL; // now we can call ucnvsel_close()
+ newSelector->encodings[0] = nullptr; // now we can call ucnvsel_close()
// make a backup copy of the list of converters
int32_t totalSize = 0;
int32_t i;
for (i = 0; i < converterListSize; i++) {
totalSize +=
- (int32_t)uprv_strlen(converterList != NULL ? converterList[i] : ucnv_getAvailableName(i)) + 1;
+ (int32_t)uprv_strlen(converterList != nullptr ? converterList[i] : ucnv_getAvailableName(i)) + 1;
}
// 4-align the totalSize to 4-align the size of the serialized form
int32_t encodingStrPadding = totalSize & 3;
@@ -198,13 +198,13 @@ ucnvsel_open(const char* const* converterList, int32_t converterListSize,
char* allStrings = (char*) uprv_malloc(totalSize);
if (!allStrings) {
*status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
for (i = 0; i < converterListSize; i++) {
newSelector->encodings[i] = allStrings;
uprv_strcpy(newSelector->encodings[i],
- converterList != NULL ? converterList[i] : ucnv_getAvailableName(i));
+ converterList != nullptr ? converterList[i] : ucnv_getAvailableName(i));
allStrings += uprv_strlen(newSelector->encodings[i]) + 1;
}
while (encodingStrPadding > 0) {
@@ -219,7 +219,7 @@ ucnvsel_open(const char* const* converterList, int32_t converterListSize,
upvec_close(upvec);
if (U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
return newSelector.orphan();
@@ -289,13 +289,13 @@ ucnvsel_serialize(const UConverterSelector* sel,
// ensure args make sense!
uint8_t *p = (uint8_t *)buffer;
if (bufferCapacity < 0 ||
- (bufferCapacity > 0 && (p == NULL || (U_POINTER_MASK_LSB(p, 3) != 0)))
+ (bufferCapacity > 0 && (p == nullptr || (U_POINTER_MASK_LSB(p, 3) != 0)))
) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
// add up the size of the serialized form
- int32_t serializedTrieSize = utrie2_serialize(sel->trie, NULL, 0, status);
+ int32_t serializedTrieSize = utrie2_serialize(sel->trie, nullptr, 0, status);
if (*status != U_BUFFER_OVERFLOW_ERROR && U_FAILURE(*status)) {
return 0;
}
@@ -466,21 +466,21 @@ U_CAPI UConverterSelector* U_EXPORT2
ucnvsel_openFromSerialized(const void* buffer, int32_t length, UErrorCode* status) {
// check if already failed
if (U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
// ensure args make sense!
const uint8_t *p = (const uint8_t *)buffer;
if (length <= 0 ||
- (length > 0 && (p == NULL || (U_POINTER_MASK_LSB(p, 3) != 0)))
+ (length > 0 && (p == nullptr || (U_POINTER_MASK_LSB(p, 3) != 0)))
) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
// header
if (length < 32) {
// not even enough space for a minimal header
*status = U_INDEX_OUTOFBOUNDS_ERROR;
- return NULL;
+ return nullptr;
}
const DataHeader *pHeader = (const DataHeader *)p;
if (!(
@@ -493,40 +493,40 @@ ucnvsel_openFromSerialized(const void* buffer, int32_t length, UErrorCode* statu
)) {
/* header not valid or dataFormat not recognized */
*status = U_INVALID_FORMAT_ERROR;
- return NULL;
+ return nullptr;
}
if (pHeader->info.formatVersion[0] != 1) {
*status = U_UNSUPPORTED_ERROR;
- return NULL;
+ return nullptr;
}
- uint8_t* swapped = NULL;
+ uint8_t* swapped = nullptr;
if (pHeader->info.isBigEndian != U_IS_BIG_ENDIAN ||
pHeader->info.charsetFamily != U_CHARSET_FAMILY
) {
// swap the data
UDataSwapper *ds =
udata_openSwapperForInputData(p, length, U_IS_BIG_ENDIAN, U_CHARSET_FAMILY, status);
- int32_t totalSize = ucnvsel_swap(ds, p, -1, NULL, status);
+ int32_t totalSize = ucnvsel_swap(ds, p, -1, nullptr, status);
if (U_FAILURE(*status)) {
udata_closeSwapper(ds);
- return NULL;
+ return nullptr;
}
if (length < totalSize) {
udata_closeSwapper(ds);
*status = U_INDEX_OUTOFBOUNDS_ERROR;
- return NULL;
+ return nullptr;
}
swapped = (uint8_t*)uprv_malloc(totalSize);
- if (swapped == NULL) {
+ if (swapped == nullptr) {
udata_closeSwapper(ds);
*status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
ucnvsel_swap(ds, p, length, swapped, status);
udata_closeSwapper(ds);
if (U_FAILURE(*status)) {
uprv_free(swapped);
- return NULL;
+ return nullptr;
}
p = swapped;
pHeader = (const DataHeader *)p;
@@ -535,7 +535,7 @@ ucnvsel_openFromSerialized(const void* buffer, int32_t length, UErrorCode* statu
// not even enough space for the header and the indexes
uprv_free(swapped);
*status = U_INDEX_OUTOFBOUNDS_ERROR;
- return NULL;
+ return nullptr;
}
p += pHeader->dataHeader.headerSize;
length -= pHeader->dataHeader.headerSize;
@@ -544,7 +544,7 @@ ucnvsel_openFromSerialized(const void* buffer, int32_t length, UErrorCode* statu
if (length < indexes[UCNVSEL_INDEX_SIZE]) {
uprv_free(swapped);
*status = U_INDEX_OUTOFBOUNDS_ERROR;
- return NULL;
+ return nullptr;
}
p += UCNVSEL_INDEX_COUNT * 4;
// create and populate the selector object
@@ -552,12 +552,12 @@ ucnvsel_openFromSerialized(const void* buffer, int32_t length, UErrorCode* statu
char **encodings =
(char **)uprv_malloc(
indexes[UCNVSEL_INDEX_NAMES_COUNT] * sizeof(char *));
- if (sel == NULL || encodings == NULL) {
+ if (sel == nullptr || encodings == nullptr) {
uprv_free(swapped);
uprv_free(sel);
uprv_free(encodings);
*status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
uprv_memset(sel, 0, sizeof(UConverterSelector));
sel->pvCount = indexes[UCNVSEL_INDEX_PV_COUNT];
@@ -567,12 +567,12 @@ ucnvsel_openFromSerialized(const void* buffer, int32_t length, UErrorCode* statu
sel->swapped = swapped;
// trie
sel->trie = utrie2_openFromSerialized(UTRIE2_16_VALUE_BITS,
- p, indexes[UCNVSEL_INDEX_TRIE_SIZE], NULL,
+ p, indexes[UCNVSEL_INDEX_TRIE_SIZE], nullptr,
status);
p += indexes[UCNVSEL_INDEX_TRIE_SIZE];
if (U_FAILURE(*status)) {
ucnvsel_close(sel);
- return NULL;
+ return nullptr;
}
// bit vectors
sel->pv = (uint32_t *)p;
@@ -622,14 +622,14 @@ static const char* U_CALLCONV ucnvsel_next_encoding(UEnumeration* enumerator,
UErrorCode* status) {
// check if already failed
if (U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
int16_t cur = ((Enumerator*)(enumerator->context))->cur;
const UConverterSelector* sel;
const char* result;
if (cur >= ((Enumerator*)(enumerator->context))->length) {
- return NULL;
+ return nullptr;
}
sel = ((Enumerator*)(enumerator->context))->sel;
result = sel->encodings[((Enumerator*)(enumerator->context))->index[cur] ];
@@ -653,8 +653,8 @@ U_CDECL_END
static const UEnumeration defaultEncodings = {
- NULL,
- NULL,
+ nullptr,
+ nullptr,
ucnvsel_close_selector_iterator,
ucnvsel_count_encodings,
uenum_unextDefault,
@@ -732,7 +732,7 @@ static UEnumeration *selectForMask(const UConverterSelector* sel,
v >>= 1;
}
}
- } //otherwise, index will remain NULL (and will never be touched by
+ } //otherwise, index will remain nullptr (and will never be touched by
//the enumerator code anyway)
en->context = result.orphan();
return en.orphan();
@@ -741,34 +741,34 @@ static UEnumeration *selectForMask(const UConverterSelector* sel,
/* check a string against the selector - UTF16 version */
U_CAPI UEnumeration * U_EXPORT2
ucnvsel_selectForString(const UConverterSelector* sel,
- const UChar *s, int32_t length, UErrorCode *status) {
+ const char16_t *s, int32_t length, UErrorCode *status) {
// check if already failed
if (U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
// ensure args make sense!
- if (sel == NULL || (s == NULL && length != 0)) {
+ if (sel == nullptr || (s == nullptr && length != 0)) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
int32_t columns = (sel->encodingsCount+31)/32;
uint32_t* mask = (uint32_t*) uprv_malloc(columns * 4);
- if (mask == NULL) {
+ if (mask == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
uprv_memset(mask, ~0, columns *4);
- if(s!=NULL) {
- const UChar *limit;
+ if(s!=nullptr) {
+ const char16_t *limit;
if (length >= 0) {
limit = s + length;
} else {
- limit = NULL;
+ limit = nullptr;
}
- while (limit == NULL ? *s != 0 : s != limit) {
+ while (limit == nullptr ? *s != 0 : s != limit) {
UChar32 c;
uint16_t pvIndex;
UTRIE2_U16_NEXT16(sel->trie, s, limit, c, pvIndex);
@@ -786,19 +786,19 @@ ucnvsel_selectForUTF8(const UConverterSelector* sel,
const char *s, int32_t length, UErrorCode *status) {
// check if already failed
if (U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
// ensure args make sense!
- if (sel == NULL || (s == NULL && length != 0)) {
+ if (sel == nullptr || (s == nullptr && length != 0)) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
int32_t columns = (sel->encodingsCount+31)/32;
uint32_t* mask = (uint32_t*) uprv_malloc(columns * 4);
- if (mask == NULL) {
+ if (mask == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
uprv_memset(mask, ~0, columns *4);
@@ -806,7 +806,7 @@ ucnvsel_selectForUTF8(const UConverterSelector* sel,
length = (int32_t)uprv_strlen(s);
}
- if(s!=NULL) {
+ if(s!=nullptr) {
const char *limit = s + length;
while (s != limit) {
diff --git a/Build/source/libs/icu/icu-src/source/common/ucol_data.h b/Build/source/libs/icu/icu-src/source/common/ucol_data.h
index 83f54abba13..28cf94ffc83 100644
--- a/Build/source/libs/icu/icu-src/source/common/ucol_data.h
+++ b/Build/source/libs/icu/icu-src/source/common/ucol_data.h
@@ -43,7 +43,7 @@ typedef struct {
uint32_t magic; /* magic number - lets us know whether reserved data is reset or junked */
uint32_t mappingPosition; /* const uint8_t *mappingPosition; */
uint32_t expansion; /* uint32_t *expansion; */
- uint32_t contractionIndex; /* UChar *contractionIndex; */
+ uint32_t contractionIndex; /* char16_t *contractionIndex; */
uint32_t contractionCEs; /* uint32_t *contractionCEs; */
uint32_t contractionSize; /* needed for various closures */
/*int32_t latinOneMapping;*/ /* this is now handled in the trie itself *//* fast track to latin1 chars */
@@ -60,7 +60,7 @@ typedef struct {
/* in contractions. */
int32_t contractionUCACombosSize; /* number of UCA contraction items. */
- /*Length is contractionUCACombosSize*contractionUCACombosWidth*sizeof(UChar) */
+ /*Length is contractionUCACombosSize*contractionUCACombosWidth*sizeof(char16_t) */
UBool jamoSpecial; /* is jamoSpecial */
UBool isBigEndian; /* is this data big endian? from the UDataInfo header*/
uint8_t charSetFamily; /* what is the charset family of this data from the UDataInfo header*/
diff --git a/Build/source/libs/icu/icu-src/source/common/ucol_swp.cpp b/Build/source/libs/icu/icu-src/source/common/ucol_swp.cpp
index 59704ff8f67..b5894a1feff 100644
--- a/Build/source/libs/icu/icu-src/source/common/ucol_swp.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ucol_swp.cpp
@@ -33,13 +33,13 @@
U_CAPI UBool U_EXPORT2
ucol_looksLikeCollationBinary(const UDataSwapper *ds,
const void *inData, int32_t length) {
- if(ds==NULL || inData==NULL || length<-1) {
+ if(ds==nullptr || inData==nullptr || length<-1) {
return false;
}
// First check for format version 4+ which has a standard data header.
UErrorCode errorCode=U_ZERO_ERROR;
- (void)udata_swapDataHeader(ds, inData, -1, NULL, &errorCode);
+ (void)udata_swapDataHeader(ds, inData, -1, nullptr, &errorCode);
if(U_SUCCESS(errorCode)) {
const UDataInfo &info=*(const UDataInfo *)((const char *)inData+4);
if(info.dataFormat[0]==0x55 && // dataFormat="UCol"
@@ -103,7 +103,7 @@ swapFormatVersion3(const UDataSwapper *ds,
if(U_FAILURE(*pErrorCode)) {
return 0;
}
- if(ds==NULL || inData==NULL || length<-1 || (length>0 && outData==NULL)) {
+ if(ds==nullptr || inData==nullptr || length<-1 || (length>0 && outData==nullptr)) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -204,7 +204,7 @@ swapFormatVersion3(const UDataSwapper *ds,
/* swap the contractions */
if(header.contractionSize!=0) {
- /* contractionIndex: UChar[] */
+ /* contractionIndex: char16_t[] */
ds->swapArray16(ds, inBytes+header.contractionIndex, header.contractionSize*2,
outBytes+header.contractionIndex, pErrorCode);
@@ -336,7 +336,7 @@ swapFormatVersion4(const UDataSwapper *ds,
for(int32_t i=indexesLength; i<=IX_TOTAL_SIZE; ++i) {
indexes[i]=-1;
}
- inIndexes=NULL; // Make sure we do not accidentally use these instead of indexes[].
+ inIndexes=nullptr; // Make sure we do not accidentally use these instead of indexes[].
// Get the total length of the data.
int32_t size;
@@ -506,7 +506,7 @@ ucol_swap(const UDataSwapper *ds,
inData=(const char *)inData+headerSize;
if(length>=0) { length-=headerSize; }
- outData=(char *)outData+headerSize;
+ outData=(outData == nullptr) ? nullptr : (char *)outData+headerSize;
int32_t collationSize;
if(info.formatVersion[0]>=4) {
collationSize=swapFormatVersion4(ds, inData, length, outData, *pErrorCode);
@@ -537,7 +537,7 @@ ucol_swapInverseUCA(const UDataSwapper *ds,
/* udata_swapDataHeader checks the arguments */
headerSize=udata_swapDataHeader(ds, inData, length, outData, pErrorCode);
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return 0;
}
diff --git a/Build/source/libs/icu/icu-src/source/common/ucurr.cpp b/Build/source/libs/icu/icu-src/source/common/ucurr.cpp
index 928d049fb55..70b1bbf2239 100644
--- a/Build/source/libs/icu/icu-src/source/common/ucurr.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ucurr.cpp
@@ -11,6 +11,8 @@
#if !UCONFIG_NO_FORMATTING
+#include <utility>
+
#include "unicode/ucurr.h"
#include "unicode/locid.h"
#include "unicode/ures.h"
@@ -20,6 +22,7 @@
#include "unicode/usetiter.h"
#include "unicode/utf16.h"
#include "ustr_imp.h"
+#include "bytesinkutil.h"
#include "charstr.h"
#include "cmemory.h"
#include "cstring.h"
@@ -49,7 +52,7 @@ using namespace icu;
#endif
typedef struct IsoCodeEntry {
- const UChar *isoCode; /* const because it's a reference to a resource bundle string. */
+ const char16_t *isoCode; /* const because it's a reference to a resource bundle string. */
UDate from;
UDate to;
} IsoCodeEntry;
@@ -96,11 +99,11 @@ static const char CURRENCIES_VARIANT[] = "Currencies%variant";
static const char CURRENCYPLURALS[] = "CurrencyPlurals";
// ISO codes mapping table
-static const UHashtable* gIsoCodes = NULL;
+static const UHashtable* gIsoCodes = nullptr;
static icu::UInitOnce gIsoCodesInitOnce {};
// Currency symbol equivalances
-static const icu::Hashtable* gCurrSymbolsEquiv = NULL;
+static const icu::Hashtable* gCurrSymbolsEquiv = nullptr;
static icu::UInitOnce gCurrSymbolsEquivInitOnce {};
U_NAMESPACE_BEGIN
@@ -117,8 +120,8 @@ public:
}
inline ~EquivIterator() { }
- // next returns the next equivalent string or NULL if there are no more.
- // If s has no equivalent strings, next returns NULL on the first call.
+ // next returns the next equivalent string or nullptr if there are no more.
+ // If s has no equivalent strings, next returns nullptr on the first call.
const icu::UnicodeString *next();
private:
const icu::Hashtable& _hash;
@@ -129,12 +132,12 @@ private:
const icu::UnicodeString *
EquivIterator::next() {
const icu::UnicodeString* _next = (const icu::UnicodeString*) _hash.get(*_current);
- if (_next == NULL) {
+ if (_next == nullptr) {
U_ASSERT(_current == _start);
- return NULL;
+ return nullptr;
}
if (*_next == *_start) {
- return NULL;
+ return nullptr;
}
_current = _next;
return _next;
@@ -161,7 +164,7 @@ static void makeEquivalent(
const icu::UnicodeString *firstRight = rightIter.next();
const icu::UnicodeString *nextLeft = firstLeft;
const icu::UnicodeString *nextRight = firstRight;
- while (nextLeft != NULL && nextRight != NULL) {
+ while (nextLeft != nullptr && nextRight != nullptr) {
if (*nextLeft == rhs || *nextRight == lhs) {
// Already equivalent
return;
@@ -172,17 +175,17 @@ static void makeEquivalent(
// Not equivalent. Must join.
icu::UnicodeString *newFirstLeft;
icu::UnicodeString *newFirstRight;
- if (firstRight == NULL && firstLeft == NULL) {
+ if (firstRight == nullptr && firstLeft == nullptr) {
// Neither lhs or rhs belong to an equivalence circle, so we form
// a new equivalnce circle of just lhs and rhs.
newFirstLeft = new icu::UnicodeString(rhs);
newFirstRight = new icu::UnicodeString(lhs);
- } else if (firstRight == NULL) {
+ } else if (firstRight == nullptr) {
// lhs belongs to an equivalence circle, but rhs does not, so we link
// rhs into lhs' circle.
newFirstLeft = new icu::UnicodeString(rhs);
newFirstRight = new icu::UnicodeString(*firstLeft);
- } else if (firstLeft == NULL) {
+ } else if (firstLeft == nullptr) {
// rhs belongs to an equivlance circle, but lhs does not, so we link
// lhs into rhs' circle.
newFirstLeft = new icu::UnicodeString(*firstRight);
@@ -193,7 +196,7 @@ static void makeEquivalent(
newFirstLeft = new icu::UnicodeString(*firstRight);
newFirstRight = new icu::UnicodeString(*firstLeft);
}
- if (newFirstLeft == NULL || newFirstRight == NULL) {
+ if (newFirstLeft == nullptr || newFirstRight == nullptr) {
delete newFirstLeft;
delete newFirstRight;
status = U_MEMORY_ALLOCATION_ERROR;
@@ -209,7 +212,7 @@ static void makeEquivalent(
static int32_t countEquivalent(const icu::Hashtable &hash, const icu::UnicodeString &s) {
int32_t result = 0;
icu::EquivIterator iter(hash, s);
- while (iter.next() != NULL) {
+ while (iter.next() != nullptr) {
++result;
}
#ifdef UCURR_DEBUG_EQUIV
@@ -231,11 +234,11 @@ static const icu::Hashtable* getCurrSymbolsEquiv();
* Cleanup callback func
*/
static UBool U_CALLCONV
-isoCodes_cleanup(void)
+isoCodes_cleanup()
{
- if (gIsoCodes != NULL) {
+ if (gIsoCodes != nullptr) {
uhash_close(const_cast<UHashtable *>(gIsoCodes));
- gIsoCodes = NULL;
+ gIsoCodes = nullptr;
}
gIsoCodesInitOnce.reset();
return true;
@@ -245,10 +248,10 @@ isoCodes_cleanup(void)
* Cleanup callback func
*/
static UBool U_CALLCONV
-currSymbolsEquiv_cleanup(void)
+currSymbolsEquiv_cleanup()
{
delete const_cast<icu::Hashtable *>(gCurrSymbolsEquiv);
- gCurrSymbolsEquiv = NULL;
+ gCurrSymbolsEquiv = nullptr;
gCurrSymbolsEquivInitOnce.reset();
return true;
}
@@ -272,11 +275,11 @@ deleteUnicode(void *obj) {
}
/**
- * Unfortunately, we have to convert the UChar* currency code to char*
+ * Unfortunately, we have to convert the char16_t* currency code to char*
* to use it as a resource key.
*/
static inline char*
-myUCharsToChars(char* resultOfLen4, const UChar* currency) {
+myUCharsToChars(char* resultOfLen4, const char16_t* currency) {
u_UCharsToChars(currency, resultOfLen4, ISO_CURRENCY_CODE_LENGTH);
resultOfLen4[ISO_CURRENCY_CODE_LENGTH] = 0;
return resultOfLen4;
@@ -291,7 +294,7 @@ myUCharsToChars(char* resultOfLen4, const UChar* currency) {
* and cashRounding ).
*/
static const int32_t*
-_findMetaData(const UChar* currency, UErrorCode& ec) {
+_findMetaData(const char16_t* currency, UErrorCode& ec) {
if (currency == 0 || *currency == 0) {
if (U_SUCCESS(ec)) {
@@ -315,10 +318,10 @@ _findMetaData(const UChar* currency, UErrorCode& ec) {
// Look up our currency, or if that's not available, then DEFAULT
char buf[ISO_CURRENCY_CODE_LENGTH+1];
UErrorCode ec2 = U_ZERO_ERROR; // local error code: soft failure
- UResourceBundle* rb = ures_getByKey(currencyMeta, myUCharsToChars(buf, currency), NULL, &ec2);
+ UResourceBundle* rb = ures_getByKey(currencyMeta, myUCharsToChars(buf, currency), nullptr, &ec2);
if (U_FAILURE(ec2)) {
ures_close(rb);
- rb = ures_getByKey(currencyMeta,DEFAULT_META, NULL, &ec);
+ rb = ures_getByKey(currencyMeta,DEFAULT_META, nullptr, &ec);
if (U_FAILURE(ec)) {
ures_close(currencyMeta);
ures_close(rb);
@@ -361,7 +364,7 @@ idForLocale(const char* locale, char* countryAndVariant, int capacity, UErrorCod
// don't use ICUService since we don't need fallback
U_CDECL_BEGIN
-static UBool U_CALLCONV currency_cleanup(void);
+static UBool U_CALLCONV currency_cleanup();
U_CDECL_END
#if !UCONFIG_NO_SERVICE
@@ -372,10 +375,10 @@ static CReg* gCRegHead = 0;
struct CReg : public icu::UMemory {
CReg *next;
- UChar iso[ISO_CURRENCY_CODE_LENGTH+1];
+ char16_t iso[ISO_CURRENCY_CODE_LENGTH+1];
char id[ULOC_FULLNAME_CAPACITY];
- CReg(const UChar* _iso, const char* _id)
+ CReg(const char16_t* _iso, const char* _id)
: next(0)
{
int32_t len = (int32_t)uprv_strlen(_id);
@@ -388,7 +391,7 @@ struct CReg : public icu::UMemory {
iso[ISO_CURRENCY_CODE_LENGTH] = 0;
}
- static UCurrRegistryKey reg(const UChar* _iso, const char* _id, UErrorCode* status)
+ static UCurrRegistryKey reg(const char16_t* _iso, const char* _id, UErrorCode* status)
{
if (status && U_SUCCESS(*status) && _iso && _id) {
CReg* n = new CReg(_iso, _id);
@@ -427,8 +430,8 @@ struct CReg : public icu::UMemory {
return found;
}
- static const UChar* get(const char* id) {
- const UChar* result = NULL;
+ static const char16_t* get(const char* id) {
+ const char16_t* result = nullptr;
umtx_lock(&gCRegLock);
CReg* p = gCRegHead;
@@ -446,7 +449,7 @@ struct CReg : public icu::UMemory {
}
/* This doesn't need to be thread safe. It's for u_cleanup only. */
- static void cleanup(void) {
+ static void cleanup() {
while (gCRegHead) {
CReg* n = gCRegHead;
gCRegHead = gCRegHead->next;
@@ -458,14 +461,14 @@ struct CReg : public icu::UMemory {
// -------------------------------------
U_CAPI UCurrRegistryKey U_EXPORT2
-ucurr_register(const UChar* isoCode, const char* locale, UErrorCode *status)
+ucurr_register(const char16_t* isoCode, const char* locale, UErrorCode *status)
{
if (status && U_SUCCESS(*status)) {
char id[ULOC_FULLNAME_CAPACITY];
idForLocale(locale, id, sizeof(id), status);
return CReg::reg(isoCode, id, status);
}
- return NULL;
+ return nullptr;
}
// -------------------------------------
@@ -485,14 +488,14 @@ ucurr_unregister(UCurrRegistryKey key, UErrorCode* status)
/**
* Release all static memory held by currency.
*/
-/*The declaration here is needed so currency_cleanup(void)
+/*The declaration here is needed so currency_cleanup()
* can call this function.
*/
static UBool U_CALLCONV
-currency_cache_cleanup(void);
+currency_cache_cleanup();
U_CDECL_BEGIN
-static UBool U_CALLCONV currency_cleanup(void) {
+static UBool U_CALLCONV currency_cleanup() {
#if !UCONFIG_NO_SERVICE
CReg::cleanup();
#endif
@@ -511,7 +514,7 @@ U_CDECL_END
U_CAPI int32_t U_EXPORT2
ucurr_forLocale(const char* locale,
- UChar* buff,
+ char16_t* buff,
int32_t buffCapacity,
UErrorCode* ec) {
if (U_FAILURE(*ec)) { return 0; }
@@ -520,14 +523,18 @@ ucurr_forLocale(const char* locale,
return 0;
}
- char currency[4]; // ISO currency codes are alpha3 codes.
UErrorCode localStatus = U_ZERO_ERROR;
- int32_t resLen = uloc_getKeywordValue(locale, "currency",
- currency, UPRV_LENGTHOF(currency), &localStatus);
- if (U_SUCCESS(localStatus) && resLen == 3 && uprv_isInvariantString(currency, resLen)) {
+ CharString currency;
+ {
+ CharStringByteSink sink(&currency);
+ ulocimp_getKeywordValue(locale, "currency", sink, &localStatus);
+ }
+ int32_t resLen = currency.length();
+
+ if (U_SUCCESS(localStatus) && resLen == 3 && uprv_isInvariantString(currency.data(), resLen)) {
if (resLen < buffCapacity) {
- T_CString_toUpperCase(currency);
- u_charsToUChars(currency, buff, resLen);
+ T_CString_toUpperCase(currency.data());
+ u_charsToUChars(currency.data(), buff, resLen);
}
return u_terminateUChars(buff, buffCapacity, resLen, ec);
}
@@ -540,7 +547,7 @@ ucurr_forLocale(const char* locale,
}
#if !UCONFIG_NO_SERVICE
- const UChar* result = CReg::get(id);
+ const char16_t* result = CReg::get(id);
if (result) {
if(buffCapacity > u_strlen(result)) {
u_strcpy(buff, result);
@@ -555,7 +562,7 @@ ucurr_forLocale(const char* locale,
idDelim[0] = 0;
}
- const UChar* s = NULL; // Currency code from data file.
+ const char16_t* s = nullptr; // Currency code from data file.
if (id[0] == 0) {
// No point looking in the data for an empty string.
// This is what we would get.
@@ -575,7 +582,7 @@ ucurr_forLocale(const char* locale,
ures_getByIndex(countryArray, i, nullptr, &localStatus));
// The currency is legal tender if it is *not* marked with tender{"false"}.
UErrorCode tenderStatus = localStatus;
- const UChar *tender =
+ const char16_t *tender =
ures_getStringByKey(currencyReq.getAlias(), "tender", nullptr, &tenderStatus);
bool isTender = U_FAILURE(tenderStatus) || u_strcmp(tender, u"false") != 0;
if (!isTender && s != nullptr) {
@@ -597,11 +604,15 @@ ucurr_forLocale(const char* locale,
if ((U_FAILURE(localStatus)) && strchr(id, '_') != 0) {
// We don't know about it. Check to see if we support the variant.
- uloc_getParent(locale, id, UPRV_LENGTHOF(id), ec);
+ CharString parent;
+ {
+ CharStringByteSink sink(&parent);
+ ulocimp_getParent(locale, sink, ec);
+ }
*ec = U_USING_FALLBACK_WARNING;
- // TODO: Loop over the shortened id rather than recursing and
+ // TODO: Loop over the parent rather than recursing and
// looking again for a currency keyword.
- return ucurr_forLocale(id, buff, buffCapacity, ec);
+ return ucurr_forLocale(parent.data(), buff, buffCapacity, ec);
}
if (*ec == U_ZERO_ERROR || localStatus != U_ZERO_ERROR) {
// There is nothing to fallback to. Report the failure/warning if possible.
@@ -624,24 +635,26 @@ ucurr_forLocale(const char* locale,
* @return true if the fallback happened; false if locale is already
* root ("").
*/
-static UBool fallback(char *loc) {
- if (!*loc) {
+static UBool fallback(CharString& loc) {
+ if (loc.isEmpty()) {
return false;
}
UErrorCode status = U_ZERO_ERROR;
- if (uprv_strcmp(loc, "en_GB") == 0) {
+ if (loc == "en_GB") {
// HACK: See #13368. We need "en_GB" to fall back to "en_001" instead of "en"
// in order to consume the correct data strings. This hack will be removed
// when proper data sink loading is implemented here.
- // NOTE: "001" adds 1 char over "GB". However, both call sites allocate
- // arrays with length ULOC_FULLNAME_CAPACITY (plenty of room for en_001).
- uprv_strcpy(loc + 3, "001");
+ loc.truncate(3);
+ loc.append("001", status);
} else {
- uloc_getParent(loc, loc, (int32_t)uprv_strlen(loc), &status);
+ CharString tmp;
+ CharStringByteSink sink(&tmp);
+ ulocimp_getParent(loc.data(), sink, &status);
+ loc = std::move(tmp);
}
/*
char *i = uprv_strrchr(loc, '_');
- if (i == NULL) {
+ if (i == nullptr) {
i = loc;
}
*i = 0;
@@ -650,8 +663,8 @@ static UBool fallback(char *loc) {
}
-U_CAPI const UChar* U_EXPORT2
-ucurr_getName(const UChar* currency,
+U_CAPI const char16_t* U_EXPORT2
+ucurr_getName(const char16_t* currency,
const char* locale,
UCurrNameStyle nameStyle,
UBool* isChoiceFormat, // fillin
@@ -692,9 +705,12 @@ ucurr_getName(const UChar* currency,
// this function.
UErrorCode ec2 = U_ZERO_ERROR;
- char loc[ULOC_FULLNAME_CAPACITY];
- uloc_getName(locale, loc, sizeof(loc), &ec2);
- if (U_FAILURE(ec2) || ec2 == U_STRING_NOT_TERMINATED_WARNING) {
+ CharString loc;
+ {
+ CharStringByteSink sink(&loc);
+ ulocimp_getName(locale, sink, &ec2);
+ }
+ if (U_FAILURE(ec2)) {
*ec = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -705,9 +721,9 @@ ucurr_getName(const UChar* currency,
/* Normalize the keyword value to uppercase */
T_CString_toUpperCase(buf);
- const UChar* s = NULL;
+ const char16_t* s = nullptr;
ec2 = U_ZERO_ERROR;
- LocalUResourceBundlePointer rb(ures_open(U_ICUDATA_CURR, loc, &ec2));
+ LocalUResourceBundlePointer rb(ures_open(U_ICUDATA_CURR, loc.data(), &ec2));
if (nameStyle == UCURR_NARROW_SYMBOL_NAME || nameStyle == UCURR_FORMAL_SYMBOL_NAME || nameStyle == UCURR_VARIANT_SYMBOL_NAME) {
CharString key;
@@ -734,7 +750,7 @@ ucurr_getName(const UChar* currency,
choice = UCURR_SYMBOL_NAME;
}
}
- if (s == NULL) {
+ if (s == nullptr) {
ures_getByKey(rb.getAlias(), CURRENCIES, rb.getAlias(), &ec2);
ures_getByKeyWithFallback(rb.getAlias(), buf, rb.getAlias(), &ec2);
s = ures_getStringByIndex(rb.getAlias(), choice, len, &ec2);
@@ -751,11 +767,11 @@ ucurr_getName(const UChar* currency,
// We no longer support choice format data in names. Data should not contain
// choice patterns.
- if (isChoiceFormat != NULL) {
+ if (isChoiceFormat != nullptr) {
*isChoiceFormat = false;
}
if (U_SUCCESS(ec2)) {
- U_ASSERT(s != NULL);
+ U_ASSERT(s != nullptr);
return s;
}
@@ -765,8 +781,8 @@ ucurr_getName(const UChar* currency,
return currency;
}
-U_CAPI const UChar* U_EXPORT2
-ucurr_getPluralName(const UChar* currency,
+U_CAPI const char16_t* U_EXPORT2
+ucurr_getPluralName(const char16_t* currency,
const char* locale,
UBool* isChoiceFormat,
const char* pluralCount,
@@ -791,9 +807,12 @@ ucurr_getPluralName(const UChar* currency,
// this function.
UErrorCode ec2 = U_ZERO_ERROR;
- char loc[ULOC_FULLNAME_CAPACITY];
- uloc_getName(locale, loc, sizeof(loc), &ec2);
- if (U_FAILURE(ec2) || ec2 == U_STRING_NOT_TERMINATED_WARNING) {
+ CharString loc;
+ {
+ CharStringByteSink sink(&loc);
+ ulocimp_getName(locale, sink, &ec2);
+ }
+ if (U_FAILURE(ec2)) {
*ec = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -801,9 +820,9 @@ ucurr_getPluralName(const UChar* currency,
char buf[ISO_CURRENCY_CODE_LENGTH+1];
myUCharsToChars(buf, currency);
- const UChar* s = NULL;
+ const char16_t* s = nullptr;
ec2 = U_ZERO_ERROR;
- UResourceBundle* rb = ures_open(U_ICUDATA_CURR, loc, &ec2);
+ UResourceBundle* rb = ures_open(U_ICUDATA_CURR, loc.data(), &ec2);
rb = ures_getByKey(rb, CURRENCYPLURALS, rb, &ec2);
@@ -831,7 +850,7 @@ ucurr_getPluralName(const UChar* currency,
|| (ec2 == U_USING_FALLBACK_WARNING && *ec != U_USING_DEFAULT_WARNING)) {
*ec = ec2;
}
- U_ASSERT(s != NULL);
+ U_ASSERT(s != nullptr);
return s;
}
@@ -852,7 +871,7 @@ ucurr_getPluralName(const UChar* currency,
typedef struct {
const char* IsoCode; // key
- UChar* currencyName; // value
+ char16_t* currencyName; // value
int32_t currencyNameLen; // value length
int32_t flag; // flags
} CurrencyNameStruct;
@@ -903,22 +922,26 @@ getCurrencyNameCount(const char* loc, int32_t* total_currency_name_count, int32_
U_NAMESPACE_USE
*total_currency_name_count = 0;
*total_currency_symbol_count = 0;
- const UChar* s = NULL;
- char locale[ULOC_FULLNAME_CAPACITY] = "";
- uprv_strcpy(locale, loc);
+ const char16_t* s = nullptr;
+ CharString locale;
+ {
+ UErrorCode status = U_ZERO_ERROR;
+ locale.append(loc, status);
+ if (U_FAILURE(status)) { return; }
+ }
const icu::Hashtable *currencySymbolsEquiv = getCurrSymbolsEquiv();
for (;;) {
UErrorCode ec2 = U_ZERO_ERROR;
// TODO: ures_openDirect?
- UResourceBundle* rb = ures_open(U_ICUDATA_CURR, locale, &ec2);
- UResourceBundle* curr = ures_getByKey(rb, CURRENCIES, NULL, &ec2);
+ UResourceBundle* rb = ures_open(U_ICUDATA_CURR, locale.data(), &ec2);
+ UResourceBundle* curr = ures_getByKey(rb, CURRENCIES, nullptr, &ec2);
int32_t n = ures_getSize(curr);
for (int32_t i=0; i<n; ++i) {
- UResourceBundle* names = ures_getByIndex(curr, i, NULL, &ec2);
+ UResourceBundle* names = ures_getByIndex(curr, i, nullptr, &ec2);
int32_t len;
s = ures_getStringByIndex(names, UCURR_SYMBOL_NAME, &len, &ec2);
++(*total_currency_symbol_count); // currency symbol
- if (currencySymbolsEquiv != NULL) {
+ if (currencySymbolsEquiv != nullptr) {
*total_currency_symbol_count += countEquivalent(*currencySymbolsEquiv, UnicodeString(true, s, len));
}
++(*total_currency_symbol_count); // iso code
@@ -928,10 +951,10 @@ getCurrencyNameCount(const char* loc, int32_t* total_currency_name_count, int32_
// currency plurals
UErrorCode ec3 = U_ZERO_ERROR;
- UResourceBundle* curr_p = ures_getByKey(rb, CURRENCYPLURALS, NULL, &ec3);
+ UResourceBundle* curr_p = ures_getByKey(rb, CURRENCYPLURALS, nullptr, &ec3);
n = ures_getSize(curr_p);
for (int32_t i=0; i<n; ++i) {
- UResourceBundle* names = ures_getByIndex(curr_p, i, NULL, &ec3);
+ UResourceBundle* names = ures_getByIndex(curr_p, i, nullptr, &ec3);
*total_currency_name_count += ures_getSize(names);
ures_close(names);
}
@@ -945,14 +968,14 @@ getCurrencyNameCount(const char* loc, int32_t* total_currency_name_count, int32_
}
}
-static UChar*
-toUpperCase(const UChar* source, int32_t len, const char* locale) {
- UChar* dest = NULL;
+static char16_t*
+toUpperCase(const char16_t* source, int32_t len, const char* locale) {
+ char16_t* dest = nullptr;
UErrorCode ec = U_ZERO_ERROR;
int32_t destLen = u_strToUpper(dest, 0, source, len, locale, &ec);
ec = U_ZERO_ERROR;
- dest = (UChar*)uprv_malloc(sizeof(UChar) * MAX(destLen, len));
+ dest = (char16_t*)uprv_malloc(sizeof(char16_t) * MAX(destLen, len));
u_strToUpper(dest, destLen, source, len, locale, &ec);
if (U_FAILURE(ec)) {
u_memcpy(dest, source, len);
@@ -979,28 +1002,31 @@ collectCurrencyNames(const char* locale,
// Look up the Currencies resource for the given locale.
UErrorCode ec2 = U_ZERO_ERROR;
- char loc[ULOC_FULLNAME_CAPACITY] = "";
- uloc_getName(locale, loc, sizeof(loc), &ec2);
- if (U_FAILURE(ec2) || ec2 == U_STRING_NOT_TERMINATED_WARNING) {
+ CharString loc;
+ {
+ CharStringByteSink sink(&loc);
+ ulocimp_getName(locale, sink, &ec2);
+ }
+ if (U_FAILURE(ec2)) {
ec = U_ILLEGAL_ARGUMENT_ERROR;
}
// Get maximum currency name count first.
- getCurrencyNameCount(loc, total_currency_name_count, total_currency_symbol_count);
+ getCurrencyNameCount(loc.data(), total_currency_name_count, total_currency_symbol_count);
*currencyNames = (CurrencyNameStruct*)uprv_malloc
(sizeof(CurrencyNameStruct) * (*total_currency_name_count));
*currencySymbols = (CurrencyNameStruct*)uprv_malloc
(sizeof(CurrencyNameStruct) * (*total_currency_symbol_count));
- if(currencyNames == NULL || currencySymbols == NULL) {
+ if(currencyNames == nullptr || currencySymbols == nullptr) {
ec = U_MEMORY_ALLOCATION_ERROR;
}
if (U_FAILURE(ec)) return;
- const UChar* s = NULL; // currency name
- char* iso = NULL; // currency ISO code
+ const char16_t* s = nullptr; // currency name
+ char* iso = nullptr; // currency ISO code
*total_currency_name_count = 0;
*total_currency_symbol_count = 0;
@@ -1009,16 +1035,16 @@ collectCurrencyNames(const char* locale,
UErrorCode ec4 = U_ZERO_ERROR;
// Using hash to remove duplicates caused by locale fallback
- UHashtable* currencyIsoCodes = uhash_open(uhash_hashChars, uhash_compareChars, NULL, &ec3);
- UHashtable* currencyPluralIsoCodes = uhash_open(uhash_hashChars, uhash_compareChars, NULL, &ec4);
+ UHashtable* currencyIsoCodes = uhash_open(uhash_hashChars, uhash_compareChars, nullptr, &ec3);
+ UHashtable* currencyPluralIsoCodes = uhash_open(uhash_hashChars, uhash_compareChars, nullptr, &ec4);
for (int32_t localeLevel = 0; ; ++localeLevel) {
ec2 = U_ZERO_ERROR;
// TODO: ures_openDirect
- UResourceBundle* rb = ures_open(U_ICUDATA_CURR, loc, &ec2);
- UResourceBundle* curr = ures_getByKey(rb, CURRENCIES, NULL, &ec2);
+ UResourceBundle* rb = ures_open(U_ICUDATA_CURR, loc.data(), &ec2);
+ UResourceBundle* curr = ures_getByKey(rb, CURRENCIES, nullptr, &ec2);
int32_t n = ures_getSize(curr);
for (int32_t i=0; i<n; ++i) {
- UResourceBundle* names = ures_getByIndex(curr, i, NULL, &ec2);
+ UResourceBundle* names = ures_getByIndex(curr, i, nullptr, &ec2);
int32_t len;
s = ures_getStringByIndex(names, UCURR_SYMBOL_NAME, &len, &ec2);
// TODO: uhash_put wont change key/value?
@@ -1026,7 +1052,7 @@ collectCurrencyNames(const char* locale,
if (localeLevel == 0) {
uhash_put(currencyIsoCodes, iso, iso, &ec3);
} else {
- if (uhash_get(currencyIsoCodes, iso) != NULL) {
+ if (uhash_get(currencyIsoCodes, iso) != nullptr) {
ures_close(names);
continue;
} else {
@@ -1035,18 +1061,18 @@ collectCurrencyNames(const char* locale,
}
// Add currency symbol.
(*currencySymbols)[*total_currency_symbol_count].IsoCode = iso;
- (*currencySymbols)[*total_currency_symbol_count].currencyName = (UChar*)s;
+ (*currencySymbols)[*total_currency_symbol_count].currencyName = (char16_t*)s;
(*currencySymbols)[*total_currency_symbol_count].flag = 0;
(*currencySymbols)[(*total_currency_symbol_count)++].currencyNameLen = len;
// Add equivalent symbols
- if (currencySymbolsEquiv != NULL) {
+ if (currencySymbolsEquiv != nullptr) {
UnicodeString str(true, s, len);
icu::EquivIterator iter(*currencySymbolsEquiv, str);
const UnicodeString *symbol;
- while ((symbol = iter.next()) != NULL) {
+ while ((symbol = iter.next()) != nullptr) {
(*currencySymbols)[*total_currency_symbol_count].IsoCode = iso;
(*currencySymbols)[*total_currency_symbol_count].currencyName =
- const_cast<UChar*>(symbol->getBuffer());
+ const_cast<char16_t*>(symbol->getBuffer());
(*currencySymbols)[*total_currency_symbol_count].flag = 0;
(*currencySymbols)[(*total_currency_symbol_count)++].currencyNameLen = symbol->length();
}
@@ -1055,7 +1081,7 @@ collectCurrencyNames(const char* locale,
// Add currency long name.
s = ures_getStringByIndex(names, UCURR_LONG_NAME, &len, &ec2);
(*currencyNames)[*total_currency_name_count].IsoCode = iso;
- UChar* upperName = toUpperCase(s, len, locale);
+ char16_t* upperName = toUpperCase(s, len, locale);
(*currencyNames)[*total_currency_name_count].currencyName = upperName;
(*currencyNames)[*total_currency_name_count].flag = NEED_TO_BE_DELETED;
(*currencyNames)[(*total_currency_name_count)++].currencyNameLen = len;
@@ -1063,7 +1089,7 @@ collectCurrencyNames(const char* locale,
// put (iso, 3, and iso) in to array
// Add currency ISO code.
(*currencySymbols)[*total_currency_symbol_count].IsoCode = iso;
- (*currencySymbols)[*total_currency_symbol_count].currencyName = (UChar*)uprv_malloc(sizeof(UChar)*3);
+ (*currencySymbols)[*total_currency_symbol_count].currencyName = (char16_t*)uprv_malloc(sizeof(char16_t)*3);
// Must convert iso[] into Unicode
u_charsToUChars(iso, (*currencySymbols)[*total_currency_symbol_count].currencyName, 3);
(*currencySymbols)[*total_currency_symbol_count].flag = NEED_TO_BE_DELETED;
@@ -1074,16 +1100,16 @@ collectCurrencyNames(const char* locale,
// currency plurals
UErrorCode ec5 = U_ZERO_ERROR;
- UResourceBundle* curr_p = ures_getByKey(rb, CURRENCYPLURALS, NULL, &ec5);
+ UResourceBundle* curr_p = ures_getByKey(rb, CURRENCYPLURALS, nullptr, &ec5);
n = ures_getSize(curr_p);
for (int32_t i=0; i<n; ++i) {
- UResourceBundle* names = ures_getByIndex(curr_p, i, NULL, &ec5);
+ UResourceBundle* names = ures_getByIndex(curr_p, i, nullptr, &ec5);
iso = (char*)ures_getKey(names);
// Using hash to remove duplicated ISO codes in fallback chain.
if (localeLevel == 0) {
uhash_put(currencyPluralIsoCodes, iso, iso, &ec4);
} else {
- if (uhash_get(currencyPluralIsoCodes, iso) != NULL) {
+ if (uhash_get(currencyPluralIsoCodes, iso) != nullptr) {
ures_close(names);
continue;
} else {
@@ -1097,7 +1123,7 @@ collectCurrencyNames(const char* locale,
// currency long name?
s = ures_getStringByIndex(names, j, &len, &ec5);
(*currencyNames)[*total_currency_name_count].IsoCode = iso;
- UChar* upperName = toUpperCase(s, len, locale);
+ char16_t* upperName = toUpperCase(s, len, locale);
(*currencyNames)[*total_currency_name_count].currencyName = upperName;
(*currencyNames)[*total_currency_name_count].flag = NEED_TO_BE_DELETED;
(*currencyNames)[(*total_currency_name_count)++].currencyNameLen = len;
@@ -1164,7 +1190,7 @@ collectCurrencyNames(const char* locale,
static int32_t
binarySearch(const CurrencyNameStruct* currencyNames,
int32_t indexInCurrencyNames,
- const UChar key,
+ const char16_t key,
int32_t* begin, int32_t* end) {
#ifdef UCURR_DEBUG
printf("key = %x\n", key);
@@ -1278,14 +1304,14 @@ binarySearch(const CurrencyNameStruct* currencyNames,
static void
linearSearch(const CurrencyNameStruct* currencyNames,
int32_t begin, int32_t end,
- const UChar* text, int32_t textLen,
+ const char16_t* text, int32_t textLen,
int32_t *partialMatchLen,
int32_t *maxMatchLen, int32_t* maxMatchIndex) {
int32_t initialPartialMatchLen = *partialMatchLen;
for (int32_t index = begin; index <= end; ++index) {
int32_t len = currencyNames[index].currencyNameLen;
if (len > *maxMatchLen && len <= textLen &&
- uprv_memcmp(currencyNames[index].currencyName, text, len * sizeof(UChar)) == 0) {
+ uprv_memcmp(currencyNames[index].currencyName, text, len * sizeof(char16_t)) == 0) {
*partialMatchLen = MAX(*partialMatchLen, len);
*maxMatchIndex = index;
*maxMatchLen = len;
@@ -1317,7 +1343,7 @@ linearSearch(const CurrencyNameStruct* currencyNames,
static void
searchCurrencyName(const CurrencyNameStruct* currencyNames,
int32_t total_currency_count,
- const UChar* text, int32_t textLen,
+ const char16_t* text, int32_t textLen,
int32_t *partialMatchLen,
int32_t* maxMatchLen, int32_t* maxMatchIndex) {
*maxMatchIndex = -1;
@@ -1388,7 +1414,7 @@ typedef struct {
#define CURRENCY_NAME_CACHE_NUM 10
// Reserve 10 cache entries.
-static CurrencyNameCacheEntry* currCache[CURRENCY_NAME_CACHE_NUM] = {NULL};
+static CurrencyNameCacheEntry* currCache[CURRENCY_NAME_CACHE_NUM] = {nullptr};
// Using an index to indicate which entry to be replaced when cache is full.
// It is a simple round-robin replacement strategy.
static int8_t currentCacheEntryIndex = 0;
@@ -1417,7 +1443,7 @@ deleteCacheEntry(CurrencyNameCacheEntry* entry) {
// Cache clean up
static UBool U_CALLCONV
-currency_cache_cleanup(void) {
+currency_cache_cleanup() {
for (int32_t i = 0; i < CURRENCY_NAME_CACHE_NUM; ++i) {
if (currCache[i]) {
deleteCacheEntry(currCache[i]);
@@ -1437,17 +1463,17 @@ static CurrencyNameCacheEntry*
getCacheEntry(const char* locale, UErrorCode& ec) {
int32_t total_currency_name_count = 0;
- CurrencyNameStruct* currencyNames = NULL;
+ CurrencyNameStruct* currencyNames = nullptr;
int32_t total_currency_symbol_count = 0;
- CurrencyNameStruct* currencySymbols = NULL;
- CurrencyNameCacheEntry* cacheEntry = NULL;
+ CurrencyNameStruct* currencySymbols = nullptr;
+ CurrencyNameCacheEntry* cacheEntry = nullptr;
umtx_lock(&gCurrencyCacheMutex);
// in order to handle racing correctly,
// not putting 'search' in a separate function.
int8_t found = -1;
for (int8_t i = 0; i < CURRENCY_NAME_CACHE_NUM; ++i) {
- if (currCache[i]!= NULL &&
+ if (currCache[i]!= nullptr &&
uprv_strcmp(locale, currCache[i]->locale) == 0) {
found = i;
break;
@@ -1461,12 +1487,12 @@ getCacheEntry(const char* locale, UErrorCode& ec) {
if (found == -1) {
collectCurrencyNames(locale, &currencyNames, &total_currency_name_count, &currencySymbols, &total_currency_symbol_count, ec);
if (U_FAILURE(ec)) {
- return NULL;
+ return nullptr;
}
umtx_lock(&gCurrencyCacheMutex);
// check again.
for (int8_t i = 0; i < CURRENCY_NAME_CACHE_NUM; ++i) {
- if (currCache[i]!= NULL &&
+ if (currCache[i]!= nullptr &&
uprv_strcmp(locale, currCache[i]->locale) == 0) {
found = i;
break;
@@ -1523,7 +1549,7 @@ uprv_parseCurrency(const char* locale,
icu::ParsePosition& pos,
int8_t type,
int32_t* partialMatchLen,
- UChar* result,
+ char16_t* result,
UErrorCode& ec) {
U_NAMESPACE_USE
if (U_FAILURE(ec)) {
@@ -1541,8 +1567,8 @@ uprv_parseCurrency(const char* locale,
int32_t start = pos.getIndex();
- UChar inputText[MAX_CURRENCY_NAME_LEN];
- UChar upperText[MAX_CURRENCY_NAME_LEN];
+ char16_t inputText[MAX_CURRENCY_NAME_LEN];
+ char16_t upperText[MAX_CURRENCY_NAME_LEN];
int32_t textLen = MIN(MAX_CURRENCY_NAME_LEN, text.length() - start);
text.extract(start, textLen, inputText);
UErrorCode ec1 = U_ZERO_ERROR;
@@ -1630,13 +1656,13 @@ void uprv_currencyLeads(const char* locale, icu::UnicodeSet& result, UErrorCode&
* DecimalFormat and DecimalFormatSymbols.
*/
U_CAPI void
-uprv_getStaticCurrencyName(const UChar* iso, const char* loc,
+uprv_getStaticCurrencyName(const char16_t* iso, const char* loc,
icu::UnicodeString& result, UErrorCode& ec)
{
U_NAMESPACE_USE
int32_t len;
- const UChar* currname = ucurr_getName(iso, loc, UCURR_SYMBOL_NAME,
+ const char16_t* currname = ucurr_getName(iso, loc, UCURR_SYMBOL_NAME,
nullptr /* isChoiceFormat */, &len, &ec);
if (U_SUCCESS(ec)) {
result.setTo(currname, len);
@@ -1644,12 +1670,12 @@ uprv_getStaticCurrencyName(const UChar* iso, const char* loc,
}
U_CAPI int32_t U_EXPORT2
-ucurr_getDefaultFractionDigits(const UChar* currency, UErrorCode* ec) {
+ucurr_getDefaultFractionDigits(const char16_t* currency, UErrorCode* ec) {
return ucurr_getDefaultFractionDigitsForUsage(currency,UCURR_USAGE_STANDARD,ec);
}
U_CAPI int32_t U_EXPORT2
-ucurr_getDefaultFractionDigitsForUsage(const UChar* currency, const UCurrencyUsage usage, UErrorCode* ec) {
+ucurr_getDefaultFractionDigitsForUsage(const char16_t* currency, const UCurrencyUsage usage, UErrorCode* ec) {
int32_t fracDigits = 0;
if (U_SUCCESS(*ec)) {
switch (usage) {
@@ -1667,12 +1693,12 @@ ucurr_getDefaultFractionDigitsForUsage(const UChar* currency, const UCurrencyUsa
}
U_CAPI double U_EXPORT2
-ucurr_getRoundingIncrement(const UChar* currency, UErrorCode* ec) {
+ucurr_getRoundingIncrement(const char16_t* currency, UErrorCode* ec) {
return ucurr_getRoundingIncrementForUsage(currency, UCURR_USAGE_STANDARD, ec);
}
U_CAPI double U_EXPORT2
-ucurr_getRoundingIncrementForUsage(const UChar* currency, const UCurrencyUsage usage, UErrorCode* ec) {
+ucurr_getRoundingIncrementForUsage(const char16_t* currency, const UCurrencyUsage usage, UErrorCode* ec) {
double result = 0.0;
const int32_t *data = _findMetaData(currency, *ec);
@@ -2032,7 +2058,7 @@ static const struct CurrencyList {
{"ZWD", UCURR_COMMON|UCURR_DEPRECATED},
{"ZWL", UCURR_COMMON|UCURR_DEPRECATED},
{"ZWR", UCURR_COMMON|UCURR_DEPRECATED},
- { NULL, 0 } // Leave here to denote the end of the list.
+ { nullptr, 0 } // Leave here to denote the end of the list.
};
#define UCURR_MATCHES_BITMASK(variable, typeToMatch) \
@@ -2045,7 +2071,7 @@ ucurr_countCurrencyList(UEnumeration *enumerator, UErrorCode * /*pErrorCode*/) {
int32_t count = 0;
/* Count the number of items matching the type we are looking for. */
- for (int32_t idx = 0; gCurrencyList[idx].currency != NULL; idx++) {
+ for (int32_t idx = 0; gCurrencyList[idx].currency != nullptr; idx++) {
if (UCURR_MATCHES_BITMASK(gCurrencyList[idx].currType, currType)) {
count++;
}
@@ -2075,7 +2101,7 @@ ucurr_nextCurrencyList(UEnumeration *enumerator,
if (resultLength) {
*resultLength = 0;
}
- return NULL;
+ return nullptr;
}
static void U_CALLCONV
@@ -2101,34 +2127,34 @@ ucurr_createCurrencyList(UHashtable *isoCodes, UErrorCode* status){
// process each entry in currency map
for (int32_t i=0; i<ures_getSize(currencyMapArray); i++) {
// get the currency resource
- UResourceBundle *currencyArray = ures_getByIndex(currencyMapArray, i, NULL, &localStatus);
+ UResourceBundle *currencyArray = ures_getByIndex(currencyMapArray, i, nullptr, &localStatus);
// process each currency
if (U_SUCCESS(localStatus)) {
for (int32_t j=0; j<ures_getSize(currencyArray); j++) {
// get the currency resource
- UResourceBundle *currencyRes = ures_getByIndex(currencyArray, j, NULL, &localStatus);
+ UResourceBundle *currencyRes = ures_getByIndex(currencyArray, j, nullptr, &localStatus);
IsoCodeEntry *entry = (IsoCodeEntry*)uprv_malloc(sizeof(IsoCodeEntry));
- if (entry == NULL) {
+ if (entry == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
return;
}
// get the ISO code
int32_t isoLength = 0;
- UResourceBundle *idRes = ures_getByKey(currencyRes, "id", NULL, &localStatus);
- if (idRes == NULL) {
+ UResourceBundle *idRes = ures_getByKey(currencyRes, "id", nullptr, &localStatus);
+ if (idRes == nullptr) {
continue;
}
- const UChar *isoCode = ures_getString(idRes, &isoLength, &localStatus);
+ const char16_t *isoCode = ures_getString(idRes, &isoLength, &localStatus);
// get from date
UDate fromDate = U_DATE_MIN;
- UResourceBundle *fromRes = ures_getByKey(currencyRes, "from", NULL, &localStatus);
+ UResourceBundle *fromRes = ures_getByKey(currencyRes, "from", nullptr, &localStatus);
if (U_SUCCESS(localStatus)) {
int32_t fromLength = 0;
const int32_t *fromArray = ures_getIntVector(fromRes, &fromLength, &localStatus);
- int64_t currDate64 = (int64_t)fromArray[0] << 32;
+ int64_t currDate64 = ((uint64_t)fromArray[0]) << 32;
currDate64 |= ((int64_t)fromArray[1] & (int64_t)INT64_C(0x00000000FFFFFFFF));
fromDate = (UDate)currDate64;
}
@@ -2137,12 +2163,12 @@ ucurr_createCurrencyList(UHashtable *isoCodes, UErrorCode* status){
// get to date
UDate toDate = U_DATE_MAX;
localStatus = U_ZERO_ERROR;
- UResourceBundle *toRes = ures_getByKey(currencyRes, "to", NULL, &localStatus);
+ UResourceBundle *toRes = ures_getByKey(currencyRes, "to", nullptr, &localStatus);
if (U_SUCCESS(localStatus)) {
int32_t toLength = 0;
const int32_t *toArray = ures_getIntVector(toRes, &toLength, &localStatus);
- int64_t currDate64 = (int64_t)toArray[0] << 32;
+ int64_t currDate64 = (uint64_t)toArray[0] << 32;
currDate64 |= ((int64_t)toArray[1] & (int64_t)INT64_C(0x00000000FFFFFFFF));
toDate = (UDate)currDate64;
}
@@ -2156,7 +2182,7 @@ ucurr_createCurrencyList(UHashtable *isoCodes, UErrorCode* status){
entry->to = toDate;
localStatus = U_ZERO_ERROR;
- uhash_put(isoCodes, (UChar *)isoCode, entry, &localStatus);
+ uhash_put(isoCodes, (char16_t *)isoCode, entry, &localStatus);
}
} else {
*status = localStatus;
@@ -2171,8 +2197,8 @@ ucurr_createCurrencyList(UHashtable *isoCodes, UErrorCode* status){
}
static const UEnumeration gEnumCurrencyList = {
- NULL,
- NULL,
+ nullptr,
+ nullptr,
ucurr_closeCurrencyList,
ucurr_countCurrencyList,
uenum_unextDefault,
@@ -2183,10 +2209,10 @@ U_CDECL_END
static void U_CALLCONV initIsoCodes(UErrorCode &status) {
- U_ASSERT(gIsoCodes == NULL);
+ U_ASSERT(gIsoCodes == nullptr);
ucln_common_registerCleanup(UCLN_COMMON_CURRENCY, currency_cleanup);
- UHashtable *isoCodes = uhash_open(uhash_hashUChars, uhash_compareUChars, NULL, &status);
+ UHashtable *isoCodes = uhash_open(uhash_hashUChars, uhash_compareUChars, nullptr, &status);
if (U_FAILURE(status)) {
return;
}
@@ -2221,11 +2247,11 @@ static void populateCurrSymbolsEquiv(icu::Hashtable *hash, UErrorCode &status) {
}
static void U_CALLCONV initCurrSymbolsEquiv() {
- U_ASSERT(gCurrSymbolsEquiv == NULL);
+ U_ASSERT(gCurrSymbolsEquiv == nullptr);
UErrorCode status = U_ZERO_ERROR;
ucln_common_registerCleanup(UCLN_COMMON_CURRENCY, currency_cleanup);
icu::Hashtable *temp = new icu::Hashtable(status);
- if (temp == NULL) {
+ if (temp == nullptr) {
return;
}
if (U_FAILURE(status)) {
@@ -2242,14 +2268,14 @@ static void U_CALLCONV initCurrSymbolsEquiv() {
}
U_CAPI UBool U_EXPORT2
-ucurr_isAvailable(const UChar* isoCode, UDate from, UDate to, UErrorCode* eErrorCode) {
+ucurr_isAvailable(const char16_t* isoCode, UDate from, UDate to, UErrorCode* eErrorCode) {
umtx_initOnce(gIsoCodesInitOnce, &initIsoCodes, *eErrorCode);
if (U_FAILURE(*eErrorCode)) {
return false;
}
IsoCodeEntry* result = (IsoCodeEntry *) uhash_get(gIsoCodes, isoCode);
- if (result == NULL) {
+ if (result == nullptr) {
return false;
} else if (from > to) {
*eErrorCode = U_ILLEGAL_ARGUMENT_ERROR;
@@ -2267,20 +2293,20 @@ static const icu::Hashtable* getCurrSymbolsEquiv() {
U_CAPI UEnumeration * U_EXPORT2
ucurr_openISOCurrencies(uint32_t currType, UErrorCode *pErrorCode) {
- UEnumeration *myEnum = NULL;
+ UEnumeration *myEnum = nullptr;
UCurrencyContext *myContext;
myEnum = (UEnumeration*)uprv_malloc(sizeof(UEnumeration));
- if (myEnum == NULL) {
+ if (myEnum == nullptr) {
*pErrorCode = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
uprv_memcpy(myEnum, &gEnumCurrencyList, sizeof(UEnumeration));
myContext = (UCurrencyContext*)uprv_malloc(sizeof(UCurrencyContext));
- if (myContext == NULL) {
+ if (myContext == nullptr) {
*pErrorCode = U_MEMORY_ALLOCATION_ERROR;
uprv_free(myEnum);
- return NULL;
+ return nullptr;
}
myContext->currType = currType;
myContext->listIdx = 0;
@@ -2295,7 +2321,7 @@ ucurr_countCurrencies(const char* locale,
{
int32_t currCount = 0;
- if (ec != NULL && U_SUCCESS(*ec))
+ if (ec != nullptr && U_SUCCESS(*ec))
{
// local variables
UErrorCode localStatus = U_ZERO_ERROR;
@@ -2329,21 +2355,21 @@ ucurr_countCurrencies(const char* locale,
for (int32_t i=0; i<ures_getSize(countryArray); i++)
{
// get the currency resource
- UResourceBundle *currencyRes = ures_getByIndex(countryArray, i, NULL, &localStatus);
+ UResourceBundle *currencyRes = ures_getByIndex(countryArray, i, nullptr, &localStatus);
// get the from date
int32_t fromLength = 0;
- UResourceBundle *fromRes = ures_getByKey(currencyRes, "from", NULL, &localStatus);
+ UResourceBundle *fromRes = ures_getByKey(currencyRes, "from", nullptr, &localStatus);
const int32_t *fromArray = ures_getIntVector(fromRes, &fromLength, &localStatus);
- int64_t currDate64 = (int64_t)fromArray[0] << 32;
+ int64_t currDate64 = (int64_t)((uint64_t)(fromArray[0]) << 32);
currDate64 |= ((int64_t)fromArray[1] & (int64_t)INT64_C(0x00000000FFFFFFFF));
UDate fromDate = (UDate)currDate64;
if (ures_getSize(currencyRes)> 2)
{
int32_t toLength = 0;
- UResourceBundle *toRes = ures_getByKey(currencyRes, "to", NULL, &localStatus);
+ UResourceBundle *toRes = ures_getByKey(currencyRes, "to", nullptr, &localStatus);
const int32_t *toArray = ures_getIntVector(toRes, &toLength, &localStatus);
currDate64 = (int64_t)toArray[0] << 32;
@@ -2399,15 +2425,15 @@ U_CAPI int32_t U_EXPORT2
ucurr_forLocaleAndDate(const char* locale,
UDate date,
int32_t index,
- UChar* buff,
+ char16_t* buff,
int32_t buffCapacity,
UErrorCode* ec)
{
int32_t resLen = 0;
int32_t currIndex = 0;
- const UChar* s = NULL;
+ const char16_t* s = nullptr;
- if (ec != NULL && U_SUCCESS(*ec))
+ if (ec != nullptr && U_SUCCESS(*ec))
{
// check the arguments passed
if ((buff && buffCapacity) || !buffCapacity )
@@ -2451,22 +2477,22 @@ ucurr_forLocaleAndDate(const char* locale,
for (int32_t i=0; i<ures_getSize(countryArray); i++)
{
// get the currency resource
- UResourceBundle *currencyRes = ures_getByIndex(countryArray, i, NULL, &localStatus);
+ UResourceBundle *currencyRes = ures_getByIndex(countryArray, i, nullptr, &localStatus);
s = ures_getStringByKey(currencyRes, "id", &resLen, &localStatus);
// get the from date
int32_t fromLength = 0;
- UResourceBundle *fromRes = ures_getByKey(currencyRes, "from", NULL, &localStatus);
+ UResourceBundle *fromRes = ures_getByKey(currencyRes, "from", nullptr, &localStatus);
const int32_t *fromArray = ures_getIntVector(fromRes, &fromLength, &localStatus);
- int64_t currDate64 = (int64_t)fromArray[0] << 32;
+ int64_t currDate64 = (int64_t)((uint64_t)fromArray[0] << 32);
currDate64 |= ((int64_t)fromArray[1] & (int64_t)INT64_C(0x00000000FFFFFFFF));
UDate fromDate = (UDate)currDate64;
if (ures_getSize(currencyRes)> 2)
{
int32_t toLength = 0;
- UResourceBundle *toRes = ures_getByKey(currencyRes, "to", NULL, &localStatus);
+ UResourceBundle *toRes = ures_getByKey(currencyRes, "to", nullptr, &localStatus);
const int32_t *toArray = ures_getIntVector(toRes, &toLength, &localStatus);
currDate64 = (int64_t)toArray[0] << 32;
@@ -2550,8 +2576,8 @@ ucurr_forLocaleAndDate(const char* locale,
}
static const UEnumeration defaultKeywordValues = {
- NULL,
- NULL,
+ nullptr,
+ nullptr,
ulist_close_keyword_values_iterator,
ulist_count_keyword_values,
uenum_unextDefault,
@@ -2568,15 +2594,15 @@ U_CAPI UEnumeration *U_EXPORT2 ucurr_getKeywordValuesForLocale(const char *key,
UList *values = ulist_createEmptyList(status);
UList *otherValues = ulist_createEmptyList(status);
UEnumeration *en = (UEnumeration *)uprv_malloc(sizeof(UEnumeration));
- if (U_FAILURE(*status) || en == NULL) {
- if (en == NULL) {
+ if (U_FAILURE(*status) || en == nullptr) {
+ if (en == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
} else {
uprv_free(en);
}
ulist_deleteList(values);
ulist_deleteList(otherValues);
- return NULL;
+ return nullptr;
}
memcpy(en, &defaultKeywordValues, sizeof(UEnumeration));
en->context = values;
@@ -2614,7 +2640,7 @@ U_CAPI UEnumeration *U_EXPORT2 ucurr_getKeywordValuesForLocale(const char *key,
}
char *curID = (char *)uprv_malloc(sizeof(char) * ULOC_KEYWORDS_CAPACITY);
int32_t curIDLength = ULOC_KEYWORDS_CAPACITY;
- if (curID == NULL) {
+ if (curID == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
break;
}
@@ -2624,7 +2650,7 @@ U_CAPI UEnumeration *U_EXPORT2 ucurr_getKeywordValuesForLocale(const char *key,
/* optimize - use the utf-8 string */
#else
{
- const UChar* defString = ures_getStringByKey(&curbndl, "id", &curIDLength, status);
+ const char16_t* defString = ures_getStringByKey(&curbndl, "id", &curIDLength, status);
if(U_SUCCESS(*status)) {
if(curIDLength+1 > ULOC_KEYWORDS_CAPACITY) {
*status = U_BUFFER_OVERFLOW_ERROR;
@@ -2667,9 +2693,9 @@ U_CAPI UEnumeration *U_EXPORT2 ucurr_getKeywordValuesForLocale(const char *key,
}
} else {
// Consolidate the list
- char *value = NULL;
+ char *value = nullptr;
ulist_resetList(otherValues);
- while ((value = (char *)ulist_getNext(otherValues)) != NULL) {
+ while ((value = (char *)ulist_getNext(otherValues)) != nullptr) {
if (!ulist_containsString(values, value, (int32_t)uprv_strlen(value))) {
char *tmpValue = (char *)uprv_malloc(sizeof(char) * ULOC_KEYWORDS_CAPACITY);
uprv_memcpy(tmpValue, value, uprv_strlen(value) + 1);
@@ -2685,8 +2711,8 @@ U_CAPI UEnumeration *U_EXPORT2 ucurr_getKeywordValuesForLocale(const char *key,
} else {
ulist_deleteList(values);
uprv_free(en);
- values = NULL;
- en = NULL;
+ values = nullptr;
+ en = nullptr;
}
ures_close(&to);
ures_close(&curbndl);
@@ -2701,7 +2727,7 @@ U_CAPI UEnumeration *U_EXPORT2 ucurr_getKeywordValuesForLocale(const char *key,
U_CAPI int32_t U_EXPORT2
-ucurr_getNumericCode(const UChar* currency) {
+ucurr_getNumericCode(const char16_t* currency) {
int32_t code = 0;
if (currency && u_strlen(currency) == ISO_CURRENCY_CODE_LENGTH) {
UErrorCode status = U_ZERO_ERROR;
diff --git a/Build/source/libs/icu/icu-src/source/common/udata.cpp b/Build/source/libs/icu/icu-src/source/common/udata.cpp
index 2bc74c97898..88126fc689a 100644
--- a/Build/source/libs/icu/icu-src/source/common/udata.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/udata.cpp
@@ -104,11 +104,11 @@ static UDataMemory *udata_findCachedData(const char *path, UErrorCode &err);
* that they really need, reducing the size of binaries that take advantage
* of this.
*/
-static UDataMemory *gCommonICUDataArray[10] = { NULL }; // Access protected by icu global mutex.
+static UDataMemory *gCommonICUDataArray[10] = { nullptr }; // Access protected by icu global mutex.
static u_atomic_int32_t gHaveTriedToLoadCommonData {0}; // See extendICUData().
-static UHashtable *gCommonDataCache = NULL; /* Global hash table of opened ICU data files. */
+static UHashtable *gCommonDataCache = nullptr; /* Global hash table of opened ICU data files. */
static icu::UInitOnce gCommonDataCacheInitOnce {};
#if !defined(ICU_DATA_DIR_WINDOWS)
@@ -120,19 +120,19 @@ static UDataFileAccess gDataFileAccess = UDATA_NO_FILES;
#endif
static UBool U_CALLCONV
-udata_cleanup(void)
+udata_cleanup()
{
int32_t i;
if (gCommonDataCache) { /* Delete the cache of user data mappings. */
uhash_close(gCommonDataCache); /* Table owns the contents, and will delete them. */
- gCommonDataCache = NULL; /* Cleanup is not thread safe. */
+ gCommonDataCache = nullptr; /* Cleanup is not thread safe. */
}
gCommonDataCacheInitOnce.reset();
- for (i = 0; i < UPRV_LENGTHOF(gCommonICUDataArray) && gCommonICUDataArray[i] != NULL; ++i) {
+ for (i = 0; i < UPRV_LENGTHOF(gCommonICUDataArray) && gCommonICUDataArray[i] != nullptr; ++i) {
udata_close(gCommonICUDataArray[i]);
- gCommonICUDataArray[i] = NULL;
+ gCommonICUDataArray[i] = nullptr;
}
gHaveTriedToLoadCommonData = 0;
@@ -146,13 +146,13 @@ findCommonICUDataByName(const char *inBasename, UErrorCode &err)
int32_t i;
UDataMemory *pData = udata_findCachedData(inBasename, err);
- if (U_FAILURE(err) || pData == NULL)
+ if (U_FAILURE(err) || pData == nullptr)
return false;
{
Mutex lock;
for (i = 0; i < UPRV_LENGTHOF(gCommonICUDataArray); ++i) {
- if ((gCommonICUDataArray[i] != NULL) && (gCommonICUDataArray[i]->pHeader == pData->pHeader)) {
+ if ((gCommonICUDataArray[i] != nullptr) && (gCommonICUDataArray[i]->pHeader == pData->pHeader)) {
/* The data pointer is already in the array. */
found = true;
break;
@@ -184,9 +184,9 @@ setCommonICUData(UDataMemory *pData, /* The new common data. Belongs to ca
/* deleted - someone may still have a pointer to it lying around in */
/* their locals. */
UDatamemory_assign(newCommonData, pData);
- umtx_lock(NULL);
+ umtx_lock(nullptr);
for (i = 0; i < UPRV_LENGTHOF(gCommonICUDataArray); ++i) {
- if (gCommonICUDataArray[i] == NULL) {
+ if (gCommonICUDataArray[i] == nullptr) {
gCommonICUDataArray[i] = newCommonData;
didUpdate = true;
break;
@@ -195,7 +195,7 @@ setCommonICUData(UDataMemory *pData, /* The new common data. Belongs to ca
break;
}
}
- umtx_unlock(NULL);
+ umtx_unlock(nullptr);
if (i == UPRV_LENGTHOF(gCommonICUDataArray) && warn) {
*pErr = U_USING_DEFAULT_WARNING;
@@ -224,7 +224,7 @@ setCommonICUDataPointer(const void *pData, UBool /*warn*/, UErrorCode *pErrorCod
static const char *
findBasename(const char *path) {
const char *basename=uprv_strrchr(path, U_FILE_SEP_CHAR);
- if(basename==NULL) {
+ if(basename==nullptr) {
return path;
} else {
return basename+1;
@@ -235,13 +235,13 @@ findBasename(const char *path) {
static const char *
packageNameFromPath(const char *path)
{
- if((path == NULL) || (*path == 0)) {
+ if((path == nullptr) || (*path == 0)) {
return U_ICUDATA_NAME;
}
path = findBasename(path);
- if((path == NULL) || (*path == 0)) {
+ if((path == nullptr) || (*path == 0)) {
return U_ICUDATA_NAME;
}
@@ -281,12 +281,12 @@ static void U_CALLCONV DataCacheElement_deleter(void *pDCEl) {
}
static void U_CALLCONV udata_initHashTable(UErrorCode &err) {
- U_ASSERT(gCommonDataCache == NULL);
- gCommonDataCache = uhash_open(uhash_hashChars, uhash_compareChars, NULL, &err);
+ U_ASSERT(gCommonDataCache == nullptr);
+ gCommonDataCache = uhash_open(uhash_hashChars, uhash_compareChars, nullptr, &err);
if (U_FAILURE(err)) {
return;
}
- U_ASSERT(gCommonDataCache != NULL);
+ U_ASSERT(gCommonDataCache != nullptr);
uhash_setValueDeleter(gCommonDataCache, DataCacheElement_deleter);
ucln_common_registerCleanup(UCLN_COMMON_UDATA, udata_cleanup);
}
@@ -305,20 +305,20 @@ static UHashtable *udata_getHashTable(UErrorCode &err) {
static UDataMemory *udata_findCachedData(const char *path, UErrorCode &err)
{
UHashtable *htable;
- UDataMemory *retVal = NULL;
+ UDataMemory *retVal = nullptr;
DataCacheElement *el;
const char *baseName;
htable = udata_getHashTable(err);
if (U_FAILURE(err)) {
- return NULL;
+ return nullptr;
}
baseName = findBasename(path); /* Cache remembers only the base name, not the full path. */
- umtx_lock(NULL);
+ umtx_lock(nullptr);
el = (DataCacheElement *)uhash_get(htable, baseName);
- umtx_unlock(NULL);
- if (el != NULL) {
+ umtx_unlock(nullptr);
+ if (el != nullptr) {
retVal = el->item;
}
#ifdef UDATA_DEBUG
@@ -333,45 +333,45 @@ static UDataMemory *udata_cacheDataItem(const char *path, UDataMemory *item, UEr
const char *baseName;
int32_t nameLen;
UHashtable *htable;
- DataCacheElement *oldValue = NULL;
+ DataCacheElement *oldValue = nullptr;
UErrorCode subErr = U_ZERO_ERROR;
htable = udata_getHashTable(*pErr);
if (U_FAILURE(*pErr)) {
- return NULL;
+ return nullptr;
}
/* Create a new DataCacheElement - the thingy we store in the hash table -
* and copy the supplied path and UDataMemoryItems into it.
*/
newElement = (DataCacheElement *)uprv_malloc(sizeof(DataCacheElement));
- if (newElement == NULL) {
+ if (newElement == nullptr) {
*pErr = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
newElement->item = UDataMemory_createNewInstance(pErr);
if (U_FAILURE(*pErr)) {
uprv_free(newElement);
- return NULL;
+ return nullptr;
}
UDatamemory_assign(newElement->item, item);
baseName = findBasename(path);
nameLen = (int32_t)uprv_strlen(baseName);
newElement->name = (char *)uprv_malloc(nameLen+1);
- if (newElement->name == NULL) {
+ if (newElement->name == nullptr) {
*pErr = U_MEMORY_ALLOCATION_ERROR;
uprv_free(newElement->item);
uprv_free(newElement);
- return NULL;
+ return nullptr;
}
uprv_strcpy(newElement->name, baseName);
/* Stick the new DataCacheElement into the hash table.
*/
- umtx_lock(NULL);
+ umtx_lock(nullptr);
oldValue = (DataCacheElement *)uhash_get(htable, path);
- if (oldValue != NULL) {
+ if (oldValue != nullptr) {
subErr = U_USING_DEFAULT_WARNING;
}
else {
@@ -381,7 +381,7 @@ static UDataMemory *udata_cacheDataItem(const char *path, UDataMemory *item, UEr
newElement, /* Value */
&subErr);
}
- umtx_unlock(NULL);
+ umtx_unlock(nullptr);
#ifdef UDATA_DEBUG
fprintf(stderr, "Cache: [%s] <<< %p : %s. vFunc=%p\n", newElement->name,
@@ -393,7 +393,7 @@ static UDataMemory *udata_cacheDataItem(const char *path, UDataMemory *item, UEr
uprv_free(newElement->name);
uprv_free(newElement->item);
uprv_free(newElement);
- return oldValue ? oldValue->item : NULL;
+ return oldValue ? oldValue->item : nullptr;
}
return newElement->item;
@@ -436,7 +436,7 @@ private:
/**
* @param iter The iterator to be initialized. Its current state does not matter.
- * @param inPath The full pathname to be iterated over. If NULL, defaults to U_ICUDATA_NAME
+ * @param inPath The full pathname to be iterated over. If nullptr, defaults to U_ICUDATA_NAME
* @param pkg Package which is being searched for, ex "icudt28l". Will ignore leaf directories such as /icudt28l
* @param item Item to be searched for. Can include full path, such as /a/b/foo.dat
* @param inSuffix Optional item suffix, if not-null (ex. ".dat") then 'path' can contain 'item' explicitly.
@@ -453,14 +453,14 @@ UDataPathIterator::UDataPathIterator(const char *inPath, const char *pkg,
fprintf(stderr, "SUFFIX1=%s PATH=%s\n", inSuffix, inPath);
#endif
/** Path **/
- if(inPath == NULL) {
+ if(inPath == nullptr) {
path = u_getDataDirectory();
} else {
path = inPath;
}
/** Package **/
- if(pkg != NULL) {
+ if(pkg != nullptr) {
packageStub.append(U_FILE_SEP_CHAR, *pErrorCode).append(pkg, *pErrorCode);
#ifdef UDATA_DEBUG
fprintf(stderr, "STUB=%s [%d]\n", packageStub.data(), packageStub.length());
@@ -483,7 +483,7 @@ UDataPathIterator::UDataPathIterator(const char *inPath, const char *pkg,
#endif
/** Suffix **/
- if(inSuffix != NULL) {
+ if(inSuffix != nullptr) {
suffix = inSuffix;
} else {
suffix = "";
@@ -510,21 +510,21 @@ UDataPathIterator::UDataPathIterator(const char *inPath, const char *pkg,
*
* @param iter The Iter to be used
* @param len If set, pointer to the length of the returned path, for convenience.
- * @return Pointer to the next path segment, or NULL if there are no more.
+ * @return Pointer to the next path segment, or nullptr if there are no more.
*/
const char *UDataPathIterator::next(UErrorCode *pErrorCode)
{
if(U_FAILURE(*pErrorCode)) {
- return NULL;
+ return nullptr;
}
- const char *currentPath = NULL;
+ const char *currentPath = nullptr;
int32_t pathLen = 0;
const char *pathBasename;
do
{
- if( nextPath == NULL ) {
+ if( nextPath == nullptr ) {
break;
}
currentPath = nextPath;
@@ -535,7 +535,7 @@ const char *UDataPathIterator::next(UErrorCode *pErrorCode)
} else {
/* fix up next for next time */
nextPath = uprv_strchr(currentPath, U_PATH_SEP_CHAR);
- if(nextPath == NULL) {
+ if(nextPath == nullptr) {
/* segment: entire path */
pathLen = (int32_t)uprv_strlen(currentPath);
} else {
@@ -568,7 +568,7 @@ const char *UDataPathIterator::next(UErrorCode *pErrorCode)
/* check for .dat files */
pathBasename = findBasename(pathBuffer.data());
- if(checkLastFour == true &&
+ if(checkLastFour &&
(pathLen>=4) &&
uprv_strncmp(pathBuffer.data() +(pathLen-4), suffix.data(), 4)==0 && /* suffix matches */
uprv_strncmp(findBasename(pathBuffer.data()), basename, basenameLen)==0 && /* base matches */
@@ -626,7 +626,7 @@ const char *UDataPathIterator::next(UErrorCode *pErrorCode)
} while(path);
/* fell way off the end */
- return NULL;
+ return nullptr;
}
U_NAMESPACE_END
@@ -652,8 +652,8 @@ extern "C" const DataHeader U_DATA_API U_ICUDATA_ENTRY_POINT;
* to its data package, if it is linked in.
*/
/*
-extern const void *uprv_getICUData_collation(void) ATTRIBUTE_WEAK;
-extern const void *uprv_getICUData_conversion(void) ATTRIBUTE_WEAK;
+extern const void *uprv_getICUData_collation() ATTRIBUTE_WEAK;
+extern const void *uprv_getICUData_conversion() ATTRIBUTE_WEAK;
*/
/*----------------------------------------------------------------------*
@@ -668,7 +668,7 @@ extern const void *uprv_getICUData_conversion(void) ATTRIBUTE_WEAK;
*----------------------------------------------------------------------*/
static UDataMemory *
openCommonData(const char *path, /* Path from OpenChoice? */
- int32_t commonDataIndex, /* ICU Data (index >= 0) if path == NULL */
+ int32_t commonDataIndex, /* ICU Data (index >= 0) if path == nullptr */
UErrorCode *pErrorCode)
{
UDataMemory tData;
@@ -676,7 +676,7 @@ openCommonData(const char *path, /* Path from OpenChoice? */
const char *inBasename;
if (U_FAILURE(*pErrorCode)) {
- return NULL;
+ return nullptr;
}
UDataMemory_init(&tData);
@@ -685,11 +685,11 @@ openCommonData(const char *path, /* Path from OpenChoice? */
if (commonDataIndex >= 0) {
/* "mini-cache" for common ICU data */
if(commonDataIndex >= UPRV_LENGTHOF(gCommonICUDataArray)) {
- return NULL;
+ return nullptr;
}
{
Mutex lock;
- if(gCommonICUDataArray[commonDataIndex] != NULL) {
+ if(gCommonICUDataArray[commonDataIndex] != nullptr) {
return gCommonICUDataArray[commonDataIndex];
}
#if !defined(ICU_DATA_DIR_WINDOWS)
@@ -698,7 +698,7 @@ openCommonData(const char *path, /* Path from OpenChoice? */
for(i = 0; i < commonDataIndex; ++i) {
if(gCommonICUDataArray[i]->pHeader == &U_ICUDATA_ENTRY_POINT) {
/* The linked-in data is already in the list. */
- return NULL;
+ return nullptr;
}
}
#endif
@@ -746,14 +746,14 @@ openCommonData(const char *path, /* Path from OpenChoice? */
if (U_SUCCESS(*pErrorCode)) {
*pErrorCode=U_FILE_ACCESS_ERROR;
}
- return NULL;
+ return nullptr;
}
/* Is the requested common data file already open and cached? */
/* Note that the cache is keyed by the base name only. The rest of the path, */
/* if any, is not considered. */
UDataMemory *dataToReturn = udata_findCachedData(inBasename, *pErrorCode);
- if (dataToReturn != NULL || U_FAILURE(*pErrorCode)) {
+ if (dataToReturn != nullptr || U_FAILURE(*pErrorCode)) {
return dataToReturn;
}
@@ -763,7 +763,7 @@ openCommonData(const char *path, /* Path from OpenChoice? */
UDataPathIterator iter(u_getDataDirectory(), inBasename, path, ".dat", true, pErrorCode);
- while ((UDataMemory_isLoaded(&tData)==false) && (pathBuffer = iter.next(pErrorCode)) != NULL)
+ while ((UDataMemory_isLoaded(&tData)==false) && (pathBuffer = iter.next(pErrorCode)) != nullptr)
{
#ifdef UDATA_DEBUG
fprintf(stderr, "ocd: trying path %s - ", pathBuffer);
@@ -774,7 +774,7 @@ openCommonData(const char *path, /* Path from OpenChoice? */
#endif
}
if (U_FAILURE(*pErrorCode)) {
- return NULL;
+ return nullptr;
}
#if defined(OS390_STUBDATA) && defined(OS390BATCH)
@@ -789,12 +789,12 @@ openCommonData(const char *path, /* Path from OpenChoice? */
#endif
if (U_FAILURE(*pErrorCode)) {
- return NULL;
+ return nullptr;
}
if (!UDataMemory_isLoaded(&tData)) {
/* no common data */
*pErrorCode=U_FILE_ACCESS_ERROR;
- return NULL;
+ return nullptr;
}
/* we have mapped a file, check its header */
@@ -848,7 +848,7 @@ static UBool extendICUData(UErrorCode *pErr)
/* How about if there is no pData, eh... */
UDataMemory_init(&copyPData);
- if(pData != NULL) {
+ if(pData != nullptr) {
UDatamemory_assign(&copyPData, pData);
copyPData.map = 0; /* The mapping for this data is owned by the hash table */
copyPData.mapAddr = 0; /* which will unmap it when ICU is shut down. */
@@ -889,11 +889,11 @@ U_CAPI void U_EXPORT2
udata_setCommonData(const void *data, UErrorCode *pErrorCode) {
UDataMemory dataMemory;
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return;
}
- if(data==NULL) {
+ if(data==nullptr) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return;
}
@@ -919,10 +919,10 @@ udata_setAppData(const char *path, const void *data, UErrorCode *err)
{
UDataMemory udm;
- if(err==NULL || U_FAILURE(*err)) {
+ if(err==nullptr || U_FAILURE(*err)) {
return;
}
- if(data==NULL) {
+ if(data==nullptr) {
*err=U_ILLEGAL_ARGUMENT_ERROR;
return;
}
@@ -941,7 +941,7 @@ udata_setAppData(const char *path, const void *data, UErrorCode *err)
* acceptable to the app. *
* If the data is good, create and return a UDataMemory *
* object that can be returned to the application. *
- * Return NULL on any sort of failure. *
+ * Return nullptr on any sort of failure. *
* *
*----------------------------------------------------------------------------*/
static UDataMemory *
@@ -958,19 +958,19 @@ checkDataItem
UErrorCode *fatalErr /* Bad error, caller should return immediately */
)
{
- UDataMemory *rDataMem = NULL; /* the new UDataMemory, to be returned. */
+ UDataMemory *rDataMem = nullptr; /* the new UDataMemory, to be returned. */
if (U_FAILURE(*fatalErr)) {
- return NULL;
+ return nullptr;
}
if(pHeader->dataHeader.magic1==0xda &&
pHeader->dataHeader.magic2==0x27 &&
- (isAcceptable==NULL || isAcceptable(context, type, name, &pHeader->info))
+ (isAcceptable==nullptr || isAcceptable(context, type, name, &pHeader->info))
) {
rDataMem=UDataMemory_createNewInstance(fatalErr);
if (U_FAILURE(*fatalErr)) {
- return NULL;
+ return nullptr;
}
rDataMem->pHeader = pHeader;
} else {
@@ -1001,7 +1001,7 @@ static UDataMemory *doLoadFromIndividualFiles(const char *pkgName,
/* init path iterator for individual files */
UDataPathIterator iter(dataPath, pkgName, path, tocEntryPathSuffix, false, pErrorCode);
- while ((pathBuffer = iter.next(pErrorCode)) != NULL)
+ while ((pathBuffer = iter.next(pErrorCode)) != nullptr)
{
#ifdef UDATA_DEBUG
fprintf(stderr, "UDATA: trying individual file %s\n", pathBuffer);
@@ -1009,7 +1009,7 @@ static UDataMemory *doLoadFromIndividualFiles(const char *pkgName,
if (uprv_mapFile(&dataMemory, pathBuffer, pErrorCode))
{
pEntryData = checkDataItem(dataMemory.pHeader, isAcceptable, context, type, name, subErrorCode, pErrorCode);
- if (pEntryData != NULL) {
+ if (pEntryData != nullptr) {
/* Data is good.
* Hand off ownership of the backing memory to the user's UDataMemory.
* and return it. */
@@ -1027,7 +1027,7 @@ static UDataMemory *doLoadFromIndividualFiles(const char *pkgName,
/* If we had a nasty error, bail out completely. */
if (U_FAILURE(*pErrorCode)) {
- return NULL;
+ return nullptr;
}
/* Otherwise remember that we found data but didn't like it for some reason */
@@ -1037,7 +1037,7 @@ static UDataMemory *doLoadFromIndividualFiles(const char *pkgName,
fprintf(stderr, "%s\n", UDataMemory_isLoaded(&dataMemory)?"LOADED":"not loaded");
#endif
}
- return NULL;
+ return nullptr;
}
/**
@@ -1068,7 +1068,7 @@ static UDataMemory *doLoadFromCommonData(UBool isICUData, const char * /*pkgName
for (commonDataIndex = isICUData ? 0 : -1;;) {
pCommonData=openCommonData(path, commonDataIndex, subErrorCode); /** search for pkg **/
- if(U_SUCCESS(*subErrorCode) && pCommonData!=NULL) {
+ if(U_SUCCESS(*subErrorCode) && pCommonData!=nullptr) {
int32_t length;
/* look up the data piece in the common data */
@@ -1077,15 +1077,15 @@ static UDataMemory *doLoadFromCommonData(UBool isICUData, const char * /*pkgName
fprintf(stderr, "%s: pHeader=%p - %s\n", tocEntryName, (void*) pHeader, u_errorName(*subErrorCode));
#endif
- if(pHeader!=NULL) {
+ if(pHeader!=nullptr) {
pEntryData = checkDataItem(pHeader, isAcceptable, context, type, name, subErrorCode, pErrorCode);
#ifdef UDATA_DEBUG
fprintf(stderr, "pEntryData=%p\n", (void*) pEntryData);
#endif
if (U_FAILURE(*pErrorCode)) {
- return NULL;
+ return nullptr;
}
- if (pEntryData != NULL) {
+ if (pEntryData != nullptr) {
pEntryData->length = length;
return pEntryData;
}
@@ -1094,20 +1094,20 @@ static UDataMemory *doLoadFromCommonData(UBool isICUData, const char * /*pkgName
// If we failed due to being out-of-memory, then stop early and report the error.
if (*subErrorCode == U_MEMORY_ALLOCATION_ERROR) {
*pErrorCode = *subErrorCode;
- return NULL;
+ return nullptr;
}
/* Data wasn't found. If we were looking for an ICUData item and there is
* more data available, load it and try again,
* otherwise break out of this loop. */
if (!isICUData) {
- return NULL;
- } else if (pCommonData != NULL) {
+ return nullptr;
+ } else if (pCommonData != nullptr) {
++commonDataIndex; /* try the next data package */
} else if ((!checkedExtendedICUData) && extendICUData(subErrorCode)) {
checkedExtendedICUData = true;
- /* try this data package slot again: it changed from NULL to non-NULL */
+ /* try this data package slot again: it changed from nullptr to non-nullptr */
} else {
- return NULL;
+ return nullptr;
}
}
}
@@ -1160,7 +1160,7 @@ doOpenChoice(const char *path, const char *type, const char *name,
UDataMemoryIsAcceptable *isAcceptable, void *context,
UErrorCode *pErrorCode)
{
- UDataMemory *retVal = NULL;
+ UDataMemory *retVal = nullptr;
const char *dataPath;
@@ -1176,7 +1176,7 @@ doOpenChoice(const char *path, const char *type, const char *name,
/* Is this path ICU data? */
- if(path == NULL ||
+ if(path == nullptr ||
!strcmp(path, U_ICUDATA_ALIAS) || /* "ICUDATA" */
!uprv_strncmp(path, U_ICUDATA_NAME U_TREE_SEPARATOR_STRING, /* "icudt26e-" */
uprv_strlen(U_ICUDATA_NAME U_TREE_SEPARATOR_STRING)) ||
@@ -1189,14 +1189,14 @@ doOpenChoice(const char *path, const char *type, const char *name,
/* remap from alternate path char to the main one */
CharString altSepPath;
if(path) {
- if(uprv_strchr(path,U_FILE_ALT_SEP_CHAR) != NULL) {
+ if(uprv_strchr(path,U_FILE_ALT_SEP_CHAR) != nullptr) {
altSepPath.append(path, *pErrorCode);
char *p;
- while ((p = uprv_strchr(altSepPath.data(), U_FILE_ALT_SEP_CHAR)) != NULL) {
+ while ((p = uprv_strchr(altSepPath.data(), U_FILE_ALT_SEP_CHAR)) != nullptr) {
*p = U_FILE_SEP_CHAR;
}
#if defined (UDATA_DEBUG)
- fprintf(stderr, "Changed path from [%s] to [%s]\n", path, altSepPath.s);
+ fprintf(stderr, "Changed path from [%s] to [%s]\n", path, altSepPath.data());
#endif
path = altSepPath.data();
}
@@ -1210,7 +1210,7 @@ doOpenChoice(const char *path, const char *type, const char *name,
CharString treeName;
/* ======= Set up strings */
- if(path==NULL) {
+ if(path==nullptr) {
pkgName.append(U_ICUDATA_NAME, *pErrorCode);
} else {
const char *pkg;
@@ -1232,7 +1232,7 @@ doOpenChoice(const char *path, const char *type, const char *name,
pkgName.append(U_ICUDATA_NAME, *pErrorCode);
} else {
pkgName.append(path, (int32_t)(treeChar-path), *pErrorCode);
- if (first == NULL) {
+ if (first == nullptr) {
/*
This user data has no path, but there is a tree name.
Look up the correct path from the data cache later.
@@ -1271,7 +1271,7 @@ doOpenChoice(const char *path, const char *type, const char *name,
tocEntryName.append(U_TREE_ENTRY_SEP_CHAR, *pErrorCode).append(name, *pErrorCode);
tocEntryPath.append(U_FILE_SEP_CHAR, *pErrorCode).append(name, *pErrorCode);
- if(type!=NULL && *type!=0) {
+ if(type!=nullptr && *type!=0) {
tocEntryName.append(".", *pErrorCode).append(type, *pErrorCode);
tocEntryPath.append(".", *pErrorCode).append(type, *pErrorCode);
}
@@ -1284,7 +1284,7 @@ doOpenChoice(const char *path, const char *type, const char *name,
#endif
#if !defined(ICU_DATA_DIR_WINDOWS)
- if(path == NULL) {
+ if(path == nullptr) {
path = COMMON_DATA_NAME; /* "icudt26e" */
}
#else
@@ -1309,7 +1309,7 @@ doOpenChoice(const char *path, const char *type, const char *name,
#endif
retVal = doLoadFromIndividualFiles(/* pkgName.data() */ "", tzFilesDir, tocEntryPathSuffix,
/* path */ "", type, name, isAcceptable, context, &subErrorCode, pErrorCode);
- if((retVal != NULL) || U_FAILURE(*pErrorCode)) {
+ if((retVal != nullptr) || U_FAILURE(*pErrorCode)) {
return retVal;
}
}
@@ -1324,7 +1324,7 @@ doOpenChoice(const char *path, const char *type, const char *name,
retVal = doLoadFromCommonData(isICUData,
pkgName.data(), dataPath, tocEntryPathSuffix, tocEntryName.data(),
path, type, name, isAcceptable, context, &subErrorCode, pErrorCode);
- if((retVal != NULL) || U_FAILURE(*pErrorCode)) {
+ if((retVal != nullptr) || U_FAILURE(*pErrorCode)) {
return retVal;
}
}
@@ -1339,7 +1339,7 @@ doOpenChoice(const char *path, const char *type, const char *name,
if ((dataPath && *dataPath) || !isICUData) {
retVal = doLoadFromIndividualFiles(pkgName.data(), dataPath, tocEntryPathSuffix,
path, type, name, isAcceptable, context, &subErrorCode, pErrorCode);
- if((retVal != NULL) || U_FAILURE(*pErrorCode)) {
+ if((retVal != nullptr) || U_FAILURE(*pErrorCode)) {
return retVal;
}
}
@@ -1354,7 +1354,7 @@ doOpenChoice(const char *path, const char *type, const char *name,
retVal = doLoadFromCommonData(isICUData,
pkgName.data(), dataPath, tocEntryPathSuffix, tocEntryName.data(),
path, type, name, isAcceptable, context, &subErrorCode, pErrorCode);
- if((retVal != NULL) || U_FAILURE(*pErrorCode)) {
+ if((retVal != nullptr) || U_FAILURE(*pErrorCode)) {
return retVal;
}
}
@@ -1369,7 +1369,7 @@ doOpenChoice(const char *path, const char *type, const char *name,
retVal = doLoadFromCommonData(isICUData,
pkgName.data(), "", tocEntryPathSuffix, tocEntryName.data(),
path, type, name, isAcceptable, context, &subErrorCode, pErrorCode);
- if((retVal != NULL) || U_FAILURE(*pErrorCode)) {
+ if((retVal != nullptr) || U_FAILURE(*pErrorCode)) {
return retVal;
}
}
@@ -1395,17 +1395,17 @@ U_CAPI UDataMemory * U_EXPORT2
udata_open(const char *path, const char *type, const char *name,
UErrorCode *pErrorCode) {
#ifdef UDATA_DEBUG
- fprintf(stderr, "udata_open(): Opening: %s : %s . %s\n", (path?path:"NULL"), name, type);
+ fprintf(stderr, "udata_open(): Opening: %s : %s . %s\n", (path?path:"nullptr"), name, type);
fflush(stderr);
#endif
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
- return NULL;
- } else if(name==NULL || *name==0) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
+ return nullptr;
+ } else if(name==nullptr || *name==0) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
} else {
- return doOpenChoice(path, type, name, NULL, NULL, pErrorCode);
+ return doOpenChoice(path, type, name, nullptr, nullptr, pErrorCode);
}
}
@@ -1416,14 +1416,14 @@ udata_openChoice(const char *path, const char *type, const char *name,
UDataMemoryIsAcceptable *isAcceptable, void *context,
UErrorCode *pErrorCode) {
#ifdef UDATA_DEBUG
- fprintf(stderr, "udata_openChoice(): Opening: %s : %s . %s\n", (path?path:"NULL"), name, type);
+ fprintf(stderr, "udata_openChoice(): Opening: %s : %s . %s\n", (path?path:"nullptr"), name, type);
#endif
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
- return NULL;
- } else if(name==NULL || *name==0 || isAcceptable==NULL) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
+ return nullptr;
+ } else if(name==nullptr || *name==0 || isAcceptable==nullptr) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
} else {
return doOpenChoice(path, type, name, isAcceptable, context, pErrorCode);
}
@@ -1433,8 +1433,8 @@ udata_openChoice(const char *path, const char *type, const char *name,
U_CAPI void U_EXPORT2
udata_getInfo(UDataMemory *pData, UDataInfo *pInfo) {
- if(pInfo!=NULL) {
- if(pData!=NULL && pData->pHeader!=NULL) {
+ if(pInfo!=nullptr) {
+ if(pData!=nullptr && pData->pHeader!=nullptr) {
const UDataInfo *info=&pData->pHeader->info;
uint16_t dataInfoSize=udata_getInfoSize(info);
if(pInfo->size>dataInfoSize) {
diff --git a/Build/source/libs/icu/icu-src/source/common/udatamem.cpp b/Build/source/libs/icu/icu-src/source/common/udatamem.cpp
index 0f80de28eb8..02be852320d 100644
--- a/Build/source/libs/icu/icu-src/source/common/udatamem.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/udatamem.cpp
@@ -42,10 +42,10 @@ U_CFUNC UDataMemory *UDataMemory_createNewInstance(UErrorCode *pErr) {
UDataMemory *This;
if (U_FAILURE(*pErr)) {
- return NULL;
+ return nullptr;
}
This = (UDataMemory *)uprv_malloc(sizeof(UDataMemory));
- if (This == NULL) {
+ if (This == nullptr) {
*pErr = U_MEMORY_ALLOCATION_ERROR; }
else {
UDataMemory_init(This);
@@ -59,7 +59,7 @@ U_CFUNC const DataHeader *
UDataMemory_normalizeDataPointer(const void *p) {
/* allow the data to be optionally prepended with an alignment-forcing double value */
const DataHeader *pdh = (const DataHeader *)p;
- if(pdh==NULL || (pdh->dataHeader.magic1==0xda && pdh->dataHeader.magic2==0x27)) {
+ if(pdh==nullptr || (pdh->dataHeader.magic1==0xda && pdh->dataHeader.magic2==0x27)) {
return pdh;
} else {
#if U_PLATFORM == U_PF_OS400
@@ -90,7 +90,7 @@ U_CFUNC void UDataMemory_setData (UDataMemory *This, const void *dataAddr) {
U_CAPI void U_EXPORT2
udata_close(UDataMemory *pData) {
- if(pData!=NULL) {
+ if(pData!=nullptr) {
uprv_unmapFile(pData);
if(pData->heapAllocated ) {
uprv_free(pData);
@@ -102,10 +102,10 @@ udata_close(UDataMemory *pData) {
U_CAPI const void * U_EXPORT2
udata_getMemory(UDataMemory *pData) {
- if(pData!=NULL && pData->pHeader!=NULL) {
+ if(pData!=nullptr && pData->pHeader!=nullptr) {
return (char *)(pData->pHeader)+udata_getHeaderSize(pData->pHeader);
} else {
- return NULL;
+ return nullptr;
}
}
@@ -131,7 +131,7 @@ udata_getMemory(UDataMemory *pData) {
*/
U_CAPI int32_t U_EXPORT2
udata_getLength(const UDataMemory *pData) {
- if(pData!=NULL && pData->pHeader!=NULL && pData->length>=0) {
+ if(pData!=nullptr && pData->pHeader!=nullptr && pData->length>=0) {
/*
* subtract the header size,
* return only the size of the actual data starting at udata_getMemory()
@@ -149,13 +149,13 @@ udata_getLength(const UDataMemory *pData) {
*/
U_CAPI const void * U_EXPORT2
udata_getRawMemory(const UDataMemory *pData) {
- if(pData!=NULL && pData->pHeader!=NULL) {
+ if(pData!=nullptr && pData->pHeader!=nullptr) {
return pData->pHeader;
} else {
- return NULL;
+ return nullptr;
}
}
U_CFUNC UBool UDataMemory_isLoaded(const UDataMemory *This) {
- return This->pHeader != NULL;
+ return This->pHeader != nullptr;
}
diff --git a/Build/source/libs/icu/icu-src/source/common/udataswp.cpp b/Build/source/libs/icu/icu-src/source/common/udataswp.cpp
index 86f302bd9c3..bbce1a8ecd7 100644
--- a/Build/source/libs/icu/icu-src/source/common/udataswp.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/udataswp.cpp
@@ -38,10 +38,10 @@ uprv_swapArray16(const UDataSwapper *ds,
int32_t count;
uint16_t x;
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return 0;
}
- if(ds==NULL || inData==NULL || length<0 || (length&1)!=0 || outData==NULL) {
+ if(ds==nullptr || inData==nullptr || length<0 || (length&1)!=0 || outData==nullptr) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -63,10 +63,10 @@ static int32_t U_CALLCONV
uprv_copyArray16(const UDataSwapper *ds,
const void *inData, int32_t length, void *outData,
UErrorCode *pErrorCode) {
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return 0;
}
- if(ds==NULL || inData==NULL || length<0 || (length&1)!=0 || outData==NULL) {
+ if(ds==nullptr || inData==nullptr || length<0 || (length&1)!=0 || outData==nullptr) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -86,10 +86,10 @@ uprv_swapArray32(const UDataSwapper *ds,
int32_t count;
uint32_t x;
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return 0;
}
- if(ds==NULL || inData==NULL || length<0 || (length&3)!=0 || outData==NULL) {
+ if(ds==nullptr || inData==nullptr || length<0 || (length&3)!=0 || outData==nullptr) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -111,10 +111,10 @@ static int32_t U_CALLCONV
uprv_copyArray32(const UDataSwapper *ds,
const void *inData, int32_t length, void *outData,
UErrorCode *pErrorCode) {
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return 0;
}
- if(ds==NULL || inData==NULL || length<0 || (length&3)!=0 || outData==NULL) {
+ if(ds==nullptr || inData==nullptr || length<0 || (length&3)!=0 || outData==nullptr) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -133,10 +133,10 @@ uprv_swapArray64(const UDataSwapper *ds,
uint64_t *q;
int32_t count;
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return 0;
}
- if(ds==NULL || inData==NULL || length<0 || (length&7)!=0 || outData==NULL) {
+ if(ds==nullptr || inData==nullptr || length<0 || (length&7)!=0 || outData==nullptr) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -160,10 +160,10 @@ static int32_t U_CALLCONV
uprv_copyArray64(const UDataSwapper *ds,
const void *inData, int32_t length, void *outData,
UErrorCode *pErrorCode) {
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return 0;
}
- if(ds==NULL || inData==NULL || length<0 || (length&7)!=0 || outData==NULL) {
+ if(ds==nullptr || inData==nullptr || length<0 || (length&7)!=0 || outData==nullptr) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -236,10 +236,10 @@ udata_swapInvStringBlock(const UDataSwapper *ds,
const char *inChars;
int32_t stringsLength;
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return 0;
}
- if(ds==NULL || inData==NULL || length<0 || (length>0 && outData==NULL)) {
+ if(ds==nullptr || inData==nullptr || length<0 || (length>0 && outData==nullptr)) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -273,7 +273,7 @@ udata_printError(const UDataSwapper *ds,
...) {
va_list args;
- if(ds->printError!=NULL) {
+ if(ds->printError!=nullptr) {
va_start(args, fmt);
ds->printError(ds->printErrorContext, fmt, args);
va_end(args);
@@ -290,10 +290,10 @@ udata_swapDataHeader(const UDataSwapper *ds,
uint16_t headerSize, infoSize;
/* argument checking */
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return 0;
}
- if(ds==NULL || inData==NULL || length<-1 || (length>0 && outData==NULL)) {
+ if(ds==nullptr || inData==nullptr || length<-1 || (length>0 && outData==nullptr)) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -365,19 +365,19 @@ udata_openSwapper(UBool inIsBigEndian, uint8_t inCharset,
UErrorCode *pErrorCode) {
UDataSwapper *swapper;
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
- return NULL;
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
+ return nullptr;
}
if(inCharset>U_EBCDIC_FAMILY || outCharset>U_EBCDIC_FAMILY) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
/* allocate the swapper */
swapper=(UDataSwapper *)uprv_malloc(sizeof(UDataSwapper));
- if(swapper==NULL) {
+ if(swapper==nullptr) {
*pErrorCode=U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
uprv_memset(swapper, 0, sizeof(UDataSwapper));
@@ -423,15 +423,15 @@ udata_openSwapperForInputData(const void *data, int32_t length,
UBool inIsBigEndian;
int8_t inCharset;
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
- return NULL;
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
+ return nullptr;
}
- if( data==NULL ||
+ if( data==nullptr ||
(length>=0 && length<(int32_t)sizeof(DataHeader)) ||
outCharset>U_EBCDIC_FAMILY
) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
pHeader=(const DataHeader *)data;
diff --git a/Build/source/libs/icu/icu-src/source/common/uenum.cpp b/Build/source/libs/icu/icu-src/source/common/uenum.cpp
index 11d895ebcd7..7aab58c44c7 100644
--- a/Build/source/libs/icu/icu-src/source/common/uenum.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/uenum.cpp
@@ -33,21 +33,21 @@ static const int32_t PAD = 8;
or reallocating it if at least 'capacity' bytes are not available. */
static void* _getBuffer(UEnumeration* en, int32_t capacity) {
- if (en->baseContext != NULL) {
+ if (en->baseContext != nullptr) {
if (((_UEnumBuffer*) en->baseContext)->len < capacity) {
capacity += PAD;
en->baseContext = uprv_realloc(en->baseContext,
sizeof(int32_t) + capacity);
- if (en->baseContext == NULL) {
- return NULL;
+ if (en->baseContext == nullptr) {
+ return nullptr;
}
((_UEnumBuffer*) en->baseContext)->len = capacity;
}
} else {
capacity += PAD;
en->baseContext = uprv_malloc(sizeof(int32_t) + capacity);
- if (en->baseContext == NULL) {
- return NULL;
+ if (en->baseContext == nullptr) {
+ return nullptr;
}
((_UEnumBuffer*) en->baseContext)->len = capacity;
}
@@ -59,7 +59,7 @@ U_CAPI void U_EXPORT2
uenum_close(UEnumeration* en)
{
if (en) {
- if (en->close != NULL) {
+ if (en->close != nullptr) {
if (en->baseContext) {
uprv_free(en->baseContext);
}
@@ -76,7 +76,7 @@ uenum_count(UEnumeration* en, UErrorCode* status)
if (!en || U_FAILURE(*status)) {
return -1;
}
- if (en->count != NULL) {
+ if (en->count != nullptr) {
return en->count(en, status);
} else {
*status = U_UNSUPPORTED_ERROR;
@@ -85,18 +85,18 @@ uenum_count(UEnumeration* en, UErrorCode* status)
}
/* Don't call this directly. Only uenum_unext should be calling this. */
-U_CAPI const UChar* U_EXPORT2
+U_CAPI const char16_t* U_EXPORT2
uenum_unextDefault(UEnumeration* en,
int32_t* resultLength,
UErrorCode* status)
{
- UChar *ustr = NULL;
+ char16_t *ustr = nullptr;
int32_t len = 0;
- if (en->next != NULL) {
+ if (en->next != nullptr) {
const char *cstr = en->next(en, &len, status);
- if (cstr != NULL) {
- ustr = (UChar*) _getBuffer(en, (len+1) * sizeof(UChar));
- if (ustr == NULL) {
+ if (cstr != nullptr) {
+ ustr = (char16_t*) _getBuffer(en, (len+1) * sizeof(char16_t));
+ if (ustr == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
} else {
u_charsToUChars(cstr, ustr, len+1);
@@ -117,39 +117,39 @@ uenum_nextDefault(UEnumeration* en,
int32_t* resultLength,
UErrorCode* status)
{
- if (en->uNext != NULL) {
+ if (en->uNext != nullptr) {
char *tempCharVal;
- const UChar *tempUCharVal = en->uNext(en, resultLength, status);
- if (tempUCharVal == NULL) {
- return NULL;
+ const char16_t *tempUCharVal = en->uNext(en, resultLength, status);
+ if (tempUCharVal == nullptr) {
+ return nullptr;
}
tempCharVal = (char*)
_getBuffer(en, (*resultLength+1) * sizeof(char));
if (!tempCharVal) {
*status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
u_UCharsToChars(tempUCharVal, tempCharVal, *resultLength + 1);
return tempCharVal;
} else {
*status = U_UNSUPPORTED_ERROR;
- return NULL;
+ return nullptr;
}
}
-U_CAPI const UChar* U_EXPORT2
+U_CAPI const char16_t* U_EXPORT2
uenum_unext(UEnumeration* en,
int32_t* resultLength,
UErrorCode* status)
{
if (!en || U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
- if (en->uNext != NULL) {
+ if (en->uNext != nullptr) {
return en->uNext(en, resultLength, status);
} else {
*status = U_UNSUPPORTED_ERROR;
- return NULL;
+ return nullptr;
}
}
@@ -159,10 +159,10 @@ uenum_next(UEnumeration* en,
UErrorCode* status)
{
if (!en || U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
- if (en->next != NULL) {
- if (resultLength != NULL) {
+ if (en->next != nullptr) {
+ if (resultLength != nullptr) {
return en->next(en, resultLength, status);
}
else {
@@ -171,7 +171,7 @@ uenum_next(UEnumeration* en,
}
} else {
*status = U_UNSUPPORTED_ERROR;
- return NULL;
+ return nullptr;
}
}
@@ -181,7 +181,7 @@ uenum_reset(UEnumeration* en, UErrorCode* status)
if (!en || U_FAILURE(*status)) {
return;
}
- if (en->reset != NULL) {
+ if (en->reset != nullptr) {
en->reset(en, status);
} else {
*status = U_UNSUPPORTED_ERROR;
diff --git a/Build/source/libs/icu/icu-src/source/common/uhash.cpp b/Build/source/libs/icu/icu-src/source/common/uhash.cpp
index a04f9606c57..4d92dfa93fe 100644
--- a/Build/source/libs/icu/icu-src/source/common/uhash.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/uhash.cpp
@@ -44,9 +44,9 @@
* The central function is _uhash_find(). This function looks for a
* slot matching the given key and hashcode. If one is found, it
* returns a pointer to that slot. If the table is full, and no match
- * is found, it returns NULL -- in theory. This would make the code
+ * is found, it returns nullptr -- in theory. This would make the code
* more complicated, since all callers of _uhash_find() would then
- * have to check for a NULL result. To keep this from happening, we
+ * have to check for a nullptr result. To keep this from happening, we
* don't allow the table to fill. When there is only one
* empty/deleted slot left, uhash_put() will refuse to increase the
* count, and fail. This simplifies the code. In practice, one will
@@ -120,10 +120,10 @@ static const float RESIZE_POLICY_RATIO_TABLE[6] = {
/* This macro expects a UHashTok.pointer as its keypointer and
valuepointer parameters */
#define HASH_DELETE_KEY_VALUE(hash, keypointer, valuepointer) UPRV_BLOCK_MACRO_BEGIN { \
- if (hash->keyDeleter != NULL && keypointer != NULL) { \
+ if (hash->keyDeleter != nullptr && keypointer != nullptr) { \
(*hash->keyDeleter)(keypointer); \
} \
- if (hash->valueDeleter != NULL && valuepointer != NULL) { \
+ if (hash->valueDeleter != nullptr && valuepointer != nullptr) { \
(*hash->valueDeleter)(valuepointer); \
} \
} UPRV_BLOCK_MACRO_END
@@ -148,16 +148,16 @@ _uhash_setElement(UHashtable *hash, UHashElement* e,
UHashTok key, UHashTok value, int8_t hint) {
UHashTok oldValue = e->value;
- if (hash->keyDeleter != NULL && e->key.pointer != NULL &&
+ if (hash->keyDeleter != nullptr && e->key.pointer != nullptr &&
e->key.pointer != key.pointer) { /* Avoid double deletion */
(*hash->keyDeleter)(e->key.pointer);
}
- if (hash->valueDeleter != NULL) {
- if (oldValue.pointer != NULL &&
+ if (hash->valueDeleter != nullptr) {
+ if (oldValue.pointer != nullptr &&
oldValue.pointer != value.pointer) { /* Avoid double deletion */
(*hash->valueDeleter)(oldValue.pointer);
}
- oldValue.pointer = NULL;
+ oldValue.pointer = nullptr;
}
/* Compilers should copy the UHashTok union correctly, but even if
* they do, memory heap tools (e.g. BoundsChecker) can get
@@ -187,13 +187,13 @@ _uhash_internalRemoveElement(UHashtable *hash, UHashElement* e) {
UHashTok empty;
U_ASSERT(!IS_EMPTY_OR_DELETED(e->hashcode));
--hash->count;
- empty.pointer = NULL; empty.integer = 0;
+ empty.pointer = nullptr; empty.integer = 0;
return _uhash_setElement(hash, e, HASH_DELETED, empty, empty, 0);
}
static void
_uhash_internalSetResizePolicy(UHashtable *hash, enum UHashResizePolicy policy) {
- U_ASSERT(hash != NULL);
+ U_ASSERT(hash != nullptr);
U_ASSERT(((int32_t)policy) >= 0);
U_ASSERT(((int32_t)policy) < 3);
hash->lowWaterRatio = RESIZE_POLICY_RATIO_TABLE[policy * 2];
@@ -227,12 +227,12 @@ _uhash_allocate(UHashtable *hash,
p = hash->elements = (UHashElement*)
uprv_malloc(sizeof(UHashElement) * hash->length);
- if (hash->elements == NULL) {
+ if (hash->elements == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
return;
}
- emptytok.pointer = NULL; /* Only one of these two is needed */
+ emptytok.pointer = nullptr; /* Only one of these two is needed */
emptytok.integer = 0; /* but we don't know which one. */
limit = p + hash->length;
@@ -256,22 +256,22 @@ _uhash_init(UHashtable *result,
int32_t primeIndex,
UErrorCode *status)
{
- if (U_FAILURE(*status)) return NULL;
- U_ASSERT(keyHash != NULL);
- U_ASSERT(keyComp != NULL);
+ if (U_FAILURE(*status)) return nullptr;
+ U_ASSERT(keyHash != nullptr);
+ U_ASSERT(keyComp != nullptr);
result->keyHasher = keyHash;
result->keyComparator = keyComp;
result->valueComparator = valueComp;
- result->keyDeleter = NULL;
- result->valueDeleter = NULL;
+ result->keyDeleter = nullptr;
+ result->valueDeleter = nullptr;
result->allocated = false;
_uhash_internalSetResizePolicy(result, U_GROW);
_uhash_allocate(result, primeIndex, status);
if (U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
return result;
@@ -285,12 +285,12 @@ _uhash_create(UHashFunction *keyHash,
UErrorCode *status) {
UHashtable *result;
- if (U_FAILURE(*status)) return NULL;
+ if (U_FAILURE(*status)) return nullptr;
result = (UHashtable*) uprv_malloc(sizeof(UHashtable));
- if (result == NULL) {
+ if (result == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
_uhash_init(result, keyHash, keyComp, valueComp, primeIndex, status);
@@ -298,7 +298,7 @@ _uhash_create(UHashFunction *keyHash,
if (U_FAILURE(*status)) {
uprv_free(result);
- return NULL;
+ return nullptr;
}
return result;
@@ -323,7 +323,7 @@ _uhash_create(UHashFunction *keyHash,
* values so that the searches stop within a reasonable amount of time.
* This can be changed by changing the high/low water marks.
*
- * In theory, this function can return NULL, if it is full (no empty
+ * In theory, this function can return nullptr, if it is full (no empty
* or deleted slots) and if no matching key is found. In practice, we
* prevent this elsewhere (in uhash_put) by making sure the last slot
* in the table is never filled.
@@ -424,7 +424,7 @@ _uhash_rehash(UHashtable *hash, UErrorCode *status) {
for (i = oldLength - 1; i >= 0; --i) {
if (!IS_EMPTY_OR_DELETED(old[i].hashcode)) {
UHashElement *e = _uhash_find(hash, old[i].key, old[i].hashcode);
- U_ASSERT(e != NULL);
+ U_ASSERT(e != nullptr);
U_ASSERT(e->hashcode == HASH_EMPTY);
e->key = old[i].key;
e->value = old[i].value;
@@ -448,8 +448,8 @@ _uhash_remove(UHashtable *hash,
*/
UHashTok result;
UHashElement* e = _uhash_find(hash, key, hash->keyHasher(key));
- U_ASSERT(e != NULL);
- result.pointer = NULL;
+ U_ASSERT(e != nullptr);
+ result.pointer = nullptr;
result.integer = 0;
if (!IS_EMPTY_OR_DELETED(e->hashcode)) {
result = _uhash_internalRemoveElement(hash, e);
@@ -470,7 +470,7 @@ _uhash_put(UHashtable *hash,
/* Put finds the position in the table for the new value. If the
* key is already in the table, it is deleted, if there is a
- * non-NULL keyDeleter. Then the key, the hash and the value are
+ * non-nullptr keyDeleter. Then the key, the hash and the value are
* all put at the position in their respective arrays.
*/
int32_t hashcode;
@@ -480,12 +480,12 @@ _uhash_put(UHashtable *hash,
if (U_FAILURE(*status)) {
goto err;
}
- U_ASSERT(hash != NULL);
+ U_ASSERT(hash != nullptr);
if ((hint & HINT_VALUE_POINTER) ?
- value.pointer == NULL :
+ value.pointer == nullptr :
value.integer == 0 && (hint & HINT_ALLOW_ZERO) == 0) {
- /* Disallow storage of NULL values, since NULL is returned by
- * get() to indicate an absent key. Storing NULL == removing.
+ /* Disallow storage of nullptr values, since nullptr is returned by
+ * get() to indicate an absent key. Storing nullptr == removing.
*/
return _uhash_remove(hash, key);
}
@@ -498,12 +498,12 @@ _uhash_put(UHashtable *hash,
hashcode = (*hash->keyHasher)(key);
e = _uhash_find(hash, key, hashcode);
- U_ASSERT(e != NULL);
+ U_ASSERT(e != nullptr);
if (IS_EMPTY_OR_DELETED(e->hashcode)) {
/* Important: We must never actually fill the table up. If we
- * do so, then _uhash_find() will return NULL, and we'll have
- * to check for NULL after every call to _uhash_find(). To
+ * do so, then _uhash_find() will return nullptr, and we'll have
+ * to check for nullptr after every call to _uhash_find(). To
* avoid this we make sure there is always at least one empty
* or deleted slot in the table. This only is a problem if we
* are out of memory and rehash isn't working.
@@ -518,18 +518,18 @@ _uhash_put(UHashtable *hash,
}
/* We must in all cases handle storage properly. If there was an
- * old key, then it must be deleted (if the deleter != NULL).
+ * old key, then it must be deleted (if the deleter != nullptr).
* Make hashcodes stored in table positive.
*/
return _uhash_setElement(hash, e, hashcode & 0x7FFFFFFF, key, value, hint);
err:
- /* If the deleters are non-NULL, this method adopts its key and/or
+ /* If the deleters are non-nullptr, this method adopts its key and/or
* value arguments, and we must be sure to delete the key and/or
* value in all cases, even upon failure.
*/
HASH_DELETE_KEY_VALUE(hash, key.pointer, value.pointer);
- emptytok.pointer = NULL; emptytok.integer = 0;
+ emptytok.pointer = nullptr; emptytok.integer = 0;
return emptytok;
}
@@ -591,19 +591,19 @@ uhash_initSize(UHashtable *fillinResult,
U_CAPI void U_EXPORT2
uhash_close(UHashtable *hash) {
- if (hash == NULL) {
+ if (hash == nullptr) {
return;
}
- if (hash->elements != NULL) {
- if (hash->keyDeleter != NULL || hash->valueDeleter != NULL) {
+ if (hash->elements != nullptr) {
+ if (hash->keyDeleter != nullptr || hash->valueDeleter != nullptr) {
int32_t pos=UHASH_FIRST;
UHashElement *e;
- while ((e = (UHashElement*) uhash_nextElement(hash, &pos)) != NULL) {
+ while ((e = (UHashElement*) uhash_nextElement(hash, &pos)) != nullptr) {
HASH_DELETE_KEY_VALUE(hash, e->key.pointer, e->value.pointer);
}
}
uprv_free(hash->elements);
- hash->elements = NULL;
+ hash->elements = nullptr;
}
if (hash->allocated) {
uprv_free(hash);
@@ -828,9 +828,9 @@ U_CAPI void U_EXPORT2
uhash_removeAll(UHashtable *hash) {
int32_t pos = UHASH_FIRST;
const UHashElement *e;
- U_ASSERT(hash != NULL);
+ U_ASSERT(hash != nullptr);
if (hash->count != 0) {
- while ((e = uhash_nextElement(hash, &pos)) != NULL) {
+ while ((e = uhash_nextElement(hash, &pos)) != nullptr) {
uhash_removeElement(hash, e);
}
}
@@ -866,7 +866,7 @@ uhash_find(const UHashtable *hash, const void* key) {
const UHashElement *e;
keyholder.pointer = (void*) key;
e = _uhash_find(hash, keyholder, hash->keyHasher(keyholder));
- return IS_EMPTY_OR_DELETED(e->hashcode) ? NULL : e;
+ return IS_EMPTY_OR_DELETED(e->hashcode) ? nullptr : e;
}
U_CAPI const UHashElement* U_EXPORT2
@@ -875,7 +875,7 @@ uhash_nextElement(const UHashtable *hash, int32_t *pos) {
* EMPTY and not DELETED.
*/
int32_t i;
- U_ASSERT(hash != NULL);
+ U_ASSERT(hash != nullptr);
for (i = *pos + 1; i < hash->length; ++i) {
if (!IS_EMPTY_OR_DELETED(hash->elements[i].hashcode)) {
*pos = i;
@@ -884,18 +884,18 @@ uhash_nextElement(const UHashtable *hash, int32_t *pos) {
}
/* No more elements */
- return NULL;
+ return nullptr;
}
U_CAPI void* U_EXPORT2
uhash_removeElement(UHashtable *hash, const UHashElement* e) {
- U_ASSERT(hash != NULL);
- U_ASSERT(e != NULL);
+ U_ASSERT(hash != nullptr);
+ U_ASSERT(e != nullptr);
if (!IS_EMPTY_OR_DELETED(e->hashcode)) {
UHashElement *nce = (UHashElement *)e;
return _uhash_internalRemoveElement(hash, nce).pointer;
}
- return NULL;
+ return nullptr;
}
/********************************************************************
@@ -928,20 +928,20 @@ uhash_tokp(void* p) {
U_CAPI int32_t U_EXPORT2
uhash_hashUChars(const UHashTok key) {
- const UChar *s = (const UChar *)key.pointer;
- return s == NULL ? 0 : ustr_hashUCharsN(s, u_strlen(s));
+ const char16_t *s = (const char16_t *)key.pointer;
+ return s == nullptr ? 0 : ustr_hashUCharsN(s, u_strlen(s));
}
U_CAPI int32_t U_EXPORT2
uhash_hashChars(const UHashTok key) {
const char *s = (const char *)key.pointer;
- return s == NULL ? 0 : static_cast<int32_t>(ustr_hashCharsN(s, static_cast<int32_t>(uprv_strlen(s))));
+ return s == nullptr ? 0 : static_cast<int32_t>(ustr_hashCharsN(s, static_cast<int32_t>(uprv_strlen(s))));
}
U_CAPI int32_t U_EXPORT2
uhash_hashIChars(const UHashTok key) {
const char *s = (const char *)key.pointer;
- return s == NULL ? 0 : ustr_hashICharsN(s, static_cast<int32_t>(uprv_strlen(s)));
+ return s == nullptr ? 0 : ustr_hashICharsN(s, static_cast<int32_t>(uprv_strlen(s)));
}
U_CAPI UBool U_EXPORT2
@@ -960,10 +960,10 @@ uhash_equals(const UHashtable* hash1, const UHashtable* hash2){
* with 64-bit pointers and 32-bit integer hashes.
* A valueComparator is normally optional.
*/
- if (hash1==NULL || hash2==NULL ||
+ if (hash1==nullptr || hash2==nullptr ||
hash1->keyComparator != hash2->keyComparator ||
hash1->valueComparator != hash2->valueComparator ||
- hash1->valueComparator == NULL)
+ hash1->valueComparator == nullptr)
{
/*
Normally we would return an error here about incompatible hash tables,
@@ -1002,12 +1002,12 @@ uhash_equals(const UHashtable* hash1, const UHashtable* hash2){
U_CAPI UBool U_EXPORT2
uhash_compareUChars(const UHashTok key1, const UHashTok key2) {
- const UChar *p1 = (const UChar*) key1.pointer;
- const UChar *p2 = (const UChar*) key2.pointer;
+ const char16_t *p1 = (const char16_t*) key1.pointer;
+ const char16_t *p2 = (const char16_t*) key2.pointer;
if (p1 == p2) {
return true;
}
- if (p1 == NULL || p2 == NULL) {
+ if (p1 == nullptr || p2 == nullptr) {
return false;
}
while (*p1 != 0 && *p1 == *p2) {
@@ -1024,7 +1024,7 @@ uhash_compareChars(const UHashTok key1, const UHashTok key2) {
if (p1 == p2) {
return true;
}
- if (p1 == NULL || p2 == NULL) {
+ if (p1 == nullptr || p2 == nullptr) {
return false;
}
while (*p1 != 0 && *p1 == *p2) {
@@ -1041,7 +1041,7 @@ uhash_compareIChars(const UHashTok key1, const UHashTok key2) {
if (p1 == p2) {
return true;
}
- if (p1 == NULL || p2 == NULL) {
+ if (p1 == nullptr || p2 == nullptr) {
return false;
}
while (*p1 != 0 && uprv_tolower(*p1) == uprv_tolower(*p2)) {
diff --git a/Build/source/libs/icu/icu-src/source/common/uidna.cpp b/Build/source/libs/icu/icu-src/source/common/uidna.cpp
index 1cbdeec3272..949d128f93c 100644
--- a/Build/source/libs/icu/icu-src/source/common/uidna.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/uidna.cpp
@@ -30,7 +30,7 @@
#include "sprpimpl.h"
/* it is official IDNA ACE Prefix is "xn--" */
-static const UChar ACE_PREFIX[] ={ 0x0078,0x006E,0x002d,0x002d } ;
+static const char16_t ACE_PREFIX[] ={ 0x0078,0x006E,0x002d,0x002d } ;
#define ACE_PREFIX_LENGTH 4
#define MAX_LABEL_LENGTH 63
@@ -47,8 +47,8 @@ static const UChar ACE_PREFIX[] ={ 0x0078,0x006E,0x002d,0x002d } ;
#define CAPITAL_A 0x0041
#define CAPITAL_Z 0x005A
-inline static UChar
-toASCIILower(UChar ch){
+inline static char16_t
+toASCIILower(char16_t ch){
if(CAPITAL_A <= ch && ch <= CAPITAL_Z){
return ch + LOWER_CASE_DELTA;
}
@@ -56,7 +56,7 @@ toASCIILower(UChar ch){
}
inline static UBool
-startsWithPrefix(const UChar* src , int32_t srcLength){
+startsWithPrefix(const char16_t* src , int32_t srcLength){
if(srcLength < ACE_PREFIX_LENGTH){
return false;
}
@@ -71,8 +71,8 @@ startsWithPrefix(const UChar* src , int32_t srcLength){
inline static int32_t
-compareCaseInsensitiveASCII(const UChar* s1, int32_t s1Len,
- const UChar* s2, int32_t s2Len){
+compareCaseInsensitiveASCII(const char16_t* s1, int32_t s1Len,
+ const char16_t* s2, int32_t s2Len){
int32_t minLength;
int32_t lengthResult;
@@ -92,7 +92,7 @@ compareCaseInsensitiveASCII(const UChar* s1, int32_t s1Len,
lengthResult = 0;
}
- UChar c1,c2;
+ char16_t c1,c2;
int32_t rc;
for(int32_t i =0;/* no condition */;i++) {
@@ -126,7 +126,7 @@ compareCaseInsensitiveASCII(const UChar* s1, int32_t s1Len,
* @return true if the char is a label separator
* @stable ICU 2.8
*/
-static inline UBool isLabelSeparator(UChar ch){
+static inline UBool isLabelSeparator(char16_t ch){
switch(ch){
case 0x002e:
case 0x3002:
@@ -142,8 +142,8 @@ static inline UBool isLabelSeparator(UChar ch){
// if *limit == separator then the length returned does not include
// the separtor.
static inline int32_t
-getNextSeparator(UChar *src, int32_t srcLength,
- UChar **limit, UBool *done){
+getNextSeparator(char16_t *src, int32_t srcLength,
+ char16_t **limit, UBool *done){
if(srcLength == -1){
int32_t i;
for(i=0 ; ;i++){
@@ -174,7 +174,7 @@ getNextSeparator(UChar *src, int32_t srcLength,
return i;
}
}
-static inline UBool isLDHChar(UChar ch){
+static inline UBool isLDHChar(char16_t ch){
// high runner case
if(ch>0x007A){
return false;
@@ -191,8 +191,8 @@ static inline UBool isLDHChar(UChar ch){
}
static int32_t
-_internal_toASCII(const UChar* src, int32_t srcLength,
- UChar* dest, int32_t destCapacity,
+_internal_toASCII(const char16_t* src, int32_t srcLength,
+ char16_t* dest, int32_t destCapacity,
int32_t options,
UStringPrepProfile* nameprep,
UParseError* parseError,
@@ -200,16 +200,16 @@ _internal_toASCII(const UChar* src, int32_t srcLength,
{
// TODO Revisit buffer handling. The label should not be over 63 ASCII characters. ICU4J may need to be updated too.
- UChar b1Stack[MAX_LABEL_BUFFER_SIZE], b2Stack[MAX_LABEL_BUFFER_SIZE];
+ char16_t b1Stack[MAX_LABEL_BUFFER_SIZE], b2Stack[MAX_LABEL_BUFFER_SIZE];
//initialize pointers to stack buffers
- UChar *b1 = b1Stack, *b2 = b2Stack;
+ char16_t *b1 = b1Stack, *b2 = b2Stack;
int32_t b1Len=0, b2Len,
b1Capacity = MAX_LABEL_BUFFER_SIZE,
b2Capacity = MAX_LABEL_BUFFER_SIZE ,
reqLength=0;
int32_t namePrepOptions = ((options & UIDNA_ALLOW_UNASSIGNED) != 0) ? USPREP_ALLOW_UNASSIGNED: 0;
- UBool* caseFlags = NULL;
+ UBool* caseFlags = nullptr;
// the source contains all ascii codepoints
UBool srcIsASCII = true;
@@ -228,8 +228,8 @@ _internal_toASCII(const UChar* src, int32_t srcLength,
}
if(srcLength > b1Capacity){
- b1 = (UChar*) uprv_malloc(srcLength * U_SIZEOF_UCHAR);
- if(b1==NULL){
+ b1 = (char16_t*) uprv_malloc(srcLength * U_SIZEOF_UCHAR);
+ if(b1==nullptr){
*status = U_MEMORY_ALLOCATION_ERROR;
goto CLEANUP;
}
@@ -256,8 +256,8 @@ _internal_toASCII(const UChar* src, int32_t srcLength,
if(b1 != b1Stack){
uprv_free(b1);
}
- b1 = (UChar*) uprv_malloc(b1Len * U_SIZEOF_UCHAR);
- if(b1==NULL){
+ b1 = (char16_t*) uprv_malloc(b1Len * U_SIZEOF_UCHAR);
+ if(b1==nullptr){
*status = U_MEMORY_ALLOCATION_ERROR;
goto CLEANUP;
}
@@ -287,7 +287,7 @@ _internal_toASCII(const UChar* src, int32_t srcLength,
failPos = j;
}
}
- if(useSTD3ASCIIRules == true){
+ if(useSTD3ASCIIRules){
// verify 3a and 3b
// 3(a) Verify the absence of non-LDH ASCII code points; that is, the
// absence of 0..2C, 2E..2F, 3A..40, 5B..60, and 7B..7F.
@@ -338,8 +338,8 @@ _internal_toASCII(const UChar* src, int32_t srcLength,
if(*status == U_BUFFER_OVERFLOW_ERROR){
// redo processing of string
/* we do not have enough room so grow the buffer*/
- b2 = (UChar*) uprv_malloc(b2Len * U_SIZEOF_UCHAR);
- if(b2 == NULL){
+ b2 = (char16_t*) uprv_malloc(b2Len * U_SIZEOF_UCHAR);
+ if(b2 == nullptr){
*status = U_MEMORY_ALLOCATION_ERROR;
goto CLEANUP;
}
@@ -391,8 +391,8 @@ CLEANUP:
}
static int32_t
-_internal_toUnicode(const UChar* src, int32_t srcLength,
- UChar* dest, int32_t destCapacity,
+_internal_toUnicode(const char16_t* src, int32_t srcLength,
+ char16_t* dest, int32_t destCapacity,
int32_t options,
UStringPrepProfile* nameprep,
UParseError* parseError,
@@ -404,17 +404,17 @@ _internal_toUnicode(const UChar* src, int32_t srcLength,
int32_t namePrepOptions = ((options & UIDNA_ALLOW_UNASSIGNED) != 0) ? USPREP_ALLOW_UNASSIGNED: 0;
// TODO Revisit buffer handling. The label should not be over 63 ASCII characters. ICU4J may need to be updated too.
- UChar b1Stack[MAX_LABEL_BUFFER_SIZE], b2Stack[MAX_LABEL_BUFFER_SIZE], b3Stack[MAX_LABEL_BUFFER_SIZE];
+ char16_t b1Stack[MAX_LABEL_BUFFER_SIZE], b2Stack[MAX_LABEL_BUFFER_SIZE], b3Stack[MAX_LABEL_BUFFER_SIZE];
//initialize pointers to stack buffers
- UChar *b1 = b1Stack, *b2 = b2Stack, *b1Prime=NULL, *b3=b3Stack;
+ char16_t *b1 = b1Stack, *b2 = b2Stack, *b1Prime=nullptr, *b3=b3Stack;
int32_t b1Len = 0, b2Len, b1PrimeLen, b3Len,
b1Capacity = MAX_LABEL_BUFFER_SIZE,
b2Capacity = MAX_LABEL_BUFFER_SIZE,
b3Capacity = MAX_LABEL_BUFFER_SIZE,
reqLength=0;
- UBool* caseFlags = NULL;
+ UBool* caseFlags = nullptr;
UBool srcIsASCII = true;
/*UBool srcIsLDH = true;
@@ -458,8 +458,8 @@ _internal_toUnicode(const UChar* src, int32_t srcLength,
if(*status == U_BUFFER_OVERFLOW_ERROR){
// redo processing of string
/* we do not have enough room so grow the buffer*/
- b1 = (UChar*) uprv_malloc(b1Len * U_SIZEOF_UCHAR);
- if(b1==NULL){
+ b1 = (char16_t*) uprv_malloc(b1Len * U_SIZEOF_UCHAR);
+ if(b1==nullptr){
*status = U_MEMORY_ALLOCATION_ERROR;
goto CLEANUP;
}
@@ -475,7 +475,7 @@ _internal_toUnicode(const UChar* src, int32_t srcLength,
}else{
//just point src to b1
- b1 = (UChar*) src;
+ b1 = (char16_t*) src;
b1Len = srcLength;
}
@@ -498,8 +498,8 @@ _internal_toUnicode(const UChar* src, int32_t srcLength,
if(*status == U_BUFFER_OVERFLOW_ERROR){
// redo processing of string
/* we do not have enough room so grow the buffer*/
- b2 = (UChar*) uprv_malloc(b2Len * U_SIZEOF_UCHAR);
- if(b2==NULL){
+ b2 = (char16_t*) uprv_malloc(b2Len * U_SIZEOF_UCHAR);
+ if(b2==nullptr){
*status = U_MEMORY_ALLOCATION_ERROR;
goto CLEANUP;
}
@@ -516,8 +516,8 @@ _internal_toUnicode(const UChar* src, int32_t srcLength,
if(*status == U_BUFFER_OVERFLOW_ERROR){
// redo processing of string
/* we do not have enough room so grow the buffer*/
- b3 = (UChar*) uprv_malloc(b3Len * U_SIZEOF_UCHAR);
- if(b3==NULL){
+ b3 = (char16_t*) uprv_malloc(b3Len * U_SIZEOF_UCHAR);
+ if(b3==nullptr){
*status = U_MEMORY_ALLOCATION_ERROR;
goto CLEANUP;
}
@@ -608,16 +608,16 @@ CLEANUP:
}
U_CAPI int32_t U_EXPORT2
-uidna_toASCII(const UChar* src, int32_t srcLength,
- UChar* dest, int32_t destCapacity,
+uidna_toASCII(const char16_t* src, int32_t srcLength,
+ char16_t* dest, int32_t destCapacity,
int32_t options,
UParseError* parseError,
UErrorCode* status){
- if(status == NULL || U_FAILURE(*status)){
+ if(status == nullptr || U_FAILURE(*status)){
return 0;
}
- if((src==NULL) || (srcLength < -1) || (destCapacity<0) || (!dest && destCapacity > 0)){
+ if((src==nullptr) || (srcLength < -1) || (destCapacity<0) || (!dest && destCapacity > 0)){
*status = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -637,16 +637,16 @@ uidna_toASCII(const UChar* src, int32_t srcLength,
}
U_CAPI int32_t U_EXPORT2
-uidna_toUnicode(const UChar* src, int32_t srcLength,
- UChar* dest, int32_t destCapacity,
+uidna_toUnicode(const char16_t* src, int32_t srcLength,
+ char16_t* dest, int32_t destCapacity,
int32_t options,
UParseError* parseError,
UErrorCode* status){
- if(status == NULL || U_FAILURE(*status)){
+ if(status == nullptr || U_FAILURE(*status)){
return 0;
}
- if( (src==NULL) || (srcLength < -1) || (destCapacity<0) || (!dest && destCapacity > 0)){
+ if( (src==nullptr) || (srcLength < -1) || (destCapacity<0) || (!dest && destCapacity > 0)){
*status = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -666,16 +666,16 @@ uidna_toUnicode(const UChar* src, int32_t srcLength,
U_CAPI int32_t U_EXPORT2
-uidna_IDNToASCII( const UChar *src, int32_t srcLength,
- UChar* dest, int32_t destCapacity,
+uidna_IDNToASCII( const char16_t *src, int32_t srcLength,
+ char16_t* dest, int32_t destCapacity,
int32_t options,
UParseError *parseError,
UErrorCode *status){
- if(status == NULL || U_FAILURE(*status)){
+ if(status == nullptr || U_FAILURE(*status)){
return 0;
}
- if((src==NULL) || (srcLength < -1) || (destCapacity<0) || (!dest && destCapacity > 0)){
+ if((src==nullptr) || (srcLength < -1) || (destCapacity<0) || (!dest && destCapacity > 0)){
*status = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -689,9 +689,9 @@ uidna_IDNToASCII( const UChar *src, int32_t srcLength,
}
//initialize pointers
- UChar *delimiter = (UChar*)src;
- UChar *labelStart = (UChar*)src;
- UChar *currentDest = (UChar*) dest;
+ char16_t *delimiter = (char16_t*)src;
+ char16_t *labelStart = (char16_t*)src;
+ char16_t *currentDest = (char16_t*) dest;
int32_t remainingLen = srcLength;
int32_t remainingDestCapacity = destCapacity;
int32_t labelLen = 0, labelReqLength = 0;
@@ -731,7 +731,7 @@ uidna_IDNToASCII( const UChar *src, int32_t srcLength,
remainingDestCapacity = 0;
}
- if(done == true){
+ if(done){
break;
}
@@ -759,16 +759,16 @@ uidna_IDNToASCII( const UChar *src, int32_t srcLength,
}
U_CAPI int32_t U_EXPORT2
-uidna_IDNToUnicode( const UChar* src, int32_t srcLength,
- UChar* dest, int32_t destCapacity,
+uidna_IDNToUnicode( const char16_t* src, int32_t srcLength,
+ char16_t* dest, int32_t destCapacity,
int32_t options,
UParseError* parseError,
UErrorCode* status){
- if(status == NULL || U_FAILURE(*status)){
+ if(status == nullptr || U_FAILURE(*status)){
return 0;
}
- if((src==NULL) || (srcLength < -1) || (destCapacity<0) || (!dest && destCapacity > 0)){
+ if((src==nullptr) || (srcLength < -1) || (destCapacity<0) || (!dest && destCapacity > 0)){
*status = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -782,9 +782,9 @@ uidna_IDNToUnicode( const UChar* src, int32_t srcLength,
}
//initialize pointers
- UChar *delimiter = (UChar*)src;
- UChar *labelStart = (UChar*)src;
- UChar *currentDest = (UChar*) dest;
+ char16_t *delimiter = (char16_t*)src;
+ char16_t *labelStart = (char16_t*)src;
+ char16_t *currentDest = (char16_t*) dest;
int32_t remainingLen = srcLength;
int32_t remainingDestCapacity = destCapacity;
int32_t labelLen = 0, labelReqLength = 0;
@@ -829,7 +829,7 @@ uidna_IDNToUnicode( const UChar* src, int32_t srcLength,
remainingDestCapacity = 0;
}
- if(done == true){
+ if(done){
break;
}
@@ -858,17 +858,17 @@ uidna_IDNToUnicode( const UChar* src, int32_t srcLength,
}
U_CAPI int32_t U_EXPORT2
-uidna_compare( const UChar *s1, int32_t length1,
- const UChar *s2, int32_t length2,
+uidna_compare( const char16_t *s1, int32_t length1,
+ const char16_t *s2, int32_t length2,
int32_t options,
UErrorCode* status){
- if(status == NULL || U_FAILURE(*status)){
+ if(status == nullptr || U_FAILURE(*status)){
return -1;
}
- UChar b1Stack[MAX_IDN_BUFFER_SIZE], b2Stack[MAX_IDN_BUFFER_SIZE];
- UChar *b1 = b1Stack, *b2 = b2Stack;
+ char16_t b1Stack[MAX_IDN_BUFFER_SIZE], b2Stack[MAX_IDN_BUFFER_SIZE];
+ char16_t *b1 = b1Stack, *b2 = b2Stack;
int32_t b1Len, b2Len, b1Capacity = MAX_IDN_BUFFER_SIZE, b2Capacity = MAX_IDN_BUFFER_SIZE;
int32_t result=-1;
@@ -877,8 +877,8 @@ uidna_compare( const UChar *s1, int32_t length1,
b1Len = uidna_IDNToASCII(s1, length1, b1, b1Capacity, options, &parseError, status);
if(*status == U_BUFFER_OVERFLOW_ERROR){
// redo processing of string
- b1 = (UChar*) uprv_malloc(b1Len * U_SIZEOF_UCHAR);
- if(b1==NULL){
+ b1 = (char16_t*) uprv_malloc(b1Len * U_SIZEOF_UCHAR);
+ if(b1==nullptr){
*status = U_MEMORY_ALLOCATION_ERROR;
goto CLEANUP;
}
@@ -892,8 +892,8 @@ uidna_compare( const UChar *s1, int32_t length1,
b2Len = uidna_IDNToASCII(s2,length2, b2,b2Capacity, options, &parseError, status);
if(*status == U_BUFFER_OVERFLOW_ERROR){
// redo processing of string
- b2 = (UChar*) uprv_malloc(b2Len * U_SIZEOF_UCHAR);
- if(b2==NULL){
+ b2 = (char16_t*) uprv_malloc(b2Len * U_SIZEOF_UCHAR);
+ if(b2==nullptr){
*status = U_MEMORY_ALLOCATION_ERROR;
goto CLEANUP;
}
diff --git a/Build/source/libs/icu/icu-src/source/common/uinvchar.cpp b/Build/source/libs/icu/icu-src/source/common/uinvchar.cpp
index ffce3ec158d..096a8e28d11 100644
--- a/Build/source/libs/icu/icu-src/source/common/uinvchar.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/uinvchar.cpp
@@ -182,8 +182,8 @@ static const uint32_t invariantChars[4]={
U_CAPI void U_EXPORT2
-u_charsToUChars(const char *cs, UChar *us, int32_t length) {
- UChar u;
+u_charsToUChars(const char *cs, char16_t *us, int32_t length) {
+ char16_t u;
uint8_t c;
/*
@@ -193,7 +193,7 @@ u_charsToUChars(const char *cs, UChar *us, int32_t length) {
*/
while(length>0) {
c=(uint8_t)(*cs++);
- u=(UChar)CHAR_TO_UCHAR(c);
+ u=(char16_t)CHAR_TO_UCHAR(c);
U_ASSERT((u!=0 || c==0)); /* only invariant chars converted? */
*us++=u;
--length;
@@ -201,8 +201,8 @@ u_charsToUChars(const char *cs, UChar *us, int32_t length) {
}
U_CAPI void U_EXPORT2
-u_UCharsToChars(const UChar *us, char *cs, int32_t length) {
- UChar u;
+u_UCharsToChars(const char16_t *us, char *cs, int32_t length) {
+ char16_t u;
while(length>0) {
u=*us++;
@@ -260,8 +260,8 @@ uprv_isInvariantString(const char *s, int32_t length) {
}
U_CAPI UBool U_EXPORT2
-uprv_isInvariantUString(const UChar *s, int32_t length) {
- UChar c;
+uprv_isInvariantUString(const char16_t *s, int32_t length) {
+ char16_t c;
for(;;) {
if(length<0) {
@@ -303,10 +303,10 @@ uprv_ebcdicFromAscii(const UDataSwapper *ds,
int32_t count;
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return 0;
}
- if(ds==NULL || inData==NULL || length<0 || (length>0 && outData==NULL)) {
+ if(ds==nullptr || inData==nullptr || length<0 || (length>0 && outData==nullptr)) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -340,10 +340,10 @@ uprv_copyAscii(const UDataSwapper *ds,
int32_t count;
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return 0;
}
- if(ds==NULL || inData==NULL || length<0 || (length>0 && outData==NULL)) {
+ if(ds==nullptr || inData==nullptr || length<0 || (length>0 && outData==nullptr)) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -380,10 +380,10 @@ uprv_asciiFromEbcdic(const UDataSwapper *ds,
int32_t count;
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return 0;
}
- if(ds==NULL || inData==NULL || length<0 || (length>0 && outData==NULL)) {
+ if(ds==nullptr || inData==nullptr || length<0 || (length>0 && outData==nullptr)) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -417,10 +417,10 @@ uprv_copyEbcdic(const UDataSwapper *ds,
int32_t count;
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return 0;
}
- if(ds==NULL || inData==NULL || length<0 || (length>0 && outData==NULL)) {
+ if(ds==nullptr || inData==nullptr || length<0 || (length>0 && outData==nullptr)) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -457,13 +457,13 @@ uprv_isEbcdicAtSign(char c) {
U_CFUNC int32_t
uprv_compareInvAscii(const UDataSwapper *ds,
const char *outString, int32_t outLength,
- const UChar *localString, int32_t localLength) {
+ const char16_t *localString, int32_t localLength) {
(void)ds;
int32_t minLength;
UChar32 c1, c2;
uint8_t c;
- if(outString==NULL || outLength<-1 || localString==NULL || localLength<-1) {
+ if(outString==nullptr || outLength<-1 || localString==nullptr || localLength<-1) {
return 0;
}
@@ -503,13 +503,13 @@ uprv_compareInvAscii(const UDataSwapper *ds,
U_CFUNC int32_t
uprv_compareInvEbcdic(const UDataSwapper *ds,
const char *outString, int32_t outLength,
- const UChar *localString, int32_t localLength) {
+ const char16_t *localString, int32_t localLength) {
(void)ds;
int32_t minLength;
UChar32 c1, c2;
uint8_t c;
- if(outString==NULL || outLength<-1 || localString==NULL || localLength<-1) {
+ if(outString==nullptr || outLength<-1 || localString==nullptr || localLength<-1) {
return 0;
}
diff --git a/Build/source/libs/icu/icu-src/source/common/uiter.cpp b/Build/source/libs/icu/icu-src/source/common/uiter.cpp
index c4ab7d6d565..be59eab2ee7 100644
--- a/Build/source/libs/icu/icu-src/source/common/uiter.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/uiter.cpp
@@ -74,7 +74,7 @@ static const UCharIterator noopIterator={
noopCurrent,
noopCurrent,
noopCurrent,
- NULL,
+ nullptr,
noopGetState,
noopSetState
};
@@ -82,14 +82,14 @@ static const UCharIterator noopIterator={
/* UCharIterator implementation for simple strings -------------------------- */
/*
- * This is an implementation of a code unit (UChar) iterator
- * for UChar * strings.
+ * This is an implementation of a code unit (char16_t) iterator
+ * for char16_t * strings.
*
* The UCharIterator.context field holds a pointer to the string.
*/
static int32_t U_CALLCONV
-stringIteratorGetIndex(UCharIterator *iter, UCharIteratorOrigin origin) {
+stringIteratorGetIndex(UCharIterator *iter, UCharIteratorOrigin origin) UPRV_NO_SANITIZE_UNDEFINED {
switch(origin) {
case UITER_ZERO:
return 0;
@@ -109,7 +109,7 @@ stringIteratorGetIndex(UCharIterator *iter, UCharIteratorOrigin origin) {
}
static int32_t U_CALLCONV
-stringIteratorMove(UCharIterator *iter, int32_t delta, UCharIteratorOrigin origin) {
+stringIteratorMove(UCharIterator *iter, int32_t delta, UCharIteratorOrigin origin) UPRV_NO_SANITIZE_UNDEFINED {
int32_t pos;
switch(origin) {
@@ -154,7 +154,7 @@ stringIteratorHasPrevious(UCharIterator *iter) {
static UChar32 U_CALLCONV
stringIteratorCurrent(UCharIterator *iter) {
if(iter->index<iter->limit) {
- return ((const UChar *)(iter->context))[iter->index];
+ return ((const char16_t *)(iter->context))[iter->index];
} else {
return U_SENTINEL;
}
@@ -163,7 +163,7 @@ stringIteratorCurrent(UCharIterator *iter) {
static UChar32 U_CALLCONV
stringIteratorNext(UCharIterator *iter) {
if(iter->index<iter->limit) {
- return ((const UChar *)(iter->context))[iter->index++];
+ return ((const char16_t *)(iter->context))[iter->index++];
} else {
return U_SENTINEL;
}
@@ -172,7 +172,7 @@ stringIteratorNext(UCharIterator *iter) {
static UChar32 U_CALLCONV
stringIteratorPrevious(UCharIterator *iter) {
if(iter->index>iter->start) {
- return ((const UChar *)(iter->context))[--iter->index];
+ return ((const char16_t *)(iter->context))[--iter->index];
} else {
return U_SENTINEL;
}
@@ -185,9 +185,9 @@ stringIteratorGetState(const UCharIterator *iter) {
static void U_CALLCONV
stringIteratorSetState(UCharIterator *iter, uint32_t state, UErrorCode *pErrorCode) {
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
/* do nothing */
- } else if(iter==NULL) {
+ } else if(iter==nullptr) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
} else if((int32_t)state<iter->start || iter->limit<(int32_t)state) {
*pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
@@ -205,13 +205,13 @@ static const UCharIterator stringIterator={
stringIteratorCurrent,
stringIteratorNext,
stringIteratorPrevious,
- NULL,
+ nullptr,
stringIteratorGetState,
stringIteratorSetState
};
U_CAPI void U_EXPORT2
-uiter_setString(UCharIterator *iter, const UChar *s, int32_t length) {
+uiter_setString(UCharIterator *iter, const char16_t *s, int32_t length) {
if(iter!=0) {
if(s!=0 && length>=-1) {
*iter=stringIterator;
@@ -231,12 +231,12 @@ uiter_setString(UCharIterator *iter, const UChar *s, int32_t length) {
/* UCharIterator implementation for UTF-16BE strings ------------------------ */
/*
- * This is an implementation of a code unit (UChar) iterator
+ * This is an implementation of a code unit (char16_t) iterator
* for UTF-16BE strings, i.e., strings in byte-vectors where
- * each UChar is stored as a big-endian pair of bytes.
+ * each char16_t is stored as a big-endian pair of bytes.
*
* The UCharIterator.context field holds a pointer to the string.
- * Everything works just like with a normal UChar iterator (uiter_setString),
+ * Everything works just like with a normal char16_t iterator (uiter_setString),
* except that UChars are assembled from byte pairs.
*/
@@ -244,7 +244,7 @@ uiter_setString(UCharIterator *iter, const UChar *s, int32_t length) {
static inline UChar32
utf16BEIteratorGet(UCharIterator *iter, int32_t index) {
const uint8_t *p=(const uint8_t *)iter->context;
- return ((UChar)p[2*index]<<8)|(UChar)p[2*index+1];
+ return ((char16_t)p[2*index]<<8)|(char16_t)p[2*index+1];
}
static UChar32 U_CALLCONV
@@ -291,13 +291,13 @@ static const UCharIterator utf16BEIterator={
utf16BEIteratorCurrent,
utf16BEIteratorNext,
utf16BEIteratorPrevious,
- NULL,
+ nullptr,
stringIteratorGetState,
stringIteratorSetState
};
/*
- * Count the number of UChars in a UTF-16BE string before a terminating UChar NUL,
+ * Count the number of UChars in a UTF-16BE string before a terminating char16_t NUL,
* i.e., before a pair of 0 bytes where the first 0 byte is at an even
* offset from s.
*/
@@ -306,10 +306,10 @@ utf16BE_strlen(const char *s) {
if(IS_POINTER_EVEN(s)) {
/*
* even-aligned, call u_strlen(s)
- * we are probably on a little-endian machine, but searching for UChar NUL
+ * we are probably on a little-endian machine, but searching for char16_t NUL
* does not care about endianness
*/
- return u_strlen((const UChar *)s);
+ return u_strlen((const char16_t *)s);
} else {
/* odd-aligned, search for pair of 0 bytes */
const char *p=s;
@@ -323,15 +323,15 @@ utf16BE_strlen(const char *s) {
U_CAPI void U_EXPORT2
uiter_setUTF16BE(UCharIterator *iter, const char *s, int32_t length) {
- if(iter!=NULL) {
+ if(iter!=nullptr) {
/* allow only even-length strings (the input length counts bytes) */
- if(s!=NULL && (length==-1 || (length>=0 && IS_EVEN(length)))) {
+ if(s!=nullptr && (length==-1 || (length>=0 && IS_EVEN(length)))) {
/* length/=2, except that >>=1 also works for -1 (-1/2==0, -1>>1==-1) */
length>>=1;
if(U_IS_BIG_ENDIAN && IS_POINTER_EVEN(s)) {
- /* big-endian machine and 2-aligned UTF-16BE string: use normal UChar iterator */
- uiter_setString(iter, (const UChar *)s, length);
+ /* big-endian machine and 2-aligned UTF-16BE string: use normal char16_t iterator */
+ uiter_setString(iter, (const char16_t *)s, length);
return;
}
@@ -359,7 +359,7 @@ uiter_setUTF16BE(UCharIterator *iter, const char *s, int32_t length) {
*/
static int32_t U_CALLCONV
-characterIteratorGetIndex(UCharIterator *iter, UCharIteratorOrigin origin) {
+characterIteratorGetIndex(UCharIterator *iter, UCharIteratorOrigin origin) UPRV_NO_SANITIZE_UNDEFINED {
switch(origin) {
case UITER_ZERO:
return 0;
@@ -379,7 +379,7 @@ characterIteratorGetIndex(UCharIterator *iter, UCharIteratorOrigin origin) {
}
static int32_t U_CALLCONV
-characterIteratorMove(UCharIterator *iter, int32_t delta, UCharIteratorOrigin origin) {
+characterIteratorMove(UCharIterator *iter, int32_t delta, UCharIteratorOrigin origin) UPRV_NO_SANITIZE_UNDEFINED {
switch(origin) {
case UITER_ZERO:
((CharacterIterator *)(iter->context))->setIndex(delta);
@@ -445,9 +445,9 @@ characterIteratorGetState(const UCharIterator *iter) {
static void U_CALLCONV
characterIteratorSetState(UCharIterator *iter, uint32_t state, UErrorCode *pErrorCode) {
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
/* do nothing */
- } else if(iter==NULL || iter->context==NULL) {
+ } else if(iter==nullptr || iter->context==nullptr) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
} else if((int32_t)state<((CharacterIterator *)(iter->context))->startIndex() || ((CharacterIterator *)(iter->context))->endIndex()<(int32_t)state) {
*pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
@@ -465,7 +465,7 @@ static const UCharIterator characterIteratorWrapper={
characterIteratorCurrent,
characterIteratorNext,
characterIteratorPrevious,
- NULL,
+ nullptr,
characterIteratorGetState,
characterIteratorSetState
};
@@ -485,7 +485,7 @@ uiter_setCharacterIterator(UCharIterator *iter, CharacterIterator *charIter) {
/* UCharIterator wrapper around Replaceable --------------------------------- */
/*
- * This is an implementation of a code unit (UChar) iterator
+ * This is an implementation of a code unit (char16_t) iterator
* based on a Replaceable object.
*
* The UCharIterator.context field holds a pointer to the Replaceable.
@@ -529,7 +529,7 @@ static const UCharIterator replaceableIterator={
replaceableIteratorCurrent,
replaceableIteratorNext,
replaceableIteratorPrevious,
- NULL,
+ nullptr,
stringIteratorGetState,
stringIteratorSetState
};
@@ -561,7 +561,7 @@ uiter_setReplaceable(UCharIterator *iter, const Replaceable *rep) {
/*
* Minimal implementation:
- * Maintain a single-UChar buffer for an additional surrogate.
+ * Maintain a single-char16_t buffer for an additional surrogate.
* The caller must not modify start and limit because they are used internally.
*
* Use UCharIterator fields as follows:
@@ -586,7 +586,7 @@ uiter_setReplaceable(UCharIterator *iter, const Replaceable *rep) {
*/
static int32_t U_CALLCONV
-utf8IteratorGetIndex(UCharIterator *iter, UCharIteratorOrigin origin) {
+utf8IteratorGetIndex(UCharIterator *iter, UCharIteratorOrigin origin) UPRV_NO_SANITIZE_UNDEFINED {
switch(origin) {
case UITER_ZERO:
case UITER_START:
@@ -666,7 +666,7 @@ utf8IteratorGetIndex(UCharIterator *iter, UCharIteratorOrigin origin) {
}
static int32_t U_CALLCONV
-utf8IteratorMove(UCharIterator *iter, int32_t delta, UCharIteratorOrigin origin) {
+utf8IteratorMove(UCharIterator *iter, int32_t delta, UCharIteratorOrigin origin) UPRV_NO_SANITIZE_UNDEFINED {
const uint8_t *s;
UChar32 c;
int32_t pos; /* requested UTF-16 index */
@@ -873,7 +873,7 @@ utf8IteratorNext(UCharIterator *iter) {
int32_t index;
if(iter->reservedField!=0) {
- UChar trail=U16_TRAIL(iter->reservedField);
+ char16_t trail=U16_TRAIL(iter->reservedField);
iter->reservedField=0;
if((index=iter->index)>=0) {
iter->index=index+1;
@@ -908,7 +908,7 @@ utf8IteratorPrevious(UCharIterator *iter) {
int32_t index;
if(iter->reservedField!=0) {
- UChar lead=U16_LEAD(iter->reservedField);
+ char16_t lead=U16_LEAD(iter->reservedField);
iter->reservedField=0;
iter->start-=4; /* we stayed behind the supplementary code point; go before it now */
if((index=iter->index)>0) {
@@ -951,9 +951,9 @@ utf8IteratorSetState(UCharIterator *iter,
uint32_t state,
UErrorCode *pErrorCode)
{
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
/* do nothing */
- } else if(iter==NULL) {
+ } else if(iter==nullptr) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
} else if(state==utf8IteratorGetState(iter)) {
/* setting to the current state: no-op */
@@ -995,7 +995,7 @@ static const UCharIterator utf8Iterator={
utf8IteratorCurrent,
utf8IteratorNext,
utf8IteratorPrevious,
- NULL,
+ nullptr,
utf8IteratorGetState,
utf8IteratorSetState
};
@@ -1085,7 +1085,7 @@ uiter_previous32(UCharIterator *iter) {
U_CAPI uint32_t U_EXPORT2
uiter_getState(const UCharIterator *iter) {
- if(iter==NULL || iter->getState==NULL) {
+ if(iter==nullptr || iter->getState==nullptr) {
return UITER_NO_STATE;
} else {
return iter->getState(iter);
@@ -1094,11 +1094,11 @@ uiter_getState(const UCharIterator *iter) {
U_CAPI void U_EXPORT2
uiter_setState(UCharIterator *iter, uint32_t state, UErrorCode *pErrorCode) {
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
/* do nothing */
- } else if(iter==NULL) {
+ } else if(iter==nullptr) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
- } else if(iter->setState==NULL) {
+ } else if(iter->setState==nullptr) {
*pErrorCode=U_UNSUPPORTED_ERROR;
} else {
iter->setState(iter, state, pErrorCode);
diff --git a/Build/source/libs/icu/icu-src/source/common/ulist.cpp b/Build/source/libs/icu/icu-src/source/common/ulist.cpp
index 57344715de5..5bdf534c84d 100644
--- a/Build/source/libs/icu/icu-src/source/common/ulist.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ulist.cpp
@@ -34,21 +34,21 @@ struct UList {
static void ulist_addFirstItem(UList *list, UListNode *newItem);
U_CAPI UList *U_EXPORT2 ulist_createEmptyList(UErrorCode *status) {
- UList *newList = NULL;
+ UList *newList = nullptr;
if (U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
newList = (UList *)uprv_malloc(sizeof(UList));
- if (newList == NULL) {
+ if (newList == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
- newList->curr = NULL;
- newList->head = NULL;
- newList->tail = NULL;
+ newList->curr = nullptr;
+ newList->head = nullptr;
+ newList->tail = nullptr;
newList->size = 0;
return newList;
@@ -59,20 +59,20 @@ U_CAPI UList *U_EXPORT2 ulist_createEmptyList(UErrorCode *status) {
* This function properly sets the pointers for the first item added.
*/
static void ulist_addFirstItem(UList *list, UListNode *newItem) {
- newItem->next = NULL;
- newItem->previous = NULL;
+ newItem->next = nullptr;
+ newItem->previous = nullptr;
list->head = newItem;
list->tail = newItem;
}
static void ulist_removeItem(UList *list, UListNode *p) {
- if (p->previous == NULL) {
+ if (p->previous == nullptr) {
// p is the list head.
list->head = p->next;
} else {
p->previous->next = p->next;
}
- if (p->next == NULL) {
+ if (p->next == nullptr) {
// p is the list tail.
list->tail = p->previous;
} else {
@@ -89,9 +89,9 @@ static void ulist_removeItem(UList *list, UListNode *p) {
}
U_CAPI void U_EXPORT2 ulist_addItemEndList(UList *list, const void *data, UBool forceDelete, UErrorCode *status) {
- UListNode *newItem = NULL;
+ UListNode *newItem = nullptr;
- if (U_FAILURE(*status) || list == NULL || data == NULL) {
+ if (U_FAILURE(*status) || list == nullptr || data == nullptr) {
if (forceDelete) {
uprv_free((void *)data);
}
@@ -99,7 +99,7 @@ U_CAPI void U_EXPORT2 ulist_addItemEndList(UList *list, const void *data, UBool
}
newItem = (UListNode *)uprv_malloc(sizeof(UListNode));
- if (newItem == NULL) {
+ if (newItem == nullptr) {
if (forceDelete) {
uprv_free((void *)data);
}
@@ -112,7 +112,7 @@ U_CAPI void U_EXPORT2 ulist_addItemEndList(UList *list, const void *data, UBool
if (list->size == 0) {
ulist_addFirstItem(list, newItem);
} else {
- newItem->next = NULL;
+ newItem->next = nullptr;
newItem->previous = list->tail;
list->tail->next = newItem;
list->tail = newItem;
@@ -122,9 +122,9 @@ U_CAPI void U_EXPORT2 ulist_addItemEndList(UList *list, const void *data, UBool
}
U_CAPI void U_EXPORT2 ulist_addItemBeginList(UList *list, const void *data, UBool forceDelete, UErrorCode *status) {
- UListNode *newItem = NULL;
+ UListNode *newItem = nullptr;
- if (U_FAILURE(*status) || list == NULL || data == NULL) {
+ if (U_FAILURE(*status) || list == nullptr || data == nullptr) {
if (forceDelete) {
uprv_free((void *)data);
}
@@ -132,7 +132,7 @@ U_CAPI void U_EXPORT2 ulist_addItemBeginList(UList *list, const void *data, UBoo
}
newItem = (UListNode *)uprv_malloc(sizeof(UListNode));
- if (newItem == NULL) {
+ if (newItem == nullptr) {
if (forceDelete) {
uprv_free((void *)data);
}
@@ -145,7 +145,7 @@ U_CAPI void U_EXPORT2 ulist_addItemBeginList(UList *list, const void *data, UBoo
if (list->size == 0) {
ulist_addFirstItem(list, newItem);
} else {
- newItem->previous = NULL;
+ newItem->previous = nullptr;
newItem->next = list->head;
list->head->previous = newItem;
list->head = newItem;
@@ -155,9 +155,9 @@ U_CAPI void U_EXPORT2 ulist_addItemBeginList(UList *list, const void *data, UBoo
}
U_CAPI UBool U_EXPORT2 ulist_containsString(const UList *list, const char *data, int32_t length) {
- if (list != NULL) {
+ if (list != nullptr) {
const UListNode *pointer;
- for (pointer = list->head; pointer != NULL; pointer = pointer->next) {
+ for (pointer = list->head; pointer != nullptr; pointer = pointer->next) {
if (length == (int32_t)uprv_strlen((const char *)pointer->data)) {
if (uprv_memcmp(data, pointer->data, length) == 0) {
return true;
@@ -169,9 +169,9 @@ U_CAPI UBool U_EXPORT2 ulist_containsString(const UList *list, const char *data,
}
U_CAPI UBool U_EXPORT2 ulist_removeString(UList *list, const char *data) {
- if (list != NULL) {
+ if (list != nullptr) {
UListNode *pointer;
- for (pointer = list->head; pointer != NULL; pointer = pointer->next) {
+ for (pointer = list->head; pointer != nullptr; pointer = pointer->next) {
if (uprv_strcmp(data, (const char *)pointer->data) == 0) {
ulist_removeItem(list, pointer);
// Remove only the first occurrence, like Java LinkedList.remove(Object).
@@ -183,10 +183,10 @@ U_CAPI UBool U_EXPORT2 ulist_removeString(UList *list, const char *data) {
}
U_CAPI void *U_EXPORT2 ulist_getNext(UList *list) {
- UListNode *curr = NULL;
+ UListNode *curr = nullptr;
- if (list == NULL || list->curr == NULL) {
- return NULL;
+ if (list == nullptr || list->curr == nullptr) {
+ return nullptr;
}
curr = list->curr;
@@ -196,7 +196,7 @@ U_CAPI void *U_EXPORT2 ulist_getNext(UList *list) {
}
U_CAPI int32_t U_EXPORT2 ulist_getListSize(const UList *list) {
- if (list != NULL) {
+ if (list != nullptr) {
return list->size;
}
@@ -204,17 +204,17 @@ U_CAPI int32_t U_EXPORT2 ulist_getListSize(const UList *list) {
}
U_CAPI void U_EXPORT2 ulist_resetList(UList *list) {
- if (list != NULL) {
+ if (list != nullptr) {
list->curr = list->head;
}
}
U_CAPI void U_EXPORT2 ulist_deleteList(UList *list) {
- UListNode *listHead = NULL;
+ UListNode *listHead = nullptr;
- if (list != NULL) {
+ if (list != nullptr) {
listHead = list->head;
- while (listHead != NULL) {
+ while (listHead != nullptr) {
UListNode *listPointer = listHead->next;
if (listHead->forceDelete) {
@@ -225,12 +225,12 @@ U_CAPI void U_EXPORT2 ulist_deleteList(UList *list) {
listHead = listPointer;
}
uprv_free(list);
- list = NULL;
+ list = nullptr;
}
}
U_CAPI void U_EXPORT2 ulist_close_keyword_values_iterator(UEnumeration *en) {
- if (en != NULL) {
+ if (en != nullptr) {
ulist_deleteList((UList *)(en->context));
uprv_free(en);
}
@@ -247,11 +247,11 @@ U_CAPI int32_t U_EXPORT2 ulist_count_keyword_values(UEnumeration *en, UErrorCode
U_CAPI const char * U_EXPORT2 ulist_next_keyword_value(UEnumeration *en, int32_t *resultLength, UErrorCode *status) {
const char *s;
if (U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
s = (const char *)ulist_getNext((UList *)(en->context));
- if (s != NULL && resultLength != NULL) {
+ if (s != nullptr && resultLength != nullptr) {
*resultLength = static_cast<int32_t>(uprv_strlen(s));
}
return s;
diff --git a/Build/source/libs/icu/icu-src/source/common/uloc.cpp b/Build/source/libs/icu/icu-src/source/common/uloc.cpp
index 1da2abc361d..ce49d6c50e2 100644
--- a/Build/source/libs/icu/icu-src/source/common/uloc.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/uloc.cpp
@@ -56,7 +56,7 @@ U_NAMESPACE_USE
/* Locale stuff from locid.cpp */
U_CFUNC void locale_set_default(const char *id);
-U_CFUNC const char *locale_get_default(void);
+U_CFUNC const char *locale_get_default();
/* ### Data tables **************************************************/
@@ -71,8 +71,8 @@ U_CFUNC const char *locale_get_default(void);
* This list must be kept in sync with LANGUAGES_3, with corresponding
* entries matched.
*
- * This table should be terminated with a NULL entry, followed by a
- * second list, and another NULL entry. The first list is visible to
+ * This table should be terminated with a nullptr entry, followed by a
+ * second list, and another nullptr entry. The first list is visible to
* user code when this array is returned by API. The second list
* contains codes we support, but do not expose through user API.
*
@@ -103,12 +103,12 @@ static const char * const LANGUAGES[] = {
"ba", "bal", "ban", "bar", "bas", "bax", "bbc", "bbj",
"be", "bej", "bem", "bew", "bez", "bfd", "bfq", "bg",
"bgc", "bgn", "bho", "bi", "bik", "bin", "bjn", "bkm", "bla",
- "bm", "bn", "bo", "bpy", "bqi", "br", "bra", "brh",
+ "blo", "bm", "bn", "bo", "bpy", "bqi", "br", "bra", "brh",
"brx", "bs", "bss", "bua", "bug", "bum", "byn", "byv",
"ca", "cad", "car", "cay", "cch", "ccp", "ce", "ceb", "cgg",
"ch", "chb", "chg", "chk", "chm", "chn", "cho", "chp",
"chr", "chy", "ckb", "co", "cop", "cps", "cr", "crh",
- "cs", "csb", "cu", "cv", "cy",
+ "cs", "csb", "csw", "cu", "cv", "cy",
"da", "dak", "dar", "dav", "de", "del", "den", "dgr",
"din", "dje", "doi", "dsb", "dtp", "dua", "dum", "dv",
"dyo", "dyu", "dz", "dzg",
@@ -135,7 +135,7 @@ static const char * const LANGUAGES[] = {
"kkj", "kl", "kln", "km", "kmb", "kn", "ko", "koi",
"kok", "kos", "kpe", "kr", "krc", "kri", "krj", "krl",
"kru", "ks", "ksb", "ksf", "ksh", "ku", "kum", "kut",
- "kv", "kw", "ky",
+ "kv", "kw", "kxv", "ky",
"la", "lad", "lag", "lah", "lam", "lb", "lez", "lfn",
"lg", "li", "lij", "liv", "lkt", "lmo", "ln", "lo",
"lol", "loz", "lrc", "lt", "ltg", "lu", "lua", "lui",
@@ -169,27 +169,27 @@ static const char * const LANGUAGES[] = {
"sv", "sw", "swb", "syc", "syr", "szl",
"ta", "tcy", "te", "tem", "teo", "ter", "tet", "tg",
"th", "ti", "tig", "tiv", "tk", "tkl", "tkr",
- "tlh", "tli", "tly", "tmh", "tn", "to", "tog", "tpi",
+ "tlh", "tli", "tly", "tmh", "tn", "to", "tog", "tok", "tpi",
"tr", "tru", "trv", "ts", "tsd", "tsi", "tt", "ttt",
"tum", "tvl", "tw", "twq", "ty", "tyv", "tzm",
"udm", "ug", "uga", "uk", "umb", "und", "ur", "uz",
- "vai", "ve", "vec", "vep", "vi", "vls", "vmf", "vo",
- "vot", "vro", "vun",
+ "vai", "ve", "vec", "vep", "vi", "vls", "vmf", "vmw",
+ "vo", "vot", "vro", "vun",
"wa", "wae", "wal", "war", "was", "wbp", "wo", "wuu",
- "xal", "xh", "xmf", "xog",
+ "xal", "xh", "xmf", "xnr", "xog",
"yao", "yap", "yav", "ybb", "yi", "yo", "yrl", "yue",
"za", "zap", "zbl", "zea", "zen", "zgh", "zh", "zu",
"zun", "zxx", "zza",
-NULL,
+nullptr,
"in", "iw", "ji", "jw", "mo", "sh", "swc", "tl", /* obsolete language codes */
-NULL
+nullptr
};
static const char* const DEPRECATED_LANGUAGES[]={
- "in", "iw", "ji", "jw", "mo", NULL, NULL
+ "in", "iw", "ji", "jw", "mo", nullptr, nullptr
};
static const char* const REPLACEMENT_LANGUAGES[]={
- "id", "he", "yi", "jv", "ro", NULL, NULL
+ "id", "he", "yi", "jv", "ro", nullptr, nullptr
};
/**
@@ -204,8 +204,8 @@ static const char* const REPLACEMENT_LANGUAGES[]={
* Where a 3-letter language code has no 2-letter equivalent, the
* 3-letter code occupies both LANGUAGES[i] and LANGUAGES_3[i].
*
- * This table should be terminated with a NULL entry, followed by a
- * second list, and another NULL entry. The two lists correspond to
+ * This table should be terminated with a nullptr entry, followed by a
+ * second list, and another nullptr entry. The two lists correspond to
* the two lists in LANGUAGES.
*/
/* Generated using org.unicode.cldr.icu.GenerateISO639LanguageTables */
@@ -220,12 +220,12 @@ static const char * const LANGUAGES_3[] = {
"bak", "bal", "ban", "bar", "bas", "bax", "bbc", "bbj",
"bel", "bej", "bem", "bew", "bez", "bfd", "bfq", "bul",
"bgc", "bgn", "bho", "bis", "bik", "bin", "bjn", "bkm", "bla",
- "bam", "ben", "bod", "bpy", "bqi", "bre", "bra", "brh",
+ "blo", "bam", "ben", "bod", "bpy", "bqi", "bre", "bra", "brh",
"brx", "bos", "bss", "bua", "bug", "bum", "byn", "byv",
"cat", "cad", "car", "cay", "cch", "ccp", "che", "ceb", "cgg",
"cha", "chb", "chg", "chk", "chm", "chn", "cho", "chp",
"chr", "chy", "ckb", "cos", "cop", "cps", "cre", "crh",
- "ces", "csb", "chu", "chv", "cym",
+ "ces", "csb", "csw", "chu", "chv", "cym",
"dan", "dak", "dar", "dav", "deu", "del", "den", "dgr",
"din", "dje", "doi", "dsb", "dtp", "dua", "dum", "div",
"dyo", "dyu", "dzo", "dzg",
@@ -252,7 +252,7 @@ static const char * const LANGUAGES_3[] = {
"kkj", "kal", "kln", "khm", "kmb", "kan", "kor", "koi",
"kok", "kos", "kpe", "kau", "krc", "kri", "krj", "krl",
"kru", "kas", "ksb", "ksf", "ksh", "kur", "kum", "kut",
- "kom", "cor", "kir",
+ "kom", "cor", "kxv", "kir",
"lat", "lad", "lag", "lah", "lam", "ltz", "lez", "lfn",
"lug", "lim", "lij", "liv", "lkt", "lmo", "lin", "lao",
"lol", "loz", "lrc", "lit", "ltg", "lub", "lua", "lui",
@@ -286,21 +286,21 @@ static const char * const LANGUAGES_3[] = {
"swe", "swa", "swb", "syc", "syr", "szl",
"tam", "tcy", "tel", "tem", "teo", "ter", "tet", "tgk",
"tha", "tir", "tig", "tiv", "tuk", "tkl", "tkr",
- "tlh", "tli", "tly", "tmh", "tsn", "ton", "tog", "tpi",
+ "tlh", "tli", "tly", "tmh", "tsn", "ton", "tog", "tok", "tpi",
"tur", "tru", "trv", "tso", "tsd", "tsi", "tat", "ttt",
"tum", "tvl", "twi", "twq", "tah", "tyv", "tzm",
"udm", "uig", "uga", "ukr", "umb", "und", "urd", "uzb",
- "vai", "ven", "vec", "vep", "vie", "vls", "vmf", "vol",
- "vot", "vro", "vun",
+ "vai", "ven", "vec", "vep", "vie", "vls", "vmf", "vmw",
+ "vol", "vot", "vro", "vun",
"wln", "wae", "wal", "war", "was", "wbp", "wol", "wuu",
- "xal", "xho", "xmf", "xog",
+ "xal", "xho", "xmf", "xnr", "xog",
"yao", "yap", "yav", "ybb", "yid", "yor", "yrl", "yue",
"zha", "zap", "zbl", "zea", "zen", "zgh", "zho", "zul",
"zun", "zxx", "zza",
-NULL,
+nullptr,
/* "in", "iw", "ji", "jw", "mo", "sh", "swc", "tl", */
"ind", "heb", "yid", "jaw", "mol", "srp", "swc", "tgl",
-NULL
+nullptr
};
/**
@@ -312,8 +312,8 @@ NULL
* This list must be kept in sync with COUNTRIES_3, with corresponding
* entries matched.
*
- * This table should be terminated with a NULL entry, followed by a
- * second list, and another NULL entry. The first list is visible to
+ * This table should be terminated with a nullptr entry, followed by a
+ * second list, and another nullptr entry. The first list is visible to
* user code when this array is returned by API. The second list
* contains codes we support, but do not expose through user API.
*
@@ -333,7 +333,7 @@ static const char * const COUNTRIES[] = {
"BA", "BB", "BD", "BE", "BF", "BG", "BH", "BI",
"BJ", "BL", "BM", "BN", "BO", "BQ", "BR", "BS", "BT", "BV",
"BW", "BY", "BZ", "CA", "CC", "CD", "CF", "CG",
- "CH", "CI", "CK", "CL", "CM", "CN", "CO", "CR",
+ "CH", "CI", "CK", "CL", "CM", "CN", "CO", "CQ", "CR",
"CU", "CV", "CW", "CX", "CY", "CZ", "DE", "DG", "DJ", "DK",
"DM", "DO", "DZ", "EA", "EC", "EE", "EG", "EH", "ER",
"ES", "ET", "FI", "FJ", "FK", "FM", "FO", "FR",
@@ -358,17 +358,17 @@ static const char * const COUNTRIES[] = {
"TW", "TZ", "UA", "UG", "UM", "US", "UY", "UZ",
"VA", "VC", "VE", "VG", "VI", "VN", "VU", "WF",
"WS", "XK", "YE", "YT", "ZA", "ZM", "ZW",
-NULL,
+nullptr,
"AN", "BU", "CS", "FX", "RO", "SU", "TP", "YD", "YU", "ZR", /* obsolete country codes */
-NULL
+nullptr
};
static const char* const DEPRECATED_COUNTRIES[] = {
- "AN", "BU", "CS", "DD", "DY", "FX", "HV", "NH", "RH", "SU", "TP", "UK", "VD", "YD", "YU", "ZR", NULL, NULL /* deprecated country list */
+ "AN", "BU", "CS", "DD", "DY", "FX", "HV", "NH", "RH", "SU", "TP", "UK", "VD", "YD", "YU", "ZR", nullptr, nullptr /* deprecated country list */
};
static const char* const REPLACEMENT_COUNTRIES[] = {
/* "AN", "BU", "CS", "DD", "DY", "FX", "HV", "NH", "RH", "SU", "TP", "UK", "VD", "YD", "YU", "ZR" */
- "CW", "MM", "RS", "DE", "BJ", "FR", "BF", "VU", "ZW", "RU", "TL", "GB", "VN", "YE", "RS", "CD", NULL, NULL /* replacement country codes */
+ "CW", "MM", "RS", "DE", "BJ", "FR", "BF", "VU", "ZW", "RU", "TL", "GB", "VN", "YE", "RS", "CD", nullptr, nullptr /* replacement country codes */
};
/**
@@ -380,8 +380,8 @@ static const char* const REPLACEMENT_COUNTRIES[] = {
* COUNTRIES_3[i]. The commented-out lines are copied from COUNTRIES
* to make eyeballing this baby easier.
*
- * This table should be terminated with a NULL entry, followed by a
- * second list, and another NULL entry. The two lists correspond to
+ * This table should be terminated with a nullptr entry, followed by a
+ * second list, and another nullptr entry. The two lists correspond to
* the two lists in COUNTRIES.
*/
static const char * const COUNTRIES_3[] = {
@@ -395,8 +395,8 @@ static const char * const COUNTRIES_3[] = {
"BEN", "BLM", "BMU", "BRN", "BOL", "BES", "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",
+/* "CH", "CI", "CK", "CL", "CM", "CN", "CO", "CQ", "CR", */
+ "CHE", "CIV", "COK", "CHL", "CMR", "CHN", "COL", "CRQ", "CRI",
/* "CU", "CV", "CW", "CX", "CY", "CZ", "DE", "DG", "DJ", "DK", */
"CUB", "CPV", "CUW", "CXR", "CYP", "CZE", "DEU", "DGA", "DJI", "DNK",
/* "DM", "DO", "DZ", "EA", "EC", "EE", "EG", "EH", "ER", */
@@ -445,10 +445,10 @@ static const char * const COUNTRIES_3[] = {
"VAT", "VCT", "VEN", "VGB", "VIR", "VNM", "VUT", "WLF",
/* "WS", "XK", "YE", "YT", "ZA", "ZM", "ZW", */
"WSM", "XKK", "YEM", "MYT", "ZAF", "ZMB", "ZWE",
-NULL,
+nullptr,
/* "AN", "BU", "CS", "FX", "RO", "SU", "TP", "YD", "YU", "ZR" */
"ANT", "BUR", "SCG", "FXX", "ROM", "SUN", "TMP", "YMD", "YUG", "ZAR",
-NULL
+nullptr
};
typedef struct CanonicalizationMap {
@@ -476,26 +476,7 @@ static const CanonicalizationMap CANONICALIZE_MAP[] = {
/* ### BCP47 Conversion *******************************************/
/* Test if the locale id has BCP47 u extension and does not have '@' */
-#define _hasBCP47Extension(id) (id && uprv_strstr(id, "@") == NULL && getShortestSubtagLength(localeID) == 1)
-/* Converts the BCP47 id to Unicode id. Does nothing to id if conversion fails */
-static const char* _ConvertBCP47(
- const char* id, char* buffer, int32_t length,
- UErrorCode* err, int32_t* pLocaleIdSize) {
- const char* finalID;
- int32_t localeIDSize = uloc_forLanguageTag(id, buffer, length, NULL, err);
- if (localeIDSize <= 0 || U_FAILURE(*err) || *err == U_STRING_NOT_TERMINATED_WARNING) {
- finalID=id;
- if (*err == U_STRING_NOT_TERMINATED_WARNING) {
- *err = U_BUFFER_OVERFLOW_ERROR;
- }
- } else {
- finalID=buffer;
- }
- if (pLocaleIdSize != nullptr) {
- *pLocaleIdSize = localeIDSize;
- }
- return finalID;
-}
+#define _hasBCP47Extension(id) (id && uprv_strstr(id, "@") == nullptr && getShortestSubtagLength(localeID) == 1)
/* Gets the size of the shortest subtag in the given localeID. */
static int32_t getShortestSubtagLength(const char *localeID) {
int32_t localeIDLength = static_cast<int32_t>(uprv_strlen(localeID));
@@ -533,8 +514,8 @@ static int32_t getShortestSubtagLength(const char *localeID) {
U_CAPI const char * U_EXPORT2
locale_getKeywordsStart(const char *localeID) {
- const char *result = NULL;
- if((result = uprv_strchr(localeID, '@')) != NULL) {
+ const char *result = nullptr;
+ if((result = uprv_strchr(localeID, '@')) != nullptr) {
return result;
}
#if (U_CHARSET_FAMILY == U_EBCDIC_FAMILY)
@@ -545,14 +526,14 @@ locale_getKeywordsStart(const char *localeID) {
static const uint8_t ebcdicSigns[] = { 0x7C, 0x44, 0x66, 0x80, 0xAC, 0xAE, 0xAF, 0xB5, 0xEC, 0xEF, 0x00 };
const uint8_t *charToFind = ebcdicSigns;
while(*charToFind) {
- if((result = uprv_strchr(localeID, *charToFind)) != NULL) {
+ if((result = uprv_strchr(localeID, *charToFind)) != nullptr) {
return result;
}
charToFind++;
}
}
#endif
- return NULL;
+ return nullptr;
}
/**
@@ -613,8 +594,8 @@ ulocimp_getKeywords(const char *localeID,
int32_t maxKeywords = ULOC_MAX_NO_KEYWORDS;
int32_t numKeywords = 0;
const char* pos = localeID;
- const char* equalSign = NULL;
- const char* semicolon = NULL;
+ const char* equalSign = nullptr;
+ const char* semicolon = nullptr;
int32_t i = 0, j, n;
if(prev == '@') { /* start of keyword definition */
@@ -704,7 +685,7 @@ ulocimp_getKeywords(const char *localeID,
/* now we have a list of keywords */
/* we need to sort it */
- uprv_sortArray(keywordList, numKeywords, sizeof(KeywordStruct), compareKeywordStructs, NULL, false, status);
+ uprv_sortArray(keywordList, numKeywords, sizeof(KeywordStruct), compareKeywordStructs, nullptr, false, status);
/* Now construct the keyword part */
for(i = 0; i < numKeywords; i++) {
@@ -756,16 +737,16 @@ ulocimp_getKeywordValue(const char* localeID,
icu::ByteSink& sink,
UErrorCode* status)
{
- const char* startSearchHere = NULL;
- const char* nextSeparator = NULL;
+ const char* startSearchHere = nullptr;
+ const char* nextSeparator = nullptr;
char keywordNameBuffer[ULOC_KEYWORD_BUFFER_LEN];
char localeKeywordNameBuffer[ULOC_KEYWORD_BUFFER_LEN];
if(status && U_SUCCESS(*status) && localeID) {
- char tempBuffer[ULOC_FULLNAME_CAPACITY];
+ CharString tempBuffer;
const char* tmpLocaleID;
- if (keywordName == NULL || keywordName[0] == 0) {
+ if (keywordName == nullptr || keywordName[0] == 0) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
@@ -776,14 +757,15 @@ ulocimp_getKeywordValue(const char* localeID,
}
if (_hasBCP47Extension(localeID)) {
- tmpLocaleID = _ConvertBCP47(localeID, tempBuffer,
- sizeof(tempBuffer), status, nullptr);
+ CharStringByteSink sink(&tempBuffer);
+ ulocimp_forLanguageTag(localeID, -1, sink, nullptr, status);
+ tmpLocaleID = U_SUCCESS(*status) && !tempBuffer.isEmpty() ? tempBuffer.data() : localeID;
} else {
tmpLocaleID=localeID;
}
startSearchHere = locale_getKeywordsStart(tmpLocaleID);
- if(startSearchHere == NULL) {
+ if(startSearchHere == nullptr) {
/* no keywords, return at once */
return;
}
@@ -876,10 +858,10 @@ uloc_setKeywordValue(const char* keywordName,
char keywordValueBuffer[ULOC_KEYWORDS_CAPACITY+1];
char localeKeywordNameBuffer[ULOC_KEYWORD_BUFFER_LEN];
int32_t rc;
- char* nextSeparator = NULL;
- char* nextEqualsign = NULL;
- char* startSearchHere = NULL;
- char* keywordStart = NULL;
+ char* nextSeparator = nullptr;
+ char* nextEqualsign = nullptr;
+ char* startSearchHere = nullptr;
+ char* keywordStart = nullptr;
CharString updatedKeysAndValues;
UBool handledInputKeyAndValue = false;
char keyValuePrefix = '@';
@@ -890,13 +872,13 @@ uloc_setKeywordValue(const char* keywordName,
if (*status == U_STRING_NOT_TERMINATED_WARNING) {
*status = U_ZERO_ERROR;
}
- if (keywordName == NULL || keywordName[0] == 0 || bufferCapacity <= 1) {
+ if (keywordName == nullptr || keywordName[0] == 0 || bufferCapacity <= 1) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
bufLen = (int32_t)uprv_strlen(buffer);
if(bufferCapacity<bufLen) {
- /* The capacity is less than the length?! Is this NULL terminated? */
+ /* The capacity is less than the length?! Is this NUL terminated? */
*status = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -925,7 +907,7 @@ uloc_setKeywordValue(const char* keywordName,
keywordValueBuffer[keywordValueLen] = 0; /* terminate */
startSearchHere = (char*)locale_getKeywordsStart(buffer);
- if(startSearchHere == NULL || (startSearchHere[1]==0)) {
+ if(startSearchHere == nullptr || (startSearchHere[1]==0)) {
if(keywordValueLen == 0) { /* no keywords = nothing to remove */
U_ASSERT(*status != U_STRING_NOT_TERMINATED_WARNING);
return bufLen;
@@ -1100,7 +1082,7 @@ uloc_setKeywordValue(const char* keywordName,
/**
* Lookup 'key' in the array 'list'. The array 'list' should contain
- * a NULL entry, followed by more entries, and a second NULL entry.
+ * a nullptr entry, followed by more entries, and a second nullptr entry.
*
* The 'list' param should be LANGUAGES, LANGUAGES_3, COUNTRIES, or
* COUNTRIES_3.
@@ -1110,7 +1092,7 @@ static int16_t _findIndex(const char* const* list, const char* key)
const char* const* anchor = list;
int32_t pass = 0;
- /* Make two passes through two NULL-terminated arrays at 'list' */
+ /* Make two passes through two nullptr-terminated arrays at 'list' */
while (pass++ < 2) {
while (*list) {
if (uprv_strcmp(key, *list) == 0) {
@@ -1118,7 +1100,7 @@ static int16_t _findIndex(const char* const* list, const char* key)
}
list++;
}
- ++list; /* skip final NULL *CWB*/
+ ++list; /* skip final nullptr *CWB*/
}
return -1;
}
@@ -1185,7 +1167,7 @@ ulocimp_getLanguage(const char *localeID,
}
}
- if(pEnd!=NULL) {
+ if(pEnd!=nullptr) {
*pEnd=localeID;
}
@@ -1199,7 +1181,7 @@ ulocimp_getScript(const char *localeID,
CharString result;
int32_t idLen = 0;
- if (pEnd != NULL) {
+ if (pEnd != nullptr) {
*pEnd = localeID;
}
@@ -1212,7 +1194,7 @@ ulocimp_getScript(const char *localeID,
/* If it's exactly 4 characters long, then it's a script and not a country. */
if (idLen == 4) {
int32_t i;
- if (pEnd != NULL) {
+ if (pEnd != nullptr) {
*pEnd = localeID+idLen;
}
if (idLen >= 1) {
@@ -1254,7 +1236,7 @@ ulocimp_getCountry(const char *localeID,
result.clear();
}
- if(pEnd!=NULL) {
+ if(pEnd!=nullptr) {
*pEnd=localeID;
}
@@ -1292,7 +1274,7 @@ _getVariant(const char *localeID,
if(!hasVariant) {
if(prev=='@') {
/* keep localeID */
- } else if((localeID=locale_getKeywordsStart(localeID))!=NULL) {
+ } else if((localeID=locale_getKeywordsStart(localeID))!=nullptr) {
++localeID; /* point after the '@' */
} else {
return;
@@ -1347,7 +1329,7 @@ uloc_kw_nextKeyword(UEnumeration* en,
len = (int32_t)uprv_strlen(((UKeywordsContext *)en->context)->current);
((UKeywordsContext *)en->context)->current += len+1;
} else {
- result = NULL;
+ result = nullptr;
}
if (resultLength) {
*resultLength = len;
@@ -1365,8 +1347,8 @@ U_CDECL_END
static const UEnumeration gKeywordsEnum = {
- NULL,
- NULL,
+ nullptr,
+ nullptr,
uloc_kw_closeKeywords,
uloc_kw_countKeywords,
uenum_unextDefault,
@@ -1406,18 +1388,19 @@ U_CAPI UEnumeration* U_EXPORT2
uloc_openKeywords(const char* localeID,
UErrorCode* status)
{
- char tempBuffer[ULOC_FULLNAME_CAPACITY];
+ CharString tempBuffer;
const char* tmpLocaleID;
- if(status==NULL || U_FAILURE(*status)) {
+ if(status==nullptr || U_FAILURE(*status)) {
return 0;
}
if (_hasBCP47Extension(localeID)) {
- tmpLocaleID = _ConvertBCP47(localeID, tempBuffer,
- sizeof(tempBuffer), status, nullptr);
+ CharStringByteSink sink(&tempBuffer);
+ ulocimp_forLanguageTag(localeID, -1, sink, nullptr, status);
+ tmpLocaleID = U_SUCCESS(*status) && !tempBuffer.isEmpty() ? tempBuffer.data() : localeID;
} else {
- if (localeID==NULL) {
+ if (localeID==nullptr) {
localeID=uloc_getDefault();
}
tmpLocaleID=localeID;
@@ -1450,16 +1433,16 @@ uloc_openKeywords(const char* localeID,
}
/* keywords are located after '@' */
- if((tmpLocaleID = locale_getKeywordsStart(tmpLocaleID)) != NULL) {
+ if((tmpLocaleID = locale_getKeywordsStart(tmpLocaleID)) != nullptr) {
CharString keywords;
CharStringByteSink sink(&keywords);
ulocimp_getKeywords(tmpLocaleID+1, '@', sink, false, status);
if (U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
return uloc_openKeywordList(keywords.data(), keywords.length(), status);
}
- return NULL;
+ return nullptr;
}
@@ -1489,12 +1472,12 @@ _canonicalize(const char* localeID,
}
int32_t j, fieldCount=0, scriptSize=0, variantSize=0;
- PreflightingLocaleIDBuffer tempBuffer; // if localeID has a BCP47 extension, tmpLocaleID points to this
+ CharString tempBuffer; // if localeID has a BCP47 extension, tmpLocaleID points to this
CharString localeIDWithHyphens; // if localeID has a BPC47 extension and have _, tmpLocaleID points to this
const char* origLocaleID;
const char* tmpLocaleID;
- const char* keywordAssign = NULL;
- const char* separatorIndicator = NULL;
+ const char* keywordAssign = nullptr;
+ const char* separatorIndicator = nullptr;
if (_hasBCP47Extension(localeID)) {
const char* localeIDPtr = localeID;
@@ -1512,15 +1495,11 @@ _canonicalize(const char* localeID,
}
}
- do {
- // After this call tmpLocaleID may point to localeIDPtr which may
- // point to either localeID or localeIDWithHyphens.data().
- tmpLocaleID = _ConvertBCP47(localeIDPtr, tempBuffer.getBuffer(),
- tempBuffer.getCapacity(), err,
- &(tempBuffer.requestedCapacity));
- } while (tempBuffer.needToTryAgain(err));
+ CharStringByteSink tempSink(&tempBuffer);
+ ulocimp_forLanguageTag(localeIDPtr, -1, tempSink, nullptr, err);
+ tmpLocaleID = U_SUCCESS(*err) && !tempBuffer.isEmpty() ? tempBuffer.data() : localeIDPtr;
} else {
- if (localeID==NULL) {
+ if (localeID==nullptr) {
localeID=uloc_getDefault();
}
tmpLocaleID=localeID;
@@ -1602,15 +1581,15 @@ _canonicalize(const char* localeID,
}
/* Scan ahead to next '@' and determine if it is followed by '=' and/or ';'
- After this, tmpLocaleID either points to '@' or is NULL */
- if ((tmpLocaleID=locale_getKeywordsStart(tmpLocaleID))!=NULL) {
+ After this, tmpLocaleID either points to '@' or is nullptr */
+ if ((tmpLocaleID=locale_getKeywordsStart(tmpLocaleID))!=nullptr) {
keywordAssign = uprv_strchr(tmpLocaleID, '=');
separatorIndicator = uprv_strchr(tmpLocaleID, ';');
}
/* Copy POSIX-style variant, if any [mr@FOO] */
if (!OPTION_SET(options, _ULOC_CANONICALIZE) &&
- tmpLocaleID != NULL && keywordAssign == NULL) {
+ tmpLocaleID != nullptr && keywordAssign == nullptr) {
for (;;) {
char c = *tmpLocaleID;
if (c == 0) {
@@ -1623,7 +1602,7 @@ _canonicalize(const char* localeID,
if (OPTION_SET(options, _ULOC_CANONICALIZE)) {
/* Handle @FOO variant if @ is present and not followed by = */
- if (tmpLocaleID!=NULL && keywordAssign==NULL) {
+ if (tmpLocaleID!=nullptr && keywordAssign==nullptr) {
/* Add missing '_' if needed */
if (fieldCount < 2 || (fieldCount < 3 && scriptSize > 0)) {
do {
@@ -1647,7 +1626,7 @@ _canonicalize(const char* localeID,
for (j=0; j<UPRV_LENGTHOF(CANONICALIZE_MAP); j++) {
StringPiece id(CANONICALIZE_MAP[j].id);
if (tag == id) {
- if (id.empty() && tmpLocaleID != NULL) {
+ if (id.empty() && tmpLocaleID != nullptr) {
break; /* Don't remap "" if keywords present */
}
tag.clear();
@@ -1660,7 +1639,7 @@ _canonicalize(const char* localeID,
sink.Append(tag.data(), tag.length());
if (!OPTION_SET(options, _ULOC_STRIP_KEYWORDS)) {
- if (tmpLocaleID!=NULL && keywordAssign!=NULL &&
+ if (tmpLocaleID!=nullptr && keywordAssign!=nullptr &&
(!separatorIndicator || separatorIndicator > keywordAssign)) {
sink.Append("@", 1);
++fieldCount;
@@ -1677,17 +1656,44 @@ uloc_getParent(const char* localeID,
int32_t parentCapacity,
UErrorCode* err)
{
+ if (U_FAILURE(*err)) {
+ return 0;
+ }
+
+ CheckedArrayByteSink sink(parent, parentCapacity);
+ ulocimp_getParent(localeID, sink, err);
+
+ int32_t reslen = sink.NumberOfBytesAppended();
+
+ if (U_FAILURE(*err)) {
+ return reslen;
+ }
+
+ if (sink.Overflowed()) {
+ *err = U_BUFFER_OVERFLOW_ERROR;
+ } else {
+ u_terminateChars(parent, parentCapacity, reslen, err);
+ }
+
+ return reslen;
+}
+
+U_CAPI void U_EXPORT2
+ulocimp_getParent(const char* localeID,
+ icu::ByteSink& sink,
+ UErrorCode* err)
+{
const char *lastUnderscore;
int32_t i;
if (U_FAILURE(*err))
- return 0;
+ return;
- if (localeID == NULL)
+ if (localeID == nullptr)
localeID = uloc_getDefault();
lastUnderscore=uprv_strrchr(localeID, '_');
- if(lastUnderscore!=NULL) {
+ if(lastUnderscore!=nullptr) {
i=(int32_t)(lastUnderscore-localeID);
} else {
i=0;
@@ -1697,13 +1703,9 @@ uloc_getParent(const char* localeID,
if (uprv_strnicmp(localeID, "und_", 4) == 0) {
localeID += 3;
i -= 3;
- uprv_memmove(parent, localeID, uprv_min(i, parentCapacity));
- } else if (parent != localeID) {
- uprv_memcpy(parent, localeID, uprv_min(i, parentCapacity));
}
+ sink.Append(localeID, i);
}
-
- return u_terminateChars(parent, parentCapacity, i, err);
}
U_CAPI int32_t U_EXPORT2
@@ -1714,15 +1716,15 @@ uloc_getLanguage(const char* localeID,
{
/* uloc_getLanguage will return a 2 character iso-639 code if one exists. *CWB*/
- if (err==NULL || U_FAILURE(*err)) {
+ if (err==nullptr || U_FAILURE(*err)) {
return 0;
}
- if(localeID==NULL) {
+ if(localeID==nullptr) {
localeID=uloc_getDefault();
}
- return ulocimp_getLanguage(localeID, NULL, *err).extract(language, languageCapacity, *err);
+ return ulocimp_getLanguage(localeID, nullptr, *err).extract(language, languageCapacity, *err);
}
U_CAPI int32_t U_EXPORT2
@@ -1731,11 +1733,11 @@ uloc_getScript(const char* localeID,
int32_t scriptCapacity,
UErrorCode* err)
{
- if(err==NULL || U_FAILURE(*err)) {
+ if(err==nullptr || U_FAILURE(*err)) {
return 0;
}
- if(localeID==NULL) {
+ if(localeID==nullptr) {
localeID=uloc_getDefault();
}
@@ -1746,7 +1748,7 @@ uloc_getScript(const char* localeID,
}
if(_isIDSeparator(*localeID)) {
- return ulocimp_getScript(localeID+1, NULL, *err).extract(script, scriptCapacity, *err);
+ return ulocimp_getScript(localeID+1, nullptr, *err).extract(script, scriptCapacity, *err);
}
return u_terminateChars(script, scriptCapacity, 0, err);
}
@@ -1757,11 +1759,11 @@ uloc_getCountry(const char* localeID,
int32_t countryCapacity,
UErrorCode* err)
{
- if(err==NULL || U_FAILURE(*err)) {
+ if(err==nullptr || U_FAILURE(*err)) {
return 0;
}
- if(localeID==NULL) {
+ if(localeID==nullptr) {
localeID=uloc_getDefault();
}
@@ -1783,7 +1785,7 @@ uloc_getCountry(const char* localeID,
localeID = scriptID;
}
if(_isIDSeparator(*localeID)) {
- return ulocimp_getCountry(localeID+1, NULL, *err).extract(country, countryCapacity, *err);
+ return ulocimp_getCountry(localeID+1, nullptr, *err).extract(country, countryCapacity, *err);
}
}
return u_terminateChars(country, countryCapacity, 0, err);
@@ -1795,18 +1797,20 @@ uloc_getVariant(const char* localeID,
int32_t variantCapacity,
UErrorCode* err)
{
- char tempBuffer[ULOC_FULLNAME_CAPACITY];
+ CharString tempBuffer;
const char* tmpLocaleID;
int32_t i=0;
- if(err==NULL || U_FAILURE(*err)) {
+ if(err==nullptr || U_FAILURE(*err)) {
return 0;
}
if (_hasBCP47Extension(localeID)) {
- tmpLocaleID =_ConvertBCP47(localeID, tempBuffer, sizeof(tempBuffer), err, nullptr);
+ CharStringByteSink sink(&tempBuffer);
+ ulocimp_forLanguageTag(localeID, -1, sink, nullptr, err);
+ tmpLocaleID = U_SUCCESS(*err) && !tempBuffer.isEmpty() ? tempBuffer.data() : localeID;
} else {
- if (localeID==NULL) {
+ if (localeID==nullptr) {
localeID=uloc_getDefault();
}
tmpLocaleID=localeID;
@@ -1981,7 +1985,7 @@ uloc_getISO3Language(const char* localeID)
char lang[ULOC_LANG_CAPACITY];
UErrorCode err = U_ZERO_ERROR;
- if (localeID == NULL)
+ if (localeID == nullptr)
{
localeID = uloc_getDefault();
}
@@ -2001,7 +2005,7 @@ uloc_getISO3Country(const char* localeID)
char cntry[ULOC_LANG_CAPACITY];
UErrorCode err = U_ZERO_ERROR;
- if (localeID == NULL)
+ if (localeID == nullptr)
{
localeID = uloc_getDefault();
}
@@ -2134,7 +2138,7 @@ U_CAPI const char* U_EXPORT2
uloc_toUnicodeLocaleKey(const char* keyword)
{
const char* bcpKey = ulocimp_toBcpKey(keyword);
- if (bcpKey == NULL && ultag_isUnicodeLocaleKey(keyword, -1)) {
+ if (bcpKey == nullptr && ultag_isUnicodeLocaleKey(keyword, -1)) {
// unknown keyword, but syntax is fine..
return keyword;
}
@@ -2144,8 +2148,8 @@ uloc_toUnicodeLocaleKey(const char* keyword)
U_CAPI const char* U_EXPORT2
uloc_toUnicodeLocaleType(const char* keyword, const char* value)
{
- const char* bcpType = ulocimp_toBcpType(keyword, value, NULL, NULL);
- if (bcpType == NULL && ultag_isUnicodeLocaleType(value, -1)) {
+ const char* bcpType = ulocimp_toBcpType(keyword, value, nullptr, nullptr);
+ if (bcpType == nullptr && ultag_isUnicodeLocaleType(value, -1)) {
// unknown keyword, but syntax is fine..
return value;
}
@@ -2190,7 +2194,7 @@ U_CAPI const char* U_EXPORT2
uloc_toLegacyKey(const char* keyword)
{
const char* legacyKey = ulocimp_toLegacyKey(keyword);
- if (legacyKey == NULL) {
+ if (legacyKey == nullptr) {
// Checks if the specified locale key is well-formed with the legacy locale syntax.
//
// Note:
@@ -2208,8 +2212,8 @@ uloc_toLegacyKey(const char* keyword)
U_CAPI const char* U_EXPORT2
uloc_toLegacyType(const char* keyword, const char* value)
{
- const char* legacyType = ulocimp_toLegacyType(keyword, value, NULL, NULL);
- if (legacyType == NULL) {
+ const char* legacyType = ulocimp_toLegacyType(keyword, value, nullptr, nullptr);
+ if (legacyType == nullptr) {
// Checks if the specified locale type is well-formed with the legacy locale syntax.
//
// Note:
diff --git a/Build/source/libs/icu/icu-src/source/common/uloc_keytype.cpp b/Build/source/libs/icu/icu-src/source/common/uloc_keytype.cpp
index 12dc3004924..a84b8609079 100644
--- a/Build/source/libs/icu/icu-src/source/common/uloc_keytype.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/uloc_keytype.cpp
@@ -23,7 +23,7 @@
#include "uvector.h"
#include "udataswp.h" /* for InvChar functions */
-static UHashtable* gLocExtKeyMap = NULL;
+static UHashtable* gLocExtKeyMap = nullptr;
static icu::UInitOnce gLocExtKeyMapInitOnce {};
// bit flags for special types
@@ -46,27 +46,27 @@ struct LocExtType : public icu::UMemory {
const char* bcpId;
};
-static icu::MemoryPool<icu::CharString>* gKeyTypeStringPool = NULL;
-static icu::MemoryPool<LocExtKeyData>* gLocExtKeyDataEntries = NULL;
-static icu::MemoryPool<LocExtType>* gLocExtTypeEntries = NULL;
+static icu::MemoryPool<icu::CharString>* gKeyTypeStringPool = nullptr;
+static icu::MemoryPool<LocExtKeyData>* gLocExtKeyDataEntries = nullptr;
+static icu::MemoryPool<LocExtType>* gLocExtTypeEntries = nullptr;
U_CDECL_BEGIN
static UBool U_CALLCONV
-uloc_key_type_cleanup(void) {
- if (gLocExtKeyMap != NULL) {
+uloc_key_type_cleanup() {
+ if (gLocExtKeyMap != nullptr) {
uhash_close(gLocExtKeyMap);
- gLocExtKeyMap = NULL;
+ gLocExtKeyMap = nullptr;
}
delete gLocExtKeyDataEntries;
- gLocExtKeyDataEntries = NULL;
+ gLocExtKeyDataEntries = nullptr;
delete gLocExtTypeEntries;
- gLocExtTypeEntries = NULL;
+ gLocExtTypeEntries = nullptr;
delete gKeyTypeStringPool;
- gKeyTypeStringPool = NULL;
+ gKeyTypeStringPool = nullptr;
gLocExtKeyMapInitOnce.reset();
return true;
@@ -80,34 +80,34 @@ initFromResourceBundle(UErrorCode& sts) {
U_NAMESPACE_USE
ucln_common_registerCleanup(UCLN_COMMON_LOCALE_KEY_TYPE, uloc_key_type_cleanup);
- gLocExtKeyMap = uhash_open(uhash_hashIChars, uhash_compareIChars, NULL, &sts);
+ gLocExtKeyMap = uhash_open(uhash_hashIChars, uhash_compareIChars, nullptr, &sts);
- LocalUResourceBundlePointer keyTypeDataRes(ures_openDirect(NULL, "keyTypeData", &sts));
- LocalUResourceBundlePointer keyMapRes(ures_getByKey(keyTypeDataRes.getAlias(), "keyMap", NULL, &sts));
- LocalUResourceBundlePointer typeMapRes(ures_getByKey(keyTypeDataRes.getAlias(), "typeMap", NULL, &sts));
+ LocalUResourceBundlePointer keyTypeDataRes(ures_openDirect(nullptr, "keyTypeData", &sts));
+ LocalUResourceBundlePointer keyMapRes(ures_getByKey(keyTypeDataRes.getAlias(), "keyMap", nullptr, &sts));
+ LocalUResourceBundlePointer typeMapRes(ures_getByKey(keyTypeDataRes.getAlias(), "typeMap", nullptr, &sts));
if (U_FAILURE(sts)) {
return;
}
UErrorCode tmpSts = U_ZERO_ERROR;
- LocalUResourceBundlePointer typeAliasRes(ures_getByKey(keyTypeDataRes.getAlias(), "typeAlias", NULL, &tmpSts));
+ LocalUResourceBundlePointer typeAliasRes(ures_getByKey(keyTypeDataRes.getAlias(), "typeAlias", nullptr, &tmpSts));
tmpSts = U_ZERO_ERROR;
- LocalUResourceBundlePointer bcpTypeAliasRes(ures_getByKey(keyTypeDataRes.getAlias(), "bcpTypeAlias", NULL, &tmpSts));
+ LocalUResourceBundlePointer bcpTypeAliasRes(ures_getByKey(keyTypeDataRes.getAlias(), "bcpTypeAlias", nullptr, &tmpSts));
// initialize pools storing dynamically allocated objects
gKeyTypeStringPool = new icu::MemoryPool<icu::CharString>;
- if (gKeyTypeStringPool == NULL) {
+ if (gKeyTypeStringPool == nullptr) {
sts = U_MEMORY_ALLOCATION_ERROR;
return;
}
gLocExtKeyDataEntries = new icu::MemoryPool<LocExtKeyData>;
- if (gLocExtKeyDataEntries == NULL) {
+ if (gLocExtKeyDataEntries == nullptr) {
sts = U_MEMORY_ALLOCATION_ERROR;
return;
}
gLocExtTypeEntries = new icu::MemoryPool<LocExtType>;
- if (gLocExtTypeEntries == NULL) {
+ if (gLocExtTypeEntries == nullptr) {
sts = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -130,7 +130,7 @@ initFromResourceBundle(UErrorCode& sts) {
const char* bcpKeyId = legacyKeyId;
if (!uBcpKeyId.isEmpty()) {
icu::CharString* bcpKeyIdBuf = gKeyTypeStringPool->create();
- if (bcpKeyIdBuf == NULL) {
+ if (bcpKeyIdBuf == nullptr) {
sts = U_MEMORY_ALLOCATION_ERROR;
break;
}
@@ -143,7 +143,7 @@ initFromResourceBundle(UErrorCode& sts) {
UBool isTZ = uprv_strcmp(legacyKeyId, "timezone") == 0;
- UHashtable* typeDataMap = uhash_open(uhash_hashIChars, uhash_compareIChars, NULL, &sts);
+ UHashtable* typeDataMap = uhash_open(uhash_hashIChars, uhash_compareIChars, nullptr, &sts);
if (U_FAILURE(sts)) {
break;
}
@@ -154,21 +154,21 @@ initFromResourceBundle(UErrorCode& sts) {
if (typeAliasRes.isValid()) {
tmpSts = U_ZERO_ERROR;
- typeAliasResByKey.adoptInstead(ures_getByKey(typeAliasRes.getAlias(), legacyKeyId, NULL, &tmpSts));
+ typeAliasResByKey.adoptInstead(ures_getByKey(typeAliasRes.getAlias(), legacyKeyId, nullptr, &tmpSts));
if (U_FAILURE(tmpSts)) {
typeAliasResByKey.orphan();
}
}
if (bcpTypeAliasRes.isValid()) {
tmpSts = U_ZERO_ERROR;
- bcpTypeAliasResByKey.adoptInstead(ures_getByKey(bcpTypeAliasRes.getAlias(), bcpKeyId, NULL, &tmpSts));
+ bcpTypeAliasResByKey.adoptInstead(ures_getByKey(bcpTypeAliasRes.getAlias(), bcpKeyId, nullptr, &tmpSts));
if (U_FAILURE(tmpSts)) {
bcpTypeAliasResByKey.orphan();
}
}
// look up type map for the key, and walk through the mapping data
- LocalUResourceBundlePointer typeMapResByKey(ures_getByKey(typeMapRes.getAlias(), legacyKeyId, NULL, &sts));
+ LocalUResourceBundlePointer typeMapResByKey(ures_getByKey(typeMapRes.getAlias(), legacyKeyId, nullptr, &sts));
if (U_FAILURE(sts)) {
// We fail here if typeMap does not have an entry corresponding to every entry in keyMap (should
// not happen for valid keyTypeData), or if ures_getByKeyfails fails for some other reason
@@ -202,10 +202,10 @@ initFromResourceBundle(UErrorCode& sts) {
if (isTZ) {
// a timezone key uses a colon instead of a slash in the resource.
// e.g. America:Los_Angeles
- if (uprv_strchr(legacyTypeId, ':') != NULL) {
+ if (uprv_strchr(legacyTypeId, ':') != nullptr) {
icu::CharString* legacyTypeIdBuf =
gKeyTypeStringPool->create(legacyTypeId, sts);
- if (legacyTypeIdBuf == NULL) {
+ if (legacyTypeIdBuf == nullptr) {
sts = U_MEMORY_ALLOCATION_ERROR;
break;
}
@@ -229,7 +229,7 @@ initFromResourceBundle(UErrorCode& sts) {
const char* bcpTypeId = legacyTypeId;
if (!uBcpTypeId.isEmpty()) {
icu::CharString* bcpTypeIdBuf = gKeyTypeStringPool->create();
- if (bcpTypeIdBuf == NULL) {
+ if (bcpTypeIdBuf == nullptr) {
sts = U_MEMORY_ALLOCATION_ERROR;
break;
}
@@ -245,7 +245,7 @@ initFromResourceBundle(UErrorCode& sts) {
// type under the same key. So we use a single
// map for lookup.
LocExtType* t = gLocExtTypeEntries->create();
- if (t == NULL) {
+ if (t == nullptr) {
sts = U_MEMORY_ALLOCATION_ERROR;
break;
}
@@ -269,19 +269,19 @@ initFromResourceBundle(UErrorCode& sts) {
while (ures_hasNext(typeAliasResByKey.getAlias()) && U_SUCCESS(sts)) {
int32_t toLen;
typeAliasDataEntry.adoptInstead(ures_getNextResource(typeAliasResByKey.getAlias(), typeAliasDataEntry.orphan(), &sts));
- const UChar* to = ures_getString(typeAliasDataEntry.getAlias(), &toLen, &sts);
+ const char16_t* to = ures_getString(typeAliasDataEntry.getAlias(), &toLen, &sts);
if (U_FAILURE(sts)) {
break;
}
// check if this is an alias of canonical legacy type
- if (uprv_compareInvWithUChar(NULL, legacyTypeId, -1, to, toLen) == 0) {
+ if (uprv_compareInvWithUChar(nullptr, legacyTypeId, -1, to, toLen) == 0) {
const char* from = ures_getKey(typeAliasDataEntry.getAlias());
if (isTZ) {
// replace colon with slash if necessary
- if (uprv_strchr(from, ':') != NULL) {
+ if (uprv_strchr(from, ':') != nullptr) {
icu::CharString* fromBuf =
gKeyTypeStringPool->create(from, sts);
- if (fromBuf == NULL) {
+ if (fromBuf == nullptr) {
sts = U_MEMORY_ALLOCATION_ERROR;
break;
}
@@ -310,12 +310,12 @@ initFromResourceBundle(UErrorCode& sts) {
while (ures_hasNext(bcpTypeAliasResByKey.getAlias()) && U_SUCCESS(sts)) {
int32_t toLen;
bcpTypeAliasDataEntry.adoptInstead(ures_getNextResource(bcpTypeAliasResByKey.getAlias(), bcpTypeAliasDataEntry.orphan(), &sts));
- const UChar* to = ures_getString(bcpTypeAliasDataEntry.getAlias(), &toLen, &sts);
+ const char16_t* to = ures_getString(bcpTypeAliasDataEntry.getAlias(), &toLen, &sts);
if (U_FAILURE(sts)) {
break;
}
// check if this is an alias of bcp type
- if (uprv_compareInvWithUChar(NULL, bcpTypeId, -1, to, toLen) == 0) {
+ if (uprv_compareInvWithUChar(nullptr, bcpTypeId, -1, to, toLen) == 0) {
const char* from = ures_getKey(bcpTypeAliasDataEntry.getAlias());
uhash_put(typeDataMap, (void*)from, t, &sts);
}
@@ -331,7 +331,7 @@ initFromResourceBundle(UErrorCode& sts) {
}
LocExtKeyData* keyData = gLocExtKeyDataEntries->create();
- if (keyData == NULL) {
+ if (keyData == nullptr) {
sts = U_MEMORY_ALLOCATION_ERROR;
break;
}
@@ -422,49 +422,49 @@ isSpecialTypeRgKeyValue(const char* val) {
U_CFUNC const char*
ulocimp_toBcpKey(const char* key) {
if (!init()) {
- return NULL;
+ return nullptr;
}
LocExtKeyData* keyData = (LocExtKeyData*)uhash_get(gLocExtKeyMap, key);
- if (keyData != NULL) {
+ if (keyData != nullptr) {
return keyData->bcpId;
}
- return NULL;
+ return nullptr;
}
U_CFUNC const char*
ulocimp_toLegacyKey(const char* key) {
if (!init()) {
- return NULL;
+ return nullptr;
}
LocExtKeyData* keyData = (LocExtKeyData*)uhash_get(gLocExtKeyMap, key);
- if (keyData != NULL) {
+ if (keyData != nullptr) {
return keyData->legacyId;
}
- return NULL;
+ return nullptr;
}
U_CFUNC const char*
ulocimp_toBcpType(const char* key, const char* type, UBool* isKnownKey, UBool* isSpecialType) {
- if (isKnownKey != NULL) {
+ if (isKnownKey != nullptr) {
*isKnownKey = false;
}
- if (isSpecialType != NULL) {
+ if (isSpecialType != nullptr) {
*isSpecialType = false;
}
if (!init()) {
- return NULL;
+ return nullptr;
}
LocExtKeyData* keyData = (LocExtKeyData*)uhash_get(gLocExtKeyMap, key);
- if (keyData != NULL) {
- if (isKnownKey != NULL) {
+ if (keyData != nullptr) {
+ if (isKnownKey != nullptr) {
*isKnownKey = true;
}
LocExtType* t = (LocExtType*)uhash_get(keyData->typeMap.getAlias(), type);
- if (t != NULL) {
+ if (t != nullptr) {
return t->bcpId;
}
if (keyData->specialTypes != SPECIALTYPE_NONE) {
@@ -479,37 +479,37 @@ ulocimp_toBcpType(const char* key, const char* type, UBool* isKnownKey, UBool* i
matched = isSpecialTypeRgKeyValue(type);
}
if (matched) {
- if (isSpecialType != NULL) {
+ if (isSpecialType != nullptr) {
*isSpecialType = true;
}
return type;
}
}
}
- return NULL;
+ return nullptr;
}
U_CFUNC const char*
ulocimp_toLegacyType(const char* key, const char* type, UBool* isKnownKey, UBool* isSpecialType) {
- if (isKnownKey != NULL) {
+ if (isKnownKey != nullptr) {
*isKnownKey = false;
}
- if (isSpecialType != NULL) {
+ if (isSpecialType != nullptr) {
*isSpecialType = false;
}
if (!init()) {
- return NULL;
+ return nullptr;
}
LocExtKeyData* keyData = (LocExtKeyData*)uhash_get(gLocExtKeyMap, key);
- if (keyData != NULL) {
- if (isKnownKey != NULL) {
+ if (keyData != nullptr) {
+ if (isKnownKey != nullptr) {
*isKnownKey = true;
}
LocExtType* t = (LocExtType*)uhash_get(keyData->typeMap.getAlias(), type);
- if (t != NULL) {
+ if (t != nullptr) {
return t->legacyId;
}
if (keyData->specialTypes != SPECIALTYPE_NONE) {
@@ -524,13 +524,13 @@ ulocimp_toLegacyType(const char* key, const char* type, UBool* isKnownKey, UBool
matched = isSpecialTypeRgKeyValue(type);
}
if (matched) {
- if (isSpecialType != NULL) {
+ if (isSpecialType != nullptr) {
*isSpecialType = true;
}
return type;
}
}
}
- return NULL;
+ return nullptr;
}
diff --git a/Build/source/libs/icu/icu-src/source/common/uloc_tag.cpp b/Build/source/libs/icu/icu-src/source/common/uloc_tag.cpp
index 01a0e0028f5..fe3261c75d9 100644
--- a/Build/source/libs/icu/icu-src/source/common/uloc_tag.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/uloc_tag.cpp
@@ -501,7 +501,7 @@ _isVariantSubtag(const char* s, int32_t len) {
static UBool
_isSepListOf(UBool (*test)(const char*, int32_t), const char* s, int32_t len) {
const char *p = s;
- const char *pSubtag = NULL;
+ const char *pSubtag = nullptr;
if (len < 0) {
len = (int32_t)uprv_strlen(s);
@@ -509,19 +509,19 @@ _isSepListOf(UBool (*test)(const char*, int32_t), const char* s, int32_t len) {
while ((p - s) < len) {
if (*p == SEP) {
- if (pSubtag == NULL) {
+ if (pSubtag == nullptr) {
return false;
}
if (!test(pSubtag, (int32_t)(p - pSubtag))) {
return false;
}
- pSubtag = NULL;
- } else if (pSubtag == NULL) {
+ pSubtag = nullptr;
+ } else if (pSubtag == nullptr) {
pSubtag = p;
}
p++;
}
- if (pSubtag == NULL) {
+ if (pSubtag == nullptr) {
return false;
}
return test(pSubtag, (int32_t)(p - pSubtag));
@@ -837,20 +837,20 @@ static UBool
_addVariantToList(VariantListEntry **first, VariantListEntry *var) {
UBool bAdded = true;
- if (*first == NULL) {
- var->next = NULL;
+ if (*first == nullptr) {
+ var->next = nullptr;
*first = var;
} else {
VariantListEntry *prev, *cur;
int32_t cmp;
/* variants order should be preserved */
- prev = NULL;
+ prev = nullptr;
cur = *first;
while (true) {
- if (cur == NULL) {
+ if (cur == nullptr) {
prev->next = var;
- var->next = NULL;
+ var->next = nullptr;
break;
}
@@ -873,25 +873,25 @@ static UBool
_addAttributeToList(AttributeListEntry **first, AttributeListEntry *attr) {
UBool bAdded = true;
- if (*first == NULL) {
- attr->next = NULL;
+ if (*first == nullptr) {
+ attr->next = nullptr;
*first = attr;
} else {
AttributeListEntry *prev, *cur;
int32_t cmp;
/* reorder variants in alphabetical order */
- prev = NULL;
+ prev = nullptr;
cur = *first;
while (true) {
- if (cur == NULL) {
+ if (cur == nullptr) {
prev->next = attr;
- attr->next = NULL;
+ attr->next = nullptr;
break;
}
cmp = uprv_compareInvCharsAsAscii(attr->attribute, cur->attribute);
if (cmp < 0) {
- if (prev == NULL) {
+ if (prev == nullptr) {
*first = attr;
} else {
prev->next = attr;
@@ -917,20 +917,20 @@ static UBool
_addExtensionToList(ExtensionListEntry **first, ExtensionListEntry *ext, UBool localeToBCP) {
UBool bAdded = true;
- if (*first == NULL) {
- ext->next = NULL;
+ if (*first == nullptr) {
+ ext->next = nullptr;
*first = ext;
} else {
ExtensionListEntry *prev, *cur;
int32_t cmp;
/* reorder variants in alphabetical order */
- prev = NULL;
+ prev = nullptr;
cur = *first;
while (true) {
- if (cur == NULL) {
+ if (cur == nullptr) {
prev->next = ext;
- ext->next = NULL;
+ ext->next = nullptr;
break;
}
if (localeToBCP) {
@@ -969,7 +969,7 @@ _addExtensionToList(ExtensionListEntry **first, ExtensionListEntry *ext, UBool l
cmp = uprv_compareInvCharsAsAscii(ext->key, cur->key);
}
if (cmp < 0) {
- if (prev == NULL) {
+ if (prev == nullptr) {
*first = ext;
} else {
prev->next = ext;
@@ -994,18 +994,18 @@ static void
_initializeULanguageTag(ULanguageTag* langtag) {
int32_t i;
- langtag->buf = NULL;
+ langtag->buf = nullptr;
langtag->language = EMPTY;
for (i = 0; i < MAXEXTLANG; i++) {
- langtag->extlang[i] = NULL;
+ langtag->extlang[i] = nullptr;
}
langtag->script = EMPTY;
langtag->region = EMPTY;
- langtag->variants = NULL;
- langtag->extensions = NULL;
+ langtag->variants = nullptr;
+ langtag->extensions = nullptr;
langtag->legacy = EMPTY;
langtag->privateuse = EMPTY;
@@ -1132,8 +1132,8 @@ _appendRegionToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool stri
}
static void _sortVariants(VariantListEntry* first) {
- for (VariantListEntry* var1 = first; var1 != NULL; var1 = var1->next) {
- for (VariantListEntry* var2 = var1->next; var2 != NULL; var2 = var2->next) {
+ for (VariantListEntry* var1 = first; var1 != nullptr; var1 = var1->next) {
+ for (VariantListEntry* var2 = var1->next; var2 != nullptr; var2 = var2->next) {
// Swap var1->variant and var2->variant.
if (uprv_compareInvCharsAsAscii(var1->variant, var2->variant) > 0) {
const char* temp = var1->variant;
@@ -1166,9 +1166,9 @@ _appendVariantsToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool st
char *p, *pVar;
UBool bNext = true;
VariantListEntry *var;
- VariantListEntry *varFirst = NULL;
+ VariantListEntry *varFirst = nullptr;
- pVar = NULL;
+ pVar = nullptr;
p = buf;
while (bNext) {
if (*p == SEP || *p == LOCALE_SEP || *p == 0) {
@@ -1177,7 +1177,7 @@ _appendVariantsToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool st
} else {
*p = 0; /* terminate */
}
- if (pVar == NULL) {
+ if (pVar == nullptr) {
if (strict) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
break;
@@ -1195,7 +1195,7 @@ _appendVariantsToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool st
if (uprv_strcmp(pVar,POSIX_VALUE) || len != (int32_t)uprv_strlen(POSIX_VALUE)) {
/* emit the variant to the list */
var = (VariantListEntry*)uprv_malloc(sizeof(VariantListEntry));
- if (var == NULL) {
+ if (var == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
break;
}
@@ -1222,15 +1222,15 @@ _appendVariantsToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool st
}
}
/* reset variant starting position */
- pVar = NULL;
- } else if (pVar == NULL) {
+ pVar = nullptr;
+ } else if (pVar == nullptr) {
pVar = p;
}
p++;
}
if (U_SUCCESS(*status)) {
- if (varFirst != NULL) {
+ if (varFirst != nullptr) {
int32_t varLen;
/* per UTS35, we should sort the variants */
@@ -1238,7 +1238,7 @@ _appendVariantsToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool st
/* write out validated/normalized variants to the target */
var = varFirst;
- while (var != NULL) {
+ while (var != nullptr) {
sink.Append("-", 1);
varLen = (int32_t)uprv_strlen(var->variant);
sink.Append(var->variant, varLen);
@@ -1249,7 +1249,7 @@ _appendVariantsToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool st
/* clean up */
var = varFirst;
- while (var != NULL) {
+ while (var != nullptr) {
VariantListEntry *tmpVar = var->next;
uprv_free(var);
var = tmpVar;
@@ -1278,9 +1278,9 @@ _appendKeywordsToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool st
/* reorder extensions */
int32_t len;
const char *key;
- ExtensionListEntry *firstExt = NULL;
+ ExtensionListEntry *firstExt = nullptr;
ExtensionListEntry *ext;
- AttributeListEntry *firstAttr = NULL;
+ AttributeListEntry *firstAttr = nullptr;
AttributeListEntry *attr;
icu::MemoryPool<icu::CharString> extBufPool;
const char *bcpKey=nullptr, *bcpValue=nullptr;
@@ -1289,8 +1289,8 @@ _appendKeywordsToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool st
UBool isBcpUExt;
while (true) {
- key = uenum_next(keywordEnum.getAlias(), NULL, status);
- if (key == NULL) {
+ key = uenum_next(keywordEnum.getAlias(), nullptr, status);
+ if (key == nullptr) {
break;
}
@@ -1326,14 +1326,23 @@ _appendKeywordsToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool st
attrBufLength = 0;
for (; i < len; i++) {
if (buf[i] != '-') {
- attrBuf[attrBufLength++] = buf[i];
+ if (static_cast<size_t>(attrBufLength) < sizeof(attrBuf)) {
+ attrBuf[attrBufLength++] = buf[i];
+ } else {
+ *status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
} else {
i++;
break;
}
}
if (attrBufLength > 0) {
- attrBuf[attrBufLength] = 0;
+ if (static_cast<size_t>(attrBufLength) < sizeof(attrBuf)) {
+ attrBuf[attrBufLength] = 0;
+ } else {
+ *status = U_STRING_NOT_TERMINATED_WARNING;
+ }
} else if (i >= len){
break;
@@ -1341,13 +1350,13 @@ _appendKeywordsToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool st
/* create AttributeListEntry */
attr = attrPool.create();
- if (attr == NULL) {
+ if (attr == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
break;
}
icu::CharString* attrValue =
strPool.create(attrBuf, attrBufLength, *status);
- if (attrValue == NULL) {
+ if (attrValue == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
break;
}
@@ -1365,11 +1374,11 @@ _appendKeywordsToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool st
}
/* for a place holder ExtensionListEntry */
bcpKey = LOCALE_ATTRIBUTE_KEY;
- bcpValue = NULL;
+ bcpValue = nullptr;
}
} else if (isBcpUExt) {
bcpKey = uloc_toUnicodeLocaleKey(key);
- if (bcpKey == NULL) {
+ if (bcpKey == nullptr) {
if (strict) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
break;
@@ -1379,7 +1388,7 @@ _appendKeywordsToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool st
/* we've checked buf is null-terminated above */
bcpValue = uloc_toUnicodeLocaleType(key, buf.data());
- if (bcpValue == NULL) {
+ if (bcpValue == nullptr) {
if (strict) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
break;
@@ -1441,7 +1450,7 @@ _appendKeywordsToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool st
/* create ExtensionListEntry */
ext = extPool.create();
- if (ext == NULL) {
+ if (ext == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
break;
}
@@ -1460,7 +1469,7 @@ _appendKeywordsToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool st
if (hadPosix) {
/* create ExtensionListEntry for POSIX */
ext = extPool.create();
- if (ext == NULL) {
+ if (ext == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -1472,7 +1481,7 @@ _appendKeywordsToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool st
}
}
- if (U_SUCCESS(*status) && (firstExt != NULL || firstAttr != NULL)) {
+ if (U_SUCCESS(*status) && (firstExt != nullptr || firstAttr != nullptr)) {
UBool startLDMLExtension = false;
for (ext = firstExt; ext; ext = ext->next) {
if (!startLDMLExtension && uprv_strlen(ext->key) > 1) {
@@ -1514,7 +1523,7 @@ _appendLDMLExtensionAsKeywords(const char* ldmlext, ExtensionListEntry** appendT
const char *pKwds; /* beginning of key-type pairs */
UBool variantExists = *posixVariant;
- ExtensionListEntry *kwdFirst = NULL; /* first LDML keyword */
+ ExtensionListEntry *kwdFirst = nullptr; /* first LDML keyword */
ExtensionListEntry *kwd, *nextKwd;
int32_t len;
@@ -1523,10 +1532,10 @@ _appendLDMLExtensionAsKeywords(const char* ldmlext, ExtensionListEntry** appendT
*posixVariant = false;
pTag = ldmlext;
- pKwds = NULL;
+ pKwds = nullptr;
{
- AttributeListEntry *attrFirst = NULL; /* first attribute */
+ AttributeListEntry *attrFirst = nullptr; /* first attribute */
AttributeListEntry *attr, *nextAttr;
char attrBuf[ULOC_KEYWORD_AND_VALUES_CAPACITY];
@@ -1546,7 +1555,7 @@ _appendLDMLExtensionAsKeywords(const char* ldmlext, ExtensionListEntry** appendT
/* add this attribute to the list */
attr = attrPool.create();
- if (attr == NULL) {
+ if (attr == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -1576,20 +1585,20 @@ _appendLDMLExtensionAsKeywords(const char* ldmlext, ExtensionListEntry** appendT
/* emit attributes as an LDML keyword, e.g. attribute=attr1-attr2 */
kwd = extPool.create();
- if (kwd == NULL) {
+ if (kwd == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
return;
}
icu::CharString* value = kwdBuf.create();
- if (value == NULL) {
+ if (value == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
return;
}
/* attribute subtags sorted in alphabetical order as type */
attr = attrFirst;
- while (attr != NULL) {
+ while (attr != nullptr) {
nextAttr = attr->next;
if (attr != attrFirst) {
value->append('-', *status);
@@ -1612,8 +1621,8 @@ _appendLDMLExtensionAsKeywords(const char* ldmlext, ExtensionListEntry** appendT
}
if (pKwds) {
- const char *pBcpKey = NULL; /* u extension key subtag */
- const char *pBcpType = NULL; /* beginning of u extension type subtag(s) */
+ const char *pBcpKey = nullptr; /* u extension key subtag */
+ const char *pBcpType = nullptr; /* beginning of u extension type subtag(s) */
int32_t bcpKeyLen = 0;
int32_t bcpTypeLen = 0;
UBool isDone = false;
@@ -1621,7 +1630,7 @@ _appendLDMLExtensionAsKeywords(const char* ldmlext, ExtensionListEntry** appendT
pTag = pKwds;
/* BCP47 representation of LDML key/type pairs */
while (!isDone) {
- const char *pNextBcpKey = NULL;
+ const char *pNextBcpKey = nullptr;
int32_t nextBcpKeyLen = 0;
UBool emitKeyword = false;
@@ -1639,7 +1648,7 @@ _appendLDMLExtensionAsKeywords(const char* ldmlext, ExtensionListEntry** appendT
bcpKeyLen = len;
}
} else {
- U_ASSERT(pBcpKey != NULL);
+ U_ASSERT(pBcpKey != nullptr);
/* within LDML type subtags */
if (pBcpType) {
bcpTypeLen += (len + 1);
@@ -1662,12 +1671,12 @@ _appendLDMLExtensionAsKeywords(const char* ldmlext, ExtensionListEntry** appendT
}
if (emitKeyword) {
- const char *pKey = NULL; /* LDML key */
- const char *pType = NULL; /* LDML type */
+ const char *pKey = nullptr; /* LDML key */
+ const char *pType = nullptr; /* LDML type */
char bcpKeyBuf[3]; /* BCP key length is always 2 for now */
- U_ASSERT(pBcpKey != NULL);
+ U_ASSERT(pBcpKey != nullptr);
if (bcpKeyLen >= (int32_t)sizeof(bcpKeyBuf)) {
/* the BCP key is invalid */
@@ -1681,7 +1690,7 @@ _appendLDMLExtensionAsKeywords(const char* ldmlext, ExtensionListEntry** appendT
/* u extension key to LDML key */
pKey = uloc_toLegacyKey(bcpKeyBuf);
- if (pKey == NULL) {
+ if (pKey == nullptr) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
@@ -1692,7 +1701,7 @@ _appendLDMLExtensionAsKeywords(const char* ldmlext, ExtensionListEntry** appendT
*/
T_CString_toLowerCase(bcpKeyBuf);
icu::CharString* key = kwdBuf.create(bcpKeyBuf, bcpKeyLen, *status);
- if (key == NULL) {
+ if (key == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -1715,7 +1724,7 @@ _appendLDMLExtensionAsKeywords(const char* ldmlext, ExtensionListEntry** appendT
/* BCP type to locale type */
pType = uloc_toLegacyType(pKey, bcpTypeBuf);
- if (pType == NULL) {
+ if (pType == nullptr) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
@@ -1727,7 +1736,7 @@ _appendLDMLExtensionAsKeywords(const char* ldmlext, ExtensionListEntry** appendT
/* normalize to lower case */
T_CString_toLowerCase(bcpTypeBuf);
icu::CharString* type = kwdBuf.create(bcpTypeBuf, bcpTypeLen, *status);
- if (type == NULL) {
+ if (type == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -1748,7 +1757,7 @@ _appendLDMLExtensionAsKeywords(const char* ldmlext, ExtensionListEntry** appendT
} else {
/* create an ExtensionListEntry for this keyword */
kwd = extPool.create();
- if (kwd == NULL) {
+ if (kwd == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -1763,15 +1772,15 @@ _appendLDMLExtensionAsKeywords(const char* ldmlext, ExtensionListEntry** appendT
}
pBcpKey = pNextBcpKey;
- bcpKeyLen = pNextBcpKey != NULL ? nextBcpKeyLen : 0;
- pBcpType = NULL;
+ bcpKeyLen = pNextBcpKey != nullptr ? nextBcpKeyLen : 0;
+ pBcpType = nullptr;
bcpTypeLen = 0;
}
}
}
kwd = kwdFirst;
- while (kwd != NULL) {
+ while (kwd != nullptr) {
nextKwd = kwd->next;
_addExtensionToList(appendTo, kwd, false);
kwd = nextKwd;
@@ -1783,7 +1792,7 @@ static void
_appendKeywords(ULanguageTag* langtag, icu::ByteSink& sink, UErrorCode* status) {
int32_t i, n;
int32_t len;
- ExtensionListEntry *kwdFirst = NULL;
+ ExtensionListEntry *kwdFirst = nullptr;
ExtensionListEntry *kwd;
const char *key, *type;
icu::MemoryPool<ExtensionListEntry> extPool;
@@ -1812,7 +1821,7 @@ _appendKeywords(ULanguageTag* langtag, icu::ByteSink& sink, UErrorCode* status)
}
} else {
kwd = extPool.create();
- if (kwd == NULL) {
+ if (kwd == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
break;
}
@@ -1830,7 +1839,7 @@ _appendKeywords(ULanguageTag* langtag, icu::ByteSink& sink, UErrorCode* status)
if ((int32_t)uprv_strlen(type) > 0) {
/* add private use as a keyword */
kwd = extPool.create();
- if (kwd == NULL) {
+ if (kwd == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
} else {
kwd->key = PRIVATEUSE_KEY;
@@ -1849,7 +1858,7 @@ _appendKeywords(ULanguageTag* langtag, icu::ByteSink& sink, UErrorCode* status)
sink.Append(_POSIX, len);
}
- if (U_SUCCESS(*status) && kwdFirst != NULL) {
+ if (U_SUCCESS(*status) && kwdFirst != nullptr) {
/* write out the sorted keywords */
UBool firstValue = true;
kwd = kwdFirst;
@@ -1879,11 +1888,8 @@ static void
_appendPrivateuseToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool strict, UBool hadPosix, UErrorCode* status) {
(void)hadPosix;
char buf[ULOC_FULLNAME_CAPACITY];
- char tmpAppend[ULOC_FULLNAME_CAPACITY];
UErrorCode tmpStatus = U_ZERO_ERROR;
int32_t len, i;
- int32_t reslen = 0;
- int32_t capacity = sizeof tmpAppend;
if (U_FAILURE(*status)) {
return;
@@ -1903,7 +1909,7 @@ _appendPrivateuseToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool
UBool firstValue = true;
UBool writeValue;
- pPriv = NULL;
+ pPriv = nullptr;
p = buf;
while (bNext) {
writeValue = false;
@@ -1913,7 +1919,7 @@ _appendPrivateuseToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool
} else {
*p = 0; /* terminate */
}
- if (pPriv != NULL) {
+ if (pPriv != nullptr) {
/* Private use in the canonical format is lowercase in BCP47 */
for (i = 0; *(pPriv + i) != 0; i++) {
*(pPriv + i) = uprv_tolower(*(pPriv + i));
@@ -1936,55 +1942,27 @@ _appendPrivateuseToLanguageTag(const char* localeID, icu::ByteSink& sink, UBool
}
if (writeValue) {
- if (reslen < capacity) {
- tmpAppend[reslen++] = SEP;
- }
+ sink.Append("-", 1);
if (firstValue) {
- if (reslen < capacity) {
- tmpAppend[reslen++] = *PRIVATEUSE_KEY;
- }
-
- if (reslen < capacity) {
- tmpAppend[reslen++] = SEP;
- }
-
- len = (int32_t)uprv_strlen(PRIVUSE_VARIANT_PREFIX);
- if (reslen < capacity) {
- uprv_memcpy(tmpAppend + reslen, PRIVUSE_VARIANT_PREFIX, uprv_min(len, capacity - reslen));
- }
- reslen += len;
-
- if (reslen < capacity) {
- tmpAppend[reslen++] = SEP;
- }
-
+ sink.Append(PRIVATEUSE_KEY, UPRV_LENGTHOF(PRIVATEUSE_KEY) - 1);
+ sink.Append("-", 1);
+ sink.Append(PRIVUSE_VARIANT_PREFIX, UPRV_LENGTHOF(PRIVUSE_VARIANT_PREFIX) - 1);
+ sink.Append("-", 1);
firstValue = false;
}
len = (int32_t)uprv_strlen(pPriv);
- if (reslen < capacity) {
- uprv_memcpy(tmpAppend + reslen, pPriv, uprv_min(len, capacity - reslen));
- }
- reslen += len;
+ sink.Append(pPriv, len);
}
}
/* reset private use starting position */
- pPriv = NULL;
- } else if (pPriv == NULL) {
+ pPriv = nullptr;
+ } else if (pPriv == nullptr) {
pPriv = p;
}
p++;
}
-
- if (U_FAILURE(*status)) {
- return;
- }
- }
-
- if (U_SUCCESS(*status)) {
- len = reslen;
- sink.Append(tmpAppend, len);
}
}
@@ -2029,12 +2007,12 @@ ultag_parse(const char* tag, int32_t tagLen, int32_t* parsedLen, UErrorCode* sta
UBool privateuseVar = false;
int32_t legacyLen = 0;
- if (parsedLen != NULL) {
+ if (parsedLen != nullptr) {
*parsedLen = 0;
}
if (U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
if (tagLen < 0) {
@@ -2043,9 +2021,9 @@ ultag_parse(const char* tag, int32_t tagLen, int32_t* parsedLen, UErrorCode* sta
/* copy the entire string */
tagBuf = (char*)uprv_malloc(tagLen + 1);
- if (tagBuf == NULL) {
+ if (tagBuf == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
if (tagLen > 0) {
@@ -2059,7 +2037,7 @@ ultag_parse(const char* tag, int32_t tagLen, int32_t* parsedLen, UErrorCode* sta
if (t.isNull()) {
uprv_free(tagBuf);
*status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
_initializeULanguageTag(t.getAlias());
t->buf = tagBuf;
@@ -2092,12 +2070,13 @@ ultag_parse(const char* tag, int32_t tagLen, int32_t* parsedLen, UErrorCode* sta
int32_t oldTagLength = tagLen;
if (tagLen < newTagLength) {
uprv_free(tagBuf);
- tagBuf = (char*)uprv_malloc(newTagLength + 1);
- if (tagBuf == NULL) {
+ // Change t->buf after the free and before return to avoid the second double free in
+ // the destructor of t when t is out of scope.
+ t->buf = tagBuf = (char*)uprv_malloc(newTagLength + 1);
+ if (tagBuf == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
- t->buf = tagBuf;
tagLen = newTagLength;
}
parsedLenDelta = checkLegacyLen - replacementLen;
@@ -2154,9 +2133,9 @@ ultag_parse(const char* tag, int32_t tagLen, int32_t* parsedLen, UErrorCode* sta
next = LANG | PRIV;
pNext = pLastGoodPosition = tagBuf;
extlangIdx = 0;
- pExtension = NULL;
- pExtValueSubtag = NULL;
- pExtValueSubtagEnd = NULL;
+ pExtension = nullptr;
+ pExtValueSubtag = nullptr;
+ pExtValueSubtagEnd = nullptr;
while (pNext) {
char *pSep;
@@ -2173,7 +2152,7 @@ ultag_parse(const char* tag, int32_t tagLen, int32_t* parsedLen, UErrorCode* sta
}
if (*pSep == 0) {
/* last subtag */
- pNext = NULL;
+ pNext = nullptr;
} else {
pNext = pSep + 1;
}
@@ -2244,9 +2223,9 @@ ultag_parse(const char* tag, int32_t tagLen, int32_t* parsedLen, UErrorCode* sta
UBool isAdded;
var = (VariantListEntry*)uprv_malloc(sizeof(VariantListEntry));
- if (var == NULL) {
+ if (var == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
*pSep = 0;
var->variant = T_CString_toUpperCase(pSubtag);
@@ -2263,11 +2242,11 @@ ultag_parse(const char* tag, int32_t tagLen, int32_t* parsedLen, UErrorCode* sta
}
if (next & EXTS) {
if (_isExtensionSingleton(pSubtag, subtagLen)) {
- if (pExtension != NULL) {
- if (pExtValueSubtag == NULL || pExtValueSubtagEnd == NULL) {
+ if (pExtension != nullptr) {
+ if (pExtValueSubtag == nullptr || pExtValueSubtagEnd == nullptr) {
/* the previous extension is incomplete */
uprv_free(pExtension);
- pExtension = NULL;
+ pExtension = nullptr;
break;
}
@@ -2281,27 +2260,27 @@ ultag_parse(const char* tag, int32_t tagLen, int32_t* parsedLen, UErrorCode* sta
} else {
/* stop parsing here */
uprv_free(pExtension);
- pExtension = NULL;
+ pExtension = nullptr;
break;
}
}
/* create a new extension */
pExtension = (ExtensionListEntry*)uprv_malloc(sizeof(ExtensionListEntry));
- if (pExtension == NULL) {
+ if (pExtension == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
*pSep = 0;
pExtension->key = T_CString_toLowerCase(pSubtag);
- pExtension->value = NULL; /* will be set later */
+ pExtension->value = nullptr; /* will be set later */
/*
* reset the start and the end location of extension value
* subtags for this extension
*/
- pExtValueSubtag = NULL;
- pExtValueSubtagEnd = NULL;
+ pExtValueSubtag = nullptr;
+ pExtValueSubtagEnd = nullptr;
next = EXTV;
continue;
@@ -2309,7 +2288,7 @@ ultag_parse(const char* tag, int32_t tagLen, int32_t* parsedLen, UErrorCode* sta
}
if (next & EXTV) {
if (_isExtensionSubtag(pSubtag, subtagLen)) {
- if (pExtValueSubtag == NULL) {
+ if (pExtValueSubtag == nullptr) {
/* if the start position of this extension's value is not yet,
this one is the first value subtag */
pExtValueSubtag = pSubtag;
@@ -2326,12 +2305,12 @@ ultag_parse(const char* tag, int32_t tagLen, int32_t* parsedLen, UErrorCode* sta
if (uprv_tolower(*pSubtag) == PRIVATEUSE && subtagLen == 1) {
char *pPrivuseVal;
- if (pExtension != NULL) {
+ if (pExtension != nullptr) {
/* Process the last extension */
- if (pExtValueSubtag == NULL || pExtValueSubtagEnd == NULL) {
+ if (pExtValueSubtag == nullptr || pExtValueSubtagEnd == nullptr) {
/* the previous extension is incomplete */
uprv_free(pExtension);
- pExtension = NULL;
+ pExtension = nullptr;
break;
} else {
/* terminate the previous extension value */
@@ -2341,18 +2320,18 @@ ultag_parse(const char* tag, int32_t tagLen, int32_t* parsedLen, UErrorCode* sta
/* insert the extension to the list */
if (_addExtensionToList(&(t->extensions), pExtension, false)) {
pLastGoodPosition = pExtValueSubtagEnd;
- pExtension = NULL;
+ pExtension = nullptr;
} else {
/* stop parsing here */
uprv_free(pExtension);
- pExtension = NULL;
+ pExtension = nullptr;
break;
}
}
}
/* The rest of part will be private use value subtags */
- if (pNext == NULL) {
+ if (pNext == nullptr) {
/* empty private use subtag */
break;
}
@@ -2371,7 +2350,7 @@ ultag_parse(const char* tag, int32_t tagLen, int32_t* parsedLen, UErrorCode* sta
}
if (*pSep == 0) {
/* last subtag */
- pNext = NULL;
+ pNext = nullptr;
} else {
pNext = pSep + 1;
}
@@ -2407,9 +2386,9 @@ ultag_parse(const char* tag, int32_t tagLen, int32_t* parsedLen, UErrorCode* sta
break;
}
- if (pExtension != NULL) {
+ if (pExtension != nullptr) {
/* Process the last extension */
- if (pExtValueSubtag == NULL || pExtValueSubtagEnd == NULL) {
+ if (pExtValueSubtag == nullptr || pExtValueSubtagEnd == nullptr) {
/* the previous extension is incomplete */
uprv_free(pExtension);
} else {
@@ -2425,7 +2404,7 @@ ultag_parse(const char* tag, int32_t tagLen, int32_t* parsedLen, UErrorCode* sta
}
}
- if (parsedLen != NULL) {
+ if (parsedLen != nullptr) {
*parsedLen = (int32_t)(pLastGoodPosition - t->buf + parsedLenDelta);
}
@@ -2440,7 +2419,7 @@ ultag_parse(const char* tag, int32_t tagLen, int32_t* parsedLen, UErrorCode* sta
static void
ultag_close(ULanguageTag* langtag) {
- if (langtag == NULL) {
+ if (langtag == nullptr) {
return;
}
@@ -2476,7 +2455,7 @@ ultag_getLanguage(const ULanguageTag* langtag) {
static const char*
ultag_getJDKLanguage(const ULanguageTag* langtag) {
int32_t i;
- for (i = 0; DEPRECATEDLANGS[i] != NULL; i += 2) {
+ for (i = 0; DEPRECATEDLANGS[i] != nullptr; i += 2) {
if (uprv_compareInvCharsAsAscii(DEPRECATEDLANGS[i], langtag->language) == 0) {
return DEPRECATEDLANGS[i + 1];
}
@@ -2490,7 +2469,7 @@ ultag_getExtlang(const ULanguageTag* langtag, int32_t idx) {
if (idx >= 0 && idx < MAXEXTLANG) {
return langtag->extlang[idx];
}
- return NULL;
+ return nullptr;
}
static int32_t
@@ -2517,7 +2496,7 @@ ultag_getRegion(const ULanguageTag* langtag) {
static const char*
ultag_getVariant(const ULanguageTag* langtag, int32_t idx) {
- const char *var = NULL;
+ const char *var = nullptr;
VariantListEntry *cur = langtag->variants;
int32_t i = 0;
while (cur) {
@@ -2536,7 +2515,7 @@ ultag_getVariantsSize(const ULanguageTag* langtag) {
int32_t size = 0;
VariantListEntry *cur = langtag->variants;
while (true) {
- if (cur == NULL) {
+ if (cur == nullptr) {
break;
}
size++;
@@ -2547,7 +2526,7 @@ ultag_getVariantsSize(const ULanguageTag* langtag) {
static const char*
ultag_getExtensionKey(const ULanguageTag* langtag, int32_t idx) {
- const char *key = NULL;
+ const char *key = nullptr;
ExtensionListEntry *cur = langtag->extensions;
int32_t i = 0;
while (cur) {
@@ -2563,7 +2542,7 @@ ultag_getExtensionKey(const ULanguageTag* langtag, int32_t idx) {
static const char*
ultag_getExtensionValue(const ULanguageTag* langtag, int32_t idx) {
- const char *val = NULL;
+ const char *val = nullptr;
ExtensionListEntry *cur = langtag->extensions;
int32_t i = 0;
while (cur) {
@@ -2582,7 +2561,7 @@ ultag_getExtensionsSize(const ULanguageTag* langtag) {
int32_t size = 0;
ExtensionListEntry *cur = langtag->extensions;
while (true) {
- if (cur == NULL) {
+ if (cur == nullptr) {
break;
}
size++;
@@ -2646,53 +2625,18 @@ ulocimp_toLanguageTag(const char* localeID,
UBool strict,
UErrorCode* status) {
icu::CharString canonical;
- int32_t reslen;
UErrorCode tmpStatus = U_ZERO_ERROR;
UBool hadPosix = false;
const char* pKeywordStart;
/* Note: uloc_canonicalize returns "en_US_POSIX" for input locale ID "". See #6835 */
- int32_t resultCapacity = static_cast<int32_t>(uprv_strlen(localeID));
- if (resultCapacity > 0) {
- char* buffer;
-
- for (;;) {
- buffer = canonical.getAppendBuffer(
- /*minCapacity=*/resultCapacity,
- /*desiredCapacityHint=*/resultCapacity,
- resultCapacity,
- tmpStatus);
-
- if (U_FAILURE(tmpStatus)) {
- *status = tmpStatus;
- return;
- }
-
- reslen =
- uloc_canonicalize(localeID, buffer, resultCapacity, &tmpStatus);
-
- if (tmpStatus != U_BUFFER_OVERFLOW_ERROR) {
- break;
- }
-
- resultCapacity = reslen;
- tmpStatus = U_ZERO_ERROR;
- }
-
- if (U_FAILURE(tmpStatus)) {
- *status = U_ILLEGAL_ARGUMENT_ERROR;
- return;
- }
-
- canonical.append(buffer, reslen, tmpStatus);
- if (tmpStatus == U_STRING_NOT_TERMINATED_WARNING) {
- tmpStatus = U_ZERO_ERROR; // Terminators provided by CharString.
- }
-
- if (U_FAILURE(tmpStatus)) {
- *status = tmpStatus;
- return;
- }
+ {
+ icu::CharStringByteSink canonicalSink(&canonical);
+ ulocimp_canonicalize(localeID, canonicalSink, &tmpStatus);
+ }
+ if (U_FAILURE(tmpStatus)) {
+ *status = tmpStatus;
+ return;
}
/* For handling special case - private use only tag */
diff --git a/Build/source/libs/icu/icu-src/source/common/ulocale.cpp b/Build/source/libs/icu/icu-src/source/common/ulocale.cpp
new file mode 100644
index 00000000000..471ef0ce79a
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/common/ulocale.cpp
@@ -0,0 +1,99 @@
+// © 2023 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+//
+#include "unicode/errorcode.h"
+#include "unicode/stringpiece.h"
+#include "unicode/utypes.h"
+#include "unicode/ustring.h"
+#include "unicode/ulocale.h"
+#include "unicode/locid.h"
+
+#include "charstr.h"
+#include "cmemory.h"
+#include "ustr_imp.h"
+
+U_NAMESPACE_USE
+#define EXTERNAL(i) (reinterpret_cast<ULocale*>(i))
+#define CONST_INTERNAL(e) (reinterpret_cast<const icu::Locale*>(e))
+#define INTERNAL(e) (reinterpret_cast<icu::Locale*>(e))
+
+ULocale*
+ulocale_openForLocaleID(const char* localeID, int32_t length, UErrorCode* err) {
+ CharString str(length < 0 ? StringPiece(localeID) : StringPiece(localeID, length), *err);
+ if (U_FAILURE(*err)) return nullptr;
+ return EXTERNAL(icu::Locale::createFromName(str.data()).clone());
+}
+
+ULocale*
+ulocale_openForLanguageTag(const char* tag, int32_t length, UErrorCode* err) {
+ Locale l = icu::Locale::forLanguageTag(length < 0 ? StringPiece(tag) : StringPiece(tag, length), *err);
+ if (U_FAILURE(*err)) return nullptr;
+ return EXTERNAL(l.clone());
+}
+
+void
+ulocale_close(ULocale* locale) {
+ delete INTERNAL(locale);
+}
+
+#define IMPL_ULOCALE_STRING_GETTER(N1, N2) \
+const char* ulocale_get ## N1(const ULocale* locale) { \
+ if (locale == nullptr) return nullptr; \
+ return CONST_INTERNAL(locale)->get ## N2(); \
+}
+
+#define IMPL_ULOCALE_STRING_IDENTICAL_GETTER(N) IMPL_ULOCALE_STRING_GETTER(N, N)
+
+#define IMPL_ULOCALE_GET_KEYWORD_VALUE(N) \
+int32_t ulocale_get ##N ( \
+ const ULocale* locale, const char* keyword, int32_t keywordLength, \
+ char* valueBuffer, int32_t bufferCapacity, UErrorCode *err) { \
+ if (U_FAILURE(*err)) return 0; \
+ if (locale == nullptr) { \
+ *err = U_ILLEGAL_ARGUMENT_ERROR; \
+ return 0; \
+ } \
+ CheckedArrayByteSink sink(valueBuffer, bufferCapacity); \
+ CONST_INTERNAL(locale)->get ## N( \
+ keywordLength < 0 ? StringPiece(keyword) : StringPiece(keyword, keywordLength), \
+ sink, *err); \
+ int32_t reslen = sink.NumberOfBytesAppended(); \
+ if (U_FAILURE(*err)) { \
+ return reslen; \
+ } \
+ if (sink.Overflowed()) { \
+ *err = U_BUFFER_OVERFLOW_ERROR; \
+ } else { \
+ u_terminateChars(valueBuffer, bufferCapacity, reslen, err); \
+ } \
+ return reslen; \
+}
+
+#define IMPL_ULOCALE_GET_KEYWORDS(N) \
+UEnumeration* ulocale_get ## N(const ULocale* locale, UErrorCode *err) { \
+ if (U_FAILURE(*err)) return nullptr; \
+ if (locale == nullptr) { \
+ *err = U_ILLEGAL_ARGUMENT_ERROR; \
+ return nullptr; \
+ } \
+ return uenum_openFromStringEnumeration( \
+ CONST_INTERNAL(locale)->create ## N(*err), err); \
+}
+
+IMPL_ULOCALE_STRING_IDENTICAL_GETTER(Language)
+IMPL_ULOCALE_STRING_IDENTICAL_GETTER(Script)
+IMPL_ULOCALE_STRING_GETTER(Region, Country)
+IMPL_ULOCALE_STRING_IDENTICAL_GETTER(Variant)
+IMPL_ULOCALE_STRING_GETTER(LocaleID, Name)
+IMPL_ULOCALE_STRING_IDENTICAL_GETTER(BaseName)
+IMPL_ULOCALE_GET_KEYWORD_VALUE(KeywordValue)
+IMPL_ULOCALE_GET_KEYWORD_VALUE(UnicodeKeywordValue)
+IMPL_ULOCALE_GET_KEYWORDS(Keywords)
+IMPL_ULOCALE_GET_KEYWORDS(UnicodeKeywords)
+
+bool ulocale_isBogus(const ULocale* locale) {
+ if (locale == nullptr) return false;
+ return CONST_INTERNAL(locale)->isBogus();
+}
+
+/*eof*/
diff --git a/Build/source/libs/icu/icu-src/source/common/ulocbuilder.cpp b/Build/source/libs/icu/icu-src/source/common/ulocbuilder.cpp
new file mode 100644
index 00000000000..a5af73bef49
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/common/ulocbuilder.cpp
@@ -0,0 +1,156 @@
+// © 2023 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include <utility>
+
+#include "unicode/bytestream.h"
+#include "unicode/localebuilder.h"
+#include "unicode/locid.h"
+#include "unicode/stringpiece.h"
+#include "unicode/umachine.h"
+#include "unicode/ulocbuilder.h"
+#include "cstring.h"
+#include "ustr_imp.h"
+
+using icu::CheckedArrayByteSink;
+using icu::StringPiece;
+
+#define EXTERNAL(i) (reinterpret_cast<ULocaleBuilder*>(i))
+#define INTERNAL(e) (reinterpret_cast<icu::LocaleBuilder*>(e))
+#define CONST_INTERNAL(e) (reinterpret_cast<const icu::LocaleBuilder*>(e))
+
+ULocaleBuilder* ulocbld_open() {
+ return EXTERNAL(new icu::LocaleBuilder());
+}
+
+void ulocbld_close(ULocaleBuilder* builder) {
+ if (builder == nullptr) return;
+ delete INTERNAL(builder);
+}
+
+void ulocbld_setLocale(ULocaleBuilder* builder, const char* locale, int32_t length) {
+ if (builder == nullptr) return;
+ icu::Locale l;
+ if (length < 0 || locale[length] == '\0') {
+ l = icu::Locale(locale);
+ } else {
+ if (length >= ULOC_FULLNAME_CAPACITY) {
+ l.setToBogus();
+ } else {
+ // locale is not null termined but Locale API require one.
+ // Create a null termined version in buf.
+ char buf[ULOC_FULLNAME_CAPACITY];
+ uprv_memcpy(buf, locale, length);
+ buf[length] = '\0';
+ l = icu::Locale(buf);
+ }
+ }
+ INTERNAL(builder)->setLocale(l);
+}
+
+void
+ulocbld_adoptULocale(ULocaleBuilder* builder, ULocale* locale) {
+ if (builder == nullptr) return;
+ INTERNAL(builder)->setLocale(*(reinterpret_cast<const icu::Locale*>(locale)));
+ ulocale_close(locale);
+}
+
+#define STRING_PIECE(s, l) ((l)<0 ? StringPiece(s) : StringPiece((s), (l)))
+
+#define IMPL_ULOCBLD_SETTER(N) \
+void ulocbld_##N(ULocaleBuilder* bld, const char* s, int32_t l) { \
+ if (bld == nullptr) return; \
+ INTERNAL(bld)->N(STRING_PIECE(s,l)); \
+}
+
+IMPL_ULOCBLD_SETTER(setLanguageTag)
+IMPL_ULOCBLD_SETTER(setLanguage)
+IMPL_ULOCBLD_SETTER(setScript)
+IMPL_ULOCBLD_SETTER(setRegion)
+IMPL_ULOCBLD_SETTER(setVariant)
+IMPL_ULOCBLD_SETTER(addUnicodeLocaleAttribute)
+IMPL_ULOCBLD_SETTER(removeUnicodeLocaleAttribute)
+
+void ulocbld_setExtension(ULocaleBuilder* builder, char key, const char* value, int32_t length) {
+ if (builder == nullptr) return;
+ INTERNAL(builder)->setExtension(key, STRING_PIECE(value, length));
+}
+
+void ulocbld_setUnicodeLocaleKeyword(
+ ULocaleBuilder* builder, const char* key, int32_t keyLength,
+ const char* type, int32_t typeLength) {
+ if (builder == nullptr) return;
+ INTERNAL(builder)->setUnicodeLocaleKeyword(
+ STRING_PIECE(key, keyLength), STRING_PIECE(type, typeLength));
+}
+
+void ulocbld_clear(ULocaleBuilder* builder) {
+ if (builder == nullptr) return;
+ INTERNAL(builder)->clear();
+}
+
+void ulocbld_clearExtensions(ULocaleBuilder* builder) {
+ if (builder == nullptr) return;
+ INTERNAL(builder)->clearExtensions();
+}
+
+
+ULocale* ulocbld_buildULocale(ULocaleBuilder* builder, UErrorCode* err) {
+ if (builder == nullptr) {
+ *err = U_ILLEGAL_ARGUMENT_ERROR;
+ return nullptr;
+ }
+ icu::Locale l = INTERNAL(builder)->build(*err);
+ if (U_FAILURE(*err)) return nullptr;
+ icu::Locale* r = l.clone();
+ if (r == nullptr) {
+ *err = U_MEMORY_ALLOCATION_ERROR;
+ return nullptr;
+ }
+ return reinterpret_cast<ULocale*>(r);
+}
+
+int32_t ulocbld_buildLocaleID(ULocaleBuilder* builder,
+ char* buffer, int32_t bufferCapacity, UErrorCode* err) {
+ if (builder == nullptr) {
+ *err = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
+ icu::Locale l = INTERNAL(builder)->build(*err);
+ if (U_FAILURE(*err)) return 0;
+ int32_t length = (int32_t)(uprv_strlen(l.getName()));
+ if (0 < length && length <= bufferCapacity) {
+ uprv_memcpy(buffer, l.getName(), length);
+ }
+ return u_terminateChars(buffer, bufferCapacity, length, err);
+}
+
+int32_t ulocbld_buildLanguageTag(ULocaleBuilder* builder,
+ char* buffer, int32_t bufferCapacity, UErrorCode* err) {
+ if (builder == nullptr) {
+ *err = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
+ icu::Locale l = INTERNAL(builder)->build(*err);
+ if (U_FAILURE(*err)) return 0;
+ CheckedArrayByteSink sink(buffer, bufferCapacity);
+ l.toLanguageTag(sink, *err);
+ int32_t reslen = sink.NumberOfBytesAppended();
+ if (U_FAILURE(*err)) {
+ return reslen;
+ }
+ if (sink.Overflowed()) {
+ *err = U_BUFFER_OVERFLOW_ERROR;
+ } else {
+ u_terminateChars(buffer, bufferCapacity, reslen, err);
+ }
+ return reslen;
+}
+
+UBool ulocbld_copyErrorTo(const ULocaleBuilder* builder, UErrorCode *outErrorCode) {
+ if (builder == nullptr) {
+ *outErrorCode = U_ILLEGAL_ARGUMENT_ERROR;
+ return true;
+ }
+ return CONST_INTERNAL(builder)->copyErrorTo(*outErrorCode);
+}
diff --git a/Build/source/libs/icu/icu-src/source/common/ulocimp.h b/Build/source/libs/icu/icu-src/source/common/ulocimp.h
index 755e02c6b88..efa0fa72e6a 100644
--- a/Build/source/libs/icu/icu-src/source/common/ulocimp.h
+++ b/Build/source/libs/icu/icu-src/source/common/ulocimp.h
@@ -92,6 +92,11 @@ ulocimp_getKeywordValue(const char* localeID,
icu::ByteSink& sink,
UErrorCode* status);
+U_CAPI void U_EXPORT2
+ulocimp_getParent(const char* localeID,
+ icu::ByteSink& sink,
+ UErrorCode* err);
+
/**
* Writes a well-formed language tag for this locale ID.
*
@@ -237,6 +242,7 @@ ulocimp_addLikelySubtags(const char* localeID,
*
* @param localeID The locale to minimize
* @param sink The output sink receiving the maximized locale
+ * @param favorScript favor to keep script if true, region if false.
* @param err Error information if minimizing the locale failed. If the length
* of the localeID and the null-terminator is greater than the maximum allowed size,
* or the localeId is not well-formed, the error code is U_ILLEGAL_ARGUMENT_ERROR.
@@ -245,6 +251,7 @@ ulocimp_addLikelySubtags(const char* localeID,
U_CAPI void U_EXPORT2
ulocimp_minimizeSubtags(const char* localeID,
icu::ByteSink& sink,
+ bool favorScript,
UErrorCode* err);
U_CAPI const char * U_EXPORT2
@@ -307,72 +314,4 @@ U_CAPI const char* const* ulocimp_getKnownCanonicalizedLocaleForTest(int32_t* le
// Return true if the value is already canonicalized.
U_CAPI bool ulocimp_isCanonicalizedLocaleForTest(const char* localeName);
-/**
- * A utility class for handling locale IDs that may be longer than ULOC_FULLNAME_CAPACITY.
- * This encompasses all of the logic to allocate a temporary locale ID buffer on the stack,
- * and then, if it's not big enough, reallocate it on the heap and try again.
- *
- * You use it like this:
- * UErrorCode err = U_ZERO_ERROR;
- *
- * PreflightingLocaleIDBuffer tempBuffer;
- * do {
- * tempBuffer.requestedCapacity = uloc_doSomething(localeID, tempBuffer.getBuffer(), tempBuffer.getCapacity(), &err);
- * } while (tempBuffer.needToTryAgain(&err));
- * if (U_SUCCESS(err)) {
- * uloc_doSomethingWithTheResult(tempBuffer.getBuffer());
- * }
- */
-class PreflightingLocaleIDBuffer {
-private:
- char stackBuffer[ULOC_FULLNAME_CAPACITY];
- char* heapBuffer = nullptr;
- int32_t capacity = ULOC_FULLNAME_CAPACITY;
-
-public:
- int32_t requestedCapacity = ULOC_FULLNAME_CAPACITY;
-
- // No heap allocation. Use only on the stack.
- static void* U_EXPORT2 operator new(size_t) U_NOEXCEPT = delete;
- static void* U_EXPORT2 operator new[](size_t) U_NOEXCEPT = delete;
-#if U_HAVE_PLACEMENT_NEW
- static void* U_EXPORT2 operator new(size_t, void*) U_NOEXCEPT = delete;
-#endif
-
- PreflightingLocaleIDBuffer() {}
-
- ~PreflightingLocaleIDBuffer() { uprv_free(heapBuffer); }
-
- char* getBuffer() {
- if (heapBuffer == nullptr) {
- return stackBuffer;
- } else {
- return heapBuffer;
- }
- }
-
- int32_t getCapacity() {
- return capacity;
- }
-
- bool needToTryAgain(UErrorCode* err) {
- if (heapBuffer != nullptr) {
- return false;
- }
-
- if (*err == U_BUFFER_OVERFLOW_ERROR || *err == U_STRING_NOT_TERMINATED_WARNING) {
- int32_t newCapacity = requestedCapacity + 2; // one for the terminating null, one just for paranoia
- heapBuffer = static_cast<char*>(uprv_malloc(newCapacity));
- if (heapBuffer == nullptr) {
- *err = U_MEMORY_ALLOCATION_ERROR;
- } else {
- *err = U_ZERO_ERROR;
- capacity = newCapacity;
- }
- return U_SUCCESS(*err);
- }
- return false;
- }
-};
-
#endif
diff --git a/Build/source/libs/icu/icu-src/source/common/umapfile.cpp b/Build/source/libs/icu/icu-src/source/common/umapfile.cpp
index 145582ea97a..faa6d807868 100644
--- a/Build/source/libs/icu/icu-src/source/common/umapfile.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/umapfile.cpp
@@ -147,7 +147,7 @@ typedef HANDLE MemoryMap;
// Convert from UTF-8 string to UTF-16 string.
wchar_t utf16Path[MAX_PATH];
int32_t pathUtf16Len = 0;
- u_strFromUTF8(reinterpret_cast<UChar*>(utf16Path), static_cast<int32_t>(UPRV_LENGTHOF(utf16Path)), &pathUtf16Len, path, -1, status);
+ u_strFromUTF8(reinterpret_cast<char16_t*>(utf16Path), static_cast<int32_t>(UPRV_LENGTHOF(utf16Path)), &pathUtf16Len, path, -1, status);
if (U_FAILURE(*status)) {
return false;
@@ -171,7 +171,7 @@ typedef HANDLE MemoryMap;
return false;
}
- // Note: We use NULL/nullptr for lpAttributes parameter below.
+ // Note: We use nullptr/nullptr for lpAttributes parameter below.
// This means our handle cannot be inherited and we will get the default security descriptor.
/* create an unnamed Windows file-mapping object for the specified file */
map = CreateFileMappingW(file, nullptr, PAGE_READONLY, 0, 0, nullptr);
diff --git a/Build/source/libs/icu/icu-src/source/common/unames.cpp b/Build/source/libs/icu/icu-src/source/common/unames.cpp
index b0ac991e1ba..1b3192bf25e 100644
--- a/Build/source/libs/icu/icu-src/source/common/unames.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/unames.cpp
@@ -101,10 +101,10 @@ typedef struct {
UChar32 code;
} FindName;
-#define DO_FIND_NAME NULL
+#define DO_FIND_NAME nullptr
-static UDataMemory *uCharNamesData=NULL;
-static UCharNames *uCharNames=NULL;
+static UDataMemory *uCharNamesData=nullptr;
+static UCharNames *uCharNames=nullptr;
static icu::UInitOnce gCharNamesInitOnce {};
/*
@@ -162,14 +162,14 @@ static const char * const charCatNames[U_CHAR_EXTENDED_CATEGORY_COUNT] = {
/* implementation ----------------------------------------------------------- */
-static UBool U_CALLCONV unames_cleanup(void)
+static UBool U_CALLCONV unames_cleanup()
{
if(uCharNamesData) {
udata_close(uCharNamesData);
- uCharNamesData = NULL;
+ uCharNamesData = nullptr;
}
if(uCharNames) {
- uCharNames = NULL;
+ uCharNames = nullptr;
}
gCharNamesInitOnce.reset();
gMaxNameLength=0;
@@ -193,12 +193,12 @@ isAcceptable(void * /*context*/,
static void U_CALLCONV
loadCharNames(UErrorCode &status) {
- U_ASSERT(uCharNamesData == NULL);
- U_ASSERT(uCharNames == NULL);
+ U_ASSERT(uCharNamesData == nullptr);
+ U_ASSERT(uCharNames == nullptr);
- uCharNamesData = udata_openChoice(NULL, DATA_TYPE, DATA_NAME, isAcceptable, NULL, &status);
+ uCharNamesData = udata_openChoice(nullptr, DATA_TYPE, DATA_NAME, isAcceptable, nullptr, &status);
if(U_FAILURE(status)) {
- uCharNamesData = NULL;
+ uCharNamesData = nullptr;
} else {
uCharNames = (UCharNames *)udata_getMemory(uCharNamesData);
}
@@ -801,7 +801,7 @@ writeFactorSuffix(const uint16_t *factors, uint16_t count,
/* write each element */
for(;;) {
- if(elementBases!=NULL) {
+ if(elementBases!=nullptr) {
*elementBases++=s;
}
@@ -811,7 +811,7 @@ writeFactorSuffix(const uint16_t *factors, uint16_t count,
while(*s++!=0) {}
--factor;
}
- if(elements!=NULL) {
+ if(elements!=nullptr) {
*elements++=s;
}
@@ -913,7 +913,7 @@ getAlgName(AlgorithmicRange *range, uint32_t code, UCharNameChoice nameChoice,
}
bufferPos+=writeFactorSuffix(factors, count,
- s, code-range->start, indexes, NULL, NULL, buffer, bufferLength);
+ s, code-range->start, indexes, nullptr, nullptr, buffer, bufferLength);
break;
}
default:
@@ -1319,7 +1319,7 @@ calcNameSetLength(const uint16_t *tokens, uint16_t tokenCount, const uint8_t *to
++length;
} else {
/* count token word */
- if(tokenLengths!=NULL) {
+ if(tokenLengths!=nullptr) {
/* use cached token length */
tokenLength=tokenLengths[c];
if(tokenLength==0) {
@@ -1354,7 +1354,7 @@ calcGroupNameSetsLengths(int32_t maxNameLength) {
int32_t groupCount, lineNumber, length;
tokenLengths=(int8_t *)uprv_malloc(tokenCount);
- if(tokenLengths!=NULL) {
+ if(tokenLengths!=nullptr) {
uprv_memset(tokenLengths, 0, tokenCount);
}
@@ -1402,7 +1402,7 @@ calcGroupNameSetsLengths(int32_t maxNameLength) {
--groupCount;
}
- if(tokenLengths!=NULL) {
+ if(tokenLengths!=nullptr) {
uprv_free(tokenLengths);
}
@@ -1456,10 +1456,10 @@ u_charName(UChar32 code, UCharNameChoice nameChoice,
int32_t length;
/* check the argument values */
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return 0;
} else if(nameChoice>=U_CHAR_NAME_CHOICE_COUNT ||
- bufferLength<0 || (bufferLength>0 && buffer==NULL)
+ bufferLength<0 || (bufferLength>0 && buffer==nullptr)
) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
@@ -1505,9 +1505,9 @@ u_getISOComment(UChar32 /*c*/,
char *dest, int32_t destCapacity,
UErrorCode *pErrorCode) {
/* check the argument values */
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return 0;
- } else if(destCapacity<0 || (destCapacity>0 && dest==NULL)) {
+ } else if(destCapacity<0 || (destCapacity>0 && dest==nullptr)) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -1529,11 +1529,11 @@ u_charFromName(UCharNameChoice nameChoice,
char c0;
static constexpr UChar32 error = 0xffff; /* Undefined, but use this for backwards compatibility. */
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return error;
}
- if(nameChoice>=U_CHAR_NAME_CHOICE_COUNT || name==NULL || *name==0) {
+ if(nameChoice>=U_CHAR_NAME_CHOICE_COUNT || name==nullptr || *name==0) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return error;
}
@@ -1641,11 +1641,11 @@ u_enumCharNames(UChar32 start, UChar32 limit,
uint32_t *p;
uint32_t i;
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return;
}
- if(nameChoice>=U_CHAR_NAME_CHOICE_COUNT || fn==NULL) {
+ if(nameChoice>=U_CHAR_NAME_CHOICE_COUNT || fn==nullptr) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return;
}
@@ -1716,7 +1716,7 @@ uprv_getMaxCharNameLength() {
*/
static void
charSetToUSet(uint32_t cset[8], const USetAdder *sa) {
- UChar us[256];
+ char16_t us[256];
char cs[256];
int32_t i, length;
@@ -1736,12 +1736,12 @@ charSetToUSet(uint32_t cset[8], const USetAdder *sa) {
}
}
- /* convert the char string to a UChar string */
+ /* convert the char string to a char16_t string */
u_charsToUChars(cs, us, length);
- /* add each UChar to the USet */
+ /* add each char16_t to the USet */
for(i=0; i<length; ++i) {
- if(us[i]!=0 || cs[i]==0) { /* non-invariant chars become (UChar)0 */
+ if(us[i]!=0 || cs[i]==0) { /* non-invariant chars become (char16_t)0 */
sa->add(sa->set, us[i]);
}
}
@@ -1850,7 +1850,7 @@ uchar_swapNames(const UDataSwapper *ds,
/* udata_swapDataHeader checks the arguments */
headerSize=udata_swapDataHeader(ds, inData, length, outData, pErrorCode);
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return 0;
}
@@ -1872,7 +1872,7 @@ uchar_swapNames(const UDataSwapper *ds,
}
inBytes=(const uint8_t *)inData+headerSize;
- outBytes=(uint8_t *)outData+headerSize;
+ outBytes=(outData == nullptr) ? nullptr : (uint8_t *)outData+headerSize;
if(length<0) {
algNamesOffset=ds->readUInt32(((const uint32_t *)inBytes)[3]);
} else {
@@ -1954,7 +1954,7 @@ uchar_swapNames(const UDataSwapper *ds,
* go through a temporary array to support in-place swapping
*/
temp=(uint16_t *)uprv_malloc(tokenCount*2);
- if(temp==NULL) {
+ if(temp==nullptr) {
udata_printError(ds, "out of memory swapping %u unames.icu tokens\n",
tokenCount);
*pErrorCode=U_MEMORY_ALLOCATION_ERROR;
diff --git a/Build/source/libs/icu/icu-src/source/common/unicode/appendable.h b/Build/source/libs/icu/icu-src/source/common/unicode/appendable.h
index f77df88e39c..0e37f4562a5 100644
--- a/Build/source/libs/icu/icu-src/source/common/unicode/appendable.h
+++ b/Build/source/libs/icu/icu-src/source/common/unicode/appendable.h
@@ -79,7 +79,7 @@ public:
/**
* Appends a string.
* The default implementation calls appendCodeUnit(char16_t) for each code unit.
- * @param s string, must not be NULL if length!=0
+ * @param s string, must not be nullptr if length!=0
* @param length string length, or -1 if NUL-terminated
* @return true if the operation succeeded
* @stable ICU 4.8
@@ -186,7 +186,7 @@ public:
/**
* Appends a string to the UnicodeString.
- * @param s string, must not be NULL if length!=0
+ * @param s string, must not be nullptr if length!=0
* @param length string length, or -1 if NUL-terminated
* @return true if the operation succeeded
* @stable ICU 4.8
diff --git a/Build/source/libs/icu/icu-src/source/common/unicode/brkiter.h b/Build/source/libs/icu/icu-src/source/common/unicode/brkiter.h
index 3a121cf703b..1b10e6ef116 100644
--- a/Build/source/libs/icu/icu-src/source/common/unicode/brkiter.h
+++ b/Build/source/libs/icu/icu-src/source/common/unicode/brkiter.h
@@ -162,7 +162,7 @@ public:
* access the text without impacting any break iterator operations,
* but the underlying text itself must not be altered.
*
- * @param fillIn A UText to be filled in. If NULL, a new UText will be
+ * @param fillIn A UText to be filled in. If nullptr, a new UText will be
* allocated to hold the result.
* @param status receives any error codes.
* @return The current UText for this break iterator. If an input
@@ -503,7 +503,7 @@ public:
*
* Thread safe client-buffer-based cloning operation
* Do NOT call delete on a safeclone, since 'new' is not used to create it.
- * @param stackBuffer user allocated space for the new clone. If NULL new memory will be allocated.
+ * @param stackBuffer user allocated space for the new clone. If nullptr new memory will be allocated.
* If buffer is not large enough, new memory will be allocated.
* @param BufferSize reference to size of allocated space.
* If BufferSize == 0, a sufficient size for use in cloning will
@@ -649,6 +649,7 @@ private:
/** @internal (private) */
char actualLocale[ULOC_FULLNAME_CAPACITY];
char validLocale[ULOC_FULLNAME_CAPACITY];
+ char requestLocale[ULOC_FULLNAME_CAPACITY];
};
#ifndef U_HIDE_DEPRECATED_API
diff --git a/Build/source/libs/icu/icu-src/source/common/unicode/bytestrie.h b/Build/source/libs/icu/icu-src/source/common/unicode/bytestrie.h
index 8fe66780f51..1719a6bb83e 100644
--- a/Build/source/libs/icu/icu-src/source/common/unicode/bytestrie.h
+++ b/Build/source/libs/icu/icu-src/source/common/unicode/bytestrie.h
@@ -69,7 +69,7 @@ public:
* @stable ICU 4.8
*/
BytesTrie(const void *trieBytes)
- : ownedArray_(NULL), bytes_(static_cast<const uint8_t *>(trieBytes)),
+ : ownedArray_(nullptr), bytes_(static_cast<const uint8_t *>(trieBytes)),
pos_(bytes_), remainingMatchLength_(-1) {}
/**
@@ -85,7 +85,7 @@ public:
* @stable ICU 4.8
*/
BytesTrie(const BytesTrie &other)
- : ownedArray_(NULL), bytes_(other.bytes_),
+ : ownedArray_(nullptr), bytes_(other.bytes_),
pos_(other.pos_), remainingMatchLength_(other.remainingMatchLength_) {}
/**
@@ -143,7 +143,7 @@ public:
* Constructs an empty State.
* @stable ICU 4.8
*/
- State() { bytes=NULL; }
+ State() { bytes=nullptr; }
private:
friend class BytesTrie;
@@ -177,7 +177,7 @@ public:
* @stable ICU 4.8
*/
BytesTrie &resetToState(const State &state) {
- if(bytes_==state.bytes && bytes_!=NULL) {
+ if(bytes_==state.bytes && bytes_!=nullptr) {
pos_=state.pos;
remainingMatchLength_=state.remainingMatchLength;
}
@@ -227,7 +227,7 @@ public:
* result=next(c);
* return result;
* \endcode
- * @param s A string or byte sequence. Can be NULL if length is 0.
+ * @param s A string or byte sequence. Can be nullptr if length is 0.
* @param length The length of the byte sequence. Can be -1 if NUL-terminated.
* @return The match/value Result.
* @stable ICU 4.8
@@ -262,7 +262,7 @@ public:
inline UBool hasUniqueValue(int32_t &uniqueValue) const {
const uint8_t *pos=pos_;
// Skip the rest of a pending linear-match node.
- return pos!=NULL && findUniqueValue(pos+remainingMatchLength_+1, false, uniqueValue);
+ return pos!=nullptr && findUniqueValue(pos+remainingMatchLength_+1, false, uniqueValue);
}
/**
@@ -397,7 +397,7 @@ private:
BytesTrie &operator=(const BytesTrie &other) = delete;
inline void stop() {
- pos_=NULL;
+ pos_=nullptr;
}
// Reads a compact 32-bit integer.
@@ -555,7 +555,7 @@ private:
// Iterator variables.
- // Pointer to next trie byte to read. NULL if no more matches.
+ // Pointer to next trie byte to read. nullptr if no more matches.
const uint8_t *pos_;
// Remaining length of a linear-match node, minus 1. Negative if not in such a node.
int32_t remainingMatchLength_;
diff --git a/Build/source/libs/icu/icu-src/source/common/unicode/caniter.h b/Build/source/libs/icu/icu-src/source/common/unicode/caniter.h
index db400a531bf..035bd0e64eb 100644
--- a/Build/source/libs/icu/icu-src/source/common/unicode/caniter.h
+++ b/Build/source/libs/icu/icu-src/source/common/unicode/caniter.h
@@ -73,7 +73,7 @@ Results for: {LATIN CAPITAL LETTER A WITH RING ABOVE}{LATIN SMALL LETTER D}{COMB
* @author C++ port by V. Weinstein
* @stable ICU 2.4
*/
-class U_COMMON_API CanonicalIterator U_FINAL : public UObject {
+class U_COMMON_API CanonicalIterator final : public UObject {
public:
/**
* Construct a CanonicalIterator object
diff --git a/Build/source/libs/icu/icu-src/source/common/unicode/casemap.h b/Build/source/libs/icu/icu-src/source/common/unicode/casemap.h
index 53af84fa74d..eca7cbf80a9 100644
--- a/Build/source/libs/icu/icu-src/source/common/unicode/casemap.h
+++ b/Build/source/libs/icu/icu-src/source/common/unicode/casemap.h
@@ -30,7 +30,7 @@ class Edits;
*
* @stable ICU 59
*/
-class U_COMMON_API CaseMap U_FINAL : public UMemory {
+class U_COMMON_API CaseMap final : public UMemory {
public:
/**
* Lowercases a UTF-16 string and optionally records edits.
@@ -38,7 +38,7 @@ public:
* The result may be longer or shorter than the original.
* The source string and the destination buffer must not overlap.
*
- * @param locale The locale ID. ("" = root locale, NULL = default locale.)
+ * @param locale The locale ID. ("" = root locale, nullptr = default locale.)
* @param options Options bit set, usually 0. See U_OMIT_UNCHANGED_TEXT and U_EDITS_NO_RESET.
* @param src The original string.
* @param srcLength The length of the original string. If -1, then src must be NUL-terminated.
@@ -46,13 +46,13 @@ public:
* the buffer is large enough.
* The contents is undefined in case of failure.
* @param destCapacity The size of the buffer (number of char16_ts). If it is 0, then
- * dest may be NULL and the function will only return the length of the result
+ * dest may be nullptr and the function will only return the length of the result
* without writing any of the result string.
* @param edits Records edits for index mapping, working with styled text,
* and getting only changes (if any).
* The Edits contents is undefined if any error occurs.
* This function calls edits->reset() first unless
- * options includes U_EDITS_NO_RESET. edits can be NULL.
+ * options includes U_EDITS_NO_RESET. edits can be nullptr.
* @param errorCode Reference to an in/out error code value
* which must not indicate a failure before the function call.
* @return The length of the result string, if successful.
@@ -74,7 +74,7 @@ public:
* The result may be longer or shorter than the original.
* The source string and the destination buffer must not overlap.
*
- * @param locale The locale ID. ("" = root locale, NULL = default locale.)
+ * @param locale The locale ID. ("" = root locale, nullptr = default locale.)
* @param options Options bit set, usually 0. See U_OMIT_UNCHANGED_TEXT and U_EDITS_NO_RESET.
* @param src The original string.
* @param srcLength The length of the original string. If -1, then src must be NUL-terminated.
@@ -82,13 +82,13 @@ public:
* the buffer is large enough.
* The contents is undefined in case of failure.
* @param destCapacity The size of the buffer (number of char16_ts). If it is 0, then
- * dest may be NULL and the function will only return the length of the result
+ * dest may be nullptr and the function will only return the length of the result
* without writing any of the result string.
* @param edits Records edits for index mapping, working with styled text,
* and getting only changes (if any).
* The Edits contents is undefined if any error occurs.
* This function calls edits->reset() first unless
- * options includes U_EDITS_NO_RESET. edits can be NULL.
+ * options includes U_EDITS_NO_RESET. edits can be nullptr.
* @param errorCode Reference to an in/out error code value
* which must not indicate a failure before the function call.
* @return The length of the result string, if successful.
@@ -116,7 +116,7 @@ public:
* that are to be titlecased. It titlecases those characters and lowercases
* all others. (This can be modified with options bits.)
*
- * @param locale The locale ID. ("" = root locale, NULL = default locale.)
+ * @param locale The locale ID. ("" = root locale, nullptr = default locale.)
* @param options Options bit set, usually 0. See U_OMIT_UNCHANGED_TEXT, U_EDITS_NO_RESET,
* U_TITLECASE_NO_LOWERCASE,
* U_TITLECASE_NO_BREAK_ADJUSTMENT, U_TITLECASE_ADJUST_TO_CASED,
@@ -124,7 +124,7 @@ public:
* @param iter A break iterator to find the first characters of words that are to be titlecased.
* It is set to the source string (setText())
* and used one or more times for iteration (first() and next()).
- * If NULL, then a word break iterator for the locale is used
+ * If nullptr, then a word break iterator for the locale is used
* (or something equivalent).
* @param src The original string.
* @param srcLength The length of the original string. If -1, then src must be NUL-terminated.
@@ -132,13 +132,13 @@ public:
* the buffer is large enough.
* The contents is undefined in case of failure.
* @param destCapacity The size of the buffer (number of char16_ts). If it is 0, then
- * dest may be NULL and the function will only return the length of the result
+ * dest may be nullptr and the function will only return the length of the result
* without writing any of the result string.
* @param edits Records edits for index mapping, working with styled text,
* and getting only changes (if any).
* The Edits contents is undefined if any error occurs.
* This function calls edits->reset() first unless
- * options includes U_EDITS_NO_RESET. edits can be NULL.
+ * options includes U_EDITS_NO_RESET. edits can be nullptr.
* @param errorCode Reference to an in/out error code value
* which must not indicate a failure before the function call.
* @return The length of the result string, if successful.
@@ -175,13 +175,13 @@ public:
* the buffer is large enough.
* The contents is undefined in case of failure.
* @param destCapacity The size of the buffer (number of char16_ts). If it is 0, then
- * dest may be NULL and the function will only return the length of the result
+ * dest may be nullptr and the function will only return the length of the result
* without writing any of the result string.
* @param edits Records edits for index mapping, working with styled text,
* and getting only changes (if any).
* The Edits contents is undefined if any error occurs.
* This function calls edits->reset() first unless
- * options includes U_EDITS_NO_RESET. edits can be NULL.
+ * options includes U_EDITS_NO_RESET. edits can be nullptr.
* @param errorCode Reference to an in/out error code value
* which must not indicate a failure before the function call.
* @return The length of the result string, if successful.
@@ -202,7 +202,7 @@ public:
* Casing is locale-dependent and context-sensitive.
* The result may be longer or shorter than the original.
*
- * @param locale The locale ID. ("" = root locale, NULL = default locale.)
+ * @param locale The locale ID. ("" = root locale, nullptr = default locale.)
* @param options Options bit set, usually 0. See U_OMIT_UNCHANGED_TEXT and U_EDITS_NO_RESET.
* @param src The original string.
* @param sink A ByteSink to which the result string is written.
@@ -211,7 +211,7 @@ public:
* and getting only changes (if any).
* The Edits contents is undefined if any error occurs.
* This function calls edits->reset() first unless
- * options includes U_EDITS_NO_RESET. edits can be NULL.
+ * options includes U_EDITS_NO_RESET. edits can be nullptr.
* @param errorCode Reference to an in/out error code value
* which must not indicate a failure before the function call.
*
@@ -228,7 +228,7 @@ public:
* Casing is locale-dependent and context-sensitive.
* The result may be longer or shorter than the original.
*
- * @param locale The locale ID. ("" = root locale, NULL = default locale.)
+ * @param locale The locale ID. ("" = root locale, nullptr = default locale.)
* @param options Options bit set, usually 0. See U_OMIT_UNCHANGED_TEXT and U_EDITS_NO_RESET.
* @param src The original string.
* @param sink A ByteSink to which the result string is written.
@@ -237,7 +237,7 @@ public:
* and getting only changes (if any).
* The Edits contents is undefined if any error occurs.
* This function calls edits->reset() first unless
- * options includes U_EDITS_NO_RESET. edits can be NULL.
+ * options includes U_EDITS_NO_RESET. edits can be nullptr.
* @param errorCode Reference to an in/out error code value
* which must not indicate a failure before the function call.
*
@@ -260,7 +260,7 @@ public:
* that are to be titlecased. It titlecases those characters and lowercases
* all others. (This can be modified with options bits.)
*
- * @param locale The locale ID. ("" = root locale, NULL = default locale.)
+ * @param locale The locale ID. ("" = root locale, nullptr = default locale.)
* @param options Options bit set, usually 0. See U_OMIT_UNCHANGED_TEXT, U_EDITS_NO_RESET,
* U_TITLECASE_NO_LOWERCASE,
* U_TITLECASE_NO_BREAK_ADJUSTMENT, U_TITLECASE_ADJUST_TO_CASED,
@@ -268,7 +268,7 @@ public:
* @param iter A break iterator to find the first characters of words that are to be titlecased.
* It is set to the source string (setUText())
* and used one or more times for iteration (first() and next()).
- * If NULL, then a word break iterator for the locale is used
+ * If nullptr, then a word break iterator for the locale is used
* (or something equivalent).
* @param src The original string.
* @param sink A ByteSink to which the result string is written.
@@ -277,7 +277,7 @@ public:
* and getting only changes (if any).
* The Edits contents is undefined if any error occurs.
* This function calls edits->reset() first unless
- * options includes U_EDITS_NO_RESET. edits can be NULL.
+ * options includes U_EDITS_NO_RESET. edits can be nullptr.
* @param errorCode Reference to an in/out error code value
* which must not indicate a failure before the function call.
*
@@ -308,7 +308,7 @@ public:
* and getting only changes (if any).
* The Edits contents is undefined if any error occurs.
* This function calls edits->reset() first unless
- * options includes U_EDITS_NO_RESET. edits can be NULL.
+ * options includes U_EDITS_NO_RESET. edits can be nullptr.
* @param errorCode Reference to an in/out error code value
* which must not indicate a failure before the function call.
*
@@ -326,7 +326,7 @@ public:
* The result may be longer or shorter than the original.
* The source string and the destination buffer must not overlap.
*
- * @param locale The locale ID. ("" = root locale, NULL = default locale.)
+ * @param locale The locale ID. ("" = root locale, nullptr = default locale.)
* @param options Options bit set, usually 0. See U_OMIT_UNCHANGED_TEXT and U_EDITS_NO_RESET.
* @param src The original string.
* @param srcLength The length of the original string. If -1, then src must be NUL-terminated.
@@ -334,13 +334,13 @@ public:
* the buffer is large enough.
* The contents is undefined in case of failure.
* @param destCapacity The size of the buffer (number of bytes). If it is 0, then
- * dest may be NULL and the function will only return the length of the result
+ * dest may be nullptr and the function will only return the length of the result
* without writing any of the result string.
* @param edits Records edits for index mapping, working with styled text,
* and getting only changes (if any).
* The Edits contents is undefined if any error occurs.
* This function calls edits->reset() first unless
- * options includes U_EDITS_NO_RESET. edits can be NULL.
+ * options includes U_EDITS_NO_RESET. edits can be nullptr.
* @param errorCode Reference to an in/out error code value
* which must not indicate a failure before the function call.
* @return The length of the result string, if successful.
@@ -362,7 +362,7 @@ public:
* The result may be longer or shorter than the original.
* The source string and the destination buffer must not overlap.
*
- * @param locale The locale ID. ("" = root locale, NULL = default locale.)
+ * @param locale The locale ID. ("" = root locale, nullptr = default locale.)
* @param options Options bit set, usually 0. See U_OMIT_UNCHANGED_TEXT and U_EDITS_NO_RESET.
* @param src The original string.
* @param srcLength The length of the original string. If -1, then src must be NUL-terminated.
@@ -370,13 +370,13 @@ public:
* the buffer is large enough.
* The contents is undefined in case of failure.
* @param destCapacity The size of the buffer (number of bytes). If it is 0, then
- * dest may be NULL and the function will only return the length of the result
+ * dest may be nullptr and the function will only return the length of the result
* without writing any of the result string.
* @param edits Records edits for index mapping, working with styled text,
* and getting only changes (if any).
* The Edits contents is undefined if any error occurs.
* This function calls edits->reset() first unless
- * options includes U_EDITS_NO_RESET. edits can be NULL.
+ * options includes U_EDITS_NO_RESET. edits can be nullptr.
* @param errorCode Reference to an in/out error code value
* which must not indicate a failure before the function call.
* @return The length of the result string, if successful.
@@ -404,7 +404,7 @@ public:
* that are to be titlecased. It titlecases those characters and lowercases
* all others. (This can be modified with options bits.)
*
- * @param locale The locale ID. ("" = root locale, NULL = default locale.)
+ * @param locale The locale ID. ("" = root locale, nullptr = default locale.)
* @param options Options bit set, usually 0. See U_OMIT_UNCHANGED_TEXT, U_EDITS_NO_RESET,
* U_TITLECASE_NO_LOWERCASE,
* U_TITLECASE_NO_BREAK_ADJUSTMENT, U_TITLECASE_ADJUST_TO_CASED,
@@ -412,7 +412,7 @@ public:
* @param iter A break iterator to find the first characters of words that are to be titlecased.
* It is set to the source string (setUText())
* and used one or more times for iteration (first() and next()).
- * If NULL, then a word break iterator for the locale is used
+ * If nullptr, then a word break iterator for the locale is used
* (or something equivalent).
* @param src The original string.
* @param srcLength The length of the original string. If -1, then src must be NUL-terminated.
@@ -420,13 +420,13 @@ public:
* the buffer is large enough.
* The contents is undefined in case of failure.
* @param destCapacity The size of the buffer (number of bytes). If it is 0, then
- * dest may be NULL and the function will only return the length of the result
+ * dest may be nullptr and the function will only return the length of the result
* without writing any of the result string.
* @param edits Records edits for index mapping, working with styled text,
* and getting only changes (if any).
* The Edits contents is undefined if any error occurs.
* This function calls edits->reset() first unless
- * options includes U_EDITS_NO_RESET. edits can be NULL.
+ * options includes U_EDITS_NO_RESET. edits can be nullptr.
* @param errorCode Reference to an in/out error code value
* which must not indicate a failure before the function call.
* @return The length of the result string, if successful.
@@ -462,13 +462,13 @@ public:
* the buffer is large enough.
* The contents is undefined in case of failure.
* @param destCapacity The size of the buffer (number of bytes). If it is 0, then
- * dest may be NULL and the function will only return the length of the result
+ * dest may be nullptr and the function will only return the length of the result
* without writing any of the result string.
* @param edits Records edits for index mapping, working with styled text,
* and getting only changes (if any).
* The Edits contents is undefined if any error occurs.
* This function calls edits->reset() first unless
- * options includes U_EDITS_NO_RESET. edits can be NULL.
+ * options includes U_EDITS_NO_RESET. edits can be nullptr.
* @param errorCode Reference to an in/out error code value
* which must not indicate a failure before the function call.
* @return The length of the result string, if successful.
diff --git a/Build/source/libs/icu/icu-src/source/common/unicode/char16ptr.h b/Build/source/libs/icu/icu-src/source/common/unicode/char16ptr.h
index c8a9ae6c35d..de8182c7ada 100644
--- a/Build/source/libs/icu/icu-src/source/common/unicode/char16ptr.h
+++ b/Build/source/libs/icu/icu-src/source/common/unicode/char16ptr.h
@@ -39,7 +39,7 @@ U_NAMESPACE_BEGIN
* char16_t * wrapper with implicit conversion from distinct but bit-compatible pointer types.
* @stable ICU 59
*/
-class U_COMMON_API Char16Ptr U_FINAL {
+class U_COMMON_API Char16Ptr final {
public:
/**
* Copies the pointer.
@@ -146,7 +146,7 @@ char16_t *Char16Ptr::get() const { return u_.cp; }
* const char16_t * wrapper with implicit conversion from distinct but bit-compatible pointer types.
* @stable ICU 59
*/
-class U_COMMON_API ConstChar16Ptr U_FINAL {
+class U_COMMON_API ConstChar16Ptr final {
public:
/**
* Copies the pointer.
diff --git a/Build/source/libs/icu/icu-src/source/common/unicode/chariter.h b/Build/source/libs/icu/icu-src/source/common/unicode/chariter.h
index 4f320b90e2c..45f4d984c74 100644
--- a/Build/source/libs/icu/icu-src/source/common/unicode/chariter.h
+++ b/Build/source/libs/icu/icu-src/source/common/unicode/chariter.h
@@ -297,7 +297,7 @@ protected:
* \code
* void traverseForward(CharacterIterator& iter)
* {
- * for(char16_t c = iter.first(); c != CharacterIterator.DONE; c = iter.next()) {
+ * for(char16_t c = iter.first(); c != CharacterIterator::DONE; c = iter.next()) {
* processChar(c);
* }
* }
@@ -308,7 +308,7 @@ protected:
* \code
* void traverseBackward(CharacterIterator& iter)
* {
- * for(char16_t c = iter.last(); c != CharacterIterator.DONE; c = iter.previous()) {
+ * for(char16_t c = iter.last(); c != CharacterIterator::DONE; c = iter.previous()) {
* processChar(c);
* }
* }
@@ -322,11 +322,11 @@ protected:
* {
* char16_t c;
* for (c = iter.setIndex(pos);
- * c != CharacterIterator.DONE && (Unicode::isLetter(c) || Unicode::isDigit(c));
+ * c != CharacterIterator::DONE && (Unicode::isLetter(c) || Unicode::isDigit(c));
* c = iter.next()) {}
* int32_t end = iter.getIndex();
* for (c = iter.setIndex(pos);
- * c != CharacterIterator.DONE && (Unicode::isLetter(c) || Unicode::isDigit(c));
+ * c != CharacterIterator::DONE && (Unicode::isLetter(c) || Unicode::isDigit(c));
* c = iter.previous()) {}
* int32_t start = iter.getIndex() + 1;
*
diff --git a/Build/source/libs/icu/icu-src/source/common/unicode/docmain.h b/Build/source/libs/icu/icu-src/source/common/unicode/docmain.h
index 4e29e283cde..581b2e186d5 100644
--- a/Build/source/libs/icu/icu-src/source/common/unicode/docmain.h
+++ b/Build/source/libs/icu/icu-src/source/common/unicode/docmain.h
@@ -114,7 +114,7 @@
* </tr>
* <tr>
* <td>Locales </td>
- * <td>uloc.h</a></td>
+ * <td>uloc.h, ulocale.h, ulocbuilder.h</a></td>
* <td>icu::Locale, icu::LocaleBuilder, icu::LocaleMatcher</td>
* </tr>
* <tr>
@@ -149,8 +149,8 @@
* </tr>
* <tr>
* <td>Number Formatting<br/>(includes currency and unit formatting)</td>
- * <td>unumberformatter.h, unum.h</td>
- * <td>icu::number::NumberFormatter (ICU 60+) or icu::NumberFormat (older versions)</td>
+ * <td>unumberformatter.h, unum.h, usimplenumberformatter.h</td>
+ * <td>icu::number::NumberFormatter (ICU 60+) or icu::NumberFormat (older versions)<br>icu::number::SimpleNumberFormatter (ICU 73+)</td>
* </tr>
* <tr>
* <td>Number Range Formatting<br />(includes currency and unit ranges)</td>
diff --git a/Build/source/libs/icu/icu-src/source/common/unicode/edits.h b/Build/source/libs/icu/icu-src/source/common/unicode/edits.h
index bfa07fa6765..dda9d3ca759 100644
--- a/Build/source/libs/icu/icu-src/source/common/unicode/edits.h
+++ b/Build/source/libs/icu/icu-src/source/common/unicode/edits.h
@@ -77,7 +77,7 @@ class UnicodeString;
*
* @stable ICU 59
*/
-class U_COMMON_API Edits U_FINAL : public UMemory {
+class U_COMMON_API Edits final : public UMemory {
public:
/**
* Constructs an empty object.
@@ -103,7 +103,7 @@ public:
* @param src source edits
* @stable ICU 60
*/
- Edits(Edits &&src) U_NOEXCEPT :
+ Edits(Edits &&src) noexcept :
array(stackArray), capacity(STACK_CAPACITY), length(src.length),
delta(src.delta), numChanges(src.numChanges),
errorCode_(src.errorCode_) {
@@ -132,13 +132,13 @@ public:
* @return *this
* @stable ICU 60
*/
- Edits &operator=(Edits &&src) U_NOEXCEPT;
+ Edits &operator=(Edits &&src) noexcept;
/**
* Resets the data but may not release memory.
* @stable ICU 59
*/
- void reset() U_NOEXCEPT;
+ void reset() noexcept;
/**
* Adds a no-change edit: a record for an unchanged segment of text.
@@ -200,7 +200,7 @@ public:
* @see getFineIterator
* @stable ICU 59
*/
- struct U_COMMON_API Iterator U_FINAL : public UMemory {
+ struct U_COMMON_API Iterator final : public UMemory {
/**
* Default constructor, empty iterator.
* @stable ICU 60
@@ -504,9 +504,9 @@ public:
Edits &mergeAndAppend(const Edits &ab, const Edits &bc, UErrorCode &errorCode);
private:
- void releaseArray() U_NOEXCEPT;
+ void releaseArray() noexcept;
Edits &copyArray(const Edits &other);
- Edits &moveArray(Edits &src) U_NOEXCEPT;
+ Edits &moveArray(Edits &src) noexcept;
void setLastUnit(int32_t last) { array[length - 1] = (uint16_t)last; }
int32_t lastUnit() const { return length > 0 ? array[length - 1] : 0xffff; }
diff --git a/Build/source/libs/icu/icu-src/source/common/unicode/icuplug.h b/Build/source/libs/icu/icu-src/source/common/unicode/icuplug.h
index 205af360d45..c787fcd4266 100644
--- a/Build/source/libs/icu/icu-src/source/common/unicode/icuplug.h
+++ b/Build/source/libs/icu/icu-src/source/common/unicode/icuplug.h
@@ -187,8 +187,12 @@ typedef enum {
/**
* Entrypoint for an ICU plugin.
- * @param plug the UPlugData handle.
- * @param status the plugin's extended status code.
+ * @param plug the UPlugData handle.
+ * @param reason the reason code for the entrypoint's call.
+ * @param status Standard ICU error code. Its input value must
+ * pass the U_SUCCESS() test, or else the function returns
+ * immediately. Check for U_FAILURE() on output or use with
+ * function chaining. (See User Guide for details.)
* @return A valid plugin must return UPLUG_TOKEN
* @internal ICU 4.4 Technology Preview
*/
diff --git a/Build/source/libs/icu/icu-src/source/common/unicode/localematcher.h b/Build/source/libs/icu/icu-src/source/common/unicode/localematcher.h
index 0f7e04a3afd..603daf7231d 100644
--- a/Build/source/libs/icu/icu-src/source/common/unicode/localematcher.h
+++ b/Build/source/libs/icu/icu-src/source/common/unicode/localematcher.h
@@ -198,7 +198,7 @@ public:
* @param src Result to move contents from.
* @stable ICU 65
*/
- Result(Result &&src) U_NOEXCEPT;
+ Result(Result &&src) noexcept;
/**
* Destructor.
@@ -214,7 +214,7 @@ public:
* @param src Result to move contents from.
* @stable ICU 65
*/
- Result &operator=(Result &&src) U_NOEXCEPT;
+ Result &operator=(Result &&src) noexcept;
/**
* Returns the best-matching desired locale.
@@ -313,7 +313,7 @@ public:
* @param src Builder to move contents from.
* @stable ICU 65
*/
- Builder(Builder &&src) U_NOEXCEPT;
+ Builder(Builder &&src) noexcept;
/**
* Destructor.
@@ -329,7 +329,7 @@ public:
* @param src Builder to move contents from.
* @stable ICU 65
*/
- Builder &operator=(Builder &&src) U_NOEXCEPT;
+ Builder &operator=(Builder &&src) noexcept;
/**
* Parses an Accept-Language string
@@ -548,7 +548,7 @@ public:
* @param src source matcher
* @stable ICU 65
*/
- LocaleMatcher(LocaleMatcher &&src) U_NOEXCEPT;
+ LocaleMatcher(LocaleMatcher &&src) noexcept;
/**
* Destructor.
@@ -564,7 +564,7 @@ public:
* @return *this
* @stable ICU 65
*/
- LocaleMatcher &operator=(LocaleMatcher &&src) U_NOEXCEPT;
+ LocaleMatcher &operator=(LocaleMatcher &&src) noexcept;
/**
* Returns the supported locale which best matches the desired locale.
diff --git a/Build/source/libs/icu/icu-src/source/common/unicode/localpointer.h b/Build/source/libs/icu/icu-src/source/common/unicode/localpointer.h
index 96c659d10ad..b8be3d7942e 100644
--- a/Build/source/libs/icu/icu-src/source/common/unicode/localpointer.h
+++ b/Build/source/libs/icu/icu-src/source/common/unicode/localpointer.h
@@ -79,7 +79,7 @@ public:
* @param p simple pointer to an object that is adopted
* @stable ICU 4.4
*/
- explicit LocalPointerBase(T *p=NULL) : ptr(p) {}
+ explicit LocalPointerBase(T *p=nullptr) : ptr(p) {}
/**
* Destructor deletes the object it owns.
* Subclass must override: Base class does nothing.
@@ -87,20 +87,20 @@ public:
*/
~LocalPointerBase() { /* delete ptr; */ }
/**
- * NULL check.
- * @return true if ==NULL
+ * nullptr check.
+ * @return true if ==nullptr
* @stable ICU 4.4
*/
- UBool isNull() const { return ptr==NULL; }
+ UBool isNull() const { return ptr==nullptr; }
/**
- * NULL check.
- * @return true if !=NULL
+ * nullptr check.
+ * @return true if !=nullptr
* @stable ICU 4.4
*/
- UBool isValid() const { return ptr!=NULL; }
+ UBool isValid() const { return ptr!=nullptr; }
/**
* Comparison with a simple pointer, so that existing code
- * with ==NULL need not be changed.
+ * with ==nullptr need not be changed.
* @param other simple pointer for comparison
* @return true if this pointer value equals other
* @stable ICU 4.4
@@ -108,7 +108,7 @@ public:
bool operator==(const T *other) const { return ptr==other; }
/**
* Comparison with a simple pointer, so that existing code
- * with !=NULL need not be changed.
+ * with !=nullptr need not be changed.
* @param other simple pointer for comparison
* @return true if this pointer value differs from other
* @stable ICU 4.4
@@ -133,14 +133,14 @@ public:
*/
T *operator->() const { return ptr; }
/**
- * Gives up ownership; the internal pointer becomes NULL.
+ * Gives up ownership; the internal pointer becomes nullptr.
* @return the pointer value;
* caller becomes responsible for deleting the object
* @stable ICU 4.4
*/
T *orphan() {
T *p=ptr;
- ptr=NULL;
+ ptr=nullptr;
return p;
}
/**
@@ -197,9 +197,9 @@ public:
* @param p simple pointer to an object that is adopted
* @stable ICU 4.4
*/
- explicit LocalPointer(T *p=NULL) : LocalPointerBase<T>(p) {}
+ explicit LocalPointer(T *p=nullptr) : LocalPointerBase<T>(p) {}
/**
- * Constructor takes ownership and reports an error if NULL.
+ * Constructor takes ownership and reports an error if nullptr.
*
* This constructor is intended to be used with other-class constructors
* that may report a failure UErrorCode,
@@ -208,11 +208,11 @@ public:
*
* @param p simple pointer to an object that is adopted
* @param errorCode in/out UErrorCode, set to U_MEMORY_ALLOCATION_ERROR
- * if p==NULL and no other failure code had been set
+ * if p==nullptr and no other failure code had been set
* @stable ICU 55
*/
LocalPointer(T *p, UErrorCode &errorCode) : LocalPointerBase<T>(p) {
- if(p==NULL && U_SUCCESS(errorCode)) {
+ if(p==nullptr && U_SUCCESS(errorCode)) {
errorCode=U_MEMORY_ALLOCATION_ERROR;
}
}
@@ -221,8 +221,8 @@ public:
* @param src source smart pointer
* @stable ICU 56
*/
- LocalPointer(LocalPointer<T> &&src) U_NOEXCEPT : LocalPointerBase<T>(src.ptr) {
- src.ptr=NULL;
+ LocalPointer(LocalPointer<T> &&src) noexcept : LocalPointerBase<T>(src.ptr) {
+ src.ptr=nullptr;
}
/**
@@ -252,10 +252,10 @@ public:
* @return *this
* @stable ICU 56
*/
- LocalPointer<T> &operator=(LocalPointer<T> &&src) U_NOEXCEPT {
+ LocalPointer<T> &operator=(LocalPointer<T> &&src) noexcept {
delete LocalPointerBase<T>::ptr;
LocalPointerBase<T>::ptr=src.ptr;
- src.ptr=NULL;
+ src.ptr=nullptr;
return *this;
}
@@ -267,7 +267,7 @@ public:
* @return *this
* @stable ICU 64
*/
- LocalPointer<T> &operator=(std::unique_ptr<T> &&p) U_NOEXCEPT {
+ LocalPointer<T> &operator=(std::unique_ptr<T> &&p) noexcept {
adoptInstead(p.release());
return *this;
}
@@ -277,7 +277,7 @@ public:
* @param other other smart pointer
* @stable ICU 56
*/
- void swap(LocalPointer<T> &other) U_NOEXCEPT {
+ void swap(LocalPointer<T> &other) noexcept {
T *temp=LocalPointerBase<T>::ptr;
LocalPointerBase<T>::ptr=other.ptr;
other.ptr=temp;
@@ -288,7 +288,7 @@ public:
* @param p2 will get p1's pointer
* @stable ICU 56
*/
- friend inline void swap(LocalPointer<T> &p1, LocalPointer<T> &p2) U_NOEXCEPT {
+ friend inline void swap(LocalPointer<T> &p1, LocalPointer<T> &p2) noexcept {
p1.swap(p2);
}
/**
@@ -307,20 +307,20 @@ public:
*
* If U_FAILURE(errorCode), then the current object is retained and the new one deleted.
*
- * If U_SUCCESS(errorCode) but the input pointer is NULL,
+ * If U_SUCCESS(errorCode) but the input pointer is nullptr,
* then U_MEMORY_ALLOCATION_ERROR is set,
- * the current object is deleted, and NULL is set.
+ * the current object is deleted, and nullptr is set.
*
* @param p simple pointer to an object that is adopted
* @param errorCode in/out UErrorCode, set to U_MEMORY_ALLOCATION_ERROR
- * if p==NULL and no other failure code had been set
+ * if p==nullptr and no other failure code had been set
* @stable ICU 55
*/
void adoptInsteadAndCheckErrorCode(T *p, UErrorCode &errorCode) {
if(U_SUCCESS(errorCode)) {
delete LocalPointerBase<T>::ptr;
LocalPointerBase<T>::ptr=p;
- if(p==NULL) {
+ if(p==nullptr) {
errorCode=U_MEMORY_ALLOCATION_ERROR;
}
} else {
@@ -372,9 +372,9 @@ public:
* @param p simple pointer to an array of T objects that is adopted
* @stable ICU 4.4
*/
- explicit LocalArray(T *p=NULL) : LocalPointerBase<T>(p) {}
+ explicit LocalArray(T *p=nullptr) : LocalPointerBase<T>(p) {}
/**
- * Constructor takes ownership and reports an error if NULL.
+ * Constructor takes ownership and reports an error if nullptr.
*
* This constructor is intended to be used with other-class constructors
* that may report a failure UErrorCode,
@@ -383,11 +383,11 @@ public:
*
* @param p simple pointer to an array of T objects that is adopted
* @param errorCode in/out UErrorCode, set to U_MEMORY_ALLOCATION_ERROR
- * if p==NULL and no other failure code had been set
+ * if p==nullptr and no other failure code had been set
* @stable ICU 56
*/
LocalArray(T *p, UErrorCode &errorCode) : LocalPointerBase<T>(p) {
- if(p==NULL && U_SUCCESS(errorCode)) {
+ if(p==nullptr && U_SUCCESS(errorCode)) {
errorCode=U_MEMORY_ALLOCATION_ERROR;
}
}
@@ -396,8 +396,8 @@ public:
* @param src source smart pointer
* @stable ICU 56
*/
- LocalArray(LocalArray<T> &&src) U_NOEXCEPT : LocalPointerBase<T>(src.ptr) {
- src.ptr=NULL;
+ LocalArray(LocalArray<T> &&src) noexcept : LocalPointerBase<T>(src.ptr) {
+ src.ptr=nullptr;
}
/**
@@ -427,10 +427,10 @@ public:
* @return *this
* @stable ICU 56
*/
- LocalArray<T> &operator=(LocalArray<T> &&src) U_NOEXCEPT {
+ LocalArray<T> &operator=(LocalArray<T> &&src) noexcept {
delete[] LocalPointerBase<T>::ptr;
LocalPointerBase<T>::ptr=src.ptr;
- src.ptr=NULL;
+ src.ptr=nullptr;
return *this;
}
@@ -442,7 +442,7 @@ public:
* @return *this
* @stable ICU 64
*/
- LocalArray<T> &operator=(std::unique_ptr<T[]> &&p) U_NOEXCEPT {
+ LocalArray<T> &operator=(std::unique_ptr<T[]> &&p) noexcept {
adoptInstead(p.release());
return *this;
}
@@ -452,7 +452,7 @@ public:
* @param other other smart pointer
* @stable ICU 56
*/
- void swap(LocalArray<T> &other) U_NOEXCEPT {
+ void swap(LocalArray<T> &other) noexcept {
T *temp=LocalPointerBase<T>::ptr;
LocalPointerBase<T>::ptr=other.ptr;
other.ptr=temp;
@@ -463,7 +463,7 @@ public:
* @param p2 will get p1's pointer
* @stable ICU 56
*/
- friend inline void swap(LocalArray<T> &p1, LocalArray<T> &p2) U_NOEXCEPT {
+ friend inline void swap(LocalArray<T> &p1, LocalArray<T> &p2) noexcept {
p1.swap(p2);
}
/**
@@ -482,20 +482,20 @@ public:
*
* If U_FAILURE(errorCode), then the current array is retained and the new one deleted.
*
- * If U_SUCCESS(errorCode) but the input pointer is NULL,
+ * If U_SUCCESS(errorCode) but the input pointer is nullptr,
* then U_MEMORY_ALLOCATION_ERROR is set,
- * the current array is deleted, and NULL is set.
+ * the current array is deleted, and nullptr is set.
*
* @param p simple pointer to an array of T objects that is adopted
* @param errorCode in/out UErrorCode, set to U_MEMORY_ALLOCATION_ERROR
- * if p==NULL and no other failure code had been set
+ * if p==nullptr and no other failure code had been set
* @stable ICU 56
*/
void adoptInsteadAndCheckErrorCode(T *p, UErrorCode &errorCode) {
if(U_SUCCESS(errorCode)) {
delete[] LocalPointerBase<T>::ptr;
LocalPointerBase<T>::ptr=p;
- if(p==NULL) {
+ if(p==nullptr) {
errorCode=U_MEMORY_ALLOCATION_ERROR;
}
} else {
@@ -552,19 +552,19 @@ public:
public: \
using LocalPointerBase<Type>::operator*; \
using LocalPointerBase<Type>::operator->; \
- explicit LocalPointerClassName(Type *p=NULL) : LocalPointerBase<Type>(p) {} \
- LocalPointerClassName(LocalPointerClassName &&src) U_NOEXCEPT \
+ explicit LocalPointerClassName(Type *p=nullptr) : LocalPointerBase<Type>(p) {} \
+ LocalPointerClassName(LocalPointerClassName &&src) noexcept \
: LocalPointerBase<Type>(src.ptr) { \
- src.ptr=NULL; \
+ src.ptr=nullptr; \
} \
/* TODO: Be agnostic of the deleter function signature from the user-provided std::unique_ptr? */ \
explicit LocalPointerClassName(std::unique_ptr<Type, decltype(&closeFunction)> &&p) \
: LocalPointerBase<Type>(p.release()) {} \
- ~LocalPointerClassName() { if (ptr != NULL) { closeFunction(ptr); } } \
- LocalPointerClassName &operator=(LocalPointerClassName &&src) U_NOEXCEPT { \
- if (ptr != NULL) { closeFunction(ptr); } \
+ ~LocalPointerClassName() { if (ptr != nullptr) { closeFunction(ptr); } } \
+ LocalPointerClassName &operator=(LocalPointerClassName &&src) noexcept { \
+ if (ptr != nullptr) { closeFunction(ptr); } \
LocalPointerBase<Type>::ptr=src.ptr; \
- src.ptr=NULL; \
+ src.ptr=nullptr; \
return *this; \
} \
/* TODO: Be agnostic of the deleter function signature from the user-provided std::unique_ptr? */ \
@@ -572,16 +572,16 @@ public:
adoptInstead(p.release()); \
return *this; \
} \
- void swap(LocalPointerClassName &other) U_NOEXCEPT { \
+ void swap(LocalPointerClassName &other) noexcept { \
Type *temp=LocalPointerBase<Type>::ptr; \
LocalPointerBase<Type>::ptr=other.ptr; \
other.ptr=temp; \
} \
- friend inline void swap(LocalPointerClassName &p1, LocalPointerClassName &p2) U_NOEXCEPT { \
+ friend inline void swap(LocalPointerClassName &p1, LocalPointerClassName &p2) noexcept { \
p1.swap(p2); \
} \
void adoptInstead(Type *p) { \
- if (ptr != NULL) { closeFunction(ptr); } \
+ if (ptr != nullptr) { closeFunction(ptr); } \
ptr=p; \
} \
operator std::unique_ptr<Type, decltype(&closeFunction)> () && { \
diff --git a/Build/source/libs/icu/icu-src/source/common/unicode/locid.h b/Build/source/libs/icu/icu-src/source/common/unicode/locid.h
index 2f2b3998a78..f0bdc7ca514 100644
--- a/Build/source/libs/icu/icu-src/source/common/unicode/locid.h
+++ b/Build/source/libs/icu/icu-src/source/common/unicode/locid.h
@@ -258,7 +258,7 @@ public:
* @param language Lowercase two-letter or three-letter ISO-639 code.
* This parameter can instead be an ICU style C locale (e.g. "en_US"),
* but the other parameters must not be used.
- * This parameter can be NULL; if so,
+ * This parameter can be nullptr; if so,
* the locale is initialized to match the current default locale.
* (This is the same as using the default constructor.)
* Please note: The Java Locale class does NOT accept the form
@@ -294,7 +294,7 @@ public:
* @param other The Locale object being moved in.
* @stable ICU 63
*/
- Locale(Locale&& other) U_NOEXCEPT;
+ Locale(Locale&& other) noexcept;
/**
* Destructor
@@ -320,7 +320,7 @@ public:
* @return *this
* @stable ICU 63
*/
- Locale& operator=(Locale&& other) U_NOEXCEPT;
+ Locale& operator=(Locale&& other) noexcept;
/**
* Checks if two locale keys are the same.
@@ -344,7 +344,7 @@ public:
/**
* Clone this object.
* Clones can be used concurrently in multiple threads.
- * If an error occurs, then NULL is returned.
+ * If an error occurs, then nullptr is returned.
* The caller must delete the clone.
*
* @return a clone of this object
@@ -378,7 +378,7 @@ public:
* setDefault() only changes ICU's default locale ID, <strong>not</strong>
* the default locale ID of the runtime environment.
*
- * @param newLocale Locale to set to. If NULL, set to the value obtained
+ * @param newLocale Locale to set to. If nullptr, set to the value obtained
* from the runtime environment.
* @param success The error code.
* @system
@@ -453,7 +453,7 @@ public:
/**
* Creates a locale from the given string after canonicalizing
* the string according to CLDR by calling uloc_canonicalize().
- * @param name the locale ID to create from. Must not be NULL.
+ * @param name the locale ID to create from. Must not be nullptr.
* @return a new locale object corresponding to the given name
* @stable ICU 3.0
* @see uloc_canonicalize
@@ -583,7 +583,7 @@ public:
* Gets the list of keywords for the specified locale.
*
* @param status the status code
- * @return pointer to StringEnumeration class, or NULL if there are no keywords.
+ * @return pointer to StringEnumeration class, or nullptr if there are no keywords.
* Client must dispose of it by calling delete.
* @see getKeywords
* @stable ICU 2.8
@@ -594,7 +594,7 @@ public:
* Gets the list of Unicode keywords for the specified locale.
*
* @param status the status code
- * @return pointer to StringEnumeration class, or NULL if there are no keywords.
+ * @return pointer to StringEnumeration class, or nullptr if there are no keywords.
* Client must dispose of it by calling delete.
* @see getUnicodeKeywords
* @stable ICU 63
@@ -722,7 +722,7 @@ public:
*
* @param keywordName name of the keyword to be set. Case insensitive.
* @param keywordValue value of the keyword to be set. If 0-length or
- * NULL, will result in the keyword being removed. No error is given if
+ * nullptr, will result in the keyword being removed. No error is given if
* that keyword does not exist.
* @param status Returns any error information while performing this operation.
*
@@ -743,7 +743,7 @@ public:
*
* @param keywordName name of the keyword to be set.
* @param keywordValue value of the keyword to be set. If 0-length or
- * NULL, will result in the keyword being removed. No error is given if
+ * nullptr, will result in the keyword being removed. No error is given if
* that keyword does not exist.
* @param status Returns any error information while performing this operation.
* @stable ICU 63
@@ -763,7 +763,7 @@ public:
*
* @param keywordName name of the keyword to be set.
* @param keywordValue value of the keyword to be set. If 0-length or
- * NULL, will result in the keyword being removed. No error is given if
+ * nullptr, will result in the keyword being removed. No error is given if
* that keyword does not exist.
* @param status Returns any error information while performing this operation.
* @stable ICU 63
@@ -984,7 +984,10 @@ public:
static const char* const* U_EXPORT2 getISOCountries();
/**
- * Gets a list of all available language codes defined in ISO 639. This is a pointer
+ * Returns a list of all unique language codes defined in ISO 639.
+ * They can be 2 or 3 letter codes, as defined by
+ * <a href="https://www.ietf.org/rfc/bcp/bcp47.html#section-2.2.1">
+ * BCP 47, section 2.2.1</a>. This is a pointer
* to an array of pointers to arrays of char. All of these pointers are owned
* by ICU-- do not delete them, and do not write through them. The array is
* terminated with a null pointer.
@@ -1110,6 +1113,15 @@ protected: /* only protected for testing purposes. DO NOT USE. */
* @internal
*/
void setFromPOSIXID(const char *posixID);
+ /**
+ * Minimize the subtags for this Locale, per the algorithm described
+ * @param favorScript favor to keep script if true, to keep region if false.
+ * @param status error information if maximizing this Locale failed.
+ * If this Locale is not well-formed, the error code is
+ * U_ILLEGAL_ARGUMENT_ERROR.
+ * @internal
+ */
+ void minimizeSubtags(bool favorScript, UErrorCode& status);
#endif /* U_HIDE_INTERNAL_API */
private:
diff --git a/Build/source/libs/icu/icu-src/source/common/unicode/messagepattern.h b/Build/source/libs/icu/icu-src/source/common/unicode/messagepattern.h
index 4c5be13dbc9..55b09bfbd4b 100644
--- a/Build/source/libs/icu/icu-src/source/common/unicode/messagepattern.h
+++ b/Build/source/libs/icu/icu-src/source/common/unicode/messagepattern.h
@@ -388,7 +388,7 @@ public:
* @param pattern a MessageFormat pattern string
* @param parseError Struct to receive information on the position
* of an error within the pattern.
- * Can be NULL.
+ * Can be nullptr.
* @param errorCode Standard ICU error code. Its input value must
* pass the U_SUCCESS() test, or else the function returns
* immediately. Check for U_FAILURE() on output or use with
@@ -428,7 +428,7 @@ public:
* @param pattern a MessageFormat pattern string
* @param parseError Struct to receive information on the position
* of an error within the pattern.
- * Can be NULL.
+ * Can be nullptr.
* @param errorCode Standard ICU error code. Its input value must
* pass the U_SUCCESS() test, or else the function returns
* immediately. Check for U_FAILURE() on output or use with
@@ -448,7 +448,7 @@ public:
* @param pattern a ChoiceFormat pattern string
* @param parseError Struct to receive information on the position
* of an error within the pattern.
- * Can be NULL.
+ * Can be nullptr.
* @param errorCode Standard ICU error code. Its input value must
* pass the U_SUCCESS() test, or else the function returns
* immediately. Check for U_FAILURE() on output or use with
@@ -468,7 +468,7 @@ public:
* @param pattern a PluralFormat pattern string
* @param parseError Struct to receive information on the position
* of an error within the pattern.
- * Can be NULL.
+ * Can be nullptr.
* @param errorCode Standard ICU error code. Its input value must
* pass the U_SUCCESS() test, or else the function returns
* immediately. Check for U_FAILURE() on output or use with
@@ -488,7 +488,7 @@ public:
* @param pattern a SelectFormat pattern string
* @param parseError Struct to receive information on the position
* of an error within the pattern.
- * Can be NULL.
+ * Can be nullptr.
* @param errorCode Standard ICU error code. Its input value must
* pass the U_SUCCESS() test, or else the function returns
* immediately. Check for U_FAILURE() on output or use with
diff --git a/Build/source/libs/icu/icu-src/source/common/unicode/normalizer2.h b/Build/source/libs/icu/icu-src/source/common/unicode/normalizer2.h
index 2d355250c29..6856ff8720b 100644
--- a/Build/source/libs/icu/icu-src/source/common/unicode/normalizer2.h
+++ b/Build/source/libs/icu/icu-src/source/common/unicode/normalizer2.h
@@ -92,7 +92,7 @@ public:
/**
* Returns a Normalizer2 instance for Unicode NFC normalization.
- * Same as getInstance(NULL, "nfc", UNORM2_COMPOSE, errorCode).
+ * Same as getInstance(nullptr, "nfc", UNORM2_COMPOSE, errorCode).
* Returns an unmodifiable singleton instance. Do not delete it.
* @param errorCode Standard ICU error code. Its input value must
* pass the U_SUCCESS() test, or else the function returns
@@ -106,7 +106,7 @@ public:
/**
* Returns a Normalizer2 instance for Unicode NFD normalization.
- * Same as getInstance(NULL, "nfc", UNORM2_DECOMPOSE, errorCode).
+ * Same as getInstance(nullptr, "nfc", UNORM2_DECOMPOSE, errorCode).
* Returns an unmodifiable singleton instance. Do not delete it.
* @param errorCode Standard ICU error code. Its input value must
* pass the U_SUCCESS() test, or else the function returns
@@ -120,7 +120,7 @@ public:
/**
* Returns a Normalizer2 instance for Unicode NFKC normalization.
- * Same as getInstance(NULL, "nfkc", UNORM2_COMPOSE, errorCode).
+ * Same as getInstance(nullptr, "nfkc", UNORM2_COMPOSE, errorCode).
* Returns an unmodifiable singleton instance. Do not delete it.
* @param errorCode Standard ICU error code. Its input value must
* pass the U_SUCCESS() test, or else the function returns
@@ -134,7 +134,7 @@ public:
/**
* Returns a Normalizer2 instance for Unicode NFKD normalization.
- * Same as getInstance(NULL, "nfkc", UNORM2_DECOMPOSE, errorCode).
+ * Same as getInstance(nullptr, "nfkc", UNORM2_DECOMPOSE, errorCode).
* Returns an unmodifiable singleton instance. Do not delete it.
* @param errorCode Standard ICU error code. Its input value must
* pass the U_SUCCESS() test, or else the function returns
@@ -147,8 +147,11 @@ public:
getNFKDInstance(UErrorCode &errorCode);
/**
- * Returns a Normalizer2 instance for Unicode NFKC_Casefold normalization.
- * Same as getInstance(NULL, "nfkc_cf", UNORM2_COMPOSE, errorCode).
+ * Returns a Normalizer2 instance for Unicode toNFKC_Casefold() normalization
+ * which is equivalent to applying the NFKC_Casefold mappings and then NFC.
+ * See https://www.unicode.org/reports/tr44/#NFKC_Casefold
+ *
+ * Same as getInstance(nullptr, "nfkc_cf", UNORM2_COMPOSE, errorCode).
* Returns an unmodifiable singleton instance. Do not delete it.
* @param errorCode Standard ICU error code. Its input value must
* pass the U_SUCCESS() test, or else the function returns
@@ -160,19 +163,38 @@ public:
static const Normalizer2 *
getNFKCCasefoldInstance(UErrorCode &errorCode);
+#ifndef U_HIDE_DRAFT_API
+ /**
+ * Returns a Normalizer2 instance for a variant of Unicode toNFKC_Casefold() normalization
+ * which is equivalent to applying the NFKC_Simple_Casefold mappings and then NFC.
+ * See https://www.unicode.org/reports/tr44/#NFKC_Simple_Casefold
+ *
+ * Same as getInstance(nullptr, "nfkc_scf", UNORM2_COMPOSE, errorCode).
+ * Returns an unmodifiable singleton instance. Do not delete it.
+ * @param errorCode Standard ICU error code. Its input value must
+ * pass the U_SUCCESS() test, or else the function returns
+ * immediately. Check for U_FAILURE() on output or use with
+ * function chaining. (See User Guide for details.)
+ * @return the requested Normalizer2, if successful
+ * @draft ICU 74
+ */
+ static const Normalizer2 *
+ getNFKCSimpleCasefoldInstance(UErrorCode &errorCode);
+#endif // U_HIDE_DRAFT_API
+
/**
* Returns a Normalizer2 instance which uses the specified data file
* (packageName/name similar to ucnv_openPackage() and ures_open()/ResourceBundle)
* and which composes or decomposes text according to the specified mode.
* Returns an unmodifiable singleton instance. Do not delete it.
*
- * Use packageName=NULL for data files that are part of ICU's own data.
+ * Use packageName=nullptr for data files that are part of ICU's own data.
* Use name="nfc" and UNORM2_COMPOSE/UNORM2_DECOMPOSE for Unicode standard NFC/NFD.
* Use name="nfkc" and UNORM2_COMPOSE/UNORM2_DECOMPOSE for Unicode standard NFKC/NFKD.
* Use name="nfkc_cf" and UNORM2_COMPOSE for Unicode standard NFKC_CF=NFKC_Casefold.
*
- * @param packageName NULL for ICU built-in data, otherwise application data package name
- * @param name "nfc" or "nfkc" or "nfkc_cf" or name of custom data file
+ * @param packageName nullptr for ICU built-in data, otherwise application data package name
+ * @param name "nfc" or "nfkc" or "nfkc_cf" or "nfkc_scf" or name of custom data file
* @param mode normalization mode (compose or decompose etc.)
* @param errorCode Standard ICU error code. Its input value must
* pass the U_SUCCESS() test, or else the function returns
@@ -533,7 +555,7 @@ public:
virtual UnicodeString &
normalize(const UnicodeString &src,
UnicodeString &dest,
- UErrorCode &errorCode) const U_OVERRIDE;
+ UErrorCode &errorCode) const override;
/**
* Normalizes a UTF-8 string and optionally records how source substrings
@@ -559,7 +581,7 @@ public:
*/
virtual void
normalizeUTF8(uint32_t options, StringPiece src, ByteSink &sink,
- Edits *edits, UErrorCode &errorCode) const U_OVERRIDE;
+ Edits *edits, UErrorCode &errorCode) const override;
/**
* Appends the normalized form of the second string to the first string
@@ -578,7 +600,7 @@ public:
virtual UnicodeString &
normalizeSecondAndAppend(UnicodeString &first,
const UnicodeString &second,
- UErrorCode &errorCode) const U_OVERRIDE;
+ UErrorCode &errorCode) const override;
/**
* Appends the second string to the first string
* (merging them at the boundary) and returns the first string.
@@ -596,7 +618,7 @@ public:
virtual UnicodeString &
append(UnicodeString &first,
const UnicodeString &second,
- UErrorCode &errorCode) const U_OVERRIDE;
+ UErrorCode &errorCode) const override;
/**
* Gets the decomposition mapping of c.
@@ -610,7 +632,7 @@ public:
* @stable ICU 4.6
*/
virtual UBool
- getDecomposition(UChar32 c, UnicodeString &decomposition) const U_OVERRIDE;
+ getDecomposition(UChar32 c, UnicodeString &decomposition) const override;
/**
* Gets the raw decomposition mapping of c.
@@ -624,7 +646,7 @@ public:
* @stable ICU 49
*/
virtual UBool
- getRawDecomposition(UChar32 c, UnicodeString &decomposition) const U_OVERRIDE;
+ getRawDecomposition(UChar32 c, UnicodeString &decomposition) const override;
/**
* Performs pairwise composition of a & b and returns the composite if there is one.
@@ -637,7 +659,7 @@ public:
* @stable ICU 49
*/
virtual UChar32
- composePair(UChar32 a, UChar32 b) const U_OVERRIDE;
+ composePair(UChar32 a, UChar32 b) const override;
/**
* Gets the combining class of c.
@@ -648,7 +670,7 @@ public:
* @stable ICU 49
*/
virtual uint8_t
- getCombiningClass(UChar32 c) const U_OVERRIDE;
+ getCombiningClass(UChar32 c) const override;
/**
* Tests if the string is normalized.
@@ -662,7 +684,7 @@ public:
* @stable ICU 4.4
*/
virtual UBool
- isNormalized(const UnicodeString &s, UErrorCode &errorCode) const U_OVERRIDE;
+ isNormalized(const UnicodeString &s, UErrorCode &errorCode) const override;
/**
* Tests if the UTF-8 string is normalized.
* Internally, in cases where the quickCheck() method would return "maybe"
@@ -683,7 +705,7 @@ public:
* @stable ICU 60
*/
virtual UBool
- isNormalizedUTF8(StringPiece s, UErrorCode &errorCode) const U_OVERRIDE;
+ isNormalizedUTF8(StringPiece s, UErrorCode &errorCode) const override;
/**
* Tests if the string is normalized.
* For details see the Normalizer2 base class documentation.
@@ -696,7 +718,7 @@ public:
* @stable ICU 4.4
*/
virtual UNormalizationCheckResult
- quickCheck(const UnicodeString &s, UErrorCode &errorCode) const U_OVERRIDE;
+ quickCheck(const UnicodeString &s, UErrorCode &errorCode) const override;
/**
* Returns the end of the normalized substring of the input string.
* For details see the Normalizer2 base class documentation.
@@ -709,7 +731,7 @@ public:
* @stable ICU 4.4
*/
virtual int32_t
- spanQuickCheckYes(const UnicodeString &s, UErrorCode &errorCode) const U_OVERRIDE;
+ spanQuickCheckYes(const UnicodeString &s, UErrorCode &errorCode) const override;
/**
* Tests if the character always has a normalization boundary before it,
@@ -719,7 +741,7 @@ public:
* @return true if c has a normalization boundary before it
* @stable ICU 4.4
*/
- virtual UBool hasBoundaryBefore(UChar32 c) const U_OVERRIDE;
+ virtual UBool hasBoundaryBefore(UChar32 c) const override;
/**
* Tests if the character always has a normalization boundary after it,
@@ -729,7 +751,7 @@ public:
* @return true if c has a normalization boundary after it
* @stable ICU 4.4
*/
- virtual UBool hasBoundaryAfter(UChar32 c) const U_OVERRIDE;
+ virtual UBool hasBoundaryAfter(UChar32 c) const override;
/**
* Tests if the character is normalization-inert.
@@ -738,7 +760,7 @@ public:
* @return true if c is normalization-inert
* @stable ICU 4.4
*/
- virtual UBool isInert(UChar32 c) const U_OVERRIDE;
+ virtual UBool isInert(UChar32 c) const override;
private:
UnicodeString &
normalize(const UnicodeString &src,
diff --git a/Build/source/libs/icu/icu-src/source/common/unicode/normlzr.h b/Build/source/libs/icu/icu-src/source/common/unicode/normlzr.h
index 14b24698850..03a7aa080d1 100644
--- a/Build/source/libs/icu/icu-src/source/common/unicode/normlzr.h
+++ b/Build/source/libs/icu/icu-src/source/common/unicode/normlzr.h
@@ -755,7 +755,7 @@ private:
// Private data
//-------------------------------------------------------------------------
- FilteredNormalizer2*fFilteredNorm2; // owned if not NULL
+ FilteredNormalizer2*fFilteredNorm2; // owned if not nullptr
const Normalizer2 *fNorm2; // not owned; may be equal to fFilteredNorm2
UNormalizationMode fUMode; // deprecated
int32_t fOptions;
diff --git a/Build/source/libs/icu/icu-src/source/common/unicode/parsepos.h b/Build/source/libs/icu/icu-src/source/common/unicode/parsepos.h
index 73945f5f97b..d33a812ad0b 100644
--- a/Build/source/libs/icu/icu-src/source/common/unicode/parsepos.h
+++ b/Build/source/libs/icu/icu-src/source/common/unicode/parsepos.h
@@ -112,7 +112,7 @@ public:
/**
* Clone this object.
* Clones can be used concurrently in multiple threads.
- * If an error occurs, then NULL is returned.
+ * If an error occurs, then nullptr is returned.
* The caller must delete the clone.
*
* @return a clone of this object
diff --git a/Build/source/libs/icu/icu-src/source/common/unicode/platform.h b/Build/source/libs/icu/icu-src/source/common/unicode/platform.h
index 1605226a797..a997843660c 100644
--- a/Build/source/libs/icu/icu-src/source/common/unicode/platform.h
+++ b/Build/source/libs/icu/icu-src/source/common/unicode/platform.h
@@ -460,6 +460,13 @@
# define UPRV_HAS_WARNING(x) 0
#endif
+
+#if defined(__clang__)
+#define UPRV_NO_SANITIZE_UNDEFINED __attribute__((no_sanitize("undefined")))
+#else
+#define UPRV_NO_SANITIZE_UNDEFINED
+#endif
+
/**
* \def U_MALLOC_ATTR
* Attribute to mark functions as malloc-like
@@ -509,26 +516,6 @@
# define U_CPLUSPLUS_VERSION 1
#endif
-#if (U_PLATFORM == U_PF_AIX || U_PLATFORM == U_PF_OS390) && defined(__cplusplus) &&(U_CPLUSPLUS_VERSION < 11)
-// add in std::nullptr_t
-namespace std {
- typedef decltype(nullptr) nullptr_t;
-};
-#endif
-
-/**
- * \def U_NOEXCEPT
- * "noexcept" if supported, otherwise empty.
- * Some code, especially STL containers, uses move semantics of objects only
- * if the move constructor and the move operator are declared as not throwing exceptions.
- * @internal
- */
-#ifdef U_NOEXCEPT
- /* Use the predefined value. */
-#else
-# define U_NOEXCEPT noexcept
-#endif
-
/**
* \def U_FALLTHROUGH
* Annotate intentional fall-through between switch labels.
@@ -757,7 +744,7 @@ namespace std {
* \def U_HAVE_CHAR16_T
* Defines whether the char16_t type is available for UTF-16
* and u"abc" UTF-16 string literals are supported.
- * This is a new standard type and standard string literal syntax in C++0x
+ * This is a new standard type and standard string literal syntax in C++11
* but has been available in some compilers before.
* @internal
*/
@@ -766,12 +753,6 @@ namespace std {
#else
/*
* Notes:
- * Visual Studio 2010 (_MSC_VER==1600) defines char16_t as a typedef
- * and does not support u"abc" string literals.
- * Visual Studio 2015 (_MSC_VER>=1900) and above adds support for
- * both char16_t and u"abc" string literals.
- * gcc 4.4 defines the __CHAR16_TYPE__ macro to a usable type but
- * does not support u"abc" string literals.
* C++11 and C11 require support for UTF-16 literals
* TODO: Fix for plain C. Doesn't work on Mac.
*/
diff --git a/Build/source/libs/icu/icu-src/source/common/unicode/rbbi.h b/Build/source/libs/icu/icu-src/source/common/unicode/rbbi.h
index d878243e3fe..045238ac5d7 100644
--- a/Build/source/libs/icu/icu-src/source/common/unicode/rbbi.h
+++ b/Build/source/libs/icu/icu-src/source/common/unicode/rbbi.h
@@ -43,6 +43,69 @@ class RBBIDataWrapper;
class UnhandledEngine;
class UStack;
+
+#ifndef U_HIDE_DRAFT_API
+/**
+ * The ExternalBreakEngine class define an abstract interface for the host environment
+ * to provide a low level facility to break text for unicode text in script that the text boundary
+ * cannot be handled by upper level rule based logic, for example, for Chinese and Japanese
+ * word breaking, Thai, Khmer, Burmese, Lao and other Southeast Asian scripts.
+ * The host environment implement one or more subclass of ExternalBreakEngine and
+ * register them in the initialization time by calling
+ * RuleBasedBreakIterator::registerExternalBreakEngine(). ICU adopt and own the engine and will
+ * delete the registered external engine in proper time during the clean up
+ * event.
+ * @internal ICU 74 technology preview
+ */
+class ExternalBreakEngine : public UObject {
+ public:
+ /**
+ * destructor
+ * @internal ICU 74 technology preview
+ */
+ virtual ~ExternalBreakEngine() {}
+
+ /**
+ * <p>Indicate whether this engine handles a particular character when
+ * the RuleBasedBreakIterator is used for a particular locale. This method is used
+ * by the RuleBasedBreakIterator to find a break engine.</p>
+ * @param c A character which begins a run that the engine might handle.
+ * @param locale The locale.
+ * @return true if this engine handles the particular character for that locale.
+ * @internal ICU 74 technology preview
+ */
+ virtual bool isFor(UChar32 c, const char* locale) const = 0;
+
+ /**
+ * <p>Indicate whether this engine handles a particular character.This method is
+ * used by the RuleBasedBreakIterator after it already find a break engine to see which
+ * characters after the first one can be handled by this break engine.</p>
+ * @param c A character that the engine might handle.
+ * @return true if this engine handles the particular character.
+ * @internal ICU 74 technology preview
+ */
+ virtual bool handles(UChar32 c) const = 0;
+
+ /**
+ * <p>Divide up a range of text handled by this break engine.</p>
+ *
+ * @param text A UText representing the text
+ * @param start The start of the range of known characters
+ * @param end The end of the range of known characters
+ * @param foundBreaks Output of C array of int32_t break positions, or
+ * nullptr
+ * @param foundBreaksCapacity The capacity of foundBreaks
+ * @param status Information on any errors encountered.
+ * @return The number of breaks found
+ * @internal ICU 74 technology preview
+ */
+ virtual int32_t fillBreaks(UText* text, int32_t start, int32_t end,
+ int32_t* foundBreaks, int32_t foundBreaksCapacity,
+ UErrorCode& status) const = 0;
+};
+#endif /* U_HIDE_DRAFT_API */
+
+
/**
*
* A subclass of BreakIterator whose behavior is specified using a list of rules.
@@ -54,14 +117,14 @@ class UStack;
*
* <p>This class is not intended to be subclassed.</p>
*/
-class U_COMMON_API RuleBasedBreakIterator /*U_FINAL*/ : public BreakIterator {
+class U_COMMON_API RuleBasedBreakIterator /*final*/ : public BreakIterator {
private:
/**
* The UText through which this BreakIterator accesses the text
* @internal (private)
*/
- UText fText;
+ UText fText = UTEXT_INITIALIZER;
#ifndef U_HIDE_INTERNAL_API
public:
@@ -71,32 +134,38 @@ public:
* Not for general use; Public only for testing purposes.
* @internal
*/
- RBBIDataWrapper *fData;
+ RBBIDataWrapper *fData = nullptr;
+
private:
+ /**
+ * The saved error code associated with this break iterator.
+ * This is the value to be returned by copyErrorTo().
+ */
+ UErrorCode fErrorCode = U_ZERO_ERROR;
/**
* The current position of the iterator. Pinned, 0 < fPosition <= text.length.
* Never has the value UBRK_DONE (-1).
*/
- int32_t fPosition;
+ int32_t fPosition = 0;
/**
* TODO:
*/
- int32_t fRuleStatusIndex;
+ int32_t fRuleStatusIndex = 0;
/**
* Cache of previously determined boundary positions.
*/
class BreakCache;
- BreakCache *fBreakCache;
+ BreakCache *fBreakCache = nullptr;
/**
* Cache of boundary positions within a region of text that has been
* sub-divided by dictionary based breaking.
*/
class DictionaryCache;
- DictionaryCache *fDictionaryCache;
+ DictionaryCache *fDictionaryCache = nullptr;
/**
*
@@ -105,7 +174,7 @@ private:
* handle a given character.
* @internal (private)
*/
- UStack *fLanguageBreakEngines;
+ UStack *fLanguageBreakEngines = nullptr;
/**
*
@@ -114,43 +183,43 @@ private:
* LanguageBreakEngine.
* @internal (private)
*/
- UnhandledEngine *fUnhandledBreakEngine;
+ UnhandledEngine *fUnhandledBreakEngine = nullptr;
/**
* Counter for the number of characters encountered with the "dictionary"
* flag set.
* @internal (private)
*/
- uint32_t fDictionaryCharCount;
+ uint32_t fDictionaryCharCount = 0;
/**
* A character iterator that refers to the same text as the UText, above.
* Only included for compatibility with old API, which was based on CharacterIterators.
* Value may be adopted from outside, or one of fSCharIter or fDCharIter, below.
*/
- CharacterIterator *fCharIter;
+ CharacterIterator *fCharIter = &fSCharIter;
/**
* When the input text is provided by a UnicodeString, this will point to
* a characterIterator that wraps that data. Needed only for the
* implementation of getText(), a backwards compatibility issue.
*/
- StringCharacterIterator fSCharIter;
+ UCharCharacterIterator fSCharIter {u"", 0};
/**
* True when iteration has run off the end, and iterator functions should return UBRK_DONE.
*/
- UBool fDone;
+ bool fDone = false;
/**
* Array of look-ahead tentative results.
*/
- int32_t *fLookAheadMatches;
+ int32_t *fLookAheadMatches = nullptr;
/**
* A flag to indicate if phrase based breaking is enabled.
*/
- UBool fIsPhraseBreaking;
+ UBool fIsPhraseBreaking = false;
//=======================================================================
// constructors
@@ -188,10 +257,19 @@ private:
/** @internal */
friend class BreakIterator;
+ /**
+ * Default constructor with an error code parameter.
+ * Aside from error handling, otherwise identical to the default constructor.
+ * Internally, handles common initialization for other constructors.
+ * @internal (private)
+ */
+ RuleBasedBreakIterator(UErrorCode *status);
+
public:
/** Default constructor. Creates an empty shell of an iterator, with no
- * rules or text to iterate over. Object can subsequently be assigned to.
+ * rules or text to iterate over. Object can subsequently be assigned to,
+ * but is otherwise unusable.
* @stable ICU 2.2
*/
RuleBasedBreakIterator();
@@ -289,7 +367,9 @@ public:
* @return true if both BreakIterators are not same.
* @stable ICU 2.0
*/
- inline bool operator!=(const BreakIterator& that) const;
+ inline bool operator!=(const BreakIterator& that) const {
+ return !operator==(that);
+ }
/**
* Returns a newly-constructed RuleBasedBreakIterator with the same
@@ -335,8 +415,7 @@ public:
* </p>
* <p>
* When the break iterator is operating on text supplied via a UText,
- * this function will fail. Lacking any way to signal failures, it
- * returns an CharacterIterator containing no text.
+ * this function will fail, returning a CharacterIterator containing no text.
* The function getUText() provides similar functionality,
* is reliable, and is more efficient.
* </p>
@@ -356,7 +435,7 @@ public:
* access the text without impacting any break iterator operations,
* but the underlying text itself must not be altered.
*
- * @param fillIn A UText to be filled in. If NULL, a new UText will be
+ * @param fillIn A UText to be filled in. If nullptr, a new UText will be
* allocated to hold the result.
* @param status receives any error codes.
* @return The current UText for this break iterator. If an input
@@ -576,7 +655,7 @@ public:
* tricky. Use clone() instead.
*
* @param stackBuffer The pointer to the memory into which the cloned object
- * should be placed. If NULL, allocate heap memory
+ * should be placed. If nullptr, allocate heap memory
* for the cloned object.
* @param BufferSize The size of the buffer. If zero, return the required
* buffer size, but do not clone the object. If the
@@ -649,12 +728,6 @@ private:
// implementation
//=======================================================================
/**
- * Common initialization function, used by constructors and bufferClone.
- * @internal (private)
- */
- void init(UErrorCode &status);
-
- /**
* Iterate backwards from an arbitrary position in the input text using the
* synthesized Safe Reverse rules.
* This locates a "Safe Position" from which the forward break rules
@@ -706,9 +779,10 @@ private:
* This function returns the appropriate LanguageBreakEngine for a
* given character c.
* @param c A character in the dictionary set
+ * @param locale The locale.
* @internal (private)
*/
- const LanguageBreakEngine *getLanguageBreakEngine(UChar32 c);
+ const LanguageBreakEngine *getLanguageBreakEngine(UChar32 c, const char* locale);
public:
#ifndef U_HIDE_INTERNAL_API
@@ -724,17 +798,23 @@ private:
*/
void dumpTables();
#endif /* U_HIDE_INTERNAL_API */
-};
-//------------------------------------------------------------------------------
-//
-// Inline Functions Definitions ...
-//
-//------------------------------------------------------------------------------
+#ifndef U_HIDE_DRAFT_API
+ /**
+ * Register a new external break engine. The external break engine will be adopted.
+ * Because ICU may choose to cache break engine internally, this must
+ * be called at application startup, prior to any calls to
+ * object methods of RuleBasedBreakIterator to avoid undefined behavior.
+ * @param toAdopt the ExternalBreakEngine instance to be adopted
+ * @param status the in/out status code, no special meanings are assigned
+ * @internal ICU 74 technology preview
+ */
+ static void U_EXPORT2 registerExternalBreakEngine(
+ ExternalBreakEngine* toAdopt, UErrorCode& status);
+#endif /* U_HIDE_DRAFT_API */
+
+};
-inline bool RuleBasedBreakIterator::operator!=(const BreakIterator& that) const {
- return !operator==(that);
-}
U_NAMESPACE_END
diff --git a/Build/source/libs/icu/icu-src/source/common/unicode/rep.h b/Build/source/libs/icu/icu-src/source/common/unicode/rep.h
index 6dd4530647e..7115c97b829 100644
--- a/Build/source/libs/icu/icu-src/source/common/unicode/rep.h
+++ b/Build/source/libs/icu/icu-src/source/common/unicode/rep.h
@@ -192,7 +192,7 @@ public:
* Clone this object, an instance of a subclass of Replaceable.
* Clones can be used concurrently in multiple threads.
* If a subclass does not implement clone(), or if an error occurs,
- * then NULL is returned.
+ * then nullptr is returned.
* The caller must delete the clone.
*
* @return a clone of this object
diff --git a/Build/source/libs/icu/icu-src/source/common/unicode/resbund.h b/Build/source/libs/icu/icu-src/source/common/unicode/resbund.h
index 6e26a40591f..30fc2ac0ab2 100644
--- a/Build/source/libs/icu/icu-src/source/common/unicode/resbund.h
+++ b/Build/source/libs/icu/icu-src/source/common/unicode/resbund.h
@@ -143,7 +143,7 @@ public:
* or equivalent. Typically, packageName will refer to a (.dat) file, or to
* a package registered with udata_setAppData(). Using a full file or directory
* pathname for packageName is deprecated.
- * NULL is used to refer to ICU data.
+ * nullptr is used to refer to ICU data.
* @param locale The locale for which to open a resource bundle.
* @param err A UErrorCode value
* @stable ICU 2.0
@@ -189,7 +189,7 @@ public:
/**
* Clone this object.
* Clones can be used concurrently in multiple threads.
- * If an error occurs, then NULL is returned.
+ * If an error occurs, then nullptr is returned.
* The caller must delete the clone.
*
* @return a clone of this object
@@ -304,7 +304,7 @@ public:
* Returns the key associated with this 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
+ * @return a key associated to this resource, or nullptr if it doesn't have a key
* @stable ICU 2.0
*/
const char*
@@ -331,7 +331,7 @@ public:
getType(void) const;
/**
- * Returns the next resource in a given resource or NULL if there are no more resources
+ * Returns the next resource in a given resource or nullptr if there are no more resources
*
* @param status fills in the outgoing error code
* @return ResourceBundle object.
@@ -341,7 +341,7 @@ public:
getNext(UErrorCode& status);
/**
- * Returns the next string in a resource or NULL if there are no more resources
+ * Returns the next string in a resource or nullptr if there are no more resources
* to iterate over.
*
* @param status fills in the outgoing error code
@@ -352,7 +352,7 @@ public:
getNextString(UErrorCode& status);
/**
- * Returns the next string in a resource or NULL if there are no more resources
+ * Returns the next string in a resource or nullptr if there are no more resources
* to iterate over.
*
* @param key fill in for key associated with this string
diff --git a/Build/source/libs/icu/icu-src/source/common/unicode/simpleformatter.h b/Build/source/libs/icu/icu-src/source/common/unicode/simpleformatter.h
index 6d9c04ace23..7f58106fadb 100644
--- a/Build/source/libs/icu/icu-src/source/common/unicode/simpleformatter.h
+++ b/Build/source/libs/icu/icu-src/source/common/unicode/simpleformatter.h
@@ -59,7 +59,7 @@ class SimpleModifier;
* @see UMessagePatternApostropheMode
* @stable ICU 57
*/
-class U_COMMON_API SimpleFormatter U_FINAL : public UMemory {
+class U_COMMON_API SimpleFormatter final : public UMemory {
public:
/**
* Default constructor.
@@ -217,13 +217,13 @@ public:
*
* @param values The argument values.
* An argument value must not be the same object as appendTo.
- * Can be NULL if valuesLength==getArgumentLimit()==0.
+ * Can be nullptr if valuesLength==getArgumentLimit()==0.
* @param valuesLength The length of the values array.
* Must be at least getArgumentLimit().
* @param appendTo Gets the formatted pattern and values appended.
* @param offsets offsets[i] receives the offset of where
* values[i] replaced pattern argument {i}.
- * Can be shorter or longer than values. Can be NULL if offsetsLength==0.
+ * Can be shorter or longer than values. Can be nullptr if offsetsLength==0.
* If there is no {i} in the pattern, then offsets[i] is set to -1.
* @param offsetsLength The length of the offsets array.
* @param errorCode ICU error code in/out parameter.
@@ -243,13 +243,13 @@ public:
*
* @param values The argument values.
* An argument value may be the same object as result.
- * Can be NULL if valuesLength==getArgumentLimit()==0.
+ * Can be nullptr if valuesLength==getArgumentLimit()==0.
* @param valuesLength The length of the values array.
* Must be at least getArgumentLimit().
* @param result Gets its contents replaced by the formatted pattern and values.
* @param offsets offsets[i] receives the offset of where
* values[i] replaced pattern argument {i}.
- * Can be shorter or longer than values. Can be NULL if offsetsLength==0.
+ * Can be shorter or longer than values. Can be nullptr if offsetsLength==0.
* If there is no {i} in the pattern, then offsets[i] is set to -1.
* @param offsetsLength The length of the offsets array.
* @param errorCode ICU error code in/out parameter.
diff --git a/Build/source/libs/icu/icu-src/source/common/unicode/strenum.h b/Build/source/libs/icu/icu-src/source/common/unicode/strenum.h
index 1d1b37940a8..fba5c9b8147 100644
--- a/Build/source/libs/icu/icu-src/source/common/unicode/strenum.h
+++ b/Build/source/libs/icu/icu-src/source/common/unicode/strenum.h
@@ -70,7 +70,7 @@ public:
* Clone this object, an instance of a subclass of StringEnumeration.
* Clones can be used concurrently in multiple threads.
* If a subclass does not implement clone(), or if an error occurs,
- * then NULL is returned.
+ * then nullptr is returned.
* The caller must delete the clone.
*
* @return a clone of this object
@@ -101,8 +101,8 @@ public:
/**
* <p>Returns the next element as a NUL-terminated char*. If there
- * are no more elements, returns NULL. If the resultLength pointer
- * is not NULL, the length of the string (not counting the
+ * are no more elements, returns nullptr. If the resultLength pointer
+ * is not nullptr, the length of the string (not counting the
* terminating NUL) is returned at that address. If an error
* status is returned, the value at resultLength is undefined.</p>
*
@@ -111,21 +111,21 @@ public:
* to next, unext, snext, reset, or the enumerator's destructor.</p>
*
* <p>If the iterator is out of sync with its service, status is set
- * to U_ENUM_OUT_OF_SYNC_ERROR and NULL is returned.</p>
+ * to U_ENUM_OUT_OF_SYNC_ERROR and nullptr is returned.</p>
*
* <p>If the native service string is a char16_t* string, it is
* converted to char* with the invariant converter. If the
* conversion fails (because a character cannot be converted) then
* status is set to U_INVARIANT_CONVERSION_ERROR and the return
- * value is undefined (though not NULL).</p>
+ * value is undefined (though not nullptr).</p>
*
* Starting with ICU 2.8, the default implementation calls snext()
* and handles the conversion.
* Either next() or snext() must be implemented differently by a subclass.
*
* @param status the error code.
- * @param resultLength a pointer to receive the length, can be NULL.
- * @return a pointer to the string, or NULL.
+ * @param resultLength a pointer to receive the length, can be nullptr.
+ * @return a pointer to the string, or nullptr.
*
* @stable ICU 2.4
*/
@@ -133,8 +133,8 @@ public:
/**
* <p>Returns the next element as a NUL-terminated char16_t*. If there
- * are no more elements, returns NULL. If the resultLength pointer
- * is not NULL, the length of the string (not counting the
+ * are no more elements, returns nullptr. If the resultLength pointer
+ * is not nullptr, the length of the string (not counting the
* terminating NUL) is returned at that address. If an error
* status is returned, the value at resultLength is undefined.</p>
*
@@ -143,14 +143,14 @@ public:
* to next, unext, snext, reset, or the enumerator's destructor.</p>
*
* <p>If the iterator is out of sync with its service, status is set
- * to U_ENUM_OUT_OF_SYNC_ERROR and NULL is returned.</p>
+ * to U_ENUM_OUT_OF_SYNC_ERROR and nullptr is returned.</p>
*
* Starting with ICU 2.8, the default implementation calls snext()
* and handles the conversion.
*
* @param status the error code.
- * @param resultLength a pointer to receive the length, can be NULL.
- * @return a pointer to the string, or NULL.
+ * @param resultLength a pointer to receive the length, can be nullptr.
+ * @return a pointer to the string, or nullptr.
*
* @stable ICU 2.4
*/
@@ -158,21 +158,21 @@ public:
/**
* <p>Returns the next element a UnicodeString*. If there are no
- * more elements, returns NULL.</p>
+ * more elements, returns nullptr.</p>
*
* <p>The returned pointer is owned by this iterator and must not be
* deleted by the caller. The pointer is valid until the next call
* to next, unext, snext, reset, or the enumerator's destructor.</p>
*
* <p>If the iterator is out of sync with its service, status is set
- * to U_ENUM_OUT_OF_SYNC_ERROR and NULL is returned.</p>
+ * to U_ENUM_OUT_OF_SYNC_ERROR and nullptr is returned.</p>
*
* Starting with ICU 2.8, the default implementation calls next()
* and handles the conversion.
* Either next() or snext() must be implemented differently by a subclass.
*
* @param status the error code.
- * @return a pointer to the string, or NULL.
+ * @return a pointer to the string, or nullptr.
*
* @stable ICU 2.4
*/
diff --git a/Build/source/libs/icu/icu-src/source/common/unicode/stringtriebuilder.h b/Build/source/libs/icu/icu-src/source/common/unicode/stringtriebuilder.h
index b7a9b23d22b..429d7883f15 100644
--- a/Build/source/libs/icu/icu-src/source/common/unicode/stringtriebuilder.h
+++ b/Build/source/libs/icu/icu-src/source/common/unicode/stringtriebuilder.h
@@ -152,7 +152,7 @@ protected:
* equivalent to newNode.
* @param newNode Input node. The builder takes ownership.
* @param errorCode ICU in/out UErrorCode.
- Set to U_MEMORY_ALLOCATION_ERROR if it was success but newNode==NULL.
+ Set to U_MEMORY_ALLOCATION_ERROR if it was success but newNode==nullptr.
* @return newNode if it is the first of its kind, or
* an equivalent node if newNode is a duplicate.
* @internal
@@ -164,7 +164,7 @@ protected:
* Avoids creating a node if the value is a duplicate.
* @param value A final value.
* @param errorCode ICU in/out UErrorCode.
- Set to U_MEMORY_ALLOCATION_ERROR if it was success but newNode==NULL.
+ Set to U_MEMORY_ALLOCATION_ERROR if it was success but newNode==nullptr.
* @return A FinalValueNode with the given value.
* @internal
*/
@@ -176,11 +176,11 @@ protected:
* registerNode() and registerFinalValue() take ownership of their input nodes,
* and only return owned nodes.
* If they see a failure UErrorCode, they will delete the input node.
- * If they get a NULL pointer, they will record a U_MEMORY_ALLOCATION_ERROR.
- * If there is a failure, they return NULL.
+ * If they get a nullptr pointer, they will record a U_MEMORY_ALLOCATION_ERROR.
+ * If there is a failure, they return nullptr.
*
- * NULL Node pointers can be safely passed into other Nodes because
- * they call the static Node::hashCode() which checks for a NULL pointer first.
+ * nullptr Node pointers can be safely passed into other Nodes because
+ * they call the static Node::hashCode() which checks for a nullptr pointer first.
*
* Therefore, as long as builder functions register a new node,
* they need to check for failures only before explicitly dereferencing
@@ -201,8 +201,8 @@ protected:
public:
Node(int32_t initialHash) : hash(initialHash), offset(0) {}
inline int32_t hashCode() const { return hash; }
- // Handles node==NULL.
- static inline int32_t hashCode(const Node *node) { return node==NULL ? 0 : node->hashCode(); }
+ // Handles node==nullptr.
+ static inline int32_t hashCode(const Node *node) { return node==nullptr ? 0 : node->hashCode(); }
// Base class operator==() compares the actual class types.
virtual bool operator==(const Node &other) const;
inline bool operator!=(const Node &other) const { return !operator==(other); }
@@ -347,7 +347,7 @@ protected:
// Adds a unit with a final value.
void add(int32_t c, int32_t value) {
units[length]=(char16_t)c;
- equal[length]=NULL;
+ equal[length]=nullptr;
values[length]=value;
++length;
hash=(hash*37u+c)*37u+value;
@@ -361,7 +361,7 @@ protected:
hash=(hash*37u+c)*37u+hashCode(node);
}
protected:
- Node *equal[kMaxBranchLinearSubNodeLength]; // NULL means "has final value".
+ Node *equal[kMaxBranchLinearSubNodeLength]; // nullptr means "has final value".
int32_t length;
int32_t values[kMaxBranchLinearSubNodeLength];
char16_t units[kMaxBranchLinearSubNodeLength];
diff --git a/Build/source/libs/icu/icu-src/source/common/unicode/symtable.h b/Build/source/libs/icu/icu-src/source/common/unicode/symtable.h
index b64d877f974..647a3884a00 100644
--- a/Build/source/libs/icu/icu-src/source/common/unicode/symtable.h
+++ b/Build/source/libs/icu/icu-src/source/common/unicode/symtable.h
@@ -73,10 +73,10 @@ public:
/**
* Lookup the characters associated with this string and return it.
- * Return <tt>NULL</tt> if no such name exists. The resultant
+ * Return <tt>nullptr</tt> if no such name exists. The resultant
* string may have length zero.
* @param s the symbolic name to lookup
- * @return a string containing the name's value, or <tt>NULL</tt> if
+ * @return a string containing the name's value, or <tt>nullptr</tt> if
* there is no mapping for s.
* @stable ICU 2.8
*/
@@ -84,10 +84,10 @@ public:
/**
* Lookup the UnicodeMatcher associated with the given character, and
- * return it. Return <tt>NULL</tt> if not found.
+ * return it. Return <tt>nullptr</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.
+ * character, or nullptr if there is no mapping for ch.
* @stable ICU 2.8
*/
virtual const UnicodeFunctor* lookupMatcher(UChar32 ch) const = 0;
diff --git a/Build/source/libs/icu/icu-src/source/common/unicode/uchar.h b/Build/source/libs/icu/icu-src/source/common/unicode/uchar.h
index 6bb68e62a9d..7470891338a 100644
--- a/Build/source/libs/icu/icu-src/source/common/unicode/uchar.h
+++ b/Build/source/libs/icu/icu-src/source/common/unicode/uchar.h
@@ -60,7 +60,7 @@ U_CDECL_BEGIN
* @see u_getUnicodeVersion
* @stable ICU 2.0
*/
-#define U_UNICODE_VERSION "15.0"
+#define U_UNICODE_VERSION "15.1"
/**
* \file
@@ -532,12 +532,33 @@ typedef enum UProperty {
* @stable ICU 70
*/
UCHAR_RGI_EMOJI=71,
+#ifndef U_HIDE_DRAFT_API
+ /**
+ * Binary property IDS_Unary_Operator.
+ * For programmatic determination of Ideographic Description Sequences.
+ *
+ * @draft ICU 74
+ */
+ UCHAR_IDS_UNARY_OPERATOR=72,
+ /**
+ * Binary property ID_Compat_Math_Start.
+ * Used in mathematical identifier profile in UAX #31.
+ * @draft ICU 74
+ */
+ UCHAR_ID_COMPAT_MATH_START=73,
+ /**
+ * Binary property ID_Compat_Math_Continue.
+ * Used in mathematical identifier profile in UAX #31.
+ * @draft ICU 74
+ */
+ UCHAR_ID_COMPAT_MATH_CONTINUE=74,
+#endif // U_HIDE_DRAFT_API
#ifndef U_HIDE_DEPRECATED_API
/**
* One more than the last constant for binary Unicode properties.
* @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
*/
- UCHAR_BINARY_LIMIT=72,
+ UCHAR_BINARY_LIMIT=75,
#endif // U_HIDE_DEPRECATED_API
/** Enumerated property Bidi_Class.
@@ -1900,6 +1921,11 @@ enum UBlockCode {
/** @stable ICU 72 */
UBLOCK_NAG_MUNDARI = 327, /*[1E4D0]*/
+ // New block in Unicode 15.1
+
+ /** @stable ICU 74 */
+ UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_I = 328, /*[2EBF0]*/
+
#ifndef U_HIDE_DEPRECATED_API
/**
* One more than the highest normal UBlockCode value.
@@ -1907,7 +1933,7 @@ enum UBlockCode {
*
* @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
*/
- UBLOCK_COUNT = 328,
+ UBLOCK_COUNT = 329,
#endif // U_HIDE_DEPRECATED_API
/** @stable ICU 2.0 */
@@ -2439,6 +2465,16 @@ typedef enum ULineBreak {
U_LB_E_MODIFIER = 41, /*[EM]*/
/** @stable ICU 58 */
U_LB_ZWJ = 42, /*[ZWJ]*/
+ /** @stable ICU 74 */
+ U_LB_AKSARA = 43, /*[AK]*/
+ /** @stable ICU 74 */
+ U_LB_AKSARA_PREBASE = 44, /*[AP]*/
+ /** @stable ICU 74 */
+ U_LB_AKSARA_START = 45, /*[AS]*/
+ /** @stable ICU 74 */
+ U_LB_VIRAMA_FINAL = 46, /*[VF]*/
+ /** @stable ICU 74 */
+ U_LB_VIRAMA = 47, /*[VI]*/
#ifndef U_HIDE_DEPRECATED_API
/**
* One more than the highest normal ULineBreak value.
@@ -2446,7 +2482,7 @@ typedef enum ULineBreak {
*
* @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
*/
- U_LB_COUNT = 43
+ U_LB_COUNT = 48
#endif // U_HIDE_DEPRECATED_API
} ULineBreak;
@@ -3836,13 +3872,10 @@ u_getPropertyValueEnum(UProperty property,
const char* alias);
/**
- * Determines if the specified character is permissible as the
- * first character in an identifier according to Unicode
- * (The Unicode Standard, Version 3.0, chapter 5.16 Identifiers).
- * True for characters with general categories "L" (letters) and "Nl" (letter numbers).
+ * Determines if the specified character is permissible as the first character in an identifier
+ * according to UAX #31 Unicode Identifier and Pattern Syntax.
*
- * Same as java.lang.Character.isUnicodeIdentifierStart().
- * Same as UCHAR_ID_START
+ * Same as Unicode ID_Start (UCHAR_ID_START).
*
* @param c the code point to be tested
* @return true if the code point may start an identifier
@@ -3856,20 +3889,13 @@ U_CAPI UBool U_EXPORT2
u_isIDStart(UChar32 c);
/**
- * Determines if the specified character is permissible
- * in an identifier according to Java.
- * True for characters with general categories "L" (letters),
- * "Nl" (letter numbers), "Nd" (decimal digits),
- * "Mc" and "Mn" (combining marks), "Pc" (connecting punctuation), and
- * u_isIDIgnorable(c).
+ * Determines if the specified character is permissible as a non-initial character of an identifier
+ * according to UAX #31 Unicode Identifier and Pattern Syntax.
*
- * Same as java.lang.Character.isUnicodeIdentifierPart().
- * Almost the same as Unicode's ID_Continue (UCHAR_ID_CONTINUE)
- * except that Unicode recommends to ignore Cf which is less than
- * u_isIDIgnorable(c).
+ * Same as Unicode ID_Continue (UCHAR_ID_CONTINUE).
*
* @param c the code point to be tested
- * @return true if the code point may occur in an identifier according to Java
+ * @return true if the code point may occur as a non-initial character of an identifier
*
* @see UCHAR_ID_CONTINUE
* @see u_isIDStart
diff --git a/Build/source/libs/icu/icu-src/source/common/unicode/ucharstrie.h b/Build/source/libs/icu/icu-src/source/common/unicode/ucharstrie.h
index 064244a74c1..fa1b55616c6 100644
--- a/Build/source/libs/icu/icu-src/source/common/unicode/ucharstrie.h
+++ b/Build/source/libs/icu/icu-src/source/common/unicode/ucharstrie.h
@@ -67,7 +67,7 @@ public:
* @stable ICU 4.8
*/
UCharsTrie(ConstChar16Ptr trieUChars)
- : ownedArray_(NULL), uchars_(trieUChars),
+ : ownedArray_(nullptr), uchars_(trieUChars),
pos_(uchars_), remainingMatchLength_(-1) {}
/**
@@ -83,7 +83,7 @@ public:
* @stable ICU 4.8
*/
UCharsTrie(const UCharsTrie &other)
- : ownedArray_(NULL), uchars_(other.uchars_),
+ : ownedArray_(nullptr), uchars_(other.uchars_),
pos_(other.pos_), remainingMatchLength_(other.remainingMatchLength_) {}
/**
@@ -141,7 +141,7 @@ public:
* Constructs an empty State.
* @stable ICU 4.8
*/
- State() { uchars=NULL; }
+ State() { uchars=nullptr; }
private:
friend class UCharsTrie;
@@ -175,7 +175,7 @@ public:
* @stable ICU 4.8
*/
UCharsTrie &resetToState(const State &state) {
- if(uchars_==state.uchars && uchars_!=NULL) {
+ if(uchars_==state.uchars && uchars_!=nullptr) {
pos_=state.pos;
remainingMatchLength_=state.remainingMatchLength;
}
@@ -239,7 +239,7 @@ public:
* result=next(c);
* return result;
* \endcode
- * @param s A string. Can be NULL if length is 0.
+ * @param s A string. Can be nullptr if length is 0.
* @param length The length of the string. Can be -1 if NUL-terminated.
* @return The match/value Result.
* @stable ICU 4.8
@@ -275,7 +275,7 @@ public:
inline UBool hasUniqueValue(int32_t &uniqueValue) const {
const char16_t *pos=pos_;
// Skip the rest of a pending linear-match node.
- return pos!=NULL && findUniqueValue(pos+remainingMatchLength_+1, false, uniqueValue);
+ return pos!=nullptr && findUniqueValue(pos+remainingMatchLength_+1, false, uniqueValue);
}
/**
@@ -367,7 +367,7 @@ public:
private:
UBool truncateAndStop() {
- pos_=NULL;
+ pos_=nullptr;
value_=-1; // no real value for str
return true;
}
@@ -412,7 +412,7 @@ private:
UCharsTrie &operator=(const UCharsTrie &other) = delete;
inline void stop() {
- pos_=NULL;
+ pos_=nullptr;
}
// Reads a compact 32-bit integer.
@@ -610,7 +610,7 @@ private:
// Iterator variables.
- // Pointer to next trie unit to read. NULL if no more matches.
+ // Pointer to next trie unit to read. nullptr if no more matches.
const char16_t *pos_;
// Remaining length of a linear-match node, minus 1. Negative if not in such a node.
int32_t remainingMatchLength_;
diff --git a/Build/source/libs/icu/icu-src/source/common/unicode/uclean.h b/Build/source/libs/icu/icu-src/source/common/unicode/uclean.h
index c2d920a16ef..f5b0aa088a9 100644
--- a/Build/source/libs/icu/icu-src/source/common/unicode/uclean.h
+++ b/Build/source/libs/icu/icu-src/source/common/unicode/uclean.h
@@ -114,7 +114,8 @@ typedef void *U_CALLCONV UMemAllocFn(const void *context, size_t size);
/**
* Pointer type for a user supplied memory re-allocation function.
* @param context user supplied value, obtained from u_setMemoryFunctions().
- * @param size The number of bytes to be allocated
+ * @param mem Pointer to the memory block to be resized.
+ * @param size The new size for the block.
* @return Pointer to the newly allocated memory, or NULL if the allocation failed.
* @stable ICU 2.8
* @system
@@ -124,8 +125,7 @@ typedef void *U_CALLCONV UMemReallocFn(const void *context, void *mem, size_t si
* Pointer type for a user supplied memory free function. Behavior should be
* similar the standard C library free().
* @param context user supplied value, obtained from u_setMemoryFunctions().
- * @param mem Pointer to the memory block to be resized
- * @param size The new size for the block
+ * @param mem Pointer to the memory block to be freed.
* @return Pointer to the resized memory block, or NULL if the resizing failed.
* @stable ICU 2.8
* @system
diff --git a/Build/source/libs/icu/icu-src/source/common/unicode/uconfig.h b/Build/source/libs/icu/icu-src/source/common/unicode/uconfig.h
index bbc232d1ed8..3818ca02ef8 100644
--- a/Build/source/libs/icu/icu-src/source/common/unicode/uconfig.h
+++ b/Build/source/libs/icu/icu-src/source/common/unicode/uconfig.h
@@ -323,6 +323,16 @@
# define UCONFIG_NO_NORMALIZATION 0
#endif
+/**
+ * \def UCONFIG_USE_ML_PHRASE_BREAKING
+ * This switch turns on BudouX ML phrase-based line breaking, rather than using the dictionary.
+ *
+ * @internal
+ */
+#ifndef UCONFIG_USE_ML_PHRASE_BREAKING
+# define UCONFIG_USE_ML_PHRASE_BREAKING 0
+#endif
+
#if UCONFIG_NO_NORMALIZATION
/* common library */
/* ICU 50 CJK dictionary BreakIterator uses normalization */
diff --git a/Build/source/libs/icu/icu-src/source/common/unicode/udata.h b/Build/source/libs/icu/icu-src/source/common/unicode/udata.h
index c5b1adc359c..4cda255010a 100644
--- a/Build/source/libs/icu/icu-src/source/common/unicode/udata.h
+++ b/Build/source/libs/icu/icu-src/source/common/unicode/udata.h
@@ -306,7 +306,7 @@ udata_getInfo(UDataMemory *pData, UDataInfo *pInfo);
* area in memory.
*
* ICU data must be at least 8-aligned, and should be 16-aligned.
- * See https://unicode-org.github.io/icu/userguide/icudata
+ * See https://unicode-org.github.io/icu/userguide/icu_data
*
* The format of this data is that of the icu common data file, as is
* generated by the pkgdata tool with mode=common or mode=dll.
@@ -353,7 +353,7 @@ udata_setCommonData(const void *data, UErrorCode *err);
* pointer.
*
* ICU data must be at least 8-aligned, and should be 16-aligned.
- * See https://unicode-org.github.io/icu/userguide/icudata
+ * See https://unicode-org.github.io/icu/userguide/icu_data
*
* The format of this data is that of the icu common data file, like 'icudt26l.dat'
* or the corresponding shared library (DLL) file.
diff --git a/Build/source/libs/icu/icu-src/source/common/unicode/ulocale.h b/Build/source/libs/icu/icu-src/source/common/unicode/ulocale.h
new file mode 100644
index 00000000000..33e92844bc1
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/common/unicode/ulocale.h
@@ -0,0 +1,229 @@
+// © 2023 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#ifndef ULOCALE_H
+#define ULOCALE_H
+
+#include "unicode/localpointer.h"
+#include "unicode/uenum.h"
+#include "unicode/utypes.h"
+
+/**
+ * \file
+ * \brief C API: Locale ID functionality similar to C++ class Locale
+ */
+
+#ifndef U_HIDE_DRAFT_API
+/**
+ * Opaque C service object type for the locale API
+ * @draft ICU 74
+ */
+struct ULocale;
+
+/**
+ * C typedef for struct ULocale.
+ * @draft ICU 74
+ */
+typedef struct ULocale ULocale;
+
+/**
+ * Constructs an ULocale from the locale ID.
+ * The created ULocale should be destroyed by calling
+ * ulocale_close();
+ * @param localeID the locale, a const char * pointer (need not be terminated when
+ * the length is non-negative)
+ * @param length the length of the locale; if negative, then the locale need to be
+ * null terminated.
+ * @param err the error code
+ * @return the locale.
+ *
+ * @draft ICU 74
+ */
+U_CAPI ULocale* U_EXPORT2
+ulocale_openForLocaleID(const char* localeID, int32_t length, UErrorCode* err);
+
+/**
+ * Constructs an ULocale from the provided IETF BCP 47 language tag.
+ * The created ULocale should be destroyed by calling
+ * ulocale_close();
+ * @param tag the language tag, defined as IETF BCP 47 language tag, const
+ * char* pointer (need not be terminated when the length is non-negative)
+ * @param length the length of the tag; if negative, then the tag need to be
+ * null terminated.
+ * @param err the error code
+ * @return the locale.
+ *
+ * @draft ICU 74
+ */
+U_CAPI ULocale* U_EXPORT2
+ulocale_openForLanguageTag(const char* tag, int32_t length, UErrorCode* err);
+
+/**
+ * Close the locale and destroy it's internal states.
+ *
+ * @param locale the locale
+ * @draft ICU 74
+ */
+U_CAPI void U_EXPORT2
+ulocale_close(ULocale* locale);
+
+/**
+ * Returns the locale's ISO-639 language code.
+ *
+ * @param locale the locale
+ * @return the language code of the locale.
+ * @draft ICU 74
+ */
+U_CAPI const char* U_EXPORT2
+ulocale_getLanguage(const ULocale* locale);
+
+/**
+ * Returns the locale's ISO-15924 abbreviation script code.
+ *
+ * @param locale the locale
+ * @return A pointer to the script.
+ * @draft ICU 74
+ */
+U_CAPI const char* U_EXPORT2
+ulocale_getScript(const ULocale* locale);
+
+/**
+ * Returns the locale's ISO-3166 region code.
+ *
+ * @param locale the locale
+ * @return A pointer to the region.
+ * @draft ICU 74
+ */
+U_CAPI const char* U_EXPORT2
+ulocale_getRegion(const ULocale* locale);
+
+/**
+ * Returns the locale's variant code.
+ *
+ * @param locale the locale
+ * @return A pointer to the variant.
+ * @draft ICU 74
+ */
+U_CAPI const char* U_EXPORT2
+ulocale_getVariant(const ULocale* locale);
+
+/**
+ * Returns the programmatic name of the entire locale, with the language,
+ * country and variant separated by underbars. If a field is missing, up
+ * to two leading underbars will occur. Example: "en", "de_DE", "en_US_WIN",
+ * "de__POSIX", "fr__MAC", "__MAC", "_MT", "_FR_EURO"
+ *
+ * @param locale the locale
+ * @return A pointer to "name".
+ * @draft ICU 74
+ */
+U_CAPI const char* U_EXPORT2
+ulocale_getLocaleID(const ULocale* locale);
+
+/**
+ * Returns the programmatic name of the entire locale as ulocale_getLocaleID()
+ * would return, but without keywords.
+ *
+ * @param locale the locale
+ * @return A pointer to "base name".
+ * @draft ICU 74
+ */
+U_CAPI const char* U_EXPORT2
+ulocale_getBaseName(const ULocale* locale);
+
+/**
+ * Gets the bogus state. Locale object can be bogus if it doesn't exist
+ *
+ * @param locale the locale
+ * @return false if it is a real locale, true if it is a bogus locale
+ * @draft ICU 74
+ */
+U_CAPI bool U_EXPORT2
+ulocale_isBogus(const ULocale* locale);
+
+/**
+ * Gets the list of keywords for the specified locale.
+ *
+ * @param locale the locale
+ * @param err the error code
+ * @return pointer to UEnumeration, or nullptr if there are no keywords.
+ * Client must call uenum_close() to dispose the returned value.
+ * @draft ICU 74
+ */
+U_CAPI UEnumeration* U_EXPORT2
+ulocale_getKeywords(const ULocale* locale, UErrorCode *err);
+
+/**
+ * Gets the list of unicode keywords for the specified locale.
+ *
+ * @param locale the locale
+ * @param err the error code
+ * @return pointer to UEnumeration, or nullptr if there are no keywords.
+ * Client must call uenum_close() to dispose the returned value.
+ * @draft ICU 74
+ */
+U_CAPI UEnumeration* U_EXPORT2
+ulocale_getUnicodeKeywords(const ULocale* locale, UErrorCode *err);
+
+/**
+ * Gets the value for a keyword.
+ *
+ * This uses legacy keyword=value pairs, like "collation=phonebook".
+ *
+ * @param locale the locale
+ * @param keyword the keyword, a const char * pointer (need not be
+ * terminated when the length is non-negative)
+ * @param keywordLength the length of the keyword; if negative, then the
+ * keyword need to be null terminated.
+ * @param valueBuffer The buffer to receive the value.
+ * @param valueBufferCapacity The capacity of receiving valueBuffer.
+ * @param err the error code
+ * @draft ICU 74
+ */
+U_CAPI int32_t U_EXPORT2
+ulocale_getKeywordValue(
+ const ULocale* locale, const char* keyword, int32_t keywordLength,
+ char* valueBuffer, int32_t valueBufferCapacity, UErrorCode *err);
+
+/**
+ * Gets the Unicode value for a Unicode keyword.
+ *
+ * This uses Unicode key-value pairs, like "co-phonebk".
+ *
+ * @param locale the locale
+ * @param keyword the Unicode keyword, a const char * pointer (need not be
+ * terminated when the length is non-negative)
+ * @param keywordLength the length of the Unicode keyword; if negative,
+ * then the keyword need to be null terminated.
+ * @param valueBuffer The buffer to receive the Unicode value.
+ * @param valueBufferCapacity The capacity of receiving valueBuffer.
+ * @param err the error code
+ * @draft ICU 74
+ */
+U_CAPI int32_t U_EXPORT2
+ulocale_getUnicodeKeywordValue(
+ const ULocale* locale, const char* keyword, int32_t keywordLength,
+ char* valueBuffer, int32_t valueBufferCapacity, UErrorCode *err);
+
+#if U_SHOW_CPLUSPLUS_API
+
+U_NAMESPACE_BEGIN
+
+/**
+ * \class LocalULocalePointer
+ * "Smart pointer" class, closes a ULocale via ulocale_close().
+ * For most methods see the LocalPointerBase base class.
+ *
+ * @see LocalPointerBase
+ * @see LocalPointer
+ * @draft ICU 74
+ */
+U_DEFINE_LOCAL_OPEN_POINTER(LocalULocalePointer, ULocale, ulocale_close);
+
+U_NAMESPACE_END
+
+#endif /* U_SHOW_CPLUSPLUS_API */
+
+#endif /* U_HIDE_DRAFT_API */
+
+#endif /*_ULOCALE */
diff --git a/Build/source/libs/icu/icu-src/source/common/unicode/ulocbuilder.h b/Build/source/libs/icu/icu-src/source/common/unicode/ulocbuilder.h
new file mode 100644
index 00000000000..f2e98612f0a
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/common/unicode/ulocbuilder.h
@@ -0,0 +1,441 @@
+// © 2023 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+#ifndef __ULOCBUILDER_H__
+#define __ULOCBUILDER_H__
+
+#include "unicode/localpointer.h"
+#include "unicode/ulocale.h"
+#include "unicode/utypes.h"
+
+/**
+ * \file
+ * \brief C API: Builder API for Locale
+ */
+
+#ifndef U_HIDE_DRAFT_API
+
+/**
+ * Opaque C service object type for the locale builder API
+ * @draft ICU 74
+ */
+struct ULocaleBuilder;
+
+/**
+ * C typedef for struct ULocaleBuilder.
+ * @draft ICU 74
+ */
+typedef struct ULocaleBuilder ULocaleBuilder;
+
+/**
+ * <code>ULocaleBuilder</code> is used to build valid <code>locale</code> id
+ * string or IETF BCP 47 language tag from values configured by the setters.
+ * The <code>ULocaleBuilder</code> checks if a value configured by a
+ * setter satisfies the syntax requirements defined by the <code>Locale</code>
+ * class. A string of Locale created by a <code>ULocaleBuilder</code> is
+ * well-formed and can be transformed to a well-formed IETF BCP 47 language tag
+ * without losing information.
+ *
+ * <p>The following example shows how to create a <code>locale</code> string
+ * with the <code>ULocaleBuilder</code>.
+ * <blockquote>
+ * <pre>
+ * UErrorCode err = U_ZERO_ERROR;
+ * char buffer[ULOC_FULLNAME_CAPACITY];
+ * ULocaleBuilder* builder = ulocbld_open();
+ * ulocbld_setLanguage(builder, "sr", -1);
+ * ulocbld_setScript(builder, "Latn", -1);
+ * ulocbld_setRegion(builder, "RS", -1);
+ * int32_t length = ulocbld_buildLocaleID(
+ * builder, buffer, ULOC_FULLNAME_CAPACITY, &error);
+ * ulocbld_close(builder);
+ * </pre>
+ * </blockquote>
+ *
+ * <p>ULocaleBuilders can be reused; <code>ulocbld_clear()</code> resets all
+ * fields to their default values.
+ *
+ * <p>ULocaleBuilder tracks errors in an internal UErrorCode. For all setters,
+ * except ulocbld_setLanguageTag and ulocbld_setLocale, ULocaleBuilder will return immediately
+ * if the internal UErrorCode is in error state.
+ * To reset internal state and error code, call clear method.
+ * The ulocbld_setLanguageTag and setLocale method will first clear the internal
+ * UErrorCode, then track the error of the validation of the input parameter
+ * into the internal UErrorCode.
+ *
+ * @draft ICU 74
+ */
+
+/**
+ * Constructs an empty ULocaleBuilder. The default value of all
+ * fields, extensions, and private use information is the
+ * empty string. The created builder should be destroyed by calling
+ * ulocbld_close();
+ *
+ * @draft ICU 74
+ */
+U_CAPI ULocaleBuilder* U_EXPORT2
+ulocbld_open();
+
+/**
+ * Close the builder and destroy it's internal states.
+ * @param builder the builder
+ * @draft ICU 74
+ */
+U_CAPI void U_EXPORT2
+ulocbld_close(ULocaleBuilder* builder);
+
+/**
+ * Resets the <code>ULocaleBuilder</code> to match the provided
+ * <code>locale</code>. Existing state is discarded.
+ *
+ * <p>All fields of the locale must be well-formed.
+ * <p>This method clears the internal UErrorCode.
+ *
+ * @param builder the builder
+ * @param locale the locale, a const char * pointer (need not be terminated when
+ * the length is non-negative)
+ * @param length the length of the locale; if negative, then the locale need to be
+ * null terminated,
+ *
+ * @draft ICU 74
+ */
+U_CAPI void U_EXPORT2
+ulocbld_setLocale(ULocaleBuilder* builder, const char* locale, int32_t length);
+
+/**
+ * Resets the <code>ULocaleBuilder</code> to match the provided
+ * <code>ULocale</code>. Existing state is discarded.
+ *
+ * <p>The locale must be not bogus.
+ * <p>This method clears the internal UErrorCode.
+ *
+ * @param builder the builder.
+ * @param locale the locale, a ULocale* pointer. The builder adopts the locale
+ * after the call and the client must not delete it.
+ *
+ * @draft ICU 74
+ */
+U_CAPI void U_EXPORT2
+ulocbld_adoptULocale(ULocaleBuilder* builder, ULocale* locale);
+
+/**
+ * Resets the ULocaleBuilder to match the provided IETF BCP 47 language tag.
+ * Discards the existing state.
+ * The empty string causes the builder to be reset, like {@link #ulocbld_clear}.
+ * Legacy language tags (marked as “Type: grandfathered†in BCP 47)
+ * are converted to their canonical form before being processed.
+ * Otherwise, the <code>language tag</code> must be well-formed,
+ * or else the ulocbld_buildLocaleID() and ulocbld_buildLanguageTag() methods
+ * will later report an U_ILLEGAL_ARGUMENT_ERROR.
+ *
+ * <p>This method clears the internal UErrorCode.
+ *
+ * @param builder the builder
+ * @param tag the language tag, defined as IETF BCP 47 language tag, a
+ * const char * pointer (need not be terminated when
+ * the length is non-negative)
+ * @param length the length of the tag; if negative, then the tag need to be
+ * null terminated,
+ * @draft ICU 74
+ */
+U_CAPI void U_EXPORT2
+ulocbld_setLanguageTag(ULocaleBuilder* builder, const char* tag, int32_t length);
+
+/**
+ * Sets the language. If <code>language</code> is the empty string, the
+ * language in this <code>ULocaleBuilder</code> is removed. Otherwise, the
+ * <code>language</code> must be well-formed, or else the ulocbld_buildLocaleID()
+ * and ulocbld_buildLanguageTag() methods will
+ * later report an U_ILLEGAL_ARGUMENT_ERROR.
+ *
+ * <p>The syntax of language value is defined as
+ * [unicode_language_subtag](http://www.unicode.org/reports/tr35/tr35.html#unicode_language_subtag).
+ *
+ * @param builder the builder
+ * @param language the language, a const char * pointer (need not be terminated when
+ * the length is non-negative)
+ * @param length the length of the language; if negative, then the language need to be
+ * null terminated,
+ * @draft ICU 74
+ */
+U_CAPI void U_EXPORT2
+ulocbld_setLanguage(ULocaleBuilder* builder, const char* language, int32_t length);
+
+/**
+ * Sets the script. If <code>script</code> is the empty string, the script in
+ * this <code>ULocaleBuilder</code> is removed.
+ * Otherwise, the <code>script</code> must be well-formed, or else the
+ * ulocbld_buildLocaleID() and ulocbld_buildLanguageTag() methods will later
+ * report an U_ILLEGAL_ARGUMENT_ERROR.
+ *
+ * <p>The script value is a four-letter script code as
+ * [unicode_script_subtag](http://www.unicode.org/reports/tr35/tr35.html#unicode_script_subtag)
+ * defined by ISO 15924
+ *
+ * @param builder the builder
+ * @param script the script, a const char * pointer (need not be terminated when
+ * the length is non-negative)
+ * @param length the length of the script; if negative, then the script need to be
+ * null terminated,
+ * @draft ICU 74
+ */
+U_CAPI void U_EXPORT2
+ulocbld_setScript(ULocaleBuilder* builder, const char* script, int32_t length);
+
+/**
+ * Sets the region. If region is the empty string, the region in this
+ * <code>ULocaleBuilder</code> is removed. Otherwise, the <code>region</code>
+ * must be well-formed, or else the ulocbld_buildLocaleID() and
+ * ulocbld_buildLanguageTag() methods will later report an
+ * U_ILLEGAL_ARGUMENT_ERROR.
+ *
+ * <p>The region value is defined by
+ * [unicode_region_subtag](http://www.unicode.org/reports/tr35/tr35.html#unicode_region_subtag)
+ * as a two-letter ISO 3166 code or a three-digit UN M.49 area code.
+ *
+ * <p>The region value in the <code>Locale</code> created by the
+ * <code>ULocaleBuilder</code> is always normalized to upper case.
+ *
+ * @param builder the builder
+ * @param region the region, a const char * pointer (need not be terminated when
+ * the length is non-negative)
+ * @param length the length of the region; if negative, then the region need to be
+ * null terminated,
+ * @draft ICU 74
+ */
+U_CAPI void U_EXPORT2
+ulocbld_setRegion(ULocaleBuilder* builder, const char* region, int32_t length);
+
+/**
+ * Sets the variant. If variant is the empty string, the variant in this
+ * <code>ULocaleBuilder</code> is removed. Otherwise, the <code>variant</code>
+ * must be well-formed, or else the ulocbld_buildLocaleID() and
+ * ulocbld_buildLanguageTag() methods will later report an
+ * U_ILLEGAL_ARGUMENT_ERROR.
+ *
+ * <p><b>Note:</b> This method checks if <code>variant</code>
+ * satisfies the
+ * [unicode_variant_subtag](http://www.unicode.org/reports/tr35/tr35.html#unicode_variant_subtag)
+ * syntax requirements, and normalizes the value to lowercase letters. However,
+ * the <code>Locale</code> class does not impose any syntactic
+ * restriction on variant. To set an ill-formed variant, use a Locale constructor.
+ * If there are multiple unicode_variant_subtag, the caller must concatenate
+ * them with '-' as separator (ex: "foobar-fibar").
+ *
+ * @param builder the builder
+ * @param variant the variant, a const char * pointer (need not be terminated when
+ * the length is non-negative)
+ * @param length the length of the variant; if negative, then the variant need to be
+ * null terminated,
+ * @draft ICU 74
+ */
+U_CAPI void U_EXPORT2
+ulocbld_setVariant(ULocaleBuilder* builder, const char* variant, int32_t length);
+
+/**
+ * Sets the extension for the given key. If the value is the empty string,
+ * the extension is removed. Otherwise, the <code>key</code> and
+ * <code>value</code> must be well-formed, or else the ulocbld_buildLocaleID()
+ * and ulocbld_buildLanguageTag() methods will
+ * later report an U_ILLEGAL_ARGUMENT_ERROR.
+ *
+ * <p><b>Note:</b> The key ('u') is used for the Unicode locale extension.
+ * Setting a value for this key replaces any existing Unicode locale key/type
+ * pairs with those defined in the extension.
+ *
+ * <p><b>Note:</b> The key ('x') is used for the private use code. To be
+ * well-formed, the value for this key needs only to have subtags of one to
+ * eight alphanumeric characters, not two to eight as in the general case.
+ *
+ * @param builder the builder
+ * @param key the extension key
+ * @param value the value, a const char * pointer (need not be terminated when
+ * the length is non-negative)
+ * @param length the length of the value; if negative, then the value need to be
+ * null terminated,
+ * @draft ICU 74
+ */
+U_CAPI void U_EXPORT2
+ulocbld_setExtension(ULocaleBuilder* builder, char key, const char* value, int32_t length);
+
+/**
+ * Sets the Unicode locale keyword type for the given key. If the type
+ * StringPiece is constructed with a nullptr, the keyword is removed.
+ * If the type is the empty string, the keyword is set without type subtags.
+ * Otherwise, the key and type must be well-formed, or else the
+ * ulocbld_buildLocaleID() and ulocbld_buildLanguageTag() methods will later
+ * report an U_ILLEGAL_ARGUMENT_ERROR.
+ *
+ * <p>Keys and types are converted to lower case.
+ *
+ * <p><b>Note</b>:Setting the 'u' extension via {@link #ulocbld_setExtension}
+ * replaces all Unicode locale keywords with those defined in the
+ * extension.
+ *
+ * @param builder the builder
+ * @param key the Unicode locale key, a const char * pointer (need not be
+ * terminated when the length is non-negative)
+ * @param keyLength the length of the key; if negative, then the key need to be
+ * null terminated,
+ * @param type the Unicode locale type, a const char * pointer (need not be
+ * terminated when the length is non-negative)
+ * @param typeLength the length of the type; if negative, then the type need to
+ * be null terminated,
+ * @return This builder.
+ * @draft ICU 74
+ */
+U_CAPI void U_EXPORT2
+ulocbld_setUnicodeLocaleKeyword(ULocaleBuilder* builder,
+ const char* key, int32_t keyLength, const char* type, int32_t typeLength);
+
+/**
+ * Adds a unicode locale attribute, if not already present, otherwise
+ * has no effect. The attribute must not be empty string and must be
+ * well-formed or U_ILLEGAL_ARGUMENT_ERROR will be set to status
+ * during the ulocbld_buildLocaleID() and ulocbld_buildLanguageTag() calls.
+ *
+ * @param builder the builder
+ * @param attribute the attribute, a const char * pointer (need not be
+ * terminated when the length is non-negative)
+ * @param length the length of the attribute; if negative, then the attribute
+ * need to be null terminated,
+ * @draft ICU 74
+ */
+U_CAPI void U_EXPORT2
+ulocbld_addUnicodeLocaleAttribute(
+ ULocaleBuilder* builder, const char* attribute, int32_t length);
+
+/**
+ * Removes a unicode locale attribute, if present, otherwise has no
+ * effect. The attribute must not be empty string and must be well-formed
+ * or U_ILLEGAL_ARGUMENT_ERROR will be set to status during the ulocbld_buildLocaleID()
+ * and ulocbld_buildLanguageTag() calls.
+ *
+ * <p>Attribute comparison for removal is case-insensitive.
+ *
+ * @param builder the builder
+ * @param attribute the attribute, a const char * pointer (need not be
+ * terminated when the length is non-negative)
+ * @param length the length of the attribute; if negative, then the attribute
+ * need to be null terminated,
+ * @draft ICU 74
+ */
+U_CAPI void U_EXPORT2
+ulocbld_removeUnicodeLocaleAttribute(
+ ULocaleBuilder* builder, const char* attribute, int32_t length);
+
+/**
+ * Resets the builder to its initial, empty state.
+ * <p>This method clears the internal UErrorCode.
+ *
+ * @param builder the builder
+ * @draft ICU 74
+ */
+U_CAPI void U_EXPORT2
+ulocbld_clear(ULocaleBuilder* builder);
+
+/**
+ * Resets the extensions to their initial, empty state.
+ * Language, script, region and variant are unchanged.
+ *
+ * @param builder the builder
+ * @draft ICU 74
+ */
+U_CAPI void U_EXPORT2
+ulocbld_clearExtensions(ULocaleBuilder* builder);
+
+/**
+ * Build the LocaleID string from the fields set on this builder.
+ * If any set methods or during the ulocbld_buildLocaleID() call require memory
+ * allocation but fail U_MEMORY_ALLOCATION_ERROR will be set to status.
+ * If any of the fields set by the setters are not well-formed, the status
+ * will be set to U_ILLEGAL_ARGUMENT_ERROR. The state of the builder will
+ * not change after the ulocbld_buildLocaleID() call and the caller is
+ * free to keep using the same builder to build more locales.
+ *
+ * @param builder the builder
+ * @param locale the locale id
+ * @param localeCapacity the size of the locale buffer to store the locale id
+ * @param err the error code
+ * @return the length of the locale id in buffer
+ * @draft ICU 74
+ */
+U_CAPI int32_t U_EXPORT2
+ulocbld_buildLocaleID(ULocaleBuilder* builder, char* locale,
+ int32_t localeCapacity, UErrorCode* err);
+
+/**
+ * Build the ULocale object from the fields set on this builder.
+ * If any set methods or during the ulocbld_buildULocale() call require memory
+ * allocation but fail U_MEMORY_ALLOCATION_ERROR will be set to status.
+ * If any of the fields set by the setters are not well-formed, the status
+ * will be set to U_ILLEGAL_ARGUMENT_ERROR. The state of the builder will
+ * not change after the ulocbld_buildULocale() call and the caller is
+ * free to keep using the same builder to build more locales.
+ *
+ * @param builder the builder.
+ * @param err the error code.
+ * @return the locale, a ULocale* pointer. The created ULocale must be
+ * destroyed by calling {@link ulocale_close}.
+ * @draft ICU 74
+ */
+U_CAPI ULocale* U_EXPORT2
+ulocbld_buildULocale(ULocaleBuilder* builder, UErrorCode* err);
+
+/**
+ * Build the IETF BCP 47 language tag string from the fields set on this builder.
+ * If any set methods or during the ulocbld_buildLanguageTag() call require memory
+ * allocation but fail U_MEMORY_ALLOCATION_ERROR will be set to status.
+ * If any of the fields set by the setters are not well-formed, the status
+ * will be set to U_ILLEGAL_ARGUMENT_ERROR. The state of the builder will
+ * not change after the ulocbld_buildLanguageTag() call and the caller is free
+ * to keep using the same builder to build more locales.
+ *
+ * @param builder the builder
+ * @param language the language tag
+ * @param languageCapacity the size of the language buffer to store the language
+ * tag
+ * @param err the error code
+ * @return the length of the language tag in buffer
+ * @draft ICU 74
+ */
+U_CAPI int32_t U_EXPORT2
+ulocbld_buildLanguageTag(ULocaleBuilder* builder, char* language,
+ int32_t languageCapacity, UErrorCode* err);
+
+/**
+ * Sets the UErrorCode if an error occurred while recording sets.
+ * Preserves older error codes in the outErrorCode.
+ *
+ * @param builder the builder
+ * @param outErrorCode Set to an error code that occurred while setting subtags.
+ * Unchanged if there is no such error or if outErrorCode
+ * already contained an error.
+ * @return true if U_FAILURE(*outErrorCode)
+ * @draft ICU 74
+ */
+U_CAPI UBool U_EXPORT2
+ulocbld_copyErrorTo(const ULocaleBuilder* builder, UErrorCode *outErrorCode);
+
+#if U_SHOW_CPLUSPLUS_API
+
+U_NAMESPACE_BEGIN
+
+/**
+ * \class LocalULocaleBuilderPointer
+ * "Smart pointer" class, closes a ULocaleBuilder via ulocbld_close().
+ * For most methods see the LocalPointerBase base class.
+ *
+ * @see LocalPointerBase
+ * @see LocalPointer
+ * @draft ICU 74
+ */
+U_DEFINE_LOCAL_OPEN_POINTER(LocalULocaleBuilderPointer, ULocaleBuilder, ulocbld_close);
+
+U_NAMESPACE_END
+
+#endif /* U_SHOW_CPLUSPLUS_API */
+
+#endif /* U_HIDE_DRAFT_API */
+
+#endif // __ULOCBUILDER_H__
diff --git a/Build/source/libs/icu/icu-src/source/common/unicode/umachine.h b/Build/source/libs/icu/icu-src/source/common/unicode/umachine.h
index 66406062726..545abef5956 100644
--- a/Build/source/libs/icu/icu-src/source/common/unicode/umachine.h
+++ b/Build/source/libs/icu/icu-src/source/common/unicode/umachine.h
@@ -119,28 +119,6 @@
/** Obsolete/same as U_CAPI; was used to declare a function as an internal ICU C API */
#define U_INTERNAL U_CAPI
-/**
- * \def U_OVERRIDE
- * Defined to the C++11 "override" keyword if available.
- * Denotes a class or member which is an override of the base class.
- * May result in an error if it applied to something not an override.
- * @internal
- */
-#ifndef U_OVERRIDE
-#define U_OVERRIDE override
-#endif
-
-/**
- * \def U_FINAL
- * Defined to the C++11 "final" keyword if available.
- * Denotes a class or member which may not be overridden in subclasses.
- * May result in an error if subclasses attempt to override.
- * @internal
- */
-#if !defined(U_FINAL) || defined(U_IN_DOXYGEN)
-#define U_FINAL final
-#endif
-
// Before ICU 65, function-like, multi-statement ICU macros were just defined as
// series of statements wrapped in { } blocks and the caller could choose to
// either treat them as if they were actual functions and end the invocation
@@ -348,7 +326,7 @@ typedef int8_t UBool;
/* UChar and UChar32 definitions -------------------------------------------- */
-/** Number of bytes in a UChar. @stable ICU 2.0 */
+/** Number of bytes in a UChar (always 2). @stable ICU 2.0 */
#define U_SIZEOF_UCHAR 2
/**
@@ -356,11 +334,7 @@ typedef int8_t UBool;
* If 1, then char16_t is a typedef and not a real type (yet)
* @internal
*/
-#if (U_PLATFORM == U_PF_AIX) && defined(__cplusplus) &&(U_CPLUSPLUS_VERSION < 11)
-// for AIX, uchar.h needs to be included
-# include <uchar.h>
-# define U_CHAR16_IS_TYPEDEF 1
-#elif defined(_MSC_VER) && (_MSC_VER < 1900)
+#if defined(_MSC_VER) && (_MSC_VER < 1900)
// Versions of Visual Studio/MSVC below 2015 do not support char16_t as a real type,
// and instead use a typedef. https://msdn.microsoft.com/library/bb531344.aspx
# define U_CHAR16_IS_TYPEDEF 1
@@ -408,10 +382,10 @@ typedef int8_t UBool;
typedef char16_t UChar;
#elif defined(UCHAR_TYPE)
typedef UCHAR_TYPE UChar;
-#elif (U_CPLUSPLUS_VERSION >= 11)
- typedef char16_t UChar;
+#elif U_CPLUSPLUS_VERSION != 0
+ typedef char16_t UChar; // C++
#else
- typedef uint16_t UChar;
+ typedef uint16_t UChar; // C
#endif
/**
diff --git a/Build/source/libs/icu/icu-src/source/common/unicode/uniset.h b/Build/source/libs/icu/icu-src/source/common/unicode/uniset.h
index 33e35c4def8..84774d9f36e 100644
--- a/Build/source/libs/icu/icu-src/source/common/unicode/uniset.h
+++ b/Build/source/libs/icu/icu-src/source/common/unicode/uniset.h
@@ -282,7 +282,7 @@ class RuleCharacterIterator;
* @author Alan Liu
* @stable ICU 2.0
*/
-class U_COMMON_API UnicodeSet U_FINAL : public UnicodeFilter {
+class U_COMMON_API UnicodeSet final : public UnicodeFilter {
private:
/**
* Enough for sets with few ranges.
@@ -297,8 +297,8 @@ private:
int32_t len = 1; // length of list used; 1 <= len <= capacity
uint8_t fFlags = 0; // Bit flag (see constants above)
- BMPSet *bmpSet = nullptr; // The set is frozen iff either bmpSet or stringSpan is not NULL.
- UChar32* buffer = nullptr; // internal buffer, may be NULL
+ BMPSet *bmpSet = nullptr; // The set is frozen iff either bmpSet or stringSpan is not nullptr.
+ UChar32* buffer = nullptr; // internal buffer, may be nullptr
int32_t bufferCapacity = 0; // capacity of buffer
/**
@@ -430,9 +430,11 @@ public:
* description for the syntax of the pattern language.
* @param pattern a string specifying what characters are in the set
* @param options bitmask for options to apply to the pattern.
- * Valid options are USET_IGNORE_SPACE and USET_CASE_INSENSITIVE.
+ * Valid options are USET_IGNORE_SPACE and
+ * at most one of USET_CASE_INSENSITIVE, USET_ADD_CASE_MAPPINGS, USET_SIMPLE_CASE_INSENSITIVE.
+ * These case options are mutually exclusive.
* @param symbols a symbol table mapping variable names to values
- * and stand-in characters to UnicodeSets; may be NULL
+ * and stand-in characters to UnicodeSets; may be nullptr
* @param status returns <code>U_ILLEGAL_ARGUMENT_ERROR</code> if the pattern
* contains a syntax error.
* @internal
@@ -450,9 +452,11 @@ public:
* @param pos on input, the position in pattern at which to start parsing.
* On output, the position after the last character parsed.
* @param options bitmask for options to apply to the pattern.
- * Valid options are USET_IGNORE_SPACE and USET_CASE_INSENSITIVE.
+ * Valid options are USET_IGNORE_SPACE and
+ * at most one of USET_CASE_INSENSITIVE, USET_ADD_CASE_MAPPINGS, USET_SIMPLE_CASE_INSENSITIVE.
+ * These case options are mutually exclusive.
* @param symbols a symbol table mapping variable names to values
- * and stand-in characters to UnicodeSets; may be NULL
+ * and stand-in characters to UnicodeSets; may be nullptr
* @param status input-output error code
* @stable ICU 2.8
*/
@@ -645,9 +649,11 @@ public:
* A frozen set will not be modified.
* @param pattern a string specifying what characters are in the set
* @param options bitmask for options to apply to the pattern.
- * Valid options are USET_IGNORE_SPACE and USET_CASE_INSENSITIVE.
+ * Valid options are USET_IGNORE_SPACE and
+ * at most one of USET_CASE_INSENSITIVE, USET_ADD_CASE_MAPPINGS, USET_SIMPLE_CASE_INSENSITIVE.
+ * These case options are mutually exclusive.
* @param symbols a symbol table mapping variable names to
- * values and stand-ins to UnicodeSets; may be NULL
+ * values and stand-ins to UnicodeSets; may be nullptr
* @param status returns <code>U_ILLEGAL_ARGUMENT_ERROR</code> if the pattern
* contains a syntax error.
*<em> Empties the set passed before applying the pattern.</em>
@@ -683,9 +689,11 @@ public:
* pattern.length() if the closing ']' is the last character of
* the pattern string.
* @param options bitmask for options to apply to the pattern.
- * Valid options are USET_IGNORE_SPACE and USET_CASE_INSENSITIVE.
+ * Valid options are USET_IGNORE_SPACE and
+ * at most one of USET_CASE_INSENSITIVE, USET_ADD_CASE_MAPPINGS, USET_SIMPLE_CASE_INSENSITIVE.
+ * These case options are mutually exclusive.
* @param symbols a symbol table mapping variable names to
- * values and stand-ins to UnicodeSets; may be NULL
+ * values and stand-ins to UnicodeSets; may be nullptr
* @param status returns <code>U_ILLEGAL_ARGUMENT_ERROR</code> if the pattern
* contains a syntax error.
* @return a reference to this
@@ -1390,7 +1398,7 @@ public:
/**
* Close this set over the given attribute. For the attribute
- * USET_CASE, the result is to modify this set so that:
+ * USET_CASE_INSENSITIVE, the result is to modify this set so that:
*
* 1. For each character or string 'a' in this set, all strings or
* characters 'b' such that foldCase(a) == foldCase(b) are added
@@ -1408,8 +1416,10 @@ public:
* A frozen set will not be modified.
*
* @param attribute bitmask for attributes to close over.
- * Currently only the USET_CASE bit is supported. Any undefined bits
- * are ignored.
+ * Valid options:
+ * At most one of USET_CASE_INSENSITIVE, USET_ADD_CASE_MAPPINGS, USET_SIMPLE_CASE_INSENSITIVE.
+ * These case options are mutually exclusive.
+ * Unrelated options bits are ignored.
* @return a reference to this set.
* @stable ICU 4.2
*/
@@ -1488,7 +1498,7 @@ public:
* bits followed by least significant 16 bits.
*
* @param dest pointer to buffer of destCapacity 16-bit integers.
- * May be NULL only if destCapacity is zero.
+ * May be nullptr only if destCapacity is zero.
* @param destCapacity size of dest, or zero. Must not be negative.
* @param ec error code. Will be set to U_INDEX_OUTOFBOUNDS_ERROR
* if n+2*m > 0x7FFF. Will be set to U_BUFFER_OVERFLOW_ERROR if
@@ -1579,6 +1589,9 @@ private:
int32_t depth,
UErrorCode& ec);
+ void closeOverCaseInsensitive(bool simple);
+ void closeOverAddCaseMappings();
+
//----------------------------------------------------------------
// Implementation: Utility methods
//----------------------------------------------------------------
@@ -1718,7 +1731,7 @@ inline bool UnicodeSet::operator!=(const UnicodeSet& o) const {
}
inline UBool UnicodeSet::isFrozen() const {
- return (UBool)(bmpSet!=NULL || stringSpan!=NULL);
+ return (UBool)(bmpSet!=nullptr || stringSpan!=nullptr);
}
inline UBool UnicodeSet::containsSome(UChar32 start, UChar32 end) const {
diff --git a/Build/source/libs/icu/icu-src/source/common/unicode/unistr.h b/Build/source/libs/icu/icu-src/source/common/unicode/unistr.h
index b3c99481079..4074e8d07b2 100644
--- a/Build/source/libs/icu/icu-src/source/common/unicode/unistr.h
+++ b/Build/source/libs/icu/icu-src/source/common/unicode/unistr.h
@@ -253,7 +253,7 @@ class UnicodeStringAppendable; // unicode/appendable.h
* target object, e.g., calling str.append(str), an extra copy may take place
* to ensure safety.
* - If primitive string pointer values (e.g., const char16_t * or char *)
- * for input strings are NULL, then those input string parameters are treated
+ * for input strings are nullptr, then those input string parameters are treated
* as if they pointed to an empty string.
* However, this is *not* the case for char * parameters for charset names
* or other IDs.
@@ -1542,7 +1542,7 @@ public:
*
* @param start offset of first character which will be copied
* @param startLength the number of characters to extract
- * @param target the target buffer for extraction, can be NULL
+ * @param target the target buffer for extraction, can be nullptr
* if targetLength is 0
* @param targetCapacity the length of the target buffer
* @param inv Signature-distinguishing parameter, use US_INV.
@@ -1571,7 +1571,7 @@ public:
* @param startLength the number of characters to extract
* @param target the target buffer for extraction
* @param targetLength the length of the target buffer
- * If `target` is NULL, then the number of bytes required for
+ * If `target` is nullptr, then the number of bytes required for
* `target` is returned.
* @return the output string length, not including the terminating NUL
* @stable ICU 2.0
@@ -1604,7 +1604,7 @@ public:
* If `codepage` is an empty string (`""`),
* then a simple conversion is performed on the codepage-invariant
* subset ("invariant characters") of the platform encoding. See utypes.h.
- * If `target` is NULL, then the number of bytes required for
+ * If `target` is nullptr, then the number of bytes required for
* `target` is returned. It is assumed that the target is big enough
* to fit all of the characters.
* @return the output string length, not including the terminating NUL
@@ -1639,7 +1639,7 @@ public:
* If `codepage` is an empty string (`""`),
* then a simple conversion is performed on the codepage-invariant
* subset ("invariant characters") of the platform encoding. See utypes.h.
- * If `target` is NULL, then the number of bytes required for
+ * If `target` is nullptr, then the number of bytes required for
* `target` is returned.
* @return the output string length, not including the terminating NUL
* @stable ICU 2.0
@@ -1657,10 +1657,10 @@ public:
* This function avoids the overhead of opening and closing a converter if
* multiple strings are extracted.
*
- * @param dest destination string buffer, can be NULL if destCapacity==0
+ * @param dest destination string buffer, can be nullptr if destCapacity==0
* @param destCapacity the number of chars available at dest
* @param cnv the converter object to be used (ucnv_resetFromUnicode() will be called),
- * or NULL for the default converter
+ * or nullptr for the default converter
* @param errorCode normal ICU error code
* @return the length of the output string, not counting the terminating NUL;
* if the length is greater than destCapacity, then the string will not fit
@@ -1737,7 +1737,7 @@ public:
* Unpaired surrogates are replaced with U+FFFD.
* Calls u_strToUTF32WithSub().
*
- * @param utf32 destination string buffer, can be NULL if capacity==0
+ * @param utf32 destination string buffer, can be nullptr if capacity==0
* @param capacity the number of UChar32s available at utf32
* @param errorCode Standard ICU error code. Its input value must
* pass the U_SUCCESS() test, or else the function returns
@@ -1835,7 +1835,7 @@ public:
* A bogus string has no value. It is different from an empty string,
* although in both cases isEmpty() returns true and length() returns 0.
* setToBogus() and isBogus() can be used to indicate that no string value is available.
- * For a bogus string, getBuffer() and getTerminatedBuffer() return NULL, and
+ * For a bogus string, getBuffer() and getTerminatedBuffer() return nullptr, and
* length() returns 0.
*
* @return true if the string is bogus/invalid, false otherwise
@@ -1906,14 +1906,14 @@ public:
* @return *this
* @stable ICU 56
*/
- UnicodeString &operator=(UnicodeString &&src) U_NOEXCEPT;
+ UnicodeString &operator=(UnicodeString &&src) noexcept;
/**
* Swap strings.
* @param other other string
* @stable ICU 56
*/
- void swap(UnicodeString &other) U_NOEXCEPT;
+ void swap(UnicodeString &other) noexcept;
/**
* Non-member UnicodeString swap function.
@@ -1922,7 +1922,7 @@ public:
* @stable ICU 56
*/
friend inline void U_EXPORT2
- swap(UnicodeString &s1, UnicodeString &s2) U_NOEXCEPT {
+ swap(UnicodeString &s1, UnicodeString &s2) noexcept {
s1.swap(s2);
}
@@ -2072,7 +2072,7 @@ public:
*
* A bogus string has no value. It is different from an empty string.
* It can be used to indicate that no string value is available.
- * getBuffer() and getTerminatedBuffer() return NULL, and
+ * getBuffer() and getTerminatedBuffer() return nullptr, and
* length() returns 0.
*
* This utility function is used throughout the UnicodeString
@@ -2978,7 +2978,7 @@ public:
* `-DUNISTR_FROM_STRING_EXPLICIT=explicit`
* on the compiler command line or similar.
* @param text The characters to place in the UnicodeString. `text`
- * must be NULL (U+0000) terminated.
+ * must be NUL (U+0000) terminated.
* @stable ICU 2.0
*/
UNISTR_FROM_STRING_EXPLICIT UnicodeString(const char16_t *text);
@@ -3245,7 +3245,7 @@ public:
* @param src input codepage string
* @param srcLength length of the input string, can be -1 for NUL-terminated strings
* @param cnv converter object (ucnv_resetToUnicode() will be called),
- * can be NULL for the default converter
+ * can be nullptr for the default converter
* @param errorCode normal ICU error code
* @stable ICU 2.0
*/
@@ -3306,7 +3306,7 @@ public:
* @param src source string
* @stable ICU 56
*/
- UnicodeString(UnicodeString &&src) U_NOEXCEPT;
+ UnicodeString(UnicodeString &&src) noexcept;
/**
* 'Substring' constructor from tail of source string.
@@ -3329,7 +3329,7 @@ public:
* Clone this object, an instance of a subclass of Replaceable.
* Clones can be used concurrently in multiple threads.
* If a subclass does not implement clone(), or if an error occurs,
- * then NULL is returned.
+ * then nullptr is returned.
* The caller must delete the clone.
*
* @return a clone of this object
@@ -3365,7 +3365,7 @@ public:
* Illegal input is replaced with U+FFFD. Otherwise, errors result in a bogus string.
* Calls u_strFromUTF32WithSub().
*
- * @param utf32 UTF-32 input string. Must not be NULL.
+ * @param utf32 UTF-32 input string. Must not be nullptr.
* @param length Length of the input string, or -1 if NUL-terminated.
* @return A UnicodeString with equivalent UTF-16 contents.
* @see toUTF32
@@ -3489,6 +3489,19 @@ private:
*/
UBool doEquals(const UnicodeString &text, int32_t len) const;
+ inline UBool
+ doEqualsSubstring(int32_t start,
+ int32_t length,
+ const UnicodeString& srcText,
+ int32_t srcStart,
+ int32_t srcLength) const;
+
+ UBool doEqualsSubstring(int32_t start,
+ int32_t length,
+ const char16_t *srcChars,
+ int32_t srcStart,
+ int32_t srcLength) const;
+
inline int8_t
doCompare(int32_t start,
int32_t length,
@@ -3618,7 +3631,7 @@ private:
UnicodeString &copyFrom(const UnicodeString &src, UBool fastCopy=false);
// Copies just the fields without memory management.
- void copyFieldsFrom(UnicodeString &src, UBool setSrcToBogus) U_NOEXCEPT;
+ void copyFieldsFrom(UnicodeString &src, UBool setSrcToBogus) noexcept;
// Pin start and limit to acceptable values.
inline void pinIndex(int32_t& start) const;
@@ -3706,7 +3719,7 @@ private:
kEmptyHashCode=1, // hash code for empty string
// bit flag values for fLengthAndFlags
- kIsBogus=1, // this string is bogus, i.e., not valid or NULL
+ kIsBogus=1, // this string is bogus, i.e., not valid or nullptr
kUsingStackBuffer=2,// using fUnion.fStackFields instead of fUnion.fFields
kRefCounted=4, // there is a refCount field before the characters in fArray
kBufferIsReadonly=8,// do not write to this buffer
@@ -3946,6 +3959,21 @@ UnicodeString::doCompare(int32_t start,
}
}
+inline UBool
+UnicodeString::doEqualsSubstring(int32_t start,
+ int32_t thisLength,
+ const UnicodeString& srcText,
+ int32_t srcStart,
+ int32_t srcLength) const
+{
+ if(srcText.isBogus()) {
+ return isBogus();
+ } else {
+ srcText.pinIndices(srcStart, srcLength);
+ return !isBogus() && doEqualsSubstring(start, thisLength, srcText.getArrayStart(), srcStart, srcLength);
+ }
+}
+
inline bool
UnicodeString::operator== (const UnicodeString& text) const
{
@@ -4326,20 +4354,20 @@ UnicodeString::lastIndexOf(UChar32 c,
inline UBool
UnicodeString::startsWith(const UnicodeString& text) const
-{ return compare(0, text.length(), text, 0, text.length()) == 0; }
+{ return doEqualsSubstring(0, text.length(), text, 0, text.length()); }
inline UBool
UnicodeString::startsWith(const UnicodeString& srcText,
int32_t srcStart,
int32_t srcLength) const
-{ return doCompare(0, srcLength, srcText, srcStart, srcLength) == 0; }
+{ return doEqualsSubstring(0, srcLength, srcText, srcStart, srcLength); }
inline UBool
UnicodeString::startsWith(ConstChar16Ptr srcChars, int32_t srcLength) const {
if(srcLength < 0) {
srcLength = u_strlen(toUCharPtr(srcChars));
}
- return doCompare(0, srcLength, srcChars, 0, srcLength) == 0;
+ return doEqualsSubstring(0, srcLength, srcChars, 0, srcLength);
}
inline UBool
@@ -4347,21 +4375,21 @@ UnicodeString::startsWith(const char16_t *srcChars, int32_t srcStart, int32_t sr
if(srcLength < 0) {
srcLength = u_strlen(toUCharPtr(srcChars));
}
- return doCompare(0, srcLength, srcChars, srcStart, srcLength) == 0;
+ return doEqualsSubstring(0, srcLength, srcChars, srcStart, srcLength);
}
inline UBool
UnicodeString::endsWith(const UnicodeString& text) const
-{ return doCompare(length() - text.length(), text.length(),
- text, 0, text.length()) == 0; }
+{ return doEqualsSubstring(length() - text.length(), text.length(),
+ text, 0, text.length()); }
inline UBool
UnicodeString::endsWith(const UnicodeString& srcText,
int32_t srcStart,
int32_t srcLength) const {
srcText.pinIndices(srcStart, srcLength);
- return doCompare(length() - srcLength, srcLength,
- srcText, srcStart, srcLength) == 0;
+ return doEqualsSubstring(length() - srcLength, srcLength,
+ srcText, srcStart, srcLength);
}
inline UBool
@@ -4370,8 +4398,7 @@ UnicodeString::endsWith(ConstChar16Ptr srcChars,
if(srcLength < 0) {
srcLength = u_strlen(toUCharPtr(srcChars));
}
- return doCompare(length() - srcLength, srcLength,
- srcChars, 0, srcLength) == 0;
+ return doEqualsSubstring(length() - srcLength, srcLength, srcChars, 0, srcLength);
}
inline UBool
@@ -4381,8 +4408,8 @@ UnicodeString::endsWith(const char16_t *srcChars,
if(srcLength < 0) {
srcLength = u_strlen(toUCharPtr(srcChars + srcStart));
}
- return doCompare(length() - srcLength, srcLength,
- srcChars, srcStart, srcLength) == 0;
+ return doEqualsSubstring(length() - srcLength, srcLength,
+ srcChars, srcStart, srcLength);
}
//========================================
@@ -4712,18 +4739,18 @@ UnicodeString::remove(int32_t start,
// remove(guaranteed everything) of a bogus string makes the string empty and non-bogus
return remove();
}
- return doReplace(start, _length, NULL, 0, 0);
+ return doReplace(start, _length, nullptr, 0, 0);
}
inline UnicodeString&
UnicodeString::removeBetween(int32_t start,
int32_t limit)
-{ return doReplace(start, limit - start, NULL, 0, 0); }
+{ return doReplace(start, limit - start, nullptr, 0, 0); }
inline UnicodeString &
UnicodeString::retainBetween(int32_t start, int32_t limit) {
truncate(limit);
- return doReplace(0, start, NULL, 0, 0);
+ return doReplace(0, start, nullptr, 0, 0);
}
inline UBool
diff --git a/Build/source/libs/icu/icu-src/source/common/unicode/unorm2.h b/Build/source/libs/icu/icu-src/source/common/unicode/unorm2.h
index 24417b7103c..3844041f170 100644
--- a/Build/source/libs/icu/icu-src/source/common/unicode/unorm2.h
+++ b/Build/source/libs/icu/icu-src/source/common/unicode/unorm2.h
@@ -181,7 +181,10 @@ U_CAPI const UNormalizer2 * U_EXPORT2
unorm2_getNFKDInstance(UErrorCode *pErrorCode);
/**
- * Returns a UNormalizer2 instance for Unicode NFKC_Casefold normalization.
+ * Returns a UNormalizer2 instance for Unicode toNFKC_Casefold() normalization
+ * which is equivalent to applying the NFKC_Casefold mappings and then NFC.
+ * See https://www.unicode.org/reports/tr44/#NFKC_Casefold
+ *
* Same as unorm2_getInstance(NULL, "nfkc_cf", UNORM2_COMPOSE, pErrorCode).
* Returns an unmodifiable singleton instance. Do not delete it.
* @param pErrorCode Standard ICU error code. Its input value must
@@ -194,6 +197,25 @@ unorm2_getNFKDInstance(UErrorCode *pErrorCode);
U_CAPI const UNormalizer2 * U_EXPORT2
unorm2_getNFKCCasefoldInstance(UErrorCode *pErrorCode);
+#ifndef U_HIDE_DRAFT_API
+/**
+ * Returns a UNormalizer2 instance for a variant of Unicode toNFKC_Casefold() normalization
+ * which is equivalent to applying the NFKC_Simple_Casefold mappings and then NFC.
+ * See https://www.unicode.org/reports/tr44/#NFKC_Simple_Casefold
+ *
+ * Same as unorm2_getInstance(NULL, "nfkc_scf", UNORM2_COMPOSE, pErrorCode).
+ * Returns an unmodifiable singleton instance. Do not delete it.
+ * @param pErrorCode Standard ICU error code. Its input value must
+ * pass the U_SUCCESS() test, or else the function returns
+ * immediately. Check for U_FAILURE() on output or use with
+ * function chaining. (See User Guide for details.)
+ * @return the requested Normalizer2, if successful
+ * @draft ICU 74
+ */
+U_CAPI const UNormalizer2 * U_EXPORT2
+unorm2_getNFKCSimpleCasefoldInstance(UErrorCode *pErrorCode);
+#endif // U_HIDE_DRAFT_API
+
/**
* Returns a UNormalizer2 instance which uses the specified data file
* (packageName/name similar to ucnv_openPackage() and ures_open()/ResourceBundle)
@@ -206,7 +228,7 @@ unorm2_getNFKCCasefoldInstance(UErrorCode *pErrorCode);
* Use name="nfkc_cf" and UNORM2_COMPOSE for Unicode standard NFKC_CF=NFKC_Casefold.
*
* @param packageName NULL for ICU built-in data, otherwise application data package name
- * @param name "nfc" or "nfkc" or "nfkc_cf" or name of custom data file
+ * @param name "nfc" or "nfkc" or "nfkc_cf" or "nfkc_scf" or name of custom data file
* @param mode normalization mode (compose or decompose etc.)
* @param pErrorCode Standard ICU error code. Its input value must
* pass the U_SUCCESS() test, or else the function returns
diff --git a/Build/source/libs/icu/icu-src/source/common/unicode/uobject.h b/Build/source/libs/icu/icu-src/source/common/unicode/uobject.h
index 25a8330f9ac..f53ec1d1119 100644
--- a/Build/source/libs/icu/icu-src/source/common/unicode/uobject.h
+++ b/Build/source/libs/icu/icu-src/source/common/unicode/uobject.h
@@ -32,21 +32,21 @@
/**
* \def U_NO_THROW
- * Since ICU 64, use U_NOEXCEPT instead.
+ * Since ICU 64, use noexcept instead.
*
* Previously, define this to define the throw() specification so
* certain functions do not throw any exceptions
*
* UMemory operator new methods should have the throw() specification
- * appended to them, so that the compiler adds the additional NULL check
- * before calling constructors. Without, if <code>operator new</code> returns NULL the
+ * appended to them, so that the compiler adds the additional nullptr check
+ * before calling constructors. Without, if <code>operator new</code> returns nullptr the
* constructor is still called, and if the constructor references member
* data, (which it typically does), the result is a segmentation violation.
*
- * @stable ICU 4.2. Since ICU 64, Use U_NOEXCEPT instead. See ICU-20422.
+ * @stable ICU 4.2. Since ICU 64, Use noexcept instead. See ICU-20422.
*/
#ifndef U_NO_THROW
-#define U_NO_THROW U_NOEXCEPT
+#define U_NO_THROW noexcept
#endif
/*===========================================================================*/
@@ -131,14 +131,14 @@ public:
* for ICU4C C++ classes
* @stable ICU 2.4
*/
- static void * U_EXPORT2 operator new(size_t size) U_NOEXCEPT;
+ static void * U_EXPORT2 operator new(size_t size) noexcept;
/**
* Override for ICU4C C++ memory management.
* See new().
* @stable ICU 2.4
*/
- static void * U_EXPORT2 operator new[](size_t size) U_NOEXCEPT;
+ static void * U_EXPORT2 operator new[](size_t size) noexcept;
/**
* Override for ICU4C C++ memory management.
@@ -148,14 +148,14 @@ public:
* for ICU4C C++ classes
* @stable ICU 2.4
*/
- static void U_EXPORT2 operator delete(void *p) U_NOEXCEPT;
+ static void U_EXPORT2 operator delete(void *p) noexcept;
/**
* Override for ICU4C C++ memory management.
* See delete().
* @stable ICU 2.4
*/
- static void U_EXPORT2 operator delete[](void *p) U_NOEXCEPT;
+ static void U_EXPORT2 operator delete[](void *p) noexcept;
#if U_HAVE_PLACEMENT_NEW
/**
@@ -163,14 +163,14 @@ public:
* See new().
* @stable ICU 2.6
*/
- static inline void * U_EXPORT2 operator new(size_t, void *ptr) U_NOEXCEPT { return ptr; }
+ static inline void * U_EXPORT2 operator new(size_t, void *ptr) noexcept { return ptr; }
/**
* Override for ICU4C C++ memory management for STL.
* See delete().
* @stable ICU 2.6
*/
- static inline void U_EXPORT2 operator delete(void *, void *) U_NOEXCEPT {}
+ static inline void U_EXPORT2 operator delete(void *, void *) noexcept {}
#endif /* U_HAVE_PLACEMENT_NEW */
#if U_HAVE_DEBUG_LOCATION_NEW
/**
@@ -180,7 +180,7 @@ public:
* @param file The file where the allocation was requested
* @param line The line where the allocation was requested
*/
- static void * U_EXPORT2 operator new(size_t size, const char* file, int line) U_NOEXCEPT;
+ static void * U_EXPORT2 operator new(size_t size, const char* file, int line) noexcept;
/**
* This method provides a matching delete for the MFC debug new
*
@@ -188,7 +188,7 @@ public:
* @param file The file where the allocation was requested
* @param line The line where the allocation was requested
*/
- static void U_EXPORT2 operator delete(void* p, const char* file, int line) U_NOEXCEPT;
+ static void U_EXPORT2 operator delete(void* p, const char* file, int line) noexcept;
#endif /* U_HAVE_DEBUG_LOCATION_NEW */
#endif /* U_OVERRIDE_CXX_ALLOCATION */
diff --git a/Build/source/libs/icu/icu-src/source/common/unicode/urename.h b/Build/source/libs/icu/icu-src/source/common/unicode/urename.h
index d3e23b8fa72..74f2cae5106 100644
--- a/Build/source/libs/icu/icu-src/source/common/unicode/urename.h
+++ b/Build/source/libs/icu/icu-src/source/common/unicode/urename.h
@@ -138,8 +138,8 @@
#define locale_getKeywordsStart U_ICU_ENTRY_POINT_RENAME(locale_getKeywordsStart)
#define locale_get_default U_ICU_ENTRY_POINT_RENAME(locale_get_default)
#define locale_set_default U_ICU_ENTRY_POINT_RENAME(locale_set_default)
+#define mixedMeasuresToMicros U_ICU_ENTRY_POINT_RENAME(mixedMeasuresToMicros)
#define numSysCleanup U_ICU_ENTRY_POINT_RENAME(numSysCleanup)
-#define rbbi_cleanup U_ICU_ENTRY_POINT_RENAME(rbbi_cleanup)
#define pl_addFontRun U_ICU_ENTRY_POINT_RENAME(pl_addFontRun)
#define pl_addLocaleRun U_ICU_ENTRY_POINT_RENAME(pl_addLocaleRun)
#define pl_addValueRun U_ICU_ENTRY_POINT_RENAME(pl_addValueRun)
@@ -193,6 +193,7 @@
#define pl_resetFontRuns U_ICU_ENTRY_POINT_RENAME(pl_resetFontRuns)
#define pl_resetLocaleRuns U_ICU_ENTRY_POINT_RENAME(pl_resetLocaleRuns)
#define pl_resetValueRuns U_ICU_ENTRY_POINT_RENAME(pl_resetValueRuns)
+#define rbbi_cleanup U_ICU_ENTRY_POINT_RENAME(rbbi_cleanup)
#define res_countArrayItems U_ICU_ENTRY_POINT_RENAME(res_countArrayItems)
#define res_findResource U_ICU_ENTRY_POINT_RENAME(res_findResource)
#define res_getAlias U_ICU_ENTRY_POINT_RENAME(res_getAlias)
@@ -512,9 +513,6 @@
#define ubrk_setText U_ICU_ENTRY_POINT_RENAME(ubrk_setText)
#define ubrk_setUText U_ICU_ENTRY_POINT_RENAME(ubrk_setUText)
#define ubrk_swap U_ICU_ENTRY_POINT_RENAME(ubrk_swap)
-#define ucache_compareKeys U_ICU_ENTRY_POINT_RENAME(ucache_compareKeys)
-#define ucache_deleteKey U_ICU_ENTRY_POINT_RENAME(ucache_deleteKey)
-#define ucache_hashKeys U_ICU_ENTRY_POINT_RENAME(ucache_hashKeys)
#define ucal_add U_ICU_ENTRY_POINT_RENAME(ucal_add)
#define ucal_clear U_ICU_ENTRY_POINT_RENAME(ucal_clear)
#define ucal_clearField U_ICU_ENTRY_POINT_RENAME(ucal_clearField)
@@ -532,6 +530,7 @@
#define ucal_getFieldDifference U_ICU_ENTRY_POINT_RENAME(ucal_getFieldDifference)
#define ucal_getGregorianChange U_ICU_ENTRY_POINT_RENAME(ucal_getGregorianChange)
#define ucal_getHostTimeZone U_ICU_ENTRY_POINT_RENAME(ucal_getHostTimeZone)
+#define ucal_getIanaTimeZoneID U_ICU_ENTRY_POINT_RENAME(ucal_getIanaTimeZoneID)
#define ucal_getKeywordValuesForLocale U_ICU_ENTRY_POINT_RENAME(ucal_getKeywordValuesForLocale)
#define ucal_getLimit U_ICU_ENTRY_POINT_RENAME(ucal_getLimit)
#define ucal_getLocaleByType U_ICU_ENTRY_POINT_RENAME(ucal_getLocaleByType)
@@ -564,6 +563,7 @@
#define ucal_setTimeZone U_ICU_ENTRY_POINT_RENAME(ucal_setTimeZone)
#define ucase_addCaseClosure U_ICU_ENTRY_POINT_RENAME(ucase_addCaseClosure)
#define ucase_addPropertyStarts U_ICU_ENTRY_POINT_RENAME(ucase_addPropertyStarts)
+#define ucase_addSimpleCaseClosure U_ICU_ENTRY_POINT_RENAME(ucase_addSimpleCaseClosure)
#define ucase_addStringCaseClosure U_ICU_ENTRY_POINT_RENAME(ucase_addStringCaseClosure)
#define ucase_fold U_ICU_ENTRY_POINT_RENAME(ucase_fold)
#define ucase_getCaseLocale U_ICU_ENTRY_POINT_RENAME(ucase_getCaseLocale)
@@ -586,6 +586,7 @@
#define ucasemap_getLocale U_ICU_ENTRY_POINT_RENAME(ucasemap_getLocale)
#define ucasemap_getOptions U_ICU_ENTRY_POINT_RENAME(ucasemap_getOptions)
#define ucasemap_internalUTF8ToTitle U_ICU_ENTRY_POINT_RENAME(ucasemap_internalUTF8ToTitle)
+#define ucasemap_mapUTF8 U_ICU_ENTRY_POINT_RENAME(ucasemap_mapUTF8)
#define ucasemap_open U_ICU_ENTRY_POINT_RENAME(ucasemap_open)
#define ucasemap_setBreakIterator U_ICU_ENTRY_POINT_RENAME(ucasemap_setBreakIterator)
#define ucasemap_setLocale U_ICU_ENTRY_POINT_RENAME(ucasemap_setLocale)
@@ -954,9 +955,16 @@
#define ufieldpositer_close U_ICU_ENTRY_POINT_RENAME(ufieldpositer_close)
#define ufieldpositer_next U_ICU_ENTRY_POINT_RENAME(ufieldpositer_next)
#define ufieldpositer_open U_ICU_ENTRY_POINT_RENAME(ufieldpositer_open)
+#define ufile_close_translit U_ICU_ENTRY_POINT_RENAME(ufile_close_translit)
+#define ufile_fill_uchar_buffer U_ICU_ENTRY_POINT_RENAME(ufile_fill_uchar_buffer)
+#define ufile_flush_io U_ICU_ENTRY_POINT_RENAME(ufile_flush_io)
+#define ufile_flush_translit U_ICU_ENTRY_POINT_RENAME(ufile_flush_translit)
#define ufile_getch U_ICU_ENTRY_POINT_RENAME(ufile_getch)
#define ufile_getch32 U_ICU_ENTRY_POINT_RENAME(ufile_getch32)
+#define ufmt_64tou U_ICU_ENTRY_POINT_RENAME(ufmt_64tou)
#define ufmt_close U_ICU_ENTRY_POINT_RENAME(ufmt_close)
+#define ufmt_defaultCPToUnicode U_ICU_ENTRY_POINT_RENAME(ufmt_defaultCPToUnicode)
+#define ufmt_digitvalue U_ICU_ENTRY_POINT_RENAME(ufmt_digitvalue)
#define ufmt_getArrayItemByIndex U_ICU_ENTRY_POINT_RENAME(ufmt_getArrayItemByIndex)
#define ufmt_getArrayLength U_ICU_ENTRY_POINT_RENAME(ufmt_getArrayLength)
#define ufmt_getDate U_ICU_ENTRY_POINT_RENAME(ufmt_getDate)
@@ -968,7 +976,11 @@
#define ufmt_getType U_ICU_ENTRY_POINT_RENAME(ufmt_getType)
#define ufmt_getUChars U_ICU_ENTRY_POINT_RENAME(ufmt_getUChars)
#define ufmt_isNumeric U_ICU_ENTRY_POINT_RENAME(ufmt_isNumeric)
+#define ufmt_isdigit U_ICU_ENTRY_POINT_RENAME(ufmt_isdigit)
#define ufmt_open U_ICU_ENTRY_POINT_RENAME(ufmt_open)
+#define ufmt_ptou U_ICU_ENTRY_POINT_RENAME(ufmt_ptou)
+#define ufmt_uto64 U_ICU_ENTRY_POINT_RENAME(ufmt_uto64)
+#define ufmt_utop U_ICU_ENTRY_POINT_RENAME(ufmt_utop)
#define ufmtval_getString U_ICU_ENTRY_POINT_RENAME(ufmtval_getString)
#define ufmtval_nextPosition U_ICU_ENTRY_POINT_RENAME(ufmtval_nextPosition)
#define ugender_getInstance U_ICU_ENTRY_POINT_RENAME(ugender_getInstance)
@@ -1132,6 +1144,39 @@
#define uloc_toLegacyType U_ICU_ENTRY_POINT_RENAME(uloc_toLegacyType)
#define uloc_toUnicodeLocaleKey U_ICU_ENTRY_POINT_RENAME(uloc_toUnicodeLocaleKey)
#define uloc_toUnicodeLocaleType U_ICU_ENTRY_POINT_RENAME(uloc_toUnicodeLocaleType)
+#define ulocale_close U_ICU_ENTRY_POINT_RENAME(ulocale_close)
+#define ulocale_getBaseName U_ICU_ENTRY_POINT_RENAME(ulocale_getBaseName)
+#define ulocale_getKeywordValue U_ICU_ENTRY_POINT_RENAME(ulocale_getKeywordValue)
+#define ulocale_getKeywords U_ICU_ENTRY_POINT_RENAME(ulocale_getKeywords)
+#define ulocale_getLanguage U_ICU_ENTRY_POINT_RENAME(ulocale_getLanguage)
+#define ulocale_getLocaleID U_ICU_ENTRY_POINT_RENAME(ulocale_getLocaleID)
+#define ulocale_getRegion U_ICU_ENTRY_POINT_RENAME(ulocale_getRegion)
+#define ulocale_getScript U_ICU_ENTRY_POINT_RENAME(ulocale_getScript)
+#define ulocale_getUnicodeKeywordValue U_ICU_ENTRY_POINT_RENAME(ulocale_getUnicodeKeywordValue)
+#define ulocale_getUnicodeKeywords U_ICU_ENTRY_POINT_RENAME(ulocale_getUnicodeKeywords)
+#define ulocale_getVariant U_ICU_ENTRY_POINT_RENAME(ulocale_getVariant)
+#define ulocale_isBogus U_ICU_ENTRY_POINT_RENAME(ulocale_isBogus)
+#define ulocale_openForLanguageTag U_ICU_ENTRY_POINT_RENAME(ulocale_openForLanguageTag)
+#define ulocale_openForLocaleID U_ICU_ENTRY_POINT_RENAME(ulocale_openForLocaleID)
+#define ulocbld_addUnicodeLocaleAttribute U_ICU_ENTRY_POINT_RENAME(ulocbld_addUnicodeLocaleAttribute)
+#define ulocbld_adoptULocale U_ICU_ENTRY_POINT_RENAME(ulocbld_adoptULocale)
+#define ulocbld_buildLanguageTag U_ICU_ENTRY_POINT_RENAME(ulocbld_buildLanguageTag)
+#define ulocbld_buildLocaleID U_ICU_ENTRY_POINT_RENAME(ulocbld_buildLocaleID)
+#define ulocbld_buildULocale U_ICU_ENTRY_POINT_RENAME(ulocbld_buildULocale)
+#define ulocbld_clear U_ICU_ENTRY_POINT_RENAME(ulocbld_clear)
+#define ulocbld_clearExtensions U_ICU_ENTRY_POINT_RENAME(ulocbld_clearExtensions)
+#define ulocbld_close U_ICU_ENTRY_POINT_RENAME(ulocbld_close)
+#define ulocbld_copyErrorTo U_ICU_ENTRY_POINT_RENAME(ulocbld_copyErrorTo)
+#define ulocbld_open U_ICU_ENTRY_POINT_RENAME(ulocbld_open)
+#define ulocbld_removeUnicodeLocaleAttribute U_ICU_ENTRY_POINT_RENAME(ulocbld_removeUnicodeLocaleAttribute)
+#define ulocbld_setExtension U_ICU_ENTRY_POINT_RENAME(ulocbld_setExtension)
+#define ulocbld_setLanguage U_ICU_ENTRY_POINT_RENAME(ulocbld_setLanguage)
+#define ulocbld_setLanguageTag U_ICU_ENTRY_POINT_RENAME(ulocbld_setLanguageTag)
+#define ulocbld_setLocale U_ICU_ENTRY_POINT_RENAME(ulocbld_setLocale)
+#define ulocbld_setRegion U_ICU_ENTRY_POINT_RENAME(ulocbld_setRegion)
+#define ulocbld_setScript U_ICU_ENTRY_POINT_RENAME(ulocbld_setScript)
+#define ulocbld_setUnicodeLocaleKeyword U_ICU_ENTRY_POINT_RENAME(ulocbld_setUnicodeLocaleKeyword)
+#define ulocbld_setVariant U_ICU_ENTRY_POINT_RENAME(ulocbld_setVariant)
#define ulocdata_close U_ICU_ENTRY_POINT_RENAME(ulocdata_close)
#define ulocdata_getCLDRVersion U_ICU_ENTRY_POINT_RENAME(ulocdata_getCLDRVersion)
#define ulocdata_getDelimiter U_ICU_ENTRY_POINT_RENAME(ulocdata_getDelimiter)
@@ -1212,6 +1257,7 @@
#define unorm2_getNFDInstance U_ICU_ENTRY_POINT_RENAME(unorm2_getNFDInstance)
#define unorm2_getNFKCCasefoldInstance U_ICU_ENTRY_POINT_RENAME(unorm2_getNFKCCasefoldInstance)
#define unorm2_getNFKCInstance U_ICU_ENTRY_POINT_RENAME(unorm2_getNFKCInstance)
+#define unorm2_getNFKCSimpleCasefoldInstance U_ICU_ENTRY_POINT_RENAME(unorm2_getNFKCSimpleCasefoldInstance)
#define unorm2_getNFKDInstance U_ICU_ENTRY_POINT_RENAME(unorm2_getNFKDInstance)
#define unorm2_getRawDecomposition U_ICU_ENTRY_POINT_RENAME(unorm2_getRawDecomposition)
#define unorm2_hasBoundaryAfter U_ICU_ENTRY_POINT_RENAME(unorm2_hasBoundaryAfter)
@@ -1348,6 +1394,7 @@
#define uprv_convertToPosix U_ICU_ENTRY_POINT_RENAME(uprv_convertToPosix)
#define uprv_copyAscii U_ICU_ENTRY_POINT_RENAME(uprv_copyAscii)
#define uprv_copyEbcdic U_ICU_ENTRY_POINT_RENAME(uprv_copyEbcdic)
+#define uprv_currencyLeads U_ICU_ENTRY_POINT_RENAME(uprv_currencyLeads)
#define uprv_decContextClearStatus U_ICU_ENTRY_POINT_RENAME(uprv_decContextClearStatus)
#define uprv_decContextDefault U_ICU_ENTRY_POINT_RENAME(uprv_decContextDefault)
#define uprv_decContextGetRounding U_ICU_ENTRY_POINT_RENAME(uprv_decContextGetRounding)
@@ -1366,6 +1413,7 @@
#define uprv_decNumberAbs U_ICU_ENTRY_POINT_RENAME(uprv_decNumberAbs)
#define uprv_decNumberAdd U_ICU_ENTRY_POINT_RENAME(uprv_decNumberAdd)
#define uprv_decNumberAnd U_ICU_ENTRY_POINT_RENAME(uprv_decNumberAnd)
+#define uprv_decNumberClass U_ICU_ENTRY_POINT_RENAME(uprv_decNumberClass)
#define uprv_decNumberClassToString U_ICU_ENTRY_POINT_RENAME(uprv_decNumberClassToString)
#define uprv_decNumberCompare U_ICU_ENTRY_POINT_RENAME(uprv_decNumberCompare)
#define uprv_decNumberCompareSignal U_ICU_ENTRY_POINT_RENAME(uprv_decNumberCompareSignal)
@@ -1748,6 +1796,23 @@
#define uset_spanBackUTF8 U_ICU_ENTRY_POINT_RENAME(uset_spanBackUTF8)
#define uset_spanUTF8 U_ICU_ENTRY_POINT_RENAME(uset_spanUTF8)
#define uset_toPattern U_ICU_ENTRY_POINT_RENAME(uset_toPattern)
+#define usnum_close U_ICU_ENTRY_POINT_RENAME(usnum_close)
+#define usnum_multiplyByPowerOfTen U_ICU_ENTRY_POINT_RENAME(usnum_multiplyByPowerOfTen)
+#define usnum_openForInt64 U_ICU_ENTRY_POINT_RENAME(usnum_openForInt64)
+#define usnum_roundTo U_ICU_ENTRY_POINT_RENAME(usnum_roundTo)
+#define usnum_setMinimumFractionDigits U_ICU_ENTRY_POINT_RENAME(usnum_setMinimumFractionDigits)
+#define usnum_setMinimumIntegerDigits U_ICU_ENTRY_POINT_RENAME(usnum_setMinimumIntegerDigits)
+#define usnum_setSign U_ICU_ENTRY_POINT_RENAME(usnum_setSign)
+#define usnum_setToInt64 U_ICU_ENTRY_POINT_RENAME(usnum_setToInt64)
+#define usnum_truncateStart U_ICU_ENTRY_POINT_RENAME(usnum_truncateStart)
+#define usnumf_close U_ICU_ENTRY_POINT_RENAME(usnumf_close)
+#define usnumf_format U_ICU_ENTRY_POINT_RENAME(usnumf_format)
+#define usnumf_formatInt64 U_ICU_ENTRY_POINT_RENAME(usnumf_formatInt64)
+#define usnumf_openForLocale U_ICU_ENTRY_POINT_RENAME(usnumf_openForLocale)
+#define usnumf_openForLocaleAndGroupingStrategy U_ICU_ENTRY_POINT_RENAME(usnumf_openForLocaleAndGroupingStrategy)
+#define uspoof_areBidiConfusable U_ICU_ENTRY_POINT_RENAME(uspoof_areBidiConfusable)
+#define uspoof_areBidiConfusableUTF8 U_ICU_ENTRY_POINT_RENAME(uspoof_areBidiConfusableUTF8)
+#define uspoof_areBidiConfusableUnicodeString U_ICU_ENTRY_POINT_RENAME(uspoof_areBidiConfusableUnicodeString)
#define uspoof_areConfusable U_ICU_ENTRY_POINT_RENAME(uspoof_areConfusable)
#define uspoof_areConfusableUTF8 U_ICU_ENTRY_POINT_RENAME(uspoof_areConfusableUTF8)
#define uspoof_areConfusableUnicodeString U_ICU_ENTRY_POINT_RENAME(uspoof_areConfusableUnicodeString)
@@ -1763,6 +1828,9 @@
#define uspoof_getAllowedChars U_ICU_ENTRY_POINT_RENAME(uspoof_getAllowedChars)
#define uspoof_getAllowedLocales U_ICU_ENTRY_POINT_RENAME(uspoof_getAllowedLocales)
#define uspoof_getAllowedUnicodeSet U_ICU_ENTRY_POINT_RENAME(uspoof_getAllowedUnicodeSet)
+#define uspoof_getBidiSkeleton U_ICU_ENTRY_POINT_RENAME(uspoof_getBidiSkeleton)
+#define uspoof_getBidiSkeletonUTF8 U_ICU_ENTRY_POINT_RENAME(uspoof_getBidiSkeletonUTF8)
+#define uspoof_getBidiSkeletonUnicodeString U_ICU_ENTRY_POINT_RENAME(uspoof_getBidiSkeletonUnicodeString)
#define uspoof_getCheckResultChecks U_ICU_ENTRY_POINT_RENAME(uspoof_getCheckResultChecks)
#define uspoof_getCheckResultNumerics U_ICU_ENTRY_POINT_RENAME(uspoof_getCheckResultNumerics)
#define uspoof_getCheckResultRestrictionLevel U_ICU_ENTRY_POINT_RENAME(uspoof_getCheckResultRestrictionLevel)
diff --git a/Build/source/libs/icu/icu-src/source/common/unicode/ures.h b/Build/source/libs/icu/icu-src/source/common/unicode/ures.h
index a6c43f9537a..babc01d426a 100644
--- a/Build/source/libs/icu/icu-src/source/common/unicode/ures.h
+++ b/Build/source/libs/icu/icu-src/source/common/unicode/ures.h
@@ -25,6 +25,7 @@
#ifndef URES_H
#define URES_H
+#include "unicode/char16ptr.h"
#include "unicode/utypes.h"
#include "unicode/uloc.h"
@@ -812,7 +813,7 @@ inline UnicodeString
ures_getUnicodeString(const UResourceBundle *resB, UErrorCode* status) {
UnicodeString result;
int32_t len = 0;
- const UChar *r = ures_getString(resB, &len, status);
+ const char16_t *r = ConstChar16Ptr(ures_getString(resB, &len, status));
if(U_SUCCESS(*status)) {
result.setTo(true, r, len);
} else {
@@ -837,7 +838,7 @@ inline UnicodeString
ures_getNextUnicodeString(UResourceBundle *resB, const char ** key, UErrorCode* status) {
UnicodeString result;
int32_t len = 0;
- const UChar* r = ures_getNextString(resB, &len, key, status);
+ const char16_t* r = ConstChar16Ptr(ures_getNextString(resB, &len, key, status));
if(U_SUCCESS(*status)) {
result.setTo(true, r, len);
} else {
@@ -859,7 +860,7 @@ inline UnicodeString
ures_getUnicodeStringByIndex(const UResourceBundle *resB, int32_t indexS, UErrorCode* status) {
UnicodeString result;
int32_t len = 0;
- const UChar* r = ures_getStringByIndex(resB, indexS, &len, status);
+ const char16_t* r = ConstChar16Ptr(ures_getStringByIndex(resB, indexS, &len, status));
if(U_SUCCESS(*status)) {
result.setTo(true, r, len);
} else {
@@ -882,7 +883,7 @@ inline UnicodeString
ures_getUnicodeStringByKey(const UResourceBundle *resB, const char* key, UErrorCode* status) {
UnicodeString result;
int32_t len = 0;
- const UChar* r = ures_getStringByKey(resB, key, &len, status);
+ const char16_t* r = ConstChar16Ptr(ures_getStringByKey(resB, key, &len, status));
if(U_SUCCESS(*status)) {
result.setTo(true, r, len);
} else {
diff --git a/Build/source/libs/icu/icu-src/source/common/unicode/uset.h b/Build/source/libs/icu/icu-src/source/common/unicode/uset.h
index 5dd890e148d..ee4e0036d22 100644
--- a/Build/source/libs/icu/icu-src/source/common/unicode/uset.h
+++ b/Build/source/libs/icu/icu-src/source/common/unicode/uset.h
@@ -53,6 +53,12 @@ typedef struct USet USet;
/**
* Bitmask values to be passed to uset_openPatternOptions() or
* uset_applyPattern() taking an option parameter.
+ *
+ * Use at most one of USET_CASE_INSENSITIVE, USET_ADD_CASE_MAPPINGS, USET_SIMPLE_CASE_INSENSITIVE.
+ * These case options are mutually exclusive.
+ *
+ * Undefined options bits are ignored, and reserved for future use.
+ *
* @stable ICU 2.4
*/
enum {
@@ -60,13 +66,13 @@ enum {
* Ignore white space within patterns unless quoted or escaped.
* @stable ICU 2.4
*/
- USET_IGNORE_SPACE = 1,
+ USET_IGNORE_SPACE = 1,
/**
* 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.
+ * closure over case mappings, e.g. 'Å¿' (U+017F long s) for 's'.
*
* The resulting set is a superset of the input for the code points but
* not for the strings.
@@ -88,17 +94,36 @@ enum {
*
* @stable ICU 2.4
*/
- USET_CASE_INSENSITIVE = 2,
+ USET_CASE_INSENSITIVE = 2,
/**
- * 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
+ * Adds all case mappings for each element in the set.
+ * This adds the full lower-, title-, and uppercase mappings as well as the full case folding
* of each existing element in the set.
+ *
+ * Unlike the “case insensitive†options, this does not perform a closure.
+ * For example, it does not add 'Å¿' (U+017F long s) for 's',
+ * 'K' (U+212A Kelvin sign) for 'k', or replace set strings by their case-folded versions.
+ *
* @stable ICU 3.2
*/
- USET_ADD_CASE_MAPPINGS = 4
+ USET_ADD_CASE_MAPPINGS = 4,
+
+#ifndef U_HIDE_DRAFT_API
+ /**
+ * Enable case insensitive matching.
+ * Same as USET_CASE_INSENSITIVE but using only Simple_Case_Folding (scf) mappings,
+ * which map each code point to one code point,
+ * not full Case_Folding (cf) mappings, which map some code points to multiple code points.
+ *
+ * This is designed for case-insensitive matches, for example in certain
+ * regular expression implementations where only Simple_Case_Folding mappings are used,
+ * such as in ECMAScript (JavaScript) regular expressions.
+ *
+ * @draft ICU 73
+ */
+ USET_SIMPLE_CASE_INSENSITIVE = 6
+#endif // U_HIDE_DRAFT_API
};
/**
@@ -299,7 +324,9 @@ uset_openPattern(const UChar* pattern, int32_t patternLength,
* @param patternLength the length of the pattern, or -1 if null
* terminated
* @param options bitmask for options to apply to the pattern.
- * Valid options are USET_IGNORE_SPACE and USET_CASE_INSENSITIVE.
+ * Valid options are USET_IGNORE_SPACE and
+ * at most one of USET_CASE_INSENSITIVE, USET_ADD_CASE_MAPPINGS, USET_SIMPLE_CASE_INSENSITIVE.
+ * These case options are mutually exclusive.
* @param ec the error code
* @stable ICU 2.4
*/
@@ -414,7 +441,10 @@ uset_set(USet* set,
* The character at pattern[0] must be a '['.
* @param patternLength The length of the UChar string. -1 if NUL terminated.
* @param options A bitmask for options to apply to the pattern.
- * Valid options are USET_IGNORE_SPACE and USET_CASE_INSENSITIVE.
+ * Valid options are USET_IGNORE_SPACE and
+ * at most one of USET_CASE_INSENSITIVE, USET_ADD_CASE_MAPPINGS,
+ * USET_SIMPLE_CASE_INSENSITIVE.
+ * These case options are mutually exclusive.
* @param status Returns an error if the pattern cannot be parsed.
* @return Upon successful parse, the value is either
* the index of the character after the closing ']'
@@ -804,7 +834,7 @@ uset_clear(USet* set);
/**
* Close this set over the given attribute. For the attribute
- * USET_CASE, the result is to modify this set so that:
+ * USET_CASE_INSENSITIVE, the result is to modify this set so that:
*
* 1. For each character or string 'a' in this set, all strings or
* characters 'b' such that foldCase(a) == foldCase(b) are added
@@ -824,8 +854,10 @@ uset_clear(USet* set);
* @param set the set
*
* @param attributes bitmask for attributes to close over.
- * Currently only the USET_CASE bit is supported. Any undefined bits
- * are ignored.
+ * Valid options:
+ * At most one of USET_CASE_INSENSITIVE, USET_ADD_CASE_MAPPINGS, USET_SIMPLE_CASE_INSENSITIVE.
+ * These case options are mutually exclusive.
+ * Unrelated options bits are ignored.
* @stable ICU 4.2
*/
U_CAPI void U_EXPORT2
diff --git a/Build/source/libs/icu/icu-src/source/common/unicode/usetiter.h b/Build/source/libs/icu/icu-src/source/common/unicode/usetiter.h
index 34992d94b7f..3168d3b0f6b 100644
--- a/Build/source/libs/icu/icu-src/source/common/unicode/usetiter.h
+++ b/Build/source/libs/icu/icu-src/source/common/unicode/usetiter.h
@@ -64,7 +64,7 @@ class UnicodeString;
* @author M. Davis
* @stable ICU 2.4
*/
-class U_COMMON_API UnicodeSetIterator U_FINAL : public UObject {
+class U_COMMON_API UnicodeSetIterator final : public UObject {
/**
* Value of <tt>codepoint</tt> if the iterator points to a string.
* If <tt>codepoint == IS_STRING</tt>, then examine
diff --git a/Build/source/libs/icu/icu-src/source/common/unicode/ustring.h b/Build/source/libs/icu/icu-src/source/common/unicode/ustring.h
index 5452fbe09a8..03c697c7228 100644
--- a/Build/source/libs/icu/icu-src/source/common/unicode/ustring.h
+++ b/Build/source/libs/icu/icu-src/source/common/unicode/ustring.h
@@ -931,14 +931,10 @@ u_memrchr32(const UChar *s, UChar32 c, int32_t count);
# define U_STRING_DECL(var, cs, length) static const UChar *var=(const UChar *)U_DECLARE_UTF16(cs)
/**@stable ICU 2.0 */
# define U_STRING_INIT(var, cs, length)
-#elif U_SIZEOF_WCHAR_T==U_SIZEOF_UCHAR && (U_CHARSET_FAMILY==U_ASCII_FAMILY || (U_SIZEOF_UCHAR == 2 && defined(U_WCHAR_IS_UTF16)))
+#elif U_SIZEOF_WCHAR_T==U_SIZEOF_UCHAR && (U_CHARSET_FAMILY==U_ASCII_FAMILY || defined(U_WCHAR_IS_UTF16))
# define U_STRING_DECL(var, cs, length) static const UChar var[(length)+1]=L ## cs
/**@stable ICU 2.0 */
# define U_STRING_INIT(var, cs, length)
-#elif U_SIZEOF_UCHAR==1 && U_CHARSET_FAMILY==U_ASCII_FAMILY
-# define U_STRING_DECL(var, cs, length) static const UChar var[(length)+1]=cs
- /**@stable ICU 2.0 */
-# define U_STRING_INIT(var, cs, length)
#else
# define U_STRING_DECL(var, cs, length) static UChar var[(length)+1]
/**@stable ICU 2.0 */
diff --git a/Build/source/libs/icu/icu-src/source/common/unicode/utext.h b/Build/source/libs/icu/icu-src/source/common/unicode/utext.h
index c6d1e53a8ce..423b281631d 100644
--- a/Build/source/libs/icu/icu-src/source/common/unicode/utext.h
+++ b/Build/source/libs/icu/icu-src/source/common/unicode/utext.h
@@ -230,8 +230,8 @@ utext_openUChars(UText *ut, const UChar *s, int64_t length, UErrorCode *status);
/**
* Open a writable UText for a non-const UnicodeString.
*
- * @param ut Pointer to a UText struct. If NULL, a new UText will be created.
- * If non-NULL, must refer to an initialized UText struct, which will then
+ * @param ut Pointer to a UText struct. If nullptr, a new UText will be created.
+ * If non-nullptr, must refer to an initialized UText struct, which will then
* be reset to reference the specified input string.
* @param s A UnicodeString.
* @param status Errors are returned here.
@@ -246,8 +246,8 @@ utext_openUnicodeString(UText *ut, icu::UnicodeString *s, UErrorCode *status);
/**
* Open a UText for a const UnicodeString. The resulting UText will not be writable.
*
- * @param ut Pointer to a UText struct. If NULL, a new UText will be created.
- * If non-NULL, must refer to an initialized UText struct, which will then
+ * @param ut Pointer to a UText struct. If nullptr, a new UText will be created.
+ * If non-nullptr, must refer to an initialized UText struct, which will then
* be reset to reference the specified input string.
* @param s A const UnicodeString to be wrapped.
* @param status Errors are returned here.
@@ -261,8 +261,8 @@ utext_openConstUnicodeString(UText *ut, const icu::UnicodeString *s, UErrorCode
/**
* Open a writable UText implementation for an ICU Replaceable object.
- * @param ut Pointer to a UText struct. If NULL, a new UText will be created.
- * If non-NULL, must refer to an already existing UText, which will then
+ * @param ut Pointer to a UText struct. If nullptr, a new UText will be created.
+ * If non-nullptr, must refer to an already existing UText, which will then
* be reset to reference the specified replaceable text.
* @param rep A Replaceable text object.
* @param status Errors are returned here.
@@ -276,8 +276,8 @@ utext_openReplaceable(UText *ut, icu::Replaceable *rep, UErrorCode *status);
/**
* Open a UText implementation over an ICU CharacterIterator.
- * @param ut Pointer to a UText struct. If NULL, a new UText will be created.
- * If non-NULL, must refer to an already existing UText, which will then
+ * @param ut Pointer to a UText struct. If nullptr, a new UText will be created.
+ * If non-nullptr, must refer to an already existing UText, which will then
* be reset to reference the specified replaceable text.
* @param ci A Character Iterator.
* @param status Errors are returned here.
diff --git a/Build/source/libs/icu/icu-src/source/common/unicode/uvernum.h b/Build/source/libs/icu/icu-src/source/common/unicode/uvernum.h
index a93f3509ef3..1cdf8912f94 100644
--- a/Build/source/libs/icu/icu-src/source/common/unicode/uvernum.h
+++ b/Build/source/libs/icu/icu-src/source/common/unicode/uvernum.h
@@ -53,13 +53,13 @@
* This value will change in the subsequent releases of ICU
* @stable ICU 2.4
*/
-#define U_ICU_VERSION_MAJOR_NUM 72
+#define U_ICU_VERSION_MAJOR_NUM 74
/** The current ICU minor version as an integer.
* This value will change in the subsequent releases of ICU
* @stable ICU 2.6
*/
-#define U_ICU_VERSION_MINOR_NUM 1
+#define U_ICU_VERSION_MINOR_NUM 2
/** The current ICU patchlevel version as an integer.
* This value will change in the subsequent releases of ICU
@@ -79,7 +79,7 @@
* This value will change in the subsequent releases of ICU
* @stable ICU 2.6
*/
-#define U_ICU_VERSION_SUFFIX _72
+#define U_ICU_VERSION_SUFFIX _74
/**
* \def U_DEF2_ICU_ENTRY_POINT_RENAME
@@ -132,7 +132,7 @@
* This value will change in the subsequent releases of ICU
* @stable ICU 2.4
*/
-#define U_ICU_VERSION "72.1"
+#define U_ICU_VERSION "74.2"
/**
* The current ICU library major version number as a string, for library name suffixes.
@@ -145,13 +145,13 @@
*
* @stable ICU 2.6
*/
-#define U_ICU_VERSION_SHORT "72"
+#define U_ICU_VERSION_SHORT "74"
#ifndef U_HIDE_INTERNAL_API
/** Data version in ICU4C.
* @internal ICU 4.4 Internal Use Only
**/
-#define U_ICU_DATA_VERSION "72.1"
+#define U_ICU_DATA_VERSION "74.2"
#endif /* U_HIDE_INTERNAL_API */
/*===========================================================================
diff --git a/Build/source/libs/icu/icu-src/source/common/unifiedcache.cpp b/Build/source/libs/icu/icu-src/source/common/unifiedcache.cpp
index cfb000b2c8e..1284c03813e 100644
--- a/Build/source/libs/icu/icu-src/source/common/unifiedcache.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/unifiedcache.cpp
@@ -19,7 +19,7 @@
#include "uhash.h"
#include "ucln_cmn.h"
-static icu::UnifiedCache *gCache = NULL;
+static icu::UnifiedCache *gCache = nullptr;
static std::mutex *gCacheMutex = nullptr;
static std::condition_variable *gInProgressValueAddedCond;
static icu::UInitOnce gCacheInitOnce {};
@@ -68,19 +68,19 @@ CacheKeyBase::~CacheKeyBase() {
}
static void U_CALLCONV cacheInit(UErrorCode &status) {
- U_ASSERT(gCache == NULL);
+ U_ASSERT(gCache == nullptr);
ucln_common_registerCleanup(
UCLN_COMMON_UNIFIED_CACHE, unifiedcache_cleanup);
gCacheMutex = STATIC_NEW(std::mutex);
gInProgressValueAddedCond = STATIC_NEW(std::condition_variable);
gCache = new UnifiedCache(status);
- if (gCache == NULL) {
+ if (gCache == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
}
if (U_FAILURE(status)) {
delete gCache;
- gCache = NULL;
+ gCache = nullptr;
return;
}
}
@@ -88,14 +88,14 @@ static void U_CALLCONV cacheInit(UErrorCode &status) {
UnifiedCache *UnifiedCache::getInstance(UErrorCode &status) {
umtx_initOnce(gCacheInitOnce, &cacheInit, status);
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
- U_ASSERT(gCache != NULL);
+ U_ASSERT(gCache != nullptr);
return gCache;
}
UnifiedCache::UnifiedCache(UErrorCode &status) :
- fHashtable(NULL),
+ fHashtable(nullptr),
fEvictPos(UHASH_FIRST),
fNumValuesTotal(0),
fNumValuesInUse(0),
@@ -118,7 +118,7 @@ UnifiedCache::UnifiedCache(UErrorCode &status) :
fHashtable = uhash_open(
&ucache_hashKeys,
&ucache_compareKeys,
- NULL,
+ nullptr,
&status);
if (U_FAILURE(status)) {
return;
@@ -196,7 +196,7 @@ void UnifiedCache::_dumpContents() const {
const UHashElement *element = uhash_nextElement(fHashtable, &pos);
char buffer[256];
int32_t cnt = 0;
- for (; element != NULL; element = uhash_nextElement(fHashtable, &pos)) {
+ for (; element != nullptr; element = uhash_nextElement(fHashtable, &pos)) {
const SharedObject *sharedObject =
(const SharedObject *) element->value.pointer;
const CacheKeyBase *key =
@@ -208,7 +208,7 @@ void UnifiedCache::_dumpContents() const {
"Unified Cache: Key '%s', error %d, value %p, total refcount %d, soft refcount %d\n",
key->writeDescription(buffer, 256),
key->creationStatus,
- sharedObject == fNoValue ? NULL :sharedObject,
+ sharedObject == fNoValue ? nullptr :sharedObject,
sharedObject->getRefCount(),
sharedObject->getSoftRefCount());
}
@@ -236,7 +236,7 @@ UnifiedCache::~UnifiedCache() {
const UHashElement *
UnifiedCache::_nextElement() const {
const UHashElement *element = uhash_nextElement(fHashtable, &fEvictPos);
- if (element == NULL) {
+ if (element == nullptr) {
fEvictPos = UHASH_FIRST;
return uhash_nextElement(fHashtable, &fEvictPos);
}
@@ -305,7 +305,7 @@ void UnifiedCache::_putNew(
return;
}
CacheKeyBase *keyToAdopt = key.clone();
- if (keyToAdopt == NULL) {
+ if (keyToAdopt == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -327,11 +327,11 @@ void UnifiedCache::_putIfAbsentAndGet(
UErrorCode &status) const {
std::lock_guard<std::mutex> lock(*gCacheMutex);
const UHashElement *element = uhash_find(fHashtable, &key);
- if (element != NULL && !_inProgress(element)) {
+ if (element != nullptr && !_inProgress(element)) {
_fetch(element, value, status);
return;
}
- if (element == NULL) {
+ if (element == nullptr) {
UErrorCode putError = U_ZERO_ERROR;
// best-effort basis only.
_putNew(key, value, status, putError);
@@ -348,7 +348,7 @@ UBool UnifiedCache::_poll(
const CacheKeyBase &key,
const SharedObject *&value,
UErrorCode &status) const {
- U_ASSERT(value == NULL);
+ U_ASSERT(value == nullptr);
U_ASSERT(status == U_ZERO_ERROR);
std::unique_lock<std::mutex> lock(*gCacheMutex);
const UHashElement *element = uhash_find(fHashtable, &key);
@@ -356,14 +356,14 @@ UBool UnifiedCache::_poll(
// If the hash table contains an inProgress placeholder entry for this key,
// this means that another thread is currently constructing the value object.
// Loop, waiting for that construction to complete.
- while (element != NULL && _inProgress(element)) {
+ while (element != nullptr && _inProgress(element)) {
gInProgressValueAddedCond->wait(lock);
element = uhash_find(fHashtable, &key);
}
// If the hash table contains an entry for the key,
// fetch out the contents and return them.
- if (element != NULL) {
+ if (element != nullptr) {
_fetch(element, value, status);
return true;
}
@@ -380,7 +380,7 @@ void UnifiedCache::_get(
const SharedObject *&value,
const void *creationContext,
UErrorCode &status) const {
- U_ASSERT(value == NULL);
+ U_ASSERT(value == nullptr);
U_ASSERT(status == U_ZERO_ERROR);
if (_poll(key, value, status)) {
if (value == fNoValue) {
@@ -392,9 +392,9 @@ void UnifiedCache::_get(
return;
}
value = key.createObject(creationContext, status);
- U_ASSERT(value == NULL || value->hasHardReferences());
- U_ASSERT(value != NULL || status != U_ZERO_ERROR);
- if (value == NULL) {
+ U_ASSERT(value == nullptr || value->hasHardReferences());
+ U_ASSERT(value != nullptr || status != U_ZERO_ERROR);
+ if (value == nullptr) {
SharedObject::copyPtr(fNoValue, value);
}
_putIfAbsentAndGet(key, value, status);
@@ -451,7 +451,7 @@ void UnifiedCache::_fetch(
UBool UnifiedCache::_inProgress(const UHashElement* element) const {
UErrorCode status = U_ZERO_ERROR;
- const SharedObject * value = NULL;
+ const SharedObject * value = nullptr;
_fetch(element, value, status);
UBool result = _inProgress(value, status);
removeHardRef(value);
diff --git a/Build/source/libs/icu/icu-src/source/common/unifiedcache.h b/Build/source/libs/icu/icu-src/source/common/unifiedcache.h
index 4b9222124a2..217031a27d2 100644
--- a/Build/source/libs/icu/icu-src/source/common/unifiedcache.h
+++ b/Build/source/libs/icu/icu-src/source/common/unifiedcache.h
@@ -57,21 +57,21 @@ class U_COMMON_API CacheKeyBase : public UObject {
* Create a new object for this key. Called by cache on cache miss.
* createObject must add a reference to the object it returns. Note
* that getting an object from the cache and returning it without calling
- * removeRef on it satisfies this requirement. It can also return NULL
+ * removeRef on it satisfies this requirement. It can also return nullptr
* and set status to an error.
*
* @param creationContext the context in which the object is being
- * created. May be NULL.
+ * created. May be nullptr.
* @param status Implementations can return a failure here.
* In addition, implementations may return a
- * non NULL object and set a warning status.
+ * non nullptr object and set a warning status.
*/
virtual const SharedObject *createObject(
const void *creationContext, UErrorCode &status) const = 0;
/**
* Writes a description of this key to buffer and returns buffer. Written
- * description is NULL terminated.
+ * description is nullptr terminated.
*/
virtual char *writeDescription(char *buffer, int32_t bufSize) const = 0;
@@ -196,14 +196,14 @@ class U_COMMON_API UnifiedCache : public UnifiedCacheBase {
/**
* Fetches a value from the cache by key. Equivalent to
- * get(key, NULL, ptr, status);
+ * get(key, nullptr, ptr, status);
*/
template<typename T>
void get(
const CacheKey<T>& key,
const T *&ptr,
UErrorCode &status) const {
- get(key, NULL, ptr, status);
+ get(key, nullptr, ptr, status);
}
/**
@@ -211,12 +211,12 @@ class U_COMMON_API UnifiedCache : public UnifiedCacheBase {
*
* @param key the cache key.
* @param creationContext passed verbatim to createObject method of key
- * @param ptr On entry, ptr must be NULL or be included if
+ * @param ptr On entry, ptr must be nullptr or be included if
* the reference count of the object it points
* to. On exit, ptr points to the fetched object
* from the cache or is left unchanged on
* failure. Caller must call removeRef on ptr
- * if set to a non NULL value.
+ * if set to a non nullptr value.
* @param status Any error returned here. May be set to a
* warning value even if ptr is set.
*/
@@ -230,7 +230,7 @@ class U_COMMON_API UnifiedCache : public UnifiedCacheBase {
return;
}
UErrorCode creationStatus = U_ZERO_ERROR;
- const SharedObject *value = NULL;
+ const SharedObject *value = nullptr;
_get(key, value, creationContext, creationStatus);
const T *tvalue = (const T *) value;
if (U_SUCCESS(creationStatus)) {
@@ -254,13 +254,13 @@ class U_COMMON_API UnifiedCache : public UnifiedCacheBase {
/**
* Convenience method to get a value of type T from cache for a
- * particular locale with creationContext == NULL.
+ * particular locale with creationContext == nullptr.
* @param loc the locale
- * @param ptr On entry, must be NULL or included in the ref count
+ * @param ptr On entry, must be nullptr or included in the ref count
* of the object to which it points.
* On exit, fetched value stored here or is left
* unchanged on failure. Caller must call removeRef on
- * ptr if set to a non NULL value.
+ * ptr if set to a non nullptr value.
* @param status Any error returned here. May be set to a
* warning value even if ptr is set.
*/
@@ -376,14 +376,14 @@ class U_COMMON_API UnifiedCache : public UnifiedCacheBase {
/**
* Gets value out of cache.
- * On entry. gCacheMutex must not be held. value must be NULL. status
+ * On entry. gCacheMutex must not be held. value must be nullptr. status
* must be U_ZERO_ERROR.
* On exit. value and status set to what is in cache at key or on cache
* miss the key's createObject() is called and value and status are set to
* the result of that. In this latter case, best effort is made to add the
* value and status to the cache. If createObject() fails to create a value,
- * fNoValue is stored in cache, and value is set to NULL. Caller must call
- * removeRef on value if non NULL.
+ * fNoValue is stored in cache, and value is set to nullptr. Caller must call
+ * removeRef on value if non nullptr.
*/
void _get(
const CacheKeyBase &key,
@@ -393,7 +393,7 @@ class U_COMMON_API UnifiedCache : public UnifiedCacheBase {
/**
* Attempts to fetch value and status for key from cache.
- * On entry, gCacheMutex must not be held value must be NULL and status must
+ * On entry, gCacheMutex must not be held value must be nullptr and status must
* be U_ZERO_ERROR.
* On exit, either returns false (In this
* case caller should try to create the object) or returns true with value
@@ -478,7 +478,7 @@ class U_COMMON_API UnifiedCache : public UnifiedCacheBase {
/**
* Store a value and creation error status in given hash entry.
* On entry, gCacheMutex must be held. Hash entry element must be in progress.
- * value must be non NULL.
+ * value must be non nullptr.
* On Exit, soft reference added to value. value and status stored in hash
* entry. Soft reference removed from previous stored value. Waiting
* threads notified.
@@ -522,7 +522,7 @@ class U_COMMON_API UnifiedCache : public UnifiedCacheBase {
/**
* Fetch value and error code from a particular hash entry.
- * On entry, gCacheMutex must be held. value must be either NULL or must be
+ * On entry, gCacheMutex must be held. value must be either nullptr or must be
* included in the ref count of the object to which it points.
* On exit, value and status set to what is in the hash entry. Caller must
* eventually call removeRef on value.
diff --git a/Build/source/libs/icu/icu-src/source/common/uniquecharstr.h b/Build/source/libs/icu/icu-src/source/common/uniquecharstr.h
index 10cc924f7f9..e5d3b734180 100644
--- a/Build/source/libs/icu/icu-src/source/common/uniquecharstr.h
+++ b/Build/source/libs/icu/icu-src/source/common/uniquecharstr.h
@@ -10,6 +10,7 @@
#include "charstr.h"
#include "uassert.h"
#include "uhash.h"
+#include "cmemory.h"
U_NAMESPACE_BEGIN
@@ -47,22 +48,20 @@ public:
}
/**
- * Adds a string and returns a unique number for it.
- * The string's buffer contents must not change, nor move around in memory,
+ * Adds a NUL-terminated string and returns a unique number for it.
+ * The string must not change, nor move around in memory,
* while this UniqueCharStrings is in use.
- * The string contents must be NUL-terminated exactly at s.length().
*
- * Best used with read-only-alias UnicodeString objects that point to
- * stable storage, such as strings returned by resource bundle functions.
+ * Best used with string data in a stable storage, such as strings returned
+ * by resource bundle functions.
*/
- int32_t add(const UnicodeString &s, UErrorCode &errorCode) {
- if (U_FAILURE(errorCode)) { return 0; }
+ int32_t add(const char16_t*p, UErrorCode &errorCode) {
+ if (U_FAILURE(errorCode)) { return -1; }
if (isFrozen) {
errorCode = U_NO_WRITE_PERMISSION;
- return 0;
+ return -1;
}
// The string points into the resource bundle.
- const char16_t *p = s.getBuffer();
int32_t oldIndex = uhash_geti(&map, p);
if (oldIndex != 0) { // found duplicate
return oldIndex;
@@ -71,11 +70,33 @@ public:
// The strings object is also terminated with one implicit NUL.
strings->append(0, errorCode);
int32_t newIndex = strings->length();
- strings->appendInvariantChars(s, errorCode);
+ strings->appendInvariantChars(p, u_strlen(p), errorCode);
uhash_puti(&map, const_cast<char16_t *>(p), newIndex, &errorCode);
return newIndex;
}
+ /**
+ * Adds a unicode string by value and returns a unique number for it.
+ */
+ int32_t addByValue(UnicodeString s, UErrorCode &errorCode) {
+ if (U_FAILURE(errorCode)) { return -1; }
+ if (isFrozen) {
+ errorCode = U_NO_WRITE_PERMISSION;
+ return -1;
+ }
+ int32_t oldIndex = uhash_geti(&map, s.getTerminatedBuffer());
+ if (oldIndex != 0) { // found duplicate
+ return oldIndex;
+ }
+ // We need to store the string content of the UnicodeString.
+ UnicodeString *key = keyStore.create(s);
+ if (key == nullptr) {
+ errorCode = U_MEMORY_ALLOCATION_ERROR;
+ return -1;
+ }
+ return add(key->getTerminatedBuffer(), errorCode);
+ }
+
void freeze() { isFrozen = true; }
/**
@@ -90,6 +111,7 @@ public:
private:
UHashtable map;
CharString *strings;
+ MemoryPool<UnicodeString> keyStore;
bool isFrozen = false;
};
diff --git a/Build/source/libs/icu/icu-src/source/common/uniset.cpp b/Build/source/libs/icu/icu-src/source/common/uniset.cpp
index 4faace525c5..71f57fc12d4 100644
--- a/Build/source/libs/icu/icu-src/source/common/uniset.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/uniset.cpp
@@ -226,7 +226,7 @@ UnicodeSet& UnicodeSet::copyFrom(const UnicodeSet& o, UBool asThawed) {
uprv_memcpy(list, o.list, (size_t)len*sizeof(UChar32));
if (o.bmpSet != nullptr && !asThawed) {
bmpSet = new BMPSet(*o.bmpSet, list, len);
- if (bmpSet == NULL) { // Check for memory allocation error.
+ if (bmpSet == nullptr) { // Check for memory allocation error.
setToBogus();
return *this;
}
@@ -243,7 +243,7 @@ UnicodeSet& UnicodeSet::copyFrom(const UnicodeSet& o, UBool asThawed) {
}
if (o.stringSpan != nullptr && !asThawed) {
stringSpan = new UnicodeSetStringSpan(*o.stringSpan, *strings);
- if (stringSpan == NULL) { // Check for memory allocation error.
+ if (stringSpan == nullptr) { // Check for memory allocation error.
setToBogus();
return *this;
}
@@ -294,7 +294,7 @@ bool UnicodeSet::operator==(const UnicodeSet& o) const {
* @return the hash code value for this set.
* @see Object#hashCode()
*/
-int32_t UnicodeSet::hashCode(void) const {
+int32_t UnicodeSet::hashCode() const {
uint32_t result = static_cast<uint32_t>(len);
for (int32_t i = 0; i < len; ++i) {
result *= 1000003u;
@@ -314,7 +314,7 @@ int32_t UnicodeSet::hashCode(void) const {
*
* @return the number of elements in this set (its cardinality).
*/
-int32_t UnicodeSet::size(void) const {
+int32_t UnicodeSet::size() const {
int32_t n = 0;
int32_t count = getRangeCount();
for (int32_t i = 0; i < count; ++i) {
@@ -328,7 +328,7 @@ int32_t UnicodeSet::size(void) const {
*
* @return <tt>true</tt> if this set contains no elements.
*/
-UBool UnicodeSet::isEmpty(void) const {
+UBool UnicodeSet::isEmpty() const {
return len == 1 && !hasStrings();
}
@@ -345,10 +345,10 @@ UBool UnicodeSet::contains(UChar32 c) const {
//for (;;) {
// if (c < list[++i]) break;
//}
- if (bmpSet != NULL) {
+ if (bmpSet != nullptr) {
return bmpSet->contains(c);
}
- if (stringSpan != NULL) {
+ if (stringSpan != nullptr) {
return stringSpan->contains(c);
}
if (c >= UNICODESET_HIGH) { // Don't need to check LOW bound
@@ -582,7 +582,7 @@ UMatchDegree UnicodeSet::matches(const Replaceable& text,
// firstChar is the leftmost char to match in the
// forward direction or the rightmost char to match in
// the reverse direction.
- UChar firstChar = text.charAt(offset);
+ char16_t firstChar = text.charAt(offset);
// If there are multiple strings that can match we
// return the longest match.
@@ -594,7 +594,7 @@ UMatchDegree UnicodeSet::matches(const Replaceable& text,
continue; // skip the empty string
}
- UChar c = trial.charAt(forward ? 0 : trial.length() - 1);
+ char16_t c = trial.charAt(forward ? 0 : trial.length() - 1);
// Strings are sorted, so we can optimize in the
// forward direction.
@@ -977,7 +977,7 @@ void UnicodeSet::_add(const UnicodeString& s) {
return;
}
UnicodeString* t = new UnicodeString(s);
- if (t == NULL) { // Check for memory allocation error.
+ if (t == nullptr) { // Check for memory allocation error.
setToBogus();
return;
}
@@ -1075,7 +1075,7 @@ UnicodeSet& UnicodeSet::removeAllStrings() {
*/
UnicodeSet* U_EXPORT2 UnicodeSet::createFrom(const UnicodeString& s) {
UnicodeSet *set = new UnicodeSet();
- if (set != NULL) { // Check for memory allocation error.
+ if (set != nullptr) { // Check for memory allocation error.
set->add(s);
}
return set;
@@ -1089,7 +1089,7 @@ UnicodeSet* U_EXPORT2 UnicodeSet::createFrom(const UnicodeString& s) {
*/
UnicodeSet* U_EXPORT2 UnicodeSet::createFromAll(const UnicodeString& s) {
UnicodeSet *set = new UnicodeSet();
- if (set != NULL) { // Check for memory allocation error.
+ if (set != nullptr) { // Check for memory allocation error.
set->addAll(s);
}
return set;
@@ -1218,7 +1218,7 @@ UnicodeSet& UnicodeSet::complement(UChar32 c) {
* This is equivalent to
* <code>complement(MIN_VALUE, MAX_VALUE)</code>.
*/
-UnicodeSet& UnicodeSet::complement(void) {
+UnicodeSet& UnicodeSet::complement() {
if (isFrozen() || isBogus()) {
return *this;
}
@@ -1272,12 +1272,12 @@ UnicodeSet& UnicodeSet::complement(const UnicodeString& s) {
* @see #add(char, char)
*/
UnicodeSet& UnicodeSet::addAll(const UnicodeSet& c) {
- if ( c.len>0 && c.list!=NULL ) {
+ if ( c.len>0 && c.list!=nullptr ) {
add(c.list, c.len, 0);
}
// Add strings in order
- if ( c.strings!=NULL ) {
+ if ( c.strings!=nullptr ) {
for (int32_t i=0; i<c.strings->size(); ++i) {
const UnicodeString* s = (const UnicodeString*)c.strings->elementAt(i);
if (!stringsContains(*s)) {
@@ -1361,14 +1361,14 @@ UnicodeSet& UnicodeSet::complementAll(const UnicodeSet& c) {
* Removes all of the elements from this set. This set will be
* empty after this call returns.
*/
-UnicodeSet& UnicodeSet::clear(void) {
+UnicodeSet& UnicodeSet::clear() {
if (isFrozen()) {
return *this;
}
list[0] = UNICODESET_HIGH;
len = 1;
releasePattern();
- if (strings != NULL) {
+ if (strings != nullptr) {
strings->removeAllElements();
}
// Remove bogus
@@ -1421,7 +1421,7 @@ UnicodeSet& UnicodeSet::compact() {
// Delete buffer first to defragment memory less.
if (buffer != stackList) {
uprv_free(buffer);
- buffer = NULL;
+ buffer = nullptr;
bufferCapacity = 0;
}
if (list == stackList) {
@@ -1464,7 +1464,7 @@ UnicodeSet::UnicodeSet(const uint16_t data[], int32_t dataLen, ESerialization se
}
if( (serialization != kSerialized)
- || (data==NULL)
+ || (data==nullptr)
|| (dataLen < 1)) {
ec = U_ILLEGAL_ARGUMENT_ERROR;
setToBogus();
@@ -1513,7 +1513,7 @@ int32_t UnicodeSet::serialize(uint16_t *dest, int32_t destCapacity, UErrorCode&
return 0;
}
- if (destCapacity<0 || (destCapacity>0 && dest==NULL)) {
+ if (destCapacity<0 || (destCapacity>0 && dest==nullptr)) {
ec=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -1611,13 +1611,13 @@ UBool UnicodeSet::allocateStrings(UErrorCode &status) {
}
strings = new UVector(uprv_deleteUObject,
uhash_compareUnicodeString, 1, status);
- if (strings == NULL) { // Check for memory allocation error.
+ if (strings == nullptr) { // Check for memory allocation error.
status = U_MEMORY_ALLOCATION_ERROR;
return false;
}
if (U_FAILURE(status)) {
delete strings;
- strings = NULL;
+ strings = nullptr;
return false;
}
return true;
@@ -1647,7 +1647,7 @@ bool UnicodeSet::ensureCapacity(int32_t newLen) {
}
int32_t newCapacity = nextCapacity(newLen);
UChar32* temp = (UChar32*) uprv_malloc(newCapacity * sizeof(UChar32));
- if (temp == NULL) {
+ if (temp == nullptr) {
setToBogus(); // set the object to bogus state if an OOM failure occurred.
return false;
}
@@ -1670,7 +1670,7 @@ bool UnicodeSet::ensureBufferCapacity(int32_t newLen) {
}
int32_t newCapacity = nextCapacity(newLen);
UChar32* temp = (UChar32*) uprv_malloc(newCapacity * sizeof(UChar32));
- if (temp == NULL) {
+ if (temp == nullptr) {
setToBogus();
return false;
}
@@ -1687,7 +1687,7 @@ bool UnicodeSet::ensureBufferCapacity(int32_t newLen) {
/**
* Swap list and buffer.
*/
-void UnicodeSet::swapBuffers(void) {
+void UnicodeSet::swapBuffers() {
// swap list and buffer
UChar32* temp = list;
list = buffer;
@@ -1763,7 +1763,7 @@ void UnicodeSet::exclusiveOr(const UChar32* other, int32_t otherLen, int8_t pola
// polarity = 3: ~x union ~y
void UnicodeSet::add(const UChar32* other, int32_t otherLen, int8_t polarity) {
- if (isFrozen() || isBogus() || other==NULL) {
+ if (isFrozen() || isBogus() || other==nullptr) {
return;
}
if (!ensureBufferCapacity(len + otherLen)) {
@@ -2030,7 +2030,7 @@ void UnicodeSet::_appendToPat(UnicodeString &result, UChar32 start, UChar32 end,
UnicodeString& UnicodeSet::_toPattern(UnicodeString& result,
UBool escapeUnprintable) const
{
- if (pat != NULL) {
+ if (pat != nullptr) {
int32_t i;
int32_t backslashCount = 0;
for (i=0; i<patLen; ) {
@@ -2151,7 +2151,7 @@ UnicodeString& UnicodeSet::_generatePattern(UnicodeString& result,
void UnicodeSet::releasePattern() {
if (pat) {
uprv_free(pat);
- pat = NULL;
+ pat = nullptr;
patLen = 0;
}
}
@@ -2161,7 +2161,7 @@ void UnicodeSet::releasePattern() {
*/
void UnicodeSet::setPattern(const char16_t *newPat, int32_t newPatLen) {
releasePattern();
- pat = (UChar *)uprv_malloc((newPatLen + 1) * sizeof(UChar));
+ pat = (char16_t *)uprv_malloc((newPatLen + 1) * sizeof(char16_t));
if (pat) {
patLen = newPatLen;
u_memcpy(pat, newPat, patLen);
@@ -2188,13 +2188,13 @@ UnicodeSet *UnicodeSet::freeze() {
// many relevant strings as UTF-16.
// (Thus needsStringSpanUTF8() implies needsStringSpanUTF16().)
delete stringSpan;
- stringSpan = NULL;
+ stringSpan = nullptr;
}
}
- if (stringSpan == NULL) {
+ if (stringSpan == nullptr) {
// No span-relevant strings: Optimize for code point spans.
bmpSet=new BMPSet(list, len);
- if (bmpSet == NULL) { // Check for memory allocation error.
+ if (bmpSet == nullptr) { // Check for memory allocation error.
setToBogus();
}
}
@@ -2202,8 +2202,8 @@ UnicodeSet *UnicodeSet::freeze() {
return this;
}
-int32_t UnicodeSet::span(const UChar *s, int32_t length, USetSpanCondition spanCondition) const {
- if(length>0 && bmpSet!=NULL) {
+int32_t UnicodeSet::span(const char16_t *s, int32_t length, USetSpanCondition spanCondition) const {
+ if(length>0 && bmpSet!=nullptr) {
return (int32_t)(bmpSet->span(s, s+length, spanCondition)-s);
}
if(length<0) {
@@ -2212,7 +2212,7 @@ int32_t UnicodeSet::span(const UChar *s, int32_t length, USetSpanCondition spanC
if(length==0) {
return 0;
}
- if(stringSpan!=NULL) {
+ if(stringSpan!=nullptr) {
return stringSpan->span(s, length, spanCondition);
} else if(hasStrings()) {
uint32_t which= spanCondition==USET_SPAN_NOT_CONTAINED ?
@@ -2239,8 +2239,8 @@ int32_t UnicodeSet::span(const UChar *s, int32_t length, USetSpanCondition spanC
return prev;
}
-int32_t UnicodeSet::spanBack(const UChar *s, int32_t length, USetSpanCondition spanCondition) const {
- if(length>0 && bmpSet!=NULL) {
+int32_t UnicodeSet::spanBack(const char16_t *s, int32_t length, USetSpanCondition spanCondition) const {
+ if(length>0 && bmpSet!=nullptr) {
return (int32_t)(bmpSet->spanBack(s, s+length, spanCondition)-s);
}
if(length<0) {
@@ -2249,7 +2249,7 @@ int32_t UnicodeSet::spanBack(const UChar *s, int32_t length, USetSpanCondition s
if(length==0) {
return 0;
}
- if(stringSpan!=NULL) {
+ if(stringSpan!=nullptr) {
return stringSpan->spanBack(s, length, spanCondition);
} else if(hasStrings()) {
uint32_t which= spanCondition==USET_SPAN_NOT_CONTAINED ?
@@ -2277,7 +2277,7 @@ int32_t UnicodeSet::spanBack(const UChar *s, int32_t length, USetSpanCondition s
}
int32_t UnicodeSet::spanUTF8(const char *s, int32_t length, USetSpanCondition spanCondition) const {
- if(length>0 && bmpSet!=NULL) {
+ if(length>0 && bmpSet!=nullptr) {
const uint8_t *s0=(const uint8_t *)s;
return (int32_t)(bmpSet->spanUTF8(s0, length, spanCondition)-s0);
}
@@ -2287,7 +2287,7 @@ int32_t UnicodeSet::spanUTF8(const char *s, int32_t length, USetSpanCondition sp
if(length==0) {
return 0;
}
- if(stringSpan!=NULL) {
+ if(stringSpan!=nullptr) {
return stringSpan->spanUTF8((const uint8_t *)s, length, spanCondition);
} else if(hasStrings()) {
uint32_t which= spanCondition==USET_SPAN_NOT_CONTAINED ?
@@ -2315,7 +2315,7 @@ int32_t UnicodeSet::spanUTF8(const char *s, int32_t length, USetSpanCondition sp
}
int32_t UnicodeSet::spanBackUTF8(const char *s, int32_t length, USetSpanCondition spanCondition) const {
- if(length>0 && bmpSet!=NULL) {
+ if(length>0 && bmpSet!=nullptr) {
const uint8_t *s0=(const uint8_t *)s;
return bmpSet->spanBackUTF8(s0, length, spanCondition);
}
@@ -2325,7 +2325,7 @@ int32_t UnicodeSet::spanBackUTF8(const char *s, int32_t length, USetSpanConditio
if(length==0) {
return 0;
}
- if(stringSpan!=NULL) {
+ if(stringSpan!=nullptr) {
return stringSpan->spanBackUTF8((const uint8_t *)s, length, spanCondition);
} else if(hasStrings()) {
uint32_t which= spanCondition==USET_SPAN_NOT_CONTAINED ?
diff --git a/Build/source/libs/icu/icu-src/source/common/uniset_closure.cpp b/Build/source/libs/icu/icu-src/source/common/uniset_closure.cpp
index d7dab2a17b7..173a5cbaaef 100644
--- a/Build/source/libs/icu/icu-src/source/common/uniset_closure.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/uniset_closure.cpp
@@ -25,9 +25,11 @@
#include "unicode/locid.h"
#include "unicode/parsepos.h"
#include "unicode/uniset.h"
+#include "unicode/utf16.h"
#include "cmemory.h"
#include "ruleiter.h"
#include "ucase.h"
+#include "uprops.h"
#include "util.h"
#include "uvector.h"
@@ -123,7 +125,7 @@ _set_addRange(USet *set, UChar32 start, UChar32 end) {
}
static void U_CALLCONV
-_set_addString(USet *set, const UChar *str, int32_t length) {
+_set_addString(USet *set, const char16_t *str, int32_t length) {
((UnicodeSet *)set)->add(UnicodeString((UBool)(length<0), str, length));
}
@@ -134,7 +136,7 @@ _set_addString(USet *set, const UChar *str, int32_t length) {
// add the result of a full case mapping to the set
// use str as a temporary string to avoid constructing one
static inline void
-addCaseMapping(UnicodeSet &set, int32_t result, const UChar *full, UnicodeString &str) {
+addCaseMapping(UnicodeSet &set, int32_t result, const char16_t *full, UnicodeString &str) {
if(result >= 0) {
if(result > UCASE_MAX_STRING_LENGTH) {
// add a single-code point case mapping
@@ -149,102 +151,208 @@ addCaseMapping(UnicodeSet &set, int32_t result, const UChar *full, UnicodeString
// see ucase.h
}
+namespace {
+
+/** For case closure on a large set, look only at code points with relevant properties. */
+const UnicodeSet &maybeOnlyCaseSensitive(const UnicodeSet &src, UnicodeSet &subset) {
+ // The subset must have been constructed with all code points,
+ // so that the retainAll() intersection effectively copies all single code points from src.
+ U_ASSERT(subset.contains(0, 0x10ffff));
+ if (src.size() < 30) {
+ return src;
+ }
+ // Return the intersection of the src code points with Case_Sensitive ones.
+ UErrorCode errorCode = U_ZERO_ERROR;
+ const UnicodeSet *sensitive =
+ CharacterProperties::getBinaryPropertySet(UCHAR_CASE_SENSITIVE, errorCode);
+ if (U_FAILURE(errorCode)) {
+ return src;
+ }
+ // Start by copying the "smaller" set.
+ // (We "copy" by intersecting all Unicode *code points* with the first set,
+ // which omits any strings.)
+ if (src.getRangeCount() > sensitive->getRangeCount()) {
+ subset.retainAll(*sensitive);
+ subset.retainAll(src);
+ } else {
+ subset.retainAll(src);
+ subset.retainAll(*sensitive);
+ }
+ return subset;
+}
+
+// Per-character scf = Simple_Case_Folding of a string.
+// (Normally when we case-fold a string we use full case foldings.)
+bool scfString(const UnicodeString &s, UnicodeString &scf) {
+ // Iterate over the raw buffer for best performance.
+ const char16_t *p = s.getBuffer();
+ int32_t length = s.length();
+ // Loop while not needing modification.
+ for (int32_t i = 0; i < length;) {
+ UChar32 c;
+ U16_NEXT(p, i, length, c); // post-increments i
+ UChar32 scfChar = u_foldCase(c, U_FOLD_CASE_DEFAULT);
+ if (scfChar != c) {
+ // Copy the characters before c.
+ scf.setTo(p, i - U16_LENGTH(c));
+ // Loop over the rest of the string and keep case-folding.
+ for (;;) {
+ scf.append(scfChar);
+ if (i == length) {
+ return true;
+ }
+ U16_NEXT(p, i, length, c); // post-increments i
+ scfChar = u_foldCase(c, U_FOLD_CASE_DEFAULT);
+ }
+ }
+ }
+ return false;
+}
+
+} // namespace
+
UnicodeSet& UnicodeSet::closeOver(int32_t attribute) {
if (isFrozen() || isBogus()) {
return *this;
}
- if (attribute & (USET_CASE_INSENSITIVE | USET_ADD_CASE_MAPPINGS)) {
- {
- UnicodeSet foldSet(*this);
- UnicodeString str;
- USetAdder sa = {
- foldSet.toUSet(),
- _set_add,
- _set_addRange,
- _set_addString,
- NULL, // don't need remove()
- NULL // don't need removeRange()
- };
-
- // start with input set to guarantee inclusion
- // USET_CASE: remove strings because the strings will actually be reduced (folded);
- // therefore, start with no strings and add only those needed
- if ((attribute & USET_CASE_INSENSITIVE) && foldSet.hasStrings()) {
- foldSet.strings->removeAllElements();
- }
+ switch (attribute & USET_CASE_MASK) {
+ case 0:
+ break;
+ case USET_CASE_INSENSITIVE:
+ closeOverCaseInsensitive(/* simple= */ false);
+ break;
+ case USET_ADD_CASE_MAPPINGS:
+ closeOverAddCaseMappings();
+ break;
+ case USET_SIMPLE_CASE_INSENSITIVE:
+ closeOverCaseInsensitive(/* simple= */ true);
+ break;
+ default:
+ // bad option (unreachable)
+ break;
+ }
+ return *this;
+}
+
+void UnicodeSet::closeOverCaseInsensitive(bool simple) {
+ // Start with input set to guarantee inclusion.
+ UnicodeSet foldSet(*this);
+ // Full case mappings closure:
+ // Remove strings because the strings will actually be reduced (folded);
+ // therefore, start with no strings and add only those needed.
+ // Do this before processing code points, because they may add strings.
+ if (!simple && foldSet.hasStrings()) {
+ foldSet.strings->removeAllElements();
+ }
+
+ USetAdder sa = {
+ foldSet.toUSet(),
+ _set_add,
+ _set_addRange,
+ _set_addString,
+ nullptr, // don't need remove()
+ nullptr // don't need removeRange()
+ };
+
+ UnicodeSet subset(0, 0x10ffff);
+ const UnicodeSet &codePoints = maybeOnlyCaseSensitive(*this, subset);
- int32_t n = getRangeCount();
- UChar32 result;
- const UChar *full;
-
- for (int32_t i=0; i<n; ++i) {
- UChar32 start = getRangeStart(i);
- UChar32 end = getRangeEnd(i);
-
- if (attribute & USET_CASE_INSENSITIVE) {
- // full case closure
- for (UChar32 cp=start; cp<=end; ++cp) {
- ucase_addCaseClosure(cp, &sa);
- }
- } else {
- // add case mappings
- // (does not add long s for regular s, or Kelvin for k, for example)
- for (UChar32 cp=start; cp<=end; ++cp) {
- result = ucase_toFullLower(cp, NULL, NULL, &full, UCASE_LOC_ROOT);
- addCaseMapping(foldSet, result, full, str);
-
- result = ucase_toFullTitle(cp, NULL, NULL, &full, UCASE_LOC_ROOT);
- addCaseMapping(foldSet, result, full, str);
-
- result = ucase_toFullUpper(cp, NULL, NULL, &full, UCASE_LOC_ROOT);
- addCaseMapping(foldSet, result, full, str);
-
- result = ucase_toFullFolding(cp, &full, 0);
- addCaseMapping(foldSet, result, full, str);
- }
+ // Iterate over the ranges of single code points. Nested loop for each code point.
+ int32_t n = codePoints.getRangeCount();
+
+ for (int32_t i=0; i<n; ++i) {
+ UChar32 start = codePoints.getRangeStart(i);
+ UChar32 end = codePoints.getRangeEnd(i);
+
+ if (simple) {
+ for (UChar32 cp=start; cp<=end; ++cp) {
+ ucase_addSimpleCaseClosure(cp, &sa);
+ }
+ } else {
+ for (UChar32 cp=start; cp<=end; ++cp) {
+ ucase_addCaseClosure(cp, &sa);
+ }
+ }
+ }
+ if (hasStrings()) {
+ UnicodeString str;
+ for (int32_t j=0; j<strings->size(); ++j) {
+ const UnicodeString *pStr = (const UnicodeString *) strings->elementAt(j);
+ if (simple) {
+ if (scfString(*pStr, str)) {
+ foldSet.remove(*pStr).add(str);
+ }
+ } else {
+ str = *pStr;
+ str.foldCase();
+ if(!ucase_addStringCaseClosure(str.getBuffer(), str.length(), &sa)) {
+ foldSet.add(str); // does not map to code points: add the folded string itself
}
}
- if (hasStrings()) {
- if (attribute & USET_CASE_INSENSITIVE) {
- for (int32_t j=0; j<strings->size(); ++j) {
- str = *(const UnicodeString *) strings->elementAt(j);
- str.foldCase();
- if(!ucase_addStringCaseClosure(str.getBuffer(), str.length(), &sa)) {
- foldSet.add(str); // does not map to code points: add the folded string itself
- }
- }
- } else {
- Locale root("");
-#if !UCONFIG_NO_BREAK_ITERATION
- UErrorCode status = U_ZERO_ERROR;
- BreakIterator *bi = BreakIterator::createWordInstance(root, status);
- if (U_SUCCESS(status)) {
-#endif
- const UnicodeString *pStr;
+ }
+ }
+ *this = foldSet;
+}
+
+void UnicodeSet::closeOverAddCaseMappings() {
+ // Start with input set to guarantee inclusion.
+ UnicodeSet foldSet(*this);
+
+ UnicodeSet subset(0, 0x10ffff);
+ const UnicodeSet &codePoints = maybeOnlyCaseSensitive(*this, subset);
- for (int32_t j=0; j<strings->size(); ++j) {
- pStr = (const UnicodeString *) strings->elementAt(j);
- (str = *pStr).toLower(root);
- foldSet.add(str);
+ // Iterate over the ranges of single code points. Nested loop for each code point.
+ int32_t n = codePoints.getRangeCount();
+ UChar32 result;
+ const char16_t *full;
+ UnicodeString str;
+
+ for (int32_t i=0; i<n; ++i) {
+ UChar32 start = codePoints.getRangeStart(i);
+ UChar32 end = codePoints.getRangeEnd(i);
+
+ // add case mappings
+ // (does not add long s for regular s, or Kelvin for k, for example)
+ for (UChar32 cp=start; cp<=end; ++cp) {
+ result = ucase_toFullLower(cp, nullptr, nullptr, &full, UCASE_LOC_ROOT);
+ addCaseMapping(foldSet, result, full, str);
+
+ result = ucase_toFullTitle(cp, nullptr, nullptr, &full, UCASE_LOC_ROOT);
+ addCaseMapping(foldSet, result, full, str);
+
+ result = ucase_toFullUpper(cp, nullptr, nullptr, &full, UCASE_LOC_ROOT);
+ addCaseMapping(foldSet, result, full, str);
+
+ result = ucase_toFullFolding(cp, &full, 0);
+ addCaseMapping(foldSet, result, full, str);
+ }
+ }
+ if (hasStrings()) {
+ Locale root("");
#if !UCONFIG_NO_BREAK_ITERATION
- (str = *pStr).toTitle(bi, root);
- foldSet.add(str);
+ UErrorCode status = U_ZERO_ERROR;
+ BreakIterator *bi = BreakIterator::createWordInstance(root, status);
+ if (U_SUCCESS(status)) {
#endif
- (str = *pStr).toUpper(root);
- foldSet.add(str);
- (str = *pStr).foldCase();
- foldSet.add(str);
- }
+ for (int32_t j=0; j<strings->size(); ++j) {
+ const UnicodeString *pStr = (const UnicodeString *) strings->elementAt(j);
+ (str = *pStr).toLower(root);
+ foldSet.add(str);
#if !UCONFIG_NO_BREAK_ITERATION
- }
- delete bi;
+ (str = *pStr).toTitle(bi, root);
+ foldSet.add(str);
#endif
- }
+ (str = *pStr).toUpper(root);
+ foldSet.add(str);
+ (str = *pStr).foldCase();
+ foldSet.add(str);
}
- *this = foldSet;
+#if !UCONFIG_NO_BREAK_ITERATION
}
+ delete bi;
+#endif
}
- return *this;
+ *this = foldSet;
}
U_NAMESPACE_END
diff --git a/Build/source/libs/icu/icu-src/source/common/uniset_props.cpp b/Build/source/libs/icu/icu-src/source/common/uniset_props.cpp
index 48c0a26a710..b3dbdf93c88 100644
--- a/Build/source/libs/icu/icu-src/source/common/uniset_props.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/uniset_props.cpp
@@ -67,9 +67,9 @@ static icu::UInitOnce uni32InitOnce {};
/**
* Cleanup function for UnicodeSet
*/
-static UBool U_CALLCONV uset_cleanup(void) {
+static UBool U_CALLCONV uset_cleanup() {
delete uni32Singleton;
- uni32Singleton = NULL;
+ uni32Singleton = nullptr;
uni32InitOnce.reset();
return true;
}
@@ -82,9 +82,9 @@ namespace {
// Cache some sets for other services -------------------------------------- ***
void U_CALLCONV createUni32Set(UErrorCode &errorCode) {
- U_ASSERT(uni32Singleton == NULL);
+ U_ASSERT(uni32Singleton == nullptr);
uni32Singleton = new UnicodeSet(UNICODE_STRING_SIMPLE("[:age=3.2:]"), errorCode);
- if(uni32Singleton==NULL) {
+ if(uni32Singleton==nullptr) {
errorCode=U_MEMORY_ALLOCATION_ERROR;
} else {
uni32Singleton->freeze();
@@ -108,7 +108,7 @@ uniset_getUnicode32Instance(UErrorCode &errorCode) {
static inline UBool
isPerlOpen(const UnicodeString &pattern, int32_t pos) {
- UChar c;
+ char16_t c;
return pattern.charAt(pos)==u'\\' && ((c=pattern.charAt(pos+1))==u'p' || c==u'P');
}
@@ -162,10 +162,10 @@ UnicodeSet::UnicodeSet(const UnicodeString& pattern,
UnicodeSet& UnicodeSet::applyPattern(const UnicodeString& pattern,
UErrorCode& status) {
// Equivalent to
- // return applyPattern(pattern, USET_IGNORE_SPACE, NULL, status);
+ // return applyPattern(pattern, USET_IGNORE_SPACE, nullptr, status);
// but without dependency on closeOver().
ParsePosition pos(0);
- applyPatternIgnoreSpace(pattern, pos, NULL, status);
+ applyPatternIgnoreSpace(pattern, pos, nullptr, status);
if (U_FAILURE(status)) return *this;
int32_t i = pos.getIndex();
@@ -193,7 +193,7 @@ UnicodeSet::applyPatternIgnoreSpace(const UnicodeString& pattern,
// _applyPattern calls add() etc., which set pat to empty.
UnicodeString rebuiltPat;
RuleCharacterIterator chars(pattern, symbols, pos);
- applyPattern(chars, symbols, rebuiltPat, USET_IGNORE_SPACE, NULL, 0, status);
+ applyPattern(chars, symbols, rebuiltPat, USET_IGNORE_SPACE, nullptr, 0, status);
if (U_FAILURE(status)) return;
if (chars.inVariable()) {
// syntaxError(chars, "Extra chars in variable value");
@@ -209,7 +209,7 @@ UnicodeSet::applyPatternIgnoreSpace(const UnicodeString& pattern,
*/
UBool UnicodeSet::resemblesPattern(const UnicodeString& pattern, int32_t pos) {
return ((pos+1) < pattern.length() &&
- pattern.charAt(pos) == (UChar)91/*[*/) ||
+ pattern.charAt(pos) == (char16_t)91/*[*/) ||
resemblesPropertyPattern(pattern, pos);
}
@@ -287,7 +287,7 @@ void UnicodeSet::applyPattern(RuleCharacterIterator& chars,
// lastItem: 0=none, 1=char, 2=set
int8_t lastItem = 0, mode = 0;
UChar32 lastChar = 0;
- UChar op = 0;
+ char16_t op = 0;
UBool invert = false;
@@ -356,7 +356,7 @@ void UnicodeSet::applyPattern(RuleCharacterIterator& chars,
const UnicodeFunctor *m = symbols->lookupMatcher(c);
if (m != 0) {
const UnicodeSet *ms = dynamic_cast<const UnicodeSet *>(m);
- if (ms == NULL) {
+ if (ms == nullptr) {
ec = U_MALFORMED_SET;
return;
}
@@ -471,7 +471,7 @@ void UnicodeSet::applyPattern(RuleCharacterIterator& chars,
case u'-':
if (op == 0) {
if (lastItem != 0) {
- op = (UChar) c;
+ op = (char16_t) c;
continue;
} else {
// Treat final trailing '-' as a literal
@@ -490,7 +490,7 @@ void UnicodeSet::applyPattern(RuleCharacterIterator& chars,
return;
case u'&':
if (lastItem == 2 && op == 0) {
- op = (UChar) c;
+ op = (char16_t) c;
continue;
}
// syntaxError(chars, "'&' not after set");
@@ -561,7 +561,7 @@ void UnicodeSet::applyPattern(RuleCharacterIterator& chars,
}
add(U_ETHER);
usePat = true;
- patLocal.append((UChar) SymbolTable::SYMBOL_REF);
+ patLocal.append((char16_t) SymbolTable::SYMBOL_REF);
patLocal.append(u']');
mode = 2;
continue;
@@ -631,11 +631,8 @@ void UnicodeSet::applyPattern(RuleCharacterIterator& chars,
* to close over case BEFORE COMPLEMENTING. This makes
* patterns like /[^abc]/i work.
*/
- if ((options & USET_CASE_INSENSITIVE) != 0) {
- (this->*caseClosure)(USET_CASE_INSENSITIVE);
- }
- else if ((options & USET_ADD_CASE_MAPPINGS) != 0) {
- (this->*caseClosure)(USET_ADD_CASE_MAPPINGS);
+ if ((options & USET_CASE_MASK) != 0) {
+ (this->*caseClosure)(options);
}
if (invert) {
complement().removeAllStrings(); // code point complement
@@ -1044,7 +1041,7 @@ UnicodeSet& UnicodeSet::applyPropertyPattern(const UnicodeString& pattern,
invert = true;
}
} else if (isPerlOpen(pattern, pos) || isNameOpen(pattern, pos)) {
- UChar c = pattern.charAt(pos+1);
+ char16_t c = pattern.charAt(pos+1);
invert = (c == u'P');
isName = (c == u'N');
pos += 2;
diff --git a/Build/source/libs/icu/icu-src/source/common/unisetspan.cpp b/Build/source/libs/icu/icu-src/source/common/unisetspan.cpp
index e4277c5be60..b7256d8fd16 100644
--- a/Build/source/libs/icu/icu-src/source/common/unisetspan.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/unisetspan.cpp
@@ -70,7 +70,7 @@ public:
capacity=(int32_t)sizeof(staticList);
} else {
UBool *l=(UBool *)uprv_malloc(maxLength);
- if(l!=NULL) {
+ if(l!=nullptr) {
list=l;
capacity=maxLength;
}
@@ -165,10 +165,10 @@ private:
// Get the number of UTF-8 bytes for a UTF-16 (sub)string.
static int32_t
-getUTF8Length(const UChar *s, int32_t length) {
+getUTF8Length(const char16_t *s, int32_t length) {
UErrorCode errorCode=U_ZERO_ERROR;
int32_t length8=0;
- u_strToUTF8(NULL, 0, &length8, s, length, &errorCode);
+ u_strToUTF8(nullptr, 0, &length8, s, length, &errorCode);
if(U_SUCCESS(errorCode) || errorCode==U_BUFFER_OVERFLOW_ERROR) {
return length8;
} else {
@@ -180,7 +180,7 @@ getUTF8Length(const UChar *s, int32_t length) {
// Append the UTF-8 version of the string to t and return the appended UTF-8 length.
static int32_t
-appendUTF8(const UChar *s, int32_t length, uint8_t *t, int32_t capacity) {
+appendUTF8(const char16_t *s, int32_t length, uint8_t *t, int32_t capacity) {
UErrorCode errorCode=U_ZERO_ERROR;
int32_t length8=0;
u_strToUTF8((char *)t, capacity, &length8, s, length, &errorCode);
@@ -204,8 +204,8 @@ makeSpanLengthByte(int32_t spanLength) {
UnicodeSetStringSpan::UnicodeSetStringSpan(const UnicodeSet &set,
const UVector &setStrings,
uint32_t which)
- : spanSet(0, 0x10ffff), pSpanNotSet(NULL), strings(setStrings),
- utf8Lengths(NULL), spanLengths(NULL), utf8(NULL),
+ : spanSet(0, 0x10ffff), pSpanNotSet(nullptr), strings(setStrings),
+ utf8Lengths(nullptr), spanLengths(nullptr), utf8(nullptr),
utf8Length(0),
maxLength16(0), maxLength8(0),
all((UBool)(which==ALL)) {
@@ -229,7 +229,7 @@ UnicodeSetStringSpan::UnicodeSetStringSpan(const UnicodeSet &set,
UBool someRelevant=false;
for(i=0; i<stringsLength; ++i) {
const UnicodeString &string=*(const UnicodeString *)strings.elementAt(i);
- const UChar *s16=string.getBuffer();
+ const char16_t *s16=string.getBuffer();
int32_t length16=string.length();
if (length16==0) {
continue; // skip the empty string
@@ -283,7 +283,7 @@ UnicodeSetStringSpan::UnicodeSetStringSpan(const UnicodeSet &set,
utf8Lengths=staticLengths;
} else {
utf8Lengths=(int32_t *)uprv_malloc(allocSize);
- if(utf8Lengths==NULL) {
+ if(utf8Lengths==nullptr) {
maxLength16=maxLength8=0; // Prevent usage by making needsStringSpanUTF16/8() return false.
return; // Out of memory.
}
@@ -312,7 +312,7 @@ UnicodeSetStringSpan::UnicodeSetStringSpan(const UnicodeSet &set,
for(i=0; i<stringsLength; ++i) {
const UnicodeString &string=*(const UnicodeString *)strings.elementAt(i);
- const UChar *s16=string.getBuffer();
+ const char16_t *s16=string.getBuffer();
int32_t length16=string.length();
spanLength=spanSet.span(s16, length16, USET_SPAN_CONTAINED);
if(spanLength<length16 && length16>0) { // Relevant string.
@@ -395,8 +395,8 @@ UnicodeSetStringSpan::UnicodeSetStringSpan(const UnicodeSet &set,
// Copy constructor. Assumes which==ALL for a frozen set.
UnicodeSetStringSpan::UnicodeSetStringSpan(const UnicodeSetStringSpan &otherStringSpan,
const UVector &newParentSetStrings)
- : spanSet(otherStringSpan.spanSet), pSpanNotSet(NULL), strings(newParentSetStrings),
- utf8Lengths(NULL), spanLengths(NULL), utf8(NULL),
+ : spanSet(otherStringSpan.spanSet), pSpanNotSet(nullptr), strings(newParentSetStrings),
+ utf8Lengths(nullptr), spanLengths(nullptr), utf8(nullptr),
utf8Length(otherStringSpan.utf8Length),
maxLength16(otherStringSpan.maxLength16), maxLength8(otherStringSpan.maxLength8),
all(true) {
@@ -414,7 +414,7 @@ UnicodeSetStringSpan::UnicodeSetStringSpan(const UnicodeSetStringSpan &otherStri
utf8Lengths=staticLengths;
} else {
utf8Lengths=(int32_t *)uprv_malloc(allocSize);
- if(utf8Lengths==NULL) {
+ if(utf8Lengths==nullptr) {
maxLength16=maxLength8=0; // Prevent usage by making needsStringSpanUTF16/8() return false.
return; // Out of memory.
}
@@ -426,21 +426,21 @@ UnicodeSetStringSpan::UnicodeSetStringSpan(const UnicodeSetStringSpan &otherStri
}
UnicodeSetStringSpan::~UnicodeSetStringSpan() {
- if(pSpanNotSet!=NULL && pSpanNotSet!=&spanSet) {
+ if(pSpanNotSet!=nullptr && pSpanNotSet!=&spanSet) {
delete pSpanNotSet;
}
- if(utf8Lengths!=NULL && utf8Lengths!=staticLengths) {
+ if(utf8Lengths!=nullptr && utf8Lengths!=staticLengths) {
uprv_free(utf8Lengths);
}
}
void UnicodeSetStringSpan::addToSpanNotSet(UChar32 c) {
- if(pSpanNotSet==NULL || pSpanNotSet==&spanSet) {
+ if(pSpanNotSet==nullptr || pSpanNotSet==&spanSet) {
if(spanSet.contains(c)) {
return; // Nothing to do.
}
UnicodeSet *newSet=spanSet.cloneAsThawed();
- if(newSet==NULL) {
+ if(newSet==nullptr) {
return; // Out of memory.
} else {
pSpanNotSet=newSet;
@@ -451,7 +451,7 @@ void UnicodeSetStringSpan::addToSpanNotSet(UChar32 c) {
// Compare strings without any argument checks. Requires length>0.
static inline UBool
-matches16(const UChar *s, const UChar *t, int32_t length) {
+matches16(const char16_t *s, const char16_t *t, int32_t length) {
do {
if(*s++!=*t++) {
return false;
@@ -474,7 +474,7 @@ matches8(const uint8_t *s, const uint8_t *t, int32_t length) {
// at code point boundaries.
// That is, each edge of a match must not be in the middle of a surrogate pair.
static inline UBool
-matches16CPB(const UChar *s, int32_t start, int32_t limit, const UChar *t, int32_t length) {
+matches16CPB(const char16_t *s, int32_t start, int32_t limit, const char16_t *t, int32_t length) {
s+=start;
limit-=start;
return matches16(s, t, length) &&
@@ -485,8 +485,8 @@ matches16CPB(const UChar *s, int32_t start, int32_t limit, const UChar *t, int32
// Does the set contain the next code point?
// If so, return its length; otherwise return its negative length.
static inline int32_t
-spanOne(const UnicodeSet &set, const UChar *s, int32_t length) {
- UChar c=*s, c2;
+spanOne(const UnicodeSet &set, const char16_t *s, int32_t length) {
+ char16_t c=*s, c2;
if(c>=0xd800 && c<=0xdbff && length>=2 && U16_IS_TRAIL(c2=s[1])) {
return set.contains(U16_GET_SUPPLEMENTARY(c, c2)) ? 2 : -2;
}
@@ -494,8 +494,8 @@ spanOne(const UnicodeSet &set, const UChar *s, int32_t length) {
}
static inline int32_t
-spanOneBack(const UnicodeSet &set, const UChar *s, int32_t length) {
- UChar c=s[length-1], c2;
+spanOneBack(const UnicodeSet &set, const char16_t *s, int32_t length) {
+ char16_t c=s[length-1], c2;
if(c>=0xdc00 && c<=0xdfff && length>=2 && U16_IS_LEAD(c2=s[length-2])) {
return set.contains(U16_GET_SUPPLEMENTARY(c2, c)) ? 2 : -2;
}
@@ -634,7 +634,7 @@ spanOneBackUTF8(const UnicodeSet &set, const uint8_t *s, int32_t length) {
* Stop if spanLength==0, otherwise continue the loop.
*/
-int32_t UnicodeSetStringSpan::span(const UChar *s, int32_t length, USetSpanCondition spanCondition) const {
+int32_t UnicodeSetStringSpan::span(const char16_t *s, int32_t length, USetSpanCondition spanCondition) const {
if(spanCondition==USET_SPAN_NOT_CONTAINED) {
return spanNot(s, length);
}
@@ -659,7 +659,7 @@ int32_t UnicodeSetStringSpan::span(const UChar *s, int32_t length, USetSpanCondi
continue; // Irrelevant string. (Also the empty string.)
}
const UnicodeString &string=*(const UnicodeString *)strings.elementAt(i);
- const UChar *s16=string.getBuffer();
+ const char16_t *s16=string.getBuffer();
int32_t length16=string.length();
U_ASSERT(length>0);
@@ -699,7 +699,7 @@ int32_t UnicodeSetStringSpan::span(const UChar *s, int32_t length, USetSpanCondi
// to find the match from the earliest start.
const UnicodeString &string=*(const UnicodeString *)strings.elementAt(i);
- const UChar *s16=string.getBuffer();
+ const char16_t *s16=string.getBuffer();
int32_t length16=string.length();
if (length16==0) {
continue; // skip the empty string
@@ -798,7 +798,7 @@ int32_t UnicodeSetStringSpan::span(const UChar *s, int32_t length, USetSpanCondi
}
}
-int32_t UnicodeSetStringSpan::spanBack(const UChar *s, int32_t length, USetSpanCondition spanCondition) const {
+int32_t UnicodeSetStringSpan::spanBack(const char16_t *s, int32_t length, USetSpanCondition spanCondition) const {
if(spanCondition==USET_SPAN_NOT_CONTAINED) {
return spanNotBack(s, length);
}
@@ -827,7 +827,7 @@ int32_t UnicodeSetStringSpan::spanBack(const UChar *s, int32_t length, USetSpanC
continue; // Irrelevant string. (Also the empty string.)
}
const UnicodeString &string=*(const UnicodeString *)strings.elementAt(i);
- const UChar *s16=string.getBuffer();
+ const char16_t *s16=string.getBuffer();
int32_t length16=string.length();
U_ASSERT(length>0);
@@ -869,7 +869,7 @@ int32_t UnicodeSetStringSpan::spanBack(const UChar *s, int32_t length, USetSpanC
// to find the match from the latest end.
const UnicodeString &string=*(const UnicodeString *)strings.elementAt(i);
- const UChar *s16=string.getBuffer();
+ const char16_t *s16=string.getBuffer();
int32_t length16=string.length();
if (length16==0) {
continue; // skip the empty string
@@ -1346,7 +1346,7 @@ int32_t UnicodeSetStringSpan::spanBackUTF8(const uint8_t *s, int32_t length, USe
* when there is not actually a match for such a set string.
*/
-int32_t UnicodeSetStringSpan::spanNot(const UChar *s, int32_t length) const {
+int32_t UnicodeSetStringSpan::spanNot(const char16_t *s, int32_t length) const {
int32_t pos=0, rest=length;
int32_t i, stringsLength=strings.size();
do {
@@ -1372,7 +1372,7 @@ int32_t UnicodeSetStringSpan::spanNot(const UChar *s, int32_t length) const {
continue; // Irrelevant string. (Also the empty string.)
}
const UnicodeString &string=*(const UnicodeString *)strings.elementAt(i);
- const UChar *s16=string.getBuffer();
+ const char16_t *s16=string.getBuffer();
int32_t length16=string.length();
U_ASSERT(length>0);
if(length16<=rest && matches16CPB(s, pos, length, s16, length16)) {
@@ -1389,7 +1389,7 @@ int32_t UnicodeSetStringSpan::spanNot(const UChar *s, int32_t length) const {
return length; // Reached the end of the string.
}
-int32_t UnicodeSetStringSpan::spanNotBack(const UChar *s, int32_t length) const {
+int32_t UnicodeSetStringSpan::spanNotBack(const char16_t *s, int32_t length) const {
int32_t pos=length;
int32_t i, stringsLength=strings.size();
do {
@@ -1416,7 +1416,7 @@ int32_t UnicodeSetStringSpan::spanNotBack(const UChar *s, int32_t length) const
continue; // Irrelevant string. (Also the empty string.)
}
const UnicodeString &string=*(const UnicodeString *)strings.elementAt(i);
- const UChar *s16=string.getBuffer();
+ const char16_t *s16=string.getBuffer();
int32_t length16=string.length();
U_ASSERT(length>0);
if(length16<=pos && matches16CPB(s, pos-length16, length, s16, length16)) {
diff --git a/Build/source/libs/icu/icu-src/source/common/unisetspan.h b/Build/source/libs/icu/icu-src/source/common/unisetspan.h
index 9a1307a9078..f1dc8e6f743 100644
--- a/Build/source/libs/icu/icu-src/source/common/unisetspan.h
+++ b/Build/source/libs/icu/icu-src/source/common/unisetspan.h
@@ -74,9 +74,9 @@ public:
// For fast UnicodeSet::contains(c).
inline UBool contains(UChar32 c) const;
- int32_t span(const UChar *s, int32_t length, USetSpanCondition spanCondition) const;
+ int32_t span(const char16_t *s, int32_t length, USetSpanCondition spanCondition) const;
- int32_t spanBack(const UChar *s, int32_t length, USetSpanCondition spanCondition) const;
+ int32_t spanBack(const char16_t *s, int32_t length, USetSpanCondition spanCondition) const;
int32_t spanUTF8(const uint8_t *s, int32_t length, USetSpanCondition spanCondition) const;
@@ -95,8 +95,8 @@ private:
// so that a character span ends before any string.
void addToSpanNotSet(UChar32 c);
- int32_t spanNot(const UChar *s, int32_t length) const;
- int32_t spanNotBack(const UChar *s, int32_t length) const;
+ int32_t spanNot(const char16_t *s, int32_t length) const;
+ int32_t spanNotBack(const char16_t *s, int32_t length) const;
int32_t spanNotUTF8(const uint8_t *s, int32_t length) const;
int32_t spanNotBackUTF8(const uint8_t *s, int32_t length) const;
diff --git a/Build/source/libs/icu/icu-src/source/common/unistr.cpp b/Build/source/libs/icu/icu-src/source/common/unistr.cpp
index 4125d194724..04f01cfa16c 100644
--- a/Build/source/libs/icu/icu-src/source/common/unistr.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/unistr.cpp
@@ -44,7 +44,7 @@ void
print(const UnicodeString& s,
const char *name)
{
- UChar c;
+ char16_t c;
cout << name << ":|";
for(int i = 0; i < s.length(); ++i) {
c = s[i];
@@ -57,11 +57,11 @@ print(const UnicodeString& s,
}
void
-print(const UChar *s,
+print(const char16_t *s,
int32_t len,
const char *name)
{
- UChar c;
+ char16_t c;
cout << name << ":|";
for(int i = 0; i < len; ++i) {
c = s[i];
@@ -80,17 +80,17 @@ print(const UChar *s,
// need to copy areas that may overlap
static
inline void
-us_arrayCopy(const UChar *src, int32_t srcStart,
- UChar *dst, int32_t dstStart, int32_t count)
+us_arrayCopy(const char16_t *src, int32_t srcStart,
+ char16_t *dst, int32_t dstStart, int32_t count)
{
if(count>0) {
uprv_memmove(dst+dstStart, src+srcStart, (size_t)count*sizeof(*src));
}
}
-// u_unescapeAt() callback to get a UChar from a UnicodeString
+// u_unescapeAt() callback to get a char16_t from a UnicodeString
U_CDECL_BEGIN
-static UChar U_CALLCONV
+static char16_t U_CALLCONV
UnicodeString_charAt(int32_t offset, void *context) {
return ((icu::UnicodeString*) context)->charAt(offset);
}
@@ -159,8 +159,8 @@ UnicodeString::UnicodeString(int32_t capacity, UChar32 c, int32_t count) {
capacity = length;
}
if(allocate(capacity)) {
- UChar *array = getArrayStart();
- UChar unit = (UChar)c;
+ char16_t *array = getArrayStart();
+ char16_t unit = (char16_t)c;
for(int32_t i = 0; i < length; ++i) {
array[i] = unit;
}
@@ -177,9 +177,9 @@ UnicodeString::UnicodeString(int32_t capacity, UChar32 c, int32_t count) {
capacity = length;
}
if(allocate(capacity)) {
- UChar *array = getArrayStart();
- UChar lead = U16_LEAD(c);
- UChar trail = U16_TRAIL(c);
+ char16_t *array = getArrayStart();
+ char16_t lead = U16_LEAD(c);
+ char16_t trail = U16_TRAIL(c);
for(int32_t i = 0; i < length; i += 2) {
array[i] = lead;
array[i + 1] = trail;
@@ -189,7 +189,7 @@ UnicodeString::UnicodeString(int32_t capacity, UChar32 c, int32_t count) {
}
}
-UnicodeString::UnicodeString(UChar ch) {
+UnicodeString::UnicodeString(char16_t ch) {
fUnion.fFields.fLengthAndFlags = kLength1 | kShortString;
fUnion.fStackFields.fBuffer[0] = ch;
}
@@ -206,12 +206,12 @@ UnicodeString::UnicodeString(UChar32 ch) {
}
}
-UnicodeString::UnicodeString(const UChar *text) {
+UnicodeString::UnicodeString(const char16_t *text) {
fUnion.fFields.fLengthAndFlags = kShortString;
doAppend(text, 0, -1);
}
-UnicodeString::UnicodeString(const UChar *text,
+UnicodeString::UnicodeString(const char16_t *text,
int32_t textLength) {
fUnion.fFields.fLengthAndFlags = kShortString;
doAppend(text, 0, textLength);
@@ -221,8 +221,8 @@ UnicodeString::UnicodeString(UBool isTerminated,
ConstChar16Ptr textPtr,
int32_t textLength) {
fUnion.fFields.fLengthAndFlags = kReadonlyAlias;
- const UChar *text = textPtr;
- if(text == NULL) {
+ const char16_t *text = textPtr;
+ if(text == nullptr) {
// treat as an empty string, do not alias
setToEmpty();
} else if(textLength < -1 ||
@@ -235,16 +235,16 @@ UnicodeString::UnicodeString(UBool isTerminated,
// text is terminated, or else it would have failed the above test
textLength = u_strlen(text);
}
- setArray(const_cast<UChar *>(text), textLength,
+ setArray(const_cast<char16_t *>(text), textLength,
isTerminated ? textLength + 1 : textLength);
}
}
-UnicodeString::UnicodeString(UChar *buff,
+UnicodeString::UnicodeString(char16_t *buff,
int32_t buffLength,
int32_t buffCapacity) {
fUnion.fFields.fLengthAndFlags = kWritableAlias;
- if(buff == NULL) {
+ if(buff == nullptr) {
// treat as an empty string, do not alias
setToEmpty();
} else if(buffLength < -1 || buffCapacity < 0 || buffLength > buffCapacity) {
@@ -252,7 +252,7 @@ UnicodeString::UnicodeString(UChar *buff,
} else {
if(buffLength == -1) {
// fLength = u_strlen(buff); but do not look beyond buffCapacity
- const UChar *p = buff, *limit = buff + buffCapacity;
+ const char16_t *p = buff, *limit = buff + buffCapacity;
while(p != limit && *p != 0) {
++p;
}
@@ -264,7 +264,7 @@ UnicodeString::UnicodeString(UChar *buff,
UnicodeString::UnicodeString(const char *src, int32_t length, EInvariant) {
fUnion.fFields.fLengthAndFlags = kShortString;
- if(src==NULL) {
+ if(src==nullptr) {
// treat as an empty string
} else {
if(length<0) {
@@ -308,7 +308,7 @@ UnicodeString::UnicodeString(const UnicodeString& that) {
copyFrom(that);
}
-UnicodeString::UnicodeString(UnicodeString &&src) U_NOEXCEPT {
+UnicodeString::UnicodeString(UnicodeString &&src) noexcept {
copyFieldsFrom(src, true);
}
@@ -328,7 +328,7 @@ UnicodeString::UnicodeString(const UnicodeString& that,
// Replaceable base class clone() default implementation, does not clone
Replaceable *
Replaceable::clone() const {
- return NULL;
+ return nullptr;
}
// UnicodeString overrides clone() with a real implementation
@@ -380,13 +380,13 @@ UnicodeString::allocate(int32_t capacity) {
// Round up to a multiple of 16.
numBytes = (numBytes + 15) & ~15;
int32_t *array = (int32_t *) uprv_malloc(numBytes);
- if(array != NULL) {
+ if(array != nullptr) {
// set initial refCount and point behind the refCount
*array++ = 1;
numBytes -= sizeof(int32_t);
- // have fArray point to the first UChar
- fUnion.fFields.fArray = (UChar *)array;
+ // have fArray point to the first char16_t
+ fUnion.fFields.fArray = (char16_t *)array;
fUnion.fFields.fCapacity = (int32_t)(numBytes / U_SIZEOF_UCHAR);
fUnion.fFields.fLengthAndFlags = kLongString;
return true;
@@ -460,13 +460,13 @@ UnicodeString UnicodeString::fromUTF32(const UChar32 *utf32, int32_t length) {
capacity = length + (length >> 4) + 4;
}
do {
- UChar *utf16 = result.getBuffer(capacity);
+ char16_t *utf16 = result.getBuffer(capacity);
int32_t length16;
UErrorCode errorCode = U_ZERO_ERROR;
u_strFromUTF32WithSub(utf16, result.getCapacity(), &length16,
utf32, length,
0xfffd, // Substitution character.
- NULL, // Don't care about number of substitutions.
+ nullptr, // Don't care about number of substitutions.
&errorCode);
result.releaseBuffer(length16);
if(errorCode == U_BUFFER_OVERFLOW_ERROR) {
@@ -527,7 +527,7 @@ UnicodeString::copyFrom(const UnicodeString &src, UBool fastCopy) {
case kLongString:
// src uses a refCounted string buffer, use that buffer with refCount
// src is const, use a cast - we don't actually change it
- ((UnicodeString &)src).addRef();
+ const_cast<UnicodeString &>(src).addRef();
// copy all fields, share the reference-counted buffer
fUnion.fFields.fArray = src.fUnion.fFields.fArray;
fUnion.fFields.fCapacity = src.fUnion.fFields.fCapacity;
@@ -572,7 +572,7 @@ UnicodeString::copyFrom(const UnicodeString &src, UBool fastCopy) {
return *this;
}
-UnicodeString &UnicodeString::operator=(UnicodeString &&src) U_NOEXCEPT {
+UnicodeString &UnicodeString::operator=(UnicodeString &&src) noexcept {
// No explicit check for self move assignment, consistent with standard library.
// Self move assignment causes no crash nor leak but might make the object bogus.
releaseArray();
@@ -581,7 +581,7 @@ UnicodeString &UnicodeString::operator=(UnicodeString &&src) U_NOEXCEPT {
}
// Same as move assignment except without memory management.
-void UnicodeString::copyFieldsFrom(UnicodeString &src, UBool setSrcToBogus) U_NOEXCEPT {
+void UnicodeString::copyFieldsFrom(UnicodeString &src, UBool setSrcToBogus) noexcept {
int16_t lengthAndFlags = fUnion.fFields.fLengthAndFlags = src.fUnion.fFields.fLengthAndFlags;
if(lengthAndFlags & kUsingStackBuffer) {
// Short string using the stack buffer, copy the contents.
@@ -601,13 +601,13 @@ void UnicodeString::copyFieldsFrom(UnicodeString &src, UBool setSrcToBogus) U_NO
if(setSrcToBogus) {
// Set src to bogus without releasing any memory.
src.fUnion.fFields.fLengthAndFlags = kIsBogus;
- src.fUnion.fFields.fArray = NULL;
+ src.fUnion.fFields.fArray = nullptr;
src.fUnion.fFields.fCapacity = 0;
}
}
}
-void UnicodeString::swap(UnicodeString &other) U_NOEXCEPT {
+void UnicodeString::swap(UnicodeString &other) noexcept {
UnicodeString temp; // Empty short string: Known not to need releaseArray().
// Copy fields without resetting source values in between.
temp.copyFieldsFrom(*this, false);
@@ -626,7 +626,7 @@ UnicodeString UnicodeString::unescape() const {
if (result.isBogus()) {
return result;
}
- const UChar *array = getBuffer();
+ const char16_t *array = getBuffer();
int32_t len = length();
int32_t prev = 0;
for (int32_t i=0;;) {
@@ -662,10 +662,52 @@ UnicodeString::doEquals(const UnicodeString &text, int32_t len) const {
return uprv_memcmp(getArrayStart(), text.getArrayStart(), len * U_SIZEOF_UCHAR) == 0;
}
+UBool
+UnicodeString::doEqualsSubstring( int32_t start,
+ int32_t length,
+ const char16_t *srcChars,
+ int32_t srcStart,
+ int32_t srcLength) const
+{
+ // compare illegal string values
+ if(isBogus()) {
+ return false;
+ }
+
+ // pin indices to legal values
+ pinIndices(start, length);
+
+ if(srcChars == nullptr) {
+ // treat const char16_t *srcChars==nullptr as an empty string
+ return length == 0 ? true : false;
+ }
+
+ // get the correct pointer
+ const char16_t *chars = getArrayStart();
+
+ chars += start;
+ srcChars += srcStart;
+
+ // get the srcLength if necessary
+ if(srcLength < 0) {
+ srcLength = u_strlen(srcChars + srcStart);
+ }
+
+ if (length != srcLength) {
+ return false;
+ }
+
+ if(length == 0 || chars == srcChars) {
+ return true;
+ }
+
+ return u_memcmp(chars, srcChars, srcLength) == 0;
+}
+
int8_t
UnicodeString::doCompare( int32_t start,
int32_t length,
- const UChar *srcChars,
+ const char16_t *srcChars,
int32_t srcStart,
int32_t srcLength) const
{
@@ -677,13 +719,13 @@ UnicodeString::doCompare( int32_t start,
// pin indices to legal values
pinIndices(start, length);
- if(srcChars == NULL) {
- // treat const UChar *srcChars==NULL as an empty string
+ if(srcChars == nullptr) {
+ // treat const char16_t *srcChars==nullptr as an empty string
return length == 0 ? 0 : 1;
}
// get the correct pointer
- const UChar *chars = getArrayStart();
+ const char16_t *chars = getArrayStart();
chars += start;
srcChars += srcStart;
@@ -723,12 +765,12 @@ UnicodeString::doCompare( int32_t start,
# if U_IS_BIG_ENDIAN
// big-endian: byte comparison works
- result = uprv_memcmp(chars, srcChars, minLength * sizeof(UChar));
+ result = uprv_memcmp(chars, srcChars, minLength * sizeof(char16_t));
if(result != 0) {
return (int8_t)(result >> 15 | 1);
}
# else
- // little-endian: compare UChar units
+ // little-endian: compare char16_t units
do {
result = ((int32_t)*(chars++) - (int32_t)*(srcChars++));
if(result != 0) {
@@ -744,12 +786,12 @@ UnicodeString::doCompare( int32_t start,
int8_t
UnicodeString::doCompareCodePointOrder(int32_t start,
int32_t length,
- const UChar *srcChars,
+ const char16_t *srcChars,
int32_t srcStart,
int32_t srcLength) const
{
// compare illegal string values
- // treat const UChar *srcChars==NULL as an empty string
+ // treat const char16_t *srcChars==nullptr as an empty string
if(isBogus()) {
return -1;
}
@@ -757,11 +799,11 @@ UnicodeString::doCompareCodePointOrder(int32_t start,
// pin indices to legal values
pinIndices(start, length);
- if(srcChars == NULL) {
+ if(srcChars == nullptr) {
srcStart = srcLength = 0;
}
- int32_t diff = uprv_strCompare(getArrayStart() + start, length, (srcChars!=NULL)?(srcChars + srcStart):NULL, srcLength, false, true);
+ int32_t diff = uprv_strCompare(getArrayStart() + start, length, (srcChars!=nullptr)?(srcChars + srcStart):nullptr, srcLength, false, true);
/* translate the 32-bit result into an 8-bit one */
if(diff!=0) {
return (int8_t)(diff >> 15 | 1);
@@ -775,7 +817,7 @@ UnicodeString::getLength() const {
return length();
}
-UChar
+char16_t
UnicodeString::getCharAt(int32_t offset) const {
return charAt(offset);
}
@@ -790,7 +832,7 @@ UnicodeString::char32At(int32_t offset) const
{
int32_t len = length();
if((uint32_t)offset < (uint32_t)len) {
- const UChar *array = getArrayStart();
+ const char16_t *array = getArrayStart();
UChar32 c;
U16_GET(array, 0, offset, len, c);
return c;
@@ -802,7 +844,7 @@ UnicodeString::char32At(int32_t offset) const
int32_t
UnicodeString::getChar32Start(int32_t offset) const {
if((uint32_t)offset < (uint32_t)length()) {
- const UChar *array = getArrayStart();
+ const char16_t *array = getArrayStart();
U16_SET_CP_START(array, 0, offset);
return offset;
} else {
@@ -814,7 +856,7 @@ int32_t
UnicodeString::getChar32Limit(int32_t offset) const {
int32_t len = length();
if((uint32_t)offset < (uint32_t)len) {
- const UChar *array = getArrayStart();
+ const char16_t *array = getArrayStart();
U16_SET_CP_LIMIT(array, 0, offset, len);
return offset;
} else {
@@ -825,14 +867,14 @@ UnicodeString::getChar32Limit(int32_t offset) const {
int32_t
UnicodeString::countChar32(int32_t start, int32_t length) const {
pinIndices(start, length);
- // if(isBogus()) then fArray==0 and start==0 - u_countChar32() checks for NULL
+ // if(isBogus()) then fArray==0 and start==0 - u_countChar32() checks for nullptr
return u_countChar32(getArrayStart()+start, length);
}
UBool
UnicodeString::hasMoreChar32Than(int32_t start, int32_t length, int32_t number) const {
pinIndices(start, length);
- // if(isBogus()) then fArray==0 and start==0 - u_strHasMoreChar32Than() checks for NULL
+ // if(isBogus()) then fArray==0 and start==0 - u_strHasMoreChar32Than() checks for nullptr
return u_strHasMoreChar32Than(getArrayStart()+start, length, number);
}
@@ -846,7 +888,7 @@ UnicodeString::moveIndex32(int32_t index, int32_t delta) const {
index=len;
}
- const UChar *array = getArrayStart();
+ const char16_t *array = getArrayStart();
if(delta>0) {
U16_FWD_N(array, index, len, delta);
} else {
@@ -859,14 +901,14 @@ UnicodeString::moveIndex32(int32_t index, int32_t delta) const {
void
UnicodeString::doExtract(int32_t start,
int32_t length,
- UChar *dst,
+ char16_t *dst,
int32_t dstStart) const
{
// pin indices to legal values
pinIndices(start, length);
// do not copy anything if we alias dst itself
- const UChar *array = getArrayStart();
+ const char16_t *array = getArrayStart();
if(array + start != dst + dstStart) {
us_arrayCopy(array, start, dst, dstStart, length);
}
@@ -880,7 +922,7 @@ UnicodeString::extract(Char16Ptr dest, int32_t destCapacity,
if(isBogus() || destCapacity<0 || (destCapacity>0 && dest==0)) {
errorCode=U_ILLEGAL_ARGUMENT_ERROR;
} else {
- const UChar *array = getArrayStart();
+ const char16_t *array = getArrayStart();
if(len>0 && len<=destCapacity && array!=dest) {
u_memcpy(dest, array, len);
}
@@ -899,7 +941,7 @@ UnicodeString::extract(int32_t start,
enum EInvariant) const
{
// if the arguments are illegal, then do nothing
- if(targetCapacity < 0 || (targetCapacity > 0 && target == NULL)) {
+ if(targetCapacity < 0 || (targetCapacity > 0 && target == nullptr)) {
return 0;
}
@@ -916,9 +958,9 @@ UnicodeString::extract(int32_t start,
UnicodeString
UnicodeString::tempSubString(int32_t start, int32_t len) const {
pinIndices(start, len);
- const UChar *array = getBuffer(); // not getArrayStart() to check kIsBogus & kOpenGetBuffer
- if(array==NULL) {
- array=fUnion.fStackFields.fBuffer; // anything not NULL because that would make an empty string
+ const char16_t *array = getBuffer(); // not getArrayStart() to check kIsBogus & kOpenGetBuffer
+ if(array==nullptr) {
+ array=fUnion.fStackFields.fBuffer; // anything not nullptr because that would make an empty string
len=-2; // bogus result string
}
return UnicodeString(false, array + start, len);
@@ -933,7 +975,7 @@ UnicodeString::toUTF8(int32_t start, int32_t len,
u_strToUTF8WithSub(target, capacity, &length8,
getBuffer() + start, len,
0xFFFD, // Standard substitution character.
- NULL, // Don't care about number of substitutions.
+ nullptr, // Don't care about number of substitutions.
&errorCode);
return length8;
}
@@ -982,17 +1024,17 @@ UnicodeString::toUTF8(ByteSink &sink) const {
u_strToUTF8WithSub(utf8, capacity, &length8,
getBuffer(), length16,
0xFFFD, // Standard substitution character.
- NULL, // Don't care about number of substitutions.
+ nullptr, // Don't care about number of substitutions.
&errorCode);
if(errorCode == U_BUFFER_OVERFLOW_ERROR) {
utf8 = (char *)uprv_malloc(length8);
- if(utf8 != NULL) {
+ if(utf8 != nullptr) {
utf8IsOwned = true;
errorCode = U_ZERO_ERROR;
u_strToUTF8WithSub(utf8, length8, &length8,
getBuffer(), length16,
0xFFFD, // Standard substitution character.
- NULL, // Don't care about number of substitutions.
+ nullptr, // Don't care about number of substitutions.
&errorCode);
} else {
errorCode = U_MEMORY_ALLOCATION_ERROR;
@@ -1016,14 +1058,14 @@ UnicodeString::toUTF32(UChar32 *utf32, int32_t capacity, UErrorCode &errorCode)
u_strToUTF32WithSub(utf32, capacity, &length32,
getBuffer(), length(),
0xfffd, // Substitution character.
- NULL, // Don't care about number of substitutions.
+ nullptr, // Don't care about number of substitutions.
&errorCode);
}
return length32;
}
int32_t
-UnicodeString::indexOf(const UChar *srcChars,
+UnicodeString::indexOf(const char16_t *srcChars,
int32_t srcStart,
int32_t srcLength,
int32_t start,
@@ -1042,9 +1084,9 @@ UnicodeString::indexOf(const UChar *srcChars,
pinIndices(start, length);
// find the first occurrence of the substring
- const UChar *array = getArrayStart();
- const UChar *match = u_strFindFirst(array + start, length, srcChars + srcStart, srcLength);
- if(match == NULL) {
+ const char16_t *array = getArrayStart();
+ const char16_t *match = u_strFindFirst(array + start, length, srcChars + srcStart, srcLength);
+ if(match == nullptr) {
return -1;
} else {
return (int32_t)(match - array);
@@ -1052,7 +1094,7 @@ UnicodeString::indexOf(const UChar *srcChars,
}
int32_t
-UnicodeString::doIndexOf(UChar c,
+UnicodeString::doIndexOf(char16_t c,
int32_t start,
int32_t length) const
{
@@ -1060,9 +1102,9 @@ UnicodeString::doIndexOf(UChar c,
pinIndices(start, length);
// find the first occurrence of c
- const UChar *array = getArrayStart();
- const UChar *match = u_memchr(array + start, c, length);
- if(match == NULL) {
+ const char16_t *array = getArrayStart();
+ const char16_t *match = u_memchr(array + start, c, length);
+ if(match == nullptr) {
return -1;
} else {
return (int32_t)(match - array);
@@ -1077,9 +1119,9 @@ UnicodeString::doIndexOf(UChar32 c,
pinIndices(start, length);
// find the first occurrence of c
- const UChar *array = getArrayStart();
- const UChar *match = u_memchr32(array + start, c, length);
- if(match == NULL) {
+ const char16_t *array = getArrayStart();
+ const char16_t *match = u_memchr32(array + start, c, length);
+ if(match == nullptr) {
return -1;
} else {
return (int32_t)(match - array);
@@ -1087,7 +1129,7 @@ UnicodeString::doIndexOf(UChar32 c,
}
int32_t
-UnicodeString::lastIndexOf(const UChar *srcChars,
+UnicodeString::lastIndexOf(const char16_t *srcChars,
int32_t srcStart,
int32_t srcLength,
int32_t start,
@@ -1106,9 +1148,9 @@ UnicodeString::lastIndexOf(const UChar *srcChars,
pinIndices(start, length);
// find the last occurrence of the substring
- const UChar *array = getArrayStart();
- const UChar *match = u_strFindLast(array + start, length, srcChars + srcStart, srcLength);
- if(match == NULL) {
+ const char16_t *array = getArrayStart();
+ const char16_t *match = u_strFindLast(array + start, length, srcChars + srcStart, srcLength);
+ if(match == nullptr) {
return -1;
} else {
return (int32_t)(match - array);
@@ -1116,7 +1158,7 @@ UnicodeString::lastIndexOf(const UChar *srcChars,
}
int32_t
-UnicodeString::doLastIndexOf(UChar c,
+UnicodeString::doLastIndexOf(char16_t c,
int32_t start,
int32_t length) const
{
@@ -1128,9 +1170,9 @@ UnicodeString::doLastIndexOf(UChar c,
pinIndices(start, length);
// find the last occurrence of c
- const UChar *array = getArrayStart();
- const UChar *match = u_memrchr(array + start, c, length);
- if(match == NULL) {
+ const char16_t *array = getArrayStart();
+ const char16_t *match = u_memrchr(array + start, c, length);
+ if(match == nullptr) {
return -1;
} else {
return (int32_t)(match - array);
@@ -1145,9 +1187,9 @@ UnicodeString::doLastIndexOf(UChar32 c,
pinIndices(start, length);
// find the last occurrence of c
- const UChar *array = getArrayStart();
- const UChar *match = u_memrchr32(array + start, c, length);
- if(match == NULL) {
+ const char16_t *array = getArrayStart();
+ const char16_t *match = u_memrchr32(array + start, c, length);
+ if(match == nullptr) {
return -1;
} else {
return (int32_t)(match - array);
@@ -1220,7 +1262,7 @@ UnicodeString::getTerminatedBuffer() {
if(!isWritable()) {
return nullptr;
}
- UChar *array = getArrayStart();
+ char16_t *array = getArrayStart();
int32_t len = length();
if(len < getCapacity()) {
if(fUnion.fFields.fLengthAndFlags & kBufferIsReadonly) {
@@ -1234,7 +1276,7 @@ UnicodeString::getTerminatedBuffer() {
} else if(((fUnion.fFields.fLengthAndFlags & kRefCounted) == 0 || refCount() == 1)) {
// kRefCounted: Do not write the NUL if the buffer is shared.
// That is mostly safe, except when the length of one copy was modified
- // without copy-on-write, e.g., via truncate(newLength) or remove(void).
+ // without copy-on-write, e.g., via truncate(newLength) or remove().
// Then the NUL would be written into the middle of another copy's string.
// Otherwise, the buffer is fully writable and it is anyway safe to write the NUL.
@@ -1264,8 +1306,8 @@ UnicodeString::setTo(UBool isTerminated,
return *this;
}
- const UChar *text = textPtr;
- if(text == NULL) {
+ const char16_t *text = textPtr;
+ if(text == nullptr) {
// treat as an empty string, do not alias
releaseArray();
setToEmpty();
@@ -1287,13 +1329,13 @@ UnicodeString::setTo(UBool isTerminated,
textLength = u_strlen(text);
}
fUnion.fFields.fLengthAndFlags = kReadonlyAlias;
- setArray((UChar *)text, textLength, isTerminated ? textLength + 1 : textLength);
+ setArray((char16_t *)text, textLength, isTerminated ? textLength + 1 : textLength);
return *this;
}
// setTo() analogous to the writable-aliasing constructor with the same signature
UnicodeString &
-UnicodeString::setTo(UChar *buffer,
+UnicodeString::setTo(char16_t *buffer,
int32_t buffLength,
int32_t buffCapacity) {
if(fUnion.fFields.fLengthAndFlags & kOpenGetBuffer) {
@@ -1301,7 +1343,7 @@ UnicodeString::setTo(UChar *buffer,
return *this;
}
- if(buffer == NULL) {
+ if(buffer == nullptr) {
// treat as an empty string, do not alias
releaseArray();
setToEmpty();
@@ -1313,7 +1355,7 @@ UnicodeString::setTo(UChar *buffer,
return *this;
} else if(buffLength == -1) {
// buffLength = u_strlen(buff); but do not look beyond buffCapacity
- const UChar *p = buffer, *limit = buffer + buffCapacity;
+ const char16_t *p = buffer, *limit = buffer + buffCapacity;
while(p != limit && *p != 0) {
++p;
}
@@ -1337,13 +1379,13 @@ UnicodeString &UnicodeString::setToUTF8(StringPiece utf8) {
} else {
capacity = length + 1; // +1 for the terminating NUL.
}
- UChar *utf16 = getBuffer(capacity);
+ char16_t *utf16 = getBuffer(capacity);
int32_t length16;
UErrorCode errorCode = U_ZERO_ERROR;
u_strFromUTF8WithSub(utf16, getCapacity(), &length16,
utf8.data(), length,
0xfffd, // Substitution character.
- NULL, // Don't care about number of substitutions.
+ nullptr, // Don't care about number of substitutions.
&errorCode);
releaseBuffer(length16);
if(U_FAILURE(errorCode)) {
@@ -1354,7 +1396,7 @@ UnicodeString &UnicodeString::setToUTF8(StringPiece utf8) {
UnicodeString&
UnicodeString::setCharAt(int32_t offset,
- UChar c)
+ char16_t c)
{
int32_t len = length();
if(cloneArrayIfNeeded() && len > 0) {
@@ -1373,7 +1415,7 @@ UnicodeString&
UnicodeString::replace(int32_t start,
int32_t _length,
UChar32 srcChar) {
- UChar buffer[U16_MAX_LENGTH];
+ char16_t buffer[U16_MAX_LENGTH];
int32_t count = 0;
UBool isError = false;
U16_APPEND(buffer, count, U16_MAX_LENGTH, srcChar, isError);
@@ -1385,7 +1427,7 @@ UnicodeString::replace(int32_t start,
UnicodeString&
UnicodeString::append(UChar32 srcChar) {
- UChar buffer[U16_MAX_LENGTH];
+ char16_t buffer[U16_MAX_LENGTH];
int32_t _length = 0;
UBool isError = false;
U16_APPEND(buffer, _length, U16_MAX_LENGTH, srcChar, isError);
@@ -1412,7 +1454,7 @@ UnicodeString::doReplace( int32_t start,
UnicodeString&
UnicodeString::doReplace(int32_t start,
int32_t length,
- const UChar *srcChars,
+ const char16_t *srcChars,
int32_t srcStart,
int32_t srcLength)
{
@@ -1471,7 +1513,7 @@ UnicodeString::doReplace(int32_t start,
newLength += srcLength;
// Check for insertion into ourself
- const UChar *oldArray = getArrayStart();
+ const char16_t *oldArray = getArrayStart();
if (isBufferWritable() &&
oldArray < srcChars + srcLength &&
srcChars < oldArray + oldLength) {
@@ -1486,7 +1528,7 @@ UnicodeString::doReplace(int32_t start,
// cloneArrayIfNeeded(doCopyArray=false) may change fArray but will not copy the current contents;
// therefore we need to keep the current fArray
- UChar oldStackBuffer[US_STACKBUF_SIZE];
+ char16_t oldStackBuffer[US_STACKBUF_SIZE];
if((fUnion.fFields.fLengthAndFlags&kUsingStackBuffer) && (newLength > US_STACKBUF_SIZE)) {
// copy the stack buffer contents because it will be overwritten with
// fUnion.fFields values
@@ -1504,7 +1546,7 @@ UnicodeString::doReplace(int32_t start,
// now do the replace
- UChar *newArray = getArrayStart();
+ char16_t *newArray = getArrayStart();
if(newArray != oldArray) {
// if fArray changed, then we need to copy everything except what will change
us_arrayCopy(oldArray, 0, newArray, 0, start);
@@ -1547,8 +1589,8 @@ UnicodeString::doAppend(const UnicodeString& src, int32_t srcStart, int32_t srcL
}
UnicodeString&
-UnicodeString::doAppend(const UChar *srcChars, int32_t srcStart, int32_t srcLength) {
- if(!isWritable() || srcLength == 0 || srcChars == NULL) {
+UnicodeString::doAppend(const char16_t *srcChars, int32_t srcStart, int32_t srcLength) {
+ if(!isWritable() || srcLength == 0 || srcChars == nullptr) {
return *this;
}
@@ -1571,7 +1613,7 @@ UnicodeString::doAppend(const UChar *srcChars, int32_t srcStart, int32_t srcLeng
}
// Check for append onto ourself
- const UChar* oldArray = getArrayStart();
+ const char16_t* oldArray = getArrayStart();
if (isBufferWritable() &&
oldArray < srcChars + srcLength &&
srcChars < oldArray + oldLength) {
@@ -1587,9 +1629,9 @@ UnicodeString::doAppend(const UChar *srcChars, int32_t srcStart, int32_t srcLeng
// optimize append() onto a large-enough, owned string
if((newLength <= getCapacity() && isBufferWritable()) ||
cloneArrayIfNeeded(newLength, getGrowCapacity(newLength))) {
- UChar *newArray = getArrayStart();
+ char16_t *newArray = getArrayStart();
// Do not copy characters when
- // UChar *buffer=str.getAppendBuffer(...);
+ // char16_t *buffer=str.getAppendBuffer(...);
// is followed by
// str.append(buffer, length);
// or
@@ -1621,9 +1663,9 @@ UnicodeString::copy(int32_t start, int32_t limit, int32_t dest) {
if (limit <= start) {
return; // Nothing to do; avoid bogus malloc call
}
- UChar* text = (UChar*) uprv_malloc( sizeof(UChar) * (limit - start) );
+ char16_t* text = (char16_t*) uprv_malloc( sizeof(char16_t) * (limit - start) );
// Check to make sure text is not null.
- if (text != NULL) {
+ if (text != nullptr) {
extractBetween(start, limit, text, 0);
insert(dest, text, 0, limit - start);
uprv_free(text);
@@ -1659,9 +1701,9 @@ UnicodeString::doReverse(int32_t start, int32_t length) {
return *this;
}
- UChar *left = getArrayStart() + start;
- UChar *right = left + length - 1; // -1 for inclusive boundary (length>=2)
- UChar swap;
+ char16_t *left = getArrayStart() + start;
+ char16_t *right = left + length - 1; // -1 for inclusive boundary (length>=2)
+ char16_t swap;
UBool hasSupplementary = false;
// Before the loop we know left<right because length>=2.
@@ -1676,7 +1718,7 @@ UnicodeString::doReverse(int32_t start, int32_t length) {
/* if there are supplementary code points in the reversed range, then re-swap their surrogates */
if(hasSupplementary) {
- UChar swap2;
+ char16_t swap2;
left = getArrayStart() + start;
right = left + length - 1; // -1 so that we can look at *(left+1) if left<right
@@ -1695,14 +1737,14 @@ UnicodeString::doReverse(int32_t start, int32_t length) {
UBool
UnicodeString::padLeading(int32_t targetLength,
- UChar padChar)
+ char16_t padChar)
{
int32_t oldLength = length();
if(oldLength >= targetLength || !cloneArrayIfNeeded(targetLength)) {
return false;
} else {
// move contents up by padding width
- UChar *array = getArrayStart();
+ char16_t *array = getArrayStart();
int32_t start = targetLength - oldLength;
us_arrayCopy(array, 0, array, start, oldLength);
@@ -1717,14 +1759,14 @@ UnicodeString::padLeading(int32_t targetLength,
UBool
UnicodeString::padTrailing(int32_t targetLength,
- UChar padChar)
+ char16_t padChar)
{
int32_t oldLength = length();
if(oldLength >= targetLength || !cloneArrayIfNeeded(targetLength)) {
return false;
} else {
// fill in padding character
- UChar *array = getArrayStart();
+ char16_t *array = getArrayStart();
int32_t length = targetLength;
while(--length >= oldLength) {
array[length] = padChar;
@@ -1741,7 +1783,7 @@ int32_t
UnicodeString::doHashCode() const
{
/* Delegate hash computation to uhash. This makes UnicodeString
- * hashing consistent with UChar* hashing. */
+ * hashing consistent with char16_t* hashing. */
int32_t hashCode = ustr_hashUCharsN(getArrayStart(), length());
if (hashCode == kInvalidHashCode) {
hashCode = kEmptyHashCode;
@@ -1771,7 +1813,7 @@ UnicodeString::releaseBuffer(int32_t newLength) {
int32_t capacity=getCapacity();
if(newLength==-1) {
// the new length is the string length, capped by fCapacity
- const UChar *array=getArrayStart(), *p=array, *limit=array+capacity;
+ const char16_t *array=getArrayStart(), *p=array, *limit=array+capacity;
while(p<limit && *p!=0) {
++p;
}
@@ -1826,8 +1868,8 @@ UnicodeString::cloneArrayIfNeeded(int32_t newCapacity,
}
// save old values
- UChar oldStackBuffer[US_STACKBUF_SIZE];
- UChar *oldArray;
+ char16_t oldStackBuffer[US_STACKBUF_SIZE];
+ char16_t *oldArray;
int32_t oldLength = length();
int16_t flags = fUnion.fFields.fLengthAndFlags;
@@ -1839,11 +1881,11 @@ UnicodeString::cloneArrayIfNeeded(int32_t newCapacity,
us_arrayCopy(fUnion.fStackFields.fBuffer, 0, oldStackBuffer, 0, oldLength);
oldArray = oldStackBuffer;
} else {
- oldArray = NULL; // no need to copy from the stack buffer to itself
+ oldArray = nullptr; // no need to copy from the stack buffer to itself
}
} else {
oldArray = fUnion.fFields.fArray;
- U_ASSERT(oldArray!=NULL); /* when stack buffer is not used, oldArray must have a non-NULL reference */
+ U_ASSERT(oldArray!=nullptr); /* when stack buffer is not used, oldArray must have a non-nullptr reference */
}
// allocate a new array
@@ -1858,7 +1900,7 @@ UnicodeString::cloneArrayIfNeeded(int32_t newCapacity,
if(newCapacity < minLength) {
minLength = newCapacity;
}
- if(oldArray != NULL) {
+ if(oldArray != nullptr) {
us_arrayCopy(oldArray, 0, getArrayStart(), 0, minLength);
}
setLength(minLength);
@@ -1901,13 +1943,13 @@ UnicodeString::cloneArrayIfNeeded(int32_t newCapacity,
UnicodeStringAppendable::~UnicodeStringAppendable() {}
UBool
-UnicodeStringAppendable::appendCodeUnit(UChar c) {
+UnicodeStringAppendable::appendCodeUnit(char16_t c) {
return str.doAppend(&c, 0, 1).isWritable();
}
UBool
UnicodeStringAppendable::appendCodePoint(UChar32 c) {
- UChar buffer[U16_MAX_LENGTH];
+ char16_t buffer[U16_MAX_LENGTH];
int32_t cLength = 0;
UBool isError = false;
U16_APPEND(buffer, cLength, U16_MAX_LENGTH, c, isError);
@@ -1915,7 +1957,7 @@ UnicodeStringAppendable::appendCodePoint(UChar32 c) {
}
UBool
-UnicodeStringAppendable::appendString(const UChar *s, int32_t length) {
+UnicodeStringAppendable::appendString(const char16_t *s, int32_t length) {
return str.doAppend(s, 0, length).isWritable();
}
@@ -1924,14 +1966,14 @@ UnicodeStringAppendable::reserveAppendCapacity(int32_t appendCapacity) {
return str.cloneArrayIfNeeded(str.length() + appendCapacity);
}
-UChar *
+char16_t *
UnicodeStringAppendable::getAppendBuffer(int32_t minCapacity,
int32_t desiredCapacityHint,
- UChar *scratch, int32_t scratchCapacity,
+ char16_t *scratch, int32_t scratchCapacity,
int32_t *resultCapacity) {
if(minCapacity < 1 || scratchCapacity < minCapacity) {
*resultCapacity = 0;
- return NULL;
+ return nullptr;
}
int32_t oldLength = str.length();
if(minCapacity <= (kMaxCapacity - oldLength) &&
@@ -1951,7 +1993,7 @@ U_NAMESPACE_USE
U_CAPI int32_t U_EXPORT2
uhash_hashUnicodeString(const UElement key) {
const UnicodeString *str = (const UnicodeString*) key.pointer;
- return (str == NULL) ? 0 : str->hashCode();
+ return (str == nullptr) ? 0 : str->hashCode();
}
// Moved here from uhash_us.cpp so that using a UVector of UnicodeString*
@@ -1963,7 +2005,7 @@ uhash_compareUnicodeString(const UElement key1, const UElement key2) {
if (str1 == str2) {
return true;
}
- if (str1 == NULL || str2 == NULL) {
+ if (str1 == nullptr || str2 == nullptr) {
return false;
}
return *str1 == *str2;
@@ -1980,7 +2022,7 @@ This makes sure that static library dependencies are kept to a minimum.
#if defined(__clang__) || U_GCC_MAJOR_MINOR >= 1100
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-function"
-static void uprv_UnicodeStringDummy(void) {
+static void uprv_UnicodeStringDummy() {
delete [] (new UnicodeString[2]);
}
#pragma GCC diagnostic pop
diff --git a/Build/source/libs/icu/icu-src/source/common/unistr_case.cpp b/Build/source/libs/icu/icu-src/source/common/unistr_case.cpp
index f4c43b4889f..57f307c203a 100644
--- a/Build/source/libs/icu/icu-src/source/common/unistr_case.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/unistr_case.cpp
@@ -41,13 +41,13 @@ U_NAMESPACE_BEGIN
int8_t
UnicodeString::doCaseCompare(int32_t start,
int32_t length,
- const UChar *srcChars,
+ const char16_t *srcChars,
int32_t srcStart,
int32_t srcLength,
uint32_t options) const
{
// compare illegal string values
- // treat const UChar *srcChars==NULL as an empty string
+ // treat const char16_t *srcChars==nullptr as an empty string
if(isBogus()) {
return -1;
}
@@ -55,12 +55,12 @@ UnicodeString::doCaseCompare(int32_t start,
// pin indices to legal values
pinIndices(start, length);
- if(srcChars == NULL) {
+ if(srcChars == nullptr) {
srcStart = srcLength = 0;
}
// get the correct pointer
- const UChar *chars = getArrayStart();
+ const char16_t *chars = getArrayStart();
chars += start;
if(srcStart!=0) {
@@ -98,8 +98,8 @@ UnicodeString::caseMap(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITER
return *this;
}
- UChar oldBuffer[2 * US_STACKBUF_SIZE];
- UChar *oldArray;
+ char16_t oldBuffer[2 * US_STACKBUF_SIZE];
+ char16_t *oldArray;
int32_t oldLength = length();
int32_t newLength;
UBool writable = isBufferWritable();
@@ -115,7 +115,7 @@ UnicodeString::caseMap(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITER
if (writable ? oldLength <= UPRV_LENGTHOF(oldBuffer) : oldLength < US_STACKBUF_SIZE) {
// Short string: Copy the contents into a temporary buffer and
// case-map back into the current array, or into the stack buffer.
- UChar *buffer = getArrayStart();
+ char16_t *buffer = getArrayStart();
int32_t capacity;
oldArray = oldBuffer;
u_memcpy(oldBuffer, buffer, oldLength);
@@ -138,7 +138,7 @@ UnicodeString::caseMap(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITER
#endif
newLength = stringCaseMapper(caseLocale, options, UCASEMAP_BREAK_ITERATOR
buffer, capacity,
- oldArray, oldLength, NULL, errorCode);
+ oldArray, oldLength, nullptr, errorCode);
if (U_SUCCESS(errorCode)) {
setLength(newLength);
return *this;
@@ -155,7 +155,7 @@ UnicodeString::caseMap(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITER
// and often does not change its length.
oldArray = getArrayStart();
Edits edits;
- UChar replacementChars[200];
+ char16_t replacementChars[200];
#if !UCONFIG_NO_BREAK_ITERATION
if (iter != nullptr) {
oldString.setTo(false, oldArray, oldLength);
@@ -201,7 +201,7 @@ UnicodeString::caseMap(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITER
// No need to iter->setText() again: The case mapper restarts via iter->first().
newLength = stringCaseMapper(caseLocale, options, UCASEMAP_BREAK_ITERATOR
getArrayStart(), getCapacity(),
- oldArray, oldLength, NULL, errorCode);
+ oldArray, oldLength, nullptr, errorCode);
if (bufferToDelete) {
uprv_free(bufferToDelete);
}
@@ -225,7 +225,7 @@ U_CAPI int32_t U_EXPORT2
uhash_hashCaselessUnicodeString(const UElement key) {
U_NAMESPACE_USE
const UnicodeString *str = (const UnicodeString*) key.pointer;
- if (str == NULL) {
+ if (str == nullptr) {
return 0;
}
// Inefficient; a better way would be to have a hash function in
@@ -243,7 +243,7 @@ uhash_compareCaselessUnicodeString(const UElement key1, const UElement key2) {
if (str1 == str2) {
return true;
}
- if (str1 == NULL || str2 == NULL) {
+ if (str1 == nullptr || str2 == nullptr) {
return false;
}
return str1->caseCompare(*str2, U_FOLD_CASE_DEFAULT) == 0;
diff --git a/Build/source/libs/icu/icu-src/source/common/unistr_case_locale.cpp b/Build/source/libs/icu/icu-src/source/common/unistr_case_locale.cpp
index f0f3048d06f..8b6a9ca0ca5 100644
--- a/Build/source/libs/icu/icu-src/source/common/unistr_case_locale.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/unistr_case_locale.cpp
@@ -31,7 +31,7 @@ U_NAMESPACE_BEGIN
UnicodeString &
UnicodeString::toLower() {
- return caseMap(ustrcase_getCaseLocale(NULL), 0,
+ return caseMap(ustrcase_getCaseLocale(nullptr), 0,
UCASEMAP_BREAK_ITERATOR_NULL ustrcase_internalToLower);
}
@@ -43,7 +43,7 @@ UnicodeString::toLower(const Locale &locale) {
UnicodeString &
UnicodeString::toUpper() {
- return caseMap(ustrcase_getCaseLocale(NULL), 0,
+ return caseMap(ustrcase_getCaseLocale(nullptr), 0,
UCASEMAP_BREAK_ITERATOR_NULL ustrcase_internalToUpper);
}
diff --git a/Build/source/libs/icu/icu-src/source/common/unistr_cnv.cpp b/Build/source/libs/icu/icu-src/source/common/unistr_cnv.cpp
index e1f60d4487a..2d649b2d511 100644
--- a/Build/source/libs/icu/icu-src/source/common/unistr_cnv.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/unistr_cnv.cpp
@@ -82,7 +82,7 @@ UnicodeString::UnicodeString(const char *src, int32_t srcLength,
fUnion.fFields.fLengthAndFlags = kShortString;
if(U_SUCCESS(errorCode)) {
// check arguments
- if(src==NULL) {
+ if(src==nullptr) {
// treat as an empty string, do nothing more
} else if(srcLength<-1) {
errorCode=U_ILLEGAL_ARGUMENT_ERROR;
@@ -259,7 +259,7 @@ UnicodeString::doExtract(int32_t start, int32_t length,
return 0;
}
- const UChar *src=getArrayStart()+start, *srcLimit=src+length;
+ const char16_t *src=getArrayStart()+start, *srcLimit=src+length;
char *originalDest=dest;
const char *destLimit;
@@ -366,7 +366,7 @@ UnicodeString::doCodepageCreate(const char *codepageData,
// set up the conversion parameters
const char *mySource = codepageData;
const char *mySourceEnd = mySource + dataLength;
- UChar *array, *myTarget;
+ char16_t *array, *myTarget;
// estimate the size needed:
int32_t arraySize;
@@ -374,7 +374,7 @@ UnicodeString::doCodepageCreate(const char *codepageData,
// try to use the stack buffer
arraySize = US_STACKBUF_SIZE;
} else {
- // 1.25 UChar's per source byte should cover most cases
+ // 1.25 char16_t's per source byte should cover most cases
arraySize = dataLength + (dataLength >> 2);
}
@@ -404,7 +404,7 @@ UnicodeString::doCodepageCreate(const char *codepageData,
doCopyArray = true;
// estimate the new size needed, larger than before
- // try 2 UChar's per remaining source byte
+ // try 2 char16_t's per remaining source byte
arraySize = (int32_t)(length() + 2 * (mySourceEnd - mySource));
} else {
break;
diff --git a/Build/source/libs/icu/icu-src/source/common/unistr_props.cpp b/Build/source/libs/icu/icu-src/source/common/unistr_props.cpp
index 40064757902..3d05233bb9a 100644
--- a/Build/source/libs/icu/icu-src/source/common/unistr_props.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/unistr_props.cpp
@@ -32,7 +32,7 @@ UnicodeString::trim()
return *this;
}
- UChar *array = getArrayStart();
+ char16_t *array = getArrayStart();
UChar32 c;
int32_t oldLength = this->length();
int32_t i = oldLength, length;
diff --git a/Build/source/libs/icu/icu-src/source/common/unistrappender.h b/Build/source/libs/icu/icu-src/source/common/unistrappender.h
index 75fcb9e775f..ac49b5f2f96 100644
--- a/Build/source/libs/icu/icu-src/source/common/unistrappender.h
+++ b/Build/source/libs/icu/icu-src/source/common/unistrappender.h
@@ -31,7 +31,7 @@ U_NAMESPACE_BEGIN
* {
* UnicodeStringAppender appender(astring);
* for (int32_t i = 0; i < 100; ++i) {
- * appender.append((UChar) i);
+ * appender.append((char16_t) i);
* }
* // appender flushed automatically when it goes out of scope.
* }
@@ -45,7 +45,7 @@ public:
*/
UnicodeStringAppender(UnicodeString &dest) : fDest(&dest), fIdx(0) { }
- inline void append(UChar x) {
+ inline void append(char16_t x) {
if (fIdx == UPRV_LENGTHOF(fBuffer)) {
fDest->append(fBuffer, 0, fIdx);
fIdx = 0;
@@ -80,7 +80,7 @@ public:
private:
UnicodeString *fDest;
int32_t fIdx;
- UChar fBuffer[32];
+ char16_t fBuffer[32];
UnicodeStringAppender(const UnicodeStringAppender &other);
UnicodeStringAppender &operator=(const UnicodeStringAppender &other);
};
diff --git a/Build/source/libs/icu/icu-src/source/common/unorm.cpp b/Build/source/libs/icu/icu-src/source/common/unorm.cpp
index cf3915c27f3..f2ef7fa6648 100644
--- a/Build/source/libs/icu/icu-src/source/common/unorm.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/unorm.cpp
@@ -44,7 +44,7 @@ U_NAMESPACE_USE
/* quick check functions ---------------------------------------------------- */
U_CAPI UNormalizationCheckResult U_EXPORT2
-unorm_quickCheck(const UChar *src,
+unorm_quickCheck(const char16_t *src,
int32_t srcLength,
UNormalizationMode mode,
UErrorCode *pErrorCode) {
@@ -53,7 +53,7 @@ unorm_quickCheck(const UChar *src,
}
U_CAPI UNormalizationCheckResult U_EXPORT2
-unorm_quickCheckWithOptions(const UChar *src, int32_t srcLength,
+unorm_quickCheckWithOptions(const char16_t *src, int32_t srcLength,
UNormalizationMode mode, int32_t options,
UErrorCode *pErrorCode) {
const Normalizer2 *n2=Normalizer2Factory::getInstance(mode, *pErrorCode);
@@ -68,7 +68,7 @@ unorm_quickCheckWithOptions(const UChar *src, int32_t srcLength,
}
U_CAPI UBool U_EXPORT2
-unorm_isNormalized(const UChar *src, int32_t srcLength,
+unorm_isNormalized(const char16_t *src, int32_t srcLength,
UNormalizationMode mode,
UErrorCode *pErrorCode) {
const Normalizer2 *n2=Normalizer2Factory::getInstance(mode, *pErrorCode);
@@ -76,7 +76,7 @@ unorm_isNormalized(const UChar *src, int32_t srcLength,
}
U_CAPI UBool U_EXPORT2
-unorm_isNormalizedWithOptions(const UChar *src, int32_t srcLength,
+unorm_isNormalizedWithOptions(const char16_t *src, int32_t srcLength,
UNormalizationMode mode, int32_t options,
UErrorCode *pErrorCode) {
const Normalizer2 *n2=Normalizer2Factory::getInstance(mode, *pErrorCode);
@@ -94,9 +94,9 @@ unorm_isNormalizedWithOptions(const UChar *src, int32_t srcLength,
/** Public API for normalizing. */
U_CAPI int32_t U_EXPORT2
-unorm_normalize(const UChar *src, int32_t srcLength,
+unorm_normalize(const char16_t *src, int32_t srcLength,
UNormalizationMode mode, int32_t options,
- UChar *dest, int32_t destCapacity,
+ char16_t *dest, int32_t destCapacity,
UErrorCode *pErrorCode) {
const Normalizer2 *n2=Normalizer2Factory::getInstance(mode, *pErrorCode);
if(options&UNORM_UNICODE_3_2) {
@@ -115,19 +115,19 @@ unorm_normalize(const UChar *src, int32_t srcLength,
static int32_t
_iterate(UCharIterator *src, UBool forward,
- UChar *dest, int32_t destCapacity,
+ char16_t *dest, int32_t destCapacity,
const Normalizer2 *n2,
UBool doNormalize, UBool *pNeededToNormalize,
UErrorCode *pErrorCode) {
if(U_FAILURE(*pErrorCode)) {
return 0;
}
- if(destCapacity<0 || (dest==NULL && destCapacity>0) || src==NULL) {
+ if(destCapacity<0 || (dest==nullptr && destCapacity>0) || src==nullptr) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
- if(pNeededToNormalize!=NULL) {
+ if(pNeededToNormalize!=nullptr) {
*pNeededToNormalize=false;
}
if(!(forward ? src->hasNext(src) : src->hasPrevious(src))) {
@@ -163,7 +163,7 @@ _iterate(UCharIterator *src, UBool forward,
UnicodeString destString(dest, 0, destCapacity);
if(buffer.length()>0 && doNormalize) {
n2->normalize(buffer, destString, *pErrorCode).extract(dest, destCapacity, *pErrorCode);
- if(pNeededToNormalize!=NULL && U_SUCCESS(*pErrorCode)) {
+ if(pNeededToNormalize!=nullptr && U_SUCCESS(*pErrorCode)) {
*pNeededToNormalize= destString!=buffer;
}
return destString.length();
@@ -175,7 +175,7 @@ _iterate(UCharIterator *src, UBool forward,
static int32_t
unorm_iterate(UCharIterator *src, UBool forward,
- UChar *dest, int32_t destCapacity,
+ char16_t *dest, int32_t destCapacity,
UNormalizationMode mode, int32_t options,
UBool doNormalize, UBool *pNeededToNormalize,
UErrorCode *pErrorCode) {
@@ -195,7 +195,7 @@ unorm_iterate(UCharIterator *src, UBool forward,
U_CAPI int32_t U_EXPORT2
unorm_previous(UCharIterator *src,
- UChar *dest, int32_t destCapacity,
+ char16_t *dest, int32_t destCapacity,
UNormalizationMode mode, int32_t options,
UBool doNormalize, UBool *pNeededToNormalize,
UErrorCode *pErrorCode) {
@@ -208,7 +208,7 @@ unorm_previous(UCharIterator *src,
U_CAPI int32_t U_EXPORT2
unorm_next(UCharIterator *src,
- UChar *dest, int32_t destCapacity,
+ char16_t *dest, int32_t destCapacity,
UNormalizationMode mode, int32_t options,
UBool doNormalize, UBool *pNeededToNormalize,
UErrorCode *pErrorCode) {
@@ -222,22 +222,22 @@ unorm_next(UCharIterator *src,
/* Concatenation of normalized strings -------------------------------------- */
static int32_t
-_concatenate(const UChar *left, int32_t leftLength,
- const UChar *right, int32_t rightLength,
- UChar *dest, int32_t destCapacity,
+_concatenate(const char16_t *left, int32_t leftLength,
+ const char16_t *right, int32_t rightLength,
+ char16_t *dest, int32_t destCapacity,
const Normalizer2 *n2,
UErrorCode *pErrorCode) {
if(U_FAILURE(*pErrorCode)) {
return 0;
}
- if(destCapacity<0 || (dest==NULL && destCapacity>0) ||
- left==NULL || leftLength<-1 || right==NULL || rightLength<-1) {
+ if(destCapacity<0 || (dest==nullptr && destCapacity>0) ||
+ left==nullptr || leftLength<-1 || right==nullptr || rightLength<-1) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
/* check for overlapping right and destination */
- if( dest!=NULL &&
+ if( dest!=nullptr &&
((right>=dest && right<(dest+destCapacity)) ||
(rightLength>0 && dest>=right && dest<(right+rightLength)))
) {
@@ -258,9 +258,9 @@ _concatenate(const UChar *left, int32_t leftLength,
}
U_CAPI int32_t U_EXPORT2
-unorm_concatenate(const UChar *left, int32_t leftLength,
- const UChar *right, int32_t rightLength,
- UChar *dest, int32_t destCapacity,
+unorm_concatenate(const char16_t *left, int32_t leftLength,
+ const char16_t *right, int32_t rightLength,
+ char16_t *dest, int32_t destCapacity,
UNormalizationMode mode, int32_t options,
UErrorCode *pErrorCode) {
const Normalizer2 *n2=Normalizer2Factory::getInstance(mode, *pErrorCode);
diff --git a/Build/source/libs/icu/icu-src/source/common/unormcmp.cpp b/Build/source/libs/icu/icu-src/source/common/unormcmp.cpp
index e2241909725..e11e716c8db 100644
--- a/Build/source/libs/icu/icu-src/source/common/unormcmp.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/unormcmp.cpp
@@ -128,7 +128,7 @@ U_NAMESPACE_USE
/* stack element for previous-level source/decomposition pointers */
struct CmpEquivLevel {
- const UChar *start, *s, *limit;
+ const char16_t *start, *s, *limit;
};
typedef struct CmpEquivLevel CmpEquivLevel;
@@ -140,27 +140,27 @@ typedef struct CmpEquivLevel CmpEquivLevel;
/* internal function */
static int32_t
-unorm_cmpEquivFold(const UChar *s1, int32_t length1,
- const UChar *s2, int32_t length2,
+unorm_cmpEquivFold(const char16_t *s1, int32_t length1,
+ const char16_t *s2, int32_t length2,
uint32_t options,
UErrorCode *pErrorCode) {
const Normalizer2Impl *nfcImpl;
/* current-level start/limit - s1/s2 as current */
- const UChar *start1, *start2, *limit1, *limit2;
+ const char16_t *start1, *start2, *limit1, *limit2;
/* decomposition and case folding variables */
- const UChar *p;
+ const char16_t *p;
int32_t length;
/* stacks of previous-level start/current/limit */
CmpEquivLevel stack1[2], stack2[2];
/* buffers for algorithmic decompositions */
- UChar decomp1[4], decomp2[4];
+ char16_t decomp1[4], decomp2[4];
/* case folding buffers, only use current-level start/limit */
- UChar fold1[UCASE_MAX_STRING_LENGTH+1], fold2[UCASE_MAX_STRING_LENGTH+1];
+ char16_t fold1[UCASE_MAX_STRING_LENGTH+1], fold2[UCASE_MAX_STRING_LENGTH+1];
/* track which is the current level per string */
int32_t level1, level2;
@@ -180,7 +180,7 @@ unorm_cmpEquivFold(const UChar *s1, int32_t length1,
if((options&_COMPARE_EQUIV)!=0) {
nfcImpl=Normalizer2Factory::getNFCImpl(*pErrorCode);
} else {
- nfcImpl=NULL;
+ nfcImpl=nullptr;
}
if(U_FAILURE(*pErrorCode)) {
return 0;
@@ -189,14 +189,14 @@ unorm_cmpEquivFold(const UChar *s1, int32_t length1,
/* initialize */
start1=s1;
if(length1==-1) {
- limit1=NULL;
+ limit1=nullptr;
} else {
limit1=s1+length1;
}
start2=s2;
if(length2==-1) {
- limit2=NULL;
+ limit2=nullptr;
} else {
limit2=s2+length2;
}
@@ -214,7 +214,7 @@ unorm_cmpEquivFold(const UChar *s1, int32_t length1,
if(c1<0) {
/* get next code unit from string 1, post-increment */
for(;;) {
- if(s1==limit1 || ((c1=*s1)==0 && (limit1==NULL || (options&_STRNCMP_STYLE)))) {
+ if(s1==limit1 || ((c1=*s1)==0 && (limit1==nullptr || (options&_STRNCMP_STYLE)))) {
if(level1==0) {
c1=-1;
break;
@@ -228,7 +228,7 @@ unorm_cmpEquivFold(const UChar *s1, int32_t length1,
do {
--level1;
start1=stack1[level1].start; /*Not uninitialized*/
- } while(start1==NULL);
+ } while(start1==nullptr);
s1=stack1[level1].s; /*Not uninitialized*/
limit1=stack1[level1].limit; /*Not uninitialized*/
}
@@ -237,7 +237,7 @@ unorm_cmpEquivFold(const UChar *s1, int32_t length1,
if(c2<0) {
/* get next code unit from string 2, post-increment */
for(;;) {
- if(s2==limit2 || ((c2=*s2)==0 && (limit2==NULL || (options&_STRNCMP_STYLE)))) {
+ if(s2==limit2 || ((c2=*s2)==0 && (limit2==nullptr || (options&_STRNCMP_STYLE)))) {
if(level2==0) {
c2=-1;
break;
@@ -251,7 +251,7 @@ unorm_cmpEquivFold(const UChar *s1, int32_t length1,
do {
--level2;
start2=stack2[level2].start; /*Not uninitialized*/
- } while(start2==NULL);
+ } while(start2==nullptr);
s2=stack2[level2].s; /*Not uninitialized*/
limit2=stack2[level2].limit; /*Not uninitialized*/
}
@@ -277,7 +277,7 @@ unorm_cmpEquivFold(const UChar *s1, int32_t length1,
/* get complete code points for c1, c2 for lookups if either is a surrogate */
cp1=c1;
if(U_IS_SURROGATE(c1)) {
- UChar c;
+ char16_t c;
if(U_IS_SURROGATE_LEAD(c1)) {
if(s1!=limit1 && U16_IS_TRAIL(c=*s1)) {
@@ -293,7 +293,7 @@ unorm_cmpEquivFold(const UChar *s1, int32_t length1,
cp2=c2;
if(U_IS_SURROGATE(c2)) {
- UChar c;
+ char16_t c;
if(U_IS_SURROGATE_LEAD(c2)) {
if(s2!=limit2 && U16_IS_TRAIL(c=*s2)) {
@@ -431,7 +431,7 @@ unorm_cmpEquivFold(const UChar *s1, int32_t length1,
/* set empty intermediate level if skipped */
if(level1<2) {
- stack1[level1++].start=NULL;
+ stack1[level1++].start=nullptr;
}
/* set next level pointers to decomposition */
@@ -472,7 +472,7 @@ unorm_cmpEquivFold(const UChar *s1, int32_t length1,
/* set empty intermediate level if skipped */
if(level2<2) {
- stack2[level2++].start=NULL;
+ stack2[level2++].start=nullptr;
}
/* set next level pointers to decomposition */
@@ -529,7 +529,7 @@ unorm_cmpEquivFold(const UChar *s1, int32_t length1,
}
static
-UBool _normalize(const Normalizer2 *n2, const UChar *s, int32_t length,
+UBool _normalize(const Normalizer2 *n2, const char16_t *s, int32_t length,
UnicodeString &normalized, UErrorCode *pErrorCode) {
UnicodeString str(length<0, s, length);
@@ -558,8 +558,8 @@ UBool _normalize(const Normalizer2 *n2, const UChar *s, int32_t length,
}
U_CAPI int32_t U_EXPORT2
-unorm_compare(const UChar *s1, int32_t length1,
- const UChar *s2, int32_t length2,
+unorm_compare(const char16_t *s1, int32_t length1,
+ const char16_t *s2, int32_t length2,
uint32_t options,
UErrorCode *pErrorCode) {
/* argument checking */
diff --git a/Build/source/libs/icu/icu-src/source/common/unormimp.h b/Build/source/libs/icu/icu-src/source/common/unormimp.h
index d2604adb4a9..f107eac67f1 100644
--- a/Build/source/libs/icu/icu-src/source/common/unormimp.h
+++ b/Build/source/libs/icu/icu-src/source/common/unormimp.h
@@ -388,7 +388,7 @@ enum {
*
* Strings are either stored as a single code unit or as the length
* followed by that many units.
- * const UChar *s=extraData+(index from auxTrie data bits 9..0);
+ * const char16_t *s=extraData+(index from auxTrie data bits 9..0);
* int32_t length;
* if(*s<0xff00) {
* // s points to the single-unit string
diff --git a/Build/source/libs/icu/icu-src/source/common/uobject.cpp b/Build/source/libs/icu/icu-src/source/common/uobject.cpp
index e222b2ce9b9..c9e435ceca1 100644
--- a/Build/source/libs/icu/icu-src/source/common/uobject.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/uobject.cpp
@@ -58,32 +58,32 @@ U_NAMESPACE_BEGIN
* and replace with uprv_malloc/uprv_free.
*/
-void * U_EXPORT2 UMemory::operator new(size_t size) U_NOEXCEPT {
+void * U_EXPORT2 UMemory::operator new(size_t size) noexcept {
return uprv_malloc(size);
}
-void U_EXPORT2 UMemory::operator delete(void *p) U_NOEXCEPT {
- if(p!=NULL) {
+void U_EXPORT2 UMemory::operator delete(void *p) noexcept {
+ if(p!=nullptr) {
uprv_free(p);
}
}
-void * U_EXPORT2 UMemory::operator new[](size_t size) U_NOEXCEPT {
+void * U_EXPORT2 UMemory::operator new[](size_t size) noexcept {
return uprv_malloc(size);
}
-void U_EXPORT2 UMemory::operator delete[](void *p) U_NOEXCEPT {
- if(p!=NULL) {
+void U_EXPORT2 UMemory::operator delete[](void *p) noexcept {
+ if(p!=nullptr) {
uprv_free(p);
}
}
#if U_HAVE_DEBUG_LOCATION_NEW
-void * U_EXPORT2 UMemory::operator new(size_t size, const char* /*file*/, int /*line*/) U_NOEXCEPT {
+void * U_EXPORT2 UMemory::operator new(size_t size, const char* /*file*/, int /*line*/) noexcept {
return UMemory::operator new(size);
}
-void U_EXPORT2 UMemory::operator delete(void* p, const char* /*file*/, int /*line*/) U_NOEXCEPT {
+void U_EXPORT2 UMemory::operator delete(void* p, const char* /*file*/, int /*line*/) noexcept {
UMemory::operator delete(p);
}
#endif /* U_HAVE_DEBUG_LOCATION_NEW */
@@ -93,7 +93,7 @@ void U_EXPORT2 UMemory::operator delete(void* p, const char* /*file*/, int /*lin
UObject::~UObject() {}
-UClassID UObject::getDynamicClassID() const { return NULL; }
+UClassID UObject::getDynamicClassID() const { return nullptr; }
U_NAMESPACE_END
diff --git a/Build/source/libs/icu/icu-src/source/common/uposixdefs.h b/Build/source/libs/icu/icu-src/source/common/uposixdefs.h
index 6af520bf9f1..3f162c33755 100644
--- a/Build/source/libs/icu/icu-src/source/common/uposixdefs.h
+++ b/Build/source/libs/icu/icu-src/source/common/uposixdefs.h
@@ -48,7 +48,7 @@
#endif
/*
- * Make sure things like readlink and such functions work.
+ * Make sure things like realpath and such functions work.
* Poorly upgraded Solaris machines can't have this defined.
* Cleanly installed Solaris can use this #define.
*
diff --git a/Build/source/libs/icu/icu-src/source/common/uprops.cpp b/Build/source/libs/icu/icu-src/source/common/uprops.cpp
index 26e950b876b..314fa6fb868 100644
--- a/Build/source/libs/icu/icu-src/source/common/uprops.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/uprops.cpp
@@ -241,11 +241,11 @@ static UBool changesWhenCasefolded(const BinaryProperty &/*prop*/, UChar32 c, UP
}
if(c>=0) {
/* single code point */
- const UChar *resultString;
+ const char16_t *resultString;
return (UBool)(ucase_toFullFolding(c, &resultString, U_FOLD_CASE_DEFAULT)>=0);
} else {
/* guess some large but stack-friendly capacity */
- UChar dest[2*UCASE_MAX_STRING_LENGTH];
+ char16_t dest[2*UCASE_MAX_STRING_LENGTH];
int32_t destLength;
destLength=u_strFoldCase(dest, UPRV_LENGTHOF(dest),
nfd.getBuffer(), nfd.length(),
@@ -276,7 +276,7 @@ static UBool changesWhenNFKC_Casefolded(const BinaryProperty &/*prop*/, UChar32
ReorderingBuffer buffer(*kcf, dest);
// Small destCapacity for NFKC_CF(c).
if(buffer.init(5, errorCode)) {
- const UChar *srcArray=src.getBuffer();
+ const char16_t *srcArray=src.getBuffer();
kcf->compose(srcArray, srcArray+src.length(), false,
true, buffer, errorCode);
}
@@ -328,6 +328,53 @@ static UBool hasEmojiProperty(const BinaryProperty &/*prop*/, UChar32 c, UProper
return EmojiProps::hasBinaryProperty(c, which);
}
+static UBool isIDSUnaryOperator(const BinaryProperty &/*prop*/, UChar32 c, UProperty /*which*/) {
+ // New in Unicode 15.1 for just two characters.
+ return 0x2FFE<=c && c<=0x2FFF;
+}
+
+/** Ranges (start/limit pairs) of ID_Compat_Math_Continue (only), from UCD PropList.txt. */
+static constexpr UChar32 ID_COMPAT_MATH_CONTINUE[] = {
+ 0x00B2, 0x00B3 + 1,
+ 0x00B9, 0x00B9 + 1,
+ 0x2070, 0x2070 + 1,
+ 0x2074, 0x207E + 1,
+ 0x2080, 0x208E + 1
+};
+
+/** ID_Compat_Math_Start characters, from UCD PropList.txt. */
+static constexpr UChar32 ID_COMPAT_MATH_START[] = {
+ 0x2202,
+ 0x2207,
+ 0x221E,
+ 0x1D6C1,
+ 0x1D6DB,
+ 0x1D6FB,
+ 0x1D715,
+ 0x1D735,
+ 0x1D74F,
+ 0x1D76F,
+ 0x1D789,
+ 0x1D7A9,
+ 0x1D7C3
+};
+
+static UBool isIDCompatMathStart(const BinaryProperty &/*prop*/, UChar32 c, UProperty /*which*/) {
+ if (c < ID_COMPAT_MATH_START[0]) { return false; } // fastpath for common scripts
+ for (UChar32 startChar : ID_COMPAT_MATH_START) {
+ if (c == startChar) { return true; }
+ }
+ return false;
+}
+
+static UBool isIDCompatMathContinue(const BinaryProperty &prop, UChar32 c, UProperty /*which*/) {
+ for (int32_t i = 0; i < UPRV_LENGTHOF(ID_COMPAT_MATH_CONTINUE); i += 2) {
+ if (c < ID_COMPAT_MATH_CONTINUE[i]) { return false; } // below range start
+ if (c < ID_COMPAT_MATH_CONTINUE[i + 1]) { return true; } // below range limit
+ }
+ return isIDCompatMathStart(prop, c, UCHAR_ID_COMPAT_MATH_START);
+}
+
static const BinaryProperty binProps[UCHAR_BINARY_LIMIT]={
/*
* column and mask values for binary properties from u_getUnicodeProperties().
@@ -409,6 +456,9 @@ static const BinaryProperty binProps[UCHAR_BINARY_LIMIT]={
{ UPROPS_SRC_EMOJI, 0, hasEmojiProperty }, // UCHAR_RGI_EMOJI_TAG_SEQUENCE
{ UPROPS_SRC_EMOJI, 0, hasEmojiProperty }, // UCHAR_RGI_EMOJI_ZWJ_SEQUENCE
{ UPROPS_SRC_EMOJI, 0, hasEmojiProperty }, // UCHAR_RGI_EMOJI
+ { UPROPS_SRC_IDSU, 0, isIDSUnaryOperator }, // UCHAR_IDS_UNARY_OPERATOR
+ { UPROPS_SRC_ID_COMPAT_MATH, 0, isIDCompatMathStart }, // UCHAR_ID_COMPAT_MATH_START
+ { UPROPS_SRC_ID_COMPAT_MATH, 0, isIDCompatMathContinue }, // UCHAR_ID_COMPAT_MATH_CONTINUE
};
U_CAPI UBool U_EXPORT2
@@ -423,8 +473,21 @@ u_hasBinaryProperty(UChar32 c, UProperty which) {
}
}
+/* Checks if the Unicode character can start a Unicode identifier.*/
+U_CAPI UBool U_EXPORT2
+u_isIDStart(UChar32 c) {
+ return u_hasBinaryProperty(c, UCHAR_ID_START);
+}
+
+/* Checks if the Unicode character can be a Unicode identifier part other than starting the
+ identifier.*/
U_CAPI UBool U_EXPORT2
-u_stringHasBinaryProperty(const UChar *s, int32_t length, UProperty which) {
+u_isIDPart(UChar32 c) {
+ return u_hasBinaryProperty(c, UCHAR_ID_CONTINUE);
+}
+
+U_CAPI UBool U_EXPORT2
+u_stringHasBinaryProperty(const char16_t *s, int32_t length, UProperty which) {
if (s == nullptr && length != 0) { return false; }
if (length == 1) {
return u_hasBinaryProperty(s[0], which); // single code point
@@ -746,6 +809,19 @@ uprops_getSource(UProperty which) {
U_CFUNC void U_EXPORT2
uprops_addPropertyStarts(UPropertySource src, const USetAdder *sa, UErrorCode *pErrorCode) {
+ if (U_FAILURE(*pErrorCode)) { return; }
+ if (src == UPROPS_SRC_ID_COMPAT_MATH) {
+ // range limits
+ for (UChar32 c : ID_COMPAT_MATH_CONTINUE) {
+ sa->add(sa->set, c);
+ }
+ // single characters
+ for (UChar32 c : ID_COMPAT_MATH_START) {
+ sa->add(sa->set, c);
+ sa->add(sa->set, c + 1);
+ }
+ return;
+ }
if (!ulayout_ensureData(*pErrorCode)) { return; }
const UCPTrie *trie;
switch (src) {
@@ -780,11 +856,11 @@ uprops_addPropertyStarts(UPropertySource src, const USetAdder *sa, UErrorCode *p
#if !UCONFIG_NO_NORMALIZATION
U_CAPI int32_t U_EXPORT2
-u_getFC_NFKC_Closure(UChar32 c, UChar *dest, int32_t destCapacity, UErrorCode *pErrorCode) {
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+u_getFC_NFKC_Closure(UChar32 c, char16_t *dest, int32_t destCapacity, UErrorCode *pErrorCode) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return 0;
}
- if(destCapacity<0 || (dest==NULL && destCapacity>0)) {
+ if(destCapacity<0 || (dest==nullptr && destCapacity>0)) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -800,7 +876,7 @@ u_getFC_NFKC_Closure(UChar32 c, UChar *dest, int32_t destCapacity, UErrorCode *p
}
// first: b = NFKC(Fold(a))
UnicodeString folded1String;
- const UChar *folded1;
+ const char16_t *folded1;
int32_t folded1Length=ucase_toFullFolding(c, &folded1, U_FOLD_CASE_DEFAULT);
if(folded1Length<0) {
const Normalizer2Impl *nfkcImpl=Normalizer2Factory::getImpl(nfkc);
diff --git a/Build/source/libs/icu/icu-src/source/common/uprops.h b/Build/source/libs/icu/icu-src/source/common/uprops.h
index 2004394db64..80347eab577 100644
--- a/Build/source/libs/icu/icu-src/source/common/uprops.h
+++ b/Build/source/libs/icu/icu-src/source/common/uprops.h
@@ -379,6 +379,8 @@ enum UPropertySource {
UPROPS_SRC_INSC,
UPROPS_SRC_VO,
UPROPS_SRC_EMOJI,
+ UPROPS_SRC_IDSU,
+ UPROPS_SRC_ID_COMPAT_MATH,
/** One more than the highest UPropertySource (UPROPS_SRC_) constant. */
UPROPS_SRC_COUNT
};
@@ -441,6 +443,7 @@ class CharacterProperties {
public:
CharacterProperties() = delete;
static const UnicodeSet *getInclusionsForProperty(UProperty prop, UErrorCode &errorCode);
+ static const UnicodeSet *getBinaryPropertySet(UProperty property, UErrorCode &errorCode);
};
// implemented in uniset_props.cpp
diff --git a/Build/source/libs/icu/icu-src/source/common/ures_cnv.cpp b/Build/source/libs/icu/icu-src/source/common/ures_cnv.cpp
index 1aa58e753ce..0a2b1e912c6 100644
--- a/Build/source/libs/icu/icu-src/source/common/ures_cnv.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ures_cnv.cpp
@@ -27,7 +27,7 @@
#include "ustr_cnv.h"
U_CAPI UResourceBundle * U_EXPORT2
-ures_openU(const UChar *myPath,
+ures_openU(const char16_t *myPath,
const char *localeID,
UErrorCode *status)
{
@@ -35,17 +35,17 @@ ures_openU(const UChar *myPath,
int32_t length;
char *path = pathBuffer;
- if(status==NULL || U_FAILURE(*status)) {
- return NULL;
+ if(status==nullptr || U_FAILURE(*status)) {
+ return nullptr;
}
- if(myPath==NULL) {
- path = NULL;
+ if(myPath==nullptr) {
+ path = nullptr;
}
else {
length=u_strlen(myPath);
if(length>=(int32_t)sizeof(pathBuffer)) {
*status=U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
} else if(uprv_isInvariantUString(myPath, length)) {
/*
* the invariant converter is sufficient for package and tree names
@@ -59,17 +59,17 @@ ures_openU(const UChar *myPath,
length=ucnv_fromUChars(cnv, path, (int32_t)sizeof(pathBuffer), myPath, length, status);
u_releaseDefaultConverter(cnv);
if(U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
if(length>=(int32_t)sizeof(pathBuffer)) {
/* not NUL-terminated - path too long */
*status=U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
#else
/* the default converter is not available */
*status=U_UNSUPPORTED_ERROR;
- return NULL;
+ return nullptr;
#endif
}
}
diff --git a/Build/source/libs/icu/icu-src/source/common/uresbund.cpp b/Build/source/libs/icu/icu-src/source/common/uresbund.cpp
index 17c0177a05c..5aa1c5fa2f1 100644
--- a/Build/source/libs/icu/icu-src/source/common/uresbund.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/uresbund.cpp
@@ -24,6 +24,7 @@
#include "unicode/ures.h"
#include "unicode/ustring.h"
#include "unicode/ucnv.h"
+#include "bytesinkutil.h"
#include "charstr.h"
#include "uresimp.h"
#include "ustr_imp.h"
@@ -48,7 +49,7 @@ Static cache for already opened resource bundles - mostly for keeping fallback i
TODO: This cache should probably be removed when the deprecated code is
completely removed.
*/
-static UHashtable *cache = NULL;
+static UHashtable *cache = nullptr;
static icu::UInitOnce gCacheInitOnce {};
static UMutex resbMutex;
@@ -83,7 +84,7 @@ static UBool U_CALLCONV compareEntries(const UHashTok p1, const UHashTok p2) {
static UBool chopLocale(char *name) {
char *i = uprv_strrchr(name, '_');
- if(i != NULL) {
+ if(i != nullptr) {
*i = '\0';
return true;
}
@@ -93,7 +94,7 @@ static UBool chopLocale(char *name) {
static UBool hasVariant(const char* localeID) {
UErrorCode err = U_ZERO_ERROR;
- int32_t variantLength = uloc_getVariant(localeID, NULL, 0, &err);
+ int32_t variantLength = uloc_getVariant(localeID, nullptr, 0, &err);
return variantLength != 0;
}
@@ -202,7 +203,8 @@ typedef enum UResOpenType UResOpenType;
*/
static bool getParentLocaleID(char *name, const char *origName, UResOpenType openType) {
// early out if the locale ID has a variant code or ends with _
- if (name[uprv_strlen(name) - 1] == '_' || hasVariant(name)) {
+ size_t nameLen = uprv_strlen(name);
+ if (!nameLen || name[nameLen - 1] == '_' || hasVariant(name)) {
return chopLocale(name);
}
@@ -230,7 +232,7 @@ static bool getParentLocaleID(char *name, const char *origName, UResOpenType ope
// "Collation data, however, is an exception...")
if (openType == URES_OPEN_LOCALE_DEFAULT_ROOT) {
const char* parentID = performFallbackLookup(name, parentLocaleChars, parentLocaleChars, parentLocaleTable, UPRV_LENGTHOF(parentLocaleTable));
- if (parentID != NULL) {
+ if (parentID != nullptr) {
uprv_strcpy(name, parentID);
return true;
}
@@ -302,7 +304,7 @@ static UBool mayHaveParent(char *name) {
static void entryIncrease(UResourceDataEntry *entry) {
Mutex lock(&resbMutex);
entry->fCountExisting++;
- while(entry->fParent != NULL) {
+ while(entry->fParent != nullptr) {
entry = entry->fParent;
entry->fCountExisting++;
}
@@ -358,18 +360,18 @@ static void
free_entry(UResourceDataEntry *entry) {
UResourceDataEntry *alias;
res_unload(&(entry->fData));
- if(entry->fName != NULL && entry->fName != entry->fNameBuffer) {
+ if(entry->fName != nullptr && entry->fName != entry->fNameBuffer) {
uprv_free(entry->fName);
}
- if(entry->fPath != NULL) {
+ if(entry->fPath != nullptr) {
uprv_free(entry->fPath);
}
- if(entry->fPool != NULL) {
+ if(entry->fPool != nullptr) {
--entry->fPool->fCountExisting;
}
alias = entry->fAlias;
- if(alias != NULL) {
- while(alias->fAlias != NULL) {
+ if(alias != nullptr) {
+ while(alias->fAlias != nullptr) {
alias = alias->fAlias;
}
--alias->fCountExisting;
@@ -390,7 +392,7 @@ static int32_t ures_flushCache()
* return 0
*/
Mutex lock(&resbMutex);
- if (cache == NULL) {
+ if (cache == nullptr) {
return 0;
}
@@ -398,7 +400,7 @@ static int32_t ures_flushCache()
deletedMore = false;
/*creates an enumeration to iterate through every element in the table */
pos = UHASH_FIRST;
- while ((e = uhash_nextElement(cache, &pos)) != NULL)
+ while ((e = uhash_nextElement(cache, &pos)) != nullptr)
{
resB = (UResourceDataEntry *) e->value.pointer;
/* Deletes only if reference counter == 0
@@ -429,26 +431,26 @@ static int32_t ures_flushCache()
#ifdef URES_DEBUG
#include <stdio.h>
-U_CAPI UBool U_EXPORT2 ures_dumpCacheContents(void) {
+U_CAPI UBool U_EXPORT2 ures_dumpCacheContents() {
UBool cacheNotEmpty = false;
int32_t pos = UHASH_FIRST;
const UHashElement *e;
UResourceDataEntry *resB;
Mutex lock(&resbMutex);
- if (cache == NULL) {
- fprintf(stderr,"%s:%d: RB Cache is NULL.\n", __FILE__, __LINE__);
+ if (cache == nullptr) {
+ fprintf(stderr,"%s:%d: RB Cache is nullptr.\n", __FILE__, __LINE__);
return false;
}
- while ((e = uhash_nextElement(cache, &pos)) != NULL) {
+ while ((e = uhash_nextElement(cache, &pos)) != nullptr) {
cacheNotEmpty=true;
resB = (UResourceDataEntry *) e->value.pointer;
fprintf(stderr,"%s:%d: RB Cache: Entry @0x%p, refcount %d, name %s:%s. Pool 0x%p, alias 0x%p, parent 0x%p\n",
__FILE__, __LINE__,
(void*)resB, resB->fCountExisting,
- resB->fName?resB->fName:"NULL",
- resB->fPath?resB->fPath:"NULL",
+ resB->fName?resB->fName:"nullptr",
+ resB->fPath?resB->fPath:"nullptr",
(void*)resB->fPool,
(void*)resB->fAlias,
(void*)resB->fParent);
@@ -460,12 +462,12 @@ U_CAPI UBool U_EXPORT2 ures_dumpCacheContents(void) {
#endif
-static UBool U_CALLCONV ures_cleanup(void)
+static UBool U_CALLCONV ures_cleanup()
{
- if (cache != NULL) {
+ if (cache != nullptr) {
ures_flushCache();
uhash_close(cache);
- cache = NULL;
+ cache = nullptr;
}
gCacheInitOnce.reset();
return true;
@@ -473,8 +475,8 @@ static UBool U_CALLCONV ures_cleanup(void)
/** INTERNAL: Initializes the cache for resources */
static void U_CALLCONV createCache(UErrorCode &status) {
- U_ASSERT(cache == NULL);
- cache = uhash_open(hashEntry, compareEntries, NULL, &status);
+ U_ASSERT(cache == nullptr);
+ cache = uhash_open(hashEntry, compareEntries, nullptr, &status);
ucln_common_registerCleanup(UCLN_COMMON_URES, ures_cleanup);
}
@@ -486,7 +488,7 @@ static void initCache(UErrorCode *status) {
static void setEntryName(UResourceDataEntry *res, const char *name, UErrorCode *status) {
int32_t len = (int32_t)uprv_strlen(name);
- if(res->fName != NULL && res->fName != res->fNameBuffer) {
+ if(res->fName != nullptr && res->fName != res->fNameBuffer) {
uprv_free(res->fName);
}
if (len < (int32_t)sizeof(res->fNameBuffer)) {
@@ -495,7 +497,7 @@ static void setEntryName(UResourceDataEntry *res, const char *name, UErrorCode *
else {
res->fName = (char *)uprv_malloc(len+1);
}
- if(res->fName == NULL) {
+ if(res->fName == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
} else {
uprv_strcpy(res->fName, name);
@@ -510,7 +512,7 @@ getPoolEntry(const char *path, UErrorCode *status);
* CAUTION: resbMutex must be locked when calling this function.
*/
static UResourceDataEntry *init_entry(const char *localeID, const char *path, UErrorCode *status) {
- UResourceDataEntry *r = NULL;
+ UResourceDataEntry *r = nullptr;
UResourceDataEntry find;
/*int32_t hashValue;*/
const char *name;
@@ -520,11 +522,11 @@ static UResourceDataEntry *init_entry(const char *localeID, const char *path, UE
/*UHashTok hashkey; */
if(U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
/* here we try to deduce the right locale name */
- if(localeID == NULL) { /* if localeID is NULL, we're trying to open default locale */
+ if(localeID == nullptr) { /* if localeID is nullptr, we're trying to open default locale */
name = uloc_getDefault();
} else if(*localeID == 0) { /* if localeID is "" then we try to open root locale */
name = kRootLocaleName;
@@ -541,12 +543,12 @@ static UResourceDataEntry *init_entry(const char *localeID, const char *path, UE
/* check to see if we already have this entry */
r = (UResourceDataEntry *)uhash_get(cache, &find);
- if(r == NULL) {
+ if(r == nullptr) {
/* if the entry is not yet in the hash table, we'll try to construct a new one */
r = (UResourceDataEntry *) uprv_malloc(sizeof(UResourceDataEntry));
- if(r == NULL) {
+ if(r == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
uprv_memset(r, 0, sizeof(UResourceDataEntry));
@@ -555,15 +557,15 @@ static UResourceDataEntry *init_entry(const char *localeID, const char *path, UE
setEntryName(r, name, status);
if (U_FAILURE(*status)) {
uprv_free(r);
- return NULL;
+ return nullptr;
}
- if(path != NULL) {
+ if(path != nullptr) {
r->fPath = (char *)uprv_strdup(path);
- if(r->fPath == NULL) {
+ if(r->fPath == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
uprv_free(r);
- return NULL;
+ return nullptr;
}
}
@@ -574,7 +576,7 @@ static UResourceDataEntry *init_entry(const char *localeID, const char *path, UE
/* if we failed to load due to an out-of-memory error, exit early. */
if (*status == U_MEMORY_ALLOCATION_ERROR) {
uprv_free(r);
- return NULL;
+ return nullptr;
}
/* we have no such entry in dll, so it will always use fallback */
*status = U_USING_FALLBACK_WARNING;
@@ -601,8 +603,8 @@ static UResourceDataEntry *init_entry(const char *localeID, const char *path, UE
aliasres = res_getResource(&(r->fData), "%%ALIAS");
if (aliasres != RES_BOGUS) {
// No tracing: called during initial data loading
- const UChar *alias = res_getStringNoTrace(&(r->fData), aliasres, &aliasLen);
- if(alias != NULL && aliasLen > 0) { /* if there is actual alias - unload and load new data */
+ const char16_t *alias = res_getStringNoTrace(&(r->fData), aliasres, &aliasLen);
+ if(alias != nullptr && aliasLen > 0) { /* if there is actual alias - unload and load new data */
u_UCharsToChars(alias, aliasName, aliasLen+1);
r->fAlias = init_entry(aliasName, path, status);
}
@@ -611,15 +613,15 @@ static UResourceDataEntry *init_entry(const char *localeID, const char *path, UE
}
{
- UResourceDataEntry *oldR = NULL;
- if((oldR = (UResourceDataEntry *)uhash_get(cache, r)) == NULL) { /* if the data is not cached */
+ UResourceDataEntry *oldR = nullptr;
+ if((oldR = (UResourceDataEntry *)uhash_get(cache, r)) == nullptr) { /* if the data is not cached */
/* just insert it in the cache */
UErrorCode cacheStatus = U_ZERO_ERROR;
uhash_put(cache, (void *)r, r, &cacheStatus);
if (U_FAILURE(cacheStatus)) {
*status = cacheStatus;
free_entry(r);
- r = NULL;
+ r = nullptr;
}
} else {
/* somebody have already inserted it while we were working, discard newly opened data */
@@ -630,9 +632,9 @@ static UResourceDataEntry *init_entry(const char *localeID, const char *path, UE
}
}
- if(r != NULL) {
+ if(r != nullptr) {
/* return the real bundle */
- while(r->fAlias != NULL) {
+ while(r->fAlias != nullptr) {
r = r->fAlias;
}
r->fCountExisting++; /* we increase its reference count */
@@ -649,7 +651,7 @@ static UResourceDataEntry *
getPoolEntry(const char *path, UErrorCode *status) {
UResourceDataEntry *poolBundle = init_entry(kPoolBundleName, path, status);
if( U_SUCCESS(*status) &&
- (poolBundle == NULL || poolBundle->fBogus != U_ZERO_ERROR || !poolBundle->fData.isPoolBundle)
+ (poolBundle == nullptr || poolBundle->fBogus != U_ZERO_ERROR || !poolBundle->fData.isPoolBundle)
) {
*status = U_INVALID_FORMAT_ERROR;
}
@@ -661,7 +663,7 @@ getPoolEntry(const char *path, UErrorCode *status) {
static UResourceDataEntry *
findFirstExisting(const char* path, char* name, const char* defaultLocale, UResOpenType openType,
UBool *isRoot, UBool *foundParent, UBool *isDefault, UErrorCode* status) {
- UResourceDataEntry *r = NULL;
+ UResourceDataEntry *r = nullptr;
UBool hasRealData = false;
*foundParent = true; /* we're starting with a fresh name */
char origName[ULOC_FULLNAME_CAPACITY];
@@ -671,7 +673,7 @@ findFirstExisting(const char* path, char* name, const char* defaultLocale, UResO
r = init_entry(name, path, status);
/* Null pointer test */
if (U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
*isDefault = (UBool)(uprv_strncmp(name, defaultLocale, uprv_strlen(name)) == 0);
hasRealData = (UBool)(r->fBogus == U_ZERO_ERROR);
@@ -683,7 +685,7 @@ findFirstExisting(const char* path, char* name, const char* defaultLocale, UResO
/* are not updated yet. */
r->fCountExisting--;
/*entryCloseInt(r);*/
- r = NULL;
+ r = nullptr;
*status = U_USING_FALLBACK_WARNING;
} else {
uprv_strcpy(name, r->fName); /* this is needed for supporting aliases */
@@ -744,14 +746,14 @@ loadParentsExceptRoot(UResourceDataEntry *&t1,
UBool usingUSRData, char usrDataPath[], UErrorCode *status) {
if (U_FAILURE(*status)) { return false; }
UBool checkParent = true;
- while (checkParent && t1->fParent == NULL && !t1->fData.noFallback &&
+ while (checkParent && t1->fParent == nullptr && !t1->fData.noFallback &&
res_getResource(&t1->fData,"%%ParentIsRoot") == RES_BOGUS) {
Resource parentRes = res_getResource(&t1->fData, "%%Parent");
if (parentRes != RES_BOGUS) { // An explicit parent was found.
int32_t parentLocaleLen = 0;
// No tracing: called during initial data loading
- const UChar *parentLocaleName = res_getStringNoTrace(&(t1->fData), parentRes, &parentLocaleLen);
- if(parentLocaleName != NULL && 0 < parentLocaleLen && parentLocaleLen < nameCapacity) {
+ const char16_t *parentLocaleName = res_getStringNoTrace(&(t1->fData), parentRes, &parentLocaleLen);
+ if(parentLocaleName != nullptr && 0 < parentLocaleLen && parentLocaleLen < nameCapacity) {
u_UCharsToChars(parentLocaleName, name, parentLocaleLen + 1);
if (uprv_strcmp(name, kRootLocaleName) == 0) {
return true;
@@ -765,7 +767,7 @@ loadParentsExceptRoot(UResourceDataEntry *&t1,
*status = parentStatus;
return false;
}
- UResourceDataEntry *u2 = NULL;
+ UResourceDataEntry *u2 = nullptr;
UErrorCode usrStatus = U_ZERO_ERROR;
if (usingUSRData) { // This code inserts user override data into the inheritance chain.
u2 = init_entry(name, usrDataPath, &usrStatus);
@@ -810,13 +812,13 @@ static UResourceDataEntry *entryOpen(const char* path, const char* localeID,
UResOpenType openType, UErrorCode* status) {
U_ASSERT(openType != URES_OPEN_DIRECT);
UErrorCode intStatus = U_ZERO_ERROR;
- UResourceDataEntry *r = NULL;
- UResourceDataEntry *t1 = NULL;
+ UResourceDataEntry *r = nullptr;
+ UResourceDataEntry *t1 = nullptr;
UBool isDefault = false;
UBool isRoot = false;
UBool hasRealData = false;
UBool hasChopped = true;
- UBool usingUSRData = U_USE_USRDATA && ( path == NULL || uprv_strncmp(path,U_ICUDATA_NAME,8) == 0);
+ UBool usingUSRData = U_USE_USRDATA && ( path == nullptr || uprv_strncmp(path,U_ICUDATA_NAME,8) == 0);
char name[ULOC_FULLNAME_CAPACITY];
char usrDataPath[96];
@@ -824,14 +826,14 @@ static UResourceDataEntry *entryOpen(const char* path, const char* localeID,
initCache(status);
if(U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
uprv_strncpy(name, localeID, sizeof(name) - 1);
name[sizeof(name) - 1] = 0;
if ( usingUSRData ) {
- if ( path == NULL ) {
+ if ( path == nullptr ) {
uprv_strcpy(usrDataPath, U_USRDATA_NAME);
} else {
uprv_strncpy(usrDataPath, path, sizeof(usrDataPath) - 1);
@@ -856,7 +858,7 @@ static UResourceDataEntry *entryOpen(const char* path, const char* localeID,
goto finish;
}
- if(r != NULL) { /* if there is one real locale, we can look for parents. */
+ if(r != nullptr) { /* if there is one real locale, we can look for parents. */
t1 = r;
hasRealData = true;
if ( usingUSRData ) { /* This code inserts user override data into the inheritance chain */
@@ -867,7 +869,7 @@ static UResourceDataEntry *entryOpen(const char* path, const char* localeID,
*status = intStatus;
goto finish;
}
- if ( u1 != NULL ) {
+ if ( u1 != nullptr ) {
if(u1->fBogus == U_ZERO_ERROR) {
u1->fParent = t1;
r = u1;
@@ -886,7 +888,7 @@ static UResourceDataEntry *entryOpen(const char* path, const char* localeID,
/* we could have reached this point without having any real data */
/* if that is the case, we need to chain in the default locale */
- if(r==NULL && openType == URES_OPEN_LOCALE_DEFAULT_ROOT && !isDefault && !isRoot) {
+ if(r==nullptr && openType == URES_OPEN_LOCALE_DEFAULT_ROOT && !isDefault && !isRoot) {
/* insert default locale */
uprv_strcpy(name, defaultLocale);
r = findFirstExisting(path, name, defaultLocale, openType, &isRoot, &hasChopped, &isDefault, &intStatus);
@@ -896,7 +898,7 @@ static UResourceDataEntry *entryOpen(const char* path, const char* localeID,
goto finish;
}
intStatus = U_USING_DEFAULT_WARNING;
- if(r != NULL) { /* the default locale exists */
+ if(r != nullptr) { /* the default locale exists */
t1 = r;
hasRealData = true;
isDefault = true;
@@ -909,9 +911,9 @@ static UResourceDataEntry *entryOpen(const char* path, const char* localeID,
}
}
- /* we could still have r == NULL at this point - maybe even default locale is not */
+ /* we could still have r == nullptr at this point - maybe even default locale is not */
/* present */
- if(r == NULL) {
+ if(r == nullptr) {
uprv_strcpy(name, kRootLocaleName);
r = findFirstExisting(path, name, defaultLocale, openType, &isRoot, &hasChopped, &isDefault, &intStatus);
// If we failed due to out-of-memory, report the failure and exit early.
@@ -919,7 +921,7 @@ static UResourceDataEntry *entryOpen(const char* path, const char* localeID,
*status = intStatus;
goto finish;
}
- if(r != NULL) {
+ if(r != nullptr) {
t1 = r;
intStatus = U_USING_DEFAULT_WARNING;
hasRealData = true;
@@ -928,7 +930,7 @@ static UResourceDataEntry *entryOpen(const char* path, const char* localeID,
goto finish;
}
} else if(!isRoot && uprv_strcmp(t1->fName, kRootLocaleName) != 0 &&
- t1->fParent == NULL && !r->fData.noFallback) {
+ t1->fParent == nullptr && !r->fData.noFallback) {
if (!insertRootBundle(t1, status)) {
goto finish;
}
@@ -938,7 +940,7 @@ static UResourceDataEntry *entryOpen(const char* path, const char* localeID,
}
// TODO: Does this ever loop?
- while(r != NULL && !isRoot && t1->fParent != NULL) {
+ while(r != nullptr && !isRoot && t1->fParent != nullptr) {
t1->fParent->fCountExisting++;
t1 = t1->fParent;
}
@@ -950,7 +952,7 @@ finish:
}
return r;
} else {
- return NULL;
+ return nullptr;
}
}
@@ -964,12 +966,12 @@ static UResourceDataEntry *
entryOpenDirect(const char* path, const char* localeID, UErrorCode* status) {
initCache(status);
if(U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
// Note: We need to query the default locale *before* locking resbMutex.
- // If the localeID is NULL, then we want to use the default locale.
- if (localeID == NULL) {
+ // If the localeID is nullptr, then we want to use the default locale.
+ if (localeID == nullptr) {
localeID = uloc_getDefault();
} else if (*localeID == 0) {
// If the localeID is "", then we want to use the root locale.
@@ -983,34 +985,34 @@ entryOpenDirect(const char* path, const char* localeID, UErrorCode* status) {
if(U_SUCCESS(*status)) {
if(r->fBogus != U_ZERO_ERROR) {
r->fCountExisting--;
- r = NULL;
+ r = nullptr;
}
} else {
- r = NULL;
+ r = nullptr;
}
// Some code depends on the ures_openDirect() bundle to have a parent bundle chain,
// unless it is marked with "nofallback".
UResourceDataEntry *t1 = r;
- if(r != NULL && uprv_strcmp(localeID, kRootLocaleName) != 0 && // not root
- r->fParent == NULL && !r->fData.noFallback &&
+ if(r != nullptr && uprv_strcmp(localeID, kRootLocaleName) != 0 && // not root
+ r->fParent == nullptr && !r->fData.noFallback &&
uprv_strlen(localeID) < ULOC_FULLNAME_CAPACITY) {
char name[ULOC_FULLNAME_CAPACITY];
uprv_strcpy(name, localeID);
if(!chopLocale(name) || uprv_strcmp(name, kRootLocaleName) == 0 ||
- loadParentsExceptRoot(t1, name, UPRV_LENGTHOF(name), false, NULL, status)) {
- if(uprv_strcmp(t1->fName, kRootLocaleName) != 0 && t1->fParent == NULL) {
+ loadParentsExceptRoot(t1, name, UPRV_LENGTHOF(name), false, nullptr, status)) {
+ if(uprv_strcmp(t1->fName, kRootLocaleName) != 0 && t1->fParent == nullptr) {
insertRootBundle(t1, status);
}
}
if(U_FAILURE(*status)) {
- r = NULL;
+ r = nullptr;
}
}
- if(r != NULL) {
+ if(r != nullptr) {
// TODO: Does this ever loop?
- while(t1->fParent != NULL) {
+ while(t1->fParent != nullptr) {
t1->fParent->fCountExisting++;
t1 = t1->fParent;
}
@@ -1026,7 +1028,7 @@ entryOpenDirect(const char* path, const char* localeID, UErrorCode* status) {
static void entryCloseInt(UResourceDataEntry *resB) {
UResourceDataEntry *p = resB;
- while(resB != NULL) {
+ while(resB != nullptr) {
p = resB->fParent;
resB->fCountExisting--;
@@ -1038,10 +1040,10 @@ static void entryCloseInt(UResourceDataEntry *resB) {
if(resB->fBogus == U_ZERO_ERROR) {
res_unload(&(resB->fData));
}
- if(resB->fName != NULL) {
+ if(resB->fName != nullptr) {
uprv_free(resB->fName);
}
- if(resB->fPath != NULL) {
+ if(resB->fPath != nullptr) {
uprv_free(resB->fPath);
}
uprv_free(resB);
@@ -1063,7 +1065,7 @@ static void entryClose(UResourceDataEntry *resB) {
/*
U_CFUNC void ures_setResPath(UResourceBundle *resB, const char* toAdd) {
- if(resB->fResPath == NULL) {
+ if(resB->fResPath == nullptr) {
resB->fResPath = resB->fResBuf;
*(resB->fResPath) = 0;
}
@@ -1080,7 +1082,7 @@ U_CFUNC void ures_setResPath(UResourceBundle *resB, const char* toAdd) {
*/
static void ures_appendResPath(UResourceBundle *resB, const char* toAdd, int32_t lenToAdd, UErrorCode *status) {
int32_t resPathLenOrig = resB->fResPathLen;
- if(resB->fResPath == NULL) {
+ if(resB->fResPath == nullptr) {
resB->fResPath = resB->fResBuf;
*(resB->fResPath) = 0;
resB->fResPathLen = 0;
@@ -1090,7 +1092,7 @@ static void ures_appendResPath(UResourceBundle *resB, const char* toAdd, int32_t
if(resB->fResPath == resB->fResBuf) {
resB->fResPath = (char *)uprv_malloc((resB->fResPathLen+1)*sizeof(char));
/* Check that memory was allocated correctly. */
- if (resB->fResPath == NULL) {
+ if (resB->fResPath == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -1098,7 +1100,7 @@ static void ures_appendResPath(UResourceBundle *resB, const char* toAdd, int32_t
} else {
char *temp = (char *)uprv_realloc(resB->fResPath, (resB->fResPathLen+1)*sizeof(char));
/* Check that memory was reallocated correctly. */
- if (temp == NULL) {
+ if (temp == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -1112,18 +1114,18 @@ static void ures_freeResPath(UResourceBundle *resB) {
if (resB->fResPath && resB->fResPath != resB->fResBuf) {
uprv_free(resB->fResPath);
}
- resB->fResPath = NULL;
+ resB->fResPath = nullptr;
resB->fResPathLen = 0;
}
static void
ures_closeBundle(UResourceBundle* resB, UBool freeBundleObj)
{
- if(resB != NULL) {
- if(resB->fData != NULL) {
+ if(resB != nullptr) {
+ if(resB->fData != nullptr) {
entryClose(resB->fData);
}
- if(resB->fVersion != NULL) {
+ if(resB->fVersion != nullptr) {
uprv_free(resB->fVersion);
}
ures_freeResPath(resB);
@@ -1166,7 +1168,7 @@ UResourceBundle *getAliasTargetAsResourceBundle(
if (U_FAILURE(*status)) { return resB; }
U_ASSERT(RES_GET_TYPE(r) == URES_ALIAS);
int32_t len = 0;
- const UChar *alias = res_getAlias(&resData, r, &len);
+ const char16_t *alias = res_getAlias(&resData, r, &len);
if(len <= 0) {
// bad alias
*status = U_ILLEGAL_ARGUMENT_ERROR;
@@ -1386,12 +1388,12 @@ UResourceBundle *init_resb_result(
int32_t recursionDepth,
UResourceBundle *resB, UErrorCode *status) {
// TODO: When an error occurs: Should we return nullptr vs. resB?
- if(status == NULL || U_FAILURE(*status)) {
+ if(status == nullptr || U_FAILURE(*status)) {
return resB;
}
if (validLocaleDataEntry == nullptr) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
if(RES_GET_TYPE(r) == URES_ALIAS) {
// This is an alias, need to exchange with real data.
@@ -1403,20 +1405,20 @@ UResourceBundle *init_resb_result(
dataEntry->fData, r, key, idx,
validLocaleDataEntry, containerResPath, recursionDepth, resB, status);
}
- if(resB == NULL) {
+ if(resB == nullptr) {
resB = (UResourceBundle *)uprv_malloc(sizeof(UResourceBundle));
- if (resB == NULL) {
+ if (resB == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
ures_setIsStackObject(resB, false);
- resB->fResPath = NULL;
+ resB->fResPath = nullptr;
resB->fResPathLen = 0;
} else {
- if(resB->fData != NULL) {
+ if(resB->fData != nullptr) {
entryClose(resB->fData);
}
- if(resB->fVersion != NULL) {
+ if(resB->fVersion != nullptr) {
uprv_free(resB->fVersion);
}
/*
@@ -1445,7 +1447,7 @@ UResourceBundle *init_resb_result(
ures_appendResPath(
resB, containerResPath, static_cast<int32_t>(uprv_strlen(containerResPath)), status);
}
- if(key != NULL) {
+ if(key != nullptr) {
ures_appendResPath(resB, key, (int32_t)uprv_strlen(key), status);
if(resB->fResPath[resB->fResPathLen-1] != RES_PATH_SEPARATOR) {
ures_appendResPath(resB, RES_PATH_SEPARATOR_S, 1, status);
@@ -1464,7 +1466,7 @@ UResourceBundle *init_resb_result(
uprv_memset(resB->fResBuf + usedLen, 0, sizeof(resB->fResBuf) - usedLen);
}
- resB->fVersion = NULL;
+ resB->fVersion = nullptr;
resB->fRes = r;
resB->fSize = res_countArrayItems(&resB->getResData(), resB->fRes);
ResourceTracer(resB).trace("get");
@@ -1488,27 +1490,27 @@ UResourceBundle *ures_copyResb(UResourceBundle *r, const UResourceBundle *origin
if(U_FAILURE(*status) || r == original) {
return r;
}
- if(original != NULL) {
- if(r == NULL) {
+ if(original != nullptr) {
+ if(r == nullptr) {
isStackObject = false;
r = (UResourceBundle *)uprv_malloc(sizeof(UResourceBundle));
- /* test for NULL */
- if (r == NULL) {
+ /* test for nullptr */
+ if (r == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
} else {
isStackObject = ures_isStackObject(r);
ures_closeBundle(r, false);
}
uprv_memcpy(r, original, sizeof(UResourceBundle));
- r->fResPath = NULL;
+ r->fResPath = nullptr;
r->fResPathLen = 0;
if(original->fResPath) {
ures_appendResPath(r, original->fResPath, original->fResPathLen, status);
}
ures_setIsStackObject(r, isStackObject);
- if(r->fData != NULL) {
+ if(r->fData != nullptr) {
entryIncrease(r->fData);
}
}
@@ -1519,45 +1521,45 @@ UResourceBundle *ures_copyResb(UResourceBundle *r, const UResourceBundle *origin
* Functions to retrieve data from resource bundles.
*/
-U_CAPI const UChar* U_EXPORT2 ures_getString(const UResourceBundle* resB, int32_t* len, UErrorCode* status) {
- const UChar *s;
- if (status==NULL || U_FAILURE(*status)) {
- return NULL;
+U_CAPI const char16_t* U_EXPORT2 ures_getString(const UResourceBundle* resB, int32_t* len, UErrorCode* status) {
+ const char16_t *s;
+ if (status==nullptr || U_FAILURE(*status)) {
+ return nullptr;
}
- if(resB == NULL) {
+ if(resB == nullptr) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
s = res_getString({resB}, &resB->getResData(), resB->fRes, len);
- if (s == NULL) {
+ if (s == nullptr) {
*status = U_RESOURCE_TYPE_MISMATCH;
}
return s;
}
static const char *
-ures_toUTF8String(const UChar *s16, int32_t length16,
+ures_toUTF8String(const char16_t *s16, int32_t length16,
char *dest, int32_t *pLength,
UBool forceCopy,
UErrorCode *status) {
int32_t capacity;
if (U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
- if (pLength != NULL) {
+ if (pLength != nullptr) {
capacity = *pLength;
} else {
capacity = 0;
}
- if (capacity < 0 || (capacity > 0 && dest == NULL)) {
+ if (capacity < 0 || (capacity > 0 && dest == nullptr)) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
if (length16 == 0) {
/* empty string, return as read-only pointer */
- if (pLength != NULL) {
+ if (pLength != nullptr) {
*pLength = 0;
}
if (forceCopy) {
@@ -1570,11 +1572,11 @@ ures_toUTF8String(const UChar *s16, int32_t length16,
/* We need to transform the string to the destination buffer. */
if (capacity < length16) {
/* No chance for the string to fit. Pure preflighting. */
- return u_strToUTF8(NULL, 0, pLength, s16, length16, status);
+ return u_strToUTF8(nullptr, 0, pLength, s16, length16, status);
}
if (!forceCopy && (length16 <= 0x2aaaaaaa)) {
/*
- * We know the string will fit into dest because each UChar turns
+ * We know the string will fit into dest because each char16_t turns
* into at most three UTF-8 bytes. Fill the latter part of dest
* so that callers do not expect to use dest as a string pointer,
* hopefully leading to more robust code for when resource bundles
@@ -1603,22 +1605,22 @@ ures_getUTF8String(const UResourceBundle *resB,
UBool forceCopy,
UErrorCode *status) {
int32_t length16;
- const UChar *s16 = ures_getString(resB, &length16, status);
+ const char16_t *s16 = ures_getString(resB, &length16, status);
return ures_toUTF8String(s16, length16, dest, pLength, forceCopy, status);
}
U_CAPI const uint8_t* U_EXPORT2 ures_getBinary(const UResourceBundle* resB, int32_t* len,
UErrorCode* status) {
const uint8_t *p;
- if (status==NULL || U_FAILURE(*status)) {
- return NULL;
+ if (status==nullptr || U_FAILURE(*status)) {
+ return nullptr;
}
- if(resB == NULL) {
+ if(resB == nullptr) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
p = res_getBinary({resB}, &resB->getResData(), resB->fRes, len);
- if (p == NULL) {
+ if (p == nullptr) {
*status = U_RESOURCE_TYPE_MISMATCH;
}
return p;
@@ -1627,15 +1629,15 @@ U_CAPI const uint8_t* U_EXPORT2 ures_getBinary(const UResourceBundle* resB, int3
U_CAPI const int32_t* U_EXPORT2 ures_getIntVector(const UResourceBundle* resB, int32_t* len,
UErrorCode* status) {
const int32_t *p;
- if (status==NULL || U_FAILURE(*status)) {
- return NULL;
+ if (status==nullptr || U_FAILURE(*status)) {
+ return nullptr;
}
- if(resB == NULL) {
+ if(resB == nullptr) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
p = res_getIntVector({resB}, &resB->getResData(), resB->fRes, len);
- if (p == NULL) {
+ if (p == nullptr) {
*status = U_RESOURCE_TYPE_MISMATCH;
}
return p;
@@ -1644,10 +1646,10 @@ U_CAPI const int32_t* U_EXPORT2 ures_getIntVector(const UResourceBundle* resB, i
/* this function returns a signed integer */
/* it performs sign extension */
U_CAPI int32_t U_EXPORT2 ures_getInt(const UResourceBundle* resB, UErrorCode *status) {
- if (status==NULL || U_FAILURE(*status)) {
+ if (status==nullptr || U_FAILURE(*status)) {
return 0xffffffff;
}
- if(resB == NULL) {
+ if(resB == nullptr) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return 0xffffffff;
}
@@ -1659,10 +1661,10 @@ U_CAPI int32_t U_EXPORT2 ures_getInt(const UResourceBundle* resB, UErrorCode *st
}
U_CAPI uint32_t U_EXPORT2 ures_getUInt(const UResourceBundle* resB, UErrorCode *status) {
- if (status==NULL || U_FAILURE(*status)) {
+ if (status==nullptr || U_FAILURE(*status)) {
return 0xffffffff;
}
- if(resB == NULL) {
+ if(resB == nullptr) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return 0xffffffff;
}
@@ -1674,7 +1676,7 @@ U_CAPI uint32_t U_EXPORT2 ures_getUInt(const UResourceBundle* resB, UErrorCode *
}
U_CAPI UResType U_EXPORT2 ures_getType(const UResourceBundle *resB) {
- if(resB == NULL) {
+ if(resB == nullptr) {
return URES_NONE;
}
return res_getPublicType(resB->fRes);
@@ -1690,24 +1692,24 @@ U_CAPI const char * U_EXPORT2 ures_getKey(const UResourceBundle *resB) {
// However, I believe we have some data (e.g., in res_index) where the key
// strings are the data. Tracing the enclosing table should suffice.
//
- if(resB == NULL) {
- return NULL;
+ if(resB == nullptr) {
+ return nullptr;
}
return(resB->fKey);
}
U_CAPI int32_t U_EXPORT2 ures_getSize(const UResourceBundle *resB) {
- if(resB == NULL) {
+ if(resB == nullptr) {
return 0;
}
return resB->fSize;
}
-static const UChar* ures_getStringWithAlias(const UResourceBundle *resB, Resource r, int32_t sIndex, int32_t *len, UErrorCode *status) {
+static const char16_t* ures_getStringWithAlias(const UResourceBundle *resB, Resource r, int32_t sIndex, int32_t *len, UErrorCode *status) {
if(RES_GET_TYPE(r) == URES_ALIAS) {
- const UChar* result = 0;
- UResourceBundle *tempRes = ures_getByIndex(resB, sIndex, NULL, status);
+ const char16_t* result = 0;
+ UResourceBundle *tempRes = ures_getByIndex(resB, sIndex, nullptr, status);
result = ures_getString(tempRes, len, status);
ures_close(tempRes);
return result;
@@ -1717,28 +1719,28 @@ static const UChar* ures_getStringWithAlias(const UResourceBundle *resB, Resourc
}
U_CAPI void U_EXPORT2 ures_resetIterator(UResourceBundle *resB){
- if(resB == NULL) {
+ if(resB == nullptr) {
return;
}
resB->fIndex = -1;
}
U_CAPI UBool U_EXPORT2 ures_hasNext(const UResourceBundle *resB) {
- if(resB == NULL) {
+ if(resB == nullptr) {
return false;
}
return (UBool)(resB->fIndex < resB->fSize-1);
}
-U_CAPI const UChar* U_EXPORT2 ures_getNextString(UResourceBundle *resB, int32_t* len, const char ** key, UErrorCode *status) {
+U_CAPI const char16_t* U_EXPORT2 ures_getNextString(UResourceBundle *resB, int32_t* len, const char ** key, UErrorCode *status) {
Resource r = RES_BOGUS;
- if (status==NULL || U_FAILURE(*status)) {
- return NULL;
+ if (status==nullptr || U_FAILURE(*status)) {
+ return nullptr;
}
- if(resB == NULL) {
+ if(resB == nullptr) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
if(resB->fIndex == resB->fSize-1) {
@@ -1772,30 +1774,30 @@ U_CAPI const UChar* U_EXPORT2 ures_getNextString(UResourceBundle *resB, int32_t*
*status = U_RESOURCE_TYPE_MISMATCH;
U_FALLTHROUGH;
default:
- return NULL;
+ return nullptr;
}
}
- return NULL;
+ return nullptr;
}
U_CAPI UResourceBundle* U_EXPORT2 ures_getNextResource(UResourceBundle *resB, UResourceBundle *fillIn, UErrorCode *status) {
- const char *key = NULL;
+ const char *key = nullptr;
Resource r = RES_BOGUS;
- if (status==NULL || U_FAILURE(*status)) {
- /*return NULL;*/
+ if (status==nullptr || U_FAILURE(*status)) {
+ /*return nullptr;*/
return fillIn;
}
- if(resB == NULL) {
+ if(resB == nullptr) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
- /*return NULL;*/
+ /*return nullptr;*/
return fillIn;
}
if(resB->fIndex == resB->fSize-1) {
*status = U_INDEX_OUTOFBOUNDS_ERROR;
- /*return NULL;*/
+ /*return nullptr;*/
} else {
resB->fIndex++;
switch(RES_GET_TYPE(resB->fRes)) {
@@ -1821,25 +1823,25 @@ U_CAPI UResourceBundle* U_EXPORT2 ures_getNextResource(UResourceBundle *resB, UR
}
return init_resb_result(resB->fData, r, key, resB->fIndex, resB, fillIn, status);
default:
- /*return NULL;*/
+ /*return nullptr;*/
return fillIn;
}
}
- /*return NULL;*/
+ /*return nullptr;*/
return fillIn;
}
U_CAPI UResourceBundle* U_EXPORT2 ures_getByIndex(const UResourceBundle *resB, int32_t indexR, UResourceBundle *fillIn, UErrorCode *status) {
- const char* key = NULL;
+ const char* key = nullptr;
Resource r = RES_BOGUS;
- if (status==NULL || U_FAILURE(*status)) {
- /*return NULL;*/
+ if (status==nullptr || U_FAILURE(*status)) {
+ /*return nullptr;*/
return fillIn;
}
- if(resB == NULL) {
+ if(resB == nullptr) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
- /*return NULL;*/
+ /*return nullptr;*/
return fillIn;
}
@@ -1867,26 +1869,26 @@ U_CAPI UResourceBundle* U_EXPORT2 ures_getByIndex(const UResourceBundle *resB, i
}
return init_resb_result(resB->fData, r, key, indexR, resB, fillIn, status);
default:
- /*return NULL;*/
+ /*return nullptr;*/
return fillIn;
}
} else {
*status = U_MISSING_RESOURCE_ERROR;
}
- /*return NULL;*/
+ /*return nullptr;*/
return fillIn;
}
-U_CAPI const UChar* U_EXPORT2 ures_getStringByIndex(const UResourceBundle *resB, int32_t indexS, int32_t* len, UErrorCode *status) {
- const char* key = NULL;
+U_CAPI const char16_t* U_EXPORT2 ures_getStringByIndex(const UResourceBundle *resB, int32_t indexS, int32_t* len, UErrorCode *status) {
+ const char* key = nullptr;
Resource r = RES_BOGUS;
- if (status==NULL || U_FAILURE(*status)) {
- return NULL;
+ if (status==nullptr || U_FAILURE(*status)) {
+ return nullptr;
}
- if(resB == NULL) {
+ if(resB == nullptr) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
if(indexS >= 0 && resB->fSize > indexS) {
@@ -1924,7 +1926,7 @@ U_CAPI const UChar* U_EXPORT2 ures_getStringByIndex(const UResourceBundle *resB,
} else {
*status = U_MISSING_RESOURCE_ERROR;
}
- return NULL;
+ return nullptr;
}
U_CAPI const char * U_EXPORT2
@@ -1934,7 +1936,7 @@ ures_getUTF8StringByIndex(const UResourceBundle *resB,
UBool forceCopy,
UErrorCode *status) {
int32_t length16;
- const UChar *s16 = ures_getStringByIndex(resB, idx, &length16, status);
+ const char16_t *s16 = ures_getStringByIndex(resB, idx, &length16, status);
return ures_toUTF8String(s16, length16, dest, pLength, forceCopy, status);
}
@@ -1945,21 +1947,21 @@ ures_getUTF8StringByIndex(const UResourceBundle *resB,
U_CAPI UResourceBundle* U_EXPORT2
ures_findResource(const char* path, UResourceBundle *fillIn, UErrorCode *status)
{
- UResourceBundle *first = NULL;
+ UResourceBundle *first = nullptr;
UResourceBundle *result = fillIn;
- char *packageName = NULL;
- char *pathToResource = NULL, *save = NULL;
- char *locale = NULL, *localeEnd = NULL;
+ char *packageName = nullptr;
+ char *pathToResource = nullptr, *save = nullptr;
+ char *locale = nullptr, *localeEnd = nullptr;
int32_t length;
- if(status == NULL || U_FAILURE(*status)) {
+ if(status == nullptr || U_FAILURE(*status)) {
return result;
}
length = (int32_t)(uprv_strlen(path)+1);
save = pathToResource = (char *)uprv_malloc(length*sizeof(char));
- /* test for NULL */
- if(pathToResource == NULL) {
+ /* test for nullptr */
+ if(pathToResource == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
return result;
}
@@ -1970,7 +1972,7 @@ ures_findResource(const char* path, UResourceBundle *fillIn, UErrorCode *status)
pathToResource++;
packageName = pathToResource;
pathToResource = uprv_strchr(pathToResource, RES_PATH_SEPARATOR);
- if(pathToResource == NULL) {
+ if(pathToResource == nullptr) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
} else {
*pathToResource = 0;
@@ -1979,7 +1981,7 @@ ures_findResource(const char* path, UResourceBundle *fillIn, UErrorCode *status)
}
localeEnd = uprv_strchr(locale, RES_PATH_SEPARATOR);
- if(localeEnd != NULL) {
+ if(localeEnd != nullptr) {
*localeEnd = 0;
}
@@ -2004,7 +2006,7 @@ ures_findSubResource(const UResourceBundle *resB, char* path, UResourceBundle *f
UResourceBundle *result = fillIn;
const char *key;
- if(status == NULL || U_FAILURE(*status)) {
+ if(status == nullptr || U_FAILURE(*status)) {
return result;
}
@@ -2024,28 +2026,28 @@ ures_findSubResource(const UResourceBundle *resB, char* path, UResourceBundle *f
return result;
}
-U_CAPI const UChar* U_EXPORT2
+U_CAPI const char16_t* U_EXPORT2
ures_getStringByKeyWithFallback(const UResourceBundle *resB,
const char* inKey,
int32_t* len,
UErrorCode *status) {
UResourceBundle stack;
- const UChar* retVal = NULL;
+ const char16_t* retVal = nullptr;
ures_initStackObject(&stack);
ures_getByKeyWithFallback(resB, inKey, &stack, status);
int32_t length;
retVal = ures_getString(&stack, &length, status);
ures_close(&stack);
if (U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
if (length == 3 && retVal[0] == EMPTY_SET && retVal[1] == EMPTY_SET && retVal[2] == EMPTY_SET ) {
- retVal = NULL;
+ retVal = nullptr;
length = 0;
*status = U_MISSING_RESOURCE_ERROR;
}
- if (len != NULL) {
+ if (len != nullptr) {
*len = length;
}
return retVal;
@@ -2064,7 +2066,7 @@ static Resource getTableItemByKeyPath(const ResourceData *pResData, Resource tab
UResType type = (UResType)RES_GET_TYPE(resource); /* the current resource type */
while (*pathPart && resource != RES_BOGUS && URES_IS_CONTAINER(type)) {
char *nextPathPart = uprv_strchr(pathPart, RES_PATH_SEPARATOR);
- if (nextPathPart != NULL) {
+ if (nextPathPart != nullptr) {
*nextPathPart = 0; /* Terminating null for this part of path. */
nextPathPart++;
} else {
@@ -2161,12 +2163,12 @@ ures_getByKeyWithFallback(const UResourceBundle *resB,
UResourceBundle *fillIn,
UErrorCode *status) {
Resource res = RES_BOGUS, rootRes = RES_BOGUS;
- UResourceBundle *helper = NULL;
+ UResourceBundle *helper = nullptr;
- if (status==NULL || U_FAILURE(*status)) {
+ if (status==nullptr || U_FAILURE(*status)) {
return fillIn;
}
- if(resB == NULL) {
+ if(resB == nullptr) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return fillIn;
}
@@ -2181,14 +2183,14 @@ ures_getByKeyWithFallback(const UResourceBundle *resB,
if(res == RES_BOGUS) {
UResourceDataEntry *dataEntry = resB->fData;
CharString path;
- char *myPath = NULL;
+ char *myPath = nullptr;
const char* resPath = resB->fResPath;
int32_t len = resB->fResPathLen;
- while(res == RES_BOGUS && (dataEntry->fParent != NULL || !didRootOnce)) { /* Otherwise, we'll look in parents */
- if (dataEntry->fParent != NULL) {
+ while(res == RES_BOGUS && (dataEntry->fParent != nullptr || !didRootOnce)) { /* Otherwise, we'll look in parents */
+ if (dataEntry->fParent != nullptr) {
dataEntry = dataEntry->fParent;
} else {
- // We can't just stop when we get to a bundle whose fParent is NULL. That'll work most of the time,
+ // We can't just stop when we get to a bundle whose fParent is nullptr. That'll work most of the time,
// but if the bundle that the caller passed to us was "root" (which happens in getAllItemsWithFallback(),
// this function will drop right out without doing anything if "root" doesn't contain the exact key path
// specified. In that case, we need one extra time through this loop to make sure we follow any
@@ -2209,7 +2211,7 @@ ures_getByKeyWithFallback(const UResourceBundle *resB,
res = res_findResource(&(dataEntry->fData), rootRes, &myPath, &key);
if (RES_GET_TYPE(res) == URES_ALIAS && *myPath) {
/* We hit an alias, but we didn't finish following the path. */
- helper = init_resb_result(dataEntry, res, NULL, -1, resB, helper, status);
+ helper = init_resb_result(dataEntry, res, nullptr, -1, resB, helper, status);
/*helper = init_resb_result(dataEntry, res, inKey, -1, resB, helper, status);*/
if(helper) {
dataEntry = helper->fData;
@@ -2288,7 +2290,7 @@ void getAllItemsWithFallback(
value.setData(bundle->getResData());
value.setValidLocaleDataEntry(bundle->fValidLocaleDataEntry);
UResourceDataEntry *parentEntry = bundle->fData->fParent;
- UBool hasParent = parentEntry != NULL && U_SUCCESS(parentEntry->fBogus);
+ UBool hasParent = parentEntry != nullptr && U_SUCCESS(parentEntry->fBogus);
value.setResource(bundle->fRes, ResourceTracer(bundle));
sink.put(bundle->fKey, value, !hasParent, errorCode);
if (hasParent) {
@@ -2315,7 +2317,7 @@ void getAllItemsWithFallback(
StackUResourceBundle containerBundle;
const UResourceBundle *rb;
UErrorCode pathErrorCode = U_ZERO_ERROR; // Ignore if parents up to root do not have this path.
- if (bundle->fResPath == NULL || *bundle->fResPath == 0) {
+ if (bundle->fResPath == nullptr || *bundle->fResPath == 0) {
rb = parentBundle.getAlias();
} else {
rb = ures_getByKeyWithFallback(parentBundle.getAlias(), bundle->fResPath,
@@ -2350,7 +2352,66 @@ struct GetAllChildrenSink : public ResourceSink {
aliasedValue.setData(aliasRB->getResData());
aliasedValue.setValidLocaleDataEntry(aliasRB->fValidLocaleDataEntry);
aliasedValue.setResource(aliasRB->fRes, ResourceTracer(aliasRB));
- dest.put(key, aliasedValue, isRoot, errorCode);
+
+ if (aliasedValue.getType() != URES_TABLE) {
+ dest.put(key, aliasedValue, isRoot, errorCode);
+ } else {
+ // if the resource we're aliasing over to is a table, the sink might iterate over its contents.
+ // If it does, it'll get only the things defined in the actual alias target, not the things
+ // the target inherits from its parent resources. So we walk the parent chain for the *alias target*,
+ // calling dest.put() for each of the parent tables we could be inheriting from. This means
+ // that dest.put() has to iterate over the children of multiple tables to get all of the inherited
+ // resource values, but it already has to do that to handle normal vertical inheritance.
+ UResType aliasedValueType = URES_TABLE;
+ CharString tablePath;
+ tablePath.append(aliasRB->fResPath, errorCode);
+ const char* parentKey = key; // dest.put() changes the key
+ dest.put(parentKey, aliasedValue, isRoot, errorCode);
+ UResourceDataEntry* entry = aliasRB->fData;
+ Resource res = aliasRB->fRes;
+ while (aliasedValueType == URES_TABLE && entry->fParent != nullptr) {
+ CharString localPath;
+ localPath.copyFrom(tablePath, errorCode);
+ char* localPathAsCharPtr = localPath.data();
+ const char* childKey;
+ entry = entry->fParent;
+ res = entry->fData.rootRes;
+ Resource newRes = res_findResource(&entry->fData, res, &localPathAsCharPtr, &childKey);
+ if (newRes != RES_BOGUS) {
+ aliasedValue.setData(entry->fData);
+ // TODO: do I also need to call aliasedValue.setValueLocaleDataEntry() ?
+ aliasedValue.setResource(newRes, ResourceTracer(aliasRB)); // probably wrong to use aliasRB here
+ aliasedValueType = aliasedValue.getType();
+ if (aliasedValueType == URES_ALIAS) {
+ // in a few rare cases, when we get to the root resource bundle, the resource in question
+ // won't be an actual table, but will instead be an alias to a table. That is, we have
+ // two aliases in the inheritance path. (For some locales, such as Zulu, we see this with
+ // children of the "fields" resource: "day-narrow" aliases to "day-short", which aliases
+ // to "day".) When this happens, we need to make sure we follow all the aliases.
+ ResourceDataValue& rdv2 = static_cast<ResourceDataValue&>(aliasedValue);
+ aliasRB = getAliasTargetAsResourceBundle(rdv2.getData(), rdv2.getResource(), nullptr, -1,
+ rdv2.getValidLocaleDataEntry(), nullptr, 0,
+ stackTempBundle.getAlias(), &errorCode);
+ tablePath.clear();
+ tablePath.append(aliasRB->fResPath, errorCode);
+ entry = aliasRB->fData;
+ res = aliasRB->fRes;
+ aliasedValue.setData(entry->fData);
+ // TODO: do I also need to call aliasedValue.setValueLocaleDataEntry() ?
+ aliasedValue.setResource(res, ResourceTracer(aliasRB)); // probably wrong to use aliasRB here
+ aliasedValueType = aliasedValue.getType();
+ }
+ if (aliasedValueType == URES_TABLE) {
+ dest.put(parentKey, aliasedValue, isRoot, errorCode);
+ } else {
+ // once we've followed the alias, the resource we're looking at really should
+ // be a table
+ errorCode = U_INTERNAL_PROGRAM_ERROR;
+ return;
+ }
+ }
+ }
+ }
}
} else {
dest.put(key, value, isRoot, errorCode);
@@ -2431,13 +2492,13 @@ ures_getAllItemsWithFallback(const UResourceBundle *bundle, const char *path,
U_CAPI UResourceBundle* U_EXPORT2 ures_getByKey(const UResourceBundle *resB, const char* inKey, UResourceBundle *fillIn, UErrorCode *status) {
Resource res = RES_BOGUS;
- UResourceDataEntry *dataEntry = NULL;
+ UResourceDataEntry *dataEntry = nullptr;
const char *key = inKey;
- if (status==NULL || U_FAILURE(*status)) {
+ if (status==nullptr || U_FAILURE(*status)) {
return fillIn;
}
- if(resB == NULL) {
+ if(resB == nullptr) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return fillIn;
}
@@ -2448,7 +2509,7 @@ U_CAPI UResourceBundle* U_EXPORT2 ures_getByKey(const UResourceBundle *resB, con
res = res_getTableItemByKey(&resB->getResData(), resB->fRes, &t, &key);
if(res == RES_BOGUS) {
key = inKey;
- if(resB->fHasFallback == true) {
+ if(resB->fHasFallback) {
dataEntry = getFallbackData(resB, &key, &res, status);
if(U_SUCCESS(*status)) {
/* check if resB->fResPath gives the right name here */
@@ -2482,17 +2543,17 @@ U_CAPI UResourceBundle* U_EXPORT2 ures_getByKey(const UResourceBundle *resB, con
return fillIn;
}
-U_CAPI const UChar* U_EXPORT2 ures_getStringByKey(const UResourceBundle *resB, const char* inKey, int32_t* len, UErrorCode *status) {
+U_CAPI const char16_t* U_EXPORT2 ures_getStringByKey(const UResourceBundle *resB, const char* inKey, int32_t* len, UErrorCode *status) {
Resource res = RES_BOGUS;
- UResourceDataEntry *dataEntry = NULL;
+ UResourceDataEntry *dataEntry = nullptr;
const char* key = inKey;
- if (status==NULL || U_FAILURE(*status)) {
- return NULL;
+ if (status==nullptr || U_FAILURE(*status)) {
+ return nullptr;
}
- if(resB == NULL) {
+ if(resB == nullptr) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
int32_t type = RES_GET_TYPE(resB->fRes);
@@ -2503,7 +2564,7 @@ U_CAPI const UChar* U_EXPORT2 ures_getStringByKey(const UResourceBundle *resB, c
if(res == RES_BOGUS) {
key = inKey;
- if(resB->fHasFallback == true) {
+ if(resB->fHasFallback) {
dataEntry = getFallbackData(resB, &key, &res, status);
if(U_SUCCESS(*status)) {
switch (RES_GET_TYPE(res)) {
@@ -2512,8 +2573,8 @@ U_CAPI const UChar* U_EXPORT2 ures_getStringByKey(const UResourceBundle *resB, c
return res_getString({resB, key}, &dataEntry->fData, res, len);
case URES_ALIAS:
{
- const UChar* result = 0;
- UResourceBundle *tempRes = ures_getByKey(resB, inKey, NULL, status);
+ const char16_t* result = 0;
+ UResourceBundle *tempRes = ures_getByKey(resB, inKey, nullptr, status);
result = ures_getString(tempRes, len, status);
ures_close(tempRes);
return result;
@@ -2534,8 +2595,8 @@ U_CAPI const UChar* U_EXPORT2 ures_getStringByKey(const UResourceBundle *resB, c
return res_getString({resB, key}, &resB->getResData(), res, len);
case URES_ALIAS:
{
- const UChar* result = 0;
- UResourceBundle *tempRes = ures_getByKey(resB, inKey, NULL, status);
+ const char16_t* result = 0;
+ UResourceBundle *tempRes = ures_getByKey(resB, inKey, nullptr, status);
result = ures_getString(tempRes, len, status);
ures_close(tempRes);
return result;
@@ -2562,7 +2623,7 @@ U_CAPI const UChar* U_EXPORT2 ures_getStringByKey(const UResourceBundle *resB, c
else {
*status = U_RESOURCE_TYPE_MISMATCH;
}
- return NULL;
+ return nullptr;
}
U_CAPI const char * U_EXPORT2
@@ -2572,7 +2633,7 @@ ures_getUTF8StringByKey(const UResourceBundle *resB,
UBool forceCopy,
UErrorCode *status) {
int32_t length16;
- const UChar *s16 = ures_getStringByKey(resB, key, &length16, status);
+ const char16_t *s16 = ures_getStringByKey(resB, key, &length16, status);
return ures_toUTF8String(s16, length16, dest, pLength, forceCopy, status);
}
@@ -2585,12 +2646,12 @@ ures_getUTF8StringByKey(const UResourceBundle *resB,
U_CAPI const char* U_EXPORT2
ures_getLocaleInternal(const UResourceBundle* resourceBundle, UErrorCode* status)
{
- if (status==NULL || U_FAILURE(*status)) {
- return NULL;
+ if (status==nullptr || U_FAILURE(*status)) {
+ return nullptr;
}
if (!resourceBundle) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
} else {
return resourceBundle->fData->fName;
}
@@ -2608,12 +2669,12 @@ U_CAPI const char* U_EXPORT2
ures_getLocaleByType(const UResourceBundle* resourceBundle,
ULocDataLocaleType type,
UErrorCode* status) {
- if (status==NULL || U_FAILURE(*status)) {
- return NULL;
+ if (status==nullptr || U_FAILURE(*status)) {
+ return nullptr;
}
if (!resourceBundle) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
} else {
switch(type) {
case ULOC_ACTUAL_LOCALE:
@@ -2623,14 +2684,14 @@ ures_getLocaleByType(const UResourceBundle* resourceBundle,
case ULOC_REQUESTED_LOCALE:
default:
*status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
}
}
U_CFUNC const char* ures_getName(const UResourceBundle* resB) {
- if(resB == NULL) {
- return NULL;
+ if(resB == nullptr) {
+ return nullptr;
}
return resB->fData->fName;
@@ -2638,8 +2699,8 @@ U_CFUNC const char* ures_getName(const UResourceBundle* resB) {
#ifdef URES_DEBUG
U_CFUNC const char* ures_getPath(const UResourceBundle* resB) {
- if(resB == NULL) {
- return NULL;
+ if(resB == nullptr) {
+ return nullptr;
}
return resB->fData->fPath;
@@ -2650,37 +2711,40 @@ static UResourceBundle*
ures_openWithType(UResourceBundle *r, const char* path, const char* localeID,
UResOpenType openType, UErrorCode* status) {
if(U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
UResourceDataEntry *entry;
if(openType != URES_OPEN_DIRECT) {
/* first "canonicalize" the locale ID */
- char canonLocaleID[ULOC_FULLNAME_CAPACITY];
- uloc_getBaseName(localeID, canonLocaleID, UPRV_LENGTHOF(canonLocaleID), status);
- if(U_FAILURE(*status) || *status == U_STRING_NOT_TERMINATED_WARNING) {
+ CharString canonLocaleID;
+ {
+ CharStringByteSink sink(&canonLocaleID);
+ ulocimp_getBaseName(localeID, sink, status);
+ }
+ if(U_FAILURE(*status)) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
- entry = entryOpen(path, canonLocaleID, openType, status);
+ entry = entryOpen(path, canonLocaleID.data(), openType, status);
} else {
entry = entryOpenDirect(path, localeID, status);
}
if(U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
- if(entry == NULL) {
+ if(entry == nullptr) {
*status = U_MISSING_RESOURCE_ERROR;
- return NULL;
+ return nullptr;
}
UBool isStackObject;
- if(r == NULL) {
+ if(r == nullptr) {
r = (UResourceBundle *)uprv_malloc(sizeof(UResourceBundle));
- if(r == NULL) {
+ if(r == nullptr) {
entryClose(entry);
*status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
isStackObject = false;
} else { // fill-in
@@ -2704,12 +2768,12 @@ ures_openWithType(UResourceBundle *r, const char* path, const char* localeID,
U_CAPI UResourceBundle* U_EXPORT2
ures_open(const char* path, const char* localeID, UErrorCode* status) {
- return ures_openWithType(NULL, path, localeID, URES_OPEN_LOCALE_DEFAULT_ROOT, status);
+ return ures_openWithType(nullptr, path, localeID, URES_OPEN_LOCALE_DEFAULT_ROOT, status);
}
U_CAPI UResourceBundle* U_EXPORT2
ures_openNoDefault(const char* path, const char* localeID, UErrorCode* status) {
- return ures_openWithType(NULL, path, localeID, URES_OPEN_LOCALE_ROOT, status);
+ return ures_openWithType(nullptr, path, localeID, URES_OPEN_LOCALE_ROOT, status);
}
/**
@@ -2718,7 +2782,7 @@ ures_openNoDefault(const char* path, const char* localeID, UErrorCode* status) {
*/
U_CAPI UResourceBundle* U_EXPORT2
ures_openDirect(const char* path, const char* localeID, UErrorCode* status) {
- return ures_openWithType(NULL, path, localeID, URES_OPEN_DIRECT, status);
+ return ures_openWithType(nullptr, path, localeID, URES_OPEN_DIRECT, status);
}
/**
@@ -2731,7 +2795,7 @@ ures_openDirect(const char* path, const char* localeID, UErrorCode* status) {
U_CAPI void U_EXPORT2
ures_openFillIn(UResourceBundle *r, const char* path,
const char* localeID, UErrorCode* status) {
- if(U_SUCCESS(*status) && r == NULL) {
+ if(U_SUCCESS(*status) && r == nullptr) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
@@ -2743,7 +2807,7 @@ ures_openFillIn(UResourceBundle *r, const char* path,
*/
U_CAPI void U_EXPORT2
ures_openDirectFillIn(UResourceBundle *r, const char* path, const char* localeID, UErrorCode* status) {
- if(U_SUCCESS(*status) && r == NULL) {
+ if(U_SUCCESS(*status) && r == nullptr) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
@@ -2761,16 +2825,16 @@ ures_countArrayItems(const UResourceBundle* resourceBundle,
{
UResourceBundle resData;
ures_initStackObject(&resData);
- if (status==NULL || U_FAILURE(*status)) {
+ if (status==nullptr || U_FAILURE(*status)) {
return 0;
}
- if(resourceBundle == NULL) {
+ if(resourceBundle == nullptr) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
ures_getByKey(resourceBundle, resourceKey, &resData, status);
- if(resData.getResData().data != NULL) {
+ if(resData.getResData().data != nullptr) {
int32_t result = res_countArrayItems(&resData.getResData(), resData.fRes);
ures_close(&resData);
return result;
@@ -2794,9 +2858,9 @@ ures_countArrayItems(const UResourceBundle* resourceBundle,
U_CAPI const char* U_EXPORT2
ures_getVersionNumberInternal(const UResourceBundle *resourceBundle)
{
- if (!resourceBundle) return NULL;
+ if (!resourceBundle) return nullptr;
- if(resourceBundle->fVersion == NULL) {
+ if(resourceBundle->fVersion == nullptr) {
/* If the version ID has not been built yet, then do so. Retrieve */
/* the minor version from the file. */
@@ -2804,7 +2868,7 @@ ures_getVersionNumberInternal(const UResourceBundle *resourceBundle)
int32_t minor_len = 0;
int32_t len;
- const UChar* minor_version = ures_getStringByKey(resourceBundle, kVersionTag, &minor_len, &status);
+ const char16_t* minor_version = ures_getStringByKey(resourceBundle, kVersionTag, &minor_len, &status);
/* Determine the length of of the final version string. This is */
/* the length of the major part + the length of the separator */
@@ -2819,8 +2883,8 @@ ures_getVersionNumberInternal(const UResourceBundle *resourceBundle)
((UResourceBundle *)resourceBundle)->fVersion = (char *)uprv_malloc(1 + len);
/* Check for null pointer. */
- if (((UResourceBundle *)resourceBundle)->fVersion == NULL) {
- return NULL;
+ if (((UResourceBundle *)resourceBundle)->fVersion == nullptr) {
+ return nullptr;
}
if(minor_len > 0) {
@@ -2885,8 +2949,8 @@ ures_loc_nextLocale(UEnumeration* en,
UErrorCode* status) {
ULocalesContext *ctx = (ULocalesContext *)en->context;
UResourceBundle *res = &(ctx->installed);
- UResourceBundle *k = NULL;
- const char *result = NULL;
+ UResourceBundle *k = nullptr;
+ const char *result = nullptr;
int32_t len = 0;
if(ures_hasNext(res) && (k = ures_getNextResource(res, &ctx->curr, status)) != 0) {
result = ures_getKey(k);
@@ -2908,8 +2972,8 @@ ures_loc_resetLocales(UEnumeration* en,
U_CDECL_END
static const UEnumeration gLocalesEnum = {
- NULL,
- NULL,
+ nullptr,
+ nullptr,
ures_loc_closeLocales,
ures_loc_countLocales,
uenum_unextDefault,
@@ -2921,12 +2985,12 @@ static const UEnumeration gLocalesEnum = {
U_CAPI UEnumeration* U_EXPORT2
ures_openAvailableLocales(const char *path, UErrorCode *status)
{
- UResourceBundle *idx = NULL;
- UEnumeration *en = NULL;
- ULocalesContext *myContext = NULL;
+ UResourceBundle *idx = nullptr;
+ UEnumeration *en = nullptr;
+ ULocalesContext *myContext = nullptr;
if(U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
myContext = static_cast<ULocalesContext *>(uprv_malloc(sizeof(ULocalesContext)));
en = (UEnumeration *)uprv_malloc(sizeof(UEnumeration));
@@ -2934,7 +2998,7 @@ ures_openAvailableLocales(const char *path, UErrorCode *status)
*status = U_MEMORY_ALLOCATION_ERROR;
uprv_free(en);
uprv_free(myContext);
- return NULL;
+ return nullptr;
}
uprv_memcpy(en, &gLocalesEnum, sizeof(UEnumeration));
@@ -2955,7 +3019,7 @@ ures_openAvailableLocales(const char *path, UErrorCode *status)
ures_close(&myContext->installed);
uprv_free(myContext);
uprv_free(en);
- en = NULL;
+ en = nullptr;
}
ures_close(idx);
@@ -2965,7 +3029,7 @@ ures_openAvailableLocales(const char *path, UErrorCode *status)
static UBool isLocaleInList(UEnumeration *locEnum, const char *locToSearch, UErrorCode *status) {
const char *loc;
- while ((loc = uenum_next(locEnum, NULL, status)) != NULL) {
+ while ((loc = uenum_next(locEnum, nullptr, status)) != nullptr) {
if (uprv_strcmp(loc, locToSearch) == 0) {
return true;
}
@@ -2973,40 +3037,70 @@ static UBool isLocaleInList(UEnumeration *locEnum, const char *locToSearch, UErr
return false;
}
+static void getParentForFunctionalEquivalent(const char* localeID,
+ UResourceBundle* res,
+ UResourceBundle* bund1,
+ char* parent,
+ int32_t parentCapacity) {
+ // Get parent.
+ // First check for a parent from %%Parent resource (Note that in resource trees
+ // such as collation, data may have different parents than in parentLocales).
+ UErrorCode subStatus = U_ZERO_ERROR;
+ parent[0] = '\0';
+ if (res != NULL) {
+ ures_getByKey(res, "%%Parent", bund1, &subStatus);
+ if (U_SUCCESS(subStatus)) {
+ int32_t parentLen = parentCapacity;
+ ures_getUTF8String(bund1, parent, &parentLen, true, &subStatus);
+ }
+ }
+
+ // If none there, use normal truncation parent
+ if (U_FAILURE(subStatus) || parent[0] == 0) {
+ subStatus = U_ZERO_ERROR;
+ uloc_getParent(localeID, parent, parentCapacity, &subStatus);
+ }
+}
+
U_CAPI int32_t U_EXPORT2
ures_getFunctionalEquivalent(char *result, int32_t resultCapacity,
const char *path, const char *resName, const char *keyword, const char *locid,
UBool *isAvailable, UBool omitDefault, UErrorCode *status)
{
- char kwVal[1024] = ""; /* value of keyword 'keyword' */
char defVal[1024] = ""; /* default value for given locale */
char defLoc[1024] = ""; /* default value for given locale */
- char base[1024] = ""; /* base locale */
+ CharString base; /* base locale */
char found[1024] = "";
char parent[1024] = "";
char full[1024] = "";
UResourceBundle bund1, bund2;
- UResourceBundle *res = NULL;
+ UResourceBundle *res = nullptr;
UErrorCode subStatus = U_ZERO_ERROR;
int32_t length = 0;
if(U_FAILURE(*status)) return 0;
- uloc_getKeywordValue(locid, keyword, kwVal, 1024-1,&subStatus);
- if(!uprv_strcmp(kwVal, DEFAULT_TAG)) {
- kwVal[0]=0;
+ CharString kwVal;
+ {
+ CharStringByteSink sink(&kwVal);
+ ulocimp_getKeywordValue(locid, keyword, sink, &subStatus);
+ }
+ if(kwVal == DEFAULT_TAG) {
+ kwVal.clear();
+ }
+ {
+ CharStringByteSink sink(&base);
+ ulocimp_getBaseName(locid, sink, &subStatus);
}
- uloc_getBaseName(locid, base, 1024-1,&subStatus);
#if defined(URES_TREE_DEBUG)
fprintf(stderr, "getFunctionalEquivalent: \"%s\" [%s=%s] in %s - %s\n",
- locid, keyword, kwVal, base, u_errorName(subStatus));
+ locid, keyword, kwVal.data(), base.data(), u_errorName(subStatus));
#endif
ures_initStackObject(&bund1);
ures_initStackObject(&bund2);
-
-
- uprv_strcpy(parent, base);
- uprv_strcpy(found, base);
- if(isAvailable) {
+ base.extract(parent, UPRV_LENGTHOF(parent), subStatus);
+ base.extract(found, UPRV_LENGTHOF(found), subStatus);
+
+ if(isAvailable) {
UEnumeration *locEnum = ures_openAvailableLocales(path, &subStatus);
*isAvailable = true;
if (U_SUCCESS(subStatus)) {
@@ -3028,7 +3122,7 @@ ures_getFunctionalEquivalent(char *result, int32_t resultCapacity,
{
*isAvailable = false;
}
- isAvailable = NULL; /* only want to set this the first time around */
+ isAvailable = nullptr; /* only want to set this the first time around */
#if defined(URES_TREE_DEBUG)
fprintf(stderr, "%s;%s -> %s [%s]\n", path?path:"ICUDATA", parent, u_errorName(subStatus), ures_getLocale(res, &subStatus));
@@ -3038,7 +3132,7 @@ ures_getFunctionalEquivalent(char *result, int32_t resultCapacity,
} else if(subStatus == U_ZERO_ERROR) {
ures_getByKey(res,resName,&bund1, &subStatus);
if(subStatus == U_ZERO_ERROR) {
- const UChar *defUstr;
+ const char16_t *defUstr;
int32_t defLen;
/* look for default item */
#if defined(URES_TREE_DEBUG)
@@ -3053,11 +3147,11 @@ ures_getFunctionalEquivalent(char *result, int32_t resultCapacity,
path?path:"ICUDATA", parent, keyword, defVal, u_errorName(subStatus));
#endif
uprv_strcpy(defLoc, parent);
- if(kwVal[0]==0) {
- uprv_strcpy(kwVal, defVal);
+ if(kwVal.isEmpty()) {
+ kwVal.append(defVal, defLen, subStatus);
#if defined(URES_TREE_DEBUG)
fprintf(stderr, "%s;%s -> kwVal = %s\n",
- path?path:"ICUDATA", parent, keyword, kwVal);
+ path?path:"ICUDATA", parent, keyword, kwVal.data());
#endif
}
}
@@ -3066,29 +3160,32 @@ ures_getFunctionalEquivalent(char *result, int32_t resultCapacity,
subStatus = U_ZERO_ERROR;
- if (res != NULL) {
+ if (res != nullptr) {
uprv_strcpy(found, ures_getLocaleByType(res, ULOC_VALID_LOCALE, &subStatus));
}
- uloc_getParent(found,parent,sizeof(parent),&subStatus);
+ if (uprv_strcmp(found, parent) != 0) {
+ uprv_strcpy(parent, found);
+ } else {
+ getParentForFunctionalEquivalent(found,res,&bund1,parent,sizeof(parent));
+ }
ures_close(res);
} while(!defVal[0] && *found && uprv_strcmp(found, "root") != 0 && U_SUCCESS(*status));
/* Now, see if we can find the kwVal collator.. start the search over.. */
- uprv_strcpy(parent, base);
- uprv_strcpy(found, base);
-
+ base.extract(parent, UPRV_LENGTHOF(parent), subStatus);
+ base.extract(found, UPRV_LENGTHOF(found), subStatus);
+
do {
- subStatus = U_ZERO_ERROR;
res = ures_open(path, parent, &subStatus);
if((subStatus == U_USING_FALLBACK_WARNING) && isAvailable) {
*isAvailable = false;
}
- isAvailable = NULL; /* only want to set this the first time around */
+ isAvailable = nullptr; /* only want to set this the first time around */
#if defined(URES_TREE_DEBUG)
fprintf(stderr, "%s;%s -> %s (looking for %s)\n",
- path?path:"ICUDATA", parent, u_errorName(subStatus), kwVal);
+ path?path:"ICUDATA", parent, u_errorName(subStatus), kwVal.data());
#endif
if(U_FAILURE(subStatus)) {
*status = subStatus;
@@ -3098,14 +3195,14 @@ ures_getFunctionalEquivalent(char *result, int32_t resultCapacity,
/**/ fprintf(stderr,"@%d [%s] %s\n", __LINE__, resName, u_errorName(subStatus));
#endif
if(subStatus == U_ZERO_ERROR) {
- ures_getByKey(&bund1, kwVal, &bund2, &subStatus);
+ ures_getByKey(&bund1, kwVal.data(), &bund2, &subStatus);
#if defined(URES_TREE_DEBUG)
-/**/ fprintf(stderr,"@%d [%s] %s\n", __LINE__, kwVal, u_errorName(subStatus));
+/**/ fprintf(stderr,"@%d [%s] %s\n", __LINE__, kwVal.data(), u_errorName(subStatus));
#endif
if(subStatus == U_ZERO_ERROR) {
#if defined(URES_TREE_DEBUG)
fprintf(stderr, "%s;%s -> full0 %s=%s, %s\n",
- path?path:"ICUDATA", parent, keyword, kwVal, u_errorName(subStatus));
+ path?path:"ICUDATA", parent, keyword, kwVal.data(), u_errorName(subStatus));
#endif
uprv_strcpy(full, parent);
if(*full == 0) {
@@ -3113,7 +3210,7 @@ ures_getFunctionalEquivalent(char *result, int32_t resultCapacity,
}
/* now, recalculate default kw if need be */
if(uprv_strlen(defLoc) > uprv_strlen(full)) {
- const UChar *defUstr;
+ const char16_t *defUstr;
int32_t defLen;
/* look for default item */
#if defined(URES_TREE_DEBUG)
@@ -3138,49 +3235,72 @@ ures_getFunctionalEquivalent(char *result, int32_t resultCapacity,
} else {
#if defined(URES_TREE_DEBUG)
fprintf(stderr, "err=%s in %s looking for %s\n",
- u_errorName(subStatus), parent, kwVal);
+ u_errorName(subStatus), parent, kwVal.data());
#endif
}
}
}
- subStatus = U_ZERO_ERROR;
-
- uprv_strcpy(found, parent);
- uloc_getParent(found,parent,1023,&subStatus);
+ UBool haveFound = false;
+ // At least for collations which may be aliased, we need to use the VALID locale
+ // as the parent instead of just truncating, as long as the VALID locale is not
+ // root and has a different language than the parent. Use of the VALID locale
+ // here is similar to the procedure used at the end of the previous do-while loop
+ // for all resource types.
+ if (res != NULL && uprv_strcmp(resName, "collations") == 0) {
+ subStatus = U_ZERO_ERROR;
+ const char *validLoc = ures_getLocaleByType(res, ULOC_VALID_LOCALE, &subStatus);
+ if (U_SUCCESS(subStatus) && validLoc != NULL && validLoc[0] != 0 && uprv_strcmp(validLoc, "root") != 0) {
+ char validLang[ULOC_LANG_CAPACITY];
+ char parentLang[ULOC_LANG_CAPACITY];
+ uloc_getLanguage(validLoc, validLang, ULOC_LANG_CAPACITY, &subStatus);
+ uloc_getLanguage(parent, parentLang, ULOC_LANG_CAPACITY, &subStatus);
+ if (U_SUCCESS(subStatus) && uprv_strcmp(validLang, parentLang) != 0) {
+ // validLoc is not root and has a different language than parent, use it instead
+ uprv_strcpy(found, validLoc);
+ haveFound = true;
+ }
+ }
+ subStatus = U_ZERO_ERROR;
+ }
+ if (!haveFound) {
+ uprv_strcpy(found, parent);
+ }
+
+ getParentForFunctionalEquivalent(found,res,&bund1,parent,1023);
ures_close(res);
+ subStatus = U_ZERO_ERROR;
} while(!full[0] && *found && U_SUCCESS(*status));
-
- if((full[0]==0) && uprv_strcmp(kwVal, defVal)) {
+
+ if((full[0]==0) && kwVal != defVal) {
#if defined(URES_TREE_DEBUG)
- fprintf(stderr, "Failed to locate kw %s - try default %s\n", kwVal, defVal);
+ fprintf(stderr, "Failed to locate kw %s - try default %s\n", kwVal.data(), defVal);
#endif
- uprv_strcpy(kwVal, defVal);
- uprv_strcpy(parent, base);
- uprv_strcpy(found, base);
-
+ kwVal.clear().append(defVal, subStatus);
+ base.extract(parent, UPRV_LENGTHOF(parent), subStatus);
+ base.extract(found, UPRV_LENGTHOF(found), subStatus);
+
do { /* search for 'default' named item */
- subStatus = U_ZERO_ERROR;
res = ures_open(path, parent, &subStatus);
if((subStatus == U_USING_FALLBACK_WARNING) && isAvailable) {
*isAvailable = false;
}
- isAvailable = NULL; /* only want to set this the first time around */
+ isAvailable = nullptr; /* only want to set this the first time around */
#if defined(URES_TREE_DEBUG)
fprintf(stderr, "%s;%s -> %s (looking for default %s)\n",
- path?path:"ICUDATA", parent, u_errorName(subStatus), kwVal);
+ path?path:"ICUDATA", parent, u_errorName(subStatus), kwVal.data());
#endif
if(U_FAILURE(subStatus)) {
*status = subStatus;
} else if(subStatus == U_ZERO_ERROR) {
ures_getByKey(res,resName,&bund1, &subStatus);
if(subStatus == U_ZERO_ERROR) {
- ures_getByKey(&bund1, kwVal, &bund2, &subStatus);
+ ures_getByKey(&bund1, kwVal.data(), &bund2, &subStatus);
if(subStatus == U_ZERO_ERROR) {
#if defined(URES_TREE_DEBUG)
fprintf(stderr, "%s;%s -> full1 %s=%s, %s\n", path?path:"ICUDATA",
- parent, keyword, kwVal, u_errorName(subStatus));
+ parent, keyword, kwVal.data(), u_errorName(subStatus));
#endif
uprv_strcpy(full, parent);
if(*full == 0) {
@@ -3189,7 +3309,7 @@ ures_getFunctionalEquivalent(char *result, int32_t resultCapacity,
/* now, recalculate default kw if need be */
if(uprv_strlen(defLoc) > uprv_strlen(full)) {
- const UChar *defUstr;
+ const char16_t *defUstr;
int32_t defLen;
/* look for default item */
#if defined(URES_TREE_DEBUG)
@@ -3214,18 +3334,18 @@ ures_getFunctionalEquivalent(char *result, int32_t resultCapacity,
}
}
}
- subStatus = U_ZERO_ERROR;
uprv_strcpy(found, parent);
- uloc_getParent(found,parent,1023,&subStatus);
+ getParentForFunctionalEquivalent(found,res,&bund1,parent,1023);
ures_close(res);
+ subStatus = U_ZERO_ERROR;
} while(!full[0] && *found && U_SUCCESS(*status));
}
if(U_SUCCESS(*status)) {
if(!full[0]) {
#if defined(URES_TREE_DEBUG)
- fprintf(stderr, "Still could not load keyword %s=%s\n", keyword, kwVal);
+ fprintf(stderr, "Still could not load keyword %s=%s\n", keyword, kwVal.data());
#endif
*status = U_MISSING_RESOURCE_ERROR;
} else if(omitDefault) {
@@ -3234,21 +3354,21 @@ ures_getFunctionalEquivalent(char *result, int32_t resultCapacity,
#endif
if(uprv_strlen(defLoc) <= uprv_strlen(full)) {
/* found the keyword in a *child* of where the default tag was present. */
- if(!uprv_strcmp(kwVal, defVal)) { /* if the requested kw is default, */
+ if(kwVal == defVal) { /* if the requested kw is default, */
/* and the default is in or in an ancestor of the current locale */
#if defined(URES_TREE_DEBUG)
- fprintf(stderr, "Removing unneeded var %s=%s\n", keyword, kwVal);
+ fprintf(stderr, "Removing unneeded var %s=%s\n", keyword, kwVal.data());
#endif
- kwVal[0]=0;
+ kwVal.clear();
}
}
}
uprv_strcpy(found, full);
- if(kwVal[0]) {
+ if(!kwVal.isEmpty()) {
uprv_strcat(found, "@");
uprv_strcat(found, keyword);
uprv_strcat(found, "=");
- uprv_strcat(found, kwVal);
+ uprv_strcat(found, kwVal.data());
} else if(!omitDefault) {
uprv_strcat(found, "@");
uprv_strcat(found, keyword);
@@ -3292,7 +3412,7 @@ ures_getKeywordValues(const char *path, const char *keyword, UErrorCode *status)
const char *locale;
int32_t locLen;
- UEnumeration *locs = NULL;
+ UEnumeration *locs = nullptr;
UResourceBundle item;
UResourceBundle subItem;
@@ -3304,15 +3424,15 @@ ures_getKeywordValues(const char *path, const char *keyword, UErrorCode *status)
if(U_FAILURE(*status)) {
ures_close(&item);
ures_close(&subItem);
- return NULL;
+ return nullptr;
}
valuesBuf[0]=0;
valuesBuf[1]=0;
while((locale = uenum_next(locs, &locLen, status)) != 0) {
- UResourceBundle *bund = NULL;
- UResourceBundle *subPtr = NULL;
+ UResourceBundle *bund = nullptr;
+ UResourceBundle *subPtr = nullptr;
UErrorCode subStatus = U_ZERO_ERROR; /* don't fail if a bundle is unopenable */
bund = ures_open(path, locale, &subStatus);
@@ -3331,7 +3451,7 @@ ures_getKeywordValues(const char *path, const char *keyword, UErrorCode *status)
path?path:"<ICUDATA>", keyword, locale, u_errorName(subStatus));
#endif
ures_close(bund);
- bund = NULL;
+ bund = nullptr;
continue;
}
@@ -3344,18 +3464,18 @@ ures_getKeywordValues(const char *path, const char *keyword, UErrorCode *status)
#if defined(URES_TREE_DEBUG)
/* fprintf(stderr, "%s | %s | %s | %s\n", path?path:"<ICUDATA>", keyword, locale, k); */
#endif
- if(k == NULL || *k == 0 ||
+ if(k == nullptr || *k == 0 ||
uprv_strcmp(k, DEFAULT_TAG) == 0 || uprv_strncmp(k, "private-", 8) == 0) {
// empty or "default" or unlisted type
continue;
}
for(i=0; i<valuesCount; i++) {
if(!uprv_strcmp(valuesList[i],k)) {
- k = NULL; /* found duplicate */
+ k = nullptr; /* found duplicate */
break;
}
}
- if(k != NULL) {
+ if(k != nullptr) {
int32_t kLen = (int32_t)uprv_strlen(k);
if((valuesCount >= (VALUES_LIST_SIZE-1)) || /* no more space in list .. */
((valuesIndex+kLen+1+1) >= VALUES_BUF_SIZE)) { /* no more space in buffer (string + 2 nulls) */
@@ -3389,10 +3509,10 @@ ures_getKeywordValues(const char *path, const char *keyword, UErrorCode *status)
/* This code isn't needed, and given the documentation warnings the implementation is suspect */
U_CAPI UBool U_EXPORT2
ures_equal(const UResourceBundle* res1, const UResourceBundle* res2){
- if(res1==NULL || res2==NULL){
+ if(res1==nullptr || res2==nullptr){
return res1==res2; /* pointer comparison */
}
- if(res1->fKey==NULL|| res2->fKey==NULL){
+ if(res1->fKey==nullptr|| res2->fKey==nullptr){
return (res1->fKey==res2->fKey);
}else{
if(uprv_strcmp(res1->fKey, res2->fKey)!=0){
@@ -3402,7 +3522,7 @@ ures_equal(const UResourceBundle* res1, const UResourceBundle* res2){
if(uprv_strcmp(res1->fData->fName, res2->fData->fName)!=0){
return false;
}
- if(res1->fData->fPath == NULL|| res2->fData->fPath==NULL){
+ if(res1->fData->fPath == nullptr|| res2->fData->fPath==nullptr){
return (res1->fData->fPath == res2->fData->fPath);
}else{
if(uprv_strcmp(res1->fData->fPath, res2->fData->fPath)!=0){
@@ -3425,14 +3545,14 @@ ures_equal(const UResourceBundle* res1, const UResourceBundle* res2){
}
U_CAPI UResourceBundle* U_EXPORT2
ures_clone(const UResourceBundle* res, UErrorCode* status){
- UResourceBundle* bundle = NULL;
- UResourceBundle* ret = NULL;
- if(U_FAILURE(*status) || res == NULL){
- return NULL;
+ UResourceBundle* bundle = nullptr;
+ UResourceBundle* ret = nullptr;
+ if(U_FAILURE(*status) || res == nullptr){
+ return nullptr;
}
bundle = ures_open(res->fData->fPath, res->fData->fName, status);
- if(res->fResPath!=NULL){
- ret = ures_findSubResource(bundle, res->fResPath, NULL, status);
+ if(res->fResPath!=nullptr){
+ ret = ures_findSubResource(bundle, res->fResPath, nullptr, status);
ures_close(bundle);
}else{
ret = bundle;
@@ -3441,8 +3561,8 @@ ures_clone(const UResourceBundle* res, UErrorCode* status){
}
U_CAPI const UResourceBundle* U_EXPORT2
ures_getParentBundle(const UResourceBundle* res){
- if(res==NULL){
- return NULL;
+ if(res==nullptr){
+ return nullptr;
}
return res->fParentRes;
}
@@ -3450,7 +3570,7 @@ ures_getParentBundle(const UResourceBundle* res){
U_CAPI void U_EXPORT2
ures_getVersionByKey(const UResourceBundle* res, const char *key, UVersionInfo ver, UErrorCode *status) {
- const UChar *str;
+ const char16_t *str;
int32_t len;
str = ures_getStringByKey(res, key, &len, status);
if(U_SUCCESS(*status)) {
diff --git a/Build/source/libs/icu/icu-src/source/common/uresdata.cpp b/Build/source/libs/icu/icu-src/source/common/uresdata.cpp
index a1222d415ce..b219e40e218 100644
--- a/Build/source/libs/icu/icu-src/source/common/uresdata.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/uresdata.cpp
@@ -62,8 +62,8 @@ static const struct {
static const struct {
int32_t length;
- UChar nul;
- UChar pad;
+ char16_t nul;
+ char16_t pad;
} gEmptyString={ 0, 0, 0 };
/*
@@ -248,7 +248,7 @@ res_read(ResourceData *pResData,
if(U_FAILURE(*errorCode)) {
return;
}
- if(!isAcceptable(formatVersion, NULL, NULL, pInfo)) {
+ if(!isAcceptable(formatVersion, nullptr, nullptr, pInfo)) {
*errorCode=U_INVALID_FORMAT_ERROR;
return;
}
@@ -274,9 +274,9 @@ res_load(ResourceData *pResData,
U_CFUNC void
res_unload(ResourceData *pResData) {
- if(pResData->data!=NULL) {
+ if(pResData->data!=nullptr) {
udata_close(pResData->data);
- pResData->data=NULL;
+ pResData->data=nullptr;
}
}
@@ -307,17 +307,17 @@ res_getPublicType(Resource res) {
return (UResType)gPublicTypes[RES_GET_TYPE(res)];
}
-U_CAPI const UChar * U_EXPORT2
+U_CAPI const char16_t * U_EXPORT2
res_getStringNoTrace(const ResourceData *pResData, Resource res, int32_t *pLength) {
- const UChar *p;
+ const char16_t *p;
uint32_t offset=RES_GET_OFFSET(res);
int32_t length;
if(RES_GET_TYPE(res)==URES_STRING_V2) {
int32_t first;
if((int32_t)offset<pResData->poolStringIndexLimit) {
- p=(const UChar *)pResData->poolBundleStrings+offset;
+ p=(const char16_t *)pResData->poolBundleStrings+offset;
} else {
- p=(const UChar *)pResData->p16BitUnits+(offset-pResData->poolStringIndexLimit);
+ p=(const char16_t *)pResData->p16BitUnits+(offset-pResData->poolStringIndexLimit);
}
first=*p;
if(!U16_IS_TRAIL(first)) {
@@ -335,9 +335,9 @@ res_getStringNoTrace(const ResourceData *pResData, Resource res, int32_t *pLengt
} else if(res==offset) /* RES_GET_TYPE(res)==URES_STRING */ {
const int32_t *p32= res==0 ? &gEmptyString.length : pResData->pRoot+res;
length=*p32++;
- p=(const UChar *)p32;
+ p=(const char16_t *)p32;
} else {
- p=NULL;
+ p=nullptr;
length=0;
}
if(pLength) {
@@ -361,14 +361,14 @@ UBool isNoInheritanceMarker(const ResourceData *pResData, Resource res) {
} else if (res == offset) {
const int32_t *p32=pResData->pRoot+res;
int32_t length=*p32;
- const UChar *p=(const UChar *)p32;
+ const char16_t *p=(const char16_t *)p32;
return length == 3 && p[2] == 0x2205 && p[3] == 0x2205 && p[4] == 0x2205;
} else if (RES_GET_TYPE(res) == URES_STRING_V2) {
- const UChar *p;
+ const char16_t *p;
if((int32_t)offset<pResData->poolStringIndexLimit) {
- p=(const UChar *)pResData->poolBundleStrings+offset;
+ p=(const char16_t *)pResData->poolBundleStrings+offset;
} else {
- p=(const UChar *)pResData->p16BitUnits+(offset-pResData->poolStringIndexLimit);
+ p=(const char16_t *)pResData->p16BitUnits+(offset-pResData->poolStringIndexLimit);
}
int32_t first=*p;
if (first == 0x2205) { // implicit length
@@ -389,7 +389,7 @@ int32_t getStringArray(const ResourceData *pResData, const icu::ResourceArray &a
if(U_FAILURE(errorCode)) {
return 0;
}
- if(dest == NULL ? capacity != 0 : capacity < 0) {
+ if(dest == nullptr ? capacity != 0 : capacity < 0) {
errorCode = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -404,8 +404,8 @@ int32_t getStringArray(const ResourceData *pResData, const icu::ResourceArray &a
for(int32_t i = 0; i < length; ++i) {
int32_t sLength;
// No tracing: handled by the caller
- const UChar *s = res_getStringNoTrace(pResData, array.internalGetResource(pResData, i), &sLength);
- if(s == NULL) {
+ const char16_t *s = res_getStringNoTrace(pResData, array.internalGetResource(pResData, i), &sLength);
+ if(s == nullptr) {
errorCode = U_RESOURCE_TYPE_MISMATCH;
return 0;
}
@@ -416,17 +416,17 @@ int32_t getStringArray(const ResourceData *pResData, const icu::ResourceArray &a
} // namespace
-U_CAPI const UChar * U_EXPORT2
+U_CAPI const char16_t * U_EXPORT2
res_getAlias(const ResourceData *pResData, Resource res, int32_t *pLength) {
- const UChar *p;
+ const char16_t *p;
uint32_t offset=RES_GET_OFFSET(res);
int32_t length;
if(RES_GET_TYPE(res)==URES_ALIAS) {
const int32_t *p32= offset==0 ? &gEmptyString.length : pResData->pRoot+offset;
length=*p32++;
- p=(const UChar *)p32;
+ p=(const char16_t *)p32;
} else {
- p=NULL;
+ p=nullptr;
length=0;
}
if(pLength) {
@@ -445,7 +445,7 @@ res_getBinaryNoTrace(const ResourceData *pResData, Resource res, int32_t *pLengt
length=*p32++;
p=(const uint8_t *)p32;
} else {
- p=NULL;
+ p=nullptr;
length=0;
}
if(pLength) {
@@ -464,7 +464,7 @@ res_getIntVectorNoTrace(const ResourceData *pResData, Resource res, int32_t *pLe
p= offset==0 ? (const int32_t *)&gEmpty32 : pResData->pRoot+offset;
length=*p++;
} else {
- p=NULL;
+ p=nullptr;
length=0;
}
if(pLength) {
@@ -505,23 +505,23 @@ UResType ResourceDataValue::getType() const {
return res_getPublicType(res);
}
-const UChar *ResourceDataValue::getString(int32_t &length, UErrorCode &errorCode) const {
+const char16_t *ResourceDataValue::getString(int32_t &length, UErrorCode &errorCode) const {
if(U_FAILURE(errorCode)) {
- return NULL;
+ return nullptr;
}
- const UChar *s = res_getString(fTraceInfo, &getData(), res, &length);
- if(s == NULL) {
+ const char16_t *s = res_getString(fTraceInfo, &getData(), res, &length);
+ if(s == nullptr) {
errorCode = U_RESOURCE_TYPE_MISMATCH;
}
return s;
}
-const UChar *ResourceDataValue::getAliasString(int32_t &length, UErrorCode &errorCode) const {
+const char16_t *ResourceDataValue::getAliasString(int32_t &length, UErrorCode &errorCode) const {
if(U_FAILURE(errorCode)) {
- return NULL;
+ return nullptr;
}
- const UChar *s = res_getAlias(&getData(), res, &length);
- if(s == NULL) {
+ const char16_t *s = res_getAlias(&getData(), res, &length);
+ if(s == nullptr) {
errorCode = U_RESOURCE_TYPE_MISMATCH;
}
return s;
@@ -549,10 +549,10 @@ uint32_t ResourceDataValue::getUInt(UErrorCode &errorCode) const {
const int32_t *ResourceDataValue::getIntVector(int32_t &length, UErrorCode &errorCode) const {
if(U_FAILURE(errorCode)) {
- return NULL;
+ return nullptr;
}
const int32_t *iv = res_getIntVector(fTraceInfo, &getData(), res, &length);
- if(iv == NULL) {
+ if(iv == nullptr) {
errorCode = U_RESOURCE_TYPE_MISMATCH;
}
return iv;
@@ -560,10 +560,10 @@ const int32_t *ResourceDataValue::getIntVector(int32_t &length, UErrorCode &erro
const uint8_t *ResourceDataValue::getBinary(int32_t &length, UErrorCode &errorCode) const {
if(U_FAILURE(errorCode)) {
- return NULL;
+ return nullptr;
}
const uint8_t *b = res_getBinary(fTraceInfo, &getData(), res, &length);
- if(b == NULL) {
+ if(b == nullptr) {
errorCode = U_RESOURCE_TYPE_MISMATCH;
}
return b;
@@ -573,8 +573,8 @@ ResourceArray ResourceDataValue::getArray(UErrorCode &errorCode) const {
if(U_FAILURE(errorCode)) {
return ResourceArray();
}
- const uint16_t *items16 = NULL;
- const Resource *items32 = NULL;
+ const uint16_t *items16 = nullptr;
+ const Resource *items32 = nullptr;
uint32_t offset=RES_GET_OFFSET(res);
int32_t length = 0;
switch(RES_GET_TYPE(res)) {
@@ -599,10 +599,10 @@ ResourceTable ResourceDataValue::getTable(UErrorCode &errorCode) const {
if(U_FAILURE(errorCode)) {
return ResourceTable();
}
- const uint16_t *keys16 = NULL;
- const int32_t *keys32 = NULL;
- const uint16_t *items16 = NULL;
- const Resource *items32 = NULL;
+ const uint16_t *keys16 = nullptr;
+ const int32_t *keys32 = nullptr;
+ const uint16_t *items16 = nullptr;
+ const Resource *items32 = nullptr;
uint32_t offset = RES_GET_OFFSET(res);
int32_t length = 0;
switch(RES_GET_TYPE(res)) {
@@ -649,7 +649,7 @@ int32_t ResourceDataValue::getStringArrayOrStringAsArray(UnicodeString *dest, in
if(U_FAILURE(errorCode)) {
return 0;
}
- if(dest == NULL ? capacity != 0 : capacity < 0) {
+ if(dest == nullptr ? capacity != 0 : capacity < 0) {
errorCode = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -658,8 +658,8 @@ int32_t ResourceDataValue::getStringArrayOrStringAsArray(UnicodeString *dest, in
return 1;
}
int32_t sLength;
- const UChar *s = res_getString(fTraceInfo, &getData(), res, &sLength);
- if(s != NULL) {
+ const char16_t *s = res_getString(fTraceInfo, &getData(), res, &sLength);
+ if(s != nullptr) {
dest[0].setTo(true, s, sLength);
return 1;
}
@@ -673,8 +673,8 @@ UnicodeString ResourceDataValue::getStringOrFirstOfArray(UErrorCode &errorCode)
return us;
}
int32_t sLength;
- const UChar *s = res_getString(fTraceInfo, &getData(), res, &sLength);
- if(s != NULL) {
+ const char16_t *s = res_getString(fTraceInfo, &getData(), res, &sLength);
+ if(s != nullptr) {
us.setTo(true, s, sLength);
return us;
}
@@ -685,7 +685,7 @@ UnicodeString ResourceDataValue::getStringOrFirstOfArray(UErrorCode &errorCode)
if(array.getSize() > 0) {
// Tracing is already performed above (unimportant for trace that this is an array)
s = res_getStringNoTrace(&getData(), array.internalGetResource(&getData(), 0), &sLength);
- if(s != NULL) {
+ if(s != nullptr) {
us.setTo(true, s, sLength);
return us;
}
@@ -714,7 +714,7 @@ res_getTableItemByKey(const ResourceData *pResData, Resource table,
uint32_t offset=RES_GET_OFFSET(table);
int32_t length;
int32_t idx;
- if(key == NULL || *key == NULL) {
+ if(key == nullptr || *key == nullptr) {
return RES_BOGUS;
}
switch(RES_GET_TYPE(table)) {
@@ -771,7 +771,7 @@ res_getTableItemByIndex(const ResourceData *pResData, Resource table,
length=*p++;
if(indexR<length) {
const Resource *p32=(const Resource *)(p+length+(~length&1));
- if(key!=NULL) {
+ if(key!=nullptr) {
*key=RES_GET_KEY16(pResData, p[indexR]);
}
return p32[indexR];
@@ -783,7 +783,7 @@ res_getTableItemByIndex(const ResourceData *pResData, Resource table,
const uint16_t *p=pResData->p16BitUnits+offset;
length=*p++;
if(indexR<length) {
- if(key!=NULL) {
+ if(key!=nullptr) {
*key=RES_GET_KEY16(pResData, p[indexR]);
}
return makeResourceFrom16(pResData, p[length+indexR]);
@@ -795,7 +795,7 @@ res_getTableItemByIndex(const ResourceData *pResData, Resource table,
const int32_t *p= pResData->pRoot+offset;
length=*p++;
if(indexR<length) {
- if(key!=NULL) {
+ if(key!=nullptr) {
*key=RES_GET_KEY32(pResData, p[indexR]);
}
return (Resource)p[length+indexR];
@@ -895,7 +895,7 @@ res_getArrayItem(const ResourceData *pResData, Resource array, int32_t indexR) {
}
uint32_t icu::ResourceArray::internalGetResource(const ResourceData *pResData, int32_t i) const {
- if (items16 != NULL) {
+ if (items16 != nullptr) {
return makeResourceFrom16(pResData, items16[i]);
} else {
return items32[i];
@@ -920,7 +920,7 @@ UBool icu::ResourceArray::getValue(int32_t i, icu::ResourceValue &value) const {
U_CFUNC Resource
res_findResource(const ResourceData *pResData, Resource r, char** path, const char** key) {
char *pathP = *path, *nextSepP = *path;
- char *closeIndex = NULL;
+ char *closeIndex = nullptr;
Resource t1 = r;
Resource t2;
int32_t indexR = 0;
@@ -944,7 +944,7 @@ res_findResource(const ResourceData *pResData, Resource r, char** path, const ch
/* if there are more separators, terminate string
* and set path to the remaining part of the string
*/
- if(nextSepP != NULL) {
+ if(nextSepP != nullptr) {
if(nextSepP == pathP) {
// Empty key string.
return RES_BOGUS;
@@ -967,7 +967,7 @@ res_findResource(const ResourceData *pResData, Resource r, char** path, const ch
} else {
t2 = RES_BOGUS; /* have an array, but don't have a valid index */
}
- *key = NULL;
+ *key = nullptr;
} else { /* can't do much here, except setting t2 to bogus */
t2 = RES_BOGUS;
}
@@ -1041,7 +1041,7 @@ enum {
static const char *const gUnknownKey="";
/* resource table key for collation binaries: "%%CollationBin" */
-static const UChar gCollationBinKey[]={
+static const char16_t gCollationBinKey[]={
0x25, 0x25,
0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x42, 0x69, 0x6e,
@@ -1098,7 +1098,7 @@ ures_swapResource(const UDataSwapper *ds,
count=udata_readInt32(ds, (int32_t)*p);
/* swap length */
ds->swapArray32(ds, p, 4, q, pErrorCode);
- /* swap each UChar (the terminating NUL would not change) */
+ /* swap each char16_t (the terminating NUL would not change) */
ds->swapArray16(ds, p+1, 2*count, q+1, pErrorCode);
break;
case URES_BINARY:
@@ -1109,7 +1109,7 @@ ures_swapResource(const UDataSwapper *ds,
/* swap known formats */
#if !UCONFIG_NO_COLLATION
- if( key!=NULL && /* the binary is in a table */
+ if( key!=nullptr && /* the binary is in a table */
(key!=gUnknownKey ?
/* its table key string is "%%CollationBin" */
0==ds->compareInvChars(ds, key, -1,
@@ -1139,7 +1139,7 @@ ures_swapResource(const UDataSwapper *ds,
qKey16=(uint16_t *)q;
count=ds->readUInt16(*pKey16);
- pKey32=qKey32=NULL;
+ pKey32=qKey32=nullptr;
/* swap count */
ds->swapArray16(ds, pKey16++, 2, qKey16++, pErrorCode);
@@ -1151,7 +1151,7 @@ ures_swapResource(const UDataSwapper *ds,
qKey32=(int32_t *)q;
count=udata_readInt32(ds, *pKey32);
- pKey16=qKey16=NULL;
+ pKey16=qKey16=nullptr;
/* swap count */
ds->swapArray32(ds, pKey32++, 4, qKey32++, pErrorCode);
@@ -1169,7 +1169,7 @@ ures_swapResource(const UDataSwapper *ds,
/* recurse */
for(i=0; i<count; ++i) {
const char *itemKey=gUnknownKey;
- if(pKey16!=NULL) {
+ if(pKey16!=nullptr) {
int32_t keyOffset=ds->readUInt16(pKey16[i]);
if(keyOffset<pTempTable->localKeyLimit) {
itemKey=(const char *)outBundle+keyOffset;
@@ -1191,7 +1191,7 @@ ures_swapResource(const UDataSwapper *ds,
if(pTempTable->majorFormatVersion>1 || ds->inCharset==ds->outCharset) {
/* no need to sort, just swap the offset/value arrays */
- if(pKey16!=NULL) {
+ if(pKey16!=nullptr) {
ds->swapArray16(ds, pKey16, count*2, qKey16, pErrorCode);
ds->swapArray32(ds, p, count*4, q, pErrorCode);
} else {
@@ -1209,7 +1209,7 @@ ures_swapResource(const UDataSwapper *ds,
* sorting indexes and sort that.
* Then we permutate and copy/swap the actual values.
*/
- if(pKey16!=NULL) {
+ if(pKey16!=nullptr) {
for(i=0; i<count; ++i) {
pTempTable->rows[i].keyIndex=ds->readUInt16(pKey16[i]);
pTempTable->rows[i].sortIndex=i;
@@ -1237,7 +1237,7 @@ ures_swapResource(const UDataSwapper *ds,
* before the results are copied to the outBundle.
*/
/* keys */
- if(pKey16!=NULL) {
+ if(pKey16!=nullptr) {
uint16_t *rKey16;
if(pKey16!=qKey16) {
@@ -1301,7 +1301,7 @@ ures_swapResource(const UDataSwapper *ds,
/* recurse */
for(i=0; i<count; ++i) {
item=ds->readUInt32(p[i]);
- ures_swapResource(ds, inBundle, outBundle, item, NULL, pTempTable, pErrorCode);
+ ures_swapResource(ds, inBundle, outBundle, item, nullptr, pTempTable, pErrorCode);
if(U_FAILURE(*pErrorCode)) {
udata_printError(ds, "ures_swapResource(array res=%08x)[%d].recurse(%08x) failed\n",
res, i, item);
@@ -1345,7 +1345,7 @@ ures_swap(const UDataSwapper *ds,
/* udata_swapDataHeader checks the arguments */
headerSize=udata_swapDataHeader(ds, inData, length, outData, pErrorCode);
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return 0;
}
@@ -1439,7 +1439,7 @@ ures_swap(const UDataSwapper *ds,
tempTable.resFlags=stackResFlags;
} else {
tempTable.resFlags=(uint32_t *)uprv_malloc(resFlagsLength);
- if(tempTable.resFlags==NULL) {
+ if(tempTable.resFlags==nullptr) {
udata_printError(ds, "ures_swap(): unable to allocate memory for tracking resources\n");
*pErrorCode=U_MEMORY_ALLOCATION_ERROR;
return 0;
@@ -1476,7 +1476,7 @@ ures_swap(const UDataSwapper *ds,
tempTable.resort=resort;
} else {
tempTable.rows=(Row *)uprv_malloc(maxTableLength*sizeof(Row)+maxTableLength*4);
- if(tempTable.rows==NULL) {
+ if(tempTable.rows==nullptr) {
udata_printError(ds, "ures_swap(): unable to allocate memory for sorting tables (max length: %d)\n",
maxTableLength);
*pErrorCode=U_MEMORY_ALLOCATION_ERROR;
@@ -1489,7 +1489,7 @@ ures_swap(const UDataSwapper *ds,
}
/* swap the resources */
- ures_swapResource(ds, inBundle, outBundle, rootRes, NULL, &tempTable, pErrorCode);
+ ures_swapResource(ds, inBundle, outBundle, rootRes, nullptr, &tempTable, pErrorCode);
if(U_FAILURE(*pErrorCode)) {
udata_printError(ds, "ures_swapResource(root res=%08x) failed\n",
rootRes);
diff --git a/Build/source/libs/icu/icu-src/source/common/uresdata.h b/Build/source/libs/icu/icu-src/source/common/uresdata.h
index b8a3adba634..171189051f1 100644
--- a/Build/source/libs/icu/icu-src/source/common/uresdata.h
+++ b/Build/source/libs/icu/icu-src/source/common/uresdata.h
@@ -482,7 +482,7 @@ U_CFUNC Resource res_findResource(const ResourceData *pResData, Resource r,
U_NAMESPACE_BEGIN
-inline const UChar* res_getString(const ResourceTracer& traceInfo,
+inline const char16_t* res_getString(const ResourceTracer& traceInfo,
const ResourceData *pResData, Resource res, int32_t *pLength) {
traceInfo.trace("string");
return res_getStringNoTrace(pResData, res, pLength);
@@ -536,8 +536,8 @@ public:
UResourceDataEntry *getValidLocaleDataEntry() const { return validLocaleDataEntry; }
Resource getResource() const { return res; }
virtual UResType getType() const override;
- virtual const UChar *getString(int32_t &length, UErrorCode &errorCode) const override;
- virtual const UChar *getAliasString(int32_t &length, UErrorCode &errorCode) const override;
+ virtual const char16_t *getString(int32_t &length, UErrorCode &errorCode) const override;
+ virtual const char16_t *getAliasString(int32_t &length, UErrorCode &errorCode) const override;
virtual int32_t getInt(UErrorCode &errorCode) const override;
virtual uint32_t getUInt(UErrorCode &errorCode) const override;
virtual const int32_t *getIntVector(int32_t &length, UErrorCode &errorCode) const override;
diff --git a/Build/source/libs/icu/icu-src/source/common/uresimp.h b/Build/source/libs/icu/icu-src/source/common/uresimp.h
index 4ac09bd8c4d..8a1679717e5 100644
--- a/Build/source/libs/icu/icu-src/source/common/uresimp.h
+++ b/Build/source/libs/icu/icu-src/source/common/uresimp.h
@@ -118,10 +118,10 @@ U_NAMESPACE_BEGIN
class U_COMMON_API StackUResourceBundle {
public:
// No heap allocation. Use only on the stack.
- static void* U_EXPORT2 operator new(size_t) U_NOEXCEPT = delete;
- static void* U_EXPORT2 operator new[](size_t) U_NOEXCEPT = delete;
+ static void* U_EXPORT2 operator new(size_t) noexcept = delete;
+ static void* U_EXPORT2 operator new[](size_t) noexcept = delete;
#if U_HAVE_PLACEMENT_NEW
- static void* U_EXPORT2 operator new(size_t, void*) U_NOEXCEPT = delete;
+ static void* U_EXPORT2 operator new(size_t, void*) noexcept = delete;
#endif
StackUResourceBundle();
diff --git a/Build/source/libs/icu/icu-src/source/common/usc_impl.cpp b/Build/source/libs/icu/icu-src/source/common/usc_impl.cpp
index a4e2fc6069a..cd5a4e5b8db 100644
--- a/Build/source/libs/icu/icu-src/source/common/usc_impl.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/usc_impl.cpp
@@ -41,7 +41,7 @@ struct ParenStackEntry
struct UScriptRun
{
int32_t textLength;
- const UChar *textArray;
+ const char16_t *textArray;
int32_t scriptStart;
int32_t scriptLimit;
@@ -189,19 +189,19 @@ sameScript(UScriptCode scriptOne, UScriptCode scriptTwo)
}
U_CAPI UScriptRun * U_EXPORT2
-uscript_openRun(const UChar *src, int32_t length, UErrorCode *pErrorCode)
+uscript_openRun(const char16_t *src, int32_t length, UErrorCode *pErrorCode)
{
- UScriptRun *result = NULL;
+ UScriptRun *result = nullptr;
- if (pErrorCode == NULL || U_FAILURE(*pErrorCode)) {
- return NULL;
+ if (pErrorCode == nullptr || U_FAILURE(*pErrorCode)) {
+ return nullptr;
}
result = (UScriptRun *)uprv_malloc(sizeof (UScriptRun));
- if (result == NULL) {
+ if (result == nullptr) {
*pErrorCode = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
uscript_setRunText(result, src, length, pErrorCode);
@@ -209,7 +209,7 @@ uscript_openRun(const UChar *src, int32_t length, UErrorCode *pErrorCode)
/* Release the UScriptRun if uscript_setRunText() returns an error */
if (U_FAILURE(*pErrorCode)) {
uprv_free(result);
- result = NULL;
+ result = nullptr;
}
return result;
@@ -218,7 +218,7 @@ uscript_openRun(const UChar *src, int32_t length, UErrorCode *pErrorCode)
U_CAPI void U_EXPORT2
uscript_closeRun(UScriptRun *scriptRun)
{
- if (scriptRun != NULL) {
+ if (scriptRun != nullptr) {
uprv_free(scriptRun);
}
}
@@ -226,7 +226,7 @@ uscript_closeRun(UScriptRun *scriptRun)
U_CAPI void U_EXPORT2
uscript_resetRun(UScriptRun *scriptRun)
{
- if (scriptRun != NULL) {
+ if (scriptRun != nullptr) {
scriptRun->scriptStart = 0;
scriptRun->scriptLimit = 0;
scriptRun->scriptCode = USCRIPT_INVALID_CODE;
@@ -237,13 +237,13 @@ uscript_resetRun(UScriptRun *scriptRun)
}
U_CAPI void U_EXPORT2
-uscript_setRunText(UScriptRun *scriptRun, const UChar *src, int32_t length, UErrorCode *pErrorCode)
+uscript_setRunText(UScriptRun *scriptRun, const char16_t *src, int32_t length, UErrorCode *pErrorCode)
{
- if (pErrorCode == NULL || U_FAILURE(*pErrorCode)) {
+ if (pErrorCode == nullptr || U_FAILURE(*pErrorCode)) {
return;
}
- if (scriptRun == NULL || length < 0 || ((src == NULL) != (length == 0))) {
+ if (scriptRun == nullptr || length < 0 || ((src == nullptr) != (length == 0))) {
*pErrorCode = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
@@ -260,7 +260,7 @@ uscript_nextRun(UScriptRun *scriptRun, int32_t *pRunStart, int32_t *pRunLimit, U
UErrorCode error = U_ZERO_ERROR;
/* if we've fallen off the end of the text, we're done */
- if (scriptRun == NULL || scriptRun->scriptLimit >= scriptRun->textLength) {
+ if (scriptRun == nullptr || scriptRun->scriptLimit >= scriptRun->textLength) {
return false;
}
@@ -268,8 +268,8 @@ uscript_nextRun(UScriptRun *scriptRun, int32_t *pRunStart, int32_t *pRunLimit, U
scriptRun->scriptCode = USCRIPT_COMMON;
for (scriptRun->scriptStart = scriptRun->scriptLimit; scriptRun->scriptLimit < scriptRun->textLength; scriptRun->scriptLimit += 1) {
- UChar high = scriptRun->textArray[scriptRun->scriptLimit];
- UChar32 ch = high;
+ char16_t high = scriptRun->textArray[scriptRun->scriptLimit];
+ UChar32 ch = high;
UScriptCode sc;
int32_t pairIndex;
@@ -278,7 +278,7 @@ uscript_nextRun(UScriptRun *scriptRun, int32_t *pRunStart, int32_t *pRunLimit, U
* in the text, see if it's followed by a low surrogate
*/
if (high >= 0xD800 && high <= 0xDBFF && scriptRun->scriptLimit < scriptRun->textLength - 1) {
- UChar low = scriptRun->textArray[scriptRun->scriptLimit + 1];
+ char16_t low = scriptRun->textArray[scriptRun->scriptLimit + 1];
/*
* if it is followed by a low surrogate,
@@ -345,15 +345,15 @@ uscript_nextRun(UScriptRun *scriptRun, int32_t *pRunStart, int32_t *pRunLimit, U
}
- if (pRunStart != NULL) {
+ if (pRunStart != nullptr) {
*pRunStart = scriptRun->scriptStart;
}
- if (pRunLimit != NULL) {
+ if (pRunLimit != nullptr) {
*pRunLimit = scriptRun->scriptLimit;
}
- if (pRunScript != NULL) {
+ if (pRunScript != nullptr) {
*pRunScript = scriptRun->scriptCode;
}
diff --git a/Build/source/libs/icu/icu-src/source/common/uscript.cpp b/Build/source/libs/icu/icu-src/source/common/uscript.cpp
index 1ededbb268a..3cc2b6675c9 100644
--- a/Build/source/libs/icu/icu-src/source/common/uscript.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/uscript.cpp
@@ -107,14 +107,27 @@ uscript_getCode(const char* nameOrAbbrOrLocale,
if(U_FAILURE(*err)) {
return 0;
}
- if(nameOrAbbrOrLocale==NULL ||
- (fillIn == NULL ? capacity != 0 : capacity < 0)) {
+ if(nameOrAbbrOrLocale==nullptr ||
+ (fillIn == nullptr ? capacity != 0 : capacity < 0)) {
*err = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
triedCode = false;
- if(uprv_strchr(nameOrAbbrOrLocale, '-')==NULL && uprv_strchr(nameOrAbbrOrLocale, '_')==NULL ){
+ const char* lastSepPtr = uprv_strrchr(nameOrAbbrOrLocale, '-');
+ if (lastSepPtr==nullptr) {
+ lastSepPtr = uprv_strrchr(nameOrAbbrOrLocale, '_');
+ }
+ // Favor interpretation of nameOrAbbrOrLocale as a script alias if either
+ // 1. nameOrAbbrOrLocale does not contain -/_. Handles Han, Mro, Nko, etc.
+ // 2. The last instance of -/_ is at offset 3, and the portion after that is
+ // longer than 4 characters (i.e. not a script or region code). This handles
+ // Old_Hungarian, Old_Italic, etc. ("old" is a valid language code)
+ // 3. The last instance of -/_ is at offset 7, and the portion after that is
+ // 3 characters. This handles New_Tai_Lue ("new" is a valid language code).
+ if (lastSepPtr==nullptr
+ || (lastSepPtr-nameOrAbbrOrLocale == 3 && uprv_strlen(nameOrAbbrOrLocale) > 8)
+ || (lastSepPtr-nameOrAbbrOrLocale == 7 && uprv_strlen(nameOrAbbrOrLocale) == 11) ) {
/* try long and abbreviated script names first */
UScriptCode code = (UScriptCode) u_getPropertyValueEnum(UCHAR_SCRIPT, nameOrAbbrOrLocale);
if(code!=USCRIPT_INVALID_CODE) {
diff --git a/Build/source/libs/icu/icu-src/source/common/uscript_props.cpp b/Build/source/libs/icu/icu-src/source/common/uscript_props.cpp
index 886acfafa88..b26164408a4 100644
--- a/Build/source/libs/icu/icu-src/source/common/uscript_props.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/uscript_props.cpp
@@ -258,9 +258,9 @@ int32_t getScriptProps(UScriptCode script) {
} // namespace
U_CAPI int32_t U_EXPORT2
-uscript_getSampleString(UScriptCode script, UChar *dest, int32_t capacity, UErrorCode *pErrorCode) {
+uscript_getSampleString(UScriptCode script, char16_t *dest, int32_t capacity, UErrorCode *pErrorCode) {
if(U_FAILURE(*pErrorCode)) { return 0; }
- if(capacity < 0 || (capacity > 0 && dest == NULL)) {
+ if(capacity < 0 || (capacity > 0 && dest == nullptr)) {
*pErrorCode = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
diff --git a/Build/source/libs/icu/icu-src/source/common/uset.cpp b/Build/source/libs/icu/icu-src/source/common/uset.cpp
index 2152693560b..b2d0b91d4b6 100644
--- a/Build/source/libs/icu/icu-src/source/common/uset.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/uset.cpp
@@ -87,14 +87,14 @@ uset_addRange(USet* set, UChar32 start, UChar32 end) {
}
U_CAPI void U_EXPORT2
-uset_addString(USet* set, const UChar* str, int32_t strLen) {
+uset_addString(USet* set, const char16_t* str, int32_t strLen) {
// UnicodeString handles -1 for strLen
UnicodeString s(strLen<0, str, strLen);
((UnicodeSet*) set)->UnicodeSet::add(s);
}
U_CAPI void U_EXPORT2
-uset_addAllCodePoints(USet* set, const UChar *str, int32_t strLen) {
+uset_addAllCodePoints(USet* set, const char16_t *str, int32_t strLen) {
// UnicodeString handles -1 for strLen
UnicodeString s(str, strLen);
((UnicodeSet*) set)->UnicodeSet::addAll(s);
@@ -111,13 +111,13 @@ uset_removeRange(USet* set, UChar32 start, UChar32 end) {
}
U_CAPI void U_EXPORT2
-uset_removeString(USet* set, const UChar* str, int32_t strLen) {
+uset_removeString(USet* set, const char16_t* str, int32_t strLen) {
UnicodeString s(strLen==-1, str, strLen);
((UnicodeSet*) set)->UnicodeSet::remove(s);
}
U_CAPI void U_EXPORT2
-uset_removeAllCodePoints(USet *set, const UChar *str, int32_t length) {
+uset_removeAllCodePoints(USet *set, const char16_t *str, int32_t length) {
UnicodeString s(length==-1, str, length);
((UnicodeSet*) set)->UnicodeSet::removeAll(s);
}
@@ -133,13 +133,13 @@ uset_retain(USet* set, UChar32 start, UChar32 end) {
}
U_CAPI void U_EXPORT2
-uset_retainString(USet *set, const UChar *str, int32_t length) {
+uset_retainString(USet *set, const char16_t *str, int32_t length) {
UnicodeString s(length==-1, str, length);
((UnicodeSet*) set)->UnicodeSet::retain(s);
}
U_CAPI void U_EXPORT2
-uset_retainAllCodePoints(USet *set, const UChar *str, int32_t length) {
+uset_retainAllCodePoints(USet *set, const char16_t *str, int32_t length) {
UnicodeString s(length==-1, str, length);
((UnicodeSet*) set)->UnicodeSet::retainAll(s);
}
@@ -165,13 +165,13 @@ uset_complementRange(USet *set, UChar32 start, UChar32 end) {
}
U_CAPI void U_EXPORT2
-uset_complementString(USet *set, const UChar *str, int32_t length) {
+uset_complementString(USet *set, const char16_t *str, int32_t length) {
UnicodeString s(length==-1, str, length);
((UnicodeSet*) set)->UnicodeSet::complement(s);
}
U_CAPI void U_EXPORT2
-uset_complementAllCodePoints(USet *set, const UChar *str, int32_t length) {
+uset_complementAllCodePoints(USet *set, const char16_t *str, int32_t length) {
UnicodeString s(length==-1, str, length);
((UnicodeSet*) set)->UnicodeSet::complementAll(s);
}
@@ -212,7 +212,7 @@ uset_containsRange(const USet* set, UChar32 start, UChar32 end) {
}
U_CAPI UBool U_EXPORT2
-uset_containsString(const USet* set, const UChar* str, int32_t strLen) {
+uset_containsString(const USet* set, const char16_t* str, int32_t strLen) {
UnicodeString s(strLen==-1, str, strLen);
return ((const UnicodeSet*) set)->UnicodeSet::contains(s);
}
@@ -223,7 +223,7 @@ uset_containsAll(const USet* set1, const USet* set2) {
}
U_CAPI UBool U_EXPORT2
-uset_containsAllCodePoints(const USet* set, const UChar *str, int32_t strLen) {
+uset_containsAllCodePoints(const USet* set, const char16_t *str, int32_t strLen) {
// Create a string alias, since nothing is being added to the set.
UnicodeString s(strLen==-1, str, strLen);
return ((const UnicodeSet*) set)->UnicodeSet::containsAll(s);
@@ -240,12 +240,12 @@ uset_containsSome(const USet* set1, const USet* set2) {
}
U_CAPI int32_t U_EXPORT2
-uset_span(const USet *set, const UChar *s, int32_t length, USetSpanCondition spanCondition) {
+uset_span(const USet *set, const char16_t *s, int32_t length, USetSpanCondition spanCondition) {
return ((UnicodeSet*) set)->UnicodeSet::span(s, length, spanCondition);
}
U_CAPI int32_t U_EXPORT2
-uset_spanBack(const USet *set, const UChar *s, int32_t length, USetSpanCondition spanCondition) {
+uset_spanBack(const USet *set, const char16_t *s, int32_t length, USetSpanCondition spanCondition) {
return ((UnicodeSet*) set)->UnicodeSet::spanBack(s, length, spanCondition);
}
@@ -315,7 +315,7 @@ uset_getItemCount(const USet* uset) {
U_CAPI int32_t U_EXPORT2
uset_getItem(const USet* uset, int32_t itemIndex,
UChar32* start, UChar32* end,
- UChar* str, int32_t strCapacity,
+ char16_t* str, int32_t strCapacity,
UErrorCode* ec) {
if (U_FAILURE(*ec)) return 0;
const UnicodeSet& set = *(const UnicodeSet*)uset;
@@ -372,7 +372,7 @@ uset_getItem(const USet* uset, int32_t itemIndex,
*/
U_CAPI int32_t U_EXPORT2
uset_serialize(const USet* set, uint16_t* dest, int32_t destCapacity, UErrorCode* ec) {
- if (ec==NULL || U_FAILURE(*ec)) {
+ if (ec==nullptr || U_FAILURE(*ec)) {
return 0;
}
@@ -383,10 +383,10 @@ U_CAPI UBool U_EXPORT2
uset_getSerializedSet(USerializedSet* fillSet, const uint16_t* src, int32_t srcLength) {
int32_t length;
- if(fillSet==NULL) {
+ if(fillSet==nullptr) {
return false;
}
- if(src==NULL || srcLength<=0) {
+ if(src==nullptr || srcLength<=0) {
fillSet->length=fillSet->bmpLength=0;
return false;
}
@@ -415,7 +415,7 @@ uset_getSerializedSet(USerializedSet* fillSet, const uint16_t* src, int32_t srcL
U_CAPI void U_EXPORT2
uset_setSerializedToOne(USerializedSet* fillSet, UChar32 c) {
- if(fillSet==NULL || (uint32_t)c>0x10ffff) {
+ if(fillSet==nullptr || (uint32_t)c>0x10ffff) {
return;
}
@@ -450,7 +450,7 @@ U_CAPI UBool U_EXPORT2
uset_serializedContains(const USerializedSet* set, UChar32 c) {
const uint16_t* array;
- if(set==NULL || (uint32_t)c>0x10ffff) {
+ if(set==nullptr || (uint32_t)c>0x10ffff) {
return false;
}
@@ -506,7 +506,7 @@ uset_serializedContains(const USerializedSet* set, UChar32 c) {
U_CAPI int32_t U_EXPORT2
uset_getSerializedRangeCount(const USerializedSet* set) {
- if(set==NULL) {
+ if(set==nullptr) {
return 0;
}
@@ -519,7 +519,7 @@ uset_getSerializedRange(const USerializedSet* set, int32_t rangeIndex,
const uint16_t* array;
int32_t bmpLength, length;
- if(set==NULL || rangeIndex<0 || pStart==NULL || pEnd==NULL) {
+ if(set==nullptr || rangeIndex<0 || pStart==nullptr || pEnd==nullptr) {
return false;
}
@@ -590,7 +590,7 @@ uset_getSerializedRange(const USerializedSet* set, int32_t rangeIndex,
// addRemove(USet* set, UChar32 c, int32_t doRemove) {
// int32_t i, length, more;
//
-// if(set==NULL || (uint32_t)c>0x10ffff) {
+// if(set==nullptr || (uint32_t)c>0x10ffff) {
// return false;
// }
//
@@ -646,7 +646,7 @@ uset_getSerializedRange(const USerializedSet* set, int32_t rangeIndex,
// /* reallocate */
// int32_t newCapacity=set->capacity+set->capacity/2+USET_GROW_DELTA;
// UChar32* newArray=(UChar32* )uprv_malloc(newCapacity*4);
-// if(newArray==NULL) {
+// if(newArray==nullptr) {
// return false;
// }
// set->capacity=newCapacity;
diff --git a/Build/source/libs/icu/icu-src/source/common/uset_imp.h b/Build/source/libs/icu/icu-src/source/common/uset_imp.h
index 7233b9303c3..77197aaed77 100644
--- a/Build/source/libs/icu/icu-src/source/common/uset_imp.h
+++ b/Build/source/libs/icu/icu-src/source/common/uset_imp.h
@@ -58,5 +58,14 @@ typedef struct USetAdder USetAdder;
U_CDECL_END
-#endif
+#ifdef __cplusplus
+
+namespace {
+
+constexpr int32_t USET_CASE_MASK = USET_CASE_INSENSITIVE | USET_ADD_CASE_MAPPINGS;
+} // namespace
+
+#endif // __cplusplus
+
+#endif
diff --git a/Build/source/libs/icu/icu-src/source/common/uset_props.cpp b/Build/source/libs/icu/icu-src/source/common/uset_props.cpp
index f08e760b10d..6f6e0c550f9 100644
--- a/Build/source/libs/icu/icu-src/source/common/uset_props.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/uset_props.cpp
@@ -30,12 +30,12 @@
U_NAMESPACE_USE
U_CAPI USet* U_EXPORT2
-uset_openPattern(const UChar* pattern, int32_t patternLength,
+uset_openPattern(const char16_t* pattern, int32_t patternLength,
UErrorCode* ec)
{
UnicodeString pat(patternLength==-1, pattern, patternLength);
UnicodeSet* set = new UnicodeSet(pat, *ec);
- /* test for NULL */
+ /* test for nullptr */
if(set == 0) {
*ec = U_MEMORY_ALLOCATION_ERROR;
return 0;
@@ -43,19 +43,19 @@ uset_openPattern(const UChar* pattern, int32_t patternLength,
if (U_FAILURE(*ec)) {
delete set;
- set = NULL;
+ set = nullptr;
}
return (USet*) set;
}
U_CAPI USet* U_EXPORT2
-uset_openPatternOptions(const UChar* pattern, int32_t patternLength,
+uset_openPatternOptions(const char16_t* pattern, int32_t patternLength,
uint32_t options,
UErrorCode* ec)
{
UnicodeString pat(patternLength==-1, pattern, patternLength);
- UnicodeSet* set = new UnicodeSet(pat, options, NULL, *ec);
- /* test for NULL */
+ UnicodeSet* set = new UnicodeSet(pat, options, nullptr, *ec);
+ /* test for nullptr */
if(set == 0) {
*ec = U_MEMORY_ALLOCATION_ERROR;
return 0;
@@ -63,7 +63,7 @@ uset_openPatternOptions(const UChar* pattern, int32_t patternLength,
if (U_FAILURE(*ec)) {
delete set;
- set = NULL;
+ set = nullptr;
}
return (USet*) set;
}
@@ -71,20 +71,20 @@ uset_openPatternOptions(const UChar* pattern, int32_t patternLength,
U_CAPI int32_t U_EXPORT2
uset_applyPattern(USet *set,
- const UChar *pattern, int32_t patternLength,
+ const char16_t *pattern, int32_t patternLength,
uint32_t options,
UErrorCode *status){
// status code needs to be checked since we
// dereference it
- if(status == NULL || U_FAILURE(*status)){
+ if(status == nullptr || U_FAILURE(*status)){
return 0;
}
// check only the set paramenter
- // if pattern is NULL or null terminate
+ // if pattern is nullptr or NUL terminated
// UnicodeString constructor takes care of it
- if(set == NULL){
+ if(set == nullptr){
*status = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -93,7 +93,7 @@ uset_applyPattern(USet *set,
ParsePosition pos;
- ((UnicodeSet*) set)->applyPattern(pat, pos, options, NULL, *status);
+ ((UnicodeSet*) set)->applyPattern(pat, pos, options, nullptr, *status);
return pos.getIndex();
}
@@ -106,8 +106,8 @@ uset_applyIntPropertyValue(USet* set,
U_CAPI void U_EXPORT2
uset_applyPropertyAlias(USet* set,
- const UChar *prop, int32_t propLength,
- const UChar *value, int32_t valueLength,
+ const char16_t *prop, int32_t propLength,
+ const char16_t *value, int32_t valueLength,
UErrorCode* ec) {
UnicodeString p(prop, propLength);
@@ -117,19 +117,19 @@ uset_applyPropertyAlias(USet* set,
}
U_CAPI UBool U_EXPORT2
-uset_resemblesPattern(const UChar *pattern, int32_t patternLength,
+uset_resemblesPattern(const char16_t *pattern, int32_t patternLength,
int32_t pos) {
UnicodeString pat(pattern, patternLength);
return ((pos+1) < pat.length() &&
- pat.charAt(pos) == (UChar)91/*[*/) ||
+ pat.charAt(pos) == (char16_t)91/*[*/) ||
UnicodeSet::resemblesPattern(pat, pos);
}
U_CAPI int32_t U_EXPORT2
uset_toPattern(const USet* set,
- UChar* result, int32_t resultCapacity,
+ char16_t* result, int32_t resultCapacity,
UBool escapeUnprintable,
UErrorCode* ec) {
UnicodeString pat;
diff --git a/Build/source/libs/icu/icu-src/source/common/usetiter.cpp b/Build/source/libs/icu/icu-src/source/common/usetiter.cpp
index 3cdece5500b..d24a15ab2df 100644
--- a/Build/source/libs/icu/icu-src/source/common/usetiter.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/usetiter.cpp
@@ -20,7 +20,7 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(UnicodeSetIterator)
* @param set set to iterate over
*/
UnicodeSetIterator::UnicodeSetIterator(const UnicodeSet& uSet) {
- cpString = NULL;
+ cpString = nullptr;
reset(uSet);
}
@@ -28,8 +28,8 @@ UnicodeSetIterator::UnicodeSetIterator(const UnicodeSet& uSet) {
* Create an iterator. Convenience for when the contents are to be set later.
*/
UnicodeSetIterator::UnicodeSetIterator() {
- this->set = NULL;
- cpString = NULL;
+ this->set = nullptr;
+ cpString = nullptr;
reset();
}
@@ -49,13 +49,13 @@ UnicodeSetIterator::~UnicodeSetIterator() {
UBool UnicodeSetIterator::next() {
if (nextElement <= endElement) {
codepoint = codepointEnd = nextElement++;
- string = NULL;
+ string = nullptr;
return true;
}
if (range < endRange) {
loadRange(++range);
codepoint = codepointEnd = nextElement++;
- string = NULL;
+ string = nullptr;
return true;
}
@@ -77,7 +77,7 @@ UBool UnicodeSetIterator::next() {
* <br>Note also that the codepointEnd is undefined after calling this method.
*/
UBool UnicodeSetIterator::nextRange() {
- string = NULL;
+ string = nullptr;
if (nextElement <= endElement) {
codepointEnd = endElement;
codepoint = nextElement;
@@ -110,7 +110,7 @@ void UnicodeSetIterator::reset(const UnicodeSet& uSet) {
* Resets to the start, to allow the iteration to start over again.
*/
void UnicodeSetIterator::reset() {
- if (set == NULL) {
+ if (set == nullptr) {
// Set up indices to empty iteration
endRange = -1;
stringCount = 0;
@@ -125,7 +125,7 @@ void UnicodeSetIterator::reset() {
loadRange(range);
}
nextString = 0;
- string = NULL;
+ string = nullptr;
}
void UnicodeSetIterator::loadRange(int32_t iRange) {
@@ -135,11 +135,11 @@ void UnicodeSetIterator::loadRange(int32_t iRange) {
const UnicodeString& UnicodeSetIterator::getString() {
- if (string==NULL && codepoint!=(UChar32)IS_STRING) {
- if (cpString == NULL) {
+ if (string==nullptr && codepoint!=(UChar32)IS_STRING) {
+ if (cpString == nullptr) {
cpString = new UnicodeString();
}
- if (cpString != NULL) {
+ if (cpString != nullptr) {
cpString->setTo((UChar32)codepoint);
}
string = cpString;
diff --git a/Build/source/libs/icu/icu-src/source/common/ushape.cpp b/Build/source/libs/icu/icu-src/source/common/ushape.cpp
index babbbe52a83..d0ac95e0b23 100644
--- a/Build/source/libs/icu/icu-src/source/common/ushape.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ushape.cpp
@@ -31,7 +31,7 @@
/*
* This implementation is designed for 16-bit Unicode strings.
* The main assumption is that the Arabic characters and their
- * presentation forms each fit into a single UChar.
+ * presentation forms each fit into a single char16_t.
* With UTF-8, they occupy 2 or 3 bytes, and more than the ASCII
* characters.
*/
@@ -78,7 +78,7 @@
#define DESHAPE_MODE 1
struct uShapeVariables {
- UChar tailChar;
+ char16_t tailChar;
uint32_t uShapeLamalefBegin;
uint32_t uShapeLamalefEnd;
uint32_t uShapeTashkeelBegin;
@@ -122,7 +122,7 @@ static const uint8_t tashkeelMedial[] = {
/* FE7F */ 1
};
-static const UChar yehHamzaToYeh[] =
+static const char16_t yehHamzaToYeh[] =
{
/* isolated*/ 0xFEEF,
/* final */ 0xFEF0
@@ -134,7 +134,7 @@ static const uint8_t IrrelevantPos[] = {
};
-static const UChar convertLamAlef[] =
+static const char16_t convertLamAlef[] =
{
/*FEF5*/ 0x0622,
/*FEF6*/ 0x0622,
@@ -146,7 +146,7 @@ static const UChar convertLamAlef[] =
/*FEFC*/ 0x0627
};
-static const UChar araLink[178]=
+static const char16_t araLink[178]=
{
1 + 32 + 256 * 0x11,/*0x0622*/
1 + 32 + 256 * 0x13,/*0x0623*/
@@ -294,7 +294,7 @@ static const uint8_t presBLink[]=
/*FEF*/ 1, 0, 1, 2,1 + 2, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0
};
-static const UChar convertFBto06[] =
+static const char16_t convertFBto06[] =
{
/***********0******1******2******3******4******5******6******7******8******9******A******B******C******D******E******F***/
/*FB5*/ 0x671, 0x671, 0x67B, 0x67B, 0x67B, 0x67B, 0x67E, 0x67E, 0x67E, 0x67E, 0, 0, 0, 0, 0x67A, 0x67A,
@@ -310,7 +310,7 @@ static const UChar convertFBto06[] =
/*FBF*/ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x6CC, 0x6CC, 0x6CC, 0x6CC
};
-static const UChar convertFEto06[] =
+static const char16_t 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,
@@ -339,11 +339,11 @@ static const uint8_t shapeTable[4][4][4]=
* we can safely just work with code units (again, at least UTF-16).
*/
static void
-_shapeToArabicDigitsWithContext(UChar *s, int32_t length,
- UChar digitBase,
+_shapeToArabicDigitsWithContext(char16_t *s, int32_t length,
+ char16_t digitBase,
UBool isLogical, UBool lastStrongWasAL) {
int32_t i;
- UChar c;
+ char16_t c;
digitBase-=0x30;
@@ -361,7 +361,7 @@ _shapeToArabicDigitsWithContext(UChar *s, int32_t length,
break;
case U_EUROPEAN_NUMBER: /* EN */
if(lastStrongWasAL && (uint32_t)(c-0x30)<10) {
- s[i]=(UChar)(digitBase+c); /* digitBase+(c-0x30) - digitBase was modified above */
+ s[i]=(char16_t)(digitBase+c); /* digitBase+(c-0x30) - digitBase was modified above */
}
break;
default :
@@ -381,7 +381,7 @@ _shapeToArabicDigitsWithContext(UChar *s, int32_t length,
break;
case U_EUROPEAN_NUMBER: /* EN */
if(lastStrongWasAL && (uint32_t)(c-0x30)<10) {
- s[i]=(UChar)(digitBase+c); /* digitBase+(c-0x30) - digitBase was modified above */
+ s[i]=(char16_t)(digitBase+c); /* digitBase+(c-0x30) - digitBase was modified above */
}
break;
default :
@@ -398,8 +398,8 @@ _shapeToArabicDigitsWithContext(UChar *s, int32_t length,
* U_SHAPE_TEXT_DIRECTION_LOGICAL
*/
static void
-invertBuffer(UChar *buffer, int32_t size, uint32_t /*options*/, int32_t lowlimit, int32_t highlimit) {
- UChar temp;
+invertBuffer(char16_t *buffer, int32_t size, uint32_t /*options*/, int32_t lowlimit, int32_t highlimit) {
+ char16_t temp;
int32_t i=0,j=0;
for(i=lowlimit,j=size-highlimit-1;i<j;i++,j--) {
temp = buffer[i];
@@ -416,8 +416,8 @@ invertBuffer(UChar *buffer, int32_t size, uint32_t /*options*/, int32_t lowlimit
* later it'll be converted into the 0xFExx LamAlefs
* in the shaping function.
*/
-static inline UChar
-changeLamAlef(UChar ch) {
+static inline char16_t
+changeLamAlef(char16_t ch) {
switch(ch) {
case 0x0622 :
return 0x065C;
@@ -437,8 +437,8 @@ changeLamAlef(UChar ch) {
* Arabic characters have four forms :
* Isolated, Initial, Middle and Final Form
*/
-static UChar
-getLink(UChar ch) {
+static char16_t
+getLink(char16_t ch) {
if(ch >= 0x0622 && ch <= 0x06D3) {
return(araLink[ch-0x0622]);
} else if(ch == 0x200D) {
@@ -460,7 +460,7 @@ getLink(UChar ch) {
* at each end of the logical buffer
*/
static void
-countSpaces(UChar *dest, int32_t size, uint32_t /*options*/, int32_t *spacesCountl, int32_t *spacesCountr) {
+countSpaces(char16_t *dest, int32_t size, uint32_t /*options*/, int32_t *spacesCountl, int32_t *spacesCountr) {
int32_t i = 0;
int32_t countl = 0,countr = 0;
while((dest[i] == SPACE_CHAR) && (countl < size)) {
@@ -482,7 +482,7 @@ countSpaces(UChar *dest, int32_t size, uint32_t /*options*/, int32_t *spacesCoun
*Function : Returns 1 for Tashkeel characters in 06 range else return 0
*/
static inline int32_t
-isTashkeelChar(UChar ch) {
+isTashkeelChar(char16_t ch) {
return (int32_t)( ch>=0x064B && ch<= 0x0652 );
}
@@ -491,7 +491,7 @@ isTashkeelChar(UChar ch) {
*Function : Returns 1 for Tashkeel characters in FE range else return 0
*/
static inline int32_t
-isTashkeelCharFE(UChar ch) {
+isTashkeelCharFE(char16_t ch) {
return (int32_t)( ch>=0xFE70 && ch<= 0xFE7F );
}
@@ -500,7 +500,7 @@ isTashkeelCharFE(UChar ch) {
*Function : Returns 1 for Alef characters else return 0
*/
static inline int32_t
-isAlefChar(UChar ch) {
+isAlefChar(char16_t ch) {
return (int32_t)( (ch==0x0622)||(ch==0x0623)||(ch==0x0625)||(ch==0x0627) );
}
@@ -509,7 +509,7 @@ isAlefChar(UChar ch) {
*Function : Returns 1 for LamAlef characters else return 0
*/
static inline int32_t
-isLamAlefChar(UChar ch) {
+isLamAlefChar(char16_t ch) {
return (int32_t)((ch>=0xFEF5)&&(ch<=0xFEFC) );
}
@@ -519,7 +519,7 @@ isLamAlefChar(UChar ch) {
*/
static inline int32_t
-isTailChar(UChar ch) {
+isTailChar(char16_t ch) {
if(ch == OLD_TAIL_CHAR || ch == NEW_TAIL_CHAR){
return 1;
}else{
@@ -534,7 +534,7 @@ isTailChar(UChar ch) {
*/
static inline int32_t
-isSeenTailFamilyChar(UChar ch) {
+isSeenTailFamilyChar(char16_t ch) {
if(ch >= 0xfeb1 && ch < 0xfebf){
return tailFamilyIsolatedFinal [ch - 0xFEB1];
}else{
@@ -548,7 +548,7 @@ isSeenTailFamilyChar(UChar ch) {
*/
static inline int32_t
-isSeenFamilyChar(UChar ch){
+isSeenFamilyChar(char16_t ch){
if(ch >= 0x633 && ch <= 0x636){
return 1;
}else {
@@ -563,7 +563,7 @@ isSeenFamilyChar(UChar ch){
* otherwise returns 0
*/
static inline int32_t
-isAlefMaksouraChar(UChar ch) {
+isAlefMaksouraChar(char16_t ch) {
return (int32_t)( (ch == 0xFEEF) || ( ch == 0xFEF0) || (ch == 0x0649));
}
@@ -573,7 +573,7 @@ isAlefMaksouraChar(UChar ch) {
* final is found otherwise returns 0
*/
static inline int32_t
-isYehHamzaChar(UChar ch) {
+isYehHamzaChar(char16_t ch) {
if((ch==0xFE89)||(ch==0xFE8A)){
return 1;
}else{
@@ -589,7 +589,7 @@ isYehHamzaChar(UChar ch) {
* returns 0
*/
static inline int32_t
-isTashkeelOnTatweelChar(UChar ch){
+isTashkeelOnTatweelChar(char16_t ch){
if(ch >= 0xfe70 && ch <= 0xfe7f && ch != NEW_TAIL_CHAR && ch != 0xFE75 && ch != SHADDA_TATWEEL_CHAR)
{
return tashkeelMedial [ch - 0xFE70];
@@ -608,7 +608,7 @@ isTashkeelOnTatweelChar(UChar ch){
* returns 2 otherwise returns 0
*/
static inline int32_t
-isIsolatedTashkeelChar(UChar ch){
+isIsolatedTashkeelChar(char16_t ch){
if(ch >= 0xfe70 && ch <= 0xfe7f && ch != NEW_TAIL_CHAR && ch != 0xFE75){
return (1 - tashkeelMedial [ch - 0xFE70]);
}else if(ch >= 0xfc5e && ch <= 0xfc63){
@@ -630,7 +630,7 @@ isIsolatedTashkeelChar(UChar ch){
*/
static int32_t
-calculateSize(const UChar *source, int32_t sourceLength,
+calculateSize(const char16_t *source, int32_t sourceLength,
int32_t destSize,uint32_t options) {
int32_t i = 0;
@@ -687,7 +687,7 @@ int32_t destSize,uint32_t options) {
*
*/
static int32_t
-handleTashkeelWithTatweel(UChar *dest, int32_t sourceLength,
+handleTashkeelWithTatweel(char16_t *dest, int32_t sourceLength,
int32_t /*destSize*/, uint32_t /*options*/,
UErrorCode * /*pErrorCode*/) {
int i;
@@ -725,14 +725,14 @@ handleTashkeelWithTatweel(UChar *dest, int32_t sourceLength,
*/
static int32_t
-handleGeneratedSpaces(UChar *dest, int32_t sourceLength,
+handleGeneratedSpaces(char16_t *dest, int32_t sourceLength,
int32_t destSize,
uint32_t options,
UErrorCode *pErrorCode,struct uShapeVariables shapeVars ) {
int32_t i = 0, j = 0;
int32_t count = 0;
- UChar *tempbuffer=NULL;
+ char16_t *tempbuffer=nullptr;
int lamAlefOption = 0;
int tashkeelOption = 0;
@@ -747,9 +747,9 @@ handleGeneratedSpaces(UChar *dest, int32_t sourceLength,
}
}
- tempbuffer = (UChar *)uprv_malloc((sourceLength+1)*U_SIZEOF_UCHAR);
- /* Test for NULL */
- if(tempbuffer == NULL) {
+ tempbuffer = (char16_t *)uprv_malloc((sourceLength+1)*U_SIZEOF_UCHAR);
+ /* Test for nullptr */
+ if(tempbuffer == nullptr) {
*pErrorCode = U_MEMORY_ALLOCATION_ERROR;
return 0;
}
@@ -900,15 +900,15 @@ handleGeneratedSpaces(UChar *dest, int32_t sourceLength,
*/
static int32_t
-expandCompositCharAtBegin(UChar *dest, int32_t sourceLength, int32_t destSize,UErrorCode *pErrorCode) {
+expandCompositCharAtBegin(char16_t *dest, int32_t sourceLength, int32_t destSize,UErrorCode *pErrorCode) {
int32_t i = 0,j = 0;
int32_t countl = 0;
- UChar *tempbuffer=NULL;
+ char16_t *tempbuffer=nullptr;
- tempbuffer = (UChar *)uprv_malloc((sourceLength+1)*U_SIZEOF_UCHAR);
+ tempbuffer = (char16_t *)uprv_malloc((sourceLength+1)*U_SIZEOF_UCHAR);
- /* Test for NULL */
- if(tempbuffer == NULL) {
+ /* Test for nullptr */
+ if(tempbuffer == nullptr) {
*pErrorCode = U_MEMORY_ALLOCATION_ERROR;
return 0;
}
@@ -960,17 +960,17 @@ expandCompositCharAtBegin(UChar *dest, int32_t sourceLength, int32_t destSize,UE
*/
static int32_t
-expandCompositCharAtEnd(UChar *dest, int32_t sourceLength, int32_t destSize,UErrorCode *pErrorCode) {
+expandCompositCharAtEnd(char16_t *dest, int32_t sourceLength, int32_t destSize,UErrorCode *pErrorCode) {
int32_t i = 0,j = 0;
int32_t countr = 0;
int32_t inpsize = sourceLength;
- UChar *tempbuffer=NULL;
- tempbuffer = (UChar *)uprv_malloc((sourceLength+1)*U_SIZEOF_UCHAR);
+ char16_t *tempbuffer=nullptr;
+ tempbuffer = (char16_t *)uprv_malloc((sourceLength+1)*U_SIZEOF_UCHAR);
- /* Test for NULL */
- if(tempbuffer == NULL) {
+ /* Test for nullptr */
+ if(tempbuffer == nullptr) {
*pErrorCode = U_MEMORY_ALLOCATION_ERROR;
return 0;
}
@@ -1027,12 +1027,12 @@ expandCompositCharAtEnd(UChar *dest, int32_t sourceLength, int32_t destSize,UErr
*/
static int32_t
-expandCompositCharAtNear(UChar *dest, int32_t sourceLength, int32_t destSize,UErrorCode *pErrorCode,
+expandCompositCharAtNear(char16_t *dest, int32_t sourceLength, int32_t destSize,UErrorCode *pErrorCode,
int yehHamzaOption, int seenTailOption, int lamAlefOption, struct uShapeVariables shapeVars) {
int32_t i = 0;
- UChar lamalefChar, yehhamzaChar;
+ char16_t lamalefChar, yehhamzaChar;
for(i = 0 ;i<=sourceLength-1;i++) {
if (seenTailOption && isSeenTailFamilyChar(dest[i])) {
@@ -1080,13 +1080,13 @@ expandCompositCharAtNear(UChar *dest, int32_t sourceLength, int32_t destSize,UEr
*/
static int32_t
-expandCompositChar(UChar *dest, int32_t sourceLength,
+expandCompositChar(char16_t *dest, int32_t sourceLength,
int32_t destSize,uint32_t options,
UErrorCode *pErrorCode, int shapingMode,struct uShapeVariables shapeVars) {
int32_t i = 0,j = 0;
- UChar *tempbuffer=NULL;
+ char16_t *tempbuffer=nullptr;
int yehHamzaOption = 0;
int seenTailOption = 0;
int lamAlefOption = 0;
@@ -1154,10 +1154,10 @@ expandCompositChar(UChar *dest, int32_t sourceLength,
if (shapingMode == 1){
if ( (options&U_SHAPE_LAMALEF_MASK) == U_SHAPE_LAMALEF_RESIZE){
destSize = calculateSize(dest,sourceLength,destSize,options);
- tempbuffer = (UChar *)uprv_malloc((destSize+1)*U_SIZEOF_UCHAR);
+ tempbuffer = (char16_t *)uprv_malloc((destSize+1)*U_SIZEOF_UCHAR);
- /* Test for NULL */
- if(tempbuffer == NULL) {
+ /* Test for nullptr */
+ if(tempbuffer == nullptr) {
*pErrorCode = U_MEMORY_ALLOCATION_ERROR;
return 0;
}
@@ -1193,7 +1193,7 @@ expandCompositChar(UChar *dest, int32_t sourceLength,
* arabic Unicode buffer in FExx Range
*/
static int32_t
-shapeUnicode(UChar *dest, int32_t sourceLength,
+shapeUnicode(char16_t *dest, int32_t sourceLength,
int32_t destSize,uint32_t options,
UErrorCode *pErrorCode,
int tashkeelFlag, struct uShapeVariables shapeVars) {
@@ -1204,8 +1204,8 @@ shapeUnicode(UChar *dest, int32_t sourceLength,
unsigned int Shape;
int32_t lamalef_found = 0;
int32_t seenfamFound = 0, yehhamzaFound =0, tashkeelFound = 0;
- UChar prevLink = 0, lastLink = 0, currLink, nextLink = 0;
- UChar wLamalef;
+ char16_t prevLink = 0, lastLink = 0, currLink, nextLink = 0;
+ char16_t wLamalef;
/*
* Converts the input buffer from FExx Range into 06xx Range
@@ -1215,9 +1215,9 @@ shapeUnicode(UChar *dest, int32_t sourceLength,
*/
if ((options & U_SHAPE_PRESERVE_PRESENTATION_MASK) == U_SHAPE_PRESERVE_PRESENTATION_NOOP) {
for (i = 0; i < sourceLength; i++) {
- UChar inputChar = dest[i];
+ char16_t inputChar = dest[i];
if ( (inputChar >= 0xFB50) && (inputChar <= 0xFBFF)) {
- UChar c = convertFBto06 [ (inputChar - 0xFB50) ];
+ char16_t c = convertFBto06 [ (inputChar - 0xFB50) ];
if (c != 0)
dest[i] = c;
} else if ( (inputChar >= 0xFE70) && (inputChar <= 0xFEFC)) {
@@ -1323,12 +1323,12 @@ shapeUnicode(UChar *dest, int32_t sourceLength,
/* to ensure the array index is within the range */
U_ASSERT(dest[i] >= 0x064Bu
&& dest[i]-0x064Bu < UPRV_LENGTHOF(IrrelevantPos));
- dest[i] = 0xFE70 + IrrelevantPos[(dest[i] - 0x064B)] + static_cast<UChar>(Shape);
+ dest[i] = 0xFE70 + IrrelevantPos[(dest[i] - 0x064B)] + static_cast<char16_t>(Shape);
}
}else if ((currLink & APRESENT) > 0) {
- dest[i] = (UChar)(0xFB50 + (currLink >> 8) + Shape);
+ dest[i] = (char16_t)(0xFB50 + (currLink >> 8) + Shape);
}else if ((currLink >> 8) > 0 && (currLink & IRRELEVANT) == 0) {
- dest[i] = (UChar)(0xFE70 + (currLink >> 8) + Shape);
+ dest[i] = (char16_t)(0xFE70 + (currLink >> 8) + Shape);
}
}
}
@@ -1365,7 +1365,7 @@ shapeUnicode(UChar *dest, int32_t sourceLength,
* arabic Unicode buffer in 06xx Range
*/
static int32_t
-deShapeUnicode(UChar *dest, int32_t sourceLength,
+deShapeUnicode(char16_t *dest, int32_t sourceLength,
int32_t destSize,uint32_t options,
UErrorCode *pErrorCode, struct uShapeVariables shapeVars) {
int32_t i = 0;
@@ -1382,9 +1382,9 @@ deShapeUnicode(UChar *dest, int32_t sourceLength,
*/
for(i = 0; i < sourceLength; i++) {
- UChar inputChar = dest[i];
+ char16_t inputChar = dest[i];
if ( (inputChar >= 0xFB50) && (inputChar <= 0xFBFF)) { /* FBxx Arabic range */
- UChar c = convertFBto06 [ (inputChar - 0xFB50) ];
+ char16_t c = convertFBto06 [ (inputChar - 0xFB50) ];
if (c != 0)
dest[i] = c;
} else if( (yehHamzaComposeEnabled == 1) && ((inputChar == HAMZA06_CHAR) || (inputChar == HAMZAFE_CHAR))
@@ -1418,8 +1418,8 @@ deShapeUnicode(UChar *dest, int32_t sourceLength,
*/
U_CAPI int32_t U_EXPORT2
-u_shapeArabic(const UChar *source, int32_t sourceLength,
- UChar *dest, int32_t destCapacity,
+u_shapeArabic(const char16_t *source, int32_t sourceLength,
+ char16_t *dest, int32_t destCapacity,
uint32_t options,
UErrorCode *pErrorCode) {
@@ -1427,12 +1427,12 @@ u_shapeArabic(const UChar *source, int32_t sourceLength,
struct uShapeVariables shapeVars = { OLD_TAIL_CHAR,U_SHAPE_LAMALEF_BEGIN,U_SHAPE_LAMALEF_END,U_SHAPE_TASHKEEL_BEGIN,U_SHAPE_TASHKEEL_END,0};
/* usual error checking */
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return 0;
}
- /* make sure that no reserved options values are used; allow dest==NULL only for preflighting */
- if( source==NULL || sourceLength<-1 || (dest==NULL && destCapacity!=0) || destCapacity<0 ||
+ /* make sure that no reserved options values are used; allow dest==nullptr only for preflighting */
+ if( source==nullptr || sourceLength<-1 || (dest==nullptr && destCapacity!=0) || destCapacity<0 ||
(((options&U_SHAPE_TASHKEEL_MASK) > 0) &&
((options&U_SHAPE_LETTERS_SHAPE_TASHKEEL_ISOLATED) == U_SHAPE_LETTERS_SHAPE_TASHKEEL_ISOLATED) ) ||
(((options&U_SHAPE_TASHKEEL_MASK) > 0) &&
@@ -1478,7 +1478,7 @@ u_shapeArabic(const UChar *source, int32_t sourceLength,
}
/* check that source and destination do not overlap */
- if( dest!=NULL &&
+ if( dest!=nullptr &&
((source<=dest && dest<source+sourceLength) ||
(dest<=source && source<dest+destCapacity))) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
@@ -1493,8 +1493,8 @@ u_shapeArabic(const UChar *source, int32_t sourceLength,
}
if((options&U_SHAPE_LETTERS_MASK)!=U_SHAPE_LETTERS_NOOP) {
- UChar buffer[300];
- UChar *tempbuffer, *tempsource = NULL;
+ char16_t buffer[300];
+ char16_t *tempbuffer, *tempsource = nullptr;
int32_t outputSize, spacesCountl=0, spacesCountr=0;
if((options&U_SHAPE_AGGREGATE_TASHKEEL_MASK)>0) {
@@ -1507,11 +1507,11 @@ u_shapeArabic(const UChar *source, int32_t sourceLength,
int i=logical_order?-1:sourceLength;
int end=logical_order?sourceLength:-1;
int aggregation_possible = 1;
- UChar prev = 0;
- UChar prevLink, currLink = 0;
+ char16_t prev = 0;
+ char16_t prevLink, currLink = 0;
int newSourceLength = 0;
- tempsource = (UChar *)uprv_malloc(2*sourceLength*U_SIZEOF_UCHAR);
- if(tempsource == NULL) {
+ tempsource = (char16_t *)uprv_malloc(2*sourceLength*U_SIZEOF_UCHAR);
+ if(tempsource == nullptr) {
*pErrorCode = U_MEMORY_ALLOCATION_ERROR;
return 0;
}
@@ -1545,7 +1545,7 @@ u_shapeArabic(const UChar *source, int32_t sourceLength,
if(outputSize>destCapacity) {
*pErrorCode=U_BUFFER_OVERFLOW_ERROR;
- if (tempsource != NULL) uprv_free(tempsource);
+ if (tempsource != nullptr) uprv_free(tempsource);
return outputSize;
}
@@ -1562,17 +1562,17 @@ u_shapeArabic(const UChar *source, int32_t sourceLength,
outputSize=UPRV_LENGTHOF(buffer);
tempbuffer=buffer;
} else {
- tempbuffer = (UChar *)uprv_malloc(outputSize*U_SIZEOF_UCHAR);
+ tempbuffer = (char16_t *)uprv_malloc(outputSize*U_SIZEOF_UCHAR);
- /*Test for NULL*/
- if(tempbuffer == NULL) {
+ /*Test for nullptr*/
+ if(tempbuffer == nullptr) {
*pErrorCode = U_MEMORY_ALLOCATION_ERROR;
- if (tempsource != NULL) uprv_free(tempsource);
+ if (tempsource != nullptr) uprv_free(tempsource);
return 0;
}
}
u_memcpy(tempbuffer, source, sourceLength);
- if (tempsource != NULL){
+ if (tempsource != nullptr){
uprv_free(tempsource);
}
@@ -1670,7 +1670,7 @@ u_shapeArabic(const UChar *source, int32_t sourceLength,
* "shape" the digits in-place.
*/
if((options&U_SHAPE_DIGITS_MASK)!=U_SHAPE_DIGITS_NOOP) {
- UChar digitBase;
+ char16_t digitBase;
int32_t i;
/* select the requested digit group */
diff --git a/Build/source/libs/icu/icu-src/source/common/usprep.cpp b/Build/source/libs/icu/icu-src/source/common/usprep.cpp
index 50d16081d1d..fc9d0ac208f 100644
--- a/Build/source/libs/icu/icu-src/source/common/usprep.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/usprep.cpp
@@ -44,7 +44,7 @@ U_CDECL_BEGIN
/*
Static cache for already opened StringPrep profiles
*/
-static UHashtable *SHARED_DATA_HASHTABLE = NULL;
+static UHashtable *SHARED_DATA_HASHTABLE = nullptr;
static icu::UInitOnce gSharedDataInitOnce {};
static UMutex usprepMutex;
@@ -137,8 +137,8 @@ usprep_unload(UStringPrepProfile* data){
static int32_t
usprep_internal_flushCache(UBool noRefCount){
- UStringPrepProfile *profile = NULL;
- UStringPrepKey *key = NULL;
+ UStringPrepProfile *profile = nullptr;
+ UStringPrepKey *key = nullptr;
int32_t pos = UHASH_FIRST;
int32_t deletedNum = 0;
const UHashElement *e;
@@ -148,32 +148,32 @@ usprep_internal_flushCache(UBool noRefCount){
* return 0
*/
umtx_lock(&usprepMutex);
- if (SHARED_DATA_HASHTABLE == NULL) {
+ if (SHARED_DATA_HASHTABLE == nullptr) {
umtx_unlock(&usprepMutex);
return 0;
}
/*creates an enumeration to iterate through every element in the table */
- while ((e = uhash_nextElement(SHARED_DATA_HASHTABLE, &pos)) != NULL)
+ while ((e = uhash_nextElement(SHARED_DATA_HASHTABLE, &pos)) != nullptr)
{
profile = (UStringPrepProfile *) e->value.pointer;
key = (UStringPrepKey *) e->key.pointer;
if ((noRefCount== false && profile->refCount == 0) ||
- noRefCount== true) {
+ noRefCount) {
deletedNum++;
uhash_removeElement(SHARED_DATA_HASHTABLE, e);
/* unload the data */
usprep_unload(profile);
- if(key->name != NULL) {
+ if(key->name != nullptr) {
uprv_free(key->name);
- key->name=NULL;
+ key->name=nullptr;
}
- if(key->path != NULL) {
+ if(key->path != nullptr) {
uprv_free(key->path);
- key->path=NULL;
+ key->path=nullptr;
}
uprv_free(profile);
uprv_free(key);
@@ -192,16 +192,16 @@ usprep_flushCache(){
}
*/
-static UBool U_CALLCONV usprep_cleanup(void){
- if (SHARED_DATA_HASHTABLE != NULL) {
+static UBool U_CALLCONV usprep_cleanup(){
+ if (SHARED_DATA_HASHTABLE != nullptr) {
usprep_internal_flushCache(true);
- if (SHARED_DATA_HASHTABLE != NULL && uhash_count(SHARED_DATA_HASHTABLE) == 0) {
+ if (SHARED_DATA_HASHTABLE != nullptr && uhash_count(SHARED_DATA_HASHTABLE) == 0) {
uhash_close(SHARED_DATA_HASHTABLE);
- SHARED_DATA_HASHTABLE = NULL;
+ SHARED_DATA_HASHTABLE = nullptr;
}
}
gSharedDataInitOnce.reset();
- return (SHARED_DATA_HASHTABLE == NULL);
+ return (SHARED_DATA_HASHTABLE == nullptr);
}
U_CDECL_END
@@ -209,9 +209,9 @@ U_CDECL_END
/** Initializes the cache for resources */
static void U_CALLCONV
createCache(UErrorCode &status) {
- SHARED_DATA_HASHTABLE = uhash_open(hashEntry, compareEntries, NULL, &status);
+ SHARED_DATA_HASHTABLE = uhash_open(hashEntry, compareEntries, nullptr, &status);
if (U_FAILURE(status)) {
- SHARED_DATA_HASHTABLE = NULL;
+ SHARED_DATA_HASHTABLE = nullptr;
}
ucln_common_registerCleanup(UCLN_COMMON_USPREP, usprep_cleanup);
}
@@ -230,18 +230,18 @@ loadData(UStringPrepProfile* profile,
/* load Unicode SPREP data from file */
UTrie _sprepTrie={ 0,0,0,0,0,0,0 };
UDataMemory *dataMemory;
- const int32_t *p=NULL;
+ const int32_t *p=nullptr;
const uint8_t *pb;
UVersionInfo normUnicodeVersion;
int32_t normUniVer, sprepUniVer, normCorrVer;
- if(errorCode==NULL || U_FAILURE(*errorCode)) {
+ if(errorCode==nullptr || U_FAILURE(*errorCode)) {
return 0;
}
/* open the data outside the mutex block */
//TODO: change the path
- dataMemory=udata_openChoice(path, type, name, isSPrepAcceptable, NULL, errorCode);
+ dataMemory=udata_openChoice(path, type, name, isSPrepAcceptable, nullptr, errorCode);
if(U_FAILURE(*errorCode)) {
return false;
}
@@ -259,9 +259,9 @@ loadData(UStringPrepProfile* profile,
/* in the mutex block, set the data for this process */
umtx_lock(&usprepMutex);
- if(profile->sprepData==NULL) {
+ if(profile->sprepData==nullptr) {
profile->sprepData=dataMemory;
- dataMemory=NULL;
+ dataMemory=nullptr;
uprv_memcpy(&profile->indexes, p, sizeof(profile->indexes));
uprv_memcpy(&profile->sprepTrie, &_sprepTrie, sizeof(UTrie));
} else {
@@ -293,8 +293,8 @@ loadData(UStringPrepProfile* profile,
profile->isDataLoaded = true;
/* if a different thread set it first, then close the extra data */
- if(dataMemory!=NULL) {
- udata_close(dataMemory); /* NULL if it was set correctly */
+ if(dataMemory!=nullptr) {
+ udata_close(dataMemory); /* nullptr if it was set correctly */
}
@@ -306,12 +306,12 @@ usprep_getProfile(const char* path,
const char* name,
UErrorCode *status){
- UStringPrepProfile* profile = NULL;
+ UStringPrepProfile* profile = nullptr;
initCache(status);
if(U_FAILURE(*status)){
- return NULL;
+ return nullptr;
}
UStringPrepKey stackKey;
@@ -326,22 +326,22 @@ usprep_getProfile(const char* path,
/* fetch the data from the cache */
umtx_lock(&usprepMutex);
profile = (UStringPrepProfile*) (uhash_get(SHARED_DATA_HASHTABLE,&stackKey));
- if(profile != NULL) {
+ if(profile != nullptr) {
profile->refCount++;
}
umtx_unlock(&usprepMutex);
- if(profile == NULL) {
+ if(profile == nullptr) {
/* else load the data and put the data in the cache */
LocalMemory<UStringPrepProfile> newProfile;
- if(newProfile.allocateInsteadAndReset() == NULL) {
+ if(newProfile.allocateInsteadAndReset() == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
/* load the data */
if(!loadData(newProfile.getAlias(), path, name, _SPREP_DATA_TYPE, status) || U_FAILURE(*status) ){
- return NULL;
+ return nullptr;
}
/* get the options */
@@ -351,20 +351,20 @@ usprep_getProfile(const char* path,
LocalMemory<UStringPrepKey> key;
LocalMemory<char> keyName;
LocalMemory<char> keyPath;
- if( key.allocateInsteadAndReset() == NULL ||
- keyName.allocateInsteadAndCopy(static_cast<int32_t>(uprv_strlen(name)+1)) == NULL ||
- (path != NULL &&
- keyPath.allocateInsteadAndCopy(static_cast<int32_t>(uprv_strlen(path)+1)) == NULL)
+ if( key.allocateInsteadAndReset() == nullptr ||
+ keyName.allocateInsteadAndCopy(static_cast<int32_t>(uprv_strlen(name)+1)) == nullptr ||
+ (path != nullptr &&
+ keyPath.allocateInsteadAndCopy(static_cast<int32_t>(uprv_strlen(path)+1)) == nullptr)
) {
*status = U_MEMORY_ALLOCATION_ERROR;
usprep_unload(newProfile.getAlias());
- return NULL;
+ return nullptr;
}
umtx_lock(&usprepMutex);
// If another thread already inserted the same key/value, refcount and cleanup our thread data
profile = (UStringPrepProfile*) (uhash_get(SHARED_DATA_HASHTABLE,&stackKey));
- if(profile != NULL) {
+ if(profile != nullptr) {
profile->refCount++;
usprep_unload(newProfile.getAlias());
}
@@ -372,7 +372,7 @@ usprep_getProfile(const char* path,
/* initialize the key members */
key->name = keyName.orphan();
uprv_strcpy(key->name, name);
- if(path != NULL){
+ if(path != nullptr){
key->path = keyPath.orphan();
uprv_strcpy(key->path, path);
}
@@ -393,8 +393,8 @@ usprep_open(const char* path,
const char* name,
UErrorCode* status){
- if(status == NULL || U_FAILURE(*status)){
- return NULL;
+ if(status == nullptr || U_FAILURE(*status)){
+ return nullptr;
}
/* initialize the profile struct members */
@@ -404,20 +404,20 @@ usprep_open(const char* path,
U_CAPI UStringPrepProfile* U_EXPORT2
usprep_openByType(UStringPrepProfileType type,
UErrorCode* status) {
- if(status == NULL || U_FAILURE(*status)){
- return NULL;
+ if(status == nullptr || U_FAILURE(*status)){
+ return nullptr;
}
int32_t index = (int32_t)type;
if (index < 0 || index >= UPRV_LENGTHOF(PROFILE_NAMES)) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
- return usprep_open(NULL, PROFILE_NAMES[index], status);
+ return usprep_open(nullptr, PROFILE_NAMES[index], status);
}
U_CAPI void U_EXPORT2
usprep_close(UStringPrepProfile* profile){
- if(profile==NULL){
+ if(profile==nullptr){
return;
}
@@ -431,11 +431,11 @@ usprep_close(UStringPrepProfile* profile){
}
U_CFUNC void
-uprv_syntaxError(const UChar* rules,
+uprv_syntaxError(const char16_t* rules,
int32_t pos,
int32_t rulesLen,
UParseError* parseError){
- if(parseError == NULL){
+ if(parseError == nullptr){
return;
}
parseError->offset = pos;
@@ -502,11 +502,11 @@ getValues(uint16_t trieWord, int16_t& value, UBool& isIndex){
return type;
}
-// TODO: change to writing to UnicodeString not UChar *
+// TODO: change to writing to UnicodeString not char16_t *
static int32_t
usprep_map( const UStringPrepProfile* profile,
- const UChar* src, int32_t srcLength,
- UChar* dest, int32_t destCapacity,
+ const char16_t* src, int32_t srcLength,
+ char16_t* dest, int32_t destCapacity,
int32_t options,
UParseError* parseError,
UErrorCode* status ){
@@ -581,7 +581,7 @@ usprep_map( const UStringPrepProfile* profile,
//copy the code point into destination
if(ch <= 0xFFFF){
if(destIndex < destCapacity ){
- dest[destIndex] = (UChar)ch;
+ dest[destIndex] = (char16_t)ch;
}
destIndex++;
}else{
@@ -637,8 +637,8 @@ usprep_map( const UStringPrepProfile* profile,
*/
U_CAPI int32_t U_EXPORT2
usprep_prepare( const UStringPrepProfile* profile,
- const UChar* src, int32_t srcLength,
- UChar* dest, int32_t destCapacity,
+ const char16_t* src, int32_t srcLength,
+ char16_t* dest, int32_t destCapacity,
int32_t options,
UParseError* parseError,
UErrorCode* status ){
@@ -649,9 +649,9 @@ usprep_prepare( const UStringPrepProfile* profile,
}
//check arguments
- if(profile==NULL ||
- (src==NULL ? srcLength!=0 : srcLength<-1) ||
- (dest==NULL ? destCapacity!=0 : destCapacity<0)) {
+ if(profile==nullptr ||
+ (src==nullptr ? srcLength!=0 : srcLength<-1) ||
+ (dest==nullptr ? destCapacity!=0 : destCapacity<0)) {
*status=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -662,8 +662,8 @@ usprep_prepare( const UStringPrepProfile* profile,
}
// map
UnicodeString s1;
- UChar *b1 = s1.getBuffer(srcLength);
- if(b1==NULL){
+ char16_t *b1 = s1.getBuffer(srcLength);
+ if(b1==nullptr){
*status = U_MEMORY_ALLOCATION_ERROR;
return 0;
}
@@ -675,7 +675,7 @@ usprep_prepare( const UStringPrepProfile* profile,
// redo processing of string
/* we do not have enough room so grow the buffer*/
b1 = s1.getBuffer(b1Len);
- if(b1==NULL){
+ if(b1==nullptr){
*status = U_MEMORY_ALLOCATION_ERROR;
return 0;
}
@@ -706,7 +706,7 @@ usprep_prepare( const UStringPrepProfile* profile,
}
// Prohibit and checkBiDi in one pass
- const UChar *b2 = s2.getBuffer();
+ const char16_t *b2 = s2.getBuffer();
int32_t b2Len = s2.length();
UCharDirection direction=U_CHAR_DIRECTION_COUNT, firstCharDir=U_CHAR_DIRECTION_COUNT;
UBool leftToRight=false, rightToLeft=false;
@@ -746,16 +746,16 @@ usprep_prepare( const UStringPrepProfile* profile,
}
}
}
- if(profile->checkBiDi == true){
+ if(profile->checkBiDi){
// satisfy 2
- if( leftToRight == true && rightToLeft == true){
+ if( leftToRight && rightToLeft){
*status = U_STRINGPREP_CHECK_BIDI_ERROR;
uprv_syntaxError(b2,(rtlPos>ltrPos) ? rtlPos : ltrPos, b2Len, parseError);
return 0;
}
//satisfy 3
- if( rightToLeft == true &&
+ if( rightToLeft &&
!((firstCharDir == U_RIGHT_TO_LEFT || firstCharDir == U_RIGHT_TO_LEFT_ARABIC) &&
(direction == U_RIGHT_TO_LEFT || direction == U_RIGHT_TO_LEFT_ARABIC))
){
@@ -787,7 +787,7 @@ usprep_swap(const UDataSwapper *ds,
/* udata_swapDataHeader checks the arguments */
headerSize=udata_swapDataHeader(ds, inData, length, outData, pErrorCode);
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return 0;
}
@@ -809,7 +809,7 @@ usprep_swap(const UDataSwapper *ds,
}
inBytes=(const uint8_t *)inData+headerSize;
- outBytes=(uint8_t *)outData+headerSize;
+ outBytes= (outData == nullptr ) ? nullptr : (uint8_t *)outData+headerSize;
inIndexes=(const int32_t *)inBytes;
diff --git a/Build/source/libs/icu/icu-src/source/common/ustack.cpp b/Build/source/libs/icu/icu-src/source/common/ustack.cpp
index 8d9e475374d..5b15efcd7c5 100644
--- a/Build/source/libs/icu/icu-src/source/common/ustack.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ustack.cpp
@@ -35,7 +35,7 @@ UStack::UStack(UObjectDeleter *d, UElementsAreEqual *c, int32_t initialCapacity,
UStack::~UStack() {}
-void* UStack::pop(void) {
+void* UStack::pop() {
int32_t n = size() - 1;
void* result = nullptr;
if (n >= 0) {
@@ -44,7 +44,7 @@ void* UStack::pop(void) {
return result;
}
-int32_t UStack::popi(void) {
+int32_t UStack::popi() {
int32_t n = size() - 1;
int32_t result = 0;
if (n >= 0) {
diff --git a/Build/source/libs/icu/icu-src/source/common/ustr_cnv.cpp b/Build/source/libs/icu/icu-src/source/common/ustr_cnv.cpp
index 97fbc527a37..abcc12f6837 100644
--- a/Build/source/libs/icu/icu-src/source/common/ustr_cnv.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ustr_cnv.cpp
@@ -32,30 +32,30 @@
/* mutexed access to a shared default converter ----------------------------- */
-static UConverter *gDefaultConverter = NULL;
+static UConverter *gDefaultConverter = nullptr;
U_CAPI UConverter* U_EXPORT2
u_getDefaultConverter(UErrorCode *status)
{
- UConverter *converter = NULL;
+ UConverter *converter = nullptr;
- if (gDefaultConverter != NULL) {
- icu::umtx_lock(NULL);
+ if (gDefaultConverter != nullptr) {
+ icu::umtx_lock(nullptr);
/* need to check to make sure it wasn't taken out from under us */
- if (gDefaultConverter != NULL) {
+ if (gDefaultConverter != nullptr) {
converter = gDefaultConverter;
- gDefaultConverter = NULL;
+ gDefaultConverter = nullptr;
}
- icu::umtx_unlock(NULL);
+ icu::umtx_unlock(nullptr);
}
/* if the cache was empty, create a converter */
- if(converter == NULL) {
- converter = ucnv_open(NULL, status);
+ if(converter == nullptr) {
+ converter = ucnv_open(nullptr, status);
if(U_FAILURE(*status)) {
ucnv_close(converter);
- converter = NULL;
+ converter = nullptr;
}
}
@@ -65,20 +65,20 @@ u_getDefaultConverter(UErrorCode *status)
U_CAPI void U_EXPORT2
u_releaseDefaultConverter(UConverter *converter)
{
- if(gDefaultConverter == NULL) {
- if (converter != NULL) {
+ if(gDefaultConverter == nullptr) {
+ if (converter != nullptr) {
ucnv_reset(converter);
}
ucnv_enableCleanup();
- icu::umtx_lock(NULL);
- if(gDefaultConverter == NULL) {
+ icu::umtx_lock(nullptr);
+ if(gDefaultConverter == nullptr) {
gDefaultConverter = converter;
- converter = NULL;
+ converter = nullptr;
}
- icu::umtx_unlock(NULL);
+ icu::umtx_unlock(nullptr);
}
- if(converter != NULL) {
+ if(converter != nullptr) {
ucnv_close(converter);
}
}
@@ -86,27 +86,27 @@ u_releaseDefaultConverter(UConverter *converter)
U_CAPI void U_EXPORT2
u_flushDefaultConverter()
{
- UConverter *converter = NULL;
+ UConverter *converter = nullptr;
- if (gDefaultConverter != NULL) {
- icu::umtx_lock(NULL);
+ if (gDefaultConverter != nullptr) {
+ icu::umtx_lock(nullptr);
/* need to check to make sure it wasn't taken out from under us */
- if (gDefaultConverter != NULL) {
+ if (gDefaultConverter != nullptr) {
converter = gDefaultConverter;
- gDefaultConverter = NULL;
+ gDefaultConverter = nullptr;
}
- icu::umtx_unlock(NULL);
+ icu::umtx_unlock(nullptr);
}
/* if the cache was populated, flush it */
- if(converter != NULL) {
+ if(converter != nullptr) {
ucnv_close(converter);
}
}
-/* conversions between char* and UChar* ------------------------------------- */
+/* conversions between char* and char16_t* ------------------------------------- */
/* maximum string length for u_uastrcpy() and u_austrcpy() implementations */
#define MAX_STRLEN 0x0FFFFFFF
@@ -128,22 +128,22 @@ static int32_t u_astrnlen(const char *s1, int32_t n)
return len;
}
-U_CAPI UChar* U_EXPORT2
-u_uastrncpy(UChar *ucs1,
+U_CAPI char16_t* U_EXPORT2
+u_uastrncpy(char16_t *ucs1,
const char *s2,
int32_t n)
{
- UChar *target = ucs1;
+ char16_t *target = ucs1;
UErrorCode err = U_ZERO_ERROR;
UConverter *cnv = u_getDefaultConverter(&err);
- if(U_SUCCESS(err) && cnv != NULL) {
+ if(U_SUCCESS(err) && cnv != nullptr) {
ucnv_reset(cnv);
ucnv_toUnicode(cnv,
&target,
ucs1+n,
&s2,
s2+u_astrnlen(s2, n),
- NULL,
+ nullptr,
true,
&err);
ucnv_reset(cnv); /* be good citizens */
@@ -160,13 +160,13 @@ u_uastrncpy(UChar *ucs1,
return ucs1;
}
-U_CAPI UChar* U_EXPORT2
-u_uastrcpy(UChar *ucs1,
+U_CAPI char16_t* U_EXPORT2
+u_uastrcpy(char16_t *ucs1,
const char *s2 )
{
UErrorCode err = U_ZERO_ERROR;
UConverter *cnv = u_getDefaultConverter(&err);
- if(U_SUCCESS(err) && cnv != NULL) {
+ if(U_SUCCESS(err) && cnv != nullptr) {
ucnv_toUChars(cnv,
ucs1,
MAX_STRLEN,
@@ -186,7 +186,7 @@ u_uastrcpy(UChar *ucs1,
/*
returns the minimum of (the length of the null-terminated string) and n.
*/
-static int32_t u_ustrnlen(const UChar *ucs1, int32_t n)
+static int32_t u_ustrnlen(const char16_t *ucs1, int32_t n)
{
int32_t len = 0;
@@ -202,20 +202,20 @@ static int32_t u_ustrnlen(const UChar *ucs1, int32_t n)
U_CAPI char* U_EXPORT2
u_austrncpy(char *s1,
- const UChar *ucs2,
+ const char16_t *ucs2,
int32_t n)
{
char *target = s1;
UErrorCode err = U_ZERO_ERROR;
UConverter *cnv = u_getDefaultConverter(&err);
- if(U_SUCCESS(err) && cnv != NULL) {
+ if(U_SUCCESS(err) && cnv != nullptr) {
ucnv_reset(cnv);
ucnv_fromUnicode(cnv,
&target,
s1+n,
&ucs2,
ucs2+u_ustrnlen(ucs2, n),
- NULL,
+ nullptr,
true,
&err);
ucnv_reset(cnv); /* be good citizens */
@@ -234,11 +234,11 @@ u_austrncpy(char *s1,
U_CAPI char* U_EXPORT2
u_austrcpy(char *s1,
- const UChar *ucs2 )
+ const char16_t *ucs2 )
{
UErrorCode err = U_ZERO_ERROR;
UConverter *cnv = u_getDefaultConverter(&err);
- if(U_SUCCESS(err) && cnv != NULL) {
+ if(U_SUCCESS(err) && cnv != nullptr) {
int32_t len = ucnv_fromUChars(cnv,
s1,
MAX_STRLEN,
diff --git a/Build/source/libs/icu/icu-src/source/common/ustr_titlecase_brkiter.cpp b/Build/source/libs/icu/icu-src/source/common/ustr_titlecase_brkiter.cpp
index 85dfa0decb4..82beaca65b2 100644
--- a/Build/source/libs/icu/icu-src/source/common/ustr_titlecase_brkiter.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ustr_titlecase_brkiter.cpp
@@ -43,28 +43,28 @@ U_NAMESPACE_BEGIN
class WholeStringBreakIterator : public BreakIterator {
public:
WholeStringBreakIterator() : BreakIterator(), length(0) {}
- ~WholeStringBreakIterator() U_OVERRIDE;
- bool operator==(const BreakIterator&) const U_OVERRIDE;
- WholeStringBreakIterator *clone() const U_OVERRIDE;
+ ~WholeStringBreakIterator() override;
+ bool operator==(const BreakIterator&) const override;
+ WholeStringBreakIterator *clone() const override;
static UClassID U_EXPORT2 getStaticClassID();
- UClassID getDynamicClassID() const U_OVERRIDE;
- CharacterIterator &getText() const U_OVERRIDE;
- UText *getUText(UText *fillIn, UErrorCode &errorCode) const U_OVERRIDE;
- void setText(const UnicodeString &text) U_OVERRIDE;
- void setText(UText *text, UErrorCode &errorCode) U_OVERRIDE;
- void adoptText(CharacterIterator* it) U_OVERRIDE;
- int32_t first() U_OVERRIDE;
- int32_t last() U_OVERRIDE;
- int32_t previous() U_OVERRIDE;
- int32_t next() U_OVERRIDE;
- int32_t current() const U_OVERRIDE;
- int32_t following(int32_t offset) U_OVERRIDE;
- int32_t preceding(int32_t offset) U_OVERRIDE;
- UBool isBoundary(int32_t offset) U_OVERRIDE;
- int32_t next(int32_t n) U_OVERRIDE;
+ UClassID getDynamicClassID() const override;
+ CharacterIterator &getText() const override;
+ UText *getUText(UText *fillIn, UErrorCode &errorCode) const override;
+ void setText(const UnicodeString &text) override;
+ void setText(UText *text, UErrorCode &errorCode) override;
+ void adoptText(CharacterIterator* it) override;
+ int32_t first() override;
+ int32_t last() override;
+ int32_t previous() override;
+ int32_t next() override;
+ int32_t current() const override;
+ int32_t following(int32_t offset) override;
+ int32_t preceding(int32_t offset) override;
+ UBool isBoundary(int32_t offset) override;
+ int32_t next(int32_t n) override;
WholeStringBreakIterator *createBufferClone(void *stackBuffer, int32_t &BufferSize,
- UErrorCode &errorCode) U_OVERRIDE;
- WholeStringBreakIterator &refreshInputText(UText *input, UErrorCode &errorCode) U_OVERRIDE;
+ UErrorCode &errorCode) override;
+ WholeStringBreakIterator &refreshInputText(UText *input, UErrorCode &errorCode) override;
private:
int32_t length;
@@ -165,12 +165,12 @@ BreakIterator *ustrcase_getTitleBreakIterator(
int32_t CaseMap::toTitle(
const char *locale, uint32_t options, BreakIterator *iter,
- const UChar *src, int32_t srcLength,
- UChar *dest, int32_t destCapacity, Edits *edits,
+ const char16_t *src, int32_t srcLength,
+ char16_t *dest, int32_t destCapacity, Edits *edits,
UErrorCode &errorCode) {
LocalPointer<BreakIterator> ownedIter;
iter = ustrcase_getTitleBreakIterator(nullptr, locale, options, iter, ownedIter, errorCode);
- if(iter==NULL) {
+ if(iter==nullptr) {
return 0;
}
UnicodeString s(srcLength<0, src, srcLength);
@@ -187,8 +187,8 @@ U_NAMESPACE_END
U_NAMESPACE_USE
U_CAPI int32_t U_EXPORT2
-u_strToTitle(UChar *dest, int32_t destCapacity,
- const UChar *src, int32_t srcLength,
+u_strToTitle(char16_t *dest, int32_t destCapacity,
+ const char16_t *src, int32_t srcLength,
UBreakIterator *titleIter,
const char *locale,
UErrorCode *pErrorCode) {
@@ -210,13 +210,13 @@ u_strToTitle(UChar *dest, int32_t destCapacity,
U_CAPI int32_t U_EXPORT2
ucasemap_toTitle(UCaseMap *csm,
- UChar *dest, int32_t destCapacity,
- const UChar *src, int32_t srcLength,
+ char16_t *dest, int32_t destCapacity,
+ const char16_t *src, int32_t srcLength,
UErrorCode *pErrorCode) {
if (U_FAILURE(*pErrorCode)) {
return 0;
}
- if (csm->iter == NULL) {
+ if (csm->iter == nullptr) {
LocalPointer<BreakIterator> ownedIter;
BreakIterator *iter = ustrcase_getTitleBreakIterator(
nullptr, csm->locale, csm->options, nullptr, ownedIter, *pErrorCode);
@@ -231,7 +231,7 @@ ucasemap_toTitle(UCaseMap *csm,
csm->caseLocale, csm->options, csm->iter,
dest, destCapacity,
src, srcLength,
- ustrcase_internalToTitle, NULL, *pErrorCode);
+ ustrcase_internalToTitle, nullptr, *pErrorCode);
}
#endif // !UCONFIG_NO_BREAK_ITERATION
diff --git a/Build/source/libs/icu/icu-src/source/common/ustr_wcs.cpp b/Build/source/libs/icu/icu-src/source/common/ustr_wcs.cpp
index 1a6ea2375d0..efbbbc2f187 100644
--- a/Build/source/libs/icu/icu-src/source/common/ustr_wcs.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ustr_wcs.cpp
@@ -33,7 +33,7 @@
#define _BUFFER_CAPACITY_MULTIPLIER 2
#if !defined(U_WCHAR_IS_UTF16) && !defined(U_WCHAR_IS_UTF32)
-// TODO: We should use CharString for char buffers and UnicodeString for UChar buffers.
+// TODO: We should use CharString for char buffers and UnicodeString for char16_t buffers.
// Then we could change this to work only with wchar_t buffers.
static inline UBool
u_growAnyBufferFromStatic(void *context,
@@ -42,7 +42,7 @@ u_growAnyBufferFromStatic(void *context,
// Use char* not void* to avoid the compiler's strict-aliasing assumptions
// and related warnings.
char *newBuffer=(char *)uprv_malloc(reqCapacity*size);
- if(newBuffer!=NULL) {
+ if(newBuffer!=nullptr) {
if(length>0) {
uprv_memcpy(newBuffer, *pBuffer, (size_t)length*size);
}
@@ -57,7 +57,7 @@ u_growAnyBufferFromStatic(void *context,
}
*pBuffer=newBuffer;
- return (UBool)(newBuffer!=NULL);
+ return (UBool)(newBuffer!=nullptr);
}
/* helper function */
@@ -65,7 +65,7 @@ static wchar_t*
_strToWCS(wchar_t *dest,
int32_t destCapacity,
int32_t *pDestLength,
- const UChar *src,
+ const char16_t *src,
int32_t srcLength,
UErrorCode *pErrorCode){
@@ -73,19 +73,19 @@ _strToWCS(wchar_t *dest,
char* tempBuf = stackBuffer;
int32_t tempBufCapacity = _STACK_BUFFER_CAPACITY;
char* tempBufLimit = stackBuffer + tempBufCapacity;
- UConverter* conv = NULL;
+ UConverter* conv = nullptr;
char* saveBuf = tempBuf;
- wchar_t* intTarget=NULL;
+ wchar_t* intTarget=nullptr;
int32_t intTargetCapacity=0;
int count=0,retVal=0;
- const UChar *pSrcLimit =NULL;
- const UChar *pSrc = src;
+ const char16_t *pSrcLimit =nullptr;
+ const char16_t *pSrc = src;
conv = u_getDefaultConverter(pErrorCode);
if(U_FAILURE(*pErrorCode)){
- return NULL;
+ return nullptr;
}
if(srcLength == -1){
@@ -99,7 +99,7 @@ _strToWCS(wchar_t *dest,
*pErrorCode = U_ZERO_ERROR;
/* convert to chars using default converter */
- ucnv_fromUnicode(conv,&tempBuf,tempBufLimit,&pSrc,pSrcLimit,NULL,(UBool)(pSrc==pSrcLimit),pErrorCode);
+ ucnv_fromUnicode(conv,&tempBuf,tempBufLimit,&pSrc,pSrcLimit,nullptr,(UBool)(pSrc==pSrcLimit),pErrorCode);
count =(tempBuf - saveBuf);
/* This should rarely occur */
@@ -170,7 +170,7 @@ _strToWCS(wchar_t *dest,
break;
}else if(retVal== remaining){/* should never occur */
int numWritten = (pIntTarget-intTarget);
- u_growAnyBufferFromStatic(NULL,(void**) &intTarget,
+ u_growAnyBufferFromStatic(nullptr,(void**) &intTarget,
&intTargetCapacity,
intTargetCapacity * _BUFFER_CAPACITY_MULTIPLIER,
numWritten,
@@ -232,20 +232,20 @@ U_CAPI wchar_t* U_EXPORT2
u_strToWCS(wchar_t *dest,
int32_t destCapacity,
int32_t *pDestLength,
- const UChar *src,
+ const char16_t *src,
int32_t srcLength,
UErrorCode *pErrorCode){
/* args check */
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)){
- return NULL;
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)){
+ return nullptr;
}
- if( (src==NULL && srcLength!=0) || srcLength < -1 ||
- (destCapacity<0) || (dest == NULL && destCapacity > 0)
+ if( (src==nullptr && srcLength!=0) || srcLength < -1 ||
+ (destCapacity<0) || (dest == nullptr && destCapacity > 0)
) {
*pErrorCode = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
#ifdef U_WCHAR_IS_UTF16
@@ -254,13 +254,13 @@ u_strToWCS(wchar_t *dest,
srcLength = u_strlen(src);
}
if(0 < srcLength && srcLength <= destCapacity){
- u_memcpy((UChar *)dest, src, srcLength);
+ u_memcpy((char16_t *)dest, src, srcLength);
}
if(pDestLength){
*pDestLength = srcLength;
}
- u_terminateUChars((UChar *)dest,destCapacity,srcLength,pErrorCode);
+ u_terminateUChars((char16_t *)dest,destCapacity,srcLength,pErrorCode);
return dest;
@@ -279,8 +279,8 @@ u_strToWCS(wchar_t *dest,
#if !defined(U_WCHAR_IS_UTF16) && !defined(U_WCHAR_IS_UTF32)
/* helper function */
-static UChar*
-_strFromWCS( UChar *dest,
+static char16_t*
+_strFromWCS( char16_t *dest,
int32_t destCapacity,
int32_t *pDestLength,
const wchar_t *src,
@@ -288,12 +288,12 @@ _strFromWCS( UChar *dest,
UErrorCode *pErrorCode)
{
int32_t retVal =0, count =0 ;
- UConverter* conv = NULL;
- UChar* pTarget = NULL;
- UChar* pTargetLimit = NULL;
- UChar* target = NULL;
+ UConverter* conv = nullptr;
+ char16_t* pTarget = nullptr;
+ char16_t* pTargetLimit = nullptr;
+ char16_t* target = nullptr;
- UChar uStack [_STACK_BUFFER_CAPACITY];
+ char16_t uStack [_STACK_BUFFER_CAPACITY];
wchar_t wStack[_STACK_BUFFER_CAPACITY];
wchar_t* pWStack = wStack;
@@ -303,10 +303,10 @@ _strFromWCS( UChar *dest,
int32_t cStackCap = _STACK_BUFFER_CAPACITY;
char* pCSrc=cStack;
char* pCSave=pCSrc;
- char* pCSrcLimit=NULL;
+ char* pCSrcLimit=nullptr;
const wchar_t* pSrc = src;
- const wchar_t* pSrcLimit = NULL;
+ const wchar_t* pSrcLimit = nullptr;
if(srcLength ==-1){
/* if the wchar_t source is null terminated we can safely
@@ -390,7 +390,7 @@ _strFromWCS( UChar *dest,
/* Should rarely occur */
/* allocate new buffer buffer */
pWStack =(wchar_t*) uprv_malloc(sizeof(wchar_t) * (nulLen + 1));
- if(pWStack==NULL){
+ if(pWStack==nullptr){
*pErrorCode = U_MEMORY_ALLOCATION_ERROR;
goto cleanup;
}
@@ -436,7 +436,7 @@ _strFromWCS( UChar *dest,
conv= u_getDefaultConverter(pErrorCode);
- if(U_FAILURE(*pErrorCode)|| conv==NULL){
+ if(U_FAILURE(*pErrorCode)|| conv==nullptr){
goto cleanup;
}
@@ -445,7 +445,7 @@ _strFromWCS( UChar *dest,
*pErrorCode = U_ZERO_ERROR;
/* convert to stack buffer*/
- ucnv_toUnicode(conv,&pTarget,pTargetLimit,(const char**)&pCSrc,pCSrcLimit,NULL,(UBool)(pCSrc==pCSrcLimit),pErrorCode);
+ ucnv_toUnicode(conv,&pTarget,pTargetLimit,(const char**)&pCSrc,pCSrcLimit,nullptr,(UBool)(pCSrc==pCSrcLimit),pErrorCode);
/* increment count to number written to stack */
count+= pTarget - target;
@@ -482,8 +482,8 @@ cleanup:
}
#endif
-U_CAPI UChar* U_EXPORT2
-u_strFromWCS(UChar *dest,
+U_CAPI char16_t* U_EXPORT2
+u_strFromWCS(char16_t *dest,
int32_t destCapacity,
int32_t *pDestLength,
const wchar_t *src,
@@ -492,24 +492,24 @@ u_strFromWCS(UChar *dest,
{
/* args check */
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)){
- return NULL;
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)){
+ return nullptr;
}
- if( (src==NULL && srcLength!=0) || srcLength < -1 ||
- (destCapacity<0) || (dest == NULL && destCapacity > 0)
+ if( (src==nullptr && srcLength!=0) || srcLength < -1 ||
+ (destCapacity<0) || (dest == nullptr && destCapacity > 0)
) {
*pErrorCode = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
#ifdef U_WCHAR_IS_UTF16
/* wchar_t is UTF-16 just do a memcpy */
if(srcLength == -1){
- srcLength = u_strlen((const UChar *)src);
+ srcLength = u_strlen((const char16_t *)src);
}
if(0 < srcLength && srcLength <= destCapacity){
- u_memcpy(dest, (const UChar *)src, srcLength);
+ u_memcpy(dest, (const char16_t *)src, srcLength);
}
if(pDestLength){
*pDestLength = srcLength;
diff --git a/Build/source/libs/icu/icu-src/source/common/ustrcase.cpp b/Build/source/libs/icu/icu-src/source/common/ustrcase.cpp
index 8037c09b4f0..e4aec8a1c73 100644
--- a/Build/source/libs/icu/icu-src/source/common/ustrcase.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ustrcase.cpp
@@ -51,7 +51,7 @@ int32_t checkOverflowAndEditsError(int32_t destIndex, int32_t destCapacity,
if (U_SUCCESS(errorCode)) {
if (destIndex > destCapacity) {
errorCode = U_BUFFER_OVERFLOW_ERROR;
- } else if (edits != NULL) {
+ } else if (edits != nullptr) {
edits->copyErrorTo(errorCode);
}
}
@@ -60,8 +60,8 @@ int32_t checkOverflowAndEditsError(int32_t destIndex, int32_t destCapacity,
/* Appends a full case mapping result, see UCASE_MAX_STRING_LENGTH. */
inline int32_t
-appendResult(UChar *dest, int32_t destIndex, int32_t destCapacity,
- int32_t result, const UChar *s,
+appendResult(char16_t *dest, int32_t destIndex, int32_t destCapacity,
+ int32_t result, const char16_t *s,
int32_t cpLength, uint32_t options, icu::Edits *edits) {
UChar32 c;
int32_t length;
@@ -69,7 +69,7 @@ appendResult(UChar *dest, int32_t destIndex, int32_t destCapacity,
/* decode the result */
if(result<0) {
/* (not) original code point */
- if(edits!=NULL) {
+ if(edits!=nullptr) {
edits->addUnchanged(cpLength);
}
if(options & U_OMIT_UNCHANGED_TEXT) {
@@ -77,7 +77,7 @@ appendResult(UChar *dest, int32_t destIndex, int32_t destCapacity,
}
c=~result;
if(destIndex<destCapacity && c<=0xffff) { // BMP slightly-fastpath
- dest[destIndex++]=(UChar)c;
+ dest[destIndex++]=(char16_t)c;
return destIndex;
}
length=cpLength;
@@ -86,8 +86,8 @@ appendResult(UChar *dest, int32_t destIndex, int32_t destCapacity,
c=U_SENTINEL;
length=result;
} else if(destIndex<destCapacity && result<=0xffff) { // BMP slightly-fastpath
- dest[destIndex++]=(UChar)result;
- if(edits!=NULL) {
+ dest[destIndex++]=(char16_t)result;
+ if(edits!=nullptr) {
edits->addReplace(cpLength, 1);
}
return destIndex;
@@ -95,7 +95,7 @@ appendResult(UChar *dest, int32_t destIndex, int32_t destCapacity,
c=result;
length=U16_LENGTH(c);
}
- if(edits!=NULL) {
+ if(edits!=nullptr) {
edits->addReplace(cpLength, length);
}
}
@@ -133,7 +133,7 @@ appendResult(UChar *dest, int32_t destIndex, int32_t destCapacity,
}
inline int32_t
-appendUChar(UChar *dest, int32_t destIndex, int32_t destCapacity, UChar c) {
+appendUChar(char16_t *dest, int32_t destIndex, int32_t destCapacity, char16_t c) {
if(destIndex<destCapacity) {
dest[destIndex]=c;
} else if(destIndex==INT32_MAX) {
@@ -143,9 +143,9 @@ appendUChar(UChar *dest, int32_t destIndex, int32_t destCapacity, UChar c) {
}
int32_t
-appendNonEmptyUnchanged(UChar *dest, int32_t destIndex, int32_t destCapacity,
- const UChar *s, int32_t length, uint32_t options, icu::Edits *edits) {
- if(edits!=NULL) {
+appendNonEmptyUnchanged(char16_t *dest, int32_t destIndex, int32_t destCapacity,
+ const char16_t *s, int32_t length, uint32_t options, icu::Edits *edits) {
+ if(edits!=nullptr) {
edits->addUnchanged(length);
}
if(options & U_OMIT_UNCHANGED_TEXT) {
@@ -161,8 +161,8 @@ appendNonEmptyUnchanged(UChar *dest, int32_t destIndex, int32_t destCapacity,
}
inline int32_t
-appendUnchanged(UChar *dest, int32_t destIndex, int32_t destCapacity,
- const UChar *s, int32_t length, uint32_t options, icu::Edits *edits) {
+appendUnchanged(char16_t *dest, int32_t destIndex, int32_t destCapacity,
+ const char16_t *s, int32_t length, uint32_t options, icu::Edits *edits) {
if (length <= 0) {
return destIndex;
}
@@ -189,12 +189,12 @@ utf16_caseContextIterator(void *context, int8_t dir) {
if(dir<0) {
if(csc->start<csc->index) {
- U16_PREV((const UChar *)csc->p, csc->start, csc->index, c);
+ U16_PREV((const char16_t *)csc->p, csc->start, csc->index, c);
return c;
}
} else {
if(csc->index<csc->limit) {
- U16_NEXT((const UChar *)csc->p, csc->index, csc->limit, c);
+ U16_NEXT((const char16_t *)csc->p, csc->index, csc->limit, c);
return c;
}
}
@@ -206,8 +206,8 @@ utf16_caseContextIterator(void *context, int8_t dir) {
* caseLocale < 0: Case-folds [srcStart..srcLimit[.
*/
int32_t toLower(int32_t caseLocale, uint32_t options,
- UChar *dest, int32_t destCapacity,
- const UChar *src, UCaseContext *csc, int32_t srcStart, int32_t srcLimit,
+ char16_t *dest, int32_t destCapacity,
+ const char16_t *src, UCaseContext *csc, int32_t srcStart, int32_t srcLimit,
icu::Edits *edits, UErrorCode &errorCode) {
const int8_t *latinToLower;
if (caseLocale == UCASE_LOC_ROOT ||
@@ -224,7 +224,7 @@ int32_t toLower(int32_t caseLocale, uint32_t options,
int32_t srcIndex = srcStart;
for (;;) {
// fast path for simple cases
- UChar lead = 0;
+ char16_t lead = 0;
while (srcIndex < srcLimit) {
lead = src[srcIndex];
int32_t delta;
@@ -244,7 +244,7 @@ int32_t toLower(int32_t caseLocale, uint32_t options,
continue;
}
}
- lead += static_cast<UChar>(delta);
+ lead += static_cast<char16_t>(delta);
destIndex = appendUnchanged(dest, destIndex, destCapacity,
src + prev, srcIndex - 1 - prev, options, edits);
if (destIndex >= 0) {
@@ -264,7 +264,7 @@ int32_t toLower(int32_t caseLocale, uint32_t options,
}
// slow path
int32_t cpStart = srcIndex++;
- UChar trail;
+ char16_t trail;
UChar32 c;
if (U16_IS_LEAD(lead) && srcIndex < srcLimit && U16_IS_TRAIL(trail = src[srcIndex])) {
c = U16_GET_SUPPLEMENTARY(lead, trail);
@@ -272,7 +272,7 @@ int32_t toLower(int32_t caseLocale, uint32_t options,
} else {
c = lead;
}
- const UChar *s;
+ const char16_t *s;
if (caseLocale >= 0) {
csc->cpStart = cpStart;
csc->cpLimit = srcIndex;
@@ -304,8 +304,8 @@ int32_t toLower(int32_t caseLocale, uint32_t options,
}
int32_t toUpper(int32_t caseLocale, uint32_t options,
- UChar *dest, int32_t destCapacity,
- const UChar *src, UCaseContext *csc, int32_t srcLength,
+ char16_t *dest, int32_t destCapacity,
+ const char16_t *src, UCaseContext *csc, int32_t srcLength,
icu::Edits *edits, UErrorCode &errorCode) {
const int8_t *latinToUpper;
if (caseLocale == UCASE_LOC_TURKISH) {
@@ -319,7 +319,7 @@ int32_t toUpper(int32_t caseLocale, uint32_t options,
int32_t srcIndex = 0;
for (;;) {
// fast path for simple cases
- UChar lead = 0;
+ char16_t lead = 0;
while (srcIndex < srcLength) {
lead = src[srcIndex];
int32_t delta;
@@ -339,7 +339,7 @@ int32_t toUpper(int32_t caseLocale, uint32_t options,
continue;
}
}
- lead += static_cast<UChar>(delta);
+ lead += static_cast<char16_t>(delta);
destIndex = appendUnchanged(dest, destIndex, destCapacity,
src + prev, srcIndex - 1 - prev, options, edits);
if (destIndex >= 0) {
@@ -360,7 +360,7 @@ int32_t toUpper(int32_t caseLocale, uint32_t options,
// slow path
int32_t cpStart;
csc->cpStart = cpStart = srcIndex++;
- UChar trail;
+ char16_t trail;
UChar32 c;
if (U16_IS_LEAD(lead) && srcIndex < srcLength && U16_IS_TRAIL(trail = src[srcIndex])) {
c = U16_GET_SUPPLEMENTARY(lead, trail);
@@ -369,7 +369,7 @@ int32_t toUpper(int32_t caseLocale, uint32_t options,
c = lead;
}
csc->cpLimit = srcIndex;
- const UChar *s;
+ const char16_t *s;
c = ucase_toFullUpper(c, utf16_caseContextIterator, csc, &s, caseLocale);
if (c >= 0) {
destIndex = appendUnchanged(dest, destIndex, destCapacity,
@@ -413,8 +413,8 @@ namespace {
*
* @return the src index after the titlecased sequence, or the start index if no Dutch IJ
*/
-int32_t maybeTitleDutchIJ(const UChar *src, UChar32 c, int32_t start, int32_t segmentLimit,
- UChar *dest, int32_t &destIndex, int32_t destCapacity, uint32_t options,
+int32_t maybeTitleDutchIJ(const char16_t *src, UChar32 c, int32_t start, int32_t segmentLimit,
+ char16_t *dest, int32_t &destIndex, int32_t destCapacity, uint32_t options,
icu::Edits *edits) {
U_ASSERT(start < segmentLimit);
@@ -427,7 +427,7 @@ int32_t maybeTitleDutchIJ(const UChar *src, UChar32 c, int32_t start, int32_t se
int32_t unchanged2 = 0; // after the j (0 or 1)
// next character after the first letter
- UChar c2 = src[index++];
+ char16_t c2 = src[index++];
// Is the first letter an i/I with accent?
if (c == u'I') {
@@ -492,8 +492,8 @@ int32_t maybeTitleDutchIJ(const UChar *src, UChar32 c, int32_t start, int32_t se
U_CFUNC int32_t U_CALLCONV
ustrcase_internalToTitle(int32_t caseLocale, uint32_t options, BreakIterator *iter,
- UChar *dest, int32_t destCapacity,
- const UChar *src, int32_t srcLength,
+ char16_t *dest, int32_t destCapacity,
+ const char16_t *src, int32_t srcLength,
icu::Edits *edits,
UErrorCode &errorCode) {
if (!ustrcase_checkTitleAdjustmentOptions(options, errorCode)) {
@@ -562,7 +562,7 @@ ustrcase_internalToTitle(int32_t caseLocale, uint32_t options, BreakIterator *it
/* titlecase c which is from [titleStart..titleLimit[ */
csc.cpStart=titleStart;
csc.cpLimit=titleLimit;
- const UChar *s;
+ const char16_t *s;
c=ucase_toFullTitle(c, utf16_caseContextIterator, &csc, &s, caseLocale);
destIndex=appendResult(dest, destIndex, destCapacity, c, s,
titleLimit-titleStart, options, edits);
@@ -592,7 +592,7 @@ ustrcase_internalToTitle(int32_t caseLocale, uint32_t options, BreakIterator *it
destIndex+=
toLower(
caseLocale, options,
- dest+destIndex, destCapacity-destIndex,
+ (dest==nullptr) ? nullptr: dest+destIndex, destCapacity-destIndex,
src, &csc, titleLimit, index,
edits, errorCode);
if(errorCode==U_BUFFER_OVERFLOW_ERROR) {
@@ -1079,7 +1079,7 @@ uint32_t getDiacriticData(UChar32 c) {
}
}
-UBool isFollowedByCasedLetter(const UChar *s, int32_t i, int32_t length) {
+UBool isFollowedByCasedLetter(const char16_t *s, int32_t i, int32_t length) {
while (i < length) {
UChar32 c;
U16_NEXT(s, i, length, c);
@@ -1102,8 +1102,8 @@ UBool isFollowedByCasedLetter(const UChar *s, int32_t i, int32_t length) {
* TODO: Try to re-consolidate one way or another with the non-Greek function.
*/
int32_t toUpper(uint32_t options,
- UChar *dest, int32_t destCapacity,
- const UChar *src, int32_t srcLength,
+ char16_t *dest, int32_t destCapacity,
+ const char16_t *src, int32_t srcLength,
Edits *edits,
UErrorCode &errorCode) {
int32_t destIndex=0;
@@ -1130,14 +1130,18 @@ int32_t toUpper(uint32_t options,
// Adding one only to the final vowel in a longer sequence
// (which does not occur in normal writing) would require lookahead.
// Set the same flag as for preserving an existing dialytika.
- if ((data & HAS_VOWEL) != 0 && (state & AFTER_VOWEL_WITH_ACCENT) != 0 &&
- (upper == 0x399 || upper == 0x3A5)) {
- data |= HAS_DIALYTIKA;
+ if ((data & HAS_VOWEL) != 0 &&
+ (state & (AFTER_VOWEL_WITH_PRECOMPOSED_ACCENT | AFTER_VOWEL_WITH_COMBINING_ACCENT)) !=
+ 0 &&
+ (upper == 0x399 || upper == 0x3A5)) {
+ data |= (state & AFTER_VOWEL_WITH_PRECOMPOSED_ACCENT) ? HAS_DIALYTIKA
+ : HAS_COMBINING_DIALYTIKA;
}
int32_t numYpogegrammeni = 0; // Map each one to a trailing, spacing, capital iota.
if ((data & HAS_YPOGEGRAMMENI) != 0) {
numYpogegrammeni = 1;
}
+ const UBool hasPrecomposedAccent = (data & HAS_ACCENT) != 0;
// Skip combining diacritics after this Greek letter.
while (nextIndex < srcLength) {
uint32_t diacriticData = getDiacriticData(src[nextIndex]);
@@ -1152,7 +1156,8 @@ int32_t toUpper(uint32_t options,
}
}
if ((data & HAS_VOWEL_AND_ACCENT_AND_DIALYTIKA) == HAS_VOWEL_AND_ACCENT) {
- nextState |= AFTER_VOWEL_WITH_ACCENT;
+ nextState |= hasPrecomposedAccent ? AFTER_VOWEL_WITH_PRECOMPOSED_ACCENT
+ : AFTER_VOWEL_WITH_COMBINING_ACCENT;
}
// Map according to Greek rules.
UBool addTonos = false;
@@ -1163,7 +1168,7 @@ int32_t toUpper(uint32_t options,
!isFollowedByCasedLetter(src, nextIndex, srcLength)) {
// Keep disjunctive "or" with (only) a tonos.
// We use the same "word boundary" conditions as for the Final_Sigma test.
- if (i == nextIndex) {
+ if (hasPrecomposedAccent) {
upper = 0x389; // Preserve the precomposed form.
} else {
addTonos = true;
@@ -1198,11 +1203,11 @@ int32_t toUpper(uint32_t options,
int32_t newLength = (i2 - i) + numYpogegrammeni;
change |= oldLength != newLength;
if (change) {
- if (edits != NULL) {
+ if (edits != nullptr) {
edits->addReplace(oldLength, newLength);
}
} else {
- if (edits != NULL) {
+ if (edits != nullptr) {
edits->addUnchanged(oldLength);
}
// Write unchanged text?
@@ -1211,7 +1216,7 @@ int32_t toUpper(uint32_t options,
}
if (change) {
- destIndex=appendUChar(dest, destIndex, destCapacity, (UChar)upper);
+ destIndex=appendUChar(dest, destIndex, destCapacity, (char16_t)upper);
if (destIndex >= 0 && (data & HAS_EITHER_DIALYTIKA) != 0) {
destIndex=appendUChar(dest, destIndex, destCapacity, 0x308); // restore or add a dialytika
}
@@ -1228,8 +1233,8 @@ int32_t toUpper(uint32_t options,
}
}
} else {
- const UChar *s;
- c=ucase_toFullUpper(c, NULL, NULL, &s, UCASE_LOC_GREEK);
+ const char16_t *s;
+ c=ucase_toFullUpper(c, nullptr, nullptr, &s, UCASE_LOC_GREEK);
destIndex = appendResult(dest, destIndex, destCapacity, c, s,
nextIndex - i, options, edits);
if (destIndex < 0) {
@@ -1251,8 +1256,8 @@ U_NAMESPACE_END
U_CFUNC int32_t U_CALLCONV
ustrcase_internalToLower(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITERATOR_UNUSED
- UChar *dest, int32_t destCapacity,
- const UChar *src, int32_t srcLength,
+ char16_t *dest, int32_t destCapacity,
+ const char16_t *src, int32_t srcLength,
icu::Edits *edits,
UErrorCode &errorCode) {
UCaseContext csc=UCASECONTEXT_INITIALIZER;
@@ -1268,8 +1273,8 @@ ustrcase_internalToLower(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_IT
U_CFUNC int32_t U_CALLCONV
ustrcase_internalToUpper(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITERATOR_UNUSED
- UChar *dest, int32_t destCapacity,
- const UChar *src, int32_t srcLength,
+ char16_t *dest, int32_t destCapacity,
+ const char16_t *src, int32_t srcLength,
icu::Edits *edits,
UErrorCode &errorCode) {
int32_t destIndex;
@@ -1291,8 +1296,8 @@ ustrcase_internalToUpper(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_IT
U_CFUNC int32_t U_CALLCONV
ustrcase_internalFold(int32_t /* caseLocale */, uint32_t options, UCASEMAP_BREAK_ITERATOR_UNUSED
- UChar *dest, int32_t destCapacity,
- const UChar *src, int32_t srcLength,
+ char16_t *dest, int32_t destCapacity,
+ const char16_t *src, int32_t srcLength,
icu::Edits *edits,
UErrorCode &errorCode) {
int32_t destIndex = toLower(
@@ -1305,8 +1310,8 @@ ustrcase_internalFold(int32_t /* caseLocale */, uint32_t options, UCASEMAP_BREAK
U_CFUNC int32_t
ustrcase_map(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITERATOR_PARAM
- UChar *dest, int32_t destCapacity,
- const UChar *src, int32_t srcLength,
+ char16_t *dest, int32_t destCapacity,
+ const char16_t *src, int32_t srcLength,
UStringCaseMapper *stringCaseMapper,
icu::Edits *edits,
UErrorCode &errorCode) {
@@ -1317,8 +1322,8 @@ ustrcase_map(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITERATOR_PARAM
return 0;
}
if( destCapacity<0 ||
- (dest==NULL && destCapacity>0) ||
- src==NULL ||
+ (dest==nullptr && destCapacity>0) ||
+ src==nullptr ||
srcLength<-1
) {
errorCode=U_ILLEGAL_ARGUMENT_ERROR;
@@ -1331,7 +1336,7 @@ ustrcase_map(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITERATOR_PARAM
}
/* check for overlapping source and destination */
- if( dest!=NULL &&
+ if( dest!=nullptr &&
((src>=dest && src<(dest+destCapacity)) ||
(dest>=src && dest<(src+srcLength)))
) {
@@ -1349,12 +1354,12 @@ ustrcase_map(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITERATOR_PARAM
U_CFUNC int32_t
ustrcase_mapWithOverlap(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITERATOR_PARAM
- UChar *dest, int32_t destCapacity,
- const UChar *src, int32_t srcLength,
+ char16_t *dest, int32_t destCapacity,
+ const char16_t *src, int32_t srcLength,
UStringCaseMapper *stringCaseMapper,
UErrorCode &errorCode) {
- UChar buffer[300];
- UChar *temp;
+ char16_t buffer[300];
+ char16_t *temp;
int32_t destLength;
@@ -1363,8 +1368,8 @@ ustrcase_mapWithOverlap(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITE
return 0;
}
if( destCapacity<0 ||
- (dest==NULL && destCapacity>0) ||
- src==NULL ||
+ (dest==nullptr && destCapacity>0) ||
+ src==nullptr ||
srcLength<-1
) {
errorCode=U_ILLEGAL_ARGUMENT_ERROR;
@@ -1377,7 +1382,7 @@ ustrcase_mapWithOverlap(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITE
}
/* check for overlapping source and destination */
- if( dest!=NULL &&
+ if( dest!=nullptr &&
((src>=dest && src<(dest+destCapacity)) ||
(dest>=src && dest<(src+srcLength)))
) {
@@ -1387,8 +1392,8 @@ ustrcase_mapWithOverlap(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITE
temp=buffer;
} else {
/* allocate a buffer */
- temp=(UChar *)uprv_malloc(destCapacity*U_SIZEOF_UCHAR);
- if(temp==NULL) {
+ temp=(char16_t *)uprv_malloc(destCapacity*U_SIZEOF_UCHAR);
+ if(temp==nullptr) {
errorCode=U_MEMORY_ALLOCATION_ERROR;
return 0;
}
@@ -1398,7 +1403,7 @@ ustrcase_mapWithOverlap(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITE
}
destLength=stringCaseMapper(caseLocale, options, UCASEMAP_BREAK_ITERATOR
- temp, destCapacity, src, srcLength, NULL, errorCode);
+ temp, destCapacity, src, srcLength, nullptr, errorCode);
if(temp!=dest) {
/* copy the result string to the destination buffer */
if (U_SUCCESS(errorCode) && 0 < destLength && destLength <= destCapacity) {
@@ -1415,8 +1420,8 @@ ustrcase_mapWithOverlap(int32_t caseLocale, uint32_t options, UCASEMAP_BREAK_ITE
/* public API functions */
U_CAPI int32_t U_EXPORT2
-u_strFoldCase(UChar *dest, int32_t destCapacity,
- const UChar *src, int32_t srcLength,
+u_strFoldCase(char16_t *dest, int32_t destCapacity,
+ const char16_t *src, int32_t srcLength,
uint32_t options,
UErrorCode *pErrorCode) {
return ustrcase_mapWithOverlap(
@@ -1430,8 +1435,8 @@ U_NAMESPACE_BEGIN
int32_t CaseMap::fold(
uint32_t options,
- const UChar *src, int32_t srcLength,
- UChar *dest, int32_t destCapacity, Edits *edits,
+ const char16_t *src, int32_t srcLength,
+ char16_t *dest, int32_t destCapacity, Edits *edits,
UErrorCode &errorCode) {
return ustrcase_map(
UCASE_LOC_ROOT, options, UCASEMAP_BREAK_ITERATOR_NULL
@@ -1455,7 +1460,7 @@ U_NAMESPACE_END
/* stack element for previous-level source/decomposition pointers */
struct CmpEquivLevel {
- const UChar *start, *s, *limit;
+ const char16_t *start, *s, *limit;
};
typedef struct CmpEquivLevel CmpEquivLevel;
@@ -1464,9 +1469,9 @@ typedef struct CmpEquivLevel CmpEquivLevel;
* This function is called from u_strcmpFold() and u_caseInsensitivePrefixMatch().
*
* @param s1 input string 1
- * @param length1 length of string 1, or -1 (NULL terminated)
+ * @param length1 length of string 1, or -1 (NUL terminated)
* @param s2 input string 2
- * @param length2 length of string 2, or -1 (NULL terminated)
+ * @param length2 length of string 2, or -1 (NUL terminated)
* @param options compare options
* @param matchLen1 (output) length of partial prefix match in s1
* @param matchLen2 (output) length of partial prefix match in s2
@@ -1474,31 +1479,31 @@ typedef struct CmpEquivLevel CmpEquivLevel;
* @return The result of comparison
*/
static int32_t _cmpFold(
- const UChar *s1, int32_t length1,
- const UChar *s2, int32_t length2,
+ const char16_t *s1, int32_t length1,
+ const char16_t *s2, int32_t length2,
uint32_t options,
int32_t *matchLen1, int32_t *matchLen2,
UErrorCode *pErrorCode) {
int32_t cmpRes = 0;
/* current-level start/limit - s1/s2 as current */
- const UChar *start1, *start2, *limit1, *limit2;
+ const char16_t *start1, *start2, *limit1, *limit2;
/* points to the original start address */
- const UChar *org1, *org2;
+ const char16_t *org1, *org2;
/* points to the end of match + 1 */
- const UChar *m1, *m2;
+ const char16_t *m1, *m2;
/* case folding variables */
- const UChar *p;
+ const char16_t *p;
int32_t length;
/* stacks of previous-level start/current/limit */
CmpEquivLevel stack1[2], stack2[2];
/* case folding buffers, only use current-level start/limit */
- UChar fold1[UCASE_MAX_STRING_LENGTH+1], fold2[UCASE_MAX_STRING_LENGTH+1];
+ char16_t fold1[UCASE_MAX_STRING_LENGTH+1], fold2[UCASE_MAX_STRING_LENGTH+1];
/* track which is the current level per string */
int32_t level1, level2;
@@ -1518,21 +1523,21 @@ static int32_t _cmpFold(
/* initialize */
if(matchLen1) {
- U_ASSERT(matchLen2 !=NULL);
+ U_ASSERT(matchLen2 !=nullptr);
*matchLen1=0;
*matchLen2=0;
}
start1=m1=org1=s1;
if(length1==-1) {
- limit1=NULL;
+ limit1=nullptr;
} else {
limit1=s1+length1;
}
start2=m2=org2=s2;
if(length2==-1) {
- limit2=NULL;
+ limit2=nullptr;
} else {
limit2=s2+length2;
}
@@ -1550,7 +1555,7 @@ static int32_t _cmpFold(
if(c1<0) {
/* get next code unit from string 1, post-increment */
for(;;) {
- if(s1==limit1 || ((c1=*s1)==0 && (limit1==NULL || (options&_STRNCMP_STYLE)))) {
+ if(s1==limit1 || ((c1=*s1)==0 && (limit1==nullptr || (options&_STRNCMP_STYLE)))) {
if(level1==0) {
c1=-1;
break;
@@ -1564,7 +1569,7 @@ static int32_t _cmpFold(
do {
--level1;
start1=stack1[level1].start; /*Not uninitialized*/
- } while(start1==NULL);
+ } while(start1==nullptr);
s1=stack1[level1].s; /*Not uninitialized*/
limit1=stack1[level1].limit; /*Not uninitialized*/
}
@@ -1573,7 +1578,7 @@ static int32_t _cmpFold(
if(c2<0) {
/* get next code unit from string 2, post-increment */
for(;;) {
- if(s2==limit2 || ((c2=*s2)==0 && (limit2==NULL || (options&_STRNCMP_STYLE)))) {
+ if(s2==limit2 || ((c2=*s2)==0 && (limit2==nullptr || (options&_STRNCMP_STYLE)))) {
if(level2==0) {
c2=-1;
break;
@@ -1587,7 +1592,7 @@ static int32_t _cmpFold(
do {
--level2;
start2=stack2[level2].start; /*Not uninitialized*/
- } while(start2==NULL);
+ } while(start2==nullptr);
s2=stack2[level2].s; /*Not uninitialized*/
limit2=stack2[level2].limit; /*Not uninitialized*/
}
@@ -1598,7 +1603,7 @@ static int32_t _cmpFold(
* either variable c1, c2 is -1 only if the corresponding string is finished
*/
if(c1==c2) {
- const UChar *next1, *next2;
+ const char16_t *next1, *next2;
if(c1<0) {
cmpRes=0; /* c1==c2==-1 indicating end of strings */
@@ -1614,7 +1619,7 @@ static int32_t _cmpFold(
* has no matching code point in s1, so this implementation returns
* 2 as the prefix match length ("Fu").
*/
- next1=next2=NULL;
+ next1=next2=nullptr;
if(level1==0) {
next1=s1;
} else if(s1==limit1) {
@@ -1629,7 +1634,7 @@ static int32_t _cmpFold(
next1=stack1[0].s;
}
- if (next1!=NULL) {
+ if (next1!=nullptr) {
if(level2==0) {
next2=s2;
} else if(s2==limit2) {
@@ -1638,7 +1643,7 @@ static int32_t _cmpFold(
/* is s2 at the end of the current stack? */
next2=stack2[0].s;
}
- if(next2!=NULL) {
+ if(next2!=nullptr) {
m1=next1;
m2=next2;
}
@@ -1657,7 +1662,7 @@ static int32_t _cmpFold(
/* get complete code points for c1, c2 for lookups if either is a surrogate */
cp1=c1;
if(U_IS_SURROGATE(c1)) {
- UChar c;
+ char16_t c;
if(U_IS_SURROGATE_LEAD(c1)) {
if(s1!=limit1 && U16_IS_TRAIL(c=*s1)) {
@@ -1673,7 +1678,7 @@ static int32_t _cmpFold(
cp2=c2;
if(U_IS_SURROGATE(c2)) {
- UChar c;
+ char16_t c;
if(U_IS_SURROGATE_LEAD(c2)) {
if(s2!=limit2 && U16_IS_TRAIL(c=*s2)) {
@@ -1837,25 +1842,25 @@ static int32_t _cmpFold(
/* internal function */
U_CFUNC int32_t
-u_strcmpFold(const UChar *s1, int32_t length1,
- const UChar *s2, int32_t length2,
+u_strcmpFold(const char16_t *s1, int32_t length1,
+ const char16_t *s2, int32_t length2,
uint32_t options,
UErrorCode *pErrorCode) {
- return _cmpFold(s1, length1, s2, length2, options, NULL, NULL, pErrorCode);
+ return _cmpFold(s1, length1, s2, length2, options, nullptr, nullptr, pErrorCode);
}
/* public API functions */
U_CAPI int32_t U_EXPORT2
-u_strCaseCompare(const UChar *s1, int32_t length1,
- const UChar *s2, int32_t length2,
+u_strCaseCompare(const char16_t *s1, int32_t length1,
+ const char16_t *s2, int32_t length2,
uint32_t options,
UErrorCode *pErrorCode) {
/* argument checking */
if(pErrorCode==0 || U_FAILURE(*pErrorCode)) {
return 0;
}
- if(s1==NULL || length1<-1 || s2==NULL || length2<-1) {
+ if(s1==nullptr || length1<-1 || s2==nullptr || length2<-1) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -1865,7 +1870,7 @@ u_strCaseCompare(const UChar *s1, int32_t length1,
}
U_CAPI int32_t U_EXPORT2
-u_strcasecmp(const UChar *s1, const UChar *s2, uint32_t options) {
+u_strcasecmp(const char16_t *s1, const char16_t *s2, uint32_t options) {
UErrorCode errorCode=U_ZERO_ERROR;
return u_strcmpFold(s1, -1, s2, -1,
options|U_COMPARE_IGNORE_CASE,
@@ -1873,7 +1878,7 @@ u_strcasecmp(const UChar *s1, const UChar *s2, uint32_t options) {
}
U_CAPI int32_t U_EXPORT2
-u_memcasecmp(const UChar *s1, const UChar *s2, int32_t length, uint32_t options) {
+u_memcasecmp(const char16_t *s1, const char16_t *s2, int32_t length, uint32_t options) {
UErrorCode errorCode=U_ZERO_ERROR;
return u_strcmpFold(s1, length, s2, length,
options|U_COMPARE_IGNORE_CASE,
@@ -1881,7 +1886,7 @@ u_memcasecmp(const UChar *s1, const UChar *s2, int32_t length, uint32_t options)
}
U_CAPI int32_t U_EXPORT2
-u_strncasecmp(const UChar *s1, const UChar *s2, int32_t n, uint32_t options) {
+u_strncasecmp(const char16_t *s1, const char16_t *s2, int32_t n, uint32_t options) {
UErrorCode errorCode=U_ZERO_ERROR;
return u_strcmpFold(s1, n, s2, n,
options|(U_COMPARE_IGNORE_CASE|_STRNCMP_STYLE),
@@ -1890,8 +1895,8 @@ u_strncasecmp(const UChar *s1, const UChar *s2, int32_t n, uint32_t options) {
/* internal API - detect length of shared prefix */
U_CAPI void
-u_caseInsensitivePrefixMatch(const UChar *s1, int32_t length1,
- const UChar *s2, int32_t length2,
+u_caseInsensitivePrefixMatch(const char16_t *s1, int32_t length1,
+ const char16_t *s2, int32_t length2,
uint32_t options,
int32_t *matchLen1, int32_t *matchLen2,
UErrorCode *pErrorCode) {
diff --git a/Build/source/libs/icu/icu-src/source/common/ustrcase_locale.cpp b/Build/source/libs/icu/icu-src/source/common/ustrcase_locale.cpp
index 2ecd24f03ec..176add9c510 100644
--- a/Build/source/libs/icu/icu-src/source/common/ustrcase_locale.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ustrcase_locale.cpp
@@ -29,7 +29,7 @@
U_CFUNC int32_t
ustrcase_getCaseLocale(const char *locale) {
- if (locale == NULL) {
+ if (locale == nullptr) {
locale = uloc_getDefault();
}
if (*locale == 0) {
@@ -42,8 +42,8 @@ ustrcase_getCaseLocale(const char *locale) {
/* public API functions */
U_CAPI int32_t U_EXPORT2
-u_strToLower(UChar *dest, int32_t destCapacity,
- const UChar *src, int32_t srcLength,
+u_strToLower(char16_t *dest, int32_t destCapacity,
+ const char16_t *src, int32_t srcLength,
const char *locale,
UErrorCode *pErrorCode) {
return ustrcase_mapWithOverlap(
@@ -54,8 +54,8 @@ u_strToLower(UChar *dest, int32_t destCapacity,
}
U_CAPI int32_t U_EXPORT2
-u_strToUpper(UChar *dest, int32_t destCapacity,
- const UChar *src, int32_t srcLength,
+u_strToUpper(char16_t *dest, int32_t destCapacity,
+ const char16_t *src, int32_t srcLength,
const char *locale,
UErrorCode *pErrorCode) {
return ustrcase_mapWithOverlap(
@@ -69,8 +69,8 @@ U_NAMESPACE_BEGIN
int32_t CaseMap::toLower(
const char *locale, uint32_t options,
- const UChar *src, int32_t srcLength,
- UChar *dest, int32_t destCapacity, Edits *edits,
+ const char16_t *src, int32_t srcLength,
+ char16_t *dest, int32_t destCapacity, Edits *edits,
UErrorCode &errorCode) {
return ustrcase_map(
ustrcase_getCaseLocale(locale), options, UCASEMAP_BREAK_ITERATOR_NULL
@@ -81,8 +81,8 @@ int32_t CaseMap::toLower(
int32_t CaseMap::toUpper(
const char *locale, uint32_t options,
- const UChar *src, int32_t srcLength,
- UChar *dest, int32_t destCapacity, Edits *edits,
+ const char16_t *src, int32_t srcLength,
+ char16_t *dest, int32_t destCapacity, Edits *edits,
UErrorCode &errorCode) {
return ustrcase_map(
ustrcase_getCaseLocale(locale), options, UCASEMAP_BREAK_ITERATOR_NULL
diff --git a/Build/source/libs/icu/icu-src/source/common/ustrenum.cpp b/Build/source/libs/icu/icu-src/source/common/ustrenum.cpp
index 08a1bf29c3a..a60b2208f68 100644
--- a/Build/source/libs/icu/icu-src/source/common/ustrenum.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ustrenum.cpp
@@ -29,7 +29,7 @@ StringEnumeration::StringEnumeration()
}
StringEnumeration::~StringEnumeration() {
- if (chars != NULL && chars != charsBuffer) {
+ if (chars != nullptr && chars != charsBuffer) {
uprv_free(chars);
}
}
@@ -37,17 +37,17 @@ StringEnumeration::~StringEnumeration() {
// StringEnumeration base class clone() default implementation, does not clone
StringEnumeration *
StringEnumeration::clone() const {
- return NULL;
+ return nullptr;
}
const char *
StringEnumeration::next(int32_t *resultLength, UErrorCode &status) {
const UnicodeString *s=snext(status);
- if(U_SUCCESS(status) && s!=NULL) {
+ if(U_SUCCESS(status) && s!=nullptr) {
unistr=*s;
ensureCharsCapacity(unistr.length()+1, status);
if(U_SUCCESS(status)) {
- if(resultLength!=NULL) {
+ if(resultLength!=nullptr) {
*resultLength=unistr.length();
}
unistr.extract(0, INT32_MAX, chars, charsCapacity, US_INV);
@@ -55,21 +55,21 @@ StringEnumeration::next(int32_t *resultLength, UErrorCode &status) {
}
}
- return NULL;
+ return nullptr;
}
-const UChar *
+const char16_t *
StringEnumeration::unext(int32_t *resultLength, UErrorCode &status) {
const UnicodeString *s=snext(status);
- if(U_SUCCESS(status) && s!=NULL) {
+ if(U_SUCCESS(status) && s!=nullptr) {
unistr=*s;
- if(resultLength!=NULL) {
+ if(resultLength!=nullptr) {
*resultLength=unistr.length();
}
return unistr.getTerminatedBuffer();
}
- return NULL;
+ return nullptr;
}
const UnicodeString *
@@ -90,7 +90,7 @@ StringEnumeration::ensureCharsCapacity(int32_t capacity, UErrorCode &status) {
uprv_free(chars);
}
chars=(char *)uprv_malloc(capacity);
- if(chars==NULL) {
+ if(chars==nullptr) {
chars=charsBuffer;
charsCapacity=sizeof(charsBuffer);
status=U_MEMORY_ALLOCATION_ERROR;
@@ -102,13 +102,13 @@ StringEnumeration::ensureCharsCapacity(int32_t capacity, UErrorCode &status) {
UnicodeString *
StringEnumeration::setChars(const char *s, int32_t length, UErrorCode &status) {
- if(U_SUCCESS(status) && s!=NULL) {
+ if(U_SUCCESS(status) && s!=nullptr) {
if(length<0) {
length=(int32_t)uprv_strlen(s);
}
- UChar *buffer=unistr.getBuffer(length+1);
- if(buffer!=NULL) {
+ char16_t *buffer=unistr.getBuffer(length+1);
+ if(buffer!=nullptr) {
u_charsToUChars(s, buffer, length);
buffer[length]=0;
unistr.releaseBuffer(length);
@@ -118,7 +118,7 @@ StringEnumeration::setChars(const char *s, int32_t length, UErrorCode &status) {
}
}
- return NULL;
+ return nullptr;
}
bool
StringEnumeration::operator==(const StringEnumeration& that)const {
@@ -137,13 +137,13 @@ UStringEnumeration::fromUEnumeration(
UEnumeration *uenumToAdopt, UErrorCode &status) {
if (U_FAILURE(status)) {
uenum_close(uenumToAdopt);
- return NULL;
+ return nullptr;
}
UStringEnumeration *result = new UStringEnumeration(uenumToAdopt);
- if (result == NULL) {
+ if (result == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
uenum_close(uenumToAdopt);
- return NULL;
+ return nullptr;
}
return result;
}
@@ -167,7 +167,7 @@ const char *UStringEnumeration::next(int32_t *resultLength, UErrorCode &status)
const UnicodeString* UStringEnumeration::snext(UErrorCode& status) {
int32_t length;
- const UChar* str = uenum_unext(uenum, &length, &status);
+ const char16_t* str = uenum_unext(uenum, &length, &status);
if (str == 0 || U_FAILURE(status)) {
return 0;
}
@@ -209,7 +209,7 @@ ustrenum_count(UEnumeration* en,
/**
* Wrapper API to make StringEnumeration look like UEnumeration.
*/
-static const UChar* U_CALLCONV
+static const char16_t* U_CALLCONV
ustrenum_unext(UEnumeration* en,
int32_t* resultLength,
UErrorCode* ec)
@@ -243,8 +243,8 @@ ustrenum_reset(UEnumeration* en,
* The StringEnumeration pointer will be stored in 'context'.
*/
static const UEnumeration USTRENUM_VT = {
- NULL,
- NULL, // store StringEnumeration pointer here
+ nullptr,
+ nullptr, // store StringEnumeration pointer here
ustrenum_close,
ustrenum_count,
ustrenum_unext,
@@ -261,17 +261,17 @@ U_CDECL_END
*/
U_CAPI UEnumeration* U_EXPORT2
uenum_openFromStringEnumeration(icu::StringEnumeration* adopted, UErrorCode* ec) {
- UEnumeration* result = NULL;
- if (U_SUCCESS(*ec) && adopted != NULL) {
+ UEnumeration* result = nullptr;
+ if (U_SUCCESS(*ec) && adopted != nullptr) {
result = (UEnumeration*) uprv_malloc(sizeof(UEnumeration));
- if (result == NULL) {
+ if (result == nullptr) {
*ec = U_MEMORY_ALLOCATION_ERROR;
} else {
uprv_memcpy(result, &USTRENUM_VT, sizeof(USTRENUM_VT));
result->context = adopted;
}
}
- if (result == NULL) {
+ if (result == nullptr) {
delete adopted;
}
return result;
@@ -297,15 +297,15 @@ ucharstrenum_count(UEnumeration* en,
return ((UCharStringEnumeration*)en)->count;
}
-static const UChar* U_CALLCONV
+static const char16_t* U_CALLCONV
ucharstrenum_unext(UEnumeration* en,
int32_t* resultLength,
UErrorCode* /*ec*/) {
UCharStringEnumeration *e = (UCharStringEnumeration*) en;
if (e->index >= e->count) {
- return NULL;
+ return nullptr;
}
- const UChar* result = ((const UChar**)e->uenum.context)[e->index++];
+ const char16_t* result = ((const char16_t**)e->uenum.context)[e->index++];
if (resultLength) {
*resultLength = (int32_t)u_strlen(result);
}
@@ -319,7 +319,7 @@ ucharstrenum_next(UEnumeration* en,
UErrorCode* /*ec*/) {
UCharStringEnumeration *e = (UCharStringEnumeration*) en;
if (e->index >= e->count) {
- return NULL;
+ return nullptr;
}
const char* result = ((const char**)e->uenum.context)[e->index++];
if (resultLength) {
@@ -335,8 +335,8 @@ ucharstrenum_reset(UEnumeration* en,
}
static const UEnumeration UCHARSTRENUM_VT = {
- NULL,
- NULL, // store StringEnumeration pointer here
+ nullptr,
+ nullptr, // store StringEnumeration pointer here
ucharstrenum_close,
ucharstrenum_count,
uenum_unextDefault,
@@ -345,8 +345,8 @@ static const UEnumeration UCHARSTRENUM_VT = {
};
static const UEnumeration UCHARSTRENUM_U_VT = {
- NULL,
- NULL, // store StringEnumeration pointer here
+ nullptr,
+ nullptr, // store StringEnumeration pointer here
ucharstrenum_close,
ucharstrenum_count,
ucharstrenum_unext,
@@ -359,10 +359,10 @@ U_CDECL_END
U_CAPI UEnumeration* U_EXPORT2
uenum_openCharStringsEnumeration(const char* const strings[], int32_t count,
UErrorCode* ec) {
- UCharStringEnumeration* result = NULL;
+ UCharStringEnumeration* result = nullptr;
if (U_SUCCESS(*ec) && count >= 0 && (count == 0 || strings != 0)) {
result = (UCharStringEnumeration*) uprv_malloc(sizeof(UCharStringEnumeration));
- if (result == NULL) {
+ if (result == nullptr) {
*ec = U_MEMORY_ALLOCATION_ERROR;
} else {
U_ASSERT((char*)result==(char*)(&result->uenum));
@@ -376,12 +376,12 @@ uenum_openCharStringsEnumeration(const char* const strings[], int32_t count,
}
U_CAPI UEnumeration* U_EXPORT2
-uenum_openUCharStringsEnumeration(const UChar* const strings[], int32_t count,
+uenum_openUCharStringsEnumeration(const char16_t* const strings[], int32_t count,
UErrorCode* ec) {
- UCharStringEnumeration* result = NULL;
+ UCharStringEnumeration* result = nullptr;
if (U_SUCCESS(*ec) && count >= 0 && (count == 0 || strings != 0)) {
result = (UCharStringEnumeration*) uprv_malloc(sizeof(UCharStringEnumeration));
- if (result == NULL) {
+ if (result == nullptr) {
*ec = U_MEMORY_ALLOCATION_ERROR;
} else {
U_ASSERT((char*)result==(char*)(&result->uenum));
diff --git a/Build/source/libs/icu/icu-src/source/common/ustrenum.h b/Build/source/libs/icu/icu-src/source/common/ustrenum.h
index 3703dedb97d..ff546ca0a1b 100644
--- a/Build/source/libs/icu/icu-src/source/common/ustrenum.h
+++ b/Build/source/libs/icu/icu-src/source/common/ustrenum.h
@@ -53,9 +53,9 @@ public:
/**
* Returns the next element a UnicodeString*. If there are no
- * more elements, returns NULL.
+ * more elements, returns nullptr.
* @param status the error code.
- * @return a pointer to the string, or NULL.
+ * @return a pointer to the string, or nullptr.
*/
virtual const UnicodeString* snext(UErrorCode& status) override;
diff --git a/Build/source/libs/icu/icu-src/source/common/ustrfmt.cpp b/Build/source/libs/icu/icu-src/source/common/ustrfmt.cpp
index 1a9b15a59fe..3db9f35821d 100644
--- a/Build/source/libs/icu/icu-src/source/common/ustrfmt.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ustrfmt.cpp
@@ -12,11 +12,11 @@
/***
- * Fills in a UChar* string with the radix-based representation of a
+ * Fills in a char16_t* string with the radix-based representation of a
* uint32_t number padded with zeroes to minwidth. The result
* will be null terminated if there is room.
*
- * @param buffer UChar buffer to receive result
+ * @param buffer char16_t buffer to receive result
* @param capacity capacity of buffer
* @param i the unsigned number to be formatted
* @param radix the radix from 2..36
@@ -27,26 +27,26 @@
* null
*/
U_CAPI int32_t U_EXPORT2
-uprv_itou (UChar * buffer, int32_t capacity,
+uprv_itou (char16_t * buffer, int32_t capacity,
uint32_t i, uint32_t radix, int32_t minwidth)
{
int32_t length = 0;
int digit;
int32_t j;
- UChar temp;
+ char16_t temp;
do{
digit = (int)(i % radix);
- buffer[length++]=(UChar)(digit<=9?(0x0030+digit):(0x0030+digit+7));
+ buffer[length++]=(char16_t)(digit<=9?(0x0030+digit):(0x0030+digit+7));
i=i/radix;
} while(i && length<capacity);
while (length < minwidth){
- buffer[length++] = (UChar) 0x0030;/*zero padding */
+ buffer[length++] = (char16_t) 0x0030;/*zero padding */
}
/* null terminate the buffer */
if(length<capacity){
- buffer[length] = (UChar) 0x0000;
+ buffer[length] = (char16_t) 0x0000;
}
/* Reverses the string */
diff --git a/Build/source/libs/icu/icu-src/source/common/ustring.cpp b/Build/source/libs/icu/icu-src/source/common/ustring.cpp
index 5804976ef97..4f7443cc886 100644
--- a/Build/source/libs/icu/icu-src/source/common/ustring.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ustring.cpp
@@ -29,7 +29,7 @@
/* ANSI string.h - style functions ------------------------------------------ */
-/* U+ffff is the highest BMP code point, the highest one that fits into a 16-bit UChar */
+/* U+ffff is the highest BMP code point, the highest one that fits into a 16-bit char16_t */
#define U_BMP_MAX 0xffff
/* Forward binary string search functions ----------------------------------- */
@@ -37,10 +37,10 @@
/*
* Test if a substring match inside a string is at code point boundaries.
* All pointers refer to the same buffer.
- * The limit pointer may be NULL, all others must be real pointers.
+ * The limit pointer may be nullptr, all others must be real pointers.
*/
static inline UBool
-isMatchAtCPBoundary(const UChar *start, const UChar *match, const UChar *matchLimit, const UChar *limit) {
+isMatchAtCPBoundary(const char16_t *start, const char16_t *match, const char16_t *matchLimit, const char16_t *limit) {
if(U16_IS_TRAIL(*match) && start!=match && U16_IS_LEAD(*(match-1))) {
/* the leading edge of the match is in the middle of a surrogate pair */
return false;
@@ -52,17 +52,17 @@ isMatchAtCPBoundary(const UChar *start, const UChar *match, const UChar *matchLi
return true;
}
-U_CAPI UChar * U_EXPORT2
-u_strFindFirst(const UChar *s, int32_t length,
- const UChar *sub, int32_t subLength) {
- const UChar *start, *p, *q, *subLimit;
- UChar c, cs, cq;
+U_CAPI char16_t * U_EXPORT2
+u_strFindFirst(const char16_t *s, int32_t length,
+ const char16_t *sub, int32_t subLength) {
+ const char16_t *start, *p, *q, *subLimit;
+ char16_t c, cs, cq;
- if(sub==NULL || subLength<-1) {
- return (UChar *)s;
+ if(sub==nullptr || subLength<-1) {
+ return (char16_t *)s;
}
- if(s==NULL || length<-1) {
- return NULL;
+ if(s==nullptr || length<-1) {
+ return nullptr;
}
start=s;
@@ -70,7 +70,7 @@ u_strFindFirst(const UChar *s, int32_t length,
if(length<0 && subLength<0) {
/* both strings are NUL-terminated */
if((cs=*sub++)==0) {
- return (UChar *)s;
+ return (char16_t *)s;
}
if(*sub==0 && !U16_IS_SURROGATE(cs)) {
/* the substring consists of a single, non-surrogate BMP code point */
@@ -79,19 +79,19 @@ u_strFindFirst(const UChar *s, int32_t length,
while((c=*s++)!=0) {
if(c==cs) {
- /* found first substring UChar, compare rest */
+ /* found first substring char16_t, compare rest */
p=s;
q=sub;
for(;;) {
if((cq=*q)==0) {
- if(isMatchAtCPBoundary(start, s-1, p, NULL)) {
- return (UChar *)(s-1); /* well-formed match */
+ if(isMatchAtCPBoundary(start, s-1, p, nullptr)) {
+ return (char16_t *)(s-1); /* well-formed match */
} else {
break; /* no match because surrogate pair is split */
}
}
if((c=*p)==0) {
- return NULL; /* no match, and none possible after s */
+ return nullptr; /* no match, and none possible after s */
}
if(c!=cq) {
break; /* no match */
@@ -103,14 +103,14 @@ u_strFindFirst(const UChar *s, int32_t length,
}
/* not found */
- return NULL;
+ return nullptr;
}
if(subLength<0) {
subLength=u_strlen(sub);
}
if(subLength==0) {
- return (UChar *)s;
+ return (char16_t *)s;
}
/* get sub[0] to search for it fast */
@@ -127,19 +127,19 @@ u_strFindFirst(const UChar *s, int32_t length,
/* s is NUL-terminated */
while((c=*s++)!=0) {
if(c==cs) {
- /* found first substring UChar, compare rest */
+ /* found first substring char16_t, compare rest */
p=s;
q=sub;
for(;;) {
if(q==subLimit) {
- if(isMatchAtCPBoundary(start, s-1, p, NULL)) {
- return (UChar *)(s-1); /* well-formed match */
+ if(isMatchAtCPBoundary(start, s-1, p, nullptr)) {
+ return (char16_t *)(s-1); /* well-formed match */
} else {
break; /* no match because surrogate pair is split */
}
}
if((c=*p)==0) {
- return NULL; /* no match, and none possible after s */
+ return nullptr; /* no match, and none possible after s */
}
if(c!=*q) {
break; /* no match */
@@ -150,11 +150,11 @@ u_strFindFirst(const UChar *s, int32_t length,
}
}
} else {
- const UChar *limit, *preLimit;
+ const char16_t *limit, *preLimit;
/* subLength was decremented above */
if(length<=subLength) {
- return NULL; /* s is shorter than sub */
+ return nullptr; /* s is shorter than sub */
}
limit=s+length;
@@ -165,13 +165,13 @@ u_strFindFirst(const UChar *s, int32_t length,
while(s!=preLimit) {
c=*s++;
if(c==cs) {
- /* found first substring UChar, compare rest */
+ /* found first substring char16_t, compare rest */
p=s;
q=sub;
for(;;) {
if(q==subLimit) {
if(isMatchAtCPBoundary(start, s-1, p, limit)) {
- return (UChar *)(s-1); /* well-formed match */
+ return (char16_t *)(s-1); /* well-formed match */
} else {
break; /* no match because surrogate pair is split */
}
@@ -187,113 +187,113 @@ u_strFindFirst(const UChar *s, int32_t length,
}
/* not found */
- return NULL;
+ return nullptr;
}
-U_CAPI UChar * U_EXPORT2
-u_strstr(const UChar *s, const UChar *substring) {
+U_CAPI char16_t * U_EXPORT2
+u_strstr(const char16_t *s, const char16_t *substring) {
return u_strFindFirst(s, -1, substring, -1);
}
-U_CAPI UChar * U_EXPORT2
-u_strchr(const UChar *s, UChar c) {
+U_CAPI char16_t * U_EXPORT2
+u_strchr(const char16_t *s, char16_t c) {
if(U16_IS_SURROGATE(c)) {
/* make sure to not find half of a surrogate pair */
return u_strFindFirst(s, -1, &c, 1);
} else {
- UChar cs;
+ char16_t cs;
/* trivial search for a BMP code point */
for(;;) {
if((cs=*s)==c) {
- return (UChar *)s;
+ return (char16_t *)s;
}
if(cs==0) {
- return NULL;
+ return nullptr;
}
++s;
}
}
}
-U_CAPI UChar * U_EXPORT2
-u_strchr32(const UChar *s, UChar32 c) {
+U_CAPI char16_t * U_EXPORT2
+u_strchr32(const char16_t *s, UChar32 c) {
if((uint32_t)c<=U_BMP_MAX) {
/* find BMP code point */
- return u_strchr(s, (UChar)c);
+ return u_strchr(s, (char16_t)c);
} else if((uint32_t)c<=UCHAR_MAX_VALUE) {
/* find supplementary code point as surrogate pair */
- UChar cs, lead=U16_LEAD(c), trail=U16_TRAIL(c);
+ char16_t cs, lead=U16_LEAD(c), trail=U16_TRAIL(c);
while((cs=*s++)!=0) {
if(cs==lead && *s==trail) {
- return (UChar *)(s-1);
+ return (char16_t *)(s-1);
}
}
- return NULL;
+ return nullptr;
} else {
/* not a Unicode code point, not findable */
- return NULL;
+ return nullptr;
}
}
-U_CAPI UChar * U_EXPORT2
-u_memchr(const UChar *s, UChar c, int32_t count) {
+U_CAPI char16_t * U_EXPORT2
+u_memchr(const char16_t *s, char16_t c, int32_t count) {
if(count<=0) {
- return NULL; /* no string */
+ return nullptr; /* no string */
} else if(U16_IS_SURROGATE(c)) {
/* make sure to not find half of a surrogate pair */
return u_strFindFirst(s, count, &c, 1);
} else {
/* trivial search for a BMP code point */
- const UChar *limit=s+count;
+ const char16_t *limit=s+count;
do {
if(*s==c) {
- return (UChar *)s;
+ return (char16_t *)s;
}
} while(++s!=limit);
- return NULL;
+ return nullptr;
}
}
-U_CAPI UChar * U_EXPORT2
-u_memchr32(const UChar *s, UChar32 c, int32_t count) {
+U_CAPI char16_t * U_EXPORT2
+u_memchr32(const char16_t *s, UChar32 c, int32_t count) {
if((uint32_t)c<=U_BMP_MAX) {
/* find BMP code point */
- return u_memchr(s, (UChar)c, count);
+ return u_memchr(s, (char16_t)c, count);
} else if(count<2) {
/* too short for a surrogate pair */
- return NULL;
+ return nullptr;
} else if((uint32_t)c<=UCHAR_MAX_VALUE) {
/* find supplementary code point as surrogate pair */
- const UChar *limit=s+count-1; /* -1 so that we do not need a separate check for the trail unit */
- UChar lead=U16_LEAD(c), trail=U16_TRAIL(c);
+ const char16_t *limit=s+count-1; /* -1 so that we do not need a separate check for the trail unit */
+ char16_t lead=U16_LEAD(c), trail=U16_TRAIL(c);
do {
if(*s==lead && *(s+1)==trail) {
- return (UChar *)s;
+ return (char16_t *)s;
}
} while(++s!=limit);
- return NULL;
+ return nullptr;
} else {
/* not a Unicode code point, not findable */
- return NULL;
+ return nullptr;
}
}
/* Backward binary string search functions ---------------------------------- */
-U_CAPI UChar * U_EXPORT2
-u_strFindLast(const UChar *s, int32_t length,
- const UChar *sub, int32_t subLength) {
- const UChar *start, *limit, *p, *q, *subLimit;
- UChar c, cs;
+U_CAPI char16_t * U_EXPORT2
+u_strFindLast(const char16_t *s, int32_t length,
+ const char16_t *sub, int32_t subLength) {
+ const char16_t *start, *limit, *p, *q, *subLimit;
+ char16_t c, cs;
- if(sub==NULL || subLength<-1) {
- return (UChar *)s;
+ if(sub==nullptr || subLength<-1) {
+ return (char16_t *)s;
}
- if(s==NULL || length<-1) {
- return NULL;
+ if(s==nullptr || length<-1) {
+ return nullptr;
}
/*
@@ -310,7 +310,7 @@ u_strFindLast(const UChar *s, int32_t length,
subLength=u_strlen(sub);
}
if(subLength==0) {
- return (UChar *)s;
+ return (char16_t *)s;
}
/* get sub[subLength-1] to search for it fast */
@@ -329,7 +329,7 @@ u_strFindLast(const UChar *s, int32_t length,
/* subLength was decremented above */
if(length<=subLength) {
- return NULL; /* s is shorter than sub */
+ return nullptr; /* s is shorter than sub */
}
start=s;
@@ -341,13 +341,13 @@ u_strFindLast(const UChar *s, int32_t length,
while(s!=limit) {
c=*(--limit);
if(c==cs) {
- /* found last substring UChar, compare rest */
+ /* found last substring char16_t, compare rest */
p=limit;
q=subLimit;
for(;;) {
if(q==sub) {
if(isMatchAtCPBoundary(start, p, limit+1, start+length)) {
- return (UChar *)p; /* well-formed match */
+ return (char16_t *)p; /* well-formed match */
} else {
break; /* no match because surrogate pair is split */
}
@@ -360,22 +360,22 @@ u_strFindLast(const UChar *s, int32_t length,
}
/* not found */
- return NULL;
+ return nullptr;
}
-U_CAPI UChar * U_EXPORT2
-u_strrstr(const UChar *s, const UChar *substring) {
+U_CAPI char16_t * U_EXPORT2
+u_strrstr(const char16_t *s, const char16_t *substring) {
return u_strFindLast(s, -1, substring, -1);
}
-U_CAPI UChar * U_EXPORT2
-u_strrchr(const UChar *s, UChar c) {
+U_CAPI char16_t * U_EXPORT2
+u_strrchr(const char16_t *s, char16_t c) {
if(U16_IS_SURROGATE(c)) {
/* make sure to not find half of a surrogate pair */
return u_strFindLast(s, -1, &c, 1);
} else {
- const UChar *result=NULL;
- UChar cs;
+ const char16_t *result=nullptr;
+ char16_t cs;
/* trivial search for a BMP code point */
for(;;) {
@@ -383,76 +383,76 @@ u_strrchr(const UChar *s, UChar c) {
result=s;
}
if(cs==0) {
- return (UChar *)result;
+ return (char16_t *)result;
}
++s;
}
}
}
-U_CAPI UChar * U_EXPORT2
-u_strrchr32(const UChar *s, UChar32 c) {
+U_CAPI char16_t * U_EXPORT2
+u_strrchr32(const char16_t *s, UChar32 c) {
if((uint32_t)c<=U_BMP_MAX) {
/* find BMP code point */
- return u_strrchr(s, (UChar)c);
+ return u_strrchr(s, (char16_t)c);
} else if((uint32_t)c<=UCHAR_MAX_VALUE) {
/* find supplementary code point as surrogate pair */
- const UChar *result=NULL;
- UChar cs, lead=U16_LEAD(c), trail=U16_TRAIL(c);
+ const char16_t *result=nullptr;
+ char16_t cs, lead=U16_LEAD(c), trail=U16_TRAIL(c);
while((cs=*s++)!=0) {
if(cs==lead && *s==trail) {
result=s-1;
}
}
- return (UChar *)result;
+ return (char16_t *)result;
} else {
/* not a Unicode code point, not findable */
- return NULL;
+ return nullptr;
}
}
-U_CAPI UChar * U_EXPORT2
-u_memrchr(const UChar *s, UChar c, int32_t count) {
+U_CAPI char16_t * U_EXPORT2
+u_memrchr(const char16_t *s, char16_t c, int32_t count) {
if(count<=0) {
- return NULL; /* no string */
+ return nullptr; /* no string */
} else if(U16_IS_SURROGATE(c)) {
/* make sure to not find half of a surrogate pair */
return u_strFindLast(s, count, &c, 1);
} else {
/* trivial search for a BMP code point */
- const UChar *limit=s+count;
+ const char16_t *limit=s+count;
do {
if(*(--limit)==c) {
- return (UChar *)limit;
+ return (char16_t *)limit;
}
} while(s!=limit);
- return NULL;
+ return nullptr;
}
}
-U_CAPI UChar * U_EXPORT2
-u_memrchr32(const UChar *s, UChar32 c, int32_t count) {
+U_CAPI char16_t * U_EXPORT2
+u_memrchr32(const char16_t *s, UChar32 c, int32_t count) {
if((uint32_t)c<=U_BMP_MAX) {
/* find BMP code point */
- return u_memrchr(s, (UChar)c, count);
+ return u_memrchr(s, (char16_t)c, count);
} else if(count<2) {
/* too short for a surrogate pair */
- return NULL;
+ return nullptr;
} else if((uint32_t)c<=UCHAR_MAX_VALUE) {
/* find supplementary code point as surrogate pair */
- const UChar *limit=s+count-1;
- UChar lead=U16_LEAD(c), trail=U16_TRAIL(c);
+ const char16_t *limit=s+count-1;
+ char16_t lead=U16_LEAD(c), trail=U16_TRAIL(c);
do {
if(*limit==trail && *(limit-1)==lead) {
- return (UChar *)(limit-1);
+ return (char16_t *)(limit-1);
}
} while(s!=--limit);
- return NULL;
+ return nullptr;
} else {
/* not a Unicode code point, not findable */
- return NULL;
+ return nullptr;
}
}
@@ -465,10 +465,10 @@ u_memrchr32(const UChar *s, UChar32 c, int32_t count) {
* Return -(string length)-1 if there is no such code point.
*/
static int32_t
-_matchFromSet(const UChar *string, const UChar *matchSet, UBool polarity) {
+_matchFromSet(const char16_t *string, const char16_t *matchSet, UBool polarity) {
int32_t matchLen, matchBMPLen, strItr, matchItr;
UChar32 stringCh, matchCh;
- UChar c, c2;
+ char16_t c, c2;
/* first part of matchSet contains only BMP code points */
matchBMPLen = 0;
@@ -537,20 +537,20 @@ endloop:
}
/* Search for a codepoint in a string that matches one of the matchSet codepoints. */
-U_CAPI UChar * U_EXPORT2
-u_strpbrk(const UChar *string, const UChar *matchSet)
+U_CAPI char16_t * U_EXPORT2
+u_strpbrk(const char16_t *string, const char16_t *matchSet)
{
int32_t idx = _matchFromSet(string, matchSet, true);
if(idx >= 0) {
- return (UChar *)string + idx;
+ return (char16_t *)string + idx;
} else {
- return NULL;
+ return nullptr;
}
}
/* Search for a codepoint in a string that matches one of the matchSet codepoints. */
U_CAPI int32_t U_EXPORT2
-u_strcspn(const UChar *string, const UChar *matchSet)
+u_strcspn(const char16_t *string, const char16_t *matchSet)
{
int32_t idx = _matchFromSet(string, matchSet, true);
if(idx >= 0) {
@@ -562,7 +562,7 @@ u_strcspn(const UChar *string, const UChar *matchSet)
/* Search for a codepoint in a string that does not match one of the matchSet codepoints. */
U_CAPI int32_t U_EXPORT2
-u_strspn(const UChar *string, const UChar *matchSet)
+u_strspn(const char16_t *string, const char16_t *matchSet)
{
int32_t idx = _matchFromSet(string, matchSet, false);
if(idx >= 0) {
@@ -574,17 +574,17 @@ u_strspn(const UChar *string, const UChar *matchSet)
/* ----- Text manipulation functions --- */
-U_CAPI UChar* U_EXPORT2
-u_strtok_r(UChar *src,
- const UChar *delim,
- UChar **saveState)
+U_CAPI char16_t* U_EXPORT2
+u_strtok_r(char16_t *src,
+ const char16_t *delim,
+ char16_t **saveState)
{
- UChar *tokSource;
- UChar *nextToken;
+ char16_t *tokSource;
+ char16_t *nextToken;
uint32_t nonDelimIdx;
- /* If saveState is NULL, the user messed up. */
- if (src != NULL) {
+ /* If saveState is nullptr, the user messed up. */
+ if (src != nullptr) {
tokSource = src;
*saveState = src; /* Set to "src" in case there are no delimiters */
}
@@ -592,9 +592,9 @@ u_strtok_r(UChar *src,
tokSource = *saveState;
}
else {
- /* src == NULL && *saveState == NULL */
+ /* src == nullptr && *saveState == nullptr */
/* This shouldn't happen. We already finished tokenizing. */
- return NULL;
+ return nullptr;
}
/* Skip initial delimiters */
@@ -603,7 +603,7 @@ u_strtok_r(UChar *src,
if (*tokSource) {
nextToken = u_strpbrk(tokSource, delim);
- if (nextToken != NULL) {
+ if (nextToken != nullptr) {
/* Create a token */
*(nextToken++) = 0;
*saveState = nextToken;
@@ -611,24 +611,24 @@ u_strtok_r(UChar *src,
}
else if (*saveState) {
/* Return the last token */
- *saveState = NULL;
+ *saveState = nullptr;
return tokSource;
}
}
else {
/* No tokens were found. Only delimiters were left. */
- *saveState = NULL;
+ *saveState = nullptr;
}
- return NULL;
+ return nullptr;
}
/* Miscellaneous functions -------------------------------------------------- */
-U_CAPI UChar* U_EXPORT2
-u_strcat(UChar *dst,
- const UChar *src)
+U_CAPI char16_t* U_EXPORT2
+u_strcat(char16_t *dst,
+ const char16_t *src)
{
- UChar *anchor = dst; /* save a pointer to start of dst */
+ char16_t *anchor = dst; /* save a pointer to start of dst */
while(*dst != 0) { /* To end of first string */
++dst;
@@ -639,13 +639,13 @@ u_strcat(UChar *dst,
return anchor;
}
-U_CAPI UChar* U_EXPORT2
-u_strncat(UChar *dst,
- const UChar *src,
+U_CAPI char16_t* U_EXPORT2
+u_strncat(char16_t *dst,
+ const char16_t *src,
int32_t n )
{
if(n > 0) {
- UChar *anchor = dst; /* save a pointer to start of dst */
+ char16_t *anchor = dst; /* save a pointer to start of dst */
while(*dst != 0) { /* To end of first string */
++dst;
@@ -668,10 +668,10 @@ u_strncat(UChar *dst,
/* ----- Text property functions --- */
U_CAPI int32_t U_EXPORT2
-u_strcmp(const UChar *s1,
- const UChar *s2)
+u_strcmp(const char16_t *s1,
+ const char16_t *s2)
{
- UChar c1, c2;
+ char16_t c1, c2;
for(;;) {
c1=*s1++;
@@ -684,11 +684,11 @@ u_strcmp(const UChar *s1,
}
U_CFUNC int32_t U_EXPORT2
-uprv_strCompare(const UChar *s1, int32_t length1,
- const UChar *s2, int32_t length2,
+uprv_strCompare(const char16_t *s1, int32_t length1,
+ const char16_t *s2, int32_t length2,
UBool strncmpStyle, UBool codePointOrder) {
- const UChar *start1, *start2, *limit1, *limit2;
- UChar c1, c2;
+ const char16_t *start1, *start2, *limit1, *limit2;
+ char16_t c1, c2;
/* setup for fix-up */
start1=s1;
@@ -715,7 +715,7 @@ uprv_strCompare(const UChar *s1, int32_t length1,
}
/* setup for fix-up */
- limit1=limit2=NULL;
+ limit1=limit2=nullptr;
} else if(strncmpStyle) {
/* special handling for strncmp, assume length1==length2>=0 but also check for NUL */
if(s1==s2) {
@@ -830,7 +830,7 @@ u_strCompareIter(UCharIterator *iter1, UCharIterator *iter2, UBool codePointOrde
UChar32 c1, c2;
/* argument checking */
- if(iter1==NULL || iter2==NULL) {
+ if(iter1==nullptr || iter2==nullptr) {
return 0; /* bad arguments */
}
if(iter1==iter2) {
@@ -922,11 +922,11 @@ void fragment {
#endif
U_CAPI int32_t U_EXPORT2
-u_strCompare(const UChar *s1, int32_t length1,
- const UChar *s2, int32_t length2,
+u_strCompare(const char16_t *s1, int32_t length1,
+ const char16_t *s2, int32_t length2,
UBool codePointOrder) {
/* argument checking */
- if(s1==NULL || length1<-1 || s2==NULL || length2<-1) {
+ if(s1==nullptr || length1<-1 || s2==nullptr || length2<-1) {
return 0;
}
return uprv_strCompare(s1, length1, s2, length2, false, codePointOrder);
@@ -934,13 +934,13 @@ u_strCompare(const UChar *s1, int32_t length1,
/* String compare in code point order - u_strcmp() compares in code unit order. */
U_CAPI int32_t U_EXPORT2
-u_strcmpCodePointOrder(const UChar *s1, const UChar *s2) {
+u_strcmpCodePointOrder(const char16_t *s1, const char16_t *s2) {
return uprv_strCompare(s1, -1, s2, -1, false, true);
}
U_CAPI int32_t U_EXPORT2
-u_strncmp(const UChar *s1,
- const UChar *s2,
+u_strncmp(const char16_t *s1,
+ const char16_t *s2,
int32_t n)
{
if(n > 0) {
@@ -959,15 +959,15 @@ u_strncmp(const UChar *s1,
}
U_CAPI int32_t U_EXPORT2
-u_strncmpCodePointOrder(const UChar *s1, const UChar *s2, int32_t n) {
+u_strncmpCodePointOrder(const char16_t *s1, const char16_t *s2, int32_t n) {
return uprv_strCompare(s1, n, s2, n, true, true);
}
-U_CAPI UChar* U_EXPORT2
-u_strcpy(UChar *dst,
- const UChar *src)
+U_CAPI char16_t* U_EXPORT2
+u_strcpy(char16_t *dst,
+ const char16_t *src)
{
- UChar *anchor = dst; /* save a pointer to start of dst */
+ char16_t *anchor = dst; /* save a pointer to start of dst */
while((*(dst++) = *(src++)) != 0) { /* copy string 2 over */
}
@@ -975,12 +975,12 @@ u_strcpy(UChar *dst,
return anchor;
}
-U_CAPI UChar* U_EXPORT2
-u_strncpy(UChar *dst,
- const UChar *src,
+U_CAPI char16_t* U_EXPORT2
+u_strncpy(char16_t *dst,
+ const char16_t *src,
int32_t n)
{
- UChar *anchor = dst; /* save a pointer to start of dst */
+ char16_t *anchor = dst; /* save a pointer to start of dst */
/* copy string 2 over */
while(n > 0 && (*(dst++) = *(src++)) != 0) {
@@ -991,12 +991,12 @@ u_strncpy(UChar *dst,
}
U_CAPI int32_t U_EXPORT2
-u_strlen(const UChar *s)
+u_strlen(const char16_t *s)
{
#if U_SIZEOF_WCHAR_T == U_SIZEOF_UCHAR
return (int32_t)uprv_wcslen((const wchar_t *)s);
#else
- const UChar *t = s;
+ const char16_t *t = s;
while(*t != 0) {
++t;
}
@@ -1005,10 +1005,10 @@ u_strlen(const UChar *s)
}
U_CAPI int32_t U_EXPORT2
-u_countChar32(const UChar *s, int32_t length) {
+u_countChar32(const char16_t *s, int32_t length) {
int32_t count;
- if(s==NULL || length<-1) {
+ if(s==nullptr || length<-1) {
return 0;
}
@@ -1025,7 +1025,7 @@ u_countChar32(const UChar *s, int32_t length) {
}
}
} else /* length==-1 */ {
- UChar c;
+ char16_t c;
for(;;) {
if((c=*s++)==0) {
@@ -1046,18 +1046,18 @@ u_countChar32(const UChar *s, int32_t length) {
}
U_CAPI UBool U_EXPORT2
-u_strHasMoreChar32Than(const UChar *s, int32_t length, int32_t number) {
+u_strHasMoreChar32Than(const char16_t *s, int32_t length, int32_t number) {
if(number<0) {
return true;
}
- if(s==NULL || length<-1) {
+ if(s==nullptr || length<-1) {
return false;
}
if(length==-1) {
/* s is NUL-terminated */
- UChar c;
+ char16_t c;
/* count code points until they exceed */
for(;;) {
@@ -1074,7 +1074,7 @@ u_strHasMoreChar32Than(const UChar *s, int32_t length, int32_t number) {
}
} else {
/* length>=0 known */
- const UChar *limit;
+ const char16_t *limit;
int32_t maxSupplementary;
/* s contains at least (length+1)/2 code points: <=2 UChars per cp */
@@ -1091,7 +1091,7 @@ u_strHasMoreChar32Than(const UChar *s, int32_t length, int32_t number) {
/*
* count code points until they exceed and also check that there are
- * no more than maxSupplementary supplementary code points (UChar pairs)
+ * no more than maxSupplementary supplementary code points (char16_t pairs)
*/
limit=s+length;
for(;;) {
@@ -1113,27 +1113,27 @@ u_strHasMoreChar32Than(const UChar *s, int32_t length, int32_t number) {
}
}
-U_CAPI UChar * U_EXPORT2
-u_memcpy(UChar *dest, const UChar *src, int32_t count) {
+U_CAPI char16_t * U_EXPORT2
+u_memcpy(char16_t *dest, const char16_t *src, int32_t count) {
if(count > 0) {
uprv_memcpy(dest, src, (size_t)count*U_SIZEOF_UCHAR);
}
return dest;
}
-U_CAPI UChar * U_EXPORT2
-u_memmove(UChar *dest, const UChar *src, int32_t count) {
+U_CAPI char16_t * U_EXPORT2
+u_memmove(char16_t *dest, const char16_t *src, int32_t count) {
if(count > 0) {
uprv_memmove(dest, src, (size_t)count*U_SIZEOF_UCHAR);
}
return dest;
}
-U_CAPI UChar * U_EXPORT2
-u_memset(UChar *dest, UChar c, int32_t count) {
+U_CAPI char16_t * U_EXPORT2
+u_memset(char16_t *dest, char16_t c, int32_t count) {
if(count > 0) {
- UChar *ptr = dest;
- UChar *limit = dest + count;
+ char16_t *ptr = dest;
+ char16_t *limit = dest + count;
while (ptr < limit) {
*(ptr++) = c;
@@ -1143,9 +1143,9 @@ u_memset(UChar *dest, UChar c, int32_t count) {
}
U_CAPI int32_t U_EXPORT2
-u_memcmp(const UChar *buf1, const UChar *buf2, int32_t count) {
+u_memcmp(const char16_t *buf1, const char16_t *buf2, int32_t count) {
if(count > 0) {
- const UChar *limit = buf1 + count;
+ const char16_t *limit = buf1 + count;
int32_t result;
while (buf1 < limit) {
@@ -1161,14 +1161,14 @@ u_memcmp(const UChar *buf1, const UChar *buf2, int32_t count) {
}
U_CAPI int32_t U_EXPORT2
-u_memcmpCodePointOrder(const UChar *s1, const UChar *s2, int32_t count) {
+u_memcmpCodePointOrder(const char16_t *s1, const char16_t *s2, int32_t count) {
return uprv_strCompare(s1, count, s2, count, false, true);
}
/* u_unescape & support fns ------------------------------------------------- */
/* This map must be in ASCENDING ORDER OF THE ESCAPE CODE */
-static const UChar UNESCAPE_MAP[] = {
+static const char16_t UNESCAPE_MAP[] = {
/*" 0x22, 0x22 */
/*' 0x27, 0x27 */
/*? 0x3F, 0x3F */
@@ -1185,7 +1185,7 @@ static const UChar UNESCAPE_MAP[] = {
enum { UNESCAPE_MAP_LENGTH = UPRV_LENGTHOF(UNESCAPE_MAP) };
/* Convert one octal digit to a numeric value 0..7, or -1 on failure */
-static int32_t _digit8(UChar c) {
+static int32_t _digit8(char16_t c) {
if (c >= u'0' && c <= u'7') {
return c - u'0';
}
@@ -1193,7 +1193,7 @@ static int32_t _digit8(UChar c) {
}
/* Convert one hex digit to a numeric value 0..F, or -1 on failure */
-static int32_t _digit16(UChar c) {
+static int32_t _digit16(char16_t c) {
if (c >= u'0' && c <= u'9') {
return c - u'0';
}
@@ -1230,7 +1230,7 @@ u_unescapeAt(UNESCAPE_CHAR_AT charAt,
goto err;
}
- /* Fetch first UChar after '\\' */
+ /* Fetch first char16_t after '\\' */
c = charAt((*offset)++, context);
/* Convert hexadecimal and octal escapes */
@@ -1323,7 +1323,7 @@ u_unescapeAt(UNESCAPE_CHAR_AT charAt,
if (c == u'c' && *offset < length) {
c = charAt((*offset)++, context);
if (U16_IS_LEAD(c) && *offset < length) {
- UChar c2 = charAt(*offset, context);
+ char16_t c2 = charAt(*offset, context);
if (U16_IS_TRAIL(c2)) {
++(*offset);
c = U16_GET_SUPPLEMENTARY(c, c2);
@@ -1336,7 +1336,7 @@ u_unescapeAt(UNESCAPE_CHAR_AT charAt,
* the backslash to generically escape the next character.
* Deal with surrogate pairs. */
if (U16_IS_LEAD(c) && *offset < length) {
- UChar c2 = charAt(*offset, context);
+ char16_t c2 = charAt(*offset, context);
if (U16_IS_TRAIL(c2)) {
++(*offset);
return U16_GET_SUPPLEMENTARY(c, c2);
@@ -1350,10 +1350,10 @@ u_unescapeAt(UNESCAPE_CHAR_AT charAt,
return (UChar32)0xFFFFFFFF;
}
-/* u_unescapeAt() callback to return a UChar from a char* */
-static UChar U_CALLCONV
+/* u_unescapeAt() callback to return a char16_t from a char* */
+static char16_t U_CALLCONV
_charPtr_charAt(int32_t offset, void *context) {
- UChar c16;
+ char16_t c16;
/* It would be more efficient to access the invariant tables
* directly but there is no API for that. */
u_charsToUChars(((char*) context) + offset, &c16, 1);
@@ -1361,7 +1361,7 @@ _charPtr_charAt(int32_t offset, void *context) {
}
/* Append an escape-free segment of the text; used by u_unescape() */
-static void _appendUChars(UChar *dest, int32_t destCapacity,
+static void _appendUChars(char16_t *dest, int32_t destCapacity,
const char *src, int32_t srcLen) {
if (destCapacity < 0) {
destCapacity = 0;
@@ -1372,9 +1372,9 @@ static void _appendUChars(UChar *dest, int32_t destCapacity,
u_charsToUChars(src, dest, srcLen);
}
-/* Do an invariant conversion of char* -> UChar*, with escape parsing */
+/* Do an invariant conversion of char* -> char16_t*, with escape parsing */
U_CAPI int32_t U_EXPORT2
-u_unescape(const char *src, UChar *dest, int32_t destCapacity) {
+u_unescape(const char *src, char16_t *dest, int32_t destCapacity) {
const char *segment = src;
int32_t i = 0;
char c;
@@ -1387,7 +1387,7 @@ u_unescape(const char *src, UChar *dest, int32_t destCapacity) {
int32_t lenParsed = 0;
UChar32 c32;
if (src != segment) {
- if (dest != NULL) {
+ if (dest != nullptr) {
_appendUChars(dest + i, destCapacity - i,
segment, (int32_t)(src - segment));
}
@@ -1399,7 +1399,7 @@ u_unescape(const char *src, UChar *dest, int32_t destCapacity) {
goto err;
}
src += lenParsed; /* advance past escape seq. */
- if (dest != NULL && U16_LENGTH(c32) <= (destCapacity - i)) {
+ if (dest != nullptr && U16_LENGTH(c32) <= (destCapacity - i)) {
U16_APPEND_UNSAFE(dest, i, c32);
} else {
i += U16_LENGTH(c32);
@@ -1410,19 +1410,19 @@ u_unescape(const char *src, UChar *dest, int32_t destCapacity) {
}
}
if (src != segment) {
- if (dest != NULL) {
+ if (dest != nullptr) {
_appendUChars(dest + i, destCapacity - i,
segment, (int32_t)(src - segment));
}
i += (int32_t)(src - segment);
}
- if (dest != NULL && i < destCapacity) {
+ if (dest != nullptr && i < destCapacity) {
dest[i] = 0;
}
return i;
err:
- if (dest != NULL && destCapacity > 0) {
+ if (dest != nullptr && destCapacity > 0) {
*dest = 0;
}
return 0;
@@ -1435,7 +1435,7 @@ u_unescape(const char *src, UChar *dest, int32_t destCapacity) {
* Set warning and error codes accordingly.
*/
#define __TERMINATE_STRING(dest, destCapacity, length, pErrorCode) UPRV_BLOCK_MACRO_BEGIN { \
- if(pErrorCode!=NULL && U_SUCCESS(*pErrorCode)) { \
+ if(pErrorCode!=nullptr && U_SUCCESS(*pErrorCode)) { \
/* not a public function, so no complete argument checking */ \
\
if(length<0) { \
@@ -1457,8 +1457,8 @@ u_unescape(const char *src, UChar *dest, int32_t destCapacity) {
} \
} UPRV_BLOCK_MACRO_END
-U_CAPI UChar U_EXPORT2
-u_asciiToUpper(UChar c) {
+U_CAPI char16_t U_EXPORT2
+u_asciiToUpper(char16_t c) {
if (u'a' <= c && c <= u'z') {
c = c + u'A' - u'a';
}
@@ -1466,7 +1466,7 @@ u_asciiToUpper(UChar c) {
}
U_CAPI int32_t U_EXPORT2
-u_terminateUChars(UChar *dest, int32_t destCapacity, int32_t length, UErrorCode *pErrorCode) {
+u_terminateUChars(char16_t *dest, int32_t destCapacity, int32_t length, UErrorCode *pErrorCode) {
__TERMINATE_STRING(dest, destCapacity, length, pErrorCode);
return length;
}
@@ -1506,7 +1506,7 @@ u_terminateWChars(wchar_t *dest, int32_t destCapacity, int32_t length, UErrorCod
#define STRING_HASH(TYPE, STR, STRLEN, DEREF) UPRV_BLOCK_MACRO_BEGIN { \
uint32_t hash = 0; \
const TYPE *p = (const TYPE*) STR; \
- if (p != NULL) { \
+ if (p != nullptr) { \
int32_t len = (int32_t)(STRLEN); \
int32_t inc = ((len - 32) / 32) + 1; \
const TYPE *limit = p + len; \
@@ -1520,8 +1520,8 @@ u_terminateWChars(wchar_t *dest, int32_t destCapacity, int32_t length, UErrorCod
/* Used by UnicodeString to compute its hashcode - Not public API. */
U_CAPI int32_t U_EXPORT2
-ustr_hashUCharsN(const UChar *str, int32_t length) {
- STRING_HASH(UChar, str, length, *p);
+ustr_hashUCharsN(const char16_t *str, int32_t length) {
+ STRING_HASH(char16_t, str, length, *p);
}
U_CAPI int32_t U_EXPORT2
diff --git a/Build/source/libs/icu/icu-src/source/common/ustrtrns.cpp b/Build/source/libs/icu/icu-src/source/common/ustrtrns.cpp
index dcb9dc58783..244c111fc41 100644
--- a/Build/source/libs/icu/icu-src/source/common/ustrtrns.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/ustrtrns.cpp
@@ -36,8 +36,8 @@
#include "ustr_imp.h"
#include "uassert.h"
-U_CAPI UChar* U_EXPORT2
-u_strFromUTF32WithSub(UChar *dest,
+U_CAPI char16_t* U_EXPORT2
+u_strFromUTF32WithSub(char16_t *dest,
int32_t destCapacity,
int32_t *pDestLength,
const UChar32 *src,
@@ -46,29 +46,29 @@ u_strFromUTF32WithSub(UChar *dest,
UErrorCode *pErrorCode) {
const UChar32 *srcLimit;
UChar32 ch;
- UChar *destLimit;
- UChar *pDest;
+ char16_t *destLimit;
+ char16_t *pDest;
int32_t reqLength;
int32_t numSubstitutions;
/* args check */
if(U_FAILURE(*pErrorCode)){
- return NULL;
+ return nullptr;
}
- if( (src==NULL && srcLength!=0) || srcLength < -1 ||
- (destCapacity<0) || (dest == NULL && destCapacity > 0) ||
+ if( (src==nullptr && srcLength!=0) || srcLength < -1 ||
+ (destCapacity<0) || (dest == nullptr && destCapacity > 0) ||
subchar > 0x10ffff || U_IS_SURROGATE(subchar)
) {
*pErrorCode = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
- if(pNumSubstitutions != NULL) {
+ if(pNumSubstitutions != nullptr) {
*pNumSubstitutions = 0;
}
pDest = dest;
- destLimit = (dest!=NULL)?(dest + destCapacity):NULL;
+ destLimit = (dest!=nullptr)?(dest + destCapacity):nullptr;
reqLength = 0;
numSubstitutions = 0;
@@ -78,7 +78,7 @@ u_strFromUTF32WithSub(UChar *dest,
((uint32_t)ch < 0xd800 || (0xe000 <= ch && ch <= 0xffff))) {
++src;
if(pDest < destLimit) {
- *pDest++ = (UChar)ch;
+ *pDest++ = (char16_t)ch;
} else {
++reqLength;
}
@@ -89,7 +89,7 @@ u_strFromUTF32WithSub(UChar *dest,
while(*++srcLimit != 0) {}
}
} else {
- srcLimit = (src!=NULL)?(src + srcLength):NULL;
+ srcLimit = (src!=nullptr)?(src + srcLength):nullptr;
}
/* convert with length */
@@ -99,13 +99,13 @@ u_strFromUTF32WithSub(UChar *dest,
/* usually "loops" once; twice only for writing subchar */
if((uint32_t)ch < 0xd800 || (0xe000 <= ch && ch <= 0xffff)) {
if(pDest < destLimit) {
- *pDest++ = (UChar)ch;
+ *pDest++ = (char16_t)ch;
} else {
++reqLength;
}
break;
} else if(0x10000 <= ch && ch <= 0x10ffff) {
- if(pDest!=NULL && ((pDest + 2) <= destLimit)) {
+ if(pDest!=nullptr && ((pDest + 2) <= destLimit)) {
*pDest++ = U16_LEAD(ch);
*pDest++ = U16_TRAIL(ch);
} else {
@@ -115,7 +115,7 @@ u_strFromUTF32WithSub(UChar *dest,
} else if((ch = subchar) < 0) {
/* surrogate code point, or not a Unicode code point at all */
*pErrorCode = U_INVALID_CHAR_FOUND;
- return NULL;
+ return nullptr;
} else {
++numSubstitutions;
}
@@ -126,7 +126,7 @@ u_strFromUTF32WithSub(UChar *dest,
if(pDestLength) {
*pDestLength = reqLength;
}
- if(pNumSubstitutions != NULL) {
+ if(pNumSubstitutions != nullptr) {
*pNumSubstitutions = numSubstitutions;
}
@@ -136,8 +136,8 @@ u_strFromUTF32WithSub(UChar *dest,
return dest;
}
-U_CAPI UChar* U_EXPORT2
-u_strFromUTF32(UChar *dest,
+U_CAPI char16_t* U_EXPORT2
+u_strFromUTF32(char16_t *dest,
int32_t destCapacity,
int32_t *pDestLength,
const UChar32 *src,
@@ -146,7 +146,7 @@ u_strFromUTF32(UChar *dest,
return u_strFromUTF32WithSub(
dest, destCapacity, pDestLength,
src, srcLength,
- U_SENTINEL, NULL,
+ U_SENTINEL, nullptr,
pErrorCode);
}
@@ -154,13 +154,13 @@ U_CAPI UChar32* U_EXPORT2
u_strToUTF32WithSub(UChar32 *dest,
int32_t destCapacity,
int32_t *pDestLength,
- const UChar *src,
+ const char16_t *src,
int32_t srcLength,
UChar32 subchar, int32_t *pNumSubstitutions,
UErrorCode *pErrorCode) {
- const UChar *srcLimit;
+ const char16_t *srcLimit;
UChar32 ch;
- UChar ch2;
+ char16_t ch2;
UChar32 *destLimit;
UChar32 *pDest;
int32_t reqLength;
@@ -168,22 +168,22 @@ u_strToUTF32WithSub(UChar32 *dest,
/* args check */
if(U_FAILURE(*pErrorCode)){
- return NULL;
+ return nullptr;
}
- if( (src==NULL && srcLength!=0) || srcLength < -1 ||
- (destCapacity<0) || (dest == NULL && destCapacity > 0) ||
+ if( (src==nullptr && srcLength!=0) || srcLength < -1 ||
+ (destCapacity<0) || (dest == nullptr && destCapacity > 0) ||
subchar > 0x10ffff || U_IS_SURROGATE(subchar)
) {
*pErrorCode = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
- if(pNumSubstitutions != NULL) {
+ if(pNumSubstitutions != nullptr) {
*pNumSubstitutions = 0;
}
pDest = dest;
- destLimit = (dest!=NULL)?(dest + destCapacity):NULL;
+ destLimit = (dest!=nullptr)?(dest + destCapacity):nullptr;
reqLength = 0;
numSubstitutions = 0;
@@ -203,7 +203,7 @@ u_strToUTF32WithSub(UChar32 *dest,
while(*++srcLimit != 0) {}
}
} else {
- srcLimit = (src!=NULL)?(src + srcLength):NULL;
+ srcLimit = (src!=nullptr)?(src + srcLength):nullptr;
}
/* convert with length */
@@ -217,7 +217,7 @@ u_strToUTF32WithSub(UChar32 *dest,
} else if((ch = subchar) < 0) {
/* unpaired surrogate */
*pErrorCode = U_INVALID_CHAR_FOUND;
- return NULL;
+ return nullptr;
} else {
++numSubstitutions;
}
@@ -232,7 +232,7 @@ u_strToUTF32WithSub(UChar32 *dest,
if(pDestLength) {
*pDestLength = reqLength;
}
- if(pNumSubstitutions != NULL) {
+ if(pNumSubstitutions != nullptr) {
*pNumSubstitutions = numSubstitutions;
}
@@ -246,18 +246,18 @@ U_CAPI UChar32* U_EXPORT2
u_strToUTF32(UChar32 *dest,
int32_t destCapacity,
int32_t *pDestLength,
- const UChar *src,
+ const char16_t *src,
int32_t srcLength,
UErrorCode *pErrorCode) {
return u_strToUTF32WithSub(
dest, destCapacity, pDestLength,
src, srcLength,
- U_SENTINEL, NULL,
+ U_SENTINEL, nullptr,
pErrorCode);
}
-U_CAPI UChar* U_EXPORT2
-u_strFromUTF8WithSub(UChar *dest,
+U_CAPI char16_t* U_EXPORT2
+u_strFromUTF8WithSub(char16_t *dest,
int32_t destCapacity,
int32_t *pDestLength,
const char* src,
@@ -266,21 +266,21 @@ u_strFromUTF8WithSub(UChar *dest,
UErrorCode *pErrorCode){
/* args check */
if(U_FAILURE(*pErrorCode)) {
- return NULL;
+ return nullptr;
}
- if( (src==NULL && srcLength!=0) || srcLength < -1 ||
- (destCapacity<0) || (dest == NULL && destCapacity > 0) ||
+ if( (src==nullptr && srcLength!=0) || srcLength < -1 ||
+ (destCapacity<0) || (dest == nullptr && destCapacity > 0) ||
subchar > 0x10ffff || U_IS_SURROGATE(subchar)
) {
*pErrorCode = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
- if(pNumSubstitutions!=NULL) {
+ if(pNumSubstitutions!=nullptr) {
*pNumSubstitutions=0;
}
- UChar *pDest = dest;
- UChar *pDestLimit = dest+destCapacity;
+ char16_t *pDest = dest;
+ char16_t *pDestLimit = dest+destCapacity;
int32_t reqLength = 0;
int32_t numSubstitutions=0;
@@ -309,7 +309,7 @@ u_strFromUTF8WithSub(UChar *dest,
// modified copy of U8_NEXT()
++i;
if(U8_IS_SINGLE(c)) {
- *pDest++=(UChar)c;
+ *pDest++=(char16_t)c;
} else {
uint8_t __t1, __t2;
if( /* handle U+0800..U+FFFF inline */
@@ -328,9 +328,9 @@ u_strFromUTF8WithSub(UChar *dest,
(c)=utf8_nextCharSafeBody((const uint8_t *)src, &(i), -1, c, -1);
if(c<0 && (++numSubstitutions, c = subchar) < 0) {
*pErrorCode = U_INVALID_CHAR_FOUND;
- return NULL;
+ return nullptr;
} else if(c<=0xFFFF) {
- *(pDest++)=(UChar)c;
+ *(pDest++)=(char16_t)c;
} else {
*(pDest++)=U16_LEAD(c);
if(pDest<pDestLimit) {
@@ -368,7 +368,7 @@ u_strFromUTF8WithSub(UChar *dest,
(c)=utf8_nextCharSafeBody((const uint8_t *)src, &(i), -1, c, -1);
if(c<0 && (++numSubstitutions, c = subchar) < 0) {
*pErrorCode = U_INVALID_CHAR_FOUND;
- return NULL;
+ return nullptr;
}
reqLength += U16_LENGTH(c);
}
@@ -381,7 +381,7 @@ u_strFromUTF8WithSub(UChar *dest,
for(;;) {
/*
* Each iteration of the inner loop progresses by at most 3 UTF-8
- * bytes and one UChar, for most characters.
+ * bytes and one char16_t, for most characters.
* For supplementary code points (4 & 2), which are rare,
* there is an additional adjustment.
*/
@@ -402,7 +402,7 @@ u_strFromUTF8WithSub(UChar *dest,
// modified copy of U8_NEXT()
c = (uint8_t)src[i++];
if(U8_IS_SINGLE(c)) {
- *pDest++=(UChar)c;
+ *pDest++=(char16_t)c;
} else {
uint8_t __t1, __t2;
if( /* handle U+0800..U+FFFF inline */
@@ -433,9 +433,9 @@ u_strFromUTF8WithSub(UChar *dest,
(c)=utf8_nextCharSafeBody((const uint8_t *)src, &(i), srcLength, c, -1);
if(c<0 && (++numSubstitutions, c = subchar) < 0) {
*pErrorCode = U_INVALID_CHAR_FOUND;
- return NULL;
+ return nullptr;
} else if(c<=0xFFFF) {
- *(pDest++)=(UChar)c;
+ *(pDest++)=(char16_t)c;
} else {
*(pDest++)=U16_LEAD(c);
*(pDest++)=U16_TRAIL(c);
@@ -449,7 +449,7 @@ u_strFromUTF8WithSub(UChar *dest,
// modified copy of U8_NEXT()
c = (uint8_t)src[i++];
if(U8_IS_SINGLE(c)) {
- *pDest++=(UChar)c;
+ *pDest++=(char16_t)c;
} else {
uint8_t __t1, __t2;
if( /* handle U+0800..U+FFFF inline */
@@ -470,9 +470,9 @@ u_strFromUTF8WithSub(UChar *dest,
(c)=utf8_nextCharSafeBody((const uint8_t *)src, &(i), srcLength, c, -1);
if(c<0 && (++numSubstitutions, c = subchar) < 0) {
*pErrorCode = U_INVALID_CHAR_FOUND;
- return NULL;
+ return nullptr;
} else if(c<=0xFFFF) {
- *(pDest++)=(UChar)c;
+ *(pDest++)=(char16_t)c;
} else {
*(pDest++)=U16_LEAD(c);
if(pDest<pDestLimit) {
@@ -512,7 +512,7 @@ u_strFromUTF8WithSub(UChar *dest,
(c)=utf8_nextCharSafeBody((const uint8_t *)src, &(i), srcLength, c, -1);
if(c<0 && (++numSubstitutions, c = subchar) < 0) {
*pErrorCode = U_INVALID_CHAR_FOUND;
- return NULL;
+ return nullptr;
}
reqLength += U16_LENGTH(c);
}
@@ -522,7 +522,7 @@ u_strFromUTF8WithSub(UChar *dest,
reqLength+=(int32_t)(pDest - dest);
- if(pNumSubstitutions!=NULL) {
+ if(pNumSubstitutions!=nullptr) {
*pNumSubstitutions=numSubstitutions;
}
@@ -536,8 +536,8 @@ u_strFromUTF8WithSub(UChar *dest,
return dest;
}
-U_CAPI UChar* U_EXPORT2
-u_strFromUTF8(UChar *dest,
+U_CAPI char16_t* U_EXPORT2
+u_strFromUTF8(char16_t *dest,
int32_t destCapacity,
int32_t *pDestLength,
const char* src,
@@ -546,37 +546,37 @@ u_strFromUTF8(UChar *dest,
return u_strFromUTF8WithSub(
dest, destCapacity, pDestLength,
src, srcLength,
- U_SENTINEL, NULL,
+ U_SENTINEL, nullptr,
pErrorCode);
}
-U_CAPI UChar * U_EXPORT2
-u_strFromUTF8Lenient(UChar *dest,
+U_CAPI char16_t * U_EXPORT2
+u_strFromUTF8Lenient(char16_t *dest,
int32_t destCapacity,
int32_t *pDestLength,
const char *src,
int32_t srcLength,
UErrorCode *pErrorCode) {
- UChar *pDest = dest;
+ char16_t *pDest = dest;
UChar32 ch;
int32_t reqLength = 0;
uint8_t* pSrc = (uint8_t*) src;
/* args check */
if(U_FAILURE(*pErrorCode)){
- return NULL;
+ return nullptr;
}
- if( (src==NULL && srcLength!=0) || srcLength < -1 ||
- (destCapacity<0) || (dest == NULL && destCapacity > 0)
+ if( (src==nullptr && srcLength!=0) || srcLength < -1 ||
+ (destCapacity<0) || (dest == nullptr && destCapacity > 0)
) {
*pErrorCode = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
if(srcLength < 0) {
/* Transform a NUL-terminated string. */
- UChar *pDestLimit = (dest!=NULL)?(dest+destCapacity):NULL;
+ char16_t *pDestLimit = (dest!=nullptr)?(dest+destCapacity):nullptr;
uint8_t t1, t2, t3; /* trail bytes */
while(((ch = *pSrc) != 0) && (pDest < pDestLimit)) {
@@ -586,21 +586,21 @@ u_strFromUTF8Lenient(UChar *dest,
* a single-byte sequence for better character boundary
* resynchronization after illegal sequences.
*/
- *pDest++=(UChar)ch;
+ *pDest++=(char16_t)ch;
++pSrc;
continue;
} else if(ch < 0xe0) { /* U+0080..U+07FF */
if((t1 = pSrc[1]) != 0) {
/* 0x3080 = (0xc0 << 6) + 0x80 */
- *pDest++ = (UChar)((ch << 6) + t1 - 0x3080);
+ *pDest++ = (char16_t)((ch << 6) + t1 - 0x3080);
pSrc += 2;
continue;
}
} else if(ch < 0xf0) { /* U+0800..U+FFFF */
if((t1 = pSrc[1]) != 0 && (t2 = pSrc[2]) != 0) {
- /* no need for (ch & 0xf) because the upper bits are truncated after <<12 in the cast to (UChar) */
+ /* no need for (ch & 0xf) because the upper bits are truncated after <<12 in the cast to (char16_t) */
/* 0x2080 = (0x80 << 6) + 0x80 */
- *pDest++ = (UChar)((ch << 12) + (t1 << 6) + t2 - 0x2080);
+ *pDest++ = (char16_t)((ch << 12) + (t1 << 6) + t2 - 0x2080);
pSrc += 3;
continue;
}
@@ -662,7 +662,7 @@ u_strFromUTF8Lenient(UChar *dest,
break;
}
} else /* srcLength >= 0 */ {
- const uint8_t *pSrcLimit = (pSrc!=NULL)?(pSrc + srcLength):NULL;
+ const uint8_t *pSrcLimit = (pSrc!=nullptr)?(pSrc + srcLength):nullptr;
/*
* This function requires that if srcLength is given, then it must be
@@ -670,11 +670,11 @@ u_strFromUTF8Lenient(UChar *dest,
* destination buffer overflow in the loop.
*/
if(destCapacity < srcLength) {
- if(pDestLength != NULL) {
+ if(pDestLength != nullptr) {
*pDestLength = srcLength; /* this likely overestimates the true destLength! */
}
*pErrorCode = U_BUFFER_OVERFLOW_ERROR;
- return NULL;
+ return nullptr;
}
if((pSrcLimit - pSrc) >= 4) {
@@ -689,15 +689,15 @@ u_strFromUTF8Lenient(UChar *dest,
* a single-byte sequence for better character boundary
* resynchronization after illegal sequences.
*/
- *pDest++=(UChar)ch;
+ *pDest++=(char16_t)ch;
} else if(ch < 0xe0) { /* U+0080..U+07FF */
/* 0x3080 = (0xc0 << 6) + 0x80 */
- *pDest++ = (UChar)((ch << 6) + *pSrc++ - 0x3080);
+ *pDest++ = (char16_t)((ch << 6) + *pSrc++ - 0x3080);
} else if(ch < 0xf0) { /* U+0800..U+FFFF */
- /* no need for (ch & 0xf) because the upper bits are truncated after <<12 in the cast to (UChar) */
+ /* no need for (ch & 0xf) because the upper bits are truncated after <<12 in the cast to (char16_t) */
/* 0x2080 = (0x80 << 6) + 0x80 */
ch = (ch << 12) + (*pSrc++ << 6);
- *pDest++ = (UChar)(ch + *pSrc++ - 0x2080);
+ *pDest++ = (char16_t)(ch + *pSrc++ - 0x2080);
} else /* f0..f4 */ { /* U+10000..U+10FFFF */
/* 0x3c82080 = (0xf0 << 18) + (0x80 << 12) + (0x80 << 6) + 0x80 */
ch = (ch << 18) + (*pSrc++ << 12);
@@ -719,20 +719,20 @@ u_strFromUTF8Lenient(UChar *dest,
* a single-byte sequence for better character boundary
* resynchronization after illegal sequences.
*/
- *pDest++=(UChar)ch;
+ *pDest++=(char16_t)ch;
continue;
} else if(ch < 0xe0) { /* U+0080..U+07FF */
if(pSrc < pSrcLimit) {
/* 0x3080 = (0xc0 << 6) + 0x80 */
- *pDest++ = (UChar)((ch << 6) + *pSrc++ - 0x3080);
+ *pDest++ = (char16_t)((ch << 6) + *pSrc++ - 0x3080);
continue;
}
} else if(ch < 0xf0) { /* U+0800..U+FFFF */
if((pSrcLimit - pSrc) >= 2) {
- /* no need for (ch & 0xf) because the upper bits are truncated after <<12 in the cast to (UChar) */
+ /* no need for (ch & 0xf) because the upper bits are truncated after <<12 in the cast to (char16_t) */
/* 0x2080 = (0x80 << 6) + 0x80 */
ch = (ch << 12) + (*pSrc++ << 6);
- *pDest++ = (UChar)(ch + *pSrc++ - 0x2080);
+ *pDest++ = (char16_t)(ch + *pSrc++ - 0x2080);
pSrc += 3;
continue;
}
@@ -793,30 +793,30 @@ U_CAPI char* U_EXPORT2
u_strToUTF8WithSub(char *dest,
int32_t destCapacity,
int32_t *pDestLength,
- const UChar *pSrc,
+ const char16_t *pSrc,
int32_t srcLength,
UChar32 subchar, int32_t *pNumSubstitutions,
UErrorCode *pErrorCode){
int32_t reqLength=0;
uint32_t ch=0,ch2=0;
uint8_t *pDest = (uint8_t *)dest;
- uint8_t *pDestLimit = (pDest!=NULL)?(pDest + destCapacity):NULL;
+ uint8_t *pDestLimit = (pDest!=nullptr)?(pDest + destCapacity):nullptr;
int32_t numSubstitutions;
/* args check */
if(U_FAILURE(*pErrorCode)){
- return NULL;
+ return nullptr;
}
- if( (pSrc==NULL && srcLength!=0) || srcLength < -1 ||
- (destCapacity<0) || (dest == NULL && destCapacity > 0) ||
+ if( (pSrc==nullptr && srcLength!=0) || srcLength < -1 ||
+ (destCapacity<0) || (dest == nullptr && destCapacity > 0) ||
subchar > 0x10ffff || U_IS_SURROGATE(subchar)
) {
*pErrorCode = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
- if(pNumSubstitutions!=NULL) {
+ if(pNumSubstitutions!=nullptr) {
*pNumSubstitutions=0;
}
numSubstitutions=0;
@@ -861,7 +861,7 @@ u_strToUTF8WithSub(char *dest,
} else {
/* Unicode 3.2 forbids surrogate code points in UTF-8 */
*pErrorCode = U_INVALID_CHAR_FOUND;
- return NULL;
+ return nullptr;
}
length = U8_LENGTH(ch);
@@ -890,18 +890,18 @@ u_strToUTF8WithSub(char *dest,
} else {
/* Unicode 3.2 forbids surrogate code points in UTF-8 */
*pErrorCode = U_INVALID_CHAR_FOUND;
- return NULL;
+ return nullptr;
}
}
} else {
- const UChar *pSrcLimit = (pSrc!=NULL)?(pSrc+srcLength):NULL;
+ const char16_t *pSrcLimit = (pSrc!=nullptr)?(pSrc+srcLength):nullptr;
int32_t count;
/* Faster loop without ongoing checking for pSrcLimit and pDestLimit. */
for(;;) {
/*
* Each iteration of the inner loop progresses by at most 3 UTF-8
- * bytes and one UChar, for most characters.
+ * bytes and one char16_t, for most characters.
* For supplementary code points (4 & 2), which are rare,
* there is an additional adjustment.
*/
@@ -955,7 +955,7 @@ u_strToUTF8WithSub(char *dest,
++numSubstitutions;
} else {
*pErrorCode = U_INVALID_CHAR_FOUND;
- return NULL;
+ return nullptr;
}
/* convert and append*/
@@ -1003,7 +1003,7 @@ u_strToUTF8WithSub(char *dest,
} else {
/* Unicode 3.2 forbids surrogate code points in UTF-8 */
*pErrorCode = U_INVALID_CHAR_FOUND;
- return NULL;
+ return nullptr;
}
length = U8_LENGTH(ch);
@@ -1033,14 +1033,14 @@ u_strToUTF8WithSub(char *dest,
} else {
/* Unicode 3.2 forbids surrogate code points in UTF-8 */
*pErrorCode = U_INVALID_CHAR_FOUND;
- return NULL;
+ return nullptr;
}
}
}
reqLength+=(int32_t)(pDest - (uint8_t *)dest);
- if(pNumSubstitutions!=NULL) {
+ if(pNumSubstitutions!=nullptr) {
*pNumSubstitutions=numSubstitutions;
}
@@ -1057,19 +1057,19 @@ U_CAPI char* U_EXPORT2
u_strToUTF8(char *dest,
int32_t destCapacity,
int32_t *pDestLength,
- const UChar *pSrc,
+ const char16_t *pSrc,
int32_t srcLength,
UErrorCode *pErrorCode){
return u_strToUTF8WithSub(
dest, destCapacity, pDestLength,
pSrc, srcLength,
- U_SENTINEL, NULL,
+ U_SENTINEL, nullptr,
pErrorCode);
}
-U_CAPI UChar* U_EXPORT2
+U_CAPI char16_t* U_EXPORT2
u_strFromJavaModifiedUTF8WithSub(
- UChar *dest,
+ char16_t *dest,
int32_t destCapacity,
int32_t *pDestLength,
const char *src,
@@ -1078,21 +1078,21 @@ u_strFromJavaModifiedUTF8WithSub(
UErrorCode *pErrorCode) {
/* args check */
if(U_FAILURE(*pErrorCode)) {
- return NULL;
+ return nullptr;
}
- if( (src==NULL && srcLength!=0) || srcLength < -1 ||
- (dest==NULL && destCapacity!=0) || destCapacity<0 ||
+ if( (src==nullptr && srcLength!=0) || srcLength < -1 ||
+ (dest==nullptr && destCapacity!=0) || destCapacity<0 ||
subchar > 0x10ffff || U_IS_SURROGATE(subchar)
) {
*pErrorCode = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
- if(pNumSubstitutions!=NULL) {
+ if(pNumSubstitutions!=nullptr) {
*pNumSubstitutions=0;
}
- UChar *pDest = dest;
- UChar *pDestLimit = dest+destCapacity;
+ char16_t *pDest = dest;
+ char16_t *pDestLimit = dest+destCapacity;
int32_t reqLength = 0;
int32_t numSubstitutions=0;
@@ -1103,7 +1103,7 @@ u_strFromJavaModifiedUTF8WithSub(
*/
UChar32 c;
while(((c = (uint8_t)*src) != 0) && c <= 0x7f && (pDest < pDestLimit)) {
- *pDest++=(UChar)c;
+ *pDest++=(char16_t)c;
++src;
}
if(c == 0) {
@@ -1140,7 +1140,7 @@ u_strFromJavaModifiedUTF8WithSub(
}
/*
* Each iteration of the inner loop progresses by at most 3 UTF-8
- * bytes and one UChar.
+ * bytes and one char16_t.
*/
if(subchar > 0xFFFF) {
break;
@@ -1159,7 +1159,7 @@ u_strFromJavaModifiedUTF8WithSub(
do {
ch = (uint8_t)src[i++];
if(U8_IS_SINGLE(ch)) {
- *pDest++=(UChar)ch;
+ *pDest++=(char16_t)ch;
} else {
if(ch >= 0xe0) {
if( /* handle U+0000..U+FFFF inline */
@@ -1167,8 +1167,8 @@ u_strFromJavaModifiedUTF8WithSub(
(t1 = (uint8_t)(src[i] - 0x80)) <= 0x3f &&
(t2 = (uint8_t)(src[i+1] - 0x80)) <= 0x3f
) {
- /* no need for (ch & 0xf) because the upper bits are truncated after <<12 in the cast to (UChar) */
- *pDest++ = (UChar)((ch << 12) | (t1 << 6) | t2);
+ /* no need for (ch & 0xf) because the upper bits are truncated after <<12 in the cast to (char16_t) */
+ *pDest++ = (char16_t)((ch << 12) | (t1 << 6) | t2);
i += 2;
continue;
}
@@ -1177,7 +1177,7 @@ u_strFromJavaModifiedUTF8WithSub(
ch >= 0xc0 &&
(t1 = (uint8_t)(src[i] - 0x80)) <= 0x3f
) {
- *pDest++ = (UChar)(((ch & 0x1f) << 6) | t1);
+ *pDest++ = (char16_t)(((ch & 0x1f) << 6) | t1);
++i;
continue;
}
@@ -1185,7 +1185,7 @@ u_strFromJavaModifiedUTF8WithSub(
if(subchar < 0) {
*pErrorCode = U_INVALID_CHAR_FOUND;
- return NULL;
+ return nullptr;
} else if(subchar > 0xffff && --count == 0) {
/*
* We need to write two UChars, adjusted count for that,
@@ -1197,7 +1197,7 @@ u_strFromJavaModifiedUTF8WithSub(
/* function call for error cases */
utf8_nextCharSafeBody((const uint8_t *)src, &(i), srcLength, ch, -1);
++numSubstitutions;
- *(pDest++)=(UChar)subchar;
+ *(pDest++)=(char16_t)subchar;
}
}
} while(--count > 0);
@@ -1206,7 +1206,7 @@ u_strFromJavaModifiedUTF8WithSub(
while(i < srcLength && (pDest < pDestLimit)) {
ch = (uint8_t)src[i++];
if(U8_IS_SINGLE(ch)){
- *pDest++=(UChar)ch;
+ *pDest++=(char16_t)ch;
} else {
if(ch >= 0xe0) {
if( /* handle U+0000..U+FFFF inline */
@@ -1215,8 +1215,8 @@ u_strFromJavaModifiedUTF8WithSub(
(t1 = (uint8_t)(src[i] - 0x80)) <= 0x3f &&
(t2 = (uint8_t)(src[i+1] - 0x80)) <= 0x3f
) {
- /* no need for (ch & 0xf) because the upper bits are truncated after <<12 in the cast to (UChar) */
- *pDest++ = (UChar)((ch << 12) | (t1 << 6) | t2);
+ /* no need for (ch & 0xf) because the upper bits are truncated after <<12 in the cast to (char16_t) */
+ *pDest++ = (char16_t)((ch << 12) | (t1 << 6) | t2);
i += 2;
continue;
}
@@ -1226,7 +1226,7 @@ u_strFromJavaModifiedUTF8WithSub(
i < srcLength &&
(t1 = (uint8_t)(src[i] - 0x80)) <= 0x3f
) {
- *pDest++ = (UChar)(((ch & 0x1f) << 6) | t1);
+ *pDest++ = (char16_t)(((ch & 0x1f) << 6) | t1);
++i;
continue;
}
@@ -1234,13 +1234,13 @@ u_strFromJavaModifiedUTF8WithSub(
if(subchar < 0) {
*pErrorCode = U_INVALID_CHAR_FOUND;
- return NULL;
+ return nullptr;
} else {
/* function call for error cases */
utf8_nextCharSafeBody((const uint8_t *)src, &(i), srcLength, ch, -1);
++numSubstitutions;
if(subchar<=0xFFFF) {
- *(pDest++)=(UChar)subchar;
+ *(pDest++)=(char16_t)subchar;
} else {
*(pDest++)=U16_LEAD(subchar);
if(pDest<pDestLimit) {
@@ -1285,7 +1285,7 @@ u_strFromJavaModifiedUTF8WithSub(
if(subchar < 0) {
*pErrorCode = U_INVALID_CHAR_FOUND;
- return NULL;
+ return nullptr;
} else {
/* function call for error cases */
utf8_nextCharSafeBody((const uint8_t *)src, &(i), srcLength, ch, -1);
@@ -1295,7 +1295,7 @@ u_strFromJavaModifiedUTF8WithSub(
}
}
- if(pNumSubstitutions!=NULL) {
+ if(pNumSubstitutions!=nullptr) {
*pNumSubstitutions=numSubstitutions;
}
@@ -1314,26 +1314,26 @@ u_strToJavaModifiedUTF8(
char *dest,
int32_t destCapacity,
int32_t *pDestLength,
- const UChar *src,
+ const char16_t *src,
int32_t srcLength,
UErrorCode *pErrorCode) {
int32_t reqLength=0;
uint32_t ch=0;
- uint8_t *pDest = (uint8_t *)dest;
- uint8_t *pDestLimit = pDest + destCapacity;
- const UChar *pSrcLimit;
+ const char16_t *pSrcLimit;
int32_t count;
/* args check */
if(U_FAILURE(*pErrorCode)){
- return NULL;
+ return nullptr;
}
- if( (src==NULL && srcLength!=0) || srcLength < -1 ||
- (dest==NULL && destCapacity!=0) || destCapacity<0
+ if( (src==nullptr && srcLength!=0) || srcLength < -1 ||
+ (dest==nullptr && destCapacity!=0) || destCapacity<0
) {
*pErrorCode = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
+ uint8_t *pDest = (uint8_t *)dest;
+ uint8_t *pDestLimit = pDest + destCapacity;
if(srcLength==-1) {
/* Convert NUL-terminated ASCII, then find the string length. */
@@ -1355,13 +1355,13 @@ u_strToJavaModifiedUTF8(
}
/* Faster loop without ongoing checking for pSrcLimit and pDestLimit. */
- pSrcLimit = (src!=NULL)?(src+srcLength):NULL;
+ pSrcLimit = (src!=nullptr)?(src+srcLength):nullptr;
for(;;) {
count = (int32_t)(pDestLimit - pDest);
srcLength = (int32_t)(pSrcLimit - src);
if(count >= srcLength && srcLength > 0 && *src <= 0x7f) {
/* fast ASCII loop */
- const UChar *prevSrc = src;
+ const char16_t *prevSrc = src;
int32_t delta;
while(src < pSrcLimit && (ch = *src) <= 0x7f && ch != 0) {
*pDest++=(uint8_t)ch;
@@ -1373,7 +1373,7 @@ u_strToJavaModifiedUTF8(
}
/*
* Each iteration of the inner loop progresses by at most 3 UTF-8
- * bytes and one UChar.
+ * bytes and one char16_t.
*/
count /= 3;
if(count > srcLength) {
diff --git a/Build/source/libs/icu/icu-src/source/common/utext.cpp b/Build/source/libs/icu/icu-src/source/common/utext.cpp
index 548e6a60f31..eb0a6984bd3 100644
--- a/Build/source/libs/icu/icu-src/source/common/utext.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/utext.cpp
@@ -124,13 +124,13 @@ utext_setNativeIndex(UText *ut, int64_t index) {
// The convention is that the index must always be on a code point boundary.
// Adjust the index position if it is in the middle of a surrogate pair.
if (ut->chunkOffset<ut->chunkLength) {
- UChar c= ut->chunkContents[ut->chunkOffset];
+ char16_t c= ut->chunkContents[ut->chunkOffset];
if (U16_IS_TRAIL(c)) {
if (ut->chunkOffset==0) {
ut->pFuncs->access(ut, ut->chunkNativeStart, false);
}
if (ut->chunkOffset>0) {
- UChar lead = ut->chunkContents[ut->chunkOffset-1];
+ char16_t lead = ut->chunkContents[ut->chunkOffset-1];
if (U16_IS_LEAD(lead)) {
ut->chunkOffset--;
}
@@ -151,7 +151,7 @@ utext_getPreviousNativeIndex(UText *ut) {
int32_t i = ut->chunkOffset - 1;
int64_t result;
if (i >= 0) {
- UChar c = ut->chunkContents[i];
+ char16_t c = ut->chunkContents[i];
if (U16_IS_TRAIL(c) == false) {
if (i <= ut->nativeIndexingLimit) {
result = ut->chunkNativeStart + i;
@@ -218,13 +218,16 @@ utext_current32(UText *ut) {
// leading surrogate. The attempt to access the trail will fail, but
// the original position before the unpaired lead still needs to be restored.
int64_t nativePosition = ut->chunkNativeLimit;
- int32_t originalOffset = ut->chunkOffset;
if (ut->pFuncs->access(ut, nativePosition, true)) {
trail = ut->chunkContents[ut->chunkOffset];
}
UBool r = ut->pFuncs->access(ut, nativePosition, false); // reverse iteration flag loads preceding chunk
- U_ASSERT(r==true);
- ut->chunkOffset = originalOffset;
+ U_ASSERT(r);
+ // Here we need to restore chunkOffset since the access functions were called with
+ // chunkNativeLimit but that is not where we were (we were 1 code unit before the
+ // limit). Restoring was originally added in ICU-4669 but did not support access
+ // functions that changed the chunk size, the following does.
+ ut->chunkOffset = ut->chunkLength - 1;
if(!r) {
return U_SENTINEL;
}
@@ -425,7 +428,7 @@ utext_previous32From(UText *ut, int64_t index) {
U_CAPI int32_t U_EXPORT2
utext_extract(UText *ut,
int64_t start, int64_t limit,
- UChar *dest, int32_t destCapacity,
+ char16_t *dest, int32_t destCapacity,
UErrorCode *status) {
return ut->pFuncs->extract(ut, start, limit, dest, destCapacity, status);
}
@@ -434,7 +437,7 @@ utext_extract(UText *ut,
U_CAPI UBool U_EXPORT2
utext_equals(const UText *a, const UText *b) {
- if (a==NULL || b==NULL ||
+ if (a==nullptr || b==nullptr ||
a->magic != UTEXT_MAGIC ||
b->magic != UTEXT_MAGIC) {
// Null or invalid arguments don't compare equal to anything.
@@ -485,7 +488,7 @@ utext_hasMetaData(const UText *ut)
U_CAPI int32_t U_EXPORT2
utext_replace(UText *ut,
int64_t nativeStart, int64_t nativeLimit,
- const UChar *replacementText, int32_t replacementLength,
+ const char16_t *replacementText, int32_t replacementLength,
UErrorCode *status)
{
if (U_FAILURE(*status)) {
@@ -527,7 +530,7 @@ utext_clone(UText *dest, const UText *src, UBool deep, UBool readOnly, UErrorCod
if (U_FAILURE(*status)) {
return result;
}
- if (result == NULL) {
+ if (result == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
return result;
}
@@ -580,16 +583,16 @@ utext_setup(UText *ut, int32_t extraSpace, UErrorCode *status) {
return ut;
}
- if (ut == NULL) {
+ if (ut == nullptr) {
// We need to heap-allocate storage for the new UText
int32_t spaceRequired = sizeof(UText);
if (extraSpace > 0) {
spaceRequired = sizeof(ExtendedUText) + extraSpace - sizeof(std::max_align_t);
}
ut = (UText *)uprv_malloc(spaceRequired);
- if (ut == NULL) {
+ if (ut == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
} else {
*ut = emptyText;
ut->flags |= UTEXT_HEAP_ALLOCATED;
@@ -607,7 +610,7 @@ utext_setup(UText *ut, int32_t extraSpace, UErrorCode *status) {
}
// If the ut is already open and there's a provider supplied close
// function, call it.
- if ((ut->flags & UTEXT_OPEN) && ut->pFuncs->close != NULL) {
+ if ((ut->flags & UTEXT_OPEN) && ut->pFuncs->close != nullptr) {
ut->pFuncs->close(ut);
}
ut->flags &= ~UTEXT_OPEN;
@@ -622,7 +625,7 @@ utext_setup(UText *ut, int32_t extraSpace, UErrorCode *status) {
ut->extraSize = 0;
}
ut->pExtra = uprv_malloc(extraSpace);
- if (ut->pExtra == NULL) {
+ if (ut->pExtra == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
} else {
ut->extraSize = extraSpace;
@@ -635,11 +638,11 @@ utext_setup(UText *ut, int32_t extraSpace, UErrorCode *status) {
// Initialize all remaining fields of the UText.
//
- ut->context = NULL;
- ut->chunkContents = NULL;
- ut->p = NULL;
- ut->q = NULL;
- ut->r = NULL;
+ ut->context = nullptr;
+ ut->chunkContents = nullptr;
+ ut->p = nullptr;
+ ut->q = nullptr;
+ ut->r = nullptr;
ut->a = 0;
ut->b = 0;
ut->c = 0;
@@ -652,8 +655,8 @@ utext_setup(UText *ut, int32_t extraSpace, UErrorCode *status) {
ut->privA = 0;
ut->privB = 0;
ut->privC = 0;
- ut->privP = NULL;
- if (ut->pExtra!=NULL && ut->extraSize>0)
+ ut->privP = nullptr;
+ if (ut->pExtra!=nullptr && ut->extraSize>0)
uprv_memset(ut->pExtra, 0, ut->extraSize);
}
@@ -663,7 +666,7 @@ utext_setup(UText *ut, int32_t extraSpace, UErrorCode *status) {
U_CAPI UText * U_EXPORT2
utext_close(UText *ut) {
- if (ut==NULL ||
+ if (ut==nullptr ||
ut->magic != UTEXT_MAGIC ||
(ut->flags & UTEXT_OPEN) == 0)
{
@@ -674,7 +677,7 @@ utext_close(UText *ut) {
// If the provider gave us a close function, call it now.
// This will clean up anything allocated specifically by the provider.
- if (ut->pFuncs->close != NULL) {
+ if (ut->pFuncs->close != nullptr) {
ut->pFuncs->close(ut);
}
ut->flags &= ~UTEXT_OPEN;
@@ -683,7 +686,7 @@ utext_close(UText *ut) {
// delete it.
if (ut->flags & UTEXT_EXTRA_HEAP_ALLOCATED) {
uprv_free(ut->pExtra);
- ut->pExtra = NULL;
+ ut->pExtra = nullptr;
ut->flags &= ~UTEXT_EXTRA_HEAP_ALLOCATED;
ut->extraSize = 0;
}
@@ -691,7 +694,7 @@ utext_close(UText *ut) {
// Zero out function table of the closed UText. This is a defensive move,
// intended to cause applications that inadvertently use a closed
// utext to crash with null pointer errors.
- ut->pFuncs = NULL;
+ ut->pFuncs = nullptr;
if (ut->flags & UTEXT_HEAP_ALLOCATED) {
// This UText was allocated by UText setup. We need to free it.
@@ -699,7 +702,7 @@ utext_close(UText *ut) {
// tries to reopen another UText using the deleted storage.
ut->magic = 0;
uprv_free(ut);
- ut = NULL;
+ ut = nullptr;
}
return ut;
}
@@ -772,7 +775,7 @@ static void adjustPointer(UText *dest, const void **destPtr, const UText *src) {
static UText * U_CALLCONV
shallowTextClone(UText * dest, const UText * src, UErrorCode * status) {
if (U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
int32_t srcExtraSize = src->extraSize;
@@ -849,8 +852,8 @@ U_CDECL_END
//------------------------------------------------------------------------------
// Chunk size.
-// Must be less than 85 (256/3), because of byte mapping from UChar indexes to native indexes.
-// Worst case is three native bytes to one UChar. (Supplemenaries are 4 native bytes
+// Must be less than 85 (256/3), because of byte mapping from char16_t indexes to native indexes.
+// Worst case is three native bytes to one char16_t. (Supplemenaries are 4 native bytes
// to two UChars.)
// The longest illegal byte sequence treated as a single error (and converted to U+FFFD)
// is a three-byte sequence (truncated four-byte sequence).
@@ -859,7 +862,7 @@ enum { UTF8_TEXT_CHUNK_SIZE=32 };
//
// UTF8Buf Two of these structs will be set up in the UText's extra allocated space.
-// Each contains the UChar chunk buffer, the to and from native maps, and
+// Each contains the char16_t chunk buffer, the to and from native maps, and
// header info.
//
// because backwards iteration fills the buffers starting at the end and
@@ -872,7 +875,7 @@ enum { UTF8_TEXT_CHUNK_SIZE=32 };
//
struct UTF8Buf {
- int32_t bufNativeStart; // Native index of first char in UChar buf
+ int32_t bufNativeStart; // Native index of first char in char16_t buf
int32_t bufNativeLimit; // Native index following last char in buf.
int32_t bufStartIdx; // First filled position in buf.
int32_t bufLimitIdx; // Limit of filled range in buf.
@@ -882,13 +885,13 @@ struct UTF8Buf {
// Set to bufNativeStart when filling forwards.
// Set to computed value when filling backwards.
- UChar buf[UTF8_TEXT_CHUNK_SIZE+4]; // The UChar buffer. Requires one extra position beyond the
+ char16_t buf[UTF8_TEXT_CHUNK_SIZE+4]; // The char16_t buffer. Requires one extra position beyond the
// the chunk size, to allow for surrogate at the end.
// Length must be identical to mapToNative array, below,
// because of the way indexing works when the array is
// filled backwards during a reverse iteration. Thus,
// the additional extra size.
- uint8_t mapToNative[UTF8_TEXT_CHUNK_SIZE+4]; // map UChar index in buf to
+ uint8_t mapToNative[UTF8_TEXT_CHUNK_SIZE+4]; // map char16_t index in buf to
// native offset from bufNativeStart.
// Requires two extra slots,
// one for a supplementary starting in the last normal position,
@@ -941,7 +944,7 @@ utf8TextAccess(UText *ut, int64_t index, UBool forward) {
// return;
//
const uint8_t *s8=(const uint8_t *)ut->context;
- UTF8Buf *u8b = NULL;
+ UTF8Buf *u8b = nullptr;
int32_t length = ut->b; // Length of original utf-8
int32_t ix= (int32_t)index; // Requested index, trimmed to 32 bits.
int32_t mapIndex = 0;
@@ -1209,7 +1212,7 @@ fillForward:
nulTerminated = true;
}
- UChar *buf = u8b_swap->buf;
+ char16_t *buf = u8b_swap->buf;
uint8_t *mapToNative = u8b_swap->mapToNative;
uint8_t *mapToUChars = u8b_swap->mapToUChars;
int32_t destIx = 0;
@@ -1223,7 +1226,7 @@ fillForward:
if (c>0 && c<0x80) {
// Special case ASCII range for speed.
// zero is excluded to simplify bounds checking.
- buf[destIx] = (UChar)c;
+ buf[destIx] = (char16_t)c;
mapToNative[destIx] = (uint8_t)(srcIx - ix);
mapToUChars[srcIx-ix] = (uint8_t)destIx;
srcIx++;
@@ -1317,7 +1320,7 @@ fillReverse:
ut->q = ut->p;
ut->p = u8b_swap;
- UChar *buf = u8b_swap->buf;
+ char16_t *buf = u8b_swap->buf;
uint8_t *mapToNative = u8b_swap->mapToNative;
uint8_t *mapToUChars = u8b_swap->mapToUChars;
int32_t toUCharsMapStart = ix - sizeof(UTF8Buf::mapToUChars) + 1;
@@ -1349,7 +1352,7 @@ fillReverse:
c = s8[srcIx];
if (c<0x80) {
// Special case ASCII range for speed.
- buf[destIx] = (UChar)c;
+ buf[destIx] = (char16_t)c;
U_ASSERT(toUCharsMapStart <= srcIx);
mapToUChars[srcIx - toUCharsMapStart] = (uint8_t)destIx;
mapToNative[destIx] = (uint8_t)(srcIx - toUCharsMapStart);
@@ -1367,7 +1370,7 @@ fillReverse:
// Store the character in UTF-16 buffer.
if (c<0x10000) {
- buf[destIx] = (UChar)c;
+ buf[destIx] = (char16_t)c;
mapToNative[destIx] = (uint8_t)(srcIx - toUCharsMapStart);
} else {
buf[destIx] = U16_TRAIL(c);
@@ -1414,8 +1417,8 @@ fillReverse:
// Inserts a Replacement Char rather than failing on invalid UTF-8
// Removes unnecessary features.
//
-static UChar*
-utext_strFromUTF8(UChar *dest,
+static char16_t*
+utext_strFromUTF8(char16_t *dest,
int32_t destCapacity,
int32_t *pDestLength,
const char* src,
@@ -1424,8 +1427,8 @@ utext_strFromUTF8(UChar *dest,
)
{
- UChar *pDest = dest;
- UChar *pDestLimit = (dest!=NULL)?(dest+destCapacity):NULL;
+ char16_t *pDest = dest;
+ char16_t *pDestLimit = (dest!=nullptr)?(dest+destCapacity):nullptr;
UChar32 ch=0;
int32_t index = 0;
int32_t reqLength = 0;
@@ -1435,11 +1438,11 @@ utext_strFromUTF8(UChar *dest,
while((index < srcLength)&&(pDest<pDestLimit)){
ch = pSrc[index++];
if(ch <=0x7f){
- *pDest++=(UChar)ch;
+ *pDest++=(char16_t)ch;
}else{
ch=utf8_nextCharSafeBody(pSrc, &index, srcLength, ch, -3);
if(U_IS_BMP(ch)){
- *(pDest++)=(UChar)ch;
+ *(pDest++)=(char16_t)ch;
}else{
*(pDest++)=U16_LEAD(ch);
if(pDest<pDestLimit){
@@ -1479,12 +1482,12 @@ utext_strFromUTF8(UChar *dest,
static int32_t U_CALLCONV
utf8TextExtract(UText *ut,
int64_t start, int64_t limit,
- UChar *dest, int32_t destCapacity,
+ char16_t *dest, int32_t destCapacity,
UErrorCode *pErrorCode) {
if(U_FAILURE(*pErrorCode)) {
return 0;
}
- if(destCapacity<0 || (dest==NULL && destCapacity>0)) {
+ if(destCapacity<0 || (dest==nullptr && destCapacity>0)) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -1579,7 +1582,7 @@ utf8TextClone(UText *dest, const UText *src, UBool deep, UErrorCode *status)
if (deep && U_SUCCESS(*status)) {
int32_t len = (int32_t)utext_nativeLength((UText *)src);
char *copyStr = (char *)uprv_malloc(len+1);
- if (copyStr == NULL) {
+ if (copyStr == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
} else {
uprv_memcpy(copyStr, src->context, len+1);
@@ -1599,7 +1602,7 @@ utf8TextClose(UText *ut) {
if (ut->providerProperties & I32_FLAG(UTEXT_PROVIDER_OWNS_TEXT)) {
char *s = (char *)ut->context;
uprv_free(s);
- ut->context = NULL;
+ ut->context = nullptr;
}
}
@@ -1614,14 +1617,14 @@ static const struct UTextFuncs utf8Funcs =
utf8TextLength,
utf8TextAccess,
utf8TextExtract,
- NULL, /* replace*/
- NULL, /* copy */
+ nullptr, /* replace*/
+ nullptr, /* copy */
utf8TextMapOffsetToNative,
utf8TextMapIndexToUTF16,
utf8TextClose,
- NULL, // spare 1
- NULL, // spare 2
- NULL // spare 3
+ nullptr, // spare 1
+ nullptr, // spare 2
+ nullptr // spare 3
};
@@ -1630,15 +1633,15 @@ static const char gEmptyString[] = {0};
U_CAPI UText * U_EXPORT2
utext_openUTF8(UText *ut, const char *s, int64_t length, UErrorCode *status) {
if(U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
- if(s==NULL && length==0) {
+ if(s==nullptr && length==0) {
s = gEmptyString;
}
- if(s==NULL || length<-1 || length>INT32_MAX) {
+ if(s==nullptr || length<-1 || length>INT32_MAX) {
*status=U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
ut = utext_setup(ut, sizeof(UTF8Buf) * 2, status);
@@ -1688,7 +1691,7 @@ struct ReplExtra {
* Chunk UChars.
* +1 to simplify filling with surrogate pair at the end.
*/
- UChar s[REP_TEXT_CHUNK_SIZE+1];
+ char16_t s[REP_TEXT_CHUNK_SIZE+1];
};
@@ -1701,7 +1704,7 @@ repTextClone(UText *dest, const UText *src, UBool deep, UErrorCode *status) {
// For deep clones, make a copy of the Replaceable.
// The copied Replaceable storage is owned by the newly created UText clone.
- // A non-NULL pointer in UText.p is the signal to the close() function to delete
+ // A non-nullptr pointer in UText.p is the signal to the close() function to delete
// it.
//
if (deep && U_SUCCESS(*status)) {
@@ -1724,7 +1727,7 @@ repTextClose(UText *ut) {
if (ut->providerProperties & I32_FLAG(UTEXT_PROVIDER_OWNS_TEXT)) {
Replaceable *rep = (Replaceable *)ut->context;
delete rep;
- ut->context = NULL;
+ ut->context = nullptr;
}
}
@@ -1751,7 +1754,7 @@ repTextAccess(UText *ut, int64_t index, UBool forward) {
* Compute start/limit boundaries around index, for a segment of text
* to be extracted.
* To allow for the possibility that our user gave an index to the trailing
- * half of a surrogate pair, we must request one extra preceding UChar when
+ * half of a surrogate pair, we must request one extra preceding char16_t when
* going in the forward direction. This will ensure that the buffer has the
* entire code point at the specified index.
*/
@@ -1799,7 +1802,7 @@ repTextAccess(UText *ut, int64_t index, UBool forward) {
// Figure out the bounds of the chunk to extract for reverse iteration.
// Need to worry about chunk not splitting surrogate pairs, and while still
// containing the data we need.
- // Fix by requesting a chunk that includes an extra UChar at the end.
+ // Fix by requesting a chunk that includes an extra char16_t at the end.
// If this turns out to be a lead surrogate, we can lop it off and still have
// the data we wanted.
ut->chunkNativeStart = index32 + 1 - REP_TEXT_CHUNK_SIZE;
@@ -1834,7 +1837,7 @@ repTextAccess(UText *ut, int64_t index, UBool forward) {
}
}
- // if the first UChar in the chunk could be the trailing half of a surrogate pair,
+ // if the first char16_t in the chunk could be the trailing half of a surrogate pair,
// trim it off.
if(ut->chunkNativeStart>0 && U16_IS_TRAIL(ex->s[0])) {
++(ut->chunkContents);
@@ -1857,7 +1860,7 @@ repTextAccess(UText *ut, int64_t index, UBool forward) {
static int32_t U_CALLCONV
repTextExtract(UText *ut,
int64_t start, int64_t limit,
- UChar *dest, int32_t destCapacity,
+ char16_t *dest, int32_t destCapacity,
UErrorCode *status) {
const Replaceable *rep=(const Replaceable *)ut->context;
int32_t length=rep->length();
@@ -1865,7 +1868,7 @@ repTextExtract(UText *ut,
if(U_FAILURE(*status)) {
return 0;
}
- if(destCapacity<0 || (dest==NULL && destCapacity>0)) {
+ if(destCapacity<0 || (dest==nullptr && destCapacity>0)) {
*status=U_ILLEGAL_ARGUMENT_ERROR;
}
if(start>limit) {
@@ -1900,7 +1903,7 @@ repTextExtract(UText *ut,
static int32_t U_CALLCONV
repTextReplace(UText *ut,
int64_t start, int64_t limit,
- const UChar *src, int32_t length,
+ const char16_t *src, int32_t length,
UErrorCode *status) {
Replaceable *rep=(Replaceable *)ut->context;
int32_t oldLength;
@@ -1908,7 +1911,7 @@ repTextReplace(UText *ut,
if(U_FAILURE(*status)) {
return 0;
}
- if(src==NULL && length!=0) {
+ if(src==nullptr && length!=0) {
*status=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -2025,12 +2028,12 @@ static const struct UTextFuncs repFuncs =
repTextExtract,
repTextReplace,
repTextCopy,
- NULL, // MapOffsetToNative,
- NULL, // MapIndexToUTF16,
+ nullptr, // MapOffsetToNative,
+ nullptr, // MapIndexToUTF16,
repTextClose,
- NULL, // spare 1
- NULL, // spare 2
- NULL // spare 3
+ nullptr, // spare 1
+ nullptr, // spare 2
+ nullptr // spare 3
};
@@ -2038,11 +2041,11 @@ U_CAPI UText * U_EXPORT2
utext_openReplaceable(UText *ut, Replaceable *rep, UErrorCode *status)
{
if(U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
- if(rep==NULL) {
+ if(rep==nullptr) {
*status=U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
ut = utext_setup(ut, sizeof(ReplExtra), status);
if(U_FAILURE(*status)) {
@@ -2077,7 +2080,7 @@ U_CDECL_END
// Use of UText data members:
// context pointer to UnicodeString
// p pointer to UnicodeString IF this UText owns the string
-// and it must be deleted on close(). NULL otherwise.
+// and it must be deleted on close(). nullptr otherwise.
//
//------------------------------------------------------------------------------
@@ -2091,7 +2094,7 @@ unistrTextClone(UText *dest, const UText *src, UBool deep, UErrorCode *status) {
// For deep clones, make a copy of the UnicodeSring.
// The copied UnicodeString storage is owned by the newly created UText clone.
- // A non-NULL pointer in UText.p is the signal to the close() function to delete
+ // A non-nullptr pointer in UText.p is the signal to the close() function to delete
// the UText.
//
if (deep && U_SUCCESS(*status)) {
@@ -2113,7 +2116,7 @@ unistrTextClose(UText *ut) {
if (ut->providerProperties & I32_FLAG(UTEXT_PROVIDER_OWNS_TEXT)) {
UnicodeString *str = (UnicodeString *)ut->context;
delete str;
- ut->context = NULL;
+ ut->context = nullptr;
}
}
@@ -2139,7 +2142,7 @@ unistrTextAccess(UText *ut, int64_t index, UBool forward) {
static int32_t U_CALLCONV
unistrTextExtract(UText *t,
int64_t start, int64_t limit,
- UChar *dest, int32_t destCapacity,
+ char16_t *dest, int32_t destCapacity,
UErrorCode *pErrorCode) {
const UnicodeString *us=(const UnicodeString *)t->context;
int32_t length=us->length();
@@ -2147,7 +2150,7 @@ unistrTextExtract(UText *t,
if(U_FAILURE(*pErrorCode)) {
return 0;
}
- if(destCapacity<0 || (dest==NULL && destCapacity>0)) {
+ if(destCapacity<0 || (dest==nullptr && destCapacity>0)) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
}
if(start<0 || start>limit) {
@@ -2159,7 +2162,7 @@ unistrTextExtract(UText *t,
int32_t limit32 = limit<length ? us->getChar32Start((int32_t)limit) : length;
length=limit32-start32;
- if (destCapacity>0 && dest!=NULL) {
+ if (destCapacity>0 && dest!=nullptr) {
int32_t trimmedLength = length;
if(trimmedLength>destCapacity) {
trimmedLength=destCapacity;
@@ -2176,7 +2179,7 @@ unistrTextExtract(UText *t,
static int32_t U_CALLCONV
unistrTextReplace(UText *ut,
int64_t start, int64_t limit,
- const UChar *src, int32_t length,
+ const char16_t *src, int32_t length,
UErrorCode *pErrorCode) {
UnicodeString *us=(UnicodeString *)ut->context;
int32_t oldLength;
@@ -2184,7 +2187,7 @@ unistrTextReplace(UText *ut,
if(U_FAILURE(*pErrorCode)) {
return 0;
}
- if(src==NULL && length!=0) {
+ if(src==nullptr && length!=0) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
}
if(start>limit) {
@@ -2279,12 +2282,12 @@ static const struct UTextFuncs unistrFuncs =
unistrTextExtract,
unistrTextReplace,
unistrTextCopy,
- NULL, // MapOffsetToNative,
- NULL, // MapIndexToUTF16,
+ nullptr, // MapOffsetToNative,
+ nullptr, // MapIndexToUTF16,
unistrTextClose,
- NULL, // spare 1
- NULL, // spare 2
- NULL // spare 3
+ nullptr, // spare 1
+ nullptr, // spare 2
+ nullptr // spare 3
};
@@ -2308,7 +2311,7 @@ utext_openConstUnicodeString(UText *ut, const UnicodeString *s, UErrorCode *stat
if (U_SUCCESS(*status) && s->isBogus()) {
// The UnicodeString is bogus, but we still need to detach the UText
// from whatever it was hooked to before, if anything.
- utext_openUChars(ut, NULL, 0, status);
+ utext_openUChars(ut, nullptr, 0, status);
*status = U_ILLEGAL_ARGUMENT_ERROR;
return ut;
}
@@ -2331,7 +2334,7 @@ utext_openConstUnicodeString(UText *ut, const UnicodeString *s, UErrorCode *stat
//------------------------------------------------------------------------------
//
-// UText implementation for const UChar * strings
+// UText implementation for const char16_t * strings
//
// Use of UText data members:
// context pointer to UnicodeString
@@ -2351,7 +2354,7 @@ ucstrTextClone(UText *dest, const UText * src, UBool deep, UErrorCode * status)
// For deep clones, make a copy of the string.
// The copied storage is owned by the newly created clone.
- // A non-NULL pointer in UText.p is the signal to the close() function to delete
+ // A non-nullptr pointer in UText.p is the signal to the close() function to delete
// it.
//
if (deep && U_SUCCESS(*status)) {
@@ -2359,9 +2362,9 @@ ucstrTextClone(UText *dest, const UText * src, UBool deep, UErrorCode * status)
int32_t len = (int32_t)utext_nativeLength(dest);
// The cloned string IS going to be NUL terminated, whether or not the original was.
- const UChar *srcStr = (const UChar *)src->context;
- UChar *copyStr = (UChar *)uprv_malloc((len+1) * sizeof(UChar));
- if (copyStr == NULL) {
+ const char16_t *srcStr = (const char16_t *)src->context;
+ char16_t *copyStr = (char16_t *)uprv_malloc((len+1) * sizeof(char16_t));
+ if (copyStr == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
} else {
int64_t i;
@@ -2383,9 +2386,9 @@ ucstrTextClose(UText *ut) {
// All that needs to be done here is delete the string if the UText
// owns it. This occurs if the UText was created by cloning.
if (ut->providerProperties & I32_FLAG(UTEXT_PROVIDER_OWNS_TEXT)) {
- UChar *s = (UChar *)ut->context;
+ char16_t *s = (char16_t *)ut->context;
uprv_free(s);
- ut->context = NULL;
+ ut->context = nullptr;
}
}
@@ -2397,7 +2400,7 @@ ucstrTextLength(UText *ut) {
// null terminated, we don't yet know the length. Scan for it.
// Access is not convenient for doing this
// because the current iteration position can't be changed.
- const UChar *str = (const UChar *)ut->context;
+ const char16_t *str = (const char16_t *)ut->context;
for (;;) {
if (str[ut->chunkNativeLimit] == 0) {
break;
@@ -2415,7 +2418,7 @@ ucstrTextLength(UText *ut) {
static UBool U_CALLCONV
ucstrTextAccess(UText *ut, int64_t index, UBool forward) {
- const UChar *str = (const UChar *)ut->context;
+ const char16_t *str = (const char16_t *)ut->context;
// pin the requested index to the bounds of the string,
// and set current iteration position.
@@ -2505,18 +2508,18 @@ breakout:
static int32_t U_CALLCONV
ucstrTextExtract(UText *ut,
int64_t start, int64_t limit,
- UChar *dest, int32_t destCapacity,
+ char16_t *dest, int32_t destCapacity,
UErrorCode *pErrorCode)
{
if(U_FAILURE(*pErrorCode)) {
return 0;
}
- if(destCapacity<0 || (dest==NULL && destCapacity>0) || start>limit) {
+ if(destCapacity<0 || (dest==nullptr && destCapacity>0) || start>limit) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
- //const UChar *s=(const UChar *)ut->context;
+ //const char16_t *s=(const char16_t *)ut->context;
int32_t si, di;
int32_t start32;
@@ -2526,7 +2529,7 @@ ucstrTextExtract(UText *ut,
// Pins 'start' to the length of the string, if it came in out-of-bounds.
// Snaps 'start' to the beginning of a code point.
ucstrTextAccess(ut, start, true);
- const UChar *s=ut->chunkContents;
+ const char16_t *s=ut->chunkContents;
start32 = ut->chunkOffset;
int32_t strLength=(int32_t)ut->a;
@@ -2596,31 +2599,31 @@ static const struct UTextFuncs ucstrFuncs =
ucstrTextLength,
ucstrTextAccess,
ucstrTextExtract,
- NULL, // Replace
- NULL, // Copy
- NULL, // MapOffsetToNative,
- NULL, // MapIndexToUTF16,
+ nullptr, // Replace
+ nullptr, // Copy
+ nullptr, // MapOffsetToNative,
+ nullptr, // MapIndexToUTF16,
ucstrTextClose,
- NULL, // spare 1
- NULL, // spare 2
- NULL, // spare 3
+ nullptr, // spare 1
+ nullptr, // spare 2
+ nullptr, // spare 3
};
U_CDECL_END
-static const UChar gEmptyUString[] = {0};
+static const char16_t gEmptyUString[] = {0};
U_CAPI UText * U_EXPORT2
-utext_openUChars(UText *ut, const UChar *s, int64_t length, UErrorCode *status) {
+utext_openUChars(UText *ut, const char16_t *s, int64_t length, UErrorCode *status) {
if (U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
- if(s==NULL && length==0) {
+ if(s==nullptr && length==0) {
s = gEmptyUString;
}
- if (s==NULL || length < -1 || length>INT32_MAX) {
+ if (s==nullptr || length < -1 || length>INT32_MAX) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
ut = utext_setup(ut, 0, status);
if (U_SUCCESS(*status)) {
@@ -2667,7 +2670,7 @@ charIterTextClose(UText *ut) {
// owns it. This occurs if the UText was created by cloning.
CharacterIterator *ci = (CharacterIterator *)ut->r;
delete ci;
- ut->r = NULL;
+ ut->r = nullptr;
}
static int64_t U_CALLCONV
@@ -2697,7 +2700,7 @@ charIterTextAccess(UText *ut, int64_t index, UBool forward) {
// Find the native index of the start of the buffer containing what we want.
neededIndex -= neededIndex % CIBufSize;
- UChar *buf = NULL;
+ char16_t *buf = nullptr;
UBool needChunkSetup = true;
int i;
if (ut->chunkNativeStart == neededIndex) {
@@ -2705,17 +2708,17 @@ charIterTextAccess(UText *ut, int64_t index, UBool forward) {
needChunkSetup = false;
} else if (ut->b == neededIndex) {
// The first buffer (buffer p) has what we need.
- buf = (UChar *)ut->p;
+ buf = (char16_t *)ut->p;
} else if (ut->c == neededIndex) {
// The second buffer (buffer q) has what we need.
- buf = (UChar *)ut->q;
+ buf = (char16_t *)ut->q;
} else {
// Neither buffer already has what we need.
// Load new data from the character iterator.
// Use the buf that is not the current buffer.
- buf = (UChar *)ut->p;
+ buf = (char16_t *)ut->p;
if (ut->p == ut->chunkContents) {
- buf = (UChar *)ut->q;
+ buf = (char16_t *)ut->q;
}
ci->setIndex(neededIndex);
for (i=0; i<CIBufSize; i++) {
@@ -2748,13 +2751,13 @@ charIterTextAccess(UText *ut, int64_t index, UBool forward) {
static UText * U_CALLCONV
charIterTextClone(UText *dest, const UText *src, UBool deep, UErrorCode * status) {
if (U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
if (deep) {
// There is no CharacterIterator API for cloning the underlying text storage.
*status = U_UNSUPPORTED_ERROR;
- return NULL;
+ return nullptr;
} else {
CharacterIterator *srcCI =(CharacterIterator *)src->context;
srcCI = srcCI->clone();
@@ -2774,13 +2777,13 @@ charIterTextClone(UText *dest, const UText *src, UBool deep, UErrorCode * status
static int32_t U_CALLCONV
charIterTextExtract(UText *ut,
int64_t start, int64_t limit,
- UChar *dest, int32_t destCapacity,
+ char16_t *dest, int32_t destCapacity,
UErrorCode *status)
{
if(U_FAILURE(*status)) {
return 0;
}
- if(destCapacity<0 || (dest==NULL && destCapacity>0) || start>limit) {
+ if(destCapacity<0 || (dest==nullptr && destCapacity>0) || start>limit) {
*status=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -2823,14 +2826,14 @@ static const struct UTextFuncs charIterFuncs =
charIterTextLength,
charIterTextAccess,
charIterTextExtract,
- NULL, // Replace
- NULL, // Copy
- NULL, // MapOffsetToNative,
- NULL, // MapIndexToUTF16,
+ nullptr, // Replace
+ nullptr, // Copy
+ nullptr, // MapOffsetToNative,
+ nullptr, // MapIndexToUTF16,
charIterTextClose,
- NULL, // spare 1
- NULL, // spare 2
- NULL // spare 3
+ nullptr, // spare 1
+ nullptr, // spare 2
+ nullptr // spare 3
};
U_CDECL_END
@@ -2838,17 +2841,17 @@ U_CDECL_END
U_CAPI UText * U_EXPORT2
utext_openCharacterIterator(UText *ut, CharacterIterator *ci, UErrorCode *status) {
if (U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
if (ci->startIndex() > 0) {
// No support for CharacterIterators that do not start indexing from zero.
*status = U_UNSUPPORTED_ERROR;
- return NULL;
+ return nullptr;
}
// Extra space in UText for 2 buffers of CIBufSize UChars each.
- int32_t extraSpace = 2 * CIBufSize * sizeof(UChar);
+ int32_t extraSpace = 2 * CIBufSize * sizeof(char16_t);
ut = utext_setup(ut, extraSpace, status);
if (U_SUCCESS(*status)) {
ut->pFuncs = &charIterFuncs;
@@ -2857,7 +2860,7 @@ utext_openCharacterIterator(UText *ut, CharacterIterator *ci, UErrorCode *status
ut->a = ci->endIndex(); // Length of text
ut->p = ut->pExtra; // First buffer
ut->b = -1; // Native index of first buffer contents
- ut->q = (UChar*)ut->pExtra+CIBufSize; // Second buffer
+ ut->q = (char16_t*)ut->pExtra+CIBufSize; // Second buffer
ut->c = -1; // Native index of second buffer contents
// Initialize current chunk contents to be empty.
@@ -2866,7 +2869,7 @@ utext_openCharacterIterator(UText *ut, CharacterIterator *ci, UErrorCode *status
// so that getNativeIndex() will correctly compute to zero
// if no call to Access() has ever been made. They can't be both
// zero without Access() thinking that the chunk is valid.
- ut->chunkContents = (UChar *)ut->p;
+ ut->chunkContents = (char16_t *)ut->p;
ut->chunkNativeStart = -1;
ut->chunkOffset = 1;
ut->chunkNativeLimit = 0;
diff --git a/Build/source/libs/icu/icu-src/source/common/utf_impl.cpp b/Build/source/libs/icu/icu-src/source/common/utf_impl.cpp
index a1f9c6529a7..827a82daf40 100644
--- a/Build/source/libs/icu/icu-src/source/common/utf_impl.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/utf_impl.cpp
@@ -213,7 +213,7 @@ utf8_appendCharSafeBody(uint8_t *s, int32_t i, int32_t length, UChar32 c, UBool
}
}
/* c>0x10ffff or not enough space, write an error value */
- if(pIsError!=NULL) {
+ if(pIsError!=nullptr) {
*pIsError=true;
} else {
length-=i;
diff --git a/Build/source/libs/icu/icu-src/source/common/util.cpp b/Build/source/libs/icu/icu-src/source/common/util.cpp
index 3dcc05578b7..f6a13aa445d 100644
--- a/Build/source/libs/icu/icu-src/source/common/util.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/util.cpp
@@ -15,16 +15,16 @@
#include "patternprops.h"
#include "util.h"
-// Define UChar constants using hex for EBCDIC compatibility
+// Define char16_t constants using hex for EBCDIC compatibility
-static const UChar BACKSLASH = 0x005C; /*\*/
-static const UChar UPPER_U = 0x0055; /*U*/
-static const UChar LOWER_U = 0x0075; /*u*/
-static const UChar APOSTROPHE = 0x0027; // '\''
-static const UChar SPACE = 0x0020; // ' '
+static const char16_t BACKSLASH = 0x005C; /*\*/
+static const char16_t UPPER_U = 0x0055; /*U*/
+static const char16_t LOWER_U = 0x0075; /*u*/
+static const char16_t APOSTROPHE = 0x0027; // '\''
+static const char16_t SPACE = 0x0020; // ' '
// "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
-static const UChar DIGITS[] = {
+static const char16_t DIGITS[] = {
48,49,50,51,52,53,54,55,56,57,
65,66,67,68,69,70,71,72,73,74,
75,76,77,78,79,80,81,82,83,84,
@@ -37,12 +37,12 @@ UnicodeString& ICU_Utility::appendNumber(UnicodeString& result, int32_t n,
int32_t radix, int32_t minDigits) {
if (radix < 2 || radix > 36) {
// Bogus radix
- return result.append((UChar)63/*?*/);
+ return result.append((char16_t)63/*?*/);
}
// Handle negatives
if (n < 0) {
n = -n;
- result.append((UChar)45/*-*/);
+ result.append((char16_t)45/*-*/);
}
// First determine the number of digits
int32_t nn = n;
@@ -122,9 +122,9 @@ UnicodeString &ICU_Utility::escape(UnicodeString& result, UChar32 c) {
/*
int32_t ICU_Utility::quotedIndexOf(const UnicodeString& text,
int32_t start, int32_t limit,
- UChar charToFind) {
+ char16_t charToFind) {
for (int32_t i=start; i<limit; ++i) {
- UChar c = text.charAt(i);
+ char16_t c = text.charAt(i);
if (c == BACKSLASH) {
++i;
} else if (c == APOSTROPHE) {
@@ -149,7 +149,7 @@ int32_t ICU_Utility::quotedIndexOf(const UnicodeString& text,
int32_t ICU_Utility::skipWhitespace(const UnicodeString& str, int32_t& pos,
UBool advance) {
int32_t p = pos;
- const UChar* s = str.getBuffer();
+ const char16_t* s = str.getBuffer();
p = (int32_t)(PatternProps::skipWhiteSpace(s + p, str.length() - p) - s);
if (advance) {
pos = p;
@@ -212,7 +212,7 @@ int32_t ICU_Utility::skipWhitespace(const UnicodeString& str, int32_t& pos,
* @return true if 'ch' is seen preceded by zero or more
* whitespace characters.
*/
-UBool ICU_Utility::parseChar(const UnicodeString& id, int32_t& pos, UChar ch) {
+UBool ICU_Utility::parseChar(const UnicodeString& id, int32_t& pos, char16_t ch) {
int32_t start = pos;
skipWhitespace(id, pos, true);
if (pos == id.length() ||
@@ -292,7 +292,7 @@ int32_t ICU_Utility::parsePattern(const UnicodeString& pat,
int32_t ICU_Utility::parseAsciiInteger(const UnicodeString& str, int32_t& pos) {
int32_t result = 0;
- UChar c;
+ char16_t c;
while (pos < str.length() && (c = str.charAt(pos)) >= u'0' && c <= u'9') {
result = result * 10 + (c - u'0');
pos++;
@@ -425,7 +425,7 @@ void ICU_Utility::appendToRule(UnicodeString& rule,
const UnicodeMatcher* matcher,
UBool escapeUnprintable,
UnicodeString& quoteBuf) {
- if (matcher != NULL) {
+ if (matcher != nullptr) {
UnicodeString pat;
appendToRule(rule, matcher->toPattern(pat, escapeUnprintable),
true, escapeUnprintable, quoteBuf);
diff --git a/Build/source/libs/icu/icu-src/source/common/util.h b/Build/source/libs/icu/icu-src/source/common/util.h
index 4a9ae831de3..cf71b9623ea 100644
--- a/Build/source/libs/icu/icu-src/source/common/util.h
+++ b/Build/source/libs/icu/icu-src/source/common/util.h
@@ -94,7 +94,7 @@ class U_COMMON_API ICU_Utility /* not : public UObject because all methods are s
//?FOR FUTURE USE. DISABLE FOR NOW for coverage reasons.
// static int32_t quotedIndexOf(const UnicodeString& text,
// int32_t start, int32_t limit,
-// UChar c);
+// char16_t c);
/**
* Skip over a sequence of zero or more white space characters at pos.
@@ -140,7 +140,7 @@ class U_COMMON_API ICU_Utility /* not : public UObject because all methods are s
* @return true if 'ch' is seen preceded by zero or more
* whitespace characters.
*/
- static UBool parseChar(const UnicodeString& id, int32_t& pos, UChar ch);
+ static UBool parseChar(const UnicodeString& id, int32_t& pos, char16_t ch);
/**
* Parse a pattern string starting at offset pos. Keywords are
diff --git a/Build/source/libs/icu/icu-src/source/common/util_props.cpp b/Build/source/libs/icu/icu-src/source/common/util_props.cpp
index d6ae052214c..5991769d068 100644
--- a/Build/source/libs/icu/icu-src/source/common/util_props.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/util_props.cpp
@@ -91,8 +91,8 @@ int32_t ICU_Utility::parsePattern(const UnicodeString& rule, int32_t pos, int32_
int32_t p;
int32_t intCount = 0; // number of integers parsed
for (int32_t i=0; i<pattern.length(); ++i) {
- UChar cpat = pattern.charAt(i);
- UChar c;
+ char16_t cpat = pattern.charAt(i);
+ char16_t c;
switch (cpat) {
case 32 /*' '*/:
if (pos >= limit) {
@@ -120,7 +120,7 @@ int32_t ICU_Utility::parsePattern(const UnicodeString& rule, int32_t pos, int32_
if (pos >= limit) {
return -1;
}
- c = (UChar) u_tolower(rule.charAt(pos++));
+ c = (char16_t) u_tolower(rule.charAt(pos++));
if (c != cpat) {
return -1;
}
diff --git a/Build/source/libs/icu/icu-src/source/common/utrace.cpp b/Build/source/libs/icu/icu-src/source/common/utrace.cpp
index f7b8ade6743..1f536d5643d 100644
--- a/Build/source/libs/icu/icu-src/source/common/utrace.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/utrace.cpp
@@ -18,10 +18,10 @@
#include "ucln_cmn.h"
-static UTraceEntry *pTraceEntryFunc = NULL;
-static UTraceExit *pTraceExitFunc = NULL;
-static UTraceData *pTraceDataFunc = NULL;
-static const void *gTraceContext = NULL;
+static UTraceEntry *pTraceEntryFunc = nullptr;
+static UTraceExit *pTraceExitFunc = nullptr;
+static UTraceData *pTraceDataFunc = nullptr;
+static const void *gTraceContext = nullptr;
/**
* \var utrace_level
@@ -32,7 +32,7 @@ utrace_level = UTRACE_ERROR;
U_CAPI void U_EXPORT2
utrace_entry(int32_t fnNumber) {
- if (pTraceEntryFunc != NULL) {
+ if (pTraceEntryFunc != nullptr) {
(*pTraceEntryFunc)(gTraceContext, fnNumber);
}
}
@@ -46,7 +46,7 @@ static const char gExitFmtPtrStatus[] = "Returns %d. Status = %p.";
U_CAPI void U_EXPORT2
utrace_exit(int32_t fnNumber, int32_t returnType, ...) {
- if (pTraceExitFunc != NULL) {
+ if (pTraceExitFunc != nullptr) {
va_list args;
const char *fmt;
@@ -80,7 +80,7 @@ utrace_exit(int32_t fnNumber, int32_t returnType, ...) {
U_CAPI void U_EXPORT2
utrace_data(int32_t fnNumber, int32_t level, const char *fmt, ...) {
- if (pTraceDataFunc != NULL) {
+ if (pTraceDataFunc != nullptr) {
va_list args;
va_start(args, fmt );
(*pTraceDataFunc)(gTraceContext, fnNumber, level, fmt, args);
@@ -117,9 +117,9 @@ static void outputChar(char c, char *outBuf, int32_t *outIx, int32_t capacity, i
outBuf[*outIx] = c;
}
if (c != 0) {
- /* Nulls only appear as end-of-string terminators. Move them to the output
+ /* NULs only appear as end-of-string terminators. Move them to the output
* buffer, but do not update the length of the buffer, so that any
- * following output will overwrite the null. */
+ * following output will overwrite the NUL. */
(*outIx)++;
}
}
@@ -157,7 +157,7 @@ static void outputPtrBytes(void *val, char *outBuf, int32_t *outIx, int32_t capa
static void outputString(const char *s, char *outBuf, int32_t *outIx, int32_t capacity, int32_t indent) {
int32_t i = 0;
char c;
- if (s==NULL) {
+ if (s==nullptr) {
s = "*NULL*";
}
do {
@@ -168,12 +168,12 @@ static void outputString(const char *s, char *outBuf, int32_t *outIx, int32_t ca
-static void outputUString(const UChar *s, int32_t len,
+static void outputUString(const char16_t *s, int32_t len,
char *outBuf, int32_t *outIx, int32_t capacity, int32_t indent) {
int32_t i = 0;
- UChar c;
- if (s==NULL) {
- outputString(NULL, outBuf, outIx, capacity, indent);
+ char16_t c;
+ if (s==nullptr) {
+ outputString(nullptr, outBuf, outIx, capacity, indent);
return;
}
@@ -205,7 +205,7 @@ utrace_vformat(char *outBuf, int32_t capacity, int32_t indent, const char *fmt,
/* Literal character, not part of a %sequence. Just copy it to the output. */
outputChar(fmtC, outBuf, &outIx, capacity, indent);
if (fmtC == 0) {
- /* We hit the null that terminates the format string.
+ /* We hit the NUL that terminates the format string.
* This is the normal (and only) exit from the loop that
* interprets the format
*/
@@ -225,16 +225,16 @@ utrace_vformat(char *outBuf, int32_t capacity, int32_t indent, const char *fmt,
break;
case 's':
- /* char * string, null terminated. */
+ /* char * string, NUL terminated. */
ptrArg = va_arg(args, char *);
outputString((const char *)ptrArg, outBuf, &outIx, capacity, indent);
break;
case 'S':
- /* UChar * string, with length, len==-1 for null terminated. */
+ /* char16_t * string, with length, len==-1 for NUL terminated. */
ptrArg = va_arg(args, char *); /* Ptr */
intArg =(int32_t)va_arg(args, int32_t); /* Length */
- outputUString((const UChar *)ptrArg, intArg, outBuf, &outIx, capacity, indent);
+ outputUString((const char16_t *)ptrArg, intArg, outBuf, &outIx, capacity, indent);
break;
case 'b':
@@ -269,7 +269,7 @@ utrace_vformat(char *outBuf, int32_t capacity, int32_t indent, const char *fmt,
case 0:
/* Single '%' at end of fmt string. Output as literal '%'.
- * Back up index into format string so that the terminating null will be
+ * Back up index into format string so that the terminating NUL will be
* re-fetched in the outer loop, causing it to terminate.
*/
outputChar('%', outBuf, &outIx, capacity, indent);
@@ -299,7 +299,7 @@ utrace_vformat(char *outBuf, int32_t capacity, int32_t indent, const char *fmt,
i64Ptr = (int64_t *)i8Ptr;
ptrPtr = (void **)i8Ptr;
vectorLen =(int32_t)va_arg(args, int32_t);
- if (ptrPtr == NULL) {
+ if (ptrPtr == nullptr) {
outputString("*NULL* ", outBuf, &outIx, capacity, indent);
} else {
for (i=0; i<vectorLen || vectorLen==-1; i++) {
@@ -323,28 +323,28 @@ utrace_vformat(char *outBuf, int32_t capacity, int32_t indent, const char *fmt,
case 'p':
charsToOutput = 0;
outputPtrBytes(*ptrPtr, outBuf, &outIx, capacity);
- longArg = *ptrPtr==NULL? 0: 1; /* test for null terminated array. */
+ longArg = *ptrPtr==nullptr? 0: 1; /* test for nullptr terminated array. */
ptrPtr++;
break;
case 'c':
charsToOutput = 0;
outputChar(*i8Ptr, outBuf, &outIx, capacity, indent);
- longArg = *i8Ptr; /* for test for null terminated array. */
+ longArg = *i8Ptr; /* for test for nullptr terminated array. */
i8Ptr++;
break;
case 's':
charsToOutput = 0;
outputString((const char *)*ptrPtr, outBuf, &outIx, capacity, indent);
outputChar('\n', outBuf, &outIx, capacity, indent);
- longArg = *ptrPtr==NULL? 0: 1; /* for test for null term. array. */
+ longArg = *ptrPtr==nullptr? 0: 1; /* for test for nullptr term. array. */
ptrPtr++;
break;
case 'S':
charsToOutput = 0;
- outputUString((const UChar *)*ptrPtr, -1, outBuf, &outIx, capacity, indent);
+ outputUString((const char16_t *)*ptrPtr, -1, outBuf, &outIx, capacity, indent);
outputChar('\n', outBuf, &outIx, capacity, indent);
- longArg = *ptrPtr==NULL? 0: 1; /* for test for null term. array. */
+ longArg = *ptrPtr==nullptr? 0: 1; /* for test for nullptr term. array. */
ptrPtr++;
break;
@@ -374,8 +374,8 @@ utrace_vformat(char *outBuf, int32_t capacity, int32_t indent, const char *fmt,
outputChar(fmtC, outBuf, &outIx, capacity, indent);
}
}
- outputChar(0, outBuf, &outIx, capacity, indent); /* Make sure that output is null terminated */
- return outIx + 1; /* outIx + 1 because outIx does not increment when outputting final null. */
+ outputChar(0, outBuf, &outIx, capacity, indent); /* Make sure that output is NUL terminated */
+ return outIx + 1; /* outIx + 1 because outIx does not increment when outputting final NUL. */
}
@@ -431,11 +431,11 @@ utrace_getLevel() {
U_CFUNC UBool
utrace_cleanup() {
- pTraceEntryFunc = NULL;
- pTraceExitFunc = NULL;
- pTraceDataFunc = NULL;
+ pTraceEntryFunc = nullptr;
+ pTraceExitFunc = nullptr;
+ pTraceDataFunc = nullptr;
utrace_level = UTRACE_OFF;
- gTraceContext = NULL;
+ gTraceContext = nullptr;
return true;
}
@@ -444,7 +444,7 @@ static const char * const
trFnName[] = {
"u_init",
"u_cleanup",
- NULL
+ nullptr
};
@@ -458,7 +458,7 @@ trConvNames[] = {
"ucnv_flushCache",
"ucnv_load",
"ucnv_unload",
- NULL
+ nullptr
};
@@ -473,7 +473,7 @@ trCollNames[] = {
"ucol_strcollIter",
"ucol_openFromShortString",
"ucol_strcollUTF8",
- NULL
+ nullptr
};
@@ -483,7 +483,7 @@ trResDataNames[] = {
"bundle-open",
"file-open",
"res-open",
- NULL
+ nullptr
};
diff --git a/Build/source/libs/icu/icu-src/source/common/utrie.cpp b/Build/source/libs/icu/icu-src/source/common/utrie.cpp
index 96f2397ca13..83be0e34071 100644
--- a/Build/source/libs/icu/icu-src/source/common/utrie.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/utrie.cpp
@@ -56,28 +56,28 @@ utrie_open(UNewTrie *fillIn,
if( maxDataLength<UTRIE_DATA_BLOCK_LENGTH ||
(latin1Linear && maxDataLength<1024)
) {
- return NULL;
+ return nullptr;
}
- if(fillIn!=NULL) {
+ if(fillIn!=nullptr) {
trie=fillIn;
} else {
trie=(UNewTrie *)uprv_malloc(sizeof(UNewTrie));
- if(trie==NULL) {
- return NULL;
+ if(trie==nullptr) {
+ return nullptr;
}
}
uprv_memset(trie, 0, sizeof(UNewTrie));
- trie->isAllocated= (UBool)(fillIn==NULL);
+ trie->isAllocated= (UBool)(fillIn==nullptr);
- if(aliasData!=NULL) {
+ if(aliasData!=nullptr) {
trie->data=aliasData;
trie->isDataAllocated=false;
} else {
trie->data=(uint32_t *)uprv_malloc(maxDataLength*4);
- if(trie->data==NULL) {
+ if(trie->data==nullptr) {
uprv_free(trie);
- return NULL;
+ return nullptr;
}
trie->isDataAllocated=true;
}
@@ -118,18 +118,18 @@ utrie_clone(UNewTrie *fillIn, const UNewTrie *other, uint32_t *aliasData, int32_
UBool isDataAllocated;
/* do not clone if other is not valid or already compacted */
- if(other==NULL || other->data==NULL || other->isCompacted) {
- return NULL;
+ if(other==nullptr || other->data==nullptr || other->isCompacted) {
+ return nullptr;
}
/* clone data */
- if(aliasData!=NULL && aliasDataCapacity>=other->dataCapacity) {
+ if(aliasData!=nullptr && aliasDataCapacity>=other->dataCapacity) {
isDataAllocated=false;
} else {
aliasDataCapacity=other->dataCapacity;
aliasData=(uint32_t *)uprv_malloc(other->dataCapacity*4);
- if(aliasData==NULL) {
- return NULL;
+ if(aliasData==nullptr) {
+ return nullptr;
}
isDataAllocated=true;
}
@@ -137,7 +137,7 @@ utrie_clone(UNewTrie *fillIn, const UNewTrie *other, uint32_t *aliasData, int32_
trie=utrie_open(fillIn, aliasData, aliasDataCapacity,
other->data[0], other->leadUnitValue,
other->isLatin1Linear);
- if(trie==NULL) {
+ if(trie==nullptr) {
uprv_free(aliasData);
} else {
uprv_memcpy(trie->index, other->index, sizeof(trie->index));
@@ -151,10 +151,10 @@ utrie_clone(UNewTrie *fillIn, const UNewTrie *other, uint32_t *aliasData, int32_
U_CAPI void U_EXPORT2
utrie_close(UNewTrie *trie) {
- if(trie!=NULL) {
+ if(trie!=nullptr) {
if(trie->isDataAllocated) {
uprv_free(trie->data);
- trie->data=NULL;
+ trie->data=nullptr;
}
if(trie->isAllocated) {
uprv_free(trie);
@@ -164,8 +164,8 @@ utrie_close(UNewTrie *trie) {
U_CAPI uint32_t * U_EXPORT2
utrie_getData(UNewTrie *trie, int32_t *pLength) {
- if(trie==NULL || pLength==NULL) {
- return NULL;
+ if(trie==nullptr || pLength==nullptr) {
+ return nullptr;
}
*pLength=trie->dataLength;
@@ -223,7 +223,7 @@ utrie_set32(UNewTrie *trie, UChar32 c, uint32_t value) {
int32_t block;
/* valid, uncompacted trie and valid c? */
- if(trie==NULL || trie->isCompacted || (uint32_t)c>0x10ffff) {
+ if(trie==nullptr || trie->isCompacted || (uint32_t)c>0x10ffff) {
return false;
}
@@ -241,15 +241,15 @@ utrie_get32(UNewTrie *trie, UChar32 c, UBool *pInBlockZero) {
int32_t block;
/* valid, uncompacted trie and valid c? */
- if(trie==NULL || trie->isCompacted || (uint32_t)c>0x10ffff) {
- if(pInBlockZero!=NULL) {
+ if(trie==nullptr || trie->isCompacted || (uint32_t)c>0x10ffff) {
+ if(pInBlockZero!=nullptr) {
*pInBlockZero=true;
}
return 0;
}
block=trie->index[c>>UTRIE_SHIFT];
- if(pInBlockZero!=NULL) {
+ if(pInBlockZero!=nullptr) {
*pInBlockZero= (UBool)(block==0);
}
@@ -291,7 +291,7 @@ utrie_setRange32(UNewTrie *trie, UChar32 start, UChar32 limit, uint32_t value, U
int32_t block, rest, repeatBlock;
/* valid, uncompacted trie and valid indexes? */
- if( trie==NULL || trie->isCompacted ||
+ if( trie==nullptr || trie->isCompacted ||
(uint32_t)start>0x10ffff || (uint32_t)limit>0x110000 || start>limit
) {
return false;
@@ -473,7 +473,7 @@ utrie_fold(UNewTrie *trie, UNewTrieGetFoldedValue *getFoldedValue, UErrorCode *p
* set it for the lead surrogate code unit
*/
value=getFoldedValue(trie, c, block+UTRIE_SURROGATE_BLOCK_COUNT);
- if(value!=utrie_get32(trie, U16_LEAD(c), NULL)) {
+ if(value!=utrie_get32(trie, U16_LEAD(c), nullptr)) {
if(!utrie_set32(trie, U16_LEAD(c), value)) {
/* data table overflow */
*pErrorCode=U_MEMORY_ALLOCATION_ERROR;
@@ -590,12 +590,12 @@ static void
utrie_compact(UNewTrie *trie, UBool overlap, UErrorCode *pErrorCode) {
int32_t i, start, newStart, overlapStart;
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return;
}
/* valid, uncompacted trie? */
- if(trie==NULL) {
+ if(trie==nullptr) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return;
}
@@ -747,18 +747,18 @@ utrie_serialize(UNewTrie *trie, void *dt, int32_t capacity,
uint32_t *p;
uint16_t *dest16;
int32_t i, length;
- uint8_t* data = NULL;
+ uint8_t* data = nullptr;
/* argument check */
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return 0;
}
- if(trie==NULL || capacity<0 || (capacity>0 && dt==NULL)) {
+ if(trie==nullptr || capacity<0 || (capacity>0 && dt==nullptr)) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
- if(getFoldedValue==NULL) {
+ if(getFoldedValue==nullptr) {
getFoldedValue=defaultGetFoldedValue;
}
@@ -859,7 +859,7 @@ utrie_unserialize(UTrie *trie, const void *data, int32_t length, UErrorCode *pEr
const uint16_t *p16;
uint32_t options;
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return -1;
}
@@ -918,7 +918,7 @@ utrie_unserialize(UTrie *trie, const void *data, int32_t length, UErrorCode *pEr
}
/* the "data16" data is used via the index pointer */
- trie->data32=NULL;
+ trie->data32=nullptr;
trie->initialValue=trie->index[trie->indexLength];
length=(int32_t)sizeof(UTrieHeader)+2*trie->indexLength+2*trie->dataLength;
}
@@ -938,7 +938,7 @@ utrie_unserializeDummy(UTrie *trie,
int32_t actualLength, latin1Length, i, limit;
uint16_t block;
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return -1;
}
@@ -991,7 +991,7 @@ utrie_unserializeDummy(UTrie *trie,
}
}
- trie->data32=NULL;
+ trie->data32=nullptr;
/* Latin-1 data */
p16+=trie->indexLength;
@@ -1066,10 +1066,10 @@ utrie_enum(const UTrie *trie,
int32_t l, i, j, block, prevBlock, nullBlock, offset;
/* check arguments */
- if(trie==NULL || trie->index==NULL || enumRange==NULL) {
+ if(trie==nullptr || trie->index==nullptr || enumRange==nullptr) {
return;
}
- if(enumValue==NULL) {
+ if(enumValue==nullptr) {
enumValue=enumSameValue;
}
@@ -1079,7 +1079,7 @@ utrie_enum(const UTrie *trie,
/* get the enumeration value that corresponds to an initial-value trie data entry */
initialValue=enumValue(context, trie->initialValue);
- if(data32==NULL) {
+ if(data32==nullptr) {
nullBlock=trie->indexLength;
} else {
nullBlock=0;
@@ -1120,7 +1120,7 @@ utrie_enum(const UTrie *trie,
} else {
prevBlock=block;
for(j=0; j<UTRIE_DATA_BLOCK_LENGTH; ++j) {
- value=enumValue(context, data32!=NULL ? data32[block+j] : idx[block+j]);
+ value=enumValue(context, data32!=nullptr ? data32[block+j] : idx[block+j]);
if(value!=prevValue) {
if(prev<c) {
if(!enumRange(context, prev, c, prevValue)) {
@@ -1161,7 +1161,7 @@ utrie_enum(const UTrie *trie,
continue;
}
- value= data32!=NULL ? data32[offset+(l&UTRIE_MASK)] : idx[offset+(l&UTRIE_MASK)];
+ value= data32!=nullptr ? data32[offset+(l&UTRIE_MASK)] : idx[offset+(l&UTRIE_MASK)];
/* enumerate trail surrogates for this lead surrogate */
offset=trie->getFoldingOffset(value);
@@ -1206,7 +1206,7 @@ utrie_enum(const UTrie *trie,
} else {
prevBlock=block;
for(j=0; j<UTRIE_DATA_BLOCK_LENGTH; ++j) {
- value=enumValue(context, data32!=NULL ? data32[block+j] : idx[block+j]);
+ value=enumValue(context, data32!=nullptr ? data32[block+j] : idx[block+j]);
if(value!=prevValue) {
if(prev<c) {
if(!enumRange(context, prev, c, prevValue)) {
diff --git a/Build/source/libs/icu/icu-src/source/common/utrie2.cpp b/Build/source/libs/icu/icu-src/source/common/utrie2.cpp
index 0fb74ba1c36..74f91bc8139 100644
--- a/Build/source/libs/icu/icu-src/source/common/utrie2.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/utrie2.cpp
@@ -59,9 +59,9 @@ get32(const UNewTrie2 *trie, UChar32 c, UBool fromLSCP) {
U_CAPI uint32_t U_EXPORT2
utrie2_get32(const UTrie2 *trie, UChar32 c) {
- if(trie->data16!=NULL) {
+ if(trie->data16!=nullptr) {
return UTRIE2_GET16(trie, c);
- } else if(trie->data32!=NULL) {
+ } else if(trie->data32!=nullptr) {
return UTRIE2_GET32(trie, c);
} else if((uint32_t)c>0x10ffff) {
return trie->errorValue;
@@ -75,9 +75,9 @@ utrie2_get32FromLeadSurrogateCodeUnit(const UTrie2 *trie, UChar32 c) {
if(!U_IS_LEAD(c)) {
return trie->errorValue;
}
- if(trie->data16!=NULL) {
+ if(trie->data16!=nullptr) {
return UTRIE2_GET16_FROM_U16_SINGLE_LEAD(trie, c);
- } else if(trie->data32!=NULL) {
+ } else if(trie->data32!=nullptr) {
return UTRIE2_GET32_FROM_U16_SINGLE_LEAD(trie, c);
} else {
return get32(trie->newTrie, c, false);
@@ -89,7 +89,7 @@ u8Index(const UTrie2 *trie, UChar32 c, int32_t i) {
int32_t idx=
_UTRIE2_INDEX_FROM_CP(
trie,
- trie->data32==NULL ? trie->indexLength : 0,
+ trie->data32==nullptr ? trie->indexLength : 0,
c);
return (idx<<3)|i;
}
@@ -193,7 +193,7 @@ utrie2_openFromSerialized(UTrie2ValueBits valueBits,
/* allocate the trie */
trie=(UTrie2 *)uprv_malloc(sizeof(UTrie2));
- if(trie==NULL) {
+ if(trie==nullptr) {
*pErrorCode=U_MEMORY_ALLOCATION_ERROR;
return 0;
}
@@ -214,12 +214,12 @@ utrie2_openFromSerialized(UTrie2ValueBits valueBits,
switch(valueBits) {
case UTRIE2_16_VALUE_BITS:
trie->data16=p16;
- trie->data32=NULL;
+ trie->data32=nullptr;
trie->initialValue=trie->index[trie->dataNullOffset];
trie->errorValue=trie->data16[UTRIE2_BAD_UTF8_DATA_OFFSET];
break;
case UTRIE2_32_VALUE_BITS:
- trie->data16=NULL;
+ trie->data16=nullptr;
trie->data32=(const uint32_t *)p16;
trie->initialValue=trie->data32[trie->dataNullOffset];
trie->errorValue=trie->data32[UTRIE2_BAD_UTF8_DATA_OFFSET];
@@ -229,7 +229,7 @@ utrie2_openFromSerialized(UTrie2ValueBits valueBits,
return 0;
}
- if(pActualLength!=NULL) {
+ if(pActualLength!=nullptr) {
*pActualLength=actualLength;
}
return trie;
@@ -267,13 +267,13 @@ utrie2_openDummy(UTrie2ValueBits valueBits,
/* allocate the trie */
trie=(UTrie2 *)uprv_malloc(sizeof(UTrie2));
- if(trie==NULL) {
+ if(trie==nullptr) {
*pErrorCode=U_MEMORY_ALLOCATION_ERROR;
return 0;
}
uprv_memset(trie, 0, sizeof(UTrie2));
trie->memory=uprv_malloc(length);
- if(trie->memory==NULL) {
+ if(trie->memory==nullptr) {
uprv_free(trie);
*pErrorCode=U_MEMORY_ALLOCATION_ERROR;
return 0;
@@ -334,7 +334,7 @@ utrie2_openDummy(UTrie2ValueBits valueBits,
case UTRIE2_16_VALUE_BITS:
/* write 16-bit data values */
trie->data16=dest16;
- trie->data32=NULL;
+ trie->data32=nullptr;
for(i=0; i<0x80; ++i) {
*dest16++=(uint16_t)initialValue;
}
@@ -349,7 +349,7 @@ utrie2_openDummy(UTrie2ValueBits valueBits,
case UTRIE2_32_VALUE_BITS:
/* write 32-bit data values */
p=(uint32_t *)dest16;
- trie->data16=NULL;
+ trie->data16=nullptr;
trie->data32=p;
for(i=0; i<0x80; ++i) {
*p++=initialValue;
@@ -372,11 +372,11 @@ utrie2_openDummy(UTrie2ValueBits valueBits,
U_CAPI void U_EXPORT2
utrie2_close(UTrie2 *trie) {
- if(trie!=NULL) {
+ if(trie!=nullptr) {
if(trie->isMemoryOwned) {
uprv_free(trie->memory);
}
- if(trie->newTrie!=NULL) {
+ if(trie->newTrie!=nullptr) {
uprv_free(trie->newTrie->data);
#ifdef UCPTRIE_DEBUG
umutablecptrie_close(trie->newTrie->t3);
@@ -389,7 +389,7 @@ utrie2_close(UTrie2 *trie) {
U_CAPI UBool U_EXPORT2
utrie2_isFrozen(const UTrie2 *trie) {
- return (UBool)(trie->newTrie==NULL);
+ return (UBool)(trie->newTrie==nullptr);
}
U_CAPI int32_t U_EXPORT2
@@ -401,8 +401,8 @@ utrie2_serialize(const UTrie2 *trie,
return 0;
}
- if( trie==NULL || trie->memory==NULL || trie->newTrie!=NULL ||
- capacity<0 || (capacity>0 && (data==NULL || (U_POINTER_MASK_LSB(data, 3)!=0)))
+ if( trie==nullptr || trie->memory==nullptr || trie->newTrie!=nullptr ||
+ capacity<0 || (capacity>0 && (data==nullptr || (U_POINTER_MASK_LSB(data, 3)!=0)))
) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
@@ -450,26 +450,26 @@ enumEitherTrie(const UTrie2 *trie,
UChar32 c, prev, highStart;
int32_t j, i2Block, prevI2Block, index2NullOffset, block, prevBlock, nullBlock;
- if(enumRange==NULL) {
+ if(enumRange==nullptr) {
return;
}
- if(enumValue==NULL) {
+ if(enumValue==nullptr) {
enumValue=enumSameValue;
}
- if(trie->newTrie==NULL) {
+ if(trie->newTrie==nullptr) {
/* frozen trie */
idx=trie->index;
- U_ASSERT(idx!=NULL); /* the following code assumes trie->newTrie is not NULL when idx is NULL */
+ U_ASSERT(idx!=nullptr); /* the following code assumes trie->newTrie is not nullptr when idx is nullptr */
data32=trie->data32;
index2NullOffset=trie->index2NullOffset;
nullBlock=trie->dataNullOffset;
} else {
/* unfrozen, mutable trie */
- idx=NULL;
+ idx=nullptr;
data32=trie->newTrie->data;
- U_ASSERT(data32!=NULL); /* the following code assumes idx is not NULL when data32 is NULL */
+ U_ASSERT(data32!=nullptr); /* the following code assumes idx is not nullptr when data32 is nullptr */
index2NullOffset=trie->newTrie->index2NullOffset;
nullBlock=trie->newTrie->dataNullOffset;
@@ -513,7 +513,7 @@ enumEitherTrie(const UTrie2 *trie,
}
} else {
/* supplementary code points */
- if(idx!=NULL) {
+ if(idx!=nullptr) {
i2Block=idx[(UTRIE2_INDEX_1_OFFSET-UTRIE2_OMITTED_BMP_INDEX_1_LENGTH)+
(c>>UTRIE2_SHIFT_1)];
} else {
@@ -551,7 +551,7 @@ enumEitherTrie(const UTrie2 *trie,
i2Limit=UTRIE2_INDEX_2_BLOCK_LENGTH;
}
for(; i2<i2Limit; ++i2) {
- if(idx!=NULL) {
+ if(idx!=nullptr) {
block=(int32_t)idx[i2Block+i2]<<UTRIE2_INDEX_SHIFT;
} else {
block=trie->newTrie->index2[i2Block+i2];
@@ -574,7 +574,7 @@ enumEitherTrie(const UTrie2 *trie,
c+=UTRIE2_DATA_BLOCK_LENGTH;
} else {
for(j=0; j<UTRIE2_DATA_BLOCK_LENGTH; ++j) {
- value=enumValue(context, data32!=NULL ? data32[block+j] : idx[block+j]);
+ value=enumValue(context, data32!=nullptr ? data32[block+j] : idx[block+j]);
if(value!=prevValue) {
if(prev<c && !enumRange(context, prev, c-1, prevValue)) {
return;
@@ -594,9 +594,9 @@ enumEitherTrie(const UTrie2 *trie,
} else if(c<limit) {
/* c==highStart<limit */
uint32_t highValue;
- if(idx!=NULL) {
+ if(idx!=nullptr) {
highValue=
- data32!=NULL ?
+ data32!=nullptr ?
data32[trie->highValueIndex] :
idx[trie->highValueIndex];
} else {
diff --git a/Build/source/libs/icu/icu-src/source/common/utrie2.h b/Build/source/libs/icu/icu-src/source/common/utrie2.h
index ace52cce37b..431f11568e1 100644
--- a/Build/source/libs/icu/icu-src/source/common/utrie2.h
+++ b/Build/source/libs/icu/icu-src/source/common/utrie2.h
@@ -599,34 +599,34 @@ U_NAMESPACE_BEGIN
// Use the Forward/Backward subclasses below.
class UTrie2StringIterator : public UMemory {
public:
- UTrie2StringIterator(const UTrie2 *t, const UChar *p) :
+ UTrie2StringIterator(const UTrie2 *t, const char16_t *p) :
trie(t), codePointStart(p), codePointLimit(p), codePoint(U_SENTINEL) {}
const UTrie2 *trie;
- const UChar *codePointStart, *codePointLimit;
+ const char16_t *codePointStart, *codePointLimit;
UChar32 codePoint;
};
class BackwardUTrie2StringIterator : public UTrie2StringIterator {
public:
- BackwardUTrie2StringIterator(const UTrie2 *t, const UChar *s, const UChar *p) :
+ BackwardUTrie2StringIterator(const UTrie2 *t, const char16_t *s, const char16_t *p) :
UTrie2StringIterator(t, p), start(s) {}
uint16_t previous16();
- const UChar *start;
+ const char16_t *start;
};
class ForwardUTrie2StringIterator : public UTrie2StringIterator {
public:
- // Iteration limit l can be NULL.
+ // Iteration limit l can be nullptr.
// In that case, the caller must detect c==0 and stop.
- ForwardUTrie2StringIterator(const UTrie2 *t, const UChar *p, const UChar *l) :
+ ForwardUTrie2StringIterator(const UTrie2 *t, const char16_t *p, const char16_t *l) :
UTrie2StringIterator(t, p), limit(l) {}
uint16_t next16();
- const UChar *limit;
+ const char16_t *limit;
};
U_NAMESPACE_END
diff --git a/Build/source/libs/icu/icu-src/source/common/utrie2_builder.cpp b/Build/source/libs/icu/icu-src/source/common/utrie2_builder.cpp
index 2513332b80a..1254e8cba68 100644
--- a/Build/source/libs/icu/icu-src/source/common/utrie2_builder.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/utrie2_builder.cpp
@@ -120,13 +120,13 @@ utrie2_open(uint32_t initialValue, uint32_t errorValue, UErrorCode *pErrorCode)
int32_t i, j;
if(U_FAILURE(*pErrorCode)) {
- return NULL;
+ return nullptr;
}
trie=(UTrie2 *)uprv_malloc(sizeof(UTrie2));
newTrie=(UNewTrie2 *)uprv_malloc(sizeof(UNewTrie2));
data=(uint32_t *)uprv_malloc(UNEWTRIE2_INITIAL_DATA_LENGTH*4);
- if(trie==NULL || newTrie==NULL || data==NULL) {
+ if(trie==nullptr || newTrie==nullptr || data==nullptr) {
uprv_free(trie);
uprv_free(newTrie);
uprv_free(data);
@@ -250,14 +250,14 @@ cloneBuilder(const UNewTrie2 *other) {
UNewTrie2 *trie;
trie=(UNewTrie2 *)uprv_malloc(sizeof(UNewTrie2));
- if(trie==NULL) {
- return NULL;
+ if(trie==nullptr) {
+ return nullptr;
}
trie->data=(uint32_t *)uprv_malloc(other->dataCapacity*4);
- if(trie->data==NULL) {
+ if(trie->data==nullptr) {
uprv_free(trie);
- return NULL;
+ return nullptr;
}
#ifdef UCPTRIE_DEBUG
if(other->t3==nullptr) {
@@ -300,43 +300,43 @@ utrie2_clone(const UTrie2 *other, UErrorCode *pErrorCode) {
UTrie2 *trie;
if(U_FAILURE(*pErrorCode)) {
- return NULL;
+ return nullptr;
}
- if(other==NULL || (other->memory==NULL && other->newTrie==NULL)) {
+ if(other==nullptr || (other->memory==nullptr && other->newTrie==nullptr)) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
trie=(UTrie2 *)uprv_malloc(sizeof(UTrie2));
- if(trie==NULL) {
+ if(trie==nullptr) {
*pErrorCode=U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
uprv_memcpy(trie, other, sizeof(UTrie2));
- if(other->memory!=NULL) {
+ if(other->memory!=nullptr) {
trie->memory=uprv_malloc(other->length);
- if(trie->memory!=NULL) {
+ if(trie->memory!=nullptr) {
trie->isMemoryOwned=true;
uprv_memcpy(trie->memory, other->memory, other->length);
/* make the clone's pointers point to its own memory */
trie->index=(uint16_t *)trie->memory+(other->index-(uint16_t *)other->memory);
- if(other->data16!=NULL) {
+ if(other->data16!=nullptr) {
trie->data16=(uint16_t *)trie->memory+(other->data16-(uint16_t *)other->memory);
}
- if(other->data32!=NULL) {
+ if(other->data32!=nullptr) {
trie->data32=(uint32_t *)trie->memory+(other->data32-(uint32_t *)other->memory);
}
}
- } else /* other->newTrie!=NULL */ {
+ } else /* other->newTrie!=nullptr */ {
trie->newTrie=cloneBuilder(other->newTrie);
}
- if(trie->memory==NULL && trie->newTrie==NULL) {
+ if(trie->memory==nullptr && trie->newTrie==nullptr) {
*pErrorCode=U_MEMORY_ALLOCATION_ERROR;
uprv_free(trie);
- trie=NULL;
+ trie=nullptr;
}
return trie;
}
@@ -386,7 +386,7 @@ static void
utrie_printLengths(const UTrie *trie) {
long indexLength=trie->indexLength;
long dataLength=(long)trie->dataLength;
- long totalLength=(long)sizeof(UTrieHeader)+indexLength*2+dataLength*(trie->data32!=NULL ? 4 : 2);
+ long totalLength=(long)sizeof(UTrieHeader)+indexLength*2+dataLength*(trie->data32!=nullptr ? 4 : 2);
printf("**UTrieLengths** index:%6ld data:%6ld serialized:%6ld\n",
indexLength, dataLength, totalLength);
}
@@ -395,7 +395,7 @@ static void
utrie2_printLengths(const UTrie2 *trie, const char *which) {
long indexLength=trie->indexLength;
long dataLength=(long)trie->dataLength;
- long totalLength=(long)sizeof(UTrie2Header)+indexLength*2+dataLength*(trie->data32!=NULL ? 4 : 2);
+ long totalLength=(long)sizeof(UTrie2Header)+indexLength*2+dataLength*(trie->data32!=nullptr ? 4 : 2);
printf("**UTrie2Lengths(%s %s)** index:%6ld data:%6ld countInitial:%6ld serialized:%6ld\n",
which, trie->name, indexLength, dataLength, countInitial(trie), totalLength);
}
@@ -404,31 +404,31 @@ utrie2_printLengths(const UTrie2 *trie, const char *which) {
U_CAPI UTrie2 * U_EXPORT2
utrie2_cloneAsThawed(const UTrie2 *other, UErrorCode *pErrorCode) {
NewTrieAndStatus context;
- UChar lead;
+ char16_t lead;
if(U_FAILURE(*pErrorCode)) {
- return NULL;
+ return nullptr;
}
- if(other==NULL || (other->memory==NULL && other->newTrie==NULL)) {
+ if(other==nullptr || (other->memory==nullptr && other->newTrie==nullptr)) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
- if(other->newTrie!=NULL && !other->newTrie->isCompacted) {
+ if(other->newTrie!=nullptr && !other->newTrie->isCompacted) {
return utrie2_clone(other, pErrorCode); /* clone an unfrozen trie */
}
/* Clone the frozen trie by enumerating it and building a new one. */
context.trie=utrie2_open(other->initialValue, other->errorValue, pErrorCode);
if(U_FAILURE(*pErrorCode)) {
- return NULL;
+ return nullptr;
}
context.exclusiveLimit=false;
context.errorCode=*pErrorCode;
- utrie2_enum(other, NULL, copyEnumRange, &context);
+ utrie2_enum(other, nullptr, copyEnumRange, &context);
*pErrorCode=context.errorCode;
for(lead=0xd800; lead<0xdc00; ++lead) {
uint32_t value;
- if(other->data32==NULL) {
+ if(other->data32==nullptr) {
value=UTRIE2_GET16_FROM_U16_SINGLE_LEAD(other, lead);
} else {
value=UTRIE2_GET32_FROM_U16_SINGLE_LEAD(other, lead);
@@ -439,7 +439,7 @@ utrie2_cloneAsThawed(const UTrie2 *other, UErrorCode *pErrorCode) {
}
if(U_FAILURE(*pErrorCode)) {
utrie2_close(context.trie);
- context.trie=NULL;
+ context.trie=nullptr;
}
return context.trie;
}
@@ -448,26 +448,26 @@ utrie2_cloneAsThawed(const UTrie2 *other, UErrorCode *pErrorCode) {
U_CAPI UTrie2 * U_EXPORT2
utrie2_fromUTrie(const UTrie *trie1, uint32_t errorValue, UErrorCode *pErrorCode) {
NewTrieAndStatus context;
- UChar lead;
+ char16_t lead;
if(U_FAILURE(*pErrorCode)) {
- return NULL;
+ return nullptr;
}
- if(trie1==NULL) {
+ if(trie1==nullptr) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
context.trie=utrie2_open(trie1->initialValue, errorValue, pErrorCode);
if(U_FAILURE(*pErrorCode)) {
- return NULL;
+ return nullptr;
}
context.exclusiveLimit=true;
context.errorCode=*pErrorCode;
- utrie_enum(trie1, NULL, copyEnumRange, &context);
+ utrie_enum(trie1, nullptr, copyEnumRange, &context);
*pErrorCode=context.errorCode;
for(lead=0xd800; lead<0xdc00; ++lead) {
uint32_t value;
- if(trie1->data32==NULL) {
+ if(trie1->data32==nullptr) {
value=UTRIE_GET16_FROM_LEAD(trie1, lead);
} else {
value=UTRIE_GET32_FROM_LEAD(trie1, lead);
@@ -478,7 +478,7 @@ utrie2_fromUTrie(const UTrie *trie1, uint32_t errorValue, UErrorCode *pErrorCode
}
if(U_SUCCESS(*pErrorCode)) {
utrie2_freeze(context.trie,
- trie1->data32!=NULL ? UTRIE2_32_VALUE_BITS : UTRIE2_16_VALUE_BITS,
+ trie1->data32!=nullptr ? UTRIE2_32_VALUE_BITS : UTRIE2_16_VALUE_BITS,
pErrorCode);
}
#ifdef UTRIE2_DEBUG
@@ -489,7 +489,7 @@ utrie2_fromUTrie(const UTrie *trie1, uint32_t errorValue, UErrorCode *pErrorCode
#endif
if(U_FAILURE(*pErrorCode)) {
utrie2_close(context.trie);
- context.trie=NULL;
+ context.trie=nullptr;
}
return context.trie;
}
@@ -578,7 +578,7 @@ allocDataBlock(UNewTrie2 *trie, int32_t copyBlock) {
return -1;
}
data=(uint32_t *)uprv_malloc(capacity*4);
- if(data==NULL) {
+ if(data==nullptr) {
return -1;
}
uprv_memcpy(data, trie->data, (size_t)trie->dataLength*4);
@@ -657,7 +657,7 @@ set32(UNewTrie2 *trie,
UErrorCode *pErrorCode) {
int32_t block;
- if(trie==NULL || trie->isCompacted) {
+ if(trie==nullptr || trie->isCompacted) {
*pErrorCode=U_NO_WRITE_PERMISSION;
return;
}
@@ -755,7 +755,7 @@ utrie2_setRange32(UTrie2 *trie,
return;
}
newTrie=trie->newTrie;
- if(newTrie==NULL || newTrie->isCompacted) {
+ if(newTrie==nullptr || newTrie->isCompacted) {
*pErrorCode=U_NO_WRITE_PERMISSION;
return;
}
@@ -1317,17 +1317,17 @@ utrie2_freeze(UTrie2 *trie, UTrie2ValueBits valueBits, UErrorCode *pErrorCode) {
if(U_FAILURE(*pErrorCode)) {
return;
}
- if( trie==NULL ||
+ if( trie==nullptr ||
valueBits<0 || UTRIE2_COUNT_VALUE_BITS<=valueBits
) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return;
}
newTrie=trie->newTrie;
- if(newTrie==NULL) {
+ if(newTrie==nullptr) {
/* already frozen */
UTrie2ValueBits frozenValueBits=
- trie->data16!=NULL ? UTRIE2_16_VALUE_BITS : UTRIE2_32_VALUE_BITS;
+ trie->data16!=nullptr ? UTRIE2_16_VALUE_BITS : UTRIE2_32_VALUE_BITS;
if(valueBits!=frozenValueBits) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
}
@@ -1377,7 +1377,7 @@ utrie2_freeze(UTrie2 *trie, UTrie2ValueBits valueBits, UErrorCode *pErrorCode) {
}
trie->memory=uprv_malloc(length);
- if(trie->memory==NULL) {
+ if(trie->memory==nullptr) {
*pErrorCode=U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -1449,7 +1449,7 @@ utrie2_freeze(UTrie2 *trie, UTrie2ValueBits valueBits, UErrorCode *pErrorCode) {
case UTRIE2_16_VALUE_BITS:
/* write 16-bit data values */
trie->data16=dest16;
- trie->data32=NULL;
+ trie->data32=nullptr;
p=newTrie->data;
for(i=newTrie->dataLength; i>0; --i) {
*dest16++=(uint16_t)*p++;
@@ -1457,7 +1457,7 @@ utrie2_freeze(UTrie2 *trie, UTrie2ValueBits valueBits, UErrorCode *pErrorCode) {
break;
case UTRIE2_32_VALUE_BITS:
/* write 32-bit data values */
- trie->data16=NULL;
+ trie->data16=nullptr;
trie->data32=(uint32_t *)dest16;
uprv_memcpy(dest16, newTrie->data, (size_t)newTrie->dataLength*4);
break;
@@ -1479,5 +1479,5 @@ utrie2_freeze(UTrie2 *trie, UTrie2ValueBits valueBits, UErrorCode *pErrorCode) {
/* Delete the UNewTrie2. */
uprv_free(newTrie->data);
uprv_free(newTrie);
- trie->newTrie=NULL;
+ trie->newTrie=nullptr;
}
diff --git a/Build/source/libs/icu/icu-src/source/common/utrie_swap.cpp b/Build/source/libs/icu/icu-src/source/common/utrie_swap.cpp
index b01b94601e4..83d183699d1 100644
--- a/Build/source/libs/icu/icu-src/source/common/utrie_swap.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/utrie_swap.cpp
@@ -31,10 +31,10 @@ utrie_swap(const UDataSwapper *ds,
int32_t size;
UBool dataIs32;
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return 0;
}
- if(ds==NULL || inData==NULL || (length>=0 && outData==NULL)) {
+ if(ds==nullptr || inData==nullptr || (length>=0 && outData==nullptr)) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -105,7 +105,7 @@ utrie2_swap(const UDataSwapper *ds,
if(U_FAILURE(*pErrorCode)) {
return 0;
}
- if(ds==NULL || inData==NULL || (length>=0 && outData==NULL)) {
+ if(ds==nullptr || inData==nullptr || (length>=0 && outData==nullptr)) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
diff --git a/Build/source/libs/icu/icu-src/source/common/uts46.cpp b/Build/source/libs/icu/icu-src/source/common/uts46.cpp
index 10a4f565973..28f15f7175d 100644
--- a/Build/source/libs/icu/icu-src/source/common/uts46.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/uts46.cpp
@@ -49,8 +49,8 @@ const uint32_t severeErrors=
static inline UBool
isASCIIString(const UnicodeString &dest) {
- const UChar *s=dest.getBuffer();
- const UChar *limit=s+dest.length();
+ const char16_t *s=dest.getBuffer();
+ const char16_t *limit=s+dest.length();
while(s<limit) {
if(*s++>0x7f) {
return false;
@@ -60,7 +60,7 @@ isASCIIString(const UnicodeString &dest) {
}
static UBool
-isASCIIOkBiDi(const UChar *s, int32_t length);
+isASCIIOkBiDi(const char16_t *s, int32_t length);
static UBool
isASCIIOkBiDi(const char *s, int32_t length);
@@ -185,13 +185,13 @@ private:
UBool toASCII, IDNAInfo &info, UErrorCode &errorCode) const;
void
- checkLabelBiDi(const UChar *label, int32_t labelLength, IDNAInfo &info) const;
+ checkLabelBiDi(const char16_t *label, int32_t labelLength, IDNAInfo &info) const;
UBool
- isLabelOkContextJ(const UChar *label, int32_t labelLength) const;
+ isLabelOkContextJ(const char16_t *label, int32_t labelLength) const;
void
- checkLabelContextO(const UChar *label, int32_t labelLength, IDNAInfo &info) const;
+ checkLabelContextO(const char16_t *label, int32_t labelLength, IDNAInfo &info) const;
const Normalizer2 &uts46Norm2; // uts46.nrm
uint32_t options;
@@ -201,22 +201,22 @@ IDNA *
IDNA::createUTS46Instance(uint32_t options, UErrorCode &errorCode) {
if(U_SUCCESS(errorCode)) {
IDNA *idna=new UTS46(options, errorCode);
- if(idna==NULL) {
+ if(idna==nullptr) {
errorCode=U_MEMORY_ALLOCATION_ERROR;
} else if(U_FAILURE(errorCode)) {
delete idna;
- idna=NULL;
+ idna=nullptr;
}
return idna;
} else {
- return NULL;
+ return nullptr;
}
}
// UTS46 implementation ---------------------------------------------------- ***
UTS46::UTS46(uint32_t opt, UErrorCode &errorCode)
- : uts46Norm2(*Normalizer2::getInstance(NULL, "uts46", UNORM2_COMPOSE, errorCode)),
+ : uts46Norm2(*Normalizer2::getInstance(nullptr, "uts46", UNORM2_COMPOSE, errorCode)),
options(opt) {}
UTS46::~UTS46() {}
@@ -310,8 +310,8 @@ UTS46::process(const UnicodeString &src,
dest.setToBogus();
return dest;
}
- const UChar *srcArray=src.getBuffer();
- if(&dest==&src || srcArray==NULL) {
+ const char16_t *srcArray=src.getBuffer();
+ if(&dest==&src || srcArray==nullptr) {
errorCode=U_ILLEGAL_ARGUMENT_ERROR;
dest.setToBogus();
return dest;
@@ -324,8 +324,8 @@ UTS46::process(const UnicodeString &src,
info.errors|=UIDNA_ERROR_EMPTY_LABEL;
return dest;
}
- UChar *destArray=dest.getBuffer(srcLength);
- if(destArray==NULL) {
+ char16_t *destArray=dest.getBuffer(srcLength);
+ if(destArray==nullptr) {
errorCode=U_MEMORY_ALLOCATION_ERROR;
return dest;
}
@@ -348,7 +348,7 @@ UTS46::process(const UnicodeString &src,
dest.releaseBuffer(i);
return dest;
}
- UChar c=srcArray[i];
+ char16_t c=srcArray[i];
if(c>0x7f) {
break;
}
@@ -412,7 +412,7 @@ UTS46::processUTF8(StringPiece src,
}
const char *srcArray=src.data();
int32_t srcLength=src.length();
- if(srcArray==NULL && srcLength!=0) {
+ if(srcArray==nullptr && srcLength!=0) {
errorCode=U_ILLEGAL_ARGUMENT_ERROR;
return;
}
@@ -540,11 +540,11 @@ UTS46::processUnicode(const UnicodeString &src,
UBool doMapDevChars=
toASCII ? (options&UIDNA_NONTRANSITIONAL_TO_ASCII)==0 :
(options&UIDNA_NONTRANSITIONAL_TO_UNICODE)==0;
- const UChar *destArray=dest.getBuffer();
+ const char16_t *destArray=dest.getBuffer();
int32_t destLength=dest.length();
int32_t labelLimit=labelStart;
while(labelLimit<destLength) {
- UChar c=destArray[labelLimit];
+ char16_t c=destArray[labelLimit];
if(c==0x2e && !isLabel) {
int32_t labelLength=labelLimit-labelStart;
int32_t newLength=processLabel(dest, labelStart, labelLength,
@@ -604,8 +604,8 @@ UTS46::mapDevChars(UnicodeString &dest, int32_t labelStart, int32_t mappingStart
return 0;
}
int32_t length=dest.length();
- UChar *s=dest.getBuffer(dest[mappingStart]==0xdf ? length+1 : length);
- if(s==NULL) {
+ char16_t *s=dest.getBuffer(dest[mappingStart]==0xdf ? length+1 : length);
+ if(s==nullptr) {
errorCode=U_MEMORY_ALLOCATION_ERROR;
return length;
}
@@ -613,7 +613,7 @@ UTS46::mapDevChars(UnicodeString &dest, int32_t labelStart, int32_t mappingStart
UBool didMapDevChars=false;
int32_t readIndex=mappingStart, writeIndex=mappingStart;
do {
- UChar c=s[readIndex++];
+ char16_t c=s[readIndex++];
switch(c) {
case 0xdf:
// Map sharp s to ss.
@@ -624,7 +624,7 @@ UTS46::mapDevChars(UnicodeString &dest, int32_t labelStart, int32_t mappingStart
if(length==capacity) {
dest.releaseBuffer(length);
s=dest.getBuffer(length+1);
- if(s==NULL) {
+ if(s==nullptr) {
errorCode=U_MEMORY_ALLOCATION_ERROR;
return length;
}
@@ -669,14 +669,6 @@ UTS46::mapDevChars(UnicodeString &dest, int32_t labelStart, int32_t mappingStart
return length;
}
-// Some non-ASCII characters are equivalent to sequences with
-// non-LDH ASCII characters. To find them:
-// grep disallowed_STD3_valid IdnaMappingTable.txt (or uts46.txt)
-static inline UBool
-isNonASCIIDisallowedSTD3Valid(UChar32 c) {
- return c==0x2260 || c==0x226E || c==0x226F;
-}
-
// Replace the label in dest with the label string, if the label was modified.
// If &label==&dest then the label was modified in-place and labelLength
// is the new label length, different from label.length().
@@ -708,7 +700,7 @@ UTS46::processLabel(UnicodeString &dest,
}
UnicodeString fromPunycode;
UnicodeString *labelString;
- const UChar *label=dest.getBuffer()+labelStart;
+ const char16_t *label=dest.getBuffer()+labelStart;
int32_t destLabelStart=labelStart;
int32_t destLabelLength=labelLength;
UBool wasPunycode;
@@ -725,8 +717,8 @@ UTS46::processLabel(UnicodeString &dest,
return markBadACELabel(dest, labelStart, labelLength, toASCII, info, errorCode);
}
wasPunycode=true;
- UChar *unicodeBuffer=fromPunycode.getBuffer(-1); // capacity==-1: most labels should fit
- if(unicodeBuffer==NULL) {
+ char16_t *unicodeBuffer=fromPunycode.getBuffer(-1); // capacity==-1: most labels should fit
+ if(unicodeBuffer==nullptr) {
// Should never occur if we used capacity==-1 which uses the internal buffer.
errorCode=U_MEMORY_ALLOCATION_ERROR;
return labelLength;
@@ -734,18 +726,18 @@ UTS46::processLabel(UnicodeString &dest,
UErrorCode punycodeErrorCode=U_ZERO_ERROR;
int32_t unicodeLength=u_strFromPunycode(label+4, labelLength-4,
unicodeBuffer, fromPunycode.getCapacity(),
- NULL, &punycodeErrorCode);
+ nullptr, &punycodeErrorCode);
if(punycodeErrorCode==U_BUFFER_OVERFLOW_ERROR) {
fromPunycode.releaseBuffer(0);
unicodeBuffer=fromPunycode.getBuffer(unicodeLength);
- if(unicodeBuffer==NULL) {
+ if(unicodeBuffer==nullptr) {
errorCode=U_MEMORY_ALLOCATION_ERROR;
return labelLength;
}
punycodeErrorCode=U_ZERO_ERROR;
unicodeLength=u_strFromPunycode(label+4, labelLength-4,
unicodeBuffer, fromPunycode.getCapacity(),
- NULL, &punycodeErrorCode);
+ nullptr, &punycodeErrorCode);
}
fromPunycode.releaseBuffer(unicodeLength);
if(U_FAILURE(punycodeErrorCode)) {
@@ -803,13 +795,13 @@ UTS46::processLabel(UnicodeString &dest,
// in a non-Punycode label or U+FFFD itself in a Punycode label.
// We also check for dots which can come from the input to a single-label function.
// Ok to cast away const because we own the UnicodeString.
- UChar *s=(UChar *)label;
- const UChar *limit=label+labelLength;
- UChar oredChars=0;
+ char16_t *s=(char16_t *)label;
+ const char16_t *limit=label+labelLength;
+ char16_t oredChars=0;
// If we enforce STD3 rules, then ASCII characters other than LDH and dot are disallowed.
UBool disallowNonLDHDot=(options&UIDNA_USE_STD3_RULES)!=0;
do {
- UChar c=*s;
+ char16_t c=*s;
if(c<=0x7f) {
if(c==0x2e) {
info.labelErrors|=UIDNA_ERROR_LABEL_HAS_DOT;
@@ -820,10 +812,7 @@ UTS46::processLabel(UnicodeString &dest,
}
} else {
oredChars|=c;
- if(disallowNonLDHDot && isNonASCIIDisallowedSTD3Valid(c)) {
- info.labelErrors|=UIDNA_ERROR_DISALLOWED;
- *s=0xfffd;
- } else if(c==0xfffd) {
+ if(c==0xfffd) {
info.labelErrors|=UIDNA_ERROR_DISALLOWED;
}
}
@@ -837,7 +826,7 @@ UTS46::processLabel(UnicodeString &dest,
U16_NEXT_UNSAFE(label, cpLength, c);
if((U_GET_GC_MASK(c)&U_GC_M_MASK)!=0) {
info.labelErrors|=UIDNA_ERROR_LEADING_COMBINING_MARK;
- labelString->replace(labelStart, cpLength, (UChar)0xfffd);
+ labelString->replace(labelStart, cpLength, (char16_t)0xfffd);
label=labelString->getBuffer()+labelStart;
labelLength+=1-cpLength;
if(labelString==&dest) {
@@ -868,8 +857,8 @@ UTS46::processLabel(UnicodeString &dest,
} else if(oredChars>=0x80) {
// Contains non-ASCII characters.
UnicodeString punycode;
- UChar *buffer=punycode.getBuffer(63); // 63==maximum DNS label length
- if(buffer==NULL) {
+ char16_t *buffer=punycode.getBuffer(63); // 63==maximum DNS label length
+ if(buffer==nullptr) {
errorCode=U_MEMORY_ALLOCATION_ERROR;
return destLabelLength;
}
@@ -879,18 +868,18 @@ UTS46::processLabel(UnicodeString &dest,
buffer[3]=0x2d;
int32_t punycodeLength=u_strToPunycode(label, labelLength,
buffer+4, punycode.getCapacity()-4,
- NULL, &errorCode);
+ nullptr, &errorCode);
if(errorCode==U_BUFFER_OVERFLOW_ERROR) {
errorCode=U_ZERO_ERROR;
punycode.releaseBuffer(4);
buffer=punycode.getBuffer(4+punycodeLength);
- if(buffer==NULL) {
+ if(buffer==nullptr) {
errorCode=U_MEMORY_ALLOCATION_ERROR;
return destLabelLength;
}
punycodeLength=u_strToPunycode(label, labelLength,
buffer+4, punycode.getCapacity()-4,
- NULL, &errorCode);
+ nullptr, &errorCode);
}
punycodeLength+=4;
punycode.releaseBuffer(punycodeLength);
@@ -934,12 +923,12 @@ UTS46::markBadACELabel(UnicodeString &dest,
UBool disallowNonLDHDot=(options&UIDNA_USE_STD3_RULES)!=0;
UBool isASCII=true;
UBool onlyLDH=true;
- const UChar *label=dest.getBuffer()+labelStart;
- const UChar *limit=label+labelLength;
+ const char16_t *label=dest.getBuffer()+labelStart;
+ const char16_t *limit=label+labelLength;
// Start after the initial "xn--".
// Ok to cast away const because we own the UnicodeString.
- for(UChar *s=const_cast<UChar *>(label+4); s<limit; ++s) {
- UChar c=*s;
+ for(char16_t *s=const_cast<char16_t *>(label+4); s<limit; ++s) {
+ char16_t c=*s;
if(c<=0x7f) {
if(c==0x2e) {
info.labelErrors|=UIDNA_ERROR_LABEL_HAS_DOT;
@@ -957,7 +946,7 @@ UTS46::markBadACELabel(UnicodeString &dest,
}
}
if(onlyLDH) {
- dest.insert(labelStart+labelLength, (UChar)0xfffd);
+ dest.insert(labelStart+labelLength, (char16_t)0xfffd);
if(dest.isBogus()) {
errorCode=U_MEMORY_ALLOCATION_ERROR;
return 0;
@@ -997,7 +986,7 @@ const uint32_t R_AL_AN_EN_ES_CS_ET_ON_BN_NSM_MASK=R_AL_MASK|EN_AN_MASK|ES_CS_ET_
// that a domain name is a BiDi domain name (has an RTL label) only after
// processing several earlier labels.
void
-UTS46::checkLabelBiDi(const UChar *label, int32_t labelLength, IDNAInfo &info) const {
+UTS46::checkLabelBiDi(const char16_t *label, int32_t labelLength, IDNAInfo &info) const {
// IDNA2008 BiDi rule
// Get the directionality of the first character.
UChar32 c;
@@ -1085,10 +1074,10 @@ UTS46::checkLabelBiDi(const UChar *label, int32_t labelLength, IDNAInfo &info) c
// Cannot contain uppercase A-Z.
// s[length-1] must be the trailing dot.
static UBool
-isASCIIOkBiDi(const UChar *s, int32_t length) {
+isASCIIOkBiDi(const char16_t *s, int32_t length) {
int32_t labelStart=0;
for(int32_t i=0; i<length; ++i) {
- UChar c=s[i];
+ char16_t c=s[i];
if(c==0x2e) { // dot
if(i>labelStart) {
c=s[i-1];
@@ -1146,7 +1135,7 @@ isASCIIOkBiDi(const char *s, int32_t length) {
}
UBool
-UTS46::isLabelOkContextJ(const UChar *label, int32_t labelLength) const {
+UTS46::isLabelOkContextJ(const char16_t *label, int32_t labelLength) const {
// [IDNA2008-Tables]
// 200C..200D ; CONTEXTJ # ZERO WIDTH NON-JOINER..ZERO WIDTH JOINER
for(int32_t i=0; i<labelLength; ++i) {
@@ -1215,7 +1204,7 @@ UTS46::isLabelOkContextJ(const UChar *label, int32_t labelLength) const {
}
void
-UTS46::checkLabelContextO(const UChar *label, int32_t labelLength, IDNAInfo &info) const {
+UTS46::checkLabelContextO(const char16_t *label, int32_t labelLength, IDNAInfo &info) const {
int32_t labelEnd=labelLength-1; // inclusive
int32_t arabicDigits=0; // -1 for 066x, +1 for 06Fx
for(int32_t i=0; i<=labelEnd; ++i) {
@@ -1341,13 +1330,13 @@ checkArgs(const void *label, int32_t length,
return false;
}
// sizeof(UIDNAInfo)=16 in the first API version.
- if(pInfo==NULL || pInfo->size<16) {
+ if(pInfo==nullptr || pInfo->size<16) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return false;
}
- if( (label==NULL ? length!=0 : length<-1) ||
- (dest==NULL ? capacity!=0 : capacity<0) ||
- (dest==label && label!=NULL)
+ if( (label==nullptr ? length!=0 : length<-1) ||
+ (dest==nullptr ? capacity!=0 : capacity<0) ||
+ (dest==label && label!=nullptr)
) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return false;
@@ -1365,8 +1354,8 @@ idnaInfoToStruct(IDNAInfo &info, UIDNAInfo *pInfo) {
U_CAPI int32_t U_EXPORT2
uidna_labelToASCII(const UIDNA *idna,
- const UChar *label, int32_t length,
- UChar *dest, int32_t capacity,
+ const char16_t *label, int32_t length,
+ char16_t *dest, int32_t capacity,
UIDNAInfo *pInfo, UErrorCode *pErrorCode) {
if(!checkArgs(label, length, dest, capacity, pInfo, pErrorCode)) {
return 0;
@@ -1381,8 +1370,8 @@ uidna_labelToASCII(const UIDNA *idna,
U_CAPI int32_t U_EXPORT2
uidna_labelToUnicode(const UIDNA *idna,
- const UChar *label, int32_t length,
- UChar *dest, int32_t capacity,
+ const char16_t *label, int32_t length,
+ char16_t *dest, int32_t capacity,
UIDNAInfo *pInfo, UErrorCode *pErrorCode) {
if(!checkArgs(label, length, dest, capacity, pInfo, pErrorCode)) {
return 0;
@@ -1397,8 +1386,8 @@ uidna_labelToUnicode(const UIDNA *idna,
U_CAPI int32_t U_EXPORT2
uidna_nameToASCII(const UIDNA *idna,
- const UChar *name, int32_t length,
- UChar *dest, int32_t capacity,
+ const char16_t *name, int32_t length,
+ char16_t *dest, int32_t capacity,
UIDNAInfo *pInfo, UErrorCode *pErrorCode) {
if(!checkArgs(name, length, dest, capacity, pInfo, pErrorCode)) {
return 0;
@@ -1413,8 +1402,8 @@ uidna_nameToASCII(const UIDNA *idna,
U_CAPI int32_t U_EXPORT2
uidna_nameToUnicode(const UIDNA *idna,
- const UChar *name, int32_t length,
- UChar *dest, int32_t capacity,
+ const char16_t *name, int32_t length,
+ char16_t *dest, int32_t capacity,
UIDNAInfo *pInfo, UErrorCode *pErrorCode) {
if(!checkArgs(name, length, dest, capacity, pInfo, pErrorCode)) {
return 0;
diff --git a/Build/source/libs/icu/icu-src/source/common/uvector.cpp b/Build/source/libs/icu/icu-src/source/common/uvector.cpp
index 729314ae95d..f93d73a3c69 100644
--- a/Build/source/libs/icu/icu-src/source/common/uvector.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/uvector.cpp
@@ -248,7 +248,7 @@ UBool UVector::removeElement(void* obj) {
return false;
}
-void UVector::removeAllElements(void) {
+void UVector::removeAllElements() {
if (deleter != nullptr) {
for (int32_t i=0; i<count; ++i) {
if (elements[i].pointer != nullptr) {
diff --git a/Build/source/libs/icu/icu-src/source/common/uvector.h b/Build/source/libs/icu/icu-src/source/common/uvector.h
index 1eb7d136e7a..1b2a58da86d 100644
--- a/Build/source/libs/icu/icu-src/source/common/uvector.h
+++ b/Build/source/libs/icu/icu-src/source/common/uvector.h
@@ -161,11 +161,11 @@ public:
UBool equals(const UVector &other) const;
- inline void* firstElement(void) const {return elementAt(0);}
+ inline void* firstElement() const {return elementAt(0);}
- inline void* lastElement(void) const {return elementAt(count-1);}
+ inline void* lastElement() const {return elementAt(count-1);}
- inline int32_t lastElementi(void) const {return elementAti(count-1);}
+ inline int32_t lastElementi() const {return elementAti(count-1);}
int32_t indexOf(void* obj, int32_t startIndex = 0) const;
@@ -187,9 +187,9 @@ public:
void removeAllElements();
- inline int32_t size(void) const {return count;}
+ inline int32_t size() const {return count;}
- inline UBool isEmpty(void) const {return count == 0;}
+ inline UBool isEmpty() const {return count == 0;}
UBool ensureCapacity(int32_t minimumCapacity, UErrorCode &status);
@@ -197,7 +197,7 @@ public:
* Change the size of this vector as follows: If newSize is
* smaller, then truncate the array, possibly deleting held
* elements for i >= newSize. If newSize is larger, grow the
- * array, filling in new slots with NULL.
+ * array, filling in new slots with nullptr.
*/
void setSize(int32_t newSize, UErrorCode &status);
@@ -328,20 +328,20 @@ public:
// It's okay not to have a virtual destructor (in UVector)
// because UStack has no special cleanup to do.
- inline UBool empty(void) const {return isEmpty();}
+ inline UBool empty() const {return isEmpty();}
- inline void* peek(void) const {return lastElement();}
+ inline void* peek() const {return lastElement();}
- inline int32_t peeki(void) const {return lastElementi();}
+ inline int32_t peeki() const {return lastElementi();}
/**
* Pop and return an element from the stack.
* For stacks with a deleter function, the caller takes ownership
* of the popped element.
*/
- void* pop(void);
+ void* pop();
- int32_t popi(void);
+ int32_t popi();
inline void* push(void* obj, UErrorCode &status) {
if (hasDeleter()) {
diff --git a/Build/source/libs/icu/icu-src/source/common/uvectr32.cpp b/Build/source/libs/icu/icu-src/source/common/uvectr32.cpp
index 952f51792b3..fb554729fe6 100644
--- a/Build/source/libs/icu/icu-src/source/common/uvectr32.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/uvectr32.cpp
@@ -30,7 +30,7 @@ UVector32::UVector32(UErrorCode &status) :
count(0),
capacity(0),
maxCapacity(0),
- elements(NULL)
+ elements(nullptr)
{
_init(DEFAULT_CAPACITY, status);
}
@@ -165,7 +165,7 @@ void UVector32::removeElementAt(int32_t index) {
}
}
-void UVector32::removeAllElements(void) {
+void UVector32::removeAllElements() {
count = 0;
}
@@ -229,7 +229,7 @@ UBool UVector32::expandCapacity(int32_t minimumCapacity, UErrorCode &status) {
return false;
}
int32_t* newElems = (int32_t *)uprv_realloc(elements, sizeof(int32_t)*newCap);
- if (newElems == NULL) {
+ if (newElems == nullptr) {
// We keep the original contents on the memory failure on realloc.
status = U_MEMORY_ALLOCATION_ERROR;
return false;
@@ -257,7 +257,7 @@ void UVector32::setMaxCapacity(int32_t limit) {
// New maximum capacity is smaller than the current size.
// Realloc the storage to the new, smaller size.
int32_t* newElems = (int32_t *)uprv_realloc(elements, sizeof(int32_t)*maxCapacity);
- if (newElems == NULL) {
+ if (newElems == nullptr) {
// Realloc to smaller failed.
// Just keep what we had. No need to call it a failure.
return;
@@ -273,7 +273,7 @@ void UVector32::setMaxCapacity(int32_t limit) {
* Change the size of this vector as follows: If newSize is smaller,
* then truncate the array, possibly deleting held elements for i >=
* newSize. If newSize is larger, grow the array, filling in new
- * slots with NULL.
+ * slots with nullptr.
*/
void UVector32::setSize(int32_t newSize) {
int32_t i;
diff --git a/Build/source/libs/icu/icu-src/source/common/uvectr32.h b/Build/source/libs/icu/icu-src/source/common/uvectr32.h
index a7fada38335..2841391f573 100644
--- a/Build/source/libs/icu/icu-src/source/common/uvectr32.h
+++ b/Build/source/libs/icu/icu-src/source/common/uvectr32.h
@@ -107,7 +107,7 @@ public:
UBool equals(const UVector32 &other) const;
- inline int32_t lastElementi(void) const;
+ inline int32_t lastElementi() const;
int32_t indexOf(int32_t elem, int32_t startIndex = 0) const;
@@ -123,9 +123,9 @@ public:
void removeAllElements();
- inline int32_t size(void) const;
+ inline int32_t size() const;
- inline UBool isEmpty(void) const;
+ inline UBool isEmpty() const;
// Inline. Use this one for speedy size check.
inline UBool ensureCapacity(int32_t minimumCapacity, UErrorCode &status);
@@ -197,11 +197,11 @@ private:
// In the original UVector, these were in a separate derived class, UStack.
// Here in UVector32, they are all together.
public:
- inline UBool empty(void) const; // TODO: redundant, same as empty(). Remove it?
+ inline UBool empty() const; // TODO: redundant, same as empty(). Remove it?
- inline int32_t peeki(void) const;
+ inline int32_t peeki() const;
- inline int32_t popi(void);
+ inline int32_t popi();
inline int32_t push(int32_t i, UErrorCode &status);
@@ -234,7 +234,7 @@ inline void UVector32::addElement(int32_t elem, UErrorCode &status) {
inline int32_t *UVector32::reserveBlock(int32_t size, UErrorCode &status) {
if (ensureCapacity(count+size, status) == false) {
- return NULL;
+ return nullptr;
}
int32_t *rp = elements+count;
count += size;
@@ -252,11 +252,11 @@ inline int32_t *UVector32::popFrame(int32_t size) {
-inline int32_t UVector32::size(void) const {
+inline int32_t UVector32::size() const {
return count;
}
-inline UBool UVector32::isEmpty(void) const {
+inline UBool UVector32::isEmpty() const {
return count == 0;
}
@@ -264,7 +264,7 @@ inline UBool UVector32::contains(int32_t obj) const {
return indexOf(obj) >= 0;
}
-inline int32_t UVector32::lastElementi(void) const {
+inline int32_t UVector32::lastElementi() const {
return elementAti(count-1);
}
@@ -279,11 +279,11 @@ inline int32_t *UVector32::getBuffer() const {
// UStack inlines
-inline UBool UVector32::empty(void) const {
+inline UBool UVector32::empty() const {
return isEmpty();
}
-inline int32_t UVector32::peeki(void) const {
+inline int32_t UVector32::peeki() const {
return lastElementi();
}
@@ -292,7 +292,7 @@ inline int32_t UVector32::push(int32_t i, UErrorCode &status) {
return i;
}
-inline int32_t UVector32::popi(void) {
+inline int32_t UVector32::popi() {
int32_t result = 0;
if (count > 0) {
count--;
diff --git a/Build/source/libs/icu/icu-src/source/common/uvectr64.cpp b/Build/source/libs/icu/icu-src/source/common/uvectr64.cpp
index 8bd5cd78393..05559dd8337 100644
--- a/Build/source/libs/icu/icu-src/source/common/uvectr64.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/uvectr64.cpp
@@ -27,7 +27,7 @@ UVector64::UVector64(UErrorCode &status) :
count(0),
capacity(0),
maxCapacity(0),
- elements(NULL)
+ elements(nullptr)
{
_init(DEFAULT_CAPACITY, status);
}
@@ -111,7 +111,7 @@ void UVector64::insertElementAt(int64_t elem, int32_t index, UErrorCode &status)
/* else index out of range */
}
-void UVector64::removeAllElements(void) {
+void UVector64::removeAllElements() {
count = 0;
}
@@ -147,7 +147,7 @@ UBool UVector64::expandCapacity(int32_t minimumCapacity, UErrorCode &status) {
return false;
}
int64_t* newElems = (int64_t *)uprv_realloc(elements, sizeof(int64_t)*newCap);
- if (newElems == NULL) {
+ if (newElems == nullptr) {
// We keep the original contents on the memory failure on realloc.
status = U_MEMORY_ALLOCATION_ERROR;
return false;
@@ -175,7 +175,7 @@ void UVector64::setMaxCapacity(int32_t limit) {
// New maximum capacity is smaller than the current size.
// Realloc the storage to the new, smaller size.
int64_t* newElems = (int64_t *)uprv_realloc(elements, sizeof(int64_t)*maxCapacity);
- if (newElems == NULL) {
+ if (newElems == nullptr) {
// Realloc to smaller failed.
// Just keep what we had. No need to call it a failure.
return;
@@ -191,7 +191,7 @@ void UVector64::setMaxCapacity(int32_t limit) {
* Change the size of this vector as follows: If newSize is smaller,
* then truncate the array, possibly deleting held elements for i >=
* newSize. If newSize is larger, grow the array, filling in new
- * slots with NULL.
+ * slots with nullptr.
*/
void UVector64::setSize(int32_t newSize) {
int32_t i;
diff --git a/Build/source/libs/icu/icu-src/source/common/uvectr64.h b/Build/source/libs/icu/icu-src/source/common/uvectr64.h
index 070e2dd67d2..d719e6d0ff7 100644
--- a/Build/source/libs/icu/icu-src/source/common/uvectr64.h
+++ b/Build/source/libs/icu/icu-src/source/common/uvectr64.h
@@ -106,7 +106,7 @@ public:
//UBool equals(const UVector64 &other) const;
- inline int64_t lastElementi(void) const;
+ inline int64_t lastElementi() const;
//int32_t indexOf(int64_t elem, int32_t startIndex = 0) const;
@@ -122,9 +122,9 @@ public:
void removeAllElements();
- inline int32_t size(void) const;
+ inline int32_t size() const;
- inline UBool isEmpty(void) const { return count == 0; }
+ inline UBool isEmpty() const { return count == 0; }
// Inline. Use this one for speedy size check.
inline UBool ensureCapacity(int32_t minimumCapacity, UErrorCode &status);
@@ -186,11 +186,11 @@ private:
// In the original UVector, these were in a separate derived class, UStack.
// Here in UVector64, they are all together.
public:
- //UBool empty(void) const; // TODO: redundant, same as empty(). Remove it?
+ //UBool empty() const; // TODO: redundant, same as empty(). Remove it?
- //int64_t peeki(void) const;
+ //int64_t peeki() const;
- inline int64_t popi(void);
+ inline int64_t popi();
inline int64_t push(int64_t i, UErrorCode &status);
@@ -223,7 +223,7 @@ inline void UVector64::addElement(int64_t elem, UErrorCode &status) {
inline int64_t *UVector64::reserveBlock(int32_t size, UErrorCode &status) {
if (ensureCapacity(count+size, status) == false) {
- return NULL;
+ return nullptr;
}
int64_t *rp = elements+count;
count += size;
@@ -241,11 +241,11 @@ inline int64_t *UVector64::popFrame(int32_t size) {
-inline int32_t UVector64::size(void) const {
+inline int32_t UVector64::size() const {
return count;
}
-inline int64_t UVector64::lastElementi(void) const {
+inline int64_t UVector64::lastElementi() const {
return elementAti(count-1);
}
@@ -265,7 +265,7 @@ inline int64_t UVector64::push(int64_t i, UErrorCode &status) {
return i;
}
-inline int64_t UVector64::popi(void) {
+inline int64_t UVector64::popi() {
int64_t result = 0;
if (count > 0) {
count--;
diff --git a/Build/source/libs/icu/icu-src/source/common/wintz.cpp b/Build/source/libs/icu/icu-src/source/common/wintz.cpp
index 1bc08ae6548..ef9cd68019d 100644
--- a/Build/source/libs/icu/icu-src/source/common/wintz.cpp
+++ b/Build/source/libs/icu/icu-src/source/common/wintz.cpp
@@ -69,7 +69,7 @@ typedef struct _REG_TZI_FORMAT {
* as this API returns a non-localized time zone name which can be then mapped to an ICU time zone.
*
* However, in some RDP/terminal services situations, this struct isn't always fully complete, and the TimeZoneKeyName
-* field of the struct might be NULL. This can happen with some 3rd party RDP clients, and also when using older versions
+* field of the struct might be nullptr. This can happen with some 3rd party RDP clients, and also when using older versions
* of the RDP protocol, which don't send the newer TimeZoneKeyNamei information and only send the StandardName and DaylightName.
*
* Since these 3rd party clients and older RDP clients only send the pre-Vista time zone information to the server, this means that we
@@ -143,14 +143,14 @@ uprv_detectWindowsTimeZone()
//
// For example, a time zone that is 3 hours ahead of UTC (UTC+03:00) would have a Bias value of -180, and the
// corresponding time zone ID would be "Etc/GMT-3". (So there is no need to negate utcOffsetMins below.)
- int ret = snprintf(gmtOffsetTz, UPRV_LENGTHOF(gmtOffsetTz), "Etc/GMT%+ld", utcOffsetMins / 60);
+ int ret = snprintf(gmtOffsetTz, sizeof(gmtOffsetTz), "Etc/GMT%+ld", utcOffsetMins / 60);
if (ret > 0 && ret < UPRV_LENGTHOF(gmtOffsetTz)) {
return uprv_strdup(gmtOffsetTz);
}
}
}
- // If DST is NOT disabled, but the TimeZoneKeyName field of the struct is NULL, then we may be dealing with a
+ // If DST is NOT disabled, but the TimeZoneKeyName field of the struct is nullptr, then we may be dealing with a
// RDP/terminal services session where the 'Time Zone Redirection' feature is enabled. However, either the RDP
// client sent the server incomplete info (some 3rd party RDP clients only send the StandardName and DaylightName,
// but do not send the important TimeZoneKeyName), or if the RDP server has not appropriately populated the struct correctly.
@@ -295,7 +295,7 @@ uprv_detectWindowsTimeZone()
int geoId = GetUserGeoID(GEOCLASS_NATION);
int regionCodeLen = GetGeoInfoW(geoId, GEO_ISO2, regionCodeW, UPRV_LENGTHOF(regionCodeW), 0);
- const UChar *icuTZ16 = nullptr;
+ const char16_t *icuTZ16 = nullptr;
int32_t tzListLen = 0;
if (regionCodeLen != 0) {
diff --git a/Build/source/libs/icu/icu-src/source/config/mh-darwin-ppc b/Build/source/libs/icu/icu-src/source/config/mh-darwin-ppc
new file mode 100644
index 00000000000..c99a3f68294
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/config/mh-darwin-ppc
@@ -0,0 +1,85 @@
+## -*-makefile-*-
+## Copyright (C) 2016 and later: Unicode, Inc. and others.
+## License & terms of use: http://www.unicode.org/copyright.html
+## Darwin-specific setup (Darwin is the Mac OS X developer preview, successor
+## to Rhapsody, aka Mac OS X Server)
+## Copyright (c) 1999-2012 International Business Machines Corporation and
+## others. All Rights Reserved.
+
+## Flags for position independent code
+SHAREDLIBCFLAGS = -dynamic
+SHAREDLIBCXXFLAGS = -dynamic
+SHAREDLIBCPPFLAGS =
+
+# Do not export internal methods by default
+LIBCFLAGS += -fvisibility=hidden
+LIBCXXFLAGS += -fvisibility=hidden
+
+# Pad out the paths to the maximum possible length
+LD_FLAGS += -headerpad_max_install_names
+
+# We do not need to see the stderr message that the archive was made.
+ARFLAGS += -c
+
+## Commands to compile
+COMPILE.c= $(CC) $(DEFS) $(CPPFLAGS) $(CFLAGS) -fno-common -c
+COMPILE.cc= $(CXX) $(DEFS) $(CPPFLAGS) $(CXXFLAGS) -fno-common -c
+
+## Commands to make a shared library
+SHLIB.c= $(CC) -dynamiclib -dynamic $(CFLAGS) $(LDFLAGS) $(LD_SOOPTIONS)
+SHLIB.cc= $(CXX) -dynamiclib -dynamic $(CXXFLAGS) $(LDFLAGS) $(LD_SOOPTIONS)
+
+## Compiler switches to embed a library name and version information
+ifeq ($(ENABLE_RPATH),YES)
+LD_SONAME = -Wl,-compatibility_version -Wl,$(SO_TARGET_VERSION_MAJOR) -Wl,-current_version -Wl,$(SO_TARGET_VERSION) -install_name $(libdir)/$(notdir $(MIDDLE_SO_TARGET))
+else
+LD_SONAME = -Wl,-compatibility_version -Wl,$(SO_TARGET_VERSION_MAJOR) -Wl,-current_version -Wl,$(SO_TARGET_VERSION) -install_name $(notdir $(MIDDLE_SO_TARGET)) $(PKGDATA_TRAILING_SPACE)
+endif
+
+## Compiler switch to embed a runtime search path
+LD_RPATH=
+LD_RPATH_PRE= -Wl,-rpath,
+
+## Environment variable to set a runtime search path
+LDLIBRARYPATH_ENVVAR = DYLD_LIBRARY_PATH
+
+GENCCODE_ASSEMBLY=-a gcc-darwin-ppc
+
+## Shared object suffix
+SO= dylib
+## Non-shared intermediate object suffix
+STATIC_O = ao
+
+## Override Versioned target for a shared library.
+FINAL_SO_TARGET= $(basename $(SO_TARGET)).$(SO_TARGET_VERSION).$(SO)
+MIDDLE_SO_TARGET= $(basename $(SO_TARGET)).$(SO_TARGET_VERSION_MAJOR).$(SO)
+
+## Compilation and dependency rules
+%.$(STATIC_O): $(srcdir)/%.c
+ $(call SILENT_COMPILE,$(strip $(COMPILE.c) $(STATICCPPFLAGS) $(STATICCFLAGS)) -MMD -MT "$*.d $*.o $*.$(STATIC_O)" -o $@ $<)
+%.o: $(srcdir)/%.c
+ $(call SILENT_COMPILE,$(strip $(COMPILE.c) $(DYNAMICCPPFLAGS) $(DYNAMICCFLAGS)) -MMD -MT "$*.d $*.o $*.$(STATIC_O)" -o $@ $<)
+
+%.$(STATIC_O): $(srcdir)/%.cpp
+ $(call SILENT_COMPILE,$(strip $(COMPILE.cc) $(STATICCPPFLAGS) $(STATICCXXFLAGS)) -MMD -MT "$*.d $*.o $*.$(STATIC_O)" -o $@ $<)
+%.o: $(srcdir)/%.cpp
+ $(call SILENT_COMPILE,$(strip $(COMPILE.cc) $(DYNAMICCPPFLAGS) $(DYNAMICCXXFLAGS)) -MMD -MT "$*.d $*.o $*.$(STATIC_O)" -o $@ $<)
+
+## Versioned libraries rules
+
+%.$(SO_TARGET_VERSION_MAJOR).$(SO): %.$(SO_TARGET_VERSION).$(SO)
+ $(RM) $@ && ln -s ${<F} $@
+%.$(SO): %.$(SO_TARGET_VERSION_MAJOR).$(SO)
+ $(RM) $@ && ln -s ${*F}.$(SO_TARGET_VERSION).$(SO) $@
+
+# tzcode option
+TZORIG_EXTRA_CFLAGS=-DSTD_INSPIRED
+
+# genren opts
+GENREN_PL_OPTS=-x Mach-O -n '-g' -p '| c++filt'
+
+## Remove shared library 's'
+STATIC_PREFIX_WHEN_USED =
+STATIC_PREFIX =
+
+## End Darwin-specific setup
diff --git a/Build/source/libs/icu/icu-src/source/configure b/Build/source/libs/icu/icu-src/source/configure
index 84c5662f4c5..76222cb27cf 100755
--- a/Build/source/libs/icu/icu-src/source/configure
+++ b/Build/source/libs/icu/icu-src/source/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for ICU 72.1.
+# Generated by GNU Autoconf 2.69 for ICU 74.2.
#
# Report bugs to <http://icu-project.org/bugs>.
#
@@ -582,8 +582,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='ICU'
PACKAGE_TARNAME='International Components for Unicode'
-PACKAGE_VERSION='72.1'
-PACKAGE_STRING='ICU 72.1'
+PACKAGE_VERSION='74.2'
+PACKAGE_STRING='ICU 74.2'
PACKAGE_BUGREPORT='http://icu-project.org/bugs'
PACKAGE_URL='http://icu-project.org'
@@ -1375,7 +1375,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures ICU 72.1 to adapt to many kinds of systems.
+\`configure' configures ICU 74.2 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1442,7 +1442,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of ICU 72.1:";;
+ short | recursive ) echo "Configuration of ICU 74.2:";;
esac
cat <<\_ACEOF
@@ -1489,7 +1489,7 @@ Optional Packages:
library shared library (.dll/.so/etc.)
static static library (.a/.lib/etc.)
auto build shared if possible (default)
- See https://unicode-org.github.io/icu/userguide/icudata for more info.
+ See https://unicode-org.github.io/icu/userguide/icu_data for more info.
--with-library-suffix=suffix tag a suffix to the library names default=
Some influential environment variables:
@@ -1580,7 +1580,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-ICU configure 72.1
+ICU configure 74.2
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2326,7 +2326,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by ICU $as_me 72.1, which was
+It was created by ICU $as_me 74.2, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -5334,6 +5334,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
*-*ibm-openedition*|*-*-os390*) icu_cv_host_frag=mh-os390 ;;
*-*-os400*) icu_cv_host_frag=mh-os400 ;;
*-apple-rhapsody*) icu_cv_host_frag=mh-darwin ;;
+powerpc*-apple-darwin*) icu_cv_host_frag=mh-darwin-ppc ;;
*-apple-darwin*) icu_cv_host_frag=mh-darwin ;;
*-*-beos) icu_cv_host_frag=mh-beos ;;
*-*-haiku) icu_cv_host_frag=mh-haiku ;;
@@ -8603,7 +8604,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by ICU $as_me 72.1, which was
+This file was extended by ICU $as_me 74.2, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -8657,7 +8658,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-ICU config.status 72.1
+ICU config.status 74.2
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff --git a/Build/source/libs/icu/icu-src/source/configure.ac b/Build/source/libs/icu/icu-src/source/configure.ac
index 6a4031284a4..2d7eb300173 100644
--- a/Build/source/libs/icu/icu-src/source/configure.ac
+++ b/Build/source/libs/icu/icu-src/source/configure.ac
@@ -1149,7 +1149,7 @@ AC_ARG_WITH(data-packaging,
library shared library (.dll/.so/etc.)
static static library (.a/.lib/etc.)
auto build shared if possible (default)
- See https://unicode-org.github.io/icu/userguide/icudata for more info.],
+ See https://unicode-org.github.io/icu/userguide/icu_data for more info.],
[case "${withval}" in
files|archive|library) datapackaging=$withval ;;
auto) datapackaging=$withval ;;
diff --git a/Build/source/libs/icu/icu-src/source/data/BUILDRULES.py b/Build/source/libs/icu/icu-src/source/data/BUILDRULES.py
index 899cba25b48..8662acfb60e 100644
--- a/Build/source/libs/icu/icu-src/source/data/BUILDRULES.py
+++ b/Build/source/libs/icu/icu-src/source/data/BUILDRULES.py
@@ -16,6 +16,23 @@ import sys
def generate(config, io, common_vars):
requests = []
+ # By default, exclude collation data that mimics the order of some large legacy charsets.
+ # We do this in "subtractive" strategy by inserting a resourceFilter.
+ # Later rules from an explicit filter file may override this default behavior.
+ # (In "additive" strategy this is unnecessary.)
+ if config.strategy == "subtractive":
+ filters = config.filters_json_data.setdefault("resourceFilters", [])
+ omit_charset_collations = {
+ "categories": [
+ "coll_tree"
+ ],
+ "rules": [
+ "-/collations/big5han",
+ "-/collations/gb2312han"
+ ]
+ }
+ filters.insert(0, omit_charset_collations)
+
if len(io.glob("misc/*")) == 0:
print("Error: Cannot find data directory; please specify --src_dir", file=sys.stderr)
exit(1)
@@ -27,6 +44,7 @@ def generate(config, io, common_vars):
requests += generate_conversion_mappings(config, io, common_vars)
requests += generate_brkitr_brk(config, io, common_vars)
requests += generate_brkitr_lstm(config, io, common_vars)
+ requests += generate_brkitr_adaboost(config, io, common_vars)
requests += generate_stringprep(config, io, common_vars)
requests += generate_brkitr_dictionaries(config, io, common_vars)
requests += generate_normalization(config, io, common_vars)
@@ -184,7 +202,7 @@ def generate_brkitr_brk(config, io, common_vars):
category = "brkitr_rules",
dep_targets =
[DepTarget("cnvalias"),
- DepTarget("ulayout"), DepTarget("uemoji"), DepTarget("lstm_res")],
+ DepTarget("ulayout"), DepTarget("uemoji"), DepTarget("lstm_res"), DepTarget("adaboost_res")],
input_files = input_files,
output_files = output_files,
tool = IcuTool("genbrk"),
@@ -506,6 +524,32 @@ def generate_brkitr_lstm(config, io, common_vars):
)
]
+def generate_brkitr_adaboost(config, io, common_vars):
+ input_files = [InFile(filename) for filename in io.glob("brkitr/adaboost/*.txt")]
+ input_basenames = [v.filename[16:] for v in input_files]
+ output_files = [
+ OutFile("brkitr/%s.res" % v[:-4])
+ for v in input_basenames
+ ]
+ return [
+ RepeatedOrSingleExecutionRequest(
+ name = "adaboost_res",
+ category = "brkitr_adaboost",
+ dep_targets = [],
+ input_files = input_files,
+ output_files = output_files,
+ tool = IcuTool("genrb"),
+ args = "-s {IN_DIR}/brkitr/adaboost -d {OUT_DIR}/brkitr -i {OUT_DIR} "
+ "-k "
+ "{INPUT_BASENAME}",
+ format_with = {
+ },
+ repeat_with = {
+ "INPUT_BASENAME": utils.SpaceSeparatedList(input_basenames)
+ }
+ )
+ ]
+
def generate_tree(
config,
io,
diff --git a/Build/source/libs/icu/icu-src/source/data/cldr-icu-readme.txt b/Build/source/libs/icu/icu-src/source/data/cldr-icu-readme.txt
index 72821872e1c..128bf9e7f03 100644
--- a/Build/source/libs/icu/icu-src/source/data/cldr-icu-readme.txt
+++ b/Build/source/libs/icu/icu-src/source/data/cldr-icu-readme.txt
@@ -2,367 +2,8 @@
# License & terms of use: http://www.unicode.org/copyright.html
# Copyright (C) 2010-2014, International Business Machines Corporation and others.
# All Rights Reserved.
-#
-# Commands for regenerating ICU4C locale data (.txt files) from CLDR,
-# updated to apply to CLDR 37 / ICU 67 and later versions.
-#
-# The process requires local copies of
-# - CLDR (the source of most of the data, and some Java tools)
-# - The complete ICU source tree, including:
-# tools - includes the LdmlConverter build tool and associated config files
-# icu4c - the target for converted CLDR data, and source for ICU4J data;
-# includes tests for the converted data
-# icu4j - the target for updated data jars; includes tests for the converted
-# data
-#
-# For an official CLDR data integration into ICU, these should be clean, freshly
-# checked-out. For released CLDR sources, an alternative to checking out sources
-# for a given version is downloading the zipped sources for the common (core.zip)
-# and tools (tools.zip) directory subtrees from the Data column in
-# [http://cldr.unicode.org/index/downloads].
-#
-# The versions of each of these must match. Included with the release notes for
-# ICU is the version number and/or a CLDR git tag name for the revision of CLDR
-# that was the source of the data for that release of ICU.
-#
-# Besides a standard JDK, the process also requires ant and maven
-# (http://ant.apache.org/),
-# plus the xml-apis.jar from the Apache xalan package
-# (http://xml.apache.org/xalan-j/downloads.html).
-#
-# You will also need to have performed the CLDR Maven setup (non-Eclipse version)
-# per http://cldr.unicode.org/development/maven
-#
-# Note: Enough things can (and will) fail in this process that it is best to
-# run the commands separately from an interactive shell. They should all
-# copy and paste without problems.
-#
-# It is often useful to save logs of the output of many of the steps in this
-# process. The commands below put log files in /tmp; you may want to put them
-# somewhere else.
-#
-#----
-#
-# There are several environment variables that need to be defined.
-#
-# a) Java- and ant-related variables
-#
-# JAVA_HOME: Path to JDK (a directory, containing e.g. bin/java, bin/javac,
-# etc.); on many systems this can be set using
-# `/usr/libexec/java_home`.
-#
-# ANT_OPTS: You may want to set:
-#
-# -Xmx4096m, to give Java more memory; otherwise it may run out
-# of heap.
-#
-# b) CLDR-related variables
-#
-# CLDR_DIR: This is the path to the to root of standard CLDR sources, below
-# which are the common and tools directories.
-#
-# CLDR_CLASSES: Path to the CLDR Tools classes directory. If not set, defaults
-# to $CLDR_DIR/tools/java/classes
-#
-# CLDR_TMP_DIR: Parent of temporary CLDR production data.
-# Defaults to $CLDR_DIR/../cldr-aux (sibling to CLDR_DIR).
-#
-# *** NOTE ***: In CLDR 36 and 37, the GenerateProductionData tool
-# no longer generates data by default into $CLDR_TMP_DIR/production;
-# instead it generates data into $CLDR_DIR/../cldr-staging/production
-# (though there is a command-line option to override this). However
-# the rest of the build still assumes that the generated data is in
-# $CLDR_TMP_DIR/production. So CLDR_TMP_DIR must be defined to be
-# $CLDR_DIR/../cldr-staging
-#
-# c) ICU-related variables
-# These variables only need to be set if you're directly reusing the
-# commands below.
-#
-# ICU4C_DIR: Path to root of ICU4C sources, below which is the source dir.
-#
-# ICU4J_ROOT: Path to root of ICU4J sources, below which is the main dir.
-#
-# TOOLS_ROOT: Path to root of ICU tools directory, below which is (e.g.) the
-# cldr and unicodetools dirs.
-#
-#----
-#
-# If you are adding or removing locales, or specific kinds of locale data,
-# there are some xml files in the ICU sources that need to be updated (these xml
-# files are used in addition to the CLDR files as inputs to the CLDR data build
-# process for ICU):
-#
-# The primary file to edit for ICU 67 and later is
-#
-# $TOOLS_ROOT/cldr/cldr-to-icu/build-icu-data.xml
-#
-#----
-#
-# For an official CLDR data integration into ICU, there are some additional
-# considerations:
-#
-# a) Don't commit anything in ICU sources (and possibly any changes in CLDR
-# sources, depending on their nature) until you have finished testing and
-# resolving build issues and test failures for both ICU4C and ICU4J.
-#
-# b) There are version numbers that may need manual updating in CLDR (other
-# version numbers get updated automatically, based on these):
-#
-# common/dtd/ldml.dtd - update cldrVersion
-# common/dtd/ldmlBCP47.dtd - update cldrVersion
-# common/dtd/ldmlSupplemental.dtd - update cldrVersion
-# common/dtd/ldmlSupplemental.dtd - updateunicodeVersion
-# keyboards/dtd/ldmlKeyboard.dtd - update cldrVersion
-# tools/java/org/unicode/cldr/util/CLDRFile.java - update GEN_VERSION
-#
-# c) After everything is committed, you will need to tag the CLDR and ICU
-# sources that ended up being used for the integration; see step 16
-# below.
-#
-################################################################################
-
-# 1a. Java and ant variables, adjust for your system
-
-export JAVA_HOME=`/usr/libexec/java_home`
-export ANT_OPTS="-Xmx4096m"
-
-# 1b. CLDR variables, adjust for your setup; with cygwin it might be e.g.
-# CLDR_DIR=`cygpath -wp /build/cldr`
-
-export CLDR_DIR=$HOME/cldr-myfork
-
-# 1c. ICU variables
-
-export ICU4C_DIR=$HOME/icu-myfork/icu4c
-export ICU4J_ROOT=$HOME/icu-myfork/icu4j
-export TOOLS_ROOT=$HOME/icu-myfork/tools
-
-# 1d. Directory for logs/notes (create if does not exist)
-
-export NOTES=...(some directory)...
-mkdir -p $NOTES
-
-# 2a. Configure ICU4C, build and test without new data first, to verify that
-# there are no pre-existing errors. Here <platform> is the runConfigureICU
-# code for the platform you are building, e.g. Linux, MacOSX, Cygwin.
-# (optionally build with debug enabled)
-
-cd $ICU4C_DIR/source
-./runConfigureICU [--enable-debug] <platform>
-make clean
-make check 2>&1 | tee $NOTES/icu4c-oldData-makeCheck.txt
-
-# 2b. Now with ICU4J, build and test without new data first, to verify that
-# there are no pre-existing errors (or at least to have the pre-existing errors
-# as a base for comparison):
-
-cd $ICU4J_ROOT
-ant clean
-ant check 2>&1 | tee $NOTES/icu4j-oldData-antCheck.txt
-
-# 3. Make pre-adjustments as necessary
-# 3a. Copy latest relevant CLDR dtds to ICU
-cp -p $CLDR_DIR/common/dtd/ldml.dtd $ICU4C_DIR/source/data/dtd/cldr/common/dtd/
-cp -p $CLDR_DIR/common/dtd/ldmlICU.dtd $ICU4C_DIR/source/data/dtd/cldr/common/dtd/
-
-# 3b. Update the cldr-icu tooling to use the latest tagged version of ICU
-open $TOOLS_ROOT/cldr/cldr-to-icu/pom.xml
-# search for icu4j-for-cldr and update to the latest tagged version per instructions
-
-# 3c. Update the build for any new icu version, added locales, etc.
-open $TOOLS_ROOT/cldr/cldr-to-icu/build-icu-data.xml
-# update icuVersion, icuDataVersion if necessary
-# update lists of locales to include if necessary
-
-# 4. Build and install the CLDR jar
-
-cd $TOOLS_ROOT/cldr
-ant install-cldr-libs
-
-See the $TOOLS_ROOT/cldr/lib/README.txt file for more information on the CLDR
-jar and the install-cldr-jars.sh script.
-
-# 5a. Generate the CLDR production data. This process uses ant with ICU's
-# data/build.xml
-#
-# Running "ant cleanprod" is necessary to clean out the production data directory
-# (usually $CLDR_TMP_DIR/production ), required if any CLDR data has changed.
-#
-# Running "ant setup" is not required, but it will print useful errors to
-# debug issues with your path when it fails.
-
-cd $ICU4C_DIR/source/data
-ant cleanprod
-ant setup
-ant proddata 2>&1 | tee $NOTES/cldr-newData-proddataLog.txt
-
-# 5b. Build the new ICU4C data files; these include .txt files and .py files.
-# These new files will replace whatever was already present in the ICU4C sources.
-# This process uses the LdmlConverter in $TOOLS_ROOT/cldr/cldr-to-icu/;
-# see $TOOLS_ROOT/cldr/cldr-to-icu/README.txt
-#
-# This process will take several minutes, during most of which there will be no log
-# output (so do not assume nothing is happening). Keep a log so you can investigate
-# anything that looks suspicious.
-#
-# Note that "ant clean" should not be run before this. The build-icu-data.xml process
-# will automatically run its own "clean" step to delete files it cannot determine to
-# be ones that it would generate, except for pasts listed in <retain> elements such as
-# coll/de__PHONEBOOK.txt, coll/de_.txt, etc.
-#
-# Before running Ant to regenerate the data, make any necessary changes to the
-# build-icu-data.xml file, such as adding new locales etc.
-
-cd $TOOLS_ROOT/cldr/cldr-to-icu
-ant -f build-icu-data.xml -DcldrDataDir="$CLDR_TMP_DIR/production" | tee $NOTES/cldr-newData-builddataLog.txt
-
-# 5c. Update the CLDR testData files needed by ICU4C and ICU4J tests, ensuring
-# they're representative of the newest CLDR data.
-
-cd $TOOLS_ROOT/cldr
-ant copy-cldr-testdata
-
-# 5d. Copy from CLDR common/testData/localeIdentifiers/localeCanonicalization.txt
-# into icu4c/source/test/testdata/localeCanonicalization.txt
-# and icu4j/main/tests/core/src/com/ibm/icu/dev/data/unicode/localeCanonicalization.txt
-# and add the following line to the beginning of these two files
-# # File copied from cldr common/testData/localeIdentifiers/localeCanonicalization.txt
-
-# 5e. For the time being, manually re-add the lstm entries in data/brkitr/root.txt
-open $ICU4C_DIR/source/data/brkitr/root.txt
-
-# paste the following block after the dictionaries block and before the final closing '}':
- lstm{
- Thai{"Thai_graphclust_model4_heavy.res"}
- Mymr{"Burmese_graphclust_model5_heavy.res"}
- }
-
-# 6. Check which data files have modifications, which have been added or removed
-# (if there are no changes, you may not need to proceed further). Make sure the
-# list seems reasonable.
-
-cd $ICU4C_DIR/..
-git status
-
-# 6a. You may also want to check which files were modified in CLDR production data:
-
-cd $CLDR_TMP_DIR
-git status
-
-# 7. Fix any errors, investigate any warnings.
-#
-# Fixing may entail modifying CLDR source data or TOOLS_ROOT config files or
-# tooling.
-
-# 8. Now rebuild ICU4C with the new data and run make check tests.
-# Again, keep a log so you can investigate the errors.
-cd $ICU4C_DIR/source
-
-# 8a. If any files were added or removed (likely), re-run configure:
-./runConfigureICU [--enable-debug] <platform>
-make clean
-
-# 8b. Now do the rebuild.
-make check 2>&1 | tee $NOTES/icu4c-newData-makeCheck.txt
-
-# 9. Investigate each test case failure. The first run processing new CLDR data
-# from the Survey Tool can result in thousands of failures (in many cases, one
-# CLDR data fix can resolve hundreds of test failures). If the error is caused
-# by bad CLDR data, then file a CLDR bug, fix the data, and regenerate from
-# step 4. If the data is OK but the testcase needs to be updated because the
-# data has legitimately changed, then update the testcase. You will check in
-# the updated testcases along with the new ICU data at the end of this process.
-# Note that if the new data has any differences in structure, you will have to
-# update test/testdata/structLocale.txt or /tsutil/cldrtest/TestLocaleStructure
-# may fail.
-# Repeat steps 4-8 until there are no errors.
-
-# 10. You can also run the make check tests in exhaustive mode. As an alternative
-# you can run them as part of the pre-merge tests by adding the following as a
-# comment in the pull request: "/azp run CI-Exhaustive". You should do one or the
-# other; the exhaustive tests are *not* run automatically on each pull request,
-# and are only run occasionally on the default branch.
-
-cd $ICU4C_DIR/source
-export INTLTEST_OPTS="-e"
-export CINTLTST_OPTS="-e"
-make check 2>&1 | tee $NOTES/icu4c-newData-makeCheckEx.txt
-
-# 11. Again, investigate each failure, fixing CLDR data or ICU test cases as
-# appropriate, and repeating steps 4-8 and 10 until there are no errors.
-
-# 12. Transfer the data to ICU4J:
-cd $ICU4C_DIR/source
-
-# 12a. You need to reconfigure ICU4C to include the unicore data.
-ICU_DATA_BUILDTOOL_OPTS=--include_uni_core_data ./runConfigureICU <platform>
-
-# 12b. Now build the jar files.
-cd $ICU4C_DIR/source/data
-# The following 2 lines are required to include the unicore data:
-make clean
-make -j6
-make icu4j-data-install
-cd $ICU4C_DIR/source/test/testdata
-make icu4j-data-install
-
-# 13. Now rebuild ICU4J with the new data and run tests:
-# Keep a log so you can investigate the errors.
-
-cd $ICU4J_ROOT
-ant check 2>&1 | tee $NOTES/icu4j-newData-antCheck.txt
-
-# 14. Investigate test case failures; fix test cases and repeat from step 12,
-# or fix CLDR data and repeat from step 4, as appropriate, until there are no
-# more failures in ICU4C or ICU4J (except failures that were present before you
-# began testing the new CLDR data).
-
-# Note that certain data changes and related test failures may require the
-# rebuilding of other kinds of data. For example:
-# a) Changes to locale matching data may cause failures in e.g. the following:
-# com.ibm.icu.dev.test.util.LocaleDistanceTest (testLoadedDataSameAsBuiltFromScratch)
-# com.ibm.icu.dev.test.util.LocaleMatcherTest (testLikelySubtagsLoadedDataSameAsBuiltFromScratch)
-# To address these requires building and running the tool
-# icu4j/tools/misc/src/com/ibm/icu/dev/tool/locale/LocaleDistanceBuilder.java
-# to regenerate the file icu4c/source/data/misc/langInfo.txt and then regenerating
-# the ICU4J data jars.
-# b) Changes to plurals data may cause failures in e.g. the following
-# com.ibm.icu.dev.test.format.PluralRulesTest (TestLocales)
-# To address these requires updating the LOCALE_SNAPSHOT data in
-# icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/PluralRulesTest.java
-# by modifying the TestLocales() test there to run generateLOCALE_SNAPSHOT() and then
-# copying in the updated data.
-
-# 15. Check the file changes; then git add or git rm as necessary, and
-# commit the changes.
-
-cd $HOME/icu/
-cd ..
-git status
-# git add or remove as necessary
-# commit
-
-# 16. For an official CLDR data integration into ICU, now tag the CLDR and
-# ICU sources with an appropriate CLDR milestone (you can check previous
-# tags for format), e.g.:
-
-cd $CLDR_DIR
-git tag ...
-git push --tags
-
-cd $HOME/icu
-git tag ...
-git push --tags
-
-# 17. You should also commit and tag the update production data in CLDR_TMP_DIR
-# using the same tag as for CLDR_DIR above:
-
-cd $CLDR_TMP_DIR
-# git add or remove as necessary
-# commit
-git tag ...
-git push --tags
-
-
+This has been replaced by the markdown file
+../../../docs/processes/cldr-icu.md
+which is best viewed as
+https://unicode-org.github.io/icu/processes/cldr-icu.html
diff --git a/Build/source/libs/icu/icu-src/source/data/dtd/cldr/common/dtd/ldml.dtd b/Build/source/libs/icu/icu-src/source/data/dtd/cldr/common/dtd/ldml.dtd
index 76c0176780b..9e89c472c85 100644
--- a/Build/source/libs/icu/icu-src/source/data/dtd/cldr/common/dtd/ldml.dtd
+++ b/Build/source/libs/icu/icu-src/source/data/dtd/cldr/common/dtd/ldml.dtd
@@ -1,5 +1,5 @@
<!--
-Copyright © 1991-2022 Unicode, Inc.
+Copyright © 1991-2023 Unicode, Inc.
For terms of use, see http://www.unicode.org/copyright.html
SPDX-License-Identifier: Unicode-DFS-2016
CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
@@ -42,7 +42,7 @@ CLDR data files are interpreted according to the LDML specification (http://unic
<!ATTLIST version number CDATA #REQUIRED >
<!--@MATCH:regex/\$Revision.*\$-->
<!--@METADATA-->
-<!ATTLIST version cldrVersion CDATA #FIXED "42" >
+<!ATTLIST version cldrVersion CDATA #FIXED "44.1" >
<!--@MATCH:any-->
<!--@VALUE-->
<!ATTLIST version draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
@@ -68,6 +68,7 @@ CLDR data files are interpreted according to the LDML specification (http://unic
<!--@METADATA-->
<!--@DEPRECATED:true, false-->
<!ATTLIST language references CDATA #IMPLIED >
+ <!--@MATCH:any-->
<!--@METADATA-->
<!ELEMENT script ( #PCDATA ) >
@@ -85,7 +86,7 @@ CLDR data files are interpreted according to the LDML specification (http://unic
<!ATTLIST territory type NMTOKEN #REQUIRED >
<!--@MATCH:validity/region-->
<!ATTLIST territory alt NMTOKENS #IMPLIED >
- <!--@MATCH:literal/short, variant-->
+ <!--@MATCH:literal/short, variant, biot, chagos-->
<!ATTLIST territory draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
<!--@METADATA-->
<!--@DEPRECATED:true, false-->
@@ -426,7 +427,7 @@ CLDR data files are interpreted according to the LDML specification (http://unic
<!ELEMENT contextTransformUsage ( alias | ( contextTransform*, special* ) ) >
<!ATTLIST contextTransformUsage type CDATA #REQUIRED >
- <!--@MATCH:literal/calendar-field, currencyName, day-format-except-narrow, day-standalone-except-narrow, era-abbr, era-name, keyValue, languages, month-format-except-narrow, month-standalone-except-narrow, number-spellout, relative, script, typographicNames-->
+ <!--@MATCH:literal/all, calendar-field, currencyName, currencyName-count, day-format-except-narrow, day-standalone-except-narrow, era-abbr, era-name, key, keyValue, languages, metazone-long, metazone-short, month-format-except-narrow, month-standalone-except-narrow, number-spellout, relative, script, territory, typographicNames, zone-exemplarCity, zone-long, zone-short-->
<!ATTLIST contextTransformUsage alt NMTOKENS #IMPLIED >
<!--@MATCH:literal/variant-->
<!ATTLIST contextTransformUsage draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
@@ -465,6 +466,7 @@ CLDR data files are interpreted according to the LDML specification (http://unic
<!--@METADATA-->
<!--@DEPRECATED-->
<!ATTLIST exemplarCharacters references CDATA #IMPLIED >
+ <!--@MATCH:any-->
<!--@METADATA-->
<!ATTLIST exemplarCharacters validSubLocales CDATA #IMPLIED >
<!--@VALUE-->
@@ -1423,13 +1425,13 @@ CLDR data files are interpreted according to the LDML specification (http://unic
<!ATTLIST pattern type NMTOKEN "standard" >
<!--@MATCH:literal/1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000, 10000000000, 100000000000, 1000000000000, 10000000000000, 100000000000000, 1000000000000000, 10000000000000000, 100000000000000000, 1000000000000000000, 10000000000000000000, approximately, atLeast, atMost, range, standard-->
<!ATTLIST pattern numbers CDATA #IMPLIED >
- <!-- TODO: generalize this to be any (M=|d=)?<numberSystem> -->
- <!--@MATCH:literal/M=romanlow, d=hanidays, hanidec, hebr, y=jpanyear-->
+ <!-- TODO: generalize this to be any (M=|d=|y=)?<numberSystem> -->
+ <!--@MATCH:literal/M=romanlow, d=hanidays, d=jpan, hanidec, hebr, tibt, y=jpanyear-->
<!--@VALUE-->
<!ATTLIST pattern count (0 | 1 | zero | one | two | few | many | other) #IMPLIED >
<!-- Only used for decimalFormats type="1000..." -->
<!ATTLIST pattern alt NMTOKENS #IMPLIED >
- <!--@MATCH:literal/alphaNextToNumber, noCurrency, variant-->
+ <!--@MATCH:literal/alphaNextToNumber, ascii, noCurrency, variant-->
<!ATTLIST pattern draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
<!--@METADATA-->
<!--@DEPRECATED:true, false-->
@@ -1555,11 +1557,10 @@ CLDR data files are interpreted according to the LDML specification (http://unic
<!ELEMENT dateFormatItem ( #PCDATA ) >
<!ATTLIST dateFormatItem id CDATA #REQUIRED >
- <!-- TODO rationalize this list -->
- <!--@MATCH:literal/Bh, Bhm, Bhms, E, EBhm, EBhms, EEEEd, EHm, EHms, Ed, Ehm, Ehms, Gy, GyM, GyMEEEEd, GyMMM, GyMMMEEEEd, GyMMMEd, GyMMMM, GyMMMMEd, GyMMMMd, GyMMMd, GyMd, H, HHmm, HHmmZ, HHmmss, Hm, HmZ, Hmm, Hms, Hmsv, Hmsvvvv, Hmv, Hmvvvv, M, MEEEEd, MEd, MMM, MMMEEEEd, MMMEd, MMMM, MMMMEEEEd, MMMMEd, MMMMW, MMMMd, MMMMdd, MMMd, MMMdd, MMd, MMdd, Md, Mdd, UM, UMMM, UMMMd, UMd, d, h, hhmm, hhmmss, hm, hms, hmsv, hmsvvvv, hmv, hmvvvv, mmss, ms, y, yM, yMEEEEd, yMEd, yMM, yMMM, yMMMEEEEd, yMMMEd, yMMMM, yMMMMEEEEd, yMMMMEd, yMMMMccccd, yMMMMd, yMMMd, yMMdd, yMd, yQ, yQQQ, yQQQQ, yw, yyyy, yyyyM, yyyyMEEEEd, yyyyMEd, yyyyMM, yyyyMMM, yyyyMMMEEEEd, yyyyMMMEd, yyyyMMMM, yyyyMMMMEd, yyyyMMMMccccd, yyyyMMMMd, yyyyMMMd, yyyyMMdd, yyyyMd, yyyyQQQ, yyyyQQQQ-->
+ <!--@MATCH:regex/((E|EEEE)?(H|HH|h|hh|Bh)(m|ms|mm|mmss)?(Z|z|zzzz|v|vvvv)?)|(ms|mmss)|((G|GGGGG)?(y|yy|yyyy)((M{1,4}((E|EEEE|cccc)?(d|dd))?)|(w|Q|QQQ|QQQQ))?)|(U(M|MMM)d?)|(M{1,4}(((E|EEEE|cccc)?(d|dd))|W)?)|((E|EEEE)?d)|(E|EEEE)-->
<!ATTLIST dateFormatItem count (zero | one | two | few | many | other) #IMPLIED >
<!ATTLIST dateFormatItem alt NMTOKENS #IMPLIED >
- <!--@MATCH:literal/variant-->
+ <!--@MATCH:literal/ascii, variant-->
<!ATTLIST dateFormatItem draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
<!--@METADATA-->
<!--@DEPRECATED:true, false-->
@@ -1614,8 +1615,7 @@ CLDR data files are interpreted according to the LDML specification (http://unic
<!ELEMENT intervalFormatItem ( alias | ( greatestDifference*, special* ) ) >
<!ATTLIST intervalFormatItem id NMTOKEN #REQUIRED >
- <!-- TODO: check to see if this should be minimized -->
- <!--@MATCH:literal/Bh, Bhm, Gy, GyM, GyMEd, GyMMM, GyMMMEd, GyMMMd, GyMd, H, Hm, Hmv, Hmvvvv, Hv, Hvvvv, M, MEd, MMM, MMMEEEEd, MMMEd, MMMM, MMMMEd, MMMMd, MMMd, Md, d, h, hm, hmv, hmvvvv, hv, hvvvv, y, yM, yMEd, yMMM, yMMMEEEEd, yMMMEd, yMMMM, yMMMMEEEEd, yMMMMEd, yMMMMd, yMMMd, yMd, GGGGGyM, GGGGGyMEd, GGGGGyMd, GyMMMM, GyMMMMEd, GyMMMMd-->
+ <!--@MATCH:regex/((H|h|Bh)m?(v|vvvv)?)|((G|GGGGG)?(y|yyyy)((M|MMM|MMMM)((E|EEEE)?d)?)?)|((M|MMM|MMMM)((E|EEEE)?d)?)|d-->
<!ATTLIST intervalFormatItem alt NMTOKENS #IMPLIED >
<!--@MATCH:literal/variant-->
<!ATTLIST intervalFormatItem draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
@@ -2825,10 +2825,11 @@ CLDR data files are interpreted according to the LDML specification (http://unic
<!ELEMENT cr ( #PCDATA ) >
<!ATTLIST cr alt NMTOKENS #IMPLIED >
- <!--@MATCH:literal/variant-->
+ <!--@MATCH:literal/variant, proposed, short-->
<!ATTLIST cr draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
<!--@METADATA-->
<!ATTLIST cr references CDATA #IMPLIED >
+ <!--@MATCH:any-->
<!--@METADATA-->
<!-- # Use the cr element instead, with ICU syntax. -->
@@ -3003,7 +3004,7 @@ CLDR data files are interpreted according to the LDML specification (http://unic
<!ELEMENT characterLabelPattern ( #PCDATA ) >
<!ATTLIST characterLabelPattern type NMTOKEN #REQUIRED >
- <!--@MATCH:literal/all, category-list, compatibility, enclosed, extended, historic, miscellaneous, other, scripts, strokes, subscript, superscript-->
+ <!--@MATCH:literal/all, category-list, compatibility, enclosed, extended, facing-left, facing-right, historic, miscellaneous, other, scripts, strokes, subscript, superscript-->
<!ATTLIST characterLabelPattern count (0 | 1 | zero | one | two | few | many | other) #IMPLIED >
<!-- count only used for certain patterns" -->
<!ATTLIST characterLabelPattern alt NMTOKENS #IMPLIED >
@@ -3123,7 +3124,7 @@ CLDR data files are interpreted according to the LDML specification (http://unic
<!--@MATCH:or/range/-1.0E20~1.0E20||literal/-x, 0, 0.x, NaN, -Inf, Inf, x,x, x.x-->
<!--@VALUE-->
<!ATTLIST rbnfrule radix CDATA #IMPLIED >
- <!--@MATCH:literal/1,000, 100, 1000, 100000, 20-->
+ <!--@MATCH:literal/1,000, 100, 1000, 100000, 5, 20, 400, 8000, 160,000, 3,200,000, 64,000,000-->
<!--@VALUE-->
<!ATTLIST rbnfrule decexp CDATA #IMPLIED >
<!--@VALUE-->
@@ -3158,11 +3159,9 @@ CLDR data files are interpreted according to the LDML specification (http://unic
<!ATTLIST featureName draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
<!--@METADATA-->
-<!ELEMENT personNames ( alias | ( nameOrderLocales*, foreignSpaceReplacement*, initialPattern*, personName*, sampleName*, special* ) ) >
- <!--@TECHPREVIEW-->
+<!ELEMENT personNames ( alias | ( nameOrderLocales*, parameterDefault*, nativeSpaceReplacement*, foreignSpaceReplacement*, initialPattern*, personName*, sampleName*, special* ) ) >
<!ELEMENT nameOrderLocales ( #PCDATA ) >
- <!--@TECHPREVIEW-->
<!ATTLIST nameOrderLocales order (givenFirst | surnameFirst) #REQUIRED >
<!ATTLIST nameOrderLocales alt NMTOKENS #IMPLIED >
<!--@MATCH:literal/variant-->
@@ -3171,8 +3170,26 @@ CLDR data files are interpreted according to the LDML specification (http://unic
<!ATTLIST nameOrderLocales references CDATA #IMPLIED >
<!--@METADATA-->
+<!ELEMENT parameterDefault ( #PCDATA ) >
+<!ATTLIST parameterDefault parameter (length | formality) #REQUIRED >
+<!ATTLIST parameterDefault alt NMTOKENS #IMPLIED >
+ <!--@MATCH:literal/variant-->
+<!ATTLIST parameterDefault draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
+ <!--@METADATA-->
+<!ATTLIST parameterDefault references CDATA #IMPLIED >
+ <!--@METADATA-->
+
+<!ELEMENT nativeSpaceReplacement ( #PCDATA ) >
+<!ATTLIST nativeSpaceReplacement xml:space (default | preserve) "preserve" >
+ <!--@METADATA-->
+<!ATTLIST nativeSpaceReplacement alt NMTOKENS #IMPLIED >
+ <!--@MATCH:literal/variant-->
+<!ATTLIST nativeSpaceReplacement draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
+ <!--@METADATA-->
+<!ATTLIST nativeSpaceReplacement references CDATA #IMPLIED >
+ <!--@METADATA-->
+
<!ELEMENT foreignSpaceReplacement ( #PCDATA ) >
- <!--@TECHPREVIEW-->
<!ATTLIST foreignSpaceReplacement xml:space (default | preserve) "preserve" >
<!--@METADATA-->
<!ATTLIST foreignSpaceReplacement alt NMTOKENS #IMPLIED >
@@ -3183,7 +3200,6 @@ CLDR data files are interpreted according to the LDML specification (http://unic
<!--@METADATA-->
<!ELEMENT initialPattern ( #PCDATA ) >
- <!--@TECHPREVIEW-->
<!ATTLIST initialPattern type (initial | initialSequence) #REQUIRED >
<!ATTLIST initialPattern alt NMTOKENS #IMPLIED >
<!--@MATCH:literal/variant-->
@@ -3193,18 +3209,16 @@ CLDR data files are interpreted according to the LDML specification (http://unic
<!--@METADATA-->
<!ELEMENT personName ( alias | ( namePattern+, special* ) ) >
- <!--@TECHPREVIEW-->
<!ATTLIST personName order NMTOKENS #IMPLIED >
- <!--@MATCH:set/literal/givenFirst, surnameFirst, sorting-->
+ <!--@MATCH:literal/givenFirst, surnameFirst, sorting-->
<!ATTLIST personName length NMTOKENS #IMPLIED >
- <!--@MATCH:set/literal/long, medium, short-->
+ <!--@MATCH:literal/long, medium, short-->
<!ATTLIST personName usage NMTOKENS #IMPLIED >
- <!--@MATCH:set/literal/referring, addressing, monogram-->
+ <!--@MATCH:literal/referring, addressing, monogram-->
<!ATTLIST personName formality NMTOKENS #IMPLIED >
- <!--@MATCH:set/literal/formal, informal-->
+ <!--@MATCH:literal/formal, informal-->
<!ELEMENT namePattern ( #PCDATA ) >
- <!--@TECHPREVIEW-->
<!ATTLIST namePattern alt (1 | 2) #IMPLIED >
<!ATTLIST namePattern draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
<!--@METADATA-->
@@ -3212,14 +3226,12 @@ CLDR data files are interpreted according to the LDML specification (http://unic
<!--@METADATA-->
<!ELEMENT sampleName ( alias | ( nameField+, special* ) ) >
- <!--@TECHPREVIEW-->
<!ATTLIST sampleName item NMTOKENS #REQUIRED >
- <!--@MATCH:literal/givenOnly, givenSurnameOnly, given12Surname, full-->
+ <!--@MATCH:literal/nativeG, nativeGS, nativeGGS, nativeFull, foreignG, foreignGS, foreignGGS, foreignFull-->
<!ELEMENT nameField ( #PCDATA ) >
- <!--@TECHPREVIEW-->
<!ATTLIST nameField type CDATA #REQUIRED >
- <!--@MATCH:literal/prefix, given, given-informal, given2, surname, surname-prefix, surname-core, surname2, suffix-->
+ <!--@MATCH:literal/title, given, given-informal, given2, surname, surname-prefix, surname-core, surname2, generation, credentials-->
<!ATTLIST nameField alt NMTOKENS #IMPLIED >
<!--@MATCH:literal/variant-->
<!ATTLIST nameField draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
diff --git a/Build/source/libs/icu/icu-src/source/data/icu4j-readme.txt b/Build/source/libs/icu/icu-src/source/data/icu4j-readme.txt
index 8d087c16c7c..2bc699e13c6 100644
--- a/Build/source/libs/icu/icu-src/source/data/icu4j-readme.txt
+++ b/Build/source/libs/icu/icu-src/source/data/icu4j-readme.txt
@@ -71,12 +71,8 @@ icutzdata.jar in $icu4j_root/main/shared/data.
*Java*
-3. After the ICU4C-side steps above, build the main target of the
- ICU4J ant build to unpack the jar files with the following commands:
+3. After the ICU4C-side steps above, build the ICU4J artifacts and run
+ the tests locally to make sure they pass:
cd $icu4j_root
- ant main
-
- Run the tests locally and make sure they pass:
-
- ant check
+ mvn verify
diff --git a/Build/source/libs/icu/icu-src/source/data/in/coll/ucadata-implicithan-icu4x.icu b/Build/source/libs/icu/icu-src/source/data/in/coll/ucadata-implicithan-icu4x.icu
index 426f023fcf7..9607244ecbf 100644
--- a/Build/source/libs/icu/icu-src/source/data/in/coll/ucadata-implicithan-icu4x.icu
+++ b/Build/source/libs/icu/icu-src/source/data/in/coll/ucadata-implicithan-icu4x.icu
Binary files differ
diff --git a/Build/source/libs/icu/icu-src/source/data/in/coll/ucadata-implicithan.icu b/Build/source/libs/icu/icu-src/source/data/in/coll/ucadata-implicithan.icu
index 3acd694f06b..0469abe1159 100644
--- a/Build/source/libs/icu/icu-src/source/data/in/coll/ucadata-implicithan.icu
+++ b/Build/source/libs/icu/icu-src/source/data/in/coll/ucadata-implicithan.icu
Binary files differ
diff --git a/Build/source/libs/icu/icu-src/source/data/in/coll/ucadata-unihan-icu4x.icu b/Build/source/libs/icu/icu-src/source/data/in/coll/ucadata-unihan-icu4x.icu
index 7b62c0c69ae..ae0548f9fa0 100644
--- a/Build/source/libs/icu/icu-src/source/data/in/coll/ucadata-unihan-icu4x.icu
+++ b/Build/source/libs/icu/icu-src/source/data/in/coll/ucadata-unihan-icu4x.icu
Binary files differ
diff --git a/Build/source/libs/icu/icu-src/source/data/in/coll/ucadata-unihan.icu b/Build/source/libs/icu/icu-src/source/data/in/coll/ucadata-unihan.icu
index 8dd47e432d7..0e3b1203f28 100644
--- a/Build/source/libs/icu/icu-src/source/data/in/coll/ucadata-unihan.icu
+++ b/Build/source/libs/icu/icu-src/source/data/in/coll/ucadata-unihan.icu
Binary files differ
diff --git a/Build/source/libs/icu/icu-src/source/data/in/icudt72l.dat b/Build/source/libs/icu/icu-src/source/data/in/icudt74l.dat
index 3b06f4b18fe..fb84495785c 100644
--- a/Build/source/libs/icu/icu-src/source/data/in/icudt72l.dat
+++ b/Build/source/libs/icu/icu-src/source/data/in/icudt74l.dat
Binary files differ
diff --git a/Build/source/libs/icu/icu-src/source/data/in/nfc.nrm b/Build/source/libs/icu/icu-src/source/data/in/nfc.nrm
index 2b0e972807e..1dad8bea714 100644
--- a/Build/source/libs/icu/icu-src/source/data/in/nfc.nrm
+++ b/Build/source/libs/icu/icu-src/source/data/in/nfc.nrm
Binary files differ
diff --git a/Build/source/libs/icu/icu-src/source/data/in/nfkc.nrm b/Build/source/libs/icu/icu-src/source/data/in/nfkc.nrm
index deffa3daa81..17bf97af46a 100644
--- a/Build/source/libs/icu/icu-src/source/data/in/nfkc.nrm
+++ b/Build/source/libs/icu/icu-src/source/data/in/nfkc.nrm
Binary files differ
diff --git a/Build/source/libs/icu/icu-src/source/data/in/nfkc_cf.nrm b/Build/source/libs/icu/icu-src/source/data/in/nfkc_cf.nrm
index 3f8d756a0f4..5a2724d57a6 100644
--- a/Build/source/libs/icu/icu-src/source/data/in/nfkc_cf.nrm
+++ b/Build/source/libs/icu/icu-src/source/data/in/nfkc_cf.nrm
Binary files differ
diff --git a/Build/source/libs/icu/icu-src/source/data/in/nfkc_scf.nrm b/Build/source/libs/icu/icu-src/source/data/in/nfkc_scf.nrm
new file mode 100644
index 00000000000..6800b1823ae
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/data/in/nfkc_scf.nrm
Binary files differ
diff --git a/Build/source/libs/icu/icu-src/source/data/in/pnames.icu b/Build/source/libs/icu/icu-src/source/data/in/pnames.icu
index c960dc00b49..c04d2c1293a 100644
--- a/Build/source/libs/icu/icu-src/source/data/in/pnames.icu
+++ b/Build/source/libs/icu/icu-src/source/data/in/pnames.icu
Binary files differ
diff --git a/Build/source/libs/icu/icu-src/source/data/in/ubidi.icu b/Build/source/libs/icu/icu-src/source/data/in/ubidi.icu
index cfde07406cc..807f2331a65 100644
--- a/Build/source/libs/icu/icu-src/source/data/in/ubidi.icu
+++ b/Build/source/libs/icu/icu-src/source/data/in/ubidi.icu
Binary files differ
diff --git a/Build/source/libs/icu/icu-src/source/data/in/ucase.icu b/Build/source/libs/icu/icu-src/source/data/in/ucase.icu
index 670b0827d55..f04813d3706 100644
--- a/Build/source/libs/icu/icu-src/source/data/in/ucase.icu
+++ b/Build/source/libs/icu/icu-src/source/data/in/ucase.icu
Binary files differ
diff --git a/Build/source/libs/icu/icu-src/source/data/in/uemoji.icu b/Build/source/libs/icu/icu-src/source/data/in/uemoji.icu
index 11fdf50ff18..99e22e3d247 100644
--- a/Build/source/libs/icu/icu-src/source/data/in/uemoji.icu
+++ b/Build/source/libs/icu/icu-src/source/data/in/uemoji.icu
Binary files differ
diff --git a/Build/source/libs/icu/icu-src/source/data/in/ulayout.icu b/Build/source/libs/icu/icu-src/source/data/in/ulayout.icu
index ca6d0013c08..b64561766b8 100644
--- a/Build/source/libs/icu/icu-src/source/data/in/ulayout.icu
+++ b/Build/source/libs/icu/icu-src/source/data/in/ulayout.icu
Binary files differ
diff --git a/Build/source/libs/icu/icu-src/source/data/in/unames.icu b/Build/source/libs/icu/icu-src/source/data/in/unames.icu
index e271e78619f..71999fdf6b6 100644
--- a/Build/source/libs/icu/icu-src/source/data/in/unames.icu
+++ b/Build/source/libs/icu/icu-src/source/data/in/unames.icu
Binary files differ
diff --git a/Build/source/libs/icu/icu-src/source/data/in/uprops.icu b/Build/source/libs/icu/icu-src/source/data/in/uprops.icu
index 0cdd8dea636..679c4586e9c 100644
--- a/Build/source/libs/icu/icu-src/source/data/in/uprops.icu
+++ b/Build/source/libs/icu/icu-src/source/data/in/uprops.icu
Binary files differ
diff --git a/Build/source/libs/icu/icu-src/source/data/in/uts46.nrm b/Build/source/libs/icu/icu-src/source/data/in/uts46.nrm
index f6f888637c6..cf81157e708 100644
--- a/Build/source/libs/icu/icu-src/source/data/in/uts46.nrm
+++ b/Build/source/libs/icu/icu-src/source/data/in/uts46.nrm
Binary files differ
diff --git a/Build/source/libs/icu/icu-src/source/data/makedata.mak b/Build/source/libs/icu/icu-src/source/data/makedata.mak
index d3afb19c512..78245c2bdf5 100644
--- a/Build/source/libs/icu/icu-src/source/data/makedata.mak
+++ b/Build/source/libs/icu/icu-src/source/data/makedata.mak
@@ -12,14 +12,14 @@
##############################################################################
# Keep the following in sync with the version - see common/unicode/uvernum.h
-U_ICUDATA_NAME=icudt72
+U_ICUDATA_NAME=icudt74
##############################################################################
!IF "$(UWP)" == "UWP"
# Optionally change the name of the data file for the UWP version.
-U_ICUDATA_NAME=icudt72
+U_ICUDATA_NAME=icudt74
!ENDIF
U_ICUDATA_ENDIAN_SUFFIX=l
-UNICODE_VERSION=15.0
+UNICODE_VERSION=15.1
ICU_LIB_TARGET=$(DLL_OUTPUT)\$(U_ICUDATA_NAME).dll
# ICUMAKE
@@ -362,7 +362,7 @@ generate-data: GODATA "$(ICUOUT)\$(ICUPKG).dat" uni-core-data
## Compare to: source\data\Makefile.in and source\test\testdata\Makefile.in
-DEBUGUTILITIESDATA_DIR=main\tests\core\src\com\ibm\icu\dev\test\util
+DEBUGUTILITIESDATA_DIR=main\core\src\test\java\com\ibm\icu\dev\test\util
DEBUGUTILITIESDATA_SRC=DebugUtilitiesData.java
# Build DebugUtilitiesData.java
@@ -515,6 +515,9 @@ CLEAN : GODATA
"$(ICUBLD_PKG)\nfkc_cf.nrm": $(ICUSRCDATA_RELATIVE_PATH)\in\nfkc_cf.nrm
"$(ICUPBIN)\icupkg" -tl $? $@
+"$(ICUBLD_PKG)\nfkc_scf.nrm": $(ICUSRCDATA_RELATIVE_PATH)\in\nfkc_scf.nrm
+ "$(ICUPBIN)\icupkg" -tl $? $@
+
"$(ICUBLD_PKG)\uts46.nrm": $(ICUSRCDATA_RELATIVE_PATH)\in\uts46.nrm
"$(ICUPBIN)\icupkg" -tl $? $@
diff --git a/Build/source/libs/icu/icu-src/source/data/unidata/CaseFolding.txt b/Build/source/libs/icu/icu-src/source/data/unidata/CaseFolding.txt
index 65aa0fcd6b3..69c5c64b4c6 100644
--- a/Build/source/libs/icu/icu-src/source/data/unidata/CaseFolding.txt
+++ b/Build/source/libs/icu/icu-src/source/data/unidata/CaseFolding.txt
@@ -1,6 +1,6 @@
-# CaseFolding-15.0.0.txt
-# Date: 2022-02-02, 23:35:35 GMT
-# © 2022 Unicode®, Inc.
+# CaseFolding-15.1.0.txt
+# Date: 2023-05-12, 21:53:10 GMT
+# © 2023 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# For terms of use, see https://www.unicode.org/terms_of_use.html
#
@@ -929,6 +929,7 @@
1FCC; S; 1FC3; # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
1FD2; F; 03B9 0308 0300; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
1FD3; F; 03B9 0308 0301; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FD3; S; 0390; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
1FD6; F; 03B9 0342; # GREEK SMALL LETTER IOTA WITH PERISPOMENI
1FD7; F; 03B9 0308 0342; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
1FD8; C; 1FD0; # GREEK CAPITAL LETTER IOTA WITH VRACHY
@@ -937,6 +938,7 @@
1FDB; C; 1F77; # GREEK CAPITAL LETTER IOTA WITH OXIA
1FE2; F; 03C5 0308 0300; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
1FE3; F; 03C5 0308 0301; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+1FE3; S; 03B0; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
1FE4; F; 03C1 0313; # GREEK SMALL LETTER RHO WITH PSILI
1FE6; F; 03C5 0342; # GREEK SMALL LETTER UPSILON WITH PERISPOMENI
1FE7; F; 03C5 0308 0342; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
@@ -1328,6 +1330,7 @@ FB02; F; 0066 006C; # LATIN SMALL LIGATURE FL
FB03; F; 0066 0066 0069; # LATIN SMALL LIGATURE FFI
FB04; F; 0066 0066 006C; # LATIN SMALL LIGATURE FFL
FB05; F; 0073 0074; # LATIN SMALL LIGATURE LONG S T
+FB05; S; FB06; # LATIN SMALL LIGATURE LONG S T
FB06; F; 0073 0074; # LATIN SMALL LIGATURE ST
FB13; F; 0574 0576; # ARMENIAN SMALL LIGATURE MEN NOW
FB14; F; 0574 0565; # ARMENIAN SMALL LIGATURE MEN ECH
diff --git a/Build/source/libs/icu/icu-src/source/data/unidata/DerivedCoreProperties.txt b/Build/source/libs/icu/icu-src/source/data/unidata/DerivedCoreProperties.txt
index ac5ed20e815..2f4755b4e59 100644
--- a/Build/source/libs/icu/icu-src/source/data/unidata/DerivedCoreProperties.txt
+++ b/Build/source/libs/icu/icu-src/source/data/unidata/DerivedCoreProperties.txt
@@ -1,6 +1,6 @@
-# DerivedCoreProperties-15.0.0.txt
-# Date: 2022-08-05, 22:17:05 GMT
-# © 2022 Unicode®, Inc.
+# DerivedCoreProperties-15.1.0.txt
+# Date: 2023-08-07, 15:21:24 GMT
+# © 2023 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# For terms of use, see https://www.unicode.org/terms_of_use.html
#
@@ -1397,11 +1397,12 @@ FFDA..FFDC ; Alphabetic
2B740..2B81D ; Alphabetic
2B820..2CEA1 ; Alphabetic
2CEB0..2EBE0 ; Alphabetic
+2EBF0..2EE5D ; Alphabetic
2F800..2FA1D ; Alphabetic
30000..3134A ; Alphabetic
31350..323AF ; Alphabetic
-# Total code points: 137765
+# Total code points: 138387
# ================================================
@@ -6853,11 +6854,12 @@ FFDA..FFDC ; ID_Start
2B740..2B81D ; ID_Start
2B820..2CEA1 ; ID_Start
2CEB0..2EBE0 ; ID_Start
+2EBF0..2EE5D ; ID_Start
2F800..2FA1D ; ID_Start
30000..3134A ; ID_Start
31350..323AF ; ID_Start
-# Total code points: 136345
+# Total code points: 136967
# ================================================
@@ -7438,6 +7440,7 @@ FFDA..FFDC ; ID_Start
1FE0..1FEC ; ID_Continue
1FF2..1FF4 ; ID_Continue
1FF6..1FFC ; ID_Continue
+200C..200D ; ID_Continue
203F..2040 ; ID_Continue
2054 ; ID_Continue
2071 ; ID_Continue
@@ -7504,6 +7507,7 @@ FFDA..FFDC ; ID_Start
309D..309E ; ID_Continue
309F ; ID_Continue
30A1..30FA ; ID_Continue
+30FB ; ID_Continue
30FC..30FE ; ID_Continue
30FF ; ID_Continue
3105..312F ; ID_Continue
@@ -7683,6 +7687,7 @@ FF10..FF19 ; ID_Continue
FF21..FF3A ; ID_Continue
FF3F ; ID_Continue
FF41..FF5A ; ID_Continue
+FF65 ; ID_Continue
FF66..FF6F ; ID_Continue
FF70 ; ID_Continue
FF71..FF9D ; ID_Continue
@@ -8207,12 +8212,13 @@ FFDA..FFDC ; ID_Continue
2B740..2B81D ; ID_Continue
2B820..2CEA1 ; ID_Continue
2CEB0..2EBE0 ; ID_Continue
+2EBF0..2EE5D ; ID_Continue
2F800..2FA1D ; ID_Continue
30000..3134A ; ID_Continue
31350..323AF ; ID_Continue
E0100..E01EF ; ID_Continue
-# Total code points: 139482
+# Total code points: 140108
# ================================================
@@ -8962,11 +8968,12 @@ FFDA..FFDC ; XID_Start
2B740..2B81D ; XID_Start
2B820..2CEA1 ; XID_Start
2CEB0..2EBE0 ; XID_Start
+2EBF0..2EE5D ; XID_Start
2F800..2FA1D ; XID_Start
30000..3134A ; XID_Start
31350..323AF ; XID_Start
-# Total code points: 136322
+# Total code points: 136944
# ================================================
@@ -9543,6 +9550,7 @@ FFDA..FFDC ; XID_Start
1FE0..1FEC ; XID_Continue
1FF2..1FF4 ; XID_Continue
1FF6..1FFC ; XID_Continue
+200C..200D ; XID_Continue
203F..2040 ; XID_Continue
2054 ; XID_Continue
2071 ; XID_Continue
@@ -9608,6 +9616,7 @@ FFDA..FFDC ; XID_Start
309D..309E ; XID_Continue
309F ; XID_Continue
30A1..30FA ; XID_Continue
+30FB ; XID_Continue
30FC..30FE ; XID_Continue
30FF ; XID_Continue
3105..312F ; XID_Continue
@@ -9793,6 +9802,7 @@ FF10..FF19 ; XID_Continue
FF21..FF3A ; XID_Continue
FF3F ; XID_Continue
FF41..FF5A ; XID_Continue
+FF65 ; XID_Continue
FF66..FF6F ; XID_Continue
FF70 ; XID_Continue
FF71..FF9D ; XID_Continue
@@ -10317,12 +10327,13 @@ FFDA..FFDC ; XID_Continue
2B740..2B81D ; XID_Continue
2B820..2CEA1 ; XID_Continue
2CEB0..2EBE0 ; XID_Continue
+2EBF0..2EE5D ; XID_Continue
2F800..2FA1D ; XID_Continue
30000..3134A ; XID_Continue
31350..323AF ; XID_Continue
E0100..E01EF ; XID_Continue
-# Total code points: 139463
+# Total code points: 140089
# ================================================
@@ -10335,6 +10346,15 @@ E0100..E01EF ; XID_Continue
# - FFF9..FFFB (Interlinear annotation format characters)
# - 13430..13440 (Egyptian hieroglyph format characters)
# - Prepended_Concatenation_Mark (Exceptional format characters that should be visible)
+#
+# There are currently no stability guarantees for DICP. However, the
+# values of DICP interact with the derivation of XID_Continue
+# and NFKC_CF, for which there are stability guarantees.
+# Maintainers of this property should note that in the
+# unlikely case that the DICP value changes for an existing character
+# which is also XID_Continue=Yes, then exceptions must be put
+# in place to ensure that the NFKC_CF mapping value for that
+# existing character does not change.
00AD ; Default_Ignorable_Code_Point
034F ; Default_Ignorable_Code_Point
@@ -11602,7 +11622,7 @@ E0100..E01EF ; Grapheme_Extend
2E80..2E99 ; Grapheme_Base
2E9B..2EF3 ; Grapheme_Base
2F00..2FD5 ; Grapheme_Base
-2FF0..2FFB ; Grapheme_Base
+2FF0..2FFF ; Grapheme_Base
3000 ; Grapheme_Base
3001..3003 ; Grapheme_Base
3004 ; Grapheme_Base
@@ -11657,6 +11677,7 @@ E0100..E01EF ; Grapheme_Extend
3196..319F ; Grapheme_Base
31A0..31BF ; Grapheme_Base
31C0..31E3 ; Grapheme_Base
+31EF ; Grapheme_Base
31F0..31FF ; Grapheme_Base
3200..321E ; Grapheme_Base
3220..3229 ; Grapheme_Base
@@ -12497,11 +12518,12 @@ FFFC..FFFD ; Grapheme_Base
2B740..2B81D ; Grapheme_Base
2B820..2CEA1 ; Grapheme_Base
2CEB0..2EBE0 ; Grapheme_Base
+2EBF0..2EE5D ; Grapheme_Base
2F800..2FA1D ; Grapheme_Base
30000..3134A ; Grapheme_Base
31350..323AF ; Grapheme_Base
-# Total code points: 146986
+# Total code points: 147613
# ================================================
@@ -12572,4 +12594,239 @@ ABED ; Grapheme_Link
# Total code points: 65
+# ================================================
+
+# Derived Property: Indic_Conjunct_Break
+# Generated from the Grapheme_Cluster_Break, Indic_Syllabic_Category,
+# Canonical_Combining_Class, and Script properties as described in UAX #44:
+# https://www.unicode.org/reports/tr44/.
+
+# All code points not explicitly listed for Indic_Conjunct_Break
+# have the value None.
+
+# @missing: 0000..10FFFF; InCB; None
+
+# ================================================
+
+# Indic_Conjunct_Break=Linker
+
+094D ; InCB; Linker
+09CD ; InCB; Linker
+0ACD ; InCB; Linker
+0B4D ; InCB; Linker
+0C4D ; InCB; Linker
+0D4D ; InCB; Linker
+
+# Total code points: 6
+
+# ================================================
+
+# Indic_Conjunct_Break=Consonant
+
+0915..0939 ; InCB; Consonant
+0958..095F ; InCB; Consonant
+0978..097F ; InCB; Consonant
+0995..09A8 ; InCB; Consonant
+09AA..09B0 ; InCB; Consonant
+09B2 ; InCB; Consonant
+09B6..09B9 ; InCB; Consonant
+09DC..09DD ; InCB; Consonant
+09DF ; InCB; Consonant
+09F0..09F1 ; InCB; Consonant
+0A95..0AA8 ; InCB; Consonant
+0AAA..0AB0 ; InCB; Consonant
+0AB2..0AB3 ; InCB; Consonant
+0AB5..0AB9 ; InCB; Consonant
+0AF9 ; InCB; Consonant
+0B15..0B28 ; InCB; Consonant
+0B2A..0B30 ; InCB; Consonant
+0B32..0B33 ; InCB; Consonant
+0B35..0B39 ; InCB; Consonant
+0B5C..0B5D ; InCB; Consonant
+0B5F ; InCB; Consonant
+0B71 ; InCB; Consonant
+0C15..0C28 ; InCB; Consonant
+0C2A..0C39 ; InCB; Consonant
+0C58..0C5A ; InCB; Consonant
+0D15..0D3A ; InCB; Consonant
+
+# Total code points: 240
+
+# ================================================
+
+# Indic_Conjunct_Break=Extend
+
+0300..034E ; InCB; Extend
+0350..036F ; InCB; Extend
+0483..0487 ; InCB; Extend
+0591..05BD ; InCB; Extend
+05BF ; InCB; Extend
+05C1..05C2 ; InCB; Extend
+05C4..05C5 ; InCB; Extend
+05C7 ; InCB; Extend
+0610..061A ; InCB; Extend
+064B..065F ; InCB; Extend
+0670 ; InCB; Extend
+06D6..06DC ; InCB; Extend
+06DF..06E4 ; InCB; Extend
+06E7..06E8 ; InCB; Extend
+06EA..06ED ; InCB; Extend
+0711 ; InCB; Extend
+0730..074A ; InCB; Extend
+07EB..07F3 ; InCB; Extend
+07FD ; InCB; Extend
+0816..0819 ; InCB; Extend
+081B..0823 ; InCB; Extend
+0825..0827 ; InCB; Extend
+0829..082D ; InCB; Extend
+0859..085B ; InCB; Extend
+0898..089F ; InCB; Extend
+08CA..08E1 ; InCB; Extend
+08E3..08FF ; InCB; Extend
+093C ; InCB; Extend
+0951..0954 ; InCB; Extend
+09BC ; InCB; Extend
+09FE ; InCB; Extend
+0A3C ; InCB; Extend
+0ABC ; InCB; Extend
+0B3C ; InCB; Extend
+0C3C ; InCB; Extend
+0C55..0C56 ; InCB; Extend
+0CBC ; InCB; Extend
+0D3B..0D3C ; InCB; Extend
+0E38..0E3A ; InCB; Extend
+0E48..0E4B ; InCB; Extend
+0EB8..0EBA ; InCB; Extend
+0EC8..0ECB ; InCB; Extend
+0F18..0F19 ; InCB; Extend
+0F35 ; InCB; Extend
+0F37 ; InCB; Extend
+0F39 ; InCB; Extend
+0F71..0F72 ; InCB; Extend
+0F74 ; InCB; Extend
+0F7A..0F7D ; InCB; Extend
+0F80 ; InCB; Extend
+0F82..0F84 ; InCB; Extend
+0F86..0F87 ; InCB; Extend
+0FC6 ; InCB; Extend
+1037 ; InCB; Extend
+1039..103A ; InCB; Extend
+108D ; InCB; Extend
+135D..135F ; InCB; Extend
+1714 ; InCB; Extend
+17D2 ; InCB; Extend
+17DD ; InCB; Extend
+18A9 ; InCB; Extend
+1939..193B ; InCB; Extend
+1A17..1A18 ; InCB; Extend
+1A60 ; InCB; Extend
+1A75..1A7C ; InCB; Extend
+1A7F ; InCB; Extend
+1AB0..1ABD ; InCB; Extend
+1ABF..1ACE ; InCB; Extend
+1B34 ; InCB; Extend
+1B6B..1B73 ; InCB; Extend
+1BAB ; InCB; Extend
+1BE6 ; InCB; Extend
+1C37 ; InCB; Extend
+1CD0..1CD2 ; InCB; Extend
+1CD4..1CE0 ; InCB; Extend
+1CE2..1CE8 ; InCB; Extend
+1CED ; InCB; Extend
+1CF4 ; InCB; Extend
+1CF8..1CF9 ; InCB; Extend
+1DC0..1DFF ; InCB; Extend
+200D ; InCB; Extend
+20D0..20DC ; InCB; Extend
+20E1 ; InCB; Extend
+20E5..20F0 ; InCB; Extend
+2CEF..2CF1 ; InCB; Extend
+2D7F ; InCB; Extend
+2DE0..2DFF ; InCB; Extend
+302A..302D ; InCB; Extend
+302E..302F ; InCB; Extend
+3099..309A ; InCB; Extend
+A66F ; InCB; Extend
+A674..A67D ; InCB; Extend
+A69E..A69F ; InCB; Extend
+A6F0..A6F1 ; InCB; Extend
+A82C ; InCB; Extend
+A8E0..A8F1 ; InCB; Extend
+A92B..A92D ; InCB; Extend
+A9B3 ; InCB; Extend
+AAB0 ; InCB; Extend
+AAB2..AAB4 ; InCB; Extend
+AAB7..AAB8 ; InCB; Extend
+AABE..AABF ; InCB; Extend
+AAC1 ; InCB; Extend
+AAF6 ; InCB; Extend
+ABED ; InCB; Extend
+FB1E ; InCB; Extend
+FE20..FE2F ; InCB; Extend
+101FD ; InCB; Extend
+102E0 ; InCB; Extend
+10376..1037A ; InCB; Extend
+10A0D ; InCB; Extend
+10A0F ; InCB; Extend
+10A38..10A3A ; InCB; Extend
+10A3F ; InCB; Extend
+10AE5..10AE6 ; InCB; Extend
+10D24..10D27 ; InCB; Extend
+10EAB..10EAC ; InCB; Extend
+10EFD..10EFF ; InCB; Extend
+10F46..10F50 ; InCB; Extend
+10F82..10F85 ; InCB; Extend
+11070 ; InCB; Extend
+1107F ; InCB; Extend
+110BA ; InCB; Extend
+11100..11102 ; InCB; Extend
+11133..11134 ; InCB; Extend
+11173 ; InCB; Extend
+111CA ; InCB; Extend
+11236 ; InCB; Extend
+112E9..112EA ; InCB; Extend
+1133B..1133C ; InCB; Extend
+11366..1136C ; InCB; Extend
+11370..11374 ; InCB; Extend
+11446 ; InCB; Extend
+1145E ; InCB; Extend
+114C3 ; InCB; Extend
+115C0 ; InCB; Extend
+116B7 ; InCB; Extend
+1172B ; InCB; Extend
+1183A ; InCB; Extend
+1193E ; InCB; Extend
+11943 ; InCB; Extend
+11A34 ; InCB; Extend
+11A47 ; InCB; Extend
+11A99 ; InCB; Extend
+11D42 ; InCB; Extend
+11D44..11D45 ; InCB; Extend
+11D97 ; InCB; Extend
+11F42 ; InCB; Extend
+16AF0..16AF4 ; InCB; Extend
+16B30..16B36 ; InCB; Extend
+1BC9E ; InCB; Extend
+1D165 ; InCB; Extend
+1D167..1D169 ; InCB; Extend
+1D16E..1D172 ; InCB; Extend
+1D17B..1D182 ; InCB; Extend
+1D185..1D18B ; InCB; Extend
+1D1AA..1D1AD ; InCB; Extend
+1D242..1D244 ; InCB; Extend
+1E000..1E006 ; InCB; Extend
+1E008..1E018 ; InCB; Extend
+1E01B..1E021 ; InCB; Extend
+1E023..1E024 ; InCB; Extend
+1E026..1E02A ; InCB; Extend
+1E08F ; InCB; Extend
+1E130..1E136 ; InCB; Extend
+1E2AE ; InCB; Extend
+1E2EC..1E2EF ; InCB; Extend
+1E4EC..1E4EF ; InCB; Extend
+1E8D0..1E8D6 ; InCB; Extend
+1E944..1E94A ; InCB; Extend
+
+# Total code points: 884
+
# EOF
diff --git a/Build/source/libs/icu/icu-src/source/data/unidata/DerivedNormalizationProps.txt b/Build/source/libs/icu/icu-src/source/data/unidata/DerivedNormalizationProps.txt
index 9d1a44f3fd8..d4826c325e7 100644
--- a/Build/source/libs/icu/icu-src/source/data/unidata/DerivedNormalizationProps.txt
+++ b/Build/source/libs/icu/icu-src/source/data/unidata/DerivedNormalizationProps.txt
@@ -1,6 +1,6 @@
-# DerivedNormalizationProps-15.0.0.txt
-# Date: 2022-04-02, 01:29:03 GMT
-# © 2022 Unicode®, Inc.
+# DerivedNormalizationProps-15.1.0.txt
+# Date: 2023-05-02, 13:20:58 GMT
+# © 2023 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# For terms of use, see https://www.unicode.org/terms_of_use.html
#
@@ -2907,7 +2907,7 @@ FFE3 ; Expands_On_NFKC
# @missing: 0000..10FFFF; NFKC_CF; <code point>
# All code points not explicitly listed for NFKC_Casefold
-# have the value <codepoint>.
+# have the value <code point>.
0041 ; NFKC_CF; 0061
0042 ; NFKC_CF; 0062
@@ -9005,6 +9005,6077 @@ E01F0..E0FFF ; NFKC_CF;
# ================================================
+# Derived Property: NFKC_Simple_Casefold (NFKC_SCF)
+# This property removes certain variations from characters: case, compatibility, and default-ignorables.
+# It is used for loose matching and certain types of identifiers.
+# It is constructed by applying NFKC, simple CaseFolding, and removal of Default_Ignorable_Code_Points.
+# The process of applying these transformations is repeated until a stable result is produced.
+# WARNING: Application to STRINGS must apply NFC after mapping each character, because characters may interact.
+# For more information, see [https://www.unicode.org/reports/tr44/]
+# Omitted code points are unchanged by this mapping.
+# @missing: 0000..10FFFF; NFKC_SCF; <code point>
+
+# All code points not explicitly listed for NFKC_Simple_Casefold
+# have the value <code point>.
+
+0041 ; NFKC_SCF; 0061
+0042 ; NFKC_SCF; 0062
+0043 ; NFKC_SCF; 0063
+0044 ; NFKC_SCF; 0064
+0045 ; NFKC_SCF; 0065
+0046 ; NFKC_SCF; 0066
+0047 ; NFKC_SCF; 0067
+0048 ; NFKC_SCF; 0068
+0049 ; NFKC_SCF; 0069
+004A ; NFKC_SCF; 006A
+004B ; NFKC_SCF; 006B
+004C ; NFKC_SCF; 006C
+004D ; NFKC_SCF; 006D
+004E ; NFKC_SCF; 006E
+004F ; NFKC_SCF; 006F
+0050 ; NFKC_SCF; 0070
+0051 ; NFKC_SCF; 0071
+0052 ; NFKC_SCF; 0072
+0053 ; NFKC_SCF; 0073
+0054 ; NFKC_SCF; 0074
+0055 ; NFKC_SCF; 0075
+0056 ; NFKC_SCF; 0076
+0057 ; NFKC_SCF; 0077
+0058 ; NFKC_SCF; 0078
+0059 ; NFKC_SCF; 0079
+005A ; NFKC_SCF; 007A
+00A0 ; NFKC_SCF; 0020
+00A8 ; NFKC_SCF; 0020 0308
+00AA ; NFKC_SCF; 0061
+00AD ; NFKC_SCF;
+00AF ; NFKC_SCF; 0020 0304
+00B2 ; NFKC_SCF; 0032
+00B3 ; NFKC_SCF; 0033
+00B4 ; NFKC_SCF; 0020 0301
+00B5 ; NFKC_SCF; 03BC
+00B8 ; NFKC_SCF; 0020 0327
+00B9 ; NFKC_SCF; 0031
+00BA ; NFKC_SCF; 006F
+00BC ; NFKC_SCF; 0031 2044 0034
+00BD ; NFKC_SCF; 0031 2044 0032
+00BE ; NFKC_SCF; 0033 2044 0034
+00C0 ; NFKC_SCF; 00E0
+00C1 ; NFKC_SCF; 00E1
+00C2 ; NFKC_SCF; 00E2
+00C3 ; NFKC_SCF; 00E3
+00C4 ; NFKC_SCF; 00E4
+00C5 ; NFKC_SCF; 00E5
+00C6 ; NFKC_SCF; 00E6
+00C7 ; NFKC_SCF; 00E7
+00C8 ; NFKC_SCF; 00E8
+00C9 ; NFKC_SCF; 00E9
+00CA ; NFKC_SCF; 00EA
+00CB ; NFKC_SCF; 00EB
+00CC ; NFKC_SCF; 00EC
+00CD ; NFKC_SCF; 00ED
+00CE ; NFKC_SCF; 00EE
+00CF ; NFKC_SCF; 00EF
+00D0 ; NFKC_SCF; 00F0
+00D1 ; NFKC_SCF; 00F1
+00D2 ; NFKC_SCF; 00F2
+00D3 ; NFKC_SCF; 00F3
+00D4 ; NFKC_SCF; 00F4
+00D5 ; NFKC_SCF; 00F5
+00D6 ; NFKC_SCF; 00F6
+00D8 ; NFKC_SCF; 00F8
+00D9 ; NFKC_SCF; 00F9
+00DA ; NFKC_SCF; 00FA
+00DB ; NFKC_SCF; 00FB
+00DC ; NFKC_SCF; 00FC
+00DD ; NFKC_SCF; 00FD
+00DE ; NFKC_SCF; 00FE
+0100 ; NFKC_SCF; 0101
+0102 ; NFKC_SCF; 0103
+0104 ; NFKC_SCF; 0105
+0106 ; NFKC_SCF; 0107
+0108 ; NFKC_SCF; 0109
+010A ; NFKC_SCF; 010B
+010C ; NFKC_SCF; 010D
+010E ; NFKC_SCF; 010F
+0110 ; NFKC_SCF; 0111
+0112 ; NFKC_SCF; 0113
+0114 ; NFKC_SCF; 0115
+0116 ; NFKC_SCF; 0117
+0118 ; NFKC_SCF; 0119
+011A ; NFKC_SCF; 011B
+011C ; NFKC_SCF; 011D
+011E ; NFKC_SCF; 011F
+0120 ; NFKC_SCF; 0121
+0122 ; NFKC_SCF; 0123
+0124 ; NFKC_SCF; 0125
+0126 ; NFKC_SCF; 0127
+0128 ; NFKC_SCF; 0129
+012A ; NFKC_SCF; 012B
+012C ; NFKC_SCF; 012D
+012E ; NFKC_SCF; 012F
+0132..0133 ; NFKC_SCF; 0069 006A
+0134 ; NFKC_SCF; 0135
+0136 ; NFKC_SCF; 0137
+0139 ; NFKC_SCF; 013A
+013B ; NFKC_SCF; 013C
+013D ; NFKC_SCF; 013E
+013F..0140 ; NFKC_SCF; 006C 00B7
+0141 ; NFKC_SCF; 0142
+0143 ; NFKC_SCF; 0144
+0145 ; NFKC_SCF; 0146
+0147 ; NFKC_SCF; 0148
+0149 ; NFKC_SCF; 02BC 006E
+014A ; NFKC_SCF; 014B
+014C ; NFKC_SCF; 014D
+014E ; NFKC_SCF; 014F
+0150 ; NFKC_SCF; 0151
+0152 ; NFKC_SCF; 0153
+0154 ; NFKC_SCF; 0155
+0156 ; NFKC_SCF; 0157
+0158 ; NFKC_SCF; 0159
+015A ; NFKC_SCF; 015B
+015C ; NFKC_SCF; 015D
+015E ; NFKC_SCF; 015F
+0160 ; NFKC_SCF; 0161
+0162 ; NFKC_SCF; 0163
+0164 ; NFKC_SCF; 0165
+0166 ; NFKC_SCF; 0167
+0168 ; NFKC_SCF; 0169
+016A ; NFKC_SCF; 016B
+016C ; NFKC_SCF; 016D
+016E ; NFKC_SCF; 016F
+0170 ; NFKC_SCF; 0171
+0172 ; NFKC_SCF; 0173
+0174 ; NFKC_SCF; 0175
+0176 ; NFKC_SCF; 0177
+0178 ; NFKC_SCF; 00FF
+0179 ; NFKC_SCF; 017A
+017B ; NFKC_SCF; 017C
+017D ; NFKC_SCF; 017E
+017F ; NFKC_SCF; 0073
+0181 ; NFKC_SCF; 0253
+0182 ; NFKC_SCF; 0183
+0184 ; NFKC_SCF; 0185
+0186 ; NFKC_SCF; 0254
+0187 ; NFKC_SCF; 0188
+0189 ; NFKC_SCF; 0256
+018A ; NFKC_SCF; 0257
+018B ; NFKC_SCF; 018C
+018E ; NFKC_SCF; 01DD
+018F ; NFKC_SCF; 0259
+0190 ; NFKC_SCF; 025B
+0191 ; NFKC_SCF; 0192
+0193 ; NFKC_SCF; 0260
+0194 ; NFKC_SCF; 0263
+0196 ; NFKC_SCF; 0269
+0197 ; NFKC_SCF; 0268
+0198 ; NFKC_SCF; 0199
+019C ; NFKC_SCF; 026F
+019D ; NFKC_SCF; 0272
+019F ; NFKC_SCF; 0275
+01A0 ; NFKC_SCF; 01A1
+01A2 ; NFKC_SCF; 01A3
+01A4 ; NFKC_SCF; 01A5
+01A6 ; NFKC_SCF; 0280
+01A7 ; NFKC_SCF; 01A8
+01A9 ; NFKC_SCF; 0283
+01AC ; NFKC_SCF; 01AD
+01AE ; NFKC_SCF; 0288
+01AF ; NFKC_SCF; 01B0
+01B1 ; NFKC_SCF; 028A
+01B2 ; NFKC_SCF; 028B
+01B3 ; NFKC_SCF; 01B4
+01B5 ; NFKC_SCF; 01B6
+01B7 ; NFKC_SCF; 0292
+01B8 ; NFKC_SCF; 01B9
+01BC ; NFKC_SCF; 01BD
+01C4..01C6 ; NFKC_SCF; 0064 017E
+01C7..01C9 ; NFKC_SCF; 006C 006A
+01CA..01CC ; NFKC_SCF; 006E 006A
+01CD ; NFKC_SCF; 01CE
+01CF ; NFKC_SCF; 01D0
+01D1 ; NFKC_SCF; 01D2
+01D3 ; NFKC_SCF; 01D4
+01D5 ; NFKC_SCF; 01D6
+01D7 ; NFKC_SCF; 01D8
+01D9 ; NFKC_SCF; 01DA
+01DB ; NFKC_SCF; 01DC
+01DE ; NFKC_SCF; 01DF
+01E0 ; NFKC_SCF; 01E1
+01E2 ; NFKC_SCF; 01E3
+01E4 ; NFKC_SCF; 01E5
+01E6 ; NFKC_SCF; 01E7
+01E8 ; NFKC_SCF; 01E9
+01EA ; NFKC_SCF; 01EB
+01EC ; NFKC_SCF; 01ED
+01EE ; NFKC_SCF; 01EF
+01F1..01F3 ; NFKC_SCF; 0064 007A
+01F4 ; NFKC_SCF; 01F5
+01F6 ; NFKC_SCF; 0195
+01F7 ; NFKC_SCF; 01BF
+01F8 ; NFKC_SCF; 01F9
+01FA ; NFKC_SCF; 01FB
+01FC ; NFKC_SCF; 01FD
+01FE ; NFKC_SCF; 01FF
+0200 ; NFKC_SCF; 0201
+0202 ; NFKC_SCF; 0203
+0204 ; NFKC_SCF; 0205
+0206 ; NFKC_SCF; 0207
+0208 ; NFKC_SCF; 0209
+020A ; NFKC_SCF; 020B
+020C ; NFKC_SCF; 020D
+020E ; NFKC_SCF; 020F
+0210 ; NFKC_SCF; 0211
+0212 ; NFKC_SCF; 0213
+0214 ; NFKC_SCF; 0215
+0216 ; NFKC_SCF; 0217
+0218 ; NFKC_SCF; 0219
+021A ; NFKC_SCF; 021B
+021C ; NFKC_SCF; 021D
+021E ; NFKC_SCF; 021F
+0220 ; NFKC_SCF; 019E
+0222 ; NFKC_SCF; 0223
+0224 ; NFKC_SCF; 0225
+0226 ; NFKC_SCF; 0227
+0228 ; NFKC_SCF; 0229
+022A ; NFKC_SCF; 022B
+022C ; NFKC_SCF; 022D
+022E ; NFKC_SCF; 022F
+0230 ; NFKC_SCF; 0231
+0232 ; NFKC_SCF; 0233
+023A ; NFKC_SCF; 2C65
+023B ; NFKC_SCF; 023C
+023D ; NFKC_SCF; 019A
+023E ; NFKC_SCF; 2C66
+0241 ; NFKC_SCF; 0242
+0243 ; NFKC_SCF; 0180
+0244 ; NFKC_SCF; 0289
+0245 ; NFKC_SCF; 028C
+0246 ; NFKC_SCF; 0247
+0248 ; NFKC_SCF; 0249
+024A ; NFKC_SCF; 024B
+024C ; NFKC_SCF; 024D
+024E ; NFKC_SCF; 024F
+02B0 ; NFKC_SCF; 0068
+02B1 ; NFKC_SCF; 0266
+02B2 ; NFKC_SCF; 006A
+02B3 ; NFKC_SCF; 0072
+02B4 ; NFKC_SCF; 0279
+02B5 ; NFKC_SCF; 027B
+02B6 ; NFKC_SCF; 0281
+02B7 ; NFKC_SCF; 0077
+02B8 ; NFKC_SCF; 0079
+02D8 ; NFKC_SCF; 0020 0306
+02D9 ; NFKC_SCF; 0020 0307
+02DA ; NFKC_SCF; 0020 030A
+02DB ; NFKC_SCF; 0020 0328
+02DC ; NFKC_SCF; 0020 0303
+02DD ; NFKC_SCF; 0020 030B
+02E0 ; NFKC_SCF; 0263
+02E1 ; NFKC_SCF; 006C
+02E2 ; NFKC_SCF; 0073
+02E3 ; NFKC_SCF; 0078
+02E4 ; NFKC_SCF; 0295
+0340 ; NFKC_SCF; 0300
+0341 ; NFKC_SCF; 0301
+0343 ; NFKC_SCF; 0313
+0344 ; NFKC_SCF; 0308 0301
+0345 ; NFKC_SCF; 03B9
+034F ; NFKC_SCF;
+0370 ; NFKC_SCF; 0371
+0372 ; NFKC_SCF; 0373
+0374 ; NFKC_SCF; 02B9
+0376 ; NFKC_SCF; 0377
+037A ; NFKC_SCF; 0020 03B9
+037E ; NFKC_SCF; 003B
+037F ; NFKC_SCF; 03F3
+0384 ; NFKC_SCF; 0020 0301
+0385 ; NFKC_SCF; 0020 0308 0301
+0386 ; NFKC_SCF; 03AC
+0387 ; NFKC_SCF; 00B7
+0388 ; NFKC_SCF; 03AD
+0389 ; NFKC_SCF; 03AE
+038A ; NFKC_SCF; 03AF
+038C ; NFKC_SCF; 03CC
+038E ; NFKC_SCF; 03CD
+038F ; NFKC_SCF; 03CE
+0391 ; NFKC_SCF; 03B1
+0392 ; NFKC_SCF; 03B2
+0393 ; NFKC_SCF; 03B3
+0394 ; NFKC_SCF; 03B4
+0395 ; NFKC_SCF; 03B5
+0396 ; NFKC_SCF; 03B6
+0397 ; NFKC_SCF; 03B7
+0398 ; NFKC_SCF; 03B8
+0399 ; NFKC_SCF; 03B9
+039A ; NFKC_SCF; 03BA
+039B ; NFKC_SCF; 03BB
+039C ; NFKC_SCF; 03BC
+039D ; NFKC_SCF; 03BD
+039E ; NFKC_SCF; 03BE
+039F ; NFKC_SCF; 03BF
+03A0 ; NFKC_SCF; 03C0
+03A1 ; NFKC_SCF; 03C1
+03A3 ; NFKC_SCF; 03C3
+03A4 ; NFKC_SCF; 03C4
+03A5 ; NFKC_SCF; 03C5
+03A6 ; NFKC_SCF; 03C6
+03A7 ; NFKC_SCF; 03C7
+03A8 ; NFKC_SCF; 03C8
+03A9 ; NFKC_SCF; 03C9
+03AA ; NFKC_SCF; 03CA
+03AB ; NFKC_SCF; 03CB
+03C2 ; NFKC_SCF; 03C3
+03CF ; NFKC_SCF; 03D7
+03D0 ; NFKC_SCF; 03B2
+03D1 ; NFKC_SCF; 03B8
+03D2 ; NFKC_SCF; 03C5
+03D3 ; NFKC_SCF; 03CD
+03D4 ; NFKC_SCF; 03CB
+03D5 ; NFKC_SCF; 03C6
+03D6 ; NFKC_SCF; 03C0
+03D8 ; NFKC_SCF; 03D9
+03DA ; NFKC_SCF; 03DB
+03DC ; NFKC_SCF; 03DD
+03DE ; NFKC_SCF; 03DF
+03E0 ; NFKC_SCF; 03E1
+03E2 ; NFKC_SCF; 03E3
+03E4 ; NFKC_SCF; 03E5
+03E6 ; NFKC_SCF; 03E7
+03E8 ; NFKC_SCF; 03E9
+03EA ; NFKC_SCF; 03EB
+03EC ; NFKC_SCF; 03ED
+03EE ; NFKC_SCF; 03EF
+03F0 ; NFKC_SCF; 03BA
+03F1 ; NFKC_SCF; 03C1
+03F2 ; NFKC_SCF; 03C3
+03F4 ; NFKC_SCF; 03B8
+03F5 ; NFKC_SCF; 03B5
+03F7 ; NFKC_SCF; 03F8
+03F9 ; NFKC_SCF; 03C3
+03FA ; NFKC_SCF; 03FB
+03FD ; NFKC_SCF; 037B
+03FE ; NFKC_SCF; 037C
+03FF ; NFKC_SCF; 037D
+0400 ; NFKC_SCF; 0450
+0401 ; NFKC_SCF; 0451
+0402 ; NFKC_SCF; 0452
+0403 ; NFKC_SCF; 0453
+0404 ; NFKC_SCF; 0454
+0405 ; NFKC_SCF; 0455
+0406 ; NFKC_SCF; 0456
+0407 ; NFKC_SCF; 0457
+0408 ; NFKC_SCF; 0458
+0409 ; NFKC_SCF; 0459
+040A ; NFKC_SCF; 045A
+040B ; NFKC_SCF; 045B
+040C ; NFKC_SCF; 045C
+040D ; NFKC_SCF; 045D
+040E ; NFKC_SCF; 045E
+040F ; NFKC_SCF; 045F
+0410 ; NFKC_SCF; 0430
+0411 ; NFKC_SCF; 0431
+0412 ; NFKC_SCF; 0432
+0413 ; NFKC_SCF; 0433
+0414 ; NFKC_SCF; 0434
+0415 ; NFKC_SCF; 0435
+0416 ; NFKC_SCF; 0436
+0417 ; NFKC_SCF; 0437
+0418 ; NFKC_SCF; 0438
+0419 ; NFKC_SCF; 0439
+041A ; NFKC_SCF; 043A
+041B ; NFKC_SCF; 043B
+041C ; NFKC_SCF; 043C
+041D ; NFKC_SCF; 043D
+041E ; NFKC_SCF; 043E
+041F ; NFKC_SCF; 043F
+0420 ; NFKC_SCF; 0440
+0421 ; NFKC_SCF; 0441
+0422 ; NFKC_SCF; 0442
+0423 ; NFKC_SCF; 0443
+0424 ; NFKC_SCF; 0444
+0425 ; NFKC_SCF; 0445
+0426 ; NFKC_SCF; 0446
+0427 ; NFKC_SCF; 0447
+0428 ; NFKC_SCF; 0448
+0429 ; NFKC_SCF; 0449
+042A ; NFKC_SCF; 044A
+042B ; NFKC_SCF; 044B
+042C ; NFKC_SCF; 044C
+042D ; NFKC_SCF; 044D
+042E ; NFKC_SCF; 044E
+042F ; NFKC_SCF; 044F
+0460 ; NFKC_SCF; 0461
+0462 ; NFKC_SCF; 0463
+0464 ; NFKC_SCF; 0465
+0466 ; NFKC_SCF; 0467
+0468 ; NFKC_SCF; 0469
+046A ; NFKC_SCF; 046B
+046C ; NFKC_SCF; 046D
+046E ; NFKC_SCF; 046F
+0470 ; NFKC_SCF; 0471
+0472 ; NFKC_SCF; 0473
+0474 ; NFKC_SCF; 0475
+0476 ; NFKC_SCF; 0477
+0478 ; NFKC_SCF; 0479
+047A ; NFKC_SCF; 047B
+047C ; NFKC_SCF; 047D
+047E ; NFKC_SCF; 047F
+0480 ; NFKC_SCF; 0481
+048A ; NFKC_SCF; 048B
+048C ; NFKC_SCF; 048D
+048E ; NFKC_SCF; 048F
+0490 ; NFKC_SCF; 0491
+0492 ; NFKC_SCF; 0493
+0494 ; NFKC_SCF; 0495
+0496 ; NFKC_SCF; 0497
+0498 ; NFKC_SCF; 0499
+049A ; NFKC_SCF; 049B
+049C ; NFKC_SCF; 049D
+049E ; NFKC_SCF; 049F
+04A0 ; NFKC_SCF; 04A1
+04A2 ; NFKC_SCF; 04A3
+04A4 ; NFKC_SCF; 04A5
+04A6 ; NFKC_SCF; 04A7
+04A8 ; NFKC_SCF; 04A9
+04AA ; NFKC_SCF; 04AB
+04AC ; NFKC_SCF; 04AD
+04AE ; NFKC_SCF; 04AF
+04B0 ; NFKC_SCF; 04B1
+04B2 ; NFKC_SCF; 04B3
+04B4 ; NFKC_SCF; 04B5
+04B6 ; NFKC_SCF; 04B7
+04B8 ; NFKC_SCF; 04B9
+04BA ; NFKC_SCF; 04BB
+04BC ; NFKC_SCF; 04BD
+04BE ; NFKC_SCF; 04BF
+04C0 ; NFKC_SCF; 04CF
+04C1 ; NFKC_SCF; 04C2
+04C3 ; NFKC_SCF; 04C4
+04C5 ; NFKC_SCF; 04C6
+04C7 ; NFKC_SCF; 04C8
+04C9 ; NFKC_SCF; 04CA
+04CB ; NFKC_SCF; 04CC
+04CD ; NFKC_SCF; 04CE
+04D0 ; NFKC_SCF; 04D1
+04D2 ; NFKC_SCF; 04D3
+04D4 ; NFKC_SCF; 04D5
+04D6 ; NFKC_SCF; 04D7
+04D8 ; NFKC_SCF; 04D9
+04DA ; NFKC_SCF; 04DB
+04DC ; NFKC_SCF; 04DD
+04DE ; NFKC_SCF; 04DF
+04E0 ; NFKC_SCF; 04E1
+04E2 ; NFKC_SCF; 04E3
+04E4 ; NFKC_SCF; 04E5
+04E6 ; NFKC_SCF; 04E7
+04E8 ; NFKC_SCF; 04E9
+04EA ; NFKC_SCF; 04EB
+04EC ; NFKC_SCF; 04ED
+04EE ; NFKC_SCF; 04EF
+04F0 ; NFKC_SCF; 04F1
+04F2 ; NFKC_SCF; 04F3
+04F4 ; NFKC_SCF; 04F5
+04F6 ; NFKC_SCF; 04F7
+04F8 ; NFKC_SCF; 04F9
+04FA ; NFKC_SCF; 04FB
+04FC ; NFKC_SCF; 04FD
+04FE ; NFKC_SCF; 04FF
+0500 ; NFKC_SCF; 0501
+0502 ; NFKC_SCF; 0503
+0504 ; NFKC_SCF; 0505
+0506 ; NFKC_SCF; 0507
+0508 ; NFKC_SCF; 0509
+050A ; NFKC_SCF; 050B
+050C ; NFKC_SCF; 050D
+050E ; NFKC_SCF; 050F
+0510 ; NFKC_SCF; 0511
+0512 ; NFKC_SCF; 0513
+0514 ; NFKC_SCF; 0515
+0516 ; NFKC_SCF; 0517
+0518 ; NFKC_SCF; 0519
+051A ; NFKC_SCF; 051B
+051C ; NFKC_SCF; 051D
+051E ; NFKC_SCF; 051F
+0520 ; NFKC_SCF; 0521
+0522 ; NFKC_SCF; 0523
+0524 ; NFKC_SCF; 0525
+0526 ; NFKC_SCF; 0527
+0528 ; NFKC_SCF; 0529
+052A ; NFKC_SCF; 052B
+052C ; NFKC_SCF; 052D
+052E ; NFKC_SCF; 052F
+0531 ; NFKC_SCF; 0561
+0532 ; NFKC_SCF; 0562
+0533 ; NFKC_SCF; 0563
+0534 ; NFKC_SCF; 0564
+0535 ; NFKC_SCF; 0565
+0536 ; NFKC_SCF; 0566
+0537 ; NFKC_SCF; 0567
+0538 ; NFKC_SCF; 0568
+0539 ; NFKC_SCF; 0569
+053A ; NFKC_SCF; 056A
+053B ; NFKC_SCF; 056B
+053C ; NFKC_SCF; 056C
+053D ; NFKC_SCF; 056D
+053E ; NFKC_SCF; 056E
+053F ; NFKC_SCF; 056F
+0540 ; NFKC_SCF; 0570
+0541 ; NFKC_SCF; 0571
+0542 ; NFKC_SCF; 0572
+0543 ; NFKC_SCF; 0573
+0544 ; NFKC_SCF; 0574
+0545 ; NFKC_SCF; 0575
+0546 ; NFKC_SCF; 0576
+0547 ; NFKC_SCF; 0577
+0548 ; NFKC_SCF; 0578
+0549 ; NFKC_SCF; 0579
+054A ; NFKC_SCF; 057A
+054B ; NFKC_SCF; 057B
+054C ; NFKC_SCF; 057C
+054D ; NFKC_SCF; 057D
+054E ; NFKC_SCF; 057E
+054F ; NFKC_SCF; 057F
+0550 ; NFKC_SCF; 0580
+0551 ; NFKC_SCF; 0581
+0552 ; NFKC_SCF; 0582
+0553 ; NFKC_SCF; 0583
+0554 ; NFKC_SCF; 0584
+0555 ; NFKC_SCF; 0585
+0556 ; NFKC_SCF; 0586
+0587 ; NFKC_SCF; 0565 0582
+061C ; NFKC_SCF;
+0675 ; NFKC_SCF; 0627 0674
+0676 ; NFKC_SCF; 0648 0674
+0677 ; NFKC_SCF; 06C7 0674
+0678 ; NFKC_SCF; 064A 0674
+0958 ; NFKC_SCF; 0915 093C
+0959 ; NFKC_SCF; 0916 093C
+095A ; NFKC_SCF; 0917 093C
+095B ; NFKC_SCF; 091C 093C
+095C ; NFKC_SCF; 0921 093C
+095D ; NFKC_SCF; 0922 093C
+095E ; NFKC_SCF; 092B 093C
+095F ; NFKC_SCF; 092F 093C
+09DC ; NFKC_SCF; 09A1 09BC
+09DD ; NFKC_SCF; 09A2 09BC
+09DF ; NFKC_SCF; 09AF 09BC
+0A33 ; NFKC_SCF; 0A32 0A3C
+0A36 ; NFKC_SCF; 0A38 0A3C
+0A59 ; NFKC_SCF; 0A16 0A3C
+0A5A ; NFKC_SCF; 0A17 0A3C
+0A5B ; NFKC_SCF; 0A1C 0A3C
+0A5E ; NFKC_SCF; 0A2B 0A3C
+0B5C ; NFKC_SCF; 0B21 0B3C
+0B5D ; NFKC_SCF; 0B22 0B3C
+0E33 ; NFKC_SCF; 0E4D 0E32
+0EB3 ; NFKC_SCF; 0ECD 0EB2
+0EDC ; NFKC_SCF; 0EAB 0E99
+0EDD ; NFKC_SCF; 0EAB 0EA1
+0F0C ; NFKC_SCF; 0F0B
+0F43 ; NFKC_SCF; 0F42 0FB7
+0F4D ; NFKC_SCF; 0F4C 0FB7
+0F52 ; NFKC_SCF; 0F51 0FB7
+0F57 ; NFKC_SCF; 0F56 0FB7
+0F5C ; NFKC_SCF; 0F5B 0FB7
+0F69 ; NFKC_SCF; 0F40 0FB5
+0F73 ; NFKC_SCF; 0F71 0F72
+0F75 ; NFKC_SCF; 0F71 0F74
+0F76 ; NFKC_SCF; 0FB2 0F80
+0F77 ; NFKC_SCF; 0FB2 0F71 0F80
+0F78 ; NFKC_SCF; 0FB3 0F80
+0F79 ; NFKC_SCF; 0FB3 0F71 0F80
+0F81 ; NFKC_SCF; 0F71 0F80
+0F93 ; NFKC_SCF; 0F92 0FB7
+0F9D ; NFKC_SCF; 0F9C 0FB7
+0FA2 ; NFKC_SCF; 0FA1 0FB7
+0FA7 ; NFKC_SCF; 0FA6 0FB7
+0FAC ; NFKC_SCF; 0FAB 0FB7
+0FB9 ; NFKC_SCF; 0F90 0FB5
+10A0 ; NFKC_SCF; 2D00
+10A1 ; NFKC_SCF; 2D01
+10A2 ; NFKC_SCF; 2D02
+10A3 ; NFKC_SCF; 2D03
+10A4 ; NFKC_SCF; 2D04
+10A5 ; NFKC_SCF; 2D05
+10A6 ; NFKC_SCF; 2D06
+10A7 ; NFKC_SCF; 2D07
+10A8 ; NFKC_SCF; 2D08
+10A9 ; NFKC_SCF; 2D09
+10AA ; NFKC_SCF; 2D0A
+10AB ; NFKC_SCF; 2D0B
+10AC ; NFKC_SCF; 2D0C
+10AD ; NFKC_SCF; 2D0D
+10AE ; NFKC_SCF; 2D0E
+10AF ; NFKC_SCF; 2D0F
+10B0 ; NFKC_SCF; 2D10
+10B1 ; NFKC_SCF; 2D11
+10B2 ; NFKC_SCF; 2D12
+10B3 ; NFKC_SCF; 2D13
+10B4 ; NFKC_SCF; 2D14
+10B5 ; NFKC_SCF; 2D15
+10B6 ; NFKC_SCF; 2D16
+10B7 ; NFKC_SCF; 2D17
+10B8 ; NFKC_SCF; 2D18
+10B9 ; NFKC_SCF; 2D19
+10BA ; NFKC_SCF; 2D1A
+10BB ; NFKC_SCF; 2D1B
+10BC ; NFKC_SCF; 2D1C
+10BD ; NFKC_SCF; 2D1D
+10BE ; NFKC_SCF; 2D1E
+10BF ; NFKC_SCF; 2D1F
+10C0 ; NFKC_SCF; 2D20
+10C1 ; NFKC_SCF; 2D21
+10C2 ; NFKC_SCF; 2D22
+10C3 ; NFKC_SCF; 2D23
+10C4 ; NFKC_SCF; 2D24
+10C5 ; NFKC_SCF; 2D25
+10C7 ; NFKC_SCF; 2D27
+10CD ; NFKC_SCF; 2D2D
+10FC ; NFKC_SCF; 10DC
+115F..1160 ; NFKC_SCF;
+13F8 ; NFKC_SCF; 13F0
+13F9 ; NFKC_SCF; 13F1
+13FA ; NFKC_SCF; 13F2
+13FB ; NFKC_SCF; 13F3
+13FC ; NFKC_SCF; 13F4
+13FD ; NFKC_SCF; 13F5
+17B4..17B5 ; NFKC_SCF;
+180B..180D ; NFKC_SCF;
+180E ; NFKC_SCF;
+180F ; NFKC_SCF;
+1C80 ; NFKC_SCF; 0432
+1C81 ; NFKC_SCF; 0434
+1C82 ; NFKC_SCF; 043E
+1C83 ; NFKC_SCF; 0441
+1C84..1C85 ; NFKC_SCF; 0442
+1C86 ; NFKC_SCF; 044A
+1C87 ; NFKC_SCF; 0463
+1C88 ; NFKC_SCF; A64B
+1C90 ; NFKC_SCF; 10D0
+1C91 ; NFKC_SCF; 10D1
+1C92 ; NFKC_SCF; 10D2
+1C93 ; NFKC_SCF; 10D3
+1C94 ; NFKC_SCF; 10D4
+1C95 ; NFKC_SCF; 10D5
+1C96 ; NFKC_SCF; 10D6
+1C97 ; NFKC_SCF; 10D7
+1C98 ; NFKC_SCF; 10D8
+1C99 ; NFKC_SCF; 10D9
+1C9A ; NFKC_SCF; 10DA
+1C9B ; NFKC_SCF; 10DB
+1C9C ; NFKC_SCF; 10DC
+1C9D ; NFKC_SCF; 10DD
+1C9E ; NFKC_SCF; 10DE
+1C9F ; NFKC_SCF; 10DF
+1CA0 ; NFKC_SCF; 10E0
+1CA1 ; NFKC_SCF; 10E1
+1CA2 ; NFKC_SCF; 10E2
+1CA3 ; NFKC_SCF; 10E3
+1CA4 ; NFKC_SCF; 10E4
+1CA5 ; NFKC_SCF; 10E5
+1CA6 ; NFKC_SCF; 10E6
+1CA7 ; NFKC_SCF; 10E7
+1CA8 ; NFKC_SCF; 10E8
+1CA9 ; NFKC_SCF; 10E9
+1CAA ; NFKC_SCF; 10EA
+1CAB ; NFKC_SCF; 10EB
+1CAC ; NFKC_SCF; 10EC
+1CAD ; NFKC_SCF; 10ED
+1CAE ; NFKC_SCF; 10EE
+1CAF ; NFKC_SCF; 10EF
+1CB0 ; NFKC_SCF; 10F0
+1CB1 ; NFKC_SCF; 10F1
+1CB2 ; NFKC_SCF; 10F2
+1CB3 ; NFKC_SCF; 10F3
+1CB4 ; NFKC_SCF; 10F4
+1CB5 ; NFKC_SCF; 10F5
+1CB6 ; NFKC_SCF; 10F6
+1CB7 ; NFKC_SCF; 10F7
+1CB8 ; NFKC_SCF; 10F8
+1CB9 ; NFKC_SCF; 10F9
+1CBA ; NFKC_SCF; 10FA
+1CBD ; NFKC_SCF; 10FD
+1CBE ; NFKC_SCF; 10FE
+1CBF ; NFKC_SCF; 10FF
+1D2C ; NFKC_SCF; 0061
+1D2D ; NFKC_SCF; 00E6
+1D2E ; NFKC_SCF; 0062
+1D30 ; NFKC_SCF; 0064
+1D31 ; NFKC_SCF; 0065
+1D32 ; NFKC_SCF; 01DD
+1D33 ; NFKC_SCF; 0067
+1D34 ; NFKC_SCF; 0068
+1D35 ; NFKC_SCF; 0069
+1D36 ; NFKC_SCF; 006A
+1D37 ; NFKC_SCF; 006B
+1D38 ; NFKC_SCF; 006C
+1D39 ; NFKC_SCF; 006D
+1D3A ; NFKC_SCF; 006E
+1D3C ; NFKC_SCF; 006F
+1D3D ; NFKC_SCF; 0223
+1D3E ; NFKC_SCF; 0070
+1D3F ; NFKC_SCF; 0072
+1D40 ; NFKC_SCF; 0074
+1D41 ; NFKC_SCF; 0075
+1D42 ; NFKC_SCF; 0077
+1D43 ; NFKC_SCF; 0061
+1D44 ; NFKC_SCF; 0250
+1D45 ; NFKC_SCF; 0251
+1D46 ; NFKC_SCF; 1D02
+1D47 ; NFKC_SCF; 0062
+1D48 ; NFKC_SCF; 0064
+1D49 ; NFKC_SCF; 0065
+1D4A ; NFKC_SCF; 0259
+1D4B ; NFKC_SCF; 025B
+1D4C ; NFKC_SCF; 025C
+1D4D ; NFKC_SCF; 0067
+1D4F ; NFKC_SCF; 006B
+1D50 ; NFKC_SCF; 006D
+1D51 ; NFKC_SCF; 014B
+1D52 ; NFKC_SCF; 006F
+1D53 ; NFKC_SCF; 0254
+1D54 ; NFKC_SCF; 1D16
+1D55 ; NFKC_SCF; 1D17
+1D56 ; NFKC_SCF; 0070
+1D57 ; NFKC_SCF; 0074
+1D58 ; NFKC_SCF; 0075
+1D59 ; NFKC_SCF; 1D1D
+1D5A ; NFKC_SCF; 026F
+1D5B ; NFKC_SCF; 0076
+1D5C ; NFKC_SCF; 1D25
+1D5D ; NFKC_SCF; 03B2
+1D5E ; NFKC_SCF; 03B3
+1D5F ; NFKC_SCF; 03B4
+1D60 ; NFKC_SCF; 03C6
+1D61 ; NFKC_SCF; 03C7
+1D62 ; NFKC_SCF; 0069
+1D63 ; NFKC_SCF; 0072
+1D64 ; NFKC_SCF; 0075
+1D65 ; NFKC_SCF; 0076
+1D66 ; NFKC_SCF; 03B2
+1D67 ; NFKC_SCF; 03B3
+1D68 ; NFKC_SCF; 03C1
+1D69 ; NFKC_SCF; 03C6
+1D6A ; NFKC_SCF; 03C7
+1D78 ; NFKC_SCF; 043D
+1D9B ; NFKC_SCF; 0252
+1D9C ; NFKC_SCF; 0063
+1D9D ; NFKC_SCF; 0255
+1D9E ; NFKC_SCF; 00F0
+1D9F ; NFKC_SCF; 025C
+1DA0 ; NFKC_SCF; 0066
+1DA1 ; NFKC_SCF; 025F
+1DA2 ; NFKC_SCF; 0261
+1DA3 ; NFKC_SCF; 0265
+1DA4 ; NFKC_SCF; 0268
+1DA5 ; NFKC_SCF; 0269
+1DA6 ; NFKC_SCF; 026A
+1DA7 ; NFKC_SCF; 1D7B
+1DA8 ; NFKC_SCF; 029D
+1DA9 ; NFKC_SCF; 026D
+1DAA ; NFKC_SCF; 1D85
+1DAB ; NFKC_SCF; 029F
+1DAC ; NFKC_SCF; 0271
+1DAD ; NFKC_SCF; 0270
+1DAE ; NFKC_SCF; 0272
+1DAF ; NFKC_SCF; 0273
+1DB0 ; NFKC_SCF; 0274
+1DB1 ; NFKC_SCF; 0275
+1DB2 ; NFKC_SCF; 0278
+1DB3 ; NFKC_SCF; 0282
+1DB4 ; NFKC_SCF; 0283
+1DB5 ; NFKC_SCF; 01AB
+1DB6 ; NFKC_SCF; 0289
+1DB7 ; NFKC_SCF; 028A
+1DB8 ; NFKC_SCF; 1D1C
+1DB9 ; NFKC_SCF; 028B
+1DBA ; NFKC_SCF; 028C
+1DBB ; NFKC_SCF; 007A
+1DBC ; NFKC_SCF; 0290
+1DBD ; NFKC_SCF; 0291
+1DBE ; NFKC_SCF; 0292
+1DBF ; NFKC_SCF; 03B8
+1E00 ; NFKC_SCF; 1E01
+1E02 ; NFKC_SCF; 1E03
+1E04 ; NFKC_SCF; 1E05
+1E06 ; NFKC_SCF; 1E07
+1E08 ; NFKC_SCF; 1E09
+1E0A ; NFKC_SCF; 1E0B
+1E0C ; NFKC_SCF; 1E0D
+1E0E ; NFKC_SCF; 1E0F
+1E10 ; NFKC_SCF; 1E11
+1E12 ; NFKC_SCF; 1E13
+1E14 ; NFKC_SCF; 1E15
+1E16 ; NFKC_SCF; 1E17
+1E18 ; NFKC_SCF; 1E19
+1E1A ; NFKC_SCF; 1E1B
+1E1C ; NFKC_SCF; 1E1D
+1E1E ; NFKC_SCF; 1E1F
+1E20 ; NFKC_SCF; 1E21
+1E22 ; NFKC_SCF; 1E23
+1E24 ; NFKC_SCF; 1E25
+1E26 ; NFKC_SCF; 1E27
+1E28 ; NFKC_SCF; 1E29
+1E2A ; NFKC_SCF; 1E2B
+1E2C ; NFKC_SCF; 1E2D
+1E2E ; NFKC_SCF; 1E2F
+1E30 ; NFKC_SCF; 1E31
+1E32 ; NFKC_SCF; 1E33
+1E34 ; NFKC_SCF; 1E35
+1E36 ; NFKC_SCF; 1E37
+1E38 ; NFKC_SCF; 1E39
+1E3A ; NFKC_SCF; 1E3B
+1E3C ; NFKC_SCF; 1E3D
+1E3E ; NFKC_SCF; 1E3F
+1E40 ; NFKC_SCF; 1E41
+1E42 ; NFKC_SCF; 1E43
+1E44 ; NFKC_SCF; 1E45
+1E46 ; NFKC_SCF; 1E47
+1E48 ; NFKC_SCF; 1E49
+1E4A ; NFKC_SCF; 1E4B
+1E4C ; NFKC_SCF; 1E4D
+1E4E ; NFKC_SCF; 1E4F
+1E50 ; NFKC_SCF; 1E51
+1E52 ; NFKC_SCF; 1E53
+1E54 ; NFKC_SCF; 1E55
+1E56 ; NFKC_SCF; 1E57
+1E58 ; NFKC_SCF; 1E59
+1E5A ; NFKC_SCF; 1E5B
+1E5C ; NFKC_SCF; 1E5D
+1E5E ; NFKC_SCF; 1E5F
+1E60 ; NFKC_SCF; 1E61
+1E62 ; NFKC_SCF; 1E63
+1E64 ; NFKC_SCF; 1E65
+1E66 ; NFKC_SCF; 1E67
+1E68 ; NFKC_SCF; 1E69
+1E6A ; NFKC_SCF; 1E6B
+1E6C ; NFKC_SCF; 1E6D
+1E6E ; NFKC_SCF; 1E6F
+1E70 ; NFKC_SCF; 1E71
+1E72 ; NFKC_SCF; 1E73
+1E74 ; NFKC_SCF; 1E75
+1E76 ; NFKC_SCF; 1E77
+1E78 ; NFKC_SCF; 1E79
+1E7A ; NFKC_SCF; 1E7B
+1E7C ; NFKC_SCF; 1E7D
+1E7E ; NFKC_SCF; 1E7F
+1E80 ; NFKC_SCF; 1E81
+1E82 ; NFKC_SCF; 1E83
+1E84 ; NFKC_SCF; 1E85
+1E86 ; NFKC_SCF; 1E87
+1E88 ; NFKC_SCF; 1E89
+1E8A ; NFKC_SCF; 1E8B
+1E8C ; NFKC_SCF; 1E8D
+1E8E ; NFKC_SCF; 1E8F
+1E90 ; NFKC_SCF; 1E91
+1E92 ; NFKC_SCF; 1E93
+1E94 ; NFKC_SCF; 1E95
+1E9A ; NFKC_SCF; 0061 02BE
+1E9B ; NFKC_SCF; 1E61
+1E9E ; NFKC_SCF; 00DF
+1EA0 ; NFKC_SCF; 1EA1
+1EA2 ; NFKC_SCF; 1EA3
+1EA4 ; NFKC_SCF; 1EA5
+1EA6 ; NFKC_SCF; 1EA7
+1EA8 ; NFKC_SCF; 1EA9
+1EAA ; NFKC_SCF; 1EAB
+1EAC ; NFKC_SCF; 1EAD
+1EAE ; NFKC_SCF; 1EAF
+1EB0 ; NFKC_SCF; 1EB1
+1EB2 ; NFKC_SCF; 1EB3
+1EB4 ; NFKC_SCF; 1EB5
+1EB6 ; NFKC_SCF; 1EB7
+1EB8 ; NFKC_SCF; 1EB9
+1EBA ; NFKC_SCF; 1EBB
+1EBC ; NFKC_SCF; 1EBD
+1EBE ; NFKC_SCF; 1EBF
+1EC0 ; NFKC_SCF; 1EC1
+1EC2 ; NFKC_SCF; 1EC3
+1EC4 ; NFKC_SCF; 1EC5
+1EC6 ; NFKC_SCF; 1EC7
+1EC8 ; NFKC_SCF; 1EC9
+1ECA ; NFKC_SCF; 1ECB
+1ECC ; NFKC_SCF; 1ECD
+1ECE ; NFKC_SCF; 1ECF
+1ED0 ; NFKC_SCF; 1ED1
+1ED2 ; NFKC_SCF; 1ED3
+1ED4 ; NFKC_SCF; 1ED5
+1ED6 ; NFKC_SCF; 1ED7
+1ED8 ; NFKC_SCF; 1ED9
+1EDA ; NFKC_SCF; 1EDB
+1EDC ; NFKC_SCF; 1EDD
+1EDE ; NFKC_SCF; 1EDF
+1EE0 ; NFKC_SCF; 1EE1
+1EE2 ; NFKC_SCF; 1EE3
+1EE4 ; NFKC_SCF; 1EE5
+1EE6 ; NFKC_SCF; 1EE7
+1EE8 ; NFKC_SCF; 1EE9
+1EEA ; NFKC_SCF; 1EEB
+1EEC ; NFKC_SCF; 1EED
+1EEE ; NFKC_SCF; 1EEF
+1EF0 ; NFKC_SCF; 1EF1
+1EF2 ; NFKC_SCF; 1EF3
+1EF4 ; NFKC_SCF; 1EF5
+1EF6 ; NFKC_SCF; 1EF7
+1EF8 ; NFKC_SCF; 1EF9
+1EFA ; NFKC_SCF; 1EFB
+1EFC ; NFKC_SCF; 1EFD
+1EFE ; NFKC_SCF; 1EFF
+1F08 ; NFKC_SCF; 1F00
+1F09 ; NFKC_SCF; 1F01
+1F0A ; NFKC_SCF; 1F02
+1F0B ; NFKC_SCF; 1F03
+1F0C ; NFKC_SCF; 1F04
+1F0D ; NFKC_SCF; 1F05
+1F0E ; NFKC_SCF; 1F06
+1F0F ; NFKC_SCF; 1F07
+1F18 ; NFKC_SCF; 1F10
+1F19 ; NFKC_SCF; 1F11
+1F1A ; NFKC_SCF; 1F12
+1F1B ; NFKC_SCF; 1F13
+1F1C ; NFKC_SCF; 1F14
+1F1D ; NFKC_SCF; 1F15
+1F28 ; NFKC_SCF; 1F20
+1F29 ; NFKC_SCF; 1F21
+1F2A ; NFKC_SCF; 1F22
+1F2B ; NFKC_SCF; 1F23
+1F2C ; NFKC_SCF; 1F24
+1F2D ; NFKC_SCF; 1F25
+1F2E ; NFKC_SCF; 1F26
+1F2F ; NFKC_SCF; 1F27
+1F38 ; NFKC_SCF; 1F30
+1F39 ; NFKC_SCF; 1F31
+1F3A ; NFKC_SCF; 1F32
+1F3B ; NFKC_SCF; 1F33
+1F3C ; NFKC_SCF; 1F34
+1F3D ; NFKC_SCF; 1F35
+1F3E ; NFKC_SCF; 1F36
+1F3F ; NFKC_SCF; 1F37
+1F48 ; NFKC_SCF; 1F40
+1F49 ; NFKC_SCF; 1F41
+1F4A ; NFKC_SCF; 1F42
+1F4B ; NFKC_SCF; 1F43
+1F4C ; NFKC_SCF; 1F44
+1F4D ; NFKC_SCF; 1F45
+1F59 ; NFKC_SCF; 1F51
+1F5B ; NFKC_SCF; 1F53
+1F5D ; NFKC_SCF; 1F55
+1F5F ; NFKC_SCF; 1F57
+1F68 ; NFKC_SCF; 1F60
+1F69 ; NFKC_SCF; 1F61
+1F6A ; NFKC_SCF; 1F62
+1F6B ; NFKC_SCF; 1F63
+1F6C ; NFKC_SCF; 1F64
+1F6D ; NFKC_SCF; 1F65
+1F6E ; NFKC_SCF; 1F66
+1F6F ; NFKC_SCF; 1F67
+1F71 ; NFKC_SCF; 03AC
+1F73 ; NFKC_SCF; 03AD
+1F75 ; NFKC_SCF; 03AE
+1F77 ; NFKC_SCF; 03AF
+1F79 ; NFKC_SCF; 03CC
+1F7B ; NFKC_SCF; 03CD
+1F7D ; NFKC_SCF; 03CE
+1F88 ; NFKC_SCF; 1F80
+1F89 ; NFKC_SCF; 1F81
+1F8A ; NFKC_SCF; 1F82
+1F8B ; NFKC_SCF; 1F83
+1F8C ; NFKC_SCF; 1F84
+1F8D ; NFKC_SCF; 1F85
+1F8E ; NFKC_SCF; 1F86
+1F8F ; NFKC_SCF; 1F87
+1F98 ; NFKC_SCF; 1F90
+1F99 ; NFKC_SCF; 1F91
+1F9A ; NFKC_SCF; 1F92
+1F9B ; NFKC_SCF; 1F93
+1F9C ; NFKC_SCF; 1F94
+1F9D ; NFKC_SCF; 1F95
+1F9E ; NFKC_SCF; 1F96
+1F9F ; NFKC_SCF; 1F97
+1FA8 ; NFKC_SCF; 1FA0
+1FA9 ; NFKC_SCF; 1FA1
+1FAA ; NFKC_SCF; 1FA2
+1FAB ; NFKC_SCF; 1FA3
+1FAC ; NFKC_SCF; 1FA4
+1FAD ; NFKC_SCF; 1FA5
+1FAE ; NFKC_SCF; 1FA6
+1FAF ; NFKC_SCF; 1FA7
+1FB8 ; NFKC_SCF; 1FB0
+1FB9 ; NFKC_SCF; 1FB1
+1FBA ; NFKC_SCF; 1F70
+1FBB ; NFKC_SCF; 03AC
+1FBC ; NFKC_SCF; 1FB3
+1FBD ; NFKC_SCF; 0020 0313
+1FBE ; NFKC_SCF; 03B9
+1FBF ; NFKC_SCF; 0020 0313
+1FC0 ; NFKC_SCF; 0020 0342
+1FC1 ; NFKC_SCF; 0020 0308 0342
+1FC8 ; NFKC_SCF; 1F72
+1FC9 ; NFKC_SCF; 03AD
+1FCA ; NFKC_SCF; 1F74
+1FCB ; NFKC_SCF; 03AE
+1FCC ; NFKC_SCF; 1FC3
+1FCD ; NFKC_SCF; 0020 0313 0300
+1FCE ; NFKC_SCF; 0020 0313 0301
+1FCF ; NFKC_SCF; 0020 0313 0342
+1FD3 ; NFKC_SCF; 0390
+1FD8 ; NFKC_SCF; 1FD0
+1FD9 ; NFKC_SCF; 1FD1
+1FDA ; NFKC_SCF; 1F76
+1FDB ; NFKC_SCF; 03AF
+1FDD ; NFKC_SCF; 0020 0314 0300
+1FDE ; NFKC_SCF; 0020 0314 0301
+1FDF ; NFKC_SCF; 0020 0314 0342
+1FE3 ; NFKC_SCF; 03B0
+1FE8 ; NFKC_SCF; 1FE0
+1FE9 ; NFKC_SCF; 1FE1
+1FEA ; NFKC_SCF; 1F7A
+1FEB ; NFKC_SCF; 03CD
+1FEC ; NFKC_SCF; 1FE5
+1FED ; NFKC_SCF; 0020 0308 0300
+1FEE ; NFKC_SCF; 0020 0308 0301
+1FEF ; NFKC_SCF; 0060
+1FF8 ; NFKC_SCF; 1F78
+1FF9 ; NFKC_SCF; 03CC
+1FFA ; NFKC_SCF; 1F7C
+1FFB ; NFKC_SCF; 03CE
+1FFC ; NFKC_SCF; 1FF3
+1FFD ; NFKC_SCF; 0020 0301
+1FFE ; NFKC_SCF; 0020 0314
+2000..200A ; NFKC_SCF; 0020
+200B..200F ; NFKC_SCF;
+2011 ; NFKC_SCF; 2010
+2017 ; NFKC_SCF; 0020 0333
+2024 ; NFKC_SCF; 002E
+2025 ; NFKC_SCF; 002E 002E
+2026 ; NFKC_SCF; 002E 002E 002E
+202A..202E ; NFKC_SCF;
+202F ; NFKC_SCF; 0020
+2033 ; NFKC_SCF; 2032 2032
+2034 ; NFKC_SCF; 2032 2032 2032
+2036 ; NFKC_SCF; 2035 2035
+2037 ; NFKC_SCF; 2035 2035 2035
+203C ; NFKC_SCF; 0021 0021
+203E ; NFKC_SCF; 0020 0305
+2047 ; NFKC_SCF; 003F 003F
+2048 ; NFKC_SCF; 003F 0021
+2049 ; NFKC_SCF; 0021 003F
+2057 ; NFKC_SCF; 2032 2032 2032 2032
+205F ; NFKC_SCF; 0020
+2060..2064 ; NFKC_SCF;
+2065 ; NFKC_SCF;
+2066..206F ; NFKC_SCF;
+2070 ; NFKC_SCF; 0030
+2071 ; NFKC_SCF; 0069
+2074 ; NFKC_SCF; 0034
+2075 ; NFKC_SCF; 0035
+2076 ; NFKC_SCF; 0036
+2077 ; NFKC_SCF; 0037
+2078 ; NFKC_SCF; 0038
+2079 ; NFKC_SCF; 0039
+207A ; NFKC_SCF; 002B
+207B ; NFKC_SCF; 2212
+207C ; NFKC_SCF; 003D
+207D ; NFKC_SCF; 0028
+207E ; NFKC_SCF; 0029
+207F ; NFKC_SCF; 006E
+2080 ; NFKC_SCF; 0030
+2081 ; NFKC_SCF; 0031
+2082 ; NFKC_SCF; 0032
+2083 ; NFKC_SCF; 0033
+2084 ; NFKC_SCF; 0034
+2085 ; NFKC_SCF; 0035
+2086 ; NFKC_SCF; 0036
+2087 ; NFKC_SCF; 0037
+2088 ; NFKC_SCF; 0038
+2089 ; NFKC_SCF; 0039
+208A ; NFKC_SCF; 002B
+208B ; NFKC_SCF; 2212
+208C ; NFKC_SCF; 003D
+208D ; NFKC_SCF; 0028
+208E ; NFKC_SCF; 0029
+2090 ; NFKC_SCF; 0061
+2091 ; NFKC_SCF; 0065
+2092 ; NFKC_SCF; 006F
+2093 ; NFKC_SCF; 0078
+2094 ; NFKC_SCF; 0259
+2095 ; NFKC_SCF; 0068
+2096 ; NFKC_SCF; 006B
+2097 ; NFKC_SCF; 006C
+2098 ; NFKC_SCF; 006D
+2099 ; NFKC_SCF; 006E
+209A ; NFKC_SCF; 0070
+209B ; NFKC_SCF; 0073
+209C ; NFKC_SCF; 0074
+20A8 ; NFKC_SCF; 0072 0073
+2100 ; NFKC_SCF; 0061 002F 0063
+2101 ; NFKC_SCF; 0061 002F 0073
+2102 ; NFKC_SCF; 0063
+2103 ; NFKC_SCF; 00B0 0063
+2105 ; NFKC_SCF; 0063 002F 006F
+2106 ; NFKC_SCF; 0063 002F 0075
+2107 ; NFKC_SCF; 025B
+2109 ; NFKC_SCF; 00B0 0066
+210A ; NFKC_SCF; 0067
+210B..210E ; NFKC_SCF; 0068
+210F ; NFKC_SCF; 0127
+2110..2111 ; NFKC_SCF; 0069
+2112..2113 ; NFKC_SCF; 006C
+2115 ; NFKC_SCF; 006E
+2116 ; NFKC_SCF; 006E 006F
+2119 ; NFKC_SCF; 0070
+211A ; NFKC_SCF; 0071
+211B..211D ; NFKC_SCF; 0072
+2120 ; NFKC_SCF; 0073 006D
+2121 ; NFKC_SCF; 0074 0065 006C
+2122 ; NFKC_SCF; 0074 006D
+2124 ; NFKC_SCF; 007A
+2126 ; NFKC_SCF; 03C9
+2128 ; NFKC_SCF; 007A
+212A ; NFKC_SCF; 006B
+212B ; NFKC_SCF; 00E5
+212C ; NFKC_SCF; 0062
+212D ; NFKC_SCF; 0063
+212F..2130 ; NFKC_SCF; 0065
+2131 ; NFKC_SCF; 0066
+2132 ; NFKC_SCF; 214E
+2133 ; NFKC_SCF; 006D
+2134 ; NFKC_SCF; 006F
+2135 ; NFKC_SCF; 05D0
+2136 ; NFKC_SCF; 05D1
+2137 ; NFKC_SCF; 05D2
+2138 ; NFKC_SCF; 05D3
+2139 ; NFKC_SCF; 0069
+213B ; NFKC_SCF; 0066 0061 0078
+213C ; NFKC_SCF; 03C0
+213D..213E ; NFKC_SCF; 03B3
+213F ; NFKC_SCF; 03C0
+2140 ; NFKC_SCF; 2211
+2145..2146 ; NFKC_SCF; 0064
+2147 ; NFKC_SCF; 0065
+2148 ; NFKC_SCF; 0069
+2149 ; NFKC_SCF; 006A
+2150 ; NFKC_SCF; 0031 2044 0037
+2151 ; NFKC_SCF; 0031 2044 0039
+2152 ; NFKC_SCF; 0031 2044 0031 0030
+2153 ; NFKC_SCF; 0031 2044 0033
+2154 ; NFKC_SCF; 0032 2044 0033
+2155 ; NFKC_SCF; 0031 2044 0035
+2156 ; NFKC_SCF; 0032 2044 0035
+2157 ; NFKC_SCF; 0033 2044 0035
+2158 ; NFKC_SCF; 0034 2044 0035
+2159 ; NFKC_SCF; 0031 2044 0036
+215A ; NFKC_SCF; 0035 2044 0036
+215B ; NFKC_SCF; 0031 2044 0038
+215C ; NFKC_SCF; 0033 2044 0038
+215D ; NFKC_SCF; 0035 2044 0038
+215E ; NFKC_SCF; 0037 2044 0038
+215F ; NFKC_SCF; 0031 2044
+2160 ; NFKC_SCF; 0069
+2161 ; NFKC_SCF; 0069 0069
+2162 ; NFKC_SCF; 0069 0069 0069
+2163 ; NFKC_SCF; 0069 0076
+2164 ; NFKC_SCF; 0076
+2165 ; NFKC_SCF; 0076 0069
+2166 ; NFKC_SCF; 0076 0069 0069
+2167 ; NFKC_SCF; 0076 0069 0069 0069
+2168 ; NFKC_SCF; 0069 0078
+2169 ; NFKC_SCF; 0078
+216A ; NFKC_SCF; 0078 0069
+216B ; NFKC_SCF; 0078 0069 0069
+216C ; NFKC_SCF; 006C
+216D ; NFKC_SCF; 0063
+216E ; NFKC_SCF; 0064
+216F ; NFKC_SCF; 006D
+2170 ; NFKC_SCF; 0069
+2171 ; NFKC_SCF; 0069 0069
+2172 ; NFKC_SCF; 0069 0069 0069
+2173 ; NFKC_SCF; 0069 0076
+2174 ; NFKC_SCF; 0076
+2175 ; NFKC_SCF; 0076 0069
+2176 ; NFKC_SCF; 0076 0069 0069
+2177 ; NFKC_SCF; 0076 0069 0069 0069
+2178 ; NFKC_SCF; 0069 0078
+2179 ; NFKC_SCF; 0078
+217A ; NFKC_SCF; 0078 0069
+217B ; NFKC_SCF; 0078 0069 0069
+217C ; NFKC_SCF; 006C
+217D ; NFKC_SCF; 0063
+217E ; NFKC_SCF; 0064
+217F ; NFKC_SCF; 006D
+2183 ; NFKC_SCF; 2184
+2189 ; NFKC_SCF; 0030 2044 0033
+222C ; NFKC_SCF; 222B 222B
+222D ; NFKC_SCF; 222B 222B 222B
+222F ; NFKC_SCF; 222E 222E
+2230 ; NFKC_SCF; 222E 222E 222E
+2329 ; NFKC_SCF; 3008
+232A ; NFKC_SCF; 3009
+2460 ; NFKC_SCF; 0031
+2461 ; NFKC_SCF; 0032
+2462 ; NFKC_SCF; 0033
+2463 ; NFKC_SCF; 0034
+2464 ; NFKC_SCF; 0035
+2465 ; NFKC_SCF; 0036
+2466 ; NFKC_SCF; 0037
+2467 ; NFKC_SCF; 0038
+2468 ; NFKC_SCF; 0039
+2469 ; NFKC_SCF; 0031 0030
+246A ; NFKC_SCF; 0031 0031
+246B ; NFKC_SCF; 0031 0032
+246C ; NFKC_SCF; 0031 0033
+246D ; NFKC_SCF; 0031 0034
+246E ; NFKC_SCF; 0031 0035
+246F ; NFKC_SCF; 0031 0036
+2470 ; NFKC_SCF; 0031 0037
+2471 ; NFKC_SCF; 0031 0038
+2472 ; NFKC_SCF; 0031 0039
+2473 ; NFKC_SCF; 0032 0030
+2474 ; NFKC_SCF; 0028 0031 0029
+2475 ; NFKC_SCF; 0028 0032 0029
+2476 ; NFKC_SCF; 0028 0033 0029
+2477 ; NFKC_SCF; 0028 0034 0029
+2478 ; NFKC_SCF; 0028 0035 0029
+2479 ; NFKC_SCF; 0028 0036 0029
+247A ; NFKC_SCF; 0028 0037 0029
+247B ; NFKC_SCF; 0028 0038 0029
+247C ; NFKC_SCF; 0028 0039 0029
+247D ; NFKC_SCF; 0028 0031 0030 0029
+247E ; NFKC_SCF; 0028 0031 0031 0029
+247F ; NFKC_SCF; 0028 0031 0032 0029
+2480 ; NFKC_SCF; 0028 0031 0033 0029
+2481 ; NFKC_SCF; 0028 0031 0034 0029
+2482 ; NFKC_SCF; 0028 0031 0035 0029
+2483 ; NFKC_SCF; 0028 0031 0036 0029
+2484 ; NFKC_SCF; 0028 0031 0037 0029
+2485 ; NFKC_SCF; 0028 0031 0038 0029
+2486 ; NFKC_SCF; 0028 0031 0039 0029
+2487 ; NFKC_SCF; 0028 0032 0030 0029
+2488 ; NFKC_SCF; 0031 002E
+2489 ; NFKC_SCF; 0032 002E
+248A ; NFKC_SCF; 0033 002E
+248B ; NFKC_SCF; 0034 002E
+248C ; NFKC_SCF; 0035 002E
+248D ; NFKC_SCF; 0036 002E
+248E ; NFKC_SCF; 0037 002E
+248F ; NFKC_SCF; 0038 002E
+2490 ; NFKC_SCF; 0039 002E
+2491 ; NFKC_SCF; 0031 0030 002E
+2492 ; NFKC_SCF; 0031 0031 002E
+2493 ; NFKC_SCF; 0031 0032 002E
+2494 ; NFKC_SCF; 0031 0033 002E
+2495 ; NFKC_SCF; 0031 0034 002E
+2496 ; NFKC_SCF; 0031 0035 002E
+2497 ; NFKC_SCF; 0031 0036 002E
+2498 ; NFKC_SCF; 0031 0037 002E
+2499 ; NFKC_SCF; 0031 0038 002E
+249A ; NFKC_SCF; 0031 0039 002E
+249B ; NFKC_SCF; 0032 0030 002E
+249C ; NFKC_SCF; 0028 0061 0029
+249D ; NFKC_SCF; 0028 0062 0029
+249E ; NFKC_SCF; 0028 0063 0029
+249F ; NFKC_SCF; 0028 0064 0029
+24A0 ; NFKC_SCF; 0028 0065 0029
+24A1 ; NFKC_SCF; 0028 0066 0029
+24A2 ; NFKC_SCF; 0028 0067 0029
+24A3 ; NFKC_SCF; 0028 0068 0029
+24A4 ; NFKC_SCF; 0028 0069 0029
+24A5 ; NFKC_SCF; 0028 006A 0029
+24A6 ; NFKC_SCF; 0028 006B 0029
+24A7 ; NFKC_SCF; 0028 006C 0029
+24A8 ; NFKC_SCF; 0028 006D 0029
+24A9 ; NFKC_SCF; 0028 006E 0029
+24AA ; NFKC_SCF; 0028 006F 0029
+24AB ; NFKC_SCF; 0028 0070 0029
+24AC ; NFKC_SCF; 0028 0071 0029
+24AD ; NFKC_SCF; 0028 0072 0029
+24AE ; NFKC_SCF; 0028 0073 0029
+24AF ; NFKC_SCF; 0028 0074 0029
+24B0 ; NFKC_SCF; 0028 0075 0029
+24B1 ; NFKC_SCF; 0028 0076 0029
+24B2 ; NFKC_SCF; 0028 0077 0029
+24B3 ; NFKC_SCF; 0028 0078 0029
+24B4 ; NFKC_SCF; 0028 0079 0029
+24B5 ; NFKC_SCF; 0028 007A 0029
+24B6 ; NFKC_SCF; 0061
+24B7 ; NFKC_SCF; 0062
+24B8 ; NFKC_SCF; 0063
+24B9 ; NFKC_SCF; 0064
+24BA ; NFKC_SCF; 0065
+24BB ; NFKC_SCF; 0066
+24BC ; NFKC_SCF; 0067
+24BD ; NFKC_SCF; 0068
+24BE ; NFKC_SCF; 0069
+24BF ; NFKC_SCF; 006A
+24C0 ; NFKC_SCF; 006B
+24C1 ; NFKC_SCF; 006C
+24C2 ; NFKC_SCF; 006D
+24C3 ; NFKC_SCF; 006E
+24C4 ; NFKC_SCF; 006F
+24C5 ; NFKC_SCF; 0070
+24C6 ; NFKC_SCF; 0071
+24C7 ; NFKC_SCF; 0072
+24C8 ; NFKC_SCF; 0073
+24C9 ; NFKC_SCF; 0074
+24CA ; NFKC_SCF; 0075
+24CB ; NFKC_SCF; 0076
+24CC ; NFKC_SCF; 0077
+24CD ; NFKC_SCF; 0078
+24CE ; NFKC_SCF; 0079
+24CF ; NFKC_SCF; 007A
+24D0 ; NFKC_SCF; 0061
+24D1 ; NFKC_SCF; 0062
+24D2 ; NFKC_SCF; 0063
+24D3 ; NFKC_SCF; 0064
+24D4 ; NFKC_SCF; 0065
+24D5 ; NFKC_SCF; 0066
+24D6 ; NFKC_SCF; 0067
+24D7 ; NFKC_SCF; 0068
+24D8 ; NFKC_SCF; 0069
+24D9 ; NFKC_SCF; 006A
+24DA ; NFKC_SCF; 006B
+24DB ; NFKC_SCF; 006C
+24DC ; NFKC_SCF; 006D
+24DD ; NFKC_SCF; 006E
+24DE ; NFKC_SCF; 006F
+24DF ; NFKC_SCF; 0070
+24E0 ; NFKC_SCF; 0071
+24E1 ; NFKC_SCF; 0072
+24E2 ; NFKC_SCF; 0073
+24E3 ; NFKC_SCF; 0074
+24E4 ; NFKC_SCF; 0075
+24E5 ; NFKC_SCF; 0076
+24E6 ; NFKC_SCF; 0077
+24E7 ; NFKC_SCF; 0078
+24E8 ; NFKC_SCF; 0079
+24E9 ; NFKC_SCF; 007A
+24EA ; NFKC_SCF; 0030
+2A0C ; NFKC_SCF; 222B 222B 222B 222B
+2A74 ; NFKC_SCF; 003A 003A 003D
+2A75 ; NFKC_SCF; 003D 003D
+2A76 ; NFKC_SCF; 003D 003D 003D
+2ADC ; NFKC_SCF; 2ADD 0338
+2C00 ; NFKC_SCF; 2C30
+2C01 ; NFKC_SCF; 2C31
+2C02 ; NFKC_SCF; 2C32
+2C03 ; NFKC_SCF; 2C33
+2C04 ; NFKC_SCF; 2C34
+2C05 ; NFKC_SCF; 2C35
+2C06 ; NFKC_SCF; 2C36
+2C07 ; NFKC_SCF; 2C37
+2C08 ; NFKC_SCF; 2C38
+2C09 ; NFKC_SCF; 2C39
+2C0A ; NFKC_SCF; 2C3A
+2C0B ; NFKC_SCF; 2C3B
+2C0C ; NFKC_SCF; 2C3C
+2C0D ; NFKC_SCF; 2C3D
+2C0E ; NFKC_SCF; 2C3E
+2C0F ; NFKC_SCF; 2C3F
+2C10 ; NFKC_SCF; 2C40
+2C11 ; NFKC_SCF; 2C41
+2C12 ; NFKC_SCF; 2C42
+2C13 ; NFKC_SCF; 2C43
+2C14 ; NFKC_SCF; 2C44
+2C15 ; NFKC_SCF; 2C45
+2C16 ; NFKC_SCF; 2C46
+2C17 ; NFKC_SCF; 2C47
+2C18 ; NFKC_SCF; 2C48
+2C19 ; NFKC_SCF; 2C49
+2C1A ; NFKC_SCF; 2C4A
+2C1B ; NFKC_SCF; 2C4B
+2C1C ; NFKC_SCF; 2C4C
+2C1D ; NFKC_SCF; 2C4D
+2C1E ; NFKC_SCF; 2C4E
+2C1F ; NFKC_SCF; 2C4F
+2C20 ; NFKC_SCF; 2C50
+2C21 ; NFKC_SCF; 2C51
+2C22 ; NFKC_SCF; 2C52
+2C23 ; NFKC_SCF; 2C53
+2C24 ; NFKC_SCF; 2C54
+2C25 ; NFKC_SCF; 2C55
+2C26 ; NFKC_SCF; 2C56
+2C27 ; NFKC_SCF; 2C57
+2C28 ; NFKC_SCF; 2C58
+2C29 ; NFKC_SCF; 2C59
+2C2A ; NFKC_SCF; 2C5A
+2C2B ; NFKC_SCF; 2C5B
+2C2C ; NFKC_SCF; 2C5C
+2C2D ; NFKC_SCF; 2C5D
+2C2E ; NFKC_SCF; 2C5E
+2C2F ; NFKC_SCF; 2C5F
+2C60 ; NFKC_SCF; 2C61
+2C62 ; NFKC_SCF; 026B
+2C63 ; NFKC_SCF; 1D7D
+2C64 ; NFKC_SCF; 027D
+2C67 ; NFKC_SCF; 2C68
+2C69 ; NFKC_SCF; 2C6A
+2C6B ; NFKC_SCF; 2C6C
+2C6D ; NFKC_SCF; 0251
+2C6E ; NFKC_SCF; 0271
+2C6F ; NFKC_SCF; 0250
+2C70 ; NFKC_SCF; 0252
+2C72 ; NFKC_SCF; 2C73
+2C75 ; NFKC_SCF; 2C76
+2C7C ; NFKC_SCF; 006A
+2C7D ; NFKC_SCF; 0076
+2C7E ; NFKC_SCF; 023F
+2C7F ; NFKC_SCF; 0240
+2C80 ; NFKC_SCF; 2C81
+2C82 ; NFKC_SCF; 2C83
+2C84 ; NFKC_SCF; 2C85
+2C86 ; NFKC_SCF; 2C87
+2C88 ; NFKC_SCF; 2C89
+2C8A ; NFKC_SCF; 2C8B
+2C8C ; NFKC_SCF; 2C8D
+2C8E ; NFKC_SCF; 2C8F
+2C90 ; NFKC_SCF; 2C91
+2C92 ; NFKC_SCF; 2C93
+2C94 ; NFKC_SCF; 2C95
+2C96 ; NFKC_SCF; 2C97
+2C98 ; NFKC_SCF; 2C99
+2C9A ; NFKC_SCF; 2C9B
+2C9C ; NFKC_SCF; 2C9D
+2C9E ; NFKC_SCF; 2C9F
+2CA0 ; NFKC_SCF; 2CA1
+2CA2 ; NFKC_SCF; 2CA3
+2CA4 ; NFKC_SCF; 2CA5
+2CA6 ; NFKC_SCF; 2CA7
+2CA8 ; NFKC_SCF; 2CA9
+2CAA ; NFKC_SCF; 2CAB
+2CAC ; NFKC_SCF; 2CAD
+2CAE ; NFKC_SCF; 2CAF
+2CB0 ; NFKC_SCF; 2CB1
+2CB2 ; NFKC_SCF; 2CB3
+2CB4 ; NFKC_SCF; 2CB5
+2CB6 ; NFKC_SCF; 2CB7
+2CB8 ; NFKC_SCF; 2CB9
+2CBA ; NFKC_SCF; 2CBB
+2CBC ; NFKC_SCF; 2CBD
+2CBE ; NFKC_SCF; 2CBF
+2CC0 ; NFKC_SCF; 2CC1
+2CC2 ; NFKC_SCF; 2CC3
+2CC4 ; NFKC_SCF; 2CC5
+2CC6 ; NFKC_SCF; 2CC7
+2CC8 ; NFKC_SCF; 2CC9
+2CCA ; NFKC_SCF; 2CCB
+2CCC ; NFKC_SCF; 2CCD
+2CCE ; NFKC_SCF; 2CCF
+2CD0 ; NFKC_SCF; 2CD1
+2CD2 ; NFKC_SCF; 2CD3
+2CD4 ; NFKC_SCF; 2CD5
+2CD6 ; NFKC_SCF; 2CD7
+2CD8 ; NFKC_SCF; 2CD9
+2CDA ; NFKC_SCF; 2CDB
+2CDC ; NFKC_SCF; 2CDD
+2CDE ; NFKC_SCF; 2CDF
+2CE0 ; NFKC_SCF; 2CE1
+2CE2 ; NFKC_SCF; 2CE3
+2CEB ; NFKC_SCF; 2CEC
+2CED ; NFKC_SCF; 2CEE
+2CF2 ; NFKC_SCF; 2CF3
+2D6F ; NFKC_SCF; 2D61
+2E9F ; NFKC_SCF; 6BCD
+2EF3 ; NFKC_SCF; 9F9F
+2F00 ; NFKC_SCF; 4E00
+2F01 ; NFKC_SCF; 4E28
+2F02 ; NFKC_SCF; 4E36
+2F03 ; NFKC_SCF; 4E3F
+2F04 ; NFKC_SCF; 4E59
+2F05 ; NFKC_SCF; 4E85
+2F06 ; NFKC_SCF; 4E8C
+2F07 ; NFKC_SCF; 4EA0
+2F08 ; NFKC_SCF; 4EBA
+2F09 ; NFKC_SCF; 513F
+2F0A ; NFKC_SCF; 5165
+2F0B ; NFKC_SCF; 516B
+2F0C ; NFKC_SCF; 5182
+2F0D ; NFKC_SCF; 5196
+2F0E ; NFKC_SCF; 51AB
+2F0F ; NFKC_SCF; 51E0
+2F10 ; NFKC_SCF; 51F5
+2F11 ; NFKC_SCF; 5200
+2F12 ; NFKC_SCF; 529B
+2F13 ; NFKC_SCF; 52F9
+2F14 ; NFKC_SCF; 5315
+2F15 ; NFKC_SCF; 531A
+2F16 ; NFKC_SCF; 5338
+2F17 ; NFKC_SCF; 5341
+2F18 ; NFKC_SCF; 535C
+2F19 ; NFKC_SCF; 5369
+2F1A ; NFKC_SCF; 5382
+2F1B ; NFKC_SCF; 53B6
+2F1C ; NFKC_SCF; 53C8
+2F1D ; NFKC_SCF; 53E3
+2F1E ; NFKC_SCF; 56D7
+2F1F ; NFKC_SCF; 571F
+2F20 ; NFKC_SCF; 58EB
+2F21 ; NFKC_SCF; 5902
+2F22 ; NFKC_SCF; 590A
+2F23 ; NFKC_SCF; 5915
+2F24 ; NFKC_SCF; 5927
+2F25 ; NFKC_SCF; 5973
+2F26 ; NFKC_SCF; 5B50
+2F27 ; NFKC_SCF; 5B80
+2F28 ; NFKC_SCF; 5BF8
+2F29 ; NFKC_SCF; 5C0F
+2F2A ; NFKC_SCF; 5C22
+2F2B ; NFKC_SCF; 5C38
+2F2C ; NFKC_SCF; 5C6E
+2F2D ; NFKC_SCF; 5C71
+2F2E ; NFKC_SCF; 5DDB
+2F2F ; NFKC_SCF; 5DE5
+2F30 ; NFKC_SCF; 5DF1
+2F31 ; NFKC_SCF; 5DFE
+2F32 ; NFKC_SCF; 5E72
+2F33 ; NFKC_SCF; 5E7A
+2F34 ; NFKC_SCF; 5E7F
+2F35 ; NFKC_SCF; 5EF4
+2F36 ; NFKC_SCF; 5EFE
+2F37 ; NFKC_SCF; 5F0B
+2F38 ; NFKC_SCF; 5F13
+2F39 ; NFKC_SCF; 5F50
+2F3A ; NFKC_SCF; 5F61
+2F3B ; NFKC_SCF; 5F73
+2F3C ; NFKC_SCF; 5FC3
+2F3D ; NFKC_SCF; 6208
+2F3E ; NFKC_SCF; 6236
+2F3F ; NFKC_SCF; 624B
+2F40 ; NFKC_SCF; 652F
+2F41 ; NFKC_SCF; 6534
+2F42 ; NFKC_SCF; 6587
+2F43 ; NFKC_SCF; 6597
+2F44 ; NFKC_SCF; 65A4
+2F45 ; NFKC_SCF; 65B9
+2F46 ; NFKC_SCF; 65E0
+2F47 ; NFKC_SCF; 65E5
+2F48 ; NFKC_SCF; 66F0
+2F49 ; NFKC_SCF; 6708
+2F4A ; NFKC_SCF; 6728
+2F4B ; NFKC_SCF; 6B20
+2F4C ; NFKC_SCF; 6B62
+2F4D ; NFKC_SCF; 6B79
+2F4E ; NFKC_SCF; 6BB3
+2F4F ; NFKC_SCF; 6BCB
+2F50 ; NFKC_SCF; 6BD4
+2F51 ; NFKC_SCF; 6BDB
+2F52 ; NFKC_SCF; 6C0F
+2F53 ; NFKC_SCF; 6C14
+2F54 ; NFKC_SCF; 6C34
+2F55 ; NFKC_SCF; 706B
+2F56 ; NFKC_SCF; 722A
+2F57 ; NFKC_SCF; 7236
+2F58 ; NFKC_SCF; 723B
+2F59 ; NFKC_SCF; 723F
+2F5A ; NFKC_SCF; 7247
+2F5B ; NFKC_SCF; 7259
+2F5C ; NFKC_SCF; 725B
+2F5D ; NFKC_SCF; 72AC
+2F5E ; NFKC_SCF; 7384
+2F5F ; NFKC_SCF; 7389
+2F60 ; NFKC_SCF; 74DC
+2F61 ; NFKC_SCF; 74E6
+2F62 ; NFKC_SCF; 7518
+2F63 ; NFKC_SCF; 751F
+2F64 ; NFKC_SCF; 7528
+2F65 ; NFKC_SCF; 7530
+2F66 ; NFKC_SCF; 758B
+2F67 ; NFKC_SCF; 7592
+2F68 ; NFKC_SCF; 7676
+2F69 ; NFKC_SCF; 767D
+2F6A ; NFKC_SCF; 76AE
+2F6B ; NFKC_SCF; 76BF
+2F6C ; NFKC_SCF; 76EE
+2F6D ; NFKC_SCF; 77DB
+2F6E ; NFKC_SCF; 77E2
+2F6F ; NFKC_SCF; 77F3
+2F70 ; NFKC_SCF; 793A
+2F71 ; NFKC_SCF; 79B8
+2F72 ; NFKC_SCF; 79BE
+2F73 ; NFKC_SCF; 7A74
+2F74 ; NFKC_SCF; 7ACB
+2F75 ; NFKC_SCF; 7AF9
+2F76 ; NFKC_SCF; 7C73
+2F77 ; NFKC_SCF; 7CF8
+2F78 ; NFKC_SCF; 7F36
+2F79 ; NFKC_SCF; 7F51
+2F7A ; NFKC_SCF; 7F8A
+2F7B ; NFKC_SCF; 7FBD
+2F7C ; NFKC_SCF; 8001
+2F7D ; NFKC_SCF; 800C
+2F7E ; NFKC_SCF; 8012
+2F7F ; NFKC_SCF; 8033
+2F80 ; NFKC_SCF; 807F
+2F81 ; NFKC_SCF; 8089
+2F82 ; NFKC_SCF; 81E3
+2F83 ; NFKC_SCF; 81EA
+2F84 ; NFKC_SCF; 81F3
+2F85 ; NFKC_SCF; 81FC
+2F86 ; NFKC_SCF; 820C
+2F87 ; NFKC_SCF; 821B
+2F88 ; NFKC_SCF; 821F
+2F89 ; NFKC_SCF; 826E
+2F8A ; NFKC_SCF; 8272
+2F8B ; NFKC_SCF; 8278
+2F8C ; NFKC_SCF; 864D
+2F8D ; NFKC_SCF; 866B
+2F8E ; NFKC_SCF; 8840
+2F8F ; NFKC_SCF; 884C
+2F90 ; NFKC_SCF; 8863
+2F91 ; NFKC_SCF; 897E
+2F92 ; NFKC_SCF; 898B
+2F93 ; NFKC_SCF; 89D2
+2F94 ; NFKC_SCF; 8A00
+2F95 ; NFKC_SCF; 8C37
+2F96 ; NFKC_SCF; 8C46
+2F97 ; NFKC_SCF; 8C55
+2F98 ; NFKC_SCF; 8C78
+2F99 ; NFKC_SCF; 8C9D
+2F9A ; NFKC_SCF; 8D64
+2F9B ; NFKC_SCF; 8D70
+2F9C ; NFKC_SCF; 8DB3
+2F9D ; NFKC_SCF; 8EAB
+2F9E ; NFKC_SCF; 8ECA
+2F9F ; NFKC_SCF; 8F9B
+2FA0 ; NFKC_SCF; 8FB0
+2FA1 ; NFKC_SCF; 8FB5
+2FA2 ; NFKC_SCF; 9091
+2FA3 ; NFKC_SCF; 9149
+2FA4 ; NFKC_SCF; 91C6
+2FA5 ; NFKC_SCF; 91CC
+2FA6 ; NFKC_SCF; 91D1
+2FA7 ; NFKC_SCF; 9577
+2FA8 ; NFKC_SCF; 9580
+2FA9 ; NFKC_SCF; 961C
+2FAA ; NFKC_SCF; 96B6
+2FAB ; NFKC_SCF; 96B9
+2FAC ; NFKC_SCF; 96E8
+2FAD ; NFKC_SCF; 9751
+2FAE ; NFKC_SCF; 975E
+2FAF ; NFKC_SCF; 9762
+2FB0 ; NFKC_SCF; 9769
+2FB1 ; NFKC_SCF; 97CB
+2FB2 ; NFKC_SCF; 97ED
+2FB3 ; NFKC_SCF; 97F3
+2FB4 ; NFKC_SCF; 9801
+2FB5 ; NFKC_SCF; 98A8
+2FB6 ; NFKC_SCF; 98DB
+2FB7 ; NFKC_SCF; 98DF
+2FB8 ; NFKC_SCF; 9996
+2FB9 ; NFKC_SCF; 9999
+2FBA ; NFKC_SCF; 99AC
+2FBB ; NFKC_SCF; 9AA8
+2FBC ; NFKC_SCF; 9AD8
+2FBD ; NFKC_SCF; 9ADF
+2FBE ; NFKC_SCF; 9B25
+2FBF ; NFKC_SCF; 9B2F
+2FC0 ; NFKC_SCF; 9B32
+2FC1 ; NFKC_SCF; 9B3C
+2FC2 ; NFKC_SCF; 9B5A
+2FC3 ; NFKC_SCF; 9CE5
+2FC4 ; NFKC_SCF; 9E75
+2FC5 ; NFKC_SCF; 9E7F
+2FC6 ; NFKC_SCF; 9EA5
+2FC7 ; NFKC_SCF; 9EBB
+2FC8 ; NFKC_SCF; 9EC3
+2FC9 ; NFKC_SCF; 9ECD
+2FCA ; NFKC_SCF; 9ED1
+2FCB ; NFKC_SCF; 9EF9
+2FCC ; NFKC_SCF; 9EFD
+2FCD ; NFKC_SCF; 9F0E
+2FCE ; NFKC_SCF; 9F13
+2FCF ; NFKC_SCF; 9F20
+2FD0 ; NFKC_SCF; 9F3B
+2FD1 ; NFKC_SCF; 9F4A
+2FD2 ; NFKC_SCF; 9F52
+2FD3 ; NFKC_SCF; 9F8D
+2FD4 ; NFKC_SCF; 9F9C
+2FD5 ; NFKC_SCF; 9FA0
+3000 ; NFKC_SCF; 0020
+3036 ; NFKC_SCF; 3012
+3038 ; NFKC_SCF; 5341
+3039 ; NFKC_SCF; 5344
+303A ; NFKC_SCF; 5345
+309B ; NFKC_SCF; 0020 3099
+309C ; NFKC_SCF; 0020 309A
+309F ; NFKC_SCF; 3088 308A
+30FF ; NFKC_SCF; 30B3 30C8
+3131 ; NFKC_SCF; 1100
+3132 ; NFKC_SCF; 1101
+3133 ; NFKC_SCF; 11AA
+3134 ; NFKC_SCF; 1102
+3135 ; NFKC_SCF; 11AC
+3136 ; NFKC_SCF; 11AD
+3137 ; NFKC_SCF; 1103
+3138 ; NFKC_SCF; 1104
+3139 ; NFKC_SCF; 1105
+313A ; NFKC_SCF; 11B0
+313B ; NFKC_SCF; 11B1
+313C ; NFKC_SCF; 11B2
+313D ; NFKC_SCF; 11B3
+313E ; NFKC_SCF; 11B4
+313F ; NFKC_SCF; 11B5
+3140 ; NFKC_SCF; 111A
+3141 ; NFKC_SCF; 1106
+3142 ; NFKC_SCF; 1107
+3143 ; NFKC_SCF; 1108
+3144 ; NFKC_SCF; 1121
+3145 ; NFKC_SCF; 1109
+3146 ; NFKC_SCF; 110A
+3147 ; NFKC_SCF; 110B
+3148 ; NFKC_SCF; 110C
+3149 ; NFKC_SCF; 110D
+314A ; NFKC_SCF; 110E
+314B ; NFKC_SCF; 110F
+314C ; NFKC_SCF; 1110
+314D ; NFKC_SCF; 1111
+314E ; NFKC_SCF; 1112
+314F ; NFKC_SCF; 1161
+3150 ; NFKC_SCF; 1162
+3151 ; NFKC_SCF; 1163
+3152 ; NFKC_SCF; 1164
+3153 ; NFKC_SCF; 1165
+3154 ; NFKC_SCF; 1166
+3155 ; NFKC_SCF; 1167
+3156 ; NFKC_SCF; 1168
+3157 ; NFKC_SCF; 1169
+3158 ; NFKC_SCF; 116A
+3159 ; NFKC_SCF; 116B
+315A ; NFKC_SCF; 116C
+315B ; NFKC_SCF; 116D
+315C ; NFKC_SCF; 116E
+315D ; NFKC_SCF; 116F
+315E ; NFKC_SCF; 1170
+315F ; NFKC_SCF; 1171
+3160 ; NFKC_SCF; 1172
+3161 ; NFKC_SCF; 1173
+3162 ; NFKC_SCF; 1174
+3163 ; NFKC_SCF; 1175
+3164 ; NFKC_SCF;
+3165 ; NFKC_SCF; 1114
+3166 ; NFKC_SCF; 1115
+3167 ; NFKC_SCF; 11C7
+3168 ; NFKC_SCF; 11C8
+3169 ; NFKC_SCF; 11CC
+316A ; NFKC_SCF; 11CE
+316B ; NFKC_SCF; 11D3
+316C ; NFKC_SCF; 11D7
+316D ; NFKC_SCF; 11D9
+316E ; NFKC_SCF; 111C
+316F ; NFKC_SCF; 11DD
+3170 ; NFKC_SCF; 11DF
+3171 ; NFKC_SCF; 111D
+3172 ; NFKC_SCF; 111E
+3173 ; NFKC_SCF; 1120
+3174 ; NFKC_SCF; 1122
+3175 ; NFKC_SCF; 1123
+3176 ; NFKC_SCF; 1127
+3177 ; NFKC_SCF; 1129
+3178 ; NFKC_SCF; 112B
+3179 ; NFKC_SCF; 112C
+317A ; NFKC_SCF; 112D
+317B ; NFKC_SCF; 112E
+317C ; NFKC_SCF; 112F
+317D ; NFKC_SCF; 1132
+317E ; NFKC_SCF; 1136
+317F ; NFKC_SCF; 1140
+3180 ; NFKC_SCF; 1147
+3181 ; NFKC_SCF; 114C
+3182 ; NFKC_SCF; 11F1
+3183 ; NFKC_SCF; 11F2
+3184 ; NFKC_SCF; 1157
+3185 ; NFKC_SCF; 1158
+3186 ; NFKC_SCF; 1159
+3187 ; NFKC_SCF; 1184
+3188 ; NFKC_SCF; 1185
+3189 ; NFKC_SCF; 1188
+318A ; NFKC_SCF; 1191
+318B ; NFKC_SCF; 1192
+318C ; NFKC_SCF; 1194
+318D ; NFKC_SCF; 119E
+318E ; NFKC_SCF; 11A1
+3192 ; NFKC_SCF; 4E00
+3193 ; NFKC_SCF; 4E8C
+3194 ; NFKC_SCF; 4E09
+3195 ; NFKC_SCF; 56DB
+3196 ; NFKC_SCF; 4E0A
+3197 ; NFKC_SCF; 4E2D
+3198 ; NFKC_SCF; 4E0B
+3199 ; NFKC_SCF; 7532
+319A ; NFKC_SCF; 4E59
+319B ; NFKC_SCF; 4E19
+319C ; NFKC_SCF; 4E01
+319D ; NFKC_SCF; 5929
+319E ; NFKC_SCF; 5730
+319F ; NFKC_SCF; 4EBA
+3200 ; NFKC_SCF; 0028 1100 0029
+3201 ; NFKC_SCF; 0028 1102 0029
+3202 ; NFKC_SCF; 0028 1103 0029
+3203 ; NFKC_SCF; 0028 1105 0029
+3204 ; NFKC_SCF; 0028 1106 0029
+3205 ; NFKC_SCF; 0028 1107 0029
+3206 ; NFKC_SCF; 0028 1109 0029
+3207 ; NFKC_SCF; 0028 110B 0029
+3208 ; NFKC_SCF; 0028 110C 0029
+3209 ; NFKC_SCF; 0028 110E 0029
+320A ; NFKC_SCF; 0028 110F 0029
+320B ; NFKC_SCF; 0028 1110 0029
+320C ; NFKC_SCF; 0028 1111 0029
+320D ; NFKC_SCF; 0028 1112 0029
+320E ; NFKC_SCF; 0028 AC00 0029
+320F ; NFKC_SCF; 0028 B098 0029
+3210 ; NFKC_SCF; 0028 B2E4 0029
+3211 ; NFKC_SCF; 0028 B77C 0029
+3212 ; NFKC_SCF; 0028 B9C8 0029
+3213 ; NFKC_SCF; 0028 BC14 0029
+3214 ; NFKC_SCF; 0028 C0AC 0029
+3215 ; NFKC_SCF; 0028 C544 0029
+3216 ; NFKC_SCF; 0028 C790 0029
+3217 ; NFKC_SCF; 0028 CC28 0029
+3218 ; NFKC_SCF; 0028 CE74 0029
+3219 ; NFKC_SCF; 0028 D0C0 0029
+321A ; NFKC_SCF; 0028 D30C 0029
+321B ; NFKC_SCF; 0028 D558 0029
+321C ; NFKC_SCF; 0028 C8FC 0029
+321D ; NFKC_SCF; 0028 C624 C804 0029
+321E ; NFKC_SCF; 0028 C624 D6C4 0029
+3220 ; NFKC_SCF; 0028 4E00 0029
+3221 ; NFKC_SCF; 0028 4E8C 0029
+3222 ; NFKC_SCF; 0028 4E09 0029
+3223 ; NFKC_SCF; 0028 56DB 0029
+3224 ; NFKC_SCF; 0028 4E94 0029
+3225 ; NFKC_SCF; 0028 516D 0029
+3226 ; NFKC_SCF; 0028 4E03 0029
+3227 ; NFKC_SCF; 0028 516B 0029
+3228 ; NFKC_SCF; 0028 4E5D 0029
+3229 ; NFKC_SCF; 0028 5341 0029
+322A ; NFKC_SCF; 0028 6708 0029
+322B ; NFKC_SCF; 0028 706B 0029
+322C ; NFKC_SCF; 0028 6C34 0029
+322D ; NFKC_SCF; 0028 6728 0029
+322E ; NFKC_SCF; 0028 91D1 0029
+322F ; NFKC_SCF; 0028 571F 0029
+3230 ; NFKC_SCF; 0028 65E5 0029
+3231 ; NFKC_SCF; 0028 682A 0029
+3232 ; NFKC_SCF; 0028 6709 0029
+3233 ; NFKC_SCF; 0028 793E 0029
+3234 ; NFKC_SCF; 0028 540D 0029
+3235 ; NFKC_SCF; 0028 7279 0029
+3236 ; NFKC_SCF; 0028 8CA1 0029
+3237 ; NFKC_SCF; 0028 795D 0029
+3238 ; NFKC_SCF; 0028 52B4 0029
+3239 ; NFKC_SCF; 0028 4EE3 0029
+323A ; NFKC_SCF; 0028 547C 0029
+323B ; NFKC_SCF; 0028 5B66 0029
+323C ; NFKC_SCF; 0028 76E3 0029
+323D ; NFKC_SCF; 0028 4F01 0029
+323E ; NFKC_SCF; 0028 8CC7 0029
+323F ; NFKC_SCF; 0028 5354 0029
+3240 ; NFKC_SCF; 0028 796D 0029
+3241 ; NFKC_SCF; 0028 4F11 0029
+3242 ; NFKC_SCF; 0028 81EA 0029
+3243 ; NFKC_SCF; 0028 81F3 0029
+3244 ; NFKC_SCF; 554F
+3245 ; NFKC_SCF; 5E7C
+3246 ; NFKC_SCF; 6587
+3247 ; NFKC_SCF; 7B8F
+3250 ; NFKC_SCF; 0070 0074 0065
+3251 ; NFKC_SCF; 0032 0031
+3252 ; NFKC_SCF; 0032 0032
+3253 ; NFKC_SCF; 0032 0033
+3254 ; NFKC_SCF; 0032 0034
+3255 ; NFKC_SCF; 0032 0035
+3256 ; NFKC_SCF; 0032 0036
+3257 ; NFKC_SCF; 0032 0037
+3258 ; NFKC_SCF; 0032 0038
+3259 ; NFKC_SCF; 0032 0039
+325A ; NFKC_SCF; 0033 0030
+325B ; NFKC_SCF; 0033 0031
+325C ; NFKC_SCF; 0033 0032
+325D ; NFKC_SCF; 0033 0033
+325E ; NFKC_SCF; 0033 0034
+325F ; NFKC_SCF; 0033 0035
+3260 ; NFKC_SCF; 1100
+3261 ; NFKC_SCF; 1102
+3262 ; NFKC_SCF; 1103
+3263 ; NFKC_SCF; 1105
+3264 ; NFKC_SCF; 1106
+3265 ; NFKC_SCF; 1107
+3266 ; NFKC_SCF; 1109
+3267 ; NFKC_SCF; 110B
+3268 ; NFKC_SCF; 110C
+3269 ; NFKC_SCF; 110E
+326A ; NFKC_SCF; 110F
+326B ; NFKC_SCF; 1110
+326C ; NFKC_SCF; 1111
+326D ; NFKC_SCF; 1112
+326E ; NFKC_SCF; AC00
+326F ; NFKC_SCF; B098
+3270 ; NFKC_SCF; B2E4
+3271 ; NFKC_SCF; B77C
+3272 ; NFKC_SCF; B9C8
+3273 ; NFKC_SCF; BC14
+3274 ; NFKC_SCF; C0AC
+3275 ; NFKC_SCF; C544
+3276 ; NFKC_SCF; C790
+3277 ; NFKC_SCF; CC28
+3278 ; NFKC_SCF; CE74
+3279 ; NFKC_SCF; D0C0
+327A ; NFKC_SCF; D30C
+327B ; NFKC_SCF; D558
+327C ; NFKC_SCF; CC38 ACE0
+327D ; NFKC_SCF; C8FC C758
+327E ; NFKC_SCF; C6B0
+3280 ; NFKC_SCF; 4E00
+3281 ; NFKC_SCF; 4E8C
+3282 ; NFKC_SCF; 4E09
+3283 ; NFKC_SCF; 56DB
+3284 ; NFKC_SCF; 4E94
+3285 ; NFKC_SCF; 516D
+3286 ; NFKC_SCF; 4E03
+3287 ; NFKC_SCF; 516B
+3288 ; NFKC_SCF; 4E5D
+3289 ; NFKC_SCF; 5341
+328A ; NFKC_SCF; 6708
+328B ; NFKC_SCF; 706B
+328C ; NFKC_SCF; 6C34
+328D ; NFKC_SCF; 6728
+328E ; NFKC_SCF; 91D1
+328F ; NFKC_SCF; 571F
+3290 ; NFKC_SCF; 65E5
+3291 ; NFKC_SCF; 682A
+3292 ; NFKC_SCF; 6709
+3293 ; NFKC_SCF; 793E
+3294 ; NFKC_SCF; 540D
+3295 ; NFKC_SCF; 7279
+3296 ; NFKC_SCF; 8CA1
+3297 ; NFKC_SCF; 795D
+3298 ; NFKC_SCF; 52B4
+3299 ; NFKC_SCF; 79D8
+329A ; NFKC_SCF; 7537
+329B ; NFKC_SCF; 5973
+329C ; NFKC_SCF; 9069
+329D ; NFKC_SCF; 512A
+329E ; NFKC_SCF; 5370
+329F ; NFKC_SCF; 6CE8
+32A0 ; NFKC_SCF; 9805
+32A1 ; NFKC_SCF; 4F11
+32A2 ; NFKC_SCF; 5199
+32A3 ; NFKC_SCF; 6B63
+32A4 ; NFKC_SCF; 4E0A
+32A5 ; NFKC_SCF; 4E2D
+32A6 ; NFKC_SCF; 4E0B
+32A7 ; NFKC_SCF; 5DE6
+32A8 ; NFKC_SCF; 53F3
+32A9 ; NFKC_SCF; 533B
+32AA ; NFKC_SCF; 5B97
+32AB ; NFKC_SCF; 5B66
+32AC ; NFKC_SCF; 76E3
+32AD ; NFKC_SCF; 4F01
+32AE ; NFKC_SCF; 8CC7
+32AF ; NFKC_SCF; 5354
+32B0 ; NFKC_SCF; 591C
+32B1 ; NFKC_SCF; 0033 0036
+32B2 ; NFKC_SCF; 0033 0037
+32B3 ; NFKC_SCF; 0033 0038
+32B4 ; NFKC_SCF; 0033 0039
+32B5 ; NFKC_SCF; 0034 0030
+32B6 ; NFKC_SCF; 0034 0031
+32B7 ; NFKC_SCF; 0034 0032
+32B8 ; NFKC_SCF; 0034 0033
+32B9 ; NFKC_SCF; 0034 0034
+32BA ; NFKC_SCF; 0034 0035
+32BB ; NFKC_SCF; 0034 0036
+32BC ; NFKC_SCF; 0034 0037
+32BD ; NFKC_SCF; 0034 0038
+32BE ; NFKC_SCF; 0034 0039
+32BF ; NFKC_SCF; 0035 0030
+32C0 ; NFKC_SCF; 0031 6708
+32C1 ; NFKC_SCF; 0032 6708
+32C2 ; NFKC_SCF; 0033 6708
+32C3 ; NFKC_SCF; 0034 6708
+32C4 ; NFKC_SCF; 0035 6708
+32C5 ; NFKC_SCF; 0036 6708
+32C6 ; NFKC_SCF; 0037 6708
+32C7 ; NFKC_SCF; 0038 6708
+32C8 ; NFKC_SCF; 0039 6708
+32C9 ; NFKC_SCF; 0031 0030 6708
+32CA ; NFKC_SCF; 0031 0031 6708
+32CB ; NFKC_SCF; 0031 0032 6708
+32CC ; NFKC_SCF; 0068 0067
+32CD ; NFKC_SCF; 0065 0072 0067
+32CE ; NFKC_SCF; 0065 0076
+32CF ; NFKC_SCF; 006C 0074 0064
+32D0 ; NFKC_SCF; 30A2
+32D1 ; NFKC_SCF; 30A4
+32D2 ; NFKC_SCF; 30A6
+32D3 ; NFKC_SCF; 30A8
+32D4 ; NFKC_SCF; 30AA
+32D5 ; NFKC_SCF; 30AB
+32D6 ; NFKC_SCF; 30AD
+32D7 ; NFKC_SCF; 30AF
+32D8 ; NFKC_SCF; 30B1
+32D9 ; NFKC_SCF; 30B3
+32DA ; NFKC_SCF; 30B5
+32DB ; NFKC_SCF; 30B7
+32DC ; NFKC_SCF; 30B9
+32DD ; NFKC_SCF; 30BB
+32DE ; NFKC_SCF; 30BD
+32DF ; NFKC_SCF; 30BF
+32E0 ; NFKC_SCF; 30C1
+32E1 ; NFKC_SCF; 30C4
+32E2 ; NFKC_SCF; 30C6
+32E3 ; NFKC_SCF; 30C8
+32E4 ; NFKC_SCF; 30CA
+32E5 ; NFKC_SCF; 30CB
+32E6 ; NFKC_SCF; 30CC
+32E7 ; NFKC_SCF; 30CD
+32E8 ; NFKC_SCF; 30CE
+32E9 ; NFKC_SCF; 30CF
+32EA ; NFKC_SCF; 30D2
+32EB ; NFKC_SCF; 30D5
+32EC ; NFKC_SCF; 30D8
+32ED ; NFKC_SCF; 30DB
+32EE ; NFKC_SCF; 30DE
+32EF ; NFKC_SCF; 30DF
+32F0 ; NFKC_SCF; 30E0
+32F1 ; NFKC_SCF; 30E1
+32F2 ; NFKC_SCF; 30E2
+32F3 ; NFKC_SCF; 30E4
+32F4 ; NFKC_SCF; 30E6
+32F5 ; NFKC_SCF; 30E8
+32F6 ; NFKC_SCF; 30E9
+32F7 ; NFKC_SCF; 30EA
+32F8 ; NFKC_SCF; 30EB
+32F9 ; NFKC_SCF; 30EC
+32FA ; NFKC_SCF; 30ED
+32FB ; NFKC_SCF; 30EF
+32FC ; NFKC_SCF; 30F0
+32FD ; NFKC_SCF; 30F1
+32FE ; NFKC_SCF; 30F2
+32FF ; NFKC_SCF; 4EE4 548C
+3300 ; NFKC_SCF; 30A2 30D1 30FC 30C8
+3301 ; NFKC_SCF; 30A2 30EB 30D5 30A1
+3302 ; NFKC_SCF; 30A2 30F3 30DA 30A2
+3303 ; NFKC_SCF; 30A2 30FC 30EB
+3304 ; NFKC_SCF; 30A4 30CB 30F3 30B0
+3305 ; NFKC_SCF; 30A4 30F3 30C1
+3306 ; NFKC_SCF; 30A6 30A9 30F3
+3307 ; NFKC_SCF; 30A8 30B9 30AF 30FC 30C9
+3308 ; NFKC_SCF; 30A8 30FC 30AB 30FC
+3309 ; NFKC_SCF; 30AA 30F3 30B9
+330A ; NFKC_SCF; 30AA 30FC 30E0
+330B ; NFKC_SCF; 30AB 30A4 30EA
+330C ; NFKC_SCF; 30AB 30E9 30C3 30C8
+330D ; NFKC_SCF; 30AB 30ED 30EA 30FC
+330E ; NFKC_SCF; 30AC 30ED 30F3
+330F ; NFKC_SCF; 30AC 30F3 30DE
+3310 ; NFKC_SCF; 30AE 30AC
+3311 ; NFKC_SCF; 30AE 30CB 30FC
+3312 ; NFKC_SCF; 30AD 30E5 30EA 30FC
+3313 ; NFKC_SCF; 30AE 30EB 30C0 30FC
+3314 ; NFKC_SCF; 30AD 30ED
+3315 ; NFKC_SCF; 30AD 30ED 30B0 30E9 30E0
+3316 ; NFKC_SCF; 30AD 30ED 30E1 30FC 30C8 30EB
+3317 ; NFKC_SCF; 30AD 30ED 30EF 30C3 30C8
+3318 ; NFKC_SCF; 30B0 30E9 30E0
+3319 ; NFKC_SCF; 30B0 30E9 30E0 30C8 30F3
+331A ; NFKC_SCF; 30AF 30EB 30BC 30A4 30ED
+331B ; NFKC_SCF; 30AF 30ED 30FC 30CD
+331C ; NFKC_SCF; 30B1 30FC 30B9
+331D ; NFKC_SCF; 30B3 30EB 30CA
+331E ; NFKC_SCF; 30B3 30FC 30DD
+331F ; NFKC_SCF; 30B5 30A4 30AF 30EB
+3320 ; NFKC_SCF; 30B5 30F3 30C1 30FC 30E0
+3321 ; NFKC_SCF; 30B7 30EA 30F3 30B0
+3322 ; NFKC_SCF; 30BB 30F3 30C1
+3323 ; NFKC_SCF; 30BB 30F3 30C8
+3324 ; NFKC_SCF; 30C0 30FC 30B9
+3325 ; NFKC_SCF; 30C7 30B7
+3326 ; NFKC_SCF; 30C9 30EB
+3327 ; NFKC_SCF; 30C8 30F3
+3328 ; NFKC_SCF; 30CA 30CE
+3329 ; NFKC_SCF; 30CE 30C3 30C8
+332A ; NFKC_SCF; 30CF 30A4 30C4
+332B ; NFKC_SCF; 30D1 30FC 30BB 30F3 30C8
+332C ; NFKC_SCF; 30D1 30FC 30C4
+332D ; NFKC_SCF; 30D0 30FC 30EC 30EB
+332E ; NFKC_SCF; 30D4 30A2 30B9 30C8 30EB
+332F ; NFKC_SCF; 30D4 30AF 30EB
+3330 ; NFKC_SCF; 30D4 30B3
+3331 ; NFKC_SCF; 30D3 30EB
+3332 ; NFKC_SCF; 30D5 30A1 30E9 30C3 30C9
+3333 ; NFKC_SCF; 30D5 30A3 30FC 30C8
+3334 ; NFKC_SCF; 30D6 30C3 30B7 30A7 30EB
+3335 ; NFKC_SCF; 30D5 30E9 30F3
+3336 ; NFKC_SCF; 30D8 30AF 30BF 30FC 30EB
+3337 ; NFKC_SCF; 30DA 30BD
+3338 ; NFKC_SCF; 30DA 30CB 30D2
+3339 ; NFKC_SCF; 30D8 30EB 30C4
+333A ; NFKC_SCF; 30DA 30F3 30B9
+333B ; NFKC_SCF; 30DA 30FC 30B8
+333C ; NFKC_SCF; 30D9 30FC 30BF
+333D ; NFKC_SCF; 30DD 30A4 30F3 30C8
+333E ; NFKC_SCF; 30DC 30EB 30C8
+333F ; NFKC_SCF; 30DB 30F3
+3340 ; NFKC_SCF; 30DD 30F3 30C9
+3341 ; NFKC_SCF; 30DB 30FC 30EB
+3342 ; NFKC_SCF; 30DB 30FC 30F3
+3343 ; NFKC_SCF; 30DE 30A4 30AF 30ED
+3344 ; NFKC_SCF; 30DE 30A4 30EB
+3345 ; NFKC_SCF; 30DE 30C3 30CF
+3346 ; NFKC_SCF; 30DE 30EB 30AF
+3347 ; NFKC_SCF; 30DE 30F3 30B7 30E7 30F3
+3348 ; NFKC_SCF; 30DF 30AF 30ED 30F3
+3349 ; NFKC_SCF; 30DF 30EA
+334A ; NFKC_SCF; 30DF 30EA 30D0 30FC 30EB
+334B ; NFKC_SCF; 30E1 30AC
+334C ; NFKC_SCF; 30E1 30AC 30C8 30F3
+334D ; NFKC_SCF; 30E1 30FC 30C8 30EB
+334E ; NFKC_SCF; 30E4 30FC 30C9
+334F ; NFKC_SCF; 30E4 30FC 30EB
+3350 ; NFKC_SCF; 30E6 30A2 30F3
+3351 ; NFKC_SCF; 30EA 30C3 30C8 30EB
+3352 ; NFKC_SCF; 30EA 30E9
+3353 ; NFKC_SCF; 30EB 30D4 30FC
+3354 ; NFKC_SCF; 30EB 30FC 30D6 30EB
+3355 ; NFKC_SCF; 30EC 30E0
+3356 ; NFKC_SCF; 30EC 30F3 30C8 30B2 30F3
+3357 ; NFKC_SCF; 30EF 30C3 30C8
+3358 ; NFKC_SCF; 0030 70B9
+3359 ; NFKC_SCF; 0031 70B9
+335A ; NFKC_SCF; 0032 70B9
+335B ; NFKC_SCF; 0033 70B9
+335C ; NFKC_SCF; 0034 70B9
+335D ; NFKC_SCF; 0035 70B9
+335E ; NFKC_SCF; 0036 70B9
+335F ; NFKC_SCF; 0037 70B9
+3360 ; NFKC_SCF; 0038 70B9
+3361 ; NFKC_SCF; 0039 70B9
+3362 ; NFKC_SCF; 0031 0030 70B9
+3363 ; NFKC_SCF; 0031 0031 70B9
+3364 ; NFKC_SCF; 0031 0032 70B9
+3365 ; NFKC_SCF; 0031 0033 70B9
+3366 ; NFKC_SCF; 0031 0034 70B9
+3367 ; NFKC_SCF; 0031 0035 70B9
+3368 ; NFKC_SCF; 0031 0036 70B9
+3369 ; NFKC_SCF; 0031 0037 70B9
+336A ; NFKC_SCF; 0031 0038 70B9
+336B ; NFKC_SCF; 0031 0039 70B9
+336C ; NFKC_SCF; 0032 0030 70B9
+336D ; NFKC_SCF; 0032 0031 70B9
+336E ; NFKC_SCF; 0032 0032 70B9
+336F ; NFKC_SCF; 0032 0033 70B9
+3370 ; NFKC_SCF; 0032 0034 70B9
+3371 ; NFKC_SCF; 0068 0070 0061
+3372 ; NFKC_SCF; 0064 0061
+3373 ; NFKC_SCF; 0061 0075
+3374 ; NFKC_SCF; 0062 0061 0072
+3375 ; NFKC_SCF; 006F 0076
+3376 ; NFKC_SCF; 0070 0063
+3377 ; NFKC_SCF; 0064 006D
+3378 ; NFKC_SCF; 0064 006D 0032
+3379 ; NFKC_SCF; 0064 006D 0033
+337A ; NFKC_SCF; 0069 0075
+337B ; NFKC_SCF; 5E73 6210
+337C ; NFKC_SCF; 662D 548C
+337D ; NFKC_SCF; 5927 6B63
+337E ; NFKC_SCF; 660E 6CBB
+337F ; NFKC_SCF; 682A 5F0F 4F1A 793E
+3380 ; NFKC_SCF; 0070 0061
+3381 ; NFKC_SCF; 006E 0061
+3382 ; NFKC_SCF; 03BC 0061
+3383 ; NFKC_SCF; 006D 0061
+3384 ; NFKC_SCF; 006B 0061
+3385 ; NFKC_SCF; 006B 0062
+3386 ; NFKC_SCF; 006D 0062
+3387 ; NFKC_SCF; 0067 0062
+3388 ; NFKC_SCF; 0063 0061 006C
+3389 ; NFKC_SCF; 006B 0063 0061 006C
+338A ; NFKC_SCF; 0070 0066
+338B ; NFKC_SCF; 006E 0066
+338C ; NFKC_SCF; 03BC 0066
+338D ; NFKC_SCF; 03BC 0067
+338E ; NFKC_SCF; 006D 0067
+338F ; NFKC_SCF; 006B 0067
+3390 ; NFKC_SCF; 0068 007A
+3391 ; NFKC_SCF; 006B 0068 007A
+3392 ; NFKC_SCF; 006D 0068 007A
+3393 ; NFKC_SCF; 0067 0068 007A
+3394 ; NFKC_SCF; 0074 0068 007A
+3395 ; NFKC_SCF; 03BC 006C
+3396 ; NFKC_SCF; 006D 006C
+3397 ; NFKC_SCF; 0064 006C
+3398 ; NFKC_SCF; 006B 006C
+3399 ; NFKC_SCF; 0066 006D
+339A ; NFKC_SCF; 006E 006D
+339B ; NFKC_SCF; 03BC 006D
+339C ; NFKC_SCF; 006D 006D
+339D ; NFKC_SCF; 0063 006D
+339E ; NFKC_SCF; 006B 006D
+339F ; NFKC_SCF; 006D 006D 0032
+33A0 ; NFKC_SCF; 0063 006D 0032
+33A1 ; NFKC_SCF; 006D 0032
+33A2 ; NFKC_SCF; 006B 006D 0032
+33A3 ; NFKC_SCF; 006D 006D 0033
+33A4 ; NFKC_SCF; 0063 006D 0033
+33A5 ; NFKC_SCF; 006D 0033
+33A6 ; NFKC_SCF; 006B 006D 0033
+33A7 ; NFKC_SCF; 006D 2215 0073
+33A8 ; NFKC_SCF; 006D 2215 0073 0032
+33A9 ; NFKC_SCF; 0070 0061
+33AA ; NFKC_SCF; 006B 0070 0061
+33AB ; NFKC_SCF; 006D 0070 0061
+33AC ; NFKC_SCF; 0067 0070 0061
+33AD ; NFKC_SCF; 0072 0061 0064
+33AE ; NFKC_SCF; 0072 0061 0064 2215 0073
+33AF ; NFKC_SCF; 0072 0061 0064 2215 0073 0032
+33B0 ; NFKC_SCF; 0070 0073
+33B1 ; NFKC_SCF; 006E 0073
+33B2 ; NFKC_SCF; 03BC 0073
+33B3 ; NFKC_SCF; 006D 0073
+33B4 ; NFKC_SCF; 0070 0076
+33B5 ; NFKC_SCF; 006E 0076
+33B6 ; NFKC_SCF; 03BC 0076
+33B7 ; NFKC_SCF; 006D 0076
+33B8 ; NFKC_SCF; 006B 0076
+33B9 ; NFKC_SCF; 006D 0076
+33BA ; NFKC_SCF; 0070 0077
+33BB ; NFKC_SCF; 006E 0077
+33BC ; NFKC_SCF; 03BC 0077
+33BD ; NFKC_SCF; 006D 0077
+33BE ; NFKC_SCF; 006B 0077
+33BF ; NFKC_SCF; 006D 0077
+33C0 ; NFKC_SCF; 006B 03C9
+33C1 ; NFKC_SCF; 006D 03C9
+33C2 ; NFKC_SCF; 0061 002E 006D 002E
+33C3 ; NFKC_SCF; 0062 0071
+33C4 ; NFKC_SCF; 0063 0063
+33C5 ; NFKC_SCF; 0063 0064
+33C6 ; NFKC_SCF; 0063 2215 006B 0067
+33C7 ; NFKC_SCF; 0063 006F 002E
+33C8 ; NFKC_SCF; 0064 0062
+33C9 ; NFKC_SCF; 0067 0079
+33CA ; NFKC_SCF; 0068 0061
+33CB ; NFKC_SCF; 0068 0070
+33CC ; NFKC_SCF; 0069 006E
+33CD ; NFKC_SCF; 006B 006B
+33CE ; NFKC_SCF; 006B 006D
+33CF ; NFKC_SCF; 006B 0074
+33D0 ; NFKC_SCF; 006C 006D
+33D1 ; NFKC_SCF; 006C 006E
+33D2 ; NFKC_SCF; 006C 006F 0067
+33D3 ; NFKC_SCF; 006C 0078
+33D4 ; NFKC_SCF; 006D 0062
+33D5 ; NFKC_SCF; 006D 0069 006C
+33D6 ; NFKC_SCF; 006D 006F 006C
+33D7 ; NFKC_SCF; 0070 0068
+33D8 ; NFKC_SCF; 0070 002E 006D 002E
+33D9 ; NFKC_SCF; 0070 0070 006D
+33DA ; NFKC_SCF; 0070 0072
+33DB ; NFKC_SCF; 0073 0072
+33DC ; NFKC_SCF; 0073 0076
+33DD ; NFKC_SCF; 0077 0062
+33DE ; NFKC_SCF; 0076 2215 006D
+33DF ; NFKC_SCF; 0061 2215 006D
+33E0 ; NFKC_SCF; 0031 65E5
+33E1 ; NFKC_SCF; 0032 65E5
+33E2 ; NFKC_SCF; 0033 65E5
+33E3 ; NFKC_SCF; 0034 65E5
+33E4 ; NFKC_SCF; 0035 65E5
+33E5 ; NFKC_SCF; 0036 65E5
+33E6 ; NFKC_SCF; 0037 65E5
+33E7 ; NFKC_SCF; 0038 65E5
+33E8 ; NFKC_SCF; 0039 65E5
+33E9 ; NFKC_SCF; 0031 0030 65E5
+33EA ; NFKC_SCF; 0031 0031 65E5
+33EB ; NFKC_SCF; 0031 0032 65E5
+33EC ; NFKC_SCF; 0031 0033 65E5
+33ED ; NFKC_SCF; 0031 0034 65E5
+33EE ; NFKC_SCF; 0031 0035 65E5
+33EF ; NFKC_SCF; 0031 0036 65E5
+33F0 ; NFKC_SCF; 0031 0037 65E5
+33F1 ; NFKC_SCF; 0031 0038 65E5
+33F2 ; NFKC_SCF; 0031 0039 65E5
+33F3 ; NFKC_SCF; 0032 0030 65E5
+33F4 ; NFKC_SCF; 0032 0031 65E5
+33F5 ; NFKC_SCF; 0032 0032 65E5
+33F6 ; NFKC_SCF; 0032 0033 65E5
+33F7 ; NFKC_SCF; 0032 0034 65E5
+33F8 ; NFKC_SCF; 0032 0035 65E5
+33F9 ; NFKC_SCF; 0032 0036 65E5
+33FA ; NFKC_SCF; 0032 0037 65E5
+33FB ; NFKC_SCF; 0032 0038 65E5
+33FC ; NFKC_SCF; 0032 0039 65E5
+33FD ; NFKC_SCF; 0033 0030 65E5
+33FE ; NFKC_SCF; 0033 0031 65E5
+33FF ; NFKC_SCF; 0067 0061 006C
+A640 ; NFKC_SCF; A641
+A642 ; NFKC_SCF; A643
+A644 ; NFKC_SCF; A645
+A646 ; NFKC_SCF; A647
+A648 ; NFKC_SCF; A649
+A64A ; NFKC_SCF; A64B
+A64C ; NFKC_SCF; A64D
+A64E ; NFKC_SCF; A64F
+A650 ; NFKC_SCF; A651
+A652 ; NFKC_SCF; A653
+A654 ; NFKC_SCF; A655
+A656 ; NFKC_SCF; A657
+A658 ; NFKC_SCF; A659
+A65A ; NFKC_SCF; A65B
+A65C ; NFKC_SCF; A65D
+A65E ; NFKC_SCF; A65F
+A660 ; NFKC_SCF; A661
+A662 ; NFKC_SCF; A663
+A664 ; NFKC_SCF; A665
+A666 ; NFKC_SCF; A667
+A668 ; NFKC_SCF; A669
+A66A ; NFKC_SCF; A66B
+A66C ; NFKC_SCF; A66D
+A680 ; NFKC_SCF; A681
+A682 ; NFKC_SCF; A683
+A684 ; NFKC_SCF; A685
+A686 ; NFKC_SCF; A687
+A688 ; NFKC_SCF; A689
+A68A ; NFKC_SCF; A68B
+A68C ; NFKC_SCF; A68D
+A68E ; NFKC_SCF; A68F
+A690 ; NFKC_SCF; A691
+A692 ; NFKC_SCF; A693
+A694 ; NFKC_SCF; A695
+A696 ; NFKC_SCF; A697
+A698 ; NFKC_SCF; A699
+A69A ; NFKC_SCF; A69B
+A69C ; NFKC_SCF; 044A
+A69D ; NFKC_SCF; 044C
+A722 ; NFKC_SCF; A723
+A724 ; NFKC_SCF; A725
+A726 ; NFKC_SCF; A727
+A728 ; NFKC_SCF; A729
+A72A ; NFKC_SCF; A72B
+A72C ; NFKC_SCF; A72D
+A72E ; NFKC_SCF; A72F
+A732 ; NFKC_SCF; A733
+A734 ; NFKC_SCF; A735
+A736 ; NFKC_SCF; A737
+A738 ; NFKC_SCF; A739
+A73A ; NFKC_SCF; A73B
+A73C ; NFKC_SCF; A73D
+A73E ; NFKC_SCF; A73F
+A740 ; NFKC_SCF; A741
+A742 ; NFKC_SCF; A743
+A744 ; NFKC_SCF; A745
+A746 ; NFKC_SCF; A747
+A748 ; NFKC_SCF; A749
+A74A ; NFKC_SCF; A74B
+A74C ; NFKC_SCF; A74D
+A74E ; NFKC_SCF; A74F
+A750 ; NFKC_SCF; A751
+A752 ; NFKC_SCF; A753
+A754 ; NFKC_SCF; A755
+A756 ; NFKC_SCF; A757
+A758 ; NFKC_SCF; A759
+A75A ; NFKC_SCF; A75B
+A75C ; NFKC_SCF; A75D
+A75E ; NFKC_SCF; A75F
+A760 ; NFKC_SCF; A761
+A762 ; NFKC_SCF; A763
+A764 ; NFKC_SCF; A765
+A766 ; NFKC_SCF; A767
+A768 ; NFKC_SCF; A769
+A76A ; NFKC_SCF; A76B
+A76C ; NFKC_SCF; A76D
+A76E ; NFKC_SCF; A76F
+A770 ; NFKC_SCF; A76F
+A779 ; NFKC_SCF; A77A
+A77B ; NFKC_SCF; A77C
+A77D ; NFKC_SCF; 1D79
+A77E ; NFKC_SCF; A77F
+A780 ; NFKC_SCF; A781
+A782 ; NFKC_SCF; A783
+A784 ; NFKC_SCF; A785
+A786 ; NFKC_SCF; A787
+A78B ; NFKC_SCF; A78C
+A78D ; NFKC_SCF; 0265
+A790 ; NFKC_SCF; A791
+A792 ; NFKC_SCF; A793
+A796 ; NFKC_SCF; A797
+A798 ; NFKC_SCF; A799
+A79A ; NFKC_SCF; A79B
+A79C ; NFKC_SCF; A79D
+A79E ; NFKC_SCF; A79F
+A7A0 ; NFKC_SCF; A7A1
+A7A2 ; NFKC_SCF; A7A3
+A7A4 ; NFKC_SCF; A7A5
+A7A6 ; NFKC_SCF; A7A7
+A7A8 ; NFKC_SCF; A7A9
+A7AA ; NFKC_SCF; 0266
+A7AB ; NFKC_SCF; 025C
+A7AC ; NFKC_SCF; 0261
+A7AD ; NFKC_SCF; 026C
+A7AE ; NFKC_SCF; 026A
+A7B0 ; NFKC_SCF; 029E
+A7B1 ; NFKC_SCF; 0287
+A7B2 ; NFKC_SCF; 029D
+A7B3 ; NFKC_SCF; AB53
+A7B4 ; NFKC_SCF; A7B5
+A7B6 ; NFKC_SCF; A7B7
+A7B8 ; NFKC_SCF; A7B9
+A7BA ; NFKC_SCF; A7BB
+A7BC ; NFKC_SCF; A7BD
+A7BE ; NFKC_SCF; A7BF
+A7C0 ; NFKC_SCF; A7C1
+A7C2 ; NFKC_SCF; A7C3
+A7C4 ; NFKC_SCF; A794
+A7C5 ; NFKC_SCF; 0282
+A7C6 ; NFKC_SCF; 1D8E
+A7C7 ; NFKC_SCF; A7C8
+A7C9 ; NFKC_SCF; A7CA
+A7D0 ; NFKC_SCF; A7D1
+A7D6 ; NFKC_SCF; A7D7
+A7D8 ; NFKC_SCF; A7D9
+A7F2 ; NFKC_SCF; 0063
+A7F3 ; NFKC_SCF; 0066
+A7F4 ; NFKC_SCF; 0071
+A7F5 ; NFKC_SCF; A7F6
+A7F8 ; NFKC_SCF; 0127
+A7F9 ; NFKC_SCF; 0153
+AB5C ; NFKC_SCF; A727
+AB5D ; NFKC_SCF; AB37
+AB5E ; NFKC_SCF; 026B
+AB5F ; NFKC_SCF; AB52
+AB69 ; NFKC_SCF; 028D
+AB70 ; NFKC_SCF; 13A0
+AB71 ; NFKC_SCF; 13A1
+AB72 ; NFKC_SCF; 13A2
+AB73 ; NFKC_SCF; 13A3
+AB74 ; NFKC_SCF; 13A4
+AB75 ; NFKC_SCF; 13A5
+AB76 ; NFKC_SCF; 13A6
+AB77 ; NFKC_SCF; 13A7
+AB78 ; NFKC_SCF; 13A8
+AB79 ; NFKC_SCF; 13A9
+AB7A ; NFKC_SCF; 13AA
+AB7B ; NFKC_SCF; 13AB
+AB7C ; NFKC_SCF; 13AC
+AB7D ; NFKC_SCF; 13AD
+AB7E ; NFKC_SCF; 13AE
+AB7F ; NFKC_SCF; 13AF
+AB80 ; NFKC_SCF; 13B0
+AB81 ; NFKC_SCF; 13B1
+AB82 ; NFKC_SCF; 13B2
+AB83 ; NFKC_SCF; 13B3
+AB84 ; NFKC_SCF; 13B4
+AB85 ; NFKC_SCF; 13B5
+AB86 ; NFKC_SCF; 13B6
+AB87 ; NFKC_SCF; 13B7
+AB88 ; NFKC_SCF; 13B8
+AB89 ; NFKC_SCF; 13B9
+AB8A ; NFKC_SCF; 13BA
+AB8B ; NFKC_SCF; 13BB
+AB8C ; NFKC_SCF; 13BC
+AB8D ; NFKC_SCF; 13BD
+AB8E ; NFKC_SCF; 13BE
+AB8F ; NFKC_SCF; 13BF
+AB90 ; NFKC_SCF; 13C0
+AB91 ; NFKC_SCF; 13C1
+AB92 ; NFKC_SCF; 13C2
+AB93 ; NFKC_SCF; 13C3
+AB94 ; NFKC_SCF; 13C4
+AB95 ; NFKC_SCF; 13C5
+AB96 ; NFKC_SCF; 13C6
+AB97 ; NFKC_SCF; 13C7
+AB98 ; NFKC_SCF; 13C8
+AB99 ; NFKC_SCF; 13C9
+AB9A ; NFKC_SCF; 13CA
+AB9B ; NFKC_SCF; 13CB
+AB9C ; NFKC_SCF; 13CC
+AB9D ; NFKC_SCF; 13CD
+AB9E ; NFKC_SCF; 13CE
+AB9F ; NFKC_SCF; 13CF
+ABA0 ; NFKC_SCF; 13D0
+ABA1 ; NFKC_SCF; 13D1
+ABA2 ; NFKC_SCF; 13D2
+ABA3 ; NFKC_SCF; 13D3
+ABA4 ; NFKC_SCF; 13D4
+ABA5 ; NFKC_SCF; 13D5
+ABA6 ; NFKC_SCF; 13D6
+ABA7 ; NFKC_SCF; 13D7
+ABA8 ; NFKC_SCF; 13D8
+ABA9 ; NFKC_SCF; 13D9
+ABAA ; NFKC_SCF; 13DA
+ABAB ; NFKC_SCF; 13DB
+ABAC ; NFKC_SCF; 13DC
+ABAD ; NFKC_SCF; 13DD
+ABAE ; NFKC_SCF; 13DE
+ABAF ; NFKC_SCF; 13DF
+ABB0 ; NFKC_SCF; 13E0
+ABB1 ; NFKC_SCF; 13E1
+ABB2 ; NFKC_SCF; 13E2
+ABB3 ; NFKC_SCF; 13E3
+ABB4 ; NFKC_SCF; 13E4
+ABB5 ; NFKC_SCF; 13E5
+ABB6 ; NFKC_SCF; 13E6
+ABB7 ; NFKC_SCF; 13E7
+ABB8 ; NFKC_SCF; 13E8
+ABB9 ; NFKC_SCF; 13E9
+ABBA ; NFKC_SCF; 13EA
+ABBB ; NFKC_SCF; 13EB
+ABBC ; NFKC_SCF; 13EC
+ABBD ; NFKC_SCF; 13ED
+ABBE ; NFKC_SCF; 13EE
+ABBF ; NFKC_SCF; 13EF
+F900 ; NFKC_SCF; 8C48
+F901 ; NFKC_SCF; 66F4
+F902 ; NFKC_SCF; 8ECA
+F903 ; NFKC_SCF; 8CC8
+F904 ; NFKC_SCF; 6ED1
+F905 ; NFKC_SCF; 4E32
+F906 ; NFKC_SCF; 53E5
+F907..F908 ; NFKC_SCF; 9F9C
+F909 ; NFKC_SCF; 5951
+F90A ; NFKC_SCF; 91D1
+F90B ; NFKC_SCF; 5587
+F90C ; NFKC_SCF; 5948
+F90D ; NFKC_SCF; 61F6
+F90E ; NFKC_SCF; 7669
+F90F ; NFKC_SCF; 7F85
+F910 ; NFKC_SCF; 863F
+F911 ; NFKC_SCF; 87BA
+F912 ; NFKC_SCF; 88F8
+F913 ; NFKC_SCF; 908F
+F914 ; NFKC_SCF; 6A02
+F915 ; NFKC_SCF; 6D1B
+F916 ; NFKC_SCF; 70D9
+F917 ; NFKC_SCF; 73DE
+F918 ; NFKC_SCF; 843D
+F919 ; NFKC_SCF; 916A
+F91A ; NFKC_SCF; 99F1
+F91B ; NFKC_SCF; 4E82
+F91C ; NFKC_SCF; 5375
+F91D ; NFKC_SCF; 6B04
+F91E ; NFKC_SCF; 721B
+F91F ; NFKC_SCF; 862D
+F920 ; NFKC_SCF; 9E1E
+F921 ; NFKC_SCF; 5D50
+F922 ; NFKC_SCF; 6FEB
+F923 ; NFKC_SCF; 85CD
+F924 ; NFKC_SCF; 8964
+F925 ; NFKC_SCF; 62C9
+F926 ; NFKC_SCF; 81D8
+F927 ; NFKC_SCF; 881F
+F928 ; NFKC_SCF; 5ECA
+F929 ; NFKC_SCF; 6717
+F92A ; NFKC_SCF; 6D6A
+F92B ; NFKC_SCF; 72FC
+F92C ; NFKC_SCF; 90CE
+F92D ; NFKC_SCF; 4F86
+F92E ; NFKC_SCF; 51B7
+F92F ; NFKC_SCF; 52DE
+F930 ; NFKC_SCF; 64C4
+F931 ; NFKC_SCF; 6AD3
+F932 ; NFKC_SCF; 7210
+F933 ; NFKC_SCF; 76E7
+F934 ; NFKC_SCF; 8001
+F935 ; NFKC_SCF; 8606
+F936 ; NFKC_SCF; 865C
+F937 ; NFKC_SCF; 8DEF
+F938 ; NFKC_SCF; 9732
+F939 ; NFKC_SCF; 9B6F
+F93A ; NFKC_SCF; 9DFA
+F93B ; NFKC_SCF; 788C
+F93C ; NFKC_SCF; 797F
+F93D ; NFKC_SCF; 7DA0
+F93E ; NFKC_SCF; 83C9
+F93F ; NFKC_SCF; 9304
+F940 ; NFKC_SCF; 9E7F
+F941 ; NFKC_SCF; 8AD6
+F942 ; NFKC_SCF; 58DF
+F943 ; NFKC_SCF; 5F04
+F944 ; NFKC_SCF; 7C60
+F945 ; NFKC_SCF; 807E
+F946 ; NFKC_SCF; 7262
+F947 ; NFKC_SCF; 78CA
+F948 ; NFKC_SCF; 8CC2
+F949 ; NFKC_SCF; 96F7
+F94A ; NFKC_SCF; 58D8
+F94B ; NFKC_SCF; 5C62
+F94C ; NFKC_SCF; 6A13
+F94D ; NFKC_SCF; 6DDA
+F94E ; NFKC_SCF; 6F0F
+F94F ; NFKC_SCF; 7D2F
+F950 ; NFKC_SCF; 7E37
+F951 ; NFKC_SCF; 964B
+F952 ; NFKC_SCF; 52D2
+F953 ; NFKC_SCF; 808B
+F954 ; NFKC_SCF; 51DC
+F955 ; NFKC_SCF; 51CC
+F956 ; NFKC_SCF; 7A1C
+F957 ; NFKC_SCF; 7DBE
+F958 ; NFKC_SCF; 83F1
+F959 ; NFKC_SCF; 9675
+F95A ; NFKC_SCF; 8B80
+F95B ; NFKC_SCF; 62CF
+F95C ; NFKC_SCF; 6A02
+F95D ; NFKC_SCF; 8AFE
+F95E ; NFKC_SCF; 4E39
+F95F ; NFKC_SCF; 5BE7
+F960 ; NFKC_SCF; 6012
+F961 ; NFKC_SCF; 7387
+F962 ; NFKC_SCF; 7570
+F963 ; NFKC_SCF; 5317
+F964 ; NFKC_SCF; 78FB
+F965 ; NFKC_SCF; 4FBF
+F966 ; NFKC_SCF; 5FA9
+F967 ; NFKC_SCF; 4E0D
+F968 ; NFKC_SCF; 6CCC
+F969 ; NFKC_SCF; 6578
+F96A ; NFKC_SCF; 7D22
+F96B ; NFKC_SCF; 53C3
+F96C ; NFKC_SCF; 585E
+F96D ; NFKC_SCF; 7701
+F96E ; NFKC_SCF; 8449
+F96F ; NFKC_SCF; 8AAA
+F970 ; NFKC_SCF; 6BBA
+F971 ; NFKC_SCF; 8FB0
+F972 ; NFKC_SCF; 6C88
+F973 ; NFKC_SCF; 62FE
+F974 ; NFKC_SCF; 82E5
+F975 ; NFKC_SCF; 63A0
+F976 ; NFKC_SCF; 7565
+F977 ; NFKC_SCF; 4EAE
+F978 ; NFKC_SCF; 5169
+F979 ; NFKC_SCF; 51C9
+F97A ; NFKC_SCF; 6881
+F97B ; NFKC_SCF; 7CE7
+F97C ; NFKC_SCF; 826F
+F97D ; NFKC_SCF; 8AD2
+F97E ; NFKC_SCF; 91CF
+F97F ; NFKC_SCF; 52F5
+F980 ; NFKC_SCF; 5442
+F981 ; NFKC_SCF; 5973
+F982 ; NFKC_SCF; 5EEC
+F983 ; NFKC_SCF; 65C5
+F984 ; NFKC_SCF; 6FFE
+F985 ; NFKC_SCF; 792A
+F986 ; NFKC_SCF; 95AD
+F987 ; NFKC_SCF; 9A6A
+F988 ; NFKC_SCF; 9E97
+F989 ; NFKC_SCF; 9ECE
+F98A ; NFKC_SCF; 529B
+F98B ; NFKC_SCF; 66C6
+F98C ; NFKC_SCF; 6B77
+F98D ; NFKC_SCF; 8F62
+F98E ; NFKC_SCF; 5E74
+F98F ; NFKC_SCF; 6190
+F990 ; NFKC_SCF; 6200
+F991 ; NFKC_SCF; 649A
+F992 ; NFKC_SCF; 6F23
+F993 ; NFKC_SCF; 7149
+F994 ; NFKC_SCF; 7489
+F995 ; NFKC_SCF; 79CA
+F996 ; NFKC_SCF; 7DF4
+F997 ; NFKC_SCF; 806F
+F998 ; NFKC_SCF; 8F26
+F999 ; NFKC_SCF; 84EE
+F99A ; NFKC_SCF; 9023
+F99B ; NFKC_SCF; 934A
+F99C ; NFKC_SCF; 5217
+F99D ; NFKC_SCF; 52A3
+F99E ; NFKC_SCF; 54BD
+F99F ; NFKC_SCF; 70C8
+F9A0 ; NFKC_SCF; 88C2
+F9A1 ; NFKC_SCF; 8AAA
+F9A2 ; NFKC_SCF; 5EC9
+F9A3 ; NFKC_SCF; 5FF5
+F9A4 ; NFKC_SCF; 637B
+F9A5 ; NFKC_SCF; 6BAE
+F9A6 ; NFKC_SCF; 7C3E
+F9A7 ; NFKC_SCF; 7375
+F9A8 ; NFKC_SCF; 4EE4
+F9A9 ; NFKC_SCF; 56F9
+F9AA ; NFKC_SCF; 5BE7
+F9AB ; NFKC_SCF; 5DBA
+F9AC ; NFKC_SCF; 601C
+F9AD ; NFKC_SCF; 73B2
+F9AE ; NFKC_SCF; 7469
+F9AF ; NFKC_SCF; 7F9A
+F9B0 ; NFKC_SCF; 8046
+F9B1 ; NFKC_SCF; 9234
+F9B2 ; NFKC_SCF; 96F6
+F9B3 ; NFKC_SCF; 9748
+F9B4 ; NFKC_SCF; 9818
+F9B5 ; NFKC_SCF; 4F8B
+F9B6 ; NFKC_SCF; 79AE
+F9B7 ; NFKC_SCF; 91B4
+F9B8 ; NFKC_SCF; 96B8
+F9B9 ; NFKC_SCF; 60E1
+F9BA ; NFKC_SCF; 4E86
+F9BB ; NFKC_SCF; 50DA
+F9BC ; NFKC_SCF; 5BEE
+F9BD ; NFKC_SCF; 5C3F
+F9BE ; NFKC_SCF; 6599
+F9BF ; NFKC_SCF; 6A02
+F9C0 ; NFKC_SCF; 71CE
+F9C1 ; NFKC_SCF; 7642
+F9C2 ; NFKC_SCF; 84FC
+F9C3 ; NFKC_SCF; 907C
+F9C4 ; NFKC_SCF; 9F8D
+F9C5 ; NFKC_SCF; 6688
+F9C6 ; NFKC_SCF; 962E
+F9C7 ; NFKC_SCF; 5289
+F9C8 ; NFKC_SCF; 677B
+F9C9 ; NFKC_SCF; 67F3
+F9CA ; NFKC_SCF; 6D41
+F9CB ; NFKC_SCF; 6E9C
+F9CC ; NFKC_SCF; 7409
+F9CD ; NFKC_SCF; 7559
+F9CE ; NFKC_SCF; 786B
+F9CF ; NFKC_SCF; 7D10
+F9D0 ; NFKC_SCF; 985E
+F9D1 ; NFKC_SCF; 516D
+F9D2 ; NFKC_SCF; 622E
+F9D3 ; NFKC_SCF; 9678
+F9D4 ; NFKC_SCF; 502B
+F9D5 ; NFKC_SCF; 5D19
+F9D6 ; NFKC_SCF; 6DEA
+F9D7 ; NFKC_SCF; 8F2A
+F9D8 ; NFKC_SCF; 5F8B
+F9D9 ; NFKC_SCF; 6144
+F9DA ; NFKC_SCF; 6817
+F9DB ; NFKC_SCF; 7387
+F9DC ; NFKC_SCF; 9686
+F9DD ; NFKC_SCF; 5229
+F9DE ; NFKC_SCF; 540F
+F9DF ; NFKC_SCF; 5C65
+F9E0 ; NFKC_SCF; 6613
+F9E1 ; NFKC_SCF; 674E
+F9E2 ; NFKC_SCF; 68A8
+F9E3 ; NFKC_SCF; 6CE5
+F9E4 ; NFKC_SCF; 7406
+F9E5 ; NFKC_SCF; 75E2
+F9E6 ; NFKC_SCF; 7F79
+F9E7 ; NFKC_SCF; 88CF
+F9E8 ; NFKC_SCF; 88E1
+F9E9 ; NFKC_SCF; 91CC
+F9EA ; NFKC_SCF; 96E2
+F9EB ; NFKC_SCF; 533F
+F9EC ; NFKC_SCF; 6EBA
+F9ED ; NFKC_SCF; 541D
+F9EE ; NFKC_SCF; 71D0
+F9EF ; NFKC_SCF; 7498
+F9F0 ; NFKC_SCF; 85FA
+F9F1 ; NFKC_SCF; 96A3
+F9F2 ; NFKC_SCF; 9C57
+F9F3 ; NFKC_SCF; 9E9F
+F9F4 ; NFKC_SCF; 6797
+F9F5 ; NFKC_SCF; 6DCB
+F9F6 ; NFKC_SCF; 81E8
+F9F7 ; NFKC_SCF; 7ACB
+F9F8 ; NFKC_SCF; 7B20
+F9F9 ; NFKC_SCF; 7C92
+F9FA ; NFKC_SCF; 72C0
+F9FB ; NFKC_SCF; 7099
+F9FC ; NFKC_SCF; 8B58
+F9FD ; NFKC_SCF; 4EC0
+F9FE ; NFKC_SCF; 8336
+F9FF ; NFKC_SCF; 523A
+FA00 ; NFKC_SCF; 5207
+FA01 ; NFKC_SCF; 5EA6
+FA02 ; NFKC_SCF; 62D3
+FA03 ; NFKC_SCF; 7CD6
+FA04 ; NFKC_SCF; 5B85
+FA05 ; NFKC_SCF; 6D1E
+FA06 ; NFKC_SCF; 66B4
+FA07 ; NFKC_SCF; 8F3B
+FA08 ; NFKC_SCF; 884C
+FA09 ; NFKC_SCF; 964D
+FA0A ; NFKC_SCF; 898B
+FA0B ; NFKC_SCF; 5ED3
+FA0C ; NFKC_SCF; 5140
+FA0D ; NFKC_SCF; 55C0
+FA10 ; NFKC_SCF; 585A
+FA12 ; NFKC_SCF; 6674
+FA15 ; NFKC_SCF; 51DE
+FA16 ; NFKC_SCF; 732A
+FA17 ; NFKC_SCF; 76CA
+FA18 ; NFKC_SCF; 793C
+FA19 ; NFKC_SCF; 795E
+FA1A ; NFKC_SCF; 7965
+FA1B ; NFKC_SCF; 798F
+FA1C ; NFKC_SCF; 9756
+FA1D ; NFKC_SCF; 7CBE
+FA1E ; NFKC_SCF; 7FBD
+FA20 ; NFKC_SCF; 8612
+FA22 ; NFKC_SCF; 8AF8
+FA25 ; NFKC_SCF; 9038
+FA26 ; NFKC_SCF; 90FD
+FA2A ; NFKC_SCF; 98EF
+FA2B ; NFKC_SCF; 98FC
+FA2C ; NFKC_SCF; 9928
+FA2D ; NFKC_SCF; 9DB4
+FA2E ; NFKC_SCF; 90DE
+FA2F ; NFKC_SCF; 96B7
+FA30 ; NFKC_SCF; 4FAE
+FA31 ; NFKC_SCF; 50E7
+FA32 ; NFKC_SCF; 514D
+FA33 ; NFKC_SCF; 52C9
+FA34 ; NFKC_SCF; 52E4
+FA35 ; NFKC_SCF; 5351
+FA36 ; NFKC_SCF; 559D
+FA37 ; NFKC_SCF; 5606
+FA38 ; NFKC_SCF; 5668
+FA39 ; NFKC_SCF; 5840
+FA3A ; NFKC_SCF; 58A8
+FA3B ; NFKC_SCF; 5C64
+FA3C ; NFKC_SCF; 5C6E
+FA3D ; NFKC_SCF; 6094
+FA3E ; NFKC_SCF; 6168
+FA3F ; NFKC_SCF; 618E
+FA40 ; NFKC_SCF; 61F2
+FA41 ; NFKC_SCF; 654F
+FA42 ; NFKC_SCF; 65E2
+FA43 ; NFKC_SCF; 6691
+FA44 ; NFKC_SCF; 6885
+FA45 ; NFKC_SCF; 6D77
+FA46 ; NFKC_SCF; 6E1A
+FA47 ; NFKC_SCF; 6F22
+FA48 ; NFKC_SCF; 716E
+FA49 ; NFKC_SCF; 722B
+FA4A ; NFKC_SCF; 7422
+FA4B ; NFKC_SCF; 7891
+FA4C ; NFKC_SCF; 793E
+FA4D ; NFKC_SCF; 7949
+FA4E ; NFKC_SCF; 7948
+FA4F ; NFKC_SCF; 7950
+FA50 ; NFKC_SCF; 7956
+FA51 ; NFKC_SCF; 795D
+FA52 ; NFKC_SCF; 798D
+FA53 ; NFKC_SCF; 798E
+FA54 ; NFKC_SCF; 7A40
+FA55 ; NFKC_SCF; 7A81
+FA56 ; NFKC_SCF; 7BC0
+FA57 ; NFKC_SCF; 7DF4
+FA58 ; NFKC_SCF; 7E09
+FA59 ; NFKC_SCF; 7E41
+FA5A ; NFKC_SCF; 7F72
+FA5B ; NFKC_SCF; 8005
+FA5C ; NFKC_SCF; 81ED
+FA5D..FA5E ; NFKC_SCF; 8279
+FA5F ; NFKC_SCF; 8457
+FA60 ; NFKC_SCF; 8910
+FA61 ; NFKC_SCF; 8996
+FA62 ; NFKC_SCF; 8B01
+FA63 ; NFKC_SCF; 8B39
+FA64 ; NFKC_SCF; 8CD3
+FA65 ; NFKC_SCF; 8D08
+FA66 ; NFKC_SCF; 8FB6
+FA67 ; NFKC_SCF; 9038
+FA68 ; NFKC_SCF; 96E3
+FA69 ; NFKC_SCF; 97FF
+FA6A ; NFKC_SCF; 983B
+FA6B ; NFKC_SCF; 6075
+FA6C ; NFKC_SCF; 242EE
+FA6D ; NFKC_SCF; 8218
+FA70 ; NFKC_SCF; 4E26
+FA71 ; NFKC_SCF; 51B5
+FA72 ; NFKC_SCF; 5168
+FA73 ; NFKC_SCF; 4F80
+FA74 ; NFKC_SCF; 5145
+FA75 ; NFKC_SCF; 5180
+FA76 ; NFKC_SCF; 52C7
+FA77 ; NFKC_SCF; 52FA
+FA78 ; NFKC_SCF; 559D
+FA79 ; NFKC_SCF; 5555
+FA7A ; NFKC_SCF; 5599
+FA7B ; NFKC_SCF; 55E2
+FA7C ; NFKC_SCF; 585A
+FA7D ; NFKC_SCF; 58B3
+FA7E ; NFKC_SCF; 5944
+FA7F ; NFKC_SCF; 5954
+FA80 ; NFKC_SCF; 5A62
+FA81 ; NFKC_SCF; 5B28
+FA82 ; NFKC_SCF; 5ED2
+FA83 ; NFKC_SCF; 5ED9
+FA84 ; NFKC_SCF; 5F69
+FA85 ; NFKC_SCF; 5FAD
+FA86 ; NFKC_SCF; 60D8
+FA87 ; NFKC_SCF; 614E
+FA88 ; NFKC_SCF; 6108
+FA89 ; NFKC_SCF; 618E
+FA8A ; NFKC_SCF; 6160
+FA8B ; NFKC_SCF; 61F2
+FA8C ; NFKC_SCF; 6234
+FA8D ; NFKC_SCF; 63C4
+FA8E ; NFKC_SCF; 641C
+FA8F ; NFKC_SCF; 6452
+FA90 ; NFKC_SCF; 6556
+FA91 ; NFKC_SCF; 6674
+FA92 ; NFKC_SCF; 6717
+FA93 ; NFKC_SCF; 671B
+FA94 ; NFKC_SCF; 6756
+FA95 ; NFKC_SCF; 6B79
+FA96 ; NFKC_SCF; 6BBA
+FA97 ; NFKC_SCF; 6D41
+FA98 ; NFKC_SCF; 6EDB
+FA99 ; NFKC_SCF; 6ECB
+FA9A ; NFKC_SCF; 6F22
+FA9B ; NFKC_SCF; 701E
+FA9C ; NFKC_SCF; 716E
+FA9D ; NFKC_SCF; 77A7
+FA9E ; NFKC_SCF; 7235
+FA9F ; NFKC_SCF; 72AF
+FAA0 ; NFKC_SCF; 732A
+FAA1 ; NFKC_SCF; 7471
+FAA2 ; NFKC_SCF; 7506
+FAA3 ; NFKC_SCF; 753B
+FAA4 ; NFKC_SCF; 761D
+FAA5 ; NFKC_SCF; 761F
+FAA6 ; NFKC_SCF; 76CA
+FAA7 ; NFKC_SCF; 76DB
+FAA8 ; NFKC_SCF; 76F4
+FAA9 ; NFKC_SCF; 774A
+FAAA ; NFKC_SCF; 7740
+FAAB ; NFKC_SCF; 78CC
+FAAC ; NFKC_SCF; 7AB1
+FAAD ; NFKC_SCF; 7BC0
+FAAE ; NFKC_SCF; 7C7B
+FAAF ; NFKC_SCF; 7D5B
+FAB0 ; NFKC_SCF; 7DF4
+FAB1 ; NFKC_SCF; 7F3E
+FAB2 ; NFKC_SCF; 8005
+FAB3 ; NFKC_SCF; 8352
+FAB4 ; NFKC_SCF; 83EF
+FAB5 ; NFKC_SCF; 8779
+FAB6 ; NFKC_SCF; 8941
+FAB7 ; NFKC_SCF; 8986
+FAB8 ; NFKC_SCF; 8996
+FAB9 ; NFKC_SCF; 8ABF
+FABA ; NFKC_SCF; 8AF8
+FABB ; NFKC_SCF; 8ACB
+FABC ; NFKC_SCF; 8B01
+FABD ; NFKC_SCF; 8AFE
+FABE ; NFKC_SCF; 8AED
+FABF ; NFKC_SCF; 8B39
+FAC0 ; NFKC_SCF; 8B8A
+FAC1 ; NFKC_SCF; 8D08
+FAC2 ; NFKC_SCF; 8F38
+FAC3 ; NFKC_SCF; 9072
+FAC4 ; NFKC_SCF; 9199
+FAC5 ; NFKC_SCF; 9276
+FAC6 ; NFKC_SCF; 967C
+FAC7 ; NFKC_SCF; 96E3
+FAC8 ; NFKC_SCF; 9756
+FAC9 ; NFKC_SCF; 97DB
+FACA ; NFKC_SCF; 97FF
+FACB ; NFKC_SCF; 980B
+FACC ; NFKC_SCF; 983B
+FACD ; NFKC_SCF; 9B12
+FACE ; NFKC_SCF; 9F9C
+FACF ; NFKC_SCF; 2284A
+FAD0 ; NFKC_SCF; 22844
+FAD1 ; NFKC_SCF; 233D5
+FAD2 ; NFKC_SCF; 3B9D
+FAD3 ; NFKC_SCF; 4018
+FAD4 ; NFKC_SCF; 4039
+FAD5 ; NFKC_SCF; 25249
+FAD6 ; NFKC_SCF; 25CD0
+FAD7 ; NFKC_SCF; 27ED3
+FAD8 ; NFKC_SCF; 9F43
+FAD9 ; NFKC_SCF; 9F8E
+FB00 ; NFKC_SCF; 0066 0066
+FB01 ; NFKC_SCF; 0066 0069
+FB02 ; NFKC_SCF; 0066 006C
+FB03 ; NFKC_SCF; 0066 0066 0069
+FB04 ; NFKC_SCF; 0066 0066 006C
+FB05..FB06 ; NFKC_SCF; 0073 0074
+FB13 ; NFKC_SCF; 0574 0576
+FB14 ; NFKC_SCF; 0574 0565
+FB15 ; NFKC_SCF; 0574 056B
+FB16 ; NFKC_SCF; 057E 0576
+FB17 ; NFKC_SCF; 0574 056D
+FB1D ; NFKC_SCF; 05D9 05B4
+FB1F ; NFKC_SCF; 05F2 05B7
+FB20 ; NFKC_SCF; 05E2
+FB21 ; NFKC_SCF; 05D0
+FB22 ; NFKC_SCF; 05D3
+FB23 ; NFKC_SCF; 05D4
+FB24 ; NFKC_SCF; 05DB
+FB25 ; NFKC_SCF; 05DC
+FB26 ; NFKC_SCF; 05DD
+FB27 ; NFKC_SCF; 05E8
+FB28 ; NFKC_SCF; 05EA
+FB29 ; NFKC_SCF; 002B
+FB2A ; NFKC_SCF; 05E9 05C1
+FB2B ; NFKC_SCF; 05E9 05C2
+FB2C ; NFKC_SCF; 05E9 05BC 05C1
+FB2D ; NFKC_SCF; 05E9 05BC 05C2
+FB2E ; NFKC_SCF; 05D0 05B7
+FB2F ; NFKC_SCF; 05D0 05B8
+FB30 ; NFKC_SCF; 05D0 05BC
+FB31 ; NFKC_SCF; 05D1 05BC
+FB32 ; NFKC_SCF; 05D2 05BC
+FB33 ; NFKC_SCF; 05D3 05BC
+FB34 ; NFKC_SCF; 05D4 05BC
+FB35 ; NFKC_SCF; 05D5 05BC
+FB36 ; NFKC_SCF; 05D6 05BC
+FB38 ; NFKC_SCF; 05D8 05BC
+FB39 ; NFKC_SCF; 05D9 05BC
+FB3A ; NFKC_SCF; 05DA 05BC
+FB3B ; NFKC_SCF; 05DB 05BC
+FB3C ; NFKC_SCF; 05DC 05BC
+FB3E ; NFKC_SCF; 05DE 05BC
+FB40 ; NFKC_SCF; 05E0 05BC
+FB41 ; NFKC_SCF; 05E1 05BC
+FB43 ; NFKC_SCF; 05E3 05BC
+FB44 ; NFKC_SCF; 05E4 05BC
+FB46 ; NFKC_SCF; 05E6 05BC
+FB47 ; NFKC_SCF; 05E7 05BC
+FB48 ; NFKC_SCF; 05E8 05BC
+FB49 ; NFKC_SCF; 05E9 05BC
+FB4A ; NFKC_SCF; 05EA 05BC
+FB4B ; NFKC_SCF; 05D5 05B9
+FB4C ; NFKC_SCF; 05D1 05BF
+FB4D ; NFKC_SCF; 05DB 05BF
+FB4E ; NFKC_SCF; 05E4 05BF
+FB4F ; NFKC_SCF; 05D0 05DC
+FB50..FB51 ; NFKC_SCF; 0671
+FB52..FB55 ; NFKC_SCF; 067B
+FB56..FB59 ; NFKC_SCF; 067E
+FB5A..FB5D ; NFKC_SCF; 0680
+FB5E..FB61 ; NFKC_SCF; 067A
+FB62..FB65 ; NFKC_SCF; 067F
+FB66..FB69 ; NFKC_SCF; 0679
+FB6A..FB6D ; NFKC_SCF; 06A4
+FB6E..FB71 ; NFKC_SCF; 06A6
+FB72..FB75 ; NFKC_SCF; 0684
+FB76..FB79 ; NFKC_SCF; 0683
+FB7A..FB7D ; NFKC_SCF; 0686
+FB7E..FB81 ; NFKC_SCF; 0687
+FB82..FB83 ; NFKC_SCF; 068D
+FB84..FB85 ; NFKC_SCF; 068C
+FB86..FB87 ; NFKC_SCF; 068E
+FB88..FB89 ; NFKC_SCF; 0688
+FB8A..FB8B ; NFKC_SCF; 0698
+FB8C..FB8D ; NFKC_SCF; 0691
+FB8E..FB91 ; NFKC_SCF; 06A9
+FB92..FB95 ; NFKC_SCF; 06AF
+FB96..FB99 ; NFKC_SCF; 06B3
+FB9A..FB9D ; NFKC_SCF; 06B1
+FB9E..FB9F ; NFKC_SCF; 06BA
+FBA0..FBA3 ; NFKC_SCF; 06BB
+FBA4..FBA5 ; NFKC_SCF; 06C0
+FBA6..FBA9 ; NFKC_SCF; 06C1
+FBAA..FBAD ; NFKC_SCF; 06BE
+FBAE..FBAF ; NFKC_SCF; 06D2
+FBB0..FBB1 ; NFKC_SCF; 06D3
+FBD3..FBD6 ; NFKC_SCF; 06AD
+FBD7..FBD8 ; NFKC_SCF; 06C7
+FBD9..FBDA ; NFKC_SCF; 06C6
+FBDB..FBDC ; NFKC_SCF; 06C8
+FBDD ; NFKC_SCF; 06C7 0674
+FBDE..FBDF ; NFKC_SCF; 06CB
+FBE0..FBE1 ; NFKC_SCF; 06C5
+FBE2..FBE3 ; NFKC_SCF; 06C9
+FBE4..FBE7 ; NFKC_SCF; 06D0
+FBE8..FBE9 ; NFKC_SCF; 0649
+FBEA..FBEB ; NFKC_SCF; 0626 0627
+FBEC..FBED ; NFKC_SCF; 0626 06D5
+FBEE..FBEF ; NFKC_SCF; 0626 0648
+FBF0..FBF1 ; NFKC_SCF; 0626 06C7
+FBF2..FBF3 ; NFKC_SCF; 0626 06C6
+FBF4..FBF5 ; NFKC_SCF; 0626 06C8
+FBF6..FBF8 ; NFKC_SCF; 0626 06D0
+FBF9..FBFB ; NFKC_SCF; 0626 0649
+FBFC..FBFF ; NFKC_SCF; 06CC
+FC00 ; NFKC_SCF; 0626 062C
+FC01 ; NFKC_SCF; 0626 062D
+FC02 ; NFKC_SCF; 0626 0645
+FC03 ; NFKC_SCF; 0626 0649
+FC04 ; NFKC_SCF; 0626 064A
+FC05 ; NFKC_SCF; 0628 062C
+FC06 ; NFKC_SCF; 0628 062D
+FC07 ; NFKC_SCF; 0628 062E
+FC08 ; NFKC_SCF; 0628 0645
+FC09 ; NFKC_SCF; 0628 0649
+FC0A ; NFKC_SCF; 0628 064A
+FC0B ; NFKC_SCF; 062A 062C
+FC0C ; NFKC_SCF; 062A 062D
+FC0D ; NFKC_SCF; 062A 062E
+FC0E ; NFKC_SCF; 062A 0645
+FC0F ; NFKC_SCF; 062A 0649
+FC10 ; NFKC_SCF; 062A 064A
+FC11 ; NFKC_SCF; 062B 062C
+FC12 ; NFKC_SCF; 062B 0645
+FC13 ; NFKC_SCF; 062B 0649
+FC14 ; NFKC_SCF; 062B 064A
+FC15 ; NFKC_SCF; 062C 062D
+FC16 ; NFKC_SCF; 062C 0645
+FC17 ; NFKC_SCF; 062D 062C
+FC18 ; NFKC_SCF; 062D 0645
+FC19 ; NFKC_SCF; 062E 062C
+FC1A ; NFKC_SCF; 062E 062D
+FC1B ; NFKC_SCF; 062E 0645
+FC1C ; NFKC_SCF; 0633 062C
+FC1D ; NFKC_SCF; 0633 062D
+FC1E ; NFKC_SCF; 0633 062E
+FC1F ; NFKC_SCF; 0633 0645
+FC20 ; NFKC_SCF; 0635 062D
+FC21 ; NFKC_SCF; 0635 0645
+FC22 ; NFKC_SCF; 0636 062C
+FC23 ; NFKC_SCF; 0636 062D
+FC24 ; NFKC_SCF; 0636 062E
+FC25 ; NFKC_SCF; 0636 0645
+FC26 ; NFKC_SCF; 0637 062D
+FC27 ; NFKC_SCF; 0637 0645
+FC28 ; NFKC_SCF; 0638 0645
+FC29 ; NFKC_SCF; 0639 062C
+FC2A ; NFKC_SCF; 0639 0645
+FC2B ; NFKC_SCF; 063A 062C
+FC2C ; NFKC_SCF; 063A 0645
+FC2D ; NFKC_SCF; 0641 062C
+FC2E ; NFKC_SCF; 0641 062D
+FC2F ; NFKC_SCF; 0641 062E
+FC30 ; NFKC_SCF; 0641 0645
+FC31 ; NFKC_SCF; 0641 0649
+FC32 ; NFKC_SCF; 0641 064A
+FC33 ; NFKC_SCF; 0642 062D
+FC34 ; NFKC_SCF; 0642 0645
+FC35 ; NFKC_SCF; 0642 0649
+FC36 ; NFKC_SCF; 0642 064A
+FC37 ; NFKC_SCF; 0643 0627
+FC38 ; NFKC_SCF; 0643 062C
+FC39 ; NFKC_SCF; 0643 062D
+FC3A ; NFKC_SCF; 0643 062E
+FC3B ; NFKC_SCF; 0643 0644
+FC3C ; NFKC_SCF; 0643 0645
+FC3D ; NFKC_SCF; 0643 0649
+FC3E ; NFKC_SCF; 0643 064A
+FC3F ; NFKC_SCF; 0644 062C
+FC40 ; NFKC_SCF; 0644 062D
+FC41 ; NFKC_SCF; 0644 062E
+FC42 ; NFKC_SCF; 0644 0645
+FC43 ; NFKC_SCF; 0644 0649
+FC44 ; NFKC_SCF; 0644 064A
+FC45 ; NFKC_SCF; 0645 062C
+FC46 ; NFKC_SCF; 0645 062D
+FC47 ; NFKC_SCF; 0645 062E
+FC48 ; NFKC_SCF; 0645 0645
+FC49 ; NFKC_SCF; 0645 0649
+FC4A ; NFKC_SCF; 0645 064A
+FC4B ; NFKC_SCF; 0646 062C
+FC4C ; NFKC_SCF; 0646 062D
+FC4D ; NFKC_SCF; 0646 062E
+FC4E ; NFKC_SCF; 0646 0645
+FC4F ; NFKC_SCF; 0646 0649
+FC50 ; NFKC_SCF; 0646 064A
+FC51 ; NFKC_SCF; 0647 062C
+FC52 ; NFKC_SCF; 0647 0645
+FC53 ; NFKC_SCF; 0647 0649
+FC54 ; NFKC_SCF; 0647 064A
+FC55 ; NFKC_SCF; 064A 062C
+FC56 ; NFKC_SCF; 064A 062D
+FC57 ; NFKC_SCF; 064A 062E
+FC58 ; NFKC_SCF; 064A 0645
+FC59 ; NFKC_SCF; 064A 0649
+FC5A ; NFKC_SCF; 064A 064A
+FC5B ; NFKC_SCF; 0630 0670
+FC5C ; NFKC_SCF; 0631 0670
+FC5D ; NFKC_SCF; 0649 0670
+FC5E ; NFKC_SCF; 0020 064C 0651
+FC5F ; NFKC_SCF; 0020 064D 0651
+FC60 ; NFKC_SCF; 0020 064E 0651
+FC61 ; NFKC_SCF; 0020 064F 0651
+FC62 ; NFKC_SCF; 0020 0650 0651
+FC63 ; NFKC_SCF; 0020 0651 0670
+FC64 ; NFKC_SCF; 0626 0631
+FC65 ; NFKC_SCF; 0626 0632
+FC66 ; NFKC_SCF; 0626 0645
+FC67 ; NFKC_SCF; 0626 0646
+FC68 ; NFKC_SCF; 0626 0649
+FC69 ; NFKC_SCF; 0626 064A
+FC6A ; NFKC_SCF; 0628 0631
+FC6B ; NFKC_SCF; 0628 0632
+FC6C ; NFKC_SCF; 0628 0645
+FC6D ; NFKC_SCF; 0628 0646
+FC6E ; NFKC_SCF; 0628 0649
+FC6F ; NFKC_SCF; 0628 064A
+FC70 ; NFKC_SCF; 062A 0631
+FC71 ; NFKC_SCF; 062A 0632
+FC72 ; NFKC_SCF; 062A 0645
+FC73 ; NFKC_SCF; 062A 0646
+FC74 ; NFKC_SCF; 062A 0649
+FC75 ; NFKC_SCF; 062A 064A
+FC76 ; NFKC_SCF; 062B 0631
+FC77 ; NFKC_SCF; 062B 0632
+FC78 ; NFKC_SCF; 062B 0645
+FC79 ; NFKC_SCF; 062B 0646
+FC7A ; NFKC_SCF; 062B 0649
+FC7B ; NFKC_SCF; 062B 064A
+FC7C ; NFKC_SCF; 0641 0649
+FC7D ; NFKC_SCF; 0641 064A
+FC7E ; NFKC_SCF; 0642 0649
+FC7F ; NFKC_SCF; 0642 064A
+FC80 ; NFKC_SCF; 0643 0627
+FC81 ; NFKC_SCF; 0643 0644
+FC82 ; NFKC_SCF; 0643 0645
+FC83 ; NFKC_SCF; 0643 0649
+FC84 ; NFKC_SCF; 0643 064A
+FC85 ; NFKC_SCF; 0644 0645
+FC86 ; NFKC_SCF; 0644 0649
+FC87 ; NFKC_SCF; 0644 064A
+FC88 ; NFKC_SCF; 0645 0627
+FC89 ; NFKC_SCF; 0645 0645
+FC8A ; NFKC_SCF; 0646 0631
+FC8B ; NFKC_SCF; 0646 0632
+FC8C ; NFKC_SCF; 0646 0645
+FC8D ; NFKC_SCF; 0646 0646
+FC8E ; NFKC_SCF; 0646 0649
+FC8F ; NFKC_SCF; 0646 064A
+FC90 ; NFKC_SCF; 0649 0670
+FC91 ; NFKC_SCF; 064A 0631
+FC92 ; NFKC_SCF; 064A 0632
+FC93 ; NFKC_SCF; 064A 0645
+FC94 ; NFKC_SCF; 064A 0646
+FC95 ; NFKC_SCF; 064A 0649
+FC96 ; NFKC_SCF; 064A 064A
+FC97 ; NFKC_SCF; 0626 062C
+FC98 ; NFKC_SCF; 0626 062D
+FC99 ; NFKC_SCF; 0626 062E
+FC9A ; NFKC_SCF; 0626 0645
+FC9B ; NFKC_SCF; 0626 0647
+FC9C ; NFKC_SCF; 0628 062C
+FC9D ; NFKC_SCF; 0628 062D
+FC9E ; NFKC_SCF; 0628 062E
+FC9F ; NFKC_SCF; 0628 0645
+FCA0 ; NFKC_SCF; 0628 0647
+FCA1 ; NFKC_SCF; 062A 062C
+FCA2 ; NFKC_SCF; 062A 062D
+FCA3 ; NFKC_SCF; 062A 062E
+FCA4 ; NFKC_SCF; 062A 0645
+FCA5 ; NFKC_SCF; 062A 0647
+FCA6 ; NFKC_SCF; 062B 0645
+FCA7 ; NFKC_SCF; 062C 062D
+FCA8 ; NFKC_SCF; 062C 0645
+FCA9 ; NFKC_SCF; 062D 062C
+FCAA ; NFKC_SCF; 062D 0645
+FCAB ; NFKC_SCF; 062E 062C
+FCAC ; NFKC_SCF; 062E 0645
+FCAD ; NFKC_SCF; 0633 062C
+FCAE ; NFKC_SCF; 0633 062D
+FCAF ; NFKC_SCF; 0633 062E
+FCB0 ; NFKC_SCF; 0633 0645
+FCB1 ; NFKC_SCF; 0635 062D
+FCB2 ; NFKC_SCF; 0635 062E
+FCB3 ; NFKC_SCF; 0635 0645
+FCB4 ; NFKC_SCF; 0636 062C
+FCB5 ; NFKC_SCF; 0636 062D
+FCB6 ; NFKC_SCF; 0636 062E
+FCB7 ; NFKC_SCF; 0636 0645
+FCB8 ; NFKC_SCF; 0637 062D
+FCB9 ; NFKC_SCF; 0638 0645
+FCBA ; NFKC_SCF; 0639 062C
+FCBB ; NFKC_SCF; 0639 0645
+FCBC ; NFKC_SCF; 063A 062C
+FCBD ; NFKC_SCF; 063A 0645
+FCBE ; NFKC_SCF; 0641 062C
+FCBF ; NFKC_SCF; 0641 062D
+FCC0 ; NFKC_SCF; 0641 062E
+FCC1 ; NFKC_SCF; 0641 0645
+FCC2 ; NFKC_SCF; 0642 062D
+FCC3 ; NFKC_SCF; 0642 0645
+FCC4 ; NFKC_SCF; 0643 062C
+FCC5 ; NFKC_SCF; 0643 062D
+FCC6 ; NFKC_SCF; 0643 062E
+FCC7 ; NFKC_SCF; 0643 0644
+FCC8 ; NFKC_SCF; 0643 0645
+FCC9 ; NFKC_SCF; 0644 062C
+FCCA ; NFKC_SCF; 0644 062D
+FCCB ; NFKC_SCF; 0644 062E
+FCCC ; NFKC_SCF; 0644 0645
+FCCD ; NFKC_SCF; 0644 0647
+FCCE ; NFKC_SCF; 0645 062C
+FCCF ; NFKC_SCF; 0645 062D
+FCD0 ; NFKC_SCF; 0645 062E
+FCD1 ; NFKC_SCF; 0645 0645
+FCD2 ; NFKC_SCF; 0646 062C
+FCD3 ; NFKC_SCF; 0646 062D
+FCD4 ; NFKC_SCF; 0646 062E
+FCD5 ; NFKC_SCF; 0646 0645
+FCD6 ; NFKC_SCF; 0646 0647
+FCD7 ; NFKC_SCF; 0647 062C
+FCD8 ; NFKC_SCF; 0647 0645
+FCD9 ; NFKC_SCF; 0647 0670
+FCDA ; NFKC_SCF; 064A 062C
+FCDB ; NFKC_SCF; 064A 062D
+FCDC ; NFKC_SCF; 064A 062E
+FCDD ; NFKC_SCF; 064A 0645
+FCDE ; NFKC_SCF; 064A 0647
+FCDF ; NFKC_SCF; 0626 0645
+FCE0 ; NFKC_SCF; 0626 0647
+FCE1 ; NFKC_SCF; 0628 0645
+FCE2 ; NFKC_SCF; 0628 0647
+FCE3 ; NFKC_SCF; 062A 0645
+FCE4 ; NFKC_SCF; 062A 0647
+FCE5 ; NFKC_SCF; 062B 0645
+FCE6 ; NFKC_SCF; 062B 0647
+FCE7 ; NFKC_SCF; 0633 0645
+FCE8 ; NFKC_SCF; 0633 0647
+FCE9 ; NFKC_SCF; 0634 0645
+FCEA ; NFKC_SCF; 0634 0647
+FCEB ; NFKC_SCF; 0643 0644
+FCEC ; NFKC_SCF; 0643 0645
+FCED ; NFKC_SCF; 0644 0645
+FCEE ; NFKC_SCF; 0646 0645
+FCEF ; NFKC_SCF; 0646 0647
+FCF0 ; NFKC_SCF; 064A 0645
+FCF1 ; NFKC_SCF; 064A 0647
+FCF2 ; NFKC_SCF; 0640 064E 0651
+FCF3 ; NFKC_SCF; 0640 064F 0651
+FCF4 ; NFKC_SCF; 0640 0650 0651
+FCF5 ; NFKC_SCF; 0637 0649
+FCF6 ; NFKC_SCF; 0637 064A
+FCF7 ; NFKC_SCF; 0639 0649
+FCF8 ; NFKC_SCF; 0639 064A
+FCF9 ; NFKC_SCF; 063A 0649
+FCFA ; NFKC_SCF; 063A 064A
+FCFB ; NFKC_SCF; 0633 0649
+FCFC ; NFKC_SCF; 0633 064A
+FCFD ; NFKC_SCF; 0634 0649
+FCFE ; NFKC_SCF; 0634 064A
+FCFF ; NFKC_SCF; 062D 0649
+FD00 ; NFKC_SCF; 062D 064A
+FD01 ; NFKC_SCF; 062C 0649
+FD02 ; NFKC_SCF; 062C 064A
+FD03 ; NFKC_SCF; 062E 0649
+FD04 ; NFKC_SCF; 062E 064A
+FD05 ; NFKC_SCF; 0635 0649
+FD06 ; NFKC_SCF; 0635 064A
+FD07 ; NFKC_SCF; 0636 0649
+FD08 ; NFKC_SCF; 0636 064A
+FD09 ; NFKC_SCF; 0634 062C
+FD0A ; NFKC_SCF; 0634 062D
+FD0B ; NFKC_SCF; 0634 062E
+FD0C ; NFKC_SCF; 0634 0645
+FD0D ; NFKC_SCF; 0634 0631
+FD0E ; NFKC_SCF; 0633 0631
+FD0F ; NFKC_SCF; 0635 0631
+FD10 ; NFKC_SCF; 0636 0631
+FD11 ; NFKC_SCF; 0637 0649
+FD12 ; NFKC_SCF; 0637 064A
+FD13 ; NFKC_SCF; 0639 0649
+FD14 ; NFKC_SCF; 0639 064A
+FD15 ; NFKC_SCF; 063A 0649
+FD16 ; NFKC_SCF; 063A 064A
+FD17 ; NFKC_SCF; 0633 0649
+FD18 ; NFKC_SCF; 0633 064A
+FD19 ; NFKC_SCF; 0634 0649
+FD1A ; NFKC_SCF; 0634 064A
+FD1B ; NFKC_SCF; 062D 0649
+FD1C ; NFKC_SCF; 062D 064A
+FD1D ; NFKC_SCF; 062C 0649
+FD1E ; NFKC_SCF; 062C 064A
+FD1F ; NFKC_SCF; 062E 0649
+FD20 ; NFKC_SCF; 062E 064A
+FD21 ; NFKC_SCF; 0635 0649
+FD22 ; NFKC_SCF; 0635 064A
+FD23 ; NFKC_SCF; 0636 0649
+FD24 ; NFKC_SCF; 0636 064A
+FD25 ; NFKC_SCF; 0634 062C
+FD26 ; NFKC_SCF; 0634 062D
+FD27 ; NFKC_SCF; 0634 062E
+FD28 ; NFKC_SCF; 0634 0645
+FD29 ; NFKC_SCF; 0634 0631
+FD2A ; NFKC_SCF; 0633 0631
+FD2B ; NFKC_SCF; 0635 0631
+FD2C ; NFKC_SCF; 0636 0631
+FD2D ; NFKC_SCF; 0634 062C
+FD2E ; NFKC_SCF; 0634 062D
+FD2F ; NFKC_SCF; 0634 062E
+FD30 ; NFKC_SCF; 0634 0645
+FD31 ; NFKC_SCF; 0633 0647
+FD32 ; NFKC_SCF; 0634 0647
+FD33 ; NFKC_SCF; 0637 0645
+FD34 ; NFKC_SCF; 0633 062C
+FD35 ; NFKC_SCF; 0633 062D
+FD36 ; NFKC_SCF; 0633 062E
+FD37 ; NFKC_SCF; 0634 062C
+FD38 ; NFKC_SCF; 0634 062D
+FD39 ; NFKC_SCF; 0634 062E
+FD3A ; NFKC_SCF; 0637 0645
+FD3B ; NFKC_SCF; 0638 0645
+FD3C..FD3D ; NFKC_SCF; 0627 064B
+FD50 ; NFKC_SCF; 062A 062C 0645
+FD51..FD52 ; NFKC_SCF; 062A 062D 062C
+FD53 ; NFKC_SCF; 062A 062D 0645
+FD54 ; NFKC_SCF; 062A 062E 0645
+FD55 ; NFKC_SCF; 062A 0645 062C
+FD56 ; NFKC_SCF; 062A 0645 062D
+FD57 ; NFKC_SCF; 062A 0645 062E
+FD58..FD59 ; NFKC_SCF; 062C 0645 062D
+FD5A ; NFKC_SCF; 062D 0645 064A
+FD5B ; NFKC_SCF; 062D 0645 0649
+FD5C ; NFKC_SCF; 0633 062D 062C
+FD5D ; NFKC_SCF; 0633 062C 062D
+FD5E ; NFKC_SCF; 0633 062C 0649
+FD5F..FD60 ; NFKC_SCF; 0633 0645 062D
+FD61 ; NFKC_SCF; 0633 0645 062C
+FD62..FD63 ; NFKC_SCF; 0633 0645 0645
+FD64..FD65 ; NFKC_SCF; 0635 062D 062D
+FD66 ; NFKC_SCF; 0635 0645 0645
+FD67..FD68 ; NFKC_SCF; 0634 062D 0645
+FD69 ; NFKC_SCF; 0634 062C 064A
+FD6A..FD6B ; NFKC_SCF; 0634 0645 062E
+FD6C..FD6D ; NFKC_SCF; 0634 0645 0645
+FD6E ; NFKC_SCF; 0636 062D 0649
+FD6F..FD70 ; NFKC_SCF; 0636 062E 0645
+FD71..FD72 ; NFKC_SCF; 0637 0645 062D
+FD73 ; NFKC_SCF; 0637 0645 0645
+FD74 ; NFKC_SCF; 0637 0645 064A
+FD75 ; NFKC_SCF; 0639 062C 0645
+FD76..FD77 ; NFKC_SCF; 0639 0645 0645
+FD78 ; NFKC_SCF; 0639 0645 0649
+FD79 ; NFKC_SCF; 063A 0645 0645
+FD7A ; NFKC_SCF; 063A 0645 064A
+FD7B ; NFKC_SCF; 063A 0645 0649
+FD7C..FD7D ; NFKC_SCF; 0641 062E 0645
+FD7E ; NFKC_SCF; 0642 0645 062D
+FD7F ; NFKC_SCF; 0642 0645 0645
+FD80 ; NFKC_SCF; 0644 062D 0645
+FD81 ; NFKC_SCF; 0644 062D 064A
+FD82 ; NFKC_SCF; 0644 062D 0649
+FD83..FD84 ; NFKC_SCF; 0644 062C 062C
+FD85..FD86 ; NFKC_SCF; 0644 062E 0645
+FD87..FD88 ; NFKC_SCF; 0644 0645 062D
+FD89 ; NFKC_SCF; 0645 062D 062C
+FD8A ; NFKC_SCF; 0645 062D 0645
+FD8B ; NFKC_SCF; 0645 062D 064A
+FD8C ; NFKC_SCF; 0645 062C 062D
+FD8D ; NFKC_SCF; 0645 062C 0645
+FD8E ; NFKC_SCF; 0645 062E 062C
+FD8F ; NFKC_SCF; 0645 062E 0645
+FD92 ; NFKC_SCF; 0645 062C 062E
+FD93 ; NFKC_SCF; 0647 0645 062C
+FD94 ; NFKC_SCF; 0647 0645 0645
+FD95 ; NFKC_SCF; 0646 062D 0645
+FD96 ; NFKC_SCF; 0646 062D 0649
+FD97..FD98 ; NFKC_SCF; 0646 062C 0645
+FD99 ; NFKC_SCF; 0646 062C 0649
+FD9A ; NFKC_SCF; 0646 0645 064A
+FD9B ; NFKC_SCF; 0646 0645 0649
+FD9C..FD9D ; NFKC_SCF; 064A 0645 0645
+FD9E ; NFKC_SCF; 0628 062E 064A
+FD9F ; NFKC_SCF; 062A 062C 064A
+FDA0 ; NFKC_SCF; 062A 062C 0649
+FDA1 ; NFKC_SCF; 062A 062E 064A
+FDA2 ; NFKC_SCF; 062A 062E 0649
+FDA3 ; NFKC_SCF; 062A 0645 064A
+FDA4 ; NFKC_SCF; 062A 0645 0649
+FDA5 ; NFKC_SCF; 062C 0645 064A
+FDA6 ; NFKC_SCF; 062C 062D 0649
+FDA7 ; NFKC_SCF; 062C 0645 0649
+FDA8 ; NFKC_SCF; 0633 062E 0649
+FDA9 ; NFKC_SCF; 0635 062D 064A
+FDAA ; NFKC_SCF; 0634 062D 064A
+FDAB ; NFKC_SCF; 0636 062D 064A
+FDAC ; NFKC_SCF; 0644 062C 064A
+FDAD ; NFKC_SCF; 0644 0645 064A
+FDAE ; NFKC_SCF; 064A 062D 064A
+FDAF ; NFKC_SCF; 064A 062C 064A
+FDB0 ; NFKC_SCF; 064A 0645 064A
+FDB1 ; NFKC_SCF; 0645 0645 064A
+FDB2 ; NFKC_SCF; 0642 0645 064A
+FDB3 ; NFKC_SCF; 0646 062D 064A
+FDB4 ; NFKC_SCF; 0642 0645 062D
+FDB5 ; NFKC_SCF; 0644 062D 0645
+FDB6 ; NFKC_SCF; 0639 0645 064A
+FDB7 ; NFKC_SCF; 0643 0645 064A
+FDB8 ; NFKC_SCF; 0646 062C 062D
+FDB9 ; NFKC_SCF; 0645 062E 064A
+FDBA ; NFKC_SCF; 0644 062C 0645
+FDBB ; NFKC_SCF; 0643 0645 0645
+FDBC ; NFKC_SCF; 0644 062C 0645
+FDBD ; NFKC_SCF; 0646 062C 062D
+FDBE ; NFKC_SCF; 062C 062D 064A
+FDBF ; NFKC_SCF; 062D 062C 064A
+FDC0 ; NFKC_SCF; 0645 062C 064A
+FDC1 ; NFKC_SCF; 0641 0645 064A
+FDC2 ; NFKC_SCF; 0628 062D 064A
+FDC3 ; NFKC_SCF; 0643 0645 0645
+FDC4 ; NFKC_SCF; 0639 062C 0645
+FDC5 ; NFKC_SCF; 0635 0645 0645
+FDC6 ; NFKC_SCF; 0633 062E 064A
+FDC7 ; NFKC_SCF; 0646 062C 064A
+FDF0 ; NFKC_SCF; 0635 0644 06D2
+FDF1 ; NFKC_SCF; 0642 0644 06D2
+FDF2 ; NFKC_SCF; 0627 0644 0644 0647
+FDF3 ; NFKC_SCF; 0627 0643 0628 0631
+FDF4 ; NFKC_SCF; 0645 062D 0645 062F
+FDF5 ; NFKC_SCF; 0635 0644 0639 0645
+FDF6 ; NFKC_SCF; 0631 0633 0648 0644
+FDF7 ; NFKC_SCF; 0639 0644 064A 0647
+FDF8 ; NFKC_SCF; 0648 0633 0644 0645
+FDF9 ; NFKC_SCF; 0635 0644 0649
+FDFA ; NFKC_SCF; 0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645
+FDFB ; NFKC_SCF; 062C 0644 0020 062C 0644 0627 0644 0647
+FDFC ; NFKC_SCF; 0631 06CC 0627 0644
+FE00..FE0F ; NFKC_SCF;
+FE10 ; NFKC_SCF; 002C
+FE11 ; NFKC_SCF; 3001
+FE12 ; NFKC_SCF; 3002
+FE13 ; NFKC_SCF; 003A
+FE14 ; NFKC_SCF; 003B
+FE15 ; NFKC_SCF; 0021
+FE16 ; NFKC_SCF; 003F
+FE17 ; NFKC_SCF; 3016
+FE18 ; NFKC_SCF; 3017
+FE19 ; NFKC_SCF; 002E 002E 002E
+FE30 ; NFKC_SCF; 002E 002E
+FE31 ; NFKC_SCF; 2014
+FE32 ; NFKC_SCF; 2013
+FE33..FE34 ; NFKC_SCF; 005F
+FE35 ; NFKC_SCF; 0028
+FE36 ; NFKC_SCF; 0029
+FE37 ; NFKC_SCF; 007B
+FE38 ; NFKC_SCF; 007D
+FE39 ; NFKC_SCF; 3014
+FE3A ; NFKC_SCF; 3015
+FE3B ; NFKC_SCF; 3010
+FE3C ; NFKC_SCF; 3011
+FE3D ; NFKC_SCF; 300A
+FE3E ; NFKC_SCF; 300B
+FE3F ; NFKC_SCF; 3008
+FE40 ; NFKC_SCF; 3009
+FE41 ; NFKC_SCF; 300C
+FE42 ; NFKC_SCF; 300D
+FE43 ; NFKC_SCF; 300E
+FE44 ; NFKC_SCF; 300F
+FE47 ; NFKC_SCF; 005B
+FE48 ; NFKC_SCF; 005D
+FE49..FE4C ; NFKC_SCF; 0020 0305
+FE4D..FE4F ; NFKC_SCF; 005F
+FE50 ; NFKC_SCF; 002C
+FE51 ; NFKC_SCF; 3001
+FE52 ; NFKC_SCF; 002E
+FE54 ; NFKC_SCF; 003B
+FE55 ; NFKC_SCF; 003A
+FE56 ; NFKC_SCF; 003F
+FE57 ; NFKC_SCF; 0021
+FE58 ; NFKC_SCF; 2014
+FE59 ; NFKC_SCF; 0028
+FE5A ; NFKC_SCF; 0029
+FE5B ; NFKC_SCF; 007B
+FE5C ; NFKC_SCF; 007D
+FE5D ; NFKC_SCF; 3014
+FE5E ; NFKC_SCF; 3015
+FE5F ; NFKC_SCF; 0023
+FE60 ; NFKC_SCF; 0026
+FE61 ; NFKC_SCF; 002A
+FE62 ; NFKC_SCF; 002B
+FE63 ; NFKC_SCF; 002D
+FE64 ; NFKC_SCF; 003C
+FE65 ; NFKC_SCF; 003E
+FE66 ; NFKC_SCF; 003D
+FE68 ; NFKC_SCF; 005C
+FE69 ; NFKC_SCF; 0024
+FE6A ; NFKC_SCF; 0025
+FE6B ; NFKC_SCF; 0040
+FE70 ; NFKC_SCF; 0020 064B
+FE71 ; NFKC_SCF; 0640 064B
+FE72 ; NFKC_SCF; 0020 064C
+FE74 ; NFKC_SCF; 0020 064D
+FE76 ; NFKC_SCF; 0020 064E
+FE77 ; NFKC_SCF; 0640 064E
+FE78 ; NFKC_SCF; 0020 064F
+FE79 ; NFKC_SCF; 0640 064F
+FE7A ; NFKC_SCF; 0020 0650
+FE7B ; NFKC_SCF; 0640 0650
+FE7C ; NFKC_SCF; 0020 0651
+FE7D ; NFKC_SCF; 0640 0651
+FE7E ; NFKC_SCF; 0020 0652
+FE7F ; NFKC_SCF; 0640 0652
+FE80 ; NFKC_SCF; 0621
+FE81..FE82 ; NFKC_SCF; 0622
+FE83..FE84 ; NFKC_SCF; 0623
+FE85..FE86 ; NFKC_SCF; 0624
+FE87..FE88 ; NFKC_SCF; 0625
+FE89..FE8C ; NFKC_SCF; 0626
+FE8D..FE8E ; NFKC_SCF; 0627
+FE8F..FE92 ; NFKC_SCF; 0628
+FE93..FE94 ; NFKC_SCF; 0629
+FE95..FE98 ; NFKC_SCF; 062A
+FE99..FE9C ; NFKC_SCF; 062B
+FE9D..FEA0 ; NFKC_SCF; 062C
+FEA1..FEA4 ; NFKC_SCF; 062D
+FEA5..FEA8 ; NFKC_SCF; 062E
+FEA9..FEAA ; NFKC_SCF; 062F
+FEAB..FEAC ; NFKC_SCF; 0630
+FEAD..FEAE ; NFKC_SCF; 0631
+FEAF..FEB0 ; NFKC_SCF; 0632
+FEB1..FEB4 ; NFKC_SCF; 0633
+FEB5..FEB8 ; NFKC_SCF; 0634
+FEB9..FEBC ; NFKC_SCF; 0635
+FEBD..FEC0 ; NFKC_SCF; 0636
+FEC1..FEC4 ; NFKC_SCF; 0637
+FEC5..FEC8 ; NFKC_SCF; 0638
+FEC9..FECC ; NFKC_SCF; 0639
+FECD..FED0 ; NFKC_SCF; 063A
+FED1..FED4 ; NFKC_SCF; 0641
+FED5..FED8 ; NFKC_SCF; 0642
+FED9..FEDC ; NFKC_SCF; 0643
+FEDD..FEE0 ; NFKC_SCF; 0644
+FEE1..FEE4 ; NFKC_SCF; 0645
+FEE5..FEE8 ; NFKC_SCF; 0646
+FEE9..FEEC ; NFKC_SCF; 0647
+FEED..FEEE ; NFKC_SCF; 0648
+FEEF..FEF0 ; NFKC_SCF; 0649
+FEF1..FEF4 ; NFKC_SCF; 064A
+FEF5..FEF6 ; NFKC_SCF; 0644 0622
+FEF7..FEF8 ; NFKC_SCF; 0644 0623
+FEF9..FEFA ; NFKC_SCF; 0644 0625
+FEFB..FEFC ; NFKC_SCF; 0644 0627
+FEFF ; NFKC_SCF;
+FF01 ; NFKC_SCF; 0021
+FF02 ; NFKC_SCF; 0022
+FF03 ; NFKC_SCF; 0023
+FF04 ; NFKC_SCF; 0024
+FF05 ; NFKC_SCF; 0025
+FF06 ; NFKC_SCF; 0026
+FF07 ; NFKC_SCF; 0027
+FF08 ; NFKC_SCF; 0028
+FF09 ; NFKC_SCF; 0029
+FF0A ; NFKC_SCF; 002A
+FF0B ; NFKC_SCF; 002B
+FF0C ; NFKC_SCF; 002C
+FF0D ; NFKC_SCF; 002D
+FF0E ; NFKC_SCF; 002E
+FF0F ; NFKC_SCF; 002F
+FF10 ; NFKC_SCF; 0030
+FF11 ; NFKC_SCF; 0031
+FF12 ; NFKC_SCF; 0032
+FF13 ; NFKC_SCF; 0033
+FF14 ; NFKC_SCF; 0034
+FF15 ; NFKC_SCF; 0035
+FF16 ; NFKC_SCF; 0036
+FF17 ; NFKC_SCF; 0037
+FF18 ; NFKC_SCF; 0038
+FF19 ; NFKC_SCF; 0039
+FF1A ; NFKC_SCF; 003A
+FF1B ; NFKC_SCF; 003B
+FF1C ; NFKC_SCF; 003C
+FF1D ; NFKC_SCF; 003D
+FF1E ; NFKC_SCF; 003E
+FF1F ; NFKC_SCF; 003F
+FF20 ; NFKC_SCF; 0040
+FF21 ; NFKC_SCF; 0061
+FF22 ; NFKC_SCF; 0062
+FF23 ; NFKC_SCF; 0063
+FF24 ; NFKC_SCF; 0064
+FF25 ; NFKC_SCF; 0065
+FF26 ; NFKC_SCF; 0066
+FF27 ; NFKC_SCF; 0067
+FF28 ; NFKC_SCF; 0068
+FF29 ; NFKC_SCF; 0069
+FF2A ; NFKC_SCF; 006A
+FF2B ; NFKC_SCF; 006B
+FF2C ; NFKC_SCF; 006C
+FF2D ; NFKC_SCF; 006D
+FF2E ; NFKC_SCF; 006E
+FF2F ; NFKC_SCF; 006F
+FF30 ; NFKC_SCF; 0070
+FF31 ; NFKC_SCF; 0071
+FF32 ; NFKC_SCF; 0072
+FF33 ; NFKC_SCF; 0073
+FF34 ; NFKC_SCF; 0074
+FF35 ; NFKC_SCF; 0075
+FF36 ; NFKC_SCF; 0076
+FF37 ; NFKC_SCF; 0077
+FF38 ; NFKC_SCF; 0078
+FF39 ; NFKC_SCF; 0079
+FF3A ; NFKC_SCF; 007A
+FF3B ; NFKC_SCF; 005B
+FF3C ; NFKC_SCF; 005C
+FF3D ; NFKC_SCF; 005D
+FF3E ; NFKC_SCF; 005E
+FF3F ; NFKC_SCF; 005F
+FF40 ; NFKC_SCF; 0060
+FF41 ; NFKC_SCF; 0061
+FF42 ; NFKC_SCF; 0062
+FF43 ; NFKC_SCF; 0063
+FF44 ; NFKC_SCF; 0064
+FF45 ; NFKC_SCF; 0065
+FF46 ; NFKC_SCF; 0066
+FF47 ; NFKC_SCF; 0067
+FF48 ; NFKC_SCF; 0068
+FF49 ; NFKC_SCF; 0069
+FF4A ; NFKC_SCF; 006A
+FF4B ; NFKC_SCF; 006B
+FF4C ; NFKC_SCF; 006C
+FF4D ; NFKC_SCF; 006D
+FF4E ; NFKC_SCF; 006E
+FF4F ; NFKC_SCF; 006F
+FF50 ; NFKC_SCF; 0070
+FF51 ; NFKC_SCF; 0071
+FF52 ; NFKC_SCF; 0072
+FF53 ; NFKC_SCF; 0073
+FF54 ; NFKC_SCF; 0074
+FF55 ; NFKC_SCF; 0075
+FF56 ; NFKC_SCF; 0076
+FF57 ; NFKC_SCF; 0077
+FF58 ; NFKC_SCF; 0078
+FF59 ; NFKC_SCF; 0079
+FF5A ; NFKC_SCF; 007A
+FF5B ; NFKC_SCF; 007B
+FF5C ; NFKC_SCF; 007C
+FF5D ; NFKC_SCF; 007D
+FF5E ; NFKC_SCF; 007E
+FF5F ; NFKC_SCF; 2985
+FF60 ; NFKC_SCF; 2986
+FF61 ; NFKC_SCF; 3002
+FF62 ; NFKC_SCF; 300C
+FF63 ; NFKC_SCF; 300D
+FF64 ; NFKC_SCF; 3001
+FF65 ; NFKC_SCF; 30FB
+FF66 ; NFKC_SCF; 30F2
+FF67 ; NFKC_SCF; 30A1
+FF68 ; NFKC_SCF; 30A3
+FF69 ; NFKC_SCF; 30A5
+FF6A ; NFKC_SCF; 30A7
+FF6B ; NFKC_SCF; 30A9
+FF6C ; NFKC_SCF; 30E3
+FF6D ; NFKC_SCF; 30E5
+FF6E ; NFKC_SCF; 30E7
+FF6F ; NFKC_SCF; 30C3
+FF70 ; NFKC_SCF; 30FC
+FF71 ; NFKC_SCF; 30A2
+FF72 ; NFKC_SCF; 30A4
+FF73 ; NFKC_SCF; 30A6
+FF74 ; NFKC_SCF; 30A8
+FF75 ; NFKC_SCF; 30AA
+FF76 ; NFKC_SCF; 30AB
+FF77 ; NFKC_SCF; 30AD
+FF78 ; NFKC_SCF; 30AF
+FF79 ; NFKC_SCF; 30B1
+FF7A ; NFKC_SCF; 30B3
+FF7B ; NFKC_SCF; 30B5
+FF7C ; NFKC_SCF; 30B7
+FF7D ; NFKC_SCF; 30B9
+FF7E ; NFKC_SCF; 30BB
+FF7F ; NFKC_SCF; 30BD
+FF80 ; NFKC_SCF; 30BF
+FF81 ; NFKC_SCF; 30C1
+FF82 ; NFKC_SCF; 30C4
+FF83 ; NFKC_SCF; 30C6
+FF84 ; NFKC_SCF; 30C8
+FF85 ; NFKC_SCF; 30CA
+FF86 ; NFKC_SCF; 30CB
+FF87 ; NFKC_SCF; 30CC
+FF88 ; NFKC_SCF; 30CD
+FF89 ; NFKC_SCF; 30CE
+FF8A ; NFKC_SCF; 30CF
+FF8B ; NFKC_SCF; 30D2
+FF8C ; NFKC_SCF; 30D5
+FF8D ; NFKC_SCF; 30D8
+FF8E ; NFKC_SCF; 30DB
+FF8F ; NFKC_SCF; 30DE
+FF90 ; NFKC_SCF; 30DF
+FF91 ; NFKC_SCF; 30E0
+FF92 ; NFKC_SCF; 30E1
+FF93 ; NFKC_SCF; 30E2
+FF94 ; NFKC_SCF; 30E4
+FF95 ; NFKC_SCF; 30E6
+FF96 ; NFKC_SCF; 30E8
+FF97 ; NFKC_SCF; 30E9
+FF98 ; NFKC_SCF; 30EA
+FF99 ; NFKC_SCF; 30EB
+FF9A ; NFKC_SCF; 30EC
+FF9B ; NFKC_SCF; 30ED
+FF9C ; NFKC_SCF; 30EF
+FF9D ; NFKC_SCF; 30F3
+FF9E ; NFKC_SCF; 3099
+FF9F ; NFKC_SCF; 309A
+FFA0 ; NFKC_SCF;
+FFA1 ; NFKC_SCF; 1100
+FFA2 ; NFKC_SCF; 1101
+FFA3 ; NFKC_SCF; 11AA
+FFA4 ; NFKC_SCF; 1102
+FFA5 ; NFKC_SCF; 11AC
+FFA6 ; NFKC_SCF; 11AD
+FFA7 ; NFKC_SCF; 1103
+FFA8 ; NFKC_SCF; 1104
+FFA9 ; NFKC_SCF; 1105
+FFAA ; NFKC_SCF; 11B0
+FFAB ; NFKC_SCF; 11B1
+FFAC ; NFKC_SCF; 11B2
+FFAD ; NFKC_SCF; 11B3
+FFAE ; NFKC_SCF; 11B4
+FFAF ; NFKC_SCF; 11B5
+FFB0 ; NFKC_SCF; 111A
+FFB1 ; NFKC_SCF; 1106
+FFB2 ; NFKC_SCF; 1107
+FFB3 ; NFKC_SCF; 1108
+FFB4 ; NFKC_SCF; 1121
+FFB5 ; NFKC_SCF; 1109
+FFB6 ; NFKC_SCF; 110A
+FFB7 ; NFKC_SCF; 110B
+FFB8 ; NFKC_SCF; 110C
+FFB9 ; NFKC_SCF; 110D
+FFBA ; NFKC_SCF; 110E
+FFBB ; NFKC_SCF; 110F
+FFBC ; NFKC_SCF; 1110
+FFBD ; NFKC_SCF; 1111
+FFBE ; NFKC_SCF; 1112
+FFC2 ; NFKC_SCF; 1161
+FFC3 ; NFKC_SCF; 1162
+FFC4 ; NFKC_SCF; 1163
+FFC5 ; NFKC_SCF; 1164
+FFC6 ; NFKC_SCF; 1165
+FFC7 ; NFKC_SCF; 1166
+FFCA ; NFKC_SCF; 1167
+FFCB ; NFKC_SCF; 1168
+FFCC ; NFKC_SCF; 1169
+FFCD ; NFKC_SCF; 116A
+FFCE ; NFKC_SCF; 116B
+FFCF ; NFKC_SCF; 116C
+FFD2 ; NFKC_SCF; 116D
+FFD3 ; NFKC_SCF; 116E
+FFD4 ; NFKC_SCF; 116F
+FFD5 ; NFKC_SCF; 1170
+FFD6 ; NFKC_SCF; 1171
+FFD7 ; NFKC_SCF; 1172
+FFDA ; NFKC_SCF; 1173
+FFDB ; NFKC_SCF; 1174
+FFDC ; NFKC_SCF; 1175
+FFE0 ; NFKC_SCF; 00A2
+FFE1 ; NFKC_SCF; 00A3
+FFE2 ; NFKC_SCF; 00AC
+FFE3 ; NFKC_SCF; 0020 0304
+FFE4 ; NFKC_SCF; 00A6
+FFE5 ; NFKC_SCF; 00A5
+FFE6 ; NFKC_SCF; 20A9
+FFE8 ; NFKC_SCF; 2502
+FFE9 ; NFKC_SCF; 2190
+FFEA ; NFKC_SCF; 2191
+FFEB ; NFKC_SCF; 2192
+FFEC ; NFKC_SCF; 2193
+FFED ; NFKC_SCF; 25A0
+FFEE ; NFKC_SCF; 25CB
+FFF0..FFF8 ; NFKC_SCF;
+10400 ; NFKC_SCF; 10428
+10401 ; NFKC_SCF; 10429
+10402 ; NFKC_SCF; 1042A
+10403 ; NFKC_SCF; 1042B
+10404 ; NFKC_SCF; 1042C
+10405 ; NFKC_SCF; 1042D
+10406 ; NFKC_SCF; 1042E
+10407 ; NFKC_SCF; 1042F
+10408 ; NFKC_SCF; 10430
+10409 ; NFKC_SCF; 10431
+1040A ; NFKC_SCF; 10432
+1040B ; NFKC_SCF; 10433
+1040C ; NFKC_SCF; 10434
+1040D ; NFKC_SCF; 10435
+1040E ; NFKC_SCF; 10436
+1040F ; NFKC_SCF; 10437
+10410 ; NFKC_SCF; 10438
+10411 ; NFKC_SCF; 10439
+10412 ; NFKC_SCF; 1043A
+10413 ; NFKC_SCF; 1043B
+10414 ; NFKC_SCF; 1043C
+10415 ; NFKC_SCF; 1043D
+10416 ; NFKC_SCF; 1043E
+10417 ; NFKC_SCF; 1043F
+10418 ; NFKC_SCF; 10440
+10419 ; NFKC_SCF; 10441
+1041A ; NFKC_SCF; 10442
+1041B ; NFKC_SCF; 10443
+1041C ; NFKC_SCF; 10444
+1041D ; NFKC_SCF; 10445
+1041E ; NFKC_SCF; 10446
+1041F ; NFKC_SCF; 10447
+10420 ; NFKC_SCF; 10448
+10421 ; NFKC_SCF; 10449
+10422 ; NFKC_SCF; 1044A
+10423 ; NFKC_SCF; 1044B
+10424 ; NFKC_SCF; 1044C
+10425 ; NFKC_SCF; 1044D
+10426 ; NFKC_SCF; 1044E
+10427 ; NFKC_SCF; 1044F
+104B0 ; NFKC_SCF; 104D8
+104B1 ; NFKC_SCF; 104D9
+104B2 ; NFKC_SCF; 104DA
+104B3 ; NFKC_SCF; 104DB
+104B4 ; NFKC_SCF; 104DC
+104B5 ; NFKC_SCF; 104DD
+104B6 ; NFKC_SCF; 104DE
+104B7 ; NFKC_SCF; 104DF
+104B8 ; NFKC_SCF; 104E0
+104B9 ; NFKC_SCF; 104E1
+104BA ; NFKC_SCF; 104E2
+104BB ; NFKC_SCF; 104E3
+104BC ; NFKC_SCF; 104E4
+104BD ; NFKC_SCF; 104E5
+104BE ; NFKC_SCF; 104E6
+104BF ; NFKC_SCF; 104E7
+104C0 ; NFKC_SCF; 104E8
+104C1 ; NFKC_SCF; 104E9
+104C2 ; NFKC_SCF; 104EA
+104C3 ; NFKC_SCF; 104EB
+104C4 ; NFKC_SCF; 104EC
+104C5 ; NFKC_SCF; 104ED
+104C6 ; NFKC_SCF; 104EE
+104C7 ; NFKC_SCF; 104EF
+104C8 ; NFKC_SCF; 104F0
+104C9 ; NFKC_SCF; 104F1
+104CA ; NFKC_SCF; 104F2
+104CB ; NFKC_SCF; 104F3
+104CC ; NFKC_SCF; 104F4
+104CD ; NFKC_SCF; 104F5
+104CE ; NFKC_SCF; 104F6
+104CF ; NFKC_SCF; 104F7
+104D0 ; NFKC_SCF; 104F8
+104D1 ; NFKC_SCF; 104F9
+104D2 ; NFKC_SCF; 104FA
+104D3 ; NFKC_SCF; 104FB
+10570 ; NFKC_SCF; 10597
+10571 ; NFKC_SCF; 10598
+10572 ; NFKC_SCF; 10599
+10573 ; NFKC_SCF; 1059A
+10574 ; NFKC_SCF; 1059B
+10575 ; NFKC_SCF; 1059C
+10576 ; NFKC_SCF; 1059D
+10577 ; NFKC_SCF; 1059E
+10578 ; NFKC_SCF; 1059F
+10579 ; NFKC_SCF; 105A0
+1057A ; NFKC_SCF; 105A1
+1057C ; NFKC_SCF; 105A3
+1057D ; NFKC_SCF; 105A4
+1057E ; NFKC_SCF; 105A5
+1057F ; NFKC_SCF; 105A6
+10580 ; NFKC_SCF; 105A7
+10581 ; NFKC_SCF; 105A8
+10582 ; NFKC_SCF; 105A9
+10583 ; NFKC_SCF; 105AA
+10584 ; NFKC_SCF; 105AB
+10585 ; NFKC_SCF; 105AC
+10586 ; NFKC_SCF; 105AD
+10587 ; NFKC_SCF; 105AE
+10588 ; NFKC_SCF; 105AF
+10589 ; NFKC_SCF; 105B0
+1058A ; NFKC_SCF; 105B1
+1058C ; NFKC_SCF; 105B3
+1058D ; NFKC_SCF; 105B4
+1058E ; NFKC_SCF; 105B5
+1058F ; NFKC_SCF; 105B6
+10590 ; NFKC_SCF; 105B7
+10591 ; NFKC_SCF; 105B8
+10592 ; NFKC_SCF; 105B9
+10594 ; NFKC_SCF; 105BB
+10595 ; NFKC_SCF; 105BC
+10781 ; NFKC_SCF; 02D0
+10782 ; NFKC_SCF; 02D1
+10783 ; NFKC_SCF; 00E6
+10784 ; NFKC_SCF; 0299
+10785 ; NFKC_SCF; 0253
+10787 ; NFKC_SCF; 02A3
+10788 ; NFKC_SCF; AB66
+10789 ; NFKC_SCF; 02A5
+1078A ; NFKC_SCF; 02A4
+1078B ; NFKC_SCF; 0256
+1078C ; NFKC_SCF; 0257
+1078D ; NFKC_SCF; 1D91
+1078E ; NFKC_SCF; 0258
+1078F ; NFKC_SCF; 025E
+10790 ; NFKC_SCF; 02A9
+10791 ; NFKC_SCF; 0264
+10792 ; NFKC_SCF; 0262
+10793 ; NFKC_SCF; 0260
+10794 ; NFKC_SCF; 029B
+10795 ; NFKC_SCF; 0127
+10796 ; NFKC_SCF; 029C
+10797 ; NFKC_SCF; 0267
+10798 ; NFKC_SCF; 0284
+10799 ; NFKC_SCF; 02AA
+1079A ; NFKC_SCF; 02AB
+1079B ; NFKC_SCF; 026C
+1079C ; NFKC_SCF; 1DF04
+1079D ; NFKC_SCF; A78E
+1079E ; NFKC_SCF; 026E
+1079F ; NFKC_SCF; 1DF05
+107A0 ; NFKC_SCF; 028E
+107A1 ; NFKC_SCF; 1DF06
+107A2 ; NFKC_SCF; 00F8
+107A3 ; NFKC_SCF; 0276
+107A4 ; NFKC_SCF; 0277
+107A5 ; NFKC_SCF; 0071
+107A6 ; NFKC_SCF; 027A
+107A7 ; NFKC_SCF; 1DF08
+107A8 ; NFKC_SCF; 027D
+107A9 ; NFKC_SCF; 027E
+107AA ; NFKC_SCF; 0280
+107AB ; NFKC_SCF; 02A8
+107AC ; NFKC_SCF; 02A6
+107AD ; NFKC_SCF; AB67
+107AE ; NFKC_SCF; 02A7
+107AF ; NFKC_SCF; 0288
+107B0 ; NFKC_SCF; 2C71
+107B2 ; NFKC_SCF; 028F
+107B3 ; NFKC_SCF; 02A1
+107B4 ; NFKC_SCF; 02A2
+107B5 ; NFKC_SCF; 0298
+107B6 ; NFKC_SCF; 01C0
+107B7 ; NFKC_SCF; 01C1
+107B8 ; NFKC_SCF; 01C2
+107B9 ; NFKC_SCF; 1DF0A
+107BA ; NFKC_SCF; 1DF1E
+10C80 ; NFKC_SCF; 10CC0
+10C81 ; NFKC_SCF; 10CC1
+10C82 ; NFKC_SCF; 10CC2
+10C83 ; NFKC_SCF; 10CC3
+10C84 ; NFKC_SCF; 10CC4
+10C85 ; NFKC_SCF; 10CC5
+10C86 ; NFKC_SCF; 10CC6
+10C87 ; NFKC_SCF; 10CC7
+10C88 ; NFKC_SCF; 10CC8
+10C89 ; NFKC_SCF; 10CC9
+10C8A ; NFKC_SCF; 10CCA
+10C8B ; NFKC_SCF; 10CCB
+10C8C ; NFKC_SCF; 10CCC
+10C8D ; NFKC_SCF; 10CCD
+10C8E ; NFKC_SCF; 10CCE
+10C8F ; NFKC_SCF; 10CCF
+10C90 ; NFKC_SCF; 10CD0
+10C91 ; NFKC_SCF; 10CD1
+10C92 ; NFKC_SCF; 10CD2
+10C93 ; NFKC_SCF; 10CD3
+10C94 ; NFKC_SCF; 10CD4
+10C95 ; NFKC_SCF; 10CD5
+10C96 ; NFKC_SCF; 10CD6
+10C97 ; NFKC_SCF; 10CD7
+10C98 ; NFKC_SCF; 10CD8
+10C99 ; NFKC_SCF; 10CD9
+10C9A ; NFKC_SCF; 10CDA
+10C9B ; NFKC_SCF; 10CDB
+10C9C ; NFKC_SCF; 10CDC
+10C9D ; NFKC_SCF; 10CDD
+10C9E ; NFKC_SCF; 10CDE
+10C9F ; NFKC_SCF; 10CDF
+10CA0 ; NFKC_SCF; 10CE0
+10CA1 ; NFKC_SCF; 10CE1
+10CA2 ; NFKC_SCF; 10CE2
+10CA3 ; NFKC_SCF; 10CE3
+10CA4 ; NFKC_SCF; 10CE4
+10CA5 ; NFKC_SCF; 10CE5
+10CA6 ; NFKC_SCF; 10CE6
+10CA7 ; NFKC_SCF; 10CE7
+10CA8 ; NFKC_SCF; 10CE8
+10CA9 ; NFKC_SCF; 10CE9
+10CAA ; NFKC_SCF; 10CEA
+10CAB ; NFKC_SCF; 10CEB
+10CAC ; NFKC_SCF; 10CEC
+10CAD ; NFKC_SCF; 10CED
+10CAE ; NFKC_SCF; 10CEE
+10CAF ; NFKC_SCF; 10CEF
+10CB0 ; NFKC_SCF; 10CF0
+10CB1 ; NFKC_SCF; 10CF1
+10CB2 ; NFKC_SCF; 10CF2
+118A0 ; NFKC_SCF; 118C0
+118A1 ; NFKC_SCF; 118C1
+118A2 ; NFKC_SCF; 118C2
+118A3 ; NFKC_SCF; 118C3
+118A4 ; NFKC_SCF; 118C4
+118A5 ; NFKC_SCF; 118C5
+118A6 ; NFKC_SCF; 118C6
+118A7 ; NFKC_SCF; 118C7
+118A8 ; NFKC_SCF; 118C8
+118A9 ; NFKC_SCF; 118C9
+118AA ; NFKC_SCF; 118CA
+118AB ; NFKC_SCF; 118CB
+118AC ; NFKC_SCF; 118CC
+118AD ; NFKC_SCF; 118CD
+118AE ; NFKC_SCF; 118CE
+118AF ; NFKC_SCF; 118CF
+118B0 ; NFKC_SCF; 118D0
+118B1 ; NFKC_SCF; 118D1
+118B2 ; NFKC_SCF; 118D2
+118B3 ; NFKC_SCF; 118D3
+118B4 ; NFKC_SCF; 118D4
+118B5 ; NFKC_SCF; 118D5
+118B6 ; NFKC_SCF; 118D6
+118B7 ; NFKC_SCF; 118D7
+118B8 ; NFKC_SCF; 118D8
+118B9 ; NFKC_SCF; 118D9
+118BA ; NFKC_SCF; 118DA
+118BB ; NFKC_SCF; 118DB
+118BC ; NFKC_SCF; 118DC
+118BD ; NFKC_SCF; 118DD
+118BE ; NFKC_SCF; 118DE
+118BF ; NFKC_SCF; 118DF
+16E40 ; NFKC_SCF; 16E60
+16E41 ; NFKC_SCF; 16E61
+16E42 ; NFKC_SCF; 16E62
+16E43 ; NFKC_SCF; 16E63
+16E44 ; NFKC_SCF; 16E64
+16E45 ; NFKC_SCF; 16E65
+16E46 ; NFKC_SCF; 16E66
+16E47 ; NFKC_SCF; 16E67
+16E48 ; NFKC_SCF; 16E68
+16E49 ; NFKC_SCF; 16E69
+16E4A ; NFKC_SCF; 16E6A
+16E4B ; NFKC_SCF; 16E6B
+16E4C ; NFKC_SCF; 16E6C
+16E4D ; NFKC_SCF; 16E6D
+16E4E ; NFKC_SCF; 16E6E
+16E4F ; NFKC_SCF; 16E6F
+16E50 ; NFKC_SCF; 16E70
+16E51 ; NFKC_SCF; 16E71
+16E52 ; NFKC_SCF; 16E72
+16E53 ; NFKC_SCF; 16E73
+16E54 ; NFKC_SCF; 16E74
+16E55 ; NFKC_SCF; 16E75
+16E56 ; NFKC_SCF; 16E76
+16E57 ; NFKC_SCF; 16E77
+16E58 ; NFKC_SCF; 16E78
+16E59 ; NFKC_SCF; 16E79
+16E5A ; NFKC_SCF; 16E7A
+16E5B ; NFKC_SCF; 16E7B
+16E5C ; NFKC_SCF; 16E7C
+16E5D ; NFKC_SCF; 16E7D
+16E5E ; NFKC_SCF; 16E7E
+16E5F ; NFKC_SCF; 16E7F
+1BCA0..1BCA3 ; NFKC_SCF;
+1D15E ; NFKC_SCF; 1D157 1D165
+1D15F ; NFKC_SCF; 1D158 1D165
+1D160 ; NFKC_SCF; 1D158 1D165 1D16E
+1D161 ; NFKC_SCF; 1D158 1D165 1D16F
+1D162 ; NFKC_SCF; 1D158 1D165 1D170
+1D163 ; NFKC_SCF; 1D158 1D165 1D171
+1D164 ; NFKC_SCF; 1D158 1D165 1D172
+1D173..1D17A ; NFKC_SCF;
+1D1BB ; NFKC_SCF; 1D1B9 1D165
+1D1BC ; NFKC_SCF; 1D1BA 1D165
+1D1BD ; NFKC_SCF; 1D1B9 1D165 1D16E
+1D1BE ; NFKC_SCF; 1D1BA 1D165 1D16E
+1D1BF ; NFKC_SCF; 1D1B9 1D165 1D16F
+1D1C0 ; NFKC_SCF; 1D1BA 1D165 1D16F
+1D400 ; NFKC_SCF; 0061
+1D401 ; NFKC_SCF; 0062
+1D402 ; NFKC_SCF; 0063
+1D403 ; NFKC_SCF; 0064
+1D404 ; NFKC_SCF; 0065
+1D405 ; NFKC_SCF; 0066
+1D406 ; NFKC_SCF; 0067
+1D407 ; NFKC_SCF; 0068
+1D408 ; NFKC_SCF; 0069
+1D409 ; NFKC_SCF; 006A
+1D40A ; NFKC_SCF; 006B
+1D40B ; NFKC_SCF; 006C
+1D40C ; NFKC_SCF; 006D
+1D40D ; NFKC_SCF; 006E
+1D40E ; NFKC_SCF; 006F
+1D40F ; NFKC_SCF; 0070
+1D410 ; NFKC_SCF; 0071
+1D411 ; NFKC_SCF; 0072
+1D412 ; NFKC_SCF; 0073
+1D413 ; NFKC_SCF; 0074
+1D414 ; NFKC_SCF; 0075
+1D415 ; NFKC_SCF; 0076
+1D416 ; NFKC_SCF; 0077
+1D417 ; NFKC_SCF; 0078
+1D418 ; NFKC_SCF; 0079
+1D419 ; NFKC_SCF; 007A
+1D41A ; NFKC_SCF; 0061
+1D41B ; NFKC_SCF; 0062
+1D41C ; NFKC_SCF; 0063
+1D41D ; NFKC_SCF; 0064
+1D41E ; NFKC_SCF; 0065
+1D41F ; NFKC_SCF; 0066
+1D420 ; NFKC_SCF; 0067
+1D421 ; NFKC_SCF; 0068
+1D422 ; NFKC_SCF; 0069
+1D423 ; NFKC_SCF; 006A
+1D424 ; NFKC_SCF; 006B
+1D425 ; NFKC_SCF; 006C
+1D426 ; NFKC_SCF; 006D
+1D427 ; NFKC_SCF; 006E
+1D428 ; NFKC_SCF; 006F
+1D429 ; NFKC_SCF; 0070
+1D42A ; NFKC_SCF; 0071
+1D42B ; NFKC_SCF; 0072
+1D42C ; NFKC_SCF; 0073
+1D42D ; NFKC_SCF; 0074
+1D42E ; NFKC_SCF; 0075
+1D42F ; NFKC_SCF; 0076
+1D430 ; NFKC_SCF; 0077
+1D431 ; NFKC_SCF; 0078
+1D432 ; NFKC_SCF; 0079
+1D433 ; NFKC_SCF; 007A
+1D434 ; NFKC_SCF; 0061
+1D435 ; NFKC_SCF; 0062
+1D436 ; NFKC_SCF; 0063
+1D437 ; NFKC_SCF; 0064
+1D438 ; NFKC_SCF; 0065
+1D439 ; NFKC_SCF; 0066
+1D43A ; NFKC_SCF; 0067
+1D43B ; NFKC_SCF; 0068
+1D43C ; NFKC_SCF; 0069
+1D43D ; NFKC_SCF; 006A
+1D43E ; NFKC_SCF; 006B
+1D43F ; NFKC_SCF; 006C
+1D440 ; NFKC_SCF; 006D
+1D441 ; NFKC_SCF; 006E
+1D442 ; NFKC_SCF; 006F
+1D443 ; NFKC_SCF; 0070
+1D444 ; NFKC_SCF; 0071
+1D445 ; NFKC_SCF; 0072
+1D446 ; NFKC_SCF; 0073
+1D447 ; NFKC_SCF; 0074
+1D448 ; NFKC_SCF; 0075
+1D449 ; NFKC_SCF; 0076
+1D44A ; NFKC_SCF; 0077
+1D44B ; NFKC_SCF; 0078
+1D44C ; NFKC_SCF; 0079
+1D44D ; NFKC_SCF; 007A
+1D44E ; NFKC_SCF; 0061
+1D44F ; NFKC_SCF; 0062
+1D450 ; NFKC_SCF; 0063
+1D451 ; NFKC_SCF; 0064
+1D452 ; NFKC_SCF; 0065
+1D453 ; NFKC_SCF; 0066
+1D454 ; NFKC_SCF; 0067
+1D456 ; NFKC_SCF; 0069
+1D457 ; NFKC_SCF; 006A
+1D458 ; NFKC_SCF; 006B
+1D459 ; NFKC_SCF; 006C
+1D45A ; NFKC_SCF; 006D
+1D45B ; NFKC_SCF; 006E
+1D45C ; NFKC_SCF; 006F
+1D45D ; NFKC_SCF; 0070
+1D45E ; NFKC_SCF; 0071
+1D45F ; NFKC_SCF; 0072
+1D460 ; NFKC_SCF; 0073
+1D461 ; NFKC_SCF; 0074
+1D462 ; NFKC_SCF; 0075
+1D463 ; NFKC_SCF; 0076
+1D464 ; NFKC_SCF; 0077
+1D465 ; NFKC_SCF; 0078
+1D466 ; NFKC_SCF; 0079
+1D467 ; NFKC_SCF; 007A
+1D468 ; NFKC_SCF; 0061
+1D469 ; NFKC_SCF; 0062
+1D46A ; NFKC_SCF; 0063
+1D46B ; NFKC_SCF; 0064
+1D46C ; NFKC_SCF; 0065
+1D46D ; NFKC_SCF; 0066
+1D46E ; NFKC_SCF; 0067
+1D46F ; NFKC_SCF; 0068
+1D470 ; NFKC_SCF; 0069
+1D471 ; NFKC_SCF; 006A
+1D472 ; NFKC_SCF; 006B
+1D473 ; NFKC_SCF; 006C
+1D474 ; NFKC_SCF; 006D
+1D475 ; NFKC_SCF; 006E
+1D476 ; NFKC_SCF; 006F
+1D477 ; NFKC_SCF; 0070
+1D478 ; NFKC_SCF; 0071
+1D479 ; NFKC_SCF; 0072
+1D47A ; NFKC_SCF; 0073
+1D47B ; NFKC_SCF; 0074
+1D47C ; NFKC_SCF; 0075
+1D47D ; NFKC_SCF; 0076
+1D47E ; NFKC_SCF; 0077
+1D47F ; NFKC_SCF; 0078
+1D480 ; NFKC_SCF; 0079
+1D481 ; NFKC_SCF; 007A
+1D482 ; NFKC_SCF; 0061
+1D483 ; NFKC_SCF; 0062
+1D484 ; NFKC_SCF; 0063
+1D485 ; NFKC_SCF; 0064
+1D486 ; NFKC_SCF; 0065
+1D487 ; NFKC_SCF; 0066
+1D488 ; NFKC_SCF; 0067
+1D489 ; NFKC_SCF; 0068
+1D48A ; NFKC_SCF; 0069
+1D48B ; NFKC_SCF; 006A
+1D48C ; NFKC_SCF; 006B
+1D48D ; NFKC_SCF; 006C
+1D48E ; NFKC_SCF; 006D
+1D48F ; NFKC_SCF; 006E
+1D490 ; NFKC_SCF; 006F
+1D491 ; NFKC_SCF; 0070
+1D492 ; NFKC_SCF; 0071
+1D493 ; NFKC_SCF; 0072
+1D494 ; NFKC_SCF; 0073
+1D495 ; NFKC_SCF; 0074
+1D496 ; NFKC_SCF; 0075
+1D497 ; NFKC_SCF; 0076
+1D498 ; NFKC_SCF; 0077
+1D499 ; NFKC_SCF; 0078
+1D49A ; NFKC_SCF; 0079
+1D49B ; NFKC_SCF; 007A
+1D49C ; NFKC_SCF; 0061
+1D49E ; NFKC_SCF; 0063
+1D49F ; NFKC_SCF; 0064
+1D4A2 ; NFKC_SCF; 0067
+1D4A5 ; NFKC_SCF; 006A
+1D4A6 ; NFKC_SCF; 006B
+1D4A9 ; NFKC_SCF; 006E
+1D4AA ; NFKC_SCF; 006F
+1D4AB ; NFKC_SCF; 0070
+1D4AC ; NFKC_SCF; 0071
+1D4AE ; NFKC_SCF; 0073
+1D4AF ; NFKC_SCF; 0074
+1D4B0 ; NFKC_SCF; 0075
+1D4B1 ; NFKC_SCF; 0076
+1D4B2 ; NFKC_SCF; 0077
+1D4B3 ; NFKC_SCF; 0078
+1D4B4 ; NFKC_SCF; 0079
+1D4B5 ; NFKC_SCF; 007A
+1D4B6 ; NFKC_SCF; 0061
+1D4B7 ; NFKC_SCF; 0062
+1D4B8 ; NFKC_SCF; 0063
+1D4B9 ; NFKC_SCF; 0064
+1D4BB ; NFKC_SCF; 0066
+1D4BD ; NFKC_SCF; 0068
+1D4BE ; NFKC_SCF; 0069
+1D4BF ; NFKC_SCF; 006A
+1D4C0 ; NFKC_SCF; 006B
+1D4C1 ; NFKC_SCF; 006C
+1D4C2 ; NFKC_SCF; 006D
+1D4C3 ; NFKC_SCF; 006E
+1D4C5 ; NFKC_SCF; 0070
+1D4C6 ; NFKC_SCF; 0071
+1D4C7 ; NFKC_SCF; 0072
+1D4C8 ; NFKC_SCF; 0073
+1D4C9 ; NFKC_SCF; 0074
+1D4CA ; NFKC_SCF; 0075
+1D4CB ; NFKC_SCF; 0076
+1D4CC ; NFKC_SCF; 0077
+1D4CD ; NFKC_SCF; 0078
+1D4CE ; NFKC_SCF; 0079
+1D4CF ; NFKC_SCF; 007A
+1D4D0 ; NFKC_SCF; 0061
+1D4D1 ; NFKC_SCF; 0062
+1D4D2 ; NFKC_SCF; 0063
+1D4D3 ; NFKC_SCF; 0064
+1D4D4 ; NFKC_SCF; 0065
+1D4D5 ; NFKC_SCF; 0066
+1D4D6 ; NFKC_SCF; 0067
+1D4D7 ; NFKC_SCF; 0068
+1D4D8 ; NFKC_SCF; 0069
+1D4D9 ; NFKC_SCF; 006A
+1D4DA ; NFKC_SCF; 006B
+1D4DB ; NFKC_SCF; 006C
+1D4DC ; NFKC_SCF; 006D
+1D4DD ; NFKC_SCF; 006E
+1D4DE ; NFKC_SCF; 006F
+1D4DF ; NFKC_SCF; 0070
+1D4E0 ; NFKC_SCF; 0071
+1D4E1 ; NFKC_SCF; 0072
+1D4E2 ; NFKC_SCF; 0073
+1D4E3 ; NFKC_SCF; 0074
+1D4E4 ; NFKC_SCF; 0075
+1D4E5 ; NFKC_SCF; 0076
+1D4E6 ; NFKC_SCF; 0077
+1D4E7 ; NFKC_SCF; 0078
+1D4E8 ; NFKC_SCF; 0079
+1D4E9 ; NFKC_SCF; 007A
+1D4EA ; NFKC_SCF; 0061
+1D4EB ; NFKC_SCF; 0062
+1D4EC ; NFKC_SCF; 0063
+1D4ED ; NFKC_SCF; 0064
+1D4EE ; NFKC_SCF; 0065
+1D4EF ; NFKC_SCF; 0066
+1D4F0 ; NFKC_SCF; 0067
+1D4F1 ; NFKC_SCF; 0068
+1D4F2 ; NFKC_SCF; 0069
+1D4F3 ; NFKC_SCF; 006A
+1D4F4 ; NFKC_SCF; 006B
+1D4F5 ; NFKC_SCF; 006C
+1D4F6 ; NFKC_SCF; 006D
+1D4F7 ; NFKC_SCF; 006E
+1D4F8 ; NFKC_SCF; 006F
+1D4F9 ; NFKC_SCF; 0070
+1D4FA ; NFKC_SCF; 0071
+1D4FB ; NFKC_SCF; 0072
+1D4FC ; NFKC_SCF; 0073
+1D4FD ; NFKC_SCF; 0074
+1D4FE ; NFKC_SCF; 0075
+1D4FF ; NFKC_SCF; 0076
+1D500 ; NFKC_SCF; 0077
+1D501 ; NFKC_SCF; 0078
+1D502 ; NFKC_SCF; 0079
+1D503 ; NFKC_SCF; 007A
+1D504 ; NFKC_SCF; 0061
+1D505 ; NFKC_SCF; 0062
+1D507 ; NFKC_SCF; 0064
+1D508 ; NFKC_SCF; 0065
+1D509 ; NFKC_SCF; 0066
+1D50A ; NFKC_SCF; 0067
+1D50D ; NFKC_SCF; 006A
+1D50E ; NFKC_SCF; 006B
+1D50F ; NFKC_SCF; 006C
+1D510 ; NFKC_SCF; 006D
+1D511 ; NFKC_SCF; 006E
+1D512 ; NFKC_SCF; 006F
+1D513 ; NFKC_SCF; 0070
+1D514 ; NFKC_SCF; 0071
+1D516 ; NFKC_SCF; 0073
+1D517 ; NFKC_SCF; 0074
+1D518 ; NFKC_SCF; 0075
+1D519 ; NFKC_SCF; 0076
+1D51A ; NFKC_SCF; 0077
+1D51B ; NFKC_SCF; 0078
+1D51C ; NFKC_SCF; 0079
+1D51E ; NFKC_SCF; 0061
+1D51F ; NFKC_SCF; 0062
+1D520 ; NFKC_SCF; 0063
+1D521 ; NFKC_SCF; 0064
+1D522 ; NFKC_SCF; 0065
+1D523 ; NFKC_SCF; 0066
+1D524 ; NFKC_SCF; 0067
+1D525 ; NFKC_SCF; 0068
+1D526 ; NFKC_SCF; 0069
+1D527 ; NFKC_SCF; 006A
+1D528 ; NFKC_SCF; 006B
+1D529 ; NFKC_SCF; 006C
+1D52A ; NFKC_SCF; 006D
+1D52B ; NFKC_SCF; 006E
+1D52C ; NFKC_SCF; 006F
+1D52D ; NFKC_SCF; 0070
+1D52E ; NFKC_SCF; 0071
+1D52F ; NFKC_SCF; 0072
+1D530 ; NFKC_SCF; 0073
+1D531 ; NFKC_SCF; 0074
+1D532 ; NFKC_SCF; 0075
+1D533 ; NFKC_SCF; 0076
+1D534 ; NFKC_SCF; 0077
+1D535 ; NFKC_SCF; 0078
+1D536 ; NFKC_SCF; 0079
+1D537 ; NFKC_SCF; 007A
+1D538 ; NFKC_SCF; 0061
+1D539 ; NFKC_SCF; 0062
+1D53B ; NFKC_SCF; 0064
+1D53C ; NFKC_SCF; 0065
+1D53D ; NFKC_SCF; 0066
+1D53E ; NFKC_SCF; 0067
+1D540 ; NFKC_SCF; 0069
+1D541 ; NFKC_SCF; 006A
+1D542 ; NFKC_SCF; 006B
+1D543 ; NFKC_SCF; 006C
+1D544 ; NFKC_SCF; 006D
+1D546 ; NFKC_SCF; 006F
+1D54A ; NFKC_SCF; 0073
+1D54B ; NFKC_SCF; 0074
+1D54C ; NFKC_SCF; 0075
+1D54D ; NFKC_SCF; 0076
+1D54E ; NFKC_SCF; 0077
+1D54F ; NFKC_SCF; 0078
+1D550 ; NFKC_SCF; 0079
+1D552 ; NFKC_SCF; 0061
+1D553 ; NFKC_SCF; 0062
+1D554 ; NFKC_SCF; 0063
+1D555 ; NFKC_SCF; 0064
+1D556 ; NFKC_SCF; 0065
+1D557 ; NFKC_SCF; 0066
+1D558 ; NFKC_SCF; 0067
+1D559 ; NFKC_SCF; 0068
+1D55A ; NFKC_SCF; 0069
+1D55B ; NFKC_SCF; 006A
+1D55C ; NFKC_SCF; 006B
+1D55D ; NFKC_SCF; 006C
+1D55E ; NFKC_SCF; 006D
+1D55F ; NFKC_SCF; 006E
+1D560 ; NFKC_SCF; 006F
+1D561 ; NFKC_SCF; 0070
+1D562 ; NFKC_SCF; 0071
+1D563 ; NFKC_SCF; 0072
+1D564 ; NFKC_SCF; 0073
+1D565 ; NFKC_SCF; 0074
+1D566 ; NFKC_SCF; 0075
+1D567 ; NFKC_SCF; 0076
+1D568 ; NFKC_SCF; 0077
+1D569 ; NFKC_SCF; 0078
+1D56A ; NFKC_SCF; 0079
+1D56B ; NFKC_SCF; 007A
+1D56C ; NFKC_SCF; 0061
+1D56D ; NFKC_SCF; 0062
+1D56E ; NFKC_SCF; 0063
+1D56F ; NFKC_SCF; 0064
+1D570 ; NFKC_SCF; 0065
+1D571 ; NFKC_SCF; 0066
+1D572 ; NFKC_SCF; 0067
+1D573 ; NFKC_SCF; 0068
+1D574 ; NFKC_SCF; 0069
+1D575 ; NFKC_SCF; 006A
+1D576 ; NFKC_SCF; 006B
+1D577 ; NFKC_SCF; 006C
+1D578 ; NFKC_SCF; 006D
+1D579 ; NFKC_SCF; 006E
+1D57A ; NFKC_SCF; 006F
+1D57B ; NFKC_SCF; 0070
+1D57C ; NFKC_SCF; 0071
+1D57D ; NFKC_SCF; 0072
+1D57E ; NFKC_SCF; 0073
+1D57F ; NFKC_SCF; 0074
+1D580 ; NFKC_SCF; 0075
+1D581 ; NFKC_SCF; 0076
+1D582 ; NFKC_SCF; 0077
+1D583 ; NFKC_SCF; 0078
+1D584 ; NFKC_SCF; 0079
+1D585 ; NFKC_SCF; 007A
+1D586 ; NFKC_SCF; 0061
+1D587 ; NFKC_SCF; 0062
+1D588 ; NFKC_SCF; 0063
+1D589 ; NFKC_SCF; 0064
+1D58A ; NFKC_SCF; 0065
+1D58B ; NFKC_SCF; 0066
+1D58C ; NFKC_SCF; 0067
+1D58D ; NFKC_SCF; 0068
+1D58E ; NFKC_SCF; 0069
+1D58F ; NFKC_SCF; 006A
+1D590 ; NFKC_SCF; 006B
+1D591 ; NFKC_SCF; 006C
+1D592 ; NFKC_SCF; 006D
+1D593 ; NFKC_SCF; 006E
+1D594 ; NFKC_SCF; 006F
+1D595 ; NFKC_SCF; 0070
+1D596 ; NFKC_SCF; 0071
+1D597 ; NFKC_SCF; 0072
+1D598 ; NFKC_SCF; 0073
+1D599 ; NFKC_SCF; 0074
+1D59A ; NFKC_SCF; 0075
+1D59B ; NFKC_SCF; 0076
+1D59C ; NFKC_SCF; 0077
+1D59D ; NFKC_SCF; 0078
+1D59E ; NFKC_SCF; 0079
+1D59F ; NFKC_SCF; 007A
+1D5A0 ; NFKC_SCF; 0061
+1D5A1 ; NFKC_SCF; 0062
+1D5A2 ; NFKC_SCF; 0063
+1D5A3 ; NFKC_SCF; 0064
+1D5A4 ; NFKC_SCF; 0065
+1D5A5 ; NFKC_SCF; 0066
+1D5A6 ; NFKC_SCF; 0067
+1D5A7 ; NFKC_SCF; 0068
+1D5A8 ; NFKC_SCF; 0069
+1D5A9 ; NFKC_SCF; 006A
+1D5AA ; NFKC_SCF; 006B
+1D5AB ; NFKC_SCF; 006C
+1D5AC ; NFKC_SCF; 006D
+1D5AD ; NFKC_SCF; 006E
+1D5AE ; NFKC_SCF; 006F
+1D5AF ; NFKC_SCF; 0070
+1D5B0 ; NFKC_SCF; 0071
+1D5B1 ; NFKC_SCF; 0072
+1D5B2 ; NFKC_SCF; 0073
+1D5B3 ; NFKC_SCF; 0074
+1D5B4 ; NFKC_SCF; 0075
+1D5B5 ; NFKC_SCF; 0076
+1D5B6 ; NFKC_SCF; 0077
+1D5B7 ; NFKC_SCF; 0078
+1D5B8 ; NFKC_SCF; 0079
+1D5B9 ; NFKC_SCF; 007A
+1D5BA ; NFKC_SCF; 0061
+1D5BB ; NFKC_SCF; 0062
+1D5BC ; NFKC_SCF; 0063
+1D5BD ; NFKC_SCF; 0064
+1D5BE ; NFKC_SCF; 0065
+1D5BF ; NFKC_SCF; 0066
+1D5C0 ; NFKC_SCF; 0067
+1D5C1 ; NFKC_SCF; 0068
+1D5C2 ; NFKC_SCF; 0069
+1D5C3 ; NFKC_SCF; 006A
+1D5C4 ; NFKC_SCF; 006B
+1D5C5 ; NFKC_SCF; 006C
+1D5C6 ; NFKC_SCF; 006D
+1D5C7 ; NFKC_SCF; 006E
+1D5C8 ; NFKC_SCF; 006F
+1D5C9 ; NFKC_SCF; 0070
+1D5CA ; NFKC_SCF; 0071
+1D5CB ; NFKC_SCF; 0072
+1D5CC ; NFKC_SCF; 0073
+1D5CD ; NFKC_SCF; 0074
+1D5CE ; NFKC_SCF; 0075
+1D5CF ; NFKC_SCF; 0076
+1D5D0 ; NFKC_SCF; 0077
+1D5D1 ; NFKC_SCF; 0078
+1D5D2 ; NFKC_SCF; 0079
+1D5D3 ; NFKC_SCF; 007A
+1D5D4 ; NFKC_SCF; 0061
+1D5D5 ; NFKC_SCF; 0062
+1D5D6 ; NFKC_SCF; 0063
+1D5D7 ; NFKC_SCF; 0064
+1D5D8 ; NFKC_SCF; 0065
+1D5D9 ; NFKC_SCF; 0066
+1D5DA ; NFKC_SCF; 0067
+1D5DB ; NFKC_SCF; 0068
+1D5DC ; NFKC_SCF; 0069
+1D5DD ; NFKC_SCF; 006A
+1D5DE ; NFKC_SCF; 006B
+1D5DF ; NFKC_SCF; 006C
+1D5E0 ; NFKC_SCF; 006D
+1D5E1 ; NFKC_SCF; 006E
+1D5E2 ; NFKC_SCF; 006F
+1D5E3 ; NFKC_SCF; 0070
+1D5E4 ; NFKC_SCF; 0071
+1D5E5 ; NFKC_SCF; 0072
+1D5E6 ; NFKC_SCF; 0073
+1D5E7 ; NFKC_SCF; 0074
+1D5E8 ; NFKC_SCF; 0075
+1D5E9 ; NFKC_SCF; 0076
+1D5EA ; NFKC_SCF; 0077
+1D5EB ; NFKC_SCF; 0078
+1D5EC ; NFKC_SCF; 0079
+1D5ED ; NFKC_SCF; 007A
+1D5EE ; NFKC_SCF; 0061
+1D5EF ; NFKC_SCF; 0062
+1D5F0 ; NFKC_SCF; 0063
+1D5F1 ; NFKC_SCF; 0064
+1D5F2 ; NFKC_SCF; 0065
+1D5F3 ; NFKC_SCF; 0066
+1D5F4 ; NFKC_SCF; 0067
+1D5F5 ; NFKC_SCF; 0068
+1D5F6 ; NFKC_SCF; 0069
+1D5F7 ; NFKC_SCF; 006A
+1D5F8 ; NFKC_SCF; 006B
+1D5F9 ; NFKC_SCF; 006C
+1D5FA ; NFKC_SCF; 006D
+1D5FB ; NFKC_SCF; 006E
+1D5FC ; NFKC_SCF; 006F
+1D5FD ; NFKC_SCF; 0070
+1D5FE ; NFKC_SCF; 0071
+1D5FF ; NFKC_SCF; 0072
+1D600 ; NFKC_SCF; 0073
+1D601 ; NFKC_SCF; 0074
+1D602 ; NFKC_SCF; 0075
+1D603 ; NFKC_SCF; 0076
+1D604 ; NFKC_SCF; 0077
+1D605 ; NFKC_SCF; 0078
+1D606 ; NFKC_SCF; 0079
+1D607 ; NFKC_SCF; 007A
+1D608 ; NFKC_SCF; 0061
+1D609 ; NFKC_SCF; 0062
+1D60A ; NFKC_SCF; 0063
+1D60B ; NFKC_SCF; 0064
+1D60C ; NFKC_SCF; 0065
+1D60D ; NFKC_SCF; 0066
+1D60E ; NFKC_SCF; 0067
+1D60F ; NFKC_SCF; 0068
+1D610 ; NFKC_SCF; 0069
+1D611 ; NFKC_SCF; 006A
+1D612 ; NFKC_SCF; 006B
+1D613 ; NFKC_SCF; 006C
+1D614 ; NFKC_SCF; 006D
+1D615 ; NFKC_SCF; 006E
+1D616 ; NFKC_SCF; 006F
+1D617 ; NFKC_SCF; 0070
+1D618 ; NFKC_SCF; 0071
+1D619 ; NFKC_SCF; 0072
+1D61A ; NFKC_SCF; 0073
+1D61B ; NFKC_SCF; 0074
+1D61C ; NFKC_SCF; 0075
+1D61D ; NFKC_SCF; 0076
+1D61E ; NFKC_SCF; 0077
+1D61F ; NFKC_SCF; 0078
+1D620 ; NFKC_SCF; 0079
+1D621 ; NFKC_SCF; 007A
+1D622 ; NFKC_SCF; 0061
+1D623 ; NFKC_SCF; 0062
+1D624 ; NFKC_SCF; 0063
+1D625 ; NFKC_SCF; 0064
+1D626 ; NFKC_SCF; 0065
+1D627 ; NFKC_SCF; 0066
+1D628 ; NFKC_SCF; 0067
+1D629 ; NFKC_SCF; 0068
+1D62A ; NFKC_SCF; 0069
+1D62B ; NFKC_SCF; 006A
+1D62C ; NFKC_SCF; 006B
+1D62D ; NFKC_SCF; 006C
+1D62E ; NFKC_SCF; 006D
+1D62F ; NFKC_SCF; 006E
+1D630 ; NFKC_SCF; 006F
+1D631 ; NFKC_SCF; 0070
+1D632 ; NFKC_SCF; 0071
+1D633 ; NFKC_SCF; 0072
+1D634 ; NFKC_SCF; 0073
+1D635 ; NFKC_SCF; 0074
+1D636 ; NFKC_SCF; 0075
+1D637 ; NFKC_SCF; 0076
+1D638 ; NFKC_SCF; 0077
+1D639 ; NFKC_SCF; 0078
+1D63A ; NFKC_SCF; 0079
+1D63B ; NFKC_SCF; 007A
+1D63C ; NFKC_SCF; 0061
+1D63D ; NFKC_SCF; 0062
+1D63E ; NFKC_SCF; 0063
+1D63F ; NFKC_SCF; 0064
+1D640 ; NFKC_SCF; 0065
+1D641 ; NFKC_SCF; 0066
+1D642 ; NFKC_SCF; 0067
+1D643 ; NFKC_SCF; 0068
+1D644 ; NFKC_SCF; 0069
+1D645 ; NFKC_SCF; 006A
+1D646 ; NFKC_SCF; 006B
+1D647 ; NFKC_SCF; 006C
+1D648 ; NFKC_SCF; 006D
+1D649 ; NFKC_SCF; 006E
+1D64A ; NFKC_SCF; 006F
+1D64B ; NFKC_SCF; 0070
+1D64C ; NFKC_SCF; 0071
+1D64D ; NFKC_SCF; 0072
+1D64E ; NFKC_SCF; 0073
+1D64F ; NFKC_SCF; 0074
+1D650 ; NFKC_SCF; 0075
+1D651 ; NFKC_SCF; 0076
+1D652 ; NFKC_SCF; 0077
+1D653 ; NFKC_SCF; 0078
+1D654 ; NFKC_SCF; 0079
+1D655 ; NFKC_SCF; 007A
+1D656 ; NFKC_SCF; 0061
+1D657 ; NFKC_SCF; 0062
+1D658 ; NFKC_SCF; 0063
+1D659 ; NFKC_SCF; 0064
+1D65A ; NFKC_SCF; 0065
+1D65B ; NFKC_SCF; 0066
+1D65C ; NFKC_SCF; 0067
+1D65D ; NFKC_SCF; 0068
+1D65E ; NFKC_SCF; 0069
+1D65F ; NFKC_SCF; 006A
+1D660 ; NFKC_SCF; 006B
+1D661 ; NFKC_SCF; 006C
+1D662 ; NFKC_SCF; 006D
+1D663 ; NFKC_SCF; 006E
+1D664 ; NFKC_SCF; 006F
+1D665 ; NFKC_SCF; 0070
+1D666 ; NFKC_SCF; 0071
+1D667 ; NFKC_SCF; 0072
+1D668 ; NFKC_SCF; 0073
+1D669 ; NFKC_SCF; 0074
+1D66A ; NFKC_SCF; 0075
+1D66B ; NFKC_SCF; 0076
+1D66C ; NFKC_SCF; 0077
+1D66D ; NFKC_SCF; 0078
+1D66E ; NFKC_SCF; 0079
+1D66F ; NFKC_SCF; 007A
+1D670 ; NFKC_SCF; 0061
+1D671 ; NFKC_SCF; 0062
+1D672 ; NFKC_SCF; 0063
+1D673 ; NFKC_SCF; 0064
+1D674 ; NFKC_SCF; 0065
+1D675 ; NFKC_SCF; 0066
+1D676 ; NFKC_SCF; 0067
+1D677 ; NFKC_SCF; 0068
+1D678 ; NFKC_SCF; 0069
+1D679 ; NFKC_SCF; 006A
+1D67A ; NFKC_SCF; 006B
+1D67B ; NFKC_SCF; 006C
+1D67C ; NFKC_SCF; 006D
+1D67D ; NFKC_SCF; 006E
+1D67E ; NFKC_SCF; 006F
+1D67F ; NFKC_SCF; 0070
+1D680 ; NFKC_SCF; 0071
+1D681 ; NFKC_SCF; 0072
+1D682 ; NFKC_SCF; 0073
+1D683 ; NFKC_SCF; 0074
+1D684 ; NFKC_SCF; 0075
+1D685 ; NFKC_SCF; 0076
+1D686 ; NFKC_SCF; 0077
+1D687 ; NFKC_SCF; 0078
+1D688 ; NFKC_SCF; 0079
+1D689 ; NFKC_SCF; 007A
+1D68A ; NFKC_SCF; 0061
+1D68B ; NFKC_SCF; 0062
+1D68C ; NFKC_SCF; 0063
+1D68D ; NFKC_SCF; 0064
+1D68E ; NFKC_SCF; 0065
+1D68F ; NFKC_SCF; 0066
+1D690 ; NFKC_SCF; 0067
+1D691 ; NFKC_SCF; 0068
+1D692 ; NFKC_SCF; 0069
+1D693 ; NFKC_SCF; 006A
+1D694 ; NFKC_SCF; 006B
+1D695 ; NFKC_SCF; 006C
+1D696 ; NFKC_SCF; 006D
+1D697 ; NFKC_SCF; 006E
+1D698 ; NFKC_SCF; 006F
+1D699 ; NFKC_SCF; 0070
+1D69A ; NFKC_SCF; 0071
+1D69B ; NFKC_SCF; 0072
+1D69C ; NFKC_SCF; 0073
+1D69D ; NFKC_SCF; 0074
+1D69E ; NFKC_SCF; 0075
+1D69F ; NFKC_SCF; 0076
+1D6A0 ; NFKC_SCF; 0077
+1D6A1 ; NFKC_SCF; 0078
+1D6A2 ; NFKC_SCF; 0079
+1D6A3 ; NFKC_SCF; 007A
+1D6A4 ; NFKC_SCF; 0131
+1D6A5 ; NFKC_SCF; 0237
+1D6A8 ; NFKC_SCF; 03B1
+1D6A9 ; NFKC_SCF; 03B2
+1D6AA ; NFKC_SCF; 03B3
+1D6AB ; NFKC_SCF; 03B4
+1D6AC ; NFKC_SCF; 03B5
+1D6AD ; NFKC_SCF; 03B6
+1D6AE ; NFKC_SCF; 03B7
+1D6AF ; NFKC_SCF; 03B8
+1D6B0 ; NFKC_SCF; 03B9
+1D6B1 ; NFKC_SCF; 03BA
+1D6B2 ; NFKC_SCF; 03BB
+1D6B3 ; NFKC_SCF; 03BC
+1D6B4 ; NFKC_SCF; 03BD
+1D6B5 ; NFKC_SCF; 03BE
+1D6B6 ; NFKC_SCF; 03BF
+1D6B7 ; NFKC_SCF; 03C0
+1D6B8 ; NFKC_SCF; 03C1
+1D6B9 ; NFKC_SCF; 03B8
+1D6BA ; NFKC_SCF; 03C3
+1D6BB ; NFKC_SCF; 03C4
+1D6BC ; NFKC_SCF; 03C5
+1D6BD ; NFKC_SCF; 03C6
+1D6BE ; NFKC_SCF; 03C7
+1D6BF ; NFKC_SCF; 03C8
+1D6C0 ; NFKC_SCF; 03C9
+1D6C1 ; NFKC_SCF; 2207
+1D6C2 ; NFKC_SCF; 03B1
+1D6C3 ; NFKC_SCF; 03B2
+1D6C4 ; NFKC_SCF; 03B3
+1D6C5 ; NFKC_SCF; 03B4
+1D6C6 ; NFKC_SCF; 03B5
+1D6C7 ; NFKC_SCF; 03B6
+1D6C8 ; NFKC_SCF; 03B7
+1D6C9 ; NFKC_SCF; 03B8
+1D6CA ; NFKC_SCF; 03B9
+1D6CB ; NFKC_SCF; 03BA
+1D6CC ; NFKC_SCF; 03BB
+1D6CD ; NFKC_SCF; 03BC
+1D6CE ; NFKC_SCF; 03BD
+1D6CF ; NFKC_SCF; 03BE
+1D6D0 ; NFKC_SCF; 03BF
+1D6D1 ; NFKC_SCF; 03C0
+1D6D2 ; NFKC_SCF; 03C1
+1D6D3..1D6D4 ; NFKC_SCF; 03C3
+1D6D5 ; NFKC_SCF; 03C4
+1D6D6 ; NFKC_SCF; 03C5
+1D6D7 ; NFKC_SCF; 03C6
+1D6D8 ; NFKC_SCF; 03C7
+1D6D9 ; NFKC_SCF; 03C8
+1D6DA ; NFKC_SCF; 03C9
+1D6DB ; NFKC_SCF; 2202
+1D6DC ; NFKC_SCF; 03B5
+1D6DD ; NFKC_SCF; 03B8
+1D6DE ; NFKC_SCF; 03BA
+1D6DF ; NFKC_SCF; 03C6
+1D6E0 ; NFKC_SCF; 03C1
+1D6E1 ; NFKC_SCF; 03C0
+1D6E2 ; NFKC_SCF; 03B1
+1D6E3 ; NFKC_SCF; 03B2
+1D6E4 ; NFKC_SCF; 03B3
+1D6E5 ; NFKC_SCF; 03B4
+1D6E6 ; NFKC_SCF; 03B5
+1D6E7 ; NFKC_SCF; 03B6
+1D6E8 ; NFKC_SCF; 03B7
+1D6E9 ; NFKC_SCF; 03B8
+1D6EA ; NFKC_SCF; 03B9
+1D6EB ; NFKC_SCF; 03BA
+1D6EC ; NFKC_SCF; 03BB
+1D6ED ; NFKC_SCF; 03BC
+1D6EE ; NFKC_SCF; 03BD
+1D6EF ; NFKC_SCF; 03BE
+1D6F0 ; NFKC_SCF; 03BF
+1D6F1 ; NFKC_SCF; 03C0
+1D6F2 ; NFKC_SCF; 03C1
+1D6F3 ; NFKC_SCF; 03B8
+1D6F4 ; NFKC_SCF; 03C3
+1D6F5 ; NFKC_SCF; 03C4
+1D6F6 ; NFKC_SCF; 03C5
+1D6F7 ; NFKC_SCF; 03C6
+1D6F8 ; NFKC_SCF; 03C7
+1D6F9 ; NFKC_SCF; 03C8
+1D6FA ; NFKC_SCF; 03C9
+1D6FB ; NFKC_SCF; 2207
+1D6FC ; NFKC_SCF; 03B1
+1D6FD ; NFKC_SCF; 03B2
+1D6FE ; NFKC_SCF; 03B3
+1D6FF ; NFKC_SCF; 03B4
+1D700 ; NFKC_SCF; 03B5
+1D701 ; NFKC_SCF; 03B6
+1D702 ; NFKC_SCF; 03B7
+1D703 ; NFKC_SCF; 03B8
+1D704 ; NFKC_SCF; 03B9
+1D705 ; NFKC_SCF; 03BA
+1D706 ; NFKC_SCF; 03BB
+1D707 ; NFKC_SCF; 03BC
+1D708 ; NFKC_SCF; 03BD
+1D709 ; NFKC_SCF; 03BE
+1D70A ; NFKC_SCF; 03BF
+1D70B ; NFKC_SCF; 03C0
+1D70C ; NFKC_SCF; 03C1
+1D70D..1D70E ; NFKC_SCF; 03C3
+1D70F ; NFKC_SCF; 03C4
+1D710 ; NFKC_SCF; 03C5
+1D711 ; NFKC_SCF; 03C6
+1D712 ; NFKC_SCF; 03C7
+1D713 ; NFKC_SCF; 03C8
+1D714 ; NFKC_SCF; 03C9
+1D715 ; NFKC_SCF; 2202
+1D716 ; NFKC_SCF; 03B5
+1D717 ; NFKC_SCF; 03B8
+1D718 ; NFKC_SCF; 03BA
+1D719 ; NFKC_SCF; 03C6
+1D71A ; NFKC_SCF; 03C1
+1D71B ; NFKC_SCF; 03C0
+1D71C ; NFKC_SCF; 03B1
+1D71D ; NFKC_SCF; 03B2
+1D71E ; NFKC_SCF; 03B3
+1D71F ; NFKC_SCF; 03B4
+1D720 ; NFKC_SCF; 03B5
+1D721 ; NFKC_SCF; 03B6
+1D722 ; NFKC_SCF; 03B7
+1D723 ; NFKC_SCF; 03B8
+1D724 ; NFKC_SCF; 03B9
+1D725 ; NFKC_SCF; 03BA
+1D726 ; NFKC_SCF; 03BB
+1D727 ; NFKC_SCF; 03BC
+1D728 ; NFKC_SCF; 03BD
+1D729 ; NFKC_SCF; 03BE
+1D72A ; NFKC_SCF; 03BF
+1D72B ; NFKC_SCF; 03C0
+1D72C ; NFKC_SCF; 03C1
+1D72D ; NFKC_SCF; 03B8
+1D72E ; NFKC_SCF; 03C3
+1D72F ; NFKC_SCF; 03C4
+1D730 ; NFKC_SCF; 03C5
+1D731 ; NFKC_SCF; 03C6
+1D732 ; NFKC_SCF; 03C7
+1D733 ; NFKC_SCF; 03C8
+1D734 ; NFKC_SCF; 03C9
+1D735 ; NFKC_SCF; 2207
+1D736 ; NFKC_SCF; 03B1
+1D737 ; NFKC_SCF; 03B2
+1D738 ; NFKC_SCF; 03B3
+1D739 ; NFKC_SCF; 03B4
+1D73A ; NFKC_SCF; 03B5
+1D73B ; NFKC_SCF; 03B6
+1D73C ; NFKC_SCF; 03B7
+1D73D ; NFKC_SCF; 03B8
+1D73E ; NFKC_SCF; 03B9
+1D73F ; NFKC_SCF; 03BA
+1D740 ; NFKC_SCF; 03BB
+1D741 ; NFKC_SCF; 03BC
+1D742 ; NFKC_SCF; 03BD
+1D743 ; NFKC_SCF; 03BE
+1D744 ; NFKC_SCF; 03BF
+1D745 ; NFKC_SCF; 03C0
+1D746 ; NFKC_SCF; 03C1
+1D747..1D748 ; NFKC_SCF; 03C3
+1D749 ; NFKC_SCF; 03C4
+1D74A ; NFKC_SCF; 03C5
+1D74B ; NFKC_SCF; 03C6
+1D74C ; NFKC_SCF; 03C7
+1D74D ; NFKC_SCF; 03C8
+1D74E ; NFKC_SCF; 03C9
+1D74F ; NFKC_SCF; 2202
+1D750 ; NFKC_SCF; 03B5
+1D751 ; NFKC_SCF; 03B8
+1D752 ; NFKC_SCF; 03BA
+1D753 ; NFKC_SCF; 03C6
+1D754 ; NFKC_SCF; 03C1
+1D755 ; NFKC_SCF; 03C0
+1D756 ; NFKC_SCF; 03B1
+1D757 ; NFKC_SCF; 03B2
+1D758 ; NFKC_SCF; 03B3
+1D759 ; NFKC_SCF; 03B4
+1D75A ; NFKC_SCF; 03B5
+1D75B ; NFKC_SCF; 03B6
+1D75C ; NFKC_SCF; 03B7
+1D75D ; NFKC_SCF; 03B8
+1D75E ; NFKC_SCF; 03B9
+1D75F ; NFKC_SCF; 03BA
+1D760 ; NFKC_SCF; 03BB
+1D761 ; NFKC_SCF; 03BC
+1D762 ; NFKC_SCF; 03BD
+1D763 ; NFKC_SCF; 03BE
+1D764 ; NFKC_SCF; 03BF
+1D765 ; NFKC_SCF; 03C0
+1D766 ; NFKC_SCF; 03C1
+1D767 ; NFKC_SCF; 03B8
+1D768 ; NFKC_SCF; 03C3
+1D769 ; NFKC_SCF; 03C4
+1D76A ; NFKC_SCF; 03C5
+1D76B ; NFKC_SCF; 03C6
+1D76C ; NFKC_SCF; 03C7
+1D76D ; NFKC_SCF; 03C8
+1D76E ; NFKC_SCF; 03C9
+1D76F ; NFKC_SCF; 2207
+1D770 ; NFKC_SCF; 03B1
+1D771 ; NFKC_SCF; 03B2
+1D772 ; NFKC_SCF; 03B3
+1D773 ; NFKC_SCF; 03B4
+1D774 ; NFKC_SCF; 03B5
+1D775 ; NFKC_SCF; 03B6
+1D776 ; NFKC_SCF; 03B7
+1D777 ; NFKC_SCF; 03B8
+1D778 ; NFKC_SCF; 03B9
+1D779 ; NFKC_SCF; 03BA
+1D77A ; NFKC_SCF; 03BB
+1D77B ; NFKC_SCF; 03BC
+1D77C ; NFKC_SCF; 03BD
+1D77D ; NFKC_SCF; 03BE
+1D77E ; NFKC_SCF; 03BF
+1D77F ; NFKC_SCF; 03C0
+1D780 ; NFKC_SCF; 03C1
+1D781..1D782 ; NFKC_SCF; 03C3
+1D783 ; NFKC_SCF; 03C4
+1D784 ; NFKC_SCF; 03C5
+1D785 ; NFKC_SCF; 03C6
+1D786 ; NFKC_SCF; 03C7
+1D787 ; NFKC_SCF; 03C8
+1D788 ; NFKC_SCF; 03C9
+1D789 ; NFKC_SCF; 2202
+1D78A ; NFKC_SCF; 03B5
+1D78B ; NFKC_SCF; 03B8
+1D78C ; NFKC_SCF; 03BA
+1D78D ; NFKC_SCF; 03C6
+1D78E ; NFKC_SCF; 03C1
+1D78F ; NFKC_SCF; 03C0
+1D790 ; NFKC_SCF; 03B1
+1D791 ; NFKC_SCF; 03B2
+1D792 ; NFKC_SCF; 03B3
+1D793 ; NFKC_SCF; 03B4
+1D794 ; NFKC_SCF; 03B5
+1D795 ; NFKC_SCF; 03B6
+1D796 ; NFKC_SCF; 03B7
+1D797 ; NFKC_SCF; 03B8
+1D798 ; NFKC_SCF; 03B9
+1D799 ; NFKC_SCF; 03BA
+1D79A ; NFKC_SCF; 03BB
+1D79B ; NFKC_SCF; 03BC
+1D79C ; NFKC_SCF; 03BD
+1D79D ; NFKC_SCF; 03BE
+1D79E ; NFKC_SCF; 03BF
+1D79F ; NFKC_SCF; 03C0
+1D7A0 ; NFKC_SCF; 03C1
+1D7A1 ; NFKC_SCF; 03B8
+1D7A2 ; NFKC_SCF; 03C3
+1D7A3 ; NFKC_SCF; 03C4
+1D7A4 ; NFKC_SCF; 03C5
+1D7A5 ; NFKC_SCF; 03C6
+1D7A6 ; NFKC_SCF; 03C7
+1D7A7 ; NFKC_SCF; 03C8
+1D7A8 ; NFKC_SCF; 03C9
+1D7A9 ; NFKC_SCF; 2207
+1D7AA ; NFKC_SCF; 03B1
+1D7AB ; NFKC_SCF; 03B2
+1D7AC ; NFKC_SCF; 03B3
+1D7AD ; NFKC_SCF; 03B4
+1D7AE ; NFKC_SCF; 03B5
+1D7AF ; NFKC_SCF; 03B6
+1D7B0 ; NFKC_SCF; 03B7
+1D7B1 ; NFKC_SCF; 03B8
+1D7B2 ; NFKC_SCF; 03B9
+1D7B3 ; NFKC_SCF; 03BA
+1D7B4 ; NFKC_SCF; 03BB
+1D7B5 ; NFKC_SCF; 03BC
+1D7B6 ; NFKC_SCF; 03BD
+1D7B7 ; NFKC_SCF; 03BE
+1D7B8 ; NFKC_SCF; 03BF
+1D7B9 ; NFKC_SCF; 03C0
+1D7BA ; NFKC_SCF; 03C1
+1D7BB..1D7BC ; NFKC_SCF; 03C3
+1D7BD ; NFKC_SCF; 03C4
+1D7BE ; NFKC_SCF; 03C5
+1D7BF ; NFKC_SCF; 03C6
+1D7C0 ; NFKC_SCF; 03C7
+1D7C1 ; NFKC_SCF; 03C8
+1D7C2 ; NFKC_SCF; 03C9
+1D7C3 ; NFKC_SCF; 2202
+1D7C4 ; NFKC_SCF; 03B5
+1D7C5 ; NFKC_SCF; 03B8
+1D7C6 ; NFKC_SCF; 03BA
+1D7C7 ; NFKC_SCF; 03C6
+1D7C8 ; NFKC_SCF; 03C1
+1D7C9 ; NFKC_SCF; 03C0
+1D7CA..1D7CB ; NFKC_SCF; 03DD
+1D7CE ; NFKC_SCF; 0030
+1D7CF ; NFKC_SCF; 0031
+1D7D0 ; NFKC_SCF; 0032
+1D7D1 ; NFKC_SCF; 0033
+1D7D2 ; NFKC_SCF; 0034
+1D7D3 ; NFKC_SCF; 0035
+1D7D4 ; NFKC_SCF; 0036
+1D7D5 ; NFKC_SCF; 0037
+1D7D6 ; NFKC_SCF; 0038
+1D7D7 ; NFKC_SCF; 0039
+1D7D8 ; NFKC_SCF; 0030
+1D7D9 ; NFKC_SCF; 0031
+1D7DA ; NFKC_SCF; 0032
+1D7DB ; NFKC_SCF; 0033
+1D7DC ; NFKC_SCF; 0034
+1D7DD ; NFKC_SCF; 0035
+1D7DE ; NFKC_SCF; 0036
+1D7DF ; NFKC_SCF; 0037
+1D7E0 ; NFKC_SCF; 0038
+1D7E1 ; NFKC_SCF; 0039
+1D7E2 ; NFKC_SCF; 0030
+1D7E3 ; NFKC_SCF; 0031
+1D7E4 ; NFKC_SCF; 0032
+1D7E5 ; NFKC_SCF; 0033
+1D7E6 ; NFKC_SCF; 0034
+1D7E7 ; NFKC_SCF; 0035
+1D7E8 ; NFKC_SCF; 0036
+1D7E9 ; NFKC_SCF; 0037
+1D7EA ; NFKC_SCF; 0038
+1D7EB ; NFKC_SCF; 0039
+1D7EC ; NFKC_SCF; 0030
+1D7ED ; NFKC_SCF; 0031
+1D7EE ; NFKC_SCF; 0032
+1D7EF ; NFKC_SCF; 0033
+1D7F0 ; NFKC_SCF; 0034
+1D7F1 ; NFKC_SCF; 0035
+1D7F2 ; NFKC_SCF; 0036
+1D7F3 ; NFKC_SCF; 0037
+1D7F4 ; NFKC_SCF; 0038
+1D7F5 ; NFKC_SCF; 0039
+1D7F6 ; NFKC_SCF; 0030
+1D7F7 ; NFKC_SCF; 0031
+1D7F8 ; NFKC_SCF; 0032
+1D7F9 ; NFKC_SCF; 0033
+1D7FA ; NFKC_SCF; 0034
+1D7FB ; NFKC_SCF; 0035
+1D7FC ; NFKC_SCF; 0036
+1D7FD ; NFKC_SCF; 0037
+1D7FE ; NFKC_SCF; 0038
+1D7FF ; NFKC_SCF; 0039
+1E030 ; NFKC_SCF; 0430
+1E031 ; NFKC_SCF; 0431
+1E032 ; NFKC_SCF; 0432
+1E033 ; NFKC_SCF; 0433
+1E034 ; NFKC_SCF; 0434
+1E035 ; NFKC_SCF; 0435
+1E036 ; NFKC_SCF; 0436
+1E037 ; NFKC_SCF; 0437
+1E038 ; NFKC_SCF; 0438
+1E039 ; NFKC_SCF; 043A
+1E03A ; NFKC_SCF; 043B
+1E03B ; NFKC_SCF; 043C
+1E03C ; NFKC_SCF; 043E
+1E03D ; NFKC_SCF; 043F
+1E03E ; NFKC_SCF; 0440
+1E03F ; NFKC_SCF; 0441
+1E040 ; NFKC_SCF; 0442
+1E041 ; NFKC_SCF; 0443
+1E042 ; NFKC_SCF; 0444
+1E043 ; NFKC_SCF; 0445
+1E044 ; NFKC_SCF; 0446
+1E045 ; NFKC_SCF; 0447
+1E046 ; NFKC_SCF; 0448
+1E047 ; NFKC_SCF; 044B
+1E048 ; NFKC_SCF; 044D
+1E049 ; NFKC_SCF; 044E
+1E04A ; NFKC_SCF; A689
+1E04B ; NFKC_SCF; 04D9
+1E04C ; NFKC_SCF; 0456
+1E04D ; NFKC_SCF; 0458
+1E04E ; NFKC_SCF; 04E9
+1E04F ; NFKC_SCF; 04AF
+1E050 ; NFKC_SCF; 04CF
+1E051 ; NFKC_SCF; 0430
+1E052 ; NFKC_SCF; 0431
+1E053 ; NFKC_SCF; 0432
+1E054 ; NFKC_SCF; 0433
+1E055 ; NFKC_SCF; 0434
+1E056 ; NFKC_SCF; 0435
+1E057 ; NFKC_SCF; 0436
+1E058 ; NFKC_SCF; 0437
+1E059 ; NFKC_SCF; 0438
+1E05A ; NFKC_SCF; 043A
+1E05B ; NFKC_SCF; 043B
+1E05C ; NFKC_SCF; 043E
+1E05D ; NFKC_SCF; 043F
+1E05E ; NFKC_SCF; 0441
+1E05F ; NFKC_SCF; 0443
+1E060 ; NFKC_SCF; 0444
+1E061 ; NFKC_SCF; 0445
+1E062 ; NFKC_SCF; 0446
+1E063 ; NFKC_SCF; 0447
+1E064 ; NFKC_SCF; 0448
+1E065 ; NFKC_SCF; 044A
+1E066 ; NFKC_SCF; 044B
+1E067 ; NFKC_SCF; 0491
+1E068 ; NFKC_SCF; 0456
+1E069 ; NFKC_SCF; 0455
+1E06A ; NFKC_SCF; 045F
+1E06B ; NFKC_SCF; 04AB
+1E06C ; NFKC_SCF; A651
+1E06D ; NFKC_SCF; 04B1
+1E900 ; NFKC_SCF; 1E922
+1E901 ; NFKC_SCF; 1E923
+1E902 ; NFKC_SCF; 1E924
+1E903 ; NFKC_SCF; 1E925
+1E904 ; NFKC_SCF; 1E926
+1E905 ; NFKC_SCF; 1E927
+1E906 ; NFKC_SCF; 1E928
+1E907 ; NFKC_SCF; 1E929
+1E908 ; NFKC_SCF; 1E92A
+1E909 ; NFKC_SCF; 1E92B
+1E90A ; NFKC_SCF; 1E92C
+1E90B ; NFKC_SCF; 1E92D
+1E90C ; NFKC_SCF; 1E92E
+1E90D ; NFKC_SCF; 1E92F
+1E90E ; NFKC_SCF; 1E930
+1E90F ; NFKC_SCF; 1E931
+1E910 ; NFKC_SCF; 1E932
+1E911 ; NFKC_SCF; 1E933
+1E912 ; NFKC_SCF; 1E934
+1E913 ; NFKC_SCF; 1E935
+1E914 ; NFKC_SCF; 1E936
+1E915 ; NFKC_SCF; 1E937
+1E916 ; NFKC_SCF; 1E938
+1E917 ; NFKC_SCF; 1E939
+1E918 ; NFKC_SCF; 1E93A
+1E919 ; NFKC_SCF; 1E93B
+1E91A ; NFKC_SCF; 1E93C
+1E91B ; NFKC_SCF; 1E93D
+1E91C ; NFKC_SCF; 1E93E
+1E91D ; NFKC_SCF; 1E93F
+1E91E ; NFKC_SCF; 1E940
+1E91F ; NFKC_SCF; 1E941
+1E920 ; NFKC_SCF; 1E942
+1E921 ; NFKC_SCF; 1E943
+1EE00 ; NFKC_SCF; 0627
+1EE01 ; NFKC_SCF; 0628
+1EE02 ; NFKC_SCF; 062C
+1EE03 ; NFKC_SCF; 062F
+1EE05 ; NFKC_SCF; 0648
+1EE06 ; NFKC_SCF; 0632
+1EE07 ; NFKC_SCF; 062D
+1EE08 ; NFKC_SCF; 0637
+1EE09 ; NFKC_SCF; 064A
+1EE0A ; NFKC_SCF; 0643
+1EE0B ; NFKC_SCF; 0644
+1EE0C ; NFKC_SCF; 0645
+1EE0D ; NFKC_SCF; 0646
+1EE0E ; NFKC_SCF; 0633
+1EE0F ; NFKC_SCF; 0639
+1EE10 ; NFKC_SCF; 0641
+1EE11 ; NFKC_SCF; 0635
+1EE12 ; NFKC_SCF; 0642
+1EE13 ; NFKC_SCF; 0631
+1EE14 ; NFKC_SCF; 0634
+1EE15 ; NFKC_SCF; 062A
+1EE16 ; NFKC_SCF; 062B
+1EE17 ; NFKC_SCF; 062E
+1EE18 ; NFKC_SCF; 0630
+1EE19 ; NFKC_SCF; 0636
+1EE1A ; NFKC_SCF; 0638
+1EE1B ; NFKC_SCF; 063A
+1EE1C ; NFKC_SCF; 066E
+1EE1D ; NFKC_SCF; 06BA
+1EE1E ; NFKC_SCF; 06A1
+1EE1F ; NFKC_SCF; 066F
+1EE21 ; NFKC_SCF; 0628
+1EE22 ; NFKC_SCF; 062C
+1EE24 ; NFKC_SCF; 0647
+1EE27 ; NFKC_SCF; 062D
+1EE29 ; NFKC_SCF; 064A
+1EE2A ; NFKC_SCF; 0643
+1EE2B ; NFKC_SCF; 0644
+1EE2C ; NFKC_SCF; 0645
+1EE2D ; NFKC_SCF; 0646
+1EE2E ; NFKC_SCF; 0633
+1EE2F ; NFKC_SCF; 0639
+1EE30 ; NFKC_SCF; 0641
+1EE31 ; NFKC_SCF; 0635
+1EE32 ; NFKC_SCF; 0642
+1EE34 ; NFKC_SCF; 0634
+1EE35 ; NFKC_SCF; 062A
+1EE36 ; NFKC_SCF; 062B
+1EE37 ; NFKC_SCF; 062E
+1EE39 ; NFKC_SCF; 0636
+1EE3B ; NFKC_SCF; 063A
+1EE42 ; NFKC_SCF; 062C
+1EE47 ; NFKC_SCF; 062D
+1EE49 ; NFKC_SCF; 064A
+1EE4B ; NFKC_SCF; 0644
+1EE4D ; NFKC_SCF; 0646
+1EE4E ; NFKC_SCF; 0633
+1EE4F ; NFKC_SCF; 0639
+1EE51 ; NFKC_SCF; 0635
+1EE52 ; NFKC_SCF; 0642
+1EE54 ; NFKC_SCF; 0634
+1EE57 ; NFKC_SCF; 062E
+1EE59 ; NFKC_SCF; 0636
+1EE5B ; NFKC_SCF; 063A
+1EE5D ; NFKC_SCF; 06BA
+1EE5F ; NFKC_SCF; 066F
+1EE61 ; NFKC_SCF; 0628
+1EE62 ; NFKC_SCF; 062C
+1EE64 ; NFKC_SCF; 0647
+1EE67 ; NFKC_SCF; 062D
+1EE68 ; NFKC_SCF; 0637
+1EE69 ; NFKC_SCF; 064A
+1EE6A ; NFKC_SCF; 0643
+1EE6C ; NFKC_SCF; 0645
+1EE6D ; NFKC_SCF; 0646
+1EE6E ; NFKC_SCF; 0633
+1EE6F ; NFKC_SCF; 0639
+1EE70 ; NFKC_SCF; 0641
+1EE71 ; NFKC_SCF; 0635
+1EE72 ; NFKC_SCF; 0642
+1EE74 ; NFKC_SCF; 0634
+1EE75 ; NFKC_SCF; 062A
+1EE76 ; NFKC_SCF; 062B
+1EE77 ; NFKC_SCF; 062E
+1EE79 ; NFKC_SCF; 0636
+1EE7A ; NFKC_SCF; 0638
+1EE7B ; NFKC_SCF; 063A
+1EE7C ; NFKC_SCF; 066E
+1EE7E ; NFKC_SCF; 06A1
+1EE80 ; NFKC_SCF; 0627
+1EE81 ; NFKC_SCF; 0628
+1EE82 ; NFKC_SCF; 062C
+1EE83 ; NFKC_SCF; 062F
+1EE84 ; NFKC_SCF; 0647
+1EE85 ; NFKC_SCF; 0648
+1EE86 ; NFKC_SCF; 0632
+1EE87 ; NFKC_SCF; 062D
+1EE88 ; NFKC_SCF; 0637
+1EE89 ; NFKC_SCF; 064A
+1EE8B ; NFKC_SCF; 0644
+1EE8C ; NFKC_SCF; 0645
+1EE8D ; NFKC_SCF; 0646
+1EE8E ; NFKC_SCF; 0633
+1EE8F ; NFKC_SCF; 0639
+1EE90 ; NFKC_SCF; 0641
+1EE91 ; NFKC_SCF; 0635
+1EE92 ; NFKC_SCF; 0642
+1EE93 ; NFKC_SCF; 0631
+1EE94 ; NFKC_SCF; 0634
+1EE95 ; NFKC_SCF; 062A
+1EE96 ; NFKC_SCF; 062B
+1EE97 ; NFKC_SCF; 062E
+1EE98 ; NFKC_SCF; 0630
+1EE99 ; NFKC_SCF; 0636
+1EE9A ; NFKC_SCF; 0638
+1EE9B ; NFKC_SCF; 063A
+1EEA1 ; NFKC_SCF; 0628
+1EEA2 ; NFKC_SCF; 062C
+1EEA3 ; NFKC_SCF; 062F
+1EEA5 ; NFKC_SCF; 0648
+1EEA6 ; NFKC_SCF; 0632
+1EEA7 ; NFKC_SCF; 062D
+1EEA8 ; NFKC_SCF; 0637
+1EEA9 ; NFKC_SCF; 064A
+1EEAB ; NFKC_SCF; 0644
+1EEAC ; NFKC_SCF; 0645
+1EEAD ; NFKC_SCF; 0646
+1EEAE ; NFKC_SCF; 0633
+1EEAF ; NFKC_SCF; 0639
+1EEB0 ; NFKC_SCF; 0641
+1EEB1 ; NFKC_SCF; 0635
+1EEB2 ; NFKC_SCF; 0642
+1EEB3 ; NFKC_SCF; 0631
+1EEB4 ; NFKC_SCF; 0634
+1EEB5 ; NFKC_SCF; 062A
+1EEB6 ; NFKC_SCF; 062B
+1EEB7 ; NFKC_SCF; 062E
+1EEB8 ; NFKC_SCF; 0630
+1EEB9 ; NFKC_SCF; 0636
+1EEBA ; NFKC_SCF; 0638
+1EEBB ; NFKC_SCF; 063A
+1F100 ; NFKC_SCF; 0030 002E
+1F101 ; NFKC_SCF; 0030 002C
+1F102 ; NFKC_SCF; 0031 002C
+1F103 ; NFKC_SCF; 0032 002C
+1F104 ; NFKC_SCF; 0033 002C
+1F105 ; NFKC_SCF; 0034 002C
+1F106 ; NFKC_SCF; 0035 002C
+1F107 ; NFKC_SCF; 0036 002C
+1F108 ; NFKC_SCF; 0037 002C
+1F109 ; NFKC_SCF; 0038 002C
+1F10A ; NFKC_SCF; 0039 002C
+1F110 ; NFKC_SCF; 0028 0061 0029
+1F111 ; NFKC_SCF; 0028 0062 0029
+1F112 ; NFKC_SCF; 0028 0063 0029
+1F113 ; NFKC_SCF; 0028 0064 0029
+1F114 ; NFKC_SCF; 0028 0065 0029
+1F115 ; NFKC_SCF; 0028 0066 0029
+1F116 ; NFKC_SCF; 0028 0067 0029
+1F117 ; NFKC_SCF; 0028 0068 0029
+1F118 ; NFKC_SCF; 0028 0069 0029
+1F119 ; NFKC_SCF; 0028 006A 0029
+1F11A ; NFKC_SCF; 0028 006B 0029
+1F11B ; NFKC_SCF; 0028 006C 0029
+1F11C ; NFKC_SCF; 0028 006D 0029
+1F11D ; NFKC_SCF; 0028 006E 0029
+1F11E ; NFKC_SCF; 0028 006F 0029
+1F11F ; NFKC_SCF; 0028 0070 0029
+1F120 ; NFKC_SCF; 0028 0071 0029
+1F121 ; NFKC_SCF; 0028 0072 0029
+1F122 ; NFKC_SCF; 0028 0073 0029
+1F123 ; NFKC_SCF; 0028 0074 0029
+1F124 ; NFKC_SCF; 0028 0075 0029
+1F125 ; NFKC_SCF; 0028 0076 0029
+1F126 ; NFKC_SCF; 0028 0077 0029
+1F127 ; NFKC_SCF; 0028 0078 0029
+1F128 ; NFKC_SCF; 0028 0079 0029
+1F129 ; NFKC_SCF; 0028 007A 0029
+1F12A ; NFKC_SCF; 3014 0073 3015
+1F12B ; NFKC_SCF; 0063
+1F12C ; NFKC_SCF; 0072
+1F12D ; NFKC_SCF; 0063 0064
+1F12E ; NFKC_SCF; 0077 007A
+1F130 ; NFKC_SCF; 0061
+1F131 ; NFKC_SCF; 0062
+1F132 ; NFKC_SCF; 0063
+1F133 ; NFKC_SCF; 0064
+1F134 ; NFKC_SCF; 0065
+1F135 ; NFKC_SCF; 0066
+1F136 ; NFKC_SCF; 0067
+1F137 ; NFKC_SCF; 0068
+1F138 ; NFKC_SCF; 0069
+1F139 ; NFKC_SCF; 006A
+1F13A ; NFKC_SCF; 006B
+1F13B ; NFKC_SCF; 006C
+1F13C ; NFKC_SCF; 006D
+1F13D ; NFKC_SCF; 006E
+1F13E ; NFKC_SCF; 006F
+1F13F ; NFKC_SCF; 0070
+1F140 ; NFKC_SCF; 0071
+1F141 ; NFKC_SCF; 0072
+1F142 ; NFKC_SCF; 0073
+1F143 ; NFKC_SCF; 0074
+1F144 ; NFKC_SCF; 0075
+1F145 ; NFKC_SCF; 0076
+1F146 ; NFKC_SCF; 0077
+1F147 ; NFKC_SCF; 0078
+1F148 ; NFKC_SCF; 0079
+1F149 ; NFKC_SCF; 007A
+1F14A ; NFKC_SCF; 0068 0076
+1F14B ; NFKC_SCF; 006D 0076
+1F14C ; NFKC_SCF; 0073 0064
+1F14D ; NFKC_SCF; 0073 0073
+1F14E ; NFKC_SCF; 0070 0070 0076
+1F14F ; NFKC_SCF; 0077 0063
+1F16A ; NFKC_SCF; 006D 0063
+1F16B ; NFKC_SCF; 006D 0064
+1F16C ; NFKC_SCF; 006D 0072
+1F190 ; NFKC_SCF; 0064 006A
+1F200 ; NFKC_SCF; 307B 304B
+1F201 ; NFKC_SCF; 30B3 30B3
+1F202 ; NFKC_SCF; 30B5
+1F210 ; NFKC_SCF; 624B
+1F211 ; NFKC_SCF; 5B57
+1F212 ; NFKC_SCF; 53CC
+1F213 ; NFKC_SCF; 30C7
+1F214 ; NFKC_SCF; 4E8C
+1F215 ; NFKC_SCF; 591A
+1F216 ; NFKC_SCF; 89E3
+1F217 ; NFKC_SCF; 5929
+1F218 ; NFKC_SCF; 4EA4
+1F219 ; NFKC_SCF; 6620
+1F21A ; NFKC_SCF; 7121
+1F21B ; NFKC_SCF; 6599
+1F21C ; NFKC_SCF; 524D
+1F21D ; NFKC_SCF; 5F8C
+1F21E ; NFKC_SCF; 518D
+1F21F ; NFKC_SCF; 65B0
+1F220 ; NFKC_SCF; 521D
+1F221 ; NFKC_SCF; 7D42
+1F222 ; NFKC_SCF; 751F
+1F223 ; NFKC_SCF; 8CA9
+1F224 ; NFKC_SCF; 58F0
+1F225 ; NFKC_SCF; 5439
+1F226 ; NFKC_SCF; 6F14
+1F227 ; NFKC_SCF; 6295
+1F228 ; NFKC_SCF; 6355
+1F229 ; NFKC_SCF; 4E00
+1F22A ; NFKC_SCF; 4E09
+1F22B ; NFKC_SCF; 904A
+1F22C ; NFKC_SCF; 5DE6
+1F22D ; NFKC_SCF; 4E2D
+1F22E ; NFKC_SCF; 53F3
+1F22F ; NFKC_SCF; 6307
+1F230 ; NFKC_SCF; 8D70
+1F231 ; NFKC_SCF; 6253
+1F232 ; NFKC_SCF; 7981
+1F233 ; NFKC_SCF; 7A7A
+1F234 ; NFKC_SCF; 5408
+1F235 ; NFKC_SCF; 6E80
+1F236 ; NFKC_SCF; 6709
+1F237 ; NFKC_SCF; 6708
+1F238 ; NFKC_SCF; 7533
+1F239 ; NFKC_SCF; 5272
+1F23A ; NFKC_SCF; 55B6
+1F23B ; NFKC_SCF; 914D
+1F240 ; NFKC_SCF; 3014 672C 3015
+1F241 ; NFKC_SCF; 3014 4E09 3015
+1F242 ; NFKC_SCF; 3014 4E8C 3015
+1F243 ; NFKC_SCF; 3014 5B89 3015
+1F244 ; NFKC_SCF; 3014 70B9 3015
+1F245 ; NFKC_SCF; 3014 6253 3015
+1F246 ; NFKC_SCF; 3014 76D7 3015
+1F247 ; NFKC_SCF; 3014 52DD 3015
+1F248 ; NFKC_SCF; 3014 6557 3015
+1F250 ; NFKC_SCF; 5F97
+1F251 ; NFKC_SCF; 53EF
+1FBF0 ; NFKC_SCF; 0030
+1FBF1 ; NFKC_SCF; 0031
+1FBF2 ; NFKC_SCF; 0032
+1FBF3 ; NFKC_SCF; 0033
+1FBF4 ; NFKC_SCF; 0034
+1FBF5 ; NFKC_SCF; 0035
+1FBF6 ; NFKC_SCF; 0036
+1FBF7 ; NFKC_SCF; 0037
+1FBF8 ; NFKC_SCF; 0038
+1FBF9 ; NFKC_SCF; 0039
+2F800 ; NFKC_SCF; 4E3D
+2F801 ; NFKC_SCF; 4E38
+2F802 ; NFKC_SCF; 4E41
+2F803 ; NFKC_SCF; 20122
+2F804 ; NFKC_SCF; 4F60
+2F805 ; NFKC_SCF; 4FAE
+2F806 ; NFKC_SCF; 4FBB
+2F807 ; NFKC_SCF; 5002
+2F808 ; NFKC_SCF; 507A
+2F809 ; NFKC_SCF; 5099
+2F80A ; NFKC_SCF; 50E7
+2F80B ; NFKC_SCF; 50CF
+2F80C ; NFKC_SCF; 349E
+2F80D ; NFKC_SCF; 2063A
+2F80E ; NFKC_SCF; 514D
+2F80F ; NFKC_SCF; 5154
+2F810 ; NFKC_SCF; 5164
+2F811 ; NFKC_SCF; 5177
+2F812 ; NFKC_SCF; 2051C
+2F813 ; NFKC_SCF; 34B9
+2F814 ; NFKC_SCF; 5167
+2F815 ; NFKC_SCF; 518D
+2F816 ; NFKC_SCF; 2054B
+2F817 ; NFKC_SCF; 5197
+2F818 ; NFKC_SCF; 51A4
+2F819 ; NFKC_SCF; 4ECC
+2F81A ; NFKC_SCF; 51AC
+2F81B ; NFKC_SCF; 51B5
+2F81C ; NFKC_SCF; 291DF
+2F81D ; NFKC_SCF; 51F5
+2F81E ; NFKC_SCF; 5203
+2F81F ; NFKC_SCF; 34DF
+2F820 ; NFKC_SCF; 523B
+2F821 ; NFKC_SCF; 5246
+2F822 ; NFKC_SCF; 5272
+2F823 ; NFKC_SCF; 5277
+2F824 ; NFKC_SCF; 3515
+2F825 ; NFKC_SCF; 52C7
+2F826 ; NFKC_SCF; 52C9
+2F827 ; NFKC_SCF; 52E4
+2F828 ; NFKC_SCF; 52FA
+2F829 ; NFKC_SCF; 5305
+2F82A ; NFKC_SCF; 5306
+2F82B ; NFKC_SCF; 5317
+2F82C ; NFKC_SCF; 5349
+2F82D ; NFKC_SCF; 5351
+2F82E ; NFKC_SCF; 535A
+2F82F ; NFKC_SCF; 5373
+2F830 ; NFKC_SCF; 537D
+2F831..2F833 ; NFKC_SCF; 537F
+2F834 ; NFKC_SCF; 20A2C
+2F835 ; NFKC_SCF; 7070
+2F836 ; NFKC_SCF; 53CA
+2F837 ; NFKC_SCF; 53DF
+2F838 ; NFKC_SCF; 20B63
+2F839 ; NFKC_SCF; 53EB
+2F83A ; NFKC_SCF; 53F1
+2F83B ; NFKC_SCF; 5406
+2F83C ; NFKC_SCF; 549E
+2F83D ; NFKC_SCF; 5438
+2F83E ; NFKC_SCF; 5448
+2F83F ; NFKC_SCF; 5468
+2F840 ; NFKC_SCF; 54A2
+2F841 ; NFKC_SCF; 54F6
+2F842 ; NFKC_SCF; 5510
+2F843 ; NFKC_SCF; 5553
+2F844 ; NFKC_SCF; 5563
+2F845..2F846 ; NFKC_SCF; 5584
+2F847 ; NFKC_SCF; 5599
+2F848 ; NFKC_SCF; 55AB
+2F849 ; NFKC_SCF; 55B3
+2F84A ; NFKC_SCF; 55C2
+2F84B ; NFKC_SCF; 5716
+2F84C ; NFKC_SCF; 5606
+2F84D ; NFKC_SCF; 5717
+2F84E ; NFKC_SCF; 5651
+2F84F ; NFKC_SCF; 5674
+2F850 ; NFKC_SCF; 5207
+2F851 ; NFKC_SCF; 58EE
+2F852 ; NFKC_SCF; 57CE
+2F853 ; NFKC_SCF; 57F4
+2F854 ; NFKC_SCF; 580D
+2F855 ; NFKC_SCF; 578B
+2F856 ; NFKC_SCF; 5832
+2F857 ; NFKC_SCF; 5831
+2F858 ; NFKC_SCF; 58AC
+2F859 ; NFKC_SCF; 214E4
+2F85A ; NFKC_SCF; 58F2
+2F85B ; NFKC_SCF; 58F7
+2F85C ; NFKC_SCF; 5906
+2F85D ; NFKC_SCF; 591A
+2F85E ; NFKC_SCF; 5922
+2F85F ; NFKC_SCF; 5962
+2F860 ; NFKC_SCF; 216A8
+2F861 ; NFKC_SCF; 216EA
+2F862 ; NFKC_SCF; 59EC
+2F863 ; NFKC_SCF; 5A1B
+2F864 ; NFKC_SCF; 5A27
+2F865 ; NFKC_SCF; 59D8
+2F866 ; NFKC_SCF; 5A66
+2F867 ; NFKC_SCF; 36EE
+2F868 ; NFKC_SCF; 36FC
+2F869 ; NFKC_SCF; 5B08
+2F86A..2F86B ; NFKC_SCF; 5B3E
+2F86C ; NFKC_SCF; 219C8
+2F86D ; NFKC_SCF; 5BC3
+2F86E ; NFKC_SCF; 5BD8
+2F86F ; NFKC_SCF; 5BE7
+2F870 ; NFKC_SCF; 5BF3
+2F871 ; NFKC_SCF; 21B18
+2F872 ; NFKC_SCF; 5BFF
+2F873 ; NFKC_SCF; 5C06
+2F874 ; NFKC_SCF; 5F53
+2F875 ; NFKC_SCF; 5C22
+2F876 ; NFKC_SCF; 3781
+2F877 ; NFKC_SCF; 5C60
+2F878 ; NFKC_SCF; 5C6E
+2F879 ; NFKC_SCF; 5CC0
+2F87A ; NFKC_SCF; 5C8D
+2F87B ; NFKC_SCF; 21DE4
+2F87C ; NFKC_SCF; 5D43
+2F87D ; NFKC_SCF; 21DE6
+2F87E ; NFKC_SCF; 5D6E
+2F87F ; NFKC_SCF; 5D6B
+2F880 ; NFKC_SCF; 5D7C
+2F881 ; NFKC_SCF; 5DE1
+2F882 ; NFKC_SCF; 5DE2
+2F883 ; NFKC_SCF; 382F
+2F884 ; NFKC_SCF; 5DFD
+2F885 ; NFKC_SCF; 5E28
+2F886 ; NFKC_SCF; 5E3D
+2F887 ; NFKC_SCF; 5E69
+2F888 ; NFKC_SCF; 3862
+2F889 ; NFKC_SCF; 22183
+2F88A ; NFKC_SCF; 387C
+2F88B ; NFKC_SCF; 5EB0
+2F88C ; NFKC_SCF; 5EB3
+2F88D ; NFKC_SCF; 5EB6
+2F88E ; NFKC_SCF; 5ECA
+2F88F ; NFKC_SCF; 2A392
+2F890 ; NFKC_SCF; 5EFE
+2F891..2F892 ; NFKC_SCF; 22331
+2F893 ; NFKC_SCF; 8201
+2F894..2F895 ; NFKC_SCF; 5F22
+2F896 ; NFKC_SCF; 38C7
+2F897 ; NFKC_SCF; 232B8
+2F898 ; NFKC_SCF; 261DA
+2F899 ; NFKC_SCF; 5F62
+2F89A ; NFKC_SCF; 5F6B
+2F89B ; NFKC_SCF; 38E3
+2F89C ; NFKC_SCF; 5F9A
+2F89D ; NFKC_SCF; 5FCD
+2F89E ; NFKC_SCF; 5FD7
+2F89F ; NFKC_SCF; 5FF9
+2F8A0 ; NFKC_SCF; 6081
+2F8A1 ; NFKC_SCF; 393A
+2F8A2 ; NFKC_SCF; 391C
+2F8A3 ; NFKC_SCF; 6094
+2F8A4 ; NFKC_SCF; 226D4
+2F8A5 ; NFKC_SCF; 60C7
+2F8A6 ; NFKC_SCF; 6148
+2F8A7 ; NFKC_SCF; 614C
+2F8A8 ; NFKC_SCF; 614E
+2F8A9 ; NFKC_SCF; 614C
+2F8AA ; NFKC_SCF; 617A
+2F8AB ; NFKC_SCF; 618E
+2F8AC ; NFKC_SCF; 61B2
+2F8AD ; NFKC_SCF; 61A4
+2F8AE ; NFKC_SCF; 61AF
+2F8AF ; NFKC_SCF; 61DE
+2F8B0 ; NFKC_SCF; 61F2
+2F8B1 ; NFKC_SCF; 61F6
+2F8B2 ; NFKC_SCF; 6210
+2F8B3 ; NFKC_SCF; 621B
+2F8B4 ; NFKC_SCF; 625D
+2F8B5 ; NFKC_SCF; 62B1
+2F8B6 ; NFKC_SCF; 62D4
+2F8B7 ; NFKC_SCF; 6350
+2F8B8 ; NFKC_SCF; 22B0C
+2F8B9 ; NFKC_SCF; 633D
+2F8BA ; NFKC_SCF; 62FC
+2F8BB ; NFKC_SCF; 6368
+2F8BC ; NFKC_SCF; 6383
+2F8BD ; NFKC_SCF; 63E4
+2F8BE ; NFKC_SCF; 22BF1
+2F8BF ; NFKC_SCF; 6422
+2F8C0 ; NFKC_SCF; 63C5
+2F8C1 ; NFKC_SCF; 63A9
+2F8C2 ; NFKC_SCF; 3A2E
+2F8C3 ; NFKC_SCF; 6469
+2F8C4 ; NFKC_SCF; 647E
+2F8C5 ; NFKC_SCF; 649D
+2F8C6 ; NFKC_SCF; 6477
+2F8C7 ; NFKC_SCF; 3A6C
+2F8C8 ; NFKC_SCF; 654F
+2F8C9 ; NFKC_SCF; 656C
+2F8CA ; NFKC_SCF; 2300A
+2F8CB ; NFKC_SCF; 65E3
+2F8CC ; NFKC_SCF; 66F8
+2F8CD ; NFKC_SCF; 6649
+2F8CE ; NFKC_SCF; 3B19
+2F8CF ; NFKC_SCF; 6691
+2F8D0 ; NFKC_SCF; 3B08
+2F8D1 ; NFKC_SCF; 3AE4
+2F8D2 ; NFKC_SCF; 5192
+2F8D3 ; NFKC_SCF; 5195
+2F8D4 ; NFKC_SCF; 6700
+2F8D5 ; NFKC_SCF; 669C
+2F8D6 ; NFKC_SCF; 80AD
+2F8D7 ; NFKC_SCF; 43D9
+2F8D8 ; NFKC_SCF; 6717
+2F8D9 ; NFKC_SCF; 671B
+2F8DA ; NFKC_SCF; 6721
+2F8DB ; NFKC_SCF; 675E
+2F8DC ; NFKC_SCF; 6753
+2F8DD ; NFKC_SCF; 233C3
+2F8DE ; NFKC_SCF; 3B49
+2F8DF ; NFKC_SCF; 67FA
+2F8E0 ; NFKC_SCF; 6785
+2F8E1 ; NFKC_SCF; 6852
+2F8E2 ; NFKC_SCF; 6885
+2F8E3 ; NFKC_SCF; 2346D
+2F8E4 ; NFKC_SCF; 688E
+2F8E5 ; NFKC_SCF; 681F
+2F8E6 ; NFKC_SCF; 6914
+2F8E7 ; NFKC_SCF; 3B9D
+2F8E8 ; NFKC_SCF; 6942
+2F8E9 ; NFKC_SCF; 69A3
+2F8EA ; NFKC_SCF; 69EA
+2F8EB ; NFKC_SCF; 6AA8
+2F8EC ; NFKC_SCF; 236A3
+2F8ED ; NFKC_SCF; 6ADB
+2F8EE ; NFKC_SCF; 3C18
+2F8EF ; NFKC_SCF; 6B21
+2F8F0 ; NFKC_SCF; 238A7
+2F8F1 ; NFKC_SCF; 6B54
+2F8F2 ; NFKC_SCF; 3C4E
+2F8F3 ; NFKC_SCF; 6B72
+2F8F4 ; NFKC_SCF; 6B9F
+2F8F5 ; NFKC_SCF; 6BBA
+2F8F6 ; NFKC_SCF; 6BBB
+2F8F7 ; NFKC_SCF; 23A8D
+2F8F8 ; NFKC_SCF; 21D0B
+2F8F9 ; NFKC_SCF; 23AFA
+2F8FA ; NFKC_SCF; 6C4E
+2F8FB ; NFKC_SCF; 23CBC
+2F8FC ; NFKC_SCF; 6CBF
+2F8FD ; NFKC_SCF; 6CCD
+2F8FE ; NFKC_SCF; 6C67
+2F8FF ; NFKC_SCF; 6D16
+2F900 ; NFKC_SCF; 6D3E
+2F901 ; NFKC_SCF; 6D77
+2F902 ; NFKC_SCF; 6D41
+2F903 ; NFKC_SCF; 6D69
+2F904 ; NFKC_SCF; 6D78
+2F905 ; NFKC_SCF; 6D85
+2F906 ; NFKC_SCF; 23D1E
+2F907 ; NFKC_SCF; 6D34
+2F908 ; NFKC_SCF; 6E2F
+2F909 ; NFKC_SCF; 6E6E
+2F90A ; NFKC_SCF; 3D33
+2F90B ; NFKC_SCF; 6ECB
+2F90C ; NFKC_SCF; 6EC7
+2F90D ; NFKC_SCF; 23ED1
+2F90E ; NFKC_SCF; 6DF9
+2F90F ; NFKC_SCF; 6F6E
+2F910 ; NFKC_SCF; 23F5E
+2F911 ; NFKC_SCF; 23F8E
+2F912 ; NFKC_SCF; 6FC6
+2F913 ; NFKC_SCF; 7039
+2F914 ; NFKC_SCF; 701E
+2F915 ; NFKC_SCF; 701B
+2F916 ; NFKC_SCF; 3D96
+2F917 ; NFKC_SCF; 704A
+2F918 ; NFKC_SCF; 707D
+2F919 ; NFKC_SCF; 7077
+2F91A ; NFKC_SCF; 70AD
+2F91B ; NFKC_SCF; 20525
+2F91C ; NFKC_SCF; 7145
+2F91D ; NFKC_SCF; 24263
+2F91E ; NFKC_SCF; 719C
+2F91F ; NFKC_SCF; 243AB
+2F920 ; NFKC_SCF; 7228
+2F921 ; NFKC_SCF; 7235
+2F922 ; NFKC_SCF; 7250
+2F923 ; NFKC_SCF; 24608
+2F924 ; NFKC_SCF; 7280
+2F925 ; NFKC_SCF; 7295
+2F926 ; NFKC_SCF; 24735
+2F927 ; NFKC_SCF; 24814
+2F928 ; NFKC_SCF; 737A
+2F929 ; NFKC_SCF; 738B
+2F92A ; NFKC_SCF; 3EAC
+2F92B ; NFKC_SCF; 73A5
+2F92C..2F92D ; NFKC_SCF; 3EB8
+2F92E ; NFKC_SCF; 7447
+2F92F ; NFKC_SCF; 745C
+2F930 ; NFKC_SCF; 7471
+2F931 ; NFKC_SCF; 7485
+2F932 ; NFKC_SCF; 74CA
+2F933 ; NFKC_SCF; 3F1B
+2F934 ; NFKC_SCF; 7524
+2F935 ; NFKC_SCF; 24C36
+2F936 ; NFKC_SCF; 753E
+2F937 ; NFKC_SCF; 24C92
+2F938 ; NFKC_SCF; 7570
+2F939 ; NFKC_SCF; 2219F
+2F93A ; NFKC_SCF; 7610
+2F93B ; NFKC_SCF; 24FA1
+2F93C ; NFKC_SCF; 24FB8
+2F93D ; NFKC_SCF; 25044
+2F93E ; NFKC_SCF; 3FFC
+2F93F ; NFKC_SCF; 4008
+2F940 ; NFKC_SCF; 76F4
+2F941 ; NFKC_SCF; 250F3
+2F942 ; NFKC_SCF; 250F2
+2F943 ; NFKC_SCF; 25119
+2F944 ; NFKC_SCF; 25133
+2F945 ; NFKC_SCF; 771E
+2F946..2F947 ; NFKC_SCF; 771F
+2F948 ; NFKC_SCF; 774A
+2F949 ; NFKC_SCF; 4039
+2F94A ; NFKC_SCF; 778B
+2F94B ; NFKC_SCF; 4046
+2F94C ; NFKC_SCF; 4096
+2F94D ; NFKC_SCF; 2541D
+2F94E ; NFKC_SCF; 784E
+2F94F ; NFKC_SCF; 788C
+2F950 ; NFKC_SCF; 78CC
+2F951 ; NFKC_SCF; 40E3
+2F952 ; NFKC_SCF; 25626
+2F953 ; NFKC_SCF; 7956
+2F954 ; NFKC_SCF; 2569A
+2F955 ; NFKC_SCF; 256C5
+2F956 ; NFKC_SCF; 798F
+2F957 ; NFKC_SCF; 79EB
+2F958 ; NFKC_SCF; 412F
+2F959 ; NFKC_SCF; 7A40
+2F95A ; NFKC_SCF; 7A4A
+2F95B ; NFKC_SCF; 7A4F
+2F95C ; NFKC_SCF; 2597C
+2F95D..2F95E ; NFKC_SCF; 25AA7
+2F95F ; NFKC_SCF; 7AEE
+2F960 ; NFKC_SCF; 4202
+2F961 ; NFKC_SCF; 25BAB
+2F962 ; NFKC_SCF; 7BC6
+2F963 ; NFKC_SCF; 7BC9
+2F964 ; NFKC_SCF; 4227
+2F965 ; NFKC_SCF; 25C80
+2F966 ; NFKC_SCF; 7CD2
+2F967 ; NFKC_SCF; 42A0
+2F968 ; NFKC_SCF; 7CE8
+2F969 ; NFKC_SCF; 7CE3
+2F96A ; NFKC_SCF; 7D00
+2F96B ; NFKC_SCF; 25F86
+2F96C ; NFKC_SCF; 7D63
+2F96D ; NFKC_SCF; 4301
+2F96E ; NFKC_SCF; 7DC7
+2F96F ; NFKC_SCF; 7E02
+2F970 ; NFKC_SCF; 7E45
+2F971 ; NFKC_SCF; 4334
+2F972 ; NFKC_SCF; 26228
+2F973 ; NFKC_SCF; 26247
+2F974 ; NFKC_SCF; 4359
+2F975 ; NFKC_SCF; 262D9
+2F976 ; NFKC_SCF; 7F7A
+2F977 ; NFKC_SCF; 2633E
+2F978 ; NFKC_SCF; 7F95
+2F979 ; NFKC_SCF; 7FFA
+2F97A ; NFKC_SCF; 8005
+2F97B ; NFKC_SCF; 264DA
+2F97C ; NFKC_SCF; 26523
+2F97D ; NFKC_SCF; 8060
+2F97E ; NFKC_SCF; 265A8
+2F97F ; NFKC_SCF; 8070
+2F980 ; NFKC_SCF; 2335F
+2F981 ; NFKC_SCF; 43D5
+2F982 ; NFKC_SCF; 80B2
+2F983 ; NFKC_SCF; 8103
+2F984 ; NFKC_SCF; 440B
+2F985 ; NFKC_SCF; 813E
+2F986 ; NFKC_SCF; 5AB5
+2F987 ; NFKC_SCF; 267A7
+2F988 ; NFKC_SCF; 267B5
+2F989 ; NFKC_SCF; 23393
+2F98A ; NFKC_SCF; 2339C
+2F98B ; NFKC_SCF; 8201
+2F98C ; NFKC_SCF; 8204
+2F98D ; NFKC_SCF; 8F9E
+2F98E ; NFKC_SCF; 446B
+2F98F ; NFKC_SCF; 8291
+2F990 ; NFKC_SCF; 828B
+2F991 ; NFKC_SCF; 829D
+2F992 ; NFKC_SCF; 52B3
+2F993 ; NFKC_SCF; 82B1
+2F994 ; NFKC_SCF; 82B3
+2F995 ; NFKC_SCF; 82BD
+2F996 ; NFKC_SCF; 82E6
+2F997 ; NFKC_SCF; 26B3C
+2F998 ; NFKC_SCF; 82E5
+2F999 ; NFKC_SCF; 831D
+2F99A ; NFKC_SCF; 8363
+2F99B ; NFKC_SCF; 83AD
+2F99C ; NFKC_SCF; 8323
+2F99D ; NFKC_SCF; 83BD
+2F99E ; NFKC_SCF; 83E7
+2F99F ; NFKC_SCF; 8457
+2F9A0 ; NFKC_SCF; 8353
+2F9A1 ; NFKC_SCF; 83CA
+2F9A2 ; NFKC_SCF; 83CC
+2F9A3 ; NFKC_SCF; 83DC
+2F9A4 ; NFKC_SCF; 26C36
+2F9A5 ; NFKC_SCF; 26D6B
+2F9A6 ; NFKC_SCF; 26CD5
+2F9A7 ; NFKC_SCF; 452B
+2F9A8 ; NFKC_SCF; 84F1
+2F9A9 ; NFKC_SCF; 84F3
+2F9AA ; NFKC_SCF; 8516
+2F9AB ; NFKC_SCF; 273CA
+2F9AC ; NFKC_SCF; 8564
+2F9AD ; NFKC_SCF; 26F2C
+2F9AE ; NFKC_SCF; 455D
+2F9AF ; NFKC_SCF; 4561
+2F9B0 ; NFKC_SCF; 26FB1
+2F9B1 ; NFKC_SCF; 270D2
+2F9B2 ; NFKC_SCF; 456B
+2F9B3 ; NFKC_SCF; 8650
+2F9B4 ; NFKC_SCF; 865C
+2F9B5 ; NFKC_SCF; 8667
+2F9B6 ; NFKC_SCF; 8669
+2F9B7 ; NFKC_SCF; 86A9
+2F9B8 ; NFKC_SCF; 8688
+2F9B9 ; NFKC_SCF; 870E
+2F9BA ; NFKC_SCF; 86E2
+2F9BB ; NFKC_SCF; 8779
+2F9BC ; NFKC_SCF; 8728
+2F9BD ; NFKC_SCF; 876B
+2F9BE ; NFKC_SCF; 8786
+2F9BF ; NFKC_SCF; 45D7
+2F9C0 ; NFKC_SCF; 87E1
+2F9C1 ; NFKC_SCF; 8801
+2F9C2 ; NFKC_SCF; 45F9
+2F9C3 ; NFKC_SCF; 8860
+2F9C4 ; NFKC_SCF; 8863
+2F9C5 ; NFKC_SCF; 27667
+2F9C6 ; NFKC_SCF; 88D7
+2F9C7 ; NFKC_SCF; 88DE
+2F9C8 ; NFKC_SCF; 4635
+2F9C9 ; NFKC_SCF; 88FA
+2F9CA ; NFKC_SCF; 34BB
+2F9CB ; NFKC_SCF; 278AE
+2F9CC ; NFKC_SCF; 27966
+2F9CD ; NFKC_SCF; 46BE
+2F9CE ; NFKC_SCF; 46C7
+2F9CF ; NFKC_SCF; 8AA0
+2F9D0 ; NFKC_SCF; 8AED
+2F9D1 ; NFKC_SCF; 8B8A
+2F9D2 ; NFKC_SCF; 8C55
+2F9D3 ; NFKC_SCF; 27CA8
+2F9D4 ; NFKC_SCF; 8CAB
+2F9D5 ; NFKC_SCF; 8CC1
+2F9D6 ; NFKC_SCF; 8D1B
+2F9D7 ; NFKC_SCF; 8D77
+2F9D8 ; NFKC_SCF; 27F2F
+2F9D9 ; NFKC_SCF; 20804
+2F9DA ; NFKC_SCF; 8DCB
+2F9DB ; NFKC_SCF; 8DBC
+2F9DC ; NFKC_SCF; 8DF0
+2F9DD ; NFKC_SCF; 208DE
+2F9DE ; NFKC_SCF; 8ED4
+2F9DF ; NFKC_SCF; 8F38
+2F9E0 ; NFKC_SCF; 285D2
+2F9E1 ; NFKC_SCF; 285ED
+2F9E2 ; NFKC_SCF; 9094
+2F9E3 ; NFKC_SCF; 90F1
+2F9E4 ; NFKC_SCF; 9111
+2F9E5 ; NFKC_SCF; 2872E
+2F9E6 ; NFKC_SCF; 911B
+2F9E7 ; NFKC_SCF; 9238
+2F9E8 ; NFKC_SCF; 92D7
+2F9E9 ; NFKC_SCF; 92D8
+2F9EA ; NFKC_SCF; 927C
+2F9EB ; NFKC_SCF; 93F9
+2F9EC ; NFKC_SCF; 9415
+2F9ED ; NFKC_SCF; 28BFA
+2F9EE ; NFKC_SCF; 958B
+2F9EF ; NFKC_SCF; 4995
+2F9F0 ; NFKC_SCF; 95B7
+2F9F1 ; NFKC_SCF; 28D77
+2F9F2 ; NFKC_SCF; 49E6
+2F9F3 ; NFKC_SCF; 96C3
+2F9F4 ; NFKC_SCF; 5DB2
+2F9F5 ; NFKC_SCF; 9723
+2F9F6 ; NFKC_SCF; 29145
+2F9F7 ; NFKC_SCF; 2921A
+2F9F8 ; NFKC_SCF; 4A6E
+2F9F9 ; NFKC_SCF; 4A76
+2F9FA ; NFKC_SCF; 97E0
+2F9FB ; NFKC_SCF; 2940A
+2F9FC ; NFKC_SCF; 4AB2
+2F9FD ; NFKC_SCF; 29496
+2F9FE..2F9FF ; NFKC_SCF; 980B
+2FA00 ; NFKC_SCF; 9829
+2FA01 ; NFKC_SCF; 295B6
+2FA02 ; NFKC_SCF; 98E2
+2FA03 ; NFKC_SCF; 4B33
+2FA04 ; NFKC_SCF; 9929
+2FA05 ; NFKC_SCF; 99A7
+2FA06 ; NFKC_SCF; 99C2
+2FA07 ; NFKC_SCF; 99FE
+2FA08 ; NFKC_SCF; 4BCE
+2FA09 ; NFKC_SCF; 29B30
+2FA0A ; NFKC_SCF; 9B12
+2FA0B ; NFKC_SCF; 9C40
+2FA0C ; NFKC_SCF; 9CFD
+2FA0D ; NFKC_SCF; 4CCE
+2FA0E ; NFKC_SCF; 4CED
+2FA0F ; NFKC_SCF; 9D67
+2FA10 ; NFKC_SCF; 2A0CE
+2FA11 ; NFKC_SCF; 4CF8
+2FA12 ; NFKC_SCF; 2A105
+2FA13 ; NFKC_SCF; 2A20E
+2FA14 ; NFKC_SCF; 2A291
+2FA15 ; NFKC_SCF; 9EBB
+2FA16 ; NFKC_SCF; 4D56
+2FA17 ; NFKC_SCF; 9EF9
+2FA18 ; NFKC_SCF; 9EFE
+2FA19 ; NFKC_SCF; 9F05
+2FA1A ; NFKC_SCF; 9F0F
+2FA1B ; NFKC_SCF; 9F16
+2FA1C ; NFKC_SCF; 9F3B
+2FA1D ; NFKC_SCF; 2A600
+E0000 ; NFKC_SCF;
+E0001 ; NFKC_SCF;
+E0002..E001F ; NFKC_SCF;
+E0020..E007F ; NFKC_SCF;
+E0080..E00FF ; NFKC_SCF;
+E0100..E01EF ; NFKC_SCF;
+E01F0..E0FFF ; NFKC_SCF;
+
+# Total code points: 10453
+
+# ================================================
+
# Derived Property: Changes_When_NFKC_Casefolded (CWKCF)
# Characters that are not stable under an NFKC_Casefold mapping.
# As defined by cp != NFKC_Casefold(cp)
diff --git a/Build/source/libs/icu/icu-src/source/data/unidata/FractionalUCA.txt b/Build/source/libs/icu/icu-src/source/data/unidata/FractionalUCA.txt
index 30575f83c48..b6c1f286732 100644
--- a/Build/source/libs/icu/icu-src/source/data/unidata/FractionalUCA.txt
+++ b/Build/source/libs/icu/icu-src/source/data/unidata/FractionalUCA.txt
@@ -1,101 +1,101 @@
# Fractional UCA Table, generated from the UCA DUCET
-# 2022-08-24 [MS]
-# VERSION: UCA=15.0.0, UCD=15.0.0
+# 2023-08-11 [MS]
+# VERSION: UCA=15.1.0, UCD=15.1.0
# © 2016 and later: Unicode, Inc. and others.
# License & terms of use: http://www.unicode.org/copyright.html
# For a description of the format and usage, see
# http://www.unicode.org/reports/tr35/tr35-collation.html
-[UCA version = 15.0.0]
-# Unified_Ideograph: 97058 characters
-[Unified_Ideograph 4E00..9FFF FA0E..FA0F FA11 FA13..FA14 FA1F FA21 FA23..FA24 FA27..FA29 3400..4DBF 20000..2A6DF 2A700..2B739 2B740..2B81D 2B820..2CEA1 2CEB0..2EBE0 30000..3134A 31350..323AF]
+[UCA version = 15.1.0]
+# Unified_Ideograph: 97680 characters
+[Unified_Ideograph 4E00..9FFF FA0E..FA0F FA11 FA13..FA14 FA1F FA21 FA23..FA24 FA27..FA29 3400..4DBF 20000..2A6DF 2A700..2B739 2B740..2B81D 2B820..2CEA1 2CEB0..2EBE0 2EBF0..2EE5D 30000..3134A 31350..323AF]
-[radical 1=⼀一:一𪛙ä¸-丆𠀀-𠀂𬺰𰀀万-丌äºå„𠀃-𠀆𪛚𪜀ðªœð«€ð¬º±-𬺴ð°€-𰀄ä¸-专丗𠀇-𠀌𪜂𫠡𬺵-𬺹𰀅-𰀇且-世丘-ä¸ã€ð €-𠀗𫠢𫠣𬺺-𬺾𰀈-𰀊ð±ä¸ž-丢ãã‚𠀘-𠀚𠀜𠀞-ð € ð«ð« ¤ð« ¥ð¬º¿-𬻉𰀋ð±‘丣-严丽鿖𠀡-𠀤𠀦-𠀨𠀪𠀫ð«‚ð« ¦-𫠩𬻊-𬻒𰀌ð±’並丧𠀬-𠀮𠀰-𠀴𪜃𫠪-𫠭𬻓-𬻘ð°€ð±“-ð±—鿗𠀵𠀶𠀸𠀺𠀻𪜄𫠮𬻙-ð¬»ð°€Ž-𰀑𠀽-ð €ð ¤¢ðªœ…ð« ¯-𫠲𬻞-𬻠𰀒-𰀕ð±˜-ð±ð -ð …𪜆𫠳-𫠵𬻡-𬻥ð±žð±Ÿð †-ð ˆð Šð ‹ð« ¶ð¬»¦-𬻨𰀖-𰀘ð± ð±¡ð Œð ð« ·-𫠼𬻩-𬻮𰀙𰀚ð±¢-ð±¤ð Ž-ð ’ð«ƒð« ½ð¬»¯ð°€›ð°€œð±¥ä¶¶ð “ð ”𫠾𫠿𬻰ð°€ð±¦ð±§ð •ð —-ð ›ð ð¤³ðªœ‡ð«¡€ð±¨ð –𰀞ð±©ð Ÿð«¡ð«¡‚ð  ð°€Ÿð¬»±ð±ª]
+[radical 1=⼀一:一𪛙ä¸-丆𠀀-𠀂𬺰𰀀万-丌äºå„𠀃-𠀆𪛚𪜀ðªœð«€ð¬º±-𬺴ð°€-𰀄ä¸-专丗𠀇-𠀌𪜂𫠡𬺵-𬺹𮯰𰀅-𰀇且-世丘-ä¸ã€ð €-𠀗𫠢𫠣𬺺-𬺾𰀈-𰀊ð±ä¸ž-丢ãã‚𠀘-𠀚𠀜𠀞-ð € ð«ð« ¤ð« ¥ð¬º¿-𬻉𰀋ð±‘丣-严丽鿖𠀡-𠀤𠀦-𠀨𠀪𠀫ð«‚ð« ¦-𫠩𬻊-𬻒𰀌ð±’並丧𠀬-𠀮𠀰-𠀴𪜃𫠪-𫠭𬻓-𬻘ð°€ð±“-ð±—鿗𠀵𠀶𠀸𠀺𠀻𪜄𫠮𬻙-ð¬»ð°€Ž-𰀑𠀽-ð €ð ¤¢ðªœ…ð« ¯-𫠲𬻞-𬻠𰀒-𰀕ð±˜-ð±ð -ð …𪜆𫠳-𫠵𬻡-𬻥ð±žð±Ÿð †-ð ˆð Šð ‹ð« ¶ð¬»¦-𬻨𰀖-𰀘ð± ð±¡ð Œð ð« ·-𫠼𬻩-𬻮𰀙𰀚ð±¢-ð±¤ð Ž-ð ’ð«ƒð« ½ð¬»¯ð°€›ð°€œð±¥ä¶¶ð “ð ”𫠾𫠿𬻰ð°€ð±¦ð±§ð •ð —-ð ›ð ð¤³ðªœ‡ð«¡€ð±¨ð –𰀞ð±©ð Ÿð«¡ð«¡‚ð  ð°€Ÿð¬»±ð±ª]
[radical 2=â¼ä¸¨:丨丩ð ¡ð ¢ä¸ªä¸«ãƒã„𫡃𫡄𰀠ð±«ä¸­-丰ð £ðªœˆð«¡…𰀡丱ð ¥ð°€¢ð ¦ð¬»²ð¬»³ð°€£ð±¬ä¸²ð §ð ¨ð«¡†ä¸³ð ©-ð ¬ð«¡‡ð°€¤ð±­-ð±°ä¸´ð ­-ð ¯ðªœ‰ð¬»´ð°€¥ä¸µð °ð ±ð«¡ˆð«¡‰ð¬»µ-𬻷𰀦𰀧ð±±-ð±³ð ³ð±´ð ´ð µð±µð¬»¸ð¬»¹ð ¶ð«¡Šð ¸ð«¡‹ð«¡Œð±¶ð ¹ð°€¨ð ºð«¡ð »ð«¡Ž]
-[radical 3=⼂丶:丶丷𪜊丸义ð ¼ð ½ð¬»ºä¸¹ä¸ºð ¿ð±·ä¸»ä¸¼ð ‚€-𠂂𬻻𪜋举𬻼𠂃𰀩𬻽𠂄𬻾𠂅]
-[radical 4=⼃丿:丿-乄ã…𠂆-𠂊𬻿-𬼂𰀪𰀫久-么乊𠂋-ð ‚Žð«„ð«¡ð¬¼ƒð¬¼„ð±¸ð±¹ä¹‹ä¹Œå°¹ð ‚-𠂓𫜵𬼅𬼆ä¹-ä¹ð ‚”-ð ‚¡ð«¡ð¬¼‡ð¬¼ˆð°€¬ð±ºä¹‘-ä¹”ã†ð ‚¢-𠂧𠂩-𠂫𠂭𪜌𫡑-𫡓𬼉ð±»ä¹•ð ‚¯ð«¡”𬼊ð±¼ä¹–𠂲𠂳𠂶𫡕-𫡘𬼋乗𠂴𠂷ðªœð«¡™ð«¡šä¹˜ð ‚¹-𠂾𪜎ðªœð«¡›ð«¡œð¬¼Œ-ð¬¼ð±½ð ‚¿-𠃂ð«¡ð¬¼ð ƒƒð ƒ„ð«¡žð°€­-𰀯𠃆ð±¾ð ƒ…𬼑ð±¿ð ƒ‡ð«¡Ÿð«¡ ð¬¼’-𬼕𠃈𫡡]
+[radical 3=⼂丶:丶丷𪜊丸义ð ¼ð ½ð¬»ºä¸¹ä¸ºð ¿ð±·ä¸»ä¸¼ð ‚€ð ‚𮯱𠂂𬻻𪜋举𬻼𠂃𰀩𬻽𠂄𬻾𠂅]
+[radical 4=⼃丿:丿-乄ã…𠂆-𠂊𬻿-𬼂𰀪𰀫久-么乊𠂋-ð ‚Žð«„ð«¡ð¬¼ƒð¬¼„ð±¸ð±¹ä¹‹ä¹Œå°¹ð ‚-𠂓𫜵𬼅𬼆𮯲ä¹-ä¹ð ‚”-ð ‚¡ð«¡ð¬¼‡ð¬¼ˆð°€¬ð±ºä¹‘-ä¹”ã†ð ‚¢-𠂧𠂩-𠂫𠂭𪜌𫡑-𫡓𬼉ð±»ä¹•ð ‚¯ð«¡”𬼊ð±¼ä¹–𠂲𠂳𠂶𫡕-𫡘𬼋乗𠂴𠂷ðªœð«¡™ð«¡šä¹˜ð ‚¹-𠂾𪜎ðªœð«¡›ð«¡œð¬¼Œ-ð¬¼ð±½ð ‚¿-𠃂ð«¡ð¬¼ð ƒƒð ƒ„ð«¡žð°€­-𰀯𠃆ð±¾ð ƒ…𬼑ð±¿ð ƒ‡ð«¡Ÿð«¡ ð¬¼’-𬼕𠃈𫡡]
[radical 5=⼄乙:ä¹™-乛𠃉-𠃎𠃑乜ä¹é¾´ð ƒð ƒä¹ž-ä¹ ã‡-ã‰ð ƒ’-𠃔𬼖𰀰乣-书ãŠã‹ð ¾ð ƒ•-ð ƒð«¡¢ð¬¼—𬼘𰀱𱎀乧ãŒ-ã𠃞-𠃣ðªœð«¡£ð¬¼™-𬼜𰀲-ð°€µð±Žä¹¨-ä¹°ã-ã•ð ƒ¤-𠃨𪜑𫡤ð¬¼-𬼢𰀶-𰀼𱎂𱎃乱乲ã–-ã˜ð ƒ©ð ƒªð ƒ¬ð §ðªœ’𪜓𫡥-𫡧𬼣𬼤𰀽-ð°€ð±Ž„𱎅乳-乸ã™-ã›ð ƒ­-𠃯𪜔𫡨𬼥-𬼧ð°-ð°ƒð±Ž†ä¹¹-ä¹¼ãœ-ã ð ‚¸ð ƒ²-𠃷𪜕𫡩𬼨-𬼫ð°„-ð°ˆð±Ž‡ä¹½ð ƒ¸-𠃻𤱡𪜖𪜗𫡪-𫡬𬼬𬼭ð°‰-ð°‹ð±Žˆ-𱎋乾-亀ã¡-ã£ð ƒ¼-𠄂𪜘𫡭𫡮𬼮-𬼱ð°Œäºã¤ð¥€ðªœ™ðªœšð¬¼²-𬼴ð°ð±ŽŒð±Žäº‚-亄𠄃𠄄𪜛𫡯𫡰𬼵𱎎𠄅-𠄈𢆡ð°Žð±Žð°ã¥ð°ð „‰ð°‘ð±Žã¦ð „Šð „‹]
[radical 6=⼅亅:亅𠄌了ð „-ð „亇𠄑𬼶-𬼸予ã§ð „’-ð „”ð°’争𠀩𠄕𬼹亊𠄖-𠄘𪜜事ã¨ð „™ð¬¼ºð „šð°“ð°”ð „›ðªœð¬¼»ð „œð±Ž‘ð „𬼼]
[radical 7=⼆二:二𠄞-ð „ äº-äºð¬¼½äº‘-亖𠄡ð°•äº—ð°–亘-亚𠄢-𠄧𫡱ð°—些亜𠀥𠄨-𠄪𫡲äº-亟ã©ð „«-𠄯𫡳𬼾𱎒𠄰-𠄳𬼿𬽀ð°˜ð „µ-𠄸ð¬½ð±Ž“𱎔𠄹𠄺𫡴𠄻𬽂𠄼-𠄾𫡵𫡶ð°™ð±Ž•ð±Ž–𠄿𪜞𫡷ð°šð±Ž—𠅀𪜟ð°›ð«¡¸ð«¡¹]
-[radical 8=⼇亠:亠-亣ð …𠅂𪜠𪜡𬽃交-产ãªã«ð …ƒ-ð …‡ð«…𬽄ð°œäº¨-亪ã¬ð …ˆ-𠅋𪜢𫡺𬽅-𬽇享京ã­ð …Œ-𠅒𬽈𬽉亭-亲𠅓-𠅕𬽊-𬽌亳𠅖𠅘-ð …ð«¡»ð¬½ð±Ž˜ð …ž-𠅧𪜣𬽎-𬽒ð°äº´äºµð …¨-𠅯𠅲𪜤𫡼𬽓𬽔ð°žð°Ÿäº¶äº·ã®ð …³-𠅸𠅺-𠅼𠆀𫡽𫡾𬽕-𬽘𠅾𠅿𫡿𫢀ð †-𠆉𪜥𬽙𬽚ð° ð±Ž™äº¸ð †‹-𠆒𠆔𠆖-𠆘𬽛𬽜ã¯ð«¢ð«¢‚ð¬½ð¬½žð †šð †ðªœ¦ð«¢ƒäº¹ð †žð¬½Ÿð«¢„𬽠𠆟-𠆡]
-[radical 9=⼈人:人亻𠆢亼-亿𠆣-𠆥𫢅什-仓𠆦-𠆨𪜧𫢆-𫢈𬽡𬽢ð°¡ð±Žšä»”-ä»­ã°-ã·ð †©-𠆭𠆯𠆰𠆳ð«†ð«¢‰ð«¢Šð¬½£-𬽨ð°¢ð°£ð±Ž›-𱎟仮-伬佤ã¸-㑀𠆴-𠇑𠇓-𠇕𪜨-𪜫𫢋-ð«¢ð¬½©-𬽭ð°¤-ð°ªð±Ž -𱎧伭-佣佥-佨ã‘-㑈𠇖-ð ˆðªœ¬-𪜴𫢑-𫢘𬽮-𬽺ð°«-ð°°ð±Ž¨-𱎪佩-侭鿇㑉-㑖𠈃-𠈣𠈥-𠈬𪜵-𪜺ð«‡ð«ˆð«¢™-ð«¢ð¬½»-𬾄ð°±-𰂄𱎫-𱎭侮-ä¿­ã‘—-㑢𠈭-𠉢𪜻-ðª‚𫢞-𫢩𬾅-𬾙𰂅-𰂎𱎮-𱎲修-倿㑣㑥-㑭𠉣-𠊦𠋟ðªƒ-ðªŠð«‰ð«¢ª-𫢼𬾚-𬾩ð°‚-𰂖𱎳-𱎺å€-å¿ã‘¤ã‘®-㑲𠊧-ð ‹ð ‹’-ð ‹žð ‹ -𠋬ðª‹-ðª•ð«Šð«¢½-𫣃𬾪-𬾼𰂗-𰂡𱎻-𱎾傀-傩鿘㑳-㑺𠋭-𠌅𠌇-ð Œð Œ -𠌩ðª–-ðªŸð«£„-ð«£ð¬¾½-ð¬¿ð°‚¢-𰂩𱎿-ð±„傪-åƒé¿™ã‘»-ã’𠌫-ð ¡ð £ð ¤ð ¦-ð ¬ð Žµðª -ðª¤ð«‹ð«£‘-𫣖𫣞ð¬¿-𬿠𰂪-𰂬ð±…-ð±‹åƒŽ-僱僳僴僷㒂-ã’ð ¥ð ­-𠎗𠎙𠎚ð Ž-ð Ž´ð ðª¥-ðªªð«£—𫣘𫣛-ð«£ð«£Ÿ-𫣢𬿡-𬿮𰂭-ð°‚²ð±Œ-ð±“僲僵僶僸-å„ã’‘-㒘𠎷-ð ð ‘ð ”-ð ¦ðª«-ðª¯ð«££-𫣬𬿯-𬿺𰂳-ð°‚¹ð±”-ð±—å„-å„žå„«é¿šã’™-ã’œð ’ð ¨-ð ‡ðª°-ðª³ð«£­-𫣱𬿻-𭀀𰂺-ð°‚½ð±˜-ð±šå„Ÿ-優儬ã’ã’žð ˆ-ð ›ð -ð ¢ðª´-ðª¶ð«£²-𫣸ð­€-ð­€…ð°‚¾-ð°ƒð±›å„­-儲㒟㒠ð £-ð ºðª·-ðª¹ð«£¹-𫤃𭀆-𭀌𰃂-𰃆ð±œð±å„³-儵㒡-ã’£ð »-ð ‘𠑃-ð ‘Œðªº-ðª¼ð«¤„-𫤈ð­€-ð­€ð°ƒ‡ð°ƒˆð±žå„¶ã’¤-ã’¦ð ‘-ð ‘–ð ‘žðª½ð«¤‰-𫤋ð­€ð­€‘ð±Ÿð± å„·-儺㒧㒨𠑗-ð ‘ð ‘Ÿ-ð ‘£ðª¾ð«¤Œ-𫤑ð±¡å„»å„¼ð ‘¤-𠑩𭀒儽㒩𠑪-𠑯𫤒-𫤔𭀓𭀔𰃉ð±¢å„¾ð ‘°ð«¤•ð­€•ð«¤–㒪𠑲𠑳ð±£ð ‘µ]
+[radical 8=⼇亠:亠-亣ð …𠅂𪜠𪜡𬽃交-产ãªã«ð …ƒ-ð …‡ð«…𬽄ð°œäº¨-亪ã¬ð …ˆ-𠅋𪜢𫡺𬽅-𬽇享京ã­ð …Œ-𠅒𬽈𬽉亭-亲𠅓-𠅕𬽊-𬽌亳𠅖𠅘-ð …ð«¡»ð¬½ð±Ž˜ð …ž-𠅧𪜣𬽎-𬽒ð°äº´äºµð …¨-𠅯𠅲𪜤𫡼𬽓𬽔ð°žð°Ÿäº¶äº·ã®ð …³-𠅸𠅺-𠅼𠆀𫡽𫡾𬽕-𬽘𠅾𠅿𫡿𫢀𮯳ð †-𠆉𪜥𬽙𬽚ð° ð±Ž™äº¸ð †‹-𠆒𠆔𠆖-𠆘𬽛𬽜ã¯ð«¢ð«¢‚ð¬½ð¬½žð †šð †ðªœ¦ð«¢ƒäº¹ð †žð¬½Ÿð«¢„𬽠𠆟-𠆡]
+[radical 9=⼈人:人亻𠆢亼-亿𠆣-𠆥𫢅什-仓𠆦-𠆨𪜧𫢆-𫢈𬽡𬽢𮯴ð°¡ð±Žšä»”-ä»­ã°-ã·ð †©-𠆭𠆯𠆰𠆳ð«†ð«¢‰ð«¢Šð¬½£-𬽨𮯵-𮯷ð°¢ð°£ð±Ž›-𱎟仮-伬ã¸-㑀𠆴-𠇑𠇓-𠇕𪜨-𪜫𫢋-ð«¢ð¬½©-𬽭𮯸𮯹ð°¤-ð°ªð±Ž -𱎧伭-佨ã‘-㑈𠇖-ð ˆðªœ¬-𪜴𫢑-𫢘𬽮-𬽺𮯺𮯻ð°«-ð°°ð±Ž¨-𱎪佩-侭鿇㑉-㑖𠈃-𠈣𠈥-𠈬𪜵-𪜺ð«‡ð«ˆð«¢™-ð«¢ð¬½»-𬾄ð°±-𰂄𱎫-𱎭侮-ä¿­ã‘—-㑢𠈭-𠉢𪜻-ðª‚𫢞-𫢩𬾅-𬾙𰂅-𰂎𱎮-𱎲修-债值-倿㑣㑥-㑭𠉣-𠊦𠋟ðªƒ-ðªŠð«‰ð«¢ª-𫢼𬾚-𬾩𮯼-𮯾ð°‚-𰂖𱎳-𱎺倻å€-å¿ã‘¤ã‘®-㑲𠊧-ð ‹ð ‹’-ð ‹žð ‹ -𠋬ðª‹-ðª•ð«Šð«¢½-𫣃𬾪-𬾼𮯿-ð®°ð°‚—-𰂡𱎻-𱎾傀-傩鿘㑳-㑺𠋭-𠌅𠌇-ð Œð Œ -𠌩ðª–-ðªŸð«£„-ð«£ð¬¾½-ð¬¿ð°‚¢-𰂩𱎿-ð±„傪-åƒé¿™ã‘»-ã’𠌫-ð ¡ð £ð ¤ð ¦-ð ¬ð Žµðª -ðª¤ð«‹ð«£‘-𫣖𫣞ð¬¿-𬿠𰂪-𰂬ð±…-ð±‹åƒŽ-僱僳僴㒂-ã’ð ¥ð ­-𠎗𠎙𠎚ð Ž-ð Ž´ð ðª¥-ðªªð«£—𫣘𫣛-ð«£ð«£Ÿ-𫣢𬿡-𬿮𮰂𰂭-ð°‚²ð±Œ-ð±“僲僵-å„ã’‘-㒘𠎷-ð ð ‘ð ”-ð ¦ðª«-ðª¯ð«££-𫣬𬿯-𬿺𰂳-ð°‚¹ð±”-ð±—å„-å„žå„«é¿šã’™-ã’œð ’ð ¨-ð ‡ðª°-ðª³ð«£­-𫣱𬿻-𭀀𰂺-ð°‚½ð±˜-ð±šå„Ÿ-優儬ã’ã’žð ˆ-ð ›ð -ð ¢ðª´-ðª¶ð«£²-𫣸ð­€-ð­€…ð°‚¾-ð°ƒð±›å„­-儲㒟㒠ð £-ð ºðª·-ðª¹ð«£¹-𫤃𭀆-𭀌𰃂-𰃆ð±œð±å„³-儵㒡-ã’£ð »-ð ‘𠑃-ð ‘Œðªº-ðª¼ð«¤„-𫤈ð­€-ð­€ð°ƒ‡ð°ƒˆð±žå„¶ã’¤-ã’¦ð ‘-ð ‘–ð ‘žðª½ð«¤‰-𫤋ð­€ð­€‘ð±Ÿð± å„·-儺㒧㒨𠑗-ð ‘ð ‘Ÿ-ð ‘£ðª¾ð«¤Œ-𫤑ð±¡å„»å„¼ð ‘¤-𠑩𭀒儽㒩𠑪-𠑯𫤒-𫤔𭀓𭀔𰃉ð±¢å„¾ð ‘°ð«¤•ð­€•ð«¤–㒪𠑲𠑳ð±£ð ‘µ]
[radical 10=⼉儿:å„¿-元𠑶𭀖-𭀘兄𠑷𠑸𭀙-ð­€ð°ƒŠå……-å…Šã’«ð ‘¹-𠑼𫤗克-å…‘ð ‘½-𠒂𭀞-𭀠𰃋兒-兖㒬𠒃-ð ’‹ðª¿ð«¤˜ð­€¡-𭀤𰃌兗-兙𠒌-ð ’𪞀ð«Œð«¤™ð­€¥å…šå…›ã’­ð ’-ð ’–ðªžð­€¦ð­€§ð±¤ð±¥å…œ-兞㒮𠒗-ð ’𫤚𫤛𭀨ð°ƒð±¦-ð±¨å…Ÿå… ð ’ž-𠒣𫤜ð«¤ð­€©-𭀭𰃎ð±©å…¡ð ’¤-𠒦𪞂𫤞𭀮𭀯ð°ƒð°ƒå…¢ð ’§-𠒯𫤟𫤠𭀰-𭀳𰃑𰃒ð±ª-ð±¬ð ’°-𠒲𠒴-𠒷𪞃-𪞅𭀴ð±­å…£ð ’³ð ’¸-𠒾𭀵𰃓𰃔ð±®ð ’¿-𠓅𠓇𫤡𫤢𭀶-𭀸ð±¯ã’¯ð “†ð “ˆ-𠓊𫤣-𫤦𭀹𭀺𠓋𠓎𪞆𫤧𰃕ð±°ð “ð “ð “兤𠓑-𠓔𫤨𠓕-ð “š]
-[radical 11=⼊入:入兦𠓛內𠓜-𠓞㒰㒱𠓟𭀻ð±±å…¨æ°½ã’²ð ‡’ð “ -𠓣𰃖㒳㒴𠓤-𠓨𭀼-𭀾兩𠓩𭀿𰃗-𰃙兪𠓪-𠓬ð­€ð°ƒšð°ƒ›ð±²ð “­-𠓰𪞇𫤩𠓱𰃜𠌆𠓲𠓳𫤪𠓴-ð “¼ð­ð “½ð­‚𠓾𠓿ð­ƒ]
+[radical 11=⼊入:入兦𠓛內𠓜-𠓞㒰㒱𠓟𭀻ð±±å…¨æ°½ã’²ð ‡’ð “ -𠓣𰃖㒳㒴𠓤-𠓨𭀼-𭀾兩𠓩𭀿𮰃𰃗-𰃙兪𠓪-𠓬ð­€ð°ƒšð°ƒ›ð±²ð “­-𠓰𪞇𫤩𠓱𰃜𠌆𠓲𠓳𫤪𠓴-ð “¼ð­ð “½ð­‚𠓾𠓿ð­ƒ]
[radical 12=⼋八:八𠔀公-å…¯ð ”-𠔄兰𠔅𠔆ð­„å…±-兴龹𠔈𠔉𪞈𫤫𫤬ð­…ð­†ð°ƒ-𰃟ð±³å…µã’µ-㒷𠔊-ð ”ð­‡å…¶-å…¸ð ”𠔑𠩖𫤭ð­ˆ-ð­‹ð°ƒ å…¹å…»ã’¸ð ”’-ð ”—ð­Œ-ð­Žð°ƒ¡ð±´å…ºå…¼ð ”™-𠔛𫤮𫤯ð­ð­ð°ƒ¢ð°ƒ£å…½ð ”œð ”𫤰ð­‘-ð­“𰃤𠔞-𠔧𪞉𫤱ð­”-ð­–兾兿𠔨-𠔮𪞊𫤲ð­—ð­˜ð°ƒ¥ð±µð±¶ð ”¯-𠔱𠭻𪞋ð­™ðªžŒð­š-ð­œå†€ð ”³-ð ”µðªžð œå†ð ”¶ð ”·ð«¤³ð±·ð±¸ð ”¸-𠔺𫤴𫤵ð­ã’¹ð­žð«¤¶]
-[radical 13=⼌冂:冂𠔼𰃦冃-冈𠔽-ð •€ð­Ÿå†‰-册ð •-ð •Šð­ ð±¹å†å†Žð •‹-ð •ð­¡ð­¢ð°ƒ§ð°ƒ¨ð±ºð±»å†ð •-𠕕𪞎å†ã’ºð •–-ð •šð­£-ð­©å†‘冒𠕛𠕜ð«ð­ªð­«å†“冔ð •-ð •Ÿð­¬-ð­¯ð°ƒ©ð°ƒªå†•ã’»ã’¼ð • -𠕢最㒽𠕣-ð •¥ð­°ð­±ð°ƒ«ã’¾ð •¦ð •§ð«¤·ð •¨ð •©ð±¼ð •ªð •¬ð°ƒ¬ð°ƒ­ð •­-ð •°ð­²ð •±ã’¿ð •²]
-[radical 14=â¼å†–:冖-冘㓀ã“𠕳𠕴写冚𠕵-𠕸ð­³ð°ƒ®å†›å†œð •¹-ð •¿å†ð –€-ð –ƒðªžðªžð«¤¸ð°ƒ¯ð°ƒ°å†žð –„-𠖆𪞑ð­´å†Ÿå† ã“‚ð –‡-𠖋𫤹𫤺冡-冧𠖌-𠖒𪞒ð­µ-ð­»ð°ƒ±ð±½å†¨ð –“𪞓ð­¼-ð­¿ã“ƒð –”-𠖙𪞔𭂀𠖚𠖛ð­‚𭂂𰃲冩𠖜-𠖞𪞕ð±¾ã“„𫤻𭂃-𭂅冪𠖠-𠖥𫤼𠖦-𠖨𫤽𠖩-𠖫𰃳𰃴]
-[radical 15=⼎冫:冫𠖬𫤾㓅𠖭𭂆𭂇𰃵冬-冯𠖮-𠖰𪞖𫤿𭂈ð±¿å†°-冴㓆㓇𠖱-𠖶𪞗-𪞚𫥀-𫥃𰃶-𰃸ð±€ð±å†µ-冻鿑㓈𠖷-ð –¿ð —𪞛-ðªžð«¥„-𫥈𭂉𭂊𰃹𰃺ð±‚冼-净㓉-ã“𠗀𠗂-𠗇𪞞𫥉-𫥋𭂋-𭂎𰃻-𰃽ð±ƒå‡-凃㓎ã“ð —ˆ-𠗗𪞟-𪞡ð«Žð«¥Œ-𫥎ð­‚ð­‚𰃾ð±„-ð±†å‡„-凎ã“-ã“’ð —˜-𠗤𪞢-𪞥ð«¥ð«¥ð­‚‘-𭂕𰃿-ð°„å‡-凑㓓𠗥-𠗰𪞦-𪞨ð«ð«¥‘-𫥔𭂖-𭂘𰄂-ð°„„ð±‡å‡’-凖㓔㓕𠗱-𠗹𪞩𪞪𫥕𫥖𭂙-𭂛𰄅-𰄇ð±ˆ-ð±Šå‡—ã“–ð —º-𠘃𪞫𪞬𫥗𫥘𭂜-𭂞𰄈-ð°„Šð±‹å‡˜ã“—𠘄-𠘉𠘓𪞭𫥙𭂟-ð­‚¡ð°„‹ð°„Œð±Œå‡™-凜𠘊-𠘑𪞮𫥚-𫥜𭂢-𭂤ð°„å‡å‡žð ˜’𠘔𠘕𪞯𭂥凟𠘖-𠘜𥂳𭂦𰄎ð°„ð ˜-𠘡ð«¥ð­‚§ð ˜¢ð ˜£ðªž°ð­‚¨ð ˜¤ð ˜¥é¿›ð ˜¦]
-[radical 16=â¼å‡ :几𠘧𠘨凡-凣ðª›å‡¤ð ˜©-ð ˜°ð­‚©-𭂬凥-凧𠘱-𠘴凨-凫𠘵-𠘻𪞱𫥞𫥟𭂭-𭂯凬𠘼-𠙅𪞲𭂰凭-凯𠙆-𠙎𠫮𭂱𭂲ð ™-𠙑𭂳𭂴𠙒-𠙖𪞳𫥠ð°„凰㓘𠙘𠙙𠙛-𠙞𪞴𫥡𭂵𭂶凱凲ð ‰ð ™Ÿ-𠙣𫥢𭂷𠙤-𠙧𪞵𫥣𭂸𭂹凳凴𠙨-ð ™«ð ™­-𠙰𭂺𠙱-ð ™³]
+[radical 13=⼌冂:冂𠔼𰃦冃-冈𠔽-ð •€ð­Ÿå†‰-册囘ð •-ð •Šð­ ð±¹å†å†Žð •‹-ð •ð­¡ð­¢ð°ƒ§ð°ƒ¨ð±ºð±»å†ð •-𠕕𪞎å†ã’ºð •–-ð •šð­£-ð­©å†‘冒𠕛𠕜ð«ð­ªð­«å†“冔ð •-ð •Ÿð­¬-ð­¯ð°ƒ©ð°ƒªå†•ã’»ã’¼ð • -𠕢最㒽𠕣-ð •¥ð­°ð­±ð°ƒ«ã’¾ð •¦ð •§ð«¤·ð •¨ð •©ð±¼ð •ªð •¬ð°ƒ¬ð°ƒ­ð •­-ð •°ð­²ð •±ã’¿ð •²]
+[radical 14=â¼å†–:冖-冘㓀ã“𠕳𠕴写冚𠕵-𠕸ð­³ð°ƒ®å†›å†œð •¹-ð •¿å†ð –€-ð –ƒðªžðªžð«¤¸ð®°„𰃯𰃰冞𠖄-𠖆𪞑ð­´å†Ÿå† ã“‚ð –‡-𠖋𫤹𫤺冡-冧𠖌-𠖒𪞒ð­µ-ð­»ð°ƒ±ð±½å†¨ð –“𪞓ð­¼-ð­¿ã“ƒð –”-𠖙𪞔𭂀𮰅𠖚𠖛ð­‚𭂂𰃲冩𠖜-𠖞𪞕ð±¾ã“„𫤻𭂃-𭂅冪𠖠-𠖥𫤼𠖦-𠖨𫤽𠖩-𠖫𰃳𰃴]
+[radical 15=⼎冫:冫𠖬𫤾㓅𠖭𭂆𭂇𰃵冬-冯𠖮-𠖰𪞖𫤿𭂈𮰆ð±¿å†°-冴㓆㓇𠖱-𠖶𪞗-𪞚𫥀-𫥃𰃶-𰃸ð±€ð±å†µ-冻鿑㓈𠖷-ð –¿ð —𪞛-ðªžð«¥„-𫥈𭂉𭂊𰃹𰃺ð±‚冼-净㓉-ã“𠗀𠗂-𠗇𪞞𫥉-𫥋𭂋-𭂎𰃻-𰃽ð±ƒå‡-凃㓎ã“ð —ˆ-𠗗𪞟-𪞡ð«Žð«¥Œ-𫥎ð­‚ð­‚𰃾ð±„-ð±†å‡„-凎ã“-ã“’ð —˜-𠗤𪞢-𪞥ð«¥ð«¥ð­‚‘-𭂕𰃿-ð°„å‡-凑㓓𠗥-𠗰𪞦-𪞨ð«ð«¥‘-𫥔𭂖-𭂘𰄂-ð°„„ð±‡å‡’-凖㓔㓕𠗱-𠗹𪞩𪞪𫥕𫥖𭂙-𭂛𰄅-𰄇ð±ˆ-ð±Šå‡—ã“–ð —º-𠘃𪞫𪞬𫥗𫥘𭂜-𭂞𮰇𰄈-ð°„Šð±‹å‡˜ã“—𠘄-𠘉𠘓𪞭𫥙𭂟-𭂡𮰈𰄋𰄌ð±Œå‡™-凜𠘊-𠘑𪞮𫥚-𫥜𭂢-𭂤ð°„å‡å‡žð ˜’𠘔𠘕𪞯𭂥凟𠘖-𠘜𥂳𭂦𰄎ð°„ð ˜-𠘡ð«¥ð­‚§ð ˜¢ð ˜£ðªž°ð­‚¨ð ˜¤ð ˜¥é¿›ð ˜¦]
+[radical 16=â¼å‡ :几𠘧𠘨凡-凣ðª›å‡¤ð ˜©-ð ˜°ð­‚©-𭂬凥-凧𠘱-𠘴凨-凫𠘵-𠘻𪞱𫥞𫥟𭂭-𭂯凬𠘼-𠙅𪞲𭂰𮰉凭-凯𠙆-𠙎𠫮𭂱𭂲ð ™-𠙑𭂳𭂴𮰊𠙒-𠙖𪞳𫥠ð°„凰㓘𠙘𠙙𠙛-𠙞𪞴𫥡𭂵𭂶凱凲ð ‰ð ™Ÿ-𠙣𫥢𭂷𠙤-𠙧𪞵𫥣𭂸𭂹𮰋凳凴𠙨-ð ™«ð ™­-𠙰𭂺𠙱-ð ™³]
[radical 17=â¼å‡µ:凵𠙴𠙵凶𠙶-𠙸𰄑凷-击𠙹-𠙻𠙽𪞶凼㓙𠙾-𠚊𭂻函𠚋-ð šðªž·ð°„’ð±å‡¾ð šŽ-ð šð±Žð±ð š’𠚓𪞸𫥤𭂼𰄓𰄔𠚔-𠚗𭂽𰄕凿𠚘𪞹𫥥𫥦𭂾ð±ðªžºðªž»ð«¥§-𫥩ð±‘𠚙𠚚ð¢­ð«¥ªð«¥«ð­‚¿ð°„–𠚜𫥬𭃀𰄗𰄘ð šð šžð­ƒð¢‡•ðªž¼ð šŸðªž½ð«¥­-𫥯𠚠-𠚢]
-[radical 18=⼑刀:刀-刂𠚣刃刄𠚤刅-刈𠚥-𠚬𭃂-𭃄𰄙𰄚刉-åˆã“š-㓜𠚭-𠚴𠚶𠚻𫥰𫥱𭃅-𭃇𰄛-ð°„刎-创ã“㓞𠚵𠚷-𠚺𠚼-ð ›ðªž¾-𪟀𫥲-𫥴𭃈-𭃌𰄞-ð°„¢ð±’-ð±•åˆœ-刭㓟㓠𠛎-𠛦ðªŸðªŸ‚ð«¥µ-ð«¥»ð­ƒ-𭃔𰄣-𰄦ð±–ð±—刮-剂㓡-㓦𠛧-ð œðªŸƒ-𪟅𫥼-𫥿𭃕-𭃡𰄧-ð°„«ð±˜ð±™å‰ƒ-剑㓧-ã“«ð œ-𠜰𪟆𪟇ð«ð«¦€ð«¦ð­ƒ¢-𭃨𰄬-ð°„²ð±šð±›å‰’-剧㓬-㓰𠜱-ð œð ¶ðªŸˆðªŸ‰ð«¦‚-𫦅𭃩-𭃳𰄳-𰄶ð±œ-ð± å‰¨å‰ª-剱剶㓱-㓶ð -ð µð ·-ð ¾ðªŸŠ-ðªŸð«¦†-𫦌𭃴-𭃾𰄷-𰄺剩割-創㓷-ã“»ð ¿-ð ž›ð ž-𠞤𪟎-ðªŸð«¦-𫦑𭃿-ð­„…ð±¡å‰·-剿㓼㓽𠞥-ð ŸðªŸ‘-𪟓𫦒-𫦔𭄆-ð­„ð°„»-ð°„½ð±¢ð±£åŠ€-劄㓾-㔉𠟂-ð ŸŸð Ÿ¡-𠟥𫦕-𫦙ð­„ð­„‘ð°„¾-ð°…‚ð±¤åŠ…-åŠã”Šð Ÿ ð Ÿ¦-𠟹𪟔𫦚𭄒𰅃åŠ-劔㔋-ã”𠟺-𠠊𪟕𪟖𭄓-ð­„—ð°…„ð±¥åŠ•ã”Žã”ð  Œ-𠠚𫦛𭄘𭄙𰅅-ð°…‡ã”ð  ›-𠠠𫦜-𫦞𭄚𭄛ð±¦åŠ–㔑𠠡-𠠣𫦟𫦠𭄜㔒𠠤𠠦-ð  ©ð±§ð±¨åŠ—劘𠠥𠠪-𠠭劙劚𠠮𫦡𰅈𠠯ð­„𫦢𠠰𠠱𫦣]
-[radical 19=⼒力:力劜𠠲𫦤åŠåŠžð  ³-𠠵𭄞ð±©åŠŸ-劢㔓㘞𠆮𠠶-𠠸𭄟𭄠ð±ªåŠ£-动㔔-ã”–ð  ¹-ð ¡ð«¦¥ð°…‰åŠ©-労㔗㔘𠡂-ð ¡ðªŸ—-𪟙𫦦𫦧𰅊-ð°…Œð±«-ð±¯åŠµ-势㔙-㔛𠡑-ð ¡ðªŸšðªŸ›ð«¦¨ð­„¡-ð­„¥ð°…ð°…Žå‹€-勋㔜𠡞-𠡪𪟜𫦩-𫦭𭄦-ð­„«ð±°å‹Œ-å‹‘ã”-㔟𠡫-𠡺ðªŸ-𪟟𫦮-𫦲𭄬-ð­„²ð°…ð°…ð±±-ð±³å‹’-勖勘-å‹šã” ð ¡»-𠢄𪟠𫦳𭄳-𭄶𰅑-ð°…“ð±´å‹›-勞㔡𠢅-𠢒𪟡𪟢𫦴𫦵𭄷-𭄹𰅔募-勧𠢓-𠢟𪟣ð«‘𫦶𫦷𭄺-𭄾𰅕勨-勭㔢𠢠-𠢯𪟤𪟥𫦸𭄿-𭅃𰅖𰅗勮-勲𠢰-𠢵𪟦𫦹𫦺𰅘ð±µð±¶å‹³ð ¢¶-𠢸𫦻𫦼ð±·å‹´-勶㔣-㔦𠢹-𠢿㔧𠣀-𠣃𫦽𫦾𰅙勷𠣄𠣅勸𠣆𠣇𪟧𰅚𠣈-𠣊𫦿𠣋]
+[radical 18=⼑刀:刀-刂𠚣刃刄𠚤刅-刈𠚥-𠚬𭃂-𭃄𰄙𰄚刉-åˆã“š-㓜𠚭-𠚴𠚶𠚻𫥰𫥱𭃅-𭃇𰄛-ð°„刎-创ã“㓞𠚵𠚷-𠚺𠚼-ð ›ðªž¾-𪟀𫥲-𫥴𭃈-𭃌𰄞-ð°„¢ð±’-ð±•åˆœ-刭㓟㓠𠛎-𠛦ðªŸðªŸ‚ð«¥µ-ð«¥»ð­ƒ-𭃔𰄣-𰄦ð±–ð±—刮-剂㓡-㓦𠛧-ð œðªŸƒ-𪟅𫥼-𫥿𭃕-𭃡𮰌𰄧-ð°„«ð±˜ð±™å‰ƒ-剑㓧-ã“«ð œ-𠜰𪟆𪟇ð«ð«¦€ð«¦ð­ƒ¢-𭃨𰄬-ð°„²ð±šð±›å‰’-剧㓬-㓰𠜱-ð œð ¶ðªŸˆðªŸ‰ð«¦‚-𫦅𭃩-𭃳𰄳-𰄶ð±œ-ð± å‰¨å‰ª-剱剶㓱-㓶ð -ð µð ·-ð ¾ðªŸŠ-ðªŸð«¦†-𫦌𭃴-𭃾𰄷-𰄺剩割-創㓷-ã“»ð ¿-ð ž›ð ž-𠞤𪟎-ðªŸð«¦-𫦑𭃿-ð­„…ð±¡å‰·-剿㓼㓽𠞥-ð ŸðªŸ‘-𪟓𫦒-𫦔𭄆-ð­„ð°„»-ð°„½ð±¢ð±£åŠ€-劄㓾-㔉𠟂-ð ŸŸð Ÿ¡-𠟥𫦕-𫦙ð­„ð­„‘ð°„¾-ð°…‚ð±¤åŠ…-åŠã”Šð Ÿ ð Ÿ¦-𠟹𪟔𫦚𭄒𰅃åŠ-劔㔋-ã”𠟺-𠠊𪟕𪟖𭄓-ð­„—ð°…„ð±¥åŠ•ã”Žã”ð  Œ-𠠚𫦛𭄘𭄙𰅅-ð°…‡ã”ð  ›-𠠠𫦜-𫦞𭄚𭄛ð±¦åŠ–㔑𠠡-𠠣𫦟𫦠𭄜㔒𠠤𠠦-ð  ©ð±§ð±¨åŠ—劘𠠥𠠪-𠠭劙劚𠠮𫦡𰅈𠠯ð­„𫦢𠠰𠠱𫦣]
+[radical 19=⼒力:力劜𠠲𫦤åŠåŠžð  ³-𠠵𭄞ð±©åŠŸ-劢㔓㘞𠆮𠠶-𠠸𭄟𭄠ð±ªåŠ£-动㔔-ã”–ð  ¹-ð ¡ð«¦¥ð°…‰åŠ©-労㔗㔘𠡂-ð ¡ðªŸ—-𪟙𫦦𫦧𰅊-ð°…Œð±«-ð±¯åŠµ-势㔙-㔛𠡑-ð ¡ðªŸšðªŸ›ð«¦¨ð­„¡-ð­„¥ð®°ð°…ð°…Žå‹€-勋㔜𠡞-𠡪𠡺𪟜𫦩-𫦭𭄦-ð­„«ð±°å‹Œ-å‹‘ã”-㔟𠡫-ð ¡¹ðªŸ-𪟟𫦮-𫦲𭄬-𭄲𮰎ð°…ð°…ð±±-ð±³å‹’-勖勘-å‹šã” ð ¡»-𠢄𪟠𫦳𭄳-𭄶𰅑-ð°…“ð±´å‹›-勞㔡𠢅-𠢒𪟡𪟢𫦴𫦵𭄷-𭄹𰅔募-勧𠢓-𠢟𪟣ð«‘𫦶𫦷𭄺-𭄾𰅕勨-勭㔢𠢠-𠢯𪟤𪟥𫦸𭄿-𭅃𰅖𰅗勮-勲𠢰-𠢵𪟦𫦹𫦺𰅘ð±µð±¶å‹³ð ¢¶-𠢸𫦻𫦼ð±·å‹´-勶㔣-㔦𠢹-𠢿㔧𠣀-𠣃𫦽𫦾𰅙勷𠣄𠣅勸𠣆𠣇𪟧𰅚𠣈-𠣊𫦿𠣋]
[radical 20=⼓勹:勹-匂𠣌𭅄𰅛匃-匇ð £-ð £ð«§€ð«§ð­……匈𠣑-𠣓𭅆匉𠣔-𠣗𭅇𭅈匊-匌𠣘-ð £ð­…‰ð­…ŠåŒð £ž-𠣣𭅋𰅜ð°…ð±¸åŒŽð £¤-𠣭𫧂𫧃ð±¹åŒåŒã”¨ð £®-𠣴𭅌𰅞𰅟ð±ºð±»åŒ‘匒㔩𠣵-𠣷𫧄ð­…匓㔪𠣸-𠣼𭅎ð­…ð±¼ð £½-𠤂𰅠ð±½-𱑀匔𠤃𫧅𠤄-𠤇𫧆ð±‘𠤈-𠤊𱑂𱑃𠤋-ð ¤]
[radical 21=⼔匕:匕𠤎𪟨化㔫ð ¤ð«§‡åŒ—ð ¤ð°…¡ðªŸ©ð­…𠤑-𠤕㔬𠤖𭅑𰅢𱑄𠤗-ð ¤ðªŸªð­…’𠤞-𠤡𭅓匘匙㔭𫧈𫧉𠤣𠤤𰅣𠤥𪟫𠤦-𠤨𱑅𠤩𠤪𫧊]
[radical 22=⼕匚:匚𠤬𠤭𫧋𭅔匛-匞𫧌𭅕𭅖匟-匢𠤮-𠤱𪟬ð«§-ð«§åŒ£-匥㔯㔰𠤳-𠤷𪟭𪟮ð«§ð«§’𭅗𭅘𰅤匦𠤸-𠤻𫧑𭅙𭅚匧-匩𠤼-𠥂𠥄-𠥈𪟯𫧓匪匫龨𠥉-ð ¥ðªŸ°ð«§”𭅛𰅥𰅦匬-匮㔱𠥎ð ¥ð­…œð­…𰅧𱑆ð ¥-𠥕𫧕𱑇匯㔲-ã”´ð ¥–-𠥘𫧖𰅨匰-匲㔵𠥙-𠥛𪟱𫧗𭅞匳𠥜-𠥡𫧘𫧙匴𠥢𠥣𫧚匵𫧛𫧜𠥤𠥥𰅩匶𠥦𠥧匷𠥨𠥩𪟲𱑈𠥪ð«§ð±‘‰ã”¶ð ¥«ð ¥¬]
[radical 23=⼖匸:匸-区𠥭𠤲𠥮𠥯𰅪医㔷𠥰-𠥲𰅫匼𠥳匽𠥃𠥴𠥵𭅟𱑊𠥶𰅬匾-å€ã”¸ð±‘‹ð ¥·ð±‘Œð ¥¸-𠥺ð±‘]
-[radical 24=â¼—å:å-åƒå…-åˆã”¹ð ¥»ð ¥¼ð ¥¿ð­… ð°…­ð°…®å‰åŠåŒð †±ð ¥½ð ¥¾ð ¦€ð ¦ð°…¯å‹å-å㔺㔻𠦂-ð ¦ð°…°ð°…±ð ¦‘-𠦗𪟳ð«’𫧞𰅲-ð°…´å‘-å–龺𠦘-𠦢𣥥ð«“𫧟𫧠𰅵𱑎å—å˜ð«”𫧡𫧢𭅡𭅢𰅶𰅷𠦣-𠦩𪟴𭅣𰅸𰅹å™ð ¦ª-𠦯𪟵𭅤𰅺𰅻ð±‘åšð ¦°-𠦳𫧣𭅥𭅦㔼𠦴-𠦼𪟶𫧤𫧥𭅧𰅼𠦽-𠦿𪟷𫧦𰅽𰅾𠧀-𠧄𪟸𪟹𫧧𫧨𭅨𭅩ð±‘𱑑𭅪𱑒𱑓𠧅-𠧈𪟺𫧩-𫧫𰅿𱑔𠧉-ð §ðªŸ»ð­…«ð­…¬ð°†€ð°†ð §Žð«§¬ð±‘•ðªŸ¼ð­…­å›ð §ð«§­ð §ð­…®ð §‘𰆂]
+[radical 24=â¼—å:å-åƒå…-åˆã”¹ð ¥»ð ¥¼ð ¥¿ð­… ð°…­ð°…®å‰åŠåŒð †±ð ¥½ð ¥¾ð ¦€ð ¦ð°…¯å‹å-å㔺㔻𠦂-ð ¦ð°…°ð°…±ð ¦‘-𠦗𪟳ð«’𫧞𰅲-ð°…´å‘-å–龺𠦘-𠦢𣥥ð«“𫧟𫧠𰅵𱑎å—å˜ð«”𫧡𫧢𭅡𭅢𰅶𰅷𠦣-𠦩𪟴𭅣ð®°ð°…¸ð°…¹å™ð ¦ª-𠦯𪟵𭅤𰅺𰅻ð±‘åšð ¦°-𠦳𫧣𭅥𭅦㔼𠦴-𠦼𪟶𫧤𫧥𭅧𰅼𠦽-𠦿𪟷𫧦𰅽𰅾𠧀-𠧄𪟸𪟹𫧧𫧨𭅨𭅩ð±‘𱑑𭅪ð®°ð±‘’𱑓𠧅-𠧈𪟺𫧩-𫧫𰅿𱑔𠧉-ð §ðªŸ»ð­…«ð­…¬ð°†€ð°†ð §Žð«§¬ð±‘•ðªŸ¼ð­…­å›ð §ð«§­ð §ð­…®ð §‘𰆂]
[radical 25=⼘åœ:åœð §’ååžðªŸ½åŸ-å¢ð §“ð €ð §”-𠧘𭅯å£å¤ð §™-𠧜𡥋𪟾𭅰å¥-å§ã”½ð §ž-𠧨𫧮𰆃𠧩-𠧲𠭉𫧯𰆄-𰆆𱑖𠧳-𠧷𠧹𪟿𫧰å¨ð §º-𠧿𭅱𠨀-𠨂𠨄𫧱𫧲𰆇𰆈𱑗𠨅𫧳𫧴𠨆𠨇𪠀𫧵𠨈-𠨊𰆉𫧶-𫧸𠨋𠨌]
[radical 26=â¼™å©:å©ð°†Šåªå«ã”¾ã”¿ð­…²å¬ð ¨-ð ¨ð«§¹ð­…³ð°†‹å­-å¯ð ¨‘𭅴𱑘å°å±ð ¨’-𠨗𫧺𭅵𰆌ð°†å²-åµã•€ð ¨˜ð°†Žå¶-åºã•ðª ð­…¶-ð­…ºð°†å»-å½ð ¨™-ð ¨ðª ‚ð°†å¿ð ¨žð­…»ð­…¼å¾ð«§»ð°†‘𰆒𱑙𠨟-𠨡𫧼𱑚厀åŽð ¨¢-𠨤𫧽𭅽𭅾𠨥𫧾𱑛𫧿𭅿𰆓𫨀𰆔𠨦-𠨪ð«¨ð ¨«]
-[radical 27=⼚厂:厂-历𠨬厇-厉𠨭-𠨳𪠃𫨂𭆀𰆕厊-åŽã•‚-㕄𠂬𠂮𠨴-𠨿ð­†ð°†–𰆗𱑜厎-厑㕅-㕇𠂰𠩀-𠩉𪠄ð«•ð«¨ƒð«¨„𭆂𭆃𰆘厒-厕㕈㕉𠩊-𠩕𪠅𪠆𫨅-𫨈𭆄ð±‘厖-厛㕊𠩗-𠩦𪠇-𪠊𫨉𫨊𭆅𰆙𰆚厜-原虒㕋-ã•ð ©§-𠩷𪠋-𪠎ð«–ð«—𫨋𭆆-𭆈𰆛-𰆟厠-厣厩𠩸-𠩾𠪀-𠪆ðª ðª ð«¨Œ-ð«¨ð­†‰-𭆋𱑞-𱑠厤-厨㕎𠪇-ð ªðª ‘𪠒𫨑-𫨗𭆌-ð­†ð°† -𰆦厪厫ã•ð ©¿ð ª‘-𠪘𪠓-𪠕𫨘-𫨛𭆑𭆒𰆧厬-厰ã•ã•‘𠪙-𠪬𪠖𪠗𫨜ð«¨ð­†“-𭆕𰆨𰆩厱厲㕒𠪭-𠪸𪠘𪠙𫨞𫨟𭆖𠪺-𠪾𫨠-𫨢𭆗𱑡厳㕓𠪿𪠚𫨣𰆪𰆫𠫀-𠫆厴𠫇𪠛𫨤𰆬𠫉-ð «Žã•”ð «ð«¨¥ð­†˜ð «åŽµð «‘ð «’]
+[radical 27=⼚厂:厂-历𠨬厇-厉𠨭-𠨳𪠃𫨂𭆀𰆕厊-åŽã•‚-㕄𠂬𠂮𠨴-𠨿ð­†ð°†–𰆗𱑜厎-厑㕅-㕇𠂰𠩀-𠩉𪠄ð«•ð«¨ƒð«¨„𭆂𭆃𰆘厒-厕㕈㕉𠩊-𠩕𪠅𪠆𫨅-𫨈𭆄𮰑ð±‘厖-厛㕊𠩗-𠩦𪠇-𪠊𫨉𫨊𭆅𰆙𰆚厜-原虒㕋-ã•ð ©§-𠩷𪠋-𪠎ð«–ð«—𫨋𭆆-𭆈𰆛-𰆟厠-厣厩𠩸-𠩾𠪀-𠪆ðª ðª ð«¨Œ-ð«¨ð­†‰-𭆋𱑞-𱑠厤-厨㕎𠪇-ð ªðª ‘𪠒𫨑-𫨗𭆌-ð­†ð°† -𰆦厪厫厯ã•ð ©¿ð ª‘-𠪘𪠓-𪠕𫨘-𫨛𭆑𭆒𰆧厬-厮厰ã•ã•‘𠪙-𠪬𪠖𪠗𫨜ð«¨ð­†“-𭆕𰆨𰆩厱厲㕒𠪭-𠪸𪠘𪠙𫨞𫨟𭆖𮰒𠪺-𠪾𫨠-𫨢𭆗𱑡厳㕓𠪿𪠚𫨣𰆪𰆫𠫀-𠫆厴𠫇𪠛𫨤𰆬𠫉-ð «Žã•”ð «ð«¨¥ð­†˜ð «åŽµð «‘ð «’]
[radical 28=⼛厶:厶𠫓-𠫖𱑢厷-厹㕕𠫗𠫘𫨦厺-厼𠫙-ð «ð°†­åŽ½åŽ¾ð «ž-𠫥𭆙𭆚县𠫦-𠫨𫨧å€-å‚ð «©-𠫭𠫯𱑣𠫰-𠫲𠫴-𠫸𪠜𫨨𫨩𭆛-ð­†ð°†®ð±‘¤ð±‘¥ã•–ð «¹-ð «¼ðª ð«¨ªð­†ž-𭆢åƒå„㕗㕘𠫽𠫾𪠞𫨫𭆣𱑦𱑧å…ð «¿-𠬅𦎅𪠟𰆯𱑨-𱑪𠬆-𠬌𪠠𫨬-𫨮𭆤å†ð ”²ð ¬-ð ¬ð±‘«å‡ã•™ð ¬‘𠬒𪠡𠬓𱑬𠬕-𠬗𫨯𫨰𱑭-𱑯𠬔𠬘𠬙𪠢𱑰𫨱]
-[radical 29=⼜åˆ:åˆå‰ð­†¥åŠ-åŽã•šã•›ð ¬š-𠬠𪠣𪠤𫨲å-å‘𠬡-𠬨𭆦𰆰𱑱å’㕜𠬩-𠬰𪠥𫨳𭆧𭆨𰆱-𰆶å“ã•ð ¬±-𠬸𪠦𫨴-𫨸𰆷-𰆺𱑲𱑳å”-å˜ã•žð ¬¹-𠬾𪠧𪠨𫨹𭆩-𭆫𰆻-𰆽𱑴-𱑶å™-å㕟𠫳𠬿-𠭈𪠩𪠪𫨺𫨻𭆬-𭆮𰆾𰆿𱑷åžåŸð ­Š-𠭔𪠫𪠬𫨼-𫨿𭆯𭆰𱑸-𱑺𠭕-𠭤𫩀-𫩃𭆱𭆲𰇀ð°‡ð±‘»ã• ð ­¥-𠭮𪠭𪠮𫩄𫩅𭆳𭆴𰇂𰇃𱑼å ï¨Žð ­¯-𠭵𠭷-𠭺𪠯𫩆𫩇𰇄𱑽㕡𠭼-𠮂𡪞𪠰𫩈𫩉𭆵𭆶𰇅𠮃-𠮆𫩊𭆷å¡ð ®‡-𠮌𪠱𫩋𫩌ð ®-ð ®ð«©ð«©Žå¢ð ®å£¡ð ®‘𠮒𰇆𠮓-𠮘𱑾]
-[radical 30=â¼å£:å£ð ®™-𠮞ð«©å¤-å¾ã•£-㕥䶷𠙼𠮟-𠮪𪠲𫜸ð«©ð«©‘𭆸𭆹𰇇𱑿å¿-å—㕦-㕨䶸𠮫-𠯊𪛗ð«˜ð«©’-𫩗𭆺-𭇂𰇈𰇉𱒀-ð±’…å˜-呜㕩-㕶𠈂𠯋-𠰇𪠳-𪠵𫩘-𫩞𭇃-ð­‡ð°‡Š-ð°‡ð±’†-ð±’Žå‘-å’ã•·-ã•¿ð °ˆ-ð ±ðª ¶-𪠹𫩟-𫩪𭇎-ð­‡ð°‡Ž-𰇓ð±’-ð±’“å’ž-å“Ÿã–€-ã–Žð €·ð €¹ð ±-𠲫𪠺-𪡃ð«™ð«©«-𫩼𭇞-𭇴𰇔-𰇣𱒔-𱒥哠-唧ã–-㖞𠲬-𠳤𠳦-𠳪𠳬-𠴥𪡄-𪡎𫩽-𫪑𭇵-𭈋𰇤-ð°‡°ð±’¦-𱒼唨-啘啚-å•žå• -啪啬-啹㖟-㖵𠳥𠴧-𠶶ðª¡-𪡛𫪒-𫪰𭈌-𭈮𰇱-𰇾𱒽-𱓕啙啫啺-喌喎-喾噅㖶-ã—‘ð ¶·-ð ·¡ð ·£-𠸵𠸻-𠸾𪡜-𪡩𫪱-𫫂𭈯-𭉙𰇿-ð°ˆð±“–-𱓩å–å–¿-嗵鿽㗒-㗡𠷢𠸶-𠸺𠸿-𠹯𠹳-𠻓𪡪-𪡷𫫃-𫫒𭉚-𭉽𰈑-𰈞𱓪-𱔃嗶-嘞嘡-嘧噑噓㗢-ã—°ð ·ð »”-𠽠𪡸-𪢄ð«šð««“-𫫧𭉾-𭊠𰈟-𰈨𱔄-𱔖嘟嘠嘨-噄噆-å™å™’噔噖-å™å™´ã—±-㗺𠆊ð “ð §ð ¹°-𠹲𠽡-𠾦𠾨-𠿆𡀔𡀦𪢅-ðª¢ð«›ð««¨-𫫵𭊡-ð­‹ð°ˆ©-𰈮𱔗-𱔲噞-噳噵-噼㗻-㘄𠿇-𡀓𡀕-𡀥𡀧-ð¡€¼ð¢¨ð¨—“𪢎-𪢔𫫶-𫬆𭋂-𭋛𰈯-𰈶𱔳-𱕄噽-嚓嚺㘅-㘈𡀽-𡂎𪢕-𪢘ð«œð«¬‡-𫬑𭋜-𭋯𰈷-𰈽𱕅-𱕒嚔-嚤㘉-ã˜ð¡‚-𡃟𡃰𪢙-𪢞ð«ð«¬’-𫬛𭋰-𭌉𰈾-𰉂𱕓-𱕜嚥-åš°ã˜-㘒𡃠-𡃯𡃱-𡄈𡄊-ð¡„𪢟-𪢡𫬜-𫬫𭌊-𭌡𰉃-ð°‰…ð±•-𱕤嚱-嚹㘓㘔𡄑-𡄰𪢢-𪢤𫬬-𫬵𭌢-𭌯𰉆-𰉉𱕥-𱕩嚻-囄å›ã˜•-㘗𡄱-𡅔𡅣𫬶-𫬸𭌰-𭌳𰉊𰉋𱕪-𱕬囅-囋囎㘘𡅗-𡅢𡅤-𡅯𪢥ð«žð«¬¹ð­Œ´-𭌽𰉌𱕭-𱕰囌å›å›ã˜™ã˜šð¡…°-𡅸𫬺-𫬼𭌾-ð­…𱕱-𱕳囑-囓𡅹-𡆅𪢦𪢧𫬽-𫬿ð­†-ð­‹ð±•´-𱕷囔囕㘛𡆆-𡆎𫭀ð­Œ-ð­ã˜œð¡†-𡆘ð­-ð­’𡆙𡆚𡆞ð«­ð­“ð­”囖𡆛-ð¡†ð§®¥ð­•-ð­˜ð¡†Ÿð­™]
-[radical 31=⼞囗:囗𡆠-𡆢囘-囜龱ã˜ð ¤ð¡†£-𡆦𪛘𫭂ð­šå›-団㘟𡆧-𡆳囤-囵𡆴-𡇇𪢨𫭃𫭄ð­›ð­œð°‰ð°‰Žð±•¸å›¶-图㘠㘡𠀯𡇈-𡇌𡇎-𡇑𪢩𫭅𫭆ð­ð°‰ð°‰ð±•¹å›¿åœ€ã˜¢ð¡‡’-𡇟𪢪𫭇𫭈ð­žð­Ÿð±•º-𱕽åœ-圆㘣𡇠-𡇯𪢫𫭉𫭊ð­ -ð­¤ð±•¾ð±•¿åœ‡-國åœð¡‡°-𡇻𡈀𪢬𪢭𫭋𫭌ð­¥-ð­¨ð°‰‘ð±–€-𱖂圌-圎åœð¡‡¼-𡇿ð¡ˆ-𡈉𤔗ð«­-ð«­ð­©ð­ªð±–ƒð±–„圑-圕𡈊-𡈔𪢮ð«­ð­«ð°‰’圖-圙㘤𡈕-𡈡𪢯𫭑ð­¬-ð­°ð°‰“𱖅圚𡈢-𡈤𡈦-𡈩𫭒ð­±-ð­³ð°‰”圛圜𡈥𡈪-𡈬𪢰𫭓ð­´ð¡ˆ­-𡈱𫭔ð­µð¡ˆ²ð­¶ð¡ˆ³ð¡ˆ´ð­·ã˜¥ð¡ˆµ-𡈺𫭕ð­¸åœåœžð¡ˆ»ð­¹]
-[radical 32=⼟土:土-圡龶𡈼-𡈾𫭖𰉕圢-圧㘦𡈿-𡉇𪢱𪢲𫭗𫭘ð­ºð°‰–𰉗𱖆在-场𡉈-𡉖𪢳-𪢷𫭙𫭚ð­»-ð­½ð±–‡-𱖉圻-å ã˜§-㘰𡉘-𡊃𪢸-𪣂𫭛-ð«­¤ð­¾-𭎄𰉘-𰉞𱖊-ð±–å¡-垊㘱-㘵𡊄-𡊶𪣃-𪣊𫭥-𫭨𭎅-𭎎𰉟-𰉤𱖑-𱖜型-垵城é¿ã˜¶-㘾𡊷-ð¡‹›ð¡‹-𡋬𪣋-𪣓𫭩-ð«­¯ð­Ž-𭎛𰉥-ð°‰­ð±–-𱖩垶-åŸåŸ-埛ï¨ã˜¿-㙆𡋭-𡌥𣑧𪣔-𪣣𫭰-𫭻𭎜-𭎨𰉮-𰉶𱖪-𱖷埜-埩埫-堕㙇-ã™ð¡Œ¦-ð¡£ðª£¤-𪣱𫭼-ð«®…ð­Ž©-𭎵𰉷-𰊀𱖸-𱗊埪堖-堼堾-å¡‚å¡„-塈鿾㙎-㙘ð¡¤-𡎭𪣲-𪣽ð«Ÿð«®†-𫮑𭎶-ð­‹ð°Š-𰊌𱗋-𱗚堽塃塉-塱㙙-㙟𡎮-ð¡¬ð§¯§ðª£¾-ðª¤ð«®’-𫮚ð­Œ-ð­œð°Š-𰊘𱗛-𱗩塲-墛㙠-㙦ð¡­-ð¡ð¦¥ˆðª¤Ž-𪤘ð« ð«®›-𫮢ð­-ð­©ð°Š™-𰊥𱗪-𱗳墜-墧墩-墹㙧-㙯𠚛ð¡ž-ð¡‘𪤙-𪤞𫮣-𫮬ð­ª-ð­µð°Š¦-𰊱𱗴-𱘃墺-壌龳㙰-㙶𡑞-𡑹𡑻-𡒈𪤟-𪤥ð«¡ð«®­-𫮯ð­¶-ð­½ð°Š²-𰊸𱘄-𱘊å£-壗龼㙷-㙺𡒉-ð¡’ ð¡’¢-𡒯𪤦-𪤫𫮰-ð«®µð­¾-ð­€ð°Š¹ð°Šºð±˜‹-𱘒壘壙㙻-㙽𡒰-ð¡’¿ð¡“-ð¡“‹ð¡“-ð¡“𪤬-𪤯𫮶-𫮸ð­-ð­„ð°Š»-𰋀𱘓𱘔壚-壠壢㙾㙿𡓀𡓌ð¡“-ð¡“šð¡“œ-𡓥𪤰𫮹-ð«®¼ð­…-ð­‰ð°‹ð°‹‚𱘕-𱘗壣-壥㚀𡓦-𡓰𪤱𫮽-ð«®¿ð­Šð­‹ð°‹ƒð°‹„𱘘𱘙壦𡓱-𡓶𡓸𡓹𡓻-ð¡”𫯀ð­Œ-ð­Žð±˜šð¡“ºð¡”‚-𡔉ð­ð°‹…𱘛壧壨𡔊-𡔎𰋆𱘜壩ãšð¡”-ð¡”•ð­ð±˜å£ªãš‚ð¡”–ð­‘𰋇𱘞𱘟𡔗-𡔚]
-[radical 33=⼠士:士-壭𡔛壮𡔜壯-壳ð¡”𡔞𰋈𡔟ð­’壴壵𡔠-𡔢ð«¯ð«¯‚壶𡔣-𡔩𪤲𰋉壷壸𡔪-𡔭壹-壻㚃𡔮𡔯ð­“-ð­•å£¼ð¡”°ð¡”²-𡔵𪤳ð­–𰋊壽壾𡔶𡔸-𡔻𫯃𫯄ð­—𰋋𰋌壿夀㚄𡔼𡔽𫯅ð­˜ð±˜ å¤ð¡”¾-ð¡•„ð­™ð±˜¡ð¡•…𡕇-ð¡•Œð­šð¡•ð«¯†ð«¯‡ð°‹ð¡…•ð±˜¢ð¡•-𡕑𪤴𫯈ð­›ð«¯‰ð­œ]
-[radical 34=⼡夂:夂𡕒夃处𡕓𡕔ð­å¤…𡕕𡕖夆𡕗-𡕙备𱘣夈㚅𡕚ð­žð°‹Žð ™šð¡•›ð¡•œðªŒ›ð¡•ð«¯Šðª¤µ]
+[radical 29=⼜åˆ:åˆå‰ð­†¥åŠ-åŽã•šã•›ð ¬š-𠬠𪠣𪠤𫨲å-å‘𠬡-𠬨𭆦𰆰𱑱å’㕜𠬩-𠬰𪠥𫨳𭆧𭆨𮰓𰆱-𰆶å“ã•ð ¬±-𠬸𪠦𫨴-𫨸𰆷-𰆺𱑲𱑳å”-å˜ã•žð ¬¹-𠬾𪠧𪠨𫨹𭆩-𭆫𰆻-𰆽𱑴-𱑶å™-å㕟𠫳𠬿-𠭈𪠩𪠪𫨺𫨻𭆬-𭆮𰆾𰆿𱑷åžåŸð ­Š-𠭔𪠫𪠬𫨼-𫨿𭆯𭆰𱑸-𱑺𠭕-𠭤𫩀-𫩃𭆱𭆲𰇀ð°‡ð±‘»ã• ð ­¥-𠭮𪠭𪠮𫩄𫩅𭆳𭆴𰇂𰇃𱑼å ï¨Žð ­¯-𠭵𠭷-𠭺𪠯𫩆𫩇𰇄𱑽㕡𠭼-𠮂𡪞𪠰𫩈𫩉𭆵𭆶𰇅𠮃-𠮆𫩊𭆷å¡ð ®‡-𠮌𪠱𫩋𫩌ð ®-ð ®ð«©ð«©Žå¢ð ®å£¡ð ®‘𠮒𰇆𠮓-𠮘𱑾]
+[radical 30=â¼å£:å£ð ®™-𠮞ð«©å¤-å¾ã•£-㕥䶷𠙼𠮟-𠮪𪠲𫜸ð«©ð«©‘𭆸𭆹𰇇𱑿å¿-å—㕦-㕨䶸𠮫-𠯊𪛗ð«˜ð«©’-𫩗𭆺-𭇂𰇈𰇉𱒀-ð±’…å˜-呜㕩-㕶𠈂𠯋-𠰇𪠳-𪠵𫩘-𫩞𭇃-ð­‡ð®°”𰇊-ð°‡ð±’†-ð±’Žå‘-å’ã•·-ã•¿ð °ˆ-ð ±ðª ¶-𪠹𫩟-𫩪𭇎-ð­‡ð°‡Ž-𰇓ð±’-ð±’“å’ž-å“Ÿã–€-ã–Žð €·ð €¹ð ±-𠲫𪠺-𪡃ð«™ð«©«-𫩼𭇞-𭇴𰇔-𰇣𱒔-𱒥哠-唧ã–-㖞𠲬-𠳤𠳦-𠳪𠳬-𠴥𪡄-𪡎𫩽-𫪑𭇵-𭈋𰇤-ð°‡°ð±’¦-𱒼唨-啘啚-å•žå• -啪啬-啹㖟-㖵𠳥𠴧-𠶶ðª¡-𪡛𫪒-𫪰𭈌-𭈮𮰕𰇱-𰇾𱒽-𱓕啙啫啺-喌喎-喾㖶-ã—‘ð ¶·-ð ·¡ð ·£-𠸵𠸻-𠸾𪡜-𪡩𫪱-𫫂𭈯-𭉙𮰖𰇿-ð°ˆð±“–-𱓩å–å–¿-嗵鿽㗒-㗡𠷢𠸶-𠸺𠸿-𠹯𠹳-𠻓𪡪-𪡷𫫃-𫫒𭉚-𭉽𰈑-𰈞𱓪-𱔃嗶-嘞嘡-嘧噑噓㗢-ã—°ð ·ð »”-𠽠𪡸-𪢄ð«šð««“-𫫧𭉾-𭊠𰈟-𰈨𱔄-𱔖嘟嘠嘨-å™å™’噔噖-å™å™´ã—±-㗺𠆊ð “ð §ð ¹°-𠹲𠽡-𠾦𠾨-𠿆𡀦𪢅-ðª¢ð«›ð««¨-𫫵𭊡-ð­‹ð°ˆ©-𰈮𱔗-𱔲噞-噳噵-噼㗻-㘄𠿇-𡀥𡀧-ð¡€¼ð¢¨ð¨—“𪢎-𪢔𫫶-𫬆𭋂-𭋛𰈯-𰈶𱔳-𱕄噽-嚓嚺㘅-㘈𡀽-𡂎𪢕-𪢘ð«œð«¬‡-𫬑𭋜-𭋯𰈷-𰈽𱕅-𱕒嚔-嚤㘉-ã˜ð¡‚-𡃟𡃰𪢙-𪢞ð«ð«¬’-𫬛𭋰-𭌉𰈾-𰉂𱕓-𱕜嚥-åš°ã˜-㘒𡃠-𡃯𡃱-𡄈𡄊-ð¡„𪢟-𪢡𫬜-𫬫𭌊-𭌡𰉃-ð°‰…ð±•-𱕤嚱-嚹㘓㘔𡄑-𡄰𪢢-𪢤𫬬-𫬵𭌢-𭌯𰉆-𰉉𱕥-𱕩嚻-囄å›ã˜•-㘗𡄱-𡅔𡅣𫬶-𫬸𭌰-𭌳𮰗𰉊𰉋𱕪-𱕬囅-囋囎㘘𡅗-𡅢𡅤-𡅯𪢥ð«žð«¬¹ð­Œ´-𭌽𰉌𱕭-𱕰囌å›å›ã˜™ã˜šð¡…°-𡅸𫬺-𫬼𭌾-ð­…𱕱-𱕳囑-囓𡅹-𡆅𪢦𪢧𫬽-𫬿ð­†-ð­‹ð±•´-𱕷囔囕㘛𡆆-𡆎𫭀ð­Œ-ð­ã˜œð¡†-𡆘ð­-ð­’𡆙𡆚𡆞ð«­ð­“ð­”囖𡆛-ð¡†ð§®¥ð­•-ð­˜ð¡†Ÿð­™]
+[radical 31=⼞囗:囗𡆠-𡆢囙-囜龱ã˜ð ¤ð¡†£-𡆦𪛘𫭂ð­šå›-団㘟𡆧-𡆳囤-囵𡆴-𡇇𪢨𫭃𫭄ð­›ð­œð°‰ð°‰Žð±•¸å›¶-图㘠㘡𠀯𡇈-𡇌𡇎-𡇑𪢩𫭅𫭆ð­ð°‰ð°‰ð±•¹å›¿åœ€ã˜¢ð¡‡’-𡇟𪢪𫭇𫭈ð­žð­Ÿð®°˜ð±•º-𱕽åœ-圆㘣𡇠-𡇯𪢫𫭉𫭊ð­ -ð­¤ð±•¾ð±•¿åœ‡-國åœð¡‡°-𡇻𡈀𪢬𪢭𫭋𫭌ð­¥-ð­¨ð°‰‘ð±–€-𱖂圌-圎åœð¡‡¼-𡇿ð¡ˆ-𡈉𤔗ð«­-ð«­ð­©ð­ªð±–ƒð±–„圑-圕𡈊-𡈔𪢮ð«­ð­«ð°‰’圖-圙㘤𡈕-𡈡𪢯𫭑ð­¬-ð­°ð°‰“𱖅圚𡈢-𡈤𡈦-𡈩𫭒ð­±-ð­³ð°‰”圛圜𡈥𡈪-𡈬𪢰𫭓ð­´ð¡ˆ­-𡈱𫭔ð­µð¡ˆ²ð­¶ð¡ˆ³ð¡ˆ´ð­·ã˜¥ð¡ˆµ-𡈺𫭕ð­¸åœåœžð¡ˆ»ð­¹]
+[radical 32=⼟土:土-圡龶𡈼-𡈾𫭖𮰙𰉕圢-圧㘦𡈿-𡉇𪢱𪢲𫭗𫭘ð­ºð°‰–𰉗𱖆在-场𡉈-𡉖𪢳-𪢷𫭙𫭚ð­»-ð­½ð®°šð±–‡-𱖉圻-å ã˜§-㘰𡉘-𡊃𪢸-𪣂𫭛-ð«­¤ð­¾-𭎄𮰛𮰜𰉘-𰉞𱖊-ð±–å¡-垊㘱-㘵𡊄-𡊶𪣃-𪣊𫭥-𫭨𭎅-𭎎𰉟-𰉤𱖑-𱖜型-垵城é¿ã˜¶-㘾𡊷-ð¡‹›ð¡‹-𡋬𪣋-𪣓𫭩-ð«­¯ð­Ž-ð­Ž›ð®°-𮰡𰉥-ð°‰­ð±–-𱖩垶-åŸåŸ-埛ï¨ã˜¿-㙆𡋭-𡌥𣑧𪣔-𪣣𫭰-𫭻𭎜-𭎨𮰢𮰣𰉮-𰉶𱖪-𱖷埜-埩埫-堔㙇-ã™ð¡Œ¦-ð¡£ðª£¤-𪣱𫭼-ð«®…ð­Ž©-𭎵𮰤𰉷-𰊀𱖸-𱗊埪堕-堼堾-å¡‚å¡„-塈鿾㙎-㙘ð¡¤-𡎭𪣲-𪣽ð«Ÿð«®†-𫮑𭎶-ð­‹ð®°¥-ð®°§ð°Š-𰊌𱗋-𱗚堽塃塉-塱㙙-㙟𡎮-ð¡¬ð§¯§ðª£¾-ðª¤ð«®’-𫮚ð­Œ-ð­œð®°¨ð°Š-𰊘𱗛-𱗩塲-墛㙠-㙦ð¡­-ð¡ð¦¥ˆðª¤Ž-𪤘ð« ð«®›-𫮢ð­-ð­©ð®°©-𮰬𰊙-𰊥𱗪-𱗳墜-墧墩-墹㙧-㙯𠚛ð¡ž-ð¡‘𪤙-𪤞𫮣-𫮬ð­ª-ð­µð®°­ð°Š¦-𰊱𱗴-𱘃墺-壌龳㙰-㙶𡑞-𡑹𡑻-𡒈𪤟-𪤥ð«¡ð«®­-𫮯ð­¶-ð­½ð®°®ð°Š²-𰊸𱘄-𱘊å£-壗龼㙷-㙺𡒉-ð¡’ ð¡’¢-𡒯𪤦-𪤫𫮰-ð«®µð­¾-ð­€ð®°¯ð°Š¹ð°Šºð±˜‹-𱘒壘壙㙻-㙽𡒰-ð¡’¿ð¡“-ð¡“‹ð¡“-ð¡“𪤬-𪤯𫮶-𫮸ð­-ð­„ð°Š»-𰋀𱘓𱘔壚-壠壢㙾㙿𡓀𡓌ð¡“-ð¡“šð¡“œ-𡓥𪤰𫮹-ð«®¼ð­…-ð­‰ð°‹ð°‹‚𱘕-𱘗壣-壥㚀𡓦-𡓰𪤱𫮽-ð«®¿ð­Šð­‹ð°‹ƒð°‹„𱘘𱘙壦𡓱-𡓶𡓸𡓹𡓻-ð¡”𫯀ð­Œ-ð­Žð±˜šð¡“ºð¡”‚-𡔉ð­ð°‹…𱘛壧壨𡔊-𡔎𰋆𱘜壩ãšð¡”-ð¡”•ð­ð±˜å£ªãš‚ð¡”–ð­‘𰋇𱘞𱘟𡔗-𡔚]
+[radical 33=⼠士:士-壭𡔛壮𡔜𮰰壯-壳ð¡”𡔞𰋈𡔟ð­’壴壵𡔠-𡔢ð«¯ð«¯‚𮰱𮰲壶𡔣-𡔩𪤲𰋉壷壸𡔪-𡔭壹-壻㚃𡔮𡔯ð­“-ð­•å£¼ð¡”°ð¡”²-𡔵𪤳ð­–𰋊壽壾𡔶𡔸-𡔻𫯃𫯄ð­—𰋋𰋌壿夀㚄𡔼𡔽𫯅ð­˜ð±˜ å¤ð¡”¾-ð¡•„ð­™ð±˜¡ð¡•…𡕇-ð¡•Œð­šð¡•ð«¯†ð«¯‡ð°‹ð¡…•ð±˜¢ð¡•-𡕑𪤴𫯈ð­›ð«¯‰ð­œ]
+[radical 34=⼡夂:夂𡕒夃处𡕓𡕔ð­å¤…𡕕𡕖夆𡕗-𡕙备𱘣夈㚅𡕚ð­žð°‹Žð ™šð¡•›ð¡•œðªŒ›ð¡•ð«¯Šð®°³ðª¤µ]
[radical 35=⼢夊:夊ð­Ÿð¡•žð¡•Ÿå¤‹ð¡• ð¡•¡å¤Œð¡•¢-ð¡•¥ð­ ð­¡å¤‰å¤ãš†ãš‡ð­¢-ð­¤å¤Žå¤ð €¼ð¡•¦ð«¯‹ð«¯Œð­¥ð­¦ð¡•§-𡕬ð­§ð±˜¤ð Œžð¡•­ð°‹ð ­¶ð¡•®-𡕱𪤶ð­¨ð­©ð±˜¥å¤ð¡•²-ð¡•µð­ªð­«ð¡•¶ð¡•·ð­¬ð¡•¸-𡕺ð­­ð­®ð¡•»ð­¯å¤‘夓𡕼-ð¡•¿ð­°å¤’ð¡–€ð­±ð¡–夔ð­²ð¡–‚ð¡–ƒ]
[radical 36=⼣夕:夕-夘㚈𡖄-𡖆𱘦夙-夛𡖇-𡖉𪤷ð«¢ð­³ð­´ð¡–Š-ð¡–Œð«£ð­µå¤œå¤ãš‰ð¡–-ð¡–𪤸ð«¯ð­¶ð°‹ð¡–𡖑𪤹夞𠅗𡖒-𡖜𢻈𪤺𫯎够夠ð¡–-𡖥𪤻ð«¯ð«¯ð­·ð­¸å¤¡ãšŠð …±ð ¨ƒð¡–¦-𡖮𡖰𪤼𫯑𫯒ð­¹-ð­»ð°‹‘𰋒𡖯𡖱-𡖵𰋓𱘧夢-夥㚋㚌𡖶-𡖾𢆣𪤽𫯓𫯔ð­¼ð­½ð°‹”𰋕𱘨夦𡖿-ð¡—𪤾𫯕ð­¾ð­¿ð°‹–𠆓𠆕𡗂-𡗅𪤿𫯖𫯗𰋗𱘩𠆙𡗆-𡗈𫯘𭑀𰋘𱘪ãšð¡—‰ð¡—Šð­‘ð¡—‹ð¡—Œð¡—𱘫ð¡—𡗎𪥀𫯙ð¡—𣡳𫯚𱘬𡗑]
-[radical 37=⼤大:大-夭𡗒-ð¡—”ðª¥ð«¯›å¤®-头㚎𡗕-𡗛𪥂𭑂𰋙夵-夼ãš-ãš‘ð €›ð¡—-𡗤𪥃𫯜𭑃𰋚夽-奂㚒㚓𡗥-𡗶𪥄-𪥆ð«¯-𫯟𭑄𭑅𰋛𰋜𱘭𱘮奃-奉奋-å¥å¥”ãš”-㚙𡗷-𡘌𪥇-𪥌𫯠-𫯢𭑆-ð­‘‹ð°‹-𰋟𱘯奎-奓奕奖㚚㚛ð¡˜-𡘜ðª¥-ðª¥ð«¯£-𫯥𭑌-𭑎𰋠𰋡𱘰奊套-奚ð¡˜-𡘳ðª¥-𪥒ð«¤ð«¯¦ð«¯§ð­‘-𭑒𰋢𰋣𱘱-𱘵奛-奟㚜-㚞𡘴-𡙆𪥓-𪥕𫯨𭑓-𭑖𰋤-𰋧奠-奥㚟𡔱𡙇-𡙚𪥖-𪥘𫯩-𫯯𭑗-𭑛𰋨-𰋬𱘶-𱘸奦-奨㚠𡙛-𡙫𪥙-𪥛𫯰-𫯴𭑜-𭑟𰋭𰋮奩-奬𡙬-𡙶𪥜-𪥞𫯵-𫯷𭑠𰋯𰋰𱘹-𱘻奭𡙷-𡚅𪥟-𪥡𫯸-𫯼𰋱奮奯㚡𡚆-𡚎ð¤ ð«¥ð«¯½-𫰀𭑡-𭑣𰋲𰋳𱘼ð¡š-ð¡š–ð«°ð­‘¤ð±˜½å¥°ð¡š—𡾗𪥢𭑥𡚘-𡚚𫰂𭑦𱘾𡚛𪥣𫰃𫰄𰋴𡚜ð¡šå¥±ð¡šžð¡šŸð±˜¿ð±™€ð¡š -𡚢𫰅奲𡚣-𡚥]
-[radical 38=⼥女:女𡚦𫰆𰋵ð±™å¥´-奶㚢𡚧-𡚭𫰇𭑧-𭑫𰋶𱙂𱙃奷-妈㚣-㚨𡚮-𡚻𪥤𪥥𫰈-𫰊𭑬𭑭𰋷𰋸𱙄-𱙆妉-妌妎-妫㚩-㚯㛠𡚼-𡛘𪥦-𪥬ð«¦ð«°‹-𫰖𭑮𭑯𰋹-𰋻𱙇-𱙊妬-姗㚰-ã›ð¡›™-ð¡œðª¥­-𪥰𫰗-𫰛𭑰-𭑵𰋼𱙋-ð±™å¦å§˜-姫姭-娃娅-娈㛂-㛌𡜂-𡜭𪥱-𪥵ð«§ð«¨ð«°œ-𫰩𭑶-𭑹𰋽-𰌃𱙎-𱙓姬娉-娫娭-娴娽ã›-㛟㛡-㛤𡜮-ð¡ðª¥¶-𪥺ð«©-ð««ð«°ª-𫰶𭑺-𭑿𰌄𰌅𱙔-𱙙娬娵-娼娾-婶㛥-ã›­ð¡ž-𡞛𪥻-𪦅𫰷-𫱂𭒀-𭒄𰌆-𰌋𱙚-𱙜婷-åªåª‘-媯å«ã›®-㜄𡞜-𡟧𡠣𪦆-ðª¦ð«¬ð«±ƒ-ð«±ð­’…-𭒌𰌌-𰌎ð±™-𱙟åªåª°-å«Žå«-嫔㜅-㜔𡟨-𡠕𪦑-𪦖𫱑-𫱞ð­’-ð­’‘ð°Œ-𰌔𱙠-𱙦嫕-嫲㜕-㜢𡠗𡠙-𡠢𡠤-𡠱𡠳-𡡎𪦗-𪦟ð«­ð«±Ÿ-𫱫𭒒-ð­’𰌕𱙧-𱙬嫳-å¬ãœ£-㜨𡠖𡠘𡠲ð¡¡-ð¡¢ð¡¢ðª¦ -𪦥ð«®ð«±¬-𫱷𭒞-𭒡𰌖𰌗𱙭𱙮å¬-嬢嬴㜩-㜭𡢎𡢑-𡣄𪦦-𪦪𫱸-𫲄𭒢-𭒥𰌘-𰌚嬣-嬳嬵-嬷㜮㜯𡣅-𡣡𡣣-𡣩𪦫𫲅-𫲌𭒦-𭒨𱙯𱙰嬸嬺-嬽㜰㜱𡣪-𡣼𪦬-𪦯ð«²-𫲓𭒩-𭒭嬹嬾嬿㜲-㜵𡣽-ð¡¤ð¡¤žðª¦°ðª¦±ð«²”-𫲙𭒮孀-孆㜶-㜸𡤎-𡤗𪦲𫲚𫲛𭒯-𭒳𱙱𱙲孇-孉㜹𡤘-ð¡¤ð¡¤Ÿð¡¤ ðª¦³ðª¦´ð«²œð«²ð±™³å­Š-孌㜺𡤡-𡤪𫲞𫲟𰌛å­ð¡¤«-𡤭𪦵𫲠孎å­ð¡¤®-𡤳𭒴𡤴-𡤶𭒵𱙴㜻㜼𡤷-𡤻]
-[radical 39=⼦å­:å­-孓𡤼孔𡤽孕𡤾-𡥂𫲡𭒶-𭒹孖-孙㜽𡉗𡥃-ð¡¥…ð­’º-𭒼𰌜ð°Œð±™µå­š-孞㜾㜿𡥆-𡥊𡥌ð¡¥ðª¦¶-𪦹𰌞-𰌢𱙶-𱙸孟-å­§ã€ð ƒ±ð¡¥Ž-𡥚𪦺𫲢-𫲤𭒽-𭓀𰌣-𰌥𱙹孨-å­ªãð¡¥›-𡥧𪦻𫲥ð­“𭓂𰌦𰌧𱙺孫-å­­ã‚ãƒð¡¥¨-𡥭𢈲𨹴𫲦𭓃-𭓇𰌨𱙻孮-孰孲𡥮-𡥵𪦼-𪦾𫲧𫲨𭓈-𭓎𰌩-𰌫𱙼𱙽孱ã„𡥶-𡦂𪦿𫲩𫲪ð­“-𭓔𰌬𰌭𱙾孳孴ã…𡦃-ð¡¦ð«²«ð«²¬ð­“•ð­“–𰌮𱙿孵-孷𡦑-𡦖𪧀𫲭𫲮𭓗𭓘𰌯ã†ð¡¦—-ð¡¦ð«¯ð«²¯ð«²°å­¸å­¹ã‡ð¡¦ž-𡦨ðª§ð«²±ð«²²ð­“™ð­“šð°Œ°ð±š€ð±šå­ºå­»ð¡¦©ðª§‚𪧃𭓛𡦪-𡦬𰌱𱚂孼𡦭-𡦰𫲳𭓜孽孾𡦱-𡦶𰌲𪧄孿𡦷𫲴ãˆð¡¦¸ð­“]
-[radical 40=⼧宀:宀ã‰ð¡¦¹å®-宄ãŠã‹ð¡¦º-𡦼𰌳宅-安ãŒã𡦽-𡧊𫲵𫲶𭓞𰌴𰌵𱚃宊-å®’ãŽ-ã‘𡧋-𡧕𪧅-𪧇𫲷-𫲽𭓟-𭓡𰌶-𰌸𱚄宓-审ã’𡧖-𡧨𪧈𪧉𫲾-𫳀𭓢-𭓩𰌹𰌺𱚅客-宦宨-宫ã“-ã–𡧩-𡧿𪧊-𪧌ð«³-𫳆𭓪-𭓯𰌻-𰌽𱚆宧宬-宾ã—-ãšð¡¨€-𡨡ðª§-ðª§ð«³‡-ð«³ð­“°-𭓳𰌾-ð°€ð±š‡ð±šˆå®¿-寉ã›-ã¡ð¡¨¢-𡨼𪧑-𪧓ð«³-𫳙𭓴-ð­“¿ð°-ð°…𱚉-𱚌寊-寕寪ã¢ã£ð¡¨½-𡩞𪧔-𪧚𫳚-𫳣𭔀-ð­”…ð°†-ð°ð±šð±šŽå¯–-å¯ã¤-ã¨ð¡©Ÿ-𡩺𪧛-𪧠𫳤-𫳮𭔆-𭔌ð°Ž-ð°—ð±šð±šå¯ž-寨ã©-ã¬ð¡©»-ð¡ªðª§¡-𪧥ð«°ð«³¯-𫳼ð­”-ð­”ð°˜-ð°šð±š‘審寫-寮ã­-ã¯ð¡ªŸ-𡪽𪧦-𪧪ð«±ð«³½-ð«´ð­”‘-ð­”–ð°›ð°œð±š’𱚓寯寰𡪾-ð¡«ðª§«-𪧮𫴂-ð«´ð­”—-ð­”™ð°-ð°Ÿð±š”𱚕寱寲𡫑-ð¡«ðª§¯ð«´-𫴗𭔚-𭔞ð° ð±š–-𱚚ã°ð¡«ž-𡫫𪧰-𪧲𫴘-𫴛𭔟-ð­”¡ð°¡å¯³-寵𡫬-𡫶𫴜-𫴟𭔢-𭔤寶𡫷-𡫻𪧳𪧴𫴠𭔥𭔦ð°¢å¯·ã±ð¡«¼-𡬃𪧵𫴡-𫴣𭔧𡬄-𡬋𫴤𫴥𭔨𱚛𡬌𫴦𫴧ð°£ð¡¬ð¡¬ð¡¬ðª§¶ð«´¨-ð«´ªð°¤ð¡¬‘𡬓-𡬕𱚜ã²ð¡¬–-𡬘𡬎𡬙𡬚𡬒𡬛𫴫𡬜]
+[radical 37=⼤大:大-夭𡗒-ð¡—”ðª¥ð«¯›å¤®-头㚎𡗕-𡗛𪥂𭑂𰋙夵-夼ãš-ãš‘ð €›ð¡—-𡗤𪥃𫯜𭑃𰋚夽-奂㚒㚓𡗥-𡗶𪥄-𪥆ð«¯-𫯟𭑄𭑅𮰴𰋛𰋜𱘭𱘮奃-奉奋-å¥å¥”ãš”-㚙𡗷-𡘌𪥇-𪥌𫯠-𫯢𭑆-ð­‘‹ð°‹-𰋟𱘯奎-奓奕奖㚚㚛ð¡˜-𡘜ðª¥-ðª¥ð«¯£-𫯥𭑌-𭑎𮰵𰋠𰋡𱘰奊套-奚ð¡˜-𡘳ðª¥-𪥒ð«¤ð«¯¦ð«¯§ð­‘-𭑒𰋢𰋣𱘱-𱘵奛-奟㚜-㚞𡘴-𡙆𪥓-𪥕𫯨𭑓-𭑖𮰶𰋤-𰋧奠-奥㚟𡔱𡙇-𡙚𪥖-𪥘𫯩-𫯯𭑗-𭑛𰋨-𰋬𱘶-𱘸奦-奨㚠𡙛-𡙫𪥙-𪥛𫯰-𫯴𭑜-𭑟𰋭𰋮奩-奬𡙬-𡙶𪥜-𪥞𫯵-𫯷𭑠𰋯𰋰𱘹-𱘻奭𡙷-𡚅𪥟-𪥡𫯸-𫯼𰋱奮奯㚡𡚆-𡚎ð¤ ð«¥ð«¯½-𫰀𭑡-𭑣𰋲𰋳𱘼ð¡š-ð¡š–ð«°ð­‘¤ð±˜½å¥°ð¡š—𡾗𪥢𭑥𡚘-𡚚𫰂𭑦𱘾𡚛𪥣𫰃𫰄𰋴𡚜ð¡šå¥±ð¡šžð¡šŸð±˜¿ð±™€ð¡š -𡚢𫰅奲𡚣-𡚥]
+[radical 38=⼥女:女𡚦𫰆𰋵ð±™å¥´-奶㚢𡚧-𡚭𫰇𭑧-𭑫𮰷𰋶𱙂𱙃奷-妈㚣-㚨𡚮-𡚻𪥤𪥥𫰈-𫰊𭑬𭑭𮰸𰋷𰋸𱙄-𱙆妉-妌妎-妫㚩-㚯㛠𡚼-𡛘𪥦-𪥬ð«¦ð«°‹-𫰖𭑮𭑯𮰹-𮰼𰋹-𰋻𱙇-𱙊妬-姗㚰-ã›ð¡›™-ð¡œðª¥­-𪥰𫰗-𫰛𭑰-𭑵𮰽𮰾𰋼𱙋-ð±™å¦å§˜-姫姭-娃娅-娈㛂-㛌𡜂-𡜭𪥱-𪥵ð«§ð«¨ð«°œ-𫰩𭑶-𭑹𮰿-𮱃𰋽-𰌃𱙎-𱙓姬娉-娫娭-娴娽ã›-㛟㛡-㛤𡜮-ð¡ðª¥¶-𪥺ð«©-ð««ð«°ª-ð«°­ð«°¯-𫰶𭑺-𭑿𮱄-𮱆𰌄𰌅𱙔-𱙙娬娵-娼娾-婶㛥-ã›­ð¡ž-𡞛𪥻-𪦅𫰮𫰷-𫱂𭒀-𭒄𮱇-𮱌𰌆-𰌋𱙚-𱙜婷-åªåª‘-媯å«ã›®-㜄𡞜-𡟧𡠣𪦆-ðª¦ð«¬ð«±ƒ-ð«±ð­’…-ð­’Œð®±-ð®±ð°ŒŒ-𰌎ð±™-𱙟åªåª°-å«Žå«-嫔㜅-㜔𡟨-𡠕𪦑-𪦖𫱑-𫱞ð­’-𭒑𮱑𮱒ð°Œ-𰌔𱙠-𱙦嫕-嫲㜕-㜢𡠗𡠙-𡠢𡠤-𡡎𪦗-𪦟ð«­ð«±Ÿ-𫱫𭒒-ð­’𮱓-𮱗𰌕𱙧-𱙬嫳-å¬ãœ£-㜨𡠖𡠘ð¡¡-ð¡¢ð¡¢ðª¦ -𪦥ð«®ð«±¬-𫱷𭒞-𭒡𮱘𰌖𰌗𱙭𱙮å¬-嬢嬴㜩-㜭𡢎𡢑-𡣄𪦦-𪦪𫱸-𫲄𭒢-𭒥𰌘-𰌚嬣-嬳嬵-嬷㜮㜯𡣅-𡣡𡣣-𡣩𪦫𫲅-𫲌𭒦-𭒨𱙯𱙰嬸嬺-嬽㜰㜱𡣪-𡣼𪦬-𪦯ð«²-𫲓𭒩-𭒭嬹嬾嬿㜲-㜵𡣽-ð¡¤ð¡¤žðª¦°ðª¦±ð«²”-𫲙𭒮𮱙𮱚孀-孆㜶-㜸𡤎-𡤗𪦲𫲚𫲛𭒯-𭒳𱙱𱙲孇-孉㜹𡤘-ð¡¤ð¡¤Ÿð¡¤ ðª¦³ðª¦´ð«²œð«²ð±™³å­Š-孌㜺𡤡-𡤪𫲞𫲟𰌛å­ð¡¤«-𡤭𪦵𫲠孎å­ð¡¤®-𡤳𭒴𮱛𡤴-𡤶𭒵𱙴㜻㜼𡤷-𡤻]
+[radical 39=⼦å­:å­-孓𡤼孔𡤽孕𡤾-𡥂𫲡𭒶-𭒹孖-孙㜽𡉗𡥃-ð¡¥…ð­’º-𭒼𰌜ð°Œð±™µå­š-孞㜾㜿𡥆-𡥊𡥌ð¡¥ðª¦¶-𪦹𰌞-𰌢𱙶-𱙸孟-å­§ã€ð ƒ±ð¡¥Ž-𡥚𪦺𫲢-𫲤𭒽-𭓀𮱜𰌣-𰌥𱙹孨-å­ªãð¡¥›-𡥧𪦻𫲥ð­“𭓂𰌦𰌧𱙺孫-å­­ã‚ãƒð¡¥¨-𡥭𢈲𨹴𫲦𭓃-𭓇𰌨𱙻孮-孰孲𡥮-𡥵𪦼-𪦾𫲧𫲨𭓈-𭓎𰌩-𰌫𱙼𱙽孱ã„𡥶-𡦂𪦿𫲩𫲪ð­“-𭓔𰌬𰌭𱙾孳孴ã…𡦃-ð¡¦ð«²«ð«²¬ð­“•ð­“–ð®±ð°Œ®ð±™¿å­µ-孷𡦑-𡦖𪧀𫲭𫲮𭓗𭓘𰌯ã†ð¡¦—-ð¡¦ð«¯ð«²¯ð«²°å­¸å­¹ã‡ð¡¦ž-𡦨ðª§ð«²±ð«²²ð­“™ð­“šð°Œ°ð±š€ð±šå­ºå­»ð¡¦©ðª§‚𪧃𭓛𡦪-𡦬𰌱𱚂孼𡦭-𡦰𫲳𭓜孽孾𡦱-𡦶𰌲𪧄孿𡦷𫲴ãˆð¡¦¸ð­“]
+[radical 40=⼧宀:宀ã‰ð¡¦¹å®-宄ãŠã‹ð¡¦º-𡦼𰌳宅-安ãŒã𡦽-𡧊𫲵𫲶𭓞𮱞𰌴𰌵𱚃宊-å®’ãŽ-ã‘𡧋-𡧕𪧅-𪧇𫲷-𫲽𭓟-𭓡𮱟𰌶-𰌸𱚄宓-审ã’𡧖-𡧨𪧈𪧉𫲾-𫳀𭓢-𭓩𰌹𰌺𱚅客-宦宨-宫ã“-ã–𡧩-𡧿𪧊-𪧌ð«³-𫳆𭓪-𭓯𰌻-𰌽𱚆宧宬-宾ã—-ãšð¡¨€-𡨡ðª§-ðª§ð«³‡-ð«³ð­“°-𭓳𰌾-ð°€ð±š‡ð±šˆå®¿-寉ã›-ã¡ð¡¨¢-𡨼𪧑-𪧓ð«³-𫳙𭓴-ð­“¿ð°-ð°…𱚉-𱚌寊-寕寪ã¢ã£ð¡¨½-𡩞𪧔-𪧚𫳚-𫳣𭔀-ð­”…ð°†-ð°ð±šð±šŽå¯–-å¯ã¤-ã¨ð¡©Ÿ-𡩺𪧛-𪧠𫳤-𫳮𭔆-𭔌ð°Ž-ð°—ð±šð±šå¯ž-寨ã©-ã¬ð¡©»-ð¡ªðª§¡-𪧥ð«°ð«³¯-𫳼ð­”-ð­”ð°˜-ð°šð±š‘審寫-寮ã­-ã¯ð¡ªŸ-𡪽𪧦-𪧪ð«±ð«³½-ð«´ð­”‘-ð­”–ð°›ð°œð±š’𱚓寯寰𡪾-ð¡«ðª§«-𪧮𫴂-ð«´ð­”—-ð­”™ð°-ð°Ÿð±š”𱚕寱寲𡫑-ð¡«ðª§¯ð«´-𫴗𭔚-𭔞ð° ð±š–-𱚚ã°ð¡«ž-𡫫𪧰-𪧲𫴘-𫴛𭔟-ð­”¡ð®± ð°¡å¯³-寵𡫬-𡫶𫴜-𫴟𭔢-𭔤寶𡫷-𡫻𪧳𪧴𫴠𭔥𭔦ð°¢å¯·ã±ð¡«¼-𡬃𪧵𫴡-𫴣𭔧𡬄-𡬋𫴤𫴥𭔨𱚛𡬌𫴦𫴧ð°£ð¡¬ð¡¬ð¡¬ðª§¶ð«´¨-ð«´ªð°¤ð¡¬‘𡬓-𡬕𱚜ã²ð¡¬–-𡬘𡬎𡬙𡬚𡬒𡬛𫴫𡬜]
[radical 41=⼨寸:寸ð¡¬å¯¹ã³å¯º-导𡬞𪧷𭔩寽-寿ã´ð­”ªð±šå°€ãµð¡¬Ÿ-𡬦𭔫𭔬𱚞𱚟å°å°‚将𡬧-𡬬𫴬𭔭-𭔯𱚠尃-å°…ã¶ð¡¬­ð«´­ð­”°-𭔲將-尉𡬮-𡬲𪧸𪧹𭔳-𭔵尊-å°Œã·ð¡¬³-𡬸𪧺𫴮𫴯𭔶-𭔸𡬹-𡬼𫴰-𫴳𭔹-ð­”¼å°ð¡¬½-ð¡­‚ð­”½-ð­”¿ð°¥å°Žð¡­ƒ-𡭉𣊒𪧻𪧼𫴴𫴵𭕀ð­•ð°¦ð±š¡ð±š¢ð¡­Š-𡭌𪧽𭕂ð¡­-ð¡­ðª§¾ð¡­ð¡­‘𭕃𡭒𡭓𫴶𫴷]
-[radical 42=⼩å°:å°ð¡­”ð­•„ð°§ð°¨å°å°‘ð¡­•ð¡­–å°’-尕龸𡭗𡭘ð°©å°–-尘𡭙-𡭜𭕅ð¡­-𡭤𪧿𫴸𫴹𭕆𭕇ð°ªð±š£å°™å°šð ˆ¤ð¡­¥-𡭩𪨀𫴺𫴻𭕈𭕉𱚤尛-å°ð¡­ª-𡭳𫴼𫴽𭕊ð°«ð±š¥ã¸ð¡­´-ð¡­¼ðª¨ðª¨‚ð¡­½-ð¡®ð«´¾-𫵃尞ã¹ð¡®Ž-𡮗𫵄𫵅𱚦𱚧尟尠𠅽𡮘-ð¡®ð­•‹å°¡ãºð¡®ž-𡮥𪨃𫵆𫵇𱚨ã»ð¡®¦-𡮯𪨄𫵈𫵉𱚩𡮰-𡮳𪨅𫵊-𫵌𭕌𡮴-𡮶𢇔𪨆ð°¬ð±šªð±š«ð¡®·-ð¡®»ð¤¯ð¡®¼-ð¡®¾ð«µð¡®¿ð±š¬ð¡¯€]
-[radical 43=⼪尢:尢尣ð¡¯ð¡¯‚尤𡯃-𡯊𫵎尥-å°§ã¼ð¡¯‹-𡯎ð­•å°¨-å°¬ã½ð¡¯-𡯙ð«µå°­ã¾ã¿ð¡¯š-𡯡ð«µð­•Žð°­å°®å°¯ãž€ãžð¡¯¢-𡯤𡯦𡯧ð°®ãž‚𡯨-𡯲ð°¯ãžƒ-㞆𡯳-𡯸𫵑ð­•ð­•å°°å°±ãž‡ãžˆð¡¯¹-𡰂𪨇尲-尴㞉㞊𡰃-𡰊𪨈𭕑𭕒𱚭𡰋-ð¡°ð­•“å°µð¡°-𡰕𫵒𡰖-𡰚尶尷𡰛𡰜𱚮𱚯ð¡°-ð¡°¢]
+[radical 42=⼩å°:å°ð¡­”ð­•„ð°§ð°¨å°å°‘ð¡­•ð¡­–å°’-尕龸𡭗𡭘ð°©å°–-尘𡭙-𡭜𭕅𮱡ð¡­-𡭤𪧿𫴸𫴹𭕆𭕇ð°ªð±š£å°™å°šð ˆ¤ð¡­¥-𡭩𪨀𫴺𫴻𭕈𭕉𮱢𱚤尛-å°ð¡­ª-𡭳𫴼𫴽𭕊ð°«ð±š¥ã¸ð¡­´-ð¡­¼ðª¨ðª¨‚ð¡­½-ð¡®ð«´¾-𫵃尞ã¹ð¡®Ž-𡮗𫵄𫵅𱚦𱚧尟尠𠅽𡮘-ð¡®ð­•‹å°¡ãºð¡®ž-𡮥𪨃𫵆𫵇𱚨ã»ð¡®¦-𡮯𪨄𫵈𫵉𱚩𡮰-𡮳𪨅𫵊-𫵌𭕌𡮴-𡮶𢇔𪨆ð°¬ð±šªð±š«ð¡®·-ð¡®»ð¤¯ð¡®¼-ð¡®¾ð«µð¡®¿ð±š¬ð¡¯€]
+[radical 43=⼪尢:尢尣ð¡¯ð¡¯‚尤𡯃-𡯊𫵎尥-å°§ã¼ð¡¯‹-𡯎ð­•å°¨-å°¬ã½ð¡¯-𡯙ð«µå°­ã¾ã¿ð¡¯š-𡯡ð«µð­•Žð°­å°®å°¯ãž€ãžð¡¯¢-𡯤𡯦𡯧ð°®ãž‚𡯨-𡯲ð°¯ãžƒ-㞆𡯳-𡯸𫵑ð­•ð­•å°°å°±ãž‡ãžˆð¡¯¹-𡰂𪨇尲-尴㞉㞊𡰃-𡰊𪨈𭕑𭕒𱚭𡰋-ð¡°ð­•“å°µð¡°-𡰕𫵒𮱣𡰖-𡰚尶尷𡰛𡰜𱚮𱚯ð¡°-ð¡°¢]
[radical 44=⼫尸:尸𡰣尺𪛛ð°°å°»å°¼ãž‹ð¡°¤-𡰨𡰴𭕔𱚰尽㞌ãžð¡°©-ð¡°³ð«²ð±š±ð±š²å°¾-屃㞎𡰵-𡰽𪨉-𪨋𫵓-𫵕ð°±ð°²ð±š³ð±š´å±„-届ãž-ãž‘ð¡°¾-𡱋𪨌𫵖-𫵘𭕕-𭕘ð°³ð°´ð±šµð±š¶å±‹-å±ãž’-㞖𡱌-𡱡𢇀ðª¨ðª¨Žð«µ™-ð«µð­•™-ð­•ð°µ-ð°·ð±š·-𱚹å±-屘㞗𡱢-𡱹ðª¨ðª¨ð«µžð«µŸð­•žð­•Ÿð°¸-ð°»ð±šºå±™-å±ãž˜ãž™ð¡±º-𡲓𪨑𫵠𭕠-ð­•£ð°¼-ð°¾ð±š»å±ž-屡㞚㞛𡲔-𡲫𪨕-𪨘𫵡𭕤ð°¿ð°Ž€ð±š¼ð¡²¬-𡳃𪨒-𪨔𭕥-ð­•­ð°Žð±š½å±¢å±£ãžœ-㞞𡳄-ð¡³ðª¨™ðª¨šð«µ¢-𫵥𭕮𭕯𰎂𱚾層-屧㞟㞠ð¡³-𡳞𪨛𪨜𭕰-𭕵𰎃-𰎅𱚿𱛀𡳟-𡳧ðª¨ð«µ¦ð«µ§ð°Ž†å±¨ð¡³¨ð¡³©ðª¨žð«µ¨ð­•¶å±©å±ªð¡³ªð¡³«ð«µ©ð­•·ð­•¸ð±›ð±›‚屫㞡𡳬-𡳰𪨟𪨠𫵪𫵫𭕹𭕺𰎇𡳱-𡳴屬𡳵-𡳷𫵬𫵭𭕻𡳸-𡳺𪨡𭕼屭𡳻𭕽𡳼𡳽𱛃]
[radical 45=⼬屮:屮䶹𡳾屯㞢𡳿𭕾屰𡴀-𡴅𭕿㞣㞷𡴆-𡴚𫵮𱛄𡴛-𡴣𰎈𡴤𡴥𫵯𫵰𡴦-𡴬]
-[radical 46=â¼­å±±:山乢屲𡴭-𡴯屳-屷㞤-㞧𡴰-𡴽𫵱-𫵴𭖀𱛅𱛆屸-岃㞨-㞯𡴾-𡵒𪨢-𪨥ð«³ð«µµð­–-𭖄𰎉𱛇岄-岌岎-岜㞰-㞶㞸𡵓-𡶂𪨦-𪨨𫵶𫵷𭖅-ð­–Šð°ŽŠ-ð°Žð±›ˆ-ð±›’å²-å³…ãž¹-㟃𡶃-𡶣𡶥-𡶪𪨩-𪨮𫵸𫵹𭖋-𭖔𰎎-𰎓𱛓-ð±››å²å³†-峧㟄-㟆𡶫-𡷔𪨯-𪨴ð«´ð«µºð«µ»ð­–•-ð­–žð°Ž”-𰎞𱛜-𱛧峨-崅㟇-㟖𡷕-ð¡¸ð¦Š¤ðª¨µ-𪨺ð«µð«µ¼-𫶀𭖟-𭖨𰎟-𰎤𱛨-ð±›°å´†-崰㟗-㟥𡸑-𡹩𪨻-ðª©ð«¶-𫶅𭖩-𭖱𰎥-𰎨𱛱-𱛶崱-嵉嵋-åµï¨‘㟦-㟯𡹪-𡺩𪩂-𪩇𫶆-𫶉𭖲-ð­–¿ð°Ž©-ð°Ž­ð±›·-𱜀嵊嵞-嵶㟰-㟸𡺪-𡻗𪩈-𪩋𫶊-ð«¶ð­—€-𭗆𰎮-ð°Ž°ð±œ-𱜄嵷-嶎㟹-㠄𡻘-𡼉𪩌-𪩒𫶑-𫶔𭗇-𭗓𰎱-𰎴𱜅-𱜌å¶-嶥㠅-ã ð¡¼Š-𡼼𪩓-𪩖𫶕𫶖𭗔-𭗞𰎵-𰎸ð±œ-ð±œå¶¦-嶶㠑-㠗𡼽-𡽈𡽊-𡽛𪩗-𪩚𫶗-𫶜𭗟𭗠𰎹𰎺ð±œ-𱜒嶷-嶺嶼-嶿㠘-㠜𡽉𡽜-ð¡¾ð¡¾»ðª©›-ðª©ð«¶ð­—¡-𭗤𰎻巀-å·‚ã -㠟𡾂-𡾖𡾠𫶞𭗥-𭗫𰎼-𰎾𱜓嶻巃-å·…ã  -㠣𡾘-𡾟𡾡-𡾭𣦭𪩞𫶟-𫶣𭗬-𭗱𰎿-ð°å·†-巌㠤𡾮-𡾺𭗲-ð­—´å·å·å·ã ¥ã ¦ð¡¾¼-𡿆𪩟𫶤𭗵𭗶𱜔巎巑-巕巗㠧𡿇-𡿑𪩠𭗷巖巘-巚𡿒𡿓𭗸𡿔-𡿜𫶥𭗹ð¡¿-𡿟𫶦ð°‚𡿠𡿡𡿣𡿤㠨𡿢𱜕𡿥]
+[radical 46=â¼­å±±:山乢屲𡴭-𡴯屳-屷㞤-㞧𡴰-𡴽𫵱-𫵴𭖀𱛅𱛆屸-岃㞨-㞯𡴾-𡵒𪨢-𪨥ð«³ð«µµð­–-𭖄𰎉𱛇岄-岌岎-岜㞰-㞶㞸𡵓-𡶂𪨦-𪨨𫵶𫵷𭖅-𭖊𮱤-𮱦𰎊-ð°Žð±›ˆ-ð±›’å²-å³…ãž¹-㟃𡶃-𡶣𡶥-𡶪𪨩-𪨮𫵸𫵹𭖋-𭖔𮱧𰎎-𰎓𱛓-ð±››å²å³†-峧㟄-㟆𡶫-𡷔𪨯-𪨴ð«´ð«µºð«µ»ð­–•-𭖞𮱨𮱩𰎔-𰎞𱛜-𱛧峨-崅㟇-㟖𡷕-ð¡¸ð¦Š¤ðª¨µ-𪨺ð«µð«µ¼-𫶀𭖟-𭖨𮱪-𮱬𰎟-𰎤𱛨-ð±›°å´†-崰㟗-㟥𡸑-𡹩𪨻-ðª©ð«¶-𫶅𭖩-𭖱𮱭-𮱯𰎥-𰎨𱛱-𱛶崱-嵉嵋-åµï¨‘㟦-㟯𡹪-𡺩𪩂-𪩇𫶆-𫶉𭖲-ð­–¿ð°Ž©-ð°Ž­ð±›·-𱜀嵊嵞-嵶㟰-㟸𡺪-𡻗𪩈-𪩋𫶊-ð«¶ð­—€-𭗆𰎮-ð°Ž°ð±œ-𱜄嵷-嶎㟹-㠄𡻘-𡼉𪩌-𪩒𫶑-𫶔𭗇-𭗓𰎱-𰎴𱜅-𱜌å¶-嶥㠅-ã ð¡¼Š-𡼼𪩓-𪩖𫶕𫶖𭗔-𭗞𰎵-𰎸ð±œ-ð±œå¶¦-嶶㠑-㠗𡼽-𡽈𡽊-𡽛𪩗-𪩚𫶗-𫶜𭗟𭗠𮱰𰎹𰎺ð±œ-𱜒嶷-嶺嶼-嶿㠘-㠜𡽉𡽜-ð¡¾ð¡¾»ðª©›-ðª©ð«¶ð­—¡-𭗤𮱱𮱲𰎻巀-å·‚ã -㠟𡾂-𡾖𡾠𫶞𭗥-𭗫𰎼-𰎾𱜓嶻巃-å·…ã  -㠣𡾘-𡾟𡾡-𡾭𣦭𪩞𫶟-𫶣𭗬-𭗱𰎿-ð°å·†-巌㠤𡾮-𡾺𭗲-ð­—´å·å·å·ã ¥ã ¦ð¡¾¼-𡿆𪩟𫶤𭗵𭗶𱜔巎巑-巕巗㠧𡿇-𡿑𪩠𭗷巖巘-巚𡿒𡿓𭗸𡿔-𡿜𫶥𭗹ð¡¿-𡿟𫶦ð°‚𡿠𡿡𡿣𡿤㠨𡿢𱜕𡿥]
[radical 47=⼮巛:å·›-å·ð¡¿¦ð¡¿¨ð«¶§ð¡¿§ð­—ºå·žå·Ÿã ©ð¡¿©-𡿭𭗻𭗼巠𡿮-𡿰𪩡𭗽𭗾𡿱-𡿶𭗿𡿷-𡿻𪩢𭘀ð°ƒð°„𠙗𡿼𡿽𫶨ð­˜å·¢å·£ð¡¿¾-𢀀𫶩ð¢€ð¢€‚ð°…巤𢀃ð°†ð¢€„-𢀈𱜖𢀉-𢀋𫶪𢀌-ð¢€]
[radical 48=⼯工:工𪛜㠪𢀑-𢀕𭘂左-巨𢀖-𢀙巩巪𢀚𢀛𪩣𭘃-ð­˜…ð°‡å·«ð¢€œ-𢀞𫶫ð°ˆ-ð°Šð¢€Ÿð«¶¬ð­˜†ð°‹å·¬å·­ð¢€ ð«¶­ð­˜‡ð­˜ˆå·®ã «ã ¬ð¢€¡-𢀣𪩤𫶮ð°Œå·¯ã ­ð¢€¤ð¢€¥ðª©¥ð±œ—巰𢀦𢀧𪩦𫶯𭘉𱜘𱜙𪩧𫶰𱜚㠮𢀨-𢀫𫶱𢀬𢑰𤀢𫶲𫶳ð°ð±œ›ð¢€­ðª©¨ð«¶´ð¢€®ðª©©ð°Žð¢€¯ð±œœð¢€°-𢀲𪩪ð±œ]
[radical 49=â¼°å·±:å·±-巴𢀳㠯𢀴-𢀶𫶵巵𪩬𭘊巶㠰𢀷𢀸𪩫𭘋𭘌巷-巻𢀹-𢀻ð­˜å·¼ð¢€¼-𢀿𫶶ð°ã ±ð¢€-ð¢„𫶷ð°å·½ð¢…-ð¢‰ðª©­ðª©®ð«¶¸ð«¶¹ð­˜Žð­˜ð±œžð¢Šðª©¯ð±œŸð¢‹ð¢Œð±œ ð¢ð¢ðª©°ðª©±ð«¶ºð¢Žð¢ð«¶»ð«¶¼ð­˜ð¢‘]
-[radical 50=⼱巾:å·¾-帅㠲㠳ð¢’-ð¢”𪩲𫶽𫶾ð°‘帆-师㠴-ã ¶ð¢•-ð¢¤ð­˜‘ð­˜’ð°’𱜡𱜢帉-å¸ã ·-ã ¼ð¢¥-ð¢ºð«¶¿-𫷂𭘓𭘔ð°“ð°”帑-帜㠽-ã¡€ð¢»-ð¢‚𫷃𫷄𭘕-𭘚ð°•ð°–𱜣å¸-帧ã¡-㡆ð¢‚-𢂰𫷅𭘛-𭘞ð°—ð°˜ð±œ¤ð±œ¥å¸¨-帱㡇㡈𢂱-𢃌𪩳𭘟-𭘣ð°™ð±œ¦-𱜩帲-帼㡉-ã¡Žð¢ƒ-𢃪𪩴-𪩷𫷆𫷇𭘤-𭘦𱜪-𱜭帽-幇幉ã¡-㡖𢃫-𢄉𪩸-𪩺𫷈𫷉𭘧-𭘮ð°š-ð°œð±œ®-𱜱幊-å¹ã¡—-㡛𢄊-𢄞𫷊-ð«·ð­˜¯-𭘱ð°ð±œ²å¹ˆå¹‘-幙幛㡜-㡟𢄟-𢄲𪩻𭘲-ð­˜´ð°žð±œ³ð±œ´å¹šå¹œ-幥㡠㡡𢄳-𢅌𪩼𭘵ð°Ÿð±œµ-𱜷幦-幩㡢-㡤ð¢…-𢅞𪩽ð«·ð«·‘𭘶-𭘸ð° å¹ª-幬㡥㡦𢅟-𢅨𪩾𱜸幭-幯𢅩-𢅬𭘹-𭘻𱜹-𱜻幰𢅭-𢅷𪩿𫷒𫷓𭘼𱜼幱㡧㡨𢅸-𢅺𪪀𢅻-𢅽ð°¡ã¡©ã¡ªð¢…¾-𢆂𭘽𢆃-𢆈]
+[radical 50=⼱巾:å·¾-帅㠲㠳ð¢’-ð¢”𪩲𫶽𫶾ð°‘帆-师㠴-ã ¶ð¢•-ð¢¤ð­˜‘ð­˜’ð°’𱜡𱜢帉-å¸ã ·-ã ¼ð¢¥-ð¢ºð«¶¿-𫷂𭘓𭘔𮱳ð°“ð°”帑-帜㠽-ã¡€ð¢»-ð¢‚𫷃𫷄𭘕-𭘚ð°•ð°–𱜣å¸-帧ã¡-㡆ð¢‚-𢂰𫷅𭘛-𭘞ð°—ð°˜ð±œ¤ð±œ¥å¸¨-帱㡇㡈𢂱-𢃌𪩳𭘟-𭘣ð°™ð±œ¦-𱜩帲-帼㡉-ã¡Žð¢ƒ-𢃪𪩴-𪩷𫷆𫷇𭘤-𭘦𱜪-𱜭帽-幇幉ã¡-㡖𢃫-𢄉𪩸-𪩺𫷈𫷉𭘧-𭘮ð°š-ð°œð±œ®-𱜱幊-å¹ã¡—-㡛𢄊-𢄞𫷊-ð«·ð­˜¯-𭘱ð°ð±œ²å¹ˆå¹‘-幙幛㡜-㡟𢄟-𢄲𪩻𭘲-ð­˜´ð°žð±œ³ð±œ´å¹šå¹œ-幥㡠㡡𢄳-𢅌𪩼𭘵ð°Ÿð±œµ-𱜷幦-幩㡢-㡤ð¢…-𢅞𪩽ð«·ð«·‘𭘶-𭘸ð° å¹ª-幬㡥㡦𢅟-𢅨𪩾𱜸幭-幯𢅩-𢅬𭘹-𭘻𱜹-𱜻幰𢅭-𢅷𪩿𫷒𫷓𭘼𱜼幱㡧㡨𢅸-𢅺𪪀𢅻-𢅽ð°¡ã¡©ã¡ªð¢…¾-𢆂𭘽𢆃-𢆈]
[radical 51=⼲干:干平𢆉年幵𫷔𭘾ð°¢ð¢†Š-𢆌ðªªð«·•ð«·–ð°£å¹¶-幸ð¢†-ð¢†ð­˜¿ð­™€ð°¤ð¢†‘-𢆕ð­™ð¢†–-𢆙𭙂𭙃ð°¥ð°¦ð±œ½ð¢†šðªª‚𪪃𫷗ð°§ð°¨ð¢†›-ð¢†ðªª„ð°©-ð°«ð±œ¾å¹¹ð¢†ž-𢆠𪪅𪪆𫷘-𫷚𢆢𢆤𫷛𭙄-𭙆ð°¬ð°­ð¢†¥ðªª‡ð«·œð«·ð¢†¦-𢆩ð°®ð±œ¿ð±€ð¢†ªðªªˆð«·žð­™‡ð±ð±‚𢆫𪪉𢆬-𢆮]
[radical 52=⼳幺:乡幺幻𢆯-𢆱𭙈𭙉幼𢆲-𢆵𭙊ð°¯ð°°ð¢†¶ðªªŠð¢†·-𢆺𭙋𢆻-𢆾幽𢆿𢇂𪪋𫷟𭙌ð°±ð¢‡ð¢‡ƒ-𢇉幾㡫㡬𢇊𫷠𫷡𠅹𢇋𫷢𫷣㡭𢇌-𢇓𫷤㡮𢇖]
-[radical 53=⼴广:广-広𠆲𫷥ð­™-ð­™åº„-庆㡯-㡱𢇗-𢇢𫷦ð­™-ð­™’ð°²åº‡-应庘㡲㡳𢇣-𢇱𪪌ðªªð«·§ð­™“-𭙗底-店庙-废㡴-㡻𢇲-𢈆𪪎ðªªð­™˜ð­™™ð°³ð°´åº -度㡼-㢂𢈇-𢈘ðªªðªª‘𫷨𫷩𭙚𭙛ð°µð°¶ð±ƒð±„座-庯㢃-㢇𢈙-𢈱𪪒-𪪗𫷪-𫷯𭙜-ð­™¡ð°·ð°¸ð±…庰-庼㢈-㢌𢈳-𢉕𢉗-𢉚𪪘𪪙ð«¶ð«·ð«·°-𫷵𭙢𭙣ð°¹-ð°»åº½-廃廊ã¢-ã¢ð¢‰›-𢉻𢉽𢉾𪪚𪪛𫷶-𫷹𭙤-𭙧ð°¼ð°½ð±†å»…-廉廋廌鿮㢑𢉼𢉿-𢊔𪪜ðªªð«·ºð«·»ð­™¨-ð­™­ð°¾å»„å»-廘㢒-㢕𢊕-𢊬𪪞-𪪠𫷼-ð«·¿ð­™®-ð­™³ð°¿-ð°ð±‡-ð±‰å»™-廤㢖-㢘𢊭-ð¢‹ðªª¡-𪪣𫸀𭙴-ð­™»ð°‚ð°ƒð±Š-ð±å»¥-廪㢙-㢜𢋂-ð¢‹ðªª¤ðªª¥ð«¸ð«¸‚ð­™¼-𭚃𢋑-𢋛ð¢‹-𢋠𪪦-𪪨𫸃-𫸆𭚄ð°„廫𢋡-𢋭𪪩𫸇𭚅-𭚈ð°…ð±Žå»¬å»­é¾ã¢ð “Œð¢‹®-𢋺𪪪𫸈𭚉-ð­š‹ð±å»®-廰㢞𢋻-𢌃𫸉𭚌廱𢌄-𢌆𪪫𫸊ð­šð­šŽå»²ð¢Œˆ-𢌌𫸋𫸌ð­šð­šð°†ð¢Œ-𢌑ð«¸ð«¸Žð±ð¢Œ’𭚑廳ð«¸ð¢Œ“ð«¸ð¢Œ”-𢌖]
+[radical 53=⼴广:广-広𠆲𫷥ð­™-ð­™åº„-庆㡯-㡱𢇗-𢇢𫷦ð­™-ð­™’ð°²åº‡-应庘㡲㡳𢇣-𢇱𪪌ðªªð«·§ð­™“-𭙗底-店庙-废㡴-㡻𢇲-𢈆𪪎ðªªð­™˜ð­™™ð°³ð°´åº -度㡼-㢂𢈇-𢈘ðªªðªª‘𫷨𫷩𭙚𭙛ð°µð°¶ð±ƒð±„座-庯㢃-㢇𢈙-𢈱𪪒-𪪗𫷪-𫷯𭙜-ð­™¡ð°·ð°¸ð±…庰-庼㢈-㢌𢈳-𢉕𢉗-𢉚𪪘𪪙ð«¶ð«·ð«·°-𫷵𭙢𭙣ð°¹-ð°»åº½-廃廊ã¢-ã¢ð¢‰›-𢉾𪪚𪪛𫷶-𫷹𭙤-𭙧ð°¼ð°½ð±†å»…-廉廋廌鿮㢑𢉿-𢊔𪪜ðªªð«·ºð«·»ð­™¨-ð­™­ð°¾å»„å»-廘㢒-㢕𢊕-𢊬𪪞-𪪠𫷼-ð«·¿ð­™®-ð­™³ð°¿-ð°ð±‡-ð±‰å»™-廤㢖-㢘𢊭-ð¢‹ðªª¡-𪪣𫸀𭙴-ð­™»ð°‚ð°ƒð±Š-ð±å»¥-廪㢙-㢜𢋂-ð¢‹ðªª¤ðªª¥ð«¸ð«¸‚ð­™¼-𭚃𢋑-𢋛ð¢‹-𢋠𪪦-𪪨𫸃-𫸆𭚄ð°„廫𢋡-𢋭𪪩𫸇𭚅-𭚈ð°…ð±Žå»¬å»­é¾ã¢ð “Œð¢‹®-𢋺𪪪𫸈𭚉-ð­š‹ð±å»®-廰㢞𢋻-𢌃𫸉𭚌廱𢌄-𢌆𪪫𫸊ð­šð­šŽå»²ð¢Œˆ-𢌌𫸋𫸌ð­šð­šð°†ð¢Œ-𢌑ð«¸ð«¸Žð±ð¢Œ’𭚑廳ð«¸ð¢Œ“ð«¸ð¢Œ”-𢌖]
[radical 54=⼵廴:廴𢌗廵㢟𢌘-𢌚𪪬𫸑ð±‘延廷𢌜𭚒-𭚔廸廹㢠𢌛ð¢Œð¢Œžðªª­ðªª®ð­š•å»º-廼𢌟ð±’廽𢌠-𢌥𪪯𢌦𢌧𪪰𫸒𫸓𢌨-𢌪𪪱ð±“𢌫𣉡𦋪𪪲𫸔𫸕]
[radical 55=⼶廾:廾𢌬廿开𢌭å¼ð¢Œ®ð¢Œ¯å¼‚𢌰-𢌲𫸖ð°‡ð°ˆå¼ƒ-弅𢌳𢌵-𢌺𪪳ð°‰å¼†ð¢Œ»ð¢Œ½-ð¢ðªª´ð«¸—-𫸙ð±”弇弈𢌴𢌼ð¢‚-ð¢Œð­š–弉ð¢-ð¢“𪪵𫸚𫸛𭚗𭚘ð°Šð°‹ð¢”-ð¢™ð«¸œð«¸ð¢š-ð¢¡ðªª¶ð«¸žð¢¢-ð¢¥ðªª·ð«¸Ÿð­š™ã¢¡ð¢¦-ð¢«ð­ššå¼Šã¢¢ð¢¬ð°Œð±•ã¢£ð¢®-ð¢±ð«¸ ð«¸¡ð­š›-ð­šð±–ð¢²-ð¢´ðªª¸ð«¸¢ð±—𫸣ð¢µð±˜ð«¸¤ð¢¶ðªª¹ð­šžð¢·-ð¢¹]
[radical 56=⼷弋:弋ð¢ºð«  å¼Œð¢»ð¢¼å¼ð­šŸ-𭚡弎-å¼ð¢½ð¢¾ã¢¤ð¢¿-𢎅ð°ã¢¥ð¢Ž†-𢎌ð°Ž-ð°ð¢Žð­š¢å¼‘𢎎弒㢦ð¢Žð¢Žð£¦ð­š£ð­š¤ð°‘𢎑𢎒ð°’𢎓-𢎖]
-[radical 57=⼸弓:弓𢎗𢎘弔-弖㢧𢎙-𢎡𭚥弗弘𢎢-𢎪弙-弜㢨-㢫𢎫-𢎶𪪺𫸥-𫸧𭚦å¼-张㢬㢭𢎷-ð¢…𫸨-𫸪𭚧𭚨ð±™-ð±›å¼¡-弪㢮-㢱ð¢†-ð¢“𪪻𫸫-𫸭𭚩-ð­š«ð°“ð°”ð±œå¼«-弯㢲-㢷𠄴𠔘ð¢”-ð¢£ðªª¼ðªª½ð«¸®-𫸲𭚬-ð­š°ð°•ð°–å¼°-弳㢸㢹ð¢¤-ð¢­ðªª¾ð«¸³-𫸶𭚱-ð­šµð°—ð°˜ð±å¼´-弹㢺-㢼ð¢®-ð¢¿ðªª¿ð«¸·ð«¸¸ð­š¶-ð­š¹ð°™-ð°›ð±žå¼º-弾㢽-㢿ð¢€-ð¢‰ðª«€ðª«ð«¸¹ð«¸ºð­šº-ð­›ð°œ-ð°žå¼¿-彂㣀-㣂ð¢Š-ð¢‘𭛂𭛃彃-彅㣃ð¢’-ð¢ðª«‚𫸻𭛄ð°Ÿå½†-彉㣄㣅ð¢ž-ð¢¤ð«¸¼ð«¸½ð­›…-𭛇ð° å½Šå½‹ð¢¥-ð¢ªð«¸¾ð«¸¿ð­›ˆð­›‰å½Œð¢¬-ð¢±ðª«ƒð«¹€ð­›Šð­›‹å½ð¢²-ð¢·ð«¹ð­›Œð¢¸-ð¢¾ð¤¯½ð¢¿-𢑅𫹂ð°¡ã£†ð¢‘†-𢑉𪫄𫹃ð°¢å½Žð¢‘Šå½ð¢‘‹ð¢‘Œðª«…ð¢‘𢑎]
+[radical 57=⼸弓:弓𢎗𢎘弔-弖㢧𢎙-𢎡𭚥弗弘𢎢-𢎪弙-弜㢨-㢫𢎫-𢎶𪪺𫸥-𫸧𭚦å¼-张㢬㢭𢎷-ð¢…𫸨-𫸪𭚧𭚨𮱴ð±™-ð±›å¼¡-弪㢮-㢱ð¢†-ð¢“𪪻𫸫-𫸭𭚩-ð­š«ð°“ð°”ð±œå¼«-弯㢲-㢷𠄴𠔘ð¢”-ð¢£ðªª¼ðªª½ð«¸®-𫸲𭚬-ð­š°ð®±µ-ð®±·ð°•ð°–å¼°-弳㢸㢹ð¢¤-ð¢­ðªª¾ð«¸³-𫸶𭚱-𭚵𮱸ð°—ð°˜ð±å¼´-弹㢺-㢼ð¢®-ð¢¿ðªª¿ð«¸·ð«¸¸ð­š¶-ð­š¹ð°™-ð°›ð±žå¼º-弾㢽-㢿ð¢€-ð¢‰ðª«€ðª«ð«¸¹ð«¸ºð­šº-ð­›ð°œ-ð°žå¼¿-彂㣀-㣂ð¢Š-ð¢‘𭛂𭛃彃-彅㣃ð¢’-ð¢ðª«‚𫸻𭛄ð°Ÿå½†-彉㣄㣅ð¢ž-ð¢¤ð«¸¼ð«¸½ð­›…-𭛇ð° å½Šå½‹ð¢¥-ð¢ªð«¸¾ð«¸¿ð­›ˆð­›‰å½Œð¢¬-ð¢±ðª«ƒð«¹€ð­›Šð­›‹å½ð¢²-ð¢·ð«¹ð­›Œð¢¸-ð¢¾ð¤¯½ð¢¿-𢑅𫹂ð°¡ã£†ð¢‘†-𢑉𪫄𫹃ð°¢å½Žð¢‘Šå½ð¢‘‹ð¢‘Œðª«…ð¢‘𢑎]
[radical 58=â¼¹å½:å½å½‘𫜹归当ð¢‘-𢑒𪫆𢑓彔录㣇𢑔𢑕𫹄ð­›ð­›Žð±Ÿå½–𢑗-𢑚ð­›ð± ð¢‘›-ð¢‘彗𢑞-𢑡ð­›ð°£å½˜ð¢‘¢-𢑤𫹅𫹆𭛑𭛒彙彚𢑥-𢑧ð°¤ð°¥ð±¡ð¢‘¨-𢑮𣼙𫹇𫹈彛彜㣈𢑯𢑱𢑲å½å½žð¢‘³-𢑶𪫇彟𢑷-𢑾彠𢑿]
-[radical 59=⼺彡:彡𢒀-𢒂㣉𢒃-𢒆形-彤㣊𢒇𢒈ð°¦ã£‹-ã£ð¢’‰-ð¢’ð­›“ð°§å½¥å½¦ð¢’Žð«¸ð°¨å½§å½¨ð¢’-𢒓𣥲𪫈𫹉ð°©ð°ªå½©å½«å½¬ã£Žð¢’”-ð¢’ð±¢ð±£å½­ã£ã£ð¢’ž-𢒣ð°«å½®ð¢’¤-𢒨𭛔𭛕ð±¤å½¯å½°ã£‘𢒩𢒪𭛖-𭛘ð±¥ð±¦å½±ã£’𢒫-𢒯𪫉𭛙-𭛛㣓𢒰-𢒴𪫊𢒵𫹊ð±§ð¢’·ð¢’¶ð±¨ð±©å½²ð¢’¸-𢒻]
-[radical 60=⼻彳:彳𢒼𢒽ð±ªã£”𢒾𢒿𫹋彴彵㣕𢓀-𢓃𫹌𭛜ð­›ð°¬ð±«ð±¬å½¶-彻鿈鿉㣖㣗𢓄-𢓑𪫋ð«¹-ð«¹ð­›žð±­ð±®å½¼-径㣘㣙𢓒-𢓛𪫌𫹑𭛟-𭛦ð°­å¾…-å¾å¾”㣚-㣡𢓜-𢓩𫹒𫹓𭛧-ð­›©ð±¯å¾Ž-従徕㣢㣣𢓪-𢔀ðª«ðª«Žð«¹”𫹕𭛪-ð­›®ð°®ð°¯å¾–-徙徛-徤㣤-㣩ð¢”-𢔞ðª«ðª«ð«¹–-𫹘𭛯-𭛶ð°°-ð°³ð±°-ð±³å¾šå¾¥-徫㣪-㣮𢔟-𢔫𢔭-𢔱𪫑-𪫓𫹙-ð«¹ð­›·-ð­›¼ð°´ð°µð±´-ð±¶å¾¬-徰㣯𢔲-𢕎𢕧𪫔𪫕𫹞-𫹠𭛽ð°¶ð±·å¾±å¾³å¾´ã£°-㣲ð¢•-𢕦𢕨𢕩𪫖-𪫘𫹡𫹢𭛾-𭜀ð°·å¾²å¾µ-徺㣳㣴𢕪-𢕸𫹣-𫹥ð­œ-𭜅徻徼㣵㣶𢕹-𢖄𢖆𢖇𪫙𭜆-𭜈ð°¸ð±¸ð±¹å¾½å¾¾ã£·ð¢–ˆ-𢖊𢖌-𢖎𪫚𫹦ð¢–-𢖗𪫛𪫜𫹧𫹨𭜉ð°¹å¾¿ã£¸ð¢–˜-𢖚𢖜𭜊忀å¿ã£¹ð¢–-𢖠𢖢忂𢖣𢖤𫹩ð±ºð±»ð¢–¥ð¢–¦ð«¹ªð¢–§ð¢–¨]
-[radical 61=⼼心:心忄𢖩必忆㣺𢖪ð°ºå¿‡-忊㣻𢖫-𢖱ðª«ð«¹«-𫹭ð°»ð°¼ð±¼ð±½å¿‹-応㣼-㤀𢖲-𢗈𪫞𫹮-𫹱𭜋-𭜎ð°½-ð°‘€ð±¾-ð±žå¿-怆ã¤-㤋𢗉-𢗾𪫟-𪫥ð«¹ð«¹²-𫹹ð­œ-𭜘ð°‘-𰑉𱞂-𱞇怇-怿㤌-㤙𢗿-𢘳𪫦-𪫬𫹺-𫹿𭜙-𭜧𰑊-𰑓𱞈-ð±žæ€-æ½ã¤š-㤭㤺𢘴-𢙰𪫭-𪫴𫺀-𫺋𭜨-𭜵𰑔-𰑛𱞑-𱞖æ¾-悯㤮-㤹㤻-㤽𢙱-𢚿𪫵-𪫾𫺌-𫺕𭜶-ð­‹ð°‘œ-𰑦𱞗-𱞜悰-惯㤾-㥙𢛀-𢜧𪫿-𪬆𫺖-𫺟ð­Œ-ð­ ð°‘§-𰑯ð±ž-𱞩惰-愦慨㥚-㥫𢜨-𢞌𪬇-𪬒𫺠-𫺭ð­¡-ð­¶ð°‘°-𰑻𱞪-𱞻愧-慑㥬-㥻ð¢ž-𢟟𪬓-𪬞𫺮-𫺷ð­·-𭞌𰑼-𰒄𱞼-𱟀慒-慧慩-慬慮-憈㥼-㦈𠕫𢟠-𢠰𦑑𪬟-𪬧𫺸-ð«»‚ð­ž-𭞥𰒅-ð°’Šð±Ÿ-𱟅慭憉-憳㦉-㦖𢠱-𢢑𪬨-𪬭𫻃-𫻉𭞦-𭞹𰒋-𰒓𱟆-𱟑憴-憺憼-懔㦗-㦙𢢒-ð¢£ð¦¡—𪬮-𪬶𫻊-ð«»ð­žº-ð­Ÿ„ð°’”-𰒖𱟒-𱟕憻懕-懨㦚-㦠𢣎-𢣺𪬷-𪬹ð«»-ð«»’ð­Ÿ…-𭟌𰒗-𰒚𱟖𱟗懩-懴㦡㦢𢣻-𢤥𦻇𪬺-𪬾𫻓-ð«»™ð­Ÿ-ð­Ÿ—ð°’›-𰒞𱟘懵-懸㦣-㦧𢤦-𢥊𪬿𪭀𫻚-𫻜𭟘-𭟞𰒟𰒠𱟙懹-懻㦨-㦪𢥋-𢥖ðª­ðª­‚ð«»-ð«»¡ð­ŸŸ-𭟢𰒡-𰒣懼-懿𢥗-𢥤𪭃𪭄𫻢-𫻤𭟣-𭟦戀-戂㦫㦬𢥥-𢥮𪭅𪭆𭟧戃戄𢥯-𢥺𪭇戅戆𢥻-𢦂𭟨-𭟪𪭈𭟫𭟬𢦃𢦄𭟭𱟚戇㦭𢦅-𢦇𫻥𢦈-𢦋𱟛]
-[radical 62=⼽戈:戈-戋𢦌ð¢¦ðª­‰ð­Ÿ®æˆŒ-æˆð¢¦Ž-𢦑𪭊𫻦𫻧我-戓㦮㦯𢦒-𢦙𫻨𭟯戔-戗㦰-㦲𢦚-𢦥𫻩𫻪𭟰-𭟲𰒤𰒥战㦳𢦦-𢦶𪭋𪭌𫻫𫻬𭟳𰒦-𰒨戙㦴-㦶𢦷-𢦾ðª­ðª­Žð«»­-𫻱𰒩戚-æˆã¦·ð¢¦¿-𢧇ðª­ðª­ð«»²-𫻶𭟴𭟵𰒪戞戟戦㦸𢧈-𢧓𪭑𫻷-𫻾𭟶𰒫𱟜戠-戥㦹𢧔-𢧡𪭒𫻿𫼀𭟷𰒬-𰒮戧-戬㦺𠎶𢧢-𢧧𢧩-𢧱𪭓ð«¼ð­Ÿ¸ð­Ÿ¹ð°’¯ð±Ÿð±Ÿžæˆ­-戯戱㦻㦼𢧨𢧲-𢨆𫼂𫼃𭟺-𭟼𰒰𰒱𱟟𱟠戰𢨇-ð¢¨ð¢¨‘𢨒𪭔-𪭖𫼄-𫼈𭟽𰒲𰒳戲戴㦽𢨓-𢨗𭟾戳𢨘-𢨠𱟡𢨡-𢨣戵𪭗]
+[radical 59=⼺彡:彡𢒀-𢒂㣉𢒃-𢒆形-彤㣊𢒇𢒈ð°¦ã£‹-ã£ð¢’‰-ð¢’ð­›“ð®±¹ð°§å½¥å½¦ð¢’Žð«¸ð°¨å½§å½¨ð¢’-𢒓𣥲𪫈𫹉ð°©ð°ªå½©å½«å½¬ã£Žð¢’”-ð¢’ð±¢ð±£å½­ã£ã£ð¢’ž-𢒣ð°«å½®ð¢’¤-𢒨𭛔𭛕ð±¤å½¯å½°ã£‘𢒩𢒪𭛖-𭛘ð±¥ð±¦å½±ã£’𢒫-𢒯𪫉𭛙-𭛛㣓𢒰-𢒴𪫊𢒵𫹊ð±§ð¢’·ð¢’¶ð±¨ð±©å½²ð¢’¸-𢒻]
+[radical 60=⼻彳:彳𢒼𢒽ð±ªã£”𢒾𢒿𫹋彴彵㣕𢓀-𢓃𫹌𭛜ð­›ð°¬ð±«ð±¬å½¶-彻鿈鿉㣖㣗𢓄-𢓑𪫋ð«¹-ð«¹ð­›žð±­ð±®å½¼-径㣘㣙𢓒-𢓛𪫌𫹑𭛟-𭛦𮱺𮱻ð°­å¾…-å¾å¾”㣚-㣡𢓜-𢓩𫹒𫹓𭛧-ð­›©ð®±¼ð±¯å¾Ž-従徕㣢㣣𢓪-𢔀ðª«ðª«Žð«¹”𫹕𭛪-ð­›®ð°®ð°¯å¾–-徙徛-徣㣤-㣩ð¢”-𢔞ðª«ðª«ð«¹–-𫹘𭛯-𭛶ð°°-ð°³ð±°-ð±³å¾šå¾¤-徫㣪-㣮𢔟-𢔫𢔭-𢔱𪫑-𪫓𫹙-ð«¹ð­›·-𭛼𮱽ð°´ð°µð±´-ð±¶å¾¬-徰㣯𢔲-𢕎𢕧𪫔𪫕𫹞-𫹠𭛽ð°¶ð±·å¾±å¾³å¾´ã£°-㣲ð¢•-𢕦𢕨𢕩𪫖-𪫘𫹡𫹢𭛾-𭜀ð°·å¾²å¾µ-徺㣳㣴𢕪-𢕸𫹣-𫹥ð­œ-𭜅𮱾徻徼㣵㣶𢕹-𢖄𢖆𢖇𪫙𭜆-𭜈ð°¸ð±¸ð±¹å¾½å¾¾ã£·ð¢–ˆ-𢖊𢖌-𢖎𪫚𫹦ð¢–-𢖗𪫛𪫜𫹧𫹨𭜉ð°¹å¾¿ã£¸ð¢–˜-𢖚𢖜𭜊忀å¿ã£¹ð¢–-𢖠𢖢忂𢖣𢖤𫹩ð±ºð±»ð¢–¥ð¢–¦ð«¹ªð¢–§ð¢–¨]
+[radical 61=⼼心:心忄𢖩必忆㣺𢖪ð°ºå¿‡-忊㣻𢖫-𢖱ðª«ð«¹«-𫹭ð°»ð°¼ð±¼ð±½å¿‹-応㣼-㤀𢖲-𢗈𪫞𫹮-𫹱𭜋-𭜎𮱿ð°½-ð°‘€ð±¾-ð±žå¿-怆ã¤-㤋𢗉-𢗾𪫟-𪫥ð«¹ð«¹²-𫹹ð­œ-𭜘𮲀-𮲂ð°‘-𰑉𱞂-𱞇怇-怿㤌-㤙𢗿-𢘳𪫦-𪫬𫹺-𫹿𭜙-𭜧𮲃𰑊-𰑓𱞈-ð±žæ€-æ½ã¤š-㤭㤺𢘴-𢙰𪫭-𪫴𫺀-𫺋𭜨-𭜵𮲄𮲅𰑔-𰑛𱞑-𱞖æ¾-悯㤮-㤹㤻-㤽𢙱-𢚿𪫵-𪫾𫺌-𫺕𭜶-ð­‹ð®²†ð°‘œ-𰑦𱞗-𱞜悰-惯㤾-㥙𢛀-𢜧𪫿-𪬆𫺖-𫺟ð­Œ-ð­ ð®²‡ð°‘§-𰑯ð±ž-𱞩惰-愦慨㥚-㥫𢜨-𢞌𪬇-𪬒𫺠-𫺭ð­¡-ð­¶ð®²ˆð®²‰ð°‘°-𰑻𱞪-𱞻愧-慑㥬-㥻ð¢ž-𢟟𪬓-𪬞𫺮-𫺷ð­·-𭞌𮲊𮲋𰑼-𰒄𱞼-𱟀慒-慧慩-憈㥼-㦈𠕫𢟠-𢠰𦑑𪬟-𪬧𫺸-ð«»‚ð­ž-𭞥𰒅-ð°’Šð±Ÿ-𱟅憉-憳㦉-㦖𢠱-𢢑𪬨-𪬭𫻃-𫻉𭞦-𭞹𰒋-𰒓𱟆-𱟑憴-憺憼-懔㦗-㦙𢢒-ð¢£ð¦¡—𪬮-𪬶𫻊-ð«»ð­žº-ð­Ÿ„ð°’”-𰒖𱟒-𱟕憻懕-懨㦚-㦠𢣎-𢣺𦻇𪬷-𪬹ð«»-ð«»’ð­Ÿ…-𭟌𰒗-𰒚𱟖𱟗懩-懴㦡㦢𢣻-𢤥𪬺-𪬾𫻓-ð«»™ð­Ÿ-ð­Ÿ—ð°’›-𰒞𱟘懵-懸㦣-㦧𢤦-𢥊𪬿𪭀𫻚-𫻜𭟘-𭟞𰒟𰒠𱟙懹-懻㦨-㦪𢥋-𢥖ðª­ðª­‚ð«»-ð«»¡ð­ŸŸ-𭟢𰒡-𰒣懼-懿𢥗-𢥤𪭃𪭄𫻢-𫻤𭟣-𭟦戀-戂㦫㦬𢥥-𢥮𪭅𪭆𭟧戃戄𢥯-𢥺𪭇戅戆𢥻-𢦂𭟨-𭟪𪭈𭟫𭟬𢦃𢦄𭟭𱟚戇㦭𢦅-𢦇𫻥𢦈-𢦋𱟛]
+[radical 62=⼽戈:戈-戋𢦌ð¢¦ðª­‰ð­Ÿ®æˆŒ-æˆð¢¦Ž-𢦑𪭊𫻦𫻧我-戓㦮㦯𢦒-𢦙𫻨𭟯戔-戗㦰-㦲𢦚-𢦥𫻩𫻪𭟰-𭟲𰒤𰒥战㦳𢦦-𢦶𪭋𪭌𫻫𫻬𭟳𰒦-𰒨戙㦴-㦶𢦷-𢦾ðª­ðª­Žð«»­-𫻱𰒩戚-æˆã¦·ð¢¦¿-𢧇ðª­ðª­ð«»²-𫻶𭟴𭟵𰒪戞戟戦㦸𢧈-𢧓𪭑𫻷-𫻾𭟶𰒫𱟜戠-戥㦹𢧔-𢧡𪭒𫻿𫼀𭟷𮲌ð®²ð°’¬-𰒮戧-戬㦺𠎶𢧢-𢧧𢧩-𢧱𪭓ð«¼ð­Ÿ¸ð­Ÿ¹ð®²Žð°’¯ð±Ÿð±Ÿžæˆ­-戯戱㦻㦼𢧨𢧲-𢨆𫼂𫼃𭟺-𭟼𰒰𰒱𱟟𱟠戰𢨇-ð¢¨ð¢¨‘𢨒𪭔-𪭖𫼄-𫼈𭟽𰒲𰒳戲戴㦽𢨓-𢨗𭟾戳𢨘-𢨠𱟡𢨡-𢨣戵𪭗]
[radical 63=⼾戶:戶-戹𢨤𢨥𭟿𢨦-𢨩戺-戼㦾𢨪-𢨮𭠀戽-所㦿㧀𢨯-𢨵𫼉ð­ ð­ ‚æ‰-扃ã§ã§‚𢨶-𢩄𪭘𫼊𭠃-𭠆扄-扇𢩅-𢩌𫼋𫼌扈ð¢©-ð¢©ðª­™ð«¼ð«¼Žæ‰‰æ‰Šð¢©‘-𢩕ð«¼ð«¼ð­ ‡-𭠉𰒴𱟢𢩖𢩗𤟵𫼑𢩘-𢩛𱟣𢩜-𢩞𪭚𭠊𰒵𢩟𭠋𰒶𱟤𱟥𢩠𢩡ð¨³ð±Ÿ¦ð±Ÿ§ð¢©¢ðª­›ð¢©£ð¢©¤ð±Ÿ¨ð­ Œð«¼’]
-[radical 64=⼿手:手-æ‰é¾µð­ æ‰Žð¢©¥-𢩧𫼓æ‰-扖㧃-㧅𢩨-𢩬𫼔𭠎𰒷-ð°’»æ‰æ‰—-扞扠-扬㧆-㧈𢩭-𢪂𪭜𫼕-𫼗ð­ ð­ ð°’¼ð°’½ð±Ÿ©-𱟬扟扭-扷批-报㧉-㧑𢪃-𢪳ðª­-𪭣𫼘-𫼛𭠑-ð­ –ð°’¾-𰓋扸抦-择㧒-㧠𢪴-𢫣𪭤-𪭪ð«ºð«¼œ-𫼡𭠗-ð­ ¡ð°“Œ-𰓖𱟭-𱟵拪-挧㧡-㧱𢫤-𢬮𪭫-𪭳ð«»ð«¼¢-𫼰𭠢-𭠲𰓗-𰓪𱟶-𱟸挨-æ¤ã§²-㧸𢬯-𢮀𪭴-𪮀𫼱-𫽀𭠳-𭡈𰓫-𰓹𱟹-ð± †æ¥-掱掳-掽㧹-㨈ð¢®-𢯨ðª®-𪮋ð«½-𫽖𭡉-ð­¡ð°“º-ð°”„ð± ‡-𱠔掲掾-æ„æ†-æ…摒㨉-㨕㨗㨘𢯩-𢰾𢱀-𢱞𪮌-𪮖ð«¼ð«½—-𫽨𭡞-𭡱𰔅-ð°”‘ð± •-ð± Ÿæ†-æ°æ²-摊㨖㨙-㨬𢱟-𢲲𪮗-𪮢ð«½ð«½©-𫽶𭡲-𭢆𰔒-𰔞𱠠-ð± ¨æ…æ‘‹-æ‘‘æ‘“-æ‘•æ‘—-撄撇㨭-㩂𢲳-𢴔𢴖-𢴟𪮣-𪮪ð«¾ð«½·-ð«¾ð­¢‡-𭢖𰔟-𰔥𱠩-ð± °æ±æ‘–撅撆撈-撺擆㩃-㩑𢴕𢴠-𢵾𢷅𪮫-𪮴𫾂-𫾉𭢗-𭢢𰔦-ð°”©ð± ±-𱠸撻-擅擇-æ“žã©’-㩙𢵿-𢷄𢷆-𢷊𪮵-𪮷𫾊-ð«¾ð­¢£-𭢱𰔪-𰔲𱠹-𱠽擟-擤擦-擱㩚-㩟𢷋-𢷵𪮸-𪮺ð«¾-𫾒𭢲-𭢽𰔳-ð°”·ð± ¾-𱡃擥擲-攆㩠-㩫𢷶-𢸢𪮻-𪯀ð«¿ð«¾“-𫾘𭢾-𭣃𰔸𰔹𱡄-𱡋攇-æ”攒㩬㩭𢸣-𢹌ðª¯ð«¾™ð«¾šð­£„-𭣋𰔺𱡌ð±¡æ”‘攓-攚㩮-ã©°ð¢¹-𢹡𢹣-𢹫𪯂𫾛𭣌-ð­£ð°”»ð°”¼ð±¡Žæ”›-æ”㩱-㩴𢹢𢹬-ð¢ºð«¾œð«¾žð­£‘𭣒𰔽𰔾ð±¡-𱡑攞-攤攦攧鿜𢺂-𢺕𪯃ð«¾ð«¾Ÿð«¾ ð°”¿ð±¡’𱡓攥攨-攫㩵-㩷𢺖-ð¢ºðª¯„𫾡𱡔攬攭𢺞-𢺫𫾢攮㩸㩹𢺬-𢺯𱡕𱡖𢺰-𢺳𭣓𢺴]
+[radical 64=⼿手:手-æ‰é¾µð­ æ‰Žð¢©¥-𢩧𫼓æ‰-扖㧃-㧅𢩨-𢩬𫼔𭠎𰒷-ð°’»æ‰æ‰—-扞扠-扬㧆-㧈𢩭-𢪂𪭜𫼕-𫼗ð­ ð­ ð°’¼ð°’½ð±Ÿ©-𱟬扟扭-扷批-报㧉-㧑𢪃-𢪳ðª­-𪭢𫼘-𫼛𭠑-ð­ –ð®²ð°’¾-𰓋扸抦-择㧒-㧠𢪴-𢫣𪭣-𪭪ð«ºð«¼œ-𫼡𭠗-ð­ ¡ð°“Œ-𰓖𱟭-𱟵拪-挧㧡-㧱𢫤-𢬮𪭫-𪭳ð«»ð«¼¢-𫼰𭠢-𭠲𰓗-𰓪𱟶-𱟸挨-æ¤ã§²-㧸𢬯-𢮀𪭴-𪮀𫼱-𫽀𭠳-𭡈ð®²ð°“«-𰓹𱟹-ð± †æ¥-掱掳-掽㧹-㨈ð¢®-𢯨ðª®-𪮋ð«½-𫽖𭡉-ð­¡ð°“º-ð°”„ð± ‡-𱠔掲掾-æ„æ†-æ…æœã¨‰-㨕㨗㨘𢯩-𢰾𢱀-𢱞𪮌-𪮖ð«¼ð«½—-𫽨𭡞-𭡱𰔅-ð°”‘ð± •-ð± Ÿæ†-æ›æ-æ°æ²-摊㨖㨙-㨬𢱟-𢲲𪮗-𪮢ð«½ð«½©-𫽶𭡲-𭢆𮲑𰔒-𰔞𱠠-ð± ¨æ…æ‘‹-æ‘•æ‘—-撄撇㨭-㩂𢲳-𢴔𢴖-𢴟𪮣-𪮪ð«¾ð«½·-ð«¾ð­¢‡-𭢖𮲒𰔟-𰔥𱠩-ð± °æ±æ‘–撅撆撈-撺擆㩃-㩑𢴕𢴠-𢵾𢷅𪮫-𪮴𫾂-𫾉𭢗-𭢢𰔦-ð°”©ð± ±-𱠸撻-擅擇-æ“žã©’-㩙𢵿-𢷄𢷆-𢷊𪮵-𪮷𫾊-ð«¾ð­¢£-𭢱𰔪-𰔲𱠹-𱠽擟-擤擦-擱㩚-㩟𢷋-𢷵𪮸-𪮺ð«¾-𫾒𭢲-𭢽𰔳-ð°”·ð± ¾-𱡃擥擲-攆㩠-㩫𢷶-𢸢𪮻-𪯀ð«¿ð«¾“-𫾘𭢾-𭣃𰔸𰔹𱡄-𱡋攇-æ”攒㩬㩭𢸣-𢹌ðª¯ð«¾™ð«¾šð­£„-𭣋𰔺𱡌ð±¡æ”‘攓-攚㩮-ã©°ð¢¹-𢹡𢹣-𢹫𪯂𫾛𭣌-ð­£ð°”»ð°”¼ð±¡Žæ”›-æ”㩱-㩴𢹢𢹬-ð¢ºð«¾œð«¾žð­£‘𭣒𰔽𰔾ð±¡-𱡑攞-攤攦攧鿜𢺂-𢺕𪯃ð«¾ð«¾Ÿð«¾ ð°”¿ð±¡’𱡓攥攨-攫㩵-㩷𢺖-ð¢ºðª¯„𫾡𱡔攬攭𢺞-𢺫𫾢攮㩸㩹𢺬-𢺯𱡕𱡖𢺰-𢺳𭣓𢺴]
[radical 65=⽀支:支𭣔攰𢺵𭣕𢺶𭣖𰕀㩺𢺷-𢺽𪯆攱𢺾-𢻀𭣗𭣘㩻㩼ð¢»-𢻇𢻉ð°•ð±¡—㩽𢻊-ð¢»ðª¯…攲㩾𢻎-𢻙𭣙𭣚𰕂𢻚-𢻜𫾣ð¢»-𢻟𪯇𭣛攳𢻠-𢻤𫾤𭣜ð­£ð¢»¥-𢻩𭣞𫾥𭣟𢻪𭣠]
-[radical 66=â½æ”´:æ”´-攷𫾦𭣡𰕃攸-攼㩿㪀𢻫-𢻲𫾧𭣢𭣣攽-政ãªãª‚𢻳-𢼈𪯈𫾨𭣤𰕄-𰕆敀-故㪃-㪆𢼉-𢼚𪯉𪯊𫾩𭣥-𭣩𰕇敆-敌㪇-㪉𢼛-𢼸ð£‹ðª¯‹ðª¯Œð«¾ª-𫾰𭣪-𭣱𰕈啟æ•-敛㪊-㪎𢼹-𢽙𢽜𢽷ðª¯ðªµŠð«¾±-𫾸𭣲-𭣵𰕉𰕊𱡘敜-敪敭ãª-㪚𢽚𢽛ð¢½-𢽶𢽸-𢽾𢾣𪯎ðª¯ð«¾¹-𫿀𭣶-𭣻𰕋-𰕎𱡙-ð±¡æ•«æ•¬æ•®-数㪛-㪟𢽿-𢾢𢾤ðª¯ð«¿-𫿇𭣼-𭤂ð°•ð°•ð±¡žð±¡Ÿæ•±-敳㪠-㪣𢾦-𢿅𪯑𪯒𫿈-𫿌𭤃-𭤇𰕑整-敻㪤-㪦𢿇-ð¢¿ð£›ðª¯“-𪯖ð«¿-ð«¿ð­¤ˆ-𭤋𰕒𰕓𱡠敼-敿㪧-㪪𢿞-𢿽𪯗-𪯙𫿑-𫿗𰕔𰕕斀-斂𢿾-𣀃𣀅-ð£€ðª¯šð«¿˜-𫿚𭤌ð­¤ð°•–ð°•—æ–ƒè´ãª«ãª¬ð£€„ð£€-𣀚𪯛𪯜𫿛-ð«¿ð­¤Žð­¤æ–„𣀛-𣀢𩠮𫿞-𫿢𰕘斅斆㪭𣀣-𣀭𩠰𫿣-𫿦𰕙𱡡㪮𣀮-𣀲ðª¯ðª¯žð«¿§ð«¿¨ð­¤ð­¤‘𣀳𣀴𫿩𭤒𣀵-𣀺𪯟𫿪-𫿬𣀻𣀼𭤓𣀽-ð£€]
-[radical 67=⽂文:æ–‡ð£ð«¿­æ–ˆãª¯ð£‚𪯠𭤔𱡢斉ð£ƒ-ð£…𪯡𪯢ð£†-ð£‰ðª¯£ð«¿®ð«¿¯ð­¤•-𭤙𰕚斊斋㪰ð£Šð£Œð£ðª¯¤ð«¿°æ–Œ-æ–ð£Ž-ð£“ð£šð±¡£æ–æ–‘ð£”-ð£–𪯥-𪯧𫿱𱡤-𱡦斒㪱ð£—-ð£™ð©–°ðª¯¨-𪯪𰕛ð£œ-ð£¡æ–“ð£¢-ð£¤ð­¤šð­¤›ð£¥ð£¦ð°•œæ–”ð£§ð£¨ð«¿²æ–•ð£©ð£ªæ––ð£«ð±¡§]
+[radical 66=â½æ”´:æ”´-攷𫾦𭣡𰕃攸-攼㩿㪀𢻫-𢻲𫾧𭣢𭣣攽-政ãªãª‚𢻳-𢼈𪯈𫾨𭣤𰕄-𰕆敀-故㪃-㪆𢼉-𢼚𪯉𪯊𫾩𭣥-𭣩𮲓𰕇敆-敌㪇-㪉𢼛-𢼸ð£‹ðª¯‹ðª¯Œð«¾ª-𫾰𭣪-𭣱𮲔𰕈啟æ•-敛㪊-㪎𢼹-𢽙𢽜𢽷ðª¯ðªµŠð«¾±-𫾸𭣲-𭣵𮲕𰕉𰕊𱡘敜-敪敭ãª-㪚𢽚𢽛ð¢½-𢽶𢽸-𢽾𢾣𪯎ðª¯ð«¾¹-𫿀𭣶-𭣻𰕋-𰕎𱡙-ð±¡æ•«æ•¬æ•®-数㪛-㪟𢽿-𢾢𢾤ðª¯ð«¿-𫿇𭣼-𭤂ð°•ð°•ð±¡žð±¡Ÿæ•±-敳㪠-㪣𢾦-𢿅𪯑𪯒𫿈-𫿌𭤃-𭤇𰕑整-敻㪤-㪦𢿇-ð¢¿ð£›ðª¯“-𪯖ð«¿-ð«¿ð­¤ˆ-𭤋𰕒𰕓𱡠敼-敿㪧-㪪𢿞-𢿽𪯗-𪯙𫿑-𫿗𰕔𰕕斀-斂𢿾-𣀃𣀅-ð£€ðª¯šð«¿˜-𫿚𭤌ð­¤ð°•–ð°•—æ–ƒè´ãª«ãª¬ð£€„ð£€-𣀚𪯛𪯜𫿛-ð«¿ð­¤Žð­¤æ–„𣀛-𣀢𩠮𫿞-𫿢𰕘斅斆㪭𣀣-𣀭𩠰𫿣-𫿦𰕙𱡡㪮𣀮-𣀲ðª¯ðª¯žð«¿§ð«¿¨ð­¤ð­¤‘𣀳𣀴𫿩𭤒𣀵-𣀺𪯟𫿪-𫿬𣀻𣀼𭤓𣀽-ð£€]
+[radical 67=⽂文:æ–‡ð£ð«¿­æ–ˆãª¯ð£‚𪯠𭤔𱡢斉ð£ƒ-ð£…𪯡𪯢ð£†-ð£‰ðª¯£ð«¿®ð«¿¯ð­¤•-𭤙𮲖𰕚斊斋㪰ð£Šð£Œð£ðª¯¤ð«¿°æ–Œ-æ–ð£Ž-ð£“ð£šð±¡£æ–æ–‘ð£”-ð£–𪯥-𪯧𫿱𮲗𱡤-𱡦斒㪱ð£—-ð£™ð©–°ðª¯¨-𪯪𰕛ð£œ-ð£¡æ–“ð£¢-ð£¤ð­¤šð­¤›ð£¥ð£¦ð°•œæ–”ð£§ð£¨ð«¿²æ–•ð£©ð£ªæ––ð£«ð±¡§]
[radical 68=⽃斗:æ–—ð£¬ãª²ãª³æ–˜ð£­ãª´ð£®-ð£°ãªµð£±ð£²ðª¯«æ–™æ–šãª¶ð£³-ð£¶ðª¯¬ð«¿³æ–›æ–œãª·ð£·-ð£»ð«¿´æ–㪸ð£¼-𣂀𫿵斞斟ð£‚𣂃-𣂅斠斡𣂂𣂆-𣂈𪯭㪹𣂉-𣂋𪯮𫿶𭤜斢𫿷ð­¤ð±¡¨æ–£ãªºð£‚Œð£‚𪯯𫿸𣂎-ð£‚𪯰㪻𭤞]
[radical 69=⽄斤:斤𣂑斥𭤟𣂒𣂓斦-斩𣂔-𣂘𪯱𭤠ð°•ð°•žæ–ªæ–«ãª¼ãª½ð£‚™ð£‚šð­¤¡ð­¤¢ãª¾ãª¿ð£‚›-ð£‚斬断𣂞-𣂠𫿹𫿺𱡩𱡪斮斯㫀𣂡-𣂪𣂬𣂭𫿻𫿼𰕟𱡫新斱𣂮-𣂵𥇴𭤣𭤤𰕠𱡬斲ã«ð£‚¶-𣂺𭤥𰕡𱡭斳㫂𣂻-𣂿𰕢斴𣃀-𣃆𫿽𰕣𰕤𱡮斵斶𣃇-𣃋𭤦斷𣃌-ð£ƒð°•¥ð£ƒ‘-𣃓𫿾𱡯𣃔𣃕𫿿𱡰𣃖斸𰕦]
-[radical 70=â½…æ–¹:方𭤧㫃𣃗𭤨-𭤪𣃘𣃙斺-於㫄𣃚-𣃜𪯲𪯳𬀀𭤫𭤬𱡱施-旀㫆ð£ƒ-𣃥𪯴𭤭-𭤴𰕧æ—-旆旊㫅㫇-㫉𣃦-𣃲𪯵-𪯷ð¬€-𬀆𭤵-𭤹𰕨𱡲𱡳旇-旉旋-æ—ã«Š-㫌𣃳-𣃻𪯸𫞀𬀇𬀈𭤺𰕩-ð°•«æ—æ—‘ã«ð£ƒ¼-𣄇𪯹-𪯼𬀉𬀊𭤻-𭤾𰕬𰕭𱡴-𱡶旒-旕𣄈-ð£„𪯽ð«žð¬€‹-ð¬€ð­¤¿ð­¥€ð°•®æ—–旗𣄎-𣄓𪯾𬀎-ð¬€ð­¥ð°•¯ã«Žã«ð£„”-𣄖𪯿𪰀𬀑𬀒𭥂-𭥄旘旙𣄗-𣄜ðª°ðª°‚𬀓-𬀖𭥅𱡷旚ð£„𬀗𭥆𱡸旛𣄞-𣄣𬀘-𬀛𭥇𭥈旜-旞𣄤𪰃𪰄𬀜ð¬€ð­¥‰æ—Ÿð£„¥ðª°…𬀞-𬀠𣄦𬀡𣄧𣄨𬀢𣄩𬀣𣄪-𣄬𬀤]
+[radical 70=â½…æ–¹:方𭤧㫃𣃗𭤨-𭤪𣃘𣃙斺-於㫄𣃚-𣃜𪯲𪯳𬀀𭤫𭤬𱡱施-旀㫆ð£ƒ-𣃥𪯴𭤭-𭤴𰕧æ—-旆旊㫅㫇-㫉𣃦-𣃲𪯵-𪯷ð¬€-𬀆𭤵-𭤹𰕨𱡲𱡳旇-旉旋-æ—ã«Š-㫌𣃳-𣃻𪯸𫞀𬀇𬀈𭤺𰕩-ð°•«æ—æ—‘ã«ð£ƒ¼-𣄇𪯹-𪯼𬀉𬀊𭤻-𭤾𮲘𮲙𰕬𰕭𱡴-𱡶旒-旕𣄈-ð£„𪯽ð«žð¬€‹-ð¬€ð­¤¿ð­¥€ð°•®æ—–旗𣄎-𣄓𪯾𬀎-ð¬€ð­¥ð°•¯ã«Žã«ð£„”-𣄖𪯿𪰀𬀑𬀒𭥂-𭥄旘旙𣄗-𣄜ðª°ðª°‚𬀓-𬀖𭥅𱡷旚ð£„𬀗𭥆𱡸旛𣄞-𣄣𬀘-𬀛𭥇𭥈旜-旞𣄤𪰃𪰄𬀜ð¬€ð­¥‰æ—Ÿð£„¥ðª°…𬀞-𬀠𣄦𬀡𣄧𣄨𬀢𣄩𬀣𣄪-𣄬𬀤]
[radical 71=⽆无:无旡𣄭𰕰𣄮𣄯既𣄰-𣄳旣𬀥𣄴𣄵旤𣄶-𣄺𭥊]
-[radical 72=⽇日:æ—¥-旧𣄻-𣄽𭥋旨-æ—¯ã«ã«‘𣄾-𣅃𣅅𬀦𭥌-𭥎𰕱𰕲𱡹旰-旸㫒-㫗𣅄𣅆-𣅙𪰆𪰇𬀧𬀨ð­¥-𭥑𰕳旹-昙㫘-㫚𣅚-𣅶𪰈-𪰎𬀩-𬀫𭥒-ð­¥ ð°•´-𰕷𱡺-𱡼昚-昿㫛-㫤𣅷-𣆈𣆊-𣆑ðª°-𪰘𫞂𫞃𬀬-𬀮𭥡-𭥭𰕸-𰕾𱡽𱡾晀-æ™–ã«¥-㫮𣆒-𣆱𣈰𪰙-𪰤𫞄𬀯-𬀴𭥮-𭦃𰕿-𰖆𱡿-𱢂勗晗-晩曽㫯-㫴𣆲-𣇡𪰥-𪰨𬀵-𬀺𭦄-𭦘𰖇-𰖌𱢃-𱢈晪-暃暑㫵-㬀𣇢-𣈣𪰩-𪰮𬀻-ð¬ð­¦™-𭦧ð°–-𰖕𱢉-𱢎暄-æšæš’-æš™ã¬-㬌𣈤-𣈯𣈱-𣉑𪰯-𪰷ð¬‚-ð¬‰ð­¦¨-ð­§ð°––-ð°–šð±¢-𱢘暚-暨ã¬-ã¬ð£‰’-𣉠𣉢-𣉺𪰸-𪰽ð¬Š-ð¬ð­§‚-𭧑𰖛-ð°– ð±¢™-ð±¢ æš©-暷㬑-㬖𣉻-𣊈𣊊-𣊑𣊓-ð£Šð£‹‡ðª°¾-𪱅ð¬-ð¬’ð­§’-𭧡𰖡-𰖪𱢡-𱢤暸-æ›é¾§ã¬—-㬟𣊉𣊞-𣋆𣋈𪱇-𪱌ð¬“-ð¬˜ð­§¢-ð­§´ð°–«-𰖮𱢥-𱢬曎-曗曚㬠-㬢ð žð£‹‰-ð£‹ðª±†ðª±ð¬™-ð¬›ð­§µ-𭧾𰖯-𰖲𱢭-𱢯曘曙曛曜㬣-㬨𠆛𣋞-𣋱𥫂𪱎-ðª±ð¬œð­§¿-𭨉𰖳-𰖵𱢰𱢱æ›-曢㬩㬪𣋲-𣋾𭨊-𭨌𰖶-𰖸曣-曨㬫𣋿-𣌇ð¬ð¬žð­¨-ð­¨ð±¢²ð±¢³æ›©ð£Œˆ-𣌌𪱑-𪱓𭨑𰖹-𰖻㬬㬭ð£Œ-𣌕𰖼曪-曬㬮𣌖𭨒𰖽𱢴曭曮𣌗-𣌙𣌛𪱔𭨓𭨔曯㬯𣌜ð£Œð­¨•ð­¨–𰖾𭨗𣌟𣌠]
+[radical 72=⽇日:æ—¥-旧𣄻-𣄽𭥋旨-æ—¯ã«ã«‘𣄾-𣅃𣅅𬀦𭥌-𭥎𰕱𰕲𱡹旰-旸㫒-㫗𣅄𣅆-𣅙𪰆𪰇𬀧𬀨ð­¥-𭥑𮲚𮲛𰕳旹-昙㫘-㫚𣅚-𣅶𪰈-𪰎𬀩-𬀫𭥒-𭥠𮲜ð®²ð°•´-𰕷𱡺-𱡼昚-昿㫛-㫤𣅷-𣆈𣆊-𣆑ðª°-𪰘𫞂𫞃𬀬-𬀮𭥡-𭥭𮲞𰕸-𰕾𱡽𱡾晀-æ™–ã«¥-㫮𣆒-𣆱𣈰𪰙-𪰤𫞄𬀯-𬀴𭥮-𭦃𮲟-𮲢𰕿-𰖆𱡿-𱢂勗晗-晩曽㫯-㫴𣆲-𣇡𪰥-𪰨𬀵-𬀺𭦄-𭦘𮲣𰖇-𰖌𱢃-𱢈晪-暃暑㫵-㬀𣇢-𣈣𪰩-𪰮𬀻-ð¬ð­¦™-𭦧𮲤ð°–-𰖕𱢉-𱢎暄-æšæš’-æš™ã¬-㬌𣈤-𣈯𣈱-𣉑𪰯-𪰷ð¬‚-ð¬‰ð­¦¨-ð­§ð®²¥ð°––-ð°–šð±¢-𱢘暚-暨ã¬-ã¬ð£‰’-𣉠𣉢-𣉺𪰸-𪰽ð¬Šð¬‹ð¬-ð¬ð­§‚-𭧑𮲦-𮲨𰖛-ð°– ð±¢™-ð±¢ æš©-暷㬑-㬖𣉻-𣊈𣊊-𣊑𣊓-ð£Šð£‹‡ðª°¾-𪱅ð¬Œð¬-ð¬’ð­§’-𭧡𮲩𰖡-𰖪𱢡-𱢤暸-æ›é¾§ã¬—-㬟𣊉𣊞-𣋆𣋈𪱇-𪱌ð¬“-ð¬˜ð­§¢-ð­§´ð°–«-𰖮𱢥-𱢬曎-曗曚㬠-㬢ð žð£‹‰-ð£‹ðª±†ðª±ð¬™-ð¬›ð­§µ-𭧾𰖯-𰖲𱢭-𱢯曘曙曛曜㬣-㬨𠆛𣋞-𣋱𥫂𪱎-ðª±ð¬œð­§¿-𭨉𰖳-𰖵𱢰𱢱æ›-曢㬩㬪𣋲-𣋾𭨊-𭨌𰖶-𰖸曣-曨㬫𣋿-𣌇ð¬ð¬žð­¨-ð­¨ð±¢²ð±¢³æ›©ð£Œˆ-𣌌𪱑-𪱓𭨑𰖹-𰖻㬬㬭ð£Œ-𣌕𰖼曪-曬㬮𣌖𭨒𰖽𱢴曭曮𣌗-𣌙𣌛𪱔𭨓𭨔曯㬯𣌜ð£Œð­¨•ð­¨–𰖾𭨗𣌟𣌠]
[radical 73=⽈曰:æ›°-曳㬰𭨘更曵𣌡𣌢ð¬Ÿð¬ æ›¶ð£Œ£-𣌦ð¬¡æ›·ð£†‰ð£Œ§-𣌬𭨙𭨚書曺𣌭-𣌶ð¬¢ð­¨›ð­¨œæ›¹æ›»æ›¼ð£Œ·-𣌺ð¬£ð¬¤æ›¾æ›¿æœæœ‚𣌻-𣌽ð¬¥-ð¬§ð­¨ð°–¿ð°—€æœƒð£Œ¾-ð£‚朄朅ð£ƒ-ð£…ð¬¨-ð¬ªð­¨žð°—ð±¢µð£†-ð£Šðª±•ð¬«ð­¨Ÿ-𭨢朆㬱ð£‹-ð£Žðª±–𪱗𱢶㬲ð£ð£ð¬¬ð£‘-ð£•ð°—‚ð±¢·ð£–ð£—𪱘ð£˜ð£™ð¬­-ð¬¯æœ‡ð­¨£ð£šð ‘±ð°—ƒð£›ð£œ]
-[radical 74=⽉月:月ð£æœ‰ð£žðª±™ð¬°ð­¨¤ð­¨¥ð£Ÿ-ð££ðª±šð¬±-ð¬³ð­¨¦ð­¨§æœŠ-æœã¬³ä¶ºä¶»ð£¤ð¦™—𪱛ð¬´-ð¬¸ð­¨¨-𭨭𰗄朎-æœð£¥-ð£§ð£©-ð£¬ðª±œðª±ð¬¹ð­¨®-𭨱𰗅𱢸朒-朕㬴㬵ð£­ð£®ð¦š¹ðª±žð«ž…ð¬º-ð¬¼ð­¨²ð­¨³ð°—†ð°—‡ð±¢¹æœ–-望㬶㬷ð£±-ð£¶ðª± -𪱢ð¬½-ð¬‚ð­¨´-𭨸朜-期㬸䶼ð£·-𣎃𦜳𪱣𫞆𫞇𬂂-𬂅𭨹-𭨽𰗈𰗉𱢺朠㬺䶽𣎄-𣎌𪱤-𪱧𬂆𭨾-𭩀𰗊朢㬻ð£Ž-𣎑𪱟𪱨-𪱪𬂇-𬂌ð­©-𭩃𰗋膤㬼-㬾𣎒-𣎙𪱫𪱬ð¬‚𬂎𭩄𭩅𰗌ð°—朣朤㬿𣎚𣎛ð£Ž-𣎢𪱭ð¬‚ð¬‚𭩆-𭩉𰗎㭀𣎜𣎣-𣎨𦡖𬂑-𬂔𭩊-𭩎𱢻朦𣎩-𣎭𬂕𬂖ð­©-ð­©‘ð°—𬂗𬂘𭩒-𭩕朧𣎮𣎯𪱮𪱯𬂙𣎰𣎱𫇃𭩖𣎲𪱰𭩗𱢼𱢽𬂚]
-[radical 75=⽊木:木朩𣎳𣎴𬂛未-朰𣎵-𣎷𬂜𭩘朱-æƒã­ð£Ž¸-ð£€ð°—-ð°—’ð±¢¾æ„-æ©æžã­‚-ã­†ð£-ð£“𪱱-𪱵ð¬‚-𬂟𭩙-𭩛𰗓𱢿æª-枀枂-æž­ã­‡-ã­ð£”-ð£‡ðª±¶-𪱹𫞈𬂠-𬂤𭩜-ð­©¡ð°—”-ð°——ð±£€-ð±£…æž®-æ ‘ã­‘-ã­—ð£ˆ-ð£´ðª±º-𪲂𬂥𬂦𭩢-𭩲𰗘-𰗛𱣆-𱣌栒-桪鿄㭘-ã­§ð£µ-𣑦𣑨-𣑾𪲃-ðª²ð«ž‰ð«žŠð¬‚§-𬂱𭩳-𭪂𰗜-ð°—¦ð±£-𱣘桫-棂㭨-㭵㭷𣑿-𣓀ðª²-𪲞𬂲-𬂷𬂹-𬂼𭪃-ð­ª—ð°—§-ð°—°ð±£™-𱣤棃-椮㭶㭸-㮊ð£“-𣔰𪲟-𪲯𬂸𬂽-𬃓𭪘-𭪵𰗱-𰗹𱣥-𱣳椯-榉榋榌榔榘﨓㮋-㮠㮢㮣𣔱-𣕣𣕥-𣖩𪲰-𪳇𫣙𫣚𬃔-𬃮𭪶-ð­«Žð°—º-𰘆𱣴-𱣼榊æ¦-榓榕-榗榙-槡槩樮﨔㮤-㮽𣕤𣖪-𣘔𪳈-𪳜𫞋𫞌𬃯-𬄆ð­«-𭫟𰘇-𰘕𱣽-𱤇槢-槨槪-樭樯-樱橥橴㮾-ã¯ã¯‘㯒㯠𣘕-𣙑𣙓-𣙺ðª³-𪳬ð«ž-ð«žð¬„‡-𬄘𭫠-𭫺𰘖-𰘤𱤈-𱤎樲-橤橦-橳橵-橼ã¯ã¯“-㯟㯡-㯩𣙒𣙻-𣛯𪳭-𪳼ð«žð¬„™-𬄫𭫻-𭬉𰘥-𰘲ð±¤-𱤛橽-檪㯪-㯶𣛰-𣜡𣜣-ð£€ðª³½-𪴈𫞑𬄬-𬄶𭬊-𭬑𰘳-𰘺𱤜-𱤥檫-櫊㯷-㯽ð£-ð£˜ð£š-𣞎𪴉-ðª´ð«ž’𬄷-𬅀𭬒-ð­¬ð°˜»-𰘽𱤦-𱤫櫋-櫦櫫櫭㯾-ã°ˆð£™ð£ž-𣟃𣟑ðª´-𪴕ð¬…𬅃-𬅈𭬞-𭬨𰘾-𰙄𱤬-𱤰櫧-櫪櫬櫮-櫶㰉-㰓㰖𣟄-ð£Ÿð£Ÿ’-𣟮𪴖-𪴚𬅂𬅉𬅊𭬩-𭬳𱤱𱤲櫸-欅欌㰔㰕𣟯-ð£ ð£ ƒ-𣠘𪴛-𪴞𬅋-ð¬…ð­¬´-ð­¬·ð°™…-𰙈𱤳𱤴櫷欆-欋æ¬æ¬Žã°—㰘𣠂𣠙-𣠶𪴟-𪴡ð¬…-𬅓𭬸-𭬺æ¬-欒㰙-㰜𣠷-𣡊𪴢𪴣𬅔𭬻-𭭀欓-欕𣡋-ð£¡ð¥¤”𪴤𪴥𬅕-𬅘欖-欛𣡞-𣡨𣡮𪴦欜æ¬ð£¡©-𣡭𣡯-𣡱𪴨𬅙𬅚ð­­ð±¤µé¿ð£¡²ð£¡´ð£¡µðª´§ð¬…›æ¬žæ¬Ÿð£¡¶-𣡸𰙉𣡹𭭂𣡺-𣡼𬅜𭭃𱤶𣡽-𣡿]
-[radical 76=⽋欠:欠-欢𣢀𭭄欤ã°ã°žð£¢-𣢈ð¬…𬅞欣欥-欧㰟-㰢𣢉-𣢖𪴩𬅟𭭅𭭆𰙊𰙋欨-欪㰣-㰨𣢗-𣢦𪴪𪴫𬅠𬅡𰙌欫-欱㰩-㰭䶾𣢧-𣢹𬅢𬅣𭭇-𭭋欲-欸㰮-㰱𣢺-𣣇𪴬𪴭𬅤-𬅨𭭌ð°™ð°™Žæ¬¹-欿㰲-㰶㰸𣣈-𣣜𪴮𬅩𬅪ð­­-ð­­ð°™-ð°™‘æ­€-歈㰹-ã°¾ð££-𣣫𣣭-𣣱𪴯𪴰𬅫𬅬ð­­ð­­‘ð°™’-𰙕𱤷𱤸歉-æ­ã°¿-ã±ð££²-𣤇𪴱𬅭-𬅯𭭒𰙖𰙗𱤹歎-歓㱂㱃𣤈-𣤗𪴲𭭓𭭔𰙘歔-歚㱄㱅𣤘-𣤟𬅰𬅱𭭕𭭖歛-æ­ã±†-㱉𣤠-𣤧𬅲𰙙歞歟𣤨-𣤫𬅳𱤺歠㱊𣤬-𣤰㱋𣤱-𣤳𪴳𭭗𣤴𣤵𣤷𣤸𬅴歡㱌𣤶𣤹-𣤼ã±ð£¤½ð¬…µð£¤¾ðª´´ã±Žð£¤¿-ð£¥]
-[radical 77=⽌止:止龰𣥂𱤻正𣥃𣥄此ã±ð£¥…𣥆𬅶𬅷𭭘-𭭚𰙚𱤼𱤽步ã±ã±‘𣥇𣥈𣥊-𣥌𬅸𰙛𰙜𱤾武-歩𣥉ð£¥-𣥡𪴵𬅹𭭛-ð­­ð°™-𰙟𱤿歪歫㱒-㱔𣥢-𣥤𬅺𬅻𭭞-ð­­ ð°™ -𰙣𱥀ð±¥æ­¬æ­­ð£¥¦-𣥱𪴶𬅼𬅽𭭡𰙤-𰙩𱥂𣥳-𣥸𪴷𬅾-𬆀𭭢-𭭥𰙪歮歯㱕㱖𣥹-𣦆𪴸ð¬†-𬆃𭭦-ð­­©ð°™«-𰙮𱥃歰-歳𣦇-𣦊𣦌-𣦎𤚜𪴹𪴺𫞓𬆄𬆅𭭪𭭫𰙯-𰙳𱥄𱥅歴㱗ð£¦-𣦓𪴻𬆆𬆇𭭬𭭭𰙴𰙵歵歶𣦔-𣦛𪴼𬆈𬆉𭭮-𭭱𰙶𰙷𱥆歷𣦜-𣦠𪴽𪴾𬆊𬆋𭭲-𭭴𰙸𰙹𱥇𣦡-𣦥𪴿𬆌ð¬†ð­­µð­­¶ð±¥ˆæ­¸ã±˜ð£¦¦-𣦫𬆎𭭷𣦬ð¬†ð¬†ð°™ºð±¥‰ð±¥Šð£¦®ð­­¸-𭭻𰙻𣦯-𣦴𭭼]
+[radical 74=⽉月:月ð£æœ‰ð£žðª±™ð¬°ð­¨¤ð­¨¥ð£Ÿ-ð££ðª±šð¬±-ð¬³ð­¨¦ð­¨§æœŠ-æœã¬³ä¶ºä¶»ð£¤ð¦™—𪱛ð¬´-ð¬¸ð­¨¨-𭨭𰗄朎-æœð£¥-ð£§ð£©-ð£¬ðª±œðª±ð¬¹ð­¨®-𭨱𮲪𰗅𱢸朒-朕㬴㬵ð£­ð£®ð¦š¹ðª±žð«ž…ð¬º-ð¬¼ð­¨²ð­¨³ð®²«ð°—†ð°—‡ð±¢¹æœ–-望㬶㬷ð£±-ð£¶ðª± -𪱢ð¬½-ð¬‚𬂙𭨴-𭨸朜-期㬸䶼ð£·-𣎃𦜳𪱣𫞆𫞇𬂂-𬂅𭨹-𭨽𰗈𰗉𱢺朠㬺䶽𣎄-𣎌𪱤-𪱧𬂆𭨾-𭩀𰗊朢㬻ð£Ž-𣎑𪱟𪱨-𪱪𬂇-𬂌ð­©-𭩃𰗋膤㬼-㬾𣎒-𣎙𪱫𪱬ð¬‚𬂎𭩄𭩅𰗌ð°—朣朤㬿𣎚𣎛ð£Ž-𣎢𪱭ð¬‚ð¬‚𭩆-𭩉𰗎㭀𣎜𣎣-𣎨𦡖𬂑-𬂔𭩊-𭩎𱢻朦𣎩-𣎭𬂕𬂖ð­©-ð­©‘ð°—𬂗𬂘𭩒-𭩕朧𣎮𣎯𪱮𪱯𣎰𣎱𫇃𭩖𣎲𪱰𭩗𱢼𱢽𬂚]
+[radical 75=⽊木:木朩𣎳𣎴𬂛未-朰𣎵-𣎷𬂜𭩘朱-æƒã­ð£Ž¸-ð£€ð°—-ð°—’ð±¢¾æ„-æ©æžã­‚-ã­†ð£-ð£“𪱱-𪱵ð¬‚-𬂟𭩙-𭩛𰗓𱢿æª-枀枂-æž­ã­‡-ã­ð£”-ð£‡ðª±¶-𪱹𫞈𬂠-𬂤𭩜-𭩡𮲬-𮲮𰗔-ð°——ð±£€-ð±£…æž®-æ ‘ã­‘-ã­—ð£ˆ-ð£´ðª±º-𪲂𬂥𬂦𭩢-𭩲𮲯𰗘-𰗛𱣆-𱣌栒-桪鿄㭘-ã­§ð£µ-𣑦𣑨-𣑾𪲃-ðª²ð«ž‰ð«žŠð¬‚§-𬂱𭩳-𭪂𮲰-𮲲𰗜-ð°—¦ð±£-𱣘桫-棂㭨-㭵㭷𣑿-𣓀ðª²-𪲞𬂲-𬂷𬂹-𬂼𭪃-𭪗𮲳𰗧-ð°—°ð±£™-𱣤棃-椮㭶㭸-㮊ð£“-𣔰𪲟-𪲯𬂸𬂽-𬃓𭪘-𭪵𮲴𮲵𰗱-𰗹𱣥-𱣳椯-榉榋榌榔榘﨓㮋-㮠㮢㮣𣔱-𣕣𣕥-𣖩𪲰-𪳇𫣙𫣚𬃔-𬃮𭪶-𭫎𮲶-𮲸𰗺-𰘆𱣴-𱣼榊æ¦-榓榕-榗榙-槡槩樮﨔㮤-㮽𣕤𣖪-𣘔𪳈-𪳜𫞋𫞌𬃯-𬄆ð­«-𭫟𰘇-𰘕𱣽-𱤇槢-槨槪-樭樯-樱橥橴㮾-ã¯ã¯‘㯒㯠𣘕-𣙑𣙓-𣙺𣛯ðª³-𪳬ð«ž-ð«žð¬„‡-𬄘𭫠-𭫺𮲹𰘖-𰘤𱤈-𱤎樲-橤橦-橳橵-橼ã¯ã¯“-㯟㯡-㯩𣙒𣙻-𣛮𪳭-𪳼ð«žð¬„™-𬄫𭫻-𭬉𮲺𮲻𰘥-𰘲ð±¤-𱤛橽-檪㯪-㯶𣛰-𣜡𣜣-ð£€ðª³½-𪴈𫞑𬄬-𬄶𭬊-𭬑𰘳-𰘺𱤜-𱤥檫-櫊㯷-㯽ð£-ð£˜ð£š-𣞎𪴉-ðª´ð«ž’𬄷-𬅀𭬒-ð­¬ð°˜»-𰘽𱤦-𱤫櫋-櫦櫫櫭㯾-ã°ˆð£™ð£ž-𣟃𣟑ðª´-𪴕ð¬…𬅃-𬅈𭬞-𭬨𮲼𰘾-𰙄𱤬-𱤰櫧-櫪櫬櫮-櫶㰉-㰓㰖𣟄-ð£Ÿð£Ÿ’-𣟮𪴖-𪴚𬅂𬅉𬅊𭬩-𭬳𱤱𱤲櫸-欅欌㰔㰕𣟯-ð£ ð£ ƒ-𣠘𪴛-𪴞𬅋-ð¬…ð­¬´-𭬷𮲽𰙅-𰙈𱤳𱤴櫷欆-欋æ¬æ¬Žã°—㰘𣠂𣠙-𣠶𪴟-𪴡ð¬…-𬅓𭬸-𭬺æ¬-欒㰙-㰜𣠷-𣡊𪴢𪴣𬅔𭬻-𭭀欓-欕𣡋-ð£¡ð¥¤”𪴤𪴥𬅕-𬅘欖-欛𣡞-𣡨𣡮𪴦欜æ¬ð£¡©-𣡭𣡯-𣡱𪴨𬅙𬅚ð­­ð±¤µé¿ð£¡²ð£¡´ð£¡µðª´§ð¬…›æ¬žæ¬Ÿð£¡¶-𣡸𰙉𣡹𭭂𣡺-𣡼𬅜𭭃𱤶𣡽-𣡿]
+[radical 76=⽋欠:欠-欢𣢀𭭄欤ã°ã°žð£¢-𣢈ð¬…𬅞欣欥-欧㰟-㰢𣢉-𣢖𪴩𬅟𭭅𭭆𰙊𰙋欨-欪㰣-㰨𣢗-𣢦𪴪𪴫𬅠𬅡𰙌欫-欱㰩-㰭䶾𣢧-𣢹𬅢𬅣𭭇-𭭋欲-欸㰮-㰱𣢺-𣣇𪴬𪴭𬅤-𬅨𭭌ð°™ð°™Žæ¬¹-欿㰲-㰶㰸𣣈-𣣜𪴮𬅩𬅪ð­­-ð­­ð°™-ð°™‘æ­€-歈㰹-ã°¾ð££-𣣫𣣭-𣣱𪴯𪴰𬅫𬅬ð­­ð­­‘ð°™’-𰙕𱤷𱤸歉-æ­ã°¿-ã±ð££²-𣤇𪴱𬅭-𬅯𭭒𰙖𰙗𱤹歎-歓㱂㱃𣤈-𣤗𪴲𭭓𭭔𮲾𰙘歔-歚㱄㱅𣤘-𣤟𬅰𬅱𭭕𭭖歛-æ­ã±†-㱉𣤠-𣤧𬅲𰙙歞歟𣤨-𣤫𬅳𱤺歠㱊𣤬-𣤰㱋𣤱-𣤳𪴳𭭗𣤴𣤵𣤷𣤸𬅴歡㱌𣤶𣤹-𣤼ã±ð£¤½ð¬…µð£¤¾ðª´´ã±Žð£¤¿-ð£¥]
+[radical 77=⽌止:止龰𣥂𱤻正𣥃𣥄此ã±ð£¥…𣥆𬅶𬅷𭭘-𭭚𰙚𱤼𱤽步ã±ã±‘𣥇𣥈𣥊-𣥌𬅸𰙛𰙜𱤾武-歩𣥉ð£¥-𣥡𪴵𬅹𭭛-ð­­ð°™-𰙟𱤿歪歫㱒-㱔𣥢-𣥤𬅺𬅻𭭞-ð­­ ð°™ -𰙣𱥀ð±¥æ­¬æ­­ð£¥¦-𣥱𪴶𬅼𬅽𭭡𰙤-𰙩𱥂𣥳-𣥸𪴷𬅾-𬆀𭭢-𭭥𰙪歮歯㱕㱖𣥹-𣦆𪴸ð¬†-𬆃𭭦-ð­­©ð°™«-𰙮𱥃歰-歳𣦇-𣦊𣦌-𣦎𤚜𪴹𪴺𫞓𬆄𬆅𭭪𭭫𰙯-𰙳𱥄𱥅歴㱗ð£¦-𣦓𪴻𬆆𬆇𭭬𭭭𰙴𰙵歵歶𣦔-𣦛𪴼𬆈𬆉𭭮-𭭱𮲿𰙶𰙷𱥆歷𣦜-𣦠𪴽𪴾𬆊𬆋𭭲-𭭴𰙸𰙹𱥇𣦡-𣦥𪴿𬆌ð¬†ð­­µð­­¶ð±¥ˆæ­¸ã±˜ð£¦¦-𣦫𬆎𭭷𣦬ð¬†ð¬†ð°™ºð±¥‰ð±¥Šð£¦®ð­­¸-𭭻𰙻𣦯-𣦴𭭼]
[radical 78=â½æ­¹:歹𣦵𣦶歺𣦷死㱙𣦸-𣦾𭭽-𭭿歼𣦿-𣧈𭮀ð­®ð°™¼ð±¥‹æ­½-æ®ã±š-ã±ð£§‰-𣧜𭮂-𭮅𱥌殂-殇㱞-ã± ð£§-𣧱𪵀ðªµð¬†‘𬆒𭮆-𭮈ð±¥æ®ˆ-残㰷㱡𣧲-𣨄𪵂𪵃𬆓-𬆕𭮉-𭮑𰙽𰙾殌-殓㱢㱣𣨅-𣨕𪵄𬆖𬆗𭮒-𭮖𰙿𰚀𱥎殔-殚㱤-㱩𣨖-𣨰𪵅𬆘-𬆚𭮗𭮘ð±¥-𱥑殛殜㱪-㱮𣨱-𣩃𬆛𭮙-𭮛𱥒𱥓æ®-殡㱯-㱲𣩄-𣩌𪵆𭮜殢-殦㱳㱴ð£©-𣩜𫞔ð­®ð­®žð°šæ®§-殫㱵-ã±·ð£©-𣩧𭮟-𭮣殬-殮㱸𣩨-𣩮𪵇𱥔𱥕殯𣩯-𣩶𭮤-𭮧殰殱𣩷𣩸𬆜鿞㱹㱺𣩹-𣩻ð¬†ð°š‚殲𣩼-𣩾㱻𣩿-ð£ª]
-[radical 79=⽎殳:殳㱼𬆞殴㱽𣪂-𣪄𬆟𬆠𭮨段殶𣪅-𣪇𬆡𬆢𱥖殷㱾㱿𣪈-𣪊𪵈𪵉𬆣𬆤𭮩-𭮭殸-殻㲀𣪋-𣪘𪵋𬆥-𬆧𭮮-𭮱𱥗殼殽ã²-㲃𣪙-𣪟𪵌-𪵎𬆨𭮲-𭮶殾-毂㲄𣪠-𣪬ðªµð¬†©-𬆬𭮷𭮸𰚃-𰚅毃毄㲅𣪮-𣪵𬆭𭮹-𭮻毅毆𣪶-𣪺𤛗ðªµð¬†®-𬆰𭮼𭮽𰚆𰚇毇毈㲆-㲈𣪻-𣫋𬆱𭮾-ð­¯ð°šˆã²‰ð£«Œ-ð£«ðªµ‘𪵒𬆲𬆳𰚉𱥘㲊ð£«-𣫗𭯂毉𣫘-ð£«ð­¯ƒð°šŠð£«žð£«Ÿð­¯„𣫠𣫡𬆴𱥙毊𣫢-𣫨𭯅𣫩𪵓𭯆𣫪𣫫𱥚𬆵]
+[radical 79=⽎殳:殳㱼𬆞殴㱽𣪂-𣪄𬆟𬆠𭮨𮳀段殶𣪅-𣪇𬆡𬆢𱥖殷㱾㱿𣪈-𣪊𪵈𪵉𬆣𬆤𭮩-𭮭殸-殻㲀𣪋-𣪘𪵋𬆥-𬆧𭮮-𭮱𱥗殼殽ã²-㲃𣪙-𣪟𪵌-𪵎𬆨𭮲-𭮶殾-毂㲄𣪠-𣪬ðªµð¬†©-𬆬𭮷𭮸𰚃-𰚅毃毄㲅𣪮-𣪵𬆭𭮹-𭮻毅毆𣪶-𣪺𤛗ðªµð¬†®-𬆰𭮼𭮽𰚆𰚇毇毈㲆-㲈𣪻-𣫋𬆱𭮾-ð­¯ð°šˆã²‰ð£«Œ-ð£«ðªµ‘𪵒𬆲𬆳𰚉𱥘㲊ð£«-𣫗𭯂毉𣫘-ð£«ð­¯ƒð°šŠð£«žð£«Ÿð­¯„𣫠𣫡𬆴𱥙毊𣫢-𣫨𭯅𣫩𪵓𭯆𣫪𣫫𱥚𬆵]
[radical 80=â½æ¯‹:毋毌𣫬æ¯æ¯Žð£«­ð­¯‡æ¯æ¯ð£«®æ¯‘毒𣫯-𣫲𬆶𭯈𣫳𣫴𱥛𣫵-𣫸𬆷毓𣫹𱥜𣫺-𣫼𪵔𭯉𣫽-𣫿𬆸𣬀ð±¥ð£¬]
[radical 81=â½æ¯”:比毕𠂱𣬂-𣬇毖-毘㲋𭯊毙𣬈-𣬊𭯋-𭯎𣬋𣬌ð­¯ð°š‹ð¬†¹ð­¯ð­¯‘ð£¬ð¬†ºð°šŒð£¬Ž-𣬑𪵕𣬒-𣬔毚𣬕𣬖𬆻𣬗-𣬚]
-[radical 82=⽑毛:毛𣬛𪵖㲌𣬜-𣬠毜æ¯ð£¬¡-𣬨𬆼ð°šæ¯žæ¯Ÿã²-㲑𣬩-𣬷𪵗𪵘𬆽-𬆿𭯒𰚎-𰚑毠毡㲒𣬸-𣭛𪵙𪵚𬇀𭯓-ð­¯—ð°š’-𰚕𱥞𱥟毢-毪㲓𣭜-𣭰𪵛𪵜𭯘𰚖𰚗𱥠𱥡毫-毮㲔-㲚𣭱-𣮇ð¬‡ð­¯™ð­¯šð°š˜-ð°šæ¯¯-毶㲛-㲞𣮈-𣮧ðªµðªµžð­¯›-ð­¯ð°šž-𰚣毷-毽㲟-㲣𣮨-𣯄𪵟𬇂𭯞𭯟𰚤-𰚦𱥢𱥣毾㲤-㲩𣯅-𣯢𪵠𬇃𬇄𭯠-𭯢𰚧-𰚮𱥤毿-氂𣯣-𣯷𪵡𬇅𰚯-𰚱𱥥氃-氇㲪-㲮𣯸-𣰉𬇆𭯣-𭯥𰚲氈-氊𣰊-𣰙𬇇𭯦-𭯩𱥦𱥧氋㲯㲰𣰚-𣰪𪵢𬇈𭯪𰚳𰚴氌㲱𣰫-𣰰𭯫𰚵𠫈𣰱-𣰵𭯬𣰶-𣰺æ°ð£°»-𣰾𭯭𰚶𣰿-ð£±ð­¯®æ°Žã²²ð£±‚𣱃𭯯𣱄]
+[radical 82=⽑毛:毛𣬛𪵖㲌𣬜-𣬠毜æ¯ð£¬¡-𣬨𬆼ð°šæ¯žæ¯Ÿã²-㲑𣬩-𣬷𪵗𪵘𬆽-𬆿𭯒𰚎-𰚑毠毡㲒𣬸-𣭛𪵙𪵚𬇀𭯓-ð­¯—ð°š’-𰚕𱥞𱥟毢-毪㲓𣭜-𣭰𪵛𪵜𭯘ð®³ð°š–𰚗𱥠𱥡毫-毮㲔-㲚𣭱-𣮇ð¬‡ð­¯™ð­¯šð®³‚𰚘-ð°šæ¯¯-毶㲛-㲞𣮈-𣮧ðªµðªµžð­¯›-ð­¯ð°šž-𰚣毷-毽㲟-㲣𣮨-𣯄𪵟𬇂𭯞𭯟𰚤-𰚦𱥢𱥣毾㲤-㲩𣯅-𣯢𪵠𬇃𬇄𭯠-𭯢𰚧-𰚮𱥤毿-氂𣯣-𣯷𪵡𬇅𰚯-𰚱𱥥氃-氇㲪-㲮𣯸-𣰉𬇆𭯣-𭯥𰚲氈-氊𣰊-𣰙𬇇𭯦-𭯩𱥦𱥧氋㲯㲰𣰚-𣰪𪵢𬇈𭯪𰚳𰚴氌㲱𣰫-𣰰𭯫𰚵𠫈𣰱-𣰵𭯬𣰶-𣰺æ°ð£°»-𣰾𭯭𰚶𣰿-ð£±ð­¯®æ°Žã²²ð£±‚𣱃𭯯𣱄]
[radical 83=â½’æ°:æ°-民𫞕氒𫞖𰚷𬇉氓𣱅𣱆𬇊𬇋𭯰𱥨𱥩𣱇-𣱊𬇌𰚸㲳ð¬‡ð°š¹ð£±‹-𣱎𭯱ð£±ð£±ð¬‡Žð£±‘𣱒𰚺𣱓𣱔]
[radical 84=⽓气:æ°”-氘𣱕𣱖𰚻氙氚𣱗𣱘氛-æ°ã²´ð£±™-𣱛𪵣ð¬‡ð­¯²ð°š¼ð°š½æ°ž-氢𣱜-𣱠𪵤ð¬‡ð°š¾ð°š¿æ°£-氩𣱡𬇑𰛀ð°›æ°ªæ°«ã²µð£±£ðªµ¥ð°›‚𱥪氬-氰𣱢𣱤𣱥𰛃𱥫氱𣱦-𣱨𪵦氲氳𣱩𪵧𬇒㲶𣱪𣱫𭯳㲷𭯴𱥬鿫𣱬𣱭𬇓𣱮𭯵𱥭𣱯𣱰]
-[radical 85=⽔水:水氵氺𣱱𰛄𰛅氶-氹㲸𣱲-𣱴𰛆氻氼氾-汉㲹-㲼𣱵-𣱿𪵨𱥮𱥯汊-汤汷㲽-㲿𣲀-ð£²ðªµ©-𪵬𬇔-𬇗𭯶𭯷𰛇-𰛋𱥰𱥱汥-汶汸-沪㳀-㳊𣲎-𣲱𪵭-𪵰𬇘-𬇚𭯸-𭯼𰛌-ð°›‘ð±¥²-𱥻沫-泙泛-泴泶-泾㳋-㳕𣲲-𣳣𪵱-𪵶𬇛-𬇟𭯽-ð­°‹ð°›’-ð°›ð±¥¼-𱦄泚泿-洌洎-æ´•æ´—-浕㳖-㳣𣳤-ð£´ðªµ·-𪵽𬇠-𬇦𭰌-𭰖𰛞-𰛪𱦅-𱦘æ´æ´–æµ–-涘涚-涩㳤-㳳𣴞-𣵶𣷚𪵾-𪶋𫞗𬇧-𬇴𭰗-𭰧𰛫-𰛼𱦙-𱦯涙涪-渂渄-渗渚湴㳴-㴎𣵷-𣷙𣷛-𣷻𣸊𪶌-𪶖𫞘𬇵-𬈄𭰨-𭱂𰛽-𰜋𱦰-𱧇渃渘渙減-湳湵-溌滋滞鿌鿿ã´-㴤𣷼-𣸉𣸋-𣹜𪶗-𪶩𬈅-𬈕𭱃-𭱡𰜌-𰜤𱧈-𱧭æº-滊æ»-滙滛-æ»æ»Ÿ-滪漓㴥-ã´»ð£¹-𣻌𦴶𪶪-𪶾𫞙-𫞛𬈖-𬈤𭱢-𭱵𰜥-𰜰𱧮-𱨊滌滚滫-漊漌-æ¼’æ¼”-漼漾-æ½ã´¼-㵉ð£»-𣻳𣻵-𣼘𣼚-𣽂𪶿-𪷊𬈥-𬈱𭱶-𭲑𰜱-ð°‚𱨋-𱨥漋漽潎-潿æ¾-澘澚-æ¾æ¿é¿°ãµŠ-㵜𣻴𣽃-𣾨𣾪-𣾿ð£¿-𣿄𪷋-𪷜𫞜𬈲-𬉇𭲒-𭲫ð°ƒ-ð°ð±¨¦-ð±©æ¾™æ¾ž-æ¿æ¿‘-æ¿“æ¿–ãµ-㵮𣾩𣿅-𤀡ðª·-𪷧ð«žð¬‰ˆ-𬉒𭲬-ð­²»ð°‘-ð°˜ð±©‚-𱩟澀濔濕濗-濲濴-濸㵯-㵼𣿀𤀣-ð¤ð¤Ÿð¤ ðª·¨-𪷲𬉓-𬉚𭲼-ð­³ð°™-ð°¡ð±© -𱩯濹-瀔㵽-㶃ð¤žð¤¡-𤂜𤂞-𤂠𤂢-𤂲𪷳-𪷹𬉛-𬉞ð­³-ð­³›ð°¢-ð°«ð±©°-𱩺濳瀕-瀮㶄-㶋ð¤‚𤂡𤂳-𤃧𪷺-𪷿𫞞𬉟-𬉤𭳜-𭳫ð°¬-ð°¯ð±©»-𱪇瀯-ç㶌-㶑𤃨-ð¤„𪸀-𪸂𬉥-𬉪𭳬-𭳯ð°°ð°±ð±ªˆ-𱪎ç‚-ççç㶒-㶘𢌇𤄎-𤄵𪸃-𪸇𬉫-𬉭𭳰-𭳶ð°²ð±ª-𱪒ç‘-ç˜ã¶™ã¶šð¤„¶-𤅉𪸈𪸉𬉮𬉯𭳷-ð­³¹ð°³ð°´ð±ª“-𱪕ç™-çœã¶›-ã¶ð¤…Š-𤅟𪸊𪸋𱪖-𱪙ç-ç¡ã¶žã¶Ÿð¤… -𤅨𪸌𬉰𬉱𭳺-𭳽𱪚-ð±ªç¢ç£ð¤…©-𤅯𱪞çŽç¤-ç¦ã¶ ð¤…°-𤅶ç§ç¨ð¤…·-𤅻𱪟𱪠𤅼-𤅿𬉲ç©ð°µçªð­³¾ð¤†€ð¬‰³ð¤†]
-[radical 86=⽕ç«:ç«-ç­ð¤†‚ðª¸ð­³¿ç®-ç³ç‚‡ã¶¡ã¶¢ð¤†ƒ-𤆌𭴀-ð­´‚ð°¶ð±ª¡-𱪣ç´-炀㶣-㶥ð¤†-𤆜𪸎-ðª¸ð¬‰´-𬉺𭴃-ð­´‡ð°·-ð°¼ð±ª¤-𱪨ç‚-炆炈-炞㶦-㶪ð¤†-𤆻𪸑-𪸗𬉻-𬊀𭴈-ð­´‘ð°½-𰞀𱪩-𱪰炟-烃㶫-㶲𤆼-𤇮𪸘-𪸢ð¬Šð¬Š‚ð­´’-ð­´šð°ž-𰞇𱪱-𱪼烄-烮㶳-㶸𤇯-𤈤𪸣-𪸪𫞟𬊃-𬊈𭴛-𭴥𰞈-𰞞𱪽-𱫅烯-ç„“ç„•-焘㶹-ã·ð¤ˆ¥-𤉡𪸫-𪸲𫞠𬊉-𬊖𭴦-𭴷𰞟-𰞬𱫆-ð±«ç„”ç„™-煀煮㷂-ã·ð¤‰¢-𤊱𪸳-𪹃𬊗-𬊨𭴸-𭵈𰞭-𰞹𱫑-𱫟ç…-ç…­ç…¯-煸煺㮡㷎-㷞𤊲-𤋲𤋴-𤌆ð¤ðª¹„-𪹑𬊩-𬊱𭵉-𭵡𰞺-𰟆𱫠-𱫮煹煻-熙熦蒸㷟-㷪𤌇-𤌱𤌳-ð¤Žðª¹’-𪹠𫞡𬊲-𬊾𭵢-𭵲𰟇-ð°Ÿð±«¯-𱫼熚-熥熧-熵黙龦龽㷫-㷲𤌲ð¤-ð¤¨ð¤ª-ð¤¿ð¤Žð¤Žƒ-𤎜𪹡-𪹩𬊿-𬋄𭵳-ð­µ¼ð°Ÿ-𰟘𱫽-𱬎熶-燞㷳-ã·½ð¤©ð¤Ž-ð¤Ÿð¤¡-ð¤´ðª¹ª-𪹳𬋅-𬋌𭵽-𭶋𰟙-ð°Ÿ¢ð±¬-𱬖營-燷鿪㷾-㸃ð¤µ-ð¤£ðª¹´-𪹻ð¬‹-ð¬‹ð­¶Œ-𭶙𰟣-𰟩𱬗-𱬜燸-爃㸄㸅ð¤¤-𤑂𤑄-𤑑𦦨𪹼-𪺀𬋑-𬋓𭶚-𭶡𰟪-𰟯ð±¬-𱬣爄-爊爌-爎爕㸆㸇㸉𤑒-𤑲ðªºðªº‚𬋔-𬋘𭶢𭶣𰟰-𰟳𱬤-𱬧爋çˆ-爔爖-爘㸈㸊-㸌𤑳-𤒠𤒨𪺃-𪺅𬋙-ð¬‹ð­¶¤-𭶦𰟴-𰟹𱬨-𱬪爙-爛ã¸ð¤’¡-𤒧𤒪-𤒹𰟺𱬫𱬬爜-爠㸎𤒩𤒺𤒻𤒽-𤓆𪺆𪺇𭶧𱬭爡爢ã¸ã¸ð¤’¼ð¤“‡-𤓎ð¤“-𤓖𪺈𬋞𱬮𱬯爣𤓗-𤓛𪺉𭶨𭶩𰟻爤-爦𤓜-𤓞𤓠-𤓣𪺊𪺋𬋟𬋠𱬰𱬱㸑𤓤𤓥𱬲𤓦-𤓩𪺌爧𤓪𤓬𬋡𬋢爨𤓫𤓭爩𤓮𱬳𬋣]
+[radical 85=⽔水:水氵氺𣱱𰛄𰛅氶-氹㲸𣱲-𣱴𰛆氻氼氾-汉㲹-㲼𣱵-𣱿𪵨𱥮𱥯汊-汤汷㲽-㲿𣲀-ð£²ðªµ©-𪵬𬇔-𬇗𭯶𭯷𮳃𰛇-𰛋𱥰𱥱汥-汶汸-沪㳀-㳊𣲎-𣲱𪵭-𪵰𬇘-𬇚𭯸-𭯼𮳄𰛌-ð°›‘ð±¥²-𱥻沫-泙泛-泴泶-泾㳋-㳕𣲲-𣳣𪵱-𪵶𬇛-𬇟𭯽-ð­°‹ð°›’-ð°›ð±¥¼-𱦄泚泿-洌洎-æ´•æ´—-浕㳖-㳣𣳤-ð£´ðªµ·-𪵽𬇠-𬇦𭰌-𭰖𮳅𮳆𰛞-𰛪𱦅-𱦘æ´æ´–æµ–-涘涚-涩㳤-㳳𣴞-𣵶𣷚𪵾-𪶋𫞗𬇧-𬇴𭰗-𭰧𮳇𰛫-𰛼𱦙-𱦯涙涪-渂渄-渗渚湴㳴-㴎𣵷-𣷙𣷛-𣷻𣸊𪶌-𪶖𫞘𬇵-𬈄𭰨-𭱂𮳈-𮳊𰛽-𰜋𱦰-𱧇渃渘渙減-湳湵-満溂-溌滋滞鿌鿿ã´-㴤𣷼-𣸉𣸋-𣹜𪶗-𪶩𬈅-𬈕𭱃-𭱡𮳋-ð®³ð°œŒ-𰜤𱧈-𱧭æºæº-滊æ»-滙滛-æ»æ»Ÿ-滪漓㴥-ã´»ð£¹-𣻌𦴶𪶪-𪶾𫞙-𫞛𬈖-𬈤𭱢-𭱵𰜥-𰜰𱧮-𱨊滌滚滫-漊漌-æ¼’æ¼”-漼漾-æ½ã´¼-㵉ð£»-𣻳𣻵-𣼘𣼚-𣽂𪶿-𪷊𬈥-𬈱𭱶-𭲑ð®³-𮳓𰜱-ð°‚𱨋-𱨥漋漽潎-潿æ¾-澘澚-æ¾æ¿é¿°ãµŠ-㵜𣻴𣽃-𣾨𣾪-𣾿ð£¿-𣿄𪷋-𪷜𫞜𬈲-𬉇𭲒-𭲫𮳔𮳕ð°ƒ-ð°ð±¨¦-ð±©æ¾™æ¾ž-æ¿æ¿‘-æ¿“æ¿–ãµ-㵮𣾩𣿅-𤀡ðª·-𪷧ð«žð¬‰ˆ-𬉒𭲬-𭲻𮳖-𮳘ð°‘-ð°˜ð±©‚-𱩟澀濔濕濗-濲濴-濸㵯-㵼𣿀𤀣-ð¤ð¤Ÿð¤ ðª·¨-𪷲𬉓-𬉚𭲼-ð­³ð°™-ð°¡ð±© -𱩯濹-瀔㵽-㶃ð¤žð¤¡-𤂜𤂞-𤂠𤂢-𤂲𪷳-𪷹𬉛-𬉞ð­³-𭳛𮳙ð°¢-ð°«ð±©°-𱩺濳瀕-瀮㶄-㶋ð¤‚𤂡𤂳-𤃧𪷺-𪷿𫞞𬉟-𬉤𭳜-𭳫ð°¬-ð°¯ð±©»-𱪇瀯-ç㶌-㶑𤃨-ð¤„𪸀-𪸂𬉥-𬉪𭳬-𭳯ð°°ð°±ð±ªˆ-𱪎ç‚-ççç㶒-㶘𢌇𤄎-𤄵𪸃-𪸇𬉫-𬉭𭳰-𭳶ð°²ð±ª-𱪒ç‘-ç˜ã¶™ã¶šð¤„¶-𤅉𪸈𪸉𬉮𬉯𭳷-ð­³¹ð°³ð°´ð±ª“-𱪕ç™-çœã¶›-ã¶ð¤…Š-𤅟𪸊𪸋𱪖-𱪙ç-ç¡ã¶žã¶Ÿð¤… -𤅨𪸌𬉰𬉱𭳺-𭳽𱪚-ð±ªç¢ç£ð¤…©-𤅯𱪞çŽç¤-ç¦ã¶ ð¤…°-𤅶ç§ç¨ð¤…·-𤅻𱪟𱪠𤅼-𤅿𬉲ç©ð°µçªð­³¾ð¤†€ð¬‰³ð¤†]
+[radical 86=⽕ç«:ç«-ç­ð¤†‚ðª¸ð­³¿ç®-ç³ç‚‡ã¶¡ã¶¢ð¤†ƒ-𤆌𭴀-ð­´‚ð°¶ð±ª¡-𱪣ç´-炀㶣-㶥ð¤†-𤆜𪸎-ðª¸ð¬‰´-𬉺𭴃-𭴇𮳚-𮳜ð°·-ð°¼ð±ª¤-𱪨ç‚-炆炈-炞㶦-㶪ð¤†-𤆻𪸑-𪸗𬉻-𬊀𭴈-ð­´‘ð®³-𮳢ð°½-𰞀𱪩-𱪰炟-烃㶫-㶲𤆼-𤇮𪸘-𪸢ð¬Šð¬Š‚ð­´’-𭴚𮳣𮳤ð°ž-𰞇𱪱-𱪼烄-烮㶳-㶸𤇯-𤈤𪸣-𪸪𫞟𬊃-𬊈𭴛-𭴥𮳥-𮳨𰞈-𰞞𱪽-𱫅烯-ç„“ç„•-焘㶹-ã·ð¤ˆ¥-𤉡𪸫-𪸲𫞠𬊉-𬊖𭴦-𭴷𮳩𮳪𰞟-𰞬𱫆-ð±«ç„”ç„™-煀煮㷂-ã·ð¤‰¢-𤊱𪸳-𪹃𬊗-𬊨𭴸-𭵈𮳫-𮳮𰞭-𰞹𱫑-𱫟ç…-ç…šç…œ-ç…­ç…¯-煸煺㮡㷎-㷞𤊲-𤋲𤋴-𤌆ð¤ðª¹„-𪹑𬊩-𬊱𭵉-𭵡𮳯-𮳳𰞺-𰟆𱫠-𱫮煛煹煻-熙熦蒸㷟-㷪𤌇-𤌱𤌳-ð¤Žðª¹’-𪹠𫞡𬊲-𬊾𭵢-𭵲𮳴𮳵𰟇-ð°Ÿð±«¯-𱫼熚-熥熧-熵黙龦龽㷫-㷲𤌲ð¤-ð¤¨ð¤ª-ð¤¿ð¤Žð¤Žƒ-𤎜𪹡-𪹩𬊿-𬋄𭵳-𭵼𮳶𮳷ð°Ÿ-𰟘𱫽-𱬎熶-燞㷳-ã·½ð¤©ð¤Ž-ð¤Ÿð¤¡-ð¤´ðª¹ª-𪹳𬋅-𬋌𭵽-𭶋𰟙-ð°Ÿ¢ð±¬-𱬖營-燷鿪㷾-㸃ð¤µ-ð¤£ðª¹´-𪹻ð¬‹-ð¬‹ð­¶Œ-𭶙𮳸𮳹𰟣-𰟩𱬗-𱬜燸-爃㸄㸅ð¤¤-𤑂𤑄-𤑑𦦨𪹼-𪺀𬋑-𬋓𭶚-𭶡𰟪-𰟯ð±¬-𱬣爄-爊爌-爎爕㸆㸇㸉𤑒-𤑲ðªºðªº‚𬋔-𬋘𭶢𭶣𰟰-𰟳𱬤-𱬧爋çˆ-爔爖-爘㸈㸊-㸌𤑳-𤒠𤒨𪺃-𪺅𬋙-ð¬‹ð­¶¤-𭶦𰟴-𰟹𱬨-𱬪爙-爛ã¸ð¤’¡-𤒧𤒪-𤒹𰟺𱬫𱬬爜-爠㸎𤒩𤒺𤒻𤒽-𤓇𪺆𪺇𭶧𱬭爡爢ã¸ã¸ð¤’¼ð¤“ˆ-𤓎ð¤“-𤓖𪺈𬋞𱬮𱬯爣𤓗-𤓛𪺉𭶨𭶩𰟻爤-爦𤓜-𤓞𤓠-𤓣𪺊𪺋𬋟𬋠𱬰𱬱㸑𤓤𤓥𱬲𤓦-𤓩𪺌爧𤓪𤓬𬋡𬋢爨𤓫𤓭爩𤓮𱬳𬋣]
[radical 87=⽖爪:爪爫𤓯-𤓱𱬴𤓲-𤓵ðªºð±¬µð±¬¶çˆ¬çˆ­ã¸’㸓𤓶-𤓼𬋤𬋥𭶪𰟼𱬷爮-爰𤓽-𤔋𪺎𬋦𭶫𰟽𱬸𱬹爱𤔌-ð¤”𬋧𬋨𭶬-𭶯𰟾𰟿㸔ð¤”-𤔓ðªºð¬‹©ð¬‹ªð­¶°ð° €ð±¬º-𱬽爲𤔔-𤔖𤔘-𤔛ðªº-𪺓𬋫𬋬𭶱ð° -𰠄𱬾𱬿𤔜-𤔡𪺔𪺕𬋭𬋮𭶲𭶳𰠅𰠆𱭀-𱭄爳㸕𤔢-𤔦𬋯𬋰𭶴𭶵噕爴𤔧-𤔭𪺖𪺗𬋱𬋲𭶶𰠇𱭅𤔮-𤔱𬋳𬋴𭶷𭶸𰠈𱭆𤔲-𤔸𤔼𪺘𪺙𬋵𬋶𱭇爵𤔹𤔻𤔽𤔾𭶹𱭈𤔺𤔿𤕀𬋷𱭉𤕂-𤕇𬋸𬋹𤕈-𤕋𰠉𰠊𤕌ð¤•ð¬‹ºðªºš]
[radical 88=⽗父:父爷𭶺𤕎ð¤•ð¬‹»ð­¶»çˆ¸ð¤•ð¤•‘㸖𤕒𰠋爹㸗𤕓𤕔𪺛𰠌㸘𤕕𪺜𭶼𱭊𤕖𤕗ð° çˆºã¸™ð¤•˜-𤕚𬋼𤕛𭶽]
[radical 89=⽘爻:爻𤕜㸚ð¤•ðªºçˆ¼ð¤•ž-𤕡爽𤕢-𤕥爾𠎛𤕦-𤕩𬋽𱭋𠑂𡄉𬋾𱭌]
@@ -103,126 +103,127 @@
[radical 90'=⺦丬:𰠗𱭗𱭘𰠘𬌒]
[radical 91=⽚片:片𤖨-𤖫𱭙版ã¸ã¸žð¤–¬-𤖰𬌓𬌔𭷉𰠙𰠚牉牊𤖱-𤖹𭷊𭷋𰠛-ð° ð±­šã¸Ÿ-㸡𤖺-𤖿𪺢𱭛𤗀-𤗆𪺣𪺤𬌕𭷌𰠞牋-ç‰ð¤—‡-𤗗𪺥𰠟𱭜-𱭞牎-牒𤗘-𤗡牓牔㸢𤗢-𤗧𱭟牕-牗𤗨-𤗲𱭠𤗳-𤗹𪺦𱭡㸣𤗺-𤗾ð­·ã¸¤ð¤—¿-𤘂𭷎牘𤘃㸥𤘄𬌖]
[radical 92=⽛牙:牙㸦𱭢𤘅𰠠𤘆𪺧ð­·ð±­£ð¤˜‡ð­·ð° ¡ã¸§ð¤˜ˆð¤˜‰ð¬Œ—𭷑𰠢𰠣𱭤𱭥𤘊𤘋𰠤𱭦牚𤘌-ð¤˜ðªº¨ð­·’ð¤˜ð¤˜‘𬌘𤘒𱭧𤘓𱭨𰠥]
-[radical 93=⽜牛:牛牜𤘔𭷓ç‰-牟㸨𤘕-𤘗𬌙𭷔𰠦牠-牤㸩㸪𤘘-𤘛𪺩𬌚𰠧𰠨牥-牬㸫-㸯𤘜-𤘷𬌛𬌜𭷕-𭷙𰠩-𰠬𱭩牭-牵㸰-㸴𤘸-ð¤™ðªºªðªº«ð«ž¢ð¬Œð­·š-ð­·ð° ­-𰠳𱭪-𱭬牶-牺㸵-㸸𤙑-𤙚𪺬-𪺮𬌞𬌟𭷞𭷟𰠴𱭭𱭮牻-牿çŠã¸¹-㹀𤙛-𤙮𬌠𭷠-𭷣𰠵犀犂-犋ã¹-㹃𤙯-𤚌𪺯𬌡𬌢𭷤-𭷬𰠶𰠷犌-犑㹅-㹈ð¤š-𤚛ð¤š-𤚨𤚿𪺰𬌣-𬌥𭷭𰠸犒-犗㹄㹉-㹋𤚩-𤚾𤛀-𤛉𪺱-𪺳𬌦𬌧𭷮𭷯𰠹𰠺犘-犛㹌-ã¹ð¤›Š-𤛖𤛘-𤛠𪺴𬌨𭷰-𭷳𰠻犜-犟㹑-㹓𤛡-𤛮𪺵𭷴𭷵𰠼𱭯犠㹔-㹖𤛯-𤛸𱭰㹗㹘𤛹𤛺𱭱犡-犦㹙𤛻-ð¤œð­·¶ð±­²çŠ§çŠ¨ð¤œ‚-𤜆㹚𤜇-𤜋𪺶犩㹛𤜌-𤜓𭷷犪𤜔-𤜘犫𤜙]
-[radical 94=â½çŠ¬:犬-犮𡗜𤜚𬌩犯犰𤜛-𤜠𭷸犱-犸𤜡-𤜮𬌪𬌫𭷹𰠽𰠾犹-狈㹜-㹠𤜯-ð¤Žð¤®ðªº·ð­·º-𭷾𰠿-ð°¡ð±­³ð±­´ç‹‰-狞㹡-㹪ð¤-ð¤­ðªº¸ðªº¹ð«ž£ð¬Œ¬ð¬Œ­ð­·¿-𭸃𰡂-𰡈𱭵-𱭸狟-狲㹫-ã¹°ð¤¯-𤞘𤞣𪺺𪺻𬌮-𬌱𭸄-𭸉𰡉-ð°¡ð±­¹-𱭻狳-猃㹱-㹸𤞙-𤞢𤞤-𤟂𪺼𪺽𬌲-𬌴𭸊-𭸑𰡎-ð°¡’ð±­¼-𱭾猄-猡猪猫㹹-㺀𤟃-𤟛𪺾-ðª»ð«ž¤ð¬Œµ-𬌷𭸒-ð­¸–ð°¡“-ð°¡ð±­¿-𱮇猢-猩猬-猹çãº-㺆𤟜-𤟴𤟶-𤠌𪻂-𪻅𬌸-𬌼𭸗-ð­¸ ð°¡ž-𰡠𱮈-𱮑猺-ç€ç‚çƒç…-çŠãº‡-ãºð¤ -𤠸𪻆𪻇𬌽-ð¬€ð­¸¡ð°¡¡ð±®’-𱮘ç„çŒ-ç•ãºŽ-㺓𤠹-𤡢𪻈ð¬-ð¬…𭸢-𭸧𰡢-𰡥𱮙-𱮡ç‹ç–-ç¤ãº”-㺙𤡣-𤢋𪻉ð¬†ð¬‡ð­¸¨-𭸬𰡦𰡧𱮢-𱮥ç¥-ç­ãºš-㺜𤢌-𤢥ð¬ˆ-ð¬Šð­¸­ð±®¦-𱮩ç®-ç´ãº-㺟𤢦-𤢳𪻊ð¬‹ð­¸®ð­¸¯ð±®ªð±®«çµ-ç¸ãº ð¤¢´-𤣄𪻋ð¬Œð­¸°ð­¸±ð°¡¨ð±®¬ð±®­ç¹-ç»ãº¡ãº¢ð¤£…-𤣌𪻌𰡩-ð°¡«ç¼ç½ãº£-㺦ð¤£-ð¤£ð¬ð­¸²ð±®®ç¾ç¿ð¤£‘-𤣖𭸳𰡬𱮯玀𤣗-𤣚çŽ-玃𤣛-𤣞㺧𤣟-𤣢ð¬Žð±®°ð±®±ð¤££ð¤£¤ð­¸´]
+[radical 93=⽜牛:牛牜𤘔𭷓ç‰-牟㸨𤘕-𤘗𬌙𭷔𰠦牠-牤㸩㸪𤘘-𤘛𪺩𬌚𮳺𰠧𰠨牥-牬㸫-㸯𤘜-𤘷𬌛𬌜𭷕-𭷙𮳻𰠩-𰠬𱭩牭-牵㸰-㸴𤘸-ð¤™ðªºªðªº«ð«ž¢ð¬Œð­·š-ð­·ð° ­-𰠳𱭪-𱭬牶-牺㸵-㸸𤙑-𤙚𪺬-𪺮𬌞𬌟𭷞𭷟𰠴𱭭𱭮牻-牿çŠã¸¹-㹀𤙛-𤙮𬌠𭷠-𭷣𰠵犀犂-犋ã¹-㹃𤙯-𤚌𪺯𬌡𬌢𭷤-𭷬𮳼𰠶𰠷犌-犑㹅-㹈ð¤š-𤚛ð¤š-𤚨𤚿𪺰𬌣-𬌥𭷭𰠸犒-犗㹄㹉-㹋𤚩-𤚾𤛀-𤛉𪺱-𪺳𬌦𬌧𭷮𭷯𰠹𰠺犘-犛㹌-ã¹ð¤›Š-𤛖𤛘-𤛠𪺴𬌨𭷰-𭷳𰠻犜-犟㹑-㹓𤛡-𤛮𪺵𭷴𭷵𰠼𱭯犠㹔-㹖𤛯-𤛸𱭰㹗㹘𤛹𤛺𱭱犡-犦㹙𤛻-ð¤œð­·¶ð±­²çŠ§çŠ¨ð¤œ‚-𤜆㹚𤜇-𤜋𪺶犩㹛𤜌-𤜓𭷷犪𤜔-𤜘犫𤜙]
+[radical 94=â½çŠ¬:犬-犮𡗜𤜚𬌩犯犰𤜛-𤜠𭷸犱-犸𤜡-𤜮𬌪𬌫𭷹𰠽𰠾犹-狈㹜-㹠𤜯-ð¤Žð¤®ðªº·ð­·º-𭷾𰠿-ð°¡ð±­³ð±­´ç‹‰-狞㹡-㹪ð¤-ð¤­ðªº¸ðªº¹ð«ž£ð¬Œ¬ð¬Œ­ð­·¿-𭸃𰡂-𰡈𱭵-𱭸狟-狲㹫-ã¹°ð¤¯-𤞘𤞣𪺺𪺻𬌮-𬌱𭸄-𭸉𮳽𰡉-ð°¡ð±­¹-𱭻狳-猃㹱-㹸𤞙-𤞢𤞤-𤟂𪺼𪺽𬌲-𬌴𭸊-𭸑𮳾𰡎-ð°¡’ð±­¼-𱭾猄-猡猪㹹-㺀𤟃-𤟛𪺾-ðª»ð«ž¤ð¬Œµ-𬌷𭸒-ð­¸–ð°¡“-ð°¡ð±­¿-𱮇猢-猩猫-猹çãº-㺆𤟜-𤟴𤟶-𤠌𪻂-𪻅𬌸-𬌼𭸗-ð­¸ ð°¡ž-𰡠𱮈-𱮑猺-ç€ç‚çƒç…-çŠãº‡-ãºð¤ -𤠸𪻆𪻇𬌽-ð¬€ð­¸¡ð°¡¡ð±®’-𱮘ç„çŒ-ç•ãºŽ-㺓𤠹-𤡢𪻈ð¬-ð¬…𭸢-𭸧𰡢-𰡥𱮙-𱮡ç‹ç–-ç¤ãº”-㺙𤡣-𤢋𪻉ð¬†ð¬‡ð­¸¨-𭸬𮳿𰡦𰡧𱮢-𱮥ç¥-ç­ãºš-㺜𤢌-𤢥ð¬ˆ-ð¬Šð­¸­ð±®¦-𱮩ç®-ç´ãº-㺟𤢦-𤢳𪻊ð¬‹ð­¸®ð­¸¯ð±®ªð±®«çµ-ç¸ãº ð¤¢´-𤣄𪻋ð¬Œð­¸°ð­¸±ð°¡¨ð±®¬ð±®­ç¹-ç»ãº¡ãº¢ð¤£…-𤣌𪻌𰡩-ð°¡«ç¼ç½ãº£-㺦ð¤£-ð¤£ð¬ð­¸²ð±®®ç¾ç¿ð¤£‘-𤣖𭸳𰡬𱮯玀𤣗-𤣚çŽ-玃𤣛-𤣞㺧𤣟-𤣢ð¬Žð±®°ð±®±ð¤££ð¤£¤ð­¸´]
[radical 95=⽞玄:玄𤣥𱮲玅𤣦玆-玈𤣧𤣨ð¬]
-[radical 96=⽟玉:玉王𤣩玊玌-玑㺨-㺫𤣪-𤣬ðª»ð­¸µð°¡­ð°¡®çŽ’-玛㺬-㺯𤣭-𤣸ð¬ð¬‘玜-玱鿱㺰-㺶𤣹-𤤎𪻎-𪻔𫞥ð¬’-ð¬–𭸶-𭸻𰡯-𰡳𱮳-𱮶玲-ç‘㺷-㺾ð¤¤-𤤴𪻕𪻖ð¬—-ð¬ð­¸¼-𭹃𰡴-𰡶𱮷-ð±®¹ç’-ç²ç‰ãº¿-㻈𠴦𤤵-𤥕𪻗-𪻟𫞦ð¬ž-ð¬¤ð­¹„-𭹋𰡷-𰡼𱮺-ð±®½ç³-ç¶ç¸-çˆçŠ-ç“㻉-ã»ð¤¥–-𤥺𪻠-𪻥ð¬¥-ð¬©ð­¹Œ-𭹔𰡽-𰢀𱮾-ð±¯ç·ç”-ççŸ-ç¼ã»‘-㻜𤥻-𤦮𪻦-𪻲𫞧ð¬ª-ð¬³ð­¹•-ð­¹¢ð°¢-𰢄𱯂-𱯉çžç½-ç‘Ÿã»-㻦𤦯-𤧩𪻳-𪼂ð¬´-ð¬ºð­¹£-𭹪𰢅-𰢈𱯊-𱯌瑠-瑸㻧-㻪𤧪-𤨓𪛞𪼃-ðª¼ð«ž¨ð¬»-𬎄𭹫-𭹮𰢉𰢊ð±¯-𱯛瑹-璌璎璓㻫-㻴𤨔-𤨿ð¤©ðª¼-𪼖𫞩𬎅-𬎊𭹯-𭹵𰢋-ð°¢ð±¯œ-𱯢ç’ç’-ç’’ç’”-璡璣璤㻵-㻼𤩀𤩂-𤩪𪼗-𪼠𬎋-𬎒𭹶-𭹿𰢎-𰢒𱯣-𱯨璢璥-璴㻽-㼂𤩫-𤪊𪼡-𪼦𬎓-𬎖𭺀-𭺈𰢓𰢔𱯩-𱯳璵-瓂𤪋-𤪨𤪴𪼧𪼨𬎗-𬎙𭺉-𭺌𱯴-𱯻瓃-瓋㼃-㼆𤪩-𤪳𤪵-𤪽𪼩-𪼫𬎚ð­º-ð­ºð°¢•ð°¢–𱯼-𱯿瓌-瓒㼇𤪾-𤫈𪼬-𪼯𬎛-ð¬Žð­º‘𰢗𰢘𱰀-ð±°‚ç““-瓖𤫉-𤫓𪼰𭺒𭺓𰢙𱰃瓗-瓙𤫔-𤫘𭺔-𭺖𰢚𱰄瓚㼈𤫙-𤫟𪼱瓛𤫠𪼲𬎞𤫣-𤫧𬎟𬎠𤫢𤫨𬎡𤫩]
-[radical 97=â½ ç“œ:瓜𰢛ç“𤫪𪼳㼉㼊𤫫-𤫯𪼴𭺗瓞瓟㼋㼌𤫰-𤫴𬎢𬎣𭺘𰢜瓠ã¼ã¼Žð¤«µ-𤫹ã¼ð¤«º-𤬀ð°¢ð±°…ç“¡ð¤¬-𤬆𪼵𰢞𰢟ã¼-㼒𤬈-𤬌𱰆㼓㼔𤬇ð¤¬ð¤¬-𤬕瓢𤬎ð¤¬ð¤¬–𭺙𤬗㼕𤬘-𤬚𭺚𰢠瓣𤬛-ð¤¬ç“¤ð¤¬žð¤¬Ÿð°¢¡ð¤¬ ð¤¬¡ç“¥ð¤¬¢ã¼–𤬣𤬤𱰇𤬥]
-[radical 98=⽡瓦:瓦𭺛𭺜瓧㼗𤬦𤬧𬎤瓨瓩㼘㼙𤬨-𤬫𪼶𬎥瓪-瓲㼚㼛𤬬-𤬲𪼷𪼸𬎦𬎧ð­ºð°¢¢ç“³-瓵㼜-㼠𤬳-𤬽𪼹𱰈瓶-瓸㼡-㼦𤬾-𤭋𬎨-𬎫𭺞-𭺡𱰉-𱰋瓹-瓼㼧-㼪𤭌-𤭚𭺢𱰌瓽-ç”㼫-㼱𤭛-𤭦𤭲𤮖𪼺𪼻𬎬𬎭𭺣𰢣𰢤甂-甆㼲-㼷𤭧-𤭱𤭳-𤭸𪼼𬎮𰢥𰢦甇-甉㼸-㼺𠪹𤭹-𤮄𪼽𪼾𬎯𭺤ð±°ç”Š-甎㼻-㼾𤮅-ð¤®ð±°Žð±°ç”-甒㼿-㽅𤮎-𤮕𤮗ð±°ç”“-甕㽆㽇𤮘-𤮟𭺥𭺦𱰑𱰒甖㽈㽉𤮠𤮡𬎰𤮢-𤮥𭺧𭺨甗𤮦-𤮬㽊𤮭-𤮯𪼿𭺩𱰓𤮰-𤮵𱰔㽋𤮶㽌𤮷𱰕𤮸𤮹]
+[radical 96=⽟玉:玉王𤣩玊玌-玑㺨-㺫𤣪-𤣬ðª»ð­¸µð°¡­ð°¡®çŽ’-玛㺬-㺯𤣭-𤣸ð¬ð¬‘ð®´€-𮴃玜-玱鿱㺰-㺶𤣹-𤤎𪻎-𪻔𫞥ð¬’-ð¬–𭸶-𭸻𮴄-𮴈𰡯-𰡳𱮳-𱮶玲-ç‘㺷-㺾ð¤¤-𤤴𪻕𪻖ð¬—-ð¬ð­¸¼-𭹃𮴉-ð®´Žð°¡´-𰡶𱮷-ð±®¹ç’-ç²ç‰ãº¿-㻈𠴦𤤵-𤥕𪻗-𪻟𫞦ð¬ž-ð¬¤ð­¹„-𭹋ð®´-ð®´—ð°¡·-𰡼𱮺-ð±®½ç³-ç¶ç¸-çˆçŠ-ç“㻉-ã»ð¤¥–-𤥺𪻠-𪻥ð¬¥-ð¬©ð­¹Œ-𭹔𮴘-ð®´žð°¡½-𰢀𱮾-ð±¯ç·ç”-ççŸ-ç¼ã»‘-㻜𤥻-𤦮𪻦-𪻲𫞧ð¬ª-ð¬³ð­¹•-𭹢𮴟-ð®´¥ð°¢-𰢄𱯂-𱯉çžç½-ç‘Ÿã»-㻦𤦯-𤧩𪻳-𪼂ð¬´-ð¬ºð­¹£-𭹪𮴦-𮴨𰢅-𰢈𱯊-𱯌瑠-瑸㻧-㻪𤧪-𤨓𪛞𪼃-ðª¼ð«ž¨ð¬»-𬎄𭹫-𭹮𮴩-𮴫𰢉𰢊ð±¯-𱯛瑹-璌璎璓㻫-㻴𤨔-𤨿ð¤©ðª¼-𪼖𫞩𬎅-𬎊𭹯-𭹵𮴬-𮴰𰢋-ð°¢ð±¯œ-𱯢ç’ç’-ç’’ç’”-璡璣璤㻵-㻼𤩀𤩂-𤩪𪼗-𪼠𬎋-𬎒𭹶-𭹿𮴱-𮴵𰢎-𰢒𱯣-𱯨璢璥-璴㻽-㼂𤩫-𤪊𪼡-𪼦𬎓-𬎖𭺀-𭺈𮴶𰢓𰢔𱯩-𱯳璵-瓂𤪋-𤪨𤪴𪼧𪼨𬎗-𬎙𭺉-𭺌𮴷𱯴-𱯻瓃-瓋㼃-㼆𤪩-𤪳𤪵-𤪽𪼩-𪼫𬎚ð­º-ð­ºð®´¸ð°¢•ð°¢–𱯼-𱯿瓌-瓒㼇𤪾-𤫈𪼬-𪼯𬎛-ð¬Žð­º‘𮴹𮴺𰢗𰢘𱰀-ð±°‚ç““-瓖𤫉-𤫓𪼰𭺒𭺓𰢙𱰃瓗-瓙𤫔-𤫘𭺔-𭺖𰢚𱰄瓚㼈𤫙-𤫟𪼱瓛𤫠𪼲𬎞𤫢-𤫧𬎟𬎠𤫨𬎡𤫩]
+[radical 97=â½ ç“œ:瓜𰢛ç“𤫪𪼳㼉㼊𤫫-𤫯𪼴𭺗瓞瓟㼋㼌𤫰-𤫴𬎢𬎣𭺘𮴻𰢜瓠ã¼ã¼Žð¤«µ-𤫹ã¼ð¤«º-𤬀ð°¢ð±°…ç“¡ð¤¬-𤬆𪼵𰢞𰢟ã¼-㼒𤬈-𤬌𱰆㼓㼔𤬇ð¤¬ð¤¬-𤬕瓢𤬎ð¤¬ð¤¬–𭺙𤬗㼕𤬘-𤬚𭺚𰢠瓣𤬛-ð¤¬ç“¤ð¤¬žð¤¬Ÿð°¢¡ð¤¬ ð¤¬¡ç“¥ð¤¬¢ã¼–𤬣𤬤𱰇𤬥]
+[radical 98=⽡瓦:瓦𭺛𭺜瓧㼗𤬦𤬧𬎤瓨瓩㼘㼙𤬨-𤬫𪼶𬎥瓪-瓲㼚㼛𤬬-𤬲𪼷𪼸𬎦𬎧ð­ºð°¢¢ç“³-瓵㼜-㼠𤬳-𤬽𪼹𱰈瓶-瓸㼡-㼦𤬾-𤭋𬎨-𬎫𭺞-𭺡𱰉-𱰋瓹-瓼㼧-㼪𤭌-𤭚𭺢𱰌瓽-ç”㼫-㼱𤭛-𤭦𤭲𤮖𪼺𪼻𬎬𬎭𭺣𰢣𰢤甂-甆㼲-㼷𤭧-𤭱𤭳-𤭸𪼼𬎮𮴼𰢥𰢦甇-甉㼸-㼺𠪹𤭹-𤮄𪼽𪼾𬎯𭺤ð±°ç”Š-甎㼻-㼾𤮅-ð¤®ð±°Žð±°ç”-甒㼿-㽅𤮎-𤮕𤮗ð±°ç”“-甕㽆㽇𤮘-𤮟𭺥𭺦𱰑𱰒甖㽈㽉𤮠𤮡𬎰𤮢-𤮥𭺧𭺨甗𤮦-𤮬㽊𤮭-𤮯𪼿𭺩𱰓𤮰-𤮵𱰔㽋𤮶㽌𤮷𱰕𤮸𤮹]
[radical 99=⽢甘:甘𤮺𭺪𭺫甙𤮻-𤯀甚ð¤¯-𤯄𫞪𰢧𰢨ã½ð¤¯…甛甜𭺬𰢩𱰖𤯆𪽀𰢪ç”甞㽎𤯇𬎱𭺭ã½ð¤¯ˆð¬Ž²ð­º®ð­º¯ã½ð¤¯‰ð¤¯Šð­º°ð¤¯‹ð¤¯Œã½‘ð¤¯ð¤¯Žð¤¯-𤯒]
[radical 100=⽣生:生𤯓𤯔ðª½ð¤¯•-𤯗𭺱-𭺳甠𤯘-𤯞𬎳𰢫甡𤯟𭺴𰢬𱰗產産𤯠-𤯥𪽂𬎴𬎵𰢭甤-甦㽒𤯦-𤯫𬎶𭺵𰢮𱰘𤯬-𤯱𪽃-𪽅𬎷-𬎹𱰙𱰚甧𤯲-𤯴𬎺-𬎼𰢯㽓𤯵㽔𤯶-𤯺𭺶𭺷𤯻𤯼𤯾𤯿𱰛𤰀-𤰂]
[radical 101=⽤用:用甩𱰜甪𤰃𪽆甫甬𤰄𠂵𠃰𡶤𤰅𤰆𬎽𬎾𭺸甭甮𭺹𰢰𠳫𤰇𰢱𰢲𤰈𭺺𰢳ð±°ð±°žç”¯ð¤°‰ð­º»ð±°Ÿð¤°Š-𤰌𱰠𱰡𭺼𱰢ð¤°ð¤°Žð±°£ð¤°ð¤°‘ð¤°]
-[radical 102=⽥田:ç”°-电𤰒甶𤰓𤰔𭺽𰢴𱰤男-町甼㽕-㽗𠃫𤰕-𤰜𪽇𬎿𰢵-𰢷𱰥画甽-ç•…ð¡‡ð¢‘–ð¤°-𤰨𪽈ð¬€ð°¢¸ç•†-畓㽘-㽚𤰩-𤱋𪽉-𪽌ð¬ð­º¾-𭻆𰢹-𰢾𱰦-ð±°­ç•”-畟㽛㽜𤱌-𤱠𤱢-𤱤ðª½-ðª½ð¬‚ð¬ƒð­»‡-𭻋𰢿-𰣅𱰮𱰯畡-畧畩異ã½ã½žð¤±¥-𤱺𪽑𪽒𫞫ð¬„-ð¬†ð­»Œ-𭻓𰣆-𰣊𱰰-𱰵番-畯畲-畴㽟㽠𤱻-ð¤²ðª½“-𪽗ð¬‡-ð¬Šð­»”-𭻚𰣋𱰶𱰷畵-畺㽡-㽤𤲑-𤲪𪽘-𪽚ð¬‹ð­»›-𭻟𰣌𱰸𱰹畱畻-畽㽥𤲫-𤲶𪽛𪽜𭻠-𭻤ð°£ð°£Žð±°º-𱰼畾畿㽦-㽨𤲷-𤳇ðª½ðª½žð¬Œ-ð¬’𭻥𭻦ð°£-𰣑𱰽𱰾疀-疂㽩𤳈-𤳎ð¤³ð¤³‘𪽟-𪽡ð¬“ð¬”𭻧-𭻮𰣒𰣓𱰿疃疄㽪𤳒-𤳚𤳜-𤳣𪽢ð¬•ð­»¯-𭻱𰣔-𰣚𱱀疅㽫㽬𤳤-𤳨ð¨´ðª½£ð¬–ð¬—𭻲𭻳疆疇㽭𤳩-𤳰𤳲𭻴𭻵𰣛ð±±-𱱃疈㽮𤳱𤳳-𤳸𪽤𭻶𭻷𰣜𱱄𤳹-𤳾𪽥𪽦𭻸ð°£ç–‰ç–Šð¤³¿-ð¤´ð­»¹ã½¯ð¤´‚-𤴄ð¬˜ð­»ºð±±…𤴅𤴆𭻻𤴇-ð¤´ð­»¼ð¤´Žð­»½ð°£žð¤´ð°£Ÿð¤´-𤴒𱱆]
+[radical 102=⽥田:ç”°-电𤰒甶𤰓𤰔𭺽𮴽𰢴𱰤男-町甼㽕-㽗𠃫𤰕-𤰜𪽇𬎿𰢵-𰢷𱰥画甽-ç•…ð¡‡ð¢‘–ð¤°-𤰨𪽈ð¬€ð°¢¸ç•†-畓㽘-㽚𤰩-𤱋𪽉-𪽌ð¬ð­º¾-𭻆𰢹-𰢾𱰦-ð±°­ç•”-畟㽛㽜𤱌-𤱠𤱢-𤱤ðª½-ðª½ð¬‚ð¬ƒð­»‡-𭻋𮴾𮴿𰢿-𰣅𱰮𱰯畡-畧畩異ã½ã½žð¤±¥-𤱺𪽑𪽒𫞫ð¬„-ð¬†ð­»Œ-𭻓𮵀ð®µð°£†-𰣊𱰰-𱰵番-畯畲-畴㽟㽠𤱻-ð¤²ðª½“-𪽗ð¬‡-ð¬Šð­»”-𭻚𮵂𰣋𱰶𱰷畵-畺㽡-㽤𤲑-𤲪𪽘-𪽚ð¬‹ð­»›-𭻟𰣌𱰸𱰹畱畻-畽㽥𤲫-𤲶𪽛𪽜𭻠-𭻤ð°£ð°£Žð±°º-𱰼畾畿㽦-㽨𤲷-𤳇ðª½ðª½žð¬Œ-ð¬’𭻥𭻦ð°£-𰣑𱰽𱰾疀-疂㽩𤳈-𤳎ð¤³ð¤³‘𪽟-𪽡ð¬“ð¬”𭻧-𭻮𰣒𰣓𱰿疃疄㽪𤳒-𤳚𤳜-𤳣𪽢ð¬•ð­»¯-𭻱𮵃𰣔-𰣚𱱀疅㽫㽬𤳤-𤳨ð¨´ðª½£ð¬–ð¬—𭻲𭻳疆疇㽭𤳩-𤳰𤳲𭻴𭻵𰣛ð±±-𱱃疈㽮𤳱𤳳-𤳸𪽤𭻶𭻷𰣜𱱄𤳹-𤳾𪽥𪽦𭻸ð°£ç–‰ç–Šð¤³¿-ð¤´ð­»¹ã½¯ð¤´‚-𤴄ð¬˜ð­»ºð±±…𤴅𤴆𭻻𤴇-ð¤´ð­»¼ð¤´Žð­»½ð°£žð¤´ð°£Ÿð¤´-𤴒𱱆]
[radical 103=⽦疋:疋𤴓-𤴕𭻾疌𤴖𤴘𭻿ç–𤴗𭼀ð­¼ð°£ ð±±‡ç–Žç–𤴙-𤴛㽰𤴜ð¤´ð¬™ð­¼‚𰣡𱱈ç–疑𭼃𭼄𤴞𭼅𤴟-𤴢𪽧𤴣𤴤]
[radical 104=⽧疒:疒𤴥ð¬šç–“-疗㽱㽲𤴦-𤴮疘-ç– ã½³-㽶𤴯-𤴶ð¬›ð¬œð±±‰ð±±Šç–¡-疯疺㽷-㽼𤴷-𤵖𪽨-𪽫ð¬-ð¬ ð­¼†ð­¼‡ð°£¢-𰣨𱱋𱱌疰-疹疻-痉㽽-㾉𤵗-𤵶𪽬-𪽮𫞬ð¬¡-ð¬¦ð­¼ˆð­¼‰ð°£©ð°£ªð±±-𱱑痊-痖㾊-㾒𤵷-𤶔𪽯ð¬§-ð¬¬ð­¼Š-ð­¼ð°£«ð°£¬ð±±’-𱱔痗-痫㾓-㾡𤶕-ð¤·ðª½°ðª½±ð¬­-ð¬±ð­¼Ž-ð­¼’ð°£­-𰣯𱱕𱱖痬-瘆㾢-㾩𤷂-𤷺𪽲ð¬²-ð¬µð­¼“-ð­¼–ð°£°-𰣴𱱗瘇-瘘瘟瘧㾪-㾵𤷻-𤸩𪽳-𪽵ð¬¶-ð¬¸ð­¼—-ð­¼ð°£µ-𰣹𱱘-𱱜瘙-瘞瘠-瘦瘨-瘫㾶-ã¿ð¤¸ª-𤹜𪽶𪽷𫞭ð¬¹ð­¼žð°£º-ð°£½ð±±-𱱠瘬-瘿癊㿂-㿈ð¤¹-𤺂𤺞ð¬ºð¬»ð­¼Ÿ-𭼧𰣾-𰤀𱱡𱱢癀-癉癋-癎㿉㿊𤺃-ð¤ºð¤ºŸ-𤺹𪽸𪽹ð¬¼ð¬½ð­¼¨-ð­¼­ð°¤-𰤄𱱣-𱱦ç™-癞㿋-ã¿ð¤ºº-𤻔ð¬¾ð­¼®ð­¼¯ð°¤…-𰤇𱱧-𱱪癟-癡癣㿑-㿓𤻕-𤻯𪽺𭼰-𭼴𰤈𱱫𱱬癢癤-癦㿔𤻰-𤻿𭼵-𭼷𰤉𱱭-𱱯癧-癫㿕-㿗𤼀-𤼊ð¬¿ð¬€ð­¼¸ç™¬-癮㿘𤼋-ð¤¼ð¬ð°¤Šð±±°ð±±±ç™¯ç™°ã¿™ð¤¼-𤼗𱱲癱癲㿚㿛𤼘-𤼛𭼹𭼺𤼜-𤼞癳𤼟-𤼡𱱳𤼢𭼻癴㿜𤼣𭼼𤼤癵𰤋]
[radical 105=⽨癶:癶𭼽𤼥𤼦𱱴癷𰤌ð°¤ç™¸-発𤼧𤼨𭼾𭼿𰤎𱱵𱱶𤼩-𤼫ð°¤ð¤¼¬-𤼮𭽀登發𤼯-𤼲ð¬‚ð­½ð°¤ð±±·ð±±¸ð¤¼³-𤼵𭽂𰤑𤼶𭽃𤼷𤼸𭽄𱱹𤼹𤼺𤼼𭽅𤼻]
-[radical 106=⽩白:白-癿𤼽𤼾ð¬ƒð°¤’皀-皃ã¿ð¤¼¿-ð¤½ð­½†ð±±ºçš„𤽂-𤽇𭽇-𭽊𰤓𰤔𱱻皅-皈㿞𤽈-𤽗𪽻𪽼ð¬„ð¬…𭽋-ð­½ç• çš‰-çšã¿Ÿð¤½˜-𤽤𪽽𫞮ð¬†ð¬‡ð­½Ž-𭽓𰤕皎-皑㿠㿡𤽥-𤽫ð¬ˆð¬‰ð­½”-ð­½—ð°¤–-𰤘皒-皖𠌟𤽬-𤽸𪽾𪽿ð¬Šð­½˜ð°¤™çš—-皙㿢𤽹-𤾇𪾀ðª¾ð¬‹-ð¬Žð­½™-𭽜𰤚-𰤜㿣㿤𤾈-𤾓𪾂𪾃ð¬ð¬ð­½ð­½žçšš-皞㿥𤾔-𤾚𪾄𭽟𱱼𱱽皟-皡㿦𤾛-𤾟𭽠皢-皥𤾠-𤾦ð°¤çš¦-皨𤾧-𤾪𭽡𭽢皩㿧𤾫-𤾳皪皫𤾴-𤾷𱱾皬㿨𤾸-𤾺𪾅𤾻-𤾽皭𤾾𤾿ð¬‘𤿀-𤿃㿩𤿄𤿅]
+[radical 106=⽩白:白-癿𤼽𤼾ð¬ƒð°¤’皀-皃ã¿ð¤¼¿-ð¤½ð­½†ð±±ºçš„𤽂-𤽇𭽇-𭽊𰤓𰤔𱱻皅-皈㿞𤽈-𤽗𪽻𪽼ð¬„ð¬…𭽋-ð­½ð®µ„畠皉-çšã¿Ÿð¤½˜-𤽤𪽽𫞮ð¬†ð¬‡ð­½Ž-𭽓𰤕皎-皑㿠㿡𤽥-𤽫ð¬ˆð¬‰ð­½”-ð­½—ð°¤–-𰤘皒-皖𠌟𤽬-𤽸𪽾𪽿ð¬Šð­½˜ð°¤™çš—-皙㿢𤽹-𤾇𪾀ðª¾ð¬‹-ð¬Žð­½™-𭽜𰤚-𰤜㿣㿤𤾈-𤾓𪾂𪾃ð¬ð¬ð­½ð­½žçšš-皞㿥𤾔-𤾚𪾄𭽟𱱼𱱽皟-皡㿦𤾛-𤾟𭽠皢-皥𤾠-𤾦ð°¤çš¦-皨𤾧-𤾪𭽡𭽢皩㿧𤾫-𤾳皪皫𤾴-𤾷𱱾皬㿨𤾸-𤾺𪾅𤾻-𤾽皭𤾾𤾿ð¬‘𤿀-𤿃㿩𤿄𤿅]
[radical 107=⽪皮:皮𤿆𤿇𰤞𱱿皯㿪𤿈-ð¤¿ðª¾†ð±²€ã¿«ã¿¬ð¤¿Ž-𤿔𪾇ð¬’皰皱㿭㿮𤿕-𤿞ð¬“ð¬”𭽣𭽤𰤟-𰤢ð±²ð±²‚皲㿯㿰𤿟-𤿦𭽥-𭽪𰤣-𰤧𱲃𱲄皳皴㿱𤿧-𤿮𤿰-𤿲ð¬•ð­½«ð°¤¨-𰤪皵龾㿲㿳𤿯𤿳-𤿿𭽬-𭽮𰤫-𰤮皶-皹㿴㿵𥀀-𥀌𪾈𪾉ð¬–𭽯𭽰𰤯𱲅皺㿶㿷ð¥€-𥀓𭽱-𭽳𰤰𰤱皻㿸𥀔-𥀞𭽴𭽵𱲆皼𥀟-𥀡𭽶皽㿹𥀢-𥀪𭽷𱲇𥀫-𥀮𭽸𭽹皾㿺𥀯-𥀳𱲈𥀴-𥀸𭽺𱲉𥀹𥀺𭽻𱲊]
-[radical 108=⽫皿:çš¿-ç›ð¥€¿ð¥€ð°¤²-𰤴盂㿻ð¥-ð¥…𫞯ð¬—𰤵盃-盈㿼㿽ð¥†-ð¥ðª¾Šðª¾‹ð«ž°ð¬˜ð¬™ð­½¼ð±²‹-ð±²ç›‰-监㿾-䀀ð¥Ž-ð¥ð¥«ðª¾Œðª¾ð¬šð¬›ð­½½-𭽿𰤶-𰤹𱲎ð±²ç›’-盘盛ä€ä€‚ð¥ž-ð¥ªðª¾Žð¬œ-ð¬žð­¾€ð­¾ð±²-𱲒盙盚盜䀃ð¥¬-ð¥¶ðª¾ðª¾ð¬Ÿ-ð¬¡ð­¾‚𰤺𰤻ç›-盟䀄䀅ð¥·-𥂂𪾑𪾒𫞱ð¬¢-ð¬§ð­¾ƒ-𭾆𰤼盠-監䀆𥂃-𥂆𪾓𪾔ð¬¨-ð¬¯ð­¾‡-𭾋𰤽-𰤿盤𥂇-𥂒𪾕ð¬°ð­¾Œ-ð­¾ð°¥€-𰥂盥-盧䀇䀈𥂓-𥂤𪾖ð¬±ð­¾ð°¥ƒ-𰥅𱲓-𱲗盨-盪䀉𥂥-𥂲𥂴-𥂷𪾗𪾘ð¬²-ð¬µð­¾‘𱲘𱲙盫盬𥂸-𥂺𥂼-𥃀𪾙ð¬¶ð¬·ð­¾’𰥆𱲚-ð±²ä€Šð¥‚»ð¥ƒ-𥃆𪾚ð¬¸-ð¬¼ð­¾“𭾔𰥇盭𥃇-𥃑ð¬½ä€‹ð¥ƒ’𦪹𪾛ð¬¾-𬑀𭾕𰥈𱲞𱲟䀌𥃓-𥃗𪾜ð¬‘𬑂𰥉𥃘𥃙𥃞𭾖𱲠𥃚-ð¥ƒðª¾ð±²¡ð±²¢ð¥ƒŸð¥ƒ ð¬‘ƒð¬‘„𥃡𰥊ä€ðª¾žð¥ƒ¢ð¥ƒ£]
-[radical 109=⽬目:目𥃤𥃥盯䀎ä€ð¥ƒ¦-𥃱𭾗-𭾙𰥋𱲣𱲤盰-盵ä€-䀔𥃲-𥄂𪾟𪾠𬑅𭾚-ð­¾ð°¥Œ-ð°¥ð±²¥ç›¶-çœä€•-䀞𥄃-𥄰𪛟𪾡-𪾣𬑆𬑇𭾞-𭾥𰥑-𰥔𱲦-𱲫眎-眬眿䀟-䀦𥄱-𥅙𪾤-𪾧𫞲𬑈-ð¬‘𭾦-𭾪𰥕-𰥜𱲬-𱲰眭-眾ç䀧-䀮𠌪𥅚-𥆉𪾨-𪾪𫞳ð¬‘-𬑕𭾫-ð­¾²ð°¥-𰥡𱲱-𱲶ç€ç‚-ç‘鿃䀯-ä€ð¥†Š-𥇄𥇆-𥇈𥇫𪾫𪾬𬑖𬑗𭾳-𭾸𰥢-𰥩𱲷-ð±²¼ç’-ç ç¢-ç­ä-ä‰ð¢°¿ð¢¾¥ð£ª­ð¥‡…𥇉-𥇪𥇬-𥇳𥇵-ð¥ˆðª¾­-𪾰𬑘-𬑛𭾹-𭿂𰥪-ð°¥´ð±²½-𱳂ç¡ç®-瞆äŠ-ä–𥈂-𥈻𪾱-𪾴𬑜ð¬‘𭿃-ð­¿ð°¥µ-𰥷𱳃𱳄瞇-çž“ä—-ä¡ð¥ˆ¼-𥉳𥊇𪾵-𪾸𬑞-𬑣ð­¿-𭿔𰥸-𰥽𱳅𱳆瞔-瞣ä¢-äªð¥‰´-𥊆𥊈-𥊩𥋕𥋖𪾹-𪾻𬑤-𬑧𭿕-𭿜𰥾-ð°¦ð±³‡ð±³ˆçž¤-çž·ä«-ä³ð¥Šª-𥋔𥋗𪾼-𪿀𬑨𬑩ð­¿-𭿡𰦂𰦃𱳉瞸-矂ä´-äºð¥‹˜-𥋾𭿢-𭿨𰦄-𰦆𱳊-ð±³çŸƒ-矊𥋿-𥌔𥌖-𥌙ðª¿ð¬‘ªð­¿©-𭿭𰦇𰦈ð±³-𱳕矋-çŸä»-ä¾ð¥Œš-𥌬𪿂𰦉𱳖𱳗çŸ-矓ä¿ä‚€ð¥Œ­-𥌹ð¥‚𪿃𪿄𬑫𭿮-𭿱𰦊𱳘𱳙ä‚𥌺-ð¥ð¥ƒð¥…-ð¥‡ð­¿²ð°¦‹çŸ”䂂䂃ð¥ˆ-ð¥Žð±³šçŸ•çŸ—ð¥-ð¥’𭿳𭿴矘矙䂄ð¥“𬑬矖矚ð¥”-ð¥œðª¿…䂅𰦌]
+[radical 108=⽫皿:çš¿-ç›ð¥€¿ð¥€ð°¤²-𰤴盂㿻ð¥-ð¥…𫞯ð¬—𰤵盃-盈㿼㿽ð¥†-ð¥ðª¾Šðª¾‹ð«ž°ð¬˜ð¬™ð­½¼ð±²‹-ð±²ç›‰-监㿾-䀀ð¥Ž-ð¥ð¥«ðª¾Œðª¾ð¬šð¬›ð­½½-𭽿𰤶-𰤹𱲎ð±²ç›’-盘盛ä€ä€‚ð¥ž-ð¥ªðª¾Žð¬œ-ð¬žð­¾€ð­¾ð±²-𱲒盙盚盜䀃ð¥¬-ð¥¶ðª¾ðª¾ð¬Ÿ-ð¬¡ð­¾‚𰤺𰤻ç›-盟䀄䀅ð¥·-𥂂𪾑𪾒𫞱ð¬¢-ð¬§ð­¾ƒ-𭾆𰤼盠-監䀆𥂃-𥂆𪾓𪾔ð¬¨-ð¬¯ð­¾‡-𭾋𰤽-𰤿盤𥂇-𥂒𪾕ð¬°ð­¾Œ-ð­¾ð°¥€-𰥂盥-盧䀇䀈𥂓-𥂤𪾖ð¬±ð­¾ð°¥ƒ-𰥅𱲓-𱲗盨-盪䀉𥂥-𥂲𥂴-𥂷𪾗𪾘ð¬²-ð¬µð­¾‘𱲘𱲙盫盬𥂸-𥂺𥂼-𥃀𪾙ð¬¶ð¬·ð­¾’𰥆𱲚-ð±²ä€Šð¥‚»ð¥ƒ-𥃆𪾚ð¬¸-ð¬¼ð­¾“𭾔𰥇盭𥃇-𥃑ð¬½ð¬¾ä€‹ð¥ƒ’𦪹𪾛ð¬¿ð¬‘€ð­¾•ð°¥ˆð±²žð±²Ÿä€Œð¥ƒ“-𥃗𪾜ð¬‘𬑂𰥉𥃘𥃙𥃞𭾖𱲠𥃚-ð¥ƒðª¾ð±²¡ð±²¢ð¥ƒŸð¥ƒ ð¬‘ƒð¬‘„𥃡𰥊ä€ðª¾žð¥ƒ¢ð¥ƒ£]
+[radical 109=⽬目:目𥃤𥃥盯䀎ä€ð¥ƒ¦-𥃱𭾗-𭾙𰥋𱲣𱲤盰-盵ä€-䀔𥃲-𥄂𪾟𪾠𬑅𭾚-ð­¾ð®µ…𰥌-ð°¥ð±²¥ç›¶-çœä€•-䀞𥄃-𥄰𪛟𪾡-𪾣𬑆𬑇𭾞-𭾥𮵆𰥑-𰥔𱲦-𱲫眎-眬眿䀟-䀦𥄱-𥅙𪾤-𪾧𫞲𬑈-ð¬‘𭾦-𭾪𰥕-𰥜𱲬-𱲰眭-眾ç䀧-䀮𠌪𥅚-𥆉𪾨-𪾪𫞳ð¬‘-𬑕𭾫-ð­¾²ð°¥-𰥡𱲱-𱲶ç€ç‚-ç‘鿃䀯-ä€ð¥†Š-𥇄𥇆-𥇈𥇫𪾫𪾬𬑖𬑗𭾳-𭾸𰥢-𰥩𱲷-ð±²¼ç’-ç ç¢-ç­ä-ä‰ð¢°¿ð¢¾¥ð£ª­ð¥‡…𥇉-𥇪𥇬-𥇳𥇵-ð¥ˆðª¾­-𪾰𬑘-𬑛𭾹-𭿂𮵇𮵈𰥪-ð°¥´ð±²½-𱳂ç¡ç®-瞆äŠ-ä–𥈂-𥈻𪾱-𪾴𬑜ð¬‘𭿃-ð­¿ð°¥µ-𰥷𱳃𱳄瞇-çž“ä—-ä¡ð¥ˆ¼-𥉳𥊇𪾵-𪾸𬑞-𬑣ð­¿-𭿔𰥸-𰥽𱳅𱳆瞔-瞣ä¢-äªð¥‰´-𥊆𥊈-𥊩𥋕𥋖𪾹-𪾻𬑤-𬑧𭿕-𭿜𰥾-ð°¦ð±³‡ð±³ˆçž¤-çž·ä«-ä³ð¥Šª-𥋔𥋗𪾼-𪿀𬑨𬑩ð­¿-𭿡𰦂𰦃𱳉瞸-矂ä´-äºð¥‹˜-𥋾𭿢-𭿨𰦄-𰦆𱳊-ð±³çŸƒ-矊𥋿-𥌔𥌖-𥌙ðª¿ð¬‘ªð­¿©-𭿭𰦇𰦈ð±³-𱳕矋-çŸä»-ä¾ð¥Œš-𥌬𪿂𰦉𱳖𱳗çŸ-矓ä¿ä‚€ð¥Œ­-𥌹ð¥‚𪿃𪿄𬑫𭿮-𭿱𰦊𱳘𱳙ä‚𥌺-ð¥ð¥ƒð¥…-ð¥‡ð­¿²ð°¦‹çŸ”䂂䂃ð¥ˆ-ð¥Žð±³šçŸ•çŸ—ð¥-ð¥’𭿳𭿴矘矙䂄ð¥“𬑬矖矚ð¥”-ð¥œðª¿…䂅𰦌]
[radical 110=⽭矛:矛𭿵ð¥ð­¿¶ð°¦ä‚†ð¥žð¬‘­çŸœä‚‡ð¥Ÿð¥ ðª¿†ð°¦ŽçŸð¥¡-ð¥¦ð­¿·ð­¿¸ð°¦ð±³›ä‚ˆð¥§-ð¥©ð­¿¹ð­¿ºð°¦çŸžçŸŸð¥ª-ð¥±ðª¿‡ð±³œçŸ ð ¢ð¥²-ð¥µð¬‘®ð°¦‘䂉ð¥¶-ð¥Žð¬‘¯ð¥Ž‚-𥎉𭿻𥎊-ð¥Žð­¿¼ä‚Š-ä‚Œð¥Ž-𥎒𥎎𥎓-𥎜ä‚𥎞-𥎠ð¥Žð¥Ž¡-𥎣䂎矡𥎤𥎥]
[radical 111=⽮矢:矢𰦒矣𥎦𥎧𭿽𰦓矤知𥎨矦-矨𥎩-𥎯𪿈𪿉𭿾𭿿𰦔𰦕矩ä‚ä‚𥎰-𥎸𬑰𬑱𮀀𰦖矪矫䂑䂒𥎹-ð¥ðª¿Šð®€ð®€‚ð±³ð±³žçŸ¬çŸ­ä‚“ð …°ð¥Ž-ð¥—𬑲𬑳𰦗𱳟𱳠矮䂔ð¥˜-ð¥©ðª¿‹ð¬‘´ð®€ƒð®€„𰦘𰦙𱳡䂕ð¥ª-ð¥±ðª¿Œð®€…𰦚𱳢ð¥²-ð¥ºðª¿ðª¿Žð®€†-𮀈𰦛-ð°¦ð±³£ð¥»-ð¥¿ð®€‰ð°¦ž-𰦢矯矰ð¥€-ð¥†ð¬‘µð±³¤-𱳦ð¥‡-ð¥‹ð¬‘¶ð°¦£ð±³§çŸ±ð¥Œ-ð¥ð¬‘·çŸ²ðª¿ð®€Šðª¿ð¬‘¸ð¥‘ð¥’ð¥ð¥“ð¥”]
-[radical 112=⽯石:石䂖ð¥•ð¥–矴-矶䂗ð¥—-ð¥œð¬‘¹çŸ·-ç ä‚˜ä‚™ð¥-ð¥¨ð¬‘º-𬑼𮀋𮀌𰦤𱳨泵砂-砜䂚-ä‚žð¥©-𥑅𪿑-𪿓𬑽-𬒂ð®€ð®€Žð°¦¥-𰦬𱳩-ð±³³ç -ç¡é¿¬ä‚Ÿ-䂨𥑆-𥑲𪿔-𪿘𬒃-𬒈ð®€-𮀔𰦭-𰦲𱳴-𱳸硂-硛鿎䂩-䂯𥑳-𥒩𪿙-ðª¿ð¬’‰-𬒌𮀕-𮀘𰦳-𰦻𱳹-𱴀硜-ç¡·ä‚°-䂶𥒪-𥓉𪿞-𪿣ð¬’-𬒑𮀙-𮀡𰦼-ð°§…ð±´-𱴋硸-硽硿-碜碰䂷-䃇𥓊-𥓹𪿤-𪿩𬒒-𬒕𮀢-𮀫𰧆-𰧊𱴌-𱴗硾ç¢-碯碱-碹ç£äƒˆ-äƒð¥“º-𥔬𪿪𪿫𬒖-𬒚𮀬-𮀵𰧋-ð°§ð±´˜-𱴣確-磀磂-磙磜磤䃑-䃗𥔭-𥕋𪿬-𪿮𬒛𮀶-𮀺𰧑-𰧘𱴤-𱴬磚磛ç£-磣磥-磮䃘-䃞䃠𥕌-𥕯𪿯-𪿴𬒜-𬒞𮀻-ð®ƒð°§™-ð°§ ð±´­-𱴰磯-礅䃟䃡-䃨𥕰-𥖖𪿵-𪿷𬒟-𬒣ð®„-ð®‰ð°§¡-𰧨𱴱-𱴶礆-礖䃩-䃯ð£žð¥–—-𥖩𪿸-𪿺𬒤𬒥ð®Š-ð®ð±´·ð±´¸ç¤—-礡䃰𥖪-𥖺𪿻-𪿽𬒦𬒧ð®-ð®“𰧩𱴹-𱴾礢-礬䃱-䃳𡕎𥖻-𥗑𬒨ð®”𰧪𱴿-ð±µç¤­-礴䃴-䃷𥗒-𥗜𪿾ð®•ð±µ‚𱵃礵䃸䃹ð¥—-𥗪𬒩𬒪𰧫𰧬礶礷𥗫-𥗳𪿿ð®–-ð®˜ç¤¸äƒºð¥—´ð¥—µð¥—·ð¥—¸ð¬’«ð®™ð®šç¤¹ð¥—¹ð±µ„䃻𥗺-𥗽ð®›ð±µ…𥗾-𥘄]
-[radical 113=⽰示:示礻𥘅礼𥘆礽䃼𥘇-𥘌ð®œð®ç¤¾-祃ð¥˜-𥘔𫀀ð«€ð¬’¬ð®žð°§­-𰧰祄-祎视鿆䃽-䄀𥘕-𥘪𫀂𫀃𬒭-𬒰ð®Ÿ-ð®¡ð°§±ð°§²ð±µ†ç¥-祢ä„-䄃𥘫-ð¥™ð«€„-𫀆𬒱-𬒳ð®¢-ð®¬ð°§³-𰧵𱵇祣-祥祧-祯䄄-䄆𥙎-𥙪𫀇-𫀊𫞴𬒴𬒵ð®­-ð®·ð°§¶-𰧿𱵈-𱵌祦祰-祸禄視䄇-䄊𣂫𥙫-𥚇𫀋-ð«€ð«žµð¬’¶-𬒽ð®¸-ð®¾ð°¨€-𰨃ð±µ-𱵔祹-禃禅禆䄋-䄒𥚈-𥚥ð«€-𫀙𬒾-𬓈ð®¿-𮂃𰨄-𰨉𱵕-𱵛禇-禙䄓-䄗𢿆𥚦-𥛄𫀚𫀛𬓉-ð¬“𮂄-𮂉𰨊-ð°¨ð±µœ-𱵠禚-禣䄘䄙𠖟𥛅-𥛗𫀜-𫀟𬓎-ð¬“𮂊-𮂎𰨎-ð°¨ð±µ¡-𱵦禤-禦䄚-䄞𥛘-𥛭𫀠𫀡𬓑-𬓗ð®‚-𮂖𰨑𰨒𱵧𱵨禧-禫䄟𥛮-𥜂𫞶𬓘-𬓚𮂗-𮂛𰨓𱵩-𱵫禬-禯鿅䄠䄡𥜃-𥜑𫀢𬓛𮂜ð®‚𰨔𱵬-𱵰禰禱䄢𥜒-𥜙𫀣𬓜𮂞𮂟𱵱-𱵳禲䄣𥜚-𥜟𮂠-𮂢𰨕𰨖𱵴-𱵶䄤𥜠-𥜤𰨗𱵷禳禴𥜥-𥜩ð¬“𮂣-𮂧𰨘禵𥜪-𥜯𮂨𱵸禶禷𥜰-𥜳𮂩-𮂫𥜴𥜵𫀤𥜶-𥜸𧆆𰨙𥜹𥜺䄥]
+[radical 112=⽯石:石䂖ð¥•ð¥–矴-矶䂗ð¥—-ð¥œð¬‘¹çŸ·-ç ä‚˜ä‚™ð¥-ð¥¨ð¬‘º-𬑼𮀋𮀌𮵉𰦤𱳨泵砂-砜䂚-ä‚žð¥©-𥑅𪿑-𪿓𬑽-𬒂ð®€ð®€Žð®µŠ-𮵌𰦥-𰦬𱳩-ð±³³ç -ç¡é¿¬ä‚Ÿ-䂨𥑆-𥑲𪿔-𪿘𬒃-𬒈ð®€-𮀔𰦭-𰦲𱳴-𱳸硂-硛鿎䂩-䂯𥑳-𥒩𪿙-ðª¿ð¬’‰-𬒌𮀕-𮀘ð®µ-𮵒𰦳-𰦻𱳹-𱴀硜-ç¡·ä‚°-䂶𥒪-𥓉𪿞-𪿣ð¬’-𬒑𮀙-𮀡𰦼-ð°§…ð±´-𱴋硸-硽硿-碜碰䂷-䃇𥓊-𥓹𪿤-𪿩𬒒-𬒕𮀢-𮀫𮵓𰧆-𰧊𱴌-𱴗硾ç¢-碯碱-碹ç£äƒˆ-äƒð¥“º-𥔬𪿪𪿫𬒖-𬒚𮀬-𮀵𮵔-𮵗𰧋-ð°§ð±´˜-𱴣確-磀磂-磙磜磤䃑-䃗𥔭-𥕋𪿬-𪿮𬒛𮀶-𮀺𰧑-𰧘𱴤-𱴬磚磛ç£-磣磥-磮䃘-䃞䃠𥕌-𥕯𪿯-𪿴𬒜-𬒞𮀻-ð®ƒð°§™-ð°§ ð±´­-𱴰磯-礅䃟䃡-䃨𥕰-𥖖𪿵-𪿷𬒟-𬒣ð®„-ð®‰ð°§¡-𰧨𱴱-𱴶礆-礖䃩-䃯ð£žð¥–—-𥖩𪿸-𪿺𬒤𬒥ð®Š-ð®ð±´·ð±´¸ç¤—-礡䃰𥖪-𥖺𪿻-𪿽𬒦𬒧ð®-ð®“𰧩𱴹-𱴾礢-礬䃱-䃳𡕎𥖻-𥗑𬒨ð®”𰧪𱴿-ð±µç¤­-礴䃴-䃷𥗒-𥗜𪿾ð®•ð±µ‚𱵃礵䃸䃹ð¥—-𥗪𬒩𬒪𰧫𰧬礶礷𥗫-𥗳𪿿ð®–-ð®˜ç¤¸äƒºð¥—´ð¥—µð¥—·ð¥—¸ð¬’«ð®™ð®šç¤¹ð¥—¹ð±µ„䃻𥗺-𥗽ð®›ð±µ…𥗾-𥘄]
+[radical 113=⽰示:示礻𥘅礼𥘆礽䃼𥘇-𥘌ð®œð®ç¤¾-祃ð¥˜-𥘔𫀀ð«€ð¬’¬ð®žð°§­-𰧰祄-祎视鿆䃽-䄀𥘕-𥘪𫀂𫀃𬒭-𬒰ð®Ÿ-ð®¡ð®µ˜ð®µ™ð°§±ð°§²ð±µ†ç¥-祢ä„-䄃𥘫-ð¥™ð«€„-𫀆𬒱-𬒳ð®¢-ð®¬ð®µšð°§³-𰧵𱵇祣-祥祧-祯䄄-䄆𥙎-𥙪𫀇-𫀊𫞴𬒴𬒵ð®­-ð®·ð®µ›ð®µœð°§¶-𰧿𱵈-𱵌祦祰-祸禄視䄇-䄊𣂫𥙫-𥚇𫀋-ð«€ð«žµð¬’¶-𬒽ð®¸-ð®¾ð°¨€-𰨃ð±µ-𱵔祹-禃禅禆䄋-䄒𥚈-𥚥ð«€-𫀙𬒾-𬓈ð®¿-𮂃𰨄-𰨉𱵕-𱵛禇-禙䄓-䄗𢿆𥚦-𥛄𫀚𫀛𬓉-ð¬“𮂄-𮂉ð®µð®µžð°¨Š-ð°¨ð±µœ-𱵠禚-禣䄘䄙𠖟𥛅-𥛗𫀜-𫀟𬓎-ð¬“𮂊-𮂎𰨎-ð°¨ð±µ¡-𱵦禤-禦䄚-䄞𥛘-𥛭𫀠𫀡𬓑-𬓗ð®‚-𮂖𰨑𰨒𱵧𱵨禧-禫䄟𥛮-𥜂𫞶𬓘-𬓚𮂗-𮂛𰨓𱵩-𱵫禬-禯鿅䄠䄡𥜃-𥜑𫀢𬓛𮂜ð®‚𮵟𰨔𱵬-𱵰禰禱䄢𥜒-𥜙𫀣𬓜𮂞𮂟𱵱-𱵳禲䄣𥜚-𥜟𮂠-𮂢𰨕𰨖𱵴-𱵶䄤𥜠-𥜤𰨗𱵷禳禴𥜥-𥜩ð¬“𮂣-𮂧𰨘禵𥜪-𥜯𮂨𱵸禶禷𥜰-𥜳𮂩-𮂫𥜴𥜵𫀤𥜶-𥜸𧆆𰨙𥜹𥜺䄥]
[radical 114=⽱禸:禸𥜻禹禺𥜼𱵹离𥜽禼𥜾𮂬𰨚禽è¬ð¥œ¿ð¥-ð¥ƒð Ž˜ð ¾§ð¥„-ð¥‡ð¦¦”𬓞𣜢ð¥ˆð¥‰ð±µºð«€¥ð®‚­ð±µ»ð¥Šð¬“Ÿð®‚®ð¥‹]
-[radical 115=⽲禾:禾ð¥Œ-ð¥ð«€¦ç¦¿-秃䄦䄧ð¥-ð¥“𬓠𮂯𰨛秄-秊䄨-ä„­ð¥”-ð¥¢ð«€§ð®‚°ð°¨œð±µ¼ç§‹-秗䄮-䄵ð¥£-ð¥½ð«€¨ð«€©ð¬“¡-𬓤𮂱-𮂹ð°¨ð°¨žð±µ½ð±µ¾ç§˜-称䄶-䄹ð¥¾-𥞗𫀪-𫀭𬓥𬓦𮂺-𮃀𰨟-𰨤𱵿-ð±¶ç§±-秾稆䄺-䅊𥞘-𥞱𥟅𫀮-𫀱𫞷𬓧-𬓩ð®ƒ-𮃄𰨥-𰨨𱶂-𱶆秿-稅稇-税鿟䅋-䅓𠞜𥞲-𥟄𥟆-𥟌𫀲-𫀸𬓪-𬓬𮃅𮃆𰨩-𰨬𱶇-𱶋ç¨-稥䅔-ä…Ÿð¥Ÿ-𥟼𫀹-𫀻𫞸𬓭-𬓰𮃇-𮃒𰨭-𰨯𱶌-𱶒稦-稳穊䅠-䅫𥟽-𥠰𫀼-ð«€ð¬“±-𬓴𮃓-𮃚𰨰𱶓-𱶚稴-穃䅬-䅶𥠱-𥡛ð«-ð«„𬓵-𬓷𬓹𮃛-𮃢𰨱-𰨴𱶛-𱶞穄-穈穋-ç©’ä…·-䅽𥡜-𥢉ð«…𬓺-𬓽𮃣-𮃫𰨵-𰨷𱶟𱶠穉穓-ç©žä…¾-䆀𥢊-𥢳ð«†ð¬“¾-𬔀𮃬-𮃱𰨸-𰨻𱶡-𱶥穟-ç©£ä†-䆇𥢴-𥣉𥣋-𥣔ð«‡ð«ˆð¬”𮃲𰨼𰨽𱶦-𱶨穤-穫𥣊𥣕-𥣡𥣣-𥣧𬔂𮃳𱶩-𱶫穬-穯䆈䆉𥣢𥣨-𥣶𥣸-𥣿ð«‰ð¬”ƒð°¨¾ð°¨¿ð±¶¬é¿ ä†Š-ä†ð¥¤€-𥤅𬔄𮃴𮃵𰩀ð°©ç©°ç©³ä†Žä†ð¥¤†-𥤉𰩂穱𥤊-𥤒𰩃𱶭穲𥤓𥤕𥤖𮃶𮃷𥤗-𥤚𱶮𥤛-ð¥¤ð±¶¯ð¥¤žð¥¤Ÿä†ð¥¤ ð¥¤¡]
+[radical 115=⽲禾:禾ð¥Œ-ð¥ð«€¦ç¦¿-秃䄦䄧ð¥-ð¥“𬓠𮂯𰨛秄-秊䄨-ä„­ð¥”-ð¥¢ð«€§ð®‚°ð°¨œð±µ¼ç§‹-秗䄮-䄵ð¥£-ð¥½ð«€¨ð«€©ð¬“¡-𬓤𮂱-𮂹𮵠ð°¨ð°¨žð±µ½ð±µ¾ç§˜-称䄶-䄹ð¥¾-𥞗𫀪-𫀭𬓥𬓦𮂺-𮃀𰨟-𰨤𱵿-ð±¶ç§±-秾稆䄺-䅊𥞘-𥞱𥟅𫀮-𫀱𫞷𬓧-𬓩ð®ƒ-𮃄𮵡𰨥-𰨨𱶂-𱶆秿-稅稇-税鿟䅋-䅓𠞜𥞲-𥟄𥟆-𥟌𫀲-𫀸𬓪-𬓬𮃅𮃆𮵢𰨩-𰨬𱶇-𱶋ç¨-稥䅔-ä…Ÿð¥Ÿ-𥟼𫀹-𫀻𫞸𬓭-𬓰𮃇-𮃒𮵣𰨭-𰨯𱶌-𱶒稦-稳穊䅠-䅫𥟽-𥠰𫀼-ð«€ð¬“±-𬓴𮃓-𮃚𮵤𰨰𱶓-𱶚稴-穃䅬-䅶𥠱-𥡛ð«-ð«„𬓵-𬓷𬓹𮃛-𮃢𰨱-𰨴𱶛-𱶞穄-穈穋-ç©’ä…·-䅽𥡜-𥢉ð«…𬓺-𬓽𮃣-𮃫𰨵-𰨷𱶟𱶠穉穓-ç©žä…¾-䆀𥢊-𥢳ð«†ð¬“¾-𬔀𮃬-𮃱𰨸-𰨻𱶡-𱶥穟-ç©£ä†-䆇𥢴-𥣉𥣋-𥣔ð«‡ð«ˆð¬”𮃲𰨼𰨽𱶦-𱶨穤-穫𥣊𥣕-𥣡𥣣-𥣧𬔂𮃳𱶩-𱶫穬-穯䆈䆉𥣢𥣨-𥣶𥣸-𥣿ð«‰ð¬”ƒð°¨¾ð°¨¿ð±¶¬é¿ ä†Š-ä†ð¥¤€-𥤅𬔄𮃴𮃵𰩀ð°©ç©°ç©³ä†Žä†ð¥¤†-𥤉𰩂穱𥤊-𥤒𰩃𱶭穲𥤓𥤕𥤖𮃶𮃷𥤗-𥤚𱶮𥤛-ð¥¤ð±¶¯ð¥¤žð¥¤Ÿä†ð¥¤ ð¥¤¡]
[radical 116=⽳穴:穴𥤢穵-穷䆑𥤣-𥤦𫞹𬔅穸-穻䆒𥤧-𥤳𮃸𱶰穼-窃䆓-䆖𥤴-𥥆ð«Šð¬”†ð¬”‡ð®ƒ¹ð°©„𱶱𱶲窄-窎䆗-䆙𥥇-𥥟ð«‹ð¬”ˆð®ƒºð®ƒ»ð°©…-𰩉𱶳-𱶵çª-窕䆚-䆠𥥠-𥥵ð«Œð«ð¬”‰ð¬”Šð®ƒ¼ð°©Šð±¶¶-𱶼窖-çªä†¡-䆥𥥶-𥦚ð«Ž-ð«ð¬”‹ð¬”Œð®ƒ½-𮄀𰩋-ð°©ð±¶½-𱷂窞-窧䆦-䆩𥦛-𥦷ð«‘-ð«“ð¬”ð®„-𮄇ð°©-ð°©’ð±·ƒ-𱷊窨-窭䆪䆫𥦸-ð¥§ð«”ð«•ð®„ˆ-𮄋𰩓-ð°©•ð±·‹-𱷎窮-窴䆬-䆮ð¥§-𥧡𥧣-𥧫ð«–𬔎ð¬”𮄌-𮄎𰩖𰩗ð±·-𱷒窵-窽䆯-䆴𥧬-𥧻𥧽-𥨋ð«—-ð«šð¬”-𬔓ð®„-𮄕𰩘𰩙𱷓-𱷖窾-竃䆵-䆻𥧼𥨌-𥨟𥨩ð«›ð®„–-𮄚𰩚𰩛竄竅䆼䆽𥨠-𥨨ð«œð¬””𮄛-ð®„ð°©œ-𰩞𱷗𱷘竆䆾䆿𥨪-𥨯𥨲𮄞-𮄡𱷙竇䇀𥨰𥨱𥨳𥨴𥨶-𥨺𱷚𱷛竈竉𥨵𥨻-𥩈𬔕𮄢𰩟𱷜-ð±·žç«Šä‡ð¥©‰ð«žºð®„£ð±·Ÿð±· ð¥©Šð¥©‹ð«ð®„¤ð®„¥ð¥©Œð¥©ð¥©-𥩑𮄦𱷡𥩎𥩒𱷢𥩓𥩔]
-[radical 117=â½´ç«‹:立䇂𬔖竌ç«ð¥©•ð¥©–𫞻竎ç«ä‡ƒä‡„𥩗𥩘ð«žð¬”—𮄧ç«-竗䇅䇆𥩙-𥩟ð«Ÿð¬”˜-𬔚𮄨𰩠𰩡𱷣竘-竞䇇-䇊𥩠-𥩰ð« ð«¡ð¬”›ð¬”œð®„©-𮄬𰩢𱷤竡䇋𥩱-𥩽ð«¢ð«ž¼ð¬”𮄭𮄮𰩣𰩤𱷥𱷦竢-竧䇌ä‡ð¥©¾-𥪉ð«£ð«¤ð¬”ž-𬔠𮄯𮄰𱷧𱷨竨-竫䇎-䇑𥪊-𥪗ð«¥ð«¦ð¬”¡-𬔣𮄱-𮄳𱷩-𱷫竬竭端竰𥪘-𥪤ð«§ð«¨ð¬”¤-𬔦𮄴-𮄶𰩥-𰩨𱷬𥪥-𥪬ð«©-ð««ð¬”§ð®„·ç«®ç«±ä‡’𥪭𥪮𥪰𥪱ð«¬ð¬”¨ð¬”©ð®„¸-𮄺𰩩𰩪竲-竴䇓𥪯𥪲-𥪹𥪻ð«­ð¬”ªð®„»ð®„¼ð±·­ç«µä‡”𥪼-ð¥«ð¥«ƒð¥«„䇕𥪺𥫅-𥫇ð«®ð®„½ç«¶ç«·ð¥«ˆ-ð¥«ð®„¾ð¥«Žð¥«ð¬”«ç«¸ð¥«ð¥«‘ð«¯ð¥«“𥫔𰩫𥫒𥫕𥫖𮄿]
-[radical 118=⽵竹:竹𥫗𥫘竺竻𥫙-𥫜ð«°ð¬”¬ð±·®ç«¼-笃䇖ð¥«-𥫮ð«±ð¬”­ð°©¬ð°©­ð±·¯ç¬…-笕䇗-ä‡ð¥«¯-𥬋ð«²-ð«·ð¬”®-𬔲𮅀-𮅃𰩮-𰩱𱷰-𱷴笖-笾䇞-䇦𥬌-𥬩𥬿ð«¸-ð«»ð¬”³-𬔹𮅄-𮅆𰩲-𰩷𱷵笄笿-ç­ä‡§-䇴𥬪-𥬾𥭀-ð¥­ð«¼ð«½ð¬”º-ð¬•ð®…‡-ð®…𰩸-𰩺𱷶-𱷽筞-简節䇵-䈀ð¥­-𥮇𥮉-𥮌ð«¾-𫂃𬕂-ð¬•ð®…‘-𮅔𰩻-𰩾𱷾𱷿ç®-箫äˆ-äˆð¥®ˆð¥®-ð¥¯ð«‚„-𫂉𬕎-𬕙𮅕-ð®… ð°©¿-𰪄𱸀-𱸌箬-箿ç¯-篈篊-篓䈎-䈩𥯑-𥰗𫂊-ð«‚ð«ž½-𫞿𬕚-𬕡𮅡-𮅮𰪅-𰪎ð±¸-𱸕築篔-篯簑簕䈪-䈷𥰘-𥱴ð«‚-𫂗𬕢-𬕨𮅯-ð®…µð°ª-𰪓𱸖-𱸛篰-ç°ç°’-簔簖簗䈸-䉇𥱵-𥳀𥳂-𥳅𥴎𫂘-𫂟𬕩-𬕬𮅶-𮆆𰪔-𰪖𱸜-𱸤簘-簲䉈-䉎ä‰-䉚䉣ð¥³ð¥³†-ð¥´ð¥´-𥴠𫂠-𫂤𬕭-𬕲𮆇-𮆓𰪗-𰪙𱸥-𱸨簳-籂ä‰ä‰›-䉢䉤𥴡-𥵛𫂥𫂦𬕳-𬕺𮆔-𮆞𰪚𰪛𱸩𱸪籃-ç±ç±•ç±–䉥𥵜-𥶄𫂧𮆟-𮆧𰪜ð°ªð±¸«-𱸮ç±-籔䉦-䉭𥶅-𥶴𫂨-𫂫𬕻-𬕿𮆨-𮆵𰪞-𰪢𱸯籗-籡䉮-䉱𥶵-𥷓𫂬𬖀-𬖅𮆶-𮆽𱸰籢-籨䉲-䉴𥷔-𥷧𫂭𬖆𰪣籪䉶𥷨-𥷻𫂮𬖇𱸱籩籫-籮𥷼-𥸇𫂯𮆾𮆿𱸲籯籰䉷𥸈-ð¥¸ð®‡€ð°ª¤ä‰¸ð¥¸-𥸖𬖈-𬖊ð®‡ð°ª¥ð¥¸—𥸚-ð¥¸ð«‚°ð¥¸˜ð¥¸™ð¥¸ž-𥸠𮇂籱䉹𥸡-𥸣籲𥸤]
-[radical 119=⽶米:米𥸥𥸦𬖋籴-籶𥸧-𥸪𫂱𫂲𬖌-𬖎𮇃𮇄𰪦𱸳娄籷-粂䉺𥸫-𥸲𫂳𫂴ð¬–𮇅𰪧-𰪪𱸴粃-粑䉻䉼𥸳-𥹀𫂵-ð«‚·ð¬–-𬖒𮇆-𮇊𰪫-𰪰𱸵𱸶畨粒-ç²ç²£ä‰½-䊀ð¥¹-𥹖𥹘𥹙𥹱𫂸-𫂼𬖓-𬖘𮇋-𮇒𰪱-𰪵𱸷-𱸺粞-粢粤-ç²­äŠ-䊆𥹗𥹚-𥹰𫂽-𫃀𬖙-𬖜𮇓-ð®‡ð°ª¶-𰪼𱸻-𱹃粮-粵糀䊇-䊌𥹲-𥺗ð«ƒð¬–-𬖠𮇞-𮇤𰪽𱹄-𱹉粶-粿ç³äŠ-䊒𥺘-𥻀𫃂-𫃅𬖡-𬖥𮇥-𮇫𰪾-ð°«ð±¹Š-𱹌糂-糎䊓-䊙ð¡¢ð¥»-𥻣𫃆-𫃈𬖦-𬖪𮇬-𮇲𰫂-ð°«…ð±¹-𱹓ç³-糘鿯䊚䊛䨀ð¢«ð¥»¤-𥻾𫃉-𫃌𬖫-𬖲𮇳-𮇹𰫆-ð°«Šð±¹”-𱹙糙-糢糨䊜-䊢𥻿-𥼖ð«ƒð«ƒŽð«Ÿ€ð¬–³-𬖵𮇺𰫋-ð°«ð±¹š-ð±¹ç³£-糧䊣-䊩𥼗-𥼵ð«ƒ-𫃑𬖶-𬖺𮇻𮇼𰫑-𰫓𱹞-𱹡糩-糭䊪-䊬𥼶-𥽎𫃒-𫃕𬖻𮇽𮇾𱹢-𱹤糮-糰䊭䊮ð¥½-𥽖𫃖𬖼-𬖾𰫔𰫕𱹥-𱹧糲䊯𥽗-𥽠𥽢𥽣𬖿𮇿𱹨糱糳糴䊰𥽡𥽤-𥽫𫃗-𫃙𬗀ð¬—𰫖糵䊱䊲𥽬-𥽵𬗂糶䊳䊴𥽶-𥽺𮈀𥽻-𥽿𱹩糷𥾀-𥾄]
-[radical 120=⽷糸:糸-系𱹪糼-糿䊵𥾅-𥾋𫃚𫃛𰫗𱹫紀-紉䊶-䊹𥾌-𥾘𫃜ð«ƒð¬—ƒð¬—„ð®ˆð®ˆ‚𰫘𰫙紊-紧䊺-䋇𥾙-𥿂𫃞𬗅𬗆𮈃-𮈅𰫚-ð°«ð±¹¬ð±¹­ç´¨-経䋈-䋔𥿃-𥿥𫃟-𫃡𬗇-𬗊𮈆-𮈊𰫞-𰫡𱹮𱹯çµ-絚絜-çµ·ä‹•-䋞𥿦-𦀑𫃢-𫃤𬗋-𬗔𮈋-ð®ˆð°«¢-𰫤𱹰-𱹳絛絸-綛ç·ä‹Ÿ-䋦𦀒-ð¦…𫃥-𫃩𬗕-𬗞𮈑-𮈕𰫥-𰫨𱹴𱹵綜-ç·ç·‘緒緔緕䋧-䋲ð¦†-ð¦¿ð«ƒª-𫃲𬗟-𬗧𮈖-𮈢𰫩-𰫭𱹶-𱹹緓緖-縇䋳-䌄𦂀-𦂦𦂨-ð¦ƒð«ƒ³-𫃷ð«Ÿð¬—¨-𬗮𮈣-𮈰𰫮𰫯𱹺-𱹼縈-縨䌅-䌋𦂧𦃂-ð¦„𦄃-𦄈𫃸-𫃼𬗯-𬗲𮈱-𮈸𰫰𱹽𱹾縩-繇繉繊繌ç¹äŒŒ-䌕𦄂𦄉-𦄻𫃽-𫄀𬗳-𬗺𮈹-𮉃𰫱𰫲𱹿-𱺅繈繎-繥繧繱䌖-䌛𦄼-𦅴ð«„-𫄄𫟂𬗻-ð¬˜ð®‰„-𮉉𰫳𰫴𱺆-𱺈繋繦繨-ç¹°ç¹²-繺䌜-䌢𦅵-𦆛𦆥𫄅-𫄋𬘂𮉊-ð®‰ð±º‰ð±ºŠç¹»-纃䌣-䌧𦆜-𦆣𦆦𦆧𦆩𦆪𦆬-𦆺𫄌-𫄎𬘃-𬘈ð®‰-𮉒𱺋𱺌纄-çºäŒ¨äŒ©ð¦†¤ð¦†¨ð¦†«ð¦†»-ð¦‡ð¦‡ƒ-𦇓ð«„-𫄑𬘉-𬘌𮉓-𮉖𰫵-ð°«·ð±ºçº‘纒䌪-䌭𦇂𦇔-𦇦𫄒-ð«„”ð¬˜-ð¬˜ð®‰—-𮉙𰫸𰫹𱺎纓-纖䌮𦇧-𦇯𫄕ð¬˜ð¬˜‘𮉚𰫺纗䌯-䌲𦇰-𦇷𦇹𬘒𮉛𮉜纘-纛䌳䌴𦇸𦇺𦇻𫄖ð®‰ð®‰žð¦‡¼ð¦‡½ð«„—纜çºäŒµð¦‡¾-𦈂𫄘𮉟𦈃𦈄𰫻纞𦈅-𦈇]
-[radical 120'=⺰纟:纟𫄙纠𮉠𰫼ð±º-𱺑纡-纫纶䌶𬘓𱺒纬-纵纷-纾䌸𫄚-ð«„𬘔-𬘘𰫽-ð°¬ð±º“线-ç»äŒ·äŒ¹ð¦ˆˆð«„žð«„Ÿð¬˜™-𬘞𮉡-𮉣𰬂-𰬋𱺔-𱺙绑-统䌺䌻𦈉𫄠-𫄣𫟃𬘟-𬘧𮉤-𮉦𰬌-𰬕𱺚𱺛绠-绨䌼𦈊-𦈌𫄤-𫄩𫟄𬘨-𬘫𮉧-𮉩𰬖-𰬞𱺜-𱺢绩-ç¼äŒ½ð¦ˆ-ð¦ˆð«„ªð«„«ð«Ÿ…𬘬-𬘯𮉪-𮉬𰬟-𰬪𱺣-𱺥缂-缘䌾䌿𦈑-𦈕𫄬-𫄮𫟆𬘰-𬘸𮉭𰬫-𰬰𱺦-𱺩缙-缤ä€ð¦ˆ–-𦈙𫄯𫄰𬘹-𬘽𰬱-ð°¬´ç¼¥-缫𦈚𫄱-𫄴𬘾-𬙂𮉮𮉯𰬵𰬶𱺪𱺫缬-缯𦈛-ð¦ˆð«„µð«„¶ð¬™ƒ-𬙈𰬷-𰬻𱺬缰-ç¼´ä𦈞𦈟𫄷𬙉𰬼-𰬾𱺭𦈠𦈡𫄸𫟇𰬿𱺮𬙊𰭀ð°­ð±º¯ç¼µð¬™‹ð«„¹ð±º°]
+[radical 117=â½´ç«‹:立䇂𬔖竌ç«ð¥©•ð¥©–𫞻竎ç«ä‡ƒä‡„𥩗𥩘ð«žð¬”—𮄧ç«-竗䇅䇆𥩙-𥩟ð«Ÿð¬”˜-𬔚𮄨𮵥𰩠𰩡𱷣竘-竞䇇-䇊𥩠-𥩰ð« ð«¡ð¬”›ð¬”œð®„©-𮄬𮵦𰩢𱷤竡䇋𥩱-𥩽ð«¢ð«ž¼ð¬”𮄭𮄮𰩣𰩤𱷥𱷦竢-竧䇌ä‡ð¥©¾-𥪉ð«£ð«¤ð¬”ž-𬔠𮄯𮄰𮵧𱷧𱷨竨-竫䇎-䇑𥪊-𥪗ð«¥ð«¦ð¬”¡-𬔣𮄱-𮄳𮵨𱷩-𱷫竬竭端竰𥪘-𥪤ð«§ð«¨ð¬”¤-𬔦𮄴-𮄶𰩥-𰩨𱷬𥪥-𥪬ð«©-ð««ð¬”§ð®„·ç«®ç«±ä‡’𥪭𥪮𥪰𥪱ð«¬ð¬”¨ð¬”©ð®„¸-𮄺𮵩𮵪𰩩𰩪竲-竴䇓𥪯𥪲-𥪹𥪻ð«­ð¬”ªð®„»ð®„¼ð±·­ç«µä‡”𥪼-ð¥«ð¥«ƒð¥«„䇕𥪺𥫅-𥫇ð«®ð®„½ç«¶ç«·ð¥«ˆ-ð¥«ð®„¾ð¥«Žð¥«ð¬”«ç«¸ð¥«ð¥«‘ð«¯ð¥«“𥫔𰩫𥫒𥫕𥫖𮄿]
+[radical 118=⽵竹:竹𥫗𥫘竺竻𥫙-𥫜ð«°ð¬”¬ð®µ«ð±·®ç«¼-笃䇖ð¥«-𥫮ð«±ð¬”­ð°©¬ð°©­ð±·¯ç¬…-笕䇗-ä‡ð¥«¯-𥬋ð«²-ð«·ð¬”®-𬔲𮅀-𮅃𮵬𮵭𰩮-𰩱𱷰-𱷴笖-笾䇞-䇦𥬌-𥬩𥬿ð«¸-ð«»ð¬”³-𬔹𮅄-𮅆𮵮𮵯𰩲-𰩷𱷵笄笿-ç­ä‡§-䇴𥬪-𥬾𥭀-ð¥­ð«¼ð«½ð¬”º-ð¬•ð®…‡-ð®…𮵰𰩸-𰩺𱷶-𱷽筞-简節䇵-䈀ð¥­-𥮇𥮉-𥮌ð«¾-𫂃𬕂-ð¬•ð®…‘-𮅔𮵱-𮵳𰩻-𰩾𱷾𱷿ç®-箫äˆ-äˆð¥®ˆð¥®-ð¥¯ð«‚„-𫂉𬕎-𬕙𮅕-𮅠𮵴-𮵶𰩿-𰪄𱸀-𱸌箬-箿ç¯-篈篊-篓䈎-䈩𥯑-𥰗𫂊-ð«‚ð«ž½-𫞿𬕚-𬕡𮅡-𮅮𮵷𰪅-𰪎ð±¸-𱸕築篔-篯簑簕䈪-䈷𥰘-𥱴ð«‚-𫂗𬕢-𬕨𮅯-ð®…µð°ª-𰪓𱸖-𱸛篰-ç°ç°’-簔簖簗䈸-䉇𥱵-𥳀𥳂-𥳅𥴎𫂘-𫂟𬕩-𬕬𮅶-𮆆𰪔-𰪖𱸜-𱸤簘-簲䉈-䉎ä‰-䉚䉣ð¥³ð¥³†-ð¥´ð¥´-𥴠𫂠-𫂤𬕭-𬕲𮆇-𮆓𮵸𰪗-𰪙𱸥-𱸨簳-籂ä‰ä‰›-䉢䉤𥴡-𥵛𫂥𫂦𬕳-𬕺𮆔-𮆞𰪚𰪛𱸩𱸪籃-ç±ç±•ç±–䉥𥵜-𥶄𫂧𮆟-𮆧𰪜ð°ªð±¸«-𱸮ç±-籔䉦-䉭𥶅-𥶴𫂨-𫂫𬕻-𬕿𮆨-𮆵𰪞-𰪢𱸯籗-籡䉮-䉱𥶵-𥷓𫂬𬖀-𬖅𮆶-𮆽𱸰籢-籨䉲-䉴𥷔-𥷧𫂭𬖆𰪣籪䉶𥷨-𥷻𫂮𬖇𮵹𱸱籩籫-籮𥷼-𥸇𫂯𮆾𮆿𱸲籯籰䉷𥸈-ð¥¸ð®‡€ð°ª¤ä‰¸ð¥¸-𥸖𬖈-𬖊ð®‡ð°ª¥ð¥¸—𥸚-ð¥¸ð«‚°ð¥¸˜ð¥¸™ð¥¸ž-𥸠𮇂籱䉹𥸡-𥸣籲𥸤]
+[radical 119=⽶米:米𥸥𥸦𬖋籴-籶𥸧-𥸪𫂱𫂲𬖌-𬖎𮇃𮇄𰪦𱸳娄籷-粂䉺𥸫-𥸲𫂳𫂴ð¬–𮇅𰪧-𰪪𱸴粃-粑䉻䉼𥸳-𥹀𫂵-ð«‚·ð¬–-𬖒𮇆-𮇊𰪫-𰪰𱸵𱸶畨粒-ç²ç²£ä‰½-䊀ð¥¹-𥹖𥹘𥹙𥹱𫂸-𫂼𬖓-𬖘𮇋-𮇒𰪱-𰪵𱸷-𱸺粞-粢粤-ç²­äŠ-䊆𥹗𥹚-𥹰𫂽-𫃀𬖙-𬖜𮇓-ð®‡ð°ª¶-𰪼𱸻-𱹃粮-粵糀䊇-䊌𥹲-𥺗ð«ƒð¬–-𬖠𮇞-𮇤𰪽𱹄-𱹉粶-粿ç³äŠ-䊒𥺘-𥻀𫃂-𫃅𬖡-𬖥𮇥-𮇫𮵺𮵻𰪾-ð°«ð±¹Š-𱹌糂-糎䊓-䊙ð¡¢ð¥»-𥻣𫃆-𫃈𬖦-𬖪𮇬-𮇲𰫂-ð°«…ð±¹-𱹓ç³-糘鿯䊚䊛䨀ð¢«ð¥»¤-𥻾𫃉-𫃌𬖫-𬖲𮇳-𮇹𰫆-ð°«Šð±¹”-𱹙糙-糢糨䊜-䊢𥻿-𥼖ð«ƒð«ƒŽð«Ÿ€ð¬–³-𬖵𮇺𮵼𮵽𰫋-ð°«ð±¹š-ð±¹ç³£-糧䊣-䊩𥼗-𥼵ð«ƒ-𫃑𬖶-𬖺𮇻𮇼𰫑-𰫓𱹞-𱹡糩-糭䊪-䊬𥼶-𥽎𫃒-𫃕𬖻𮇽𮇾𱹢-𱹤糮-糰䊭䊮ð¥½-𥽖𫃖𬖼-𬖾𰫔𰫕𱹥-𱹧糲䊯𥽗-𥽠𥽢𥽣𬖿𮇿𱹨糱糳糴䊰𥽡𥽤-𥽫𫃗-𫃙𬗀ð¬—𰫖糵䊱䊲𥽬-𥽵𬗂糶䊳䊴𥽶-𥽺𮈀𥽻-𥽿𱹩糷𥾀-𥾄]
+[radical 120=⽷糸:糸-系𱹪糼-糿䊵𥾅-𥾋𫃚𫃛𰫗𱹫紀-紉䊶-䊹𥾌-𥾘𫃜ð«ƒð¬—ƒð¬—„ð®ˆð®ˆ‚𰫘𰫙紊-紧䊺-䋇𥾙-𥿂𫃞𬗅𬗆𮈃-𮈅𰫚-ð°«ð±¹¬ð±¹­ç´¨-経䋈-䋔𥿃-𥿥𫃟-𫃡𬗇-𬗊𮈆-𮈊𰫞-𰫡𱹮𱹯çµ-絚絜-çµ·ä‹•-䋞𥿦-𦀑𫃢-𫃤𬗋-𬗔𮈋-ð®ˆð°«¢-𰫤𱹰-𱹳絛絸-綛䋟-䋦𦀒-ð¦…𫃥-𫃩𬗕-𬗞𮈑-𮈕𰫥-𰫨𱹴𱹵綜-緒緔緕䋧-䋲ð¦†-ð¦¿ð«ƒª-𫃲𬗟-𬗧𮈖-𮈢𰫩-𰫭𱹶-𱹹緓緖-縇䋳-䌄𦂀-𦂦𦂨-ð¦ƒð«ƒ³-𫃷ð«Ÿð¬—¨-𬗮𮈣-𮈰𰫮𰫯𱹺-𱹼縈-縨䌅-䌋𦂧𦃂-ð¦„𦄃-𦄈𫃸-𫃼𬗯-𬗲𮈱-𮈸𮵾𰫰𱹽𱹾縩-繇繉繊繌ç¹äŒŒ-䌕𦄂𦄉-𦄻𫃽-𫄀𬗳-𬗺𮈹-𮉃𰫱𰫲𱹿-𱺅繈繎-繥繧繱䌖-䌛𦄼-𦅴ð«„-𫄄𫟂𬗻-ð¬˜ð®‰„-𮉉𰫳𰫴𱺆-𱺈繋繦繨-ç¹°ç¹²-繺䌜-䌢𦅵-𦆛𦆥𫄅-𫄋𬘂𮉊-ð®‰ð±º‰ð±ºŠç¹»-纃䌣-䌧𦆜-𦆣𦆦𦆧𦆩𦆪𦆬-𦆺𫄌-𫄎𬘃-𬘈ð®‰-𮉒𱺋𱺌纄-çºäŒ¨äŒ©ð¦†¤ð¦†¨ð¦†«ð¦†»-ð¦‡ð¦‡ƒ-𦇓ð«„-𫄑𬘉-𬘌𮉓-𮉖𰫵-ð°«·ð±ºçº‘纒䌪-䌭𦇂𦇔-𦇦𫄒-ð«„”ð¬˜-ð¬˜ð®‰—-𮉙𰫸𰫹𱺎纓-纖䌮𦇧-𦇯𫄕ð¬˜ð¬˜‘𮉚𰫺纗䌯-䌲𦇰-𦇷𦇹𬘒𮉛𮉜纘-纛䌳䌴𦇸𦇺𦇻𫄖ð®‰ð®‰žð¦‡¼ð¦‡½ð«„—纜çºäŒµð¦‡¾-𦈂𫄘𮉟𦈃𦈄𰫻纞𦈅-𦈇]
+[radical 120'=⺰纟:纟𫄙纠𮉠𰫼ð±º-𱺑纡-纫纶䌶𬘓𮵿𱺒纬-纵纷-纾䌸𫄚-ð«„𬘔-𬘘𰫽-ð°¬ð±º“线-ç»äŒ·äŒ¹ð¦ˆˆð«„žð«„Ÿð¬˜™-𬘞𮉡-𮉣𮶀ð®¶ð°¬‚-𰬋𱺔-𱺙绑-统䌺䌻𦈉𫄠-𫄣𫟃𬘟-𬘧𮉤-𮉦𰬌-𰬕𱺚𱺛绠-绨䌼𦈊-𦈌𫄤-𫄩𫟄𬘨-𬘫𮉧-𮉩𮶂𰬖-𰬞𱺜-𱺢绩-ç¼äŒ½ð¦ˆ-ð¦ˆð«„ªð«„«ð«Ÿ…𬘬-𬘯𮉪-𮉬𰬟-𰬪𱺣-𱺥缂-缘䌾䌿𦈑-𦈕𫄬-𫄮𫟆𬘰-𬘸𮉭𰬫-𰬰𱺦-𱺩缙-缤ä€ð¦ˆ–-𦈙𫄯𫄰𬘹-𬘽𮶃-𮶆𰬱-ð°¬´ç¼¥-缫𦈚𫄱-𫄴𬘾-𬙂𮉮𮉯𰬵𰬶𱺪𱺫缬-缯𦈛-ð¦ˆð«„µð«„¶ð¬™ƒ-𬙈𰬷-𰬻𱺬缰-ç¼´ä𦈞𦈟𫄷𬙉𰬼-𰬾𱺭𦈠𦈡𫄸𫟇𰬿𱺮𬙊𰭀ð°­ð±º¯ç¼µð¬™‹ð«„¹ð±º°]
[radical 121=⽸缶:缶𦈢缷𰭂𰭃缸ä‚𦈣-𦈥𮉰缹缺缼äƒð¦ˆ¦-𦈨𬙌ð¬™ð®‰±ð±º±ç¼»ç¼½ä„-ä‰ð¦ˆ©-𦈮𬙎𮉲缾-ç½€äŠð¦ˆ¯-𦈳ð¬™ð¦ˆ´-𦈷𫄺𮉳𮉴ç½ç½‚ä‹äŒð¦ˆ¸-𦉀𫄻ð¬™ð®‰µð°­„𱺲ð¦‰-𦉇𫄼𫄽𬙑𬙒𮉶罃ä𦉈-𦉎𫄾𬙓𮉷𱺳罄-罆ð¦‰-𦉔𮉸𰭅罇-罉𦉕-𦉘𮉹-𮉻𰭆罊罋ð¤•ð¦‰™-𦉜𫄿𬙔罌ð¦‰ð¦‰žç½ð¦‰Ÿð¦‰ ð°­‡ç½Žç½ð¦‰¡äŽð¦‰¢-𦉤ç½ð¤«¡ð¦‰¥-𦉩]
-[radical 122=⽹网:网-罓ä𦉪𦉫𦉭𦉰𦉯𮉼𦉬𦉮𦉱-𦉶𬙕罔-ç½—ää‘𦉷-𦊀𫅀𬙖-𬙘𮉽𱺴-𱺶罘-罚ä’-ä”ð¦Š-ð¦Šð«…𬙙𮉾-𮊀𰭈𱺷-𱺻罛-ç½¢ä•-ä—𦊎-𦊣𦊥-𦊩𦊳𫅂𬙚-𬙜ð®Š-𮊄𰭉罣ä˜ð¦Šª-𦊲𦊴-𦊻𫅃-ð«……ð¬™ð®Š…ð°­Š-𰭌𱺼-𱺾罤-罦ä™äšð¦Š¼-𦋄𦋑𬙞𬙟𮊆ð°­ð°­Žð±º¿-ð±»ç½§-置署ä›-äžð¦‹…-ð¦‹ð¦‹’-𦋜𫅆𫅇𬙠-𬙣𮊇-𮊉ð°­-𰭑𱻂-𱻆罯-罱罳罴äŸð¦‹-𦋩𦋫-𦋮𫅈𮊊-𮊌罵-罸𦋯-𦋼𫅉𬙤-𬙦ð®Š-𮊓𰭒-𰭔𱻇罹-ç½¼ä ä¡ð¦‹½-𦌑𫅊𮊔-𮊙𰭕罽-ç¾ä¢ð¦Œ’-𦌞𧷅𬙧𬙨𮊚𮊛羂ä£ð¦ŒŸ-𦌨ð§°ð«…‹ð¬™©ð®Šœç¾ƒ-羆ä¤ð¦Œª-𦌴𫅌ð®Šð®Šžð±»ˆð¦Œµ-𦌺ä¥ð¦Œ»ð¦Œ¼ð«…𬙪𮊟羇𦌽𬙫𮊠羈羉ä¦ð¦Œ¾-ð¦…𰭖𮊡ð¦†-ð¦Šé¿¡]
+[radical 122=⽹网:网-罓ä𦉪𦉫𦉭𦉰𦉯𮉼𦉬𦉮𦉱-𦉶𬙕罔-ç½—ää‘𦉷-𦊀𫅀𬙖-𬙘𮉽𮶇𱺴-𱺶罘-罚ä’-ä”ð¦Š-ð¦Šð«…𬙙𮉾-𮊀𰭈𱺷-𱺻罛-ç½¢ä•-ä—𦊎-𦊣𦊥-𦊩𦊳𫅂𬙚-𬙜ð®Š-𮊄𰭉罣ä˜ð¦Šª-𦊲𦊴-𦊻𫅃-ð«……ð¬™ð®Š…ð°­Š-𰭌𱺼-𱺾罤-罦ä™äšð¦Š¼-𦋄𦋑𬙞𬙟𮊆ð°­ð°­Žð±º¿-ð±»ç½§-置署ä›-äžð¦‹…-ð¦‹ð¦‹’-𦋜𫅆𫅇𬙠-𬙣𮊇-𮊉ð°­-𰭑𱻂-𱻆罯-罱罳罴äŸð¦‹-𦋩𦋫-𦋮𫅈𮊊-𮊌罵-罸𦋯-𦋼𫅉𬙤-𬙦ð®Š-𮊓𰭒-𰭔𱻇罹-ç½¼ä ä¡ð¦‹½-𦌑𫅊𮊔-𮊙𰭕罽-ç¾ä¢ð¦Œ’-𦌞𧷅𬙧𬙨𮊚𮊛羂ä£ð¦ŒŸ-𦌨ð§°ð«…‹ð¬™©ð®Šœç¾ƒ-羆ä¤ð¦Œª-𦌴𫅌ð®Šð®Šžð±»ˆð¦Œµ-𦌺ä¥ð¦Œ»ð¦Œ¼ð«…𬙪𮊟羇𦌽𬙫𮊠羈羉ä¦ð¦Œ¾-ð¦…𰭖𮊡ð¦†-ð¦Šé¿¡]
[radical 123=⽺羊:羊ð¦‹-ð¦ç¾‹ç¾Œð¦Ž-ð¦ð«…Žð°­—𱻉𱻊ç¾-羑ð¦‘-ð¦–𫟈𬙬𮊢-𮊤羒-羔羖-ç¾™ä§-ä©ð¦—-ð¦¤ð¦®ð¬™­-𬙯𰭘𱻋羕羚-羟äª-ä­ð¦¥-ð¦­ð¦¯-ð¦¸ð«…-𫅒𬙰𮊥𮊦羠-ç¾¢ä®-ä°ð¦¹-𦎄𫅓𫅔𬙱-𬙳𮊧𮊨𰭙羣-羪ä±ð¦Ž†-𦎖𫅕𬙴𮊩𱻌-𱻎羫ä²-ä¶ð¦Ž—-𦎡𬙵𬙶𮊪-𮊭ð±»ð±»ç¾¬-ç¾°ä·ð¦Ž¢-𦎮𫅖-𫅘𬙷𬙸𮊮𮊯𰭚羱羲ä¸ä¹ð¦Ž¯-𦎶𫅙𬙹-𬙻𮊰-𮊲𰭛𰭜𱻑äºð¦Ž·-ð¦„ð«…š-𫅜𬙼𬙽羳-ç¾µä»ä¼ð¦Œ©ð¦…-ð¦”ð«…𫅞𬙾𮊳𱻒𱻓羶-ç¾¹ð¦•-ð¦›ð¬™¿ð®Š´ç¾ºð¦œ-ð¦¡ð«…Ÿç¾»ç¾¼ð¡…–ð¦¢-ð¦§ð¬š€ð®Šµð®Š¶ä½ð¦¨ð¦©ð«… ð«…¡ð¬šð®Š·ð±»”ð¦ªð¦«ð±»•ð¦¬ð±»–ð¦­ð¦®ð¬š‚𣌞ð¦¯-ð¦±]
-[radical 124=⽻羽:ç¾½ð¦³ð°­ð¦²ç¾¾ç¾¿ð¦´-ð¦ð«…¢ç¿€-翆ä¾ä¿ð¦‚-ð¦”𫅣𮊸-𮊻𰭞-𰭠翇-習䎀-䎆ð¦•-ð¦¢ð«…¤ð®Š¼ð°­¡ð±»—𱻘翓-翚䎇-䎊ð¦£-ð¦·ð«…¥-𫅧𮊽-𮋂𰭢𱻙翛-ç¿äŽ‹-䎎ð¦¸-𦑄𦑆𫅨𫅩𬚃𮋃𮋄𰭣𱻚翞-翤äŽ-䎓𦑅𦑇-ð¦‘𦑒-𦑗𫅪𬚄𮋅-𮋈𰭤𱻛𱻜翥-翭𦑘-𦑯𦑻𫅫𫅬𮋉-𮋌ð±»-ð±» ç¿®-翱䎔䎕𦑰-𦑺𦑼-𦒂𦒞𫅭𫅮𬚅𬚆ð®‹-𮋑𰭥𱻡𱻢翲-翶翼𦒃-𦒌𫅯𬚇𬚈𮋒𮋓𱻣翷-翻䎖-䎘ð¦’-𦒛𦒟𫅰𫅱𱻤翽翾𦒜ð¦’𦒠𦒡𮋔𮋕翿耀䎙𦒢-𦒥𦒪𦒫𮋖𮋗䎚𦒦𦒨𦒩𦒬𮋘𮋙𦒧𦒭-𦒯𫅲𱻥𰭦𱻦𦒰𮋚]
+[radical 124=⽻羽:ç¾½ð¦³ð°­ð¦²ð®¶ˆç¾¾ç¾¿ð¦´-ð¦ð«…¢ç¿€-翆ä¾ä¿ð¦‚-ð¦”𫅣𮊸-𮊻𰭞-𰭠翇-習䎀-䎆ð¦•-ð¦¢ð«…¤ð®Š¼ð®¶‰ð®¶Šð°­¡ð±»—𱻘翓-翚䎇-䎊ð¦£-ð¦·ð«…¥-𫅧𮊽-𮋂𮶋-ð®¶ð°­¢ð±»™ç¿›-ç¿äŽ‹-䎎ð¦¸-𦑄𦑆𫅨𫅩𬚃𮋃𮋄𰭣𱻚翞-翤äŽ-䎓𦑅𦑇-ð¦‘𦑒-𦑗𫅪𬚄𮋅-𮋈𰭤𱻛𱻜翥-翭𦑘-𦑯𦑻𫅫𫅬𮋉-𮋌ð±»-ð±» ç¿®-翱䎔䎕𦑰-𦑺𦑼-𦒂𦒞𫅭𫅮𬚅𬚆ð®‹-𮋑𰭥𱻡𱻢翲-翶翼𦒃-𦒌𫅯𬚇𬚈𮋒𮋓𱻣翷-翻䎖-䎘ð¦’-𦒛𦒟𫅰𫅱𮶎𱻤翽翾𦒜ð¦’𦒠𦒡𮋔𮋕翿耀䎙𦒢-𦒥𦒪𦒫𮋖𮋗䎚𦒦𦒨𦒩𦒬𮋘𮋙𦒧𦒭-𦒯𫅲𱻥𰭦𱻦𦒰𮋚]
[radical 125=â½¼è€:è€-考𰭧𦒱𦒲𬚉𬚊𱻧𱻨䎛𦒳-𦒵𰭨𰭩耄-耆𦒶-𦒹𱻩𱻪耇-耉𦒺-𦒿𫅳𫅴𬚋𮋛𰭪耊耋䎜-䎞𦓀𮋜𱻫ð®‹ð¦“𫅵𬚌𮋞𱻬𦓂𫅶𰭫𱻭𱻮𦓄𦓅𫅷𦓆𦓇𦓃𦓈𦓉ð¬šð¦“Šð«…¸ð¬šŽð±»¯ð¦“‹-ð¦“]
[radical 126=⽽而:而ð¦“𦓎ð¦“𦓑𱻰è€-耑䎟䎠𰭬䎡𦓒𦓓𱻱𦓔-𦓗𮋟𰭭𰭮𦓘-𦓜ð¬šð¦“𦓞𮋠𮋡𦓟-𦓡𰭯𦓢𮋢𦓣]
[radical 127=⽾耒:耒𦓤耓𦓥-𦓧𮋣耔䎢𦓨-𦓪𱻲耕-耙𦓫𮋤𰭰𰭱耚-耟䎣𦓬-𦓮𫅹𮋥-𮋧耠𦓯-𦓳𫅺𫅻ð¬šð®‹¨ð®‹©è€¡è€¢äŽ¤äŽ¥ð¦“´-𦓶𫅼𮋪𱻳耣-耥䎦-䎪𦓷-ð¦”𱻴耦耧䎫䎬𦔂-𦔊𫅽耨-耪𦔋-𦔒𫅾耫耬䎭-䎯𦔓-𦔚𱻵耭耮䎰𦔛-𦔞𦔠-𦔤𫅿𮋫𱻶𦔟𦔥-𦔨𬚑𰭲耯耰䎱𦔩𦔪耱耲𦔫-𦔭]
-[radical 128=⽿耳:耳耴䎲𦔮耵𦔯-𦔶𫆀𫟉耶耷𦔷-𦔻𬚒𬚓𮋬𮋭𰭳𱻷耸-è‚䎳䎴𦔼-ð¦•ð«†ð®‹®ð°­´-𰭷𱻸èƒ-è䎵䎶ð¦•-𦕟𬚔-𬚖𮋯𰭸-ð°­ºèŽ-è”è äŽ·ð¦• -𦕢𦕤-𦕴𫆂𫆃𬚗-𬚙𱻹𱻺è•-è˜äŽ¸äŽ¹ð¦•£ð¦•µ-𦖇𦖗𫆄-𫆆𬚚-ð¬šð®‹°-𮋲è™-èŸè¡-è£é¿¢äŽº-䎾𦖈-𦖖𦖘-𦖡𫆇𫆈𬚞-𬚠𮋳-𮋵𱻻𱻼è¤-è«é¿£äŽ¿ä€ð¥§¢ð¦–¢-𦖻𦗇𫆉𬚡𬚢𮋶-𮋸𱻽𱻾è¬è­ä-äƒð¦–¼-𦗆𦗈-ð¦—𫆊-ð«†ð¬š£-𬚥𮋹è¯-è³ä„-ä‡ð¦—-𦗞𫆎ð«†ð®‹ºè®è´-è·é¿¤äˆð¦—Ÿ-𦗲ð«†ð«†‘𬚦𬚧𮋻𰭻è¸ð¦—³-𦗽𫆒è¹-è¼ä‰ð¦—¾-𦘄𬚨𮋼𮋽𦘅-𦘉𮋾𮋿è½è¾äŠð¦˜Š-ð¦˜ð®Œ€ð¦˜ð¦˜‘𫆓𬚩]
+[radical 128=⽿耳:耳耴䎲𦔮耵𦔯-𦔶𫆀𫟉耶耷𦔷-𦔻𬚒𬚓𮋬𮋭𰭳𱻷耸-è‚䎳䎴𦔼-ð¦•ð«†ð®‹®ð®¶ð°­´-𰭷𱻸èƒ-è䎵䎶ð¦•-𦕟𬚔-𬚖𮋯ð®¶ð®¶‘ð°­¸-ð°­ºèŽ-è”è äŽ·ð¦• -𦕢𦕤-𦕴𫆂𫆃𬚗-𬚙𮶒𮶓𱻹𱻺è•-è˜äŽ¸äŽ¹ð¦•£ð¦•µ-𦖇𦖗𫆄-𫆆𬚚-ð¬šð®‹°-𮋲è™-èŸè¡-è£é¿¢äŽº-䎾𦖈-𦖖𦖘-𦖡𫆇𫆈𬚞-𬚠𮋳-𮋵𱻻𱻼è¤-è«é¿£äŽ¿ä€ð¥§¢ð¦–¢-𦖻𦗇𫆉𬚡𬚢𮋶-𮋸𱻽𱻾è¬è­ä-äƒð¦–¼-𦗆𦗈-ð¦—𫆊-ð«†ð¬š£-𬚥𮋹è¯-è³ä„-ä‡ð¦—-𦗞𫆎ð«†ð®‹ºè®è´-è·é¿¤äˆð¦—Ÿ-𦗲ð«†ð«†‘𬚦𬚧𮋻𰭻è¸ð¦—³-𦗽𫆒è¹-è¼ä‰ð¦—¾-𦘄𬚨𮋼𮋽𦘅-𦘉𮋾𮋿è½è¾äŠð¦˜Š-ð¦˜ð®Œ€ð¦˜ð¦˜‘𫆓𬚩]
[radical 129=â¾€è¿:è¿è‚€ð¦˜’ð®Œð°­¼ð¦˜“𬚪𮌂𦘔𮌃è‚-肃𦘕-𦘗𰭽𦘘-𦘚肄-肆ä‹ð¦˜›ð¦˜œð«†”𬚫𮌄𱻿肇肈ð¦˜-𦘟𫆕𦘠-𦘢𬚬𮌅𮌆𦘣𬚭𬚮𦘤-𦘨]
-[radical 130=â¾è‚‰:肉𮌇𱼀肊𰭾肋-è‚äŒä𦘩-𦘳𰭿-ð°®‚ð±¼è‚-è‚ äŽä𦘴-𦘾𬚯𮌈-𮌊𰮃-𰮆𱼂股-èƒä-ä𦘿-𦙖𦙘-𦙩𫆖-𫆘𬚰-𬚳𮌋𰮇-𰮑𱼃朑胂-胬脉äž-ä¥ð¡‹œð£¨ð¦™ª-𦚜𫆙-𫆜𬚴-𬚶𮌌-ð®Œð°®’-𰮜𱼄胭-脈脊-è„”ä¦-ä®ð£¯ð£°ð¦š-𦚸𦚺-𦛓ð«†ð«†žð¬š·-𬚺ð®Œ-𮌓ð°®-𰮤𱼅-𱼈脕-脸ä¯-ä»ð¦›”-𦜅𫆟-𫆡𬚻-ð¬›ð®Œ”-𮌙𰮥-𰮪𱼉-𱼌脹-腚㬹ä¼-äŒð¦œ†-𦜲𦜴-ð¦™ð«†¢-𫆥𬛂-𬛇𮌚-𮌠𰮫-ð°®´å¹æœ¡è…›-è…¾ä-ä›ð¦š-𦞘𦟓𦟔𫆦-𫆨𬛈-𬛋𮌡-𮌥𰮵-𰯀ð±¼-ð±¼’è…¿-膑äœ-äªð¦ž™-𦟒𦟕-𦟗𫆩-𫆮𫟊𬛌-𬛎𮌦-𮌰ð°¯-𰯋𱼓膒-膣ä«-ä´ð¦Ÿ˜-𦠂𫆯-𫆴ð¬›-𬛓𮌱-𮌹𰯌-𰯓𱼔-𱼙朥膥-膶äµ-ä½ð¦ ƒ-𦠽𦡄𦡮𫆵-𫆸𫜶𬛔-𬛘𮌺-𮌿𰯔-ð°¯ð±¼š-𱼜膷-臌ä¾-ä‘𦠾-𦡃𦡅-ð¦¡ð¦¡-𦡕𦡘-𦡭𦡯𫆹-𫆻𬛙-𬛛ð®€ð®ð°¯ž-ð°¯ ð±¼-𱼟è‡-臓䑂-䑅𤑃𦡎𦡰-𦢉𫆼𫆽𬛜ð¬›ð®‚-ð®†ð°¯¡-𰯣𱼠𱼡臔臕臗臘䑆-䑈𦢊-𦢤𫆾𫆿ð®‡-ð®‰ð°¯¤-𰯧𱼢𱼣臖臙-臜䑉䑊𦢥-𦢷𫇀𬛞ð®Šð°¯¨-𰯪𱼤è‡ã”®ä‘‹-䑎𦢸-𦢾ð«‡ð¬›Ÿð±¼¥è‡žè‡Ÿä‘𦢿-𦣅𫇂𰯫臠-臢ð¤“𦣆-ð¦£ð¬› ð¦£‘-𦣕𬛡ð®‹ð±¼¦ð¦£–𦣗𦣙𰯬𦣘𦣚-𦣜𰯭𫇄]
+[radical 130=â¾è‚‰:肉𮌇𱼀肊𰭾肋-è‚äŒä𦘩-𦘳𰭿-ð°®‚ð±¼è‚-è‚ äŽä𦘴-𦘾𬚯𮌈-𮌊𰮃-𰮆𱼂股-èƒä-ä𦘿-𦙖𦙘-𦙩𫆖-𫆘𬚰-𬚳𮌋𮶔𮶕𰮇-𰮑𱼃朑胂-胬脉äž-ä¥ð¡‹œð£¨ð¦™ª-𦚜𫆙-𫆜𬚴-𬚶𮌌-ð®Œð°®’-𰮜𱼄胭-脈脊-è„”ä¦-ä®ð£¯ð£°ð¦š-𦚸𦚺-𦛓ð«†ð«†žð¬š·-𬚺ð®Œ-𮌓ð°®-𰮤𱼅-𱼈脕-脸ä¯-ä»ð¦›”-𦜅𫆟-𫆡𬚻-ð¬›ð®Œ”-𮌙𰮥-𰮪𱼉-𱼌脹-腚㬹ä¼-äŒð¦œ†-𦜲𦜴-ð¦™ð«†¢-𫆥𬛂-𬛇𮌚-𮌠𰮫-ð°®´å¹æœ¡è…›-è…¾ä-ä›ð¦š-𦞘𦟓𦟔𫆦-𫆨𬛈-𬛋𮌡-𮌥𰮵-𰯀ð±¼-ð±¼’è…¿-膑äœ-äªð¦ž™-𦟒𦟕-𦟗𫆩-𫆮𫟊𬛌-𬛎𮌦-𮌰ð°¯-𰯋𱼓膒-膣ä«-ä´ð¦Ÿ˜-𦠂𫆯-𫆴ð¬›-𬛓𮌱-𮌹𰯌-𰯓𱼔-𱼙朥膥-膶äµ-ä½ð¦ ƒ-𦠽𦡄𦡮𫆵-𫆸𫜶𬛔-𬛘𮌺-𮌿𰯔-ð°¯ð±¼š-𱼜膷-臌ä¾-ä‘𦠾-𦡃𦡅-ð¦¡ð¦¡-𦡕𦡘-𦡭𦡯𫆹-𫆻𬛙-𬛛ð®€ð®ð°¯ž-ð°¯ ð±¼-𱼟è‡-臓䑂-䑅𤑃𦡎𦡰-𦢉𫆼𫆽𬛜ð¬›ð®‚-ð®†ð°¯¡-𰯣𱼠𱼡臔臕臗臘䑆-䑈𦢊-𦢤𫆾𫆿ð®‡-ð®‰ð°¯¤-𰯧𱼢𱼣臖臙-臜䑉䑊𦢥-𦢷𫇀𬛞ð®Šð°¯¨-𰯪𱼤è‡ã”®ä‘‹-䑎𦢸-𦢾ð«‡ð¬›Ÿð±¼¥è‡žè‡Ÿä‘𦢿-𦣅𫇂𰯫臠-臢ð¤“𦣆-ð¦£ð¬› ð¦£‘-𦣕𬛡ð®‹ð±¼¦ð¦£–𦣗𦣙𰯬𦣘𦣚-𦣜𰯭𫇄]
[radical 131=⾂臣:臣𦣞ð®Œð¦£ð±¼§è‡¤è‡¥ð®ð¦£Ÿð°¯®ð¦£ -𦣣𫇅𬛢𬛣𰯯ä‘𦣤𦣥𬛤ð®Žð®ð°¯°è‡¦ð¦£¦-𦣩𫇆𬛥𰯱𫇇𬛦臧𦣫𦣬𦣮𫇈ð®-ð®’𰯲𰯳𦣭𦣯𬛧𬛨𦣪ð®“臨臩𦣰𦣱𬛩䑑𦣲𦣳𫇉𦣴𦣵𬛪𦣶𬛫𦣷𦣸]
-[radical 132=⾃自:自𦣹臫𦣺-𦤀𰯴臬臭ð¦¤-𦤋ð®”ð®•ð¦¤Œ-ð¦¤ð¬›¬ð®–-ð®˜ð°¯µè‡®-臰ð¦¤-𦤓𫇊ð®™ð°¯¶ð¦¤”ð®šð®›ð¦¤•-𦤗𬛭ð®œð±¼¨è‡±ð¦¤˜-ð¦¤ð«‡‹è‡²ð¦¤ž-𦤤𬛮𦤥𫇌𦤦-𦤪𬛯𰯷𦤫-𦤮𬛰ð®ð®žð¦¤¯-𦤱ð®Ÿð«‡ð¦¤²]
+[radical 132=⾃自:自𦣹臫𦣺-𦤀𰯴臬臭ð¦¤-𦤋ð®”ð®•ð®¶–𦤌-ð¦¤ð¬›¬ð®–-ð®˜ð°¯µè‡®-臰ð¦¤-𦤓𫇊ð®™ð°¯¶ð¦¤”ð®šð®›ð¦¤•-𦤗𬛭ð®œð±¼¨è‡±ð¦¤˜-ð¦¤ð«‡‹è‡²ð¦¤ž-𦤤𬛮𦤥𫇌𦤦-𦤪𬛯𰯷𦤫-𦤮𬛰ð®ð®žð¦¤¯-𦤱ð®Ÿð«‡ð¦¤²]
[radical 133=⾄至:至𦤳𦤴𱼩𦤵𬛱致䑒𦤶-𦤺𬛲ð® ð®¡ð¦¤»-𦤾𱼪臵-臸𦤿𦥀𬛳ð®¢ð±¼«è‡¹ä‘“ð¦¥ð«‡Žð±¼¬è‡ºð¦¥‚-𦥄ð«‡ð«‡ð®£ð¦¥…-𦥇臻𦥉-ð¦¥ð¬›´ð¬›µð¦¥Ž-ð¦¥ð«‡‘𬛶ð®¤ð¬›·]
-[radical 134=⾅臼:臼𦥑-𦥔臽臾𦥕𦥖𦥙ð®¥è‡¿ð¦¥—𦥘𦥚-𦥜𦥧𬛸𬛹𱼭舀èˆä‘”ð¦¥-𦥤ð®¦ð®§èˆ‚䑕𦥥𦥦𦥨-𦥬舃舄𦥭-𦥲𫟋ð®¨-ð®¬ð±¼®ð±¼¯èˆ…𦥳-𦥺𬛺ð®­ð®®èˆ‡ä‘–𦥻-𦦄ð®¯ð°¯¸ð°¯¹ð±¼°èˆˆä‘—𦦅-𦦎𬛻ð®°ð®±ð°¯ºèˆ†èˆ‰ä‘˜ð¦¦-𦦓𦦕-𦦗𬛼𦦘-𦦠𬛽舊𦦡-𦦧𫇒𬛾𰯻舋𠤫𦦩-𦦬𦦯𬛿𬜀𦦭𦦮𦦰-𦦹𰯼𦦺𦦻ð¬œð±¼±ð¤“Ÿð¦¦¼ð¬œ‚𦦽-𦦿ð®²ð¦§€ð«‡“𬜃ð¦§ð¦§‚ð®³ð¬œ„𦧃𱼲𦧄𦧅𠔻]
+[radical 134=⾅臼:臼𦥑-𦥔臽臾𦥕𦥖𦥙ð®¥è‡¿ð¦¥—𦥘𦥚-𦥜𬛸𬛹𱼭舀èˆä‘”ð¦¥-𦥤𦥧ð®¦ð®§èˆ‚䑕𦥥𦥦𦥨-𦥬舃舄𦥭-𦥲𫟋ð®¨-ð®¬ð±¼®ð±¼¯èˆ…𦥳-𦥺𬛺ð®­ð®®èˆ‡ä‘–𦥻-𦦄ð®¯ð°¯¸ð°¯¹ð±¼°èˆˆä‘—𦦅-𦦎𬛻ð®°ð®±ð°¯ºèˆ†èˆ‰ä‘˜ð¦¦-𦦓𦦕-𦦗𬛼𦦘-𦦠𬛽舊𦦡-𦦧𫇒𬛾𰯻舋𠤫𦦩-𦦬𦦯𬛿𬜀𦦭𦦮𦦰-𦦹𰯼𦦺𦦻ð¬œð±¼±ð¤“Ÿð¦¦¼ð¬œ‚𦦽-𦦿ð®²ð¦§€ð«‡“𬜃ð¦§ð¦§‚ð®³ð¬œ„𦧃𱼲𦧄𦧅𠔻]
[radical 135=⾆舌:舌𦧆èˆ-èˆð«‡”𦧇ð®´ð®µèˆä‘™ä‘šð¦§ˆ-ð¦§èˆ‘䑛𦧑-𦧔𬜅𬜆ð®¶ð®·ð°¯½-𰯿舒𦧕-𦧜𰰀ð¦§ð¦§žð«‡•ð«‡–𬜇ð®¸ð°°-𰰅𱼳舓-舕𦧟-𦧦𬜈ð®¹ð°°†èˆ–舗䑜𦧧-𦧬𬜉-𬜌ð®º-ð®¾ð°°‡èˆ˜ð¦§­-𦧰𫇗ð®¿ð¦§±-𦧳ð¬œð°°ˆèˆ™ð¦§´-𦧶𬜎𰰉舚𦧷𫇘ð¬œð¬œð¦§¸ð¦§¹ð±¼´ð¦§ºð«‡™ð¦§»ð¦§¼ð®Ž€ð¦§½]
[radical 136=⾇舛:舛ð®Žð°°Šèˆœ-舞ä‘𦧾𦧿䑞𦨀ð¦¨ä‘Ÿð¦¨ƒð¦¨‚𱼵𦨄𦨅𮎂𦨆]
-[radical 137=⾈舟:舟𠂨𦨇舠䑠𦨈-ð¦¨ð¬œ‘舡-舤䑡-䑣𦨎-𦨔𫇚𬜒𱼶舥-舱䑤䑥𦨕-𦨠𮎃𮎄𰰋𱼷𱼸舲-舻䑦-䑩𦨡-𦨮𮎅-𮎊𰰌舼-舿䑪-䑮𦨯-𦨲𦨴-𦨼𬜓𮎋𮎌𱼹𱼺艀-艉䑯䑰𦨳𦨽-𦩉𬜔ð®Ž-𮎑ð°°è‰Š-è‰ä‘±-䑸𦩊-𦩜𨦞𫇛𬜕𬜖𮎒𮎓𰰎𱼻艎-艔䑹-ä‘»ð¦©-𦩳𦩿𫇜ð«‡ð¬œ—ð°°-𰰑艕-艙䑼-䑾𦩴-𦩾𦪀-𦪅𬜘-𬜚𰰒𱼼-𱼾艚-è‰ä‘¿-䒅𦪆-ð¦ªð«‡žð¬œ›ð®Ž”𱼿-ð±½è‰ž-艠䒆-䒈𦪑-𦪧𫇟𰰓𱽂艡-艥𦪨-𦪰𱽃艦-艩䒉𦪱-𦪵𫇠𱽄艪𦪶-𦪸𦪺-𦪼𬜜𮎕艫𦪽-𦫂𫇡-𫇣𮎖𮎗艬𦫃𦫄𱽅艭𱽆𦫅-𦫇𦫉𦫈𦫊]
+[radical 137=⾈舟:舟𠂨𦨇舠䑠𦨈-ð¦¨ð¬œ‘舡-舤䑡-䑣𦨎-𦨔𫇚𬜒𮶗𱼶舥-舱䑤䑥𦨕-𦨠𮎃𮎄𮶘𰰋𱼷𱼸舲-舻䑦-䑩𦨡-𦨮𮎅-𮎊𰰌舼-舿䑪-䑮𦨯-𦨲𦨴-𦨼𬜓𮎋𮎌𱼹𱼺艀-艉䑯䑰𦨳𦨽-𦩉𬜔ð®Ž-𮎑ð°°è‰Š-è‰ä‘±-䑸𦩊-𦩜𨦞𫇛𬜕𬜖𮎒𮎓𰰎𱼻艎-艔䑹-ä‘»ð¦©-𦩳𦩿𫇜ð«‡ð¬œ—ð°°-𰰑艕-艙䑼-䑾𦩴-𦩾𦪀-𦪅𬜘-𬜚𮶙𰰒𱼼-𱼾艚-è‰ä‘¿-䒅𦪆-ð¦ªð«‡žð¬œ›ð®Ž”𱼿-ð±½è‰ž-艠䒆-䒈𦪑-𦪧𫇟𮶚𰰓𱽂艡-艥𦪨-𦪰𱽃艦-艩䒉𦪱-𦪵𫇠𱽄艪𦪶-𦪸𦪺-𦪼𬜜𮎕艫𦪽-𦫂𫇡-𫇣𮎖𮎗艬𦫃𦫄𱽅艭𱽆𦫅-𦫇𦫉𦫈𦫊]
[radical 138=⾉艮:艮-艰𦫋𰰔𱽇𱽈𦫌-ð¦«ð®Ž˜ð®Ž™ð¦«è‰±ð¦«‘𮎚𦫒鿥]
[radical 139=⾊色:色𮎛𮎜𰰕䒊𦫓艳艴䒋𦫔-𦫙𰰖𰰗𦫚ð¬œð±½‰ð¦«›-ð¦«ð°°˜è‰µð¦«ž-𦫣𬜞𰰙𦫤-𦫩ð®Žä’Œä’𦫪-𦫮𫇤𰰚䒎ä’𰰛艶𦫯-𦫱𮎞ä’艷𦫲𬜟𱽊]
-[radical 140=⾋艸:艸艹䒑艺龷𦫳-𦫵艻-节䒒-䒔𦫶-𦬀𫇥𫇦𬜠𰰜-𰰟芃-芗䒕-ä’™ð¦¬-𦬒𫇧𫇨𬜡𬜢𰰠-𰰢𱽋芘-芾苀-è‹èŒ¾ä’š-䒥𦬓-𦬶𫇩-𫇭𬜣-𬜥𮎟-𮎣𰰣-𰰪𱽌-ð±½èŠ¿è‹-茑茓-茕䒦-䒯𦬷-𦭬𫇮-𫇵𫟌ð«Ÿð¬œ¦ð¬œ§ð®Ž¤-𮎦𰰫-𰰱𱽑-𱽚茒茖-茜茞-茢茤-茽茿-è’è”-è¯é¿’ä’°-ä“𦭭-𦮵𫇶-𫇾𫟎𬜨-𬜮𮎧-𮎸𰰲-𰰽𱽛-𱽧èŒèŒ£è°-莬莮-莽鿊䓂-䓔䓖𦮶-𦯰𦯲-𦰕𦰗-𦰩𫇿-ð«ˆð«Ÿ-𫟑𬜯-𬜺𮎹-ð®ð°°¾-𰱎𱽨-𱽬è“莾-è¨è‘—龿䓕䓗-䓭𦯱𦰖𦰪-𦳀ð«ˆ-𫈠𬜻-ð¬‹ð®-ð®¢ð°±-𰱜𱽭-𱽲莭è©-è«è­-葖葘-è’é¿“ä“®-ä“»ð¦³-𦴵𦴷-𦵆𦵈-𦵠𫈡-𫈵𫟒𫟓ð¬Œ-ð¬™ð®£-ð®‚ð°±-𰱪𱽳-𱽿è’-è’·è’¹-蓤蓦䓼-ä”𤎀𦵇𦵡-𦷾𫈶-𫉇𫟔ð¬š-ð¬³ð®ƒ-ð® ð°±«-𰱱𱾀-ð±¾è“¥è“§-蔼䔎-䔬𦷿-𦸼𦸾-𦺄𫉈-𫉜𫟕ð¬´-ð¬žð®¡-ð®¸ð°±²-𰱵𱾎-𱾚蔽-蕵䔭-䕄𦸽𦺆-𦻆𦻈-𦻽𦻿-𦼧𦽭ð«‰-𫉤𫟖𬞎-𬞙ð®¹-𮑙𰱶-𰱼𱾛-𱾣蕶-薨薪-薬薮龩﨟䕅-䕑𦻾𦼨-𦽬𦽮-𦾩𦿡𦿸𫉥-𫉴𬞚-𬞬𮑚-𮑻𰱽-𰲇𱾤-𱾫薩薭薯-藓蘤䕒-ä•ð¦¾ª-𦿓𦿖-𦿜𦿞-𦿠𦿢-𦿷𦿹-𧀟𫉵-𫊄𬞭-𬞾𬟃𮑼-𮒖𰲈𰲉𱾬-𱾲藔-è—­è—¯-藵䕞-䕥𦿔𦿕ð¦¿ð§€ -ð§ºð§ƒŒð«Š…-𫊋𬞿-𬟂𬟄-ð¬Ÿð®’—-𮒨𰲊-ð°²ð±¾³-𱾹藮藶-蘑蘓蘔蘢䕦-䕲ð§»-𧃋𧃎𫊌-ð«Šð¬ŸŽ-𬟕𮒩-𮒷𰲑-𰲓𱾺-𱾼蘒蘕-蘡蘣蘥-蘰䕳-ä•·ð§ƒð§ƒ-𧄌ð«Š-𫊓𬟖-𬟛𮒸-𮓃𰲔𰲕𱾽-ð±¿è˜²-蘷鿀鿦䕸-䕺ð§„-𧄵𫊔-𫊖𬟜-𬟟𮓄-ð®“𰲖𱿂-𱿆蘱蘸-è™ä•»-䕽𧄶-𧅕𫊗𬟠-𬟤𮓎-𮓒𱿇𱿈虂-虅䕾𧅖-𧅭𫊘-𫊚𬟥𮓓虆-虉䕿䖀𧅮-𧅴𧅶-𧅹𬟦𮓔𮓕𱿉𱿊ä–𧅺-𧆅𫊛𫊜𮓖𰲗𱿋𱿌虊䖂-䖄𧆇-𧆎䖅䖆𧅵ð§†-𧆒ð±¿è™‹è™Œð§†”𧆕𦺅𧆖𧆚𧆗䖇𧆙𧆓𧆘]
-[radical 141=⾌è™:è™ð®“—虎è™ä–ˆð§†›ð®“˜-𮓚彪è™ä–‰ð§†œ-𧆞ð«Šð«Šžð¬Ÿ§ð®“›ð®“œè™‘虓虔䖊-ä–𧆟-𧆢𫊟𬟨𬟩ð®“-𮓠𰲘-𰲚𱿎處-虚䖎ä–𧆣-𧆰𮓡𰲛-ð°²è™›-è™ä–䖑𧆱-𧆹𫊠𫊡𬟪𮓢-𮓤𰲞𰲟ð±¿ð±¿è™žè™Ÿä–’-䖖𧆺-𧇀𬟫-𬟭𮓥𮓦𰲠-𰲣虠虡ð§‡-𧇎𫊢𰲤-𰲦虢虣䖗ð§‡-𧇛𮓧𮓨𰲧𱿑-𱿓虤-虦䖘𧇜-𧇰𬟮-𬟰𮓩𮓪𱿔虧虨䖙𧇱-𧇺𫊣𮓫𮓬虩䖚䖛𧇻-ð§ˆð§ˆƒð§ˆ„𬟱𮓭𱿕䖜𧈂𧈅-𧈊𬟲𮓮𧈋-ð§ˆð®“¯ð§ˆ‘-𧈗𰲨𱿖𧈘-𧈛𬟳𱿗虪𧈜]
-[radical 142=â¾è™«:虫𮓰虬ä–ð§ˆð§ˆžð®“±è™­-虲𧈟-𧈧𫊤𮓲𰲩𱿘虳-蚃䖞-䖠𡯥𧈨-𧈺𫊥𫊦𬟴𬟵𮓳-𮓷𰲪𱿙蚄-蚇蚉-蚪蚬䖡-䖣𧈻-ð§‰ð«Š§-𫊫𬟶-𬟻𮓸-𮓼𰲫-𰲲𱿚-𱿜蚫蚭-è›ï¨¡ä–¤-䖬𧉞-𧊎𫊬-𫊲𬟼-ð¬ ð®“½-𮔀𰲳-ð°²·ð±¿ð±¿žèšˆè›-蛕蛗-è›´ä–­-ä–µð§Š-𧊪𧊬𧊭𧊯-𧋇𫊳-𫊼𬠂-𬠇ð®”-𮔈𰲸𰲹𱿟-𱿡蛖蛵-蜗蜫è†ä–¶-䖾𧊫𧊮𧋈-ð§‹ð§‹Ÿ-𧌂𧌞𫊽-ð«‹ð¬ ˆ-ð¬ ð®”‰-𮔖𰲺-𰲾𱿢-𱿧蜘-蜪蜬-è…è‡-è‹ä–¿-䗊䗕𧋞𧌃-ð§Œð§ŒŸ-𧌯𧌱-ð§‘ð«‹‚-𫋉𬠎-𬠚𮔗-ð®”𰲿-𰳉𱿨-𱿮èŒ-è¸èº-螀蟡䗋-䗔䗖𧌰ð§’-𧎠ð§‡ð«‹Š-𫋎𬠛-𬠞𮔞-𮔧𰳊-ð°³ð±¿¯-𱿻è¹èž-螩蟗䗗-䗞𧎡-ð§†ð§ˆ-ð§·ð«‹-𫋕𬠟-𬠤𮔨-𮔲𰳎-𰳕𱿼-𲀀螪-蟒è ä—Ÿ-䗮𢋜ð§¸-ð§¯ð§±-𧑃𫋖-𫋙𬠥-𬠨𮔳-𮔺𰳖-𰳚ð²€-𲀇蟓-蟖蟘-蟠蟢-蟵蠎䗯-䗳𧑄-ð§’ð«‹š-𫋞𬠩-𬠮𮔻-ð®•ð°³›ð°³œð²€ˆ-𲀋蟶-蠀蠂-è è ä—´-䗻𧒎-𧓈𫋟-𫋢𬠯-𬠱𮕂-𮕇ð°³-𰳠𲀌è -蠙䗼-ä˜ð§“‰-𧓰𫋣-𫋥𫟗𬠲-𬠷𮕈-𮕋𰳡-ð°³£ð²€ð²€Žè š-蠤蠴䘂-䘄𧓱-𧔜𫋦𫋧𬠸𮕌-𮕑𰳤ð²€ð²€è ¥-蠬䘅-䘉ð§”-𧕂𫋨𬠹𮕒𰳥𲀑蠭-蠳䘊-䘌𧕃-𧕒𧕔-𧕚𮕓-𮕖𲀒蠵-蠺𧕓𧕛-𧕮𬠺𮕗𰳦𲀓𲀔蠻ä˜ð§•¯-𧕼𬠻𮕘𮕙𲀕蠼𧕽-𧖃𧖊𮕚𲀖蠽蠾𧖄-𧖉𧖋-ð§–蠿䘎𧖑-𧖗𮕛𠑴𧖘-𧖛𫋩𧖜-𧖟𧖡-𧖦]
+[radical 140=⾋艸:艸艹䒑艺龷𦫳-𦫵艻-节䒒-䒔𦫶-𦬀𫇥𫇦𬜠𮶛𰰜-𰰟芃-芗䒕-ä’™ð¦¬-𦬒𫇧𫇨𬜡𬜢𮶜-𮶞𰰠-𰰢𱽋芘-芾苀-è‹èŒ¾ä’š-䒥𦬓-𦬶𫇩-𫇭𬜣-𬜥𮎟-𮎣𰰣-𰰪𱽌-ð±½èŠ¿è‹-茑茓-茕䒦-䒯𦬷-𦭬𫇮-𫇵𫟌ð«Ÿð¬œ¦ð¬œ§ð®Ž¤-𮎦𮶟-𮶡𰰫-𰰱𱽑-𱽚茒茖-茜茞-茢茤-茽茿-è’è”-èªè¬-è¯é¿’ä’°-ä“𦭭-𦮵𫇶-𫇾𫟎𬜨-𬜮𮎧-𮎸𰰲-𰰽𱽛-𱽧èŒèŒ£è«è°-莬莮-莽鿊䓂-䓔䓖𦮶-𦯰𦯲-𦰕𦰗-𦰩𫇿-ð«ˆð«Ÿ-𫟑𬜯-𬜺𮎹-ð®ð®¶¢-𮶥𰰾-𰱎𱽨-𱽬è“莾-è¨è‘—龿䓕䓗-䓭𦯱𦰖𦰪-𦳀ð«ˆ-𫈠𬜻-ð¬‹ð®-ð®¢ð®¶¦-𮶨ð°±-𰱜𱽭-𱽲莭è©-è«è­-葖葘-è’é¿“ä“®-䓰䓲-ä“»ð¦³-𦴵𦴷-𦵆𦵈-𦵠𫈡-𫈵𫟒𫟓ð¬Œ-ð¬™ð®£-ð®‚𮶩-𮶫ð°±-𰱪𱽳-𱽿è’-è’·è’¹-蓦䓱䓼-ä”𤎀𦵇𦵡-𦷾𫈶-𫉇𫟔ð¬š-ð¬³ð®ƒ-ð® ð®¶¬ð®¶­ð°±«-𰱱𱾀-ð±¾è“§-蔼䔎-䔜䔞-䔬䕄𦷿-𦸼𦸾-𦺄𫉈-𫉜𫟕ð¬´-ð¬žð®¡-ð®¸ð®¶®-𮶳𰱲-𰱵𱾎-𱾚蔽-蕵ä”ä”­-䔻䔽-ä•ä•ƒä•…𦸽𦺆-𦻆𦻈-𦻽𦻿-𦼧𦽭ð«‰-𫉤𫟖𬞎-𬞙ð®¹-𮑙𮶴𮶵𰱶-𰱼𱾛-𱾣蕶-薨薪-薬薮龩﨟䕂䕆-䕑𦻾𦼨-𦽬𦽮-𦾩𦿡𦿸𫉥-𫉴𬞚-𬞬𮑚-𮑻𮶶𰱽-𰲇𱾤-𱾫薩薭薯-藓蘤䔼䕒-ä•ð¦¾ª-𦿓𦿖-𦿜𦿞-𦿠𦿢-𦿷𦿹-𧀟𫉵-𫊄𬞭-𬞾𬟃𮑼-𮒖𮶷𰲈𰲉𱾬-𱾲藔-è—­è—¯-藵䕞䕟䕡-䕥𦿔𦿕ð¦¿ð§€ -ð§ºð§ƒŒð«Š…-𫊋𬞿-𬟂𬟄-ð¬Ÿð®’—-𮒨𮶸𮶹𰲊-ð°²ð±¾³-𱾹藮藶-蘑蘓蘔蘢䕠䕦-䕲ð§»-𧃋𧃎𫊌-ð«Šð¬ŸŽ-𬟕𮒩-𮒷𰲑-𰲓𱾺-𱾼蘒蘕-蘡蘣蘥-蘰䕳-ä•·ð§ƒð§ƒ-𧄌ð«Š-𫊓𬟖-𬟛𮒸-𮓃𰲔𰲕𱾽-ð±¿è˜²-蘷鿀鿦䕸-䕺ð§„-𧄵𫊔-𫊖𬟜-𬟟𮓄-ð®“𰲖𱿂-𱿆蘱蘸-è™ä•»ä•¼ð§„¶-𧅕𫊗𬟠-𬟤𮓎-𮓒𱿇𱿈虂-虅䕽䕾𧅖-𧅭𫊘-𫊚𬟥𮓓虆-虉䖀𧅮-𧅴𧅶-𧅹𬟦𮓔𮓕𱿉𱿊䕿ä–𧅺-𧆅𫊛𫊜𮓖𰲗𱿋𱿌虊䖂-䖄𧆇-𧆎䖅䖆𧅵ð§†-𧆒ð±¿è™‹è™Œð§†”𧆕𦺅𧆖𧆚𧆗䖇𧆙𧆓𧆘]
+[radical 141=⾌è™:è™ð®“—虎è™ä–ˆð§†›ð®“˜-𮓚è™ä–‰ð§†œ-𧆞ð«Šð«Šžð¬Ÿ§ð®“›ð®“œè™‘虓虔䖊-ä–𧆟-𧆢𫊟𬟨𬟩ð®“-𮓠𰲘-𰲚𱿎彪處-虚䖎ä–𧆣-𧆰𮓡𮶺𰲛-ð°²è™›-è™ä–䖑𧆱-𧆹𫊠𫊡𬟪𮓢-𮓤𰲞𰲟ð±¿ð±¿è™žè™Ÿä–’-䖖𧆺-𧇀𬟫-𬟭𮓥𮓦𰲠-𰲣虠虡ð§‡-𧇎𫊢𰲤-𰲦虢虣䖗ð§‡-𧇛𮓧𮓨𰲧𱿑-𱿓虤-虦䖘𧇜-𧇰𬟮-𬟰𮓩𮓪𱿔虧虨䖙𧇱-𧇺𫊣𮓫𮓬虩䖚䖛𧇻-ð§ˆð§ˆƒð§ˆ„𬟱𮓭𱿕䖜𧈂𧈅-𧈊𬟲𮓮𧈋-ð§ˆð®“¯ð§ˆ‘-𧈗𰲨𱿖𧈘-𧈛𬟳𱿗虪𧈜]
+[radical 142=â¾è™«:虫𮓰虬ä–ð§ˆð§ˆžð®“±è™­-虲𧈟-𧈧𫊤𮓲𰲩𱿘虳-蚃䖞-䖠𡯥𧈨-𧈺𫊥𫊦𬟴𬟵𮓳-𮓷𮶻𰲪𱿙蚄-蚇蚉-蚪蚬䖡-䖣𧈻-ð§‰ð«Š§-𫊫𬟶-𬟻𮓸-𮓼𰲫-𰲲𱿚-𱿜蚫蚭-è›ï¨¡ä–¤-䖬𧉞-𧊎𫊬-𫊲𬟼-ð¬ ð®“½-𮔀𮶼𮶽𰲳-ð°²·ð±¿ð±¿žèšˆè›-蛕蛗-è›´ä–­-ä–µð§Š-𧊪𧊬𧊭𧊯-𧋇𫊳-𫊼𬠂-𬠇ð®”-𮔈𰲸𰲹𱿟-𱿡蛖蛵-蜗蜫è†ä–¶-䖾𧊫𧊮𧋈-ð§‹ð§‹Ÿ-𧌂𧌞𫊽-ð«‹ð¬ ˆ-ð¬ ð®”‰-𮔖𮶾𰲺-𰲾𱿢-𱿧蜘-蜪蜬-è…è‡-è‹ä–¿-䗊䗕𧋞𧌃-ð§Œð§ŒŸ-𧌯𧌱-ð§ð§‘ð«‹‚-𫋉𬠎-𬠚𮔗-ð®”𰲿-𰳉𱿨-𱿮èŒ-è¸èº-螀蟡䗋-䗔䗖𧌰ð§’-𧎠ð§‡ð«‹Š-𫋎𬠛-𬠞𮔞-𮔧𰳊-ð°³ð±¿¯-𱿻è¹èž-èž©ä——-ä—žð§ð§Ž¡-ð§†ð§ˆ-ð§·ð«‹-𫋕𬠟-𬠤𮔨-𮔲𰳎-𰳕𱿼-𲀀螪-蟒䗟-䗮𢋜ð§¸-ð§¯ð§±-𧑃𫋖-𫋙𬠥-𬠨𮔳-𮔺𰳖-𰳚ð²€-𲀇蟓-蟠蟢-蟵è è Žä—¯-䗳𧑄-ð§’ð«‹š-𫋞𬠩-𬠮𮔻-ð®•ð°³›ð°³œð²€ˆ-𲀋蟶-蠀蠂-è è ä—´-䗻𧒎-𧓈𫋟-𫋢𬠯-𬠱𮕂-𮕇ð°³-𰳠𲀌è -蠙䗼-ä˜ð§“‰-𧓰𫋣-𫋥𫟗𬠲-𬠷𮕈-𮕋𰳡-ð°³£ð²€ð²€Žè š-蠤蠴䘂-䘄𧓱-𧔜𫋦𫋧𬠸𮕌-𮕑𰳤ð²€ð²€è ¥-蠬䘅-䘉ð§”-𧕂𫋨𬠹𮕒𰳥𲀑蠭-蠳䘊-䘌𧕃-𧕒𧕔-𧕚𮕓-𮕖𲀒蠵-蠺𧕓𧕛-𧕮𬠺𮕗𰳦𲀓𲀔蠻ä˜ð§•¯-𧕼𬠻𮕘𮕙𲀕蠼𧕽-𧖃𧖊𮕚𲀖蠽蠾𧖄-𧖉𧖋-ð§–蠿䘎𧖑-𧖗𮕛𠑴𧖘-𧖛𫋩𧖜-𧖟𧖡-𧖦]
[radical 143=⾎血:血𮕜𧖧-𧖩ð®•è¡è¡‚ä˜ð§–ªè¡ƒè¡„ä˜ð§–«-𧖯𫋪衅䘑𧖰-𧖲𫋫𮕞𮕟𰳧𲀗衆-衉𧖳𧖴𬠼𮕠𰳨䘒𧖵-𧖹𲀘䘓𧖺-𧖿𧗄䘔𧗀-𧗃𧗅𲀙𲀚𧗆-ð§—𫋬𰳩𧗎-𧗗衊𧗘𮕡𧗙-𧗛衋𧗜]
[radical 144=â¾è¡Œ:行𬠽ð§—-𧗠è¡è¡Žð§—¡-𧗥𮕢𲀛𲀜è¡ä˜•ð§—¦-𧗩𬠾𬠿ð²€è¡-衔𧗪𫋭衕-衘䘖𢔬𧗫-𧗱𫋮𰳪𲀞衙𧗲-𧗷𮕣𰳫-𰳭𧗸𧗺𧗻𰳮𲀟𲀠衚-è¡ð§—¹ð§—¼ð§—½ð«‹¯ð«Ÿ˜ð¬¡€è¡ž-衡䘗䘘𢖅𧗾𲀡𢖋𧗿-ð§˜ð«Ÿ™ð§˜‚𧘃𫋰𰳯𲀢𲀣𧘄䘙𢖡𧘅ð¬¡ð§˜†ð«‹±è¡¢]
-[radical 145=â¾è¡£:衣衤𧘇𮕤补䘚䘛𧘈-𧘌𬡂𮕥-𮕧𰳰𲀤𲀥衦-衬䘜-䘞ð§˜-𧘜𬡃-𬡇𮕨𲀦衭-袇䘟-䘡ð§˜-𧘼𫋲-𫋴𬡈-𬡊𮕩-𮕯𰳱𲀧袈-袮袰䘢-䘧𧘽𧘿-ð§™ð«‹µ-𫋷𬡋-ð¬¡ð®•°-𮕸𰳲-𰳸𲀨𲀩袯袱-裉䘨-䘮𧘾𧙞-𧙿𫋸-𫋼𬡑-𬡘𮕹-𮖀𰳹𰳺𲀪-𲀮裊-裥䘯-䘲𧚀-𧚣𫋽𫟚𬡙-ð¬¡ð®–-ð®–Žð°³»-𰴀𲀯-𲀳裧-褄䘳-䙂𧚤-𧚺𧚼-𧛎𫋾-𫌄𬡞-𬡤ð®–-ð®–“ð°´ð°´‚ð²€´-𲀷裦褅-è¤ä™ƒ-ä™ð§š»ð§›-𧛷𫌅𫌆𬡥𬡦𮖔-𮖠𲀸-𲀺褞-褲褴䙎-䙓𧛸-𧜜𧜨𫌇-𫌉𬡧-𬡩𮖡-ð®–©ð°´ƒ-ð°´…ð²€»-𲀾褳褵-襅襔䙔-ä™ð§œ-𧜧𧜩-𧜬𧜮-ð§ð«ŒŠ-ð«Œð¬¡ª-𬡭𮖪-𮖮𰴆-𰴈𲀿-ð²‚襆-襓襕鿋䙞-䙣𧜭ð§‚-ð§°ð«Œ-𫌒𬡮𬡯𮖯-ð®–¶ð²ƒð²„襖-襢䙤䙥ð§±-𧞌𫌓𫌔𬡰𬡱𮖷-ð®–ºð²…ð²†è¥£-襨䙦-䙩ð§ž-𧞖𧞘-𧞦𫌕𬡲-𬡴𮖻𮖼襩-襮䙪𧞗𧞧-𧞱𧞳-𧞵𫌖𬡵𬡶𮖽𮖾襯-襲䙫𧞲𧞶-𧟂𬡷𰴉襳襴襽䙬䙭𧟃-𧟇𫌗ð²‡ð²ˆè¥µ-襷䙮䙯𧟈-𧟋𫌘𫌙襸-襼䙰𧟌-ð§Ÿð°´Šð§Ÿ-𧟔䙱𧟕-𧟟]
+[radical 145=â¾è¡£:衣衤𧘇𮕤补䘚䘛𧘈-𧘌𬡂𮕥-𮕧𰳰𲀤𲀥衦-衬䘜-䘞ð§˜-𧘜𬡃-𬡇𮕨𲀦衭-袇䘟-䘡ð§˜-𧘼𫋲-𫋴𬡈-𬡊𮕩-𮕯𮶿𰳱𲀧袈-袮袰䘢-䘧𧘽𧘿-ð§™ð«‹µ-𫋷𬡋-ð¬¡ð®•°-𮕸𮷀𰳲-𰳸𲀨𲀩袯袱-裉䘨-䘮𧘾𧙞-𧙿𫋸-𫋼𬡑-𬡘𮕹-𮖀𰳹𰳺𲀪-𲀮裊-裥䘯-䘲𧚀-𧚣𫋽𫟚𬡙-ð¬¡ð®–-ð®–Žð®·ð°³»-𰴀𲀯-𲀳裧-褄䘳-䙂𧚤-𧚺𧚼-𧛎𫋾-𫌄𬡞-𬡤ð®–-ð®–“ð°´ð°´‚ð²€´-𲀷裦褅-è¤ä™ƒ-ä™ð§š»ð§›-𧛷𫌅𫌆𬡥𬡦𮖔-𮖠𮷂𲀸-𲀺褞-褲褴䙎-䙓𧛸-𧜜𧜨𫌇-𫌉𬡧-𬡩𮖡-ð®–©ð°´ƒ-ð°´…ð²€»-𲀾褳褵-襅襔䙔-ä™ð§œ-𧜧𧜩-𧜬𧜮-ð§ð«ŒŠ-ð«Œð¬¡ª-𬡭𮖪-𮖮𰴆-𰴈𲀿-ð²‚襆-襓襕鿋䙞-䙣𧜭ð§‚-ð§°ð«Œ-𫌒𬡮𬡯𮖯-ð®–¶ð²ƒð²„襖-襢䙤䙥ð§±-𧞌𫌓𫌔𬡰𬡱𮖷-ð®–ºð²…ð²†è¥£-襨䙦-䙩ð§ž-𧞖𧞘-𧞦𫌕𬡲-𬡴𮖻𮖼襩-襮䙪𧞗𧞧-𧞱𧞳-𧞵𫌖𬡵𬡶𮖽𮖾襯-襲䙫𧞲𧞶-𧟂𬡷𰴉襳襴襽䙬䙭𧟃-𧟇𫌗𮷃ð²‡ð²ˆè¥µ-襷䙮䙯𧟈-𧟋𫌘𫌙襸-襼䙰𧟌-ð§Ÿð°´Šð§Ÿ-𧟔䙱𧟕-𧟟]
[radical 146=⾑襾:襾-覀𧟠-𧟣è¦ä™²ð§Ÿ¤-𧟦䙳𧟧-𧟩𬡸ð²‰è¦‚䙴𧟪-𧟬𫌚𮖿𮗀覃覄䙵䙶𧟭𧟮𫟛ð®—-ð®—ƒð²Šè¦…𧟯𧟰𬡹ð²‹ð§Ÿ±-𧟸𬡺𮗄𰴋𧟹-𧟻𮗅𮗆𧟼-𧟾𫌛𰴌ð²Œð§Ÿ¿ð²è¦†ð§ €ð§ ð¬¡»è¦‡è¦ˆð§ ‚𮗇𧠃𮗈𧠄𮗉𮗊ð°´è¦‰ð®—‹è¦Šð§ …ð®—Œ]
[radical 147=⾒見:見𧠆𧠇覌覙𧠈è¦è¦Žä™·ä™¸ð§ ‰-ð§ ð«Œœè¦-覔䙹-䙻𧠎-𧠛𬡼ð®—覕覗覘覚䙼-䙿𧠜-𧠧ð«Œð¬¡½ð®—Žð°´Ž-ð°´è¦›è¦œäš€äšð§ ¨-𧠺𫌞ð®—-ð®—‘ð²Žè¦-覡䚂䚃𧠻-𧡊𫌟𫌠𮗒-𮗔𰴑覢-覥䚄䚅𧡋-𧡠𫌡𬡾-𬢀𮗕-𮗗𰴒覦-親䚆-䚉𧡡-𧡶𫌢𫌣𮗘覫-覯䚊-䚌𧡷-ð§¢ð¬¢ð®—™ð°´“覰-観äšäšŽð§¢‚-𧢋𫌤𬢂ð²è¦´-覸äš-䚓𧢌-𧢑𬢃𬢄𮗚-ð®—覹-覻𧢒-𧢗𫌥𮗞𰴔覼覽䚔𧢘-𧢛𬢅覾覿ð¥„𧢜-𧢡𫟜𬢆𧢢-𧢥觀𧢦-𧢫𫌦𫌧䚕𧢬ð²ð§¢­ð§¢®äš–𧢯-𧢱]
-[radical 147'=â»…è§:è§è§‚𬢇觃-觅ð²‘-ð²“觇-觉𫌨𫌩𬢈-𬢊𰴕𰴖ð²”觊𫌪𬢋ð¬¢ð²•ð²–觋𬢌𰴗-𰴙觌è§ð¬¢Žè§Žð«Œ«ð¬¢-𬢑𰴚ð²—ð²˜è§ð¬¢’ð°´›ð²™è§è§‘𫌬𬢓𰴜𬢔ð°´ð«Œ­ð°´ž]
+[radical 147'=â»…è§:è§è§‚𬢇觃-觅ð²‘-ð²“觇-觉𫌨𫌩𬢈-𬢊𰴕𰴖ð²”觊𫌪𬢋ð¬¢ð®·„ð²•ð²–觋𬢌𰴗-𰴙觌è§ð¬¢Žè§Žð«Œ«ð¬¢-𬢑𰴚ð²—ð²˜è§ð¬¢’ð°´›ð²™è§è§‘𫌬𬢓𰴜𬢔ð°´ð«Œ­ð°´ž]
[radical 148=⾓角:角𧢲𰴟𧢳𮗟𮗠觓觔𧢴-𧢶𰴠𧢷-𧢺𮗡𮗢𰴡觕-觙䚗𧢻-ð§£ð®—£-𮗨觚觛è§è§žð§£‘-𧣠𬢕𮗩𮗪𰴢𰴣ð²šð²›è§œè§Ÿ-觧䚘-䚚𧣡-𧣧𫌮𫌯𬢖𮗫-𮗯觨-觫䚛𧣨-𧣳𬢗𮗰-𮗲𰴤𰴥ð²œð²è§¬-觯䚜-䚠𧣴-𧤊𬢘𮗳觰觱䚡-䚤𧤋-𧤚𧤢𫌰𫌱觲觳䚥䚦𧤛-𧤡𧤣-𧤮𮗴𮗵觴鵤䚧𧤯-𧤹觵觶䚨䚩䚬𧤺-𧥃𮗶𰴦ð²žè§·-觹䚪䚫𧥄-𧥇𬢙觺𧥈-𧥋觻觼𧥌-ð§¥è§½è§¾ð§¥‘𧥒ð²Ÿð§¥“𧥔觿䚭𧥕-𧥘ð² ð§¥™ð§¥š]
[radical 149=⾔言:言è¨ð§¥›-𧥟𰴧訂-計䚮-䚰𧥠𬢚𬢛𮗷𮗸𰴨𰴩訉-訚䚱䚲𧥡-𧥭𫌲𫌳𬢜-𬢞𮗹𮗺ð²¡-ð²¤è¨›-訳䚳-䛃𧥮-𧦛𫌴𫌵𬢟𬢠𮗻-𮗾𰴪ð²¥ð²¦è¨´-詠䛄-䛓𧦜-𧧂𫌶-𫌹𬢡𬢢𮗿-𮘇𰴫𰴬詡-誊誠é¿ä›”-䛜𧧃-𧧳𧨜𫌺𫌻𬢣-𬢩𮘈-𮘎𰴭-ð°´¸ð²§-ð²©èª‹-誟誡-誮ä›-䛨𧧴-𧨛ð§¨-𧨥𫌼-𫌾𬢪-𬢭ð®˜-𮘖𰴹-𰴻誯-諚諩䛩-䛸𧨦-𧩢𫌿ð«€ð¬¢®-𬢳𮘗-𮘠𰴼𰴽ð²ª-ð²­è«›-諨諪-謃䛹-䛽𧩣-𧪗ð«-ð«…𬢴-𬢹𮘡-𮘪𰴾-𰵂ð²®-ð²±è¬„-謢䛾-䜂ð œð§ª˜-𧫑ð«†-ð«ˆð¬¢º-𬣄𮘫-𮘯𰵃𰵄ð²²ð²³è¬£-謾䜃-䜊𧫒-𧫽ð«‰-ð«Œð¬£…𮘰-𮘸𰵅ð²´ð²µè¬¿-譌譎-譜龻䜋-䜑𧫾-𧬦ð«-ð«ð¬£†-𬣉𮘹-𮘽𰵆-𰵈ð²¶-ð²¹è­è­-譲䜒-䜘𧬧-ð§­ð«ð«‘𬣊𬣋𮘾-ð®™‚ð²ºè­³-譽䜙-䜞𧭂-ð§­ð§­’-𧭛ð«’𬣌-𬣑𮙃𮙄𰵉ð²»-ð²½è­¾-讅䜟-䜡𧭑𧭜-𧭷ð«Ÿð¬£’-𬣔𮙅𮙆ð²¾è®†-è®äœ¢ð§­¸-𧮄ð«“𬣕𮙇ð²¿è®‘-讖𣌚𧮅-ð§®ð«”-ð«–𬣖讗-讙𧮑-𧮘𮙈讚讛𧮙-ð§®ð«—𲂀ð²‚讜-讞𧮞-𧮤𧮦𧮧ð«˜è®Ÿð§®¨ð¬£—𬣘𧮩]
-[radical 149'=⻈讠:è® -讥𰵊讦-è®±ð«™ð¬£™ð¬£šð°µ‹ð°µŒð²‚‚𲂃讲-诀䜣ð«šð«›ð«Ÿžð¬£›-𬣟ð°µ-𰵒𲂄𲂅è¯-诒𧮪ð«œ-ð«¡ð«ŸŸð¬£ -𬣧𰵓-𰵡𲂆𲂇诓-诩䜤ð«¢-ð«¦ð¬£¨-𬣳𰵢-𰵦𲂈-𲂊诪-诶ð«§-ð«ªð¬£´-𬣼𮙉𰵧-𰵯𲂋-ð²‚请-谊䜥ð««-ð«®ð«Ÿ ð«Ÿ¡ð¬£½-𬤆𰵰-𰵸𲂎ð²‚è°‹-è°žð«¯-ð«´ð¬¤‡-ð¬¤ð²‚-𲂒谟-谧䜦䜧ð«µ-ð«¸ð«Ÿ¢ð¬¤-𬤗𰵹-𰵿谨-谬䜨ð«¹ð«ºð¬¤˜-𬤜𰶀-𰶃𲂓𲂔谭-è°²ð«»ð«¼ð¬¤-𬤥𮙊𰶄-𰶈谳-è°µð«½ð¬¤¦-𬤨𰶉-𰶋𲂕𲂖ð«¾ð¬¤©-𬤬𰶌-𰶎ð«¿ð¬¤­ð®™‹ð²‚—䜩𬤮谶𬤯ð°¶ð¬¤°ð¬¤±]
+[radical 149'=⻈讠:è® -讥𰵊讦-è®±ð«™ð¬£™ð¬£šð°µ‹ð°µŒð²‚‚𲂃讲-诀䜣ð«šð«›ð«Ÿžð¬£›-𬣟ð°µ-𰵒𲂄𲂅è¯-诒𧮪ð«œ-ð«¡ð«ŸŸð¬£ -𬣧𮷅-𮷇𰵓-𰵡𲂆𲂇诓-诩䜤ð«¢-ð«¦ð¬£¨-𬣳𰵢-𰵦𲂈-𲂊诪-诶ð«§-ð«ªð¬£´-𬣼𮙉𰵧-𰵯𲂋-ð²‚请-谊䜥ð««-ð«®ð«Ÿ ð«Ÿ¡ð¬£½-𬤆𮷈𮷉𰵰-𰵸𲂎ð²‚è°‹-è°žð«¯-ð«´ð¬¤‡-ð¬¤ð²‚-𲂒谟-谧䜦䜧ð«µ-ð«¸ð«Ÿ¢ð¬¤-𬤗𰵹-𰵿谨-谬䜨ð«¹ð«ºð¬¤˜-𬤜𰶀-𰶃𲂓𲂔谭-è°²ð«»ð«¼ð¬¤-𬤥𮙊𮷊𰶄-𰶈谳-è°µð«½ð¬¤¦-𬤨𰶉-𰶋𲂕𲂖ð«¾ð¬¤©-𬤬𰶌-𰶎ð«¿ð¬¤­ð®™‹ð²‚—䜩𬤮谶𬤯ð°¶ð¬¤°ð¬¤±]
[radical 150=⾕谷:谷𧮫䜪𫎀ð°¶è°¸äœ«ð§®¬-𧮮谹-谻𧮯-𧮲ð«Žð®™Œäœ¬äœ­ð§®³ð§®´ð¬¤²ð°¶‘𰶒谼𧮵-𧮷ð®™ð°¶“谽䜮𧮸𧮹𮙎𲂘𲂙谾䜯𧮺-𧮿𫎂𬤳ð®™ð°¶”𧯀-𧯅𬤴ð®™ð°¶•ð°¶–è°¿-è±äœ°ð§¯†-𧯉𬤵豂䜱𧯊豃𡓛𧯋-𧯒𮙑𲂚𲂛𧯓𧯔𲂜𧯕𧯖豄䜲豅𧯗-𧯙]
-[radical 151=⾖豆:豆䜳𰶗𧯚豇豈𧯛-ð§¯è±‰äœ´ð§¯žð§¯Ÿð¬¤¶ð°¶˜äœµð§¯ -𧯤𮙒𰶙𰶚ð²‚豊豋䜶𧯥𧯦𧯨𬤷𰶛鿲䜷-䜹𧯩-𧯬𮙓𮙔𰶜豌-豎䜺𧯭-𧯶𫎃ð°¶äœ»-䜿𧯷-𧯻𮙕𲂞è±ä€-ä‚𧯼-𧰂𧰈𰶞è±ð¡•†ð§°ƒ-𧰇𫎄𮙖𰶟𧰉-ð§°ð¬¤¸ð®™—𰶠𰶡𲂟豑𧰑-𧰖𬤹𰶢𲂠äƒð§°—𧰘𮙘𧰙-𧰜𮙙ð§°-𧰟𬤺𰶣𧰠豒ä„𧰡𧰢豓𧰣𧰤豔𧰥]
+[radical 151=⾖豆:豆䜳𰶗𧯚𮷋豇豈𧯛-ð§¯è±‰äœ´ð§¯žð§¯Ÿð¬¤¶ð°¶˜äœµð§¯ -𧯤𮙒𰶙𰶚ð²‚豊豋䜶𧯥𧯦𧯨𬤷𰶛鿲䜷-䜹𧯩-𧯬𮙓𮙔𰶜豌-豎䜺𧯭-𧯶𫎃ð°¶äœ»-䜿𧯷-𧯻𮙕𲂞è±ä€-ä‚𧯼-𧰂𧰈𰶞è±ð¡•†ð§°ƒ-𧰇𫎄𮙖𰶟𧰉-ð§°ð¬¤¸ð®™—𰶠𰶡𲂟豑𧰑-𧰖𬤹𰶢𲂠äƒð§°—𧰘𮙘𧰙-𧰜𮙙ð§°-𧰟𬤺𰶣𧰠豒ä„𧰡𧰢豓𧰣𧰤豔𧰥]
[radical 152=⾗豕:豕𧰧𧰨豖𧰦𫎅𧰩𬤻𮙚𰶤𰶥豗ä…𧰪-𧰭豘-è±ä†ä‡ð§°®-𧰴𫎆𬤼𬤽𮙛豞-象äˆð§°µ-𧰾𮙜-𮙞𰶦豢-豦ä‰ð§°¿-𧱌𮙟𮙠豧-豪ð§±-𧱗𫎇𫎈𬤾-𬥀äŠ-äŒð§±˜-𧱧ð¬¥-𬥃𰶧-𰶩豫-è±®ääŽð§±¨-𧱱𫎉𮙡-𮙣𰶪-𰶭豯-豳𧱲-𧱺𬥄𬥅𰶮𲂡豴豵ä𧱻-ð§²ð®™¤è±·ää‘𧲂-𧲆豶𧲇-𧲋𬥆𰶯ä’𧲌-ð§²ð¬¥‡ð²‚¢ä“ð§²-𧲓𧲗𧲔-𧲖𲂣𧲘𧲙ä”ä•ð§²š-𧲞𰶰𧲟]
[radical 153=⾘豸:豸𧲠𧲡𮙥豹-豻𧲢𧲣𫎊豼豽ä–-ä™ð§²¤-𧲫𮙦𮙧豾-貃äšä›ð§²¬-𧲽𮙨𮙩𲂤𲂥貄-貊𧲾-𧳉𫎋𬥈貋-è²äœð§³Š-𧳘𮙪貎è²ääžð§³™-𧳥𧳱𬥉𲂦è²-貓äŸð§³¦-𧳰𧳲-𧳴𫎌𮙫貔-è²–ä ð§³µ-𧴀ð«Žè²—-è²™ä¡ä¢ð§´-𧴅𧴇-𧴋𬥊𬥋貚ä£-ä¦ð§´†ð§´Œ-ð§´ð§´‘-𧴕𬥌𮙬ð§´ð§´–-𧴟ð¬¥ð²‚§ð§´ -𧴢貛貜𧴣]
[radical 154=â¾™è²:è²-負𧴤-𧴩𫎎𬥎𮙭𰶱財-貤𧴪-𧴲ð«Ž-ð«Ž‘ð®™®-𮙱𰶲貥-è²®ä§ä¨ð§´³-𧵈𫎒𫎓ð¬¥-𬥒𮙲-𮙸𰶳-𰶻𲂨𲂩貯-è³ä©-ä¯ð§µ‰-𧵢𫎔𫎕𬥓𮙹-𮚀𰶼-𰶿𲂪-𲂬賂-賎ä°-ä²ð££¬ð§µ£-𧶄𫎖𬥔𬥕ð®š-𮚄𰷀-𰷄𲂭-𲂯è³-賘㕢ä³-äµð§¶…-𧶚𫎗-𫎙𬥖-𬥚𮚅-𮚊𰷅賙-賬ä¶-ä¿ð§¶›-𧶰𫎚𫎛𬥛-𬥟𮚋-𮚔𰷆-𰷈𲂰𲂱賭-賵䞀-䞄𠠋𧶱-𧷄𧷆-𧷋𫎜-𫎞𬥠-𬥢𮚕-𮚙𰷉𲂲𲂳賶-賽䞅䞆𧷌-ð§·ð«ŽŸð«Ž ð¬¥£-𬥥𮚚-ð®šð°·Š-𰷌𲂴𲂵賾-贀贂-贅䞇𧷞-𧷻𫎡𬥦𬥧𮚞-𮚠ð°·-ð°·è´†-贌䞈𧷼-𧸕𫎢𬥨𮚡-𮚦𰷑-ð°·—è´-è´äž‰ð§¸–-𧸥𬥩𮚧𮚨è´-贔𧸦-𧸰𬥪𬥫𬥭𮚩-𮚫𰷘-ð°·šè´•-贘䞊𧸱-𧸼𧸿𫎣𫎤𬥮-𬥰𮚬𰷛𲂶贙贚䞋𧸽𧸾𧹀-𧹇𫎥𬥬𬥱𮚭𲂷贛𧹈-𧹋𲂸贜𧹌ð§¹ð°·œð°·ð§¹Ž-ð§¹ð®š®-𮚰𬥲𲂹]
-[radical 154'=⻉è´:è´-财𰷞-𰷠𲂺责-贯𧹑𬥳𰷡𲂻-𲂽贰-贻𧹒𫎦𫎧𬥴-𬥶𰷢𲂾-ð²ƒè´¼-赆䞌𬥷赇-赊𧹓𫎨𬥸赋-赕äžäžŽð§¹”-𧹖𫎩𬥹𰷣-𰷥𲃂𲃃赖赗äžäžð«Žªð¬¥º-𬥽𰷦𰷧𲃄𲃅赘-赛𬥾𰷨-𰷪𲃆赜𧹗èµ-赠𫎫𰷫赡赢𰷬𫎬𬥿𰷭𰷮赣𬦀]
-[radical 155=⾚赤:赤𧹘-𧹚䞑赥-赧𧹛𧹜ð¬¦ð§¹-𧹟𫎭赨-赪䞒𧹠-𧹢𫎮𬦂𰷯赫䞓䞔𧹣-𧹫𫎯𲃇赬-赮𧹬-𧹱𬦃𮚱赯𧹲-𧹷𫎰𧹸-𧹼𲃈䞕𧹽-ð§ºð¬¦„𧺂-𧺅𰷰]
+[radical 154'=⻉è´:è´ð®·Œè´ž-财𰷞-𰷠𲂺责-贯𧹑𬥳𰷡𲂻-𲂽贰-贻𧹒𫎦𫎧𬥴-𬥶ð®·ð°·¢ð²‚¾-ð²ƒè´¼-赆䞌𬥷赇-赊𧹓𫎨𬥸𮷎ð®·èµ‹-赕äžäžŽð§¹”-𧹖𫎩𬥹𰷣-𰷥𲃂𲃃赖赗äžäžð«Žªð¬¥º-𬥽𰷦𰷧𲃄𲃅赘-赛𬥾ð®·ð°·¨-𰷪𲃆赜𧹗èµ-赠𫎫𰷫赡赢𰷬𫎬𬥿𰷭𰷮赣𬦀]
+[radical 155=⾚赤:赤𧹘-𧹚䞑赥赦𧹛𧹜ð¬¦èµ§ð§¹-𧹟𫎭赨-赪䞒𧹠-𧹢𫎮𬦂𰷯赫䞓䞔𧹣-𧹦𮷑𧹧-𧹫𫎯𲃇赬-赮𧹬-𧹱𬦃𮚱赯𧹲-𧹷𫎰𧹸-𧹼𲃈䞕𧹽-ð§ºð¬¦„𧺂-𧺅𰷰]
[radical 156=⾛走:走赱𧺆𧺇𮚲赲-赵龪𧺈-𧺎赶-赸䞖-䞘ð§º-𧺜𬦅𮚳𰷱𲃉赹-赿﨣䞙-äžœð§º-𧺵𫎱𬦆-𬦈𮚴𮚵𰷲𲃊趀-趋äž-䞤𧺶-ð§»ð«Ž²ð¬¦‰-𬦋𮚶𮚷𰷳𰷴𲃋趌-趔䞥-䞪ð§»-𧻮𫎳𫎴𬦌ð¬¦ð®š¸ð®š¹ð°·µ-𰷷𲃌趕-趚䞫-䞲𧻯-ð§¼ð§¼ð«Žµ-𫎷𬦎-𬦑𮚺𮚻ð²ƒð²ƒŽè¶›-趤䞳-䞸𧼎-𧼜𧼞𧼠-𧼧𫎸-𫎺𬦒𬦓𰷸𰷹ð²ƒè¶¥-趧䞹-䞼𧼟𧼨-𧽈𫎻𫎼𬦔-𬦗𮚼𰷺ð²ƒè¶¨äž½-䟀𧽉-ð§½ð«Ž½ð¬¦˜-𬦜𮚽𮚾𰷻-𰷽𲃑äŸ-䟆𧽞-𧽵𫎾𫎿ð¬¦ð¬¦žð°·¾ð²ƒ’趩-趭䟇𧽶-𧾌𬦟𮚿𰷿𲃓趮䟈-䟋ð§¾-𧾘𰸀趯趰䟌𧾙-𧾠äŸ-äŸð§¾¡-𧾧𮛀趱äŸð§¾¨-𧾭䟑𧾮𧾯䟒𧾰-𧾴趲𧾵𧾶]
-[radical 157=⾜足:足𧾷-𧾹ð®›è¶´äŸ“䟔𧾺-𧿀𬦠𮛂ð°¸ð²ƒ”趵-趸䟕䟖ð§¿-𧿑ð«€ð¬¦¡ð¬¦¢ð®›ƒ-𮛈𰸂-𰸄𲃕𲃖趹-趻趽-跄䟗-䟞𧿒-𧿱ð«-ð«ƒð¬¦£-𬦧𮛉-𮛎𰸅-𰸇𲃗-𲃙跅-跞践䟟-䟭𧿲-𨀔ð«„-ð«†ð¬¦¨-𬦫ð®›-𮛖𲃚-𲃜趼跟-è·´è·¶-跻䟮-䟳𨀕-𨀿𨃋ð«‡-ð«‹ð¬¦¬-𬦱𮛗𮛘𰸈-ð°¸ð²ƒ-𲃦跼-踎䟴-䟻䟽ð¨€-ð¨´ð«Œ-ð«Žð¬¦²-𬦵𮛙-𮛟ð°¸-𰸓𲃧-𲃪è¸-踪踬-踯踺䟼䟾-ä Œð¨µ-𨂜𨂟ð«-ð«“𬦶-𬦻𮛠-𮛮𰸔-𰸙𲃫-𲃯踫踰-踹踻-è¹…ä -ä –ð¨‚𨂞𨂠-𨃊𨃌-𨃒ð«”-ð«˜ð¬¦¼-𬧃𮛯-𮛿𰸚-𰸧𲃰-𲃺蹆-蹓䠗-ä ð¨ƒ“-𨄂𨄄ð«™-ð«›ð¬§„-𬧉𮜀-𮜈𰸨𰸩𲃻-𲄀蹔-蹧蹮躀䠞-䠢𨄃𨄅-𨅉𨅚ð«œ-ð«Ÿð¬§Š-ð¬§ð®œ‰-𮜓𰸪ð²„-𲄅蹨-蹭蹯-蹿䠣-䠧𨅊-𨅙𨅛-𨆀ð« -ð«¢ð«Ÿ£ð¬§‘-𬧔𮜔-𮜘𰸫-𰸯𲄆𲄇èº-躉䠨䠩ð¨†-𨆩ð«£-ð«¦ð¬§•-𬧗𮜙-𮜛𰸰-𰸲𲄈𲄉躊-èºä ªä «ð¨†ª-𨇀ð«§ð«¨ð¬§˜ð®œœ-𮜠𰸳-𰸵𲄊-ð²„èº-躖䠬ð¨‡-𨇕𬧙𮜡-𮜥𰸶𰸷𲄎-ð²„躗-躜䠭䠮𨇖-𨇣ð«©ð¬§šð¬§›ð®œ¦-𮜪èº-躠䠯𨇤-𨇭𬧜𮜫𮜬𲄑-𲄓躡-躥䠰𨇮-𨇺𰸸𲄔躦躧𨇻-𨈀𮜭𲄕躩躪ð¨ˆ-𨈃ð¬§ð°¸¹ð²„–躨䠱𨈄-𨈇𬧞𨈈-𨈊𬧟𨈋-𨈎]
-[radical 158=â¾èº«:身ð¨ˆ-𨈑𬧠𲄗𨈒躬𨈓-𨈗𮜮躭-躯𨈘-𨈨𬧡𮜯𰸺𲄘-𲄛躰䠲-䠶𨈩-𨈷𬧢𮜰𰸻-𰸽𲄜躱躲䠷-䠺𨈸-𨉇ð«ªð««ð¬§£ð®œ±-𮜵ð²„-𲄟躳-躵𨉈-𨉓ð«¬ð®œ¶-𮜹𲄠-𲄢躶-躼䠻𨉔-𨉡𬧤-𬧪𰸾-𰹀𲄣-𲄦躽躾䠼𨉢-𨉥𨉧-𨉭𬧫ð°¹-𰹅𲄧𲄨躿䠽䠾𨉦𨉮-𨉸ð«­ð«®ð¬§¬-𬧮𰹆𲄩-𲄫軀è»ð¨‰¹-𨉾ð«¯ð¬§¯è»‚-軅䠿𨉿-𨊌ð«°ð¬§°ð°¹‡ð²„¬è»†ä¡€ð¨Š-𨊒ð«±ð®œº-𮜼𲄭-𲄯軇𨊓-𨊗𲄰𨊘-𨊚ä¡ð¨Š›ð¨Šœð®œ½è»ˆð²„±ð¨Šð¨Šžð®œ¾ð¨ŠŸè»‰ð²„²]
+[radical 157=⾜足:足𧾷-𧾹ð®›è¶´äŸ“䟔𧾺-𧿀𬦠𮛂ð°¸ð²ƒ”趵-趸䟕䟖ð§¿-𧿑ð«€ð¬¦¡ð¬¦¢ð®›ƒ-𮛈𰸂-𰸄𲃕𲃖趹-趻趽-跄䟗-䟞𧿒-𧿱ð«-ð«ƒð¬¦£-𬦧𮛉-𮛎𰸅-𰸇𲃗-𲃙跅-跞践䟟-䟭𧿲-𨀔ð«„-ð«†ð¬¦¨-𬦫ð®›-𮛖𲃚-𲃜趼跟-è·´è·¶-跻䟮-䟳𨀕-𨀿𨃋ð«‡-ð«‹ð¬¦¬-𬦱𮛗𮛘𮷒𰸈-ð°¸ð²ƒ-𲃦跼-踎䟴-䟻䟽ð¨€-ð¨´ð«Œ-ð«Žð¬¦²-𬦵𮛙-𮛟ð°¸-𰸓𲃧-𲃪è¸-踪踬-踯踺䟼䟾-ä Œð¨µ-𨂜𨂟ð«-ð«“𬦶-𬦻𮛠-𮛮𰸔-𰸙𲃫-𲃯踫踰-踹踻-è¹…ä -ä –ð¨‚𨂞𨂠-𨃊𨃌-𨃒ð«”-ð«˜ð¬¦¼-𬧃𮛯-𮛿𰸚-𰸧𲃰-𲃺蹆-蹓䠗-ä ð¨ƒ“-𨄂𨄄ð«™-ð«›ð¬§„-𬧉𮜀-𮜈𰸨𰸩𲃻-𲄀蹔-蹧蹮躀䠞-䠢𨄃𨄅-𨅉𨅚ð«œ-ð«Ÿð¬§Š-ð¬§ð®œ‰-𮜓𰸪ð²„-𲄅蹨-蹭蹯-蹿䠣-䠧𨅊-𨅙𨅛-𨆀ð« -ð«¢ð«Ÿ£ð¬§‘-𬧔𮜔-𮜘𰸫-𰸯𲄆𲄇èº-躉䠨䠩ð¨†-𨆩ð«£-ð«¦ð¬§•-𬧗𮜙-𮜛𰸰-𰸲𲄈𲄉躊-èºä ªä «ð¨†ª-𨇀ð«§ð«¨ð¬§˜ð®œœ-𮜠𰸳-𰸵𲄊-ð²„èº-躖䠬ð¨‡-𨇕𬧙𮜡-𮜥𰸶𰸷𲄎-ð²„躗-躜䠭䠮𨇖-𨇣ð«©ð¬§šð¬§›ð®œ¦-𮜪èº-躠䠯𨇤-𨇭𬧜𮜫𮜬𲄑-𲄓躡-躥䠰𨇮-𨇺𰸸𲄔躦躧𨇻-𨈀𮜭𲄕躩躪ð¨ˆ-𨈃ð¬§ð°¸¹ð²„–躨䠱𨈄-𨈇𬧞𨈈-𨈊𬧟𨈋-𨈎]
+[radical 158=â¾èº«:身ð¨ˆ-𨈑𬧠𲄗𨈒躬𨈓-𨈗𮜮躭-躯𨈘-𨈨𬧡𮜯𮷓𰸺𲄘-𲄛躰䠲-䠶𨈩-𨈷𬧢𮜰𮷔𮷕𰸻-𰸽𲄜躱躲䠷-䠺𨈸-𨉇ð«ªð««ð¬§£ð®œ±-𮜵ð²„-𲄟躳-躵𨉈-𨉓ð«¬ð®œ¶-𮜹𲄠-𲄢躶-躼䠻𨉔-𨉡𬧤-𬧪𰸾-𰹀𲄣-𲄦躽躾䠼𨉢-𨉥𨉧-𨉭𬧫ð°¹-𰹅𲄧𲄨躿䠽䠾𨉦𨉮-𨉸ð«­ð«®ð¬§¬-𬧮𰹆𲄩-𲄫軀è»ð¨‰¹-𨉾ð«¯ð¬§¯è»‚-軅䠿𨉿-𨊌ð«°ð¬§°ð°¹‡ð²„¬è»†ä¡€ð¨Š-𨊒ð«±ð®œº-𮜼𲄭-𲄯軇𨊓-𨊗𲄰𨊘-𨊚ä¡ð¨Š›ð¨Šœð®œ½è»ˆð²„±ð¨Šð¨Šžð®œ¾ð¨ŠŸè»‰ð²„²]
[radical 159=⾞車:車軋𰹈𰹉軌è»ä¡‚-䡄𨊠-𨊦軎-軕䡅𨊧-𨊲ð«²ð®œ¿ð°¹Šð°¹‹è»–-軣䡆-䡎𨊳-ð¨‹ð«³ð¬§±ð®€-ð®…𰹌𲄳軤-軬軮-軽龫ä¡-䡒𨋎-𨋧ð«´ð«µð¬§²-𬧴ð®†-ð®Œð°¹-ð°¹ð²„´è»­è»¾-輌䡓-䡗𨋨-ð¨Œð¬§µð®-ð®‘𰹑𲄵𲄶è¼-輕䡘-䡛𨌂-𨌟ð«¶-ð«¸ð®’ð®“ð°¹’è¼–-輬䡜-䡟𨌠-ð¨†ð«¹ð¬§¶ð¬§·ð®”-ð®œð°¹“-𰹚𲄷-𲄹輭-輼䡠-䡤ð¨‡-ð¨¨ð«ºð«»ð¬§¸ð¬§¹ð®-ð®Ÿð°¹›-𰹞𲄺輽-è½…ä¡¥-䡪ð¨©-𨎉ð«¼ð«½ð¬§ºð® -ð®¢ð°¹Ÿ-𰹢轆-轌鿂䡫-䡱𨎊-𨎣ð«¾ð«¿ð¬§»-𬧽ð®£-ð®¥ð°¹£ð²„»-𲄽è½-轔䡲-䡵𨎤-𨎱ð«€ð®¦-ð®¨ð°¹¤-𰹧轕-轚䡶𨎲-ð¨‡ð¨˜¼ð«ð¬§¾ð®©-ð®«ð°¹¨è½›-轟䡷-䡹ð¨ˆ-ð¨ð«‚ð®¬-ð®¯ð°¹©ð²„¾è½ -轢䡺䡻ð¨‘-ð¨ð¬§¿ð¬¨€ð®°-ð®²ð°¹ªð°¹«è½£è½¤ð¨ž-ð¨¨ð²„¿ä¡¼ð¨©-ð¨´ð°¹¬ä¡½ð¨µ-ð¨¸ð¨½ð°¹­è½¥ä¡¾ð¨¹ð¨»ð¨¾ð¨ºð¨¼ð¨¿-ð¨‚ä¡¿ð¨ƒð°¹®ð«ƒð¨„]
-[radical 159'=⻋车:车轧𰹯轨𰹰𰹱轩-轫䢀ð«„ð«…ð°¹²-𰹵转-è½°ä¢ð¨…ð¨†ð«†ð«‡ð¬¨-𬨃ð®³ð°¹¶-𰹻𲅀ð²…è½±-轻䢂ð¨‡ð«ˆ-ð«Šð«Ÿ¤ð¬¨„𬨅ð®´ð°¹¼-𰺃轼-较ð¨ˆð«‹ð«Œð¬¨†ð¬¨‡ð®µð°º„-𰺆辄-辆ð«ð¬¨ˆ-𬨋ð®¶ð°º‡ð°ºˆð²…‚辇-辎ð«Ž-ð«‘𬨌𰺉-𰺑è¾-è¾”ð«’ð«“ð¬¨-ð¬¨ð®·ð®¸ð°º’-𰺕辕-è¾—ð«”ð«Ÿ¥ð¬¨ð¬¨‘𰺖𰺗辘ð«•ð«–𬨒𬨓𰺘𰺙辙辚ð¨‰ð«—𰺚-𰺞ð«˜ð«Ÿ¦ð¬¨”ð®¹ð®ºð°ºŸð°º ð¬¨•ð°º¡ð«™ð°º¢-𰺤ð¨Šð²…ƒ]
+[radical 159'=⻋车:车轧𰹯轨𮷖𰹰𰹱轩-轫䢀ð«„ð«…ð°¹²-𰹵转-è½°ä¢ð¨…ð¨†ð«†ð«‡ð¬¨-𬨃ð®³ð®·—𮷘𰹶-𰹻𲅀ð²…è½±-轻䢂ð¨‡ð«ˆ-ð«Šð«Ÿ¤ð¬¨„𬨅ð®´ð®·™ð°¹¼-𰺃轼-较ð¨ˆð«‹ð«Œð¬¨†ð¬¨‡ð®µð®·šð°º„-𰺆辄-辆ð«ð¬¨ˆ-𬨋ð®¶ð°º‡ð°ºˆð²…‚辇-辎ð«Ž-ð«‘𬨌𮷛𰺉-𰺑è¾-è¾”ð«’ð«“ð¬¨-ð¬¨ð®·ð®¸ð®·œð°º’-𰺕辕-è¾—ð«”ð«Ÿ¥ð¬¨ð¬¨‘ð®·ð°º–𰺗辘ð«•ð«–𬨒𬨓𰺘𰺙辙辚ð¨‰ð«—𰺚-𰺞ð«˜ð«Ÿ¦ð¬¨”ð®¹ð®ºð°ºŸð°º ð¬¨•ð°º¡ð«™ð°º¢-𰺤ð¨Šð²…ƒ]
[radical 160=⾟辛:è¾›ð¨‹ð¨Œð¬¨–ð²…„ð¨ð¨Žð°º¥ð¨-ð¨‘𰺦辜è¾ð¨’ð¨“ð«šð¬¨—-𬨙辞-è¾ ð¨”-ð¨—ð«›ð«œð°º§ð²……𲅆辡-è¾£ð¨˜-ð¨›ð¬¨šð®»è¾¤ä¢ƒð¨œ-ð¨Ÿð®¼ð°º¨ð²…‡è¾¥-辪ð¨ -ð¨§ð°º©è¾«ð¨¨-ð¨¯è¾¬ð¨°-ð¨²ð®½ð°ºªð²…ˆè¾­ð¨µ-ð¨¹ð°º«è¾®ä¢„ð¨º-ð¨¼ð«è¾¯ð¨½ð°º¬ð¨¾ð¨¿ð¬¨›ð¨‘€ð¨‘𲅉𨑂]
[radical 161=â¾ è¾°:辰𨑃𨑄ð®¾è¾±è¾²ä¢…𨑅-𨑇𰺭䢆𲅊辳䢇𨑈𨑉ð®¿ð®ž€è¾´ð¨‘Šä¢ˆä¢‰ð¨‘‹ð¨‘Œ]
-[radical 162=⾡辵:辵辶𠔇辷ð«žè¾¸-è¾½ð¨‘-ð¨‘𫟧𬨜𰺮𲅋巡达-迉䢊䢋𨑑-𨑡ð«Ÿð®ž-𮞃𰺯-𰺳𲅌-ð²…è¿Š-迟迬﨤䢌-ä¢ð¨‘¢-ð¨’ð« ð«¡ð¬¨-𬨠𮞄𮞅𰺴𰺵ð²…-ð²…’è¿ -è¿«è¿­-迳ä¢ä¢‘𨒂-𨒤ð«¢-ð«¤ð¬¨¡-𬨣𮞆-𮞎𰺶𲅓-ð²…–è¿´-逊䢒-䢘𨒥-𨓄ð«¥ð¬¨¤ð¬¨¥ð®ž-𮞑𰺷-𰺺𲅗-𲅙逋-逧䢙-䢛𨓅-𨓪ð«¦-ð«ªð¬¨¦-𬨬𮞒-𮞕𰺻-𰺽𲅚-𲅞逨-逻䢜-䢠𨓫-ð¨”ð¨”-𨔜𨔠ð««-ð«²ð¬¨­-𬨲𮞖-𮞨𰺾-ð°»…ð²…Ÿ-𲅥逼-é—䢡𨔎ð¨”-𨔟𨔡-𨕜ð«³-ð«¹ð«Ÿ¨ð«Ÿ©ð¬¨³-𬨹𮞩-𮞵𰻆-𰻈𲅦-ð²…«é˜-é¥ä¢¢-䢥ð¨•-𨖅ð«º-ð«½ð¬¨º-𬨿𮞶-𮞼𰻉-ð°»ð²…¬ð²…­é¦-é±é³ä¢¦-䢩𨖆-𨖳ð«¾-𫑃𬩀-𬩈𮞽-𮟈𰻎-ð°»‘ð²…®-ð²…³é²é´-é¼é‚†ä¢ª-䢭𨖴-𨗒𨗔-𨗤𫑄-𫑊𬩉-ð¬©ð®Ÿ‰-ð®Ÿð°»’-ð°»•ð²…´-ð²…¿é½-邅邉䢮𨗥-𨘆𫑋𫟪𬩑-𬩛ð®Ÿ-𮟗𰻖-𰻚𲆀-𲆄邇邈䢯䢰𨘇-𨘠𩄮𫑌-ð«‘𬩜-𬩣𮟘-𮟜邊-邌䢱𨘡-𨘶ð«‘𫑑𬩤-𬩪ð®Ÿ-𮟡𲆅𲆆é‚𨘷-𨘻𨘽-ð¨™ð¬©«-𬩮𮟢𮟣𰻛𲆇邎𨙂-𨙑𫑒-𫑕𮟤-𮟦𲆈𨙒-𨙘𫑖𬩯-𬩲𮟧𰻜𲆉𲆊é‚é‚𨙙-𨙞𲆋-ð²†ä¢²ð¨™Ÿ-𨙥𮟨𲆎𨙦𮟩𨙧ð°»ð°»ž]
-[radical 163=⾢邑:邑𨙨邒邓䢳𨙩𨙪𬩳𬩴邔-é‚䢴𨙫-𨙵𫑗𮟪𮟫𰻟𰻠ð²†é‚ž-邬䢵-䢷𨙶-𨚒𫑘𫑙𬩵𬩶𮟬-𮟮𰻡-𰻦邭-邻䢸-䢺𨚓-𨚮𫑚𫑛𫟫𬩷-𬩹𮟯-𮟶𰻧𰻨邼-郑郓䢻-䣂𨚯-𨛊𫑜𬩺-𬩽𮟷-𮟺𰻩ð²†ð²†‘郒郔-郧䣃-䣉𨛋-𨛪ð«‘-𫑟𫜷𬩾-𬪄𮟻𮟼𰻪-𰻬𲆒-𲆔部-郸䣊-ä£ð¨›«-𨜎𫑠-𫑢𫟬𬪅-𬪊𮟽-𮟿𰻭-𰻱𲆕𲆖郹-é„Šä£-䣒ð¨œ-𨜖𨜘-𨜱𫑣𫑤𫟭𬪋-ð¬ªð® €-𮠂𰻲𰻳𲆗𲆘鄋-鄗䣓-䣗𨜗𨜲-ð¨Šð«‘¥ð«‘¦ð® ƒ-ð® …ð°»´-𰻸𲆙鄘-鄥䣘-䣜ð¨‹-ð¨ªð¨¹ð«‘§-𫑩𬪑-𬪔𮠆𰻹-𰻻𲆚鄦-鄲ä£-䣠ð¨«-ð¨¸ð¨º-ð¨žð¬ª•ð¬ª–ð® ‡-𮠉𰻼𲆛-ð²†é„³-鄷䣡𨞑-𨞦𫑪𫑫𬪗-𬪛𮠊-𮠎𰻽𲆞鄸鄹䣢𨞧-𨞹𫑬𬪜ð® ð® ð°»¾ð²†Ÿð²† é„º-鄾𨞺-𨟌𫑭ð¬ª-𬪟𮠑𮠒𰻿𲆡-𲆣鄿酀酂ð¨Ÿ-𨟘𫑮-𫑰𬪠-𬪢𰼀ð°¼é…酃𨟙-𨟟𬪣𬪤𮠓酄-酆𨟠-𨟣𫑱𮠔酇酈𨟤-𨟧𲆤䣣䣤𨟨-𨟮𬪥𨟯𫑲𰼂]
+[radical 162=⾡辵:辵辶𠔇辷ð«žè¾¸-è¾½ð¨‘-ð¨‘𫟧𬨜𰺮𲅋巡达-迉䢊䢋𨑑-𨑡ð«Ÿð®ž-𮞃𰺯-𰺳𲅌-ð²…è¿Š-迟迬﨤䢌-ä¢ð¨‘¢-ð¨’ð« ð«¡ð¬¨-𬨠𮞄𮞅𮷞𰺴𰺵ð²…-ð²…’è¿ -è¿«è¿­-迳ä¢ä¢‘𨒂-𨒤ð«¢-ð«¤ð¬¨¡-𬨣𮞆-𮞎𮷟𮷠𰺶𲅓-ð²…–è¿´-逊䢒-䢘𨒥-𨓄ð«¥ð¬¨¤ð¬¨¥ð®ž-𮞑𰺷-𰺺𲅗-𲅙逋-逧䢙-䢛𨓅-𨓪ð«¦-ð«ªð¬¨¦-𬨬𮞒-𮞕𮷡𰺻-𰺽𲅚-𲅞逨-逻䢜-䢠𨓫-ð¨”ð¨”-𨔜𨔠ð««-ð«²ð¬¨­-𬨲𮞖-𮞨𮷢𮷣𰺾-ð°»…ð²…Ÿ-𲅥逼-é—䢡𨔎ð¨”-𨔟𨔡-𨕜ð«³-ð«¹ð«Ÿ¨ð«Ÿ©ð¬¨³-𬨹𮞩-𮞵𮷤𰻆-𰻈𲅦-ð²…«é˜-é¥ä¢¢-䢥ð¨•-𨖅ð«º-ð«½ð¬¨º-𬨿𮞶-𮞼𮷥𮷦𰻉-ð°»ð²…¬ð²…­é¦-é±é³ä¢¦-䢩𨖆-𨖳ð«¾-𫑃𬩀-𬩈𮞽-𮟈𮷧𰻎-ð°»‘ð²…®-ð²…³é²é´-é¼é‚†ä¢ª-䢭𨖴-𨗒𨗔-𨗤𫑄-𫑊𬩉-ð¬©ð®Ÿ‰-ð®Ÿð°»’-ð°»•ð²…´-ð²…¿é½-邅邉䢮𨗥-𨘆𫑋𫟪𬩑-𬩛ð®Ÿ-𮟗𰻖-𰻚𲆀-𲆄邇邈䢯䢰𨘇-𨘠𩄮𫑌-ð«‘𬩜-𬩣𮟘-𮟜邊-邌䢱𨘡-𨘶ð«‘𫑑𬩤-𬩪ð®Ÿ-𮟡𲆅𲆆é‚𨘷-𨘻𨘽-ð¨™ð¬©«-𬩮𮟢𮟣𰻛𲆇邎𨙂-𨙑𫑒-𫑕𮟤-𮟦𲆈𨙒-𨙘𫑖𬩯-𬩲𮟧𰻜𲆉𲆊é‚é‚𨙙-𨙞𲆋-ð²†ä¢²ð¨™Ÿ-𨙥𮟨𲆎𨙦𮟩𨙧ð°»ð°»ž]
+[radical 163=⾢邑:邑𨙨邒邓䢳𨙩𨙪𬩳𬩴邔-é‚䢴𨙫-𨙵𫑗𮟪𮟫𰻟𰻠ð²†é‚ž-邬䢵-䢷𨙶-𨚒𫑘𫑙𬩵𬩶𮟬-𮟮𮷨𮷩𰻡-𰻦邭-邻䢸-䢺𨚓-𨚮𫑚𫑛𫟫𬩷-𬩹𮟯-𮟶𰻧𰻨邼-郑郓䢻-䣂𨚯-𨛊𫑜𬩺-𬩽𮟷-𮟺𰻩ð²†ð²†‘郒郔-郧䣃-䣉𨛋-𨛪ð«‘-𫑟𫜷𬩾-𬪄𮟻𮟼𮷪𰻪-𰻬𲆒-𲆔部-郸䣊-ä£ð¨›«-𨜎𫑠-𫑢𫟬𬪅-𬪊𮟽-𮟿𮷫𰻭-𰻱𲆕𲆖郹-é„Šä£-䣒ð¨œ-𨜖𨜘-𨜱𫑣𫑤𫟭𬪋-ð¬ªð® €-𮠂𮷬𮷭𰻲𰻳𲆗𲆘鄋-鄗䣓-䣗𨜗𨜲-ð¨Šð«‘¥ð«‘¦ð® ƒ-ð® …ð°»´-𰻸𲆙鄘-鄥䣘-䣜ð¨‹-ð¨ªð¨¹ð«‘§-𫑩𬪑-𬪔𮠆𰻹-𰻻𲆚鄦-鄲ä£-䣠ð¨«-ð¨¸ð¨º-ð¨žð¬ª•ð¬ª–ð® ‡-𮠉𰻼𲆛-ð²†é„³-鄷䣡𨞑-𨞦𫑪𫑫𬪗-𬪛𮠊-𮠎𰻽𲆞鄸鄹䣢𨞧-𨞹𫑬𬪜ð® ð® ð°»¾ð²†Ÿð²† é„º-鄾𨞺-𨟌𫑭ð¬ª-𬪟𮠑𮠒𰻿𲆡-𲆣鄿酀酂ð¨Ÿ-𨟘𫑮-𫑰𬪠-𬪢𰼀ð°¼é…酃𨟙-𨟟𬪣𬪤𮠓酄-酆𨟠-𨟣𫑱𮠔酇酈𨟤-𨟧𲆤䣣䣤𨟨-𨟮𬪥𨟯𫑲𰼂]
[radical 164=⾣酉:酉𮠕酊酋䣥䣦𮠖𮠗酌-酒䣧䣨𨟰-𨟳𫑳𮠘-𮠚𰼃𲆥-𲆧酓-酞䣩-䣭𨟴-𨠊𬪦𬪧𮠛-𮠠𰼄𲆨𲆩酟-酥䣮-䣳𨠋-𨠣𬪨𮠡-𮠤𰼅𰼆酦-酱䣴-䣹𨠤-𨠶𫑴𫑵𫟮𬪩𮠥-𮠪𲆪-𲆬酲-酿䣺䣻𨠷-𨡋𫑶-𫑸𬪪-𬪬𮠫-𮠭𰼇-𰼉𲆭-𲆯醀-醌䣼-䣿𨡌-𨡨𫑹𮠮-𮠴𰼊-𰼌𲆰𲆱é†-醗䤀-䤈𨡩-𨢄𬪭-𬪱𮠵-ð® »ð°¼ð°¼Žð²†²-𲆴醘-醤䤉-䤌𨢅-𨢠𫑺𬪲-𬪵𮠼ð°¼ð²†µ-𲆹醥-醬ä¤ð¨¢¡-𨢼𫑻𬪶𮠽-𮡀ð°¼-𰼒𲆺醭-醱䤎-䤒𨢽-𨣕𫑼𫑽ð®¡-𮡄𰼓𰼔𲆻醲-醸𨣖-𨣥𬪷-𬪹𮡅𮡆𲆼-𲆾醹-醻䤓䤔𨣦-𨣭𫑾𮡇-𮡊𰼕𲆿䤕䤖𨣮-𨣵𮡋𮡌𰼖醼𨣶-𨣽𫑿醽-釀䤗䤘𨣾-𨤂ð®¡é‡é‡‚𨤃𨤄釃釄𨤅𨤆釅𨤇-𨤉䤙𨤊-𨤎]
[radical 165=⾤釆:釆采ð¨¤ð¬ªºð®¡Žé‡ˆð¨¤ð¨¤‘ð®¡ð°¼—釉释𫒀𬪻𨤒-𨤔𲇀𨤕-𨤙ð®¡ð¤³›ð¨¤š-ð¨¤ð®¡‘釋𨤞-𨤡]
-[radical 166=⾥里:里𰼘é‡ð«Ÿ¯ð¨¤£ð¨¤¤é‡Žä¤šð¨¤¢ð¨¤¥ð«’𮡒𰼙é‡ð¨¤¦-𨤩𫒂𬪼𬪽𮡓ð²‡ð¨¤ªð¨¤«ð¬ª¾ð®¡”-𮡖𨤬𫒃𮡗𮡘𲇂𨤭-𨤯𮡙𨤰𨤱𮡚𰼚-ð°¼ð¡£¢ð¨¤²ð¨¤³ð«’„𬪿𬫀𰼞é‡ð¨¤´-𨤷𮡛𫒅𮡜ð®¡ð¥£·ð¨¤¸ð¬«ð®¡ž-𮡢𲇃𨤹𨤺𲇄𮡣𨤻𨤼]
-[radical 167=⾦金:金-釢䤛𨤽-ð¨¥é‡£-釼䤜𨥂-𨥉𫒆-𫒉𮡤-𮡦𰼟𰼠釽-鈬ä¤-䤠𨥊-𨥤𫒊-𫒎𬫂-𬫅𮡧-𮡭𰼡-𰼣𲇅-𲇇鈭-鉴éŠé¾¯ä¤¡-䤣𨥥-ð¨¦ð«’-𫒔𬫆-𬫌𮡮-𮡰𰼤-𰼦𲇈𲇉鉵-鉻鉽-銎éŠ-銱䤤-䤪𨦂-ð¨¦ð¨¦Ÿ-𨦫𫒕-𫒜𫟰ð¬«-𬫓𮡱-𮡷𰼧-𰼬𲇊-ð²‡éŠ²-鋶﨧䤫-䤲𨦬-𨧥ð«’-𫒥𬫔-𬫠𮡸-ð®¢ð°¼­-𰼴𲇎ð²‡é‰¼é‹·-錧錩-é†éˆé¾¬ï¨¨ä¤³-䤶𨧦-𨨮𫒦-𫒯𬫡-𬫬𮢂-𮢘𰼵-𰼺ð²‡ð²‡‘錨é‡é‰-鎇䤷-䤼𨨯-𨪆𫒰-𫒷𬫭-𬫲𮢙-𮢧𰼻-ð°½ð²‡’𲇓鎈-鎨鎪-鎿龲䤽-䥇𨪇-𨫎𫒸-𫒾𫟱𬫳-𬫾𮢨-𮢳𰽂𰽃𲇔-𲇜鎩é€-é²é¹ä¥ˆ-䥓ð¨«-𨬌𫒿-𫓃𬫿-𬬄𮢴-𮢽𰽄𰽅ð²‡-𲇠é³éµ-é¸éº-é¨ä¥”-䥜ð¨¬-𨬔𨬖-𨭔𫓄-𫓎𬬅-𬬊𮢾-𮣎𰽆-𰽌𲇡-𲇥é´é©-é‘ä¥-䥦𨬕𨭕-𨮑ð«“-𫓕𬬋-𬬑ð®£-𮣘ð°½ð²‡¦ð²‡§é‘‚-鑔鑧䥧-䥮𨮒-𨮷𫓖-𫓚𬬒-𬬗𮣙-ð®£ð°½Ž-𰽑鑕-鑦䥯-䥴𨮸-𨯜𫓛𫓜𬬘-𬬛𮣞-𮣤𰽒𲇨-𲇫鑨-鑬䥵-䥷ð¨¯-𨯹ð«“-𫓟𬬜-𬬞𮣥-𮣩𲇬鑭-鑳䥸𨯺-𨰈𨰱𫓠-𫓢𬬟𬬠𮣪𮣫鑴-鑺𨰉-ð¨°ð«“£ð¬¬¡ð¬¬¢ð®£¬ð®£­é‘»-鑿𨰞-𨰨𫓤𮣮钀-钂𨰩-𨰰𬬣𮣯钃钄䥹𨰲-𨰶𬬤𨰷-𨰹𬬥𰽓𨰺𬬦𨰻𮣰𨰼𨰽𮣱𰽔]
-[radical 167'=â»é’…:é’…-钌𫓥𫟲𰽕𰽖é’-钗𨰾𨰿𫓦𫟳𬬧-𬬪𮣲𰽗-𰽛𲇭-𲇰钘-钯䥺-䥼𨱀-𨱂𫓧-𫓫𫟴𫟵𬬫-𬬶𮣳𰽜-𰽤𲇱-𲇶钰-铎鿭䥽-䥿𨱃-𨱆𫓬-𫓮𫟶𫟷𬬷-𬭂𰽥-𰽱𲇷𲇸é“-铷䦀𫓯-𫓴𫟸-𫟻𬭃-𬭉𰽲-𰽽𲇹-𲇼铸-锕é¿ä¦ð¨±‡ð¨±ˆð«“µ-𫓷𫟼𬭊-ð¬­ð®£´ð°½¾-𰾋𲇽-𲈀锖-锱𨱉-𨱌𫓸-𫓿𫟽𬭑-ð¬­ð®£µð°¾Œ-𰾓ð²ˆ-𲈊锲-镅𨱎𫔀-𫔄𫟾𫟿𬭞-𬭥𰾔-𰾦𲈋-𲈑镆-镕鿔䦂ð¨±ð¨±ð«”…-𫔈𫠀𬭦-𬭫𮣶𰾧-𰾯𲈒-𲈔镖-é• ð¨±ð¨±’𫔉𫔊𬭬-𬭲𰾰-𰾲𲈕-𲈘镡-镫䦃-䦅𨱑𨱓𨱔𫔋-ð«”𬭳-𬭹𰾳-𰾽𲈙-𲈜镬-镱𨱕𨱖ð«”𫔑𬭺-𬭽𮣷𰾾-ð°¿ð²ˆð²ˆžé•²ð«”’ð« ð¬­¾ð°¿‚镳镴𬭿𰿃-𰿅𫔓𬮀𰿆𰿇𲈟𲈠镵镶ð¬®ð°¿ˆð«””𰿉𲈡𫔕𬮂𰿊䦆𬮃]
-[radical 168=⾧長:長镸𨱗-𨱙镹䦇𮣸𰿋镺𨱚-𨱥𨱪𮣹𮣺𰿌镻䦈䦉𨱦-𨱩𨱫-𨱱𮣻䦊𨱲-𨱿𫔖𬮄𮣼𮣽ð°¿ð¨²€-𨲆𮣾𮣿𰿎-ð°¿é•¼ð¨²‡-𨲒𫔗𮤀ð®¤ð°¿‘𡑺𨲓-𨲕𨲗-ð¨²ð°¿’𨲖𨲞-𨲤𮤂𰿓䦋𨲥-𨲬𮤃𮤄𰿔𰿕镽𨲭-𨲲𲈢𨲳-𨲷𮤅𮤆𲈣镾𨲸-𨳆]
+[radical 166=⾥里:里𰼘é‡ð«Ÿ¯ð¨¤£ð¨¤¤é‡Žä¤šð¨¤¢ð¨¤¥ð«’𮡒𰼙é‡ð¨¤¦-𨤩𫒂𬪼𬪽𮡓ð²‡ð¨¤ªð¨¤«ð¬ª¾ð®¡”-𮡖𨤬𫒃𮡗𮡘𲇂𨤭-𨤯𮡙𨤰𨤱𮡚𮷮𰼚-ð°¼ð¡£¢ð¨¤²ð¨¤³ð«’„𬪿𬫀𰼞é‡ð¨¤´-𨤷𮡛𫒅𮡜ð®¡ð¥£·ð¨¤¸ð¬«ð®¡ž-𮡢𲇃𨤹𨤺𲇄𮡣𨤻𨤼]
+[radical 167=⾦金:金-釢䤛𨤽-ð¨¥é‡£-釼䤜𨥂-𨥉𫒆-𫒉𮡤-𮡦𰼟𰼠釽-鈬ä¤-䤠𨥊-𨥤𫒊-𫒎𬫂-𬫅𮡧-𮡭𰼡-𰼣𲇅-𲇇鈭-鉴éŠé¾¯ä¤¡-䤣𨥥-ð¨¦ð«’-𫒔𬫆-𬫌𮡮-𮡰𮷯𰼤-𰼦𲇈𲇉鉵-鉻鉽-銎éŠ-銱䤤-䤪𨦂-ð¨¦ð¨¦Ÿ-𨦫𫒕-𫒜𫟰ð¬«-𬫓𮡱-𮡷𰼧-𰼬𲇊-ð²‡éŠ²-鋶﨧䤫-䤲𨦬-𨧥ð«’-𫒥𬫔-𬫠𮡸-ð®¢ð®·°ð°¼­-𰼴𲇎ð²‡é‰¼é‹·-錧錩-é†éˆé¾¬ï¨¨ä¤³-䤶𨧦-𨨮𫒦-𫒯𬫡-𬫬𮢂-𮢘𮷱-𮷳𰼵-𰼺ð²‡ð²‡‘錨é‡é‰-鎇䤷-䤼𨨯-𨪆𫒰-𫒷𬫭-𬫲𮢙-𮢧𰼻-ð°½ð²‡’𲇓鎈-鎨鎪-鎿龲䤽-䥇𨪇-𨫎𫒸-𫒾𫟱𬫳-𬫾𮢨-𮢳𰽂𰽃𲇔-𲇜鎩é€-é²é¹ä¥ˆ-䥓ð¨«-𨬌𫒿-𫓃𬫿-𬬄𮢴-𮢽𰽄𰽅ð²‡-𲇠é³éµ-é¸éº-é¨ä¥”-䥜ð¨¬-𨬔𨬖-𨭔𫓄-𫓎𬬅-𬬊𮢾-𮣎𮷴𰽆-𰽌𲇡-𲇥é´é©-é‘ä¥-䥦𨬕𨭕-𨮑ð«“-𫓕𬬋-𬬑ð®£-𮣘ð°½ð²‡¦ð²‡§é‘‚-鑔鑧䥧-䥮𨮒-𨮷𫓖-𫓚𬬒-𬬗𮣙-ð®£ð°½Ž-𰽑鑕-鑦䥯-䥴𨮸-𨯜𫓛𫓜𬬘-𬬛𮣞-𮣤𰽒𲇨-𲇫鑨-鑬䥵-䥷ð¨¯-𨯹ð«“-𫓟𬬜-𬬞𮣥-𮣩𲇬鑭-鑳䥸𨯺-𨰈𨰱𫓠-𫓢𬬟𬬠𮣪𮣫鑴-鑺𨰉-ð¨°ð«“£ð¬¬¡ð¬¬¢ð®£¬ð®£­é‘»-鑿𨰞-𨰨𫓤𮣮钀-钂𨰩-𨰰𬬣𮣯钃钄䥹𨰲-𨰶𬬤𨰷-𨰹𬬥𰽓𨰺𬬦𨰻𮣰𨰼𨰽𮣱𰽔]
+[radical 167'=â»é’…:é’…-钌𫓥𫟲𰽕𰽖é’-钗𨰾𨰿𫓦𫟳𬬧-𬬪𮣲𮷵𮷶𰽗-𰽛𲇭-𲇰钘-钯䥺-䥼𨱀-𨱂𫓧-𫓫𫟴𫟵𬬫-𬬶𮣳𮷷-𮷽𰽜-𰽤𲇱-𲇶钰-铎鿭䥽-䥿𨱃-𨱆𫓬-𫓮𫟶𫟷𬬷-𬭂𮷾-𮸃𰽥-𰽱𲇷𲇸é“-铷䦀𫓯-𫓴𫟸-𫟻𬭃-𬭉𮸄-𮸈𰽲-𰽽𲇹-𲇼铸-锕é¿ä¦ð¨±‡ð¨±ˆð«“µ-𫓷𫟼𬭊-ð¬­ð®£´ð®¸‰-ð®¸ð°½¾-𰾋𲇽-𲈀锖-锱𨱉-𨱌𫓸-𫓿𫟽𬭑-ð¬­ð®£µð®¸-𮸓𰾌-𰾓ð²ˆ-𲈊锲-镅𨱎𫔀-𫔄𫟾𫟿𬭞-𬭥𮸔-𮸘𰾔-𰾦𲈋-𲈑镆-镕鿔䦂ð¨±ð¨±ð«”…-𫔈𫠀𬭦-𬭫𮣶𮸙-𮸜𰾧-𰾯𲈒-𲈔镖-é• ð¨±ð¨±’𫔉𫔊𬭬-𬭲ð®¸-𮸠𰾰-𰾲𲈕-𲈘镡-镫䦃-䦅𨱑𨱓𨱔𫔋-ð«”𬭳-𬭹𮸡𮸢𰾳-𰾽𲈙-𲈜镬-镱𨱕𨱖ð«”𫔑𬭺-𬭽𮣷𰾾-ð°¿ð²ˆð²ˆžé•²ð«”’ð« ð¬­¾ð°¿‚镳镴𬭿𮸣𰿃-𰿅𫔓𬮀𰿆𰿇𲈟𲈠镵镶ð¬®ð°¿ˆð«””𰿉𲈡𫔕𬮂𰿊䦆𬮃]
+[radical 168=⾧長:長镸𨱗-𨱙镹䦇𮣸𰿋镺𨱚-𨱥𮣹𮣺𮸤𰿌镻䦈䦉𨱦-𨱱𮣻䦊𨱲-𨱿𫔖𬮄𮣼𮣽ð°¿ð¨²€-𨲆𮣾𮣿𰿎-ð°¿é•¼ð¨²‡-𨲒𫔗𮤀ð®¤ð°¿‘𡑺𨲓-ð¨²ð°¿’𨲞-𨲤𮤂𰿓䦋𨲥-𨲬𮤃𮤄𰿔𰿕镽𨲭-𨲲𲈢𨲳-𨲷𮤅𮤆𲈣镾𨲸-𨳆]
[radical 168'=⻓长:长𲈤𰿖𲈥]
[radical 169=⾨門:門𨳇𨳈é–閂𨳉𫔘閃-閅𨳊-ð¨³ð¬®…ð°¿—é–†-閊䦌ä¦ð¨³-𨳖𫔙𬮆𮤇𰿘-𰿛𲈦開-閗䦎-䦑𨳗-𨳲𫔚𫔛𬮇𬮈𮤈𮤉𰿜ð°¿ð²ˆ§é–˜-閠䦒-䦔𨳳-𨴌𫔜-𫔠𬮉𮤊-ð®¤ð°¿žð²ˆ¨ð²ˆ©é–¡-閪䦕-䦛ð¨´-𨴦𮤎ð®¤ð°¿Ÿð²ˆªé–«-閴䦜-䦟𨴧-𨵇𫔡-𫔤𬮊-𬮌𲈫閵閶閸-闂䦠-䦨𨵈-𨵤𫔥-𫔧ð®¤-𮤖𰿠-𰿢𲈬𲈭閷闃-é—䦩-䦯𨵥-𨵿𫔨ð¬®ð¬®Žð®¤—-𮤛𰿣𲈮é—-闘𨶀-𨶛ð¬®-𬮑𮤜-𮤞𲈯𲈰闙-é—䦰𨶜-𨶫𫔩𬮒𮤟-𮤡𲈱-𲈴闞-闡䦱𨶬-𨷂𬮓𮤢-𮤥闢-闦䦲-䦴𨷃-𨷓𨷕-𨷗𫔪𬮔𬮕𮤦𮤧闧䦵𨷔𨷘-𨷞𬮖𮤨𰿤𨷟-𨷥𬮗𨷦-𨷮𨷶𮤩𨷯-𨷵𨷸𫔫𮤪𨷷𨷹-𨷾]
-[radical 169'=⻔门:门闩𰿥闪𬮘𮤫𰿦闫-闯𨷿-ð¨¸ð«”¬ð¬®™-𬮛𮤬𮤭𰿧闰-闷𨸂𨸃𫔭-𫔯𬮜-𬮟𮤮-𮤰𰿨-𰿫𲈵-𲈸闸闹𫔰𫠂𬮠𬮡𮤱𮤲𰿬𰿭闺-阂䦶𨸄𨸅𫔱𬮢-𬮧𮤳𰿮𲈹-𲈼阃-阆䦷𫔲𫔳𬮨-𬮪𰿯𰿰𲈽-𲈿阇-é˜ð«”´ð¬®«-𬮰𮤴-𮤶𰿱-𰿳𲉀阑-阕䦸𨸆-𨸈𬮱-𬮵𮤷𰿴-𰿶ð²‰-𲉃阖-阙𨸉𨸊𫔵𫔶𰿷𰿸𲉄𲉅阚𫔷𫔸𬮶𬮷𰿹𰿺𲉆𨸋𨸌𬮸𬮹𮤸𰿻𰿼阛𰿽𰿾𲉇ð¨¸ð«”¹ð°¿¿ð±€€ð²‰ˆð¨¸Ž]
-[radical 170=⾩阜:阜é˜ð¨¸é˜žé˜Ÿä¦¹ä¦ºð¨¸-𨸕阠-阤䦻𨸖-𨸙𫔺𬮺𮤹ð±€ð±€‚阥-阶䦼-䧀ð ²ð¨¸š-𨸩𫔻𬮻-𬮽𮤺𮤻𱀃-𱀅𲉉𲉊阷-陉ä§-䧃𨸪-𨹀𫔼𫔽𬮾𮤼-𮤿𱀆-𱀊𲉋-ð²‰é™Š-陕䧄-䧈ð¨¹-𨹗𫔾-𫕀𬮿𬯀𮥀-𮥅𱀋-ð±€ð²‰Žð²‰é™–-陙陛-险䧉-ä§ð¨¹˜-𨹳ð«•-𫕃ð¬¯-𬯃𮥆-𮥋𱀑-ð±€–ð²‰-𲉒陚陪-険ä§-䧖𨹵-ð¨ºð«•„𫕅𬯄-𬯊𮥌-𮥑𱀗-𱀠𲉓-𲉕陻-éšä§—-䧙𨺞-𨺿𫕆-ð«•ð« ƒð¬¯‹-ð¬¯ð®¥’𱀡-𱀩𲉖-𲉛隑-隙﨩䧚-䧟𨻀-𨻭𫕎ð«•ð¬¯-𬯓𮥓-𮥚𱀪𱀫𲉜ð²‰éšš-隡䧠-䧣𨻮-𨼉ð«•-𫕓𬯔-𬯘𮥛-𮥟𱀬-𱀰𲉞-𲉡隢-隥䧤-䧦䧩𨼊-𨼩𫕔-𫕗𬯙-𬯛𮥠-𮥤𱀱-𱀶隦-隫䧧䧨䧪𨼪-𨼾𬯜-𬯟𮥥-𮥩𱀷-𱀺隬-隲䧫-䧭𨼿-𨽌𬯠𮥪-𮥮𱀻𲉢隳ð¨½-𨽕𬯡𮥯𱀼-𱀿𲉣隴䧮𨽖-𨽡𫕘𮥰ð±€-ð±‚隵䧯𨽢-𨽥𬯢-𬯤𮥱𲉤䧰𨽦-𨽫𬯥-𬯧ð±ƒð±„𨽬𨽭𬯨𲉥𨽮𨽯𮥲𲉦𨽰𨽱𬯩𮥳鿧𨽲-𨽵]
+[radical 169'=⻔门:门闩𰿥闪𬮘𮤫𰿦闫-闯𨷿-ð¨¸ð«”¬ð¬®™-𬮛𮤬𮤭𰿧闰-闷𨸂𨸃𫔭-𫔯𬮜-𬮟𮤮-𮤰𰿨-𰿫𲈵-𲈸闸闹𫔰𫠂𬮠𬮡𮤱𮤲𰿬𰿭闺-阂䦶𨸄𨸅𫔱𬮢-𬮧𮤳𮸥𰿮𲈹-𲈼阃-阆䦷𫔲𫔳𬮨-𬮪𰿯𰿰𲈽-𲈿阇-é˜ð«”´ð¬®«-𬮰𮤴-𮤶𮸦𰿱-𰿳𲉀阑-阕䦸𨸆-𨸈𬮱-𬮵𮤷𰿴-𰿶ð²‰-𲉃阖-阙𨸉𨸊𫔵𫔶𮸧𰿷𰿸𲉄𲉅阚𫔷𫔸𬮶𬮷𰿹𰿺𲉆𨸋𨸌𬮸𬮹𮤸𰿻𰿼阛𰿽𰿾𲉇ð¨¸ð«”¹ð°¿¿ð±€€ð²‰ˆð¨¸Ž]
+[radical 170=⾩阜:阜é˜ð¨¸é˜žé˜Ÿä¦¹ä¦ºð¨¸-𨸕阠-阤䦻𨸖-𨸙𫔺𬮺𮤹ð±€ð±€‚阥-阶䦼-䧀ð ²ð¨¸š-𨸩𫔻𬮻-𬮽𮤺𮤻𱀃-𱀅𲉉𲉊阷-陉ä§-䧃𨸪-𨹀𫔼𫔽𬮾𮤼-𮤿𱀆-𱀊𲉋-ð²‰é™Š-陕䧄-䧈ð¨¹-𨹗𫔾-𫕀𬮿𬯀𮥀-𮥅𱀋-ð±€ð²‰Žð²‰é™–-陙陛-险䧉-ä§ð¨¹˜-𨹳ð«•-𫕃ð¬¯-𬯃𮥆-𮥋𱀑-ð±€–ð²‰-𲉒陚陪-険ä§-䧖𨹵-ð¨ºð«•„𫕅𬯄-𬯊𮥌-𮥑𮸨𱀗-𱀠𲉓-𲉕陻-階éšä§—-䧙𨺞-𨺿𫕆-ð«•ð« ƒð¬¯‹-ð¬¯ð®¥’𮸩𱀡-𱀩𲉖-𲉛éšéš‘-隙﨩䧚-䧟𨻀-𨻭𫕎ð«•ð¬¯-𬯓𮥓-𮥚𱀪𱀫𲉜ð²‰éšš-隡䧠-䧣𨻮-𨼉ð«•-𫕓𬯔-𬯘𮥛-𮥟𮸪𱀬-𱀰𲉞-𲉡隢-隥䧤-䧦䧩𨼊-𨼩𫕔-𫕗𬯙-𬯛𮥠-𮥤𱀱-𱀶隦-隫䧧䧨䧪𨼪-𨼾𬯜-𬯟𮥥-𮥩𱀷-𱀺隬-隲䧫-䧭𨼿-𨽌𬯠𮥪-𮥮𱀻𲉢隳ð¨½-𨽕𬯡𮥯𱀼-𱀿𲉣隴䧮𨽖-𨽡𫕘𮥰ð±€-ð±‚隵䧯𨽢-𨽥𬯢-𬯤𮥱𲉤䧰𨽦-𨽫𬯥-𬯧ð±ƒð±„𨽬𨽭𬯨𲉥𨽮𨽯𮥲𲉦𨽰𨽱𬯩𮥳鿧𨽲-𨽵]
[radical 171=⾪隶:隶𮥴𨽶-𨽻𫕙隷𨽼-𨽾隸𨽿𮥵𨾀-𨾄]
-[radical 172=⾫隹:éš¹-难䧱𨾅-𨾇ð±…𲉧隿雀䧲䧳𨾈-𨾑𮥶ð±†-ð±ˆð²‰¨é›-雈䧴-䧶𨾒-𨾟𫕚𬯪𮥷-𮥺ð±‰ð²‰©é›‰-é›ä§·-䧺𨾠-𨾱𬯫𮥻𲉪é›-雒䧻𨾲-𨿊𫕛𬯬𬯭𲉫雓䧼䧽𨿋-𨿟𬯮𮥼雔雕䧾䧿𨿠-𨿾𬯯𬯰𮥽-𮥿𲉬𲉭雖ä¨ä¨‚𨿿-𩀖𬯱𮦀ð±Šð²‰®é›—-雠䨃𩀗-𩀣𫕜ð®¦ð±‹é›¡-難䨄𩀤-ð©€³ð±Œä¨…-䨇𩀴-ð©†ð¬¯²-𬯴ð±é›¤ð©‡-ð©’𲉯䨈ð©“-ð©›ð¬¯µð¬¯¶ð±Žð±ð©œ-ð©¥ð¬¯·é›¥é›¦ð©¦-ð©«ð®¦‚䨉ð©¬-ð©±ð®¦ƒð±é›§ð©²ð©³ä¨Šð©´ð©µ]
-[radical 173=⾬雨:雨𮦄ð©¶-ð©¸ð«•ð±‘𲉰雩-雫䨋ð©¹-ð©‚𫕞𬯸𮦅雬-雳䨌ä¨ð©‚‚-𩂑𫕟𫕠𬯹𬯺𮦆-𮦉𲉱𲉲雴-雾䨎𩂒-𩂡𫕡𫕢𬯻𮦊-ð®¦ð±’ð±“𲉳𲉴雿-éœä¨-䨖𩂢-𩂶𫕣𫕤𮦎ð®¦ð²‰µ-𲉷霂-霊䨗-䨙𩂷-𩃑𫕥𫕦𬯼𬯽ð®¦-𮦓ð±”-ð±šð²‰¸éœ‹-霗䨚-ä¨ð©ƒ’-𩃴𫕧𫕨𬯾-𬰃𮦔-𮦛ð±›-ð±Ÿð²‰¹-ð²Šéœ˜-霠䨞-䨤𩃵-𩃽𩃿-𩄖𫕩𫕪𬰄-𬰇𮦜-𮦣ð± -ð±¢éœ¡-霥䨥-䨪𩃾𩄗-𩄭𩄯-𩄺𫕫𬰈𮦤-𮦫𲊂𲊃霦-霭䨫-䨯𩄻-𩅜𫕬𫕭𬰉𬰊𮦬ð±£ð²Š„-𲊇霮-霴䨰䨱ð©…-𩅻𫕮-𫕱𬰋-ð¬°ð®¦­-𮦲𲊈𲊉霵-霻𩅼-ð©†ð«•²ð¬°Ž-ð¬°ð®¦³-𮦶𲊊霼-é€ä¨²-䨴𩆑-𩆣𫕳𫕴𬰑-𬰔𮦷-𮦻ð±¤ð²Š‹ð²ŠŒé䨵䨶𩆤-𩆬𮦼ð±¥-ð±¨ð²Š-ð²Šé‚-éˆä¨·ð©†­-𩆴𫕵𫕶𮦽ð±©é‰ä¨¸ð©†µ-𩆾𮦾éŠð©†¿-𩇇𮦿𲊑𲊒é‹-éŽé¿¨ä¨¹ð¬°•ð®§€ð®§ð²Š“𩇈𩇉𲊔é𩇊-𩇎𫕷𬰖𮧂ð©‡ð±ªð©‡ð©‡‘ð±«ä¨ºð©‡’é𩇓𩇔䨻ð±¬]
-[radical 174=â¾­é‘:é‘é’𩇕𫕸𲊕é“é”𩇖𩇗é•é–𩇘-𩇛𫕹𫕺𬰗𬰘𮧃é—-é™ð©‡œð²Š–éšð±­ð±®ð²Š—é›éœð©‡ð©‡žð«•»ð©‡Ÿé𩇠𲊘𩇡𫕼𩇢𩇣䨼𩇤𩇥]
+[radical 172=⾫隹:éš¹-难䧱𨾅-𨾇ð±…𲉧隿雀䧲䧳𨾈-𨾑𮥶ð±†-ð±ˆð²‰¨é›-雈䧴-䧶𨾒-𨾟𫕚𬯪𮥷-𮥺ð±‰ð²‰©é›‰-é›ä§·-䧺𨾠-𨾱𬯫𮥻𲉪é›-雒䧻𨾲-𨿊𫕛𬯬𬯭𲉫雓䧼䧽𨿋-𨿟𬯮𮥼雔雕䧾䧿𨿠-𨿾𬯯𬯰𮥽-𮥿𲉬𲉭雖ä¨ä¨‚𨿿-𩀖𬯱𮦀ð±Šð²‰®é›—-雠䨃𩀗-𩀣𫕜ð®¦ð±‹é›¡-難䨄𩀤-ð©€³ð±Œä¨…-䨇𩀴-ð©†ð¬¯²-𬯴ð±é›¤ð©‡-ð©’𲉯䨈ð©“-ð©›ð¬¯µð¬¯¶ð±Žð±ð©œ-ð©¦ð¬¯·é›¥é›¦ð©§-ð©«ð®¦‚䨉ð©¬-ð©±ð®¦ƒð±é›§ð©²ð©³ä¨Šð©´ð©µ]
+[radical 173=⾬雨:雨𮦄ð©¶-ð©¸ð«•ð±‘𲉰雩-雫䨋ð©¹-ð©‚𫕞𬯸𮦅𮸫雬-雳䨌ä¨ð©‚‚-𩂑𫕟𫕠𬯹𬯺𮦆-𮦉𲉱𲉲雴-雾䨎𩂒-𩂡𫕡𫕢𬯻𮦊-ð®¦ð®¸¬ð±’ð±“𲉳𲉴雿-éœä¨-䨖𩂢-𩂶𫕣𫕤𮦎ð®¦ð²‰µ-𲉷霂-霊䨗-䨙𩂷-𩃑𫕥𫕦𬯼𬯽ð®¦-𮦓ð±”-ð±šð²‰¸éœ‹-霗䨚-ä¨ð©ƒ’-𩃴𫕧𫕨𬯾-𬰃𮦔-𮦛ð±›-ð±Ÿð²‰¹-ð²Šéœ˜-霠䨞-䨤𩃵-𩃽𩃿-𩄖𫕩𫕪𬰄-𬰇𮦜-𮦣ð± -ð±¢éœ¡-霥䨥-䨪𩃾𩄗-𩄭𩄯-𩄺𫕫𬰈𮦤-𮦫𲊂𲊃霦-霭䨫-䨯𩄻-𩅜𫕬𫕭𬰉𬰊𮦬ð±£ð²Š„-𲊇霮-霴䨰䨱ð©…-𩅻𫕮-𫕱𬰋-ð¬°ð®¦­-𮦲𲊈𲊉霵-霻𩅼-ð©†ð«•²ð¬°Ž-ð¬°ð®¦³-𮦶𲊊霼-é€ä¨²-䨴𩆑-𩆣𫕳𫕴𬰑-𬰔𮦷-𮦻ð±¤ð²Š‹ð²ŠŒé䨵䨶𩆤-𩆬𮦼ð±¥-ð±¨ð²Š-ð²Šé‚-éˆä¨·ð©†­-𩆴𫕵𫕶𮦽ð±©é‰ä¨¸ð©†µ-𩆾𮦾éŠð©†¿-𩇇𮦿𲊑𲊒é‹-éŽé¿¨ä¨¹ð¬°•ð®§€ð®§ð²Š“𩇈𩇉𲊔é𩇊-𩇎𫕷𬰖𮧂ð©‡ð±ªð©‡ð©‡‘ð±«ä¨ºð©‡’é𩇓𩇔䨻ð±¬]
+[radical 174=â¾­é‘:é‘é’𩇕𫕸𲊕é“é”𩇖𩇗é•é–𩇘-𩇛𫕹𫕺𬰗𬰘𮧃é—-é™ð©‡œð®¸­ð²Š–éšð±­ð±®ð²Š—é›éœð©‡ð©‡žð«•»ð©‡Ÿé𩇠𲊘𩇡𫕼𩇢𩇣䨼𩇤𩇥]
[radical 175=â¾®éž:éžð©‡¦-𩇨䨽䨾𩇩-𩇬𬰙éŸä¨¿ð©‡­-𩇴𮧄𩇵𩇶𬰚𬰛𮧅𮧆𩇷𫕽𮧇é ä©€ð©‡¸-𩇻𬰜𩇼𩇽ð¬°ð²Š™é¡ð¬°žä©ð©‡¾-ð©ˆð±¯ð«•¾ð¬°Ÿð®§ˆð«•¿ð©ˆ‚]
[radical 176=⾯é¢:é¢é£ð š‘𩈃-𩈅𮧉䩂-䩄𩈆-𩈌é¤ä©…-䩇ð©ˆ-𩈘𫖀𬰠𮧊𮧋é¥ð¤Ž‚𩈙-𩈠ð«–𮧌é¦ä©ˆä©‰ð©ˆ¡-𩈪𫖂ð®§ä©Šð©ˆ«-𩈱𬰡𮧎𩈲-𩈷𫖃ð®§ð²Ššð©ˆ¸-𩈺ð±°ä©‹ð©ˆ»-𩉀𫖄𬰢𬰣ð®§é§ä©Œä©ð©‰-𩉉𮧑𮧒䩎𩉊𩉋é¨ð©‰Œ-ð©‰ä©ð©‰‘-𩉚]
-[radical 177=â¾°é©:é©ð®§“éªð©‰›ð©‰œé«-é±ä©-ä©’ð©‰-𩉠ð±±é²-é¹ä©“-䩘𩉡-𩉷𮧔ð±²ð²Š›éº-鞆䩙-䩞𩉸-ð©Šð«–…𫖆𮧕-𮧗ð±³ð²Šœéž‡-éž’ä©Ÿð©Š-𩊨𫖇𫖈𬰤𮧘𮧙ð±´ð±µð²Šéž“-鞙䩠-䩧𩊩-𩊾𬰥𮧚-ð®§ð±¶ð²Šžéžš-鞡䩨-䩮𩊿-𩋞𬰦𮧞ð±·éž¢-鞰䩯-䩵𩋟-𩌂𬰧𮧟-𮧢ð±¸-ð±ºéž±-鞷䩶-䩻𥌕𩌃-𩌥𮧣-𮧥ð±»ð±¼ð²ŠŸéž¸-鞻䩼-䩾𩌦-ð©‚𫖉𮧦-𮧩鞼-éž¿ä©¿-䪄ð©ƒ-ð©’𫖊𬰨𬰩𮧪𮧫ð±½éŸ€-韃䪅䪆ð©“-ð©¤ð«–‹ð®§¬ð®§­éŸ„韅䪇䪈ð©¥-ð©±ð²Š éŸ†-韈䪉ð©²-ð©·äªŠäª‹ð©¸-ð©ºð©¼-ð©¾ð±¾ð²Š¡éŸ‰äªŒäªð©¿-𩎆䪎𩎇-𩎊韊𩎋-ð©Ž‘]
+[radical 177=â¾°é©:é©ð®§“éªð©‰›ð©‰œé«-é±ä©-ä©’ð©‰-𩉠ð±±é²-é¹ä©“-䩘𩉡-𩉷𮧔𮸮ð±²ð²Š›éº-鞆䩙-䩞𩉸-ð©Šð«–…𫖆𮧕-𮧗ð±³ð²Šœéž‡-éž’ä©Ÿð©Š-𩊨𫖇𫖈𬰤𮧘𮧙ð±´ð±µð²Šéž“-鞙䩠-䩧𩊩-𩊾𬰥𮧚-ð®§ð±¶ð²Šžéžš-鞡䩨-䩮𩊿-𩋞𬰦𮧞ð±·éž¢-鞰䩯-䩵𩋟-𩌂𬰧𮧟-𮧢ð±¸-ð±ºéž±-鞷䩶-䩻𥌕𩌃-𩌥𮧣-𮧥ð±»ð±¼ð²ŠŸéž¸-鞻䩼-䩾𩌦-ð©‚𫖉𮧦-𮧩鞼-éž¿ä©¿-䪄ð©ƒ-ð©’𫖊𬰨𬰩𮧪𮧫ð±½éŸ€-韃䪅䪆ð©“-ð©¤ð«–‹ð®§¬ð®§­éŸ„韅䪇䪈ð©¥-ð©±ð²Š éŸ†-韈䪉ð©²-ð©·äªŠäª‹ð©¸-ð©ºð©¼-ð©¾ð±¾ð²Š¡éŸ‰äªŒäªð©¿-𩎆䪎𩎇-𩎊韊𩎋-ð©Ž‘]
[radical 178=⾱韋:韋𮧮-𮧰𫖌韌𩎒ð±¿äªð©Ž“-ð©Ž—ð«–𬰪𱂀𲊢éŸéŸŽäª-䪓𩎘-ð©Ž£ð±‚éŸ-韑𩎤-𩎮𫠄𬰫-𬰭𮧱韒䪔𩎯-𩎷𱂂韓-韕䪕𩎸-ð©„𫖎韖-韚䪖-䪘ð©…-ð©Žð¬°®ð®§²ð²Š£ð²Š¤éŸœ-韟䪙䪚ð©-ð©—韛韠ð©˜-ð©Ÿð«–韡韢䪛ð© -ð©§ð®§³éŸ£äªœð©¨-ð©­äªð©®-ð©±ð¬°¯éŸ¤éŸ¥ð©²ð©³ð«–ð©´ð©µð¬°°ð©¶-ð©»]
-[radical 178'=⻙韦:韦韧𬰱ð©¼ð«–‘𬰲𮧴𱂃韨ð©½ð©¾ð¬°³ð¬°´ð±‚„𱂅𲊥𫖒𮧵𱂆-𱂉韩𫖓韪韫ð©¿ð©€ð« …𬰵𱂊韬𫖔-𫖖𬰶𬰷𱂋𱂌𬰸]
+[radical 178'=⻙韦:韦韧𬰱ð©¼ð«–‘𬰲𮧴𱂃韨ð©½ð©¾ð¬°³ð¬°´ð±‚„𱂅𲊥𫖒𮧵𮸯𱂆-𱂉韩𫖓韪韫ð©¿ð©€ð« …𬰵𮸰𱂊韬𫖔-𫖖𬰶𬰷𱂋𱂌𬰸]
[radical 179=⾲韭:韭韮䪞ð©ð©‚𲊦ð±‚韯䪟ð©ƒéŸ°ð©„韱䪠ð©…-ð©ˆéŸ²äª¡äª¢ð©‰ð©Šäª£ð©‹ð©ð©Žð±‚Žäª¤ð©Œð©-ð©“䪥ð©”-ð©–]
-[radical 180=⾳音:音竟章䪦-䪨ð©—𮧶𮧷ð±‚韴韵䪩ð©˜ð©™ð«–—韶韷䪪ð©š-ð©ð«–˜ð¬°¹-𬰻𮧸ð©ž-ð©¦ð¬°¼ð®§¹ð®§ºð²Š§éŸ¸äª«äª¬ð©§-ð©¬ð¬°½ð®§»ð±‚𱂑ð©­-ð©°ð²Š¨éŸ¹éŸºäª­ð©±-ð©´ð«–™ð®§¼ð±‚’𱂓𲊩韻韼䪮䪯ð©µ-ð©¸ð®§½éŸ½-響ð©¹-ð©¾ð«–šð©¿-ð©‘𫖛𮧾䪰𩑂-𩑆𮧿頀𩑇𩑈𫖜𬰾𩑉𩑊]
-[radical 181=â¾´é :é ð©‘‹é ‚-é „ð©‘Œ-ð©‘𬰿項-頉䪱䪲ð©‘-𩑘𬱀頊-頓頙䪳-䪵𩑙-𩑯ð«–𮨀-𮨂𱂔𱂕頔-領頚䪶-䪾𩑰-ð©’Žð«–žð¬±ð¬±‚𮨃-𮨆𲊪-𲊬頛-頣頦-頬䪿-ä«‚ð©’-𩒭𬱃𮨇-𮨊𱂖𱂗𲊭𲊮頤頥頭-頽䫃-ä«Šð©’®-𩓜𫖟𫖠𬱄-𬱇𮨋𮨌𱂘𱂙𲊯頿-é¡Šä«‹-ä«“ð©“-𩓿𫖡𬱈𬱉ð®¨-𮨔𲊰-𲊲頾顋-é¡•ä«”-ä«ð©”€-𩔘𫖢𫖣𬱊𬱋𮨕𮨖𲊳𲊴顖-é¡žä«ž-䫧𩔙-𩔲𫖤𮨗-𮨛𱂚-𱂜𲊵𲊶顟-顣䫨-ä««ð©”³-𩕈𫖥𫖦𬱌ð¬±ð®¨œð®¨ð²Š·é¡¤-顨䫬-䫱𩕉-𩕞𫖧𬱎𮨞𮨟ð±‚𲊸顩-顫䫲-ä«´ð©•Ÿ-ð©•«ð«–¨ð¬±ð®¨ ð®¨¡é¡¬-顯𩕬-𩕽𱂞顰䫵䫶𩕾-ð©–…ð«–©ð¬±ð®¨¢ð®¨£é¡±é¡²ä«·ð©–†-𩖈𮨤𮨥𩖉-𩖎𬱑𱂟顳顴ð©–-𩖓𬱒]
-[radical 181'=⻚页:页-顷𬱓顸-须𫖪𱂠𲊹顼-预𫖫𫠆𬱔𬱕𱂡颅-颈𫖬𫖭𬱖-𬱚𱂢𲊺𲊻颉-é¢ð«–®-𫖱𬱛-𬱢𱂣-𱂨é¢-颖𫖲𫖳𬱣-𬱥𱂩-𱂬𲊼𲊽颗𩖕𩖖𫖴-𫖶𬱦-𬱬𱂭-𱂰题-é¢ð«–·ð¬±­-𬱯𱂱-𱂳𲊾-𲋀颞-颡𫖸𬱰𱂴-𱂹ð²‹ð«–¹ð±‚ºé¢¢é¢£ð¬±±ð±‚»ð²‹‚颤𩖗𲋃颥𬱲颦𫖺颧𬱳]
-[radical 182=⾵風:風𲋄䫸𩖘𩖙𮨦颩颪䫹𩖚-𩖡颫颬䫺-䫽𩖢-𩖯𩖱-𩖳𫖻𮨧𱂼颭-颱䫾-䬃𩖴-𩗃𫖼𮨨𱂽-𱂿颲颳䬄䬅𠙬𩗄-𩗒𮨩-𮨫颴颵䬆-䬊𩗓-𩗧𮨬𱃀-𱃂𲋅颶颷䬋-ä¬ð©—¨-𩘄𫖽𮨭-𮨯𱃃-𱃆颸-颺䬑-䬗𩘅-ð©˜ð©˜-𩘛𫖾𫖿𬱴𱃇-𱃉𲋆-𲋈颻-飀䬘-䬚𩘎𩘜-𩘬𫗀-𫗂𮨰𱃊é£-飄䬛䬜𩘭-𩘷𮨱𱃋-ð±ƒé£…-飊ä¬ð©˜¸-𩙇飋𩙈-ð©™ð«—ƒð«—„𮨲𱃎ð±ƒð²‹‰-𲋋䬞𩙎-ð©™ð«—…𲋌䬟𩙑-ð©™•ð«—†ð±ƒð²‹ð©™–-𩙜𱃑飌é£ð©™ð©™žð±ƒ’𱃓𩙟𮨳𩙠-𩙤]
-[radical 182'=⻛风:风é£ð±ƒ”𫗇𫠇𬱵-𬱷𱃕𲋎ð²‹é£-飒𩙥𩙦𫠈𬱸-𬱻𱃖𱃗ð²‹ð¬±¼ð±ƒ˜-𱃚𩙧𫗈𬱽𱃛飓𩙨-𩙪𫗉𬱾-𬲀𮨴𱃜ð±ƒð²‹‘飔飖𩙫𩙬𫗊ð¬²ð¬²‚𱃞飕飗𩙭𩙮𬲃𬲄飘𮨵𱃟飙飚𩙯𬲅𬲆𱃠𩙰𫗋𬲇𬲈]
+[radical 180=⾳音:音竟章䪦-䪨ð©—𮧶𮧷𮸱ð±‚韴韵䪩ð©˜ð©™ð«–—𮸲𮸳韶韷䪪ð©š-ð©ð«–˜ð¬°¹-𬰻𮧸ð©ž-ð©¦ð¬°¼ð®§¹ð®§ºð²Š§éŸ¸äª«äª¬ð©§-ð©¬ð¬°½ð®§»ð±‚𱂑ð©­-ð©°ð²Š¨éŸ¹éŸºäª­ð©±-ð©´ð«–™ð®§¼ð±‚’𱂓𲊩韻韼䪮䪯ð©µ-ð©¸ð®§½éŸ½-響ð©¹-ð©¾ð«–šð©¿-ð©‘𫖛𮧾䪰𩑂-𩑆𮧿頀𩑇𩑈𫖜𬰾𩑉𩑊]
+[radical 181=â¾´é :é ð©‘‹é ‚-é „ð©‘Œ-ð©‘𬰿項-頉䪱䪲ð©‘-𩑘𬱀頊-頓䪳-䪵𩑙-𩑯ð«–𮨀-𮨂𱂔𱂕頔-頚䪶-䪾𩑰-ð©’Žð«–žð¬±ð¬±‚𮨃-𮨆𲊪-𲊬頛-頣頦-頬䪿-ä«‚ð©’-𩒭𬱃𮨇-𮨊𱂖𱂗𲊭𲊮頤頥頭-頽䫃-ä«Šð©’®-𩓜𫖟𫖠𬱄-𬱇𮨋𮨌𱂘𱂙𲊯頿-é¡Šä«‹-ä«“ð©“-𩓿𫖡𬱈𬱉ð®¨-𮨔𲊰-𲊲頾顋-é¡•ä«”-ä«ð©”€-𩔘𫖢𫖣𬱊𬱋𮨕𮨖𲊳𲊴顖-é¡žä«ž-䫧𩔙-𩔲𫖤𮨗-𮨛𱂚-𱂜𲊵𲊶顟-顣䫨-ä««ð©”³-𩕈𫖥𫖦𬱌ð¬±ð®¨œð®¨ð²Š·é¡¤-顨䫬-䫱𩕉-𩕞𫖧𬱎𮨞𮨟ð±‚𲊸顩-顫䫲-ä«´ð©•Ÿ-ð©•«ð«–¨ð¬±ð®¨ ð®¨¡é¡¬-顯𩕬-𩕽𱂞顰䫵䫶𩕾-ð©–…ð«–©ð¬±ð®¨¢ð®¨£é¡±é¡²ä«·ð©–†-𩖈𮨤𮨥𩖉-𩖎𬱑𱂟顳顴ð©–-𩖓𬱒]
+[radical 181'=⻚页:页-顷𬱓顸-须𫖪𮸴𱂠𲊹顼-预𫖫𫠆𬱔𬱕𱂡颅-颈𫖬𫖭𬱖-𬱚𱂢𲊺𲊻颉-é¢ð«–®-𫖱𬱛-𬱢𱂣-𱂨é¢-颖𫖲𫖳𬱣-𬱥𱂩-𱂬𲊼𲊽颗𩖕𩖖𫖴-𫖶𬱦-𬱬𮸵𱂭-𱂰题-é¢ð«–·ð¬±­-𬱯𮸶-𮸸𱂱-𱂳𲊾-𲋀颞-颡𫖸𬱰𱂴-𱂹ð²‹ð«–¹ð±‚ºé¢¢é¢£ð¬±±ð®¸¹ð®¸ºð±‚»ð²‹‚颤𩖗𲋃颥𬱲颦𫖺颧𬱳]
+[radical 182=⾵風:風䫸𩖘𩖙𮨦颩颪䫹𩖚-𩖡颫颬䫺-䫽𩖢-𩖯𩖱-𩖳𫖻𮨧𱂼颭-颱䫾-䬃𩖴-𩗃𮨨𱂽-𱂿颲颳䬄䬅𠙬𩗄-𩗒𮨩-𮨫颴颵䬆-䬊𩗓-𩗧𮨬𱃀-𱃂𲋅颶颷䬋-ä¬ð©—¨-𩘄𮨭-𮨯𱃃-𱃆颸-颺䬑-䬗𩘅-ð©˜ð©˜-𩘛𬱴𱃇-𱃉𲋆颻-飀䬘-䬚𩘎𩘜-𩘬𮨰𱃊é£-飄䬛䬜𩘭-𩘷𮨱𱃋-ð±ƒé£…-飊ä¬ð©˜¸-𩙇飋𩙈-ð©™‹ð©™ð®¨²ð±ƒŽð±ƒð²‹‰ð²‹Šä¬žð©™Ž-ð©™ð«—…𲋌䬟𩙑-ð©™•ð«—†ð±ƒð²‹ð©™–-𩙜𱃑飌é£ð©™ð©™žð±ƒ’𱃓𩙟𮨳𩙠-𩙤]
+[radical 182'=⻛风:风é£ð±ƒ”𫗇𫠇𬱵𬱷𱃕𲋎ð²‹é£-飒𩙥𩙦𫠈𬱸𬱺𬱻𱃖𱃗ð²‹ð¬±¼ð±ƒ˜-𱃚𩙧𫗈𬱽𱃛飓𩙨-𩙪𫗉𬱾-𬲀𮨴𮸻𱃜ð±ƒð²‹‘飔飖𩙫𩙬𫗊𱃞飕飗𩙭𩙮飘𮨵𱃟飙飚𩙯𬲅𬲆𮸼𱃠𩙰𫗋]
+[radical 182''=𲋄:𲋄𬱶𫖼𬱹𫖽-ð«–¿ð¬²ð¬²‚𲋇𲋈𫗀-𫗂𬲃𬲄𩙌𫗃𫗄𬲇𲋋𬲈]
[radical 183=⾶飛:飛𩙱-𩙳𬲉𩙴䬠䬡𩙵-𩙹飜𩙺𩙻𲋒𩙼𩙽𬲊é£ð©™¾]
-[radical 183'=⻜飞:飞𮨶𫗌𲋓]
-[radical 184=⾷食:食飠𠋑𩙿-ð©šð©šƒð©š‚飡-飤䬢䶿𩚄-𩚆飥-飨䬣-䬥𩚇-𩚔𮨷𮨸𱃡-𱃣𲋔飩-飲䬦-䬪𩚕-𩚧ð«—𬲋-𬲎𱃤飳-飹飻-飿䬫-䬴𩚨-𩛈𫗎𮨹-𮨻𲋕𲋖飺餀-é¤ä¬µ-䬻𩛉-𩛜ð«—-ð«—’ð¬²-𬲑𮨼𱃥-𱃧𲋗𲋘é¤-餙é¤ä¬¼-ä­‚ð©›-𩛹𫗓𬲒-𬲔𱃨𱃩𲋙餚-餜餞-餩䭃-䭇𩛺-𩜢𩜤-𩜬𬲕𬲖𮨽-𮩀𱃪𱃫𲋚餪-餵餷䭈-ä­ð©œ£ð©œ­-ð©˜ð«—”-𫗗𬲗-𬲙ð®©-𮩇𲋛-ð²‹é¤¶é¤¸-饃ä­-ä­”ð©™-ð©³ð©µ-ð©¼ð«—˜ð®©ˆ-𮩋𱃬-𱃮𲋞饄-饉䭕-ä­—ð§ˆð©´ð©½-𩞠𫗙𫗚𬲚𮩌-ð®©ð±ƒ¯ð²‹Ÿé¥Š-饓䭘-䭜𡓷𩞡-𩞵𩞷-𩞽𫗛𬲛-𬲞ð®©ð±ƒ°é¥”-饙ä­-䭠𩞶𩞾-𩟒𬲟𬲠𮩑-𮩕𲋠饚-饜䉵䭡-䭤𩟓-𩟣𫗜ð«—䭥𩟤-𩟬𬲡𮩖𮩗é¥ð©Ÿ­-𩟵𮩘𲋡饞饟䭦䭧𩟶𮩙𮩚䭨𩟷-𩟺𬲢𬲣饠饡䭩𬲤𩟻饢𩟼𩟽]
-[radical 184'=⻠饣:饣-饥𬲥𬲦饦饧𫗞𬲧𬲨𱃱饨-饮𩟾-𩠀𫗟𫗠𬲩𬲪𱃲-𱃴𲋢饯-饴ð© ð© ‚ð«—¡-𫗣𬲫-𬲳𱃵-𱃷𲋣𲋤饵-饼𩠃𫗤𫗥𬲴-𬲷𮩛𮩜𱃸-𱃻𲋥饽-馂𩠄𩠅𩠇𫗦-𫗨𬲸-𬲻馃-馆𩠆𩠈𩠉𫗩𫗪𬲼-𬳂𱃼-𱃿𲋦𲋧馇馈馊馋𩠊𩠋𫗫-𫗯𬳃-𬳇ð®©ð±„€-𱄄𲋨馉馌-é¦ð© Œð«—°ð«—±ð¬³ˆ-ð¬³ð±„…𲋩-𲋫馑馒ð© ð© Žð¬³Ž-ð¬³ð²‹¬é¦“馔䭪ð© ð«—²ð«—³ð¬³‘𬳒𮩞𱄆𱄇𫗴𬳓𬳔𱄈-𱄊𫗵馕]
+[radical 183'=⻜飞:飞𮨶𮸽𫗌𲋓]
+[radical 184=⾷食:食飠𠋑𩙿-ð©šð©šƒð©š‚飡-飤䬢䶿𩚄-𩚆飥-飨䬣-䬥𩚇-𩚔𮨷𮨸𱃡-𱃣𲋔飩-飲䬦-䬪𩚕-𩚧ð«—𬲋-𬲎𮸾𱃤飳-飹飻-飿䬫-䬴𩚨-𩛈𫗎𮨹-𮨻𲋕𲋖飺餀-é¤ä¬µ-䬻𩛉-𩛜ð«—-ð«—’ð¬²-𬲑𮨼𱃥-𱃧𲋗𲋘é¤-餙é¤ä¬¼-ä­‚ð©›-𩛹𫗓𬲒-𬲔𱃨𱃩𲋙餚-餜餞-餩䭃-䭇𩛺-𩜢𩜤-𩜬𬲕𬲖𮨽-𮩀𱃪𱃫𲋚餪-餵餷䭈-ä­ð©œ£ð©œ­-ð©˜ð«—”-𫗗𬲗-𬲙ð®©-𮩇𲋛-ð²‹é¤¶é¤¸-饂ä­-ä­”ð©™-ð©³ð©µ-ð©¼ð«—˜ð®©ˆ-𮩋𱃬-𱃮𲋞饃-饉䭕-ä­—ð§ˆð©´ð©½-𩞠𫗙𫗚𬲚𮩌-ð®©ð±ƒ¯ð²‹Ÿé¥Š-饓䭘-䭜𡓷𩞡-𩞵𩞷-𩞽𫗛𬲛-𬲞ð®©ð±ƒ°é¥”-饙ä­-䭠𩞶𩞾-𩟒𬲟𬲠𮩑-𮩕𲋠饚-饜䉵䭡-䭤𩟓-𩟣𫗜ð«—䭥𩟤-𩟬𬲡𮩖𮩗é¥ð©Ÿ­-𩟵𮩘𲋡饞饟䭦䭧𩟶𮩙𮩚䭨𩟷-𩟺𬲢𬲣饠饡䭩𬲤𩟻饢𩟼𩟽]
+[radical 184'=⻠饣:饣-饥𬲥𬲦饦饧𫗞𬲧𬲨𱃱饨-饮𩟾-𩠀𫗟𫗠𬲩𬲪𱃲-𱃴𲋢饯-饴ð© ð© ‚ð«—¡-𫗣𬲫-𬲳𱃵-𱃷𲋣𲋤饵-饼𩠃𫗤𫗥𬲴-𬲷𮩛𮩜𱃸-𱃻𲋥饽-馂𩠄𩠅𩠇𫗦-𫗨𬲸-𬲻𮸿馃-馆𩠆𩠈𩠉𫗩𫗪𬲼-𬳂𱃼-𱃿𲋦𲋧馇馈馊馋𩠊𩠋𫗫-𫗯𬳃-𬳇ð®©ð±„€-𱄄𲋨馉馌-é¦ð© Œð«—°ð«—±ð¬³ˆ-ð¬³ð±„…𲋩-𲋫馑馒ð© ð© Žð¬³Ž-ð¬³ð²‹¬é¦“馔䭪ð© ð«—²ð«—³ð¬³‘𬳒𮩞𱄆𱄇𫗴𬳓𬳔𱄈-𱄊𫗵馕]
[radical 185=⾸首:首ð© é¦—ð© ‘-𩠓𮩟𩠔𱄋𩠕-𩠙𫗶𮩠𱄌䭫䭬𩠚-𩠠𬳕𬳖𮩡𩠡-𩠧𫗷𬳗𬳘𮩢𮩣馘𩠨𩠩𫗸𬳙𮩤ð±„ä­­ð© ª-𩠭𮩥𮩦𲋭䭮𩠯𩠱𫗹𬳚𩠲𫗺𩠳𩠴𬳛𩠵-𩠷𫗻𩠸𩠹]
-[radical 186=⾹香:香𩠺馚𩠻-𩠽𬳜𱄎馛-é¦ä­¯ð© ¾-ð©¡ð©¡ƒð©¡„𩡂𩡅𩡆𫗼𫗽𮩧𮩨馞-馠𩡇𩡈ð±„𲋮馡-馣䭰-䭲𩡉-ð©¡‹ð©¡ð«—¾ð¬³ð¬³žð®©©ð®©ªð²‹¯ð²‹°é¦¤é¦¥ð©¡Œ-ð©¡Žð©¡-𩡒𫗿𬳟𬳠馦馧𩡓-𩡘𬳡-𬳣𮩫𮩬𲋱馨𩡙-𩡜𫘀ð«˜ð¬³¤-𬳦𮩭ð±„馩ð©¡-𩡡𫘂𬳧𮩮𩡢𩡣𫘃𮩯𮩰馪𩡤𮩱𲋲𥗶𩡥馫䭳𩡦𫘄]
-[radical 187=⾺馬:馬𫠉𩡧𩡨馭馮䭴𩡩-𩡯𮩲𱄑馯-馵䭵䭶𩡰-𩡶𫘅𬳨𮩳-𮩶馶-駇䭷-䭾𩡷-𩡾𩢀-𩢅𩢇-𩢌𫘆-𫘉𬳩𬳪𮩷-𮩹𱄒𲋳𲋴駈-駠䭿-䮅𩡿𩢆ð©¢-𩢭𮩺-𮩽𱄓-𱄗𲋵𲋶駡-駲䮆-ä®ð©¢®-𩣕𫘊𬳫𮩾-𮪄𱄘-𱄜𲋷駴-騃䮎-ä®’ð©£–-𩣬𩤷𬳬𮪅-𮪇ð±„-𱄢𲋸𲋹駳騄-験䮓-䮛𩣭-𩤖𩤞𫘋-𫘎𬳭-𬳯𮪈-𮪌𱄣騔-騨䮜-䮢𩤗-ð©¤ð©¤Ÿ-𩤶𩤸-𩤼ð«˜-𫘑ð®ª-𮪔𱄤-𱄨𲋺-𲋼騩-騸䮣-䮩𩤽-𩥪𫘒-𫘖𮪕𱄩-𱄭𲋽𲋾騹-驇龭䮪-䮱𩥫-ð©¦ð¬³°ð®ª–-𮪙𱄮-𱄱𲋿𲌀驈-驕䮲-䮶𩦂-ð©¦ð«˜—𬳱𱄲-𱄴ð²Œð²Œ‚é©–-驜䮷-䮹𩦞-𩦵𫘘𮪚𱄵𱄶𲌃é©-驟䮺-䮼𩦶-ð©§ð«˜™ð®ª›ð±„·ð±„¸ä®½ð©§‚-𩧎𮪜𱄹-𱄻驠-驣䮾ð©§-𩧓ð®ªð®ªžé©¤-驧龮䮿𩧔-𩧗𫘚𮪟驨驩䯀𩧘-𩧞𮪠驪ä¯ð©§Ÿð©§ é©«ð©§¡-𩧤𬳲䯂𩧥]
-[radical 187'=⻢马:马驭𲌄驮-驰𫘛𱄼-𱄿驱-驴𩧦𫘜ð«˜ð¬³³ð±…€-𱅂驵-骀𩧧-𩧭𩧯𫘞𫘟𫠊𬳴-𬳸𱅃-𱅈𲌅éª-骉䯃𩧮𩧰-𩧶𫘠𫘡𬳹-𬳾𱅉-𱅒骊-éªä¯„𩧷-𩧺𫘢-𫘤𬳿𬴀𮪡𮪢𱅓-𱅙𲌆éª-骖𩧻-𩧽𫘥-𫘧ð¬´ð¬´‚𱅚𱅛𲌇-𲌉骗-骛𩧾-𩨃𩨅-𩨊𫘨𫘩𬴃𬴄𮪣𱅜-𱅟骜-骟䯅𩨄𩨋-ð©¨ð«˜ª-𫘬𬴅𮪤𱅠-𱅥骠-骢𫘭𫘮𫠋𬴆-𬴈𱅦-𱅩骣𩨎ð©¨ð«˜¯ð¬´‰ð¬´Šð®ª¥ð±…ªð±…«ð²ŒŠð²Œ‹ð«˜°ð« Œð¬´‹éª¤ð¬´Œð©¨ð¬´éª¥ð¬´Žð±…¬éª¦éª§ð¬´ð«˜±ð¬´]
+[radical 186=⾹香:香𩠺馚𩠻-𩠽𬳜𱄎馛-é¦ä­¯ð© ¾-ð©¡ð©¡ƒð©¡„𩡂𩡅𩡆𫗼𫗽𮩧𮩨馞-馠𩡇𩡈ð±„𲋮馡-馣䭰-䭲𩡉-ð©¡‹ð«—¾ð¬³ð¬³žð®©©ð®©ªð²‹¯ð²‹°é¦¤é¦¥ð©¡Œ-𩡒𫗿𬳟𬳠馦馧𩡓-𩡘𬳡-𬳣𮩫𮩬𮹀𲋱馨𩡙-𩡜𫘀ð«˜ð¬³¤-𬳦𮩭ð±„馩ð©¡-𩡡𫘂𬳧𮩮𩡢𩡣𫘃𮩯𮩰馪𩡤𮩱𲋲𥗶𩡥馫䭳𩡦𫘄]
+[radical 187=⾺馬:馬𫠉𩡧𩡨馭馮䭴𩡩-𩡯𮩲𱄑馯-馵䭵䭶𩡰-𩡶𫘅𬳨𮩳-𮩶馶-駇䭷-䭾𩡷-𩡾𩢀-𩢅𩢇-𩢌𫘆-𫘉𬳩𬳪𮩷-𮩹ð®¹ð±„’𲋳𲋴駈-駠䭿-䮅𩡿𩢆ð©¢-𩢭𮩺-𮩽𱄓-𱄗𲋵𲋶駡-駲䮆-ä®ð©¢®-𩣕𫘊𬳫𮩾-𮪄𱄘-𱄜𲋷駴-騃䮎-ä®’ð©£–-𩣬𩤷𬳬𮪅-𮪇ð±„-𱄢𲋸𲋹駳騄-験䮓-䮛𩣭-𩤖𩤞𫘋-𫘎𬳭-𬳯𮪈-𮪌𱄣騔-騨䮜-䮢𩤗-ð©¤ð©¤Ÿ-𩤶𩤸-𩤼ð«˜-𫘑ð®ª-𮪔𱄤-𱄨𲋺-𲋼騩-騸䮣-䮩𩤽-𩥪𫘒-𫘖𮪕𱄩-𱄭𲋽𲋾騹-驇龭䮪-䮱𩥫-ð©¦ð¬³°ð®ª–-𮪙𱄮-𱄱𲋿𲌀驈-驕䮲-䮶𩦂-ð©¦ð«˜—𬳱𱄲-𱄴ð²Œð²Œ‚é©–-驜䮷-䮹𩦞-𩦵𫘘𮪚𱄵𱄶𲌃é©-驟䮺-䮼𩦶-ð©§ð«˜™ð®ª›ð±„·ð±„¸ä®½ð©§‚-𩧎𮪜𱄹-𱄻驠-驣䮾ð©§-𩧓ð®ªð®ªžé©¤-驧龮䮿𩧔-𩧗𫘚𮪟驨驩䯀𩧘-𩧞𮪠驪ä¯ð©§Ÿð©§ é©«ð©§¡-𩧤𬳲䯂𩧥]
+[radical 187'=⻢马:马驭𲌄驮-驰𫘛𮹂𱄼-𱄿驱-驴𩧦𫘜ð«˜ð¬³³ð®¹ƒð®¹„ð±…€-𱅂驵-骀𩧧-𩧭𩧯𫘞𫘟𫠊𬳴-𬳸𮹅𱅃-𱅈𲌅éª-骉䯃𩧮𩧰-𩧶𫘠𫘡𬳹-𬳾𮹆𱅉-𱅒骊-éªä¯„𩧷-𩧺𫘢-𫘤𬳿𬴀𮪡𮪢𮹇𮹈𱅓-𱅙𲌆éª-骖𩧻-𩧽𫘥-𫘧ð¬´ð¬´‚𮹉-𮹋𱅚𱅛𲌇-𲌉骗-骛𩧾-𩨃𩨅-𩨊𫘨𫘩𬴃𬴄𮪣𱅜-𱅟骜-骟䯅𩨄𩨋-ð©¨ð«˜ª-𫘬𬴅𮪤𮹌ð®¹ð±… -𱅥骠-骢𫘭𫘮𫠋𬴆-𬴈𮹎𱅦-𱅩骣𩨎ð©¨ð«˜¯ð¬´‰ð¬´Šð®ª¥ð®¹ð®¹ð±…ªð±…«ð²ŒŠð²Œ‹ð«˜°ð« Œð¬´‹éª¤ð¬´Œð©¨ð¬´éª¥ð¬´Žð±…¬éª¦éª§ð¬´ð«˜±ð¬´]
[radical 188=⾻骨:骨䯆骩䯇𩨑-𩨓𮪦骪-骮𩨔-𩨛骯-骱䯈䯉𩨜-𩨫𲌌骲-骷䯊-䯎𩨬-𩨼𮪧𮪨ð²Œéª¸-骼ä¯-䯔𩨽-𩩈𫘲𮪩𱅭-𱅯𲌎骽骾䯕-䯚𩩉-𩩖𬴑𬴒𮪪-𮪬骿-é«ä¯›ä¯œð©©—-𩩬𮪭-𮪯𱅰-ð±…²ð²Œé«‚-é«…ä¯-䯠𩩭-𩩿𫘳𫘴𮪰𮪱ð²Œé«†-髌䯡𩪀-𩪈𮪲é«-é«ä¯¢ð©ª‰-𩪖𮪳𮪴𲌑é«ä¯£ð©ª—-𩪟𱅳髑-體䯤𩪠-𩪫𮪵𲌒-𲌔髕䯥𩪬-𩪱髖䯦𩪲-𩪶𮪶髗𩪷-𩪺𬴓𮪷𲌕𩪻-𩪾]
[radical 189=⾼高:高髙䯧𫘵𬴔𱅴-𱅶𲌖䯨𩪿𩫀𱅷髚䯩ð©«-𩫉𬴕𮪸髛𩫊-ð©«ð«˜¶ð®ª¹ð±…¸-𱅺𩫎-𩫔𫘷𬴖𬴗𱅻𱅼𲌗𩫕-𩫙𬴘髜𩫚-ð©«ð¬´™ð¬´šð®ªºä¯ªð©«ž-𩫤𬴛𮪻𮪼𩫥𩫦𬴜é«ä¯«ð©«§ð¬´-𬴟髞𩫨-𩫪𬴠𱅽𱅾𲌘𲌙𩫫𩫬𬴡䯬𩫭𬴢𩫮𩫯𬴣𩫰-𩫲𬴤-𬴦𩫳]
[radical 190=⾽髟:髟𫘸髠䯭䯮𩫴-𩫸髡髢𩫹-𩫾𫘹𫘺𲌚髣-髪䯯-䯴𩫿-ð©¬ð«˜»ð¬´§ð®ª½-𮪿髫-髴䯵䯶𩬑-𩬯𫘼𮫀-𮫂𱅿髵-髻鬇䯷䯸𩬰-𩭆𫘽𬴨𬴩𮫃-𮫅𲌛髼-鬂䯹-䯼𩭇-ð©­ð«˜¾ð«˜¿ð¬´ªð®«†-𮫈𱆀ð±†ð²Œœ-𲌞鬃-鬆鬈䯽-䰃𩭞-𩭹𫙀ð«™ð¬´«ð¬´¬ð®«‰-𮫌𲌟𲌠鬉-é¬ä°„-䰇𩭺-𩮕𫙂𬴭𬴮ð®«ð®«Žð±†‚-𱆄é¬-鬓䰈-ä°‹ð©®–-ð©®®ð®«ð±†…鬔-鬘é¬ä°Œä°ð©®¯-𩯂𫙃𱆆𲌡鬙-鬜䰎𩯃-𩯚ð®«ð®«‘𱆇𲌢鬞-鬠𩯛-𩯥𬴯𮫒鬡鬢ä°-䰒𩯦-𩯯鬣䰓䰔𩯰-𩯹䰕𩯺-𩰀𮫓𱆈𲌣鬤ð©°-𩰇䰖𩰈𩰉]
[radical 191=⾾鬥:鬥𩰊-𩰌鬦ð©°-ð©°é¬§ð©°é¬¨ð©°‘𩰒鬩𩰓𩰔𬴰𮫔鬪䰗𩰕𮫕䰘𩰖-𩰘鬫𩰙-𩰛鬬鬭𩰜-𩰞𱆉𬴱鬮𩰟]
[radical 192=⾿鬯:鬯𮫖𱆊𩰠-𩰣𲌤𩰤-𩰦𮫗𩰧𲌥𩰨𲌦𮫘鬰𩰩𩰪鬱]
-[radical 193=⿀鬲:鬲𮫙𬴲𩰫𩰬𬴳䰙䰚𩰭𩰮𫙄䰛𩰯𩰰𫙅𬴴𱆋-ð±†é¬³ä°œð©°±-𩰸𬴵鬴𩰹-𩰽𬴶𱆎鬵鬶𩰾-𩱂鬷𩱃-𩱆𬴷鬸𩱇-𩱋鬹鬺𩱌-𩱑𫙆ð±†ð±†é¬»ä°ð©±’-𩱕𬴸𩱖-𩱣𬴹𱆑䰞ð©»ð©±¤ð©±¥ð¬´ºð®«šð±†’𩱦-𩱪𱆓𱆔𩱫𩱬𮫛𩱭𩱮𫙇𩱯-𩱳𬴻𬴼𩱴-𩱶𱆕𩱷𩱸]
-[radical 194=â¿é¬¼:鬼𩱹-𩱼𫙈𬴽𱆖鬽𩱽-𩲉𬴾鬾-魂䰟𩲊-𩲠𫙉𮫜ð®«ð±†—𱆘魃-魆䰠䰡𩲡-𩲹𲌧𲌨魇䰢䰣𩲺-𩳋𫙊𬴿𮫞𮫟𱆙𱆚魈魉𩳌-𩳡𫙋𬵀𮫠𱆛𲌩魊-é­ä°¤-䰧𩳢-𩳴𫙌ð«™ð®«¡-𮫣𱆜ð±†ð²Œª-𲌮䰨䰩𩳵-𩴅𮫤𱆞𱆟é­ä°ªð©´†-ð©´ð®«¥ð®«¦ð²Œ¯é­‘-é­”ð©´-𩴛𮫧魕魖䰫-ä°­ð©´œ-𩴭𫙎䰮𩴮-𩴰𮫨魗-魙䰯䰰𩴱-𩴹𱆠𱆡𲌰𩴺-𩴿𮫩𩵀-𩵃𮫪𩵄-𩵈𮫫𩵉𩵊䰱𱆢]
+[radical 193=⿀鬲:鬲𮫙𬴲𩰫𩰬𬴳䰙䰚𩰭𩰮𫙄䰛𩰯𩰰𫙅𬴴𱆋-ð±†é¬³ä°œð©°±-𩰸𬴵𮹑鬴𩰹-𩰽𬴶𱆎鬵鬶𩰾-𩱂鬷𩱃-𩱆𬴷鬸𩱇-𩱋鬹鬺𩱌-𩱑𫙆ð±†ð±†é¬»ä°ð©±’-𩱕𬴸𩱖-𩱣𬴹𱆑䰞ð©»ð©±¤ð©±¥ð¬´ºð®«šð±†’𩱦-𩱪𱆓𱆔𩱫𩱬𮫛𩱭𩱮𫙇𩱯-𩱳𬴻𬴼𩱴-𩱶𱆕𩱷𩱸]
+[radical 194=â¿é¬¼:鬼𩱹-𩱼𫙈𬴽𱆖鬽𩱽-𩲉𬴾𮹒鬾-魂䰟𩲊-𩲠𫙉𮫜ð®«ð±†—𱆘魃-魆䰠䰡𩲡-𩲹𲌧𲌨魇䰢䰣𩲺-𩳋𫙊𬴿𮫞𮫟𱆙𱆚魈魉𩳌-𩳡𫙋𬵀𮫠𱆛𲌩魊-é­ä°¤-䰧𩳢-𩳴𫙌ð«™ð®«¡-𮫣𱆜ð±†ð²Œª-𲌮䰨䰩𩳵-𩴅𮫤𱆞𱆟é­ä°ªð©´†-ð©´ð®«¥ð®«¦ð²Œ¯é­‘-é­”ð©´-𩴛𮫧魕魖䰫-ä°­ð©´œ-𩴭𫙎䰮𩴮-𩴰𮫨魗-魙䰯䰰𩴱-𩴹𱆠𱆡𲌰𩴺-𩴿𮫩𩵀-𩵃𮫪𩵄-𩵈𮫫𩵉𩵊䰱𱆢]
[radical 195=â¿‚é­š:魚𤋳𩵋𮫬-𮫯䰲魛-魞䰳𩵌-𩵓ð«™ð¬µð¬µ‚𱆣魟-魢䰴-䰶𩵔-𩵟𩶷ð«™ð¬µƒð¬µ„𮫰𱆤魣-魹䰷-䰾𩵠-𩶀𫙑𫙒𬵅𬵆𮫱𮫲𱆥-𱆨𲌱𲌲魺-鮘鮣䰿-䱉ð©¶-𩶠𩾀𫙓-𫙗𬵇-𬵌𮫳𮫴𱆩-𱆫𲌳鮙-鮢鮤-鮴鮺䱊-䱎𩶡-𩶶𩶸-𩷌𫙘-𫙟ð¬µ-𬵑𮫵-𮫸𱆬𲌴鮵-鮹鮻-鯓鯽ä±-䱘ð©·-𩷶𩾉𫙠-𫙣𬵒-𬵖𮫹-𮫽𱆭-𱆲𲌵-𲌷鯔-鯵鯻䱙-䱪𩷷-𩸽𫙤-𫙧𬵗-𬵛𮫾𮫿𱆳𱆴𲌸-𲌺鯶-鯺鯼鯾-鰛鰠䱫-䱴𩸾-𩹰𫙨-𫙪𬵜-𬵟𮬀-𮬅𱆵-𱆹𲌻𲌼鰜-é°Ÿé°¡-é°°é¿ä±µ-䱽𩹱-𩺬𫙫-𫙯ð« ð¬µ -𬵣𮬆-𮬊𱆺-𱆼鰱-鱈鷠鿳䱾-䲈𩺭-ð©»—ð«™°-𫙶𬵤-𬵩𮬋-ð®¬ð±†½ð±†¾ð²Œ½-ð²€é±‰-鱛䲉-ä²ð©»˜-ð©¼ð«™·-𫙼𬵪-𬵭𮬎-𮬒𱆿-ð±‡é±œ-鱧鱩-鱫ä²-䲕𩼂-𩼤ð©¾ð«™½-ð«šð« Žð¬µ®-𬵱𮬓𮬔𱇂ð²ð²‚鱨鱬-é±°ä²–-䲘𩼥-𩼺𫚂𫚃𬵲-𬵵𮬕𱇃鱱-鱶䲙𩼻-𩽌𫚄𬵶𮬖𱇄-𱇇ð²ƒé±·é±¸ä²šä²›ð©½-𩽙𬵷-𬵹𮬗𮬘𱇈𩽚-𩽦𫚅𬵺𮬙𮬚𱇉ð²„鱹鿩𩽧-𩽯𬵻𬵼鱺𩽰-𩽲𫚆𬵽𬵾𱇊ð²…𩽳-𩽸𫚇𬵿鱻𱇋𱇌䲜]
-[radical 195'=⻥鱼:é±¼ð±‡é±½ð¬¶€ð¬¶ð±‡Žð²†é±¾ð«šˆ-𫚊𬶂-𬶄ð±‡ð²‡ð²ˆé±¿-鲃鿕ä²ð©½¹-𩽻𫚋-ð«šð« ð¬¶…-𬶉𮬛ð±‡-𱇙ð²‰-ð²‹é²„-é²é¿´ä²žä²Ÿð«šŽ-ð«š’ð« ð¬¶Š-ð¬¶ð±‡š-𱇤ð²Œð²é²‘-鲟𩽼-𩽿𫚓-𫚘𬶎-ð¬¶ð®¬œð®¬ð±‡¥-𱇫ð²Ž-ð²‘é² -鲬鿵鿶ð©¾-𩾄𫚙-𫚛𬶑-𬶕𮬞𱇬-𱇴ð²’-ð²”é²­-鲻𩾅-𩾈𫚜-𫚡𬶖𬶗𬶙-ð¬¶ð®¬Ÿð®¬ ð±‡µ-ð±ˆð²•é²¼é²½é²¿-鳋鿷䲠䲡𩾊𩾋𫚢-𫚥𫠑𬶘𬶞-𬶨𱈂-𱈈ð²–ð²—鲾鳌-é³’ä²¢-䲤𫚦𬶩𬶪𮬡𮬢𱈉-𱈎鳓-鳛鿸鿹𩾌𫚧𫚨𫠒𬶫-𬶭𮬣ð±ˆ-𱈑ð²˜é³œ-鳟𫚩𫚪𬶮-𬶴𱈒-𱈕ð²™é³ -鳣𫚫𬶵𬶶𱈖鳤𫚬𬶷𱈗𱈘𩾎𫚭𬶸𮬤𱈙𬶹𱈚-𱈜𬶺𬶻]
+[radical 195'=⻥鱼:é±¼ð±‡é±½ð¬¶€ð¬¶ð±‡Žð²†é±¾ð«šˆ-𫚊𬶂-𬶄ð±‡ð²‡ð²ˆé±¿-鲃鿕ä²ð©½¹-𩽻𫚋-ð«šð« ð¬¶…-𬶉𮬛𮹓ð±‡-𱇙ð²‰-ð²‹é²„-é²é¿´ä²žä²Ÿð«šŽ-ð«š’ð« ð¬¶Š-ð¬¶ð±‡š-𱇤ð²Œð²é²‘-鲟𩽼-𩽿𫚓-𫚘𬶎-ð¬¶ð®¬œð®¬ð±‡¥-𱇫ð²Ž-ð²‘é² -鲬鿵鿶ð©¾-𩾄𫚙-𫚛𬶑-𬶕𮬞𱇬-𱇴ð²’-ð²”é²­-鲻𩾅-𩾈𫚜-𫚡𬶖𬶗𬶙-ð¬¶ð®¬Ÿð®¬ ð±‡µ-ð±ˆð²•é²¼é²½é²¿-鳋鿷䲠䲡𩾊𩾋𫚢-𫚥𫠑𬶘𬶞-𬶨𱈂-𱈈ð²–ð²—鲾鳌-é³’ä²¢-䲤𫚦𬶩𬶪𮬡𮬢𱈉-𱈎鳓-鳛鿸鿹𩾌𫚧𫚨𫠒𬶫-𬶭𮬣ð±ˆ-𱈑ð²˜é³œ-鳟𫚩𫚪𬶮-𬶴𱈒-𱈕ð²™é³ -鳣𫚫𬶵𬶶𱈖鳤𫚬𬶷𱈗𱈘𩾎𫚭𬶸𮬤𱈙𬶹𱈚-𱈜𬶺𬶻]
[radical 196=⿃鳥:鳥𫠓鳦ð©¾-𩾑𫚮鳧-鳰䲥𩾒-𩾜𬶼𮬥ð±ˆé³±-鳶䲦-䲫ð©¾-𩾯𬶽-𬶿𮬦-𮬪ð²šé³·-鴉鴋-鴎䲬-䲸𩾰-𩿛𫚯-𫚲𬷀-𬷄𮬫-𮬯𱈞𱈟ð²›ð²œé´Šé´-鴬䲹-䳊𩿜-𪀑𫚳-𫚷𫠔𬷅-𬷌𮬰-𮬲𱈠-𱈥ð²ð²žé´­-鵉䳋-䳔𪀒-ðª‰ð«š¸-ð«š»ð¬·-𬷒𮬳-𮬸𱈦𱈧鵊-鵣鵥䳕-䳜ðªŠ-ðª¶ð«š¼-𫛀𬷓𬷔𬷖-𬷛𮬹-𮬻𱈨-𱈬ð²Ÿ-ð²¢éµ¦-é¶é¶‘ä³-ä³¥ðª·-𪂵ð«›-𫛈𬷜-𬷡𮬼-𮭃𱈭-𱈰é¶é¶’-鶫䳦-䳰𪂶-𪃹𫛉-𫛋𬷢-𬷧𮭄-𮭇𱈱-𱈳ð²£é¶¬-é·Šé·Œ-é·ä³±-䳶𪃺-𪄬𫛌-ð«›ð¬·¨-𬷭𮭈-ð®­ð±ˆ´-𱈸ð²¤é·‹é·-é·Ÿä³·-䳽𪄭-𪅮ð«›ð« •ð¬·®-𬷰ð®­-𮭕𱈹ð²¥é·¡-鷸鷺-鷼䳾-䴆𪅯-𪆫𪆭𫛑-𫛕𬷱-𬷳𮭖𱈺-𱈽ð²¦é·¹é·½-鸊䴇-䴋𪆬𪆮-ðª‡ð«›–𬷴-𬷶𮭗𮭘𱈾-𱉂ð²§é¸‹-鸒䴌ä´ðª‡‘-ðª‡ðª‡Ÿ-𪇬𫛗𬷷𮭙𮭚𱉃鸓鸔䴎𪇭-𪈂𫛘𬷸𮭛𮭜𱉄ð²¨ð²©é¸•-鸗ä´ðªˆƒ-𪈗𬷹ð®­ð®­žð±‰…𱉆鸘-鸚𪈘-𪈤鸛鸜𪈥-𪈭𮭟ð²ªé¸é¸žð§– ðªˆ®-𪈳𫛙ä´ð©–”𪈴-𪈷𬷺𪈸-𪈽𮭠䴑䴒𪈾-𪉀]
-[radical 196'=⻦鸟:鸟𬷻𱉇鸠鸡𬷼𬷽𱉈𱉉鸢-鸤𬷾𱉊-𱉌ð²«ð²¬é¸¥-鸩䴓ðª‰-𪉃𫛚-𫛞𫠖𬷿𬸀𮭡-ð®­£ð±‰-𱉔ð²­ð²®é¸ª-鸶𪉄𫛟-𫛤ð¬¸-𬸇𮭤𱉕-𱉢ð²¯-ð²²é¸·-鸿䴔䴕𪉅-𪉋𫛥-𫛪𬸈-𬸌𮭥𱉣-𱉳ð²³-ð²¶é¹€-鹈鿺𪉌ðª‰ð«›«-𫛯𬷕ð¬¸-𬸑𮭦𮭧𱉴-𱉿ð²·-ð²¼é¹‰-鹔䴖𪉎𫛰-𫛵𬸒-𬸗𱊀-𱊎ð²½-ð²¿é¹•-é¹—é¹™-鹜䴗ðª‰ðª‰ð«›¶-𫛼𬸘-𬸟ð±Š-𱊘𲎀鹘é¹-鹤䴘𪉑-𪉔𫛽𫛾𬸠-𬸣𮭨𮭩𱊙-𱊟ð²Žð²Ž‚é¹¥-鹨𫛿-𫜂𬸤-𬸦𮭪𱊠-𱊥𲎃𲎄鹩-鹬𫜃𫜄𬸧-𬸫𱊦-𱊩𲎅𲎆鹭-鹰䴙𫜅𬸬-𬸯𱊪-𱊰𲎇鹱鹲𫜆𱊱𲎈𪉕𱊲𱊳𬸰𱊴𲎉鹳鹴𱊵𬸱]
+[radical 196'=⻦鸟:鸟𬷻𱉇鸠鸡𬷼𬷽𱉈𱉉鸢-鸤𬷾𱉊-𱉌ð²«ð²¬é¸¥-鸩䴓ðª‰-𪉃𫛚-𫛞𫠖𬷿𬸀𮭡-𮭣𮹔ð±‰-𱉔ð²­ð²®é¸ª-鸶𪉄𫛟-𫛤ð¬¸-𬸇𮭤𮹕𱉕-𱉢ð²¯-ð²²é¸·-鸿䴔䴕𪉅-𪉋𫛥-𫛪𬸈-𬸌𮭥𱉣-𱉳ð²³-ð²¶é¹€-鹈鿺𪉌ðª‰ð«›«-𫛯𬷕ð¬¸-𬸑𮭦𮭧𱉴-𱉿ð²·-ð²¼é¹‰-鹔䴖𪉎𫛰-𫛵𬸒-𬸗𮹖𮹗𱊀-𱊎ð²½-ð²¿é¹•-é¹—é¹™-鹜䴗ðª‰ðª‰ð«›¶-𫛼𬸘-𬸟ð±Š-𱊘𲎀鹘é¹-鹤䴘𪉑-𪉔𫛽𫛾𬸠-𬸣𮭨𮭩𮹘𱊙-𱊟ð²Žð²Ž‚é¹¥-鹨𫛿-𫜂𬸤-𬸦𮭪𮹙𮹚𱊠-𱊥𲎃𲎄鹩-鹬𫜃𫜄𬸧-𬸫𱊦-𱊩𲎅𲎆鹭-鹰䴙𫜅𬸬-𬸯𱊪-𱊰𲎇鹱鹲𫜆𱊱𲎈𪉕𮹛𱊲𱊳𬸰𮹜𱊴𲎉鹳鹴𱊵𬸱]
[radical 197=â¿„é¹µ:鹵𠧸𪉖𪉗鹶䴚𪉘-𪉛𬸲𱊶鹷𪉜-𪉡𮭫𱊷𪉢𫜇𱊸䴛𪉣-𪉥𫜈𬸳𮭬𱊹鹸𪉦-𪉬𮭭𮭮鹹𪉭-𪉴𫜉𮭯鹺鹻䴜𪉵-𪉾ä´ðª‰¿-𪊂鹼鹽𪊃-𪊅𬸴䴞𪊆-𪊊]
[radical 197'=⻧å¤:𱊺𮭰𬸵𲎊𱊻𫠗𬸶鹾𫜊𬸷-𬸹𱊼𱊽]
[radical 198=⿅鹿:鹿𢉖𮭱𬸺麀-麂𪊋𪊌𫜋䴟ðªŠðªŠŽð®­²éºƒéº„ä´ -ä´¢ðªŠ-𪊚𫜌𬸻𲎋麅-麈䴣-䴥𪊛-𪊤𬸼𮭳麉-麋𪊥-𪊳ð«œð¬¸½ð¬¸¾ð®­´éºŒ-éºä´¦ðªŠ´-𪋃𫜎𮭵𱊾𱊿麑-麗䴧𪋄-ðª‹ð¬¸¿ð®­¶ð®­·ð²ŽŒéº˜-麛𪋎-𪋖𮭸麜éºä´¨ðª‹—-𪋛𬹀𮭹𮭺麞䴩𪋜-𪋠ð¬¹ð±‹€ð±‹ð²ŽéºŸðª‹¡-𪋩ð«œéº ä´ªä´«ðª‹ª-𪋭麡𪋮-𪋵𲎎麢𪋶𪋷𱋂𪋸麣𪋹麤𪋺𪋻]
@@ -237,16 +238,20 @@
[radical 205'=⻪黾:黾鼋鼌𱋾-𱌂𬹣𱌃𬹤𱌄𱌅𫜟𱌆-𱌈é¼ð±Œ‰]
[radical 206=â¿é¼Ž:鼎𪔂é¼-鼑𪔃鼒䵺𪔄-𪔆𫜠𬹥𮮥𪔇𬹦-𬹨𲎙𪔈𬹩𪔉𫜡𬹪䵻䵼𬹫𪔊𬹬]
[radical 207=⿎鼓:鼓鼔𡔷𮮦𪔋𪔌𡒡ðª”-ðª”𱌊鼕鼖䵽-䵿ðª”-𪔓𮮧𱌋鼗䶀𪔔-𪔛𮮨𪔜-𪔡𮮩𲎚𲎛鼘-é¼›ä¶ðª”¢-𪔥𲎜𪔦-𪔭鼜𪔮é¼é¼žðª”¯-𪔲𱌌鼟𥀻𪇞𪔳𪔴𮮪𮮫𥀼𪔵𪔶𥀽𪔷𥀾]
-[radical 208=â¿é¼ :鼠鼡𫜢𪔸𪔹䶂𪔺-𪔼ð±Œé¼¢-鼤䶃𪔽-𪕈𮮬ð²Žé¼¥-鼬鿻鿼䶄𪕉-𪕑𫠘𬹭𮮭鼭䶅𪕒-𪕙𪕟𱌎ð±Œé¼®-鼰𪕚-𪕞𪕠-𪕧𲎞鼱䶆𪕨-𪕪𬹮𮮮鼲-鼵䶇𪕫-𪕴𲎟鼶-鼹䶈䶉𪕵-𪕾𲎠𪖀-𪖉𫜣𮮯ð±Œðª–Šðª–‹é¼ºðª–Œ-ðª–]
+[radical 208=â¿é¼ :鼠𫜢𪔸𪔹䶂𪔺-𪔼ð±Œé¼¢-鼤䶃𪔽-𪕈𮮬ð²Žé¼¥-鼬鿻鿼䶄𪕉-𪕑𬹭𮮭鼭䶅𪕒-𪕙𪕟𱌎ð±Œé¼®-鼰𪕚-𪕞𪕠-𪕧𲎞鼱䶆𪕨-𪕪𬹮𮮮鼲-鼵䶇𪕫-𪕴𲎟鼶-鼹䶈䶉𪕵-𪕾𲎠𪖀-𪖉𫜣𮮯ð±Œðª–Šðª–‹é¼ºðª–Œ-ðª–]
+[radical 208''=鼡:鼡𫠘]
[radical 209=â¿é¼»:鼻𮮰-ð®®µðª–鼼鼽𪖑𪖒𱌑𱌒鼾鼿𪖓𪖔𮮶䶊䶋𪖕-𪖙𫜤𱌓齀é½ä¶Œðª–š-𪖠𱌔ä¶ä¶Žðª–¡-𪖤𬹯𮮷𱌕𱌖ä¶ðª–¥-𪖬齂𪖭𪖮𬹰齃齄𪖯-𪖲齅齆𪕿𪖳-𪖵𲎡齇𪖶-𪖽𮮸齈ä¶ðª–¾-𪗀䶑ðª—𪗂𮮹𪗃齉]
[radical 210=⿑齊:齊𪗄𬹱𮮺-𮮼𪗅齋䶒䶓𪗆齌𠆜𪗇𪗈é½ðª—‰ðª—Šð¬¹²ðª—‹ðª—Œé½Žðª—Žðª—é½ðª—-𪗓]
[radical 210'=⻬é½:é½ð¬¹³ð±Œ—-𱌙齑]
-[radical 211=â¿’é½’:齒𣦋𮮽齓齔𪗔-𪗗𮮾齕䶔𪗘-𪗚𮮿齖-齘䶕䶖𪗛-𪗤𫠙𮯀ð®¯ð±Œš-𱌜齙-齣䶗-䶙𠎜𪗥-𪗶𫠚𬹴𮯂𮯃ð±Œé½¤-齩䶚䶛𪗷-ðª˜ð«œ¥ð¬¹µ-𬹷𮯄-𮯆齪-齬䶜ä¶ðª˜Ž-𪘤𫜦𮯇𱌞𲎢齭-齱䶞䶟𪘥-𪘸𮯈-𮯊𲎣齲-齷䶠-䶢𪘹-𪙈𫠛𮯋-𮯎𱌟-𱌡齸-齻䶣䶤𪙉-𪙙ð®¯ð®¯ð±Œ¢ð±Œ£ä¶¥ä¶¦ðª™š-𪙢𮯑-𮯓𱌤𲎤-𲎦䶧𪙣-𪙯𫜧𬹸𮯔-𮯖𱌥齼齽䶨𪙰-𪙵𮯗𱌦䶩䶪𪙶𱌧𪙷-𪚀𬹹𱌨ðªš-𪚄𮯘𪚅-𪚉齾䶫𪚊-𪚎]
+[radical 211=â¿’é½’:齒𣦋𮮽齓齔𪗔-𪗗齕䶔𪗘-𪗚𮮿齖-齘䶕䶖𪗛-𪗤𫠙𮯀ð®¯ð±Œš-𱌜齙-齡齣䶗-䶙𠎜𪗥-𪗰𪗲-𪗶𮯂ð±Œé½¤-齩䶚䶛𪗷-ðª˜ðª˜ƒ-ðª˜ð«œ¥ð¬¹µ-𬹷𮯄𮯆齪-齬䶜ä¶ðª˜Ž-𪘙𪘛-𪘤𫜦𱌞𲎢齭-齱䶞䶟𪘥-𪘸𮯉𮯊𲎣齲-齷䶠-䶢𪘹-𪙈𫠛ð®¯ð±ŒŸ-𱌡齸-齻䶣䶤𪙉-𪙙ð®¯ð®¯ð±Œ¢ð±Œ£ä¶¥ä¶¦ðª™š-𪙢𮯑-𮯓𱌤𲎤-𲎦䶧𪙣-𪙯𫜧𬹸𮯔-𮯖𱌥齼齽䶨𪙰-𪙵𮯗𱌦䶩䶪𪙶𱌧𪙷-𪚀𬹹𱌨ðªš-𪚄𮯘𪚅-𪚉齾䶫𪚊-𪚎]
[radical 211'=⻮齿:齿-é¾ð±Œ©é¾‚𫜨𬹺-𬹽𱌪𲎧龃-龆𬹾-𬺀𮯙𱌫-𱌯龇龈ðªšð«œ©ð«œªð¬º-𬺅𱌰-𱌳𲎨龉龊𫜫𬺆𬺇𱌴𱌵ðªšð«œ¬ð«œ­ð« œð¬ºˆ-𬺌𱌶-𱌸𲎩龋龌𫜮ð¬ºð¬ºŽð±Œ¹ð«œ¯ð¬º-𬺑𱌺-𱌽𬺒𲎪𫜰𬺓-𬺕𲎫𬺖]
-[radical 212=â¿“é¾:é¾-é¾ðªš‘-𪚔𬺗𬺘龑𪚕-𪚘𪚚𪚛龒𪚙𱌾𲎬龓-龕䶬𪚜-𪚟𮯚𱌿𪚠𪚡𫜱𬺙𬺚𪚢ð±€ð²Ž­ðªš£ðªš¤é¾–-龘𪚥]
-[radical 212'=â»°é¾™:龙𬺛ð±ä¶­ä¶®ð¬ºœð±‚龚龛𫜲ð¬º]
-[radical 213=⿔龜:龜𪚦𪛉𮯛-𮯟𪚨䶯𪚩𪚪䶰𪚫-𪚵é¾ä¶±ä¶²ðªš§ðªš¶-𪛀𪓻ðª›-𪛄龞𪛅𪛆ð« ðª›‡ðª›ˆ]
+[radical 211''=⻭歯:𮮾齢𪗱𫠚𬹴𮯃𪘂𮯅𪘚𮯇𮯈𮯋𮯌𮯎]
+[radical 212=â¿“é¾:é¾-é¾ðªš‘-𪚔龑𪚕-𪚘𪚚𪚛龒𪚙𱌾龓-龕䶬𪚜-𪚟𮯚𱌿𪚠𪚡𫜱𪚢ð±€ðªš£ðªš¤é¾–-龘𪚥]
+[radical 212'=â»°é¾™:龙𬺛ð±ä¶­ä¶®ð¬ºœð±‚龚龛𫜲ð®¹ð¬º]
+[radical 212''=⻯竜:𬺗𬺘𲎬𬺙𬺚𲎭]
+[radical 213=⿔龜:龜𪚦𪛉𮯛-𮯟𪚨䶯𪚩𪚪䶰𪚫-𪚱𪚳-𪚵é¾ä¶±ä¶²ðªš§ðªš¶-𪛀𪓻ðª›-𪛄龞𪛅-𪛈]
[radical 213'=⻳龟:龟𬺞ð±ƒ-ð±†ð²Ž®ð«œ³ð±‡ð±ˆ]
+[radical 213''=⻲亀:𪚲ð« ]
[radical 214=â¿•é¾ :龠龡䶳𪛊𬺟龢ð±‰é¾£ä¶´ðª›‹-ðª›ð¬º ð®¯ ð±Šé¾¤é¾¥ðª›Ž-𪛑𲎯䶵𪛒𪛓𫜴𬺡𪛔-𪛖]
[radical end]
@@ -254,7 +259,7 @@
[top_byte 00 TERMINATOR ]
[top_byte 01 LEVEL-SEPARATOR ]
[top_byte 02 FIELD-SEPARATOR ]
-[top_byte 03 SPACE PUNCTUATION ] # 738 primary weights
+[top_byte 03 SPACE PUNCTUATION ] # 724 primary weights
[top_byte 04 SPACE PUNCTUATION ]
[top_byte 05 SPACE PUNCTUATION ]
[top_byte 06 SPACE PUNCTUATION ]
@@ -263,7 +268,7 @@
[top_byte 09 SPACE PUNCTUATION ]
[top_byte 0A SPACE PUNCTUATION ]
[top_byte 0B SPACE PUNCTUATION ]
-[top_byte 0C SYMBOL CURRENCY ] # 6611 primary weights
+[top_byte 0C SYMBOL CURRENCY ] # 6615 primary weights
[top_byte 0D SYMBOL CURRENCY ]
[top_byte 0E DIGIT ] # 517 primary weights
[top_byte 0F DIGIT ]
@@ -2785,1083 +2790,1069 @@ A95F; [09 41 79, 05, 05]
0027; [09 6E, 05, 05]
FF07; [09 6E, 05, 20]
+2018; [09 6E, 70, 05]
+2019; [09 6E, 73, 05]
+201A; [09 6E, 76, 05]
+201B; [09 6E, 79, 05]
+05F3; [09 6E, 7C, 05]
+
+2039; [09 70, 05, 05]
+
+203A; [09 72, 05, 05]
+
+0022; [09 74, 05, 05]
+FF02; [09 74, 05, 20]
+201C; [09 74, 70, 05]
+201D; [09 74, 72, 05]
+201E; [09 74, 74, 05]
+201F; [09 74, 76, 05]
+2E42; [09 74, 78, 05]
+301D; [09 74, 7A, 05]
+301E; [09 74, 7C, 05]
+301F; [09 74, 7E 02, 05]
+05F4; [09 74, 7F 02, 05]
+
+00AB; [09 76, 05, 05]
+
+00BB; [09 78, 05, 05]
+
+0028; [09 7A, 05, 05]
+FF08; [09 7A, 05, 10]
+FE59; [09 7A, 05, 1E]
+207D; [09 7A, 05, 25]
+208D; [09 7A, 05, 2C]
+FE35; [09 7A, 05, 33]
+2474; [09 7A, 05, 17][15, 05, 15][09 7C, 05, 17]
+247D; [09 7A, 05, 17][15, 05, 15][13, 05, 15][09 7C, 05, 17]
+247E; [09 7A, 05, 17][15, 05, 15][15, 05, 15][09 7C, 05, 17]
+247F; [09 7A, 05, 17][15, 05, 15][17, 05, 15][09 7C, 05, 17]
+2480; [09 7A, 05, 17][15, 05, 15][19, 05, 15][09 7C, 05, 17]
+2481; [09 7A, 05, 17][15, 05, 15][1B, 05, 15][09 7C, 05, 17]
+2482; [09 7A, 05, 17][15, 05, 15][1D, 05, 15][09 7C, 05, 17]
+2483; [09 7A, 05, 17][15, 05, 15][1F, 05, 15][09 7C, 05, 17]
+2484; [09 7A, 05, 17][15, 05, 15][21, 05, 15][09 7C, 05, 17]
+2485; [09 7A, 05, 17][15, 05, 15][23, 05, 15][09 7C, 05, 17]
+2486; [09 7A, 05, 17][15, 05, 15][25, 05, 16][09 7C, 05, 17]
+2475; [09 7A, 05, 17][17, 05, 15][09 7C, 05, 17]
+2487; [09 7A, 05, 17][17, 05, 15][13, 05, 15][09 7C, 05, 17]
+2476; [09 7A, 05, 17][19, 05, 15][09 7C, 05, 17]
+2477; [09 7A, 05, 17][1B, 05, 15][09 7C, 05, 17]
+2478; [09 7A, 05, 17][1D, 05, 15][09 7C, 05, 17]
+2479; [09 7A, 05, 17][1F, 05, 15][09 7C, 05, 17]
+247A; [09 7A, 05, 17][21, 05, 15][09 7C, 05, 17]
+247B; [09 7A, 05, 17][23, 05, 15][09 7C, 05, 17]
+247C; [09 7A, 05, 17][25, 05, 16][09 7C, 05, 17]
+249C; [09 7A, 05, 17][2A, 05, 13][09 7C, 05, 17]
+1F110; [09 7A, 05, 17][2A, 05, A2][09 7C, 05, 17]
+249D; [09 7A, 05, 17][2C, 05, 13][09 7C, 05, 17]
+1F111; [09 7A, 05, 17][2C, 05, A2][09 7C, 05, 17]
+249E; [09 7A, 05, 17][2E, 05, 13][09 7C, 05, 17]
+1F112; [09 7A, 05, 17][2E, 05, A2][09 7C, 05, 17]
+249F; [09 7A, 05, 17][30, 05, 13][09 7C, 05, 17]
+1F113; [09 7A, 05, 17][30, 05, A2][09 7C, 05, 17]
+24A0; [09 7A, 05, 17][32, 05, 13][09 7C, 05, 17]
+1F114; [09 7A, 05, 17][32, 05, A2][09 7C, 05, 17]
+24A1; [09 7A, 05, 17][34, 05, 13][09 7C, 05, 17]
+1F115; [09 7A, 05, 17][34, 05, A2][09 7C, 05, 17]
+24A2; [09 7A, 05, 17][36, 05, 13][09 7C, 05, 17]
+1F116; [09 7A, 05, 17][36, 05, A2][09 7C, 05, 17]
+24A3; [09 7A, 05, 17][38, 05, 13][09 7C, 05, 17]
+1F117; [09 7A, 05, 17][38, 05, A2][09 7C, 05, 17]
+24A4; [09 7A, 05, 17][3A, 05, 13][09 7C, 05, 17]
+1F118; [09 7A, 05, 17][3A, 05, A2][09 7C, 05, 17]
+24A5; [09 7A, 05, 17][3C, 05, 13][09 7C, 05, 17]
+1F119; [09 7A, 05, 17][3C, 05, A2][09 7C, 05, 17]
+24A6; [09 7A, 05, 17][3E, 05, 13][09 7C, 05, 17]
+1F11A; [09 7A, 05, 17][3E, 05, A2][09 7C, 05, 17]
+24A7; [09 7A, 05, 17][40, 05, 13][09 7C, 05, 17]
+1F11B; [09 7A, 05, 17][40, 05, A2][09 7C, 05, 17]
+24A8; [09 7A, 05, 17][42, 05, 13][09 7C, 05, 17]
+1F11C; [09 7A, 05, 17][42, 05, A2][09 7C, 05, 17]
+24A9; [09 7A, 05, 17][44, 05, 13][09 7C, 05, 17]
+1F11D; [09 7A, 05, 17][44, 05, A2][09 7C, 05, 17]
+24AA; [09 7A, 05, 17][46, 05, 13][09 7C, 05, 17]
+1F11E; [09 7A, 05, 17][46, 05, A2][09 7C, 05, 17]
+24AB; [09 7A, 05, 17][48, 05, 13][09 7C, 05, 17]
+1F11F; [09 7A, 05, 17][48, 05, A2][09 7C, 05, 17]
+24AC; [09 7A, 05, 17][4A, 05, 13][09 7C, 05, 17]
+1F120; [09 7A, 05, 17][4A, 05, A2][09 7C, 05, 17]
+24AD; [09 7A, 05, 17][4C, 05, 13][09 7C, 05, 17]
+1F121; [09 7A, 05, 17][4C, 05, A2][09 7C, 05, 17]
+24AE; [09 7A, 05, 17][4E, 05, 13][09 7C, 05, 17]
+1F122; [09 7A, 05, 17][4E, 05, A2][09 7C, 05, 17]
+24AF; [09 7A, 05, 17][50, 05, 13][09 7C, 05, 17]
+1F123; [09 7A, 05, 17][50, 05, A2][09 7C, 05, 17]
+24B0; [09 7A, 05, 17][52, 05, 13][09 7C, 05, 17]
+1F124; [09 7A, 05, 17][52, 05, A2][09 7C, 05, 17]
+24B1; [09 7A, 05, 17][54, 05, 13][09 7C, 05, 17]
+1F125; [09 7A, 05, 17][54, 05, A2][09 7C, 05, 17]
+24B2; [09 7A, 05, 17][56, 05, 14][09 7C, 05, 17]
+1F126; [09 7A, 05, 17][56, 05, A8][09 7C, 05, 17]
+24B3; [09 7A, 05, 17][58, 05, 13][09 7C, 05, 17]
+1F127; [09 7A, 05, 17][58, 05, A2][09 7C, 05, 17]
+24B4; [09 7A, 05, 17][5A, 05, 13][09 7C, 05, 17]
+1F128; [09 7A, 05, 17][5A, 05, A2][09 7C, 05, 17]
+24B5; [09 7A, 05, 17][5C, 05, 13][09 7C, 05, 17]
+1F129; [09 7A, 05, 17][5C, 05, A2][09 7C, 05, 17]
+3200; [09 7A, 05, 17][79 06, 05, 10][09 7C, 05, 17]
+320E; [09 7A, 05, 17][79 06, 05, 10][79 67, 05, 10][09 7C, 05, 17]
+3201; [09 7A, 05, 17][79 0A, 05, 10][09 7C, 05, 17]
+320F; [09 7A, 05, 17][79 0A, 05, 10][79 67, 05, 10][09 7C, 05, 17]
+3202; [09 7A, 05, 17][79 0C, 05, 10][09 7C, 05, 17]
+3210; [09 7A, 05, 17][79 0C, 05, 10][79 67, 05, 10][09 7C, 05, 17]
+3203; [09 7A, 05, 17][79 10, 05, 10][09 7C, 05, 17]
+3211; [09 7A, 05, 17][79 10, 05, 10][79 67, 05, 10][09 7C, 05, 17]
+3204; [09 7A, 05, 17][79 12, 05, 10][09 7C, 05, 17]
+3212; [09 7A, 05, 17][79 12, 05, 10][79 67, 05, 10][09 7C, 05, 17]
+3205; [09 7A, 05, 17][79 14, 05, 10][09 7C, 05, 17]
+3213; [09 7A, 05, 17][79 14, 05, 10][79 67, 05, 10][09 7C, 05, 17]
+3206; [09 7A, 05, 17][79 18, 05, 10][09 7C, 05, 17]
+3214; [09 7A, 05, 17][79 18, 05, 10][79 67, 05, 10][09 7C, 05, 17]
+3207; [09 7A, 05, 17][79 1C, 05, 10][09 7C, 05, 17]
+3215; [09 7A, 05, 17][79 1C, 05, 10][79 67, 05, 10][09 7C, 05, 17]
+321D; [09 7A, 05, 17][79 1C, 05, 10][79 77, 05, 10][79 1E, 05, 10][79 6F, 05, 20][79 B9, 05, 20][09 7C, 05, 17]
+321E; [09 7A, 05, 17][79 1C, 05, 10][79 77, 05, 10][79 2A, 05, 10][79 81, 05, 10][09 7C, 05, 17]
+3208; [09 7A, 05, 17][79 1E, 05, 10][09 7C, 05, 17]
+3216; [09 7A, 05, 17][79 1E, 05, 10][79 67, 05, 10][09 7C, 05, 17]
+321C; [09 7A, 05, 17][79 1E, 05, 10][79 81, 05, 10][09 7C, 05, 17]
+3209; [09 7A, 05, 17][79 22, 05, 10][09 7C, 05, 17]
+3217; [09 7A, 05, 17][79 22, 05, 10][79 67, 05, 10][09 7C, 05, 17]
+320A; [09 7A, 05, 17][79 24, 05, 10][09 7C, 05, 17]
+3218; [09 7A, 05, 17][79 24, 05, 10][79 67, 05, 10][09 7C, 05, 17]
+320B; [09 7A, 05, 17][79 26, 05, 10][09 7C, 05, 17]
+3219; [09 7A, 05, 17][79 26, 05, 10][79 67, 05, 10][09 7C, 05, 17]
+320C; [09 7A, 05, 17][79 28, 05, 10][09 7C, 05, 17]
+321A; [09 7A, 05, 17][79 28, 05, 10][79 67, 05, 10][09 7C, 05, 17]
+320D; [09 7A, 05, 17][79 2A, 05, 10][09 7C, 05, 17]
+321B; [09 7A, 05, 17][79 2A, 05, 10][79 67, 05, 10][09 7C, 05, 17]
+3220; [09 7A, 05, 17][U+4E00, 10][09 7C, 05, 17]
+3226; [09 7A, 05, 17][U+4E03, 10][09 7C, 05, 17]
+3222; [09 7A, 05, 17][U+4E09, 10][09 7C, 05, 17]
+3228; [09 7A, 05, 17][U+4E5D, 10][09 7C, 05, 17]
+3221; [09 7A, 05, 17][U+4E8C, 10][09 7C, 05, 17]
+3224; [09 7A, 05, 17][U+4E94, 10][09 7C, 05, 17]
+3239; [09 7A, 05, 17][U+4EE3, 10][09 7C, 05, 17]
+323D; [09 7A, 05, 17][U+4F01, 10][09 7C, 05, 17]
+3241; [09 7A, 05, 17][U+4F11, 10][09 7C, 05, 17]
+3227; [09 7A, 05, 17][U+516B, 10][09 7C, 05, 17]
+3225; [09 7A, 05, 17][U+516D, 10][09 7C, 05, 17]
+3238; [09 7A, 05, 17][U+52B4, 10][09 7C, 05, 17]
+3229; [09 7A, 05, 17][U+5341, 10][09 7C, 05, 17]
+323F; [09 7A, 05, 17][U+5354, 10][09 7C, 05, 17]
+3234; [09 7A, 05, 17][U+540D, 10][09 7C, 05, 17]
+323A; [09 7A, 05, 17][U+547C, 10][09 7C, 05, 17]
+3223; [09 7A, 05, 17][U+56DB, 10][09 7C, 05, 17]
+322F; [09 7A, 05, 17][U+571F, 10][09 7C, 05, 17]
+323B; [09 7A, 05, 17][U+5B66, 10][09 7C, 05, 17]
+3230; [09 7A, 05, 17][U+65E5, 10][09 7C, 05, 17]
+322A; [09 7A, 05, 17][U+6708, 10][09 7C, 05, 17]
+3232; [09 7A, 05, 17][U+6709, 10][09 7C, 05, 17]
+322D; [09 7A, 05, 17][U+6728, 10][09 7C, 05, 17]
+3231; [09 7A, 05, 17][U+682A, 10][09 7C, 05, 17]
+322C; [09 7A, 05, 17][U+6C34, 10][09 7C, 05, 17]
+322B; [09 7A, 05, 17][U+706B, 10][09 7C, 05, 17]
+3235; [09 7A, 05, 17][U+7279, 10][09 7C, 05, 17]
+323C; [09 7A, 05, 17][U+76E3, 10][09 7C, 05, 17]
+3233; [09 7A, 05, 17][U+793E, 10][09 7C, 05, 17]
+3237; [09 7A, 05, 17][U+795D, 10][09 7C, 05, 17]
+3240; [09 7A, 05, 17][U+796D, 10][09 7C, 05, 17]
+3242; [09 7A, 05, 17][U+81EA, 10][09 7C, 05, 17]
+3243; [09 7A, 05, 17][U+81F3, 10][09 7C, 05, 17]
+3236; [09 7A, 05, 17][U+8CA1, 10][09 7C, 05, 17]
+323E; [09 7A, 05, 17][U+8CC7, 10][09 7C, 05, 17]
+322E; [09 7A, 05, 17][U+91D1, 10][09 7C, 05, 17]
+
+0029; [09 7C, 05, 05]
+FF09; [09 7C, 05, 10]
+FE5A; [09 7C, 05, 1E]
+207E; [09 7C, 05, 25]
+208E; [09 7C, 05, 2C]
+FE36; [09 7C, 05, 33]
+
+005B; [09 7E, 05, 05]
+FF3B; [09 7E, 05, 20]
+FE47; [09 7E, 05, 2E]
+
+005D; [09 80, 05, 05]
+FF3D; [09 80, 05, 20]
+FE48; [09 80, 05, 2E]
-2018; [09 70, 05, 05]
-
-2019; [09 72, 05, 05]
-
-201A; [09 74, 05, 05]
-
-201B; [09 76, 05, 05]
-
-2039; [09 78, 05, 05]
-
-203A; [09 7A, 05, 05]
-
-0022; [09 7C, 05, 05]
-FF02; [09 7C, 05, 20]
-
-201C; [09 7E, 05, 05]
-
-201D; [09 80, 05, 05]
-
-201E; [09 82, 05, 05]
-
-201F; [09 84, 05, 05]
-
-2E42; [09 86, 05, 05]
-
-301D; [09 88, 05, 05]
-
-301E; [09 8A, 05, 05]
-
-301F; [09 8C, 05, 05]
-
-00AB; [09 8E, 05, 05]
-
-00BB; [09 90, 05, 05]
-
-0028; [09 92, 05, 05]
-FF08; [09 92, 05, 10]
-FE59; [09 92, 05, 1E]
-207D; [09 92, 05, 25]
-208D; [09 92, 05, 2C]
-FE35; [09 92, 05, 33]
-2474; [09 92, 05, 17][15, 05, 15][09 94, 05, 17]
-247D; [09 92, 05, 17][15, 05, 15][13, 05, 15][09 94, 05, 17]
-247E; [09 92, 05, 17][15, 05, 15][15, 05, 15][09 94, 05, 17]
-247F; [09 92, 05, 17][15, 05, 15][17, 05, 15][09 94, 05, 17]
-2480; [09 92, 05, 17][15, 05, 15][19, 05, 15][09 94, 05, 17]
-2481; [09 92, 05, 17][15, 05, 15][1B, 05, 15][09 94, 05, 17]
-2482; [09 92, 05, 17][15, 05, 15][1D, 05, 15][09 94, 05, 17]
-2483; [09 92, 05, 17][15, 05, 15][1F, 05, 15][09 94, 05, 17]
-2484; [09 92, 05, 17][15, 05, 15][21, 05, 15][09 94, 05, 17]
-2485; [09 92, 05, 17][15, 05, 15][23, 05, 15][09 94, 05, 17]
-2486; [09 92, 05, 17][15, 05, 15][25, 05, 16][09 94, 05, 17]
-2475; [09 92, 05, 17][17, 05, 15][09 94, 05, 17]
-2487; [09 92, 05, 17][17, 05, 15][13, 05, 15][09 94, 05, 17]
-2476; [09 92, 05, 17][19, 05, 15][09 94, 05, 17]
-2477; [09 92, 05, 17][1B, 05, 15][09 94, 05, 17]
-2478; [09 92, 05, 17][1D, 05, 15][09 94, 05, 17]
-2479; [09 92, 05, 17][1F, 05, 15][09 94, 05, 17]
-247A; [09 92, 05, 17][21, 05, 15][09 94, 05, 17]
-247B; [09 92, 05, 17][23, 05, 15][09 94, 05, 17]
-247C; [09 92, 05, 17][25, 05, 16][09 94, 05, 17]
-249C; [09 92, 05, 17][2A, 05, 13][09 94, 05, 17]
-1F110; [09 92, 05, 17][2A, 05, A2][09 94, 05, 17]
-249D; [09 92, 05, 17][2C, 05, 13][09 94, 05, 17]
-1F111; [09 92, 05, 17][2C, 05, A2][09 94, 05, 17]
-249E; [09 92, 05, 17][2E, 05, 13][09 94, 05, 17]
-1F112; [09 92, 05, 17][2E, 05, A2][09 94, 05, 17]
-249F; [09 92, 05, 17][30, 05, 13][09 94, 05, 17]
-1F113; [09 92, 05, 17][30, 05, A2][09 94, 05, 17]
-24A0; [09 92, 05, 17][32, 05, 13][09 94, 05, 17]
-1F114; [09 92, 05, 17][32, 05, A2][09 94, 05, 17]
-24A1; [09 92, 05, 17][34, 05, 13][09 94, 05, 17]
-1F115; [09 92, 05, 17][34, 05, A2][09 94, 05, 17]
-24A2; [09 92, 05, 17][36, 05, 13][09 94, 05, 17]
-1F116; [09 92, 05, 17][36, 05, A2][09 94, 05, 17]
-24A3; [09 92, 05, 17][38, 05, 13][09 94, 05, 17]
-1F117; [09 92, 05, 17][38, 05, A2][09 94, 05, 17]
-24A4; [09 92, 05, 17][3A, 05, 13][09 94, 05, 17]
-1F118; [09 92, 05, 17][3A, 05, A2][09 94, 05, 17]
-24A5; [09 92, 05, 17][3C, 05, 13][09 94, 05, 17]
-1F119; [09 92, 05, 17][3C, 05, A2][09 94, 05, 17]
-24A6; [09 92, 05, 17][3E, 05, 13][09 94, 05, 17]
-1F11A; [09 92, 05, 17][3E, 05, A2][09 94, 05, 17]
-24A7; [09 92, 05, 17][40, 05, 13][09 94, 05, 17]
-1F11B; [09 92, 05, 17][40, 05, A2][09 94, 05, 17]
-24A8; [09 92, 05, 17][42, 05, 13][09 94, 05, 17]
-1F11C; [09 92, 05, 17][42, 05, A2][09 94, 05, 17]
-24A9; [09 92, 05, 17][44, 05, 13][09 94, 05, 17]
-1F11D; [09 92, 05, 17][44, 05, A2][09 94, 05, 17]
-24AA; [09 92, 05, 17][46, 05, 13][09 94, 05, 17]
-1F11E; [09 92, 05, 17][46, 05, A2][09 94, 05, 17]
-24AB; [09 92, 05, 17][48, 05, 13][09 94, 05, 17]
-1F11F; [09 92, 05, 17][48, 05, A2][09 94, 05, 17]
-24AC; [09 92, 05, 17][4A, 05, 13][09 94, 05, 17]
-1F120; [09 92, 05, 17][4A, 05, A2][09 94, 05, 17]
-24AD; [09 92, 05, 17][4C, 05, 13][09 94, 05, 17]
-1F121; [09 92, 05, 17][4C, 05, A2][09 94, 05, 17]
-24AE; [09 92, 05, 17][4E, 05, 13][09 94, 05, 17]
-1F122; [09 92, 05, 17][4E, 05, A2][09 94, 05, 17]
-24AF; [09 92, 05, 17][50, 05, 13][09 94, 05, 17]
-1F123; [09 92, 05, 17][50, 05, A2][09 94, 05, 17]
-24B0; [09 92, 05, 17][52, 05, 13][09 94, 05, 17]
-1F124; [09 92, 05, 17][52, 05, A2][09 94, 05, 17]
-24B1; [09 92, 05, 17][54, 05, 13][09 94, 05, 17]
-1F125; [09 92, 05, 17][54, 05, A2][09 94, 05, 17]
-24B2; [09 92, 05, 17][56, 05, 14][09 94, 05, 17]
-1F126; [09 92, 05, 17][56, 05, A8][09 94, 05, 17]
-24B3; [09 92, 05, 17][58, 05, 13][09 94, 05, 17]
-1F127; [09 92, 05, 17][58, 05, A2][09 94, 05, 17]
-24B4; [09 92, 05, 17][5A, 05, 13][09 94, 05, 17]
-1F128; [09 92, 05, 17][5A, 05, A2][09 94, 05, 17]
-24B5; [09 92, 05, 17][5C, 05, 13][09 94, 05, 17]
-1F129; [09 92, 05, 17][5C, 05, A2][09 94, 05, 17]
-3200; [09 92, 05, 17][79 06, 05, 10][09 94, 05, 17]
-320E; [09 92, 05, 17][79 06, 05, 10][79 67, 05, 10][09 94, 05, 17]
-3201; [09 92, 05, 17][79 0A, 05, 10][09 94, 05, 17]
-320F; [09 92, 05, 17][79 0A, 05, 10][79 67, 05, 10][09 94, 05, 17]
-3202; [09 92, 05, 17][79 0C, 05, 10][09 94, 05, 17]
-3210; [09 92, 05, 17][79 0C, 05, 10][79 67, 05, 10][09 94, 05, 17]
-3203; [09 92, 05, 17][79 10, 05, 10][09 94, 05, 17]
-3211; [09 92, 05, 17][79 10, 05, 10][79 67, 05, 10][09 94, 05, 17]
-3204; [09 92, 05, 17][79 12, 05, 10][09 94, 05, 17]
-3212; [09 92, 05, 17][79 12, 05, 10][79 67, 05, 10][09 94, 05, 17]
-3205; [09 92, 05, 17][79 14, 05, 10][09 94, 05, 17]
-3213; [09 92, 05, 17][79 14, 05, 10][79 67, 05, 10][09 94, 05, 17]
-3206; [09 92, 05, 17][79 18, 05, 10][09 94, 05, 17]
-3214; [09 92, 05, 17][79 18, 05, 10][79 67, 05, 10][09 94, 05, 17]
-3207; [09 92, 05, 17][79 1C, 05, 10][09 94, 05, 17]
-3215; [09 92, 05, 17][79 1C, 05, 10][79 67, 05, 10][09 94, 05, 17]
-321D; [09 92, 05, 17][79 1C, 05, 10][79 77, 05, 10][79 1E, 05, 10][79 6F, 05, 20][79 B9, 05, 20][09 94, 05, 17]
-321E; [09 92, 05, 17][79 1C, 05, 10][79 77, 05, 10][79 2A, 05, 10][79 81, 05, 10][09 94, 05, 17]
-3208; [09 92, 05, 17][79 1E, 05, 10][09 94, 05, 17]
-3216; [09 92, 05, 17][79 1E, 05, 10][79 67, 05, 10][09 94, 05, 17]
-321C; [09 92, 05, 17][79 1E, 05, 10][79 81, 05, 10][09 94, 05, 17]
-3209; [09 92, 05, 17][79 22, 05, 10][09 94, 05, 17]
-3217; [09 92, 05, 17][79 22, 05, 10][79 67, 05, 10][09 94, 05, 17]
-320A; [09 92, 05, 17][79 24, 05, 10][09 94, 05, 17]
-3218; [09 92, 05, 17][79 24, 05, 10][79 67, 05, 10][09 94, 05, 17]
-320B; [09 92, 05, 17][79 26, 05, 10][09 94, 05, 17]
-3219; [09 92, 05, 17][79 26, 05, 10][79 67, 05, 10][09 94, 05, 17]
-320C; [09 92, 05, 17][79 28, 05, 10][09 94, 05, 17]
-321A; [09 92, 05, 17][79 28, 05, 10][79 67, 05, 10][09 94, 05, 17]
-320D; [09 92, 05, 17][79 2A, 05, 10][09 94, 05, 17]
-321B; [09 92, 05, 17][79 2A, 05, 10][79 67, 05, 10][09 94, 05, 17]
-3220; [09 92, 05, 17][U+4E00, 10][09 94, 05, 17]
-3226; [09 92, 05, 17][U+4E03, 10][09 94, 05, 17]
-3222; [09 92, 05, 17][U+4E09, 10][09 94, 05, 17]
-3228; [09 92, 05, 17][U+4E5D, 10][09 94, 05, 17]
-3221; [09 92, 05, 17][U+4E8C, 10][09 94, 05, 17]
-3224; [09 92, 05, 17][U+4E94, 10][09 94, 05, 17]
-3239; [09 92, 05, 17][U+4EE3, 10][09 94, 05, 17]
-323D; [09 92, 05, 17][U+4F01, 10][09 94, 05, 17]
-3241; [09 92, 05, 17][U+4F11, 10][09 94, 05, 17]
-3227; [09 92, 05, 17][U+516B, 10][09 94, 05, 17]
-3225; [09 92, 05, 17][U+516D, 10][09 94, 05, 17]
-3238; [09 92, 05, 17][U+52B4, 10][09 94, 05, 17]
-3229; [09 92, 05, 17][U+5341, 10][09 94, 05, 17]
-323F; [09 92, 05, 17][U+5354, 10][09 94, 05, 17]
-3234; [09 92, 05, 17][U+540D, 10][09 94, 05, 17]
-323A; [09 92, 05, 17][U+547C, 10][09 94, 05, 17]
-3223; [09 92, 05, 17][U+56DB, 10][09 94, 05, 17]
-322F; [09 92, 05, 17][U+571F, 10][09 94, 05, 17]
-323B; [09 92, 05, 17][U+5B66, 10][09 94, 05, 17]
-3230; [09 92, 05, 17][U+65E5, 10][09 94, 05, 17]
-322A; [09 92, 05, 17][U+6708, 10][09 94, 05, 17]
-3232; [09 92, 05, 17][U+6709, 10][09 94, 05, 17]
-322D; [09 92, 05, 17][U+6728, 10][09 94, 05, 17]
-3231; [09 92, 05, 17][U+682A, 10][09 94, 05, 17]
-322C; [09 92, 05, 17][U+6C34, 10][09 94, 05, 17]
-322B; [09 92, 05, 17][U+706B, 10][09 94, 05, 17]
-3235; [09 92, 05, 17][U+7279, 10][09 94, 05, 17]
-323C; [09 92, 05, 17][U+76E3, 10][09 94, 05, 17]
-3233; [09 92, 05, 17][U+793E, 10][09 94, 05, 17]
-3237; [09 92, 05, 17][U+795D, 10][09 94, 05, 17]
-3240; [09 92, 05, 17][U+796D, 10][09 94, 05, 17]
-3242; [09 92, 05, 17][U+81EA, 10][09 94, 05, 17]
-3243; [09 92, 05, 17][U+81F3, 10][09 94, 05, 17]
-3236; [09 92, 05, 17][U+8CA1, 10][09 94, 05, 17]
-323E; [09 92, 05, 17][U+8CC7, 10][09 94, 05, 17]
-322E; [09 92, 05, 17][U+91D1, 10][09 94, 05, 17]
-
-0029; [09 94, 05, 05]
-FF09; [09 94, 05, 10]
-FE5A; [09 94, 05, 1E]
-207E; [09 94, 05, 25]
-208E; [09 94, 05, 2C]
-FE36; [09 94, 05, 33]
-
-005B; [09 96, 05, 05]
-FF3B; [09 96, 05, 20]
-FE47; [09 96, 05, 2E]
-
-005D; [09 98, 05, 05]
-FF3D; [09 98, 05, 20]
-FE48; [09 98, 05, 2E]
+007B; [09 82, 05, 05]
+FF5B; [09 82, 05, 10]
+FE5B; [09 82, 05, 1E]
+FE37; [09 82, 05, 2C]
-007B; [09 9A, 05, 05]
-FF5B; [09 9A, 05, 10]
-FE5B; [09 9A, 05, 1E]
-FE37; [09 9A, 05, 2C]
+007D; [09 84, 05, 05]
+FF5D; [09 84, 05, 10]
+FE5C; [09 84, 05, 1E]
+FE38; [09 84, 05, 2C]
-007D; [09 9C, 05, 05]
-FF5D; [09 9C, 05, 10]
-FE5C; [09 9C, 05, 1E]
-FE38; [09 9C, 05, 2C]
+0F3A; [09 86, 05, 05]
-0F3A; [09 9E, 05, 05]
+0F3B; [09 88, 05, 05]
-0F3B; [09 A0, 05, 05]
+0F3C; [09 8A, 05, 05]
-0F3C; [09 A2, 05, 05]
+0F3D; [09 8C, 05, 05]
-0F3D; [09 A4, 05, 05]
+169B; [09 8E 02, 05, 05]
-169B; [09 A6 02, 05, 05]
+169C; [09 8E 09, 05, 05]
-169C; [09 A6 09, 05, 05]
+2045; [09 90, 05, 05]
-2045; [09 A8, 05, 05]
+2046; [09 92, 05, 05]
-2046; [09 AA, 05, 05]
+2308; [09 94, 05, 05]
-2308; [09 AC, 05, 05]
+2309; [09 96, 05, 05]
-2309; [09 AE, 05, 05]
+230A; [09 98, 05, 05]
-230A; [09 B0, 05, 05]
+230B; [09 9A, 05, 05]
-230B; [09 B2, 05, 05]
+29FC; [09 9C, 05, 05]
-29FC; [09 B4, 05, 05]
+29FD; [09 9E, 05, 05]
-29FD; [09 B6, 05, 05]
+2983; [09 A0, 05, 05]
-2983; [09 B8, 05, 05]
+2984; [09 A2, 05, 05]
-2984; [09 BA, 05, 05]
+2985; [09 A4, 05, 05]
+FF5F; [09 A4, 05, 20]
-2985; [09 BC, 05, 05]
-FF5F; [09 BC, 05, 20]
+2986; [09 A6, 05, 05]
+FF60; [09 A6, 05, 20]
-2986; [09 BE, 05, 05]
-FF60; [09 BE, 05, 20]
+2987; [09 A8, 05, 05]
-2987; [09 C0, 05, 05]
+2988; [09 AA, 05, 05]
-2988; [09 C2, 05, 05]
+2989; [09 AC, 05, 05]
-2989; [09 C4, 05, 05]
+298A; [09 AE, 05, 05]
-298A; [09 C6, 05, 05]
+298B; [09 B0, 05, 05]
-298B; [09 C8, 05, 05]
+298C; [09 B2, 05, 05]
-298C; [09 CA, 05, 05]
+298D; [09 B4, 05, 05]
-298D; [09 CC, 05, 05]
+298E; [09 B6, 05, 05]
-298E; [09 CE, 05, 05]
+298F; [09 B8, 05, 05]
-298F; [09 D0, 05, 05]
+2990; [09 BA, 05, 05]
-2990; [09 D2, 05, 05]
+2991; [09 BC, 05, 05]
-2991; [09 D4, 05, 05]
+2992; [09 BE, 05, 05]
-2992; [09 D6, 05, 05]
+2993; [09 C0, 05, 05]
-2993; [09 D8, 05, 05]
+2994; [09 C2, 05, 05]
-2994; [09 DA, 05, 05]
+2995; [09 C4, 05, 05]
-2995; [09 DC, 05, 05]
+2996; [09 C6, 05, 05]
-2996; [09 DE, 05, 05]
+2997; [09 C8, 05, 05]
-2997; [09 E0, 05, 05]
+2998; [09 CA, 05, 05]
-2998; [09 E2, 05, 05]
+27C5; [09 CC, 05, 05]
-27C5; [09 E4, 05, 05]
+27C6; [09 CE, 05, 05]
-27C6; [09 E6, 05, 05]
+27E6; [09 D0, 05, 05]
-27E6; [09 E8, 05, 05]
+27E7; [09 D2, 05, 05]
-27E7; [09 EA, 05, 05]
+27E8; [09 D4, 05, 05]
-27E8; [09 EC, 05, 05]
+27E9; [09 D6, 05, 05]
-27E9; [09 EE, 05, 05]
+27EA; [09 D8, 05, 05]
-27EA; [09 F0, 05, 05]
+27EB; [09 DA, 05, 05]
-27EB; [09 F2, 05, 05]
+27EC; [09 DC, 05, 05]
-27EC; [09 F4, 05, 05]
+27ED; [09 DE, 05, 05]
-27ED; [09 F6, 05, 05]
+27EE; [09 E0, 05, 05]
-27EE; [09 F8, 05, 05]
+27EF; [09 E2, 05, 05]
-27EF; [09 FA, 05, 05]
+2768; [09 E4, 05, 05]
-2768; [09 FC, 05, 05]
+2769; [09 E6, 05, 05]
-2769; [09 FE, 05, 05]
+276A; [09 E8, 05, 05]
-276A; [0A 02, 05, 05]
+276B; [09 EA, 05, 05]
-276B; [0A 04, 05, 05]
+276C; [09 EC, 05, 05]
-276C; [0A 06, 05, 05]
+276D; [09 EE, 05, 05]
-276D; [0A 08, 05, 05]
+276E; [09 F0, 05, 05]
-276E; [0A 0A, 05, 05]
+276F; [09 F2, 05, 05]
-276F; [0A 0C, 05, 05]
+2770; [09 F4, 05, 05]
-2770; [0A 0E, 05, 05]
+2771; [09 F6, 05, 05]
-2771; [0A 10, 05, 05]
+2772; [09 F8, 05, 05]
-2772; [0A 12, 05, 05]
+2773; [09 FA, 05, 05]
-2773; [0A 14, 05, 05]
+2774; [09 FC, 05, 05]
-2774; [0A 16, 05, 05]
+2775; [09 FE, 05, 05]
-2775; [0A 18, 05, 05]
+2E02; [0A 02, 05, 05]
-2E02; [0A 1A, 05, 05]
+2E03; [0A 04, 05, 05]
-2E03; [0A 1C, 05, 05]
+2E04; [0A 06, 05, 05]
-2E04; [0A 1E, 05, 05]
+2E05; [0A 08, 05, 05]
-2E05; [0A 20, 05, 05]
+2E09; [0A 0A, 05, 05]
-2E09; [0A 22, 05, 05]
+2E0A; [0A 0C, 05, 05]
-2E0A; [0A 24, 05, 05]
+2E0C; [0A 0E, 05, 05]
-2E0C; [0A 26, 05, 05]
+2E0D; [0A 10, 05, 05]
-2E0D; [0A 28, 05, 05]
+2E1C; [0A 12, 05, 05]
-2E1C; [0A 2A, 05, 05]
+2E1D; [0A 14, 05, 05]
-2E1D; [0A 2C, 05, 05]
+2E20; [0A 16, 05, 05]
-2E20; [0A 2E, 05, 05]
+2E21; [0A 18, 05, 05]
-2E21; [0A 30, 05, 05]
+2E22; [0A 1A, 05, 05]
-2E22; [0A 32, 05, 05]
+2E23; [0A 1C, 05, 05]
-2E23; [0A 34, 05, 05]
+2E24; [0A 1E, 05, 05]
-2E24; [0A 36, 05, 05]
+2E25; [0A 20, 05, 05]
-2E25; [0A 38, 05, 05]
+2E26; [0A 22, 05, 05]
-2E26; [0A 3A, 05, 05]
+2E27; [0A 24, 05, 05]
-2E27; [0A 3C, 05, 05]
+2E28; [0A 26, 05, 05]
-2E28; [0A 3E, 05, 05]
+2E29; [0A 28, 05, 05]
-2E29; [0A 40, 05, 05]
+2E55; [0A 2A, 05, 05]
-2E55; [0A 42, 05, 05]
+2E56; [0A 2C, 05, 05]
-2E56; [0A 44, 05, 05]
+2E57; [0A 2E, 05, 05]
-2E57; [0A 46, 05, 05]
+2E58; [0A 30, 05, 05]
-2E58; [0A 48, 05, 05]
+2E59; [0A 32, 05, 05]
-2E59; [0A 4A, 05, 05]
+2E5A; [0A 34, 05, 05]
-2E5A; [0A 4C, 05, 05]
+2E5B; [0A 36, 05, 05]
-2E5B; [0A 4E, 05, 05]
+2E5C; [0A 38, 05, 05]
-2E5C; [0A 50, 05, 05]
+2329; [0A 3A, 05, 05]
+3008; [0A 3A, 05, 05]
+FE3F; [0A 3A, 05, 20]
-2329; [0A 52, 05, 05]
-3008; [0A 52, 05, 05]
-FE3F; [0A 52, 05, 20]
+232A; [0A 3C, 05, 05]
+3009; [0A 3C, 05, 05]
+FE40; [0A 3C, 05, 20]
-232A; [0A 54, 05, 05]
-3009; [0A 54, 05, 05]
-FE40; [0A 54, 05, 20]
+300A; [0A 3E, 05, 05]
+FE3D; [0A 3E, 05, 20]
-300A; [0A 56, 05, 05]
-FE3D; [0A 56, 05, 20]
+300B; [0A 40, 05, 05]
+FE3E; [0A 40, 05, 20]
-300B; [0A 58, 05, 05]
-FE3E; [0A 58, 05, 20]
+300C; [0A 42, 05, 05]
+FF62; [0A 42, 05, A0]
+FE41; [0A 42, 05, 2E]
-300C; [0A 5A, 05, 05]
-FF62; [0A 5A, 05, A0]
-FE41; [0A 5A, 05, 2E]
+300D; [0A 44, 05, 05]
+FF63; [0A 44, 05, A0]
+FE42; [0A 44, 05, 2E]
-300D; [0A 5C, 05, 05]
-FF63; [0A 5C, 05, A0]
-FE42; [0A 5C, 05, 2E]
+300E; [0A 46, 05, 05]
+FE43; [0A 46, 05, 20]
-300E; [0A 5E, 05, 05]
-FE43; [0A 5E, 05, 20]
+300F; [0A 48, 05, 05]
+FE44; [0A 48, 05, 20]
-300F; [0A 60, 05, 05]
-FE44; [0A 60, 05, 20]
+3010; [0A 4A, 05, 05]
+FE3B; [0A 4A, 05, 20]
-3010; [0A 62, 05, 05]
-FE3B; [0A 62, 05, 20]
+3011; [0A 4C, 05, 05]
+FE3C; [0A 4C, 05, 20]
-3011; [0A 64, 05, 05]
-FE3C; [0A 64, 05, 20]
+3014; [0A 4E, 05, 05]
+FE5D; [0A 4E, 05, 1E]
+FE39; [0A 4E, 05, 2C]
+1F12A; [0A 4E, 05, 10][4E, 05, A2][0A 50, 05, 10]
+1F241; [0A 4E, 05, 10][U+4E09, 10][0A 50, 05, 10]
+1F242; [0A 4E, 05, 10][U+4E8C, 10][0A 50, 05, 10]
+1F247; [0A 4E, 05, 10][U+52DD, 10][0A 50, 05, 10]
+1F243; [0A 4E, 05, 10][U+5B89, 10][0A 50, 05, 10]
+1F245; [0A 4E, 05, 10][U+6253, 10][0A 50, 05, 10]
+1F248; [0A 4E, 05, 10][U+6557, 10][0A 50, 05, 10]
+1F240; [0A 4E, 05, 10][U+672C, 10][0A 50, 05, 10]
+1F244; [0A 4E, 05, 10][U+70B9, 10][0A 50, 05, 10]
+1F246; [0A 4E, 05, 10][U+76D7, 10][0A 50, 05, 10]
-3014; [0A 66, 05, 05]
-FE5D; [0A 66, 05, 1E]
-FE39; [0A 66, 05, 2C]
-1F12A; [0A 66, 05, 10][4E, 05, A2][0A 68, 05, 10]
-1F241; [0A 66, 05, 10][U+4E09, 10][0A 68, 05, 10]
-1F242; [0A 66, 05, 10][U+4E8C, 10][0A 68, 05, 10]
-1F247; [0A 66, 05, 10][U+52DD, 10][0A 68, 05, 10]
-1F243; [0A 66, 05, 10][U+5B89, 10][0A 68, 05, 10]
-1F245; [0A 66, 05, 10][U+6253, 10][0A 68, 05, 10]
-1F248; [0A 66, 05, 10][U+6557, 10][0A 68, 05, 10]
-1F240; [0A 66, 05, 10][U+672C, 10][0A 68, 05, 10]
-1F244; [0A 66, 05, 10][U+70B9, 10][0A 68, 05, 10]
-1F246; [0A 66, 05, 10][U+76D7, 10][0A 68, 05, 10]
+3015; [0A 50, 05, 05]
+FE5E; [0A 50, 05, 1E]
+FE3A; [0A 50, 05, 2C]
-3015; [0A 68, 05, 05]
-FE5E; [0A 68, 05, 1E]
-FE3A; [0A 68, 05, 2C]
+3016; [0A 52, 05, 05]
+FE17; [0A 52, 05, 20]
-3016; [0A 6A, 05, 05]
-FE17; [0A 6A, 05, 20]
+3017; [0A 54, 05, 05]
+FE18; [0A 54, 05, 20]
-3017; [0A 6C, 05, 05]
-FE18; [0A 6C, 05, 20]
+3018; [0A 56, 05, 05]
-3018; [0A 6E, 05, 05]
+3019; [0A 58, 05, 05]
-3019; [0A 70, 05, 05]
+301A; [0A 5A, 05, 05]
-301A; [0A 72, 05, 05]
+301B; [0A 5C, 05, 05]
-301B; [0A 74, 05, 05]
+FD3E; [0A 5E, 05, 05]
-FD3E; [0A 76, 05, 05]
+FD3F; [0A 60, 05, 05]
-FD3F; [0A 78, 05, 05]
+2016; [0A 62, 05, 05]
-2016; [0A 7A, 05, 05]
+2E3E; [0A 64, 05, 05]
-2E3E; [0A 7C, 05, 05]
+29D8; [0A 66, 05, 05]
-29D8; [0A 7E, 05, 05]
+29D9; [0A 68, 05, 05]
-29D9; [0A 80, 05, 05]
+29DA; [0A 6A, 05, 05]
-29DA; [0A 82, 05, 05]
+29DB; [0A 6C, 05, 05]
-29DB; [0A 84, 05, 05]
+00A7; [0A 6E, 05, 05]
-00A7; [0A 86, 05, 05]
+2E39; [0A 70, 05, 05]
-2E39; [0A 88, 05, 05]
+00B6; [0A 72, 05, 05]
-00B6; [0A 8A, 05, 05]
+204B; [0A 74, 05, 05]
-204B; [0A 8C, 05, 05]
+2E4D; [0A 76, 05, 05]
-2E4D; [0A 8E, 05, 05]
+2E3F; [0A 78, 05, 05]
-2E3F; [0A 90, 05, 05]
+0040; [0A 7A, 05, 05]
+FF20; [0A 7A, 05, 20]
+FE6B; [0A 7A, 05, 2E]
-0040; [0A 92, 05, 05]
-FF20; [0A 92, 05, 20]
-FE6B; [0A 92, 05, 2E]
+002A; [0A 7C, 05, 05]
+FF0A; [0A 7C, 05, 20]
+FE61; [0A 7C, 05, 2E]
-002A; [0A 94, 05, 05]
-FF0A; [0A 94, 05, 20]
-FE61; [0A 94, 05, 2E]
+204E; [0A 7E, 05, 05]
-204E; [0A 96, 05, 05]
+2051; [0A 80, 05, 05]
-2051; [0A 98, 05, 05]
+066D; [0A 82, 05, 05]
-066D; [0A 9A, 05, 05]
+A673; [0A 84, 05, 05]
-A673; [0A 9C, 05, 05]
+002F; [0A 86, 05, 05]
+FF0F; [0A 86, 05, 20]
-002F; [0A 9E, 05, 05]
-FF0F; [0A 9E, 05, 20]
+005C; [0A 88, 05, 05]
+FF3C; [0A 88, 05, 20]
+FE68; [0A 88, 05, 2E]
-005C; [0A A0, 05, 05]
-FF3C; [0A A0, 05, 20]
-FE68; [0A A0, 05, 2E]
+2E4A; [0A 8A, 05, 05]
-2E4A; [0A A2, 05, 05]
+0026; [0A 8C, 05, 05]
+FF06; [0A 8C, 05, 20]
+FE60; [0A 8C, 05, 2E]
-0026; [0A A4, 05, 05]
-FF06; [0A A4, 05, 20]
-FE60; [0A A4, 05, 2E]
+204A; [0A 8E, 05, 05]
-204A; [0A A6, 05, 05]
+2E52; [0A 90, 05, 05]
-2E52; [0A A8, 05, 05]
+0023; [0A 92, 05, 05]
+FF03; [0A 92, 05, 20]
+FE5F; [0A 92, 05, 2E]
-0023; [0A AA, 05, 05]
-FF03; [0A AA, 05, 20]
-FE5F; [0A AA, 05, 2E]
+0025; [0A 94, 05, 05]
+FF05; [0A 94, 05, 20]
+FE6A; [0A 94, 05, 2E]
-0025; [0A AC, 05, 05]
-FF05; [0A AC, 05, 20]
-FE6A; [0A AC, 05, 2E]
+066A; [0A 96, 05, 05]
-066A; [0A AE, 05, 05]
+2030; [0A 98, 05, 05]
-2030; [0A B0, 05, 05]
+0609; [0A 9A, 05, 05]
-0609; [0A B2, 05, 05]
+2031; [0A 9C, 05, 05]
-2031; [0A B4, 05, 05]
+060A; [0A 9E, 05, 05]
-060A; [0A B6, 05, 05]
+2020; [0A A0, 05, 05]
-2020; [0A B8, 05, 05]
+2021; [0A A2, 05, 05]
-2021; [0A BA, 05, 05]
+2E36; [0A A4, 05, 05]
-2E36; [0A BC, 05, 05]
+2E37; [0A A6, 05, 05]
-2E37; [0A BE, 05, 05]
+2E38; [0A A8, 05, 05]
-2E38; [0A C0, 05, 05]
+2E4B; [0A AA, 05, 05]
-2E4B; [0A C2, 05, 05]
+2022; [0A AC, 05, 05]
-2022; [0A C4, 05, 05]
+2023; [0A AE, 05, 05]
-2023; [0A C6, 05, 05]
+2027; [0A B0, 05, 05]
-2027; [0A C8, 05, 05]
+2043; [0A B2, 05, 05]
-2043; [0A CA, 05, 05]
+204C; [0A B4, 05, 05]
-204C; [0A CC, 05, 05]
+204D; [0A B6, 05, 05]
-204D; [0A CE, 05, 05]
+2032; [0A B8, 05, 05]
+2033; [0A B8, 05, 20][0A B8, 05, 20]
+2034; [0A B8, 05, 20][0A B8, 05, 20][0A B8, 05, 20]
+2057; [0A B8, 05, 20][0A B8, 05, 20][0A B8, 05, 20][0A B8, 05, 20]
-2032; [0A D0, 05, 05]
-2033; [0A D0, 05, 20][0A D0, 05, 20]
-2034; [0A D0, 05, 20][0A D0, 05, 20][0A D0, 05, 20]
-2057; [0A D0, 05, 20][0A D0, 05, 20][0A D0, 05, 20][0A D0, 05, 20]
+2035; [0A BA, 05, 05]
+2036; [0A BA, 05, 20][0A BA, 05, 20]
+2037; [0A BA, 05, 20][0A BA, 05, 20][0A BA, 05, 20]
-2035; [0A D2, 05, 05]
-2036; [0A D2, 05, 20][0A D2, 05, 20]
-2037; [0A D2, 05, 20][0A D2, 05, 20][0A D2, 05, 20]
+3003; [0A BC, 05, 05]
-3003; [0A D4, 05, 05]
+303D; [0A BE, 05, 05]
-303D; [0A D6, 05, 05]
+2038; [0A C0, 05, 05]
-2038; [0A D8, 05, 05]
+203B; [0A C2, 05, 05]
-203B; [0A DA, 05, 05]
+203F; [0A C4, 05, 05]
-203F; [0A DC, 05, 05]
+2054; [0A C6, 05, 05]
-2054; [0A DE, 05, 05]
+2040; [0A C8, 05, 05]
-2040; [0A E0, 05, 05]
+2050; [0A CA, 05, 05]
-2050; [0A E2, 05, 05]
+2041; [0A CC, 05, 05]
-2041; [0A E4, 05, 05]
+2042; [0A CE, 05, 05]
-2042; [0A E6, 05, 05]
+2E00; [0A D0, 05, 05]
-2E00; [0A E8, 05, 05]
+2E01; [0A D2, 05, 05]
-2E01; [0A EA, 05, 05]
+2E06; [0A D4, 05, 05]
-2E06; [0A EC, 05, 05]
+2E07; [0A D6, 05, 05]
-2E07; [0A EE, 05, 05]
+2E08; [0A D8, 05, 05]
-2E08; [0A F0, 05, 05]
+2E0B; [0A DA, 05, 05]
-2E0B; [0A F2, 05, 05]
+2E0E; [0A DC, 05, 05]
-2E0E; [0A F4, 05, 05]
+2E0F; [0A DE, 05, 05]
-2E0F; [0A F6, 05, 05]
+2E10; [0A E0, 05, 05]
-2E10; [0A F8, 05, 05]
+2E11; [0A E2, 05, 05]
-2E11; [0A FA, 05, 05]
+2E12; [0A E4, 05, 05]
-2E12; [0A FC, 05, 05]
+2E13; [0A E6, 05, 05]
-2E13; [0A FE, 05, 05]
+2E14; [0A E8, 05, 05]
-2E14; [0B 02, 05, 05]
+2E15; [0A EA, 05, 05]
-2E15; [0B 04, 05, 05]
+2E16; [0A EC, 05, 05]
-2E16; [0B 06, 05, 05]
+2E1A; [0A EE, 05, 05]
-2E1A; [0B 08, 05, 05]
+2E1B; [0A F0, 05, 05]
-2E1B; [0B 0A, 05, 05]
+2E1E; [0A F2, 05, 05]
-2E1E; [0B 0C, 05, 05]
+2E1F; [0A F4, 05, 05]
-2E1F; [0B 0E, 05, 05]
+2E44; [0A F6, 05, 05]
-2E44; [0B 10, 05, 05]
+2E45; [0A F8, 05, 05]
-2E45; [0B 12, 05, 05]
+2E46; [0A FA, 05, 05]
-2E46; [0B 14, 05, 05]
+2E47; [0A FC, 05, 05]
-2E47; [0B 16, 05, 05]
+2E48; [0A FE, 05, 05]
-2E48; [0B 18, 05, 05]
+A67E; [0B 02, 05, 05]
-A67E; [0B 1A, 05, 05]
+055A; [0B 04, 05, 05]
-055A; [0B 1C, 05, 05]
+055B; [0B 06, 05, 05]
-055B; [0B 1E, 05, 05]
+055F; [0B 08, 05, 05]
-055F; [0B 20, 05, 05]
+05BE; [0B 0A, 05, 05]
-05BE; [0B 22, 05, 05]
+05C0; [0B 0C, 05, 05]
-05C0; [0B 24, 05, 05]
+05C3; [0B 0E, 05, 05]
-05C3; [0B 26, 05, 05]
+05C6; [0B 10, 05, 05]
-05C6; [0B 28, 05, 05]
+070A; [0B 12 02, 05, 05]
-05F3; [0B 2A, 05, 05]
+070B; [0B 12 09, 05, 05]
-05F4; [0B 2C, 05, 05]
+070C; [0B 12 10, 05, 05]
-070A; [0B 2E 02, 05, 05]
+070D; [0B 12 17, 05, 05]
-070B; [0B 2E 09, 05, 05]
+085E; [0B 12 1E, 05, 05]
-070C; [0B 2E 10, 05, 05]
+1800; [0B 12 25, 05, 05]
-070D; [0B 2E 17, 05, 05]
+11660; [0B 12 2C, 05, 05]
-085E; [0B 2E 1E, 05, 05]
+11661; [0B 12 33, 05, 05]
-1800; [0B 2E 25, 05, 05]
+11662; [0B 12 3A, 05, 05]
-11660; [0B 2E 2C, 05, 05]
+11663; [0B 12 41, 05, 05]
-11661; [0B 2E 33, 05, 05]
+11664; [0B 12 48, 05, 05]
-11662; [0B 2E 3A, 05, 05]
+11665; [0B 12 4F, 05, 05]
-11663; [0B 2E 41, 05, 05]
+11666; [0B 12 56, 05, 05]
-11664; [0B 2E 48, 05, 05]
+11667; [0B 12 5D, 05, 05]
-11665; [0B 2E 4F, 05, 05]
+11668; [0B 12 64, 05, 05]
-11666; [0B 2E 56, 05, 05]
+11669; [0B 12 6B, 05, 05]
-11667; [0B 2E 5D, 05, 05]
+1166A; [0B 12 72, 05, 05]
-11668; [0B 2E 64, 05, 05]
+1166B; [0B 12 79, 05, 05]
-11669; [0B 2E 6B, 05, 05]
+1166C; [0B 12 80, 05, 05]
-1166A; [0B 2E 72, 05, 05]
+0970; [0B 14, 05, 05]
-1166B; [0B 2E 79, 05, 05]
+A8F8; [0B 16, 05, 05]
-1166C; [0B 2E 80, 05, 05]
+A8F9; [0B 18, 05, 05]
-0970; [0B 30, 05, 05]
+A8FA; [0B 1A, 05, 05]
-A8F8; [0B 32, 05, 05]
+A8FC; [0B 1C, 05, 05]
-A8F9; [0B 34, 05, 05]
+11B00; [0B 1E, 05, 05]
-A8FA; [0B 36, 05, 05]
+11B01; [0B 20, 05, 05]
-A8FC; [0B 38, 05, 05]
+11B02; [0B 22, 05, 05]
-11B00; [0B 3A, 05, 05]
+11B03; [0B 24, 05, 05]
-11B01; [0B 3C, 05, 05]
+11B04; [0B 26, 05, 05]
-11B02; [0B 3E, 05, 05]
+11B05; [0B 28, 05, 05]
-11B03; [0B 40, 05, 05]
+11B06; [0B 2A, 05, 05]
-11B04; [0B 42, 05, 05]
+11B07; [0B 2C, 05, 05]
-11B05; [0B 44, 05, 05]
+11B08; [0B 2E, 05, 05]
-11B06; [0B 46, 05, 05]
+11B09; [0B 30, 05, 05]
-11B07; [0B 48, 05, 05]
+09FD; [0B 32, 05, 05]
-11B08; [0B 4A, 05, 05]
+0A76; [0B 34, 05, 05]
-11B09; [0B 4C, 05, 05]
+0AF0; [0B 36, 05, 05]
-09FD; [0B 4E, 05, 05]
+0C77; [0B 38, 05, 05]
-0A76; [0B 50, 05, 05]
+0C84; [0B 3A, 05, 05]
-0AF0; [0B 52, 05, 05]
+0DF4; [0B 3C, 05, 05]
-0C77; [0B 54, 05, 05]
+0E4F; [0B 3E, 05, 05]
-0C84; [0B 56, 05, 05]
+0E5A; [0B 40, 05, 05]
-0DF4; [0B 58, 05, 05]
+0E5B; [0B 42, 05, 05]
-0E4F; [0B 5A, 05, 05]
+AADE; [0B 44 02, 05, 05]
-0E5A; [0B 5C, 05, 05]
+AADF; [0B 44 09, 05, 05]
-0E5B; [0B 5E, 05, 05]
+0F04; [0B 46, 05, 05]
-AADE; [0B 60 02, 05, 05]
+0F05; [0B 48, 05, 05]
-AADF; [0B 60 09, 05, 05]
+0F06; [0B 4A, 05, 05]
-0F04; [0B 62, 05, 05]
+0F07; [0B 4C, 05, 05]
-0F05; [0B 64, 05, 05]
+0F08; [0B 4E, 05, 05]
-0F06; [0B 66, 05, 05]
+0F09; [0B 50, 05, 05]
-0F07; [0B 68, 05, 05]
+0F0A; [0B 52, 05, 05]
-0F08; [0B 6A, 05, 05]
+0FD0; [0B 54, 05, 05]
-0F09; [0B 6C, 05, 05]
+0FD1; [0B 56, 05, 05]
-0F0A; [0B 6E, 05, 05]
+0F0B; [0B 58, 05, 05]
+0F0C; [0B 58, 05, 20]
-0FD0; [0B 70, 05, 05]
+0F0D; [0B 5A, 05, 05]
-0FD1; [0B 72, 05, 05]
+0F0E; [0B 5C, 05, 05]
-0F0B; [0B 74, 05, 05]
-0F0C; [0B 74, 05, 20]
+0F0F; [0B 5E, 05, 05]
-0F0D; [0B 76, 05, 05]
+0F10; [0B 60, 05, 05]
-0F0E; [0B 78, 05, 05]
+0F11; [0B 62, 05, 05]
-0F0F; [0B 7A, 05, 05]
+0F12; [0B 64, 05, 05]
-0F10; [0B 7C, 05, 05]
+0F85; [0B 66, 05, 05]
-0F11; [0B 7E, 05, 05]
+0FD2; [0B 68, 05, 05]
-0F12; [0B 80, 05, 05]
+0FD3; [0B 6A, 05, 05]
-0F85; [0B 82, 05, 05]
+0FD4; [0B 6C, 05, 05]
-0FD2; [0B 84, 05, 05]
+0FD9; [0B 6E, 05, 05]
-0FD3; [0B 86, 05, 05]
+0FDA; [0B 70, 05, 05]
-0FD4; [0B 88, 05, 05]
+11A3F; [0B 72 02, 05, 05]
-0FD9; [0B 8A, 05, 05]
+11A40; [0B 72 09, 05, 05]
-0FDA; [0B 8C, 05, 05]
+11A41; [0B 72 10, 05, 05]
-11A3F; [0B 8E 02, 05, 05]
+11A42; [0B 72 17, 05, 05]
-11A40; [0B 8E 09, 05, 05]
+11A43; [0B 72 1E, 05, 05]
-11A41; [0B 8E 10, 05, 05]
+11A44; [0B 72 25, 05, 05]
-11A42; [0B 8E 17, 05, 05]
+11A45; [0B 72 2C, 05, 05]
-11A43; [0B 8E 1E, 05, 05]
+11A46; [0B 72 33, 05, 05]
-11A44; [0B 8E 25, 05, 05]
+11A9A; [0B 72 3A, 05, 05]
-11A45; [0B 8E 2C, 05, 05]
+11A9B; [0B 72 41, 05, 05]
-11A46; [0B 8E 33, 05, 05]
+11A9C; [0B 72 48, 05, 05]
-11A9A; [0B 8E 3A, 05, 05]
+11A9E; [0B 72 4F, 05, 05]
-11A9B; [0B 8E 41, 05, 05]
+11A9F; [0B 72 56, 05, 05]
-11A9C; [0B 8E 48, 05, 05]
+11AA0; [0B 72 5D, 05, 05]
-11A9E; [0B 8E 4F, 05, 05]
+11AA1; [0B 72 64, 05, 05]
-11A9F; [0B 8E 56, 05, 05]
+11AA2; [0B 72 6B, 05, 05]
-11AA0; [0B 8E 5D, 05, 05]
+11C70; [0B 72 72, 05, 05]
-11AA1; [0B 8E 64, 05, 05]
+11C71; [0B 72 79, 05, 05]
-11AA2; [0B 8E 6B, 05, 05]
+1C3D; [0B 72 80, 05, 05]
-11C70; [0B 8E 72, 05, 05]
+1C3E; [0B 72 87, 05, 05]
-11C71; [0B 8E 79, 05, 05]
+1C3F; [0B 72 8E, 05, 05]
-1C3D; [0B 8E 80, 05, 05]
+104C; [0B 74, 05, 05]
-1C3E; [0B 8E 87, 05, 05]
+104D; [0B 76, 05, 05]
-1C3F; [0B 8E 8E, 05, 05]
+104E; [0B 78, 05, 05]
-104C; [0B 90, 05, 05]
+104F; [0B 7A, 05, 05]
-104D; [0B 92, 05, 05]
+17D8; [0B 7C, 05, 05]
-104E; [0B 94, 05, 05]
+17D9; [0B 7E, 05, 05]
-104F; [0B 96, 05, 05]
+17DA; [0B 80, 05, 05]
-17D8; [0B 98, 05, 05]
+1AA0; [0B 82 02, 05, 05]
-17D9; [0B 9A, 05, 05]
+1AA1; [0B 82 09, 05, 05]
-17DA; [0B 9C, 05, 05]
+1AA2; [0B 82 10, 05, 05]
-1AA0; [0B 9E 02, 05, 05]
+1AA3; [0B 82 17, 05, 05]
-1AA1; [0B 9E 09, 05, 05]
+1AA4; [0B 82 1E, 05, 05]
-1AA2; [0B 9E 10, 05, 05]
+1AA5; [0B 82 25, 05, 05]
-1AA3; [0B 9E 17, 05, 05]
+1AA6; [0B 82 2C, 05, 05]
-1AA4; [0B 9E 1E, 05, 05]
+1AAC; [0B 82 33, 05, 05]
-1AA5; [0B 9E 25, 05, 05]
+1AAD; [0B 82 3A, 05, 05]
-1AA6; [0B 9E 2C, 05, 05]
+1CC0; [0B 82 41, 05, 05]
-1AAC; [0B 9E 33, 05, 05]
+1CC1; [0B 82 48, 05, 05]
-1AAD; [0B 9E 3A, 05, 05]
+1CC2; [0B 82 4F, 05, 05]
-1CC0; [0B 9E 41, 05, 05]
+1CC3; [0B 82 56, 05, 05]
-1CC1; [0B 9E 48, 05, 05]
+1CC4; [0B 82 5D, 05, 05]
-1CC2; [0B 9E 4F, 05, 05]
+1CC5; [0B 82 64, 05, 05]
-1CC3; [0B 9E 56, 05, 05]
+1CC6; [0B 82 6B, 05, 05]
-1CC4; [0B 9E 5D, 05, 05]
+1CC7; [0B 82 72, 05, 05]
-1CC5; [0B 9E 64, 05, 05]
+2D70; [0B 82 79, 05, 05]
-1CC6; [0B 9E 6B, 05, 05]
+A874; [0B 82 80, 05, 05]
-1CC7; [0B 9E 72, 05, 05]
+A875; [0B 82 87, 05, 05]
-2D70; [0B 9E 79, 05, 05]
+1BFC; [0B 82 8E, 05, 05]
-A874; [0B 9E 80, 05, 05]
+1BFD; [0B 82 95, 05, 05]
-A875; [0B 9E 87, 05, 05]
+1BFE; [0B 82 9C, 05, 05]
-1BFC; [0B 9E 8E, 05, 05]
+1BFF; [0B 82 A3, 05, 05]
-1BFD; [0B 9E 95, 05, 05]
+A92E; [0B 84, 05, 05]
-1BFE; [0B 9E 9C, 05, 05]
+A9DE; [0B 86 02, 05, 05]
-1BFF; [0B 9E A3, 05, 05]
+A9DF; [0B 86 09, 05, 05]
-A92E; [0B A0, 05, 05]
+AA5C; [0B 86 10, 05, 05]
-A9DE; [0B A2 02, 05, 05]
+1056F; [0B 86 17, 05, 05]
-A9DF; [0B A2 09, 05, 05]
+11049; [0B 86 1E, 05, 05]
-AA5C; [0B A2 10, 05, 05]
+1104A; [0B 86 25, 05, 05]
-1056F; [0B A2 17, 05, 05]
+1104B; [0B 86 2C, 05, 05]
-11049; [0B A2 1E, 05, 05]
+1104C; [0B 86 33, 05, 05]
-1104A; [0B A2 25, 05, 05]
+1104D; [0B 86 3A, 05, 05]
-1104B; [0B A2 2C, 05, 05]
+10A50; [0B 86 41, 05, 05]
-1104C; [0B A2 33, 05, 05]
+10A51; [0B 86 48, 05, 05]
-1104D; [0B A2 3A, 05, 05]
+10A52; [0B 86 4F, 05, 05]
-10A50; [0B A2 41, 05, 05]
+10A53; [0B 86 56, 05, 05]
-10A51; [0B A2 48, 05, 05]
+10A54; [0B 86 5D, 05, 05]
-10A52; [0B A2 4F, 05, 05]
+10A55; [0B 86 64, 05, 05]
-10A53; [0B A2 56, 05, 05]
+10A58; [0B 86 6B, 05, 05]
-10A54; [0B A2 5D, 05, 05]
+11C43; [0B 86 72, 05, 05]
-10A55; [0B A2 64, 05, 05]
+11C44; [0B 86 79, 05, 05]
-10A58; [0B A2 6B, 05, 05]
+11C45; [0B 86 80, 05, 05]
-11C43; [0B A2 72, 05, 05]
+10B39; [0B 86 87, 05, 05]
-11C44; [0B A2 79, 05, 05]
+10A7F; [0B 86 8E, 05, 05]
-11C45; [0B A2 80, 05, 05]
+10AF0; [0B 86 95, 05, 05]
-10B39; [0B A2 87, 05, 05]
+10AF1; [0B 86 9C, 05, 05]
-10AF0; [0B A2 8E, 05, 05]
+10AF2; [0B 86 A3, 05, 05]
-10AF1; [0B A2 95, 05, 05]
+10AF3; [0B 86 AA, 05, 05]
-10AF2; [0B A2 9C, 05, 05]
+10AF4; [0B 86 B1, 05, 05]
-10AF3; [0B A2 A3, 05, 05]
+10AF5; [0B 86 B8, 05, 05]
-10AF4; [0B A2 AA, 05, 05]
+10AF6; [0B 86 BF, 05, 05]
-10AF5; [0B A2 B1, 05, 05]
+10B99; [0B 86 C6, 05, 05]
-10AF6; [0B A2 B8, 05, 05]
+10B9A; [0B 86 CD, 05, 05]
-10B99; [0B A2 BF, 05, 05]
+10B9B; [0B 86 D4, 05, 05]
-10B9A; [0B A2 C6, 05, 05]
+10B9C; [0B 86 DB, 05, 05]
-10B9B; [0B A2 CD, 05, 05]
+110BB; [0B 86 E2, 05, 05]
-10B9C; [0B A2 D4, 05, 05]
+110BC; [0B 86 E9, 05, 05]
-110BB; [0B A2 DB, 05, 05]
+11174; [0B 86 F0, 05, 05]
-110BC; [0B A2 E2, 05, 05]
+11175; [0B 86 F7, 05, 05]
-11174; [0B A2 E9, 05, 05]
+111CD; [0B 86 FE, 05, 05]
-11175; [0B A2 F0, 05, 05]
+111C7; [0B 87 07, 05, 05]
-111CD; [0B A2 F7, 05, 05]
+111DB; [0B 87 0E, 05, 05]
-111C7; [0B A2 FE, 05, 05]
+111DD; [0B 87 15, 05, 05]
-111DB; [0B A3 07, 05, 05]
+1123A; [0B 87 1C, 05, 05]
-111DD; [0B A3 0E, 05, 05]
+1123B; [0B 87 23, 05, 05]
-1123A; [0B A3 15, 05, 05]
+1123C; [0B 87 2A, 05, 05]
-1123B; [0B A3 1C, 05, 05]
+1123D; [0B 87 31, 05, 05]
-1123C; [0B A3 23, 05, 05]
+1144D; [0B 87 38, 05, 05]
-1123D; [0B A3 2A, 05, 05]
+1145A; [0B 87 3F, 05, 05]
-1144D; [0B A3 31, 05, 05]
+1144E; [0B 87 46, 05, 05]
-1145A; [0B A3 38, 05, 05]
+1144F; [0B 87 4D, 05, 05]
-1144E; [0B A3 3F, 05, 05]
+1145B; [0B 87 54, 05, 05]
-1144F; [0B A3 46, 05, 05]
+1145D; [0B 87 5B, 05, 05]
-1145B; [0B A3 4D, 05, 05]
+114C6; [0B 87 62, 05, 05]
-1145D; [0B A3 54, 05, 05]
+115C1; [0B 87 69, 05, 05]
-114C6; [0B A3 5B, 05, 05]
+115C4; [0B 87 70, 05, 05]
-115C1; [0B A3 62, 05, 05]
+115C5; [0B 87 77, 05, 05]
-115C4; [0B A3 69, 05, 05]
+115C6; [0B 87 7E, 05, 05]
-115C5; [0B A3 70, 05, 05]
+115C7; [0B 87 85, 05, 05]
-115C6; [0B A3 77, 05, 05]
+115C8; [0B 87 8C, 05, 05]
-115C7; [0B A3 7E, 05, 05]
+115C9; [0B 87 93, 05, 05]
-115C8; [0B A3 85, 05, 05]
+115CA; [0B 87 9A, 05, 05]
-115C9; [0B A3 8C, 05, 05]
+115CB; [0B 87 A1, 05, 05]
-115CA; [0B A3 93, 05, 05]
+115CC; [0B 87 A8, 05, 05]
-115CB; [0B A3 9A, 05, 05]
+115CD; [0B 87 AF, 05, 05]
-115CC; [0B A3 A1, 05, 05]
+115CE; [0B 87 B6, 05, 05]
-115CD; [0B A3 A8, 05, 05]
+115CF; [0B 87 BD, 05, 05]
-115CE; [0B A3 AF, 05, 05]
+115D0; [0B 87 C4, 05, 05]
-115CF; [0B A3 B6, 05, 05]
+115D1; [0B 87 CB, 05, 05]
-115D0; [0B A3 BD, 05, 05]
+115D2; [0B 87 D2, 05, 05]
-115D1; [0B A3 C4, 05, 05]
+115D3; [0B 87 D9, 05, 05]
-115D2; [0B A3 CB, 05, 05]
+115D4; [0B 87 E0, 05, 05]
-115D3; [0B A3 D2, 05, 05]
+115D5; [0B 87 E7, 05, 05]
-115D4; [0B A3 D9, 05, 05]
+115D6; [0B 87 EE, 05, 05]
-115D5; [0B A3 E0, 05, 05]
+115D7; [0B 87 F5, 05, 05]
-115D6; [0B A3 E7, 05, 05]
+11643; [0B 87 FC, 05, 05]
-115D7; [0B A3 EE, 05, 05]
+116B9; [0B 88 05, 05, 05]
-11643; [0B A3 F5, 05, 05]
+1183B; [0B 88 0C, 05, 05]
-116B9; [0B A3 FC, 05, 05]
+11945; [0B 88 13, 05, 05]
-1183B; [0B A4 05, 05, 05]
+119E2; [0B 88 1A, 05, 05]
-11945; [0B A4 0C, 05, 05]
+11FFF; [0B 8A, 05, 05]
-119E2; [0B A4 13, 05, 05]
+16B37; [0B 8C 02, 05, 05]
-11FFF; [0B A6, 05, 05]
+16B38; [0B 8C 09, 05, 05]
-16B37; [0B A8 02, 05, 05]
+16B39; [0B 8C 10, 05, 05]
-16B38; [0B A8 09, 05, 05]
+16B3A; [0B 8C 17, 05, 05]
-16B39; [0B A8 10, 05, 05]
+16B3B; [0B 8C 1E, 05, 05]
-16B3A; [0B A8 17, 05, 05]
+16B44; [0B 8C 25, 05, 05]
-16B3B; [0B A8 1E, 05, 05]
+16E99; [0B 8C 2C, 05, 05]
-16B44; [0B A8 25, 05, 05]
+16E9A; [0B 8C 33, 05, 05]
-16E99; [0B A8 2C, 05, 05]
+1DA87; [0B 8C 3A, 05, 05]
-16E9A; [0B A8 33, 05, 05]
+1DA88; [0B 8C 41, 05, 05]
-1DA87; [0B A8 3A, 05, 05]
+1DA89; [0B 8C 48, 05, 05]
-1DA88; [0B A8 41, 05, 05]
+1DA8A; [0B 8C 4F, 05, 05]
-1DA89; [0B A8 48, 05, 05]
-
-1DA8A; [0B A8 4F, 05, 05]
-
-1DA8B; [0B A8 56, 05, 05]
-
-10A7F; [0B A8 5D, 05, 05]
+1DA8B; [0B 8C 56, 05, 05]
FDD1 263A; [0C 02 02, 05, 05] # SYMBOL first primary starts new lead byte
@@ -16941,79 +16932,89 @@ A4C6; [0C F1 4E, 05, 05]
2FFB; [0D 4F C3, 05, 05]
-31C0; [0D 4F CA, 05, 05]
+2FFC; [0D 4F CA, 05, 05]
+
+2FFD; [0D 4F D1, 05, 05]
+
+2FFE; [0D 4F D8, 05, 05]
-31C1; [0D 4F D1, 05, 05]
+2FFF; [0D 4F DF, 05, 05]
-31C2; [0D 4F D8, 05, 05]
+31EF; [0D 4F E6, 05, 05]
-31C3; [0D 4F DF, 05, 05]
+31C0; [0D 4F ED, 05, 05]
-31C4; [0D 4F E6, 05, 05]
+31C1; [0D 4F F4, 05, 05]
-31C5; [0D 4F ED, 05, 05]
+31C2; [0D 4F FB, 05, 05]
-31C6; [0D 4F F4, 05, 05]
+31C3; [0D 50 04, 05, 05]
-31C7; [0D 4F FB, 05, 05]
+31C4; [0D 50 0B, 05, 05]
-31C8; [0D 50 04, 05, 05]
+31C5; [0D 50 12, 05, 05]
-31C9; [0D 50 0B, 05, 05]
+31C6; [0D 50 19, 05, 05]
-31CA; [0D 50 12, 05, 05]
+31C7; [0D 50 20, 05, 05]
-31CB; [0D 50 19, 05, 05]
+31C8; [0D 50 27, 05, 05]
-31CC; [0D 50 20, 05, 05]
+31C9; [0D 50 2E, 05, 05]
-31CD; [0D 50 27, 05, 05]
+31CA; [0D 50 35, 05, 05]
-31CE; [0D 50 2E, 05, 05]
+31CB; [0D 50 3C, 05, 05]
-31CF; [0D 50 35, 05, 05]
+31CC; [0D 50 43, 05, 05]
-31D0; [0D 50 3C, 05, 05]
+31CD; [0D 50 4A, 05, 05]
-31D1; [0D 50 43, 05, 05]
+31CE; [0D 50 51, 05, 05]
-31D2; [0D 50 4A, 05, 05]
+31CF; [0D 50 58, 05, 05]
-31D3; [0D 50 51, 05, 05]
+31D0; [0D 50 5F, 05, 05]
-31D4; [0D 50 58, 05, 05]
+31D1; [0D 50 66, 05, 05]
-31D5; [0D 50 5F, 05, 05]
+31D2; [0D 50 6D, 05, 05]
-31D6; [0D 50 66, 05, 05]
+31D3; [0D 50 74, 05, 05]
-31D7; [0D 50 6D, 05, 05]
+31D4; [0D 50 7B, 05, 05]
-31D8; [0D 50 74, 05, 05]
+31D5; [0D 50 82, 05, 05]
-31D9; [0D 50 7B, 05, 05]
+31D6; [0D 50 89, 05, 05]
-31DA; [0D 50 82, 05, 05]
+31D7; [0D 50 90, 05, 05]
-31DB; [0D 50 89, 05, 05]
+31D8; [0D 50 97, 05, 05]
-31DC; [0D 50 90, 05, 05]
+31D9; [0D 50 9E, 05, 05]
-31DD; [0D 50 97, 05, 05]
+31DA; [0D 50 A5, 05, 05]
-31DE; [0D 50 9E, 05, 05]
+31DB; [0D 50 AC, 05, 05]
-31DF; [0D 50 A5, 05, 05]
+31DC; [0D 50 B3, 05, 05]
-31E0; [0D 50 AC, 05, 05]
+31DD; [0D 50 BA, 05, 05]
-31E1; [0D 50 B3, 05, 05]
+31DE; [0D 50 C1, 05, 05]
-31E2; [0D 50 BA, 05, 05]
+31DF; [0D 50 C8, 05, 05]
-31E3; [0D 50 C1, 05, 05]
+31E0; [0D 50 CF, 05, 05]
-3004; [0D 50 C8, 05, 05]
+31E1; [0D 50 D6, 05, 05]
+
+31E2; [0D 50 DD, 05, 05]
+
+31E3; [0D 50 E4, 05, 05]
+
+3004; [0D 50 EB, 05, 05]
3012; [0D 52, 05, 05]
3036; [0D 52, 05, 20]
@@ -17164,62 +17165,60 @@ A838; [0D A4, 05, 05]
20A6; [0D C2, 05, 05]
-20A7; [0D C4, 05, 05]
-
-20A9; [0D C6, 05, 05]
-FFE6; [0D C6, 05, 20]
+20A9; [0D C4, 05, 05]
+FFE6; [0D C4, 05, 20]
-20AA; [0D C8, 05, 05]
+20AA; [0D C6, 05, 05]
-20AB; [0D CA, 05, 05]
+20AB; [0D C8, 05, 05]
-20AC; [0D CC, 05, 05]
+20AC; [0D CA, 05, 05]
-20AD; [0D CE, 05, 05]
+20AD; [0D CC, 05, 05]
-20AE; [0D D0, 05, 05]
+20AE; [0D CE, 05, 05]
-20AF; [0D D2, 05, 05]
+20AF; [0D D0, 05, 05]
-20B0; [0D D4, 05, 05]
+20B0; [0D D2, 05, 05]
-20B1; [0D D6, 05, 05]
+20B1; [0D D4, 05, 05]
-20B2; [0D D8, 05, 05]
+20B2; [0D D6, 05, 05]
-20B3; [0D DA, 05, 05]
+20B3; [0D D8, 05, 05]
-20B4; [0D DC, 05, 05]
+20B4; [0D DA, 05, 05]
-20B5; [0D DE, 05, 05]
+20B5; [0D DC, 05, 05]
-20B6; [0D E0, 05, 05]
+20B6; [0D DE, 05, 05]
-20B7; [0D E2, 05, 05]
+20B7; [0D E0, 05, 05]
-20B8; [0D E4, 05, 05]
+20B8; [0D E2, 05, 05]
-20B9; [0D E6, 05, 05]
+20B9; [0D E4, 05, 05]
-1ECB0; [0D E8, 05, 05]
+1ECB0; [0D E6, 05, 05]
-20BA; [0D EA, 05, 05]
+20BA; [0D E8, 05, 05]
-20BB; [0D EC, 05, 05]
+20BB; [0D EA, 05, 05]
-20BC; [0D EE, 05, 05]
+20BC; [0D EC, 05, 05]
-20BD; [0D F0, 05, 05]
+20BD; [0D EE, 05, 05]
-20BE; [0D F2, 05, 05]
+20BE; [0D F0, 05, 05]
-20BF; [0D F4, 05, 05]
+20BF; [0D F2, 05, 05]
-20C0; [0D F6, 05, 05]
+20C0; [0D F4, 05, 05]
-20A8; [0D F8, 05, 05]
+20A8; [0D F6, 05, 05]
-FDFC; [0D FA, 05, 05]
+FDFC; [0D F8, 05, 05]
FDD1 0034; [0E 02 02, 05, 05] # DIGIT first primary starts new lead byte
@@ -19665,9 +19664,9 @@ A7C0; [2A, 05, A2][, A2, 20]
1E00; [2A, 05, 9C][, C8, 05]
1DD3; [2A, 70, 05]
33C2; [2A, 05, 31][08, 05, 30][42, 05, 31][08, 05, 30]
-2100; [2A, 05, 13][0A 9E, 05, 2E][2E, 05, 13]
-2101; [2A, 05, 13][0A 9E, 05, 2E][4E, 05, 13]
-214D; [2A, 05, A2][0A 9E, 05, 2E][4E, 05, A2]
+2100; [2A, 05, 13][0A 86, 05, 2E][2E, 05, 13]
+2101; [2A, 05, 13][0A 86, 05, 2E][4E, 05, 13]
+214D; [2A, 05, A2][0A 86, 05, 2E][4E, 05, A2]
33DF; [2A, 05, B4][0C 94, 05, 20][42, 05, 31]
A733; [2A, 05, 13][2A, 05, 13]
A732; [2A, 05, A2][2A, 05, A2]
@@ -19862,8 +19861,8 @@ A7F2; [2E, 05, B1]
00C7; [2E, 05, 9C][, A0, 05]
1E09; [2E, 05, 05][, A0, 05][, 88, 05]
1E08; [2E, 05, 9C][, A0, 05][, 88, 05]
-2105; [2E, 05, 13][0A 9E, 05, 2E][46, 05, 13]
-2106; [2E, 05, 13][0A 9E, 05, 2E][52, 05, 13]
+2105; [2E, 05, 13][0A 86, 05, 2E][46, 05, 13]
+2106; [2E, 05, 13][0A 86, 05, 2E][52, 05, 13]
33C6; [2E, 05, B1][0C 94, 05, 20][3E, 05, 31][36, 05, 2E]
3388; [2E, 05, 2E][2A, 05, 31][40, 05, 31]
33C4; [2E, 05, 2E][2E, 05, 2E]
@@ -21342,6 +21341,7 @@ FF30; [48, 05, 9F]
33DA; [48, 05, B4][4C, 05, B4]
33B0; [48, 05, 31][4E, 05, 31]
3250; [48, 05, B4][50, 05, B4][32, 05, B4]
+20A7; [48, 05, A2][50, 05, 13][4E, 05, 13]
33B4; [48, 05, 31][54, 05, B4]
33BA; [48, 05, 31][56, 05, B8]
@@ -65916,11 +65916,11 @@ FDD0 0052; [, , 3D 02] # CONSTRUCTED FAKE SECONDARY-IGNORABLE
[first secondary ignorable [,, 3D 02]] # CONSTRUCTED
[last secondary ignorable [,, 3D 02]] # CONSTRUCTED
[first secondary in primary non-ignorable [X, 05, X]] # U+0009 <CHARACTER TABULATION>
-[last secondary in primary non-ignorable [X, 7C, X]] # U+A7D9 LATIN SMALL LETTER SIGMOID S
+[last secondary in primary non-ignorable [X, 7F 02, X]] # U+05F4 HEBREW PUNCTUATION GERSHAYIM
[first primary ignorable [, 82, 05]] # U+0332 COMBINING LOW LINE
[last primary ignorable [, FB 94, 05]] # U+00B7 MIDDLE DOT
[first variable [03 04, 05, 05]] # U+0009 <CHARACTER TABULATION>
-[last variable [0B A8 5D, 05, 05]] # U+10A7F OLD SOUTH ARABIAN NUMERIC INDICATOR
+[last variable [0B 8C 56, 05, 05]] # U+1DA8B SIGNWRITING PARENTHESIS
[variable top = 0B FF FF FF]
[first regular [0C 04, 05, 05]] # U+0060 GRAVE ACCENT
[last regular [7D B2 F4, 05, 05]] # U+18CD5 KHITAN SMALL SCRIPT CHARACTER-18CD5
@@ -66115,16 +66115,16 @@ FDD0 0052; [, , 3D 02] # CONSTRUCTED FAKE SECONDARY-IGNORABLE
[categories Nl 10{DIGIT}=6 11{DIGIT}=43 12{DIGIT}=17 13{DIGIT}=1 15{DIGIT}=12 17{DIGIT}=16 19{DIGIT}=16 1B{DIGIT}=17 1D{DIGIT}=18 1F{DIGIT}=10 21{DIGIT}=10 23{DIGIT}=9 25{DIGIT}=11 77{Cans Ogam Runr Hung Orkh}=3 78{Vaii Bamu Bass Mend Medf Adlm}=10 7B{Bopo Yiii Lisu Plrd Wara Pauc Hmng Hmnp Toto Wcho Nagm Lyci Cari Lydi Ital Goth}=2 ]
[categories No 10{DIGIT}=125 11{DIGIT}=182 12{DIGIT}=132 13{DIGIT}=10 15{DIGIT}=60 17{DIGIT}=40 19{DIGIT}=38 1B{DIGIT}=34 1D{DIGIT}=33 1F{DIGIT}=24 21{DIGIT}=24 23{DIGIT}=24 25{DIGIT}=23 ]
[categories Pc 05{PUNCTUATION}=7 0A{PUNCTUATION}=3 ]
-[categories Pd 05{PUNCTUATION}=24 0B{PUNCTUATION}=2 ]
-[categories Pe 09{PUNCTUATION}=41 0A{PUNCTUATION}=36 ]
+[categories Pd 05{PUNCTUATION}=24 0A{PUNCTUATION}=1 0B{PUNCTUATION}=1 ]
+[categories Pe 09{PUNCTUATION}=47 0A{PUNCTUATION}=30 ]
[categories Pf 09{PUNCTUATION}=4 0A{PUNCTUATION}=6 ]
[categories Pi 05{PUNCTUATION}=1 09{PUNCTUATION}=6 0A{PUNCTUATION}=6 ]
-[categories Po 05{PUNCTUATION}=6 06{PUNCTUATION}=4 07{PUNCTUATION}=113 08{PUNCTUATION}=8 09{PUNCTUATION}=180 0A{PUNCTUATION}=78 0B{PUNCTUATION}=232 ]
-[categories Ps 09{PUNCTUATION}=182 0A{PUNCTUATION}=46 ]
-[categories Sc 0D{CURRENCY}=62 ]
+[categories Po 05{PUNCTUATION}=6 06{PUNCTUATION}=4 07{PUNCTUATION}=113 08{PUNCTUATION}=8 09{PUNCTUATION}=182 0A{PUNCTUATION}=89 0B{PUNCTUATION}=219 ]
+[categories Ps 09{PUNCTUATION}=188 0A{PUNCTUATION}=40 ]
+[categories Sc 0D{CURRENCY}=61 29{Latn}=1 2A{Latn}=1 2B{Latn}=1 2C{Latn}=1 2D{Latn}=1 2E{Latn}=1 2F{Latn}=1 30{Latn}=1 31{Latn}=1 32{Latn}=1 33{Latn}=1 34{Latn}=1 35{Latn}=1 36{Latn}=1 37{Latn}=1 38{Latn}=1 39{Latn}=1 3A{Latn}=1 3B{Latn}=1 3C{Latn}=1 3D{Latn}=1 3E{Latn}=1 3F{Latn}=1 40{Latn}=1 41{Latn}=1 42{Latn}=1 43{Latn}=1 44{Latn}=1 45{Latn}=1 46{Latn}=1 47{Latn}=1 48{Latn}=1 49{Latn}=1 4A{Latn}=1 4B{Latn}=1 4C{Latn}=1 4D{Latn}=1 4E{Latn}=1 4F{Latn}=1 50{Latn}=1 51{Latn}=1 52{Latn}=1 53{Latn}=1 54{Latn}=1 55{Latn}=1 56{Latn}=1 57{Latn}=1 58{Latn}=1 59{Latn}=1 5A{Latn}=1 5B{Latn}=1 5C{Latn}=1 5D{Latn}=1 ]
[categories Sk 0C{SYMBOL}=91 0D{CURRENCY}=5 ]
[categories Sm 0C{SYMBOL}=947 ]
-[categories So 0C{SYMBOL}=2661 0D{CURRENCY}=2878 15{DIGIT}=1 17{DIGIT}=3 19{DIGIT}=1 1B{DIGIT}=1 1D{DIGIT}=1 1F{DIGIT}=1 21{DIGIT}=1 23{DIGIT}=1 29{Latn}=77 2A{Latn}=77 2B{Latn}=77 2C{Latn}=77 2D{Latn}=77 2E{Latn}=77 2F{Latn}=77 30{Latn}=77 31{Latn}=77 32{Latn}=77 33{Latn}=77 34{Latn}=77 35{Latn}=77 36{Latn}=77 37{Latn}=77 38{Latn}=77 39{Latn}=77 3A{Latn}=77 3B{Latn}=77 3C{Latn}=77 3D{Latn}=77 3E{Latn}=77 3F{Latn}=77 40{Latn}=77 41{Latn}=77 42{Latn}=77 43{Latn}=77 44{Latn}=77 45{Latn}=77 46{Latn}=77 47{Latn}=77 48{Latn}=77 49{Latn}=77 4A{Latn}=77 4B{Latn}=77 4C{Latn}=77 4D{Latn}=77 4E{Latn}=77 4F{Latn}=77 50{Latn}=77 51{Latn}=77 52{Latn}=77 53{Latn}=77 54{Latn}=77 55{Latn}=77 56{Latn}=77 57{Latn}=77 58{Latn}=77 59{Latn}=77 5A{Latn}=77 5B{Latn}=77 5C{Latn}=77 5D{Latn}=77 66{Arab}=2 76{Tale Talu Lana Cham Bali Java Kawi Mong Olck Cher Osge}=2 7C{Dsrt Shaw Dupl Osma Elba Aghb Vith Sora Mroo Tnsa Linb Lina Cprt Cpmn Sarb Narb Avst Palm Nbat Hatr Armi Prti Phli Phlp Elym Mani Sogo Sogd Ougr Yezi Chrs Ugar Xpeo Xsux}=1 E5{TRAILING}=1 E6{TRAILING}=1 E7{TRAILING}=1 E8{TRAILING}=1 E9{TRAILING}=1 EA{TRAILING}=1 EB{TRAILING}=1 EC{TRAILING}=1 ED{TRAILING}=1 EE{TRAILING}=1 EF{TRAILING}=1 ]
+[categories So 0C{SYMBOL}=2661 0D{CURRENCY}=2883 15{DIGIT}=1 17{DIGIT}=3 19{DIGIT}=1 1B{DIGIT}=1 1D{DIGIT}=1 1F{DIGIT}=1 21{DIGIT}=1 23{DIGIT}=1 29{Latn}=77 2A{Latn}=77 2B{Latn}=77 2C{Latn}=77 2D{Latn}=77 2E{Latn}=77 2F{Latn}=77 30{Latn}=77 31{Latn}=77 32{Latn}=77 33{Latn}=77 34{Latn}=77 35{Latn}=77 36{Latn}=77 37{Latn}=77 38{Latn}=77 39{Latn}=77 3A{Latn}=77 3B{Latn}=77 3C{Latn}=77 3D{Latn}=77 3E{Latn}=77 3F{Latn}=77 40{Latn}=77 41{Latn}=77 42{Latn}=77 43{Latn}=77 44{Latn}=77 45{Latn}=77 46{Latn}=77 47{Latn}=77 48{Latn}=77 49{Latn}=77 4A{Latn}=77 4B{Latn}=77 4C{Latn}=77 4D{Latn}=77 4E{Latn}=77 4F{Latn}=77 50{Latn}=77 51{Latn}=77 52{Latn}=77 53{Latn}=77 54{Latn}=77 55{Latn}=77 56{Latn}=77 57{Latn}=77 58{Latn}=77 59{Latn}=77 5A{Latn}=77 5B{Latn}=77 5C{Latn}=77 5D{Latn}=77 66{Arab}=2 76{Tale Talu Lana Cham Bali Java Kawi Mong Olck Cher Osge}=2 7C{Dsrt Shaw Dupl Osma Elba Aghb Vith Sora Mroo Tnsa Linb Lina Cprt Cpmn Sarb Narb Avst Palm Nbat Hatr Armi Prti Phli Phlp Elym Mani Sogo Sogd Ougr Yezi Chrs Ugar Xpeo Xsux}=1 E5{TRAILING}=1 E6{TRAILING}=1 E7{TRAILING}=1 E8{TRAILING}=1 E9{TRAILING}=1 EA{TRAILING}=1 EB{TRAILING}=1 EC{TRAILING}=1 ED{TRAILING}=1 EE{TRAILING}=1 EF{TRAILING}=1 ]
[categories Zl 03{SPACE}=1 ]
[categories Zp 03{SPACE}=1 ]
[categories Zs 03{SPACE}=1 04{SPACE}=17 05{PUNCTUATION}=6 0C{SYMBOL}=29 60{Grek Copt}=1 ]
diff --git a/Build/source/libs/icu/icu-src/source/data/unidata/NormalizationCorrections.txt b/Build/source/libs/icu/icu-src/source/data/unidata/NormalizationCorrections.txt
index f992c0d53ce..8cfb588e8f2 100644
--- a/Build/source/libs/icu/icu-src/source/data/unidata/NormalizationCorrections.txt
+++ b/Build/source/libs/icu/icu-src/source/data/unidata/NormalizationCorrections.txt
@@ -1,6 +1,6 @@
-# NormalizationCorrections-15.0.0.txt
-# Date: 2022-05-03, 18:53:00 GMT [KW, LI]
-# © 2022 Unicode®, Inc.
+# NormalizationCorrections-15.1.0.txt
+# Date: 2023-01-05
+# © 2023 Unicode®, Inc.
# For terms of use, see https://www.unicode.org/terms_of_use.html
#
# Unicode Character Database
diff --git a/Build/source/libs/icu/icu-src/source/data/unidata/NormalizationTest.txt b/Build/source/libs/icu/icu-src/source/data/unidata/NormalizationTest.txt
index b7d2fd1f84a..fb6832ef733 100644
--- a/Build/source/libs/icu/icu-src/source/data/unidata/NormalizationTest.txt
+++ b/Build/source/libs/icu/icu-src/source/data/unidata/NormalizationTest.txt
@@ -1,6 +1,6 @@
-# NormalizationTest-15.0.0.txt
-# Date: 2022-04-02, 01:29:09 GMT
-# © 2022 Unicode®, Inc.
+# NormalizationTest-15.1.0.txt
+# Date: 2023-01-05, 20:34:44 GMT
+# © 2023 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# For terms of use, see https://www.unicode.org/terms_of_use.html
#
diff --git a/Build/source/libs/icu/icu-src/source/data/unidata/SpecialCasing.txt b/Build/source/libs/icu/icu-src/source/data/unidata/SpecialCasing.txt
index 08d04fa9421..de08450a6b9 100644
--- a/Build/source/libs/icu/icu-src/source/data/unidata/SpecialCasing.txt
+++ b/Build/source/libs/icu/icu-src/source/data/unidata/SpecialCasing.txt
@@ -1,6 +1,6 @@
-# SpecialCasing-15.0.0.txt
-# Date: 2022-02-02, 23:35:52 GMT
-# © 2022 Unicode®, Inc.
+# SpecialCasing-15.1.0.txt
+# Date: 2023-01-05, 20:35:03 GMT
+# © 2023 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# For terms of use, see https://www.unicode.org/terms_of_use.html
#
diff --git a/Build/source/libs/icu/icu-src/source/data/unidata/UCARules.txt b/Build/source/libs/icu/icu-src/source/data/unidata/UCARules.txt
index 8ad19f95996..95f71a45362 100644
--- a/Build/source/libs/icu/icu-src/source/data/unidata/UCARules.txt
+++ b/Build/source/libs/icu/icu-src/source/data/unidata/UCARules.txt
@@ -1,10 +1,10 @@
# UCA_Rules_SHORT.txt
-# Date: 2022-08-24, 17:17:42 GMT
-# © 2022 Unicode®, Inc.
+# Date: 2023-08-11, 17:59:32 GMT
+# © 2023 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# For terms of use, see https://www.unicode.org/terms_of_use.html
-# UCA Version: 15.0.0
-# UCD Version: 15.0.0
+# UCA Version: 15.1.0
+# UCD Version: 15.1.0
# For a description of the format and usage, see
# http://www.unicode.org/reports/tr35/tr35-collation.html#Root_Data_Files
@@ -1601,7 +1601,6 @@
<< ⃧
<< ⃨
<< ⃩
- << ð‡½
# TODO: There are several problems with this file.
# See https://unicode-org.atlassian.net/browse/CLDR-6745
&'\u202F' # TODO: reset to the last space, not [last regular]
@@ -1974,22 +1973,24 @@
< ð’¿²
< ''
<<< '
- < ‘
- < ’
- < ‚
- < ‛
+ << ‘
+ << ’
+ << ‚
+ << ‛
+ << ‎׳‎
< ‹
< ›
< '"'
<<< "
- < “
- < â€
- < „
- < ‟
- < ⹂
- < ã€
- < 〞
- < 〟
+ << “
+ << â€
+ << „
+ << ‟
+ << ⹂
+ << ã€
+ << 〞
+ << 〟
+ << ‎״‎
< «
< »
< '('
@@ -2402,8 +2403,6 @@
< ‎׀‎
< ‎׃‎
< ‎׆‎
- < ‎׳‎
- < ‎״‎
< ‎܊‎
< ‎܋‎
< ‎܌‎
@@ -2545,6 +2544,7 @@
< 𑱄
< 𑱅
< ð¬¹
+ < ‎ð©¿â€Ž
< ‎ð«°â€Ž
< ‎ð«±â€Ž
< ‎ð«²â€Ž
@@ -2615,7 +2615,6 @@
< ðª‰
< ðªŠ
< ðª‹
- < ‎ð©¿â€Ž
# TODO: do not try to set this: < [variable top]
&\u30FD # TODO: instead, reset to the last symbol so that maxVariable=symbol works
< '`'
@@ -9146,6 +9145,11 @@
< ⿹
< ⿺
< â¿»
+ < ⿼
+ < ⿽
+ < ⿾
+ < â¿¿
+ < ㇯
< ㇀
< ã‡
< ㇂
@@ -9262,7 +9266,6 @@
< ₤
< â‚¥
< ₦
- < ₧
< â‚©
<<< ₩
< ₪
@@ -12307,6 +12310,7 @@
<<< â“Ÿ
<<< P
<<< ï¼°
+ <<< ₧ / ts
<<< â„™
= ð
= ð‘ƒ
diff --git a/Build/source/libs/icu/icu-src/source/data/unidata/UnicodeData.txt b/Build/source/libs/icu/icu-src/source/data/unidata/UnicodeData.txt
index ea963a7162c..bdcc41850d7 100644
--- a/Build/source/libs/icu/icu-src/source/data/unidata/UnicodeData.txt
+++ b/Build/source/libs/icu/icu-src/source/data/unidata/UnicodeData.txt
@@ -11231,6 +11231,10 @@
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;;;;;
+2FFC;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM RIGHT;So;0;ON;;;;;N;;;;;
+2FFD;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER RIGHT;So;0;ON;;;;;N;;;;;
+2FFE;IDEOGRAPHIC DESCRIPTION CHARACTER HORIZONTAL REFLECTION;So;0;ON;;;;;N;;;;;
+2FFF;IDEOGRAPHIC DESCRIPTION CHARACTER ROTATION;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;;;;
@@ -11705,6 +11709,7 @@
31E1;CJK STROKE HZZZG;So;0;ON;;;;;N;;;;;
31E2;CJK STROKE PG;So;0;ON;;;;;N;;;;;
31E3;CJK STROKE Q;So;0;ON;;;;;N;;;;;
+31EF;IDEOGRAPHIC DESCRIPTION CHARACTER SUBTRACTION;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;;;;;
@@ -34035,6 +34040,8 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
2CEA1;<CJK Ideograph Extension E, Last>;Lo;0;L;;;;;N;;;;;
2CEB0;<CJK Ideograph Extension F, First>;Lo;0;L;;;;;N;;;;;
2EBE0;<CJK Ideograph Extension F, Last>;Lo;0;L;;;;;N;;;;;
+2EBF0;<CJK Ideograph Extension I, First>;Lo;0;L;;;;;N;;;;;
+2EE5D;<CJK Ideograph Extension I, 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;;;;;
diff --git a/Build/source/libs/icu/icu-src/source/data/unidata/changes.txt b/Build/source/libs/icu/icu-src/source/data/unidata/changes.txt
index af8c56ef6c0..085643774f8 100644
--- a/Build/source/libs/icu/icu-src/source/data/unidata/changes.txt
+++ b/Build/source/libs/icu/icu-src/source/data/unidata/changes.txt
@@ -28,6 +28,15 @@ from near the top of the current section before pasting tool command lines.
Adjust the environment variables to the current version and your machine setup.
(The command lines are currently as used on Linux.)
+Syntax of this file:
+
+`***` - section heading
+`*` - sub heading
+`-` - 1st level bullet
+`+` - 2nd level bullet
+`=` - 1st level bullet
+`->` - "the previous things leads to...", OR a 2nd level bullet/item
+
---------------------------------------------------------------------------- ***
* New ISO 15924 script codes
@@ -38,6 +47,573 @@ and see the change logs below.
---------------------------------------------------------------------------- ***
+Unicode 15.1 update for ICU 74
+
+https://www.unicode.org/versions/Unicode15.1.0/
+https://www.unicode.org/versions/beta-15.1.0.html
+https://www.unicode.org/Public/draft/
+https://www.unicode.org/reports/uax-proposed-updates.html
+https://www.unicode.org/reports/tr44/tr44-31.html
+
+https://unicode-org.atlassian.net/browse/ICU-22404 Unicode 15.1
+https://unicode-org.atlassian.net/browse/CLDR-16669 BRS Unicode 15.1
+
+https://github.com/unicode-org/unicodetools/issues/492 adjust cldr/*BreakTest generation for Unicode 15.1
+
+* Command-line environment setup
+
+Markus:
+
+export UNIDATA_ROOT=~/unidata
+export UNICODE_DATA=$UNIDATA_ROOT/uni15.1/final
+export CLDR_SRC=~/cldr/uni/src
+export ICU_ROOT=~/icu/uni
+export ICU_SRC=$ICU_ROOT/src
+export ICU_OUT=$ICU_ROOT/dbg
+export ICUDT=icudt74b
+export ICU4C_DATA_IN=$ICU_SRC/icu4c/source/data/in
+export ICU4C_UNIDATA=$ICU_SRC/icu4c/source/data/unidata
+export LD_LIBRARY_PATH=$ICU_OUT/icu4c/lib
+export UNICODE_TOOLS=~/unitools/mine/src
+
+Elango:
+
+export UNIDATA_ROOT=~/oss/unidata
+export UNICODE_DATA=$UNIDATA_ROOT/uni15.1/snapshot
+export CLDR_SRC=~/oss/cldr/mine/src
+export ICU_ROOT=~/oss/icu
+export ICU_SRC=$ICU_ROOT
+export ICU_OUT=$ICU_ROOT
+export ICUDT=icudt74b
+export ICU4C_DATA_IN=$ICU_SRC/icu4c/source/data/in
+export ICU4C_UNIDATA=$ICU_SRC/icu4c/source/data/unidata
+export LD_LIBRARY_PATH=$ICU_OUT/icu4c/lib
+export UNICODE_TOOLS=~/oss/unicodetools/mine/src
+
+*** Unicode version numbers
+- makedata.mak
+- uchar.h
+- com.ibm.icu.util.VersionInfo
+- com.ibm.icu.dev.test.lang.UCharacterTest.VERSION_
+
+*** Configure: Build Unicode data for ICU4J
+- Run ICU4C "configure" _after_ updating the Unicode version number in uchar.h
+ so that the makefiles see the new version number.
+ cd $ICU_OUT/icu4c
+ ICU_DATA_BUILDTOOL_OPTS=--include_uni_core_data ../../../doconfig-clang-dbg.sh
+
+*** data files & enums & parser code
+
+* download files
+- same as for the early Unicode Tools setup and data refresh:
+ https://github.com/unicode-org/unicodetools/blob/main/docs/index.md
+ https://github.com/unicode-org/unicodetools/blob/main/docs/inputdata.md
+- mkdir -p $UNICODE_DATA
+- download Unicode files into $UNICODE_DATA
+ + new since Unicode 15.1:
+ for the pre-release (alpha, beta) data files,
+ download all of https://www.unicode.org/Public/draft/
+ (you can omit or discard the UCD/charts/ and UCD/ucdxml/ files/folders)
+ + if one of us produces the alpha.zip or beta.zip collection of data files for publication,
+ then we can use its contents directly (no FTP from unicode.org necessary)
+ + for final-release data files, the source of truth are the files in
+ https://www.unicode.org/Public/(version) [=UCD],
+ https://www.unicode.org/Public/UCA/(version),
+ https://www.unicode.org/Public/idna/(version),
+ etc.
+ + use an FTP client; anonymous FTP from www.unicode.org at /Public/draft etc.
+ + subfolders: emoji, idna, security, ucd, uca
+ + whichever way you download the files:
+ ~ inside ucd: extract Unihan.zip to "here" (.../UCD/ucd/Unihan/*.txt), delete Unihan.zip
+ ~ split Unihan into single-property files
+ ~/unitools/mine/src$ py/splitunihan.py $UNICODE_DATA/UCD/ucd/Unihan
+ ~ TODO: for updating ICU, we should not need Unihan.zip contents, correct?
+ + alternate way of fetching files, if available:
+ copy the files from a Unicode Tools workspace that is up to date with
+ https://github.com/unicode-org/unicodetools
+ and which might at this point be *ahead* of "Public"
+ ~ before the Unicode release copy files from "dev" subfolders, for example
+ https://github.com/unicode-org/unicodetools/tree/main/unicodetools/data/ucd/dev
+- get the CLDR version of GraphemeBreakTest.txt from CLDR (if it has been updated there already)
+ or from the UCD/cldr/ output folder of the Unicode Tools:
+ From Unicode 12/CLDR 35/ICU 64 to Unicode 15.0/CLDR 43/ICU 73,
+ CLDR used modified grapheme break rules.
+ This might happen again.
+ cp $CLDR_SRC/common/properties/segments/GraphemeBreakTest.txt icu4c/source/test/testdata
+ or
+ cp ~/unitools/mine/Generated/UCD/15.1.0/cldr/GraphemeBreakTest-cldr.txt icu4c/source/test/testdata/GraphemeBreakTest.txt
+ cp ~/unitools/mine/Generated/UCD/15.1.0/cldr/GraphemeBreakTest-cldr.txt $CLDR_SRC/common/properties/segments/GraphemeBreakTest.txt
+ cp ~/unitools/mine/Generated/UCD/15.1.0/cldr/GraphemeBreakTest-cldr.html $CLDR_SRC/common/properties/segments/GraphemeBreakTest.html
+ + TODO: figure out whether we need a CLDR version of LineBreakTest.txt:
+ unicodetools issue #492
+- cp -v $UNICODE_DATA/security/confusables.txt $ICU4C_UNIDATA
+ + TODO: modify preparseucd.py to copy this file
+
+* Note: Since Unicode 15.1, data files are no longer published with version suffixes
+ even during the alpha or beta.
+ Thus we no longer need steps & tools to remove those suffixes.
+ (remove this note next time)
+
+* process and/or copy files
+- cd $ICU_SRC/tools/unicode
+ py/preparseucd.py $UNICODE_DATA $ICU_SRC
+ + This writes files (especially ppucd.txt) to the ICU4C unidata and testdata subfolders.
+ + For debugging, and tweaking how ppucd.txt is written,
+ the tool has an --only_ppucd option:
+ py/preparseucd.py $UNICODE_DATA --only_ppucd path/to/ppucd/outputfile
+
+* new constants for new property values
+- preparseucd.py error:
+ ValueError: missing uchar.h enum constants for some property values: [('blk', {'CJK_Ext_I'}), ('lb', {'VF', 'VI', 'AS', 'AK', 'AP'})]
+ = PropertyValueAliases.txt new property values (diff old & new .txt files)
+ cd $UNIDATA_ROOT
+ $ diff -u uni15.0/ucd/PropertyValueAliases.txt uni15.1/snapshot/UCD/ucd/PropertyValueAliases.txt | egrep '^[-+][a-zA-Z]'
+ +age; 15.1 ; V15_1
+ +blk; CJK_Ext_I ; CJK_Unified_Ideographs_Extension_I
+ +IDSU; N ; No ; F ; False
+ +IDSU; Y ; Yes ; T ; True
+ +ID_Compat_Math_Continue; N ; No ; F ; False
+ +ID_Compat_Math_Continue; Y ; Yes ; T ; True
+ +ID_Compat_Math_Start; N ; No ; F ; False
+ +ID_Compat_Math_Start; Y ; Yes ; T ; True
+ +lb ; AK ; Aksara
+ +lb ; AP ; Aksara_Prebase
+ +lb ; AS ; Aksara_Start
+ +lb ; VF ; Virama_Final
+ +lb ; VI ; Virama
+ -> add new blocks to uchar.h before UBLOCK_COUNT
+ use long property names for enum constants,
+ for the trailing comment get the block start code point: diff old & new Blocks.txt
+ cd $UNIDATA_ROOT
+ $ diff -u uni15.0/ucd/Blocks.txt uni15.1/snapshot/UCD/ucd/Blocks.txt | egrep '^[-+][0-9A-Z]'
+ +2EBF0..2EE4F; CJK Unified Ideographs Extension I
+ (ignore blocks whose end code point changed)
+ -> add new blocks to UCharacter.UnicodeBlock IDs
+ Eclipse find UBLOCK_([^ ]+) = ([0-9]+), (/.+)
+ replace public static final int \1_ID = \2; \3
+ -> add new blocks to UCharacter.UnicodeBlock objects
+ Eclipse find UBLOCK_([^ ]+) = [0-9]+, (/.+)
+ replace public static final UnicodeBlock \1 = new UnicodeBlock("\1", \1_ID); \2
+ -> add new line break values to uchar.h & UCharacter.LineBreak
+
+* update Script metadata: SCRIPT_PROPS[] in uscript_props.cpp & UScript.ScriptMetadata
+ (not strictly necessary for NOT_ENCODED scripts)
+ $ICU_SRC/tools/unicode$ py/parsescriptmetadata.py $ICU_SRC/icu4c/source/common/unicode/uscript.h $CLDR_SRC/common/properties/scriptMetadata.txt
+
+* build ICU
+ to make sure that there are no syntax errors
+
+ $ICU_OUT/icu4c$ echo;echo; date; make -j7 tests &> out.txt ; tail -n 30 out.txt ; date
+
+* update spoof checker UnicodeSet initializers:
+ inclusionPat & recommendedPat in i18n/uspoof.cpp
+ INCLUSION & RECOMMENDED in SpoofChecker.java
+- make sure that the Unicode Tools tree contains the latest security data files
+- go to Unicode Tools org.unicode.text.tools.RecommendedSetGenerator
+- run the tool (no special environment variables needed)
+ cd $UNICODE_TOOLS
+ mvn -s ~/.m2/settings.xml compile exec:java -Dexec.mainClass="org.unicode.text.tools.RecommendedSetGenerator" \
+ -Dexec.args="" -am -pl unicodetools -DCLDR_DIR=$(cd ../../../cldr/mine/src ; pwd) -DUNICODETOOLS_REPO_DIR=$(pwd)
+- copy & paste from the Console output into the .cpp & .java files
+
+* check hardcoded IDS_Unary_Operator
+- new in Unicode 15.1, hardcoded because trivial, and unlikely to change
+- check that it has not changed:
+ (cd $UNICODE_DATA && grep -r --include=PropList.txt IDS_Unary_Operator)
+ ->
+ ucd/PropList.txt:2FFE..2FFF ; IDS_Unary_Operator # So [2] IDEOGRAPHIC DESCRIPTION CHAR...
+- if it has changed, then update the implementation and the tests
+
+* check hardcoded ID_Compat_Math_Start & ID_Compat_Math_Continue
+- new in Unicode 15.1, hardcoded because trivial, and unlikely to change
+- check that they have not changed:
+ (cd $UNICODE_DATA && grep -r --include=PropList.txt ID_Compat_Math)
+ ->
+ ucd/PropList.txt:00B2..00B3 ; ID_Compat_Math_Continue # No [2] SUPERSCRIPT TWO..SUPERSCRIPT THREE
+ ucd/PropList.txt:00B9 ; ID_Compat_Math_Continue # No SUPERSCRIPT ONE
+ ucd/PropList.txt:2070 ; ID_Compat_Math_Continue # No SUPERSCRIPT ZERO
+ ucd/PropList.txt:2074..2079 ; ID_Compat_Math_Continue # No [6] SUPERSCRIPT FOUR..SUPERSCRIPT NINE
+ ucd/PropList.txt:207A..207C ; ID_Compat_Math_Continue # Sm [3] SUPERSCRIPT PLUS SIGN..SUPERSCRIPT EQUALS SIGN
+ ucd/PropList.txt:207D ; ID_Compat_Math_Continue # Ps SUPERSCRIPT LEFT PARENTHESIS
+ ucd/PropList.txt:207E ; ID_Compat_Math_Continue # Pe SUPERSCRIPT RIGHT PARENTHESIS
+ ucd/PropList.txt:2080..2089 ; ID_Compat_Math_Continue # No [10] SUBSCRIPT ZERO..SUBSCRIPT NINE
+ ucd/PropList.txt:208A..208C ; ID_Compat_Math_Continue # Sm [3] SUBSCRIPT PLUS SIGN..SUBSCRIPT EQUALS SIGN
+ ucd/PropList.txt:208D ; ID_Compat_Math_Continue # Ps SUBSCRIPT LEFT PARENTHESIS
+ ucd/PropList.txt:208E ; ID_Compat_Math_Continue # Pe SUBSCRIPT RIGHT PARENTHESIS
+ ucd/PropList.txt:2202 ; ID_Compat_Math_Continue # Sm PARTIAL DIFFERENTIAL
+ ucd/PropList.txt:2207 ; ID_Compat_Math_Continue # Sm NABLA
+ ucd/PropList.txt:221E ; ID_Compat_Math_Continue # Sm INFINITY
+ ucd/PropList.txt:1D6C1 ; ID_Compat_Math_Continue # Sm MATHEMATICAL BOLD NABLA
+ ucd/PropList.txt:1D6DB ; ID_Compat_Math_Continue # Sm MATHEMATICAL BOLD PARTIAL DIFFERENTIAL
+ ucd/PropList.txt:1D6FB ; ID_Compat_Math_Continue # Sm MATHEMATICAL ITALIC NABLA
+ ucd/PropList.txt:1D715 ; ID_Compat_Math_Continue # Sm MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL
+ ucd/PropList.txt:1D735 ; ID_Compat_Math_Continue # Sm MATHEMATICAL BOLD ITALIC NABLA
+ ucd/PropList.txt:1D74F ; ID_Compat_Math_Continue # Sm MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL
+ ucd/PropList.txt:1D76F ; ID_Compat_Math_Continue # Sm MATHEMATICAL SANS-SERIF BOLD NABLA
+ ucd/PropList.txt:1D789 ; ID_Compat_Math_Continue # Sm MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL
+ ucd/PropList.txt:1D7A9 ; ID_Compat_Math_Continue # Sm MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA
+ ucd/PropList.txt:1D7C3 ; ID_Compat_Math_Continue # Sm MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL
+ ucd/PropList.txt:2202 ; ID_Compat_Math_Start # Sm PARTIAL DIFFERENTIAL
+ ucd/PropList.txt:2207 ; ID_Compat_Math_Start # Sm NABLA
+ ucd/PropList.txt:221E ; ID_Compat_Math_Start # Sm INFINITY
+ ucd/PropList.txt:1D6C1 ; ID_Compat_Math_Start # Sm MATHEMATICAL BOLD NABLA
+ ucd/PropList.txt:1D6DB ; ID_Compat_Math_Start # Sm MATHEMATICAL BOLD PARTIAL DIFFERENTIAL
+ ucd/PropList.txt:1D6FB ; ID_Compat_Math_Start # Sm MATHEMATICAL ITALIC NABLA
+ ucd/PropList.txt:1D715 ; ID_Compat_Math_Start # Sm MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL
+ ucd/PropList.txt:1D735 ; ID_Compat_Math_Start # Sm MATHEMATICAL BOLD ITALIC NABLA
+ ucd/PropList.txt:1D74F ; ID_Compat_Math_Start # Sm MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL
+ ucd/PropList.txt:1D76F ; ID_Compat_Math_Start # Sm MATHEMATICAL SANS-SERIF BOLD NABLA
+ ucd/PropList.txt:1D789 ; ID_Compat_Math_Start # Sm MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL
+ ucd/PropList.txt:1D7A9 ; ID_Compat_Math_Start # Sm MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA
+ ucd/PropList.txt:1D7C3 ; ID_Compat_Math_Start # Sm MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL
+- if they have changed, then update the implementation and the tests
+- TODO: There is a ticket for using ppucd.txt in test code.
+ Do that and check these hardcoded properties against that.
+
+* Bazel build process
+
+See https://unicode-org.github.io/icu/processes/unicode-update#bazel-build-process
+for an overview and for setup instructions.
+
+Consider running `bazelisk --version` outside of the $ICU_SRC folder
+to find out the latest `bazel` version, and
+copying that version number into the $ICU_SRC/.bazeliskrc config file.
+(Revert if you find incompatibilities, or, better, update our build & config files.)
+
+* generate data files
+
+- remember to define the environment variables
+ (see the start of the section for this Unicode version)
+- cd $ICU_SRC
+- optional but not necessary:
+ bazelisk clean
+ or even
+ bazelisk clean --expunge
+- build/bootstrap/generate new files:
+ icu4c/source/data/unidata/generate.sh
+
+* Since Unicode 15.1, the UTS #46 data derivation no longer looks at the decompositions (NFD).
+ These characters are now just valid, no longer disallowed_STD3_valid.
+ Remove special handling of U+2260, U+226E, U+226F (isNonASCIIDisallowedSTD3Valid())
+ from uts46.cpp & UTS46.java,
+ and special test code from uts46test.cpp & UTS46Test.java.
+ (remove this section next time)
+
+* run & fix ICU4C tests
+- Note: Some of the collation data and test data will be updated below,
+ so at this time we might get some collation test failures.
+ Ignore these for now.
+- fix Unicode Tools class Segmenter to generate correct *BreakTest.txt files
+- update CLDR GraphemeBreakTest.txt
+ cd ~/unitools/mine/Generated
+ cp UCD/15.1.0/cldr/GraphemeBreakTest-cldr.txt $CLDR_SRC/common/properties/segments/GraphemeBreakTest.txt
+ cp UCD/15.1.0/cldr/GraphemeBreakTest-cldr.html $CLDR_SRC/common/properties/segments/GraphemeBreakTest.html
+ cp $CLDR_SRC/common/properties/segments/GraphemeBreakTest.txt $ICU_SRC/icu4c/source/test/testdata
+- Robin or Andy helps with RBBI & spoof check test failures
+
+* collation: CLDR collation root, UCA DUCET
+
+- UCA DUCET goes into Mark's Unicode tools,
+ and a tool-tailored version goes into CLDR, see
+ https://github.com/unicode-org/unicodetools/blob/main/docs/uca/index.md
+
+- update source/data/unidata/FractionalUCA.txt with FractionalUCA_SHORT.txt
+ cp -v $CLDR_SRC/common/uca/FractionalUCA_SHORT.txt $ICU4C_UNIDATA/FractionalUCA.txt
+- update source/data/unidata/UCARules.txt with UCA_Rules_SHORT.txt
+ cp -v $ICU4C_UNIDATA/UCARules.txt /tmp/UCARules-old.txt
+ (note removing the underscore before "Rules")
+ cp -v $CLDR_SRC/common/uca/UCA_Rules_SHORT.txt $ICU4C_UNIDATA/UCARules.txt
+- restore TODO diffs in UCARules.txt
+ meld /tmp/UCARules-old.txt $ICU4C_UNIDATA/UCARules.txt
+- update (ICU4C)/source/test/testdata/CollationTest_*.txt
+ and (ICU4J)/main/tests/collate/src/com/ibm/icu/dev/data/CollationTest_*.txt
+ from the CLDR root files (..._CLDR_..._SHORT.txt)
+ cp -v $CLDR_SRC/common/uca/CollationTest_CLDR_NON_IGNORABLE_SHORT.txt $ICU_SRC/icu4c/source/test/testdata/CollationTest_NON_IGNORABLE_SHORT.txt
+ cp -v $CLDR_SRC/common/uca/CollationTest_CLDR_SHIFTED_SHORT.txt $ICU_SRC/icu4c/source/test/testdata/CollationTest_SHIFTED_SHORT.txt
+ cp -v $ICU_SRC/icu4c/source/test/testdata/CollationTest_*.txt $ICU_SRC/icu4j/main/tests/collate/src/com/ibm/icu/dev/data
+- if CLDR common/uca/unihan-index.txt changes, then update
+ CLDR common/collation/root.xml <collation type="private-unihan">
+ and regenerate (or update in parallel) $ICU_SRC/icu4c/source/data/coll/root.txt
+
+- generate data files, as above (generate.sh), now to pick up new collation data
+- update CollationFCD.java:
+ copy & paste the initializers of lcccIndex[] etc. from
+ ICU4C/source/i18n/collationfcd.cpp to
+ ICU4J/main/classes/collate/src/com/ibm/icu/impl/coll/CollationFCD.java
+- rebuild ICU4C (make clean, make check, as usual)
+
+* Unihan collators
+ https://github.com/unicode-org/unicodetools/blob/main/docs/unihan.md
+- run Unicode Tools GenerateUnihanCollators & GenerateUnihanCollatorFiles,
+ check CLDR diffs, copy to CLDR, test CLDR, ... as documented there
+- generate ICU zh collation data
+ instructions inspired by
+ https://github.com/unicode-org/icu/blob/main/tools/cldr/cldr-to-icu/README.txt and
+ https://github.com/unicode-org/icu/blob/main/icu4c/source/data/cldr-icu-readme.txt
+ + setup:
+ export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
+ (didn't work without setting JAVA_HOME,
+ nor with the Google default of /usr/local/buildtools/java/jdk
+ [Google security limitations in the XML parser])
+ export TOOLS_ROOT=$ICU_SRC/tools
+ export CLDR_DIR=$CLDR_SRC
+ export CLDR_DATA_DIR=$CLDR_DIR
+ (pointing to the "raw" data, not cldr-staging/.../production should be ok for the relevant files)
+ cd "$TOOLS_ROOT/cldr/lib"
+ ./install-cldr-jars.sh "$CLDR_DIR"
+ + generate the files we need
+ cd "$TOOLS_ROOT/cldr/cldr-to-icu"
+ ant -f build-icu-data.xml -DoutDir=/tmp/icu -DoutputTypes=coll,transforms -DlocaleIdFilter='zh.*'
+ + diff
+ cd $ICU_SRC
+ meld icu4c/source/data/coll/zh.txt /tmp/icu/coll/zh.txt
+ meld icu4c/source/data/translit/Hani_Latn.txt /tmp/icu/translit/Hani_Latn.txt
+ + copy into the source tree
+ cd $ICU_SRC
+ cp /tmp/icu/coll/zh.txt icu4c/source/data/coll/zh.txt
+ cp /tmp/icu/translit/Hani_Latn.txt icu4c/source/data/translit/Hani_Latn.txt
+- rebuild ICU4C
+
+* run & fix ICU4C tests, now with new CLDR collation root data
+- run all tests with the collation test data *_SHORT.txt or the full files
+ (the full ones have comments, useful for debugging)
+- note on intltest: if collate/UCAConformanceTest fails, then
+ utility/MultithreadTest/TestCollators will fail as well;
+ fix the conformance test before looking into the multi-thread test
+
+* update Java data files
+- refresh just the UCD/UCA-related/derived files, just to be safe
+- see (ICU4C)/source/data/icu4j-readme.txt
+- mkdir -p /tmp/icu4j/com/ibm/icu/impl/data/$ICUDT
+- $ICU_OUT/icu4c$ make ICU4J_ROOT=/tmp/icu4j icu4j-data-install
+ NOTE: If you get the error "No rule to make target 'out/build/icudt70l/uprops.icu'",
+ you need to reconfigure with unicore data; see the "configure" line above.
+ output:
+ ...
+ make[1]: Entering directory '/usr/local/google/home/mscherer/icu/uni/dbg/icu4c/data'
+ mkdir -p ./out/icu4j/com/ibm/icu/impl/data/icudt74b
+ mkdir -p ./out/icu4j/tzdata/com/ibm/icu/impl/data/icudt74b
+ LD_LIBRARY_PATH=../lib:../stubdata:../tools/ctestfw:$LD_LIBRARY_PATH ../bin/icupkg ./out/tmp/icudt74l.dat ./out/icu4j/icudt74b.dat -s ./out/build/icudt74l -x '*' -tb -d ./out/icu4j/com/ibm/icu/impl/data/icudt74b
+ mv ./out/icu4j/"com/ibm/icu/impl/data/icudt74b/zoneinfo64.res" ./out/icu4j/"com/ibm/icu/impl/data/icudt74b/metaZones.res" ./out/icu4j/"com/ibm/icu/impl/data/icudt74b/timezoneTypes.res" ./out/icu4j/"com/ibm/icu/impl/data/icudt74b/windowsZones.res" "./out/icu4j/tzdata/com/ibm/icu/impl/data/icudt74b"
+ jar cf ./out/icu4j/icudata.jar -C ./out/icu4j com/ibm/icu/impl/data/icudt74b/
+ mkdir -p /tmp/icu4j/main/shared/data
+ cp ./out/icu4j/icudata.jar /tmp/icu4j/main/shared/data
+ jar cf ./out/icu4j/icutzdata.jar -C ./out/icu4j/tzdata com/ibm/icu/impl/data/icudt74b/
+ mkdir -p /tmp/icu4j/main/shared/data
+ cp ./out/icu4j/icutzdata.jar /tmp/icu4j/main/shared/data
+ make[1]: Leaving directory '/usr/local/google/home/mscherer/icu/uni/dbg/icu4c/data'
+- copy the binary data files into the ICU4J tree
+ cd $ICU_OUT/icu4c/data/out/icu4j
+ cp -v com/ibm/icu/impl/data/$ICUDT/coll/* $ICU_SRC/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/$ICUDT/coll
+ cp -v com/ibm/icu/impl/data/$ICUDT/brkitr/* $ICU_SRC/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/$ICUDT/brkitr
+ cp -v com/ibm/icu/impl/data/$ICUDT/confusables.cfu $ICU_SRC/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/$ICUDT
+ cp -v com/ibm/icu/impl/data/$ICUDT/*.nrm $ICU_SRC/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/$ICUDT
+ cd com/ibm/icu/impl/data/$ICUDT/
+ ls *.icu | egrep -v "cnvalias.icu" | awk '{print "cp " $0 " $ICU_SRC/icu4j/main/core/src/main/resources/com/ibm/icu/impl/data/$ICUDT";}' | sh
+- The procedure above is very conservative:
+ It refreshes only the parts of the ICU4J data that we think are affected by a Unicode data update.
+ It avoids dealing with any other discrepancies
+ between the source and generated data files.
+ *If* instead we wanted to refresh *all* of the ICU4J data from ICU4C:
+ $ICU_OUT/icu4c$ make ICU4J_ROOT=$ICU_SRC/icu4j icu4j-data-install
+
+* refresh Java test .txt files
+- copy new .txt files into ICU4J's main/core/src/test/resources/com/ibm/icu/dev/data/unicode
+ cd $ICU_SRC/icu4c/source/data/unidata
+ cp -v confusables.txt confusablesWholeScript.txt NormalizationCorrections.txt NormalizationTest.txt SpecialCasing.txt UnicodeData.txt $ICU_SRC/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/unicode
+ cd ../../test/testdata
+ cp -v BidiCharacterTest.txt BidiTest.txt IdnaTestV2.txt $ICU_SRC/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/unicode
+ cp -v $UNICODE_DATA/UCD/ucd/CompositionExclusions.txt $ICU_SRC/icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/unicode
+
+* run & fix ICU4J tests
+
+*** API additions
+- send notice to icu-design about new born-@stable API (enum constants etc.)
+
+*** CLDR numbering systems
+- look for new sets of decimal digits (gc=ND & nv=4) and add to CLDR
+ for example:
+ ~/icu/mine/src$ egrep ';gc=Nd.+;nv=4' icu4c/source/data/unidata/ppucd.txt > /tmp/icu/nv4-15.txt
+ ~/icu/uni/src$ egrep ';gc=Nd.+;nv=4' icu4c/source/data/unidata/ppucd.txt > /tmp/icu/nv4-15.1.txt
+ ~/icu/uni/src$ diff -u /tmp/icu/nv4-15.txt /tmp/icu/nv4-15.1.txt
+ -->
+ (empty this time)
+ or:
+ ~/unitools/mine/src$ diff -u unicodetools/data/ucd/15.0.0/extracted/DerivedGeneralCategory.txt unicodetools/data/ucd/dev/extracted/DerivedGeneralCategory.txt | grep '; Nd' | egrep '^\+'
+ -->
+ (empty this time)
+ Unicode 15.1:
+ (none this time)
+
+*** merge the Unicode update branch back onto the main branch
+- do not merge the icudata.jar and testdata.jar,
+ instead rebuild them from merged & tested ICU4C
+- if there is a merge conflict in icudata.jar, here is one way to deal with it:
+ + remove icudata.jar from the commit so that rebasing is trivial
+ + ~/icu/uni/src$ git restore --source=main icu4j/main/shared/data/icudata.jar
+ + ~/icu/uni/src$ git commit -a --amend
+ + switch to main, pull updates, switch back to the dev branch
+ + ~/icu/uni/src$ git rebase main
+ + rebuild icudata.jar
+ + ~/icu/uni/src$ git commit -a --amend
+ + ~/icu/uni/src$ git push -f
+- make sure that changes to Unicode tools are checked in:
+ https://github.com/unicode-org/unicodetools
+
+---------------------------------------------------------------------------- ***
+
+CLDR 43 root collation update for ICU 73
+
+Partial update only for the root collation.
+See
+- https://unicode-org.atlassian.net/browse/CLDR-15946
+ Treat quote marks as equivalent when strength=UCOL_PRIMARY
+- https://github.com/unicode-org/cldr/pull/2691
+ CLDR-15946 make fancy quotes primary-equal to ASCII fallbacks
+- https://github.com/unicode-org/cldr/pull/2833
+ CLDR-15946 make fancy quotes secondary-different from each other
+
+The related changes to tailorings were already integrated in an earlier PR for
+https://unicode-org.atlassian.net/browse/ICU-22220 ICU 73rc BRS.
+
+This update is for the root collation,
+which is handled by different tools than the locale data updates.
+
+* Command-line environment setup
+
+export UNICODE_DATA=~/unidata/uni15/20220830
+export CLDR_SRC=~/cldr/uni/src
+export ICU_ROOT=~/icu/uni
+export ICU_SRC=$ICU_ROOT/src
+export ICUDT=icudt73b
+export ICU4C_DATA_IN=$ICU_SRC/icu4c/source/data/in
+export ICU4C_UNIDATA=$ICU_SRC/icu4c/source/data/unidata
+export LD_LIBRARY_PATH=$ICU_ROOT/dbg/icu4c/lib
+
+*** Configure: Build Unicode data for ICU4J
+ cd $ICU_ROOT/dbg/icu4c
+ ICU_DATA_BUILDTOOL_OPTS=--include_uni_core_data ../../../doconfig-clang-dbg.sh
+
+* Bazel build process
+
+See https://unicode-org.github.io/icu/processes/unicode-update#bazel-build-process
+for an overview and for setup instructions.
+
+Consider running `bazelisk --version` outside of the $ICU_SRC folder
+to find out the latest `bazel` version, and
+copying that version number into the $ICU_SRC/.bazeliskrc config file.
+(Revert if you find incompatibilities, or, better, update our build & config files.)
+
+* generate data files
+
+- remember to define the environment variables
+ (see the start of the section for this Unicode version)
+- cd $ICU_SRC
+- optional but not necessary:
+ bazelisk clean
+ or even
+ bazelisk clean --expunge
+- build/bootstrap/generate new files:
+ icu4c/source/data/unidata/generate.sh
+
+* collation: CLDR collation root, UCA DUCET
+
+- UCA DUCET goes into Mark's Unicode tools,
+ and a tool-tailored version goes into CLDR, see
+ https://github.com/unicode-org/unicodetools/blob/main/docs/uca/index.md
+
+- update source/data/unidata/FractionalUCA.txt with FractionalUCA_SHORT.txt
+ cp -v $CLDR_SRC/common/uca/FractionalUCA_SHORT.txt $ICU4C_UNIDATA/FractionalUCA.txt
+- update source/data/unidata/UCARules.txt with UCA_Rules_SHORT.txt
+ cp -v $ICU4C_UNIDATA/UCARules.txt /tmp/UCARules-old.txt
+ (note removing the underscore before "Rules")
+ cp -v $CLDR_SRC/common/uca/UCA_Rules_SHORT.txt $ICU4C_UNIDATA/UCARules.txt
+- restore TODO diffs in UCARules.txt
+ meld /tmp/UCARules-old.txt $ICU4C_UNIDATA/UCARules.txt
+- update (ICU4C)/source/test/testdata/CollationTest_*.txt
+ and (ICU4J)/main/tests/collate/src/com/ibm/icu/dev/data/CollationTest_*.txt
+ from the CLDR root files (..._CLDR_..._SHORT.txt)
+ cp -v $CLDR_SRC/common/uca/CollationTest_CLDR_NON_IGNORABLE_SHORT.txt $ICU_SRC/icu4c/source/test/testdata/CollationTest_NON_IGNORABLE_SHORT.txt
+ cp -v $CLDR_SRC/common/uca/CollationTest_CLDR_SHIFTED_SHORT.txt $ICU_SRC/icu4c/source/test/testdata/CollationTest_SHIFTED_SHORT.txt
+ cp -v $ICU_SRC/icu4c/source/test/testdata/CollationTest_*.txt $ICU_SRC/icu4j/main/tests/collate/src/com/ibm/icu/dev/data
+- if CLDR common/uca/unihan-index.txt changes, then update
+ CLDR common/collation/root.xml <collation type="private-unihan">
+ and regenerate (or update in parallel) $ICU_SRC/icu4c/source/data/coll/root.txt
+
+- generate data files, as above (generate.sh), now to pick up new collation data
+- rebuild ICU4C (make clean, make check, as usual)
+
+* run & fix ICU4C tests, now with new CLDR collation root data
+- run all tests with the collation test data *_SHORT.txt or the full files
+ (the full ones have comments, useful for debugging)
+- note on intltest: if collate/UCAConformanceTest fails, then
+ utility/MultithreadTest/TestCollators will fail as well;
+ fix the conformance test before looking into the multi-thread test
+
+* update Java data files
+- refresh just the UCD/UCA-related/derived files, just to be safe
+- see (ICU4C)/source/data/icu4j-readme.txt
+- mkdir -p /tmp/icu4j/com/ibm/icu/impl/data/$ICUDT
+- $ICU_ROOT/dbg/icu4c$ make ICU4J_ROOT=/tmp/icu4j icu4j-data-install
+ NOTE: If you get the error "No rule to make target 'out/build/icudt70l/uprops.icu'",
+ you need to reconfigure with unicore data; see the "configure" line above.
+ output:
+ ...
+ make[1]: Entering directory '/usr/local/google/home/mscherer/icu/uni/dbg/icu4c/data'
+ mkdir -p ./out/icu4j/com/ibm/icu/impl/data/icudt73b
+ mkdir -p ./out/icu4j/tzdata/com/ibm/icu/impl/data/icudt73b
+ LD_LIBRARY_PATH=../lib:../stubdata:../tools/ctestfw:$LD_LIBRARY_PATH ../bin/icupkg ./out/tmp/icudt73l.dat ./out/icu4j/icudt73b.dat -s ./out/build/icudt73l -x '*' -tb -d ./out/icu4j/com/ibm/icu/impl/data/icudt73b
+ mv ./out/icu4j/"com/ibm/icu/impl/data/icudt73b/zoneinfo64.res" ./out/icu4j/"com/ibm/icu/impl/data/icudt73b/metaZones.res" ./out/icu4j/"com/ibm/icu/impl/data/icudt73b/timezoneTypes.res" ./out/icu4j/"com/ibm/icu/impl/data/icudt73b/windowsZones.res" "./out/icu4j/tzdata/com/ibm/icu/impl/data/icudt73b"
+ jar cf ./out/icu4j/icudata.jar -C ./out/icu4j com/ibm/icu/impl/data/icudt73b/
+ mkdir -p /tmp/icu4j/main/shared/data
+ cp ./out/icu4j/icudata.jar /tmp/icu4j/main/shared/data
+ jar cf ./out/icu4j/icutzdata.jar -C ./out/icu4j/tzdata com/ibm/icu/impl/data/icudt73b/
+ mkdir -p /tmp/icu4j/main/shared/data
+ cp ./out/icu4j/icutzdata.jar /tmp/icu4j/main/shared/data
+ make[1]: Leaving directory '/usr/local/google/home/mscherer/icu/uni/dbg/icu4c/data'
+- copy the big-endian Unicode data files to another location,
+ separate from the other data files,
+ and then refresh ICU4J
+ cd $ICU_ROOT/dbg/icu4c/data/out/icu4j
+ mkdir -p /tmp/icu4j/com/ibm/icu/impl/data/$ICUDT/coll
+ cp -v com/ibm/icu/impl/data/$ICUDT/coll/* /tmp/icu4j/com/ibm/icu/impl/data/$ICUDT/coll
+ jar uvf $ICU_SRC/icu4j/main/shared/data/icudata.jar -C /tmp/icu4j com/ibm/icu/impl/data/$ICUDT
+- new for ICU 73: also copy the binary data files directly into the ICU4J tree
+ cp -v com/ibm/icu/impl/data/$ICUDT/coll/* $ICU_SRC/icu4j/maven-build/maven-icu4j-datafiles/src/main/resources/com/ibm/icu/impl/data/$ICUDT/coll
+
+* When refreshing all of ICU4J data from ICU4C
+- $ICU_ROOT/dbg/icu4c$ make ICU4J_ROOT=/tmp/icu4j icu4j-data-install
+- cp /tmp/icu4j/main/shared/data/icudata.jar $ICU_SRC/icu4j/main/shared/data
+or
+- $ICU_ROOT/dbg/icu4c$ make ICU4J_ROOT=$ICU_SRC/icu4j icu4j-data-install
+
+* refresh Java test .txt files
+- copy new .txt files into ICU4J's main/tests/core/src/com/ibm/icu/dev/data/unicode
+ cd $ICU_SRC/icu4c/source/data/unidata
+ cp -v confusables.txt confusablesWholeScript.txt NormalizationCorrections.txt NormalizationTest.txt SpecialCasing.txt UnicodeData.txt $ICU_SRC/icu4j/main/tests/core/src/com/ibm/icu/dev/data/unicode
+ cd ../../test/testdata
+ cp -v BidiCharacterTest.txt BidiTest.txt IdnaTestV2.txt $ICU_SRC/icu4j/main/tests/core/src/com/ibm/icu/dev/data/unicode
+ cp -v $UNICODE_DATA/ucd/CompositionExclusions.txt $ICU_SRC/icu4j/main/tests/core/src/com/ibm/icu/dev/data/unicode
+
+* run & fix ICU4J tests
+
+*** merge the Unicode update branch back onto the main branch
+- do not merge the icudata.jar and testdata.jar,
+ instead rebuild them from merged & tested ICU4C
+- if there is a merge conflict in icudata.jar, here is one way to deal with it:
+ + remove icudata.jar from the commit so that rebasing is trivial
+ + ~/icu/uni/src$ git restore --source=main icu4j/main/shared/data/icudata.jar
+ + ~/icu/uni/src$ git commit -a --amend
+ + switch to main, pull updates, switch back to the dev branch
+ + ~/icu/uni/src$ git rebase main
+ + rebuild icudata.jar
+ + ~/icu/uni/src$ git commit -a --amend
+ + ~/icu/uni/src$ git push -f
+- make sure that changes to Unicode tools are checked in:
+ https://github.com/unicode-org/unicodetools
+
+---------------------------------------------------------------------------- ***
+
Unicode 15.0 update for ICU 72
https://www.unicode.org/versions/Unicode15.0.0/
diff --git a/Build/source/libs/icu/icu-src/source/data/unidata/confusables.txt b/Build/source/libs/icu/icu-src/source/data/unidata/confusables.txt
index 327a5f324e3..cf73eca009c 100644
--- a/Build/source/libs/icu/icu-src/source/data/unidata/confusables.txt
+++ b/Build/source/libs/icu/icu-src/source/data/unidata/confusables.txt
@@ -1,11 +1,11 @@
# confusables.txt
-# Date: 2022-08-26, 16:49:08 GMT
-# © 2022 Unicode®, Inc.
+# Date: 2023-08-11, 17:46:40 GMT
+# © 2023 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# For terms of use, see https://www.unicode.org/terms_of_use.html
#
# Unicode Security Mechanisms for UTS #39
-# Version: 15.0.0
+# Version: 15.1.0
#
# For documentation and usage, see https://www.unicode.org/reports/tr39
#
@@ -349,8 +349,8 @@ A4FA ; 002E 002E ; MA # ( ꓺ → .. ) LISU LETTER TONE MYA CYA → FULL STOP, F
A6F4 ; A6F3 A6F3 ; MA #* ( ꛴ → ꛳꛳ ) BAMUM COLON → BAMUM FULL STOP, BAMUM FULL STOP #
-30FB ; 00B7 ; MA #* ( ・ → · ) KATAKANA MIDDLE DOT → MIDDLE DOT # →•→
-FF65 ; 00B7 ; MA #* ( ・ → · ) HALFWIDTH KATAKANA MIDDLE DOT → MIDDLE DOT # →•→
+30FB ; 00B7 ; MA # ( ・ → · ) KATAKANA MIDDLE DOT → MIDDLE DOT # →•→
+FF65 ; 00B7 ; MA # ( ・ → · ) HALFWIDTH KATAKANA MIDDLE DOT → MIDDLE DOT # →•→
16EB ; 00B7 ; MA #* ( ᛫ → · ) RUNIC SINGLE PUNCTUATION → MIDDLE DOT #
0387 ; 00B7 ; MA # ( · → · ) GREEK ANO TELEIA → MIDDLE DOT #
2E31 ; 00B7 ; MA #* ( ⸱ → · ) WORD SEPARATOR MIDDLE DOT → MIDDLE DOT #
diff --git a/Build/source/libs/icu/icu-src/source/data/unidata/emoji-sequences.txt b/Build/source/libs/icu/icu-src/source/data/unidata/emoji-sequences.txt
index ffd40668117..dfeae158edb 100644
--- a/Build/source/libs/icu/icu-src/source/data/unidata/emoji-sequences.txt
+++ b/Build/source/libs/icu/icu-src/source/data/unidata/emoji-sequences.txt
@@ -1,11 +1,11 @@
# emoji-sequences.txt
-# Date: 2022-08-15, 23:13:41 GMT
-# © 2022 Unicode®, Inc.
+# Date: 2023-06-05, 21:39:54 GMT
+# © 2023 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# For terms of use, see https://www.unicode.org/terms_of_use.html
#
# Emoji Sequence Data for UTS #51
-# Version: 15.0
+# Version: 15.1
#
# For documentation and usage, see https://www.unicode.org/reports/tr51
#
@@ -38,7 +38,6 @@
# Basic_Emoji
-
231A..231B ; Basic_Emoji ; watch..hourglass done # E0.6 [2] (⌚..⌛)
23E9..23EC ; Basic_Emoji ; fast-forward button..fast down button # E0.6 [4] (â©..â¬)
23F0 ; Basic_Emoji ; alarm clock # E0.6 [1] (â°)
@@ -534,7 +533,6 @@
# Emoji_Keycap_Sequence
-
0023 FE0F 20E3; Emoji_Keycap_Sequence ; keycap: \x{23} # E0.6 [1] (#ï¸âƒ£)
002A FE0F 20E3; Emoji_Keycap_Sequence ; keycap: * # E2.0 [1] (*ï¸âƒ£)
0030 FE0F 20E3; Emoji_Keycap_Sequence ; keycap: 0 # E0.6 [1] (0ï¸âƒ£)
@@ -553,8 +551,7 @@
# ================================================
# RGI_Emoji_Flag_Sequence: This list does not include deprecated or macroregion flags, except for UN and EU.
-# See Annex B of TR51 for more information.
-
+# See Annex B of UTS #51 for more information.
1F1E6 1F1E8 ; RGI_Emoji_Flag_Sequence ; flag: Ascension Island # E2.0 [1] (🇦🇨)
1F1E6 1F1E9 ; RGI_Emoji_Flag_Sequence ; flag: Andorra # E2.0 [1] (🇦🇩)
@@ -787,7 +784,7 @@
1F1F9 1F1F2 ; RGI_Emoji_Flag_Sequence ; flag: Turkmenistan # E2.0 [1] (🇹🇲)
1F1F9 1F1F3 ; RGI_Emoji_Flag_Sequence ; flag: Tunisia # E2.0 [1] (🇹🇳)
1F1F9 1F1F4 ; RGI_Emoji_Flag_Sequence ; flag: Tonga # E2.0 [1] (🇹🇴)
-1F1F9 1F1F7 ; RGI_Emoji_Flag_Sequence ; flag: Turkey # E2.0 [1] (🇹🇷)
+1F1F9 1F1F7 ; RGI_Emoji_Flag_Sequence ; flag: Türkiye # E2.0 [1] (🇹🇷)
1F1F9 1F1F9 ; RGI_Emoji_Flag_Sequence ; flag: Trinidad & Tobago # E2.0 [1] (🇹🇹)
1F1F9 1F1FB ; RGI_Emoji_Flag_Sequence ; flag: Tuvalu # E2.0 [1] (🇹🇻)
1F1F9 1F1FC ; RGI_Emoji_Flag_Sequence ; flag: Taiwan # E2.0 [1] (🇹🇼)
@@ -819,8 +816,7 @@
# ================================================
-# RGI_Emoji_Tag_Sequence: See Annex C of TR51 for more information.
-
+# RGI_Emoji_Tag_Sequence: See Annex C of UTS #51 for more information.
1F3F4 E0067 E0062 E0065 E006E E0067 E007F; RGI_Emoji_Tag_Sequence; flag: England # E5.0 [1] (ðŸ´ó §ó ¢ó ¥ó ®ó §ó ¿)
1F3F4 E0067 E0062 E0073 E0063 E0074 E007F; RGI_Emoji_Tag_Sequence; flag: Scotland # E5.0 [1] (ðŸ´ó §ó ¢ó ³ó £ó ´ó ¿)
@@ -832,7 +828,6 @@
# RGI_Emoji_Modifier_Sequence
-
261D 1F3FB ; RGI_Emoji_Modifier_Sequence ; index pointing up: light skin tone # E1.0 [1] (â˜ðŸ»)
261D 1F3FC ; RGI_Emoji_Modifier_Sequence ; index pointing up: medium-light skin tone # E1.0 [1] (â˜ðŸ¼)
261D 1F3FD ; RGI_Emoji_Modifier_Sequence ; index pointing up: medium skin tone # E1.0 [1] (â˜ðŸ½)
diff --git a/Build/source/libs/icu/icu-src/source/data/unidata/emoji-zwj-sequences.txt b/Build/source/libs/icu/icu-src/source/data/unidata/emoji-zwj-sequences.txt
index c71fe183ad4..25f8b6154b5 100644
--- a/Build/source/libs/icu/icu-src/source/data/unidata/emoji-zwj-sequences.txt
+++ b/Build/source/libs/icu/icu-src/source/data/unidata/emoji-zwj-sequences.txt
@@ -1,16 +1,16 @@
# emoji-zwj-sequences.txt
-# Date: 2022-05-06, 16:14:52 GMT
-# © 2022 Unicode®, Inc.
+# Date: 2023-06-05, 20:04:50 GMT
+# © 2023 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# For terms of use, see https://www.unicode.org/terms_of_use.html
#
# Emoji ZWJ Sequences for UTS #51
-# Version: 15.0
+# Version: 15.1
#
# For documentation and usage, see https://www.unicode.org/reports/tr51
#
# Format:
-# code_point(s) ; type_field ; description # comments
+# code_point(s) ; type_field ; description # comments
# Fields:
# code_point(s): one or more code points in hex format, separated by spaces
# type_field :RGI_Emoji_ZWJ_Sequence
@@ -269,6 +269,10 @@
1F469 1F3FF 200D 1F91D 200D 1F469 1F3FD ; RGI_Emoji_ZWJ_Sequence ; women holding hands: dark skin tone, medium skin tone # E12.0 [1] (👩ðŸ¿â€ðŸ¤â€ðŸ‘©ðŸ½)
1F469 1F3FF 200D 1F91D 200D 1F469 1F3FE ; RGI_Emoji_ZWJ_Sequence ; women holding hands: dark skin tone, medium-dark skin tone # E12.0 [1] (👩ðŸ¿â€ðŸ¤â€ðŸ‘©ðŸ¾)
1F9D1 200D 1F91D 200D 1F9D1 ; RGI_Emoji_ZWJ_Sequence ; people holding hands # E12.0 [1] (🧑â€ðŸ¤â€ðŸ§‘)
+1F9D1 200D 1F9D1 200D 1F9D2 ; RGI_Emoji_ZWJ_Sequence ; family: adult, adult, child # E15.1 [1] (🧑â€ðŸ§‘â€ðŸ§’)
+1F9D1 200D 1F9D1 200D 1F9D2 200D 1F9D2 ; RGI_Emoji_ZWJ_Sequence ; family: adult, adult, child, child # E15.1 [1] (🧑â€ðŸ§‘â€ðŸ§’â€ðŸ§’)
+1F9D1 200D 1F9D2 ; RGI_Emoji_ZWJ_Sequence ; family: adult, child # E15.1 [1] (🧑â€ðŸ§’)
+1F9D1 200D 1F9D2 200D 1F9D2 ; RGI_Emoji_ZWJ_Sequence ; family: adult, child, child # E15.1 [1] (🧑â€ðŸ§’â€ðŸ§’)
1F9D1 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FC; RGI_Emoji_ZWJ_Sequence; kiss: person, person, light skin tone, medium-light skin tone #E13.1[1] (🧑ðŸ»â€â¤ï¸â€ðŸ’‹â€ðŸ§‘ðŸ¼)
1F9D1 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FD; RGI_Emoji_ZWJ_Sequence; kiss: person, person, light skin tone, medium skin tone #E13.1 [1] (🧑ðŸ»â€â¤ï¸â€ðŸ’‹â€ðŸ§‘ðŸ½)
1F9D1 1F3FB 200D 2764 FE0F 200D 1F48B 200D 1F9D1 1F3FE; RGI_Emoji_ZWJ_Sequence; kiss: person, person, light skin tone, medium-dark skin tone #E13.1[1] (🧑ðŸ»â€â¤ï¸â€ðŸ’‹â€ðŸ§‘ðŸ¾)
@@ -277,7 +281,6 @@
1F9D1 1F3FB 200D 2764 FE0F 200D 1F9D1 1F3FD ; RGI_Emoji_ZWJ_Sequence ; couple with heart: person, person, light skin tone, medium skin tone #E13.1[1] (🧑ðŸ»â€â¤ï¸â€ðŸ§‘ðŸ½)
1F9D1 1F3FB 200D 2764 FE0F 200D 1F9D1 1F3FE ; RGI_Emoji_ZWJ_Sequence ; couple with heart: person, person, light skin tone, medium-dark skin tone #E13.1[1] (🧑ðŸ»â€â¤ï¸â€ðŸ§‘ðŸ¾)
1F9D1 1F3FB 200D 2764 FE0F 200D 1F9D1 1F3FF ; RGI_Emoji_ZWJ_Sequence ; couple with heart: person, person, light skin tone, dark skin tone #E13.1[1] (🧑ðŸ»â€â¤ï¸â€ðŸ§‘ðŸ¿)
-1F9D1 1F3FB 200D 1F384 ; RGI_Emoji_ZWJ_Sequence ; mx claus: light skin tone # E13.0 [1] (🧑ðŸ»â€ðŸŽ„)
1F9D1 1F3FB 200D 1F91D 200D 1F9D1 1F3FB ; RGI_Emoji_ZWJ_Sequence ; people holding hands: light skin tone # E12.0 [1] (🧑ðŸ»â€ðŸ¤â€ðŸ§‘ðŸ»)
1F9D1 1F3FB 200D 1F91D 200D 1F9D1 1F3FC ; RGI_Emoji_ZWJ_Sequence ; people holding hands: light skin tone, medium-light skin tone # E12.1 [1] (🧑ðŸ»â€ðŸ¤â€ðŸ§‘ðŸ¼)
1F9D1 1F3FB 200D 1F91D 200D 1F9D1 1F3FD ; RGI_Emoji_ZWJ_Sequence ; people holding hands: light skin tone, medium skin tone # E12.1 [1] (🧑ðŸ»â€ðŸ¤â€ðŸ§‘ðŸ½)
@@ -291,7 +294,6 @@
1F9D1 1F3FC 200D 2764 FE0F 200D 1F9D1 1F3FD ; RGI_Emoji_ZWJ_Sequence ; couple with heart: person, person, medium-light skin tone, medium skin tone #E13.1[1] (🧑ðŸ¼â€â¤ï¸â€ðŸ§‘ðŸ½)
1F9D1 1F3FC 200D 2764 FE0F 200D 1F9D1 1F3FE ; RGI_Emoji_ZWJ_Sequence ; couple with heart: person, person, medium-light skin tone, medium-dark skin tone #E13.1[1] (🧑ðŸ¼â€â¤ï¸â€ðŸ§‘ðŸ¾)
1F9D1 1F3FC 200D 2764 FE0F 200D 1F9D1 1F3FF ; RGI_Emoji_ZWJ_Sequence ; couple with heart: person, person, medium-light skin tone, dark skin tone #E13.1[1] (🧑ðŸ¼â€â¤ï¸â€ðŸ§‘ðŸ¿)
-1F9D1 1F3FC 200D 1F384 ; RGI_Emoji_ZWJ_Sequence ; mx claus: medium-light skin tone # E13.0 [1] (🧑ðŸ¼â€ðŸŽ„)
1F9D1 1F3FC 200D 1F91D 200D 1F9D1 1F3FB ; RGI_Emoji_ZWJ_Sequence ; people holding hands: medium-light skin tone, light skin tone # E12.0 [1] (🧑ðŸ¼â€ðŸ¤â€ðŸ§‘ðŸ»)
1F9D1 1F3FC 200D 1F91D 200D 1F9D1 1F3FC ; RGI_Emoji_ZWJ_Sequence ; people holding hands: medium-light skin tone # E12.0 [1] (🧑ðŸ¼â€ðŸ¤â€ðŸ§‘ðŸ¼)
1F9D1 1F3FC 200D 1F91D 200D 1F9D1 1F3FD ; RGI_Emoji_ZWJ_Sequence ; people holding hands: medium-light skin tone, medium skin tone # E12.1 [1] (🧑ðŸ¼â€ðŸ¤â€ðŸ§‘ðŸ½)
@@ -305,7 +307,6 @@
1F9D1 1F3FD 200D 2764 FE0F 200D 1F9D1 1F3FC ; RGI_Emoji_ZWJ_Sequence ; couple with heart: person, person, medium skin tone, medium-light skin tone #E13.1[1] (🧑ðŸ½â€â¤ï¸â€ðŸ§‘ðŸ¼)
1F9D1 1F3FD 200D 2764 FE0F 200D 1F9D1 1F3FE ; RGI_Emoji_ZWJ_Sequence ; couple with heart: person, person, medium skin tone, medium-dark skin tone #E13.1[1] (🧑ðŸ½â€â¤ï¸â€ðŸ§‘ðŸ¾)
1F9D1 1F3FD 200D 2764 FE0F 200D 1F9D1 1F3FF ; RGI_Emoji_ZWJ_Sequence ; couple with heart: person, person, medium skin tone, dark skin tone #E13.1[1] (🧑ðŸ½â€â¤ï¸â€ðŸ§‘ðŸ¿)
-1F9D1 1F3FD 200D 1F384 ; RGI_Emoji_ZWJ_Sequence ; mx claus: medium skin tone # E13.0 [1] (🧑ðŸ½â€ðŸŽ„)
1F9D1 1F3FD 200D 1F91D 200D 1F9D1 1F3FB ; RGI_Emoji_ZWJ_Sequence ; people holding hands: medium skin tone, light skin tone # E12.0 [1] (🧑ðŸ½â€ðŸ¤â€ðŸ§‘ðŸ»)
1F9D1 1F3FD 200D 1F91D 200D 1F9D1 1F3FC ; RGI_Emoji_ZWJ_Sequence ; people holding hands: medium skin tone, medium-light skin tone # E12.0 [1] (🧑ðŸ½â€ðŸ¤â€ðŸ§‘ðŸ¼)
1F9D1 1F3FD 200D 1F91D 200D 1F9D1 1F3FD ; RGI_Emoji_ZWJ_Sequence ; people holding hands: medium skin tone # E12.0 [1] (🧑ðŸ½â€ðŸ¤â€ðŸ§‘ðŸ½)
@@ -319,7 +320,6 @@
1F9D1 1F3FE 200D 2764 FE0F 200D 1F9D1 1F3FC ; RGI_Emoji_ZWJ_Sequence ; couple with heart: person, person, medium-dark skin tone, medium-light skin tone #E13.1[1] (🧑ðŸ¾â€â¤ï¸â€ðŸ§‘ðŸ¼)
1F9D1 1F3FE 200D 2764 FE0F 200D 1F9D1 1F3FD ; RGI_Emoji_ZWJ_Sequence ; couple with heart: person, person, medium-dark skin tone, medium skin tone #E13.1[1] (🧑ðŸ¾â€â¤ï¸â€ðŸ§‘ðŸ½)
1F9D1 1F3FE 200D 2764 FE0F 200D 1F9D1 1F3FF ; RGI_Emoji_ZWJ_Sequence ; couple with heart: person, person, medium-dark skin tone, dark skin tone #E13.1[1] (🧑ðŸ¾â€â¤ï¸â€ðŸ§‘ðŸ¿)
-1F9D1 1F3FE 200D 1F384 ; RGI_Emoji_ZWJ_Sequence ; mx claus: medium-dark skin tone # E13.0 [1] (🧑ðŸ¾â€ðŸŽ„)
1F9D1 1F3FE 200D 1F91D 200D 1F9D1 1F3FB ; RGI_Emoji_ZWJ_Sequence ; people holding hands: medium-dark skin tone, light skin tone # E12.0 [1] (🧑ðŸ¾â€ðŸ¤â€ðŸ§‘ðŸ»)
1F9D1 1F3FE 200D 1F91D 200D 1F9D1 1F3FC ; RGI_Emoji_ZWJ_Sequence ; people holding hands: medium-dark skin tone, medium-light skin tone #E12.0[1] (🧑ðŸ¾â€ðŸ¤â€ðŸ§‘ðŸ¼)
1F9D1 1F3FE 200D 1F91D 200D 1F9D1 1F3FD ; RGI_Emoji_ZWJ_Sequence ; people holding hands: medium-dark skin tone, medium skin tone # E12.0 [1] (🧑ðŸ¾â€ðŸ¤â€ðŸ§‘ðŸ½)
@@ -333,7 +333,6 @@
1F9D1 1F3FF 200D 2764 FE0F 200D 1F9D1 1F3FC ; RGI_Emoji_ZWJ_Sequence ; couple with heart: person, person, dark skin tone, medium-light skin tone #E13.1[1] (🧑ðŸ¿â€â¤ï¸â€ðŸ§‘ðŸ¼)
1F9D1 1F3FF 200D 2764 FE0F 200D 1F9D1 1F3FD ; RGI_Emoji_ZWJ_Sequence ; couple with heart: person, person, dark skin tone, medium skin tone #E13.1[1] (🧑ðŸ¿â€â¤ï¸â€ðŸ§‘ðŸ½)
1F9D1 1F3FF 200D 2764 FE0F 200D 1F9D1 1F3FE ; RGI_Emoji_ZWJ_Sequence ; couple with heart: person, person, dark skin tone, medium-dark skin tone #E13.1[1] (🧑ðŸ¿â€â¤ï¸â€ðŸ§‘ðŸ¾)
-1F9D1 1F3FF 200D 1F384 ; RGI_Emoji_ZWJ_Sequence ; mx claus: dark skin tone # E13.0 [1] (🧑ðŸ¿â€ðŸŽ„)
1F9D1 1F3FF 200D 1F91D 200D 1F9D1 1F3FB ; RGI_Emoji_ZWJ_Sequence ; people holding hands: dark skin tone, light skin tone # E12.0 [1] (🧑ðŸ¿â€ðŸ¤â€ðŸ§‘ðŸ»)
1F9D1 1F3FF 200D 1F91D 200D 1F9D1 1F3FC ; RGI_Emoji_ZWJ_Sequence ; people holding hands: dark skin tone, medium-light skin tone # E12.0 [1] (🧑ðŸ¿â€ðŸ¤â€ðŸ§‘ðŸ¼)
1F9D1 1F3FF 200D 1F91D 200D 1F9D1 1F3FD ; RGI_Emoji_ZWJ_Sequence ; people holding hands: dark skin tone, medium skin tone # E12.0 [1] (🧑ðŸ¿â€ðŸ¤â€ðŸ§‘ðŸ½)
@@ -360,12 +359,18 @@
1FAF1 1F3FF 200D 1FAF2 1F3FD ; RGI_Emoji_ZWJ_Sequence ; handshake: dark skin tone, medium skin tone # E14.0 [1] (🫱ðŸ¿â€ðŸ«²ðŸ½)
1FAF1 1F3FF 200D 1FAF2 1F3FE ; RGI_Emoji_ZWJ_Sequence ; handshake: dark skin tone, medium-dark skin tone # E14.0 [1] (🫱ðŸ¿â€ðŸ«²ðŸ¾)
-# Total elements: 332
+# Total elements: 331
# ================================================
# RGI_Emoji_ZWJ_Sequence: Role
+1F3C3 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; person running facing right # E15.1 [1] (ðŸƒâ€âž¡ï¸)
+1F3C3 1F3FB 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; person running facing right: light skin tone # E15.1 [1] (ðŸƒðŸ»â€âž¡ï¸)
+1F3C3 1F3FC 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; person running facing right: medium-light skin tone # E15.1 [1] (ðŸƒðŸ¼â€âž¡ï¸)
+1F3C3 1F3FD 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; person running facing right: medium skin tone # E15.1 [1] (ðŸƒðŸ½â€âž¡ï¸)
+1F3C3 1F3FE 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; person running facing right: medium-dark skin tone # E15.1 [1] (ðŸƒðŸ¾â€âž¡ï¸)
+1F3C3 1F3FF 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; person running facing right: dark skin tone # E15.1 [1] (ðŸƒðŸ¿â€âž¡ï¸)
1F468 200D 2695 FE0F ; RGI_Emoji_ZWJ_Sequence ; man health worker # E4.0 [1] (👨â€âš•ï¸)
1F468 200D 2696 FE0F ; RGI_Emoji_ZWJ_Sequence ; man judge # E4.0 [1] (👨â€âš–ï¸)
1F468 200D 2708 FE0F ; RGI_Emoji_ZWJ_Sequence ; man pilot # E4.0 [1] (👨â€âœˆï¸)
@@ -384,8 +389,11 @@
1F468 200D 1F680 ; RGI_Emoji_ZWJ_Sequence ; man astronaut # E4.0 [1] (👨â€ðŸš€)
1F468 200D 1F692 ; RGI_Emoji_ZWJ_Sequence ; man firefighter # E4.0 [1] (👨â€ðŸš’)
1F468 200D 1F9AF ; RGI_Emoji_ZWJ_Sequence ; man with white cane # E12.0 [1] (👨â€ðŸ¦¯)
+1F468 200D 1F9AF 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; man with white cane facing right # E15.1 [1] (👨â€ðŸ¦¯â€âž¡ï¸)
1F468 200D 1F9BC ; RGI_Emoji_ZWJ_Sequence ; man in motorized wheelchair # E12.0 [1] (👨â€ðŸ¦¼)
+1F468 200D 1F9BC 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; man in motorized wheelchair facing right # E15.1 [1] (👨â€ðŸ¦¼â€âž¡ï¸)
1F468 200D 1F9BD ; RGI_Emoji_ZWJ_Sequence ; man in manual wheelchair # E12.0 [1] (👨â€ðŸ¦½)
+1F468 200D 1F9BD 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; man in manual wheelchair facing right # E15.1 [1] (👨â€ðŸ¦½â€âž¡ï¸)
1F468 1F3FB 200D 2695 FE0F ; RGI_Emoji_ZWJ_Sequence ; man health worker: light skin tone # E4.0 [1] (👨ðŸ»â€âš•ï¸)
1F468 1F3FB 200D 2696 FE0F ; RGI_Emoji_ZWJ_Sequence ; man judge: light skin tone # E4.0 [1] (👨ðŸ»â€âš–ï¸)
1F468 1F3FB 200D 2708 FE0F ; RGI_Emoji_ZWJ_Sequence ; man pilot: light skin tone # E4.0 [1] (👨ðŸ»â€âœˆï¸)
@@ -404,8 +412,11 @@
1F468 1F3FB 200D 1F680 ; RGI_Emoji_ZWJ_Sequence ; man astronaut: light skin tone # E4.0 [1] (👨ðŸ»â€ðŸš€)
1F468 1F3FB 200D 1F692 ; RGI_Emoji_ZWJ_Sequence ; man firefighter: light skin tone # E4.0 [1] (👨ðŸ»â€ðŸš’)
1F468 1F3FB 200D 1F9AF ; RGI_Emoji_ZWJ_Sequence ; man with white cane: light skin tone # E12.0 [1] (👨ðŸ»â€ðŸ¦¯)
+1F468 1F3FB 200D 1F9AF 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; man with white cane facing right: light skin tone # E15.1 [1] (👨ðŸ»â€ðŸ¦¯â€âž¡ï¸)
1F468 1F3FB 200D 1F9BC ; RGI_Emoji_ZWJ_Sequence ; man in motorized wheelchair: light skin tone # E12.0 [1] (👨ðŸ»â€ðŸ¦¼)
+1F468 1F3FB 200D 1F9BC 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; man in motorized wheelchair facing right: light skin tone # E15.1 [1] (👨ðŸ»â€ðŸ¦¼â€âž¡ï¸)
1F468 1F3FB 200D 1F9BD ; RGI_Emoji_ZWJ_Sequence ; man in manual wheelchair: light skin tone # E12.0 [1] (👨ðŸ»â€ðŸ¦½)
+1F468 1F3FB 200D 1F9BD 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; man in manual wheelchair facing right: light skin tone # E15.1 [1] (👨ðŸ»â€ðŸ¦½â€âž¡ï¸)
1F468 1F3FC 200D 2695 FE0F ; RGI_Emoji_ZWJ_Sequence ; man health worker: medium-light skin tone # E4.0 [1] (👨ðŸ¼â€âš•ï¸)
1F468 1F3FC 200D 2696 FE0F ; RGI_Emoji_ZWJ_Sequence ; man judge: medium-light skin tone # E4.0 [1] (👨ðŸ¼â€âš–ï¸)
1F468 1F3FC 200D 2708 FE0F ; RGI_Emoji_ZWJ_Sequence ; man pilot: medium-light skin tone # E4.0 [1] (👨ðŸ¼â€âœˆï¸)
@@ -424,8 +435,11 @@
1F468 1F3FC 200D 1F680 ; RGI_Emoji_ZWJ_Sequence ; man astronaut: medium-light skin tone # E4.0 [1] (👨ðŸ¼â€ðŸš€)
1F468 1F3FC 200D 1F692 ; RGI_Emoji_ZWJ_Sequence ; man firefighter: medium-light skin tone # E4.0 [1] (👨ðŸ¼â€ðŸš’)
1F468 1F3FC 200D 1F9AF ; RGI_Emoji_ZWJ_Sequence ; man with white cane: medium-light skin tone # E12.0 [1] (👨ðŸ¼â€ðŸ¦¯)
+1F468 1F3FC 200D 1F9AF 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; man with white cane facing right: medium-light skin tone # E15.1 [1] (👨ðŸ¼â€ðŸ¦¯â€âž¡ï¸)
1F468 1F3FC 200D 1F9BC ; RGI_Emoji_ZWJ_Sequence ; man in motorized wheelchair: medium-light skin tone # E12.0 [1] (👨ðŸ¼â€ðŸ¦¼)
+1F468 1F3FC 200D 1F9BC 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; man in motorized wheelchair facing right: medium-light skin tone #E15.1 [1] (👨ðŸ¼â€ðŸ¦¼â€âž¡ï¸)
1F468 1F3FC 200D 1F9BD ; RGI_Emoji_ZWJ_Sequence ; man in manual wheelchair: medium-light skin tone # E12.0 [1] (👨ðŸ¼â€ðŸ¦½)
+1F468 1F3FC 200D 1F9BD 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; man in manual wheelchair facing right: medium-light skin tone # E15.1 [1] (👨ðŸ¼â€ðŸ¦½â€âž¡ï¸)
1F468 1F3FD 200D 2695 FE0F ; RGI_Emoji_ZWJ_Sequence ; man health worker: medium skin tone # E4.0 [1] (👨ðŸ½â€âš•ï¸)
1F468 1F3FD 200D 2696 FE0F ; RGI_Emoji_ZWJ_Sequence ; man judge: medium skin tone # E4.0 [1] (👨ðŸ½â€âš–ï¸)
1F468 1F3FD 200D 2708 FE0F ; RGI_Emoji_ZWJ_Sequence ; man pilot: medium skin tone # E4.0 [1] (👨ðŸ½â€âœˆï¸)
@@ -444,8 +458,11 @@
1F468 1F3FD 200D 1F680 ; RGI_Emoji_ZWJ_Sequence ; man astronaut: medium skin tone # E4.0 [1] (👨ðŸ½â€ðŸš€)
1F468 1F3FD 200D 1F692 ; RGI_Emoji_ZWJ_Sequence ; man firefighter: medium skin tone # E4.0 [1] (👨ðŸ½â€ðŸš’)
1F468 1F3FD 200D 1F9AF ; RGI_Emoji_ZWJ_Sequence ; man with white cane: medium skin tone # E12.0 [1] (👨ðŸ½â€ðŸ¦¯)
+1F468 1F3FD 200D 1F9AF 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; man with white cane facing right: medium skin tone # E15.1 [1] (👨ðŸ½â€ðŸ¦¯â€âž¡ï¸)
1F468 1F3FD 200D 1F9BC ; RGI_Emoji_ZWJ_Sequence ; man in motorized wheelchair: medium skin tone # E12.0 [1] (👨ðŸ½â€ðŸ¦¼)
+1F468 1F3FD 200D 1F9BC 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; man in motorized wheelchair facing right: medium skin tone # E15.1 [1] (👨ðŸ½â€ðŸ¦¼â€âž¡ï¸)
1F468 1F3FD 200D 1F9BD ; RGI_Emoji_ZWJ_Sequence ; man in manual wheelchair: medium skin tone # E12.0 [1] (👨ðŸ½â€ðŸ¦½)
+1F468 1F3FD 200D 1F9BD 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; man in manual wheelchair facing right: medium skin tone # E15.1 [1] (👨ðŸ½â€ðŸ¦½â€âž¡ï¸)
1F468 1F3FE 200D 2695 FE0F ; RGI_Emoji_ZWJ_Sequence ; man health worker: medium-dark skin tone # E4.0 [1] (👨ðŸ¾â€âš•ï¸)
1F468 1F3FE 200D 2696 FE0F ; RGI_Emoji_ZWJ_Sequence ; man judge: medium-dark skin tone # E4.0 [1] (👨ðŸ¾â€âš–ï¸)
1F468 1F3FE 200D 2708 FE0F ; RGI_Emoji_ZWJ_Sequence ; man pilot: medium-dark skin tone # E4.0 [1] (👨ðŸ¾â€âœˆï¸)
@@ -464,8 +481,11 @@
1F468 1F3FE 200D 1F680 ; RGI_Emoji_ZWJ_Sequence ; man astronaut: medium-dark skin tone # E4.0 [1] (👨ðŸ¾â€ðŸš€)
1F468 1F3FE 200D 1F692 ; RGI_Emoji_ZWJ_Sequence ; man firefighter: medium-dark skin tone # E4.0 [1] (👨ðŸ¾â€ðŸš’)
1F468 1F3FE 200D 1F9AF ; RGI_Emoji_ZWJ_Sequence ; man with white cane: medium-dark skin tone # E12.0 [1] (👨ðŸ¾â€ðŸ¦¯)
+1F468 1F3FE 200D 1F9AF 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; man with white cane facing right: medium-dark skin tone # E15.1 [1] (👨ðŸ¾â€ðŸ¦¯â€âž¡ï¸)
1F468 1F3FE 200D 1F9BC ; RGI_Emoji_ZWJ_Sequence ; man in motorized wheelchair: medium-dark skin tone # E12.0 [1] (👨ðŸ¾â€ðŸ¦¼)
+1F468 1F3FE 200D 1F9BC 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; man in motorized wheelchair facing right: medium-dark skin tone #E15.1 [1] (👨ðŸ¾â€ðŸ¦¼â€âž¡ï¸)
1F468 1F3FE 200D 1F9BD ; RGI_Emoji_ZWJ_Sequence ; man in manual wheelchair: medium-dark skin tone # E12.0 [1] (👨ðŸ¾â€ðŸ¦½)
+1F468 1F3FE 200D 1F9BD 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; man in manual wheelchair facing right: medium-dark skin tone # E15.1 [1] (👨ðŸ¾â€ðŸ¦½â€âž¡ï¸)
1F468 1F3FF 200D 2695 FE0F ; RGI_Emoji_ZWJ_Sequence ; man health worker: dark skin tone # E4.0 [1] (👨ðŸ¿â€âš•ï¸)
1F468 1F3FF 200D 2696 FE0F ; RGI_Emoji_ZWJ_Sequence ; man judge: dark skin tone # E4.0 [1] (👨ðŸ¿â€âš–ï¸)
1F468 1F3FF 200D 2708 FE0F ; RGI_Emoji_ZWJ_Sequence ; man pilot: dark skin tone # E4.0 [1] (👨ðŸ¿â€âœˆï¸)
@@ -484,8 +504,11 @@
1F468 1F3FF 200D 1F680 ; RGI_Emoji_ZWJ_Sequence ; man astronaut: dark skin tone # E4.0 [1] (👨ðŸ¿â€ðŸš€)
1F468 1F3FF 200D 1F692 ; RGI_Emoji_ZWJ_Sequence ; man firefighter: dark skin tone # E4.0 [1] (👨ðŸ¿â€ðŸš’)
1F468 1F3FF 200D 1F9AF ; RGI_Emoji_ZWJ_Sequence ; man with white cane: dark skin tone # E12.0 [1] (👨ðŸ¿â€ðŸ¦¯)
+1F468 1F3FF 200D 1F9AF 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; man with white cane facing right: dark skin tone # E15.1 [1] (👨ðŸ¿â€ðŸ¦¯â€âž¡ï¸)
1F468 1F3FF 200D 1F9BC ; RGI_Emoji_ZWJ_Sequence ; man in motorized wheelchair: dark skin tone # E12.0 [1] (👨ðŸ¿â€ðŸ¦¼)
+1F468 1F3FF 200D 1F9BC 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; man in motorized wheelchair facing right: dark skin tone # E15.1 [1] (👨ðŸ¿â€ðŸ¦¼â€âž¡ï¸)
1F468 1F3FF 200D 1F9BD ; RGI_Emoji_ZWJ_Sequence ; man in manual wheelchair: dark skin tone # E12.0 [1] (👨ðŸ¿â€ðŸ¦½)
+1F468 1F3FF 200D 1F9BD 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; man in manual wheelchair facing right: dark skin tone # E15.1 [1] (👨ðŸ¿â€ðŸ¦½â€âž¡ï¸)
1F469 200D 2695 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman health worker # E4.0 [1] (👩â€âš•ï¸)
1F469 200D 2696 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman judge # E4.0 [1] (👩â€âš–ï¸)
1F469 200D 2708 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman pilot # E4.0 [1] (👩â€âœˆï¸)
@@ -504,8 +527,11 @@
1F469 200D 1F680 ; RGI_Emoji_ZWJ_Sequence ; woman astronaut # E4.0 [1] (👩â€ðŸš€)
1F469 200D 1F692 ; RGI_Emoji_ZWJ_Sequence ; woman firefighter # E4.0 [1] (👩â€ðŸš’)
1F469 200D 1F9AF ; RGI_Emoji_ZWJ_Sequence ; woman with white cane # E12.0 [1] (👩â€ðŸ¦¯)
+1F469 200D 1F9AF 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman with white cane facing right # E15.1 [1] (👩â€ðŸ¦¯â€âž¡ï¸)
1F469 200D 1F9BC ; RGI_Emoji_ZWJ_Sequence ; woman in motorized wheelchair # E12.0 [1] (👩â€ðŸ¦¼)
+1F469 200D 1F9BC 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman in motorized wheelchair facing right # E15.1 [1] (👩â€ðŸ¦¼â€âž¡ï¸)
1F469 200D 1F9BD ; RGI_Emoji_ZWJ_Sequence ; woman in manual wheelchair # E12.0 [1] (👩â€ðŸ¦½)
+1F469 200D 1F9BD 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman in manual wheelchair facing right # E15.1 [1] (👩â€ðŸ¦½â€âž¡ï¸)
1F469 1F3FB 200D 2695 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman health worker: light skin tone # E4.0 [1] (👩ðŸ»â€âš•ï¸)
1F469 1F3FB 200D 2696 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman judge: light skin tone # E4.0 [1] (👩ðŸ»â€âš–ï¸)
1F469 1F3FB 200D 2708 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman pilot: light skin tone # E4.0 [1] (👩ðŸ»â€âœˆï¸)
@@ -524,8 +550,11 @@
1F469 1F3FB 200D 1F680 ; RGI_Emoji_ZWJ_Sequence ; woman astronaut: light skin tone # E4.0 [1] (👩ðŸ»â€ðŸš€)
1F469 1F3FB 200D 1F692 ; RGI_Emoji_ZWJ_Sequence ; woman firefighter: light skin tone # E4.0 [1] (👩ðŸ»â€ðŸš’)
1F469 1F3FB 200D 1F9AF ; RGI_Emoji_ZWJ_Sequence ; woman with white cane: light skin tone # E12.0 [1] (👩ðŸ»â€ðŸ¦¯)
+1F469 1F3FB 200D 1F9AF 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman with white cane facing right: light skin tone # E15.1 [1] (👩ðŸ»â€ðŸ¦¯â€âž¡ï¸)
1F469 1F3FB 200D 1F9BC ; RGI_Emoji_ZWJ_Sequence ; woman in motorized wheelchair: light skin tone # E12.0 [1] (👩ðŸ»â€ðŸ¦¼)
+1F469 1F3FB 200D 1F9BC 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman in motorized wheelchair facing right: light skin tone # E15.1 [1] (👩ðŸ»â€ðŸ¦¼â€âž¡ï¸)
1F469 1F3FB 200D 1F9BD ; RGI_Emoji_ZWJ_Sequence ; woman in manual wheelchair: light skin tone # E12.0 [1] (👩ðŸ»â€ðŸ¦½)
+1F469 1F3FB 200D 1F9BD 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman in manual wheelchair facing right: light skin tone # E15.1 [1] (👩ðŸ»â€ðŸ¦½â€âž¡ï¸)
1F469 1F3FC 200D 2695 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman health worker: medium-light skin tone # E4.0 [1] (👩ðŸ¼â€âš•ï¸)
1F469 1F3FC 200D 2696 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman judge: medium-light skin tone # E4.0 [1] (👩ðŸ¼â€âš–ï¸)
1F469 1F3FC 200D 2708 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman pilot: medium-light skin tone # E4.0 [1] (👩ðŸ¼â€âœˆï¸)
@@ -544,8 +573,11 @@
1F469 1F3FC 200D 1F680 ; RGI_Emoji_ZWJ_Sequence ; woman astronaut: medium-light skin tone # E4.0 [1] (👩ðŸ¼â€ðŸš€)
1F469 1F3FC 200D 1F692 ; RGI_Emoji_ZWJ_Sequence ; woman firefighter: medium-light skin tone # E4.0 [1] (👩ðŸ¼â€ðŸš’)
1F469 1F3FC 200D 1F9AF ; RGI_Emoji_ZWJ_Sequence ; woman with white cane: medium-light skin tone # E12.0 [1] (👩ðŸ¼â€ðŸ¦¯)
+1F469 1F3FC 200D 1F9AF 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman with white cane facing right: medium-light skin tone # E15.1 [1] (👩ðŸ¼â€ðŸ¦¯â€âž¡ï¸)
1F469 1F3FC 200D 1F9BC ; RGI_Emoji_ZWJ_Sequence ; woman in motorized wheelchair: medium-light skin tone # E12.0 [1] (👩ðŸ¼â€ðŸ¦¼)
+1F469 1F3FC 200D 1F9BC 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman in motorized wheelchair facing right: medium-light skin tone #E15.1[1] (👩ðŸ¼â€ðŸ¦¼â€âž¡ï¸)
1F469 1F3FC 200D 1F9BD ; RGI_Emoji_ZWJ_Sequence ; woman in manual wheelchair: medium-light skin tone # E12.0 [1] (👩ðŸ¼â€ðŸ¦½)
+1F469 1F3FC 200D 1F9BD 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman in manual wheelchair facing right: medium-light skin tone #E15.1 [1] (👩ðŸ¼â€ðŸ¦½â€âž¡ï¸)
1F469 1F3FD 200D 2695 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman health worker: medium skin tone # E4.0 [1] (👩ðŸ½â€âš•ï¸)
1F469 1F3FD 200D 2696 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman judge: medium skin tone # E4.0 [1] (👩ðŸ½â€âš–ï¸)
1F469 1F3FD 200D 2708 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman pilot: medium skin tone # E4.0 [1] (👩ðŸ½â€âœˆï¸)
@@ -564,8 +596,11 @@
1F469 1F3FD 200D 1F680 ; RGI_Emoji_ZWJ_Sequence ; woman astronaut: medium skin tone # E4.0 [1] (👩ðŸ½â€ðŸš€)
1F469 1F3FD 200D 1F692 ; RGI_Emoji_ZWJ_Sequence ; woman firefighter: medium skin tone # E4.0 [1] (👩ðŸ½â€ðŸš’)
1F469 1F3FD 200D 1F9AF ; RGI_Emoji_ZWJ_Sequence ; woman with white cane: medium skin tone # E12.0 [1] (👩ðŸ½â€ðŸ¦¯)
+1F469 1F3FD 200D 1F9AF 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman with white cane facing right: medium skin tone # E15.1 [1] (👩ðŸ½â€ðŸ¦¯â€âž¡ï¸)
1F469 1F3FD 200D 1F9BC ; RGI_Emoji_ZWJ_Sequence ; woman in motorized wheelchair: medium skin tone # E12.0 [1] (👩ðŸ½â€ðŸ¦¼)
+1F469 1F3FD 200D 1F9BC 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman in motorized wheelchair facing right: medium skin tone # E15.1 [1] (👩ðŸ½â€ðŸ¦¼â€âž¡ï¸)
1F469 1F3FD 200D 1F9BD ; RGI_Emoji_ZWJ_Sequence ; woman in manual wheelchair: medium skin tone # E12.0 [1] (👩ðŸ½â€ðŸ¦½)
+1F469 1F3FD 200D 1F9BD 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman in manual wheelchair facing right: medium skin tone # E15.1 [1] (👩ðŸ½â€ðŸ¦½â€âž¡ï¸)
1F469 1F3FE 200D 2695 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman health worker: medium-dark skin tone # E4.0 [1] (👩ðŸ¾â€âš•ï¸)
1F469 1F3FE 200D 2696 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman judge: medium-dark skin tone # E4.0 [1] (👩ðŸ¾â€âš–ï¸)
1F469 1F3FE 200D 2708 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman pilot: medium-dark skin tone # E4.0 [1] (👩ðŸ¾â€âœˆï¸)
@@ -584,8 +619,11 @@
1F469 1F3FE 200D 1F680 ; RGI_Emoji_ZWJ_Sequence ; woman astronaut: medium-dark skin tone # E4.0 [1] (👩ðŸ¾â€ðŸš€)
1F469 1F3FE 200D 1F692 ; RGI_Emoji_ZWJ_Sequence ; woman firefighter: medium-dark skin tone # E4.0 [1] (👩ðŸ¾â€ðŸš’)
1F469 1F3FE 200D 1F9AF ; RGI_Emoji_ZWJ_Sequence ; woman with white cane: medium-dark skin tone # E12.0 [1] (👩ðŸ¾â€ðŸ¦¯)
+1F469 1F3FE 200D 1F9AF 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman with white cane facing right: medium-dark skin tone # E15.1 [1] (👩ðŸ¾â€ðŸ¦¯â€âž¡ï¸)
1F469 1F3FE 200D 1F9BC ; RGI_Emoji_ZWJ_Sequence ; woman in motorized wheelchair: medium-dark skin tone # E12.0 [1] (👩ðŸ¾â€ðŸ¦¼)
+1F469 1F3FE 200D 1F9BC 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman in motorized wheelchair facing right: medium-dark skin tone #E15.1[1] (👩ðŸ¾â€ðŸ¦¼â€âž¡ï¸)
1F469 1F3FE 200D 1F9BD ; RGI_Emoji_ZWJ_Sequence ; woman in manual wheelchair: medium-dark skin tone # E12.0 [1] (👩ðŸ¾â€ðŸ¦½)
+1F469 1F3FE 200D 1F9BD 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman in manual wheelchair facing right: medium-dark skin tone # E15.1 [1] (👩ðŸ¾â€ðŸ¦½â€âž¡ï¸)
1F469 1F3FF 200D 2695 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman health worker: dark skin tone # E4.0 [1] (👩ðŸ¿â€âš•ï¸)
1F469 1F3FF 200D 2696 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman judge: dark skin tone # E4.0 [1] (👩ðŸ¿â€âš–ï¸)
1F469 1F3FF 200D 2708 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman pilot: dark skin tone # E4.0 [1] (👩ðŸ¿â€âœˆï¸)
@@ -604,14 +642,30 @@
1F469 1F3FF 200D 1F680 ; RGI_Emoji_ZWJ_Sequence ; woman astronaut: dark skin tone # E4.0 [1] (👩ðŸ¿â€ðŸš€)
1F469 1F3FF 200D 1F692 ; RGI_Emoji_ZWJ_Sequence ; woman firefighter: dark skin tone # E4.0 [1] (👩ðŸ¿â€ðŸš’)
1F469 1F3FF 200D 1F9AF ; RGI_Emoji_ZWJ_Sequence ; woman with white cane: dark skin tone # E12.0 [1] (👩ðŸ¿â€ðŸ¦¯)
+1F469 1F3FF 200D 1F9AF 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman with white cane facing right: dark skin tone # E15.1 [1] (👩ðŸ¿â€ðŸ¦¯â€âž¡ï¸)
1F469 1F3FF 200D 1F9BC ; RGI_Emoji_ZWJ_Sequence ; woman in motorized wheelchair: dark skin tone # E12.0 [1] (👩ðŸ¿â€ðŸ¦¼)
+1F469 1F3FF 200D 1F9BC 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman in motorized wheelchair facing right: dark skin tone # E15.1 [1] (👩ðŸ¿â€ðŸ¦¼â€âž¡ï¸)
1F469 1F3FF 200D 1F9BD ; RGI_Emoji_ZWJ_Sequence ; woman in manual wheelchair: dark skin tone # E12.0 [1] (👩ðŸ¿â€ðŸ¦½)
+1F469 1F3FF 200D 1F9BD 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman in manual wheelchair facing right: dark skin tone # E15.1 [1] (👩ðŸ¿â€ðŸ¦½â€âž¡ï¸)
+1F6B6 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; person walking facing right # E15.1 [1] (🚶â€âž¡ï¸)
+1F6B6 1F3FB 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; person walking facing right: light skin tone # E15.1 [1] (🚶ðŸ»â€âž¡ï¸)
+1F6B6 1F3FC 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; person walking facing right: medium-light skin tone # E15.1 [1] (🚶ðŸ¼â€âž¡ï¸)
+1F6B6 1F3FD 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; person walking facing right: medium skin tone # E15.1 [1] (🚶ðŸ½â€âž¡ï¸)
+1F6B6 1F3FE 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; person walking facing right: medium-dark skin tone # E15.1 [1] (🚶ðŸ¾â€âž¡ï¸)
+1F6B6 1F3FF 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; person walking facing right: dark skin tone # E15.1 [1] (🚶ðŸ¿â€âž¡ï¸)
+1F9CE 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; person kneeling facing right # E15.1 [1] (🧎â€âž¡ï¸)
+1F9CE 1F3FB 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; person kneeling facing right: light skin tone # E15.1 [1] (🧎ðŸ»â€âž¡ï¸)
+1F9CE 1F3FC 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; person kneeling facing right: medium-light skin tone # E15.1 [1] (🧎ðŸ¼â€âž¡ï¸)
+1F9CE 1F3FD 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; person kneeling facing right: medium skin tone # E15.1 [1] (🧎ðŸ½â€âž¡ï¸)
+1F9CE 1F3FE 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; person kneeling facing right: medium-dark skin tone # E15.1 [1] (🧎ðŸ¾â€âž¡ï¸)
+1F9CE 1F3FF 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; person kneeling facing right: dark skin tone # E15.1 [1] (🧎ðŸ¿â€âž¡ï¸)
1F9D1 200D 2695 FE0F ; RGI_Emoji_ZWJ_Sequence ; health worker # E12.1 [1] (🧑â€âš•ï¸)
1F9D1 200D 2696 FE0F ; RGI_Emoji_ZWJ_Sequence ; judge # E12.1 [1] (🧑â€âš–ï¸)
1F9D1 200D 2708 FE0F ; RGI_Emoji_ZWJ_Sequence ; pilot # E12.1 [1] (🧑â€âœˆï¸)
1F9D1 200D 1F33E ; RGI_Emoji_ZWJ_Sequence ; farmer # E12.1 [1] (🧑â€ðŸŒ¾)
1F9D1 200D 1F373 ; RGI_Emoji_ZWJ_Sequence ; cook # E12.1 [1] (🧑â€ðŸ³)
1F9D1 200D 1F37C ; RGI_Emoji_ZWJ_Sequence ; person feeding baby # E13.0 [1] (🧑â€ðŸ¼)
+1F9D1 200D 1F384 ; RGI_Emoji_ZWJ_Sequence ; mx claus # E13.0 [1] (🧑â€ðŸŽ„)
1F9D1 200D 1F393 ; RGI_Emoji_ZWJ_Sequence ; student # E12.1 [1] (🧑â€ðŸŽ“)
1F9D1 200D 1F3A4 ; RGI_Emoji_ZWJ_Sequence ; singer # E12.1 [1] (🧑â€ðŸŽ¤)
1F9D1 200D 1F3A8 ; RGI_Emoji_ZWJ_Sequence ; artist # E12.1 [1] (🧑â€ðŸŽ¨)
@@ -624,14 +678,18 @@
1F9D1 200D 1F680 ; RGI_Emoji_ZWJ_Sequence ; astronaut # E12.1 [1] (🧑â€ðŸš€)
1F9D1 200D 1F692 ; RGI_Emoji_ZWJ_Sequence ; firefighter # E12.1 [1] (🧑â€ðŸš’)
1F9D1 200D 1F9AF ; RGI_Emoji_ZWJ_Sequence ; person with white cane # E12.1 [1] (🧑â€ðŸ¦¯)
+1F9D1 200D 1F9AF 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; person with white cane facing right # E15.1 [1] (🧑â€ðŸ¦¯â€âž¡ï¸)
1F9D1 200D 1F9BC ; RGI_Emoji_ZWJ_Sequence ; person in motorized wheelchair # E12.1 [1] (🧑â€ðŸ¦¼)
+1F9D1 200D 1F9BC 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; person in motorized wheelchair facing right # E15.1 [1] (🧑â€ðŸ¦¼â€âž¡ï¸)
1F9D1 200D 1F9BD ; RGI_Emoji_ZWJ_Sequence ; person in manual wheelchair # E12.1 [1] (🧑â€ðŸ¦½)
+1F9D1 200D 1F9BD 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; person in manual wheelchair facing right # E15.1 [1] (🧑â€ðŸ¦½â€âž¡ï¸)
1F9D1 1F3FB 200D 2695 FE0F ; RGI_Emoji_ZWJ_Sequence ; health worker: light skin tone # E12.1 [1] (🧑ðŸ»â€âš•ï¸)
1F9D1 1F3FB 200D 2696 FE0F ; RGI_Emoji_ZWJ_Sequence ; judge: light skin tone # E12.1 [1] (🧑ðŸ»â€âš–ï¸)
1F9D1 1F3FB 200D 2708 FE0F ; RGI_Emoji_ZWJ_Sequence ; pilot: light skin tone # E12.1 [1] (🧑ðŸ»â€âœˆï¸)
1F9D1 1F3FB 200D 1F33E ; RGI_Emoji_ZWJ_Sequence ; farmer: light skin tone # E12.1 [1] (🧑ðŸ»â€ðŸŒ¾)
1F9D1 1F3FB 200D 1F373 ; RGI_Emoji_ZWJ_Sequence ; cook: light skin tone # E12.1 [1] (🧑ðŸ»â€ðŸ³)
1F9D1 1F3FB 200D 1F37C ; RGI_Emoji_ZWJ_Sequence ; person feeding baby: light skin tone # E13.0 [1] (🧑ðŸ»â€ðŸ¼)
+1F9D1 1F3FB 200D 1F384 ; RGI_Emoji_ZWJ_Sequence ; mx claus: light skin tone # E13.0 [1] (🧑ðŸ»â€ðŸŽ„)
1F9D1 1F3FB 200D 1F393 ; RGI_Emoji_ZWJ_Sequence ; student: light skin tone # E12.1 [1] (🧑ðŸ»â€ðŸŽ“)
1F9D1 1F3FB 200D 1F3A4 ; RGI_Emoji_ZWJ_Sequence ; singer: light skin tone # E12.1 [1] (🧑ðŸ»â€ðŸŽ¤)
1F9D1 1F3FB 200D 1F3A8 ; RGI_Emoji_ZWJ_Sequence ; artist: light skin tone # E12.1 [1] (🧑ðŸ»â€ðŸŽ¨)
@@ -644,14 +702,18 @@
1F9D1 1F3FB 200D 1F680 ; RGI_Emoji_ZWJ_Sequence ; astronaut: light skin tone # E12.1 [1] (🧑ðŸ»â€ðŸš€)
1F9D1 1F3FB 200D 1F692 ; RGI_Emoji_ZWJ_Sequence ; firefighter: light skin tone # E12.1 [1] (🧑ðŸ»â€ðŸš’)
1F9D1 1F3FB 200D 1F9AF ; RGI_Emoji_ZWJ_Sequence ; person with white cane: light skin tone # E12.1 [1] (🧑ðŸ»â€ðŸ¦¯)
+1F9D1 1F3FB 200D 1F9AF 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; person with white cane facing right: light skin tone # E15.1 [1] (🧑ðŸ»â€ðŸ¦¯â€âž¡ï¸)
1F9D1 1F3FB 200D 1F9BC ; RGI_Emoji_ZWJ_Sequence ; person in motorized wheelchair: light skin tone # E12.1 [1] (🧑ðŸ»â€ðŸ¦¼)
+1F9D1 1F3FB 200D 1F9BC 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; person in motorized wheelchair facing right: light skin tone # E15.1 [1] (🧑ðŸ»â€ðŸ¦¼â€âž¡ï¸)
1F9D1 1F3FB 200D 1F9BD ; RGI_Emoji_ZWJ_Sequence ; person in manual wheelchair: light skin tone # E12.1 [1] (🧑ðŸ»â€ðŸ¦½)
+1F9D1 1F3FB 200D 1F9BD 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; person in manual wheelchair facing right: light skin tone # E15.1 [1] (🧑ðŸ»â€ðŸ¦½â€âž¡ï¸)
1F9D1 1F3FC 200D 2695 FE0F ; RGI_Emoji_ZWJ_Sequence ; health worker: medium-light skin tone # E12.1 [1] (🧑ðŸ¼â€âš•ï¸)
1F9D1 1F3FC 200D 2696 FE0F ; RGI_Emoji_ZWJ_Sequence ; judge: medium-light skin tone # E12.1 [1] (🧑ðŸ¼â€âš–ï¸)
1F9D1 1F3FC 200D 2708 FE0F ; RGI_Emoji_ZWJ_Sequence ; pilot: medium-light skin tone # E12.1 [1] (🧑ðŸ¼â€âœˆï¸)
1F9D1 1F3FC 200D 1F33E ; RGI_Emoji_ZWJ_Sequence ; farmer: medium-light skin tone # E12.1 [1] (🧑ðŸ¼â€ðŸŒ¾)
1F9D1 1F3FC 200D 1F373 ; RGI_Emoji_ZWJ_Sequence ; cook: medium-light skin tone # E12.1 [1] (🧑ðŸ¼â€ðŸ³)
1F9D1 1F3FC 200D 1F37C ; RGI_Emoji_ZWJ_Sequence ; person feeding baby: medium-light skin tone # E13.0 [1] (🧑ðŸ¼â€ðŸ¼)
+1F9D1 1F3FC 200D 1F384 ; RGI_Emoji_ZWJ_Sequence ; mx claus: medium-light skin tone # E13.0 [1] (🧑ðŸ¼â€ðŸŽ„)
1F9D1 1F3FC 200D 1F393 ; RGI_Emoji_ZWJ_Sequence ; student: medium-light skin tone # E12.1 [1] (🧑ðŸ¼â€ðŸŽ“)
1F9D1 1F3FC 200D 1F3A4 ; RGI_Emoji_ZWJ_Sequence ; singer: medium-light skin tone # E12.1 [1] (🧑ðŸ¼â€ðŸŽ¤)
1F9D1 1F3FC 200D 1F3A8 ; RGI_Emoji_ZWJ_Sequence ; artist: medium-light skin tone # E12.1 [1] (🧑ðŸ¼â€ðŸŽ¨)
@@ -664,14 +726,18 @@
1F9D1 1F3FC 200D 1F680 ; RGI_Emoji_ZWJ_Sequence ; astronaut: medium-light skin tone # E12.1 [1] (🧑ðŸ¼â€ðŸš€)
1F9D1 1F3FC 200D 1F692 ; RGI_Emoji_ZWJ_Sequence ; firefighter: medium-light skin tone # E12.1 [1] (🧑ðŸ¼â€ðŸš’)
1F9D1 1F3FC 200D 1F9AF ; RGI_Emoji_ZWJ_Sequence ; person with white cane: medium-light skin tone # E12.1 [1] (🧑ðŸ¼â€ðŸ¦¯)
+1F9D1 1F3FC 200D 1F9AF 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; person with white cane facing right: medium-light skin tone # E15.1 [1] (🧑ðŸ¼â€ðŸ¦¯â€âž¡ï¸)
1F9D1 1F3FC 200D 1F9BC ; RGI_Emoji_ZWJ_Sequence ; person in motorized wheelchair: medium-light skin tone # E12.1 [1] (🧑ðŸ¼â€ðŸ¦¼)
+1F9D1 1F3FC 200D 1F9BC 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; person in motorized wheelchair facing right: medium-light skin tone #E15.1[1] (🧑ðŸ¼â€ðŸ¦¼â€âž¡ï¸)
1F9D1 1F3FC 200D 1F9BD ; RGI_Emoji_ZWJ_Sequence ; person in manual wheelchair: medium-light skin tone # E12.1 [1] (🧑ðŸ¼â€ðŸ¦½)
+1F9D1 1F3FC 200D 1F9BD 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; person in manual wheelchair facing right: medium-light skin tone #E15.1 [1] (🧑ðŸ¼â€ðŸ¦½â€âž¡ï¸)
1F9D1 1F3FD 200D 2695 FE0F ; RGI_Emoji_ZWJ_Sequence ; health worker: medium skin tone # E12.1 [1] (🧑ðŸ½â€âš•ï¸)
1F9D1 1F3FD 200D 2696 FE0F ; RGI_Emoji_ZWJ_Sequence ; judge: medium skin tone # E12.1 [1] (🧑ðŸ½â€âš–ï¸)
1F9D1 1F3FD 200D 2708 FE0F ; RGI_Emoji_ZWJ_Sequence ; pilot: medium skin tone # E12.1 [1] (🧑ðŸ½â€âœˆï¸)
1F9D1 1F3FD 200D 1F33E ; RGI_Emoji_ZWJ_Sequence ; farmer: medium skin tone # E12.1 [1] (🧑ðŸ½â€ðŸŒ¾)
1F9D1 1F3FD 200D 1F373 ; RGI_Emoji_ZWJ_Sequence ; cook: medium skin tone # E12.1 [1] (🧑ðŸ½â€ðŸ³)
1F9D1 1F3FD 200D 1F37C ; RGI_Emoji_ZWJ_Sequence ; person feeding baby: medium skin tone # E13.0 [1] (🧑ðŸ½â€ðŸ¼)
+1F9D1 1F3FD 200D 1F384 ; RGI_Emoji_ZWJ_Sequence ; mx claus: medium skin tone # E13.0 [1] (🧑ðŸ½â€ðŸŽ„)
1F9D1 1F3FD 200D 1F393 ; RGI_Emoji_ZWJ_Sequence ; student: medium skin tone # E12.1 [1] (🧑ðŸ½â€ðŸŽ“)
1F9D1 1F3FD 200D 1F3A4 ; RGI_Emoji_ZWJ_Sequence ; singer: medium skin tone # E12.1 [1] (🧑ðŸ½â€ðŸŽ¤)
1F9D1 1F3FD 200D 1F3A8 ; RGI_Emoji_ZWJ_Sequence ; artist: medium skin tone # E12.1 [1] (🧑ðŸ½â€ðŸŽ¨)
@@ -684,14 +750,18 @@
1F9D1 1F3FD 200D 1F680 ; RGI_Emoji_ZWJ_Sequence ; astronaut: medium skin tone # E12.1 [1] (🧑ðŸ½â€ðŸš€)
1F9D1 1F3FD 200D 1F692 ; RGI_Emoji_ZWJ_Sequence ; firefighter: medium skin tone # E12.1 [1] (🧑ðŸ½â€ðŸš’)
1F9D1 1F3FD 200D 1F9AF ; RGI_Emoji_ZWJ_Sequence ; person with white cane: medium skin tone # E12.1 [1] (🧑ðŸ½â€ðŸ¦¯)
+1F9D1 1F3FD 200D 1F9AF 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; person with white cane facing right: medium skin tone # E15.1 [1] (🧑ðŸ½â€ðŸ¦¯â€âž¡ï¸)
1F9D1 1F3FD 200D 1F9BC ; RGI_Emoji_ZWJ_Sequence ; person in motorized wheelchair: medium skin tone # E12.1 [1] (🧑ðŸ½â€ðŸ¦¼)
+1F9D1 1F3FD 200D 1F9BC 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; person in motorized wheelchair facing right: medium skin tone # E15.1 [1] (🧑ðŸ½â€ðŸ¦¼â€âž¡ï¸)
1F9D1 1F3FD 200D 1F9BD ; RGI_Emoji_ZWJ_Sequence ; person in manual wheelchair: medium skin tone # E12.1 [1] (🧑ðŸ½â€ðŸ¦½)
+1F9D1 1F3FD 200D 1F9BD 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; person in manual wheelchair facing right: medium skin tone # E15.1 [1] (🧑ðŸ½â€ðŸ¦½â€âž¡ï¸)
1F9D1 1F3FE 200D 2695 FE0F ; RGI_Emoji_ZWJ_Sequence ; health worker: medium-dark skin tone # E12.1 [1] (🧑ðŸ¾â€âš•ï¸)
1F9D1 1F3FE 200D 2696 FE0F ; RGI_Emoji_ZWJ_Sequence ; judge: medium-dark skin tone # E12.1 [1] (🧑ðŸ¾â€âš–ï¸)
1F9D1 1F3FE 200D 2708 FE0F ; RGI_Emoji_ZWJ_Sequence ; pilot: medium-dark skin tone # E12.1 [1] (🧑ðŸ¾â€âœˆï¸)
1F9D1 1F3FE 200D 1F33E ; RGI_Emoji_ZWJ_Sequence ; farmer: medium-dark skin tone # E12.1 [1] (🧑ðŸ¾â€ðŸŒ¾)
1F9D1 1F3FE 200D 1F373 ; RGI_Emoji_ZWJ_Sequence ; cook: medium-dark skin tone # E12.1 [1] (🧑ðŸ¾â€ðŸ³)
1F9D1 1F3FE 200D 1F37C ; RGI_Emoji_ZWJ_Sequence ; person feeding baby: medium-dark skin tone # E13.0 [1] (🧑ðŸ¾â€ðŸ¼)
+1F9D1 1F3FE 200D 1F384 ; RGI_Emoji_ZWJ_Sequence ; mx claus: medium-dark skin tone # E13.0 [1] (🧑ðŸ¾â€ðŸŽ„)
1F9D1 1F3FE 200D 1F393 ; RGI_Emoji_ZWJ_Sequence ; student: medium-dark skin tone # E12.1 [1] (🧑ðŸ¾â€ðŸŽ“)
1F9D1 1F3FE 200D 1F3A4 ; RGI_Emoji_ZWJ_Sequence ; singer: medium-dark skin tone # E12.1 [1] (🧑ðŸ¾â€ðŸŽ¤)
1F9D1 1F3FE 200D 1F3A8 ; RGI_Emoji_ZWJ_Sequence ; artist: medium-dark skin tone # E12.1 [1] (🧑ðŸ¾â€ðŸŽ¨)
@@ -704,14 +774,18 @@
1F9D1 1F3FE 200D 1F680 ; RGI_Emoji_ZWJ_Sequence ; astronaut: medium-dark skin tone # E12.1 [1] (🧑ðŸ¾â€ðŸš€)
1F9D1 1F3FE 200D 1F692 ; RGI_Emoji_ZWJ_Sequence ; firefighter: medium-dark skin tone # E12.1 [1] (🧑ðŸ¾â€ðŸš’)
1F9D1 1F3FE 200D 1F9AF ; RGI_Emoji_ZWJ_Sequence ; person with white cane: medium-dark skin tone # E12.1 [1] (🧑ðŸ¾â€ðŸ¦¯)
+1F9D1 1F3FE 200D 1F9AF 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; person with white cane facing right: medium-dark skin tone # E15.1 [1] (🧑ðŸ¾â€ðŸ¦¯â€âž¡ï¸)
1F9D1 1F3FE 200D 1F9BC ; RGI_Emoji_ZWJ_Sequence ; person in motorized wheelchair: medium-dark skin tone # E12.1 [1] (🧑ðŸ¾â€ðŸ¦¼)
+1F9D1 1F3FE 200D 1F9BC 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; person in motorized wheelchair facing right: medium-dark skin tone #E15.1[1] (🧑ðŸ¾â€ðŸ¦¼â€âž¡ï¸)
1F9D1 1F3FE 200D 1F9BD ; RGI_Emoji_ZWJ_Sequence ; person in manual wheelchair: medium-dark skin tone # E12.1 [1] (🧑ðŸ¾â€ðŸ¦½)
+1F9D1 1F3FE 200D 1F9BD 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; person in manual wheelchair facing right: medium-dark skin tone #E15.1 [1] (🧑ðŸ¾â€ðŸ¦½â€âž¡ï¸)
1F9D1 1F3FF 200D 2695 FE0F ; RGI_Emoji_ZWJ_Sequence ; health worker: dark skin tone # E12.1 [1] (🧑ðŸ¿â€âš•ï¸)
1F9D1 1F3FF 200D 2696 FE0F ; RGI_Emoji_ZWJ_Sequence ; judge: dark skin tone # E12.1 [1] (🧑ðŸ¿â€âš–ï¸)
1F9D1 1F3FF 200D 2708 FE0F ; RGI_Emoji_ZWJ_Sequence ; pilot: dark skin tone # E12.1 [1] (🧑ðŸ¿â€âœˆï¸)
1F9D1 1F3FF 200D 1F33E ; RGI_Emoji_ZWJ_Sequence ; farmer: dark skin tone # E12.1 [1] (🧑ðŸ¿â€ðŸŒ¾)
1F9D1 1F3FF 200D 1F373 ; RGI_Emoji_ZWJ_Sequence ; cook: dark skin tone # E12.1 [1] (🧑ðŸ¿â€ðŸ³)
1F9D1 1F3FF 200D 1F37C ; RGI_Emoji_ZWJ_Sequence ; person feeding baby: dark skin tone # E13.0 [1] (🧑ðŸ¿â€ðŸ¼)
+1F9D1 1F3FF 200D 1F384 ; RGI_Emoji_ZWJ_Sequence ; mx claus: dark skin tone # E13.0 [1] (🧑ðŸ¿â€ðŸŽ„)
1F9D1 1F3FF 200D 1F393 ; RGI_Emoji_ZWJ_Sequence ; student: dark skin tone # E12.1 [1] (🧑ðŸ¿â€ðŸŽ“)
1F9D1 1F3FF 200D 1F3A4 ; RGI_Emoji_ZWJ_Sequence ; singer: dark skin tone # E12.1 [1] (🧑ðŸ¿â€ðŸŽ¤)
1F9D1 1F3FF 200D 1F3A8 ; RGI_Emoji_ZWJ_Sequence ; artist: dark skin tone # E12.1 [1] (🧑ðŸ¿â€ðŸŽ¨)
@@ -724,10 +798,13 @@
1F9D1 1F3FF 200D 1F680 ; RGI_Emoji_ZWJ_Sequence ; astronaut: dark skin tone # E12.1 [1] (🧑ðŸ¿â€ðŸš€)
1F9D1 1F3FF 200D 1F692 ; RGI_Emoji_ZWJ_Sequence ; firefighter: dark skin tone # E12.1 [1] (🧑ðŸ¿â€ðŸš’)
1F9D1 1F3FF 200D 1F9AF ; RGI_Emoji_ZWJ_Sequence ; person with white cane: dark skin tone # E12.1 [1] (🧑ðŸ¿â€ðŸ¦¯)
+1F9D1 1F3FF 200D 1F9AF 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; person with white cane facing right: dark skin tone # E15.1 [1] (🧑ðŸ¿â€ðŸ¦¯â€âž¡ï¸)
1F9D1 1F3FF 200D 1F9BC ; RGI_Emoji_ZWJ_Sequence ; person in motorized wheelchair: dark skin tone # E12.1 [1] (🧑ðŸ¿â€ðŸ¦¼)
+1F9D1 1F3FF 200D 1F9BC 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; person in motorized wheelchair facing right: dark skin tone # E15.1 [1] (🧑ðŸ¿â€ðŸ¦¼â€âž¡ï¸)
1F9D1 1F3FF 200D 1F9BD ; RGI_Emoji_ZWJ_Sequence ; person in manual wheelchair: dark skin tone # E12.1 [1] (🧑ðŸ¿â€ðŸ¦½)
+1F9D1 1F3FF 200D 1F9BD 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; person in manual wheelchair facing right: dark skin tone # E15.1 [1] (🧑ðŸ¿â€ðŸ¦½â€âž¡ï¸)
-# Total elements: 360
+# Total elements: 438
# ================================================
@@ -746,17 +823,29 @@
26F9 FE0F 200D 2640 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman bouncing ball # E4.0 [1] (⛹ï¸â€â™€ï¸)
26F9 FE0F 200D 2642 FE0F ; RGI_Emoji_ZWJ_Sequence ; man bouncing ball # E4.0 [1] (⛹ï¸â€â™‚ï¸)
1F3C3 200D 2640 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman running # E4.0 [1] (ðŸƒâ€â™€ï¸)
+1F3C3 200D 2640 FE0F 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman running facing right # E15.1 [1] (ðŸƒâ€â™€ï¸â€âž¡ï¸)
1F3C3 200D 2642 FE0F ; RGI_Emoji_ZWJ_Sequence ; man running # E4.0 [1] (ðŸƒâ€â™‚ï¸)
+1F3C3 200D 2642 FE0F 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; man running facing right # E15.1 [1] (ðŸƒâ€â™‚ï¸â€âž¡ï¸)
1F3C3 1F3FB 200D 2640 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman running: light skin tone # E4.0 [1] (ðŸƒðŸ»â€â™€ï¸)
+1F3C3 1F3FB 200D 2640 FE0F 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman running facing right: light skin tone # E15.1 [1] (ðŸƒðŸ»â€â™€ï¸â€âž¡ï¸)
1F3C3 1F3FB 200D 2642 FE0F ; RGI_Emoji_ZWJ_Sequence ; man running: light skin tone # E4.0 [1] (ðŸƒðŸ»â€â™‚ï¸)
+1F3C3 1F3FB 200D 2642 FE0F 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; man running facing right: light skin tone # E15.1 [1] (ðŸƒðŸ»â€â™‚ï¸â€âž¡ï¸)
1F3C3 1F3FC 200D 2640 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman running: medium-light skin tone # E4.0 [1] (ðŸƒðŸ¼â€â™€ï¸)
+1F3C3 1F3FC 200D 2640 FE0F 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman running facing right: medium-light skin tone # E15.1 [1] (ðŸƒðŸ¼â€â™€ï¸â€âž¡ï¸)
1F3C3 1F3FC 200D 2642 FE0F ; RGI_Emoji_ZWJ_Sequence ; man running: medium-light skin tone # E4.0 [1] (ðŸƒðŸ¼â€â™‚ï¸)
+1F3C3 1F3FC 200D 2642 FE0F 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; man running facing right: medium-light skin tone # E15.1 [1] (ðŸƒðŸ¼â€â™‚ï¸â€âž¡ï¸)
1F3C3 1F3FD 200D 2640 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman running: medium skin tone # E4.0 [1] (ðŸƒðŸ½â€â™€ï¸)
+1F3C3 1F3FD 200D 2640 FE0F 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman running facing right: medium skin tone # E15.1 [1] (ðŸƒðŸ½â€â™€ï¸â€âž¡ï¸)
1F3C3 1F3FD 200D 2642 FE0F ; RGI_Emoji_ZWJ_Sequence ; man running: medium skin tone # E4.0 [1] (ðŸƒðŸ½â€â™‚ï¸)
+1F3C3 1F3FD 200D 2642 FE0F 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; man running facing right: medium skin tone # E15.1 [1] (ðŸƒðŸ½â€â™‚ï¸â€âž¡ï¸)
1F3C3 1F3FE 200D 2640 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman running: medium-dark skin tone # E4.0 [1] (ðŸƒðŸ¾â€â™€ï¸)
+1F3C3 1F3FE 200D 2640 FE0F 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman running facing right: medium-dark skin tone # E15.1 [1] (ðŸƒðŸ¾â€â™€ï¸â€âž¡ï¸)
1F3C3 1F3FE 200D 2642 FE0F ; RGI_Emoji_ZWJ_Sequence ; man running: medium-dark skin tone # E4.0 [1] (ðŸƒðŸ¾â€â™‚ï¸)
+1F3C3 1F3FE 200D 2642 FE0F 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; man running facing right: medium-dark skin tone # E15.1 [1] (ðŸƒðŸ¾â€â™‚ï¸â€âž¡ï¸)
1F3C3 1F3FF 200D 2640 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman running: dark skin tone # E4.0 [1] (ðŸƒðŸ¿â€â™€ï¸)
+1F3C3 1F3FF 200D 2640 FE0F 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman running facing right: dark skin tone # E15.1 [1] (ðŸƒðŸ¿â€â™€ï¸â€âž¡ï¸)
1F3C3 1F3FF 200D 2642 FE0F ; RGI_Emoji_ZWJ_Sequence ; man running: dark skin tone # E4.0 [1] (ðŸƒðŸ¿â€â™‚ï¸)
+1F3C3 1F3FF 200D 2642 FE0F 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; man running facing right: dark skin tone # E15.1 [1] (ðŸƒðŸ¿â€â™‚ï¸â€âž¡ï¸)
1F3C4 200D 2640 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman surfing # E4.0 [1] (ðŸ„â€â™€ï¸)
1F3C4 200D 2642 FE0F ; RGI_Emoji_ZWJ_Sequence ; man surfing # E4.0 [1] (ðŸ„â€â™‚ï¸)
1F3C4 1F3FB 200D 2640 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman surfing: light skin tone # E4.0 [1] (ðŸ„ðŸ»â€â™€ï¸)
@@ -1036,17 +1125,29 @@
1F6B5 1F3FF 200D 2640 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman mountain biking: dark skin tone # E4.0 [1] (🚵ðŸ¿â€â™€ï¸)
1F6B5 1F3FF 200D 2642 FE0F ; RGI_Emoji_ZWJ_Sequence ; man mountain biking: dark skin tone # E4.0 [1] (🚵ðŸ¿â€â™‚ï¸)
1F6B6 200D 2640 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman walking # E4.0 [1] (🚶â€â™€ï¸)
+1F6B6 200D 2640 FE0F 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman walking facing right # E15.1 [1] (🚶â€â™€ï¸â€âž¡ï¸)
1F6B6 200D 2642 FE0F ; RGI_Emoji_ZWJ_Sequence ; man walking # E4.0 [1] (🚶â€â™‚ï¸)
+1F6B6 200D 2642 FE0F 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; man walking facing right # E15.1 [1] (🚶â€â™‚ï¸â€âž¡ï¸)
1F6B6 1F3FB 200D 2640 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman walking: light skin tone # E4.0 [1] (🚶ðŸ»â€â™€ï¸)
+1F6B6 1F3FB 200D 2640 FE0F 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman walking facing right: light skin tone # E15.1 [1] (🚶ðŸ»â€â™€ï¸â€âž¡ï¸)
1F6B6 1F3FB 200D 2642 FE0F ; RGI_Emoji_ZWJ_Sequence ; man walking: light skin tone # E4.0 [1] (🚶ðŸ»â€â™‚ï¸)
+1F6B6 1F3FB 200D 2642 FE0F 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; man walking facing right: light skin tone # E15.1 [1] (🚶ðŸ»â€â™‚ï¸â€âž¡ï¸)
1F6B6 1F3FC 200D 2640 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman walking: medium-light skin tone # E4.0 [1] (🚶ðŸ¼â€â™€ï¸)
+1F6B6 1F3FC 200D 2640 FE0F 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman walking facing right: medium-light skin tone # E15.1 [1] (🚶ðŸ¼â€â™€ï¸â€âž¡ï¸)
1F6B6 1F3FC 200D 2642 FE0F ; RGI_Emoji_ZWJ_Sequence ; man walking: medium-light skin tone # E4.0 [1] (🚶ðŸ¼â€â™‚ï¸)
+1F6B6 1F3FC 200D 2642 FE0F 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; man walking facing right: medium-light skin tone # E15.1 [1] (🚶ðŸ¼â€â™‚ï¸â€âž¡ï¸)
1F6B6 1F3FD 200D 2640 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman walking: medium skin tone # E4.0 [1] (🚶ðŸ½â€â™€ï¸)
+1F6B6 1F3FD 200D 2640 FE0F 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman walking facing right: medium skin tone # E15.1 [1] (🚶ðŸ½â€â™€ï¸â€âž¡ï¸)
1F6B6 1F3FD 200D 2642 FE0F ; RGI_Emoji_ZWJ_Sequence ; man walking: medium skin tone # E4.0 [1] (🚶ðŸ½â€â™‚ï¸)
+1F6B6 1F3FD 200D 2642 FE0F 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; man walking facing right: medium skin tone # E15.1 [1] (🚶ðŸ½â€â™‚ï¸â€âž¡ï¸)
1F6B6 1F3FE 200D 2640 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman walking: medium-dark skin tone # E4.0 [1] (🚶ðŸ¾â€â™€ï¸)
+1F6B6 1F3FE 200D 2640 FE0F 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman walking facing right: medium-dark skin tone # E15.1 [1] (🚶ðŸ¾â€â™€ï¸â€âž¡ï¸)
1F6B6 1F3FE 200D 2642 FE0F ; RGI_Emoji_ZWJ_Sequence ; man walking: medium-dark skin tone # E4.0 [1] (🚶ðŸ¾â€â™‚ï¸)
+1F6B6 1F3FE 200D 2642 FE0F 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; man walking facing right: medium-dark skin tone # E15.1 [1] (🚶ðŸ¾â€â™‚ï¸â€âž¡ï¸)
1F6B6 1F3FF 200D 2640 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman walking: dark skin tone # E4.0 [1] (🚶ðŸ¿â€â™€ï¸)
+1F6B6 1F3FF 200D 2640 FE0F 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman walking facing right: dark skin tone # E15.1 [1] (🚶ðŸ¿â€â™€ï¸â€âž¡ï¸)
1F6B6 1F3FF 200D 2642 FE0F ; RGI_Emoji_ZWJ_Sequence ; man walking: dark skin tone # E4.0 [1] (🚶ðŸ¿â€â™‚ï¸)
+1F6B6 1F3FF 200D 2642 FE0F 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; man walking facing right: dark skin tone # E15.1 [1] (🚶ðŸ¿â€â™‚ï¸â€âž¡ï¸)
1F926 200D 2640 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman facepalming # E4.0 [1] (🤦â€â™€ï¸)
1F926 200D 2642 FE0F ; RGI_Emoji_ZWJ_Sequence ; man facepalming # E4.0 [1] (🤦â€â™‚ï¸)
1F926 1F3FB 200D 2640 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman facepalming: light skin tone # E4.0 [1] (🤦ðŸ»â€â™€ï¸)
@@ -1170,17 +1271,29 @@
1F9CD 1F3FF 200D 2640 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman standing: dark skin tone # E12.0 [1] (ðŸ§ðŸ¿â€â™€ï¸)
1F9CD 1F3FF 200D 2642 FE0F ; RGI_Emoji_ZWJ_Sequence ; man standing: dark skin tone # E12.0 [1] (ðŸ§ðŸ¿â€â™‚ï¸)
1F9CE 200D 2640 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman kneeling # E12.0 [1] (🧎â€â™€ï¸)
+1F9CE 200D 2640 FE0F 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman kneeling facing right # E15.1 [1] (🧎â€â™€ï¸â€âž¡ï¸)
1F9CE 200D 2642 FE0F ; RGI_Emoji_ZWJ_Sequence ; man kneeling # E12.0 [1] (🧎â€â™‚ï¸)
+1F9CE 200D 2642 FE0F 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; man kneeling facing right # E15.1 [1] (🧎â€â™‚ï¸â€âž¡ï¸)
1F9CE 1F3FB 200D 2640 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman kneeling: light skin tone # E12.0 [1] (🧎ðŸ»â€â™€ï¸)
+1F9CE 1F3FB 200D 2640 FE0F 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman kneeling facing right: light skin tone # E15.1 [1] (🧎ðŸ»â€â™€ï¸â€âž¡ï¸)
1F9CE 1F3FB 200D 2642 FE0F ; RGI_Emoji_ZWJ_Sequence ; man kneeling: light skin tone # E12.0 [1] (🧎ðŸ»â€â™‚ï¸)
+1F9CE 1F3FB 200D 2642 FE0F 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; man kneeling facing right: light skin tone # E15.1 [1] (🧎ðŸ»â€â™‚ï¸â€âž¡ï¸)
1F9CE 1F3FC 200D 2640 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman kneeling: medium-light skin tone # E12.0 [1] (🧎ðŸ¼â€â™€ï¸)
+1F9CE 1F3FC 200D 2640 FE0F 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman kneeling facing right: medium-light skin tone # E15.1 [1] (🧎ðŸ¼â€â™€ï¸â€âž¡ï¸)
1F9CE 1F3FC 200D 2642 FE0F ; RGI_Emoji_ZWJ_Sequence ; man kneeling: medium-light skin tone # E12.0 [1] (🧎ðŸ¼â€â™‚ï¸)
+1F9CE 1F3FC 200D 2642 FE0F 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; man kneeling facing right: medium-light skin tone # E15.1 [1] (🧎ðŸ¼â€â™‚ï¸â€âž¡ï¸)
1F9CE 1F3FD 200D 2640 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman kneeling: medium skin tone # E12.0 [1] (🧎ðŸ½â€â™€ï¸)
+1F9CE 1F3FD 200D 2640 FE0F 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman kneeling facing right: medium skin tone # E15.1 [1] (🧎ðŸ½â€â™€ï¸â€âž¡ï¸)
1F9CE 1F3FD 200D 2642 FE0F ; RGI_Emoji_ZWJ_Sequence ; man kneeling: medium skin tone # E12.0 [1] (🧎ðŸ½â€â™‚ï¸)
+1F9CE 1F3FD 200D 2642 FE0F 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; man kneeling facing right: medium skin tone # E15.1 [1] (🧎ðŸ½â€â™‚ï¸â€âž¡ï¸)
1F9CE 1F3FE 200D 2640 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman kneeling: medium-dark skin tone # E12.0 [1] (🧎ðŸ¾â€â™€ï¸)
+1F9CE 1F3FE 200D 2640 FE0F 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman kneeling facing right: medium-dark skin tone # E15.1 [1] (🧎ðŸ¾â€â™€ï¸â€âž¡ï¸)
1F9CE 1F3FE 200D 2642 FE0F ; RGI_Emoji_ZWJ_Sequence ; man kneeling: medium-dark skin tone # E12.0 [1] (🧎ðŸ¾â€â™‚ï¸)
+1F9CE 1F3FE 200D 2642 FE0F 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; man kneeling facing right: medium-dark skin tone # E15.1 [1] (🧎ðŸ¾â€â™‚ï¸â€âž¡ï¸)
1F9CE 1F3FF 200D 2640 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman kneeling: dark skin tone # E12.0 [1] (🧎ðŸ¿â€â™€ï¸)
+1F9CE 1F3FF 200D 2640 FE0F 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman kneeling facing right: dark skin tone # E15.1 [1] (🧎ðŸ¿â€â™€ï¸â€âž¡ï¸)
1F9CE 1F3FF 200D 2642 FE0F ; RGI_Emoji_ZWJ_Sequence ; man kneeling: dark skin tone # E12.0 [1] (🧎ðŸ¿â€â™‚ï¸)
+1F9CE 1F3FF 200D 2642 FE0F 200D 27A1 FE0F ; RGI_Emoji_ZWJ_Sequence ; man kneeling facing right: dark skin tone # E15.1 [1] (🧎ðŸ¿â€â™‚ï¸â€âž¡ï¸)
1F9CF 200D 2640 FE0F ; RGI_Emoji_ZWJ_Sequence ; deaf woman # E12.0 [1] (ðŸ§â€â™€ï¸)
1F9CF 200D 2642 FE0F ; RGI_Emoji_ZWJ_Sequence ; deaf man # E12.0 [1] (ðŸ§â€â™‚ï¸)
1F9CF 1F3FB 200D 2640 FE0F ; RGI_Emoji_ZWJ_Sequence ; deaf woman: light skin tone # E12.0 [1] (ðŸ§ðŸ»â€â™€ï¸)
@@ -1306,7 +1419,7 @@
1F9DF 200D 2640 FE0F ; RGI_Emoji_ZWJ_Sequence ; woman zombie # E5.0 [1] (🧟â€â™€ï¸)
1F9DF 200D 2642 FE0F ; RGI_Emoji_ZWJ_Sequence ; man zombie # E5.0 [1] (🧟â€â™‚ï¸)
-# Total elements: 572
+# Total elements: 608
# ================================================
@@ -1391,21 +1504,26 @@
# RGI_Emoji_ZWJ_Sequence: Other
+26D3 FE0F 200D 1F4A5 ; RGI_Emoji_ZWJ_Sequence ; broken chain # E15.1 [1] (⛓ï¸â€ðŸ’¥)
2764 FE0F 200D 1F525 ; RGI_Emoji_ZWJ_Sequence ; heart on fire # E13.1 [1] (â¤ï¸â€ðŸ”¥)
2764 FE0F 200D 1FA79 ; RGI_Emoji_ZWJ_Sequence ; mending heart # E13.1 [1] (â¤ï¸â€ðŸ©¹)
+1F344 200D 1F7EB ; RGI_Emoji_ZWJ_Sequence ; brown mushroom # E15.1 [1] (ðŸ„â€ðŸŸ«)
+1F34B 200D 1F7E9 ; RGI_Emoji_ZWJ_Sequence ; lime # E15.1 [1] (ðŸ‹â€ðŸŸ©)
1F3F3 FE0F 200D 26A7 FE0F ; RGI_Emoji_ZWJ_Sequence ; transgender flag # E13.0 [1] (ðŸ³ï¸â€âš§ï¸)
1F3F3 FE0F 200D 1F308 ; RGI_Emoji_ZWJ_Sequence ; rainbow flag # E4.0 [1] (ðŸ³ï¸â€ðŸŒˆ)
1F3F4 200D 2620 FE0F ; RGI_Emoji_ZWJ_Sequence ; pirate flag # E11.0 [1] (ðŸ´â€â˜ ï¸)
1F408 200D 2B1B ; RGI_Emoji_ZWJ_Sequence ; black cat # E13.0 [1] (ðŸˆâ€â¬›)
1F415 200D 1F9BA ; RGI_Emoji_ZWJ_Sequence ; service dog # E12.0 [1] (ðŸ•â€ðŸ¦º)
1F426 200D 2B1B ; RGI_Emoji_ZWJ_Sequence ; black bird # E15.0 [1] (ðŸ¦â€â¬›)
+1F426 200D 1F525 ; RGI_Emoji_ZWJ_Sequence ; phoenix # E15.1 [1] (ðŸ¦â€ðŸ”¥)
1F43B 200D 2744 FE0F ; RGI_Emoji_ZWJ_Sequence ; polar bear # E13.0 [1] (ðŸ»â€â„ï¸)
1F441 FE0F 200D 1F5E8 FE0F ; RGI_Emoji_ZWJ_Sequence ; eye in speech bubble # E2.0 [1] (ðŸ‘ï¸â€ðŸ—¨ï¸)
1F62E 200D 1F4A8 ; RGI_Emoji_ZWJ_Sequence ; face exhaling # E13.1 [1] (😮â€ðŸ’¨)
1F635 200D 1F4AB ; RGI_Emoji_ZWJ_Sequence ; face with spiral eyes # E13.1 [1] (😵â€ðŸ’«)
1F636 200D 1F32B FE0F ; RGI_Emoji_ZWJ_Sequence ; face in clouds # E13.1 [1] (😶â€ðŸŒ«ï¸)
-1F9D1 200D 1F384 ; RGI_Emoji_ZWJ_Sequence ; mx claus # E13.0 [1] (🧑â€ðŸŽ„)
+1F642 200D 2194 FE0F ; RGI_Emoji_ZWJ_Sequence ; head shaking horizontally # E15.1 [1] (🙂â€â†”ï¸)
+1F642 200D 2195 FE0F ; RGI_Emoji_ZWJ_Sequence ; head shaking vertically # E15.1 [1] (🙂â€â†•ï¸)
-# Total elements: 14
+# Total elements: 19
#EOF
diff --git a/Build/source/libs/icu/icu-src/source/data/unidata/generate.sh b/Build/source/libs/icu/icu-src/source/data/unidata/generate.sh
index f13492b2dd6..bbea1aeeb12 100755
--- a/Build/source/libs/icu/icu-src/source/data/unidata/generate.sh
+++ b/Build/source/libs/icu/icu-src/source/data/unidata/generate.sh
@@ -35,6 +35,7 @@ bazelisk run //icu4c/source/tools/gennorm2 -- -o $ICU4C_COMMON/norm2_nfc_data.h
bazelisk run //icu4c/source/tools/gennorm2 -- -o $ICU4C_DATA_IN/nfc.nrm -s $ICU4C_NORM2 nfc.txt
bazelisk run //icu4c/source/tools/gennorm2 -- -o $ICU4C_DATA_IN/nfkc.nrm -s $ICU4C_NORM2 nfc.txt nfkc.txt
bazelisk run //icu4c/source/tools/gennorm2 -- -o $ICU4C_DATA_IN/nfkc_cf.nrm -s $ICU4C_NORM2 nfc.txt nfkc.txt nfkc_cf.txt
+bazelisk run //icu4c/source/tools/gennorm2 -- -o $ICU4C_DATA_IN/nfkc_scf.nrm -s $ICU4C_NORM2 nfc.txt nfkc.txt nfkc_scf.txt
bazelisk run //icu4c/source/tools/gennorm2 -- -o $ICU4C_DATA_IN/uts46.nrm -s $ICU4C_NORM2 nfc.txt uts46.txt
# genprops writes several files directly into the source tree.
diff --git a/Build/source/libs/icu/icu-src/source/data/unidata/norm2/BUILD.bazel b/Build/source/libs/icu/icu-src/source/data/unidata/norm2/BUILD.bazel
index 049e19bd41a..06e054ea355 100644
--- a/Build/source/libs/icu/icu-src/source/data/unidata/norm2/BUILD.bazel
+++ b/Build/source/libs/icu/icu-src/source/data/unidata/norm2/BUILD.bazel
@@ -9,5 +9,5 @@ package(
)
exports_files([
- "nfc.txt", "nfkc.txt", "nfkc_cf.txt", "uts46.txt",
+ "nfc.txt", "nfkc.txt", "nfkc_cf.txt", "nfkc_scf.txt", "uts46.txt",
])
diff --git a/Build/source/libs/icu/icu-src/source/data/unidata/norm2/nfc.txt b/Build/source/libs/icu/icu-src/source/data/unidata/norm2/nfc.txt
index dcf35f8fece..7b36667eab0 100644
--- a/Build/source/libs/icu/icu-src/source/data/unidata/norm2/nfc.txt
+++ b/Build/source/libs/icu/icu-src/source/data/unidata/norm2/nfc.txt
@@ -9,7 +9,7 @@
#
# Complete data for Unicode NFC normalization.
-* Unicode 15.0.0
+* Unicode 15.1.0
# Canonical_Combining_Class (ccc) values
0300..0314:230
diff --git a/Build/source/libs/icu/icu-src/source/data/unidata/norm2/nfkc.txt b/Build/source/libs/icu/icu-src/source/data/unidata/norm2/nfkc.txt
index 7d2f642e3a6..8ff8d7f84b7 100644
--- a/Build/source/libs/icu/icu-src/source/data/unidata/norm2/nfkc.txt
+++ b/Build/source/libs/icu/icu-src/source/data/unidata/norm2/nfkc.txt
@@ -13,7 +13,7 @@
# to NFKC one-way mappings.
# Use this file as the second gennorm2 input file after nfc.txt.
-* Unicode 15.0.0
+* Unicode 15.1.0
00A0>0020
00A8>0020 0308
diff --git a/Build/source/libs/icu/icu-src/source/data/unidata/norm2/nfkc_cf.txt b/Build/source/libs/icu/icu-src/source/data/unidata/norm2/nfkc_cf.txt
index 8c5deec0035..34a6f248d7a 100644
--- a/Build/source/libs/icu/icu-src/source/data/unidata/norm2/nfkc_cf.txt
+++ b/Build/source/libs/icu/icu-src/source/data/unidata/norm2/nfkc_cf.txt
@@ -12,7 +12,7 @@
# and reformatted into syntax for the gennorm2 Normalizer2 data generator tool.
# Use this file as the third gennorm2 input file after nfc.txt and nfkc.txt.
-* Unicode 15.0.0
+* Unicode 15.1.0
0041>0061
0042>0062
diff --git a/Build/source/libs/icu/icu-src/source/data/unidata/norm2/nfkc_scf.txt b/Build/source/libs/icu/icu-src/source/data/unidata/norm2/nfkc_scf.txt
new file mode 100644
index 00000000000..df512654b2d
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/data/unidata/norm2/nfkc_scf.txt
@@ -0,0 +1,6071 @@
+# Copyright (C) 2016 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+# Copyright (C) 1999-2016, International Business Machines
+# Corporation and others. All Rights Reserved.
+#
+# file name: nfkc_scf.txt
+#
+# machine-generated by ICU preparseucd.py
+#
+# This file contains the Unicode NFKC_SCF mappings,
+# extracted from the UCD file DerivedNormalizationProps.txt,
+# and reformatted into syntax for the gennorm2 Normalizer2 data generator tool.
+# Use this file as the third gennorm2 input file after nfc.txt and nfkc.txt.
+
+* Unicode 15.1.0
+
+# Each of these maps to itself.
+0130-
+1F80..1F87-
+1F90..1F97-
+1FA0..1FA7-
+1FB2..1FB4-
+1FB7-
+1FC2..1FC4-
+1FC7-
+1FF2..1FF4-
+1FF7-
+
+0041>0061
+0042>0062
+0043>0063
+0044>0064
+0045>0065
+0046>0066
+0047>0067
+0048>0068
+0049>0069
+004A>006A
+004B>006B
+004C>006C
+004D>006D
+004E>006E
+004F>006F
+0050>0070
+0051>0071
+0052>0072
+0053>0073
+0054>0074
+0055>0075
+0056>0076
+0057>0077
+0058>0078
+0059>0079
+005A>007A
+00A0>0020
+00A8>0020 0308
+00AA>0061
+00AD>
+00AF>0020 0304
+00B2>0032
+00B3>0033
+00B4>0020 0301
+00B5>03BC
+00B8>0020 0327
+00B9>0031
+00BA>006F
+00BC>0031 2044 0034
+00BD>0031 2044 0032
+00BE>0033 2044 0034
+00C0>00E0
+00C1>00E1
+00C2>00E2
+00C3>00E3
+00C4>00E4
+00C5>00E5
+00C6>00E6
+00C7>00E7
+00C8>00E8
+00C9>00E9
+00CA>00EA
+00CB>00EB
+00CC>00EC
+00CD>00ED
+00CE>00EE
+00CF>00EF
+00D0>00F0
+00D1>00F1
+00D2>00F2
+00D3>00F3
+00D4>00F4
+00D5>00F5
+00D6>00F6
+00D8>00F8
+00D9>00F9
+00DA>00FA
+00DB>00FB
+00DC>00FC
+00DD>00FD
+00DE>00FE
+0100>0101
+0102>0103
+0104>0105
+0106>0107
+0108>0109
+010A>010B
+010C>010D
+010E>010F
+0110>0111
+0112>0113
+0114>0115
+0116>0117
+0118>0119
+011A>011B
+011C>011D
+011E>011F
+0120>0121
+0122>0123
+0124>0125
+0126>0127
+0128>0129
+012A>012B
+012C>012D
+012E>012F
+0132..0133>0069 006A
+0134>0135
+0136>0137
+0139>013A
+013B>013C
+013D>013E
+013F..0140>006C 00B7
+0141>0142
+0143>0144
+0145>0146
+0147>0148
+0149>02BC 006E
+014A>014B
+014C>014D
+014E>014F
+0150>0151
+0152>0153
+0154>0155
+0156>0157
+0158>0159
+015A>015B
+015C>015D
+015E>015F
+0160>0161
+0162>0163
+0164>0165
+0166>0167
+0168>0169
+016A>016B
+016C>016D
+016E>016F
+0170>0171
+0172>0173
+0174>0175
+0176>0177
+0178>00FF
+0179>017A
+017B>017C
+017D>017E
+017F>0073
+0181>0253
+0182>0183
+0184>0185
+0186>0254
+0187>0188
+0189>0256
+018A>0257
+018B>018C
+018E>01DD
+018F>0259
+0190>025B
+0191>0192
+0193>0260
+0194>0263
+0196>0269
+0197>0268
+0198>0199
+019C>026F
+019D>0272
+019F>0275
+01A0>01A1
+01A2>01A3
+01A4>01A5
+01A6>0280
+01A7>01A8
+01A9>0283
+01AC>01AD
+01AE>0288
+01AF>01B0
+01B1>028A
+01B2>028B
+01B3>01B4
+01B5>01B6
+01B7>0292
+01B8>01B9
+01BC>01BD
+01C4..01C6>0064 017E
+01C7..01C9>006C 006A
+01CA..01CC>006E 006A
+01CD>01CE
+01CF>01D0
+01D1>01D2
+01D3>01D4
+01D5>01D6
+01D7>01D8
+01D9>01DA
+01DB>01DC
+01DE>01DF
+01E0>01E1
+01E2>01E3
+01E4>01E5
+01E6>01E7
+01E8>01E9
+01EA>01EB
+01EC>01ED
+01EE>01EF
+01F1..01F3>0064 007A
+01F4>01F5
+01F6>0195
+01F7>01BF
+01F8>01F9
+01FA>01FB
+01FC>01FD
+01FE>01FF
+0200>0201
+0202>0203
+0204>0205
+0206>0207
+0208>0209
+020A>020B
+020C>020D
+020E>020F
+0210>0211
+0212>0213
+0214>0215
+0216>0217
+0218>0219
+021A>021B
+021C>021D
+021E>021F
+0220>019E
+0222>0223
+0224>0225
+0226>0227
+0228>0229
+022A>022B
+022C>022D
+022E>022F
+0230>0231
+0232>0233
+023A>2C65
+023B>023C
+023D>019A
+023E>2C66
+0241>0242
+0243>0180
+0244>0289
+0245>028C
+0246>0247
+0248>0249
+024A>024B
+024C>024D
+024E>024F
+02B0>0068
+02B1>0266
+02B2>006A
+02B3>0072
+02B4>0279
+02B5>027B
+02B6>0281
+02B7>0077
+02B8>0079
+02D8>0020 0306
+02D9>0020 0307
+02DA>0020 030A
+02DB>0020 0328
+02DC>0020 0303
+02DD>0020 030B
+02E0>0263
+02E1>006C
+02E2>0073
+02E3>0078
+02E4>0295
+0340>0300
+0341>0301
+0343>0313
+0344>0308 0301
+0345>03B9
+034F>
+0370>0371
+0372>0373
+0374>02B9
+0376>0377
+037A>0020 03B9
+037E>003B
+037F>03F3
+0384>0020 0301
+0385>0020 0308 0301
+0386>03AC
+0387>00B7
+0388>03AD
+0389>03AE
+038A>03AF
+038C>03CC
+038E>03CD
+038F>03CE
+0391>03B1
+0392>03B2
+0393>03B3
+0394>03B4
+0395>03B5
+0396>03B6
+0397>03B7
+0398>03B8
+0399>03B9
+039A>03BA
+039B>03BB
+039C>03BC
+039D>03BD
+039E>03BE
+039F>03BF
+03A0>03C0
+03A1>03C1
+03A3>03C3
+03A4>03C4
+03A5>03C5
+03A6>03C6
+03A7>03C7
+03A8>03C8
+03A9>03C9
+03AA>03CA
+03AB>03CB
+03C2>03C3
+03CF>03D7
+03D0>03B2
+03D1>03B8
+03D2>03C5
+03D3>03CD
+03D4>03CB
+03D5>03C6
+03D6>03C0
+03D8>03D9
+03DA>03DB
+03DC>03DD
+03DE>03DF
+03E0>03E1
+03E2>03E3
+03E4>03E5
+03E6>03E7
+03E8>03E9
+03EA>03EB
+03EC>03ED
+03EE>03EF
+03F0>03BA
+03F1>03C1
+03F2>03C3
+03F4>03B8
+03F5>03B5
+03F7>03F8
+03F9>03C3
+03FA>03FB
+03FD>037B
+03FE>037C
+03FF>037D
+0400>0450
+0401>0451
+0402>0452
+0403>0453
+0404>0454
+0405>0455
+0406>0456
+0407>0457
+0408>0458
+0409>0459
+040A>045A
+040B>045B
+040C>045C
+040D>045D
+040E>045E
+040F>045F
+0410>0430
+0411>0431
+0412>0432
+0413>0433
+0414>0434
+0415>0435
+0416>0436
+0417>0437
+0418>0438
+0419>0439
+041A>043A
+041B>043B
+041C>043C
+041D>043D
+041E>043E
+041F>043F
+0420>0440
+0421>0441
+0422>0442
+0423>0443
+0424>0444
+0425>0445
+0426>0446
+0427>0447
+0428>0448
+0429>0449
+042A>044A
+042B>044B
+042C>044C
+042D>044D
+042E>044E
+042F>044F
+0460>0461
+0462>0463
+0464>0465
+0466>0467
+0468>0469
+046A>046B
+046C>046D
+046E>046F
+0470>0471
+0472>0473
+0474>0475
+0476>0477
+0478>0479
+047A>047B
+047C>047D
+047E>047F
+0480>0481
+048A>048B
+048C>048D
+048E>048F
+0490>0491
+0492>0493
+0494>0495
+0496>0497
+0498>0499
+049A>049B
+049C>049D
+049E>049F
+04A0>04A1
+04A2>04A3
+04A4>04A5
+04A6>04A7
+04A8>04A9
+04AA>04AB
+04AC>04AD
+04AE>04AF
+04B0>04B1
+04B2>04B3
+04B4>04B5
+04B6>04B7
+04B8>04B9
+04BA>04BB
+04BC>04BD
+04BE>04BF
+04C0>04CF
+04C1>04C2
+04C3>04C4
+04C5>04C6
+04C7>04C8
+04C9>04CA
+04CB>04CC
+04CD>04CE
+04D0>04D1
+04D2>04D3
+04D4>04D5
+04D6>04D7
+04D8>04D9
+04DA>04DB
+04DC>04DD
+04DE>04DF
+04E0>04E1
+04E2>04E3
+04E4>04E5
+04E6>04E7
+04E8>04E9
+04EA>04EB
+04EC>04ED
+04EE>04EF
+04F0>04F1
+04F2>04F3
+04F4>04F5
+04F6>04F7
+04F8>04F9
+04FA>04FB
+04FC>04FD
+04FE>04FF
+0500>0501
+0502>0503
+0504>0505
+0506>0507
+0508>0509
+050A>050B
+050C>050D
+050E>050F
+0510>0511
+0512>0513
+0514>0515
+0516>0517
+0518>0519
+051A>051B
+051C>051D
+051E>051F
+0520>0521
+0522>0523
+0524>0525
+0526>0527
+0528>0529
+052A>052B
+052C>052D
+052E>052F
+0531>0561
+0532>0562
+0533>0563
+0534>0564
+0535>0565
+0536>0566
+0537>0567
+0538>0568
+0539>0569
+053A>056A
+053B>056B
+053C>056C
+053D>056D
+053E>056E
+053F>056F
+0540>0570
+0541>0571
+0542>0572
+0543>0573
+0544>0574
+0545>0575
+0546>0576
+0547>0577
+0548>0578
+0549>0579
+054A>057A
+054B>057B
+054C>057C
+054D>057D
+054E>057E
+054F>057F
+0550>0580
+0551>0581
+0552>0582
+0553>0583
+0554>0584
+0555>0585
+0556>0586
+0587>0565 0582
+061C>
+0675>0627 0674
+0676>0648 0674
+0677>06C7 0674
+0678>064A 0674
+0958>0915 093C
+0959>0916 093C
+095A>0917 093C
+095B>091C 093C
+095C>0921 093C
+095D>0922 093C
+095E>092B 093C
+095F>092F 093C
+09DC>09A1 09BC
+09DD>09A2 09BC
+09DF>09AF 09BC
+0A33>0A32 0A3C
+0A36>0A38 0A3C
+0A59>0A16 0A3C
+0A5A>0A17 0A3C
+0A5B>0A1C 0A3C
+0A5E>0A2B 0A3C
+0B5C>0B21 0B3C
+0B5D>0B22 0B3C
+0E33>0E4D 0E32
+0EB3>0ECD 0EB2
+0EDC>0EAB 0E99
+0EDD>0EAB 0EA1
+0F0C>0F0B
+0F43>0F42 0FB7
+0F4D>0F4C 0FB7
+0F52>0F51 0FB7
+0F57>0F56 0FB7
+0F5C>0F5B 0FB7
+0F69>0F40 0FB5
+0F73>0F71 0F72
+0F75>0F71 0F74
+0F76>0FB2 0F80
+0F77>0FB2 0F71 0F80
+0F78>0FB3 0F80
+0F79>0FB3 0F71 0F80
+0F81>0F71 0F80
+0F93>0F92 0FB7
+0F9D>0F9C 0FB7
+0FA2>0FA1 0FB7
+0FA7>0FA6 0FB7
+0FAC>0FAB 0FB7
+0FB9>0F90 0FB5
+10A0>2D00
+10A1>2D01
+10A2>2D02
+10A3>2D03
+10A4>2D04
+10A5>2D05
+10A6>2D06
+10A7>2D07
+10A8>2D08
+10A9>2D09
+10AA>2D0A
+10AB>2D0B
+10AC>2D0C
+10AD>2D0D
+10AE>2D0E
+10AF>2D0F
+10B0>2D10
+10B1>2D11
+10B2>2D12
+10B3>2D13
+10B4>2D14
+10B5>2D15
+10B6>2D16
+10B7>2D17
+10B8>2D18
+10B9>2D19
+10BA>2D1A
+10BB>2D1B
+10BC>2D1C
+10BD>2D1D
+10BE>2D1E
+10BF>2D1F
+10C0>2D20
+10C1>2D21
+10C2>2D22
+10C3>2D23
+10C4>2D24
+10C5>2D25
+10C7>2D27
+10CD>2D2D
+10FC>10DC
+115F..1160>
+13F8>13F0
+13F9>13F1
+13FA>13F2
+13FB>13F3
+13FC>13F4
+13FD>13F5
+17B4..17B5>
+180B..180F>
+1C80>0432
+1C81>0434
+1C82>043E
+1C83>0441
+1C84..1C85>0442
+1C86>044A
+1C87>0463
+1C88>A64B
+1C90>10D0
+1C91>10D1
+1C92>10D2
+1C93>10D3
+1C94>10D4
+1C95>10D5
+1C96>10D6
+1C97>10D7
+1C98>10D8
+1C99>10D9
+1C9A>10DA
+1C9B>10DB
+1C9C>10DC
+1C9D>10DD
+1C9E>10DE
+1C9F>10DF
+1CA0>10E0
+1CA1>10E1
+1CA2>10E2
+1CA3>10E3
+1CA4>10E4
+1CA5>10E5
+1CA6>10E6
+1CA7>10E7
+1CA8>10E8
+1CA9>10E9
+1CAA>10EA
+1CAB>10EB
+1CAC>10EC
+1CAD>10ED
+1CAE>10EE
+1CAF>10EF
+1CB0>10F0
+1CB1>10F1
+1CB2>10F2
+1CB3>10F3
+1CB4>10F4
+1CB5>10F5
+1CB6>10F6
+1CB7>10F7
+1CB8>10F8
+1CB9>10F9
+1CBA>10FA
+1CBD>10FD
+1CBE>10FE
+1CBF>10FF
+1D2C>0061
+1D2D>00E6
+1D2E>0062
+1D30>0064
+1D31>0065
+1D32>01DD
+1D33>0067
+1D34>0068
+1D35>0069
+1D36>006A
+1D37>006B
+1D38>006C
+1D39>006D
+1D3A>006E
+1D3C>006F
+1D3D>0223
+1D3E>0070
+1D3F>0072
+1D40>0074
+1D41>0075
+1D42>0077
+1D43>0061
+1D44>0250
+1D45>0251
+1D46>1D02
+1D47>0062
+1D48>0064
+1D49>0065
+1D4A>0259
+1D4B>025B
+1D4C>025C
+1D4D>0067
+1D4F>006B
+1D50>006D
+1D51>014B
+1D52>006F
+1D53>0254
+1D54>1D16
+1D55>1D17
+1D56>0070
+1D57>0074
+1D58>0075
+1D59>1D1D
+1D5A>026F
+1D5B>0076
+1D5C>1D25
+1D5D>03B2
+1D5E>03B3
+1D5F>03B4
+1D60>03C6
+1D61>03C7
+1D62>0069
+1D63>0072
+1D64>0075
+1D65>0076
+1D66>03B2
+1D67>03B3
+1D68>03C1
+1D69>03C6
+1D6A>03C7
+1D78>043D
+1D9B>0252
+1D9C>0063
+1D9D>0255
+1D9E>00F0
+1D9F>025C
+1DA0>0066
+1DA1>025F
+1DA2>0261
+1DA3>0265
+1DA4>0268
+1DA5>0269
+1DA6>026A
+1DA7>1D7B
+1DA8>029D
+1DA9>026D
+1DAA>1D85
+1DAB>029F
+1DAC>0271
+1DAD>0270
+1DAE>0272
+1DAF>0273
+1DB0>0274
+1DB1>0275
+1DB2>0278
+1DB3>0282
+1DB4>0283
+1DB5>01AB
+1DB6>0289
+1DB7>028A
+1DB8>1D1C
+1DB9>028B
+1DBA>028C
+1DBB>007A
+1DBC>0290
+1DBD>0291
+1DBE>0292
+1DBF>03B8
+1E00>1E01
+1E02>1E03
+1E04>1E05
+1E06>1E07
+1E08>1E09
+1E0A>1E0B
+1E0C>1E0D
+1E0E>1E0F
+1E10>1E11
+1E12>1E13
+1E14>1E15
+1E16>1E17
+1E18>1E19
+1E1A>1E1B
+1E1C>1E1D
+1E1E>1E1F
+1E20>1E21
+1E22>1E23
+1E24>1E25
+1E26>1E27
+1E28>1E29
+1E2A>1E2B
+1E2C>1E2D
+1E2E>1E2F
+1E30>1E31
+1E32>1E33
+1E34>1E35
+1E36>1E37
+1E38>1E39
+1E3A>1E3B
+1E3C>1E3D
+1E3E>1E3F
+1E40>1E41
+1E42>1E43
+1E44>1E45
+1E46>1E47
+1E48>1E49
+1E4A>1E4B
+1E4C>1E4D
+1E4E>1E4F
+1E50>1E51
+1E52>1E53
+1E54>1E55
+1E56>1E57
+1E58>1E59
+1E5A>1E5B
+1E5C>1E5D
+1E5E>1E5F
+1E60>1E61
+1E62>1E63
+1E64>1E65
+1E66>1E67
+1E68>1E69
+1E6A>1E6B
+1E6C>1E6D
+1E6E>1E6F
+1E70>1E71
+1E72>1E73
+1E74>1E75
+1E76>1E77
+1E78>1E79
+1E7A>1E7B
+1E7C>1E7D
+1E7E>1E7F
+1E80>1E81
+1E82>1E83
+1E84>1E85
+1E86>1E87
+1E88>1E89
+1E8A>1E8B
+1E8C>1E8D
+1E8E>1E8F
+1E90>1E91
+1E92>1E93
+1E94>1E95
+1E9A>0061 02BE
+1E9B>1E61
+1E9E>00DF
+1EA0>1EA1
+1EA2>1EA3
+1EA4>1EA5
+1EA6>1EA7
+1EA8>1EA9
+1EAA>1EAB
+1EAC>1EAD
+1EAE>1EAF
+1EB0>1EB1
+1EB2>1EB3
+1EB4>1EB5
+1EB6>1EB7
+1EB8>1EB9
+1EBA>1EBB
+1EBC>1EBD
+1EBE>1EBF
+1EC0>1EC1
+1EC2>1EC3
+1EC4>1EC5
+1EC6>1EC7
+1EC8>1EC9
+1ECA>1ECB
+1ECC>1ECD
+1ECE>1ECF
+1ED0>1ED1
+1ED2>1ED3
+1ED4>1ED5
+1ED6>1ED7
+1ED8>1ED9
+1EDA>1EDB
+1EDC>1EDD
+1EDE>1EDF
+1EE0>1EE1
+1EE2>1EE3
+1EE4>1EE5
+1EE6>1EE7
+1EE8>1EE9
+1EEA>1EEB
+1EEC>1EED
+1EEE>1EEF
+1EF0>1EF1
+1EF2>1EF3
+1EF4>1EF5
+1EF6>1EF7
+1EF8>1EF9
+1EFA>1EFB
+1EFC>1EFD
+1EFE>1EFF
+1F08>1F00
+1F09>1F01
+1F0A>1F02
+1F0B>1F03
+1F0C>1F04
+1F0D>1F05
+1F0E>1F06
+1F0F>1F07
+1F18>1F10
+1F19>1F11
+1F1A>1F12
+1F1B>1F13
+1F1C>1F14
+1F1D>1F15
+1F28>1F20
+1F29>1F21
+1F2A>1F22
+1F2B>1F23
+1F2C>1F24
+1F2D>1F25
+1F2E>1F26
+1F2F>1F27
+1F38>1F30
+1F39>1F31
+1F3A>1F32
+1F3B>1F33
+1F3C>1F34
+1F3D>1F35
+1F3E>1F36
+1F3F>1F37
+1F48>1F40
+1F49>1F41
+1F4A>1F42
+1F4B>1F43
+1F4C>1F44
+1F4D>1F45
+1F59>1F51
+1F5B>1F53
+1F5D>1F55
+1F5F>1F57
+1F68>1F60
+1F69>1F61
+1F6A>1F62
+1F6B>1F63
+1F6C>1F64
+1F6D>1F65
+1F6E>1F66
+1F6F>1F67
+1F71>03AC
+1F73>03AD
+1F75>03AE
+1F77>03AF
+1F79>03CC
+1F7B>03CD
+1F7D>03CE
+1F88>1F80
+1F89>1F81
+1F8A>1F82
+1F8B>1F83
+1F8C>1F84
+1F8D>1F85
+1F8E>1F86
+1F8F>1F87
+1F98>1F90
+1F99>1F91
+1F9A>1F92
+1F9B>1F93
+1F9C>1F94
+1F9D>1F95
+1F9E>1F96
+1F9F>1F97
+1FA8>1FA0
+1FA9>1FA1
+1FAA>1FA2
+1FAB>1FA3
+1FAC>1FA4
+1FAD>1FA5
+1FAE>1FA6
+1FAF>1FA7
+1FB8>1FB0
+1FB9>1FB1
+1FBA>1F70
+1FBB>03AC
+1FBC>1FB3
+1FBD>0020 0313
+1FBE>03B9
+1FBF>0020 0313
+1FC0>0020 0342
+1FC1>0020 0308 0342
+1FC8>1F72
+1FC9>03AD
+1FCA>1F74
+1FCB>03AE
+1FCC>1FC3
+1FCD>0020 0313 0300
+1FCE>0020 0313 0301
+1FCF>0020 0313 0342
+1FD3>0390
+1FD8>1FD0
+1FD9>1FD1
+1FDA>1F76
+1FDB>03AF
+1FDD>0020 0314 0300
+1FDE>0020 0314 0301
+1FDF>0020 0314 0342
+1FE3>03B0
+1FE8>1FE0
+1FE9>1FE1
+1FEA>1F7A
+1FEB>03CD
+1FEC>1FE5
+1FED>0020 0308 0300
+1FEE>0020 0308 0301
+1FEF>0060
+1FF8>1F78
+1FF9>03CC
+1FFA>1F7C
+1FFB>03CE
+1FFC>1FF3
+1FFD>0020 0301
+1FFE>0020 0314
+2000..200A>0020
+200B..200F>
+2011>2010
+2017>0020 0333
+2024>002E
+2025>002E 002E
+2026>002E 002E 002E
+202A..202E>
+202F>0020
+2033>2032 2032
+2034>2032 2032 2032
+2036>2035 2035
+2037>2035 2035 2035
+203C>0021 0021
+203E>0020 0305
+2047>003F 003F
+2048>003F 0021
+2049>0021 003F
+2057>2032 2032 2032 2032
+205F>0020
+2060..206F>
+2070>0030
+2071>0069
+2074>0034
+2075>0035
+2076>0036
+2077>0037
+2078>0038
+2079>0039
+207A>002B
+207B>2212
+207C>003D
+207D>0028
+207E>0029
+207F>006E
+2080>0030
+2081>0031
+2082>0032
+2083>0033
+2084>0034
+2085>0035
+2086>0036
+2087>0037
+2088>0038
+2089>0039
+208A>002B
+208B>2212
+208C>003D
+208D>0028
+208E>0029
+2090>0061
+2091>0065
+2092>006F
+2093>0078
+2094>0259
+2095>0068
+2096>006B
+2097>006C
+2098>006D
+2099>006E
+209A>0070
+209B>0073
+209C>0074
+20A8>0072 0073
+2100>0061 002F 0063
+2101>0061 002F 0073
+2102>0063
+2103>00B0 0063
+2105>0063 002F 006F
+2106>0063 002F 0075
+2107>025B
+2109>00B0 0066
+210A>0067
+210B..210E>0068
+210F>0127
+2110..2111>0069
+2112..2113>006C
+2115>006E
+2116>006E 006F
+2119>0070
+211A>0071
+211B..211D>0072
+2120>0073 006D
+2121>0074 0065 006C
+2122>0074 006D
+2124>007A
+2126>03C9
+2128>007A
+212A>006B
+212B>00E5
+212C>0062
+212D>0063
+212F..2130>0065
+2131>0066
+2132>214E
+2133>006D
+2134>006F
+2135>05D0
+2136>05D1
+2137>05D2
+2138>05D3
+2139>0069
+213B>0066 0061 0078
+213C>03C0
+213D..213E>03B3
+213F>03C0
+2140>2211
+2145..2146>0064
+2147>0065
+2148>0069
+2149>006A
+2150>0031 2044 0037
+2151>0031 2044 0039
+2152>0031 2044 0031 0030
+2153>0031 2044 0033
+2154>0032 2044 0033
+2155>0031 2044 0035
+2156>0032 2044 0035
+2157>0033 2044 0035
+2158>0034 2044 0035
+2159>0031 2044 0036
+215A>0035 2044 0036
+215B>0031 2044 0038
+215C>0033 2044 0038
+215D>0035 2044 0038
+215E>0037 2044 0038
+215F>0031 2044
+2160>0069
+2161>0069 0069
+2162>0069 0069 0069
+2163>0069 0076
+2164>0076
+2165>0076 0069
+2166>0076 0069 0069
+2167>0076 0069 0069 0069
+2168>0069 0078
+2169>0078
+216A>0078 0069
+216B>0078 0069 0069
+216C>006C
+216D>0063
+216E>0064
+216F>006D
+2170>0069
+2171>0069 0069
+2172>0069 0069 0069
+2173>0069 0076
+2174>0076
+2175>0076 0069
+2176>0076 0069 0069
+2177>0076 0069 0069 0069
+2178>0069 0078
+2179>0078
+217A>0078 0069
+217B>0078 0069 0069
+217C>006C
+217D>0063
+217E>0064
+217F>006D
+2183>2184
+2189>0030 2044 0033
+222C>222B 222B
+222D>222B 222B 222B
+222F>222E 222E
+2230>222E 222E 222E
+2329>3008
+232A>3009
+2460>0031
+2461>0032
+2462>0033
+2463>0034
+2464>0035
+2465>0036
+2466>0037
+2467>0038
+2468>0039
+2469>0031 0030
+246A>0031 0031
+246B>0031 0032
+246C>0031 0033
+246D>0031 0034
+246E>0031 0035
+246F>0031 0036
+2470>0031 0037
+2471>0031 0038
+2472>0031 0039
+2473>0032 0030
+2474>0028 0031 0029
+2475>0028 0032 0029
+2476>0028 0033 0029
+2477>0028 0034 0029
+2478>0028 0035 0029
+2479>0028 0036 0029
+247A>0028 0037 0029
+247B>0028 0038 0029
+247C>0028 0039 0029
+247D>0028 0031 0030 0029
+247E>0028 0031 0031 0029
+247F>0028 0031 0032 0029
+2480>0028 0031 0033 0029
+2481>0028 0031 0034 0029
+2482>0028 0031 0035 0029
+2483>0028 0031 0036 0029
+2484>0028 0031 0037 0029
+2485>0028 0031 0038 0029
+2486>0028 0031 0039 0029
+2487>0028 0032 0030 0029
+2488>0031 002E
+2489>0032 002E
+248A>0033 002E
+248B>0034 002E
+248C>0035 002E
+248D>0036 002E
+248E>0037 002E
+248F>0038 002E
+2490>0039 002E
+2491>0031 0030 002E
+2492>0031 0031 002E
+2493>0031 0032 002E
+2494>0031 0033 002E
+2495>0031 0034 002E
+2496>0031 0035 002E
+2497>0031 0036 002E
+2498>0031 0037 002E
+2499>0031 0038 002E
+249A>0031 0039 002E
+249B>0032 0030 002E
+249C>0028 0061 0029
+249D>0028 0062 0029
+249E>0028 0063 0029
+249F>0028 0064 0029
+24A0>0028 0065 0029
+24A1>0028 0066 0029
+24A2>0028 0067 0029
+24A3>0028 0068 0029
+24A4>0028 0069 0029
+24A5>0028 006A 0029
+24A6>0028 006B 0029
+24A7>0028 006C 0029
+24A8>0028 006D 0029
+24A9>0028 006E 0029
+24AA>0028 006F 0029
+24AB>0028 0070 0029
+24AC>0028 0071 0029
+24AD>0028 0072 0029
+24AE>0028 0073 0029
+24AF>0028 0074 0029
+24B0>0028 0075 0029
+24B1>0028 0076 0029
+24B2>0028 0077 0029
+24B3>0028 0078 0029
+24B4>0028 0079 0029
+24B5>0028 007A 0029
+24B6>0061
+24B7>0062
+24B8>0063
+24B9>0064
+24BA>0065
+24BB>0066
+24BC>0067
+24BD>0068
+24BE>0069
+24BF>006A
+24C0>006B
+24C1>006C
+24C2>006D
+24C3>006E
+24C4>006F
+24C5>0070
+24C6>0071
+24C7>0072
+24C8>0073
+24C9>0074
+24CA>0075
+24CB>0076
+24CC>0077
+24CD>0078
+24CE>0079
+24CF>007A
+24D0>0061
+24D1>0062
+24D2>0063
+24D3>0064
+24D4>0065
+24D5>0066
+24D6>0067
+24D7>0068
+24D8>0069
+24D9>006A
+24DA>006B
+24DB>006C
+24DC>006D
+24DD>006E
+24DE>006F
+24DF>0070
+24E0>0071
+24E1>0072
+24E2>0073
+24E3>0074
+24E4>0075
+24E5>0076
+24E6>0077
+24E7>0078
+24E8>0079
+24E9>007A
+24EA>0030
+2A0C>222B 222B 222B 222B
+2A74>003A 003A 003D
+2A75>003D 003D
+2A76>003D 003D 003D
+2ADC>2ADD 0338
+2C00>2C30
+2C01>2C31
+2C02>2C32
+2C03>2C33
+2C04>2C34
+2C05>2C35
+2C06>2C36
+2C07>2C37
+2C08>2C38
+2C09>2C39
+2C0A>2C3A
+2C0B>2C3B
+2C0C>2C3C
+2C0D>2C3D
+2C0E>2C3E
+2C0F>2C3F
+2C10>2C40
+2C11>2C41
+2C12>2C42
+2C13>2C43
+2C14>2C44
+2C15>2C45
+2C16>2C46
+2C17>2C47
+2C18>2C48
+2C19>2C49
+2C1A>2C4A
+2C1B>2C4B
+2C1C>2C4C
+2C1D>2C4D
+2C1E>2C4E
+2C1F>2C4F
+2C20>2C50
+2C21>2C51
+2C22>2C52
+2C23>2C53
+2C24>2C54
+2C25>2C55
+2C26>2C56
+2C27>2C57
+2C28>2C58
+2C29>2C59
+2C2A>2C5A
+2C2B>2C5B
+2C2C>2C5C
+2C2D>2C5D
+2C2E>2C5E
+2C2F>2C5F
+2C60>2C61
+2C62>026B
+2C63>1D7D
+2C64>027D
+2C67>2C68
+2C69>2C6A
+2C6B>2C6C
+2C6D>0251
+2C6E>0271
+2C6F>0250
+2C70>0252
+2C72>2C73
+2C75>2C76
+2C7C>006A
+2C7D>0076
+2C7E>023F
+2C7F>0240
+2C80>2C81
+2C82>2C83
+2C84>2C85
+2C86>2C87
+2C88>2C89
+2C8A>2C8B
+2C8C>2C8D
+2C8E>2C8F
+2C90>2C91
+2C92>2C93
+2C94>2C95
+2C96>2C97
+2C98>2C99
+2C9A>2C9B
+2C9C>2C9D
+2C9E>2C9F
+2CA0>2CA1
+2CA2>2CA3
+2CA4>2CA5
+2CA6>2CA7
+2CA8>2CA9
+2CAA>2CAB
+2CAC>2CAD
+2CAE>2CAF
+2CB0>2CB1
+2CB2>2CB3
+2CB4>2CB5
+2CB6>2CB7
+2CB8>2CB9
+2CBA>2CBB
+2CBC>2CBD
+2CBE>2CBF
+2CC0>2CC1
+2CC2>2CC3
+2CC4>2CC5
+2CC6>2CC7
+2CC8>2CC9
+2CCA>2CCB
+2CCC>2CCD
+2CCE>2CCF
+2CD0>2CD1
+2CD2>2CD3
+2CD4>2CD5
+2CD6>2CD7
+2CD8>2CD9
+2CDA>2CDB
+2CDC>2CDD
+2CDE>2CDF
+2CE0>2CE1
+2CE2>2CE3
+2CEB>2CEC
+2CED>2CEE
+2CF2>2CF3
+2D6F>2D61
+2E9F>6BCD
+2EF3>9F9F
+2F00>4E00
+2F01>4E28
+2F02>4E36
+2F03>4E3F
+2F04>4E59
+2F05>4E85
+2F06>4E8C
+2F07>4EA0
+2F08>4EBA
+2F09>513F
+2F0A>5165
+2F0B>516B
+2F0C>5182
+2F0D>5196
+2F0E>51AB
+2F0F>51E0
+2F10>51F5
+2F11>5200
+2F12>529B
+2F13>52F9
+2F14>5315
+2F15>531A
+2F16>5338
+2F17>5341
+2F18>535C
+2F19>5369
+2F1A>5382
+2F1B>53B6
+2F1C>53C8
+2F1D>53E3
+2F1E>56D7
+2F1F>571F
+2F20>58EB
+2F21>5902
+2F22>590A
+2F23>5915
+2F24>5927
+2F25>5973
+2F26>5B50
+2F27>5B80
+2F28>5BF8
+2F29>5C0F
+2F2A>5C22
+2F2B>5C38
+2F2C>5C6E
+2F2D>5C71
+2F2E>5DDB
+2F2F>5DE5
+2F30>5DF1
+2F31>5DFE
+2F32>5E72
+2F33>5E7A
+2F34>5E7F
+2F35>5EF4
+2F36>5EFE
+2F37>5F0B
+2F38>5F13
+2F39>5F50
+2F3A>5F61
+2F3B>5F73
+2F3C>5FC3
+2F3D>6208
+2F3E>6236
+2F3F>624B
+2F40>652F
+2F41>6534
+2F42>6587
+2F43>6597
+2F44>65A4
+2F45>65B9
+2F46>65E0
+2F47>65E5
+2F48>66F0
+2F49>6708
+2F4A>6728
+2F4B>6B20
+2F4C>6B62
+2F4D>6B79
+2F4E>6BB3
+2F4F>6BCB
+2F50>6BD4
+2F51>6BDB
+2F52>6C0F
+2F53>6C14
+2F54>6C34
+2F55>706B
+2F56>722A
+2F57>7236
+2F58>723B
+2F59>723F
+2F5A>7247
+2F5B>7259
+2F5C>725B
+2F5D>72AC
+2F5E>7384
+2F5F>7389
+2F60>74DC
+2F61>74E6
+2F62>7518
+2F63>751F
+2F64>7528
+2F65>7530
+2F66>758B
+2F67>7592
+2F68>7676
+2F69>767D
+2F6A>76AE
+2F6B>76BF
+2F6C>76EE
+2F6D>77DB
+2F6E>77E2
+2F6F>77F3
+2F70>793A
+2F71>79B8
+2F72>79BE
+2F73>7A74
+2F74>7ACB
+2F75>7AF9
+2F76>7C73
+2F77>7CF8
+2F78>7F36
+2F79>7F51
+2F7A>7F8A
+2F7B>7FBD
+2F7C>8001
+2F7D>800C
+2F7E>8012
+2F7F>8033
+2F80>807F
+2F81>8089
+2F82>81E3
+2F83>81EA
+2F84>81F3
+2F85>81FC
+2F86>820C
+2F87>821B
+2F88>821F
+2F89>826E
+2F8A>8272
+2F8B>8278
+2F8C>864D
+2F8D>866B
+2F8E>8840
+2F8F>884C
+2F90>8863
+2F91>897E
+2F92>898B
+2F93>89D2
+2F94>8A00
+2F95>8C37
+2F96>8C46
+2F97>8C55
+2F98>8C78
+2F99>8C9D
+2F9A>8D64
+2F9B>8D70
+2F9C>8DB3
+2F9D>8EAB
+2F9E>8ECA
+2F9F>8F9B
+2FA0>8FB0
+2FA1>8FB5
+2FA2>9091
+2FA3>9149
+2FA4>91C6
+2FA5>91CC
+2FA6>91D1
+2FA7>9577
+2FA8>9580
+2FA9>961C
+2FAA>96B6
+2FAB>96B9
+2FAC>96E8
+2FAD>9751
+2FAE>975E
+2FAF>9762
+2FB0>9769
+2FB1>97CB
+2FB2>97ED
+2FB3>97F3
+2FB4>9801
+2FB5>98A8
+2FB6>98DB
+2FB7>98DF
+2FB8>9996
+2FB9>9999
+2FBA>99AC
+2FBB>9AA8
+2FBC>9AD8
+2FBD>9ADF
+2FBE>9B25
+2FBF>9B2F
+2FC0>9B32
+2FC1>9B3C
+2FC2>9B5A
+2FC3>9CE5
+2FC4>9E75
+2FC5>9E7F
+2FC6>9EA5
+2FC7>9EBB
+2FC8>9EC3
+2FC9>9ECD
+2FCA>9ED1
+2FCB>9EF9
+2FCC>9EFD
+2FCD>9F0E
+2FCE>9F13
+2FCF>9F20
+2FD0>9F3B
+2FD1>9F4A
+2FD2>9F52
+2FD3>9F8D
+2FD4>9F9C
+2FD5>9FA0
+3000>0020
+3036>3012
+3038>5341
+3039>5344
+303A>5345
+309B>0020 3099
+309C>0020 309A
+309F>3088 308A
+30FF>30B3 30C8
+3131>1100
+3132>1101
+3133>11AA
+3134>1102
+3135>11AC
+3136>11AD
+3137>1103
+3138>1104
+3139>1105
+313A>11B0
+313B>11B1
+313C>11B2
+313D>11B3
+313E>11B4
+313F>11B5
+3140>111A
+3141>1106
+3142>1107
+3143>1108
+3144>1121
+3145>1109
+3146>110A
+3147>110B
+3148>110C
+3149>110D
+314A>110E
+314B>110F
+314C>1110
+314D>1111
+314E>1112
+314F>1161
+3150>1162
+3151>1163
+3152>1164
+3153>1165
+3154>1166
+3155>1167
+3156>1168
+3157>1169
+3158>116A
+3159>116B
+315A>116C
+315B>116D
+315C>116E
+315D>116F
+315E>1170
+315F>1171
+3160>1172
+3161>1173
+3162>1174
+3163>1175
+3164>
+3165>1114
+3166>1115
+3167>11C7
+3168>11C8
+3169>11CC
+316A>11CE
+316B>11D3
+316C>11D7
+316D>11D9
+316E>111C
+316F>11DD
+3170>11DF
+3171>111D
+3172>111E
+3173>1120
+3174>1122
+3175>1123
+3176>1127
+3177>1129
+3178>112B
+3179>112C
+317A>112D
+317B>112E
+317C>112F
+317D>1132
+317E>1136
+317F>1140
+3180>1147
+3181>114C
+3182>11F1
+3183>11F2
+3184>1157
+3185>1158
+3186>1159
+3187>1184
+3188>1185
+3189>1188
+318A>1191
+318B>1192
+318C>1194
+318D>119E
+318E>11A1
+3192>4E00
+3193>4E8C
+3194>4E09
+3195>56DB
+3196>4E0A
+3197>4E2D
+3198>4E0B
+3199>7532
+319A>4E59
+319B>4E19
+319C>4E01
+319D>5929
+319E>5730
+319F>4EBA
+3200>0028 1100 0029
+3201>0028 1102 0029
+3202>0028 1103 0029
+3203>0028 1105 0029
+3204>0028 1106 0029
+3205>0028 1107 0029
+3206>0028 1109 0029
+3207>0028 110B 0029
+3208>0028 110C 0029
+3209>0028 110E 0029
+320A>0028 110F 0029
+320B>0028 1110 0029
+320C>0028 1111 0029
+320D>0028 1112 0029
+320E>0028 AC00 0029
+320F>0028 B098 0029
+3210>0028 B2E4 0029
+3211>0028 B77C 0029
+3212>0028 B9C8 0029
+3213>0028 BC14 0029
+3214>0028 C0AC 0029
+3215>0028 C544 0029
+3216>0028 C790 0029
+3217>0028 CC28 0029
+3218>0028 CE74 0029
+3219>0028 D0C0 0029
+321A>0028 D30C 0029
+321B>0028 D558 0029
+321C>0028 C8FC 0029
+321D>0028 C624 C804 0029
+321E>0028 C624 D6C4 0029
+3220>0028 4E00 0029
+3221>0028 4E8C 0029
+3222>0028 4E09 0029
+3223>0028 56DB 0029
+3224>0028 4E94 0029
+3225>0028 516D 0029
+3226>0028 4E03 0029
+3227>0028 516B 0029
+3228>0028 4E5D 0029
+3229>0028 5341 0029
+322A>0028 6708 0029
+322B>0028 706B 0029
+322C>0028 6C34 0029
+322D>0028 6728 0029
+322E>0028 91D1 0029
+322F>0028 571F 0029
+3230>0028 65E5 0029
+3231>0028 682A 0029
+3232>0028 6709 0029
+3233>0028 793E 0029
+3234>0028 540D 0029
+3235>0028 7279 0029
+3236>0028 8CA1 0029
+3237>0028 795D 0029
+3238>0028 52B4 0029
+3239>0028 4EE3 0029
+323A>0028 547C 0029
+323B>0028 5B66 0029
+323C>0028 76E3 0029
+323D>0028 4F01 0029
+323E>0028 8CC7 0029
+323F>0028 5354 0029
+3240>0028 796D 0029
+3241>0028 4F11 0029
+3242>0028 81EA 0029
+3243>0028 81F3 0029
+3244>554F
+3245>5E7C
+3246>6587
+3247>7B8F
+3250>0070 0074 0065
+3251>0032 0031
+3252>0032 0032
+3253>0032 0033
+3254>0032 0034
+3255>0032 0035
+3256>0032 0036
+3257>0032 0037
+3258>0032 0038
+3259>0032 0039
+325A>0033 0030
+325B>0033 0031
+325C>0033 0032
+325D>0033 0033
+325E>0033 0034
+325F>0033 0035
+3260>1100
+3261>1102
+3262>1103
+3263>1105
+3264>1106
+3265>1107
+3266>1109
+3267>110B
+3268>110C
+3269>110E
+326A>110F
+326B>1110
+326C>1111
+326D>1112
+326E>AC00
+326F>B098
+3270>B2E4
+3271>B77C
+3272>B9C8
+3273>BC14
+3274>C0AC
+3275>C544
+3276>C790
+3277>CC28
+3278>CE74
+3279>D0C0
+327A>D30C
+327B>D558
+327C>CC38 ACE0
+327D>C8FC C758
+327E>C6B0
+3280>4E00
+3281>4E8C
+3282>4E09
+3283>56DB
+3284>4E94
+3285>516D
+3286>4E03
+3287>516B
+3288>4E5D
+3289>5341
+328A>6708
+328B>706B
+328C>6C34
+328D>6728
+328E>91D1
+328F>571F
+3290>65E5
+3291>682A
+3292>6709
+3293>793E
+3294>540D
+3295>7279
+3296>8CA1
+3297>795D
+3298>52B4
+3299>79D8
+329A>7537
+329B>5973
+329C>9069
+329D>512A
+329E>5370
+329F>6CE8
+32A0>9805
+32A1>4F11
+32A2>5199
+32A3>6B63
+32A4>4E0A
+32A5>4E2D
+32A6>4E0B
+32A7>5DE6
+32A8>53F3
+32A9>533B
+32AA>5B97
+32AB>5B66
+32AC>76E3
+32AD>4F01
+32AE>8CC7
+32AF>5354
+32B0>591C
+32B1>0033 0036
+32B2>0033 0037
+32B3>0033 0038
+32B4>0033 0039
+32B5>0034 0030
+32B6>0034 0031
+32B7>0034 0032
+32B8>0034 0033
+32B9>0034 0034
+32BA>0034 0035
+32BB>0034 0036
+32BC>0034 0037
+32BD>0034 0038
+32BE>0034 0039
+32BF>0035 0030
+32C0>0031 6708
+32C1>0032 6708
+32C2>0033 6708
+32C3>0034 6708
+32C4>0035 6708
+32C5>0036 6708
+32C6>0037 6708
+32C7>0038 6708
+32C8>0039 6708
+32C9>0031 0030 6708
+32CA>0031 0031 6708
+32CB>0031 0032 6708
+32CC>0068 0067
+32CD>0065 0072 0067
+32CE>0065 0076
+32CF>006C 0074 0064
+32D0>30A2
+32D1>30A4
+32D2>30A6
+32D3>30A8
+32D4>30AA
+32D5>30AB
+32D6>30AD
+32D7>30AF
+32D8>30B1
+32D9>30B3
+32DA>30B5
+32DB>30B7
+32DC>30B9
+32DD>30BB
+32DE>30BD
+32DF>30BF
+32E0>30C1
+32E1>30C4
+32E2>30C6
+32E3>30C8
+32E4>30CA
+32E5>30CB
+32E6>30CC
+32E7>30CD
+32E8>30CE
+32E9>30CF
+32EA>30D2
+32EB>30D5
+32EC>30D8
+32ED>30DB
+32EE>30DE
+32EF>30DF
+32F0>30E0
+32F1>30E1
+32F2>30E2
+32F3>30E4
+32F4>30E6
+32F5>30E8
+32F6>30E9
+32F7>30EA
+32F8>30EB
+32F9>30EC
+32FA>30ED
+32FB>30EF
+32FC>30F0
+32FD>30F1
+32FE>30F2
+32FF>4EE4 548C
+3300>30A2 30D1 30FC 30C8
+3301>30A2 30EB 30D5 30A1
+3302>30A2 30F3 30DA 30A2
+3303>30A2 30FC 30EB
+3304>30A4 30CB 30F3 30B0
+3305>30A4 30F3 30C1
+3306>30A6 30A9 30F3
+3307>30A8 30B9 30AF 30FC 30C9
+3308>30A8 30FC 30AB 30FC
+3309>30AA 30F3 30B9
+330A>30AA 30FC 30E0
+330B>30AB 30A4 30EA
+330C>30AB 30E9 30C3 30C8
+330D>30AB 30ED 30EA 30FC
+330E>30AC 30ED 30F3
+330F>30AC 30F3 30DE
+3310>30AE 30AC
+3311>30AE 30CB 30FC
+3312>30AD 30E5 30EA 30FC
+3313>30AE 30EB 30C0 30FC
+3314>30AD 30ED
+3315>30AD 30ED 30B0 30E9 30E0
+3316>30AD 30ED 30E1 30FC 30C8 30EB
+3317>30AD 30ED 30EF 30C3 30C8
+3318>30B0 30E9 30E0
+3319>30B0 30E9 30E0 30C8 30F3
+331A>30AF 30EB 30BC 30A4 30ED
+331B>30AF 30ED 30FC 30CD
+331C>30B1 30FC 30B9
+331D>30B3 30EB 30CA
+331E>30B3 30FC 30DD
+331F>30B5 30A4 30AF 30EB
+3320>30B5 30F3 30C1 30FC 30E0
+3321>30B7 30EA 30F3 30B0
+3322>30BB 30F3 30C1
+3323>30BB 30F3 30C8
+3324>30C0 30FC 30B9
+3325>30C7 30B7
+3326>30C9 30EB
+3327>30C8 30F3
+3328>30CA 30CE
+3329>30CE 30C3 30C8
+332A>30CF 30A4 30C4
+332B>30D1 30FC 30BB 30F3 30C8
+332C>30D1 30FC 30C4
+332D>30D0 30FC 30EC 30EB
+332E>30D4 30A2 30B9 30C8 30EB
+332F>30D4 30AF 30EB
+3330>30D4 30B3
+3331>30D3 30EB
+3332>30D5 30A1 30E9 30C3 30C9
+3333>30D5 30A3 30FC 30C8
+3334>30D6 30C3 30B7 30A7 30EB
+3335>30D5 30E9 30F3
+3336>30D8 30AF 30BF 30FC 30EB
+3337>30DA 30BD
+3338>30DA 30CB 30D2
+3339>30D8 30EB 30C4
+333A>30DA 30F3 30B9
+333B>30DA 30FC 30B8
+333C>30D9 30FC 30BF
+333D>30DD 30A4 30F3 30C8
+333E>30DC 30EB 30C8
+333F>30DB 30F3
+3340>30DD 30F3 30C9
+3341>30DB 30FC 30EB
+3342>30DB 30FC 30F3
+3343>30DE 30A4 30AF 30ED
+3344>30DE 30A4 30EB
+3345>30DE 30C3 30CF
+3346>30DE 30EB 30AF
+3347>30DE 30F3 30B7 30E7 30F3
+3348>30DF 30AF 30ED 30F3
+3349>30DF 30EA
+334A>30DF 30EA 30D0 30FC 30EB
+334B>30E1 30AC
+334C>30E1 30AC 30C8 30F3
+334D>30E1 30FC 30C8 30EB
+334E>30E4 30FC 30C9
+334F>30E4 30FC 30EB
+3350>30E6 30A2 30F3
+3351>30EA 30C3 30C8 30EB
+3352>30EA 30E9
+3353>30EB 30D4 30FC
+3354>30EB 30FC 30D6 30EB
+3355>30EC 30E0
+3356>30EC 30F3 30C8 30B2 30F3
+3357>30EF 30C3 30C8
+3358>0030 70B9
+3359>0031 70B9
+335A>0032 70B9
+335B>0033 70B9
+335C>0034 70B9
+335D>0035 70B9
+335E>0036 70B9
+335F>0037 70B9
+3360>0038 70B9
+3361>0039 70B9
+3362>0031 0030 70B9
+3363>0031 0031 70B9
+3364>0031 0032 70B9
+3365>0031 0033 70B9
+3366>0031 0034 70B9
+3367>0031 0035 70B9
+3368>0031 0036 70B9
+3369>0031 0037 70B9
+336A>0031 0038 70B9
+336B>0031 0039 70B9
+336C>0032 0030 70B9
+336D>0032 0031 70B9
+336E>0032 0032 70B9
+336F>0032 0033 70B9
+3370>0032 0034 70B9
+3371>0068 0070 0061
+3372>0064 0061
+3373>0061 0075
+3374>0062 0061 0072
+3375>006F 0076
+3376>0070 0063
+3377>0064 006D
+3378>0064 006D 0032
+3379>0064 006D 0033
+337A>0069 0075
+337B>5E73 6210
+337C>662D 548C
+337D>5927 6B63
+337E>660E 6CBB
+337F>682A 5F0F 4F1A 793E
+3380>0070 0061
+3381>006E 0061
+3382>03BC 0061
+3383>006D 0061
+3384>006B 0061
+3385>006B 0062
+3386>006D 0062
+3387>0067 0062
+3388>0063 0061 006C
+3389>006B 0063 0061 006C
+338A>0070 0066
+338B>006E 0066
+338C>03BC 0066
+338D>03BC 0067
+338E>006D 0067
+338F>006B 0067
+3390>0068 007A
+3391>006B 0068 007A
+3392>006D 0068 007A
+3393>0067 0068 007A
+3394>0074 0068 007A
+3395>03BC 006C
+3396>006D 006C
+3397>0064 006C
+3398>006B 006C
+3399>0066 006D
+339A>006E 006D
+339B>03BC 006D
+339C>006D 006D
+339D>0063 006D
+339E>006B 006D
+339F>006D 006D 0032
+33A0>0063 006D 0032
+33A1>006D 0032
+33A2>006B 006D 0032
+33A3>006D 006D 0033
+33A4>0063 006D 0033
+33A5>006D 0033
+33A6>006B 006D 0033
+33A7>006D 2215 0073
+33A8>006D 2215 0073 0032
+33A9>0070 0061
+33AA>006B 0070 0061
+33AB>006D 0070 0061
+33AC>0067 0070 0061
+33AD>0072 0061 0064
+33AE>0072 0061 0064 2215 0073
+33AF>0072 0061 0064 2215 0073 0032
+33B0>0070 0073
+33B1>006E 0073
+33B2>03BC 0073
+33B3>006D 0073
+33B4>0070 0076
+33B5>006E 0076
+33B6>03BC 0076
+33B7>006D 0076
+33B8>006B 0076
+33B9>006D 0076
+33BA>0070 0077
+33BB>006E 0077
+33BC>03BC 0077
+33BD>006D 0077
+33BE>006B 0077
+33BF>006D 0077
+33C0>006B 03C9
+33C1>006D 03C9
+33C2>0061 002E 006D 002E
+33C3>0062 0071
+33C4>0063 0063
+33C5>0063 0064
+33C6>0063 2215 006B 0067
+33C7>0063 006F 002E
+33C8>0064 0062
+33C9>0067 0079
+33CA>0068 0061
+33CB>0068 0070
+33CC>0069 006E
+33CD>006B 006B
+33CE>006B 006D
+33CF>006B 0074
+33D0>006C 006D
+33D1>006C 006E
+33D2>006C 006F 0067
+33D3>006C 0078
+33D4>006D 0062
+33D5>006D 0069 006C
+33D6>006D 006F 006C
+33D7>0070 0068
+33D8>0070 002E 006D 002E
+33D9>0070 0070 006D
+33DA>0070 0072
+33DB>0073 0072
+33DC>0073 0076
+33DD>0077 0062
+33DE>0076 2215 006D
+33DF>0061 2215 006D
+33E0>0031 65E5
+33E1>0032 65E5
+33E2>0033 65E5
+33E3>0034 65E5
+33E4>0035 65E5
+33E5>0036 65E5
+33E6>0037 65E5
+33E7>0038 65E5
+33E8>0039 65E5
+33E9>0031 0030 65E5
+33EA>0031 0031 65E5
+33EB>0031 0032 65E5
+33EC>0031 0033 65E5
+33ED>0031 0034 65E5
+33EE>0031 0035 65E5
+33EF>0031 0036 65E5
+33F0>0031 0037 65E5
+33F1>0031 0038 65E5
+33F2>0031 0039 65E5
+33F3>0032 0030 65E5
+33F4>0032 0031 65E5
+33F5>0032 0032 65E5
+33F6>0032 0033 65E5
+33F7>0032 0034 65E5
+33F8>0032 0035 65E5
+33F9>0032 0036 65E5
+33FA>0032 0037 65E5
+33FB>0032 0038 65E5
+33FC>0032 0039 65E5
+33FD>0033 0030 65E5
+33FE>0033 0031 65E5
+33FF>0067 0061 006C
+A640>A641
+A642>A643
+A644>A645
+A646>A647
+A648>A649
+A64A>A64B
+A64C>A64D
+A64E>A64F
+A650>A651
+A652>A653
+A654>A655
+A656>A657
+A658>A659
+A65A>A65B
+A65C>A65D
+A65E>A65F
+A660>A661
+A662>A663
+A664>A665
+A666>A667
+A668>A669
+A66A>A66B
+A66C>A66D
+A680>A681
+A682>A683
+A684>A685
+A686>A687
+A688>A689
+A68A>A68B
+A68C>A68D
+A68E>A68F
+A690>A691
+A692>A693
+A694>A695
+A696>A697
+A698>A699
+A69A>A69B
+A69C>044A
+A69D>044C
+A722>A723
+A724>A725
+A726>A727
+A728>A729
+A72A>A72B
+A72C>A72D
+A72E>A72F
+A732>A733
+A734>A735
+A736>A737
+A738>A739
+A73A>A73B
+A73C>A73D
+A73E>A73F
+A740>A741
+A742>A743
+A744>A745
+A746>A747
+A748>A749
+A74A>A74B
+A74C>A74D
+A74E>A74F
+A750>A751
+A752>A753
+A754>A755
+A756>A757
+A758>A759
+A75A>A75B
+A75C>A75D
+A75E>A75F
+A760>A761
+A762>A763
+A764>A765
+A766>A767
+A768>A769
+A76A>A76B
+A76C>A76D
+A76E>A76F
+A770>A76F
+A779>A77A
+A77B>A77C
+A77D>1D79
+A77E>A77F
+A780>A781
+A782>A783
+A784>A785
+A786>A787
+A78B>A78C
+A78D>0265
+A790>A791
+A792>A793
+A796>A797
+A798>A799
+A79A>A79B
+A79C>A79D
+A79E>A79F
+A7A0>A7A1
+A7A2>A7A3
+A7A4>A7A5
+A7A6>A7A7
+A7A8>A7A9
+A7AA>0266
+A7AB>025C
+A7AC>0261
+A7AD>026C
+A7AE>026A
+A7B0>029E
+A7B1>0287
+A7B2>029D
+A7B3>AB53
+A7B4>A7B5
+A7B6>A7B7
+A7B8>A7B9
+A7BA>A7BB
+A7BC>A7BD
+A7BE>A7BF
+A7C0>A7C1
+A7C2>A7C3
+A7C4>A794
+A7C5>0282
+A7C6>1D8E
+A7C7>A7C8
+A7C9>A7CA
+A7D0>A7D1
+A7D6>A7D7
+A7D8>A7D9
+A7F2>0063
+A7F3>0066
+A7F4>0071
+A7F5>A7F6
+A7F8>0127
+A7F9>0153
+AB5C>A727
+AB5D>AB37
+AB5E>026B
+AB5F>AB52
+AB69>028D
+AB70>13A0
+AB71>13A1
+AB72>13A2
+AB73>13A3
+AB74>13A4
+AB75>13A5
+AB76>13A6
+AB77>13A7
+AB78>13A8
+AB79>13A9
+AB7A>13AA
+AB7B>13AB
+AB7C>13AC
+AB7D>13AD
+AB7E>13AE
+AB7F>13AF
+AB80>13B0
+AB81>13B1
+AB82>13B2
+AB83>13B3
+AB84>13B4
+AB85>13B5
+AB86>13B6
+AB87>13B7
+AB88>13B8
+AB89>13B9
+AB8A>13BA
+AB8B>13BB
+AB8C>13BC
+AB8D>13BD
+AB8E>13BE
+AB8F>13BF
+AB90>13C0
+AB91>13C1
+AB92>13C2
+AB93>13C3
+AB94>13C4
+AB95>13C5
+AB96>13C6
+AB97>13C7
+AB98>13C8
+AB99>13C9
+AB9A>13CA
+AB9B>13CB
+AB9C>13CC
+AB9D>13CD
+AB9E>13CE
+AB9F>13CF
+ABA0>13D0
+ABA1>13D1
+ABA2>13D2
+ABA3>13D3
+ABA4>13D4
+ABA5>13D5
+ABA6>13D6
+ABA7>13D7
+ABA8>13D8
+ABA9>13D9
+ABAA>13DA
+ABAB>13DB
+ABAC>13DC
+ABAD>13DD
+ABAE>13DE
+ABAF>13DF
+ABB0>13E0
+ABB1>13E1
+ABB2>13E2
+ABB3>13E3
+ABB4>13E4
+ABB5>13E5
+ABB6>13E6
+ABB7>13E7
+ABB8>13E8
+ABB9>13E9
+ABBA>13EA
+ABBB>13EB
+ABBC>13EC
+ABBD>13ED
+ABBE>13EE
+ABBF>13EF
+F900>8C48
+F901>66F4
+F902>8ECA
+F903>8CC8
+F904>6ED1
+F905>4E32
+F906>53E5
+F907..F908>9F9C
+F909>5951
+F90A>91D1
+F90B>5587
+F90C>5948
+F90D>61F6
+F90E>7669
+F90F>7F85
+F910>863F
+F911>87BA
+F912>88F8
+F913>908F
+F914>6A02
+F915>6D1B
+F916>70D9
+F917>73DE
+F918>843D
+F919>916A
+F91A>99F1
+F91B>4E82
+F91C>5375
+F91D>6B04
+F91E>721B
+F91F>862D
+F920>9E1E
+F921>5D50
+F922>6FEB
+F923>85CD
+F924>8964
+F925>62C9
+F926>81D8
+F927>881F
+F928>5ECA
+F929>6717
+F92A>6D6A
+F92B>72FC
+F92C>90CE
+F92D>4F86
+F92E>51B7
+F92F>52DE
+F930>64C4
+F931>6AD3
+F932>7210
+F933>76E7
+F934>8001
+F935>8606
+F936>865C
+F937>8DEF
+F938>9732
+F939>9B6F
+F93A>9DFA
+F93B>788C
+F93C>797F
+F93D>7DA0
+F93E>83C9
+F93F>9304
+F940>9E7F
+F941>8AD6
+F942>58DF
+F943>5F04
+F944>7C60
+F945>807E
+F946>7262
+F947>78CA
+F948>8CC2
+F949>96F7
+F94A>58D8
+F94B>5C62
+F94C>6A13
+F94D>6DDA
+F94E>6F0F
+F94F>7D2F
+F950>7E37
+F951>964B
+F952>52D2
+F953>808B
+F954>51DC
+F955>51CC
+F956>7A1C
+F957>7DBE
+F958>83F1
+F959>9675
+F95A>8B80
+F95B>62CF
+F95C>6A02
+F95D>8AFE
+F95E>4E39
+F95F>5BE7
+F960>6012
+F961>7387
+F962>7570
+F963>5317
+F964>78FB
+F965>4FBF
+F966>5FA9
+F967>4E0D
+F968>6CCC
+F969>6578
+F96A>7D22
+F96B>53C3
+F96C>585E
+F96D>7701
+F96E>8449
+F96F>8AAA
+F970>6BBA
+F971>8FB0
+F972>6C88
+F973>62FE
+F974>82E5
+F975>63A0
+F976>7565
+F977>4EAE
+F978>5169
+F979>51C9
+F97A>6881
+F97B>7CE7
+F97C>826F
+F97D>8AD2
+F97E>91CF
+F97F>52F5
+F980>5442
+F981>5973
+F982>5EEC
+F983>65C5
+F984>6FFE
+F985>792A
+F986>95AD
+F987>9A6A
+F988>9E97
+F989>9ECE
+F98A>529B
+F98B>66C6
+F98C>6B77
+F98D>8F62
+F98E>5E74
+F98F>6190
+F990>6200
+F991>649A
+F992>6F23
+F993>7149
+F994>7489
+F995>79CA
+F996>7DF4
+F997>806F
+F998>8F26
+F999>84EE
+F99A>9023
+F99B>934A
+F99C>5217
+F99D>52A3
+F99E>54BD
+F99F>70C8
+F9A0>88C2
+F9A1>8AAA
+F9A2>5EC9
+F9A3>5FF5
+F9A4>637B
+F9A5>6BAE
+F9A6>7C3E
+F9A7>7375
+F9A8>4EE4
+F9A9>56F9
+F9AA>5BE7
+F9AB>5DBA
+F9AC>601C
+F9AD>73B2
+F9AE>7469
+F9AF>7F9A
+F9B0>8046
+F9B1>9234
+F9B2>96F6
+F9B3>9748
+F9B4>9818
+F9B5>4F8B
+F9B6>79AE
+F9B7>91B4
+F9B8>96B8
+F9B9>60E1
+F9BA>4E86
+F9BB>50DA
+F9BC>5BEE
+F9BD>5C3F
+F9BE>6599
+F9BF>6A02
+F9C0>71CE
+F9C1>7642
+F9C2>84FC
+F9C3>907C
+F9C4>9F8D
+F9C5>6688
+F9C6>962E
+F9C7>5289
+F9C8>677B
+F9C9>67F3
+F9CA>6D41
+F9CB>6E9C
+F9CC>7409
+F9CD>7559
+F9CE>786B
+F9CF>7D10
+F9D0>985E
+F9D1>516D
+F9D2>622E
+F9D3>9678
+F9D4>502B
+F9D5>5D19
+F9D6>6DEA
+F9D7>8F2A
+F9D8>5F8B
+F9D9>6144
+F9DA>6817
+F9DB>7387
+F9DC>9686
+F9DD>5229
+F9DE>540F
+F9DF>5C65
+F9E0>6613
+F9E1>674E
+F9E2>68A8
+F9E3>6CE5
+F9E4>7406
+F9E5>75E2
+F9E6>7F79
+F9E7>88CF
+F9E8>88E1
+F9E9>91CC
+F9EA>96E2
+F9EB>533F
+F9EC>6EBA
+F9ED>541D
+F9EE>71D0
+F9EF>7498
+F9F0>85FA
+F9F1>96A3
+F9F2>9C57
+F9F3>9E9F
+F9F4>6797
+F9F5>6DCB
+F9F6>81E8
+F9F7>7ACB
+F9F8>7B20
+F9F9>7C92
+F9FA>72C0
+F9FB>7099
+F9FC>8B58
+F9FD>4EC0
+F9FE>8336
+F9FF>523A
+FA00>5207
+FA01>5EA6
+FA02>62D3
+FA03>7CD6
+FA04>5B85
+FA05>6D1E
+FA06>66B4
+FA07>8F3B
+FA08>884C
+FA09>964D
+FA0A>898B
+FA0B>5ED3
+FA0C>5140
+FA0D>55C0
+FA10>585A
+FA12>6674
+FA15>51DE
+FA16>732A
+FA17>76CA
+FA18>793C
+FA19>795E
+FA1A>7965
+FA1B>798F
+FA1C>9756
+FA1D>7CBE
+FA1E>7FBD
+FA20>8612
+FA22>8AF8
+FA25>9038
+FA26>90FD
+FA2A>98EF
+FA2B>98FC
+FA2C>9928
+FA2D>9DB4
+FA2E>90DE
+FA2F>96B7
+FA30>4FAE
+FA31>50E7
+FA32>514D
+FA33>52C9
+FA34>52E4
+FA35>5351
+FA36>559D
+FA37>5606
+FA38>5668
+FA39>5840
+FA3A>58A8
+FA3B>5C64
+FA3C>5C6E
+FA3D>6094
+FA3E>6168
+FA3F>618E
+FA40>61F2
+FA41>654F
+FA42>65E2
+FA43>6691
+FA44>6885
+FA45>6D77
+FA46>6E1A
+FA47>6F22
+FA48>716E
+FA49>722B
+FA4A>7422
+FA4B>7891
+FA4C>793E
+FA4D>7949
+FA4E>7948
+FA4F>7950
+FA50>7956
+FA51>795D
+FA52>798D
+FA53>798E
+FA54>7A40
+FA55>7A81
+FA56>7BC0
+FA57>7DF4
+FA58>7E09
+FA59>7E41
+FA5A>7F72
+FA5B>8005
+FA5C>81ED
+FA5D..FA5E>8279
+FA5F>8457
+FA60>8910
+FA61>8996
+FA62>8B01
+FA63>8B39
+FA64>8CD3
+FA65>8D08
+FA66>8FB6
+FA67>9038
+FA68>96E3
+FA69>97FF
+FA6A>983B
+FA6B>6075
+FA6C>242EE
+FA6D>8218
+FA70>4E26
+FA71>51B5
+FA72>5168
+FA73>4F80
+FA74>5145
+FA75>5180
+FA76>52C7
+FA77>52FA
+FA78>559D
+FA79>5555
+FA7A>5599
+FA7B>55E2
+FA7C>585A
+FA7D>58B3
+FA7E>5944
+FA7F>5954
+FA80>5A62
+FA81>5B28
+FA82>5ED2
+FA83>5ED9
+FA84>5F69
+FA85>5FAD
+FA86>60D8
+FA87>614E
+FA88>6108
+FA89>618E
+FA8A>6160
+FA8B>61F2
+FA8C>6234
+FA8D>63C4
+FA8E>641C
+FA8F>6452
+FA90>6556
+FA91>6674
+FA92>6717
+FA93>671B
+FA94>6756
+FA95>6B79
+FA96>6BBA
+FA97>6D41
+FA98>6EDB
+FA99>6ECB
+FA9A>6F22
+FA9B>701E
+FA9C>716E
+FA9D>77A7
+FA9E>7235
+FA9F>72AF
+FAA0>732A
+FAA1>7471
+FAA2>7506
+FAA3>753B
+FAA4>761D
+FAA5>761F
+FAA6>76CA
+FAA7>76DB
+FAA8>76F4
+FAA9>774A
+FAAA>7740
+FAAB>78CC
+FAAC>7AB1
+FAAD>7BC0
+FAAE>7C7B
+FAAF>7D5B
+FAB0>7DF4
+FAB1>7F3E
+FAB2>8005
+FAB3>8352
+FAB4>83EF
+FAB5>8779
+FAB6>8941
+FAB7>8986
+FAB8>8996
+FAB9>8ABF
+FABA>8AF8
+FABB>8ACB
+FABC>8B01
+FABD>8AFE
+FABE>8AED
+FABF>8B39
+FAC0>8B8A
+FAC1>8D08
+FAC2>8F38
+FAC3>9072
+FAC4>9199
+FAC5>9276
+FAC6>967C
+FAC7>96E3
+FAC8>9756
+FAC9>97DB
+FACA>97FF
+FACB>980B
+FACC>983B
+FACD>9B12
+FACE>9F9C
+FACF>2284A
+FAD0>22844
+FAD1>233D5
+FAD2>3B9D
+FAD3>4018
+FAD4>4039
+FAD5>25249
+FAD6>25CD0
+FAD7>27ED3
+FAD8>9F43
+FAD9>9F8E
+FB00>0066 0066
+FB01>0066 0069
+FB02>0066 006C
+FB03>0066 0066 0069
+FB04>0066 0066 006C
+FB05..FB06>0073 0074
+FB13>0574 0576
+FB14>0574 0565
+FB15>0574 056B
+FB16>057E 0576
+FB17>0574 056D
+FB1D>05D9 05B4
+FB1F>05F2 05B7
+FB20>05E2
+FB21>05D0
+FB22>05D3
+FB23>05D4
+FB24>05DB
+FB25>05DC
+FB26>05DD
+FB27>05E8
+FB28>05EA
+FB29>002B
+FB2A>05E9 05C1
+FB2B>05E9 05C2
+FB2C>05E9 05BC 05C1
+FB2D>05E9 05BC 05C2
+FB2E>05D0 05B7
+FB2F>05D0 05B8
+FB30>05D0 05BC
+FB31>05D1 05BC
+FB32>05D2 05BC
+FB33>05D3 05BC
+FB34>05D4 05BC
+FB35>05D5 05BC
+FB36>05D6 05BC
+FB38>05D8 05BC
+FB39>05D9 05BC
+FB3A>05DA 05BC
+FB3B>05DB 05BC
+FB3C>05DC 05BC
+FB3E>05DE 05BC
+FB40>05E0 05BC
+FB41>05E1 05BC
+FB43>05E3 05BC
+FB44>05E4 05BC
+FB46>05E6 05BC
+FB47>05E7 05BC
+FB48>05E8 05BC
+FB49>05E9 05BC
+FB4A>05EA 05BC
+FB4B>05D5 05B9
+FB4C>05D1 05BF
+FB4D>05DB 05BF
+FB4E>05E4 05BF
+FB4F>05D0 05DC
+FB50..FB51>0671
+FB52..FB55>067B
+FB56..FB59>067E
+FB5A..FB5D>0680
+FB5E..FB61>067A
+FB62..FB65>067F
+FB66..FB69>0679
+FB6A..FB6D>06A4
+FB6E..FB71>06A6
+FB72..FB75>0684
+FB76..FB79>0683
+FB7A..FB7D>0686
+FB7E..FB81>0687
+FB82..FB83>068D
+FB84..FB85>068C
+FB86..FB87>068E
+FB88..FB89>0688
+FB8A..FB8B>0698
+FB8C..FB8D>0691
+FB8E..FB91>06A9
+FB92..FB95>06AF
+FB96..FB99>06B3
+FB9A..FB9D>06B1
+FB9E..FB9F>06BA
+FBA0..FBA3>06BB
+FBA4..FBA5>06C0
+FBA6..FBA9>06C1
+FBAA..FBAD>06BE
+FBAE..FBAF>06D2
+FBB0..FBB1>06D3
+FBD3..FBD6>06AD
+FBD7..FBD8>06C7
+FBD9..FBDA>06C6
+FBDB..FBDC>06C8
+FBDD>06C7 0674
+FBDE..FBDF>06CB
+FBE0..FBE1>06C5
+FBE2..FBE3>06C9
+FBE4..FBE7>06D0
+FBE8..FBE9>0649
+FBEA..FBEB>0626 0627
+FBEC..FBED>0626 06D5
+FBEE..FBEF>0626 0648
+FBF0..FBF1>0626 06C7
+FBF2..FBF3>0626 06C6
+FBF4..FBF5>0626 06C8
+FBF6..FBF8>0626 06D0
+FBF9..FBFB>0626 0649
+FBFC..FBFF>06CC
+FC00>0626 062C
+FC01>0626 062D
+FC02>0626 0645
+FC03>0626 0649
+FC04>0626 064A
+FC05>0628 062C
+FC06>0628 062D
+FC07>0628 062E
+FC08>0628 0645
+FC09>0628 0649
+FC0A>0628 064A
+FC0B>062A 062C
+FC0C>062A 062D
+FC0D>062A 062E
+FC0E>062A 0645
+FC0F>062A 0649
+FC10>062A 064A
+FC11>062B 062C
+FC12>062B 0645
+FC13>062B 0649
+FC14>062B 064A
+FC15>062C 062D
+FC16>062C 0645
+FC17>062D 062C
+FC18>062D 0645
+FC19>062E 062C
+FC1A>062E 062D
+FC1B>062E 0645
+FC1C>0633 062C
+FC1D>0633 062D
+FC1E>0633 062E
+FC1F>0633 0645
+FC20>0635 062D
+FC21>0635 0645
+FC22>0636 062C
+FC23>0636 062D
+FC24>0636 062E
+FC25>0636 0645
+FC26>0637 062D
+FC27>0637 0645
+FC28>0638 0645
+FC29>0639 062C
+FC2A>0639 0645
+FC2B>063A 062C
+FC2C>063A 0645
+FC2D>0641 062C
+FC2E>0641 062D
+FC2F>0641 062E
+FC30>0641 0645
+FC31>0641 0649
+FC32>0641 064A
+FC33>0642 062D
+FC34>0642 0645
+FC35>0642 0649
+FC36>0642 064A
+FC37>0643 0627
+FC38>0643 062C
+FC39>0643 062D
+FC3A>0643 062E
+FC3B>0643 0644
+FC3C>0643 0645
+FC3D>0643 0649
+FC3E>0643 064A
+FC3F>0644 062C
+FC40>0644 062D
+FC41>0644 062E
+FC42>0644 0645
+FC43>0644 0649
+FC44>0644 064A
+FC45>0645 062C
+FC46>0645 062D
+FC47>0645 062E
+FC48>0645 0645
+FC49>0645 0649
+FC4A>0645 064A
+FC4B>0646 062C
+FC4C>0646 062D
+FC4D>0646 062E
+FC4E>0646 0645
+FC4F>0646 0649
+FC50>0646 064A
+FC51>0647 062C
+FC52>0647 0645
+FC53>0647 0649
+FC54>0647 064A
+FC55>064A 062C
+FC56>064A 062D
+FC57>064A 062E
+FC58>064A 0645
+FC59>064A 0649
+FC5A>064A 064A
+FC5B>0630 0670
+FC5C>0631 0670
+FC5D>0649 0670
+FC5E>0020 064C 0651
+FC5F>0020 064D 0651
+FC60>0020 064E 0651
+FC61>0020 064F 0651
+FC62>0020 0650 0651
+FC63>0020 0651 0670
+FC64>0626 0631
+FC65>0626 0632
+FC66>0626 0645
+FC67>0626 0646
+FC68>0626 0649
+FC69>0626 064A
+FC6A>0628 0631
+FC6B>0628 0632
+FC6C>0628 0645
+FC6D>0628 0646
+FC6E>0628 0649
+FC6F>0628 064A
+FC70>062A 0631
+FC71>062A 0632
+FC72>062A 0645
+FC73>062A 0646
+FC74>062A 0649
+FC75>062A 064A
+FC76>062B 0631
+FC77>062B 0632
+FC78>062B 0645
+FC79>062B 0646
+FC7A>062B 0649
+FC7B>062B 064A
+FC7C>0641 0649
+FC7D>0641 064A
+FC7E>0642 0649
+FC7F>0642 064A
+FC80>0643 0627
+FC81>0643 0644
+FC82>0643 0645
+FC83>0643 0649
+FC84>0643 064A
+FC85>0644 0645
+FC86>0644 0649
+FC87>0644 064A
+FC88>0645 0627
+FC89>0645 0645
+FC8A>0646 0631
+FC8B>0646 0632
+FC8C>0646 0645
+FC8D>0646 0646
+FC8E>0646 0649
+FC8F>0646 064A
+FC90>0649 0670
+FC91>064A 0631
+FC92>064A 0632
+FC93>064A 0645
+FC94>064A 0646
+FC95>064A 0649
+FC96>064A 064A
+FC97>0626 062C
+FC98>0626 062D
+FC99>0626 062E
+FC9A>0626 0645
+FC9B>0626 0647
+FC9C>0628 062C
+FC9D>0628 062D
+FC9E>0628 062E
+FC9F>0628 0645
+FCA0>0628 0647
+FCA1>062A 062C
+FCA2>062A 062D
+FCA3>062A 062E
+FCA4>062A 0645
+FCA5>062A 0647
+FCA6>062B 0645
+FCA7>062C 062D
+FCA8>062C 0645
+FCA9>062D 062C
+FCAA>062D 0645
+FCAB>062E 062C
+FCAC>062E 0645
+FCAD>0633 062C
+FCAE>0633 062D
+FCAF>0633 062E
+FCB0>0633 0645
+FCB1>0635 062D
+FCB2>0635 062E
+FCB3>0635 0645
+FCB4>0636 062C
+FCB5>0636 062D
+FCB6>0636 062E
+FCB7>0636 0645
+FCB8>0637 062D
+FCB9>0638 0645
+FCBA>0639 062C
+FCBB>0639 0645
+FCBC>063A 062C
+FCBD>063A 0645
+FCBE>0641 062C
+FCBF>0641 062D
+FCC0>0641 062E
+FCC1>0641 0645
+FCC2>0642 062D
+FCC3>0642 0645
+FCC4>0643 062C
+FCC5>0643 062D
+FCC6>0643 062E
+FCC7>0643 0644
+FCC8>0643 0645
+FCC9>0644 062C
+FCCA>0644 062D
+FCCB>0644 062E
+FCCC>0644 0645
+FCCD>0644 0647
+FCCE>0645 062C
+FCCF>0645 062D
+FCD0>0645 062E
+FCD1>0645 0645
+FCD2>0646 062C
+FCD3>0646 062D
+FCD4>0646 062E
+FCD5>0646 0645
+FCD6>0646 0647
+FCD7>0647 062C
+FCD8>0647 0645
+FCD9>0647 0670
+FCDA>064A 062C
+FCDB>064A 062D
+FCDC>064A 062E
+FCDD>064A 0645
+FCDE>064A 0647
+FCDF>0626 0645
+FCE0>0626 0647
+FCE1>0628 0645
+FCE2>0628 0647
+FCE3>062A 0645
+FCE4>062A 0647
+FCE5>062B 0645
+FCE6>062B 0647
+FCE7>0633 0645
+FCE8>0633 0647
+FCE9>0634 0645
+FCEA>0634 0647
+FCEB>0643 0644
+FCEC>0643 0645
+FCED>0644 0645
+FCEE>0646 0645
+FCEF>0646 0647
+FCF0>064A 0645
+FCF1>064A 0647
+FCF2>0640 064E 0651
+FCF3>0640 064F 0651
+FCF4>0640 0650 0651
+FCF5>0637 0649
+FCF6>0637 064A
+FCF7>0639 0649
+FCF8>0639 064A
+FCF9>063A 0649
+FCFA>063A 064A
+FCFB>0633 0649
+FCFC>0633 064A
+FCFD>0634 0649
+FCFE>0634 064A
+FCFF>062D 0649
+FD00>062D 064A
+FD01>062C 0649
+FD02>062C 064A
+FD03>062E 0649
+FD04>062E 064A
+FD05>0635 0649
+FD06>0635 064A
+FD07>0636 0649
+FD08>0636 064A
+FD09>0634 062C
+FD0A>0634 062D
+FD0B>0634 062E
+FD0C>0634 0645
+FD0D>0634 0631
+FD0E>0633 0631
+FD0F>0635 0631
+FD10>0636 0631
+FD11>0637 0649
+FD12>0637 064A
+FD13>0639 0649
+FD14>0639 064A
+FD15>063A 0649
+FD16>063A 064A
+FD17>0633 0649
+FD18>0633 064A
+FD19>0634 0649
+FD1A>0634 064A
+FD1B>062D 0649
+FD1C>062D 064A
+FD1D>062C 0649
+FD1E>062C 064A
+FD1F>062E 0649
+FD20>062E 064A
+FD21>0635 0649
+FD22>0635 064A
+FD23>0636 0649
+FD24>0636 064A
+FD25>0634 062C
+FD26>0634 062D
+FD27>0634 062E
+FD28>0634 0645
+FD29>0634 0631
+FD2A>0633 0631
+FD2B>0635 0631
+FD2C>0636 0631
+FD2D>0634 062C
+FD2E>0634 062D
+FD2F>0634 062E
+FD30>0634 0645
+FD31>0633 0647
+FD32>0634 0647
+FD33>0637 0645
+FD34>0633 062C
+FD35>0633 062D
+FD36>0633 062E
+FD37>0634 062C
+FD38>0634 062D
+FD39>0634 062E
+FD3A>0637 0645
+FD3B>0638 0645
+FD3C..FD3D>0627 064B
+FD50>062A 062C 0645
+FD51..FD52>062A 062D 062C
+FD53>062A 062D 0645
+FD54>062A 062E 0645
+FD55>062A 0645 062C
+FD56>062A 0645 062D
+FD57>062A 0645 062E
+FD58..FD59>062C 0645 062D
+FD5A>062D 0645 064A
+FD5B>062D 0645 0649
+FD5C>0633 062D 062C
+FD5D>0633 062C 062D
+FD5E>0633 062C 0649
+FD5F..FD60>0633 0645 062D
+FD61>0633 0645 062C
+FD62..FD63>0633 0645 0645
+FD64..FD65>0635 062D 062D
+FD66>0635 0645 0645
+FD67..FD68>0634 062D 0645
+FD69>0634 062C 064A
+FD6A..FD6B>0634 0645 062E
+FD6C..FD6D>0634 0645 0645
+FD6E>0636 062D 0649
+FD6F..FD70>0636 062E 0645
+FD71..FD72>0637 0645 062D
+FD73>0637 0645 0645
+FD74>0637 0645 064A
+FD75>0639 062C 0645
+FD76..FD77>0639 0645 0645
+FD78>0639 0645 0649
+FD79>063A 0645 0645
+FD7A>063A 0645 064A
+FD7B>063A 0645 0649
+FD7C..FD7D>0641 062E 0645
+FD7E>0642 0645 062D
+FD7F>0642 0645 0645
+FD80>0644 062D 0645
+FD81>0644 062D 064A
+FD82>0644 062D 0649
+FD83..FD84>0644 062C 062C
+FD85..FD86>0644 062E 0645
+FD87..FD88>0644 0645 062D
+FD89>0645 062D 062C
+FD8A>0645 062D 0645
+FD8B>0645 062D 064A
+FD8C>0645 062C 062D
+FD8D>0645 062C 0645
+FD8E>0645 062E 062C
+FD8F>0645 062E 0645
+FD92>0645 062C 062E
+FD93>0647 0645 062C
+FD94>0647 0645 0645
+FD95>0646 062D 0645
+FD96>0646 062D 0649
+FD97..FD98>0646 062C 0645
+FD99>0646 062C 0649
+FD9A>0646 0645 064A
+FD9B>0646 0645 0649
+FD9C..FD9D>064A 0645 0645
+FD9E>0628 062E 064A
+FD9F>062A 062C 064A
+FDA0>062A 062C 0649
+FDA1>062A 062E 064A
+FDA2>062A 062E 0649
+FDA3>062A 0645 064A
+FDA4>062A 0645 0649
+FDA5>062C 0645 064A
+FDA6>062C 062D 0649
+FDA7>062C 0645 0649
+FDA8>0633 062E 0649
+FDA9>0635 062D 064A
+FDAA>0634 062D 064A
+FDAB>0636 062D 064A
+FDAC>0644 062C 064A
+FDAD>0644 0645 064A
+FDAE>064A 062D 064A
+FDAF>064A 062C 064A
+FDB0>064A 0645 064A
+FDB1>0645 0645 064A
+FDB2>0642 0645 064A
+FDB3>0646 062D 064A
+FDB4>0642 0645 062D
+FDB5>0644 062D 0645
+FDB6>0639 0645 064A
+FDB7>0643 0645 064A
+FDB8>0646 062C 062D
+FDB9>0645 062E 064A
+FDBA>0644 062C 0645
+FDBB>0643 0645 0645
+FDBC>0644 062C 0645
+FDBD>0646 062C 062D
+FDBE>062C 062D 064A
+FDBF>062D 062C 064A
+FDC0>0645 062C 064A
+FDC1>0641 0645 064A
+FDC2>0628 062D 064A
+FDC3>0643 0645 0645
+FDC4>0639 062C 0645
+FDC5>0635 0645 0645
+FDC6>0633 062E 064A
+FDC7>0646 062C 064A
+FDF0>0635 0644 06D2
+FDF1>0642 0644 06D2
+FDF2>0627 0644 0644 0647
+FDF3>0627 0643 0628 0631
+FDF4>0645 062D 0645 062F
+FDF5>0635 0644 0639 0645
+FDF6>0631 0633 0648 0644
+FDF7>0639 0644 064A 0647
+FDF8>0648 0633 0644 0645
+FDF9>0635 0644 0649
+FDFA>0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645
+FDFB>062C 0644 0020 062C 0644 0627 0644 0647
+FDFC>0631 06CC 0627 0644
+FE00..FE0F>
+FE10>002C
+FE11>3001
+FE12>3002
+FE13>003A
+FE14>003B
+FE15>0021
+FE16>003F
+FE17>3016
+FE18>3017
+FE19>002E 002E 002E
+FE30>002E 002E
+FE31>2014
+FE32>2013
+FE33..FE34>005F
+FE35>0028
+FE36>0029
+FE37>007B
+FE38>007D
+FE39>3014
+FE3A>3015
+FE3B>3010
+FE3C>3011
+FE3D>300A
+FE3E>300B
+FE3F>3008
+FE40>3009
+FE41>300C
+FE42>300D
+FE43>300E
+FE44>300F
+FE47>005B
+FE48>005D
+FE49..FE4C>0020 0305
+FE4D..FE4F>005F
+FE50>002C
+FE51>3001
+FE52>002E
+FE54>003B
+FE55>003A
+FE56>003F
+FE57>0021
+FE58>2014
+FE59>0028
+FE5A>0029
+FE5B>007B
+FE5C>007D
+FE5D>3014
+FE5E>3015
+FE5F>0023
+FE60>0026
+FE61>002A
+FE62>002B
+FE63>002D
+FE64>003C
+FE65>003E
+FE66>003D
+FE68>005C
+FE69>0024
+FE6A>0025
+FE6B>0040
+FE70>0020 064B
+FE71>0640 064B
+FE72>0020 064C
+FE74>0020 064D
+FE76>0020 064E
+FE77>0640 064E
+FE78>0020 064F
+FE79>0640 064F
+FE7A>0020 0650
+FE7B>0640 0650
+FE7C>0020 0651
+FE7D>0640 0651
+FE7E>0020 0652
+FE7F>0640 0652
+FE80>0621
+FE81..FE82>0622
+FE83..FE84>0623
+FE85..FE86>0624
+FE87..FE88>0625
+FE89..FE8C>0626
+FE8D..FE8E>0627
+FE8F..FE92>0628
+FE93..FE94>0629
+FE95..FE98>062A
+FE99..FE9C>062B
+FE9D..FEA0>062C
+FEA1..FEA4>062D
+FEA5..FEA8>062E
+FEA9..FEAA>062F
+FEAB..FEAC>0630
+FEAD..FEAE>0631
+FEAF..FEB0>0632
+FEB1..FEB4>0633
+FEB5..FEB8>0634
+FEB9..FEBC>0635
+FEBD..FEC0>0636
+FEC1..FEC4>0637
+FEC5..FEC8>0638
+FEC9..FECC>0639
+FECD..FED0>063A
+FED1..FED4>0641
+FED5..FED8>0642
+FED9..FEDC>0643
+FEDD..FEE0>0644
+FEE1..FEE4>0645
+FEE5..FEE8>0646
+FEE9..FEEC>0647
+FEED..FEEE>0648
+FEEF..FEF0>0649
+FEF1..FEF4>064A
+FEF5..FEF6>0644 0622
+FEF7..FEF8>0644 0623
+FEF9..FEFA>0644 0625
+FEFB..FEFC>0644 0627
+FEFF>
+FF01>0021
+FF02>0022
+FF03>0023
+FF04>0024
+FF05>0025
+FF06>0026
+FF07>0027
+FF08>0028
+FF09>0029
+FF0A>002A
+FF0B>002B
+FF0C>002C
+FF0D>002D
+FF0E>002E
+FF0F>002F
+FF10>0030
+FF11>0031
+FF12>0032
+FF13>0033
+FF14>0034
+FF15>0035
+FF16>0036
+FF17>0037
+FF18>0038
+FF19>0039
+FF1A>003A
+FF1B>003B
+FF1C>003C
+FF1D>003D
+FF1E>003E
+FF1F>003F
+FF20>0040
+FF21>0061
+FF22>0062
+FF23>0063
+FF24>0064
+FF25>0065
+FF26>0066
+FF27>0067
+FF28>0068
+FF29>0069
+FF2A>006A
+FF2B>006B
+FF2C>006C
+FF2D>006D
+FF2E>006E
+FF2F>006F
+FF30>0070
+FF31>0071
+FF32>0072
+FF33>0073
+FF34>0074
+FF35>0075
+FF36>0076
+FF37>0077
+FF38>0078
+FF39>0079
+FF3A>007A
+FF3B>005B
+FF3C>005C
+FF3D>005D
+FF3E>005E
+FF3F>005F
+FF40>0060
+FF41>0061
+FF42>0062
+FF43>0063
+FF44>0064
+FF45>0065
+FF46>0066
+FF47>0067
+FF48>0068
+FF49>0069
+FF4A>006A
+FF4B>006B
+FF4C>006C
+FF4D>006D
+FF4E>006E
+FF4F>006F
+FF50>0070
+FF51>0071
+FF52>0072
+FF53>0073
+FF54>0074
+FF55>0075
+FF56>0076
+FF57>0077
+FF58>0078
+FF59>0079
+FF5A>007A
+FF5B>007B
+FF5C>007C
+FF5D>007D
+FF5E>007E
+FF5F>2985
+FF60>2986
+FF61>3002
+FF62>300C
+FF63>300D
+FF64>3001
+FF65>30FB
+FF66>30F2
+FF67>30A1
+FF68>30A3
+FF69>30A5
+FF6A>30A7
+FF6B>30A9
+FF6C>30E3
+FF6D>30E5
+FF6E>30E7
+FF6F>30C3
+FF70>30FC
+FF71>30A2
+FF72>30A4
+FF73>30A6
+FF74>30A8
+FF75>30AA
+FF76>30AB
+FF77>30AD
+FF78>30AF
+FF79>30B1
+FF7A>30B3
+FF7B>30B5
+FF7C>30B7
+FF7D>30B9
+FF7E>30BB
+FF7F>30BD
+FF80>30BF
+FF81>30C1
+FF82>30C4
+FF83>30C6
+FF84>30C8
+FF85>30CA
+FF86>30CB
+FF87>30CC
+FF88>30CD
+FF89>30CE
+FF8A>30CF
+FF8B>30D2
+FF8C>30D5
+FF8D>30D8
+FF8E>30DB
+FF8F>30DE
+FF90>30DF
+FF91>30E0
+FF92>30E1
+FF93>30E2
+FF94>30E4
+FF95>30E6
+FF96>30E8
+FF97>30E9
+FF98>30EA
+FF99>30EB
+FF9A>30EC
+FF9B>30ED
+FF9C>30EF
+FF9D>30F3
+FF9E>3099
+FF9F>309A
+FFA0>
+FFA1>1100
+FFA2>1101
+FFA3>11AA
+FFA4>1102
+FFA5>11AC
+FFA6>11AD
+FFA7>1103
+FFA8>1104
+FFA9>1105
+FFAA>11B0
+FFAB>11B1
+FFAC>11B2
+FFAD>11B3
+FFAE>11B4
+FFAF>11B5
+FFB0>111A
+FFB1>1106
+FFB2>1107
+FFB3>1108
+FFB4>1121
+FFB5>1109
+FFB6>110A
+FFB7>110B
+FFB8>110C
+FFB9>110D
+FFBA>110E
+FFBB>110F
+FFBC>1110
+FFBD>1111
+FFBE>1112
+FFC2>1161
+FFC3>1162
+FFC4>1163
+FFC5>1164
+FFC6>1165
+FFC7>1166
+FFCA>1167
+FFCB>1168
+FFCC>1169
+FFCD>116A
+FFCE>116B
+FFCF>116C
+FFD2>116D
+FFD3>116E
+FFD4>116F
+FFD5>1170
+FFD6>1171
+FFD7>1172
+FFDA>1173
+FFDB>1174
+FFDC>1175
+FFE0>00A2
+FFE1>00A3
+FFE2>00AC
+FFE3>0020 0304
+FFE4>00A6
+FFE5>00A5
+FFE6>20A9
+FFE8>2502
+FFE9>2190
+FFEA>2191
+FFEB>2192
+FFEC>2193
+FFED>25A0
+FFEE>25CB
+FFF0..FFF8>
+10400>10428
+10401>10429
+10402>1042A
+10403>1042B
+10404>1042C
+10405>1042D
+10406>1042E
+10407>1042F
+10408>10430
+10409>10431
+1040A>10432
+1040B>10433
+1040C>10434
+1040D>10435
+1040E>10436
+1040F>10437
+10410>10438
+10411>10439
+10412>1043A
+10413>1043B
+10414>1043C
+10415>1043D
+10416>1043E
+10417>1043F
+10418>10440
+10419>10441
+1041A>10442
+1041B>10443
+1041C>10444
+1041D>10445
+1041E>10446
+1041F>10447
+10420>10448
+10421>10449
+10422>1044A
+10423>1044B
+10424>1044C
+10425>1044D
+10426>1044E
+10427>1044F
+104B0>104D8
+104B1>104D9
+104B2>104DA
+104B3>104DB
+104B4>104DC
+104B5>104DD
+104B6>104DE
+104B7>104DF
+104B8>104E0
+104B9>104E1
+104BA>104E2
+104BB>104E3
+104BC>104E4
+104BD>104E5
+104BE>104E6
+104BF>104E7
+104C0>104E8
+104C1>104E9
+104C2>104EA
+104C3>104EB
+104C4>104EC
+104C5>104ED
+104C6>104EE
+104C7>104EF
+104C8>104F0
+104C9>104F1
+104CA>104F2
+104CB>104F3
+104CC>104F4
+104CD>104F5
+104CE>104F6
+104CF>104F7
+104D0>104F8
+104D1>104F9
+104D2>104FA
+104D3>104FB
+10570>10597
+10571>10598
+10572>10599
+10573>1059A
+10574>1059B
+10575>1059C
+10576>1059D
+10577>1059E
+10578>1059F
+10579>105A0
+1057A>105A1
+1057C>105A3
+1057D>105A4
+1057E>105A5
+1057F>105A6
+10580>105A7
+10581>105A8
+10582>105A9
+10583>105AA
+10584>105AB
+10585>105AC
+10586>105AD
+10587>105AE
+10588>105AF
+10589>105B0
+1058A>105B1
+1058C>105B3
+1058D>105B4
+1058E>105B5
+1058F>105B6
+10590>105B7
+10591>105B8
+10592>105B9
+10594>105BB
+10595>105BC
+10781>02D0
+10782>02D1
+10783>00E6
+10784>0299
+10785>0253
+10787>02A3
+10788>AB66
+10789>02A5
+1078A>02A4
+1078B>0256
+1078C>0257
+1078D>1D91
+1078E>0258
+1078F>025E
+10790>02A9
+10791>0264
+10792>0262
+10793>0260
+10794>029B
+10795>0127
+10796>029C
+10797>0267
+10798>0284
+10799>02AA
+1079A>02AB
+1079B>026C
+1079C>1DF04
+1079D>A78E
+1079E>026E
+1079F>1DF05
+107A0>028E
+107A1>1DF06
+107A2>00F8
+107A3>0276
+107A4>0277
+107A5>0071
+107A6>027A
+107A7>1DF08
+107A8>027D
+107A9>027E
+107AA>0280
+107AB>02A8
+107AC>02A6
+107AD>AB67
+107AE>02A7
+107AF>0288
+107B0>2C71
+107B2>028F
+107B3>02A1
+107B4>02A2
+107B5>0298
+107B6>01C0
+107B7>01C1
+107B8>01C2
+107B9>1DF0A
+107BA>1DF1E
+10C80>10CC0
+10C81>10CC1
+10C82>10CC2
+10C83>10CC3
+10C84>10CC4
+10C85>10CC5
+10C86>10CC6
+10C87>10CC7
+10C88>10CC8
+10C89>10CC9
+10C8A>10CCA
+10C8B>10CCB
+10C8C>10CCC
+10C8D>10CCD
+10C8E>10CCE
+10C8F>10CCF
+10C90>10CD0
+10C91>10CD1
+10C92>10CD2
+10C93>10CD3
+10C94>10CD4
+10C95>10CD5
+10C96>10CD6
+10C97>10CD7
+10C98>10CD8
+10C99>10CD9
+10C9A>10CDA
+10C9B>10CDB
+10C9C>10CDC
+10C9D>10CDD
+10C9E>10CDE
+10C9F>10CDF
+10CA0>10CE0
+10CA1>10CE1
+10CA2>10CE2
+10CA3>10CE3
+10CA4>10CE4
+10CA5>10CE5
+10CA6>10CE6
+10CA7>10CE7
+10CA8>10CE8
+10CA9>10CE9
+10CAA>10CEA
+10CAB>10CEB
+10CAC>10CEC
+10CAD>10CED
+10CAE>10CEE
+10CAF>10CEF
+10CB0>10CF0
+10CB1>10CF1
+10CB2>10CF2
+118A0>118C0
+118A1>118C1
+118A2>118C2
+118A3>118C3
+118A4>118C4
+118A5>118C5
+118A6>118C6
+118A7>118C7
+118A8>118C8
+118A9>118C9
+118AA>118CA
+118AB>118CB
+118AC>118CC
+118AD>118CD
+118AE>118CE
+118AF>118CF
+118B0>118D0
+118B1>118D1
+118B2>118D2
+118B3>118D3
+118B4>118D4
+118B5>118D5
+118B6>118D6
+118B7>118D7
+118B8>118D8
+118B9>118D9
+118BA>118DA
+118BB>118DB
+118BC>118DC
+118BD>118DD
+118BE>118DE
+118BF>118DF
+16E40>16E60
+16E41>16E61
+16E42>16E62
+16E43>16E63
+16E44>16E64
+16E45>16E65
+16E46>16E66
+16E47>16E67
+16E48>16E68
+16E49>16E69
+16E4A>16E6A
+16E4B>16E6B
+16E4C>16E6C
+16E4D>16E6D
+16E4E>16E6E
+16E4F>16E6F
+16E50>16E70
+16E51>16E71
+16E52>16E72
+16E53>16E73
+16E54>16E74
+16E55>16E75
+16E56>16E76
+16E57>16E77
+16E58>16E78
+16E59>16E79
+16E5A>16E7A
+16E5B>16E7B
+16E5C>16E7C
+16E5D>16E7D
+16E5E>16E7E
+16E5F>16E7F
+1BCA0..1BCA3>
+1D15E>1D157 1D165
+1D15F>1D158 1D165
+1D160>1D158 1D165 1D16E
+1D161>1D158 1D165 1D16F
+1D162>1D158 1D165 1D170
+1D163>1D158 1D165 1D171
+1D164>1D158 1D165 1D172
+1D173..1D17A>
+1D1BB>1D1B9 1D165
+1D1BC>1D1BA 1D165
+1D1BD>1D1B9 1D165 1D16E
+1D1BE>1D1BA 1D165 1D16E
+1D1BF>1D1B9 1D165 1D16F
+1D1C0>1D1BA 1D165 1D16F
+1D400>0061
+1D401>0062
+1D402>0063
+1D403>0064
+1D404>0065
+1D405>0066
+1D406>0067
+1D407>0068
+1D408>0069
+1D409>006A
+1D40A>006B
+1D40B>006C
+1D40C>006D
+1D40D>006E
+1D40E>006F
+1D40F>0070
+1D410>0071
+1D411>0072
+1D412>0073
+1D413>0074
+1D414>0075
+1D415>0076
+1D416>0077
+1D417>0078
+1D418>0079
+1D419>007A
+1D41A>0061
+1D41B>0062
+1D41C>0063
+1D41D>0064
+1D41E>0065
+1D41F>0066
+1D420>0067
+1D421>0068
+1D422>0069
+1D423>006A
+1D424>006B
+1D425>006C
+1D426>006D
+1D427>006E
+1D428>006F
+1D429>0070
+1D42A>0071
+1D42B>0072
+1D42C>0073
+1D42D>0074
+1D42E>0075
+1D42F>0076
+1D430>0077
+1D431>0078
+1D432>0079
+1D433>007A
+1D434>0061
+1D435>0062
+1D436>0063
+1D437>0064
+1D438>0065
+1D439>0066
+1D43A>0067
+1D43B>0068
+1D43C>0069
+1D43D>006A
+1D43E>006B
+1D43F>006C
+1D440>006D
+1D441>006E
+1D442>006F
+1D443>0070
+1D444>0071
+1D445>0072
+1D446>0073
+1D447>0074
+1D448>0075
+1D449>0076
+1D44A>0077
+1D44B>0078
+1D44C>0079
+1D44D>007A
+1D44E>0061
+1D44F>0062
+1D450>0063
+1D451>0064
+1D452>0065
+1D453>0066
+1D454>0067
+1D456>0069
+1D457>006A
+1D458>006B
+1D459>006C
+1D45A>006D
+1D45B>006E
+1D45C>006F
+1D45D>0070
+1D45E>0071
+1D45F>0072
+1D460>0073
+1D461>0074
+1D462>0075
+1D463>0076
+1D464>0077
+1D465>0078
+1D466>0079
+1D467>007A
+1D468>0061
+1D469>0062
+1D46A>0063
+1D46B>0064
+1D46C>0065
+1D46D>0066
+1D46E>0067
+1D46F>0068
+1D470>0069
+1D471>006A
+1D472>006B
+1D473>006C
+1D474>006D
+1D475>006E
+1D476>006F
+1D477>0070
+1D478>0071
+1D479>0072
+1D47A>0073
+1D47B>0074
+1D47C>0075
+1D47D>0076
+1D47E>0077
+1D47F>0078
+1D480>0079
+1D481>007A
+1D482>0061
+1D483>0062
+1D484>0063
+1D485>0064
+1D486>0065
+1D487>0066
+1D488>0067
+1D489>0068
+1D48A>0069
+1D48B>006A
+1D48C>006B
+1D48D>006C
+1D48E>006D
+1D48F>006E
+1D490>006F
+1D491>0070
+1D492>0071
+1D493>0072
+1D494>0073
+1D495>0074
+1D496>0075
+1D497>0076
+1D498>0077
+1D499>0078
+1D49A>0079
+1D49B>007A
+1D49C>0061
+1D49E>0063
+1D49F>0064
+1D4A2>0067
+1D4A5>006A
+1D4A6>006B
+1D4A9>006E
+1D4AA>006F
+1D4AB>0070
+1D4AC>0071
+1D4AE>0073
+1D4AF>0074
+1D4B0>0075
+1D4B1>0076
+1D4B2>0077
+1D4B3>0078
+1D4B4>0079
+1D4B5>007A
+1D4B6>0061
+1D4B7>0062
+1D4B8>0063
+1D4B9>0064
+1D4BB>0066
+1D4BD>0068
+1D4BE>0069
+1D4BF>006A
+1D4C0>006B
+1D4C1>006C
+1D4C2>006D
+1D4C3>006E
+1D4C5>0070
+1D4C6>0071
+1D4C7>0072
+1D4C8>0073
+1D4C9>0074
+1D4CA>0075
+1D4CB>0076
+1D4CC>0077
+1D4CD>0078
+1D4CE>0079
+1D4CF>007A
+1D4D0>0061
+1D4D1>0062
+1D4D2>0063
+1D4D3>0064
+1D4D4>0065
+1D4D5>0066
+1D4D6>0067
+1D4D7>0068
+1D4D8>0069
+1D4D9>006A
+1D4DA>006B
+1D4DB>006C
+1D4DC>006D
+1D4DD>006E
+1D4DE>006F
+1D4DF>0070
+1D4E0>0071
+1D4E1>0072
+1D4E2>0073
+1D4E3>0074
+1D4E4>0075
+1D4E5>0076
+1D4E6>0077
+1D4E7>0078
+1D4E8>0079
+1D4E9>007A
+1D4EA>0061
+1D4EB>0062
+1D4EC>0063
+1D4ED>0064
+1D4EE>0065
+1D4EF>0066
+1D4F0>0067
+1D4F1>0068
+1D4F2>0069
+1D4F3>006A
+1D4F4>006B
+1D4F5>006C
+1D4F6>006D
+1D4F7>006E
+1D4F8>006F
+1D4F9>0070
+1D4FA>0071
+1D4FB>0072
+1D4FC>0073
+1D4FD>0074
+1D4FE>0075
+1D4FF>0076
+1D500>0077
+1D501>0078
+1D502>0079
+1D503>007A
+1D504>0061
+1D505>0062
+1D507>0064
+1D508>0065
+1D509>0066
+1D50A>0067
+1D50D>006A
+1D50E>006B
+1D50F>006C
+1D510>006D
+1D511>006E
+1D512>006F
+1D513>0070
+1D514>0071
+1D516>0073
+1D517>0074
+1D518>0075
+1D519>0076
+1D51A>0077
+1D51B>0078
+1D51C>0079
+1D51E>0061
+1D51F>0062
+1D520>0063
+1D521>0064
+1D522>0065
+1D523>0066
+1D524>0067
+1D525>0068
+1D526>0069
+1D527>006A
+1D528>006B
+1D529>006C
+1D52A>006D
+1D52B>006E
+1D52C>006F
+1D52D>0070
+1D52E>0071
+1D52F>0072
+1D530>0073
+1D531>0074
+1D532>0075
+1D533>0076
+1D534>0077
+1D535>0078
+1D536>0079
+1D537>007A
+1D538>0061
+1D539>0062
+1D53B>0064
+1D53C>0065
+1D53D>0066
+1D53E>0067
+1D540>0069
+1D541>006A
+1D542>006B
+1D543>006C
+1D544>006D
+1D546>006F
+1D54A>0073
+1D54B>0074
+1D54C>0075
+1D54D>0076
+1D54E>0077
+1D54F>0078
+1D550>0079
+1D552>0061
+1D553>0062
+1D554>0063
+1D555>0064
+1D556>0065
+1D557>0066
+1D558>0067
+1D559>0068
+1D55A>0069
+1D55B>006A
+1D55C>006B
+1D55D>006C
+1D55E>006D
+1D55F>006E
+1D560>006F
+1D561>0070
+1D562>0071
+1D563>0072
+1D564>0073
+1D565>0074
+1D566>0075
+1D567>0076
+1D568>0077
+1D569>0078
+1D56A>0079
+1D56B>007A
+1D56C>0061
+1D56D>0062
+1D56E>0063
+1D56F>0064
+1D570>0065
+1D571>0066
+1D572>0067
+1D573>0068
+1D574>0069
+1D575>006A
+1D576>006B
+1D577>006C
+1D578>006D
+1D579>006E
+1D57A>006F
+1D57B>0070
+1D57C>0071
+1D57D>0072
+1D57E>0073
+1D57F>0074
+1D580>0075
+1D581>0076
+1D582>0077
+1D583>0078
+1D584>0079
+1D585>007A
+1D586>0061
+1D587>0062
+1D588>0063
+1D589>0064
+1D58A>0065
+1D58B>0066
+1D58C>0067
+1D58D>0068
+1D58E>0069
+1D58F>006A
+1D590>006B
+1D591>006C
+1D592>006D
+1D593>006E
+1D594>006F
+1D595>0070
+1D596>0071
+1D597>0072
+1D598>0073
+1D599>0074
+1D59A>0075
+1D59B>0076
+1D59C>0077
+1D59D>0078
+1D59E>0079
+1D59F>007A
+1D5A0>0061
+1D5A1>0062
+1D5A2>0063
+1D5A3>0064
+1D5A4>0065
+1D5A5>0066
+1D5A6>0067
+1D5A7>0068
+1D5A8>0069
+1D5A9>006A
+1D5AA>006B
+1D5AB>006C
+1D5AC>006D
+1D5AD>006E
+1D5AE>006F
+1D5AF>0070
+1D5B0>0071
+1D5B1>0072
+1D5B2>0073
+1D5B3>0074
+1D5B4>0075
+1D5B5>0076
+1D5B6>0077
+1D5B7>0078
+1D5B8>0079
+1D5B9>007A
+1D5BA>0061
+1D5BB>0062
+1D5BC>0063
+1D5BD>0064
+1D5BE>0065
+1D5BF>0066
+1D5C0>0067
+1D5C1>0068
+1D5C2>0069
+1D5C3>006A
+1D5C4>006B
+1D5C5>006C
+1D5C6>006D
+1D5C7>006E
+1D5C8>006F
+1D5C9>0070
+1D5CA>0071
+1D5CB>0072
+1D5CC>0073
+1D5CD>0074
+1D5CE>0075
+1D5CF>0076
+1D5D0>0077
+1D5D1>0078
+1D5D2>0079
+1D5D3>007A
+1D5D4>0061
+1D5D5>0062
+1D5D6>0063
+1D5D7>0064
+1D5D8>0065
+1D5D9>0066
+1D5DA>0067
+1D5DB>0068
+1D5DC>0069
+1D5DD>006A
+1D5DE>006B
+1D5DF>006C
+1D5E0>006D
+1D5E1>006E
+1D5E2>006F
+1D5E3>0070
+1D5E4>0071
+1D5E5>0072
+1D5E6>0073
+1D5E7>0074
+1D5E8>0075
+1D5E9>0076
+1D5EA>0077
+1D5EB>0078
+1D5EC>0079
+1D5ED>007A
+1D5EE>0061
+1D5EF>0062
+1D5F0>0063
+1D5F1>0064
+1D5F2>0065
+1D5F3>0066
+1D5F4>0067
+1D5F5>0068
+1D5F6>0069
+1D5F7>006A
+1D5F8>006B
+1D5F9>006C
+1D5FA>006D
+1D5FB>006E
+1D5FC>006F
+1D5FD>0070
+1D5FE>0071
+1D5FF>0072
+1D600>0073
+1D601>0074
+1D602>0075
+1D603>0076
+1D604>0077
+1D605>0078
+1D606>0079
+1D607>007A
+1D608>0061
+1D609>0062
+1D60A>0063
+1D60B>0064
+1D60C>0065
+1D60D>0066
+1D60E>0067
+1D60F>0068
+1D610>0069
+1D611>006A
+1D612>006B
+1D613>006C
+1D614>006D
+1D615>006E
+1D616>006F
+1D617>0070
+1D618>0071
+1D619>0072
+1D61A>0073
+1D61B>0074
+1D61C>0075
+1D61D>0076
+1D61E>0077
+1D61F>0078
+1D620>0079
+1D621>007A
+1D622>0061
+1D623>0062
+1D624>0063
+1D625>0064
+1D626>0065
+1D627>0066
+1D628>0067
+1D629>0068
+1D62A>0069
+1D62B>006A
+1D62C>006B
+1D62D>006C
+1D62E>006D
+1D62F>006E
+1D630>006F
+1D631>0070
+1D632>0071
+1D633>0072
+1D634>0073
+1D635>0074
+1D636>0075
+1D637>0076
+1D638>0077
+1D639>0078
+1D63A>0079
+1D63B>007A
+1D63C>0061
+1D63D>0062
+1D63E>0063
+1D63F>0064
+1D640>0065
+1D641>0066
+1D642>0067
+1D643>0068
+1D644>0069
+1D645>006A
+1D646>006B
+1D647>006C
+1D648>006D
+1D649>006E
+1D64A>006F
+1D64B>0070
+1D64C>0071
+1D64D>0072
+1D64E>0073
+1D64F>0074
+1D650>0075
+1D651>0076
+1D652>0077
+1D653>0078
+1D654>0079
+1D655>007A
+1D656>0061
+1D657>0062
+1D658>0063
+1D659>0064
+1D65A>0065
+1D65B>0066
+1D65C>0067
+1D65D>0068
+1D65E>0069
+1D65F>006A
+1D660>006B
+1D661>006C
+1D662>006D
+1D663>006E
+1D664>006F
+1D665>0070
+1D666>0071
+1D667>0072
+1D668>0073
+1D669>0074
+1D66A>0075
+1D66B>0076
+1D66C>0077
+1D66D>0078
+1D66E>0079
+1D66F>007A
+1D670>0061
+1D671>0062
+1D672>0063
+1D673>0064
+1D674>0065
+1D675>0066
+1D676>0067
+1D677>0068
+1D678>0069
+1D679>006A
+1D67A>006B
+1D67B>006C
+1D67C>006D
+1D67D>006E
+1D67E>006F
+1D67F>0070
+1D680>0071
+1D681>0072
+1D682>0073
+1D683>0074
+1D684>0075
+1D685>0076
+1D686>0077
+1D687>0078
+1D688>0079
+1D689>007A
+1D68A>0061
+1D68B>0062
+1D68C>0063
+1D68D>0064
+1D68E>0065
+1D68F>0066
+1D690>0067
+1D691>0068
+1D692>0069
+1D693>006A
+1D694>006B
+1D695>006C
+1D696>006D
+1D697>006E
+1D698>006F
+1D699>0070
+1D69A>0071
+1D69B>0072
+1D69C>0073
+1D69D>0074
+1D69E>0075
+1D69F>0076
+1D6A0>0077
+1D6A1>0078
+1D6A2>0079
+1D6A3>007A
+1D6A4>0131
+1D6A5>0237
+1D6A8>03B1
+1D6A9>03B2
+1D6AA>03B3
+1D6AB>03B4
+1D6AC>03B5
+1D6AD>03B6
+1D6AE>03B7
+1D6AF>03B8
+1D6B0>03B9
+1D6B1>03BA
+1D6B2>03BB
+1D6B3>03BC
+1D6B4>03BD
+1D6B5>03BE
+1D6B6>03BF
+1D6B7>03C0
+1D6B8>03C1
+1D6B9>03B8
+1D6BA>03C3
+1D6BB>03C4
+1D6BC>03C5
+1D6BD>03C6
+1D6BE>03C7
+1D6BF>03C8
+1D6C0>03C9
+1D6C1>2207
+1D6C2>03B1
+1D6C3>03B2
+1D6C4>03B3
+1D6C5>03B4
+1D6C6>03B5
+1D6C7>03B6
+1D6C8>03B7
+1D6C9>03B8
+1D6CA>03B9
+1D6CB>03BA
+1D6CC>03BB
+1D6CD>03BC
+1D6CE>03BD
+1D6CF>03BE
+1D6D0>03BF
+1D6D1>03C0
+1D6D2>03C1
+1D6D3..1D6D4>03C3
+1D6D5>03C4
+1D6D6>03C5
+1D6D7>03C6
+1D6D8>03C7
+1D6D9>03C8
+1D6DA>03C9
+1D6DB>2202
+1D6DC>03B5
+1D6DD>03B8
+1D6DE>03BA
+1D6DF>03C6
+1D6E0>03C1
+1D6E1>03C0
+1D6E2>03B1
+1D6E3>03B2
+1D6E4>03B3
+1D6E5>03B4
+1D6E6>03B5
+1D6E7>03B6
+1D6E8>03B7
+1D6E9>03B8
+1D6EA>03B9
+1D6EB>03BA
+1D6EC>03BB
+1D6ED>03BC
+1D6EE>03BD
+1D6EF>03BE
+1D6F0>03BF
+1D6F1>03C0
+1D6F2>03C1
+1D6F3>03B8
+1D6F4>03C3
+1D6F5>03C4
+1D6F6>03C5
+1D6F7>03C6
+1D6F8>03C7
+1D6F9>03C8
+1D6FA>03C9
+1D6FB>2207
+1D6FC>03B1
+1D6FD>03B2
+1D6FE>03B3
+1D6FF>03B4
+1D700>03B5
+1D701>03B6
+1D702>03B7
+1D703>03B8
+1D704>03B9
+1D705>03BA
+1D706>03BB
+1D707>03BC
+1D708>03BD
+1D709>03BE
+1D70A>03BF
+1D70B>03C0
+1D70C>03C1
+1D70D..1D70E>03C3
+1D70F>03C4
+1D710>03C5
+1D711>03C6
+1D712>03C7
+1D713>03C8
+1D714>03C9
+1D715>2202
+1D716>03B5
+1D717>03B8
+1D718>03BA
+1D719>03C6
+1D71A>03C1
+1D71B>03C0
+1D71C>03B1
+1D71D>03B2
+1D71E>03B3
+1D71F>03B4
+1D720>03B5
+1D721>03B6
+1D722>03B7
+1D723>03B8
+1D724>03B9
+1D725>03BA
+1D726>03BB
+1D727>03BC
+1D728>03BD
+1D729>03BE
+1D72A>03BF
+1D72B>03C0
+1D72C>03C1
+1D72D>03B8
+1D72E>03C3
+1D72F>03C4
+1D730>03C5
+1D731>03C6
+1D732>03C7
+1D733>03C8
+1D734>03C9
+1D735>2207
+1D736>03B1
+1D737>03B2
+1D738>03B3
+1D739>03B4
+1D73A>03B5
+1D73B>03B6
+1D73C>03B7
+1D73D>03B8
+1D73E>03B9
+1D73F>03BA
+1D740>03BB
+1D741>03BC
+1D742>03BD
+1D743>03BE
+1D744>03BF
+1D745>03C0
+1D746>03C1
+1D747..1D748>03C3
+1D749>03C4
+1D74A>03C5
+1D74B>03C6
+1D74C>03C7
+1D74D>03C8
+1D74E>03C9
+1D74F>2202
+1D750>03B5
+1D751>03B8
+1D752>03BA
+1D753>03C6
+1D754>03C1
+1D755>03C0
+1D756>03B1
+1D757>03B2
+1D758>03B3
+1D759>03B4
+1D75A>03B5
+1D75B>03B6
+1D75C>03B7
+1D75D>03B8
+1D75E>03B9
+1D75F>03BA
+1D760>03BB
+1D761>03BC
+1D762>03BD
+1D763>03BE
+1D764>03BF
+1D765>03C0
+1D766>03C1
+1D767>03B8
+1D768>03C3
+1D769>03C4
+1D76A>03C5
+1D76B>03C6
+1D76C>03C7
+1D76D>03C8
+1D76E>03C9
+1D76F>2207
+1D770>03B1
+1D771>03B2
+1D772>03B3
+1D773>03B4
+1D774>03B5
+1D775>03B6
+1D776>03B7
+1D777>03B8
+1D778>03B9
+1D779>03BA
+1D77A>03BB
+1D77B>03BC
+1D77C>03BD
+1D77D>03BE
+1D77E>03BF
+1D77F>03C0
+1D780>03C1
+1D781..1D782>03C3
+1D783>03C4
+1D784>03C5
+1D785>03C6
+1D786>03C7
+1D787>03C8
+1D788>03C9
+1D789>2202
+1D78A>03B5
+1D78B>03B8
+1D78C>03BA
+1D78D>03C6
+1D78E>03C1
+1D78F>03C0
+1D790>03B1
+1D791>03B2
+1D792>03B3
+1D793>03B4
+1D794>03B5
+1D795>03B6
+1D796>03B7
+1D797>03B8
+1D798>03B9
+1D799>03BA
+1D79A>03BB
+1D79B>03BC
+1D79C>03BD
+1D79D>03BE
+1D79E>03BF
+1D79F>03C0
+1D7A0>03C1
+1D7A1>03B8
+1D7A2>03C3
+1D7A3>03C4
+1D7A4>03C5
+1D7A5>03C6
+1D7A6>03C7
+1D7A7>03C8
+1D7A8>03C9
+1D7A9>2207
+1D7AA>03B1
+1D7AB>03B2
+1D7AC>03B3
+1D7AD>03B4
+1D7AE>03B5
+1D7AF>03B6
+1D7B0>03B7
+1D7B1>03B8
+1D7B2>03B9
+1D7B3>03BA
+1D7B4>03BB
+1D7B5>03BC
+1D7B6>03BD
+1D7B7>03BE
+1D7B8>03BF
+1D7B9>03C0
+1D7BA>03C1
+1D7BB..1D7BC>03C3
+1D7BD>03C4
+1D7BE>03C5
+1D7BF>03C6
+1D7C0>03C7
+1D7C1>03C8
+1D7C2>03C9
+1D7C3>2202
+1D7C4>03B5
+1D7C5>03B8
+1D7C6>03BA
+1D7C7>03C6
+1D7C8>03C1
+1D7C9>03C0
+1D7CA..1D7CB>03DD
+1D7CE>0030
+1D7CF>0031
+1D7D0>0032
+1D7D1>0033
+1D7D2>0034
+1D7D3>0035
+1D7D4>0036
+1D7D5>0037
+1D7D6>0038
+1D7D7>0039
+1D7D8>0030
+1D7D9>0031
+1D7DA>0032
+1D7DB>0033
+1D7DC>0034
+1D7DD>0035
+1D7DE>0036
+1D7DF>0037
+1D7E0>0038
+1D7E1>0039
+1D7E2>0030
+1D7E3>0031
+1D7E4>0032
+1D7E5>0033
+1D7E6>0034
+1D7E7>0035
+1D7E8>0036
+1D7E9>0037
+1D7EA>0038
+1D7EB>0039
+1D7EC>0030
+1D7ED>0031
+1D7EE>0032
+1D7EF>0033
+1D7F0>0034
+1D7F1>0035
+1D7F2>0036
+1D7F3>0037
+1D7F4>0038
+1D7F5>0039
+1D7F6>0030
+1D7F7>0031
+1D7F8>0032
+1D7F9>0033
+1D7FA>0034
+1D7FB>0035
+1D7FC>0036
+1D7FD>0037
+1D7FE>0038
+1D7FF>0039
+1E030>0430
+1E031>0431
+1E032>0432
+1E033>0433
+1E034>0434
+1E035>0435
+1E036>0436
+1E037>0437
+1E038>0438
+1E039>043A
+1E03A>043B
+1E03B>043C
+1E03C>043E
+1E03D>043F
+1E03E>0440
+1E03F>0441
+1E040>0442
+1E041>0443
+1E042>0444
+1E043>0445
+1E044>0446
+1E045>0447
+1E046>0448
+1E047>044B
+1E048>044D
+1E049>044E
+1E04A>A689
+1E04B>04D9
+1E04C>0456
+1E04D>0458
+1E04E>04E9
+1E04F>04AF
+1E050>04CF
+1E051>0430
+1E052>0431
+1E053>0432
+1E054>0433
+1E055>0434
+1E056>0435
+1E057>0436
+1E058>0437
+1E059>0438
+1E05A>043A
+1E05B>043B
+1E05C>043E
+1E05D>043F
+1E05E>0441
+1E05F>0443
+1E060>0444
+1E061>0445
+1E062>0446
+1E063>0447
+1E064>0448
+1E065>044A
+1E066>044B
+1E067>0491
+1E068>0456
+1E069>0455
+1E06A>045F
+1E06B>04AB
+1E06C>A651
+1E06D>04B1
+1E900>1E922
+1E901>1E923
+1E902>1E924
+1E903>1E925
+1E904>1E926
+1E905>1E927
+1E906>1E928
+1E907>1E929
+1E908>1E92A
+1E909>1E92B
+1E90A>1E92C
+1E90B>1E92D
+1E90C>1E92E
+1E90D>1E92F
+1E90E>1E930
+1E90F>1E931
+1E910>1E932
+1E911>1E933
+1E912>1E934
+1E913>1E935
+1E914>1E936
+1E915>1E937
+1E916>1E938
+1E917>1E939
+1E918>1E93A
+1E919>1E93B
+1E91A>1E93C
+1E91B>1E93D
+1E91C>1E93E
+1E91D>1E93F
+1E91E>1E940
+1E91F>1E941
+1E920>1E942
+1E921>1E943
+1EE00>0627
+1EE01>0628
+1EE02>062C
+1EE03>062F
+1EE05>0648
+1EE06>0632
+1EE07>062D
+1EE08>0637
+1EE09>064A
+1EE0A>0643
+1EE0B>0644
+1EE0C>0645
+1EE0D>0646
+1EE0E>0633
+1EE0F>0639
+1EE10>0641
+1EE11>0635
+1EE12>0642
+1EE13>0631
+1EE14>0634
+1EE15>062A
+1EE16>062B
+1EE17>062E
+1EE18>0630
+1EE19>0636
+1EE1A>0638
+1EE1B>063A
+1EE1C>066E
+1EE1D>06BA
+1EE1E>06A1
+1EE1F>066F
+1EE21>0628
+1EE22>062C
+1EE24>0647
+1EE27>062D
+1EE29>064A
+1EE2A>0643
+1EE2B>0644
+1EE2C>0645
+1EE2D>0646
+1EE2E>0633
+1EE2F>0639
+1EE30>0641
+1EE31>0635
+1EE32>0642
+1EE34>0634
+1EE35>062A
+1EE36>062B
+1EE37>062E
+1EE39>0636
+1EE3B>063A
+1EE42>062C
+1EE47>062D
+1EE49>064A
+1EE4B>0644
+1EE4D>0646
+1EE4E>0633
+1EE4F>0639
+1EE51>0635
+1EE52>0642
+1EE54>0634
+1EE57>062E
+1EE59>0636
+1EE5B>063A
+1EE5D>06BA
+1EE5F>066F
+1EE61>0628
+1EE62>062C
+1EE64>0647
+1EE67>062D
+1EE68>0637
+1EE69>064A
+1EE6A>0643
+1EE6C>0645
+1EE6D>0646
+1EE6E>0633
+1EE6F>0639
+1EE70>0641
+1EE71>0635
+1EE72>0642
+1EE74>0634
+1EE75>062A
+1EE76>062B
+1EE77>062E
+1EE79>0636
+1EE7A>0638
+1EE7B>063A
+1EE7C>066E
+1EE7E>06A1
+1EE80>0627
+1EE81>0628
+1EE82>062C
+1EE83>062F
+1EE84>0647
+1EE85>0648
+1EE86>0632
+1EE87>062D
+1EE88>0637
+1EE89>064A
+1EE8B>0644
+1EE8C>0645
+1EE8D>0646
+1EE8E>0633
+1EE8F>0639
+1EE90>0641
+1EE91>0635
+1EE92>0642
+1EE93>0631
+1EE94>0634
+1EE95>062A
+1EE96>062B
+1EE97>062E
+1EE98>0630
+1EE99>0636
+1EE9A>0638
+1EE9B>063A
+1EEA1>0628
+1EEA2>062C
+1EEA3>062F
+1EEA5>0648
+1EEA6>0632
+1EEA7>062D
+1EEA8>0637
+1EEA9>064A
+1EEAB>0644
+1EEAC>0645
+1EEAD>0646
+1EEAE>0633
+1EEAF>0639
+1EEB0>0641
+1EEB1>0635
+1EEB2>0642
+1EEB3>0631
+1EEB4>0634
+1EEB5>062A
+1EEB6>062B
+1EEB7>062E
+1EEB8>0630
+1EEB9>0636
+1EEBA>0638
+1EEBB>063A
+1F100>0030 002E
+1F101>0030 002C
+1F102>0031 002C
+1F103>0032 002C
+1F104>0033 002C
+1F105>0034 002C
+1F106>0035 002C
+1F107>0036 002C
+1F108>0037 002C
+1F109>0038 002C
+1F10A>0039 002C
+1F110>0028 0061 0029
+1F111>0028 0062 0029
+1F112>0028 0063 0029
+1F113>0028 0064 0029
+1F114>0028 0065 0029
+1F115>0028 0066 0029
+1F116>0028 0067 0029
+1F117>0028 0068 0029
+1F118>0028 0069 0029
+1F119>0028 006A 0029
+1F11A>0028 006B 0029
+1F11B>0028 006C 0029
+1F11C>0028 006D 0029
+1F11D>0028 006E 0029
+1F11E>0028 006F 0029
+1F11F>0028 0070 0029
+1F120>0028 0071 0029
+1F121>0028 0072 0029
+1F122>0028 0073 0029
+1F123>0028 0074 0029
+1F124>0028 0075 0029
+1F125>0028 0076 0029
+1F126>0028 0077 0029
+1F127>0028 0078 0029
+1F128>0028 0079 0029
+1F129>0028 007A 0029
+1F12A>3014 0073 3015
+1F12B>0063
+1F12C>0072
+1F12D>0063 0064
+1F12E>0077 007A
+1F130>0061
+1F131>0062
+1F132>0063
+1F133>0064
+1F134>0065
+1F135>0066
+1F136>0067
+1F137>0068
+1F138>0069
+1F139>006A
+1F13A>006B
+1F13B>006C
+1F13C>006D
+1F13D>006E
+1F13E>006F
+1F13F>0070
+1F140>0071
+1F141>0072
+1F142>0073
+1F143>0074
+1F144>0075
+1F145>0076
+1F146>0077
+1F147>0078
+1F148>0079
+1F149>007A
+1F14A>0068 0076
+1F14B>006D 0076
+1F14C>0073 0064
+1F14D>0073 0073
+1F14E>0070 0070 0076
+1F14F>0077 0063
+1F16A>006D 0063
+1F16B>006D 0064
+1F16C>006D 0072
+1F190>0064 006A
+1F200>307B 304B
+1F201>30B3 30B3
+1F202>30B5
+1F210>624B
+1F211>5B57
+1F212>53CC
+1F213>30C7
+1F214>4E8C
+1F215>591A
+1F216>89E3
+1F217>5929
+1F218>4EA4
+1F219>6620
+1F21A>7121
+1F21B>6599
+1F21C>524D
+1F21D>5F8C
+1F21E>518D
+1F21F>65B0
+1F220>521D
+1F221>7D42
+1F222>751F
+1F223>8CA9
+1F224>58F0
+1F225>5439
+1F226>6F14
+1F227>6295
+1F228>6355
+1F229>4E00
+1F22A>4E09
+1F22B>904A
+1F22C>5DE6
+1F22D>4E2D
+1F22E>53F3
+1F22F>6307
+1F230>8D70
+1F231>6253
+1F232>7981
+1F233>7A7A
+1F234>5408
+1F235>6E80
+1F236>6709
+1F237>6708
+1F238>7533
+1F239>5272
+1F23A>55B6
+1F23B>914D
+1F240>3014 672C 3015
+1F241>3014 4E09 3015
+1F242>3014 4E8C 3015
+1F243>3014 5B89 3015
+1F244>3014 70B9 3015
+1F245>3014 6253 3015
+1F246>3014 76D7 3015
+1F247>3014 52DD 3015
+1F248>3014 6557 3015
+1F250>5F97
+1F251>53EF
+1FBF0>0030
+1FBF1>0031
+1FBF2>0032
+1FBF3>0033
+1FBF4>0034
+1FBF5>0035
+1FBF6>0036
+1FBF7>0037
+1FBF8>0038
+1FBF9>0039
+2F800>4E3D
+2F801>4E38
+2F802>4E41
+2F803>20122
+2F804>4F60
+2F805>4FAE
+2F806>4FBB
+2F807>5002
+2F808>507A
+2F809>5099
+2F80A>50E7
+2F80B>50CF
+2F80C>349E
+2F80D>2063A
+2F80E>514D
+2F80F>5154
+2F810>5164
+2F811>5177
+2F812>2051C
+2F813>34B9
+2F814>5167
+2F815>518D
+2F816>2054B
+2F817>5197
+2F818>51A4
+2F819>4ECC
+2F81A>51AC
+2F81B>51B5
+2F81C>291DF
+2F81D>51F5
+2F81E>5203
+2F81F>34DF
+2F820>523B
+2F821>5246
+2F822>5272
+2F823>5277
+2F824>3515
+2F825>52C7
+2F826>52C9
+2F827>52E4
+2F828>52FA
+2F829>5305
+2F82A>5306
+2F82B>5317
+2F82C>5349
+2F82D>5351
+2F82E>535A
+2F82F>5373
+2F830>537D
+2F831..2F833>537F
+2F834>20A2C
+2F835>7070
+2F836>53CA
+2F837>53DF
+2F838>20B63
+2F839>53EB
+2F83A>53F1
+2F83B>5406
+2F83C>549E
+2F83D>5438
+2F83E>5448
+2F83F>5468
+2F840>54A2
+2F841>54F6
+2F842>5510
+2F843>5553
+2F844>5563
+2F845..2F846>5584
+2F847>5599
+2F848>55AB
+2F849>55B3
+2F84A>55C2
+2F84B>5716
+2F84C>5606
+2F84D>5717
+2F84E>5651
+2F84F>5674
+2F850>5207
+2F851>58EE
+2F852>57CE
+2F853>57F4
+2F854>580D
+2F855>578B
+2F856>5832
+2F857>5831
+2F858>58AC
+2F859>214E4
+2F85A>58F2
+2F85B>58F7
+2F85C>5906
+2F85D>591A
+2F85E>5922
+2F85F>5962
+2F860>216A8
+2F861>216EA
+2F862>59EC
+2F863>5A1B
+2F864>5A27
+2F865>59D8
+2F866>5A66
+2F867>36EE
+2F868>36FC
+2F869>5B08
+2F86A..2F86B>5B3E
+2F86C>219C8
+2F86D>5BC3
+2F86E>5BD8
+2F86F>5BE7
+2F870>5BF3
+2F871>21B18
+2F872>5BFF
+2F873>5C06
+2F874>5F53
+2F875>5C22
+2F876>3781
+2F877>5C60
+2F878>5C6E
+2F879>5CC0
+2F87A>5C8D
+2F87B>21DE4
+2F87C>5D43
+2F87D>21DE6
+2F87E>5D6E
+2F87F>5D6B
+2F880>5D7C
+2F881>5DE1
+2F882>5DE2
+2F883>382F
+2F884>5DFD
+2F885>5E28
+2F886>5E3D
+2F887>5E69
+2F888>3862
+2F889>22183
+2F88A>387C
+2F88B>5EB0
+2F88C>5EB3
+2F88D>5EB6
+2F88E>5ECA
+2F88F>2A392
+2F890>5EFE
+2F891..2F892>22331
+2F893>8201
+2F894..2F895>5F22
+2F896>38C7
+2F897>232B8
+2F898>261DA
+2F899>5F62
+2F89A>5F6B
+2F89B>38E3
+2F89C>5F9A
+2F89D>5FCD
+2F89E>5FD7
+2F89F>5FF9
+2F8A0>6081
+2F8A1>393A
+2F8A2>391C
+2F8A3>6094
+2F8A4>226D4
+2F8A5>60C7
+2F8A6>6148
+2F8A7>614C
+2F8A8>614E
+2F8A9>614C
+2F8AA>617A
+2F8AB>618E
+2F8AC>61B2
+2F8AD>61A4
+2F8AE>61AF
+2F8AF>61DE
+2F8B0>61F2
+2F8B1>61F6
+2F8B2>6210
+2F8B3>621B
+2F8B4>625D
+2F8B5>62B1
+2F8B6>62D4
+2F8B7>6350
+2F8B8>22B0C
+2F8B9>633D
+2F8BA>62FC
+2F8BB>6368
+2F8BC>6383
+2F8BD>63E4
+2F8BE>22BF1
+2F8BF>6422
+2F8C0>63C5
+2F8C1>63A9
+2F8C2>3A2E
+2F8C3>6469
+2F8C4>647E
+2F8C5>649D
+2F8C6>6477
+2F8C7>3A6C
+2F8C8>654F
+2F8C9>656C
+2F8CA>2300A
+2F8CB>65E3
+2F8CC>66F8
+2F8CD>6649
+2F8CE>3B19
+2F8CF>6691
+2F8D0>3B08
+2F8D1>3AE4
+2F8D2>5192
+2F8D3>5195
+2F8D4>6700
+2F8D5>669C
+2F8D6>80AD
+2F8D7>43D9
+2F8D8>6717
+2F8D9>671B
+2F8DA>6721
+2F8DB>675E
+2F8DC>6753
+2F8DD>233C3
+2F8DE>3B49
+2F8DF>67FA
+2F8E0>6785
+2F8E1>6852
+2F8E2>6885
+2F8E3>2346D
+2F8E4>688E
+2F8E5>681F
+2F8E6>6914
+2F8E7>3B9D
+2F8E8>6942
+2F8E9>69A3
+2F8EA>69EA
+2F8EB>6AA8
+2F8EC>236A3
+2F8ED>6ADB
+2F8EE>3C18
+2F8EF>6B21
+2F8F0>238A7
+2F8F1>6B54
+2F8F2>3C4E
+2F8F3>6B72
+2F8F4>6B9F
+2F8F5>6BBA
+2F8F6>6BBB
+2F8F7>23A8D
+2F8F8>21D0B
+2F8F9>23AFA
+2F8FA>6C4E
+2F8FB>23CBC
+2F8FC>6CBF
+2F8FD>6CCD
+2F8FE>6C67
+2F8FF>6D16
+2F900>6D3E
+2F901>6D77
+2F902>6D41
+2F903>6D69
+2F904>6D78
+2F905>6D85
+2F906>23D1E
+2F907>6D34
+2F908>6E2F
+2F909>6E6E
+2F90A>3D33
+2F90B>6ECB
+2F90C>6EC7
+2F90D>23ED1
+2F90E>6DF9
+2F90F>6F6E
+2F910>23F5E
+2F911>23F8E
+2F912>6FC6
+2F913>7039
+2F914>701E
+2F915>701B
+2F916>3D96
+2F917>704A
+2F918>707D
+2F919>7077
+2F91A>70AD
+2F91B>20525
+2F91C>7145
+2F91D>24263
+2F91E>719C
+2F91F>243AB
+2F920>7228
+2F921>7235
+2F922>7250
+2F923>24608
+2F924>7280
+2F925>7295
+2F926>24735
+2F927>24814
+2F928>737A
+2F929>738B
+2F92A>3EAC
+2F92B>73A5
+2F92C..2F92D>3EB8
+2F92E>7447
+2F92F>745C
+2F930>7471
+2F931>7485
+2F932>74CA
+2F933>3F1B
+2F934>7524
+2F935>24C36
+2F936>753E
+2F937>24C92
+2F938>7570
+2F939>2219F
+2F93A>7610
+2F93B>24FA1
+2F93C>24FB8
+2F93D>25044
+2F93E>3FFC
+2F93F>4008
+2F940>76F4
+2F941>250F3
+2F942>250F2
+2F943>25119
+2F944>25133
+2F945>771E
+2F946..2F947>771F
+2F948>774A
+2F949>4039
+2F94A>778B
+2F94B>4046
+2F94C>4096
+2F94D>2541D
+2F94E>784E
+2F94F>788C
+2F950>78CC
+2F951>40E3
+2F952>25626
+2F953>7956
+2F954>2569A
+2F955>256C5
+2F956>798F
+2F957>79EB
+2F958>412F
+2F959>7A40
+2F95A>7A4A
+2F95B>7A4F
+2F95C>2597C
+2F95D..2F95E>25AA7
+2F95F>7AEE
+2F960>4202
+2F961>25BAB
+2F962>7BC6
+2F963>7BC9
+2F964>4227
+2F965>25C80
+2F966>7CD2
+2F967>42A0
+2F968>7CE8
+2F969>7CE3
+2F96A>7D00
+2F96B>25F86
+2F96C>7D63
+2F96D>4301
+2F96E>7DC7
+2F96F>7E02
+2F970>7E45
+2F971>4334
+2F972>26228
+2F973>26247
+2F974>4359
+2F975>262D9
+2F976>7F7A
+2F977>2633E
+2F978>7F95
+2F979>7FFA
+2F97A>8005
+2F97B>264DA
+2F97C>26523
+2F97D>8060
+2F97E>265A8
+2F97F>8070
+2F980>2335F
+2F981>43D5
+2F982>80B2
+2F983>8103
+2F984>440B
+2F985>813E
+2F986>5AB5
+2F987>267A7
+2F988>267B5
+2F989>23393
+2F98A>2339C
+2F98B>8201
+2F98C>8204
+2F98D>8F9E
+2F98E>446B
+2F98F>8291
+2F990>828B
+2F991>829D
+2F992>52B3
+2F993>82B1
+2F994>82B3
+2F995>82BD
+2F996>82E6
+2F997>26B3C
+2F998>82E5
+2F999>831D
+2F99A>8363
+2F99B>83AD
+2F99C>8323
+2F99D>83BD
+2F99E>83E7
+2F99F>8457
+2F9A0>8353
+2F9A1>83CA
+2F9A2>83CC
+2F9A3>83DC
+2F9A4>26C36
+2F9A5>26D6B
+2F9A6>26CD5
+2F9A7>452B
+2F9A8>84F1
+2F9A9>84F3
+2F9AA>8516
+2F9AB>273CA
+2F9AC>8564
+2F9AD>26F2C
+2F9AE>455D
+2F9AF>4561
+2F9B0>26FB1
+2F9B1>270D2
+2F9B2>456B
+2F9B3>8650
+2F9B4>865C
+2F9B5>8667
+2F9B6>8669
+2F9B7>86A9
+2F9B8>8688
+2F9B9>870E
+2F9BA>86E2
+2F9BB>8779
+2F9BC>8728
+2F9BD>876B
+2F9BE>8786
+2F9BF>45D7
+2F9C0>87E1
+2F9C1>8801
+2F9C2>45F9
+2F9C3>8860
+2F9C4>8863
+2F9C5>27667
+2F9C6>88D7
+2F9C7>88DE
+2F9C8>4635
+2F9C9>88FA
+2F9CA>34BB
+2F9CB>278AE
+2F9CC>27966
+2F9CD>46BE
+2F9CE>46C7
+2F9CF>8AA0
+2F9D0>8AED
+2F9D1>8B8A
+2F9D2>8C55
+2F9D3>27CA8
+2F9D4>8CAB
+2F9D5>8CC1
+2F9D6>8D1B
+2F9D7>8D77
+2F9D8>27F2F
+2F9D9>20804
+2F9DA>8DCB
+2F9DB>8DBC
+2F9DC>8DF0
+2F9DD>208DE
+2F9DE>8ED4
+2F9DF>8F38
+2F9E0>285D2
+2F9E1>285ED
+2F9E2>9094
+2F9E3>90F1
+2F9E4>9111
+2F9E5>2872E
+2F9E6>911B
+2F9E7>9238
+2F9E8>92D7
+2F9E9>92D8
+2F9EA>927C
+2F9EB>93F9
+2F9EC>9415
+2F9ED>28BFA
+2F9EE>958B
+2F9EF>4995
+2F9F0>95B7
+2F9F1>28D77
+2F9F2>49E6
+2F9F3>96C3
+2F9F4>5DB2
+2F9F5>9723
+2F9F6>29145
+2F9F7>2921A
+2F9F8>4A6E
+2F9F9>4A76
+2F9FA>97E0
+2F9FB>2940A
+2F9FC>4AB2
+2F9FD>29496
+2F9FE..2F9FF>980B
+2FA00>9829
+2FA01>295B6
+2FA02>98E2
+2FA03>4B33
+2FA04>9929
+2FA05>99A7
+2FA06>99C2
+2FA07>99FE
+2FA08>4BCE
+2FA09>29B30
+2FA0A>9B12
+2FA0B>9C40
+2FA0C>9CFD
+2FA0D>4CCE
+2FA0E>4CED
+2FA0F>9D67
+2FA10>2A0CE
+2FA11>4CF8
+2FA12>2A105
+2FA13>2A20E
+2FA14>2A291
+2FA15>9EBB
+2FA16>4D56
+2FA17>9EF9
+2FA18>9EFE
+2FA19>9F05
+2FA1A>9F0F
+2FA1B>9F16
+2FA1C>9F3B
+2FA1D>2A600
+E0000..E0FFF>
diff --git a/Build/source/libs/icu/icu-src/source/data/unidata/norm2/uts46.txt b/Build/source/libs/icu/icu-src/source/data/unidata/norm2/uts46.txt
index 20bb7088601..364e83dfc16 100644
--- a/Build/source/libs/icu/icu-src/source/data/unidata/norm2/uts46.txt
+++ b/Build/source/libs/icu/icu-src/source/data/unidata/norm2/uts46.txt
@@ -1,12 +1,12 @@
# Original file:
# IdnaMappingTable.txt
-# Date: 2022-05-02, 19:29:26 GMT
-# © 2022 Unicode®, Inc.
+# Date: 2023-08-10, 22:32:27 GMT
+# © 2023 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# For terms of use, see https://www.unicode.org/terms_of_use.html
#
# Unicode IDNA Compatible Preprocessing for UTS #46
-# Version: 15.0.0
+# Version: 15.1.0
#
# For documentation and usage, see https://www.unicode.org/reports/tr46
@@ -2053,7 +2053,7 @@
1E9A >0061 02BE # 1.1 LATIN SMALL LETTER A WITH RIGHT HALF RING
1E9B >1E61 # 2.0 LATIN SMALL LETTER LONG S WITH DOT ABOVE
# 1E9C..1E9D valid # 5.1 LATIN SMALL LETTER LONG S WITH DIAGONAL STROKE..LATIN SMALL LETTER LONG S WITH HIGH STROKE
-1E9E >0073 0073 # 5.1 LATIN CAPITAL LETTER SHARP S
+1E9E >00DF # 5.1 LATIN CAPITAL LETTER SHARP S
# 1E9F valid # 5.1 LATIN SMALL LETTER DELTA
1EA0 >1EA1 # 1.1 LATIN CAPITAL LETTER A WITH DOT BELOW
# 1EA1 valid # 1.1 LATIN SMALL LETTER A WITH DOT BELOW
@@ -2582,11 +2582,7 @@
# 222E valid # 1.1 CONTOUR INTEGRAL
222F >222E 222E # 1.1 SURFACE INTEGRAL
2230 >222E 222E 222E #1.1 VOLUME INTEGRAL
-# 2231..225F valid # 1.1 CLOCKWISE INTEGRAL..QUESTIONED EQUAL TO
-# 2260 disallowed_STD3_valid # 1.1 NOT EQUAL TO
-# 2261..226D valid # 1.1 IDENTICAL TO..NOT EQUIVALENT TO
-# 226E..226F disallowed_STD3_valid # 1.1 NOT LESS-THAN..NOT GREATER-THAN
-# 2270..22F1 valid # 1.1 NEITHER LESS-THAN NOR EQUAL TO..DOWN RIGHT DIAGONAL ELLIPSIS
+# 2231..22F1 valid # 1.1 CLOCKWISE INTEGRAL..DOWN RIGHT DIAGONAL ELLIPSIS
# 22F2..22FF valid # 3.2 ELEMENT OF WITH LONG HORIZONTAL STROKE..Z NOTATION BAG MEMBERSHIP
# 2300 valid # 1.1 DIAMETER SIGN
# 2301 valid # 3.0 ELECTRIC ARROW
@@ -3290,7 +3286,7 @@
2FD5 >9FA0 # 3.0 KANGXI RADICAL FLUTE
2FD6..2FEF >FFFD # NA <reserved-2FD6>..<reserved-2FEF>
2FF0..2FFB >FFFD # 3.0 IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT..IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID
-2FFC..2FFF >FFFD # NA <reserved-2FFC>..<reserved-2FFF>
+2FFC..2FFF >FFFD # 15.1 IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM RIGHT..IDEOGRAPHIC DESCRIPTION CHARACTER ROTATION
3000 >0020 # 1.1 IDEOGRAPHIC SPACE
# 3001 valid # 1.1 IDEOGRAPHIC COMMA
3002 >002E # 1.1 IDEOGRAPHIC FULL STOP
@@ -3442,7 +3438,8 @@
# 31BB..31BF valid # 13.0 BOPOMOFO FINAL LETTER G..BOPOMOFO LETTER AH
# 31C0..31CF valid # 4.1 CJK STROKE T..CJK STROKE N
# 31D0..31E3 valid # 5.1 CJK STROKE H..CJK STROKE Q
-31E4..31EF >FFFD # NA <reserved-31E4>..<reserved-31EF>
+31E4..31EE >FFFD # NA <reserved-31E4>..<reserved-31EE>
+31EF >FFFD # 15.1 IDEOGRAPHIC DESCRIPTION CHARACTER SUBTRACTION
# 31F0..31FF valid # 3.2 KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO
3200 >0028 1100 0029 #1.1 PARENTHESIZED HANGUL KIYEOK
3201 >0028 1102 0029 #1.1 PARENTHESIZED HANGUL NIEUN
@@ -8467,7 +8464,9 @@ FFFE..FFFF >FFFD # 1.1 <noncharacter-FFFE>..<noncharacte
# 2B820..2CEA1valid # 8.0 CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1
2CEA2..2CEAF >FFFD # NA <reserved-2CEA2>..<reserved-2CEAF>
# 2CEB0..2EBE0valid # 10.0 CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0
-2EBE1..2F7FF >FFFD # NA <reserved-2EBE1>..<reserved-2F7FF>
+2EBE1..2EBEF >FFFD # NA <reserved-2EBE1>..<reserved-2EBEF>
+# 2EBF0..2EE5Dvalid # 15.1 CJK UNIFIED IDEOGRAPH-2EBF0..CJK UNIFIED IDEOGRAPH-2EE5D
+2EE5E..2F7FF >FFFD # NA <reserved-2EE5E>..<reserved-2F7FF>
2F800 >4E3D # 3.1 CJK COMPATIBILITY IDEOGRAPH-2F800
2F801 >4E38 # 3.1 CJK COMPATIBILITY IDEOGRAPH-2F801
2F802 >4E41 # 3.1 CJK COMPATIBILITY IDEOGRAPH-2F802
diff --git a/Build/source/libs/icu/icu-src/source/data/unidata/ppucd.txt b/Build/source/libs/icu/icu-src/source/data/unidata/ppucd.txt
index 2cd73b1620b..1f85380a949 100644
--- a/Build/source/libs/icu/icu-src/source/data/unidata/ppucd.txt
+++ b/Build/source/libs/icu/icu-src/source/data/unidata/ppucd.txt
@@ -1,7 +1,7 @@
# Preparsed UCD generated by ICU preparseucd.py
# Copyright (C) 1991 and later: Unicode, Inc. and others.
# License & terms of use: http://www.unicode.org/copyright.html
-ucd;15.0.0
+ucd;15.1.0
property;Catalog;age;Age
property;Binary;AHex;ASCII_Hex_Digit
@@ -13,8 +13,8 @@ property;Binary;Bidi_C;Bidi_Control
property;Binary;Bidi_M;Bidi_Mirrored
property;Binary;;blank
property;Catalog;blk;Block
-property;Miscellaneous;bmg;Bidi_Mirroring_Glyph
-property;Miscellaneous;bpb;Bidi_Paired_Bracket
+property;String;bmg;Bidi_Mirroring_Glyph
+property;String;bpb;Bidi_Paired_Bracket
property;Enumerated;bpt;Bidi_Paired_Bracket_Type
property;Binary;Cased;Cased
property;Enumerated;ccc;Canonical_Combining_Class
@@ -41,7 +41,7 @@ property;Binary;EMod;Emoji_Modifier
property;Binary;Emoji;Emoji
property;Binary;Emoji_Keycap_Sequence;Emoji_Keycap_Sequence
property;Binary;EPres;Emoji_Presentation
-property;Miscellaneous;EqUIdeo;Equivalent_Unified_Ideograph
+property;String;EqUIdeo;Equivalent_Unified_Ideograph
property;Binary;Ext;Extender
property;Binary;ExtPict;Extended_Pictographic
property;String;FC_NFKC;FC_NFKC_Closure
@@ -56,10 +56,14 @@ property;Binary;Hex;Hex_Digit
property;Enumerated;hst;Hangul_Syllable_Type
property;Binary;Hyphen;Hyphen
property;Binary;IDC;ID_Continue
+property;Binary;ID_Compat_Math_Continue;ID_Compat_Math_Continue
+property;Binary;ID_Compat_Math_Start;ID_Compat_Math_Start
property;Binary;Ideo;Ideographic
property;Binary;IDS;ID_Start
property;Binary;IDSB;IDS_Binary_Operator
property;Binary;IDST;IDS_Trinary_Operator
+property;Binary;IDSU;IDS_Unary_Operator
+property;Enumerated;InCB;Indic_Conjunct_Break
property;Enumerated;InPC;Indic_Positional_Category
property;Enumerated;InSC;Indic_Syllabic_Category
property;Miscellaneous;isc;ISO_Comment
@@ -83,6 +87,7 @@ property;Enumerated;NFD_QC;NFD_Quick_Check
property;String;NFKC_CF;NFKC_Casefold
property;Binary;nfkcinert;NFKC_Inert
property;Enumerated;NFKC_QC;NFKC_Quick_Check
+property;String;NFKC_SCF;NFKC_Simple_Casefold
property;Binary;nfkdinert;NFKD_Inert
property;Enumerated;NFKD_QC;NFKD_Quick_Check
property;Enumerated;nt;Numeric_Type
@@ -135,6 +140,7 @@ value;age;12.1;V12_1
value;age;13.0;V13_0
value;age;14.0;V14_0
value;age;15.0;V15_0
+value;age;15.1;V15_1
value;age;2.0;V2_0
value;age;2.1;V2_1
value;age;3.0;V3_0
@@ -226,6 +232,7 @@ value;blk;CJK_Ext_E;CJK_Unified_Ideographs_Extension_E
value;blk;CJK_Ext_F;CJK_Unified_Ideographs_Extension_F
value;blk;CJK_Ext_G;CJK_Unified_Ideographs_Extension_G
value;blk;CJK_Ext_H;CJK_Unified_Ideographs_Extension_H
+value;blk;CJK_Ext_I;CJK_Unified_Ideographs_Extension_I
value;blk;CJK_Radicals_Sup;CJK_Radicals_Supplement
value;blk;CJK_Strokes;CJK_Strokes
value;blk;CJK_Symbols;CJK_Symbols_And_Punctuation
@@ -689,6 +696,10 @@ value;hst;LVT;LVT_Syllable
value;hst;NA;Not_Applicable
value;hst;T;Trailing_Jamo
value;hst;V;Vowel_Jamo
+value;InCB;Consonant;Consonant
+value;InCB;Extend;Extend
+value;InCB;Linker;Linker
+value;InCB;None;None
value;InPC;Bottom;Bottom
value;InPC;Bottom_And_Left;Bottom_And_Left
value;InPC;Bottom_And_Right;Bottom_And_Right
@@ -852,7 +863,10 @@ value;jt;R;Right_Joining
value;jt;T;Transparent
value;jt;U;Non_Joining
value;lb;AI;Ambiguous
+value;lb;AK;Aksara
value;lb;AL;Alphabetic
+value;lb;AP;Aksara_Prebase
+value;lb;AS;Aksara_Start
value;lb;B2;Break_Both
value;lb;BA;Break_After
value;lb;BB;Break_Before
@@ -890,6 +904,8 @@ value;lb;SA;Complex_Context
value;lb;SG;Surrogate
value;lb;SP;Space
value;lb;SY;Break_Symbols
+value;lb;VF;Virama_Final
+value;lb;VI;Virama
value;lb;WJ;Word_Joiner
value;lb;XX;Unknown
value;lb;ZW;ZWSpace
@@ -1267,7 +1283,7 @@ value;WB;WSegSpace;WSegSpace
value;WB;XX;Other
value;WB;ZWJ;ZWJ
-defaults;0000..10FFFF;age=NA;bc=L;blk=NB;bpt=n;cf=<code point>;dm=<code point>;dt=None;ea=N;FC_NFKC=<code point>;gc=Cn;GCB=XX;gcm=Cn;hst=NA;InPC=NA;InSC=Other;jg=No_Joining_Group;jt=U;lb=XX;lc=<code point>;NFC_QC=Y;NFD_QC=Y;NFKC_CF=<code point>;NFKC_QC=Y;NFKD_QC=Y;nt=None;SB=XX;sc=Zzzz;scf=<code point>;scx=<script>;slc=<code point>;stc=<code point>;suc=<code point>;tc=<code point>;uc=<code point>;vo=R;WB=XX
+defaults;0000..10FFFF;age=NA;bc=L;blk=NB;bpt=n;cf=<code point>;dm=<code point>;dt=None;ea=N;FC_NFKC=<code point>;gc=Cn;GCB=XX;gcm=Cn;hst=NA;InCB=None;InPC=NA;InSC=Other;jg=No_Joining_Group;jt=U;lb=XX;lc=<code point>;NFC_QC=Y;NFD_QC=Y;NFKC_CF=<code point>;NFKC_QC=Y;NFKC_SCF=<code point>;NFKD_QC=Y;nt=None;SB=XX;sc=Zzzz;scf=<code point>;scx=<script>;slc=<code point>;stc=<code point>;suc=<code point>;tc=<code point>;uc=<code point>;vo=R;WB=XX
block;0000..007F;age=1.1;blk=ASCII;ea=Na;gc=Cc;Gr_Base;lb=AL;sc=Zyyy
# 0000..007F C0 Controls and Basic Latin (Basic Latin)
@@ -1345,32 +1361,32 @@ cp;003E;bc=ON;Bidi_M;bmg=003C;gc=Sm;Math;na=GREATER-THAN SIGN;Pat_Syn
cp;003F;bc=ON;gc=Po;lb=EX;na=QUESTION MARK;Pat_Syn;SB=ST;STerm;Term
cp;0040;bc=ON;gc=Po;na=COMMERCIAL AT;Pat_Syn
# Uppercase Latin alphabet
-cp;0041;AHex;Alpha;Cased;cf=0061;CWCF;CWCM;CWKCF;CWL;gc=Lu;Hex;IDC;IDS;na=LATIN CAPITAL LETTER A;NFKC_CF=0061;SB=UP;sc=Latn;scf=0061;slc=0061;Upper;WB=LE;XIDC;XIDS
-cp;0042;AHex;Alpha;Cased;cf=0062;CWCF;CWCM;CWKCF;CWL;gc=Lu;Hex;IDC;IDS;na=LATIN CAPITAL LETTER B;NFKC_CF=0062;SB=UP;sc=Latn;scf=0062;slc=0062;Upper;WB=LE;XIDC;XIDS
-cp;0043;AHex;Alpha;Cased;cf=0063;CWCF;CWCM;CWKCF;CWL;gc=Lu;Hex;IDC;IDS;na=LATIN CAPITAL LETTER C;NFKC_CF=0063;SB=UP;sc=Latn;scf=0063;slc=0063;Upper;WB=LE;XIDC;XIDS
-cp;0044;AHex;Alpha;Cased;cf=0064;CWCF;CWCM;CWKCF;CWL;gc=Lu;Hex;IDC;IDS;na=LATIN CAPITAL LETTER D;NFKC_CF=0064;SB=UP;sc=Latn;scf=0064;slc=0064;Upper;WB=LE;XIDC;XIDS
-cp;0045;AHex;Alpha;Cased;cf=0065;CWCF;CWCM;CWKCF;CWL;gc=Lu;Hex;IDC;IDS;na=LATIN CAPITAL LETTER E;NFKC_CF=0065;SB=UP;sc=Latn;scf=0065;slc=0065;Upper;WB=LE;XIDC;XIDS
-cp;0046;AHex;Alpha;Cased;cf=0066;CWCF;CWCM;CWKCF;CWL;gc=Lu;Hex;IDC;IDS;na=LATIN CAPITAL LETTER F;NFKC_CF=0066;SB=UP;sc=Latn;scf=0066;slc=0066;Upper;WB=LE;XIDC;XIDS
-cp;0047;Alpha;Cased;cf=0067;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER G;NFKC_CF=0067;SB=UP;sc=Latn;scf=0067;slc=0067;Upper;WB=LE;XIDC;XIDS
-cp;0048;Alpha;Cased;cf=0068;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER H;NFKC_CF=0068;SB=UP;sc=Latn;scf=0068;slc=0068;Upper;WB=LE;XIDC;XIDS
-cp;0049;Alpha;Cased;cf=0069;Conditional_Case_Mappings=lt More_Above:lc=0069 0307&tc=0049&uc=0049,tr Not_Before_Dot:lc=0131&tc=0049&uc=0049,az Not_Before_Dot:lc=0131&tc=0049&uc=0049;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER I;NFKC_CF=0069;SB=UP;sc=Latn;scf=0069;slc=0069;Turkic_Case_Folding=0131;Upper;WB=LE;XIDC;XIDS
-cp;004A;Alpha;Cased;cf=006A;Conditional_Case_Mappings=lt More_Above:lc=006A 0307&tc=004A&uc=004A;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER J;NFKC_CF=006A;SB=UP;sc=Latn;scf=006A;slc=006A;Upper;WB=LE;XIDC;XIDS
-cp;004B;Alpha;Cased;cf=006B;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER K;NFKC_CF=006B;SB=UP;sc=Latn;scf=006B;slc=006B;Upper;WB=LE;XIDC;XIDS
-cp;004C;Alpha;Cased;cf=006C;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER L;NFKC_CF=006C;SB=UP;sc=Latn;scf=006C;slc=006C;Upper;WB=LE;XIDC;XIDS
-cp;004D;Alpha;Cased;cf=006D;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER M;NFKC_CF=006D;SB=UP;sc=Latn;scf=006D;slc=006D;Upper;WB=LE;XIDC;XIDS
-cp;004E;Alpha;Cased;cf=006E;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER N;NFKC_CF=006E;SB=UP;sc=Latn;scf=006E;slc=006E;Upper;WB=LE;XIDC;XIDS
-cp;004F;Alpha;Cased;cf=006F;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER O;NFKC_CF=006F;SB=UP;sc=Latn;scf=006F;slc=006F;Upper;WB=LE;XIDC;XIDS
-cp;0050;Alpha;Cased;cf=0070;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER P;NFKC_CF=0070;SB=UP;sc=Latn;scf=0070;slc=0070;Upper;WB=LE;XIDC;XIDS
-cp;0051;Alpha;Cased;cf=0071;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER Q;NFKC_CF=0071;SB=UP;sc=Latn;scf=0071;slc=0071;Upper;WB=LE;XIDC;XIDS
-cp;0052;Alpha;Cased;cf=0072;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER R;NFKC_CF=0072;SB=UP;sc=Latn;scf=0072;slc=0072;Upper;WB=LE;XIDC;XIDS
-cp;0053;Alpha;Cased;cf=0073;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER S;NFKC_CF=0073;SB=UP;sc=Latn;scf=0073;slc=0073;Upper;WB=LE;XIDC;XIDS
-cp;0054;Alpha;Cased;cf=0074;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER T;NFKC_CF=0074;SB=UP;sc=Latn;scf=0074;slc=0074;Upper;WB=LE;XIDC;XIDS
-cp;0055;Alpha;Cased;cf=0075;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER U;NFKC_CF=0075;SB=UP;sc=Latn;scf=0075;slc=0075;Upper;WB=LE;XIDC;XIDS
-cp;0056;Alpha;Cased;cf=0076;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER V;NFKC_CF=0076;SB=UP;sc=Latn;scf=0076;slc=0076;Upper;WB=LE;XIDC;XIDS
-cp;0057;Alpha;Cased;cf=0077;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER W;NFKC_CF=0077;SB=UP;sc=Latn;scf=0077;slc=0077;Upper;WB=LE;XIDC;XIDS
-cp;0058;Alpha;Cased;cf=0078;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER X;NFKC_CF=0078;SB=UP;sc=Latn;scf=0078;slc=0078;Upper;WB=LE;XIDC;XIDS
-cp;0059;Alpha;Cased;cf=0079;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER Y;NFKC_CF=0079;SB=UP;sc=Latn;scf=0079;slc=0079;Upper;WB=LE;XIDC;XIDS
-cp;005A;Alpha;Cased;cf=007A;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER Z;NFKC_CF=007A;SB=UP;sc=Latn;scf=007A;slc=007A;Upper;WB=LE;XIDC;XIDS
+cp;0041;AHex;Alpha;Cased;cf=0061;CWCF;CWCM;CWKCF;CWL;gc=Lu;Hex;IDC;IDS;na=LATIN CAPITAL LETTER A;NFKC_CF=0061;NFKC_SCF=0061;SB=UP;sc=Latn;scf=0061;slc=0061;Upper;WB=LE;XIDC;XIDS
+cp;0042;AHex;Alpha;Cased;cf=0062;CWCF;CWCM;CWKCF;CWL;gc=Lu;Hex;IDC;IDS;na=LATIN CAPITAL LETTER B;NFKC_CF=0062;NFKC_SCF=0062;SB=UP;sc=Latn;scf=0062;slc=0062;Upper;WB=LE;XIDC;XIDS
+cp;0043;AHex;Alpha;Cased;cf=0063;CWCF;CWCM;CWKCF;CWL;gc=Lu;Hex;IDC;IDS;na=LATIN CAPITAL LETTER C;NFKC_CF=0063;NFKC_SCF=0063;SB=UP;sc=Latn;scf=0063;slc=0063;Upper;WB=LE;XIDC;XIDS
+cp;0044;AHex;Alpha;Cased;cf=0064;CWCF;CWCM;CWKCF;CWL;gc=Lu;Hex;IDC;IDS;na=LATIN CAPITAL LETTER D;NFKC_CF=0064;NFKC_SCF=0064;SB=UP;sc=Latn;scf=0064;slc=0064;Upper;WB=LE;XIDC;XIDS
+cp;0045;AHex;Alpha;Cased;cf=0065;CWCF;CWCM;CWKCF;CWL;gc=Lu;Hex;IDC;IDS;na=LATIN CAPITAL LETTER E;NFKC_CF=0065;NFKC_SCF=0065;SB=UP;sc=Latn;scf=0065;slc=0065;Upper;WB=LE;XIDC;XIDS
+cp;0046;AHex;Alpha;Cased;cf=0066;CWCF;CWCM;CWKCF;CWL;gc=Lu;Hex;IDC;IDS;na=LATIN CAPITAL LETTER F;NFKC_CF=0066;NFKC_SCF=0066;SB=UP;sc=Latn;scf=0066;slc=0066;Upper;WB=LE;XIDC;XIDS
+cp;0047;Alpha;Cased;cf=0067;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER G;NFKC_CF=0067;NFKC_SCF=0067;SB=UP;sc=Latn;scf=0067;slc=0067;Upper;WB=LE;XIDC;XIDS
+cp;0048;Alpha;Cased;cf=0068;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER H;NFKC_CF=0068;NFKC_SCF=0068;SB=UP;sc=Latn;scf=0068;slc=0068;Upper;WB=LE;XIDC;XIDS
+cp;0049;Alpha;Cased;cf=0069;Conditional_Case_Mappings=lt More_Above:lc=0069 0307&tc=0049&uc=0049,tr Not_Before_Dot:lc=0131&tc=0049&uc=0049,az Not_Before_Dot:lc=0131&tc=0049&uc=0049;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER I;NFKC_CF=0069;NFKC_SCF=0069;SB=UP;sc=Latn;scf=0069;slc=0069;Turkic_Case_Folding=0131;Upper;WB=LE;XIDC;XIDS
+cp;004A;Alpha;Cased;cf=006A;Conditional_Case_Mappings=lt More_Above:lc=006A 0307&tc=004A&uc=004A;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER J;NFKC_CF=006A;NFKC_SCF=006A;SB=UP;sc=Latn;scf=006A;slc=006A;Upper;WB=LE;XIDC;XIDS
+cp;004B;Alpha;Cased;cf=006B;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER K;NFKC_CF=006B;NFKC_SCF=006B;SB=UP;sc=Latn;scf=006B;slc=006B;Upper;WB=LE;XIDC;XIDS
+cp;004C;Alpha;Cased;cf=006C;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER L;NFKC_CF=006C;NFKC_SCF=006C;SB=UP;sc=Latn;scf=006C;slc=006C;Upper;WB=LE;XIDC;XIDS
+cp;004D;Alpha;Cased;cf=006D;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER M;NFKC_CF=006D;NFKC_SCF=006D;SB=UP;sc=Latn;scf=006D;slc=006D;Upper;WB=LE;XIDC;XIDS
+cp;004E;Alpha;Cased;cf=006E;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER N;NFKC_CF=006E;NFKC_SCF=006E;SB=UP;sc=Latn;scf=006E;slc=006E;Upper;WB=LE;XIDC;XIDS
+cp;004F;Alpha;Cased;cf=006F;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER O;NFKC_CF=006F;NFKC_SCF=006F;SB=UP;sc=Latn;scf=006F;slc=006F;Upper;WB=LE;XIDC;XIDS
+cp;0050;Alpha;Cased;cf=0070;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER P;NFKC_CF=0070;NFKC_SCF=0070;SB=UP;sc=Latn;scf=0070;slc=0070;Upper;WB=LE;XIDC;XIDS
+cp;0051;Alpha;Cased;cf=0071;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER Q;NFKC_CF=0071;NFKC_SCF=0071;SB=UP;sc=Latn;scf=0071;slc=0071;Upper;WB=LE;XIDC;XIDS
+cp;0052;Alpha;Cased;cf=0072;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER R;NFKC_CF=0072;NFKC_SCF=0072;SB=UP;sc=Latn;scf=0072;slc=0072;Upper;WB=LE;XIDC;XIDS
+cp;0053;Alpha;Cased;cf=0073;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER S;NFKC_CF=0073;NFKC_SCF=0073;SB=UP;sc=Latn;scf=0073;slc=0073;Upper;WB=LE;XIDC;XIDS
+cp;0054;Alpha;Cased;cf=0074;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER T;NFKC_CF=0074;NFKC_SCF=0074;SB=UP;sc=Latn;scf=0074;slc=0074;Upper;WB=LE;XIDC;XIDS
+cp;0055;Alpha;Cased;cf=0075;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER U;NFKC_CF=0075;NFKC_SCF=0075;SB=UP;sc=Latn;scf=0075;slc=0075;Upper;WB=LE;XIDC;XIDS
+cp;0056;Alpha;Cased;cf=0076;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER V;NFKC_CF=0076;NFKC_SCF=0076;SB=UP;sc=Latn;scf=0076;slc=0076;Upper;WB=LE;XIDC;XIDS
+cp;0057;Alpha;Cased;cf=0077;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER W;NFKC_CF=0077;NFKC_SCF=0077;SB=UP;sc=Latn;scf=0077;slc=0077;Upper;WB=LE;XIDC;XIDS
+cp;0058;Alpha;Cased;cf=0078;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER X;NFKC_CF=0078;NFKC_SCF=0078;SB=UP;sc=Latn;scf=0078;slc=0078;Upper;WB=LE;XIDC;XIDS
+cp;0059;Alpha;Cased;cf=0079;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER Y;NFKC_CF=0079;NFKC_SCF=0079;SB=UP;sc=Latn;scf=0079;slc=0079;Upper;WB=LE;XIDC;XIDS
+cp;005A;Alpha;Cased;cf=007A;CWCF;CWCM;CWKCF;CWL;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER Z;NFKC_CF=007A;NFKC_SCF=007A;SB=UP;sc=Latn;scf=007A;slc=007A;Upper;WB=LE;XIDC;XIDS
# ASCII punctuation and symbols
cp;005B;bc=ON;Bidi_M;bmg=005D;bpb=005D;bpt=o;gc=Ps;lb=OP;na=LEFT SQUARE BRACKET;Pat_Syn;SB=CL
cp;005C;bc=ON;gc=Po;lb=PR;na=REVERSE SOLIDUS;Pat_Syn
@@ -1449,7 +1465,7 @@ cp;009D;bc=BN;gc=Cc;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=OPERATING SYSTEM CO
cp;009E;bc=BN;gc=Cc;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=PRIVACY MESSAGE,abbreviation=PM;NFKD_QC=Y;sc=Zyyy;WB=XX
cp;009F;bc=BN;gc=Cc;GCB=CN;-Gr_Base;lb=CM;Name_Alias=control=APPLICATION PROGRAM COMMAND,abbreviation=APC;NFKD_QC=Y;sc=Zyyy;WB=XX
# Latin-1 punctuation and symbols
-cp;00A0;bc=CS;CWKCF;dm=0020;dt=Nb;gc=Zs;InSC=Consonant_Placeholder;lb=GL;na=NO-BREAK SPACE;Name_Alias=abbreviation=NBSP;NFKC_CF=0020;NFKC_QC=N;SB=SP;sc=Zyyy;WB=XX;WSpace
+cp;00A0;bc=CS;CWKCF;dm=0020;dt=Nb;gc=Zs;InSC=Consonant_Placeholder;lb=GL;na=NO-BREAK SPACE;Name_Alias=abbreviation=NBSP;NFKC_CF=0020;NFKC_QC=N;NFKC_SCF=0020;SB=SP;sc=Zyyy;WB=XX;WSpace
cp;00A1;bc=ON;ea=A;gc=Po;lb=OP;na=INVERTED EXCLAMATION MARK;NFKD_QC=Y;Pat_Syn;sc=Zyyy;WB=XX
cp;00A2;bc=ET;ea=Na;gc=Sc;lb=PO;na=CENT SIGN;NFKD_QC=Y;Pat_Syn;sc=Zyyy;WB=XX
cp;00A3;bc=ET;ea=Na;gc=Sc;lb=PR;na=POUND SIGN;NFKD_QC=Y;Pat_Syn;sc=Zyyy;WB=XX
@@ -1457,66 +1473,67 @@ cp;00A4;bc=ET;ea=A;gc=Sc;lb=PR;na=CURRENCY SIGN;NFKD_QC=Y;Pat_Syn;sc=Zyyy;WB=XX
cp;00A5;bc=ET;ea=Na;gc=Sc;lb=PR;na=YEN SIGN;NFKD_QC=Y;Pat_Syn;sc=Zyyy;WB=XX
cp;00A6;bc=ON;ea=Na;gc=So;na=BROKEN BAR;NFKD_QC=Y;Pat_Syn;sc=Zyyy;WB=XX
cp;00A7;bc=ON;ea=A;gc=Po;lb=AI;na=SECTION SIGN;NFKD_QC=Y;Pat_Syn;sc=Zyyy;vo=U;WB=XX
-cp;00A8;bc=ON;CI;CWKCF;Dia;dm=0020 0308;dt=Com;ea=A;gc=Sk;lb=AI;na=DIAERESIS;NFKC_CF=0020 0308;NFKC_QC=N;sc=Zyyy;WB=XX
+cp;00A8;bc=ON;CI;CWKCF;Dia;dm=0020 0308;dt=Com;ea=A;gc=Sk;lb=AI;na=DIAERESIS;NFKC_CF=0020 0308;NFKC_QC=N;NFKC_SCF=0020 0308;sc=Zyyy;WB=XX
cp;00A9;bc=ON;Emoji;ExtPict;gc=So;na=COPYRIGHT SIGN;NFKD_QC=Y;Pat_Syn;sc=Zyyy;vo=U;WB=XX
-cp;00AA;Alpha;Cased;CWKCF;dm=0061;dt=Sup;ea=A;gc=Lo;IDC;IDS;lb=AI;Lower;na=FEMININE ORDINAL INDICATOR;NFKC_CF=0061;NFKC_QC=N;SB=LO;XIDC;XIDS
+cp;00AA;Alpha;Cased;CWKCF;dm=0061;dt=Sup;ea=A;gc=Lo;IDC;IDS;lb=AI;Lower;na=FEMININE ORDINAL INDICATOR;NFKC_CF=0061;NFKC_QC=N;NFKC_SCF=0061;SB=LO;XIDC;XIDS
cp;00AB;bc=ON;Bidi_M;bmg=00BB;gc=Pi;lb=QU;na=LEFT-POINTING DOUBLE ANGLE QUOTATION MARK;NFKD_QC=Y;Pat_Syn;QMark;SB=CL;sc=Zyyy;WB=XX
cp;00AC;bc=ON;ea=Na;gc=Sm;Math;na=NOT SIGN;NFKD_QC=Y;Pat_Syn;sc=Zyyy;WB=XX
-cp;00AD;bc=BN;CI;CWKCF;DI;ea=A;gc=Cf;GCB=CN;-Gr_Base;Hyphen;jt=T;lb=BA;na=SOFT HYPHEN;Name_Alias=abbreviation=SHY;NFKC_CF=;NFKD_QC=Y;SB=FO;sc=Zyyy;WB=FO
+cp;00AD;bc=BN;CI;CWKCF;DI;ea=A;gc=Cf;GCB=CN;-Gr_Base;Hyphen;jt=T;lb=BA;na=SOFT HYPHEN;Name_Alias=abbreviation=SHY;NFKC_CF=;NFKC_SCF=;NFKD_QC=Y;SB=FO;sc=Zyyy;WB=FO
cp;00AE;bc=ON;ea=A;Emoji;ExtPict;gc=So;na=REGISTERED SIGN;NFKD_QC=Y;Pat_Syn;sc=Zyyy;vo=U;WB=XX
-cp;00AF;bc=ON;CI;CWKCF;Dia;dm=0020 0304;dt=Com;ea=Na;gc=Sk;na=MACRON;NFKC_CF=0020 0304;NFKC_QC=N;sc=Zyyy;WB=XX
+cp;00AF;bc=ON;CI;CWKCF;Dia;dm=0020 0304;dt=Com;ea=Na;gc=Sk;na=MACRON;NFKC_CF=0020 0304;NFKC_QC=N;NFKC_SCF=0020 0304;sc=Zyyy;WB=XX
cp;00B0;bc=ET;ea=A;gc=So;lb=PO;na=DEGREE SIGN;NFKD_QC=Y;Pat_Syn;sc=Zyyy;WB=XX
cp;00B1;bc=ET;ea=A;gc=Sm;lb=PR;Math;na=PLUS-MINUS SIGN;NFKD_QC=Y;Pat_Syn;sc=Zyyy;vo=U;WB=XX
-cp;00B2;bc=EN;CWKCF;dm=0032;dt=Sup;ea=A;gc=No;InSC=Syllable_Modifier;lb=AI;na=SUPERSCRIPT TWO;NFKC_CF=0032;NFKC_QC=N;nt=Di;nv=2;sc=Zyyy;WB=XX
-cp;00B3;bc=EN;CWKCF;dm=0033;dt=Sup;ea=A;gc=No;InSC=Syllable_Modifier;lb=AI;na=SUPERSCRIPT THREE;NFKC_CF=0033;NFKC_QC=N;nt=Di;nv=3;sc=Zyyy;WB=XX
-cp;00B4;bc=ON;CI;CWKCF;Dia;dm=0020 0301;dt=Com;ea=A;gc=Sk;lb=BB;na=ACUTE ACCENT;NFKC_CF=0020 0301;NFKC_QC=N;sc=Zyyy;WB=XX
-cp;00B5;Alpha;Cased;cf=03BC;CWCF;CWCM;CWKCF;CWT;CWU;dm=03BC;dt=Com;IDC;IDS;Lower;na=MICRO SIGN;NFKC_CF=03BC;NFKC_QC=N;SB=LO;sc=Zyyy;scf=03BC;stc=039C;suc=039C;XIDC;XIDS
+cp;00B2;bc=EN;CWKCF;dm=0032;dt=Sup;ea=A;gc=No;ID_Compat_Math_Continue;InSC=Syllable_Modifier;lb=AI;na=SUPERSCRIPT TWO;NFKC_CF=0032;NFKC_QC=N;NFKC_SCF=0032;nt=Di;nv=2;sc=Zyyy;WB=XX
+cp;00B3;bc=EN;CWKCF;dm=0033;dt=Sup;ea=A;gc=No;ID_Compat_Math_Continue;InSC=Syllable_Modifier;lb=AI;na=SUPERSCRIPT THREE;NFKC_CF=0033;NFKC_QC=N;NFKC_SCF=0033;nt=Di;nv=3;sc=Zyyy;WB=XX
+cp;00B4;bc=ON;CI;CWKCF;Dia;dm=0020 0301;dt=Com;ea=A;gc=Sk;lb=BB;na=ACUTE ACCENT;NFKC_CF=0020 0301;NFKC_QC=N;NFKC_SCF=0020 0301;sc=Zyyy;WB=XX
+cp;00B5;Alpha;Cased;cf=03BC;CWCF;CWCM;CWKCF;CWT;CWU;dm=03BC;dt=Com;IDC;IDS;Lower;na=MICRO SIGN;NFKC_CF=03BC;NFKC_QC=N;NFKC_SCF=03BC;SB=LO;sc=Zyyy;scf=03BC;stc=039C;suc=039C;XIDC;XIDS
cp;00B6;bc=ON;ea=A;gc=Po;lb=AI;na=PILCROW SIGN;NFKD_QC=Y;Pat_Syn;sc=Zyyy;WB=XX
cp;00B7;bc=ON;CI;Dia;ea=A;Ext;gc=Po;IDC;lb=AI;na=MIDDLE DOT;NFKD_QC=Y;sc=Zyyy;WB=ML;XIDC
-cp;00B8;bc=ON;CI;CWKCF;Dia;dm=0020 0327;dt=Com;ea=A;gc=Sk;lb=AI;na=CEDILLA;NFKC_CF=0020 0327;NFKC_QC=N;sc=Zyyy;WB=XX
-cp;00B9;bc=EN;CWKCF;dm=0031;dt=Sup;ea=A;gc=No;lb=AI;na=SUPERSCRIPT ONE;NFKC_CF=0031;NFKC_QC=N;nt=Di;nv=1;sc=Zyyy;WB=XX
-cp;00BA;Alpha;Cased;CWKCF;dm=006F;dt=Sup;ea=A;gc=Lo;IDC;IDS;lb=AI;Lower;na=MASCULINE ORDINAL INDICATOR;NFKC_CF=006F;NFKC_QC=N;SB=LO;XIDC;XIDS
+cp;00B8;bc=ON;CI;CWKCF;Dia;dm=0020 0327;dt=Com;ea=A;gc=Sk;lb=AI;na=CEDILLA;NFKC_CF=0020 0327;NFKC_QC=N;NFKC_SCF=0020 0327;sc=Zyyy;WB=XX
+cp;00B9;bc=EN;CWKCF;dm=0031;dt=Sup;ea=A;gc=No;ID_Compat_Math_Continue;lb=AI;na=SUPERSCRIPT ONE;NFKC_CF=0031;NFKC_QC=N;NFKC_SCF=0031;nt=Di;nv=1;sc=Zyyy;WB=XX
+cp;00BA;Alpha;Cased;CWKCF;dm=006F;dt=Sup;ea=A;gc=Lo;IDC;IDS;lb=AI;Lower;na=MASCULINE ORDINAL INDICATOR;NFKC_CF=006F;NFKC_QC=N;NFKC_SCF=006F;SB=LO;XIDC;XIDS
cp;00BB;bc=ON;Bidi_M;bmg=00AB;gc=Pf;lb=QU;na=RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK;NFKD_QC=Y;Pat_Syn;QMark;SB=CL;sc=Zyyy;WB=XX
# Vulgar fractions
-cp;00BC;bc=ON;CWKCF;dm=0031 2044 0034;dt=Fra;ea=A;gc=No;lb=AI;na=VULGAR FRACTION ONE QUARTER;NFKC_CF=0031 2044 0034;NFKC_QC=N;nt=Nu;nv=1/4;sc=Zyyy;vo=U;WB=XX
-cp;00BD;bc=ON;CWKCF;dm=0031 2044 0032;dt=Fra;ea=A;gc=No;lb=AI;na=VULGAR FRACTION ONE HALF;NFKC_CF=0031 2044 0032;NFKC_QC=N;nt=Nu;nv=1/2;sc=Zyyy;vo=U;WB=XX
-cp;00BE;bc=ON;CWKCF;dm=0033 2044 0034;dt=Fra;ea=A;gc=No;lb=AI;na=VULGAR FRACTION THREE QUARTERS;NFKC_CF=0033 2044 0034;NFKC_QC=N;nt=Nu;nv=3/4;sc=Zyyy;vo=U;WB=XX
+cp;00BC;bc=ON;CWKCF;dm=0031 2044 0034;dt=Fra;ea=A;gc=No;lb=AI;na=VULGAR FRACTION ONE QUARTER;NFKC_CF=0031 2044 0034;NFKC_QC=N;NFKC_SCF=0031 2044 0034;nt=Nu;nv=1/4;sc=Zyyy;vo=U;WB=XX
+cp;00BD;bc=ON;CWKCF;dm=0031 2044 0032;dt=Fra;ea=A;gc=No;lb=AI;na=VULGAR FRACTION ONE HALF;NFKC_CF=0031 2044 0032;NFKC_QC=N;NFKC_SCF=0031 2044 0032;nt=Nu;nv=1/2;sc=Zyyy;vo=U;WB=XX
+cp;00BE;bc=ON;CWKCF;dm=0033 2044 0034;dt=Fra;ea=A;gc=No;lb=AI;na=VULGAR FRACTION THREE QUARTERS;NFKC_CF=0033 2044 0034;NFKC_QC=N;NFKC_SCF=0033 2044 0034;nt=Nu;nv=3/4;sc=Zyyy;vo=U;WB=XX
# Punctuation
cp;00BF;bc=ON;ea=A;gc=Po;lb=OP;na=INVERTED QUESTION MARK;NFKD_QC=Y;Pat_Syn;sc=Zyyy;WB=XX
-# Letters
-cp;00C0;Alpha;Cased;cf=00E0;CWCF;CWCM;CWKCF;CWL;dm=0041 0300;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER A WITH GRAVE;NFD_QC=N;NFKC_CF=00E0;SB=UP;scf=00E0;slc=00E0;Upper;XIDC;XIDS
-cp;00C1;Alpha;Cased;cf=00E1;CWCF;CWCM;CWKCF;CWL;dm=0041 0301;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER A WITH ACUTE;NFD_QC=N;NFKC_CF=00E1;SB=UP;scf=00E1;slc=00E1;Upper;XIDC;XIDS
-cp;00C2;Alpha;Cased;cf=00E2;CWCF;CWCM;CWKCF;CWL;dm=0041 0302;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER A WITH CIRCUMFLEX;NFD_QC=N;NFKC_CF=00E2;SB=UP;scf=00E2;slc=00E2;Upper;XIDC;XIDS
-cp;00C3;Alpha;Cased;cf=00E3;CWCF;CWCM;CWKCF;CWL;dm=0041 0303;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER A WITH TILDE;NFD_QC=N;NFKC_CF=00E3;SB=UP;scf=00E3;slc=00E3;Upper;XIDC;XIDS
-cp;00C4;Alpha;Cased;cf=00E4;CWCF;CWCM;CWKCF;CWL;dm=0041 0308;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER A WITH DIAERESIS;NFD_QC=N;NFKC_CF=00E4;SB=UP;scf=00E4;slc=00E4;Upper;XIDC;XIDS
-cp;00C5;Alpha;Cased;cf=00E5;CWCF;CWCM;CWKCF;CWL;dm=0041 030A;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER A WITH RING ABOVE;NFD_QC=N;NFKC_CF=00E5;SB=UP;scf=00E5;slc=00E5;Upper;XIDC;XIDS
-cp;00C6;Alpha;Cased;cf=00E6;CWCF;CWCM;CWKCF;CWL;ea=A;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER AE;NFKC_CF=00E6;NFKD_QC=Y;SB=UP;scf=00E6;slc=00E6;Upper;XIDC;XIDS
-cp;00C7;Alpha;Cased;cf=00E7;CWCF;CWCM;CWKCF;CWL;dm=0043 0327;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER C WITH CEDILLA;NFD_QC=N;NFKC_CF=00E7;SB=UP;scf=00E7;slc=00E7;Upper;XIDC;XIDS
-cp;00C8;Alpha;Cased;cf=00E8;CWCF;CWCM;CWKCF;CWL;dm=0045 0300;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER E WITH GRAVE;NFD_QC=N;NFKC_CF=00E8;SB=UP;scf=00E8;slc=00E8;Upper;XIDC;XIDS
-cp;00C9;Alpha;Cased;cf=00E9;CWCF;CWCM;CWKCF;CWL;dm=0045 0301;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER E WITH ACUTE;NFD_QC=N;NFKC_CF=00E9;SB=UP;scf=00E9;slc=00E9;Upper;XIDC;XIDS
-cp;00CA;Alpha;Cased;cf=00EA;CWCF;CWCM;CWKCF;CWL;dm=0045 0302;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER E WITH CIRCUMFLEX;NFD_QC=N;NFKC_CF=00EA;SB=UP;scf=00EA;slc=00EA;Upper;XIDC;XIDS
-cp;00CB;Alpha;Cased;cf=00EB;CWCF;CWCM;CWKCF;CWL;dm=0045 0308;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER E WITH DIAERESIS;NFD_QC=N;NFKC_CF=00EB;SB=UP;scf=00EB;slc=00EB;Upper;XIDC;XIDS
-cp;00CC;Alpha;Cased;cf=00EC;Conditional_Case_Mappings=lt:lc=0069 0307 0300&tc=00CC&uc=00CC;CWCF;CWCM;CWKCF;CWL;dm=0049 0300;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER I WITH GRAVE;NFD_QC=N;NFKC_CF=00EC;SB=UP;scf=00EC;slc=00EC;Upper;XIDC;XIDS
-cp;00CD;Alpha;Cased;cf=00ED;Conditional_Case_Mappings=lt:lc=0069 0307 0301&tc=00CD&uc=00CD;CWCF;CWCM;CWKCF;CWL;dm=0049 0301;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER I WITH ACUTE;NFD_QC=N;NFKC_CF=00ED;SB=UP;scf=00ED;slc=00ED;Upper;XIDC;XIDS
-cp;00CE;Alpha;Cased;cf=00EE;CWCF;CWCM;CWKCF;CWL;dm=0049 0302;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER I WITH CIRCUMFLEX;NFD_QC=N;NFKC_CF=00EE;SB=UP;scf=00EE;slc=00EE;Upper;XIDC;XIDS
-cp;00CF;Alpha;Cased;cf=00EF;CWCF;CWCM;CWKCF;CWL;dm=0049 0308;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER I WITH DIAERESIS;NFD_QC=N;NFKC_CF=00EF;SB=UP;scf=00EF;slc=00EF;Upper;XIDC;XIDS
-cp;00D0;Alpha;Cased;cf=00F0;CWCF;CWCM;CWKCF;CWL;ea=A;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER ETH;NFKC_CF=00F0;NFKD_QC=Y;SB=UP;scf=00F0;slc=00F0;Upper;XIDC;XIDS
-cp;00D1;Alpha;Cased;cf=00F1;CWCF;CWCM;CWKCF;CWL;dm=004E 0303;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER N WITH TILDE;NFD_QC=N;NFKC_CF=00F1;SB=UP;scf=00F1;slc=00F1;Upper;XIDC;XIDS
-cp;00D2;Alpha;Cased;cf=00F2;CWCF;CWCM;CWKCF;CWL;dm=004F 0300;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER O WITH GRAVE;NFD_QC=N;NFKC_CF=00F2;SB=UP;scf=00F2;slc=00F2;Upper;XIDC;XIDS
-cp;00D3;Alpha;Cased;cf=00F3;CWCF;CWCM;CWKCF;CWL;dm=004F 0301;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER O WITH ACUTE;NFD_QC=N;NFKC_CF=00F3;SB=UP;scf=00F3;slc=00F3;Upper;XIDC;XIDS
-cp;00D4;Alpha;Cased;cf=00F4;CWCF;CWCM;CWKCF;CWL;dm=004F 0302;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER O WITH CIRCUMFLEX;NFD_QC=N;NFKC_CF=00F4;SB=UP;scf=00F4;slc=00F4;Upper;XIDC;XIDS
-cp;00D5;Alpha;Cased;cf=00F5;CWCF;CWCM;CWKCF;CWL;dm=004F 0303;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER O WITH TILDE;NFD_QC=N;NFKC_CF=00F5;SB=UP;scf=00F5;slc=00F5;Upper;XIDC;XIDS
-cp;00D6;Alpha;Cased;cf=00F6;CWCF;CWCM;CWKCF;CWL;dm=004F 0308;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER O WITH DIAERESIS;NFD_QC=N;NFKC_CF=00F6;SB=UP;scf=00F6;slc=00F6;Upper;XIDC;XIDS
+# Uppercase letters
+cp;00C0;Alpha;Cased;cf=00E0;CWCF;CWCM;CWKCF;CWL;dm=0041 0300;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER A WITH GRAVE;NFD_QC=N;NFKC_CF=00E0;NFKC_SCF=00E0;SB=UP;scf=00E0;slc=00E0;Upper;XIDC;XIDS
+cp;00C1;Alpha;Cased;cf=00E1;CWCF;CWCM;CWKCF;CWL;dm=0041 0301;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER A WITH ACUTE;NFD_QC=N;NFKC_CF=00E1;NFKC_SCF=00E1;SB=UP;scf=00E1;slc=00E1;Upper;XIDC;XIDS
+cp;00C2;Alpha;Cased;cf=00E2;CWCF;CWCM;CWKCF;CWL;dm=0041 0302;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER A WITH CIRCUMFLEX;NFD_QC=N;NFKC_CF=00E2;NFKC_SCF=00E2;SB=UP;scf=00E2;slc=00E2;Upper;XIDC;XIDS
+cp;00C3;Alpha;Cased;cf=00E3;CWCF;CWCM;CWKCF;CWL;dm=0041 0303;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER A WITH TILDE;NFD_QC=N;NFKC_CF=00E3;NFKC_SCF=00E3;SB=UP;scf=00E3;slc=00E3;Upper;XIDC;XIDS
+cp;00C4;Alpha;Cased;cf=00E4;CWCF;CWCM;CWKCF;CWL;dm=0041 0308;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER A WITH DIAERESIS;NFD_QC=N;NFKC_CF=00E4;NFKC_SCF=00E4;SB=UP;scf=00E4;slc=00E4;Upper;XIDC;XIDS
+cp;00C5;Alpha;Cased;cf=00E5;CWCF;CWCM;CWKCF;CWL;dm=0041 030A;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER A WITH RING ABOVE;NFD_QC=N;NFKC_CF=00E5;NFKC_SCF=00E5;SB=UP;scf=00E5;slc=00E5;Upper;XIDC;XIDS
+cp;00C6;Alpha;Cased;cf=00E6;CWCF;CWCM;CWKCF;CWL;ea=A;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER AE;NFKC_CF=00E6;NFKC_SCF=00E6;NFKD_QC=Y;SB=UP;scf=00E6;slc=00E6;Upper;XIDC;XIDS
+cp;00C7;Alpha;Cased;cf=00E7;CWCF;CWCM;CWKCF;CWL;dm=0043 0327;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER C WITH CEDILLA;NFD_QC=N;NFKC_CF=00E7;NFKC_SCF=00E7;SB=UP;scf=00E7;slc=00E7;Upper;XIDC;XIDS
+cp;00C8;Alpha;Cased;cf=00E8;CWCF;CWCM;CWKCF;CWL;dm=0045 0300;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER E WITH GRAVE;NFD_QC=N;NFKC_CF=00E8;NFKC_SCF=00E8;SB=UP;scf=00E8;slc=00E8;Upper;XIDC;XIDS
+cp;00C9;Alpha;Cased;cf=00E9;CWCF;CWCM;CWKCF;CWL;dm=0045 0301;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER E WITH ACUTE;NFD_QC=N;NFKC_CF=00E9;NFKC_SCF=00E9;SB=UP;scf=00E9;slc=00E9;Upper;XIDC;XIDS
+cp;00CA;Alpha;Cased;cf=00EA;CWCF;CWCM;CWKCF;CWL;dm=0045 0302;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER E WITH CIRCUMFLEX;NFD_QC=N;NFKC_CF=00EA;NFKC_SCF=00EA;SB=UP;scf=00EA;slc=00EA;Upper;XIDC;XIDS
+cp;00CB;Alpha;Cased;cf=00EB;CWCF;CWCM;CWKCF;CWL;dm=0045 0308;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER E WITH DIAERESIS;NFD_QC=N;NFKC_CF=00EB;NFKC_SCF=00EB;SB=UP;scf=00EB;slc=00EB;Upper;XIDC;XIDS
+cp;00CC;Alpha;Cased;cf=00EC;Conditional_Case_Mappings=lt:lc=0069 0307 0300&tc=00CC&uc=00CC;CWCF;CWCM;CWKCF;CWL;dm=0049 0300;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER I WITH GRAVE;NFD_QC=N;NFKC_CF=00EC;NFKC_SCF=00EC;SB=UP;scf=00EC;slc=00EC;Upper;XIDC;XIDS
+cp;00CD;Alpha;Cased;cf=00ED;Conditional_Case_Mappings=lt:lc=0069 0307 0301&tc=00CD&uc=00CD;CWCF;CWCM;CWKCF;CWL;dm=0049 0301;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER I WITH ACUTE;NFD_QC=N;NFKC_CF=00ED;NFKC_SCF=00ED;SB=UP;scf=00ED;slc=00ED;Upper;XIDC;XIDS
+cp;00CE;Alpha;Cased;cf=00EE;CWCF;CWCM;CWKCF;CWL;dm=0049 0302;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER I WITH CIRCUMFLEX;NFD_QC=N;NFKC_CF=00EE;NFKC_SCF=00EE;SB=UP;scf=00EE;slc=00EE;Upper;XIDC;XIDS
+cp;00CF;Alpha;Cased;cf=00EF;CWCF;CWCM;CWKCF;CWL;dm=0049 0308;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER I WITH DIAERESIS;NFD_QC=N;NFKC_CF=00EF;NFKC_SCF=00EF;SB=UP;scf=00EF;slc=00EF;Upper;XIDC;XIDS
+cp;00D0;Alpha;Cased;cf=00F0;CWCF;CWCM;CWKCF;CWL;ea=A;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER ETH;NFKC_CF=00F0;NFKC_SCF=00F0;NFKD_QC=Y;SB=UP;scf=00F0;slc=00F0;Upper;XIDC;XIDS
+cp;00D1;Alpha;Cased;cf=00F1;CWCF;CWCM;CWKCF;CWL;dm=004E 0303;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER N WITH TILDE;NFD_QC=N;NFKC_CF=00F1;NFKC_SCF=00F1;SB=UP;scf=00F1;slc=00F1;Upper;XIDC;XIDS
+cp;00D2;Alpha;Cased;cf=00F2;CWCF;CWCM;CWKCF;CWL;dm=004F 0300;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER O WITH GRAVE;NFD_QC=N;NFKC_CF=00F2;NFKC_SCF=00F2;SB=UP;scf=00F2;slc=00F2;Upper;XIDC;XIDS
+cp;00D3;Alpha;Cased;cf=00F3;CWCF;CWCM;CWKCF;CWL;dm=004F 0301;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER O WITH ACUTE;NFD_QC=N;NFKC_CF=00F3;NFKC_SCF=00F3;SB=UP;scf=00F3;slc=00F3;Upper;XIDC;XIDS
+cp;00D4;Alpha;Cased;cf=00F4;CWCF;CWCM;CWKCF;CWL;dm=004F 0302;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER O WITH CIRCUMFLEX;NFD_QC=N;NFKC_CF=00F4;NFKC_SCF=00F4;SB=UP;scf=00F4;slc=00F4;Upper;XIDC;XIDS
+cp;00D5;Alpha;Cased;cf=00F5;CWCF;CWCM;CWKCF;CWL;dm=004F 0303;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER O WITH TILDE;NFD_QC=N;NFKC_CF=00F5;NFKC_SCF=00F5;SB=UP;scf=00F5;slc=00F5;Upper;XIDC;XIDS
+cp;00D6;Alpha;Cased;cf=00F6;CWCF;CWCM;CWKCF;CWL;dm=004F 0308;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER O WITH DIAERESIS;NFD_QC=N;NFKC_CF=00F6;NFKC_SCF=00F6;SB=UP;scf=00F6;slc=00F6;Upper;XIDC;XIDS
# Mathematical operator
cp;00D7;bc=ON;ea=A;gc=Sm;InSC=Consonant_Placeholder;lb=AI;Math;na=MULTIPLICATION SIGN;NFKD_QC=Y;Pat_Syn;sc=Zyyy;vo=U;WB=XX
-# Letters
-cp;00D8;Alpha;Cased;cf=00F8;CWCF;CWCM;CWKCF;CWL;ea=A;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER O WITH STROKE;NFKC_CF=00F8;NFKD_QC=Y;SB=UP;scf=00F8;slc=00F8;Upper;XIDC;XIDS
-cp;00D9;Alpha;Cased;cf=00F9;CWCF;CWCM;CWKCF;CWL;dm=0055 0300;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER U WITH GRAVE;NFD_QC=N;NFKC_CF=00F9;SB=UP;scf=00F9;slc=00F9;Upper;XIDC;XIDS
-cp;00DA;Alpha;Cased;cf=00FA;CWCF;CWCM;CWKCF;CWL;dm=0055 0301;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER U WITH ACUTE;NFD_QC=N;NFKC_CF=00FA;SB=UP;scf=00FA;slc=00FA;Upper;XIDC;XIDS
-cp;00DB;Alpha;Cased;cf=00FB;CWCF;CWCM;CWKCF;CWL;dm=0055 0302;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER U WITH CIRCUMFLEX;NFD_QC=N;NFKC_CF=00FB;SB=UP;scf=00FB;slc=00FB;Upper;XIDC;XIDS
-cp;00DC;Alpha;Cased;cf=00FC;CWCF;CWCM;CWKCF;CWL;dm=0055 0308;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER U WITH DIAERESIS;NFD_QC=N;NFKC_CF=00FC;SB=UP;scf=00FC;slc=00FC;Upper;XIDC;XIDS
-cp;00DD;Alpha;Cased;cf=00FD;CWCF;CWCM;CWKCF;CWL;dm=0059 0301;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER Y WITH ACUTE;NFD_QC=N;NFKC_CF=00FD;SB=UP;scf=00FD;slc=00FD;Upper;XIDC;XIDS
-cp;00DE;Alpha;Cased;cf=00FE;CWCF;CWCM;CWKCF;CWL;ea=A;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER THORN;NFKC_CF=00FE;NFKD_QC=Y;SB=UP;scf=00FE;slc=00FE;Upper;XIDC;XIDS
+# Uppercase letters
+cp;00D8;Alpha;Cased;cf=00F8;CWCF;CWCM;CWKCF;CWL;ea=A;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER O WITH STROKE;NFKC_CF=00F8;NFKC_SCF=00F8;NFKD_QC=Y;SB=UP;scf=00F8;slc=00F8;Upper;XIDC;XIDS
+cp;00D9;Alpha;Cased;cf=00F9;CWCF;CWCM;CWKCF;CWL;dm=0055 0300;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER U WITH GRAVE;NFD_QC=N;NFKC_CF=00F9;NFKC_SCF=00F9;SB=UP;scf=00F9;slc=00F9;Upper;XIDC;XIDS
+cp;00DA;Alpha;Cased;cf=00FA;CWCF;CWCM;CWKCF;CWL;dm=0055 0301;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER U WITH ACUTE;NFD_QC=N;NFKC_CF=00FA;NFKC_SCF=00FA;SB=UP;scf=00FA;slc=00FA;Upper;XIDC;XIDS
+cp;00DB;Alpha;Cased;cf=00FB;CWCF;CWCM;CWKCF;CWL;dm=0055 0302;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER U WITH CIRCUMFLEX;NFD_QC=N;NFKC_CF=00FB;NFKC_SCF=00FB;SB=UP;scf=00FB;slc=00FB;Upper;XIDC;XIDS
+cp;00DC;Alpha;Cased;cf=00FC;CWCF;CWCM;CWKCF;CWL;dm=0055 0308;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER U WITH DIAERESIS;NFD_QC=N;NFKC_CF=00FC;NFKC_SCF=00FC;SB=UP;scf=00FC;slc=00FC;Upper;XIDC;XIDS
+cp;00DD;Alpha;Cased;cf=00FD;CWCF;CWCM;CWKCF;CWL;dm=0059 0301;dt=Can;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER Y WITH ACUTE;NFD_QC=N;NFKC_CF=00FD;NFKC_SCF=00FD;SB=UP;scf=00FD;slc=00FD;Upper;XIDC;XIDS
+cp;00DE;Alpha;Cased;cf=00FE;CWCF;CWCM;CWKCF;CWL;ea=A;gc=Lu;IDC;IDS;na=LATIN CAPITAL LETTER THORN;NFKC_CF=00FE;NFKC_SCF=00FE;NFKD_QC=Y;SB=UP;scf=00FE;slc=00FE;Upper;XIDC;XIDS
+# Lowercase letters
cp;00DF;Alpha;Cased;cf=0073 0073;CWCF;CWCM;CWKCF;CWT;CWU;ea=A;IDC;IDS;lc=00DF;Lower;na=LATIN SMALL LETTER SHARP S;NFKC_CF=0073 0073;NFKD_QC=Y;SB=LO;tc=0053 0073;uc=0053 0053;XIDC;XIDS
cp;00E0;Alpha;Cased;CWCM;CWT;CWU;dm=0061 0300;dt=Can;ea=A;IDC;IDS;Lower;na=LATIN SMALL LETTER A WITH GRAVE;NFD_QC=N;SB=LO;stc=00C0;suc=00C0;XIDC;XIDS
cp;00E1;Alpha;Cased;CWCM;CWT;CWU;dm=0061 0301;dt=Can;ea=A;IDC;IDS;Lower;na=LATIN SMALL LETTER A WITH ACUTE;NFD_QC=N;SB=LO;stc=00C1;suc=00C1;XIDC;XIDS
@@ -1543,7 +1560,7 @@ cp;00F5;Alpha;Cased;CWCM;CWT;CWU;dm=006F 0303;dt=Can;IDC;IDS;Lower;na=LATIN SMAL
cp;00F6;Alpha;Cased;CWCM;CWT;CWU;dm=006F 0308;dt=Can;IDC;IDS;Lower;na=LATIN SMALL LETTER O WITH DIAERESIS;NFD_QC=N;SB=LO;stc=00D6;suc=00D6;XIDC;XIDS
# Mathematical operator
cp;00F7;bc=ON;ea=A;gc=Sm;lb=AI;Math;na=DIVISION SIGN;NFKD_QC=Y;Pat_Syn;sc=Zyyy;vo=U;WB=XX
-# Letters
+# Lowercase letters
cp;00F8;Alpha;Cased;CWCM;CWT;CWU;ea=A;IDC;IDS;Lower;na=LATIN SMALL LETTER O WITH STROKE;NFKD_QC=Y;SB=LO;stc=00D8;suc=00D8;XIDC;XIDS
cp;00F9;Alpha;Cased;CWCM;CWT;CWU;dm=0075 0300;dt=Can;ea=A;IDC;IDS;Lower;na=LATIN SMALL LETTER U WITH GRAVE;NFD_QC=N;SB=LO;stc=00D9;suc=00D9;XIDC;XIDS
cp;00FA;Alpha;Cased;CWCM;CWT;CWU;dm=0075 0301;dt=Can;ea=A;IDC;IDS;Lower;na=LATIN SMALL LETTER U WITH ACUTE;NFD_QC=N;SB=LO;stc=00DA;suc=00DA;XIDC;XIDS
@@ -1556,201 +1573,201 @@ cp;00FF;Alpha;Cased;CWCM;CWT;CWU;dm=0079 0308;dt=Can;IDC;IDS;Lower;na=LATIN SMAL
block;0100..017F;age=1.1;Alpha;blk=Latin_Ext_A;Cased;CWCM;dt=Can;gc=Ll;Gr_Base;IDC;IDS;lb=AL;NFD_QC=N;NFKD_QC=N;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
# 0100..017F Latin Extended-A
# European Latin
-cp;0100;cf=0101;CWCF;CWKCF;CWL;dm=0041 0304;gc=Lu;na=LATIN CAPITAL LETTER A WITH MACRON;NFKC_CF=0101;SB=UP;scf=0101;slc=0101;Upper
+cp;0100;cf=0101;CWCF;CWKCF;CWL;dm=0041 0304;gc=Lu;na=LATIN CAPITAL LETTER A WITH MACRON;NFKC_CF=0101;NFKC_SCF=0101;SB=UP;scf=0101;slc=0101;Upper
cp;0101;CWT;CWU;dm=0061 0304;ea=A;Lower;na=LATIN SMALL LETTER A WITH MACRON;stc=0100;suc=0100
-cp;0102;cf=0103;CWCF;CWKCF;CWL;dm=0041 0306;gc=Lu;na=LATIN CAPITAL LETTER A WITH BREVE;NFKC_CF=0103;SB=UP;scf=0103;slc=0103;Upper
+cp;0102;cf=0103;CWCF;CWKCF;CWL;dm=0041 0306;gc=Lu;na=LATIN CAPITAL LETTER A WITH BREVE;NFKC_CF=0103;NFKC_SCF=0103;SB=UP;scf=0103;slc=0103;Upper
cp;0103;CWT;CWU;dm=0061 0306;Lower;na=LATIN SMALL LETTER A WITH BREVE;stc=0102;suc=0102
-cp;0104;cf=0105;CWCF;CWKCF;CWL;dm=0041 0328;gc=Lu;na=LATIN CAPITAL LETTER A WITH OGONEK;NFKC_CF=0105;SB=UP;scf=0105;slc=0105;Upper
+cp;0104;cf=0105;CWCF;CWKCF;CWL;dm=0041 0328;gc=Lu;na=LATIN CAPITAL LETTER A WITH OGONEK;NFKC_CF=0105;NFKC_SCF=0105;SB=UP;scf=0105;slc=0105;Upper
cp;0105;CWT;CWU;dm=0061 0328;Lower;na=LATIN SMALL LETTER A WITH OGONEK;stc=0104;suc=0104
-cp;0106;cf=0107;CWCF;CWKCF;CWL;dm=0043 0301;gc=Lu;na=LATIN CAPITAL LETTER C WITH ACUTE;NFKC_CF=0107;SB=UP;scf=0107;slc=0107;Upper
+cp;0106;cf=0107;CWCF;CWKCF;CWL;dm=0043 0301;gc=Lu;na=LATIN CAPITAL LETTER C WITH ACUTE;NFKC_CF=0107;NFKC_SCF=0107;SB=UP;scf=0107;slc=0107;Upper
cp;0107;CWT;CWU;dm=0063 0301;Lower;na=LATIN SMALL LETTER C WITH ACUTE;stc=0106;suc=0106
-cp;0108;cf=0109;CWCF;CWKCF;CWL;dm=0043 0302;gc=Lu;na=LATIN CAPITAL LETTER C WITH CIRCUMFLEX;NFKC_CF=0109;SB=UP;scf=0109;slc=0109;Upper
+cp;0108;cf=0109;CWCF;CWKCF;CWL;dm=0043 0302;gc=Lu;na=LATIN CAPITAL LETTER C WITH CIRCUMFLEX;NFKC_CF=0109;NFKC_SCF=0109;SB=UP;scf=0109;slc=0109;Upper
cp;0109;CWT;CWU;dm=0063 0302;Lower;na=LATIN SMALL LETTER C WITH CIRCUMFLEX;stc=0108;suc=0108
-cp;010A;cf=010B;CWCF;CWKCF;CWL;dm=0043 0307;gc=Lu;na=LATIN CAPITAL LETTER C WITH DOT ABOVE;NFKC_CF=010B;SB=UP;scf=010B;slc=010B;Upper
+cp;010A;cf=010B;CWCF;CWKCF;CWL;dm=0043 0307;gc=Lu;na=LATIN CAPITAL LETTER C WITH DOT ABOVE;NFKC_CF=010B;NFKC_SCF=010B;SB=UP;scf=010B;slc=010B;Upper
cp;010B;CWT;CWU;dm=0063 0307;Lower;na=LATIN SMALL LETTER C WITH DOT ABOVE;stc=010A;suc=010A
-cp;010C;cf=010D;CWCF;CWKCF;CWL;dm=0043 030C;gc=Lu;na=LATIN CAPITAL LETTER C WITH CARON;NFKC_CF=010D;SB=UP;scf=010D;slc=010D;Upper
+cp;010C;cf=010D;CWCF;CWKCF;CWL;dm=0043 030C;gc=Lu;na=LATIN CAPITAL LETTER C WITH CARON;NFKC_CF=010D;NFKC_SCF=010D;SB=UP;scf=010D;slc=010D;Upper
cp;010D;CWT;CWU;dm=0063 030C;Lower;na=LATIN SMALL LETTER C WITH CARON;stc=010C;suc=010C
-cp;010E;cf=010F;CWCF;CWKCF;CWL;dm=0044 030C;gc=Lu;na=LATIN CAPITAL LETTER D WITH CARON;NFKC_CF=010F;SB=UP;scf=010F;slc=010F;Upper
+cp;010E;cf=010F;CWCF;CWKCF;CWL;dm=0044 030C;gc=Lu;na=LATIN CAPITAL LETTER D WITH CARON;NFKC_CF=010F;NFKC_SCF=010F;SB=UP;scf=010F;slc=010F;Upper
cp;010F;CWT;CWU;dm=0064 030C;Lower;na=LATIN SMALL LETTER D WITH CARON;stc=010E;suc=010E
-cp;0110;cf=0111;CWCF;CWKCF;CWL;dt=None;gc=Lu;na=LATIN CAPITAL LETTER D WITH STROKE;NFD_QC=Y;NFKC_CF=0111;NFKD_QC=Y;SB=UP;scf=0111;slc=0111;Upper
+cp;0110;cf=0111;CWCF;CWKCF;CWL;dt=None;gc=Lu;na=LATIN CAPITAL LETTER D WITH STROKE;NFD_QC=Y;NFKC_CF=0111;NFKC_SCF=0111;NFKD_QC=Y;SB=UP;scf=0111;slc=0111;Upper
cp;0111;CWT;CWU;dt=None;ea=A;Lower;na=LATIN SMALL LETTER D WITH STROKE;NFD_QC=Y;NFKD_QC=Y;stc=0110;suc=0110
-cp;0112;cf=0113;CWCF;CWKCF;CWL;dm=0045 0304;gc=Lu;na=LATIN CAPITAL LETTER E WITH MACRON;NFKC_CF=0113;SB=UP;scf=0113;slc=0113;Upper
+cp;0112;cf=0113;CWCF;CWKCF;CWL;dm=0045 0304;gc=Lu;na=LATIN CAPITAL LETTER E WITH MACRON;NFKC_CF=0113;NFKC_SCF=0113;SB=UP;scf=0113;slc=0113;Upper
cp;0113;CWT;CWU;dm=0065 0304;ea=A;Lower;na=LATIN SMALL LETTER E WITH MACRON;stc=0112;suc=0112
-cp;0114;cf=0115;CWCF;CWKCF;CWL;dm=0045 0306;gc=Lu;na=LATIN CAPITAL LETTER E WITH BREVE;NFKC_CF=0115;SB=UP;scf=0115;slc=0115;Upper
+cp;0114;cf=0115;CWCF;CWKCF;CWL;dm=0045 0306;gc=Lu;na=LATIN CAPITAL LETTER E WITH BREVE;NFKC_CF=0115;NFKC_SCF=0115;SB=UP;scf=0115;slc=0115;Upper
cp;0115;CWT;CWU;dm=0065 0306;Lower;na=LATIN SMALL LETTER E WITH BREVE;stc=0114;suc=0114
-cp;0116;cf=0117;CWCF;CWKCF;CWL;dm=0045 0307;gc=Lu;na=LATIN CAPITAL LETTER E WITH DOT ABOVE;NFKC_CF=0117;SB=UP;scf=0117;slc=0117;Upper
+cp;0116;cf=0117;CWCF;CWKCF;CWL;dm=0045 0307;gc=Lu;na=LATIN CAPITAL LETTER E WITH DOT ABOVE;NFKC_CF=0117;NFKC_SCF=0117;SB=UP;scf=0117;slc=0117;Upper
cp;0117;CWT;CWU;dm=0065 0307;Lower;na=LATIN SMALL LETTER E WITH DOT ABOVE;stc=0116;suc=0116
-cp;0118;cf=0119;CWCF;CWKCF;CWL;dm=0045 0328;gc=Lu;na=LATIN CAPITAL LETTER E WITH OGONEK;NFKC_CF=0119;SB=UP;scf=0119;slc=0119;Upper
+cp;0118;cf=0119;CWCF;CWKCF;CWL;dm=0045 0328;gc=Lu;na=LATIN CAPITAL LETTER E WITH OGONEK;NFKC_CF=0119;NFKC_SCF=0119;SB=UP;scf=0119;slc=0119;Upper
cp;0119;CWT;CWU;dm=0065 0328;Lower;na=LATIN SMALL LETTER E WITH OGONEK;stc=0118;suc=0118
-cp;011A;cf=011B;CWCF;CWKCF;CWL;dm=0045 030C;gc=Lu;na=LATIN CAPITAL LETTER E WITH CARON;NFKC_CF=011B;SB=UP;scf=011B;slc=011B;Upper
+cp;011A;cf=011B;CWCF;CWKCF;CWL;dm=0045 030C;gc=Lu;na=LATIN CAPITAL LETTER E WITH CARON;NFKC_CF=011B;NFKC_SCF=011B;SB=UP;scf=011B;slc=011B;Upper
cp;011B;CWT;CWU;dm=0065 030C;ea=A;Lower;na=LATIN SMALL LETTER E WITH CARON;stc=011A;suc=011A
-cp;011C;cf=011D;CWCF;CWKCF;CWL;dm=0047 0302;gc=Lu;na=LATIN CAPITAL LETTER G WITH CIRCUMFLEX;NFKC_CF=011D;SB=UP;scf=011D;slc=011D;Upper
+cp;011C;cf=011D;CWCF;CWKCF;CWL;dm=0047 0302;gc=Lu;na=LATIN CAPITAL LETTER G WITH CIRCUMFLEX;NFKC_CF=011D;NFKC_SCF=011D;SB=UP;scf=011D;slc=011D;Upper
cp;011D;CWT;CWU;dm=0067 0302;Lower;na=LATIN SMALL LETTER G WITH CIRCUMFLEX;stc=011C;suc=011C
-cp;011E;cf=011F;CWCF;CWKCF;CWL;dm=0047 0306;gc=Lu;na=LATIN CAPITAL LETTER G WITH BREVE;NFKC_CF=011F;SB=UP;scf=011F;slc=011F;Upper
+cp;011E;cf=011F;CWCF;CWKCF;CWL;dm=0047 0306;gc=Lu;na=LATIN CAPITAL LETTER G WITH BREVE;NFKC_CF=011F;NFKC_SCF=011F;SB=UP;scf=011F;slc=011F;Upper
cp;011F;CWT;CWU;dm=0067 0306;Lower;na=LATIN SMALL LETTER G WITH BREVE;stc=011E;suc=011E
-cp;0120;cf=0121;CWCF;CWKCF;CWL;dm=0047 0307;gc=Lu;na=LATIN CAPITAL LETTER G WITH DOT ABOVE;NFKC_CF=0121;SB=UP;scf=0121;slc=0121;Upper
+cp;0120;cf=0121;CWCF;CWKCF;CWL;dm=0047 0307;gc=Lu;na=LATIN CAPITAL LETTER G WITH DOT ABOVE;NFKC_CF=0121;NFKC_SCF=0121;SB=UP;scf=0121;slc=0121;Upper
cp;0121;CWT;CWU;dm=0067 0307;Lower;na=LATIN SMALL LETTER G WITH DOT ABOVE;stc=0120;suc=0120
-cp;0122;cf=0123;CWCF;CWKCF;CWL;dm=0047 0327;gc=Lu;na=LATIN CAPITAL LETTER G WITH CEDILLA;NFKC_CF=0123;SB=UP;scf=0123;slc=0123;Upper
+cp;0122;cf=0123;CWCF;CWKCF;CWL;dm=0047 0327;gc=Lu;na=LATIN CAPITAL LETTER G WITH CEDILLA;NFKC_CF=0123;NFKC_SCF=0123;SB=UP;scf=0123;slc=0123;Upper
cp;0123;CWT;CWU;dm=0067 0327;Lower;na=LATIN SMALL LETTER G WITH CEDILLA;stc=0122;suc=0122
-cp;0124;cf=0125;CWCF;CWKCF;CWL;dm=0048 0302;gc=Lu;na=LATIN CAPITAL LETTER H WITH CIRCUMFLEX;NFKC_CF=0125;SB=UP;scf=0125;slc=0125;Upper
+cp;0124;cf=0125;CWCF;CWKCF;CWL;dm=0048 0302;gc=Lu;na=LATIN CAPITAL LETTER H WITH CIRCUMFLEX;NFKC_CF=0125;NFKC_SCF=0125;SB=UP;scf=0125;slc=0125;Upper
cp;0125;CWT;CWU;dm=0068 0302;Lower;na=LATIN SMALL LETTER H WITH CIRCUMFLEX;stc=0124;suc=0124
-cp;0126;cf=0127;CWCF;CWKCF;CWL;dt=None;ea=A;gc=Lu;na=LATIN CAPITAL LETTER H WITH STROKE;NFD_QC=Y;NFKC_CF=0127;NFKD_QC=Y;SB=UP;scf=0127;slc=0127;Upper
+cp;0126;cf=0127;CWCF;CWKCF;CWL;dt=None;ea=A;gc=Lu;na=LATIN CAPITAL LETTER H WITH STROKE;NFD_QC=Y;NFKC_CF=0127;NFKC_SCF=0127;NFKD_QC=Y;SB=UP;scf=0127;slc=0127;Upper
cp;0127;CWT;CWU;dt=None;ea=A;Lower;na=LATIN SMALL LETTER H WITH STROKE;NFD_QC=Y;NFKD_QC=Y;stc=0126;suc=0126
-cp;0128;cf=0129;Conditional_Case_Mappings=lt:lc=0069 0307 0303&tc=0128&uc=0128;CWCF;CWKCF;CWL;dm=0049 0303;gc=Lu;na=LATIN CAPITAL LETTER I WITH TILDE;NFKC_CF=0129;SB=UP;scf=0129;slc=0129;Upper
+cp;0128;cf=0129;Conditional_Case_Mappings=lt:lc=0069 0307 0303&tc=0128&uc=0128;CWCF;CWKCF;CWL;dm=0049 0303;gc=Lu;na=LATIN CAPITAL LETTER I WITH TILDE;NFKC_CF=0129;NFKC_SCF=0129;SB=UP;scf=0129;slc=0129;Upper
cp;0129;CWT;CWU;dm=0069 0303;Lower;na=LATIN SMALL LETTER I WITH TILDE;stc=0128;suc=0128
-cp;012A;cf=012B;CWCF;CWKCF;CWL;dm=0049 0304;gc=Lu;na=LATIN CAPITAL LETTER I WITH MACRON;NFKC_CF=012B;SB=UP;scf=012B;slc=012B;Upper
+cp;012A;cf=012B;CWCF;CWKCF;CWL;dm=0049 0304;gc=Lu;na=LATIN CAPITAL LETTER I WITH MACRON;NFKC_CF=012B;NFKC_SCF=012B;SB=UP;scf=012B;slc=012B;Upper
cp;012B;CWT;CWU;dm=0069 0304;ea=A;Lower;na=LATIN SMALL LETTER I WITH MACRON;stc=012A;suc=012A
-cp;012C;cf=012D;CWCF;CWKCF;CWL;dm=0049 0306;gc=Lu;na=LATIN CAPITAL LETTER I WITH BREVE;NFKC_CF=012D;SB=UP;scf=012D;slc=012D;Upper
+cp;012C;cf=012D;CWCF;CWKCF;CWL;dm=0049 0306;gc=Lu;na=LATIN CAPITAL LETTER I WITH BREVE;NFKC_CF=012D;NFKC_SCF=012D;SB=UP;scf=012D;slc=012D;Upper
cp;012D;CWT;CWU;dm=0069 0306;Lower;na=LATIN SMALL LETTER I WITH BREVE;stc=012C;suc=012C
-cp;012E;cf=012F;Conditional_Case_Mappings=lt More_Above:lc=012F 0307&tc=012E&uc=012E;CWCF;CWKCF;CWL;dm=0049 0328;gc=Lu;na=LATIN CAPITAL LETTER I WITH OGONEK;NFKC_CF=012F;SB=UP;scf=012F;slc=012F;Upper
+cp;012E;cf=012F;Conditional_Case_Mappings=lt More_Above:lc=012F 0307&tc=012E&uc=012E;CWCF;CWKCF;CWL;dm=0049 0328;gc=Lu;na=LATIN CAPITAL LETTER I WITH OGONEK;NFKC_CF=012F;NFKC_SCF=012F;SB=UP;scf=012F;slc=012F;Upper
cp;012F;CWT;CWU;dm=0069 0328;Lower;na=LATIN SMALL LETTER I WITH OGONEK;SD;stc=012E;suc=012E
cp;0130;cf=0069 0307;Conditional_Case_Mappings=tr:lc=0069&tc=0130&uc=0130,az:lc=0069&tc=0130&uc=0130;CWCF;CWKCF;CWL;dm=0049 0307;gc=Lu;lc=0069 0307;na=LATIN CAPITAL LETTER I WITH DOT ABOVE;NFKC_CF=0069 0307;SB=UP;slc=0069;tc=0130;Turkic_Case_Folding=0069;uc=0130;Upper
cp;0131;CWT;CWU;dt=None;ea=A;Lower;na=LATIN SMALL LETTER DOTLESS I;NFD_QC=Y;NFKD_QC=Y;stc=0049;suc=0049
-cp;0132;cf=0133;CWCF;CWKCF;CWL;dm=0049 004A;dt=Com;ea=A;gc=Lu;na=LATIN CAPITAL LIGATURE IJ;NFD_QC=Y;NFKC_CF=0069 006A;NFKC_QC=N;SB=UP;scf=0133;slc=0133;Upper
-cp;0133;CWKCF;CWT;CWU;dm=0069 006A;dt=Com;ea=A;Lower;na=LATIN SMALL LIGATURE IJ;NFD_QC=Y;NFKC_CF=0069 006A;NFKC_QC=N;stc=0132;suc=0132
-cp;0134;cf=0135;CWCF;CWKCF;CWL;dm=004A 0302;gc=Lu;na=LATIN CAPITAL LETTER J WITH CIRCUMFLEX;NFKC_CF=0135;SB=UP;scf=0135;slc=0135;Upper
+cp;0132;cf=0133;CWCF;CWKCF;CWL;dm=0049 004A;dt=Com;ea=A;gc=Lu;na=LATIN CAPITAL LIGATURE IJ;NFD_QC=Y;NFKC_CF=0069 006A;NFKC_QC=N;NFKC_SCF=0069 006A;SB=UP;scf=0133;slc=0133;Upper
+cp;0133;CWKCF;CWT;CWU;dm=0069 006A;dt=Com;ea=A;Lower;na=LATIN SMALL LIGATURE IJ;NFD_QC=Y;NFKC_CF=0069 006A;NFKC_QC=N;NFKC_SCF=0069 006A;stc=0132;suc=0132
+cp;0134;cf=0135;CWCF;CWKCF;CWL;dm=004A 0302;gc=Lu;na=LATIN CAPITAL LETTER J WITH CIRCUMFLEX;NFKC_CF=0135;NFKC_SCF=0135;SB=UP;scf=0135;slc=0135;Upper
cp;0135;CWT;CWU;dm=006A 0302;Lower;na=LATIN SMALL LETTER J WITH CIRCUMFLEX;stc=0134;suc=0134
-cp;0136;cf=0137;CWCF;CWKCF;CWL;dm=004B 0327;gc=Lu;na=LATIN CAPITAL LETTER K WITH CEDILLA;NFKC_CF=0137;SB=UP;scf=0137;slc=0137;Upper
+cp;0136;cf=0137;CWCF;CWKCF;CWL;dm=004B 0327;gc=Lu;na=LATIN CAPITAL LETTER K WITH CEDILLA;NFKC_CF=0137;NFKC_SCF=0137;SB=UP;scf=0137;slc=0137;Upper
cp;0137;CWT;CWU;dm=006B 0327;Lower;na=LATIN SMALL LETTER K WITH CEDILLA;stc=0136;suc=0136
cp;0138;-CWCM;dt=None;ea=A;Lower;na=LATIN SMALL LETTER KRA;NFD_QC=Y;NFKD_QC=Y
-cp;0139;cf=013A;CWCF;CWKCF;CWL;dm=004C 0301;gc=Lu;na=LATIN CAPITAL LETTER L WITH ACUTE;NFKC_CF=013A;SB=UP;scf=013A;slc=013A;Upper
+cp;0139;cf=013A;CWCF;CWKCF;CWL;dm=004C 0301;gc=Lu;na=LATIN CAPITAL LETTER L WITH ACUTE;NFKC_CF=013A;NFKC_SCF=013A;SB=UP;scf=013A;slc=013A;Upper
cp;013A;CWT;CWU;dm=006C 0301;Lower;na=LATIN SMALL LETTER L WITH ACUTE;stc=0139;suc=0139
-cp;013B;cf=013C;CWCF;CWKCF;CWL;dm=004C 0327;gc=Lu;na=LATIN CAPITAL LETTER L WITH CEDILLA;NFKC_CF=013C;SB=UP;scf=013C;slc=013C;Upper
+cp;013B;cf=013C;CWCF;CWKCF;CWL;dm=004C 0327;gc=Lu;na=LATIN CAPITAL LETTER L WITH CEDILLA;NFKC_CF=013C;NFKC_SCF=013C;SB=UP;scf=013C;slc=013C;Upper
cp;013C;CWT;CWU;dm=006C 0327;Lower;na=LATIN SMALL LETTER L WITH CEDILLA;stc=013B;suc=013B
-cp;013D;cf=013E;CWCF;CWKCF;CWL;dm=004C 030C;gc=Lu;na=LATIN CAPITAL LETTER L WITH CARON;NFKC_CF=013E;SB=UP;scf=013E;slc=013E;Upper
+cp;013D;cf=013E;CWCF;CWKCF;CWL;dm=004C 030C;gc=Lu;na=LATIN CAPITAL LETTER L WITH CARON;NFKC_CF=013E;NFKC_SCF=013E;SB=UP;scf=013E;slc=013E;Upper
cp;013E;CWT;CWU;dm=006C 030C;Lower;na=LATIN SMALL LETTER L WITH CARON;stc=013D;suc=013D
-cp;013F;cf=0140;CWCF;CWKCF;CWL;dm=004C 00B7;dt=Com;ea=A;gc=Lu;na=LATIN CAPITAL LETTER L WITH MIDDLE DOT;NFD_QC=Y;NFKC_CF=006C 00B7;NFKC_QC=N;SB=UP;scf=0140;slc=0140;Upper
-cp;0140;CWKCF;CWT;CWU;dm=006C 00B7;dt=Com;ea=A;Lower;na=LATIN SMALL LETTER L WITH MIDDLE DOT;NFD_QC=Y;NFKC_CF=006C 00B7;NFKC_QC=N;stc=013F;suc=013F
-cp;0141;cf=0142;CWCF;CWKCF;CWL;dt=None;ea=A;gc=Lu;na=LATIN CAPITAL LETTER L WITH STROKE;NFD_QC=Y;NFKC_CF=0142;NFKD_QC=Y;SB=UP;scf=0142;slc=0142;Upper
+cp;013F;cf=0140;CWCF;CWKCF;CWL;dm=004C 00B7;dt=Com;ea=A;gc=Lu;na=LATIN CAPITAL LETTER L WITH MIDDLE DOT;NFD_QC=Y;NFKC_CF=006C 00B7;NFKC_QC=N;NFKC_SCF=006C 00B7;SB=UP;scf=0140;slc=0140;Upper
+cp;0140;CWKCF;CWT;CWU;dm=006C 00B7;dt=Com;ea=A;Lower;na=LATIN SMALL LETTER L WITH MIDDLE DOT;NFD_QC=Y;NFKC_CF=006C 00B7;NFKC_QC=N;NFKC_SCF=006C 00B7;stc=013F;suc=013F
+cp;0141;cf=0142;CWCF;CWKCF;CWL;dt=None;ea=A;gc=Lu;na=LATIN CAPITAL LETTER L WITH STROKE;NFD_QC=Y;NFKC_CF=0142;NFKC_SCF=0142;NFKD_QC=Y;SB=UP;scf=0142;slc=0142;Upper
cp;0142;CWT;CWU;dt=None;ea=A;Lower;na=LATIN SMALL LETTER L WITH STROKE;NFD_QC=Y;NFKD_QC=Y;stc=0141;suc=0141
-cp;0143;cf=0144;CWCF;CWKCF;CWL;dm=004E 0301;gc=Lu;na=LATIN CAPITAL LETTER N WITH ACUTE;NFKC_CF=0144;SB=UP;scf=0144;slc=0144;Upper
+cp;0143;cf=0144;CWCF;CWKCF;CWL;dm=004E 0301;gc=Lu;na=LATIN CAPITAL LETTER N WITH ACUTE;NFKC_CF=0144;NFKC_SCF=0144;SB=UP;scf=0144;slc=0144;Upper
cp;0144;CWT;CWU;dm=006E 0301;ea=A;Lower;na=LATIN SMALL LETTER N WITH ACUTE;stc=0143;suc=0143
-cp;0145;cf=0146;CWCF;CWKCF;CWL;dm=004E 0327;gc=Lu;na=LATIN CAPITAL LETTER N WITH CEDILLA;NFKC_CF=0146;SB=UP;scf=0146;slc=0146;Upper
+cp;0145;cf=0146;CWCF;CWKCF;CWL;dm=004E 0327;gc=Lu;na=LATIN CAPITAL LETTER N WITH CEDILLA;NFKC_CF=0146;NFKC_SCF=0146;SB=UP;scf=0146;slc=0146;Upper
cp;0146;CWT;CWU;dm=006E 0327;Lower;na=LATIN SMALL LETTER N WITH CEDILLA;stc=0145;suc=0145
-cp;0147;cf=0148;CWCF;CWKCF;CWL;dm=004E 030C;gc=Lu;na=LATIN CAPITAL LETTER N WITH CARON;NFKC_CF=0148;SB=UP;scf=0148;slc=0148;Upper
+cp;0147;cf=0148;CWCF;CWKCF;CWL;dm=004E 030C;gc=Lu;na=LATIN CAPITAL LETTER N WITH CARON;NFKC_CF=0148;NFKC_SCF=0148;SB=UP;scf=0148;slc=0148;Upper
cp;0148;CWT;CWU;dm=006E 030C;ea=A;Lower;na=LATIN SMALL LETTER N WITH CARON;stc=0147;suc=0147
# Deprecated letter
-cp;0149;cf=02BC 006E;CWCF;CWKCF;CWT;CWU;Dep;dm=02BC 006E;dt=Com;ea=A;lc=0149;Lower;na=LATIN SMALL LETTER N PRECEDED BY APOSTROPHE;NFD_QC=Y;NFKC_CF=02BC 006E;NFKC_QC=N;tc=02BC 004E;uc=02BC 004E
+cp;0149;cf=02BC 006E;CWCF;CWKCF;CWT;CWU;Dep;dm=02BC 006E;dt=Com;ea=A;lc=0149;Lower;na=LATIN SMALL LETTER N PRECEDED BY APOSTROPHE;NFD_QC=Y;NFKC_CF=02BC 006E;NFKC_QC=N;NFKC_SCF=02BC 006E;tc=02BC 004E;uc=02BC 004E
# European Latin
-cp;014A;cf=014B;CWCF;CWKCF;CWL;dt=None;ea=A;gc=Lu;na=LATIN CAPITAL LETTER ENG;NFD_QC=Y;NFKC_CF=014B;NFKD_QC=Y;SB=UP;scf=014B;slc=014B;Upper
+cp;014A;cf=014B;CWCF;CWKCF;CWL;dt=None;ea=A;gc=Lu;na=LATIN CAPITAL LETTER ENG;NFD_QC=Y;NFKC_CF=014B;NFKC_SCF=014B;NFKD_QC=Y;SB=UP;scf=014B;slc=014B;Upper
cp;014B;CWT;CWU;dt=None;ea=A;Lower;na=LATIN SMALL LETTER ENG;NFD_QC=Y;NFKD_QC=Y;stc=014A;suc=014A
-cp;014C;cf=014D;CWCF;CWKCF;CWL;dm=004F 0304;gc=Lu;na=LATIN CAPITAL LETTER O WITH MACRON;NFKC_CF=014D;SB=UP;scf=014D;slc=014D;Upper
+cp;014C;cf=014D;CWCF;CWKCF;CWL;dm=004F 0304;gc=Lu;na=LATIN CAPITAL LETTER O WITH MACRON;NFKC_CF=014D;NFKC_SCF=014D;SB=UP;scf=014D;slc=014D;Upper
cp;014D;CWT;CWU;dm=006F 0304;ea=A;Lower;na=LATIN SMALL LETTER O WITH MACRON;stc=014C;suc=014C
-cp;014E;cf=014F;CWCF;CWKCF;CWL;dm=004F 0306;gc=Lu;na=LATIN CAPITAL LETTER O WITH BREVE;NFKC_CF=014F;SB=UP;scf=014F;slc=014F;Upper
+cp;014E;cf=014F;CWCF;CWKCF;CWL;dm=004F 0306;gc=Lu;na=LATIN CAPITAL LETTER O WITH BREVE;NFKC_CF=014F;NFKC_SCF=014F;SB=UP;scf=014F;slc=014F;Upper
cp;014F;CWT;CWU;dm=006F 0306;Lower;na=LATIN SMALL LETTER O WITH BREVE;stc=014E;suc=014E
-cp;0150;cf=0151;CWCF;CWKCF;CWL;dm=004F 030B;gc=Lu;na=LATIN CAPITAL LETTER O WITH DOUBLE ACUTE;NFKC_CF=0151;SB=UP;scf=0151;slc=0151;Upper
+cp;0150;cf=0151;CWCF;CWKCF;CWL;dm=004F 030B;gc=Lu;na=LATIN CAPITAL LETTER O WITH DOUBLE ACUTE;NFKC_CF=0151;NFKC_SCF=0151;SB=UP;scf=0151;slc=0151;Upper
cp;0151;CWT;CWU;dm=006F 030B;Lower;na=LATIN SMALL LETTER O WITH DOUBLE ACUTE;stc=0150;suc=0150
-cp;0152;cf=0153;CWCF;CWKCF;CWL;dt=None;ea=A;gc=Lu;na=LATIN CAPITAL LIGATURE OE;NFD_QC=Y;NFKC_CF=0153;NFKD_QC=Y;SB=UP;scf=0153;slc=0153;Upper
+cp;0152;cf=0153;CWCF;CWKCF;CWL;dt=None;ea=A;gc=Lu;na=LATIN CAPITAL LIGATURE OE;NFD_QC=Y;NFKC_CF=0153;NFKC_SCF=0153;NFKD_QC=Y;SB=UP;scf=0153;slc=0153;Upper
cp;0153;CWT;CWU;dt=None;ea=A;Lower;na=LATIN SMALL LIGATURE OE;NFD_QC=Y;NFKD_QC=Y;stc=0152;suc=0152
-cp;0154;cf=0155;CWCF;CWKCF;CWL;dm=0052 0301;gc=Lu;na=LATIN CAPITAL LETTER R WITH ACUTE;NFKC_CF=0155;SB=UP;scf=0155;slc=0155;Upper
+cp;0154;cf=0155;CWCF;CWKCF;CWL;dm=0052 0301;gc=Lu;na=LATIN CAPITAL LETTER R WITH ACUTE;NFKC_CF=0155;NFKC_SCF=0155;SB=UP;scf=0155;slc=0155;Upper
cp;0155;CWT;CWU;dm=0072 0301;Lower;na=LATIN SMALL LETTER R WITH ACUTE;stc=0154;suc=0154
-cp;0156;cf=0157;CWCF;CWKCF;CWL;dm=0052 0327;gc=Lu;na=LATIN CAPITAL LETTER R WITH CEDILLA;NFKC_CF=0157;SB=UP;scf=0157;slc=0157;Upper
+cp;0156;cf=0157;CWCF;CWKCF;CWL;dm=0052 0327;gc=Lu;na=LATIN CAPITAL LETTER R WITH CEDILLA;NFKC_CF=0157;NFKC_SCF=0157;SB=UP;scf=0157;slc=0157;Upper
cp;0157;CWT;CWU;dm=0072 0327;Lower;na=LATIN SMALL LETTER R WITH CEDILLA;stc=0156;suc=0156
-cp;0158;cf=0159;CWCF;CWKCF;CWL;dm=0052 030C;gc=Lu;na=LATIN CAPITAL LETTER R WITH CARON;NFKC_CF=0159;SB=UP;scf=0159;slc=0159;Upper
+cp;0158;cf=0159;CWCF;CWKCF;CWL;dm=0052 030C;gc=Lu;na=LATIN CAPITAL LETTER R WITH CARON;NFKC_CF=0159;NFKC_SCF=0159;SB=UP;scf=0159;slc=0159;Upper
cp;0159;CWT;CWU;dm=0072 030C;Lower;na=LATIN SMALL LETTER R WITH CARON;stc=0158;suc=0158
-cp;015A;cf=015B;CWCF;CWKCF;CWL;dm=0053 0301;gc=Lu;na=LATIN CAPITAL LETTER S WITH ACUTE;NFKC_CF=015B;SB=UP;scf=015B;slc=015B;Upper
+cp;015A;cf=015B;CWCF;CWKCF;CWL;dm=0053 0301;gc=Lu;na=LATIN CAPITAL LETTER S WITH ACUTE;NFKC_CF=015B;NFKC_SCF=015B;SB=UP;scf=015B;slc=015B;Upper
cp;015B;CWT;CWU;dm=0073 0301;Lower;na=LATIN SMALL LETTER S WITH ACUTE;stc=015A;suc=015A
-cp;015C;cf=015D;CWCF;CWKCF;CWL;dm=0053 0302;gc=Lu;na=LATIN CAPITAL LETTER S WITH CIRCUMFLEX;NFKC_CF=015D;SB=UP;scf=015D;slc=015D;Upper
+cp;015C;cf=015D;CWCF;CWKCF;CWL;dm=0053 0302;gc=Lu;na=LATIN CAPITAL LETTER S WITH CIRCUMFLEX;NFKC_CF=015D;NFKC_SCF=015D;SB=UP;scf=015D;slc=015D;Upper
cp;015D;CWT;CWU;dm=0073 0302;Lower;na=LATIN SMALL LETTER S WITH CIRCUMFLEX;stc=015C;suc=015C
-cp;015E;cf=015F;CWCF;CWKCF;CWL;dm=0053 0327;gc=Lu;na=LATIN CAPITAL LETTER S WITH CEDILLA;NFKC_CF=015F;SB=UP;scf=015F;slc=015F;Upper
+cp;015E;cf=015F;CWCF;CWKCF;CWL;dm=0053 0327;gc=Lu;na=LATIN CAPITAL LETTER S WITH CEDILLA;NFKC_CF=015F;NFKC_SCF=015F;SB=UP;scf=015F;slc=015F;Upper
cp;015F;CWT;CWU;dm=0073 0327;Lower;na=LATIN SMALL LETTER S WITH CEDILLA;stc=015E;suc=015E
-cp;0160;cf=0161;CWCF;CWKCF;CWL;dm=0053 030C;gc=Lu;na=LATIN CAPITAL LETTER S WITH CARON;NFKC_CF=0161;SB=UP;scf=0161;slc=0161;Upper
+cp;0160;cf=0161;CWCF;CWKCF;CWL;dm=0053 030C;gc=Lu;na=LATIN CAPITAL LETTER S WITH CARON;NFKC_CF=0161;NFKC_SCF=0161;SB=UP;scf=0161;slc=0161;Upper
cp;0161;CWT;CWU;dm=0073 030C;Lower;na=LATIN SMALL LETTER S WITH CARON;stc=0160;suc=0160
-cp;0162;cf=0163;CWCF;CWKCF;CWL;dm=0054 0327;gc=Lu;na=LATIN CAPITAL LETTER T WITH CEDILLA;NFKC_CF=0163;SB=UP;scf=0163;slc=0163;Upper
+cp;0162;cf=0163;CWCF;CWKCF;CWL;dm=0054 0327;gc=Lu;na=LATIN CAPITAL LETTER T WITH CEDILLA;NFKC_CF=0163;NFKC_SCF=0163;SB=UP;scf=0163;slc=0163;Upper
cp;0163;CWT;CWU;dm=0074 0327;Lower;na=LATIN SMALL LETTER T WITH CEDILLA;stc=0162;suc=0162
-cp;0164;cf=0165;CWCF;CWKCF;CWL;dm=0054 030C;gc=Lu;na=LATIN CAPITAL LETTER T WITH CARON;NFKC_CF=0165;SB=UP;scf=0165;slc=0165;Upper
+cp;0164;cf=0165;CWCF;CWKCF;CWL;dm=0054 030C;gc=Lu;na=LATIN CAPITAL LETTER T WITH CARON;NFKC_CF=0165;NFKC_SCF=0165;SB=UP;scf=0165;slc=0165;Upper
cp;0165;CWT;CWU;dm=0074 030C;Lower;na=LATIN SMALL LETTER T WITH CARON;stc=0164;suc=0164
-cp;0166;cf=0167;CWCF;CWKCF;CWL;dt=None;ea=A;gc=Lu;na=LATIN CAPITAL LETTER T WITH STROKE;NFD_QC=Y;NFKC_CF=0167;NFKD_QC=Y;SB=UP;scf=0167;slc=0167;Upper
+cp;0166;cf=0167;CWCF;CWKCF;CWL;dt=None;ea=A;gc=Lu;na=LATIN CAPITAL LETTER T WITH STROKE;NFD_QC=Y;NFKC_CF=0167;NFKC_SCF=0167;NFKD_QC=Y;SB=UP;scf=0167;slc=0167;Upper
cp;0167;CWT;CWU;dt=None;ea=A;Lower;na=LATIN SMALL LETTER T WITH STROKE;NFD_QC=Y;NFKD_QC=Y;stc=0166;suc=0166
-cp;0168;cf=0169;CWCF;CWKCF;CWL;dm=0055 0303;gc=Lu;na=LATIN CAPITAL LETTER U WITH TILDE;NFKC_CF=0169;SB=UP;scf=0169;slc=0169;Upper
+cp;0168;cf=0169;CWCF;CWKCF;CWL;dm=0055 0303;gc=Lu;na=LATIN CAPITAL LETTER U WITH TILDE;NFKC_CF=0169;NFKC_SCF=0169;SB=UP;scf=0169;slc=0169;Upper
cp;0169;CWT;CWU;dm=0075 0303;Lower;na=LATIN SMALL LETTER U WITH TILDE;stc=0168;suc=0168
-cp;016A;cf=016B;CWCF;CWKCF;CWL;dm=0055 0304;gc=Lu;na=LATIN CAPITAL LETTER U WITH MACRON;NFKC_CF=016B;SB=UP;scf=016B;slc=016B;Upper
+cp;016A;cf=016B;CWCF;CWKCF;CWL;dm=0055 0304;gc=Lu;na=LATIN CAPITAL LETTER U WITH MACRON;NFKC_CF=016B;NFKC_SCF=016B;SB=UP;scf=016B;slc=016B;Upper
cp;016B;CWT;CWU;dm=0075 0304;ea=A;Lower;na=LATIN SMALL LETTER U WITH MACRON;stc=016A;suc=016A
-cp;016C;cf=016D;CWCF;CWKCF;CWL;dm=0055 0306;gc=Lu;na=LATIN CAPITAL LETTER U WITH BREVE;NFKC_CF=016D;SB=UP;scf=016D;slc=016D;Upper
+cp;016C;cf=016D;CWCF;CWKCF;CWL;dm=0055 0306;gc=Lu;na=LATIN CAPITAL LETTER U WITH BREVE;NFKC_CF=016D;NFKC_SCF=016D;SB=UP;scf=016D;slc=016D;Upper
cp;016D;CWT;CWU;dm=0075 0306;Lower;na=LATIN SMALL LETTER U WITH BREVE;stc=016C;suc=016C
-cp;016E;cf=016F;CWCF;CWKCF;CWL;dm=0055 030A;gc=Lu;na=LATIN CAPITAL LETTER U WITH RING ABOVE;NFKC_CF=016F;SB=UP;scf=016F;slc=016F;Upper
+cp;016E;cf=016F;CWCF;CWKCF;CWL;dm=0055 030A;gc=Lu;na=LATIN CAPITAL LETTER U WITH RING ABOVE;NFKC_CF=016F;NFKC_SCF=016F;SB=UP;scf=016F;slc=016F;Upper
cp;016F;CWT;CWU;dm=0075 030A;Lower;na=LATIN SMALL LETTER U WITH RING ABOVE;stc=016E;suc=016E
-cp;0170;cf=0171;CWCF;CWKCF;CWL;dm=0055 030B;gc=Lu;na=LATIN CAPITAL LETTER U WITH DOUBLE ACUTE;NFKC_CF=0171;SB=UP;scf=0171;slc=0171;Upper
+cp;0170;cf=0171;CWCF;CWKCF;CWL;dm=0055 030B;gc=Lu;na=LATIN CAPITAL LETTER U WITH DOUBLE ACUTE;NFKC_CF=0171;NFKC_SCF=0171;SB=UP;scf=0171;slc=0171;Upper
cp;0171;CWT;CWU;dm=0075 030B;Lower;na=LATIN SMALL LETTER U WITH DOUBLE ACUTE;stc=0170;suc=0170
-cp;0172;cf=0173;CWCF;CWKCF;CWL;dm=0055 0328;gc=Lu;na=LATIN CAPITAL LETTER U WITH OGONEK;NFKC_CF=0173;SB=UP;scf=0173;slc=0173;Upper
+cp;0172;cf=0173;CWCF;CWKCF;CWL;dm=0055 0328;gc=Lu;na=LATIN CAPITAL LETTER U WITH OGONEK;NFKC_CF=0173;NFKC_SCF=0173;SB=UP;scf=0173;slc=0173;Upper
cp;0173;CWT;CWU;dm=0075 0328;Lower;na=LATIN SMALL LETTER U WITH OGONEK;stc=0172;suc=0172
-cp;0174;cf=0175;CWCF;CWKCF;CWL;dm=0057 0302;gc=Lu;na=LATIN CAPITAL LETTER W WITH CIRCUMFLEX;NFKC_CF=0175;SB=UP;scf=0175;slc=0175;Upper
+cp;0174;cf=0175;CWCF;CWKCF;CWL;dm=0057 0302;gc=Lu;na=LATIN CAPITAL LETTER W WITH CIRCUMFLEX;NFKC_CF=0175;NFKC_SCF=0175;SB=UP;scf=0175;slc=0175;Upper
cp;0175;CWT;CWU;dm=0077 0302;Lower;na=LATIN SMALL LETTER W WITH CIRCUMFLEX;stc=0174;suc=0174
-cp;0176;cf=0177;CWCF;CWKCF;CWL;dm=0059 0302;gc=Lu;na=LATIN CAPITAL LETTER Y WITH CIRCUMFLEX;NFKC_CF=0177;SB=UP;scf=0177;slc=0177;Upper
+cp;0176;cf=0177;CWCF;CWKCF;CWL;dm=0059 0302;gc=Lu;na=LATIN CAPITAL LETTER Y WITH CIRCUMFLEX;NFKC_CF=0177;NFKC_SCF=0177;SB=UP;scf=0177;slc=0177;Upper
cp;0177;CWT;CWU;dm=0079 0302;Lower;na=LATIN SMALL LETTER Y WITH CIRCUMFLEX;stc=0176;suc=0176
-cp;0178;cf=00FF;CWCF;CWKCF;CWL;dm=0059 0308;gc=Lu;na=LATIN CAPITAL LETTER Y WITH DIAERESIS;NFKC_CF=00FF;SB=UP;scf=00FF;slc=00FF;Upper
-cp;0179;cf=017A;CWCF;CWKCF;CWL;dm=005A 0301;gc=Lu;na=LATIN CAPITAL LETTER Z WITH ACUTE;NFKC_CF=017A;SB=UP;scf=017A;slc=017A;Upper
+cp;0178;cf=00FF;CWCF;CWKCF;CWL;dm=0059 0308;gc=Lu;na=LATIN CAPITAL LETTER Y WITH DIAERESIS;NFKC_CF=00FF;NFKC_SCF=00FF;SB=UP;scf=00FF;slc=00FF;Upper
+cp;0179;cf=017A;CWCF;CWKCF;CWL;dm=005A 0301;gc=Lu;na=LATIN CAPITAL LETTER Z WITH ACUTE;NFKC_CF=017A;NFKC_SCF=017A;SB=UP;scf=017A;slc=017A;Upper
cp;017A;CWT;CWU;dm=007A 0301;Lower;na=LATIN SMALL LETTER Z WITH ACUTE;stc=0179;suc=0179
-cp;017B;cf=017C;CWCF;CWKCF;CWL;dm=005A 0307;gc=Lu;na=LATIN CAPITAL LETTER Z WITH DOT ABOVE;NFKC_CF=017C;SB=UP;scf=017C;slc=017C;Upper
+cp;017B;cf=017C;CWCF;CWKCF;CWL;dm=005A 0307;gc=Lu;na=LATIN CAPITAL LETTER Z WITH DOT ABOVE;NFKC_CF=017C;NFKC_SCF=017C;SB=UP;scf=017C;slc=017C;Upper
cp;017C;CWT;CWU;dm=007A 0307;Lower;na=LATIN SMALL LETTER Z WITH DOT ABOVE;stc=017B;suc=017B
-cp;017D;cf=017E;CWCF;CWKCF;CWL;dm=005A 030C;gc=Lu;na=LATIN CAPITAL LETTER Z WITH CARON;NFKC_CF=017E;SB=UP;scf=017E;slc=017E;Upper
+cp;017D;cf=017E;CWCF;CWKCF;CWL;dm=005A 030C;gc=Lu;na=LATIN CAPITAL LETTER Z WITH CARON;NFKC_CF=017E;NFKC_SCF=017E;SB=UP;scf=017E;slc=017E;Upper
cp;017E;CWT;CWU;dm=007A 030C;Lower;na=LATIN SMALL LETTER Z WITH CARON;stc=017D;suc=017D
-cp;017F;cf=0073;CWCF;CWKCF;CWT;CWU;dm=0073;dt=Com;Lower;na=LATIN SMALL LETTER LONG S;NFD_QC=Y;NFKC_CF=0073;NFKC_QC=N;scf=0073;stc=0053;suc=0053
+cp;017F;cf=0073;CWCF;CWKCF;CWT;CWU;dm=0073;dt=Com;Lower;na=LATIN SMALL LETTER LONG S;NFD_QC=Y;NFKC_CF=0073;NFKC_QC=N;NFKC_SCF=0073;scf=0073;stc=0053;suc=0053
block;0180..024F;age=1.1;Alpha;blk=Latin_Ext_B;Cased;CWCM;gc=Lu;Gr_Base;IDC;IDS;lb=AL;SB=UP;sc=Latn;WB=LE;XIDC;XIDS
# 0180..024F Latin Extended-B
# Non-European and historic Latin
cp;0180;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER B WITH STROKE;SB=LO;stc=0243;suc=0243
-cp;0181;cf=0253;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER B WITH HOOK;NFKC_CF=0253;scf=0253;slc=0253;Upper
-cp;0182;cf=0183;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER B WITH TOPBAR;NFKC_CF=0183;scf=0183;slc=0183;Upper
+cp;0181;cf=0253;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER B WITH HOOK;NFKC_CF=0253;NFKC_SCF=0253;scf=0253;slc=0253;Upper
+cp;0182;cf=0183;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER B WITH TOPBAR;NFKC_CF=0183;NFKC_SCF=0183;scf=0183;slc=0183;Upper
cp;0183;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER B WITH TOPBAR;SB=LO;stc=0182;suc=0182
-cp;0184;cf=0185;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER TONE SIX;NFKC_CF=0185;scf=0185;slc=0185;Upper
+cp;0184;cf=0185;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER TONE SIX;NFKC_CF=0185;NFKC_SCF=0185;scf=0185;slc=0185;Upper
cp;0185;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER TONE SIX;SB=LO;stc=0184;suc=0184
-cp;0186;cf=0254;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER OPEN O;NFKC_CF=0254;scf=0254;slc=0254;Upper
-cp;0187;cf=0188;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER C WITH HOOK;NFKC_CF=0188;scf=0188;slc=0188;Upper
+cp;0186;cf=0254;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER OPEN O;NFKC_CF=0254;NFKC_SCF=0254;scf=0254;slc=0254;Upper
+cp;0187;cf=0188;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER C WITH HOOK;NFKC_CF=0188;NFKC_SCF=0188;scf=0188;slc=0188;Upper
cp;0188;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER C WITH HOOK;SB=LO;stc=0187;suc=0187
-cp;0189;cf=0256;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER AFRICAN D;NFKC_CF=0256;scf=0256;slc=0256;Upper
-cp;018A;cf=0257;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER D WITH HOOK;NFKC_CF=0257;scf=0257;slc=0257;Upper
-cp;018B;cf=018C;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER D WITH TOPBAR;NFKC_CF=018C;scf=018C;slc=018C;Upper
+cp;0189;cf=0256;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER AFRICAN D;NFKC_CF=0256;NFKC_SCF=0256;scf=0256;slc=0256;Upper
+cp;018A;cf=0257;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER D WITH HOOK;NFKC_CF=0257;NFKC_SCF=0257;scf=0257;slc=0257;Upper
+cp;018B;cf=018C;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER D WITH TOPBAR;NFKC_CF=018C;NFKC_SCF=018C;scf=018C;slc=018C;Upper
cp;018C;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER D WITH TOPBAR;SB=LO;stc=018B;suc=018B
cp;018D;-CWCM;gc=Ll;Lower;na=LATIN SMALL LETTER TURNED DELTA;SB=LO
-cp;018E;cf=01DD;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER REVERSED E;NFKC_CF=01DD;scf=01DD;slc=01DD;Upper
-cp;018F;cf=0259;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER SCHWA;NFKC_CF=0259;scf=0259;slc=0259;Upper
-cp;0190;cf=025B;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER OPEN E;NFKC_CF=025B;scf=025B;slc=025B;Upper
-cp;0191;cf=0192;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER F WITH HOOK;NFKC_CF=0192;scf=0192;slc=0192;Upper
+cp;018E;cf=01DD;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER REVERSED E;NFKC_CF=01DD;NFKC_SCF=01DD;scf=01DD;slc=01DD;Upper
+cp;018F;cf=0259;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER SCHWA;NFKC_CF=0259;NFKC_SCF=0259;scf=0259;slc=0259;Upper
+cp;0190;cf=025B;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER OPEN E;NFKC_CF=025B;NFKC_SCF=025B;scf=025B;slc=025B;Upper
+cp;0191;cf=0192;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER F WITH HOOK;NFKC_CF=0192;NFKC_SCF=0192;scf=0192;slc=0192;Upper
cp;0192;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER F WITH HOOK;SB=LO;stc=0191;suc=0191
-cp;0193;cf=0260;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER G WITH HOOK;NFKC_CF=0260;scf=0260;slc=0260;Upper
-cp;0194;cf=0263;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER GAMMA;NFKC_CF=0263;scf=0263;slc=0263;Upper
+cp;0193;cf=0260;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER G WITH HOOK;NFKC_CF=0260;NFKC_SCF=0260;scf=0260;slc=0260;Upper
+cp;0194;cf=0263;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER GAMMA;NFKC_CF=0263;NFKC_SCF=0263;scf=0263;slc=0263;Upper
cp;0195;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER HV;SB=LO;stc=01F6;suc=01F6
-cp;0196;cf=0269;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER IOTA;NFKC_CF=0269;scf=0269;slc=0269;Upper
-cp;0197;cf=0268;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER I WITH STROKE;NFKC_CF=0268;scf=0268;slc=0268;Upper
-cp;0198;cf=0199;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER K WITH HOOK;NFKC_CF=0199;scf=0199;slc=0199;Upper
+cp;0196;cf=0269;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER IOTA;NFKC_CF=0269;NFKC_SCF=0269;scf=0269;slc=0269;Upper
+cp;0197;cf=0268;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER I WITH STROKE;NFKC_CF=0268;NFKC_SCF=0268;scf=0268;slc=0268;Upper
+cp;0198;cf=0199;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER K WITH HOOK;NFKC_CF=0199;NFKC_SCF=0199;scf=0199;slc=0199;Upper
cp;0199;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER K WITH HOOK;SB=LO;stc=0198;suc=0198
cp;019A;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER L WITH BAR;SB=LO;stc=023D;suc=023D
cp;019B;-CWCM;gc=Ll;Lower;na=LATIN SMALL LETTER LAMBDA WITH STROKE;SB=LO
-cp;019C;cf=026F;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER TURNED M;NFKC_CF=026F;scf=026F;slc=026F;Upper
-cp;019D;cf=0272;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER N WITH LEFT HOOK;NFKC_CF=0272;scf=0272;slc=0272;Upper
+cp;019C;cf=026F;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER TURNED M;NFKC_CF=026F;NFKC_SCF=026F;scf=026F;slc=026F;Upper
+cp;019D;cf=0272;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER N WITH LEFT HOOK;NFKC_CF=0272;NFKC_SCF=0272;scf=0272;slc=0272;Upper
cp;019E;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER N WITH LONG RIGHT LEG;SB=LO;stc=0220;suc=0220
-cp;019F;cf=0275;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER O WITH MIDDLE TILDE;NFKC_CF=0275;scf=0275;slc=0275;Upper
-cp;01A0;cf=01A1;CWCF;CWKCF;CWL;dm=004F 031B;dt=Can;na=LATIN CAPITAL LETTER O WITH HORN;NFD_QC=N;NFKC_CF=01A1;NFKD_QC=N;scf=01A1;slc=01A1;Upper
+cp;019F;cf=0275;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER O WITH MIDDLE TILDE;NFKC_CF=0275;NFKC_SCF=0275;scf=0275;slc=0275;Upper
+cp;01A0;cf=01A1;CWCF;CWKCF;CWL;dm=004F 031B;dt=Can;na=LATIN CAPITAL LETTER O WITH HORN;NFD_QC=N;NFKC_CF=01A1;NFKC_SCF=01A1;NFKD_QC=N;scf=01A1;slc=01A1;Upper
cp;01A1;CWT;CWU;dm=006F 031B;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER O WITH HORN;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01A0;suc=01A0
-cp;01A2;cf=01A3;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER OI;Name_Alias=correction=LATIN CAPITAL LETTER GHA;NFKC_CF=01A3;scf=01A3;slc=01A3;Upper
+cp;01A2;cf=01A3;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER OI;Name_Alias=correction=LATIN CAPITAL LETTER GHA;NFKC_CF=01A3;NFKC_SCF=01A3;scf=01A3;slc=01A3;Upper
cp;01A3;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER OI;Name_Alias=correction=LATIN SMALL LETTER GHA;SB=LO;stc=01A2;suc=01A2
-cp;01A4;cf=01A5;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER P WITH HOOK;NFKC_CF=01A5;scf=01A5;slc=01A5;Upper
+cp;01A4;cf=01A5;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER P WITH HOOK;NFKC_CF=01A5;NFKC_SCF=01A5;scf=01A5;slc=01A5;Upper
cp;01A5;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER P WITH HOOK;SB=LO;stc=01A4;suc=01A4
-cp;01A6;cf=0280;CWCF;CWKCF;CWL;na=LATIN LETTER YR;NFKC_CF=0280;scf=0280;slc=0280;Upper
-cp;01A7;cf=01A8;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER TONE TWO;NFKC_CF=01A8;scf=01A8;slc=01A8;Upper
+cp;01A6;cf=0280;CWCF;CWKCF;CWL;na=LATIN LETTER YR;NFKC_CF=0280;NFKC_SCF=0280;scf=0280;slc=0280;Upper
+cp;01A7;cf=01A8;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER TONE TWO;NFKC_CF=01A8;NFKC_SCF=01A8;scf=01A8;slc=01A8;Upper
cp;01A8;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER TONE TWO;SB=LO;stc=01A7;suc=01A7
-cp;01A9;cf=0283;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER ESH;NFKC_CF=0283;scf=0283;slc=0283;Upper
+cp;01A9;cf=0283;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER ESH;NFKC_CF=0283;NFKC_SCF=0283;scf=0283;slc=0283;Upper
cp;01AA;-CWCM;gc=Ll;Lower;na=LATIN LETTER REVERSED ESH LOOP;SB=LO
cp;01AB;-CWCM;gc=Ll;Lower;na=LATIN SMALL LETTER T WITH PALATAL HOOK;SB=LO
-cp;01AC;cf=01AD;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER T WITH HOOK;NFKC_CF=01AD;scf=01AD;slc=01AD;Upper
+cp;01AC;cf=01AD;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER T WITH HOOK;NFKC_CF=01AD;NFKC_SCF=01AD;scf=01AD;slc=01AD;Upper
cp;01AD;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER T WITH HOOK;SB=LO;stc=01AC;suc=01AC
-cp;01AE;cf=0288;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER T WITH RETROFLEX HOOK;NFKC_CF=0288;scf=0288;slc=0288;Upper
-cp;01AF;cf=01B0;CWCF;CWKCF;CWL;dm=0055 031B;dt=Can;na=LATIN CAPITAL LETTER U WITH HORN;NFD_QC=N;NFKC_CF=01B0;NFKD_QC=N;scf=01B0;slc=01B0;Upper
+cp;01AE;cf=0288;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER T WITH RETROFLEX HOOK;NFKC_CF=0288;NFKC_SCF=0288;scf=0288;slc=0288;Upper
+cp;01AF;cf=01B0;CWCF;CWKCF;CWL;dm=0055 031B;dt=Can;na=LATIN CAPITAL LETTER U WITH HORN;NFD_QC=N;NFKC_CF=01B0;NFKC_SCF=01B0;NFKD_QC=N;scf=01B0;slc=01B0;Upper
cp;01B0;CWT;CWU;dm=0075 031B;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER U WITH HORN;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01AF;suc=01AF
-cp;01B1;cf=028A;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER UPSILON;NFKC_CF=028A;scf=028A;slc=028A;Upper
-cp;01B2;cf=028B;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER V WITH HOOK;NFKC_CF=028B;scf=028B;slc=028B;Upper
-cp;01B3;cf=01B4;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER Y WITH HOOK;NFKC_CF=01B4;scf=01B4;slc=01B4;Upper
+cp;01B1;cf=028A;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER UPSILON;NFKC_CF=028A;NFKC_SCF=028A;scf=028A;slc=028A;Upper
+cp;01B2;cf=028B;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER V WITH HOOK;NFKC_CF=028B;NFKC_SCF=028B;scf=028B;slc=028B;Upper
+cp;01B3;cf=01B4;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER Y WITH HOOK;NFKC_CF=01B4;NFKC_SCF=01B4;scf=01B4;slc=01B4;Upper
cp;01B4;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER Y WITH HOOK;SB=LO;stc=01B3;suc=01B3
-cp;01B5;cf=01B6;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER Z WITH STROKE;NFKC_CF=01B6;scf=01B6;slc=01B6;Upper
+cp;01B5;cf=01B6;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER Z WITH STROKE;NFKC_CF=01B6;NFKC_SCF=01B6;scf=01B6;slc=01B6;Upper
cp;01B6;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER Z WITH STROKE;SB=LO;stc=01B5;suc=01B5
-cp;01B7;cf=0292;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER EZH;NFKC_CF=0292;scf=0292;slc=0292;Upper
-cp;01B8;cf=01B9;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER EZH REVERSED;NFKC_CF=01B9;scf=01B9;slc=01B9;Upper
+cp;01B7;cf=0292;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER EZH;NFKC_CF=0292;NFKC_SCF=0292;scf=0292;slc=0292;Upper
+cp;01B8;cf=01B9;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER EZH REVERSED;NFKC_CF=01B9;NFKC_SCF=01B9;scf=01B9;slc=01B9;Upper
cp;01B9;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER EZH REVERSED;SB=LO;stc=01B8;suc=01B8
cp;01BA;-CWCM;gc=Ll;Lower;na=LATIN SMALL LETTER EZH WITH TAIL;SB=LO
cp;01BB;-Cased;-CWCM;gc=Lo;na=LATIN LETTER TWO WITH STROKE;SB=LE
-cp;01BC;cf=01BD;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER TONE FIVE;NFKC_CF=01BD;scf=01BD;slc=01BD;Upper
+cp;01BC;cf=01BD;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER TONE FIVE;NFKC_CF=01BD;NFKC_SCF=01BD;scf=01BD;slc=01BD;Upper
cp;01BD;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER TONE FIVE;SB=LO;stc=01BC;suc=01BC
cp;01BE;-CWCM;gc=Ll;Lower;na=LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE;SB=LO
cp;01BF;CWT;CWU;gc=Ll;Lower;na=LATIN LETTER WYNN;SB=LO;stc=01F7;suc=01F7
@@ -1760,123 +1777,123 @@ cp;01C1;-Cased;-CWCM;gc=Lo;na=LATIN LETTER LATERAL CLICK;SB=LE
cp;01C2;-Cased;-CWCM;gc=Lo;na=LATIN LETTER ALVEOLAR CLICK;SB=LE
cp;01C3;-Cased;-CWCM;gc=Lo;na=LATIN LETTER RETROFLEX CLICK;SB=LE
# Latin digraphs matching Serbian Cyrillic letters
-cp;01C4;cf=01C6;CWCF;CWKCF;CWL;CWT;dm=0044 017D;dt=Com;na=LATIN CAPITAL LETTER DZ WITH CARON;NFKC_CF=0064 017E;NFKC_QC=N;NFKD_QC=N;scf=01C6;slc=01C6;stc=01C5;Upper
-cp;01C5;cf=01C6;CWCF;CWKCF;CWL;CWU;dm=0044 017E;dt=Com;gc=Lt;na=LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON;NFKC_CF=0064 017E;NFKC_QC=N;NFKD_QC=N;scf=01C6;slc=01C6;stc=01C5;suc=01C4
-cp;01C6;CWKCF;CWT;CWU;dm=0064 017E;dt=Com;gc=Ll;Lower;na=LATIN SMALL LETTER DZ WITH CARON;NFKC_CF=0064 017E;NFKC_QC=N;NFKD_QC=N;SB=LO;stc=01C5;suc=01C4
-cp;01C7;cf=01C9;CWCF;CWKCF;CWL;CWT;dm=004C 004A;dt=Com;na=LATIN CAPITAL LETTER LJ;NFKC_CF=006C 006A;NFKC_QC=N;NFKD_QC=N;scf=01C9;slc=01C9;stc=01C8;Upper
-cp;01C8;cf=01C9;CWCF;CWKCF;CWL;CWU;dm=004C 006A;dt=Com;gc=Lt;na=LATIN CAPITAL LETTER L WITH SMALL LETTER J;NFKC_CF=006C 006A;NFKC_QC=N;NFKD_QC=N;scf=01C9;slc=01C9;stc=01C8;suc=01C7
-cp;01C9;CWKCF;CWT;CWU;dm=006C 006A;dt=Com;gc=Ll;Lower;na=LATIN SMALL LETTER LJ;NFKC_CF=006C 006A;NFKC_QC=N;NFKD_QC=N;SB=LO;stc=01C8;suc=01C7
-cp;01CA;cf=01CC;CWCF;CWKCF;CWL;CWT;dm=004E 004A;dt=Com;na=LATIN CAPITAL LETTER NJ;NFKC_CF=006E 006A;NFKC_QC=N;NFKD_QC=N;scf=01CC;slc=01CC;stc=01CB;Upper
-cp;01CB;cf=01CC;CWCF;CWKCF;CWL;CWU;dm=004E 006A;dt=Com;gc=Lt;na=LATIN CAPITAL LETTER N WITH SMALL LETTER J;NFKC_CF=006E 006A;NFKC_QC=N;NFKD_QC=N;scf=01CC;slc=01CC;stc=01CB;suc=01CA
-cp;01CC;CWKCF;CWT;CWU;dm=006E 006A;dt=Com;gc=Ll;Lower;na=LATIN SMALL LETTER NJ;NFKC_CF=006E 006A;NFKC_QC=N;NFKD_QC=N;SB=LO;stc=01CB;suc=01CA
+cp;01C4;cf=01C6;CWCF;CWKCF;CWL;CWT;dm=0044 017D;dt=Com;na=LATIN CAPITAL LETTER DZ WITH CARON;NFKC_CF=0064 017E;NFKC_QC=N;NFKC_SCF=0064 017E;NFKD_QC=N;scf=01C6;slc=01C6;stc=01C5;Upper
+cp;01C5;cf=01C6;CWCF;CWKCF;CWL;CWU;dm=0044 017E;dt=Com;gc=Lt;na=LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON;NFKC_CF=0064 017E;NFKC_QC=N;NFKC_SCF=0064 017E;NFKD_QC=N;scf=01C6;slc=01C6;stc=01C5;suc=01C4
+cp;01C6;CWKCF;CWT;CWU;dm=0064 017E;dt=Com;gc=Ll;Lower;na=LATIN SMALL LETTER DZ WITH CARON;NFKC_CF=0064 017E;NFKC_QC=N;NFKC_SCF=0064 017E;NFKD_QC=N;SB=LO;stc=01C5;suc=01C4
+cp;01C7;cf=01C9;CWCF;CWKCF;CWL;CWT;dm=004C 004A;dt=Com;na=LATIN CAPITAL LETTER LJ;NFKC_CF=006C 006A;NFKC_QC=N;NFKC_SCF=006C 006A;NFKD_QC=N;scf=01C9;slc=01C9;stc=01C8;Upper
+cp;01C8;cf=01C9;CWCF;CWKCF;CWL;CWU;dm=004C 006A;dt=Com;gc=Lt;na=LATIN CAPITAL LETTER L WITH SMALL LETTER J;NFKC_CF=006C 006A;NFKC_QC=N;NFKC_SCF=006C 006A;NFKD_QC=N;scf=01C9;slc=01C9;stc=01C8;suc=01C7
+cp;01C9;CWKCF;CWT;CWU;dm=006C 006A;dt=Com;gc=Ll;Lower;na=LATIN SMALL LETTER LJ;NFKC_CF=006C 006A;NFKC_QC=N;NFKC_SCF=006C 006A;NFKD_QC=N;SB=LO;stc=01C8;suc=01C7
+cp;01CA;cf=01CC;CWCF;CWKCF;CWL;CWT;dm=004E 004A;dt=Com;na=LATIN CAPITAL LETTER NJ;NFKC_CF=006E 006A;NFKC_QC=N;NFKC_SCF=006E 006A;NFKD_QC=N;scf=01CC;slc=01CC;stc=01CB;Upper
+cp;01CB;cf=01CC;CWCF;CWKCF;CWL;CWU;dm=004E 006A;dt=Com;gc=Lt;na=LATIN CAPITAL LETTER N WITH SMALL LETTER J;NFKC_CF=006E 006A;NFKC_QC=N;NFKC_SCF=006E 006A;NFKD_QC=N;scf=01CC;slc=01CC;stc=01CB;suc=01CA
+cp;01CC;CWKCF;CWT;CWU;dm=006E 006A;dt=Com;gc=Ll;Lower;na=LATIN SMALL LETTER NJ;NFKC_CF=006E 006A;NFKC_QC=N;NFKC_SCF=006E 006A;NFKD_QC=N;SB=LO;stc=01CB;suc=01CA
# Pinyin diacritic-vowel combinations
-cp;01CD;cf=01CE;CWCF;CWKCF;CWL;dm=0041 030C;dt=Can;na=LATIN CAPITAL LETTER A WITH CARON;NFD_QC=N;NFKC_CF=01CE;NFKD_QC=N;scf=01CE;slc=01CE;Upper
+cp;01CD;cf=01CE;CWCF;CWKCF;CWL;dm=0041 030C;dt=Can;na=LATIN CAPITAL LETTER A WITH CARON;NFD_QC=N;NFKC_CF=01CE;NFKC_SCF=01CE;NFKD_QC=N;scf=01CE;slc=01CE;Upper
cp;01CE;CWT;CWU;dm=0061 030C;dt=Can;ea=A;gc=Ll;Lower;na=LATIN SMALL LETTER A WITH CARON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01CD;suc=01CD
-cp;01CF;cf=01D0;CWCF;CWKCF;CWL;dm=0049 030C;dt=Can;na=LATIN CAPITAL LETTER I WITH CARON;NFD_QC=N;NFKC_CF=01D0;NFKD_QC=N;scf=01D0;slc=01D0;Upper
+cp;01CF;cf=01D0;CWCF;CWKCF;CWL;dm=0049 030C;dt=Can;na=LATIN CAPITAL LETTER I WITH CARON;NFD_QC=N;NFKC_CF=01D0;NFKC_SCF=01D0;NFKD_QC=N;scf=01D0;slc=01D0;Upper
cp;01D0;CWT;CWU;dm=0069 030C;dt=Can;ea=A;gc=Ll;Lower;na=LATIN SMALL LETTER I WITH CARON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01CF;suc=01CF
-cp;01D1;cf=01D2;CWCF;CWKCF;CWL;dm=004F 030C;dt=Can;na=LATIN CAPITAL LETTER O WITH CARON;NFD_QC=N;NFKC_CF=01D2;NFKD_QC=N;scf=01D2;slc=01D2;Upper
+cp;01D1;cf=01D2;CWCF;CWKCF;CWL;dm=004F 030C;dt=Can;na=LATIN CAPITAL LETTER O WITH CARON;NFD_QC=N;NFKC_CF=01D2;NFKC_SCF=01D2;NFKD_QC=N;scf=01D2;slc=01D2;Upper
cp;01D2;CWT;CWU;dm=006F 030C;dt=Can;ea=A;gc=Ll;Lower;na=LATIN SMALL LETTER O WITH CARON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01D1;suc=01D1
-cp;01D3;cf=01D4;CWCF;CWKCF;CWL;dm=0055 030C;dt=Can;na=LATIN CAPITAL LETTER U WITH CARON;NFD_QC=N;NFKC_CF=01D4;NFKD_QC=N;scf=01D4;slc=01D4;Upper
+cp;01D3;cf=01D4;CWCF;CWKCF;CWL;dm=0055 030C;dt=Can;na=LATIN CAPITAL LETTER U WITH CARON;NFD_QC=N;NFKC_CF=01D4;NFKC_SCF=01D4;NFKD_QC=N;scf=01D4;slc=01D4;Upper
cp;01D4;CWT;CWU;dm=0075 030C;dt=Can;ea=A;gc=Ll;Lower;na=LATIN SMALL LETTER U WITH CARON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01D3;suc=01D3
-cp;01D5;cf=01D6;CWCF;CWKCF;CWL;dm=00DC 0304;dt=Can;na=LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON;NFD_QC=N;NFKC_CF=01D6;NFKD_QC=N;scf=01D6;slc=01D6;Upper
+cp;01D5;cf=01D6;CWCF;CWKCF;CWL;dm=00DC 0304;dt=Can;na=LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON;NFD_QC=N;NFKC_CF=01D6;NFKC_SCF=01D6;NFKD_QC=N;scf=01D6;slc=01D6;Upper
cp;01D6;CWT;CWU;dm=00FC 0304;dt=Can;ea=A;gc=Ll;Lower;na=LATIN SMALL LETTER U WITH DIAERESIS AND MACRON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01D5;suc=01D5
-cp;01D7;cf=01D8;CWCF;CWKCF;CWL;dm=00DC 0301;dt=Can;na=LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE;NFD_QC=N;NFKC_CF=01D8;NFKD_QC=N;scf=01D8;slc=01D8;Upper
+cp;01D7;cf=01D8;CWCF;CWKCF;CWL;dm=00DC 0301;dt=Can;na=LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE;NFD_QC=N;NFKC_CF=01D8;NFKC_SCF=01D8;NFKD_QC=N;scf=01D8;slc=01D8;Upper
cp;01D8;CWT;CWU;dm=00FC 0301;dt=Can;ea=A;gc=Ll;Lower;na=LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01D7;suc=01D7
-cp;01D9;cf=01DA;CWCF;CWKCF;CWL;dm=00DC 030C;dt=Can;na=LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON;NFD_QC=N;NFKC_CF=01DA;NFKD_QC=N;scf=01DA;slc=01DA;Upper
+cp;01D9;cf=01DA;CWCF;CWKCF;CWL;dm=00DC 030C;dt=Can;na=LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON;NFD_QC=N;NFKC_CF=01DA;NFKC_SCF=01DA;NFKD_QC=N;scf=01DA;slc=01DA;Upper
cp;01DA;CWT;CWU;dm=00FC 030C;dt=Can;ea=A;gc=Ll;Lower;na=LATIN SMALL LETTER U WITH DIAERESIS AND CARON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01D9;suc=01D9
-cp;01DB;cf=01DC;CWCF;CWKCF;CWL;dm=00DC 0300;dt=Can;na=LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE;NFD_QC=N;NFKC_CF=01DC;NFKD_QC=N;scf=01DC;slc=01DC;Upper
+cp;01DB;cf=01DC;CWCF;CWKCF;CWL;dm=00DC 0300;dt=Can;na=LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE;NFD_QC=N;NFKC_CF=01DC;NFKC_SCF=01DC;NFKD_QC=N;scf=01DC;slc=01DC;Upper
cp;01DC;CWT;CWU;dm=00FC 0300;dt=Can;ea=A;gc=Ll;Lower;na=LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01DB;suc=01DB
# Phonetic and historic letters
cp;01DD;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER TURNED E;SB=LO;stc=018E;suc=018E
-cp;01DE;cf=01DF;CWCF;CWKCF;CWL;dm=00C4 0304;dt=Can;na=LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON;NFD_QC=N;NFKC_CF=01DF;NFKD_QC=N;scf=01DF;slc=01DF;Upper
+cp;01DE;cf=01DF;CWCF;CWKCF;CWL;dm=00C4 0304;dt=Can;na=LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON;NFD_QC=N;NFKC_CF=01DF;NFKC_SCF=01DF;NFKD_QC=N;scf=01DF;slc=01DF;Upper
cp;01DF;CWT;CWU;dm=00E4 0304;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER A WITH DIAERESIS AND MACRON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01DE;suc=01DE
-cp;01E0;cf=01E1;CWCF;CWKCF;CWL;dm=0226 0304;dt=Can;na=LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON;NFD_QC=N;NFKC_CF=01E1;NFKD_QC=N;scf=01E1;slc=01E1;Upper
+cp;01E0;cf=01E1;CWCF;CWKCF;CWL;dm=0226 0304;dt=Can;na=LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON;NFD_QC=N;NFKC_CF=01E1;NFKC_SCF=01E1;NFKD_QC=N;scf=01E1;slc=01E1;Upper
cp;01E1;CWT;CWU;dm=0227 0304;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01E0;suc=01E0
-cp;01E2;cf=01E3;CWCF;CWKCF;CWL;dm=00C6 0304;dt=Can;na=LATIN CAPITAL LETTER AE WITH MACRON;NFD_QC=N;NFKC_CF=01E3;NFKD_QC=N;scf=01E3;slc=01E3;Upper
+cp;01E2;cf=01E3;CWCF;CWKCF;CWL;dm=00C6 0304;dt=Can;na=LATIN CAPITAL LETTER AE WITH MACRON;NFD_QC=N;NFKC_CF=01E3;NFKC_SCF=01E3;NFKD_QC=N;scf=01E3;slc=01E3;Upper
cp;01E3;CWT;CWU;dm=00E6 0304;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER AE WITH MACRON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01E2;suc=01E2
-cp;01E4;cf=01E5;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER G WITH STROKE;NFKC_CF=01E5;scf=01E5;slc=01E5;Upper
+cp;01E4;cf=01E5;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER G WITH STROKE;NFKC_CF=01E5;NFKC_SCF=01E5;scf=01E5;slc=01E5;Upper
cp;01E5;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER G WITH STROKE;SB=LO;stc=01E4;suc=01E4
-cp;01E6;cf=01E7;CWCF;CWKCF;CWL;dm=0047 030C;dt=Can;na=LATIN CAPITAL LETTER G WITH CARON;NFD_QC=N;NFKC_CF=01E7;NFKD_QC=N;scf=01E7;slc=01E7;Upper
+cp;01E6;cf=01E7;CWCF;CWKCF;CWL;dm=0047 030C;dt=Can;na=LATIN CAPITAL LETTER G WITH CARON;NFD_QC=N;NFKC_CF=01E7;NFKC_SCF=01E7;NFKD_QC=N;scf=01E7;slc=01E7;Upper
cp;01E7;CWT;CWU;dm=0067 030C;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER G WITH CARON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01E6;suc=01E6
-cp;01E8;cf=01E9;CWCF;CWKCF;CWL;dm=004B 030C;dt=Can;na=LATIN CAPITAL LETTER K WITH CARON;NFD_QC=N;NFKC_CF=01E9;NFKD_QC=N;scf=01E9;slc=01E9;Upper
+cp;01E8;cf=01E9;CWCF;CWKCF;CWL;dm=004B 030C;dt=Can;na=LATIN CAPITAL LETTER K WITH CARON;NFD_QC=N;NFKC_CF=01E9;NFKC_SCF=01E9;NFKD_QC=N;scf=01E9;slc=01E9;Upper
cp;01E9;CWT;CWU;dm=006B 030C;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER K WITH CARON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01E8;suc=01E8
-cp;01EA;cf=01EB;CWCF;CWKCF;CWL;dm=004F 0328;dt=Can;na=LATIN CAPITAL LETTER O WITH OGONEK;NFD_QC=N;NFKC_CF=01EB;NFKD_QC=N;scf=01EB;slc=01EB;Upper
+cp;01EA;cf=01EB;CWCF;CWKCF;CWL;dm=004F 0328;dt=Can;na=LATIN CAPITAL LETTER O WITH OGONEK;NFD_QC=N;NFKC_CF=01EB;NFKC_SCF=01EB;NFKD_QC=N;scf=01EB;slc=01EB;Upper
cp;01EB;CWT;CWU;dm=006F 0328;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER O WITH OGONEK;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01EA;suc=01EA
-cp;01EC;cf=01ED;CWCF;CWKCF;CWL;dm=01EA 0304;dt=Can;na=LATIN CAPITAL LETTER O WITH OGONEK AND MACRON;NFD_QC=N;NFKC_CF=01ED;NFKD_QC=N;scf=01ED;slc=01ED;Upper
+cp;01EC;cf=01ED;CWCF;CWKCF;CWL;dm=01EA 0304;dt=Can;na=LATIN CAPITAL LETTER O WITH OGONEK AND MACRON;NFD_QC=N;NFKC_CF=01ED;NFKC_SCF=01ED;NFKD_QC=N;scf=01ED;slc=01ED;Upper
cp;01ED;CWT;CWU;dm=01EB 0304;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER O WITH OGONEK AND MACRON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01EC;suc=01EC
-cp;01EE;cf=01EF;CWCF;CWKCF;CWL;dm=01B7 030C;dt=Can;na=LATIN CAPITAL LETTER EZH WITH CARON;NFD_QC=N;NFKC_CF=01EF;NFKD_QC=N;scf=01EF;slc=01EF;Upper
+cp;01EE;cf=01EF;CWCF;CWKCF;CWL;dm=01B7 030C;dt=Can;na=LATIN CAPITAL LETTER EZH WITH CARON;NFD_QC=N;NFKC_CF=01EF;NFKC_SCF=01EF;NFKD_QC=N;scf=01EF;slc=01EF;Upper
cp;01EF;CWT;CWU;dm=0292 030C;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER EZH WITH CARON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01EE;suc=01EE
cp;01F0;cf=006A 030C;CWT;CWU;dm=006A 030C;dt=Can;gc=Ll;lc=01F0;Lower;na=LATIN SMALL LETTER J WITH CARON;NFD_QC=N;NFKD_QC=N;SB=LO;tc=004A 030C;uc=004A 030C
-cp;01F1;cf=01F3;CWCF;CWKCF;CWL;CWT;dm=0044 005A;dt=Com;na=LATIN CAPITAL LETTER DZ;NFKC_CF=0064 007A;NFKC_QC=N;NFKD_QC=N;scf=01F3;slc=01F3;stc=01F2;Upper
-cp;01F2;cf=01F3;CWCF;CWKCF;CWL;CWU;dm=0044 007A;dt=Com;gc=Lt;na=LATIN CAPITAL LETTER D WITH SMALL LETTER Z;NFKC_CF=0064 007A;NFKC_QC=N;NFKD_QC=N;scf=01F3;slc=01F3;stc=01F2;suc=01F1
-cp;01F3;CWKCF;CWT;CWU;dm=0064 007A;dt=Com;gc=Ll;Lower;na=LATIN SMALL LETTER DZ;NFKC_CF=0064 007A;NFKC_QC=N;NFKD_QC=N;SB=LO;stc=01F2;suc=01F1
-cp;01F4;cf=01F5;CWCF;CWKCF;CWL;dm=0047 0301;dt=Can;na=LATIN CAPITAL LETTER G WITH ACUTE;NFD_QC=N;NFKC_CF=01F5;NFKD_QC=N;scf=01F5;slc=01F5;Upper
+cp;01F1;cf=01F3;CWCF;CWKCF;CWL;CWT;dm=0044 005A;dt=Com;na=LATIN CAPITAL LETTER DZ;NFKC_CF=0064 007A;NFKC_QC=N;NFKC_SCF=0064 007A;NFKD_QC=N;scf=01F3;slc=01F3;stc=01F2;Upper
+cp;01F2;cf=01F3;CWCF;CWKCF;CWL;CWU;dm=0044 007A;dt=Com;gc=Lt;na=LATIN CAPITAL LETTER D WITH SMALL LETTER Z;NFKC_CF=0064 007A;NFKC_QC=N;NFKC_SCF=0064 007A;NFKD_QC=N;scf=01F3;slc=01F3;stc=01F2;suc=01F1
+cp;01F3;CWKCF;CWT;CWU;dm=0064 007A;dt=Com;gc=Ll;Lower;na=LATIN SMALL LETTER DZ;NFKC_CF=0064 007A;NFKC_QC=N;NFKC_SCF=0064 007A;NFKD_QC=N;SB=LO;stc=01F2;suc=01F1
+cp;01F4;cf=01F5;CWCF;CWKCF;CWL;dm=0047 0301;dt=Can;na=LATIN CAPITAL LETTER G WITH ACUTE;NFD_QC=N;NFKC_CF=01F5;NFKC_SCF=01F5;NFKD_QC=N;scf=01F5;slc=01F5;Upper
cp;01F5;CWT;CWU;dm=0067 0301;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER G WITH ACUTE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01F4;suc=01F4
-cp;01F6;age=3.0;cf=0195;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER HWAIR;NFKC_CF=0195;scf=0195;slc=0195;Upper
-cp;01F7;age=3.0;cf=01BF;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER WYNN;NFKC_CF=01BF;scf=01BF;slc=01BF;Upper
-cp;01F8;age=3.0;cf=01F9;CWCF;CWKCF;CWL;dm=004E 0300;dt=Can;na=LATIN CAPITAL LETTER N WITH GRAVE;NFD_QC=N;NFKC_CF=01F9;NFKD_QC=N;scf=01F9;slc=01F9;Upper
+cp;01F6;age=3.0;cf=0195;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER HWAIR;NFKC_CF=0195;NFKC_SCF=0195;scf=0195;slc=0195;Upper
+cp;01F7;age=3.0;cf=01BF;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER WYNN;NFKC_CF=01BF;NFKC_SCF=01BF;scf=01BF;slc=01BF;Upper
+cp;01F8;age=3.0;cf=01F9;CWCF;CWKCF;CWL;dm=004E 0300;dt=Can;na=LATIN CAPITAL LETTER N WITH GRAVE;NFD_QC=N;NFKC_CF=01F9;NFKC_SCF=01F9;NFKD_QC=N;scf=01F9;slc=01F9;Upper
cp;01F9;age=3.0;CWT;CWU;dm=006E 0300;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER N WITH GRAVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01F8;suc=01F8
-cp;01FA;cf=01FB;CWCF;CWKCF;CWL;dm=00C5 0301;dt=Can;na=LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE;NFD_QC=N;NFKC_CF=01FB;NFKD_QC=N;scf=01FB;slc=01FB;Upper
+cp;01FA;cf=01FB;CWCF;CWKCF;CWL;dm=00C5 0301;dt=Can;na=LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE;NFD_QC=N;NFKC_CF=01FB;NFKC_SCF=01FB;NFKD_QC=N;scf=01FB;slc=01FB;Upper
cp;01FB;CWT;CWU;dm=00E5 0301;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01FA;suc=01FA
-cp;01FC;cf=01FD;CWCF;CWKCF;CWL;dm=00C6 0301;dt=Can;na=LATIN CAPITAL LETTER AE WITH ACUTE;NFD_QC=N;NFKC_CF=01FD;NFKD_QC=N;scf=01FD;slc=01FD;Upper
+cp;01FC;cf=01FD;CWCF;CWKCF;CWL;dm=00C6 0301;dt=Can;na=LATIN CAPITAL LETTER AE WITH ACUTE;NFD_QC=N;NFKC_CF=01FD;NFKC_SCF=01FD;NFKD_QC=N;scf=01FD;slc=01FD;Upper
cp;01FD;CWT;CWU;dm=00E6 0301;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER AE WITH ACUTE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01FC;suc=01FC
-cp;01FE;cf=01FF;CWCF;CWKCF;CWL;dm=00D8 0301;dt=Can;na=LATIN CAPITAL LETTER O WITH STROKE AND ACUTE;NFD_QC=N;NFKC_CF=01FF;NFKD_QC=N;scf=01FF;slc=01FF;Upper
+cp;01FE;cf=01FF;CWCF;CWKCF;CWL;dm=00D8 0301;dt=Can;na=LATIN CAPITAL LETTER O WITH STROKE AND ACUTE;NFD_QC=N;NFKC_CF=01FF;NFKC_SCF=01FF;NFKD_QC=N;scf=01FF;slc=01FF;Upper
cp;01FF;CWT;CWU;dm=00F8 0301;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER O WITH STROKE AND ACUTE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=01FE;suc=01FE
# Additions for Slovenian
-cp;0200;cf=0201;CWCF;CWKCF;CWL;dm=0041 030F;dt=Can;na=LATIN CAPITAL LETTER A WITH DOUBLE GRAVE;NFD_QC=N;NFKC_CF=0201;NFKD_QC=N;scf=0201;slc=0201;Upper
+cp;0200;cf=0201;CWCF;CWKCF;CWL;dm=0041 030F;dt=Can;na=LATIN CAPITAL LETTER A WITH DOUBLE GRAVE;NFD_QC=N;NFKC_CF=0201;NFKC_SCF=0201;NFKD_QC=N;scf=0201;slc=0201;Upper
cp;0201;CWT;CWU;dm=0061 030F;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER A WITH DOUBLE GRAVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=0200;suc=0200
-cp;0202;cf=0203;CWCF;CWKCF;CWL;dm=0041 0311;dt=Can;na=LATIN CAPITAL LETTER A WITH INVERTED BREVE;NFD_QC=N;NFKC_CF=0203;NFKD_QC=N;scf=0203;slc=0203;Upper
+cp;0202;cf=0203;CWCF;CWKCF;CWL;dm=0041 0311;dt=Can;na=LATIN CAPITAL LETTER A WITH INVERTED BREVE;NFD_QC=N;NFKC_CF=0203;NFKC_SCF=0203;NFKD_QC=N;scf=0203;slc=0203;Upper
cp;0203;CWT;CWU;dm=0061 0311;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER A WITH INVERTED BREVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=0202;suc=0202
-cp;0204;cf=0205;CWCF;CWKCF;CWL;dm=0045 030F;dt=Can;na=LATIN CAPITAL LETTER E WITH DOUBLE GRAVE;NFD_QC=N;NFKC_CF=0205;NFKD_QC=N;scf=0205;slc=0205;Upper
+cp;0204;cf=0205;CWCF;CWKCF;CWL;dm=0045 030F;dt=Can;na=LATIN CAPITAL LETTER E WITH DOUBLE GRAVE;NFD_QC=N;NFKC_CF=0205;NFKC_SCF=0205;NFKD_QC=N;scf=0205;slc=0205;Upper
cp;0205;CWT;CWU;dm=0065 030F;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER E WITH DOUBLE GRAVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=0204;suc=0204
-cp;0206;cf=0207;CWCF;CWKCF;CWL;dm=0045 0311;dt=Can;na=LATIN CAPITAL LETTER E WITH INVERTED BREVE;NFD_QC=N;NFKC_CF=0207;NFKD_QC=N;scf=0207;slc=0207;Upper
+cp;0206;cf=0207;CWCF;CWKCF;CWL;dm=0045 0311;dt=Can;na=LATIN CAPITAL LETTER E WITH INVERTED BREVE;NFD_QC=N;NFKC_CF=0207;NFKC_SCF=0207;NFKD_QC=N;scf=0207;slc=0207;Upper
cp;0207;CWT;CWU;dm=0065 0311;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER E WITH INVERTED BREVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=0206;suc=0206
-cp;0208;cf=0209;CWCF;CWKCF;CWL;dm=0049 030F;dt=Can;na=LATIN CAPITAL LETTER I WITH DOUBLE GRAVE;NFD_QC=N;NFKC_CF=0209;NFKD_QC=N;scf=0209;slc=0209;Upper
+cp;0208;cf=0209;CWCF;CWKCF;CWL;dm=0049 030F;dt=Can;na=LATIN CAPITAL LETTER I WITH DOUBLE GRAVE;NFD_QC=N;NFKC_CF=0209;NFKC_SCF=0209;NFKD_QC=N;scf=0209;slc=0209;Upper
cp;0209;CWT;CWU;dm=0069 030F;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER I WITH DOUBLE GRAVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=0208;suc=0208
-cp;020A;cf=020B;CWCF;CWKCF;CWL;dm=0049 0311;dt=Can;na=LATIN CAPITAL LETTER I WITH INVERTED BREVE;NFD_QC=N;NFKC_CF=020B;NFKD_QC=N;scf=020B;slc=020B;Upper
+cp;020A;cf=020B;CWCF;CWKCF;CWL;dm=0049 0311;dt=Can;na=LATIN CAPITAL LETTER I WITH INVERTED BREVE;NFD_QC=N;NFKC_CF=020B;NFKC_SCF=020B;NFKD_QC=N;scf=020B;slc=020B;Upper
cp;020B;CWT;CWU;dm=0069 0311;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER I WITH INVERTED BREVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=020A;suc=020A
-cp;020C;cf=020D;CWCF;CWKCF;CWL;dm=004F 030F;dt=Can;na=LATIN CAPITAL LETTER O WITH DOUBLE GRAVE;NFD_QC=N;NFKC_CF=020D;NFKD_QC=N;scf=020D;slc=020D;Upper
+cp;020C;cf=020D;CWCF;CWKCF;CWL;dm=004F 030F;dt=Can;na=LATIN CAPITAL LETTER O WITH DOUBLE GRAVE;NFD_QC=N;NFKC_CF=020D;NFKC_SCF=020D;NFKD_QC=N;scf=020D;slc=020D;Upper
cp;020D;CWT;CWU;dm=006F 030F;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER O WITH DOUBLE GRAVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=020C;suc=020C
-cp;020E;cf=020F;CWCF;CWKCF;CWL;dm=004F 0311;dt=Can;na=LATIN CAPITAL LETTER O WITH INVERTED BREVE;NFD_QC=N;NFKC_CF=020F;NFKD_QC=N;scf=020F;slc=020F;Upper
+cp;020E;cf=020F;CWCF;CWKCF;CWL;dm=004F 0311;dt=Can;na=LATIN CAPITAL LETTER O WITH INVERTED BREVE;NFD_QC=N;NFKC_CF=020F;NFKC_SCF=020F;NFKD_QC=N;scf=020F;slc=020F;Upper
cp;020F;CWT;CWU;dm=006F 0311;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER O WITH INVERTED BREVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=020E;suc=020E
-cp;0210;cf=0211;CWCF;CWKCF;CWL;dm=0052 030F;dt=Can;na=LATIN CAPITAL LETTER R WITH DOUBLE GRAVE;NFD_QC=N;NFKC_CF=0211;NFKD_QC=N;scf=0211;slc=0211;Upper
+cp;0210;cf=0211;CWCF;CWKCF;CWL;dm=0052 030F;dt=Can;na=LATIN CAPITAL LETTER R WITH DOUBLE GRAVE;NFD_QC=N;NFKC_CF=0211;NFKC_SCF=0211;NFKD_QC=N;scf=0211;slc=0211;Upper
cp;0211;CWT;CWU;dm=0072 030F;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER R WITH DOUBLE GRAVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=0210;suc=0210
-cp;0212;cf=0213;CWCF;CWKCF;CWL;dm=0052 0311;dt=Can;na=LATIN CAPITAL LETTER R WITH INVERTED BREVE;NFD_QC=N;NFKC_CF=0213;NFKD_QC=N;scf=0213;slc=0213;Upper
+cp;0212;cf=0213;CWCF;CWKCF;CWL;dm=0052 0311;dt=Can;na=LATIN CAPITAL LETTER R WITH INVERTED BREVE;NFD_QC=N;NFKC_CF=0213;NFKC_SCF=0213;NFKD_QC=N;scf=0213;slc=0213;Upper
cp;0213;CWT;CWU;dm=0072 0311;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER R WITH INVERTED BREVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=0212;suc=0212
-cp;0214;cf=0215;CWCF;CWKCF;CWL;dm=0055 030F;dt=Can;na=LATIN CAPITAL LETTER U WITH DOUBLE GRAVE;NFD_QC=N;NFKC_CF=0215;NFKD_QC=N;scf=0215;slc=0215;Upper
+cp;0214;cf=0215;CWCF;CWKCF;CWL;dm=0055 030F;dt=Can;na=LATIN CAPITAL LETTER U WITH DOUBLE GRAVE;NFD_QC=N;NFKC_CF=0215;NFKC_SCF=0215;NFKD_QC=N;scf=0215;slc=0215;Upper
cp;0215;CWT;CWU;dm=0075 030F;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER U WITH DOUBLE GRAVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=0214;suc=0214
-cp;0216;cf=0217;CWCF;CWKCF;CWL;dm=0055 0311;dt=Can;na=LATIN CAPITAL LETTER U WITH INVERTED BREVE;NFD_QC=N;NFKC_CF=0217;NFKD_QC=N;scf=0217;slc=0217;Upper
+cp;0216;cf=0217;CWCF;CWKCF;CWL;dm=0055 0311;dt=Can;na=LATIN CAPITAL LETTER U WITH INVERTED BREVE;NFD_QC=N;NFKC_CF=0217;NFKC_SCF=0217;NFKD_QC=N;scf=0217;slc=0217;Upper
cp;0217;CWT;CWU;dm=0075 0311;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER U WITH INVERTED BREVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=0216;suc=0216
# Additions for Romanian
-cp;0218;age=3.0;cf=0219;CWCF;CWKCF;CWL;dm=0053 0326;dt=Can;na=LATIN CAPITAL LETTER S WITH COMMA BELOW;NFD_QC=N;NFKC_CF=0219;NFKD_QC=N;scf=0219;slc=0219;Upper
+cp;0218;age=3.0;cf=0219;CWCF;CWKCF;CWL;dm=0053 0326;dt=Can;na=LATIN CAPITAL LETTER S WITH COMMA BELOW;NFD_QC=N;NFKC_CF=0219;NFKC_SCF=0219;NFKD_QC=N;scf=0219;slc=0219;Upper
cp;0219;age=3.0;CWT;CWU;dm=0073 0326;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER S WITH COMMA BELOW;NFD_QC=N;NFKD_QC=N;SB=LO;stc=0218;suc=0218
-cp;021A;age=3.0;cf=021B;CWCF;CWKCF;CWL;dm=0054 0326;dt=Can;na=LATIN CAPITAL LETTER T WITH COMMA BELOW;NFD_QC=N;NFKC_CF=021B;NFKD_QC=N;scf=021B;slc=021B;Upper
+cp;021A;age=3.0;cf=021B;CWCF;CWKCF;CWL;dm=0054 0326;dt=Can;na=LATIN CAPITAL LETTER T WITH COMMA BELOW;NFD_QC=N;NFKC_CF=021B;NFKC_SCF=021B;NFKD_QC=N;scf=021B;slc=021B;Upper
cp;021B;age=3.0;CWT;CWU;dm=0074 0326;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER T WITH COMMA BELOW;NFD_QC=N;NFKD_QC=N;SB=LO;stc=021A;suc=021A
# Miscellaneous additions
-cp;021C;age=3.0;cf=021D;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER YOGH;NFKC_CF=021D;scf=021D;slc=021D;Upper
+cp;021C;age=3.0;cf=021D;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER YOGH;NFKC_CF=021D;NFKC_SCF=021D;scf=021D;slc=021D;Upper
cp;021D;age=3.0;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER YOGH;SB=LO;stc=021C;suc=021C
-cp;021E;age=3.0;cf=021F;CWCF;CWKCF;CWL;dm=0048 030C;dt=Can;na=LATIN CAPITAL LETTER H WITH CARON;NFD_QC=N;NFKC_CF=021F;NFKD_QC=N;scf=021F;slc=021F;Upper
+cp;021E;age=3.0;cf=021F;CWCF;CWKCF;CWL;dm=0048 030C;dt=Can;na=LATIN CAPITAL LETTER H WITH CARON;NFD_QC=N;NFKC_CF=021F;NFKC_SCF=021F;NFKD_QC=N;scf=021F;slc=021F;Upper
cp;021F;age=3.0;CWT;CWU;dm=0068 030C;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER H WITH CARON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=021E;suc=021E
-cp;0220;age=3.2;cf=019E;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER N WITH LONG RIGHT LEG;NFKC_CF=019E;scf=019E;slc=019E;Upper
+cp;0220;age=3.2;cf=019E;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER N WITH LONG RIGHT LEG;NFKC_CF=019E;NFKC_SCF=019E;scf=019E;slc=019E;Upper
cp;0221;age=4.0;-CWCM;gc=Ll;Lower;na=LATIN SMALL LETTER D WITH CURL;SB=LO
-cp;0222;age=3.0;cf=0223;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER OU;NFKC_CF=0223;scf=0223;slc=0223;Upper
+cp;0222;age=3.0;cf=0223;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER OU;NFKC_CF=0223;NFKC_SCF=0223;scf=0223;slc=0223;Upper
cp;0223;age=3.0;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER OU;SB=LO;stc=0222;suc=0222
-cp;0224;age=3.0;cf=0225;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER Z WITH HOOK;NFKC_CF=0225;scf=0225;slc=0225;Upper
+cp;0224;age=3.0;cf=0225;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER Z WITH HOOK;NFKC_CF=0225;NFKC_SCF=0225;scf=0225;slc=0225;Upper
cp;0225;age=3.0;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER Z WITH HOOK;SB=LO;stc=0224;suc=0224
-cp;0226;age=3.0;cf=0227;CWCF;CWKCF;CWL;dm=0041 0307;dt=Can;na=LATIN CAPITAL LETTER A WITH DOT ABOVE;NFD_QC=N;NFKC_CF=0227;NFKD_QC=N;scf=0227;slc=0227;Upper
+cp;0226;age=3.0;cf=0227;CWCF;CWKCF;CWL;dm=0041 0307;dt=Can;na=LATIN CAPITAL LETTER A WITH DOT ABOVE;NFD_QC=N;NFKC_CF=0227;NFKC_SCF=0227;NFKD_QC=N;scf=0227;slc=0227;Upper
cp;0227;age=3.0;CWT;CWU;dm=0061 0307;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER A WITH DOT ABOVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=0226;suc=0226
-cp;0228;age=3.0;cf=0229;CWCF;CWKCF;CWL;dm=0045 0327;dt=Can;na=LATIN CAPITAL LETTER E WITH CEDILLA;NFD_QC=N;NFKC_CF=0229;NFKD_QC=N;scf=0229;slc=0229;Upper
+cp;0228;age=3.0;cf=0229;CWCF;CWKCF;CWL;dm=0045 0327;dt=Can;na=LATIN CAPITAL LETTER E WITH CEDILLA;NFD_QC=N;NFKC_CF=0229;NFKC_SCF=0229;NFKD_QC=N;scf=0229;slc=0229;Upper
cp;0229;age=3.0;CWT;CWU;dm=0065 0327;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER E WITH CEDILLA;NFD_QC=N;NFKD_QC=N;SB=LO;stc=0228;suc=0228
# Additions for Livonian
-cp;022A;age=3.0;cf=022B;CWCF;CWKCF;CWL;dm=00D6 0304;dt=Can;na=LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON;NFD_QC=N;NFKC_CF=022B;NFKD_QC=N;scf=022B;slc=022B;Upper
+cp;022A;age=3.0;cf=022B;CWCF;CWKCF;CWL;dm=00D6 0304;dt=Can;na=LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON;NFD_QC=N;NFKC_CF=022B;NFKC_SCF=022B;NFKD_QC=N;scf=022B;slc=022B;Upper
cp;022B;age=3.0;CWT;CWU;dm=00F6 0304;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER O WITH DIAERESIS AND MACRON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=022A;suc=022A
-cp;022C;age=3.0;cf=022D;CWCF;CWKCF;CWL;dm=00D5 0304;dt=Can;na=LATIN CAPITAL LETTER O WITH TILDE AND MACRON;NFD_QC=N;NFKC_CF=022D;NFKD_QC=N;scf=022D;slc=022D;Upper
+cp;022C;age=3.0;cf=022D;CWCF;CWKCF;CWL;dm=00D5 0304;dt=Can;na=LATIN CAPITAL LETTER O WITH TILDE AND MACRON;NFD_QC=N;NFKC_CF=022D;NFKC_SCF=022D;NFKD_QC=N;scf=022D;slc=022D;Upper
cp;022D;age=3.0;CWT;CWU;dm=00F5 0304;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER O WITH TILDE AND MACRON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=022C;suc=022C
-cp;022E;age=3.0;cf=022F;CWCF;CWKCF;CWL;dm=004F 0307;dt=Can;na=LATIN CAPITAL LETTER O WITH DOT ABOVE;NFD_QC=N;NFKC_CF=022F;NFKD_QC=N;scf=022F;slc=022F;Upper
+cp;022E;age=3.0;cf=022F;CWCF;CWKCF;CWL;dm=004F 0307;dt=Can;na=LATIN CAPITAL LETTER O WITH DOT ABOVE;NFD_QC=N;NFKC_CF=022F;NFKC_SCF=022F;NFKD_QC=N;scf=022F;slc=022F;Upper
cp;022F;age=3.0;CWT;CWU;dm=006F 0307;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER O WITH DOT ABOVE;NFD_QC=N;NFKD_QC=N;SB=LO;stc=022E;suc=022E
-cp;0230;age=3.0;cf=0231;CWCF;CWKCF;CWL;dm=022E 0304;dt=Can;na=LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON;NFD_QC=N;NFKC_CF=0231;NFKD_QC=N;scf=0231;slc=0231;Upper
+cp;0230;age=3.0;cf=0231;CWCF;CWKCF;CWL;dm=022E 0304;dt=Can;na=LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON;NFD_QC=N;NFKC_CF=0231;NFKC_SCF=0231;NFKD_QC=N;scf=0231;slc=0231;Upper
cp;0231;age=3.0;CWT;CWU;dm=022F 0304;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=0230;suc=0230
-cp;0232;age=3.0;cf=0233;CWCF;CWKCF;CWL;dm=0059 0304;dt=Can;na=LATIN CAPITAL LETTER Y WITH MACRON;NFD_QC=N;NFKC_CF=0233;NFKD_QC=N;scf=0233;slc=0233;Upper
+cp;0232;age=3.0;cf=0233;CWCF;CWKCF;CWL;dm=0059 0304;dt=Can;na=LATIN CAPITAL LETTER Y WITH MACRON;NFD_QC=N;NFKC_CF=0233;NFKC_SCF=0233;NFKD_QC=N;scf=0233;slc=0233;Upper
cp;0233;age=3.0;CWT;CWU;dm=0079 0304;dt=Can;gc=Ll;Lower;na=LATIN SMALL LETTER Y WITH MACRON;NFD_QC=N;NFKD_QC=N;SB=LO;stc=0232;suc=0232
# Additions for Sinology
cp;0234;age=4.0;-CWCM;gc=Ll;Lower;na=LATIN SMALL LETTER L WITH CURL;SB=LO
@@ -1888,29 +1905,29 @@ cp;0237;age=4.1;-CWCM;gc=Ll;Lower;na=LATIN SMALL LETTER DOTLESS J;SB=LO
cp;0238;age=4.1;-CWCM;gc=Ll;Lower;na=LATIN SMALL LETTER DB DIGRAPH;SB=LO
cp;0239;age=4.1;-CWCM;gc=Ll;Lower;na=LATIN SMALL LETTER QP DIGRAPH;SB=LO
# Additions for Sencoten
-cp;023A;age=4.1;cf=2C65;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER A WITH STROKE;NFKC_CF=2C65;scf=2C65;slc=2C65;Upper
-cp;023B;age=4.1;cf=023C;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER C WITH STROKE;NFKC_CF=023C;scf=023C;slc=023C;Upper
+cp;023A;age=4.1;cf=2C65;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER A WITH STROKE;NFKC_CF=2C65;NFKC_SCF=2C65;scf=2C65;slc=2C65;Upper
+cp;023B;age=4.1;cf=023C;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER C WITH STROKE;NFKC_CF=023C;NFKC_SCF=023C;scf=023C;slc=023C;Upper
cp;023C;age=4.1;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER C WITH STROKE;SB=LO;stc=023B;suc=023B
-cp;023D;age=4.1;cf=019A;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER L WITH BAR;NFKC_CF=019A;scf=019A;slc=019A;Upper
-cp;023E;age=4.1;cf=2C66;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER T WITH DIAGONAL STROKE;NFKC_CF=2C66;scf=2C66;slc=2C66;Upper
+cp;023D;age=4.1;cf=019A;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER L WITH BAR;NFKC_CF=019A;NFKC_SCF=019A;scf=019A;slc=019A;Upper
+cp;023E;age=4.1;cf=2C66;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER T WITH DIAGONAL STROKE;NFKC_CF=2C66;NFKC_SCF=2C66;scf=2C66;slc=2C66;Upper
# Additions for Africanist linguistics
cp;023F;age=4.1;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER S WITH SWASH TAIL;SB=LO;stc=2C7E;suc=2C7E
cp;0240;age=4.1;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER Z WITH SWASH TAIL;SB=LO;stc=2C7F;suc=2C7F
# Miscellaneous additions
-cp;0241;age=4.1;cf=0242;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER GLOTTAL STOP;NFKC_CF=0242;scf=0242;slc=0242;Upper
+cp;0241;age=4.1;cf=0242;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER GLOTTAL STOP;NFKC_CF=0242;NFKC_SCF=0242;scf=0242;slc=0242;Upper
cp;0242;age=5.0;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER GLOTTAL STOP;SB=LO;stc=0241;suc=0241
-cp;0243;age=5.0;cf=0180;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER B WITH STROKE;NFKC_CF=0180;scf=0180;slc=0180;Upper
-cp;0244;age=5.0;cf=0289;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER U BAR;NFKC_CF=0289;scf=0289;slc=0289;Upper
-cp;0245;age=5.0;cf=028C;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER TURNED V;NFKC_CF=028C;scf=028C;slc=028C;Upper
-cp;0246;age=5.0;cf=0247;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER E WITH STROKE;NFKC_CF=0247;scf=0247;slc=0247;Upper
+cp;0243;age=5.0;cf=0180;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER B WITH STROKE;NFKC_CF=0180;NFKC_SCF=0180;scf=0180;slc=0180;Upper
+cp;0244;age=5.0;cf=0289;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER U BAR;NFKC_CF=0289;NFKC_SCF=0289;scf=0289;slc=0289;Upper
+cp;0245;age=5.0;cf=028C;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER TURNED V;NFKC_CF=028C;NFKC_SCF=028C;scf=028C;slc=028C;Upper
+cp;0246;age=5.0;cf=0247;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER E WITH STROKE;NFKC_CF=0247;NFKC_SCF=0247;scf=0247;slc=0247;Upper
cp;0247;age=5.0;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER E WITH STROKE;SB=LO;stc=0246;suc=0246
-cp;0248;age=5.0;cf=0249;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER J WITH STROKE;NFKC_CF=0249;scf=0249;slc=0249;Upper
+cp;0248;age=5.0;cf=0249;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER J WITH STROKE;NFKC_CF=0249;NFKC_SCF=0249;scf=0249;slc=0249;Upper
cp;0249;age=5.0;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER J WITH STROKE;SB=LO;SD;stc=0248;suc=0248
-cp;024A;age=5.0;cf=024B;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL;NFKC_CF=024B;scf=024B;slc=024B;Upper
+cp;024A;age=5.0;cf=024B;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL;NFKC_CF=024B;NFKC_SCF=024B;scf=024B;slc=024B;Upper
cp;024B;age=5.0;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER Q WITH HOOK TAIL;SB=LO;stc=024A;suc=024A
-cp;024C;age=5.0;cf=024D;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER R WITH STROKE;NFKC_CF=024D;scf=024D;slc=024D;Upper
+cp;024C;age=5.0;cf=024D;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER R WITH STROKE;NFKC_CF=024D;NFKC_SCF=024D;scf=024D;slc=024D;Upper
cp;024D;age=5.0;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER R WITH STROKE;SB=LO;stc=024C;suc=024C
-cp;024E;age=5.0;cf=024F;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER Y WITH STROKE;NFKC_CF=024F;scf=024F;slc=024F;Upper
+cp;024E;age=5.0;cf=024F;CWCF;CWKCF;CWL;na=LATIN CAPITAL LETTER Y WITH STROKE;NFKC_CF=024F;NFKC_SCF=024F;scf=024F;slc=024F;Upper
cp;024F;age=5.0;CWT;CWU;gc=Ll;Lower;na=LATIN SMALL LETTER Y WITH STROKE;SB=LO;stc=024E;suc=024E
block;0250..02AF;age=1.1;Alpha;blk=IPA_Ext;Cased;gc=Ll;Gr_Base;IDC;IDS;lb=AL;Lower;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
@@ -2018,15 +2035,15 @@ cp;02AF;age=4.0;na=LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL
block;02B0..02FF;age=1.1;bc=ON;blk=Modifier_Letters;CI;Dia;gc=Sk;Gr_Base;lb=AL;sc=Zyyy;WB=LE
# 02B0..02FF Spacing Modifier Letters
# Latin superscript modifier letters
-cp;02B0;Alpha;bc=L;Cased;CWKCF;dm=0068;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL H;NFKC_CF=0068;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
-cp;02B1;Alpha;bc=L;Cased;CWKCF;dm=0266;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL H WITH HOOK;NFKC_CF=0266;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
-cp;02B2;Alpha;bc=L;Cased;CWKCF;dm=006A;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL J;NFKC_CF=006A;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;SD;XIDC;XIDS
-cp;02B3;Alpha;bc=L;Cased;CWKCF;dm=0072;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL R;NFKC_CF=0072;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
-cp;02B4;Alpha;bc=L;Cased;CWKCF;dm=0279;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL TURNED R;NFKC_CF=0279;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
-cp;02B5;Alpha;bc=L;Cased;CWKCF;dm=027B;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL TURNED R WITH HOOK;NFKC_CF=027B;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
-cp;02B6;Alpha;bc=L;Cased;CWKCF;dm=0281;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL CAPITAL INVERTED R;NFKC_CF=0281;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
-cp;02B7;Alpha;bc=L;Cased;CWKCF;dm=0077;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL W;NFKC_CF=0077;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
-cp;02B8;Alpha;bc=L;Cased;CWKCF;dm=0079;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL Y;NFKC_CF=0079;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
+cp;02B0;Alpha;bc=L;Cased;CWKCF;dm=0068;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL H;NFKC_CF=0068;NFKC_QC=N;NFKC_SCF=0068;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
+cp;02B1;Alpha;bc=L;Cased;CWKCF;dm=0266;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL H WITH HOOK;NFKC_CF=0266;NFKC_QC=N;NFKC_SCF=0266;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
+cp;02B2;Alpha;bc=L;Cased;CWKCF;dm=006A;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL J;NFKC_CF=006A;NFKC_QC=N;NFKC_SCF=006A;NFKD_QC=N;SB=LO;sc=Latn;SD;XIDC;XIDS
+cp;02B3;Alpha;bc=L;Cased;CWKCF;dm=0072;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL R;NFKC_CF=0072;NFKC_QC=N;NFKC_SCF=0072;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
+cp;02B4;Alpha;bc=L;Cased;CWKCF;dm=0279;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL TURNED R;NFKC_CF=0279;NFKC_QC=N;NFKC_SCF=0279;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
+cp;02B5;Alpha;bc=L;Cased;CWKCF;dm=027B;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL TURNED R WITH HOOK;NFKC_CF=027B;NFKC_QC=N;NFKC_SCF=027B;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
+cp;02B6;Alpha;bc=L;Cased;CWKCF;dm=0281;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL CAPITAL INVERTED R;NFKC_CF=0281;NFKC_QC=N;NFKC_SCF=0281;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
+cp;02B7;Alpha;bc=L;Cased;CWKCF;dm=0077;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL W;NFKC_CF=0077;NFKC_QC=N;NFKC_SCF=0077;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
+cp;02B8;Alpha;bc=L;Cased;CWKCF;dm=0079;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL Y;NFKC_CF=0079;NFKC_QC=N;NFKC_SCF=0079;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
# Miscellaneous phonetic modifiers
cp;02B9;Alpha;gc=Lm;IDC;IDS;na=MODIFIER LETTER PRIME;SB=LE;XIDC;XIDS
cp;02BA;Alpha;gc=Lm;IDC;IDS;na=MODIFIER LETTER DOUBLE PRIME;SB=LE;XIDC;XIDS
@@ -2060,20 +2077,20 @@ cp;02D5;na=MODIFIER LETTER DOWN TACK
cp;02D6;na=MODIFIER LETTER PLUS SIGN
cp;02D7;na=MODIFIER LETTER MINUS SIGN
# Spacing clones of diacritics
-cp;02D8;CWKCF;dm=0020 0306;dt=Com;ea=A;lb=AI;na=BREVE;NFKC_CF=0020 0306;NFKC_QC=N;NFKD_QC=N;WB=XX
-cp;02D9;CWKCF;dm=0020 0307;dt=Com;ea=A;lb=AI;na=DOT ABOVE;NFKC_CF=0020 0307;NFKC_QC=N;NFKD_QC=N;WB=XX
-cp;02DA;CWKCF;dm=0020 030A;dt=Com;ea=A;lb=AI;na=RING ABOVE;NFKC_CF=0020 030A;NFKC_QC=N;NFKD_QC=N;WB=XX
-cp;02DB;CWKCF;dm=0020 0328;dt=Com;ea=A;lb=AI;na=OGONEK;NFKC_CF=0020 0328;NFKC_QC=N;NFKD_QC=N;WB=XX
-cp;02DC;CWKCF;dm=0020 0303;dt=Com;na=SMALL TILDE;NFKC_CF=0020 0303;NFKC_QC=N;NFKD_QC=N;WB=XX
-cp;02DD;CWKCF;dm=0020 030B;dt=Com;ea=A;lb=AI;na=DOUBLE ACUTE ACCENT;NFKC_CF=0020 030B;NFKC_QC=N;NFKD_QC=N;WB=XX
+cp;02D8;CWKCF;dm=0020 0306;dt=Com;ea=A;lb=AI;na=BREVE;NFKC_CF=0020 0306;NFKC_QC=N;NFKC_SCF=0020 0306;NFKD_QC=N;WB=XX
+cp;02D9;CWKCF;dm=0020 0307;dt=Com;ea=A;lb=AI;na=DOT ABOVE;NFKC_CF=0020 0307;NFKC_QC=N;NFKC_SCF=0020 0307;NFKD_QC=N;WB=XX
+cp;02DA;CWKCF;dm=0020 030A;dt=Com;ea=A;lb=AI;na=RING ABOVE;NFKC_CF=0020 030A;NFKC_QC=N;NFKC_SCF=0020 030A;NFKD_QC=N;WB=XX
+cp;02DB;CWKCF;dm=0020 0328;dt=Com;ea=A;lb=AI;na=OGONEK;NFKC_CF=0020 0328;NFKC_QC=N;NFKC_SCF=0020 0328;NFKD_QC=N;WB=XX
+cp;02DC;CWKCF;dm=0020 0303;dt=Com;na=SMALL TILDE;NFKC_CF=0020 0303;NFKC_QC=N;NFKC_SCF=0020 0303;NFKD_QC=N;WB=XX
+cp;02DD;CWKCF;dm=0020 030B;dt=Com;ea=A;lb=AI;na=DOUBLE ACUTE ACCENT;NFKC_CF=0020 030B;NFKC_QC=N;NFKC_SCF=0020 030B;NFKD_QC=N;WB=XX
# Additions based on 1989 IPA
cp;02DE;na=MODIFIER LETTER RHOTIC HOOK
cp;02DF;age=3.0;ea=A;lb=BB;na=MODIFIER LETTER CROSS ACCENT
-cp;02E0;Alpha;bc=L;Cased;CWKCF;dm=0263;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL GAMMA;NFKC_CF=0263;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
-cp;02E1;Alpha;bc=L;Cased;CWKCF;dm=006C;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL L;NFKC_CF=006C;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
-cp;02E2;Alpha;bc=L;Cased;CWKCF;dm=0073;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL S;NFKC_CF=0073;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
-cp;02E3;Alpha;bc=L;Cased;CWKCF;dm=0078;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL X;NFKC_CF=0078;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
-cp;02E4;Alpha;bc=L;Cased;CWKCF;dm=0295;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL REVERSED GLOTTAL STOP;NFKC_CF=0295;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
+cp;02E0;Alpha;bc=L;Cased;CWKCF;dm=0263;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL GAMMA;NFKC_CF=0263;NFKC_QC=N;NFKC_SCF=0263;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
+cp;02E1;Alpha;bc=L;Cased;CWKCF;dm=006C;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL L;NFKC_CF=006C;NFKC_QC=N;NFKC_SCF=006C;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
+cp;02E2;Alpha;bc=L;Cased;CWKCF;dm=0073;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL S;NFKC_CF=0073;NFKC_QC=N;NFKC_SCF=0073;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
+cp;02E3;Alpha;bc=L;Cased;CWKCF;dm=0078;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL X;NFKC_CF=0078;NFKC_QC=N;NFKC_SCF=0078;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
+cp;02E4;Alpha;bc=L;Cased;CWKCF;dm=0295;dt=Sup;gc=Lm;IDC;IDS;Lower;na=MODIFIER LETTER SMALL REVERSED GLOTTAL STOP;NFKC_CF=0295;NFKC_QC=N;NFKC_SCF=0295;NFKD_QC=N;SB=LO;sc=Latn;XIDC;XIDS
# Tone letters
cp;02E5;na=MODIFIER LETTER EXTRA-HIGH TONE BAR
cp;02E6;na=MODIFIER LETTER HIGH TONE BAR
@@ -2107,7 +2124,7 @@ cp;02FD;age=4.0;na=MODIFIER LETTER SHELF
cp;02FE;age=4.0;na=MODIFIER LETTER OPEN SHELF
cp;02FF;age=4.0;na=MODIFIER LETTER LOW LEFT ARROW
-block;0300..036F;age=1.1;bc=NSM;blk=Diacriticals;ccc=230;CI;Dia;ea=A;gc=Mn;GCB=EX;Gr_Ext;IDC;jt=T;lb=CM;SB=EX;sc=Zinh;WB=Extend;XIDC
+block;0300..036F;age=1.1;bc=NSM;blk=Diacriticals;ccc=230;CI;Dia;ea=A;gc=Mn;GCB=EX;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;SB=EX;sc=Zinh;WB=Extend;XIDC
# 0300..036F Combining Diacritical Marks
# Ordinary diacritics
cp;0300;na=COMBINING GRAVE ACCENT;NFC_QC=M;NFKC_QC=M
@@ -2177,13 +2194,13 @@ cp;033D;na=COMBINING X ABOVE
cp;033E;na=COMBINING VERTICAL TILDE
cp;033F;na=COMBINING DOUBLE OVERLINE
# Vietnamese tone marks
-cp;0340;Comp_Ex;CWKCF;dm=0300;dt=Can;na=COMBINING GRAVE TONE MARK;NFC_QC=N;NFD_QC=N;NFKC_CF=0300;NFKC_QC=N;NFKD_QC=N
-cp;0341;Comp_Ex;CWKCF;dm=0301;dt=Can;na=COMBINING ACUTE TONE MARK;NFC_QC=N;NFD_QC=N;NFKC_CF=0301;NFKC_QC=N;NFKD_QC=N
+cp;0340;Comp_Ex;CWKCF;dm=0300;dt=Can;na=COMBINING GRAVE TONE MARK;NFC_QC=N;NFD_QC=N;NFKC_CF=0300;NFKC_QC=N;NFKC_SCF=0300;NFKD_QC=N
+cp;0341;Comp_Ex;CWKCF;dm=0301;dt=Can;na=COMBINING ACUTE TONE MARK;NFC_QC=N;NFD_QC=N;NFKC_CF=0301;NFKC_QC=N;NFKC_SCF=0301;NFKD_QC=N
# Additions for Greek
cp;0342;na=COMBINING GREEK PERISPOMENI;NFC_QC=M;NFKC_QC=M;scx=Grek
-cp;0343;Comp_Ex;CWKCF;dm=0313;dt=Can;na=COMBINING GREEK KORONIS;NFC_QC=N;NFD_QC=N;NFKC_CF=0313;NFKC_QC=N;NFKD_QC=N
-cp;0344;Comp_Ex;CWKCF;dm=0308 0301;dt=Can;na=COMBINING GREEK DIALYTIKA TONOS;NFC_QC=N;NFD_QC=N;NFKC_CF=0308 0301;NFKC_QC=N;NFKD_QC=N
-cp;0345;Alpha;Cased;ccc=240;cf=03B9;CWCF;CWCM;CWKCF;CWT;CWU;Lower;na=COMBINING GREEK YPOGEGRAMMENI;NFC_QC=M;NFKC_CF=03B9;NFKC_QC=M;scf=03B9;scx=Grek;stc=0399;suc=0399
+cp;0343;Comp_Ex;CWKCF;dm=0313;dt=Can;na=COMBINING GREEK KORONIS;NFC_QC=N;NFD_QC=N;NFKC_CF=0313;NFKC_QC=N;NFKC_SCF=0313;NFKD_QC=N
+cp;0344;Comp_Ex;CWKCF;dm=0308 0301;dt=Can;na=COMBINING GREEK DIALYTIKA TONOS;NFC_QC=N;NFD_QC=N;NFKC_CF=0308 0301;NFKC_QC=N;NFKC_SCF=0308 0301;NFKD_QC=N
+cp;0345;Alpha;Cased;ccc=240;cf=03B9;CWCF;CWCM;CWKCF;CWT;CWU;Lower;na=COMBINING GREEK YPOGEGRAMMENI;NFC_QC=M;NFKC_CF=03B9;NFKC_QC=M;NFKC_SCF=03B9;scf=03B9;scx=Grek;stc=0399;suc=0399
# Additions for IPA
cp;0346;age=3.0;na=COMBINING BRIDGE ABOVE
cp;0347;age=3.0;ccc=220;na=COMBINING EQUALS SIGN BELOW
@@ -2196,7 +2213,7 @@ cp;034C;age=3.0;na=COMBINING ALMOST EQUAL TO ABOVE
cp;034D;age=3.0;ccc=220;na=COMBINING LEFT RIGHT ARROW BELOW
cp;034E;age=3.0;ccc=220;na=COMBINING UPWARDS ARROW BELOW
# Grapheme joiner
-cp;034F;age=3.2;ccc=0;CWKCF;DI;-Dia;lb=GL;na=COMBINING GRAPHEME JOINER;Name_Alias=abbreviation=CGJ;NFKC_CF=
+cp;034F;age=3.2;ccc=0;CWKCF;DI;-Dia;InCB=None;lb=GL;na=COMBINING GRAPHEME JOINER;Name_Alias=abbreviation=CGJ;NFKC_CF=;NFKC_SCF=
# Additions for the Uralic Phonetic Alphabet
cp;0350;age=4.0;na=COMBINING RIGHT ARROWHEAD ABOVE
cp;0351;age=4.0;na=COMBINING LEFT HALF RING ABOVE
@@ -2237,72 +2254,72 @@ cp;036F;age=3.2;-Dia;na=COMBINING LATIN SMALL LETTER X;scx=Latn
block;0370..03FF;age=1.1;Alpha;blk=Greek;Cased;CWCM;CWKCF;gc=Ll;Gr_Base;IDC;IDS;lb=AL;SB=LO;sc=Grek;WB=LE;XIDC;XIDS
# 0370..03FF Greek and Coptic
# Archaic letters
-cp;0370;age=5.1;cf=0371;CWCF;CWL;gc=Lu;na=GREEK CAPITAL LETTER HETA;NFKC_CF=0371;SB=UP;scf=0371;slc=0371;Upper
+cp;0370;age=5.1;cf=0371;CWCF;CWL;gc=Lu;na=GREEK CAPITAL LETTER HETA;NFKC_CF=0371;NFKC_SCF=0371;SB=UP;scf=0371;slc=0371;Upper
cp;0371;age=5.1;-CWKCF;CWT;CWU;Lower;na=GREEK SMALL LETTER HETA;stc=0370;suc=0370
-cp;0372;age=5.1;cf=0373;CWCF;CWL;gc=Lu;na=GREEK CAPITAL LETTER ARCHAIC SAMPI;NFKC_CF=0373;SB=UP;scf=0373;slc=0373;Upper
+cp;0372;age=5.1;cf=0373;CWCF;CWL;gc=Lu;na=GREEK CAPITAL LETTER ARCHAIC SAMPI;NFKC_CF=0373;NFKC_SCF=0373;SB=UP;scf=0373;slc=0373;Upper
cp;0373;age=5.1;-CWKCF;CWT;CWU;Lower;na=GREEK SMALL LETTER ARCHAIC SAMPI;stc=0372;suc=0372
# Numeral signs
-cp;0374;bc=ON;-Cased;CI;Comp_Ex;-CWCM;Dia;dm=02B9;dt=Can;gc=Lm;na=GREEK NUMERAL SIGN;NFC_QC=N;NFD_QC=N;NFKC_CF=02B9;NFKC_QC=N;NFKD_QC=N;SB=LE;sc=Zyyy
+cp;0374;bc=ON;-Cased;CI;Comp_Ex;-CWCM;Dia;dm=02B9;dt=Can;gc=Lm;na=GREEK NUMERAL SIGN;NFC_QC=N;NFD_QC=N;NFKC_CF=02B9;NFKC_QC=N;NFKC_SCF=02B9;NFKD_QC=N;SB=LE;sc=Zyyy
cp;0375;-Alpha;bc=ON;-Cased;CI;-CWCM;-CWKCF;Dia;gc=Sk;-IDC;-IDS;na=GREEK LOWER NUMERAL SIGN;SB=XX;WB=XX;-XIDC;-XIDS
# Archaic letters
-cp;0376;age=5.1;cf=0377;CWCF;CWL;gc=Lu;na=GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA;NFKC_CF=0377;SB=UP;scf=0377;slc=0377;Upper
+cp;0376;age=5.1;cf=0377;CWCF;CWL;gc=Lu;na=GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA;NFKC_CF=0377;NFKC_SCF=0377;SB=UP;scf=0377;slc=0377;Upper
cp;0377;age=5.1;-CWKCF;CWT;CWU;Lower;na=GREEK SMALL LETTER PAMPHYLIAN DIGAMMA;stc=0376;suc=0376
unassigned;0378..0379
# Iota subscript
-cp;037A;CI;-CWCM;Dia;dm=0020 0345;dt=Com;FC_NFKC=0020 03B9;gc=Lm;Lower;na=GREEK YPOGEGRAMMENI;NFKC_CF=0020 03B9;NFKC_QC=N;NFKD_QC=N;-XIDC;-XIDS
+cp;037A;CI;-CWCM;Dia;dm=0020 0345;dt=Com;FC_NFKC=0020 03B9;gc=Lm;Lower;na=GREEK YPOGEGRAMMENI;NFKC_CF=0020 03B9;NFKC_QC=N;NFKC_SCF=0020 03B9;NFKD_QC=N;-XIDC;-XIDS
# Lowercase of editorial symbols
cp;037B;age=5.0;-CWKCF;CWT;CWU;Lower;na=GREEK SMALL REVERSED LUNATE SIGMA SYMBOL;stc=03FD;suc=03FD
cp;037C;age=5.0;-CWKCF;CWT;CWU;Lower;na=GREEK SMALL DOTTED LUNATE SIGMA SYMBOL;stc=03FE;suc=03FE
cp;037D;age=5.0;-CWKCF;CWT;CWU;Lower;na=GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL;stc=03FF;suc=03FF
# Punctuation
-cp;037E;-Alpha;bc=ON;-Cased;Comp_Ex;-CWCM;dm=003B;dt=Can;gc=Po;-IDC;-IDS;lb=IS;na=GREEK QUESTION MARK;NFC_QC=N;NFD_QC=N;NFKC_CF=003B;NFKC_QC=N;NFKD_QC=N;SB=XX;sc=Zyyy;Term;WB=MN;-XIDC;-XIDS
+cp;037E;-Alpha;bc=ON;-Cased;Comp_Ex;-CWCM;dm=003B;dt=Can;gc=Po;-IDC;-IDS;lb=IS;na=GREEK QUESTION MARK;NFC_QC=N;NFD_QC=N;NFKC_CF=003B;NFKC_QC=N;NFKC_SCF=003B;NFKD_QC=N;SB=XX;sc=Zyyy;Term;WB=MN;-XIDC;-XIDS
# Additional letter
-cp;037F;age=7.0;cf=03F3;CWCF;CWL;gc=Lu;na=GREEK CAPITAL LETTER YOT;NFKC_CF=03F3;SB=UP;scf=03F3;slc=03F3;Upper
+cp;037F;age=7.0;cf=03F3;CWCF;CWL;gc=Lu;na=GREEK CAPITAL LETTER YOT;NFKC_CF=03F3;NFKC_SCF=03F3;SB=UP;scf=03F3;slc=03F3;Upper
unassigned;0380..0383
# Spacing accent marks
-cp;0384;-Alpha;bc=ON;-Cased;CI;-CWCM;Dia;dm=0020 0301;dt=Com;gc=Sk;-IDC;-IDS;na=GREEK TONOS;NFKC_CF=0020 0301;NFKC_QC=N;NFKD_QC=N;SB=XX;WB=XX;-XIDC;-XIDS
-cp;0385;-Alpha;bc=ON;-Cased;CI;-CWCM;Dia;dm=00A8 0301;dt=Can;gc=Sk;-IDC;-IDS;na=GREEK DIALYTIKA TONOS;NFD_QC=N;NFKC_CF=0020 0308 0301;NFKC_QC=N;NFKD_QC=N;SB=XX;sc=Zyyy;WB=XX;-XIDC;-XIDS
+cp;0384;-Alpha;bc=ON;-Cased;CI;-CWCM;Dia;dm=0020 0301;dt=Com;gc=Sk;-IDC;-IDS;na=GREEK TONOS;NFKC_CF=0020 0301;NFKC_QC=N;NFKC_SCF=0020 0301;NFKD_QC=N;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0385;-Alpha;bc=ON;-Cased;CI;-CWCM;Dia;dm=00A8 0301;dt=Can;gc=Sk;-IDC;-IDS;na=GREEK DIALYTIKA TONOS;NFD_QC=N;NFKC_CF=0020 0308 0301;NFKC_QC=N;NFKC_SCF=0020 0308 0301;NFKD_QC=N;SB=XX;sc=Zyyy;WB=XX;-XIDC;-XIDS
# Letter
-cp;0386;cf=03AC;CWCF;CWL;dm=0391 0301;dt=Can;gc=Lu;na=GREEK CAPITAL LETTER ALPHA WITH TONOS;NFD_QC=N;NFKC_CF=03AC;NFKD_QC=N;SB=UP;scf=03AC;slc=03AC;Upper
+cp;0386;cf=03AC;CWCF;CWL;dm=0391 0301;dt=Can;gc=Lu;na=GREEK CAPITAL LETTER ALPHA WITH TONOS;NFD_QC=N;NFKC_CF=03AC;NFKC_SCF=03AC;NFKD_QC=N;SB=UP;scf=03AC;slc=03AC;Upper
# Punctuation
-cp;0387;-Alpha;bc=ON;-Cased;CI;Comp_Ex;-CWCM;dm=00B7;dt=Can;gc=Po;-IDS;na=GREEK ANO TELEIA;NFC_QC=N;NFD_QC=N;NFKC_CF=00B7;NFKC_QC=N;NFKD_QC=N;SB=XX;sc=Zyyy;Term;WB=ML;-XIDS
+cp;0387;-Alpha;bc=ON;-Cased;CI;Comp_Ex;-CWCM;dm=00B7;dt=Can;gc=Po;-IDS;na=GREEK ANO TELEIA;NFC_QC=N;NFD_QC=N;NFKC_CF=00B7;NFKC_QC=N;NFKC_SCF=00B7;NFKD_QC=N;SB=XX;sc=Zyyy;Term;WB=ML;-XIDS
# Letters
-cp;0388;cf=03AD;CWCF;CWL;dm=0395 0301;dt=Can;gc=Lu;na=GREEK CAPITAL LETTER EPSILON WITH TONOS;NFD_QC=N;NFKC_CF=03AD;NFKD_QC=N;SB=UP;scf=03AD;slc=03AD;Upper
-cp;0389;cf=03AE;CWCF;CWL;dm=0397 0301;dt=Can;gc=Lu;na=GREEK CAPITAL LETTER ETA WITH TONOS;NFD_QC=N;NFKC_CF=03AE;NFKD_QC=N;SB=UP;scf=03AE;slc=03AE;Upper
-cp;038A;cf=03AF;CWCF;CWL;dm=0399 0301;dt=Can;gc=Lu;na=GREEK CAPITAL LETTER IOTA WITH TONOS;NFD_QC=N;NFKC_CF=03AF;NFKD_QC=N;SB=UP;scf=03AF;slc=03AF;Upper
+cp;0388;cf=03AD;CWCF;CWL;dm=0395 0301;dt=Can;gc=Lu;na=GREEK CAPITAL LETTER EPSILON WITH TONOS;NFD_QC=N;NFKC_CF=03AD;NFKC_SCF=03AD;NFKD_QC=N;SB=UP;scf=03AD;slc=03AD;Upper
+cp;0389;cf=03AE;CWCF;CWL;dm=0397 0301;dt=Can;gc=Lu;na=GREEK CAPITAL LETTER ETA WITH TONOS;NFD_QC=N;NFKC_CF=03AE;NFKC_SCF=03AE;NFKD_QC=N;SB=UP;scf=03AE;slc=03AE;Upper
+cp;038A;cf=03AF;CWCF;CWL;dm=0399 0301;dt=Can;gc=Lu;na=GREEK CAPITAL LETTER IOTA WITH TONOS;NFD_QC=N;NFKC_CF=03AF;NFKC_SCF=03AF;NFKD_QC=N;SB=UP;scf=03AF;slc=03AF;Upper
unassigned;038B
-cp;038C;cf=03CC;CWCF;CWL;dm=039F 0301;dt=Can;gc=Lu;na=GREEK CAPITAL LETTER OMICRON WITH TONOS;NFD_QC=N;NFKC_CF=03CC;NFKD_QC=N;SB=UP;scf=03CC;slc=03CC;Upper
+cp;038C;cf=03CC;CWCF;CWL;dm=039F 0301;dt=Can;gc=Lu;na=GREEK CAPITAL LETTER OMICRON WITH TONOS;NFD_QC=N;NFKC_CF=03CC;NFKC_SCF=03CC;NFKD_QC=N;SB=UP;scf=03CC;slc=03CC;Upper
unassigned;038D
-cp;038E;cf=03CD;CWCF;CWL;dm=03A5 0301;dt=Can;gc=Lu;na=GREEK CAPITAL LETTER UPSILON WITH TONOS;NFD_QC=N;NFKC_CF=03CD;NFKD_QC=N;SB=UP;scf=03CD;slc=03CD;Upper
-cp;038F;cf=03CE;CWCF;CWL;dm=03A9 0301;dt=Can;gc=Lu;na=GREEK CAPITAL LETTER OMEGA WITH TONOS;NFD_QC=N;NFKC_CF=03CE;NFKD_QC=N;SB=UP;scf=03CE;slc=03CE;Upper
+cp;038E;cf=03CD;CWCF;CWL;dm=03A5 0301;dt=Can;gc=Lu;na=GREEK CAPITAL LETTER UPSILON WITH TONOS;NFD_QC=N;NFKC_CF=03CD;NFKC_SCF=03CD;NFKD_QC=N;SB=UP;scf=03CD;slc=03CD;Upper
+cp;038F;cf=03CE;CWCF;CWL;dm=03A9 0301;dt=Can;gc=Lu;na=GREEK CAPITAL LETTER OMEGA WITH TONOS;NFD_QC=N;NFKC_CF=03CE;NFKC_SCF=03CE;NFKD_QC=N;SB=UP;scf=03CE;slc=03CE;Upper
cp;0390;cf=03B9 0308 0301;-CWKCF;CWT;CWU;dm=03CA 0301;dt=Can;lc=0390;Lower;na=GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS;NFD_QC=N;NFKD_QC=N;tc=0399 0308 0301;uc=0399 0308 0301
-cp;0391;cf=03B1;CWCF;CWL;ea=A;gc=Lu;na=GREEK CAPITAL LETTER ALPHA;NFKC_CF=03B1;SB=UP;scf=03B1;slc=03B1;Upper
-cp;0392;cf=03B2;CWCF;CWL;ea=A;gc=Lu;na=GREEK CAPITAL LETTER BETA;NFKC_CF=03B2;SB=UP;scf=03B2;slc=03B2;Upper
-cp;0393;cf=03B3;CWCF;CWL;ea=A;gc=Lu;na=GREEK CAPITAL LETTER GAMMA;NFKC_CF=03B3;SB=UP;scf=03B3;slc=03B3;Upper
-cp;0394;cf=03B4;CWCF;CWL;ea=A;gc=Lu;na=GREEK CAPITAL LETTER DELTA;NFKC_CF=03B4;SB=UP;scf=03B4;slc=03B4;Upper
-cp;0395;cf=03B5;CWCF;CWL;ea=A;gc=Lu;na=GREEK CAPITAL LETTER EPSILON;NFKC_CF=03B5;SB=UP;scf=03B5;slc=03B5;Upper
-cp;0396;cf=03B6;CWCF;CWL;ea=A;gc=Lu;na=GREEK CAPITAL LETTER ZETA;NFKC_CF=03B6;SB=UP;scf=03B6;slc=03B6;Upper
-cp;0397;cf=03B7;CWCF;CWL;ea=A;gc=Lu;na=GREEK CAPITAL LETTER ETA;NFKC_CF=03B7;SB=UP;scf=03B7;slc=03B7;Upper
-cp;0398;cf=03B8;CWCF;CWL;ea=A;gc=Lu;na=GREEK CAPITAL LETTER THETA;NFKC_CF=03B8;SB=UP;scf=03B8;slc=03B8;Upper
-cp;0399;cf=03B9;CWCF;CWL;ea=A;gc=Lu;na=GREEK CAPITAL LETTER IOTA;NFKC_CF=03B9;SB=UP;scf=03B9;slc=03B9;Upper
-cp;039A;cf=03BA;CWCF;CWL;ea=A;gc=Lu;na=GREEK CAPITAL LETTER KAPPA;NFKC_CF=03BA;SB=UP;scf=03BA;slc=03BA;Upper
-cp;039B;cf=03BB;CWCF;CWL;ea=A;gc=Lu;na=GREEK CAPITAL LETTER LAMDA;NFKC_CF=03BB;SB=UP;scf=03BB;slc=03BB;Upper
-cp;039C;cf=03BC;CWCF;CWL;ea=A;gc=Lu;na=GREEK CAPITAL LETTER MU;NFKC_CF=03BC;SB=UP;scf=03BC;slc=03BC;Upper
-cp;039D;cf=03BD;CWCF;CWL;ea=A;gc=Lu;na=GREEK CAPITAL LETTER NU;NFKC_CF=03BD;SB=UP;scf=03BD;slc=03BD;Upper
-cp;039E;cf=03BE;CWCF;CWL;ea=A;gc=Lu;na=GREEK CAPITAL LETTER XI;NFKC_CF=03BE;SB=UP;scf=03BE;slc=03BE;Upper
-cp;039F;cf=03BF;CWCF;CWL;ea=A;gc=Lu;na=GREEK CAPITAL LETTER OMICRON;NFKC_CF=03BF;SB=UP;scf=03BF;slc=03BF;Upper
-cp;03A0;cf=03C0;CWCF;CWL;ea=A;gc=Lu;na=GREEK CAPITAL LETTER PI;NFKC_CF=03C0;SB=UP;scf=03C0;slc=03C0;Upper
-cp;03A1;cf=03C1;CWCF;CWL;ea=A;gc=Lu;na=GREEK CAPITAL LETTER RHO;NFKC_CF=03C1;SB=UP;scf=03C1;slc=03C1;Upper
+cp;0391;cf=03B1;CWCF;CWL;ea=A;gc=Lu;na=GREEK CAPITAL LETTER ALPHA;NFKC_CF=03B1;NFKC_SCF=03B1;SB=UP;scf=03B1;slc=03B1;Upper
+cp;0392;cf=03B2;CWCF;CWL;ea=A;gc=Lu;na=GREEK CAPITAL LETTER BETA;NFKC_CF=03B2;NFKC_SCF=03B2;SB=UP;scf=03B2;slc=03B2;Upper
+cp;0393;cf=03B3;CWCF;CWL;ea=A;gc=Lu;na=GREEK CAPITAL LETTER GAMMA;NFKC_CF=03B3;NFKC_SCF=03B3;SB=UP;scf=03B3;slc=03B3;Upper
+cp;0394;cf=03B4;CWCF;CWL;ea=A;gc=Lu;na=GREEK CAPITAL LETTER DELTA;NFKC_CF=03B4;NFKC_SCF=03B4;SB=UP;scf=03B4;slc=03B4;Upper
+cp;0395;cf=03B5;CWCF;CWL;ea=A;gc=Lu;na=GREEK CAPITAL LETTER EPSILON;NFKC_CF=03B5;NFKC_SCF=03B5;SB=UP;scf=03B5;slc=03B5;Upper
+cp;0396;cf=03B6;CWCF;CWL;ea=A;gc=Lu;na=GREEK CAPITAL LETTER ZETA;NFKC_CF=03B6;NFKC_SCF=03B6;SB=UP;scf=03B6;slc=03B6;Upper
+cp;0397;cf=03B7;CWCF;CWL;ea=A;gc=Lu;na=GREEK CAPITAL LETTER ETA;NFKC_CF=03B7;NFKC_SCF=03B7;SB=UP;scf=03B7;slc=03B7;Upper
+cp;0398;cf=03B8;CWCF;CWL;ea=A;gc=Lu;na=GREEK CAPITAL LETTER THETA;NFKC_CF=03B8;NFKC_SCF=03B8;SB=UP;scf=03B8;slc=03B8;Upper
+cp;0399;cf=03B9;CWCF;CWL;ea=A;gc=Lu;na=GREEK CAPITAL LETTER IOTA;NFKC_CF=03B9;NFKC_SCF=03B9;SB=UP;scf=03B9;slc=03B9;Upper
+cp;039A;cf=03BA;CWCF;CWL;ea=A;gc=Lu;na=GREEK CAPITAL LETTER KAPPA;NFKC_CF=03BA;NFKC_SCF=03BA;SB=UP;scf=03BA;slc=03BA;Upper
+cp;039B;cf=03BB;CWCF;CWL;ea=A;gc=Lu;na=GREEK CAPITAL LETTER LAMDA;NFKC_CF=03BB;NFKC_SCF=03BB;SB=UP;scf=03BB;slc=03BB;Upper
+cp;039C;cf=03BC;CWCF;CWL;ea=A;gc=Lu;na=GREEK CAPITAL LETTER MU;NFKC_CF=03BC;NFKC_SCF=03BC;SB=UP;scf=03BC;slc=03BC;Upper
+cp;039D;cf=03BD;CWCF;CWL;ea=A;gc=Lu;na=GREEK CAPITAL LETTER NU;NFKC_CF=03BD;NFKC_SCF=03BD;SB=UP;scf=03BD;slc=03BD;Upper
+cp;039E;cf=03BE;CWCF;CWL;ea=A;gc=Lu;na=GREEK CAPITAL LETTER XI;NFKC_CF=03BE;NFKC_SCF=03BE;SB=UP;scf=03BE;slc=03BE;Upper
+cp;039F;cf=03BF;CWCF;CWL;ea=A;gc=Lu;na=GREEK CAPITAL LETTER OMICRON;NFKC_CF=03BF;NFKC_SCF=03BF;SB=UP;scf=03BF;slc=03BF;Upper
+cp;03A0;cf=03C0;CWCF;CWL;ea=A;gc=Lu;na=GREEK CAPITAL LETTER PI;NFKC_CF=03C0;NFKC_SCF=03C0;SB=UP;scf=03C0;slc=03C0;Upper
+cp;03A1;cf=03C1;CWCF;CWL;ea=A;gc=Lu;na=GREEK CAPITAL LETTER RHO;NFKC_CF=03C1;NFKC_SCF=03C1;SB=UP;scf=03C1;slc=03C1;Upper
unassigned;03A2
-cp;03A3;cf=03C3;Conditional_Case_Mappings=Final_Sigma:lc=03C2&tc=03A3&uc=03A3;CWCF;CWL;ea=A;gc=Lu;na=GREEK CAPITAL LETTER SIGMA;NFKC_CF=03C3;SB=UP;scf=03C3;slc=03C3;Upper
-cp;03A4;cf=03C4;CWCF;CWL;ea=A;gc=Lu;na=GREEK CAPITAL LETTER TAU;NFKC_CF=03C4;SB=UP;scf=03C4;slc=03C4;Upper
-cp;03A5;cf=03C5;CWCF;CWL;ea=A;gc=Lu;na=GREEK CAPITAL LETTER UPSILON;NFKC_CF=03C5;SB=UP;scf=03C5;slc=03C5;Upper
-cp;03A6;cf=03C6;CWCF;CWL;ea=A;gc=Lu;na=GREEK CAPITAL LETTER PHI;NFKC_CF=03C6;SB=UP;scf=03C6;slc=03C6;Upper
-cp;03A7;cf=03C7;CWCF;CWL;ea=A;gc=Lu;na=GREEK CAPITAL LETTER CHI;NFKC_CF=03C7;SB=UP;scf=03C7;slc=03C7;Upper
-cp;03A8;cf=03C8;CWCF;CWL;ea=A;gc=Lu;na=GREEK CAPITAL LETTER PSI;NFKC_CF=03C8;SB=UP;scf=03C8;slc=03C8;Upper
-cp;03A9;cf=03C9;CWCF;CWL;ea=A;gc=Lu;na=GREEK CAPITAL LETTER OMEGA;NFKC_CF=03C9;SB=UP;scf=03C9;slc=03C9;Upper
-cp;03AA;cf=03CA;CWCF;CWL;dm=0399 0308;dt=Can;gc=Lu;na=GREEK CAPITAL LETTER IOTA WITH DIALYTIKA;NFD_QC=N;NFKC_CF=03CA;NFKD_QC=N;SB=UP;scf=03CA;slc=03CA;Upper
-cp;03AB;cf=03CB;CWCF;CWL;dm=03A5 0308;dt=Can;gc=Lu;na=GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA;NFD_QC=N;NFKC_CF=03CB;NFKD_QC=N;SB=UP;scf=03CB;slc=03CB;Upper
+cp;03A3;cf=03C3;Conditional_Case_Mappings=Final_Sigma:lc=03C2&tc=03A3&uc=03A3;CWCF;CWL;ea=A;gc=Lu;na=GREEK CAPITAL LETTER SIGMA;NFKC_CF=03C3;NFKC_SCF=03C3;SB=UP;scf=03C3;slc=03C3;Upper
+cp;03A4;cf=03C4;CWCF;CWL;ea=A;gc=Lu;na=GREEK CAPITAL LETTER TAU;NFKC_CF=03C4;NFKC_SCF=03C4;SB=UP;scf=03C4;slc=03C4;Upper
+cp;03A5;cf=03C5;CWCF;CWL;ea=A;gc=Lu;na=GREEK CAPITAL LETTER UPSILON;NFKC_CF=03C5;NFKC_SCF=03C5;SB=UP;scf=03C5;slc=03C5;Upper
+cp;03A6;cf=03C6;CWCF;CWL;ea=A;gc=Lu;na=GREEK CAPITAL LETTER PHI;NFKC_CF=03C6;NFKC_SCF=03C6;SB=UP;scf=03C6;slc=03C6;Upper
+cp;03A7;cf=03C7;CWCF;CWL;ea=A;gc=Lu;na=GREEK CAPITAL LETTER CHI;NFKC_CF=03C7;NFKC_SCF=03C7;SB=UP;scf=03C7;slc=03C7;Upper
+cp;03A8;cf=03C8;CWCF;CWL;ea=A;gc=Lu;na=GREEK CAPITAL LETTER PSI;NFKC_CF=03C8;NFKC_SCF=03C8;SB=UP;scf=03C8;slc=03C8;Upper
+cp;03A9;cf=03C9;CWCF;CWL;ea=A;gc=Lu;na=GREEK CAPITAL LETTER OMEGA;NFKC_CF=03C9;NFKC_SCF=03C9;SB=UP;scf=03C9;slc=03C9;Upper
+cp;03AA;cf=03CA;CWCF;CWL;dm=0399 0308;dt=Can;gc=Lu;na=GREEK CAPITAL LETTER IOTA WITH DIALYTIKA;NFD_QC=N;NFKC_CF=03CA;NFKC_SCF=03CA;NFKD_QC=N;SB=UP;scf=03CA;slc=03CA;Upper
+cp;03AB;cf=03CB;CWCF;CWL;dm=03A5 0308;dt=Can;gc=Lu;na=GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA;NFD_QC=N;NFKC_CF=03CB;NFKC_SCF=03CB;NFKD_QC=N;SB=UP;scf=03CB;slc=03CB;Upper
cp;03AC;-CWKCF;CWT;CWU;dm=03B1 0301;dt=Can;Lower;na=GREEK SMALL LETTER ALPHA WITH TONOS;NFD_QC=N;NFKD_QC=N;stc=0386;suc=0386
cp;03AD;-CWKCF;CWT;CWU;dm=03B5 0301;dt=Can;Lower;na=GREEK SMALL LETTER EPSILON WITH TONOS;NFD_QC=N;NFKD_QC=N;stc=0388;suc=0388
cp;03AE;-CWKCF;CWT;CWU;dm=03B7 0301;dt=Can;Lower;na=GREEK SMALL LETTER ETA WITH TONOS;NFD_QC=N;NFKD_QC=N;stc=0389;suc=0389
@@ -2325,7 +2342,7 @@ cp;03BE;-CWKCF;CWT;CWU;ea=A;Lower;na=GREEK SMALL LETTER XI;stc=039E;suc=039E
cp;03BF;-CWKCF;CWT;CWU;ea=A;Lower;na=GREEK SMALL LETTER OMICRON;stc=039F;suc=039F
cp;03C0;-CWKCF;CWT;CWU;ea=A;Lower;na=GREEK SMALL LETTER PI;stc=03A0;suc=03A0
cp;03C1;-CWKCF;CWT;CWU;ea=A;Lower;na=GREEK SMALL LETTER RHO;stc=03A1;suc=03A1
-cp;03C2;cf=03C3;CWCF;CWT;CWU;Lower;na=GREEK SMALL LETTER FINAL SIGMA;NFKC_CF=03C3;scf=03C3;stc=03A3;suc=03A3
+cp;03C2;cf=03C3;CWCF;CWT;CWU;Lower;na=GREEK SMALL LETTER FINAL SIGMA;NFKC_CF=03C3;NFKC_SCF=03C3;scf=03C3;stc=03A3;suc=03A3
cp;03C3;-CWKCF;CWT;CWU;ea=A;Lower;na=GREEK SMALL LETTER SIGMA;stc=03A3;suc=03A3
cp;03C4;-CWKCF;CWT;CWU;ea=A;Lower;na=GREEK SMALL LETTER TAU;stc=03A4;suc=03A4
cp;03C5;-CWKCF;CWT;CWU;ea=A;Lower;na=GREEK SMALL LETTER UPSILON;stc=03A5;suc=03A5
@@ -2339,118 +2356,118 @@ cp;03CC;-CWKCF;CWT;CWU;dm=03BF 0301;dt=Can;Lower;na=GREEK SMALL LETTER OMICRON W
cp;03CD;-CWKCF;CWT;CWU;dm=03C5 0301;dt=Can;Lower;na=GREEK SMALL LETTER UPSILON WITH TONOS;NFD_QC=N;NFKD_QC=N;stc=038E;suc=038E
cp;03CE;-CWKCF;CWT;CWU;dm=03C9 0301;dt=Can;Lower;na=GREEK SMALL LETTER OMEGA WITH TONOS;NFD_QC=N;NFKD_QC=N;stc=038F;suc=038F
# Variant letterforms
-cp;03CF;age=5.1;cf=03D7;CWCF;CWL;gc=Lu;na=GREEK CAPITAL KAI SYMBOL;NFKC_CF=03D7;SB=UP;scf=03D7;slc=03D7;Upper
-cp;03D0;cf=03B2;CWCF;CWT;CWU;dm=03B2;dt=Com;Lower;Math;na=GREEK BETA SYMBOL;NFKC_CF=03B2;NFKC_QC=N;NFKD_QC=N;scf=03B2;stc=0392;suc=0392
-cp;03D1;cf=03B8;CWCF;CWT;CWU;dm=03B8;dt=Com;Lower;Math;na=GREEK THETA SYMBOL;NFKC_CF=03B8;NFKC_QC=N;NFKD_QC=N;scf=03B8;stc=0398;suc=0398
-cp;03D2;-CWCM;dm=03A5;dt=Com;FC_NFKC=03C5;gc=Lu;Math;na=GREEK UPSILON WITH HOOK SYMBOL;NFKC_CF=03C5;NFKC_QC=N;NFKD_QC=N;SB=UP;Upper
-cp;03D3;-CWCM;dm=03D2 0301;dt=Can;FC_NFKC=03CD;gc=Lu;na=GREEK UPSILON WITH ACUTE AND HOOK SYMBOL;NFD_QC=N;NFKC_CF=03CD;NFKC_QC=N;NFKD_QC=N;SB=UP;Upper
-cp;03D4;-CWCM;dm=03D2 0308;dt=Can;FC_NFKC=03CB;gc=Lu;na=GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL;NFD_QC=N;NFKC_CF=03CB;NFKC_QC=N;NFKD_QC=N;SB=UP;Upper
-cp;03D5;cf=03C6;CWCF;CWT;CWU;dm=03C6;dt=Com;Lower;Math;na=GREEK PHI SYMBOL;NFKC_CF=03C6;NFKC_QC=N;NFKD_QC=N;scf=03C6;stc=03A6;suc=03A6
-cp;03D6;cf=03C0;CWCF;CWT;CWU;dm=03C0;dt=Com;Lower;na=GREEK PI SYMBOL;NFKC_CF=03C0;NFKC_QC=N;NFKD_QC=N;scf=03C0;stc=03A0;suc=03A0
+cp;03CF;age=5.1;cf=03D7;CWCF;CWL;gc=Lu;na=GREEK CAPITAL KAI SYMBOL;NFKC_CF=03D7;NFKC_SCF=03D7;SB=UP;scf=03D7;slc=03D7;Upper
+cp;03D0;cf=03B2;CWCF;CWT;CWU;dm=03B2;dt=Com;Lower;Math;na=GREEK BETA SYMBOL;NFKC_CF=03B2;NFKC_QC=N;NFKC_SCF=03B2;NFKD_QC=N;scf=03B2;stc=0392;suc=0392
+cp;03D1;cf=03B8;CWCF;CWT;CWU;dm=03B8;dt=Com;Lower;Math;na=GREEK THETA SYMBOL;NFKC_CF=03B8;NFKC_QC=N;NFKC_SCF=03B8;NFKD_QC=N;scf=03B8;stc=0398;suc=0398
+cp;03D2;-CWCM;dm=03A5;dt=Com;FC_NFKC=03C5;gc=Lu;Math;na=GREEK UPSILON WITH HOOK SYMBOL;NFKC_CF=03C5;NFKC_QC=N;NFKC_SCF=03C5;NFKD_QC=N;SB=UP;Upper
+cp;03D3;-CWCM;dm=03D2 0301;dt=Can;FC_NFKC=03CD;gc=Lu;na=GREEK UPSILON WITH ACUTE AND HOOK SYMBOL;NFD_QC=N;NFKC_CF=03CD;NFKC_QC=N;NFKC_SCF=03CD;NFKD_QC=N;SB=UP;Upper
+cp;03D4;-CWCM;dm=03D2 0308;dt=Can;FC_NFKC=03CB;gc=Lu;na=GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL;NFD_QC=N;NFKC_CF=03CB;NFKC_QC=N;NFKC_SCF=03CB;NFKD_QC=N;SB=UP;Upper
+cp;03D5;cf=03C6;CWCF;CWT;CWU;dm=03C6;dt=Com;Lower;Math;na=GREEK PHI SYMBOL;NFKC_CF=03C6;NFKC_QC=N;NFKC_SCF=03C6;NFKD_QC=N;scf=03C6;stc=03A6;suc=03A6
+cp;03D6;cf=03C0;CWCF;CWT;CWU;dm=03C0;dt=Com;Lower;na=GREEK PI SYMBOL;NFKC_CF=03C0;NFKC_QC=N;NFKC_SCF=03C0;NFKD_QC=N;scf=03C0;stc=03A0;suc=03A0
cp;03D7;age=3.0;-CWKCF;CWT;CWU;Lower;na=GREEK KAI SYMBOL;stc=03CF;suc=03CF
# Archaic letters
-cp;03D8;age=3.2;cf=03D9;CWCF;CWL;gc=Lu;na=GREEK LETTER ARCHAIC KOPPA;NFKC_CF=03D9;SB=UP;scf=03D9;slc=03D9;Upper
+cp;03D8;age=3.2;cf=03D9;CWCF;CWL;gc=Lu;na=GREEK LETTER ARCHAIC KOPPA;NFKC_CF=03D9;NFKC_SCF=03D9;SB=UP;scf=03D9;slc=03D9;Upper
cp;03D9;age=3.2;-CWKCF;CWT;CWU;Lower;na=GREEK SMALL LETTER ARCHAIC KOPPA;stc=03D8;suc=03D8
-cp;03DA;cf=03DB;CWCF;CWL;gc=Lu;na=GREEK LETTER STIGMA;NFKC_CF=03DB;SB=UP;scf=03DB;slc=03DB;Upper
+cp;03DA;cf=03DB;CWCF;CWL;gc=Lu;na=GREEK LETTER STIGMA;NFKC_CF=03DB;NFKC_SCF=03DB;SB=UP;scf=03DB;slc=03DB;Upper
cp;03DB;age=3.0;-CWKCF;CWT;CWU;Lower;na=GREEK SMALL LETTER STIGMA;stc=03DA;suc=03DA
-cp;03DC;cf=03DD;CWCF;CWL;gc=Lu;na=GREEK LETTER DIGAMMA;NFKC_CF=03DD;SB=UP;scf=03DD;slc=03DD;Upper
+cp;03DC;cf=03DD;CWCF;CWL;gc=Lu;na=GREEK LETTER DIGAMMA;NFKC_CF=03DD;NFKC_SCF=03DD;SB=UP;scf=03DD;slc=03DD;Upper
cp;03DD;age=3.0;-CWKCF;CWT;CWU;Lower;na=GREEK SMALL LETTER DIGAMMA;stc=03DC;suc=03DC
-cp;03DE;cf=03DF;CWCF;CWL;gc=Lu;na=GREEK LETTER KOPPA;NFKC_CF=03DF;SB=UP;scf=03DF;slc=03DF;Upper
+cp;03DE;cf=03DF;CWCF;CWL;gc=Lu;na=GREEK LETTER KOPPA;NFKC_CF=03DF;NFKC_SCF=03DF;SB=UP;scf=03DF;slc=03DF;Upper
cp;03DF;age=3.0;-CWKCF;CWT;CWU;Lower;na=GREEK SMALL LETTER KOPPA;stc=03DE;suc=03DE
-cp;03E0;cf=03E1;CWCF;CWL;gc=Lu;na=GREEK LETTER SAMPI;NFKC_CF=03E1;SB=UP;scf=03E1;slc=03E1;Upper
+cp;03E0;cf=03E1;CWCF;CWL;gc=Lu;na=GREEK LETTER SAMPI;NFKC_CF=03E1;NFKC_SCF=03E1;SB=UP;scf=03E1;slc=03E1;Upper
cp;03E1;age=3.0;-CWKCF;CWT;CWU;Lower;na=GREEK SMALL LETTER SAMPI;stc=03E0;suc=03E0
# Coptic letters derived from Demotic
-cp;03E2;cf=03E3;CWCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER SHEI;NFKC_CF=03E3;SB=UP;sc=Copt;scf=03E3;slc=03E3;Upper
+cp;03E2;cf=03E3;CWCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER SHEI;NFKC_CF=03E3;NFKC_SCF=03E3;SB=UP;sc=Copt;scf=03E3;slc=03E3;Upper
cp;03E3;-CWKCF;CWT;CWU;Lower;na=COPTIC SMALL LETTER SHEI;sc=Copt;stc=03E2;suc=03E2
-cp;03E4;cf=03E5;CWCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER FEI;NFKC_CF=03E5;SB=UP;sc=Copt;scf=03E5;slc=03E5;Upper
+cp;03E4;cf=03E5;CWCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER FEI;NFKC_CF=03E5;NFKC_SCF=03E5;SB=UP;sc=Copt;scf=03E5;slc=03E5;Upper
cp;03E5;-CWKCF;CWT;CWU;Lower;na=COPTIC SMALL LETTER FEI;sc=Copt;stc=03E4;suc=03E4
-cp;03E6;cf=03E7;CWCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER KHEI;NFKC_CF=03E7;SB=UP;sc=Copt;scf=03E7;slc=03E7;Upper
+cp;03E6;cf=03E7;CWCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER KHEI;NFKC_CF=03E7;NFKC_SCF=03E7;SB=UP;sc=Copt;scf=03E7;slc=03E7;Upper
cp;03E7;-CWKCF;CWT;CWU;Lower;na=COPTIC SMALL LETTER KHEI;sc=Copt;stc=03E6;suc=03E6
-cp;03E8;cf=03E9;CWCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER HORI;NFKC_CF=03E9;SB=UP;sc=Copt;scf=03E9;slc=03E9;Upper
+cp;03E8;cf=03E9;CWCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER HORI;NFKC_CF=03E9;NFKC_SCF=03E9;SB=UP;sc=Copt;scf=03E9;slc=03E9;Upper
cp;03E9;-CWKCF;CWT;CWU;Lower;na=COPTIC SMALL LETTER HORI;sc=Copt;stc=03E8;suc=03E8
-cp;03EA;cf=03EB;CWCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER GANGIA;NFKC_CF=03EB;SB=UP;sc=Copt;scf=03EB;slc=03EB;Upper
+cp;03EA;cf=03EB;CWCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER GANGIA;NFKC_CF=03EB;NFKC_SCF=03EB;SB=UP;sc=Copt;scf=03EB;slc=03EB;Upper
cp;03EB;-CWKCF;CWT;CWU;Lower;na=COPTIC SMALL LETTER GANGIA;sc=Copt;stc=03EA;suc=03EA
-cp;03EC;cf=03ED;CWCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER SHIMA;NFKC_CF=03ED;SB=UP;sc=Copt;scf=03ED;slc=03ED;Upper
+cp;03EC;cf=03ED;CWCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER SHIMA;NFKC_CF=03ED;NFKC_SCF=03ED;SB=UP;sc=Copt;scf=03ED;slc=03ED;Upper
cp;03ED;-CWKCF;CWT;CWU;Lower;na=COPTIC SMALL LETTER SHIMA;sc=Copt;stc=03EC;suc=03EC
-cp;03EE;cf=03EF;CWCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER DEI;NFKC_CF=03EF;SB=UP;sc=Copt;scf=03EF;slc=03EF;Upper
+cp;03EE;cf=03EF;CWCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER DEI;NFKC_CF=03EF;NFKC_SCF=03EF;SB=UP;sc=Copt;scf=03EF;slc=03EF;Upper
cp;03EF;-CWKCF;CWT;CWU;Lower;na=COPTIC SMALL LETTER DEI;sc=Copt;stc=03EE;suc=03EE
# Variant letterforms
-cp;03F0;cf=03BA;CWCF;CWT;CWU;dm=03BA;dt=Com;Lower;Math;na=GREEK KAPPA SYMBOL;NFKC_CF=03BA;NFKC_QC=N;NFKD_QC=N;scf=03BA;stc=039A;suc=039A
-cp;03F1;cf=03C1;CWCF;CWT;CWU;dm=03C1;dt=Com;Lower;Math;na=GREEK RHO SYMBOL;NFKC_CF=03C1;NFKC_QC=N;NFKD_QC=N;scf=03C1;stc=03A1;suc=03A1
-cp;03F2;CWT;CWU;dm=03C2;dt=Com;FC_NFKC=03C3;Lower;na=GREEK LUNATE SIGMA SYMBOL;NFKC_CF=03C3;NFKC_QC=N;NFKD_QC=N;stc=03F9;suc=03F9
+cp;03F0;cf=03BA;CWCF;CWT;CWU;dm=03BA;dt=Com;Lower;Math;na=GREEK KAPPA SYMBOL;NFKC_CF=03BA;NFKC_QC=N;NFKC_SCF=03BA;NFKD_QC=N;scf=03BA;stc=039A;suc=039A
+cp;03F1;cf=03C1;CWCF;CWT;CWU;dm=03C1;dt=Com;Lower;Math;na=GREEK RHO SYMBOL;NFKC_CF=03C1;NFKC_QC=N;NFKC_SCF=03C1;NFKD_QC=N;scf=03C1;stc=03A1;suc=03A1
+cp;03F2;CWT;CWU;dm=03C2;dt=Com;FC_NFKC=03C3;Lower;na=GREEK LUNATE SIGMA SYMBOL;NFKC_CF=03C3;NFKC_QC=N;NFKC_SCF=03C3;NFKD_QC=N;stc=03F9;suc=03F9
# Additional letter
cp;03F3;-CWKCF;CWT;CWU;Lower;na=GREEK LETTER YOT;SD;stc=037F;suc=037F
# Variant letterforms and symbols
-cp;03F4;age=3.1;cf=03B8;CWCF;CWL;dm=0398;dt=Com;gc=Lu;Math;na=GREEK CAPITAL THETA SYMBOL;NFKC_CF=03B8;NFKC_QC=N;NFKD_QC=N;SB=UP;scf=03B8;slc=03B8;Upper
-cp;03F5;age=3.1;cf=03B5;CWCF;CWT;CWU;dm=03B5;dt=Com;Lower;Math;na=GREEK LUNATE EPSILON SYMBOL;NFKC_CF=03B5;NFKC_QC=N;NFKD_QC=N;scf=03B5;stc=0395;suc=0395
+cp;03F4;age=3.1;cf=03B8;CWCF;CWL;dm=0398;dt=Com;gc=Lu;Math;na=GREEK CAPITAL THETA SYMBOL;NFKC_CF=03B8;NFKC_QC=N;NFKC_SCF=03B8;NFKD_QC=N;SB=UP;scf=03B8;slc=03B8;Upper
+cp;03F5;age=3.1;cf=03B5;CWCF;CWT;CWU;dm=03B5;dt=Com;Lower;Math;na=GREEK LUNATE EPSILON SYMBOL;NFKC_CF=03B5;NFKC_QC=N;NFKC_SCF=03B5;NFKD_QC=N;scf=03B5;stc=0395;suc=0395
cp;03F6;age=3.2;-Alpha;bc=ON;-Cased;-CWCM;-CWKCF;gc=Sm;-IDC;-IDS;Math;na=GREEK REVERSED LUNATE EPSILON SYMBOL;SB=XX;WB=XX;-XIDC;-XIDS
# Additional archaic letters for Bactrian
-cp;03F7;age=4.0;cf=03F8;CWCF;CWL;gc=Lu;na=GREEK CAPITAL LETTER SHO;NFKC_CF=03F8;SB=UP;scf=03F8;slc=03F8;Upper
+cp;03F7;age=4.0;cf=03F8;CWCF;CWL;gc=Lu;na=GREEK CAPITAL LETTER SHO;NFKC_CF=03F8;NFKC_SCF=03F8;SB=UP;scf=03F8;slc=03F8;Upper
cp;03F8;age=4.0;-CWKCF;CWT;CWU;Lower;na=GREEK SMALL LETTER SHO;stc=03F7;suc=03F7
# Variant letterform
-cp;03F9;age=4.0;cf=03F2;CWCF;CWL;dm=03A3;dt=Com;FC_NFKC=03C3;gc=Lu;na=GREEK CAPITAL LUNATE SIGMA SYMBOL;NFKC_CF=03C3;NFKC_QC=N;NFKD_QC=N;SB=UP;scf=03F2;slc=03F2;Upper
+cp;03F9;age=4.0;cf=03F2;CWCF;CWL;dm=03A3;dt=Com;FC_NFKC=03C3;gc=Lu;na=GREEK CAPITAL LUNATE SIGMA SYMBOL;NFKC_CF=03C3;NFKC_QC=N;NFKC_SCF=03C3;NFKD_QC=N;SB=UP;scf=03F2;slc=03F2;Upper
# Archaic letters
-cp;03FA;age=4.0;cf=03FB;CWCF;CWL;gc=Lu;na=GREEK CAPITAL LETTER SAN;NFKC_CF=03FB;SB=UP;scf=03FB;slc=03FB;Upper
+cp;03FA;age=4.0;cf=03FB;CWCF;CWL;gc=Lu;na=GREEK CAPITAL LETTER SAN;NFKC_CF=03FB;NFKC_SCF=03FB;SB=UP;scf=03FB;slc=03FB;Upper
cp;03FB;age=4.0;-CWKCF;CWT;CWU;Lower;na=GREEK SMALL LETTER SAN;stc=03FA;suc=03FA
# Symbol
cp;03FC;age=4.1;-CWCM;-CWKCF;Lower;na=GREEK RHO WITH STROKE SYMBOL
# Editorial symbols
-cp;03FD;age=4.1;cf=037B;CWCF;CWL;gc=Lu;na=GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL;NFKC_CF=037B;SB=UP;scf=037B;slc=037B;Upper
-cp;03FE;age=4.1;cf=037C;CWCF;CWL;gc=Lu;na=GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL;NFKC_CF=037C;SB=UP;scf=037C;slc=037C;Upper
-cp;03FF;age=4.1;cf=037D;CWCF;CWL;gc=Lu;na=GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL;NFKC_CF=037D;SB=UP;scf=037D;slc=037D;Upper
+cp;03FD;age=4.1;cf=037B;CWCF;CWL;gc=Lu;na=GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL;NFKC_CF=037B;NFKC_SCF=037B;SB=UP;scf=037B;slc=037B;Upper
+cp;03FE;age=4.1;cf=037C;CWCF;CWL;gc=Lu;na=GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL;NFKC_CF=037C;NFKC_SCF=037C;SB=UP;scf=037C;slc=037C;Upper
+cp;03FF;age=4.1;cf=037D;CWCF;CWL;gc=Lu;na=GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL;NFKC_CF=037D;NFKC_SCF=037D;SB=UP;scf=037D;slc=037D;Upper
block;0400..04FF;age=1.1;Alpha;blk=Cyrillic;Cased;CWCM;gc=Ll;Gr_Base;IDC;IDS;lb=AL;SB=LO;sc=Cyrl;WB=LE;XIDC;XIDS
# 0400..04FF Cyrillic
# Cyrillic extensions
-cp;0400;age=3.0;cf=0450;CWCF;CWKCF;CWL;dm=0415 0300;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER IE WITH GRAVE;NFD_QC=N;NFKC_CF=0450;NFKD_QC=N;SB=UP;scf=0450;slc=0450;Upper
-cp;0401;cf=0451;CWCF;CWKCF;CWL;dm=0415 0308;dt=Can;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER IO;NFD_QC=N;NFKC_CF=0451;NFKD_QC=N;SB=UP;scf=0451;slc=0451;Upper
-cp;0402;cf=0452;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER DJE;NFKC_CF=0452;SB=UP;scf=0452;slc=0452;Upper
-cp;0403;cf=0453;CWCF;CWKCF;CWL;dm=0413 0301;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER GJE;NFD_QC=N;NFKC_CF=0453;NFKD_QC=N;SB=UP;scf=0453;slc=0453;Upper
-cp;0404;cf=0454;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER UKRAINIAN IE;NFKC_CF=0454;SB=UP;scf=0454;slc=0454;Upper
-cp;0405;cf=0455;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER DZE;NFKC_CF=0455;SB=UP;scf=0455;slc=0455;Upper
-cp;0406;cf=0456;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I;NFKC_CF=0456;SB=UP;scf=0456;slc=0456;Upper
-cp;0407;cf=0457;CWCF;CWKCF;CWL;dm=0406 0308;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER YI;NFD_QC=N;NFKC_CF=0457;NFKD_QC=N;SB=UP;scf=0457;slc=0457;Upper
-cp;0408;cf=0458;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER JE;NFKC_CF=0458;SB=UP;scf=0458;slc=0458;Upper
-cp;0409;cf=0459;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER LJE;NFKC_CF=0459;SB=UP;scf=0459;slc=0459;Upper
-cp;040A;cf=045A;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER NJE;NFKC_CF=045A;SB=UP;scf=045A;slc=045A;Upper
-cp;040B;cf=045B;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER TSHE;NFKC_CF=045B;SB=UP;scf=045B;slc=045B;Upper
-cp;040C;cf=045C;CWCF;CWKCF;CWL;dm=041A 0301;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER KJE;NFD_QC=N;NFKC_CF=045C;NFKD_QC=N;SB=UP;scf=045C;slc=045C;Upper
-cp;040D;age=3.0;cf=045D;CWCF;CWKCF;CWL;dm=0418 0300;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER I WITH GRAVE;NFD_QC=N;NFKC_CF=045D;NFKD_QC=N;SB=UP;scf=045D;slc=045D;Upper
-cp;040E;cf=045E;CWCF;CWKCF;CWL;dm=0423 0306;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER SHORT U;NFD_QC=N;NFKC_CF=045E;NFKD_QC=N;SB=UP;scf=045E;slc=045E;Upper
-cp;040F;cf=045F;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER DZHE;NFKC_CF=045F;SB=UP;scf=045F;slc=045F;Upper
+cp;0400;age=3.0;cf=0450;CWCF;CWKCF;CWL;dm=0415 0300;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER IE WITH GRAVE;NFD_QC=N;NFKC_CF=0450;NFKC_SCF=0450;NFKD_QC=N;SB=UP;scf=0450;slc=0450;Upper
+cp;0401;cf=0451;CWCF;CWKCF;CWL;dm=0415 0308;dt=Can;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER IO;NFD_QC=N;NFKC_CF=0451;NFKC_SCF=0451;NFKD_QC=N;SB=UP;scf=0451;slc=0451;Upper
+cp;0402;cf=0452;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER DJE;NFKC_CF=0452;NFKC_SCF=0452;SB=UP;scf=0452;slc=0452;Upper
+cp;0403;cf=0453;CWCF;CWKCF;CWL;dm=0413 0301;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER GJE;NFD_QC=N;NFKC_CF=0453;NFKC_SCF=0453;NFKD_QC=N;SB=UP;scf=0453;slc=0453;Upper
+cp;0404;cf=0454;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER UKRAINIAN IE;NFKC_CF=0454;NFKC_SCF=0454;SB=UP;scf=0454;slc=0454;Upper
+cp;0405;cf=0455;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER DZE;NFKC_CF=0455;NFKC_SCF=0455;SB=UP;scf=0455;slc=0455;Upper
+cp;0406;cf=0456;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I;NFKC_CF=0456;NFKC_SCF=0456;SB=UP;scf=0456;slc=0456;Upper
+cp;0407;cf=0457;CWCF;CWKCF;CWL;dm=0406 0308;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER YI;NFD_QC=N;NFKC_CF=0457;NFKC_SCF=0457;NFKD_QC=N;SB=UP;scf=0457;slc=0457;Upper
+cp;0408;cf=0458;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER JE;NFKC_CF=0458;NFKC_SCF=0458;SB=UP;scf=0458;slc=0458;Upper
+cp;0409;cf=0459;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER LJE;NFKC_CF=0459;NFKC_SCF=0459;SB=UP;scf=0459;slc=0459;Upper
+cp;040A;cf=045A;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER NJE;NFKC_CF=045A;NFKC_SCF=045A;SB=UP;scf=045A;slc=045A;Upper
+cp;040B;cf=045B;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER TSHE;NFKC_CF=045B;NFKC_SCF=045B;SB=UP;scf=045B;slc=045B;Upper
+cp;040C;cf=045C;CWCF;CWKCF;CWL;dm=041A 0301;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER KJE;NFD_QC=N;NFKC_CF=045C;NFKC_SCF=045C;NFKD_QC=N;SB=UP;scf=045C;slc=045C;Upper
+cp;040D;age=3.0;cf=045D;CWCF;CWKCF;CWL;dm=0418 0300;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER I WITH GRAVE;NFD_QC=N;NFKC_CF=045D;NFKC_SCF=045D;NFKD_QC=N;SB=UP;scf=045D;slc=045D;Upper
+cp;040E;cf=045E;CWCF;CWKCF;CWL;dm=0423 0306;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER SHORT U;NFD_QC=N;NFKC_CF=045E;NFKC_SCF=045E;NFKD_QC=N;SB=UP;scf=045E;slc=045E;Upper
+cp;040F;cf=045F;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER DZHE;NFKC_CF=045F;NFKC_SCF=045F;SB=UP;scf=045F;slc=045F;Upper
# Basic Russian alphabet
-cp;0410;cf=0430;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER A;NFKC_CF=0430;SB=UP;scf=0430;slc=0430;Upper
-cp;0411;cf=0431;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER BE;NFKC_CF=0431;SB=UP;scf=0431;slc=0431;Upper
-cp;0412;cf=0432;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER VE;NFKC_CF=0432;SB=UP;scf=0432;slc=0432;Upper
-cp;0413;cf=0433;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER GHE;NFKC_CF=0433;SB=UP;scf=0433;slc=0433;Upper
-cp;0414;cf=0434;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER DE;NFKC_CF=0434;SB=UP;scf=0434;slc=0434;Upper
-cp;0415;cf=0435;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER IE;NFKC_CF=0435;SB=UP;scf=0435;slc=0435;Upper
-cp;0416;cf=0436;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER ZHE;NFKC_CF=0436;SB=UP;scf=0436;slc=0436;Upper
-cp;0417;cf=0437;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER ZE;NFKC_CF=0437;SB=UP;scf=0437;slc=0437;Upper
-cp;0418;cf=0438;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER I;NFKC_CF=0438;SB=UP;scf=0438;slc=0438;Upper
-cp;0419;cf=0439;CWCF;CWKCF;CWL;dm=0418 0306;dt=Can;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER SHORT I;NFD_QC=N;NFKC_CF=0439;NFKD_QC=N;SB=UP;scf=0439;slc=0439;Upper
-cp;041A;cf=043A;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER KA;NFKC_CF=043A;SB=UP;scf=043A;slc=043A;Upper
-cp;041B;cf=043B;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER EL;NFKC_CF=043B;SB=UP;scf=043B;slc=043B;Upper
-cp;041C;cf=043C;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER EM;NFKC_CF=043C;SB=UP;scf=043C;slc=043C;Upper
-cp;041D;cf=043D;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER EN;NFKC_CF=043D;SB=UP;scf=043D;slc=043D;Upper
-cp;041E;cf=043E;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER O;NFKC_CF=043E;SB=UP;scf=043E;slc=043E;Upper
-cp;041F;cf=043F;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER PE;NFKC_CF=043F;SB=UP;scf=043F;slc=043F;Upper
-cp;0420;cf=0440;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER ER;NFKC_CF=0440;SB=UP;scf=0440;slc=0440;Upper
-cp;0421;cf=0441;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER ES;NFKC_CF=0441;SB=UP;scf=0441;slc=0441;Upper
-cp;0422;cf=0442;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER TE;NFKC_CF=0442;SB=UP;scf=0442;slc=0442;Upper
-cp;0423;cf=0443;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER U;NFKC_CF=0443;SB=UP;scf=0443;slc=0443;Upper
-cp;0424;cf=0444;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER EF;NFKC_CF=0444;SB=UP;scf=0444;slc=0444;Upper
-cp;0425;cf=0445;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER HA;NFKC_CF=0445;SB=UP;scf=0445;slc=0445;Upper
-cp;0426;cf=0446;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER TSE;NFKC_CF=0446;SB=UP;scf=0446;slc=0446;Upper
-cp;0427;cf=0447;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER CHE;NFKC_CF=0447;SB=UP;scf=0447;slc=0447;Upper
-cp;0428;cf=0448;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER SHA;NFKC_CF=0448;SB=UP;scf=0448;slc=0448;Upper
-cp;0429;cf=0449;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER SHCHA;NFKC_CF=0449;SB=UP;scf=0449;slc=0449;Upper
-cp;042A;cf=044A;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER HARD SIGN;NFKC_CF=044A;SB=UP;scf=044A;slc=044A;Upper
-cp;042B;cf=044B;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER YERU;NFKC_CF=044B;SB=UP;scf=044B;slc=044B;Upper
-cp;042C;cf=044C;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER SOFT SIGN;NFKC_CF=044C;SB=UP;scf=044C;slc=044C;Upper
-cp;042D;cf=044D;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER E;NFKC_CF=044D;SB=UP;scf=044D;slc=044D;Upper
-cp;042E;cf=044E;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER YU;NFKC_CF=044E;SB=UP;scf=044E;slc=044E;Upper
-cp;042F;cf=044F;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER YA;NFKC_CF=044F;SB=UP;scf=044F;slc=044F;Upper
+cp;0410;cf=0430;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER A;NFKC_CF=0430;NFKC_SCF=0430;SB=UP;scf=0430;slc=0430;Upper
+cp;0411;cf=0431;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER BE;NFKC_CF=0431;NFKC_SCF=0431;SB=UP;scf=0431;slc=0431;Upper
+cp;0412;cf=0432;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER VE;NFKC_CF=0432;NFKC_SCF=0432;SB=UP;scf=0432;slc=0432;Upper
+cp;0413;cf=0433;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER GHE;NFKC_CF=0433;NFKC_SCF=0433;SB=UP;scf=0433;slc=0433;Upper
+cp;0414;cf=0434;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER DE;NFKC_CF=0434;NFKC_SCF=0434;SB=UP;scf=0434;slc=0434;Upper
+cp;0415;cf=0435;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER IE;NFKC_CF=0435;NFKC_SCF=0435;SB=UP;scf=0435;slc=0435;Upper
+cp;0416;cf=0436;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER ZHE;NFKC_CF=0436;NFKC_SCF=0436;SB=UP;scf=0436;slc=0436;Upper
+cp;0417;cf=0437;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER ZE;NFKC_CF=0437;NFKC_SCF=0437;SB=UP;scf=0437;slc=0437;Upper
+cp;0418;cf=0438;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER I;NFKC_CF=0438;NFKC_SCF=0438;SB=UP;scf=0438;slc=0438;Upper
+cp;0419;cf=0439;CWCF;CWKCF;CWL;dm=0418 0306;dt=Can;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER SHORT I;NFD_QC=N;NFKC_CF=0439;NFKC_SCF=0439;NFKD_QC=N;SB=UP;scf=0439;slc=0439;Upper
+cp;041A;cf=043A;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER KA;NFKC_CF=043A;NFKC_SCF=043A;SB=UP;scf=043A;slc=043A;Upper
+cp;041B;cf=043B;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER EL;NFKC_CF=043B;NFKC_SCF=043B;SB=UP;scf=043B;slc=043B;Upper
+cp;041C;cf=043C;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER EM;NFKC_CF=043C;NFKC_SCF=043C;SB=UP;scf=043C;slc=043C;Upper
+cp;041D;cf=043D;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER EN;NFKC_CF=043D;NFKC_SCF=043D;SB=UP;scf=043D;slc=043D;Upper
+cp;041E;cf=043E;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER O;NFKC_CF=043E;NFKC_SCF=043E;SB=UP;scf=043E;slc=043E;Upper
+cp;041F;cf=043F;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER PE;NFKC_CF=043F;NFKC_SCF=043F;SB=UP;scf=043F;slc=043F;Upper
+cp;0420;cf=0440;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER ER;NFKC_CF=0440;NFKC_SCF=0440;SB=UP;scf=0440;slc=0440;Upper
+cp;0421;cf=0441;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER ES;NFKC_CF=0441;NFKC_SCF=0441;SB=UP;scf=0441;slc=0441;Upper
+cp;0422;cf=0442;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER TE;NFKC_CF=0442;NFKC_SCF=0442;SB=UP;scf=0442;slc=0442;Upper
+cp;0423;cf=0443;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER U;NFKC_CF=0443;NFKC_SCF=0443;SB=UP;scf=0443;slc=0443;Upper
+cp;0424;cf=0444;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER EF;NFKC_CF=0444;NFKC_SCF=0444;SB=UP;scf=0444;slc=0444;Upper
+cp;0425;cf=0445;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER HA;NFKC_CF=0445;NFKC_SCF=0445;SB=UP;scf=0445;slc=0445;Upper
+cp;0426;cf=0446;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER TSE;NFKC_CF=0446;NFKC_SCF=0446;SB=UP;scf=0446;slc=0446;Upper
+cp;0427;cf=0447;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER CHE;NFKC_CF=0447;NFKC_SCF=0447;SB=UP;scf=0447;slc=0447;Upper
+cp;0428;cf=0448;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER SHA;NFKC_CF=0448;NFKC_SCF=0448;SB=UP;scf=0448;slc=0448;Upper
+cp;0429;cf=0449;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER SHCHA;NFKC_CF=0449;NFKC_SCF=0449;SB=UP;scf=0449;slc=0449;Upper
+cp;042A;cf=044A;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER HARD SIGN;NFKC_CF=044A;NFKC_SCF=044A;SB=UP;scf=044A;slc=044A;Upper
+cp;042B;cf=044B;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER YERU;NFKC_CF=044B;NFKC_SCF=044B;SB=UP;scf=044B;slc=044B;Upper
+cp;042C;cf=044C;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER SOFT SIGN;NFKC_CF=044C;NFKC_SCF=044C;SB=UP;scf=044C;slc=044C;Upper
+cp;042D;cf=044D;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER E;NFKC_CF=044D;NFKC_SCF=044D;SB=UP;scf=044D;slc=044D;Upper
+cp;042E;cf=044E;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER YU;NFKC_CF=044E;NFKC_SCF=044E;SB=UP;scf=044E;slc=044E;Upper
+cp;042F;cf=044F;CWCF;CWKCF;CWL;ea=A;gc=Lu;na=CYRILLIC CAPITAL LETTER YA;NFKC_CF=044F;NFKC_SCF=044F;SB=UP;scf=044F;slc=044F;Upper
cp;0430;CWT;CWU;ea=A;Lower;na=CYRILLIC SMALL LETTER A;stc=0410;suc=0410
cp;0431;CWT;CWU;ea=A;Lower;na=CYRILLIC SMALL LETTER BE;stc=0411;suc=0411
cp;0432;CWT;CWU;ea=A;Lower;na=CYRILLIC SMALL LETTER VE;stc=0412;suc=0412
@@ -2501,277 +2518,277 @@ cp;045D;age=3.0;CWT;CWU;dm=0438 0300;dt=Can;Lower;na=CYRILLIC SMALL LETTER I WIT
cp;045E;CWT;CWU;dm=0443 0306;dt=Can;Lower;na=CYRILLIC SMALL LETTER SHORT U;NFD_QC=N;NFKD_QC=N;stc=040E;suc=040E
cp;045F;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER DZHE;stc=040F;suc=040F
# Historic letters
-cp;0460;cf=0461;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER OMEGA;NFKC_CF=0461;SB=UP;scf=0461;slc=0461;Upper
+cp;0460;cf=0461;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER OMEGA;NFKC_CF=0461;NFKC_SCF=0461;SB=UP;scf=0461;slc=0461;Upper
cp;0461;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER OMEGA;stc=0460;suc=0460
-cp;0462;cf=0463;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER YAT;NFKC_CF=0463;SB=UP;scf=0463;slc=0463;Upper
+cp;0462;cf=0463;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER YAT;NFKC_CF=0463;NFKC_SCF=0463;SB=UP;scf=0463;slc=0463;Upper
cp;0463;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER YAT;stc=0462;suc=0462
-cp;0464;cf=0465;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER IOTIFIED E;NFKC_CF=0465;SB=UP;scf=0465;slc=0465;Upper
+cp;0464;cf=0465;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER IOTIFIED E;NFKC_CF=0465;NFKC_SCF=0465;SB=UP;scf=0465;slc=0465;Upper
cp;0465;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER IOTIFIED E;stc=0464;suc=0464
-cp;0466;cf=0467;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER LITTLE YUS;NFKC_CF=0467;SB=UP;scf=0467;slc=0467;Upper
+cp;0466;cf=0467;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER LITTLE YUS;NFKC_CF=0467;NFKC_SCF=0467;SB=UP;scf=0467;slc=0467;Upper
cp;0467;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER LITTLE YUS;stc=0466;suc=0466
-cp;0468;cf=0469;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS;NFKC_CF=0469;SB=UP;scf=0469;slc=0469;Upper
+cp;0468;cf=0469;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS;NFKC_CF=0469;NFKC_SCF=0469;SB=UP;scf=0469;slc=0469;Upper
cp;0469;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS;stc=0468;suc=0468
-cp;046A;cf=046B;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER BIG YUS;NFKC_CF=046B;SB=UP;scf=046B;slc=046B;Upper
+cp;046A;cf=046B;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER BIG YUS;NFKC_CF=046B;NFKC_SCF=046B;SB=UP;scf=046B;slc=046B;Upper
cp;046B;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER BIG YUS;stc=046A;suc=046A
-cp;046C;cf=046D;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS;NFKC_CF=046D;SB=UP;scf=046D;slc=046D;Upper
+cp;046C;cf=046D;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS;NFKC_CF=046D;NFKC_SCF=046D;SB=UP;scf=046D;slc=046D;Upper
cp;046D;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER IOTIFIED BIG YUS;stc=046C;suc=046C
-cp;046E;cf=046F;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KSI;NFKC_CF=046F;SB=UP;scf=046F;slc=046F;Upper
+cp;046E;cf=046F;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KSI;NFKC_CF=046F;NFKC_SCF=046F;SB=UP;scf=046F;slc=046F;Upper
cp;046F;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER KSI;stc=046E;suc=046E
-cp;0470;cf=0471;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER PSI;NFKC_CF=0471;SB=UP;scf=0471;slc=0471;Upper
+cp;0470;cf=0471;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER PSI;NFKC_CF=0471;NFKC_SCF=0471;SB=UP;scf=0471;slc=0471;Upper
cp;0471;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER PSI;stc=0470;suc=0470
-cp;0472;cf=0473;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER FITA;NFKC_CF=0473;SB=UP;scf=0473;slc=0473;Upper
+cp;0472;cf=0473;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER FITA;NFKC_CF=0473;NFKC_SCF=0473;SB=UP;scf=0473;slc=0473;Upper
cp;0473;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER FITA;stc=0472;suc=0472
-cp;0474;cf=0475;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER IZHITSA;NFKC_CF=0475;SB=UP;scf=0475;slc=0475;Upper
+cp;0474;cf=0475;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER IZHITSA;NFKC_CF=0475;NFKC_SCF=0475;SB=UP;scf=0475;slc=0475;Upper
cp;0475;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER IZHITSA;stc=0474;suc=0474
-cp;0476;cf=0477;CWCF;CWKCF;CWL;dm=0474 030F;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;NFD_QC=N;NFKC_CF=0477;NFKD_QC=N;SB=UP;scf=0477;slc=0477;Upper
+cp;0476;cf=0477;CWCF;CWKCF;CWL;dm=0474 030F;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;NFD_QC=N;NFKC_CF=0477;NFKC_SCF=0477;NFKD_QC=N;SB=UP;scf=0477;slc=0477;Upper
cp;0477;CWT;CWU;dm=0475 030F;dt=Can;Lower;na=CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;NFD_QC=N;NFKD_QC=N;stc=0476;suc=0476
# Historic digraphs
-cp;0478;cf=0479;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER UK;NFKC_CF=0479;SB=UP;scf=0479;slc=0479;Upper
+cp;0478;cf=0479;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER UK;NFKC_CF=0479;NFKC_SCF=0479;SB=UP;scf=0479;slc=0479;Upper
cp;0479;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER UK;stc=0478;suc=0478
# Historic letters
-cp;047A;cf=047B;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER ROUND OMEGA;NFKC_CF=047B;SB=UP;scf=047B;slc=047B;Upper
+cp;047A;cf=047B;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER ROUND OMEGA;NFKC_CF=047B;NFKC_SCF=047B;SB=UP;scf=047B;slc=047B;Upper
cp;047B;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER ROUND OMEGA;stc=047A;suc=047A
-cp;047C;cf=047D;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER OMEGA WITH TITLO;NFKC_CF=047D;SB=UP;scf=047D;slc=047D;Upper
+cp;047C;cf=047D;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER OMEGA WITH TITLO;NFKC_CF=047D;NFKC_SCF=047D;SB=UP;scf=047D;slc=047D;Upper
cp;047D;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER OMEGA WITH TITLO;stc=047C;suc=047C
-cp;047E;cf=047F;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER OT;NFKC_CF=047F;SB=UP;scf=047F;slc=047F;Upper
+cp;047E;cf=047F;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER OT;NFKC_CF=047F;NFKC_SCF=047F;SB=UP;scf=047F;slc=047F;Upper
cp;047F;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER OT;stc=047E;suc=047E
-cp;0480;cf=0481;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KOPPA;NFKC_CF=0481;SB=UP;scf=0481;slc=0481;Upper
+cp;0480;cf=0481;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KOPPA;NFKC_CF=0481;NFKC_SCF=0481;SB=UP;scf=0481;slc=0481;Upper
cp;0481;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER KOPPA;stc=0480;suc=0480
# Historic miscellaneous
cp;0482;-Alpha;-Cased;-CWCM;gc=So;-IDC;-IDS;na=CYRILLIC THOUSANDS SIGN;SB=XX;WB=XX;-XIDC;-XIDS
-cp;0483;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=COMBINING CYRILLIC TITLO;SB=EX;scx=Cyrl Perm;WB=Extend;-XIDS
-cp;0484;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=COMBINING CYRILLIC PALATALIZATION;SB=EX;scx=Cyrl Glag;WB=Extend;-XIDS
-cp;0485;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=COMBINING CYRILLIC DASIA PNEUMATA;SB=EX;sc=Zinh;scx=Cyrl Latn;WB=Extend;-XIDS
-cp;0486;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=COMBINING CYRILLIC PSILI PNEUMATA;SB=EX;sc=Zinh;scx=Cyrl Latn;WB=Extend;-XIDS
-cp;0487;age=5.1;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=COMBINING CYRILLIC POKRYTIE;SB=EX;scx=Cyrl Glag;WB=Extend;-XIDS
+cp;0483;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING CYRILLIC TITLO;SB=EX;scx=Cyrl Perm;WB=Extend;-XIDS
+cp;0484;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING CYRILLIC PALATALIZATION;SB=EX;scx=Cyrl Glag;WB=Extend;-XIDS
+cp;0485;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING CYRILLIC DASIA PNEUMATA;SB=EX;sc=Zinh;scx=Cyrl Latn;WB=Extend;-XIDS
+cp;0486;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING CYRILLIC PSILI PNEUMATA;SB=EX;sc=Zinh;scx=Cyrl Latn;WB=Extend;-XIDS
+cp;0487;age=5.1;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING CYRILLIC POKRYTIE;SB=EX;scx=Cyrl Glag;WB=Extend;-XIDS
cp;0488;age=3.0;-Alpha;bc=NSM;-Cased;CI;-CWCM;gc=Me;GCB=EX;-Gr_Base;Gr_Ext;-IDC;-IDS;jt=T;lb=CM;na=COMBINING CYRILLIC HUNDRED THOUSANDS SIGN;SB=EX;WB=Extend;-XIDC;-XIDS
cp;0489;age=3.0;-Alpha;bc=NSM;-Cased;CI;-CWCM;gc=Me;GCB=EX;-Gr_Base;Gr_Ext;-IDC;-IDS;jt=T;lb=CM;na=COMBINING CYRILLIC MILLIONS SIGN;SB=EX;WB=Extend;-XIDC;-XIDS
# Extended Cyrillic
-cp;048A;age=3.2;cf=048B;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER SHORT I WITH TAIL;NFKC_CF=048B;SB=UP;scf=048B;slc=048B;Upper
+cp;048A;age=3.2;cf=048B;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER SHORT I WITH TAIL;NFKC_CF=048B;NFKC_SCF=048B;SB=UP;scf=048B;slc=048B;Upper
cp;048B;age=3.2;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER SHORT I WITH TAIL;stc=048A;suc=048A
-cp;048C;age=3.0;cf=048D;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER SEMISOFT SIGN;NFKC_CF=048D;SB=UP;scf=048D;slc=048D;Upper
+cp;048C;age=3.0;cf=048D;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER SEMISOFT SIGN;NFKC_CF=048D;NFKC_SCF=048D;SB=UP;scf=048D;slc=048D;Upper
cp;048D;age=3.0;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER SEMISOFT SIGN;stc=048C;suc=048C
-cp;048E;age=3.0;cf=048F;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER ER WITH TICK;NFKC_CF=048F;SB=UP;scf=048F;slc=048F;Upper
+cp;048E;age=3.0;cf=048F;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER ER WITH TICK;NFKC_CF=048F;NFKC_SCF=048F;SB=UP;scf=048F;slc=048F;Upper
cp;048F;age=3.0;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER ER WITH TICK;stc=048E;suc=048E
-cp;0490;cf=0491;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER GHE WITH UPTURN;NFKC_CF=0491;SB=UP;scf=0491;slc=0491;Upper
+cp;0490;cf=0491;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER GHE WITH UPTURN;NFKC_CF=0491;NFKC_SCF=0491;SB=UP;scf=0491;slc=0491;Upper
cp;0491;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER GHE WITH UPTURN;stc=0490;suc=0490
-cp;0492;cf=0493;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER GHE WITH STROKE;NFKC_CF=0493;SB=UP;scf=0493;slc=0493;Upper
+cp;0492;cf=0493;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER GHE WITH STROKE;NFKC_CF=0493;NFKC_SCF=0493;SB=UP;scf=0493;slc=0493;Upper
cp;0493;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER GHE WITH STROKE;stc=0492;suc=0492
-cp;0494;cf=0495;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK;NFKC_CF=0495;SB=UP;scf=0495;slc=0495;Upper
+cp;0494;cf=0495;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK;NFKC_CF=0495;NFKC_SCF=0495;SB=UP;scf=0495;slc=0495;Upper
cp;0495;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK;stc=0494;suc=0494
-cp;0496;cf=0497;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER;NFKC_CF=0497;SB=UP;scf=0497;slc=0497;Upper
+cp;0496;cf=0497;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER;NFKC_CF=0497;NFKC_SCF=0497;SB=UP;scf=0497;slc=0497;Upper
cp;0497;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER ZHE WITH DESCENDER;stc=0496;suc=0496
-cp;0498;cf=0499;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER ZE WITH DESCENDER;NFKC_CF=0499;SB=UP;scf=0499;slc=0499;Upper
+cp;0498;cf=0499;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER ZE WITH DESCENDER;NFKC_CF=0499;NFKC_SCF=0499;SB=UP;scf=0499;slc=0499;Upper
cp;0499;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER ZE WITH DESCENDER;stc=0498;suc=0498
-cp;049A;cf=049B;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KA WITH DESCENDER;NFKC_CF=049B;SB=UP;scf=049B;slc=049B;Upper
+cp;049A;cf=049B;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KA WITH DESCENDER;NFKC_CF=049B;NFKC_SCF=049B;SB=UP;scf=049B;slc=049B;Upper
cp;049B;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER KA WITH DESCENDER;stc=049A;suc=049A
-cp;049C;cf=049D;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE;NFKC_CF=049D;SB=UP;scf=049D;slc=049D;Upper
+cp;049C;cf=049D;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE;NFKC_CF=049D;NFKC_SCF=049D;SB=UP;scf=049D;slc=049D;Upper
cp;049D;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE;stc=049C;suc=049C
-cp;049E;cf=049F;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KA WITH STROKE;NFKC_CF=049F;SB=UP;scf=049F;slc=049F;Upper
+cp;049E;cf=049F;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KA WITH STROKE;NFKC_CF=049F;NFKC_SCF=049F;SB=UP;scf=049F;slc=049F;Upper
cp;049F;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER KA WITH STROKE;stc=049E;suc=049E
-cp;04A0;cf=04A1;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER BASHKIR KA;NFKC_CF=04A1;SB=UP;scf=04A1;slc=04A1;Upper
+cp;04A0;cf=04A1;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER BASHKIR KA;NFKC_CF=04A1;NFKC_SCF=04A1;SB=UP;scf=04A1;slc=04A1;Upper
cp;04A1;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER BASHKIR KA;stc=04A0;suc=04A0
-cp;04A2;cf=04A3;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER EN WITH DESCENDER;NFKC_CF=04A3;SB=UP;scf=04A3;slc=04A3;Upper
+cp;04A2;cf=04A3;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER EN WITH DESCENDER;NFKC_CF=04A3;NFKC_SCF=04A3;SB=UP;scf=04A3;slc=04A3;Upper
cp;04A3;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER EN WITH DESCENDER;stc=04A2;suc=04A2
-cp;04A4;cf=04A5;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LIGATURE EN GHE;NFKC_CF=04A5;SB=UP;scf=04A5;slc=04A5;Upper
+cp;04A4;cf=04A5;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LIGATURE EN GHE;NFKC_CF=04A5;NFKC_SCF=04A5;SB=UP;scf=04A5;slc=04A5;Upper
cp;04A5;CWT;CWU;Lower;na=CYRILLIC SMALL LIGATURE EN GHE;stc=04A4;suc=04A4
-cp;04A6;cf=04A7;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK;NFKC_CF=04A7;SB=UP;scf=04A7;slc=04A7;Upper
+cp;04A6;cf=04A7;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK;NFKC_CF=04A7;NFKC_SCF=04A7;SB=UP;scf=04A7;slc=04A7;Upper
cp;04A7;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK;stc=04A6;suc=04A6
-cp;04A8;cf=04A9;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER ABKHASIAN HA;NFKC_CF=04A9;SB=UP;scf=04A9;slc=04A9;Upper
+cp;04A8;cf=04A9;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER ABKHASIAN HA;NFKC_CF=04A9;NFKC_SCF=04A9;SB=UP;scf=04A9;slc=04A9;Upper
cp;04A9;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER ABKHASIAN HA;stc=04A8;suc=04A8
-cp;04AA;cf=04AB;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER ES WITH DESCENDER;NFKC_CF=04AB;SB=UP;scf=04AB;slc=04AB;Upper
+cp;04AA;cf=04AB;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER ES WITH DESCENDER;NFKC_CF=04AB;NFKC_SCF=04AB;SB=UP;scf=04AB;slc=04AB;Upper
cp;04AB;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER ES WITH DESCENDER;stc=04AA;suc=04AA
-cp;04AC;cf=04AD;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER TE WITH DESCENDER;NFKC_CF=04AD;SB=UP;scf=04AD;slc=04AD;Upper
+cp;04AC;cf=04AD;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER TE WITH DESCENDER;NFKC_CF=04AD;NFKC_SCF=04AD;SB=UP;scf=04AD;slc=04AD;Upper
cp;04AD;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER TE WITH DESCENDER;stc=04AC;suc=04AC
-cp;04AE;cf=04AF;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER STRAIGHT U;NFKC_CF=04AF;SB=UP;scf=04AF;slc=04AF;Upper
+cp;04AE;cf=04AF;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER STRAIGHT U;NFKC_CF=04AF;NFKC_SCF=04AF;SB=UP;scf=04AF;slc=04AF;Upper
cp;04AF;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER STRAIGHT U;stc=04AE;suc=04AE
-cp;04B0;cf=04B1;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE;NFKC_CF=04B1;SB=UP;scf=04B1;slc=04B1;Upper
+cp;04B0;cf=04B1;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE;NFKC_CF=04B1;NFKC_SCF=04B1;SB=UP;scf=04B1;slc=04B1;Upper
cp;04B1;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE;stc=04B0;suc=04B0
-cp;04B2;cf=04B3;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER HA WITH DESCENDER;NFKC_CF=04B3;SB=UP;scf=04B3;slc=04B3;Upper
+cp;04B2;cf=04B3;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER HA WITH DESCENDER;NFKC_CF=04B3;NFKC_SCF=04B3;SB=UP;scf=04B3;slc=04B3;Upper
cp;04B3;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER HA WITH DESCENDER;stc=04B2;suc=04B2
-cp;04B4;cf=04B5;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LIGATURE TE TSE;NFKC_CF=04B5;SB=UP;scf=04B5;slc=04B5;Upper
+cp;04B4;cf=04B5;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LIGATURE TE TSE;NFKC_CF=04B5;NFKC_SCF=04B5;SB=UP;scf=04B5;slc=04B5;Upper
cp;04B5;CWT;CWU;Lower;na=CYRILLIC SMALL LIGATURE TE TSE;stc=04B4;suc=04B4
-cp;04B6;cf=04B7;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER CHE WITH DESCENDER;NFKC_CF=04B7;SB=UP;scf=04B7;slc=04B7;Upper
+cp;04B6;cf=04B7;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER CHE WITH DESCENDER;NFKC_CF=04B7;NFKC_SCF=04B7;SB=UP;scf=04B7;slc=04B7;Upper
cp;04B7;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER CHE WITH DESCENDER;stc=04B6;suc=04B6
-cp;04B8;cf=04B9;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE;NFKC_CF=04B9;SB=UP;scf=04B9;slc=04B9;Upper
+cp;04B8;cf=04B9;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE;NFKC_CF=04B9;NFKC_SCF=04B9;SB=UP;scf=04B9;slc=04B9;Upper
cp;04B9;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE;stc=04B8;suc=04B8
-cp;04BA;cf=04BB;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER SHHA;NFKC_CF=04BB;SB=UP;scf=04BB;slc=04BB;Upper
+cp;04BA;cf=04BB;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER SHHA;NFKC_CF=04BB;NFKC_SCF=04BB;SB=UP;scf=04BB;slc=04BB;Upper
cp;04BB;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER SHHA;stc=04BA;suc=04BA
-cp;04BC;cf=04BD;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER ABKHASIAN CHE;NFKC_CF=04BD;SB=UP;scf=04BD;slc=04BD;Upper
+cp;04BC;cf=04BD;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER ABKHASIAN CHE;NFKC_CF=04BD;NFKC_SCF=04BD;SB=UP;scf=04BD;slc=04BD;Upper
cp;04BD;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER ABKHASIAN CHE;stc=04BC;suc=04BC
-cp;04BE;cf=04BF;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER;NFKC_CF=04BF;SB=UP;scf=04BF;slc=04BF;Upper
+cp;04BE;cf=04BF;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER;NFKC_CF=04BF;NFKC_SCF=04BF;SB=UP;scf=04BF;slc=04BF;Upper
cp;04BF;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER;stc=04BE;suc=04BE
-cp;04C0;cf=04CF;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC LETTER PALOCHKA;NFKC_CF=04CF;SB=UP;scf=04CF;slc=04CF;Upper
-cp;04C1;cf=04C2;CWCF;CWKCF;CWL;dm=0416 0306;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER ZHE WITH BREVE;NFD_QC=N;NFKC_CF=04C2;NFKD_QC=N;SB=UP;scf=04C2;slc=04C2;Upper
+cp;04C0;cf=04CF;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC LETTER PALOCHKA;NFKC_CF=04CF;NFKC_SCF=04CF;SB=UP;scf=04CF;slc=04CF;Upper
+cp;04C1;cf=04C2;CWCF;CWKCF;CWL;dm=0416 0306;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER ZHE WITH BREVE;NFD_QC=N;NFKC_CF=04C2;NFKC_SCF=04C2;NFKD_QC=N;SB=UP;scf=04C2;slc=04C2;Upper
cp;04C2;CWT;CWU;dm=0436 0306;dt=Can;Lower;na=CYRILLIC SMALL LETTER ZHE WITH BREVE;NFD_QC=N;NFKD_QC=N;stc=04C1;suc=04C1
-cp;04C3;cf=04C4;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KA WITH HOOK;NFKC_CF=04C4;SB=UP;scf=04C4;slc=04C4;Upper
+cp;04C3;cf=04C4;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KA WITH HOOK;NFKC_CF=04C4;NFKC_SCF=04C4;SB=UP;scf=04C4;slc=04C4;Upper
cp;04C4;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER KA WITH HOOK;stc=04C3;suc=04C3
-cp;04C5;age=3.2;cf=04C6;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER EL WITH TAIL;NFKC_CF=04C6;SB=UP;scf=04C6;slc=04C6;Upper
+cp;04C5;age=3.2;cf=04C6;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER EL WITH TAIL;NFKC_CF=04C6;NFKC_SCF=04C6;SB=UP;scf=04C6;slc=04C6;Upper
cp;04C6;age=3.2;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER EL WITH TAIL;stc=04C5;suc=04C5
-cp;04C7;cf=04C8;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER EN WITH HOOK;NFKC_CF=04C8;SB=UP;scf=04C8;slc=04C8;Upper
+cp;04C7;cf=04C8;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER EN WITH HOOK;NFKC_CF=04C8;NFKC_SCF=04C8;SB=UP;scf=04C8;slc=04C8;Upper
cp;04C8;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER EN WITH HOOK;stc=04C7;suc=04C7
-cp;04C9;age=3.2;cf=04CA;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER EN WITH TAIL;NFKC_CF=04CA;SB=UP;scf=04CA;slc=04CA;Upper
+cp;04C9;age=3.2;cf=04CA;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER EN WITH TAIL;NFKC_CF=04CA;NFKC_SCF=04CA;SB=UP;scf=04CA;slc=04CA;Upper
cp;04CA;age=3.2;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER EN WITH TAIL;stc=04C9;suc=04C9
-cp;04CB;cf=04CC;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KHAKASSIAN CHE;NFKC_CF=04CC;SB=UP;scf=04CC;slc=04CC;Upper
+cp;04CB;cf=04CC;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KHAKASSIAN CHE;NFKC_CF=04CC;NFKC_SCF=04CC;SB=UP;scf=04CC;slc=04CC;Upper
cp;04CC;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER KHAKASSIAN CHE;stc=04CB;suc=04CB
-cp;04CD;age=3.2;cf=04CE;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER EM WITH TAIL;NFKC_CF=04CE;SB=UP;scf=04CE;slc=04CE;Upper
+cp;04CD;age=3.2;cf=04CE;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER EM WITH TAIL;NFKC_CF=04CE;NFKC_SCF=04CE;SB=UP;scf=04CE;slc=04CE;Upper
cp;04CE;age=3.2;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER EM WITH TAIL;stc=04CD;suc=04CD
cp;04CF;age=5.0;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER PALOCHKA;stc=04C0;suc=04C0
-cp;04D0;cf=04D1;CWCF;CWKCF;CWL;dm=0410 0306;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER A WITH BREVE;NFD_QC=N;NFKC_CF=04D1;NFKD_QC=N;SB=UP;scf=04D1;slc=04D1;Upper
+cp;04D0;cf=04D1;CWCF;CWKCF;CWL;dm=0410 0306;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER A WITH BREVE;NFD_QC=N;NFKC_CF=04D1;NFKC_SCF=04D1;NFKD_QC=N;SB=UP;scf=04D1;slc=04D1;Upper
cp;04D1;CWT;CWU;dm=0430 0306;dt=Can;Lower;na=CYRILLIC SMALL LETTER A WITH BREVE;NFD_QC=N;NFKD_QC=N;stc=04D0;suc=04D0
-cp;04D2;cf=04D3;CWCF;CWKCF;CWL;dm=0410 0308;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER A WITH DIAERESIS;NFD_QC=N;NFKC_CF=04D3;NFKD_QC=N;SB=UP;scf=04D3;slc=04D3;Upper
+cp;04D2;cf=04D3;CWCF;CWKCF;CWL;dm=0410 0308;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER A WITH DIAERESIS;NFD_QC=N;NFKC_CF=04D3;NFKC_SCF=04D3;NFKD_QC=N;SB=UP;scf=04D3;slc=04D3;Upper
cp;04D3;CWT;CWU;dm=0430 0308;dt=Can;Lower;na=CYRILLIC SMALL LETTER A WITH DIAERESIS;NFD_QC=N;NFKD_QC=N;stc=04D2;suc=04D2
-cp;04D4;cf=04D5;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LIGATURE A IE;NFKC_CF=04D5;SB=UP;scf=04D5;slc=04D5;Upper
+cp;04D4;cf=04D5;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LIGATURE A IE;NFKC_CF=04D5;NFKC_SCF=04D5;SB=UP;scf=04D5;slc=04D5;Upper
cp;04D5;CWT;CWU;Lower;na=CYRILLIC SMALL LIGATURE A IE;stc=04D4;suc=04D4
-cp;04D6;cf=04D7;CWCF;CWKCF;CWL;dm=0415 0306;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER IE WITH BREVE;NFD_QC=N;NFKC_CF=04D7;NFKD_QC=N;SB=UP;scf=04D7;slc=04D7;Upper
+cp;04D6;cf=04D7;CWCF;CWKCF;CWL;dm=0415 0306;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER IE WITH BREVE;NFD_QC=N;NFKC_CF=04D7;NFKC_SCF=04D7;NFKD_QC=N;SB=UP;scf=04D7;slc=04D7;Upper
cp;04D7;CWT;CWU;dm=0435 0306;dt=Can;Lower;na=CYRILLIC SMALL LETTER IE WITH BREVE;NFD_QC=N;NFKD_QC=N;stc=04D6;suc=04D6
-cp;04D8;cf=04D9;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER SCHWA;NFKC_CF=04D9;SB=UP;scf=04D9;slc=04D9;Upper
+cp;04D8;cf=04D9;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER SCHWA;NFKC_CF=04D9;NFKC_SCF=04D9;SB=UP;scf=04D9;slc=04D9;Upper
cp;04D9;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER SCHWA;stc=04D8;suc=04D8
-cp;04DA;cf=04DB;CWCF;CWKCF;CWL;dm=04D8 0308;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS;NFD_QC=N;NFKC_CF=04DB;NFKD_QC=N;SB=UP;scf=04DB;slc=04DB;Upper
+cp;04DA;cf=04DB;CWCF;CWKCF;CWL;dm=04D8 0308;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS;NFD_QC=N;NFKC_CF=04DB;NFKC_SCF=04DB;NFKD_QC=N;SB=UP;scf=04DB;slc=04DB;Upper
cp;04DB;CWT;CWU;dm=04D9 0308;dt=Can;Lower;na=CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS;NFD_QC=N;NFKD_QC=N;stc=04DA;suc=04DA
-cp;04DC;cf=04DD;CWCF;CWKCF;CWL;dm=0416 0308;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS;NFD_QC=N;NFKC_CF=04DD;NFKD_QC=N;SB=UP;scf=04DD;slc=04DD;Upper
+cp;04DC;cf=04DD;CWCF;CWKCF;CWL;dm=0416 0308;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS;NFD_QC=N;NFKC_CF=04DD;NFKC_SCF=04DD;NFKD_QC=N;SB=UP;scf=04DD;slc=04DD;Upper
cp;04DD;CWT;CWU;dm=0436 0308;dt=Can;Lower;na=CYRILLIC SMALL LETTER ZHE WITH DIAERESIS;NFD_QC=N;NFKD_QC=N;stc=04DC;suc=04DC
-cp;04DE;cf=04DF;CWCF;CWKCF;CWL;dm=0417 0308;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS;NFD_QC=N;NFKC_CF=04DF;NFKD_QC=N;SB=UP;scf=04DF;slc=04DF;Upper
+cp;04DE;cf=04DF;CWCF;CWKCF;CWL;dm=0417 0308;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS;NFD_QC=N;NFKC_CF=04DF;NFKC_SCF=04DF;NFKD_QC=N;SB=UP;scf=04DF;slc=04DF;Upper
cp;04DF;CWT;CWU;dm=0437 0308;dt=Can;Lower;na=CYRILLIC SMALL LETTER ZE WITH DIAERESIS;NFD_QC=N;NFKD_QC=N;stc=04DE;suc=04DE
-cp;04E0;cf=04E1;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER ABKHASIAN DZE;NFKC_CF=04E1;SB=UP;scf=04E1;slc=04E1;Upper
+cp;04E0;cf=04E1;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER ABKHASIAN DZE;NFKC_CF=04E1;NFKC_SCF=04E1;SB=UP;scf=04E1;slc=04E1;Upper
cp;04E1;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER ABKHASIAN DZE;stc=04E0;suc=04E0
-cp;04E2;cf=04E3;CWCF;CWKCF;CWL;dm=0418 0304;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER I WITH MACRON;NFD_QC=N;NFKC_CF=04E3;NFKD_QC=N;SB=UP;scf=04E3;slc=04E3;Upper
+cp;04E2;cf=04E3;CWCF;CWKCF;CWL;dm=0418 0304;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER I WITH MACRON;NFD_QC=N;NFKC_CF=04E3;NFKC_SCF=04E3;NFKD_QC=N;SB=UP;scf=04E3;slc=04E3;Upper
cp;04E3;CWT;CWU;dm=0438 0304;dt=Can;Lower;na=CYRILLIC SMALL LETTER I WITH MACRON;NFD_QC=N;NFKD_QC=N;stc=04E2;suc=04E2
-cp;04E4;cf=04E5;CWCF;CWKCF;CWL;dm=0418 0308;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER I WITH DIAERESIS;NFD_QC=N;NFKC_CF=04E5;NFKD_QC=N;SB=UP;scf=04E5;slc=04E5;Upper
+cp;04E4;cf=04E5;CWCF;CWKCF;CWL;dm=0418 0308;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER I WITH DIAERESIS;NFD_QC=N;NFKC_CF=04E5;NFKC_SCF=04E5;NFKD_QC=N;SB=UP;scf=04E5;slc=04E5;Upper
cp;04E5;CWT;CWU;dm=0438 0308;dt=Can;Lower;na=CYRILLIC SMALL LETTER I WITH DIAERESIS;NFD_QC=N;NFKD_QC=N;stc=04E4;suc=04E4
-cp;04E6;cf=04E7;CWCF;CWKCF;CWL;dm=041E 0308;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER O WITH DIAERESIS;NFD_QC=N;NFKC_CF=04E7;NFKD_QC=N;SB=UP;scf=04E7;slc=04E7;Upper
+cp;04E6;cf=04E7;CWCF;CWKCF;CWL;dm=041E 0308;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER O WITH DIAERESIS;NFD_QC=N;NFKC_CF=04E7;NFKC_SCF=04E7;NFKD_QC=N;SB=UP;scf=04E7;slc=04E7;Upper
cp;04E7;CWT;CWU;dm=043E 0308;dt=Can;Lower;na=CYRILLIC SMALL LETTER O WITH DIAERESIS;NFD_QC=N;NFKD_QC=N;stc=04E6;suc=04E6
-cp;04E8;cf=04E9;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER BARRED O;NFKC_CF=04E9;SB=UP;scf=04E9;slc=04E9;Upper
+cp;04E8;cf=04E9;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER BARRED O;NFKC_CF=04E9;NFKC_SCF=04E9;SB=UP;scf=04E9;slc=04E9;Upper
cp;04E9;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER BARRED O;stc=04E8;suc=04E8
-cp;04EA;cf=04EB;CWCF;CWKCF;CWL;dm=04E8 0308;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS;NFD_QC=N;NFKC_CF=04EB;NFKD_QC=N;SB=UP;scf=04EB;slc=04EB;Upper
+cp;04EA;cf=04EB;CWCF;CWKCF;CWL;dm=04E8 0308;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS;NFD_QC=N;NFKC_CF=04EB;NFKC_SCF=04EB;NFKD_QC=N;SB=UP;scf=04EB;slc=04EB;Upper
cp;04EB;CWT;CWU;dm=04E9 0308;dt=Can;Lower;na=CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS;NFD_QC=N;NFKD_QC=N;stc=04EA;suc=04EA
-cp;04EC;age=3.0;cf=04ED;CWCF;CWKCF;CWL;dm=042D 0308;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER E WITH DIAERESIS;NFD_QC=N;NFKC_CF=04ED;NFKD_QC=N;SB=UP;scf=04ED;slc=04ED;Upper
+cp;04EC;age=3.0;cf=04ED;CWCF;CWKCF;CWL;dm=042D 0308;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER E WITH DIAERESIS;NFD_QC=N;NFKC_CF=04ED;NFKC_SCF=04ED;NFKD_QC=N;SB=UP;scf=04ED;slc=04ED;Upper
cp;04ED;age=3.0;CWT;CWU;dm=044D 0308;dt=Can;Lower;na=CYRILLIC SMALL LETTER E WITH DIAERESIS;NFD_QC=N;NFKD_QC=N;stc=04EC;suc=04EC
-cp;04EE;cf=04EF;CWCF;CWKCF;CWL;dm=0423 0304;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER U WITH MACRON;NFD_QC=N;NFKC_CF=04EF;NFKD_QC=N;SB=UP;scf=04EF;slc=04EF;Upper
+cp;04EE;cf=04EF;CWCF;CWKCF;CWL;dm=0423 0304;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER U WITH MACRON;NFD_QC=N;NFKC_CF=04EF;NFKC_SCF=04EF;NFKD_QC=N;SB=UP;scf=04EF;slc=04EF;Upper
cp;04EF;CWT;CWU;dm=0443 0304;dt=Can;Lower;na=CYRILLIC SMALL LETTER U WITH MACRON;NFD_QC=N;NFKD_QC=N;stc=04EE;suc=04EE
-cp;04F0;cf=04F1;CWCF;CWKCF;CWL;dm=0423 0308;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER U WITH DIAERESIS;NFD_QC=N;NFKC_CF=04F1;NFKD_QC=N;SB=UP;scf=04F1;slc=04F1;Upper
+cp;04F0;cf=04F1;CWCF;CWKCF;CWL;dm=0423 0308;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER U WITH DIAERESIS;NFD_QC=N;NFKC_CF=04F1;NFKC_SCF=04F1;NFKD_QC=N;SB=UP;scf=04F1;slc=04F1;Upper
cp;04F1;CWT;CWU;dm=0443 0308;dt=Can;Lower;na=CYRILLIC SMALL LETTER U WITH DIAERESIS;NFD_QC=N;NFKD_QC=N;stc=04F0;suc=04F0
-cp;04F2;cf=04F3;CWCF;CWKCF;CWL;dm=0423 030B;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE;NFD_QC=N;NFKC_CF=04F3;NFKD_QC=N;SB=UP;scf=04F3;slc=04F3;Upper
+cp;04F2;cf=04F3;CWCF;CWKCF;CWL;dm=0423 030B;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE;NFD_QC=N;NFKC_CF=04F3;NFKC_SCF=04F3;NFKD_QC=N;SB=UP;scf=04F3;slc=04F3;Upper
cp;04F3;CWT;CWU;dm=0443 030B;dt=Can;Lower;na=CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE;NFD_QC=N;NFKD_QC=N;stc=04F2;suc=04F2
-cp;04F4;cf=04F5;CWCF;CWKCF;CWL;dm=0427 0308;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS;NFD_QC=N;NFKC_CF=04F5;NFKD_QC=N;SB=UP;scf=04F5;slc=04F5;Upper
+cp;04F4;cf=04F5;CWCF;CWKCF;CWL;dm=0427 0308;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS;NFD_QC=N;NFKC_CF=04F5;NFKC_SCF=04F5;NFKD_QC=N;SB=UP;scf=04F5;slc=04F5;Upper
cp;04F5;CWT;CWU;dm=0447 0308;dt=Can;Lower;na=CYRILLIC SMALL LETTER CHE WITH DIAERESIS;NFD_QC=N;NFKD_QC=N;stc=04F4;suc=04F4
-cp;04F6;age=4.1;cf=04F7;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER GHE WITH DESCENDER;NFKC_CF=04F7;SB=UP;scf=04F7;slc=04F7;Upper
+cp;04F6;age=4.1;cf=04F7;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER GHE WITH DESCENDER;NFKC_CF=04F7;NFKC_SCF=04F7;SB=UP;scf=04F7;slc=04F7;Upper
cp;04F7;age=4.1;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER GHE WITH DESCENDER;stc=04F6;suc=04F6
-cp;04F8;cf=04F9;CWCF;CWKCF;CWL;dm=042B 0308;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS;NFD_QC=N;NFKC_CF=04F9;NFKD_QC=N;SB=UP;scf=04F9;slc=04F9;Upper
+cp;04F8;cf=04F9;CWCF;CWKCF;CWL;dm=042B 0308;dt=Can;gc=Lu;na=CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS;NFD_QC=N;NFKC_CF=04F9;NFKC_SCF=04F9;NFKD_QC=N;SB=UP;scf=04F9;slc=04F9;Upper
cp;04F9;CWT;CWU;dm=044B 0308;dt=Can;Lower;na=CYRILLIC SMALL LETTER YERU WITH DIAERESIS;NFD_QC=N;NFKD_QC=N;stc=04F8;suc=04F8
# Additions for Nivkh
-cp;04FA;age=5.0;cf=04FB;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK;NFKC_CF=04FB;SB=UP;scf=04FB;slc=04FB;Upper
+cp;04FA;age=5.0;cf=04FB;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK;NFKC_CF=04FB;NFKC_SCF=04FB;SB=UP;scf=04FB;slc=04FB;Upper
cp;04FB;age=5.0;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER GHE WITH STROKE AND HOOK;stc=04FA;suc=04FA
-cp;04FC;age=5.0;cf=04FD;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER HA WITH HOOK;NFKC_CF=04FD;SB=UP;scf=04FD;slc=04FD;Upper
+cp;04FC;age=5.0;cf=04FD;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER HA WITH HOOK;NFKC_CF=04FD;NFKC_SCF=04FD;SB=UP;scf=04FD;slc=04FD;Upper
cp;04FD;age=5.0;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER HA WITH HOOK;stc=04FC;suc=04FC
-cp;04FE;age=5.0;cf=04FF;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER HA WITH STROKE;NFKC_CF=04FF;SB=UP;scf=04FF;slc=04FF;Upper
+cp;04FE;age=5.0;cf=04FF;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER HA WITH STROKE;NFKC_CF=04FF;NFKC_SCF=04FF;SB=UP;scf=04FF;slc=04FF;Upper
cp;04FF;age=5.0;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER HA WITH STROKE;stc=04FE;suc=04FE
block;0500..052F;age=3.2;Alpha;blk=Cyrillic_Sup;Cased;CWCM;gc=Ll;Gr_Base;IDC;IDS;lb=AL;SB=LO;sc=Cyrl;WB=LE;XIDC;XIDS
# 0500..052F Cyrillic Supplement
# Komi letters
-cp;0500;cf=0501;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KOMI DE;NFKC_CF=0501;SB=UP;scf=0501;slc=0501;Upper
+cp;0500;cf=0501;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KOMI DE;NFKC_CF=0501;NFKC_SCF=0501;SB=UP;scf=0501;slc=0501;Upper
cp;0501;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER KOMI DE;stc=0500;suc=0500
-cp;0502;cf=0503;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KOMI DJE;NFKC_CF=0503;SB=UP;scf=0503;slc=0503;Upper
+cp;0502;cf=0503;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KOMI DJE;NFKC_CF=0503;NFKC_SCF=0503;SB=UP;scf=0503;slc=0503;Upper
cp;0503;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER KOMI DJE;stc=0502;suc=0502
-cp;0504;cf=0505;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KOMI ZJE;NFKC_CF=0505;SB=UP;scf=0505;slc=0505;Upper
+cp;0504;cf=0505;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KOMI ZJE;NFKC_CF=0505;NFKC_SCF=0505;SB=UP;scf=0505;slc=0505;Upper
cp;0505;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER KOMI ZJE;stc=0504;suc=0504
-cp;0506;cf=0507;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KOMI DZJE;NFKC_CF=0507;SB=UP;scf=0507;slc=0507;Upper
+cp;0506;cf=0507;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KOMI DZJE;NFKC_CF=0507;NFKC_SCF=0507;SB=UP;scf=0507;slc=0507;Upper
cp;0507;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER KOMI DZJE;stc=0506;suc=0506
-cp;0508;cf=0509;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KOMI LJE;NFKC_CF=0509;SB=UP;scf=0509;slc=0509;Upper
+cp;0508;cf=0509;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KOMI LJE;NFKC_CF=0509;NFKC_SCF=0509;SB=UP;scf=0509;slc=0509;Upper
cp;0509;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER KOMI LJE;stc=0508;suc=0508
-cp;050A;cf=050B;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KOMI NJE;NFKC_CF=050B;SB=UP;scf=050B;slc=050B;Upper
+cp;050A;cf=050B;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KOMI NJE;NFKC_CF=050B;NFKC_SCF=050B;SB=UP;scf=050B;slc=050B;Upper
cp;050B;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER KOMI NJE;stc=050A;suc=050A
-cp;050C;cf=050D;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KOMI SJE;NFKC_CF=050D;SB=UP;scf=050D;slc=050D;Upper
+cp;050C;cf=050D;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KOMI SJE;NFKC_CF=050D;NFKC_SCF=050D;SB=UP;scf=050D;slc=050D;Upper
cp;050D;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER KOMI SJE;stc=050C;suc=050C
-cp;050E;cf=050F;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KOMI TJE;NFKC_CF=050F;SB=UP;scf=050F;slc=050F;Upper
+cp;050E;cf=050F;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER KOMI TJE;NFKC_CF=050F;NFKC_SCF=050F;SB=UP;scf=050F;slc=050F;Upper
cp;050F;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER KOMI TJE;stc=050E;suc=050E
# Khanty letters
-cp;0510;age=5.0;cf=0511;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER REVERSED ZE;NFKC_CF=0511;SB=UP;scf=0511;slc=0511;Upper
+cp;0510;age=5.0;cf=0511;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER REVERSED ZE;NFKC_CF=0511;NFKC_SCF=0511;SB=UP;scf=0511;slc=0511;Upper
cp;0511;age=5.0;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER REVERSED ZE;stc=0510;suc=0510
# Chukchi letters
-cp;0512;age=5.0;cf=0513;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER EL WITH HOOK;NFKC_CF=0513;SB=UP;scf=0513;slc=0513;Upper
+cp;0512;age=5.0;cf=0513;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER EL WITH HOOK;NFKC_CF=0513;NFKC_SCF=0513;SB=UP;scf=0513;slc=0513;Upper
cp;0513;age=5.0;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER EL WITH HOOK;stc=0512;suc=0512
# Mordvin letters
-cp;0514;age=5.1;cf=0515;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER LHA;NFKC_CF=0515;SB=UP;scf=0515;slc=0515;Upper
+cp;0514;age=5.1;cf=0515;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER LHA;NFKC_CF=0515;NFKC_SCF=0515;SB=UP;scf=0515;slc=0515;Upper
cp;0515;age=5.1;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER LHA;stc=0514;suc=0514
-cp;0516;age=5.1;cf=0517;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER RHA;NFKC_CF=0517;SB=UP;scf=0517;slc=0517;Upper
+cp;0516;age=5.1;cf=0517;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER RHA;NFKC_CF=0517;NFKC_SCF=0517;SB=UP;scf=0517;slc=0517;Upper
cp;0517;age=5.1;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER RHA;stc=0516;suc=0516
-cp;0518;age=5.1;cf=0519;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER YAE;NFKC_CF=0519;SB=UP;scf=0519;slc=0519;Upper
+cp;0518;age=5.1;cf=0519;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER YAE;NFKC_CF=0519;NFKC_SCF=0519;SB=UP;scf=0519;slc=0519;Upper
cp;0519;age=5.1;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER YAE;stc=0518;suc=0518
# Kurdish letters
-cp;051A;age=5.1;cf=051B;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER QA;NFKC_CF=051B;SB=UP;scf=051B;slc=051B;Upper
+cp;051A;age=5.1;cf=051B;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER QA;NFKC_CF=051B;NFKC_SCF=051B;SB=UP;scf=051B;slc=051B;Upper
cp;051B;age=5.1;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER QA;stc=051A;suc=051A
-cp;051C;age=5.1;cf=051D;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER WE;NFKC_CF=051D;SB=UP;scf=051D;slc=051D;Upper
+cp;051C;age=5.1;cf=051D;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER WE;NFKC_CF=051D;NFKC_SCF=051D;SB=UP;scf=051D;slc=051D;Upper
cp;051D;age=5.1;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER WE;stc=051C;suc=051C
# Aleut letters
-cp;051E;age=5.1;cf=051F;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER ALEUT KA;NFKC_CF=051F;SB=UP;scf=051F;slc=051F;Upper
+cp;051E;age=5.1;cf=051F;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER ALEUT KA;NFKC_CF=051F;NFKC_SCF=051F;SB=UP;scf=051F;slc=051F;Upper
cp;051F;age=5.1;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER ALEUT KA;stc=051E;suc=051E
# Chuvash letters
-cp;0520;age=5.1;cf=0521;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK;NFKC_CF=0521;SB=UP;scf=0521;slc=0521;Upper
+cp;0520;age=5.1;cf=0521;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK;NFKC_CF=0521;NFKC_SCF=0521;SB=UP;scf=0521;slc=0521;Upper
cp;0521;age=5.1;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER EL WITH MIDDLE HOOK;stc=0520;suc=0520
-cp;0522;age=5.1;cf=0523;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK;NFKC_CF=0523;SB=UP;scf=0523;slc=0523;Upper
+cp;0522;age=5.1;cf=0523;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK;NFKC_CF=0523;NFKC_SCF=0523;SB=UP;scf=0523;slc=0523;Upper
cp;0523;age=5.1;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK;stc=0522;suc=0522
# Abkhaz letters
-cp;0524;age=5.2;cf=0525;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER PE WITH DESCENDER;NFKC_CF=0525;SB=UP;scf=0525;slc=0525;Upper
+cp;0524;age=5.2;cf=0525;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER PE WITH DESCENDER;NFKC_CF=0525;NFKC_SCF=0525;SB=UP;scf=0525;slc=0525;Upper
cp;0525;age=5.2;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER PE WITH DESCENDER;stc=0524;suc=0524
# Azerbaijani letters
-cp;0526;age=6.0;cf=0527;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER SHHA WITH DESCENDER;NFKC_CF=0527;SB=UP;scf=0527;slc=0527;Upper
+cp;0526;age=6.0;cf=0527;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER SHHA WITH DESCENDER;NFKC_CF=0527;NFKC_SCF=0527;SB=UP;scf=0527;slc=0527;Upper
cp;0527;age=6.0;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER SHHA WITH DESCENDER;stc=0526;suc=0526
# Orok letters
-cp;0528;age=7.0;cf=0529;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER EN WITH LEFT HOOK;NFKC_CF=0529;SB=UP;scf=0529;slc=0529;Upper
+cp;0528;age=7.0;cf=0529;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER EN WITH LEFT HOOK;NFKC_CF=0529;NFKC_SCF=0529;SB=UP;scf=0529;slc=0529;Upper
cp;0529;age=7.0;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER EN WITH LEFT HOOK;stc=0528;suc=0528
# Komi letters
-cp;052A;age=7.0;cf=052B;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER DZZHE;NFKC_CF=052B;SB=UP;scf=052B;slc=052B;Upper
+cp;052A;age=7.0;cf=052B;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER DZZHE;NFKC_CF=052B;NFKC_SCF=052B;SB=UP;scf=052B;slc=052B;Upper
cp;052B;age=7.0;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER DZZHE;stc=052A;suc=052A
-cp;052C;age=7.0;cf=052D;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER DCHE;NFKC_CF=052D;SB=UP;scf=052D;slc=052D;Upper
+cp;052C;age=7.0;cf=052D;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER DCHE;NFKC_CF=052D;NFKC_SCF=052D;SB=UP;scf=052D;slc=052D;Upper
cp;052D;age=7.0;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER DCHE;stc=052C;suc=052C
# Khanty letters
-cp;052E;age=7.0;cf=052F;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER EL WITH DESCENDER;NFKC_CF=052F;SB=UP;scf=052F;slc=052F;Upper
+cp;052E;age=7.0;cf=052F;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER EL WITH DESCENDER;NFKC_CF=052F;NFKC_SCF=052F;SB=UP;scf=052F;slc=052F;Upper
cp;052F;age=7.0;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER EL WITH DESCENDER;stc=052E;suc=052E
block;0530..058F;age=1.1;Alpha;blk=Armenian;Cased;CWCM;gc=Ll;Gr_Base;IDC;IDS;lb=AL;SB=LO;sc=Armn;WB=LE;XIDC;XIDS
# 0530..058F Armenian
unassigned;0530
# Uppercase letters
-cp;0531;cf=0561;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER AYB;NFKC_CF=0561;SB=UP;scf=0561;slc=0561;Upper
-cp;0532;cf=0562;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER BEN;NFKC_CF=0562;SB=UP;scf=0562;slc=0562;Upper
-cp;0533;cf=0563;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER GIM;NFKC_CF=0563;SB=UP;scf=0563;slc=0563;Upper
-cp;0534;cf=0564;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER DA;NFKC_CF=0564;SB=UP;scf=0564;slc=0564;Upper
-cp;0535;cf=0565;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER ECH;NFKC_CF=0565;SB=UP;scf=0565;slc=0565;Upper
-cp;0536;cf=0566;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER ZA;NFKC_CF=0566;SB=UP;scf=0566;slc=0566;Upper
-cp;0537;cf=0567;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER EH;NFKC_CF=0567;SB=UP;scf=0567;slc=0567;Upper
-cp;0538;cf=0568;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER ET;NFKC_CF=0568;SB=UP;scf=0568;slc=0568;Upper
-cp;0539;cf=0569;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER TO;NFKC_CF=0569;SB=UP;scf=0569;slc=0569;Upper
-cp;053A;cf=056A;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER ZHE;NFKC_CF=056A;SB=UP;scf=056A;slc=056A;Upper
-cp;053B;cf=056B;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER INI;NFKC_CF=056B;SB=UP;scf=056B;slc=056B;Upper
-cp;053C;cf=056C;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER LIWN;NFKC_CF=056C;SB=UP;scf=056C;slc=056C;Upper
-cp;053D;cf=056D;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER XEH;NFKC_CF=056D;SB=UP;scf=056D;slc=056D;Upper
-cp;053E;cf=056E;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER CA;NFKC_CF=056E;SB=UP;scf=056E;slc=056E;Upper
-cp;053F;cf=056F;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER KEN;NFKC_CF=056F;SB=UP;scf=056F;slc=056F;Upper
-cp;0540;cf=0570;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER HO;NFKC_CF=0570;SB=UP;scf=0570;slc=0570;Upper
-cp;0541;cf=0571;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER JA;NFKC_CF=0571;SB=UP;scf=0571;slc=0571;Upper
-cp;0542;cf=0572;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER GHAD;NFKC_CF=0572;SB=UP;scf=0572;slc=0572;Upper
-cp;0543;cf=0573;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER CHEH;NFKC_CF=0573;SB=UP;scf=0573;slc=0573;Upper
-cp;0544;cf=0574;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER MEN;NFKC_CF=0574;SB=UP;scf=0574;slc=0574;Upper
-cp;0545;cf=0575;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER YI;NFKC_CF=0575;SB=UP;scf=0575;slc=0575;Upper
-cp;0546;cf=0576;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER NOW;NFKC_CF=0576;SB=UP;scf=0576;slc=0576;Upper
-cp;0547;cf=0577;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER SHA;NFKC_CF=0577;SB=UP;scf=0577;slc=0577;Upper
-cp;0548;cf=0578;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER VO;NFKC_CF=0578;SB=UP;scf=0578;slc=0578;Upper
-cp;0549;cf=0579;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER CHA;NFKC_CF=0579;SB=UP;scf=0579;slc=0579;Upper
-cp;054A;cf=057A;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER PEH;NFKC_CF=057A;SB=UP;scf=057A;slc=057A;Upper
-cp;054B;cf=057B;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER JHEH;NFKC_CF=057B;SB=UP;scf=057B;slc=057B;Upper
-cp;054C;cf=057C;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER RA;NFKC_CF=057C;SB=UP;scf=057C;slc=057C;Upper
-cp;054D;cf=057D;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER SEH;NFKC_CF=057D;SB=UP;scf=057D;slc=057D;Upper
-cp;054E;cf=057E;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER VEW;NFKC_CF=057E;SB=UP;scf=057E;slc=057E;Upper
-cp;054F;cf=057F;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER TIWN;NFKC_CF=057F;SB=UP;scf=057F;slc=057F;Upper
-cp;0550;cf=0580;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER REH;NFKC_CF=0580;SB=UP;scf=0580;slc=0580;Upper
-cp;0551;cf=0581;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER CO;NFKC_CF=0581;SB=UP;scf=0581;slc=0581;Upper
-cp;0552;cf=0582;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER YIWN;NFKC_CF=0582;SB=UP;scf=0582;slc=0582;Upper
-cp;0553;cf=0583;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER PIWR;NFKC_CF=0583;SB=UP;scf=0583;slc=0583;Upper
-cp;0554;cf=0584;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER KEH;NFKC_CF=0584;SB=UP;scf=0584;slc=0584;Upper
-cp;0555;cf=0585;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER OH;NFKC_CF=0585;SB=UP;scf=0585;slc=0585;Upper
-cp;0556;cf=0586;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER FEH;NFKC_CF=0586;SB=UP;scf=0586;slc=0586;Upper
+cp;0531;cf=0561;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER AYB;NFKC_CF=0561;NFKC_SCF=0561;SB=UP;scf=0561;slc=0561;Upper
+cp;0532;cf=0562;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER BEN;NFKC_CF=0562;NFKC_SCF=0562;SB=UP;scf=0562;slc=0562;Upper
+cp;0533;cf=0563;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER GIM;NFKC_CF=0563;NFKC_SCF=0563;SB=UP;scf=0563;slc=0563;Upper
+cp;0534;cf=0564;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER DA;NFKC_CF=0564;NFKC_SCF=0564;SB=UP;scf=0564;slc=0564;Upper
+cp;0535;cf=0565;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER ECH;NFKC_CF=0565;NFKC_SCF=0565;SB=UP;scf=0565;slc=0565;Upper
+cp;0536;cf=0566;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER ZA;NFKC_CF=0566;NFKC_SCF=0566;SB=UP;scf=0566;slc=0566;Upper
+cp;0537;cf=0567;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER EH;NFKC_CF=0567;NFKC_SCF=0567;SB=UP;scf=0567;slc=0567;Upper
+cp;0538;cf=0568;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER ET;NFKC_CF=0568;NFKC_SCF=0568;SB=UP;scf=0568;slc=0568;Upper
+cp;0539;cf=0569;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER TO;NFKC_CF=0569;NFKC_SCF=0569;SB=UP;scf=0569;slc=0569;Upper
+cp;053A;cf=056A;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER ZHE;NFKC_CF=056A;NFKC_SCF=056A;SB=UP;scf=056A;slc=056A;Upper
+cp;053B;cf=056B;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER INI;NFKC_CF=056B;NFKC_SCF=056B;SB=UP;scf=056B;slc=056B;Upper
+cp;053C;cf=056C;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER LIWN;NFKC_CF=056C;NFKC_SCF=056C;SB=UP;scf=056C;slc=056C;Upper
+cp;053D;cf=056D;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER XEH;NFKC_CF=056D;NFKC_SCF=056D;SB=UP;scf=056D;slc=056D;Upper
+cp;053E;cf=056E;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER CA;NFKC_CF=056E;NFKC_SCF=056E;SB=UP;scf=056E;slc=056E;Upper
+cp;053F;cf=056F;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER KEN;NFKC_CF=056F;NFKC_SCF=056F;SB=UP;scf=056F;slc=056F;Upper
+cp;0540;cf=0570;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER HO;NFKC_CF=0570;NFKC_SCF=0570;SB=UP;scf=0570;slc=0570;Upper
+cp;0541;cf=0571;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER JA;NFKC_CF=0571;NFKC_SCF=0571;SB=UP;scf=0571;slc=0571;Upper
+cp;0542;cf=0572;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER GHAD;NFKC_CF=0572;NFKC_SCF=0572;SB=UP;scf=0572;slc=0572;Upper
+cp;0543;cf=0573;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER CHEH;NFKC_CF=0573;NFKC_SCF=0573;SB=UP;scf=0573;slc=0573;Upper
+cp;0544;cf=0574;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER MEN;NFKC_CF=0574;NFKC_SCF=0574;SB=UP;scf=0574;slc=0574;Upper
+cp;0545;cf=0575;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER YI;NFKC_CF=0575;NFKC_SCF=0575;SB=UP;scf=0575;slc=0575;Upper
+cp;0546;cf=0576;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER NOW;NFKC_CF=0576;NFKC_SCF=0576;SB=UP;scf=0576;slc=0576;Upper
+cp;0547;cf=0577;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER SHA;NFKC_CF=0577;NFKC_SCF=0577;SB=UP;scf=0577;slc=0577;Upper
+cp;0548;cf=0578;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER VO;NFKC_CF=0578;NFKC_SCF=0578;SB=UP;scf=0578;slc=0578;Upper
+cp;0549;cf=0579;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER CHA;NFKC_CF=0579;NFKC_SCF=0579;SB=UP;scf=0579;slc=0579;Upper
+cp;054A;cf=057A;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER PEH;NFKC_CF=057A;NFKC_SCF=057A;SB=UP;scf=057A;slc=057A;Upper
+cp;054B;cf=057B;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER JHEH;NFKC_CF=057B;NFKC_SCF=057B;SB=UP;scf=057B;slc=057B;Upper
+cp;054C;cf=057C;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER RA;NFKC_CF=057C;NFKC_SCF=057C;SB=UP;scf=057C;slc=057C;Upper
+cp;054D;cf=057D;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER SEH;NFKC_CF=057D;NFKC_SCF=057D;SB=UP;scf=057D;slc=057D;Upper
+cp;054E;cf=057E;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER VEW;NFKC_CF=057E;NFKC_SCF=057E;SB=UP;scf=057E;slc=057E;Upper
+cp;054F;cf=057F;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER TIWN;NFKC_CF=057F;NFKC_SCF=057F;SB=UP;scf=057F;slc=057F;Upper
+cp;0550;cf=0580;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER REH;NFKC_CF=0580;NFKC_SCF=0580;SB=UP;scf=0580;slc=0580;Upper
+cp;0551;cf=0581;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER CO;NFKC_CF=0581;NFKC_SCF=0581;SB=UP;scf=0581;slc=0581;Upper
+cp;0552;cf=0582;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER YIWN;NFKC_CF=0582;NFKC_SCF=0582;SB=UP;scf=0582;slc=0582;Upper
+cp;0553;cf=0583;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER PIWR;NFKC_CF=0583;NFKC_SCF=0583;SB=UP;scf=0583;slc=0583;Upper
+cp;0554;cf=0584;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER KEH;NFKC_CF=0584;NFKC_SCF=0584;SB=UP;scf=0584;slc=0584;Upper
+cp;0555;cf=0585;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER OH;NFKC_CF=0585;NFKC_SCF=0585;SB=UP;scf=0585;slc=0585;Upper
+cp;0556;cf=0586;CWCF;CWKCF;CWL;gc=Lu;na=ARMENIAN CAPITAL LETTER FEH;NFKC_CF=0586;NFKC_SCF=0586;SB=UP;scf=0586;slc=0586;Upper
unassigned;0557..0558
# Modifier letters
cp;0559;-Cased;CI;-CWCM;Dia;gc=Lm;na=ARMENIAN MODIFIER LETTER LEFT HALF RING;SB=LE
@@ -2821,7 +2838,7 @@ cp;0583;CWT;CWU;Lower;na=ARMENIAN SMALL LETTER PIWR;stc=0553;suc=0553
cp;0584;CWT;CWU;Lower;na=ARMENIAN SMALL LETTER KEH;stc=0554;suc=0554
cp;0585;CWT;CWU;Lower;na=ARMENIAN SMALL LETTER OH;stc=0555;suc=0555
cp;0586;CWT;CWU;Lower;na=ARMENIAN SMALL LETTER FEH;stc=0556;suc=0556
-cp;0587;cf=0565 0582;CWCF;CWKCF;CWT;CWU;dm=0565 0582;dt=Com;lc=0587;Lower;na=ARMENIAN SMALL LIGATURE ECH YIWN;NFKC_CF=0565 0582;NFKC_QC=N;NFKD_QC=N;tc=0535 0582;uc=0535 0552
+cp;0587;cf=0565 0582;CWCF;CWKCF;CWT;CWU;dm=0565 0582;dt=Com;lc=0587;Lower;na=ARMENIAN SMALL LIGATURE ECH YIWN;NFKC_CF=0565 0582;NFKC_QC=N;NFKC_SCF=0565 0582;NFKD_QC=N;tc=0535 0582;uc=0535 0552
cp;0588;age=11.0;-CWCM;Lower;na=ARMENIAN SMALL LETTER YI WITH STROKE
# Punctuation
cp;0589;-Alpha;-Cased;-CWCM;gc=Po;-IDC;-IDS;lb=IS;na=ARMENIAN FULL STOP;SB=ST;STerm;Term;WB=MN;-XIDC;-XIDS
@@ -2833,7 +2850,7 @@ cp;058E;age=7.0;-Alpha;bc=ON;-Cased;-CWCM;gc=So;-IDC;-IDS;na=LEFT-FACING ARMENIA
# Currency symbol
cp;058F;age=6.1;-Alpha;bc=ET;-Cased;-CWCM;gc=Sc;-IDC;-IDS;lb=PR;na=ARMENIAN DRAM SIGN;SB=XX;WB=XX;-XIDC;-XIDS
-block;0590..05FF;age=1.1;Alpha;bc=NSM;blk=Hebrew;CI;gc=Mn;GCB=EX;Gr_Ext;IDC;jt=T;lb=CM;SB=EX;sc=Hebr;WB=Extend;XIDC
+block;0590..05FF;age=1.1;Alpha;bc=NSM;blk=Hebrew;CI;gc=Mn;GCB=EX;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;SB=EX;sc=Hebr;WB=Extend;XIDC
# 0590..05FF Hebrew
unassigned;0590;bc=R
# Cantillation marks
@@ -2883,69 +2900,69 @@ cp;05BA;age=5.0;ccc=19;Dia;na=HEBREW POINT HOLAM HASER FOR VAV
cp;05BB;ccc=20;Dia;na=HEBREW POINT QUBUTS
cp;05BC;ccc=21;Dia;na=HEBREW POINT DAGESH OR MAPIQ
cp;05BD;ccc=22;Dia;na=HEBREW POINT METEG
-cp;05BE;-Alpha;bc=R;-CI;Dash;gc=Pd;GCB=XX;Gr_Base;-Gr_Ext;-IDC;jt=U;lb=BA;na=HEBREW PUNCTUATION MAQAF;SB=XX;WB=XX;-XIDC
+cp;05BE;-Alpha;bc=R;-CI;Dash;gc=Pd;GCB=XX;Gr_Base;-Gr_Ext;-IDC;InCB=None;jt=U;lb=BA;na=HEBREW PUNCTUATION MAQAF;SB=XX;WB=XX;-XIDC
cp;05BF;ccc=23;Dia;na=HEBREW POINT RAFE
-cp;05C0;-Alpha;bc=R;-CI;gc=Po;GCB=XX;Gr_Base;-Gr_Ext;-IDC;jt=U;lb=AL;na=HEBREW PUNCTUATION PASEQ;SB=XX;WB=XX;-XIDC
+cp;05C0;-Alpha;bc=R;-CI;gc=Po;GCB=XX;Gr_Base;-Gr_Ext;-IDC;InCB=None;jt=U;lb=AL;na=HEBREW PUNCTUATION PASEQ;SB=XX;WB=XX;-XIDC
cp;05C1;ccc=24;Dia;na=HEBREW POINT SHIN DOT
cp;05C2;ccc=25;Dia;na=HEBREW POINT SIN DOT
-cp;05C3;-Alpha;bc=R;-CI;gc=Po;GCB=XX;Gr_Base;-Gr_Ext;-IDC;jt=U;lb=AL;na=HEBREW PUNCTUATION SOF PASUQ;SB=XX;Term;WB=XX;-XIDC
+cp;05C3;-Alpha;bc=R;-CI;gc=Po;GCB=XX;Gr_Base;-Gr_Ext;-IDC;InCB=None;jt=U;lb=AL;na=HEBREW PUNCTUATION SOF PASUQ;SB=XX;Term;WB=XX;-XIDC
# Puncta extraordinaria
cp;05C4;age=2.0;ccc=230;Dia;na=HEBREW MARK UPPER DOT
cp;05C5;age=4.1;ccc=220;na=HEBREW MARK LOWER DOT
# Points and punctuation
-cp;05C6;age=4.1;-Alpha;bc=R;-CI;gc=Po;GCB=XX;Gr_Base;-Gr_Ext;-IDC;jt=U;lb=EX;na=HEBREW PUNCTUATION NUN HAFUKHA;SB=XX;WB=XX;-XIDC
+cp;05C6;age=4.1;-Alpha;bc=R;-CI;gc=Po;GCB=XX;Gr_Base;-Gr_Ext;-IDC;InCB=None;jt=U;lb=EX;na=HEBREW PUNCTUATION NUN HAFUKHA;SB=XX;WB=XX;-XIDC
cp;05C7;age=4.1;ccc=18;na=HEBREW POINT QAMATS QATAN
unassigned;05C8..05CF;bc=R
# Based on ISO 8859-8
-cp;05D0;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jt=U;lb=HL;na=HEBREW LETTER ALEF;SB=LE;WB=HL;XIDS
-cp;05D1;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jt=U;lb=HL;na=HEBREW LETTER BET;SB=LE;WB=HL;XIDS
-cp;05D2;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jt=U;lb=HL;na=HEBREW LETTER GIMEL;SB=LE;WB=HL;XIDS
-cp;05D3;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jt=U;lb=HL;na=HEBREW LETTER DALET;SB=LE;WB=HL;XIDS
-cp;05D4;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jt=U;lb=HL;na=HEBREW LETTER HE;SB=LE;WB=HL;XIDS
-cp;05D5;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jt=U;lb=HL;na=HEBREW LETTER VAV;SB=LE;WB=HL;XIDS
-cp;05D6;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jt=U;lb=HL;na=HEBREW LETTER ZAYIN;SB=LE;WB=HL;XIDS
-cp;05D7;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jt=U;lb=HL;na=HEBREW LETTER HET;SB=LE;WB=HL;XIDS
-cp;05D8;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jt=U;lb=HL;na=HEBREW LETTER TET;SB=LE;WB=HL;XIDS
-cp;05D9;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jt=U;lb=HL;na=HEBREW LETTER YOD;SB=LE;WB=HL;XIDS
-cp;05DA;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jt=U;lb=HL;na=HEBREW LETTER FINAL KAF;SB=LE;WB=HL;XIDS
-cp;05DB;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jt=U;lb=HL;na=HEBREW LETTER KAF;SB=LE;WB=HL;XIDS
-cp;05DC;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jt=U;lb=HL;na=HEBREW LETTER LAMED;SB=LE;WB=HL;XIDS
-cp;05DD;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jt=U;lb=HL;na=HEBREW LETTER FINAL MEM;SB=LE;WB=HL;XIDS
-cp;05DE;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jt=U;lb=HL;na=HEBREW LETTER MEM;SB=LE;WB=HL;XIDS
-cp;05DF;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jt=U;lb=HL;na=HEBREW LETTER FINAL NUN;SB=LE;WB=HL;XIDS
-cp;05E0;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jt=U;lb=HL;na=HEBREW LETTER NUN;SB=LE;WB=HL;XIDS
-cp;05E1;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jt=U;lb=HL;na=HEBREW LETTER SAMEKH;SB=LE;WB=HL;XIDS
-cp;05E2;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jt=U;lb=HL;na=HEBREW LETTER AYIN;SB=LE;WB=HL;XIDS
-cp;05E3;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jt=U;lb=HL;na=HEBREW LETTER FINAL PE;SB=LE;WB=HL;XIDS
-cp;05E4;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jt=U;lb=HL;na=HEBREW LETTER PE;SB=LE;WB=HL;XIDS
-cp;05E5;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jt=U;lb=HL;na=HEBREW LETTER FINAL TSADI;SB=LE;WB=HL;XIDS
-cp;05E6;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jt=U;lb=HL;na=HEBREW LETTER TSADI;SB=LE;WB=HL;XIDS
-cp;05E7;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jt=U;lb=HL;na=HEBREW LETTER QOF;SB=LE;WB=HL;XIDS
-cp;05E8;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jt=U;lb=HL;na=HEBREW LETTER RESH;SB=LE;WB=HL;XIDS
-cp;05E9;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jt=U;lb=HL;na=HEBREW LETTER SHIN;SB=LE;WB=HL;XIDS
-cp;05EA;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jt=U;lb=HL;na=HEBREW LETTER TAV;SB=LE;WB=HL;XIDS
+cp;05D0;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER ALEF;SB=LE;WB=HL;XIDS
+cp;05D1;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER BET;SB=LE;WB=HL;XIDS
+cp;05D2;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER GIMEL;SB=LE;WB=HL;XIDS
+cp;05D3;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER DALET;SB=LE;WB=HL;XIDS
+cp;05D4;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER HE;SB=LE;WB=HL;XIDS
+cp;05D5;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER VAV;SB=LE;WB=HL;XIDS
+cp;05D6;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER ZAYIN;SB=LE;WB=HL;XIDS
+cp;05D7;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER HET;SB=LE;WB=HL;XIDS
+cp;05D8;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER TET;SB=LE;WB=HL;XIDS
+cp;05D9;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER YOD;SB=LE;WB=HL;XIDS
+cp;05DA;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER FINAL KAF;SB=LE;WB=HL;XIDS
+cp;05DB;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER KAF;SB=LE;WB=HL;XIDS
+cp;05DC;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER LAMED;SB=LE;WB=HL;XIDS
+cp;05DD;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER FINAL MEM;SB=LE;WB=HL;XIDS
+cp;05DE;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER MEM;SB=LE;WB=HL;XIDS
+cp;05DF;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER FINAL NUN;SB=LE;WB=HL;XIDS
+cp;05E0;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER NUN;SB=LE;WB=HL;XIDS
+cp;05E1;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER SAMEKH;SB=LE;WB=HL;XIDS
+cp;05E2;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER AYIN;SB=LE;WB=HL;XIDS
+cp;05E3;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER FINAL PE;SB=LE;WB=HL;XIDS
+cp;05E4;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER PE;SB=LE;WB=HL;XIDS
+cp;05E5;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER FINAL TSADI;SB=LE;WB=HL;XIDS
+cp;05E6;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER TSADI;SB=LE;WB=HL;XIDS
+cp;05E7;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER QOF;SB=LE;WB=HL;XIDS
+cp;05E8;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER RESH;SB=LE;WB=HL;XIDS
+cp;05E9;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER SHIN;SB=LE;WB=HL;XIDS
+cp;05EA;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LETTER TAV;SB=LE;WB=HL;XIDS
unassigned;05EB..05EE;bc=R
# Sign
-cp;05EF;age=11.0;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jt=U;lb=HL;na=HEBREW YOD TRIANGLE;SB=LE;WB=HL;XIDS
+cp;05EF;age=11.0;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW YOD TRIANGLE;SB=LE;WB=HL;XIDS
# Yiddish digraphs
-cp;05F0;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jt=U;lb=HL;na=HEBREW LIGATURE YIDDISH DOUBLE VAV;SB=LE;WB=HL;XIDS
-cp;05F1;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jt=U;lb=HL;na=HEBREW LIGATURE YIDDISH VAV YOD;SB=LE;WB=HL;XIDS
-cp;05F2;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jt=U;lb=HL;na=HEBREW LIGATURE YIDDISH DOUBLE YOD;SB=LE;WB=HL;XIDS
+cp;05F0;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LIGATURE YIDDISH DOUBLE VAV;SB=LE;WB=HL;XIDS
+cp;05F1;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LIGATURE YIDDISH VAV YOD;SB=LE;WB=HL;XIDS
+cp;05F2;bc=R;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=HL;na=HEBREW LIGATURE YIDDISH DOUBLE YOD;SB=LE;WB=HL;XIDS
# Additional punctuation
-cp;05F3;-Alpha;bc=R;-CI;gc=Po;GCB=XX;Gr_Base;-Gr_Ext;-IDC;jt=U;lb=AL;na=HEBREW PUNCTUATION GERESH;SB=LE;WB=LE;-XIDC
-cp;05F4;-Alpha;bc=R;gc=Po;GCB=XX;Gr_Base;-Gr_Ext;-IDC;jt=U;lb=AL;na=HEBREW PUNCTUATION GERSHAYIM;SB=XX;WB=ML;-XIDC
+cp;05F3;-Alpha;bc=R;-CI;gc=Po;GCB=XX;Gr_Base;-Gr_Ext;-IDC;InCB=None;jt=U;lb=AL;na=HEBREW PUNCTUATION GERESH;SB=LE;WB=LE;-XIDC
+cp;05F4;-Alpha;bc=R;gc=Po;GCB=XX;Gr_Base;-Gr_Ext;-IDC;InCB=None;jt=U;lb=AL;na=HEBREW PUNCTUATION GERSHAYIM;SB=XX;WB=ML;-XIDC
unassigned;05F5..05FF;bc=R
block;0600..06FF;age=1.1;Alpha;bc=AL;blk=Arabic;gc=Lo;Gr_Base;IDC;IDS;jt=D;lb=AL;SB=LE;sc=Arab;WB=LE;XIDC;XIDS
# 0600..06FF Arabic
# Subtending marks
-cp;0600;age=4.0;-Alpha;bc=AN;CI;gc=Cf;GCB=PP;-Gr_Base;-IDC;-IDS;jt=U;na=ARABIC NUMBER SIGN;PCM;SB=FO;WB=FO;-XIDC;-XIDS
-cp;0601;age=4.0;-Alpha;bc=AN;CI;gc=Cf;GCB=PP;-Gr_Base;-IDC;-IDS;jt=U;na=ARABIC SIGN SANAH;PCM;SB=FO;WB=FO;-XIDC;-XIDS
-cp;0602;age=4.0;-Alpha;bc=AN;CI;gc=Cf;GCB=PP;-Gr_Base;-IDC;-IDS;jt=U;na=ARABIC FOOTNOTE MARKER;PCM;SB=FO;WB=FO;-XIDC;-XIDS
-cp;0603;age=4.0;-Alpha;bc=AN;CI;gc=Cf;GCB=PP;-Gr_Base;-IDC;-IDS;jt=U;na=ARABIC SIGN SAFHA;PCM;SB=FO;WB=FO;-XIDC;-XIDS
-cp;0604;age=6.1;-Alpha;bc=AN;CI;gc=Cf;GCB=PP;-Gr_Base;-IDC;-IDS;jt=U;na=ARABIC SIGN SAMVAT;PCM;SB=FO;WB=FO;-XIDC;-XIDS
+cp;0600;age=4.0;-Alpha;bc=AN;CI;gc=Cf;GCB=PP;-Gr_Base;-IDC;-IDS;jt=U;lb=NU;na=ARABIC NUMBER SIGN;PCM;SB=NU;WB=NU;-XIDC;-XIDS
+cp;0601;age=4.0;-Alpha;bc=AN;CI;gc=Cf;GCB=PP;-Gr_Base;-IDC;-IDS;jt=U;lb=NU;na=ARABIC SIGN SANAH;PCM;SB=NU;WB=NU;-XIDC;-XIDS
+cp;0602;age=4.0;-Alpha;bc=AN;CI;gc=Cf;GCB=PP;-Gr_Base;-IDC;-IDS;jt=U;lb=NU;na=ARABIC FOOTNOTE MARKER;PCM;SB=NU;WB=NU;-XIDC;-XIDS
+cp;0603;age=4.0;-Alpha;bc=AN;CI;gc=Cf;GCB=PP;-Gr_Base;-IDC;-IDS;jt=U;lb=NU;na=ARABIC SIGN SAFHA;PCM;SB=NU;WB=NU;-XIDC;-XIDS
+cp;0604;age=6.1;-Alpha;bc=AN;CI;gc=Cf;GCB=PP;-Gr_Base;-IDC;-IDS;jt=U;lb=NU;na=ARABIC SIGN SAMVAT;PCM;SB=NU;WB=NU;-XIDC;-XIDS
# Supertending mark
-cp;0605;age=7.0;-Alpha;bc=AN;CI;gc=Cf;GCB=PP;-Gr_Base;-IDC;-IDS;jt=U;na=ARABIC NUMBER MARK ABOVE;PCM;SB=FO;sc=Zyyy;WB=FO;-XIDC;-XIDS
+cp;0605;age=7.0;-Alpha;bc=AN;CI;gc=Cf;GCB=PP;-Gr_Base;-IDC;-IDS;jt=U;lb=NU;na=ARABIC NUMBER MARK ABOVE;PCM;SB=NU;sc=Zyyy;WB=NU;-XIDC;-XIDS
# Radix symbols
cp;0606;age=5.1;-Alpha;bc=ON;gc=Sm;-IDC;-IDS;jt=U;Math;na=ARABIC-INDIC CUBE ROOT;SB=XX;WB=XX;-XIDC;-XIDS
cp;0607;age=5.1;-Alpha;bc=ON;gc=Sm;-IDC;-IDS;jt=U;Math;na=ARABIC-INDIC FOURTH ROOT;SB=XX;WB=XX;-XIDC;-XIDS
@@ -2963,24 +2980,24 @@ cp;060D;age=4.0;-Alpha;gc=Po;-IDC;-IDS;jt=U;lb=IS;na=ARABIC DATE SEPARATOR;SB=SC
cp;060E;age=4.0;-Alpha;bc=ON;gc=So;-IDC;-IDS;jt=U;na=ARABIC POETIC VERSE SIGN;SB=XX;WB=XX;-XIDC;-XIDS
cp;060F;age=4.0;-Alpha;bc=ON;gc=So;-IDC;-IDS;jt=U;na=ARABIC SIGN MISRA;SB=XX;WB=XX;-XIDC;-XIDS
# Honorifics
-cp;0610;age=4.0;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM;SB=EX;WB=Extend;-XIDS
-cp;0611;age=4.0;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC SIGN ALAYHE ASSALLAM;SB=EX;WB=Extend;-XIDS
-cp;0612;age=4.0;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC SIGN RAHMATULLAH ALAYHE;SB=EX;WB=Extend;-XIDS
-cp;0613;age=4.0;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC SIGN RADI ALLAHOU ANHU;SB=EX;WB=Extend;-XIDS
-cp;0614;age=4.0;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC SIGN TAKHALLUS;SB=EX;WB=Extend;-XIDS
+cp;0610;age=4.0;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM;SB=EX;WB=Extend;-XIDS
+cp;0611;age=4.0;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SIGN ALAYHE ASSALLAM;SB=EX;WB=Extend;-XIDS
+cp;0612;age=4.0;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SIGN RAHMATULLAH ALAYHE;SB=EX;WB=Extend;-XIDS
+cp;0613;age=4.0;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SIGN RADI ALLAHOU ANHU;SB=EX;WB=Extend;-XIDS
+cp;0614;age=4.0;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SIGN TAKHALLUS;SB=EX;WB=Extend;-XIDS
# Quranic annotation sign
-cp;0615;age=4.0;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC SMALL HIGH TAH;SB=EX;WB=Extend;-XIDS
+cp;0615;age=4.0;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH TAH;SB=EX;WB=Extend;-XIDS
# Extended Arabic mark
-cp;0616;age=5.1;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC SMALL HIGH LIGATURE ALEF WITH LAM WITH YEH;Name_Alias=correction=ARABIC SMALL HIGH LIGATURE ALEF WITH YEH BARREE;SB=EX;WB=Extend;-XIDS
+cp;0616;age=5.1;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH LIGATURE ALEF WITH LAM WITH YEH;Name_Alias=correction=ARABIC SMALL HIGH LIGATURE ALEF WITH YEH BARREE;SB=EX;WB=Extend;-XIDS
# Quranic annotation signs
-cp;0617;age=5.1;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC SMALL HIGH ZAIN;SB=EX;WB=Extend;-XIDS
-cp;0618;age=5.1;bc=NSM;ccc=30;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC SMALL FATHA;SB=EX;WB=Extend;-XIDS
-cp;0619;age=5.1;bc=NSM;ccc=31;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC SMALL DAMMA;SB=EX;WB=Extend;-XIDS
-cp;061A;age=5.1;bc=NSM;ccc=32;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC SMALL KASRA;SB=EX;WB=Extend;-XIDS
+cp;0617;age=5.1;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH ZAIN;SB=EX;WB=Extend;-XIDS
+cp;0618;age=5.1;bc=NSM;ccc=30;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL FATHA;SB=EX;WB=Extend;-XIDS
+cp;0619;age=5.1;bc=NSM;ccc=31;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL DAMMA;SB=EX;WB=Extend;-XIDS
+cp;061A;age=5.1;bc=NSM;ccc=32;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL KASRA;SB=EX;WB=Extend;-XIDS
# Punctuation
cp;061B;-Alpha;gc=Po;-IDC;-IDS;jt=U;lb=EX;na=ARABIC SEMICOLON;SB=XX;sc=Zyyy;scx=Arab Nkoo Rohg Syrc Thaa Yezi;Term;WB=XX;-XIDC;-XIDS
# Format character
-cp;061C;age=6.3;-Alpha;Bidi_C;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;-IDC;-IDS;jt=T;lb=CM;na=ARABIC LETTER MARK;Name_Alias=abbreviation=ALM;NFKC_CF=;SB=FO;scx=Arab Syrc Thaa;WB=FO;-XIDC;-XIDS
+cp;061C;age=6.3;-Alpha;Bidi_C;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;-IDC;-IDS;jt=T;lb=CM;na=ARABIC LETTER MARK;Name_Alias=abbreviation=ALM;NFKC_CF=;NFKC_SCF=;SB=FO;scx=Arab Syrc Thaa;WB=FO;-XIDC;-XIDS
# Punctuation
cp;061D;age=14.0;-Alpha;gc=Po;-IDC;-IDS;jt=U;lb=EX;na=ARABIC END OF TEXT MARK;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
cp;061E;age=4.1;-Alpha;gc=Po;-IDC;-IDS;jt=U;lb=EX;na=ARABIC TRIPLE DOT PUNCTUATION MARK;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
@@ -3033,29 +3050,29 @@ cp;0648;jg=Waw;jt=R;na=ARABIC LETTER WAW
cp;0649;jg=Yeh;na=ARABIC LETTER ALEF MAKSURA
cp;064A;jg=Yeh;na=ARABIC LETTER YEH
# Tashkil from ISO 8859-6
-cp;064B;bc=NSM;ccc=27;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC FATHATAN;SB=EX;sc=Zinh;scx=Arab Syrc;WB=Extend;-XIDS
-cp;064C;bc=NSM;ccc=28;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC DAMMATAN;SB=EX;sc=Zinh;scx=Arab Syrc;WB=Extend;-XIDS
-cp;064D;bc=NSM;ccc=29;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC KASRATAN;SB=EX;sc=Zinh;scx=Arab Syrc;WB=Extend;-XIDS
-cp;064E;bc=NSM;ccc=30;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC FATHA;SB=EX;sc=Zinh;scx=Arab Syrc;WB=Extend;-XIDS
-cp;064F;bc=NSM;ccc=31;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC DAMMA;SB=EX;sc=Zinh;scx=Arab Syrc;WB=Extend;-XIDS
-cp;0650;bc=NSM;ccc=32;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC KASRA;SB=EX;sc=Zinh;scx=Arab Syrc;WB=Extend;-XIDS
-cp;0651;bc=NSM;ccc=33;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC SHADDA;SB=EX;sc=Zinh;scx=Arab Syrc;WB=Extend;-XIDS
-cp;0652;bc=NSM;ccc=34;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC SUKUN;SB=EX;sc=Zinh;scx=Arab Syrc;WB=Extend;-XIDS
+cp;064B;bc=NSM;ccc=27;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC FATHATAN;SB=EX;sc=Zinh;scx=Arab Syrc;WB=Extend;-XIDS
+cp;064C;bc=NSM;ccc=28;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC DAMMATAN;SB=EX;sc=Zinh;scx=Arab Syrc;WB=Extend;-XIDS
+cp;064D;bc=NSM;ccc=29;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC KASRATAN;SB=EX;sc=Zinh;scx=Arab Syrc;WB=Extend;-XIDS
+cp;064E;bc=NSM;ccc=30;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC FATHA;SB=EX;sc=Zinh;scx=Arab Syrc;WB=Extend;-XIDS
+cp;064F;bc=NSM;ccc=31;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC DAMMA;SB=EX;sc=Zinh;scx=Arab Syrc;WB=Extend;-XIDS
+cp;0650;bc=NSM;ccc=32;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC KASRA;SB=EX;sc=Zinh;scx=Arab Syrc;WB=Extend;-XIDS
+cp;0651;bc=NSM;ccc=33;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SHADDA;SB=EX;sc=Zinh;scx=Arab Syrc;WB=Extend;-XIDS
+cp;0652;bc=NSM;ccc=34;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SUKUN;SB=EX;sc=Zinh;scx=Arab Syrc;WB=Extend;-XIDS
# Combining maddah and hamza
-cp;0653;age=3.0;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC MADDAH ABOVE;NFC_QC=M;NFKC_QC=M;SB=EX;sc=Zinh;scx=Arab Syrc;WB=Extend;-XIDS
-cp;0654;age=3.0;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC HAMZA ABOVE;NFC_QC=M;NFKC_QC=M;SB=EX;sc=Zinh;scx=Arab Syrc;WB=Extend;-XIDS
-cp;0655;age=3.0;bc=NSM;ccc=220;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC HAMZA BELOW;NFC_QC=M;NFKC_QC=M;SB=EX;sc=Zinh;scx=Arab Syrc;WB=Extend;-XIDS
+cp;0653;age=3.0;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC MADDAH ABOVE;NFC_QC=M;NFKC_QC=M;SB=EX;sc=Zinh;scx=Arab Syrc;WB=Extend;-XIDS
+cp;0654;age=3.0;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC HAMZA ABOVE;NFC_QC=M;NFKC_QC=M;SB=EX;sc=Zinh;scx=Arab Syrc;WB=Extend;-XIDS
+cp;0655;age=3.0;bc=NSM;ccc=220;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC HAMZA BELOW;NFC_QC=M;NFKC_QC=M;SB=EX;sc=Zinh;scx=Arab Syrc;WB=Extend;-XIDS
# Other combining marks
-cp;0656;age=4.0;bc=NSM;ccc=220;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC SUBSCRIPT ALEF;SB=EX;WB=Extend;-XIDS
-cp;0657;age=4.0;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC INVERTED DAMMA;SB=EX;WB=Extend;-XIDS
-cp;0658;age=4.0;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC MARK NOON GHUNNA;SB=EX;WB=Extend;-XIDS
-cp;0659;age=4.1;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC ZWARAKAY;SB=EX;WB=Extend;-XIDS
-cp;065A;age=4.1;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC VOWEL SIGN SMALL V ABOVE;SB=EX;WB=Extend;-XIDS
-cp;065B;age=4.1;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC VOWEL SIGN INVERTED SMALL V ABOVE;SB=EX;WB=Extend;-XIDS
-cp;065C;age=4.1;bc=NSM;ccc=220;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC VOWEL SIGN DOT BELOW;SB=EX;WB=Extend;-XIDS
-cp;065D;age=4.1;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC REVERSED DAMMA;SB=EX;WB=Extend;-XIDS
-cp;065E;age=4.1;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC FATHA WITH TWO DOTS;SB=EX;WB=Extend;-XIDS
-cp;065F;age=6.0;bc=NSM;ccc=220;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC WAVY HAMZA BELOW;SB=EX;WB=Extend;-XIDS
+cp;0656;age=4.0;bc=NSM;ccc=220;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SUBSCRIPT ALEF;SB=EX;WB=Extend;-XIDS
+cp;0657;age=4.0;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC INVERTED DAMMA;SB=EX;WB=Extend;-XIDS
+cp;0658;age=4.0;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC MARK NOON GHUNNA;SB=EX;WB=Extend;-XIDS
+cp;0659;age=4.1;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC ZWARAKAY;SB=EX;WB=Extend;-XIDS
+cp;065A;age=4.1;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC VOWEL SIGN SMALL V ABOVE;SB=EX;WB=Extend;-XIDS
+cp;065B;age=4.1;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC VOWEL SIGN INVERTED SMALL V ABOVE;SB=EX;WB=Extend;-XIDS
+cp;065C;age=4.1;bc=NSM;ccc=220;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC VOWEL SIGN DOT BELOW;SB=EX;WB=Extend;-XIDS
+cp;065D;age=4.1;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC REVERSED DAMMA;SB=EX;WB=Extend;-XIDS
+cp;065E;age=4.1;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC FATHA WITH TWO DOTS;SB=EX;WB=Extend;-XIDS
+cp;065F;age=6.0;bc=NSM;ccc=220;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC WAVY HAMZA BELOW;SB=EX;WB=Extend;-XIDS
# Arabic-Indic digits
cp;0660;-Alpha;bc=AN;gc=Nd;-IDS;jt=U;lb=NU;na=ARABIC-INDIC DIGIT ZERO;nt=De;nv=0;SB=NU;scx=Arab Thaa Yezi;WB=NU;-XIDS
cp;0661;-Alpha;bc=AN;gc=Nd;-IDS;jt=U;lb=NU;na=ARABIC-INDIC DIGIT ONE;nt=De;nv=1;SB=NU;scx=Arab Thaa Yezi;WB=NU;-XIDS
@@ -3076,7 +3093,7 @@ cp;066D;-Alpha;gc=Po;-IDC;-IDS;jt=U;na=ARABIC FIVE POINTED STAR;SB=XX;WB=XX;-XID
cp;066E;age=3.2;jg=Beh;na=ARABIC LETTER DOTLESS BEH
cp;066F;age=3.2;jg=Qaf;na=ARABIC LETTER DOTLESS QAF
# Tashkil
-cp;0670;bc=NSM;ccc=35;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC LETTER SUPERSCRIPT ALEF;SB=EX;sc=Zinh;scx=Arab Syrc;WB=Extend;-XIDS
+cp;0670;bc=NSM;ccc=35;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC LETTER SUPERSCRIPT ALEF;SB=EX;sc=Zinh;scx=Arab Syrc;WB=Extend;-XIDS
# Extended Arabic letters
cp;0671;jg=Alef;jt=R;na=ARABIC LETTER ALEF WASLA
cp;0672;jg=Alef;jt=R;na=ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE
@@ -3085,10 +3102,10 @@ cp;0673;Dep;jg=Alef;jt=R;na=ARABIC LETTER ALEF WITH WAVY HAMZA BELOW
# High hamza
cp;0674;jt=U;na=ARABIC LETTER HIGH HAMZA
# Digraphic letters for Kazakh
-cp;0675;CWKCF;dm=0627 0674;dt=Com;jg=Alef;jt=R;na=ARABIC LETTER HIGH HAMZA ALEF;NFKC_CF=0627 0674;NFKC_QC=N;NFKD_QC=N
-cp;0676;CWKCF;dm=0648 0674;dt=Com;jg=Waw;jt=R;na=ARABIC LETTER HIGH HAMZA WAW;NFKC_CF=0648 0674;NFKC_QC=N;NFKD_QC=N
-cp;0677;CWKCF;dm=06C7 0674;dt=Com;jg=Waw;jt=R;na=ARABIC LETTER U WITH HAMZA ABOVE;NFKC_CF=06C7 0674;NFKC_QC=N;NFKD_QC=N
-cp;0678;CWKCF;dm=064A 0674;dt=Com;jg=Yeh;na=ARABIC LETTER HIGH HAMZA YEH;NFKC_CF=064A 0674;NFKC_QC=N;NFKD_QC=N
+cp;0675;CWKCF;dm=0627 0674;dt=Com;jg=Alef;jt=R;na=ARABIC LETTER HIGH HAMZA ALEF;NFKC_CF=0627 0674;NFKC_QC=N;NFKC_SCF=0627 0674;NFKD_QC=N
+cp;0676;CWKCF;dm=0648 0674;dt=Com;jg=Waw;jt=R;na=ARABIC LETTER HIGH HAMZA WAW;NFKC_CF=0648 0674;NFKC_QC=N;NFKC_SCF=0648 0674;NFKD_QC=N
+cp;0677;CWKCF;dm=06C7 0674;dt=Com;jg=Waw;jt=R;na=ARABIC LETTER U WITH HAMZA ABOVE;NFKC_CF=06C7 0674;NFKC_QC=N;NFKC_SCF=06C7 0674;NFKD_QC=N
+cp;0678;CWKCF;dm=064A 0674;dt=Com;jg=Yeh;na=ARABIC LETTER HIGH HAMZA YEH;NFKC_CF=064A 0674;NFKC_QC=N;NFKC_SCF=064A 0674;NFKD_QC=N
# Extended Arabic letters
cp;0679;jg=Beh;na=ARABIC LETTER TTEH
cp;067A;jg=Beh;na=ARABIC LETTER TTEHEH
@@ -3186,30 +3203,30 @@ cp;06D4;-Alpha;gc=Po;-IDC;-IDS;jt=U;lb=EX;na=ARABIC FULL STOP;SB=ST;scx=Arab Roh
# Extended Arabic letter
cp;06D5;jg=Teh_Marbuta;jt=R;na=ARABIC LETTER AE
# Quranic annotation signs
-cp;06D6;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA;SB=EX;WB=Extend;-XIDS
-cp;06D7;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA;SB=EX;WB=Extend;-XIDS
-cp;06D8;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC SMALL HIGH MEEM INITIAL FORM;SB=EX;WB=Extend;-XIDS
-cp;06D9;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC SMALL HIGH LAM ALEF;SB=EX;WB=Extend;-XIDS
-cp;06DA;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC SMALL HIGH JEEM;SB=EX;WB=Extend;-XIDS
-cp;06DB;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC SMALL HIGH THREE DOTS;SB=EX;WB=Extend;-XIDS
-cp;06DC;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC SMALL HIGH SEEN;SB=EX;WB=Extend;-XIDS
-cp;06DD;-Alpha;bc=AN;CI;gc=Cf;GCB=PP;-Gr_Base;-IDC;-IDS;jt=U;na=ARABIC END OF AYAH;PCM;SB=FO;sc=Zyyy;WB=FO;-XIDC;-XIDS
+cp;06D6;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA;SB=EX;WB=Extend;-XIDS
+cp;06D7;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA;SB=EX;WB=Extend;-XIDS
+cp;06D8;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH MEEM INITIAL FORM;SB=EX;WB=Extend;-XIDS
+cp;06D9;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH LAM ALEF;SB=EX;WB=Extend;-XIDS
+cp;06DA;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH JEEM;SB=EX;WB=Extend;-XIDS
+cp;06DB;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH THREE DOTS;SB=EX;WB=Extend;-XIDS
+cp;06DC;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH SEEN;SB=EX;WB=Extend;-XIDS
+cp;06DD;-Alpha;bc=AN;CI;gc=Cf;GCB=PP;-Gr_Base;-IDC;-IDS;jt=U;lb=NU;na=ARABIC END OF AYAH;PCM;SB=NU;sc=Zyyy;WB=NU;-XIDC;-XIDS
cp;06DE;-Alpha;bc=ON;gc=So;-IDC;-IDS;jt=U;na=ARABIC START OF RUB EL HIZB;SB=XX;WB=XX;-XIDC;-XIDS
-cp;06DF;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC SMALL HIGH ROUNDED ZERO;SB=EX;WB=Extend;-XIDS
-cp;06E0;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO;SB=EX;WB=Extend;-XIDS
-cp;06E1;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC SMALL HIGH DOTLESS HEAD OF KHAH;SB=EX;WB=Extend;-XIDS
-cp;06E2;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC SMALL HIGH MEEM ISOLATED FORM;SB=EX;WB=Extend;-XIDS
-cp;06E3;bc=NSM;ccc=220;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC SMALL LOW SEEN;SB=EX;WB=Extend;-XIDS
-cp;06E4;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC SMALL HIGH MADDA;SB=EX;WB=Extend;-XIDS
+cp;06DF;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH ROUNDED ZERO;SB=EX;WB=Extend;-XIDS
+cp;06E0;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO;SB=EX;WB=Extend;-XIDS
+cp;06E1;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH DOTLESS HEAD OF KHAH;SB=EX;WB=Extend;-XIDS
+cp;06E2;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH MEEM ISOLATED FORM;SB=EX;WB=Extend;-XIDS
+cp;06E3;bc=NSM;ccc=220;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL LOW SEEN;SB=EX;WB=Extend;-XIDS
+cp;06E4;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH MADDA;SB=EX;WB=Extend;-XIDS
cp;06E5;CI;Dia;gc=Lm;jt=U;na=ARABIC SMALL WAW
cp;06E6;CI;Dia;gc=Lm;jt=U;na=ARABIC SMALL YEH
-cp;06E7;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC SMALL HIGH YEH;SB=EX;WB=Extend;-XIDS
-cp;06E8;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC SMALL HIGH NOON;SB=EX;WB=Extend;-XIDS
+cp;06E7;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH YEH;SB=EX;WB=Extend;-XIDS
+cp;06E8;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH NOON;SB=EX;WB=Extend;-XIDS
cp;06E9;-Alpha;bc=ON;gc=So;-IDC;-IDS;jt=U;na=ARABIC PLACE OF SAJDAH;SB=XX;WB=XX;-XIDC;-XIDS
-cp;06EA;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC EMPTY CENTRE LOW STOP;SB=EX;WB=Extend;-XIDS
-cp;06EB;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC EMPTY CENTRE HIGH STOP;SB=EX;WB=Extend;-XIDS
-cp;06EC;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE;SB=EX;WB=Extend;-XIDS
-cp;06ED;bc=NSM;ccc=220;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC SMALL LOW MEEM;SB=EX;WB=Extend;-XIDS
+cp;06EA;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC EMPTY CENTRE LOW STOP;SB=EX;WB=Extend;-XIDS
+cp;06EB;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC EMPTY CENTRE HIGH STOP;SB=EX;WB=Extend;-XIDS
+cp;06EC;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE;SB=EX;WB=Extend;-XIDS
+cp;06ED;bc=NSM;ccc=220;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL LOW MEEM;SB=EX;WB=Extend;-XIDS
# Extended Arabic letters for Parkari
cp;06EE;age=4.0;jg=Dal;jt=R;na=ARABIC LETTER DAL WITH INVERTED V
cp;06EF;age=4.0;jg=Reh;jt=R;na=ARABIC LETTER REH WITH INVERTED V
@@ -3253,10 +3270,10 @@ cp;070C;-Alpha;gc=Po;-IDC;jt=U;na=SYRIAC HARKLEAN METOBELUS;SB=XX;Term;WB=XX;-XI
cp;070D;-Alpha;gc=Po;-IDC;jt=U;na=SYRIAC HARKLEAN ASTERISCUS;SB=XX;WB=XX;-XIDC
unassigned;070E;bc=AL
# Syriac format control character
-cp;070F;-Alpha;CI;gc=Cf;GCB=PP;-Gr_Base;-IDC;na=SYRIAC ABBREVIATION MARK;PCM;SB=FO;WB=FO;-XIDC
+cp;070F;-Alpha;CI;gc=Cf;GCB=PP;-Gr_Base;-IDC;na=SYRIAC ABBREVIATION MARK;PCM;SB=FO;WB=LE;-XIDC
# Syriac letters
cp;0710;IDS;jg=Alaph;jt=R;na=SYRIAC LETTER ALAPH;WB=LE;XIDS
-cp;0711;bc=NSM;ccc=36;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;lb=CM;na=SYRIAC LETTER SUPERSCRIPT ALAPH;SB=EX
+cp;0711;bc=NSM;ccc=36;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;lb=CM;na=SYRIAC LETTER SUPERSCRIPT ALAPH;SB=EX
cp;0712;IDS;jg=Beth;jt=D;na=SYRIAC LETTER BETH;WB=LE;XIDS
cp;0713;IDS;jg=Gamal;jt=D;na=SYRIAC LETTER GAMAL;WB=LE;XIDS
cp;0714;IDS;jg=Gamal;jt=D;na=SYRIAC LETTER GAMAL GARSHUNI;WB=LE;XIDS
@@ -3289,34 +3306,34 @@ cp;072D;age=4.0;IDS;jg=Beth;jt=D;na=SYRIAC LETTER PERSIAN BHETH;WB=LE;XIDS
cp;072E;age=4.0;IDS;jg=Gamal;jt=D;na=SYRIAC LETTER PERSIAN GHAMAL;WB=LE;XIDS
cp;072F;age=4.0;IDS;jg=Dalath_Rish;jt=R;na=SYRIAC LETTER PERSIAN DHALATH;WB=LE;XIDS
# Syriac points (vowels)
-cp;0730;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;lb=CM;na=SYRIAC PTHAHA ABOVE;SB=EX
-cp;0731;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;lb=CM;na=SYRIAC PTHAHA BELOW;SB=EX
-cp;0732;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;lb=CM;na=SYRIAC PTHAHA DOTTED;SB=EX
-cp;0733;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;lb=CM;na=SYRIAC ZQAPHA ABOVE;SB=EX
-cp;0734;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;lb=CM;na=SYRIAC ZQAPHA BELOW;SB=EX
-cp;0735;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;lb=CM;na=SYRIAC ZQAPHA DOTTED;SB=EX
-cp;0736;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;lb=CM;na=SYRIAC RBASA ABOVE;SB=EX
-cp;0737;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;lb=CM;na=SYRIAC RBASA BELOW;SB=EX
-cp;0738;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;lb=CM;na=SYRIAC DOTTED ZLAMA HORIZONTAL;SB=EX
-cp;0739;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;lb=CM;na=SYRIAC DOTTED ZLAMA ANGULAR;SB=EX
-cp;073A;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;lb=CM;na=SYRIAC HBASA ABOVE;SB=EX
-cp;073B;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;lb=CM;na=SYRIAC HBASA BELOW;SB=EX
-cp;073C;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;lb=CM;na=SYRIAC HBASA-ESASA DOTTED;SB=EX
-cp;073D;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;lb=CM;na=SYRIAC ESASA ABOVE;SB=EX
-cp;073E;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;lb=CM;na=SYRIAC ESASA BELOW;SB=EX
-cp;073F;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;lb=CM;na=SYRIAC RWAHA;SB=EX
+cp;0730;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;lb=CM;na=SYRIAC PTHAHA ABOVE;SB=EX
+cp;0731;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;lb=CM;na=SYRIAC PTHAHA BELOW;SB=EX
+cp;0732;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;lb=CM;na=SYRIAC PTHAHA DOTTED;SB=EX
+cp;0733;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;lb=CM;na=SYRIAC ZQAPHA ABOVE;SB=EX
+cp;0734;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;lb=CM;na=SYRIAC ZQAPHA BELOW;SB=EX
+cp;0735;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;lb=CM;na=SYRIAC ZQAPHA DOTTED;SB=EX
+cp;0736;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;lb=CM;na=SYRIAC RBASA ABOVE;SB=EX
+cp;0737;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;lb=CM;na=SYRIAC RBASA BELOW;SB=EX
+cp;0738;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;lb=CM;na=SYRIAC DOTTED ZLAMA HORIZONTAL;SB=EX
+cp;0739;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;lb=CM;na=SYRIAC DOTTED ZLAMA ANGULAR;SB=EX
+cp;073A;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;lb=CM;na=SYRIAC HBASA ABOVE;SB=EX
+cp;073B;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;lb=CM;na=SYRIAC HBASA BELOW;SB=EX
+cp;073C;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;lb=CM;na=SYRIAC HBASA-ESASA DOTTED;SB=EX
+cp;073D;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;lb=CM;na=SYRIAC ESASA ABOVE;SB=EX
+cp;073E;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;lb=CM;na=SYRIAC ESASA BELOW;SB=EX
+cp;073F;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;lb=CM;na=SYRIAC RWAHA;SB=EX
# Syriac marks
-cp;0740;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;lb=CM;na=SYRIAC FEMININE DOT;SB=EX
-cp;0741;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;lb=CM;na=SYRIAC QUSHSHAYA;SB=EX
-cp;0742;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;lb=CM;na=SYRIAC RUKKAKHA;SB=EX
-cp;0743;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;lb=CM;na=SYRIAC TWO VERTICAL DOTS ABOVE;SB=EX
-cp;0744;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;lb=CM;na=SYRIAC TWO VERTICAL DOTS BELOW;SB=EX
-cp;0745;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;lb=CM;na=SYRIAC THREE DOTS ABOVE;SB=EX
-cp;0746;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;lb=CM;na=SYRIAC THREE DOTS BELOW;SB=EX
-cp;0747;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;lb=CM;na=SYRIAC OBLIQUE LINE ABOVE;SB=EX
-cp;0748;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;lb=CM;na=SYRIAC OBLIQUE LINE BELOW;SB=EX
-cp;0749;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;lb=CM;na=SYRIAC MUSIC;SB=EX
-cp;074A;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;lb=CM;na=SYRIAC BARREKH;SB=EX
+cp;0740;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;lb=CM;na=SYRIAC FEMININE DOT;SB=EX
+cp;0741;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;lb=CM;na=SYRIAC QUSHSHAYA;SB=EX
+cp;0742;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;lb=CM;na=SYRIAC RUKKAKHA;SB=EX
+cp;0743;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;lb=CM;na=SYRIAC TWO VERTICAL DOTS ABOVE;SB=EX
+cp;0744;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;lb=CM;na=SYRIAC TWO VERTICAL DOTS BELOW;SB=EX
+cp;0745;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;lb=CM;na=SYRIAC THREE DOTS ABOVE;SB=EX
+cp;0746;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;lb=CM;na=SYRIAC THREE DOTS BELOW;SB=EX
+cp;0747;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;lb=CM;na=SYRIAC OBLIQUE LINE ABOVE;SB=EX
+cp;0748;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;lb=CM;na=SYRIAC OBLIQUE LINE BELOW;SB=EX
+cp;0749;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;lb=CM;na=SYRIAC MUSIC;SB=EX
+cp;074A;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;lb=CM;na=SYRIAC BARREKH;SB=EX
unassigned;074B..074C;bc=AL
# Sogdian letters
cp;074D;age=4.0;IDS;jg=Zhain;jt=R;na=SYRIAC LETTER SOGDIAN ZHAIN;WB=LE;XIDS
@@ -3486,16 +3503,16 @@ cp;07E8;na=NKO LETTER JONA JA
cp;07E9;na=NKO LETTER JONA CHA
cp;07EA;na=NKO LETTER JONA RA
# Tone marks
-cp;07EB;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=NKO COMBINING SHORT HIGH TONE;SB=EX;WB=Extend;-XIDS
-cp;07EC;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=NKO COMBINING SHORT LOW TONE;SB=EX;WB=Extend;-XIDS
-cp;07ED;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=NKO COMBINING SHORT RISING TONE;SB=EX;WB=Extend;-XIDS
-cp;07EE;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=NKO COMBINING LONG DESCENDING TONE;SB=EX;WB=Extend;-XIDS
-cp;07EF;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=NKO COMBINING LONG HIGH TONE;SB=EX;WB=Extend;-XIDS
-cp;07F0;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=NKO COMBINING LONG LOW TONE;SB=EX;WB=Extend;-XIDS
-cp;07F1;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=NKO COMBINING LONG RISING TONE;SB=EX;WB=Extend;-XIDS
+cp;07EB;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=NKO COMBINING SHORT HIGH TONE;SB=EX;WB=Extend;-XIDS
+cp;07EC;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=NKO COMBINING SHORT LOW TONE;SB=EX;WB=Extend;-XIDS
+cp;07ED;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=NKO COMBINING SHORT RISING TONE;SB=EX;WB=Extend;-XIDS
+cp;07EE;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=NKO COMBINING LONG DESCENDING TONE;SB=EX;WB=Extend;-XIDS
+cp;07EF;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=NKO COMBINING LONG HIGH TONE;SB=EX;WB=Extend;-XIDS
+cp;07F0;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=NKO COMBINING LONG LOW TONE;SB=EX;WB=Extend;-XIDS
+cp;07F1;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=NKO COMBINING LONG RISING TONE;SB=EX;WB=Extend;-XIDS
# Other diacritics
-cp;07F2;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=NKO COMBINING NASALIZATION MARK;SB=EX;WB=Extend;-XIDS
-cp;07F3;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=NKO COMBINING DOUBLE DOT ABOVE;SB=EX;WB=Extend;-XIDS
+cp;07F2;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=NKO COMBINING NASALIZATION MARK;SB=EX;WB=Extend;-XIDS
+cp;07F3;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=NKO COMBINING DOUBLE DOT ABOVE;SB=EX;WB=Extend;-XIDS
# Tonal apostrophes
cp;07F4;CI;Dia;gc=Lm;jt=U;na=NKO HIGH TONE APOSTROPHE
cp;07F5;CI;Dia;gc=Lm;jt=U;na=NKO LOW TONE APOSTROPHE
@@ -3509,7 +3526,7 @@ cp;07F9;-Alpha;bc=ON;gc=Po;-IDC;-IDS;jt=U;lb=EX;na=NKO EXCLAMATION MARK;SB=ST;ST
cp;07FA;CI;Ext;gc=Lm;jt=C;na=NKO LAJANYALAN
unassigned;07FB..07FC;bc=R
# Abbreviation sign
-cp;07FD;age=11.0;-Alpha;bc=NSM;ccc=220;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=NKO DANTAYALAN;SB=EX;WB=Extend;-XIDS
+cp;07FD;age=11.0;-Alpha;bc=NSM;ccc=220;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=NKO DANTAYALAN;SB=EX;WB=Extend;-XIDS
# Currency symbols
cp;07FE;age=11.0;-Alpha;gc=Sc;-IDC;-IDS;jt=U;lb=PR;na=NKO DOROME SIGN;SB=XX;WB=XX;-XIDC;-XIDS
cp;07FF;age=11.0;-Alpha;gc=Sc;-IDC;-IDS;jt=U;lb=PR;na=NKO TAMAN SIGN;SB=XX;WB=XX;-XIDC;-XIDS
@@ -3540,32 +3557,32 @@ cp;0813;IDS;na=SAMARITAN LETTER RISH;WB=LE;XIDS
cp;0814;IDS;na=SAMARITAN LETTER SHAN;WB=LE;XIDS
cp;0815;IDS;na=SAMARITAN LETTER TAAF;WB=LE;XIDS
# Consonant modifiers
-cp;0816;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;jt=T;lb=CM;na=SAMARITAN MARK IN;SB=EX
-cp;0817;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;jt=T;lb=CM;na=SAMARITAN MARK IN-ALAF;SB=EX
-cp;0818;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;jt=T;lb=CM;na=SAMARITAN MARK OCCLUSION;SB=EX
-cp;0819;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;jt=T;lb=CM;na=SAMARITAN MARK DAGESH;SB=EX
+cp;0816;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;jt=T;lb=CM;na=SAMARITAN MARK IN;SB=EX
+cp;0817;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;jt=T;lb=CM;na=SAMARITAN MARK IN-ALAF;SB=EX
+cp;0818;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;jt=T;lb=CM;na=SAMARITAN MARK OCCLUSION;SB=EX
+cp;0819;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;jt=T;lb=CM;na=SAMARITAN MARK DAGESH;SB=EX
cp;081A;CI;gc=Lm;IDS;na=SAMARITAN MODIFIER LETTER EPENTHETIC YUT;WB=LE;XIDS
-cp;081B;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;jt=T;lb=CM;na=SAMARITAN MARK EPENTHETIC YUT;SB=EX
+cp;081B;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;jt=T;lb=CM;na=SAMARITAN MARK EPENTHETIC YUT;SB=EX
# Vowel signs
-cp;081C;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;jt=T;lb=CM;na=SAMARITAN VOWEL SIGN LONG E;SB=EX
-cp;081D;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;jt=T;lb=CM;na=SAMARITAN VOWEL SIGN E;SB=EX
-cp;081E;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;jt=T;lb=CM;na=SAMARITAN VOWEL SIGN OVERLONG AA;SB=EX
-cp;081F;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;jt=T;lb=CM;na=SAMARITAN VOWEL SIGN LONG AA;SB=EX
-cp;0820;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;jt=T;lb=CM;na=SAMARITAN VOWEL SIGN AA;SB=EX
-cp;0821;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;jt=T;lb=CM;na=SAMARITAN VOWEL SIGN OVERLONG A;SB=EX
-cp;0822;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;jt=T;lb=CM;na=SAMARITAN VOWEL SIGN LONG A;SB=EX
-cp;0823;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;jt=T;lb=CM;na=SAMARITAN VOWEL SIGN A;SB=EX
+cp;081C;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;jt=T;lb=CM;na=SAMARITAN VOWEL SIGN LONG E;SB=EX
+cp;081D;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;jt=T;lb=CM;na=SAMARITAN VOWEL SIGN E;SB=EX
+cp;081E;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;jt=T;lb=CM;na=SAMARITAN VOWEL SIGN OVERLONG AA;SB=EX
+cp;081F;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;jt=T;lb=CM;na=SAMARITAN VOWEL SIGN LONG AA;SB=EX
+cp;0820;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;jt=T;lb=CM;na=SAMARITAN VOWEL SIGN AA;SB=EX
+cp;0821;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;jt=T;lb=CM;na=SAMARITAN VOWEL SIGN OVERLONG A;SB=EX
+cp;0822;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;jt=T;lb=CM;na=SAMARITAN VOWEL SIGN LONG A;SB=EX
+cp;0823;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;jt=T;lb=CM;na=SAMARITAN VOWEL SIGN A;SB=EX
cp;0824;CI;gc=Lm;IDS;na=SAMARITAN MODIFIER LETTER SHORT A;WB=LE;XIDS
-cp;0825;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;jt=T;lb=CM;na=SAMARITAN VOWEL SIGN SHORT A;SB=EX
-cp;0826;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;jt=T;lb=CM;na=SAMARITAN VOWEL SIGN LONG U;SB=EX
-cp;0827;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;jt=T;lb=CM;na=SAMARITAN VOWEL SIGN U;SB=EX
+cp;0825;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;jt=T;lb=CM;na=SAMARITAN VOWEL SIGN SHORT A;SB=EX
+cp;0826;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;jt=T;lb=CM;na=SAMARITAN VOWEL SIGN LONG U;SB=EX
+cp;0827;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;jt=T;lb=CM;na=SAMARITAN VOWEL SIGN U;SB=EX
cp;0828;CI;gc=Lm;IDS;na=SAMARITAN MODIFIER LETTER I;WB=LE;XIDS
-cp;0829;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;jt=T;lb=CM;na=SAMARITAN VOWEL SIGN LONG I;SB=EX
-cp;082A;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;jt=T;lb=CM;na=SAMARITAN VOWEL SIGN I;SB=EX
-cp;082B;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;jt=T;lb=CM;na=SAMARITAN VOWEL SIGN O;SB=EX
-cp;082C;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;jt=T;lb=CM;na=SAMARITAN VOWEL SIGN SUKUN;SB=EX
+cp;0829;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;jt=T;lb=CM;na=SAMARITAN VOWEL SIGN LONG I;SB=EX
+cp;082A;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;jt=T;lb=CM;na=SAMARITAN VOWEL SIGN I;SB=EX
+cp;082B;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;jt=T;lb=CM;na=SAMARITAN VOWEL SIGN O;SB=EX
+cp;082C;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;jt=T;lb=CM;na=SAMARITAN VOWEL SIGN SUKUN;SB=EX
# Variant reading sign
-cp;082D;-Alpha;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;jt=T;lb=CM;na=SAMARITAN MARK NEQUDAA;SB=EX
+cp;082D;-Alpha;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;jt=T;lb=CM;na=SAMARITAN MARK NEQUDAA;SB=EX
unassigned;082E..082F;bc=R
# Punctuation
cp;0830;-Alpha;gc=Po;-IDC;na=SAMARITAN PUNCTUATION NEQUDAA;SB=XX;Term;WB=XX;-XIDC
@@ -3614,9 +3631,9 @@ cp;0856;jt=R;na=MANDAIC LETTER DUSHENNA
cp;0857;jt=R;na=MANDAIC LETTER KAD
cp;0858;jt=R;na=MANDAIC LETTER AIN
# Diacritics
-cp;0859;-Alpha;bc=NSM;ccc=220;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=MANDAIC AFFRICATION MARK;SB=EX;WB=Extend;-XIDS
-cp;085A;-Alpha;bc=NSM;ccc=220;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=MANDAIC VOCALIZATION MARK;SB=EX;WB=Extend;-XIDS
-cp;085B;-Alpha;bc=NSM;ccc=220;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=MANDAIC GEMINATION MARK;SB=EX;WB=Extend;-XIDS
+cp;0859;-Alpha;bc=NSM;ccc=220;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=MANDAIC AFFRICATION MARK;SB=EX;WB=Extend;-XIDS
+cp;085A;-Alpha;bc=NSM;ccc=220;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=MANDAIC VOCALIZATION MARK;SB=EX;WB=Extend;-XIDS
+cp;085B;-Alpha;bc=NSM;ccc=220;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=MANDAIC GEMINATION MARK;SB=EX;WB=Extend;-XIDS
unassigned;085C..085D;bc=R
# Punctuation
cp;085E;-Alpha;gc=Po;-IDC;-IDS;jt=U;na=MANDAIC PUNCTUATION;SB=XX;Term;WB=XX;-XIDC;-XIDS
@@ -3677,76 +3694,76 @@ cp;088D;jg=Gaf;jt=D;na=ARABIC LETTER KEHEH WITH TWO DOTS VERTICALLY BELOW
cp;088E;jg=Vertical_Tail;na=ARABIC VERTICAL TAIL
unassigned;088F;bc=AL
# Supertending currency symbols
-cp;0890;-Alpha;bc=AN;CI;gc=Cf;GCB=PP;-Gr_Base;-IDC;-IDS;jt=U;na=ARABIC POUND MARK ABOVE;PCM;SB=FO;WB=FO;-XIDC;-XIDS
-cp;0891;-Alpha;bc=AN;CI;gc=Cf;GCB=PP;-Gr_Base;-IDC;-IDS;jt=U;na=ARABIC PIASTRE MARK ABOVE;PCM;SB=FO;WB=FO;-XIDC;-XIDS
+cp;0890;-Alpha;bc=AN;CI;gc=Cf;GCB=PP;-Gr_Base;-IDC;-IDS;jt=U;lb=NU;na=ARABIC POUND MARK ABOVE;PCM;SB=NU;WB=NU;-XIDC;-XIDS
+cp;0891;-Alpha;bc=AN;CI;gc=Cf;GCB=PP;-Gr_Base;-IDC;-IDS;jt=U;lb=NU;na=ARABIC PIASTRE MARK ABOVE;PCM;SB=NU;WB=NU;-XIDC;-XIDS
unassigned;0892..0897;bc=AL
# Additions for Quranic orthographies
-cp;0898;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC SMALL HIGH WORD AL-JUZ;SB=EX;WB=Extend;-XIDS
-cp;0899;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC SMALL LOW WORD ISHMAAM;SB=EX;WB=Extend;-XIDS
-cp;089A;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC SMALL LOW WORD IMAALA;SB=EX;WB=Extend;-XIDS
-cp;089B;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC SMALL LOW WORD TASHEEL;SB=EX;WB=Extend;-XIDS
-cp;089C;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC MADDA WAAJIB;SB=EX;WB=Extend;-XIDS
-cp;089D;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC SUPERSCRIPT ALEF MOKHASSAS;SB=EX;WB=Extend;-XIDS
-cp;089E;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC DOUBLED MADDA;SB=EX;WB=Extend;-XIDS
-cp;089F;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ARABIC HALF MADDA OVER MADDA;SB=EX;WB=Extend;-XIDS
-
-block;08A0..08FF;age=6.1;Alpha;bc=NSM;blk=Arabic_Ext_A;ccc=230;gc=Mn;GCB=EX;Gr_Ext;IDC;jt=T;lb=CM;SB=EX;sc=Arab;WB=Extend;XIDC
+cp;0898;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL HIGH WORD AL-JUZ;SB=EX;WB=Extend;-XIDS
+cp;0899;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL LOW WORD ISHMAAM;SB=EX;WB=Extend;-XIDS
+cp;089A;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL LOW WORD IMAALA;SB=EX;WB=Extend;-XIDS
+cp;089B;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SMALL LOW WORD TASHEEL;SB=EX;WB=Extend;-XIDS
+cp;089C;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC MADDA WAAJIB;SB=EX;WB=Extend;-XIDS
+cp;089D;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC SUPERSCRIPT ALEF MOKHASSAS;SB=EX;WB=Extend;-XIDS
+cp;089E;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC DOUBLED MADDA;SB=EX;WB=Extend;-XIDS
+cp;089F;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ARABIC HALF MADDA OVER MADDA;SB=EX;WB=Extend;-XIDS
+
+block;08A0..08FF;age=6.1;Alpha;bc=NSM;blk=Arabic_Ext_A;ccc=230;gc=Mn;GCB=EX;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;SB=EX;sc=Arab;WB=Extend;XIDC
# 08A0..08FF Arabic Extended-A
# Arabic letters for African languages
-cp;08A0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jg=Beh;jt=D;lb=AL;na=ARABIC LETTER BEH WITH SMALL V BELOW;SB=LE;WB=LE;XIDS
-cp;08A1;age=7.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jg=Beh;jt=D;lb=AL;na=ARABIC LETTER BEH WITH HAMZA ABOVE;SB=LE;WB=LE;XIDS
-cp;08A2;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jg=Hah;jt=D;lb=AL;na=ARABIC LETTER JEEM WITH TWO DOTS ABOVE;SB=LE;WB=LE;XIDS
-cp;08A3;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jg=Tah;jt=D;lb=AL;na=ARABIC LETTER TAH WITH TWO DOTS ABOVE;SB=LE;WB=LE;XIDS
-cp;08A4;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jg=Feh;jt=D;lb=AL;na=ARABIC LETTER FEH WITH DOT BELOW AND THREE DOTS ABOVE;SB=LE;WB=LE;XIDS
-cp;08A5;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jg=Qaf;jt=D;lb=AL;na=ARABIC LETTER QAF WITH DOT BELOW;SB=LE;WB=LE;XIDS
-cp;08A6;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jg=Lam;jt=D;lb=AL;na=ARABIC LETTER LAM WITH DOUBLE BAR;SB=LE;WB=LE;XIDS
-cp;08A7;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jg=Meem;jt=D;lb=AL;na=ARABIC LETTER MEEM WITH THREE DOTS ABOVE;SB=LE;WB=LE;XIDS
-cp;08A8;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jg=Yeh;jt=D;lb=AL;na=ARABIC LETTER YEH WITH TWO DOTS BELOW AND HAMZA ABOVE;SB=LE;WB=LE;XIDS
-cp;08A9;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jg=Yeh;jt=D;lb=AL;na=ARABIC LETTER YEH WITH TWO DOTS BELOW AND DOT ABOVE;SB=LE;WB=LE;XIDS
+cp;08A0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Beh;jt=D;lb=AL;na=ARABIC LETTER BEH WITH SMALL V BELOW;SB=LE;WB=LE;XIDS
+cp;08A1;age=7.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Beh;jt=D;lb=AL;na=ARABIC LETTER BEH WITH HAMZA ABOVE;SB=LE;WB=LE;XIDS
+cp;08A2;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Hah;jt=D;lb=AL;na=ARABIC LETTER JEEM WITH TWO DOTS ABOVE;SB=LE;WB=LE;XIDS
+cp;08A3;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Tah;jt=D;lb=AL;na=ARABIC LETTER TAH WITH TWO DOTS ABOVE;SB=LE;WB=LE;XIDS
+cp;08A4;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Feh;jt=D;lb=AL;na=ARABIC LETTER FEH WITH DOT BELOW AND THREE DOTS ABOVE;SB=LE;WB=LE;XIDS
+cp;08A5;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Qaf;jt=D;lb=AL;na=ARABIC LETTER QAF WITH DOT BELOW;SB=LE;WB=LE;XIDS
+cp;08A6;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Lam;jt=D;lb=AL;na=ARABIC LETTER LAM WITH DOUBLE BAR;SB=LE;WB=LE;XIDS
+cp;08A7;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Meem;jt=D;lb=AL;na=ARABIC LETTER MEEM WITH THREE DOTS ABOVE;SB=LE;WB=LE;XIDS
+cp;08A8;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Yeh;jt=D;lb=AL;na=ARABIC LETTER YEH WITH TWO DOTS BELOW AND HAMZA ABOVE;SB=LE;WB=LE;XIDS
+cp;08A9;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Yeh;jt=D;lb=AL;na=ARABIC LETTER YEH WITH TWO DOTS BELOW AND DOT ABOVE;SB=LE;WB=LE;XIDS
# Dependent consonants for Rohingya
-cp;08AA;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jg=Reh;jt=R;lb=AL;na=ARABIC LETTER REH WITH LOOP;SB=LE;WB=LE;XIDS
-cp;08AB;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jg=Waw;jt=R;lb=AL;na=ARABIC LETTER WAW WITH DOT WITHIN;SB=LE;WB=LE;XIDS
-cp;08AC;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jg=Rohingya_Yeh;jt=R;lb=AL;na=ARABIC LETTER ROHINGYA YEH;SB=LE;WB=LE;XIDS
+cp;08AA;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Reh;jt=R;lb=AL;na=ARABIC LETTER REH WITH LOOP;SB=LE;WB=LE;XIDS
+cp;08AB;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Waw;jt=R;lb=AL;na=ARABIC LETTER WAW WITH DOT WITHIN;SB=LE;WB=LE;XIDS
+cp;08AC;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Rohingya_Yeh;jt=R;lb=AL;na=ARABIC LETTER ROHINGYA YEH;SB=LE;WB=LE;XIDS
# Arabic letters for European and Central Asian languages
-cp;08AD;age=7.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jt=U;lb=AL;na=ARABIC LETTER LOW ALEF;SB=LE;WB=LE;XIDS
-cp;08AE;age=7.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jg=Dal;jt=R;lb=AL;na=ARABIC LETTER DAL WITH THREE DOTS BELOW;SB=LE;WB=LE;XIDS
-cp;08AF;age=7.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jg=Sad;jt=D;lb=AL;na=ARABIC LETTER SAD WITH THREE DOTS BELOW;SB=LE;WB=LE;XIDS
-cp;08B0;age=7.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jg=Gaf;jt=D;lb=AL;na=ARABIC LETTER GAF WITH INVERTED STROKE;SB=LE;WB=LE;XIDS
-cp;08B1;age=7.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jg=Straight_Waw;jt=R;lb=AL;na=ARABIC LETTER STRAIGHT WAW;SB=LE;WB=LE;XIDS
+cp;08AD;age=7.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=AL;na=ARABIC LETTER LOW ALEF;SB=LE;WB=LE;XIDS
+cp;08AE;age=7.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Dal;jt=R;lb=AL;na=ARABIC LETTER DAL WITH THREE DOTS BELOW;SB=LE;WB=LE;XIDS
+cp;08AF;age=7.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Sad;jt=D;lb=AL;na=ARABIC LETTER SAD WITH THREE DOTS BELOW;SB=LE;WB=LE;XIDS
+cp;08B0;age=7.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Gaf;jt=D;lb=AL;na=ARABIC LETTER GAF WITH INVERTED STROKE;SB=LE;WB=LE;XIDS
+cp;08B1;age=7.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Straight_Waw;jt=R;lb=AL;na=ARABIC LETTER STRAIGHT WAW;SB=LE;WB=LE;XIDS
# Arabic letter for Berber
-cp;08B2;age=7.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jg=Reh;jt=R;lb=AL;na=ARABIC LETTER ZAIN WITH INVERTED V ABOVE;SB=LE;WB=LE;XIDS
+cp;08B2;age=7.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Reh;jt=R;lb=AL;na=ARABIC LETTER ZAIN WITH INVERTED V ABOVE;SB=LE;WB=LE;XIDS
# Arabic letters for Arwi
-cp;08B3;age=8.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jg=Ain;jt=D;lb=AL;na=ARABIC LETTER AIN WITH THREE DOTS BELOW;SB=LE;WB=LE;XIDS
-cp;08B4;age=8.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jg=Kaf;jt=D;lb=AL;na=ARABIC LETTER KAF WITH DOT BELOW;SB=LE;WB=LE;XIDS
+cp;08B3;age=8.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Ain;jt=D;lb=AL;na=ARABIC LETTER AIN WITH THREE DOTS BELOW;SB=LE;WB=LE;XIDS
+cp;08B4;age=8.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Kaf;jt=D;lb=AL;na=ARABIC LETTER KAF WITH DOT BELOW;SB=LE;WB=LE;XIDS
# Early Arabic letter
-cp;08B5;age=14.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jg=Qaf;jt=D;lb=AL;na=ARABIC LETTER QAF WITH DOT BELOW AND NO DOTS ABOVE;SB=LE;WB=LE;XIDS
+cp;08B5;age=14.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Qaf;jt=D;lb=AL;na=ARABIC LETTER QAF WITH DOT BELOW AND NO DOTS ABOVE;SB=LE;WB=LE;XIDS
# Arabic letters for Bravanese
-cp;08B6;age=9.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jg=Beh;jt=D;lb=AL;na=ARABIC LETTER BEH WITH SMALL MEEM ABOVE;SB=LE;WB=LE;XIDS
-cp;08B7;age=9.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jg=Beh;jt=D;lb=AL;na=ARABIC LETTER PEH WITH SMALL MEEM ABOVE;SB=LE;WB=LE;XIDS
-cp;08B8;age=9.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jg=Beh;jt=D;lb=AL;na=ARABIC LETTER TEH WITH SMALL TEH ABOVE;SB=LE;WB=LE;XIDS
-cp;08B9;age=9.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jg=Reh;jt=R;lb=AL;na=ARABIC LETTER REH WITH SMALL NOON ABOVE;SB=LE;WB=LE;XIDS
-cp;08BA;age=9.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jg=Yeh;jt=D;lb=AL;na=ARABIC LETTER YEH WITH TWO DOTS BELOW AND SMALL NOON ABOVE;SB=LE;WB=LE;XIDS
+cp;08B6;age=9.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Beh;jt=D;lb=AL;na=ARABIC LETTER BEH WITH SMALL MEEM ABOVE;SB=LE;WB=LE;XIDS
+cp;08B7;age=9.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Beh;jt=D;lb=AL;na=ARABIC LETTER PEH WITH SMALL MEEM ABOVE;SB=LE;WB=LE;XIDS
+cp;08B8;age=9.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Beh;jt=D;lb=AL;na=ARABIC LETTER TEH WITH SMALL TEH ABOVE;SB=LE;WB=LE;XIDS
+cp;08B9;age=9.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Reh;jt=R;lb=AL;na=ARABIC LETTER REH WITH SMALL NOON ABOVE;SB=LE;WB=LE;XIDS
+cp;08BA;age=9.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Yeh;jt=D;lb=AL;na=ARABIC LETTER YEH WITH TWO DOTS BELOW AND SMALL NOON ABOVE;SB=LE;WB=LE;XIDS
# Arabic letters for Warsh orthography
-cp;08BB;age=9.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jg=African_Feh;jt=D;lb=AL;na=ARABIC LETTER AFRICAN FEH;SB=LE;WB=LE;XIDS
-cp;08BC;age=9.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jg=African_Qaf;jt=D;lb=AL;na=ARABIC LETTER AFRICAN QAF;SB=LE;WB=LE;XIDS
-cp;08BD;age=9.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jg=African_Noon;jt=D;lb=AL;na=ARABIC LETTER AFRICAN NOON;SB=LE;WB=LE;XIDS
+cp;08BB;age=9.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=African_Feh;jt=D;lb=AL;na=ARABIC LETTER AFRICAN FEH;SB=LE;WB=LE;XIDS
+cp;08BC;age=9.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=African_Qaf;jt=D;lb=AL;na=ARABIC LETTER AFRICAN QAF;SB=LE;WB=LE;XIDS
+cp;08BD;age=9.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=African_Noon;jt=D;lb=AL;na=ARABIC LETTER AFRICAN NOON;SB=LE;WB=LE;XIDS
# Arabic letters for Hindko
-cp;08BE;age=13.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jg=Beh;jt=D;lb=AL;na=ARABIC LETTER PEH WITH SMALL V;SB=LE;WB=LE;XIDS
-cp;08BF;age=13.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jg=Beh;jt=D;lb=AL;na=ARABIC LETTER TEH WITH SMALL V;SB=LE;WB=LE;XIDS
-cp;08C0;age=13.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jg=Beh;jt=D;lb=AL;na=ARABIC LETTER TTEH WITH SMALL V;SB=LE;WB=LE;XIDS
-cp;08C1;age=13.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jg=Hah;jt=D;lb=AL;na=ARABIC LETTER TCHEH WITH SMALL V;SB=LE;WB=LE;XIDS
-cp;08C2;age=13.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jg=Gaf;jt=D;lb=AL;na=ARABIC LETTER KEHEH WITH SMALL V;SB=LE;WB=LE;XIDS
+cp;08BE;age=13.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Beh;jt=D;lb=AL;na=ARABIC LETTER PEH WITH SMALL V;SB=LE;WB=LE;XIDS
+cp;08BF;age=13.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Beh;jt=D;lb=AL;na=ARABIC LETTER TEH WITH SMALL V;SB=LE;WB=LE;XIDS
+cp;08C0;age=13.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Beh;jt=D;lb=AL;na=ARABIC LETTER TTEH WITH SMALL V;SB=LE;WB=LE;XIDS
+cp;08C1;age=13.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Hah;jt=D;lb=AL;na=ARABIC LETTER TCHEH WITH SMALL V;SB=LE;WB=LE;XIDS
+cp;08C2;age=13.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Gaf;jt=D;lb=AL;na=ARABIC LETTER KEHEH WITH SMALL V;SB=LE;WB=LE;XIDS
# Arabic letters for Hausa, Wolof and other African orthographies
-cp;08C3;age=13.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jg=Ain;jt=D;lb=AL;na=ARABIC LETTER GHAIN WITH THREE DOTS ABOVE;SB=LE;WB=LE;XIDS
-cp;08C4;age=13.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jg=African_Qaf;jt=D;lb=AL;na=ARABIC LETTER AFRICAN QAF WITH THREE DOTS ABOVE;SB=LE;WB=LE;XIDS
-cp;08C5;age=13.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jg=Hah;jt=D;lb=AL;na=ARABIC LETTER JEEM WITH THREE DOTS ABOVE;SB=LE;WB=LE;XIDS
-cp;08C6;age=13.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jg=Hah;jt=D;lb=AL;na=ARABIC LETTER JEEM WITH THREE DOTS BELOW;SB=LE;WB=LE;XIDS
+cp;08C3;age=13.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Ain;jt=D;lb=AL;na=ARABIC LETTER GHAIN WITH THREE DOTS ABOVE;SB=LE;WB=LE;XIDS
+cp;08C4;age=13.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=African_Qaf;jt=D;lb=AL;na=ARABIC LETTER AFRICAN QAF WITH THREE DOTS ABOVE;SB=LE;WB=LE;XIDS
+cp;08C5;age=13.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Hah;jt=D;lb=AL;na=ARABIC LETTER JEEM WITH THREE DOTS ABOVE;SB=LE;WB=LE;XIDS
+cp;08C6;age=13.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Hah;jt=D;lb=AL;na=ARABIC LETTER JEEM WITH THREE DOTS BELOW;SB=LE;WB=LE;XIDS
# Arabic letter for Punjabi
-cp;08C7;age=13.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jg=Lam;jt=D;lb=AL;na=ARABIC LETTER LAM WITH SMALL ARABIC LETTER TAH ABOVE;SB=LE;WB=LE;XIDS
+cp;08C7;age=13.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Lam;jt=D;lb=AL;na=ARABIC LETTER LAM WITH SMALL ARABIC LETTER TAH ABOVE;SB=LE;WB=LE;XIDS
# Arabic letter for Balti
-cp;08C8;age=14.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;jg=Gaf;jt=D;lb=AL;na=ARABIC LETTER GRAF;SB=LE;WB=LE;XIDS
+cp;08C8;age=14.0;bc=AL;ccc=0;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jg=Gaf;jt=D;lb=AL;na=ARABIC LETTER GRAF;SB=LE;WB=LE;XIDS
# Additions for Quranic orthographies
-cp;08C9;age=14.0;bc=AL;ccc=0;CI;Dia;gc=Lm;GCB=XX;Gr_Base;-Gr_Ext;IDS;jt=U;lb=AL;na=ARABIC SMALL FARSI YEH;SB=LE;WB=LE;XIDS
+cp;08C9;age=14.0;bc=AL;ccc=0;CI;Dia;gc=Lm;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;jt=U;lb=AL;na=ARABIC SMALL FARSI YEH;SB=LE;WB=LE;XIDS
cp;08CA;age=14.0;-Alpha;CI;Dia;na=ARABIC SMALL HIGH FARSI YEH
cp;08CB;age=14.0;-Alpha;CI;Dia;na=ARABIC SMALL HIGH YEH BARREE WITH TWO DOTS BELOW
cp;08CC;age=14.0;-Alpha;CI;Dia;na=ARABIC SMALL HIGH WORD SAH
@@ -3772,7 +3789,7 @@ cp;08DE;age=9.0;CI;na=ARABIC SMALL HIGH WORD QIF
cp;08DF;age=9.0;CI;na=ARABIC SMALL HIGH WORD WAQFA
cp;08E0;age=9.0;-Alpha;CI;na=ARABIC SMALL HIGH FOOTNOTE MARKER
cp;08E1;age=9.0;-Alpha;CI;na=ARABIC SMALL HIGH SIGN SAFHA
-cp;08E2;age=9.0;-Alpha;bc=AN;ccc=0;CI;gc=Cf;GCB=PP;-Gr_Ext;-IDC;jt=U;lb=AL;na=ARABIC DISPUTED END OF AYAH;PCM;SB=FO;sc=Zyyy;WB=FO;-XIDC
+cp;08E2;age=9.0;-Alpha;bc=AN;ccc=0;CI;gc=Cf;GCB=PP;-Gr_Ext;-IDC;InCB=None;jt=U;lb=NU;na=ARABIC DISPUTED END OF AYAH;PCM;SB=NU;sc=Zyyy;WB=NU;-XIDC
# Extended vowel sign for Arwi
cp;08E3;age=8.0;ccc=220;CI;Dia;na=ARABIC TURNED DAMMA BELOW
# Extended vowel signs for Rohingya
@@ -3809,31 +3826,31 @@ cp;08FD;CI;Dia;na=ARABIC RIGHT ARROWHEAD ABOVE WITH DOT
cp;08FE;CI;Dia;na=ARABIC DAMMA WITH DOT
cp;08FF;age=7.0;CI;na=ARABIC MARK SIDEWAYS NOON GHUNNA
-block;0900..097F;age=1.1;Alpha;blk=Devanagari;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Deva;WB=LE;XIDC;XIDS
+block;0900..097F;age=1.1;Alpha;blk=Devanagari;gc=Lo;Gr_Base;IDC;IDS;InCB=Consonant;InSC=Consonant;lb=AL;SB=LE;sc=Deva;WB=LE;XIDC;XIDS
# 0900..097F Devanagari
# Various signs
-cp;0900;age=5.2;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=DEVANAGARI SIGN INVERTED CANDRABINDU;SB=EX;WB=Extend;-XIDS
-cp;0901;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=DEVANAGARI SIGN CANDRABINDU;SB=EX;WB=Extend;-XIDS
-cp;0902;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=DEVANAGARI SIGN ANUSVARA;SB=EX;WB=Extend;-XIDS
-cp;0903;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Visarga;lb=CM;na=DEVANAGARI SIGN VISARGA;SB=EX;WB=Extend;-XIDS
+cp;0900;age=5.2;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=None;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=DEVANAGARI SIGN INVERTED CANDRABINDU;SB=EX;WB=Extend;-XIDS
+cp;0901;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=None;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=DEVANAGARI SIGN CANDRABINDU;SB=EX;WB=Extend;-XIDS
+cp;0902;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=None;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=DEVANAGARI SIGN ANUSVARA;SB=EX;WB=Extend;-XIDS
+cp;0903;gc=Mc;GCB=SM;-IDS;InCB=None;InPC=Right;InSC=Visarga;lb=CM;na=DEVANAGARI SIGN VISARGA;SB=EX;WB=Extend;-XIDS
# Independent vowels
-cp;0904;age=4.0;InSC=Vowel_Independent;na=DEVANAGARI LETTER SHORT A
-cp;0905;InSC=Vowel_Independent;na=DEVANAGARI LETTER A
-cp;0906;InSC=Vowel_Independent;na=DEVANAGARI LETTER AA
-cp;0907;InSC=Vowel_Independent;na=DEVANAGARI LETTER I
-cp;0908;InSC=Vowel_Independent;na=DEVANAGARI LETTER II
-cp;0909;InSC=Vowel_Independent;na=DEVANAGARI LETTER U
-cp;090A;InSC=Vowel_Independent;na=DEVANAGARI LETTER UU
-cp;090B;InSC=Vowel_Independent;na=DEVANAGARI LETTER VOCALIC R
-cp;090C;InSC=Vowel_Independent;na=DEVANAGARI LETTER VOCALIC L
-cp;090D;InSC=Vowel_Independent;na=DEVANAGARI LETTER CANDRA E
-cp;090E;InSC=Vowel_Independent;na=DEVANAGARI LETTER SHORT E
-cp;090F;InSC=Vowel_Independent;na=DEVANAGARI LETTER E
-cp;0910;InSC=Vowel_Independent;na=DEVANAGARI LETTER AI
-cp;0911;InSC=Vowel_Independent;na=DEVANAGARI LETTER CANDRA O
-cp;0912;InSC=Vowel_Independent;na=DEVANAGARI LETTER SHORT O
-cp;0913;InSC=Vowel_Independent;na=DEVANAGARI LETTER O
-cp;0914;InSC=Vowel_Independent;na=DEVANAGARI LETTER AU
+cp;0904;age=4.0;InCB=None;InSC=Vowel_Independent;na=DEVANAGARI LETTER SHORT A
+cp;0905;InCB=None;InSC=Vowel_Independent;na=DEVANAGARI LETTER A
+cp;0906;InCB=None;InSC=Vowel_Independent;na=DEVANAGARI LETTER AA
+cp;0907;InCB=None;InSC=Vowel_Independent;na=DEVANAGARI LETTER I
+cp;0908;InCB=None;InSC=Vowel_Independent;na=DEVANAGARI LETTER II
+cp;0909;InCB=None;InSC=Vowel_Independent;na=DEVANAGARI LETTER U
+cp;090A;InCB=None;InSC=Vowel_Independent;na=DEVANAGARI LETTER UU
+cp;090B;InCB=None;InSC=Vowel_Independent;na=DEVANAGARI LETTER VOCALIC R
+cp;090C;InCB=None;InSC=Vowel_Independent;na=DEVANAGARI LETTER VOCALIC L
+cp;090D;InCB=None;InSC=Vowel_Independent;na=DEVANAGARI LETTER CANDRA E
+cp;090E;InCB=None;InSC=Vowel_Independent;na=DEVANAGARI LETTER SHORT E
+cp;090F;InCB=None;InSC=Vowel_Independent;na=DEVANAGARI LETTER E
+cp;0910;InCB=None;InSC=Vowel_Independent;na=DEVANAGARI LETTER AI
+cp;0911;InCB=None;InSC=Vowel_Independent;na=DEVANAGARI LETTER CANDRA O
+cp;0912;InCB=None;InSC=Vowel_Independent;na=DEVANAGARI LETTER SHORT O
+cp;0913;InCB=None;InSC=Vowel_Independent;na=DEVANAGARI LETTER O
+cp;0914;InCB=None;InSC=Vowel_Independent;na=DEVANAGARI LETTER AU
# Consonants
cp;0915;na=DEVANAGARI LETTER KA
cp;0916;na=DEVANAGARI LETTER KHA
@@ -3873,85 +3890,85 @@ cp;0937;na=DEVANAGARI LETTER SSA
cp;0938;na=DEVANAGARI LETTER SA
cp;0939;na=DEVANAGARI LETTER HA
# Dependent vowel signs
-cp;093A;age=6.0;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=DEVANAGARI VOWEL SIGN OE;SB=EX;WB=Extend;-XIDS
-cp;093B;age=6.0;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=DEVANAGARI VOWEL SIGN OOE;SB=EX;WB=Extend;-XIDS
+cp;093A;age=6.0;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=None;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=DEVANAGARI VOWEL SIGN OE;SB=EX;WB=Extend;-XIDS
+cp;093B;age=6.0;gc=Mc;GCB=SM;-IDS;InCB=None;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=DEVANAGARI VOWEL SIGN OOE;SB=EX;WB=Extend;-XIDS
# Various signs
-cp;093C;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=DEVANAGARI SIGN NUKTA;NFC_QC=M;NFKC_QC=M;SB=EX;WB=Extend;-XIDS
-cp;093D;InSC=Avagraha;na=DEVANAGARI SIGN AVAGRAHA
+cp;093C;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=DEVANAGARI SIGN NUKTA;NFC_QC=M;NFKC_QC=M;SB=EX;WB=Extend;-XIDS
+cp;093D;InCB=None;InSC=Avagraha;na=DEVANAGARI SIGN AVAGRAHA
# Dependent vowel signs
-cp;093E;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=DEVANAGARI VOWEL SIGN AA;SB=EX;WB=Extend;-XIDS
-cp;093F;gc=Mc;GCB=SM;-IDS;InPC=Left;InSC=Vowel_Dependent;lb=CM;na=DEVANAGARI VOWEL SIGN I;SB=EX;WB=Extend;-XIDS
-cp;0940;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=DEVANAGARI VOWEL SIGN II;SB=EX;WB=Extend;-XIDS
-cp;0941;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=DEVANAGARI VOWEL SIGN U;SB=EX;WB=Extend;-XIDS
-cp;0942;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=DEVANAGARI VOWEL SIGN UU;SB=EX;WB=Extend;-XIDS
-cp;0943;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=DEVANAGARI VOWEL SIGN VOCALIC R;SB=EX;WB=Extend;-XIDS
-cp;0944;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=DEVANAGARI VOWEL SIGN VOCALIC RR;SB=EX;WB=Extend;-XIDS
-cp;0945;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=DEVANAGARI VOWEL SIGN CANDRA E;SB=EX;WB=Extend;-XIDS
-cp;0946;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=DEVANAGARI VOWEL SIGN SHORT E;SB=EX;WB=Extend;-XIDS
-cp;0947;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=DEVANAGARI VOWEL SIGN E;SB=EX;WB=Extend;-XIDS
-cp;0948;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=DEVANAGARI VOWEL SIGN AI;SB=EX;WB=Extend;-XIDS
-cp;0949;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=DEVANAGARI VOWEL SIGN CANDRA O;SB=EX;WB=Extend;-XIDS
-cp;094A;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=DEVANAGARI VOWEL SIGN SHORT O;SB=EX;WB=Extend;-XIDS
-cp;094B;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=DEVANAGARI VOWEL SIGN O;SB=EX;WB=Extend;-XIDS
-cp;094C;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=DEVANAGARI VOWEL SIGN AU;SB=EX;WB=Extend;-XIDS
+cp;093E;gc=Mc;GCB=SM;-IDS;InCB=None;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=DEVANAGARI VOWEL SIGN AA;SB=EX;WB=Extend;-XIDS
+cp;093F;gc=Mc;GCB=SM;-IDS;InCB=None;InPC=Left;InSC=Vowel_Dependent;lb=CM;na=DEVANAGARI VOWEL SIGN I;SB=EX;WB=Extend;-XIDS
+cp;0940;gc=Mc;GCB=SM;-IDS;InCB=None;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=DEVANAGARI VOWEL SIGN II;SB=EX;WB=Extend;-XIDS
+cp;0941;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=None;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=DEVANAGARI VOWEL SIGN U;SB=EX;WB=Extend;-XIDS
+cp;0942;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=None;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=DEVANAGARI VOWEL SIGN UU;SB=EX;WB=Extend;-XIDS
+cp;0943;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=None;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=DEVANAGARI VOWEL SIGN VOCALIC R;SB=EX;WB=Extend;-XIDS
+cp;0944;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=None;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=DEVANAGARI VOWEL SIGN VOCALIC RR;SB=EX;WB=Extend;-XIDS
+cp;0945;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=None;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=DEVANAGARI VOWEL SIGN CANDRA E;SB=EX;WB=Extend;-XIDS
+cp;0946;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=None;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=DEVANAGARI VOWEL SIGN SHORT E;SB=EX;WB=Extend;-XIDS
+cp;0947;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=None;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=DEVANAGARI VOWEL SIGN E;SB=EX;WB=Extend;-XIDS
+cp;0948;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=None;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=DEVANAGARI VOWEL SIGN AI;SB=EX;WB=Extend;-XIDS
+cp;0949;gc=Mc;GCB=SM;-IDS;InCB=None;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=DEVANAGARI VOWEL SIGN CANDRA O;SB=EX;WB=Extend;-XIDS
+cp;094A;gc=Mc;GCB=SM;-IDS;InCB=None;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=DEVANAGARI VOWEL SIGN SHORT O;SB=EX;WB=Extend;-XIDS
+cp;094B;gc=Mc;GCB=SM;-IDS;InCB=None;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=DEVANAGARI VOWEL SIGN O;SB=EX;WB=Extend;-XIDS
+cp;094C;gc=Mc;GCB=SM;-IDS;InCB=None;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=DEVANAGARI VOWEL SIGN AU;SB=EX;WB=Extend;-XIDS
# Virama
-cp;094D;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InPC=Bottom;InSC=Virama;jt=T;lb=CM;na=DEVANAGARI SIGN VIRAMA;SB=EX;WB=Extend;-XIDS
+cp;094D;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InCB=Linker;InPC=Bottom;InSC=Virama;jt=T;lb=CM;na=DEVANAGARI SIGN VIRAMA;SB=EX;WB=Extend;-XIDS
# Dependent vowel signs
-cp;094E;age=5.2;gc=Mc;GCB=SM;-IDS;InPC=Left;InSC=Vowel_Dependent;lb=CM;na=DEVANAGARI VOWEL SIGN PRISHTHAMATRA E;SB=EX;WB=Extend;-XIDS
-cp;094F;age=6.0;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=DEVANAGARI VOWEL SIGN AW;SB=EX;WB=Extend;-XIDS
+cp;094E;age=5.2;gc=Mc;GCB=SM;-IDS;InCB=None;InPC=Left;InSC=Vowel_Dependent;lb=CM;na=DEVANAGARI VOWEL SIGN PRISHTHAMATRA E;SB=EX;WB=Extend;-XIDS
+cp;094F;age=6.0;gc=Mc;GCB=SM;-IDS;InCB=None;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=DEVANAGARI VOWEL SIGN AW;SB=EX;WB=Extend;-XIDS
# Sign
-cp;0950;InSC=Other;na=DEVANAGARI OM
+cp;0950;InCB=None;InSC=Other;na=DEVANAGARI OM
# Vedic tone marks
-cp;0951;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Cantillation_Mark;jt=T;lb=CM;na=DEVANAGARI STRESS SIGN UDATTA;SB=EX;sc=Zinh;scx=Beng Deva Gran Gujr Guru Knda Latn Mlym Orya Shrd Taml Telu Tirh;WB=Extend;-XIDS
-cp;0952;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Cantillation_Mark;jt=T;lb=CM;na=DEVANAGARI STRESS SIGN ANUDATTA;SB=EX;sc=Zinh;scx=Beng Deva Gran Gujr Guru Knda Latn Mlym Orya Taml Telu Tirh;WB=Extend;-XIDS
+cp;0951;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Top;InSC=Cantillation_Mark;jt=T;lb=CM;na=DEVANAGARI STRESS SIGN UDATTA;SB=EX;sc=Zinh;scx=Beng Deva Gran Gujr Guru Knda Latn Mlym Orya Shrd Taml Telu Tirh;WB=Extend;-XIDS
+cp;0952;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Bottom;InSC=Cantillation_Mark;jt=T;lb=CM;na=DEVANAGARI STRESS SIGN ANUDATTA;SB=EX;sc=Zinh;scx=Beng Deva Gran Gujr Guru Knda Latn Mlym Orya Taml Telu Tirh;WB=Extend;-XIDS
# Accent marks
-cp;0953;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InSC=Other;jt=T;lb=CM;na=DEVANAGARI GRAVE ACCENT;SB=EX;sc=Zinh;WB=Extend;-XIDS
-cp;0954;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InSC=Other;jt=T;lb=CM;na=DEVANAGARI ACUTE ACCENT;SB=EX;sc=Zinh;WB=Extend;-XIDS
+cp;0953;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InSC=Other;jt=T;lb=CM;na=DEVANAGARI GRAVE ACCENT;SB=EX;sc=Zinh;WB=Extend;-XIDS
+cp;0954;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InSC=Other;jt=T;lb=CM;na=DEVANAGARI ACUTE ACCENT;SB=EX;sc=Zinh;WB=Extend;-XIDS
# Dependent vowel sign
-cp;0955;age=5.2;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=DEVANAGARI VOWEL SIGN CANDRA LONG E;SB=EX;WB=Extend;-XIDS
+cp;0955;age=5.2;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=None;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=DEVANAGARI VOWEL SIGN CANDRA LONG E;SB=EX;WB=Extend;-XIDS
# Dependent vowel signs for Kashmiri
-cp;0956;age=6.0;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=DEVANAGARI VOWEL SIGN UE;SB=EX;WB=Extend;-XIDS
-cp;0957;age=6.0;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=DEVANAGARI VOWEL SIGN UUE;SB=EX;WB=Extend;-XIDS
+cp;0956;age=6.0;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=None;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=DEVANAGARI VOWEL SIGN UE;SB=EX;WB=Extend;-XIDS
+cp;0957;age=6.0;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=None;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=DEVANAGARI VOWEL SIGN UUE;SB=EX;WB=Extend;-XIDS
# Additional consonants
-cp;0958;Comp_Ex;CWKCF;dm=0915 093C;dt=Can;na=DEVANAGARI LETTER QA;NFC_QC=N;NFD_QC=N;NFKC_CF=0915 093C;NFKC_QC=N;NFKD_QC=N
-cp;0959;Comp_Ex;CWKCF;dm=0916 093C;dt=Can;na=DEVANAGARI LETTER KHHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0916 093C;NFKC_QC=N;NFKD_QC=N
-cp;095A;Comp_Ex;CWKCF;dm=0917 093C;dt=Can;na=DEVANAGARI LETTER GHHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0917 093C;NFKC_QC=N;NFKD_QC=N
-cp;095B;Comp_Ex;CWKCF;dm=091C 093C;dt=Can;na=DEVANAGARI LETTER ZA;NFC_QC=N;NFD_QC=N;NFKC_CF=091C 093C;NFKC_QC=N;NFKD_QC=N
-cp;095C;Comp_Ex;CWKCF;dm=0921 093C;dt=Can;na=DEVANAGARI LETTER DDDHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0921 093C;NFKC_QC=N;NFKD_QC=N
-cp;095D;Comp_Ex;CWKCF;dm=0922 093C;dt=Can;na=DEVANAGARI LETTER RHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0922 093C;NFKC_QC=N;NFKD_QC=N
-cp;095E;Comp_Ex;CWKCF;dm=092B 093C;dt=Can;na=DEVANAGARI LETTER FA;NFC_QC=N;NFD_QC=N;NFKC_CF=092B 093C;NFKC_QC=N;NFKD_QC=N
-cp;095F;Comp_Ex;CWKCF;dm=092F 093C;dt=Can;na=DEVANAGARI LETTER YYA;NFC_QC=N;NFD_QC=N;NFKC_CF=092F 093C;NFKC_QC=N;NFKD_QC=N
+cp;0958;Comp_Ex;CWKCF;dm=0915 093C;dt=Can;na=DEVANAGARI LETTER QA;NFC_QC=N;NFD_QC=N;NFKC_CF=0915 093C;NFKC_QC=N;NFKC_SCF=0915 093C;NFKD_QC=N
+cp;0959;Comp_Ex;CWKCF;dm=0916 093C;dt=Can;na=DEVANAGARI LETTER KHHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0916 093C;NFKC_QC=N;NFKC_SCF=0916 093C;NFKD_QC=N
+cp;095A;Comp_Ex;CWKCF;dm=0917 093C;dt=Can;na=DEVANAGARI LETTER GHHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0917 093C;NFKC_QC=N;NFKC_SCF=0917 093C;NFKD_QC=N
+cp;095B;Comp_Ex;CWKCF;dm=091C 093C;dt=Can;na=DEVANAGARI LETTER ZA;NFC_QC=N;NFD_QC=N;NFKC_CF=091C 093C;NFKC_QC=N;NFKC_SCF=091C 093C;NFKD_QC=N
+cp;095C;Comp_Ex;CWKCF;dm=0921 093C;dt=Can;na=DEVANAGARI LETTER DDDHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0921 093C;NFKC_QC=N;NFKC_SCF=0921 093C;NFKD_QC=N
+cp;095D;Comp_Ex;CWKCF;dm=0922 093C;dt=Can;na=DEVANAGARI LETTER RHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0922 093C;NFKC_QC=N;NFKC_SCF=0922 093C;NFKD_QC=N
+cp;095E;Comp_Ex;CWKCF;dm=092B 093C;dt=Can;na=DEVANAGARI LETTER FA;NFC_QC=N;NFD_QC=N;NFKC_CF=092B 093C;NFKC_QC=N;NFKC_SCF=092B 093C;NFKD_QC=N
+cp;095F;Comp_Ex;CWKCF;dm=092F 093C;dt=Can;na=DEVANAGARI LETTER YYA;NFC_QC=N;NFD_QC=N;NFKC_CF=092F 093C;NFKC_QC=N;NFKC_SCF=092F 093C;NFKD_QC=N
# Additional vowels for Sanskrit
-cp;0960;InSC=Vowel_Independent;na=DEVANAGARI LETTER VOCALIC RR
-cp;0961;InSC=Vowel_Independent;na=DEVANAGARI LETTER VOCALIC LL
-cp;0962;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=DEVANAGARI VOWEL SIGN VOCALIC L;SB=EX;WB=Extend;-XIDS
-cp;0963;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=DEVANAGARI VOWEL SIGN VOCALIC LL;SB=EX;WB=Extend;-XIDS
+cp;0960;InCB=None;InSC=Vowel_Independent;na=DEVANAGARI LETTER VOCALIC RR
+cp;0961;InCB=None;InSC=Vowel_Independent;na=DEVANAGARI LETTER VOCALIC LL
+cp;0962;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=None;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=DEVANAGARI VOWEL SIGN VOCALIC L;SB=EX;WB=Extend;-XIDS
+cp;0963;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=None;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=DEVANAGARI VOWEL SIGN VOCALIC LL;SB=EX;WB=Extend;-XIDS
# Generic punctuation for scripts of India
-cp;0964;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=DEVANAGARI DANDA;SB=ST;sc=Zyyy;scx=Beng Deva Dogr Gong Gonm Gran Gujr Guru Knda Mahj Mlym Nand Orya Sind Sinh Sylo Takr Taml Telu Tirh;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;0965;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=DEVANAGARI DOUBLE DANDA;SB=ST;sc=Zyyy;scx=Beng Deva Dogr Gong Gonm Gran Gujr Guru Knda Limb Mahj Mlym Nand Orya Sind Sinh Sylo Takr Taml Telu Tirh;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;0964;-Alpha;gc=Po;-IDC;-IDS;InCB=None;InSC=Other;lb=BA;na=DEVANAGARI DANDA;SB=ST;sc=Zyyy;scx=Beng Deva Dogr Gong Gonm Gran Gujr Guru Knda Mahj Mlym Nand Orya Sind Sinh Sylo Takr Taml Telu Tirh;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;0965;-Alpha;gc=Po;-IDC;-IDS;InCB=None;InSC=Other;lb=BA;na=DEVANAGARI DOUBLE DANDA;SB=ST;sc=Zyyy;scx=Beng Deva Dogr Gong Gonm Gran Gujr Guru Knda Limb Mahj Mlym Nand Orya Sind Sinh Sylo Takr Taml Telu Tirh;STerm;Term;WB=XX;-XIDC;-XIDS
# Digits
-cp;0966;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=DEVANAGARI DIGIT ZERO;nt=De;nv=0;SB=NU;scx=Deva Dogr Kthi Mahj;WB=NU;-XIDS
-cp;0967;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=DEVANAGARI DIGIT ONE;nt=De;nv=1;SB=NU;scx=Deva Dogr Kthi Mahj;WB=NU;-XIDS
-cp;0968;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=DEVANAGARI DIGIT TWO;nt=De;nv=2;SB=NU;scx=Deva Dogr Kthi Mahj;WB=NU;-XIDS
-cp;0969;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=DEVANAGARI DIGIT THREE;nt=De;nv=3;SB=NU;scx=Deva Dogr Kthi Mahj;WB=NU;-XIDS
-cp;096A;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=DEVANAGARI DIGIT FOUR;nt=De;nv=4;SB=NU;scx=Deva Dogr Kthi Mahj;WB=NU;-XIDS
-cp;096B;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=DEVANAGARI DIGIT FIVE;nt=De;nv=5;SB=NU;scx=Deva Dogr Kthi Mahj;WB=NU;-XIDS
-cp;096C;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=DEVANAGARI DIGIT SIX;nt=De;nv=6;SB=NU;scx=Deva Dogr Kthi Mahj;WB=NU;-XIDS
-cp;096D;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=DEVANAGARI DIGIT SEVEN;nt=De;nv=7;SB=NU;scx=Deva Dogr Kthi Mahj;WB=NU;-XIDS
-cp;096E;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=DEVANAGARI DIGIT EIGHT;nt=De;nv=8;SB=NU;scx=Deva Dogr Kthi Mahj;WB=NU;-XIDS
-cp;096F;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=DEVANAGARI DIGIT NINE;nt=De;nv=9;SB=NU;scx=Deva Dogr Kthi Mahj;WB=NU;-XIDS
+cp;0966;-Alpha;gc=Nd;-IDS;InCB=None;InSC=Number;lb=NU;na=DEVANAGARI DIGIT ZERO;nt=De;nv=0;SB=NU;scx=Deva Dogr Kthi Mahj;WB=NU;-XIDS
+cp;0967;-Alpha;gc=Nd;-IDS;InCB=None;InSC=Number;lb=NU;na=DEVANAGARI DIGIT ONE;nt=De;nv=1;SB=NU;scx=Deva Dogr Kthi Mahj;WB=NU;-XIDS
+cp;0968;-Alpha;gc=Nd;-IDS;InCB=None;InSC=Number;lb=NU;na=DEVANAGARI DIGIT TWO;nt=De;nv=2;SB=NU;scx=Deva Dogr Kthi Mahj;WB=NU;-XIDS
+cp;0969;-Alpha;gc=Nd;-IDS;InCB=None;InSC=Number;lb=NU;na=DEVANAGARI DIGIT THREE;nt=De;nv=3;SB=NU;scx=Deva Dogr Kthi Mahj;WB=NU;-XIDS
+cp;096A;-Alpha;gc=Nd;-IDS;InCB=None;InSC=Number;lb=NU;na=DEVANAGARI DIGIT FOUR;nt=De;nv=4;SB=NU;scx=Deva Dogr Kthi Mahj;WB=NU;-XIDS
+cp;096B;-Alpha;gc=Nd;-IDS;InCB=None;InSC=Number;lb=NU;na=DEVANAGARI DIGIT FIVE;nt=De;nv=5;SB=NU;scx=Deva Dogr Kthi Mahj;WB=NU;-XIDS
+cp;096C;-Alpha;gc=Nd;-IDS;InCB=None;InSC=Number;lb=NU;na=DEVANAGARI DIGIT SIX;nt=De;nv=6;SB=NU;scx=Deva Dogr Kthi Mahj;WB=NU;-XIDS
+cp;096D;-Alpha;gc=Nd;-IDS;InCB=None;InSC=Number;lb=NU;na=DEVANAGARI DIGIT SEVEN;nt=De;nv=7;SB=NU;scx=Deva Dogr Kthi Mahj;WB=NU;-XIDS
+cp;096E;-Alpha;gc=Nd;-IDS;InCB=None;InSC=Number;lb=NU;na=DEVANAGARI DIGIT EIGHT;nt=De;nv=8;SB=NU;scx=Deva Dogr Kthi Mahj;WB=NU;-XIDS
+cp;096F;-Alpha;gc=Nd;-IDS;InCB=None;InSC=Number;lb=NU;na=DEVANAGARI DIGIT NINE;nt=De;nv=9;SB=NU;scx=Deva Dogr Kthi Mahj;WB=NU;-XIDS
# Additional signs
-cp;0970;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;na=DEVANAGARI ABBREVIATION SIGN;SB=XX;WB=XX;-XIDC;-XIDS
-cp;0971;age=5.1;CI;Dia;gc=Lm;InSC=Other;na=DEVANAGARI SIGN HIGH SPACING DOT
+cp;0970;-Alpha;gc=Po;-IDC;-IDS;InCB=None;InSC=Other;na=DEVANAGARI ABBREVIATION SIGN;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0971;age=5.1;CI;Dia;gc=Lm;InCB=None;InSC=Other;na=DEVANAGARI SIGN HIGH SPACING DOT
# Independent vowel for Marathi
-cp;0972;age=5.1;InSC=Vowel_Independent;na=DEVANAGARI LETTER CANDRA A
+cp;0972;age=5.1;InCB=None;InSC=Vowel_Independent;na=DEVANAGARI LETTER CANDRA A
# Independent vowels
-cp;0973;age=6.0;InSC=Vowel_Independent;na=DEVANAGARI LETTER OE
-cp;0974;age=6.0;InSC=Vowel_Independent;na=DEVANAGARI LETTER OOE
-cp;0975;age=6.0;InSC=Vowel_Independent;na=DEVANAGARI LETTER AW
+cp;0973;age=6.0;InCB=None;InSC=Vowel_Independent;na=DEVANAGARI LETTER OE
+cp;0974;age=6.0;InCB=None;InSC=Vowel_Independent;na=DEVANAGARI LETTER OOE
+cp;0975;age=6.0;InCB=None;InSC=Vowel_Independent;na=DEVANAGARI LETTER AW
# Independent vowels for Kashmiri
-cp;0976;age=6.0;InSC=Vowel_Independent;na=DEVANAGARI LETTER UE
-cp;0977;age=6.0;InSC=Vowel_Independent;na=DEVANAGARI LETTER UUE
+cp;0976;age=6.0;InCB=None;InSC=Vowel_Independent;na=DEVANAGARI LETTER UE
+cp;0977;age=6.0;InCB=None;InSC=Vowel_Independent;na=DEVANAGARI LETTER UUE
# Additional consonants
cp;0978;age=7.0;na=DEVANAGARI LETTER MARWARI DDA
cp;0979;age=5.2;na=DEVANAGARI LETTER ZHA
@@ -3989,44 +4006,44 @@ unassigned;0991..0992
cp;0993;InSC=Vowel_Independent;na=BENGALI LETTER O
cp;0994;InSC=Vowel_Independent;na=BENGALI LETTER AU
# Consonants
-cp;0995;na=BENGALI LETTER KA
-cp;0996;na=BENGALI LETTER KHA
-cp;0997;na=BENGALI LETTER GA
-cp;0998;na=BENGALI LETTER GHA
-cp;0999;na=BENGALI LETTER NGA
-cp;099A;na=BENGALI LETTER CA
-cp;099B;na=BENGALI LETTER CHA
-cp;099C;na=BENGALI LETTER JA
-cp;099D;na=BENGALI LETTER JHA
-cp;099E;na=BENGALI LETTER NYA
-cp;099F;na=BENGALI LETTER TTA
-cp;09A0;na=BENGALI LETTER TTHA
-cp;09A1;na=BENGALI LETTER DDA
-cp;09A2;na=BENGALI LETTER DDHA
-cp;09A3;na=BENGALI LETTER NNA
-cp;09A4;na=BENGALI LETTER TA
-cp;09A5;na=BENGALI LETTER THA
-cp;09A6;na=BENGALI LETTER DA
-cp;09A7;na=BENGALI LETTER DHA
-cp;09A8;na=BENGALI LETTER NA
+cp;0995;InCB=Consonant;na=BENGALI LETTER KA
+cp;0996;InCB=Consonant;na=BENGALI LETTER KHA
+cp;0997;InCB=Consonant;na=BENGALI LETTER GA
+cp;0998;InCB=Consonant;na=BENGALI LETTER GHA
+cp;0999;InCB=Consonant;na=BENGALI LETTER NGA
+cp;099A;InCB=Consonant;na=BENGALI LETTER CA
+cp;099B;InCB=Consonant;na=BENGALI LETTER CHA
+cp;099C;InCB=Consonant;na=BENGALI LETTER JA
+cp;099D;InCB=Consonant;na=BENGALI LETTER JHA
+cp;099E;InCB=Consonant;na=BENGALI LETTER NYA
+cp;099F;InCB=Consonant;na=BENGALI LETTER TTA
+cp;09A0;InCB=Consonant;na=BENGALI LETTER TTHA
+cp;09A1;InCB=Consonant;na=BENGALI LETTER DDA
+cp;09A2;InCB=Consonant;na=BENGALI LETTER DDHA
+cp;09A3;InCB=Consonant;na=BENGALI LETTER NNA
+cp;09A4;InCB=Consonant;na=BENGALI LETTER TA
+cp;09A5;InCB=Consonant;na=BENGALI LETTER THA
+cp;09A6;InCB=Consonant;na=BENGALI LETTER DA
+cp;09A7;InCB=Consonant;na=BENGALI LETTER DHA
+cp;09A8;InCB=Consonant;na=BENGALI LETTER NA
unassigned;09A9
-cp;09AA;na=BENGALI LETTER PA
-cp;09AB;na=BENGALI LETTER PHA
-cp;09AC;na=BENGALI LETTER BA
-cp;09AD;na=BENGALI LETTER BHA
-cp;09AE;na=BENGALI LETTER MA
-cp;09AF;na=BENGALI LETTER YA
-cp;09B0;na=BENGALI LETTER RA
+cp;09AA;InCB=Consonant;na=BENGALI LETTER PA
+cp;09AB;InCB=Consonant;na=BENGALI LETTER PHA
+cp;09AC;InCB=Consonant;na=BENGALI LETTER BA
+cp;09AD;InCB=Consonant;na=BENGALI LETTER BHA
+cp;09AE;InCB=Consonant;na=BENGALI LETTER MA
+cp;09AF;InCB=Consonant;na=BENGALI LETTER YA
+cp;09B0;InCB=Consonant;na=BENGALI LETTER RA
unassigned;09B1
-cp;09B2;na=BENGALI LETTER LA
+cp;09B2;InCB=Consonant;na=BENGALI LETTER LA
unassigned;09B3..09B5
-cp;09B6;na=BENGALI LETTER SHA
-cp;09B7;na=BENGALI LETTER SSA
-cp;09B8;na=BENGALI LETTER SA
-cp;09B9;na=BENGALI LETTER HA
+cp;09B6;InCB=Consonant;na=BENGALI LETTER SHA
+cp;09B7;InCB=Consonant;na=BENGALI LETTER SSA
+cp;09B8;InCB=Consonant;na=BENGALI LETTER SA
+cp;09B9;InCB=Consonant;na=BENGALI LETTER HA
unassigned;09BA..09BB
# Various signs
-cp;09BC;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=BENGALI SIGN NUKTA;SB=EX;WB=Extend;-XIDS
+cp;09BC;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=BENGALI SIGN NUKTA;SB=EX;WB=Extend;-XIDS
cp;09BD;age=4.0;InSC=Avagraha;na=BENGALI SIGN AVAGRAHA
# Dependent vowel signs
cp;09BE;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=BENGALI VOWEL SIGN AA;NFC_QC=M;NFKC_QC=M;SB=EX;WB=Extend;-XIDS
@@ -4044,7 +4061,7 @@ unassigned;09C9..09CA
cp;09CB;dm=09C7 09BE;dt=Can;gc=Mc;GCB=SM;-IDS;InPC=Left_And_Right;InSC=Vowel_Dependent;lb=CM;na=BENGALI VOWEL SIGN O;NFD_QC=N;NFKD_QC=N;SB=EX;WB=Extend;-XIDS
cp;09CC;dm=09C7 09D7;dt=Can;gc=Mc;GCB=SM;-IDS;InPC=Left_And_Right;InSC=Vowel_Dependent;lb=CM;na=BENGALI VOWEL SIGN AU;NFD_QC=N;NFKD_QC=N;SB=EX;WB=Extend;-XIDS
# Virama
-cp;09CD;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InPC=Bottom;InSC=Virama;jt=T;lb=CM;na=BENGALI SIGN VIRAMA;SB=EX;WB=Extend;-XIDS
+cp;09CD;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InCB=Linker;InPC=Bottom;InSC=Virama;jt=T;lb=CM;na=BENGALI SIGN VIRAMA;SB=EX;WB=Extend;-XIDS
# Additional consonant
cp;09CE;age=4.1;InSC=Consonant_Dead;na=BENGALI LETTER KHANDA TA
unassigned;09CF..09D6
@@ -4052,10 +4069,10 @@ unassigned;09CF..09D6
cp;09D7;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=BENGALI AU LENGTH MARK;NFC_QC=M;NFKC_QC=M;SB=EX;WB=Extend;-XIDS
unassigned;09D8..09DB
# Additional consonants
-cp;09DC;Comp_Ex;CWKCF;dm=09A1 09BC;dt=Can;na=BENGALI LETTER RRA;NFC_QC=N;NFD_QC=N;NFKC_CF=09A1 09BC;NFKC_QC=N;NFKD_QC=N
-cp;09DD;Comp_Ex;CWKCF;dm=09A2 09BC;dt=Can;na=BENGALI LETTER RHA;NFC_QC=N;NFD_QC=N;NFKC_CF=09A2 09BC;NFKC_QC=N;NFKD_QC=N
+cp;09DC;Comp_Ex;CWKCF;dm=09A1 09BC;dt=Can;InCB=Consonant;na=BENGALI LETTER RRA;NFC_QC=N;NFD_QC=N;NFKC_CF=09A1 09BC;NFKC_QC=N;NFKC_SCF=09A1 09BC;NFKD_QC=N
+cp;09DD;Comp_Ex;CWKCF;dm=09A2 09BC;dt=Can;InCB=Consonant;na=BENGALI LETTER RHA;NFC_QC=N;NFD_QC=N;NFKC_CF=09A2 09BC;NFKC_QC=N;NFKC_SCF=09A2 09BC;NFKD_QC=N
unassigned;09DE
-cp;09DF;Comp_Ex;CWKCF;dm=09AF 09BC;dt=Can;na=BENGALI LETTER YYA;NFC_QC=N;NFD_QC=N;NFKC_CF=09AF 09BC;NFKC_QC=N;NFKD_QC=N
+cp;09DF;Comp_Ex;CWKCF;dm=09AF 09BC;dt=Can;InCB=Consonant;na=BENGALI LETTER YYA;NFC_QC=N;NFD_QC=N;NFKC_CF=09AF 09BC;NFKC_QC=N;NFKC_SCF=09AF 09BC;NFKD_QC=N
# Additional vowels for Sanskrit
cp;09E0;InSC=Vowel_Independent;na=BENGALI LETTER VOCALIC RR
cp;09E1;InSC=Vowel_Independent;na=BENGALI LETTER VOCALIC LL
@@ -4075,8 +4092,8 @@ cp;09ED;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=BENGALI DIGIT SEVEN;nt=De;nv=7;SB
cp;09EE;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=BENGALI DIGIT EIGHT;nt=De;nv=8;SB=NU;scx=Beng Cakm Sylo;WB=NU;-XIDS
cp;09EF;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=BENGALI DIGIT NINE;nt=De;nv=9;SB=NU;scx=Beng Cakm Sylo;WB=NU;-XIDS
# Additions for Assamese
-cp;09F0;na=BENGALI LETTER RA WITH MIDDLE DIAGONAL
-cp;09F1;na=BENGALI LETTER RA WITH LOWER DIAGONAL
+cp;09F0;InCB=Consonant;na=BENGALI LETTER RA WITH MIDDLE DIAGONAL
+cp;09F1;InCB=Consonant;na=BENGALI LETTER RA WITH LOWER DIAGONAL
# Currency symbols
cp;09F2;-Alpha;bc=ET;gc=Sc;-IDC;-IDS;InSC=Other;lb=PO;na=BENGALI RUPEE MARK;SB=XX;WB=XX;-XIDC;-XIDS
cp;09F3;-Alpha;bc=ET;gc=Sc;-IDC;-IDS;InSC=Other;lb=PO;na=BENGALI RUPEE SIGN;SB=XX;WB=XX;-XIDC;-XIDS
@@ -4094,7 +4111,7 @@ cp;09FB;age=5.2;-Alpha;bc=ET;gc=Sc;-IDC;-IDS;InSC=Other;lb=PR;na=BENGALI GANDA M
# Signs
cp;09FC;age=10.0;InSC=Bindu;na=BENGALI LETTER VEDIC ANUSVARA
cp;09FD;age=10.0;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;na=BENGALI ABBREVIATION SIGN;SB=XX;WB=XX;-XIDC;-XIDS
-cp;09FE;age=11.0;-Alpha;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Syllable_Modifier;jt=T;lb=CM;na=BENGALI SANDHI MARK;SB=EX;WB=Extend;-XIDS
+cp;09FE;age=11.0;-Alpha;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Top;InSC=Syllable_Modifier;jt=T;lb=CM;na=BENGALI SANDHI MARK;SB=EX;WB=Extend;-XIDS
unassigned;09FF
block;0A00..0A7F;age=1.1;Alpha;blk=Gurmukhi;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Guru;WB=LE;XIDC;XIDS
@@ -4149,16 +4166,16 @@ cp;0A2F;na=GURMUKHI LETTER YA
cp;0A30;na=GURMUKHI LETTER RA
unassigned;0A31
cp;0A32;na=GURMUKHI LETTER LA
-cp;0A33;Comp_Ex;CWKCF;dm=0A32 0A3C;dt=Can;na=GURMUKHI LETTER LLA;NFC_QC=N;NFD_QC=N;NFKC_CF=0A32 0A3C;NFKC_QC=N;NFKD_QC=N
+cp;0A33;Comp_Ex;CWKCF;dm=0A32 0A3C;dt=Can;na=GURMUKHI LETTER LLA;NFC_QC=N;NFD_QC=N;NFKC_CF=0A32 0A3C;NFKC_QC=N;NFKC_SCF=0A32 0A3C;NFKD_QC=N
unassigned;0A34
cp;0A35;na=GURMUKHI LETTER VA
-cp;0A36;Comp_Ex;CWKCF;dm=0A38 0A3C;dt=Can;na=GURMUKHI LETTER SHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0A38 0A3C;NFKC_QC=N;NFKD_QC=N
+cp;0A36;Comp_Ex;CWKCF;dm=0A38 0A3C;dt=Can;na=GURMUKHI LETTER SHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0A38 0A3C;NFKC_QC=N;NFKC_SCF=0A38 0A3C;NFKD_QC=N
unassigned;0A37
cp;0A38;na=GURMUKHI LETTER SA
cp;0A39;na=GURMUKHI LETTER HA
unassigned;0A3A..0A3B
# Various signs
-cp;0A3C;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=GURMUKHI SIGN NUKTA;SB=EX;WB=Extend;-XIDS
+cp;0A3C;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=GURMUKHI SIGN NUKTA;SB=EX;WB=Extend;-XIDS
unassigned;0A3D
# Dependent vowel signs
cp;0A3E;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=GURMUKHI VOWEL SIGN AA;SB=EX;WB=Extend;-XIDS
@@ -4179,12 +4196,12 @@ unassigned;0A4E..0A50
cp;0A51;age=5.1;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Cantillation_Mark;jt=T;lb=CM;na=GURMUKHI SIGN UDAAT;SB=EX;WB=Extend;-XIDS
unassigned;0A52..0A58
# Additional consonants
-cp;0A59;Comp_Ex;CWKCF;dm=0A16 0A3C;dt=Can;na=GURMUKHI LETTER KHHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0A16 0A3C;NFKC_QC=N;NFKD_QC=N
-cp;0A5A;Comp_Ex;CWKCF;dm=0A17 0A3C;dt=Can;na=GURMUKHI LETTER GHHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0A17 0A3C;NFKC_QC=N;NFKD_QC=N
-cp;0A5B;Comp_Ex;CWKCF;dm=0A1C 0A3C;dt=Can;na=GURMUKHI LETTER ZA;NFC_QC=N;NFD_QC=N;NFKC_CF=0A1C 0A3C;NFKC_QC=N;NFKD_QC=N
+cp;0A59;Comp_Ex;CWKCF;dm=0A16 0A3C;dt=Can;na=GURMUKHI LETTER KHHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0A16 0A3C;NFKC_QC=N;NFKC_SCF=0A16 0A3C;NFKD_QC=N
+cp;0A5A;Comp_Ex;CWKCF;dm=0A17 0A3C;dt=Can;na=GURMUKHI LETTER GHHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0A17 0A3C;NFKC_QC=N;NFKC_SCF=0A17 0A3C;NFKD_QC=N
+cp;0A5B;Comp_Ex;CWKCF;dm=0A1C 0A3C;dt=Can;na=GURMUKHI LETTER ZA;NFC_QC=N;NFD_QC=N;NFKC_CF=0A1C 0A3C;NFKC_QC=N;NFKC_SCF=0A1C 0A3C;NFKD_QC=N
cp;0A5C;na=GURMUKHI LETTER RRA
unassigned;0A5D
-cp;0A5E;Comp_Ex;CWKCF;dm=0A2B 0A3C;dt=Can;na=GURMUKHI LETTER FA;NFC_QC=N;NFD_QC=N;NFKC_CF=0A2B 0A3C;NFKC_QC=N;NFKD_QC=N
+cp;0A5E;Comp_Ex;CWKCF;dm=0A2B 0A3C;dt=Can;na=GURMUKHI LETTER FA;NFC_QC=N;NFD_QC=N;NFKC_CF=0A2B 0A3C;NFKC_QC=N;NFKC_SCF=0A2B 0A3C;NFKD_QC=N
unassigned;0A5F..0A63
# Reserved
unassigned;0A64..0A65
@@ -4237,46 +4254,46 @@ unassigned;0A92
cp;0A93;InSC=Vowel_Independent;na=GUJARATI LETTER O
cp;0A94;InSC=Vowel_Independent;na=GUJARATI LETTER AU
# Consonants
-cp;0A95;na=GUJARATI LETTER KA
-cp;0A96;na=GUJARATI LETTER KHA
-cp;0A97;na=GUJARATI LETTER GA
-cp;0A98;na=GUJARATI LETTER GHA
-cp;0A99;na=GUJARATI LETTER NGA
-cp;0A9A;na=GUJARATI LETTER CA
-cp;0A9B;na=GUJARATI LETTER CHA
-cp;0A9C;na=GUJARATI LETTER JA
-cp;0A9D;na=GUJARATI LETTER JHA
-cp;0A9E;na=GUJARATI LETTER NYA
-cp;0A9F;na=GUJARATI LETTER TTA
-cp;0AA0;na=GUJARATI LETTER TTHA
-cp;0AA1;na=GUJARATI LETTER DDA
-cp;0AA2;na=GUJARATI LETTER DDHA
-cp;0AA3;na=GUJARATI LETTER NNA
-cp;0AA4;na=GUJARATI LETTER TA
-cp;0AA5;na=GUJARATI LETTER THA
-cp;0AA6;na=GUJARATI LETTER DA
-cp;0AA7;na=GUJARATI LETTER DHA
-cp;0AA8;na=GUJARATI LETTER NA
+cp;0A95;InCB=Consonant;na=GUJARATI LETTER KA
+cp;0A96;InCB=Consonant;na=GUJARATI LETTER KHA
+cp;0A97;InCB=Consonant;na=GUJARATI LETTER GA
+cp;0A98;InCB=Consonant;na=GUJARATI LETTER GHA
+cp;0A99;InCB=Consonant;na=GUJARATI LETTER NGA
+cp;0A9A;InCB=Consonant;na=GUJARATI LETTER CA
+cp;0A9B;InCB=Consonant;na=GUJARATI LETTER CHA
+cp;0A9C;InCB=Consonant;na=GUJARATI LETTER JA
+cp;0A9D;InCB=Consonant;na=GUJARATI LETTER JHA
+cp;0A9E;InCB=Consonant;na=GUJARATI LETTER NYA
+cp;0A9F;InCB=Consonant;na=GUJARATI LETTER TTA
+cp;0AA0;InCB=Consonant;na=GUJARATI LETTER TTHA
+cp;0AA1;InCB=Consonant;na=GUJARATI LETTER DDA
+cp;0AA2;InCB=Consonant;na=GUJARATI LETTER DDHA
+cp;0AA3;InCB=Consonant;na=GUJARATI LETTER NNA
+cp;0AA4;InCB=Consonant;na=GUJARATI LETTER TA
+cp;0AA5;InCB=Consonant;na=GUJARATI LETTER THA
+cp;0AA6;InCB=Consonant;na=GUJARATI LETTER DA
+cp;0AA7;InCB=Consonant;na=GUJARATI LETTER DHA
+cp;0AA8;InCB=Consonant;na=GUJARATI LETTER NA
unassigned;0AA9
-cp;0AAA;na=GUJARATI LETTER PA
-cp;0AAB;na=GUJARATI LETTER PHA
-cp;0AAC;na=GUJARATI LETTER BA
-cp;0AAD;na=GUJARATI LETTER BHA
-cp;0AAE;na=GUJARATI LETTER MA
-cp;0AAF;na=GUJARATI LETTER YA
-cp;0AB0;na=GUJARATI LETTER RA
+cp;0AAA;InCB=Consonant;na=GUJARATI LETTER PA
+cp;0AAB;InCB=Consonant;na=GUJARATI LETTER PHA
+cp;0AAC;InCB=Consonant;na=GUJARATI LETTER BA
+cp;0AAD;InCB=Consonant;na=GUJARATI LETTER BHA
+cp;0AAE;InCB=Consonant;na=GUJARATI LETTER MA
+cp;0AAF;InCB=Consonant;na=GUJARATI LETTER YA
+cp;0AB0;InCB=Consonant;na=GUJARATI LETTER RA
unassigned;0AB1
-cp;0AB2;na=GUJARATI LETTER LA
-cp;0AB3;na=GUJARATI LETTER LLA
+cp;0AB2;InCB=Consonant;na=GUJARATI LETTER LA
+cp;0AB3;InCB=Consonant;na=GUJARATI LETTER LLA
unassigned;0AB4
-cp;0AB5;na=GUJARATI LETTER VA
-cp;0AB6;na=GUJARATI LETTER SHA
-cp;0AB7;na=GUJARATI LETTER SSA
-cp;0AB8;na=GUJARATI LETTER SA
-cp;0AB9;na=GUJARATI LETTER HA
+cp;0AB5;InCB=Consonant;na=GUJARATI LETTER VA
+cp;0AB6;InCB=Consonant;na=GUJARATI LETTER SHA
+cp;0AB7;InCB=Consonant;na=GUJARATI LETTER SSA
+cp;0AB8;InCB=Consonant;na=GUJARATI LETTER SA
+cp;0AB9;InCB=Consonant;na=GUJARATI LETTER HA
unassigned;0ABA..0ABB
# Various signs
-cp;0ABC;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=GUJARATI SIGN NUKTA;SB=EX;WB=Extend;-XIDS
+cp;0ABC;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=GUJARATI SIGN NUKTA;SB=EX;WB=Extend;-XIDS
cp;0ABD;InSC=Avagraha;na=GUJARATI SIGN AVAGRAHA
# Dependent vowel signs
cp;0ABE;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=GUJARATI VOWEL SIGN AA;SB=EX;WB=Extend;-XIDS
@@ -4295,7 +4312,7 @@ unassigned;0ACA
cp;0ACB;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=GUJARATI VOWEL SIGN O;SB=EX;WB=Extend;-XIDS
cp;0ACC;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=GUJARATI VOWEL SIGN AU;SB=EX;WB=Extend;-XIDS
# Virama
-cp;0ACD;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InPC=Bottom;InSC=Virama;jt=T;lb=CM;na=GUJARATI SIGN VIRAMA;SB=EX;WB=Extend;-XIDS
+cp;0ACD;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InCB=Linker;InPC=Bottom;InSC=Virama;jt=T;lb=CM;na=GUJARATI SIGN VIRAMA;SB=EX;WB=Extend;-XIDS
unassigned;0ACE..0ACF
# Various signs
cp;0AD0;InSC=Other;na=GUJARATI OM
@@ -4324,7 +4341,7 @@ cp;0AF0;age=6.1;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;na=GUJARATI ABBREVIATION SIGN;
cp;0AF1;age=4.0;-Alpha;bc=ET;gc=Sc;-IDC;-IDS;InSC=Other;lb=PR;na=GUJARATI RUPEE SIGN;SB=XX;WB=XX;-XIDC;-XIDS
unassigned;0AF2..0AF8
# Additional consonant
-cp;0AF9;age=8.0;na=GUJARATI LETTER ZHA
+cp;0AF9;age=8.0;InCB=Consonant;na=GUJARATI LETTER ZHA
# Transliteration signs
cp;0AFA;age=10.0;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Cantillation_Mark;jt=T;lb=CM;na=GUJARATI SIGN SUKUN;SB=EX;WB=Extend;-XIDS
cp;0AFB;age=10.0;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Gemination_Mark;jt=T;lb=CM;na=GUJARATI SIGN SHADDA;SB=EX;WB=Extend;-XIDS
@@ -4333,29 +4350,29 @@ cp;0AFD;age=10.0;-Alpha;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top
cp;0AFE;age=10.0;-Alpha;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Nukta;jt=T;lb=CM;na=GUJARATI SIGN CIRCLE NUKTA ABOVE;SB=EX;WB=Extend;-XIDS
cp;0AFF;age=10.0;-Alpha;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Nukta;jt=T;lb=CM;na=GUJARATI SIGN TWO-CIRCLE NUKTA ABOVE;SB=EX;WB=Extend;-XIDS
-block;0B00..0B7F;age=1.1;Alpha;blk=Oriya;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Orya;WB=LE;XIDC;XIDS
+block;0B00..0B7F;age=1.1;Alpha;blk=Oriya;gc=Lo;Gr_Base;IDC;IDS;InCB=Consonant;InSC=Consonant;lb=AL;SB=LE;sc=Orya;WB=LE;XIDC;XIDS
# 0B00..0B7F Oriya
unassigned;0B00
# Various signs
-cp;0B01;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=ORIYA SIGN CANDRABINDU;SB=EX;WB=Extend;-XIDS
-cp;0B02;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Bindu;lb=CM;na=ORIYA SIGN ANUSVARA;SB=EX;WB=Extend;-XIDS
-cp;0B03;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Visarga;lb=CM;na=ORIYA SIGN VISARGA;SB=EX;WB=Extend;-XIDS
+cp;0B01;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=None;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=ORIYA SIGN CANDRABINDU;SB=EX;WB=Extend;-XIDS
+cp;0B02;gc=Mc;GCB=SM;-IDS;InCB=None;InPC=Right;InSC=Bindu;lb=CM;na=ORIYA SIGN ANUSVARA;SB=EX;WB=Extend;-XIDS
+cp;0B03;gc=Mc;GCB=SM;-IDS;InCB=None;InPC=Right;InSC=Visarga;lb=CM;na=ORIYA SIGN VISARGA;SB=EX;WB=Extend;-XIDS
unassigned;0B04
# Independent vowels
-cp;0B05;InSC=Vowel_Independent;na=ORIYA LETTER A
-cp;0B06;InSC=Vowel_Independent;na=ORIYA LETTER AA
-cp;0B07;InSC=Vowel_Independent;na=ORIYA LETTER I
-cp;0B08;InSC=Vowel_Independent;na=ORIYA LETTER II
-cp;0B09;InSC=Vowel_Independent;na=ORIYA LETTER U
-cp;0B0A;InSC=Vowel_Independent;na=ORIYA LETTER UU
-cp;0B0B;InSC=Vowel_Independent;na=ORIYA LETTER VOCALIC R
-cp;0B0C;InSC=Vowel_Independent;na=ORIYA LETTER VOCALIC L
+cp;0B05;InCB=None;InSC=Vowel_Independent;na=ORIYA LETTER A
+cp;0B06;InCB=None;InSC=Vowel_Independent;na=ORIYA LETTER AA
+cp;0B07;InCB=None;InSC=Vowel_Independent;na=ORIYA LETTER I
+cp;0B08;InCB=None;InSC=Vowel_Independent;na=ORIYA LETTER II
+cp;0B09;InCB=None;InSC=Vowel_Independent;na=ORIYA LETTER U
+cp;0B0A;InCB=None;InSC=Vowel_Independent;na=ORIYA LETTER UU
+cp;0B0B;InCB=None;InSC=Vowel_Independent;na=ORIYA LETTER VOCALIC R
+cp;0B0C;InCB=None;InSC=Vowel_Independent;na=ORIYA LETTER VOCALIC L
unassigned;0B0D..0B0E
-cp;0B0F;InSC=Vowel_Independent;na=ORIYA LETTER E
-cp;0B10;InSC=Vowel_Independent;na=ORIYA LETTER AI
+cp;0B0F;InCB=None;InSC=Vowel_Independent;na=ORIYA LETTER E
+cp;0B10;InCB=None;InSC=Vowel_Independent;na=ORIYA LETTER AI
unassigned;0B11..0B12
-cp;0B13;InSC=Vowel_Independent;na=ORIYA LETTER O
-cp;0B14;InSC=Vowel_Independent;na=ORIYA LETTER AU
+cp;0B13;InCB=None;InSC=Vowel_Independent;na=ORIYA LETTER O
+cp;0B14;InCB=None;InSC=Vowel_Independent;na=ORIYA LETTER AU
# Consonants
cp;0B15;na=ORIYA LETTER KA
cp;0B16;na=ORIYA LETTER KHA
@@ -4396,66 +4413,66 @@ cp;0B38;na=ORIYA LETTER SA
cp;0B39;na=ORIYA LETTER HA
unassigned;0B3A..0B3B
# Various signs
-cp;0B3C;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=ORIYA SIGN NUKTA;SB=EX;WB=Extend;-XIDS
-cp;0B3D;InSC=Avagraha;na=ORIYA SIGN AVAGRAHA
+cp;0B3C;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=ORIYA SIGN NUKTA;SB=EX;WB=Extend;-XIDS
+cp;0B3D;InCB=None;InSC=Avagraha;na=ORIYA SIGN AVAGRAHA
# Dependent vowel signs
-cp;0B3E;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=ORIYA VOWEL SIGN AA;NFC_QC=M;NFKC_QC=M;SB=EX;WB=Extend;-XIDS
-cp;0B3F;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=ORIYA VOWEL SIGN I;SB=EX;WB=Extend;-XIDS
-cp;0B40;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=ORIYA VOWEL SIGN II;SB=EX;WB=Extend;-XIDS
-cp;0B41;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=ORIYA VOWEL SIGN U;SB=EX;WB=Extend;-XIDS
-cp;0B42;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=ORIYA VOWEL SIGN UU;SB=EX;WB=Extend;-XIDS
-cp;0B43;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=ORIYA VOWEL SIGN VOCALIC R;SB=EX;WB=Extend;-XIDS
-cp;0B44;age=5.1;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=ORIYA VOWEL SIGN VOCALIC RR;SB=EX;WB=Extend;-XIDS
+cp;0B3E;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=None;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=ORIYA VOWEL SIGN AA;NFC_QC=M;NFKC_QC=M;SB=EX;WB=Extend;-XIDS
+cp;0B3F;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=None;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=ORIYA VOWEL SIGN I;SB=EX;WB=Extend;-XIDS
+cp;0B40;gc=Mc;GCB=SM;-IDS;InCB=None;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=ORIYA VOWEL SIGN II;SB=EX;WB=Extend;-XIDS
+cp;0B41;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=None;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=ORIYA VOWEL SIGN U;SB=EX;WB=Extend;-XIDS
+cp;0B42;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=None;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=ORIYA VOWEL SIGN UU;SB=EX;WB=Extend;-XIDS
+cp;0B43;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=None;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=ORIYA VOWEL SIGN VOCALIC R;SB=EX;WB=Extend;-XIDS
+cp;0B44;age=5.1;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=None;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=ORIYA VOWEL SIGN VOCALIC RR;SB=EX;WB=Extend;-XIDS
unassigned;0B45..0B46
-cp;0B47;gc=Mc;GCB=SM;-IDS;InPC=Left;InSC=Vowel_Dependent;lb=CM;na=ORIYA VOWEL SIGN E;SB=EX;WB=Extend;-XIDS
-cp;0B48;dm=0B47 0B56;dt=Can;gc=Mc;GCB=SM;-IDS;InPC=Top_And_Left;InSC=Vowel_Dependent;lb=CM;na=ORIYA VOWEL SIGN AI;NFD_QC=N;NFKD_QC=N;SB=EX;WB=Extend;-XIDS
+cp;0B47;gc=Mc;GCB=SM;-IDS;InCB=None;InPC=Left;InSC=Vowel_Dependent;lb=CM;na=ORIYA VOWEL SIGN E;SB=EX;WB=Extend;-XIDS
+cp;0B48;dm=0B47 0B56;dt=Can;gc=Mc;GCB=SM;-IDS;InCB=None;InPC=Top_And_Left;InSC=Vowel_Dependent;lb=CM;na=ORIYA VOWEL SIGN AI;NFD_QC=N;NFKD_QC=N;SB=EX;WB=Extend;-XIDS
unassigned;0B49..0B4A
# Two-part dependent vowel signs
-cp;0B4B;dm=0B47 0B3E;dt=Can;gc=Mc;GCB=SM;-IDS;InPC=Left_And_Right;InSC=Vowel_Dependent;lb=CM;na=ORIYA VOWEL SIGN O;NFD_QC=N;NFKD_QC=N;SB=EX;WB=Extend;-XIDS
-cp;0B4C;dm=0B47 0B57;dt=Can;gc=Mc;GCB=SM;-IDS;InPC=Top_And_Left_And_Right;InSC=Vowel_Dependent;lb=CM;na=ORIYA VOWEL SIGN AU;NFD_QC=N;NFKD_QC=N;SB=EX;WB=Extend;-XIDS
+cp;0B4B;dm=0B47 0B3E;dt=Can;gc=Mc;GCB=SM;-IDS;InCB=None;InPC=Left_And_Right;InSC=Vowel_Dependent;lb=CM;na=ORIYA VOWEL SIGN O;NFD_QC=N;NFKD_QC=N;SB=EX;WB=Extend;-XIDS
+cp;0B4C;dm=0B47 0B57;dt=Can;gc=Mc;GCB=SM;-IDS;InCB=None;InPC=Top_And_Left_And_Right;InSC=Vowel_Dependent;lb=CM;na=ORIYA VOWEL SIGN AU;NFD_QC=N;NFKD_QC=N;SB=EX;WB=Extend;-XIDS
# Virama
-cp;0B4D;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InPC=Bottom;InSC=Virama;jt=T;lb=CM;na=ORIYA SIGN VIRAMA;SB=EX;WB=Extend;-XIDS
+cp;0B4D;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InCB=Linker;InPC=Bottom;InSC=Virama;jt=T;lb=CM;na=ORIYA SIGN VIRAMA;SB=EX;WB=Extend;-XIDS
unassigned;0B4E..0B54
# Various signs
-cp;0B55;age=13.0;-Alpha;bc=NSM;CI;Dia;Ext;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=ORIYA SIGN OVERLINE;SB=EX;WB=Extend;-XIDS
-cp;0B56;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=ORIYA AI LENGTH MARK;NFC_QC=M;NFKC_QC=M;SB=EX;WB=Extend;-XIDS
-cp;0B57;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top_And_Right;InSC=Vowel_Dependent;lb=CM;na=ORIYA AU LENGTH MARK;NFC_QC=M;NFKC_QC=M;SB=EX;WB=Extend;-XIDS
+cp;0B55;age=13.0;-Alpha;bc=NSM;CI;Dia;Ext;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=None;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=ORIYA SIGN OVERLINE;SB=EX;WB=Extend;-XIDS
+cp;0B56;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=None;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=ORIYA AI LENGTH MARK;NFC_QC=M;NFKC_QC=M;SB=EX;WB=Extend;-XIDS
+cp;0B57;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=None;InPC=Top_And_Right;InSC=Vowel_Dependent;lb=CM;na=ORIYA AU LENGTH MARK;NFC_QC=M;NFKC_QC=M;SB=EX;WB=Extend;-XIDS
unassigned;0B58..0B5B
# Additional consonants
-cp;0B5C;Comp_Ex;CWKCF;dm=0B21 0B3C;dt=Can;na=ORIYA LETTER RRA;NFC_QC=N;NFD_QC=N;NFKC_CF=0B21 0B3C;NFKC_QC=N;NFKD_QC=N
-cp;0B5D;Comp_Ex;CWKCF;dm=0B22 0B3C;dt=Can;na=ORIYA LETTER RHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0B22 0B3C;NFKC_QC=N;NFKD_QC=N
+cp;0B5C;Comp_Ex;CWKCF;dm=0B21 0B3C;dt=Can;na=ORIYA LETTER RRA;NFC_QC=N;NFD_QC=N;NFKC_CF=0B21 0B3C;NFKC_QC=N;NFKC_SCF=0B21 0B3C;NFKD_QC=N
+cp;0B5D;Comp_Ex;CWKCF;dm=0B22 0B3C;dt=Can;na=ORIYA LETTER RHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0B22 0B3C;NFKC_QC=N;NFKC_SCF=0B22 0B3C;NFKD_QC=N
unassigned;0B5E
cp;0B5F;na=ORIYA LETTER YYA
# Additional vowels for Sanskrit
-cp;0B60;InSC=Vowel_Independent;na=ORIYA LETTER VOCALIC RR
-cp;0B61;InSC=Vowel_Independent;na=ORIYA LETTER VOCALIC LL
+cp;0B60;InCB=None;InSC=Vowel_Independent;na=ORIYA LETTER VOCALIC RR
+cp;0B61;InCB=None;InSC=Vowel_Independent;na=ORIYA LETTER VOCALIC LL
# Dependent vowels
-cp;0B62;age=5.1;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=ORIYA VOWEL SIGN VOCALIC L;SB=EX;WB=Extend;-XIDS
-cp;0B63;age=5.1;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=ORIYA VOWEL SIGN VOCALIC LL;SB=EX;WB=Extend;-XIDS
+cp;0B62;age=5.1;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=None;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=ORIYA VOWEL SIGN VOCALIC L;SB=EX;WB=Extend;-XIDS
+cp;0B63;age=5.1;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=None;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=ORIYA VOWEL SIGN VOCALIC LL;SB=EX;WB=Extend;-XIDS
# Reserved
unassigned;0B64..0B65
# Digits
-cp;0B66;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=ORIYA DIGIT ZERO;nt=De;nv=0;SB=NU;WB=NU;-XIDS
-cp;0B67;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=ORIYA DIGIT ONE;nt=De;nv=1;SB=NU;WB=NU;-XIDS
-cp;0B68;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=ORIYA DIGIT TWO;nt=De;nv=2;SB=NU;WB=NU;-XIDS
-cp;0B69;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=ORIYA DIGIT THREE;nt=De;nv=3;SB=NU;WB=NU;-XIDS
-cp;0B6A;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=ORIYA DIGIT FOUR;nt=De;nv=4;SB=NU;WB=NU;-XIDS
-cp;0B6B;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=ORIYA DIGIT FIVE;nt=De;nv=5;SB=NU;WB=NU;-XIDS
-cp;0B6C;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=ORIYA DIGIT SIX;nt=De;nv=6;SB=NU;WB=NU;-XIDS
-cp;0B6D;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=ORIYA DIGIT SEVEN;nt=De;nv=7;SB=NU;WB=NU;-XIDS
-cp;0B6E;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=ORIYA DIGIT EIGHT;nt=De;nv=8;SB=NU;WB=NU;-XIDS
-cp;0B6F;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=ORIYA DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU;-XIDS
+cp;0B66;-Alpha;gc=Nd;-IDS;InCB=None;InSC=Number;lb=NU;na=ORIYA DIGIT ZERO;nt=De;nv=0;SB=NU;WB=NU;-XIDS
+cp;0B67;-Alpha;gc=Nd;-IDS;InCB=None;InSC=Number;lb=NU;na=ORIYA DIGIT ONE;nt=De;nv=1;SB=NU;WB=NU;-XIDS
+cp;0B68;-Alpha;gc=Nd;-IDS;InCB=None;InSC=Number;lb=NU;na=ORIYA DIGIT TWO;nt=De;nv=2;SB=NU;WB=NU;-XIDS
+cp;0B69;-Alpha;gc=Nd;-IDS;InCB=None;InSC=Number;lb=NU;na=ORIYA DIGIT THREE;nt=De;nv=3;SB=NU;WB=NU;-XIDS
+cp;0B6A;-Alpha;gc=Nd;-IDS;InCB=None;InSC=Number;lb=NU;na=ORIYA DIGIT FOUR;nt=De;nv=4;SB=NU;WB=NU;-XIDS
+cp;0B6B;-Alpha;gc=Nd;-IDS;InCB=None;InSC=Number;lb=NU;na=ORIYA DIGIT FIVE;nt=De;nv=5;SB=NU;WB=NU;-XIDS
+cp;0B6C;-Alpha;gc=Nd;-IDS;InCB=None;InSC=Number;lb=NU;na=ORIYA DIGIT SIX;nt=De;nv=6;SB=NU;WB=NU;-XIDS
+cp;0B6D;-Alpha;gc=Nd;-IDS;InCB=None;InSC=Number;lb=NU;na=ORIYA DIGIT SEVEN;nt=De;nv=7;SB=NU;WB=NU;-XIDS
+cp;0B6E;-Alpha;gc=Nd;-IDS;InCB=None;InSC=Number;lb=NU;na=ORIYA DIGIT EIGHT;nt=De;nv=8;SB=NU;WB=NU;-XIDS
+cp;0B6F;-Alpha;gc=Nd;-IDS;InCB=None;InSC=Number;lb=NU;na=ORIYA DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU;-XIDS
# Sign
-cp;0B70;-Alpha;gc=So;-IDC;-IDS;InSC=Other;na=ORIYA ISSHAR;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0B70;-Alpha;gc=So;-IDC;-IDS;InCB=None;InSC=Other;na=ORIYA ISSHAR;SB=XX;WB=XX;-XIDC;-XIDS
# Additional consonant
cp;0B71;age=4.0;na=ORIYA LETTER WA
# Fraction signs
-cp;0B72;age=6.0;-Alpha;gc=No;-IDC;-IDS;InSC=Other;na=ORIYA FRACTION ONE QUARTER;nt=Nu;nv=1/4;SB=XX;WB=XX;-XIDC;-XIDS
-cp;0B73;age=6.0;-Alpha;gc=No;-IDC;-IDS;InSC=Other;na=ORIYA FRACTION ONE HALF;nt=Nu;nv=1/2;SB=XX;WB=XX;-XIDC;-XIDS
-cp;0B74;age=6.0;-Alpha;gc=No;-IDC;-IDS;InSC=Other;na=ORIYA FRACTION THREE QUARTERS;nt=Nu;nv=3/4;SB=XX;WB=XX;-XIDC;-XIDS
-cp;0B75;age=6.0;-Alpha;gc=No;-IDC;-IDS;InSC=Other;na=ORIYA FRACTION ONE SIXTEENTH;nt=Nu;nv=1/16;SB=XX;WB=XX;-XIDC;-XIDS
-cp;0B76;age=6.0;-Alpha;gc=No;-IDC;-IDS;InSC=Other;na=ORIYA FRACTION ONE EIGHTH;nt=Nu;nv=1/8;SB=XX;WB=XX;-XIDC;-XIDS
-cp;0B77;age=6.0;-Alpha;gc=No;-IDC;-IDS;InSC=Other;na=ORIYA FRACTION THREE SIXTEENTHS;nt=Nu;nv=3/16;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0B72;age=6.0;-Alpha;gc=No;-IDC;-IDS;InCB=None;InSC=Other;na=ORIYA FRACTION ONE QUARTER;nt=Nu;nv=1/4;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0B73;age=6.0;-Alpha;gc=No;-IDC;-IDS;InCB=None;InSC=Other;na=ORIYA FRACTION ONE HALF;nt=Nu;nv=1/2;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0B74;age=6.0;-Alpha;gc=No;-IDC;-IDS;InCB=None;InSC=Other;na=ORIYA FRACTION THREE QUARTERS;nt=Nu;nv=3/4;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0B75;age=6.0;-Alpha;gc=No;-IDC;-IDS;InCB=None;InSC=Other;na=ORIYA FRACTION ONE SIXTEENTH;nt=Nu;nv=1/16;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0B76;age=6.0;-Alpha;gc=No;-IDC;-IDS;InCB=None;InSC=Other;na=ORIYA FRACTION ONE EIGHTH;nt=Nu;nv=1/8;SB=XX;WB=XX;-XIDC;-XIDS
+cp;0B77;age=6.0;-Alpha;gc=No;-IDC;-IDS;InCB=None;InSC=Other;na=ORIYA FRACTION THREE SIXTEENTHS;nt=Nu;nv=3/16;SB=XX;WB=XX;-XIDC;-XIDS
unassigned;0B78..0B7F
block;0B80..0BFF;age=1.1;Alpha;blk=Tamil;gc=Lo;Gr_Base;IDC;InSC=Consonant;lb=AL;SB=LE;sc=Taml;WB=LE;XIDC
@@ -4591,46 +4608,46 @@ cp;0C12;InSC=Vowel_Independent;na=TELUGU LETTER O
cp;0C13;InSC=Vowel_Independent;na=TELUGU LETTER OO
cp;0C14;InSC=Vowel_Independent;na=TELUGU LETTER AU
# Consonants
-cp;0C15;na=TELUGU LETTER KA
-cp;0C16;na=TELUGU LETTER KHA
-cp;0C17;na=TELUGU LETTER GA
-cp;0C18;na=TELUGU LETTER GHA
-cp;0C19;na=TELUGU LETTER NGA
-cp;0C1A;na=TELUGU LETTER CA
-cp;0C1B;na=TELUGU LETTER CHA
-cp;0C1C;na=TELUGU LETTER JA
-cp;0C1D;na=TELUGU LETTER JHA
-cp;0C1E;na=TELUGU LETTER NYA
-cp;0C1F;na=TELUGU LETTER TTA
-cp;0C20;na=TELUGU LETTER TTHA
-cp;0C21;na=TELUGU LETTER DDA
-cp;0C22;na=TELUGU LETTER DDHA
-cp;0C23;na=TELUGU LETTER NNA
-cp;0C24;na=TELUGU LETTER TA
-cp;0C25;na=TELUGU LETTER THA
-cp;0C26;na=TELUGU LETTER DA
-cp;0C27;na=TELUGU LETTER DHA
-cp;0C28;na=TELUGU LETTER NA
+cp;0C15;InCB=Consonant;na=TELUGU LETTER KA
+cp;0C16;InCB=Consonant;na=TELUGU LETTER KHA
+cp;0C17;InCB=Consonant;na=TELUGU LETTER GA
+cp;0C18;InCB=Consonant;na=TELUGU LETTER GHA
+cp;0C19;InCB=Consonant;na=TELUGU LETTER NGA
+cp;0C1A;InCB=Consonant;na=TELUGU LETTER CA
+cp;0C1B;InCB=Consonant;na=TELUGU LETTER CHA
+cp;0C1C;InCB=Consonant;na=TELUGU LETTER JA
+cp;0C1D;InCB=Consonant;na=TELUGU LETTER JHA
+cp;0C1E;InCB=Consonant;na=TELUGU LETTER NYA
+cp;0C1F;InCB=Consonant;na=TELUGU LETTER TTA
+cp;0C20;InCB=Consonant;na=TELUGU LETTER TTHA
+cp;0C21;InCB=Consonant;na=TELUGU LETTER DDA
+cp;0C22;InCB=Consonant;na=TELUGU LETTER DDHA
+cp;0C23;InCB=Consonant;na=TELUGU LETTER NNA
+cp;0C24;InCB=Consonant;na=TELUGU LETTER TA
+cp;0C25;InCB=Consonant;na=TELUGU LETTER THA
+cp;0C26;InCB=Consonant;na=TELUGU LETTER DA
+cp;0C27;InCB=Consonant;na=TELUGU LETTER DHA
+cp;0C28;InCB=Consonant;na=TELUGU LETTER NA
unassigned;0C29
-cp;0C2A;na=TELUGU LETTER PA
-cp;0C2B;na=TELUGU LETTER PHA
-cp;0C2C;na=TELUGU LETTER BA
-cp;0C2D;na=TELUGU LETTER BHA
-cp;0C2E;na=TELUGU LETTER MA
-cp;0C2F;na=TELUGU LETTER YA
-cp;0C30;na=TELUGU LETTER RA
-cp;0C31;na=TELUGU LETTER RRA
-cp;0C32;na=TELUGU LETTER LA
-cp;0C33;na=TELUGU LETTER LLA
-cp;0C34;age=7.0;na=TELUGU LETTER LLLA
-cp;0C35;na=TELUGU LETTER VA
-cp;0C36;na=TELUGU LETTER SHA
-cp;0C37;na=TELUGU LETTER SSA
-cp;0C38;na=TELUGU LETTER SA
-cp;0C39;na=TELUGU LETTER HA
+cp;0C2A;InCB=Consonant;na=TELUGU LETTER PA
+cp;0C2B;InCB=Consonant;na=TELUGU LETTER PHA
+cp;0C2C;InCB=Consonant;na=TELUGU LETTER BA
+cp;0C2D;InCB=Consonant;na=TELUGU LETTER BHA
+cp;0C2E;InCB=Consonant;na=TELUGU LETTER MA
+cp;0C2F;InCB=Consonant;na=TELUGU LETTER YA
+cp;0C30;InCB=Consonant;na=TELUGU LETTER RA
+cp;0C31;InCB=Consonant;na=TELUGU LETTER RRA
+cp;0C32;InCB=Consonant;na=TELUGU LETTER LA
+cp;0C33;InCB=Consonant;na=TELUGU LETTER LLA
+cp;0C34;age=7.0;InCB=Consonant;na=TELUGU LETTER LLLA
+cp;0C35;InCB=Consonant;na=TELUGU LETTER VA
+cp;0C36;InCB=Consonant;na=TELUGU LETTER SHA
+cp;0C37;InCB=Consonant;na=TELUGU LETTER SSA
+cp;0C38;InCB=Consonant;na=TELUGU LETTER SA
+cp;0C39;InCB=Consonant;na=TELUGU LETTER HA
unassigned;0C3A..0C3B
# Sign
-cp;0C3C;age=14.0;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=TELUGU SIGN NUKTA;SB=EX;WB=Extend;-XIDS
+cp;0C3C;age=14.0;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=TELUGU SIGN NUKTA;SB=EX;WB=Extend;-XIDS
# Addition for Sanskrit
cp;0C3D;age=5.1;InSC=Avagraha;na=TELUGU SIGN AVAGRAHA
# Dependent vowel signs
@@ -4650,16 +4667,16 @@ cp;0C4A;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependen
cp;0C4B;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=TELUGU VOWEL SIGN OO;SB=EX;WB=Extend;-XIDS
cp;0C4C;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=TELUGU VOWEL SIGN AU;SB=EX;WB=Extend;-XIDS
# Virama
-cp;0C4D;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InPC=Top;InSC=Virama;jt=T;lb=CM;na=TELUGU SIGN VIRAMA;SB=EX;WB=Extend;-XIDS
+cp;0C4D;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InCB=Linker;InPC=Top;InSC=Virama;jt=T;lb=CM;na=TELUGU SIGN VIRAMA;SB=EX;WB=Extend;-XIDS
unassigned;0C4E..0C54
# Various signs
-cp;0C55;bc=NSM;ccc=84;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=TELUGU LENGTH MARK;SB=EX;WB=Extend;-XIDS
-cp;0C56;bc=NSM;ccc=91;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=TELUGU AI LENGTH MARK;NFC_QC=M;NFKC_QC=M;SB=EX;WB=Extend;-XIDS
+cp;0C55;bc=NSM;ccc=84;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=TELUGU LENGTH MARK;SB=EX;WB=Extend;-XIDS
+cp;0C56;bc=NSM;ccc=91;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=TELUGU AI LENGTH MARK;NFC_QC=M;NFKC_QC=M;SB=EX;WB=Extend;-XIDS
unassigned;0C57
# Historic phonetic variants
-cp;0C58;age=5.1;na=TELUGU LETTER TSA
-cp;0C59;age=5.1;na=TELUGU LETTER DZA
-cp;0C5A;age=8.0;na=TELUGU LETTER RRRA
+cp;0C58;age=5.1;InCB=Consonant;na=TELUGU LETTER TSA
+cp;0C59;age=5.1;InCB=Consonant;na=TELUGU LETTER DZA
+cp;0C5A;age=8.0;InCB=Consonant;na=TELUGU LETTER RRRA
unassigned;0C5B..0C5C
# Consonant
cp;0C5D;age=14.0;InSC=Consonant_Dead;na=TELUGU LETTER NAKAARA POLLU
@@ -4761,7 +4778,7 @@ cp;0CB8;na=KANNADA LETTER SA
cp;0CB9;na=KANNADA LETTER HA
unassigned;0CBA..0CBB
# Various signs
-cp;0CBC;age=4.0;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=KANNADA SIGN NUKTA;SB=EX;WB=Extend;-XIDS
+cp;0CBC;age=4.0;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=KANNADA SIGN NUKTA;SB=EX;WB=Extend;-XIDS
cp;0CBD;age=4.0;InSC=Avagraha;na=KANNADA SIGN AVAGRAHA
# Dependent vowel signs
cp;0CBE;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=KANNADA VOWEL SIGN AA;SB=EX;WB=Extend;-XIDS
@@ -4842,47 +4859,47 @@ cp;0D12;InSC=Vowel_Independent;na=MALAYALAM LETTER O
cp;0D13;InSC=Vowel_Independent;na=MALAYALAM LETTER OO
cp;0D14;InSC=Vowel_Independent;na=MALAYALAM LETTER AU
# Consonants
-cp;0D15;na=MALAYALAM LETTER KA
-cp;0D16;na=MALAYALAM LETTER KHA
-cp;0D17;na=MALAYALAM LETTER GA
-cp;0D18;na=MALAYALAM LETTER GHA
-cp;0D19;na=MALAYALAM LETTER NGA
-cp;0D1A;na=MALAYALAM LETTER CA
-cp;0D1B;na=MALAYALAM LETTER CHA
-cp;0D1C;na=MALAYALAM LETTER JA
-cp;0D1D;na=MALAYALAM LETTER JHA
-cp;0D1E;na=MALAYALAM LETTER NYA
-cp;0D1F;na=MALAYALAM LETTER TTA
-cp;0D20;na=MALAYALAM LETTER TTHA
-cp;0D21;na=MALAYALAM LETTER DDA
-cp;0D22;na=MALAYALAM LETTER DDHA
-cp;0D23;na=MALAYALAM LETTER NNA
-cp;0D24;na=MALAYALAM LETTER TA
-cp;0D25;na=MALAYALAM LETTER THA
-cp;0D26;na=MALAYALAM LETTER DA
-cp;0D27;na=MALAYALAM LETTER DHA
-cp;0D28;na=MALAYALAM LETTER NA
-cp;0D29;age=6.0;na=MALAYALAM LETTER NNNA
-cp;0D2A;na=MALAYALAM LETTER PA
-cp;0D2B;na=MALAYALAM LETTER PHA
-cp;0D2C;na=MALAYALAM LETTER BA
-cp;0D2D;na=MALAYALAM LETTER BHA
-cp;0D2E;na=MALAYALAM LETTER MA
-cp;0D2F;na=MALAYALAM LETTER YA
-cp;0D30;na=MALAYALAM LETTER RA
-cp;0D31;na=MALAYALAM LETTER RRA
-cp;0D32;na=MALAYALAM LETTER LA
-cp;0D33;na=MALAYALAM LETTER LLA
-cp;0D34;na=MALAYALAM LETTER LLLA
-cp;0D35;na=MALAYALAM LETTER VA
-cp;0D36;na=MALAYALAM LETTER SHA
-cp;0D37;na=MALAYALAM LETTER SSA
-cp;0D38;na=MALAYALAM LETTER SA
-cp;0D39;na=MALAYALAM LETTER HA
-cp;0D3A;age=6.0;na=MALAYALAM LETTER TTTA
+cp;0D15;InCB=Consonant;na=MALAYALAM LETTER KA
+cp;0D16;InCB=Consonant;na=MALAYALAM LETTER KHA
+cp;0D17;InCB=Consonant;na=MALAYALAM LETTER GA
+cp;0D18;InCB=Consonant;na=MALAYALAM LETTER GHA
+cp;0D19;InCB=Consonant;na=MALAYALAM LETTER NGA
+cp;0D1A;InCB=Consonant;na=MALAYALAM LETTER CA
+cp;0D1B;InCB=Consonant;na=MALAYALAM LETTER CHA
+cp;0D1C;InCB=Consonant;na=MALAYALAM LETTER JA
+cp;0D1D;InCB=Consonant;na=MALAYALAM LETTER JHA
+cp;0D1E;InCB=Consonant;na=MALAYALAM LETTER NYA
+cp;0D1F;InCB=Consonant;na=MALAYALAM LETTER TTA
+cp;0D20;InCB=Consonant;na=MALAYALAM LETTER TTHA
+cp;0D21;InCB=Consonant;na=MALAYALAM LETTER DDA
+cp;0D22;InCB=Consonant;na=MALAYALAM LETTER DDHA
+cp;0D23;InCB=Consonant;na=MALAYALAM LETTER NNA
+cp;0D24;InCB=Consonant;na=MALAYALAM LETTER TA
+cp;0D25;InCB=Consonant;na=MALAYALAM LETTER THA
+cp;0D26;InCB=Consonant;na=MALAYALAM LETTER DA
+cp;0D27;InCB=Consonant;na=MALAYALAM LETTER DHA
+cp;0D28;InCB=Consonant;na=MALAYALAM LETTER NA
+cp;0D29;age=6.0;InCB=Consonant;na=MALAYALAM LETTER NNNA
+cp;0D2A;InCB=Consonant;na=MALAYALAM LETTER PA
+cp;0D2B;InCB=Consonant;na=MALAYALAM LETTER PHA
+cp;0D2C;InCB=Consonant;na=MALAYALAM LETTER BA
+cp;0D2D;InCB=Consonant;na=MALAYALAM LETTER BHA
+cp;0D2E;InCB=Consonant;na=MALAYALAM LETTER MA
+cp;0D2F;InCB=Consonant;na=MALAYALAM LETTER YA
+cp;0D30;InCB=Consonant;na=MALAYALAM LETTER RA
+cp;0D31;InCB=Consonant;na=MALAYALAM LETTER RRA
+cp;0D32;InCB=Consonant;na=MALAYALAM LETTER LA
+cp;0D33;InCB=Consonant;na=MALAYALAM LETTER LLA
+cp;0D34;InCB=Consonant;na=MALAYALAM LETTER LLLA
+cp;0D35;InCB=Consonant;na=MALAYALAM LETTER VA
+cp;0D36;InCB=Consonant;na=MALAYALAM LETTER SHA
+cp;0D37;InCB=Consonant;na=MALAYALAM LETTER SSA
+cp;0D38;InCB=Consonant;na=MALAYALAM LETTER SA
+cp;0D39;InCB=Consonant;na=MALAYALAM LETTER HA
+cp;0D3A;age=6.0;InCB=Consonant;na=MALAYALAM LETTER TTTA
# Variant shape viramas
-cp;0D3B;age=10.0;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InPC=Top;InSC=Pure_Killer;jt=T;lb=CM;na=MALAYALAM SIGN VERTICAL BAR VIRAMA;SB=EX;WB=Extend;-XIDS
-cp;0D3C;age=10.0;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InPC=Top;InSC=Pure_Killer;jt=T;lb=CM;na=MALAYALAM SIGN CIRCULAR VIRAMA;SB=EX;WB=Extend;-XIDS
+cp;0D3B;age=10.0;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InCB=Extend;InPC=Top;InSC=Pure_Killer;jt=T;lb=CM;na=MALAYALAM SIGN VERTICAL BAR VIRAMA;SB=EX;WB=Extend;-XIDS
+cp;0D3C;age=10.0;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InCB=Extend;InPC=Top;InSC=Pure_Killer;jt=T;lb=CM;na=MALAYALAM SIGN CIRCULAR VIRAMA;SB=EX;WB=Extend;-XIDS
# Addition for Sanskrit
cp;0D3D;age=5.1;InSC=Avagraha;na=MALAYALAM SIGN AVAGRAHA
# Dependent vowel signs
@@ -4903,7 +4920,7 @@ cp;0D4A;dm=0D46 0D3E;dt=Can;gc=Mc;GCB=SM;-IDS;InPC=Left_And_Right;InSC=Vowel_Dep
cp;0D4B;dm=0D47 0D3E;dt=Can;gc=Mc;GCB=SM;-IDS;InPC=Left_And_Right;InSC=Vowel_Dependent;lb=CM;na=MALAYALAM VOWEL SIGN OO;NFD_QC=N;NFKD_QC=N;SB=EX;WB=Extend;-XIDS
cp;0D4C;dm=0D46 0D57;dt=Can;gc=Mc;GCB=SM;-IDS;InPC=Left_And_Right;InSC=Vowel_Dependent;lb=CM;na=MALAYALAM VOWEL SIGN AU;NFD_QC=N;NFKD_QC=N;SB=EX;WB=Extend;-XIDS
# Virama
-cp;0D4D;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InPC=Top;InSC=Virama;jt=T;lb=CM;na=MALAYALAM SIGN VIRAMA;SB=EX;WB=Extend;-XIDS
+cp;0D4D;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InCB=Linker;InPC=Top;InSC=Virama;jt=T;lb=CM;na=MALAYALAM SIGN VIRAMA;SB=EX;WB=Extend;-XIDS
# Dot reph
cp;0D4E;age=6.0;GCB=PP;InPC=Top;InSC=Consonant_Preceding_Repha;na=MALAYALAM LETTER DOT REPH
# Measurement symbol
@@ -5138,14 +5155,14 @@ cp;0E2F;InSC=Other;na=THAI CHARACTER PAIYANNOI
cp;0E30;InPC=Right;InSC=Vowel_Dependent;na=THAI CHARACTER SARA A
cp;0E31;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;na=THAI CHARACTER MAI HAN-AKAT;SB=EX;WB=Extend;-XIDS
cp;0E32;InPC=Right;InSC=Vowel_Dependent;na=THAI CHARACTER SARA AA
-cp;0E33;CWKCF;dm=0E4D 0E32;dt=Com;GCB=SM;InPC=Right;InSC=Vowel_Dependent;na=THAI CHARACTER SARA AM;NFKC_CF=0E4D 0E32;NFKC_QC=N;NFKD_QC=N;-XIDS
+cp;0E33;CWKCF;dm=0E4D 0E32;dt=Com;GCB=SM;InPC=Right;InSC=Vowel_Dependent;na=THAI CHARACTER SARA AM;NFKC_CF=0E4D 0E32;NFKC_QC=N;NFKC_SCF=0E4D 0E32;NFKD_QC=N;-XIDS
cp;0E34;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;na=THAI CHARACTER SARA I;SB=EX;WB=Extend;-XIDS
cp;0E35;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;na=THAI CHARACTER SARA II;SB=EX;WB=Extend;-XIDS
cp;0E36;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;na=THAI CHARACTER SARA UE;SB=EX;WB=Extend;-XIDS
cp;0E37;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;na=THAI CHARACTER SARA UEE;SB=EX;WB=Extend;-XIDS
-cp;0E38;bc=NSM;ccc=103;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;na=THAI CHARACTER SARA U;SB=EX;WB=Extend;-XIDS
-cp;0E39;bc=NSM;ccc=103;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;na=THAI CHARACTER SARA UU;SB=EX;WB=Extend;-XIDS
-cp;0E3A;bc=NSM;ccc=9;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InPC=Bottom;InSC=Pure_Killer;jt=T;na=THAI CHARACTER PHINTHU;SB=EX;WB=Extend;-XIDS
+cp;0E38;bc=NSM;ccc=103;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Bottom;InSC=Vowel_Dependent;jt=T;na=THAI CHARACTER SARA U;SB=EX;WB=Extend;-XIDS
+cp;0E39;bc=NSM;ccc=103;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Bottom;InSC=Vowel_Dependent;jt=T;na=THAI CHARACTER SARA UU;SB=EX;WB=Extend;-XIDS
+cp;0E3A;bc=NSM;ccc=9;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InCB=Extend;InPC=Bottom;InSC=Pure_Killer;jt=T;na=THAI CHARACTER PHINTHU;SB=EX;WB=Extend;-XIDS
unassigned;0E3B..0E3E
# Currency symbol
cp;0E3F;-Alpha;bc=ET;gc=Sc;-IDC;-IDS;InSC=Other;lb=PR;na=THAI CURRENCY SYMBOL BAHT;SB=XX;sc=Zyyy;-XIDC;-XIDS
@@ -5162,10 +5179,10 @@ cp;0E46;CI;Ext;gc=Lm;InSC=Other;na=THAI CHARACTER MAIYAMOK
# Vowel
cp;0E47;-Alpha;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;na=THAI CHARACTER MAITAIKHU;SB=EX;WB=Extend;-XIDS
# Tone marks
-cp;0E48;-Alpha;bc=NSM;ccc=107;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Tone_Mark;jt=T;na=THAI CHARACTER MAI EK;SB=EX;WB=Extend;-XIDS
-cp;0E49;-Alpha;bc=NSM;ccc=107;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Tone_Mark;jt=T;na=THAI CHARACTER MAI THO;SB=EX;WB=Extend;-XIDS
-cp;0E4A;-Alpha;bc=NSM;ccc=107;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Tone_Mark;jt=T;na=THAI CHARACTER MAI TRI;SB=EX;WB=Extend;-XIDS
-cp;0E4B;-Alpha;bc=NSM;ccc=107;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Tone_Mark;jt=T;na=THAI CHARACTER MAI CHATTAWA;SB=EX;WB=Extend;-XIDS
+cp;0E48;-Alpha;bc=NSM;ccc=107;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Top;InSC=Tone_Mark;jt=T;na=THAI CHARACTER MAI EK;SB=EX;WB=Extend;-XIDS
+cp;0E49;-Alpha;bc=NSM;ccc=107;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Top;InSC=Tone_Mark;jt=T;na=THAI CHARACTER MAI THO;SB=EX;WB=Extend;-XIDS
+cp;0E4A;-Alpha;bc=NSM;ccc=107;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Top;InSC=Tone_Mark;jt=T;na=THAI CHARACTER MAI TRI;SB=EX;WB=Extend;-XIDS
+cp;0E4B;-Alpha;bc=NSM;ccc=107;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Top;InSC=Tone_Mark;jt=T;na=THAI CHARACTER MAI CHATTAWA;SB=EX;WB=Extend;-XIDS
# Signs
cp;0E4C;-Alpha;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Consonant_Killer;jt=T;na=THAI CHARACTER THANTHAKHAT;SB=EX;WB=Extend;-XIDS
cp;0E4D;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Bindu;jt=T;na=THAI CHARACTER NIKHAHIT;SB=EX;WB=Extend;-XIDS
@@ -5243,15 +5260,15 @@ cp;0EAF;InSC=Other;na=LAO ELLIPSIS
cp;0EB0;InPC=Right;InSC=Vowel_Dependent;na=LAO VOWEL SIGN A
cp;0EB1;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;na=LAO VOWEL SIGN MAI KAN;SB=EX;WB=Extend;-XIDS
cp;0EB2;InPC=Right;InSC=Vowel_Dependent;na=LAO VOWEL SIGN AA
-cp;0EB3;CWKCF;dm=0ECD 0EB2;dt=Com;GCB=SM;InPC=Right;InSC=Vowel_Dependent;na=LAO VOWEL SIGN AM;NFKC_CF=0ECD 0EB2;NFKC_QC=N;NFKD_QC=N;-XIDS
+cp;0EB3;CWKCF;dm=0ECD 0EB2;dt=Com;GCB=SM;InPC=Right;InSC=Vowel_Dependent;na=LAO VOWEL SIGN AM;NFKC_CF=0ECD 0EB2;NFKC_QC=N;NFKC_SCF=0ECD 0EB2;NFKD_QC=N;-XIDS
cp;0EB4;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;na=LAO VOWEL SIGN I;SB=EX;WB=Extend;-XIDS
cp;0EB5;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;na=LAO VOWEL SIGN II;SB=EX;WB=Extend;-XIDS
cp;0EB6;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;na=LAO VOWEL SIGN Y;SB=EX;WB=Extend;-XIDS
cp;0EB7;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;na=LAO VOWEL SIGN YY;SB=EX;WB=Extend;-XIDS
-cp;0EB8;bc=NSM;ccc=118;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;na=LAO VOWEL SIGN U;SB=EX;WB=Extend;-XIDS
-cp;0EB9;bc=NSM;ccc=118;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;na=LAO VOWEL SIGN UU;SB=EX;WB=Extend;-XIDS
+cp;0EB8;bc=NSM;ccc=118;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Bottom;InSC=Vowel_Dependent;jt=T;na=LAO VOWEL SIGN U;SB=EX;WB=Extend;-XIDS
+cp;0EB9;bc=NSM;ccc=118;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Bottom;InSC=Vowel_Dependent;jt=T;na=LAO VOWEL SIGN UU;SB=EX;WB=Extend;-XIDS
# Virama
-cp;0EBA;age=12.0;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InPC=Bottom;InSC=Pure_Killer;jt=T;na=LAO SIGN PALI VIRAMA;SB=EX;WB=Extend;-XIDS
+cp;0EBA;age=12.0;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InCB=Extend;InPC=Bottom;InSC=Pure_Killer;jt=T;na=LAO SIGN PALI VIRAMA;SB=EX;WB=Extend;-XIDS
# Vowel
cp;0EBB;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;na=LAO VOWEL SIGN MAI KON;SB=EX;WB=Extend;-XIDS
# Signs
@@ -5269,10 +5286,10 @@ unassigned;0EC5
cp;0EC6;CI;Ext;gc=Lm;InSC=Other;na=LAO KO LA
unassigned;0EC7
# Tone marks
-cp;0EC8;-Alpha;bc=NSM;ccc=122;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Tone_Mark;jt=T;na=LAO TONE MAI EK;SB=EX;WB=Extend;-XIDS
-cp;0EC9;-Alpha;bc=NSM;ccc=122;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Tone_Mark;jt=T;na=LAO TONE MAI THO;SB=EX;WB=Extend;-XIDS
-cp;0ECA;-Alpha;bc=NSM;ccc=122;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Tone_Mark;jt=T;na=LAO TONE MAI TI;SB=EX;WB=Extend;-XIDS
-cp;0ECB;-Alpha;bc=NSM;ccc=122;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Tone_Mark;jt=T;na=LAO TONE MAI CATAWA;SB=EX;WB=Extend;-XIDS
+cp;0EC8;-Alpha;bc=NSM;ccc=122;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Top;InSC=Tone_Mark;jt=T;na=LAO TONE MAI EK;SB=EX;WB=Extend;-XIDS
+cp;0EC9;-Alpha;bc=NSM;ccc=122;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Top;InSC=Tone_Mark;jt=T;na=LAO TONE MAI THO;SB=EX;WB=Extend;-XIDS
+cp;0ECA;-Alpha;bc=NSM;ccc=122;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Top;InSC=Tone_Mark;jt=T;na=LAO TONE MAI TI;SB=EX;WB=Extend;-XIDS
+cp;0ECB;-Alpha;bc=NSM;ccc=122;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Top;InSC=Tone_Mark;jt=T;na=LAO TONE MAI CATAWA;SB=EX;WB=Extend;-XIDS
# Signs
cp;0ECC;-Alpha;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Other;jt=T;na=LAO CANCELLATION MARK;SB=EX;WB=Extend;-XIDS
cp;0ECD;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Bindu;jt=T;na=LAO NIGGAHITA;SB=EX;WB=Extend;-XIDS
@@ -5291,8 +5308,8 @@ cp;0ED8;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=LAO DIGIT EIGHT;nt=De;nv=8;SB=NU;
cp;0ED9;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=LAO DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU;-XIDS
unassigned;0EDA..0EDB
# Digraphs
-cp;0EDC;CWKCF;dm=0EAB 0E99;dt=Com;na=LAO HO NO;NFKC_CF=0EAB 0E99;NFKC_QC=N;NFKD_QC=N
-cp;0EDD;CWKCF;dm=0EAB 0EA1;dt=Com;na=LAO HO MO;NFKC_CF=0EAB 0EA1;NFKC_QC=N;NFKD_QC=N
+cp;0EDC;CWKCF;dm=0EAB 0E99;dt=Com;na=LAO HO NO;NFKC_CF=0EAB 0E99;NFKC_QC=N;NFKC_SCF=0EAB 0E99;NFKD_QC=N
+cp;0EDD;CWKCF;dm=0EAB 0EA1;dt=Com;na=LAO HO MO;NFKC_CF=0EAB 0EA1;NFKC_QC=N;NFKC_SCF=0EAB 0EA1;NFKD_QC=N
# Consonants for Khmu
cp;0EDE;age=6.1;na=LAO LETTER KHMU GO
cp;0EDF;age=6.1;na=LAO LETTER KHMU NYO
@@ -5315,7 +5332,7 @@ cp;0F08;-Alpha;gc=Po;-IDC;InSC=Other;lb=GL;na=TIBETAN MARK SBRUL SHAD;SB=XX;Term
cp;0F09;-Alpha;gc=Po;-IDC;InSC=Other;lb=BB;na=TIBETAN MARK BSKUR YIG MGO;SB=XX;WB=XX;-XIDC
cp;0F0A;-Alpha;gc=Po;-IDC;InSC=Other;lb=BB;na=TIBETAN MARK BKA- SHOG YIG MGO;SB=XX;WB=XX;-XIDC
cp;0F0B;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=TIBETAN MARK INTERSYLLABIC TSHEG;SB=XX;WB=XX;-XIDC
-cp;0F0C;-Alpha;CWKCF;dm=0F0B;dt=Nb;gc=Po;-IDC;InSC=Other;lb=GL;na=TIBETAN MARK DELIMITER TSHEG BSTAR;NFKC_CF=0F0B;NFKC_QC=N;NFKD_QC=N;SB=XX;WB=XX;-XIDC
+cp;0F0C;-Alpha;CWKCF;dm=0F0B;dt=Nb;gc=Po;-IDC;InSC=Other;lb=GL;na=TIBETAN MARK DELIMITER TSHEG BSTAR;NFKC_CF=0F0B;NFKC_QC=N;NFKC_SCF=0F0B;NFKD_QC=N;SB=XX;WB=XX;-XIDC
cp;0F0D;-Alpha;gc=Po;-IDC;InSC=Other;lb=EX;na=TIBETAN MARK SHAD;SB=XX;Term;WB=XX;-XIDC
cp;0F0E;-Alpha;gc=Po;-IDC;InSC=Other;lb=EX;na=TIBETAN MARK NYIS SHAD;SB=XX;Term;WB=XX;-XIDC
cp;0F0F;-Alpha;gc=Po;-IDC;InSC=Other;lb=EX;na=TIBETAN MARK TSHEG SHAD;SB=XX;Term;WB=XX;-XIDC
@@ -5328,8 +5345,8 @@ cp;0F14;-Alpha;gc=Po;-IDC;InSC=Other;lb=EX;na=TIBETAN MARK GTER TSHEG;SB=XX;WB=X
cp;0F15;-Alpha;gc=So;-IDC;InSC=Other;na=TIBETAN LOGOTYPE SIGN CHAD RTAGS;SB=XX;WB=XX;-XIDC
cp;0F16;-Alpha;gc=So;-IDC;InSC=Other;na=TIBETAN LOGOTYPE SIGN LHAG RTAGS;SB=XX;WB=XX;-XIDC
cp;0F17;-Alpha;gc=So;-IDC;InSC=Other;na=TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS;SB=XX;WB=XX;-XIDC
-cp;0F18;-Alpha;bc=NSM;ccc=220;CI;Dia;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;InSC=Other;jt=T;lb=CM;na=TIBETAN ASTROLOGICAL SIGN -KHYUD PA
-cp;0F19;-Alpha;bc=NSM;ccc=220;CI;Dia;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;InSC=Other;jt=T;lb=CM;na=TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS
+cp;0F18;-Alpha;bc=NSM;ccc=220;CI;Dia;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Bottom;InSC=Other;jt=T;lb=CM;na=TIBETAN ASTROLOGICAL SIGN -KHYUD PA
+cp;0F19;-Alpha;bc=NSM;ccc=220;CI;Dia;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Bottom;InSC=Other;jt=T;lb=CM;na=TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS
cp;0F1A;-Alpha;gc=So;-IDC;InSC=Other;na=TIBETAN SIGN RDEL DKAR GCIG;SB=XX;WB=XX;-XIDC
cp;0F1B;-Alpha;gc=So;-IDC;InSC=Other;na=TIBETAN SIGN RDEL DKAR GNYIS;SB=XX;WB=XX;-XIDC
cp;0F1C;-Alpha;gc=So;-IDC;InSC=Other;na=TIBETAN SIGN RDEL DKAR GSUM;SB=XX;WB=XX;-XIDC
@@ -5360,11 +5377,11 @@ cp;0F32;-Alpha;gc=No;-IDC;InSC=Number;na=TIBETAN DIGIT HALF NINE;nt=Nu;nv=17/2;S
cp;0F33;-Alpha;gc=No;-IDC;InSC=Number;na=TIBETAN DIGIT HALF ZERO;nt=Nu;nv=-1/2;SB=XX;WB=XX;-XIDC
# Marks and signs
cp;0F34;-Alpha;gc=So;-IDC;InSC=Other;lb=BA;na=TIBETAN MARK BSDUS RTAGS;SB=XX;WB=XX;-XIDC
-cp;0F35;-Alpha;bc=NSM;ccc=220;CI;Dia;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;InSC=Syllable_Modifier;jt=T;lb=CM;na=TIBETAN MARK NGAS BZUNG NYI ZLA
+cp;0F35;-Alpha;bc=NSM;ccc=220;CI;Dia;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Bottom;InSC=Syllable_Modifier;jt=T;lb=CM;na=TIBETAN MARK NGAS BZUNG NYI ZLA
cp;0F36;-Alpha;gc=So;-IDC;InSC=Other;na=TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN;SB=XX;WB=XX;-XIDC
-cp;0F37;-Alpha;bc=NSM;ccc=220;CI;Dia;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;InSC=Syllable_Modifier;jt=T;lb=CM;na=TIBETAN MARK NGAS BZUNG SGOR RTAGS
+cp;0F37;-Alpha;bc=NSM;ccc=220;CI;Dia;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Bottom;InSC=Syllable_Modifier;jt=T;lb=CM;na=TIBETAN MARK NGAS BZUNG SGOR RTAGS
cp;0F38;-Alpha;gc=So;-IDC;InSC=Other;na=TIBETAN MARK CHE MGO;SB=XX;WB=XX;-XIDC
-cp;0F39;-Alpha;bc=NSM;ccc=216;CI;Dia;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Nukta;jt=T;lb=CM;na=TIBETAN MARK TSA -PHRU
+cp;0F39;-Alpha;bc=NSM;ccc=216;CI;Dia;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Nukta;jt=T;lb=CM;na=TIBETAN MARK TSA -PHRU
# Paired punctuation
cp;0F3A;-Alpha;bc=ON;Bidi_M;bmg=0F3B;bpb=0F3B;bpt=o;gc=Ps;-IDC;InSC=Other;lb=OP;na=TIBETAN MARK GUG RTAGS GYON;SB=CL;WB=XX;-XIDC
cp;0F3B;-Alpha;bc=ON;Bidi_M;bmg=0F3A;bpb=0F3A;bpt=c;gc=Pe;-IDC;InSC=Other;lb=CL;na=TIBETAN MARK GUG RTAGS GYAS;SB=CL;WB=XX;-XIDC
@@ -5377,7 +5394,7 @@ cp;0F3F;-Alpha;Dia;gc=Mc;GCB=SM;InPC=Left;InSC=Other;lb=CM;na=TIBETAN SIGN MAR T
cp;0F40;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER KA;SB=LE;WB=LE;XIDS
cp;0F41;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER KHA;SB=LE;WB=LE;XIDS
cp;0F42;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER GA;SB=LE;WB=LE;XIDS
-cp;0F43;Comp_Ex;CWKCF;dm=0F42 0FB7;dt=Can;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER GHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0F42 0FB7;NFKC_QC=N;NFKD_QC=N;SB=LE;WB=LE;XIDS
+cp;0F43;Comp_Ex;CWKCF;dm=0F42 0FB7;dt=Can;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER GHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0F42 0FB7;NFKC_QC=N;NFKC_SCF=0F42 0FB7;NFKD_QC=N;SB=LE;WB=LE;XIDS
cp;0F44;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER NGA;SB=LE;WB=LE;XIDS
cp;0F45;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER CA;SB=LE;WB=LE;XIDS
cp;0F46;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER CHA;SB=LE;WB=LE;XIDS
@@ -5387,22 +5404,22 @@ cp;0F49;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER NYA;SB=LE;WB=LE;XIDS
cp;0F4A;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER TTA;SB=LE;WB=LE;XIDS
cp;0F4B;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER TTHA;SB=LE;WB=LE;XIDS
cp;0F4C;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER DDA;SB=LE;WB=LE;XIDS
-cp;0F4D;Comp_Ex;CWKCF;dm=0F4C 0FB7;dt=Can;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER DDHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0F4C 0FB7;NFKC_QC=N;NFKD_QC=N;SB=LE;WB=LE;XIDS
+cp;0F4D;Comp_Ex;CWKCF;dm=0F4C 0FB7;dt=Can;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER DDHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0F4C 0FB7;NFKC_QC=N;NFKC_SCF=0F4C 0FB7;NFKD_QC=N;SB=LE;WB=LE;XIDS
cp;0F4E;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER NNA;SB=LE;WB=LE;XIDS
cp;0F4F;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER TA;SB=LE;WB=LE;XIDS
cp;0F50;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER THA;SB=LE;WB=LE;XIDS
cp;0F51;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER DA;SB=LE;WB=LE;XIDS
-cp;0F52;Comp_Ex;CWKCF;dm=0F51 0FB7;dt=Can;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER DHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0F51 0FB7;NFKC_QC=N;NFKD_QC=N;SB=LE;WB=LE;XIDS
+cp;0F52;Comp_Ex;CWKCF;dm=0F51 0FB7;dt=Can;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER DHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0F51 0FB7;NFKC_QC=N;NFKC_SCF=0F51 0FB7;NFKD_QC=N;SB=LE;WB=LE;XIDS
cp;0F53;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER NA;SB=LE;WB=LE;XIDS
cp;0F54;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER PA;SB=LE;WB=LE;XIDS
cp;0F55;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER PHA;SB=LE;WB=LE;XIDS
cp;0F56;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER BA;SB=LE;WB=LE;XIDS
-cp;0F57;Comp_Ex;CWKCF;dm=0F56 0FB7;dt=Can;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER BHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0F56 0FB7;NFKC_QC=N;NFKD_QC=N;SB=LE;WB=LE;XIDS
+cp;0F57;Comp_Ex;CWKCF;dm=0F56 0FB7;dt=Can;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER BHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0F56 0FB7;NFKC_QC=N;NFKC_SCF=0F56 0FB7;NFKD_QC=N;SB=LE;WB=LE;XIDS
cp;0F58;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER MA;SB=LE;WB=LE;XIDS
cp;0F59;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER TSA;SB=LE;WB=LE;XIDS
cp;0F5A;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER TSHA;SB=LE;WB=LE;XIDS
cp;0F5B;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER DZA;SB=LE;WB=LE;XIDS
-cp;0F5C;Comp_Ex;CWKCF;dm=0F5B 0FB7;dt=Can;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER DZHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0F5B 0FB7;NFKC_QC=N;NFKD_QC=N;SB=LE;WB=LE;XIDS
+cp;0F5C;Comp_Ex;CWKCF;dm=0F5B 0FB7;dt=Can;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER DZHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0F5B 0FB7;NFKC_QC=N;NFKC_SCF=0F5B 0FB7;NFKD_QC=N;SB=LE;WB=LE;XIDS
cp;0F5D;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER WA;SB=LE;WB=LE;XIDS
cp;0F5E;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER ZHA;SB=LE;WB=LE;XIDS
cp;0F5F;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER ZA;SB=LE;WB=LE;XIDS
@@ -5415,39 +5432,39 @@ cp;0F65;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER SSA;SB=LE;WB=LE;XIDS
cp;0F66;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER SA;SB=LE;WB=LE;XIDS
cp;0F67;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER HA;SB=LE;WB=LE;XIDS
cp;0F68;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER A;SB=LE;WB=LE;XIDS
-cp;0F69;Comp_Ex;CWKCF;dm=0F40 0FB5;dt=Can;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER KSSA;NFC_QC=N;NFD_QC=N;NFKC_CF=0F40 0FB5;NFKC_QC=N;NFKD_QC=N;SB=LE;WB=LE;XIDS
+cp;0F69;Comp_Ex;CWKCF;dm=0F40 0FB5;dt=Can;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER KSSA;NFC_QC=N;NFD_QC=N;NFKC_CF=0F40 0FB5;NFKC_QC=N;NFKC_SCF=0F40 0FB5;NFKD_QC=N;SB=LE;WB=LE;XIDS
cp;0F6A;age=3.0;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER FIXED-FORM RA;SB=LE;WB=LE;XIDS
# Extensions for Balti
cp;0F6B;age=5.1;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER KKA;SB=LE;WB=LE;XIDS
cp;0F6C;age=5.1;gc=Lo;IDS;InSC=Consonant;na=TIBETAN LETTER RRA;SB=LE;WB=LE;XIDS
unassigned;0F6D..0F70
# Dependent vowel signs
-cp;0F71;bc=NSM;ccc=129;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN AA
-cp;0F72;bc=NSM;ccc=130;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN I
-cp;0F73;bc=NSM;CI;Comp_Ex;CWKCF;dm=0F71 0F72;dt=Can;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top_And_Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN II;NFC_QC=N;NFD_QC=N;NFKC_CF=0F71 0F72;NFKC_QC=N;NFKD_QC=N
-cp;0F74;bc=NSM;ccc=132;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN U
-cp;0F75;bc=NSM;CI;Comp_Ex;CWKCF;dm=0F71 0F74;dt=Can;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN UU;NFC_QC=N;NFD_QC=N;NFKC_CF=0F71 0F74;NFKC_QC=N;NFKD_QC=N
-cp;0F76;bc=NSM;CI;Comp_Ex;CWKCF;dm=0FB2 0F80;dt=Can;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top_And_Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN VOCALIC R;NFC_QC=N;NFD_QC=N;NFKC_CF=0FB2 0F80;NFKC_QC=N;NFKD_QC=N
-cp;0F77;bc=NSM;CI;CWKCF;Dep;dm=0FB2 0F81;dt=Com;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top_And_Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN VOCALIC RR;NFKC_CF=0FB2 0F71 0F80;NFKC_QC=N;NFKD_QC=N
-cp;0F78;bc=NSM;CI;Comp_Ex;CWKCF;dm=0FB3 0F80;dt=Can;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top_And_Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN VOCALIC L;NFC_QC=N;NFD_QC=N;NFKC_CF=0FB3 0F80;NFKC_QC=N;NFKD_QC=N
-cp;0F79;bc=NSM;CI;CWKCF;Dep;dm=0FB3 0F81;dt=Com;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top_And_Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN VOCALIC LL;NFKC_CF=0FB3 0F71 0F80;NFKC_QC=N;NFKD_QC=N
-cp;0F7A;bc=NSM;ccc=130;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN E
-cp;0F7B;bc=NSM;ccc=130;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN EE
-cp;0F7C;bc=NSM;ccc=130;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN O
-cp;0F7D;bc=NSM;ccc=130;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN OO
+cp;0F71;bc=NSM;ccc=129;CI;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN AA
+cp;0F72;bc=NSM;ccc=130;CI;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN I
+cp;0F73;bc=NSM;CI;Comp_Ex;CWKCF;dm=0F71 0F72;dt=Can;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top_And_Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN II;NFC_QC=N;NFD_QC=N;NFKC_CF=0F71 0F72;NFKC_QC=N;NFKC_SCF=0F71 0F72;NFKD_QC=N
+cp;0F74;bc=NSM;ccc=132;CI;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN U
+cp;0F75;bc=NSM;CI;Comp_Ex;CWKCF;dm=0F71 0F74;dt=Can;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN UU;NFC_QC=N;NFD_QC=N;NFKC_CF=0F71 0F74;NFKC_QC=N;NFKC_SCF=0F71 0F74;NFKD_QC=N
+cp;0F76;bc=NSM;CI;Comp_Ex;CWKCF;dm=0FB2 0F80;dt=Can;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top_And_Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN VOCALIC R;NFC_QC=N;NFD_QC=N;NFKC_CF=0FB2 0F80;NFKC_QC=N;NFKC_SCF=0FB2 0F80;NFKD_QC=N
+cp;0F77;bc=NSM;CI;CWKCF;Dep;dm=0FB2 0F81;dt=Com;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top_And_Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN VOCALIC RR;NFKC_CF=0FB2 0F71 0F80;NFKC_QC=N;NFKC_SCF=0FB2 0F71 0F80;NFKD_QC=N
+cp;0F78;bc=NSM;CI;Comp_Ex;CWKCF;dm=0FB3 0F80;dt=Can;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top_And_Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN VOCALIC L;NFC_QC=N;NFD_QC=N;NFKC_CF=0FB3 0F80;NFKC_QC=N;NFKC_SCF=0FB3 0F80;NFKD_QC=N
+cp;0F79;bc=NSM;CI;CWKCF;Dep;dm=0FB3 0F81;dt=Com;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top_And_Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN VOCALIC LL;NFKC_CF=0FB3 0F71 0F80;NFKC_QC=N;NFKC_SCF=0FB3 0F71 0F80;NFKD_QC=N
+cp;0F7A;bc=NSM;ccc=130;CI;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN E
+cp;0F7B;bc=NSM;ccc=130;CI;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN EE
+cp;0F7C;bc=NSM;ccc=130;CI;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN O
+cp;0F7D;bc=NSM;ccc=130;CI;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN OO
# Vocalic modification
cp;0F7E;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=TIBETAN SIGN RJES SU NGA RO
cp;0F7F;gc=Mc;GCB=SM;InPC=Right;InSC=Visarga;lb=BA;na=TIBETAN SIGN RNAM BCAD
# Dependent vowel signs
-cp;0F80;bc=NSM;ccc=130;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN REVERSED I
-cp;0F81;bc=NSM;CI;Comp_Ex;CWKCF;dm=0F71 0F80;dt=Can;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top_And_Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN REVERSED II;NFC_QC=N;NFD_QC=N;NFKC_CF=0F71 0F80;NFKC_QC=N;NFKD_QC=N
+cp;0F80;bc=NSM;ccc=130;CI;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN REVERSED I
+cp;0F81;bc=NSM;CI;Comp_Ex;CWKCF;dm=0F71 0F80;dt=Can;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top_And_Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=TIBETAN VOWEL SIGN REVERSED II;NFC_QC=N;NFD_QC=N;NFKC_CF=0F71 0F80;NFKC_QC=N;NFKC_SCF=0F71 0F80;NFKD_QC=N
# Marks and signs
-cp;0F82;bc=NSM;ccc=230;CI;Dia;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=TIBETAN SIGN NYI ZLA NAA DA
-cp;0F83;bc=NSM;ccc=230;CI;Dia;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=TIBETAN SIGN SNA LDAN
-cp;0F84;-Alpha;bc=NSM;ccc=9;CI;Dia;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;InPC=Bottom;InSC=Pure_Killer;jt=T;lb=CM;na=TIBETAN MARK HALANTA
+cp;0F82;bc=NSM;ccc=230;CI;Dia;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=TIBETAN SIGN NYI ZLA NAA DA
+cp;0F83;bc=NSM;ccc=230;CI;Dia;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=TIBETAN SIGN SNA LDAN
+cp;0F84;-Alpha;bc=NSM;ccc=9;CI;Dia;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;InCB=Extend;InPC=Bottom;InSC=Pure_Killer;jt=T;lb=CM;na=TIBETAN MARK HALANTA
cp;0F85;-Alpha;gc=Po;-IDC;InSC=Avagraha;lb=BA;na=TIBETAN MARK PALUTA;SB=XX;WB=XX;-XIDC
-cp;0F86;-Alpha;bc=NSM;ccc=230;CI;Dia;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Other;jt=T;lb=CM;na=TIBETAN SIGN LCI RTAGS
-cp;0F87;-Alpha;bc=NSM;ccc=230;CI;Dia;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Other;jt=T;lb=CM;na=TIBETAN SIGN YANG RTAGS
+cp;0F86;-Alpha;bc=NSM;ccc=230;CI;Dia;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Other;jt=T;lb=CM;na=TIBETAN SIGN LCI RTAGS
+cp;0F87;-Alpha;bc=NSM;ccc=230;CI;Dia;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Other;jt=T;lb=CM;na=TIBETAN SIGN YANG RTAGS
# Transliteration head letters
cp;0F88;gc=Lo;IDS;InSC=Consonant_Head_Letter;na=TIBETAN SIGN LCE TSA CAN;SB=LE;WB=LE;XIDS
cp;0F89;gc=Lo;IDS;InSC=Consonant_Head_Letter;na=TIBETAN SIGN MCHU CAN;SB=LE;WB=LE;XIDS
@@ -5462,7 +5479,7 @@ cp;0F8F;age=6.0;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBET
cp;0F90;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER KA
cp;0F91;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER KHA
cp;0F92;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER GA
-cp;0F93;bc=NSM;CI;Comp_Ex;CWKCF;dm=0F92 0FB7;dt=Can;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER GHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0F92 0FB7;NFKC_QC=N;NFKD_QC=N
+cp;0F93;bc=NSM;CI;Comp_Ex;CWKCF;dm=0F92 0FB7;dt=Can;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER GHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0F92 0FB7;NFKC_QC=N;NFKC_SCF=0F92 0FB7;NFKD_QC=N
cp;0F94;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER NGA
cp;0F95;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER CA
cp;0F96;age=3.0;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER CHA
@@ -5472,22 +5489,22 @@ cp;0F99;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJO
cp;0F9A;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER TTA
cp;0F9B;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER TTHA
cp;0F9C;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER DDA
-cp;0F9D;bc=NSM;CI;Comp_Ex;CWKCF;dm=0F9C 0FB7;dt=Can;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER DDHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0F9C 0FB7;NFKC_QC=N;NFKD_QC=N
+cp;0F9D;bc=NSM;CI;Comp_Ex;CWKCF;dm=0F9C 0FB7;dt=Can;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER DDHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0F9C 0FB7;NFKC_QC=N;NFKC_SCF=0F9C 0FB7;NFKD_QC=N
cp;0F9E;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER NNA
cp;0F9F;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER TA
cp;0FA0;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER THA
cp;0FA1;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER DA
-cp;0FA2;bc=NSM;CI;Comp_Ex;CWKCF;dm=0FA1 0FB7;dt=Can;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER DHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0FA1 0FB7;NFKC_QC=N;NFKD_QC=N
+cp;0FA2;bc=NSM;CI;Comp_Ex;CWKCF;dm=0FA1 0FB7;dt=Can;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER DHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0FA1 0FB7;NFKC_QC=N;NFKC_SCF=0FA1 0FB7;NFKD_QC=N
cp;0FA3;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER NA
cp;0FA4;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER PA
cp;0FA5;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER PHA
cp;0FA6;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER BA
-cp;0FA7;bc=NSM;CI;Comp_Ex;CWKCF;dm=0FA6 0FB7;dt=Can;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER BHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0FA6 0FB7;NFKC_QC=N;NFKD_QC=N
+cp;0FA7;bc=NSM;CI;Comp_Ex;CWKCF;dm=0FA6 0FB7;dt=Can;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER BHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0FA6 0FB7;NFKC_QC=N;NFKC_SCF=0FA6 0FB7;NFKD_QC=N
cp;0FA8;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER MA
cp;0FA9;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER TSA
cp;0FAA;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER TSHA
cp;0FAB;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER DZA
-cp;0FAC;bc=NSM;CI;Comp_Ex;CWKCF;dm=0FAB 0FB7;dt=Can;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER DZHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0FAB 0FB7;NFKC_QC=N;NFKD_QC=N
+cp;0FAC;bc=NSM;CI;Comp_Ex;CWKCF;dm=0FAB 0FB7;dt=Can;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER DZHA;NFC_QC=N;NFD_QC=N;NFKC_CF=0FAB 0FB7;NFKC_QC=N;NFKC_SCF=0FAB 0FB7;NFKD_QC=N
cp;0FAD;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER WA
cp;0FAE;age=3.0;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER ZHA
cp;0FAF;age=3.0;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER ZA
@@ -5500,7 +5517,7 @@ cp;0FB5;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJO
cp;0FB6;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER SA
cp;0FB7;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER HA
cp;0FB8;age=3.0;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER A
-cp;0FB9;bc=NSM;CI;Comp_Ex;CWKCF;dm=0F90 0FB5;dt=Can;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER KSSA;NFC_QC=N;NFD_QC=N;NFKC_CF=0F90 0FB5;NFKC_QC=N;NFKD_QC=N
+cp;0FB9;bc=NSM;CI;Comp_Ex;CWKCF;dm=0F90 0FB5;dt=Can;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER KSSA;NFC_QC=N;NFD_QC=N;NFKC_CF=0F90 0FB5;NFKC_QC=N;NFKC_SCF=0F90 0FB5;NFKD_QC=N
# Fixed-form subjoined consonants
cp;0FBA;age=3.0;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER FIXED-FORM WA
cp;0FBB;age=3.0;bc=NSM;CI;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;jt=T;lb=CM;na=TIBETAN SUBJOINED LETTER FIXED-FORM YA
@@ -5517,7 +5534,7 @@ cp;0FC3;age=3.0;-Alpha;gc=So;-IDC;InSC=Other;na=TIBETAN CANTILLATION SIGN SBUB -
# Symbols
cp;0FC4;age=3.0;-Alpha;gc=So;-IDC;InSC=Other;na=TIBETAN SYMBOL DRIL BU;SB=XX;WB=XX;-XIDC
cp;0FC5;age=3.0;-Alpha;gc=So;-IDC;InSC=Other;na=TIBETAN SYMBOL RDO RJE;SB=XX;WB=XX;-XIDC
-cp;0FC6;age=3.0;-Alpha;bc=NSM;ccc=220;CI;Dia;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;InSC=Syllable_Modifier;jt=T;lb=CM;na=TIBETAN SYMBOL PADMA GDAN
+cp;0FC6;age=3.0;-Alpha;bc=NSM;ccc=220;CI;Dia;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Bottom;InSC=Syllable_Modifier;jt=T;lb=CM;na=TIBETAN SYMBOL PADMA GDAN
cp;0FC7;age=3.0;-Alpha;gc=So;-IDC;InSC=Other;na=TIBETAN SYMBOL RDO RJE RGYA GRAM;SB=XX;WB=XX;-XIDC
cp;0FC8;age=3.0;-Alpha;gc=So;-IDC;InSC=Other;na=TIBETAN SYMBOL PHUR PA;SB=XX;WB=XX;-XIDC
cp;0FC9;age=3.0;-Alpha;gc=So;-IDC;InSC=Other;na=TIBETAN SYMBOL NOR BU;SB=XX;WB=XX;-XIDC
@@ -5606,11 +5623,11 @@ cp;1034;age=5.1;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Vowel_Depen
cp;1035;age=5.1;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Vowel_Dependent;jt=T;na=MYANMAR VOWEL SIGN E ABOVE;SB=EX
# Various signs
cp;1036;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Bindu;jt=T;na=MYANMAR SIGN ANUSVARA;SB=EX
-cp;1037;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;InSC=Tone_Mark;jt=T;na=MYANMAR SIGN DOT BELOW;SB=EX
+cp;1037;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Bottom;InSC=Tone_Mark;jt=T;na=MYANMAR SIGN DOT BELOW;SB=EX
cp;1038;gc=Mc;InPC=Right;InSC=Visarga;na=MYANMAR SIGN VISARGA;SB=EX
# Virama and killer
-cp;1039;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;InSC=Invisible_Stacker;jt=T;na=MYANMAR SIGN VIRAMA;SB=EX
-cp;103A;age=5.1;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;InPC=Top;InSC=Pure_Killer;jt=T;na=MYANMAR SIGN ASAT;SB=EX
+cp;1039;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;InCB=Extend;InSC=Invisible_Stacker;jt=T;na=MYANMAR SIGN VIRAMA;SB=EX
+cp;103A;age=5.1;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;InCB=Extend;InPC=Top;InSC=Pure_Killer;jt=T;na=MYANMAR SIGN ASAT;SB=EX
# Dependent consonant signs
cp;103B;age=5.1;gc=Mc;GCB=SM;InPC=Right;InSC=Consonant_Medial;na=MYANMAR CONSONANT SIGN MEDIAL YA;SB=EX
cp;103C;age=5.1;gc=Mc;GCB=SM;InPC=Top_And_Bottom_And_Left;InSC=Consonant_Medial;na=MYANMAR CONSONANT SIGN MEDIAL RA;SB=EX
@@ -5706,7 +5723,7 @@ cp;1089;age=5.1;Dia;gc=Mc;InPC=Right;InSC=Tone_Mark;na=MYANMAR SIGN SHAN TONE-5;
cp;108A;age=5.1;Dia;gc=Mc;InPC=Right;InSC=Tone_Mark;na=MYANMAR SIGN SHAN TONE-6;SB=EX
cp;108B;age=5.1;Dia;gc=Mc;InPC=Right;InSC=Tone_Mark;na=MYANMAR SIGN SHAN COUNCIL TONE-2;SB=EX
cp;108C;age=5.1;Dia;gc=Mc;InPC=Right;InSC=Tone_Mark;na=MYANMAR SIGN SHAN COUNCIL TONE-3;SB=EX
-cp;108D;age=5.1;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;InSC=Tone_Mark;jt=T;na=MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE;SB=EX
+cp;108D;age=5.1;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Bottom;InSC=Tone_Mark;jt=T;na=MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE;SB=EX
# Extensions for Rumai Palaung
cp;108E;age=5.1;IDS;na=MYANMAR LETTER RUMAI PALAUNG FA;WB=XX;XIDS
cp;108F;age=5.1;Dia;gc=Mc;InPC=Right;InSC=Tone_Mark;na=MYANMAR SIGN RUMAI PALAUNG TONE-5;SB=EX
@@ -5734,50 +5751,50 @@ cp;109F;age=5.1;-Alpha;gc=So;-IDC;InSC=Other;na=MYANMAR SYMBOL SHAN EXCLAMATION;
block;10A0..10FF;age=1.1;Alpha;blk=Georgian;Cased;CWCM;gc=Ll;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Geor;WB=LE;XIDC;XIDS
# 10A0..10FF Georgian
# Capital letters (Khutsuri)
-cp;10A0;cf=2D00;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER AN;NFKC_CF=2D00;SB=UP;scf=2D00;slc=2D00;Upper
-cp;10A1;cf=2D01;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER BAN;NFKC_CF=2D01;SB=UP;scf=2D01;slc=2D01;Upper
-cp;10A2;cf=2D02;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER GAN;NFKC_CF=2D02;SB=UP;scf=2D02;slc=2D02;Upper
-cp;10A3;cf=2D03;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER DON;NFKC_CF=2D03;SB=UP;scf=2D03;slc=2D03;Upper
-cp;10A4;cf=2D04;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER EN;NFKC_CF=2D04;SB=UP;scf=2D04;slc=2D04;Upper
-cp;10A5;cf=2D05;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER VIN;NFKC_CF=2D05;SB=UP;scf=2D05;slc=2D05;Upper
-cp;10A6;cf=2D06;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER ZEN;NFKC_CF=2D06;SB=UP;scf=2D06;slc=2D06;Upper
-cp;10A7;cf=2D07;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER TAN;NFKC_CF=2D07;SB=UP;scf=2D07;slc=2D07;Upper
-cp;10A8;cf=2D08;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER IN;NFKC_CF=2D08;SB=UP;scf=2D08;slc=2D08;Upper
-cp;10A9;cf=2D09;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER KAN;NFKC_CF=2D09;SB=UP;scf=2D09;slc=2D09;Upper
-cp;10AA;cf=2D0A;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER LAS;NFKC_CF=2D0A;SB=UP;scf=2D0A;slc=2D0A;Upper
-cp;10AB;cf=2D0B;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER MAN;NFKC_CF=2D0B;SB=UP;scf=2D0B;slc=2D0B;Upper
-cp;10AC;cf=2D0C;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER NAR;NFKC_CF=2D0C;SB=UP;scf=2D0C;slc=2D0C;Upper
-cp;10AD;cf=2D0D;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER ON;NFKC_CF=2D0D;SB=UP;scf=2D0D;slc=2D0D;Upper
-cp;10AE;cf=2D0E;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER PAR;NFKC_CF=2D0E;SB=UP;scf=2D0E;slc=2D0E;Upper
-cp;10AF;cf=2D0F;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER ZHAR;NFKC_CF=2D0F;SB=UP;scf=2D0F;slc=2D0F;Upper
-cp;10B0;cf=2D10;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER RAE;NFKC_CF=2D10;SB=UP;scf=2D10;slc=2D10;Upper
-cp;10B1;cf=2D11;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER SAN;NFKC_CF=2D11;SB=UP;scf=2D11;slc=2D11;Upper
-cp;10B2;cf=2D12;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER TAR;NFKC_CF=2D12;SB=UP;scf=2D12;slc=2D12;Upper
-cp;10B3;cf=2D13;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER UN;NFKC_CF=2D13;SB=UP;scf=2D13;slc=2D13;Upper
-cp;10B4;cf=2D14;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER PHAR;NFKC_CF=2D14;SB=UP;scf=2D14;slc=2D14;Upper
-cp;10B5;cf=2D15;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER KHAR;NFKC_CF=2D15;SB=UP;scf=2D15;slc=2D15;Upper
-cp;10B6;cf=2D16;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER GHAN;NFKC_CF=2D16;SB=UP;scf=2D16;slc=2D16;Upper
-cp;10B7;cf=2D17;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER QAR;NFKC_CF=2D17;SB=UP;scf=2D17;slc=2D17;Upper
-cp;10B8;cf=2D18;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER SHIN;NFKC_CF=2D18;SB=UP;scf=2D18;slc=2D18;Upper
-cp;10B9;cf=2D19;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER CHIN;NFKC_CF=2D19;SB=UP;scf=2D19;slc=2D19;Upper
-cp;10BA;cf=2D1A;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER CAN;NFKC_CF=2D1A;SB=UP;scf=2D1A;slc=2D1A;Upper
-cp;10BB;cf=2D1B;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER JIL;NFKC_CF=2D1B;SB=UP;scf=2D1B;slc=2D1B;Upper
-cp;10BC;cf=2D1C;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER CIL;NFKC_CF=2D1C;SB=UP;scf=2D1C;slc=2D1C;Upper
-cp;10BD;cf=2D1D;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER CHAR;NFKC_CF=2D1D;SB=UP;scf=2D1D;slc=2D1D;Upper
-cp;10BE;cf=2D1E;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER XAN;NFKC_CF=2D1E;SB=UP;scf=2D1E;slc=2D1E;Upper
-cp;10BF;cf=2D1F;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER JHAN;NFKC_CF=2D1F;SB=UP;scf=2D1F;slc=2D1F;Upper
-cp;10C0;cf=2D20;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER HAE;NFKC_CF=2D20;SB=UP;scf=2D20;slc=2D20;Upper
-cp;10C1;cf=2D21;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER HE;NFKC_CF=2D21;SB=UP;scf=2D21;slc=2D21;Upper
-cp;10C2;cf=2D22;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER HIE;NFKC_CF=2D22;SB=UP;scf=2D22;slc=2D22;Upper
-cp;10C3;cf=2D23;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER WE;NFKC_CF=2D23;SB=UP;scf=2D23;slc=2D23;Upper
-cp;10C4;cf=2D24;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER HAR;NFKC_CF=2D24;SB=UP;scf=2D24;slc=2D24;Upper
-cp;10C5;cf=2D25;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER HOE;NFKC_CF=2D25;SB=UP;scf=2D25;slc=2D25;Upper
+cp;10A0;cf=2D00;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER AN;NFKC_CF=2D00;NFKC_SCF=2D00;SB=UP;scf=2D00;slc=2D00;Upper
+cp;10A1;cf=2D01;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER BAN;NFKC_CF=2D01;NFKC_SCF=2D01;SB=UP;scf=2D01;slc=2D01;Upper
+cp;10A2;cf=2D02;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER GAN;NFKC_CF=2D02;NFKC_SCF=2D02;SB=UP;scf=2D02;slc=2D02;Upper
+cp;10A3;cf=2D03;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER DON;NFKC_CF=2D03;NFKC_SCF=2D03;SB=UP;scf=2D03;slc=2D03;Upper
+cp;10A4;cf=2D04;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER EN;NFKC_CF=2D04;NFKC_SCF=2D04;SB=UP;scf=2D04;slc=2D04;Upper
+cp;10A5;cf=2D05;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER VIN;NFKC_CF=2D05;NFKC_SCF=2D05;SB=UP;scf=2D05;slc=2D05;Upper
+cp;10A6;cf=2D06;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER ZEN;NFKC_CF=2D06;NFKC_SCF=2D06;SB=UP;scf=2D06;slc=2D06;Upper
+cp;10A7;cf=2D07;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER TAN;NFKC_CF=2D07;NFKC_SCF=2D07;SB=UP;scf=2D07;slc=2D07;Upper
+cp;10A8;cf=2D08;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER IN;NFKC_CF=2D08;NFKC_SCF=2D08;SB=UP;scf=2D08;slc=2D08;Upper
+cp;10A9;cf=2D09;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER KAN;NFKC_CF=2D09;NFKC_SCF=2D09;SB=UP;scf=2D09;slc=2D09;Upper
+cp;10AA;cf=2D0A;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER LAS;NFKC_CF=2D0A;NFKC_SCF=2D0A;SB=UP;scf=2D0A;slc=2D0A;Upper
+cp;10AB;cf=2D0B;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER MAN;NFKC_CF=2D0B;NFKC_SCF=2D0B;SB=UP;scf=2D0B;slc=2D0B;Upper
+cp;10AC;cf=2D0C;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER NAR;NFKC_CF=2D0C;NFKC_SCF=2D0C;SB=UP;scf=2D0C;slc=2D0C;Upper
+cp;10AD;cf=2D0D;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER ON;NFKC_CF=2D0D;NFKC_SCF=2D0D;SB=UP;scf=2D0D;slc=2D0D;Upper
+cp;10AE;cf=2D0E;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER PAR;NFKC_CF=2D0E;NFKC_SCF=2D0E;SB=UP;scf=2D0E;slc=2D0E;Upper
+cp;10AF;cf=2D0F;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER ZHAR;NFKC_CF=2D0F;NFKC_SCF=2D0F;SB=UP;scf=2D0F;slc=2D0F;Upper
+cp;10B0;cf=2D10;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER RAE;NFKC_CF=2D10;NFKC_SCF=2D10;SB=UP;scf=2D10;slc=2D10;Upper
+cp;10B1;cf=2D11;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER SAN;NFKC_CF=2D11;NFKC_SCF=2D11;SB=UP;scf=2D11;slc=2D11;Upper
+cp;10B2;cf=2D12;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER TAR;NFKC_CF=2D12;NFKC_SCF=2D12;SB=UP;scf=2D12;slc=2D12;Upper
+cp;10B3;cf=2D13;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER UN;NFKC_CF=2D13;NFKC_SCF=2D13;SB=UP;scf=2D13;slc=2D13;Upper
+cp;10B4;cf=2D14;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER PHAR;NFKC_CF=2D14;NFKC_SCF=2D14;SB=UP;scf=2D14;slc=2D14;Upper
+cp;10B5;cf=2D15;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER KHAR;NFKC_CF=2D15;NFKC_SCF=2D15;SB=UP;scf=2D15;slc=2D15;Upper
+cp;10B6;cf=2D16;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER GHAN;NFKC_CF=2D16;NFKC_SCF=2D16;SB=UP;scf=2D16;slc=2D16;Upper
+cp;10B7;cf=2D17;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER QAR;NFKC_CF=2D17;NFKC_SCF=2D17;SB=UP;scf=2D17;slc=2D17;Upper
+cp;10B8;cf=2D18;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER SHIN;NFKC_CF=2D18;NFKC_SCF=2D18;SB=UP;scf=2D18;slc=2D18;Upper
+cp;10B9;cf=2D19;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER CHIN;NFKC_CF=2D19;NFKC_SCF=2D19;SB=UP;scf=2D19;slc=2D19;Upper
+cp;10BA;cf=2D1A;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER CAN;NFKC_CF=2D1A;NFKC_SCF=2D1A;SB=UP;scf=2D1A;slc=2D1A;Upper
+cp;10BB;cf=2D1B;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER JIL;NFKC_CF=2D1B;NFKC_SCF=2D1B;SB=UP;scf=2D1B;slc=2D1B;Upper
+cp;10BC;cf=2D1C;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER CIL;NFKC_CF=2D1C;NFKC_SCF=2D1C;SB=UP;scf=2D1C;slc=2D1C;Upper
+cp;10BD;cf=2D1D;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER CHAR;NFKC_CF=2D1D;NFKC_SCF=2D1D;SB=UP;scf=2D1D;slc=2D1D;Upper
+cp;10BE;cf=2D1E;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER XAN;NFKC_CF=2D1E;NFKC_SCF=2D1E;SB=UP;scf=2D1E;slc=2D1E;Upper
+cp;10BF;cf=2D1F;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER JHAN;NFKC_CF=2D1F;NFKC_SCF=2D1F;SB=UP;scf=2D1F;slc=2D1F;Upper
+cp;10C0;cf=2D20;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER HAE;NFKC_CF=2D20;NFKC_SCF=2D20;SB=UP;scf=2D20;slc=2D20;Upper
+cp;10C1;cf=2D21;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER HE;NFKC_CF=2D21;NFKC_SCF=2D21;SB=UP;scf=2D21;slc=2D21;Upper
+cp;10C2;cf=2D22;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER HIE;NFKC_CF=2D22;NFKC_SCF=2D22;SB=UP;scf=2D22;slc=2D22;Upper
+cp;10C3;cf=2D23;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER WE;NFKC_CF=2D23;NFKC_SCF=2D23;SB=UP;scf=2D23;slc=2D23;Upper
+cp;10C4;cf=2D24;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER HAR;NFKC_CF=2D24;NFKC_SCF=2D24;SB=UP;scf=2D24;slc=2D24;Upper
+cp;10C5;cf=2D25;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER HOE;NFKC_CF=2D25;NFKC_SCF=2D25;SB=UP;scf=2D25;slc=2D25;Upper
unassigned;10C6
# Additional letter
-cp;10C7;age=6.1;cf=2D27;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER YN;NFKC_CF=2D27;SB=UP;scf=2D27;slc=2D27;Upper
+cp;10C7;age=6.1;cf=2D27;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER YN;NFKC_CF=2D27;NFKC_SCF=2D27;SB=UP;scf=2D27;slc=2D27;Upper
unassigned;10C8..10CC
# Additional letter for Ossetian
-cp;10CD;age=6.1;cf=2D2D;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER AEN;NFKC_CF=2D2D;SB=UP;scf=2D2D;slc=2D2D;Upper
+cp;10CD;age=6.1;cf=2D2D;CWCF;CWKCF;CWL;gc=Lu;na=GEORGIAN CAPITAL LETTER AEN;NFKC_CF=2D2D;NFKC_SCF=2D2D;SB=UP;scf=2D2D;slc=2D2D;Upper
unassigned;10CE..10CF
# Mkhedruli
cp;10D0;CWU;Lower;na=GEORGIAN LETTER AN;stc=10D0;suc=1C90
@@ -5829,7 +5846,7 @@ cp;10FA;age=4.1;CWU;Lower;na=GEORGIAN LETTER AIN;stc=10FA;suc=1CBA
# Punctuation
cp;10FB;-Alpha;-Cased;-CWCM;gc=Po;-IDC;-IDS;na=GEORGIAN PARAGRAPH SEPARATOR;SB=XX;sc=Zyyy;scx=Geor Latn;WB=XX;-XIDC;-XIDS
# Modifier letter
-cp;10FC;age=4.1;CI;-CWCM;CWKCF;dm=10DC;dt=Sup;gc=Lm;Lower;na=MODIFIER LETTER GEORGIAN NAR;NFKC_CF=10DC;NFKC_QC=N;NFKD_QC=N;SB=LO
+cp;10FC;age=4.1;CI;-CWCM;CWKCF;dm=10DC;dt=Sup;gc=Lm;Lower;na=MODIFIER LETTER GEORGIAN NAR;NFKC_CF=10DC;NFKC_QC=N;NFKC_SCF=10DC;NFKD_QC=N;SB=LO
# Additional letters for Ossetian and Abkhaz
cp;10FD;age=6.1;CWU;Lower;na=GEORGIAN LETTER AEN;stc=10FD;suc=1CBD
cp;10FE;age=6.1;CWU;Lower;na=GEORGIAN LETTER HARD SIGN;stc=10FE;suc=1CBE
@@ -5934,9 +5951,9 @@ cp;115B;age=5.2;ea=W;na=HANGUL CHOSEONG NIEUN-SIOS
cp;115C;age=5.2;ea=W;na=HANGUL CHOSEONG NIEUN-CIEUC
cp;115D;age=5.2;ea=W;na=HANGUL CHOSEONG NIEUN-HIEUH
cp;115E;age=5.2;ea=W;na=HANGUL CHOSEONG TIKEUT-RIEUL
-cp;115F;CWKCF;DI;ea=W;na=HANGUL CHOSEONG FILLER;NFKC_CF=
+cp;115F;CWKCF;DI;ea=W;na=HANGUL CHOSEONG FILLER;NFKC_CF=;NFKC_SCF=
# Medial vowels
-cp;1160;CWKCF;DI;GCB=V;lb=JV;na=HANGUL JUNGSEONG FILLER;NFKC_CF=
+cp;1160;CWKCF;DI;GCB=V;lb=JV;na=HANGUL JUNGSEONG FILLER;NFKC_CF=;NFKC_SCF=
cp;1161;GCB=V;lb=JV;na=HANGUL JUNGSEONG A;NFC_QC=M;NFKC_QC=M
cp;1162;GCB=V;lb=JV;na=HANGUL JUNGSEONG AE;NFC_QC=M;NFKC_QC=M
cp;1163;GCB=V;lb=JV;na=HANGUL JUNGSEONG YA;NFC_QC=M;NFKC_QC=M
@@ -6446,9 +6463,9 @@ cp;1359;na=ETHIOPIC SYLLABLE MYA
cp;135A;na=ETHIOPIC SYLLABLE FYA
unassigned;135B..135C
# Combining marks
-cp;135D;age=6.0;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK;SB=EX;WB=Extend;-XIDS
-cp;135E;age=6.0;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ETHIOPIC COMBINING VOWEL LENGTH MARK;SB=EX;WB=Extend;-XIDS
-cp;135F;age=4.1;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ETHIOPIC COMBINING GEMINATION MARK;SB=EX;WB=Extend;-XIDS
+cp;135D;age=6.0;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK;SB=EX;WB=Extend;-XIDS
+cp;135E;age=6.0;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ETHIOPIC COMBINING VOWEL LENGTH MARK;SB=EX;WB=Extend;-XIDS
+cp;135F;age=4.1;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ETHIOPIC COMBINING GEMINATION MARK;SB=EX;WB=Extend;-XIDS
# Punctuation
cp;1360;age=4.1;-Alpha;gc=Po;-IDC;-IDS;na=ETHIOPIC SECTION MARK;SB=XX;WB=XX;-XIDC;-XIDS
cp;1361;-Alpha;gc=Po;-IDC;-IDS;lb=BA;na=ETHIOPIC WORDSPACE;SB=XX;Term;WB=XX;-XIDC;-XIDS
@@ -6607,13 +6624,13 @@ cp;13F4;na=CHEROKEE LETTER YV;slc=13FC
cp;13F5;age=8.0;na=CHEROKEE LETTER MV;slc=13FD
unassigned;13F6..13F7
# Lowercase syllables
-cp;13F8;age=8.0;cf=13F0;CWCF;CWKCF;-CWL;CWT;CWU;gc=Ll;Lower;na=CHEROKEE SMALL LETTER YE;NFKC_CF=13F0;SB=LO;scf=13F0;stc=13F0;suc=13F0;-Upper
-cp;13F9;age=8.0;cf=13F1;CWCF;CWKCF;-CWL;CWT;CWU;gc=Ll;Lower;na=CHEROKEE SMALL LETTER YI;NFKC_CF=13F1;SB=LO;scf=13F1;stc=13F1;suc=13F1;-Upper
-cp;13FA;age=8.0;cf=13F2;CWCF;CWKCF;-CWL;CWT;CWU;gc=Ll;Lower;na=CHEROKEE SMALL LETTER YO;NFKC_CF=13F2;SB=LO;scf=13F2;stc=13F2;suc=13F2;-Upper
-cp;13FB;age=8.0;cf=13F3;CWCF;CWKCF;-CWL;CWT;CWU;gc=Ll;Lower;na=CHEROKEE SMALL LETTER YU;NFKC_CF=13F3;SB=LO;scf=13F3;stc=13F3;suc=13F3;-Upper
-cp;13FC;age=8.0;cf=13F4;CWCF;CWKCF;-CWL;CWT;CWU;gc=Ll;Lower;na=CHEROKEE SMALL LETTER YV;NFKC_CF=13F4;SB=LO;scf=13F4;stc=13F4;suc=13F4;-Upper
+cp;13F8;age=8.0;cf=13F0;CWCF;CWKCF;-CWL;CWT;CWU;gc=Ll;Lower;na=CHEROKEE SMALL LETTER YE;NFKC_CF=13F0;NFKC_SCF=13F0;SB=LO;scf=13F0;stc=13F0;suc=13F0;-Upper
+cp;13F9;age=8.0;cf=13F1;CWCF;CWKCF;-CWL;CWT;CWU;gc=Ll;Lower;na=CHEROKEE SMALL LETTER YI;NFKC_CF=13F1;NFKC_SCF=13F1;SB=LO;scf=13F1;stc=13F1;suc=13F1;-Upper
+cp;13FA;age=8.0;cf=13F2;CWCF;CWKCF;-CWL;CWT;CWU;gc=Ll;Lower;na=CHEROKEE SMALL LETTER YO;NFKC_CF=13F2;NFKC_SCF=13F2;SB=LO;scf=13F2;stc=13F2;suc=13F2;-Upper
+cp;13FB;age=8.0;cf=13F3;CWCF;CWKCF;-CWL;CWT;CWU;gc=Ll;Lower;na=CHEROKEE SMALL LETTER YU;NFKC_CF=13F3;NFKC_SCF=13F3;SB=LO;scf=13F3;stc=13F3;suc=13F3;-Upper
+cp;13FC;age=8.0;cf=13F4;CWCF;CWKCF;-CWL;CWT;CWU;gc=Ll;Lower;na=CHEROKEE SMALL LETTER YV;NFKC_CF=13F4;NFKC_SCF=13F4;SB=LO;scf=13F4;stc=13F4;suc=13F4;-Upper
# Archaic lowercase syllable
-cp;13FD;age=8.0;cf=13F5;CWCF;CWKCF;-CWL;CWT;CWU;gc=Ll;Lower;na=CHEROKEE SMALL LETTER MV;NFKC_CF=13F5;SB=LO;scf=13F5;stc=13F5;suc=13F5;-Upper
+cp;13FD;age=8.0;cf=13F5;CWCF;CWKCF;-CWL;CWT;CWU;gc=Ll;Lower;na=CHEROKEE SMALL LETTER MV;NFKC_CF=13F5;NFKC_SCF=13F5;SB=LO;scf=13F5;stc=13F5;suc=13F5;-Upper
unassigned;13FE..13FF
block;1400..167F;age=3.0;Alpha;blk=UCAS;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Cans;vo=U;WB=LE;XIDC;XIDS
@@ -7426,7 +7443,7 @@ cp;1711;na=TAGALOG LETTER HA
cp;1712;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=TAGALOG VOWEL SIGN I;SB=EX;WB=Extend;-XIDS
cp;1713;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=TAGALOG VOWEL SIGN U;SB=EX;WB=Extend;-XIDS
# Viramas
-cp;1714;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InPC=Bottom;InSC=Pure_Killer;jt=T;lb=CM;na=TAGALOG SIGN VIRAMA;SB=EX;WB=Extend;-XIDS
+cp;1714;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InCB=Extend;InPC=Bottom;InSC=Pure_Killer;jt=T;lb=CM;na=TAGALOG SIGN VIRAMA;SB=EX;WB=Extend;-XIDS
cp;1715;age=14.0;-Alpha;ccc=9;Dia;gc=Mc;GCB=SM;Gr_Link;-IDS;InPC=Right;InSC=Pure_Killer;lb=CM;na=TAGALOG SIGN PAMUDPOD;SB=EX;WB=Extend;-XIDS
unassigned;1716..171E
# Archaic letter
@@ -7576,8 +7593,8 @@ cp;17B1;IDS;InSC=Vowel_Independent;na=KHMER INDEPENDENT VOWEL QOO TYPE ONE;XIDS
cp;17B2;IDS;InSC=Vowel_Independent;na=KHMER INDEPENDENT VOWEL QOO TYPE TWO;XIDS
cp;17B3;IDS;InSC=Vowel_Independent;na=KHMER INDEPENDENT VOWEL QAU;XIDS
# Inherent vowels
-cp;17B4;-Alpha;bc=NSM;CI;CWKCF;DI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InSC=Other;jt=T;na=KHMER VOWEL INHERENT AQ;NFKC_CF=;SB=EX;WB=Extend
-cp;17B5;-Alpha;bc=NSM;CI;CWKCF;DI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InSC=Other;jt=T;na=KHMER VOWEL INHERENT AA;NFKC_CF=;SB=EX;WB=Extend
+cp;17B4;-Alpha;bc=NSM;CI;CWKCF;DI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InSC=Other;jt=T;na=KHMER VOWEL INHERENT AQ;NFKC_CF=;NFKC_SCF=;SB=EX;WB=Extend
+cp;17B5;-Alpha;bc=NSM;CI;CWKCF;DI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InSC=Other;jt=T;na=KHMER VOWEL INHERENT AA;NFKC_CF=;NFKC_SCF=;SB=EX;WB=Extend
# Dependent vowel signs
cp;17B6;gc=Mc;GCB=SM;InPC=Right;InSC=Vowel_Dependent;na=KHMER VOWEL SIGN AA;SB=EX;WB=Extend
cp;17B7;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Vowel_Dependent;jt=T;na=KHMER VOWEL SIGN I;SB=EX;WB=Extend
@@ -7613,12 +7630,12 @@ cp;17CE;-Alpha;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Syllable
cp;17CF;-Alpha;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Syllable_Modifier;jt=T;na=KHMER SIGN AHSDA;SB=EX;WB=Extend
cp;17D0;-Alpha;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Syllable_Modifier;jt=T;na=KHMER SIGN SAMYOK SANNYA;SB=EX;WB=Extend
cp;17D1;-Alpha;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Pure_Killer;jt=T;na=KHMER SIGN VIRIAM;SB=EX;WB=Extend
-cp;17D2;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;InSC=Invisible_Stacker;jt=T;na=KHMER SIGN COENG;SB=EX;WB=Extend
+cp;17D2;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;InCB=Extend;InSC=Invisible_Stacker;jt=T;na=KHMER SIGN COENG;SB=EX;WB=Extend
# Lunar date sign
cp;17D3;-Alpha;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Syllable_Modifier;jt=T;na=KHMER SIGN BATHAMASAT;SB=EX;WB=Extend
# Various signs
-cp;17D4;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=KHMER SIGN KHAN;SB=XX;Term;-XIDC
-cp;17D5;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=KHMER SIGN BARIYOOSAN;SB=XX;Term;-XIDC
+cp;17D4;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=KHMER SIGN KHAN;SB=ST;STerm;Term;-XIDC
+cp;17D5;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=KHMER SIGN BARIYOOSAN;SB=ST;STerm;Term;-XIDC
cp;17D6;-Alpha;gc=Po;-IDC;InSC=Other;lb=NS;na=KHMER SIGN CAMNUC PII KUUH;SB=XX;Term;-XIDC
cp;17D7;CI;gc=Lm;IDS;InSC=Other;na=KHMER SIGN LEK TOO;XIDS
cp;17D8;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=KHMER SIGN BEYYAL;SB=XX;-XIDC
@@ -7628,7 +7645,7 @@ cp;17DA;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=KHMER SIGN KOOMUUT;SB=XX;Term;-XID
cp;17DB;-Alpha;bc=ET;gc=Sc;-IDC;InSC=Other;lb=PR;na=KHMER CURRENCY SYMBOL RIEL;SB=XX;-XIDC
# Various signs
cp;17DC;IDS;InSC=Avagraha;na=KHMER SIGN AVAKRAHASANYA;XIDS
-cp;17DD;age=4.0;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Syllable_Modifier;jt=T;na=KHMER SIGN ATTHACAN;SB=EX;WB=Extend
+cp;17DD;age=4.0;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Syllable_Modifier;jt=T;na=KHMER SIGN ATTHACAN;SB=EX;WB=Extend
unassigned;17DE..17DF
# Digits
cp;17E0;-Alpha;gc=Nd;InSC=Number;lb=NU;na=KHMER DIGIT ZERO;nt=De;nv=0;SB=NU;WB=NU
@@ -7670,11 +7687,11 @@ cp;1808;-Alpha;bc=ON;gc=Po;-IDC;-IDS;jt=U;lb=EX;na=MONGOLIAN MANCHU COMMA;SB=SC;
cp;1809;-Alpha;bc=ON;gc=Po;-IDC;-IDS;jt=U;lb=EX;na=MONGOLIAN MANCHU FULL STOP;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
cp;180A;-Alpha;bc=ON;Ext;gc=Po;-IDC;-IDS;jt=C;na=MONGOLIAN NIRUGU;SB=XX;WB=XX;-XIDC;-XIDS
# Format controls
-cp;180B;-Alpha;bc=NSM;CI;CWKCF;DI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=MONGOLIAN FREE VARIATION SELECTOR ONE;Name_Alias=abbreviation=FVS1;NFKC_CF=;SB=EX;VS;WB=Extend;-XIDS
-cp;180C;-Alpha;bc=NSM;CI;CWKCF;DI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=MONGOLIAN FREE VARIATION SELECTOR TWO;Name_Alias=abbreviation=FVS2;NFKC_CF=;SB=EX;VS;WB=Extend;-XIDS
-cp;180D;-Alpha;bc=NSM;CI;CWKCF;DI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=MONGOLIAN FREE VARIATION SELECTOR THREE;Name_Alias=abbreviation=FVS3;NFKC_CF=;SB=EX;VS;WB=Extend;-XIDS
-cp;180E;-Alpha;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;-IDC;-IDS;jt=U;lb=GL;na=MONGOLIAN VOWEL SEPARATOR;Name_Alias=abbreviation=MVS;NFKC_CF=;SB=FO;WB=FO;-XIDC;-XIDS
-cp;180F;age=14.0;-Alpha;bc=NSM;CI;CWKCF;DI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=MONGOLIAN FREE VARIATION SELECTOR FOUR;Name_Alias=abbreviation=FVS4;NFKC_CF=;SB=EX;VS;WB=Extend;-XIDS
+cp;180B;-Alpha;bc=NSM;CI;CWKCF;DI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=MONGOLIAN FREE VARIATION SELECTOR ONE;Name_Alias=abbreviation=FVS1;NFKC_CF=;NFKC_SCF=;SB=EX;VS;WB=Extend;-XIDS
+cp;180C;-Alpha;bc=NSM;CI;CWKCF;DI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=MONGOLIAN FREE VARIATION SELECTOR TWO;Name_Alias=abbreviation=FVS2;NFKC_CF=;NFKC_SCF=;SB=EX;VS;WB=Extend;-XIDS
+cp;180D;-Alpha;bc=NSM;CI;CWKCF;DI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=MONGOLIAN FREE VARIATION SELECTOR THREE;Name_Alias=abbreviation=FVS3;NFKC_CF=;NFKC_SCF=;SB=EX;VS;WB=Extend;-XIDS
+cp;180E;-Alpha;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;-IDC;-IDS;jt=U;lb=GL;na=MONGOLIAN VOWEL SEPARATOR;Name_Alias=abbreviation=MVS;NFKC_CF=;NFKC_SCF=;SB=FO;WB=FO;-XIDC;-XIDS
+cp;180F;age=14.0;-Alpha;bc=NSM;CI;CWKCF;DI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=MONGOLIAN FREE VARIATION SELECTOR FOUR;Name_Alias=abbreviation=FVS4;NFKC_CF=;NFKC_SCF=;SB=EX;VS;WB=Extend;-XIDS
# Digits
cp;1810;-Alpha;gc=Nd;-IDS;jt=U;lb=NU;na=MONGOLIAN DIGIT ZERO;nt=De;nv=0;SB=NU;WB=NU;-XIDS
cp;1811;-Alpha;gc=Nd;-IDS;jt=U;lb=NU;na=MONGOLIAN DIGIT ONE;nt=De;nv=1;SB=NU;WB=NU;-XIDS
@@ -7824,7 +7841,7 @@ cp;18A5;na=MONGOLIAN LETTER MANCHU ALI GALI ZA
cp;18A6;na=MONGOLIAN LETTER ALI GALI HALF U
cp;18A7;na=MONGOLIAN LETTER ALI GALI HALF YA
cp;18A8;na=MONGOLIAN LETTER MANCHU ALI GALI BHA
-cp;18A9;bc=NSM;ccc=228;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=MONGOLIAN LETTER ALI GALI DAGALGA;SB=EX;WB=Extend;-XIDS
+cp;18A9;bc=NSM;ccc=228;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=MONGOLIAN LETTER ALI GALI DAGALGA;SB=EX;WB=Extend;-XIDS
cp;18AA;age=5.1;na=MONGOLIAN LETTER MANCHU ALI GALI LHA
unassigned;18AB..18AF
@@ -7968,9 +7985,9 @@ cp;1936;gc=Mc;GCB=SM;InPC=Right;InSC=Consonant_Final;lb=CM;na=LIMBU SMALL LETTER
cp;1937;gc=Mc;GCB=SM;InPC=Right;InSC=Consonant_Final;lb=CM;na=LIMBU SMALL LETTER RA;SB=EX
cp;1938;gc=Mc;GCB=SM;InPC=Right;InSC=Consonant_Final;lb=CM;na=LIMBU SMALL LETTER LA;SB=EX
# Various signs
-cp;1939;-Alpha;bc=NSM;ccc=222;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;InSC=Consonant_Final;jt=T;lb=CM;na=LIMBU SIGN MUKPHRENG;SB=EX
-cp;193A;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=LIMBU SIGN KEMPHRENG;SB=EX
-cp;193B;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;InSC=Syllable_Modifier;jt=T;lb=CM;na=LIMBU SIGN SA-I;SB=EX
+cp;1939;-Alpha;bc=NSM;ccc=222;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Bottom;InSC=Consonant_Final;jt=T;lb=CM;na=LIMBU SIGN MUKPHRENG;SB=EX
+cp;193A;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=LIMBU SIGN KEMPHRENG;SB=EX
+cp;193B;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Bottom;InSC=Syllable_Modifier;jt=T;lb=CM;na=LIMBU SIGN SA-I;SB=EX
unassigned;193C..193F
cp;1940;-Alpha;bc=ON;gc=So;-IDC;InSC=Other;na=LIMBU SIGN LOO;SB=XX;WB=XX;-XIDC
unassigned;1941..1943
@@ -8189,8 +8206,8 @@ cp;1A14;na=BUGINESE LETTER SA
cp;1A15;na=BUGINESE LETTER A
cp;1A16;na=BUGINESE LETTER HA
# Vowels
-cp;1A17;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=BUGINESE VOWEL SIGN I;SB=EX;WB=Extend;-XIDS
-cp;1A18;bc=NSM;ccc=220;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=BUGINESE VOWEL SIGN U;SB=EX;WB=Extend;-XIDS
+cp;1A17;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=BUGINESE VOWEL SIGN I;SB=EX;WB=Extend;-XIDS
+cp;1A18;bc=NSM;ccc=220;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=BUGINESE VOWEL SIGN U;SB=EX;WB=Extend;-XIDS
cp;1A19;gc=Mc;GCB=SM;-IDS;InPC=Left;InSC=Vowel_Dependent;lb=CM;na=BUGINESE VOWEL SIGN E;SB=EX;WB=Extend;-XIDS
cp;1A1A;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=BUGINESE VOWEL SIGN O;SB=EX;WB=Extend;-XIDS
cp;1A1B;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=BUGINESE VOWEL SIGN AE;SB=EX;WB=Extend;-XIDS
@@ -8270,7 +8287,7 @@ cp;1A5D;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;InSC=Consonant_Subjoi
cp;1A5E;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;InSC=Consonant_Subjoined;jt=T;na=TAI THAM CONSONANT SIGN SA;SB=EX;WB=Extend
unassigned;1A5F
# Sign
-cp;1A60;-Alpha;bc=NSM;ccc=9;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;InSC=Invisible_Stacker;jt=T;na=TAI THAM SIGN SAKOT;SB=EX;WB=Extend
+cp;1A60;-Alpha;bc=NSM;ccc=9;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;InCB=Extend;InSC=Invisible_Stacker;jt=T;na=TAI THAM SIGN SAKOT;SB=EX;WB=Extend
# Dependent vowel signs
cp;1A61;gc=Mc;InPC=Right;InSC=Vowel_Dependent;na=TAI THAM VOWEL SIGN A;SB=EX;WB=Extend
cp;1A62;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Vowel_Dependent;jt=T;na=TAI THAM VOWEL SIGN MAI SAT;SB=EX;WB=Extend
@@ -8293,18 +8310,18 @@ cp;1A72;gc=Mc;GCB=SM;InPC=Left;InSC=Vowel_Dependent;na=TAI THAM VOWEL SIGN THAM
cp;1A73;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Vowel_Dependent;jt=T;na=TAI THAM VOWEL SIGN OA ABOVE;SB=EX;WB=Extend
cp;1A74;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Bindu;jt=T;na=TAI THAM SIGN MAI KANG;SB=EX;WB=Extend
# Tone marks
-cp;1A75;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Tone_Mark;jt=T;na=TAI THAM SIGN TONE-1;SB=EX;WB=Extend
-cp;1A76;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Tone_Mark;jt=T;na=TAI THAM SIGN TONE-2;SB=EX;WB=Extend
-cp;1A77;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Tone_Mark;jt=T;na=TAI THAM SIGN KHUEN TONE-3;SB=EX;WB=Extend
-cp;1A78;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Tone_Mark;jt=T;na=TAI THAM SIGN KHUEN TONE-4;SB=EX;WB=Extend
-cp;1A79;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Tone_Mark;jt=T;na=TAI THAM SIGN KHUEN TONE-5;SB=EX;WB=Extend
+cp;1A75;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Tone_Mark;jt=T;na=TAI THAM SIGN TONE-1;SB=EX;WB=Extend
+cp;1A76;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Tone_Mark;jt=T;na=TAI THAM SIGN TONE-2;SB=EX;WB=Extend
+cp;1A77;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Tone_Mark;jt=T;na=TAI THAM SIGN KHUEN TONE-3;SB=EX;WB=Extend
+cp;1A78;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Tone_Mark;jt=T;na=TAI THAM SIGN KHUEN TONE-4;SB=EX;WB=Extend
+cp;1A79;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Tone_Mark;jt=T;na=TAI THAM SIGN KHUEN TONE-5;SB=EX;WB=Extend
# Other marks
-cp;1A7A;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Pure_Killer;jt=T;na=TAI THAM SIGN RA HAAM;SB=EX;WB=Extend
-cp;1A7B;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Syllable_Modifier;jt=T;na=TAI THAM SIGN MAI SAM;SB=EX;WB=Extend
-cp;1A7C;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Syllable_Modifier;jt=T;na=TAI THAM SIGN KHUEN-LUE KARAN;SB=EX;WB=Extend
+cp;1A7A;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Pure_Killer;jt=T;na=TAI THAM SIGN RA HAAM;SB=EX;WB=Extend
+cp;1A7B;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Syllable_Modifier;jt=T;na=TAI THAM SIGN MAI SAM;SB=EX;WB=Extend
+cp;1A7C;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Syllable_Modifier;jt=T;na=TAI THAM SIGN KHUEN-LUE KARAN;SB=EX;WB=Extend
unassigned;1A7D..1A7E
# Cryptogrammic mark
-cp;1A7F;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;InSC=Syllable_Modifier;jt=T;lb=CM;na=TAI THAM COMBINING CRYPTOGRAMMIC DOT;SB=EX;WB=Extend
+cp;1A7F;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Bottom;InSC=Syllable_Modifier;jt=T;lb=CM;na=TAI THAM COMBINING CRYPTOGRAMMIC DOT;SB=EX;WB=Extend
# Hora digits
cp;1A80;-Alpha;gc=Nd;InSC=Number;lb=NU;na=TAI THAM HORA DIGIT ZERO;nt=De;nv=0;SB=NU;WB=NU
cp;1A81;-Alpha;gc=Nd;InSC=Number;lb=NU;na=TAI THAM HORA DIGIT ONE;nt=De;nv=1;SB=NU;WB=NU
@@ -8349,7 +8366,7 @@ cp;1AAC;-Alpha;gc=Po;-IDC;InSC=Other;na=TAI THAM SIGN HANG;SB=XX;-XIDC
cp;1AAD;-Alpha;gc=Po;-IDC;InSC=Other;na=TAI THAM SIGN CAANG;SB=XX;-XIDC
unassigned;1AAE..1AAF
-block;1AB0..1AFF;age=14.0;bc=NSM;blk=Diacriticals_Ext;ccc=230;CI;Dia;gc=Mn;GCB=EX;Gr_Ext;IDC;jt=T;lb=CM;SB=EX;sc=Zinh;WB=Extend;XIDC
+block;1AB0..1AFF;age=14.0;bc=NSM;blk=Diacriticals_Ext;ccc=230;CI;Dia;gc=Mn;GCB=EX;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;SB=EX;sc=Zinh;WB=Extend;XIDC
# 1AB0..1AFF Combining Diacritical Marks Extended
# Used in German dialectology
cp;1AB0;age=7.0;na=COMBINING DOUBLED CIRCUMFLEX ACCENT
@@ -8367,7 +8384,7 @@ cp;1ABA;age=7.0;ccc=220;na=COMBINING STRONG CENTRALIZATION STROKE BELOW
cp;1ABB;age=7.0;na=COMBINING PARENTHESES ABOVE
cp;1ABC;age=7.0;na=COMBINING DOUBLE PARENTHESES ABOVE
cp;1ABD;age=7.0;ccc=220;na=COMBINING PARENTHESES BELOW
-cp;1ABE;age=7.0;ccc=0;gc=Me;-IDC;na=COMBINING PARENTHESES OVERLAY;-XIDC
+cp;1ABE;age=7.0;ccc=0;gc=Me;-IDC;InCB=None;na=COMBINING PARENTHESES OVERLAY;-XIDC
# Used in Scots dialectology
cp;1ABF;age=13.0;Alpha;ccc=220;-Dia;na=COMBINING LATIN SMALL LETTER W BELOW
cp;1AC0;age=13.0;Alpha;ccc=220;-Dia;na=COMBINING LATIN SMALL LETTER TURNED W BELOW
@@ -8391,7 +8408,7 @@ cp;1ACD;Alpha;-Dia;na=COMBINING LATIN SMALL LETTER INSULAR R
cp;1ACE;Alpha;-Dia;na=COMBINING LATIN SMALL LETTER INSULAR T
unassigned;1ACF..1AFF
-block;1B00..1B7F;age=5.0;Alpha;blk=Balinese;gc=Lo;Gr_Base;IDC;InSC=Consonant;lb=AL;SB=LE;sc=Bali;WB=LE;XIDC
+block;1B00..1B7F;age=5.0;Alpha;blk=Balinese;gc=Lo;Gr_Base;IDC;InSC=Consonant;lb=AK;SB=LE;sc=Bali;WB=LE;XIDC
# 1B00..1B7F Balinese
# Various signs
cp;1B00;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=BALINESE SIGN ULU RICEM;SB=EX;WB=Extend
@@ -8449,7 +8466,7 @@ cp;1B31;IDS;na=BALINESE LETTER SA SAPA;XIDS
cp;1B32;IDS;na=BALINESE LETTER SA;XIDS
cp;1B33;IDS;na=BALINESE LETTER HA;XIDS
# Sign
-cp;1B34;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Nukta;jt=T;lb=CM;na=BALINESE SIGN REREKAN;SB=EX;WB=Extend
+cp;1B34;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Nukta;jt=T;lb=CM;na=BALINESE SIGN REREKAN;SB=EX;WB=Extend
# Dependent vowel signs
cp;1B35;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=BALINESE VOWEL SIGN TEDUNG;NFC_QC=M;NFKC_QC=M;SB=EX;WB=Extend
cp;1B36;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=BALINESE VOWEL SIGN ULU;SB=EX;WB=Extend
@@ -8467,7 +8484,7 @@ cp;1B41;dm=1B3F 1B35;dt=Can;gc=Mc;GCB=SM;InPC=Left_And_Right;InSC=Vowel_Dependen
cp;1B42;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=BALINESE VOWEL SIGN PEPET;SB=EX;WB=Extend
cp;1B43;dm=1B42 1B35;dt=Can;gc=Mc;GCB=SM;InPC=Top_And_Right;InSC=Vowel_Dependent;lb=CM;na=BALINESE VOWEL SIGN PEPET TEDUNG;NFD_QC=N;NFKD_QC=N;SB=EX;WB=Extend
# Sign
-cp;1B44;-Alpha;ccc=9;Dia;gc=Mc;GCB=SM;Gr_Link;InPC=Right;InSC=Virama;lb=CM;na=BALINESE ADEG ADEG;SB=EX;WB=Extend
+cp;1B44;-Alpha;ccc=9;Dia;gc=Mc;GCB=SM;Gr_Link;InPC=Right;InSC=Virama;lb=VI;na=BALINESE ADEG ADEG;SB=EX;WB=Extend
# Additional consonants
cp;1B45;IDS;na=BALINESE LETTER KAF SASAK;XIDS
cp;1B46;IDS;na=BALINESE LETTER KHOT SASAK;XIDS
@@ -8479,55 +8496,55 @@ cp;1B4B;IDS;na=BALINESE LETTER ASYURA SASAK;XIDS
cp;1B4C;age=14.0;IDS;na=BALINESE LETTER ARCHAIC JNYA;XIDS
unassigned;1B4D..1B4F
# Digits
-cp;1B50;-Alpha;gc=Nd;InSC=Number;lb=NU;na=BALINESE DIGIT ZERO;nt=De;nv=0;SB=NU;WB=NU
-cp;1B51;-Alpha;gc=Nd;InSC=Number;lb=NU;na=BALINESE DIGIT ONE;nt=De;nv=1;SB=NU;WB=NU
-cp;1B52;-Alpha;gc=Nd;InSC=Number;lb=NU;na=BALINESE DIGIT TWO;nt=De;nv=2;SB=NU;WB=NU
-cp;1B53;-Alpha;gc=Nd;InSC=Number;lb=NU;na=BALINESE DIGIT THREE;nt=De;nv=3;SB=NU;WB=NU
-cp;1B54;-Alpha;gc=Nd;InSC=Number;lb=NU;na=BALINESE DIGIT FOUR;nt=De;nv=4;SB=NU;WB=NU
-cp;1B55;-Alpha;gc=Nd;InSC=Number;lb=NU;na=BALINESE DIGIT FIVE;nt=De;nv=5;SB=NU;WB=NU
-cp;1B56;-Alpha;gc=Nd;InSC=Number;lb=NU;na=BALINESE DIGIT SIX;nt=De;nv=6;SB=NU;WB=NU
-cp;1B57;-Alpha;gc=Nd;InSC=Number;lb=NU;na=BALINESE DIGIT SEVEN;nt=De;nv=7;SB=NU;WB=NU
-cp;1B58;-Alpha;gc=Nd;InSC=Number;lb=NU;na=BALINESE DIGIT EIGHT;nt=De;nv=8;SB=NU;WB=NU
-cp;1B59;-Alpha;gc=Nd;InSC=Number;lb=NU;na=BALINESE DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU
+cp;1B50;-Alpha;gc=Nd;InSC=Number;lb=ID;na=BALINESE DIGIT ZERO;nt=De;nv=0;SB=NU;WB=NU
+cp;1B51;-Alpha;gc=Nd;InSC=Number;lb=ID;na=BALINESE DIGIT ONE;nt=De;nv=1;SB=NU;WB=NU
+cp;1B52;-Alpha;gc=Nd;InSC=Number;lb=ID;na=BALINESE DIGIT TWO;nt=De;nv=2;SB=NU;WB=NU
+cp;1B53;-Alpha;gc=Nd;InSC=Number;lb=ID;na=BALINESE DIGIT THREE;nt=De;nv=3;SB=NU;WB=NU
+cp;1B54;-Alpha;gc=Nd;InSC=Number;lb=ID;na=BALINESE DIGIT FOUR;nt=De;nv=4;SB=NU;WB=NU
+cp;1B55;-Alpha;gc=Nd;InSC=Number;lb=ID;na=BALINESE DIGIT FIVE;nt=De;nv=5;SB=NU;WB=NU
+cp;1B56;-Alpha;gc=Nd;InSC=Number;lb=ID;na=BALINESE DIGIT SIX;nt=De;nv=6;SB=NU;WB=NU
+cp;1B57;-Alpha;gc=Nd;InSC=Number;lb=ID;na=BALINESE DIGIT SEVEN;nt=De;nv=7;SB=NU;WB=NU
+cp;1B58;-Alpha;gc=Nd;InSC=Number;lb=ID;na=BALINESE DIGIT EIGHT;nt=De;nv=8;SB=NU;WB=NU
+cp;1B59;-Alpha;gc=Nd;InSC=Number;lb=ID;na=BALINESE DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU
# Punctuation
cp;1B5A;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=BALINESE PANTI;SB=ST;STerm;Term;WB=XX;-XIDC
cp;1B5B;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=BALINESE PAMADA;SB=ST;STerm;Term;WB=XX;-XIDC
-cp;1B5C;-Alpha;gc=Po;-IDC;InSC=Other;na=BALINESE WINDU;SB=XX;WB=XX;-XIDC
+cp;1B5C;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=BALINESE WINDU;SB=XX;WB=XX;-XIDC
cp;1B5D;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=BALINESE CARIK PAMUNGKAH;SB=XX;Term;WB=XX;-XIDC
cp;1B5E;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=BALINESE CARIK SIKI;SB=ST;STerm;Term;WB=XX;-XIDC
cp;1B5F;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=BALINESE CARIK PAREREN;SB=ST;STerm;Term;WB=XX;-XIDC
cp;1B60;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=BALINESE PAMENENG;SB=XX;WB=XX;-XIDC
# Musical symbols for notes
-cp;1B61;-Alpha;gc=So;-IDC;InSC=Other;na=BALINESE MUSICAL SYMBOL DONG;SB=XX;WB=XX;-XIDC
-cp;1B62;-Alpha;gc=So;-IDC;InSC=Other;na=BALINESE MUSICAL SYMBOL DENG;SB=XX;WB=XX;-XIDC
-cp;1B63;-Alpha;gc=So;-IDC;InSC=Other;na=BALINESE MUSICAL SYMBOL DUNG;SB=XX;WB=XX;-XIDC
-cp;1B64;-Alpha;gc=So;-IDC;InSC=Other;na=BALINESE MUSICAL SYMBOL DANG;SB=XX;WB=XX;-XIDC
-cp;1B65;-Alpha;gc=So;-IDC;InSC=Other;na=BALINESE MUSICAL SYMBOL DANG SURANG;SB=XX;WB=XX;-XIDC
-cp;1B66;-Alpha;gc=So;-IDC;InSC=Other;na=BALINESE MUSICAL SYMBOL DING;SB=XX;WB=XX;-XIDC
-cp;1B67;-Alpha;gc=So;-IDC;InSC=Other;na=BALINESE MUSICAL SYMBOL DAENG;SB=XX;WB=XX;-XIDC
-cp;1B68;-Alpha;gc=So;-IDC;InSC=Other;na=BALINESE MUSICAL SYMBOL DEUNG;SB=XX;WB=XX;-XIDC
-cp;1B69;-Alpha;gc=So;-IDC;InSC=Other;na=BALINESE MUSICAL SYMBOL DAING;SB=XX;WB=XX;-XIDC
-cp;1B6A;-Alpha;gc=So;-IDC;InSC=Other;na=BALINESE MUSICAL SYMBOL DANG GEDE;SB=XX;WB=XX;-XIDC
+cp;1B61;-Alpha;gc=So;-IDC;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL DONG;SB=XX;WB=XX;-XIDC
+cp;1B62;-Alpha;gc=So;-IDC;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL DENG;SB=XX;WB=XX;-XIDC
+cp;1B63;-Alpha;gc=So;-IDC;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL DUNG;SB=XX;WB=XX;-XIDC
+cp;1B64;-Alpha;gc=So;-IDC;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL DANG;SB=XX;WB=XX;-XIDC
+cp;1B65;-Alpha;gc=So;-IDC;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL DANG SURANG;SB=XX;WB=XX;-XIDC
+cp;1B66;-Alpha;gc=So;-IDC;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL DING;SB=XX;WB=XX;-XIDC
+cp;1B67;-Alpha;gc=So;-IDC;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL DAENG;SB=XX;WB=XX;-XIDC
+cp;1B68;-Alpha;gc=So;-IDC;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL DEUNG;SB=XX;WB=XX;-XIDC
+cp;1B69;-Alpha;gc=So;-IDC;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL DAING;SB=XX;WB=XX;-XIDC
+cp;1B6A;-Alpha;gc=So;-IDC;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL DANG GEDE;SB=XX;WB=XX;-XIDC
# Diacritical marks for musical symbols
-cp;1B6B;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Other;jt=T;lb=CM;na=BALINESE MUSICAL SYMBOL COMBINING TEGEH;SB=EX;WB=Extend
-cp;1B6C;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;InSC=Other;jt=T;lb=CM;na=BALINESE MUSICAL SYMBOL COMBINING ENDEP;SB=EX;WB=Extend
-cp;1B6D;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Other;jt=T;lb=CM;na=BALINESE MUSICAL SYMBOL COMBINING KEMPUL;SB=EX;WB=Extend
-cp;1B6E;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Other;jt=T;lb=CM;na=BALINESE MUSICAL SYMBOL COMBINING KEMPLI;SB=EX;WB=Extend
-cp;1B6F;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Other;jt=T;lb=CM;na=BALINESE MUSICAL SYMBOL COMBINING JEGOGAN;SB=EX;WB=Extend
-cp;1B70;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Other;jt=T;lb=CM;na=BALINESE MUSICAL SYMBOL COMBINING KEMPUL WITH JEGOGAN;SB=EX;WB=Extend
-cp;1B71;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Other;jt=T;lb=CM;na=BALINESE MUSICAL SYMBOL COMBINING KEMPLI WITH JEGOGAN;SB=EX;WB=Extend
-cp;1B72;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Other;jt=T;lb=CM;na=BALINESE MUSICAL SYMBOL COMBINING BENDE;SB=EX;WB=Extend
-cp;1B73;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Other;jt=T;lb=CM;na=BALINESE MUSICAL SYMBOL COMBINING GONG;SB=EX;WB=Extend
+cp;1B6B;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Other;jt=T;lb=CM;na=BALINESE MUSICAL SYMBOL COMBINING TEGEH;SB=EX;WB=Extend
+cp;1B6C;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Bottom;InSC=Other;jt=T;lb=CM;na=BALINESE MUSICAL SYMBOL COMBINING ENDEP;SB=EX;WB=Extend
+cp;1B6D;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Other;jt=T;lb=CM;na=BALINESE MUSICAL SYMBOL COMBINING KEMPUL;SB=EX;WB=Extend
+cp;1B6E;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Other;jt=T;lb=CM;na=BALINESE MUSICAL SYMBOL COMBINING KEMPLI;SB=EX;WB=Extend
+cp;1B6F;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Other;jt=T;lb=CM;na=BALINESE MUSICAL SYMBOL COMBINING JEGOGAN;SB=EX;WB=Extend
+cp;1B70;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Other;jt=T;lb=CM;na=BALINESE MUSICAL SYMBOL COMBINING KEMPUL WITH JEGOGAN;SB=EX;WB=Extend
+cp;1B71;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Other;jt=T;lb=CM;na=BALINESE MUSICAL SYMBOL COMBINING KEMPLI WITH JEGOGAN;SB=EX;WB=Extend
+cp;1B72;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Other;jt=T;lb=CM;na=BALINESE MUSICAL SYMBOL COMBINING BENDE;SB=EX;WB=Extend
+cp;1B73;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Other;jt=T;lb=CM;na=BALINESE MUSICAL SYMBOL COMBINING GONG;SB=EX;WB=Extend
# Musical symbols
-cp;1B74;-Alpha;gc=So;-IDC;InSC=Other;na=BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG;SB=XX;WB=XX;-XIDC
-cp;1B75;-Alpha;gc=So;-IDC;InSC=Other;na=BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DAG;SB=XX;WB=XX;-XIDC
-cp;1B76;-Alpha;gc=So;-IDC;InSC=Other;na=BALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TUK;SB=XX;WB=XX;-XIDC
-cp;1B77;-Alpha;gc=So;-IDC;InSC=Other;na=BALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TAK;SB=XX;WB=XX;-XIDC
-cp;1B78;-Alpha;gc=So;-IDC;InSC=Other;na=BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PANG;SB=XX;WB=XX;-XIDC
-cp;1B79;-Alpha;gc=So;-IDC;InSC=Other;na=BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PUNG;SB=XX;WB=XX;-XIDC
-cp;1B7A;-Alpha;gc=So;-IDC;InSC=Other;na=BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLAK;SB=XX;WB=XX;-XIDC
-cp;1B7B;-Alpha;gc=So;-IDC;InSC=Other;na=BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLUK;SB=XX;WB=XX;-XIDC
-cp;1B7C;-Alpha;gc=So;-IDC;InSC=Other;na=BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING;SB=XX;WB=XX;-XIDC
+cp;1B74;-Alpha;gc=So;-IDC;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG;SB=XX;WB=XX;-XIDC
+cp;1B75;-Alpha;gc=So;-IDC;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DAG;SB=XX;WB=XX;-XIDC
+cp;1B76;-Alpha;gc=So;-IDC;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TUK;SB=XX;WB=XX;-XIDC
+cp;1B77;-Alpha;gc=So;-IDC;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TAK;SB=XX;WB=XX;-XIDC
+cp;1B78;-Alpha;gc=So;-IDC;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PANG;SB=XX;WB=XX;-XIDC
+cp;1B79;-Alpha;gc=So;-IDC;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PUNG;SB=XX;WB=XX;-XIDC
+cp;1B7A;-Alpha;gc=So;-IDC;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLAK;SB=XX;WB=XX;-XIDC
+cp;1B7B;-Alpha;gc=So;-IDC;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLUK;SB=XX;WB=XX;-XIDC
+cp;1B7C;-Alpha;gc=So;-IDC;InSC=Other;lb=ID;na=BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING;SB=XX;WB=XX;-XIDC
# Punctuation
cp;1B7D;age=14.0;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=BALINESE PANTI LANTANG;SB=ST;STerm;Term;WB=XX;-XIDC
cp;1B7E;age=14.0;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=BALINESE PAMADA LANTANG;SB=ST;STerm;Term;WB=XX;-XIDC
@@ -8584,7 +8601,7 @@ cp;1BA8;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependen
cp;1BA9;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=SUNDANESE VOWEL SIGN PANEULEUNG;SB=EX;WB=Extend;-XIDS
# Viramas
cp;1BAA;-Alpha;ccc=9;Dia;gc=Mc;GCB=SM;Gr_Link;-IDS;InPC=Right;InSC=Pure_Killer;lb=CM;na=SUNDANESE SIGN PAMAAEH;SB=EX;WB=Extend;-XIDS
-cp;1BAB;age=6.1;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InSC=Invisible_Stacker;jt=T;lb=CM;na=SUNDANESE SIGN VIRAMA;SB=EX;WB=Extend;-XIDS
+cp;1BAB;age=6.1;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InCB=Extend;InSC=Invisible_Stacker;jt=T;lb=CM;na=SUNDANESE SIGN VIRAMA;SB=EX;WB=Extend;-XIDS
# Consonant signs
cp;1BAC;age=6.1;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Consonant_Subjoined;jt=T;lb=CM;na=SUNDANESE CONSONANT SIGN PASANGAN MA;SB=EX;WB=Extend;-XIDS
cp;1BAD;age=6.1;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Consonant_Subjoined;jt=T;lb=CM;na=SUNDANESE CONSONANT SIGN PASANGAN WA;SB=EX;WB=Extend;-XIDS
@@ -8611,7 +8628,7 @@ cp;1BBD;age=6.1;na=SUNDANESE LETTER BHA;Name_Alias=correction=SUNDANESE LETTER A
cp;1BBE;age=6.1;InSC=Consonant_Final;na=SUNDANESE LETTER FINAL K
cp;1BBF;age=6.1;InSC=Consonant_Final;na=SUNDANESE LETTER FINAL M
-block;1BC0..1BFF;age=6.0;Alpha;blk=Batak;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Batk;WB=LE;XIDC;XIDS
+block;1BC0..1BFF;age=6.0;Alpha;blk=Batak;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AS;SB=LE;sc=Batk;WB=LE;XIDC;XIDS
# 1BC0..1BFF Batak
# Letters
cp;1BC0;na=BATAK LETTER A
@@ -8653,7 +8670,7 @@ cp;1BE3;na=BATAK LETTER MBA
cp;1BE4;InSC=Vowel_Independent;na=BATAK LETTER I
cp;1BE5;InSC=Vowel_Independent;na=BATAK LETTER U
# Sign
-cp;1BE6;-Alpha;bc=NSM;ccc=7;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Nukta;jt=T;lb=CM;na=BATAK SIGN TOMPI;SB=EX;WB=Extend;-XIDS
+cp;1BE6;-Alpha;bc=NSM;ccc=7;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Top;InSC=Nukta;jt=T;lb=CM;na=BATAK SIGN TOMPI;SB=EX;WB=Extend;-XIDS
# Dependent vowel signs
cp;1BE7;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=BATAK VOWEL SIGN E;SB=EX;WB=Extend;-XIDS
cp;1BE8;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=BATAK VOWEL SIGN PAKPAK E;SB=EX;WB=Extend;-XIDS
@@ -8668,14 +8685,14 @@ cp;1BEF;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependen
cp;1BF0;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Consonant_Final;jt=T;lb=CM;na=BATAK CONSONANT SIGN NG;SB=EX;WB=Extend;-XIDS
cp;1BF1;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Consonant_Final;jt=T;lb=CM;na=BATAK CONSONANT SIGN H;SB=EX;WB=Extend;-XIDS
# Signs
-cp;1BF2;-Alpha;ccc=9;gc=Mc;GCB=SM;Gr_Link;-IDS;InPC=Right;InSC=Pure_Killer;lb=CM;na=BATAK PANGOLAT;SB=EX;WB=Extend;-XIDS
-cp;1BF3;-Alpha;ccc=9;gc=Mc;GCB=SM;Gr_Link;-IDS;InPC=Right;InSC=Pure_Killer;lb=CM;na=BATAK PANONGONAN;SB=EX;WB=Extend;-XIDS
+cp;1BF2;-Alpha;ccc=9;gc=Mc;GCB=SM;Gr_Link;-IDS;InPC=Right;InSC=Pure_Killer;lb=VF;na=BATAK PANGOLAT;SB=EX;WB=Extend;-XIDS
+cp;1BF3;-Alpha;ccc=9;gc=Mc;GCB=SM;Gr_Link;-IDS;InPC=Right;InSC=Pure_Killer;lb=VF;na=BATAK PANONGONAN;SB=EX;WB=Extend;-XIDS
unassigned;1BF4..1BFB
# Punctuation
-cp;1BFC;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;na=BATAK SYMBOL BINDU NA METEK;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1BFD;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;na=BATAK SYMBOL BINDU PINARBORAS;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1BFE;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;na=BATAK SYMBOL BINDU JUDUL;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1BFF;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;na=BATAK SYMBOL BINDU PANGOLAT;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1BFC;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=AL;na=BATAK SYMBOL BINDU NA METEK;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1BFD;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=AL;na=BATAK SYMBOL BINDU PINARBORAS;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1BFE;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=AL;na=BATAK SYMBOL BINDU JUDUL;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1BFF;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=AL;na=BATAK SYMBOL BINDU PANGOLAT;SB=XX;WB=XX;-XIDC;-XIDS
block;1C00..1C4F;age=5.1;Alpha;blk=Lepcha;gc=Lo;Gr_Base;IDC;InSC=Consonant;lb=AL;SB=LE;sc=Lepc;WB=LE;XIDC
# 1C00..1C4F Lepcha
@@ -8739,7 +8756,7 @@ cp;1C34;gc=Mc;GCB=SM;InPC=Left;InSC=Bindu;lb=CM;na=LEPCHA CONSONANT SIGN NYIN-DO
cp;1C35;gc=Mc;GCB=SM;InPC=Left;InSC=Bindu;lb=CM;na=LEPCHA CONSONANT SIGN KANG;SB=EX;WB=Extend
# Various signs
cp;1C36;bc=NSM;CI;Dia;Ext;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Syllable_Modifier;jt=T;lb=CM;na=LEPCHA SIGN RAN;SB=EX;WB=Extend
-cp;1C37;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=LEPCHA SIGN NUKTA;SB=EX;WB=Extend
+cp;1C37;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=LEPCHA SIGN NUKTA;SB=EX;WB=Extend
unassigned;1C38..1C3A
# Punctuation
cp;1C3B;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=LEPCHA PUNCTUATION TA-ROL;SB=ST;STerm;Term;WB=XX;-XIDC
@@ -8819,74 +8836,74 @@ cp;1C7D;CI;Dia;gc=Lm;na=OL CHIKI AHAD
cp;1C7E;-Alpha;gc=Po;-IDC;-IDS;lb=BA;na=OL CHIKI PUNCTUATION MUCAAD;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
cp;1C7F;-Alpha;gc=Po;-IDC;-IDS;lb=BA;na=OL CHIKI PUNCTUATION DOUBLE MUCAAD;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-block;1C80..1C8F;age=9.0;Alpha;blk=Cyrillic_Ext_C;Cased;CWCF;CWCM;CWKCF;CWT;CWU;gc=Ll;Gr_Base;IDC;IDS;lb=AL;Lower;SB=LO;sc=Cyrl;WB=LE;XIDC;XIDS
+block;1C80..1C8F;age=9.0;Alpha;blk=Cyrillic_Ext_C;Cased;CWCF;CWCM;CWKCF;CWT;CWU;gc=Ll;Gr_Base;IDC;IDS;lb=AL;Lower;NFKC_SCF=0442;SB=LO;sc=Cyrl;WB=LE;XIDC;XIDS
# 1C80..1C8F Cyrillic Extended-C
# Historic letter variants
-cp;1C80;cf=0432;na=CYRILLIC SMALL LETTER ROUNDED VE;NFKC_CF=0432;scf=0432;stc=0412;suc=0412
-cp;1C81;cf=0434;na=CYRILLIC SMALL LETTER LONG-LEGGED DE;NFKC_CF=0434;scf=0434;stc=0414;suc=0414
-cp;1C82;cf=043E;na=CYRILLIC SMALL LETTER NARROW O;NFKC_CF=043E;scf=043E;stc=041E;suc=041E
-cp;1C83;cf=0441;na=CYRILLIC SMALL LETTER WIDE ES;NFKC_CF=0441;scf=0441;stc=0421;suc=0421
+cp;1C80;cf=0432;na=CYRILLIC SMALL LETTER ROUNDED VE;NFKC_CF=0432;NFKC_SCF=0432;scf=0432;stc=0412;suc=0412
+cp;1C81;cf=0434;na=CYRILLIC SMALL LETTER LONG-LEGGED DE;NFKC_CF=0434;NFKC_SCF=0434;scf=0434;stc=0414;suc=0414
+cp;1C82;cf=043E;na=CYRILLIC SMALL LETTER NARROW O;NFKC_CF=043E;NFKC_SCF=043E;scf=043E;stc=041E;suc=041E
+cp;1C83;cf=0441;na=CYRILLIC SMALL LETTER WIDE ES;NFKC_CF=0441;NFKC_SCF=0441;scf=0441;stc=0421;suc=0421
cp;1C84;cf=0442;na=CYRILLIC SMALL LETTER TALL TE;NFKC_CF=0442;scf=0442;stc=0422;suc=0422
cp;1C85;cf=0442;na=CYRILLIC SMALL LETTER THREE-LEGGED TE;NFKC_CF=0442;scf=0442;stc=0422;suc=0422
-cp;1C86;cf=044A;na=CYRILLIC SMALL LETTER TALL HARD SIGN;NFKC_CF=044A;scf=044A;stc=042A;suc=042A
-cp;1C87;cf=0463;na=CYRILLIC SMALL LETTER TALL YAT;NFKC_CF=0463;scf=0463;stc=0462;suc=0462
-cp;1C88;cf=A64B;na=CYRILLIC SMALL LETTER UNBLENDED UK;NFKC_CF=A64B;scf=A64B;stc=A64A;suc=A64A
+cp;1C86;cf=044A;na=CYRILLIC SMALL LETTER TALL HARD SIGN;NFKC_CF=044A;NFKC_SCF=044A;scf=044A;stc=042A;suc=042A
+cp;1C87;cf=0463;na=CYRILLIC SMALL LETTER TALL YAT;NFKC_CF=0463;NFKC_SCF=0463;scf=0463;stc=0462;suc=0462
+cp;1C88;cf=A64B;na=CYRILLIC SMALL LETTER UNBLENDED UK;NFKC_CF=A64B;NFKC_SCF=A64B;scf=A64B;stc=A64A;suc=A64A
unassigned;1C89..1C8F
block;1C90..1CBF;age=11.0;Alpha;blk=Georgian_Ext;Cased;CWCF;CWCM;CWKCF;CWL;gc=Lu;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Geor;Upper;WB=LE;XIDC;XIDS
# 1C90..1CBF Georgian Extended
# Capital letters (Mtavruli)
-cp;1C90;cf=10D0;na=GEORGIAN MTAVRULI CAPITAL LETTER AN;NFKC_CF=10D0;scf=10D0;slc=10D0
-cp;1C91;cf=10D1;na=GEORGIAN MTAVRULI CAPITAL LETTER BAN;NFKC_CF=10D1;scf=10D1;slc=10D1
-cp;1C92;cf=10D2;na=GEORGIAN MTAVRULI CAPITAL LETTER GAN;NFKC_CF=10D2;scf=10D2;slc=10D2
-cp;1C93;cf=10D3;na=GEORGIAN MTAVRULI CAPITAL LETTER DON;NFKC_CF=10D3;scf=10D3;slc=10D3
-cp;1C94;cf=10D4;na=GEORGIAN MTAVRULI CAPITAL LETTER EN;NFKC_CF=10D4;scf=10D4;slc=10D4
-cp;1C95;cf=10D5;na=GEORGIAN MTAVRULI CAPITAL LETTER VIN;NFKC_CF=10D5;scf=10D5;slc=10D5
-cp;1C96;cf=10D6;na=GEORGIAN MTAVRULI CAPITAL LETTER ZEN;NFKC_CF=10D6;scf=10D6;slc=10D6
-cp;1C97;cf=10D7;na=GEORGIAN MTAVRULI CAPITAL LETTER TAN;NFKC_CF=10D7;scf=10D7;slc=10D7
-cp;1C98;cf=10D8;na=GEORGIAN MTAVRULI CAPITAL LETTER IN;NFKC_CF=10D8;scf=10D8;slc=10D8
-cp;1C99;cf=10D9;na=GEORGIAN MTAVRULI CAPITAL LETTER KAN;NFKC_CF=10D9;scf=10D9;slc=10D9
-cp;1C9A;cf=10DA;na=GEORGIAN MTAVRULI CAPITAL LETTER LAS;NFKC_CF=10DA;scf=10DA;slc=10DA
-cp;1C9B;cf=10DB;na=GEORGIAN MTAVRULI CAPITAL LETTER MAN;NFKC_CF=10DB;scf=10DB;slc=10DB
-cp;1C9C;cf=10DC;na=GEORGIAN MTAVRULI CAPITAL LETTER NAR;NFKC_CF=10DC;scf=10DC;slc=10DC
-cp;1C9D;cf=10DD;na=GEORGIAN MTAVRULI CAPITAL LETTER ON;NFKC_CF=10DD;scf=10DD;slc=10DD
-cp;1C9E;cf=10DE;na=GEORGIAN MTAVRULI CAPITAL LETTER PAR;NFKC_CF=10DE;scf=10DE;slc=10DE
-cp;1C9F;cf=10DF;na=GEORGIAN MTAVRULI CAPITAL LETTER ZHAR;NFKC_CF=10DF;scf=10DF;slc=10DF
-cp;1CA0;cf=10E0;na=GEORGIAN MTAVRULI CAPITAL LETTER RAE;NFKC_CF=10E0;scf=10E0;slc=10E0
-cp;1CA1;cf=10E1;na=GEORGIAN MTAVRULI CAPITAL LETTER SAN;NFKC_CF=10E1;scf=10E1;slc=10E1
-cp;1CA2;cf=10E2;na=GEORGIAN MTAVRULI CAPITAL LETTER TAR;NFKC_CF=10E2;scf=10E2;slc=10E2
-cp;1CA3;cf=10E3;na=GEORGIAN MTAVRULI CAPITAL LETTER UN;NFKC_CF=10E3;scf=10E3;slc=10E3
-cp;1CA4;cf=10E4;na=GEORGIAN MTAVRULI CAPITAL LETTER PHAR;NFKC_CF=10E4;scf=10E4;slc=10E4
-cp;1CA5;cf=10E5;na=GEORGIAN MTAVRULI CAPITAL LETTER KHAR;NFKC_CF=10E5;scf=10E5;slc=10E5
-cp;1CA6;cf=10E6;na=GEORGIAN MTAVRULI CAPITAL LETTER GHAN;NFKC_CF=10E6;scf=10E6;slc=10E6
-cp;1CA7;cf=10E7;na=GEORGIAN MTAVRULI CAPITAL LETTER QAR;NFKC_CF=10E7;scf=10E7;slc=10E7
-cp;1CA8;cf=10E8;na=GEORGIAN MTAVRULI CAPITAL LETTER SHIN;NFKC_CF=10E8;scf=10E8;slc=10E8
-cp;1CA9;cf=10E9;na=GEORGIAN MTAVRULI CAPITAL LETTER CHIN;NFKC_CF=10E9;scf=10E9;slc=10E9
-cp;1CAA;cf=10EA;na=GEORGIAN MTAVRULI CAPITAL LETTER CAN;NFKC_CF=10EA;scf=10EA;slc=10EA
-cp;1CAB;cf=10EB;na=GEORGIAN MTAVRULI CAPITAL LETTER JIL;NFKC_CF=10EB;scf=10EB;slc=10EB
-cp;1CAC;cf=10EC;na=GEORGIAN MTAVRULI CAPITAL LETTER CIL;NFKC_CF=10EC;scf=10EC;slc=10EC
-cp;1CAD;cf=10ED;na=GEORGIAN MTAVRULI CAPITAL LETTER CHAR;NFKC_CF=10ED;scf=10ED;slc=10ED
-cp;1CAE;cf=10EE;na=GEORGIAN MTAVRULI CAPITAL LETTER XAN;NFKC_CF=10EE;scf=10EE;slc=10EE
-cp;1CAF;cf=10EF;na=GEORGIAN MTAVRULI CAPITAL LETTER JHAN;NFKC_CF=10EF;scf=10EF;slc=10EF
-cp;1CB0;cf=10F0;na=GEORGIAN MTAVRULI CAPITAL LETTER HAE;NFKC_CF=10F0;scf=10F0;slc=10F0
+cp;1C90;cf=10D0;na=GEORGIAN MTAVRULI CAPITAL LETTER AN;NFKC_CF=10D0;NFKC_SCF=10D0;scf=10D0;slc=10D0
+cp;1C91;cf=10D1;na=GEORGIAN MTAVRULI CAPITAL LETTER BAN;NFKC_CF=10D1;NFKC_SCF=10D1;scf=10D1;slc=10D1
+cp;1C92;cf=10D2;na=GEORGIAN MTAVRULI CAPITAL LETTER GAN;NFKC_CF=10D2;NFKC_SCF=10D2;scf=10D2;slc=10D2
+cp;1C93;cf=10D3;na=GEORGIAN MTAVRULI CAPITAL LETTER DON;NFKC_CF=10D3;NFKC_SCF=10D3;scf=10D3;slc=10D3
+cp;1C94;cf=10D4;na=GEORGIAN MTAVRULI CAPITAL LETTER EN;NFKC_CF=10D4;NFKC_SCF=10D4;scf=10D4;slc=10D4
+cp;1C95;cf=10D5;na=GEORGIAN MTAVRULI CAPITAL LETTER VIN;NFKC_CF=10D5;NFKC_SCF=10D5;scf=10D5;slc=10D5
+cp;1C96;cf=10D6;na=GEORGIAN MTAVRULI CAPITAL LETTER ZEN;NFKC_CF=10D6;NFKC_SCF=10D6;scf=10D6;slc=10D6
+cp;1C97;cf=10D7;na=GEORGIAN MTAVRULI CAPITAL LETTER TAN;NFKC_CF=10D7;NFKC_SCF=10D7;scf=10D7;slc=10D7
+cp;1C98;cf=10D8;na=GEORGIAN MTAVRULI CAPITAL LETTER IN;NFKC_CF=10D8;NFKC_SCF=10D8;scf=10D8;slc=10D8
+cp;1C99;cf=10D9;na=GEORGIAN MTAVRULI CAPITAL LETTER KAN;NFKC_CF=10D9;NFKC_SCF=10D9;scf=10D9;slc=10D9
+cp;1C9A;cf=10DA;na=GEORGIAN MTAVRULI CAPITAL LETTER LAS;NFKC_CF=10DA;NFKC_SCF=10DA;scf=10DA;slc=10DA
+cp;1C9B;cf=10DB;na=GEORGIAN MTAVRULI CAPITAL LETTER MAN;NFKC_CF=10DB;NFKC_SCF=10DB;scf=10DB;slc=10DB
+cp;1C9C;cf=10DC;na=GEORGIAN MTAVRULI CAPITAL LETTER NAR;NFKC_CF=10DC;NFKC_SCF=10DC;scf=10DC;slc=10DC
+cp;1C9D;cf=10DD;na=GEORGIAN MTAVRULI CAPITAL LETTER ON;NFKC_CF=10DD;NFKC_SCF=10DD;scf=10DD;slc=10DD
+cp;1C9E;cf=10DE;na=GEORGIAN MTAVRULI CAPITAL LETTER PAR;NFKC_CF=10DE;NFKC_SCF=10DE;scf=10DE;slc=10DE
+cp;1C9F;cf=10DF;na=GEORGIAN MTAVRULI CAPITAL LETTER ZHAR;NFKC_CF=10DF;NFKC_SCF=10DF;scf=10DF;slc=10DF
+cp;1CA0;cf=10E0;na=GEORGIAN MTAVRULI CAPITAL LETTER RAE;NFKC_CF=10E0;NFKC_SCF=10E0;scf=10E0;slc=10E0
+cp;1CA1;cf=10E1;na=GEORGIAN MTAVRULI CAPITAL LETTER SAN;NFKC_CF=10E1;NFKC_SCF=10E1;scf=10E1;slc=10E1
+cp;1CA2;cf=10E2;na=GEORGIAN MTAVRULI CAPITAL LETTER TAR;NFKC_CF=10E2;NFKC_SCF=10E2;scf=10E2;slc=10E2
+cp;1CA3;cf=10E3;na=GEORGIAN MTAVRULI CAPITAL LETTER UN;NFKC_CF=10E3;NFKC_SCF=10E3;scf=10E3;slc=10E3
+cp;1CA4;cf=10E4;na=GEORGIAN MTAVRULI CAPITAL LETTER PHAR;NFKC_CF=10E4;NFKC_SCF=10E4;scf=10E4;slc=10E4
+cp;1CA5;cf=10E5;na=GEORGIAN MTAVRULI CAPITAL LETTER KHAR;NFKC_CF=10E5;NFKC_SCF=10E5;scf=10E5;slc=10E5
+cp;1CA6;cf=10E6;na=GEORGIAN MTAVRULI CAPITAL LETTER GHAN;NFKC_CF=10E6;NFKC_SCF=10E6;scf=10E6;slc=10E6
+cp;1CA7;cf=10E7;na=GEORGIAN MTAVRULI CAPITAL LETTER QAR;NFKC_CF=10E7;NFKC_SCF=10E7;scf=10E7;slc=10E7
+cp;1CA8;cf=10E8;na=GEORGIAN MTAVRULI CAPITAL LETTER SHIN;NFKC_CF=10E8;NFKC_SCF=10E8;scf=10E8;slc=10E8
+cp;1CA9;cf=10E9;na=GEORGIAN MTAVRULI CAPITAL LETTER CHIN;NFKC_CF=10E9;NFKC_SCF=10E9;scf=10E9;slc=10E9
+cp;1CAA;cf=10EA;na=GEORGIAN MTAVRULI CAPITAL LETTER CAN;NFKC_CF=10EA;NFKC_SCF=10EA;scf=10EA;slc=10EA
+cp;1CAB;cf=10EB;na=GEORGIAN MTAVRULI CAPITAL LETTER JIL;NFKC_CF=10EB;NFKC_SCF=10EB;scf=10EB;slc=10EB
+cp;1CAC;cf=10EC;na=GEORGIAN MTAVRULI CAPITAL LETTER CIL;NFKC_CF=10EC;NFKC_SCF=10EC;scf=10EC;slc=10EC
+cp;1CAD;cf=10ED;na=GEORGIAN MTAVRULI CAPITAL LETTER CHAR;NFKC_CF=10ED;NFKC_SCF=10ED;scf=10ED;slc=10ED
+cp;1CAE;cf=10EE;na=GEORGIAN MTAVRULI CAPITAL LETTER XAN;NFKC_CF=10EE;NFKC_SCF=10EE;scf=10EE;slc=10EE
+cp;1CAF;cf=10EF;na=GEORGIAN MTAVRULI CAPITAL LETTER JHAN;NFKC_CF=10EF;NFKC_SCF=10EF;scf=10EF;slc=10EF
+cp;1CB0;cf=10F0;na=GEORGIAN MTAVRULI CAPITAL LETTER HAE;NFKC_CF=10F0;NFKC_SCF=10F0;scf=10F0;slc=10F0
# Archaic letters
-cp;1CB1;cf=10F1;na=GEORGIAN MTAVRULI CAPITAL LETTER HE;NFKC_CF=10F1;scf=10F1;slc=10F1
-cp;1CB2;cf=10F2;na=GEORGIAN MTAVRULI CAPITAL LETTER HIE;NFKC_CF=10F2;scf=10F2;slc=10F2
-cp;1CB3;cf=10F3;na=GEORGIAN MTAVRULI CAPITAL LETTER WE;NFKC_CF=10F3;scf=10F3;slc=10F3
-cp;1CB4;cf=10F4;na=GEORGIAN MTAVRULI CAPITAL LETTER HAR;NFKC_CF=10F4;scf=10F4;slc=10F4
-cp;1CB5;cf=10F5;na=GEORGIAN MTAVRULI CAPITAL LETTER HOE;NFKC_CF=10F5;scf=10F5;slc=10F5
-cp;1CB6;cf=10F6;na=GEORGIAN MTAVRULI CAPITAL LETTER FI;NFKC_CF=10F6;scf=10F6;slc=10F6
+cp;1CB1;cf=10F1;na=GEORGIAN MTAVRULI CAPITAL LETTER HE;NFKC_CF=10F1;NFKC_SCF=10F1;scf=10F1;slc=10F1
+cp;1CB2;cf=10F2;na=GEORGIAN MTAVRULI CAPITAL LETTER HIE;NFKC_CF=10F2;NFKC_SCF=10F2;scf=10F2;slc=10F2
+cp;1CB3;cf=10F3;na=GEORGIAN MTAVRULI CAPITAL LETTER WE;NFKC_CF=10F3;NFKC_SCF=10F3;scf=10F3;slc=10F3
+cp;1CB4;cf=10F4;na=GEORGIAN MTAVRULI CAPITAL LETTER HAR;NFKC_CF=10F4;NFKC_SCF=10F4;scf=10F4;slc=10F4
+cp;1CB5;cf=10F5;na=GEORGIAN MTAVRULI CAPITAL LETTER HOE;NFKC_CF=10F5;NFKC_SCF=10F5;scf=10F5;slc=10F5
+cp;1CB6;cf=10F6;na=GEORGIAN MTAVRULI CAPITAL LETTER FI;NFKC_CF=10F6;NFKC_SCF=10F6;scf=10F6;slc=10F6
# Additional letters for Mingrelian and Svan
-cp;1CB7;cf=10F7;na=GEORGIAN MTAVRULI CAPITAL LETTER YN;NFKC_CF=10F7;scf=10F7;slc=10F7
-cp;1CB8;cf=10F8;na=GEORGIAN MTAVRULI CAPITAL LETTER ELIFI;NFKC_CF=10F8;scf=10F8;slc=10F8
+cp;1CB7;cf=10F7;na=GEORGIAN MTAVRULI CAPITAL LETTER YN;NFKC_CF=10F7;NFKC_SCF=10F7;scf=10F7;slc=10F7
+cp;1CB8;cf=10F8;na=GEORGIAN MTAVRULI CAPITAL LETTER ELIFI;NFKC_CF=10F8;NFKC_SCF=10F8;scf=10F8;slc=10F8
# Additional letters
-cp;1CB9;cf=10F9;na=GEORGIAN MTAVRULI CAPITAL LETTER TURNED GAN;NFKC_CF=10F9;scf=10F9;slc=10F9
-cp;1CBA;cf=10FA;na=GEORGIAN MTAVRULI CAPITAL LETTER AIN;NFKC_CF=10FA;scf=10FA;slc=10FA
+cp;1CB9;cf=10F9;na=GEORGIAN MTAVRULI CAPITAL LETTER TURNED GAN;NFKC_CF=10F9;NFKC_SCF=10F9;scf=10F9;slc=10F9
+cp;1CBA;cf=10FA;na=GEORGIAN MTAVRULI CAPITAL LETTER AIN;NFKC_CF=10FA;NFKC_SCF=10FA;scf=10FA;slc=10FA
unassigned;1CBB..1CBC
# Additional letters for Ossetian and Abkhaz
-cp;1CBD;cf=10FD;na=GEORGIAN MTAVRULI CAPITAL LETTER AEN;NFKC_CF=10FD;scf=10FD;slc=10FD
-cp;1CBE;cf=10FE;na=GEORGIAN MTAVRULI CAPITAL LETTER HARD SIGN;NFKC_CF=10FE;scf=10FE;slc=10FE
-cp;1CBF;cf=10FF;na=GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN;NFKC_CF=10FF;scf=10FF;slc=10FF
+cp;1CBD;cf=10FD;na=GEORGIAN MTAVRULI CAPITAL LETTER AEN;NFKC_CF=10FD;NFKC_SCF=10FD;scf=10FD;slc=10FD
+cp;1CBE;cf=10FE;na=GEORGIAN MTAVRULI CAPITAL LETTER HARD SIGN;NFKC_CF=10FE;NFKC_SCF=10FE;scf=10FE;slc=10FE
+cp;1CBF;cf=10FF;na=GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN;NFKC_CF=10FF;NFKC_SCF=10FF;scf=10FF;slc=10FF
block;1CC0..1CCF;age=6.1;blk=Sundanese_Sup;gc=Po;Gr_Base;lb=AL;sc=Sund
# 1CC0..1CCF Sundanese Supplement
@@ -8901,14 +8918,14 @@ cp;1CC6;na=SUNDANESE PUNCTUATION BINDU DA SATANGA
cp;1CC7;na=SUNDANESE PUNCTUATION BINDU BA SATANGA
unassigned;1CC8..1CCF
-block;1CD0..1CFF;age=5.2;bc=NSM;blk=Vedic_Ext;CI;Dia;gc=Mn;GCB=EX;Gr_Ext;IDC;InSC=Cantillation_Mark;jt=T;lb=CM;SB=EX;sc=Zinh;scx=Deva;WB=Extend;XIDC
+block;1CD0..1CFF;age=5.2;bc=NSM;blk=Vedic_Ext;CI;Dia;gc=Mn;GCB=EX;Gr_Ext;IDC;InCB=Extend;InSC=Cantillation_Mark;jt=T;lb=CM;SB=EX;sc=Zinh;scx=Deva;WB=Extend;XIDC
# 1CD0..1CFF Vedic Extensions
# Tone marks for the Samaveda
cp;1CD0;ccc=230;InPC=Top;na=VEDIC TONE KARSHANA;scx=Beng Deva Gran Knda
cp;1CD1;ccc=230;InPC=Top;na=VEDIC TONE SHARA
cp;1CD2;ccc=230;InPC=Top;na=VEDIC TONE PRENKHA;scx=Beng Deva Gran Knda
# Breathing mark for the Samaveda
-cp;1CD3;bc=L;-CI;gc=Po;GCB=XX;Gr_Base;-Gr_Ext;-IDC;InSC=Other;jt=U;lb=AL;na=VEDIC SIGN NIHSHVASA;SB=XX;sc=Zyyy;scx=Deva Gran;WB=XX;-XIDC
+cp;1CD3;bc=L;-CI;gc=Po;GCB=XX;Gr_Base;-Gr_Ext;-IDC;InCB=None;InSC=Other;jt=U;lb=AL;na=VEDIC SIGN NIHSHVASA;SB=XX;sc=Zyyy;scx=Deva Gran;WB=XX;-XIDC
# Signs for Yajurvedic
cp;1CD4;ccc=1;InPC=Overstruck;na=VEDIC SIGN YAJURVEDIC MIDLINE SVARITA
cp;1CD5;ccc=220;InPC=Bottom;na=VEDIC TONE YAJURVEDIC AGGRAVATED INDEPENDENT SVARITA;scx=Beng Deva
@@ -8926,7 +8943,7 @@ cp;1CDF;ccc=220;InPC=Bottom;na=VEDIC TONE THREE DOTS BELOW
# Tone mark for the Rigveda
cp;1CE0;ccc=230;InPC=Top;na=VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA;scx=Deva Shrd
# Tone mark for the Atharvaveda
-cp;1CE1;bc=L;-CI;gc=Mc;GCB=SM;Gr_Base;-Gr_Ext;InPC=Right;jt=U;na=VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA;sc=Zyyy;scx=Beng Deva
+cp;1CE1;bc=L;-CI;gc=Mc;GCB=SM;Gr_Base;-Gr_Ext;InCB=None;InPC=Right;jt=U;na=VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA;sc=Zyyy;scx=Beng Deva
# Diacritics for visarga
cp;1CE2;ccc=1;InPC=Overstruck;InSC=Other;na=VEDIC SIGN VISARGA SVARITA
cp;1CE3;ccc=1;InPC=Overstruck;InSC=Other;na=VEDIC SIGN VISARGA UDATTA
@@ -8936,29 +8953,29 @@ cp;1CE6;ccc=1;InPC=Overstruck;InSC=Other;na=VEDIC SIGN REVERSED VISARGA ANUDATTA
cp;1CE7;ccc=1;InPC=Overstruck;InSC=Other;na=VEDIC SIGN VISARGA UDATTA WITH TAIL
cp;1CE8;ccc=1;InPC=Overstruck;InSC=Other;na=VEDIC SIGN VISARGA ANUDATTA WITH TAIL
# Nasalization signs
-cp;1CE9;Alpha;bc=L;-CI;-Dia;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InSC=Other;jt=U;lb=AL;na=VEDIC SIGN ANUSVARA ANTARGOMUKHA;SB=LE;sc=Zyyy;scx=Deva Nand;WB=LE;XIDS
-cp;1CEA;Alpha;bc=L;-CI;-Dia;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InSC=Other;jt=U;lb=AL;na=VEDIC SIGN ANUSVARA BAHIRGOMUKHA;SB=LE;sc=Zyyy;scx=Beng Deva;WB=LE;XIDS
-cp;1CEB;Alpha;bc=L;-CI;-Dia;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InSC=Other;jt=U;lb=AL;na=VEDIC SIGN ANUSVARA VAMAGOMUKHA;SB=LE;sc=Zyyy;WB=LE;XIDS
-cp;1CEC;Alpha;bc=L;-CI;-Dia;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InSC=Other;jt=U;lb=AL;na=VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL;SB=LE;sc=Zyyy;WB=LE;XIDS
+cp;1CE9;Alpha;bc=L;-CI;-Dia;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;InSC=Other;jt=U;lb=AL;na=VEDIC SIGN ANUSVARA ANTARGOMUKHA;SB=LE;sc=Zyyy;scx=Deva Nand;WB=LE;XIDS
+cp;1CEA;Alpha;bc=L;-CI;-Dia;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;InSC=Other;jt=U;lb=AL;na=VEDIC SIGN ANUSVARA BAHIRGOMUKHA;SB=LE;sc=Zyyy;scx=Beng Deva;WB=LE;XIDS
+cp;1CEB;Alpha;bc=L;-CI;-Dia;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;InSC=Other;jt=U;lb=AL;na=VEDIC SIGN ANUSVARA VAMAGOMUKHA;SB=LE;sc=Zyyy;WB=LE;XIDS
+cp;1CEC;Alpha;bc=L;-CI;-Dia;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;InSC=Other;jt=U;lb=AL;na=VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL;SB=LE;sc=Zyyy;WB=LE;XIDS
cp;1CED;ccc=220;InPC=Bottom;InSC=Other;na=VEDIC SIGN TIRYAK;scx=Beng Deva
-cp;1CEE;Alpha;bc=L;-CI;-Dia;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InSC=Other;jt=U;lb=AL;na=VEDIC SIGN HEXIFORM LONG ANUSVARA;SB=LE;sc=Zyyy;WB=LE;XIDS
-cp;1CEF;Alpha;bc=L;-CI;-Dia;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InSC=Other;jt=U;lb=AL;na=VEDIC SIGN LONG ANUSVARA;SB=LE;sc=Zyyy;WB=LE;XIDS
-cp;1CF0;Alpha;bc=L;-CI;-Dia;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InSC=Other;jt=U;lb=AL;na=VEDIC SIGN RTHANG LONG ANUSVARA;SB=LE;sc=Zyyy;WB=LE;XIDS
-cp;1CF1;Alpha;bc=L;-CI;-Dia;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InSC=Other;jt=U;lb=AL;na=VEDIC SIGN ANUSVARA UBHAYATO MUKHA;SB=LE;sc=Zyyy;WB=LE;XIDS
+cp;1CEE;Alpha;bc=L;-CI;-Dia;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;InSC=Other;jt=U;lb=AL;na=VEDIC SIGN HEXIFORM LONG ANUSVARA;SB=LE;sc=Zyyy;WB=LE;XIDS
+cp;1CEF;Alpha;bc=L;-CI;-Dia;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;InSC=Other;jt=U;lb=AL;na=VEDIC SIGN LONG ANUSVARA;SB=LE;sc=Zyyy;WB=LE;XIDS
+cp;1CF0;Alpha;bc=L;-CI;-Dia;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;InSC=Other;jt=U;lb=AL;na=VEDIC SIGN RTHANG LONG ANUSVARA;SB=LE;sc=Zyyy;WB=LE;XIDS
+cp;1CF1;Alpha;bc=L;-CI;-Dia;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;InSC=Other;jt=U;lb=AL;na=VEDIC SIGN ANUSVARA UBHAYATO MUKHA;SB=LE;sc=Zyyy;WB=LE;XIDS
# Ardhavisarga
-cp;1CF2;Alpha;bc=L;-CI;-Dia;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InSC=Consonant_Dead;jt=U;lb=AL;na=VEDIC SIGN ARDHAVISARGA;SB=LE;sc=Zyyy;scx=Beng Deva Gran Knda Nand Orya Telu Tirh;WB=LE;XIDS
-cp;1CF3;age=6.1;Alpha;bc=L;-CI;-Dia;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InSC=Consonant_Dead;jt=U;lb=AL;na=VEDIC SIGN ROTATED ARDHAVISARGA;SB=LE;sc=Zyyy;scx=Deva Gran;WB=LE;XIDS
+cp;1CF2;Alpha;bc=L;-CI;-Dia;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;InSC=Consonant_Dead;jt=U;lb=AL;na=VEDIC SIGN ARDHAVISARGA;SB=LE;sc=Zyyy;scx=Beng Deva Gran Knda Mlym Nand Orya Sinh Telu Tirh;WB=LE;XIDS
+cp;1CF3;age=6.1;Alpha;bc=L;-CI;-Dia;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;InSC=Consonant_Dead;jt=U;lb=AL;na=VEDIC SIGN ROTATED ARDHAVISARGA;SB=LE;sc=Zyyy;scx=Deva Gran;WB=LE;XIDS
# Sign for Yajurvedic
cp;1CF4;age=6.1;ccc=230;InPC=Top;na=VEDIC TONE CANDRA ABOVE;scx=Deva Gran Knda
# Signs
-cp;1CF5;age=6.1;Alpha;bc=L;-CI;-Dia;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InSC=Consonant_With_Stacker;jt=U;lb=AL;na=VEDIC SIGN JIHVAMULIYA;SB=LE;sc=Zyyy;scx=Beng Deva;WB=LE;XIDS
-cp;1CF6;age=6.1;Alpha;bc=L;-CI;-Dia;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InSC=Consonant_With_Stacker;jt=U;lb=AL;na=VEDIC SIGN UPADHMANIYA;SB=LE;sc=Zyyy;scx=Beng Deva;WB=LE;XIDS
-cp;1CF7;age=10.0;bc=L;-CI;gc=Mc;GCB=SM;Gr_Base;-Gr_Ext;InPC=Right;jt=U;na=VEDIC SIGN ATIKRAMA;sc=Zyyy;scx=Beng
+cp;1CF5;age=6.1;Alpha;bc=L;-CI;-Dia;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;InSC=Consonant_With_Stacker;jt=U;lb=AL;na=VEDIC SIGN JIHVAMULIYA;SB=LE;sc=Zyyy;scx=Beng Deva;WB=LE;XIDS
+cp;1CF6;age=6.1;Alpha;bc=L;-CI;-Dia;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;InSC=Consonant_With_Stacker;jt=U;lb=AL;na=VEDIC SIGN UPADHMANIYA;SB=LE;sc=Zyyy;scx=Beng Deva;WB=LE;XIDS
+cp;1CF7;age=10.0;bc=L;-CI;gc=Mc;GCB=SM;Gr_Base;-Gr_Ext;InCB=None;InPC=Right;jt=U;na=VEDIC SIGN ATIKRAMA;sc=Zyyy;scx=Beng
# Signs for Jaiminiya Sama Veda
cp;1CF8;age=7.0;ccc=230;na=VEDIC TONE RING ABOVE;scx=Deva Gran
cp;1CF9;age=7.0;ccc=230;na=VEDIC TONE DOUBLE RING ABOVE;scx=Deva Gran
# Nasalization sign
-cp;1CFA;age=12.0;Alpha;bc=L;-CI;-Dia;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InSC=Consonant_Placeholder;jt=U;lb=AL;na=VEDIC SIGN DOUBLE ANUSVARA ANTARGOMUKHA;SB=LE;sc=Zyyy;scx=Nand;WB=LE;XIDS
+cp;1CFA;age=12.0;Alpha;bc=L;-CI;-Dia;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;InSC=Consonant_Placeholder;jt=U;lb=AL;na=VEDIC SIGN DOUBLE ANUSVARA ANTARGOMUKHA;SB=LE;sc=Zyyy;scx=Nand;WB=LE;XIDS
unassigned;1CFB..1CFF
block;1D00..1D7F;age=4.0;Alpha;blk=Phonetic_Ext;Cased;gc=Ll;Gr_Base;IDC;IDS;lb=AL;Lower;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
@@ -9011,73 +9028,73 @@ cp;1D2A;na=GREEK LETTER SMALL CAPITAL PSI;sc=Grek
# Cyrillic letter
cp;1D2B;na=CYRILLIC LETTER SMALL CAPITAL EL;sc=Cyrl
# Latin superscript modifier letters
-cp;1D2C;CI;CWKCF;Dia;dm=0041;dt=Sup;FC_NFKC=0061;gc=Lm;na=MODIFIER LETTER CAPITAL A;NFKC_CF=0061;NFKC_QC=N;NFKD_QC=N
-cp;1D2D;CI;CWKCF;Dia;dm=00C6;dt=Sup;FC_NFKC=00E6;gc=Lm;na=MODIFIER LETTER CAPITAL AE;NFKC_CF=00E6;NFKC_QC=N;NFKD_QC=N
-cp;1D2E;CI;CWKCF;Dia;dm=0042;dt=Sup;FC_NFKC=0062;gc=Lm;na=MODIFIER LETTER CAPITAL B;NFKC_CF=0062;NFKC_QC=N;NFKD_QC=N
+cp;1D2C;CI;CWKCF;Dia;dm=0041;dt=Sup;FC_NFKC=0061;gc=Lm;na=MODIFIER LETTER CAPITAL A;NFKC_CF=0061;NFKC_QC=N;NFKC_SCF=0061;NFKD_QC=N
+cp;1D2D;CI;CWKCF;Dia;dm=00C6;dt=Sup;FC_NFKC=00E6;gc=Lm;na=MODIFIER LETTER CAPITAL AE;NFKC_CF=00E6;NFKC_QC=N;NFKC_SCF=00E6;NFKD_QC=N
+cp;1D2E;CI;CWKCF;Dia;dm=0042;dt=Sup;FC_NFKC=0062;gc=Lm;na=MODIFIER LETTER CAPITAL B;NFKC_CF=0062;NFKC_QC=N;NFKC_SCF=0062;NFKD_QC=N
cp;1D2F;CI;Dia;gc=Lm;na=MODIFIER LETTER CAPITAL BARRED B
-cp;1D30;CI;CWKCF;Dia;dm=0044;dt=Sup;FC_NFKC=0064;gc=Lm;na=MODIFIER LETTER CAPITAL D;NFKC_CF=0064;NFKC_QC=N;NFKD_QC=N
-cp;1D31;CI;CWKCF;Dia;dm=0045;dt=Sup;FC_NFKC=0065;gc=Lm;na=MODIFIER LETTER CAPITAL E;NFKC_CF=0065;NFKC_QC=N;NFKD_QC=N
-cp;1D32;CI;CWKCF;Dia;dm=018E;dt=Sup;FC_NFKC=01DD;gc=Lm;na=MODIFIER LETTER CAPITAL REVERSED E;NFKC_CF=01DD;NFKC_QC=N;NFKD_QC=N
-cp;1D33;CI;CWKCF;Dia;dm=0047;dt=Sup;FC_NFKC=0067;gc=Lm;na=MODIFIER LETTER CAPITAL G;NFKC_CF=0067;NFKC_QC=N;NFKD_QC=N
-cp;1D34;CI;CWKCF;Dia;dm=0048;dt=Sup;FC_NFKC=0068;gc=Lm;na=MODIFIER LETTER CAPITAL H;NFKC_CF=0068;NFKC_QC=N;NFKD_QC=N
-cp;1D35;CI;CWKCF;Dia;dm=0049;dt=Sup;FC_NFKC=0069;gc=Lm;na=MODIFIER LETTER CAPITAL I;NFKC_CF=0069;NFKC_QC=N;NFKD_QC=N
-cp;1D36;CI;CWKCF;Dia;dm=004A;dt=Sup;FC_NFKC=006A;gc=Lm;na=MODIFIER LETTER CAPITAL J;NFKC_CF=006A;NFKC_QC=N;NFKD_QC=N
-cp;1D37;CI;CWKCF;Dia;dm=004B;dt=Sup;FC_NFKC=006B;gc=Lm;na=MODIFIER LETTER CAPITAL K;NFKC_CF=006B;NFKC_QC=N;NFKD_QC=N
-cp;1D38;CI;CWKCF;Dia;dm=004C;dt=Sup;FC_NFKC=006C;gc=Lm;na=MODIFIER LETTER CAPITAL L;NFKC_CF=006C;NFKC_QC=N;NFKD_QC=N
-cp;1D39;CI;CWKCF;Dia;dm=004D;dt=Sup;FC_NFKC=006D;gc=Lm;na=MODIFIER LETTER CAPITAL M;NFKC_CF=006D;NFKC_QC=N;NFKD_QC=N
-cp;1D3A;CI;CWKCF;Dia;dm=004E;dt=Sup;FC_NFKC=006E;gc=Lm;na=MODIFIER LETTER CAPITAL N;NFKC_CF=006E;NFKC_QC=N;NFKD_QC=N
+cp;1D30;CI;CWKCF;Dia;dm=0044;dt=Sup;FC_NFKC=0064;gc=Lm;na=MODIFIER LETTER CAPITAL D;NFKC_CF=0064;NFKC_QC=N;NFKC_SCF=0064;NFKD_QC=N
+cp;1D31;CI;CWKCF;Dia;dm=0045;dt=Sup;FC_NFKC=0065;gc=Lm;na=MODIFIER LETTER CAPITAL E;NFKC_CF=0065;NFKC_QC=N;NFKC_SCF=0065;NFKD_QC=N
+cp;1D32;CI;CWKCF;Dia;dm=018E;dt=Sup;FC_NFKC=01DD;gc=Lm;na=MODIFIER LETTER CAPITAL REVERSED E;NFKC_CF=01DD;NFKC_QC=N;NFKC_SCF=01DD;NFKD_QC=N
+cp;1D33;CI;CWKCF;Dia;dm=0047;dt=Sup;FC_NFKC=0067;gc=Lm;na=MODIFIER LETTER CAPITAL G;NFKC_CF=0067;NFKC_QC=N;NFKC_SCF=0067;NFKD_QC=N
+cp;1D34;CI;CWKCF;Dia;dm=0048;dt=Sup;FC_NFKC=0068;gc=Lm;na=MODIFIER LETTER CAPITAL H;NFKC_CF=0068;NFKC_QC=N;NFKC_SCF=0068;NFKD_QC=N
+cp;1D35;CI;CWKCF;Dia;dm=0049;dt=Sup;FC_NFKC=0069;gc=Lm;na=MODIFIER LETTER CAPITAL I;NFKC_CF=0069;NFKC_QC=N;NFKC_SCF=0069;NFKD_QC=N
+cp;1D36;CI;CWKCF;Dia;dm=004A;dt=Sup;FC_NFKC=006A;gc=Lm;na=MODIFIER LETTER CAPITAL J;NFKC_CF=006A;NFKC_QC=N;NFKC_SCF=006A;NFKD_QC=N
+cp;1D37;CI;CWKCF;Dia;dm=004B;dt=Sup;FC_NFKC=006B;gc=Lm;na=MODIFIER LETTER CAPITAL K;NFKC_CF=006B;NFKC_QC=N;NFKC_SCF=006B;NFKD_QC=N
+cp;1D38;CI;CWKCF;Dia;dm=004C;dt=Sup;FC_NFKC=006C;gc=Lm;na=MODIFIER LETTER CAPITAL L;NFKC_CF=006C;NFKC_QC=N;NFKC_SCF=006C;NFKD_QC=N
+cp;1D39;CI;CWKCF;Dia;dm=004D;dt=Sup;FC_NFKC=006D;gc=Lm;na=MODIFIER LETTER CAPITAL M;NFKC_CF=006D;NFKC_QC=N;NFKC_SCF=006D;NFKD_QC=N
+cp;1D3A;CI;CWKCF;Dia;dm=004E;dt=Sup;FC_NFKC=006E;gc=Lm;na=MODIFIER LETTER CAPITAL N;NFKC_CF=006E;NFKC_QC=N;NFKC_SCF=006E;NFKD_QC=N
cp;1D3B;CI;Dia;gc=Lm;na=MODIFIER LETTER CAPITAL REVERSED N
-cp;1D3C;CI;CWKCF;Dia;dm=004F;dt=Sup;FC_NFKC=006F;gc=Lm;na=MODIFIER LETTER CAPITAL O;NFKC_CF=006F;NFKC_QC=N;NFKD_QC=N
-cp;1D3D;CI;CWKCF;Dia;dm=0222;dt=Sup;FC_NFKC=0223;gc=Lm;na=MODIFIER LETTER CAPITAL OU;NFKC_CF=0223;NFKC_QC=N;NFKD_QC=N
-cp;1D3E;CI;CWKCF;Dia;dm=0050;dt=Sup;FC_NFKC=0070;gc=Lm;na=MODIFIER LETTER CAPITAL P;NFKC_CF=0070;NFKC_QC=N;NFKD_QC=N
-cp;1D3F;CI;CWKCF;Dia;dm=0052;dt=Sup;FC_NFKC=0072;gc=Lm;na=MODIFIER LETTER CAPITAL R;NFKC_CF=0072;NFKC_QC=N;NFKD_QC=N
-cp;1D40;CI;CWKCF;Dia;dm=0054;dt=Sup;FC_NFKC=0074;gc=Lm;na=MODIFIER LETTER CAPITAL T;NFKC_CF=0074;NFKC_QC=N;NFKD_QC=N
-cp;1D41;CI;CWKCF;Dia;dm=0055;dt=Sup;FC_NFKC=0075;gc=Lm;na=MODIFIER LETTER CAPITAL U;NFKC_CF=0075;NFKC_QC=N;NFKD_QC=N
-cp;1D42;CI;CWKCF;Dia;dm=0057;dt=Sup;FC_NFKC=0077;gc=Lm;na=MODIFIER LETTER CAPITAL W;NFKC_CF=0077;NFKC_QC=N;NFKD_QC=N
-cp;1D43;CI;CWKCF;Dia;dm=0061;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL A;NFKC_CF=0061;NFKC_QC=N;NFKD_QC=N
-cp;1D44;CI;CWKCF;Dia;dm=0250;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL TURNED A;NFKC_CF=0250;NFKC_QC=N;NFKD_QC=N
-cp;1D45;CI;CWKCF;Dia;dm=0251;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL ALPHA;NFKC_CF=0251;NFKC_QC=N;NFKD_QC=N
-cp;1D46;CI;CWKCF;Dia;dm=1D02;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL TURNED AE;NFKC_CF=1D02;NFKC_QC=N;NFKD_QC=N
-cp;1D47;CI;CWKCF;Dia;dm=0062;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL B;NFKC_CF=0062;NFKC_QC=N;NFKD_QC=N
-cp;1D48;CI;CWKCF;Dia;dm=0064;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL D;NFKC_CF=0064;NFKC_QC=N;NFKD_QC=N
-cp;1D49;CI;CWKCF;Dia;dm=0065;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL E;NFKC_CF=0065;NFKC_QC=N;NFKD_QC=N
-cp;1D4A;CI;CWKCF;Dia;dm=0259;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL SCHWA;NFKC_CF=0259;NFKC_QC=N;NFKD_QC=N
-cp;1D4B;CI;CWKCF;Dia;dm=025B;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL OPEN E;NFKC_CF=025B;NFKC_QC=N;NFKD_QC=N
-cp;1D4C;CI;CWKCF;Dia;dm=025C;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL TURNED OPEN E;NFKC_CF=025C;NFKC_QC=N;NFKD_QC=N
-cp;1D4D;CI;CWKCF;Dia;dm=0067;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL G;NFKC_CF=0067;NFKC_QC=N;NFKD_QC=N
+cp;1D3C;CI;CWKCF;Dia;dm=004F;dt=Sup;FC_NFKC=006F;gc=Lm;na=MODIFIER LETTER CAPITAL O;NFKC_CF=006F;NFKC_QC=N;NFKC_SCF=006F;NFKD_QC=N
+cp;1D3D;CI;CWKCF;Dia;dm=0222;dt=Sup;FC_NFKC=0223;gc=Lm;na=MODIFIER LETTER CAPITAL OU;NFKC_CF=0223;NFKC_QC=N;NFKC_SCF=0223;NFKD_QC=N
+cp;1D3E;CI;CWKCF;Dia;dm=0050;dt=Sup;FC_NFKC=0070;gc=Lm;na=MODIFIER LETTER CAPITAL P;NFKC_CF=0070;NFKC_QC=N;NFKC_SCF=0070;NFKD_QC=N
+cp;1D3F;CI;CWKCF;Dia;dm=0052;dt=Sup;FC_NFKC=0072;gc=Lm;na=MODIFIER LETTER CAPITAL R;NFKC_CF=0072;NFKC_QC=N;NFKC_SCF=0072;NFKD_QC=N
+cp;1D40;CI;CWKCF;Dia;dm=0054;dt=Sup;FC_NFKC=0074;gc=Lm;na=MODIFIER LETTER CAPITAL T;NFKC_CF=0074;NFKC_QC=N;NFKC_SCF=0074;NFKD_QC=N
+cp;1D41;CI;CWKCF;Dia;dm=0055;dt=Sup;FC_NFKC=0075;gc=Lm;na=MODIFIER LETTER CAPITAL U;NFKC_CF=0075;NFKC_QC=N;NFKC_SCF=0075;NFKD_QC=N
+cp;1D42;CI;CWKCF;Dia;dm=0057;dt=Sup;FC_NFKC=0077;gc=Lm;na=MODIFIER LETTER CAPITAL W;NFKC_CF=0077;NFKC_QC=N;NFKC_SCF=0077;NFKD_QC=N
+cp;1D43;CI;CWKCF;Dia;dm=0061;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL A;NFKC_CF=0061;NFKC_QC=N;NFKC_SCF=0061;NFKD_QC=N
+cp;1D44;CI;CWKCF;Dia;dm=0250;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL TURNED A;NFKC_CF=0250;NFKC_QC=N;NFKC_SCF=0250;NFKD_QC=N
+cp;1D45;CI;CWKCF;Dia;dm=0251;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL ALPHA;NFKC_CF=0251;NFKC_QC=N;NFKC_SCF=0251;NFKD_QC=N
+cp;1D46;CI;CWKCF;Dia;dm=1D02;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL TURNED AE;NFKC_CF=1D02;NFKC_QC=N;NFKC_SCF=1D02;NFKD_QC=N
+cp;1D47;CI;CWKCF;Dia;dm=0062;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL B;NFKC_CF=0062;NFKC_QC=N;NFKC_SCF=0062;NFKD_QC=N
+cp;1D48;CI;CWKCF;Dia;dm=0064;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL D;NFKC_CF=0064;NFKC_QC=N;NFKC_SCF=0064;NFKD_QC=N
+cp;1D49;CI;CWKCF;Dia;dm=0065;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL E;NFKC_CF=0065;NFKC_QC=N;NFKC_SCF=0065;NFKD_QC=N
+cp;1D4A;CI;CWKCF;Dia;dm=0259;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL SCHWA;NFKC_CF=0259;NFKC_QC=N;NFKC_SCF=0259;NFKD_QC=N
+cp;1D4B;CI;CWKCF;Dia;dm=025B;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL OPEN E;NFKC_CF=025B;NFKC_QC=N;NFKC_SCF=025B;NFKD_QC=N
+cp;1D4C;CI;CWKCF;Dia;dm=025C;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL TURNED OPEN E;NFKC_CF=025C;NFKC_QC=N;NFKC_SCF=025C;NFKD_QC=N
+cp;1D4D;CI;CWKCF;Dia;dm=0067;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL G;NFKC_CF=0067;NFKC_QC=N;NFKC_SCF=0067;NFKD_QC=N
cp;1D4E;CI;Dia;gc=Lm;na=MODIFIER LETTER SMALL TURNED I
-cp;1D4F;CI;CWKCF;Dia;dm=006B;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL K;NFKC_CF=006B;NFKC_QC=N;NFKD_QC=N
-cp;1D50;CI;CWKCF;Dia;dm=006D;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL M;NFKC_CF=006D;NFKC_QC=N;NFKD_QC=N
-cp;1D51;CI;CWKCF;Dia;dm=014B;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL ENG;NFKC_CF=014B;NFKC_QC=N;NFKD_QC=N
-cp;1D52;CI;CWKCF;Dia;dm=006F;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL O;NFKC_CF=006F;NFKC_QC=N;NFKD_QC=N
-cp;1D53;CI;CWKCF;Dia;dm=0254;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL OPEN O;NFKC_CF=0254;NFKC_QC=N;NFKD_QC=N
-cp;1D54;CI;CWKCF;Dia;dm=1D16;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL TOP HALF O;NFKC_CF=1D16;NFKC_QC=N;NFKD_QC=N
-cp;1D55;CI;CWKCF;Dia;dm=1D17;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL BOTTOM HALF O;NFKC_CF=1D17;NFKC_QC=N;NFKD_QC=N
-cp;1D56;CI;CWKCF;Dia;dm=0070;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL P;NFKC_CF=0070;NFKC_QC=N;NFKD_QC=N
-cp;1D57;CI;CWKCF;Dia;dm=0074;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL T;NFKC_CF=0074;NFKC_QC=N;NFKD_QC=N
-cp;1D58;CI;CWKCF;Dia;dm=0075;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL U;NFKC_CF=0075;NFKC_QC=N;NFKD_QC=N
-cp;1D59;CI;CWKCF;Dia;dm=1D1D;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL SIDEWAYS U;NFKC_CF=1D1D;NFKC_QC=N;NFKD_QC=N
-cp;1D5A;CI;CWKCF;Dia;dm=026F;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL TURNED M;NFKC_CF=026F;NFKC_QC=N;NFKD_QC=N
-cp;1D5B;CI;CWKCF;Dia;dm=0076;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL V;NFKC_CF=0076;NFKC_QC=N;NFKD_QC=N
-cp;1D5C;CI;CWKCF;Dia;dm=1D25;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL AIN;NFKC_CF=1D25;NFKC_QC=N;NFKD_QC=N
+cp;1D4F;CI;CWKCF;Dia;dm=006B;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL K;NFKC_CF=006B;NFKC_QC=N;NFKC_SCF=006B;NFKD_QC=N
+cp;1D50;CI;CWKCF;Dia;dm=006D;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL M;NFKC_CF=006D;NFKC_QC=N;NFKC_SCF=006D;NFKD_QC=N
+cp;1D51;CI;CWKCF;Dia;dm=014B;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL ENG;NFKC_CF=014B;NFKC_QC=N;NFKC_SCF=014B;NFKD_QC=N
+cp;1D52;CI;CWKCF;Dia;dm=006F;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL O;NFKC_CF=006F;NFKC_QC=N;NFKC_SCF=006F;NFKD_QC=N
+cp;1D53;CI;CWKCF;Dia;dm=0254;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL OPEN O;NFKC_CF=0254;NFKC_QC=N;NFKC_SCF=0254;NFKD_QC=N
+cp;1D54;CI;CWKCF;Dia;dm=1D16;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL TOP HALF O;NFKC_CF=1D16;NFKC_QC=N;NFKC_SCF=1D16;NFKD_QC=N
+cp;1D55;CI;CWKCF;Dia;dm=1D17;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL BOTTOM HALF O;NFKC_CF=1D17;NFKC_QC=N;NFKC_SCF=1D17;NFKD_QC=N
+cp;1D56;CI;CWKCF;Dia;dm=0070;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL P;NFKC_CF=0070;NFKC_QC=N;NFKC_SCF=0070;NFKD_QC=N
+cp;1D57;CI;CWKCF;Dia;dm=0074;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL T;NFKC_CF=0074;NFKC_QC=N;NFKC_SCF=0074;NFKD_QC=N
+cp;1D58;CI;CWKCF;Dia;dm=0075;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL U;NFKC_CF=0075;NFKC_QC=N;NFKC_SCF=0075;NFKD_QC=N
+cp;1D59;CI;CWKCF;Dia;dm=1D1D;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL SIDEWAYS U;NFKC_CF=1D1D;NFKC_QC=N;NFKC_SCF=1D1D;NFKD_QC=N
+cp;1D5A;CI;CWKCF;Dia;dm=026F;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL TURNED M;NFKC_CF=026F;NFKC_QC=N;NFKC_SCF=026F;NFKD_QC=N
+cp;1D5B;CI;CWKCF;Dia;dm=0076;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL V;NFKC_CF=0076;NFKC_QC=N;NFKC_SCF=0076;NFKD_QC=N
+cp;1D5C;CI;CWKCF;Dia;dm=1D25;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL AIN;NFKC_CF=1D25;NFKC_QC=N;NFKC_SCF=1D25;NFKD_QC=N
# Greek superscript modifier letters
-cp;1D5D;CI;CWKCF;Dia;dm=03B2;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL BETA;NFKC_CF=03B2;NFKC_QC=N;NFKD_QC=N;sc=Grek
-cp;1D5E;CI;CWKCF;Dia;dm=03B3;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL GREEK GAMMA;NFKC_CF=03B3;NFKC_QC=N;NFKD_QC=N;sc=Grek
-cp;1D5F;CI;CWKCF;Dia;dm=03B4;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL DELTA;NFKC_CF=03B4;NFKC_QC=N;NFKD_QC=N;sc=Grek
-cp;1D60;CI;CWKCF;Dia;dm=03C6;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL GREEK PHI;NFKC_CF=03C6;NFKC_QC=N;NFKD_QC=N;sc=Grek
-cp;1D61;CI;CWKCF;Dia;dm=03C7;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL CHI;NFKC_CF=03C7;NFKC_QC=N;NFKD_QC=N;sc=Grek
+cp;1D5D;CI;CWKCF;Dia;dm=03B2;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL BETA;NFKC_CF=03B2;NFKC_QC=N;NFKC_SCF=03B2;NFKD_QC=N;sc=Grek
+cp;1D5E;CI;CWKCF;Dia;dm=03B3;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL GREEK GAMMA;NFKC_CF=03B3;NFKC_QC=N;NFKC_SCF=03B3;NFKD_QC=N;sc=Grek
+cp;1D5F;CI;CWKCF;Dia;dm=03B4;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL DELTA;NFKC_CF=03B4;NFKC_QC=N;NFKC_SCF=03B4;NFKD_QC=N;sc=Grek
+cp;1D60;CI;CWKCF;Dia;dm=03C6;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL GREEK PHI;NFKC_CF=03C6;NFKC_QC=N;NFKC_SCF=03C6;NFKD_QC=N;sc=Grek
+cp;1D61;CI;CWKCF;Dia;dm=03C7;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL CHI;NFKC_CF=03C7;NFKC_QC=N;NFKC_SCF=03C7;NFKD_QC=N;sc=Grek
# Latin subscript modifier letters
-cp;1D62;CI;CWKCF;Dia;dm=0069;dt=Sub;gc=Lm;na=LATIN SUBSCRIPT SMALL LETTER I;NFKC_CF=0069;NFKC_QC=N;NFKD_QC=N;SD
-cp;1D63;CI;CWKCF;Dia;dm=0072;dt=Sub;gc=Lm;na=LATIN SUBSCRIPT SMALL LETTER R;NFKC_CF=0072;NFKC_QC=N;NFKD_QC=N
-cp;1D64;CI;CWKCF;Dia;dm=0075;dt=Sub;gc=Lm;na=LATIN SUBSCRIPT SMALL LETTER U;NFKC_CF=0075;NFKC_QC=N;NFKD_QC=N
-cp;1D65;CI;CWKCF;Dia;dm=0076;dt=Sub;gc=Lm;na=LATIN SUBSCRIPT SMALL LETTER V;NFKC_CF=0076;NFKC_QC=N;NFKD_QC=N
+cp;1D62;CI;CWKCF;Dia;dm=0069;dt=Sub;gc=Lm;na=LATIN SUBSCRIPT SMALL LETTER I;NFKC_CF=0069;NFKC_QC=N;NFKC_SCF=0069;NFKD_QC=N;SD
+cp;1D63;CI;CWKCF;Dia;dm=0072;dt=Sub;gc=Lm;na=LATIN SUBSCRIPT SMALL LETTER R;NFKC_CF=0072;NFKC_QC=N;NFKC_SCF=0072;NFKD_QC=N
+cp;1D64;CI;CWKCF;Dia;dm=0075;dt=Sub;gc=Lm;na=LATIN SUBSCRIPT SMALL LETTER U;NFKC_CF=0075;NFKC_QC=N;NFKC_SCF=0075;NFKD_QC=N
+cp;1D65;CI;CWKCF;Dia;dm=0076;dt=Sub;gc=Lm;na=LATIN SUBSCRIPT SMALL LETTER V;NFKC_CF=0076;NFKC_QC=N;NFKC_SCF=0076;NFKD_QC=N
# Greek subscript modifier letters
-cp;1D66;CI;CWKCF;Dia;dm=03B2;dt=Sub;gc=Lm;na=GREEK SUBSCRIPT SMALL LETTER BETA;NFKC_CF=03B2;NFKC_QC=N;NFKD_QC=N;sc=Grek
-cp;1D67;CI;CWKCF;Dia;dm=03B3;dt=Sub;gc=Lm;na=GREEK SUBSCRIPT SMALL LETTER GAMMA;NFKC_CF=03B3;NFKC_QC=N;NFKD_QC=N;sc=Grek
-cp;1D68;CI;CWKCF;Dia;dm=03C1;dt=Sub;gc=Lm;na=GREEK SUBSCRIPT SMALL LETTER RHO;NFKC_CF=03C1;NFKC_QC=N;NFKD_QC=N;sc=Grek
-cp;1D69;CI;CWKCF;Dia;dm=03C6;dt=Sub;gc=Lm;na=GREEK SUBSCRIPT SMALL LETTER PHI;NFKC_CF=03C6;NFKC_QC=N;NFKD_QC=N;sc=Grek
-cp;1D6A;CI;CWKCF;Dia;dm=03C7;dt=Sub;gc=Lm;na=GREEK SUBSCRIPT SMALL LETTER CHI;NFKC_CF=03C7;NFKC_QC=N;NFKD_QC=N;sc=Grek
-# Latin letter
+cp;1D66;CI;CWKCF;Dia;dm=03B2;dt=Sub;gc=Lm;na=GREEK SUBSCRIPT SMALL LETTER BETA;NFKC_CF=03B2;NFKC_QC=N;NFKC_SCF=03B2;NFKD_QC=N;sc=Grek
+cp;1D67;CI;CWKCF;Dia;dm=03B3;dt=Sub;gc=Lm;na=GREEK SUBSCRIPT SMALL LETTER GAMMA;NFKC_CF=03B3;NFKC_QC=N;NFKC_SCF=03B3;NFKD_QC=N;sc=Grek
+cp;1D68;CI;CWKCF;Dia;dm=03C1;dt=Sub;gc=Lm;na=GREEK SUBSCRIPT SMALL LETTER RHO;NFKC_CF=03C1;NFKC_QC=N;NFKC_SCF=03C1;NFKD_QC=N;sc=Grek
+cp;1D69;CI;CWKCF;Dia;dm=03C6;dt=Sub;gc=Lm;na=GREEK SUBSCRIPT SMALL LETTER PHI;NFKC_CF=03C6;NFKC_QC=N;NFKC_SCF=03C6;NFKD_QC=N;sc=Grek
+cp;1D6A;CI;CWKCF;Dia;dm=03C7;dt=Sub;gc=Lm;na=GREEK SUBSCRIPT SMALL LETTER CHI;NFKC_CF=03C7;NFKC_QC=N;NFKC_SCF=03C7;NFKD_QC=N;sc=Grek
+# Latin letter for American lexicography
cp;1D6B;na=LATIN SMALL LETTER UE
# Latin letters with middle tilde
cp;1D6C;age=4.1;na=LATIN SMALL LETTER B WITH MIDDLE TILDE
@@ -9091,9 +9108,9 @@ cp;1D73;age=4.1;na=LATIN SMALL LETTER R WITH FISHHOOK AND MIDDLE TILDE
cp;1D74;age=4.1;na=LATIN SMALL LETTER S WITH MIDDLE TILDE
cp;1D75;age=4.1;na=LATIN SMALL LETTER T WITH MIDDLE TILDE
cp;1D76;age=4.1;na=LATIN SMALL LETTER Z WITH MIDDLE TILDE
-# Caucasian linguistics
+# Letters for Caucasian linguistics
cp;1D77;age=4.1;na=LATIN SMALL LETTER TURNED G
-cp;1D78;age=4.1;CI;CWKCF;dm=043D;dt=Sup;gc=Lm;na=MODIFIER LETTER CYRILLIC EN;NFKC_CF=043D;NFKC_QC=N;NFKD_QC=N;sc=Cyrl
+cp;1D78;age=4.1;CI;CWKCF;dm=043D;dt=Sup;gc=Lm;na=MODIFIER LETTER CYRILLIC EN;NFKC_CF=043D;NFKC_QC=N;NFKC_SCF=043D;NFKD_QC=N;sc=Cyrl
# Other phonetic symbols
cp;1D79;age=4.1;CWCM;CWT;CWU;na=LATIN SMALL LETTER INSULAR G;stc=A77D;suc=A77D
cp;1D7A;age=4.1;na=LATIN SMALL LETTER TH WITH STRIKETHROUGH
@@ -9135,45 +9152,45 @@ cp;1D98;-CWKCF;dt=None;gc=Ll;na=LATIN SMALL LETTER ESH WITH RETROFLEX HOOK;NFKC_
cp;1D99;-CWKCF;dt=None;gc=Ll;na=LATIN SMALL LETTER U WITH RETROFLEX HOOK;NFKC_QC=Y;NFKD_QC=Y
cp;1D9A;-CWKCF;dt=None;gc=Ll;na=LATIN SMALL LETTER EZH WITH RETROFLEX HOOK;NFKC_QC=Y;NFKD_QC=Y
# Modifier letters
-cp;1D9B;CI;dm=0252;na=MODIFIER LETTER SMALL TURNED ALPHA;NFKC_CF=0252
-cp;1D9C;CI;dm=0063;na=MODIFIER LETTER SMALL C;NFKC_CF=0063
-cp;1D9D;CI;dm=0255;na=MODIFIER LETTER SMALL C WITH CURL;NFKC_CF=0255
-cp;1D9E;CI;dm=00F0;na=MODIFIER LETTER SMALL ETH;NFKC_CF=00F0
-cp;1D9F;CI;dm=025C;na=MODIFIER LETTER SMALL REVERSED OPEN E;NFKC_CF=025C
-cp;1DA0;CI;dm=0066;na=MODIFIER LETTER SMALL F;NFKC_CF=0066
-cp;1DA1;CI;dm=025F;na=MODIFIER LETTER SMALL DOTLESS J WITH STROKE;NFKC_CF=025F
-cp;1DA2;CI;dm=0261;na=MODIFIER LETTER SMALL SCRIPT G;NFKC_CF=0261
-cp;1DA3;CI;dm=0265;na=MODIFIER LETTER SMALL TURNED H;NFKC_CF=0265
-cp;1DA4;CI;dm=0268;na=MODIFIER LETTER SMALL I WITH STROKE;NFKC_CF=0268;SD
-cp;1DA5;CI;dm=0269;na=MODIFIER LETTER SMALL IOTA;NFKC_CF=0269
-cp;1DA6;CI;dm=026A;na=MODIFIER LETTER SMALL CAPITAL I;NFKC_CF=026A
-cp;1DA7;CI;dm=1D7B;na=MODIFIER LETTER SMALL CAPITAL I WITH STROKE;NFKC_CF=1D7B
-cp;1DA8;CI;dm=029D;na=MODIFIER LETTER SMALL J WITH CROSSED-TAIL;NFKC_CF=029D;SD
-cp;1DA9;CI;dm=026D;na=MODIFIER LETTER SMALL L WITH RETROFLEX HOOK;NFKC_CF=026D
-cp;1DAA;CI;dm=1D85;na=MODIFIER LETTER SMALL L WITH PALATAL HOOK;NFKC_CF=1D85
-cp;1DAB;CI;dm=029F;na=MODIFIER LETTER SMALL CAPITAL L;NFKC_CF=029F
-cp;1DAC;CI;dm=0271;na=MODIFIER LETTER SMALL M WITH HOOK;NFKC_CF=0271
-cp;1DAD;CI;dm=0270;na=MODIFIER LETTER SMALL TURNED M WITH LONG LEG;NFKC_CF=0270
-cp;1DAE;CI;dm=0272;na=MODIFIER LETTER SMALL N WITH LEFT HOOK;NFKC_CF=0272
-cp;1DAF;CI;dm=0273;na=MODIFIER LETTER SMALL N WITH RETROFLEX HOOK;NFKC_CF=0273
-cp;1DB0;CI;dm=0274;na=MODIFIER LETTER SMALL CAPITAL N;NFKC_CF=0274
-cp;1DB1;CI;dm=0275;na=MODIFIER LETTER SMALL BARRED O;NFKC_CF=0275
-cp;1DB2;CI;dm=0278;na=MODIFIER LETTER SMALL PHI;NFKC_CF=0278
-cp;1DB3;CI;dm=0282;na=MODIFIER LETTER SMALL S WITH HOOK;NFKC_CF=0282
-cp;1DB4;CI;dm=0283;na=MODIFIER LETTER SMALL ESH;NFKC_CF=0283
-cp;1DB5;CI;dm=01AB;na=MODIFIER LETTER SMALL T WITH PALATAL HOOK;NFKC_CF=01AB
-cp;1DB6;CI;dm=0289;na=MODIFIER LETTER SMALL U BAR;NFKC_CF=0289
-cp;1DB7;CI;dm=028A;na=MODIFIER LETTER SMALL UPSILON;NFKC_CF=028A
-cp;1DB8;CI;dm=1D1C;na=MODIFIER LETTER SMALL CAPITAL U;NFKC_CF=1D1C
-cp;1DB9;CI;dm=028B;na=MODIFIER LETTER SMALL V WITH HOOK;NFKC_CF=028B
-cp;1DBA;CI;dm=028C;na=MODIFIER LETTER SMALL TURNED V;NFKC_CF=028C
-cp;1DBB;CI;dm=007A;na=MODIFIER LETTER SMALL Z;NFKC_CF=007A
-cp;1DBC;CI;dm=0290;na=MODIFIER LETTER SMALL Z WITH RETROFLEX HOOK;NFKC_CF=0290
-cp;1DBD;CI;dm=0291;na=MODIFIER LETTER SMALL Z WITH CURL;NFKC_CF=0291
-cp;1DBE;CI;dm=0292;na=MODIFIER LETTER SMALL EZH;NFKC_CF=0292
-cp;1DBF;CI;dm=03B8;na=MODIFIER LETTER SMALL THETA;NFKC_CF=03B8;sc=Grek
-
-block;1DC0..1DFF;age=5.1;bc=NSM;blk=Diacriticals_Sup;ccc=230;CI;gc=Mn;GCB=EX;Gr_Ext;IDC;jt=T;lb=CM;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1D9B;CI;dm=0252;na=MODIFIER LETTER SMALL TURNED ALPHA;NFKC_CF=0252;NFKC_SCF=0252
+cp;1D9C;CI;dm=0063;na=MODIFIER LETTER SMALL C;NFKC_CF=0063;NFKC_SCF=0063
+cp;1D9D;CI;dm=0255;na=MODIFIER LETTER SMALL C WITH CURL;NFKC_CF=0255;NFKC_SCF=0255
+cp;1D9E;CI;dm=00F0;na=MODIFIER LETTER SMALL ETH;NFKC_CF=00F0;NFKC_SCF=00F0
+cp;1D9F;CI;dm=025C;na=MODIFIER LETTER SMALL REVERSED OPEN E;NFKC_CF=025C;NFKC_SCF=025C
+cp;1DA0;CI;dm=0066;na=MODIFIER LETTER SMALL F;NFKC_CF=0066;NFKC_SCF=0066
+cp;1DA1;CI;dm=025F;na=MODIFIER LETTER SMALL DOTLESS J WITH STROKE;NFKC_CF=025F;NFKC_SCF=025F
+cp;1DA2;CI;dm=0261;na=MODIFIER LETTER SMALL SCRIPT G;NFKC_CF=0261;NFKC_SCF=0261
+cp;1DA3;CI;dm=0265;na=MODIFIER LETTER SMALL TURNED H;NFKC_CF=0265;NFKC_SCF=0265
+cp;1DA4;CI;dm=0268;na=MODIFIER LETTER SMALL I WITH STROKE;NFKC_CF=0268;NFKC_SCF=0268;SD
+cp;1DA5;CI;dm=0269;na=MODIFIER LETTER SMALL IOTA;NFKC_CF=0269;NFKC_SCF=0269
+cp;1DA6;CI;dm=026A;na=MODIFIER LETTER SMALL CAPITAL I;NFKC_CF=026A;NFKC_SCF=026A
+cp;1DA7;CI;dm=1D7B;na=MODIFIER LETTER SMALL CAPITAL I WITH STROKE;NFKC_CF=1D7B;NFKC_SCF=1D7B
+cp;1DA8;CI;dm=029D;na=MODIFIER LETTER SMALL J WITH CROSSED-TAIL;NFKC_CF=029D;NFKC_SCF=029D;SD
+cp;1DA9;CI;dm=026D;na=MODIFIER LETTER SMALL L WITH RETROFLEX HOOK;NFKC_CF=026D;NFKC_SCF=026D
+cp;1DAA;CI;dm=1D85;na=MODIFIER LETTER SMALL L WITH PALATAL HOOK;NFKC_CF=1D85;NFKC_SCF=1D85
+cp;1DAB;CI;dm=029F;na=MODIFIER LETTER SMALL CAPITAL L;NFKC_CF=029F;NFKC_SCF=029F
+cp;1DAC;CI;dm=0271;na=MODIFIER LETTER SMALL M WITH HOOK;NFKC_CF=0271;NFKC_SCF=0271
+cp;1DAD;CI;dm=0270;na=MODIFIER LETTER SMALL TURNED M WITH LONG LEG;NFKC_CF=0270;NFKC_SCF=0270
+cp;1DAE;CI;dm=0272;na=MODIFIER LETTER SMALL N WITH LEFT HOOK;NFKC_CF=0272;NFKC_SCF=0272
+cp;1DAF;CI;dm=0273;na=MODIFIER LETTER SMALL N WITH RETROFLEX HOOK;NFKC_CF=0273;NFKC_SCF=0273
+cp;1DB0;CI;dm=0274;na=MODIFIER LETTER SMALL CAPITAL N;NFKC_CF=0274;NFKC_SCF=0274
+cp;1DB1;CI;dm=0275;na=MODIFIER LETTER SMALL BARRED O;NFKC_CF=0275;NFKC_SCF=0275
+cp;1DB2;CI;dm=0278;na=MODIFIER LETTER SMALL PHI;NFKC_CF=0278;NFKC_SCF=0278
+cp;1DB3;CI;dm=0282;na=MODIFIER LETTER SMALL S WITH HOOK;NFKC_CF=0282;NFKC_SCF=0282
+cp;1DB4;CI;dm=0283;na=MODIFIER LETTER SMALL ESH;NFKC_CF=0283;NFKC_SCF=0283
+cp;1DB5;CI;dm=01AB;na=MODIFIER LETTER SMALL T WITH PALATAL HOOK;NFKC_CF=01AB;NFKC_SCF=01AB
+cp;1DB6;CI;dm=0289;na=MODIFIER LETTER SMALL U BAR;NFKC_CF=0289;NFKC_SCF=0289
+cp;1DB7;CI;dm=028A;na=MODIFIER LETTER SMALL UPSILON;NFKC_CF=028A;NFKC_SCF=028A
+cp;1DB8;CI;dm=1D1C;na=MODIFIER LETTER SMALL CAPITAL U;NFKC_CF=1D1C;NFKC_SCF=1D1C
+cp;1DB9;CI;dm=028B;na=MODIFIER LETTER SMALL V WITH HOOK;NFKC_CF=028B;NFKC_SCF=028B
+cp;1DBA;CI;dm=028C;na=MODIFIER LETTER SMALL TURNED V;NFKC_CF=028C;NFKC_SCF=028C
+cp;1DBB;CI;dm=007A;na=MODIFIER LETTER SMALL Z;NFKC_CF=007A;NFKC_SCF=007A
+cp;1DBC;CI;dm=0290;na=MODIFIER LETTER SMALL Z WITH RETROFLEX HOOK;NFKC_CF=0290;NFKC_SCF=0290
+cp;1DBD;CI;dm=0291;na=MODIFIER LETTER SMALL Z WITH CURL;NFKC_CF=0291;NFKC_SCF=0291
+cp;1DBE;CI;dm=0292;na=MODIFIER LETTER SMALL EZH;NFKC_CF=0292;NFKC_SCF=0292
+cp;1DBF;CI;dm=03B8;na=MODIFIER LETTER SMALL THETA;NFKC_CF=03B8;NFKC_SCF=03B8;sc=Grek
+
+block;1DC0..1DFF;age=5.1;bc=NSM;blk=Diacriticals_Sup;ccc=230;CI;gc=Mn;GCB=EX;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;SB=EX;sc=Zinh;WB=Extend;XIDC
# 1DC0..1DFF Combining Diacritical Marks Supplement
# Used for Ancient Greek
cp;1DC0;age=4.1;na=COMBINING DOTTED GRAVE ACCENT;scx=Grek
@@ -9258,267 +9275,267 @@ cp;1DFF;age=5.0;ccc=220;Dia;na=COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELO
block;1E00..1EFF;age=1.1;Alpha;blk=Latin_Ext_Additional;Cased;CWCM;dt=Can;gc=Ll;Gr_Base;IDC;IDS;lb=AL;NFD_QC=N;NFKD_QC=N;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
# 1E00..1EFF Latin Extended Additional
# Latin general use extensions
-cp;1E00;cf=1E01;CWCF;CWKCF;CWL;dm=0041 0325;gc=Lu;na=LATIN CAPITAL LETTER A WITH RING BELOW;NFKC_CF=1E01;SB=UP;scf=1E01;slc=1E01;Upper
+cp;1E00;cf=1E01;CWCF;CWKCF;CWL;dm=0041 0325;gc=Lu;na=LATIN CAPITAL LETTER A WITH RING BELOW;NFKC_CF=1E01;NFKC_SCF=1E01;SB=UP;scf=1E01;slc=1E01;Upper
cp;1E01;CWT;CWU;dm=0061 0325;Lower;na=LATIN SMALL LETTER A WITH RING BELOW;stc=1E00;suc=1E00
-cp;1E02;cf=1E03;CWCF;CWKCF;CWL;dm=0042 0307;gc=Lu;na=LATIN CAPITAL LETTER B WITH DOT ABOVE;NFKC_CF=1E03;SB=UP;scf=1E03;slc=1E03;Upper
+cp;1E02;cf=1E03;CWCF;CWKCF;CWL;dm=0042 0307;gc=Lu;na=LATIN CAPITAL LETTER B WITH DOT ABOVE;NFKC_CF=1E03;NFKC_SCF=1E03;SB=UP;scf=1E03;slc=1E03;Upper
cp;1E03;CWT;CWU;dm=0062 0307;Lower;na=LATIN SMALL LETTER B WITH DOT ABOVE;stc=1E02;suc=1E02
-cp;1E04;cf=1E05;CWCF;CWKCF;CWL;dm=0042 0323;gc=Lu;na=LATIN CAPITAL LETTER B WITH DOT BELOW;NFKC_CF=1E05;SB=UP;scf=1E05;slc=1E05;Upper
+cp;1E04;cf=1E05;CWCF;CWKCF;CWL;dm=0042 0323;gc=Lu;na=LATIN CAPITAL LETTER B WITH DOT BELOW;NFKC_CF=1E05;NFKC_SCF=1E05;SB=UP;scf=1E05;slc=1E05;Upper
cp;1E05;CWT;CWU;dm=0062 0323;Lower;na=LATIN SMALL LETTER B WITH DOT BELOW;stc=1E04;suc=1E04
-cp;1E06;cf=1E07;CWCF;CWKCF;CWL;dm=0042 0331;gc=Lu;na=LATIN CAPITAL LETTER B WITH LINE BELOW;NFKC_CF=1E07;SB=UP;scf=1E07;slc=1E07;Upper
+cp;1E06;cf=1E07;CWCF;CWKCF;CWL;dm=0042 0331;gc=Lu;na=LATIN CAPITAL LETTER B WITH LINE BELOW;NFKC_CF=1E07;NFKC_SCF=1E07;SB=UP;scf=1E07;slc=1E07;Upper
cp;1E07;CWT;CWU;dm=0062 0331;Lower;na=LATIN SMALL LETTER B WITH LINE BELOW;stc=1E06;suc=1E06
-cp;1E08;cf=1E09;CWCF;CWKCF;CWL;dm=00C7 0301;gc=Lu;na=LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE;NFKC_CF=1E09;SB=UP;scf=1E09;slc=1E09;Upper
+cp;1E08;cf=1E09;CWCF;CWKCF;CWL;dm=00C7 0301;gc=Lu;na=LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE;NFKC_CF=1E09;NFKC_SCF=1E09;SB=UP;scf=1E09;slc=1E09;Upper
cp;1E09;CWT;CWU;dm=00E7 0301;Lower;na=LATIN SMALL LETTER C WITH CEDILLA AND ACUTE;stc=1E08;suc=1E08
-cp;1E0A;cf=1E0B;CWCF;CWKCF;CWL;dm=0044 0307;gc=Lu;na=LATIN CAPITAL LETTER D WITH DOT ABOVE;NFKC_CF=1E0B;SB=UP;scf=1E0B;slc=1E0B;Upper
+cp;1E0A;cf=1E0B;CWCF;CWKCF;CWL;dm=0044 0307;gc=Lu;na=LATIN CAPITAL LETTER D WITH DOT ABOVE;NFKC_CF=1E0B;NFKC_SCF=1E0B;SB=UP;scf=1E0B;slc=1E0B;Upper
cp;1E0B;CWT;CWU;dm=0064 0307;Lower;na=LATIN SMALL LETTER D WITH DOT ABOVE;stc=1E0A;suc=1E0A
-cp;1E0C;cf=1E0D;CWCF;CWKCF;CWL;dm=0044 0323;gc=Lu;na=LATIN CAPITAL LETTER D WITH DOT BELOW;NFKC_CF=1E0D;SB=UP;scf=1E0D;slc=1E0D;Upper
+cp;1E0C;cf=1E0D;CWCF;CWKCF;CWL;dm=0044 0323;gc=Lu;na=LATIN CAPITAL LETTER D WITH DOT BELOW;NFKC_CF=1E0D;NFKC_SCF=1E0D;SB=UP;scf=1E0D;slc=1E0D;Upper
cp;1E0D;CWT;CWU;dm=0064 0323;Lower;na=LATIN SMALL LETTER D WITH DOT BELOW;stc=1E0C;suc=1E0C
-cp;1E0E;cf=1E0F;CWCF;CWKCF;CWL;dm=0044 0331;gc=Lu;na=LATIN CAPITAL LETTER D WITH LINE BELOW;NFKC_CF=1E0F;SB=UP;scf=1E0F;slc=1E0F;Upper
+cp;1E0E;cf=1E0F;CWCF;CWKCF;CWL;dm=0044 0331;gc=Lu;na=LATIN CAPITAL LETTER D WITH LINE BELOW;NFKC_CF=1E0F;NFKC_SCF=1E0F;SB=UP;scf=1E0F;slc=1E0F;Upper
cp;1E0F;CWT;CWU;dm=0064 0331;Lower;na=LATIN SMALL LETTER D WITH LINE BELOW;stc=1E0E;suc=1E0E
-cp;1E10;cf=1E11;CWCF;CWKCF;CWL;dm=0044 0327;gc=Lu;na=LATIN CAPITAL LETTER D WITH CEDILLA;NFKC_CF=1E11;SB=UP;scf=1E11;slc=1E11;Upper
+cp;1E10;cf=1E11;CWCF;CWKCF;CWL;dm=0044 0327;gc=Lu;na=LATIN CAPITAL LETTER D WITH CEDILLA;NFKC_CF=1E11;NFKC_SCF=1E11;SB=UP;scf=1E11;slc=1E11;Upper
cp;1E11;CWT;CWU;dm=0064 0327;Lower;na=LATIN SMALL LETTER D WITH CEDILLA;stc=1E10;suc=1E10
-cp;1E12;cf=1E13;CWCF;CWKCF;CWL;dm=0044 032D;gc=Lu;na=LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW;NFKC_CF=1E13;SB=UP;scf=1E13;slc=1E13;Upper
+cp;1E12;cf=1E13;CWCF;CWKCF;CWL;dm=0044 032D;gc=Lu;na=LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW;NFKC_CF=1E13;NFKC_SCF=1E13;SB=UP;scf=1E13;slc=1E13;Upper
cp;1E13;CWT;CWU;dm=0064 032D;Lower;na=LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW;stc=1E12;suc=1E12
-cp;1E14;cf=1E15;CWCF;CWKCF;CWL;dm=0112 0300;gc=Lu;na=LATIN CAPITAL LETTER E WITH MACRON AND GRAVE;NFKC_CF=1E15;SB=UP;scf=1E15;slc=1E15;Upper
+cp;1E14;cf=1E15;CWCF;CWKCF;CWL;dm=0112 0300;gc=Lu;na=LATIN CAPITAL LETTER E WITH MACRON AND GRAVE;NFKC_CF=1E15;NFKC_SCF=1E15;SB=UP;scf=1E15;slc=1E15;Upper
cp;1E15;CWT;CWU;dm=0113 0300;Lower;na=LATIN SMALL LETTER E WITH MACRON AND GRAVE;stc=1E14;suc=1E14
-cp;1E16;cf=1E17;CWCF;CWKCF;CWL;dm=0112 0301;gc=Lu;na=LATIN CAPITAL LETTER E WITH MACRON AND ACUTE;NFKC_CF=1E17;SB=UP;scf=1E17;slc=1E17;Upper
+cp;1E16;cf=1E17;CWCF;CWKCF;CWL;dm=0112 0301;gc=Lu;na=LATIN CAPITAL LETTER E WITH MACRON AND ACUTE;NFKC_CF=1E17;NFKC_SCF=1E17;SB=UP;scf=1E17;slc=1E17;Upper
cp;1E17;CWT;CWU;dm=0113 0301;Lower;na=LATIN SMALL LETTER E WITH MACRON AND ACUTE;stc=1E16;suc=1E16
-cp;1E18;cf=1E19;CWCF;CWKCF;CWL;dm=0045 032D;gc=Lu;na=LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW;NFKC_CF=1E19;SB=UP;scf=1E19;slc=1E19;Upper
+cp;1E18;cf=1E19;CWCF;CWKCF;CWL;dm=0045 032D;gc=Lu;na=LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW;NFKC_CF=1E19;NFKC_SCF=1E19;SB=UP;scf=1E19;slc=1E19;Upper
cp;1E19;CWT;CWU;dm=0065 032D;Lower;na=LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW;stc=1E18;suc=1E18
-cp;1E1A;cf=1E1B;CWCF;CWKCF;CWL;dm=0045 0330;gc=Lu;na=LATIN CAPITAL LETTER E WITH TILDE BELOW;NFKC_CF=1E1B;SB=UP;scf=1E1B;slc=1E1B;Upper
+cp;1E1A;cf=1E1B;CWCF;CWKCF;CWL;dm=0045 0330;gc=Lu;na=LATIN CAPITAL LETTER E WITH TILDE BELOW;NFKC_CF=1E1B;NFKC_SCF=1E1B;SB=UP;scf=1E1B;slc=1E1B;Upper
cp;1E1B;CWT;CWU;dm=0065 0330;Lower;na=LATIN SMALL LETTER E WITH TILDE BELOW;stc=1E1A;suc=1E1A
-cp;1E1C;cf=1E1D;CWCF;CWKCF;CWL;dm=0228 0306;gc=Lu;na=LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE;NFKC_CF=1E1D;SB=UP;scf=1E1D;slc=1E1D;Upper
+cp;1E1C;cf=1E1D;CWCF;CWKCF;CWL;dm=0228 0306;gc=Lu;na=LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE;NFKC_CF=1E1D;NFKC_SCF=1E1D;SB=UP;scf=1E1D;slc=1E1D;Upper
cp;1E1D;CWT;CWU;dm=0229 0306;Lower;na=LATIN SMALL LETTER E WITH CEDILLA AND BREVE;stc=1E1C;suc=1E1C
-cp;1E1E;cf=1E1F;CWCF;CWKCF;CWL;dm=0046 0307;gc=Lu;na=LATIN CAPITAL LETTER F WITH DOT ABOVE;NFKC_CF=1E1F;SB=UP;scf=1E1F;slc=1E1F;Upper
+cp;1E1E;cf=1E1F;CWCF;CWKCF;CWL;dm=0046 0307;gc=Lu;na=LATIN CAPITAL LETTER F WITH DOT ABOVE;NFKC_CF=1E1F;NFKC_SCF=1E1F;SB=UP;scf=1E1F;slc=1E1F;Upper
cp;1E1F;CWT;CWU;dm=0066 0307;Lower;na=LATIN SMALL LETTER F WITH DOT ABOVE;stc=1E1E;suc=1E1E
-cp;1E20;cf=1E21;CWCF;CWKCF;CWL;dm=0047 0304;gc=Lu;na=LATIN CAPITAL LETTER G WITH MACRON;NFKC_CF=1E21;SB=UP;scf=1E21;slc=1E21;Upper
+cp;1E20;cf=1E21;CWCF;CWKCF;CWL;dm=0047 0304;gc=Lu;na=LATIN CAPITAL LETTER G WITH MACRON;NFKC_CF=1E21;NFKC_SCF=1E21;SB=UP;scf=1E21;slc=1E21;Upper
cp;1E21;CWT;CWU;dm=0067 0304;Lower;na=LATIN SMALL LETTER G WITH MACRON;stc=1E20;suc=1E20
-cp;1E22;cf=1E23;CWCF;CWKCF;CWL;dm=0048 0307;gc=Lu;na=LATIN CAPITAL LETTER H WITH DOT ABOVE;NFKC_CF=1E23;SB=UP;scf=1E23;slc=1E23;Upper
+cp;1E22;cf=1E23;CWCF;CWKCF;CWL;dm=0048 0307;gc=Lu;na=LATIN CAPITAL LETTER H WITH DOT ABOVE;NFKC_CF=1E23;NFKC_SCF=1E23;SB=UP;scf=1E23;slc=1E23;Upper
cp;1E23;CWT;CWU;dm=0068 0307;Lower;na=LATIN SMALL LETTER H WITH DOT ABOVE;stc=1E22;suc=1E22
-cp;1E24;cf=1E25;CWCF;CWKCF;CWL;dm=0048 0323;gc=Lu;na=LATIN CAPITAL LETTER H WITH DOT BELOW;NFKC_CF=1E25;SB=UP;scf=1E25;slc=1E25;Upper
+cp;1E24;cf=1E25;CWCF;CWKCF;CWL;dm=0048 0323;gc=Lu;na=LATIN CAPITAL LETTER H WITH DOT BELOW;NFKC_CF=1E25;NFKC_SCF=1E25;SB=UP;scf=1E25;slc=1E25;Upper
cp;1E25;CWT;CWU;dm=0068 0323;Lower;na=LATIN SMALL LETTER H WITH DOT BELOW;stc=1E24;suc=1E24
-cp;1E26;cf=1E27;CWCF;CWKCF;CWL;dm=0048 0308;gc=Lu;na=LATIN CAPITAL LETTER H WITH DIAERESIS;NFKC_CF=1E27;SB=UP;scf=1E27;slc=1E27;Upper
+cp;1E26;cf=1E27;CWCF;CWKCF;CWL;dm=0048 0308;gc=Lu;na=LATIN CAPITAL LETTER H WITH DIAERESIS;NFKC_CF=1E27;NFKC_SCF=1E27;SB=UP;scf=1E27;slc=1E27;Upper
cp;1E27;CWT;CWU;dm=0068 0308;Lower;na=LATIN SMALL LETTER H WITH DIAERESIS;stc=1E26;suc=1E26
-cp;1E28;cf=1E29;CWCF;CWKCF;CWL;dm=0048 0327;gc=Lu;na=LATIN CAPITAL LETTER H WITH CEDILLA;NFKC_CF=1E29;SB=UP;scf=1E29;slc=1E29;Upper
+cp;1E28;cf=1E29;CWCF;CWKCF;CWL;dm=0048 0327;gc=Lu;na=LATIN CAPITAL LETTER H WITH CEDILLA;NFKC_CF=1E29;NFKC_SCF=1E29;SB=UP;scf=1E29;slc=1E29;Upper
cp;1E29;CWT;CWU;dm=0068 0327;Lower;na=LATIN SMALL LETTER H WITH CEDILLA;stc=1E28;suc=1E28
-cp;1E2A;cf=1E2B;CWCF;CWKCF;CWL;dm=0048 032E;gc=Lu;na=LATIN CAPITAL LETTER H WITH BREVE BELOW;NFKC_CF=1E2B;SB=UP;scf=1E2B;slc=1E2B;Upper
+cp;1E2A;cf=1E2B;CWCF;CWKCF;CWL;dm=0048 032E;gc=Lu;na=LATIN CAPITAL LETTER H WITH BREVE BELOW;NFKC_CF=1E2B;NFKC_SCF=1E2B;SB=UP;scf=1E2B;slc=1E2B;Upper
cp;1E2B;CWT;CWU;dm=0068 032E;Lower;na=LATIN SMALL LETTER H WITH BREVE BELOW;stc=1E2A;suc=1E2A
-cp;1E2C;cf=1E2D;CWCF;CWKCF;CWL;dm=0049 0330;gc=Lu;na=LATIN CAPITAL LETTER I WITH TILDE BELOW;NFKC_CF=1E2D;SB=UP;scf=1E2D;slc=1E2D;Upper
+cp;1E2C;cf=1E2D;CWCF;CWKCF;CWL;dm=0049 0330;gc=Lu;na=LATIN CAPITAL LETTER I WITH TILDE BELOW;NFKC_CF=1E2D;NFKC_SCF=1E2D;SB=UP;scf=1E2D;slc=1E2D;Upper
cp;1E2D;CWT;CWU;dm=0069 0330;Lower;na=LATIN SMALL LETTER I WITH TILDE BELOW;SD;stc=1E2C;suc=1E2C
-cp;1E2E;cf=1E2F;CWCF;CWKCF;CWL;dm=00CF 0301;gc=Lu;na=LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE;NFKC_CF=1E2F;SB=UP;scf=1E2F;slc=1E2F;Upper
+cp;1E2E;cf=1E2F;CWCF;CWKCF;CWL;dm=00CF 0301;gc=Lu;na=LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE;NFKC_CF=1E2F;NFKC_SCF=1E2F;SB=UP;scf=1E2F;slc=1E2F;Upper
cp;1E2F;CWT;CWU;dm=00EF 0301;Lower;na=LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE;stc=1E2E;suc=1E2E
-cp;1E30;cf=1E31;CWCF;CWKCF;CWL;dm=004B 0301;gc=Lu;na=LATIN CAPITAL LETTER K WITH ACUTE;NFKC_CF=1E31;SB=UP;scf=1E31;slc=1E31;Upper
+cp;1E30;cf=1E31;CWCF;CWKCF;CWL;dm=004B 0301;gc=Lu;na=LATIN CAPITAL LETTER K WITH ACUTE;NFKC_CF=1E31;NFKC_SCF=1E31;SB=UP;scf=1E31;slc=1E31;Upper
cp;1E31;CWT;CWU;dm=006B 0301;Lower;na=LATIN SMALL LETTER K WITH ACUTE;stc=1E30;suc=1E30
-cp;1E32;cf=1E33;CWCF;CWKCF;CWL;dm=004B 0323;gc=Lu;na=LATIN CAPITAL LETTER K WITH DOT BELOW;NFKC_CF=1E33;SB=UP;scf=1E33;slc=1E33;Upper
+cp;1E32;cf=1E33;CWCF;CWKCF;CWL;dm=004B 0323;gc=Lu;na=LATIN CAPITAL LETTER K WITH DOT BELOW;NFKC_CF=1E33;NFKC_SCF=1E33;SB=UP;scf=1E33;slc=1E33;Upper
cp;1E33;CWT;CWU;dm=006B 0323;Lower;na=LATIN SMALL LETTER K WITH DOT BELOW;stc=1E32;suc=1E32
-cp;1E34;cf=1E35;CWCF;CWKCF;CWL;dm=004B 0331;gc=Lu;na=LATIN CAPITAL LETTER K WITH LINE BELOW;NFKC_CF=1E35;SB=UP;scf=1E35;slc=1E35;Upper
+cp;1E34;cf=1E35;CWCF;CWKCF;CWL;dm=004B 0331;gc=Lu;na=LATIN CAPITAL LETTER K WITH LINE BELOW;NFKC_CF=1E35;NFKC_SCF=1E35;SB=UP;scf=1E35;slc=1E35;Upper
cp;1E35;CWT;CWU;dm=006B 0331;Lower;na=LATIN SMALL LETTER K WITH LINE BELOW;stc=1E34;suc=1E34
-cp;1E36;cf=1E37;CWCF;CWKCF;CWL;dm=004C 0323;gc=Lu;na=LATIN CAPITAL LETTER L WITH DOT BELOW;NFKC_CF=1E37;SB=UP;scf=1E37;slc=1E37;Upper
+cp;1E36;cf=1E37;CWCF;CWKCF;CWL;dm=004C 0323;gc=Lu;na=LATIN CAPITAL LETTER L WITH DOT BELOW;NFKC_CF=1E37;NFKC_SCF=1E37;SB=UP;scf=1E37;slc=1E37;Upper
cp;1E37;CWT;CWU;dm=006C 0323;Lower;na=LATIN SMALL LETTER L WITH DOT BELOW;stc=1E36;suc=1E36
-cp;1E38;cf=1E39;CWCF;CWKCF;CWL;dm=1E36 0304;gc=Lu;na=LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON;NFKC_CF=1E39;SB=UP;scf=1E39;slc=1E39;Upper
+cp;1E38;cf=1E39;CWCF;CWKCF;CWL;dm=1E36 0304;gc=Lu;na=LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON;NFKC_CF=1E39;NFKC_SCF=1E39;SB=UP;scf=1E39;slc=1E39;Upper
cp;1E39;CWT;CWU;dm=1E37 0304;Lower;na=LATIN SMALL LETTER L WITH DOT BELOW AND MACRON;stc=1E38;suc=1E38
-cp;1E3A;cf=1E3B;CWCF;CWKCF;CWL;dm=004C 0331;gc=Lu;na=LATIN CAPITAL LETTER L WITH LINE BELOW;NFKC_CF=1E3B;SB=UP;scf=1E3B;slc=1E3B;Upper
+cp;1E3A;cf=1E3B;CWCF;CWKCF;CWL;dm=004C 0331;gc=Lu;na=LATIN CAPITAL LETTER L WITH LINE BELOW;NFKC_CF=1E3B;NFKC_SCF=1E3B;SB=UP;scf=1E3B;slc=1E3B;Upper
cp;1E3B;CWT;CWU;dm=006C 0331;Lower;na=LATIN SMALL LETTER L WITH LINE BELOW;stc=1E3A;suc=1E3A
-cp;1E3C;cf=1E3D;CWCF;CWKCF;CWL;dm=004C 032D;gc=Lu;na=LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW;NFKC_CF=1E3D;SB=UP;scf=1E3D;slc=1E3D;Upper
+cp;1E3C;cf=1E3D;CWCF;CWKCF;CWL;dm=004C 032D;gc=Lu;na=LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW;NFKC_CF=1E3D;NFKC_SCF=1E3D;SB=UP;scf=1E3D;slc=1E3D;Upper
cp;1E3D;CWT;CWU;dm=006C 032D;Lower;na=LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW;stc=1E3C;suc=1E3C
-cp;1E3E;cf=1E3F;CWCF;CWKCF;CWL;dm=004D 0301;gc=Lu;na=LATIN CAPITAL LETTER M WITH ACUTE;NFKC_CF=1E3F;SB=UP;scf=1E3F;slc=1E3F;Upper
+cp;1E3E;cf=1E3F;CWCF;CWKCF;CWL;dm=004D 0301;gc=Lu;na=LATIN CAPITAL LETTER M WITH ACUTE;NFKC_CF=1E3F;NFKC_SCF=1E3F;SB=UP;scf=1E3F;slc=1E3F;Upper
cp;1E3F;CWT;CWU;dm=006D 0301;Lower;na=LATIN SMALL LETTER M WITH ACUTE;stc=1E3E;suc=1E3E
-cp;1E40;cf=1E41;CWCF;CWKCF;CWL;dm=004D 0307;gc=Lu;na=LATIN CAPITAL LETTER M WITH DOT ABOVE;NFKC_CF=1E41;SB=UP;scf=1E41;slc=1E41;Upper
+cp;1E40;cf=1E41;CWCF;CWKCF;CWL;dm=004D 0307;gc=Lu;na=LATIN CAPITAL LETTER M WITH DOT ABOVE;NFKC_CF=1E41;NFKC_SCF=1E41;SB=UP;scf=1E41;slc=1E41;Upper
cp;1E41;CWT;CWU;dm=006D 0307;Lower;na=LATIN SMALL LETTER M WITH DOT ABOVE;stc=1E40;suc=1E40
-cp;1E42;cf=1E43;CWCF;CWKCF;CWL;dm=004D 0323;gc=Lu;na=LATIN CAPITAL LETTER M WITH DOT BELOW;NFKC_CF=1E43;SB=UP;scf=1E43;slc=1E43;Upper
+cp;1E42;cf=1E43;CWCF;CWKCF;CWL;dm=004D 0323;gc=Lu;na=LATIN CAPITAL LETTER M WITH DOT BELOW;NFKC_CF=1E43;NFKC_SCF=1E43;SB=UP;scf=1E43;slc=1E43;Upper
cp;1E43;CWT;CWU;dm=006D 0323;Lower;na=LATIN SMALL LETTER M WITH DOT BELOW;stc=1E42;suc=1E42
-cp;1E44;cf=1E45;CWCF;CWKCF;CWL;dm=004E 0307;gc=Lu;na=LATIN CAPITAL LETTER N WITH DOT ABOVE;NFKC_CF=1E45;SB=UP;scf=1E45;slc=1E45;Upper
+cp;1E44;cf=1E45;CWCF;CWKCF;CWL;dm=004E 0307;gc=Lu;na=LATIN CAPITAL LETTER N WITH DOT ABOVE;NFKC_CF=1E45;NFKC_SCF=1E45;SB=UP;scf=1E45;slc=1E45;Upper
cp;1E45;CWT;CWU;dm=006E 0307;Lower;na=LATIN SMALL LETTER N WITH DOT ABOVE;stc=1E44;suc=1E44
-cp;1E46;cf=1E47;CWCF;CWKCF;CWL;dm=004E 0323;gc=Lu;na=LATIN CAPITAL LETTER N WITH DOT BELOW;NFKC_CF=1E47;SB=UP;scf=1E47;slc=1E47;Upper
+cp;1E46;cf=1E47;CWCF;CWKCF;CWL;dm=004E 0323;gc=Lu;na=LATIN CAPITAL LETTER N WITH DOT BELOW;NFKC_CF=1E47;NFKC_SCF=1E47;SB=UP;scf=1E47;slc=1E47;Upper
cp;1E47;CWT;CWU;dm=006E 0323;Lower;na=LATIN SMALL LETTER N WITH DOT BELOW;stc=1E46;suc=1E46
-cp;1E48;cf=1E49;CWCF;CWKCF;CWL;dm=004E 0331;gc=Lu;na=LATIN CAPITAL LETTER N WITH LINE BELOW;NFKC_CF=1E49;SB=UP;scf=1E49;slc=1E49;Upper
+cp;1E48;cf=1E49;CWCF;CWKCF;CWL;dm=004E 0331;gc=Lu;na=LATIN CAPITAL LETTER N WITH LINE BELOW;NFKC_CF=1E49;NFKC_SCF=1E49;SB=UP;scf=1E49;slc=1E49;Upper
cp;1E49;CWT;CWU;dm=006E 0331;Lower;na=LATIN SMALL LETTER N WITH LINE BELOW;stc=1E48;suc=1E48
-cp;1E4A;cf=1E4B;CWCF;CWKCF;CWL;dm=004E 032D;gc=Lu;na=LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW;NFKC_CF=1E4B;SB=UP;scf=1E4B;slc=1E4B;Upper
+cp;1E4A;cf=1E4B;CWCF;CWKCF;CWL;dm=004E 032D;gc=Lu;na=LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW;NFKC_CF=1E4B;NFKC_SCF=1E4B;SB=UP;scf=1E4B;slc=1E4B;Upper
cp;1E4B;CWT;CWU;dm=006E 032D;Lower;na=LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW;stc=1E4A;suc=1E4A
-cp;1E4C;cf=1E4D;CWCF;CWKCF;CWL;dm=00D5 0301;gc=Lu;na=LATIN CAPITAL LETTER O WITH TILDE AND ACUTE;NFKC_CF=1E4D;SB=UP;scf=1E4D;slc=1E4D;Upper
+cp;1E4C;cf=1E4D;CWCF;CWKCF;CWL;dm=00D5 0301;gc=Lu;na=LATIN CAPITAL LETTER O WITH TILDE AND ACUTE;NFKC_CF=1E4D;NFKC_SCF=1E4D;SB=UP;scf=1E4D;slc=1E4D;Upper
cp;1E4D;CWT;CWU;dm=00F5 0301;Lower;na=LATIN SMALL LETTER O WITH TILDE AND ACUTE;stc=1E4C;suc=1E4C
-cp;1E4E;cf=1E4F;CWCF;CWKCF;CWL;dm=00D5 0308;gc=Lu;na=LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS;NFKC_CF=1E4F;SB=UP;scf=1E4F;slc=1E4F;Upper
+cp;1E4E;cf=1E4F;CWCF;CWKCF;CWL;dm=00D5 0308;gc=Lu;na=LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS;NFKC_CF=1E4F;NFKC_SCF=1E4F;SB=UP;scf=1E4F;slc=1E4F;Upper
cp;1E4F;CWT;CWU;dm=00F5 0308;Lower;na=LATIN SMALL LETTER O WITH TILDE AND DIAERESIS;stc=1E4E;suc=1E4E
-cp;1E50;cf=1E51;CWCF;CWKCF;CWL;dm=014C 0300;gc=Lu;na=LATIN CAPITAL LETTER O WITH MACRON AND GRAVE;NFKC_CF=1E51;SB=UP;scf=1E51;slc=1E51;Upper
+cp;1E50;cf=1E51;CWCF;CWKCF;CWL;dm=014C 0300;gc=Lu;na=LATIN CAPITAL LETTER O WITH MACRON AND GRAVE;NFKC_CF=1E51;NFKC_SCF=1E51;SB=UP;scf=1E51;slc=1E51;Upper
cp;1E51;CWT;CWU;dm=014D 0300;Lower;na=LATIN SMALL LETTER O WITH MACRON AND GRAVE;stc=1E50;suc=1E50
-cp;1E52;cf=1E53;CWCF;CWKCF;CWL;dm=014C 0301;gc=Lu;na=LATIN CAPITAL LETTER O WITH MACRON AND ACUTE;NFKC_CF=1E53;SB=UP;scf=1E53;slc=1E53;Upper
+cp;1E52;cf=1E53;CWCF;CWKCF;CWL;dm=014C 0301;gc=Lu;na=LATIN CAPITAL LETTER O WITH MACRON AND ACUTE;NFKC_CF=1E53;NFKC_SCF=1E53;SB=UP;scf=1E53;slc=1E53;Upper
cp;1E53;CWT;CWU;dm=014D 0301;Lower;na=LATIN SMALL LETTER O WITH MACRON AND ACUTE;stc=1E52;suc=1E52
-cp;1E54;cf=1E55;CWCF;CWKCF;CWL;dm=0050 0301;gc=Lu;na=LATIN CAPITAL LETTER P WITH ACUTE;NFKC_CF=1E55;SB=UP;scf=1E55;slc=1E55;Upper
+cp;1E54;cf=1E55;CWCF;CWKCF;CWL;dm=0050 0301;gc=Lu;na=LATIN CAPITAL LETTER P WITH ACUTE;NFKC_CF=1E55;NFKC_SCF=1E55;SB=UP;scf=1E55;slc=1E55;Upper
cp;1E55;CWT;CWU;dm=0070 0301;Lower;na=LATIN SMALL LETTER P WITH ACUTE;stc=1E54;suc=1E54
-cp;1E56;cf=1E57;CWCF;CWKCF;CWL;dm=0050 0307;gc=Lu;na=LATIN CAPITAL LETTER P WITH DOT ABOVE;NFKC_CF=1E57;SB=UP;scf=1E57;slc=1E57;Upper
+cp;1E56;cf=1E57;CWCF;CWKCF;CWL;dm=0050 0307;gc=Lu;na=LATIN CAPITAL LETTER P WITH DOT ABOVE;NFKC_CF=1E57;NFKC_SCF=1E57;SB=UP;scf=1E57;slc=1E57;Upper
cp;1E57;CWT;CWU;dm=0070 0307;Lower;na=LATIN SMALL LETTER P WITH DOT ABOVE;stc=1E56;suc=1E56
-cp;1E58;cf=1E59;CWCF;CWKCF;CWL;dm=0052 0307;gc=Lu;na=LATIN CAPITAL LETTER R WITH DOT ABOVE;NFKC_CF=1E59;SB=UP;scf=1E59;slc=1E59;Upper
+cp;1E58;cf=1E59;CWCF;CWKCF;CWL;dm=0052 0307;gc=Lu;na=LATIN CAPITAL LETTER R WITH DOT ABOVE;NFKC_CF=1E59;NFKC_SCF=1E59;SB=UP;scf=1E59;slc=1E59;Upper
cp;1E59;CWT;CWU;dm=0072 0307;Lower;na=LATIN SMALL LETTER R WITH DOT ABOVE;stc=1E58;suc=1E58
-cp;1E5A;cf=1E5B;CWCF;CWKCF;CWL;dm=0052 0323;gc=Lu;na=LATIN CAPITAL LETTER R WITH DOT BELOW;NFKC_CF=1E5B;SB=UP;scf=1E5B;slc=1E5B;Upper
+cp;1E5A;cf=1E5B;CWCF;CWKCF;CWL;dm=0052 0323;gc=Lu;na=LATIN CAPITAL LETTER R WITH DOT BELOW;NFKC_CF=1E5B;NFKC_SCF=1E5B;SB=UP;scf=1E5B;slc=1E5B;Upper
cp;1E5B;CWT;CWU;dm=0072 0323;Lower;na=LATIN SMALL LETTER R WITH DOT BELOW;stc=1E5A;suc=1E5A
-cp;1E5C;cf=1E5D;CWCF;CWKCF;CWL;dm=1E5A 0304;gc=Lu;na=LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON;NFKC_CF=1E5D;SB=UP;scf=1E5D;slc=1E5D;Upper
+cp;1E5C;cf=1E5D;CWCF;CWKCF;CWL;dm=1E5A 0304;gc=Lu;na=LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON;NFKC_CF=1E5D;NFKC_SCF=1E5D;SB=UP;scf=1E5D;slc=1E5D;Upper
cp;1E5D;CWT;CWU;dm=1E5B 0304;Lower;na=LATIN SMALL LETTER R WITH DOT BELOW AND MACRON;stc=1E5C;suc=1E5C
-cp;1E5E;cf=1E5F;CWCF;CWKCF;CWL;dm=0052 0331;gc=Lu;na=LATIN CAPITAL LETTER R WITH LINE BELOW;NFKC_CF=1E5F;SB=UP;scf=1E5F;slc=1E5F;Upper
+cp;1E5E;cf=1E5F;CWCF;CWKCF;CWL;dm=0052 0331;gc=Lu;na=LATIN CAPITAL LETTER R WITH LINE BELOW;NFKC_CF=1E5F;NFKC_SCF=1E5F;SB=UP;scf=1E5F;slc=1E5F;Upper
cp;1E5F;CWT;CWU;dm=0072 0331;Lower;na=LATIN SMALL LETTER R WITH LINE BELOW;stc=1E5E;suc=1E5E
-cp;1E60;cf=1E61;CWCF;CWKCF;CWL;dm=0053 0307;gc=Lu;na=LATIN CAPITAL LETTER S WITH DOT ABOVE;NFKC_CF=1E61;SB=UP;scf=1E61;slc=1E61;Upper
+cp;1E60;cf=1E61;CWCF;CWKCF;CWL;dm=0053 0307;gc=Lu;na=LATIN CAPITAL LETTER S WITH DOT ABOVE;NFKC_CF=1E61;NFKC_SCF=1E61;SB=UP;scf=1E61;slc=1E61;Upper
cp;1E61;CWT;CWU;dm=0073 0307;Lower;na=LATIN SMALL LETTER S WITH DOT ABOVE;stc=1E60;suc=1E60
-cp;1E62;cf=1E63;CWCF;CWKCF;CWL;dm=0053 0323;gc=Lu;na=LATIN CAPITAL LETTER S WITH DOT BELOW;NFKC_CF=1E63;SB=UP;scf=1E63;slc=1E63;Upper
+cp;1E62;cf=1E63;CWCF;CWKCF;CWL;dm=0053 0323;gc=Lu;na=LATIN CAPITAL LETTER S WITH DOT BELOW;NFKC_CF=1E63;NFKC_SCF=1E63;SB=UP;scf=1E63;slc=1E63;Upper
cp;1E63;CWT;CWU;dm=0073 0323;Lower;na=LATIN SMALL LETTER S WITH DOT BELOW;stc=1E62;suc=1E62
-cp;1E64;cf=1E65;CWCF;CWKCF;CWL;dm=015A 0307;gc=Lu;na=LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE;NFKC_CF=1E65;SB=UP;scf=1E65;slc=1E65;Upper
+cp;1E64;cf=1E65;CWCF;CWKCF;CWL;dm=015A 0307;gc=Lu;na=LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE;NFKC_CF=1E65;NFKC_SCF=1E65;SB=UP;scf=1E65;slc=1E65;Upper
cp;1E65;CWT;CWU;dm=015B 0307;Lower;na=LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE;stc=1E64;suc=1E64
-cp;1E66;cf=1E67;CWCF;CWKCF;CWL;dm=0160 0307;gc=Lu;na=LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE;NFKC_CF=1E67;SB=UP;scf=1E67;slc=1E67;Upper
+cp;1E66;cf=1E67;CWCF;CWKCF;CWL;dm=0160 0307;gc=Lu;na=LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE;NFKC_CF=1E67;NFKC_SCF=1E67;SB=UP;scf=1E67;slc=1E67;Upper
cp;1E67;CWT;CWU;dm=0161 0307;Lower;na=LATIN SMALL LETTER S WITH CARON AND DOT ABOVE;stc=1E66;suc=1E66
-cp;1E68;cf=1E69;CWCF;CWKCF;CWL;dm=1E62 0307;gc=Lu;na=LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE;NFKC_CF=1E69;SB=UP;scf=1E69;slc=1E69;Upper
+cp;1E68;cf=1E69;CWCF;CWKCF;CWL;dm=1E62 0307;gc=Lu;na=LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE;NFKC_CF=1E69;NFKC_SCF=1E69;SB=UP;scf=1E69;slc=1E69;Upper
cp;1E69;CWT;CWU;dm=1E63 0307;Lower;na=LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE;stc=1E68;suc=1E68
-cp;1E6A;cf=1E6B;CWCF;CWKCF;CWL;dm=0054 0307;gc=Lu;na=LATIN CAPITAL LETTER T WITH DOT ABOVE;NFKC_CF=1E6B;SB=UP;scf=1E6B;slc=1E6B;Upper
+cp;1E6A;cf=1E6B;CWCF;CWKCF;CWL;dm=0054 0307;gc=Lu;na=LATIN CAPITAL LETTER T WITH DOT ABOVE;NFKC_CF=1E6B;NFKC_SCF=1E6B;SB=UP;scf=1E6B;slc=1E6B;Upper
cp;1E6B;CWT;CWU;dm=0074 0307;Lower;na=LATIN SMALL LETTER T WITH DOT ABOVE;stc=1E6A;suc=1E6A
-cp;1E6C;cf=1E6D;CWCF;CWKCF;CWL;dm=0054 0323;gc=Lu;na=LATIN CAPITAL LETTER T WITH DOT BELOW;NFKC_CF=1E6D;SB=UP;scf=1E6D;slc=1E6D;Upper
+cp;1E6C;cf=1E6D;CWCF;CWKCF;CWL;dm=0054 0323;gc=Lu;na=LATIN CAPITAL LETTER T WITH DOT BELOW;NFKC_CF=1E6D;NFKC_SCF=1E6D;SB=UP;scf=1E6D;slc=1E6D;Upper
cp;1E6D;CWT;CWU;dm=0074 0323;Lower;na=LATIN SMALL LETTER T WITH DOT BELOW;stc=1E6C;suc=1E6C
-cp;1E6E;cf=1E6F;CWCF;CWKCF;CWL;dm=0054 0331;gc=Lu;na=LATIN CAPITAL LETTER T WITH LINE BELOW;NFKC_CF=1E6F;SB=UP;scf=1E6F;slc=1E6F;Upper
+cp;1E6E;cf=1E6F;CWCF;CWKCF;CWL;dm=0054 0331;gc=Lu;na=LATIN CAPITAL LETTER T WITH LINE BELOW;NFKC_CF=1E6F;NFKC_SCF=1E6F;SB=UP;scf=1E6F;slc=1E6F;Upper
cp;1E6F;CWT;CWU;dm=0074 0331;Lower;na=LATIN SMALL LETTER T WITH LINE BELOW;stc=1E6E;suc=1E6E
-cp;1E70;cf=1E71;CWCF;CWKCF;CWL;dm=0054 032D;gc=Lu;na=LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW;NFKC_CF=1E71;SB=UP;scf=1E71;slc=1E71;Upper
+cp;1E70;cf=1E71;CWCF;CWKCF;CWL;dm=0054 032D;gc=Lu;na=LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW;NFKC_CF=1E71;NFKC_SCF=1E71;SB=UP;scf=1E71;slc=1E71;Upper
cp;1E71;CWT;CWU;dm=0074 032D;Lower;na=LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW;stc=1E70;suc=1E70
-cp;1E72;cf=1E73;CWCF;CWKCF;CWL;dm=0055 0324;gc=Lu;na=LATIN CAPITAL LETTER U WITH DIAERESIS BELOW;NFKC_CF=1E73;SB=UP;scf=1E73;slc=1E73;Upper
+cp;1E72;cf=1E73;CWCF;CWKCF;CWL;dm=0055 0324;gc=Lu;na=LATIN CAPITAL LETTER U WITH DIAERESIS BELOW;NFKC_CF=1E73;NFKC_SCF=1E73;SB=UP;scf=1E73;slc=1E73;Upper
cp;1E73;CWT;CWU;dm=0075 0324;Lower;na=LATIN SMALL LETTER U WITH DIAERESIS BELOW;stc=1E72;suc=1E72
-cp;1E74;cf=1E75;CWCF;CWKCF;CWL;dm=0055 0330;gc=Lu;na=LATIN CAPITAL LETTER U WITH TILDE BELOW;NFKC_CF=1E75;SB=UP;scf=1E75;slc=1E75;Upper
+cp;1E74;cf=1E75;CWCF;CWKCF;CWL;dm=0055 0330;gc=Lu;na=LATIN CAPITAL LETTER U WITH TILDE BELOW;NFKC_CF=1E75;NFKC_SCF=1E75;SB=UP;scf=1E75;slc=1E75;Upper
cp;1E75;CWT;CWU;dm=0075 0330;Lower;na=LATIN SMALL LETTER U WITH TILDE BELOW;stc=1E74;suc=1E74
-cp;1E76;cf=1E77;CWCF;CWKCF;CWL;dm=0055 032D;gc=Lu;na=LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW;NFKC_CF=1E77;SB=UP;scf=1E77;slc=1E77;Upper
+cp;1E76;cf=1E77;CWCF;CWKCF;CWL;dm=0055 032D;gc=Lu;na=LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW;NFKC_CF=1E77;NFKC_SCF=1E77;SB=UP;scf=1E77;slc=1E77;Upper
cp;1E77;CWT;CWU;dm=0075 032D;Lower;na=LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW;stc=1E76;suc=1E76
-cp;1E78;cf=1E79;CWCF;CWKCF;CWL;dm=0168 0301;gc=Lu;na=LATIN CAPITAL LETTER U WITH TILDE AND ACUTE;NFKC_CF=1E79;SB=UP;scf=1E79;slc=1E79;Upper
+cp;1E78;cf=1E79;CWCF;CWKCF;CWL;dm=0168 0301;gc=Lu;na=LATIN CAPITAL LETTER U WITH TILDE AND ACUTE;NFKC_CF=1E79;NFKC_SCF=1E79;SB=UP;scf=1E79;slc=1E79;Upper
cp;1E79;CWT;CWU;dm=0169 0301;Lower;na=LATIN SMALL LETTER U WITH TILDE AND ACUTE;stc=1E78;suc=1E78
-cp;1E7A;cf=1E7B;CWCF;CWKCF;CWL;dm=016A 0308;gc=Lu;na=LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS;NFKC_CF=1E7B;SB=UP;scf=1E7B;slc=1E7B;Upper
+cp;1E7A;cf=1E7B;CWCF;CWKCF;CWL;dm=016A 0308;gc=Lu;na=LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS;NFKC_CF=1E7B;NFKC_SCF=1E7B;SB=UP;scf=1E7B;slc=1E7B;Upper
cp;1E7B;CWT;CWU;dm=016B 0308;Lower;na=LATIN SMALL LETTER U WITH MACRON AND DIAERESIS;stc=1E7A;suc=1E7A
-cp;1E7C;cf=1E7D;CWCF;CWKCF;CWL;dm=0056 0303;gc=Lu;na=LATIN CAPITAL LETTER V WITH TILDE;NFKC_CF=1E7D;SB=UP;scf=1E7D;slc=1E7D;Upper
+cp;1E7C;cf=1E7D;CWCF;CWKCF;CWL;dm=0056 0303;gc=Lu;na=LATIN CAPITAL LETTER V WITH TILDE;NFKC_CF=1E7D;NFKC_SCF=1E7D;SB=UP;scf=1E7D;slc=1E7D;Upper
cp;1E7D;CWT;CWU;dm=0076 0303;Lower;na=LATIN SMALL LETTER V WITH TILDE;stc=1E7C;suc=1E7C
-cp;1E7E;cf=1E7F;CWCF;CWKCF;CWL;dm=0056 0323;gc=Lu;na=LATIN CAPITAL LETTER V WITH DOT BELOW;NFKC_CF=1E7F;SB=UP;scf=1E7F;slc=1E7F;Upper
+cp;1E7E;cf=1E7F;CWCF;CWKCF;CWL;dm=0056 0323;gc=Lu;na=LATIN CAPITAL LETTER V WITH DOT BELOW;NFKC_CF=1E7F;NFKC_SCF=1E7F;SB=UP;scf=1E7F;slc=1E7F;Upper
cp;1E7F;CWT;CWU;dm=0076 0323;Lower;na=LATIN SMALL LETTER V WITH DOT BELOW;stc=1E7E;suc=1E7E
-cp;1E80;cf=1E81;CWCF;CWKCF;CWL;dm=0057 0300;gc=Lu;na=LATIN CAPITAL LETTER W WITH GRAVE;NFKC_CF=1E81;SB=UP;scf=1E81;slc=1E81;Upper
+cp;1E80;cf=1E81;CWCF;CWKCF;CWL;dm=0057 0300;gc=Lu;na=LATIN CAPITAL LETTER W WITH GRAVE;NFKC_CF=1E81;NFKC_SCF=1E81;SB=UP;scf=1E81;slc=1E81;Upper
cp;1E81;CWT;CWU;dm=0077 0300;Lower;na=LATIN SMALL LETTER W WITH GRAVE;stc=1E80;suc=1E80
-cp;1E82;cf=1E83;CWCF;CWKCF;CWL;dm=0057 0301;gc=Lu;na=LATIN CAPITAL LETTER W WITH ACUTE;NFKC_CF=1E83;SB=UP;scf=1E83;slc=1E83;Upper
+cp;1E82;cf=1E83;CWCF;CWKCF;CWL;dm=0057 0301;gc=Lu;na=LATIN CAPITAL LETTER W WITH ACUTE;NFKC_CF=1E83;NFKC_SCF=1E83;SB=UP;scf=1E83;slc=1E83;Upper
cp;1E83;CWT;CWU;dm=0077 0301;Lower;na=LATIN SMALL LETTER W WITH ACUTE;stc=1E82;suc=1E82
-cp;1E84;cf=1E85;CWCF;CWKCF;CWL;dm=0057 0308;gc=Lu;na=LATIN CAPITAL LETTER W WITH DIAERESIS;NFKC_CF=1E85;SB=UP;scf=1E85;slc=1E85;Upper
+cp;1E84;cf=1E85;CWCF;CWKCF;CWL;dm=0057 0308;gc=Lu;na=LATIN CAPITAL LETTER W WITH DIAERESIS;NFKC_CF=1E85;NFKC_SCF=1E85;SB=UP;scf=1E85;slc=1E85;Upper
cp;1E85;CWT;CWU;dm=0077 0308;Lower;na=LATIN SMALL LETTER W WITH DIAERESIS;stc=1E84;suc=1E84
-cp;1E86;cf=1E87;CWCF;CWKCF;CWL;dm=0057 0307;gc=Lu;na=LATIN CAPITAL LETTER W WITH DOT ABOVE;NFKC_CF=1E87;SB=UP;scf=1E87;slc=1E87;Upper
+cp;1E86;cf=1E87;CWCF;CWKCF;CWL;dm=0057 0307;gc=Lu;na=LATIN CAPITAL LETTER W WITH DOT ABOVE;NFKC_CF=1E87;NFKC_SCF=1E87;SB=UP;scf=1E87;slc=1E87;Upper
cp;1E87;CWT;CWU;dm=0077 0307;Lower;na=LATIN SMALL LETTER W WITH DOT ABOVE;stc=1E86;suc=1E86
-cp;1E88;cf=1E89;CWCF;CWKCF;CWL;dm=0057 0323;gc=Lu;na=LATIN CAPITAL LETTER W WITH DOT BELOW;NFKC_CF=1E89;SB=UP;scf=1E89;slc=1E89;Upper
+cp;1E88;cf=1E89;CWCF;CWKCF;CWL;dm=0057 0323;gc=Lu;na=LATIN CAPITAL LETTER W WITH DOT BELOW;NFKC_CF=1E89;NFKC_SCF=1E89;SB=UP;scf=1E89;slc=1E89;Upper
cp;1E89;CWT;CWU;dm=0077 0323;Lower;na=LATIN SMALL LETTER W WITH DOT BELOW;stc=1E88;suc=1E88
-cp;1E8A;cf=1E8B;CWCF;CWKCF;CWL;dm=0058 0307;gc=Lu;na=LATIN CAPITAL LETTER X WITH DOT ABOVE;NFKC_CF=1E8B;SB=UP;scf=1E8B;slc=1E8B;Upper
+cp;1E8A;cf=1E8B;CWCF;CWKCF;CWL;dm=0058 0307;gc=Lu;na=LATIN CAPITAL LETTER X WITH DOT ABOVE;NFKC_CF=1E8B;NFKC_SCF=1E8B;SB=UP;scf=1E8B;slc=1E8B;Upper
cp;1E8B;CWT;CWU;dm=0078 0307;Lower;na=LATIN SMALL LETTER X WITH DOT ABOVE;stc=1E8A;suc=1E8A
-cp;1E8C;cf=1E8D;CWCF;CWKCF;CWL;dm=0058 0308;gc=Lu;na=LATIN CAPITAL LETTER X WITH DIAERESIS;NFKC_CF=1E8D;SB=UP;scf=1E8D;slc=1E8D;Upper
+cp;1E8C;cf=1E8D;CWCF;CWKCF;CWL;dm=0058 0308;gc=Lu;na=LATIN CAPITAL LETTER X WITH DIAERESIS;NFKC_CF=1E8D;NFKC_SCF=1E8D;SB=UP;scf=1E8D;slc=1E8D;Upper
cp;1E8D;CWT;CWU;dm=0078 0308;Lower;na=LATIN SMALL LETTER X WITH DIAERESIS;stc=1E8C;suc=1E8C
-cp;1E8E;cf=1E8F;CWCF;CWKCF;CWL;dm=0059 0307;gc=Lu;na=LATIN CAPITAL LETTER Y WITH DOT ABOVE;NFKC_CF=1E8F;SB=UP;scf=1E8F;slc=1E8F;Upper
+cp;1E8E;cf=1E8F;CWCF;CWKCF;CWL;dm=0059 0307;gc=Lu;na=LATIN CAPITAL LETTER Y WITH DOT ABOVE;NFKC_CF=1E8F;NFKC_SCF=1E8F;SB=UP;scf=1E8F;slc=1E8F;Upper
cp;1E8F;CWT;CWU;dm=0079 0307;Lower;na=LATIN SMALL LETTER Y WITH DOT ABOVE;stc=1E8E;suc=1E8E
-cp;1E90;cf=1E91;CWCF;CWKCF;CWL;dm=005A 0302;gc=Lu;na=LATIN CAPITAL LETTER Z WITH CIRCUMFLEX;NFKC_CF=1E91;SB=UP;scf=1E91;slc=1E91;Upper
+cp;1E90;cf=1E91;CWCF;CWKCF;CWL;dm=005A 0302;gc=Lu;na=LATIN CAPITAL LETTER Z WITH CIRCUMFLEX;NFKC_CF=1E91;NFKC_SCF=1E91;SB=UP;scf=1E91;slc=1E91;Upper
cp;1E91;CWT;CWU;dm=007A 0302;Lower;na=LATIN SMALL LETTER Z WITH CIRCUMFLEX;stc=1E90;suc=1E90
-cp;1E92;cf=1E93;CWCF;CWKCF;CWL;dm=005A 0323;gc=Lu;na=LATIN CAPITAL LETTER Z WITH DOT BELOW;NFKC_CF=1E93;SB=UP;scf=1E93;slc=1E93;Upper
+cp;1E92;cf=1E93;CWCF;CWKCF;CWL;dm=005A 0323;gc=Lu;na=LATIN CAPITAL LETTER Z WITH DOT BELOW;NFKC_CF=1E93;NFKC_SCF=1E93;SB=UP;scf=1E93;slc=1E93;Upper
cp;1E93;CWT;CWU;dm=007A 0323;Lower;na=LATIN SMALL LETTER Z WITH DOT BELOW;stc=1E92;suc=1E92
-cp;1E94;cf=1E95;CWCF;CWKCF;CWL;dm=005A 0331;gc=Lu;na=LATIN CAPITAL LETTER Z WITH LINE BELOW;NFKC_CF=1E95;SB=UP;scf=1E95;slc=1E95;Upper
+cp;1E94;cf=1E95;CWCF;CWKCF;CWL;dm=005A 0331;gc=Lu;na=LATIN CAPITAL LETTER Z WITH LINE BELOW;NFKC_CF=1E95;NFKC_SCF=1E95;SB=UP;scf=1E95;slc=1E95;Upper
cp;1E95;CWT;CWU;dm=007A 0331;Lower;na=LATIN SMALL LETTER Z WITH LINE BELOW;stc=1E94;suc=1E94
cp;1E96;cf=0068 0331;CWT;CWU;dm=0068 0331;lc=1E96;Lower;na=LATIN SMALL LETTER H WITH LINE BELOW;tc=0048 0331;uc=0048 0331
cp;1E97;cf=0074 0308;CWT;CWU;dm=0074 0308;lc=1E97;Lower;na=LATIN SMALL LETTER T WITH DIAERESIS;tc=0054 0308;uc=0054 0308
cp;1E98;cf=0077 030A;CWT;CWU;dm=0077 030A;lc=1E98;Lower;na=LATIN SMALL LETTER W WITH RING ABOVE;tc=0057 030A;uc=0057 030A
cp;1E99;cf=0079 030A;CWT;CWU;dm=0079 030A;lc=1E99;Lower;na=LATIN SMALL LETTER Y WITH RING ABOVE;tc=0059 030A;uc=0059 030A
-cp;1E9A;cf=0061 02BE;CWCF;CWKCF;CWT;CWU;dm=0061 02BE;dt=Com;lc=1E9A;Lower;na=LATIN SMALL LETTER A WITH RIGHT HALF RING;NFD_QC=Y;NFKC_CF=0061 02BE;NFKC_QC=N;tc=0041 02BE;uc=0041 02BE
-cp;1E9B;age=2.0;cf=1E61;CWCF;CWKCF;CWT;CWU;dm=017F 0307;Lower;na=LATIN SMALL LETTER LONG S WITH DOT ABOVE;NFKC_CF=1E61;NFKC_QC=N;scf=1E61;stc=1E60;suc=1E60
+cp;1E9A;cf=0061 02BE;CWCF;CWKCF;CWT;CWU;dm=0061 02BE;dt=Com;lc=1E9A;Lower;na=LATIN SMALL LETTER A WITH RIGHT HALF RING;NFD_QC=Y;NFKC_CF=0061 02BE;NFKC_QC=N;NFKC_SCF=0061 02BE;tc=0041 02BE;uc=0041 02BE
+cp;1E9B;age=2.0;cf=1E61;CWCF;CWKCF;CWT;CWU;dm=017F 0307;Lower;na=LATIN SMALL LETTER LONG S WITH DOT ABOVE;NFKC_CF=1E61;NFKC_QC=N;NFKC_SCF=1E61;scf=1E61;stc=1E60;suc=1E60
# Medievalist additions
cp;1E9C;age=5.1;-CWCM;dt=None;Lower;na=LATIN SMALL LETTER LONG S WITH DIAGONAL STROKE;NFD_QC=Y;NFKD_QC=Y
cp;1E9D;age=5.1;-CWCM;dt=None;Lower;na=LATIN SMALL LETTER LONG S WITH HIGH STROKE;NFD_QC=Y;NFKD_QC=Y
# Addition for German typography
-cp;1E9E;age=5.1;cf=0073 0073;CWCF;CWKCF;CWL;dt=None;gc=Lu;na=LATIN CAPITAL LETTER SHARP S;NFD_QC=Y;NFKC_CF=0073 0073;NFKD_QC=Y;SB=UP;scf=00DF;slc=00DF;Upper
+cp;1E9E;age=5.1;cf=0073 0073;CWCF;CWKCF;CWL;dt=None;gc=Lu;na=LATIN CAPITAL LETTER SHARP S;NFD_QC=Y;NFKC_CF=0073 0073;NFKC_SCF=00DF;NFKD_QC=Y;SB=UP;scf=00DF;slc=00DF;Upper
# Medievalist addition
cp;1E9F;age=5.1;-CWCM;dt=None;Lower;na=LATIN SMALL LETTER DELTA;NFD_QC=Y;NFKD_QC=Y
# Latin extensions for Vietnamese
-cp;1EA0;cf=1EA1;CWCF;CWKCF;CWL;dm=0041 0323;gc=Lu;na=LATIN CAPITAL LETTER A WITH DOT BELOW;NFKC_CF=1EA1;SB=UP;scf=1EA1;slc=1EA1;Upper
+cp;1EA0;cf=1EA1;CWCF;CWKCF;CWL;dm=0041 0323;gc=Lu;na=LATIN CAPITAL LETTER A WITH DOT BELOW;NFKC_CF=1EA1;NFKC_SCF=1EA1;SB=UP;scf=1EA1;slc=1EA1;Upper
cp;1EA1;CWT;CWU;dm=0061 0323;Lower;na=LATIN SMALL LETTER A WITH DOT BELOW;stc=1EA0;suc=1EA0
-cp;1EA2;cf=1EA3;CWCF;CWKCF;CWL;dm=0041 0309;gc=Lu;na=LATIN CAPITAL LETTER A WITH HOOK ABOVE;NFKC_CF=1EA3;SB=UP;scf=1EA3;slc=1EA3;Upper
+cp;1EA2;cf=1EA3;CWCF;CWKCF;CWL;dm=0041 0309;gc=Lu;na=LATIN CAPITAL LETTER A WITH HOOK ABOVE;NFKC_CF=1EA3;NFKC_SCF=1EA3;SB=UP;scf=1EA3;slc=1EA3;Upper
cp;1EA3;CWT;CWU;dm=0061 0309;Lower;na=LATIN SMALL LETTER A WITH HOOK ABOVE;stc=1EA2;suc=1EA2
-cp;1EA4;cf=1EA5;CWCF;CWKCF;CWL;dm=00C2 0301;gc=Lu;na=LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE;NFKC_CF=1EA5;SB=UP;scf=1EA5;slc=1EA5;Upper
+cp;1EA4;cf=1EA5;CWCF;CWKCF;CWL;dm=00C2 0301;gc=Lu;na=LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE;NFKC_CF=1EA5;NFKC_SCF=1EA5;SB=UP;scf=1EA5;slc=1EA5;Upper
cp;1EA5;CWT;CWU;dm=00E2 0301;Lower;na=LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE;stc=1EA4;suc=1EA4
-cp;1EA6;cf=1EA7;CWCF;CWKCF;CWL;dm=00C2 0300;gc=Lu;na=LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE;NFKC_CF=1EA7;SB=UP;scf=1EA7;slc=1EA7;Upper
+cp;1EA6;cf=1EA7;CWCF;CWKCF;CWL;dm=00C2 0300;gc=Lu;na=LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE;NFKC_CF=1EA7;NFKC_SCF=1EA7;SB=UP;scf=1EA7;slc=1EA7;Upper
cp;1EA7;CWT;CWU;dm=00E2 0300;Lower;na=LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE;stc=1EA6;suc=1EA6
-cp;1EA8;cf=1EA9;CWCF;CWKCF;CWL;dm=00C2 0309;gc=Lu;na=LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;NFKC_CF=1EA9;SB=UP;scf=1EA9;slc=1EA9;Upper
+cp;1EA8;cf=1EA9;CWCF;CWKCF;CWL;dm=00C2 0309;gc=Lu;na=LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;NFKC_CF=1EA9;NFKC_SCF=1EA9;SB=UP;scf=1EA9;slc=1EA9;Upper
cp;1EA9;CWT;CWU;dm=00E2 0309;Lower;na=LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;stc=1EA8;suc=1EA8
-cp;1EAA;cf=1EAB;CWCF;CWKCF;CWL;dm=00C2 0303;gc=Lu;na=LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE;NFKC_CF=1EAB;SB=UP;scf=1EAB;slc=1EAB;Upper
+cp;1EAA;cf=1EAB;CWCF;CWKCF;CWL;dm=00C2 0303;gc=Lu;na=LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE;NFKC_CF=1EAB;NFKC_SCF=1EAB;SB=UP;scf=1EAB;slc=1EAB;Upper
cp;1EAB;CWT;CWU;dm=00E2 0303;Lower;na=LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE;stc=1EAA;suc=1EAA
-cp;1EAC;cf=1EAD;CWCF;CWKCF;CWL;dm=1EA0 0302;gc=Lu;na=LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW;NFKC_CF=1EAD;SB=UP;scf=1EAD;slc=1EAD;Upper
+cp;1EAC;cf=1EAD;CWCF;CWKCF;CWL;dm=1EA0 0302;gc=Lu;na=LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW;NFKC_CF=1EAD;NFKC_SCF=1EAD;SB=UP;scf=1EAD;slc=1EAD;Upper
cp;1EAD;CWT;CWU;dm=1EA1 0302;Lower;na=LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW;stc=1EAC;suc=1EAC
-cp;1EAE;cf=1EAF;CWCF;CWKCF;CWL;dm=0102 0301;gc=Lu;na=LATIN CAPITAL LETTER A WITH BREVE AND ACUTE;NFKC_CF=1EAF;SB=UP;scf=1EAF;slc=1EAF;Upper
+cp;1EAE;cf=1EAF;CWCF;CWKCF;CWL;dm=0102 0301;gc=Lu;na=LATIN CAPITAL LETTER A WITH BREVE AND ACUTE;NFKC_CF=1EAF;NFKC_SCF=1EAF;SB=UP;scf=1EAF;slc=1EAF;Upper
cp;1EAF;CWT;CWU;dm=0103 0301;Lower;na=LATIN SMALL LETTER A WITH BREVE AND ACUTE;stc=1EAE;suc=1EAE
-cp;1EB0;cf=1EB1;CWCF;CWKCF;CWL;dm=0102 0300;gc=Lu;na=LATIN CAPITAL LETTER A WITH BREVE AND GRAVE;NFKC_CF=1EB1;SB=UP;scf=1EB1;slc=1EB1;Upper
+cp;1EB0;cf=1EB1;CWCF;CWKCF;CWL;dm=0102 0300;gc=Lu;na=LATIN CAPITAL LETTER A WITH BREVE AND GRAVE;NFKC_CF=1EB1;NFKC_SCF=1EB1;SB=UP;scf=1EB1;slc=1EB1;Upper
cp;1EB1;CWT;CWU;dm=0103 0300;Lower;na=LATIN SMALL LETTER A WITH BREVE AND GRAVE;stc=1EB0;suc=1EB0
-cp;1EB2;cf=1EB3;CWCF;CWKCF;CWL;dm=0102 0309;gc=Lu;na=LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE;NFKC_CF=1EB3;SB=UP;scf=1EB3;slc=1EB3;Upper
+cp;1EB2;cf=1EB3;CWCF;CWKCF;CWL;dm=0102 0309;gc=Lu;na=LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE;NFKC_CF=1EB3;NFKC_SCF=1EB3;SB=UP;scf=1EB3;slc=1EB3;Upper
cp;1EB3;CWT;CWU;dm=0103 0309;Lower;na=LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE;stc=1EB2;suc=1EB2
-cp;1EB4;cf=1EB5;CWCF;CWKCF;CWL;dm=0102 0303;gc=Lu;na=LATIN CAPITAL LETTER A WITH BREVE AND TILDE;NFKC_CF=1EB5;SB=UP;scf=1EB5;slc=1EB5;Upper
+cp;1EB4;cf=1EB5;CWCF;CWKCF;CWL;dm=0102 0303;gc=Lu;na=LATIN CAPITAL LETTER A WITH BREVE AND TILDE;NFKC_CF=1EB5;NFKC_SCF=1EB5;SB=UP;scf=1EB5;slc=1EB5;Upper
cp;1EB5;CWT;CWU;dm=0103 0303;Lower;na=LATIN SMALL LETTER A WITH BREVE AND TILDE;stc=1EB4;suc=1EB4
-cp;1EB6;cf=1EB7;CWCF;CWKCF;CWL;dm=1EA0 0306;gc=Lu;na=LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW;NFKC_CF=1EB7;SB=UP;scf=1EB7;slc=1EB7;Upper
+cp;1EB6;cf=1EB7;CWCF;CWKCF;CWL;dm=1EA0 0306;gc=Lu;na=LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW;NFKC_CF=1EB7;NFKC_SCF=1EB7;SB=UP;scf=1EB7;slc=1EB7;Upper
cp;1EB7;CWT;CWU;dm=1EA1 0306;Lower;na=LATIN SMALL LETTER A WITH BREVE AND DOT BELOW;stc=1EB6;suc=1EB6
-cp;1EB8;cf=1EB9;CWCF;CWKCF;CWL;dm=0045 0323;gc=Lu;na=LATIN CAPITAL LETTER E WITH DOT BELOW;NFKC_CF=1EB9;SB=UP;scf=1EB9;slc=1EB9;Upper
+cp;1EB8;cf=1EB9;CWCF;CWKCF;CWL;dm=0045 0323;gc=Lu;na=LATIN CAPITAL LETTER E WITH DOT BELOW;NFKC_CF=1EB9;NFKC_SCF=1EB9;SB=UP;scf=1EB9;slc=1EB9;Upper
cp;1EB9;CWT;CWU;dm=0065 0323;Lower;na=LATIN SMALL LETTER E WITH DOT BELOW;stc=1EB8;suc=1EB8
-cp;1EBA;cf=1EBB;CWCF;CWKCF;CWL;dm=0045 0309;gc=Lu;na=LATIN CAPITAL LETTER E WITH HOOK ABOVE;NFKC_CF=1EBB;SB=UP;scf=1EBB;slc=1EBB;Upper
+cp;1EBA;cf=1EBB;CWCF;CWKCF;CWL;dm=0045 0309;gc=Lu;na=LATIN CAPITAL LETTER E WITH HOOK ABOVE;NFKC_CF=1EBB;NFKC_SCF=1EBB;SB=UP;scf=1EBB;slc=1EBB;Upper
cp;1EBB;CWT;CWU;dm=0065 0309;Lower;na=LATIN SMALL LETTER E WITH HOOK ABOVE;stc=1EBA;suc=1EBA
-cp;1EBC;cf=1EBD;CWCF;CWKCF;CWL;dm=0045 0303;gc=Lu;na=LATIN CAPITAL LETTER E WITH TILDE;NFKC_CF=1EBD;SB=UP;scf=1EBD;slc=1EBD;Upper
+cp;1EBC;cf=1EBD;CWCF;CWKCF;CWL;dm=0045 0303;gc=Lu;na=LATIN CAPITAL LETTER E WITH TILDE;NFKC_CF=1EBD;NFKC_SCF=1EBD;SB=UP;scf=1EBD;slc=1EBD;Upper
cp;1EBD;CWT;CWU;dm=0065 0303;Lower;na=LATIN SMALL LETTER E WITH TILDE;stc=1EBC;suc=1EBC
-cp;1EBE;cf=1EBF;CWCF;CWKCF;CWL;dm=00CA 0301;gc=Lu;na=LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE;NFKC_CF=1EBF;SB=UP;scf=1EBF;slc=1EBF;Upper
+cp;1EBE;cf=1EBF;CWCF;CWKCF;CWL;dm=00CA 0301;gc=Lu;na=LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE;NFKC_CF=1EBF;NFKC_SCF=1EBF;SB=UP;scf=1EBF;slc=1EBF;Upper
cp;1EBF;CWT;CWU;dm=00EA 0301;Lower;na=LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE;stc=1EBE;suc=1EBE
-cp;1EC0;cf=1EC1;CWCF;CWKCF;CWL;dm=00CA 0300;gc=Lu;na=LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE;NFKC_CF=1EC1;SB=UP;scf=1EC1;slc=1EC1;Upper
+cp;1EC0;cf=1EC1;CWCF;CWKCF;CWL;dm=00CA 0300;gc=Lu;na=LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE;NFKC_CF=1EC1;NFKC_SCF=1EC1;SB=UP;scf=1EC1;slc=1EC1;Upper
cp;1EC1;CWT;CWU;dm=00EA 0300;Lower;na=LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE;stc=1EC0;suc=1EC0
-cp;1EC2;cf=1EC3;CWCF;CWKCF;CWL;dm=00CA 0309;gc=Lu;na=LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;NFKC_CF=1EC3;SB=UP;scf=1EC3;slc=1EC3;Upper
+cp;1EC2;cf=1EC3;CWCF;CWKCF;CWL;dm=00CA 0309;gc=Lu;na=LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;NFKC_CF=1EC3;NFKC_SCF=1EC3;SB=UP;scf=1EC3;slc=1EC3;Upper
cp;1EC3;CWT;CWU;dm=00EA 0309;Lower;na=LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;stc=1EC2;suc=1EC2
-cp;1EC4;cf=1EC5;CWCF;CWKCF;CWL;dm=00CA 0303;gc=Lu;na=LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE;NFKC_CF=1EC5;SB=UP;scf=1EC5;slc=1EC5;Upper
+cp;1EC4;cf=1EC5;CWCF;CWKCF;CWL;dm=00CA 0303;gc=Lu;na=LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE;NFKC_CF=1EC5;NFKC_SCF=1EC5;SB=UP;scf=1EC5;slc=1EC5;Upper
cp;1EC5;CWT;CWU;dm=00EA 0303;Lower;na=LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE;stc=1EC4;suc=1EC4
-cp;1EC6;cf=1EC7;CWCF;CWKCF;CWL;dm=1EB8 0302;gc=Lu;na=LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW;NFKC_CF=1EC7;SB=UP;scf=1EC7;slc=1EC7;Upper
+cp;1EC6;cf=1EC7;CWCF;CWKCF;CWL;dm=1EB8 0302;gc=Lu;na=LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW;NFKC_CF=1EC7;NFKC_SCF=1EC7;SB=UP;scf=1EC7;slc=1EC7;Upper
cp;1EC7;CWT;CWU;dm=1EB9 0302;Lower;na=LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW;stc=1EC6;suc=1EC6
-cp;1EC8;cf=1EC9;CWCF;CWKCF;CWL;dm=0049 0309;gc=Lu;na=LATIN CAPITAL LETTER I WITH HOOK ABOVE;NFKC_CF=1EC9;SB=UP;scf=1EC9;slc=1EC9;Upper
+cp;1EC8;cf=1EC9;CWCF;CWKCF;CWL;dm=0049 0309;gc=Lu;na=LATIN CAPITAL LETTER I WITH HOOK ABOVE;NFKC_CF=1EC9;NFKC_SCF=1EC9;SB=UP;scf=1EC9;slc=1EC9;Upper
cp;1EC9;CWT;CWU;dm=0069 0309;Lower;na=LATIN SMALL LETTER I WITH HOOK ABOVE;stc=1EC8;suc=1EC8
-cp;1ECA;cf=1ECB;CWCF;CWKCF;CWL;dm=0049 0323;gc=Lu;na=LATIN CAPITAL LETTER I WITH DOT BELOW;NFKC_CF=1ECB;SB=UP;scf=1ECB;slc=1ECB;Upper
+cp;1ECA;cf=1ECB;CWCF;CWKCF;CWL;dm=0049 0323;gc=Lu;na=LATIN CAPITAL LETTER I WITH DOT BELOW;NFKC_CF=1ECB;NFKC_SCF=1ECB;SB=UP;scf=1ECB;slc=1ECB;Upper
cp;1ECB;CWT;CWU;dm=0069 0323;Lower;na=LATIN SMALL LETTER I WITH DOT BELOW;SD;stc=1ECA;suc=1ECA
-cp;1ECC;cf=1ECD;CWCF;CWKCF;CWL;dm=004F 0323;gc=Lu;na=LATIN CAPITAL LETTER O WITH DOT BELOW;NFKC_CF=1ECD;SB=UP;scf=1ECD;slc=1ECD;Upper
+cp;1ECC;cf=1ECD;CWCF;CWKCF;CWL;dm=004F 0323;gc=Lu;na=LATIN CAPITAL LETTER O WITH DOT BELOW;NFKC_CF=1ECD;NFKC_SCF=1ECD;SB=UP;scf=1ECD;slc=1ECD;Upper
cp;1ECD;CWT;CWU;dm=006F 0323;Lower;na=LATIN SMALL LETTER O WITH DOT BELOW;stc=1ECC;suc=1ECC
-cp;1ECE;cf=1ECF;CWCF;CWKCF;CWL;dm=004F 0309;gc=Lu;na=LATIN CAPITAL LETTER O WITH HOOK ABOVE;NFKC_CF=1ECF;SB=UP;scf=1ECF;slc=1ECF;Upper
+cp;1ECE;cf=1ECF;CWCF;CWKCF;CWL;dm=004F 0309;gc=Lu;na=LATIN CAPITAL LETTER O WITH HOOK ABOVE;NFKC_CF=1ECF;NFKC_SCF=1ECF;SB=UP;scf=1ECF;slc=1ECF;Upper
cp;1ECF;CWT;CWU;dm=006F 0309;Lower;na=LATIN SMALL LETTER O WITH HOOK ABOVE;stc=1ECE;suc=1ECE
-cp;1ED0;cf=1ED1;CWCF;CWKCF;CWL;dm=00D4 0301;gc=Lu;na=LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE;NFKC_CF=1ED1;SB=UP;scf=1ED1;slc=1ED1;Upper
+cp;1ED0;cf=1ED1;CWCF;CWKCF;CWL;dm=00D4 0301;gc=Lu;na=LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE;NFKC_CF=1ED1;NFKC_SCF=1ED1;SB=UP;scf=1ED1;slc=1ED1;Upper
cp;1ED1;CWT;CWU;dm=00F4 0301;Lower;na=LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE;stc=1ED0;suc=1ED0
-cp;1ED2;cf=1ED3;CWCF;CWKCF;CWL;dm=00D4 0300;gc=Lu;na=LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE;NFKC_CF=1ED3;SB=UP;scf=1ED3;slc=1ED3;Upper
+cp;1ED2;cf=1ED3;CWCF;CWKCF;CWL;dm=00D4 0300;gc=Lu;na=LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE;NFKC_CF=1ED3;NFKC_SCF=1ED3;SB=UP;scf=1ED3;slc=1ED3;Upper
cp;1ED3;CWT;CWU;dm=00F4 0300;Lower;na=LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE;stc=1ED2;suc=1ED2
-cp;1ED4;cf=1ED5;CWCF;CWKCF;CWL;dm=00D4 0309;gc=Lu;na=LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;NFKC_CF=1ED5;SB=UP;scf=1ED5;slc=1ED5;Upper
+cp;1ED4;cf=1ED5;CWCF;CWKCF;CWL;dm=00D4 0309;gc=Lu;na=LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;NFKC_CF=1ED5;NFKC_SCF=1ED5;SB=UP;scf=1ED5;slc=1ED5;Upper
cp;1ED5;CWT;CWU;dm=00F4 0309;Lower;na=LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;stc=1ED4;suc=1ED4
-cp;1ED6;cf=1ED7;CWCF;CWKCF;CWL;dm=00D4 0303;gc=Lu;na=LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE;NFKC_CF=1ED7;SB=UP;scf=1ED7;slc=1ED7;Upper
+cp;1ED6;cf=1ED7;CWCF;CWKCF;CWL;dm=00D4 0303;gc=Lu;na=LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE;NFKC_CF=1ED7;NFKC_SCF=1ED7;SB=UP;scf=1ED7;slc=1ED7;Upper
cp;1ED7;CWT;CWU;dm=00F4 0303;Lower;na=LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE;stc=1ED6;suc=1ED6
-cp;1ED8;cf=1ED9;CWCF;CWKCF;CWL;dm=1ECC 0302;gc=Lu;na=LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW;NFKC_CF=1ED9;SB=UP;scf=1ED9;slc=1ED9;Upper
+cp;1ED8;cf=1ED9;CWCF;CWKCF;CWL;dm=1ECC 0302;gc=Lu;na=LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW;NFKC_CF=1ED9;NFKC_SCF=1ED9;SB=UP;scf=1ED9;slc=1ED9;Upper
cp;1ED9;CWT;CWU;dm=1ECD 0302;Lower;na=LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW;stc=1ED8;suc=1ED8
-cp;1EDA;cf=1EDB;CWCF;CWKCF;CWL;dm=01A0 0301;gc=Lu;na=LATIN CAPITAL LETTER O WITH HORN AND ACUTE;NFKC_CF=1EDB;SB=UP;scf=1EDB;slc=1EDB;Upper
+cp;1EDA;cf=1EDB;CWCF;CWKCF;CWL;dm=01A0 0301;gc=Lu;na=LATIN CAPITAL LETTER O WITH HORN AND ACUTE;NFKC_CF=1EDB;NFKC_SCF=1EDB;SB=UP;scf=1EDB;slc=1EDB;Upper
cp;1EDB;CWT;CWU;dm=01A1 0301;Lower;na=LATIN SMALL LETTER O WITH HORN AND ACUTE;stc=1EDA;suc=1EDA
-cp;1EDC;cf=1EDD;CWCF;CWKCF;CWL;dm=01A0 0300;gc=Lu;na=LATIN CAPITAL LETTER O WITH HORN AND GRAVE;NFKC_CF=1EDD;SB=UP;scf=1EDD;slc=1EDD;Upper
+cp;1EDC;cf=1EDD;CWCF;CWKCF;CWL;dm=01A0 0300;gc=Lu;na=LATIN CAPITAL LETTER O WITH HORN AND GRAVE;NFKC_CF=1EDD;NFKC_SCF=1EDD;SB=UP;scf=1EDD;slc=1EDD;Upper
cp;1EDD;CWT;CWU;dm=01A1 0300;Lower;na=LATIN SMALL LETTER O WITH HORN AND GRAVE;stc=1EDC;suc=1EDC
-cp;1EDE;cf=1EDF;CWCF;CWKCF;CWL;dm=01A0 0309;gc=Lu;na=LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE;NFKC_CF=1EDF;SB=UP;scf=1EDF;slc=1EDF;Upper
+cp;1EDE;cf=1EDF;CWCF;CWKCF;CWL;dm=01A0 0309;gc=Lu;na=LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE;NFKC_CF=1EDF;NFKC_SCF=1EDF;SB=UP;scf=1EDF;slc=1EDF;Upper
cp;1EDF;CWT;CWU;dm=01A1 0309;Lower;na=LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE;stc=1EDE;suc=1EDE
-cp;1EE0;cf=1EE1;CWCF;CWKCF;CWL;dm=01A0 0303;gc=Lu;na=LATIN CAPITAL LETTER O WITH HORN AND TILDE;NFKC_CF=1EE1;SB=UP;scf=1EE1;slc=1EE1;Upper
+cp;1EE0;cf=1EE1;CWCF;CWKCF;CWL;dm=01A0 0303;gc=Lu;na=LATIN CAPITAL LETTER O WITH HORN AND TILDE;NFKC_CF=1EE1;NFKC_SCF=1EE1;SB=UP;scf=1EE1;slc=1EE1;Upper
cp;1EE1;CWT;CWU;dm=01A1 0303;Lower;na=LATIN SMALL LETTER O WITH HORN AND TILDE;stc=1EE0;suc=1EE0
-cp;1EE2;cf=1EE3;CWCF;CWKCF;CWL;dm=01A0 0323;gc=Lu;na=LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW;NFKC_CF=1EE3;SB=UP;scf=1EE3;slc=1EE3;Upper
+cp;1EE2;cf=1EE3;CWCF;CWKCF;CWL;dm=01A0 0323;gc=Lu;na=LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW;NFKC_CF=1EE3;NFKC_SCF=1EE3;SB=UP;scf=1EE3;slc=1EE3;Upper
cp;1EE3;CWT;CWU;dm=01A1 0323;Lower;na=LATIN SMALL LETTER O WITH HORN AND DOT BELOW;stc=1EE2;suc=1EE2
-cp;1EE4;cf=1EE5;CWCF;CWKCF;CWL;dm=0055 0323;gc=Lu;na=LATIN CAPITAL LETTER U WITH DOT BELOW;NFKC_CF=1EE5;SB=UP;scf=1EE5;slc=1EE5;Upper
+cp;1EE4;cf=1EE5;CWCF;CWKCF;CWL;dm=0055 0323;gc=Lu;na=LATIN CAPITAL LETTER U WITH DOT BELOW;NFKC_CF=1EE5;NFKC_SCF=1EE5;SB=UP;scf=1EE5;slc=1EE5;Upper
cp;1EE5;CWT;CWU;dm=0075 0323;Lower;na=LATIN SMALL LETTER U WITH DOT BELOW;stc=1EE4;suc=1EE4
-cp;1EE6;cf=1EE7;CWCF;CWKCF;CWL;dm=0055 0309;gc=Lu;na=LATIN CAPITAL LETTER U WITH HOOK ABOVE;NFKC_CF=1EE7;SB=UP;scf=1EE7;slc=1EE7;Upper
+cp;1EE6;cf=1EE7;CWCF;CWKCF;CWL;dm=0055 0309;gc=Lu;na=LATIN CAPITAL LETTER U WITH HOOK ABOVE;NFKC_CF=1EE7;NFKC_SCF=1EE7;SB=UP;scf=1EE7;slc=1EE7;Upper
cp;1EE7;CWT;CWU;dm=0075 0309;Lower;na=LATIN SMALL LETTER U WITH HOOK ABOVE;stc=1EE6;suc=1EE6
-cp;1EE8;cf=1EE9;CWCF;CWKCF;CWL;dm=01AF 0301;gc=Lu;na=LATIN CAPITAL LETTER U WITH HORN AND ACUTE;NFKC_CF=1EE9;SB=UP;scf=1EE9;slc=1EE9;Upper
+cp;1EE8;cf=1EE9;CWCF;CWKCF;CWL;dm=01AF 0301;gc=Lu;na=LATIN CAPITAL LETTER U WITH HORN AND ACUTE;NFKC_CF=1EE9;NFKC_SCF=1EE9;SB=UP;scf=1EE9;slc=1EE9;Upper
cp;1EE9;CWT;CWU;dm=01B0 0301;Lower;na=LATIN SMALL LETTER U WITH HORN AND ACUTE;stc=1EE8;suc=1EE8
-cp;1EEA;cf=1EEB;CWCF;CWKCF;CWL;dm=01AF 0300;gc=Lu;na=LATIN CAPITAL LETTER U WITH HORN AND GRAVE;NFKC_CF=1EEB;SB=UP;scf=1EEB;slc=1EEB;Upper
+cp;1EEA;cf=1EEB;CWCF;CWKCF;CWL;dm=01AF 0300;gc=Lu;na=LATIN CAPITAL LETTER U WITH HORN AND GRAVE;NFKC_CF=1EEB;NFKC_SCF=1EEB;SB=UP;scf=1EEB;slc=1EEB;Upper
cp;1EEB;CWT;CWU;dm=01B0 0300;Lower;na=LATIN SMALL LETTER U WITH HORN AND GRAVE;stc=1EEA;suc=1EEA
-cp;1EEC;cf=1EED;CWCF;CWKCF;CWL;dm=01AF 0309;gc=Lu;na=LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE;NFKC_CF=1EED;SB=UP;scf=1EED;slc=1EED;Upper
+cp;1EEC;cf=1EED;CWCF;CWKCF;CWL;dm=01AF 0309;gc=Lu;na=LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE;NFKC_CF=1EED;NFKC_SCF=1EED;SB=UP;scf=1EED;slc=1EED;Upper
cp;1EED;CWT;CWU;dm=01B0 0309;Lower;na=LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE;stc=1EEC;suc=1EEC
-cp;1EEE;cf=1EEF;CWCF;CWKCF;CWL;dm=01AF 0303;gc=Lu;na=LATIN CAPITAL LETTER U WITH HORN AND TILDE;NFKC_CF=1EEF;SB=UP;scf=1EEF;slc=1EEF;Upper
+cp;1EEE;cf=1EEF;CWCF;CWKCF;CWL;dm=01AF 0303;gc=Lu;na=LATIN CAPITAL LETTER U WITH HORN AND TILDE;NFKC_CF=1EEF;NFKC_SCF=1EEF;SB=UP;scf=1EEF;slc=1EEF;Upper
cp;1EEF;CWT;CWU;dm=01B0 0303;Lower;na=LATIN SMALL LETTER U WITH HORN AND TILDE;stc=1EEE;suc=1EEE
-cp;1EF0;cf=1EF1;CWCF;CWKCF;CWL;dm=01AF 0323;gc=Lu;na=LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW;NFKC_CF=1EF1;SB=UP;scf=1EF1;slc=1EF1;Upper
+cp;1EF0;cf=1EF1;CWCF;CWKCF;CWL;dm=01AF 0323;gc=Lu;na=LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW;NFKC_CF=1EF1;NFKC_SCF=1EF1;SB=UP;scf=1EF1;slc=1EF1;Upper
cp;1EF1;CWT;CWU;dm=01B0 0323;Lower;na=LATIN SMALL LETTER U WITH HORN AND DOT BELOW;stc=1EF0;suc=1EF0
# Latin general extensions
-cp;1EF2;cf=1EF3;CWCF;CWKCF;CWL;dm=0059 0300;gc=Lu;na=LATIN CAPITAL LETTER Y WITH GRAVE;NFKC_CF=1EF3;SB=UP;scf=1EF3;slc=1EF3;Upper
+cp;1EF2;cf=1EF3;CWCF;CWKCF;CWL;dm=0059 0300;gc=Lu;na=LATIN CAPITAL LETTER Y WITH GRAVE;NFKC_CF=1EF3;NFKC_SCF=1EF3;SB=UP;scf=1EF3;slc=1EF3;Upper
cp;1EF3;CWT;CWU;dm=0079 0300;Lower;na=LATIN SMALL LETTER Y WITH GRAVE;stc=1EF2;suc=1EF2
-cp;1EF4;cf=1EF5;CWCF;CWKCF;CWL;dm=0059 0323;gc=Lu;na=LATIN CAPITAL LETTER Y WITH DOT BELOW;NFKC_CF=1EF5;SB=UP;scf=1EF5;slc=1EF5;Upper
+cp;1EF4;cf=1EF5;CWCF;CWKCF;CWL;dm=0059 0323;gc=Lu;na=LATIN CAPITAL LETTER Y WITH DOT BELOW;NFKC_CF=1EF5;NFKC_SCF=1EF5;SB=UP;scf=1EF5;slc=1EF5;Upper
cp;1EF5;CWT;CWU;dm=0079 0323;Lower;na=LATIN SMALL LETTER Y WITH DOT BELOW;stc=1EF4;suc=1EF4
-cp;1EF6;cf=1EF7;CWCF;CWKCF;CWL;dm=0059 0309;gc=Lu;na=LATIN CAPITAL LETTER Y WITH HOOK ABOVE;NFKC_CF=1EF7;SB=UP;scf=1EF7;slc=1EF7;Upper
+cp;1EF6;cf=1EF7;CWCF;CWKCF;CWL;dm=0059 0309;gc=Lu;na=LATIN CAPITAL LETTER Y WITH HOOK ABOVE;NFKC_CF=1EF7;NFKC_SCF=1EF7;SB=UP;scf=1EF7;slc=1EF7;Upper
cp;1EF7;CWT;CWU;dm=0079 0309;Lower;na=LATIN SMALL LETTER Y WITH HOOK ABOVE;stc=1EF6;suc=1EF6
-cp;1EF8;cf=1EF9;CWCF;CWKCF;CWL;dm=0059 0303;gc=Lu;na=LATIN CAPITAL LETTER Y WITH TILDE;NFKC_CF=1EF9;SB=UP;scf=1EF9;slc=1EF9;Upper
+cp;1EF8;cf=1EF9;CWCF;CWKCF;CWL;dm=0059 0303;gc=Lu;na=LATIN CAPITAL LETTER Y WITH TILDE;NFKC_CF=1EF9;NFKC_SCF=1EF9;SB=UP;scf=1EF9;slc=1EF9;Upper
cp;1EF9;CWT;CWU;dm=0079 0303;Lower;na=LATIN SMALL LETTER Y WITH TILDE;stc=1EF8;suc=1EF8
# Medievalist additions
-cp;1EFA;age=5.1;cf=1EFB;CWCF;CWKCF;CWL;dt=None;gc=Lu;na=LATIN CAPITAL LETTER MIDDLE-WELSH LL;NFD_QC=Y;NFKC_CF=1EFB;NFKD_QC=Y;SB=UP;scf=1EFB;slc=1EFB;Upper
+cp;1EFA;age=5.1;cf=1EFB;CWCF;CWKCF;CWL;dt=None;gc=Lu;na=LATIN CAPITAL LETTER MIDDLE-WELSH LL;NFD_QC=Y;NFKC_CF=1EFB;NFKC_SCF=1EFB;NFKD_QC=Y;SB=UP;scf=1EFB;slc=1EFB;Upper
cp;1EFB;age=5.1;CWT;CWU;dt=None;Lower;na=LATIN SMALL LETTER MIDDLE-WELSH LL;NFD_QC=Y;NFKD_QC=Y;stc=1EFA;suc=1EFA
-cp;1EFC;age=5.1;cf=1EFD;CWCF;CWKCF;CWL;dt=None;gc=Lu;na=LATIN CAPITAL LETTER MIDDLE-WELSH V;NFD_QC=Y;NFKC_CF=1EFD;NFKD_QC=Y;SB=UP;scf=1EFD;slc=1EFD;Upper
+cp;1EFC;age=5.1;cf=1EFD;CWCF;CWKCF;CWL;dt=None;gc=Lu;na=LATIN CAPITAL LETTER MIDDLE-WELSH V;NFD_QC=Y;NFKC_CF=1EFD;NFKC_SCF=1EFD;NFKD_QC=Y;SB=UP;scf=1EFD;slc=1EFD;Upper
cp;1EFD;age=5.1;CWT;CWU;dt=None;Lower;na=LATIN SMALL LETTER MIDDLE-WELSH V;NFD_QC=Y;NFKD_QC=Y;stc=1EFC;suc=1EFC
-cp;1EFE;age=5.1;cf=1EFF;CWCF;CWKCF;CWL;dt=None;gc=Lu;na=LATIN CAPITAL LETTER Y WITH LOOP;NFD_QC=Y;NFKC_CF=1EFF;NFKD_QC=Y;SB=UP;scf=1EFF;slc=1EFF;Upper
+cp;1EFE;age=5.1;cf=1EFF;CWCF;CWKCF;CWL;dt=None;gc=Lu;na=LATIN CAPITAL LETTER Y WITH LOOP;NFD_QC=Y;NFKC_CF=1EFF;NFKC_SCF=1EFF;NFKD_QC=Y;SB=UP;scf=1EFF;slc=1EFF;Upper
cp;1EFF;age=5.1;CWT;CWU;dt=None;Lower;na=LATIN SMALL LETTER Y WITH LOOP;NFD_QC=Y;NFKD_QC=Y;stc=1EFE;suc=1EFE
block;1F00..1FFF;age=1.1;Alpha;blk=Greek_Ext;Cased;CWCF;CWCM;CWKCF;CWU;dt=Can;gc=Ll;Gr_Base;IDC;IDS;lb=AL;NFD_QC=N;NFKD_QC=N;SB=LO;sc=Grek;WB=LE;XIDC;XIDS
@@ -9532,14 +9549,14 @@ cp;1F04;-CWCF;-CWKCF;CWT;dm=1F00 0301;Lower;na=GREEK SMALL LETTER ALPHA WITH PSI
cp;1F05;-CWCF;-CWKCF;CWT;dm=1F01 0301;Lower;na=GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA;stc=1F0D;suc=1F0D
cp;1F06;-CWCF;-CWKCF;CWT;dm=1F00 0342;Lower;na=GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI;stc=1F0E;suc=1F0E
cp;1F07;-CWCF;-CWKCF;CWT;dm=1F01 0342;Lower;na=GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI;stc=1F0F;suc=1F0F
-cp;1F08;cf=1F00;CWL;-CWU;dm=0391 0313;gc=Lu;na=GREEK CAPITAL LETTER ALPHA WITH PSILI;NFKC_CF=1F00;SB=UP;scf=1F00;slc=1F00;Upper
-cp;1F09;cf=1F01;CWL;-CWU;dm=0391 0314;gc=Lu;na=GREEK CAPITAL LETTER ALPHA WITH DASIA;NFKC_CF=1F01;SB=UP;scf=1F01;slc=1F01;Upper
-cp;1F0A;cf=1F02;CWL;-CWU;dm=1F08 0300;gc=Lu;na=GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA;NFKC_CF=1F02;SB=UP;scf=1F02;slc=1F02;Upper
-cp;1F0B;cf=1F03;CWL;-CWU;dm=1F09 0300;gc=Lu;na=GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA;NFKC_CF=1F03;SB=UP;scf=1F03;slc=1F03;Upper
-cp;1F0C;cf=1F04;CWL;-CWU;dm=1F08 0301;gc=Lu;na=GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA;NFKC_CF=1F04;SB=UP;scf=1F04;slc=1F04;Upper
-cp;1F0D;cf=1F05;CWL;-CWU;dm=1F09 0301;gc=Lu;na=GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA;NFKC_CF=1F05;SB=UP;scf=1F05;slc=1F05;Upper
-cp;1F0E;cf=1F06;CWL;-CWU;dm=1F08 0342;gc=Lu;na=GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI;NFKC_CF=1F06;SB=UP;scf=1F06;slc=1F06;Upper
-cp;1F0F;cf=1F07;CWL;-CWU;dm=1F09 0342;gc=Lu;na=GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI;NFKC_CF=1F07;SB=UP;scf=1F07;slc=1F07;Upper
+cp;1F08;cf=1F00;CWL;-CWU;dm=0391 0313;gc=Lu;na=GREEK CAPITAL LETTER ALPHA WITH PSILI;NFKC_CF=1F00;NFKC_SCF=1F00;SB=UP;scf=1F00;slc=1F00;Upper
+cp;1F09;cf=1F01;CWL;-CWU;dm=0391 0314;gc=Lu;na=GREEK CAPITAL LETTER ALPHA WITH DASIA;NFKC_CF=1F01;NFKC_SCF=1F01;SB=UP;scf=1F01;slc=1F01;Upper
+cp;1F0A;cf=1F02;CWL;-CWU;dm=1F08 0300;gc=Lu;na=GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA;NFKC_CF=1F02;NFKC_SCF=1F02;SB=UP;scf=1F02;slc=1F02;Upper
+cp;1F0B;cf=1F03;CWL;-CWU;dm=1F09 0300;gc=Lu;na=GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA;NFKC_CF=1F03;NFKC_SCF=1F03;SB=UP;scf=1F03;slc=1F03;Upper
+cp;1F0C;cf=1F04;CWL;-CWU;dm=1F08 0301;gc=Lu;na=GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA;NFKC_CF=1F04;NFKC_SCF=1F04;SB=UP;scf=1F04;slc=1F04;Upper
+cp;1F0D;cf=1F05;CWL;-CWU;dm=1F09 0301;gc=Lu;na=GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA;NFKC_CF=1F05;NFKC_SCF=1F05;SB=UP;scf=1F05;slc=1F05;Upper
+cp;1F0E;cf=1F06;CWL;-CWU;dm=1F08 0342;gc=Lu;na=GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI;NFKC_CF=1F06;NFKC_SCF=1F06;SB=UP;scf=1F06;slc=1F06;Upper
+cp;1F0F;cf=1F07;CWL;-CWU;dm=1F09 0342;gc=Lu;na=GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI;NFKC_CF=1F07;NFKC_SCF=1F07;SB=UP;scf=1F07;slc=1F07;Upper
cp;1F10;-CWCF;-CWKCF;CWT;dm=03B5 0313;Lower;na=GREEK SMALL LETTER EPSILON WITH PSILI;stc=1F18;suc=1F18
cp;1F11;-CWCF;-CWKCF;CWT;dm=03B5 0314;Lower;na=GREEK SMALL LETTER EPSILON WITH DASIA;stc=1F19;suc=1F19
cp;1F12;-CWCF;-CWKCF;CWT;dm=1F10 0300;Lower;na=GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA;stc=1F1A;suc=1F1A
@@ -9547,12 +9564,12 @@ cp;1F13;-CWCF;-CWKCF;CWT;dm=1F11 0300;Lower;na=GREEK SMALL LETTER EPSILON WITH D
cp;1F14;-CWCF;-CWKCF;CWT;dm=1F10 0301;Lower;na=GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA;stc=1F1C;suc=1F1C
cp;1F15;-CWCF;-CWKCF;CWT;dm=1F11 0301;Lower;na=GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA;stc=1F1D;suc=1F1D
unassigned;1F16..1F17
-cp;1F18;cf=1F10;CWL;-CWU;dm=0395 0313;gc=Lu;na=GREEK CAPITAL LETTER EPSILON WITH PSILI;NFKC_CF=1F10;SB=UP;scf=1F10;slc=1F10;Upper
-cp;1F19;cf=1F11;CWL;-CWU;dm=0395 0314;gc=Lu;na=GREEK CAPITAL LETTER EPSILON WITH DASIA;NFKC_CF=1F11;SB=UP;scf=1F11;slc=1F11;Upper
-cp;1F1A;cf=1F12;CWL;-CWU;dm=1F18 0300;gc=Lu;na=GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA;NFKC_CF=1F12;SB=UP;scf=1F12;slc=1F12;Upper
-cp;1F1B;cf=1F13;CWL;-CWU;dm=1F19 0300;gc=Lu;na=GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA;NFKC_CF=1F13;SB=UP;scf=1F13;slc=1F13;Upper
-cp;1F1C;cf=1F14;CWL;-CWU;dm=1F18 0301;gc=Lu;na=GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA;NFKC_CF=1F14;SB=UP;scf=1F14;slc=1F14;Upper
-cp;1F1D;cf=1F15;CWL;-CWU;dm=1F19 0301;gc=Lu;na=GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA;NFKC_CF=1F15;SB=UP;scf=1F15;slc=1F15;Upper
+cp;1F18;cf=1F10;CWL;-CWU;dm=0395 0313;gc=Lu;na=GREEK CAPITAL LETTER EPSILON WITH PSILI;NFKC_CF=1F10;NFKC_SCF=1F10;SB=UP;scf=1F10;slc=1F10;Upper
+cp;1F19;cf=1F11;CWL;-CWU;dm=0395 0314;gc=Lu;na=GREEK CAPITAL LETTER EPSILON WITH DASIA;NFKC_CF=1F11;NFKC_SCF=1F11;SB=UP;scf=1F11;slc=1F11;Upper
+cp;1F1A;cf=1F12;CWL;-CWU;dm=1F18 0300;gc=Lu;na=GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA;NFKC_CF=1F12;NFKC_SCF=1F12;SB=UP;scf=1F12;slc=1F12;Upper
+cp;1F1B;cf=1F13;CWL;-CWU;dm=1F19 0300;gc=Lu;na=GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA;NFKC_CF=1F13;NFKC_SCF=1F13;SB=UP;scf=1F13;slc=1F13;Upper
+cp;1F1C;cf=1F14;CWL;-CWU;dm=1F18 0301;gc=Lu;na=GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA;NFKC_CF=1F14;NFKC_SCF=1F14;SB=UP;scf=1F14;slc=1F14;Upper
+cp;1F1D;cf=1F15;CWL;-CWU;dm=1F19 0301;gc=Lu;na=GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA;NFKC_CF=1F15;NFKC_SCF=1F15;SB=UP;scf=1F15;slc=1F15;Upper
unassigned;1F1E..1F1F
cp;1F20;-CWCF;-CWKCF;CWT;dm=03B7 0313;Lower;na=GREEK SMALL LETTER ETA WITH PSILI;stc=1F28;suc=1F28
cp;1F21;-CWCF;-CWKCF;CWT;dm=03B7 0314;Lower;na=GREEK SMALL LETTER ETA WITH DASIA;stc=1F29;suc=1F29
@@ -9562,14 +9579,14 @@ cp;1F24;-CWCF;-CWKCF;CWT;dm=1F20 0301;Lower;na=GREEK SMALL LETTER ETA WITH PSILI
cp;1F25;-CWCF;-CWKCF;CWT;dm=1F21 0301;Lower;na=GREEK SMALL LETTER ETA WITH DASIA AND OXIA;stc=1F2D;suc=1F2D
cp;1F26;-CWCF;-CWKCF;CWT;dm=1F20 0342;Lower;na=GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI;stc=1F2E;suc=1F2E
cp;1F27;-CWCF;-CWKCF;CWT;dm=1F21 0342;Lower;na=GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI;stc=1F2F;suc=1F2F
-cp;1F28;cf=1F20;CWL;-CWU;dm=0397 0313;gc=Lu;na=GREEK CAPITAL LETTER ETA WITH PSILI;NFKC_CF=1F20;SB=UP;scf=1F20;slc=1F20;Upper
-cp;1F29;cf=1F21;CWL;-CWU;dm=0397 0314;gc=Lu;na=GREEK CAPITAL LETTER ETA WITH DASIA;NFKC_CF=1F21;SB=UP;scf=1F21;slc=1F21;Upper
-cp;1F2A;cf=1F22;CWL;-CWU;dm=1F28 0300;gc=Lu;na=GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA;NFKC_CF=1F22;SB=UP;scf=1F22;slc=1F22;Upper
-cp;1F2B;cf=1F23;CWL;-CWU;dm=1F29 0300;gc=Lu;na=GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA;NFKC_CF=1F23;SB=UP;scf=1F23;slc=1F23;Upper
-cp;1F2C;cf=1F24;CWL;-CWU;dm=1F28 0301;gc=Lu;na=GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA;NFKC_CF=1F24;SB=UP;scf=1F24;slc=1F24;Upper
-cp;1F2D;cf=1F25;CWL;-CWU;dm=1F29 0301;gc=Lu;na=GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA;NFKC_CF=1F25;SB=UP;scf=1F25;slc=1F25;Upper
-cp;1F2E;cf=1F26;CWL;-CWU;dm=1F28 0342;gc=Lu;na=GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI;NFKC_CF=1F26;SB=UP;scf=1F26;slc=1F26;Upper
-cp;1F2F;cf=1F27;CWL;-CWU;dm=1F29 0342;gc=Lu;na=GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI;NFKC_CF=1F27;SB=UP;scf=1F27;slc=1F27;Upper
+cp;1F28;cf=1F20;CWL;-CWU;dm=0397 0313;gc=Lu;na=GREEK CAPITAL LETTER ETA WITH PSILI;NFKC_CF=1F20;NFKC_SCF=1F20;SB=UP;scf=1F20;slc=1F20;Upper
+cp;1F29;cf=1F21;CWL;-CWU;dm=0397 0314;gc=Lu;na=GREEK CAPITAL LETTER ETA WITH DASIA;NFKC_CF=1F21;NFKC_SCF=1F21;SB=UP;scf=1F21;slc=1F21;Upper
+cp;1F2A;cf=1F22;CWL;-CWU;dm=1F28 0300;gc=Lu;na=GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA;NFKC_CF=1F22;NFKC_SCF=1F22;SB=UP;scf=1F22;slc=1F22;Upper
+cp;1F2B;cf=1F23;CWL;-CWU;dm=1F29 0300;gc=Lu;na=GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA;NFKC_CF=1F23;NFKC_SCF=1F23;SB=UP;scf=1F23;slc=1F23;Upper
+cp;1F2C;cf=1F24;CWL;-CWU;dm=1F28 0301;gc=Lu;na=GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA;NFKC_CF=1F24;NFKC_SCF=1F24;SB=UP;scf=1F24;slc=1F24;Upper
+cp;1F2D;cf=1F25;CWL;-CWU;dm=1F29 0301;gc=Lu;na=GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA;NFKC_CF=1F25;NFKC_SCF=1F25;SB=UP;scf=1F25;slc=1F25;Upper
+cp;1F2E;cf=1F26;CWL;-CWU;dm=1F28 0342;gc=Lu;na=GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI;NFKC_CF=1F26;NFKC_SCF=1F26;SB=UP;scf=1F26;slc=1F26;Upper
+cp;1F2F;cf=1F27;CWL;-CWU;dm=1F29 0342;gc=Lu;na=GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI;NFKC_CF=1F27;NFKC_SCF=1F27;SB=UP;scf=1F27;slc=1F27;Upper
cp;1F30;-CWCF;-CWKCF;CWT;dm=03B9 0313;Lower;na=GREEK SMALL LETTER IOTA WITH PSILI;stc=1F38;suc=1F38
cp;1F31;-CWCF;-CWKCF;CWT;dm=03B9 0314;Lower;na=GREEK SMALL LETTER IOTA WITH DASIA;stc=1F39;suc=1F39
cp;1F32;-CWCF;-CWKCF;CWT;dm=1F30 0300;Lower;na=GREEK SMALL LETTER IOTA WITH PSILI AND VARIA;stc=1F3A;suc=1F3A
@@ -9578,14 +9595,14 @@ cp;1F34;-CWCF;-CWKCF;CWT;dm=1F30 0301;Lower;na=GREEK SMALL LETTER IOTA WITH PSIL
cp;1F35;-CWCF;-CWKCF;CWT;dm=1F31 0301;Lower;na=GREEK SMALL LETTER IOTA WITH DASIA AND OXIA;stc=1F3D;suc=1F3D
cp;1F36;-CWCF;-CWKCF;CWT;dm=1F30 0342;Lower;na=GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI;stc=1F3E;suc=1F3E
cp;1F37;-CWCF;-CWKCF;CWT;dm=1F31 0342;Lower;na=GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI;stc=1F3F;suc=1F3F
-cp;1F38;cf=1F30;CWL;-CWU;dm=0399 0313;gc=Lu;na=GREEK CAPITAL LETTER IOTA WITH PSILI;NFKC_CF=1F30;SB=UP;scf=1F30;slc=1F30;Upper
-cp;1F39;cf=1F31;CWL;-CWU;dm=0399 0314;gc=Lu;na=GREEK CAPITAL LETTER IOTA WITH DASIA;NFKC_CF=1F31;SB=UP;scf=1F31;slc=1F31;Upper
-cp;1F3A;cf=1F32;CWL;-CWU;dm=1F38 0300;gc=Lu;na=GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA;NFKC_CF=1F32;SB=UP;scf=1F32;slc=1F32;Upper
-cp;1F3B;cf=1F33;CWL;-CWU;dm=1F39 0300;gc=Lu;na=GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA;NFKC_CF=1F33;SB=UP;scf=1F33;slc=1F33;Upper
-cp;1F3C;cf=1F34;CWL;-CWU;dm=1F38 0301;gc=Lu;na=GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA;NFKC_CF=1F34;SB=UP;scf=1F34;slc=1F34;Upper
-cp;1F3D;cf=1F35;CWL;-CWU;dm=1F39 0301;gc=Lu;na=GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA;NFKC_CF=1F35;SB=UP;scf=1F35;slc=1F35;Upper
-cp;1F3E;cf=1F36;CWL;-CWU;dm=1F38 0342;gc=Lu;na=GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI;NFKC_CF=1F36;SB=UP;scf=1F36;slc=1F36;Upper
-cp;1F3F;cf=1F37;CWL;-CWU;dm=1F39 0342;gc=Lu;na=GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI;NFKC_CF=1F37;SB=UP;scf=1F37;slc=1F37;Upper
+cp;1F38;cf=1F30;CWL;-CWU;dm=0399 0313;gc=Lu;na=GREEK CAPITAL LETTER IOTA WITH PSILI;NFKC_CF=1F30;NFKC_SCF=1F30;SB=UP;scf=1F30;slc=1F30;Upper
+cp;1F39;cf=1F31;CWL;-CWU;dm=0399 0314;gc=Lu;na=GREEK CAPITAL LETTER IOTA WITH DASIA;NFKC_CF=1F31;NFKC_SCF=1F31;SB=UP;scf=1F31;slc=1F31;Upper
+cp;1F3A;cf=1F32;CWL;-CWU;dm=1F38 0300;gc=Lu;na=GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA;NFKC_CF=1F32;NFKC_SCF=1F32;SB=UP;scf=1F32;slc=1F32;Upper
+cp;1F3B;cf=1F33;CWL;-CWU;dm=1F39 0300;gc=Lu;na=GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA;NFKC_CF=1F33;NFKC_SCF=1F33;SB=UP;scf=1F33;slc=1F33;Upper
+cp;1F3C;cf=1F34;CWL;-CWU;dm=1F38 0301;gc=Lu;na=GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA;NFKC_CF=1F34;NFKC_SCF=1F34;SB=UP;scf=1F34;slc=1F34;Upper
+cp;1F3D;cf=1F35;CWL;-CWU;dm=1F39 0301;gc=Lu;na=GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA;NFKC_CF=1F35;NFKC_SCF=1F35;SB=UP;scf=1F35;slc=1F35;Upper
+cp;1F3E;cf=1F36;CWL;-CWU;dm=1F38 0342;gc=Lu;na=GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI;NFKC_CF=1F36;NFKC_SCF=1F36;SB=UP;scf=1F36;slc=1F36;Upper
+cp;1F3F;cf=1F37;CWL;-CWU;dm=1F39 0342;gc=Lu;na=GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI;NFKC_CF=1F37;NFKC_SCF=1F37;SB=UP;scf=1F37;slc=1F37;Upper
cp;1F40;-CWCF;-CWKCF;CWT;dm=03BF 0313;Lower;na=GREEK SMALL LETTER OMICRON WITH PSILI;stc=1F48;suc=1F48
cp;1F41;-CWCF;-CWKCF;CWT;dm=03BF 0314;Lower;na=GREEK SMALL LETTER OMICRON WITH DASIA;stc=1F49;suc=1F49
cp;1F42;-CWCF;-CWKCF;CWT;dm=1F40 0300;Lower;na=GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA;stc=1F4A;suc=1F4A
@@ -9593,12 +9610,12 @@ cp;1F43;-CWCF;-CWKCF;CWT;dm=1F41 0300;Lower;na=GREEK SMALL LETTER OMICRON WITH D
cp;1F44;-CWCF;-CWKCF;CWT;dm=1F40 0301;Lower;na=GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA;stc=1F4C;suc=1F4C
cp;1F45;-CWCF;-CWKCF;CWT;dm=1F41 0301;Lower;na=GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA;stc=1F4D;suc=1F4D
unassigned;1F46..1F47
-cp;1F48;cf=1F40;CWL;-CWU;dm=039F 0313;gc=Lu;na=GREEK CAPITAL LETTER OMICRON WITH PSILI;NFKC_CF=1F40;SB=UP;scf=1F40;slc=1F40;Upper
-cp;1F49;cf=1F41;CWL;-CWU;dm=039F 0314;gc=Lu;na=GREEK CAPITAL LETTER OMICRON WITH DASIA;NFKC_CF=1F41;SB=UP;scf=1F41;slc=1F41;Upper
-cp;1F4A;cf=1F42;CWL;-CWU;dm=1F48 0300;gc=Lu;na=GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA;NFKC_CF=1F42;SB=UP;scf=1F42;slc=1F42;Upper
-cp;1F4B;cf=1F43;CWL;-CWU;dm=1F49 0300;gc=Lu;na=GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA;NFKC_CF=1F43;SB=UP;scf=1F43;slc=1F43;Upper
-cp;1F4C;cf=1F44;CWL;-CWU;dm=1F48 0301;gc=Lu;na=GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA;NFKC_CF=1F44;SB=UP;scf=1F44;slc=1F44;Upper
-cp;1F4D;cf=1F45;CWL;-CWU;dm=1F49 0301;gc=Lu;na=GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA;NFKC_CF=1F45;SB=UP;scf=1F45;slc=1F45;Upper
+cp;1F48;cf=1F40;CWL;-CWU;dm=039F 0313;gc=Lu;na=GREEK CAPITAL LETTER OMICRON WITH PSILI;NFKC_CF=1F40;NFKC_SCF=1F40;SB=UP;scf=1F40;slc=1F40;Upper
+cp;1F49;cf=1F41;CWL;-CWU;dm=039F 0314;gc=Lu;na=GREEK CAPITAL LETTER OMICRON WITH DASIA;NFKC_CF=1F41;NFKC_SCF=1F41;SB=UP;scf=1F41;slc=1F41;Upper
+cp;1F4A;cf=1F42;CWL;-CWU;dm=1F48 0300;gc=Lu;na=GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA;NFKC_CF=1F42;NFKC_SCF=1F42;SB=UP;scf=1F42;slc=1F42;Upper
+cp;1F4B;cf=1F43;CWL;-CWU;dm=1F49 0300;gc=Lu;na=GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA;NFKC_CF=1F43;NFKC_SCF=1F43;SB=UP;scf=1F43;slc=1F43;Upper
+cp;1F4C;cf=1F44;CWL;-CWU;dm=1F48 0301;gc=Lu;na=GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA;NFKC_CF=1F44;NFKC_SCF=1F44;SB=UP;scf=1F44;slc=1F44;Upper
+cp;1F4D;cf=1F45;CWL;-CWU;dm=1F49 0301;gc=Lu;na=GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA;NFKC_CF=1F45;NFKC_SCF=1F45;SB=UP;scf=1F45;slc=1F45;Upper
unassigned;1F4E..1F4F
cp;1F50;cf=03C5 0313;-CWCF;-CWKCF;CWT;dm=03C5 0313;lc=1F50;Lower;na=GREEK SMALL LETTER UPSILON WITH PSILI;tc=03A5 0313;uc=03A5 0313
cp;1F51;-CWCF;-CWKCF;CWT;dm=03C5 0314;Lower;na=GREEK SMALL LETTER UPSILON WITH DASIA;stc=1F59;suc=1F59
@@ -9609,13 +9626,13 @@ cp;1F55;-CWCF;-CWKCF;CWT;dm=1F51 0301;Lower;na=GREEK SMALL LETTER UPSILON WITH D
cp;1F56;cf=03C5 0313 0342;-CWCF;-CWKCF;CWT;dm=1F50 0342;lc=1F56;Lower;na=GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI;tc=03A5 0313 0342;uc=03A5 0313 0342
cp;1F57;-CWCF;-CWKCF;CWT;dm=1F51 0342;Lower;na=GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI;stc=1F5F;suc=1F5F
unassigned;1F58
-cp;1F59;cf=1F51;CWL;-CWU;dm=03A5 0314;gc=Lu;na=GREEK CAPITAL LETTER UPSILON WITH DASIA;NFKC_CF=1F51;SB=UP;scf=1F51;slc=1F51;Upper
+cp;1F59;cf=1F51;CWL;-CWU;dm=03A5 0314;gc=Lu;na=GREEK CAPITAL LETTER UPSILON WITH DASIA;NFKC_CF=1F51;NFKC_SCF=1F51;SB=UP;scf=1F51;slc=1F51;Upper
unassigned;1F5A
-cp;1F5B;cf=1F53;CWL;-CWU;dm=1F59 0300;gc=Lu;na=GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA;NFKC_CF=1F53;SB=UP;scf=1F53;slc=1F53;Upper
+cp;1F5B;cf=1F53;CWL;-CWU;dm=1F59 0300;gc=Lu;na=GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA;NFKC_CF=1F53;NFKC_SCF=1F53;SB=UP;scf=1F53;slc=1F53;Upper
unassigned;1F5C
-cp;1F5D;cf=1F55;CWL;-CWU;dm=1F59 0301;gc=Lu;na=GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA;NFKC_CF=1F55;SB=UP;scf=1F55;slc=1F55;Upper
+cp;1F5D;cf=1F55;CWL;-CWU;dm=1F59 0301;gc=Lu;na=GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA;NFKC_CF=1F55;NFKC_SCF=1F55;SB=UP;scf=1F55;slc=1F55;Upper
unassigned;1F5E
-cp;1F5F;cf=1F57;CWL;-CWU;dm=1F59 0342;gc=Lu;na=GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI;NFKC_CF=1F57;SB=UP;scf=1F57;slc=1F57;Upper
+cp;1F5F;cf=1F57;CWL;-CWU;dm=1F59 0342;gc=Lu;na=GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI;NFKC_CF=1F57;NFKC_SCF=1F57;SB=UP;scf=1F57;slc=1F57;Upper
cp;1F60;-CWCF;-CWKCF;CWT;dm=03C9 0313;Lower;na=GREEK SMALL LETTER OMEGA WITH PSILI;stc=1F68;suc=1F68
cp;1F61;-CWCF;-CWKCF;CWT;dm=03C9 0314;Lower;na=GREEK SMALL LETTER OMEGA WITH DASIA;stc=1F69;suc=1F69
cp;1F62;-CWCF;-CWKCF;CWT;dm=1F60 0300;Lower;na=GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA;stc=1F6A;suc=1F6A
@@ -9624,28 +9641,28 @@ cp;1F64;-CWCF;-CWKCF;CWT;dm=1F60 0301;Lower;na=GREEK SMALL LETTER OMEGA WITH PSI
cp;1F65;-CWCF;-CWKCF;CWT;dm=1F61 0301;Lower;na=GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA;stc=1F6D;suc=1F6D
cp;1F66;-CWCF;-CWKCF;CWT;dm=1F60 0342;Lower;na=GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI;stc=1F6E;suc=1F6E
cp;1F67;-CWCF;-CWKCF;CWT;dm=1F61 0342;Lower;na=GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI;stc=1F6F;suc=1F6F
-cp;1F68;cf=1F60;CWL;-CWU;dm=03A9 0313;gc=Lu;na=GREEK CAPITAL LETTER OMEGA WITH PSILI;NFKC_CF=1F60;SB=UP;scf=1F60;slc=1F60;Upper
-cp;1F69;cf=1F61;CWL;-CWU;dm=03A9 0314;gc=Lu;na=GREEK CAPITAL LETTER OMEGA WITH DASIA;NFKC_CF=1F61;SB=UP;scf=1F61;slc=1F61;Upper
-cp;1F6A;cf=1F62;CWL;-CWU;dm=1F68 0300;gc=Lu;na=GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA;NFKC_CF=1F62;SB=UP;scf=1F62;slc=1F62;Upper
-cp;1F6B;cf=1F63;CWL;-CWU;dm=1F69 0300;gc=Lu;na=GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA;NFKC_CF=1F63;SB=UP;scf=1F63;slc=1F63;Upper
-cp;1F6C;cf=1F64;CWL;-CWU;dm=1F68 0301;gc=Lu;na=GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA;NFKC_CF=1F64;SB=UP;scf=1F64;slc=1F64;Upper
-cp;1F6D;cf=1F65;CWL;-CWU;dm=1F69 0301;gc=Lu;na=GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA;NFKC_CF=1F65;SB=UP;scf=1F65;slc=1F65;Upper
-cp;1F6E;cf=1F66;CWL;-CWU;dm=1F68 0342;gc=Lu;na=GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI;NFKC_CF=1F66;SB=UP;scf=1F66;slc=1F66;Upper
-cp;1F6F;cf=1F67;CWL;-CWU;dm=1F69 0342;gc=Lu;na=GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI;NFKC_CF=1F67;SB=UP;scf=1F67;slc=1F67;Upper
+cp;1F68;cf=1F60;CWL;-CWU;dm=03A9 0313;gc=Lu;na=GREEK CAPITAL LETTER OMEGA WITH PSILI;NFKC_CF=1F60;NFKC_SCF=1F60;SB=UP;scf=1F60;slc=1F60;Upper
+cp;1F69;cf=1F61;CWL;-CWU;dm=03A9 0314;gc=Lu;na=GREEK CAPITAL LETTER OMEGA WITH DASIA;NFKC_CF=1F61;NFKC_SCF=1F61;SB=UP;scf=1F61;slc=1F61;Upper
+cp;1F6A;cf=1F62;CWL;-CWU;dm=1F68 0300;gc=Lu;na=GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA;NFKC_CF=1F62;NFKC_SCF=1F62;SB=UP;scf=1F62;slc=1F62;Upper
+cp;1F6B;cf=1F63;CWL;-CWU;dm=1F69 0300;gc=Lu;na=GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA;NFKC_CF=1F63;NFKC_SCF=1F63;SB=UP;scf=1F63;slc=1F63;Upper
+cp;1F6C;cf=1F64;CWL;-CWU;dm=1F68 0301;gc=Lu;na=GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA;NFKC_CF=1F64;NFKC_SCF=1F64;SB=UP;scf=1F64;slc=1F64;Upper
+cp;1F6D;cf=1F65;CWL;-CWU;dm=1F69 0301;gc=Lu;na=GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA;NFKC_CF=1F65;NFKC_SCF=1F65;SB=UP;scf=1F65;slc=1F65;Upper
+cp;1F6E;cf=1F66;CWL;-CWU;dm=1F68 0342;gc=Lu;na=GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI;NFKC_CF=1F66;NFKC_SCF=1F66;SB=UP;scf=1F66;slc=1F66;Upper
+cp;1F6F;cf=1F67;CWL;-CWU;dm=1F69 0342;gc=Lu;na=GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI;NFKC_CF=1F67;NFKC_SCF=1F67;SB=UP;scf=1F67;slc=1F67;Upper
cp;1F70;-CWCF;-CWKCF;CWT;dm=03B1 0300;Lower;na=GREEK SMALL LETTER ALPHA WITH VARIA;stc=1FBA;suc=1FBA
-cp;1F71;Comp_Ex;-CWCF;CWT;dm=03AC;Lower;na=GREEK SMALL LETTER ALPHA WITH OXIA;NFC_QC=N;NFKC_CF=03AC;NFKC_QC=N;stc=1FBB;suc=1FBB
+cp;1F71;Comp_Ex;-CWCF;CWT;dm=03AC;Lower;na=GREEK SMALL LETTER ALPHA WITH OXIA;NFC_QC=N;NFKC_CF=03AC;NFKC_QC=N;NFKC_SCF=03AC;stc=1FBB;suc=1FBB
cp;1F72;-CWCF;-CWKCF;CWT;dm=03B5 0300;Lower;na=GREEK SMALL LETTER EPSILON WITH VARIA;stc=1FC8;suc=1FC8
-cp;1F73;Comp_Ex;-CWCF;CWT;dm=03AD;Lower;na=GREEK SMALL LETTER EPSILON WITH OXIA;NFC_QC=N;NFKC_CF=03AD;NFKC_QC=N;stc=1FC9;suc=1FC9
+cp;1F73;Comp_Ex;-CWCF;CWT;dm=03AD;Lower;na=GREEK SMALL LETTER EPSILON WITH OXIA;NFC_QC=N;NFKC_CF=03AD;NFKC_QC=N;NFKC_SCF=03AD;stc=1FC9;suc=1FC9
cp;1F74;-CWCF;-CWKCF;CWT;dm=03B7 0300;Lower;na=GREEK SMALL LETTER ETA WITH VARIA;stc=1FCA;suc=1FCA
-cp;1F75;Comp_Ex;-CWCF;CWT;dm=03AE;Lower;na=GREEK SMALL LETTER ETA WITH OXIA;NFC_QC=N;NFKC_CF=03AE;NFKC_QC=N;stc=1FCB;suc=1FCB
+cp;1F75;Comp_Ex;-CWCF;CWT;dm=03AE;Lower;na=GREEK SMALL LETTER ETA WITH OXIA;NFC_QC=N;NFKC_CF=03AE;NFKC_QC=N;NFKC_SCF=03AE;stc=1FCB;suc=1FCB
cp;1F76;-CWCF;-CWKCF;CWT;dm=03B9 0300;Lower;na=GREEK SMALL LETTER IOTA WITH VARIA;stc=1FDA;suc=1FDA
-cp;1F77;Comp_Ex;-CWCF;CWT;dm=03AF;Lower;na=GREEK SMALL LETTER IOTA WITH OXIA;NFC_QC=N;NFKC_CF=03AF;NFKC_QC=N;stc=1FDB;suc=1FDB
+cp;1F77;Comp_Ex;-CWCF;CWT;dm=03AF;Lower;na=GREEK SMALL LETTER IOTA WITH OXIA;NFC_QC=N;NFKC_CF=03AF;NFKC_QC=N;NFKC_SCF=03AF;stc=1FDB;suc=1FDB
cp;1F78;-CWCF;-CWKCF;CWT;dm=03BF 0300;Lower;na=GREEK SMALL LETTER OMICRON WITH VARIA;stc=1FF8;suc=1FF8
-cp;1F79;Comp_Ex;-CWCF;CWT;dm=03CC;Lower;na=GREEK SMALL LETTER OMICRON WITH OXIA;NFC_QC=N;NFKC_CF=03CC;NFKC_QC=N;stc=1FF9;suc=1FF9
+cp;1F79;Comp_Ex;-CWCF;CWT;dm=03CC;Lower;na=GREEK SMALL LETTER OMICRON WITH OXIA;NFC_QC=N;NFKC_CF=03CC;NFKC_QC=N;NFKC_SCF=03CC;stc=1FF9;suc=1FF9
cp;1F7A;-CWCF;-CWKCF;CWT;dm=03C5 0300;Lower;na=GREEK SMALL LETTER UPSILON WITH VARIA;stc=1FEA;suc=1FEA
-cp;1F7B;Comp_Ex;-CWCF;CWT;dm=03CD;Lower;na=GREEK SMALL LETTER UPSILON WITH OXIA;NFC_QC=N;NFKC_CF=03CD;NFKC_QC=N;stc=1FEB;suc=1FEB
+cp;1F7B;Comp_Ex;-CWCF;CWT;dm=03CD;Lower;na=GREEK SMALL LETTER UPSILON WITH OXIA;NFC_QC=N;NFKC_CF=03CD;NFKC_QC=N;NFKC_SCF=03CD;stc=1FEB;suc=1FEB
cp;1F7C;-CWCF;-CWKCF;CWT;dm=03C9 0300;Lower;na=GREEK SMALL LETTER OMEGA WITH VARIA;stc=1FFA;suc=1FFA
-cp;1F7D;Comp_Ex;-CWCF;CWT;dm=03CE;Lower;na=GREEK SMALL LETTER OMEGA WITH OXIA;NFC_QC=N;NFKC_CF=03CE;NFKC_QC=N;stc=1FFB;suc=1FFB
+cp;1F7D;Comp_Ex;-CWCF;CWT;dm=03CE;Lower;na=GREEK SMALL LETTER OMEGA WITH OXIA;NFC_QC=N;NFKC_CF=03CE;NFKC_QC=N;NFKC_SCF=03CE;stc=1FFB;suc=1FFB
unassigned;1F7E..1F7F
cp;1F80;cf=1F00 03B9;CWT;dm=1F00 0345;lc=1F80;Lower;na=GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI;NFKC_CF=1F00 03B9;stc=1F88;suc=1F88;tc=1F88;uc=1F08 0399
cp;1F81;cf=1F01 03B9;CWT;dm=1F01 0345;lc=1F81;Lower;na=GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI;NFKC_CF=1F01 03B9;stc=1F89;suc=1F89;tc=1F89;uc=1F09 0399
@@ -9655,14 +9672,14 @@ cp;1F84;cf=1F04 03B9;CWT;dm=1F04 0345;lc=1F84;Lower;na=GREEK SMALL LETTER ALPHA
cp;1F85;cf=1F05 03B9;CWT;dm=1F05 0345;lc=1F85;Lower;na=GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI;NFKC_CF=1F05 03B9;stc=1F8D;suc=1F8D;tc=1F8D;uc=1F0D 0399
cp;1F86;cf=1F06 03B9;CWT;dm=1F06 0345;lc=1F86;Lower;na=GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;NFKC_CF=1F06 03B9;stc=1F8E;suc=1F8E;tc=1F8E;uc=1F0E 0399
cp;1F87;cf=1F07 03B9;CWT;dm=1F07 0345;lc=1F87;Lower;na=GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;NFKC_CF=1F07 03B9;stc=1F8F;suc=1F8F;tc=1F8F;uc=1F0F 0399
-cp;1F88;cf=1F00 03B9;CWL;dm=1F08 0345;gc=Lt;lc=1F80;na=GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI;NFKC_CF=1F00 03B9;SB=UP;scf=1F80;slc=1F80;tc=1F88;uc=1F08 0399
-cp;1F89;cf=1F01 03B9;CWL;dm=1F09 0345;gc=Lt;lc=1F81;na=GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI;NFKC_CF=1F01 03B9;SB=UP;scf=1F81;slc=1F81;tc=1F89;uc=1F09 0399
-cp;1F8A;cf=1F02 03B9;CWL;dm=1F0A 0345;gc=Lt;lc=1F82;na=GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI;NFKC_CF=1F02 03B9;SB=UP;scf=1F82;slc=1F82;tc=1F8A;uc=1F0A 0399
-cp;1F8B;cf=1F03 03B9;CWL;dm=1F0B 0345;gc=Lt;lc=1F83;na=GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI;NFKC_CF=1F03 03B9;SB=UP;scf=1F83;slc=1F83;tc=1F8B;uc=1F0B 0399
-cp;1F8C;cf=1F04 03B9;CWL;dm=1F0C 0345;gc=Lt;lc=1F84;na=GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI;NFKC_CF=1F04 03B9;SB=UP;scf=1F84;slc=1F84;tc=1F8C;uc=1F0C 0399
-cp;1F8D;cf=1F05 03B9;CWL;dm=1F0D 0345;gc=Lt;lc=1F85;na=GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI;NFKC_CF=1F05 03B9;SB=UP;scf=1F85;slc=1F85;tc=1F8D;uc=1F0D 0399
-cp;1F8E;cf=1F06 03B9;CWL;dm=1F0E 0345;gc=Lt;lc=1F86;na=GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;NFKC_CF=1F06 03B9;SB=UP;scf=1F86;slc=1F86;tc=1F8E;uc=1F0E 0399
-cp;1F8F;cf=1F07 03B9;CWL;dm=1F0F 0345;gc=Lt;lc=1F87;na=GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;NFKC_CF=1F07 03B9;SB=UP;scf=1F87;slc=1F87;tc=1F8F;uc=1F0F 0399
+cp;1F88;cf=1F00 03B9;CWL;dm=1F08 0345;gc=Lt;lc=1F80;na=GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI;NFKC_CF=1F00 03B9;NFKC_SCF=1F80;SB=UP;scf=1F80;slc=1F80;tc=1F88;uc=1F08 0399
+cp;1F89;cf=1F01 03B9;CWL;dm=1F09 0345;gc=Lt;lc=1F81;na=GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI;NFKC_CF=1F01 03B9;NFKC_SCF=1F81;SB=UP;scf=1F81;slc=1F81;tc=1F89;uc=1F09 0399
+cp;1F8A;cf=1F02 03B9;CWL;dm=1F0A 0345;gc=Lt;lc=1F82;na=GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI;NFKC_CF=1F02 03B9;NFKC_SCF=1F82;SB=UP;scf=1F82;slc=1F82;tc=1F8A;uc=1F0A 0399
+cp;1F8B;cf=1F03 03B9;CWL;dm=1F0B 0345;gc=Lt;lc=1F83;na=GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI;NFKC_CF=1F03 03B9;NFKC_SCF=1F83;SB=UP;scf=1F83;slc=1F83;tc=1F8B;uc=1F0B 0399
+cp;1F8C;cf=1F04 03B9;CWL;dm=1F0C 0345;gc=Lt;lc=1F84;na=GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI;NFKC_CF=1F04 03B9;NFKC_SCF=1F84;SB=UP;scf=1F84;slc=1F84;tc=1F8C;uc=1F0C 0399
+cp;1F8D;cf=1F05 03B9;CWL;dm=1F0D 0345;gc=Lt;lc=1F85;na=GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI;NFKC_CF=1F05 03B9;NFKC_SCF=1F85;SB=UP;scf=1F85;slc=1F85;tc=1F8D;uc=1F0D 0399
+cp;1F8E;cf=1F06 03B9;CWL;dm=1F0E 0345;gc=Lt;lc=1F86;na=GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;NFKC_CF=1F06 03B9;NFKC_SCF=1F86;SB=UP;scf=1F86;slc=1F86;tc=1F8E;uc=1F0E 0399
+cp;1F8F;cf=1F07 03B9;CWL;dm=1F0F 0345;gc=Lt;lc=1F87;na=GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;NFKC_CF=1F07 03B9;NFKC_SCF=1F87;SB=UP;scf=1F87;slc=1F87;tc=1F8F;uc=1F0F 0399
cp;1F90;cf=1F20 03B9;CWT;dm=1F20 0345;lc=1F90;Lower;na=GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI;NFKC_CF=1F20 03B9;stc=1F98;suc=1F98;tc=1F98;uc=1F28 0399
cp;1F91;cf=1F21 03B9;CWT;dm=1F21 0345;lc=1F91;Lower;na=GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI;NFKC_CF=1F21 03B9;stc=1F99;suc=1F99;tc=1F99;uc=1F29 0399
cp;1F92;cf=1F22 03B9;CWT;dm=1F22 0345;lc=1F92;Lower;na=GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI;NFKC_CF=1F22 03B9;stc=1F9A;suc=1F9A;tc=1F9A;uc=1F2A 0399
@@ -9671,14 +9688,14 @@ cp;1F94;cf=1F24 03B9;CWT;dm=1F24 0345;lc=1F94;Lower;na=GREEK SMALL LETTER ETA WI
cp;1F95;cf=1F25 03B9;CWT;dm=1F25 0345;lc=1F95;Lower;na=GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI;NFKC_CF=1F25 03B9;stc=1F9D;suc=1F9D;tc=1F9D;uc=1F2D 0399
cp;1F96;cf=1F26 03B9;CWT;dm=1F26 0345;lc=1F96;Lower;na=GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;NFKC_CF=1F26 03B9;stc=1F9E;suc=1F9E;tc=1F9E;uc=1F2E 0399
cp;1F97;cf=1F27 03B9;CWT;dm=1F27 0345;lc=1F97;Lower;na=GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;NFKC_CF=1F27 03B9;stc=1F9F;suc=1F9F;tc=1F9F;uc=1F2F 0399
-cp;1F98;cf=1F20 03B9;CWL;dm=1F28 0345;gc=Lt;lc=1F90;na=GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI;NFKC_CF=1F20 03B9;SB=UP;scf=1F90;slc=1F90;tc=1F98;uc=1F28 0399
-cp;1F99;cf=1F21 03B9;CWL;dm=1F29 0345;gc=Lt;lc=1F91;na=GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI;NFKC_CF=1F21 03B9;SB=UP;scf=1F91;slc=1F91;tc=1F99;uc=1F29 0399
-cp;1F9A;cf=1F22 03B9;CWL;dm=1F2A 0345;gc=Lt;lc=1F92;na=GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI;NFKC_CF=1F22 03B9;SB=UP;scf=1F92;slc=1F92;tc=1F9A;uc=1F2A 0399
-cp;1F9B;cf=1F23 03B9;CWL;dm=1F2B 0345;gc=Lt;lc=1F93;na=GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI;NFKC_CF=1F23 03B9;SB=UP;scf=1F93;slc=1F93;tc=1F9B;uc=1F2B 0399
-cp;1F9C;cf=1F24 03B9;CWL;dm=1F2C 0345;gc=Lt;lc=1F94;na=GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI;NFKC_CF=1F24 03B9;SB=UP;scf=1F94;slc=1F94;tc=1F9C;uc=1F2C 0399
-cp;1F9D;cf=1F25 03B9;CWL;dm=1F2D 0345;gc=Lt;lc=1F95;na=GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI;NFKC_CF=1F25 03B9;SB=UP;scf=1F95;slc=1F95;tc=1F9D;uc=1F2D 0399
-cp;1F9E;cf=1F26 03B9;CWL;dm=1F2E 0345;gc=Lt;lc=1F96;na=GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;NFKC_CF=1F26 03B9;SB=UP;scf=1F96;slc=1F96;tc=1F9E;uc=1F2E 0399
-cp;1F9F;cf=1F27 03B9;CWL;dm=1F2F 0345;gc=Lt;lc=1F97;na=GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;NFKC_CF=1F27 03B9;SB=UP;scf=1F97;slc=1F97;tc=1F9F;uc=1F2F 0399
+cp;1F98;cf=1F20 03B9;CWL;dm=1F28 0345;gc=Lt;lc=1F90;na=GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI;NFKC_CF=1F20 03B9;NFKC_SCF=1F90;SB=UP;scf=1F90;slc=1F90;tc=1F98;uc=1F28 0399
+cp;1F99;cf=1F21 03B9;CWL;dm=1F29 0345;gc=Lt;lc=1F91;na=GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI;NFKC_CF=1F21 03B9;NFKC_SCF=1F91;SB=UP;scf=1F91;slc=1F91;tc=1F99;uc=1F29 0399
+cp;1F9A;cf=1F22 03B9;CWL;dm=1F2A 0345;gc=Lt;lc=1F92;na=GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI;NFKC_CF=1F22 03B9;NFKC_SCF=1F92;SB=UP;scf=1F92;slc=1F92;tc=1F9A;uc=1F2A 0399
+cp;1F9B;cf=1F23 03B9;CWL;dm=1F2B 0345;gc=Lt;lc=1F93;na=GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI;NFKC_CF=1F23 03B9;NFKC_SCF=1F93;SB=UP;scf=1F93;slc=1F93;tc=1F9B;uc=1F2B 0399
+cp;1F9C;cf=1F24 03B9;CWL;dm=1F2C 0345;gc=Lt;lc=1F94;na=GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI;NFKC_CF=1F24 03B9;NFKC_SCF=1F94;SB=UP;scf=1F94;slc=1F94;tc=1F9C;uc=1F2C 0399
+cp;1F9D;cf=1F25 03B9;CWL;dm=1F2D 0345;gc=Lt;lc=1F95;na=GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI;NFKC_CF=1F25 03B9;NFKC_SCF=1F95;SB=UP;scf=1F95;slc=1F95;tc=1F9D;uc=1F2D 0399
+cp;1F9E;cf=1F26 03B9;CWL;dm=1F2E 0345;gc=Lt;lc=1F96;na=GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;NFKC_CF=1F26 03B9;NFKC_SCF=1F96;SB=UP;scf=1F96;slc=1F96;tc=1F9E;uc=1F2E 0399
+cp;1F9F;cf=1F27 03B9;CWL;dm=1F2F 0345;gc=Lt;lc=1F97;na=GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;NFKC_CF=1F27 03B9;NFKC_SCF=1F97;SB=UP;scf=1F97;slc=1F97;tc=1F9F;uc=1F2F 0399
cp;1FA0;cf=1F60 03B9;CWT;dm=1F60 0345;lc=1FA0;Lower;na=GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI;NFKC_CF=1F60 03B9;stc=1FA8;suc=1FA8;tc=1FA8;uc=1F68 0399
cp;1FA1;cf=1F61 03B9;CWT;dm=1F61 0345;lc=1FA1;Lower;na=GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI;NFKC_CF=1F61 03B9;stc=1FA9;suc=1FA9;tc=1FA9;uc=1F69 0399
cp;1FA2;cf=1F62 03B9;CWT;dm=1F62 0345;lc=1FA2;Lower;na=GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI;NFKC_CF=1F62 03B9;stc=1FAA;suc=1FAA;tc=1FAA;uc=1F6A 0399
@@ -9687,14 +9704,14 @@ cp;1FA4;cf=1F64 03B9;CWT;dm=1F64 0345;lc=1FA4;Lower;na=GREEK SMALL LETTER OMEGA
cp;1FA5;cf=1F65 03B9;CWT;dm=1F65 0345;lc=1FA5;Lower;na=GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI;NFKC_CF=1F65 03B9;stc=1FAD;suc=1FAD;tc=1FAD;uc=1F6D 0399
cp;1FA6;cf=1F66 03B9;CWT;dm=1F66 0345;lc=1FA6;Lower;na=GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;NFKC_CF=1F66 03B9;stc=1FAE;suc=1FAE;tc=1FAE;uc=1F6E 0399
cp;1FA7;cf=1F67 03B9;CWT;dm=1F67 0345;lc=1FA7;Lower;na=GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;NFKC_CF=1F67 03B9;stc=1FAF;suc=1FAF;tc=1FAF;uc=1F6F 0399
-cp;1FA8;cf=1F60 03B9;CWL;dm=1F68 0345;gc=Lt;lc=1FA0;na=GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI;NFKC_CF=1F60 03B9;SB=UP;scf=1FA0;slc=1FA0;tc=1FA8;uc=1F68 0399
-cp;1FA9;cf=1F61 03B9;CWL;dm=1F69 0345;gc=Lt;lc=1FA1;na=GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI;NFKC_CF=1F61 03B9;SB=UP;scf=1FA1;slc=1FA1;tc=1FA9;uc=1F69 0399
-cp;1FAA;cf=1F62 03B9;CWL;dm=1F6A 0345;gc=Lt;lc=1FA2;na=GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI;NFKC_CF=1F62 03B9;SB=UP;scf=1FA2;slc=1FA2;tc=1FAA;uc=1F6A 0399
-cp;1FAB;cf=1F63 03B9;CWL;dm=1F6B 0345;gc=Lt;lc=1FA3;na=GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI;NFKC_CF=1F63 03B9;SB=UP;scf=1FA3;slc=1FA3;tc=1FAB;uc=1F6B 0399
-cp;1FAC;cf=1F64 03B9;CWL;dm=1F6C 0345;gc=Lt;lc=1FA4;na=GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI;NFKC_CF=1F64 03B9;SB=UP;scf=1FA4;slc=1FA4;tc=1FAC;uc=1F6C 0399
-cp;1FAD;cf=1F65 03B9;CWL;dm=1F6D 0345;gc=Lt;lc=1FA5;na=GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI;NFKC_CF=1F65 03B9;SB=UP;scf=1FA5;slc=1FA5;tc=1FAD;uc=1F6D 0399
-cp;1FAE;cf=1F66 03B9;CWL;dm=1F6E 0345;gc=Lt;lc=1FA6;na=GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;NFKC_CF=1F66 03B9;SB=UP;scf=1FA6;slc=1FA6;tc=1FAE;uc=1F6E 0399
-cp;1FAF;cf=1F67 03B9;CWL;dm=1F6F 0345;gc=Lt;lc=1FA7;na=GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;NFKC_CF=1F67 03B9;SB=UP;scf=1FA7;slc=1FA7;tc=1FAF;uc=1F6F 0399
+cp;1FA8;cf=1F60 03B9;CWL;dm=1F68 0345;gc=Lt;lc=1FA0;na=GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI;NFKC_CF=1F60 03B9;NFKC_SCF=1FA0;SB=UP;scf=1FA0;slc=1FA0;tc=1FA8;uc=1F68 0399
+cp;1FA9;cf=1F61 03B9;CWL;dm=1F69 0345;gc=Lt;lc=1FA1;na=GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI;NFKC_CF=1F61 03B9;NFKC_SCF=1FA1;SB=UP;scf=1FA1;slc=1FA1;tc=1FA9;uc=1F69 0399
+cp;1FAA;cf=1F62 03B9;CWL;dm=1F6A 0345;gc=Lt;lc=1FA2;na=GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI;NFKC_CF=1F62 03B9;NFKC_SCF=1FA2;SB=UP;scf=1FA2;slc=1FA2;tc=1FAA;uc=1F6A 0399
+cp;1FAB;cf=1F63 03B9;CWL;dm=1F6B 0345;gc=Lt;lc=1FA3;na=GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI;NFKC_CF=1F63 03B9;NFKC_SCF=1FA3;SB=UP;scf=1FA3;slc=1FA3;tc=1FAB;uc=1F6B 0399
+cp;1FAC;cf=1F64 03B9;CWL;dm=1F6C 0345;gc=Lt;lc=1FA4;na=GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI;NFKC_CF=1F64 03B9;NFKC_SCF=1FA4;SB=UP;scf=1FA4;slc=1FA4;tc=1FAC;uc=1F6C 0399
+cp;1FAD;cf=1F65 03B9;CWL;dm=1F6D 0345;gc=Lt;lc=1FA5;na=GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI;NFKC_CF=1F65 03B9;NFKC_SCF=1FA5;SB=UP;scf=1FA5;slc=1FA5;tc=1FAD;uc=1F6D 0399
+cp;1FAE;cf=1F66 03B9;CWL;dm=1F6E 0345;gc=Lt;lc=1FA6;na=GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;NFKC_CF=1F66 03B9;NFKC_SCF=1FA6;SB=UP;scf=1FA6;slc=1FA6;tc=1FAE;uc=1F6E 0399
+cp;1FAF;cf=1F67 03B9;CWL;dm=1F6F 0345;gc=Lt;lc=1FA7;na=GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;NFKC_CF=1F67 03B9;NFKC_SCF=1FA7;SB=UP;scf=1FA7;slc=1FA7;tc=1FAF;uc=1F6F 0399
cp;1FB0;-CWCF;-CWKCF;CWT;dm=03B1 0306;Lower;na=GREEK SMALL LETTER ALPHA WITH VRACHY;stc=1FB8;suc=1FB8
cp;1FB1;-CWCF;-CWKCF;CWT;dm=03B1 0304;Lower;na=GREEK SMALL LETTER ALPHA WITH MACRON;stc=1FB9;suc=1FB9
cp;1FB2;cf=1F70 03B9;CWT;dm=1F70 0345;lc=1FB2;Lower;na=GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI;NFKC_CF=1F70 03B9;tc=1FBA 0345;uc=1FBA 0399
@@ -9703,61 +9720,61 @@ cp;1FB4;cf=03AC 03B9;CWT;dm=03AC 0345;lc=1FB4;Lower;na=GREEK SMALL LETTER ALPHA
unassigned;1FB5
cp;1FB6;cf=03B1 0342;-CWCF;-CWKCF;CWT;dm=03B1 0342;lc=1FB6;Lower;na=GREEK SMALL LETTER ALPHA WITH PERISPOMENI;tc=0391 0342;uc=0391 0342
cp;1FB7;cf=03B1 0342 03B9;CWT;dm=1FB6 0345;lc=1FB7;Lower;na=GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI;NFKC_CF=1FB6 03B9;tc=0391 0342 0345;uc=0391 0342 0399
-cp;1FB8;cf=1FB0;CWL;-CWU;dm=0391 0306;gc=Lu;na=GREEK CAPITAL LETTER ALPHA WITH VRACHY;NFKC_CF=1FB0;SB=UP;scf=1FB0;slc=1FB0;Upper
-cp;1FB9;cf=1FB1;CWL;-CWU;dm=0391 0304;gc=Lu;na=GREEK CAPITAL LETTER ALPHA WITH MACRON;NFKC_CF=1FB1;SB=UP;scf=1FB1;slc=1FB1;Upper
-cp;1FBA;cf=1F70;CWL;-CWU;dm=0391 0300;gc=Lu;na=GREEK CAPITAL LETTER ALPHA WITH VARIA;NFKC_CF=1F70;SB=UP;scf=1F70;slc=1F70;Upper
-cp;1FBB;cf=1F71;Comp_Ex;CWL;-CWU;dm=0386;gc=Lu;na=GREEK CAPITAL LETTER ALPHA WITH OXIA;NFC_QC=N;NFKC_CF=03AC;NFKC_QC=N;SB=UP;scf=1F71;slc=1F71;Upper
-cp;1FBC;cf=03B1 03B9;CWL;dm=0391 0345;gc=Lt;lc=1FB3;na=GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI;NFKC_CF=03B1 03B9;SB=UP;scf=1FB3;slc=1FB3;tc=1FBC;uc=0391 0399
-cp;1FBD;-Alpha;bc=ON;-Cased;CI;-CWCF;-CWCM;-CWU;Dia;dm=0020 0313;dt=Com;gc=Sk;-IDC;-IDS;na=GREEK KORONIS;NFD_QC=Y;NFKC_CF=0020 0313;NFKC_QC=N;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1FBE;cf=03B9;Comp_Ex;-CWCF;CWT;dm=03B9;Lower;na=GREEK PROSGEGRAMMENI;NFC_QC=N;NFKC_CF=03B9;NFKC_QC=N;scf=03B9;stc=0399;suc=0399
-cp;1FBF;-Alpha;bc=ON;-Cased;CI;-CWCF;-CWCM;-CWU;Dia;dm=0020 0313;dt=Com;gc=Sk;-IDC;-IDS;na=GREEK PSILI;NFD_QC=Y;NFKC_CF=0020 0313;NFKC_QC=N;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1FC0;-Alpha;bc=ON;-Cased;CI;-CWCF;-CWCM;-CWU;Dia;dm=0020 0342;dt=Com;gc=Sk;-IDC;-IDS;na=GREEK PERISPOMENI;NFD_QC=Y;NFKC_CF=0020 0342;NFKC_QC=N;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1FC1;-Alpha;bc=ON;-Cased;CI;-CWCF;-CWCM;-CWU;Dia;dm=00A8 0342;gc=Sk;-IDC;-IDS;na=GREEK DIALYTIKA AND PERISPOMENI;NFKC_CF=0020 0308 0342;NFKC_QC=N;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1FB8;cf=1FB0;CWL;-CWU;dm=0391 0306;gc=Lu;na=GREEK CAPITAL LETTER ALPHA WITH VRACHY;NFKC_CF=1FB0;NFKC_SCF=1FB0;SB=UP;scf=1FB0;slc=1FB0;Upper
+cp;1FB9;cf=1FB1;CWL;-CWU;dm=0391 0304;gc=Lu;na=GREEK CAPITAL LETTER ALPHA WITH MACRON;NFKC_CF=1FB1;NFKC_SCF=1FB1;SB=UP;scf=1FB1;slc=1FB1;Upper
+cp;1FBA;cf=1F70;CWL;-CWU;dm=0391 0300;gc=Lu;na=GREEK CAPITAL LETTER ALPHA WITH VARIA;NFKC_CF=1F70;NFKC_SCF=1F70;SB=UP;scf=1F70;slc=1F70;Upper
+cp;1FBB;cf=1F71;Comp_Ex;CWL;-CWU;dm=0386;gc=Lu;na=GREEK CAPITAL LETTER ALPHA WITH OXIA;NFC_QC=N;NFKC_CF=03AC;NFKC_QC=N;NFKC_SCF=03AC;SB=UP;scf=1F71;slc=1F71;Upper
+cp;1FBC;cf=03B1 03B9;CWL;dm=0391 0345;gc=Lt;lc=1FB3;na=GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI;NFKC_CF=03B1 03B9;NFKC_SCF=1FB3;SB=UP;scf=1FB3;slc=1FB3;tc=1FBC;uc=0391 0399
+cp;1FBD;-Alpha;bc=ON;-Cased;CI;-CWCF;-CWCM;-CWU;Dia;dm=0020 0313;dt=Com;gc=Sk;-IDC;-IDS;na=GREEK KORONIS;NFD_QC=Y;NFKC_CF=0020 0313;NFKC_QC=N;NFKC_SCF=0020 0313;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1FBE;cf=03B9;Comp_Ex;-CWCF;CWT;dm=03B9;Lower;na=GREEK PROSGEGRAMMENI;NFC_QC=N;NFKC_CF=03B9;NFKC_QC=N;NFKC_SCF=03B9;scf=03B9;stc=0399;suc=0399
+cp;1FBF;-Alpha;bc=ON;-Cased;CI;-CWCF;-CWCM;-CWU;Dia;dm=0020 0313;dt=Com;gc=Sk;-IDC;-IDS;na=GREEK PSILI;NFD_QC=Y;NFKC_CF=0020 0313;NFKC_QC=N;NFKC_SCF=0020 0313;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1FC0;-Alpha;bc=ON;-Cased;CI;-CWCF;-CWCM;-CWU;Dia;dm=0020 0342;dt=Com;gc=Sk;-IDC;-IDS;na=GREEK PERISPOMENI;NFD_QC=Y;NFKC_CF=0020 0342;NFKC_QC=N;NFKC_SCF=0020 0342;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1FC1;-Alpha;bc=ON;-Cased;CI;-CWCF;-CWCM;-CWU;Dia;dm=00A8 0342;gc=Sk;-IDC;-IDS;na=GREEK DIALYTIKA AND PERISPOMENI;NFKC_CF=0020 0308 0342;NFKC_QC=N;NFKC_SCF=0020 0308 0342;SB=XX;WB=XX;-XIDC;-XIDS
cp;1FC2;cf=1F74 03B9;CWT;dm=1F74 0345;lc=1FC2;Lower;na=GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI;NFKC_CF=1F74 03B9;tc=1FCA 0345;uc=1FCA 0399
cp;1FC3;cf=03B7 03B9;CWT;dm=03B7 0345;lc=1FC3;Lower;na=GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI;NFKC_CF=03B7 03B9;stc=1FCC;suc=1FCC;tc=1FCC;uc=0397 0399
cp;1FC4;cf=03AE 03B9;CWT;dm=03AE 0345;lc=1FC4;Lower;na=GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI;NFKC_CF=03AE 03B9;tc=0389 0345;uc=0389 0399
unassigned;1FC5
cp;1FC6;cf=03B7 0342;-CWCF;-CWKCF;CWT;dm=03B7 0342;lc=1FC6;Lower;na=GREEK SMALL LETTER ETA WITH PERISPOMENI;tc=0397 0342;uc=0397 0342
cp;1FC7;cf=03B7 0342 03B9;CWT;dm=1FC6 0345;lc=1FC7;Lower;na=GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI;NFKC_CF=1FC6 03B9;tc=0397 0342 0345;uc=0397 0342 0399
-cp;1FC8;cf=1F72;CWL;-CWU;dm=0395 0300;gc=Lu;na=GREEK CAPITAL LETTER EPSILON WITH VARIA;NFKC_CF=1F72;SB=UP;scf=1F72;slc=1F72;Upper
-cp;1FC9;cf=1F73;Comp_Ex;CWL;-CWU;dm=0388;gc=Lu;na=GREEK CAPITAL LETTER EPSILON WITH OXIA;NFC_QC=N;NFKC_CF=03AD;NFKC_QC=N;SB=UP;scf=1F73;slc=1F73;Upper
-cp;1FCA;cf=1F74;CWL;-CWU;dm=0397 0300;gc=Lu;na=GREEK CAPITAL LETTER ETA WITH VARIA;NFKC_CF=1F74;SB=UP;scf=1F74;slc=1F74;Upper
-cp;1FCB;cf=1F75;Comp_Ex;CWL;-CWU;dm=0389;gc=Lu;na=GREEK CAPITAL LETTER ETA WITH OXIA;NFC_QC=N;NFKC_CF=03AE;NFKC_QC=N;SB=UP;scf=1F75;slc=1F75;Upper
-cp;1FCC;cf=03B7 03B9;CWL;dm=0397 0345;gc=Lt;lc=1FC3;na=GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI;NFKC_CF=03B7 03B9;SB=UP;scf=1FC3;slc=1FC3;tc=1FCC;uc=0397 0399
-cp;1FCD;-Alpha;bc=ON;-Cased;CI;-CWCF;-CWCM;-CWU;Dia;dm=1FBF 0300;gc=Sk;-IDC;-IDS;na=GREEK PSILI AND VARIA;NFKC_CF=0020 0313 0300;NFKC_QC=N;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1FCE;-Alpha;bc=ON;-Cased;CI;-CWCF;-CWCM;-CWU;Dia;dm=1FBF 0301;gc=Sk;-IDC;-IDS;na=GREEK PSILI AND OXIA;NFKC_CF=0020 0313 0301;NFKC_QC=N;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1FCF;-Alpha;bc=ON;-Cased;CI;-CWCF;-CWCM;-CWU;Dia;dm=1FBF 0342;gc=Sk;-IDC;-IDS;na=GREEK PSILI AND PERISPOMENI;NFKC_CF=0020 0313 0342;NFKC_QC=N;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1FC8;cf=1F72;CWL;-CWU;dm=0395 0300;gc=Lu;na=GREEK CAPITAL LETTER EPSILON WITH VARIA;NFKC_CF=1F72;NFKC_SCF=1F72;SB=UP;scf=1F72;slc=1F72;Upper
+cp;1FC9;cf=1F73;Comp_Ex;CWL;-CWU;dm=0388;gc=Lu;na=GREEK CAPITAL LETTER EPSILON WITH OXIA;NFC_QC=N;NFKC_CF=03AD;NFKC_QC=N;NFKC_SCF=03AD;SB=UP;scf=1F73;slc=1F73;Upper
+cp;1FCA;cf=1F74;CWL;-CWU;dm=0397 0300;gc=Lu;na=GREEK CAPITAL LETTER ETA WITH VARIA;NFKC_CF=1F74;NFKC_SCF=1F74;SB=UP;scf=1F74;slc=1F74;Upper
+cp;1FCB;cf=1F75;Comp_Ex;CWL;-CWU;dm=0389;gc=Lu;na=GREEK CAPITAL LETTER ETA WITH OXIA;NFC_QC=N;NFKC_CF=03AE;NFKC_QC=N;NFKC_SCF=03AE;SB=UP;scf=1F75;slc=1F75;Upper
+cp;1FCC;cf=03B7 03B9;CWL;dm=0397 0345;gc=Lt;lc=1FC3;na=GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI;NFKC_CF=03B7 03B9;NFKC_SCF=1FC3;SB=UP;scf=1FC3;slc=1FC3;tc=1FCC;uc=0397 0399
+cp;1FCD;-Alpha;bc=ON;-Cased;CI;-CWCF;-CWCM;-CWU;Dia;dm=1FBF 0300;gc=Sk;-IDC;-IDS;na=GREEK PSILI AND VARIA;NFKC_CF=0020 0313 0300;NFKC_QC=N;NFKC_SCF=0020 0313 0300;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1FCE;-Alpha;bc=ON;-Cased;CI;-CWCF;-CWCM;-CWU;Dia;dm=1FBF 0301;gc=Sk;-IDC;-IDS;na=GREEK PSILI AND OXIA;NFKC_CF=0020 0313 0301;NFKC_QC=N;NFKC_SCF=0020 0313 0301;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1FCF;-Alpha;bc=ON;-Cased;CI;-CWCF;-CWCM;-CWU;Dia;dm=1FBF 0342;gc=Sk;-IDC;-IDS;na=GREEK PSILI AND PERISPOMENI;NFKC_CF=0020 0313 0342;NFKC_QC=N;NFKC_SCF=0020 0313 0342;SB=XX;WB=XX;-XIDC;-XIDS
cp;1FD0;-CWCF;-CWKCF;CWT;dm=03B9 0306;Lower;na=GREEK SMALL LETTER IOTA WITH VRACHY;stc=1FD8;suc=1FD8
cp;1FD1;-CWCF;-CWKCF;CWT;dm=03B9 0304;Lower;na=GREEK SMALL LETTER IOTA WITH MACRON;stc=1FD9;suc=1FD9
cp;1FD2;cf=03B9 0308 0300;-CWCF;-CWKCF;CWT;dm=03CA 0300;lc=1FD2;Lower;na=GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA;tc=0399 0308 0300;uc=0399 0308 0300
-cp;1FD3;cf=03B9 0308 0301;Comp_Ex;-CWCF;CWT;dm=0390;lc=1FD3;Lower;na=GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA;NFC_QC=N;NFKC_CF=0390;NFKC_QC=N;tc=0399 0308 0301;uc=0399 0308 0301
+cp;1FD3;cf=03B9 0308 0301;Comp_Ex;-CWCF;CWT;dm=0390;lc=1FD3;Lower;na=GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA;NFC_QC=N;NFKC_CF=0390;NFKC_QC=N;NFKC_SCF=0390;scf=0390;tc=0399 0308 0301;uc=0399 0308 0301
unassigned;1FD4..1FD5
cp;1FD6;cf=03B9 0342;-CWCF;-CWKCF;CWT;dm=03B9 0342;lc=1FD6;Lower;na=GREEK SMALL LETTER IOTA WITH PERISPOMENI;tc=0399 0342;uc=0399 0342
cp;1FD7;cf=03B9 0308 0342;-CWCF;-CWKCF;CWT;dm=03CA 0342;lc=1FD7;Lower;na=GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI;tc=0399 0308 0342;uc=0399 0308 0342
-cp;1FD8;cf=1FD0;CWL;-CWU;dm=0399 0306;gc=Lu;na=GREEK CAPITAL LETTER IOTA WITH VRACHY;NFKC_CF=1FD0;SB=UP;scf=1FD0;slc=1FD0;Upper
-cp;1FD9;cf=1FD1;CWL;-CWU;dm=0399 0304;gc=Lu;na=GREEK CAPITAL LETTER IOTA WITH MACRON;NFKC_CF=1FD1;SB=UP;scf=1FD1;slc=1FD1;Upper
-cp;1FDA;cf=1F76;CWL;-CWU;dm=0399 0300;gc=Lu;na=GREEK CAPITAL LETTER IOTA WITH VARIA;NFKC_CF=1F76;SB=UP;scf=1F76;slc=1F76;Upper
-cp;1FDB;cf=1F77;Comp_Ex;CWL;-CWU;dm=038A;gc=Lu;na=GREEK CAPITAL LETTER IOTA WITH OXIA;NFC_QC=N;NFKC_CF=03AF;NFKC_QC=N;SB=UP;scf=1F77;slc=1F77;Upper
+cp;1FD8;cf=1FD0;CWL;-CWU;dm=0399 0306;gc=Lu;na=GREEK CAPITAL LETTER IOTA WITH VRACHY;NFKC_CF=1FD0;NFKC_SCF=1FD0;SB=UP;scf=1FD0;slc=1FD0;Upper
+cp;1FD9;cf=1FD1;CWL;-CWU;dm=0399 0304;gc=Lu;na=GREEK CAPITAL LETTER IOTA WITH MACRON;NFKC_CF=1FD1;NFKC_SCF=1FD1;SB=UP;scf=1FD1;slc=1FD1;Upper
+cp;1FDA;cf=1F76;CWL;-CWU;dm=0399 0300;gc=Lu;na=GREEK CAPITAL LETTER IOTA WITH VARIA;NFKC_CF=1F76;NFKC_SCF=1F76;SB=UP;scf=1F76;slc=1F76;Upper
+cp;1FDB;cf=1F77;Comp_Ex;CWL;-CWU;dm=038A;gc=Lu;na=GREEK CAPITAL LETTER IOTA WITH OXIA;NFC_QC=N;NFKC_CF=03AF;NFKC_QC=N;NFKC_SCF=03AF;SB=UP;scf=1F77;slc=1F77;Upper
unassigned;1FDC
-cp;1FDD;-Alpha;bc=ON;-Cased;CI;-CWCF;-CWCM;-CWU;Dia;dm=1FFE 0300;gc=Sk;-IDC;-IDS;na=GREEK DASIA AND VARIA;NFKC_CF=0020 0314 0300;NFKC_QC=N;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1FDE;-Alpha;bc=ON;-Cased;CI;-CWCF;-CWCM;-CWU;Dia;dm=1FFE 0301;gc=Sk;-IDC;-IDS;na=GREEK DASIA AND OXIA;NFKC_CF=0020 0314 0301;NFKC_QC=N;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1FDF;-Alpha;bc=ON;-Cased;CI;-CWCF;-CWCM;-CWU;Dia;dm=1FFE 0342;gc=Sk;-IDC;-IDS;na=GREEK DASIA AND PERISPOMENI;NFKC_CF=0020 0314 0342;NFKC_QC=N;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1FDD;-Alpha;bc=ON;-Cased;CI;-CWCF;-CWCM;-CWU;Dia;dm=1FFE 0300;gc=Sk;-IDC;-IDS;na=GREEK DASIA AND VARIA;NFKC_CF=0020 0314 0300;NFKC_QC=N;NFKC_SCF=0020 0314 0300;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1FDE;-Alpha;bc=ON;-Cased;CI;-CWCF;-CWCM;-CWU;Dia;dm=1FFE 0301;gc=Sk;-IDC;-IDS;na=GREEK DASIA AND OXIA;NFKC_CF=0020 0314 0301;NFKC_QC=N;NFKC_SCF=0020 0314 0301;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1FDF;-Alpha;bc=ON;-Cased;CI;-CWCF;-CWCM;-CWU;Dia;dm=1FFE 0342;gc=Sk;-IDC;-IDS;na=GREEK DASIA AND PERISPOMENI;NFKC_CF=0020 0314 0342;NFKC_QC=N;NFKC_SCF=0020 0314 0342;SB=XX;WB=XX;-XIDC;-XIDS
cp;1FE0;-CWCF;-CWKCF;CWT;dm=03C5 0306;Lower;na=GREEK SMALL LETTER UPSILON WITH VRACHY;stc=1FE8;suc=1FE8
cp;1FE1;-CWCF;-CWKCF;CWT;dm=03C5 0304;Lower;na=GREEK SMALL LETTER UPSILON WITH MACRON;stc=1FE9;suc=1FE9
cp;1FE2;cf=03C5 0308 0300;-CWCF;-CWKCF;CWT;dm=03CB 0300;lc=1FE2;Lower;na=GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA;tc=03A5 0308 0300;uc=03A5 0308 0300
-cp;1FE3;cf=03C5 0308 0301;Comp_Ex;-CWCF;CWT;dm=03B0;lc=1FE3;Lower;na=GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA;NFC_QC=N;NFKC_CF=03B0;NFKC_QC=N;tc=03A5 0308 0301;uc=03A5 0308 0301
+cp;1FE3;cf=03C5 0308 0301;Comp_Ex;-CWCF;CWT;dm=03B0;lc=1FE3;Lower;na=GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA;NFC_QC=N;NFKC_CF=03B0;NFKC_QC=N;NFKC_SCF=03B0;scf=03B0;tc=03A5 0308 0301;uc=03A5 0308 0301
cp;1FE4;cf=03C1 0313;-CWCF;-CWKCF;CWT;dm=03C1 0313;lc=1FE4;Lower;na=GREEK SMALL LETTER RHO WITH PSILI;tc=03A1 0313;uc=03A1 0313
cp;1FE5;-CWCF;-CWKCF;CWT;dm=03C1 0314;Lower;na=GREEK SMALL LETTER RHO WITH DASIA;stc=1FEC;suc=1FEC
cp;1FE6;cf=03C5 0342;-CWCF;-CWKCF;CWT;dm=03C5 0342;lc=1FE6;Lower;na=GREEK SMALL LETTER UPSILON WITH PERISPOMENI;tc=03A5 0342;uc=03A5 0342
cp;1FE7;cf=03C5 0308 0342;-CWCF;-CWKCF;CWT;dm=03CB 0342;lc=1FE7;Lower;na=GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI;tc=03A5 0308 0342;uc=03A5 0308 0342
-cp;1FE8;cf=1FE0;CWL;-CWU;dm=03A5 0306;gc=Lu;na=GREEK CAPITAL LETTER UPSILON WITH VRACHY;NFKC_CF=1FE0;SB=UP;scf=1FE0;slc=1FE0;Upper
-cp;1FE9;cf=1FE1;CWL;-CWU;dm=03A5 0304;gc=Lu;na=GREEK CAPITAL LETTER UPSILON WITH MACRON;NFKC_CF=1FE1;SB=UP;scf=1FE1;slc=1FE1;Upper
-cp;1FEA;cf=1F7A;CWL;-CWU;dm=03A5 0300;gc=Lu;na=GREEK CAPITAL LETTER UPSILON WITH VARIA;NFKC_CF=1F7A;SB=UP;scf=1F7A;slc=1F7A;Upper
-cp;1FEB;cf=1F7B;Comp_Ex;CWL;-CWU;dm=038E;gc=Lu;na=GREEK CAPITAL LETTER UPSILON WITH OXIA;NFC_QC=N;NFKC_CF=03CD;NFKC_QC=N;SB=UP;scf=1F7B;slc=1F7B;Upper
-cp;1FEC;cf=1FE5;CWL;-CWU;dm=03A1 0314;gc=Lu;na=GREEK CAPITAL LETTER RHO WITH DASIA;NFKC_CF=1FE5;SB=UP;scf=1FE5;slc=1FE5;Upper
-cp;1FED;-Alpha;bc=ON;-Cased;CI;-CWCF;-CWCM;-CWU;Dia;dm=00A8 0300;gc=Sk;-IDC;-IDS;na=GREEK DIALYTIKA AND VARIA;NFKC_CF=0020 0308 0300;NFKC_QC=N;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1FEE;-Alpha;bc=ON;-Cased;CI;Comp_Ex;-CWCF;-CWCM;-CWU;Dia;dm=0385;gc=Sk;-IDC;-IDS;na=GREEK DIALYTIKA AND OXIA;NFC_QC=N;NFKC_CF=0020 0308 0301;NFKC_QC=N;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1FEF;-Alpha;bc=ON;-Cased;CI;Comp_Ex;-CWCF;-CWCM;-CWU;Dia;dm=0060;gc=Sk;-IDC;-IDS;na=GREEK VARIA;NFC_QC=N;NFKC_CF=0060;NFKC_QC=N;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1FE8;cf=1FE0;CWL;-CWU;dm=03A5 0306;gc=Lu;na=GREEK CAPITAL LETTER UPSILON WITH VRACHY;NFKC_CF=1FE0;NFKC_SCF=1FE0;SB=UP;scf=1FE0;slc=1FE0;Upper
+cp;1FE9;cf=1FE1;CWL;-CWU;dm=03A5 0304;gc=Lu;na=GREEK CAPITAL LETTER UPSILON WITH MACRON;NFKC_CF=1FE1;NFKC_SCF=1FE1;SB=UP;scf=1FE1;slc=1FE1;Upper
+cp;1FEA;cf=1F7A;CWL;-CWU;dm=03A5 0300;gc=Lu;na=GREEK CAPITAL LETTER UPSILON WITH VARIA;NFKC_CF=1F7A;NFKC_SCF=1F7A;SB=UP;scf=1F7A;slc=1F7A;Upper
+cp;1FEB;cf=1F7B;Comp_Ex;CWL;-CWU;dm=038E;gc=Lu;na=GREEK CAPITAL LETTER UPSILON WITH OXIA;NFC_QC=N;NFKC_CF=03CD;NFKC_QC=N;NFKC_SCF=03CD;SB=UP;scf=1F7B;slc=1F7B;Upper
+cp;1FEC;cf=1FE5;CWL;-CWU;dm=03A1 0314;gc=Lu;na=GREEK CAPITAL LETTER RHO WITH DASIA;NFKC_CF=1FE5;NFKC_SCF=1FE5;SB=UP;scf=1FE5;slc=1FE5;Upper
+cp;1FED;-Alpha;bc=ON;-Cased;CI;-CWCF;-CWCM;-CWU;Dia;dm=00A8 0300;gc=Sk;-IDC;-IDS;na=GREEK DIALYTIKA AND VARIA;NFKC_CF=0020 0308 0300;NFKC_QC=N;NFKC_SCF=0020 0308 0300;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1FEE;-Alpha;bc=ON;-Cased;CI;Comp_Ex;-CWCF;-CWCM;-CWU;Dia;dm=0385;gc=Sk;-IDC;-IDS;na=GREEK DIALYTIKA AND OXIA;NFC_QC=N;NFKC_CF=0020 0308 0301;NFKC_QC=N;NFKC_SCF=0020 0308 0301;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1FEF;-Alpha;bc=ON;-Cased;CI;Comp_Ex;-CWCF;-CWCM;-CWU;Dia;dm=0060;gc=Sk;-IDC;-IDS;na=GREEK VARIA;NFC_QC=N;NFKC_CF=0060;NFKC_QC=N;NFKC_SCF=0060;SB=XX;WB=XX;-XIDC;-XIDS
unassigned;1FF0..1FF1
cp;1FF2;cf=1F7C 03B9;CWT;dm=1F7C 0345;lc=1FF2;Lower;na=GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI;NFKC_CF=1F7C 03B9;tc=1FFA 0345;uc=1FFA 0399
cp;1FF3;cf=03C9 03B9;CWT;dm=03C9 0345;lc=1FF3;Lower;na=GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI;NFKC_CF=03C9 03B9;stc=1FFC;suc=1FFC;tc=1FFC;uc=03A9 0399
@@ -9765,45 +9782,45 @@ cp;1FF4;cf=03CE 03B9;CWT;dm=03CE 0345;lc=1FF4;Lower;na=GREEK SMALL LETTER OMEGA
unassigned;1FF5
cp;1FF6;cf=03C9 0342;-CWCF;-CWKCF;CWT;dm=03C9 0342;lc=1FF6;Lower;na=GREEK SMALL LETTER OMEGA WITH PERISPOMENI;tc=03A9 0342;uc=03A9 0342
cp;1FF7;cf=03C9 0342 03B9;CWT;dm=1FF6 0345;lc=1FF7;Lower;na=GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI;NFKC_CF=1FF6 03B9;tc=03A9 0342 0345;uc=03A9 0342 0399
-cp;1FF8;cf=1F78;CWL;-CWU;dm=039F 0300;gc=Lu;na=GREEK CAPITAL LETTER OMICRON WITH VARIA;NFKC_CF=1F78;SB=UP;scf=1F78;slc=1F78;Upper
-cp;1FF9;cf=1F79;Comp_Ex;CWL;-CWU;dm=038C;gc=Lu;na=GREEK CAPITAL LETTER OMICRON WITH OXIA;NFC_QC=N;NFKC_CF=03CC;NFKC_QC=N;SB=UP;scf=1F79;slc=1F79;Upper
-cp;1FFA;cf=1F7C;CWL;-CWU;dm=03A9 0300;gc=Lu;na=GREEK CAPITAL LETTER OMEGA WITH VARIA;NFKC_CF=1F7C;SB=UP;scf=1F7C;slc=1F7C;Upper
-cp;1FFB;cf=1F7D;Comp_Ex;CWL;-CWU;dm=038F;gc=Lu;na=GREEK CAPITAL LETTER OMEGA WITH OXIA;NFC_QC=N;NFKC_CF=03CE;NFKC_QC=N;SB=UP;scf=1F7D;slc=1F7D;Upper
-cp;1FFC;cf=03C9 03B9;CWL;dm=03A9 0345;gc=Lt;lc=1FF3;na=GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI;NFKC_CF=03C9 03B9;SB=UP;scf=1FF3;slc=1FF3;tc=1FFC;uc=03A9 0399
-cp;1FFD;-Alpha;bc=ON;-Cased;CI;Comp_Ex;-CWCF;-CWCM;-CWU;Dia;dm=00B4;gc=Sk;-IDC;-IDS;lb=BB;na=GREEK OXIA;NFC_QC=N;NFKC_CF=0020 0301;NFKC_QC=N;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1FFE;-Alpha;bc=ON;-Cased;CI;-CWCF;-CWCM;-CWU;Dia;dm=0020 0314;dt=Com;gc=Sk;-IDC;-IDS;na=GREEK DASIA;NFD_QC=Y;NFKC_CF=0020 0314;NFKC_QC=N;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1FF8;cf=1F78;CWL;-CWU;dm=039F 0300;gc=Lu;na=GREEK CAPITAL LETTER OMICRON WITH VARIA;NFKC_CF=1F78;NFKC_SCF=1F78;SB=UP;scf=1F78;slc=1F78;Upper
+cp;1FF9;cf=1F79;Comp_Ex;CWL;-CWU;dm=038C;gc=Lu;na=GREEK CAPITAL LETTER OMICRON WITH OXIA;NFC_QC=N;NFKC_CF=03CC;NFKC_QC=N;NFKC_SCF=03CC;SB=UP;scf=1F79;slc=1F79;Upper
+cp;1FFA;cf=1F7C;CWL;-CWU;dm=03A9 0300;gc=Lu;na=GREEK CAPITAL LETTER OMEGA WITH VARIA;NFKC_CF=1F7C;NFKC_SCF=1F7C;SB=UP;scf=1F7C;slc=1F7C;Upper
+cp;1FFB;cf=1F7D;Comp_Ex;CWL;-CWU;dm=038F;gc=Lu;na=GREEK CAPITAL LETTER OMEGA WITH OXIA;NFC_QC=N;NFKC_CF=03CE;NFKC_QC=N;NFKC_SCF=03CE;SB=UP;scf=1F7D;slc=1F7D;Upper
+cp;1FFC;cf=03C9 03B9;CWL;dm=03A9 0345;gc=Lt;lc=1FF3;na=GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI;NFKC_CF=03C9 03B9;NFKC_SCF=1FF3;SB=UP;scf=1FF3;slc=1FF3;tc=1FFC;uc=03A9 0399
+cp;1FFD;-Alpha;bc=ON;-Cased;CI;Comp_Ex;-CWCF;-CWCM;-CWU;Dia;dm=00B4;gc=Sk;-IDC;-IDS;lb=BB;na=GREEK OXIA;NFC_QC=N;NFKC_CF=0020 0301;NFKC_QC=N;NFKC_SCF=0020 0301;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1FFE;-Alpha;bc=ON;-Cased;CI;-CWCF;-CWCM;-CWU;Dia;dm=0020 0314;dt=Com;gc=Sk;-IDC;-IDS;na=GREEK DASIA;NFD_QC=Y;NFKC_CF=0020 0314;NFKC_QC=N;NFKC_SCF=0020 0314;SB=XX;WB=XX;-XIDC;-XIDS
unassigned;1FFF
block;2000..206F;age=1.1;bc=ON;blk=Punctuation;gc=Po;Gr_Base;lb=AL;Pat_Syn;sc=Zyyy
# 2000..206F General Punctuation
# Spaces
-cp;2000;bc=WS;Comp_Ex;CWKCF;dm=2002;dt=Can;gc=Zs;lb=BA;na=EN QUAD;NFC_QC=N;NFD_QC=N;NFKC_CF=0020;NFKC_QC=N;NFKD_QC=N;-Pat_Syn;SB=SP;WB=WSegSpace;WSpace
-cp;2001;bc=WS;Comp_Ex;CWKCF;dm=2003;dt=Can;gc=Zs;lb=BA;na=EM QUAD;NFC_QC=N;NFD_QC=N;NFKC_CF=0020;NFKC_QC=N;NFKD_QC=N;-Pat_Syn;SB=SP;WB=WSegSpace;WSpace
-cp;2002;bc=WS;CWKCF;dm=0020;dt=Com;gc=Zs;lb=BA;na=EN SPACE;NFKC_CF=0020;NFKC_QC=N;NFKD_QC=N;-Pat_Syn;SB=SP;WB=WSegSpace;WSpace
-cp;2003;bc=WS;CWKCF;dm=0020;dt=Com;gc=Zs;lb=BA;na=EM SPACE;NFKC_CF=0020;NFKC_QC=N;NFKD_QC=N;-Pat_Syn;SB=SP;WB=WSegSpace;WSpace
-cp;2004;bc=WS;CWKCF;dm=0020;dt=Com;gc=Zs;lb=BA;na=THREE-PER-EM SPACE;NFKC_CF=0020;NFKC_QC=N;NFKD_QC=N;-Pat_Syn;SB=SP;WB=WSegSpace;WSpace
-cp;2005;bc=WS;CWKCF;dm=0020;dt=Com;gc=Zs;lb=BA;na=FOUR-PER-EM SPACE;NFKC_CF=0020;NFKC_QC=N;NFKD_QC=N;-Pat_Syn;SB=SP;WB=WSegSpace;WSpace
-cp;2006;bc=WS;CWKCF;dm=0020;dt=Com;gc=Zs;lb=BA;na=SIX-PER-EM SPACE;NFKC_CF=0020;NFKC_QC=N;NFKD_QC=N;-Pat_Syn;SB=SP;WB=WSegSpace;WSpace
-cp;2007;bc=WS;CWKCF;dm=0020;dt=Nb;gc=Zs;lb=GL;na=FIGURE SPACE;NFKC_CF=0020;NFKC_QC=N;NFKD_QC=N;-Pat_Syn;SB=SP;WSpace
-cp;2008;bc=WS;CWKCF;dm=0020;dt=Com;gc=Zs;lb=BA;na=PUNCTUATION SPACE;NFKC_CF=0020;NFKC_QC=N;NFKD_QC=N;-Pat_Syn;SB=SP;WB=WSegSpace;WSpace
-cp;2009;bc=WS;CWKCF;dm=0020;dt=Com;gc=Zs;lb=BA;na=THIN SPACE;NFKC_CF=0020;NFKC_QC=N;NFKD_QC=N;-Pat_Syn;SB=SP;WB=WSegSpace;WSpace
-cp;200A;bc=WS;CWKCF;dm=0020;dt=Com;gc=Zs;lb=BA;na=HAIR SPACE;NFKC_CF=0020;NFKC_QC=N;NFKD_QC=N;-Pat_Syn;SB=SP;WB=WSegSpace;WSpace
+cp;2000;bc=WS;Comp_Ex;CWKCF;dm=2002;dt=Can;gc=Zs;lb=BA;na=EN QUAD;NFC_QC=N;NFD_QC=N;NFKC_CF=0020;NFKC_QC=N;NFKC_SCF=0020;NFKD_QC=N;-Pat_Syn;SB=SP;WB=WSegSpace;WSpace
+cp;2001;bc=WS;Comp_Ex;CWKCF;dm=2003;dt=Can;gc=Zs;lb=BA;na=EM QUAD;NFC_QC=N;NFD_QC=N;NFKC_CF=0020;NFKC_QC=N;NFKC_SCF=0020;NFKD_QC=N;-Pat_Syn;SB=SP;WB=WSegSpace;WSpace
+cp;2002;bc=WS;CWKCF;dm=0020;dt=Com;gc=Zs;lb=BA;na=EN SPACE;NFKC_CF=0020;NFKC_QC=N;NFKC_SCF=0020;NFKD_QC=N;-Pat_Syn;SB=SP;WB=WSegSpace;WSpace
+cp;2003;bc=WS;CWKCF;dm=0020;dt=Com;gc=Zs;lb=BA;na=EM SPACE;NFKC_CF=0020;NFKC_QC=N;NFKC_SCF=0020;NFKD_QC=N;-Pat_Syn;SB=SP;WB=WSegSpace;WSpace
+cp;2004;bc=WS;CWKCF;dm=0020;dt=Com;gc=Zs;lb=BA;na=THREE-PER-EM SPACE;NFKC_CF=0020;NFKC_QC=N;NFKC_SCF=0020;NFKD_QC=N;-Pat_Syn;SB=SP;WB=WSegSpace;WSpace
+cp;2005;bc=WS;CWKCF;dm=0020;dt=Com;gc=Zs;lb=BA;na=FOUR-PER-EM SPACE;NFKC_CF=0020;NFKC_QC=N;NFKC_SCF=0020;NFKD_QC=N;-Pat_Syn;SB=SP;WB=WSegSpace;WSpace
+cp;2006;bc=WS;CWKCF;dm=0020;dt=Com;gc=Zs;lb=BA;na=SIX-PER-EM SPACE;NFKC_CF=0020;NFKC_QC=N;NFKC_SCF=0020;NFKD_QC=N;-Pat_Syn;SB=SP;WB=WSegSpace;WSpace
+cp;2007;bc=WS;CWKCF;dm=0020;dt=Nb;gc=Zs;lb=GL;na=FIGURE SPACE;NFKC_CF=0020;NFKC_QC=N;NFKC_SCF=0020;NFKD_QC=N;-Pat_Syn;SB=SP;WSpace
+cp;2008;bc=WS;CWKCF;dm=0020;dt=Com;gc=Zs;lb=BA;na=PUNCTUATION SPACE;NFKC_CF=0020;NFKC_QC=N;NFKC_SCF=0020;NFKD_QC=N;-Pat_Syn;SB=SP;WB=WSegSpace;WSpace
+cp;2009;bc=WS;CWKCF;dm=0020;dt=Com;gc=Zs;lb=BA;na=THIN SPACE;NFKC_CF=0020;NFKC_QC=N;NFKC_SCF=0020;NFKD_QC=N;-Pat_Syn;SB=SP;WB=WSegSpace;WSpace
+cp;200A;bc=WS;CWKCF;dm=0020;dt=Com;gc=Zs;lb=BA;na=HAIR SPACE;NFKC_CF=0020;NFKC_QC=N;NFKC_SCF=0020;NFKD_QC=N;-Pat_Syn;SB=SP;WB=WSegSpace;WSpace
# Format characters
-cp;200B;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=ZW;na=ZERO WIDTH SPACE;Name_Alias=abbreviation=ZWSP;NFKC_CF=;-Pat_Syn;SB=FO
-cp;200C;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=EX;-Gr_Base;Gr_Ext;InSC=Non_Joiner;Join_C;lb=CM;na=ZERO WIDTH NON-JOINER;Name_Alias=abbreviation=ZWNJ;NFKC_CF=;-Pat_Syn;SB=EX;sc=Zinh;WB=Extend
-cp;200D;bc=BN;CI;CWKCF;DI;EComp;gc=Cf;GCB=ZWJ;-Gr_Base;InSC=Joiner;Join_C;jt=C;lb=ZWJ;na=ZERO WIDTH JOINER;Name_Alias=abbreviation=ZWJ;NFKC_CF=;-Pat_Syn;SB=EX;sc=Zinh;WB=ZWJ
-cp;200E;bc=L;Bidi_C;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=LEFT-TO-RIGHT MARK;Name_Alias=abbreviation=LRM;NFKC_CF=;-Pat_Syn;Pat_WS;SB=FO;WB=FO
-cp;200F;bc=R;Bidi_C;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=RIGHT-TO-LEFT MARK;Name_Alias=abbreviation=RLM;NFKC_CF=;-Pat_Syn;Pat_WS;SB=FO;WB=FO
+cp;200B;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=ZW;na=ZERO WIDTH SPACE;Name_Alias=abbreviation=ZWSP;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO
+cp;200C;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=EX;-Gr_Base;Gr_Ext;IDC;InSC=Non_Joiner;Join_C;lb=CM;na=ZERO WIDTH NON-JOINER;Name_Alias=abbreviation=ZWNJ;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;200D;bc=BN;CI;CWKCF;DI;EComp;gc=Cf;GCB=ZWJ;-Gr_Base;IDC;InCB=Extend;InSC=Joiner;Join_C;jt=C;lb=ZWJ;na=ZERO WIDTH JOINER;Name_Alias=abbreviation=ZWJ;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=EX;sc=Zinh;WB=ZWJ;XIDC
+cp;200E;bc=L;Bidi_C;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=LEFT-TO-RIGHT MARK;Name_Alias=abbreviation=LRM;NFKC_CF=;NFKC_SCF=;-Pat_Syn;Pat_WS;SB=FO;WB=FO
+cp;200F;bc=R;Bidi_C;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=RIGHT-TO-LEFT MARK;Name_Alias=abbreviation=RLM;NFKC_CF=;NFKC_SCF=;-Pat_Syn;Pat_WS;SB=FO;WB=FO
# Dashes
cp;2010;Dash;ea=A;gc=Pd;Hyphen;InSC=Consonant_Placeholder;lb=BA;na=HYPHEN
-cp;2011;CWKCF;Dash;dm=2010;dt=Nb;gc=Pd;Hyphen;InSC=Consonant_Placeholder;lb=GL;na=NON-BREAKING HYPHEN;NFKC_CF=2010;NFKC_QC=N;NFKD_QC=N
+cp;2011;CWKCF;Dash;dm=2010;dt=Nb;gc=Pd;Hyphen;InSC=Consonant_Placeholder;lb=GL;na=NON-BREAKING HYPHEN;NFKC_CF=2010;NFKC_QC=N;NFKC_SCF=2010;NFKD_QC=N
cp;2012;Dash;gc=Pd;InSC=Consonant_Placeholder;lb=BA;na=FIGURE DASH
cp;2013;Dash;ea=A;gc=Pd;InSC=Consonant_Placeholder;lb=BA;na=EN DASH;SB=SC
cp;2014;Dash;ea=A;gc=Pd;InSC=Consonant_Placeholder;lb=B2;na=EM DASH;SB=SC
cp;2015;Dash;ea=A;gc=Pd;lb=AI;na=HORIZONTAL BAR
# General punctuation
cp;2016;ea=A;lb=AI;Math;na=DOUBLE VERTICAL LINE;vo=U
-cp;2017;CWKCF;dm=0020 0333;dt=Com;na=DOUBLE LOW LINE;NFKC_CF=0020 0333;NFKC_QC=N;NFKD_QC=N
+cp;2017;CWKCF;dm=0020 0333;dt=Com;na=DOUBLE LOW LINE;NFKC_CF=0020 0333;NFKC_QC=N;NFKC_SCF=0020 0333;NFKD_QC=N
# Quotation marks and apostrophe
cp;2018;CI;ea=A;gc=Pi;lb=QU;na=LEFT SINGLE QUOTATION MARK;QMark;SB=CL;WB=MB
cp;2019;CI;ea=A;gc=Pf;lb=QU;na=RIGHT SINGLE QUOTATION MARK;QMark;SB=CL;WB=MB
@@ -9818,30 +9835,30 @@ cp;2020;ea=A;lb=AI;na=DAGGER;vo=U
cp;2021;ea=A;lb=AI;na=DOUBLE DAGGER;vo=U
cp;2022;ea=A;na=BULLET
cp;2023;na=TRIANGULAR BULLET
-cp;2024;CI;CWKCF;dm=002E;dt=Com;ea=A;lb=IN;na=ONE DOT LEADER;NFKC_CF=002E;NFKC_QC=N;NFKD_QC=N;SB=AT;WB=MB
-cp;2025;CWKCF;dm=002E 002E;dt=Com;ea=A;lb=IN;na=TWO DOT LEADER;NFKC_CF=002E 002E;NFKC_QC=N;NFKD_QC=N
-cp;2026;CWKCF;dm=002E 002E 002E;dt=Com;ea=A;lb=IN;na=HORIZONTAL ELLIPSIS;NFKC_CF=002E 002E 002E;NFKC_QC=N;NFKD_QC=N
+cp;2024;CI;CWKCF;dm=002E;dt=Com;ea=A;lb=IN;na=ONE DOT LEADER;NFKC_CF=002E;NFKC_QC=N;NFKC_SCF=002E;NFKD_QC=N;SB=AT;WB=MB
+cp;2025;CWKCF;dm=002E 002E;dt=Com;ea=A;lb=IN;na=TWO DOT LEADER;NFKC_CF=002E 002E;NFKC_QC=N;NFKC_SCF=002E 002E;NFKD_QC=N
+cp;2026;CWKCF;dm=002E 002E 002E;dt=Com;ea=A;lb=IN;na=HORIZONTAL ELLIPSIS;NFKC_CF=002E 002E 002E;NFKC_QC=N;NFKC_SCF=002E 002E 002E;NFKD_QC=N
cp;2027;CI;ea=A;lb=BA;na=HYPHENATION POINT;WB=ML
# Separators
cp;2028;bc=WS;gc=Zl;GCB=CN;-Gr_Base;lb=BK;na=LINE SEPARATOR;-Pat_Syn;Pat_WS;SB=SE;WB=NL;WSpace
cp;2029;bc=B;gc=Zp;GCB=CN;-Gr_Base;lb=BK;na=PARAGRAPH SEPARATOR;-Pat_Syn;Pat_WS;SB=SE;WB=NL;WSpace
# Format characters
-cp;202A;bc=LRE;Bidi_C;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=LEFT-TO-RIGHT EMBEDDING;Name_Alias=abbreviation=LRE;NFKC_CF=;-Pat_Syn;SB=FO;WB=FO
-cp;202B;bc=RLE;Bidi_C;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=RIGHT-TO-LEFT EMBEDDING;Name_Alias=abbreviation=RLE;NFKC_CF=;-Pat_Syn;SB=FO;WB=FO
-cp;202C;bc=PDF;Bidi_C;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=POP DIRECTIONAL FORMATTING;Name_Alias=abbreviation=PDF;NFKC_CF=;-Pat_Syn;SB=FO;WB=FO
-cp;202D;bc=LRO;Bidi_C;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=LEFT-TO-RIGHT OVERRIDE;Name_Alias=abbreviation=LRO;NFKC_CF=;-Pat_Syn;SB=FO;WB=FO
-cp;202E;bc=RLO;Bidi_C;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=RIGHT-TO-LEFT OVERRIDE;Name_Alias=abbreviation=RLO;NFKC_CF=;-Pat_Syn;SB=FO;WB=FO
+cp;202A;bc=LRE;Bidi_C;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=LEFT-TO-RIGHT EMBEDDING;Name_Alias=abbreviation=LRE;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
+cp;202B;bc=RLE;Bidi_C;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=RIGHT-TO-LEFT EMBEDDING;Name_Alias=abbreviation=RLE;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
+cp;202C;bc=PDF;Bidi_C;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=POP DIRECTIONAL FORMATTING;Name_Alias=abbreviation=PDF;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
+cp;202D;bc=LRO;Bidi_C;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=LEFT-TO-RIGHT OVERRIDE;Name_Alias=abbreviation=LRO;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
+cp;202E;bc=RLO;Bidi_C;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=RIGHT-TO-LEFT OVERRIDE;Name_Alias=abbreviation=RLO;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
# Space
-cp;202F;age=3.0;bc=CS;CWKCF;dm=0020;dt=Nb;gc=Zs;lb=GL;na=NARROW NO-BREAK SPACE;Name_Alias=abbreviation=NNBSP;NFKC_CF=0020;NFKC_QC=N;NFKD_QC=N;-Pat_Syn;SB=SP;scx=Latn Mong;WB=EX;WSpace
+cp;202F;age=3.0;bc=CS;CWKCF;dm=0020;dt=Nb;gc=Zs;lb=GL;na=NARROW NO-BREAK SPACE;Name_Alias=abbreviation=NNBSP;NFKC_CF=0020;NFKC_QC=N;NFKC_SCF=0020;NFKD_QC=N;-Pat_Syn;SB=SP;scx=Latn Mong;WB=EX;WSpace
# General punctuation
cp;2030;bc=ET;ea=A;lb=PO;na=PER MILLE SIGN;vo=U
cp;2031;bc=ET;lb=PO;na=PER TEN THOUSAND SIGN;vo=U
cp;2032;bc=ET;ea=A;lb=PO;Math;na=PRIME
-cp;2033;bc=ET;CWKCF;dm=2032 2032;dt=Com;ea=A;lb=PO;Math;na=DOUBLE PRIME;NFKC_CF=2032 2032;NFKC_QC=N;NFKD_QC=N
-cp;2034;bc=ET;CWKCF;dm=2032 2032 2032;dt=Com;lb=PO;Math;na=TRIPLE PRIME;NFKC_CF=2032 2032 2032;NFKC_QC=N;NFKD_QC=N
+cp;2033;bc=ET;CWKCF;dm=2032 2032;dt=Com;ea=A;lb=PO;Math;na=DOUBLE PRIME;NFKC_CF=2032 2032;NFKC_QC=N;NFKC_SCF=2032 2032;NFKD_QC=N
+cp;2034;bc=ET;CWKCF;dm=2032 2032 2032;dt=Com;lb=PO;Math;na=TRIPLE PRIME;NFKC_CF=2032 2032 2032;NFKC_QC=N;NFKC_SCF=2032 2032 2032;NFKD_QC=N
cp;2035;ea=A;lb=PO;na=REVERSED PRIME
-cp;2036;CWKCF;dm=2035 2035;dt=Com;lb=PO;na=REVERSED DOUBLE PRIME;NFKC_CF=2035 2035;NFKC_QC=N;NFKD_QC=N
-cp;2037;CWKCF;dm=2035 2035 2035;dt=Com;lb=PO;na=REVERSED TRIPLE PRIME;NFKC_CF=2035 2035 2035;NFKC_QC=N;NFKD_QC=N
+cp;2036;CWKCF;dm=2035 2035;dt=Com;lb=PO;na=REVERSED DOUBLE PRIME;NFKC_CF=2035 2035;NFKC_QC=N;NFKC_SCF=2035 2035;NFKD_QC=N
+cp;2037;CWKCF;dm=2035 2035 2035;dt=Com;lb=PO;na=REVERSED TRIPLE PRIME;NFKC_CF=2035 2035 2035;NFKC_QC=N;NFKC_SCF=2035 2035 2035;NFKD_QC=N
cp;2038;na=CARET
# Quotation marks
cp;2039;Bidi_M;bmg=203A;gc=Pi;lb=QU;na=SINGLE LEFT-POINTING ANGLE QUOTATION MARK;QMark;SB=CL
@@ -9849,10 +9866,10 @@ cp;203A;Bidi_M;bmg=2039;gc=Pf;lb=QU;na=SINGLE RIGHT-POINTING ANGLE QUOTATION MAR
# General punctuation
cp;203B;ea=A;lb=AI;na=REFERENCE MARK;vo=U
# Double punctuation for vertical text
-cp;203C;CWKCF;dm=0021 0021;dt=Com;Emoji;ExtPict;lb=NS;na=DOUBLE EXCLAMATION MARK;NFKC_CF=0021 0021;NFKC_QC=N;NFKD_QC=N;SB=ST;STerm;Term;vo=U
+cp;203C;CWKCF;dm=0021 0021;dt=Com;Emoji;ExtPict;lb=NS;na=DOUBLE EXCLAMATION MARK;NFKC_CF=0021 0021;NFKC_QC=N;NFKC_SCF=0021 0021;NFKD_QC=N;SB=ST;STerm;Term;vo=U
# General punctuation
cp;203D;lb=NS;na=INTERROBANG;SB=ST;STerm;Term
-cp;203E;CWKCF;dm=0020 0305;dt=Com;ea=A;na=OVERLINE;NFKC_CF=0020 0305;NFKC_QC=N;NFKD_QC=N
+cp;203E;CWKCF;dm=0020 0305;dt=Com;ea=A;na=OVERLINE;NFKC_CF=0020 0305;NFKC_QC=N;NFKC_SCF=0020 0305;NFKD_QC=N
cp;203F;gc=Pc;IDC;na=UNDERTIE;-Pat_Syn;WB=EX;XIDC
cp;2040;gc=Pc;IDC;Math;na=CHARACTER TIE;-Pat_Syn;WB=EX;XIDC
cp;2041;na=CARET INSERTION POINT
@@ -9863,9 +9880,9 @@ cp;2044;bc=CS;gc=Sm;lb=IS;Math;na=FRACTION SLASH;WB=MN
cp;2045;Bidi_M;bmg=2046;bpb=2046;bpt=o;gc=Ps;lb=OP;na=LEFT SQUARE BRACKET WITH QUILL;SB=CL
cp;2046;Bidi_M;bmg=2045;bpb=2045;bpt=c;gc=Pe;lb=CL;na=RIGHT SQUARE BRACKET WITH QUILL;SB=CL
# Double punctuation for vertical text
-cp;2047;age=3.2;CWKCF;dm=003F 003F;dt=Com;lb=NS;na=DOUBLE QUESTION MARK;NFKC_CF=003F 003F;NFKC_QC=N;NFKD_QC=N;SB=ST;STerm;Term;vo=U
-cp;2048;age=3.0;CWKCF;dm=003F 0021;dt=Com;lb=NS;na=QUESTION EXCLAMATION MARK;NFKC_CF=003F 0021;NFKC_QC=N;NFKD_QC=N;SB=ST;STerm;Term;vo=U
-cp;2049;age=3.0;CWKCF;dm=0021 003F;dt=Com;Emoji;ExtPict;lb=NS;na=EXCLAMATION QUESTION MARK;NFKC_CF=0021 003F;NFKC_QC=N;NFKD_QC=N;SB=ST;STerm;Term;vo=U
+cp;2047;age=3.2;CWKCF;dm=003F 003F;dt=Com;lb=NS;na=DOUBLE QUESTION MARK;NFKC_CF=003F 003F;NFKC_QC=N;NFKC_SCF=003F 003F;NFKD_QC=N;SB=ST;STerm;Term;vo=U
+cp;2048;age=3.0;CWKCF;dm=003F 0021;dt=Com;lb=NS;na=QUESTION EXCLAMATION MARK;NFKC_CF=003F 0021;NFKC_QC=N;NFKC_SCF=003F 0021;NFKD_QC=N;SB=ST;STerm;Term;vo=U
+cp;2049;age=3.0;CWKCF;dm=0021 003F;dt=Com;Emoji;ExtPict;lb=NS;na=EXCLAMATION QUESTION MARK;NFKC_CF=0021 003F;NFKC_QC=N;NFKC_SCF=0021 003F;NFKD_QC=N;SB=ST;STerm;Term;vo=U
# General punctuation
cp;204A;age=3.0;na=TIRONIAN SIGN ET
cp;204B;age=3.0;na=REVERSED PILCROW SIGN
@@ -9882,7 +9899,7 @@ cp;2055;age=4.1;na=FLOWER PUNCTUATION MARK
# Archaic punctuation
cp;2056;age=4.1;lb=BA;na=THREE DOT PUNCTUATION
# General punctuation
-cp;2057;age=3.2;CWKCF;dm=2032 2032 2032 2032;dt=Com;lb=PO;na=QUADRUPLE PRIME;NFKC_CF=2032 2032 2032 2032;NFKC_QC=N;NFKD_QC=N
+cp;2057;age=3.2;CWKCF;dm=2032 2032 2032 2032;dt=Com;lb=PO;na=QUADRUPLE PRIME;NFKC_CF=2032 2032 2032 2032;NFKC_QC=N;NFKC_SCF=2032 2032 2032 2032;NFKD_QC=N
# Archaic punctuation
cp;2058;age=4.1;lb=BA;na=FOUR DOT PUNCTUATION
cp;2059;age=4.1;lb=BA;na=FIVE DOT PUNCTUATION
@@ -9892,77 +9909,77 @@ cp;205C;age=4.1;na=DOTTED CROSS
cp;205D;age=4.1;lb=BA;na=TRICOLON
cp;205E;age=4.1;lb=BA;na=VERTICAL FOUR DOTS
# Space
-cp;205F;age=3.2;bc=WS;CWKCF;dm=0020;dt=Com;gc=Zs;lb=BA;na=MEDIUM MATHEMATICAL SPACE;Name_Alias=abbreviation=MMSP;NFKC_CF=0020;NFKC_QC=N;NFKD_QC=N;-Pat_Syn;SB=SP;WB=WSegSpace;WSpace
+cp;205F;age=3.2;bc=WS;CWKCF;dm=0020;dt=Com;gc=Zs;lb=BA;na=MEDIUM MATHEMATICAL SPACE;Name_Alias=abbreviation=MMSP;NFKC_CF=0020;NFKC_QC=N;NFKC_SCF=0020;NFKD_QC=N;-Pat_Syn;SB=SP;WB=WSegSpace;WSpace
# Format character
-cp;2060;age=3.2;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=WJ;na=WORD JOINER;Name_Alias=abbreviation=WJ;NFKC_CF=;-Pat_Syn;SB=FO;WB=FO
+cp;2060;age=3.2;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=WJ;na=WORD JOINER;Name_Alias=abbreviation=WJ;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
# Invisible operators
-cp;2061;age=3.2;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;Math;na=FUNCTION APPLICATION;NFKC_CF=;-Pat_Syn;SB=FO;WB=FO
-cp;2062;age=3.2;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;Math;na=INVISIBLE TIMES;NFKC_CF=;-Pat_Syn;SB=FO;WB=FO
-cp;2063;age=3.2;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;Math;na=INVISIBLE SEPARATOR;NFKC_CF=;-Pat_Syn;SB=FO;WB=FO
-cp;2064;age=5.1;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;Math;na=INVISIBLE PLUS;NFKC_CF=;-Pat_Syn;SB=FO;WB=FO
-unassigned;2065;bc=BN;CWKCF;DI;GCB=CN;NFKC_CF=;vo=U
+cp;2061;age=3.2;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;Math;na=FUNCTION APPLICATION;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
+cp;2062;age=3.2;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;Math;na=INVISIBLE TIMES;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
+cp;2063;age=3.2;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;Math;na=INVISIBLE SEPARATOR;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
+cp;2064;age=5.1;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;Math;na=INVISIBLE PLUS;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
+unassigned;2065;bc=BN;CWKCF;DI;GCB=CN;NFKC_CF=;NFKC_SCF=;vo=U
# Format characters
-cp;2066;age=6.3;bc=LRI;Bidi_C;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;lb=CM;na=LEFT-TO-RIGHT ISOLATE;Name_Alias=abbreviation=LRI;NFKC_CF=;-Pat_Syn;SB=FO;WB=FO
-cp;2067;age=6.3;bc=RLI;Bidi_C;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;lb=CM;na=RIGHT-TO-LEFT ISOLATE;Name_Alias=abbreviation=RLI;NFKC_CF=;-Pat_Syn;SB=FO;WB=FO
-cp;2068;age=6.3;bc=FSI;Bidi_C;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;lb=CM;na=FIRST STRONG ISOLATE;Name_Alias=abbreviation=FSI;NFKC_CF=;-Pat_Syn;SB=FO;WB=FO
-cp;2069;age=6.3;bc=PDI;Bidi_C;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;lb=CM;na=POP DIRECTIONAL ISOLATE;Name_Alias=abbreviation=PDI;NFKC_CF=;-Pat_Syn;SB=FO;WB=FO
+cp;2066;age=6.3;bc=LRI;Bidi_C;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;lb=CM;na=LEFT-TO-RIGHT ISOLATE;Name_Alias=abbreviation=LRI;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
+cp;2067;age=6.3;bc=RLI;Bidi_C;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;lb=CM;na=RIGHT-TO-LEFT ISOLATE;Name_Alias=abbreviation=RLI;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
+cp;2068;age=6.3;bc=FSI;Bidi_C;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;lb=CM;na=FIRST STRONG ISOLATE;Name_Alias=abbreviation=FSI;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
+cp;2069;age=6.3;bc=PDI;Bidi_C;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;lb=CM;na=POP DIRECTIONAL ISOLATE;Name_Alias=abbreviation=PDI;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
# Deprecated
-cp;206A;bc=BN;CI;CWKCF;Dep;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=INHIBIT SYMMETRIC SWAPPING;NFKC_CF=;-Pat_Syn;SB=FO;WB=FO
-cp;206B;bc=BN;CI;CWKCF;Dep;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=ACTIVATE SYMMETRIC SWAPPING;NFKC_CF=;-Pat_Syn;SB=FO;WB=FO
-cp;206C;bc=BN;CI;CWKCF;Dep;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=INHIBIT ARABIC FORM SHAPING;NFKC_CF=;-Pat_Syn;SB=FO;WB=FO
-cp;206D;bc=BN;CI;CWKCF;Dep;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=ACTIVATE ARABIC FORM SHAPING;NFKC_CF=;-Pat_Syn;SB=FO;WB=FO
-cp;206E;bc=BN;CI;CWKCF;Dep;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=NATIONAL DIGIT SHAPES;NFKC_CF=;-Pat_Syn;SB=FO;WB=FO
-cp;206F;bc=BN;CI;CWKCF;Dep;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=NOMINAL DIGIT SHAPES;NFKC_CF=;-Pat_Syn;SB=FO;WB=FO
-
-block;2070..209F;age=1.1;bc=EN;blk=Super_And_Sub;CWKCF;dt=Sub;gc=No;Gr_Base;lb=AL;NFKC_QC=N;NFKD_QC=N;sc=Zyyy
+cp;206A;bc=BN;CI;CWKCF;Dep;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=INHIBIT SYMMETRIC SWAPPING;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
+cp;206B;bc=BN;CI;CWKCF;Dep;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=ACTIVATE SYMMETRIC SWAPPING;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
+cp;206C;bc=BN;CI;CWKCF;Dep;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=INHIBIT ARABIC FORM SHAPING;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
+cp;206D;bc=BN;CI;CWKCF;Dep;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=ACTIVATE ARABIC FORM SHAPING;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
+cp;206E;bc=BN;CI;CWKCF;Dep;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=NATIONAL DIGIT SHAPES;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
+cp;206F;bc=BN;CI;CWKCF;Dep;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=NOMINAL DIGIT SHAPES;NFKC_CF=;NFKC_SCF=;-Pat_Syn;SB=FO;WB=FO
+
+block;2070..209F;age=1.1;bc=EN;blk=Super_And_Sub;CWKCF;dt=Sub;gc=No;Gr_Base;ID_Compat_Math_Continue;lb=AL;NFKC_QC=N;NFKC_SCF=0028;NFKD_QC=N;sc=Zyyy
# 2070..209F Superscripts and Subscripts
# Superscripts
-cp;2070;dm=0030;dt=Sup;na=SUPERSCRIPT ZERO;NFKC_CF=0030;nt=Di;nv=0
-cp;2071;age=3.2;Alpha;bc=L;Cased;CI;dm=0069;dt=Sup;gc=Lm;IDC;IDS;Lower;na=SUPERSCRIPT LATIN SMALL LETTER I;NFKC_CF=0069;SB=LO;sc=Latn;SD;WB=LE;XIDC;XIDS
+cp;2070;dm=0030;dt=Sup;na=SUPERSCRIPT ZERO;NFKC_CF=0030;NFKC_SCF=0030;nt=Di;nv=0
+cp;2071;age=3.2;Alpha;bc=L;Cased;CI;dm=0069;dt=Sup;gc=Lm;IDC;-ID_Compat_Math_Continue;IDS;Lower;na=SUPERSCRIPT LATIN SMALL LETTER I;NFKC_CF=0069;NFKC_SCF=0069;SB=LO;sc=Latn;SD;WB=LE;XIDC;XIDS
unassigned;2072..2073
-cp;2074;dm=0034;dt=Sup;ea=A;InSC=Syllable_Modifier;lb=AI;na=SUPERSCRIPT FOUR;NFKC_CF=0034;nt=Di;nv=4
-cp;2075;dm=0035;dt=Sup;na=SUPERSCRIPT FIVE;NFKC_CF=0035;nt=Di;nv=5
-cp;2076;dm=0036;dt=Sup;na=SUPERSCRIPT SIX;NFKC_CF=0036;nt=Di;nv=6
-cp;2077;dm=0037;dt=Sup;na=SUPERSCRIPT SEVEN;NFKC_CF=0037;nt=Di;nv=7
-cp;2078;dm=0038;dt=Sup;na=SUPERSCRIPT EIGHT;NFKC_CF=0038;nt=Di;nv=8
-cp;2079;dm=0039;dt=Sup;na=SUPERSCRIPT NINE;NFKC_CF=0039;nt=Di;nv=9
-cp;207A;bc=ES;dm=002B;dt=Sup;gc=Sm;Math;na=SUPERSCRIPT PLUS SIGN;NFKC_CF=002B
-cp;207B;bc=ES;Dash;dm=2212;dt=Sup;gc=Sm;Math;na=SUPERSCRIPT MINUS;NFKC_CF=2212
-cp;207C;bc=ON;dm=003D;dt=Sup;gc=Sm;Math;na=SUPERSCRIPT EQUALS SIGN;NFKC_CF=003D
+cp;2074;dm=0034;dt=Sup;ea=A;InSC=Syllable_Modifier;lb=AI;na=SUPERSCRIPT FOUR;NFKC_CF=0034;NFKC_SCF=0034;nt=Di;nv=4
+cp;2075;dm=0035;dt=Sup;na=SUPERSCRIPT FIVE;NFKC_CF=0035;NFKC_SCF=0035;nt=Di;nv=5
+cp;2076;dm=0036;dt=Sup;na=SUPERSCRIPT SIX;NFKC_CF=0036;NFKC_SCF=0036;nt=Di;nv=6
+cp;2077;dm=0037;dt=Sup;na=SUPERSCRIPT SEVEN;NFKC_CF=0037;NFKC_SCF=0037;nt=Di;nv=7
+cp;2078;dm=0038;dt=Sup;na=SUPERSCRIPT EIGHT;NFKC_CF=0038;NFKC_SCF=0038;nt=Di;nv=8
+cp;2079;dm=0039;dt=Sup;na=SUPERSCRIPT NINE;NFKC_CF=0039;NFKC_SCF=0039;nt=Di;nv=9
+cp;207A;bc=ES;dm=002B;dt=Sup;gc=Sm;Math;na=SUPERSCRIPT PLUS SIGN;NFKC_CF=002B;NFKC_SCF=002B
+cp;207B;bc=ES;Dash;dm=2212;dt=Sup;gc=Sm;Math;na=SUPERSCRIPT MINUS;NFKC_CF=2212;NFKC_SCF=2212
+cp;207C;bc=ON;dm=003D;dt=Sup;gc=Sm;Math;na=SUPERSCRIPT EQUALS SIGN;NFKC_CF=003D;NFKC_SCF=003D
cp;207D;bc=ON;Bidi_M;bmg=207E;bpb=207E;bpt=o;dm=0028;dt=Sup;gc=Ps;lb=OP;Math;na=SUPERSCRIPT LEFT PARENTHESIS;NFKC_CF=0028;SB=CL
-cp;207E;bc=ON;Bidi_M;bmg=207D;bpb=207D;bpt=c;dm=0029;dt=Sup;gc=Pe;lb=CL;Math;na=SUPERSCRIPT RIGHT PARENTHESIS;NFKC_CF=0029;SB=CL
-cp;207F;Alpha;bc=L;Cased;CI;dm=006E;dt=Sup;ea=A;gc=Lm;IDC;IDS;lb=AI;Lower;na=SUPERSCRIPT LATIN SMALL LETTER N;NFKC_CF=006E;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
+cp;207E;bc=ON;Bidi_M;bmg=207D;bpb=207D;bpt=c;dm=0029;dt=Sup;gc=Pe;lb=CL;Math;na=SUPERSCRIPT RIGHT PARENTHESIS;NFKC_CF=0029;NFKC_SCF=0029;SB=CL
+cp;207F;Alpha;bc=L;Cased;CI;dm=006E;dt=Sup;ea=A;gc=Lm;IDC;-ID_Compat_Math_Continue;IDS;lb=AI;Lower;na=SUPERSCRIPT LATIN SMALL LETTER N;NFKC_CF=006E;NFKC_SCF=006E;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
# Subscripts
-cp;2080;dm=0030;na=SUBSCRIPT ZERO;NFKC_CF=0030;nt=Di;nv=0
-cp;2081;dm=0031;ea=A;lb=AI;na=SUBSCRIPT ONE;NFKC_CF=0031;nt=Di;nv=1
-cp;2082;dm=0032;ea=A;InSC=Syllable_Modifier;lb=AI;na=SUBSCRIPT TWO;NFKC_CF=0032;nt=Di;nv=2
-cp;2083;dm=0033;ea=A;InSC=Syllable_Modifier;lb=AI;na=SUBSCRIPT THREE;NFKC_CF=0033;nt=Di;nv=3
-cp;2084;dm=0034;ea=A;InSC=Syllable_Modifier;lb=AI;na=SUBSCRIPT FOUR;NFKC_CF=0034;nt=Di;nv=4
-cp;2085;dm=0035;na=SUBSCRIPT FIVE;NFKC_CF=0035;nt=Di;nv=5
-cp;2086;dm=0036;na=SUBSCRIPT SIX;NFKC_CF=0036;nt=Di;nv=6
-cp;2087;dm=0037;na=SUBSCRIPT SEVEN;NFKC_CF=0037;nt=Di;nv=7
-cp;2088;dm=0038;na=SUBSCRIPT EIGHT;NFKC_CF=0038;nt=Di;nv=8
-cp;2089;dm=0039;na=SUBSCRIPT NINE;NFKC_CF=0039;nt=Di;nv=9
-cp;208A;bc=ES;dm=002B;gc=Sm;Math;na=SUBSCRIPT PLUS SIGN;NFKC_CF=002B
-cp;208B;bc=ES;Dash;dm=2212;gc=Sm;Math;na=SUBSCRIPT MINUS;NFKC_CF=2212
-cp;208C;bc=ON;dm=003D;gc=Sm;Math;na=SUBSCRIPT EQUALS SIGN;NFKC_CF=003D
+cp;2080;dm=0030;na=SUBSCRIPT ZERO;NFKC_CF=0030;NFKC_SCF=0030;nt=Di;nv=0
+cp;2081;dm=0031;ea=A;lb=AI;na=SUBSCRIPT ONE;NFKC_CF=0031;NFKC_SCF=0031;nt=Di;nv=1
+cp;2082;dm=0032;ea=A;InSC=Syllable_Modifier;lb=AI;na=SUBSCRIPT TWO;NFKC_CF=0032;NFKC_SCF=0032;nt=Di;nv=2
+cp;2083;dm=0033;ea=A;InSC=Syllable_Modifier;lb=AI;na=SUBSCRIPT THREE;NFKC_CF=0033;NFKC_SCF=0033;nt=Di;nv=3
+cp;2084;dm=0034;ea=A;InSC=Syllable_Modifier;lb=AI;na=SUBSCRIPT FOUR;NFKC_CF=0034;NFKC_SCF=0034;nt=Di;nv=4
+cp;2085;dm=0035;na=SUBSCRIPT FIVE;NFKC_CF=0035;NFKC_SCF=0035;nt=Di;nv=5
+cp;2086;dm=0036;na=SUBSCRIPT SIX;NFKC_CF=0036;NFKC_SCF=0036;nt=Di;nv=6
+cp;2087;dm=0037;na=SUBSCRIPT SEVEN;NFKC_CF=0037;NFKC_SCF=0037;nt=Di;nv=7
+cp;2088;dm=0038;na=SUBSCRIPT EIGHT;NFKC_CF=0038;NFKC_SCF=0038;nt=Di;nv=8
+cp;2089;dm=0039;na=SUBSCRIPT NINE;NFKC_CF=0039;NFKC_SCF=0039;nt=Di;nv=9
+cp;208A;bc=ES;dm=002B;gc=Sm;Math;na=SUBSCRIPT PLUS SIGN;NFKC_CF=002B;NFKC_SCF=002B
+cp;208B;bc=ES;Dash;dm=2212;gc=Sm;Math;na=SUBSCRIPT MINUS;NFKC_CF=2212;NFKC_SCF=2212
+cp;208C;bc=ON;dm=003D;gc=Sm;Math;na=SUBSCRIPT EQUALS SIGN;NFKC_CF=003D;NFKC_SCF=003D
cp;208D;bc=ON;Bidi_M;bmg=208E;bpb=208E;bpt=o;dm=0028;gc=Ps;lb=OP;Math;na=SUBSCRIPT LEFT PARENTHESIS;NFKC_CF=0028;SB=CL
-cp;208E;bc=ON;Bidi_M;bmg=208D;bpb=208D;bpt=c;dm=0029;gc=Pe;lb=CL;Math;na=SUBSCRIPT RIGHT PARENTHESIS;NFKC_CF=0029;SB=CL
+cp;208E;bc=ON;Bidi_M;bmg=208D;bpb=208D;bpt=c;dm=0029;gc=Pe;lb=CL;Math;na=SUBSCRIPT RIGHT PARENTHESIS;NFKC_CF=0029;NFKC_SCF=0029;SB=CL
unassigned;208F
-cp;2090;age=4.1;Alpha;bc=L;Cased;CI;dm=0061;gc=Lm;IDC;IDS;Lower;na=LATIN SUBSCRIPT SMALL LETTER A;NFKC_CF=0061;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
-cp;2091;age=4.1;Alpha;bc=L;Cased;CI;dm=0065;gc=Lm;IDC;IDS;Lower;na=LATIN SUBSCRIPT SMALL LETTER E;NFKC_CF=0065;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
-cp;2092;age=4.1;Alpha;bc=L;Cased;CI;dm=006F;gc=Lm;IDC;IDS;Lower;na=LATIN SUBSCRIPT SMALL LETTER O;NFKC_CF=006F;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
-cp;2093;age=4.1;Alpha;bc=L;Cased;CI;dm=0078;gc=Lm;IDC;IDS;Lower;na=LATIN SUBSCRIPT SMALL LETTER X;NFKC_CF=0078;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
-cp;2094;age=4.1;Alpha;bc=L;Cased;CI;dm=0259;gc=Lm;IDC;IDS;Lower;na=LATIN SUBSCRIPT SMALL LETTER SCHWA;NFKC_CF=0259;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
+cp;2090;age=4.1;Alpha;bc=L;Cased;CI;dm=0061;gc=Lm;IDC;-ID_Compat_Math_Continue;IDS;Lower;na=LATIN SUBSCRIPT SMALL LETTER A;NFKC_CF=0061;NFKC_SCF=0061;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
+cp;2091;age=4.1;Alpha;bc=L;Cased;CI;dm=0065;gc=Lm;IDC;-ID_Compat_Math_Continue;IDS;Lower;na=LATIN SUBSCRIPT SMALL LETTER E;NFKC_CF=0065;NFKC_SCF=0065;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
+cp;2092;age=4.1;Alpha;bc=L;Cased;CI;dm=006F;gc=Lm;IDC;-ID_Compat_Math_Continue;IDS;Lower;na=LATIN SUBSCRIPT SMALL LETTER O;NFKC_CF=006F;NFKC_SCF=006F;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
+cp;2093;age=4.1;Alpha;bc=L;Cased;CI;dm=0078;gc=Lm;IDC;-ID_Compat_Math_Continue;IDS;Lower;na=LATIN SUBSCRIPT SMALL LETTER X;NFKC_CF=0078;NFKC_SCF=0078;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
+cp;2094;age=4.1;Alpha;bc=L;Cased;CI;dm=0259;gc=Lm;IDC;-ID_Compat_Math_Continue;IDS;Lower;na=LATIN SUBSCRIPT SMALL LETTER SCHWA;NFKC_CF=0259;NFKC_SCF=0259;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
# Subscripts for UPA
-cp;2095;age=6.0;Alpha;bc=L;Cased;CI;dm=0068;gc=Lm;IDC;IDS;Lower;na=LATIN SUBSCRIPT SMALL LETTER H;NFKC_CF=0068;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
-cp;2096;age=6.0;Alpha;bc=L;Cased;CI;dm=006B;gc=Lm;IDC;IDS;Lower;na=LATIN SUBSCRIPT SMALL LETTER K;NFKC_CF=006B;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
-cp;2097;age=6.0;Alpha;bc=L;Cased;CI;dm=006C;gc=Lm;IDC;IDS;Lower;na=LATIN SUBSCRIPT SMALL LETTER L;NFKC_CF=006C;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
-cp;2098;age=6.0;Alpha;bc=L;Cased;CI;dm=006D;gc=Lm;IDC;IDS;Lower;na=LATIN SUBSCRIPT SMALL LETTER M;NFKC_CF=006D;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
-cp;2099;age=6.0;Alpha;bc=L;Cased;CI;dm=006E;gc=Lm;IDC;IDS;Lower;na=LATIN SUBSCRIPT SMALL LETTER N;NFKC_CF=006E;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
-cp;209A;age=6.0;Alpha;bc=L;Cased;CI;dm=0070;gc=Lm;IDC;IDS;Lower;na=LATIN SUBSCRIPT SMALL LETTER P;NFKC_CF=0070;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
-cp;209B;age=6.0;Alpha;bc=L;Cased;CI;dm=0073;gc=Lm;IDC;IDS;Lower;na=LATIN SUBSCRIPT SMALL LETTER S;NFKC_CF=0073;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
-cp;209C;age=6.0;Alpha;bc=L;Cased;CI;dm=0074;gc=Lm;IDC;IDS;Lower;na=LATIN SUBSCRIPT SMALL LETTER T;NFKC_CF=0074;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
+cp;2095;age=6.0;Alpha;bc=L;Cased;CI;dm=0068;gc=Lm;IDC;-ID_Compat_Math_Continue;IDS;Lower;na=LATIN SUBSCRIPT SMALL LETTER H;NFKC_CF=0068;NFKC_SCF=0068;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
+cp;2096;age=6.0;Alpha;bc=L;Cased;CI;dm=006B;gc=Lm;IDC;-ID_Compat_Math_Continue;IDS;Lower;na=LATIN SUBSCRIPT SMALL LETTER K;NFKC_CF=006B;NFKC_SCF=006B;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
+cp;2097;age=6.0;Alpha;bc=L;Cased;CI;dm=006C;gc=Lm;IDC;-ID_Compat_Math_Continue;IDS;Lower;na=LATIN SUBSCRIPT SMALL LETTER L;NFKC_CF=006C;NFKC_SCF=006C;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
+cp;2098;age=6.0;Alpha;bc=L;Cased;CI;dm=006D;gc=Lm;IDC;-ID_Compat_Math_Continue;IDS;Lower;na=LATIN SUBSCRIPT SMALL LETTER M;NFKC_CF=006D;NFKC_SCF=006D;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
+cp;2099;age=6.0;Alpha;bc=L;Cased;CI;dm=006E;gc=Lm;IDC;-ID_Compat_Math_Continue;IDS;Lower;na=LATIN SUBSCRIPT SMALL LETTER N;NFKC_CF=006E;NFKC_SCF=006E;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
+cp;209A;age=6.0;Alpha;bc=L;Cased;CI;dm=0070;gc=Lm;IDC;-ID_Compat_Math_Continue;IDS;Lower;na=LATIN SUBSCRIPT SMALL LETTER P;NFKC_CF=0070;NFKC_SCF=0070;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
+cp;209B;age=6.0;Alpha;bc=L;Cased;CI;dm=0073;gc=Lm;IDC;-ID_Compat_Math_Continue;IDS;Lower;na=LATIN SUBSCRIPT SMALL LETTER S;NFKC_CF=0073;NFKC_SCF=0073;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
+cp;209C;age=6.0;Alpha;bc=L;Cased;CI;dm=0074;gc=Lm;IDC;-ID_Compat_Math_Continue;IDS;Lower;na=LATIN SUBSCRIPT SMALL LETTER T;NFKC_CF=0074;NFKC_SCF=0074;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
unassigned;209D..209F
block;20A0..20CF;age=1.1;bc=ET;blk=Currency_Symbols;gc=Sc;Gr_Base;lb=PR;sc=Zyyy
@@ -9976,7 +9993,7 @@ cp;20A4;na=LIRA SIGN
cp;20A5;na=MILL SIGN
cp;20A6;na=NAIRA SIGN
cp;20A7;lb=PO;na=PESETA SIGN
-cp;20A8;CWKCF;dm=0052 0073;dt=Com;FC_NFKC=0072 0073;na=RUPEE SIGN;NFKC_CF=0072 0073;NFKC_QC=N;NFKD_QC=N
+cp;20A8;CWKCF;dm=0052 0073;dt=Com;FC_NFKC=0072 0073;na=RUPEE SIGN;NFKC_CF=0072 0073;NFKC_QC=N;NFKC_SCF=0072 0073;NFKD_QC=N
cp;20A9;ea=H;na=WON SIGN
cp;20AA;na=NEW SHEQEL SIGN
cp;20AB;age=2.0;na=DONG SIGN
@@ -10003,7 +10020,7 @@ cp;20BF;age=10.0;na=BITCOIN SIGN
cp;20C0;age=14.0;lb=PO;na=SOM SIGN
unassigned;20C1..20CF;bc=ET;lb=PR
-block;20D0..20FF;age=1.1;bc=NSM;blk=Diacriticals_For_Symbols;ccc=230;CI;gc=Mn;GCB=EX;Gr_Ext;IDC;jt=T;lb=CM;Math;SB=EX;sc=Zinh;WB=Extend;XIDC
+block;20D0..20FF;age=1.1;bc=NSM;blk=Diacriticals_For_Symbols;ccc=230;CI;gc=Mn;GCB=EX;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;Math;SB=EX;sc=Zinh;WB=Extend;XIDC
# 20D0..20FF Combining Diacritical Marks for Symbols
# Combining diacritical marks for symbols
cp;20D0;na=COMBINING LEFT HARPOON ABOVE
@@ -10020,16 +10037,16 @@ cp;20DA;ccc=1;na=COMBINING ANTICLOCKWISE RING OVERLAY
cp;20DB;na=COMBINING THREE DOTS ABOVE
cp;20DC;na=COMBINING FOUR DOTS ABOVE
# Enclosing diacritics
-cp;20DD;ccc=0;gc=Me;-IDC;-Math;na=COMBINING ENCLOSING CIRCLE;vo=U;-XIDC
-cp;20DE;ccc=0;gc=Me;-IDC;-Math;na=COMBINING ENCLOSING SQUARE;vo=U;-XIDC
-cp;20DF;ccc=0;gc=Me;-IDC;-Math;na=COMBINING ENCLOSING DIAMOND;vo=U;-XIDC
-cp;20E0;ccc=0;gc=Me;-IDC;-Math;na=COMBINING ENCLOSING CIRCLE BACKSLASH;vo=U;-XIDC
+cp;20DD;ccc=0;gc=Me;-IDC;InCB=None;-Math;na=COMBINING ENCLOSING CIRCLE;vo=U;-XIDC
+cp;20DE;ccc=0;gc=Me;-IDC;InCB=None;-Math;na=COMBINING ENCLOSING SQUARE;vo=U;-XIDC
+cp;20DF;ccc=0;gc=Me;-IDC;InCB=None;-Math;na=COMBINING ENCLOSING DIAMOND;vo=U;-XIDC
+cp;20E0;ccc=0;gc=Me;-IDC;InCB=None;-Math;na=COMBINING ENCLOSING CIRCLE BACKSLASH;vo=U;-XIDC
# Additional diacritical mark for symbols
cp;20E1;na=COMBINING LEFT RIGHT ARROW ABOVE
# Additional enclosing diacritics
-cp;20E2;age=3.0;ccc=0;gc=Me;-IDC;-Math;na=COMBINING ENCLOSING SCREEN;vo=U;-XIDC
-cp;20E3;age=3.0;ccc=0;EComp;gc=Me;-IDC;-Math;na=COMBINING ENCLOSING KEYCAP;vo=U;-XIDC
-cp;20E4;age=3.2;ccc=0;gc=Me;-IDC;-Math;na=COMBINING ENCLOSING UPWARD POINTING TRIANGLE;vo=U;-XIDC
+cp;20E2;age=3.0;ccc=0;gc=Me;-IDC;InCB=None;-Math;na=COMBINING ENCLOSING SCREEN;vo=U;-XIDC
+cp;20E3;age=3.0;ccc=0;EComp;gc=Me;-IDC;InCB=None;-Math;na=COMBINING ENCLOSING KEYCAP;vo=U;-XIDC
+cp;20E4;age=3.2;ccc=0;gc=Me;-IDC;InCB=None;-Math;na=COMBINING ENCLOSING UPWARD POINTING TRIANGLE;vo=U;-XIDC
# Additional diacritical marks for symbols
cp;20E5;age=3.2;ccc=1;na=COMBINING REVERSE SOLIDUS OVERLAY
cp;20E6;age=3.2;ccc=1;na=COMBINING DOUBLE VERTICAL STROKE OVERLAY
@@ -10048,85 +10065,85 @@ unassigned;20F1..20FF
block;2100..214F;age=1.1;Alpha;blk=Letterlike_Symbols;CWKCF;dt=Font;gc=Lu;Gr_Base;IDC;IDS;lb=AL;Math;NFKC_QC=N;NFKD_QC=N;sc=Zyyy;vo=U;WB=LE;XIDC;XIDS
# 2100..214F Letterlike Symbols
# Letterlike symbols
-cp;2100;-Alpha;bc=ON;dm=0061 002F 0063;dt=Com;gc=So;-IDC;-IDS;-Math;na=ACCOUNT OF;NFKC_CF=0061 002F 0063;WB=XX;-XIDC;-XIDS
-cp;2101;-Alpha;bc=ON;dm=0061 002F 0073;dt=Com;gc=So;-IDC;-IDS;-Math;na=ADDRESSED TO THE SUBJECT;NFKC_CF=0061 002F 0073;WB=XX;-XIDC;-XIDS
-cp;2102;Cased;dm=0043;FC_NFKC=0063;na=DOUBLE-STRUCK CAPITAL C;NFKC_CF=0063;SB=UP;Upper;vo=R
-cp;2103;-Alpha;bc=ON;dm=00B0 0043;dt=Com;ea=A;FC_NFKC=00B0 0063;gc=So;-IDC;-IDS;lb=PO;-Math;na=DEGREE CELSIUS;NFKC_CF=00B0 0063;WB=XX;-XIDC;-XIDS
+cp;2100;-Alpha;bc=ON;dm=0061 002F 0063;dt=Com;gc=So;-IDC;-IDS;-Math;na=ACCOUNT OF;NFKC_CF=0061 002F 0063;NFKC_SCF=0061 002F 0063;WB=XX;-XIDC;-XIDS
+cp;2101;-Alpha;bc=ON;dm=0061 002F 0073;dt=Com;gc=So;-IDC;-IDS;-Math;na=ADDRESSED TO THE SUBJECT;NFKC_CF=0061 002F 0073;NFKC_SCF=0061 002F 0073;WB=XX;-XIDC;-XIDS
+cp;2102;Cased;dm=0043;FC_NFKC=0063;na=DOUBLE-STRUCK CAPITAL C;NFKC_CF=0063;NFKC_SCF=0063;SB=UP;Upper;vo=R
+cp;2103;-Alpha;bc=ON;dm=00B0 0043;dt=Com;ea=A;FC_NFKC=00B0 0063;gc=So;-IDC;-IDS;lb=PO;-Math;na=DEGREE CELSIUS;NFKC_CF=00B0 0063;NFKC_SCF=00B0 0063;WB=XX;-XIDC;-XIDS
cp;2104;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;-Math;na=CENTRE LINE SYMBOL;NFKC_QC=Y;NFKD_QC=Y;WB=XX;-XIDC;-XIDS
-cp;2105;-Alpha;bc=ON;dm=0063 002F 006F;dt=Com;ea=A;gc=So;-IDC;-IDS;lb=AI;-Math;na=CARE OF;NFKC_CF=0063 002F 006F;WB=XX;-XIDC;-XIDS
-cp;2106;-Alpha;bc=ON;dm=0063 002F 0075;dt=Com;gc=So;-IDC;-IDS;-Math;na=CADA UNA;NFKC_CF=0063 002F 0075;WB=XX;-XIDC;-XIDS
-cp;2107;Cased;dm=0190;dt=Com;FC_NFKC=025B;na=EULER CONSTANT;NFKC_CF=025B;SB=UP;Upper
+cp;2105;-Alpha;bc=ON;dm=0063 002F 006F;dt=Com;ea=A;gc=So;-IDC;-IDS;lb=AI;-Math;na=CARE OF;NFKC_CF=0063 002F 006F;NFKC_SCF=0063 002F 006F;WB=XX;-XIDC;-XIDS
+cp;2106;-Alpha;bc=ON;dm=0063 002F 0075;dt=Com;gc=So;-IDC;-IDS;-Math;na=CADA UNA;NFKC_CF=0063 002F 0075;NFKC_SCF=0063 002F 0075;WB=XX;-XIDC;-XIDS
+cp;2107;Cased;dm=0190;dt=Com;FC_NFKC=025B;na=EULER CONSTANT;NFKC_CF=025B;NFKC_SCF=025B;SB=UP;Upper
cp;2108;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;-Math;na=SCRUPLE;NFKC_QC=Y;NFKD_QC=Y;WB=XX;-XIDC;-XIDS
-cp;2109;-Alpha;bc=ON;dm=00B0 0046;dt=Com;ea=A;FC_NFKC=00B0 0066;gc=So;-IDC;-IDS;lb=PO;-Math;na=DEGREE FAHRENHEIT;NFKC_CF=00B0 0066;WB=XX;-XIDC;-XIDS
-cp;210A;Cased;dm=0067;gc=Ll;Lower;na=SCRIPT SMALL G;NFKC_CF=0067;SB=LO;vo=R
-cp;210B;Cased;dm=0048;FC_NFKC=0068;na=SCRIPT CAPITAL H;NFKC_CF=0068;SB=UP;Upper;vo=R
-cp;210C;Cased;dm=0048;FC_NFKC=0068;na=BLACK-LETTER CAPITAL H;NFKC_CF=0068;SB=UP;Upper;vo=R
-cp;210D;Cased;dm=0048;FC_NFKC=0068;na=DOUBLE-STRUCK CAPITAL H;NFKC_CF=0068;SB=UP;Upper;vo=R
-cp;210E;Cased;dm=0068;gc=Ll;Lower;na=PLANCK CONSTANT;NFKC_CF=0068;SB=LO;vo=R
-cp;210F;Cased;dm=0127;gc=Ll;Lower;na=PLANCK CONSTANT OVER TWO PI;NFKC_CF=0127;SB=LO
-cp;2110;Cased;dm=0049;FC_NFKC=0069;na=SCRIPT CAPITAL I;NFKC_CF=0069;SB=UP;Upper;vo=R
-cp;2111;Cased;dm=0049;FC_NFKC=0069;na=BLACK-LETTER CAPITAL I;NFKC_CF=0069;SB=UP;Upper;vo=R
-cp;2112;Cased;dm=004C;FC_NFKC=006C;na=SCRIPT CAPITAL L;NFKC_CF=006C;SB=UP;Upper;vo=R
-cp;2113;Cased;dm=006C;ea=A;gc=Ll;lb=AI;Lower;na=SCRIPT SMALL L;NFKC_CF=006C;SB=LO
+cp;2109;-Alpha;bc=ON;dm=00B0 0046;dt=Com;ea=A;FC_NFKC=00B0 0066;gc=So;-IDC;-IDS;lb=PO;-Math;na=DEGREE FAHRENHEIT;NFKC_CF=00B0 0066;NFKC_SCF=00B0 0066;WB=XX;-XIDC;-XIDS
+cp;210A;Cased;dm=0067;gc=Ll;Lower;na=SCRIPT SMALL G;NFKC_CF=0067;NFKC_SCF=0067;SB=LO;vo=R
+cp;210B;Cased;dm=0048;FC_NFKC=0068;na=SCRIPT CAPITAL H;NFKC_CF=0068;NFKC_SCF=0068;SB=UP;Upper;vo=R
+cp;210C;Cased;dm=0048;FC_NFKC=0068;na=BLACK-LETTER CAPITAL H;NFKC_CF=0068;NFKC_SCF=0068;SB=UP;Upper;vo=R
+cp;210D;Cased;dm=0048;FC_NFKC=0068;na=DOUBLE-STRUCK CAPITAL H;NFKC_CF=0068;NFKC_SCF=0068;SB=UP;Upper;vo=R
+cp;210E;Cased;dm=0068;gc=Ll;Lower;na=PLANCK CONSTANT;NFKC_CF=0068;NFKC_SCF=0068;SB=LO;vo=R
+cp;210F;Cased;dm=0127;gc=Ll;Lower;na=PLANCK CONSTANT OVER TWO PI;NFKC_CF=0127;NFKC_SCF=0127;SB=LO
+cp;2110;Cased;dm=0049;FC_NFKC=0069;na=SCRIPT CAPITAL I;NFKC_CF=0069;NFKC_SCF=0069;SB=UP;Upper;vo=R
+cp;2111;Cased;dm=0049;FC_NFKC=0069;na=BLACK-LETTER CAPITAL I;NFKC_CF=0069;NFKC_SCF=0069;SB=UP;Upper;vo=R
+cp;2112;Cased;dm=004C;FC_NFKC=006C;na=SCRIPT CAPITAL L;NFKC_CF=006C;NFKC_SCF=006C;SB=UP;Upper;vo=R
+cp;2113;Cased;dm=006C;ea=A;gc=Ll;lb=AI;Lower;na=SCRIPT SMALL L;NFKC_CF=006C;NFKC_SCF=006C;SB=LO
cp;2114;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;-Math;na=L B BAR SYMBOL;NFKC_QC=Y;NFKD_QC=Y;WB=XX;-XIDC;-XIDS
-cp;2115;Cased;dm=004E;FC_NFKC=006E;na=DOUBLE-STRUCK CAPITAL N;NFKC_CF=006E;SB=UP;Upper;vo=R
-cp;2116;-Alpha;bc=ON;dm=004E 006F;dt=Com;ea=A;FC_NFKC=006E 006F;gc=So;-IDC;-IDS;lb=PR;-Math;na=NUMERO SIGN;NFKC_CF=006E 006F;WB=XX;-XIDC;-XIDS
+cp;2115;Cased;dm=004E;FC_NFKC=006E;na=DOUBLE-STRUCK CAPITAL N;NFKC_CF=006E;NFKC_SCF=006E;SB=UP;Upper;vo=R
+cp;2116;-Alpha;bc=ON;dm=004E 006F;dt=Com;ea=A;FC_NFKC=006E 006F;gc=So;-IDC;-IDS;lb=PR;-Math;na=NUMERO SIGN;NFKC_CF=006E 006F;NFKC_SCF=006E 006F;WB=XX;-XIDC;-XIDS
cp;2117;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;-Math;na=SOUND RECORDING COPYRIGHT;NFKC_QC=Y;NFKD_QC=Y;WB=XX;-XIDC;-XIDS
cp;2118;-Alpha;bc=ON;-CWKCF;dt=None;gc=Sm;na=SCRIPT CAPITAL P;Name_Alias=correction=WEIERSTRASS ELLIPTIC FUNCTION;NFKC_QC=Y;NFKD_QC=Y;vo=R;WB=XX
-cp;2119;Cased;dm=0050;FC_NFKC=0070;na=DOUBLE-STRUCK CAPITAL P;NFKC_CF=0070;SB=UP;Upper;vo=R
-cp;211A;Cased;dm=0051;FC_NFKC=0071;na=DOUBLE-STRUCK CAPITAL Q;NFKC_CF=0071;SB=UP;Upper;vo=R
-cp;211B;Cased;dm=0052;FC_NFKC=0072;na=SCRIPT CAPITAL R;NFKC_CF=0072;SB=UP;Upper;vo=R
-cp;211C;Cased;dm=0052;FC_NFKC=0072;na=BLACK-LETTER CAPITAL R;NFKC_CF=0072;SB=UP;Upper;vo=R
-cp;211D;Cased;dm=0052;FC_NFKC=0072;na=DOUBLE-STRUCK CAPITAL R;NFKC_CF=0072;SB=UP;Upper;vo=R
+cp;2119;Cased;dm=0050;FC_NFKC=0070;na=DOUBLE-STRUCK CAPITAL P;NFKC_CF=0070;NFKC_SCF=0070;SB=UP;Upper;vo=R
+cp;211A;Cased;dm=0051;FC_NFKC=0071;na=DOUBLE-STRUCK CAPITAL Q;NFKC_CF=0071;NFKC_SCF=0071;SB=UP;Upper;vo=R
+cp;211B;Cased;dm=0052;FC_NFKC=0072;na=SCRIPT CAPITAL R;NFKC_CF=0072;NFKC_SCF=0072;SB=UP;Upper;vo=R
+cp;211C;Cased;dm=0052;FC_NFKC=0072;na=BLACK-LETTER CAPITAL R;NFKC_CF=0072;NFKC_SCF=0072;SB=UP;Upper;vo=R
+cp;211D;Cased;dm=0052;FC_NFKC=0072;na=DOUBLE-STRUCK CAPITAL R;NFKC_CF=0072;NFKC_SCF=0072;SB=UP;Upper;vo=R
cp;211E;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;-Math;na=PRESCRIPTION TAKE;NFKC_QC=Y;NFKD_QC=Y;WB=XX;-XIDC;-XIDS
cp;211F;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;-Math;na=RESPONSE;NFKC_QC=Y;NFKD_QC=Y;WB=XX;-XIDC;-XIDS
-cp;2120;-Alpha;bc=ON;dm=0053 004D;dt=Sup;FC_NFKC=0073 006D;gc=So;-IDC;-IDS;-Math;na=SERVICE MARK;NFKC_CF=0073 006D;WB=XX;-XIDC;-XIDS
-cp;2121;-Alpha;bc=ON;dm=0054 0045 004C;dt=Com;ea=A;FC_NFKC=0074 0065 006C;gc=So;-IDC;-IDS;lb=AI;-Math;na=TELEPHONE SIGN;NFKC_CF=0074 0065 006C;WB=XX;-XIDC;-XIDS
-cp;2122;-Alpha;bc=ON;dm=0054 004D;dt=Sup;ea=A;Emoji;ExtPict;FC_NFKC=0074 006D;gc=So;-IDC;-IDS;lb=AI;-Math;na=TRADE MARK SIGN;NFKC_CF=0074 006D;WB=XX;-XIDC;-XIDS
+cp;2120;-Alpha;bc=ON;dm=0053 004D;dt=Sup;FC_NFKC=0073 006D;gc=So;-IDC;-IDS;-Math;na=SERVICE MARK;NFKC_CF=0073 006D;NFKC_SCF=0073 006D;WB=XX;-XIDC;-XIDS
+cp;2121;-Alpha;bc=ON;dm=0054 0045 004C;dt=Com;ea=A;FC_NFKC=0074 0065 006C;gc=So;-IDC;-IDS;lb=AI;-Math;na=TELEPHONE SIGN;NFKC_CF=0074 0065 006C;NFKC_SCF=0074 0065 006C;WB=XX;-XIDC;-XIDS
+cp;2122;-Alpha;bc=ON;dm=0054 004D;dt=Sup;ea=A;Emoji;ExtPict;FC_NFKC=0074 006D;gc=So;-IDC;-IDS;lb=AI;-Math;na=TRADE MARK SIGN;NFKC_CF=0074 006D;NFKC_SCF=0074 006D;WB=XX;-XIDC;-XIDS
cp;2123;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;-Math;na=VERSICLE;NFKC_QC=Y;NFKD_QC=Y;WB=XX;-XIDC;-XIDS
-cp;2124;Cased;dm=005A;FC_NFKC=007A;na=DOUBLE-STRUCK CAPITAL Z;NFKC_CF=007A;SB=UP;Upper;vo=R
+cp;2124;Cased;dm=005A;FC_NFKC=007A;na=DOUBLE-STRUCK CAPITAL Z;NFKC_CF=007A;NFKC_SCF=007A;SB=UP;Upper;vo=R
cp;2125;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;-Math;na=OUNCE SIGN;NFKC_QC=Y;NFKD_QC=Y;WB=XX;-XIDC;-XIDS
-cp;2126;Cased;cf=03C9;Comp_Ex;CWCF;CWCM;CWL;dm=03A9;dt=Can;ea=A;-Math;na=OHM SIGN;NFC_QC=N;NFD_QC=N;NFKC_CF=03C9;SB=UP;sc=Grek;scf=03C9;slc=03C9;Upper;vo=R
+cp;2126;Cased;cf=03C9;Comp_Ex;CWCF;CWCM;CWL;dm=03A9;dt=Can;ea=A;-Math;na=OHM SIGN;NFC_QC=N;NFD_QC=N;NFKC_CF=03C9;NFKC_SCF=03C9;SB=UP;sc=Grek;scf=03C9;slc=03C9;Upper;vo=R
cp;2127;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;-Math;na=INVERTED OHM SIGN;NFKC_QC=Y;NFKD_QC=Y;WB=XX;-XIDC;-XIDS
-cp;2128;Cased;dm=005A;FC_NFKC=007A;na=BLACK-LETTER CAPITAL Z;NFKC_CF=007A;SB=UP;Upper;vo=R
+cp;2128;Cased;dm=005A;FC_NFKC=007A;na=BLACK-LETTER CAPITAL Z;NFKC_CF=007A;NFKC_SCF=007A;SB=UP;Upper;vo=R
cp;2129;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;na=TURNED GREEK SMALL LETTER IOTA;NFKC_QC=Y;NFKD_QC=Y;WB=XX;-XIDC;-XIDS
-cp;212A;Cased;cf=006B;Comp_Ex;CWCF;CWCM;CWL;dm=004B;dt=Can;-Math;na=KELVIN SIGN;NFC_QC=N;NFD_QC=N;NFKC_CF=006B;SB=UP;sc=Latn;scf=006B;slc=006B;Upper;vo=R
-cp;212B;Cased;cf=00E5;Comp_Ex;CWCF;CWCM;CWL;dm=00C5;dt=Can;ea=A;lb=AI;-Math;na=ANGSTROM SIGN;NFC_QC=N;NFD_QC=N;NFKC_CF=00E5;SB=UP;sc=Latn;scf=00E5;slc=00E5;Upper;vo=R
-cp;212C;Cased;dm=0042;FC_NFKC=0062;na=SCRIPT CAPITAL B;NFKC_CF=0062;SB=UP;Upper;vo=R
-cp;212D;Cased;dm=0043;FC_NFKC=0063;na=BLACK-LETTER CAPITAL C;NFKC_CF=0063;SB=UP;Upper;vo=R
+cp;212A;Cased;cf=006B;Comp_Ex;CWCF;CWCM;CWL;dm=004B;dt=Can;-Math;na=KELVIN SIGN;NFC_QC=N;NFD_QC=N;NFKC_CF=006B;NFKC_SCF=006B;SB=UP;sc=Latn;scf=006B;slc=006B;Upper;vo=R
+cp;212B;Cased;cf=00E5;Comp_Ex;CWCF;CWCM;CWL;dm=00C5;dt=Can;ea=A;lb=AI;-Math;na=ANGSTROM SIGN;NFC_QC=N;NFD_QC=N;NFKC_CF=00E5;NFKC_SCF=00E5;SB=UP;sc=Latn;scf=00E5;slc=00E5;Upper;vo=R
+cp;212C;Cased;dm=0042;FC_NFKC=0062;na=SCRIPT CAPITAL B;NFKC_CF=0062;NFKC_SCF=0062;SB=UP;Upper;vo=R
+cp;212D;Cased;dm=0043;FC_NFKC=0063;na=BLACK-LETTER CAPITAL C;NFKC_CF=0063;NFKC_SCF=0063;SB=UP;Upper;vo=R
cp;212E;-Alpha;bc=ET;-CWKCF;dt=None;gc=So;-Math;na=ESTIMATED SYMBOL;NFKC_QC=Y;NFKD_QC=Y;WB=XX
-cp;212F;Cased;dm=0065;gc=Ll;Lower;na=SCRIPT SMALL E;NFKC_CF=0065;SB=LO;vo=R
-cp;2130;Cased;dm=0045;FC_NFKC=0065;na=SCRIPT CAPITAL E;NFKC_CF=0065;SB=UP;Upper;vo=R
-cp;2131;Cased;dm=0046;FC_NFKC=0066;na=SCRIPT CAPITAL F;NFKC_CF=0066;SB=UP;Upper;vo=R
-cp;2132;Cased;cf=214E;CWCF;CWCM;CWL;dt=None;-Math;na=TURNED CAPITAL F;NFKC_CF=214E;NFKC_QC=Y;NFKD_QC=Y;SB=UP;sc=Latn;scf=214E;slc=214E;Upper;vo=R
-cp;2133;Cased;dm=004D;FC_NFKC=006D;na=SCRIPT CAPITAL M;NFKC_CF=006D;SB=UP;Upper;vo=R
-cp;2134;Cased;dm=006F;gc=Ll;Lower;na=SCRIPT SMALL O;NFKC_CF=006F;SB=LO;vo=R
+cp;212F;Cased;dm=0065;gc=Ll;Lower;na=SCRIPT SMALL E;NFKC_CF=0065;NFKC_SCF=0065;SB=LO;vo=R
+cp;2130;Cased;dm=0045;FC_NFKC=0065;na=SCRIPT CAPITAL E;NFKC_CF=0065;NFKC_SCF=0065;SB=UP;Upper;vo=R
+cp;2131;Cased;dm=0046;FC_NFKC=0066;na=SCRIPT CAPITAL F;NFKC_CF=0066;NFKC_SCF=0066;SB=UP;Upper;vo=R
+cp;2132;Cased;cf=214E;CWCF;CWCM;CWL;dt=None;-Math;na=TURNED CAPITAL F;NFKC_CF=214E;NFKC_QC=Y;NFKC_SCF=214E;NFKD_QC=Y;SB=UP;sc=Latn;scf=214E;slc=214E;Upper;vo=R
+cp;2133;Cased;dm=004D;FC_NFKC=006D;na=SCRIPT CAPITAL M;NFKC_CF=006D;NFKC_SCF=006D;SB=UP;Upper;vo=R
+cp;2134;Cased;dm=006F;gc=Ll;Lower;na=SCRIPT SMALL O;NFKC_CF=006F;NFKC_SCF=006F;SB=LO;vo=R
# Hebrew letterlike math symbols
-cp;2135;dm=05D0;dt=Com;gc=Lo;na=ALEF SYMBOL;NFKC_CF=05D0;SB=LE
-cp;2136;dm=05D1;dt=Com;gc=Lo;na=BET SYMBOL;NFKC_CF=05D1;SB=LE
-cp;2137;dm=05D2;dt=Com;gc=Lo;na=GIMEL SYMBOL;NFKC_CF=05D2;SB=LE
-cp;2138;dm=05D3;dt=Com;gc=Lo;na=DALET SYMBOL;NFKC_CF=05D3;SB=LE
+cp;2135;dm=05D0;dt=Com;gc=Lo;na=ALEF SYMBOL;NFKC_CF=05D0;NFKC_SCF=05D0;SB=LE
+cp;2136;dm=05D1;dt=Com;gc=Lo;na=BET SYMBOL;NFKC_CF=05D1;NFKC_SCF=05D1;SB=LE
+cp;2137;dm=05D2;dt=Com;gc=Lo;na=GIMEL SYMBOL;NFKC_CF=05D2;NFKC_SCF=05D2;SB=LE
+cp;2138;dm=05D3;dt=Com;gc=Lo;na=DALET SYMBOL;NFKC_CF=05D3;NFKC_SCF=05D3;SB=LE
# Additional letterlike symbols
-cp;2139;age=3.0;Cased;dm=0069;Emoji;ExtPict;gc=Ll;Lower;-Math;na=INFORMATION SOURCE;NFKC_CF=0069;SB=LO
+cp;2139;age=3.0;Cased;dm=0069;Emoji;ExtPict;gc=Ll;Lower;-Math;na=INFORMATION SOURCE;NFKC_CF=0069;NFKC_SCF=0069;SB=LO
cp;213A;age=3.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;-Math;na=ROTATED CAPITAL Q;NFKC_QC=Y;NFKD_QC=Y;WB=XX;-XIDC;-XIDS
-cp;213B;age=4.0;-Alpha;bc=ON;dm=0046 0041 0058;dt=Com;FC_NFKC=0066 0061 0078;gc=So;-IDC;-IDS;-Math;na=FACSIMILE SIGN;NFKC_CF=0066 0061 0078;WB=XX;-XIDC;-XIDS
-cp;213C;age=4.1;Cased;dm=03C0;gc=Ll;Lower;na=DOUBLE-STRUCK SMALL PI;NFKC_CF=03C0;SB=LO
-cp;213D;age=3.2;Cased;dm=03B3;gc=Ll;Lower;na=DOUBLE-STRUCK SMALL GAMMA;NFKC_CF=03B3;SB=LO
-cp;213E;age=3.2;Cased;dm=0393;FC_NFKC=03B3;na=DOUBLE-STRUCK CAPITAL GAMMA;NFKC_CF=03B3;SB=UP;Upper
-cp;213F;age=3.2;Cased;dm=03A0;FC_NFKC=03C0;na=DOUBLE-STRUCK CAPITAL PI;NFKC_CF=03C0;SB=UP;Upper
+cp;213B;age=4.0;-Alpha;bc=ON;dm=0046 0041 0058;dt=Com;FC_NFKC=0066 0061 0078;gc=So;-IDC;-IDS;-Math;na=FACSIMILE SIGN;NFKC_CF=0066 0061 0078;NFKC_SCF=0066 0061 0078;WB=XX;-XIDC;-XIDS
+cp;213C;age=4.1;Cased;dm=03C0;gc=Ll;Lower;na=DOUBLE-STRUCK SMALL PI;NFKC_CF=03C0;NFKC_SCF=03C0;SB=LO
+cp;213D;age=3.2;Cased;dm=03B3;gc=Ll;Lower;na=DOUBLE-STRUCK SMALL GAMMA;NFKC_CF=03B3;NFKC_SCF=03B3;SB=LO
+cp;213E;age=3.2;Cased;dm=0393;FC_NFKC=03B3;na=DOUBLE-STRUCK CAPITAL GAMMA;NFKC_CF=03B3;NFKC_SCF=03B3;SB=UP;Upper
+cp;213F;age=3.2;Cased;dm=03A0;FC_NFKC=03C0;na=DOUBLE-STRUCK CAPITAL PI;NFKC_CF=03C0;NFKC_SCF=03C0;SB=UP;Upper
# Double-struck large operator
-cp;2140;age=3.2;-Alpha;bc=ON;Bidi_M;dm=2211;gc=Sm;-IDC;-IDS;na=DOUBLE-STRUCK N-ARY SUMMATION;NFKC_CF=2211;vo=R;WB=XX;-XIDC;-XIDS
+cp;2140;age=3.2;-Alpha;bc=ON;Bidi_M;dm=2211;gc=Sm;-IDC;-IDS;na=DOUBLE-STRUCK N-ARY SUMMATION;NFKC_CF=2211;NFKC_SCF=2211;vo=R;WB=XX;-XIDC;-XIDS
# Additional letterlike symbols
cp;2141;age=3.2;-Alpha;bc=ON;-CWKCF;dt=None;gc=Sm;-IDC;-IDS;na=TURNED SANS-SERIF CAPITAL G;NFKC_QC=Y;NFKD_QC=Y;vo=R;WB=XX;-XIDC;-XIDS
cp;2142;age=3.2;-Alpha;bc=ON;-CWKCF;dt=None;gc=Sm;-IDC;-IDS;na=TURNED SANS-SERIF CAPITAL L;NFKC_QC=Y;NFKD_QC=Y;vo=R;WB=XX;-XIDC;-XIDS
cp;2143;age=3.2;-Alpha;bc=ON;-CWKCF;dt=None;gc=Sm;-IDC;-IDS;na=REVERSED SANS-SERIF CAPITAL L;NFKC_QC=Y;NFKD_QC=Y;vo=R;WB=XX;-XIDC;-XIDS
cp;2144;age=3.2;-Alpha;bc=ON;-CWKCF;dt=None;gc=Sm;-IDC;-IDS;na=TURNED SANS-SERIF CAPITAL Y;NFKC_QC=Y;NFKD_QC=Y;vo=R;WB=XX;-XIDC;-XIDS
# Double-struck italic math symbols
-cp;2145;age=3.2;Cased;dm=0044;FC_NFKC=0064;na=DOUBLE-STRUCK ITALIC CAPITAL D;NFKC_CF=0064;SB=UP;Upper
-cp;2146;age=3.2;Cased;dm=0064;gc=Ll;Lower;na=DOUBLE-STRUCK ITALIC SMALL D;NFKC_CF=0064;SB=LO
-cp;2147;age=3.2;Cased;dm=0065;gc=Ll;Lower;na=DOUBLE-STRUCK ITALIC SMALL E;NFKC_CF=0065;SB=LO
-cp;2148;age=3.2;Cased;dm=0069;gc=Ll;Lower;na=DOUBLE-STRUCK ITALIC SMALL I;NFKC_CF=0069;SB=LO;SD
-cp;2149;age=3.2;Cased;dm=006A;gc=Ll;Lower;na=DOUBLE-STRUCK ITALIC SMALL J;NFKC_CF=006A;SB=LO;SD
+cp;2145;age=3.2;Cased;dm=0044;FC_NFKC=0064;na=DOUBLE-STRUCK ITALIC CAPITAL D;NFKC_CF=0064;NFKC_SCF=0064;SB=UP;Upper
+cp;2146;age=3.2;Cased;dm=0064;gc=Ll;Lower;na=DOUBLE-STRUCK ITALIC SMALL D;NFKC_CF=0064;NFKC_SCF=0064;SB=LO
+cp;2147;age=3.2;Cased;dm=0065;gc=Ll;Lower;na=DOUBLE-STRUCK ITALIC SMALL E;NFKC_CF=0065;NFKC_SCF=0065;SB=LO
+cp;2148;age=3.2;Cased;dm=0069;gc=Ll;Lower;na=DOUBLE-STRUCK ITALIC SMALL I;NFKC_CF=0069;NFKC_SCF=0069;SB=LO;SD
+cp;2149;age=3.2;Cased;dm=006A;gc=Ll;Lower;na=DOUBLE-STRUCK ITALIC SMALL J;NFKC_CF=006A;NFKC_SCF=006A;SB=LO;SD
# Additional letterlike symbols
cp;214A;age=3.2;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;-Math;na=PROPERTY LINE;NFKC_QC=Y;NFKD_QC=Y;WB=XX;-XIDC;-XIDS
cp;214B;age=3.2;-Alpha;bc=ON;-CWKCF;dt=None;gc=Sm;-IDC;-IDS;na=TURNED AMPERSAND;NFKC_QC=Y;NFKD_QC=Y;vo=R;WB=XX;-XIDC;-XIDS
@@ -10140,60 +10157,60 @@ cp;214F;age=5.1;-Alpha;-CWKCF;dt=None;gc=So;-IDC;-IDS;-Math;na=SYMBOL FOR SAMARI
block;2150..218F;age=1.1;Alpha;blk=Number_Forms;Cased;CWCM;CWKCF;dt=Com;gc=Nl;Gr_Base;IDC;IDS;lb=AL;NFKC_QC=N;NFKD_QC=N;nt=Nu;sc=Latn;vo=U;WB=LE;XIDC;XIDS
# 2150..218F Number Forms
# Fractions
-cp;2150;age=5.2;-Alpha;bc=ON;-Cased;-CWCM;dm=0031 2044 0037;dt=Fra;gc=No;-IDC;-IDS;na=VULGAR FRACTION ONE SEVENTH;NFKC_CF=0031 2044 0037;nv=1/7;sc=Zyyy;WB=XX;-XIDC;-XIDS
-cp;2151;age=5.2;-Alpha;bc=ON;-Cased;-CWCM;dm=0031 2044 0039;dt=Fra;gc=No;-IDC;-IDS;na=VULGAR FRACTION ONE NINTH;NFKC_CF=0031 2044 0039;nv=1/9;sc=Zyyy;WB=XX;-XIDC;-XIDS
-cp;2152;age=5.2;-Alpha;bc=ON;-Cased;-CWCM;dm=0031 2044 0031 0030;dt=Fra;gc=No;-IDC;-IDS;na=VULGAR FRACTION ONE TENTH;NFKC_CF=0031 2044 0031 0030;nv=1/10;sc=Zyyy;WB=XX;-XIDC;-XIDS
-cp;2153;-Alpha;bc=ON;-Cased;-CWCM;dm=0031 2044 0033;dt=Fra;ea=A;gc=No;-IDC;-IDS;na=VULGAR FRACTION ONE THIRD;NFKC_CF=0031 2044 0033;nv=1/3;sc=Zyyy;WB=XX;-XIDC;-XIDS
-cp;2154;-Alpha;bc=ON;-Cased;-CWCM;dm=0032 2044 0033;dt=Fra;ea=A;gc=No;-IDC;-IDS;lb=AI;na=VULGAR FRACTION TWO THIRDS;NFKC_CF=0032 2044 0033;nv=2/3;sc=Zyyy;WB=XX;-XIDC;-XIDS
-cp;2155;-Alpha;bc=ON;-Cased;-CWCM;dm=0031 2044 0035;dt=Fra;gc=No;-IDC;-IDS;lb=AI;na=VULGAR FRACTION ONE FIFTH;NFKC_CF=0031 2044 0035;nv=1/5;sc=Zyyy;WB=XX;-XIDC;-XIDS
-cp;2156;-Alpha;bc=ON;-Cased;-CWCM;dm=0032 2044 0035;dt=Fra;gc=No;-IDC;-IDS;na=VULGAR FRACTION TWO FIFTHS;NFKC_CF=0032 2044 0035;nv=2/5;sc=Zyyy;WB=XX;-XIDC;-XIDS
-cp;2157;-Alpha;bc=ON;-Cased;-CWCM;dm=0033 2044 0035;dt=Fra;gc=No;-IDC;-IDS;na=VULGAR FRACTION THREE FIFTHS;NFKC_CF=0033 2044 0035;nv=3/5;sc=Zyyy;WB=XX;-XIDC;-XIDS
-cp;2158;-Alpha;bc=ON;-Cased;-CWCM;dm=0034 2044 0035;dt=Fra;gc=No;-IDC;-IDS;na=VULGAR FRACTION FOUR FIFTHS;NFKC_CF=0034 2044 0035;nv=4/5;sc=Zyyy;WB=XX;-XIDC;-XIDS
-cp;2159;-Alpha;bc=ON;-Cased;-CWCM;dm=0031 2044 0036;dt=Fra;gc=No;-IDC;-IDS;na=VULGAR FRACTION ONE SIXTH;NFKC_CF=0031 2044 0036;nv=1/6;sc=Zyyy;WB=XX;-XIDC;-XIDS
-cp;215A;-Alpha;bc=ON;-Cased;-CWCM;dm=0035 2044 0036;dt=Fra;gc=No;-IDC;-IDS;na=VULGAR FRACTION FIVE SIXTHS;NFKC_CF=0035 2044 0036;nv=5/6;sc=Zyyy;WB=XX;-XIDC;-XIDS
-cp;215B;-Alpha;bc=ON;-Cased;-CWCM;dm=0031 2044 0038;dt=Fra;ea=A;gc=No;-IDC;-IDS;lb=AI;na=VULGAR FRACTION ONE EIGHTH;NFKC_CF=0031 2044 0038;nv=1/8;sc=Zyyy;WB=XX;-XIDC;-XIDS
-cp;215C;-Alpha;bc=ON;-Cased;-CWCM;dm=0033 2044 0038;dt=Fra;ea=A;gc=No;-IDC;-IDS;na=VULGAR FRACTION THREE EIGHTHS;NFKC_CF=0033 2044 0038;nv=3/8;sc=Zyyy;WB=XX;-XIDC;-XIDS
-cp;215D;-Alpha;bc=ON;-Cased;-CWCM;dm=0035 2044 0038;dt=Fra;ea=A;gc=No;-IDC;-IDS;na=VULGAR FRACTION FIVE EIGHTHS;NFKC_CF=0035 2044 0038;nv=5/8;sc=Zyyy;WB=XX;-XIDC;-XIDS
-cp;215E;-Alpha;bc=ON;-Cased;-CWCM;dm=0037 2044 0038;dt=Fra;ea=A;gc=No;-IDC;-IDS;lb=AI;na=VULGAR FRACTION SEVEN EIGHTHS;NFKC_CF=0037 2044 0038;nv=7/8;sc=Zyyy;WB=XX;-XIDC;-XIDS
-cp;215F;-Alpha;bc=ON;-Cased;-CWCM;dm=0031 2044;dt=Fra;gc=No;-IDC;-IDS;na=FRACTION NUMERATOR ONE;NFKC_CF=0031 2044;nv=1;sc=Zyyy;WB=XX;-XIDC;-XIDS
+cp;2150;age=5.2;-Alpha;bc=ON;-Cased;-CWCM;dm=0031 2044 0037;dt=Fra;gc=No;-IDC;-IDS;na=VULGAR FRACTION ONE SEVENTH;NFKC_CF=0031 2044 0037;NFKC_SCF=0031 2044 0037;nv=1/7;sc=Zyyy;WB=XX;-XIDC;-XIDS
+cp;2151;age=5.2;-Alpha;bc=ON;-Cased;-CWCM;dm=0031 2044 0039;dt=Fra;gc=No;-IDC;-IDS;na=VULGAR FRACTION ONE NINTH;NFKC_CF=0031 2044 0039;NFKC_SCF=0031 2044 0039;nv=1/9;sc=Zyyy;WB=XX;-XIDC;-XIDS
+cp;2152;age=5.2;-Alpha;bc=ON;-Cased;-CWCM;dm=0031 2044 0031 0030;dt=Fra;gc=No;-IDC;-IDS;na=VULGAR FRACTION ONE TENTH;NFKC_CF=0031 2044 0031 0030;NFKC_SCF=0031 2044 0031 0030;nv=1/10;sc=Zyyy;WB=XX;-XIDC;-XIDS
+cp;2153;-Alpha;bc=ON;-Cased;-CWCM;dm=0031 2044 0033;dt=Fra;ea=A;gc=No;-IDC;-IDS;na=VULGAR FRACTION ONE THIRD;NFKC_CF=0031 2044 0033;NFKC_SCF=0031 2044 0033;nv=1/3;sc=Zyyy;WB=XX;-XIDC;-XIDS
+cp;2154;-Alpha;bc=ON;-Cased;-CWCM;dm=0032 2044 0033;dt=Fra;ea=A;gc=No;-IDC;-IDS;lb=AI;na=VULGAR FRACTION TWO THIRDS;NFKC_CF=0032 2044 0033;NFKC_SCF=0032 2044 0033;nv=2/3;sc=Zyyy;WB=XX;-XIDC;-XIDS
+cp;2155;-Alpha;bc=ON;-Cased;-CWCM;dm=0031 2044 0035;dt=Fra;gc=No;-IDC;-IDS;lb=AI;na=VULGAR FRACTION ONE FIFTH;NFKC_CF=0031 2044 0035;NFKC_SCF=0031 2044 0035;nv=1/5;sc=Zyyy;WB=XX;-XIDC;-XIDS
+cp;2156;-Alpha;bc=ON;-Cased;-CWCM;dm=0032 2044 0035;dt=Fra;gc=No;-IDC;-IDS;na=VULGAR FRACTION TWO FIFTHS;NFKC_CF=0032 2044 0035;NFKC_SCF=0032 2044 0035;nv=2/5;sc=Zyyy;WB=XX;-XIDC;-XIDS
+cp;2157;-Alpha;bc=ON;-Cased;-CWCM;dm=0033 2044 0035;dt=Fra;gc=No;-IDC;-IDS;na=VULGAR FRACTION THREE FIFTHS;NFKC_CF=0033 2044 0035;NFKC_SCF=0033 2044 0035;nv=3/5;sc=Zyyy;WB=XX;-XIDC;-XIDS
+cp;2158;-Alpha;bc=ON;-Cased;-CWCM;dm=0034 2044 0035;dt=Fra;gc=No;-IDC;-IDS;na=VULGAR FRACTION FOUR FIFTHS;NFKC_CF=0034 2044 0035;NFKC_SCF=0034 2044 0035;nv=4/5;sc=Zyyy;WB=XX;-XIDC;-XIDS
+cp;2159;-Alpha;bc=ON;-Cased;-CWCM;dm=0031 2044 0036;dt=Fra;gc=No;-IDC;-IDS;na=VULGAR FRACTION ONE SIXTH;NFKC_CF=0031 2044 0036;NFKC_SCF=0031 2044 0036;nv=1/6;sc=Zyyy;WB=XX;-XIDC;-XIDS
+cp;215A;-Alpha;bc=ON;-Cased;-CWCM;dm=0035 2044 0036;dt=Fra;gc=No;-IDC;-IDS;na=VULGAR FRACTION FIVE SIXTHS;NFKC_CF=0035 2044 0036;NFKC_SCF=0035 2044 0036;nv=5/6;sc=Zyyy;WB=XX;-XIDC;-XIDS
+cp;215B;-Alpha;bc=ON;-Cased;-CWCM;dm=0031 2044 0038;dt=Fra;ea=A;gc=No;-IDC;-IDS;lb=AI;na=VULGAR FRACTION ONE EIGHTH;NFKC_CF=0031 2044 0038;NFKC_SCF=0031 2044 0038;nv=1/8;sc=Zyyy;WB=XX;-XIDC;-XIDS
+cp;215C;-Alpha;bc=ON;-Cased;-CWCM;dm=0033 2044 0038;dt=Fra;ea=A;gc=No;-IDC;-IDS;na=VULGAR FRACTION THREE EIGHTHS;NFKC_CF=0033 2044 0038;NFKC_SCF=0033 2044 0038;nv=3/8;sc=Zyyy;WB=XX;-XIDC;-XIDS
+cp;215D;-Alpha;bc=ON;-Cased;-CWCM;dm=0035 2044 0038;dt=Fra;ea=A;gc=No;-IDC;-IDS;na=VULGAR FRACTION FIVE EIGHTHS;NFKC_CF=0035 2044 0038;NFKC_SCF=0035 2044 0038;nv=5/8;sc=Zyyy;WB=XX;-XIDC;-XIDS
+cp;215E;-Alpha;bc=ON;-Cased;-CWCM;dm=0037 2044 0038;dt=Fra;ea=A;gc=No;-IDC;-IDS;lb=AI;na=VULGAR FRACTION SEVEN EIGHTHS;NFKC_CF=0037 2044 0038;NFKC_SCF=0037 2044 0038;nv=7/8;sc=Zyyy;WB=XX;-XIDC;-XIDS
+cp;215F;-Alpha;bc=ON;-Cased;-CWCM;dm=0031 2044;dt=Fra;gc=No;-IDC;-IDS;na=FRACTION NUMERATOR ONE;NFKC_CF=0031 2044;NFKC_SCF=0031 2044;nv=1;sc=Zyyy;WB=XX;-XIDC;-XIDS
# Roman numerals
-cp;2160;cf=2170;CWCF;CWL;dm=0049;ea=A;lb=AI;na=ROMAN NUMERAL ONE;NFKC_CF=0069;nv=1;SB=UP;scf=2170;slc=2170;Upper
-cp;2161;cf=2171;CWCF;CWL;dm=0049 0049;ea=A;lb=AI;na=ROMAN NUMERAL TWO;NFKC_CF=0069 0069;nv=2;SB=UP;scf=2171;slc=2171;Upper
-cp;2162;cf=2172;CWCF;CWL;dm=0049 0049 0049;ea=A;lb=AI;na=ROMAN NUMERAL THREE;NFKC_CF=0069 0069 0069;nv=3;SB=UP;scf=2172;slc=2172;Upper
-cp;2163;cf=2173;CWCF;CWL;dm=0049 0056;ea=A;lb=AI;na=ROMAN NUMERAL FOUR;NFKC_CF=0069 0076;nv=4;SB=UP;scf=2173;slc=2173;Upper
-cp;2164;cf=2174;CWCF;CWL;dm=0056;ea=A;lb=AI;na=ROMAN NUMERAL FIVE;NFKC_CF=0076;nv=5;SB=UP;scf=2174;slc=2174;Upper
-cp;2165;cf=2175;CWCF;CWL;dm=0056 0049;ea=A;lb=AI;na=ROMAN NUMERAL SIX;NFKC_CF=0076 0069;nv=6;SB=UP;scf=2175;slc=2175;Upper
-cp;2166;cf=2176;CWCF;CWL;dm=0056 0049 0049;ea=A;lb=AI;na=ROMAN NUMERAL SEVEN;NFKC_CF=0076 0069 0069;nv=7;SB=UP;scf=2176;slc=2176;Upper
-cp;2167;cf=2177;CWCF;CWL;dm=0056 0049 0049 0049;ea=A;lb=AI;na=ROMAN NUMERAL EIGHT;NFKC_CF=0076 0069 0069 0069;nv=8;SB=UP;scf=2177;slc=2177;Upper
-cp;2168;cf=2178;CWCF;CWL;dm=0049 0058;ea=A;lb=AI;na=ROMAN NUMERAL NINE;NFKC_CF=0069 0078;nv=9;SB=UP;scf=2178;slc=2178;Upper
-cp;2169;cf=2179;CWCF;CWL;dm=0058;ea=A;lb=AI;na=ROMAN NUMERAL TEN;NFKC_CF=0078;nv=10;SB=UP;scf=2179;slc=2179;Upper
-cp;216A;cf=217A;CWCF;CWL;dm=0058 0049;ea=A;lb=AI;na=ROMAN NUMERAL ELEVEN;NFKC_CF=0078 0069;nv=11;SB=UP;scf=217A;slc=217A;Upper
-cp;216B;cf=217B;CWCF;CWL;dm=0058 0049 0049;ea=A;lb=AI;na=ROMAN NUMERAL TWELVE;NFKC_CF=0078 0069 0069;nv=12;SB=UP;scf=217B;slc=217B;Upper
-cp;216C;cf=217C;CWCF;CWL;dm=004C;na=ROMAN NUMERAL FIFTY;NFKC_CF=006C;nv=50;SB=UP;scf=217C;slc=217C;Upper
-cp;216D;cf=217D;CWCF;CWL;dm=0043;na=ROMAN NUMERAL ONE HUNDRED;NFKC_CF=0063;nv=100;SB=UP;scf=217D;slc=217D;Upper
-cp;216E;cf=217E;CWCF;CWL;dm=0044;na=ROMAN NUMERAL FIVE HUNDRED;NFKC_CF=0064;nv=500;SB=UP;scf=217E;slc=217E;Upper
-cp;216F;cf=217F;CWCF;CWL;dm=004D;na=ROMAN NUMERAL ONE THOUSAND;NFKC_CF=006D;nv=1000;SB=UP;scf=217F;slc=217F;Upper
-cp;2170;CWT;CWU;dm=0069;ea=A;lb=AI;Lower;na=SMALL ROMAN NUMERAL ONE;NFKC_CF=0069;nv=1;SB=LO;stc=2160;suc=2160
-cp;2171;CWT;CWU;dm=0069 0069;ea=A;lb=AI;Lower;na=SMALL ROMAN NUMERAL TWO;NFKC_CF=0069 0069;nv=2;SB=LO;stc=2161;suc=2161
-cp;2172;CWT;CWU;dm=0069 0069 0069;ea=A;lb=AI;Lower;na=SMALL ROMAN NUMERAL THREE;NFKC_CF=0069 0069 0069;nv=3;SB=LO;stc=2162;suc=2162
-cp;2173;CWT;CWU;dm=0069 0076;ea=A;lb=AI;Lower;na=SMALL ROMAN NUMERAL FOUR;NFKC_CF=0069 0076;nv=4;SB=LO;stc=2163;suc=2163
-cp;2174;CWT;CWU;dm=0076;ea=A;lb=AI;Lower;na=SMALL ROMAN NUMERAL FIVE;NFKC_CF=0076;nv=5;SB=LO;stc=2164;suc=2164
-cp;2175;CWT;CWU;dm=0076 0069;ea=A;lb=AI;Lower;na=SMALL ROMAN NUMERAL SIX;NFKC_CF=0076 0069;nv=6;SB=LO;stc=2165;suc=2165
-cp;2176;CWT;CWU;dm=0076 0069 0069;ea=A;lb=AI;Lower;na=SMALL ROMAN NUMERAL SEVEN;NFKC_CF=0076 0069 0069;nv=7;SB=LO;stc=2166;suc=2166
-cp;2177;CWT;CWU;dm=0076 0069 0069 0069;ea=A;lb=AI;Lower;na=SMALL ROMAN NUMERAL EIGHT;NFKC_CF=0076 0069 0069 0069;nv=8;SB=LO;stc=2167;suc=2167
-cp;2178;CWT;CWU;dm=0069 0078;ea=A;lb=AI;Lower;na=SMALL ROMAN NUMERAL NINE;NFKC_CF=0069 0078;nv=9;SB=LO;stc=2168;suc=2168
-cp;2179;CWT;CWU;dm=0078;ea=A;lb=AI;Lower;na=SMALL ROMAN NUMERAL TEN;NFKC_CF=0078;nv=10;SB=LO;stc=2169;suc=2169
-cp;217A;CWT;CWU;dm=0078 0069;Lower;na=SMALL ROMAN NUMERAL ELEVEN;NFKC_CF=0078 0069;nv=11;SB=LO;stc=216A;suc=216A
-cp;217B;CWT;CWU;dm=0078 0069 0069;Lower;na=SMALL ROMAN NUMERAL TWELVE;NFKC_CF=0078 0069 0069;nv=12;SB=LO;stc=216B;suc=216B
-cp;217C;CWT;CWU;dm=006C;Lower;na=SMALL ROMAN NUMERAL FIFTY;NFKC_CF=006C;nv=50;SB=LO;stc=216C;suc=216C
-cp;217D;CWT;CWU;dm=0063;Lower;na=SMALL ROMAN NUMERAL ONE HUNDRED;NFKC_CF=0063;nv=100;SB=LO;stc=216D;suc=216D
-cp;217E;CWT;CWU;dm=0064;Lower;na=SMALL ROMAN NUMERAL FIVE HUNDRED;NFKC_CF=0064;nv=500;SB=LO;stc=216E;suc=216E
-cp;217F;CWT;CWU;dm=006D;Lower;na=SMALL ROMAN NUMERAL ONE THOUSAND;NFKC_CF=006D;nv=1000;SB=LO;stc=216F;suc=216F
+cp;2160;cf=2170;CWCF;CWL;dm=0049;ea=A;lb=AI;na=ROMAN NUMERAL ONE;NFKC_CF=0069;NFKC_SCF=0069;nv=1;SB=UP;scf=2170;slc=2170;Upper
+cp;2161;cf=2171;CWCF;CWL;dm=0049 0049;ea=A;lb=AI;na=ROMAN NUMERAL TWO;NFKC_CF=0069 0069;NFKC_SCF=0069 0069;nv=2;SB=UP;scf=2171;slc=2171;Upper
+cp;2162;cf=2172;CWCF;CWL;dm=0049 0049 0049;ea=A;lb=AI;na=ROMAN NUMERAL THREE;NFKC_CF=0069 0069 0069;NFKC_SCF=0069 0069 0069;nv=3;SB=UP;scf=2172;slc=2172;Upper
+cp;2163;cf=2173;CWCF;CWL;dm=0049 0056;ea=A;lb=AI;na=ROMAN NUMERAL FOUR;NFKC_CF=0069 0076;NFKC_SCF=0069 0076;nv=4;SB=UP;scf=2173;slc=2173;Upper
+cp;2164;cf=2174;CWCF;CWL;dm=0056;ea=A;lb=AI;na=ROMAN NUMERAL FIVE;NFKC_CF=0076;NFKC_SCF=0076;nv=5;SB=UP;scf=2174;slc=2174;Upper
+cp;2165;cf=2175;CWCF;CWL;dm=0056 0049;ea=A;lb=AI;na=ROMAN NUMERAL SIX;NFKC_CF=0076 0069;NFKC_SCF=0076 0069;nv=6;SB=UP;scf=2175;slc=2175;Upper
+cp;2166;cf=2176;CWCF;CWL;dm=0056 0049 0049;ea=A;lb=AI;na=ROMAN NUMERAL SEVEN;NFKC_CF=0076 0069 0069;NFKC_SCF=0076 0069 0069;nv=7;SB=UP;scf=2176;slc=2176;Upper
+cp;2167;cf=2177;CWCF;CWL;dm=0056 0049 0049 0049;ea=A;lb=AI;na=ROMAN NUMERAL EIGHT;NFKC_CF=0076 0069 0069 0069;NFKC_SCF=0076 0069 0069 0069;nv=8;SB=UP;scf=2177;slc=2177;Upper
+cp;2168;cf=2178;CWCF;CWL;dm=0049 0058;ea=A;lb=AI;na=ROMAN NUMERAL NINE;NFKC_CF=0069 0078;NFKC_SCF=0069 0078;nv=9;SB=UP;scf=2178;slc=2178;Upper
+cp;2169;cf=2179;CWCF;CWL;dm=0058;ea=A;lb=AI;na=ROMAN NUMERAL TEN;NFKC_CF=0078;NFKC_SCF=0078;nv=10;SB=UP;scf=2179;slc=2179;Upper
+cp;216A;cf=217A;CWCF;CWL;dm=0058 0049;ea=A;lb=AI;na=ROMAN NUMERAL ELEVEN;NFKC_CF=0078 0069;NFKC_SCF=0078 0069;nv=11;SB=UP;scf=217A;slc=217A;Upper
+cp;216B;cf=217B;CWCF;CWL;dm=0058 0049 0049;ea=A;lb=AI;na=ROMAN NUMERAL TWELVE;NFKC_CF=0078 0069 0069;NFKC_SCF=0078 0069 0069;nv=12;SB=UP;scf=217B;slc=217B;Upper
+cp;216C;cf=217C;CWCF;CWL;dm=004C;na=ROMAN NUMERAL FIFTY;NFKC_CF=006C;NFKC_SCF=006C;nv=50;SB=UP;scf=217C;slc=217C;Upper
+cp;216D;cf=217D;CWCF;CWL;dm=0043;na=ROMAN NUMERAL ONE HUNDRED;NFKC_CF=0063;NFKC_SCF=0063;nv=100;SB=UP;scf=217D;slc=217D;Upper
+cp;216E;cf=217E;CWCF;CWL;dm=0044;na=ROMAN NUMERAL FIVE HUNDRED;NFKC_CF=0064;NFKC_SCF=0064;nv=500;SB=UP;scf=217E;slc=217E;Upper
+cp;216F;cf=217F;CWCF;CWL;dm=004D;na=ROMAN NUMERAL ONE THOUSAND;NFKC_CF=006D;NFKC_SCF=006D;nv=1000;SB=UP;scf=217F;slc=217F;Upper
+cp;2170;CWT;CWU;dm=0069;ea=A;lb=AI;Lower;na=SMALL ROMAN NUMERAL ONE;NFKC_CF=0069;NFKC_SCF=0069;nv=1;SB=LO;stc=2160;suc=2160
+cp;2171;CWT;CWU;dm=0069 0069;ea=A;lb=AI;Lower;na=SMALL ROMAN NUMERAL TWO;NFKC_CF=0069 0069;NFKC_SCF=0069 0069;nv=2;SB=LO;stc=2161;suc=2161
+cp;2172;CWT;CWU;dm=0069 0069 0069;ea=A;lb=AI;Lower;na=SMALL ROMAN NUMERAL THREE;NFKC_CF=0069 0069 0069;NFKC_SCF=0069 0069 0069;nv=3;SB=LO;stc=2162;suc=2162
+cp;2173;CWT;CWU;dm=0069 0076;ea=A;lb=AI;Lower;na=SMALL ROMAN NUMERAL FOUR;NFKC_CF=0069 0076;NFKC_SCF=0069 0076;nv=4;SB=LO;stc=2163;suc=2163
+cp;2174;CWT;CWU;dm=0076;ea=A;lb=AI;Lower;na=SMALL ROMAN NUMERAL FIVE;NFKC_CF=0076;NFKC_SCF=0076;nv=5;SB=LO;stc=2164;suc=2164
+cp;2175;CWT;CWU;dm=0076 0069;ea=A;lb=AI;Lower;na=SMALL ROMAN NUMERAL SIX;NFKC_CF=0076 0069;NFKC_SCF=0076 0069;nv=6;SB=LO;stc=2165;suc=2165
+cp;2176;CWT;CWU;dm=0076 0069 0069;ea=A;lb=AI;Lower;na=SMALL ROMAN NUMERAL SEVEN;NFKC_CF=0076 0069 0069;NFKC_SCF=0076 0069 0069;nv=7;SB=LO;stc=2166;suc=2166
+cp;2177;CWT;CWU;dm=0076 0069 0069 0069;ea=A;lb=AI;Lower;na=SMALL ROMAN NUMERAL EIGHT;NFKC_CF=0076 0069 0069 0069;NFKC_SCF=0076 0069 0069 0069;nv=8;SB=LO;stc=2167;suc=2167
+cp;2178;CWT;CWU;dm=0069 0078;ea=A;lb=AI;Lower;na=SMALL ROMAN NUMERAL NINE;NFKC_CF=0069 0078;NFKC_SCF=0069 0078;nv=9;SB=LO;stc=2168;suc=2168
+cp;2179;CWT;CWU;dm=0078;ea=A;lb=AI;Lower;na=SMALL ROMAN NUMERAL TEN;NFKC_CF=0078;NFKC_SCF=0078;nv=10;SB=LO;stc=2169;suc=2169
+cp;217A;CWT;CWU;dm=0078 0069;Lower;na=SMALL ROMAN NUMERAL ELEVEN;NFKC_CF=0078 0069;NFKC_SCF=0078 0069;nv=11;SB=LO;stc=216A;suc=216A
+cp;217B;CWT;CWU;dm=0078 0069 0069;Lower;na=SMALL ROMAN NUMERAL TWELVE;NFKC_CF=0078 0069 0069;NFKC_SCF=0078 0069 0069;nv=12;SB=LO;stc=216B;suc=216B
+cp;217C;CWT;CWU;dm=006C;Lower;na=SMALL ROMAN NUMERAL FIFTY;NFKC_CF=006C;NFKC_SCF=006C;nv=50;SB=LO;stc=216C;suc=216C
+cp;217D;CWT;CWU;dm=0063;Lower;na=SMALL ROMAN NUMERAL ONE HUNDRED;NFKC_CF=0063;NFKC_SCF=0063;nv=100;SB=LO;stc=216D;suc=216D
+cp;217E;CWT;CWU;dm=0064;Lower;na=SMALL ROMAN NUMERAL FIVE HUNDRED;NFKC_CF=0064;NFKC_SCF=0064;nv=500;SB=LO;stc=216E;suc=216E
+cp;217F;CWT;CWU;dm=006D;Lower;na=SMALL ROMAN NUMERAL ONE THOUSAND;NFKC_CF=006D;NFKC_SCF=006D;nv=1000;SB=LO;stc=216F;suc=216F
# Archaic Roman numerals
cp;2180;-Cased;-CWCM;-CWKCF;dt=None;na=ROMAN NUMERAL ONE THOUSAND C D;NFKC_QC=Y;NFKD_QC=Y;nv=1000;SB=LE
cp;2181;-Cased;-CWCM;-CWKCF;dt=None;na=ROMAN NUMERAL FIVE THOUSAND;NFKC_QC=Y;NFKD_QC=Y;nv=5000;SB=LE
cp;2182;-Cased;-CWCM;-CWKCF;dt=None;na=ROMAN NUMERAL TEN THOUSAND;NFKC_QC=Y;NFKD_QC=Y;nv=10000;SB=LE
-cp;2183;age=3.0;cf=2184;CWCF;CWL;dt=None;gc=Lu;na=ROMAN NUMERAL REVERSED ONE HUNDRED;NFKC_CF=2184;NFKC_QC=Y;NFKD_QC=Y;nt=None;SB=UP;scf=2184;slc=2184;Upper
+cp;2183;age=3.0;cf=2184;CWCF;CWL;dt=None;gc=Lu;na=ROMAN NUMERAL REVERSED ONE HUNDRED;NFKC_CF=2184;NFKC_QC=Y;NFKC_SCF=2184;NFKD_QC=Y;nt=None;SB=UP;scf=2184;slc=2184;Upper
# Lowercase Claudian letter
cp;2184;age=5.0;-CWKCF;CWT;CWU;dt=None;gc=Ll;Lower;na=LATIN SMALL LETTER REVERSED C;NFKC_QC=Y;NFKD_QC=Y;nt=None;SB=LO;stc=2183;suc=2183
# Archaic Roman numerals
@@ -10202,7 +10219,7 @@ cp;2186;age=5.1;-Cased;-CWCM;-CWKCF;dt=None;na=ROMAN NUMERAL FIFTY EARLY FORM;NF
cp;2187;age=5.1;-Cased;-CWCM;-CWKCF;dt=None;na=ROMAN NUMERAL FIFTY THOUSAND;NFKC_QC=Y;NFKD_QC=Y;nv=50000;SB=LE
cp;2188;age=5.1;-Cased;-CWCM;-CWKCF;dt=None;na=ROMAN NUMERAL ONE HUNDRED THOUSAND;NFKC_QC=Y;NFKD_QC=Y;nv=100000;SB=LE
# Fraction
-cp;2189;age=5.2;-Alpha;bc=ON;-Cased;-CWCM;dm=0030 2044 0033;dt=Fra;ea=A;gc=No;-IDC;-IDS;lb=AI;na=VULGAR FRACTION ZERO THIRDS;NFKC_CF=0030 2044 0033;nv=0;sc=Zyyy;WB=XX;-XIDC;-XIDS
+cp;2189;age=5.2;-Alpha;bc=ON;-Cased;-CWCM;dm=0030 2044 0033;dt=Fra;ea=A;gc=No;-IDC;-IDS;lb=AI;na=VULGAR FRACTION ZERO THIRDS;NFKC_CF=0030 2044 0033;NFKC_SCF=0030 2044 0033;nv=0;sc=Zyyy;WB=XX;-XIDC;-XIDS
# Turned digits
cp;218A;age=8.0;-Alpha;bc=ON;-Cased;-CWCM;-CWKCF;dt=None;gc=So;-IDC;-IDS;na=TURNED DIGIT TWO;NFKC_QC=Y;NFKD_QC=Y;nt=None;sc=Zyyy;vo=R;WB=XX;-XIDC;-XIDS
cp;218B;age=8.0;-Alpha;bc=ON;-Cased;-CWCM;-CWKCF;dt=None;gc=So;-IDC;-IDS;na=TURNED DIGIT THREE;NFKC_QC=Y;NFKD_QC=Y;nt=None;sc=Zyyy;vo=R;WB=XX;-XIDC;-XIDS
@@ -10338,12 +10355,12 @@ block;2200..22FF;age=1.1;bc=ON;Bidi_M;blk=Math_Operators;gc=Sm;Gr_Base;lb=AL;Mat
# Miscellaneous mathematical symbols
cp;2200;-Bidi_M;ea=A;lb=AI;na=FOR ALL
cp;2201;na=COMPLEMENT
-cp;2202;ea=A;lb=AI;na=PARTIAL DIFFERENTIAL
+cp;2202;ea=A;ID_Compat_Math_Continue;ID_Compat_Math_Start;lb=AI;na=PARTIAL DIFFERENTIAL
cp;2203;ea=A;lb=AI;na=THERE EXISTS
cp;2204;dm=2203 0338;dt=Can;na=THERE DOES NOT EXIST;NFD_QC=N;NFKD_QC=N
cp;2205;-Bidi_M;na=EMPTY SET
cp;2206;-Bidi_M;na=INCREMENT
-cp;2207;-Bidi_M;ea=A;lb=AI;na=NABLA
+cp;2207;-Bidi_M;ea=A;ID_Compat_Math_Continue;ID_Compat_Math_Start;lb=AI;na=NABLA
# Set membership
cp;2208;bmg=220B;ea=A;lb=AI;na=ELEMENT OF
cp;2209;bmg=220C;dm=2208 0338;dt=Can;na=NOT AN ELEMENT OF;NFD_QC=N;NFKD_QC=N
@@ -10371,7 +10388,7 @@ cp;221B;na=CUBE ROOT
cp;221C;na=FOURTH ROOT
cp;221D;ea=A;lb=AI;na=PROPORTIONAL TO
# Miscellaneous mathematical symbol
-cp;221E;-Bidi_M;ea=A;lb=AI;na=INFINITY;vo=U
+cp;221E;-Bidi_M;ea=A;ID_Compat_Math_Continue;ID_Compat_Math_Start;lb=AI;na=INFINITY;vo=U
# Angles
cp;221F;bmg=2BFE;ea=A;lb=AI;na=RIGHT ANGLE
cp;2220;bmg=29A3;ea=A;lb=AI;na=ANGLE
@@ -10389,11 +10406,11 @@ cp;2229;-Bidi_M;ea=A;lb=AI;na=INTERSECTION
cp;222A;-Bidi_M;ea=A;lb=AI;na=UNION
# Integrals
cp;222B;ea=A;lb=AI;na=INTEGRAL
-cp;222C;CWKCF;dm=222B 222B;dt=Com;ea=A;lb=AI;na=DOUBLE INTEGRAL;NFKC_CF=222B 222B;NFKC_QC=N;NFKD_QC=N
-cp;222D;CWKCF;dm=222B 222B 222B;dt=Com;na=TRIPLE INTEGRAL;NFKC_CF=222B 222B 222B;NFKC_QC=N;NFKD_QC=N
+cp;222C;CWKCF;dm=222B 222B;dt=Com;ea=A;lb=AI;na=DOUBLE INTEGRAL;NFKC_CF=222B 222B;NFKC_QC=N;NFKC_SCF=222B 222B;NFKD_QC=N
+cp;222D;CWKCF;dm=222B 222B 222B;dt=Com;na=TRIPLE INTEGRAL;NFKC_CF=222B 222B 222B;NFKC_QC=N;NFKC_SCF=222B 222B 222B;NFKD_QC=N
cp;222E;ea=A;lb=AI;na=CONTOUR INTEGRAL
-cp;222F;CWKCF;dm=222E 222E;dt=Com;na=SURFACE INTEGRAL;NFKC_CF=222E 222E;NFKC_QC=N;NFKD_QC=N
-cp;2230;CWKCF;dm=222E 222E 222E;dt=Com;na=VOLUME INTEGRAL;NFKC_CF=222E 222E 222E;NFKC_QC=N;NFKD_QC=N
+cp;222F;CWKCF;dm=222E 222E;dt=Com;na=SURFACE INTEGRAL;NFKC_CF=222E 222E;NFKC_QC=N;NFKC_SCF=222E 222E;NFKD_QC=N
+cp;2230;CWKCF;dm=222E 222E 222E;dt=Com;na=VOLUME INTEGRAL;NFKC_CF=222E 222E 222E;NFKC_QC=N;NFKC_SCF=222E 222E 222E;NFKD_QC=N
cp;2231;na=CLOCKWISE INTEGRAL
cp;2232;na=CLOCKWISE CONTOUR INTEGRAL
cp;2233;na=ANTICLOCKWISE CONTOUR INTEGRAL
@@ -10682,8 +10699,8 @@ cp;2326;na=ERASE TO THE RIGHT;vo=U
cp;2327;na=X IN A RECTANGLE BOX;vo=U
cp;2328;Emoji;ExtPict;na=KEYBOARD;vo=U
# Deprecated angle brackets
-cp;2329;Bidi_M;bmg=232A;bpb=232A;bpt=o;Comp_Ex;CWKCF;Dep;dm=3008;dt=Can;ea=W;gc=Ps;lb=OP;na=LEFT-POINTING ANGLE BRACKET;NFC_QC=N;NFD_QC=N;NFKC_CF=3008;NFKC_QC=N;NFKD_QC=N;SB=CL;vo=Tr
-cp;232A;Bidi_M;bmg=2329;bpb=2329;bpt=c;Comp_Ex;CWKCF;Dep;dm=3009;dt=Can;ea=W;gc=Pe;lb=CL;na=RIGHT-POINTING ANGLE BRACKET;NFC_QC=N;NFD_QC=N;NFKC_CF=3009;NFKC_QC=N;NFKD_QC=N;SB=CL;vo=Tr
+cp;2329;Bidi_M;bmg=232A;bpb=232A;bpt=o;Comp_Ex;CWKCF;Dep;dm=3008;dt=Can;ea=W;gc=Ps;lb=OP;na=LEFT-POINTING ANGLE BRACKET;NFC_QC=N;NFD_QC=N;NFKC_CF=3008;NFKC_QC=N;NFKC_SCF=3008;NFKD_QC=N;SB=CL;vo=Tr
+cp;232A;Bidi_M;bmg=2329;bpb=2329;bpt=c;Comp_Ex;CWKCF;Dep;dm=3009;dt=Can;ea=W;gc=Pe;lb=CL;na=RIGHT-POINTING ANGLE BRACKET;NFC_QC=N;NFD_QC=N;NFKC_CF=3009;NFKC_QC=N;NFKC_SCF=3009;NFKD_QC=N;SB=CL;vo=Tr
# Keyboard symbol
cp;232B;na=ERASE TO THE LEFT;vo=U
# Chemistry symbol
@@ -10999,150 +11016,150 @@ unassigned;244B..245F;Pat_Syn;vo=U
block;2460..24FF;age=1.1;blk=Enclosed_Alphanum;CWKCF;dt=Enc;ea=A;gc=No;Gr_Base;lb=AI;NFKC_QC=N;NFKD_QC=N;sc=Zyyy;vo=U
# 2460..24FF Enclosed Alphanumerics
# Circled numbers
-cp;2460;bc=ON;dm=0031;na=CIRCLED DIGIT ONE;NFKC_CF=0031;nt=Di;nv=1
-cp;2461;bc=ON;dm=0032;na=CIRCLED DIGIT TWO;NFKC_CF=0032;nt=Di;nv=2
-cp;2462;bc=ON;dm=0033;na=CIRCLED DIGIT THREE;NFKC_CF=0033;nt=Di;nv=3
-cp;2463;bc=ON;dm=0034;na=CIRCLED DIGIT FOUR;NFKC_CF=0034;nt=Di;nv=4
-cp;2464;bc=ON;dm=0035;na=CIRCLED DIGIT FIVE;NFKC_CF=0035;nt=Di;nv=5
-cp;2465;bc=ON;dm=0036;na=CIRCLED DIGIT SIX;NFKC_CF=0036;nt=Di;nv=6
-cp;2466;bc=ON;dm=0037;na=CIRCLED DIGIT SEVEN;NFKC_CF=0037;nt=Di;nv=7
-cp;2467;bc=ON;dm=0038;na=CIRCLED DIGIT EIGHT;NFKC_CF=0038;nt=Di;nv=8
-cp;2468;bc=ON;dm=0039;na=CIRCLED DIGIT NINE;NFKC_CF=0039;nt=Di;nv=9
-cp;2469;bc=ON;dm=0031 0030;na=CIRCLED NUMBER TEN;NFKC_CF=0031 0030;nt=Nu;nv=10
-cp;246A;bc=ON;dm=0031 0031;na=CIRCLED NUMBER ELEVEN;NFKC_CF=0031 0031;nt=Nu;nv=11
-cp;246B;bc=ON;dm=0031 0032;na=CIRCLED NUMBER TWELVE;NFKC_CF=0031 0032;nt=Nu;nv=12
-cp;246C;bc=ON;dm=0031 0033;na=CIRCLED NUMBER THIRTEEN;NFKC_CF=0031 0033;nt=Nu;nv=13
-cp;246D;bc=ON;dm=0031 0034;na=CIRCLED NUMBER FOURTEEN;NFKC_CF=0031 0034;nt=Nu;nv=14
-cp;246E;bc=ON;dm=0031 0035;na=CIRCLED NUMBER FIFTEEN;NFKC_CF=0031 0035;nt=Nu;nv=15
-cp;246F;bc=ON;dm=0031 0036;na=CIRCLED NUMBER SIXTEEN;NFKC_CF=0031 0036;nt=Nu;nv=16
-cp;2470;bc=ON;dm=0031 0037;na=CIRCLED NUMBER SEVENTEEN;NFKC_CF=0031 0037;nt=Nu;nv=17
-cp;2471;bc=ON;dm=0031 0038;na=CIRCLED NUMBER EIGHTEEN;NFKC_CF=0031 0038;nt=Nu;nv=18
-cp;2472;bc=ON;dm=0031 0039;na=CIRCLED NUMBER NINETEEN;NFKC_CF=0031 0039;nt=Nu;nv=19
-cp;2473;bc=ON;dm=0032 0030;na=CIRCLED NUMBER TWENTY;NFKC_CF=0032 0030;nt=Nu;nv=20
+cp;2460;bc=ON;dm=0031;na=CIRCLED DIGIT ONE;NFKC_CF=0031;NFKC_SCF=0031;nt=Di;nv=1
+cp;2461;bc=ON;dm=0032;na=CIRCLED DIGIT TWO;NFKC_CF=0032;NFKC_SCF=0032;nt=Di;nv=2
+cp;2462;bc=ON;dm=0033;na=CIRCLED DIGIT THREE;NFKC_CF=0033;NFKC_SCF=0033;nt=Di;nv=3
+cp;2463;bc=ON;dm=0034;na=CIRCLED DIGIT FOUR;NFKC_CF=0034;NFKC_SCF=0034;nt=Di;nv=4
+cp;2464;bc=ON;dm=0035;na=CIRCLED DIGIT FIVE;NFKC_CF=0035;NFKC_SCF=0035;nt=Di;nv=5
+cp;2465;bc=ON;dm=0036;na=CIRCLED DIGIT SIX;NFKC_CF=0036;NFKC_SCF=0036;nt=Di;nv=6
+cp;2466;bc=ON;dm=0037;na=CIRCLED DIGIT SEVEN;NFKC_CF=0037;NFKC_SCF=0037;nt=Di;nv=7
+cp;2467;bc=ON;dm=0038;na=CIRCLED DIGIT EIGHT;NFKC_CF=0038;NFKC_SCF=0038;nt=Di;nv=8
+cp;2468;bc=ON;dm=0039;na=CIRCLED DIGIT NINE;NFKC_CF=0039;NFKC_SCF=0039;nt=Di;nv=9
+cp;2469;bc=ON;dm=0031 0030;na=CIRCLED NUMBER TEN;NFKC_CF=0031 0030;NFKC_SCF=0031 0030;nt=Nu;nv=10
+cp;246A;bc=ON;dm=0031 0031;na=CIRCLED NUMBER ELEVEN;NFKC_CF=0031 0031;NFKC_SCF=0031 0031;nt=Nu;nv=11
+cp;246B;bc=ON;dm=0031 0032;na=CIRCLED NUMBER TWELVE;NFKC_CF=0031 0032;NFKC_SCF=0031 0032;nt=Nu;nv=12
+cp;246C;bc=ON;dm=0031 0033;na=CIRCLED NUMBER THIRTEEN;NFKC_CF=0031 0033;NFKC_SCF=0031 0033;nt=Nu;nv=13
+cp;246D;bc=ON;dm=0031 0034;na=CIRCLED NUMBER FOURTEEN;NFKC_CF=0031 0034;NFKC_SCF=0031 0034;nt=Nu;nv=14
+cp;246E;bc=ON;dm=0031 0035;na=CIRCLED NUMBER FIFTEEN;NFKC_CF=0031 0035;NFKC_SCF=0031 0035;nt=Nu;nv=15
+cp;246F;bc=ON;dm=0031 0036;na=CIRCLED NUMBER SIXTEEN;NFKC_CF=0031 0036;NFKC_SCF=0031 0036;nt=Nu;nv=16
+cp;2470;bc=ON;dm=0031 0037;na=CIRCLED NUMBER SEVENTEEN;NFKC_CF=0031 0037;NFKC_SCF=0031 0037;nt=Nu;nv=17
+cp;2471;bc=ON;dm=0031 0038;na=CIRCLED NUMBER EIGHTEEN;NFKC_CF=0031 0038;NFKC_SCF=0031 0038;nt=Nu;nv=18
+cp;2472;bc=ON;dm=0031 0039;na=CIRCLED NUMBER NINETEEN;NFKC_CF=0031 0039;NFKC_SCF=0031 0039;nt=Nu;nv=19
+cp;2473;bc=ON;dm=0032 0030;na=CIRCLED NUMBER TWENTY;NFKC_CF=0032 0030;NFKC_SCF=0032 0030;nt=Nu;nv=20
# Parenthesized numbers
-cp;2474;bc=ON;dm=0028 0031 0029;dt=Com;na=PARENTHESIZED DIGIT ONE;NFKC_CF=0028 0031 0029;nt=Di;nv=1
-cp;2475;bc=ON;dm=0028 0032 0029;dt=Com;na=PARENTHESIZED DIGIT TWO;NFKC_CF=0028 0032 0029;nt=Di;nv=2
-cp;2476;bc=ON;dm=0028 0033 0029;dt=Com;na=PARENTHESIZED DIGIT THREE;NFKC_CF=0028 0033 0029;nt=Di;nv=3
-cp;2477;bc=ON;dm=0028 0034 0029;dt=Com;na=PARENTHESIZED DIGIT FOUR;NFKC_CF=0028 0034 0029;nt=Di;nv=4
-cp;2478;bc=ON;dm=0028 0035 0029;dt=Com;na=PARENTHESIZED DIGIT FIVE;NFKC_CF=0028 0035 0029;nt=Di;nv=5
-cp;2479;bc=ON;dm=0028 0036 0029;dt=Com;na=PARENTHESIZED DIGIT SIX;NFKC_CF=0028 0036 0029;nt=Di;nv=6
-cp;247A;bc=ON;dm=0028 0037 0029;dt=Com;na=PARENTHESIZED DIGIT SEVEN;NFKC_CF=0028 0037 0029;nt=Di;nv=7
-cp;247B;bc=ON;dm=0028 0038 0029;dt=Com;na=PARENTHESIZED DIGIT EIGHT;NFKC_CF=0028 0038 0029;nt=Di;nv=8
-cp;247C;bc=ON;dm=0028 0039 0029;dt=Com;na=PARENTHESIZED DIGIT NINE;NFKC_CF=0028 0039 0029;nt=Di;nv=9
-cp;247D;bc=ON;dm=0028 0031 0030 0029;dt=Com;na=PARENTHESIZED NUMBER TEN;NFKC_CF=0028 0031 0030 0029;nt=Nu;nv=10
-cp;247E;bc=ON;dm=0028 0031 0031 0029;dt=Com;na=PARENTHESIZED NUMBER ELEVEN;NFKC_CF=0028 0031 0031 0029;nt=Nu;nv=11
-cp;247F;bc=ON;dm=0028 0031 0032 0029;dt=Com;na=PARENTHESIZED NUMBER TWELVE;NFKC_CF=0028 0031 0032 0029;nt=Nu;nv=12
-cp;2480;bc=ON;dm=0028 0031 0033 0029;dt=Com;na=PARENTHESIZED NUMBER THIRTEEN;NFKC_CF=0028 0031 0033 0029;nt=Nu;nv=13
-cp;2481;bc=ON;dm=0028 0031 0034 0029;dt=Com;na=PARENTHESIZED NUMBER FOURTEEN;NFKC_CF=0028 0031 0034 0029;nt=Nu;nv=14
-cp;2482;bc=ON;dm=0028 0031 0035 0029;dt=Com;na=PARENTHESIZED NUMBER FIFTEEN;NFKC_CF=0028 0031 0035 0029;nt=Nu;nv=15
-cp;2483;bc=ON;dm=0028 0031 0036 0029;dt=Com;na=PARENTHESIZED NUMBER SIXTEEN;NFKC_CF=0028 0031 0036 0029;nt=Nu;nv=16
-cp;2484;bc=ON;dm=0028 0031 0037 0029;dt=Com;na=PARENTHESIZED NUMBER SEVENTEEN;NFKC_CF=0028 0031 0037 0029;nt=Nu;nv=17
-cp;2485;bc=ON;dm=0028 0031 0038 0029;dt=Com;na=PARENTHESIZED NUMBER EIGHTEEN;NFKC_CF=0028 0031 0038 0029;nt=Nu;nv=18
-cp;2486;bc=ON;dm=0028 0031 0039 0029;dt=Com;na=PARENTHESIZED NUMBER NINETEEN;NFKC_CF=0028 0031 0039 0029;nt=Nu;nv=19
-cp;2487;bc=ON;dm=0028 0032 0030 0029;dt=Com;na=PARENTHESIZED NUMBER TWENTY;NFKC_CF=0028 0032 0030 0029;nt=Nu;nv=20
+cp;2474;bc=ON;dm=0028 0031 0029;dt=Com;na=PARENTHESIZED DIGIT ONE;NFKC_CF=0028 0031 0029;NFKC_SCF=0028 0031 0029;nt=Di;nv=1
+cp;2475;bc=ON;dm=0028 0032 0029;dt=Com;na=PARENTHESIZED DIGIT TWO;NFKC_CF=0028 0032 0029;NFKC_SCF=0028 0032 0029;nt=Di;nv=2
+cp;2476;bc=ON;dm=0028 0033 0029;dt=Com;na=PARENTHESIZED DIGIT THREE;NFKC_CF=0028 0033 0029;NFKC_SCF=0028 0033 0029;nt=Di;nv=3
+cp;2477;bc=ON;dm=0028 0034 0029;dt=Com;na=PARENTHESIZED DIGIT FOUR;NFKC_CF=0028 0034 0029;NFKC_SCF=0028 0034 0029;nt=Di;nv=4
+cp;2478;bc=ON;dm=0028 0035 0029;dt=Com;na=PARENTHESIZED DIGIT FIVE;NFKC_CF=0028 0035 0029;NFKC_SCF=0028 0035 0029;nt=Di;nv=5
+cp;2479;bc=ON;dm=0028 0036 0029;dt=Com;na=PARENTHESIZED DIGIT SIX;NFKC_CF=0028 0036 0029;NFKC_SCF=0028 0036 0029;nt=Di;nv=6
+cp;247A;bc=ON;dm=0028 0037 0029;dt=Com;na=PARENTHESIZED DIGIT SEVEN;NFKC_CF=0028 0037 0029;NFKC_SCF=0028 0037 0029;nt=Di;nv=7
+cp;247B;bc=ON;dm=0028 0038 0029;dt=Com;na=PARENTHESIZED DIGIT EIGHT;NFKC_CF=0028 0038 0029;NFKC_SCF=0028 0038 0029;nt=Di;nv=8
+cp;247C;bc=ON;dm=0028 0039 0029;dt=Com;na=PARENTHESIZED DIGIT NINE;NFKC_CF=0028 0039 0029;NFKC_SCF=0028 0039 0029;nt=Di;nv=9
+cp;247D;bc=ON;dm=0028 0031 0030 0029;dt=Com;na=PARENTHESIZED NUMBER TEN;NFKC_CF=0028 0031 0030 0029;NFKC_SCF=0028 0031 0030 0029;nt=Nu;nv=10
+cp;247E;bc=ON;dm=0028 0031 0031 0029;dt=Com;na=PARENTHESIZED NUMBER ELEVEN;NFKC_CF=0028 0031 0031 0029;NFKC_SCF=0028 0031 0031 0029;nt=Nu;nv=11
+cp;247F;bc=ON;dm=0028 0031 0032 0029;dt=Com;na=PARENTHESIZED NUMBER TWELVE;NFKC_CF=0028 0031 0032 0029;NFKC_SCF=0028 0031 0032 0029;nt=Nu;nv=12
+cp;2480;bc=ON;dm=0028 0031 0033 0029;dt=Com;na=PARENTHESIZED NUMBER THIRTEEN;NFKC_CF=0028 0031 0033 0029;NFKC_SCF=0028 0031 0033 0029;nt=Nu;nv=13
+cp;2481;bc=ON;dm=0028 0031 0034 0029;dt=Com;na=PARENTHESIZED NUMBER FOURTEEN;NFKC_CF=0028 0031 0034 0029;NFKC_SCF=0028 0031 0034 0029;nt=Nu;nv=14
+cp;2482;bc=ON;dm=0028 0031 0035 0029;dt=Com;na=PARENTHESIZED NUMBER FIFTEEN;NFKC_CF=0028 0031 0035 0029;NFKC_SCF=0028 0031 0035 0029;nt=Nu;nv=15
+cp;2483;bc=ON;dm=0028 0031 0036 0029;dt=Com;na=PARENTHESIZED NUMBER SIXTEEN;NFKC_CF=0028 0031 0036 0029;NFKC_SCF=0028 0031 0036 0029;nt=Nu;nv=16
+cp;2484;bc=ON;dm=0028 0031 0037 0029;dt=Com;na=PARENTHESIZED NUMBER SEVENTEEN;NFKC_CF=0028 0031 0037 0029;NFKC_SCF=0028 0031 0037 0029;nt=Nu;nv=17
+cp;2485;bc=ON;dm=0028 0031 0038 0029;dt=Com;na=PARENTHESIZED NUMBER EIGHTEEN;NFKC_CF=0028 0031 0038 0029;NFKC_SCF=0028 0031 0038 0029;nt=Nu;nv=18
+cp;2486;bc=ON;dm=0028 0031 0039 0029;dt=Com;na=PARENTHESIZED NUMBER NINETEEN;NFKC_CF=0028 0031 0039 0029;NFKC_SCF=0028 0031 0039 0029;nt=Nu;nv=19
+cp;2487;bc=ON;dm=0028 0032 0030 0029;dt=Com;na=PARENTHESIZED NUMBER TWENTY;NFKC_CF=0028 0032 0030 0029;NFKC_SCF=0028 0032 0030 0029;nt=Nu;nv=20
# Numbers period
-cp;2488;bc=EN;dm=0031 002E;dt=Com;na=DIGIT ONE FULL STOP;NFKC_CF=0031 002E;nt=Di;nv=1
-cp;2489;bc=EN;dm=0032 002E;dt=Com;na=DIGIT TWO FULL STOP;NFKC_CF=0032 002E;nt=Di;nv=2
-cp;248A;bc=EN;dm=0033 002E;dt=Com;na=DIGIT THREE FULL STOP;NFKC_CF=0033 002E;nt=Di;nv=3
-cp;248B;bc=EN;dm=0034 002E;dt=Com;na=DIGIT FOUR FULL STOP;NFKC_CF=0034 002E;nt=Di;nv=4
-cp;248C;bc=EN;dm=0035 002E;dt=Com;na=DIGIT FIVE FULL STOP;NFKC_CF=0035 002E;nt=Di;nv=5
-cp;248D;bc=EN;dm=0036 002E;dt=Com;na=DIGIT SIX FULL STOP;NFKC_CF=0036 002E;nt=Di;nv=6
-cp;248E;bc=EN;dm=0037 002E;dt=Com;na=DIGIT SEVEN FULL STOP;NFKC_CF=0037 002E;nt=Di;nv=7
-cp;248F;bc=EN;dm=0038 002E;dt=Com;na=DIGIT EIGHT FULL STOP;NFKC_CF=0038 002E;nt=Di;nv=8
-cp;2490;bc=EN;dm=0039 002E;dt=Com;na=DIGIT NINE FULL STOP;NFKC_CF=0039 002E;nt=Di;nv=9
-cp;2491;bc=EN;dm=0031 0030 002E;dt=Com;na=NUMBER TEN FULL STOP;NFKC_CF=0031 0030 002E;nt=Nu;nv=10
-cp;2492;bc=EN;dm=0031 0031 002E;dt=Com;na=NUMBER ELEVEN FULL STOP;NFKC_CF=0031 0031 002E;nt=Nu;nv=11
-cp;2493;bc=EN;dm=0031 0032 002E;dt=Com;na=NUMBER TWELVE FULL STOP;NFKC_CF=0031 0032 002E;nt=Nu;nv=12
-cp;2494;bc=EN;dm=0031 0033 002E;dt=Com;na=NUMBER THIRTEEN FULL STOP;NFKC_CF=0031 0033 002E;nt=Nu;nv=13
-cp;2495;bc=EN;dm=0031 0034 002E;dt=Com;na=NUMBER FOURTEEN FULL STOP;NFKC_CF=0031 0034 002E;nt=Nu;nv=14
-cp;2496;bc=EN;dm=0031 0035 002E;dt=Com;na=NUMBER FIFTEEN FULL STOP;NFKC_CF=0031 0035 002E;nt=Nu;nv=15
-cp;2497;bc=EN;dm=0031 0036 002E;dt=Com;na=NUMBER SIXTEEN FULL STOP;NFKC_CF=0031 0036 002E;nt=Nu;nv=16
-cp;2498;bc=EN;dm=0031 0037 002E;dt=Com;na=NUMBER SEVENTEEN FULL STOP;NFKC_CF=0031 0037 002E;nt=Nu;nv=17
-cp;2499;bc=EN;dm=0031 0038 002E;dt=Com;na=NUMBER EIGHTEEN FULL STOP;NFKC_CF=0031 0038 002E;nt=Nu;nv=18
-cp;249A;bc=EN;dm=0031 0039 002E;dt=Com;na=NUMBER NINETEEN FULL STOP;NFKC_CF=0031 0039 002E;nt=Nu;nv=19
-cp;249B;bc=EN;dm=0032 0030 002E;dt=Com;na=NUMBER TWENTY FULL STOP;NFKC_CF=0032 0030 002E;nt=Nu;nv=20
+cp;2488;bc=EN;dm=0031 002E;dt=Com;na=DIGIT ONE FULL STOP;NFKC_CF=0031 002E;NFKC_SCF=0031 002E;nt=Di;nv=1
+cp;2489;bc=EN;dm=0032 002E;dt=Com;na=DIGIT TWO FULL STOP;NFKC_CF=0032 002E;NFKC_SCF=0032 002E;nt=Di;nv=2
+cp;248A;bc=EN;dm=0033 002E;dt=Com;na=DIGIT THREE FULL STOP;NFKC_CF=0033 002E;NFKC_SCF=0033 002E;nt=Di;nv=3
+cp;248B;bc=EN;dm=0034 002E;dt=Com;na=DIGIT FOUR FULL STOP;NFKC_CF=0034 002E;NFKC_SCF=0034 002E;nt=Di;nv=4
+cp;248C;bc=EN;dm=0035 002E;dt=Com;na=DIGIT FIVE FULL STOP;NFKC_CF=0035 002E;NFKC_SCF=0035 002E;nt=Di;nv=5
+cp;248D;bc=EN;dm=0036 002E;dt=Com;na=DIGIT SIX FULL STOP;NFKC_CF=0036 002E;NFKC_SCF=0036 002E;nt=Di;nv=6
+cp;248E;bc=EN;dm=0037 002E;dt=Com;na=DIGIT SEVEN FULL STOP;NFKC_CF=0037 002E;NFKC_SCF=0037 002E;nt=Di;nv=7
+cp;248F;bc=EN;dm=0038 002E;dt=Com;na=DIGIT EIGHT FULL STOP;NFKC_CF=0038 002E;NFKC_SCF=0038 002E;nt=Di;nv=8
+cp;2490;bc=EN;dm=0039 002E;dt=Com;na=DIGIT NINE FULL STOP;NFKC_CF=0039 002E;NFKC_SCF=0039 002E;nt=Di;nv=9
+cp;2491;bc=EN;dm=0031 0030 002E;dt=Com;na=NUMBER TEN FULL STOP;NFKC_CF=0031 0030 002E;NFKC_SCF=0031 0030 002E;nt=Nu;nv=10
+cp;2492;bc=EN;dm=0031 0031 002E;dt=Com;na=NUMBER ELEVEN FULL STOP;NFKC_CF=0031 0031 002E;NFKC_SCF=0031 0031 002E;nt=Nu;nv=11
+cp;2493;bc=EN;dm=0031 0032 002E;dt=Com;na=NUMBER TWELVE FULL STOP;NFKC_CF=0031 0032 002E;NFKC_SCF=0031 0032 002E;nt=Nu;nv=12
+cp;2494;bc=EN;dm=0031 0033 002E;dt=Com;na=NUMBER THIRTEEN FULL STOP;NFKC_CF=0031 0033 002E;NFKC_SCF=0031 0033 002E;nt=Nu;nv=13
+cp;2495;bc=EN;dm=0031 0034 002E;dt=Com;na=NUMBER FOURTEEN FULL STOP;NFKC_CF=0031 0034 002E;NFKC_SCF=0031 0034 002E;nt=Nu;nv=14
+cp;2496;bc=EN;dm=0031 0035 002E;dt=Com;na=NUMBER FIFTEEN FULL STOP;NFKC_CF=0031 0035 002E;NFKC_SCF=0031 0035 002E;nt=Nu;nv=15
+cp;2497;bc=EN;dm=0031 0036 002E;dt=Com;na=NUMBER SIXTEEN FULL STOP;NFKC_CF=0031 0036 002E;NFKC_SCF=0031 0036 002E;nt=Nu;nv=16
+cp;2498;bc=EN;dm=0031 0037 002E;dt=Com;na=NUMBER SEVENTEEN FULL STOP;NFKC_CF=0031 0037 002E;NFKC_SCF=0031 0037 002E;nt=Nu;nv=17
+cp;2499;bc=EN;dm=0031 0038 002E;dt=Com;na=NUMBER EIGHTEEN FULL STOP;NFKC_CF=0031 0038 002E;NFKC_SCF=0031 0038 002E;nt=Nu;nv=18
+cp;249A;bc=EN;dm=0031 0039 002E;dt=Com;na=NUMBER NINETEEN FULL STOP;NFKC_CF=0031 0039 002E;NFKC_SCF=0031 0039 002E;nt=Nu;nv=19
+cp;249B;bc=EN;dm=0032 0030 002E;dt=Com;na=NUMBER TWENTY FULL STOP;NFKC_CF=0032 0030 002E;NFKC_SCF=0032 0030 002E;nt=Nu;nv=20
# Parenthesized Latin letters
-cp;249C;dm=0028 0061 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER A;NFKC_CF=0028 0061 0029
-cp;249D;dm=0028 0062 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER B;NFKC_CF=0028 0062 0029
-cp;249E;dm=0028 0063 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER C;NFKC_CF=0028 0063 0029
-cp;249F;dm=0028 0064 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER D;NFKC_CF=0028 0064 0029
-cp;24A0;dm=0028 0065 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER E;NFKC_CF=0028 0065 0029
-cp;24A1;dm=0028 0066 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER F;NFKC_CF=0028 0066 0029
-cp;24A2;dm=0028 0067 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER G;NFKC_CF=0028 0067 0029
-cp;24A3;dm=0028 0068 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER H;NFKC_CF=0028 0068 0029
-cp;24A4;dm=0028 0069 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER I;NFKC_CF=0028 0069 0029
-cp;24A5;dm=0028 006A 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER J;NFKC_CF=0028 006A 0029
-cp;24A6;dm=0028 006B 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER K;NFKC_CF=0028 006B 0029
-cp;24A7;dm=0028 006C 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER L;NFKC_CF=0028 006C 0029
-cp;24A8;dm=0028 006D 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER M;NFKC_CF=0028 006D 0029
-cp;24A9;dm=0028 006E 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER N;NFKC_CF=0028 006E 0029
-cp;24AA;dm=0028 006F 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER O;NFKC_CF=0028 006F 0029
-cp;24AB;dm=0028 0070 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER P;NFKC_CF=0028 0070 0029
-cp;24AC;dm=0028 0071 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER Q;NFKC_CF=0028 0071 0029
-cp;24AD;dm=0028 0072 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER R;NFKC_CF=0028 0072 0029
-cp;24AE;dm=0028 0073 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER S;NFKC_CF=0028 0073 0029
-cp;24AF;dm=0028 0074 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER T;NFKC_CF=0028 0074 0029
-cp;24B0;dm=0028 0075 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER U;NFKC_CF=0028 0075 0029
-cp;24B1;dm=0028 0076 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER V;NFKC_CF=0028 0076 0029
-cp;24B2;dm=0028 0077 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER W;NFKC_CF=0028 0077 0029
-cp;24B3;dm=0028 0078 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER X;NFKC_CF=0028 0078 0029
-cp;24B4;dm=0028 0079 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER Y;NFKC_CF=0028 0079 0029
-cp;24B5;dm=0028 007A 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER Z;NFKC_CF=0028 007A 0029
+cp;249C;dm=0028 0061 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER A;NFKC_CF=0028 0061 0029;NFKC_SCF=0028 0061 0029
+cp;249D;dm=0028 0062 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER B;NFKC_CF=0028 0062 0029;NFKC_SCF=0028 0062 0029
+cp;249E;dm=0028 0063 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER C;NFKC_CF=0028 0063 0029;NFKC_SCF=0028 0063 0029
+cp;249F;dm=0028 0064 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER D;NFKC_CF=0028 0064 0029;NFKC_SCF=0028 0064 0029
+cp;24A0;dm=0028 0065 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER E;NFKC_CF=0028 0065 0029;NFKC_SCF=0028 0065 0029
+cp;24A1;dm=0028 0066 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER F;NFKC_CF=0028 0066 0029;NFKC_SCF=0028 0066 0029
+cp;24A2;dm=0028 0067 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER G;NFKC_CF=0028 0067 0029;NFKC_SCF=0028 0067 0029
+cp;24A3;dm=0028 0068 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER H;NFKC_CF=0028 0068 0029;NFKC_SCF=0028 0068 0029
+cp;24A4;dm=0028 0069 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER I;NFKC_CF=0028 0069 0029;NFKC_SCF=0028 0069 0029
+cp;24A5;dm=0028 006A 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER J;NFKC_CF=0028 006A 0029;NFKC_SCF=0028 006A 0029
+cp;24A6;dm=0028 006B 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER K;NFKC_CF=0028 006B 0029;NFKC_SCF=0028 006B 0029
+cp;24A7;dm=0028 006C 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER L;NFKC_CF=0028 006C 0029;NFKC_SCF=0028 006C 0029
+cp;24A8;dm=0028 006D 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER M;NFKC_CF=0028 006D 0029;NFKC_SCF=0028 006D 0029
+cp;24A9;dm=0028 006E 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER N;NFKC_CF=0028 006E 0029;NFKC_SCF=0028 006E 0029
+cp;24AA;dm=0028 006F 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER O;NFKC_CF=0028 006F 0029;NFKC_SCF=0028 006F 0029
+cp;24AB;dm=0028 0070 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER P;NFKC_CF=0028 0070 0029;NFKC_SCF=0028 0070 0029
+cp;24AC;dm=0028 0071 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER Q;NFKC_CF=0028 0071 0029;NFKC_SCF=0028 0071 0029
+cp;24AD;dm=0028 0072 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER R;NFKC_CF=0028 0072 0029;NFKC_SCF=0028 0072 0029
+cp;24AE;dm=0028 0073 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER S;NFKC_CF=0028 0073 0029;NFKC_SCF=0028 0073 0029
+cp;24AF;dm=0028 0074 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER T;NFKC_CF=0028 0074 0029;NFKC_SCF=0028 0074 0029
+cp;24B0;dm=0028 0075 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER U;NFKC_CF=0028 0075 0029;NFKC_SCF=0028 0075 0029
+cp;24B1;dm=0028 0076 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER V;NFKC_CF=0028 0076 0029;NFKC_SCF=0028 0076 0029
+cp;24B2;dm=0028 0077 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER W;NFKC_CF=0028 0077 0029;NFKC_SCF=0028 0077 0029
+cp;24B3;dm=0028 0078 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER X;NFKC_CF=0028 0078 0029;NFKC_SCF=0028 0078 0029
+cp;24B4;dm=0028 0079 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER Y;NFKC_CF=0028 0079 0029;NFKC_SCF=0028 0079 0029
+cp;24B5;dm=0028 007A 0029;dt=Com;gc=So;na=PARENTHESIZED LATIN SMALL LETTER Z;NFKC_CF=0028 007A 0029;NFKC_SCF=0028 007A 0029
# Circled Latin letters
-cp;24B6;Alpha;Cased;cf=24D0;CWCF;CWCM;CWL;dm=0041;gc=So;na=CIRCLED LATIN CAPITAL LETTER A;NFKC_CF=0061;SB=UP;scf=24D0;slc=24D0;Upper;WB=LE
-cp;24B7;Alpha;Cased;cf=24D1;CWCF;CWCM;CWL;dm=0042;gc=So;na=CIRCLED LATIN CAPITAL LETTER B;NFKC_CF=0062;SB=UP;scf=24D1;slc=24D1;Upper;WB=LE
-cp;24B8;Alpha;Cased;cf=24D2;CWCF;CWCM;CWL;dm=0043;gc=So;na=CIRCLED LATIN CAPITAL LETTER C;NFKC_CF=0063;SB=UP;scf=24D2;slc=24D2;Upper;WB=LE
-cp;24B9;Alpha;Cased;cf=24D3;CWCF;CWCM;CWL;dm=0044;gc=So;na=CIRCLED LATIN CAPITAL LETTER D;NFKC_CF=0064;SB=UP;scf=24D3;slc=24D3;Upper;WB=LE
-cp;24BA;Alpha;Cased;cf=24D4;CWCF;CWCM;CWL;dm=0045;gc=So;na=CIRCLED LATIN CAPITAL LETTER E;NFKC_CF=0065;SB=UP;scf=24D4;slc=24D4;Upper;WB=LE
-cp;24BB;Alpha;Cased;cf=24D5;CWCF;CWCM;CWL;dm=0046;gc=So;na=CIRCLED LATIN CAPITAL LETTER F;NFKC_CF=0066;SB=UP;scf=24D5;slc=24D5;Upper;WB=LE
-cp;24BC;Alpha;Cased;cf=24D6;CWCF;CWCM;CWL;dm=0047;gc=So;na=CIRCLED LATIN CAPITAL LETTER G;NFKC_CF=0067;SB=UP;scf=24D6;slc=24D6;Upper;WB=LE
-cp;24BD;Alpha;Cased;cf=24D7;CWCF;CWCM;CWL;dm=0048;gc=So;na=CIRCLED LATIN CAPITAL LETTER H;NFKC_CF=0068;SB=UP;scf=24D7;slc=24D7;Upper;WB=LE
-cp;24BE;Alpha;Cased;cf=24D8;CWCF;CWCM;CWL;dm=0049;gc=So;na=CIRCLED LATIN CAPITAL LETTER I;NFKC_CF=0069;SB=UP;scf=24D8;slc=24D8;Upper;WB=LE
-cp;24BF;Alpha;Cased;cf=24D9;CWCF;CWCM;CWL;dm=004A;gc=So;na=CIRCLED LATIN CAPITAL LETTER J;NFKC_CF=006A;SB=UP;scf=24D9;slc=24D9;Upper;WB=LE
-cp;24C0;Alpha;Cased;cf=24DA;CWCF;CWCM;CWL;dm=004B;gc=So;na=CIRCLED LATIN CAPITAL LETTER K;NFKC_CF=006B;SB=UP;scf=24DA;slc=24DA;Upper;WB=LE
-cp;24C1;Alpha;Cased;cf=24DB;CWCF;CWCM;CWL;dm=004C;gc=So;na=CIRCLED LATIN CAPITAL LETTER L;NFKC_CF=006C;SB=UP;scf=24DB;slc=24DB;Upper;WB=LE
-cp;24C2;Alpha;Cased;cf=24DC;CWCF;CWCM;CWL;dm=004D;Emoji;ExtPict;gc=So;na=CIRCLED LATIN CAPITAL LETTER M;NFKC_CF=006D;SB=UP;scf=24DC;slc=24DC;Upper;WB=LE
-cp;24C3;Alpha;Cased;cf=24DD;CWCF;CWCM;CWL;dm=004E;gc=So;na=CIRCLED LATIN CAPITAL LETTER N;NFKC_CF=006E;SB=UP;scf=24DD;slc=24DD;Upper;WB=LE
-cp;24C4;Alpha;Cased;cf=24DE;CWCF;CWCM;CWL;dm=004F;gc=So;na=CIRCLED LATIN CAPITAL LETTER O;NFKC_CF=006F;SB=UP;scf=24DE;slc=24DE;Upper;WB=LE
-cp;24C5;Alpha;Cased;cf=24DF;CWCF;CWCM;CWL;dm=0050;gc=So;na=CIRCLED LATIN CAPITAL LETTER P;NFKC_CF=0070;SB=UP;scf=24DF;slc=24DF;Upper;WB=LE
-cp;24C6;Alpha;Cased;cf=24E0;CWCF;CWCM;CWL;dm=0051;gc=So;na=CIRCLED LATIN CAPITAL LETTER Q;NFKC_CF=0071;SB=UP;scf=24E0;slc=24E0;Upper;WB=LE
-cp;24C7;Alpha;Cased;cf=24E1;CWCF;CWCM;CWL;dm=0052;gc=So;na=CIRCLED LATIN CAPITAL LETTER R;NFKC_CF=0072;SB=UP;scf=24E1;slc=24E1;Upper;WB=LE
-cp;24C8;Alpha;Cased;cf=24E2;CWCF;CWCM;CWL;dm=0053;gc=So;na=CIRCLED LATIN CAPITAL LETTER S;NFKC_CF=0073;SB=UP;scf=24E2;slc=24E2;Upper;WB=LE
-cp;24C9;Alpha;Cased;cf=24E3;CWCF;CWCM;CWL;dm=0054;gc=So;na=CIRCLED LATIN CAPITAL LETTER T;NFKC_CF=0074;SB=UP;scf=24E3;slc=24E3;Upper;WB=LE
-cp;24CA;Alpha;Cased;cf=24E4;CWCF;CWCM;CWL;dm=0055;gc=So;na=CIRCLED LATIN CAPITAL LETTER U;NFKC_CF=0075;SB=UP;scf=24E4;slc=24E4;Upper;WB=LE
-cp;24CB;Alpha;Cased;cf=24E5;CWCF;CWCM;CWL;dm=0056;gc=So;na=CIRCLED LATIN CAPITAL LETTER V;NFKC_CF=0076;SB=UP;scf=24E5;slc=24E5;Upper;WB=LE
-cp;24CC;Alpha;Cased;cf=24E6;CWCF;CWCM;CWL;dm=0057;gc=So;na=CIRCLED LATIN CAPITAL LETTER W;NFKC_CF=0077;SB=UP;scf=24E6;slc=24E6;Upper;WB=LE
-cp;24CD;Alpha;Cased;cf=24E7;CWCF;CWCM;CWL;dm=0058;gc=So;na=CIRCLED LATIN CAPITAL LETTER X;NFKC_CF=0078;SB=UP;scf=24E7;slc=24E7;Upper;WB=LE
-cp;24CE;Alpha;Cased;cf=24E8;CWCF;CWCM;CWL;dm=0059;gc=So;na=CIRCLED LATIN CAPITAL LETTER Y;NFKC_CF=0079;SB=UP;scf=24E8;slc=24E8;Upper;WB=LE
-cp;24CF;Alpha;Cased;cf=24E9;CWCF;CWCM;CWL;dm=005A;gc=So;na=CIRCLED LATIN CAPITAL LETTER Z;NFKC_CF=007A;SB=UP;scf=24E9;slc=24E9;Upper;WB=LE
-cp;24D0;Alpha;Cased;CWCM;CWT;CWU;dm=0061;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER A;NFKC_CF=0061;SB=LO;stc=24B6;suc=24B6;WB=LE
-cp;24D1;Alpha;Cased;CWCM;CWT;CWU;dm=0062;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER B;NFKC_CF=0062;SB=LO;stc=24B7;suc=24B7;WB=LE
-cp;24D2;Alpha;Cased;CWCM;CWT;CWU;dm=0063;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER C;NFKC_CF=0063;SB=LO;stc=24B8;suc=24B8;WB=LE
-cp;24D3;Alpha;Cased;CWCM;CWT;CWU;dm=0064;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER D;NFKC_CF=0064;SB=LO;stc=24B9;suc=24B9;WB=LE
-cp;24D4;Alpha;Cased;CWCM;CWT;CWU;dm=0065;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER E;NFKC_CF=0065;SB=LO;stc=24BA;suc=24BA;WB=LE
-cp;24D5;Alpha;Cased;CWCM;CWT;CWU;dm=0066;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER F;NFKC_CF=0066;SB=LO;stc=24BB;suc=24BB;WB=LE
-cp;24D6;Alpha;Cased;CWCM;CWT;CWU;dm=0067;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER G;NFKC_CF=0067;SB=LO;stc=24BC;suc=24BC;WB=LE
-cp;24D7;Alpha;Cased;CWCM;CWT;CWU;dm=0068;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER H;NFKC_CF=0068;SB=LO;stc=24BD;suc=24BD;WB=LE
-cp;24D8;Alpha;Cased;CWCM;CWT;CWU;dm=0069;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER I;NFKC_CF=0069;SB=LO;stc=24BE;suc=24BE;WB=LE
-cp;24D9;Alpha;Cased;CWCM;CWT;CWU;dm=006A;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER J;NFKC_CF=006A;SB=LO;stc=24BF;suc=24BF;WB=LE
-cp;24DA;Alpha;Cased;CWCM;CWT;CWU;dm=006B;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER K;NFKC_CF=006B;SB=LO;stc=24C0;suc=24C0;WB=LE
-cp;24DB;Alpha;Cased;CWCM;CWT;CWU;dm=006C;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER L;NFKC_CF=006C;SB=LO;stc=24C1;suc=24C1;WB=LE
-cp;24DC;Alpha;Cased;CWCM;CWT;CWU;dm=006D;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER M;NFKC_CF=006D;SB=LO;stc=24C2;suc=24C2;WB=LE
-cp;24DD;Alpha;Cased;CWCM;CWT;CWU;dm=006E;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER N;NFKC_CF=006E;SB=LO;stc=24C3;suc=24C3;WB=LE
-cp;24DE;Alpha;Cased;CWCM;CWT;CWU;dm=006F;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER O;NFKC_CF=006F;SB=LO;stc=24C4;suc=24C4;WB=LE
-cp;24DF;Alpha;Cased;CWCM;CWT;CWU;dm=0070;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER P;NFKC_CF=0070;SB=LO;stc=24C5;suc=24C5;WB=LE
-cp;24E0;Alpha;Cased;CWCM;CWT;CWU;dm=0071;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER Q;NFKC_CF=0071;SB=LO;stc=24C6;suc=24C6;WB=LE
-cp;24E1;Alpha;Cased;CWCM;CWT;CWU;dm=0072;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER R;NFKC_CF=0072;SB=LO;stc=24C7;suc=24C7;WB=LE
-cp;24E2;Alpha;Cased;CWCM;CWT;CWU;dm=0073;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER S;NFKC_CF=0073;SB=LO;stc=24C8;suc=24C8;WB=LE
-cp;24E3;Alpha;Cased;CWCM;CWT;CWU;dm=0074;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER T;NFKC_CF=0074;SB=LO;stc=24C9;suc=24C9;WB=LE
-cp;24E4;Alpha;Cased;CWCM;CWT;CWU;dm=0075;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER U;NFKC_CF=0075;SB=LO;stc=24CA;suc=24CA;WB=LE
-cp;24E5;Alpha;Cased;CWCM;CWT;CWU;dm=0076;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER V;NFKC_CF=0076;SB=LO;stc=24CB;suc=24CB;WB=LE
-cp;24E6;Alpha;Cased;CWCM;CWT;CWU;dm=0077;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER W;NFKC_CF=0077;SB=LO;stc=24CC;suc=24CC;WB=LE
-cp;24E7;Alpha;Cased;CWCM;CWT;CWU;dm=0078;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER X;NFKC_CF=0078;SB=LO;stc=24CD;suc=24CD;WB=LE
-cp;24E8;Alpha;Cased;CWCM;CWT;CWU;dm=0079;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER Y;NFKC_CF=0079;SB=LO;stc=24CE;suc=24CE;WB=LE
-cp;24E9;Alpha;Cased;CWCM;CWT;CWU;dm=007A;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER Z;NFKC_CF=007A;SB=LO;stc=24CF;suc=24CF;WB=LE
+cp;24B6;Alpha;Cased;cf=24D0;CWCF;CWCM;CWL;dm=0041;gc=So;na=CIRCLED LATIN CAPITAL LETTER A;NFKC_CF=0061;NFKC_SCF=0061;SB=UP;scf=24D0;slc=24D0;Upper;WB=LE
+cp;24B7;Alpha;Cased;cf=24D1;CWCF;CWCM;CWL;dm=0042;gc=So;na=CIRCLED LATIN CAPITAL LETTER B;NFKC_CF=0062;NFKC_SCF=0062;SB=UP;scf=24D1;slc=24D1;Upper;WB=LE
+cp;24B8;Alpha;Cased;cf=24D2;CWCF;CWCM;CWL;dm=0043;gc=So;na=CIRCLED LATIN CAPITAL LETTER C;NFKC_CF=0063;NFKC_SCF=0063;SB=UP;scf=24D2;slc=24D2;Upper;WB=LE
+cp;24B9;Alpha;Cased;cf=24D3;CWCF;CWCM;CWL;dm=0044;gc=So;na=CIRCLED LATIN CAPITAL LETTER D;NFKC_CF=0064;NFKC_SCF=0064;SB=UP;scf=24D3;slc=24D3;Upper;WB=LE
+cp;24BA;Alpha;Cased;cf=24D4;CWCF;CWCM;CWL;dm=0045;gc=So;na=CIRCLED LATIN CAPITAL LETTER E;NFKC_CF=0065;NFKC_SCF=0065;SB=UP;scf=24D4;slc=24D4;Upper;WB=LE
+cp;24BB;Alpha;Cased;cf=24D5;CWCF;CWCM;CWL;dm=0046;gc=So;na=CIRCLED LATIN CAPITAL LETTER F;NFKC_CF=0066;NFKC_SCF=0066;SB=UP;scf=24D5;slc=24D5;Upper;WB=LE
+cp;24BC;Alpha;Cased;cf=24D6;CWCF;CWCM;CWL;dm=0047;gc=So;na=CIRCLED LATIN CAPITAL LETTER G;NFKC_CF=0067;NFKC_SCF=0067;SB=UP;scf=24D6;slc=24D6;Upper;WB=LE
+cp;24BD;Alpha;Cased;cf=24D7;CWCF;CWCM;CWL;dm=0048;gc=So;na=CIRCLED LATIN CAPITAL LETTER H;NFKC_CF=0068;NFKC_SCF=0068;SB=UP;scf=24D7;slc=24D7;Upper;WB=LE
+cp;24BE;Alpha;Cased;cf=24D8;CWCF;CWCM;CWL;dm=0049;gc=So;na=CIRCLED LATIN CAPITAL LETTER I;NFKC_CF=0069;NFKC_SCF=0069;SB=UP;scf=24D8;slc=24D8;Upper;WB=LE
+cp;24BF;Alpha;Cased;cf=24D9;CWCF;CWCM;CWL;dm=004A;gc=So;na=CIRCLED LATIN CAPITAL LETTER J;NFKC_CF=006A;NFKC_SCF=006A;SB=UP;scf=24D9;slc=24D9;Upper;WB=LE
+cp;24C0;Alpha;Cased;cf=24DA;CWCF;CWCM;CWL;dm=004B;gc=So;na=CIRCLED LATIN CAPITAL LETTER K;NFKC_CF=006B;NFKC_SCF=006B;SB=UP;scf=24DA;slc=24DA;Upper;WB=LE
+cp;24C1;Alpha;Cased;cf=24DB;CWCF;CWCM;CWL;dm=004C;gc=So;na=CIRCLED LATIN CAPITAL LETTER L;NFKC_CF=006C;NFKC_SCF=006C;SB=UP;scf=24DB;slc=24DB;Upper;WB=LE
+cp;24C2;Alpha;Cased;cf=24DC;CWCF;CWCM;CWL;dm=004D;Emoji;ExtPict;gc=So;na=CIRCLED LATIN CAPITAL LETTER M;NFKC_CF=006D;NFKC_SCF=006D;SB=UP;scf=24DC;slc=24DC;Upper;WB=LE
+cp;24C3;Alpha;Cased;cf=24DD;CWCF;CWCM;CWL;dm=004E;gc=So;na=CIRCLED LATIN CAPITAL LETTER N;NFKC_CF=006E;NFKC_SCF=006E;SB=UP;scf=24DD;slc=24DD;Upper;WB=LE
+cp;24C4;Alpha;Cased;cf=24DE;CWCF;CWCM;CWL;dm=004F;gc=So;na=CIRCLED LATIN CAPITAL LETTER O;NFKC_CF=006F;NFKC_SCF=006F;SB=UP;scf=24DE;slc=24DE;Upper;WB=LE
+cp;24C5;Alpha;Cased;cf=24DF;CWCF;CWCM;CWL;dm=0050;gc=So;na=CIRCLED LATIN CAPITAL LETTER P;NFKC_CF=0070;NFKC_SCF=0070;SB=UP;scf=24DF;slc=24DF;Upper;WB=LE
+cp;24C6;Alpha;Cased;cf=24E0;CWCF;CWCM;CWL;dm=0051;gc=So;na=CIRCLED LATIN CAPITAL LETTER Q;NFKC_CF=0071;NFKC_SCF=0071;SB=UP;scf=24E0;slc=24E0;Upper;WB=LE
+cp;24C7;Alpha;Cased;cf=24E1;CWCF;CWCM;CWL;dm=0052;gc=So;na=CIRCLED LATIN CAPITAL LETTER R;NFKC_CF=0072;NFKC_SCF=0072;SB=UP;scf=24E1;slc=24E1;Upper;WB=LE
+cp;24C8;Alpha;Cased;cf=24E2;CWCF;CWCM;CWL;dm=0053;gc=So;na=CIRCLED LATIN CAPITAL LETTER S;NFKC_CF=0073;NFKC_SCF=0073;SB=UP;scf=24E2;slc=24E2;Upper;WB=LE
+cp;24C9;Alpha;Cased;cf=24E3;CWCF;CWCM;CWL;dm=0054;gc=So;na=CIRCLED LATIN CAPITAL LETTER T;NFKC_CF=0074;NFKC_SCF=0074;SB=UP;scf=24E3;slc=24E3;Upper;WB=LE
+cp;24CA;Alpha;Cased;cf=24E4;CWCF;CWCM;CWL;dm=0055;gc=So;na=CIRCLED LATIN CAPITAL LETTER U;NFKC_CF=0075;NFKC_SCF=0075;SB=UP;scf=24E4;slc=24E4;Upper;WB=LE
+cp;24CB;Alpha;Cased;cf=24E5;CWCF;CWCM;CWL;dm=0056;gc=So;na=CIRCLED LATIN CAPITAL LETTER V;NFKC_CF=0076;NFKC_SCF=0076;SB=UP;scf=24E5;slc=24E5;Upper;WB=LE
+cp;24CC;Alpha;Cased;cf=24E6;CWCF;CWCM;CWL;dm=0057;gc=So;na=CIRCLED LATIN CAPITAL LETTER W;NFKC_CF=0077;NFKC_SCF=0077;SB=UP;scf=24E6;slc=24E6;Upper;WB=LE
+cp;24CD;Alpha;Cased;cf=24E7;CWCF;CWCM;CWL;dm=0058;gc=So;na=CIRCLED LATIN CAPITAL LETTER X;NFKC_CF=0078;NFKC_SCF=0078;SB=UP;scf=24E7;slc=24E7;Upper;WB=LE
+cp;24CE;Alpha;Cased;cf=24E8;CWCF;CWCM;CWL;dm=0059;gc=So;na=CIRCLED LATIN CAPITAL LETTER Y;NFKC_CF=0079;NFKC_SCF=0079;SB=UP;scf=24E8;slc=24E8;Upper;WB=LE
+cp;24CF;Alpha;Cased;cf=24E9;CWCF;CWCM;CWL;dm=005A;gc=So;na=CIRCLED LATIN CAPITAL LETTER Z;NFKC_CF=007A;NFKC_SCF=007A;SB=UP;scf=24E9;slc=24E9;Upper;WB=LE
+cp;24D0;Alpha;Cased;CWCM;CWT;CWU;dm=0061;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER A;NFKC_CF=0061;NFKC_SCF=0061;SB=LO;stc=24B6;suc=24B6;WB=LE
+cp;24D1;Alpha;Cased;CWCM;CWT;CWU;dm=0062;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER B;NFKC_CF=0062;NFKC_SCF=0062;SB=LO;stc=24B7;suc=24B7;WB=LE
+cp;24D2;Alpha;Cased;CWCM;CWT;CWU;dm=0063;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER C;NFKC_CF=0063;NFKC_SCF=0063;SB=LO;stc=24B8;suc=24B8;WB=LE
+cp;24D3;Alpha;Cased;CWCM;CWT;CWU;dm=0064;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER D;NFKC_CF=0064;NFKC_SCF=0064;SB=LO;stc=24B9;suc=24B9;WB=LE
+cp;24D4;Alpha;Cased;CWCM;CWT;CWU;dm=0065;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER E;NFKC_CF=0065;NFKC_SCF=0065;SB=LO;stc=24BA;suc=24BA;WB=LE
+cp;24D5;Alpha;Cased;CWCM;CWT;CWU;dm=0066;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER F;NFKC_CF=0066;NFKC_SCF=0066;SB=LO;stc=24BB;suc=24BB;WB=LE
+cp;24D6;Alpha;Cased;CWCM;CWT;CWU;dm=0067;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER G;NFKC_CF=0067;NFKC_SCF=0067;SB=LO;stc=24BC;suc=24BC;WB=LE
+cp;24D7;Alpha;Cased;CWCM;CWT;CWU;dm=0068;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER H;NFKC_CF=0068;NFKC_SCF=0068;SB=LO;stc=24BD;suc=24BD;WB=LE
+cp;24D8;Alpha;Cased;CWCM;CWT;CWU;dm=0069;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER I;NFKC_CF=0069;NFKC_SCF=0069;SB=LO;stc=24BE;suc=24BE;WB=LE
+cp;24D9;Alpha;Cased;CWCM;CWT;CWU;dm=006A;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER J;NFKC_CF=006A;NFKC_SCF=006A;SB=LO;stc=24BF;suc=24BF;WB=LE
+cp;24DA;Alpha;Cased;CWCM;CWT;CWU;dm=006B;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER K;NFKC_CF=006B;NFKC_SCF=006B;SB=LO;stc=24C0;suc=24C0;WB=LE
+cp;24DB;Alpha;Cased;CWCM;CWT;CWU;dm=006C;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER L;NFKC_CF=006C;NFKC_SCF=006C;SB=LO;stc=24C1;suc=24C1;WB=LE
+cp;24DC;Alpha;Cased;CWCM;CWT;CWU;dm=006D;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER M;NFKC_CF=006D;NFKC_SCF=006D;SB=LO;stc=24C2;suc=24C2;WB=LE
+cp;24DD;Alpha;Cased;CWCM;CWT;CWU;dm=006E;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER N;NFKC_CF=006E;NFKC_SCF=006E;SB=LO;stc=24C3;suc=24C3;WB=LE
+cp;24DE;Alpha;Cased;CWCM;CWT;CWU;dm=006F;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER O;NFKC_CF=006F;NFKC_SCF=006F;SB=LO;stc=24C4;suc=24C4;WB=LE
+cp;24DF;Alpha;Cased;CWCM;CWT;CWU;dm=0070;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER P;NFKC_CF=0070;NFKC_SCF=0070;SB=LO;stc=24C5;suc=24C5;WB=LE
+cp;24E0;Alpha;Cased;CWCM;CWT;CWU;dm=0071;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER Q;NFKC_CF=0071;NFKC_SCF=0071;SB=LO;stc=24C6;suc=24C6;WB=LE
+cp;24E1;Alpha;Cased;CWCM;CWT;CWU;dm=0072;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER R;NFKC_CF=0072;NFKC_SCF=0072;SB=LO;stc=24C7;suc=24C7;WB=LE
+cp;24E2;Alpha;Cased;CWCM;CWT;CWU;dm=0073;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER S;NFKC_CF=0073;NFKC_SCF=0073;SB=LO;stc=24C8;suc=24C8;WB=LE
+cp;24E3;Alpha;Cased;CWCM;CWT;CWU;dm=0074;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER T;NFKC_CF=0074;NFKC_SCF=0074;SB=LO;stc=24C9;suc=24C9;WB=LE
+cp;24E4;Alpha;Cased;CWCM;CWT;CWU;dm=0075;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER U;NFKC_CF=0075;NFKC_SCF=0075;SB=LO;stc=24CA;suc=24CA;WB=LE
+cp;24E5;Alpha;Cased;CWCM;CWT;CWU;dm=0076;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER V;NFKC_CF=0076;NFKC_SCF=0076;SB=LO;stc=24CB;suc=24CB;WB=LE
+cp;24E6;Alpha;Cased;CWCM;CWT;CWU;dm=0077;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER W;NFKC_CF=0077;NFKC_SCF=0077;SB=LO;stc=24CC;suc=24CC;WB=LE
+cp;24E7;Alpha;Cased;CWCM;CWT;CWU;dm=0078;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER X;NFKC_CF=0078;NFKC_SCF=0078;SB=LO;stc=24CD;suc=24CD;WB=LE
+cp;24E8;Alpha;Cased;CWCM;CWT;CWU;dm=0079;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER Y;NFKC_CF=0079;NFKC_SCF=0079;SB=LO;stc=24CE;suc=24CE;WB=LE
+cp;24E9;Alpha;Cased;CWCM;CWT;CWU;dm=007A;gc=So;Lower;na=CIRCLED LATIN SMALL LETTER Z;NFKC_CF=007A;NFKC_SCF=007A;SB=LO;stc=24CF;suc=24CF;WB=LE
# Additional circled number
-cp;24EA;bc=ON;dm=0030;ea=N;na=CIRCLED DIGIT ZERO;NFKC_CF=0030;nt=Di;nv=0
+cp;24EA;bc=ON;dm=0030;ea=N;na=CIRCLED DIGIT ZERO;NFKC_CF=0030;NFKC_SCF=0030;nt=Di;nv=0
# White on black circled numbers
cp;24EB;age=3.2;bc=ON;-CWKCF;dt=None;na=NEGATIVE CIRCLED NUMBER ELEVEN;NFKC_QC=Y;NFKD_QC=Y;nt=Nu;nv=11
cp;24EC;age=3.2;bc=ON;-CWKCF;dt=None;na=NEGATIVE CIRCLED NUMBER TWELVE;NFKC_QC=Y;NFKD_QC=Y;nt=Nu;nv=12
@@ -12626,7 +12643,7 @@ cp;2A09;-Bidi_M;na=N-ARY TIMES OPERATOR
# Summations and integrals
cp;2A0A;na=MODULO TWO SUM
cp;2A0B;na=SUMMATION WITH INTEGRAL
-cp;2A0C;CWKCF;dm=222B 222B 222B 222B;dt=Com;na=QUADRUPLE INTEGRAL OPERATOR;NFKC_CF=222B 222B 222B 222B;NFKC_QC=N;NFKD_QC=N
+cp;2A0C;CWKCF;dm=222B 222B 222B 222B;dt=Com;na=QUADRUPLE INTEGRAL OPERATOR;NFKC_CF=222B 222B 222B 222B;NFKC_QC=N;NFKC_SCF=222B 222B 222B 222B;NFKD_QC=N
cp;2A0D;na=FINITE PART INTEGRAL
cp;2A0E;na=INTEGRAL WITH DOUBLE STROKE
cp;2A0F;na=INTEGRAL AVERAGE WITH SLASH
@@ -12738,9 +12755,9 @@ cp;2A70;na=APPROXIMATELY EQUAL OR EQUAL TO
cp;2A71;-Bidi_M;na=EQUALS SIGN ABOVE PLUS SIGN
cp;2A72;-Bidi_M;na=PLUS SIGN ABOVE EQUALS SIGN
cp;2A73;na=EQUALS SIGN ABOVE TILDE OPERATOR
-cp;2A74;CWKCF;dm=003A 003A 003D;dt=Com;na=DOUBLE COLON EQUAL;NFKC_CF=003A 003A 003D;NFKC_QC=N;NFKD_QC=N
-cp;2A75;-Bidi_M;CWKCF;dm=003D 003D;dt=Com;na=TWO CONSECUTIVE EQUALS SIGNS;NFKC_CF=003D 003D;NFKC_QC=N;NFKD_QC=N
-cp;2A76;-Bidi_M;CWKCF;dm=003D 003D 003D;dt=Com;na=THREE CONSECUTIVE EQUALS SIGNS;NFKC_CF=003D 003D 003D;NFKC_QC=N;NFKD_QC=N
+cp;2A74;CWKCF;dm=003A 003A 003D;dt=Com;na=DOUBLE COLON EQUAL;NFKC_CF=003A 003A 003D;NFKC_QC=N;NFKC_SCF=003A 003A 003D;NFKD_QC=N
+cp;2A75;-Bidi_M;CWKCF;dm=003D 003D;dt=Com;na=TWO CONSECUTIVE EQUALS SIGNS;NFKC_CF=003D 003D;NFKC_QC=N;NFKC_SCF=003D 003D;NFKD_QC=N
+cp;2A76;-Bidi_M;CWKCF;dm=003D 003D 003D;dt=Com;na=THREE CONSECUTIVE EQUALS SIGNS;NFKC_CF=003D 003D 003D;NFKC_QC=N;NFKC_SCF=003D 003D 003D;NFKD_QC=N
cp;2A77;-Bidi_M;na=EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW
cp;2A78;-Bidi_M;na=EQUIVALENT WITH FOUR DOTS ABOVE
cp;2A79;bmg=2A7A;na=LESS-THAN WITH CIRCLE INSIDE
@@ -12844,7 +12861,7 @@ cp;2AD8;-Bidi_M;na=SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET
cp;2AD9;-Bidi_M;na=ELEMENT OF OPENING DOWNWARDS
cp;2ADA;-Bidi_M;na=PITCHFORK WITH TEE TOP
cp;2ADB;-Bidi_M;na=TRANSVERSAL INTERSECTION
-cp;2ADC;Comp_Ex;CWKCF;dm=2ADD 0338;dt=Can;na=FORKING;NFC_QC=N;NFD_QC=N;NFKC_CF=2ADD 0338;NFKC_QC=N;NFKD_QC=N
+cp;2ADC;Comp_Ex;CWKCF;dm=2ADD 0338;dt=Can;na=FORKING;NFC_QC=N;NFD_QC=N;NFKC_CF=2ADD 0338;NFKC_QC=N;NFKC_SCF=2ADD 0338;NFKD_QC=N
cp;2ADD;-Bidi_M;na=NONFORKING
# Tacks and turnstiles
cp;2ADE;bmg=22A6;na=SHORT LEFT TACK
@@ -13195,54 +13212,54 @@ cp;2BFF;age=12.0;na=HELLSCHREIBER PAUSE SYMBOL;vo=U
block;2C00..2C5F;age=4.1;Alpha;blk=Glagolitic;Cased;CWCM;gc=Ll;Gr_Base;IDC;IDS;lb=AL;SB=LO;sc=Glag;WB=LE;XIDC;XIDS
# 2C00..2C5F Glagolitic
# Capital letters
-cp;2C00;cf=2C30;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER AZU;NFKC_CF=2C30;SB=UP;scf=2C30;slc=2C30;Upper
-cp;2C01;cf=2C31;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER BUKY;NFKC_CF=2C31;SB=UP;scf=2C31;slc=2C31;Upper
-cp;2C02;cf=2C32;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER VEDE;NFKC_CF=2C32;SB=UP;scf=2C32;slc=2C32;Upper
-cp;2C03;cf=2C33;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER GLAGOLI;NFKC_CF=2C33;SB=UP;scf=2C33;slc=2C33;Upper
-cp;2C04;cf=2C34;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER DOBRO;NFKC_CF=2C34;SB=UP;scf=2C34;slc=2C34;Upper
-cp;2C05;cf=2C35;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER YESTU;NFKC_CF=2C35;SB=UP;scf=2C35;slc=2C35;Upper
-cp;2C06;cf=2C36;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER ZHIVETE;NFKC_CF=2C36;SB=UP;scf=2C36;slc=2C36;Upper
-cp;2C07;cf=2C37;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER DZELO;NFKC_CF=2C37;SB=UP;scf=2C37;slc=2C37;Upper
-cp;2C08;cf=2C38;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER ZEMLJA;NFKC_CF=2C38;SB=UP;scf=2C38;slc=2C38;Upper
-cp;2C09;cf=2C39;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER IZHE;NFKC_CF=2C39;SB=UP;scf=2C39;slc=2C39;Upper
-cp;2C0A;cf=2C3A;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER INITIAL IZHE;NFKC_CF=2C3A;SB=UP;scf=2C3A;slc=2C3A;Upper
-cp;2C0B;cf=2C3B;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER I;NFKC_CF=2C3B;SB=UP;scf=2C3B;slc=2C3B;Upper
-cp;2C0C;cf=2C3C;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER DJERVI;NFKC_CF=2C3C;SB=UP;scf=2C3C;slc=2C3C;Upper
-cp;2C0D;cf=2C3D;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER KAKO;NFKC_CF=2C3D;SB=UP;scf=2C3D;slc=2C3D;Upper
-cp;2C0E;cf=2C3E;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER LJUDIJE;NFKC_CF=2C3E;SB=UP;scf=2C3E;slc=2C3E;Upper
-cp;2C0F;cf=2C3F;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER MYSLITE;NFKC_CF=2C3F;SB=UP;scf=2C3F;slc=2C3F;Upper
-cp;2C10;cf=2C40;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER NASHI;NFKC_CF=2C40;SB=UP;scf=2C40;slc=2C40;Upper
-cp;2C11;cf=2C41;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER ONU;NFKC_CF=2C41;SB=UP;scf=2C41;slc=2C41;Upper
-cp;2C12;cf=2C42;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER POKOJI;NFKC_CF=2C42;SB=UP;scf=2C42;slc=2C42;Upper
-cp;2C13;cf=2C43;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER RITSI;NFKC_CF=2C43;SB=UP;scf=2C43;slc=2C43;Upper
-cp;2C14;cf=2C44;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER SLOVO;NFKC_CF=2C44;SB=UP;scf=2C44;slc=2C44;Upper
-cp;2C15;cf=2C45;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER TVRIDO;NFKC_CF=2C45;SB=UP;scf=2C45;slc=2C45;Upper
-cp;2C16;cf=2C46;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER UKU;NFKC_CF=2C46;SB=UP;scf=2C46;slc=2C46;Upper
-cp;2C17;cf=2C47;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER FRITU;NFKC_CF=2C47;SB=UP;scf=2C47;slc=2C47;Upper
-cp;2C18;cf=2C48;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER HERU;NFKC_CF=2C48;SB=UP;scf=2C48;slc=2C48;Upper
-cp;2C19;cf=2C49;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER OTU;NFKC_CF=2C49;SB=UP;scf=2C49;slc=2C49;Upper
-cp;2C1A;cf=2C4A;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER PE;NFKC_CF=2C4A;SB=UP;scf=2C4A;slc=2C4A;Upper
-cp;2C1B;cf=2C4B;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER SHTA;NFKC_CF=2C4B;SB=UP;scf=2C4B;slc=2C4B;Upper
-cp;2C1C;cf=2C4C;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER TSI;NFKC_CF=2C4C;SB=UP;scf=2C4C;slc=2C4C;Upper
-cp;2C1D;cf=2C4D;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER CHRIVI;NFKC_CF=2C4D;SB=UP;scf=2C4D;slc=2C4D;Upper
-cp;2C1E;cf=2C4E;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER SHA;NFKC_CF=2C4E;SB=UP;scf=2C4E;slc=2C4E;Upper
-cp;2C1F;cf=2C4F;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER YERU;NFKC_CF=2C4F;SB=UP;scf=2C4F;slc=2C4F;Upper
-cp;2C20;cf=2C50;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER YERI;NFKC_CF=2C50;SB=UP;scf=2C50;slc=2C50;Upper
-cp;2C21;cf=2C51;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER YATI;NFKC_CF=2C51;SB=UP;scf=2C51;slc=2C51;Upper
-cp;2C22;cf=2C52;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER SPIDERY HA;NFKC_CF=2C52;SB=UP;scf=2C52;slc=2C52;Upper
-cp;2C23;cf=2C53;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER YU;NFKC_CF=2C53;SB=UP;scf=2C53;slc=2C53;Upper
-cp;2C24;cf=2C54;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER SMALL YUS;NFKC_CF=2C54;SB=UP;scf=2C54;slc=2C54;Upper
-cp;2C25;cf=2C55;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL;NFKC_CF=2C55;SB=UP;scf=2C55;slc=2C55;Upper
-cp;2C26;cf=2C56;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER YO;NFKC_CF=2C56;SB=UP;scf=2C56;slc=2C56;Upper
-cp;2C27;cf=2C57;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS;NFKC_CF=2C57;SB=UP;scf=2C57;slc=2C57;Upper
-cp;2C28;cf=2C58;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER BIG YUS;NFKC_CF=2C58;SB=UP;scf=2C58;slc=2C58;Upper
-cp;2C29;cf=2C59;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS;NFKC_CF=2C59;SB=UP;scf=2C59;slc=2C59;Upper
-cp;2C2A;cf=2C5A;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER FITA;NFKC_CF=2C5A;SB=UP;scf=2C5A;slc=2C5A;Upper
-cp;2C2B;cf=2C5B;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER IZHITSA;NFKC_CF=2C5B;SB=UP;scf=2C5B;slc=2C5B;Upper
-cp;2C2C;cf=2C5C;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER SHTAPIC;NFKC_CF=2C5C;SB=UP;scf=2C5C;slc=2C5C;Upper
-cp;2C2D;cf=2C5D;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER TROKUTASTI A;NFKC_CF=2C5D;SB=UP;scf=2C5D;slc=2C5D;Upper
-cp;2C2E;cf=2C5E;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE;NFKC_CF=2C5E;SB=UP;scf=2C5E;slc=2C5E;Upper
-cp;2C2F;age=14.0;cf=2C5F;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER CAUDATE CHRIVI;NFKC_CF=2C5F;SB=UP;scf=2C5F;slc=2C5F;Upper
+cp;2C00;cf=2C30;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER AZU;NFKC_CF=2C30;NFKC_SCF=2C30;SB=UP;scf=2C30;slc=2C30;Upper
+cp;2C01;cf=2C31;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER BUKY;NFKC_CF=2C31;NFKC_SCF=2C31;SB=UP;scf=2C31;slc=2C31;Upper
+cp;2C02;cf=2C32;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER VEDE;NFKC_CF=2C32;NFKC_SCF=2C32;SB=UP;scf=2C32;slc=2C32;Upper
+cp;2C03;cf=2C33;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER GLAGOLI;NFKC_CF=2C33;NFKC_SCF=2C33;SB=UP;scf=2C33;slc=2C33;Upper
+cp;2C04;cf=2C34;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER DOBRO;NFKC_CF=2C34;NFKC_SCF=2C34;SB=UP;scf=2C34;slc=2C34;Upper
+cp;2C05;cf=2C35;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER YESTU;NFKC_CF=2C35;NFKC_SCF=2C35;SB=UP;scf=2C35;slc=2C35;Upper
+cp;2C06;cf=2C36;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER ZHIVETE;NFKC_CF=2C36;NFKC_SCF=2C36;SB=UP;scf=2C36;slc=2C36;Upper
+cp;2C07;cf=2C37;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER DZELO;NFKC_CF=2C37;NFKC_SCF=2C37;SB=UP;scf=2C37;slc=2C37;Upper
+cp;2C08;cf=2C38;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER ZEMLJA;NFKC_CF=2C38;NFKC_SCF=2C38;SB=UP;scf=2C38;slc=2C38;Upper
+cp;2C09;cf=2C39;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER IZHE;NFKC_CF=2C39;NFKC_SCF=2C39;SB=UP;scf=2C39;slc=2C39;Upper
+cp;2C0A;cf=2C3A;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER INITIAL IZHE;NFKC_CF=2C3A;NFKC_SCF=2C3A;SB=UP;scf=2C3A;slc=2C3A;Upper
+cp;2C0B;cf=2C3B;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER I;NFKC_CF=2C3B;NFKC_SCF=2C3B;SB=UP;scf=2C3B;slc=2C3B;Upper
+cp;2C0C;cf=2C3C;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER DJERVI;NFKC_CF=2C3C;NFKC_SCF=2C3C;SB=UP;scf=2C3C;slc=2C3C;Upper
+cp;2C0D;cf=2C3D;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER KAKO;NFKC_CF=2C3D;NFKC_SCF=2C3D;SB=UP;scf=2C3D;slc=2C3D;Upper
+cp;2C0E;cf=2C3E;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER LJUDIJE;NFKC_CF=2C3E;NFKC_SCF=2C3E;SB=UP;scf=2C3E;slc=2C3E;Upper
+cp;2C0F;cf=2C3F;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER MYSLITE;NFKC_CF=2C3F;NFKC_SCF=2C3F;SB=UP;scf=2C3F;slc=2C3F;Upper
+cp;2C10;cf=2C40;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER NASHI;NFKC_CF=2C40;NFKC_SCF=2C40;SB=UP;scf=2C40;slc=2C40;Upper
+cp;2C11;cf=2C41;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER ONU;NFKC_CF=2C41;NFKC_SCF=2C41;SB=UP;scf=2C41;slc=2C41;Upper
+cp;2C12;cf=2C42;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER POKOJI;NFKC_CF=2C42;NFKC_SCF=2C42;SB=UP;scf=2C42;slc=2C42;Upper
+cp;2C13;cf=2C43;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER RITSI;NFKC_CF=2C43;NFKC_SCF=2C43;SB=UP;scf=2C43;slc=2C43;Upper
+cp;2C14;cf=2C44;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER SLOVO;NFKC_CF=2C44;NFKC_SCF=2C44;SB=UP;scf=2C44;slc=2C44;Upper
+cp;2C15;cf=2C45;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER TVRIDO;NFKC_CF=2C45;NFKC_SCF=2C45;SB=UP;scf=2C45;slc=2C45;Upper
+cp;2C16;cf=2C46;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER UKU;NFKC_CF=2C46;NFKC_SCF=2C46;SB=UP;scf=2C46;slc=2C46;Upper
+cp;2C17;cf=2C47;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER FRITU;NFKC_CF=2C47;NFKC_SCF=2C47;SB=UP;scf=2C47;slc=2C47;Upper
+cp;2C18;cf=2C48;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER HERU;NFKC_CF=2C48;NFKC_SCF=2C48;SB=UP;scf=2C48;slc=2C48;Upper
+cp;2C19;cf=2C49;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER OTU;NFKC_CF=2C49;NFKC_SCF=2C49;SB=UP;scf=2C49;slc=2C49;Upper
+cp;2C1A;cf=2C4A;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER PE;NFKC_CF=2C4A;NFKC_SCF=2C4A;SB=UP;scf=2C4A;slc=2C4A;Upper
+cp;2C1B;cf=2C4B;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER SHTA;NFKC_CF=2C4B;NFKC_SCF=2C4B;SB=UP;scf=2C4B;slc=2C4B;Upper
+cp;2C1C;cf=2C4C;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER TSI;NFKC_CF=2C4C;NFKC_SCF=2C4C;SB=UP;scf=2C4C;slc=2C4C;Upper
+cp;2C1D;cf=2C4D;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER CHRIVI;NFKC_CF=2C4D;NFKC_SCF=2C4D;SB=UP;scf=2C4D;slc=2C4D;Upper
+cp;2C1E;cf=2C4E;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER SHA;NFKC_CF=2C4E;NFKC_SCF=2C4E;SB=UP;scf=2C4E;slc=2C4E;Upper
+cp;2C1F;cf=2C4F;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER YERU;NFKC_CF=2C4F;NFKC_SCF=2C4F;SB=UP;scf=2C4F;slc=2C4F;Upper
+cp;2C20;cf=2C50;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER YERI;NFKC_CF=2C50;NFKC_SCF=2C50;SB=UP;scf=2C50;slc=2C50;Upper
+cp;2C21;cf=2C51;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER YATI;NFKC_CF=2C51;NFKC_SCF=2C51;SB=UP;scf=2C51;slc=2C51;Upper
+cp;2C22;cf=2C52;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER SPIDERY HA;NFKC_CF=2C52;NFKC_SCF=2C52;SB=UP;scf=2C52;slc=2C52;Upper
+cp;2C23;cf=2C53;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER YU;NFKC_CF=2C53;NFKC_SCF=2C53;SB=UP;scf=2C53;slc=2C53;Upper
+cp;2C24;cf=2C54;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER SMALL YUS;NFKC_CF=2C54;NFKC_SCF=2C54;SB=UP;scf=2C54;slc=2C54;Upper
+cp;2C25;cf=2C55;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL;NFKC_CF=2C55;NFKC_SCF=2C55;SB=UP;scf=2C55;slc=2C55;Upper
+cp;2C26;cf=2C56;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER YO;NFKC_CF=2C56;NFKC_SCF=2C56;SB=UP;scf=2C56;slc=2C56;Upper
+cp;2C27;cf=2C57;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS;NFKC_CF=2C57;NFKC_SCF=2C57;SB=UP;scf=2C57;slc=2C57;Upper
+cp;2C28;cf=2C58;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER BIG YUS;NFKC_CF=2C58;NFKC_SCF=2C58;SB=UP;scf=2C58;slc=2C58;Upper
+cp;2C29;cf=2C59;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS;NFKC_CF=2C59;NFKC_SCF=2C59;SB=UP;scf=2C59;slc=2C59;Upper
+cp;2C2A;cf=2C5A;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER FITA;NFKC_CF=2C5A;NFKC_SCF=2C5A;SB=UP;scf=2C5A;slc=2C5A;Upper
+cp;2C2B;cf=2C5B;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER IZHITSA;NFKC_CF=2C5B;NFKC_SCF=2C5B;SB=UP;scf=2C5B;slc=2C5B;Upper
+cp;2C2C;cf=2C5C;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER SHTAPIC;NFKC_CF=2C5C;NFKC_SCF=2C5C;SB=UP;scf=2C5C;slc=2C5C;Upper
+cp;2C2D;cf=2C5D;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER TROKUTASTI A;NFKC_CF=2C5D;NFKC_SCF=2C5D;SB=UP;scf=2C5D;slc=2C5D;Upper
+cp;2C2E;cf=2C5E;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE;NFKC_CF=2C5E;NFKC_SCF=2C5E;SB=UP;scf=2C5E;slc=2C5E;Upper
+cp;2C2F;age=14.0;cf=2C5F;CWCF;CWKCF;CWL;gc=Lu;na=GLAGOLITIC CAPITAL LETTER CAUDATE CHRIVI;NFKC_CF=2C5F;NFKC_SCF=2C5F;SB=UP;scf=2C5F;slc=2C5F;Upper
# Small letters
cp;2C30;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER AZU;stc=2C00;suc=2C00
cp;2C31;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER BUKY;stc=2C01;suc=2C01
@@ -13296,31 +13313,31 @@ cp;2C5F;age=14.0;CWT;CWU;Lower;na=GLAGOLITIC SMALL LETTER CAUDATE CHRIVI;stc=2C2
block;2C60..2C7F;age=5.0;Alpha;blk=Latin_Ext_C;Cased;CWCM;gc=Ll;Gr_Base;IDC;IDS;lb=AL;SB=LO;sc=Latn;WB=LE;XIDC;XIDS
# 2C60..2C7F Latin Extended-C
# Orthographic Latin additions
-cp;2C60;cf=2C61;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER L WITH DOUBLE BAR;NFKC_CF=2C61;SB=UP;scf=2C61;slc=2C61;Upper
+cp;2C60;cf=2C61;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER L WITH DOUBLE BAR;NFKC_CF=2C61;NFKC_SCF=2C61;SB=UP;scf=2C61;slc=2C61;Upper
cp;2C61;CWT;CWU;Lower;na=LATIN SMALL LETTER L WITH DOUBLE BAR;stc=2C60;suc=2C60
-cp;2C62;cf=026B;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER L WITH MIDDLE TILDE;NFKC_CF=026B;SB=UP;scf=026B;slc=026B;Upper
-cp;2C63;cf=1D7D;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER P WITH STROKE;NFKC_CF=1D7D;SB=UP;scf=1D7D;slc=1D7D;Upper
-cp;2C64;cf=027D;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER R WITH TAIL;NFKC_CF=027D;SB=UP;scf=027D;slc=027D;Upper
+cp;2C62;cf=026B;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER L WITH MIDDLE TILDE;NFKC_CF=026B;NFKC_SCF=026B;SB=UP;scf=026B;slc=026B;Upper
+cp;2C63;cf=1D7D;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER P WITH STROKE;NFKC_CF=1D7D;NFKC_SCF=1D7D;SB=UP;scf=1D7D;slc=1D7D;Upper
+cp;2C64;cf=027D;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER R WITH TAIL;NFKC_CF=027D;NFKC_SCF=027D;SB=UP;scf=027D;slc=027D;Upper
cp;2C65;CWT;CWU;Lower;na=LATIN SMALL LETTER A WITH STROKE;stc=023A;suc=023A
cp;2C66;CWT;CWU;Lower;na=LATIN SMALL LETTER T WITH DIAGONAL STROKE;stc=023E;suc=023E
# Additions for Uyghur
-cp;2C67;cf=2C68;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER H WITH DESCENDER;NFKC_CF=2C68;SB=UP;scf=2C68;slc=2C68;Upper
+cp;2C67;cf=2C68;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER H WITH DESCENDER;NFKC_CF=2C68;NFKC_SCF=2C68;SB=UP;scf=2C68;slc=2C68;Upper
cp;2C68;CWT;CWU;Lower;na=LATIN SMALL LETTER H WITH DESCENDER;stc=2C67;suc=2C67
-cp;2C69;cf=2C6A;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER K WITH DESCENDER;NFKC_CF=2C6A;SB=UP;scf=2C6A;slc=2C6A;Upper
+cp;2C69;cf=2C6A;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER K WITH DESCENDER;NFKC_CF=2C6A;NFKC_SCF=2C6A;SB=UP;scf=2C6A;slc=2C6A;Upper
cp;2C6A;CWT;CWU;Lower;na=LATIN SMALL LETTER K WITH DESCENDER;stc=2C69;suc=2C69
-cp;2C6B;cf=2C6C;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER Z WITH DESCENDER;NFKC_CF=2C6C;SB=UP;scf=2C6C;slc=2C6C;Upper
+cp;2C6B;cf=2C6C;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER Z WITH DESCENDER;NFKC_CF=2C6C;NFKC_SCF=2C6C;SB=UP;scf=2C6C;slc=2C6C;Upper
cp;2C6C;CWT;CWU;Lower;na=LATIN SMALL LETTER Z WITH DESCENDER;stc=2C6B;suc=2C6B
# Miscellaneous additions
-cp;2C6D;age=5.1;cf=0251;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER ALPHA;NFKC_CF=0251;SB=UP;scf=0251;slc=0251;Upper
-cp;2C6E;age=5.1;cf=0271;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER M WITH HOOK;NFKC_CF=0271;SB=UP;scf=0271;slc=0271;Upper
-cp;2C6F;age=5.1;cf=0250;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER TURNED A;NFKC_CF=0250;SB=UP;scf=0250;slc=0250;Upper
-cp;2C70;age=5.2;cf=0252;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER TURNED ALPHA;NFKC_CF=0252;SB=UP;scf=0252;slc=0252;Upper
+cp;2C6D;age=5.1;cf=0251;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER ALPHA;NFKC_CF=0251;NFKC_SCF=0251;SB=UP;scf=0251;slc=0251;Upper
+cp;2C6E;age=5.1;cf=0271;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER M WITH HOOK;NFKC_CF=0271;NFKC_SCF=0271;SB=UP;scf=0271;slc=0271;Upper
+cp;2C6F;age=5.1;cf=0250;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER TURNED A;NFKC_CF=0250;NFKC_SCF=0250;SB=UP;scf=0250;slc=0250;Upper
+cp;2C70;age=5.2;cf=0252;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER TURNED ALPHA;NFKC_CF=0252;NFKC_SCF=0252;SB=UP;scf=0252;slc=0252;Upper
cp;2C71;age=5.1;-CWCM;Lower;na=LATIN SMALL LETTER V WITH RIGHT HOOK
-cp;2C72;age=5.1;cf=2C73;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER W WITH HOOK;NFKC_CF=2C73;SB=UP;scf=2C73;slc=2C73;Upper
+cp;2C72;age=5.1;cf=2C73;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER W WITH HOOK;NFKC_CF=2C73;NFKC_SCF=2C73;SB=UP;scf=2C73;slc=2C73;Upper
cp;2C73;age=5.1;CWT;CWU;Lower;na=LATIN SMALL LETTER W WITH HOOK;stc=2C72;suc=2C72
cp;2C74;-CWCM;Lower;na=LATIN SMALL LETTER V WITH CURL
# Claudian letters
-cp;2C75;cf=2C76;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER HALF H;NFKC_CF=2C76;SB=UP;scf=2C76;slc=2C76;Upper
+cp;2C75;cf=2C76;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER HALF H;NFKC_CF=2C76;NFKC_SCF=2C76;SB=UP;scf=2C76;slc=2C76;Upper
cp;2C76;CWT;CWU;Lower;na=LATIN SMALL LETTER HALF H;stc=2C75;suc=2C75
# Additions for UPA
cp;2C77;-CWCM;Lower;na=LATIN SMALL LETTER TAILLESS PHI
@@ -13328,116 +13345,116 @@ cp;2C78;age=5.1;-CWCM;Lower;na=LATIN SMALL LETTER E WITH NOTCH
cp;2C79;age=5.1;-CWCM;Lower;na=LATIN SMALL LETTER TURNED R WITH TAIL
cp;2C7A;age=5.1;-CWCM;Lower;na=LATIN SMALL LETTER O WITH LOW RING INSIDE
cp;2C7B;age=5.1;-CWCM;Lower;na=LATIN LETTER SMALL CAPITAL TURNED E
-cp;2C7C;age=5.1;CI;-CWCM;CWKCF;dm=006A;dt=Sub;gc=Lm;Lower;na=LATIN SUBSCRIPT SMALL LETTER J;NFKC_CF=006A;NFKC_QC=N;NFKD_QC=N;SD
-cp;2C7D;age=5.1;CI;-CWCM;CWKCF;dm=0056;dt=Sup;FC_NFKC=0076;gc=Lm;Lower;na=MODIFIER LETTER CAPITAL V;NFKC_CF=0076;NFKC_QC=N;NFKD_QC=N
+cp;2C7C;age=5.1;CI;-CWCM;CWKCF;dm=006A;dt=Sub;gc=Lm;Lower;na=LATIN SUBSCRIPT SMALL LETTER J;NFKC_CF=006A;NFKC_QC=N;NFKC_SCF=006A;NFKD_QC=N;SD
+cp;2C7D;age=5.1;CI;-CWCM;CWKCF;dm=0056;dt=Sup;FC_NFKC=0076;gc=Lm;Lower;na=MODIFIER LETTER CAPITAL V;NFKC_CF=0076;NFKC_QC=N;NFKC_SCF=0076;NFKD_QC=N
# Additions for Shona
-cp;2C7E;age=5.2;cf=023F;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER S WITH SWASH TAIL;NFKC_CF=023F;SB=UP;scf=023F;slc=023F;Upper
-cp;2C7F;age=5.2;cf=0240;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER Z WITH SWASH TAIL;NFKC_CF=0240;SB=UP;scf=0240;slc=0240;Upper
+cp;2C7E;age=5.2;cf=023F;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER S WITH SWASH TAIL;NFKC_CF=023F;NFKC_SCF=023F;SB=UP;scf=023F;slc=023F;Upper
+cp;2C7F;age=5.2;cf=0240;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER Z WITH SWASH TAIL;NFKC_CF=0240;NFKC_SCF=0240;SB=UP;scf=0240;slc=0240;Upper
block;2C80..2CFF;age=4.1;Alpha;blk=Coptic;Cased;CWCM;gc=Ll;Gr_Base;IDC;IDS;lb=AL;SB=LO;sc=Copt;WB=LE;XIDC;XIDS
# 2C80..2CFF Coptic
# Bohairic Coptic letters
-cp;2C80;cf=2C81;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER ALFA;NFKC_CF=2C81;SB=UP;scf=2C81;slc=2C81;Upper
+cp;2C80;cf=2C81;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER ALFA;NFKC_CF=2C81;NFKC_SCF=2C81;SB=UP;scf=2C81;slc=2C81;Upper
cp;2C81;CWT;CWU;Lower;na=COPTIC SMALL LETTER ALFA;stc=2C80;suc=2C80
-cp;2C82;cf=2C83;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER VIDA;NFKC_CF=2C83;SB=UP;scf=2C83;slc=2C83;Upper
+cp;2C82;cf=2C83;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER VIDA;NFKC_CF=2C83;NFKC_SCF=2C83;SB=UP;scf=2C83;slc=2C83;Upper
cp;2C83;CWT;CWU;Lower;na=COPTIC SMALL LETTER VIDA;stc=2C82;suc=2C82
-cp;2C84;cf=2C85;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER GAMMA;NFKC_CF=2C85;SB=UP;scf=2C85;slc=2C85;Upper
+cp;2C84;cf=2C85;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER GAMMA;NFKC_CF=2C85;NFKC_SCF=2C85;SB=UP;scf=2C85;slc=2C85;Upper
cp;2C85;CWT;CWU;Lower;na=COPTIC SMALL LETTER GAMMA;stc=2C84;suc=2C84
-cp;2C86;cf=2C87;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER DALDA;NFKC_CF=2C87;SB=UP;scf=2C87;slc=2C87;Upper
+cp;2C86;cf=2C87;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER DALDA;NFKC_CF=2C87;NFKC_SCF=2C87;SB=UP;scf=2C87;slc=2C87;Upper
cp;2C87;CWT;CWU;Lower;na=COPTIC SMALL LETTER DALDA;stc=2C86;suc=2C86
-cp;2C88;cf=2C89;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER EIE;NFKC_CF=2C89;SB=UP;scf=2C89;slc=2C89;Upper
+cp;2C88;cf=2C89;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER EIE;NFKC_CF=2C89;NFKC_SCF=2C89;SB=UP;scf=2C89;slc=2C89;Upper
cp;2C89;CWT;CWU;Lower;na=COPTIC SMALL LETTER EIE;stc=2C88;suc=2C88
-cp;2C8A;cf=2C8B;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER SOU;NFKC_CF=2C8B;SB=UP;scf=2C8B;slc=2C8B;Upper
+cp;2C8A;cf=2C8B;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER SOU;NFKC_CF=2C8B;NFKC_SCF=2C8B;SB=UP;scf=2C8B;slc=2C8B;Upper
cp;2C8B;CWT;CWU;Lower;na=COPTIC SMALL LETTER SOU;stc=2C8A;suc=2C8A
-cp;2C8C;cf=2C8D;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER ZATA;NFKC_CF=2C8D;SB=UP;scf=2C8D;slc=2C8D;Upper
+cp;2C8C;cf=2C8D;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER ZATA;NFKC_CF=2C8D;NFKC_SCF=2C8D;SB=UP;scf=2C8D;slc=2C8D;Upper
cp;2C8D;CWT;CWU;Lower;na=COPTIC SMALL LETTER ZATA;stc=2C8C;suc=2C8C
-cp;2C8E;cf=2C8F;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER HATE;NFKC_CF=2C8F;SB=UP;scf=2C8F;slc=2C8F;Upper
+cp;2C8E;cf=2C8F;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER HATE;NFKC_CF=2C8F;NFKC_SCF=2C8F;SB=UP;scf=2C8F;slc=2C8F;Upper
cp;2C8F;CWT;CWU;Lower;na=COPTIC SMALL LETTER HATE;stc=2C8E;suc=2C8E
-cp;2C90;cf=2C91;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER THETHE;NFKC_CF=2C91;SB=UP;scf=2C91;slc=2C91;Upper
+cp;2C90;cf=2C91;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER THETHE;NFKC_CF=2C91;NFKC_SCF=2C91;SB=UP;scf=2C91;slc=2C91;Upper
cp;2C91;CWT;CWU;Lower;na=COPTIC SMALL LETTER THETHE;stc=2C90;suc=2C90
-cp;2C92;cf=2C93;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER IAUDA;NFKC_CF=2C93;SB=UP;scf=2C93;slc=2C93;Upper
+cp;2C92;cf=2C93;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER IAUDA;NFKC_CF=2C93;NFKC_SCF=2C93;SB=UP;scf=2C93;slc=2C93;Upper
cp;2C93;CWT;CWU;Lower;na=COPTIC SMALL LETTER IAUDA;stc=2C92;suc=2C92
-cp;2C94;cf=2C95;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER KAPA;NFKC_CF=2C95;SB=UP;scf=2C95;slc=2C95;Upper
+cp;2C94;cf=2C95;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER KAPA;NFKC_CF=2C95;NFKC_SCF=2C95;SB=UP;scf=2C95;slc=2C95;Upper
cp;2C95;CWT;CWU;Lower;na=COPTIC SMALL LETTER KAPA;stc=2C94;suc=2C94
-cp;2C96;cf=2C97;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER LAULA;NFKC_CF=2C97;SB=UP;scf=2C97;slc=2C97;Upper
+cp;2C96;cf=2C97;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER LAULA;NFKC_CF=2C97;NFKC_SCF=2C97;SB=UP;scf=2C97;slc=2C97;Upper
cp;2C97;CWT;CWU;Lower;na=COPTIC SMALL LETTER LAULA;stc=2C96;suc=2C96
-cp;2C98;cf=2C99;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER MI;NFKC_CF=2C99;SB=UP;scf=2C99;slc=2C99;Upper
+cp;2C98;cf=2C99;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER MI;NFKC_CF=2C99;NFKC_SCF=2C99;SB=UP;scf=2C99;slc=2C99;Upper
cp;2C99;CWT;CWU;Lower;na=COPTIC SMALL LETTER MI;stc=2C98;suc=2C98
-cp;2C9A;cf=2C9B;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER NI;NFKC_CF=2C9B;SB=UP;scf=2C9B;slc=2C9B;Upper
+cp;2C9A;cf=2C9B;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER NI;NFKC_CF=2C9B;NFKC_SCF=2C9B;SB=UP;scf=2C9B;slc=2C9B;Upper
cp;2C9B;CWT;CWU;Lower;na=COPTIC SMALL LETTER NI;stc=2C9A;suc=2C9A
-cp;2C9C;cf=2C9D;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER KSI;NFKC_CF=2C9D;SB=UP;scf=2C9D;slc=2C9D;Upper
+cp;2C9C;cf=2C9D;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER KSI;NFKC_CF=2C9D;NFKC_SCF=2C9D;SB=UP;scf=2C9D;slc=2C9D;Upper
cp;2C9D;CWT;CWU;Lower;na=COPTIC SMALL LETTER KSI;stc=2C9C;suc=2C9C
-cp;2C9E;cf=2C9F;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER O;NFKC_CF=2C9F;SB=UP;scf=2C9F;slc=2C9F;Upper
+cp;2C9E;cf=2C9F;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER O;NFKC_CF=2C9F;NFKC_SCF=2C9F;SB=UP;scf=2C9F;slc=2C9F;Upper
cp;2C9F;CWT;CWU;Lower;na=COPTIC SMALL LETTER O;stc=2C9E;suc=2C9E
-cp;2CA0;cf=2CA1;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER PI;NFKC_CF=2CA1;SB=UP;scf=2CA1;slc=2CA1;Upper
+cp;2CA0;cf=2CA1;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER PI;NFKC_CF=2CA1;NFKC_SCF=2CA1;SB=UP;scf=2CA1;slc=2CA1;Upper
cp;2CA1;CWT;CWU;Lower;na=COPTIC SMALL LETTER PI;stc=2CA0;suc=2CA0
-cp;2CA2;cf=2CA3;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER RO;NFKC_CF=2CA3;SB=UP;scf=2CA3;slc=2CA3;Upper
+cp;2CA2;cf=2CA3;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER RO;NFKC_CF=2CA3;NFKC_SCF=2CA3;SB=UP;scf=2CA3;slc=2CA3;Upper
cp;2CA3;CWT;CWU;Lower;na=COPTIC SMALL LETTER RO;stc=2CA2;suc=2CA2
-cp;2CA4;cf=2CA5;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER SIMA;NFKC_CF=2CA5;SB=UP;scf=2CA5;slc=2CA5;Upper
+cp;2CA4;cf=2CA5;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER SIMA;NFKC_CF=2CA5;NFKC_SCF=2CA5;SB=UP;scf=2CA5;slc=2CA5;Upper
cp;2CA5;CWT;CWU;Lower;na=COPTIC SMALL LETTER SIMA;stc=2CA4;suc=2CA4
-cp;2CA6;cf=2CA7;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER TAU;NFKC_CF=2CA7;SB=UP;scf=2CA7;slc=2CA7;Upper
+cp;2CA6;cf=2CA7;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER TAU;NFKC_CF=2CA7;NFKC_SCF=2CA7;SB=UP;scf=2CA7;slc=2CA7;Upper
cp;2CA7;CWT;CWU;Lower;na=COPTIC SMALL LETTER TAU;stc=2CA6;suc=2CA6
-cp;2CA8;cf=2CA9;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER UA;NFKC_CF=2CA9;SB=UP;scf=2CA9;slc=2CA9;Upper
+cp;2CA8;cf=2CA9;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER UA;NFKC_CF=2CA9;NFKC_SCF=2CA9;SB=UP;scf=2CA9;slc=2CA9;Upper
cp;2CA9;CWT;CWU;Lower;na=COPTIC SMALL LETTER UA;stc=2CA8;suc=2CA8
-cp;2CAA;cf=2CAB;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER FI;NFKC_CF=2CAB;SB=UP;scf=2CAB;slc=2CAB;Upper
+cp;2CAA;cf=2CAB;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER FI;NFKC_CF=2CAB;NFKC_SCF=2CAB;SB=UP;scf=2CAB;slc=2CAB;Upper
cp;2CAB;CWT;CWU;Lower;na=COPTIC SMALL LETTER FI;stc=2CAA;suc=2CAA
-cp;2CAC;cf=2CAD;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER KHI;NFKC_CF=2CAD;SB=UP;scf=2CAD;slc=2CAD;Upper
+cp;2CAC;cf=2CAD;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER KHI;NFKC_CF=2CAD;NFKC_SCF=2CAD;SB=UP;scf=2CAD;slc=2CAD;Upper
cp;2CAD;CWT;CWU;Lower;na=COPTIC SMALL LETTER KHI;stc=2CAC;suc=2CAC
-cp;2CAE;cf=2CAF;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER PSI;NFKC_CF=2CAF;SB=UP;scf=2CAF;slc=2CAF;Upper
+cp;2CAE;cf=2CAF;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER PSI;NFKC_CF=2CAF;NFKC_SCF=2CAF;SB=UP;scf=2CAF;slc=2CAF;Upper
cp;2CAF;CWT;CWU;Lower;na=COPTIC SMALL LETTER PSI;stc=2CAE;suc=2CAE
-cp;2CB0;cf=2CB1;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER OOU;NFKC_CF=2CB1;SB=UP;scf=2CB1;slc=2CB1;Upper
+cp;2CB0;cf=2CB1;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER OOU;NFKC_CF=2CB1;NFKC_SCF=2CB1;SB=UP;scf=2CB1;slc=2CB1;Upper
cp;2CB1;CWT;CWU;Lower;na=COPTIC SMALL LETTER OOU;stc=2CB0;suc=2CB0
# Old Coptic and dialect letters
-cp;2CB2;cf=2CB3;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER DIALECT-P ALEF;NFKC_CF=2CB3;SB=UP;scf=2CB3;slc=2CB3;Upper
+cp;2CB2;cf=2CB3;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER DIALECT-P ALEF;NFKC_CF=2CB3;NFKC_SCF=2CB3;SB=UP;scf=2CB3;slc=2CB3;Upper
cp;2CB3;CWT;CWU;Lower;na=COPTIC SMALL LETTER DIALECT-P ALEF;stc=2CB2;suc=2CB2
-cp;2CB4;cf=2CB5;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER OLD COPTIC AIN;NFKC_CF=2CB5;SB=UP;scf=2CB5;slc=2CB5;Upper
+cp;2CB4;cf=2CB5;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER OLD COPTIC AIN;NFKC_CF=2CB5;NFKC_SCF=2CB5;SB=UP;scf=2CB5;slc=2CB5;Upper
cp;2CB5;CWT;CWU;Lower;na=COPTIC SMALL LETTER OLD COPTIC AIN;stc=2CB4;suc=2CB4
-cp;2CB6;cf=2CB7;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE;NFKC_CF=2CB7;SB=UP;scf=2CB7;slc=2CB7;Upper
+cp;2CB6;cf=2CB7;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE;NFKC_CF=2CB7;NFKC_SCF=2CB7;SB=UP;scf=2CB7;slc=2CB7;Upper
cp;2CB7;CWT;CWU;Lower;na=COPTIC SMALL LETTER CRYPTOGRAMMIC EIE;stc=2CB6;suc=2CB6
-cp;2CB8;cf=2CB9;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER DIALECT-P KAPA;NFKC_CF=2CB9;SB=UP;scf=2CB9;slc=2CB9;Upper
+cp;2CB8;cf=2CB9;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER DIALECT-P KAPA;NFKC_CF=2CB9;NFKC_SCF=2CB9;SB=UP;scf=2CB9;slc=2CB9;Upper
cp;2CB9;CWT;CWU;Lower;na=COPTIC SMALL LETTER DIALECT-P KAPA;stc=2CB8;suc=2CB8
-cp;2CBA;cf=2CBB;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER DIALECT-P NI;NFKC_CF=2CBB;SB=UP;scf=2CBB;slc=2CBB;Upper
+cp;2CBA;cf=2CBB;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER DIALECT-P NI;NFKC_CF=2CBB;NFKC_SCF=2CBB;SB=UP;scf=2CBB;slc=2CBB;Upper
cp;2CBB;CWT;CWU;Lower;na=COPTIC SMALL LETTER DIALECT-P NI;stc=2CBA;suc=2CBA
-cp;2CBC;cf=2CBD;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI;NFKC_CF=2CBD;SB=UP;scf=2CBD;slc=2CBD;Upper
+cp;2CBC;cf=2CBD;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI;NFKC_CF=2CBD;NFKC_SCF=2CBD;SB=UP;scf=2CBD;slc=2CBD;Upper
cp;2CBD;CWT;CWU;Lower;na=COPTIC SMALL LETTER CRYPTOGRAMMIC NI;stc=2CBC;suc=2CBC
-cp;2CBE;cf=2CBF;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER OLD COPTIC OOU;NFKC_CF=2CBF;SB=UP;scf=2CBF;slc=2CBF;Upper
+cp;2CBE;cf=2CBF;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER OLD COPTIC OOU;NFKC_CF=2CBF;NFKC_SCF=2CBF;SB=UP;scf=2CBF;slc=2CBF;Upper
cp;2CBF;CWT;CWU;Lower;na=COPTIC SMALL LETTER OLD COPTIC OOU;stc=2CBE;suc=2CBE
-cp;2CC0;cf=2CC1;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER SAMPI;NFKC_CF=2CC1;SB=UP;scf=2CC1;slc=2CC1;Upper
+cp;2CC0;cf=2CC1;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER SAMPI;NFKC_CF=2CC1;NFKC_SCF=2CC1;SB=UP;scf=2CC1;slc=2CC1;Upper
cp;2CC1;CWT;CWU;Lower;na=COPTIC SMALL LETTER SAMPI;stc=2CC0;suc=2CC0
-cp;2CC2;cf=2CC3;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER CROSSED SHEI;NFKC_CF=2CC3;SB=UP;scf=2CC3;slc=2CC3;Upper
+cp;2CC2;cf=2CC3;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER CROSSED SHEI;NFKC_CF=2CC3;NFKC_SCF=2CC3;SB=UP;scf=2CC3;slc=2CC3;Upper
cp;2CC3;CWT;CWU;Lower;na=COPTIC SMALL LETTER CROSSED SHEI;stc=2CC2;suc=2CC2
-cp;2CC4;cf=2CC5;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER OLD COPTIC SHEI;NFKC_CF=2CC5;SB=UP;scf=2CC5;slc=2CC5;Upper
+cp;2CC4;cf=2CC5;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER OLD COPTIC SHEI;NFKC_CF=2CC5;NFKC_SCF=2CC5;SB=UP;scf=2CC5;slc=2CC5;Upper
cp;2CC5;CWT;CWU;Lower;na=COPTIC SMALL LETTER OLD COPTIC SHEI;stc=2CC4;suc=2CC4
-cp;2CC6;cf=2CC7;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER OLD COPTIC ESH;NFKC_CF=2CC7;SB=UP;scf=2CC7;slc=2CC7;Upper
+cp;2CC6;cf=2CC7;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER OLD COPTIC ESH;NFKC_CF=2CC7;NFKC_SCF=2CC7;SB=UP;scf=2CC7;slc=2CC7;Upper
cp;2CC7;CWT;CWU;Lower;na=COPTIC SMALL LETTER OLD COPTIC ESH;stc=2CC6;suc=2CC6
-cp;2CC8;cf=2CC9;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER AKHMIMIC KHEI;NFKC_CF=2CC9;SB=UP;scf=2CC9;slc=2CC9;Upper
+cp;2CC8;cf=2CC9;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER AKHMIMIC KHEI;NFKC_CF=2CC9;NFKC_SCF=2CC9;SB=UP;scf=2CC9;slc=2CC9;Upper
cp;2CC9;CWT;CWU;Lower;na=COPTIC SMALL LETTER AKHMIMIC KHEI;stc=2CC8;suc=2CC8
-cp;2CCA;cf=2CCB;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER DIALECT-P HORI;NFKC_CF=2CCB;SB=UP;scf=2CCB;slc=2CCB;Upper
+cp;2CCA;cf=2CCB;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER DIALECT-P HORI;NFKC_CF=2CCB;NFKC_SCF=2CCB;SB=UP;scf=2CCB;slc=2CCB;Upper
cp;2CCB;CWT;CWU;Lower;na=COPTIC SMALL LETTER DIALECT-P HORI;stc=2CCA;suc=2CCA
-cp;2CCC;cf=2CCD;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER OLD COPTIC HORI;NFKC_CF=2CCD;SB=UP;scf=2CCD;slc=2CCD;Upper
+cp;2CCC;cf=2CCD;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER OLD COPTIC HORI;NFKC_CF=2CCD;NFKC_SCF=2CCD;SB=UP;scf=2CCD;slc=2CCD;Upper
cp;2CCD;CWT;CWU;Lower;na=COPTIC SMALL LETTER OLD COPTIC HORI;stc=2CCC;suc=2CCC
-cp;2CCE;cf=2CCF;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER OLD COPTIC HA;NFKC_CF=2CCF;SB=UP;scf=2CCF;slc=2CCF;Upper
+cp;2CCE;cf=2CCF;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER OLD COPTIC HA;NFKC_CF=2CCF;NFKC_SCF=2CCF;SB=UP;scf=2CCF;slc=2CCF;Upper
cp;2CCF;CWT;CWU;Lower;na=COPTIC SMALL LETTER OLD COPTIC HA;stc=2CCE;suc=2CCE
-cp;2CD0;cf=2CD1;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER L-SHAPED HA;NFKC_CF=2CD1;SB=UP;scf=2CD1;slc=2CD1;Upper
+cp;2CD0;cf=2CD1;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER L-SHAPED HA;NFKC_CF=2CD1;NFKC_SCF=2CD1;SB=UP;scf=2CD1;slc=2CD1;Upper
cp;2CD1;CWT;CWU;Lower;na=COPTIC SMALL LETTER L-SHAPED HA;stc=2CD0;suc=2CD0
-cp;2CD2;cf=2CD3;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER OLD COPTIC HEI;NFKC_CF=2CD3;SB=UP;scf=2CD3;slc=2CD3;Upper
+cp;2CD2;cf=2CD3;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER OLD COPTIC HEI;NFKC_CF=2CD3;NFKC_SCF=2CD3;SB=UP;scf=2CD3;slc=2CD3;Upper
cp;2CD3;CWT;CWU;Lower;na=COPTIC SMALL LETTER OLD COPTIC HEI;stc=2CD2;suc=2CD2
-cp;2CD4;cf=2CD5;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER OLD COPTIC HAT;NFKC_CF=2CD5;SB=UP;scf=2CD5;slc=2CD5;Upper
+cp;2CD4;cf=2CD5;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER OLD COPTIC HAT;NFKC_CF=2CD5;NFKC_SCF=2CD5;SB=UP;scf=2CD5;slc=2CD5;Upper
cp;2CD5;CWT;CWU;Lower;na=COPTIC SMALL LETTER OLD COPTIC HAT;stc=2CD4;suc=2CD4
-cp;2CD6;cf=2CD7;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER OLD COPTIC GANGIA;NFKC_CF=2CD7;SB=UP;scf=2CD7;slc=2CD7;Upper
+cp;2CD6;cf=2CD7;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER OLD COPTIC GANGIA;NFKC_CF=2CD7;NFKC_SCF=2CD7;SB=UP;scf=2CD7;slc=2CD7;Upper
cp;2CD7;CWT;CWU;Lower;na=COPTIC SMALL LETTER OLD COPTIC GANGIA;stc=2CD6;suc=2CD6
-cp;2CD8;cf=2CD9;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER OLD COPTIC DJA;NFKC_CF=2CD9;SB=UP;scf=2CD9;slc=2CD9;Upper
+cp;2CD8;cf=2CD9;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER OLD COPTIC DJA;NFKC_CF=2CD9;NFKC_SCF=2CD9;SB=UP;scf=2CD9;slc=2CD9;Upper
cp;2CD9;CWT;CWU;Lower;na=COPTIC SMALL LETTER OLD COPTIC DJA;stc=2CD8;suc=2CD8
-cp;2CDA;cf=2CDB;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER OLD COPTIC SHIMA;NFKC_CF=2CDB;SB=UP;scf=2CDB;slc=2CDB;Upper
+cp;2CDA;cf=2CDB;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER OLD COPTIC SHIMA;NFKC_CF=2CDB;NFKC_SCF=2CDB;SB=UP;scf=2CDB;slc=2CDB;Upper
cp;2CDB;CWT;CWU;Lower;na=COPTIC SMALL LETTER OLD COPTIC SHIMA;stc=2CDA;suc=2CDA
# Old Nubian letters
-cp;2CDC;cf=2CDD;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER OLD NUBIAN SHIMA;NFKC_CF=2CDD;SB=UP;scf=2CDD;slc=2CDD;Upper
+cp;2CDC;cf=2CDD;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER OLD NUBIAN SHIMA;NFKC_CF=2CDD;NFKC_SCF=2CDD;SB=UP;scf=2CDD;slc=2CDD;Upper
cp;2CDD;CWT;CWU;Lower;na=COPTIC SMALL LETTER OLD NUBIAN SHIMA;stc=2CDC;suc=2CDC
-cp;2CDE;cf=2CDF;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER OLD NUBIAN NGI;NFKC_CF=2CDF;SB=UP;scf=2CDF;slc=2CDF;Upper
+cp;2CDE;cf=2CDF;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER OLD NUBIAN NGI;NFKC_CF=2CDF;NFKC_SCF=2CDF;SB=UP;scf=2CDF;slc=2CDF;Upper
cp;2CDF;CWT;CWU;Lower;na=COPTIC SMALL LETTER OLD NUBIAN NGI;stc=2CDE;suc=2CDE
-cp;2CE0;cf=2CE1;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER OLD NUBIAN NYI;NFKC_CF=2CE1;SB=UP;scf=2CE1;slc=2CE1;Upper
+cp;2CE0;cf=2CE1;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER OLD NUBIAN NYI;NFKC_CF=2CE1;NFKC_SCF=2CE1;SB=UP;scf=2CE1;slc=2CE1;Upper
cp;2CE1;CWT;CWU;Lower;na=COPTIC SMALL LETTER OLD NUBIAN NYI;stc=2CE0;suc=2CE0
-cp;2CE2;cf=2CE3;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER OLD NUBIAN WAU;NFKC_CF=2CE3;SB=UP;scf=2CE3;slc=2CE3;Upper
+cp;2CE2;cf=2CE3;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER OLD NUBIAN WAU;NFKC_CF=2CE3;NFKC_SCF=2CE3;SB=UP;scf=2CE3;slc=2CE3;Upper
cp;2CE3;CWT;CWU;Lower;na=COPTIC SMALL LETTER OLD NUBIAN WAU;stc=2CE2;suc=2CE2
# Symbols
cp;2CE4;-CWCM;Lower;na=COPTIC SYMBOL KAI
@@ -13448,16 +13465,16 @@ cp;2CE8;-Alpha;bc=ON;-Cased;-CWCM;gc=So;-IDC;-IDS;na=COPTIC SYMBOL TAU RO;SB=XX;
cp;2CE9;-Alpha;bc=ON;-Cased;-CWCM;gc=So;-IDC;-IDS;na=COPTIC SYMBOL KHI RO;SB=XX;WB=XX;-XIDC;-XIDS
cp;2CEA;-Alpha;bc=ON;-Cased;-CWCM;gc=So;-IDC;-IDS;na=COPTIC SYMBOL SHIMA SIMA;SB=XX;WB=XX;-XIDC;-XIDS
# Cryptogrammic letters
-cp;2CEB;age=5.2;cf=2CEC;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI;NFKC_CF=2CEC;SB=UP;scf=2CEC;slc=2CEC;Upper
+cp;2CEB;age=5.2;cf=2CEC;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI;NFKC_CF=2CEC;NFKC_SCF=2CEC;SB=UP;scf=2CEC;slc=2CEC;Upper
cp;2CEC;age=5.2;CWT;CWU;Lower;na=COPTIC SMALL LETTER CRYPTOGRAMMIC SHEI;stc=2CEB;suc=2CEB
-cp;2CED;age=5.2;cf=2CEE;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER CRYPTOGRAMMIC GANGIA;NFKC_CF=2CEE;SB=UP;scf=2CEE;slc=2CEE;Upper
+cp;2CED;age=5.2;cf=2CEE;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER CRYPTOGRAMMIC GANGIA;NFKC_CF=2CEE;NFKC_SCF=2CEE;SB=UP;scf=2CEE;slc=2CEE;Upper
cp;2CEE;age=5.2;CWT;CWU;Lower;na=COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA;stc=2CED;suc=2CED
# Combining marks
-cp;2CEF;age=5.2;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=COPTIC COMBINING NI ABOVE;SB=EX;WB=Extend;-XIDS
-cp;2CF0;age=5.2;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=COPTIC COMBINING SPIRITUS ASPER;SB=EX;WB=Extend;-XIDS
-cp;2CF1;age=5.2;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=COPTIC COMBINING SPIRITUS LENIS;SB=EX;WB=Extend;-XIDS
+cp;2CEF;age=5.2;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COPTIC COMBINING NI ABOVE;SB=EX;WB=Extend;-XIDS
+cp;2CF0;age=5.2;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COPTIC COMBINING SPIRITUS ASPER;SB=EX;WB=Extend;-XIDS
+cp;2CF1;age=5.2;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COPTIC COMBINING SPIRITUS LENIS;SB=EX;WB=Extend;-XIDS
# Bohairic Coptic letters
-cp;2CF2;age=6.1;cf=2CF3;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER BOHAIRIC KHEI;NFKC_CF=2CF3;SB=UP;scf=2CF3;slc=2CF3;Upper
+cp;2CF2;age=6.1;cf=2CF3;CWCF;CWKCF;CWL;gc=Lu;na=COPTIC CAPITAL LETTER BOHAIRIC KHEI;NFKC_CF=2CF3;NFKC_SCF=2CF3;SB=UP;scf=2CF3;slc=2CF3;Upper
cp;2CF3;age=6.1;CWT;CWU;Lower;na=COPTIC SMALL LETTER BOHAIRIC KHEI;stc=2CF2;suc=2CF2
unassigned;2CF4..2CF8
# Old Nubian punctuation
@@ -13581,12 +13598,12 @@ cp;2D66;age=6.1;na=TIFINAGH LETTER YE
cp;2D67;age=6.1;na=TIFINAGH LETTER YO
unassigned;2D68..2D6E
# Modifier letter
-cp;2D6F;CI;CWKCF;dm=2D61;dt=Sup;gc=Lm;na=TIFINAGH MODIFIER LETTER LABIALIZATION MARK;NFKC_CF=2D61;NFKC_QC=N;NFKD_QC=N
+cp;2D6F;CI;CWKCF;dm=2D61;dt=Sup;gc=Lm;na=TIFINAGH MODIFIER LETTER LABIALIZATION MARK;NFKC_CF=2D61;NFKC_QC=N;NFKC_SCF=2D61;NFKD_QC=N
# Punctuation
cp;2D70;age=6.0;-Alpha;gc=Po;-IDC;-IDS;lb=BA;na=TIFINAGH SEPARATOR MARK;SB=XX;WB=XX;-XIDC;-XIDS
unassigned;2D71..2D7E
# Sign
-cp;2D7F;age=6.0;-Alpha;bc=NSM;ccc=9;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;jt=T;lb=CM;na=TIFINAGH CONSONANT JOINER;SB=EX;WB=Extend;-XIDS
+cp;2D7F;age=6.0;-Alpha;bc=NSM;ccc=9;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InCB=Extend;jt=T;lb=CM;na=TIFINAGH CONSONANT JOINER;SB=EX;WB=Extend;-XIDS
block;2D80..2DDF;age=4.1;Alpha;blk=Ethiopic_Ext;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Ethi;WB=LE;XIDC;XIDS
# 2D80..2DDF Ethiopic Extended
@@ -13683,7 +13700,7 @@ cp;2DDD;na=ETHIOPIC SYLLABLE GYE
cp;2DDE;na=ETHIOPIC SYLLABLE GYO
unassigned;2DDF
-block;2DE0..2DFF;age=5.1;Alpha;bc=NSM;blk=Cyrillic_Ext_A;ccc=230;CI;gc=Mn;GCB=EX;Gr_Ext;IDC;jt=T;lb=CM;SB=EX;sc=Cyrl;WB=Extend;XIDC
+block;2DE0..2DFF;age=5.1;Alpha;bc=NSM;blk=Cyrillic_Ext_A;ccc=230;CI;gc=Mn;GCB=EX;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;SB=EX;sc=Cyrl;WB=Extend;XIDC
# 2DE0..2DFF Cyrillic Extended-A
# Old Church Slavonic combining letters
cp;2DE0;na=COMBINING CYRILLIC LETTER BE
@@ -13876,7 +13893,7 @@ cp;2E9B;na=CJK RADICAL CHOKE
cp;2E9C;na=CJK RADICAL SUN
cp;2E9D;na=CJK RADICAL MOON
cp;2E9E;na=CJK RADICAL DEATH
-cp;2E9F;CWKCF;dm=6BCD;dt=Com;na=CJK RADICAL MOTHER;NFKC_CF=6BCD;NFKC_QC=N;NFKD_QC=N
+cp;2E9F;CWKCF;dm=6BCD;dt=Com;na=CJK RADICAL MOTHER;NFKC_CF=6BCD;NFKC_QC=N;NFKC_SCF=6BCD;NFKD_QC=N
cp;2EA0;na=CJK RADICAL CIVILIAN
cp;2EA1;na=CJK RADICAL WATER ONE
cp;2EA2;na=CJK RADICAL WATER TWO
@@ -13960,226 +13977,226 @@ cp;2EEF;na=CJK RADICAL J-SIMPLIFIED DRAGON
cp;2EF0;na=CJK RADICAL C-SIMPLIFIED DRAGON
cp;2EF1;na=CJK RADICAL TURTLE
cp;2EF2;na=CJK RADICAL J-SIMPLIFIED TURTLE
-cp;2EF3;CWKCF;dm=9F9F;dt=Com;na=CJK RADICAL C-SIMPLIFIED TURTLE;NFKC_CF=9F9F;NFKC_QC=N;NFKD_QC=N
+cp;2EF3;CWKCF;dm=9F9F;dt=Com;na=CJK RADICAL C-SIMPLIFIED TURTLE;NFKC_CF=9F9F;NFKC_QC=N;NFKC_SCF=9F9F;NFKD_QC=N
unassigned;2EF4..2EFF;vo=U
block;2F00..2FDF;age=3.0;bc=ON;blk=Kangxi;CWKCF;dt=Com;ea=W;gc=So;Gr_Base;lb=ID;NFKC_QC=N;NFKD_QC=N;Radical;sc=Hani;vo=U
# 2F00..2FDF Kangxi Radicals
# Kangxi radicals
-cp;2F00;dm=4E00;na=KANGXI RADICAL ONE;NFKC_CF=4E00
-cp;2F01;dm=4E28;na=KANGXI RADICAL LINE;NFKC_CF=4E28
-cp;2F02;dm=4E36;na=KANGXI RADICAL DOT;NFKC_CF=4E36
-cp;2F03;dm=4E3F;na=KANGXI RADICAL SLASH;NFKC_CF=4E3F
-cp;2F04;dm=4E59;na=KANGXI RADICAL SECOND;NFKC_CF=4E59
-cp;2F05;dm=4E85;na=KANGXI RADICAL HOOK;NFKC_CF=4E85
-cp;2F06;dm=4E8C;na=KANGXI RADICAL TWO;NFKC_CF=4E8C
-cp;2F07;dm=4EA0;na=KANGXI RADICAL LID;NFKC_CF=4EA0
-cp;2F08;dm=4EBA;na=KANGXI RADICAL MAN;NFKC_CF=4EBA
-cp;2F09;dm=513F;na=KANGXI RADICAL LEGS;NFKC_CF=513F
-cp;2F0A;dm=5165;na=KANGXI RADICAL ENTER;NFKC_CF=5165
-cp;2F0B;dm=516B;na=KANGXI RADICAL EIGHT;NFKC_CF=516B
-cp;2F0C;dm=5182;na=KANGXI RADICAL DOWN BOX;NFKC_CF=5182
-cp;2F0D;dm=5196;na=KANGXI RADICAL COVER;NFKC_CF=5196
-cp;2F0E;dm=51AB;na=KANGXI RADICAL ICE;NFKC_CF=51AB
-cp;2F0F;dm=51E0;na=KANGXI RADICAL TABLE;NFKC_CF=51E0
-cp;2F10;dm=51F5;na=KANGXI RADICAL OPEN BOX;NFKC_CF=51F5
-cp;2F11;dm=5200;na=KANGXI RADICAL KNIFE;NFKC_CF=5200
-cp;2F12;dm=529B;na=KANGXI RADICAL POWER;NFKC_CF=529B
-cp;2F13;dm=52F9;na=KANGXI RADICAL WRAP;NFKC_CF=52F9
-cp;2F14;dm=5315;na=KANGXI RADICAL SPOON;NFKC_CF=5315
-cp;2F15;dm=531A;na=KANGXI RADICAL RIGHT OPEN BOX;NFKC_CF=531A
-cp;2F16;dm=5338;na=KANGXI RADICAL HIDING ENCLOSURE;NFKC_CF=5338
-cp;2F17;dm=5341;na=KANGXI RADICAL TEN;NFKC_CF=5341
-cp;2F18;dm=535C;na=KANGXI RADICAL DIVINATION;NFKC_CF=535C
-cp;2F19;dm=5369;na=KANGXI RADICAL SEAL;NFKC_CF=5369
-cp;2F1A;dm=5382;na=KANGXI RADICAL CLIFF;NFKC_CF=5382
-cp;2F1B;dm=53B6;na=KANGXI RADICAL PRIVATE;NFKC_CF=53B6
-cp;2F1C;dm=53C8;na=KANGXI RADICAL AGAIN;NFKC_CF=53C8
-cp;2F1D;dm=53E3;na=KANGXI RADICAL MOUTH;NFKC_CF=53E3
-cp;2F1E;dm=56D7;na=KANGXI RADICAL ENCLOSURE;NFKC_CF=56D7
-cp;2F1F;dm=571F;na=KANGXI RADICAL EARTH;NFKC_CF=571F
-cp;2F20;dm=58EB;na=KANGXI RADICAL SCHOLAR;NFKC_CF=58EB
-cp;2F21;dm=5902;na=KANGXI RADICAL GO;NFKC_CF=5902
-cp;2F22;dm=590A;na=KANGXI RADICAL GO SLOWLY;NFKC_CF=590A
-cp;2F23;dm=5915;na=KANGXI RADICAL EVENING;NFKC_CF=5915
-cp;2F24;dm=5927;na=KANGXI RADICAL BIG;NFKC_CF=5927
-cp;2F25;dm=5973;na=KANGXI RADICAL WOMAN;NFKC_CF=5973
-cp;2F26;dm=5B50;na=KANGXI RADICAL CHILD;NFKC_CF=5B50
-cp;2F27;dm=5B80;na=KANGXI RADICAL ROOF;NFKC_CF=5B80
-cp;2F28;dm=5BF8;na=KANGXI RADICAL INCH;NFKC_CF=5BF8
-cp;2F29;dm=5C0F;na=KANGXI RADICAL SMALL;NFKC_CF=5C0F
-cp;2F2A;dm=5C22;na=KANGXI RADICAL LAME;NFKC_CF=5C22
-cp;2F2B;dm=5C38;na=KANGXI RADICAL CORPSE;NFKC_CF=5C38
-cp;2F2C;dm=5C6E;na=KANGXI RADICAL SPROUT;NFKC_CF=5C6E
-cp;2F2D;dm=5C71;na=KANGXI RADICAL MOUNTAIN;NFKC_CF=5C71
-cp;2F2E;dm=5DDB;na=KANGXI RADICAL RIVER;NFKC_CF=5DDB
-cp;2F2F;dm=5DE5;na=KANGXI RADICAL WORK;NFKC_CF=5DE5
-cp;2F30;dm=5DF1;na=KANGXI RADICAL ONESELF;NFKC_CF=5DF1
-cp;2F31;dm=5DFE;na=KANGXI RADICAL TURBAN;NFKC_CF=5DFE
-cp;2F32;dm=5E72;na=KANGXI RADICAL DRY;NFKC_CF=5E72
-cp;2F33;dm=5E7A;na=KANGXI RADICAL SHORT THREAD;NFKC_CF=5E7A
-cp;2F34;dm=5E7F;na=KANGXI RADICAL DOTTED CLIFF;NFKC_CF=5E7F
-cp;2F35;dm=5EF4;na=KANGXI RADICAL LONG STRIDE;NFKC_CF=5EF4
-cp;2F36;dm=5EFE;na=KANGXI RADICAL TWO HANDS;NFKC_CF=5EFE
-cp;2F37;dm=5F0B;na=KANGXI RADICAL SHOOT;NFKC_CF=5F0B
-cp;2F38;dm=5F13;na=KANGXI RADICAL BOW;NFKC_CF=5F13
-cp;2F39;dm=5F50;na=KANGXI RADICAL SNOUT;NFKC_CF=5F50
-cp;2F3A;dm=5F61;na=KANGXI RADICAL BRISTLE;NFKC_CF=5F61
-cp;2F3B;dm=5F73;na=KANGXI RADICAL STEP;NFKC_CF=5F73
-cp;2F3C;dm=5FC3;na=KANGXI RADICAL HEART;NFKC_CF=5FC3
-cp;2F3D;dm=6208;na=KANGXI RADICAL HALBERD;NFKC_CF=6208
-cp;2F3E;dm=6236;na=KANGXI RADICAL DOOR;NFKC_CF=6236
-cp;2F3F;dm=624B;na=KANGXI RADICAL HAND;NFKC_CF=624B
-cp;2F40;dm=652F;na=KANGXI RADICAL BRANCH;NFKC_CF=652F
-cp;2F41;dm=6534;na=KANGXI RADICAL RAP;NFKC_CF=6534
-cp;2F42;dm=6587;na=KANGXI RADICAL SCRIPT;NFKC_CF=6587
-cp;2F43;dm=6597;na=KANGXI RADICAL DIPPER;NFKC_CF=6597
-cp;2F44;dm=65A4;na=KANGXI RADICAL AXE;NFKC_CF=65A4
-cp;2F45;dm=65B9;na=KANGXI RADICAL SQUARE;NFKC_CF=65B9
-cp;2F46;dm=65E0;na=KANGXI RADICAL NOT;NFKC_CF=65E0
-cp;2F47;dm=65E5;na=KANGXI RADICAL SUN;NFKC_CF=65E5
-cp;2F48;dm=66F0;na=KANGXI RADICAL SAY;NFKC_CF=66F0
-cp;2F49;dm=6708;na=KANGXI RADICAL MOON;NFKC_CF=6708
-cp;2F4A;dm=6728;na=KANGXI RADICAL TREE;NFKC_CF=6728
-cp;2F4B;dm=6B20;na=KANGXI RADICAL LACK;NFKC_CF=6B20
-cp;2F4C;dm=6B62;na=KANGXI RADICAL STOP;NFKC_CF=6B62
-cp;2F4D;dm=6B79;na=KANGXI RADICAL DEATH;NFKC_CF=6B79
-cp;2F4E;dm=6BB3;na=KANGXI RADICAL WEAPON;NFKC_CF=6BB3
-cp;2F4F;dm=6BCB;na=KANGXI RADICAL DO NOT;NFKC_CF=6BCB
-cp;2F50;dm=6BD4;na=KANGXI RADICAL COMPARE;NFKC_CF=6BD4
-cp;2F51;dm=6BDB;na=KANGXI RADICAL FUR;NFKC_CF=6BDB
-cp;2F52;dm=6C0F;na=KANGXI RADICAL CLAN;NFKC_CF=6C0F
-cp;2F53;dm=6C14;na=KANGXI RADICAL STEAM;NFKC_CF=6C14
-cp;2F54;dm=6C34;na=KANGXI RADICAL WATER;NFKC_CF=6C34
-cp;2F55;dm=706B;na=KANGXI RADICAL FIRE;NFKC_CF=706B
-cp;2F56;dm=722A;na=KANGXI RADICAL CLAW;NFKC_CF=722A
-cp;2F57;dm=7236;na=KANGXI RADICAL FATHER;NFKC_CF=7236
-cp;2F58;dm=723B;na=KANGXI RADICAL DOUBLE X;NFKC_CF=723B
-cp;2F59;dm=723F;na=KANGXI RADICAL HALF TREE TRUNK;NFKC_CF=723F
-cp;2F5A;dm=7247;na=KANGXI RADICAL SLICE;NFKC_CF=7247
-cp;2F5B;dm=7259;na=KANGXI RADICAL FANG;NFKC_CF=7259
-cp;2F5C;dm=725B;na=KANGXI RADICAL COW;NFKC_CF=725B
-cp;2F5D;dm=72AC;na=KANGXI RADICAL DOG;NFKC_CF=72AC
-cp;2F5E;dm=7384;na=KANGXI RADICAL PROFOUND;NFKC_CF=7384
-cp;2F5F;dm=7389;na=KANGXI RADICAL JADE;NFKC_CF=7389
-cp;2F60;dm=74DC;na=KANGXI RADICAL MELON;NFKC_CF=74DC
-cp;2F61;dm=74E6;na=KANGXI RADICAL TILE;NFKC_CF=74E6
-cp;2F62;dm=7518;na=KANGXI RADICAL SWEET;NFKC_CF=7518
-cp;2F63;dm=751F;na=KANGXI RADICAL LIFE;NFKC_CF=751F
-cp;2F64;dm=7528;na=KANGXI RADICAL USE;NFKC_CF=7528
-cp;2F65;dm=7530;na=KANGXI RADICAL FIELD;NFKC_CF=7530
-cp;2F66;dm=758B;na=KANGXI RADICAL BOLT OF CLOTH;NFKC_CF=758B
-cp;2F67;dm=7592;na=KANGXI RADICAL SICKNESS;NFKC_CF=7592
-cp;2F68;dm=7676;na=KANGXI RADICAL DOTTED TENT;NFKC_CF=7676
-cp;2F69;dm=767D;na=KANGXI RADICAL WHITE;NFKC_CF=767D
-cp;2F6A;dm=76AE;na=KANGXI RADICAL SKIN;NFKC_CF=76AE
-cp;2F6B;dm=76BF;na=KANGXI RADICAL DISH;NFKC_CF=76BF
-cp;2F6C;dm=76EE;na=KANGXI RADICAL EYE;NFKC_CF=76EE
-cp;2F6D;dm=77DB;na=KANGXI RADICAL SPEAR;NFKC_CF=77DB
-cp;2F6E;dm=77E2;na=KANGXI RADICAL ARROW;NFKC_CF=77E2
-cp;2F6F;dm=77F3;na=KANGXI RADICAL STONE;NFKC_CF=77F3
-cp;2F70;dm=793A;na=KANGXI RADICAL SPIRIT;NFKC_CF=793A
-cp;2F71;dm=79B8;na=KANGXI RADICAL TRACK;NFKC_CF=79B8
-cp;2F72;dm=79BE;na=KANGXI RADICAL GRAIN;NFKC_CF=79BE
-cp;2F73;dm=7A74;na=KANGXI RADICAL CAVE;NFKC_CF=7A74
-cp;2F74;dm=7ACB;na=KANGXI RADICAL STAND;NFKC_CF=7ACB
-cp;2F75;dm=7AF9;na=KANGXI RADICAL BAMBOO;NFKC_CF=7AF9
-cp;2F76;dm=7C73;na=KANGXI RADICAL RICE;NFKC_CF=7C73
-cp;2F77;dm=7CF8;na=KANGXI RADICAL SILK;NFKC_CF=7CF8
-cp;2F78;dm=7F36;na=KANGXI RADICAL JAR;NFKC_CF=7F36
-cp;2F79;dm=7F51;na=KANGXI RADICAL NET;NFKC_CF=7F51
-cp;2F7A;dm=7F8A;na=KANGXI RADICAL SHEEP;NFKC_CF=7F8A
-cp;2F7B;dm=7FBD;na=KANGXI RADICAL FEATHER;NFKC_CF=7FBD
-cp;2F7C;dm=8001;na=KANGXI RADICAL OLD;NFKC_CF=8001
-cp;2F7D;dm=800C;na=KANGXI RADICAL AND;NFKC_CF=800C
-cp;2F7E;dm=8012;na=KANGXI RADICAL PLOW;NFKC_CF=8012
-cp;2F7F;dm=8033;na=KANGXI RADICAL EAR;NFKC_CF=8033
-cp;2F80;dm=807F;na=KANGXI RADICAL BRUSH;NFKC_CF=807F
-cp;2F81;dm=8089;na=KANGXI RADICAL MEAT;NFKC_CF=8089
-cp;2F82;dm=81E3;na=KANGXI RADICAL MINISTER;NFKC_CF=81E3
-cp;2F83;dm=81EA;na=KANGXI RADICAL SELF;NFKC_CF=81EA
-cp;2F84;dm=81F3;na=KANGXI RADICAL ARRIVE;NFKC_CF=81F3
-cp;2F85;dm=81FC;na=KANGXI RADICAL MORTAR;NFKC_CF=81FC
-cp;2F86;dm=820C;na=KANGXI RADICAL TONGUE;NFKC_CF=820C
-cp;2F87;dm=821B;na=KANGXI RADICAL OPPOSE;NFKC_CF=821B
-cp;2F88;dm=821F;na=KANGXI RADICAL BOAT;NFKC_CF=821F
-cp;2F89;dm=826E;na=KANGXI RADICAL STOPPING;NFKC_CF=826E
-cp;2F8A;dm=8272;na=KANGXI RADICAL COLOR;NFKC_CF=8272
-cp;2F8B;dm=8278;na=KANGXI RADICAL GRASS;NFKC_CF=8278
-cp;2F8C;dm=864D;na=KANGXI RADICAL TIGER;NFKC_CF=864D
-cp;2F8D;dm=866B;na=KANGXI RADICAL INSECT;NFKC_CF=866B
-cp;2F8E;dm=8840;na=KANGXI RADICAL BLOOD;NFKC_CF=8840
-cp;2F8F;dm=884C;na=KANGXI RADICAL WALK ENCLOSURE;NFKC_CF=884C
-cp;2F90;dm=8863;na=KANGXI RADICAL CLOTHES;NFKC_CF=8863
-cp;2F91;dm=897E;na=KANGXI RADICAL WEST;NFKC_CF=897E
-cp;2F92;dm=898B;na=KANGXI RADICAL SEE;NFKC_CF=898B
-cp;2F93;dm=89D2;na=KANGXI RADICAL HORN;NFKC_CF=89D2
-cp;2F94;dm=8A00;na=KANGXI RADICAL SPEECH;NFKC_CF=8A00
-cp;2F95;dm=8C37;na=KANGXI RADICAL VALLEY;NFKC_CF=8C37
-cp;2F96;dm=8C46;na=KANGXI RADICAL BEAN;NFKC_CF=8C46
-cp;2F97;dm=8C55;na=KANGXI RADICAL PIG;NFKC_CF=8C55
-cp;2F98;dm=8C78;na=KANGXI RADICAL BADGER;NFKC_CF=8C78
-cp;2F99;dm=8C9D;na=KANGXI RADICAL SHELL;NFKC_CF=8C9D
-cp;2F9A;dm=8D64;na=KANGXI RADICAL RED;NFKC_CF=8D64
-cp;2F9B;dm=8D70;na=KANGXI RADICAL RUN;NFKC_CF=8D70
-cp;2F9C;dm=8DB3;na=KANGXI RADICAL FOOT;NFKC_CF=8DB3
-cp;2F9D;dm=8EAB;na=KANGXI RADICAL BODY;NFKC_CF=8EAB
-cp;2F9E;dm=8ECA;na=KANGXI RADICAL CART;NFKC_CF=8ECA
-cp;2F9F;dm=8F9B;na=KANGXI RADICAL BITTER;NFKC_CF=8F9B
-cp;2FA0;dm=8FB0;na=KANGXI RADICAL MORNING;NFKC_CF=8FB0
-cp;2FA1;dm=8FB5;na=KANGXI RADICAL WALK;NFKC_CF=8FB5
-cp;2FA2;dm=9091;na=KANGXI RADICAL CITY;NFKC_CF=9091
-cp;2FA3;dm=9149;na=KANGXI RADICAL WINE;NFKC_CF=9149
-cp;2FA4;dm=91C6;na=KANGXI RADICAL DISTINGUISH;NFKC_CF=91C6
-cp;2FA5;dm=91CC;na=KANGXI RADICAL VILLAGE;NFKC_CF=91CC
-cp;2FA6;dm=91D1;na=KANGXI RADICAL GOLD;NFKC_CF=91D1
-cp;2FA7;dm=9577;na=KANGXI RADICAL LONG;NFKC_CF=9577
-cp;2FA8;dm=9580;na=KANGXI RADICAL GATE;NFKC_CF=9580
-cp;2FA9;dm=961C;na=KANGXI RADICAL MOUND;NFKC_CF=961C
-cp;2FAA;dm=96B6;na=KANGXI RADICAL SLAVE;NFKC_CF=96B6
-cp;2FAB;dm=96B9;na=KANGXI RADICAL SHORT TAILED BIRD;NFKC_CF=96B9
-cp;2FAC;dm=96E8;na=KANGXI RADICAL RAIN;NFKC_CF=96E8
-cp;2FAD;dm=9751;na=KANGXI RADICAL BLUE;NFKC_CF=9751
-cp;2FAE;dm=975E;na=KANGXI RADICAL WRONG;NFKC_CF=975E
-cp;2FAF;dm=9762;na=KANGXI RADICAL FACE;NFKC_CF=9762
-cp;2FB0;dm=9769;na=KANGXI RADICAL LEATHER;NFKC_CF=9769
-cp;2FB1;dm=97CB;na=KANGXI RADICAL TANNED LEATHER;NFKC_CF=97CB
-cp;2FB2;dm=97ED;na=KANGXI RADICAL LEEK;NFKC_CF=97ED
-cp;2FB3;dm=97F3;na=KANGXI RADICAL SOUND;NFKC_CF=97F3
-cp;2FB4;dm=9801;na=KANGXI RADICAL LEAF;NFKC_CF=9801
-cp;2FB5;dm=98A8;na=KANGXI RADICAL WIND;NFKC_CF=98A8
-cp;2FB6;dm=98DB;na=KANGXI RADICAL FLY;NFKC_CF=98DB
-cp;2FB7;dm=98DF;na=KANGXI RADICAL EAT;NFKC_CF=98DF
-cp;2FB8;dm=9996;na=KANGXI RADICAL HEAD;NFKC_CF=9996
-cp;2FB9;dm=9999;na=KANGXI RADICAL FRAGRANT;NFKC_CF=9999
-cp;2FBA;dm=99AC;na=KANGXI RADICAL HORSE;NFKC_CF=99AC
-cp;2FBB;dm=9AA8;na=KANGXI RADICAL BONE;NFKC_CF=9AA8
-cp;2FBC;dm=9AD8;na=KANGXI RADICAL TALL;NFKC_CF=9AD8
-cp;2FBD;dm=9ADF;na=KANGXI RADICAL HAIR;NFKC_CF=9ADF
-cp;2FBE;dm=9B25;na=KANGXI RADICAL FIGHT;NFKC_CF=9B25
-cp;2FBF;dm=9B2F;na=KANGXI RADICAL SACRIFICIAL WINE;NFKC_CF=9B2F
-cp;2FC0;dm=9B32;na=KANGXI RADICAL CAULDRON;NFKC_CF=9B32
-cp;2FC1;dm=9B3C;na=KANGXI RADICAL GHOST;NFKC_CF=9B3C
-cp;2FC2;dm=9B5A;na=KANGXI RADICAL FISH;NFKC_CF=9B5A
-cp;2FC3;dm=9CE5;na=KANGXI RADICAL BIRD;NFKC_CF=9CE5
-cp;2FC4;dm=9E75;na=KANGXI RADICAL SALT;NFKC_CF=9E75
-cp;2FC5;dm=9E7F;na=KANGXI RADICAL DEER;NFKC_CF=9E7F
-cp;2FC6;dm=9EA5;na=KANGXI RADICAL WHEAT;NFKC_CF=9EA5
-cp;2FC7;dm=9EBB;na=KANGXI RADICAL HEMP;NFKC_CF=9EBB
-cp;2FC8;dm=9EC3;na=KANGXI RADICAL YELLOW;NFKC_CF=9EC3
-cp;2FC9;dm=9ECD;na=KANGXI RADICAL MILLET;NFKC_CF=9ECD
-cp;2FCA;dm=9ED1;na=KANGXI RADICAL BLACK;NFKC_CF=9ED1
-cp;2FCB;dm=9EF9;na=KANGXI RADICAL EMBROIDERY;NFKC_CF=9EF9
-cp;2FCC;dm=9EFD;na=KANGXI RADICAL FROG;NFKC_CF=9EFD
-cp;2FCD;dm=9F0E;na=KANGXI RADICAL TRIPOD;NFKC_CF=9F0E
-cp;2FCE;dm=9F13;na=KANGXI RADICAL DRUM;NFKC_CF=9F13
-cp;2FCF;dm=9F20;na=KANGXI RADICAL RAT;NFKC_CF=9F20
-cp;2FD0;dm=9F3B;na=KANGXI RADICAL NOSE;NFKC_CF=9F3B
-cp;2FD1;dm=9F4A;na=KANGXI RADICAL EVEN;NFKC_CF=9F4A
-cp;2FD2;dm=9F52;na=KANGXI RADICAL TOOTH;NFKC_CF=9F52
-cp;2FD3;dm=9F8D;na=KANGXI RADICAL DRAGON;NFKC_CF=9F8D
-cp;2FD4;dm=9F9C;na=KANGXI RADICAL TURTLE;NFKC_CF=9F9C
-cp;2FD5;dm=9FA0;na=KANGXI RADICAL FLUTE;NFKC_CF=9FA0
+cp;2F00;dm=4E00;na=KANGXI RADICAL ONE;NFKC_CF=4E00;NFKC_SCF=4E00
+cp;2F01;dm=4E28;na=KANGXI RADICAL LINE;NFKC_CF=4E28;NFKC_SCF=4E28
+cp;2F02;dm=4E36;na=KANGXI RADICAL DOT;NFKC_CF=4E36;NFKC_SCF=4E36
+cp;2F03;dm=4E3F;na=KANGXI RADICAL SLASH;NFKC_CF=4E3F;NFKC_SCF=4E3F
+cp;2F04;dm=4E59;na=KANGXI RADICAL SECOND;NFKC_CF=4E59;NFKC_SCF=4E59
+cp;2F05;dm=4E85;na=KANGXI RADICAL HOOK;NFKC_CF=4E85;NFKC_SCF=4E85
+cp;2F06;dm=4E8C;na=KANGXI RADICAL TWO;NFKC_CF=4E8C;NFKC_SCF=4E8C
+cp;2F07;dm=4EA0;na=KANGXI RADICAL LID;NFKC_CF=4EA0;NFKC_SCF=4EA0
+cp;2F08;dm=4EBA;na=KANGXI RADICAL MAN;NFKC_CF=4EBA;NFKC_SCF=4EBA
+cp;2F09;dm=513F;na=KANGXI RADICAL LEGS;NFKC_CF=513F;NFKC_SCF=513F
+cp;2F0A;dm=5165;na=KANGXI RADICAL ENTER;NFKC_CF=5165;NFKC_SCF=5165
+cp;2F0B;dm=516B;na=KANGXI RADICAL EIGHT;NFKC_CF=516B;NFKC_SCF=516B
+cp;2F0C;dm=5182;na=KANGXI RADICAL DOWN BOX;NFKC_CF=5182;NFKC_SCF=5182
+cp;2F0D;dm=5196;na=KANGXI RADICAL COVER;NFKC_CF=5196;NFKC_SCF=5196
+cp;2F0E;dm=51AB;na=KANGXI RADICAL ICE;NFKC_CF=51AB;NFKC_SCF=51AB
+cp;2F0F;dm=51E0;na=KANGXI RADICAL TABLE;NFKC_CF=51E0;NFKC_SCF=51E0
+cp;2F10;dm=51F5;na=KANGXI RADICAL OPEN BOX;NFKC_CF=51F5;NFKC_SCF=51F5
+cp;2F11;dm=5200;na=KANGXI RADICAL KNIFE;NFKC_CF=5200;NFKC_SCF=5200
+cp;2F12;dm=529B;na=KANGXI RADICAL POWER;NFKC_CF=529B;NFKC_SCF=529B
+cp;2F13;dm=52F9;na=KANGXI RADICAL WRAP;NFKC_CF=52F9;NFKC_SCF=52F9
+cp;2F14;dm=5315;na=KANGXI RADICAL SPOON;NFKC_CF=5315;NFKC_SCF=5315
+cp;2F15;dm=531A;na=KANGXI RADICAL RIGHT OPEN BOX;NFKC_CF=531A;NFKC_SCF=531A
+cp;2F16;dm=5338;na=KANGXI RADICAL HIDING ENCLOSURE;NFKC_CF=5338;NFKC_SCF=5338
+cp;2F17;dm=5341;na=KANGXI RADICAL TEN;NFKC_CF=5341;NFKC_SCF=5341
+cp;2F18;dm=535C;na=KANGXI RADICAL DIVINATION;NFKC_CF=535C;NFKC_SCF=535C
+cp;2F19;dm=5369;na=KANGXI RADICAL SEAL;NFKC_CF=5369;NFKC_SCF=5369
+cp;2F1A;dm=5382;na=KANGXI RADICAL CLIFF;NFKC_CF=5382;NFKC_SCF=5382
+cp;2F1B;dm=53B6;na=KANGXI RADICAL PRIVATE;NFKC_CF=53B6;NFKC_SCF=53B6
+cp;2F1C;dm=53C8;na=KANGXI RADICAL AGAIN;NFKC_CF=53C8;NFKC_SCF=53C8
+cp;2F1D;dm=53E3;na=KANGXI RADICAL MOUTH;NFKC_CF=53E3;NFKC_SCF=53E3
+cp;2F1E;dm=56D7;na=KANGXI RADICAL ENCLOSURE;NFKC_CF=56D7;NFKC_SCF=56D7
+cp;2F1F;dm=571F;na=KANGXI RADICAL EARTH;NFKC_CF=571F;NFKC_SCF=571F
+cp;2F20;dm=58EB;na=KANGXI RADICAL SCHOLAR;NFKC_CF=58EB;NFKC_SCF=58EB
+cp;2F21;dm=5902;na=KANGXI RADICAL GO;NFKC_CF=5902;NFKC_SCF=5902
+cp;2F22;dm=590A;na=KANGXI RADICAL GO SLOWLY;NFKC_CF=590A;NFKC_SCF=590A
+cp;2F23;dm=5915;na=KANGXI RADICAL EVENING;NFKC_CF=5915;NFKC_SCF=5915
+cp;2F24;dm=5927;na=KANGXI RADICAL BIG;NFKC_CF=5927;NFKC_SCF=5927
+cp;2F25;dm=5973;na=KANGXI RADICAL WOMAN;NFKC_CF=5973;NFKC_SCF=5973
+cp;2F26;dm=5B50;na=KANGXI RADICAL CHILD;NFKC_CF=5B50;NFKC_SCF=5B50
+cp;2F27;dm=5B80;na=KANGXI RADICAL ROOF;NFKC_CF=5B80;NFKC_SCF=5B80
+cp;2F28;dm=5BF8;na=KANGXI RADICAL INCH;NFKC_CF=5BF8;NFKC_SCF=5BF8
+cp;2F29;dm=5C0F;na=KANGXI RADICAL SMALL;NFKC_CF=5C0F;NFKC_SCF=5C0F
+cp;2F2A;dm=5C22;na=KANGXI RADICAL LAME;NFKC_CF=5C22;NFKC_SCF=5C22
+cp;2F2B;dm=5C38;na=KANGXI RADICAL CORPSE;NFKC_CF=5C38;NFKC_SCF=5C38
+cp;2F2C;dm=5C6E;na=KANGXI RADICAL SPROUT;NFKC_CF=5C6E;NFKC_SCF=5C6E
+cp;2F2D;dm=5C71;na=KANGXI RADICAL MOUNTAIN;NFKC_CF=5C71;NFKC_SCF=5C71
+cp;2F2E;dm=5DDB;na=KANGXI RADICAL RIVER;NFKC_CF=5DDB;NFKC_SCF=5DDB
+cp;2F2F;dm=5DE5;na=KANGXI RADICAL WORK;NFKC_CF=5DE5;NFKC_SCF=5DE5
+cp;2F30;dm=5DF1;na=KANGXI RADICAL ONESELF;NFKC_CF=5DF1;NFKC_SCF=5DF1
+cp;2F31;dm=5DFE;na=KANGXI RADICAL TURBAN;NFKC_CF=5DFE;NFKC_SCF=5DFE
+cp;2F32;dm=5E72;na=KANGXI RADICAL DRY;NFKC_CF=5E72;NFKC_SCF=5E72
+cp;2F33;dm=5E7A;na=KANGXI RADICAL SHORT THREAD;NFKC_CF=5E7A;NFKC_SCF=5E7A
+cp;2F34;dm=5E7F;na=KANGXI RADICAL DOTTED CLIFF;NFKC_CF=5E7F;NFKC_SCF=5E7F
+cp;2F35;dm=5EF4;na=KANGXI RADICAL LONG STRIDE;NFKC_CF=5EF4;NFKC_SCF=5EF4
+cp;2F36;dm=5EFE;na=KANGXI RADICAL TWO HANDS;NFKC_CF=5EFE;NFKC_SCF=5EFE
+cp;2F37;dm=5F0B;na=KANGXI RADICAL SHOOT;NFKC_CF=5F0B;NFKC_SCF=5F0B
+cp;2F38;dm=5F13;na=KANGXI RADICAL BOW;NFKC_CF=5F13;NFKC_SCF=5F13
+cp;2F39;dm=5F50;na=KANGXI RADICAL SNOUT;NFKC_CF=5F50;NFKC_SCF=5F50
+cp;2F3A;dm=5F61;na=KANGXI RADICAL BRISTLE;NFKC_CF=5F61;NFKC_SCF=5F61
+cp;2F3B;dm=5F73;na=KANGXI RADICAL STEP;NFKC_CF=5F73;NFKC_SCF=5F73
+cp;2F3C;dm=5FC3;na=KANGXI RADICAL HEART;NFKC_CF=5FC3;NFKC_SCF=5FC3
+cp;2F3D;dm=6208;na=KANGXI RADICAL HALBERD;NFKC_CF=6208;NFKC_SCF=6208
+cp;2F3E;dm=6236;na=KANGXI RADICAL DOOR;NFKC_CF=6236;NFKC_SCF=6236
+cp;2F3F;dm=624B;na=KANGXI RADICAL HAND;NFKC_CF=624B;NFKC_SCF=624B
+cp;2F40;dm=652F;na=KANGXI RADICAL BRANCH;NFKC_CF=652F;NFKC_SCF=652F
+cp;2F41;dm=6534;na=KANGXI RADICAL RAP;NFKC_CF=6534;NFKC_SCF=6534
+cp;2F42;dm=6587;na=KANGXI RADICAL SCRIPT;NFKC_CF=6587;NFKC_SCF=6587
+cp;2F43;dm=6597;na=KANGXI RADICAL DIPPER;NFKC_CF=6597;NFKC_SCF=6597
+cp;2F44;dm=65A4;na=KANGXI RADICAL AXE;NFKC_CF=65A4;NFKC_SCF=65A4
+cp;2F45;dm=65B9;na=KANGXI RADICAL SQUARE;NFKC_CF=65B9;NFKC_SCF=65B9
+cp;2F46;dm=65E0;na=KANGXI RADICAL NOT;NFKC_CF=65E0;NFKC_SCF=65E0
+cp;2F47;dm=65E5;na=KANGXI RADICAL SUN;NFKC_CF=65E5;NFKC_SCF=65E5
+cp;2F48;dm=66F0;na=KANGXI RADICAL SAY;NFKC_CF=66F0;NFKC_SCF=66F0
+cp;2F49;dm=6708;na=KANGXI RADICAL MOON;NFKC_CF=6708;NFKC_SCF=6708
+cp;2F4A;dm=6728;na=KANGXI RADICAL TREE;NFKC_CF=6728;NFKC_SCF=6728
+cp;2F4B;dm=6B20;na=KANGXI RADICAL LACK;NFKC_CF=6B20;NFKC_SCF=6B20
+cp;2F4C;dm=6B62;na=KANGXI RADICAL STOP;NFKC_CF=6B62;NFKC_SCF=6B62
+cp;2F4D;dm=6B79;na=KANGXI RADICAL DEATH;NFKC_CF=6B79;NFKC_SCF=6B79
+cp;2F4E;dm=6BB3;na=KANGXI RADICAL WEAPON;NFKC_CF=6BB3;NFKC_SCF=6BB3
+cp;2F4F;dm=6BCB;na=KANGXI RADICAL DO NOT;NFKC_CF=6BCB;NFKC_SCF=6BCB
+cp;2F50;dm=6BD4;na=KANGXI RADICAL COMPARE;NFKC_CF=6BD4;NFKC_SCF=6BD4
+cp;2F51;dm=6BDB;na=KANGXI RADICAL FUR;NFKC_CF=6BDB;NFKC_SCF=6BDB
+cp;2F52;dm=6C0F;na=KANGXI RADICAL CLAN;NFKC_CF=6C0F;NFKC_SCF=6C0F
+cp;2F53;dm=6C14;na=KANGXI RADICAL STEAM;NFKC_CF=6C14;NFKC_SCF=6C14
+cp;2F54;dm=6C34;na=KANGXI RADICAL WATER;NFKC_CF=6C34;NFKC_SCF=6C34
+cp;2F55;dm=706B;na=KANGXI RADICAL FIRE;NFKC_CF=706B;NFKC_SCF=706B
+cp;2F56;dm=722A;na=KANGXI RADICAL CLAW;NFKC_CF=722A;NFKC_SCF=722A
+cp;2F57;dm=7236;na=KANGXI RADICAL FATHER;NFKC_CF=7236;NFKC_SCF=7236
+cp;2F58;dm=723B;na=KANGXI RADICAL DOUBLE X;NFKC_CF=723B;NFKC_SCF=723B
+cp;2F59;dm=723F;na=KANGXI RADICAL HALF TREE TRUNK;NFKC_CF=723F;NFKC_SCF=723F
+cp;2F5A;dm=7247;na=KANGXI RADICAL SLICE;NFKC_CF=7247;NFKC_SCF=7247
+cp;2F5B;dm=7259;na=KANGXI RADICAL FANG;NFKC_CF=7259;NFKC_SCF=7259
+cp;2F5C;dm=725B;na=KANGXI RADICAL COW;NFKC_CF=725B;NFKC_SCF=725B
+cp;2F5D;dm=72AC;na=KANGXI RADICAL DOG;NFKC_CF=72AC;NFKC_SCF=72AC
+cp;2F5E;dm=7384;na=KANGXI RADICAL PROFOUND;NFKC_CF=7384;NFKC_SCF=7384
+cp;2F5F;dm=7389;na=KANGXI RADICAL JADE;NFKC_CF=7389;NFKC_SCF=7389
+cp;2F60;dm=74DC;na=KANGXI RADICAL MELON;NFKC_CF=74DC;NFKC_SCF=74DC
+cp;2F61;dm=74E6;na=KANGXI RADICAL TILE;NFKC_CF=74E6;NFKC_SCF=74E6
+cp;2F62;dm=7518;na=KANGXI RADICAL SWEET;NFKC_CF=7518;NFKC_SCF=7518
+cp;2F63;dm=751F;na=KANGXI RADICAL LIFE;NFKC_CF=751F;NFKC_SCF=751F
+cp;2F64;dm=7528;na=KANGXI RADICAL USE;NFKC_CF=7528;NFKC_SCF=7528
+cp;2F65;dm=7530;na=KANGXI RADICAL FIELD;NFKC_CF=7530;NFKC_SCF=7530
+cp;2F66;dm=758B;na=KANGXI RADICAL BOLT OF CLOTH;NFKC_CF=758B;NFKC_SCF=758B
+cp;2F67;dm=7592;na=KANGXI RADICAL SICKNESS;NFKC_CF=7592;NFKC_SCF=7592
+cp;2F68;dm=7676;na=KANGXI RADICAL DOTTED TENT;NFKC_CF=7676;NFKC_SCF=7676
+cp;2F69;dm=767D;na=KANGXI RADICAL WHITE;NFKC_CF=767D;NFKC_SCF=767D
+cp;2F6A;dm=76AE;na=KANGXI RADICAL SKIN;NFKC_CF=76AE;NFKC_SCF=76AE
+cp;2F6B;dm=76BF;na=KANGXI RADICAL DISH;NFKC_CF=76BF;NFKC_SCF=76BF
+cp;2F6C;dm=76EE;na=KANGXI RADICAL EYE;NFKC_CF=76EE;NFKC_SCF=76EE
+cp;2F6D;dm=77DB;na=KANGXI RADICAL SPEAR;NFKC_CF=77DB;NFKC_SCF=77DB
+cp;2F6E;dm=77E2;na=KANGXI RADICAL ARROW;NFKC_CF=77E2;NFKC_SCF=77E2
+cp;2F6F;dm=77F3;na=KANGXI RADICAL STONE;NFKC_CF=77F3;NFKC_SCF=77F3
+cp;2F70;dm=793A;na=KANGXI RADICAL SPIRIT;NFKC_CF=793A;NFKC_SCF=793A
+cp;2F71;dm=79B8;na=KANGXI RADICAL TRACK;NFKC_CF=79B8;NFKC_SCF=79B8
+cp;2F72;dm=79BE;na=KANGXI RADICAL GRAIN;NFKC_CF=79BE;NFKC_SCF=79BE
+cp;2F73;dm=7A74;na=KANGXI RADICAL CAVE;NFKC_CF=7A74;NFKC_SCF=7A74
+cp;2F74;dm=7ACB;na=KANGXI RADICAL STAND;NFKC_CF=7ACB;NFKC_SCF=7ACB
+cp;2F75;dm=7AF9;na=KANGXI RADICAL BAMBOO;NFKC_CF=7AF9;NFKC_SCF=7AF9
+cp;2F76;dm=7C73;na=KANGXI RADICAL RICE;NFKC_CF=7C73;NFKC_SCF=7C73
+cp;2F77;dm=7CF8;na=KANGXI RADICAL SILK;NFKC_CF=7CF8;NFKC_SCF=7CF8
+cp;2F78;dm=7F36;na=KANGXI RADICAL JAR;NFKC_CF=7F36;NFKC_SCF=7F36
+cp;2F79;dm=7F51;na=KANGXI RADICAL NET;NFKC_CF=7F51;NFKC_SCF=7F51
+cp;2F7A;dm=7F8A;na=KANGXI RADICAL SHEEP;NFKC_CF=7F8A;NFKC_SCF=7F8A
+cp;2F7B;dm=7FBD;na=KANGXI RADICAL FEATHER;NFKC_CF=7FBD;NFKC_SCF=7FBD
+cp;2F7C;dm=8001;na=KANGXI RADICAL OLD;NFKC_CF=8001;NFKC_SCF=8001
+cp;2F7D;dm=800C;na=KANGXI RADICAL AND;NFKC_CF=800C;NFKC_SCF=800C
+cp;2F7E;dm=8012;na=KANGXI RADICAL PLOW;NFKC_CF=8012;NFKC_SCF=8012
+cp;2F7F;dm=8033;na=KANGXI RADICAL EAR;NFKC_CF=8033;NFKC_SCF=8033
+cp;2F80;dm=807F;na=KANGXI RADICAL BRUSH;NFKC_CF=807F;NFKC_SCF=807F
+cp;2F81;dm=8089;na=KANGXI RADICAL MEAT;NFKC_CF=8089;NFKC_SCF=8089
+cp;2F82;dm=81E3;na=KANGXI RADICAL MINISTER;NFKC_CF=81E3;NFKC_SCF=81E3
+cp;2F83;dm=81EA;na=KANGXI RADICAL SELF;NFKC_CF=81EA;NFKC_SCF=81EA
+cp;2F84;dm=81F3;na=KANGXI RADICAL ARRIVE;NFKC_CF=81F3;NFKC_SCF=81F3
+cp;2F85;dm=81FC;na=KANGXI RADICAL MORTAR;NFKC_CF=81FC;NFKC_SCF=81FC
+cp;2F86;dm=820C;na=KANGXI RADICAL TONGUE;NFKC_CF=820C;NFKC_SCF=820C
+cp;2F87;dm=821B;na=KANGXI RADICAL OPPOSE;NFKC_CF=821B;NFKC_SCF=821B
+cp;2F88;dm=821F;na=KANGXI RADICAL BOAT;NFKC_CF=821F;NFKC_SCF=821F
+cp;2F89;dm=826E;na=KANGXI RADICAL STOPPING;NFKC_CF=826E;NFKC_SCF=826E
+cp;2F8A;dm=8272;na=KANGXI RADICAL COLOR;NFKC_CF=8272;NFKC_SCF=8272
+cp;2F8B;dm=8278;na=KANGXI RADICAL GRASS;NFKC_CF=8278;NFKC_SCF=8278
+cp;2F8C;dm=864D;na=KANGXI RADICAL TIGER;NFKC_CF=864D;NFKC_SCF=864D
+cp;2F8D;dm=866B;na=KANGXI RADICAL INSECT;NFKC_CF=866B;NFKC_SCF=866B
+cp;2F8E;dm=8840;na=KANGXI RADICAL BLOOD;NFKC_CF=8840;NFKC_SCF=8840
+cp;2F8F;dm=884C;na=KANGXI RADICAL WALK ENCLOSURE;NFKC_CF=884C;NFKC_SCF=884C
+cp;2F90;dm=8863;na=KANGXI RADICAL CLOTHES;NFKC_CF=8863;NFKC_SCF=8863
+cp;2F91;dm=897E;na=KANGXI RADICAL WEST;NFKC_CF=897E;NFKC_SCF=897E
+cp;2F92;dm=898B;na=KANGXI RADICAL SEE;NFKC_CF=898B;NFKC_SCF=898B
+cp;2F93;dm=89D2;na=KANGXI RADICAL HORN;NFKC_CF=89D2;NFKC_SCF=89D2
+cp;2F94;dm=8A00;na=KANGXI RADICAL SPEECH;NFKC_CF=8A00;NFKC_SCF=8A00
+cp;2F95;dm=8C37;na=KANGXI RADICAL VALLEY;NFKC_CF=8C37;NFKC_SCF=8C37
+cp;2F96;dm=8C46;na=KANGXI RADICAL BEAN;NFKC_CF=8C46;NFKC_SCF=8C46
+cp;2F97;dm=8C55;na=KANGXI RADICAL PIG;NFKC_CF=8C55;NFKC_SCF=8C55
+cp;2F98;dm=8C78;na=KANGXI RADICAL BADGER;NFKC_CF=8C78;NFKC_SCF=8C78
+cp;2F99;dm=8C9D;na=KANGXI RADICAL SHELL;NFKC_CF=8C9D;NFKC_SCF=8C9D
+cp;2F9A;dm=8D64;na=KANGXI RADICAL RED;NFKC_CF=8D64;NFKC_SCF=8D64
+cp;2F9B;dm=8D70;na=KANGXI RADICAL RUN;NFKC_CF=8D70;NFKC_SCF=8D70
+cp;2F9C;dm=8DB3;na=KANGXI RADICAL FOOT;NFKC_CF=8DB3;NFKC_SCF=8DB3
+cp;2F9D;dm=8EAB;na=KANGXI RADICAL BODY;NFKC_CF=8EAB;NFKC_SCF=8EAB
+cp;2F9E;dm=8ECA;na=KANGXI RADICAL CART;NFKC_CF=8ECA;NFKC_SCF=8ECA
+cp;2F9F;dm=8F9B;na=KANGXI RADICAL BITTER;NFKC_CF=8F9B;NFKC_SCF=8F9B
+cp;2FA0;dm=8FB0;na=KANGXI RADICAL MORNING;NFKC_CF=8FB0;NFKC_SCF=8FB0
+cp;2FA1;dm=8FB5;na=KANGXI RADICAL WALK;NFKC_CF=8FB5;NFKC_SCF=8FB5
+cp;2FA2;dm=9091;na=KANGXI RADICAL CITY;NFKC_CF=9091;NFKC_SCF=9091
+cp;2FA3;dm=9149;na=KANGXI RADICAL WINE;NFKC_CF=9149;NFKC_SCF=9149
+cp;2FA4;dm=91C6;na=KANGXI RADICAL DISTINGUISH;NFKC_CF=91C6;NFKC_SCF=91C6
+cp;2FA5;dm=91CC;na=KANGXI RADICAL VILLAGE;NFKC_CF=91CC;NFKC_SCF=91CC
+cp;2FA6;dm=91D1;na=KANGXI RADICAL GOLD;NFKC_CF=91D1;NFKC_SCF=91D1
+cp;2FA7;dm=9577;na=KANGXI RADICAL LONG;NFKC_CF=9577;NFKC_SCF=9577
+cp;2FA8;dm=9580;na=KANGXI RADICAL GATE;NFKC_CF=9580;NFKC_SCF=9580
+cp;2FA9;dm=961C;na=KANGXI RADICAL MOUND;NFKC_CF=961C;NFKC_SCF=961C
+cp;2FAA;dm=96B6;na=KANGXI RADICAL SLAVE;NFKC_CF=96B6;NFKC_SCF=96B6
+cp;2FAB;dm=96B9;na=KANGXI RADICAL SHORT TAILED BIRD;NFKC_CF=96B9;NFKC_SCF=96B9
+cp;2FAC;dm=96E8;na=KANGXI RADICAL RAIN;NFKC_CF=96E8;NFKC_SCF=96E8
+cp;2FAD;dm=9751;na=KANGXI RADICAL BLUE;NFKC_CF=9751;NFKC_SCF=9751
+cp;2FAE;dm=975E;na=KANGXI RADICAL WRONG;NFKC_CF=975E;NFKC_SCF=975E
+cp;2FAF;dm=9762;na=KANGXI RADICAL FACE;NFKC_CF=9762;NFKC_SCF=9762
+cp;2FB0;dm=9769;na=KANGXI RADICAL LEATHER;NFKC_CF=9769;NFKC_SCF=9769
+cp;2FB1;dm=97CB;na=KANGXI RADICAL TANNED LEATHER;NFKC_CF=97CB;NFKC_SCF=97CB
+cp;2FB2;dm=97ED;na=KANGXI RADICAL LEEK;NFKC_CF=97ED;NFKC_SCF=97ED
+cp;2FB3;dm=97F3;na=KANGXI RADICAL SOUND;NFKC_CF=97F3;NFKC_SCF=97F3
+cp;2FB4;dm=9801;na=KANGXI RADICAL LEAF;NFKC_CF=9801;NFKC_SCF=9801
+cp;2FB5;dm=98A8;na=KANGXI RADICAL WIND;NFKC_CF=98A8;NFKC_SCF=98A8
+cp;2FB6;dm=98DB;na=KANGXI RADICAL FLY;NFKC_CF=98DB;NFKC_SCF=98DB
+cp;2FB7;dm=98DF;na=KANGXI RADICAL EAT;NFKC_CF=98DF;NFKC_SCF=98DF
+cp;2FB8;dm=9996;na=KANGXI RADICAL HEAD;NFKC_CF=9996;NFKC_SCF=9996
+cp;2FB9;dm=9999;na=KANGXI RADICAL FRAGRANT;NFKC_CF=9999;NFKC_SCF=9999
+cp;2FBA;dm=99AC;na=KANGXI RADICAL HORSE;NFKC_CF=99AC;NFKC_SCF=99AC
+cp;2FBB;dm=9AA8;na=KANGXI RADICAL BONE;NFKC_CF=9AA8;NFKC_SCF=9AA8
+cp;2FBC;dm=9AD8;na=KANGXI RADICAL TALL;NFKC_CF=9AD8;NFKC_SCF=9AD8
+cp;2FBD;dm=9ADF;na=KANGXI RADICAL HAIR;NFKC_CF=9ADF;NFKC_SCF=9ADF
+cp;2FBE;dm=9B25;na=KANGXI RADICAL FIGHT;NFKC_CF=9B25;NFKC_SCF=9B25
+cp;2FBF;dm=9B2F;na=KANGXI RADICAL SACRIFICIAL WINE;NFKC_CF=9B2F;NFKC_SCF=9B2F
+cp;2FC0;dm=9B32;na=KANGXI RADICAL CAULDRON;NFKC_CF=9B32;NFKC_SCF=9B32
+cp;2FC1;dm=9B3C;na=KANGXI RADICAL GHOST;NFKC_CF=9B3C;NFKC_SCF=9B3C
+cp;2FC2;dm=9B5A;na=KANGXI RADICAL FISH;NFKC_CF=9B5A;NFKC_SCF=9B5A
+cp;2FC3;dm=9CE5;na=KANGXI RADICAL BIRD;NFKC_CF=9CE5;NFKC_SCF=9CE5
+cp;2FC4;dm=9E75;na=KANGXI RADICAL SALT;NFKC_CF=9E75;NFKC_SCF=9E75
+cp;2FC5;dm=9E7F;na=KANGXI RADICAL DEER;NFKC_CF=9E7F;NFKC_SCF=9E7F
+cp;2FC6;dm=9EA5;na=KANGXI RADICAL WHEAT;NFKC_CF=9EA5;NFKC_SCF=9EA5
+cp;2FC7;dm=9EBB;na=KANGXI RADICAL HEMP;NFKC_CF=9EBB;NFKC_SCF=9EBB
+cp;2FC8;dm=9EC3;na=KANGXI RADICAL YELLOW;NFKC_CF=9EC3;NFKC_SCF=9EC3
+cp;2FC9;dm=9ECD;na=KANGXI RADICAL MILLET;NFKC_CF=9ECD;NFKC_SCF=9ECD
+cp;2FCA;dm=9ED1;na=KANGXI RADICAL BLACK;NFKC_CF=9ED1;NFKC_SCF=9ED1
+cp;2FCB;dm=9EF9;na=KANGXI RADICAL EMBROIDERY;NFKC_CF=9EF9;NFKC_SCF=9EF9
+cp;2FCC;dm=9EFD;na=KANGXI RADICAL FROG;NFKC_CF=9EFD;NFKC_SCF=9EFD
+cp;2FCD;dm=9F0E;na=KANGXI RADICAL TRIPOD;NFKC_CF=9F0E;NFKC_SCF=9F0E
+cp;2FCE;dm=9F13;na=KANGXI RADICAL DRUM;NFKC_CF=9F13;NFKC_SCF=9F13
+cp;2FCF;dm=9F20;na=KANGXI RADICAL RAT;NFKC_CF=9F20;NFKC_SCF=9F20
+cp;2FD0;dm=9F3B;na=KANGXI RADICAL NOSE;NFKC_CF=9F3B;NFKC_SCF=9F3B
+cp;2FD1;dm=9F4A;na=KANGXI RADICAL EVEN;NFKC_CF=9F4A;NFKC_SCF=9F4A
+cp;2FD2;dm=9F52;na=KANGXI RADICAL TOOTH;NFKC_CF=9F52;NFKC_SCF=9F52
+cp;2FD3;dm=9F8D;na=KANGXI RADICAL DRAGON;NFKC_CF=9F8D;NFKC_SCF=9F8D
+cp;2FD4;dm=9F9C;na=KANGXI RADICAL TURTLE;NFKC_CF=9F9C;NFKC_SCF=9F9C
+cp;2FD5;dm=9FA0;na=KANGXI RADICAL FLUTE;NFKC_CF=9FA0;NFKC_SCF=9FA0
unassigned;2FD6..2FDF;vo=U
# No block
@@ -14200,12 +14217,15 @@ cp;2FF8;na=IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT
cp;2FF9;na=IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT
cp;2FFA;na=IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT
cp;2FFB;na=IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID
-unassigned;2FFC..2FFF;vo=U
+cp;2FFC;age=15.1;na=IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM RIGHT
+cp;2FFD;age=15.1;na=IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER RIGHT
+cp;2FFE;age=15.1;-IDSB;IDSU;na=IDEOGRAPHIC DESCRIPTION CHARACTER HORIZONTAL REFLECTION
+cp;2FFF;age=15.1;-IDSB;IDSU;na=IDEOGRAPHIC DESCRIPTION CHARACTER ROTATION
block;3000..303F;age=1.1;bc=ON;blk=CJK_Symbols;ea=W;gc=Nl;Gr_Base;lb=ID;SB=LE;sc=Zyyy;scx=Bopo Hang Hani Hira Kana Yiii;vo=U
# 3000..303F CJK Symbols and Punctuation
# CJK symbols and punctuation
-cp;3000;bc=WS;CWKCF;dm=0020;dt=Wide;ea=F;gc=Zs;lb=BA;na=IDEOGRAPHIC SPACE;NFKC_CF=0020;NFKC_QC=N;NFKD_QC=N;SB=SP;scx=<script>;WB=WSegSpace;WSpace
+cp;3000;bc=WS;CWKCF;dm=0020;dt=Wide;ea=F;gc=Zs;lb=BA;na=IDEOGRAPHIC SPACE;NFKC_CF=0020;NFKC_QC=N;NFKC_SCF=0020;NFKD_QC=N;SB=SP;scx=<script>;WB=WSegSpace;WSpace
cp;3001;gc=Po;lb=CL;na=IDEOGRAPHIC COMMA;Pat_Syn;SB=SC;Term;vo=Tu
cp;3002;gc=Po;lb=CL;na=IDEOGRAPHIC FULL STOP;Pat_Syn;SB=ST;STerm;Term;vo=Tu
cp;3003;gc=Po;na=DITTO MARK;Pat_Syn;SB=XX;scx=Bopo Hang Hani Hira Kana
@@ -14256,12 +14276,12 @@ cp;3027;Alpha;bc=L;IDC;Ideo;IDS;na=HANGZHOU NUMERAL SEVEN;nt=Nu;nv=7;sc=Hani;scx
cp;3028;Alpha;bc=L;IDC;Ideo;IDS;na=HANGZHOU NUMERAL EIGHT;nt=Nu;nv=8;sc=Hani;scx=<script>;XIDC;XIDS
cp;3029;Alpha;bc=L;IDC;Ideo;IDS;na=HANGZHOU NUMERAL NINE;nt=Nu;nv=9;sc=Hani;scx=<script>;XIDC;XIDS
# Combining tone marks
-cp;302A;bc=NSM;ccc=218;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=IDEOGRAPHIC LEVEL TONE MARK;SB=EX;sc=Zinh;scx=Bopo Hani;WB=Extend;XIDC
-cp;302B;bc=NSM;ccc=228;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=IDEOGRAPHIC RISING TONE MARK;SB=EX;sc=Zinh;scx=Bopo Hani;WB=Extend;XIDC
-cp;302C;bc=NSM;ccc=232;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=IDEOGRAPHIC DEPARTING TONE MARK;SB=EX;sc=Zinh;scx=Bopo Hani;WB=Extend;XIDC
-cp;302D;bc=NSM;ccc=222;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=IDEOGRAPHIC ENTERING TONE MARK;SB=EX;sc=Zinh;scx=Bopo Hani;WB=Extend;XIDC
-cp;302E;bc=L;ccc=224;Dia;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;IDC;lb=CM;na=HANGUL SINGLE DOT TONE MARK;SB=EX;sc=Hang;scx=<script>;WB=Extend;XIDC
-cp;302F;bc=L;ccc=224;Dia;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;IDC;lb=CM;na=HANGUL DOUBLE DOT TONE MARK;SB=EX;sc=Hang;scx=<script>;WB=Extend;XIDC
+cp;302A;bc=NSM;ccc=218;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=IDEOGRAPHIC LEVEL TONE MARK;SB=EX;sc=Zinh;scx=Bopo Hani;WB=Extend;XIDC
+cp;302B;bc=NSM;ccc=228;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=IDEOGRAPHIC RISING TONE MARK;SB=EX;sc=Zinh;scx=Bopo Hani;WB=Extend;XIDC
+cp;302C;bc=NSM;ccc=232;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=IDEOGRAPHIC DEPARTING TONE MARK;SB=EX;sc=Zinh;scx=Bopo Hani;WB=Extend;XIDC
+cp;302D;bc=NSM;ccc=222;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=IDEOGRAPHIC ENTERING TONE MARK;SB=EX;sc=Zinh;scx=Bopo Hani;WB=Extend;XIDC
+cp;302E;bc=L;ccc=224;Dia;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;lb=CM;na=HANGUL SINGLE DOT TONE MARK;SB=EX;sc=Hang;scx=<script>;WB=Extend;XIDC
+cp;302F;bc=L;ccc=224;Dia;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;lb=CM;na=HANGUL DOUBLE DOT TONE MARK;SB=EX;sc=Hang;scx=<script>;WB=Extend;XIDC
# Other CJK punctuation
cp;3030;Dash;Emoji;ExtPict;gc=Pd;na=WAVY DASH;Pat_Syn;SB=XX;scx=Bopo Hang Hani Hira Kana;vo=Tr
# Kana repeat marks
@@ -14271,12 +14291,12 @@ cp;3033;Alpha;bc=L;CI;Ext;gc=Lm;IDC;IDS;na=VERTICAL KANA REPEAT MARK UPPER HALF;
cp;3034;Alpha;bc=L;CI;Ext;gc=Lm;IDC;IDS;na=VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF;scx=Hira Kana;WB=KA;XIDC;XIDS
cp;3035;Alpha;bc=L;CI;Ext;gc=Lm;IDC;IDS;lb=CM;na=VERTICAL KANA REPEAT MARK LOWER HALF;scx=Hira Kana;WB=KA;XIDC;XIDS
# Other CJK symbols
-cp;3036;CWKCF;dm=3012;dt=Com;gc=So;na=CIRCLED POSTAL MARK;NFKC_CF=3012;NFKC_QC=N;NFKD_QC=N;SB=XX;scx=<script>
+cp;3036;CWKCF;dm=3012;dt=Com;gc=So;na=CIRCLED POSTAL MARK;NFKC_CF=3012;NFKC_QC=N;NFKC_SCF=3012;NFKD_QC=N;SB=XX;scx=<script>
cp;3037;gc=So;na=IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL;SB=XX;scx=Bopo Hang Hani Hira Kana
# Additional Suzhou numerals
-cp;3038;age=3.0;Alpha;bc=L;CWKCF;dm=5341;dt=Com;IDC;Ideo;IDS;na=HANGZHOU NUMERAL TEN;NFKC_CF=5341;NFKC_QC=N;NFKD_QC=N;nt=Nu;nv=10;sc=Hani;scx=<script>;XIDC;XIDS
-cp;3039;age=3.0;Alpha;bc=L;CWKCF;dm=5344;dt=Com;IDC;Ideo;IDS;na=HANGZHOU NUMERAL TWENTY;NFKC_CF=5344;NFKC_QC=N;NFKD_QC=N;nt=Nu;nv=20;sc=Hani;scx=<script>;XIDC;XIDS
-cp;303A;age=3.0;Alpha;bc=L;CWKCF;dm=5345;dt=Com;IDC;Ideo;IDS;na=HANGZHOU NUMERAL THIRTY;NFKC_CF=5345;NFKC_QC=N;NFKD_QC=N;nt=Nu;nv=30;sc=Hani;scx=<script>;XIDC;XIDS
+cp;3038;age=3.0;Alpha;bc=L;CWKCF;dm=5341;dt=Com;IDC;Ideo;IDS;na=HANGZHOU NUMERAL TEN;NFKC_CF=5341;NFKC_QC=N;NFKC_SCF=5341;NFKD_QC=N;nt=Nu;nv=10;sc=Hani;scx=<script>;XIDC;XIDS
+cp;3039;age=3.0;Alpha;bc=L;CWKCF;dm=5344;dt=Com;IDC;Ideo;IDS;na=HANGZHOU NUMERAL TWENTY;NFKC_CF=5344;NFKC_QC=N;NFKC_SCF=5344;NFKD_QC=N;nt=Nu;nv=20;sc=Hani;scx=<script>;XIDC;XIDS
+cp;303A;age=3.0;Alpha;bc=L;CWKCF;dm=5345;dt=Com;IDC;Ideo;IDS;na=HANGZHOU NUMERAL THIRTY;NFKC_CF=5345;NFKC_QC=N;NFKC_SCF=5345;NFKD_QC=N;nt=Nu;nv=30;sc=Hani;scx=<script>;XIDC;XIDS
# Other CJK punctuation
cp;303B;age=3.2;Alpha;bc=L;CI;gc=Lm;IDC;IDS;lb=NS;na=VERTICAL IDEOGRAPHIC ITERATION MARK;sc=Hani;scx=<script>;WB=LE;XIDC;XIDS
cp;303C;age=3.2;Alpha;bc=L;gc=Lo;IDC;IDS;lb=NS;na=MASU MARK;scx=Hani Hira Kana;WB=LE;XIDC;XIDS
@@ -14378,15 +14398,15 @@ cp;3095;age=3.2;lb=CJ;na=HIRAGANA LETTER SMALL KA;vo=Tu
cp;3096;age=3.2;lb=CJ;na=HIRAGANA LETTER SMALL KE;vo=Tu
unassigned;3097..3098;vo=U
# Voicing marks
-cp;3099;-Alpha;bc=NSM;ccc=8;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK;NFC_QC=M;NFKC_QC=M;SB=EX;sc=Zinh;scx=Hira Kana;WB=Extend;-XIDS
-cp;309A;-Alpha;bc=NSM;ccc=8;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;NFC_QC=M;NFKC_QC=M;SB=EX;sc=Zinh;scx=Hira Kana;WB=Extend;-XIDS
-cp;309B;-Alpha;bc=ON;CI;CWKCF;Dia;dm=0020 3099;dt=Com;gc=Sk;lb=NS;na=KATAKANA-HIRAGANA VOICED SOUND MARK;NFKC_CF=0020 3099;NFKC_QC=N;NFKD_QC=N;SB=XX;sc=Zyyy;scx=Hira Kana;vo=Tu;WB=KA;-XIDC;-XIDS
-cp;309C;-Alpha;bc=ON;CI;CWKCF;Dia;dm=0020 309A;dt=Com;gc=Sk;lb=NS;na=KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;NFKC_CF=0020 309A;NFKC_QC=N;NFKD_QC=N;SB=XX;sc=Zyyy;scx=Hira Kana;vo=Tu;WB=KA;-XIDC;-XIDS
+cp;3099;-Alpha;bc=NSM;ccc=8;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK;NFC_QC=M;NFKC_QC=M;SB=EX;sc=Zinh;scx=Hira Kana;WB=Extend;-XIDS
+cp;309A;-Alpha;bc=NSM;ccc=8;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;NFC_QC=M;NFKC_QC=M;SB=EX;sc=Zinh;scx=Hira Kana;WB=Extend;-XIDS
+cp;309B;-Alpha;bc=ON;CI;CWKCF;Dia;dm=0020 3099;dt=Com;gc=Sk;lb=NS;na=KATAKANA-HIRAGANA VOICED SOUND MARK;NFKC_CF=0020 3099;NFKC_QC=N;NFKC_SCF=0020 3099;NFKD_QC=N;SB=XX;sc=Zyyy;scx=Hira Kana;vo=Tu;WB=KA;-XIDC;-XIDS
+cp;309C;-Alpha;bc=ON;CI;CWKCF;Dia;dm=0020 309A;dt=Com;gc=Sk;lb=NS;na=KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;NFKC_CF=0020 309A;NFKC_QC=N;NFKC_SCF=0020 309A;NFKD_QC=N;SB=XX;sc=Zyyy;scx=Hira Kana;vo=Tu;WB=KA;-XIDC;-XIDS
# Iteration marks
cp;309D;CI;Ext;gc=Lm;lb=NS;na=HIRAGANA ITERATION MARK
cp;309E;CI;dm=309D 3099;dt=Can;Ext;gc=Lm;lb=NS;na=HIRAGANA VOICED ITERATION MARK;NFD_QC=N;NFKD_QC=N
# Hiragana digraph
-cp;309F;age=3.2;CWKCF;dm=3088 308A;dt=Vert;na=HIRAGANA DIGRAPH YORI;NFKC_CF=3088 308A;NFKC_QC=N;NFKD_QC=N
+cp;309F;age=3.2;CWKCF;dm=3088 308A;dt=Vert;na=HIRAGANA DIGRAPH YORI;NFKC_CF=3088 308A;NFKC_QC=N;NFKC_SCF=3088 308A;NFKD_QC=N
block;30A0..30FF;age=1.1;Alpha;blk=Katakana;ea=W;gc=Lo;Gr_Base;IDC;IDS;lb=ID;SB=LE;sc=Kana;vo=U;WB=KA;XIDC;XIDS
# 30A0..30FF Katakana
@@ -14484,13 +14504,13 @@ cp;30F8;dm=30F0 3099;dt=Can;na=KATAKANA LETTER VI;NFD_QC=N;NFKD_QC=N
cp;30F9;dm=30F1 3099;dt=Can;na=KATAKANA LETTER VE;NFD_QC=N;NFKD_QC=N
cp;30FA;dm=30F2 3099;dt=Can;na=KATAKANA LETTER VO;NFD_QC=N;NFKD_QC=N
# Conjunction and length marks
-cp;30FB;-Alpha;bc=ON;gc=Po;Hyphen;-IDC;-IDS;lb=NS;na=KATAKANA MIDDLE DOT;SB=XX;sc=Zyyy;scx=Bopo Hang Hani Hira Kana Yiii;WB=XX;-XIDC;-XIDS
+cp;30FB;-Alpha;bc=ON;gc=Po;Hyphen;-IDS;lb=NS;na=KATAKANA MIDDLE DOT;SB=XX;sc=Zyyy;scx=Bopo Hang Hani Hira Kana Yiii;WB=XX;-XIDS
cp;30FC;CI;Dia;Ext;gc=Lm;lb=CJ;na=KATAKANA-HIRAGANA PROLONGED SOUND MARK;sc=Zyyy;scx=Hira Kana;vo=Tr
# Iteration marks
cp;30FD;CI;Ext;gc=Lm;lb=NS;na=KATAKANA ITERATION MARK
cp;30FE;CI;dm=30FD 3099;dt=Can;Ext;gc=Lm;lb=NS;na=KATAKANA VOICED ITERATION MARK;NFD_QC=N;NFKD_QC=N
# Katakana digraph
-cp;30FF;age=3.2;CWKCF;dm=30B3 30C8;dt=Vert;na=KATAKANA DIGRAPH KOTO;NFKC_CF=30B3 30C8;NFKC_QC=N;NFKD_QC=N
+cp;30FF;age=3.2;CWKCF;dm=30B3 30C8;dt=Vert;na=KATAKANA DIGRAPH KOTO;NFKC_CF=30B3 30C8;NFKC_QC=N;NFKC_SCF=30B3 30C8;NFKD_QC=N
block;3100..312F;age=1.1;Alpha;blk=Bopomofo;ea=W;gc=Lo;Gr_Base;IDC;IDS;lb=ID;SB=LE;sc=Bopo;vo=U;WB=LE;XIDC;XIDS
# 3100..312F Bopomofo
@@ -14546,104 +14566,104 @@ block;3130..318F;age=1.1;Alpha;blk=Compat_Jamo;CWKCF;dt=Com;ea=W;gc=Lo;Gr_Base;I
# 3130..318F Hangul Compatibility Jamo
unassigned;3130;vo=U
# Consonant letters
-cp;3131;dm=1100;na=HANGUL LETTER KIYEOK;NFKC_CF=1100
-cp;3132;dm=1101;na=HANGUL LETTER SSANGKIYEOK;NFKC_CF=1101
-cp;3133;dm=11AA;na=HANGUL LETTER KIYEOK-SIOS;NFKC_CF=11AA
-cp;3134;dm=1102;na=HANGUL LETTER NIEUN;NFKC_CF=1102
-cp;3135;dm=11AC;na=HANGUL LETTER NIEUN-CIEUC;NFKC_CF=11AC
-cp;3136;dm=11AD;na=HANGUL LETTER NIEUN-HIEUH;NFKC_CF=11AD
-cp;3137;dm=1103;na=HANGUL LETTER TIKEUT;NFKC_CF=1103
-cp;3138;dm=1104;na=HANGUL LETTER SSANGTIKEUT;NFKC_CF=1104
-cp;3139;dm=1105;na=HANGUL LETTER RIEUL;NFKC_CF=1105
-cp;313A;dm=11B0;na=HANGUL LETTER RIEUL-KIYEOK;NFKC_CF=11B0
-cp;313B;dm=11B1;na=HANGUL LETTER RIEUL-MIEUM;NFKC_CF=11B1
-cp;313C;dm=11B2;na=HANGUL LETTER RIEUL-PIEUP;NFKC_CF=11B2
-cp;313D;dm=11B3;na=HANGUL LETTER RIEUL-SIOS;NFKC_CF=11B3
-cp;313E;dm=11B4;na=HANGUL LETTER RIEUL-THIEUTH;NFKC_CF=11B4
-cp;313F;dm=11B5;na=HANGUL LETTER RIEUL-PHIEUPH;NFKC_CF=11B5
-cp;3140;dm=111A;na=HANGUL LETTER RIEUL-HIEUH;NFKC_CF=111A
-cp;3141;dm=1106;na=HANGUL LETTER MIEUM;NFKC_CF=1106
-cp;3142;dm=1107;na=HANGUL LETTER PIEUP;NFKC_CF=1107
-cp;3143;dm=1108;na=HANGUL LETTER SSANGPIEUP;NFKC_CF=1108
-cp;3144;dm=1121;na=HANGUL LETTER PIEUP-SIOS;NFKC_CF=1121
-cp;3145;dm=1109;na=HANGUL LETTER SIOS;NFKC_CF=1109
-cp;3146;dm=110A;na=HANGUL LETTER SSANGSIOS;NFKC_CF=110A
-cp;3147;dm=110B;na=HANGUL LETTER IEUNG;NFKC_CF=110B
-cp;3148;dm=110C;na=HANGUL LETTER CIEUC;NFKC_CF=110C
-cp;3149;dm=110D;na=HANGUL LETTER SSANGCIEUC;NFKC_CF=110D
-cp;314A;dm=110E;na=HANGUL LETTER CHIEUCH;NFKC_CF=110E
-cp;314B;dm=110F;na=HANGUL LETTER KHIEUKH;NFKC_CF=110F
-cp;314C;dm=1110;na=HANGUL LETTER THIEUTH;NFKC_CF=1110
-cp;314D;dm=1111;na=HANGUL LETTER PHIEUPH;NFKC_CF=1111
-cp;314E;dm=1112;na=HANGUL LETTER HIEUH;NFKC_CF=1112
+cp;3131;dm=1100;na=HANGUL LETTER KIYEOK;NFKC_CF=1100;NFKC_SCF=1100
+cp;3132;dm=1101;na=HANGUL LETTER SSANGKIYEOK;NFKC_CF=1101;NFKC_SCF=1101
+cp;3133;dm=11AA;na=HANGUL LETTER KIYEOK-SIOS;NFKC_CF=11AA;NFKC_SCF=11AA
+cp;3134;dm=1102;na=HANGUL LETTER NIEUN;NFKC_CF=1102;NFKC_SCF=1102
+cp;3135;dm=11AC;na=HANGUL LETTER NIEUN-CIEUC;NFKC_CF=11AC;NFKC_SCF=11AC
+cp;3136;dm=11AD;na=HANGUL LETTER NIEUN-HIEUH;NFKC_CF=11AD;NFKC_SCF=11AD
+cp;3137;dm=1103;na=HANGUL LETTER TIKEUT;NFKC_CF=1103;NFKC_SCF=1103
+cp;3138;dm=1104;na=HANGUL LETTER SSANGTIKEUT;NFKC_CF=1104;NFKC_SCF=1104
+cp;3139;dm=1105;na=HANGUL LETTER RIEUL;NFKC_CF=1105;NFKC_SCF=1105
+cp;313A;dm=11B0;na=HANGUL LETTER RIEUL-KIYEOK;NFKC_CF=11B0;NFKC_SCF=11B0
+cp;313B;dm=11B1;na=HANGUL LETTER RIEUL-MIEUM;NFKC_CF=11B1;NFKC_SCF=11B1
+cp;313C;dm=11B2;na=HANGUL LETTER RIEUL-PIEUP;NFKC_CF=11B2;NFKC_SCF=11B2
+cp;313D;dm=11B3;na=HANGUL LETTER RIEUL-SIOS;NFKC_CF=11B3;NFKC_SCF=11B3
+cp;313E;dm=11B4;na=HANGUL LETTER RIEUL-THIEUTH;NFKC_CF=11B4;NFKC_SCF=11B4
+cp;313F;dm=11B5;na=HANGUL LETTER RIEUL-PHIEUPH;NFKC_CF=11B5;NFKC_SCF=11B5
+cp;3140;dm=111A;na=HANGUL LETTER RIEUL-HIEUH;NFKC_CF=111A;NFKC_SCF=111A
+cp;3141;dm=1106;na=HANGUL LETTER MIEUM;NFKC_CF=1106;NFKC_SCF=1106
+cp;3142;dm=1107;na=HANGUL LETTER PIEUP;NFKC_CF=1107;NFKC_SCF=1107
+cp;3143;dm=1108;na=HANGUL LETTER SSANGPIEUP;NFKC_CF=1108;NFKC_SCF=1108
+cp;3144;dm=1121;na=HANGUL LETTER PIEUP-SIOS;NFKC_CF=1121;NFKC_SCF=1121
+cp;3145;dm=1109;na=HANGUL LETTER SIOS;NFKC_CF=1109;NFKC_SCF=1109
+cp;3146;dm=110A;na=HANGUL LETTER SSANGSIOS;NFKC_CF=110A;NFKC_SCF=110A
+cp;3147;dm=110B;na=HANGUL LETTER IEUNG;NFKC_CF=110B;NFKC_SCF=110B
+cp;3148;dm=110C;na=HANGUL LETTER CIEUC;NFKC_CF=110C;NFKC_SCF=110C
+cp;3149;dm=110D;na=HANGUL LETTER SSANGCIEUC;NFKC_CF=110D;NFKC_SCF=110D
+cp;314A;dm=110E;na=HANGUL LETTER CHIEUCH;NFKC_CF=110E;NFKC_SCF=110E
+cp;314B;dm=110F;na=HANGUL LETTER KHIEUKH;NFKC_CF=110F;NFKC_SCF=110F
+cp;314C;dm=1110;na=HANGUL LETTER THIEUTH;NFKC_CF=1110;NFKC_SCF=1110
+cp;314D;dm=1111;na=HANGUL LETTER PHIEUPH;NFKC_CF=1111;NFKC_SCF=1111
+cp;314E;dm=1112;na=HANGUL LETTER HIEUH;NFKC_CF=1112;NFKC_SCF=1112
# Vowel letters
-cp;314F;dm=1161;na=HANGUL LETTER A;NFKC_CF=1161
-cp;3150;dm=1162;na=HANGUL LETTER AE;NFKC_CF=1162
-cp;3151;dm=1163;na=HANGUL LETTER YA;NFKC_CF=1163
-cp;3152;dm=1164;na=HANGUL LETTER YAE;NFKC_CF=1164
-cp;3153;dm=1165;na=HANGUL LETTER EO;NFKC_CF=1165
-cp;3154;dm=1166;na=HANGUL LETTER E;NFKC_CF=1166
-cp;3155;dm=1167;na=HANGUL LETTER YEO;NFKC_CF=1167
-cp;3156;dm=1168;na=HANGUL LETTER YE;NFKC_CF=1168
-cp;3157;dm=1169;na=HANGUL LETTER O;NFKC_CF=1169
-cp;3158;dm=116A;na=HANGUL LETTER WA;NFKC_CF=116A
-cp;3159;dm=116B;na=HANGUL LETTER WAE;NFKC_CF=116B
-cp;315A;dm=116C;na=HANGUL LETTER OE;NFKC_CF=116C
-cp;315B;dm=116D;na=HANGUL LETTER YO;NFKC_CF=116D
-cp;315C;dm=116E;na=HANGUL LETTER U;NFKC_CF=116E
-cp;315D;dm=116F;na=HANGUL LETTER WEO;NFKC_CF=116F
-cp;315E;dm=1170;na=HANGUL LETTER WE;NFKC_CF=1170
-cp;315F;dm=1171;na=HANGUL LETTER WI;NFKC_CF=1171
-cp;3160;dm=1172;na=HANGUL LETTER YU;NFKC_CF=1172
-cp;3161;dm=1173;na=HANGUL LETTER EU;NFKC_CF=1173
-cp;3162;dm=1174;na=HANGUL LETTER YI;NFKC_CF=1174
-cp;3163;dm=1175;na=HANGUL LETTER I;NFKC_CF=1175
+cp;314F;dm=1161;na=HANGUL LETTER A;NFKC_CF=1161;NFKC_SCF=1161
+cp;3150;dm=1162;na=HANGUL LETTER AE;NFKC_CF=1162;NFKC_SCF=1162
+cp;3151;dm=1163;na=HANGUL LETTER YA;NFKC_CF=1163;NFKC_SCF=1163
+cp;3152;dm=1164;na=HANGUL LETTER YAE;NFKC_CF=1164;NFKC_SCF=1164
+cp;3153;dm=1165;na=HANGUL LETTER EO;NFKC_CF=1165;NFKC_SCF=1165
+cp;3154;dm=1166;na=HANGUL LETTER E;NFKC_CF=1166;NFKC_SCF=1166
+cp;3155;dm=1167;na=HANGUL LETTER YEO;NFKC_CF=1167;NFKC_SCF=1167
+cp;3156;dm=1168;na=HANGUL LETTER YE;NFKC_CF=1168;NFKC_SCF=1168
+cp;3157;dm=1169;na=HANGUL LETTER O;NFKC_CF=1169;NFKC_SCF=1169
+cp;3158;dm=116A;na=HANGUL LETTER WA;NFKC_CF=116A;NFKC_SCF=116A
+cp;3159;dm=116B;na=HANGUL LETTER WAE;NFKC_CF=116B;NFKC_SCF=116B
+cp;315A;dm=116C;na=HANGUL LETTER OE;NFKC_CF=116C;NFKC_SCF=116C
+cp;315B;dm=116D;na=HANGUL LETTER YO;NFKC_CF=116D;NFKC_SCF=116D
+cp;315C;dm=116E;na=HANGUL LETTER U;NFKC_CF=116E;NFKC_SCF=116E
+cp;315D;dm=116F;na=HANGUL LETTER WEO;NFKC_CF=116F;NFKC_SCF=116F
+cp;315E;dm=1170;na=HANGUL LETTER WE;NFKC_CF=1170;NFKC_SCF=1170
+cp;315F;dm=1171;na=HANGUL LETTER WI;NFKC_CF=1171;NFKC_SCF=1171
+cp;3160;dm=1172;na=HANGUL LETTER YU;NFKC_CF=1172;NFKC_SCF=1172
+cp;3161;dm=1173;na=HANGUL LETTER EU;NFKC_CF=1173;NFKC_SCF=1173
+cp;3162;dm=1174;na=HANGUL LETTER YI;NFKC_CF=1174;NFKC_SCF=1174
+cp;3163;dm=1175;na=HANGUL LETTER I;NFKC_CF=1175;NFKC_SCF=1175
# Special character
-cp;3164;DI;dm=1160;na=HANGUL FILLER;NFKC_CF=
+cp;3164;DI;dm=1160;na=HANGUL FILLER;NFKC_CF=;NFKC_SCF=
# Old consonant letters
-cp;3165;dm=1114;na=HANGUL LETTER SSANGNIEUN;NFKC_CF=1114
-cp;3166;dm=1115;na=HANGUL LETTER NIEUN-TIKEUT;NFKC_CF=1115
-cp;3167;dm=11C7;na=HANGUL LETTER NIEUN-SIOS;NFKC_CF=11C7
-cp;3168;dm=11C8;na=HANGUL LETTER NIEUN-PANSIOS;NFKC_CF=11C8
-cp;3169;dm=11CC;na=HANGUL LETTER RIEUL-KIYEOK-SIOS;NFKC_CF=11CC
-cp;316A;dm=11CE;na=HANGUL LETTER RIEUL-TIKEUT;NFKC_CF=11CE
-cp;316B;dm=11D3;na=HANGUL LETTER RIEUL-PIEUP-SIOS;NFKC_CF=11D3
-cp;316C;dm=11D7;na=HANGUL LETTER RIEUL-PANSIOS;NFKC_CF=11D7
-cp;316D;dm=11D9;na=HANGUL LETTER RIEUL-YEORINHIEUH;NFKC_CF=11D9
-cp;316E;dm=111C;na=HANGUL LETTER MIEUM-PIEUP;NFKC_CF=111C
-cp;316F;dm=11DD;na=HANGUL LETTER MIEUM-SIOS;NFKC_CF=11DD
-cp;3170;dm=11DF;na=HANGUL LETTER MIEUM-PANSIOS;NFKC_CF=11DF
-cp;3171;dm=111D;na=HANGUL LETTER KAPYEOUNMIEUM;NFKC_CF=111D
-cp;3172;dm=111E;na=HANGUL LETTER PIEUP-KIYEOK;NFKC_CF=111E
-cp;3173;dm=1120;na=HANGUL LETTER PIEUP-TIKEUT;NFKC_CF=1120
-cp;3174;dm=1122;na=HANGUL LETTER PIEUP-SIOS-KIYEOK;NFKC_CF=1122
-cp;3175;dm=1123;na=HANGUL LETTER PIEUP-SIOS-TIKEUT;NFKC_CF=1123
-cp;3176;dm=1127;na=HANGUL LETTER PIEUP-CIEUC;NFKC_CF=1127
-cp;3177;dm=1129;na=HANGUL LETTER PIEUP-THIEUTH;NFKC_CF=1129
-cp;3178;dm=112B;na=HANGUL LETTER KAPYEOUNPIEUP;NFKC_CF=112B
-cp;3179;dm=112C;na=HANGUL LETTER KAPYEOUNSSANGPIEUP;NFKC_CF=112C
-cp;317A;dm=112D;na=HANGUL LETTER SIOS-KIYEOK;NFKC_CF=112D
-cp;317B;dm=112E;na=HANGUL LETTER SIOS-NIEUN;NFKC_CF=112E
-cp;317C;dm=112F;na=HANGUL LETTER SIOS-TIKEUT;NFKC_CF=112F
-cp;317D;dm=1132;na=HANGUL LETTER SIOS-PIEUP;NFKC_CF=1132
-cp;317E;dm=1136;na=HANGUL LETTER SIOS-CIEUC;NFKC_CF=1136
-cp;317F;dm=1140;na=HANGUL LETTER PANSIOS;NFKC_CF=1140
-cp;3180;dm=1147;na=HANGUL LETTER SSANGIEUNG;NFKC_CF=1147
-cp;3181;dm=114C;na=HANGUL LETTER YESIEUNG;NFKC_CF=114C
-cp;3182;dm=11F1;na=HANGUL LETTER YESIEUNG-SIOS;NFKC_CF=11F1
-cp;3183;dm=11F2;na=HANGUL LETTER YESIEUNG-PANSIOS;NFKC_CF=11F2
-cp;3184;dm=1157;na=HANGUL LETTER KAPYEOUNPHIEUPH;NFKC_CF=1157
-cp;3185;dm=1158;na=HANGUL LETTER SSANGHIEUH;NFKC_CF=1158
-cp;3186;dm=1159;na=HANGUL LETTER YEORINHIEUH;NFKC_CF=1159
+cp;3165;dm=1114;na=HANGUL LETTER SSANGNIEUN;NFKC_CF=1114;NFKC_SCF=1114
+cp;3166;dm=1115;na=HANGUL LETTER NIEUN-TIKEUT;NFKC_CF=1115;NFKC_SCF=1115
+cp;3167;dm=11C7;na=HANGUL LETTER NIEUN-SIOS;NFKC_CF=11C7;NFKC_SCF=11C7
+cp;3168;dm=11C8;na=HANGUL LETTER NIEUN-PANSIOS;NFKC_CF=11C8;NFKC_SCF=11C8
+cp;3169;dm=11CC;na=HANGUL LETTER RIEUL-KIYEOK-SIOS;NFKC_CF=11CC;NFKC_SCF=11CC
+cp;316A;dm=11CE;na=HANGUL LETTER RIEUL-TIKEUT;NFKC_CF=11CE;NFKC_SCF=11CE
+cp;316B;dm=11D3;na=HANGUL LETTER RIEUL-PIEUP-SIOS;NFKC_CF=11D3;NFKC_SCF=11D3
+cp;316C;dm=11D7;na=HANGUL LETTER RIEUL-PANSIOS;NFKC_CF=11D7;NFKC_SCF=11D7
+cp;316D;dm=11D9;na=HANGUL LETTER RIEUL-YEORINHIEUH;NFKC_CF=11D9;NFKC_SCF=11D9
+cp;316E;dm=111C;na=HANGUL LETTER MIEUM-PIEUP;NFKC_CF=111C;NFKC_SCF=111C
+cp;316F;dm=11DD;na=HANGUL LETTER MIEUM-SIOS;NFKC_CF=11DD;NFKC_SCF=11DD
+cp;3170;dm=11DF;na=HANGUL LETTER MIEUM-PANSIOS;NFKC_CF=11DF;NFKC_SCF=11DF
+cp;3171;dm=111D;na=HANGUL LETTER KAPYEOUNMIEUM;NFKC_CF=111D;NFKC_SCF=111D
+cp;3172;dm=111E;na=HANGUL LETTER PIEUP-KIYEOK;NFKC_CF=111E;NFKC_SCF=111E
+cp;3173;dm=1120;na=HANGUL LETTER PIEUP-TIKEUT;NFKC_CF=1120;NFKC_SCF=1120
+cp;3174;dm=1122;na=HANGUL LETTER PIEUP-SIOS-KIYEOK;NFKC_CF=1122;NFKC_SCF=1122
+cp;3175;dm=1123;na=HANGUL LETTER PIEUP-SIOS-TIKEUT;NFKC_CF=1123;NFKC_SCF=1123
+cp;3176;dm=1127;na=HANGUL LETTER PIEUP-CIEUC;NFKC_CF=1127;NFKC_SCF=1127
+cp;3177;dm=1129;na=HANGUL LETTER PIEUP-THIEUTH;NFKC_CF=1129;NFKC_SCF=1129
+cp;3178;dm=112B;na=HANGUL LETTER KAPYEOUNPIEUP;NFKC_CF=112B;NFKC_SCF=112B
+cp;3179;dm=112C;na=HANGUL LETTER KAPYEOUNSSANGPIEUP;NFKC_CF=112C;NFKC_SCF=112C
+cp;317A;dm=112D;na=HANGUL LETTER SIOS-KIYEOK;NFKC_CF=112D;NFKC_SCF=112D
+cp;317B;dm=112E;na=HANGUL LETTER SIOS-NIEUN;NFKC_CF=112E;NFKC_SCF=112E
+cp;317C;dm=112F;na=HANGUL LETTER SIOS-TIKEUT;NFKC_CF=112F;NFKC_SCF=112F
+cp;317D;dm=1132;na=HANGUL LETTER SIOS-PIEUP;NFKC_CF=1132;NFKC_SCF=1132
+cp;317E;dm=1136;na=HANGUL LETTER SIOS-CIEUC;NFKC_CF=1136;NFKC_SCF=1136
+cp;317F;dm=1140;na=HANGUL LETTER PANSIOS;NFKC_CF=1140;NFKC_SCF=1140
+cp;3180;dm=1147;na=HANGUL LETTER SSANGIEUNG;NFKC_CF=1147;NFKC_SCF=1147
+cp;3181;dm=114C;na=HANGUL LETTER YESIEUNG;NFKC_CF=114C;NFKC_SCF=114C
+cp;3182;dm=11F1;na=HANGUL LETTER YESIEUNG-SIOS;NFKC_CF=11F1;NFKC_SCF=11F1
+cp;3183;dm=11F2;na=HANGUL LETTER YESIEUNG-PANSIOS;NFKC_CF=11F2;NFKC_SCF=11F2
+cp;3184;dm=1157;na=HANGUL LETTER KAPYEOUNPHIEUPH;NFKC_CF=1157;NFKC_SCF=1157
+cp;3185;dm=1158;na=HANGUL LETTER SSANGHIEUH;NFKC_CF=1158;NFKC_SCF=1158
+cp;3186;dm=1159;na=HANGUL LETTER YEORINHIEUH;NFKC_CF=1159;NFKC_SCF=1159
# Old vowel letters
-cp;3187;dm=1184;na=HANGUL LETTER YO-YA;NFKC_CF=1184
-cp;3188;dm=1185;na=HANGUL LETTER YO-YAE;NFKC_CF=1185
-cp;3189;dm=1188;na=HANGUL LETTER YO-I;NFKC_CF=1188
-cp;318A;dm=1191;na=HANGUL LETTER YU-YEO;NFKC_CF=1191
-cp;318B;dm=1192;na=HANGUL LETTER YU-YE;NFKC_CF=1192
-cp;318C;dm=1194;na=HANGUL LETTER YU-I;NFKC_CF=1194
-cp;318D;dm=119E;na=HANGUL LETTER ARAEA;NFKC_CF=119E
-cp;318E;dm=11A1;na=HANGUL LETTER ARAEAE;NFKC_CF=11A1
+cp;3187;dm=1184;na=HANGUL LETTER YO-YA;NFKC_CF=1184;NFKC_SCF=1184
+cp;3188;dm=1185;na=HANGUL LETTER YO-YAE;NFKC_CF=1185;NFKC_SCF=1185
+cp;3189;dm=1188;na=HANGUL LETTER YO-I;NFKC_CF=1188;NFKC_SCF=1188
+cp;318A;dm=1191;na=HANGUL LETTER YU-YEO;NFKC_CF=1191;NFKC_SCF=1191
+cp;318B;dm=1192;na=HANGUL LETTER YU-YE;NFKC_CF=1192;NFKC_SCF=1192
+cp;318C;dm=1194;na=HANGUL LETTER YU-I;NFKC_CF=1194;NFKC_SCF=1194
+cp;318D;dm=119E;na=HANGUL LETTER ARAEA;NFKC_CF=119E;NFKC_SCF=119E
+cp;318E;dm=11A1;na=HANGUL LETTER ARAEAE;NFKC_CF=11A1;NFKC_SCF=11A1
unassigned;318F;vo=U
block;3190..319F;age=1.1;blk=Kanbun;CWKCF;dt=Sup;ea=W;gc=So;Gr_Base;lb=ID;NFKC_QC=N;NFKD_QC=N;sc=Zyyy;scx=Hani;vo=U
@@ -14652,20 +14672,20 @@ block;3190..319F;age=1.1;blk=Kanbun;CWKCF;dt=Sup;ea=W;gc=So;Gr_Base;lb=ID;NFKC_Q
cp;3190;-CWKCF;dt=None;na=IDEOGRAPHIC ANNOTATION LINKING MARK;NFKC_QC=Y;NFKD_QC=Y
# Kaeriten
cp;3191;-CWKCF;dt=None;na=IDEOGRAPHIC ANNOTATION REVERSE MARK;NFKC_QC=Y;NFKD_QC=Y
-cp;3192;dm=4E00;gc=No;na=IDEOGRAPHIC ANNOTATION ONE MARK;NFKC_CF=4E00;nt=Nu;nv=1
-cp;3193;dm=4E8C;gc=No;na=IDEOGRAPHIC ANNOTATION TWO MARK;NFKC_CF=4E8C;nt=Nu;nv=2
-cp;3194;dm=4E09;gc=No;na=IDEOGRAPHIC ANNOTATION THREE MARK;NFKC_CF=4E09;nt=Nu;nv=3
-cp;3195;dm=56DB;gc=No;na=IDEOGRAPHIC ANNOTATION FOUR MARK;NFKC_CF=56DB;nt=Nu;nv=4
-cp;3196;dm=4E0A;na=IDEOGRAPHIC ANNOTATION TOP MARK;NFKC_CF=4E0A
-cp;3197;dm=4E2D;na=IDEOGRAPHIC ANNOTATION MIDDLE MARK;NFKC_CF=4E2D
-cp;3198;dm=4E0B;na=IDEOGRAPHIC ANNOTATION BOTTOM MARK;NFKC_CF=4E0B
-cp;3199;dm=7532;na=IDEOGRAPHIC ANNOTATION FIRST MARK;NFKC_CF=7532
-cp;319A;dm=4E59;na=IDEOGRAPHIC ANNOTATION SECOND MARK;NFKC_CF=4E59
-cp;319B;dm=4E19;na=IDEOGRAPHIC ANNOTATION THIRD MARK;NFKC_CF=4E19
-cp;319C;dm=4E01;na=IDEOGRAPHIC ANNOTATION FOURTH MARK;NFKC_CF=4E01
-cp;319D;dm=5929;na=IDEOGRAPHIC ANNOTATION HEAVEN MARK;NFKC_CF=5929
-cp;319E;dm=5730;na=IDEOGRAPHIC ANNOTATION EARTH MARK;NFKC_CF=5730
-cp;319F;dm=4EBA;na=IDEOGRAPHIC ANNOTATION MAN MARK;NFKC_CF=4EBA
+cp;3192;dm=4E00;gc=No;na=IDEOGRAPHIC ANNOTATION ONE MARK;NFKC_CF=4E00;NFKC_SCF=4E00;nt=Nu;nv=1
+cp;3193;dm=4E8C;gc=No;na=IDEOGRAPHIC ANNOTATION TWO MARK;NFKC_CF=4E8C;NFKC_SCF=4E8C;nt=Nu;nv=2
+cp;3194;dm=4E09;gc=No;na=IDEOGRAPHIC ANNOTATION THREE MARK;NFKC_CF=4E09;NFKC_SCF=4E09;nt=Nu;nv=3
+cp;3195;dm=56DB;gc=No;na=IDEOGRAPHIC ANNOTATION FOUR MARK;NFKC_CF=56DB;NFKC_SCF=56DB;nt=Nu;nv=4
+cp;3196;dm=4E0A;na=IDEOGRAPHIC ANNOTATION TOP MARK;NFKC_CF=4E0A;NFKC_SCF=4E0A
+cp;3197;dm=4E2D;na=IDEOGRAPHIC ANNOTATION MIDDLE MARK;NFKC_CF=4E2D;NFKC_SCF=4E2D
+cp;3198;dm=4E0B;na=IDEOGRAPHIC ANNOTATION BOTTOM MARK;NFKC_CF=4E0B;NFKC_SCF=4E0B
+cp;3199;dm=7532;na=IDEOGRAPHIC ANNOTATION FIRST MARK;NFKC_CF=7532;NFKC_SCF=7532
+cp;319A;dm=4E59;na=IDEOGRAPHIC ANNOTATION SECOND MARK;NFKC_CF=4E59;NFKC_SCF=4E59
+cp;319B;dm=4E19;na=IDEOGRAPHIC ANNOTATION THIRD MARK;NFKC_CF=4E19;NFKC_SCF=4E19
+cp;319C;dm=4E01;na=IDEOGRAPHIC ANNOTATION FOURTH MARK;NFKC_CF=4E01;NFKC_SCF=4E01
+cp;319D;dm=5929;na=IDEOGRAPHIC ANNOTATION HEAVEN MARK;NFKC_CF=5929;NFKC_SCF=5929
+cp;319E;dm=5730;na=IDEOGRAPHIC ANNOTATION EARTH MARK;NFKC_CF=5730;NFKC_SCF=5730
+cp;319F;dm=4EBA;na=IDEOGRAPHIC ANNOTATION MAN MARK;NFKC_CF=4EBA;NFKC_SCF=4EBA
block;31A0..31BF;age=3.0;Alpha;blk=Bopomofo_Ext;ea=W;gc=Lo;Gr_Base;IDC;IDS;lb=ID;SB=LE;sc=Bopo;vo=U;WB=LE;XIDC;XIDS
# 31A0..31BF Bopomofo Extended
@@ -14745,7 +14765,9 @@ cp;31E0;na=CJK STROKE HXWG
cp;31E1;na=CJK STROKE HZZZG
cp;31E2;na=CJK STROKE PG
cp;31E3;na=CJK STROKE Q
-unassigned;31E4..31EF;vo=U
+unassigned;31E4..31EE;vo=U
+# Ideographic description character
+cp;31EF;age=15.1;IDSB;na=IDEOGRAPHIC DESCRIPTION CHARACTER SUBTRACTION;scx=<script>
block;31F0..31FF;age=3.2;Alpha;blk=Katakana_Ext;ea=W;gc=Lo;Gr_Base;IDC;IDS;lb=CJ;SB=LE;sc=Kana;vo=Tu;WB=KA;XIDC;XIDS
# 31F0..31FF Katakana Phonetic Extensions
@@ -14770,82 +14792,82 @@ cp;31FF;na=KATAKANA LETTER SMALL RO
block;3200..32FF;age=1.1;blk=Enclosed_CJK;CWKCF;dt=Enc;ea=W;gc=So;Gr_Base;lb=ID;NFKC_QC=N;NFKD_QC=N;sc=Zyyy;vo=U
# 3200..32FF Enclosed CJK Letters and Months
# Parenthesized Hangul letters
-cp;3200;dm=0028 1100 0029;dt=Com;na=PARENTHESIZED HANGUL KIYEOK;NFKC_CF=0028 1100 0029;sc=Hang
-cp;3201;dm=0028 1102 0029;dt=Com;na=PARENTHESIZED HANGUL NIEUN;NFKC_CF=0028 1102 0029;sc=Hang
-cp;3202;dm=0028 1103 0029;dt=Com;na=PARENTHESIZED HANGUL TIKEUT;NFKC_CF=0028 1103 0029;sc=Hang
-cp;3203;dm=0028 1105 0029;dt=Com;na=PARENTHESIZED HANGUL RIEUL;NFKC_CF=0028 1105 0029;sc=Hang
-cp;3204;dm=0028 1106 0029;dt=Com;na=PARENTHESIZED HANGUL MIEUM;NFKC_CF=0028 1106 0029;sc=Hang
-cp;3205;dm=0028 1107 0029;dt=Com;na=PARENTHESIZED HANGUL PIEUP;NFKC_CF=0028 1107 0029;sc=Hang
-cp;3206;dm=0028 1109 0029;dt=Com;na=PARENTHESIZED HANGUL SIOS;NFKC_CF=0028 1109 0029;sc=Hang
-cp;3207;dm=0028 110B 0029;dt=Com;na=PARENTHESIZED HANGUL IEUNG;NFKC_CF=0028 110B 0029;sc=Hang
-cp;3208;dm=0028 110C 0029;dt=Com;na=PARENTHESIZED HANGUL CIEUC;NFKC_CF=0028 110C 0029;sc=Hang
-cp;3209;dm=0028 110E 0029;dt=Com;na=PARENTHESIZED HANGUL CHIEUCH;NFKC_CF=0028 110E 0029;sc=Hang
-cp;320A;dm=0028 110F 0029;dt=Com;na=PARENTHESIZED HANGUL KHIEUKH;NFKC_CF=0028 110F 0029;sc=Hang
-cp;320B;dm=0028 1110 0029;dt=Com;na=PARENTHESIZED HANGUL THIEUTH;NFKC_CF=0028 1110 0029;sc=Hang
-cp;320C;dm=0028 1111 0029;dt=Com;na=PARENTHESIZED HANGUL PHIEUPH;NFKC_CF=0028 1111 0029;sc=Hang
-cp;320D;dm=0028 1112 0029;dt=Com;na=PARENTHESIZED HANGUL HIEUH;NFKC_CF=0028 1112 0029;sc=Hang
+cp;3200;dm=0028 1100 0029;dt=Com;na=PARENTHESIZED HANGUL KIYEOK;NFKC_CF=0028 1100 0029;NFKC_SCF=0028 1100 0029;sc=Hang
+cp;3201;dm=0028 1102 0029;dt=Com;na=PARENTHESIZED HANGUL NIEUN;NFKC_CF=0028 1102 0029;NFKC_SCF=0028 1102 0029;sc=Hang
+cp;3202;dm=0028 1103 0029;dt=Com;na=PARENTHESIZED HANGUL TIKEUT;NFKC_CF=0028 1103 0029;NFKC_SCF=0028 1103 0029;sc=Hang
+cp;3203;dm=0028 1105 0029;dt=Com;na=PARENTHESIZED HANGUL RIEUL;NFKC_CF=0028 1105 0029;NFKC_SCF=0028 1105 0029;sc=Hang
+cp;3204;dm=0028 1106 0029;dt=Com;na=PARENTHESIZED HANGUL MIEUM;NFKC_CF=0028 1106 0029;NFKC_SCF=0028 1106 0029;sc=Hang
+cp;3205;dm=0028 1107 0029;dt=Com;na=PARENTHESIZED HANGUL PIEUP;NFKC_CF=0028 1107 0029;NFKC_SCF=0028 1107 0029;sc=Hang
+cp;3206;dm=0028 1109 0029;dt=Com;na=PARENTHESIZED HANGUL SIOS;NFKC_CF=0028 1109 0029;NFKC_SCF=0028 1109 0029;sc=Hang
+cp;3207;dm=0028 110B 0029;dt=Com;na=PARENTHESIZED HANGUL IEUNG;NFKC_CF=0028 110B 0029;NFKC_SCF=0028 110B 0029;sc=Hang
+cp;3208;dm=0028 110C 0029;dt=Com;na=PARENTHESIZED HANGUL CIEUC;NFKC_CF=0028 110C 0029;NFKC_SCF=0028 110C 0029;sc=Hang
+cp;3209;dm=0028 110E 0029;dt=Com;na=PARENTHESIZED HANGUL CHIEUCH;NFKC_CF=0028 110E 0029;NFKC_SCF=0028 110E 0029;sc=Hang
+cp;320A;dm=0028 110F 0029;dt=Com;na=PARENTHESIZED HANGUL KHIEUKH;NFKC_CF=0028 110F 0029;NFKC_SCF=0028 110F 0029;sc=Hang
+cp;320B;dm=0028 1110 0029;dt=Com;na=PARENTHESIZED HANGUL THIEUTH;NFKC_CF=0028 1110 0029;NFKC_SCF=0028 1110 0029;sc=Hang
+cp;320C;dm=0028 1111 0029;dt=Com;na=PARENTHESIZED HANGUL PHIEUPH;NFKC_CF=0028 1111 0029;NFKC_SCF=0028 1111 0029;sc=Hang
+cp;320D;dm=0028 1112 0029;dt=Com;na=PARENTHESIZED HANGUL HIEUH;NFKC_CF=0028 1112 0029;NFKC_SCF=0028 1112 0029;sc=Hang
# Parenthesized Hangul syllables
-cp;320E;dm=0028 1100 1161 0029;dt=Com;na=PARENTHESIZED HANGUL KIYEOK A;NFKC_CF=0028 AC00 0029;sc=Hang
-cp;320F;dm=0028 1102 1161 0029;dt=Com;na=PARENTHESIZED HANGUL NIEUN A;NFKC_CF=0028 B098 0029;sc=Hang
-cp;3210;dm=0028 1103 1161 0029;dt=Com;na=PARENTHESIZED HANGUL TIKEUT A;NFKC_CF=0028 B2E4 0029;sc=Hang
-cp;3211;dm=0028 1105 1161 0029;dt=Com;na=PARENTHESIZED HANGUL RIEUL A;NFKC_CF=0028 B77C 0029;sc=Hang
-cp;3212;dm=0028 1106 1161 0029;dt=Com;na=PARENTHESIZED HANGUL MIEUM A;NFKC_CF=0028 B9C8 0029;sc=Hang
-cp;3213;dm=0028 1107 1161 0029;dt=Com;na=PARENTHESIZED HANGUL PIEUP A;NFKC_CF=0028 BC14 0029;sc=Hang
-cp;3214;dm=0028 1109 1161 0029;dt=Com;na=PARENTHESIZED HANGUL SIOS A;NFKC_CF=0028 C0AC 0029;sc=Hang
-cp;3215;dm=0028 110B 1161 0029;dt=Com;na=PARENTHESIZED HANGUL IEUNG A;NFKC_CF=0028 C544 0029;sc=Hang
-cp;3216;dm=0028 110C 1161 0029;dt=Com;na=PARENTHESIZED HANGUL CIEUC A;NFKC_CF=0028 C790 0029;sc=Hang
-cp;3217;dm=0028 110E 1161 0029;dt=Com;na=PARENTHESIZED HANGUL CHIEUCH A;NFKC_CF=0028 CC28 0029;sc=Hang
-cp;3218;dm=0028 110F 1161 0029;dt=Com;na=PARENTHESIZED HANGUL KHIEUKH A;NFKC_CF=0028 CE74 0029;sc=Hang
-cp;3219;dm=0028 1110 1161 0029;dt=Com;na=PARENTHESIZED HANGUL THIEUTH A;NFKC_CF=0028 D0C0 0029;sc=Hang
-cp;321A;dm=0028 1111 1161 0029;dt=Com;na=PARENTHESIZED HANGUL PHIEUPH A;NFKC_CF=0028 D30C 0029;sc=Hang
-cp;321B;dm=0028 1112 1161 0029;dt=Com;na=PARENTHESIZED HANGUL HIEUH A;NFKC_CF=0028 D558 0029;sc=Hang
-cp;321C;dm=0028 110C 116E 0029;dt=Com;na=PARENTHESIZED HANGUL CIEUC U;NFKC_CF=0028 C8FC 0029;sc=Hang
+cp;320E;dm=0028 1100 1161 0029;dt=Com;na=PARENTHESIZED HANGUL KIYEOK A;NFKC_CF=0028 AC00 0029;NFKC_SCF=0028 AC00 0029;sc=Hang
+cp;320F;dm=0028 1102 1161 0029;dt=Com;na=PARENTHESIZED HANGUL NIEUN A;NFKC_CF=0028 B098 0029;NFKC_SCF=0028 B098 0029;sc=Hang
+cp;3210;dm=0028 1103 1161 0029;dt=Com;na=PARENTHESIZED HANGUL TIKEUT A;NFKC_CF=0028 B2E4 0029;NFKC_SCF=0028 B2E4 0029;sc=Hang
+cp;3211;dm=0028 1105 1161 0029;dt=Com;na=PARENTHESIZED HANGUL RIEUL A;NFKC_CF=0028 B77C 0029;NFKC_SCF=0028 B77C 0029;sc=Hang
+cp;3212;dm=0028 1106 1161 0029;dt=Com;na=PARENTHESIZED HANGUL MIEUM A;NFKC_CF=0028 B9C8 0029;NFKC_SCF=0028 B9C8 0029;sc=Hang
+cp;3213;dm=0028 1107 1161 0029;dt=Com;na=PARENTHESIZED HANGUL PIEUP A;NFKC_CF=0028 BC14 0029;NFKC_SCF=0028 BC14 0029;sc=Hang
+cp;3214;dm=0028 1109 1161 0029;dt=Com;na=PARENTHESIZED HANGUL SIOS A;NFKC_CF=0028 C0AC 0029;NFKC_SCF=0028 C0AC 0029;sc=Hang
+cp;3215;dm=0028 110B 1161 0029;dt=Com;na=PARENTHESIZED HANGUL IEUNG A;NFKC_CF=0028 C544 0029;NFKC_SCF=0028 C544 0029;sc=Hang
+cp;3216;dm=0028 110C 1161 0029;dt=Com;na=PARENTHESIZED HANGUL CIEUC A;NFKC_CF=0028 C790 0029;NFKC_SCF=0028 C790 0029;sc=Hang
+cp;3217;dm=0028 110E 1161 0029;dt=Com;na=PARENTHESIZED HANGUL CHIEUCH A;NFKC_CF=0028 CC28 0029;NFKC_SCF=0028 CC28 0029;sc=Hang
+cp;3218;dm=0028 110F 1161 0029;dt=Com;na=PARENTHESIZED HANGUL KHIEUKH A;NFKC_CF=0028 CE74 0029;NFKC_SCF=0028 CE74 0029;sc=Hang
+cp;3219;dm=0028 1110 1161 0029;dt=Com;na=PARENTHESIZED HANGUL THIEUTH A;NFKC_CF=0028 D0C0 0029;NFKC_SCF=0028 D0C0 0029;sc=Hang
+cp;321A;dm=0028 1111 1161 0029;dt=Com;na=PARENTHESIZED HANGUL PHIEUPH A;NFKC_CF=0028 D30C 0029;NFKC_SCF=0028 D30C 0029;sc=Hang
+cp;321B;dm=0028 1112 1161 0029;dt=Com;na=PARENTHESIZED HANGUL HIEUH A;NFKC_CF=0028 D558 0029;NFKC_SCF=0028 D558 0029;sc=Hang
+cp;321C;dm=0028 110C 116E 0029;dt=Com;na=PARENTHESIZED HANGUL CIEUC U;NFKC_CF=0028 C8FC 0029;NFKC_SCF=0028 C8FC 0029;sc=Hang
# Parenthesized Korean words
-cp;321D;age=4.0;bc=ON;dm=0028 110B 1169 110C 1165 11AB 0029;dt=Com;na=PARENTHESIZED KOREAN CHARACTER OJEON;NFKC_CF=0028 C624 C804 0029;sc=Hang
-cp;321E;age=4.0;bc=ON;dm=0028 110B 1169 1112 116E 0029;dt=Com;na=PARENTHESIZED KOREAN CHARACTER O HU;NFKC_CF=0028 C624 D6C4 0029;sc=Hang
+cp;321D;age=4.0;bc=ON;dm=0028 110B 1169 110C 1165 11AB 0029;dt=Com;na=PARENTHESIZED KOREAN CHARACTER OJEON;NFKC_CF=0028 C624 C804 0029;NFKC_SCF=0028 C624 C804 0029;sc=Hang
+cp;321E;age=4.0;bc=ON;dm=0028 110B 1169 1112 116E 0029;dt=Com;na=PARENTHESIZED KOREAN CHARACTER O HU;NFKC_CF=0028 C624 D6C4 0029;NFKC_SCF=0028 C624 D6C4 0029;sc=Hang
unassigned;321F;vo=U
# Parenthesized ideographs
-cp;3220;dm=0028 4E00 0029;dt=Com;gc=No;na=PARENTHESIZED IDEOGRAPH ONE;NFKC_CF=0028 4E00 0029;nt=Nu;nv=1;scx=Hani
-cp;3221;dm=0028 4E8C 0029;dt=Com;gc=No;na=PARENTHESIZED IDEOGRAPH TWO;NFKC_CF=0028 4E8C 0029;nt=Nu;nv=2;scx=Hani
-cp;3222;dm=0028 4E09 0029;dt=Com;gc=No;na=PARENTHESIZED IDEOGRAPH THREE;NFKC_CF=0028 4E09 0029;nt=Nu;nv=3;scx=Hani
-cp;3223;dm=0028 56DB 0029;dt=Com;gc=No;na=PARENTHESIZED IDEOGRAPH FOUR;NFKC_CF=0028 56DB 0029;nt=Nu;nv=4;scx=Hani
-cp;3224;dm=0028 4E94 0029;dt=Com;gc=No;na=PARENTHESIZED IDEOGRAPH FIVE;NFKC_CF=0028 4E94 0029;nt=Nu;nv=5;scx=Hani
-cp;3225;dm=0028 516D 0029;dt=Com;gc=No;na=PARENTHESIZED IDEOGRAPH SIX;NFKC_CF=0028 516D 0029;nt=Nu;nv=6;scx=Hani
-cp;3226;dm=0028 4E03 0029;dt=Com;gc=No;na=PARENTHESIZED IDEOGRAPH SEVEN;NFKC_CF=0028 4E03 0029;nt=Nu;nv=7;scx=Hani
-cp;3227;dm=0028 516B 0029;dt=Com;gc=No;na=PARENTHESIZED IDEOGRAPH EIGHT;NFKC_CF=0028 516B 0029;nt=Nu;nv=8;scx=Hani
-cp;3228;dm=0028 4E5D 0029;dt=Com;gc=No;na=PARENTHESIZED IDEOGRAPH NINE;NFKC_CF=0028 4E5D 0029;nt=Nu;nv=9;scx=Hani
-cp;3229;dm=0028 5341 0029;dt=Com;gc=No;na=PARENTHESIZED IDEOGRAPH TEN;NFKC_CF=0028 5341 0029;nt=Nu;nv=10;scx=Hani
-cp;322A;dm=0028 6708 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH MOON;NFKC_CF=0028 6708 0029;scx=Hani
-cp;322B;dm=0028 706B 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH FIRE;NFKC_CF=0028 706B 0029;scx=Hani
-cp;322C;dm=0028 6C34 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH WATER;NFKC_CF=0028 6C34 0029;scx=Hani
-cp;322D;dm=0028 6728 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH WOOD;NFKC_CF=0028 6728 0029;scx=Hani
-cp;322E;dm=0028 91D1 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH METAL;NFKC_CF=0028 91D1 0029;scx=Hani
-cp;322F;dm=0028 571F 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH EARTH;NFKC_CF=0028 571F 0029;scx=Hani
-cp;3230;dm=0028 65E5 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH SUN;NFKC_CF=0028 65E5 0029;scx=Hani
-cp;3231;dm=0028 682A 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH STOCK;NFKC_CF=0028 682A 0029;scx=Hani
-cp;3232;dm=0028 6709 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH HAVE;NFKC_CF=0028 6709 0029;scx=Hani
-cp;3233;dm=0028 793E 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH SOCIETY;NFKC_CF=0028 793E 0029;scx=Hani
-cp;3234;dm=0028 540D 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH NAME;NFKC_CF=0028 540D 0029;scx=Hani
-cp;3235;dm=0028 7279 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH SPECIAL;NFKC_CF=0028 7279 0029;scx=Hani
-cp;3236;dm=0028 8CA1 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH FINANCIAL;NFKC_CF=0028 8CA1 0029;scx=Hani
-cp;3237;dm=0028 795D 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH CONGRATULATION;NFKC_CF=0028 795D 0029;scx=Hani
-cp;3238;dm=0028 52B4 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH LABOR;NFKC_CF=0028 52B4 0029;scx=Hani
-cp;3239;dm=0028 4EE3 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH REPRESENT;NFKC_CF=0028 4EE3 0029;scx=Hani
-cp;323A;dm=0028 547C 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH CALL;NFKC_CF=0028 547C 0029;scx=Hani
-cp;323B;dm=0028 5B66 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH STUDY;NFKC_CF=0028 5B66 0029;scx=Hani
-cp;323C;dm=0028 76E3 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH SUPERVISE;NFKC_CF=0028 76E3 0029;scx=Hani
-cp;323D;dm=0028 4F01 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH ENTERPRISE;NFKC_CF=0028 4F01 0029;scx=Hani
-cp;323E;dm=0028 8CC7 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH RESOURCE;NFKC_CF=0028 8CC7 0029;scx=Hani
-cp;323F;dm=0028 5354 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH ALLIANCE;NFKC_CF=0028 5354 0029;scx=Hani
-cp;3240;dm=0028 796D 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH FESTIVAL;NFKC_CF=0028 796D 0029;scx=Hani
-cp;3241;dm=0028 4F11 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH REST;NFKC_CF=0028 4F11 0029;scx=Hani
-cp;3242;dm=0028 81EA 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH SELF;NFKC_CF=0028 81EA 0029;scx=Hani
-cp;3243;dm=0028 81F3 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH REACH;NFKC_CF=0028 81F3 0029;scx=Hani
+cp;3220;dm=0028 4E00 0029;dt=Com;gc=No;na=PARENTHESIZED IDEOGRAPH ONE;NFKC_CF=0028 4E00 0029;NFKC_SCF=0028 4E00 0029;nt=Nu;nv=1;scx=Hani
+cp;3221;dm=0028 4E8C 0029;dt=Com;gc=No;na=PARENTHESIZED IDEOGRAPH TWO;NFKC_CF=0028 4E8C 0029;NFKC_SCF=0028 4E8C 0029;nt=Nu;nv=2;scx=Hani
+cp;3222;dm=0028 4E09 0029;dt=Com;gc=No;na=PARENTHESIZED IDEOGRAPH THREE;NFKC_CF=0028 4E09 0029;NFKC_SCF=0028 4E09 0029;nt=Nu;nv=3;scx=Hani
+cp;3223;dm=0028 56DB 0029;dt=Com;gc=No;na=PARENTHESIZED IDEOGRAPH FOUR;NFKC_CF=0028 56DB 0029;NFKC_SCF=0028 56DB 0029;nt=Nu;nv=4;scx=Hani
+cp;3224;dm=0028 4E94 0029;dt=Com;gc=No;na=PARENTHESIZED IDEOGRAPH FIVE;NFKC_CF=0028 4E94 0029;NFKC_SCF=0028 4E94 0029;nt=Nu;nv=5;scx=Hani
+cp;3225;dm=0028 516D 0029;dt=Com;gc=No;na=PARENTHESIZED IDEOGRAPH SIX;NFKC_CF=0028 516D 0029;NFKC_SCF=0028 516D 0029;nt=Nu;nv=6;scx=Hani
+cp;3226;dm=0028 4E03 0029;dt=Com;gc=No;na=PARENTHESIZED IDEOGRAPH SEVEN;NFKC_CF=0028 4E03 0029;NFKC_SCF=0028 4E03 0029;nt=Nu;nv=7;scx=Hani
+cp;3227;dm=0028 516B 0029;dt=Com;gc=No;na=PARENTHESIZED IDEOGRAPH EIGHT;NFKC_CF=0028 516B 0029;NFKC_SCF=0028 516B 0029;nt=Nu;nv=8;scx=Hani
+cp;3228;dm=0028 4E5D 0029;dt=Com;gc=No;na=PARENTHESIZED IDEOGRAPH NINE;NFKC_CF=0028 4E5D 0029;NFKC_SCF=0028 4E5D 0029;nt=Nu;nv=9;scx=Hani
+cp;3229;dm=0028 5341 0029;dt=Com;gc=No;na=PARENTHESIZED IDEOGRAPH TEN;NFKC_CF=0028 5341 0029;NFKC_SCF=0028 5341 0029;nt=Nu;nv=10;scx=Hani
+cp;322A;dm=0028 6708 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH MOON;NFKC_CF=0028 6708 0029;NFKC_SCF=0028 6708 0029;scx=Hani
+cp;322B;dm=0028 706B 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH FIRE;NFKC_CF=0028 706B 0029;NFKC_SCF=0028 706B 0029;scx=Hani
+cp;322C;dm=0028 6C34 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH WATER;NFKC_CF=0028 6C34 0029;NFKC_SCF=0028 6C34 0029;scx=Hani
+cp;322D;dm=0028 6728 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH WOOD;NFKC_CF=0028 6728 0029;NFKC_SCF=0028 6728 0029;scx=Hani
+cp;322E;dm=0028 91D1 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH METAL;NFKC_CF=0028 91D1 0029;NFKC_SCF=0028 91D1 0029;scx=Hani
+cp;322F;dm=0028 571F 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH EARTH;NFKC_CF=0028 571F 0029;NFKC_SCF=0028 571F 0029;scx=Hani
+cp;3230;dm=0028 65E5 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH SUN;NFKC_CF=0028 65E5 0029;NFKC_SCF=0028 65E5 0029;scx=Hani
+cp;3231;dm=0028 682A 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH STOCK;NFKC_CF=0028 682A 0029;NFKC_SCF=0028 682A 0029;scx=Hani
+cp;3232;dm=0028 6709 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH HAVE;NFKC_CF=0028 6709 0029;NFKC_SCF=0028 6709 0029;scx=Hani
+cp;3233;dm=0028 793E 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH SOCIETY;NFKC_CF=0028 793E 0029;NFKC_SCF=0028 793E 0029;scx=Hani
+cp;3234;dm=0028 540D 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH NAME;NFKC_CF=0028 540D 0029;NFKC_SCF=0028 540D 0029;scx=Hani
+cp;3235;dm=0028 7279 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH SPECIAL;NFKC_CF=0028 7279 0029;NFKC_SCF=0028 7279 0029;scx=Hani
+cp;3236;dm=0028 8CA1 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH FINANCIAL;NFKC_CF=0028 8CA1 0029;NFKC_SCF=0028 8CA1 0029;scx=Hani
+cp;3237;dm=0028 795D 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH CONGRATULATION;NFKC_CF=0028 795D 0029;NFKC_SCF=0028 795D 0029;scx=Hani
+cp;3238;dm=0028 52B4 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH LABOR;NFKC_CF=0028 52B4 0029;NFKC_SCF=0028 52B4 0029;scx=Hani
+cp;3239;dm=0028 4EE3 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH REPRESENT;NFKC_CF=0028 4EE3 0029;NFKC_SCF=0028 4EE3 0029;scx=Hani
+cp;323A;dm=0028 547C 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH CALL;NFKC_CF=0028 547C 0029;NFKC_SCF=0028 547C 0029;scx=Hani
+cp;323B;dm=0028 5B66 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH STUDY;NFKC_CF=0028 5B66 0029;NFKC_SCF=0028 5B66 0029;scx=Hani
+cp;323C;dm=0028 76E3 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH SUPERVISE;NFKC_CF=0028 76E3 0029;NFKC_SCF=0028 76E3 0029;scx=Hani
+cp;323D;dm=0028 4F01 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH ENTERPRISE;NFKC_CF=0028 4F01 0029;NFKC_SCF=0028 4F01 0029;scx=Hani
+cp;323E;dm=0028 8CC7 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH RESOURCE;NFKC_CF=0028 8CC7 0029;NFKC_SCF=0028 8CC7 0029;scx=Hani
+cp;323F;dm=0028 5354 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH ALLIANCE;NFKC_CF=0028 5354 0029;NFKC_SCF=0028 5354 0029;scx=Hani
+cp;3240;dm=0028 796D 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH FESTIVAL;NFKC_CF=0028 796D 0029;NFKC_SCF=0028 796D 0029;scx=Hani
+cp;3241;dm=0028 4F11 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH REST;NFKC_CF=0028 4F11 0029;NFKC_SCF=0028 4F11 0029;scx=Hani
+cp;3242;dm=0028 81EA 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH SELF;NFKC_CF=0028 81EA 0029;NFKC_SCF=0028 81EA 0029;scx=Hani
+cp;3243;dm=0028 81F3 0029;dt=Com;na=PARENTHESIZED IDEOGRAPH REACH;NFKC_CF=0028 81F3 0029;NFKC_SCF=0028 81F3 0029;scx=Hani
# Circled ideographs from ARIB STD B24
-cp;3244;age=5.2;dm=554F;na=CIRCLED IDEOGRAPH QUESTION;NFKC_CF=554F;scx=Hani
-cp;3245;age=5.2;dm=5E7C;na=CIRCLED IDEOGRAPH KINDERGARTEN;NFKC_CF=5E7C;scx=Hani
-cp;3246;age=5.2;dm=6587;na=CIRCLED IDEOGRAPH SCHOOL;NFKC_CF=6587;scx=Hani
-cp;3247;age=5.2;dm=7B8F;na=CIRCLED IDEOGRAPH KOTO;NFKC_CF=7B8F;scx=Hani
+cp;3244;age=5.2;dm=554F;na=CIRCLED IDEOGRAPH QUESTION;NFKC_CF=554F;NFKC_SCF=554F;scx=Hani
+cp;3245;age=5.2;dm=5E7C;na=CIRCLED IDEOGRAPH KINDERGARTEN;NFKC_CF=5E7C;NFKC_SCF=5E7C;scx=Hani
+cp;3246;age=5.2;dm=6587;na=CIRCLED IDEOGRAPH SCHOOL;NFKC_CF=6587;NFKC_SCF=6587;scx=Hani
+cp;3247;age=5.2;dm=7B8F;na=CIRCLED IDEOGRAPH KOTO;NFKC_CF=7B8F;NFKC_SCF=7B8F;scx=Hani
# Circled numbers on black squares from ARIB STD B24
cp;3248;age=5.2;-CWKCF;dt=None;ea=A;gc=No;lb=AI;na=CIRCLED NUMBER TEN ON BLACK SQUARE;NFKC_QC=Y;NFKD_QC=Y;nt=Nu;nv=10
cp;3249;age=5.2;-CWKCF;dt=None;ea=A;gc=No;lb=AI;na=CIRCLED NUMBER TWENTY ON BLACK SQUARE;NFKC_QC=Y;NFKD_QC=Y;nt=Nu;nv=20
@@ -14856,463 +14878,463 @@ cp;324D;age=5.2;-CWKCF;dt=None;ea=A;gc=No;lb=AI;na=CIRCLED NUMBER SIXTY ON BLACK
cp;324E;age=5.2;-CWKCF;dt=None;ea=A;gc=No;lb=AI;na=CIRCLED NUMBER SEVENTY ON BLACK SQUARE;NFKC_QC=Y;NFKD_QC=Y;nt=Nu;nv=70
cp;324F;age=5.2;-CWKCF;dt=None;ea=A;gc=No;lb=AI;na=CIRCLED NUMBER EIGHTY ON BLACK SQUARE;NFKC_QC=Y;NFKD_QC=Y;nt=Nu;nv=80
# Squared Latin abbreviation
-cp;3250;age=4.0;bc=ON;dm=0050 0054 0045;dt=Sqr;FC_NFKC=0070 0074 0065;na=PARTNERSHIP SIGN;NFKC_CF=0070 0074 0065
+cp;3250;age=4.0;bc=ON;dm=0050 0054 0045;dt=Sqr;FC_NFKC=0070 0074 0065;na=PARTNERSHIP SIGN;NFKC_CF=0070 0074 0065;NFKC_SCF=0070 0074 0065
# Circled numbers
-cp;3251;age=3.2;bc=ON;dm=0032 0031;gc=No;na=CIRCLED NUMBER TWENTY ONE;NFKC_CF=0032 0031;nt=Nu;nv=21
-cp;3252;age=3.2;bc=ON;dm=0032 0032;gc=No;na=CIRCLED NUMBER TWENTY TWO;NFKC_CF=0032 0032;nt=Nu;nv=22
-cp;3253;age=3.2;bc=ON;dm=0032 0033;gc=No;na=CIRCLED NUMBER TWENTY THREE;NFKC_CF=0032 0033;nt=Nu;nv=23
-cp;3254;age=3.2;bc=ON;dm=0032 0034;gc=No;na=CIRCLED NUMBER TWENTY FOUR;NFKC_CF=0032 0034;nt=Nu;nv=24
-cp;3255;age=3.2;bc=ON;dm=0032 0035;gc=No;na=CIRCLED NUMBER TWENTY FIVE;NFKC_CF=0032 0035;nt=Nu;nv=25
-cp;3256;age=3.2;bc=ON;dm=0032 0036;gc=No;na=CIRCLED NUMBER TWENTY SIX;NFKC_CF=0032 0036;nt=Nu;nv=26
-cp;3257;age=3.2;bc=ON;dm=0032 0037;gc=No;na=CIRCLED NUMBER TWENTY SEVEN;NFKC_CF=0032 0037;nt=Nu;nv=27
-cp;3258;age=3.2;bc=ON;dm=0032 0038;gc=No;na=CIRCLED NUMBER TWENTY EIGHT;NFKC_CF=0032 0038;nt=Nu;nv=28
-cp;3259;age=3.2;bc=ON;dm=0032 0039;gc=No;na=CIRCLED NUMBER TWENTY NINE;NFKC_CF=0032 0039;nt=Nu;nv=29
-cp;325A;age=3.2;bc=ON;dm=0033 0030;gc=No;na=CIRCLED NUMBER THIRTY;NFKC_CF=0033 0030;nt=Nu;nv=30
-cp;325B;age=3.2;bc=ON;dm=0033 0031;gc=No;na=CIRCLED NUMBER THIRTY ONE;NFKC_CF=0033 0031;nt=Nu;nv=31
-cp;325C;age=3.2;bc=ON;dm=0033 0032;gc=No;na=CIRCLED NUMBER THIRTY TWO;NFKC_CF=0033 0032;nt=Nu;nv=32
-cp;325D;age=3.2;bc=ON;dm=0033 0033;gc=No;na=CIRCLED NUMBER THIRTY THREE;NFKC_CF=0033 0033;nt=Nu;nv=33
-cp;325E;age=3.2;bc=ON;dm=0033 0034;gc=No;na=CIRCLED NUMBER THIRTY FOUR;NFKC_CF=0033 0034;nt=Nu;nv=34
-cp;325F;age=3.2;bc=ON;dm=0033 0035;gc=No;na=CIRCLED NUMBER THIRTY FIVE;NFKC_CF=0033 0035;nt=Nu;nv=35
+cp;3251;age=3.2;bc=ON;dm=0032 0031;gc=No;na=CIRCLED NUMBER TWENTY ONE;NFKC_CF=0032 0031;NFKC_SCF=0032 0031;nt=Nu;nv=21
+cp;3252;age=3.2;bc=ON;dm=0032 0032;gc=No;na=CIRCLED NUMBER TWENTY TWO;NFKC_CF=0032 0032;NFKC_SCF=0032 0032;nt=Nu;nv=22
+cp;3253;age=3.2;bc=ON;dm=0032 0033;gc=No;na=CIRCLED NUMBER TWENTY THREE;NFKC_CF=0032 0033;NFKC_SCF=0032 0033;nt=Nu;nv=23
+cp;3254;age=3.2;bc=ON;dm=0032 0034;gc=No;na=CIRCLED NUMBER TWENTY FOUR;NFKC_CF=0032 0034;NFKC_SCF=0032 0034;nt=Nu;nv=24
+cp;3255;age=3.2;bc=ON;dm=0032 0035;gc=No;na=CIRCLED NUMBER TWENTY FIVE;NFKC_CF=0032 0035;NFKC_SCF=0032 0035;nt=Nu;nv=25
+cp;3256;age=3.2;bc=ON;dm=0032 0036;gc=No;na=CIRCLED NUMBER TWENTY SIX;NFKC_CF=0032 0036;NFKC_SCF=0032 0036;nt=Nu;nv=26
+cp;3257;age=3.2;bc=ON;dm=0032 0037;gc=No;na=CIRCLED NUMBER TWENTY SEVEN;NFKC_CF=0032 0037;NFKC_SCF=0032 0037;nt=Nu;nv=27
+cp;3258;age=3.2;bc=ON;dm=0032 0038;gc=No;na=CIRCLED NUMBER TWENTY EIGHT;NFKC_CF=0032 0038;NFKC_SCF=0032 0038;nt=Nu;nv=28
+cp;3259;age=3.2;bc=ON;dm=0032 0039;gc=No;na=CIRCLED NUMBER TWENTY NINE;NFKC_CF=0032 0039;NFKC_SCF=0032 0039;nt=Nu;nv=29
+cp;325A;age=3.2;bc=ON;dm=0033 0030;gc=No;na=CIRCLED NUMBER THIRTY;NFKC_CF=0033 0030;NFKC_SCF=0033 0030;nt=Nu;nv=30
+cp;325B;age=3.2;bc=ON;dm=0033 0031;gc=No;na=CIRCLED NUMBER THIRTY ONE;NFKC_CF=0033 0031;NFKC_SCF=0033 0031;nt=Nu;nv=31
+cp;325C;age=3.2;bc=ON;dm=0033 0032;gc=No;na=CIRCLED NUMBER THIRTY TWO;NFKC_CF=0033 0032;NFKC_SCF=0033 0032;nt=Nu;nv=32
+cp;325D;age=3.2;bc=ON;dm=0033 0033;gc=No;na=CIRCLED NUMBER THIRTY THREE;NFKC_CF=0033 0033;NFKC_SCF=0033 0033;nt=Nu;nv=33
+cp;325E;age=3.2;bc=ON;dm=0033 0034;gc=No;na=CIRCLED NUMBER THIRTY FOUR;NFKC_CF=0033 0034;NFKC_SCF=0033 0034;nt=Nu;nv=34
+cp;325F;age=3.2;bc=ON;dm=0033 0035;gc=No;na=CIRCLED NUMBER THIRTY FIVE;NFKC_CF=0033 0035;NFKC_SCF=0033 0035;nt=Nu;nv=35
# Circled Hangul letters
-cp;3260;dm=1100;na=CIRCLED HANGUL KIYEOK;NFKC_CF=1100;sc=Hang
-cp;3261;dm=1102;na=CIRCLED HANGUL NIEUN;NFKC_CF=1102;sc=Hang
-cp;3262;dm=1103;na=CIRCLED HANGUL TIKEUT;NFKC_CF=1103;sc=Hang
-cp;3263;dm=1105;na=CIRCLED HANGUL RIEUL;NFKC_CF=1105;sc=Hang
-cp;3264;dm=1106;na=CIRCLED HANGUL MIEUM;NFKC_CF=1106;sc=Hang
-cp;3265;dm=1107;na=CIRCLED HANGUL PIEUP;NFKC_CF=1107;sc=Hang
-cp;3266;dm=1109;na=CIRCLED HANGUL SIOS;NFKC_CF=1109;sc=Hang
-cp;3267;dm=110B;na=CIRCLED HANGUL IEUNG;NFKC_CF=110B;sc=Hang
-cp;3268;dm=110C;na=CIRCLED HANGUL CIEUC;NFKC_CF=110C;sc=Hang
-cp;3269;dm=110E;na=CIRCLED HANGUL CHIEUCH;NFKC_CF=110E;sc=Hang
-cp;326A;dm=110F;na=CIRCLED HANGUL KHIEUKH;NFKC_CF=110F;sc=Hang
-cp;326B;dm=1110;na=CIRCLED HANGUL THIEUTH;NFKC_CF=1110;sc=Hang
-cp;326C;dm=1111;na=CIRCLED HANGUL PHIEUPH;NFKC_CF=1111;sc=Hang
-cp;326D;dm=1112;na=CIRCLED HANGUL HIEUH;NFKC_CF=1112;sc=Hang
+cp;3260;dm=1100;na=CIRCLED HANGUL KIYEOK;NFKC_CF=1100;NFKC_SCF=1100;sc=Hang
+cp;3261;dm=1102;na=CIRCLED HANGUL NIEUN;NFKC_CF=1102;NFKC_SCF=1102;sc=Hang
+cp;3262;dm=1103;na=CIRCLED HANGUL TIKEUT;NFKC_CF=1103;NFKC_SCF=1103;sc=Hang
+cp;3263;dm=1105;na=CIRCLED HANGUL RIEUL;NFKC_CF=1105;NFKC_SCF=1105;sc=Hang
+cp;3264;dm=1106;na=CIRCLED HANGUL MIEUM;NFKC_CF=1106;NFKC_SCF=1106;sc=Hang
+cp;3265;dm=1107;na=CIRCLED HANGUL PIEUP;NFKC_CF=1107;NFKC_SCF=1107;sc=Hang
+cp;3266;dm=1109;na=CIRCLED HANGUL SIOS;NFKC_CF=1109;NFKC_SCF=1109;sc=Hang
+cp;3267;dm=110B;na=CIRCLED HANGUL IEUNG;NFKC_CF=110B;NFKC_SCF=110B;sc=Hang
+cp;3268;dm=110C;na=CIRCLED HANGUL CIEUC;NFKC_CF=110C;NFKC_SCF=110C;sc=Hang
+cp;3269;dm=110E;na=CIRCLED HANGUL CHIEUCH;NFKC_CF=110E;NFKC_SCF=110E;sc=Hang
+cp;326A;dm=110F;na=CIRCLED HANGUL KHIEUKH;NFKC_CF=110F;NFKC_SCF=110F;sc=Hang
+cp;326B;dm=1110;na=CIRCLED HANGUL THIEUTH;NFKC_CF=1110;NFKC_SCF=1110;sc=Hang
+cp;326C;dm=1111;na=CIRCLED HANGUL PHIEUPH;NFKC_CF=1111;NFKC_SCF=1111;sc=Hang
+cp;326D;dm=1112;na=CIRCLED HANGUL HIEUH;NFKC_CF=1112;NFKC_SCF=1112;sc=Hang
# Circled Hangul syllables
-cp;326E;dm=1100 1161;na=CIRCLED HANGUL KIYEOK A;NFKC_CF=AC00;sc=Hang
-cp;326F;dm=1102 1161;na=CIRCLED HANGUL NIEUN A;NFKC_CF=B098;sc=Hang
-cp;3270;dm=1103 1161;na=CIRCLED HANGUL TIKEUT A;NFKC_CF=B2E4;sc=Hang
-cp;3271;dm=1105 1161;na=CIRCLED HANGUL RIEUL A;NFKC_CF=B77C;sc=Hang
-cp;3272;dm=1106 1161;na=CIRCLED HANGUL MIEUM A;NFKC_CF=B9C8;sc=Hang
-cp;3273;dm=1107 1161;na=CIRCLED HANGUL PIEUP A;NFKC_CF=BC14;sc=Hang
-cp;3274;dm=1109 1161;na=CIRCLED HANGUL SIOS A;NFKC_CF=C0AC;sc=Hang
-cp;3275;dm=110B 1161;na=CIRCLED HANGUL IEUNG A;NFKC_CF=C544;sc=Hang
-cp;3276;dm=110C 1161;na=CIRCLED HANGUL CIEUC A;NFKC_CF=C790;sc=Hang
-cp;3277;dm=110E 1161;na=CIRCLED HANGUL CHIEUCH A;NFKC_CF=CC28;sc=Hang
-cp;3278;dm=110F 1161;na=CIRCLED HANGUL KHIEUKH A;NFKC_CF=CE74;sc=Hang
-cp;3279;dm=1110 1161;na=CIRCLED HANGUL THIEUTH A;NFKC_CF=D0C0;sc=Hang
-cp;327A;dm=1111 1161;na=CIRCLED HANGUL PHIEUPH A;NFKC_CF=D30C;sc=Hang
-cp;327B;dm=1112 1161;na=CIRCLED HANGUL HIEUH A;NFKC_CF=D558;sc=Hang
+cp;326E;dm=1100 1161;na=CIRCLED HANGUL KIYEOK A;NFKC_CF=AC00;NFKC_SCF=AC00;sc=Hang
+cp;326F;dm=1102 1161;na=CIRCLED HANGUL NIEUN A;NFKC_CF=B098;NFKC_SCF=B098;sc=Hang
+cp;3270;dm=1103 1161;na=CIRCLED HANGUL TIKEUT A;NFKC_CF=B2E4;NFKC_SCF=B2E4;sc=Hang
+cp;3271;dm=1105 1161;na=CIRCLED HANGUL RIEUL A;NFKC_CF=B77C;NFKC_SCF=B77C;sc=Hang
+cp;3272;dm=1106 1161;na=CIRCLED HANGUL MIEUM A;NFKC_CF=B9C8;NFKC_SCF=B9C8;sc=Hang
+cp;3273;dm=1107 1161;na=CIRCLED HANGUL PIEUP A;NFKC_CF=BC14;NFKC_SCF=BC14;sc=Hang
+cp;3274;dm=1109 1161;na=CIRCLED HANGUL SIOS A;NFKC_CF=C0AC;NFKC_SCF=C0AC;sc=Hang
+cp;3275;dm=110B 1161;na=CIRCLED HANGUL IEUNG A;NFKC_CF=C544;NFKC_SCF=C544;sc=Hang
+cp;3276;dm=110C 1161;na=CIRCLED HANGUL CIEUC A;NFKC_CF=C790;NFKC_SCF=C790;sc=Hang
+cp;3277;dm=110E 1161;na=CIRCLED HANGUL CHIEUCH A;NFKC_CF=CC28;NFKC_SCF=CC28;sc=Hang
+cp;3278;dm=110F 1161;na=CIRCLED HANGUL KHIEUKH A;NFKC_CF=CE74;NFKC_SCF=CE74;sc=Hang
+cp;3279;dm=1110 1161;na=CIRCLED HANGUL THIEUTH A;NFKC_CF=D0C0;NFKC_SCF=D0C0;sc=Hang
+cp;327A;dm=1111 1161;na=CIRCLED HANGUL PHIEUPH A;NFKC_CF=D30C;NFKC_SCF=D30C;sc=Hang
+cp;327B;dm=1112 1161;na=CIRCLED HANGUL HIEUH A;NFKC_CF=D558;NFKC_SCF=D558;sc=Hang
# Circled Korean words
-cp;327C;age=4.0;bc=ON;dm=110E 1161 11B7 1100 1169;na=CIRCLED KOREAN CHARACTER CHAMKO;NFKC_CF=CC38 ACE0;sc=Hang
-cp;327D;age=4.0;bc=ON;dm=110C 116E 110B 1174;na=CIRCLED KOREAN CHARACTER JUEUI;NFKC_CF=C8FC C758;sc=Hang
+cp;327C;age=4.0;bc=ON;dm=110E 1161 11B7 1100 1169;na=CIRCLED KOREAN CHARACTER CHAMKO;NFKC_CF=CC38 ACE0;NFKC_SCF=CC38 ACE0;sc=Hang
+cp;327D;age=4.0;bc=ON;dm=110C 116E 110B 1174;na=CIRCLED KOREAN CHARACTER JUEUI;NFKC_CF=C8FC C758;NFKC_SCF=C8FC C758;sc=Hang
# Circled Hangul syllable
-cp;327E;age=4.1;bc=ON;dm=110B 116E;na=CIRCLED HANGUL IEUNG U;NFKC_CF=C6B0;sc=Hang
+cp;327E;age=4.1;bc=ON;dm=110B 116E;na=CIRCLED HANGUL IEUNG U;NFKC_CF=C6B0;NFKC_SCF=C6B0;sc=Hang
# Symbol
cp;327F;-CWKCF;dt=None;na=KOREAN STANDARD SYMBOL;NFKC_QC=Y;NFKD_QC=Y
# Circled ideographs
-cp;3280;dm=4E00;gc=No;na=CIRCLED IDEOGRAPH ONE;NFKC_CF=4E00;nt=Nu;nv=1;scx=Hani
-cp;3281;dm=4E8C;gc=No;na=CIRCLED IDEOGRAPH TWO;NFKC_CF=4E8C;nt=Nu;nv=2;scx=Hani
-cp;3282;dm=4E09;gc=No;na=CIRCLED IDEOGRAPH THREE;NFKC_CF=4E09;nt=Nu;nv=3;scx=Hani
-cp;3283;dm=56DB;gc=No;na=CIRCLED IDEOGRAPH FOUR;NFKC_CF=56DB;nt=Nu;nv=4;scx=Hani
-cp;3284;dm=4E94;gc=No;na=CIRCLED IDEOGRAPH FIVE;NFKC_CF=4E94;nt=Nu;nv=5;scx=Hani
-cp;3285;dm=516D;gc=No;na=CIRCLED IDEOGRAPH SIX;NFKC_CF=516D;nt=Nu;nv=6;scx=Hani
-cp;3286;dm=4E03;gc=No;na=CIRCLED IDEOGRAPH SEVEN;NFKC_CF=4E03;nt=Nu;nv=7;scx=Hani
-cp;3287;dm=516B;gc=No;na=CIRCLED IDEOGRAPH EIGHT;NFKC_CF=516B;nt=Nu;nv=8;scx=Hani
-cp;3288;dm=4E5D;gc=No;na=CIRCLED IDEOGRAPH NINE;NFKC_CF=4E5D;nt=Nu;nv=9;scx=Hani
-cp;3289;dm=5341;gc=No;na=CIRCLED IDEOGRAPH TEN;NFKC_CF=5341;nt=Nu;nv=10;scx=Hani
-cp;328A;dm=6708;na=CIRCLED IDEOGRAPH MOON;NFKC_CF=6708;scx=Hani
-cp;328B;dm=706B;na=CIRCLED IDEOGRAPH FIRE;NFKC_CF=706B;scx=Hani
-cp;328C;dm=6C34;na=CIRCLED IDEOGRAPH WATER;NFKC_CF=6C34;scx=Hani
-cp;328D;dm=6728;na=CIRCLED IDEOGRAPH WOOD;NFKC_CF=6728;scx=Hani
-cp;328E;dm=91D1;na=CIRCLED IDEOGRAPH METAL;NFKC_CF=91D1;scx=Hani
-cp;328F;dm=571F;na=CIRCLED IDEOGRAPH EARTH;NFKC_CF=571F;scx=Hani
-cp;3290;dm=65E5;na=CIRCLED IDEOGRAPH SUN;NFKC_CF=65E5;scx=Hani
-cp;3291;dm=682A;na=CIRCLED IDEOGRAPH STOCK;NFKC_CF=682A;scx=Hani
-cp;3292;dm=6709;na=CIRCLED IDEOGRAPH HAVE;NFKC_CF=6709;scx=Hani
-cp;3293;dm=793E;na=CIRCLED IDEOGRAPH SOCIETY;NFKC_CF=793E;scx=Hani
-cp;3294;dm=540D;na=CIRCLED IDEOGRAPH NAME;NFKC_CF=540D;scx=Hani
-cp;3295;dm=7279;na=CIRCLED IDEOGRAPH SPECIAL;NFKC_CF=7279;scx=Hani
-cp;3296;dm=8CA1;na=CIRCLED IDEOGRAPH FINANCIAL;NFKC_CF=8CA1;scx=Hani
-cp;3297;dm=795D;Emoji;ExtPict;na=CIRCLED IDEOGRAPH CONGRATULATION;NFKC_CF=795D;scx=Hani
-cp;3298;dm=52B4;na=CIRCLED IDEOGRAPH LABOR;NFKC_CF=52B4;scx=Hani
-cp;3299;dm=79D8;Emoji;ExtPict;na=CIRCLED IDEOGRAPH SECRET;NFKC_CF=79D8;scx=Hani
-cp;329A;dm=7537;na=CIRCLED IDEOGRAPH MALE;NFKC_CF=7537;scx=Hani
-cp;329B;dm=5973;na=CIRCLED IDEOGRAPH FEMALE;NFKC_CF=5973;scx=Hani
-cp;329C;dm=9069;na=CIRCLED IDEOGRAPH SUITABLE;NFKC_CF=9069;scx=Hani
-cp;329D;dm=512A;na=CIRCLED IDEOGRAPH EXCELLENT;NFKC_CF=512A;scx=Hani
-cp;329E;dm=5370;na=CIRCLED IDEOGRAPH PRINT;NFKC_CF=5370;scx=Hani
-cp;329F;dm=6CE8;na=CIRCLED IDEOGRAPH ATTENTION;NFKC_CF=6CE8;scx=Hani
-cp;32A0;dm=9805;na=CIRCLED IDEOGRAPH ITEM;NFKC_CF=9805;scx=Hani
-cp;32A1;dm=4F11;na=CIRCLED IDEOGRAPH REST;NFKC_CF=4F11;scx=Hani
-cp;32A2;dm=5199;na=CIRCLED IDEOGRAPH COPY;NFKC_CF=5199;scx=Hani
-cp;32A3;dm=6B63;na=CIRCLED IDEOGRAPH CORRECT;NFKC_CF=6B63;scx=Hani
-cp;32A4;dm=4E0A;na=CIRCLED IDEOGRAPH HIGH;NFKC_CF=4E0A;scx=Hani
-cp;32A5;dm=4E2D;na=CIRCLED IDEOGRAPH CENTRE;NFKC_CF=4E2D;scx=Hani
-cp;32A6;dm=4E0B;na=CIRCLED IDEOGRAPH LOW;NFKC_CF=4E0B;scx=Hani
-cp;32A7;dm=5DE6;na=CIRCLED IDEOGRAPH LEFT;NFKC_CF=5DE6;scx=Hani
-cp;32A8;dm=53F3;na=CIRCLED IDEOGRAPH RIGHT;NFKC_CF=53F3;scx=Hani
-cp;32A9;dm=533B;na=CIRCLED IDEOGRAPH MEDICINE;NFKC_CF=533B;scx=Hani
-cp;32AA;dm=5B97;na=CIRCLED IDEOGRAPH RELIGION;NFKC_CF=5B97;scx=Hani
-cp;32AB;dm=5B66;na=CIRCLED IDEOGRAPH STUDY;NFKC_CF=5B66;scx=Hani
-cp;32AC;dm=76E3;na=CIRCLED IDEOGRAPH SUPERVISE;NFKC_CF=76E3;scx=Hani
-cp;32AD;dm=4F01;na=CIRCLED IDEOGRAPH ENTERPRISE;NFKC_CF=4F01;scx=Hani
-cp;32AE;dm=8CC7;na=CIRCLED IDEOGRAPH RESOURCE;NFKC_CF=8CC7;scx=Hani
-cp;32AF;dm=5354;na=CIRCLED IDEOGRAPH ALLIANCE;NFKC_CF=5354;scx=Hani
-cp;32B0;dm=591C;na=CIRCLED IDEOGRAPH NIGHT;NFKC_CF=591C;scx=Hani
+cp;3280;dm=4E00;gc=No;na=CIRCLED IDEOGRAPH ONE;NFKC_CF=4E00;NFKC_SCF=4E00;nt=Nu;nv=1;scx=Hani
+cp;3281;dm=4E8C;gc=No;na=CIRCLED IDEOGRAPH TWO;NFKC_CF=4E8C;NFKC_SCF=4E8C;nt=Nu;nv=2;scx=Hani
+cp;3282;dm=4E09;gc=No;na=CIRCLED IDEOGRAPH THREE;NFKC_CF=4E09;NFKC_SCF=4E09;nt=Nu;nv=3;scx=Hani
+cp;3283;dm=56DB;gc=No;na=CIRCLED IDEOGRAPH FOUR;NFKC_CF=56DB;NFKC_SCF=56DB;nt=Nu;nv=4;scx=Hani
+cp;3284;dm=4E94;gc=No;na=CIRCLED IDEOGRAPH FIVE;NFKC_CF=4E94;NFKC_SCF=4E94;nt=Nu;nv=5;scx=Hani
+cp;3285;dm=516D;gc=No;na=CIRCLED IDEOGRAPH SIX;NFKC_CF=516D;NFKC_SCF=516D;nt=Nu;nv=6;scx=Hani
+cp;3286;dm=4E03;gc=No;na=CIRCLED IDEOGRAPH SEVEN;NFKC_CF=4E03;NFKC_SCF=4E03;nt=Nu;nv=7;scx=Hani
+cp;3287;dm=516B;gc=No;na=CIRCLED IDEOGRAPH EIGHT;NFKC_CF=516B;NFKC_SCF=516B;nt=Nu;nv=8;scx=Hani
+cp;3288;dm=4E5D;gc=No;na=CIRCLED IDEOGRAPH NINE;NFKC_CF=4E5D;NFKC_SCF=4E5D;nt=Nu;nv=9;scx=Hani
+cp;3289;dm=5341;gc=No;na=CIRCLED IDEOGRAPH TEN;NFKC_CF=5341;NFKC_SCF=5341;nt=Nu;nv=10;scx=Hani
+cp;328A;dm=6708;na=CIRCLED IDEOGRAPH MOON;NFKC_CF=6708;NFKC_SCF=6708;scx=Hani
+cp;328B;dm=706B;na=CIRCLED IDEOGRAPH FIRE;NFKC_CF=706B;NFKC_SCF=706B;scx=Hani
+cp;328C;dm=6C34;na=CIRCLED IDEOGRAPH WATER;NFKC_CF=6C34;NFKC_SCF=6C34;scx=Hani
+cp;328D;dm=6728;na=CIRCLED IDEOGRAPH WOOD;NFKC_CF=6728;NFKC_SCF=6728;scx=Hani
+cp;328E;dm=91D1;na=CIRCLED IDEOGRAPH METAL;NFKC_CF=91D1;NFKC_SCF=91D1;scx=Hani
+cp;328F;dm=571F;na=CIRCLED IDEOGRAPH EARTH;NFKC_CF=571F;NFKC_SCF=571F;scx=Hani
+cp;3290;dm=65E5;na=CIRCLED IDEOGRAPH SUN;NFKC_CF=65E5;NFKC_SCF=65E5;scx=Hani
+cp;3291;dm=682A;na=CIRCLED IDEOGRAPH STOCK;NFKC_CF=682A;NFKC_SCF=682A;scx=Hani
+cp;3292;dm=6709;na=CIRCLED IDEOGRAPH HAVE;NFKC_CF=6709;NFKC_SCF=6709;scx=Hani
+cp;3293;dm=793E;na=CIRCLED IDEOGRAPH SOCIETY;NFKC_CF=793E;NFKC_SCF=793E;scx=Hani
+cp;3294;dm=540D;na=CIRCLED IDEOGRAPH NAME;NFKC_CF=540D;NFKC_SCF=540D;scx=Hani
+cp;3295;dm=7279;na=CIRCLED IDEOGRAPH SPECIAL;NFKC_CF=7279;NFKC_SCF=7279;scx=Hani
+cp;3296;dm=8CA1;na=CIRCLED IDEOGRAPH FINANCIAL;NFKC_CF=8CA1;NFKC_SCF=8CA1;scx=Hani
+cp;3297;dm=795D;Emoji;ExtPict;na=CIRCLED IDEOGRAPH CONGRATULATION;NFKC_CF=795D;NFKC_SCF=795D;scx=Hani
+cp;3298;dm=52B4;na=CIRCLED IDEOGRAPH LABOR;NFKC_CF=52B4;NFKC_SCF=52B4;scx=Hani
+cp;3299;dm=79D8;Emoji;ExtPict;na=CIRCLED IDEOGRAPH SECRET;NFKC_CF=79D8;NFKC_SCF=79D8;scx=Hani
+cp;329A;dm=7537;na=CIRCLED IDEOGRAPH MALE;NFKC_CF=7537;NFKC_SCF=7537;scx=Hani
+cp;329B;dm=5973;na=CIRCLED IDEOGRAPH FEMALE;NFKC_CF=5973;NFKC_SCF=5973;scx=Hani
+cp;329C;dm=9069;na=CIRCLED IDEOGRAPH SUITABLE;NFKC_CF=9069;NFKC_SCF=9069;scx=Hani
+cp;329D;dm=512A;na=CIRCLED IDEOGRAPH EXCELLENT;NFKC_CF=512A;NFKC_SCF=512A;scx=Hani
+cp;329E;dm=5370;na=CIRCLED IDEOGRAPH PRINT;NFKC_CF=5370;NFKC_SCF=5370;scx=Hani
+cp;329F;dm=6CE8;na=CIRCLED IDEOGRAPH ATTENTION;NFKC_CF=6CE8;NFKC_SCF=6CE8;scx=Hani
+cp;32A0;dm=9805;na=CIRCLED IDEOGRAPH ITEM;NFKC_CF=9805;NFKC_SCF=9805;scx=Hani
+cp;32A1;dm=4F11;na=CIRCLED IDEOGRAPH REST;NFKC_CF=4F11;NFKC_SCF=4F11;scx=Hani
+cp;32A2;dm=5199;na=CIRCLED IDEOGRAPH COPY;NFKC_CF=5199;NFKC_SCF=5199;scx=Hani
+cp;32A3;dm=6B63;na=CIRCLED IDEOGRAPH CORRECT;NFKC_CF=6B63;NFKC_SCF=6B63;scx=Hani
+cp;32A4;dm=4E0A;na=CIRCLED IDEOGRAPH HIGH;NFKC_CF=4E0A;NFKC_SCF=4E0A;scx=Hani
+cp;32A5;dm=4E2D;na=CIRCLED IDEOGRAPH CENTRE;NFKC_CF=4E2D;NFKC_SCF=4E2D;scx=Hani
+cp;32A6;dm=4E0B;na=CIRCLED IDEOGRAPH LOW;NFKC_CF=4E0B;NFKC_SCF=4E0B;scx=Hani
+cp;32A7;dm=5DE6;na=CIRCLED IDEOGRAPH LEFT;NFKC_CF=5DE6;NFKC_SCF=5DE6;scx=Hani
+cp;32A8;dm=53F3;na=CIRCLED IDEOGRAPH RIGHT;NFKC_CF=53F3;NFKC_SCF=53F3;scx=Hani
+cp;32A9;dm=533B;na=CIRCLED IDEOGRAPH MEDICINE;NFKC_CF=533B;NFKC_SCF=533B;scx=Hani
+cp;32AA;dm=5B97;na=CIRCLED IDEOGRAPH RELIGION;NFKC_CF=5B97;NFKC_SCF=5B97;scx=Hani
+cp;32AB;dm=5B66;na=CIRCLED IDEOGRAPH STUDY;NFKC_CF=5B66;NFKC_SCF=5B66;scx=Hani
+cp;32AC;dm=76E3;na=CIRCLED IDEOGRAPH SUPERVISE;NFKC_CF=76E3;NFKC_SCF=76E3;scx=Hani
+cp;32AD;dm=4F01;na=CIRCLED IDEOGRAPH ENTERPRISE;NFKC_CF=4F01;NFKC_SCF=4F01;scx=Hani
+cp;32AE;dm=8CC7;na=CIRCLED IDEOGRAPH RESOURCE;NFKC_CF=8CC7;NFKC_SCF=8CC7;scx=Hani
+cp;32AF;dm=5354;na=CIRCLED IDEOGRAPH ALLIANCE;NFKC_CF=5354;NFKC_SCF=5354;scx=Hani
+cp;32B0;dm=591C;na=CIRCLED IDEOGRAPH NIGHT;NFKC_CF=591C;NFKC_SCF=591C;scx=Hani
# Circled numbers
-cp;32B1;age=3.2;bc=ON;dm=0033 0036;gc=No;na=CIRCLED NUMBER THIRTY SIX;NFKC_CF=0033 0036;nt=Nu;nv=36
-cp;32B2;age=3.2;bc=ON;dm=0033 0037;gc=No;na=CIRCLED NUMBER THIRTY SEVEN;NFKC_CF=0033 0037;nt=Nu;nv=37
-cp;32B3;age=3.2;bc=ON;dm=0033 0038;gc=No;na=CIRCLED NUMBER THIRTY EIGHT;NFKC_CF=0033 0038;nt=Nu;nv=38
-cp;32B4;age=3.2;bc=ON;dm=0033 0039;gc=No;na=CIRCLED NUMBER THIRTY NINE;NFKC_CF=0033 0039;nt=Nu;nv=39
-cp;32B5;age=3.2;bc=ON;dm=0034 0030;gc=No;na=CIRCLED NUMBER FORTY;NFKC_CF=0034 0030;nt=Nu;nv=40
-cp;32B6;age=3.2;bc=ON;dm=0034 0031;gc=No;na=CIRCLED NUMBER FORTY ONE;NFKC_CF=0034 0031;nt=Nu;nv=41
-cp;32B7;age=3.2;bc=ON;dm=0034 0032;gc=No;na=CIRCLED NUMBER FORTY TWO;NFKC_CF=0034 0032;nt=Nu;nv=42
-cp;32B8;age=3.2;bc=ON;dm=0034 0033;gc=No;na=CIRCLED NUMBER FORTY THREE;NFKC_CF=0034 0033;nt=Nu;nv=43
-cp;32B9;age=3.2;bc=ON;dm=0034 0034;gc=No;na=CIRCLED NUMBER FORTY FOUR;NFKC_CF=0034 0034;nt=Nu;nv=44
-cp;32BA;age=3.2;bc=ON;dm=0034 0035;gc=No;na=CIRCLED NUMBER FORTY FIVE;NFKC_CF=0034 0035;nt=Nu;nv=45
-cp;32BB;age=3.2;bc=ON;dm=0034 0036;gc=No;na=CIRCLED NUMBER FORTY SIX;NFKC_CF=0034 0036;nt=Nu;nv=46
-cp;32BC;age=3.2;bc=ON;dm=0034 0037;gc=No;na=CIRCLED NUMBER FORTY SEVEN;NFKC_CF=0034 0037;nt=Nu;nv=47
-cp;32BD;age=3.2;bc=ON;dm=0034 0038;gc=No;na=CIRCLED NUMBER FORTY EIGHT;NFKC_CF=0034 0038;nt=Nu;nv=48
-cp;32BE;age=3.2;bc=ON;dm=0034 0039;gc=No;na=CIRCLED NUMBER FORTY NINE;NFKC_CF=0034 0039;nt=Nu;nv=49
-cp;32BF;age=3.2;bc=ON;dm=0035 0030;gc=No;na=CIRCLED NUMBER FIFTY;NFKC_CF=0035 0030;nt=Nu;nv=50
+cp;32B1;age=3.2;bc=ON;dm=0033 0036;gc=No;na=CIRCLED NUMBER THIRTY SIX;NFKC_CF=0033 0036;NFKC_SCF=0033 0036;nt=Nu;nv=36
+cp;32B2;age=3.2;bc=ON;dm=0033 0037;gc=No;na=CIRCLED NUMBER THIRTY SEVEN;NFKC_CF=0033 0037;NFKC_SCF=0033 0037;nt=Nu;nv=37
+cp;32B3;age=3.2;bc=ON;dm=0033 0038;gc=No;na=CIRCLED NUMBER THIRTY EIGHT;NFKC_CF=0033 0038;NFKC_SCF=0033 0038;nt=Nu;nv=38
+cp;32B4;age=3.2;bc=ON;dm=0033 0039;gc=No;na=CIRCLED NUMBER THIRTY NINE;NFKC_CF=0033 0039;NFKC_SCF=0033 0039;nt=Nu;nv=39
+cp;32B5;age=3.2;bc=ON;dm=0034 0030;gc=No;na=CIRCLED NUMBER FORTY;NFKC_CF=0034 0030;NFKC_SCF=0034 0030;nt=Nu;nv=40
+cp;32B6;age=3.2;bc=ON;dm=0034 0031;gc=No;na=CIRCLED NUMBER FORTY ONE;NFKC_CF=0034 0031;NFKC_SCF=0034 0031;nt=Nu;nv=41
+cp;32B7;age=3.2;bc=ON;dm=0034 0032;gc=No;na=CIRCLED NUMBER FORTY TWO;NFKC_CF=0034 0032;NFKC_SCF=0034 0032;nt=Nu;nv=42
+cp;32B8;age=3.2;bc=ON;dm=0034 0033;gc=No;na=CIRCLED NUMBER FORTY THREE;NFKC_CF=0034 0033;NFKC_SCF=0034 0033;nt=Nu;nv=43
+cp;32B9;age=3.2;bc=ON;dm=0034 0034;gc=No;na=CIRCLED NUMBER FORTY FOUR;NFKC_CF=0034 0034;NFKC_SCF=0034 0034;nt=Nu;nv=44
+cp;32BA;age=3.2;bc=ON;dm=0034 0035;gc=No;na=CIRCLED NUMBER FORTY FIVE;NFKC_CF=0034 0035;NFKC_SCF=0034 0035;nt=Nu;nv=45
+cp;32BB;age=3.2;bc=ON;dm=0034 0036;gc=No;na=CIRCLED NUMBER FORTY SIX;NFKC_CF=0034 0036;NFKC_SCF=0034 0036;nt=Nu;nv=46
+cp;32BC;age=3.2;bc=ON;dm=0034 0037;gc=No;na=CIRCLED NUMBER FORTY SEVEN;NFKC_CF=0034 0037;NFKC_SCF=0034 0037;nt=Nu;nv=47
+cp;32BD;age=3.2;bc=ON;dm=0034 0038;gc=No;na=CIRCLED NUMBER FORTY EIGHT;NFKC_CF=0034 0038;NFKC_SCF=0034 0038;nt=Nu;nv=48
+cp;32BE;age=3.2;bc=ON;dm=0034 0039;gc=No;na=CIRCLED NUMBER FORTY NINE;NFKC_CF=0034 0039;NFKC_SCF=0034 0039;nt=Nu;nv=49
+cp;32BF;age=3.2;bc=ON;dm=0035 0030;gc=No;na=CIRCLED NUMBER FIFTY;NFKC_CF=0035 0030;NFKC_SCF=0035 0030;nt=Nu;nv=50
# Telegraph symbols for months
-cp;32C0;dm=0031 6708;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY;NFKC_CF=0031 6708;scx=Hani
-cp;32C1;dm=0032 6708;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY;NFKC_CF=0032 6708;scx=Hani
-cp;32C2;dm=0033 6708;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH;NFKC_CF=0033 6708;scx=Hani
-cp;32C3;dm=0034 6708;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL;NFKC_CF=0034 6708;scx=Hani
-cp;32C4;dm=0035 6708;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY;NFKC_CF=0035 6708;scx=Hani
-cp;32C5;dm=0036 6708;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE;NFKC_CF=0036 6708;scx=Hani
-cp;32C6;dm=0037 6708;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY;NFKC_CF=0037 6708;scx=Hani
-cp;32C7;dm=0038 6708;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST;NFKC_CF=0038 6708;scx=Hani
-cp;32C8;dm=0039 6708;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER;NFKC_CF=0039 6708;scx=Hani
-cp;32C9;dm=0031 0030 6708;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER;NFKC_CF=0031 0030 6708;scx=Hani
-cp;32CA;dm=0031 0031 6708;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER;NFKC_CF=0031 0031 6708;scx=Hani
-cp;32CB;dm=0031 0032 6708;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER;NFKC_CF=0031 0032 6708;scx=Hani
+cp;32C0;dm=0031 6708;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY;NFKC_CF=0031 6708;NFKC_SCF=0031 6708;scx=Hani
+cp;32C1;dm=0032 6708;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY;NFKC_CF=0032 6708;NFKC_SCF=0032 6708;scx=Hani
+cp;32C2;dm=0033 6708;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH;NFKC_CF=0033 6708;NFKC_SCF=0033 6708;scx=Hani
+cp;32C3;dm=0034 6708;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL;NFKC_CF=0034 6708;NFKC_SCF=0034 6708;scx=Hani
+cp;32C4;dm=0035 6708;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY;NFKC_CF=0035 6708;NFKC_SCF=0035 6708;scx=Hani
+cp;32C5;dm=0036 6708;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE;NFKC_CF=0036 6708;NFKC_SCF=0036 6708;scx=Hani
+cp;32C6;dm=0037 6708;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY;NFKC_CF=0037 6708;NFKC_SCF=0037 6708;scx=Hani
+cp;32C7;dm=0038 6708;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST;NFKC_CF=0038 6708;NFKC_SCF=0038 6708;scx=Hani
+cp;32C8;dm=0039 6708;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER;NFKC_CF=0039 6708;NFKC_SCF=0039 6708;scx=Hani
+cp;32C9;dm=0031 0030 6708;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER;NFKC_CF=0031 0030 6708;NFKC_SCF=0031 0030 6708;scx=Hani
+cp;32CA;dm=0031 0031 6708;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER;NFKC_CF=0031 0031 6708;NFKC_SCF=0031 0031 6708;scx=Hani
+cp;32CB;dm=0031 0032 6708;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER;NFKC_CF=0031 0032 6708;NFKC_SCF=0031 0032 6708;scx=Hani
# Squared Latin abbreviations
-cp;32CC;age=4.0;bc=ON;dm=0048 0067;dt=Sqr;FC_NFKC=0068 0067;na=SQUARE HG;NFKC_CF=0068 0067
-cp;32CD;age=4.0;bc=ON;dm=0065 0072 0067;dt=Sqr;na=SQUARE ERG;NFKC_CF=0065 0072 0067
-cp;32CE;age=4.0;bc=ON;dm=0065 0056;dt=Sqr;FC_NFKC=0065 0076;na=SQUARE EV;NFKC_CF=0065 0076
-cp;32CF;age=4.0;bc=ON;dm=004C 0054 0044;dt=Sqr;FC_NFKC=006C 0074 0064;na=LIMITED LIABILITY SIGN;NFKC_CF=006C 0074 0064
+cp;32CC;age=4.0;bc=ON;dm=0048 0067;dt=Sqr;FC_NFKC=0068 0067;na=SQUARE HG;NFKC_CF=0068 0067;NFKC_SCF=0068 0067
+cp;32CD;age=4.0;bc=ON;dm=0065 0072 0067;dt=Sqr;na=SQUARE ERG;NFKC_CF=0065 0072 0067;NFKC_SCF=0065 0072 0067
+cp;32CE;age=4.0;bc=ON;dm=0065 0056;dt=Sqr;FC_NFKC=0065 0076;na=SQUARE EV;NFKC_CF=0065 0076;NFKC_SCF=0065 0076
+cp;32CF;age=4.0;bc=ON;dm=004C 0054 0044;dt=Sqr;FC_NFKC=006C 0074 0064;na=LIMITED LIABILITY SIGN;NFKC_CF=006C 0074 0064;NFKC_SCF=006C 0074 0064
# Circled Katakana
-cp;32D0;dm=30A2;na=CIRCLED KATAKANA A;NFKC_CF=30A2;sc=Kana;WB=KA
-cp;32D1;dm=30A4;na=CIRCLED KATAKANA I;NFKC_CF=30A4;sc=Kana;WB=KA
-cp;32D2;dm=30A6;na=CIRCLED KATAKANA U;NFKC_CF=30A6;sc=Kana;WB=KA
-cp;32D3;dm=30A8;na=CIRCLED KATAKANA E;NFKC_CF=30A8;sc=Kana;WB=KA
-cp;32D4;dm=30AA;na=CIRCLED KATAKANA O;NFKC_CF=30AA;sc=Kana;WB=KA
-cp;32D5;dm=30AB;na=CIRCLED KATAKANA KA;NFKC_CF=30AB;sc=Kana;WB=KA
-cp;32D6;dm=30AD;na=CIRCLED KATAKANA KI;NFKC_CF=30AD;sc=Kana;WB=KA
-cp;32D7;dm=30AF;na=CIRCLED KATAKANA KU;NFKC_CF=30AF;sc=Kana;WB=KA
-cp;32D8;dm=30B1;na=CIRCLED KATAKANA KE;NFKC_CF=30B1;sc=Kana;WB=KA
-cp;32D9;dm=30B3;na=CIRCLED KATAKANA KO;NFKC_CF=30B3;sc=Kana;WB=KA
-cp;32DA;dm=30B5;na=CIRCLED KATAKANA SA;NFKC_CF=30B5;sc=Kana;WB=KA
-cp;32DB;dm=30B7;na=CIRCLED KATAKANA SI;NFKC_CF=30B7;sc=Kana;WB=KA
-cp;32DC;dm=30B9;na=CIRCLED KATAKANA SU;NFKC_CF=30B9;sc=Kana;WB=KA
-cp;32DD;dm=30BB;na=CIRCLED KATAKANA SE;NFKC_CF=30BB;sc=Kana;WB=KA
-cp;32DE;dm=30BD;na=CIRCLED KATAKANA SO;NFKC_CF=30BD;sc=Kana;WB=KA
-cp;32DF;dm=30BF;na=CIRCLED KATAKANA TA;NFKC_CF=30BF;sc=Kana;WB=KA
-cp;32E0;dm=30C1;na=CIRCLED KATAKANA TI;NFKC_CF=30C1;sc=Kana;WB=KA
-cp;32E1;dm=30C4;na=CIRCLED KATAKANA TU;NFKC_CF=30C4;sc=Kana;WB=KA
-cp;32E2;dm=30C6;na=CIRCLED KATAKANA TE;NFKC_CF=30C6;sc=Kana;WB=KA
-cp;32E3;dm=30C8;na=CIRCLED KATAKANA TO;NFKC_CF=30C8;sc=Kana;WB=KA
-cp;32E4;dm=30CA;na=CIRCLED KATAKANA NA;NFKC_CF=30CA;sc=Kana;WB=KA
-cp;32E5;dm=30CB;na=CIRCLED KATAKANA NI;NFKC_CF=30CB;sc=Kana;WB=KA
-cp;32E6;dm=30CC;na=CIRCLED KATAKANA NU;NFKC_CF=30CC;sc=Kana;WB=KA
-cp;32E7;dm=30CD;na=CIRCLED KATAKANA NE;NFKC_CF=30CD;sc=Kana;WB=KA
-cp;32E8;dm=30CE;na=CIRCLED KATAKANA NO;NFKC_CF=30CE;sc=Kana;WB=KA
-cp;32E9;dm=30CF;na=CIRCLED KATAKANA HA;NFKC_CF=30CF;sc=Kana;WB=KA
-cp;32EA;dm=30D2;na=CIRCLED KATAKANA HI;NFKC_CF=30D2;sc=Kana;WB=KA
-cp;32EB;dm=30D5;na=CIRCLED KATAKANA HU;NFKC_CF=30D5;sc=Kana;WB=KA
-cp;32EC;dm=30D8;na=CIRCLED KATAKANA HE;NFKC_CF=30D8;sc=Kana;WB=KA
-cp;32ED;dm=30DB;na=CIRCLED KATAKANA HO;NFKC_CF=30DB;sc=Kana;WB=KA
-cp;32EE;dm=30DE;na=CIRCLED KATAKANA MA;NFKC_CF=30DE;sc=Kana;WB=KA
-cp;32EF;dm=30DF;na=CIRCLED KATAKANA MI;NFKC_CF=30DF;sc=Kana;WB=KA
-cp;32F0;dm=30E0;na=CIRCLED KATAKANA MU;NFKC_CF=30E0;sc=Kana;WB=KA
-cp;32F1;dm=30E1;na=CIRCLED KATAKANA ME;NFKC_CF=30E1;sc=Kana;WB=KA
-cp;32F2;dm=30E2;na=CIRCLED KATAKANA MO;NFKC_CF=30E2;sc=Kana;WB=KA
-cp;32F3;dm=30E4;na=CIRCLED KATAKANA YA;NFKC_CF=30E4;sc=Kana;WB=KA
-cp;32F4;dm=30E6;na=CIRCLED KATAKANA YU;NFKC_CF=30E6;sc=Kana;WB=KA
-cp;32F5;dm=30E8;na=CIRCLED KATAKANA YO;NFKC_CF=30E8;sc=Kana;WB=KA
-cp;32F6;dm=30E9;na=CIRCLED KATAKANA RA;NFKC_CF=30E9;sc=Kana;WB=KA
-cp;32F7;dm=30EA;na=CIRCLED KATAKANA RI;NFKC_CF=30EA;sc=Kana;WB=KA
-cp;32F8;dm=30EB;na=CIRCLED KATAKANA RU;NFKC_CF=30EB;sc=Kana;WB=KA
-cp;32F9;dm=30EC;na=CIRCLED KATAKANA RE;NFKC_CF=30EC;sc=Kana;WB=KA
-cp;32FA;dm=30ED;na=CIRCLED KATAKANA RO;NFKC_CF=30ED;sc=Kana;WB=KA
-cp;32FB;dm=30EF;na=CIRCLED KATAKANA WA;NFKC_CF=30EF;sc=Kana;WB=KA
-cp;32FC;dm=30F0;na=CIRCLED KATAKANA WI;NFKC_CF=30F0;sc=Kana;WB=KA
-cp;32FD;dm=30F1;na=CIRCLED KATAKANA WE;NFKC_CF=30F1;sc=Kana;WB=KA
-cp;32FE;dm=30F2;na=CIRCLED KATAKANA WO;NFKC_CF=30F2;sc=Kana;WB=KA
+cp;32D0;dm=30A2;na=CIRCLED KATAKANA A;NFKC_CF=30A2;NFKC_SCF=30A2;sc=Kana;WB=KA
+cp;32D1;dm=30A4;na=CIRCLED KATAKANA I;NFKC_CF=30A4;NFKC_SCF=30A4;sc=Kana;WB=KA
+cp;32D2;dm=30A6;na=CIRCLED KATAKANA U;NFKC_CF=30A6;NFKC_SCF=30A6;sc=Kana;WB=KA
+cp;32D3;dm=30A8;na=CIRCLED KATAKANA E;NFKC_CF=30A8;NFKC_SCF=30A8;sc=Kana;WB=KA
+cp;32D4;dm=30AA;na=CIRCLED KATAKANA O;NFKC_CF=30AA;NFKC_SCF=30AA;sc=Kana;WB=KA
+cp;32D5;dm=30AB;na=CIRCLED KATAKANA KA;NFKC_CF=30AB;NFKC_SCF=30AB;sc=Kana;WB=KA
+cp;32D6;dm=30AD;na=CIRCLED KATAKANA KI;NFKC_CF=30AD;NFKC_SCF=30AD;sc=Kana;WB=KA
+cp;32D7;dm=30AF;na=CIRCLED KATAKANA KU;NFKC_CF=30AF;NFKC_SCF=30AF;sc=Kana;WB=KA
+cp;32D8;dm=30B1;na=CIRCLED KATAKANA KE;NFKC_CF=30B1;NFKC_SCF=30B1;sc=Kana;WB=KA
+cp;32D9;dm=30B3;na=CIRCLED KATAKANA KO;NFKC_CF=30B3;NFKC_SCF=30B3;sc=Kana;WB=KA
+cp;32DA;dm=30B5;na=CIRCLED KATAKANA SA;NFKC_CF=30B5;NFKC_SCF=30B5;sc=Kana;WB=KA
+cp;32DB;dm=30B7;na=CIRCLED KATAKANA SI;NFKC_CF=30B7;NFKC_SCF=30B7;sc=Kana;WB=KA
+cp;32DC;dm=30B9;na=CIRCLED KATAKANA SU;NFKC_CF=30B9;NFKC_SCF=30B9;sc=Kana;WB=KA
+cp;32DD;dm=30BB;na=CIRCLED KATAKANA SE;NFKC_CF=30BB;NFKC_SCF=30BB;sc=Kana;WB=KA
+cp;32DE;dm=30BD;na=CIRCLED KATAKANA SO;NFKC_CF=30BD;NFKC_SCF=30BD;sc=Kana;WB=KA
+cp;32DF;dm=30BF;na=CIRCLED KATAKANA TA;NFKC_CF=30BF;NFKC_SCF=30BF;sc=Kana;WB=KA
+cp;32E0;dm=30C1;na=CIRCLED KATAKANA TI;NFKC_CF=30C1;NFKC_SCF=30C1;sc=Kana;WB=KA
+cp;32E1;dm=30C4;na=CIRCLED KATAKANA TU;NFKC_CF=30C4;NFKC_SCF=30C4;sc=Kana;WB=KA
+cp;32E2;dm=30C6;na=CIRCLED KATAKANA TE;NFKC_CF=30C6;NFKC_SCF=30C6;sc=Kana;WB=KA
+cp;32E3;dm=30C8;na=CIRCLED KATAKANA TO;NFKC_CF=30C8;NFKC_SCF=30C8;sc=Kana;WB=KA
+cp;32E4;dm=30CA;na=CIRCLED KATAKANA NA;NFKC_CF=30CA;NFKC_SCF=30CA;sc=Kana;WB=KA
+cp;32E5;dm=30CB;na=CIRCLED KATAKANA NI;NFKC_CF=30CB;NFKC_SCF=30CB;sc=Kana;WB=KA
+cp;32E6;dm=30CC;na=CIRCLED KATAKANA NU;NFKC_CF=30CC;NFKC_SCF=30CC;sc=Kana;WB=KA
+cp;32E7;dm=30CD;na=CIRCLED KATAKANA NE;NFKC_CF=30CD;NFKC_SCF=30CD;sc=Kana;WB=KA
+cp;32E8;dm=30CE;na=CIRCLED KATAKANA NO;NFKC_CF=30CE;NFKC_SCF=30CE;sc=Kana;WB=KA
+cp;32E9;dm=30CF;na=CIRCLED KATAKANA HA;NFKC_CF=30CF;NFKC_SCF=30CF;sc=Kana;WB=KA
+cp;32EA;dm=30D2;na=CIRCLED KATAKANA HI;NFKC_CF=30D2;NFKC_SCF=30D2;sc=Kana;WB=KA
+cp;32EB;dm=30D5;na=CIRCLED KATAKANA HU;NFKC_CF=30D5;NFKC_SCF=30D5;sc=Kana;WB=KA
+cp;32EC;dm=30D8;na=CIRCLED KATAKANA HE;NFKC_CF=30D8;NFKC_SCF=30D8;sc=Kana;WB=KA
+cp;32ED;dm=30DB;na=CIRCLED KATAKANA HO;NFKC_CF=30DB;NFKC_SCF=30DB;sc=Kana;WB=KA
+cp;32EE;dm=30DE;na=CIRCLED KATAKANA MA;NFKC_CF=30DE;NFKC_SCF=30DE;sc=Kana;WB=KA
+cp;32EF;dm=30DF;na=CIRCLED KATAKANA MI;NFKC_CF=30DF;NFKC_SCF=30DF;sc=Kana;WB=KA
+cp;32F0;dm=30E0;na=CIRCLED KATAKANA MU;NFKC_CF=30E0;NFKC_SCF=30E0;sc=Kana;WB=KA
+cp;32F1;dm=30E1;na=CIRCLED KATAKANA ME;NFKC_CF=30E1;NFKC_SCF=30E1;sc=Kana;WB=KA
+cp;32F2;dm=30E2;na=CIRCLED KATAKANA MO;NFKC_CF=30E2;NFKC_SCF=30E2;sc=Kana;WB=KA
+cp;32F3;dm=30E4;na=CIRCLED KATAKANA YA;NFKC_CF=30E4;NFKC_SCF=30E4;sc=Kana;WB=KA
+cp;32F4;dm=30E6;na=CIRCLED KATAKANA YU;NFKC_CF=30E6;NFKC_SCF=30E6;sc=Kana;WB=KA
+cp;32F5;dm=30E8;na=CIRCLED KATAKANA YO;NFKC_CF=30E8;NFKC_SCF=30E8;sc=Kana;WB=KA
+cp;32F6;dm=30E9;na=CIRCLED KATAKANA RA;NFKC_CF=30E9;NFKC_SCF=30E9;sc=Kana;WB=KA
+cp;32F7;dm=30EA;na=CIRCLED KATAKANA RI;NFKC_CF=30EA;NFKC_SCF=30EA;sc=Kana;WB=KA
+cp;32F8;dm=30EB;na=CIRCLED KATAKANA RU;NFKC_CF=30EB;NFKC_SCF=30EB;sc=Kana;WB=KA
+cp;32F9;dm=30EC;na=CIRCLED KATAKANA RE;NFKC_CF=30EC;NFKC_SCF=30EC;sc=Kana;WB=KA
+cp;32FA;dm=30ED;na=CIRCLED KATAKANA RO;NFKC_CF=30ED;NFKC_SCF=30ED;sc=Kana;WB=KA
+cp;32FB;dm=30EF;na=CIRCLED KATAKANA WA;NFKC_CF=30EF;NFKC_SCF=30EF;sc=Kana;WB=KA
+cp;32FC;dm=30F0;na=CIRCLED KATAKANA WI;NFKC_CF=30F0;NFKC_SCF=30F0;sc=Kana;WB=KA
+cp;32FD;dm=30F1;na=CIRCLED KATAKANA WE;NFKC_CF=30F1;NFKC_SCF=30F1;sc=Kana;WB=KA
+cp;32FE;dm=30F2;na=CIRCLED KATAKANA WO;NFKC_CF=30F2;NFKC_SCF=30F2;sc=Kana;WB=KA
# Japanese era name
-cp;32FF;age=12.1;dm=4EE4 548C;dt=Sqr;na=SQUARE ERA NAME REIWA;NFKC_CF=4EE4 548C;scx=Hani;vo=Tu
+cp;32FF;age=12.1;dm=4EE4 548C;dt=Sqr;na=SQUARE ERA NAME REIWA;NFKC_CF=4EE4 548C;NFKC_SCF=4EE4 548C;scx=Hani;vo=Tu
-block;3300..33FF;age=1.1;blk=CJK_Compat;CWKCF;dt=Sqr;ea=W;gc=So;Gr_Base;lb=ID;NFKC_QC=N;NFKD_QC=N;sc=Zyyy;vo=U
+block;3300..33FF;age=1.1;blk=CJK_Compat;CWKCF;dt=Sqr;ea=W;gc=So;Gr_Base;lb=ID;NFKC_QC=N;NFKC_SCF=006B 006D;NFKD_QC=N;sc=Zyyy;vo=U
# 3300..33FF CJK Compatibility
# Squared Katakana words
-cp;3300;dm=30A2 30D1 30FC 30C8;na=SQUARE APAATO;NFKC_CF=30A2 30D1 30FC 30C8;sc=Kana;vo=Tu;WB=KA
-cp;3301;dm=30A2 30EB 30D5 30A1;na=SQUARE ARUHUA;NFKC_CF=30A2 30EB 30D5 30A1;sc=Kana;vo=Tu;WB=KA
-cp;3302;dm=30A2 30F3 30DA 30A2;na=SQUARE ANPEA;NFKC_CF=30A2 30F3 30DA 30A2;sc=Kana;vo=Tu;WB=KA
-cp;3303;dm=30A2 30FC 30EB;na=SQUARE AARU;NFKC_CF=30A2 30FC 30EB;sc=Kana;vo=Tu;WB=KA
-cp;3304;dm=30A4 30CB 30F3 30B0;na=SQUARE ININGU;NFKC_CF=30A4 30CB 30F3 30B0;sc=Kana;vo=Tu;WB=KA
-cp;3305;dm=30A4 30F3 30C1;na=SQUARE INTI;NFKC_CF=30A4 30F3 30C1;sc=Kana;vo=Tu;WB=KA
-cp;3306;dm=30A6 30A9 30F3;na=SQUARE UON;NFKC_CF=30A6 30A9 30F3;sc=Kana;vo=Tu;WB=KA
-cp;3307;dm=30A8 30B9 30AF 30FC 30C9;na=SQUARE ESUKUUDO;NFKC_CF=30A8 30B9 30AF 30FC 30C9;sc=Kana;vo=Tu;WB=KA
-cp;3308;dm=30A8 30FC 30AB 30FC;na=SQUARE EEKAA;NFKC_CF=30A8 30FC 30AB 30FC;sc=Kana;vo=Tu;WB=KA
-cp;3309;dm=30AA 30F3 30B9;na=SQUARE ONSU;NFKC_CF=30AA 30F3 30B9;sc=Kana;vo=Tu;WB=KA
-cp;330A;dm=30AA 30FC 30E0;na=SQUARE OOMU;NFKC_CF=30AA 30FC 30E0;sc=Kana;vo=Tu;WB=KA
-cp;330B;dm=30AB 30A4 30EA;na=SQUARE KAIRI;NFKC_CF=30AB 30A4 30EA;sc=Kana;vo=Tu;WB=KA
-cp;330C;dm=30AB 30E9 30C3 30C8;na=SQUARE KARATTO;NFKC_CF=30AB 30E9 30C3 30C8;sc=Kana;vo=Tu;WB=KA
-cp;330D;dm=30AB 30ED 30EA 30FC;na=SQUARE KARORII;NFKC_CF=30AB 30ED 30EA 30FC;sc=Kana;vo=Tu;WB=KA
-cp;330E;dm=30AC 30ED 30F3;na=SQUARE GARON;NFKC_CF=30AC 30ED 30F3;sc=Kana;vo=Tu;WB=KA
-cp;330F;dm=30AC 30F3 30DE;na=SQUARE GANMA;NFKC_CF=30AC 30F3 30DE;sc=Kana;vo=Tu;WB=KA
-cp;3310;dm=30AE 30AC;na=SQUARE GIGA;NFKC_CF=30AE 30AC;sc=Kana;vo=Tu;WB=KA
-cp;3311;dm=30AE 30CB 30FC;na=SQUARE GINII;NFKC_CF=30AE 30CB 30FC;sc=Kana;vo=Tu;WB=KA
-cp;3312;dm=30AD 30E5 30EA 30FC;na=SQUARE KYURII;NFKC_CF=30AD 30E5 30EA 30FC;sc=Kana;vo=Tu;WB=KA
-cp;3313;dm=30AE 30EB 30C0 30FC;na=SQUARE GIRUDAA;NFKC_CF=30AE 30EB 30C0 30FC;sc=Kana;vo=Tu;WB=KA
-cp;3314;dm=30AD 30ED;na=SQUARE KIRO;NFKC_CF=30AD 30ED;sc=Kana;vo=Tu;WB=KA
-cp;3315;dm=30AD 30ED 30B0 30E9 30E0;na=SQUARE KIROGURAMU;NFKC_CF=30AD 30ED 30B0 30E9 30E0;sc=Kana;vo=Tu;WB=KA
-cp;3316;dm=30AD 30ED 30E1 30FC 30C8 30EB;na=SQUARE KIROMEETORU;NFKC_CF=30AD 30ED 30E1 30FC 30C8 30EB;sc=Kana;vo=Tu;WB=KA
-cp;3317;dm=30AD 30ED 30EF 30C3 30C8;na=SQUARE KIROWATTO;NFKC_CF=30AD 30ED 30EF 30C3 30C8;sc=Kana;vo=Tu;WB=KA
-cp;3318;dm=30B0 30E9 30E0;na=SQUARE GURAMU;NFKC_CF=30B0 30E9 30E0;sc=Kana;vo=Tu;WB=KA
-cp;3319;dm=30B0 30E9 30E0 30C8 30F3;na=SQUARE GURAMUTON;NFKC_CF=30B0 30E9 30E0 30C8 30F3;sc=Kana;vo=Tu;WB=KA
-cp;331A;dm=30AF 30EB 30BC 30A4 30ED;na=SQUARE KURUZEIRO;NFKC_CF=30AF 30EB 30BC 30A4 30ED;sc=Kana;vo=Tu;WB=KA
-cp;331B;dm=30AF 30ED 30FC 30CD;na=SQUARE KUROONE;NFKC_CF=30AF 30ED 30FC 30CD;sc=Kana;vo=Tu;WB=KA
-cp;331C;dm=30B1 30FC 30B9;na=SQUARE KEESU;NFKC_CF=30B1 30FC 30B9;sc=Kana;vo=Tu;WB=KA
-cp;331D;dm=30B3 30EB 30CA;na=SQUARE KORUNA;NFKC_CF=30B3 30EB 30CA;sc=Kana;vo=Tu;WB=KA
-cp;331E;dm=30B3 30FC 30DD;na=SQUARE KOOPO;NFKC_CF=30B3 30FC 30DD;sc=Kana;vo=Tu;WB=KA
-cp;331F;dm=30B5 30A4 30AF 30EB;na=SQUARE SAIKURU;NFKC_CF=30B5 30A4 30AF 30EB;sc=Kana;vo=Tu;WB=KA
-cp;3320;dm=30B5 30F3 30C1 30FC 30E0;na=SQUARE SANTIIMU;NFKC_CF=30B5 30F3 30C1 30FC 30E0;sc=Kana;vo=Tu;WB=KA
-cp;3321;dm=30B7 30EA 30F3 30B0;na=SQUARE SIRINGU;NFKC_CF=30B7 30EA 30F3 30B0;sc=Kana;vo=Tu;WB=KA
-cp;3322;dm=30BB 30F3 30C1;na=SQUARE SENTI;NFKC_CF=30BB 30F3 30C1;sc=Kana;vo=Tu;WB=KA
-cp;3323;dm=30BB 30F3 30C8;na=SQUARE SENTO;NFKC_CF=30BB 30F3 30C8;sc=Kana;vo=Tu;WB=KA
-cp;3324;dm=30C0 30FC 30B9;na=SQUARE DAASU;NFKC_CF=30C0 30FC 30B9;sc=Kana;vo=Tu;WB=KA
-cp;3325;dm=30C7 30B7;na=SQUARE DESI;NFKC_CF=30C7 30B7;sc=Kana;vo=Tu;WB=KA
-cp;3326;dm=30C9 30EB;na=SQUARE DORU;NFKC_CF=30C9 30EB;sc=Kana;vo=Tu;WB=KA
-cp;3327;dm=30C8 30F3;na=SQUARE TON;NFKC_CF=30C8 30F3;sc=Kana;vo=Tu;WB=KA
-cp;3328;dm=30CA 30CE;na=SQUARE NANO;NFKC_CF=30CA 30CE;sc=Kana;vo=Tu;WB=KA
-cp;3329;dm=30CE 30C3 30C8;na=SQUARE NOTTO;NFKC_CF=30CE 30C3 30C8;sc=Kana;vo=Tu;WB=KA
-cp;332A;dm=30CF 30A4 30C4;na=SQUARE HAITU;NFKC_CF=30CF 30A4 30C4;sc=Kana;vo=Tu;WB=KA
-cp;332B;dm=30D1 30FC 30BB 30F3 30C8;na=SQUARE PAASENTO;NFKC_CF=30D1 30FC 30BB 30F3 30C8;sc=Kana;vo=Tu;WB=KA
-cp;332C;dm=30D1 30FC 30C4;na=SQUARE PAATU;NFKC_CF=30D1 30FC 30C4;sc=Kana;vo=Tu;WB=KA
-cp;332D;dm=30D0 30FC 30EC 30EB;na=SQUARE BAARERU;NFKC_CF=30D0 30FC 30EC 30EB;sc=Kana;vo=Tu;WB=KA
-cp;332E;dm=30D4 30A2 30B9 30C8 30EB;na=SQUARE PIASUTORU;NFKC_CF=30D4 30A2 30B9 30C8 30EB;sc=Kana;vo=Tu;WB=KA
-cp;332F;dm=30D4 30AF 30EB;na=SQUARE PIKURU;NFKC_CF=30D4 30AF 30EB;sc=Kana;vo=Tu;WB=KA
-cp;3330;dm=30D4 30B3;na=SQUARE PIKO;NFKC_CF=30D4 30B3;sc=Kana;vo=Tu;WB=KA
-cp;3331;dm=30D3 30EB;na=SQUARE BIRU;NFKC_CF=30D3 30EB;sc=Kana;vo=Tu;WB=KA
-cp;3332;dm=30D5 30A1 30E9 30C3 30C9;na=SQUARE HUARADDO;NFKC_CF=30D5 30A1 30E9 30C3 30C9;sc=Kana;vo=Tu;WB=KA
-cp;3333;dm=30D5 30A3 30FC 30C8;na=SQUARE HUIITO;NFKC_CF=30D5 30A3 30FC 30C8;sc=Kana;vo=Tu;WB=KA
-cp;3334;dm=30D6 30C3 30B7 30A7 30EB;na=SQUARE BUSSYERU;NFKC_CF=30D6 30C3 30B7 30A7 30EB;sc=Kana;vo=Tu;WB=KA
-cp;3335;dm=30D5 30E9 30F3;na=SQUARE HURAN;NFKC_CF=30D5 30E9 30F3;sc=Kana;vo=Tu;WB=KA
-cp;3336;dm=30D8 30AF 30BF 30FC 30EB;na=SQUARE HEKUTAARU;NFKC_CF=30D8 30AF 30BF 30FC 30EB;sc=Kana;vo=Tu;WB=KA
-cp;3337;dm=30DA 30BD;na=SQUARE PESO;NFKC_CF=30DA 30BD;sc=Kana;vo=Tu;WB=KA
-cp;3338;dm=30DA 30CB 30D2;na=SQUARE PENIHI;NFKC_CF=30DA 30CB 30D2;sc=Kana;vo=Tu;WB=KA
-cp;3339;dm=30D8 30EB 30C4;na=SQUARE HERUTU;NFKC_CF=30D8 30EB 30C4;sc=Kana;vo=Tu;WB=KA
-cp;333A;dm=30DA 30F3 30B9;na=SQUARE PENSU;NFKC_CF=30DA 30F3 30B9;sc=Kana;vo=Tu;WB=KA
-cp;333B;dm=30DA 30FC 30B8;na=SQUARE PEEZI;NFKC_CF=30DA 30FC 30B8;sc=Kana;vo=Tu;WB=KA
-cp;333C;dm=30D9 30FC 30BF;na=SQUARE BEETA;NFKC_CF=30D9 30FC 30BF;sc=Kana;vo=Tu;WB=KA
-cp;333D;dm=30DD 30A4 30F3 30C8;na=SQUARE POINTO;NFKC_CF=30DD 30A4 30F3 30C8;sc=Kana;vo=Tu;WB=KA
-cp;333E;dm=30DC 30EB 30C8;na=SQUARE BORUTO;NFKC_CF=30DC 30EB 30C8;sc=Kana;vo=Tu;WB=KA
-cp;333F;dm=30DB 30F3;na=SQUARE HON;NFKC_CF=30DB 30F3;sc=Kana;vo=Tu;WB=KA
-cp;3340;dm=30DD 30F3 30C9;na=SQUARE PONDO;NFKC_CF=30DD 30F3 30C9;sc=Kana;vo=Tu;WB=KA
-cp;3341;dm=30DB 30FC 30EB;na=SQUARE HOORU;NFKC_CF=30DB 30FC 30EB;sc=Kana;vo=Tu;WB=KA
-cp;3342;dm=30DB 30FC 30F3;na=SQUARE HOON;NFKC_CF=30DB 30FC 30F3;sc=Kana;vo=Tu;WB=KA
-cp;3343;dm=30DE 30A4 30AF 30ED;na=SQUARE MAIKURO;NFKC_CF=30DE 30A4 30AF 30ED;sc=Kana;vo=Tu;WB=KA
-cp;3344;dm=30DE 30A4 30EB;na=SQUARE MAIRU;NFKC_CF=30DE 30A4 30EB;sc=Kana;vo=Tu;WB=KA
-cp;3345;dm=30DE 30C3 30CF;na=SQUARE MAHHA;NFKC_CF=30DE 30C3 30CF;sc=Kana;vo=Tu;WB=KA
-cp;3346;dm=30DE 30EB 30AF;na=SQUARE MARUKU;NFKC_CF=30DE 30EB 30AF;sc=Kana;vo=Tu;WB=KA
-cp;3347;dm=30DE 30F3 30B7 30E7 30F3;na=SQUARE MANSYON;NFKC_CF=30DE 30F3 30B7 30E7 30F3;sc=Kana;vo=Tu;WB=KA
-cp;3348;dm=30DF 30AF 30ED 30F3;na=SQUARE MIKURON;NFKC_CF=30DF 30AF 30ED 30F3;sc=Kana;vo=Tu;WB=KA
-cp;3349;dm=30DF 30EA;na=SQUARE MIRI;NFKC_CF=30DF 30EA;sc=Kana;vo=Tu;WB=KA
-cp;334A;dm=30DF 30EA 30D0 30FC 30EB;na=SQUARE MIRIBAARU;NFKC_CF=30DF 30EA 30D0 30FC 30EB;sc=Kana;vo=Tu;WB=KA
-cp;334B;dm=30E1 30AC;na=SQUARE MEGA;NFKC_CF=30E1 30AC;sc=Kana;vo=Tu;WB=KA
-cp;334C;dm=30E1 30AC 30C8 30F3;na=SQUARE MEGATON;NFKC_CF=30E1 30AC 30C8 30F3;sc=Kana;vo=Tu;WB=KA
-cp;334D;dm=30E1 30FC 30C8 30EB;na=SQUARE MEETORU;NFKC_CF=30E1 30FC 30C8 30EB;sc=Kana;vo=Tu;WB=KA
-cp;334E;dm=30E4 30FC 30C9;na=SQUARE YAADO;NFKC_CF=30E4 30FC 30C9;sc=Kana;vo=Tu;WB=KA
-cp;334F;dm=30E4 30FC 30EB;na=SQUARE YAARU;NFKC_CF=30E4 30FC 30EB;sc=Kana;vo=Tu;WB=KA
-cp;3350;dm=30E6 30A2 30F3;na=SQUARE YUAN;NFKC_CF=30E6 30A2 30F3;sc=Kana;vo=Tu;WB=KA
-cp;3351;dm=30EA 30C3 30C8 30EB;na=SQUARE RITTORU;NFKC_CF=30EA 30C3 30C8 30EB;sc=Kana;vo=Tu;WB=KA
-cp;3352;dm=30EA 30E9;na=SQUARE RIRA;NFKC_CF=30EA 30E9;sc=Kana;vo=Tu;WB=KA
-cp;3353;dm=30EB 30D4 30FC;na=SQUARE RUPII;NFKC_CF=30EB 30D4 30FC;sc=Kana;vo=Tu;WB=KA
-cp;3354;dm=30EB 30FC 30D6 30EB;na=SQUARE RUUBURU;NFKC_CF=30EB 30FC 30D6 30EB;sc=Kana;vo=Tu;WB=KA
-cp;3355;dm=30EC 30E0;na=SQUARE REMU;NFKC_CF=30EC 30E0;sc=Kana;vo=Tu;WB=KA
-cp;3356;dm=30EC 30F3 30C8 30B2 30F3;na=SQUARE RENTOGEN;NFKC_CF=30EC 30F3 30C8 30B2 30F3;sc=Kana;vo=Tu;WB=KA
-cp;3357;dm=30EF 30C3 30C8;na=SQUARE WATTO;NFKC_CF=30EF 30C3 30C8;sc=Kana;vo=Tu;WB=KA
+cp;3300;dm=30A2 30D1 30FC 30C8;na=SQUARE APAATO;NFKC_CF=30A2 30D1 30FC 30C8;NFKC_SCF=30A2 30D1 30FC 30C8;sc=Kana;vo=Tu;WB=KA
+cp;3301;dm=30A2 30EB 30D5 30A1;na=SQUARE ARUHUA;NFKC_CF=30A2 30EB 30D5 30A1;NFKC_SCF=30A2 30EB 30D5 30A1;sc=Kana;vo=Tu;WB=KA
+cp;3302;dm=30A2 30F3 30DA 30A2;na=SQUARE ANPEA;NFKC_CF=30A2 30F3 30DA 30A2;NFKC_SCF=30A2 30F3 30DA 30A2;sc=Kana;vo=Tu;WB=KA
+cp;3303;dm=30A2 30FC 30EB;na=SQUARE AARU;NFKC_CF=30A2 30FC 30EB;NFKC_SCF=30A2 30FC 30EB;sc=Kana;vo=Tu;WB=KA
+cp;3304;dm=30A4 30CB 30F3 30B0;na=SQUARE ININGU;NFKC_CF=30A4 30CB 30F3 30B0;NFKC_SCF=30A4 30CB 30F3 30B0;sc=Kana;vo=Tu;WB=KA
+cp;3305;dm=30A4 30F3 30C1;na=SQUARE INTI;NFKC_CF=30A4 30F3 30C1;NFKC_SCF=30A4 30F3 30C1;sc=Kana;vo=Tu;WB=KA
+cp;3306;dm=30A6 30A9 30F3;na=SQUARE UON;NFKC_CF=30A6 30A9 30F3;NFKC_SCF=30A6 30A9 30F3;sc=Kana;vo=Tu;WB=KA
+cp;3307;dm=30A8 30B9 30AF 30FC 30C9;na=SQUARE ESUKUUDO;NFKC_CF=30A8 30B9 30AF 30FC 30C9;NFKC_SCF=30A8 30B9 30AF 30FC 30C9;sc=Kana;vo=Tu;WB=KA
+cp;3308;dm=30A8 30FC 30AB 30FC;na=SQUARE EEKAA;NFKC_CF=30A8 30FC 30AB 30FC;NFKC_SCF=30A8 30FC 30AB 30FC;sc=Kana;vo=Tu;WB=KA
+cp;3309;dm=30AA 30F3 30B9;na=SQUARE ONSU;NFKC_CF=30AA 30F3 30B9;NFKC_SCF=30AA 30F3 30B9;sc=Kana;vo=Tu;WB=KA
+cp;330A;dm=30AA 30FC 30E0;na=SQUARE OOMU;NFKC_CF=30AA 30FC 30E0;NFKC_SCF=30AA 30FC 30E0;sc=Kana;vo=Tu;WB=KA
+cp;330B;dm=30AB 30A4 30EA;na=SQUARE KAIRI;NFKC_CF=30AB 30A4 30EA;NFKC_SCF=30AB 30A4 30EA;sc=Kana;vo=Tu;WB=KA
+cp;330C;dm=30AB 30E9 30C3 30C8;na=SQUARE KARATTO;NFKC_CF=30AB 30E9 30C3 30C8;NFKC_SCF=30AB 30E9 30C3 30C8;sc=Kana;vo=Tu;WB=KA
+cp;330D;dm=30AB 30ED 30EA 30FC;na=SQUARE KARORII;NFKC_CF=30AB 30ED 30EA 30FC;NFKC_SCF=30AB 30ED 30EA 30FC;sc=Kana;vo=Tu;WB=KA
+cp;330E;dm=30AC 30ED 30F3;na=SQUARE GARON;NFKC_CF=30AC 30ED 30F3;NFKC_SCF=30AC 30ED 30F3;sc=Kana;vo=Tu;WB=KA
+cp;330F;dm=30AC 30F3 30DE;na=SQUARE GANMA;NFKC_CF=30AC 30F3 30DE;NFKC_SCF=30AC 30F3 30DE;sc=Kana;vo=Tu;WB=KA
+cp;3310;dm=30AE 30AC;na=SQUARE GIGA;NFKC_CF=30AE 30AC;NFKC_SCF=30AE 30AC;sc=Kana;vo=Tu;WB=KA
+cp;3311;dm=30AE 30CB 30FC;na=SQUARE GINII;NFKC_CF=30AE 30CB 30FC;NFKC_SCF=30AE 30CB 30FC;sc=Kana;vo=Tu;WB=KA
+cp;3312;dm=30AD 30E5 30EA 30FC;na=SQUARE KYURII;NFKC_CF=30AD 30E5 30EA 30FC;NFKC_SCF=30AD 30E5 30EA 30FC;sc=Kana;vo=Tu;WB=KA
+cp;3313;dm=30AE 30EB 30C0 30FC;na=SQUARE GIRUDAA;NFKC_CF=30AE 30EB 30C0 30FC;NFKC_SCF=30AE 30EB 30C0 30FC;sc=Kana;vo=Tu;WB=KA
+cp;3314;dm=30AD 30ED;na=SQUARE KIRO;NFKC_CF=30AD 30ED;NFKC_SCF=30AD 30ED;sc=Kana;vo=Tu;WB=KA
+cp;3315;dm=30AD 30ED 30B0 30E9 30E0;na=SQUARE KIROGURAMU;NFKC_CF=30AD 30ED 30B0 30E9 30E0;NFKC_SCF=30AD 30ED 30B0 30E9 30E0;sc=Kana;vo=Tu;WB=KA
+cp;3316;dm=30AD 30ED 30E1 30FC 30C8 30EB;na=SQUARE KIROMEETORU;NFKC_CF=30AD 30ED 30E1 30FC 30C8 30EB;NFKC_SCF=30AD 30ED 30E1 30FC 30C8 30EB;sc=Kana;vo=Tu;WB=KA
+cp;3317;dm=30AD 30ED 30EF 30C3 30C8;na=SQUARE KIROWATTO;NFKC_CF=30AD 30ED 30EF 30C3 30C8;NFKC_SCF=30AD 30ED 30EF 30C3 30C8;sc=Kana;vo=Tu;WB=KA
+cp;3318;dm=30B0 30E9 30E0;na=SQUARE GURAMU;NFKC_CF=30B0 30E9 30E0;NFKC_SCF=30B0 30E9 30E0;sc=Kana;vo=Tu;WB=KA
+cp;3319;dm=30B0 30E9 30E0 30C8 30F3;na=SQUARE GURAMUTON;NFKC_CF=30B0 30E9 30E0 30C8 30F3;NFKC_SCF=30B0 30E9 30E0 30C8 30F3;sc=Kana;vo=Tu;WB=KA
+cp;331A;dm=30AF 30EB 30BC 30A4 30ED;na=SQUARE KURUZEIRO;NFKC_CF=30AF 30EB 30BC 30A4 30ED;NFKC_SCF=30AF 30EB 30BC 30A4 30ED;sc=Kana;vo=Tu;WB=KA
+cp;331B;dm=30AF 30ED 30FC 30CD;na=SQUARE KUROONE;NFKC_CF=30AF 30ED 30FC 30CD;NFKC_SCF=30AF 30ED 30FC 30CD;sc=Kana;vo=Tu;WB=KA
+cp;331C;dm=30B1 30FC 30B9;na=SQUARE KEESU;NFKC_CF=30B1 30FC 30B9;NFKC_SCF=30B1 30FC 30B9;sc=Kana;vo=Tu;WB=KA
+cp;331D;dm=30B3 30EB 30CA;na=SQUARE KORUNA;NFKC_CF=30B3 30EB 30CA;NFKC_SCF=30B3 30EB 30CA;sc=Kana;vo=Tu;WB=KA
+cp;331E;dm=30B3 30FC 30DD;na=SQUARE KOOPO;NFKC_CF=30B3 30FC 30DD;NFKC_SCF=30B3 30FC 30DD;sc=Kana;vo=Tu;WB=KA
+cp;331F;dm=30B5 30A4 30AF 30EB;na=SQUARE SAIKURU;NFKC_CF=30B5 30A4 30AF 30EB;NFKC_SCF=30B5 30A4 30AF 30EB;sc=Kana;vo=Tu;WB=KA
+cp;3320;dm=30B5 30F3 30C1 30FC 30E0;na=SQUARE SANTIIMU;NFKC_CF=30B5 30F3 30C1 30FC 30E0;NFKC_SCF=30B5 30F3 30C1 30FC 30E0;sc=Kana;vo=Tu;WB=KA
+cp;3321;dm=30B7 30EA 30F3 30B0;na=SQUARE SIRINGU;NFKC_CF=30B7 30EA 30F3 30B0;NFKC_SCF=30B7 30EA 30F3 30B0;sc=Kana;vo=Tu;WB=KA
+cp;3322;dm=30BB 30F3 30C1;na=SQUARE SENTI;NFKC_CF=30BB 30F3 30C1;NFKC_SCF=30BB 30F3 30C1;sc=Kana;vo=Tu;WB=KA
+cp;3323;dm=30BB 30F3 30C8;na=SQUARE SENTO;NFKC_CF=30BB 30F3 30C8;NFKC_SCF=30BB 30F3 30C8;sc=Kana;vo=Tu;WB=KA
+cp;3324;dm=30C0 30FC 30B9;na=SQUARE DAASU;NFKC_CF=30C0 30FC 30B9;NFKC_SCF=30C0 30FC 30B9;sc=Kana;vo=Tu;WB=KA
+cp;3325;dm=30C7 30B7;na=SQUARE DESI;NFKC_CF=30C7 30B7;NFKC_SCF=30C7 30B7;sc=Kana;vo=Tu;WB=KA
+cp;3326;dm=30C9 30EB;na=SQUARE DORU;NFKC_CF=30C9 30EB;NFKC_SCF=30C9 30EB;sc=Kana;vo=Tu;WB=KA
+cp;3327;dm=30C8 30F3;na=SQUARE TON;NFKC_CF=30C8 30F3;NFKC_SCF=30C8 30F3;sc=Kana;vo=Tu;WB=KA
+cp;3328;dm=30CA 30CE;na=SQUARE NANO;NFKC_CF=30CA 30CE;NFKC_SCF=30CA 30CE;sc=Kana;vo=Tu;WB=KA
+cp;3329;dm=30CE 30C3 30C8;na=SQUARE NOTTO;NFKC_CF=30CE 30C3 30C8;NFKC_SCF=30CE 30C3 30C8;sc=Kana;vo=Tu;WB=KA
+cp;332A;dm=30CF 30A4 30C4;na=SQUARE HAITU;NFKC_CF=30CF 30A4 30C4;NFKC_SCF=30CF 30A4 30C4;sc=Kana;vo=Tu;WB=KA
+cp;332B;dm=30D1 30FC 30BB 30F3 30C8;na=SQUARE PAASENTO;NFKC_CF=30D1 30FC 30BB 30F3 30C8;NFKC_SCF=30D1 30FC 30BB 30F3 30C8;sc=Kana;vo=Tu;WB=KA
+cp;332C;dm=30D1 30FC 30C4;na=SQUARE PAATU;NFKC_CF=30D1 30FC 30C4;NFKC_SCF=30D1 30FC 30C4;sc=Kana;vo=Tu;WB=KA
+cp;332D;dm=30D0 30FC 30EC 30EB;na=SQUARE BAARERU;NFKC_CF=30D0 30FC 30EC 30EB;NFKC_SCF=30D0 30FC 30EC 30EB;sc=Kana;vo=Tu;WB=KA
+cp;332E;dm=30D4 30A2 30B9 30C8 30EB;na=SQUARE PIASUTORU;NFKC_CF=30D4 30A2 30B9 30C8 30EB;NFKC_SCF=30D4 30A2 30B9 30C8 30EB;sc=Kana;vo=Tu;WB=KA
+cp;332F;dm=30D4 30AF 30EB;na=SQUARE PIKURU;NFKC_CF=30D4 30AF 30EB;NFKC_SCF=30D4 30AF 30EB;sc=Kana;vo=Tu;WB=KA
+cp;3330;dm=30D4 30B3;na=SQUARE PIKO;NFKC_CF=30D4 30B3;NFKC_SCF=30D4 30B3;sc=Kana;vo=Tu;WB=KA
+cp;3331;dm=30D3 30EB;na=SQUARE BIRU;NFKC_CF=30D3 30EB;NFKC_SCF=30D3 30EB;sc=Kana;vo=Tu;WB=KA
+cp;3332;dm=30D5 30A1 30E9 30C3 30C9;na=SQUARE HUARADDO;NFKC_CF=30D5 30A1 30E9 30C3 30C9;NFKC_SCF=30D5 30A1 30E9 30C3 30C9;sc=Kana;vo=Tu;WB=KA
+cp;3333;dm=30D5 30A3 30FC 30C8;na=SQUARE HUIITO;NFKC_CF=30D5 30A3 30FC 30C8;NFKC_SCF=30D5 30A3 30FC 30C8;sc=Kana;vo=Tu;WB=KA
+cp;3334;dm=30D6 30C3 30B7 30A7 30EB;na=SQUARE BUSSYERU;NFKC_CF=30D6 30C3 30B7 30A7 30EB;NFKC_SCF=30D6 30C3 30B7 30A7 30EB;sc=Kana;vo=Tu;WB=KA
+cp;3335;dm=30D5 30E9 30F3;na=SQUARE HURAN;NFKC_CF=30D5 30E9 30F3;NFKC_SCF=30D5 30E9 30F3;sc=Kana;vo=Tu;WB=KA
+cp;3336;dm=30D8 30AF 30BF 30FC 30EB;na=SQUARE HEKUTAARU;NFKC_CF=30D8 30AF 30BF 30FC 30EB;NFKC_SCF=30D8 30AF 30BF 30FC 30EB;sc=Kana;vo=Tu;WB=KA
+cp;3337;dm=30DA 30BD;na=SQUARE PESO;NFKC_CF=30DA 30BD;NFKC_SCF=30DA 30BD;sc=Kana;vo=Tu;WB=KA
+cp;3338;dm=30DA 30CB 30D2;na=SQUARE PENIHI;NFKC_CF=30DA 30CB 30D2;NFKC_SCF=30DA 30CB 30D2;sc=Kana;vo=Tu;WB=KA
+cp;3339;dm=30D8 30EB 30C4;na=SQUARE HERUTU;NFKC_CF=30D8 30EB 30C4;NFKC_SCF=30D8 30EB 30C4;sc=Kana;vo=Tu;WB=KA
+cp;333A;dm=30DA 30F3 30B9;na=SQUARE PENSU;NFKC_CF=30DA 30F3 30B9;NFKC_SCF=30DA 30F3 30B9;sc=Kana;vo=Tu;WB=KA
+cp;333B;dm=30DA 30FC 30B8;na=SQUARE PEEZI;NFKC_CF=30DA 30FC 30B8;NFKC_SCF=30DA 30FC 30B8;sc=Kana;vo=Tu;WB=KA
+cp;333C;dm=30D9 30FC 30BF;na=SQUARE BEETA;NFKC_CF=30D9 30FC 30BF;NFKC_SCF=30D9 30FC 30BF;sc=Kana;vo=Tu;WB=KA
+cp;333D;dm=30DD 30A4 30F3 30C8;na=SQUARE POINTO;NFKC_CF=30DD 30A4 30F3 30C8;NFKC_SCF=30DD 30A4 30F3 30C8;sc=Kana;vo=Tu;WB=KA
+cp;333E;dm=30DC 30EB 30C8;na=SQUARE BORUTO;NFKC_CF=30DC 30EB 30C8;NFKC_SCF=30DC 30EB 30C8;sc=Kana;vo=Tu;WB=KA
+cp;333F;dm=30DB 30F3;na=SQUARE HON;NFKC_CF=30DB 30F3;NFKC_SCF=30DB 30F3;sc=Kana;vo=Tu;WB=KA
+cp;3340;dm=30DD 30F3 30C9;na=SQUARE PONDO;NFKC_CF=30DD 30F3 30C9;NFKC_SCF=30DD 30F3 30C9;sc=Kana;vo=Tu;WB=KA
+cp;3341;dm=30DB 30FC 30EB;na=SQUARE HOORU;NFKC_CF=30DB 30FC 30EB;NFKC_SCF=30DB 30FC 30EB;sc=Kana;vo=Tu;WB=KA
+cp;3342;dm=30DB 30FC 30F3;na=SQUARE HOON;NFKC_CF=30DB 30FC 30F3;NFKC_SCF=30DB 30FC 30F3;sc=Kana;vo=Tu;WB=KA
+cp;3343;dm=30DE 30A4 30AF 30ED;na=SQUARE MAIKURO;NFKC_CF=30DE 30A4 30AF 30ED;NFKC_SCF=30DE 30A4 30AF 30ED;sc=Kana;vo=Tu;WB=KA
+cp;3344;dm=30DE 30A4 30EB;na=SQUARE MAIRU;NFKC_CF=30DE 30A4 30EB;NFKC_SCF=30DE 30A4 30EB;sc=Kana;vo=Tu;WB=KA
+cp;3345;dm=30DE 30C3 30CF;na=SQUARE MAHHA;NFKC_CF=30DE 30C3 30CF;NFKC_SCF=30DE 30C3 30CF;sc=Kana;vo=Tu;WB=KA
+cp;3346;dm=30DE 30EB 30AF;na=SQUARE MARUKU;NFKC_CF=30DE 30EB 30AF;NFKC_SCF=30DE 30EB 30AF;sc=Kana;vo=Tu;WB=KA
+cp;3347;dm=30DE 30F3 30B7 30E7 30F3;na=SQUARE MANSYON;NFKC_CF=30DE 30F3 30B7 30E7 30F3;NFKC_SCF=30DE 30F3 30B7 30E7 30F3;sc=Kana;vo=Tu;WB=KA
+cp;3348;dm=30DF 30AF 30ED 30F3;na=SQUARE MIKURON;NFKC_CF=30DF 30AF 30ED 30F3;NFKC_SCF=30DF 30AF 30ED 30F3;sc=Kana;vo=Tu;WB=KA
+cp;3349;dm=30DF 30EA;na=SQUARE MIRI;NFKC_CF=30DF 30EA;NFKC_SCF=30DF 30EA;sc=Kana;vo=Tu;WB=KA
+cp;334A;dm=30DF 30EA 30D0 30FC 30EB;na=SQUARE MIRIBAARU;NFKC_CF=30DF 30EA 30D0 30FC 30EB;NFKC_SCF=30DF 30EA 30D0 30FC 30EB;sc=Kana;vo=Tu;WB=KA
+cp;334B;dm=30E1 30AC;na=SQUARE MEGA;NFKC_CF=30E1 30AC;NFKC_SCF=30E1 30AC;sc=Kana;vo=Tu;WB=KA
+cp;334C;dm=30E1 30AC 30C8 30F3;na=SQUARE MEGATON;NFKC_CF=30E1 30AC 30C8 30F3;NFKC_SCF=30E1 30AC 30C8 30F3;sc=Kana;vo=Tu;WB=KA
+cp;334D;dm=30E1 30FC 30C8 30EB;na=SQUARE MEETORU;NFKC_CF=30E1 30FC 30C8 30EB;NFKC_SCF=30E1 30FC 30C8 30EB;sc=Kana;vo=Tu;WB=KA
+cp;334E;dm=30E4 30FC 30C9;na=SQUARE YAADO;NFKC_CF=30E4 30FC 30C9;NFKC_SCF=30E4 30FC 30C9;sc=Kana;vo=Tu;WB=KA
+cp;334F;dm=30E4 30FC 30EB;na=SQUARE YAARU;NFKC_CF=30E4 30FC 30EB;NFKC_SCF=30E4 30FC 30EB;sc=Kana;vo=Tu;WB=KA
+cp;3350;dm=30E6 30A2 30F3;na=SQUARE YUAN;NFKC_CF=30E6 30A2 30F3;NFKC_SCF=30E6 30A2 30F3;sc=Kana;vo=Tu;WB=KA
+cp;3351;dm=30EA 30C3 30C8 30EB;na=SQUARE RITTORU;NFKC_CF=30EA 30C3 30C8 30EB;NFKC_SCF=30EA 30C3 30C8 30EB;sc=Kana;vo=Tu;WB=KA
+cp;3352;dm=30EA 30E9;na=SQUARE RIRA;NFKC_CF=30EA 30E9;NFKC_SCF=30EA 30E9;sc=Kana;vo=Tu;WB=KA
+cp;3353;dm=30EB 30D4 30FC;na=SQUARE RUPII;NFKC_CF=30EB 30D4 30FC;NFKC_SCF=30EB 30D4 30FC;sc=Kana;vo=Tu;WB=KA
+cp;3354;dm=30EB 30FC 30D6 30EB;na=SQUARE RUUBURU;NFKC_CF=30EB 30FC 30D6 30EB;NFKC_SCF=30EB 30FC 30D6 30EB;sc=Kana;vo=Tu;WB=KA
+cp;3355;dm=30EC 30E0;na=SQUARE REMU;NFKC_CF=30EC 30E0;NFKC_SCF=30EC 30E0;sc=Kana;vo=Tu;WB=KA
+cp;3356;dm=30EC 30F3 30C8 30B2 30F3;na=SQUARE RENTOGEN;NFKC_CF=30EC 30F3 30C8 30B2 30F3;NFKC_SCF=30EC 30F3 30C8 30B2 30F3;sc=Kana;vo=Tu;WB=KA
+cp;3357;dm=30EF 30C3 30C8;na=SQUARE WATTO;NFKC_CF=30EF 30C3 30C8;NFKC_SCF=30EF 30C3 30C8;sc=Kana;vo=Tu;WB=KA
# Telegraph symbols for hours
-cp;3358;dm=0030 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO;NFKC_CF=0030 70B9;scx=Hani
-cp;3359;dm=0031 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE;NFKC_CF=0031 70B9;scx=Hani
-cp;335A;dm=0032 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO;NFKC_CF=0032 70B9;scx=Hani
-cp;335B;dm=0033 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE;NFKC_CF=0033 70B9;scx=Hani
-cp;335C;dm=0034 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR;NFKC_CF=0034 70B9;scx=Hani
-cp;335D;dm=0035 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE;NFKC_CF=0035 70B9;scx=Hani
-cp;335E;dm=0036 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX;NFKC_CF=0036 70B9;scx=Hani
-cp;335F;dm=0037 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN;NFKC_CF=0037 70B9;scx=Hani
-cp;3360;dm=0038 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT;NFKC_CF=0038 70B9;scx=Hani
-cp;3361;dm=0039 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE;NFKC_CF=0039 70B9;scx=Hani
-cp;3362;dm=0031 0030 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN;NFKC_CF=0031 0030 70B9;scx=Hani
-cp;3363;dm=0031 0031 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN;NFKC_CF=0031 0031 70B9;scx=Hani
-cp;3364;dm=0031 0032 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE;NFKC_CF=0031 0032 70B9;scx=Hani
-cp;3365;dm=0031 0033 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN;NFKC_CF=0031 0033 70B9;scx=Hani
-cp;3366;dm=0031 0034 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN;NFKC_CF=0031 0034 70B9;scx=Hani
-cp;3367;dm=0031 0035 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN;NFKC_CF=0031 0035 70B9;scx=Hani
-cp;3368;dm=0031 0036 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN;NFKC_CF=0031 0036 70B9;scx=Hani
-cp;3369;dm=0031 0037 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN;NFKC_CF=0031 0037 70B9;scx=Hani
-cp;336A;dm=0031 0038 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN;NFKC_CF=0031 0038 70B9;scx=Hani
-cp;336B;dm=0031 0039 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN;NFKC_CF=0031 0039 70B9;scx=Hani
-cp;336C;dm=0032 0030 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY;NFKC_CF=0032 0030 70B9;scx=Hani
-cp;336D;dm=0032 0031 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE;NFKC_CF=0032 0031 70B9;scx=Hani
-cp;336E;dm=0032 0032 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO;NFKC_CF=0032 0032 70B9;scx=Hani
-cp;336F;dm=0032 0033 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE;NFKC_CF=0032 0033 70B9;scx=Hani
-cp;3370;dm=0032 0034 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR;NFKC_CF=0032 0034 70B9;scx=Hani
+cp;3358;dm=0030 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO;NFKC_CF=0030 70B9;NFKC_SCF=0030 70B9;scx=Hani
+cp;3359;dm=0031 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE;NFKC_CF=0031 70B9;NFKC_SCF=0031 70B9;scx=Hani
+cp;335A;dm=0032 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO;NFKC_CF=0032 70B9;NFKC_SCF=0032 70B9;scx=Hani
+cp;335B;dm=0033 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE;NFKC_CF=0033 70B9;NFKC_SCF=0033 70B9;scx=Hani
+cp;335C;dm=0034 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR;NFKC_CF=0034 70B9;NFKC_SCF=0034 70B9;scx=Hani
+cp;335D;dm=0035 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE;NFKC_CF=0035 70B9;NFKC_SCF=0035 70B9;scx=Hani
+cp;335E;dm=0036 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX;NFKC_CF=0036 70B9;NFKC_SCF=0036 70B9;scx=Hani
+cp;335F;dm=0037 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN;NFKC_CF=0037 70B9;NFKC_SCF=0037 70B9;scx=Hani
+cp;3360;dm=0038 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT;NFKC_CF=0038 70B9;NFKC_SCF=0038 70B9;scx=Hani
+cp;3361;dm=0039 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE;NFKC_CF=0039 70B9;NFKC_SCF=0039 70B9;scx=Hani
+cp;3362;dm=0031 0030 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN;NFKC_CF=0031 0030 70B9;NFKC_SCF=0031 0030 70B9;scx=Hani
+cp;3363;dm=0031 0031 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN;NFKC_CF=0031 0031 70B9;NFKC_SCF=0031 0031 70B9;scx=Hani
+cp;3364;dm=0031 0032 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE;NFKC_CF=0031 0032 70B9;NFKC_SCF=0031 0032 70B9;scx=Hani
+cp;3365;dm=0031 0033 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN;NFKC_CF=0031 0033 70B9;NFKC_SCF=0031 0033 70B9;scx=Hani
+cp;3366;dm=0031 0034 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN;NFKC_CF=0031 0034 70B9;NFKC_SCF=0031 0034 70B9;scx=Hani
+cp;3367;dm=0031 0035 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN;NFKC_CF=0031 0035 70B9;NFKC_SCF=0031 0035 70B9;scx=Hani
+cp;3368;dm=0031 0036 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN;NFKC_CF=0031 0036 70B9;NFKC_SCF=0031 0036 70B9;scx=Hani
+cp;3369;dm=0031 0037 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN;NFKC_CF=0031 0037 70B9;NFKC_SCF=0031 0037 70B9;scx=Hani
+cp;336A;dm=0031 0038 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN;NFKC_CF=0031 0038 70B9;NFKC_SCF=0031 0038 70B9;scx=Hani
+cp;336B;dm=0031 0039 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN;NFKC_CF=0031 0039 70B9;NFKC_SCF=0031 0039 70B9;scx=Hani
+cp;336C;dm=0032 0030 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY;NFKC_CF=0032 0030 70B9;NFKC_SCF=0032 0030 70B9;scx=Hani
+cp;336D;dm=0032 0031 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE;NFKC_CF=0032 0031 70B9;NFKC_SCF=0032 0031 70B9;scx=Hani
+cp;336E;dm=0032 0032 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO;NFKC_CF=0032 0032 70B9;NFKC_SCF=0032 0032 70B9;scx=Hani
+cp;336F;dm=0032 0033 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE;NFKC_CF=0032 0033 70B9;NFKC_SCF=0032 0033 70B9;scx=Hani
+cp;3370;dm=0032 0034 70B9;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR;NFKC_CF=0032 0034 70B9;NFKC_SCF=0032 0034 70B9;scx=Hani
# Squared Latin abbreviations
-cp;3371;dm=0068 0050 0061;FC_NFKC=0068 0070 0061;na=SQUARE HPA;NFKC_CF=0068 0070 0061
-cp;3372;dm=0064 0061;na=SQUARE DA;NFKC_CF=0064 0061
-cp;3373;dm=0041 0055;FC_NFKC=0061 0075;na=SQUARE AU;NFKC_CF=0061 0075
-cp;3374;dm=0062 0061 0072;na=SQUARE BAR;NFKC_CF=0062 0061 0072
-cp;3375;dm=006F 0056;FC_NFKC=006F 0076;na=SQUARE OV;NFKC_CF=006F 0076
-cp;3376;dm=0070 0063;na=SQUARE PC;NFKC_CF=0070 0063
-cp;3377;age=4.0;bc=ON;dm=0064 006D;na=SQUARE DM;NFKC_CF=0064 006D
-cp;3378;age=4.0;bc=ON;dm=0064 006D 00B2;na=SQUARE DM SQUARED;NFKC_CF=0064 006D 0032
-cp;3379;age=4.0;bc=ON;dm=0064 006D 00B3;na=SQUARE DM CUBED;NFKC_CF=0064 006D 0033
-cp;337A;age=4.0;bc=ON;dm=0049 0055;FC_NFKC=0069 0075;na=SQUARE IU;NFKC_CF=0069 0075
+cp;3371;dm=0068 0050 0061;FC_NFKC=0068 0070 0061;na=SQUARE HPA;NFKC_CF=0068 0070 0061;NFKC_SCF=0068 0070 0061
+cp;3372;dm=0064 0061;na=SQUARE DA;NFKC_CF=0064 0061;NFKC_SCF=0064 0061
+cp;3373;dm=0041 0055;FC_NFKC=0061 0075;na=SQUARE AU;NFKC_CF=0061 0075;NFKC_SCF=0061 0075
+cp;3374;dm=0062 0061 0072;na=SQUARE BAR;NFKC_CF=0062 0061 0072;NFKC_SCF=0062 0061 0072
+cp;3375;dm=006F 0056;FC_NFKC=006F 0076;na=SQUARE OV;NFKC_CF=006F 0076;NFKC_SCF=006F 0076
+cp;3376;dm=0070 0063;na=SQUARE PC;NFKC_CF=0070 0063;NFKC_SCF=0070 0063
+cp;3377;age=4.0;bc=ON;dm=0064 006D;na=SQUARE DM;NFKC_CF=0064 006D;NFKC_SCF=0064 006D
+cp;3378;age=4.0;bc=ON;dm=0064 006D 00B2;na=SQUARE DM SQUARED;NFKC_CF=0064 006D 0032;NFKC_SCF=0064 006D 0032
+cp;3379;age=4.0;bc=ON;dm=0064 006D 00B3;na=SQUARE DM CUBED;NFKC_CF=0064 006D 0033;NFKC_SCF=0064 006D 0033
+cp;337A;age=4.0;bc=ON;dm=0049 0055;FC_NFKC=0069 0075;na=SQUARE IU;NFKC_CF=0069 0075;NFKC_SCF=0069 0075
# Japanese era names
-cp;337B;dm=5E73 6210;na=SQUARE ERA NAME HEISEI;NFKC_CF=5E73 6210;scx=Hani;vo=Tu
-cp;337C;dm=662D 548C;na=SQUARE ERA NAME SYOUWA;NFKC_CF=662D 548C;scx=Hani;vo=Tu
-cp;337D;dm=5927 6B63;na=SQUARE ERA NAME TAISYOU;NFKC_CF=5927 6B63;scx=Hani;vo=Tu
-cp;337E;dm=660E 6CBB;na=SQUARE ERA NAME MEIZI;NFKC_CF=660E 6CBB;scx=Hani;vo=Tu
+cp;337B;dm=5E73 6210;na=SQUARE ERA NAME HEISEI;NFKC_CF=5E73 6210;NFKC_SCF=5E73 6210;scx=Hani;vo=Tu
+cp;337C;dm=662D 548C;na=SQUARE ERA NAME SYOUWA;NFKC_CF=662D 548C;NFKC_SCF=662D 548C;scx=Hani;vo=Tu
+cp;337D;dm=5927 6B63;na=SQUARE ERA NAME TAISYOU;NFKC_CF=5927 6B63;NFKC_SCF=5927 6B63;scx=Hani;vo=Tu
+cp;337E;dm=660E 6CBB;na=SQUARE ERA NAME MEIZI;NFKC_CF=660E 6CBB;NFKC_SCF=660E 6CBB;scx=Hani;vo=Tu
# Japanese corporation
-cp;337F;dm=682A 5F0F 4F1A 793E;na=SQUARE CORPORATION;NFKC_CF=682A 5F0F 4F1A 793E;scx=Hani;vo=Tu
+cp;337F;dm=682A 5F0F 4F1A 793E;na=SQUARE CORPORATION;NFKC_CF=682A 5F0F 4F1A 793E;NFKC_SCF=682A 5F0F 4F1A 793E;scx=Hani;vo=Tu
# Squared Latin abbreviations
-cp;3380;dm=0070 0041;FC_NFKC=0070 0061;na=SQUARE PA AMPS;NFKC_CF=0070 0061
-cp;3381;dm=006E 0041;FC_NFKC=006E 0061;na=SQUARE NA;NFKC_CF=006E 0061
-cp;3382;dm=03BC 0041;FC_NFKC=03BC 0061;na=SQUARE MU A;NFKC_CF=03BC 0061
-cp;3383;dm=006D 0041;FC_NFKC=006D 0061;na=SQUARE MA;NFKC_CF=006D 0061
-cp;3384;dm=006B 0041;FC_NFKC=006B 0061;na=SQUARE KA;NFKC_CF=006B 0061
-cp;3385;dm=004B 0042;FC_NFKC=006B 0062;na=SQUARE KB;NFKC_CF=006B 0062
-cp;3386;dm=004D 0042;FC_NFKC=006D 0062;na=SQUARE MB;NFKC_CF=006D 0062
-cp;3387;dm=0047 0042;FC_NFKC=0067 0062;na=SQUARE GB;NFKC_CF=0067 0062
-cp;3388;dm=0063 0061 006C;na=SQUARE CAL;NFKC_CF=0063 0061 006C
-cp;3389;dm=006B 0063 0061 006C;na=SQUARE KCAL;NFKC_CF=006B 0063 0061 006C
-cp;338A;dm=0070 0046;FC_NFKC=0070 0066;na=SQUARE PF;NFKC_CF=0070 0066
-cp;338B;dm=006E 0046;FC_NFKC=006E 0066;na=SQUARE NF;NFKC_CF=006E 0066
-cp;338C;dm=03BC 0046;FC_NFKC=03BC 0066;na=SQUARE MU F;NFKC_CF=03BC 0066
-cp;338D;dm=03BC 0067;na=SQUARE MU G;NFKC_CF=03BC 0067
-cp;338E;dm=006D 0067;na=SQUARE MG;NFKC_CF=006D 0067
-cp;338F;dm=006B 0067;na=SQUARE KG;NFKC_CF=006B 0067
-cp;3390;dm=0048 007A;FC_NFKC=0068 007A;na=SQUARE HZ;NFKC_CF=0068 007A
-cp;3391;dm=006B 0048 007A;FC_NFKC=006B 0068 007A;na=SQUARE KHZ;NFKC_CF=006B 0068 007A
-cp;3392;dm=004D 0048 007A;FC_NFKC=006D 0068 007A;na=SQUARE MHZ;NFKC_CF=006D 0068 007A
-cp;3393;dm=0047 0048 007A;FC_NFKC=0067 0068 007A;na=SQUARE GHZ;NFKC_CF=0067 0068 007A
-cp;3394;dm=0054 0048 007A;FC_NFKC=0074 0068 007A;na=SQUARE THZ;NFKC_CF=0074 0068 007A
+cp;3380;dm=0070 0041;FC_NFKC=0070 0061;na=SQUARE PA AMPS;NFKC_CF=0070 0061;NFKC_SCF=0070 0061
+cp;3381;dm=006E 0041;FC_NFKC=006E 0061;na=SQUARE NA;NFKC_CF=006E 0061;NFKC_SCF=006E 0061
+cp;3382;dm=03BC 0041;FC_NFKC=03BC 0061;na=SQUARE MU A;NFKC_CF=03BC 0061;NFKC_SCF=03BC 0061
+cp;3383;dm=006D 0041;FC_NFKC=006D 0061;na=SQUARE MA;NFKC_CF=006D 0061;NFKC_SCF=006D 0061
+cp;3384;dm=006B 0041;FC_NFKC=006B 0061;na=SQUARE KA;NFKC_CF=006B 0061;NFKC_SCF=006B 0061
+cp;3385;dm=004B 0042;FC_NFKC=006B 0062;na=SQUARE KB;NFKC_CF=006B 0062;NFKC_SCF=006B 0062
+cp;3386;dm=004D 0042;FC_NFKC=006D 0062;na=SQUARE MB;NFKC_CF=006D 0062;NFKC_SCF=006D 0062
+cp;3387;dm=0047 0042;FC_NFKC=0067 0062;na=SQUARE GB;NFKC_CF=0067 0062;NFKC_SCF=0067 0062
+cp;3388;dm=0063 0061 006C;na=SQUARE CAL;NFKC_CF=0063 0061 006C;NFKC_SCF=0063 0061 006C
+cp;3389;dm=006B 0063 0061 006C;na=SQUARE KCAL;NFKC_CF=006B 0063 0061 006C;NFKC_SCF=006B 0063 0061 006C
+cp;338A;dm=0070 0046;FC_NFKC=0070 0066;na=SQUARE PF;NFKC_CF=0070 0066;NFKC_SCF=0070 0066
+cp;338B;dm=006E 0046;FC_NFKC=006E 0066;na=SQUARE NF;NFKC_CF=006E 0066;NFKC_SCF=006E 0066
+cp;338C;dm=03BC 0046;FC_NFKC=03BC 0066;na=SQUARE MU F;NFKC_CF=03BC 0066;NFKC_SCF=03BC 0066
+cp;338D;dm=03BC 0067;na=SQUARE MU G;NFKC_CF=03BC 0067;NFKC_SCF=03BC 0067
+cp;338E;dm=006D 0067;na=SQUARE MG;NFKC_CF=006D 0067;NFKC_SCF=006D 0067
+cp;338F;dm=006B 0067;na=SQUARE KG;NFKC_CF=006B 0067;NFKC_SCF=006B 0067
+cp;3390;dm=0048 007A;FC_NFKC=0068 007A;na=SQUARE HZ;NFKC_CF=0068 007A;NFKC_SCF=0068 007A
+cp;3391;dm=006B 0048 007A;FC_NFKC=006B 0068 007A;na=SQUARE KHZ;NFKC_CF=006B 0068 007A;NFKC_SCF=006B 0068 007A
+cp;3392;dm=004D 0048 007A;FC_NFKC=006D 0068 007A;na=SQUARE MHZ;NFKC_CF=006D 0068 007A;NFKC_SCF=006D 0068 007A
+cp;3393;dm=0047 0048 007A;FC_NFKC=0067 0068 007A;na=SQUARE GHZ;NFKC_CF=0067 0068 007A;NFKC_SCF=0067 0068 007A
+cp;3394;dm=0054 0048 007A;FC_NFKC=0074 0068 007A;na=SQUARE THZ;NFKC_CF=0074 0068 007A;NFKC_SCF=0074 0068 007A
# Abbreviations involving liter symbols
-cp;3395;dm=03BC 2113;na=SQUARE MU L;NFKC_CF=03BC 006C
-cp;3396;dm=006D 2113;na=SQUARE ML;NFKC_CF=006D 006C
-cp;3397;dm=0064 2113;na=SQUARE DL;NFKC_CF=0064 006C
-cp;3398;dm=006B 2113;na=SQUARE KL;NFKC_CF=006B 006C
+cp;3395;dm=03BC 2113;na=SQUARE MU L;NFKC_CF=03BC 006C;NFKC_SCF=03BC 006C
+cp;3396;dm=006D 2113;na=SQUARE ML;NFKC_CF=006D 006C;NFKC_SCF=006D 006C
+cp;3397;dm=0064 2113;na=SQUARE DL;NFKC_CF=0064 006C;NFKC_SCF=0064 006C
+cp;3398;dm=006B 2113;na=SQUARE KL;NFKC_CF=006B 006C;NFKC_SCF=006B 006C
# Squared Latin abbreviations
-cp;3399;dm=0066 006D;na=SQUARE FM;NFKC_CF=0066 006D
-cp;339A;dm=006E 006D;na=SQUARE NM;NFKC_CF=006E 006D
-cp;339B;dm=03BC 006D;na=SQUARE MU M;NFKC_CF=03BC 006D
-cp;339C;dm=006D 006D;na=SQUARE MM;NFKC_CF=006D 006D
-cp;339D;dm=0063 006D;na=SQUARE CM;NFKC_CF=0063 006D
+cp;3399;dm=0066 006D;na=SQUARE FM;NFKC_CF=0066 006D;NFKC_SCF=0066 006D
+cp;339A;dm=006E 006D;na=SQUARE NM;NFKC_CF=006E 006D;NFKC_SCF=006E 006D
+cp;339B;dm=03BC 006D;na=SQUARE MU M;NFKC_CF=03BC 006D;NFKC_SCF=03BC 006D
+cp;339C;dm=006D 006D;na=SQUARE MM;NFKC_CF=006D 006D;NFKC_SCF=006D 006D
+cp;339D;dm=0063 006D;na=SQUARE CM;NFKC_CF=0063 006D;NFKC_SCF=0063 006D
cp;339E;dm=006B 006D;na=SQUARE KM;NFKC_CF=006B 006D
-cp;339F;dm=006D 006D 00B2;na=SQUARE MM SQUARED;NFKC_CF=006D 006D 0032
-cp;33A0;dm=0063 006D 00B2;na=SQUARE CM SQUARED;NFKC_CF=0063 006D 0032
-cp;33A1;dm=006D 00B2;na=SQUARE M SQUARED;NFKC_CF=006D 0032
-cp;33A2;dm=006B 006D 00B2;na=SQUARE KM SQUARED;NFKC_CF=006B 006D 0032
-cp;33A3;dm=006D 006D 00B3;na=SQUARE MM CUBED;NFKC_CF=006D 006D 0033
-cp;33A4;dm=0063 006D 00B3;na=SQUARE CM CUBED;NFKC_CF=0063 006D 0033
-cp;33A5;dm=006D 00B3;na=SQUARE M CUBED;NFKC_CF=006D 0033
-cp;33A6;dm=006B 006D 00B3;na=SQUARE KM CUBED;NFKC_CF=006B 006D 0033
-cp;33A7;dm=006D 2215 0073;na=SQUARE M OVER S;NFKC_CF=006D 2215 0073
-cp;33A8;dm=006D 2215 0073 00B2;na=SQUARE M OVER S SQUARED;NFKC_CF=006D 2215 0073 0032
-cp;33A9;dm=0050 0061;FC_NFKC=0070 0061;na=SQUARE PA;NFKC_CF=0070 0061
-cp;33AA;dm=006B 0050 0061;FC_NFKC=006B 0070 0061;na=SQUARE KPA;NFKC_CF=006B 0070 0061
-cp;33AB;dm=004D 0050 0061;FC_NFKC=006D 0070 0061;na=SQUARE MPA;NFKC_CF=006D 0070 0061
-cp;33AC;dm=0047 0050 0061;FC_NFKC=0067 0070 0061;na=SQUARE GPA;NFKC_CF=0067 0070 0061
-cp;33AD;dm=0072 0061 0064;na=SQUARE RAD;NFKC_CF=0072 0061 0064
-cp;33AE;dm=0072 0061 0064 2215 0073;na=SQUARE RAD OVER S;NFKC_CF=0072 0061 0064 2215 0073
-cp;33AF;dm=0072 0061 0064 2215 0073 00B2;na=SQUARE RAD OVER S SQUARED;NFKC_CF=0072 0061 0064 2215 0073 0032
-cp;33B0;dm=0070 0073;na=SQUARE PS;NFKC_CF=0070 0073
-cp;33B1;dm=006E 0073;na=SQUARE NS;NFKC_CF=006E 0073
-cp;33B2;dm=03BC 0073;na=SQUARE MU S;NFKC_CF=03BC 0073
-cp;33B3;dm=006D 0073;na=SQUARE MS;NFKC_CF=006D 0073
-cp;33B4;dm=0070 0056;FC_NFKC=0070 0076;na=SQUARE PV;NFKC_CF=0070 0076
-cp;33B5;dm=006E 0056;FC_NFKC=006E 0076;na=SQUARE NV;NFKC_CF=006E 0076
-cp;33B6;dm=03BC 0056;FC_NFKC=03BC 0076;na=SQUARE MU V;NFKC_CF=03BC 0076
-cp;33B7;dm=006D 0056;FC_NFKC=006D 0076;na=SQUARE MV;NFKC_CF=006D 0076
-cp;33B8;dm=006B 0056;FC_NFKC=006B 0076;na=SQUARE KV;NFKC_CF=006B 0076
-cp;33B9;dm=004D 0056;FC_NFKC=006D 0076;na=SQUARE MV MEGA;NFKC_CF=006D 0076
-cp;33BA;dm=0070 0057;FC_NFKC=0070 0077;na=SQUARE PW;NFKC_CF=0070 0077
-cp;33BB;dm=006E 0057;FC_NFKC=006E 0077;na=SQUARE NW;NFKC_CF=006E 0077
-cp;33BC;dm=03BC 0057;FC_NFKC=03BC 0077;na=SQUARE MU W;NFKC_CF=03BC 0077
-cp;33BD;dm=006D 0057;FC_NFKC=006D 0077;na=SQUARE MW;NFKC_CF=006D 0077
-cp;33BE;dm=006B 0057;FC_NFKC=006B 0077;na=SQUARE KW;NFKC_CF=006B 0077
-cp;33BF;dm=004D 0057;FC_NFKC=006D 0077;na=SQUARE MW MEGA;NFKC_CF=006D 0077
-cp;33C0;dm=006B 03A9;FC_NFKC=006B 03C9;na=SQUARE K OHM;NFKC_CF=006B 03C9
-cp;33C1;dm=004D 03A9;FC_NFKC=006D 03C9;na=SQUARE M OHM;NFKC_CF=006D 03C9
-cp;33C2;dm=0061 002E 006D 002E;na=SQUARE AM;NFKC_CF=0061 002E 006D 002E
-cp;33C3;dm=0042 0071;FC_NFKC=0062 0071;na=SQUARE BQ;NFKC_CF=0062 0071
-cp;33C4;dm=0063 0063;na=SQUARE CC;NFKC_CF=0063 0063
-cp;33C5;dm=0063 0064;na=SQUARE CD;NFKC_CF=0063 0064
-cp;33C6;dm=0043 2215 006B 0067;FC_NFKC=0063 2215 006B 0067;na=SQUARE C OVER KG;NFKC_CF=0063 2215 006B 0067
-cp;33C7;dm=0043 006F 002E;FC_NFKC=0063 006F 002E;na=SQUARE CO;NFKC_CF=0063 006F 002E
-cp;33C8;dm=0064 0042;FC_NFKC=0064 0062;na=SQUARE DB;NFKC_CF=0064 0062
-cp;33C9;dm=0047 0079;FC_NFKC=0067 0079;na=SQUARE GY;NFKC_CF=0067 0079
-cp;33CA;dm=0068 0061;na=SQUARE HA;NFKC_CF=0068 0061
-cp;33CB;dm=0048 0050;FC_NFKC=0068 0070;na=SQUARE HP;NFKC_CF=0068 0070
-cp;33CC;dm=0069 006E;na=SQUARE IN;NFKC_CF=0069 006E
-cp;33CD;dm=004B 004B;FC_NFKC=006B 006B;na=SQUARE KK;NFKC_CF=006B 006B
+cp;339F;dm=006D 006D 00B2;na=SQUARE MM SQUARED;NFKC_CF=006D 006D 0032;NFKC_SCF=006D 006D 0032
+cp;33A0;dm=0063 006D 00B2;na=SQUARE CM SQUARED;NFKC_CF=0063 006D 0032;NFKC_SCF=0063 006D 0032
+cp;33A1;dm=006D 00B2;na=SQUARE M SQUARED;NFKC_CF=006D 0032;NFKC_SCF=006D 0032
+cp;33A2;dm=006B 006D 00B2;na=SQUARE KM SQUARED;NFKC_CF=006B 006D 0032;NFKC_SCF=006B 006D 0032
+cp;33A3;dm=006D 006D 00B3;na=SQUARE MM CUBED;NFKC_CF=006D 006D 0033;NFKC_SCF=006D 006D 0033
+cp;33A4;dm=0063 006D 00B3;na=SQUARE CM CUBED;NFKC_CF=0063 006D 0033;NFKC_SCF=0063 006D 0033
+cp;33A5;dm=006D 00B3;na=SQUARE M CUBED;NFKC_CF=006D 0033;NFKC_SCF=006D 0033
+cp;33A6;dm=006B 006D 00B3;na=SQUARE KM CUBED;NFKC_CF=006B 006D 0033;NFKC_SCF=006B 006D 0033
+cp;33A7;dm=006D 2215 0073;na=SQUARE M OVER S;NFKC_CF=006D 2215 0073;NFKC_SCF=006D 2215 0073
+cp;33A8;dm=006D 2215 0073 00B2;na=SQUARE M OVER S SQUARED;NFKC_CF=006D 2215 0073 0032;NFKC_SCF=006D 2215 0073 0032
+cp;33A9;dm=0050 0061;FC_NFKC=0070 0061;na=SQUARE PA;NFKC_CF=0070 0061;NFKC_SCF=0070 0061
+cp;33AA;dm=006B 0050 0061;FC_NFKC=006B 0070 0061;na=SQUARE KPA;NFKC_CF=006B 0070 0061;NFKC_SCF=006B 0070 0061
+cp;33AB;dm=004D 0050 0061;FC_NFKC=006D 0070 0061;na=SQUARE MPA;NFKC_CF=006D 0070 0061;NFKC_SCF=006D 0070 0061
+cp;33AC;dm=0047 0050 0061;FC_NFKC=0067 0070 0061;na=SQUARE GPA;NFKC_CF=0067 0070 0061;NFKC_SCF=0067 0070 0061
+cp;33AD;dm=0072 0061 0064;na=SQUARE RAD;NFKC_CF=0072 0061 0064;NFKC_SCF=0072 0061 0064
+cp;33AE;dm=0072 0061 0064 2215 0073;na=SQUARE RAD OVER S;NFKC_CF=0072 0061 0064 2215 0073;NFKC_SCF=0072 0061 0064 2215 0073
+cp;33AF;dm=0072 0061 0064 2215 0073 00B2;na=SQUARE RAD OVER S SQUARED;NFKC_CF=0072 0061 0064 2215 0073 0032;NFKC_SCF=0072 0061 0064 2215 0073 0032
+cp;33B0;dm=0070 0073;na=SQUARE PS;NFKC_CF=0070 0073;NFKC_SCF=0070 0073
+cp;33B1;dm=006E 0073;na=SQUARE NS;NFKC_CF=006E 0073;NFKC_SCF=006E 0073
+cp;33B2;dm=03BC 0073;na=SQUARE MU S;NFKC_CF=03BC 0073;NFKC_SCF=03BC 0073
+cp;33B3;dm=006D 0073;na=SQUARE MS;NFKC_CF=006D 0073;NFKC_SCF=006D 0073
+cp;33B4;dm=0070 0056;FC_NFKC=0070 0076;na=SQUARE PV;NFKC_CF=0070 0076;NFKC_SCF=0070 0076
+cp;33B5;dm=006E 0056;FC_NFKC=006E 0076;na=SQUARE NV;NFKC_CF=006E 0076;NFKC_SCF=006E 0076
+cp;33B6;dm=03BC 0056;FC_NFKC=03BC 0076;na=SQUARE MU V;NFKC_CF=03BC 0076;NFKC_SCF=03BC 0076
+cp;33B7;dm=006D 0056;FC_NFKC=006D 0076;na=SQUARE MV;NFKC_CF=006D 0076;NFKC_SCF=006D 0076
+cp;33B8;dm=006B 0056;FC_NFKC=006B 0076;na=SQUARE KV;NFKC_CF=006B 0076;NFKC_SCF=006B 0076
+cp;33B9;dm=004D 0056;FC_NFKC=006D 0076;na=SQUARE MV MEGA;NFKC_CF=006D 0076;NFKC_SCF=006D 0076
+cp;33BA;dm=0070 0057;FC_NFKC=0070 0077;na=SQUARE PW;NFKC_CF=0070 0077;NFKC_SCF=0070 0077
+cp;33BB;dm=006E 0057;FC_NFKC=006E 0077;na=SQUARE NW;NFKC_CF=006E 0077;NFKC_SCF=006E 0077
+cp;33BC;dm=03BC 0057;FC_NFKC=03BC 0077;na=SQUARE MU W;NFKC_CF=03BC 0077;NFKC_SCF=03BC 0077
+cp;33BD;dm=006D 0057;FC_NFKC=006D 0077;na=SQUARE MW;NFKC_CF=006D 0077;NFKC_SCF=006D 0077
+cp;33BE;dm=006B 0057;FC_NFKC=006B 0077;na=SQUARE KW;NFKC_CF=006B 0077;NFKC_SCF=006B 0077
+cp;33BF;dm=004D 0057;FC_NFKC=006D 0077;na=SQUARE MW MEGA;NFKC_CF=006D 0077;NFKC_SCF=006D 0077
+cp;33C0;dm=006B 03A9;FC_NFKC=006B 03C9;na=SQUARE K OHM;NFKC_CF=006B 03C9;NFKC_SCF=006B 03C9
+cp;33C1;dm=004D 03A9;FC_NFKC=006D 03C9;na=SQUARE M OHM;NFKC_CF=006D 03C9;NFKC_SCF=006D 03C9
+cp;33C2;dm=0061 002E 006D 002E;na=SQUARE AM;NFKC_CF=0061 002E 006D 002E;NFKC_SCF=0061 002E 006D 002E
+cp;33C3;dm=0042 0071;FC_NFKC=0062 0071;na=SQUARE BQ;NFKC_CF=0062 0071;NFKC_SCF=0062 0071
+cp;33C4;dm=0063 0063;na=SQUARE CC;NFKC_CF=0063 0063;NFKC_SCF=0063 0063
+cp;33C5;dm=0063 0064;na=SQUARE CD;NFKC_CF=0063 0064;NFKC_SCF=0063 0064
+cp;33C6;dm=0043 2215 006B 0067;FC_NFKC=0063 2215 006B 0067;na=SQUARE C OVER KG;NFKC_CF=0063 2215 006B 0067;NFKC_SCF=0063 2215 006B 0067
+cp;33C7;dm=0043 006F 002E;FC_NFKC=0063 006F 002E;na=SQUARE CO;NFKC_CF=0063 006F 002E;NFKC_SCF=0063 006F 002E
+cp;33C8;dm=0064 0042;FC_NFKC=0064 0062;na=SQUARE DB;NFKC_CF=0064 0062;NFKC_SCF=0064 0062
+cp;33C9;dm=0047 0079;FC_NFKC=0067 0079;na=SQUARE GY;NFKC_CF=0067 0079;NFKC_SCF=0067 0079
+cp;33CA;dm=0068 0061;na=SQUARE HA;NFKC_CF=0068 0061;NFKC_SCF=0068 0061
+cp;33CB;dm=0048 0050;FC_NFKC=0068 0070;na=SQUARE HP;NFKC_CF=0068 0070;NFKC_SCF=0068 0070
+cp;33CC;dm=0069 006E;na=SQUARE IN;NFKC_CF=0069 006E;NFKC_SCF=0069 006E
+cp;33CD;dm=004B 004B;FC_NFKC=006B 006B;na=SQUARE KK;NFKC_CF=006B 006B;NFKC_SCF=006B 006B
cp;33CE;dm=004B 004D;FC_NFKC=006B 006D;na=SQUARE KM CAPITAL;NFKC_CF=006B 006D
-cp;33CF;dm=006B 0074;na=SQUARE KT;NFKC_CF=006B 0074
-cp;33D0;dm=006C 006D;na=SQUARE LM;NFKC_CF=006C 006D
-cp;33D1;dm=006C 006E;na=SQUARE LN;NFKC_CF=006C 006E
-cp;33D2;dm=006C 006F 0067;na=SQUARE LOG;NFKC_CF=006C 006F 0067
-cp;33D3;dm=006C 0078;na=SQUARE LX;NFKC_CF=006C 0078
-cp;33D4;dm=006D 0062;na=SQUARE MB SMALL;NFKC_CF=006D 0062
-cp;33D5;dm=006D 0069 006C;na=SQUARE MIL;NFKC_CF=006D 0069 006C
-cp;33D6;dm=006D 006F 006C;na=SQUARE MOL;NFKC_CF=006D 006F 006C
-cp;33D7;dm=0050 0048;FC_NFKC=0070 0068;na=SQUARE PH;NFKC_CF=0070 0068
-cp;33D8;dm=0070 002E 006D 002E;na=SQUARE PM;NFKC_CF=0070 002E 006D 002E
-cp;33D9;dm=0050 0050 004D;FC_NFKC=0070 0070 006D;na=SQUARE PPM;NFKC_CF=0070 0070 006D
-cp;33DA;dm=0050 0052;FC_NFKC=0070 0072;na=SQUARE PR;NFKC_CF=0070 0072
-cp;33DB;dm=0073 0072;na=SQUARE SR;NFKC_CF=0073 0072
-cp;33DC;dm=0053 0076;FC_NFKC=0073 0076;na=SQUARE SV;NFKC_CF=0073 0076
-cp;33DD;dm=0057 0062;FC_NFKC=0077 0062;na=SQUARE WB;NFKC_CF=0077 0062
-cp;33DE;age=4.0;bc=ON;dm=0056 2215 006D;FC_NFKC=0076 2215 006D;na=SQUARE V OVER M;NFKC_CF=0076 2215 006D
-cp;33DF;age=4.0;bc=ON;dm=0041 2215 006D;FC_NFKC=0061 2215 006D;na=SQUARE A OVER M;NFKC_CF=0061 2215 006D
+cp;33CF;dm=006B 0074;na=SQUARE KT;NFKC_CF=006B 0074;NFKC_SCF=006B 0074
+cp;33D0;dm=006C 006D;na=SQUARE LM;NFKC_CF=006C 006D;NFKC_SCF=006C 006D
+cp;33D1;dm=006C 006E;na=SQUARE LN;NFKC_CF=006C 006E;NFKC_SCF=006C 006E
+cp;33D2;dm=006C 006F 0067;na=SQUARE LOG;NFKC_CF=006C 006F 0067;NFKC_SCF=006C 006F 0067
+cp;33D3;dm=006C 0078;na=SQUARE LX;NFKC_CF=006C 0078;NFKC_SCF=006C 0078
+cp;33D4;dm=006D 0062;na=SQUARE MB SMALL;NFKC_CF=006D 0062;NFKC_SCF=006D 0062
+cp;33D5;dm=006D 0069 006C;na=SQUARE MIL;NFKC_CF=006D 0069 006C;NFKC_SCF=006D 0069 006C
+cp;33D6;dm=006D 006F 006C;na=SQUARE MOL;NFKC_CF=006D 006F 006C;NFKC_SCF=006D 006F 006C
+cp;33D7;dm=0050 0048;FC_NFKC=0070 0068;na=SQUARE PH;NFKC_CF=0070 0068;NFKC_SCF=0070 0068
+cp;33D8;dm=0070 002E 006D 002E;na=SQUARE PM;NFKC_CF=0070 002E 006D 002E;NFKC_SCF=0070 002E 006D 002E
+cp;33D9;dm=0050 0050 004D;FC_NFKC=0070 0070 006D;na=SQUARE PPM;NFKC_CF=0070 0070 006D;NFKC_SCF=0070 0070 006D
+cp;33DA;dm=0050 0052;FC_NFKC=0070 0072;na=SQUARE PR;NFKC_CF=0070 0072;NFKC_SCF=0070 0072
+cp;33DB;dm=0073 0072;na=SQUARE SR;NFKC_CF=0073 0072;NFKC_SCF=0073 0072
+cp;33DC;dm=0053 0076;FC_NFKC=0073 0076;na=SQUARE SV;NFKC_CF=0073 0076;NFKC_SCF=0073 0076
+cp;33DD;dm=0057 0062;FC_NFKC=0077 0062;na=SQUARE WB;NFKC_CF=0077 0062;NFKC_SCF=0077 0062
+cp;33DE;age=4.0;bc=ON;dm=0056 2215 006D;FC_NFKC=0076 2215 006D;na=SQUARE V OVER M;NFKC_CF=0076 2215 006D;NFKC_SCF=0076 2215 006D
+cp;33DF;age=4.0;bc=ON;dm=0041 2215 006D;FC_NFKC=0061 2215 006D;na=SQUARE A OVER M;NFKC_CF=0061 2215 006D;NFKC_SCF=0061 2215 006D
# Telegraph symbols for days
-cp;33E0;dm=0031 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE;NFKC_CF=0031 65E5;scx=Hani
-cp;33E1;dm=0032 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO;NFKC_CF=0032 65E5;scx=Hani
-cp;33E2;dm=0033 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE;NFKC_CF=0033 65E5;scx=Hani
-cp;33E3;dm=0034 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR;NFKC_CF=0034 65E5;scx=Hani
-cp;33E4;dm=0035 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE;NFKC_CF=0035 65E5;scx=Hani
-cp;33E5;dm=0036 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX;NFKC_CF=0036 65E5;scx=Hani
-cp;33E6;dm=0037 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN;NFKC_CF=0037 65E5;scx=Hani
-cp;33E7;dm=0038 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT;NFKC_CF=0038 65E5;scx=Hani
-cp;33E8;dm=0039 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE;NFKC_CF=0039 65E5;scx=Hani
-cp;33E9;dm=0031 0030 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN;NFKC_CF=0031 0030 65E5;scx=Hani
-cp;33EA;dm=0031 0031 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN;NFKC_CF=0031 0031 65E5;scx=Hani
-cp;33EB;dm=0031 0032 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE;NFKC_CF=0031 0032 65E5;scx=Hani
-cp;33EC;dm=0031 0033 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN;NFKC_CF=0031 0033 65E5;scx=Hani
-cp;33ED;dm=0031 0034 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN;NFKC_CF=0031 0034 65E5;scx=Hani
-cp;33EE;dm=0031 0035 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN;NFKC_CF=0031 0035 65E5;scx=Hani
-cp;33EF;dm=0031 0036 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN;NFKC_CF=0031 0036 65E5;scx=Hani
-cp;33F0;dm=0031 0037 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN;NFKC_CF=0031 0037 65E5;scx=Hani
-cp;33F1;dm=0031 0038 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN;NFKC_CF=0031 0038 65E5;scx=Hani
-cp;33F2;dm=0031 0039 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN;NFKC_CF=0031 0039 65E5;scx=Hani
-cp;33F3;dm=0032 0030 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY;NFKC_CF=0032 0030 65E5;scx=Hani
-cp;33F4;dm=0032 0031 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE;NFKC_CF=0032 0031 65E5;scx=Hani
-cp;33F5;dm=0032 0032 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO;NFKC_CF=0032 0032 65E5;scx=Hani
-cp;33F6;dm=0032 0033 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE;NFKC_CF=0032 0033 65E5;scx=Hani
-cp;33F7;dm=0032 0034 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR;NFKC_CF=0032 0034 65E5;scx=Hani
-cp;33F8;dm=0032 0035 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE;NFKC_CF=0032 0035 65E5;scx=Hani
-cp;33F9;dm=0032 0036 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX;NFKC_CF=0032 0036 65E5;scx=Hani
-cp;33FA;dm=0032 0037 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN;NFKC_CF=0032 0037 65E5;scx=Hani
-cp;33FB;dm=0032 0038 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT;NFKC_CF=0032 0038 65E5;scx=Hani
-cp;33FC;dm=0032 0039 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE;NFKC_CF=0032 0039 65E5;scx=Hani
-cp;33FD;dm=0033 0030 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY;NFKC_CF=0033 0030 65E5;scx=Hani
-cp;33FE;dm=0033 0031 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE;NFKC_CF=0033 0031 65E5;scx=Hani
+cp;33E0;dm=0031 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE;NFKC_CF=0031 65E5;NFKC_SCF=0031 65E5;scx=Hani
+cp;33E1;dm=0032 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO;NFKC_CF=0032 65E5;NFKC_SCF=0032 65E5;scx=Hani
+cp;33E2;dm=0033 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE;NFKC_CF=0033 65E5;NFKC_SCF=0033 65E5;scx=Hani
+cp;33E3;dm=0034 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR;NFKC_CF=0034 65E5;NFKC_SCF=0034 65E5;scx=Hani
+cp;33E4;dm=0035 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE;NFKC_CF=0035 65E5;NFKC_SCF=0035 65E5;scx=Hani
+cp;33E5;dm=0036 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX;NFKC_CF=0036 65E5;NFKC_SCF=0036 65E5;scx=Hani
+cp;33E6;dm=0037 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN;NFKC_CF=0037 65E5;NFKC_SCF=0037 65E5;scx=Hani
+cp;33E7;dm=0038 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT;NFKC_CF=0038 65E5;NFKC_SCF=0038 65E5;scx=Hani
+cp;33E8;dm=0039 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE;NFKC_CF=0039 65E5;NFKC_SCF=0039 65E5;scx=Hani
+cp;33E9;dm=0031 0030 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN;NFKC_CF=0031 0030 65E5;NFKC_SCF=0031 0030 65E5;scx=Hani
+cp;33EA;dm=0031 0031 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN;NFKC_CF=0031 0031 65E5;NFKC_SCF=0031 0031 65E5;scx=Hani
+cp;33EB;dm=0031 0032 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE;NFKC_CF=0031 0032 65E5;NFKC_SCF=0031 0032 65E5;scx=Hani
+cp;33EC;dm=0031 0033 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN;NFKC_CF=0031 0033 65E5;NFKC_SCF=0031 0033 65E5;scx=Hani
+cp;33ED;dm=0031 0034 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN;NFKC_CF=0031 0034 65E5;NFKC_SCF=0031 0034 65E5;scx=Hani
+cp;33EE;dm=0031 0035 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN;NFKC_CF=0031 0035 65E5;NFKC_SCF=0031 0035 65E5;scx=Hani
+cp;33EF;dm=0031 0036 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN;NFKC_CF=0031 0036 65E5;NFKC_SCF=0031 0036 65E5;scx=Hani
+cp;33F0;dm=0031 0037 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN;NFKC_CF=0031 0037 65E5;NFKC_SCF=0031 0037 65E5;scx=Hani
+cp;33F1;dm=0031 0038 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN;NFKC_CF=0031 0038 65E5;NFKC_SCF=0031 0038 65E5;scx=Hani
+cp;33F2;dm=0031 0039 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN;NFKC_CF=0031 0039 65E5;NFKC_SCF=0031 0039 65E5;scx=Hani
+cp;33F3;dm=0032 0030 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY;NFKC_CF=0032 0030 65E5;NFKC_SCF=0032 0030 65E5;scx=Hani
+cp;33F4;dm=0032 0031 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE;NFKC_CF=0032 0031 65E5;NFKC_SCF=0032 0031 65E5;scx=Hani
+cp;33F5;dm=0032 0032 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO;NFKC_CF=0032 0032 65E5;NFKC_SCF=0032 0032 65E5;scx=Hani
+cp;33F6;dm=0032 0033 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE;NFKC_CF=0032 0033 65E5;NFKC_SCF=0032 0033 65E5;scx=Hani
+cp;33F7;dm=0032 0034 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR;NFKC_CF=0032 0034 65E5;NFKC_SCF=0032 0034 65E5;scx=Hani
+cp;33F8;dm=0032 0035 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE;NFKC_CF=0032 0035 65E5;NFKC_SCF=0032 0035 65E5;scx=Hani
+cp;33F9;dm=0032 0036 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX;NFKC_CF=0032 0036 65E5;NFKC_SCF=0032 0036 65E5;scx=Hani
+cp;33FA;dm=0032 0037 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN;NFKC_CF=0032 0037 65E5;NFKC_SCF=0032 0037 65E5;scx=Hani
+cp;33FB;dm=0032 0038 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT;NFKC_CF=0032 0038 65E5;NFKC_SCF=0032 0038 65E5;scx=Hani
+cp;33FC;dm=0032 0039 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE;NFKC_CF=0032 0039 65E5;NFKC_SCF=0032 0039 65E5;scx=Hani
+cp;33FD;dm=0033 0030 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY;NFKC_CF=0033 0030 65E5;NFKC_SCF=0033 0030 65E5;scx=Hani
+cp;33FE;dm=0033 0031 65E5;dt=Com;na=IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE;NFKC_CF=0033 0031 65E5;NFKC_SCF=0033 0031 65E5;scx=Hani
# Squared Latin abbreviation
-cp;33FF;age=4.0;bc=ON;dm=0067 0061 006C;na=SQUARE GAL;NFKC_CF=0067 0061 006C
+cp;33FF;age=4.0;bc=ON;dm=0067 0061 006C;na=SQUARE GAL;NFKC_CF=0067 0061 006C;NFKC_SCF=0067 0061 006C
block;3400..4DBF;age=3.0;Alpha;blk=CJK_Ext_A;ea=W;gc=Lo;Gr_Base;IDC;Ideo;IDS;lb=ID;SB=LE;sc=Hani;UIdeo;vo=U;XIDC;XIDS
# 3400..4DBF CJK Unified Ideographs Extension A
@@ -15398,18 +15420,22 @@ cp;4E00;nt=Nu;nv=1
cp;4E03;nt=Nu;nv=7
cp;4E07;nt=Nu;nv=10000
cp;4E09;nt=Nu;nv=3
+cp;4E24;nt=Nu;nv=2
cp;4E5D;nt=Nu;nv=9
cp;4E8C;nt=Nu;nv=2
cp;4E94;nt=Nu;nv=5
cp;4E96;nt=Nu;nv=4
+cp;4EAC;nt=Nu;nv=10000000000000000
cp;4EBF;nt=Nu;nv=100000000
cp;4EC0;nt=Nu;nv=10
cp;4EDF;nt=Nu;nv=1000
cp;4EE8;nt=Nu;nv=3
cp;4F0D;nt=Nu;nv=5
cp;4F70;nt=Nu;nv=100
+cp;4FE9;nt=Nu;nv=2
+cp;5006;nt=Nu;nv=2
cp;5104;nt=Nu;nv=100000000
-cp;5146;nt=Nu;nv=1000000000000
+cp;5146;nt=Nu;nv=1000000
cp;5169;nt=Nu;nv=2
cp;516B;nt=Nu;nv=8
cp;516D;nt=Nu;nv=6
@@ -15429,17 +15455,23 @@ cp;5F0C;nt=Nu;nv=1
cp;5F0D;nt=Nu;nv=2
cp;5F0E;nt=Nu;nv=3
cp;5F10;nt=Nu;nv=2
+cp;62D0;nt=Nu;nv=7
cp;62FE;nt=Nu;nv=10
cp;634C;nt=Nu;nv=8
cp;67D2;nt=Nu;nv=7
+cp;6D1E;nt=Nu;nv=0
cp;6F06;nt=Nu;nv=7
cp;7396;nt=Nu;nv=9
cp;767E;nt=Nu;nv=100
+cp;7695;nt=Nu;nv=200
+cp;79ED;nt=Nu;nv=1000000000
cp;8086;nt=Nu;nv=4
cp;842C;nt=Nu;nv=10000
cp;8CAE;nt=Nu;nv=2
cp;8CB3;nt=Nu;nv=2
cp;8D30;nt=Nu;nv=2
+cp;920E;nt=Nu;nv=9
+cp;94A9;nt=Nu;nv=9
cp;9621;nt=Nu;nv=1000
cp;9646;nt=Nu;nv=6
cp;964C;nt=Nu;nv=100
@@ -17062,55 +17094,55 @@ unassigned;A62C..A63F
block;A640..A69F;age=5.1;Alpha;blk=Cyrillic_Ext_B;Cased;CWCM;gc=Ll;Gr_Base;IDC;IDS;lb=AL;SB=LO;sc=Cyrl;WB=LE;XIDC;XIDS
# A640..A69F Cyrillic Extended-B
# Letters for Old Cyrillic
-cp;A640;cf=A641;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER ZEMLYA;NFKC_CF=A641;SB=UP;scf=A641;slc=A641;Upper
+cp;A640;cf=A641;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER ZEMLYA;NFKC_CF=A641;NFKC_SCF=A641;SB=UP;scf=A641;slc=A641;Upper
cp;A641;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER ZEMLYA;stc=A640;suc=A640
-cp;A642;cf=A643;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER DZELO;NFKC_CF=A643;SB=UP;scf=A643;slc=A643;Upper
+cp;A642;cf=A643;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER DZELO;NFKC_CF=A643;NFKC_SCF=A643;SB=UP;scf=A643;slc=A643;Upper
cp;A643;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER DZELO;stc=A642;suc=A642
-cp;A644;cf=A645;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER REVERSED DZE;NFKC_CF=A645;SB=UP;scf=A645;slc=A645;Upper
+cp;A644;cf=A645;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER REVERSED DZE;NFKC_CF=A645;NFKC_SCF=A645;SB=UP;scf=A645;slc=A645;Upper
cp;A645;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER REVERSED DZE;stc=A644;suc=A644
-cp;A646;cf=A647;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER IOTA;NFKC_CF=A647;SB=UP;scf=A647;slc=A647;Upper
+cp;A646;cf=A647;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER IOTA;NFKC_CF=A647;NFKC_SCF=A647;SB=UP;scf=A647;slc=A647;Upper
cp;A647;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER IOTA;stc=A646;suc=A646
-cp;A648;cf=A649;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER DJERV;NFKC_CF=A649;SB=UP;scf=A649;slc=A649;Upper
+cp;A648;cf=A649;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER DJERV;NFKC_CF=A649;NFKC_SCF=A649;SB=UP;scf=A649;slc=A649;Upper
cp;A649;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER DJERV;stc=A648;suc=A648
-cp;A64A;cf=A64B;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER MONOGRAPH UK;NFKC_CF=A64B;SB=UP;scf=A64B;slc=A64B;Upper
+cp;A64A;cf=A64B;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER MONOGRAPH UK;NFKC_CF=A64B;NFKC_SCF=A64B;SB=UP;scf=A64B;slc=A64B;Upper
cp;A64B;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER MONOGRAPH UK;stc=A64A;suc=A64A
-cp;A64C;cf=A64D;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER BROAD OMEGA;NFKC_CF=A64D;SB=UP;scf=A64D;slc=A64D;Upper
+cp;A64C;cf=A64D;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER BROAD OMEGA;NFKC_CF=A64D;NFKC_SCF=A64D;SB=UP;scf=A64D;slc=A64D;Upper
cp;A64D;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER BROAD OMEGA;stc=A64C;suc=A64C
-cp;A64E;cf=A64F;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER NEUTRAL YER;NFKC_CF=A64F;SB=UP;scf=A64F;slc=A64F;Upper
+cp;A64E;cf=A64F;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER NEUTRAL YER;NFKC_CF=A64F;NFKC_SCF=A64F;SB=UP;scf=A64F;slc=A64F;Upper
cp;A64F;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER NEUTRAL YER;stc=A64E;suc=A64E
-cp;A650;cf=A651;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER YERU WITH BACK YER;NFKC_CF=A651;SB=UP;scf=A651;slc=A651;Upper
+cp;A650;cf=A651;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER YERU WITH BACK YER;NFKC_CF=A651;NFKC_SCF=A651;SB=UP;scf=A651;slc=A651;Upper
cp;A651;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER YERU WITH BACK YER;stc=A650;suc=A650
-cp;A652;cf=A653;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER IOTIFIED YAT;NFKC_CF=A653;SB=UP;scf=A653;slc=A653;Upper
+cp;A652;cf=A653;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER IOTIFIED YAT;NFKC_CF=A653;NFKC_SCF=A653;SB=UP;scf=A653;slc=A653;Upper
cp;A653;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER IOTIFIED YAT;stc=A652;suc=A652
-cp;A654;cf=A655;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER REVERSED YU;NFKC_CF=A655;SB=UP;scf=A655;slc=A655;Upper
+cp;A654;cf=A655;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER REVERSED YU;NFKC_CF=A655;NFKC_SCF=A655;SB=UP;scf=A655;slc=A655;Upper
cp;A655;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER REVERSED YU;stc=A654;suc=A654
-cp;A656;cf=A657;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER IOTIFIED A;NFKC_CF=A657;SB=UP;scf=A657;slc=A657;Upper
+cp;A656;cf=A657;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER IOTIFIED A;NFKC_CF=A657;NFKC_SCF=A657;SB=UP;scf=A657;slc=A657;Upper
cp;A657;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER IOTIFIED A;stc=A656;suc=A656
-cp;A658;cf=A659;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS;NFKC_CF=A659;SB=UP;scf=A659;slc=A659;Upper
+cp;A658;cf=A659;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS;NFKC_CF=A659;NFKC_SCF=A659;SB=UP;scf=A659;slc=A659;Upper
cp;A659;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER CLOSED LITTLE YUS;stc=A658;suc=A658
-cp;A65A;cf=A65B;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER BLENDED YUS;NFKC_CF=A65B;SB=UP;scf=A65B;slc=A65B;Upper
+cp;A65A;cf=A65B;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER BLENDED YUS;NFKC_CF=A65B;NFKC_SCF=A65B;SB=UP;scf=A65B;slc=A65B;Upper
cp;A65B;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER BLENDED YUS;stc=A65A;suc=A65A
-cp;A65C;cf=A65D;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS;NFKC_CF=A65D;SB=UP;scf=A65D;slc=A65D;Upper
+cp;A65C;cf=A65D;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS;NFKC_CF=A65D;NFKC_SCF=A65D;SB=UP;scf=A65D;slc=A65D;Upper
cp;A65D;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER IOTIFIED CLOSED LITTLE YUS;stc=A65C;suc=A65C
-cp;A65E;cf=A65F;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER YN;NFKC_CF=A65F;SB=UP;scf=A65F;slc=A65F;Upper
+cp;A65E;cf=A65F;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER YN;NFKC_CF=A65F;NFKC_SCF=A65F;SB=UP;scf=A65F;slc=A65F;Upper
cp;A65F;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER YN;stc=A65E;suc=A65E
-cp;A660;age=6.0;cf=A661;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER REVERSED TSE;NFKC_CF=A661;SB=UP;scf=A661;slc=A661;Upper
+cp;A660;age=6.0;cf=A661;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER REVERSED TSE;NFKC_CF=A661;NFKC_SCF=A661;SB=UP;scf=A661;slc=A661;Upper
cp;A661;age=6.0;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER REVERSED TSE;stc=A660;suc=A660
-cp;A662;cf=A663;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER SOFT DE;NFKC_CF=A663;SB=UP;scf=A663;slc=A663;Upper
+cp;A662;cf=A663;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER SOFT DE;NFKC_CF=A663;NFKC_SCF=A663;SB=UP;scf=A663;slc=A663;Upper
cp;A663;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER SOFT DE;stc=A662;suc=A662
-cp;A664;cf=A665;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER SOFT EL;NFKC_CF=A665;SB=UP;scf=A665;slc=A665;Upper
+cp;A664;cf=A665;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER SOFT EL;NFKC_CF=A665;NFKC_SCF=A665;SB=UP;scf=A665;slc=A665;Upper
cp;A665;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER SOFT EL;stc=A664;suc=A664
-cp;A666;cf=A667;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER SOFT EM;NFKC_CF=A667;SB=UP;scf=A667;slc=A667;Upper
+cp;A666;cf=A667;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER SOFT EM;NFKC_CF=A667;NFKC_SCF=A667;SB=UP;scf=A667;slc=A667;Upper
cp;A667;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER SOFT EM;stc=A666;suc=A666
-cp;A668;cf=A669;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER MONOCULAR O;NFKC_CF=A669;SB=UP;scf=A669;slc=A669;Upper
+cp;A668;cf=A669;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER MONOCULAR O;NFKC_CF=A669;NFKC_SCF=A669;SB=UP;scf=A669;slc=A669;Upper
cp;A669;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER MONOCULAR O;stc=A668;suc=A668
-cp;A66A;cf=A66B;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER BINOCULAR O;NFKC_CF=A66B;SB=UP;scf=A66B;slc=A66B;Upper
+cp;A66A;cf=A66B;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER BINOCULAR O;NFKC_CF=A66B;NFKC_SCF=A66B;SB=UP;scf=A66B;slc=A66B;Upper
cp;A66B;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER BINOCULAR O;stc=A66A;suc=A66A
-cp;A66C;cf=A66D;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O;NFKC_CF=A66D;SB=UP;scf=A66D;slc=A66D;Upper
+cp;A66C;cf=A66D;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O;NFKC_CF=A66D;NFKC_SCF=A66D;SB=UP;scf=A66D;slc=A66D;Upper
cp;A66D;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER DOUBLE MONOCULAR O;stc=A66C;suc=A66C
cp;A66E;-Cased;-CWCM;gc=Lo;na=CYRILLIC LETTER MULTIOCULAR O;SB=LE
# Abbreviation mark
-cp;A66F;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=COMBINING CYRILLIC VZMET;SB=EX;scx=Cyrl Glag;WB=Extend;-XIDS
+cp;A66F;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING CYRILLIC VZMET;SB=EX;scx=Cyrl Glag;WB=Extend;-XIDS
# Combining numeric signs
cp;A670;-Alpha;bc=NSM;-Cased;CI;-CWCM;gc=Me;GCB=EX;-Gr_Base;Gr_Ext;-IDC;-IDS;jt=T;lb=CM;na=COMBINING CYRILLIC TEN MILLIONS SIGN;SB=EX;WB=Extend;-XIDC;-XIDS
cp;A671;-Alpha;bc=NSM;-Cased;CI;-CWCM;gc=Me;GCB=EX;-Gr_Base;Gr_Ext;-IDC;-IDS;jt=T;lb=CM;na=COMBINING CYRILLIC HUNDRED MILLIONS SIGN;SB=EX;WB=Extend;-XIDC;-XIDS
@@ -17118,56 +17150,56 @@ cp;A672;-Alpha;bc=NSM;-Cased;CI;-CWCM;gc=Me;GCB=EX;-Gr_Base;Gr_Ext;-IDC;-IDS;jt=
# Punctuation mark
cp;A673;-Alpha;bc=ON;-Cased;-CWCM;gc=Po;-IDC;-IDS;na=SLAVONIC ASTERISK;SB=XX;WB=XX;-XIDC;-XIDS
# Combining marks for Old Cyrillic
-cp;A674;age=6.1;bc=NSM;-Cased;ccc=230;CI;-CWCM;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=COMBINING CYRILLIC LETTER UKRAINIAN IE;SB=EX;WB=Extend;-XIDS
-cp;A675;age=6.1;bc=NSM;-Cased;ccc=230;CI;-CWCM;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=COMBINING CYRILLIC LETTER I;SB=EX;WB=Extend;-XIDS
-cp;A676;age=6.1;bc=NSM;-Cased;ccc=230;CI;-CWCM;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=COMBINING CYRILLIC LETTER YI;SB=EX;WB=Extend;-XIDS
-cp;A677;age=6.1;bc=NSM;-Cased;ccc=230;CI;-CWCM;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=COMBINING CYRILLIC LETTER U;SB=EX;WB=Extend;-XIDS
-cp;A678;age=6.1;bc=NSM;-Cased;ccc=230;CI;-CWCM;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=COMBINING CYRILLIC LETTER HARD SIGN;SB=EX;WB=Extend;-XIDS
-cp;A679;age=6.1;bc=NSM;-Cased;ccc=230;CI;-CWCM;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=COMBINING CYRILLIC LETTER YERU;SB=EX;WB=Extend;-XIDS
-cp;A67A;age=6.1;bc=NSM;-Cased;ccc=230;CI;-CWCM;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=COMBINING CYRILLIC LETTER SOFT SIGN;SB=EX;WB=Extend;-XIDS
-cp;A67B;age=6.1;bc=NSM;-Cased;ccc=230;CI;-CWCM;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=COMBINING CYRILLIC LETTER OMEGA;SB=EX;WB=Extend;-XIDS
-cp;A67C;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=COMBINING CYRILLIC KAVYKA;SB=EX;WB=Extend;-XIDS
-cp;A67D;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=COMBINING CYRILLIC PAYEROK;SB=EX;WB=Extend;-XIDS
+cp;A674;age=6.1;bc=NSM;-Cased;ccc=230;CI;-CWCM;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING CYRILLIC LETTER UKRAINIAN IE;SB=EX;WB=Extend;-XIDS
+cp;A675;age=6.1;bc=NSM;-Cased;ccc=230;CI;-CWCM;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING CYRILLIC LETTER I;SB=EX;WB=Extend;-XIDS
+cp;A676;age=6.1;bc=NSM;-Cased;ccc=230;CI;-CWCM;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING CYRILLIC LETTER YI;SB=EX;WB=Extend;-XIDS
+cp;A677;age=6.1;bc=NSM;-Cased;ccc=230;CI;-CWCM;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING CYRILLIC LETTER U;SB=EX;WB=Extend;-XIDS
+cp;A678;age=6.1;bc=NSM;-Cased;ccc=230;CI;-CWCM;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING CYRILLIC LETTER HARD SIGN;SB=EX;WB=Extend;-XIDS
+cp;A679;age=6.1;bc=NSM;-Cased;ccc=230;CI;-CWCM;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING CYRILLIC LETTER YERU;SB=EX;WB=Extend;-XIDS
+cp;A67A;age=6.1;bc=NSM;-Cased;ccc=230;CI;-CWCM;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING CYRILLIC LETTER SOFT SIGN;SB=EX;WB=Extend;-XIDS
+cp;A67B;age=6.1;bc=NSM;-Cased;ccc=230;CI;-CWCM;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING CYRILLIC LETTER OMEGA;SB=EX;WB=Extend;-XIDS
+cp;A67C;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING CYRILLIC KAVYKA;SB=EX;WB=Extend;-XIDS
+cp;A67D;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING CYRILLIC PAYEROK;SB=EX;WB=Extend;-XIDS
# Punctuation mark
cp;A67E;-Alpha;bc=ON;-Cased;-CWCM;gc=Po;-IDC;-IDS;na=CYRILLIC KAVYKA;SB=XX;WB=XX;-XIDC;-XIDS
# Modifier letter
cp;A67F;bc=ON;-Cased;CI;-CWCM;Dia;gc=Lm;na=CYRILLIC PAYEROK;SB=LE
# Letters for Old Abkhasian orthography
-cp;A680;cf=A681;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER DWE;NFKC_CF=A681;SB=UP;scf=A681;slc=A681;Upper
+cp;A680;cf=A681;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER DWE;NFKC_CF=A681;NFKC_SCF=A681;SB=UP;scf=A681;slc=A681;Upper
cp;A681;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER DWE;stc=A680;suc=A680
-cp;A682;cf=A683;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER DZWE;NFKC_CF=A683;SB=UP;scf=A683;slc=A683;Upper
+cp;A682;cf=A683;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER DZWE;NFKC_CF=A683;NFKC_SCF=A683;SB=UP;scf=A683;slc=A683;Upper
cp;A683;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER DZWE;stc=A682;suc=A682
-cp;A684;cf=A685;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER ZHWE;NFKC_CF=A685;SB=UP;scf=A685;slc=A685;Upper
+cp;A684;cf=A685;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER ZHWE;NFKC_CF=A685;NFKC_SCF=A685;SB=UP;scf=A685;slc=A685;Upper
cp;A685;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER ZHWE;stc=A684;suc=A684
-cp;A686;cf=A687;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER CCHE;NFKC_CF=A687;SB=UP;scf=A687;slc=A687;Upper
+cp;A686;cf=A687;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER CCHE;NFKC_CF=A687;NFKC_SCF=A687;SB=UP;scf=A687;slc=A687;Upper
cp;A687;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER CCHE;stc=A686;suc=A686
-cp;A688;cf=A689;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER DZZE;NFKC_CF=A689;SB=UP;scf=A689;slc=A689;Upper
+cp;A688;cf=A689;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER DZZE;NFKC_CF=A689;NFKC_SCF=A689;SB=UP;scf=A689;slc=A689;Upper
cp;A689;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER DZZE;stc=A688;suc=A688
-cp;A68A;cf=A68B;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOK;NFKC_CF=A68B;SB=UP;scf=A68B;slc=A68B;Upper
+cp;A68A;cf=A68B;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOK;NFKC_CF=A68B;NFKC_SCF=A68B;SB=UP;scf=A68B;slc=A68B;Upper
cp;A68B;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER TE WITH MIDDLE HOOK;stc=A68A;suc=A68A
-cp;A68C;cf=A68D;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER TWE;NFKC_CF=A68D;SB=UP;scf=A68D;slc=A68D;Upper
+cp;A68C;cf=A68D;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER TWE;NFKC_CF=A68D;NFKC_SCF=A68D;SB=UP;scf=A68D;slc=A68D;Upper
cp;A68D;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER TWE;stc=A68C;suc=A68C
-cp;A68E;cf=A68F;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER TSWE;NFKC_CF=A68F;SB=UP;scf=A68F;slc=A68F;Upper
+cp;A68E;cf=A68F;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER TSWE;NFKC_CF=A68F;NFKC_SCF=A68F;SB=UP;scf=A68F;slc=A68F;Upper
cp;A68F;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER TSWE;stc=A68E;suc=A68E
-cp;A690;cf=A691;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER TSSE;NFKC_CF=A691;SB=UP;scf=A691;slc=A691;Upper
+cp;A690;cf=A691;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER TSSE;NFKC_CF=A691;NFKC_SCF=A691;SB=UP;scf=A691;slc=A691;Upper
cp;A691;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER TSSE;stc=A690;suc=A690
-cp;A692;cf=A693;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER TCHE;NFKC_CF=A693;SB=UP;scf=A693;slc=A693;Upper
+cp;A692;cf=A693;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER TCHE;NFKC_CF=A693;NFKC_SCF=A693;SB=UP;scf=A693;slc=A693;Upper
cp;A693;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER TCHE;stc=A692;suc=A692
-cp;A694;cf=A695;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER HWE;NFKC_CF=A695;SB=UP;scf=A695;slc=A695;Upper
+cp;A694;cf=A695;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER HWE;NFKC_CF=A695;NFKC_SCF=A695;SB=UP;scf=A695;slc=A695;Upper
cp;A695;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER HWE;stc=A694;suc=A694
-cp;A696;cf=A697;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER SHWE;NFKC_CF=A697;SB=UP;scf=A697;slc=A697;Upper
+cp;A696;cf=A697;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER SHWE;NFKC_CF=A697;NFKC_SCF=A697;SB=UP;scf=A697;slc=A697;Upper
cp;A697;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER SHWE;stc=A696;suc=A696
# Letters for Old Cyrillic
-cp;A698;age=7.0;cf=A699;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER DOUBLE O;NFKC_CF=A699;SB=UP;scf=A699;slc=A699;Upper
+cp;A698;age=7.0;cf=A699;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER DOUBLE O;NFKC_CF=A699;NFKC_SCF=A699;SB=UP;scf=A699;slc=A699;Upper
cp;A699;age=7.0;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER DOUBLE O;stc=A698;suc=A698
-cp;A69A;age=7.0;cf=A69B;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER CROSSED O;NFKC_CF=A69B;SB=UP;scf=A69B;slc=A69B;Upper
+cp;A69A;age=7.0;cf=A69B;CWCF;CWKCF;CWL;gc=Lu;na=CYRILLIC CAPITAL LETTER CROSSED O;NFKC_CF=A69B;NFKC_SCF=A69B;SB=UP;scf=A69B;slc=A69B;Upper
cp;A69B;age=7.0;CWT;CWU;Lower;na=CYRILLIC SMALL LETTER CROSSED O;stc=A69A;suc=A69A
# Intonation marks for Lithuanian dialectology
-cp;A69C;age=7.0;CI;-CWCM;CWKCF;Dia;dm=044A;dt=Sup;gc=Lm;Lower;na=MODIFIER LETTER CYRILLIC HARD SIGN;NFKC_CF=044A;NFKC_QC=N;NFKD_QC=N
-cp;A69D;age=7.0;CI;-CWCM;CWKCF;Dia;dm=044C;dt=Sup;gc=Lm;Lower;na=MODIFIER LETTER CYRILLIC SOFT SIGN;NFKC_CF=044C;NFKC_QC=N;NFKD_QC=N
+cp;A69C;age=7.0;CI;-CWCM;CWKCF;Dia;dm=044A;dt=Sup;gc=Lm;Lower;na=MODIFIER LETTER CYRILLIC HARD SIGN;NFKC_CF=044A;NFKC_QC=N;NFKC_SCF=044A;NFKD_QC=N
+cp;A69D;age=7.0;CI;-CWCM;CWKCF;Dia;dm=044C;dt=Sup;gc=Lm;Lower;na=MODIFIER LETTER CYRILLIC SOFT SIGN;NFKC_CF=044C;NFKC_QC=N;NFKC_SCF=044C;NFKD_QC=N
# Combining marks for Old Cyrillic
-cp;A69E;age=8.0;bc=NSM;-Cased;ccc=230;CI;-CWCM;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=COMBINING CYRILLIC LETTER EF;SB=EX;WB=Extend;-XIDS
-cp;A69F;age=6.1;bc=NSM;-Cased;ccc=230;CI;-CWCM;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=COMBINING CYRILLIC LETTER IOTIFIED E;SB=EX;WB=Extend;-XIDS
+cp;A69E;age=8.0;bc=NSM;-Cased;ccc=230;CI;-CWCM;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING CYRILLIC LETTER EF;SB=EX;WB=Extend;-XIDS
+cp;A69F;age=6.1;bc=NSM;-Cased;ccc=230;CI;-CWCM;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING CYRILLIC LETTER IOTIFIED E;SB=EX;WB=Extend;-XIDS
block;A6A0..A6FF;age=5.2;Alpha;blk=Bamum;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Bamu;WB=LE;XIDC;XIDS
# A6A0..A6FF Bamum
@@ -17253,8 +17285,8 @@ cp;A6ED;gc=Nl;na=BAMUM LETTER FAAMAE;nt=Nu;nv=8
cp;A6EE;gc=Nl;na=BAMUM LETTER KOVUU;nt=Nu;nv=9
cp;A6EF;gc=Nl;na=BAMUM LETTER KOGHOM;nt=Nu;nv=0
# Combining marks
-cp;A6F0;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=BAMUM COMBINING MARK KOQNDON;SB=EX;WB=Extend;-XIDS
-cp;A6F1;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=BAMUM COMBINING MARK TUKWENTIS;SB=EX;WB=Extend;-XIDS
+cp;A6F0;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=BAMUM COMBINING MARK KOQNDON;SB=EX;WB=Extend;-XIDS
+cp;A6F1;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=BAMUM COMBINING MARK TUKWENTIS;SB=EX;WB=Extend;-XIDS
# Punctuation
cp;A6F2;-Alpha;gc=Po;-IDC;-IDS;na=BAMUM NJAEMLI;SB=XX;WB=XX;-XIDC;-XIDS
cp;A6F3;-Alpha;gc=Po;-IDC;-IDS;lb=BA;na=BAMUM FULL STOP;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
@@ -17310,87 +17342,87 @@ block;A720..A7FF;age=5.1;Alpha;blk=Latin_Ext_D;Cased;CWCM;gc=Ll;Gr_Base;IDC;IDS;
cp;A720;age=5.0;-Alpha;bc=ON;-Cased;CI;-CWCM;Dia;gc=Sk;-IDC;-IDS;na=MODIFIER LETTER STRESS AND HIGH TONE;SB=XX;sc=Zyyy;-XIDC;-XIDS
cp;A721;age=5.0;-Alpha;bc=ON;-Cased;CI;-CWCM;Dia;gc=Sk;-IDC;-IDS;na=MODIFIER LETTER STRESS AND LOW TONE;SB=XX;sc=Zyyy;-XIDC;-XIDS
# Egyptological additions
-cp;A722;cf=A723;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF;NFKC_CF=A723;SB=UP;scf=A723;slc=A723;Upper
+cp;A722;cf=A723;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF;NFKC_CF=A723;NFKC_SCF=A723;SB=UP;scf=A723;slc=A723;Upper
cp;A723;CWT;CWU;Lower;na=LATIN SMALL LETTER EGYPTOLOGICAL ALEF;stc=A722;suc=A722
-cp;A724;cf=A725;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER EGYPTOLOGICAL AIN;NFKC_CF=A725;SB=UP;scf=A725;slc=A725;Upper
+cp;A724;cf=A725;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER EGYPTOLOGICAL AIN;NFKC_CF=A725;NFKC_SCF=A725;SB=UP;scf=A725;slc=A725;Upper
cp;A725;CWT;CWU;Lower;na=LATIN SMALL LETTER EGYPTOLOGICAL AIN;stc=A724;suc=A724
# Mayanist additions
-cp;A726;cf=A727;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER HENG;NFKC_CF=A727;SB=UP;scf=A727;slc=A727;Upper
+cp;A726;cf=A727;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER HENG;NFKC_CF=A727;NFKC_SCF=A727;SB=UP;scf=A727;slc=A727;Upper
cp;A727;CWT;CWU;Lower;na=LATIN SMALL LETTER HENG;stc=A726;suc=A726
-cp;A728;cf=A729;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER TZ;NFKC_CF=A729;SB=UP;scf=A729;slc=A729;Upper
+cp;A728;cf=A729;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER TZ;NFKC_CF=A729;NFKC_SCF=A729;SB=UP;scf=A729;slc=A729;Upper
cp;A729;CWT;CWU;Lower;na=LATIN SMALL LETTER TZ;stc=A728;suc=A728
-cp;A72A;cf=A72B;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER TRESILLO;NFKC_CF=A72B;SB=UP;scf=A72B;slc=A72B;Upper
+cp;A72A;cf=A72B;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER TRESILLO;NFKC_CF=A72B;NFKC_SCF=A72B;SB=UP;scf=A72B;slc=A72B;Upper
cp;A72B;CWT;CWU;Lower;na=LATIN SMALL LETTER TRESILLO;stc=A72A;suc=A72A
-cp;A72C;cf=A72D;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER CUATRILLO;NFKC_CF=A72D;SB=UP;scf=A72D;slc=A72D;Upper
+cp;A72C;cf=A72D;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER CUATRILLO;NFKC_CF=A72D;NFKC_SCF=A72D;SB=UP;scf=A72D;slc=A72D;Upper
cp;A72D;CWT;CWU;Lower;na=LATIN SMALL LETTER CUATRILLO;stc=A72C;suc=A72C
-cp;A72E;cf=A72F;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER CUATRILLO WITH COMMA;NFKC_CF=A72F;SB=UP;scf=A72F;slc=A72F;Upper
+cp;A72E;cf=A72F;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER CUATRILLO WITH COMMA;NFKC_CF=A72F;NFKC_SCF=A72F;SB=UP;scf=A72F;slc=A72F;Upper
cp;A72F;CWT;CWU;Lower;na=LATIN SMALL LETTER CUATRILLO WITH COMMA;stc=A72E;suc=A72E
# Medievalist additions
cp;A730;-CWCM;Lower;na=LATIN LETTER SMALL CAPITAL F
cp;A731;-CWCM;Lower;na=LATIN LETTER SMALL CAPITAL S
-cp;A732;cf=A733;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER AA;NFKC_CF=A733;SB=UP;scf=A733;slc=A733;Upper
+cp;A732;cf=A733;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER AA;NFKC_CF=A733;NFKC_SCF=A733;SB=UP;scf=A733;slc=A733;Upper
cp;A733;CWT;CWU;Lower;na=LATIN SMALL LETTER AA;stc=A732;suc=A732
-cp;A734;cf=A735;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER AO;NFKC_CF=A735;SB=UP;scf=A735;slc=A735;Upper
+cp;A734;cf=A735;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER AO;NFKC_CF=A735;NFKC_SCF=A735;SB=UP;scf=A735;slc=A735;Upper
cp;A735;CWT;CWU;Lower;na=LATIN SMALL LETTER AO;stc=A734;suc=A734
-cp;A736;cf=A737;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER AU;NFKC_CF=A737;SB=UP;scf=A737;slc=A737;Upper
+cp;A736;cf=A737;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER AU;NFKC_CF=A737;NFKC_SCF=A737;SB=UP;scf=A737;slc=A737;Upper
cp;A737;CWT;CWU;Lower;na=LATIN SMALL LETTER AU;stc=A736;suc=A736
-cp;A738;cf=A739;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER AV;NFKC_CF=A739;SB=UP;scf=A739;slc=A739;Upper
+cp;A738;cf=A739;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER AV;NFKC_CF=A739;NFKC_SCF=A739;SB=UP;scf=A739;slc=A739;Upper
cp;A739;CWT;CWU;Lower;na=LATIN SMALL LETTER AV;stc=A738;suc=A738
-cp;A73A;cf=A73B;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR;NFKC_CF=A73B;SB=UP;scf=A73B;slc=A73B;Upper
+cp;A73A;cf=A73B;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR;NFKC_CF=A73B;NFKC_SCF=A73B;SB=UP;scf=A73B;slc=A73B;Upper
cp;A73B;CWT;CWU;Lower;na=LATIN SMALL LETTER AV WITH HORIZONTAL BAR;stc=A73A;suc=A73A
-cp;A73C;cf=A73D;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER AY;NFKC_CF=A73D;SB=UP;scf=A73D;slc=A73D;Upper
+cp;A73C;cf=A73D;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER AY;NFKC_CF=A73D;NFKC_SCF=A73D;SB=UP;scf=A73D;slc=A73D;Upper
cp;A73D;CWT;CWU;Lower;na=LATIN SMALL LETTER AY;stc=A73C;suc=A73C
-cp;A73E;cf=A73F;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER REVERSED C WITH DOT;NFKC_CF=A73F;SB=UP;scf=A73F;slc=A73F;Upper
+cp;A73E;cf=A73F;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER REVERSED C WITH DOT;NFKC_CF=A73F;NFKC_SCF=A73F;SB=UP;scf=A73F;slc=A73F;Upper
cp;A73F;CWT;CWU;Lower;na=LATIN SMALL LETTER REVERSED C WITH DOT;stc=A73E;suc=A73E
-cp;A740;cf=A741;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER K WITH STROKE;NFKC_CF=A741;SB=UP;scf=A741;slc=A741;Upper
+cp;A740;cf=A741;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER K WITH STROKE;NFKC_CF=A741;NFKC_SCF=A741;SB=UP;scf=A741;slc=A741;Upper
cp;A741;CWT;CWU;Lower;na=LATIN SMALL LETTER K WITH STROKE;stc=A740;suc=A740
-cp;A742;cf=A743;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER K WITH DIAGONAL STROKE;NFKC_CF=A743;SB=UP;scf=A743;slc=A743;Upper
+cp;A742;cf=A743;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER K WITH DIAGONAL STROKE;NFKC_CF=A743;NFKC_SCF=A743;SB=UP;scf=A743;slc=A743;Upper
cp;A743;CWT;CWU;Lower;na=LATIN SMALL LETTER K WITH DIAGONAL STROKE;stc=A742;suc=A742
-cp;A744;cf=A745;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE;NFKC_CF=A745;SB=UP;scf=A745;slc=A745;Upper
+cp;A744;cf=A745;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE;NFKC_CF=A745;NFKC_SCF=A745;SB=UP;scf=A745;slc=A745;Upper
cp;A745;CWT;CWU;Lower;na=LATIN SMALL LETTER K WITH STROKE AND DIAGONAL STROKE;stc=A744;suc=A744
-cp;A746;cf=A747;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER BROKEN L;NFKC_CF=A747;SB=UP;scf=A747;slc=A747;Upper
+cp;A746;cf=A747;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER BROKEN L;NFKC_CF=A747;NFKC_SCF=A747;SB=UP;scf=A747;slc=A747;Upper
cp;A747;CWT;CWU;Lower;na=LATIN SMALL LETTER BROKEN L;stc=A746;suc=A746
-cp;A748;cf=A749;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER L WITH HIGH STROKE;NFKC_CF=A749;SB=UP;scf=A749;slc=A749;Upper
+cp;A748;cf=A749;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER L WITH HIGH STROKE;NFKC_CF=A749;NFKC_SCF=A749;SB=UP;scf=A749;slc=A749;Upper
cp;A749;CWT;CWU;Lower;na=LATIN SMALL LETTER L WITH HIGH STROKE;stc=A748;suc=A748
-cp;A74A;cf=A74B;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY;NFKC_CF=A74B;SB=UP;scf=A74B;slc=A74B;Upper
+cp;A74A;cf=A74B;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY;NFKC_CF=A74B;NFKC_SCF=A74B;SB=UP;scf=A74B;slc=A74B;Upper
cp;A74B;CWT;CWU;Lower;na=LATIN SMALL LETTER O WITH LONG STROKE OVERLAY;stc=A74A;suc=A74A
-cp;A74C;cf=A74D;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER O WITH LOOP;NFKC_CF=A74D;SB=UP;scf=A74D;slc=A74D;Upper
+cp;A74C;cf=A74D;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER O WITH LOOP;NFKC_CF=A74D;NFKC_SCF=A74D;SB=UP;scf=A74D;slc=A74D;Upper
cp;A74D;CWT;CWU;Lower;na=LATIN SMALL LETTER O WITH LOOP;stc=A74C;suc=A74C
-cp;A74E;cf=A74F;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER OO;NFKC_CF=A74F;SB=UP;scf=A74F;slc=A74F;Upper
+cp;A74E;cf=A74F;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER OO;NFKC_CF=A74F;NFKC_SCF=A74F;SB=UP;scf=A74F;slc=A74F;Upper
cp;A74F;CWT;CWU;Lower;na=LATIN SMALL LETTER OO;stc=A74E;suc=A74E
-cp;A750;cf=A751;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER;NFKC_CF=A751;SB=UP;scf=A751;slc=A751;Upper
+cp;A750;cf=A751;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER;NFKC_CF=A751;NFKC_SCF=A751;SB=UP;scf=A751;slc=A751;Upper
cp;A751;CWT;CWU;Lower;na=LATIN SMALL LETTER P WITH STROKE THROUGH DESCENDER;stc=A750;suc=A750
-cp;A752;cf=A753;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER P WITH FLOURISH;NFKC_CF=A753;SB=UP;scf=A753;slc=A753;Upper
+cp;A752;cf=A753;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER P WITH FLOURISH;NFKC_CF=A753;NFKC_SCF=A753;SB=UP;scf=A753;slc=A753;Upper
cp;A753;CWT;CWU;Lower;na=LATIN SMALL LETTER P WITH FLOURISH;stc=A752;suc=A752
-cp;A754;cf=A755;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER P WITH SQUIRREL TAIL;NFKC_CF=A755;SB=UP;scf=A755;slc=A755;Upper
+cp;A754;cf=A755;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER P WITH SQUIRREL TAIL;NFKC_CF=A755;NFKC_SCF=A755;SB=UP;scf=A755;slc=A755;Upper
cp;A755;CWT;CWU;Lower;na=LATIN SMALL LETTER P WITH SQUIRREL TAIL;stc=A754;suc=A754
-cp;A756;cf=A757;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER;NFKC_CF=A757;SB=UP;scf=A757;slc=A757;Upper
+cp;A756;cf=A757;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER;NFKC_CF=A757;NFKC_SCF=A757;SB=UP;scf=A757;slc=A757;Upper
cp;A757;CWT;CWU;Lower;na=LATIN SMALL LETTER Q WITH STROKE THROUGH DESCENDER;stc=A756;suc=A756
-cp;A758;cf=A759;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE;NFKC_CF=A759;SB=UP;scf=A759;slc=A759;Upper
+cp;A758;cf=A759;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE;NFKC_CF=A759;NFKC_SCF=A759;SB=UP;scf=A759;slc=A759;Upper
cp;A759;CWT;CWU;Lower;na=LATIN SMALL LETTER Q WITH DIAGONAL STROKE;stc=A758;suc=A758
-cp;A75A;cf=A75B;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER R ROTUNDA;NFKC_CF=A75B;SB=UP;scf=A75B;slc=A75B;Upper
+cp;A75A;cf=A75B;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER R ROTUNDA;NFKC_CF=A75B;NFKC_SCF=A75B;SB=UP;scf=A75B;slc=A75B;Upper
cp;A75B;CWT;CWU;Lower;na=LATIN SMALL LETTER R ROTUNDA;stc=A75A;suc=A75A
-cp;A75C;cf=A75D;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER RUM ROTUNDA;NFKC_CF=A75D;SB=UP;scf=A75D;slc=A75D;Upper
+cp;A75C;cf=A75D;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER RUM ROTUNDA;NFKC_CF=A75D;NFKC_SCF=A75D;SB=UP;scf=A75D;slc=A75D;Upper
cp;A75D;CWT;CWU;Lower;na=LATIN SMALL LETTER RUM ROTUNDA;stc=A75C;suc=A75C
-cp;A75E;cf=A75F;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER V WITH DIAGONAL STROKE;NFKC_CF=A75F;SB=UP;scf=A75F;slc=A75F;Upper
+cp;A75E;cf=A75F;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER V WITH DIAGONAL STROKE;NFKC_CF=A75F;NFKC_SCF=A75F;SB=UP;scf=A75F;slc=A75F;Upper
cp;A75F;CWT;CWU;Lower;na=LATIN SMALL LETTER V WITH DIAGONAL STROKE;stc=A75E;suc=A75E
-cp;A760;cf=A761;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER VY;NFKC_CF=A761;SB=UP;scf=A761;slc=A761;Upper
+cp;A760;cf=A761;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER VY;NFKC_CF=A761;NFKC_SCF=A761;SB=UP;scf=A761;slc=A761;Upper
cp;A761;CWT;CWU;Lower;na=LATIN SMALL LETTER VY;stc=A760;suc=A760
-cp;A762;cf=A763;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER VISIGOTHIC Z;NFKC_CF=A763;SB=UP;scf=A763;slc=A763;Upper
+cp;A762;cf=A763;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER VISIGOTHIC Z;NFKC_CF=A763;NFKC_SCF=A763;SB=UP;scf=A763;slc=A763;Upper
cp;A763;CWT;CWU;Lower;na=LATIN SMALL LETTER VISIGOTHIC Z;stc=A762;suc=A762
-cp;A764;cf=A765;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER THORN WITH STROKE;NFKC_CF=A765;SB=UP;scf=A765;slc=A765;Upper
+cp;A764;cf=A765;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER THORN WITH STROKE;NFKC_CF=A765;NFKC_SCF=A765;SB=UP;scf=A765;slc=A765;Upper
cp;A765;CWT;CWU;Lower;na=LATIN SMALL LETTER THORN WITH STROKE;stc=A764;suc=A764
-cp;A766;cf=A767;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER;NFKC_CF=A767;SB=UP;scf=A767;slc=A767;Upper
+cp;A766;cf=A767;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER;NFKC_CF=A767;NFKC_SCF=A767;SB=UP;scf=A767;slc=A767;Upper
cp;A767;CWT;CWU;Lower;na=LATIN SMALL LETTER THORN WITH STROKE THROUGH DESCENDER;stc=A766;suc=A766
-cp;A768;cf=A769;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER VEND;NFKC_CF=A769;SB=UP;scf=A769;slc=A769;Upper
+cp;A768;cf=A769;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER VEND;NFKC_CF=A769;NFKC_SCF=A769;SB=UP;scf=A769;slc=A769;Upper
cp;A769;CWT;CWU;Lower;na=LATIN SMALL LETTER VEND;stc=A768;suc=A768
-cp;A76A;cf=A76B;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER ET;NFKC_CF=A76B;SB=UP;scf=A76B;slc=A76B;Upper
+cp;A76A;cf=A76B;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER ET;NFKC_CF=A76B;NFKC_SCF=A76B;SB=UP;scf=A76B;slc=A76B;Upper
cp;A76B;CWT;CWU;Lower;na=LATIN SMALL LETTER ET;stc=A76A;suc=A76A
-cp;A76C;cf=A76D;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER IS;NFKC_CF=A76D;SB=UP;scf=A76D;slc=A76D;Upper
+cp;A76C;cf=A76D;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER IS;NFKC_CF=A76D;NFKC_SCF=A76D;SB=UP;scf=A76D;slc=A76D;Upper
cp;A76D;CWT;CWU;Lower;na=LATIN SMALL LETTER IS;stc=A76C;suc=A76C
-cp;A76E;cf=A76F;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER CON;NFKC_CF=A76F;SB=UP;scf=A76F;slc=A76F;Upper
+cp;A76E;cf=A76F;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER CON;NFKC_CF=A76F;NFKC_SCF=A76F;SB=UP;scf=A76F;slc=A76F;Upper
cp;A76F;CWT;CWU;Lower;na=LATIN SMALL LETTER CON;stc=A76E;suc=A76E
-cp;A770;CI;-CWCM;CWKCF;dm=A76F;dt=Sup;gc=Lm;Lower;na=MODIFIER LETTER US;NFKC_CF=A76F;NFKC_QC=N;NFKD_QC=N
+cp;A770;CI;-CWCM;CWKCF;dm=A76F;dt=Sup;gc=Lm;Lower;na=MODIFIER LETTER US;NFKC_CF=A76F;NFKC_QC=N;NFKC_SCF=A76F;NFKD_QC=N
cp;A771;-CWCM;Lower;na=LATIN SMALL LETTER DUM
cp;A772;-CWCM;Lower;na=LATIN SMALL LETTER LUM
cp;A773;-CWCM;Lower;na=LATIN SMALL LETTER MUM
@@ -17400,137 +17432,137 @@ cp;A776;-CWCM;Lower;na=LATIN LETTER SMALL CAPITAL RUM
cp;A777;-CWCM;Lower;na=LATIN SMALL LETTER TUM
cp;A778;-CWCM;Lower;na=LATIN SMALL LETTER UM
# Insular and Celticist letters
-cp;A779;cf=A77A;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER INSULAR D;NFKC_CF=A77A;SB=UP;scf=A77A;slc=A77A;Upper
+cp;A779;cf=A77A;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER INSULAR D;NFKC_CF=A77A;NFKC_SCF=A77A;SB=UP;scf=A77A;slc=A77A;Upper
cp;A77A;CWT;CWU;Lower;na=LATIN SMALL LETTER INSULAR D;stc=A779;suc=A779
-cp;A77B;cf=A77C;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER INSULAR F;NFKC_CF=A77C;SB=UP;scf=A77C;slc=A77C;Upper
+cp;A77B;cf=A77C;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER INSULAR F;NFKC_CF=A77C;NFKC_SCF=A77C;SB=UP;scf=A77C;slc=A77C;Upper
cp;A77C;CWT;CWU;Lower;na=LATIN SMALL LETTER INSULAR F;stc=A77B;suc=A77B
-cp;A77D;cf=1D79;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER INSULAR G;NFKC_CF=1D79;SB=UP;scf=1D79;slc=1D79;Upper
-cp;A77E;cf=A77F;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER TURNED INSULAR G;NFKC_CF=A77F;SB=UP;scf=A77F;slc=A77F;Upper
+cp;A77D;cf=1D79;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER INSULAR G;NFKC_CF=1D79;NFKC_SCF=1D79;SB=UP;scf=1D79;slc=1D79;Upper
+cp;A77E;cf=A77F;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER TURNED INSULAR G;NFKC_CF=A77F;NFKC_SCF=A77F;SB=UP;scf=A77F;slc=A77F;Upper
cp;A77F;CWT;CWU;Lower;na=LATIN SMALL LETTER TURNED INSULAR G;stc=A77E;suc=A77E
-cp;A780;cf=A781;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER TURNED L;NFKC_CF=A781;SB=UP;scf=A781;slc=A781;Upper
+cp;A780;cf=A781;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER TURNED L;NFKC_CF=A781;NFKC_SCF=A781;SB=UP;scf=A781;slc=A781;Upper
cp;A781;CWT;CWU;Lower;na=LATIN SMALL LETTER TURNED L;stc=A780;suc=A780
-cp;A782;cf=A783;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER INSULAR R;NFKC_CF=A783;SB=UP;scf=A783;slc=A783;Upper
+cp;A782;cf=A783;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER INSULAR R;NFKC_CF=A783;NFKC_SCF=A783;SB=UP;scf=A783;slc=A783;Upper
cp;A783;CWT;CWU;Lower;na=LATIN SMALL LETTER INSULAR R;stc=A782;suc=A782
-cp;A784;cf=A785;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER INSULAR S;NFKC_CF=A785;SB=UP;scf=A785;slc=A785;Upper
+cp;A784;cf=A785;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER INSULAR S;NFKC_CF=A785;NFKC_SCF=A785;SB=UP;scf=A785;slc=A785;Upper
cp;A785;CWT;CWU;Lower;na=LATIN SMALL LETTER INSULAR S;stc=A784;suc=A784
-cp;A786;cf=A787;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER INSULAR T;NFKC_CF=A787;SB=UP;scf=A787;slc=A787;Upper
+cp;A786;cf=A787;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER INSULAR T;NFKC_CF=A787;NFKC_SCF=A787;SB=UP;scf=A787;slc=A787;Upper
cp;A787;CWT;CWU;Lower;na=LATIN SMALL LETTER INSULAR T;stc=A786;suc=A786
# Modifier letters
cp;A788;bc=ON;-Cased;CI;-CWCM;Dia;gc=Lm;na=MODIFIER LETTER LOW CIRCUMFLEX ACCENT;SB=LE;sc=Zyyy
cp;A789;-Alpha;-Cased;CI;-CWCM;Dia;gc=Sk;-IDC;-IDS;na=MODIFIER LETTER COLON;SB=XX;sc=Zyyy;-XIDC;-XIDS
cp;A78A;-Alpha;-Cased;CI;-CWCM;Dia;gc=Sk;-IDC;-IDS;na=MODIFIER LETTER SHORT EQUALS SIGN;SB=XX;sc=Zyyy;-XIDC;-XIDS
# Orthographic letters for glottals
-cp;A78B;cf=A78C;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER SALTILLO;NFKC_CF=A78C;SB=UP;scf=A78C;slc=A78C;Upper
+cp;A78B;cf=A78C;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER SALTILLO;NFKC_CF=A78C;NFKC_SCF=A78C;SB=UP;scf=A78C;slc=A78C;Upper
cp;A78C;CWT;CWU;Lower;na=LATIN SMALL LETTER SALTILLO;stc=A78B;suc=A78B
# Additional letter
-cp;A78D;age=6.0;cf=0265;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER TURNED H;NFKC_CF=0265;SB=UP;scf=0265;slc=0265;Upper
+cp;A78D;age=6.0;cf=0265;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER TURNED H;NFKC_CF=0265;NFKC_SCF=0265;SB=UP;scf=0265;slc=0265;Upper
# Phonetic symbol
cp;A78E;age=6.0;-CWCM;Lower;na=LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
-# Transliteration letter
+# Transliteration letter for sinology
cp;A78F;age=8.0;-Cased;-CWCM;gc=Lo;na=LATIN LETTER SINOLOGICAL DOT;SB=LE
# Additional letters
-cp;A790;age=6.0;cf=A791;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER N WITH DESCENDER;NFKC_CF=A791;SB=UP;scf=A791;slc=A791;Upper
+cp;A790;age=6.0;cf=A791;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER N WITH DESCENDER;NFKC_CF=A791;NFKC_SCF=A791;SB=UP;scf=A791;slc=A791;Upper
cp;A791;age=6.0;CWT;CWU;Lower;na=LATIN SMALL LETTER N WITH DESCENDER;stc=A790;suc=A790
-cp;A792;age=6.1;cf=A793;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER C WITH BAR;NFKC_CF=A793;SB=UP;scf=A793;slc=A793;Upper
+cp;A792;age=6.1;cf=A793;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER C WITH BAR;NFKC_CF=A793;NFKC_SCF=A793;SB=UP;scf=A793;slc=A793;Upper
cp;A793;age=6.1;CWT;CWU;Lower;na=LATIN SMALL LETTER C WITH BAR;stc=A792;suc=A792
# Additions for Lithuanian dialectology
cp;A794;age=7.0;CWT;CWU;Lower;na=LATIN SMALL LETTER C WITH PALATAL HOOK;stc=A7C4;suc=A7C4
cp;A795;age=7.0;-CWCM;Lower;na=LATIN SMALL LETTER H WITH PALATAL HOOK
# Letters for Middle Vietnamese
-cp;A796;age=7.0;cf=A797;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER B WITH FLOURISH;NFKC_CF=A797;SB=UP;scf=A797;slc=A797;Upper
+cp;A796;age=7.0;cf=A797;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER B WITH FLOURISH;NFKC_CF=A797;NFKC_SCF=A797;SB=UP;scf=A797;slc=A797;Upper
cp;A797;age=7.0;CWT;CWU;Lower;na=LATIN SMALL LETTER B WITH FLOURISH;stc=A796;suc=A796
# Archaic letters for Ewe
-cp;A798;age=7.0;cf=A799;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER F WITH STROKE;NFKC_CF=A799;SB=UP;scf=A799;slc=A799;Upper
+cp;A798;age=7.0;cf=A799;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER F WITH STROKE;NFKC_CF=A799;NFKC_SCF=A799;SB=UP;scf=A799;slc=A799;Upper
cp;A799;age=7.0;CWT;CWU;Lower;na=LATIN SMALL LETTER F WITH STROKE;stc=A798;suc=A798
# Archaic letters for Volap\u00FCk
-cp;A79A;age=7.0;cf=A79B;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER VOLAPUK AE;NFKC_CF=A79B;SB=UP;scf=A79B;slc=A79B;Upper
+cp;A79A;age=7.0;cf=A79B;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER VOLAPUK AE;NFKC_CF=A79B;NFKC_SCF=A79B;SB=UP;scf=A79B;slc=A79B;Upper
cp;A79B;age=7.0;CWT;CWU;Lower;na=LATIN SMALL LETTER VOLAPUK AE;stc=A79A;suc=A79A
-cp;A79C;age=7.0;cf=A79D;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER VOLAPUK OE;NFKC_CF=A79D;SB=UP;scf=A79D;slc=A79D;Upper
+cp;A79C;age=7.0;cf=A79D;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER VOLAPUK OE;NFKC_CF=A79D;NFKC_SCF=A79D;SB=UP;scf=A79D;slc=A79D;Upper
cp;A79D;age=7.0;CWT;CWU;Lower;na=LATIN SMALL LETTER VOLAPUK OE;stc=A79C;suc=A79C
-cp;A79E;age=7.0;cf=A79F;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER VOLAPUK UE;NFKC_CF=A79F;SB=UP;scf=A79F;slc=A79F;Upper
+cp;A79E;age=7.0;cf=A79F;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER VOLAPUK UE;NFKC_CF=A79F;NFKC_SCF=A79F;SB=UP;scf=A79F;slc=A79F;Upper
cp;A79F;age=7.0;CWT;CWU;Lower;na=LATIN SMALL LETTER VOLAPUK UE;stc=A79E;suc=A79E
# Letters for pre-1921 Latvian orthography
-cp;A7A0;age=6.0;cf=A7A1;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER G WITH OBLIQUE STROKE;NFKC_CF=A7A1;SB=UP;scf=A7A1;slc=A7A1;Upper
+cp;A7A0;age=6.0;cf=A7A1;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER G WITH OBLIQUE STROKE;NFKC_CF=A7A1;NFKC_SCF=A7A1;SB=UP;scf=A7A1;slc=A7A1;Upper
cp;A7A1;age=6.0;CWT;CWU;Lower;na=LATIN SMALL LETTER G WITH OBLIQUE STROKE;stc=A7A0;suc=A7A0
-cp;A7A2;age=6.0;cf=A7A3;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER K WITH OBLIQUE STROKE;NFKC_CF=A7A3;SB=UP;scf=A7A3;slc=A7A3;Upper
+cp;A7A2;age=6.0;cf=A7A3;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER K WITH OBLIQUE STROKE;NFKC_CF=A7A3;NFKC_SCF=A7A3;SB=UP;scf=A7A3;slc=A7A3;Upper
cp;A7A3;age=6.0;CWT;CWU;Lower;na=LATIN SMALL LETTER K WITH OBLIQUE STROKE;stc=A7A2;suc=A7A2
-cp;A7A4;age=6.0;cf=A7A5;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER N WITH OBLIQUE STROKE;NFKC_CF=A7A5;SB=UP;scf=A7A5;slc=A7A5;Upper
+cp;A7A4;age=6.0;cf=A7A5;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER N WITH OBLIQUE STROKE;NFKC_CF=A7A5;NFKC_SCF=A7A5;SB=UP;scf=A7A5;slc=A7A5;Upper
cp;A7A5;age=6.0;CWT;CWU;Lower;na=LATIN SMALL LETTER N WITH OBLIQUE STROKE;stc=A7A4;suc=A7A4
-cp;A7A6;age=6.0;cf=A7A7;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER R WITH OBLIQUE STROKE;NFKC_CF=A7A7;SB=UP;scf=A7A7;slc=A7A7;Upper
+cp;A7A6;age=6.0;cf=A7A7;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER R WITH OBLIQUE STROKE;NFKC_CF=A7A7;NFKC_SCF=A7A7;SB=UP;scf=A7A7;slc=A7A7;Upper
cp;A7A7;age=6.0;CWT;CWU;Lower;na=LATIN SMALL LETTER R WITH OBLIQUE STROKE;stc=A7A6;suc=A7A6
-cp;A7A8;age=6.0;cf=A7A9;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER S WITH OBLIQUE STROKE;NFKC_CF=A7A9;SB=UP;scf=A7A9;slc=A7A9;Upper
+cp;A7A8;age=6.0;cf=A7A9;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER S WITH OBLIQUE STROKE;NFKC_CF=A7A9;NFKC_SCF=A7A9;SB=UP;scf=A7A9;slc=A7A9;Upper
cp;A7A9;age=6.0;CWT;CWU;Lower;na=LATIN SMALL LETTER S WITH OBLIQUE STROKE;stc=A7A8;suc=A7A8
# Additional letters
-cp;A7AA;age=6.1;cf=0266;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER H WITH HOOK;NFKC_CF=0266;SB=UP;scf=0266;slc=0266;Upper
-cp;A7AB;age=7.0;cf=025C;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER REVERSED OPEN E;NFKC_CF=025C;SB=UP;scf=025C;slc=025C;Upper
-cp;A7AC;age=7.0;cf=0261;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER SCRIPT G;NFKC_CF=0261;SB=UP;scf=0261;slc=0261;Upper
-cp;A7AD;age=7.0;cf=026C;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER L WITH BELT;NFKC_CF=026C;SB=UP;scf=026C;slc=026C;Upper
+cp;A7AA;age=6.1;cf=0266;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER H WITH HOOK;NFKC_CF=0266;NFKC_SCF=0266;SB=UP;scf=0266;slc=0266;Upper
+cp;A7AB;age=7.0;cf=025C;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER REVERSED OPEN E;NFKC_CF=025C;NFKC_SCF=025C;SB=UP;scf=025C;slc=025C;Upper
+cp;A7AC;age=7.0;cf=0261;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER SCRIPT G;NFKC_CF=0261;NFKC_SCF=0261;SB=UP;scf=0261;slc=0261;Upper
+cp;A7AD;age=7.0;cf=026C;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER L WITH BELT;NFKC_CF=026C;NFKC_SCF=026C;SB=UP;scf=026C;slc=026C;Upper
# Letter for West African languages
-cp;A7AE;age=9.0;cf=026A;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER SMALL CAPITAL I;NFKC_CF=026A;SB=UP;scf=026A;slc=026A;Upper
+cp;A7AE;age=9.0;cf=026A;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER SMALL CAPITAL I;NFKC_CF=026A;NFKC_SCF=026A;SB=UP;scf=026A;slc=026A;Upper
# Letter for Japanese phonemic transcription
cp;A7AF;age=11.0;-CWCM;Lower;na=LATIN LETTER SMALL CAPITAL Q
# Letters for Americanist orthographies
-cp;A7B0;age=7.0;cf=029E;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER TURNED K;NFKC_CF=029E;SB=UP;scf=029E;slc=029E;Upper
-cp;A7B1;age=7.0;cf=0287;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER TURNED T;NFKC_CF=0287;SB=UP;scf=0287;slc=0287;Upper
+cp;A7B0;age=7.0;cf=029E;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER TURNED K;NFKC_CF=029E;NFKC_SCF=029E;SB=UP;scf=029E;slc=029E;Upper
+cp;A7B1;age=7.0;cf=0287;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER TURNED T;NFKC_CF=0287;NFKC_SCF=0287;SB=UP;scf=0287;slc=0287;Upper
# Letter for African languages
-cp;A7B2;age=8.0;cf=029D;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER J WITH CROSSED-TAIL;NFKC_CF=029D;SB=UP;scf=029D;slc=029D;Upper
+cp;A7B2;age=8.0;cf=029D;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER J WITH CROSSED-TAIL;NFKC_CF=029D;NFKC_SCF=029D;SB=UP;scf=029D;slc=029D;Upper
# Letter for German dialectology
-cp;A7B3;age=8.0;cf=AB53;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER CHI;NFKC_CF=AB53;SB=UP;scf=AB53;slc=AB53;Upper
+cp;A7B3;age=8.0;cf=AB53;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER CHI;NFKC_CF=AB53;NFKC_SCF=AB53;SB=UP;scf=AB53;slc=AB53;Upper
# Letters for African languages
-cp;A7B4;age=8.0;cf=A7B5;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER BETA;NFKC_CF=A7B5;SB=UP;scf=A7B5;slc=A7B5;Upper
+cp;A7B4;age=8.0;cf=A7B5;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER BETA;NFKC_CF=A7B5;NFKC_SCF=A7B5;SB=UP;scf=A7B5;slc=A7B5;Upper
cp;A7B5;age=8.0;CWT;CWU;Lower;na=LATIN SMALL LETTER BETA;stc=A7B4;suc=A7B4
-cp;A7B6;age=8.0;cf=A7B7;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER OMEGA;NFKC_CF=A7B7;SB=UP;scf=A7B7;slc=A7B7;Upper
+cp;A7B6;age=8.0;cf=A7B7;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER OMEGA;NFKC_CF=A7B7;NFKC_SCF=A7B7;SB=UP;scf=A7B7;slc=A7B7;Upper
cp;A7B7;age=8.0;CWT;CWU;Lower;na=LATIN SMALL LETTER OMEGA;stc=A7B6;suc=A7B6
# Letters for Mazahua (M\u00E9xico)
-cp;A7B8;age=11.0;cf=A7B9;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER U WITH STROKE;NFKC_CF=A7B9;SB=UP;scf=A7B9;slc=A7B9;Upper
+cp;A7B8;age=11.0;cf=A7B9;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER U WITH STROKE;NFKC_CF=A7B9;NFKC_SCF=A7B9;SB=UP;scf=A7B9;slc=A7B9;Upper
cp;A7B9;age=11.0;CWT;CWU;Lower;na=LATIN SMALL LETTER U WITH STROKE;stc=A7B8;suc=A7B8
# Letters for Ugaritic and Egyptological transliteration
-cp;A7BA;age=12.0;cf=A7BB;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER GLOTTAL A;NFKC_CF=A7BB;SB=UP;scf=A7BB;slc=A7BB;Upper
+cp;A7BA;age=12.0;cf=A7BB;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER GLOTTAL A;NFKC_CF=A7BB;NFKC_SCF=A7BB;SB=UP;scf=A7BB;slc=A7BB;Upper
cp;A7BB;age=12.0;CWT;CWU;Lower;na=LATIN SMALL LETTER GLOTTAL A;stc=A7BA;suc=A7BA
-cp;A7BC;age=12.0;cf=A7BD;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER GLOTTAL I;NFKC_CF=A7BD;SB=UP;scf=A7BD;slc=A7BD;Upper
+cp;A7BC;age=12.0;cf=A7BD;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER GLOTTAL I;NFKC_CF=A7BD;NFKC_SCF=A7BD;SB=UP;scf=A7BD;slc=A7BD;Upper
cp;A7BD;age=12.0;CWT;CWU;Lower;na=LATIN SMALL LETTER GLOTTAL I;stc=A7BC;suc=A7BC
-cp;A7BE;age=12.0;cf=A7BF;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER GLOTTAL U;NFKC_CF=A7BF;SB=UP;scf=A7BF;slc=A7BF;Upper
+cp;A7BE;age=12.0;cf=A7BF;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER GLOTTAL U;NFKC_CF=A7BF;NFKC_SCF=A7BF;SB=UP;scf=A7BF;slc=A7BF;Upper
cp;A7BF;age=12.0;CWT;CWU;Lower;na=LATIN SMALL LETTER GLOTTAL U;stc=A7BE;suc=A7BE
# Additional medieval letters
-cp;A7C0;age=14.0;cf=A7C1;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER OLD POLISH O;NFKC_CF=A7C1;SB=UP;scf=A7C1;slc=A7C1;Upper
+cp;A7C0;age=14.0;cf=A7C1;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER OLD POLISH O;NFKC_CF=A7C1;NFKC_SCF=A7C1;SB=UP;scf=A7C1;slc=A7C1;Upper
cp;A7C1;age=14.0;CWT;CWU;Lower;na=LATIN SMALL LETTER OLD POLISH O;stc=A7C0;suc=A7C0
-cp;A7C2;age=12.0;cf=A7C3;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER ANGLICANA W;NFKC_CF=A7C3;SB=UP;scf=A7C3;slc=A7C3;Upper
+cp;A7C2;age=12.0;cf=A7C3;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER ANGLICANA W;NFKC_CF=A7C3;NFKC_SCF=A7C3;SB=UP;scf=A7C3;slc=A7C3;Upper
cp;A7C3;age=12.0;CWT;CWU;Lower;na=LATIN SMALL LETTER ANGLICANA W;stc=A7C2;suc=A7C2
# Letters used in early Pinyin romanization
-cp;A7C4;age=12.0;cf=A794;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER C WITH PALATAL HOOK;NFKC_CF=A794;SB=UP;scf=A794;slc=A794;Upper
-cp;A7C5;age=12.0;cf=0282;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER S WITH HOOK;NFKC_CF=0282;SB=UP;scf=0282;slc=0282;Upper
-cp;A7C6;age=12.0;cf=1D8E;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER Z WITH PALATAL HOOK;NFKC_CF=1D8E;SB=UP;scf=1D8E;slc=1D8E;Upper
+cp;A7C4;age=12.0;cf=A794;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER C WITH PALATAL HOOK;NFKC_CF=A794;NFKC_SCF=A794;SB=UP;scf=A794;slc=A794;Upper
+cp;A7C5;age=12.0;cf=0282;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER S WITH HOOK;NFKC_CF=0282;NFKC_SCF=0282;SB=UP;scf=0282;slc=0282;Upper
+cp;A7C6;age=12.0;cf=1D8E;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER Z WITH PALATAL HOOK;NFKC_CF=1D8E;NFKC_SCF=1D8E;SB=UP;scf=1D8E;slc=1D8E;Upper
# Additional letters for Gaulish
-cp;A7C7;age=13.0;cf=A7C8;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER D WITH SHORT STROKE OVERLAY;NFKC_CF=A7C8;SB=UP;scf=A7C8;slc=A7C8;Upper
+cp;A7C7;age=13.0;cf=A7C8;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER D WITH SHORT STROKE OVERLAY;NFKC_CF=A7C8;NFKC_SCF=A7C8;SB=UP;scf=A7C8;slc=A7C8;Upper
cp;A7C8;age=13.0;CWT;CWU;Lower;na=LATIN SMALL LETTER D WITH SHORT STROKE OVERLAY;stc=A7C7;suc=A7C7
-cp;A7C9;age=13.0;cf=A7CA;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER S WITH SHORT STROKE OVERLAY;NFKC_CF=A7CA;SB=UP;scf=A7CA;slc=A7CA;Upper
+cp;A7C9;age=13.0;cf=A7CA;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER S WITH SHORT STROKE OVERLAY;NFKC_CF=A7CA;NFKC_SCF=A7CA;SB=UP;scf=A7CA;slc=A7CA;Upper
cp;A7CA;age=13.0;CWT;CWU;Lower;na=LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY;stc=A7C9;suc=A7C9
unassigned;A7CB..A7CF
# Letters used in the Middle English Ormulum
-cp;A7D0;age=14.0;cf=A7D1;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER CLOSED INSULAR G;NFKC_CF=A7D1;SB=UP;scf=A7D1;slc=A7D1;Upper
+cp;A7D0;age=14.0;cf=A7D1;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER CLOSED INSULAR G;NFKC_CF=A7D1;NFKC_SCF=A7D1;SB=UP;scf=A7D1;slc=A7D1;Upper
cp;A7D1;age=14.0;CWT;CWU;Lower;na=LATIN SMALL LETTER CLOSED INSULAR G;stc=A7D0;suc=A7D0
unassigned;A7D2
cp;A7D3;age=14.0;-CWCM;Lower;na=LATIN SMALL LETTER DOUBLE THORN
unassigned;A7D4
cp;A7D5;age=14.0;-CWCM;Lower;na=LATIN SMALL LETTER DOUBLE WYNN
# Letters used in medieval palaeography
-cp;A7D6;age=14.0;cf=A7D7;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER MIDDLE SCOTS S;NFKC_CF=A7D7;SB=UP;scf=A7D7;slc=A7D7;Upper
+cp;A7D6;age=14.0;cf=A7D7;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER MIDDLE SCOTS S;NFKC_CF=A7D7;NFKC_SCF=A7D7;SB=UP;scf=A7D7;slc=A7D7;Upper
cp;A7D7;age=14.0;CWT;CWU;Lower;na=LATIN SMALL LETTER MIDDLE SCOTS S;stc=A7D6;suc=A7D6
-cp;A7D8;age=14.0;cf=A7D9;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER SIGMOID S;NFKC_CF=A7D9;SB=UP;scf=A7D9;slc=A7D9;Upper
+cp;A7D8;age=14.0;cf=A7D9;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER SIGMOID S;NFKC_CF=A7D9;NFKC_SCF=A7D9;SB=UP;scf=A7D9;slc=A7D9;Upper
cp;A7D9;age=14.0;CWT;CWU;Lower;na=LATIN SMALL LETTER SIGMOID S;stc=A7D8;suc=A7D8
unassigned;A7DA..A7F1
# Modifier letters for Chatino (M\u00E9xico)
-cp;A7F2;age=14.0;CI;-CWCM;CWKCF;dm=0043;dt=Sup;FC_NFKC=0063;gc=Lm;Lower;na=MODIFIER LETTER CAPITAL C;NFKC_CF=0063;NFKC_QC=N;NFKD_QC=N
-cp;A7F3;age=14.0;CI;-CWCM;CWKCF;dm=0046;dt=Sup;FC_NFKC=0066;gc=Lm;Lower;na=MODIFIER LETTER CAPITAL F;NFKC_CF=0066;NFKC_QC=N;NFKD_QC=N
+cp;A7F2;age=14.0;CI;-CWCM;CWKCF;dm=0043;dt=Sup;FC_NFKC=0063;gc=Lm;Lower;na=MODIFIER LETTER CAPITAL C;NFKC_CF=0063;NFKC_QC=N;NFKC_SCF=0063;NFKD_QC=N
+cp;A7F3;age=14.0;CI;-CWCM;CWKCF;dm=0046;dt=Sup;FC_NFKC=0066;gc=Lm;Lower;na=MODIFIER LETTER CAPITAL F;NFKC_CF=0066;NFKC_QC=N;NFKC_SCF=0066;NFKD_QC=N
# Modifier letter for Japanese phonemic transcription
-cp;A7F4;age=14.0;CI;-CWCM;CWKCF;dm=0051;dt=Sup;FC_NFKC=0071;gc=Lm;Lower;na=MODIFIER LETTER CAPITAL Q;NFKC_CF=0071;NFKC_QC=N;NFKD_QC=N
+cp;A7F4;age=14.0;CI;-CWCM;CWKCF;dm=0051;dt=Sup;FC_NFKC=0071;gc=Lm;Lower;na=MODIFIER LETTER CAPITAL Q;NFKC_CF=0071;NFKC_QC=N;NFKC_SCF=0071;NFKD_QC=N
# Ancient Gaulish and Celtic epigraphic letters
-cp;A7F5;age=13.0;cf=A7F6;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER REVERSED HALF H;NFKC_CF=A7F6;SB=UP;scf=A7F6;slc=A7F6;Upper
+cp;A7F5;age=13.0;cf=A7F6;CWCF;CWKCF;CWL;gc=Lu;na=LATIN CAPITAL LETTER REVERSED HALF H;NFKC_CF=A7F6;NFKC_SCF=A7F6;SB=UP;scf=A7F6;slc=A7F6;Upper
cp;A7F6;age=13.0;CWT;CWU;Lower;na=LATIN SMALL LETTER REVERSED HALF H;stc=A7F5;suc=A7F5
cp;A7F7;age=7.0;-Cased;-CWCM;gc=Lo;na=LATIN EPIGRAPHIC LETTER SIDEWAYS I;SB=LE
# Additions for Extended IPA
-cp;A7F8;age=6.1;CI;-CWCM;CWKCF;Dia;dm=0126;dt=Sup;FC_NFKC=0127;gc=Lm;Lower;na=MODIFIER LETTER CAPITAL H WITH STROKE;NFKC_CF=0127;NFKC_QC=N;NFKD_QC=N
-cp;A7F9;age=6.1;CI;-CWCM;CWKCF;Dia;dm=0153;dt=Sup;gc=Lm;Lower;na=MODIFIER LETTER SMALL LIGATURE OE;NFKC_CF=0153;NFKC_QC=N;NFKD_QC=N
+cp;A7F8;age=6.1;CI;-CWCM;CWKCF;Dia;dm=0126;dt=Sup;FC_NFKC=0127;gc=Lm;Lower;na=MODIFIER LETTER CAPITAL H WITH STROKE;NFKC_CF=0127;NFKC_QC=N;NFKC_SCF=0127;NFKD_QC=N
+cp;A7F9;age=6.1;CI;-CWCM;CWKCF;Dia;dm=0153;dt=Sup;gc=Lm;Lower;na=MODIFIER LETTER SMALL LIGATURE OE;NFKC_CF=0153;NFKC_QC=N;NFKC_SCF=0153;NFKD_QC=N
# Addition for UPA
cp;A7FA;age=6.0;-CWCM;Lower;na=LATIN LETTER SMALL CAPITAL TURNED M
# Ancient Roman epigraphic letters
@@ -17592,25 +17624,25 @@ cp;A829;-Alpha;bc=ON;gc=So;-IDC;-IDS;InSC=Other;na=SYLOTI NAGRI POETRY MARK-2;SB
cp;A82A;-Alpha;bc=ON;gc=So;-IDC;-IDS;InSC=Other;na=SYLOTI NAGRI POETRY MARK-3;SB=XX;WB=XX;-XIDC;-XIDS
cp;A82B;-Alpha;bc=ON;gc=So;-IDC;-IDS;InSC=Other;na=SYLOTI NAGRI POETRY MARK-4;SB=XX;WB=XX;-XIDC;-XIDS
# Sign
-cp;A82C;age=13.0;-Alpha;bc=NSM;ccc=9;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InPC=Bottom;InSC=Pure_Killer;jt=T;lb=CM;na=SYLOTI NAGRI SIGN ALTERNATE HASANTA;SB=EX;WB=Extend;-XIDS
+cp;A82C;age=13.0;-Alpha;bc=NSM;ccc=9;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InCB=Extend;InPC=Bottom;InSC=Pure_Killer;jt=T;lb=CM;na=SYLOTI NAGRI SIGN ALTERNATE HASANTA;SB=EX;WB=Extend;-XIDS
unassigned;A82D..A82F
-block;A830..A83F;age=5.2;blk=Indic_Number_Forms;gc=No;Gr_Base;lb=AL;sc=Zyyy;scx=Deva Dogr Gujr Guru Khoj Kthi Mahj Modi Sind Takr Tirh
+block;A830..A83F;age=5.2;blk=Indic_Number_Forms;gc=No;Gr_Base;lb=AL;sc=Zyyy;scx=Deva Dogr Gujr Guru Khoj Knda Kthi Mahj Mlym Modi Nand Shrd Sind Takr Tirh
# A830..A83F Common Indic Number Forms
# Number forms
-cp;A830;na=NORTH INDIC FRACTION ONE QUARTER;nt=Nu;nv=1/4;scx=Deva Dogr Gujr Guru Khoj Knda Kthi Mahj Mlym Modi Nand Sind Takr Tirh
-cp;A831;na=NORTH INDIC FRACTION ONE HALF;nt=Nu;nv=1/2;scx=Deva Dogr Gujr Guru Khoj Knda Kthi Mahj Mlym Modi Nand Sind Takr Tirh
-cp;A832;na=NORTH INDIC FRACTION THREE QUARTERS;nt=Nu;nv=3/4;scx=Deva Dogr Gujr Guru Khoj Knda Kthi Mahj Mlym Modi Nand Sind Takr Tirh
-cp;A833;na=NORTH INDIC FRACTION ONE SIXTEENTH;nt=Nu;nv=1/16;scx=Deva Dogr Gujr Guru Khoj Knda Kthi Mahj Modi Nand Sind Takr Tirh
-cp;A834;na=NORTH INDIC FRACTION ONE EIGHTH;nt=Nu;nv=1/8;scx=Deva Dogr Gujr Guru Khoj Knda Kthi Mahj Modi Nand Sind Takr Tirh
-cp;A835;na=NORTH INDIC FRACTION THREE SIXTEENTHS;nt=Nu;nv=3/16;scx=Deva Dogr Gujr Guru Khoj Knda Kthi Mahj Modi Nand Sind Takr Tirh
-cp;A836;gc=So;na=NORTH INDIC QUARTER MARK
+cp;A830;na=NORTH INDIC FRACTION ONE QUARTER;nt=Nu;nv=1/4
+cp;A831;na=NORTH INDIC FRACTION ONE HALF;nt=Nu;nv=1/2
+cp;A832;na=NORTH INDIC FRACTION THREE QUARTERS;nt=Nu;nv=3/4
+cp;A833;na=NORTH INDIC FRACTION ONE SIXTEENTH;nt=Nu;nv=1/16;scx=Deva Dogr Gujr Guru Khoj Knda Kthi Mahj Modi Nand Shrd Sind Takr Tirh
+cp;A834;na=NORTH INDIC FRACTION ONE EIGHTH;nt=Nu;nv=1/8;scx=Deva Dogr Gujr Guru Khoj Knda Kthi Mahj Modi Nand Shrd Sind Takr Tirh
+cp;A835;na=NORTH INDIC FRACTION THREE SIXTEENTHS;nt=Nu;nv=3/16;scx=Deva Dogr Gujr Guru Khoj Knda Kthi Mahj Modi Nand Shrd Sind Takr Tirh
+cp;A836;gc=So;na=NORTH INDIC QUARTER MARK;scx=Deva Dogr Gujr Guru Khoj Kthi Mahj Modi Sind Takr Tirh
# Miscellaneous sign
-cp;A837;gc=So;na=NORTH INDIC PLACEHOLDER MARK
+cp;A837;gc=So;na=NORTH INDIC PLACEHOLDER MARK;scx=Deva Dogr Gujr Guru Khoj Kthi Mahj Modi Sind Takr Tirh
# Currency symbol
-cp;A838;bc=ET;gc=Sc;lb=PO;na=NORTH INDIC RUPEE MARK
+cp;A838;bc=ET;gc=Sc;lb=PO;na=NORTH INDIC RUPEE MARK;scx=Deva Dogr Gujr Guru Khoj Kthi Mahj Modi Shrd Sind Takr Tirh
# Miscellaneous sign
-cp;A839;bc=ET;gc=So;na=NORTH INDIC QUANTITY MARK
+cp;A839;bc=ET;gc=So;na=NORTH INDIC QUANTITY MARK;scx=Deva Dogr Gujr Guru Khoj Kthi Mahj Modi Sind Takr Tirh
unassigned;A83A..A83F
block;A840..A87F;age=5.0;Alpha;blk=Phags_Pa;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;jt=D;lb=AL;SB=LE;sc=Phag;WB=LE;XIDC;XIDS
@@ -17781,7 +17813,7 @@ cp;A8D8;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=SAURASHTRA DIGIT EIGHT;nt=De;nv=8
cp;A8D9;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=SAURASHTRA DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU;-XIDS
unassigned;A8DA..A8DF
-block;A8E0..A8FF;age=5.2;bc=NSM;blk=Devanagari_Ext;ccc=230;CI;gc=Mn;GCB=EX;Gr_Ext;IDC;InPC=Top;InSC=Cantillation_Mark;jt=T;lb=CM;SB=EX;sc=Deva;WB=Extend;XIDC
+block;A8E0..A8FF;age=5.2;bc=NSM;blk=Devanagari_Ext;ccc=230;CI;gc=Mn;GCB=EX;Gr_Ext;IDC;InCB=Extend;InPC=Top;InSC=Cantillation_Mark;jt=T;lb=CM;SB=EX;sc=Deva;WB=Extend;XIDC
# A8E0..A8FF Devanagari Extended
# Cantillation marks (svara) for the Samaveda
cp;A8E0;Dia;na=COMBINING DEVANAGARI DIGIT ZERO
@@ -17803,23 +17835,23 @@ cp;A8EF;Dia;na=COMBINING DEVANAGARI LETTER RA
cp;A8F0;Dia;na=COMBINING DEVANAGARI LETTER VI
cp;A8F1;Dia;na=COMBINING DEVANAGARI SIGN AVAGRAHA;scx=Beng Deva
# Marks of nasalization
-cp;A8F2;Alpha;bc=L;ccc=0;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InPC=NA;InSC=Bindu;jt=U;lb=AL;na=DEVANAGARI SIGN SPACING CANDRABINDU;SB=LE;WB=LE;XIDS
-cp;A8F3;Alpha;bc=L;ccc=0;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InPC=NA;InSC=Bindu;jt=U;lb=AL;na=DEVANAGARI SIGN CANDRABINDU VIRAMA;SB=LE;scx=Deva Taml;WB=LE;XIDS
-cp;A8F4;Alpha;bc=L;ccc=0;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InPC=NA;InSC=Other;jt=U;lb=AL;na=DEVANAGARI SIGN DOUBLE CANDRABINDU VIRAMA;SB=LE;WB=LE;XIDS
-cp;A8F5;Alpha;bc=L;ccc=0;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InPC=NA;InSC=Other;jt=U;lb=AL;na=DEVANAGARI SIGN CANDRABINDU TWO;SB=LE;WB=LE;XIDS
-cp;A8F6;Alpha;bc=L;ccc=0;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InPC=NA;InSC=Other;jt=U;lb=AL;na=DEVANAGARI SIGN CANDRABINDU THREE;SB=LE;WB=LE;XIDS
-cp;A8F7;Alpha;bc=L;ccc=0;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InPC=NA;InSC=Other;jt=U;lb=AL;na=DEVANAGARI SIGN CANDRABINDU AVAGRAHA;SB=LE;WB=LE;XIDS
+cp;A8F2;Alpha;bc=L;ccc=0;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;InPC=NA;InSC=Bindu;jt=U;lb=AL;na=DEVANAGARI SIGN SPACING CANDRABINDU;SB=LE;WB=LE;XIDS
+cp;A8F3;Alpha;bc=L;ccc=0;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;InPC=NA;InSC=Bindu;jt=U;lb=AL;na=DEVANAGARI SIGN CANDRABINDU VIRAMA;SB=LE;scx=Deva Taml;WB=LE;XIDS
+cp;A8F4;Alpha;bc=L;ccc=0;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;InPC=NA;InSC=Other;jt=U;lb=AL;na=DEVANAGARI SIGN DOUBLE CANDRABINDU VIRAMA;SB=LE;WB=LE;XIDS
+cp;A8F5;Alpha;bc=L;ccc=0;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;InPC=NA;InSC=Other;jt=U;lb=AL;na=DEVANAGARI SIGN CANDRABINDU TWO;SB=LE;WB=LE;XIDS
+cp;A8F6;Alpha;bc=L;ccc=0;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;InPC=NA;InSC=Other;jt=U;lb=AL;na=DEVANAGARI SIGN CANDRABINDU THREE;SB=LE;WB=LE;XIDS
+cp;A8F7;Alpha;bc=L;ccc=0;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;InPC=NA;InSC=Other;jt=U;lb=AL;na=DEVANAGARI SIGN CANDRABINDU AVAGRAHA;SB=LE;WB=LE;XIDS
# Editorial marks
-cp;A8F8;bc=L;ccc=0;-CI;gc=Po;GCB=XX;Gr_Base;-Gr_Ext;-IDC;InPC=NA;InSC=Other;jt=U;lb=AL;na=DEVANAGARI SIGN PUSHPIKA;SB=XX;WB=XX;-XIDC
-cp;A8F9;bc=L;ccc=0;-CI;gc=Po;GCB=XX;Gr_Base;-Gr_Ext;-IDC;InPC=NA;InSC=Other;jt=U;lb=AL;na=DEVANAGARI GAP FILLER;SB=XX;WB=XX;-XIDC
-cp;A8FA;bc=L;ccc=0;-CI;gc=Po;GCB=XX;Gr_Base;-Gr_Ext;-IDC;InPC=NA;InSC=Other;jt=U;lb=AL;na=DEVANAGARI CARET;SB=XX;WB=XX;-XIDC
-cp;A8FB;Alpha;bc=L;ccc=0;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InPC=NA;InSC=Other;jt=U;lb=AL;na=DEVANAGARI HEADSTROKE;SB=LE;WB=LE;XIDS
+cp;A8F8;bc=L;ccc=0;-CI;gc=Po;GCB=XX;Gr_Base;-Gr_Ext;-IDC;InCB=None;InPC=NA;InSC=Other;jt=U;lb=AL;na=DEVANAGARI SIGN PUSHPIKA;SB=XX;WB=XX;-XIDC
+cp;A8F9;bc=L;ccc=0;-CI;gc=Po;GCB=XX;Gr_Base;-Gr_Ext;-IDC;InCB=None;InPC=NA;InSC=Other;jt=U;lb=AL;na=DEVANAGARI GAP FILLER;SB=XX;WB=XX;-XIDC
+cp;A8FA;bc=L;ccc=0;-CI;gc=Po;GCB=XX;Gr_Base;-Gr_Ext;-IDC;InCB=None;InPC=NA;InSC=Other;jt=U;lb=AL;na=DEVANAGARI CARET;SB=XX;WB=XX;-XIDC
+cp;A8FB;Alpha;bc=L;ccc=0;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;InPC=NA;InSC=Other;jt=U;lb=AL;na=DEVANAGARI HEADSTROKE;SB=LE;WB=LE;XIDS
# Signs
-cp;A8FC;age=8.0;bc=L;ccc=0;-CI;gc=Po;GCB=XX;Gr_Base;-Gr_Ext;-IDC;InPC=NA;InSC=Other;jt=U;lb=BB;na=DEVANAGARI SIGN SIDDHAM;SB=XX;WB=XX;-XIDC
-cp;A8FD;age=8.0;Alpha;bc=L;ccc=0;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InPC=NA;InSC=Other;jt=U;lb=AL;na=DEVANAGARI JAIN OM;SB=LE;WB=LE;XIDS
+cp;A8FC;age=8.0;bc=L;ccc=0;-CI;gc=Po;GCB=XX;Gr_Base;-Gr_Ext;-IDC;InCB=None;InPC=NA;InSC=Other;jt=U;lb=BB;na=DEVANAGARI SIGN SIDDHAM;SB=XX;WB=XX;-XIDC
+cp;A8FD;age=8.0;Alpha;bc=L;ccc=0;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;InPC=NA;InSC=Other;jt=U;lb=AL;na=DEVANAGARI JAIN OM;SB=LE;WB=LE;XIDS
# Additional vowel and vowel sign
-cp;A8FE;age=11.0;Alpha;bc=L;ccc=0;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InPC=NA;InSC=Vowel_Independent;jt=U;lb=AL;na=DEVANAGARI LETTER AY;SB=LE;WB=LE;XIDS
-cp;A8FF;age=11.0;Alpha;ccc=0;InSC=Vowel_Dependent;na=DEVANAGARI VOWEL SIGN AY
+cp;A8FE;age=11.0;Alpha;bc=L;ccc=0;-CI;gc=Lo;GCB=XX;Gr_Base;-Gr_Ext;IDS;InCB=None;InPC=NA;InSC=Vowel_Independent;jt=U;lb=AL;na=DEVANAGARI LETTER AY;SB=LE;WB=LE;XIDS
+cp;A8FF;age=11.0;Alpha;ccc=0;InCB=None;InSC=Vowel_Dependent;na=DEVANAGARI VOWEL SIGN AY
block;A900..A92F;age=5.1;Alpha;blk=Kayah_Li;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Kali;WB=LE;XIDC;XIDS
# A900..A92F Kayah Li
@@ -17870,9 +17902,9 @@ cp;A928;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel;jt=T;lb=
cp;A929;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel;jt=T;lb=CM;na=KAYAH LI VOWEL EE;SB=EX;WB=Extend;-XIDS
cp;A92A;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel;jt=T;lb=CM;na=KAYAH LI VOWEL O;SB=EX;WB=Extend;-XIDS
# Tone marks
-cp;A92B;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Tone_Mark;jt=T;lb=CM;na=KAYAH LI TONE PLOPHU;SB=EX;WB=Extend;-XIDS
-cp;A92C;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Tone_Mark;jt=T;lb=CM;na=KAYAH LI TONE CALYA;SB=EX;WB=Extend;-XIDS
-cp;A92D;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Tone_Mark;jt=T;lb=CM;na=KAYAH LI TONE CALYA PLOPHU;SB=EX;WB=Extend;-XIDS
+cp;A92B;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Bottom;InSC=Tone_Mark;jt=T;lb=CM;na=KAYAH LI TONE PLOPHU;SB=EX;WB=Extend;-XIDS
+cp;A92C;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Bottom;InSC=Tone_Mark;jt=T;lb=CM;na=KAYAH LI TONE CALYA;SB=EX;WB=Extend;-XIDS
+cp;A92D;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Bottom;InSC=Tone_Mark;jt=T;lb=CM;na=KAYAH LI TONE CALYA PLOPHU;SB=EX;WB=Extend;-XIDS
# Punctuation
cp;A92E;-Alpha;Dia;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=KAYAH LI SIGN CWI;SB=XX;sc=Zyyy;scx=Kali Latn Mymr;WB=XX;-XIDC;-XIDS
cp;A92F;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=KAYAH LI SIGN SHYA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
@@ -17957,7 +17989,7 @@ cp;A97B;na=HANGUL CHOSEONG HIEUH-SIOS
cp;A97C;na=HANGUL CHOSEONG SSANGYEORINHIEUH
unassigned;A97D..A97F;vo=U
-block;A980..A9DF;age=5.2;Alpha;blk=Javanese;gc=Lo;Gr_Base;IDC;InSC=Consonant;lb=AL;SB=LE;sc=Java;WB=LE;XIDC
+block;A980..A9DF;age=5.2;Alpha;blk=Javanese;gc=Lo;Gr_Base;IDC;InSC=Consonant;lb=AK;SB=LE;sc=Java;WB=LE;XIDC
# A980..A9DF Javanese
# Various signs
cp;A980;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=JAVANESE SIGN PANYANGGA;SB=EX;WB=Extend
@@ -18013,7 +18045,7 @@ cp;A9B0;IDS;na=JAVANESE LETTER SA MAHAPRANA;XIDS
cp;A9B1;IDS;na=JAVANESE LETTER SA;XIDS
cp;A9B2;IDS;na=JAVANESE LETTER HA;XIDS
# Sign
-cp;A9B3;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Nukta;jt=T;lb=CM;na=JAVANESE SIGN CECAK TELU;SB=EX;WB=Extend
+cp;A9B3;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Nukta;jt=T;lb=CM;na=JAVANESE SIGN CECAK TELU;SB=EX;WB=Extend
# Dependent vowel signs
cp;A9B4;gc=Mc;GCB=SM;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=JAVANESE VOWEL SIGN TARUNG;SB=EX;WB=Extend
cp;A9B5;gc=Mc;GCB=SM;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=JAVANESE VOWEL SIGN TOLONG;SB=EX;WB=Extend
@@ -18029,39 +18061,39 @@ cp;A9BD;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;InSC=Consonant_Medial
cp;A9BE;gc=Mc;GCB=SM;InPC=Bottom_And_Right;InSC=Consonant_Medial;lb=CM;na=JAVANESE CONSONANT SIGN PENGKAL;SB=EX;WB=Extend
cp;A9BF;gc=Mc;GCB=SM;InPC=Bottom_And_Left;InSC=Consonant_Medial;lb=CM;na=JAVANESE CONSONANT SIGN CAKRA;SB=EX;WB=Extend
# Sign
-cp;A9C0;-Alpha;ccc=9;Dia;gc=Mc;GCB=SM;Gr_Link;InPC=Bottom_And_Right;InSC=Virama;lb=CM;na=JAVANESE PANGKON;SB=EX;WB=Extend
+cp;A9C0;-Alpha;ccc=9;Dia;gc=Mc;GCB=SM;Gr_Link;InPC=Bottom_And_Right;InSC=Virama;lb=VI;na=JAVANESE PANGKON;SB=EX;WB=Extend
# Punctuation
-cp;A9C1;-Alpha;gc=Po;-IDC;InSC=Other;na=JAVANESE LEFT RERENGGAN;SB=XX;WB=XX;-XIDC
-cp;A9C2;-Alpha;gc=Po;-IDC;InSC=Other;na=JAVANESE RIGHT RERENGGAN;SB=XX;WB=XX;-XIDC
-cp;A9C3;-Alpha;gc=Po;-IDC;InSC=Other;na=JAVANESE PADA ANDAP;SB=XX;WB=XX;-XIDC
-cp;A9C4;-Alpha;gc=Po;-IDC;InSC=Other;na=JAVANESE PADA MADYA;SB=XX;WB=XX;-XIDC
-cp;A9C5;-Alpha;gc=Po;-IDC;InSC=Other;na=JAVANESE PADA LUHUR;SB=XX;WB=XX;-XIDC
-cp;A9C6;-Alpha;gc=Po;-IDC;InSC=Other;na=JAVANESE PADA WINDU;SB=XX;WB=XX;-XIDC
+cp;A9C1;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=JAVANESE LEFT RERENGGAN;SB=XX;WB=XX;-XIDC
+cp;A9C2;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=JAVANESE RIGHT RERENGGAN;SB=XX;WB=XX;-XIDC
+cp;A9C3;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=JAVANESE PADA ANDAP;SB=XX;WB=XX;-XIDC
+cp;A9C4;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=JAVANESE PADA MADYA;SB=XX;WB=XX;-XIDC
+cp;A9C5;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=JAVANESE PADA LUHUR;SB=XX;WB=XX;-XIDC
+cp;A9C6;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=JAVANESE PADA WINDU;SB=XX;WB=XX;-XIDC
cp;A9C7;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=JAVANESE PADA PANGKAT;SB=XX;Term;WB=XX;-XIDC
cp;A9C8;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=JAVANESE PADA LINGSA;SB=ST;STerm;Term;WB=XX;-XIDC
cp;A9C9;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=JAVANESE PADA LUNGSI;SB=ST;STerm;Term;WB=XX;-XIDC
-cp;A9CA;-Alpha;gc=Po;-IDC;InSC=Other;na=JAVANESE PADA ADEG;SB=XX;WB=XX;-XIDC
-cp;A9CB;-Alpha;gc=Po;-IDC;InSC=Other;na=JAVANESE PADA ADEG ADEG;SB=XX;WB=XX;-XIDC
-cp;A9CC;-Alpha;gc=Po;-IDC;InSC=Other;na=JAVANESE PADA PISELEH;SB=XX;WB=XX;-XIDC
-cp;A9CD;-Alpha;gc=Po;-IDC;InSC=Other;na=JAVANESE TURNED PADA PISELEH;SB=XX;WB=XX;-XIDC
+cp;A9CA;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=JAVANESE PADA ADEG;SB=XX;WB=XX;-XIDC
+cp;A9CB;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=JAVANESE PADA ADEG ADEG;SB=XX;WB=XX;-XIDC
+cp;A9CC;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=JAVANESE PADA PISELEH;SB=XX;WB=XX;-XIDC
+cp;A9CD;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=JAVANESE TURNED PADA PISELEH;SB=XX;WB=XX;-XIDC
unassigned;A9CE
# Syllable reduplicator
-cp;A9CF;CI;Ext;gc=Lm;IDS;InSC=Other;na=JAVANESE PANGRANGKEP;sc=Zyyy;scx=Bugi Java;XIDS
+cp;A9CF;CI;Ext;gc=Lm;IDS;InSC=Other;lb=BA;na=JAVANESE PANGRANGKEP;sc=Zyyy;scx=Bugi Java;XIDS
# Digits
-cp;A9D0;-Alpha;gc=Nd;InSC=Number;lb=NU;na=JAVANESE DIGIT ZERO;nt=De;nv=0;SB=NU;WB=NU
-cp;A9D1;-Alpha;gc=Nd;InSC=Number;lb=NU;na=JAVANESE DIGIT ONE;nt=De;nv=1;SB=NU;WB=NU
-cp;A9D2;-Alpha;gc=Nd;InSC=Number;lb=NU;na=JAVANESE DIGIT TWO;nt=De;nv=2;SB=NU;WB=NU
-cp;A9D3;-Alpha;gc=Nd;InSC=Number;lb=NU;na=JAVANESE DIGIT THREE;nt=De;nv=3;SB=NU;WB=NU
-cp;A9D4;-Alpha;gc=Nd;InSC=Number;lb=NU;na=JAVANESE DIGIT FOUR;nt=De;nv=4;SB=NU;WB=NU
-cp;A9D5;-Alpha;gc=Nd;InSC=Number;lb=NU;na=JAVANESE DIGIT FIVE;nt=De;nv=5;SB=NU;WB=NU
-cp;A9D6;-Alpha;gc=Nd;InSC=Number;lb=NU;na=JAVANESE DIGIT SIX;nt=De;nv=6;SB=NU;WB=NU
-cp;A9D7;-Alpha;gc=Nd;InSC=Number;lb=NU;na=JAVANESE DIGIT SEVEN;nt=De;nv=7;SB=NU;WB=NU
-cp;A9D8;-Alpha;gc=Nd;InSC=Number;lb=NU;na=JAVANESE DIGIT EIGHT;nt=De;nv=8;SB=NU;WB=NU
-cp;A9D9;-Alpha;gc=Nd;InSC=Number;lb=NU;na=JAVANESE DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU
+cp;A9D0;-Alpha;gc=Nd;InSC=Number;lb=ID;na=JAVANESE DIGIT ZERO;nt=De;nv=0;SB=NU;WB=NU
+cp;A9D1;-Alpha;gc=Nd;InSC=Number;lb=ID;na=JAVANESE DIGIT ONE;nt=De;nv=1;SB=NU;WB=NU
+cp;A9D2;-Alpha;gc=Nd;InSC=Number;lb=ID;na=JAVANESE DIGIT TWO;nt=De;nv=2;SB=NU;WB=NU
+cp;A9D3;-Alpha;gc=Nd;InSC=Number;lb=ID;na=JAVANESE DIGIT THREE;nt=De;nv=3;SB=NU;WB=NU
+cp;A9D4;-Alpha;gc=Nd;InSC=Number;lb=ID;na=JAVANESE DIGIT FOUR;nt=De;nv=4;SB=NU;WB=NU
+cp;A9D5;-Alpha;gc=Nd;InSC=Number;lb=ID;na=JAVANESE DIGIT FIVE;nt=De;nv=5;SB=NU;WB=NU
+cp;A9D6;-Alpha;gc=Nd;InSC=Number;lb=ID;na=JAVANESE DIGIT SIX;nt=De;nv=6;SB=NU;WB=NU
+cp;A9D7;-Alpha;gc=Nd;InSC=Number;lb=ID;na=JAVANESE DIGIT SEVEN;nt=De;nv=7;SB=NU;WB=NU
+cp;A9D8;-Alpha;gc=Nd;InSC=Number;lb=ID;na=JAVANESE DIGIT EIGHT;nt=De;nv=8;SB=NU;WB=NU
+cp;A9D9;-Alpha;gc=Nd;InSC=Number;lb=ID;na=JAVANESE DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU
unassigned;A9DA..A9DD
# Ellipsis marks
-cp;A9DE;-Alpha;gc=Po;-IDC;InSC=Other;na=JAVANESE PADA TIRTA TUMETES;SB=XX;WB=XX;-XIDC
-cp;A9DF;-Alpha;gc=Po;-IDC;InSC=Other;na=JAVANESE PADA ISEN-ISEN;SB=XX;WB=XX;-XIDC
+cp;A9DE;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=JAVANESE PADA TIRTA TUMETES;SB=XX;WB=XX;-XIDC
+cp;A9DF;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=JAVANESE PADA ISEN-ISEN;SB=XX;WB=XX;-XIDC
block;A9E0..A9FF;age=7.0;Alpha;blk=Myanmar_Ext_B;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=SA;SB=LE;sc=Mymr;XIDC;XIDS
# A9E0..A9FF Myanmar Extended-B
@@ -18103,7 +18135,7 @@ cp;A9FD;na=MYANMAR LETTER TAI LAING BA
cp;A9FE;na=MYANMAR LETTER TAI LAING BHA
unassigned;A9FF
-block;AA00..AA5F;age=5.1;Alpha;blk=Cham;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Cham;WB=LE;XIDC;XIDS
+block;AA00..AA5F;age=5.1;Alpha;blk=Cham;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AS;SB=LE;sc=Cham;WB=LE;XIDC;XIDS
# AA00..AA5F Cham
# Independent vowels
cp;AA00;InSC=Vowel_Independent;na=CHAM LETTER A
@@ -18166,35 +18198,35 @@ cp;AA35;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Consonant_M
cp;AA36;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Consonant_Medial;jt=T;lb=CM;na=CHAM CONSONANT SIGN WA;SB=EX;WB=Extend;-XIDS
unassigned;AA37..AA3F
# Final consonants
-cp;AA40;InSC=Consonant_Final;na=CHAM LETTER FINAL K
-cp;AA41;InSC=Consonant_Final;na=CHAM LETTER FINAL G
-cp;AA42;InSC=Consonant_Final;na=CHAM LETTER FINAL NG
+cp;AA40;InSC=Consonant_Final;lb=BA;na=CHAM LETTER FINAL K
+cp;AA41;InSC=Consonant_Final;lb=BA;na=CHAM LETTER FINAL G
+cp;AA42;InSC=Consonant_Final;lb=BA;na=CHAM LETTER FINAL NG
cp;AA43;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Consonant_Final;jt=T;lb=CM;na=CHAM CONSONANT SIGN FINAL NG;SB=EX;WB=Extend;-XIDS
-cp;AA44;InSC=Consonant_Final;na=CHAM LETTER FINAL CH
-cp;AA45;InSC=Consonant_Final;na=CHAM LETTER FINAL T
-cp;AA46;InSC=Consonant_Final;na=CHAM LETTER FINAL N
-cp;AA47;InSC=Consonant_Final;na=CHAM LETTER FINAL P
-cp;AA48;InSC=Consonant_Final;na=CHAM LETTER FINAL Y
-cp;AA49;InSC=Consonant_Final;na=CHAM LETTER FINAL R
-cp;AA4A;InSC=Consonant_Final;na=CHAM LETTER FINAL L
-cp;AA4B;InSC=Consonant_Final;na=CHAM LETTER FINAL SS
+cp;AA44;InSC=Consonant_Final;lb=BA;na=CHAM LETTER FINAL CH
+cp;AA45;InSC=Consonant_Final;lb=BA;na=CHAM LETTER FINAL T
+cp;AA46;InSC=Consonant_Final;lb=BA;na=CHAM LETTER FINAL N
+cp;AA47;InSC=Consonant_Final;lb=BA;na=CHAM LETTER FINAL P
+cp;AA48;InSC=Consonant_Final;lb=BA;na=CHAM LETTER FINAL Y
+cp;AA49;InSC=Consonant_Final;lb=BA;na=CHAM LETTER FINAL R
+cp;AA4A;InSC=Consonant_Final;lb=BA;na=CHAM LETTER FINAL L
+cp;AA4B;InSC=Consonant_Final;lb=BA;na=CHAM LETTER FINAL SS
cp;AA4C;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Consonant_Final;jt=T;lb=CM;na=CHAM CONSONANT SIGN FINAL M;SB=EX;WB=Extend;-XIDS
cp;AA4D;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Consonant_Final;lb=CM;na=CHAM CONSONANT SIGN FINAL H;SB=EX;WB=Extend;-XIDS
unassigned;AA4E..AA4F
# Digits
-cp;AA50;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=CHAM DIGIT ZERO;nt=De;nv=0;SB=NU;WB=NU;-XIDS
-cp;AA51;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=CHAM DIGIT ONE;nt=De;nv=1;SB=NU;WB=NU;-XIDS
-cp;AA52;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=CHAM DIGIT TWO;nt=De;nv=2;SB=NU;WB=NU;-XIDS
-cp;AA53;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=CHAM DIGIT THREE;nt=De;nv=3;SB=NU;WB=NU;-XIDS
-cp;AA54;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=CHAM DIGIT FOUR;nt=De;nv=4;SB=NU;WB=NU;-XIDS
-cp;AA55;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=CHAM DIGIT FIVE;nt=De;nv=5;SB=NU;WB=NU;-XIDS
-cp;AA56;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=CHAM DIGIT SIX;nt=De;nv=6;SB=NU;WB=NU;-XIDS
-cp;AA57;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=CHAM DIGIT SEVEN;nt=De;nv=7;SB=NU;WB=NU;-XIDS
-cp;AA58;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=CHAM DIGIT EIGHT;nt=De;nv=8;SB=NU;WB=NU;-XIDS
-cp;AA59;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=CHAM DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU;-XIDS
+cp;AA50;-Alpha;gc=Nd;-IDS;InSC=Number;lb=ID;na=CHAM DIGIT ZERO;nt=De;nv=0;SB=NU;WB=NU;-XIDS
+cp;AA51;-Alpha;gc=Nd;-IDS;InSC=Number;lb=ID;na=CHAM DIGIT ONE;nt=De;nv=1;SB=NU;WB=NU;-XIDS
+cp;AA52;-Alpha;gc=Nd;-IDS;InSC=Number;lb=ID;na=CHAM DIGIT TWO;nt=De;nv=2;SB=NU;WB=NU;-XIDS
+cp;AA53;-Alpha;gc=Nd;-IDS;InSC=Number;lb=ID;na=CHAM DIGIT THREE;nt=De;nv=3;SB=NU;WB=NU;-XIDS
+cp;AA54;-Alpha;gc=Nd;-IDS;InSC=Number;lb=ID;na=CHAM DIGIT FOUR;nt=De;nv=4;SB=NU;WB=NU;-XIDS
+cp;AA55;-Alpha;gc=Nd;-IDS;InSC=Number;lb=ID;na=CHAM DIGIT FIVE;nt=De;nv=5;SB=NU;WB=NU;-XIDS
+cp;AA56;-Alpha;gc=Nd;-IDS;InSC=Number;lb=ID;na=CHAM DIGIT SIX;nt=De;nv=6;SB=NU;WB=NU;-XIDS
+cp;AA57;-Alpha;gc=Nd;-IDS;InSC=Number;lb=ID;na=CHAM DIGIT SEVEN;nt=De;nv=7;SB=NU;WB=NU;-XIDS
+cp;AA58;-Alpha;gc=Nd;-IDS;InSC=Number;lb=ID;na=CHAM DIGIT EIGHT;nt=De;nv=8;SB=NU;WB=NU;-XIDS
+cp;AA59;-Alpha;gc=Nd;-IDS;InSC=Number;lb=ID;na=CHAM DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU;-XIDS
unassigned;AA5A..AA5B
# Punctuation
-cp;AA5C;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;na=CHAM PUNCTUATION SPIRAL;SB=XX;WB=XX;-XIDC;-XIDS
+cp;AA5C;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=ID;na=CHAM PUNCTUATION SPIRAL;SB=XX;WB=XX;-XIDC;-XIDS
cp;AA5D;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=CHAM PUNCTUATION DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
cp;AA5E;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=CHAM PUNCTUATION DOUBLE DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
cp;AA5F;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=CHAM PUNCTUATION TRIPLE DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
@@ -18292,25 +18324,25 @@ cp;AAAD;na=TAI VIET LETTER HIGH HO
cp;AAAE;na=TAI VIET LETTER LOW O
cp;AAAF;na=TAI VIET LETTER HIGH O
# Vowels and finals
-cp;AAB0;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;na=TAI VIET MAI KANG;SB=EX;WB=Extend;-XIDS
+cp;AAB0;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Top;InSC=Vowel_Dependent;jt=T;na=TAI VIET MAI KANG;SB=EX;WB=Extend;-XIDS
cp;AAB1;InPC=Right;InSC=Vowel_Dependent;na=TAI VIET VOWEL AA
-cp;AAB2;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;na=TAI VIET VOWEL I;SB=EX;WB=Extend;-XIDS
-cp;AAB3;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;na=TAI VIET VOWEL UE;SB=EX;WB=Extend;-XIDS
-cp;AAB4;bc=NSM;ccc=220;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;na=TAI VIET VOWEL U;SB=EX;WB=Extend;-XIDS
+cp;AAB2;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Top;InSC=Vowel_Dependent;jt=T;na=TAI VIET VOWEL I;SB=EX;WB=Extend;-XIDS
+cp;AAB3;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Top;InSC=Vowel_Dependent;jt=T;na=TAI VIET VOWEL UE;SB=EX;WB=Extend;-XIDS
+cp;AAB4;bc=NSM;ccc=220;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Bottom;InSC=Vowel_Dependent;jt=T;na=TAI VIET VOWEL U;SB=EX;WB=Extend;-XIDS
cp;AAB5;InPC=Visual_Order_Left;InSC=Vowel_Dependent;LOE;na=TAI VIET VOWEL E
cp;AAB6;InPC=Visual_Order_Left;InSC=Vowel_Dependent;LOE;na=TAI VIET VOWEL O
-cp;AAB7;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;na=TAI VIET MAI KHIT;SB=EX;WB=Extend;-XIDS
-cp;AAB8;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;na=TAI VIET VOWEL IA;SB=EX;WB=Extend;-XIDS
+cp;AAB7;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Top;InSC=Vowel_Dependent;jt=T;na=TAI VIET MAI KHIT;SB=EX;WB=Extend;-XIDS
+cp;AAB8;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Top;InSC=Vowel_Dependent;jt=T;na=TAI VIET VOWEL IA;SB=EX;WB=Extend;-XIDS
cp;AAB9;InPC=Visual_Order_Left;InSC=Vowel_Dependent;LOE;na=TAI VIET VOWEL UEA
cp;AABA;InPC=Right;InSC=Vowel_Dependent;na=TAI VIET VOWEL UA
cp;AABB;InPC=Visual_Order_Left;InSC=Vowel_Dependent;LOE;na=TAI VIET VOWEL AUE
cp;AABC;InPC=Visual_Order_Left;InSC=Vowel_Dependent;LOE;na=TAI VIET VOWEL AY
cp;AABD;InPC=Right;InSC=Vowel_Dependent;na=TAI VIET VOWEL AN
-cp;AABE;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;na=TAI VIET VOWEL AM;SB=EX;WB=Extend;-XIDS
+cp;AABE;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Top;InSC=Vowel_Dependent;jt=T;na=TAI VIET VOWEL AM;SB=EX;WB=Extend;-XIDS
# Tones
-cp;AABF;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Tone_Mark;jt=T;na=TAI VIET TONE MAI EK;SB=EX;WB=Extend;-XIDS
+cp;AABF;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Top;InSC=Tone_Mark;jt=T;na=TAI VIET TONE MAI EK;SB=EX;WB=Extend;-XIDS
cp;AAC0;Dia;InSC=Tone_Letter;na=TAI VIET TONE MAI NUENG
-cp;AAC1;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Tone_Mark;jt=T;na=TAI VIET TONE MAI THO;SB=EX;WB=Extend;-XIDS
+cp;AAC1;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Top;InSC=Tone_Mark;jt=T;na=TAI VIET TONE MAI THO;SB=EX;WB=Extend;-XIDS
cp;AAC2;Dia;InSC=Tone_Letter;na=TAI VIET TONE MAI SONG
unassigned;AAC3..AADA
# Word ligature symbols
@@ -18354,7 +18386,7 @@ cp;AAF4;CI;Ext;gc=Lm;InSC=Other;na=MEETEI MAYEK WORD REPETITION MARK
# Sign
cp;AAF5;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Visarga;lb=CM;na=MEETEI MAYEK VOWEL SIGN VISARGA;SB=EX;WB=Extend;-XIDS
# Virama
-cp;AAF6;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InSC=Invisible_Stacker;jt=T;lb=CM;na=MEETEI MAYEK VIRAMA;SB=EX;WB=Extend;-XIDS
+cp;AAF6;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InCB=Extend;InSC=Invisible_Stacker;jt=T;lb=CM;na=MEETEI MAYEK VIRAMA;SB=EX;WB=Extend;-XIDS
unassigned;AAF7..AAFF
block;AB00..AB2F;age=6.0;Alpha;blk=Ethiopic_Ext_A;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Ethi;WB=LE;XIDC;XIDS
@@ -18449,10 +18481,10 @@ cp;AB59;na=LATIN SMALL LETTER X WITH LONG LEFT LEG WITH SERIF
cp;AB5A;na=LATIN SMALL LETTER Y WITH SHORT RIGHT LEG
# Modifier letters for German dialectology
cp;AB5B;-Alpha;-Cased;CI;Dia;gc=Sk;-IDC;-IDS;-Lower;na=MODIFIER BREVE WITH INVERTED BREVE;SB=XX;sc=Zyyy;-XIDC;-XIDS
-cp;AB5C;CI;CWKCF;Dia;dm=A727;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL HENG;NFKC_CF=A727;NFKC_QC=N;NFKD_QC=N
-cp;AB5D;CI;CWKCF;Dia;dm=AB37;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL L WITH INVERTED LAZY S;NFKC_CF=AB37;NFKC_QC=N;NFKD_QC=N
-cp;AB5E;CI;CWKCF;Dia;dm=026B;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL L WITH MIDDLE TILDE;NFKC_CF=026B;NFKC_QC=N;NFKD_QC=N
-cp;AB5F;CI;CWKCF;Dia;dm=AB52;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL U WITH LEFT HOOK;NFKC_CF=AB52;NFKC_QC=N;NFKD_QC=N
+cp;AB5C;CI;CWKCF;Dia;dm=A727;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL HENG;NFKC_CF=A727;NFKC_QC=N;NFKC_SCF=A727;NFKD_QC=N
+cp;AB5D;CI;CWKCF;Dia;dm=AB37;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL L WITH INVERTED LAZY S;NFKC_CF=AB37;NFKC_QC=N;NFKC_SCF=AB37;NFKD_QC=N
+cp;AB5E;CI;CWKCF;Dia;dm=026B;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL L WITH MIDDLE TILDE;NFKC_CF=026B;NFKC_QC=N;NFKC_SCF=026B;NFKD_QC=N
+cp;AB5F;CI;CWKCF;Dia;dm=AB52;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL U WITH LEFT HOOK;NFKC_CF=AB52;NFKC_QC=N;NFKC_SCF=AB52;NFKD_QC=N
# Historic letters for Sakha (Yakut)
cp;AB60;age=8.0;na=LATIN SMALL LETTER SAKHA YAT
cp;AB61;age=8.0;na=LATIN SMALL LETTER IOTIFIED E
@@ -18461,12 +18493,12 @@ cp;AB63;age=8.0;na=LATIN SMALL LETTER UO
# Letters for Americanist orthographies
cp;AB64;na=LATIN SMALL LETTER INVERTED ALPHA
cp;AB65;na=GREEK LETTER SMALL CAPITAL OMEGA;sc=Grek
-# Letters for Sinological transcription
+# Letters for sinological and Tibetanist phonetic transcription
cp;AB66;age=12.0;na=LATIN SMALL LETTER DZ DIGRAPH WITH RETROFLEX HOOK
cp;AB67;age=12.0;na=LATIN SMALL LETTER TS DIGRAPH WITH RETROFLEX HOOK
# Letters for Scots dialectology
cp;AB68;age=13.0;na=LATIN SMALL LETTER TURNED R WITH MIDDLE TILDE
-cp;AB69;age=13.0;CI;CWKCF;Dia;dm=028D;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL TURNED W;NFKC_CF=028D;NFKC_QC=N;NFKD_QC=N
+cp;AB69;age=13.0;CI;CWKCF;Dia;dm=028D;dt=Sup;gc=Lm;na=MODIFIER LETTER SMALL TURNED W;NFKC_CF=028D;NFKC_QC=N;NFKC_SCF=028D;NFKD_QC=N
cp;AB6A;age=13.0;-Alpha;bc=ON;-Cased;CI;Dia;gc=Sk;-IDC;-IDS;-Lower;na=MODIFIER LETTER LEFT TACK;SB=XX;sc=Zyyy;WB=XX;-XIDC;-XIDS
cp;AB6B;age=13.0;-Alpha;bc=ON;-Cased;CI;Dia;gc=Sk;-IDC;-IDS;-Lower;na=MODIFIER LETTER RIGHT TACK;SB=XX;sc=Zyyy;WB=XX;-XIDC;-XIDS
unassigned;AB6C..AB6F
@@ -18474,86 +18506,86 @@ unassigned;AB6C..AB6F
block;AB70..ABBF;age=8.0;Alpha;blk=Cherokee_Sup;Cased;CWCF;CWCM;CWKCF;CWT;CWU;gc=Ll;Gr_Base;IDC;IDS;lb=AL;Lower;SB=LO;sc=Cher;WB=LE;XIDC;XIDS
# AB70..ABBF Cherokee Supplement
# Lowercase syllables
-cp;AB70;cf=13A0;na=CHEROKEE SMALL LETTER A;NFKC_CF=13A0;scf=13A0;stc=13A0;suc=13A0
-cp;AB71;cf=13A1;na=CHEROKEE SMALL LETTER E;NFKC_CF=13A1;scf=13A1;stc=13A1;suc=13A1
-cp;AB72;cf=13A2;na=CHEROKEE SMALL LETTER I;NFKC_CF=13A2;scf=13A2;stc=13A2;suc=13A2
-cp;AB73;cf=13A3;na=CHEROKEE SMALL LETTER O;NFKC_CF=13A3;scf=13A3;stc=13A3;suc=13A3
-cp;AB74;cf=13A4;na=CHEROKEE SMALL LETTER U;NFKC_CF=13A4;scf=13A4;stc=13A4;suc=13A4
-cp;AB75;cf=13A5;na=CHEROKEE SMALL LETTER V;NFKC_CF=13A5;scf=13A5;stc=13A5;suc=13A5
-cp;AB76;cf=13A6;na=CHEROKEE SMALL LETTER GA;NFKC_CF=13A6;scf=13A6;stc=13A6;suc=13A6
-cp;AB77;cf=13A7;na=CHEROKEE SMALL LETTER KA;NFKC_CF=13A7;scf=13A7;stc=13A7;suc=13A7
-cp;AB78;cf=13A8;na=CHEROKEE SMALL LETTER GE;NFKC_CF=13A8;scf=13A8;stc=13A8;suc=13A8
-cp;AB79;cf=13A9;na=CHEROKEE SMALL LETTER GI;NFKC_CF=13A9;scf=13A9;stc=13A9;suc=13A9
-cp;AB7A;cf=13AA;na=CHEROKEE SMALL LETTER GO;NFKC_CF=13AA;scf=13AA;stc=13AA;suc=13AA
-cp;AB7B;cf=13AB;na=CHEROKEE SMALL LETTER GU;NFKC_CF=13AB;scf=13AB;stc=13AB;suc=13AB
-cp;AB7C;cf=13AC;na=CHEROKEE SMALL LETTER GV;NFKC_CF=13AC;scf=13AC;stc=13AC;suc=13AC
-cp;AB7D;cf=13AD;na=CHEROKEE SMALL LETTER HA;NFKC_CF=13AD;scf=13AD;stc=13AD;suc=13AD
-cp;AB7E;cf=13AE;na=CHEROKEE SMALL LETTER HE;NFKC_CF=13AE;scf=13AE;stc=13AE;suc=13AE
-cp;AB7F;cf=13AF;na=CHEROKEE SMALL LETTER HI;NFKC_CF=13AF;scf=13AF;stc=13AF;suc=13AF
-cp;AB80;cf=13B0;na=CHEROKEE SMALL LETTER HO;NFKC_CF=13B0;scf=13B0;stc=13B0;suc=13B0
-cp;AB81;cf=13B1;na=CHEROKEE SMALL LETTER HU;NFKC_CF=13B1;scf=13B1;stc=13B1;suc=13B1
-cp;AB82;cf=13B2;na=CHEROKEE SMALL LETTER HV;NFKC_CF=13B2;scf=13B2;stc=13B2;suc=13B2
-cp;AB83;cf=13B3;na=CHEROKEE SMALL LETTER LA;NFKC_CF=13B3;scf=13B3;stc=13B3;suc=13B3
-cp;AB84;cf=13B4;na=CHEROKEE SMALL LETTER LE;NFKC_CF=13B4;scf=13B4;stc=13B4;suc=13B4
-cp;AB85;cf=13B5;na=CHEROKEE SMALL LETTER LI;NFKC_CF=13B5;scf=13B5;stc=13B5;suc=13B5
-cp;AB86;cf=13B6;na=CHEROKEE SMALL LETTER LO;NFKC_CF=13B6;scf=13B6;stc=13B6;suc=13B6
-cp;AB87;cf=13B7;na=CHEROKEE SMALL LETTER LU;NFKC_CF=13B7;scf=13B7;stc=13B7;suc=13B7
-cp;AB88;cf=13B8;na=CHEROKEE SMALL LETTER LV;NFKC_CF=13B8;scf=13B8;stc=13B8;suc=13B8
-cp;AB89;cf=13B9;na=CHEROKEE SMALL LETTER MA;NFKC_CF=13B9;scf=13B9;stc=13B9;suc=13B9
-cp;AB8A;cf=13BA;na=CHEROKEE SMALL LETTER ME;NFKC_CF=13BA;scf=13BA;stc=13BA;suc=13BA
-cp;AB8B;cf=13BB;na=CHEROKEE SMALL LETTER MI;NFKC_CF=13BB;scf=13BB;stc=13BB;suc=13BB
-cp;AB8C;cf=13BC;na=CHEROKEE SMALL LETTER MO;NFKC_CF=13BC;scf=13BC;stc=13BC;suc=13BC
-cp;AB8D;cf=13BD;na=CHEROKEE SMALL LETTER MU;NFKC_CF=13BD;scf=13BD;stc=13BD;suc=13BD
-cp;AB8E;cf=13BE;na=CHEROKEE SMALL LETTER NA;NFKC_CF=13BE;scf=13BE;stc=13BE;suc=13BE
-cp;AB8F;cf=13BF;na=CHEROKEE SMALL LETTER HNA;NFKC_CF=13BF;scf=13BF;stc=13BF;suc=13BF
-cp;AB90;cf=13C0;na=CHEROKEE SMALL LETTER NAH;NFKC_CF=13C0;scf=13C0;stc=13C0;suc=13C0
-cp;AB91;cf=13C1;na=CHEROKEE SMALL LETTER NE;NFKC_CF=13C1;scf=13C1;stc=13C1;suc=13C1
-cp;AB92;cf=13C2;na=CHEROKEE SMALL LETTER NI;NFKC_CF=13C2;scf=13C2;stc=13C2;suc=13C2
-cp;AB93;cf=13C3;na=CHEROKEE SMALL LETTER NO;NFKC_CF=13C3;scf=13C3;stc=13C3;suc=13C3
-cp;AB94;cf=13C4;na=CHEROKEE SMALL LETTER NU;NFKC_CF=13C4;scf=13C4;stc=13C4;suc=13C4
-cp;AB95;cf=13C5;na=CHEROKEE SMALL LETTER NV;NFKC_CF=13C5;scf=13C5;stc=13C5;suc=13C5
-cp;AB96;cf=13C6;na=CHEROKEE SMALL LETTER QUA;NFKC_CF=13C6;scf=13C6;stc=13C6;suc=13C6
-cp;AB97;cf=13C7;na=CHEROKEE SMALL LETTER QUE;NFKC_CF=13C7;scf=13C7;stc=13C7;suc=13C7
-cp;AB98;cf=13C8;na=CHEROKEE SMALL LETTER QUI;NFKC_CF=13C8;scf=13C8;stc=13C8;suc=13C8
-cp;AB99;cf=13C9;na=CHEROKEE SMALL LETTER QUO;NFKC_CF=13C9;scf=13C9;stc=13C9;suc=13C9
-cp;AB9A;cf=13CA;na=CHEROKEE SMALL LETTER QUU;NFKC_CF=13CA;scf=13CA;stc=13CA;suc=13CA
-cp;AB9B;cf=13CB;na=CHEROKEE SMALL LETTER QUV;NFKC_CF=13CB;scf=13CB;stc=13CB;suc=13CB
-cp;AB9C;cf=13CC;na=CHEROKEE SMALL LETTER SA;NFKC_CF=13CC;scf=13CC;stc=13CC;suc=13CC
-cp;AB9D;cf=13CD;na=CHEROKEE SMALL LETTER S;NFKC_CF=13CD;scf=13CD;stc=13CD;suc=13CD
-cp;AB9E;cf=13CE;na=CHEROKEE SMALL LETTER SE;NFKC_CF=13CE;scf=13CE;stc=13CE;suc=13CE
-cp;AB9F;cf=13CF;na=CHEROKEE SMALL LETTER SI;NFKC_CF=13CF;scf=13CF;stc=13CF;suc=13CF
-cp;ABA0;cf=13D0;na=CHEROKEE SMALL LETTER SO;NFKC_CF=13D0;scf=13D0;stc=13D0;suc=13D0
-cp;ABA1;cf=13D1;na=CHEROKEE SMALL LETTER SU;NFKC_CF=13D1;scf=13D1;stc=13D1;suc=13D1
-cp;ABA2;cf=13D2;na=CHEROKEE SMALL LETTER SV;NFKC_CF=13D2;scf=13D2;stc=13D2;suc=13D2
-cp;ABA3;cf=13D3;na=CHEROKEE SMALL LETTER DA;NFKC_CF=13D3;scf=13D3;stc=13D3;suc=13D3
-cp;ABA4;cf=13D4;na=CHEROKEE SMALL LETTER TA;NFKC_CF=13D4;scf=13D4;stc=13D4;suc=13D4
-cp;ABA5;cf=13D5;na=CHEROKEE SMALL LETTER DE;NFKC_CF=13D5;scf=13D5;stc=13D5;suc=13D5
-cp;ABA6;cf=13D6;na=CHEROKEE SMALL LETTER TE;NFKC_CF=13D6;scf=13D6;stc=13D6;suc=13D6
-cp;ABA7;cf=13D7;na=CHEROKEE SMALL LETTER DI;NFKC_CF=13D7;scf=13D7;stc=13D7;suc=13D7
-cp;ABA8;cf=13D8;na=CHEROKEE SMALL LETTER TI;NFKC_CF=13D8;scf=13D8;stc=13D8;suc=13D8
-cp;ABA9;cf=13D9;na=CHEROKEE SMALL LETTER DO;NFKC_CF=13D9;scf=13D9;stc=13D9;suc=13D9
-cp;ABAA;cf=13DA;na=CHEROKEE SMALL LETTER DU;NFKC_CF=13DA;scf=13DA;stc=13DA;suc=13DA
-cp;ABAB;cf=13DB;na=CHEROKEE SMALL LETTER DV;NFKC_CF=13DB;scf=13DB;stc=13DB;suc=13DB
-cp;ABAC;cf=13DC;na=CHEROKEE SMALL LETTER DLA;NFKC_CF=13DC;scf=13DC;stc=13DC;suc=13DC
-cp;ABAD;cf=13DD;na=CHEROKEE SMALL LETTER TLA;NFKC_CF=13DD;scf=13DD;stc=13DD;suc=13DD
-cp;ABAE;cf=13DE;na=CHEROKEE SMALL LETTER TLE;NFKC_CF=13DE;scf=13DE;stc=13DE;suc=13DE
-cp;ABAF;cf=13DF;na=CHEROKEE SMALL LETTER TLI;NFKC_CF=13DF;scf=13DF;stc=13DF;suc=13DF
-cp;ABB0;cf=13E0;na=CHEROKEE SMALL LETTER TLO;NFKC_CF=13E0;scf=13E0;stc=13E0;suc=13E0
-cp;ABB1;cf=13E1;na=CHEROKEE SMALL LETTER TLU;NFKC_CF=13E1;scf=13E1;stc=13E1;suc=13E1
-cp;ABB2;cf=13E2;na=CHEROKEE SMALL LETTER TLV;NFKC_CF=13E2;scf=13E2;stc=13E2;suc=13E2
-cp;ABB3;cf=13E3;na=CHEROKEE SMALL LETTER TSA;NFKC_CF=13E3;scf=13E3;stc=13E3;suc=13E3
-cp;ABB4;cf=13E4;na=CHEROKEE SMALL LETTER TSE;NFKC_CF=13E4;scf=13E4;stc=13E4;suc=13E4
-cp;ABB5;cf=13E5;na=CHEROKEE SMALL LETTER TSI;NFKC_CF=13E5;scf=13E5;stc=13E5;suc=13E5
-cp;ABB6;cf=13E6;na=CHEROKEE SMALL LETTER TSO;NFKC_CF=13E6;scf=13E6;stc=13E6;suc=13E6
-cp;ABB7;cf=13E7;na=CHEROKEE SMALL LETTER TSU;NFKC_CF=13E7;scf=13E7;stc=13E7;suc=13E7
-cp;ABB8;cf=13E8;na=CHEROKEE SMALL LETTER TSV;NFKC_CF=13E8;scf=13E8;stc=13E8;suc=13E8
-cp;ABB9;cf=13E9;na=CHEROKEE SMALL LETTER WA;NFKC_CF=13E9;scf=13E9;stc=13E9;suc=13E9
-cp;ABBA;cf=13EA;na=CHEROKEE SMALL LETTER WE;NFKC_CF=13EA;scf=13EA;stc=13EA;suc=13EA
-cp;ABBB;cf=13EB;na=CHEROKEE SMALL LETTER WI;NFKC_CF=13EB;scf=13EB;stc=13EB;suc=13EB
-cp;ABBC;cf=13EC;na=CHEROKEE SMALL LETTER WO;NFKC_CF=13EC;scf=13EC;stc=13EC;suc=13EC
-cp;ABBD;cf=13ED;na=CHEROKEE SMALL LETTER WU;NFKC_CF=13ED;scf=13ED;stc=13ED;suc=13ED
-cp;ABBE;cf=13EE;na=CHEROKEE SMALL LETTER WV;NFKC_CF=13EE;scf=13EE;stc=13EE;suc=13EE
-cp;ABBF;cf=13EF;na=CHEROKEE SMALL LETTER YA;NFKC_CF=13EF;scf=13EF;stc=13EF;suc=13EF
+cp;AB70;cf=13A0;na=CHEROKEE SMALL LETTER A;NFKC_CF=13A0;NFKC_SCF=13A0;scf=13A0;stc=13A0;suc=13A0
+cp;AB71;cf=13A1;na=CHEROKEE SMALL LETTER E;NFKC_CF=13A1;NFKC_SCF=13A1;scf=13A1;stc=13A1;suc=13A1
+cp;AB72;cf=13A2;na=CHEROKEE SMALL LETTER I;NFKC_CF=13A2;NFKC_SCF=13A2;scf=13A2;stc=13A2;suc=13A2
+cp;AB73;cf=13A3;na=CHEROKEE SMALL LETTER O;NFKC_CF=13A3;NFKC_SCF=13A3;scf=13A3;stc=13A3;suc=13A3
+cp;AB74;cf=13A4;na=CHEROKEE SMALL LETTER U;NFKC_CF=13A4;NFKC_SCF=13A4;scf=13A4;stc=13A4;suc=13A4
+cp;AB75;cf=13A5;na=CHEROKEE SMALL LETTER V;NFKC_CF=13A5;NFKC_SCF=13A5;scf=13A5;stc=13A5;suc=13A5
+cp;AB76;cf=13A6;na=CHEROKEE SMALL LETTER GA;NFKC_CF=13A6;NFKC_SCF=13A6;scf=13A6;stc=13A6;suc=13A6
+cp;AB77;cf=13A7;na=CHEROKEE SMALL LETTER KA;NFKC_CF=13A7;NFKC_SCF=13A7;scf=13A7;stc=13A7;suc=13A7
+cp;AB78;cf=13A8;na=CHEROKEE SMALL LETTER GE;NFKC_CF=13A8;NFKC_SCF=13A8;scf=13A8;stc=13A8;suc=13A8
+cp;AB79;cf=13A9;na=CHEROKEE SMALL LETTER GI;NFKC_CF=13A9;NFKC_SCF=13A9;scf=13A9;stc=13A9;suc=13A9
+cp;AB7A;cf=13AA;na=CHEROKEE SMALL LETTER GO;NFKC_CF=13AA;NFKC_SCF=13AA;scf=13AA;stc=13AA;suc=13AA
+cp;AB7B;cf=13AB;na=CHEROKEE SMALL LETTER GU;NFKC_CF=13AB;NFKC_SCF=13AB;scf=13AB;stc=13AB;suc=13AB
+cp;AB7C;cf=13AC;na=CHEROKEE SMALL LETTER GV;NFKC_CF=13AC;NFKC_SCF=13AC;scf=13AC;stc=13AC;suc=13AC
+cp;AB7D;cf=13AD;na=CHEROKEE SMALL LETTER HA;NFKC_CF=13AD;NFKC_SCF=13AD;scf=13AD;stc=13AD;suc=13AD
+cp;AB7E;cf=13AE;na=CHEROKEE SMALL LETTER HE;NFKC_CF=13AE;NFKC_SCF=13AE;scf=13AE;stc=13AE;suc=13AE
+cp;AB7F;cf=13AF;na=CHEROKEE SMALL LETTER HI;NFKC_CF=13AF;NFKC_SCF=13AF;scf=13AF;stc=13AF;suc=13AF
+cp;AB80;cf=13B0;na=CHEROKEE SMALL LETTER HO;NFKC_CF=13B0;NFKC_SCF=13B0;scf=13B0;stc=13B0;suc=13B0
+cp;AB81;cf=13B1;na=CHEROKEE SMALL LETTER HU;NFKC_CF=13B1;NFKC_SCF=13B1;scf=13B1;stc=13B1;suc=13B1
+cp;AB82;cf=13B2;na=CHEROKEE SMALL LETTER HV;NFKC_CF=13B2;NFKC_SCF=13B2;scf=13B2;stc=13B2;suc=13B2
+cp;AB83;cf=13B3;na=CHEROKEE SMALL LETTER LA;NFKC_CF=13B3;NFKC_SCF=13B3;scf=13B3;stc=13B3;suc=13B3
+cp;AB84;cf=13B4;na=CHEROKEE SMALL LETTER LE;NFKC_CF=13B4;NFKC_SCF=13B4;scf=13B4;stc=13B4;suc=13B4
+cp;AB85;cf=13B5;na=CHEROKEE SMALL LETTER LI;NFKC_CF=13B5;NFKC_SCF=13B5;scf=13B5;stc=13B5;suc=13B5
+cp;AB86;cf=13B6;na=CHEROKEE SMALL LETTER LO;NFKC_CF=13B6;NFKC_SCF=13B6;scf=13B6;stc=13B6;suc=13B6
+cp;AB87;cf=13B7;na=CHEROKEE SMALL LETTER LU;NFKC_CF=13B7;NFKC_SCF=13B7;scf=13B7;stc=13B7;suc=13B7
+cp;AB88;cf=13B8;na=CHEROKEE SMALL LETTER LV;NFKC_CF=13B8;NFKC_SCF=13B8;scf=13B8;stc=13B8;suc=13B8
+cp;AB89;cf=13B9;na=CHEROKEE SMALL LETTER MA;NFKC_CF=13B9;NFKC_SCF=13B9;scf=13B9;stc=13B9;suc=13B9
+cp;AB8A;cf=13BA;na=CHEROKEE SMALL LETTER ME;NFKC_CF=13BA;NFKC_SCF=13BA;scf=13BA;stc=13BA;suc=13BA
+cp;AB8B;cf=13BB;na=CHEROKEE SMALL LETTER MI;NFKC_CF=13BB;NFKC_SCF=13BB;scf=13BB;stc=13BB;suc=13BB
+cp;AB8C;cf=13BC;na=CHEROKEE SMALL LETTER MO;NFKC_CF=13BC;NFKC_SCF=13BC;scf=13BC;stc=13BC;suc=13BC
+cp;AB8D;cf=13BD;na=CHEROKEE SMALL LETTER MU;NFKC_CF=13BD;NFKC_SCF=13BD;scf=13BD;stc=13BD;suc=13BD
+cp;AB8E;cf=13BE;na=CHEROKEE SMALL LETTER NA;NFKC_CF=13BE;NFKC_SCF=13BE;scf=13BE;stc=13BE;suc=13BE
+cp;AB8F;cf=13BF;na=CHEROKEE SMALL LETTER HNA;NFKC_CF=13BF;NFKC_SCF=13BF;scf=13BF;stc=13BF;suc=13BF
+cp;AB90;cf=13C0;na=CHEROKEE SMALL LETTER NAH;NFKC_CF=13C0;NFKC_SCF=13C0;scf=13C0;stc=13C0;suc=13C0
+cp;AB91;cf=13C1;na=CHEROKEE SMALL LETTER NE;NFKC_CF=13C1;NFKC_SCF=13C1;scf=13C1;stc=13C1;suc=13C1
+cp;AB92;cf=13C2;na=CHEROKEE SMALL LETTER NI;NFKC_CF=13C2;NFKC_SCF=13C2;scf=13C2;stc=13C2;suc=13C2
+cp;AB93;cf=13C3;na=CHEROKEE SMALL LETTER NO;NFKC_CF=13C3;NFKC_SCF=13C3;scf=13C3;stc=13C3;suc=13C3
+cp;AB94;cf=13C4;na=CHEROKEE SMALL LETTER NU;NFKC_CF=13C4;NFKC_SCF=13C4;scf=13C4;stc=13C4;suc=13C4
+cp;AB95;cf=13C5;na=CHEROKEE SMALL LETTER NV;NFKC_CF=13C5;NFKC_SCF=13C5;scf=13C5;stc=13C5;suc=13C5
+cp;AB96;cf=13C6;na=CHEROKEE SMALL LETTER QUA;NFKC_CF=13C6;NFKC_SCF=13C6;scf=13C6;stc=13C6;suc=13C6
+cp;AB97;cf=13C7;na=CHEROKEE SMALL LETTER QUE;NFKC_CF=13C7;NFKC_SCF=13C7;scf=13C7;stc=13C7;suc=13C7
+cp;AB98;cf=13C8;na=CHEROKEE SMALL LETTER QUI;NFKC_CF=13C8;NFKC_SCF=13C8;scf=13C8;stc=13C8;suc=13C8
+cp;AB99;cf=13C9;na=CHEROKEE SMALL LETTER QUO;NFKC_CF=13C9;NFKC_SCF=13C9;scf=13C9;stc=13C9;suc=13C9
+cp;AB9A;cf=13CA;na=CHEROKEE SMALL LETTER QUU;NFKC_CF=13CA;NFKC_SCF=13CA;scf=13CA;stc=13CA;suc=13CA
+cp;AB9B;cf=13CB;na=CHEROKEE SMALL LETTER QUV;NFKC_CF=13CB;NFKC_SCF=13CB;scf=13CB;stc=13CB;suc=13CB
+cp;AB9C;cf=13CC;na=CHEROKEE SMALL LETTER SA;NFKC_CF=13CC;NFKC_SCF=13CC;scf=13CC;stc=13CC;suc=13CC
+cp;AB9D;cf=13CD;na=CHEROKEE SMALL LETTER S;NFKC_CF=13CD;NFKC_SCF=13CD;scf=13CD;stc=13CD;suc=13CD
+cp;AB9E;cf=13CE;na=CHEROKEE SMALL LETTER SE;NFKC_CF=13CE;NFKC_SCF=13CE;scf=13CE;stc=13CE;suc=13CE
+cp;AB9F;cf=13CF;na=CHEROKEE SMALL LETTER SI;NFKC_CF=13CF;NFKC_SCF=13CF;scf=13CF;stc=13CF;suc=13CF
+cp;ABA0;cf=13D0;na=CHEROKEE SMALL LETTER SO;NFKC_CF=13D0;NFKC_SCF=13D0;scf=13D0;stc=13D0;suc=13D0
+cp;ABA1;cf=13D1;na=CHEROKEE SMALL LETTER SU;NFKC_CF=13D1;NFKC_SCF=13D1;scf=13D1;stc=13D1;suc=13D1
+cp;ABA2;cf=13D2;na=CHEROKEE SMALL LETTER SV;NFKC_CF=13D2;NFKC_SCF=13D2;scf=13D2;stc=13D2;suc=13D2
+cp;ABA3;cf=13D3;na=CHEROKEE SMALL LETTER DA;NFKC_CF=13D3;NFKC_SCF=13D3;scf=13D3;stc=13D3;suc=13D3
+cp;ABA4;cf=13D4;na=CHEROKEE SMALL LETTER TA;NFKC_CF=13D4;NFKC_SCF=13D4;scf=13D4;stc=13D4;suc=13D4
+cp;ABA5;cf=13D5;na=CHEROKEE SMALL LETTER DE;NFKC_CF=13D5;NFKC_SCF=13D5;scf=13D5;stc=13D5;suc=13D5
+cp;ABA6;cf=13D6;na=CHEROKEE SMALL LETTER TE;NFKC_CF=13D6;NFKC_SCF=13D6;scf=13D6;stc=13D6;suc=13D6
+cp;ABA7;cf=13D7;na=CHEROKEE SMALL LETTER DI;NFKC_CF=13D7;NFKC_SCF=13D7;scf=13D7;stc=13D7;suc=13D7
+cp;ABA8;cf=13D8;na=CHEROKEE SMALL LETTER TI;NFKC_CF=13D8;NFKC_SCF=13D8;scf=13D8;stc=13D8;suc=13D8
+cp;ABA9;cf=13D9;na=CHEROKEE SMALL LETTER DO;NFKC_CF=13D9;NFKC_SCF=13D9;scf=13D9;stc=13D9;suc=13D9
+cp;ABAA;cf=13DA;na=CHEROKEE SMALL LETTER DU;NFKC_CF=13DA;NFKC_SCF=13DA;scf=13DA;stc=13DA;suc=13DA
+cp;ABAB;cf=13DB;na=CHEROKEE SMALL LETTER DV;NFKC_CF=13DB;NFKC_SCF=13DB;scf=13DB;stc=13DB;suc=13DB
+cp;ABAC;cf=13DC;na=CHEROKEE SMALL LETTER DLA;NFKC_CF=13DC;NFKC_SCF=13DC;scf=13DC;stc=13DC;suc=13DC
+cp;ABAD;cf=13DD;na=CHEROKEE SMALL LETTER TLA;NFKC_CF=13DD;NFKC_SCF=13DD;scf=13DD;stc=13DD;suc=13DD
+cp;ABAE;cf=13DE;na=CHEROKEE SMALL LETTER TLE;NFKC_CF=13DE;NFKC_SCF=13DE;scf=13DE;stc=13DE;suc=13DE
+cp;ABAF;cf=13DF;na=CHEROKEE SMALL LETTER TLI;NFKC_CF=13DF;NFKC_SCF=13DF;scf=13DF;stc=13DF;suc=13DF
+cp;ABB0;cf=13E0;na=CHEROKEE SMALL LETTER TLO;NFKC_CF=13E0;NFKC_SCF=13E0;scf=13E0;stc=13E0;suc=13E0
+cp;ABB1;cf=13E1;na=CHEROKEE SMALL LETTER TLU;NFKC_CF=13E1;NFKC_SCF=13E1;scf=13E1;stc=13E1;suc=13E1
+cp;ABB2;cf=13E2;na=CHEROKEE SMALL LETTER TLV;NFKC_CF=13E2;NFKC_SCF=13E2;scf=13E2;stc=13E2;suc=13E2
+cp;ABB3;cf=13E3;na=CHEROKEE SMALL LETTER TSA;NFKC_CF=13E3;NFKC_SCF=13E3;scf=13E3;stc=13E3;suc=13E3
+cp;ABB4;cf=13E4;na=CHEROKEE SMALL LETTER TSE;NFKC_CF=13E4;NFKC_SCF=13E4;scf=13E4;stc=13E4;suc=13E4
+cp;ABB5;cf=13E5;na=CHEROKEE SMALL LETTER TSI;NFKC_CF=13E5;NFKC_SCF=13E5;scf=13E5;stc=13E5;suc=13E5
+cp;ABB6;cf=13E6;na=CHEROKEE SMALL LETTER TSO;NFKC_CF=13E6;NFKC_SCF=13E6;scf=13E6;stc=13E6;suc=13E6
+cp;ABB7;cf=13E7;na=CHEROKEE SMALL LETTER TSU;NFKC_CF=13E7;NFKC_SCF=13E7;scf=13E7;stc=13E7;suc=13E7
+cp;ABB8;cf=13E8;na=CHEROKEE SMALL LETTER TSV;NFKC_CF=13E8;NFKC_SCF=13E8;scf=13E8;stc=13E8;suc=13E8
+cp;ABB9;cf=13E9;na=CHEROKEE SMALL LETTER WA;NFKC_CF=13E9;NFKC_SCF=13E9;scf=13E9;stc=13E9;suc=13E9
+cp;ABBA;cf=13EA;na=CHEROKEE SMALL LETTER WE;NFKC_CF=13EA;NFKC_SCF=13EA;scf=13EA;stc=13EA;suc=13EA
+cp;ABBB;cf=13EB;na=CHEROKEE SMALL LETTER WI;NFKC_CF=13EB;NFKC_SCF=13EB;scf=13EB;stc=13EB;suc=13EB
+cp;ABBC;cf=13EC;na=CHEROKEE SMALL LETTER WO;NFKC_CF=13EC;NFKC_SCF=13EC;scf=13EC;stc=13EC;suc=13EC
+cp;ABBD;cf=13ED;na=CHEROKEE SMALL LETTER WU;NFKC_CF=13ED;NFKC_SCF=13ED;scf=13ED;stc=13ED;suc=13ED
+cp;ABBE;cf=13EE;na=CHEROKEE SMALL LETTER WV;NFKC_CF=13EE;NFKC_SCF=13EE;scf=13EE;stc=13EE;suc=13EE
+cp;ABBF;cf=13EF;na=CHEROKEE SMALL LETTER YA;NFKC_CF=13EF;NFKC_SCF=13EF;scf=13EF;stc=13EF;suc=13EF
block;ABC0..ABFF;age=5.2;Alpha;blk=Meetei_Mayek;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Mtei;WB=LE;XIDC;XIDS
# ABC0..ABFF Meetei Mayek
@@ -18606,7 +18638,7 @@ cp;ABEA;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=MEETEI MAYEK
# Punctuation
cp;ABEB;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=MEETEI MAYEK CHEIKHEI;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
cp;ABEC;-Alpha;Dia;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Tone_Mark;lb=CM;na=MEETEI MAYEK LUM IYEK;SB=EX;WB=Extend;-XIDS
-cp;ABED;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InPC=Bottom;InSC=Pure_Killer;jt=T;lb=CM;na=MEETEI MAYEK APUN IYEK;SB=EX;WB=Extend;-XIDS
+cp;ABED;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InCB=Extend;InPC=Bottom;InSC=Pure_Killer;jt=T;lb=CM;na=MEETEI MAYEK APUN IYEK;SB=EX;WB=Extend;-XIDS
unassigned;ABEE..ABEF
# Digits
cp;ABF0;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=MEETEI MAYEK DIGIT ZERO;nt=De;nv=0;SB=NU;WB=NU;-XIDS
@@ -19518,659 +19550,659 @@ block;E000..F8FF;age=1.1;blk=PUA;ea=A;gc=Co;vo=U
block;F900..FAFF;age=1.1;Alpha;blk=CJK_Compat_Ideographs;Comp_Ex;CWKCF;dt=Can;ea=W;gc=Lo;Gr_Base;IDC;Ideo;IDS;lb=ID;NFC_QC=N;NFD_QC=N;NFKC_QC=N;NFKD_QC=N;SB=LE;sc=Hani;vo=U;XIDC;XIDS
# F900..FAFF CJK Compatibility Ideographs
# Pronunciation variants from KS X 1001:1998
-cp;F900;dm=8C48;na=CJK COMPATIBILITY IDEOGRAPH-F900;NFKC_CF=8C48
-cp;F901;dm=66F4;na=CJK COMPATIBILITY IDEOGRAPH-F901;NFKC_CF=66F4
-cp;F902;dm=8ECA;na=CJK COMPATIBILITY IDEOGRAPH-F902;NFKC_CF=8ECA
-cp;F903;dm=8CC8;na=CJK COMPATIBILITY IDEOGRAPH-F903;NFKC_CF=8CC8
-cp;F904;dm=6ED1;na=CJK COMPATIBILITY IDEOGRAPH-F904;NFKC_CF=6ED1
-cp;F905;dm=4E32;na=CJK COMPATIBILITY IDEOGRAPH-F905;NFKC_CF=4E32
-cp;F906;dm=53E5;na=CJK COMPATIBILITY IDEOGRAPH-F906;NFKC_CF=53E5
-cp;F907;dm=9F9C;na=CJK COMPATIBILITY IDEOGRAPH-F907;NFKC_CF=9F9C
-cp;F908;dm=9F9C;na=CJK COMPATIBILITY IDEOGRAPH-F908;NFKC_CF=9F9C
-cp;F909;dm=5951;na=CJK COMPATIBILITY IDEOGRAPH-F909;NFKC_CF=5951
-cp;F90A;dm=91D1;na=CJK COMPATIBILITY IDEOGRAPH-F90A;NFKC_CF=91D1
-cp;F90B;dm=5587;na=CJK COMPATIBILITY IDEOGRAPH-F90B;NFKC_CF=5587
-cp;F90C;dm=5948;na=CJK COMPATIBILITY IDEOGRAPH-F90C;NFKC_CF=5948
-cp;F90D;dm=61F6;na=CJK COMPATIBILITY IDEOGRAPH-F90D;NFKC_CF=61F6
-cp;F90E;dm=7669;na=CJK COMPATIBILITY IDEOGRAPH-F90E;NFKC_CF=7669
-cp;F90F;dm=7F85;na=CJK COMPATIBILITY IDEOGRAPH-F90F;NFKC_CF=7F85
-cp;F910;dm=863F;na=CJK COMPATIBILITY IDEOGRAPH-F910;NFKC_CF=863F
-cp;F911;dm=87BA;na=CJK COMPATIBILITY IDEOGRAPH-F911;NFKC_CF=87BA
-cp;F912;dm=88F8;na=CJK COMPATIBILITY IDEOGRAPH-F912;NFKC_CF=88F8
-cp;F913;dm=908F;na=CJK COMPATIBILITY IDEOGRAPH-F913;NFKC_CF=908F
-cp;F914;dm=6A02;na=CJK COMPATIBILITY IDEOGRAPH-F914;NFKC_CF=6A02
-cp;F915;dm=6D1B;na=CJK COMPATIBILITY IDEOGRAPH-F915;NFKC_CF=6D1B
-cp;F916;dm=70D9;na=CJK COMPATIBILITY IDEOGRAPH-F916;NFKC_CF=70D9
-cp;F917;dm=73DE;na=CJK COMPATIBILITY IDEOGRAPH-F917;NFKC_CF=73DE
-cp;F918;dm=843D;na=CJK COMPATIBILITY IDEOGRAPH-F918;NFKC_CF=843D
-cp;F919;dm=916A;na=CJK COMPATIBILITY IDEOGRAPH-F919;NFKC_CF=916A
-cp;F91A;dm=99F1;na=CJK COMPATIBILITY IDEOGRAPH-F91A;NFKC_CF=99F1
-cp;F91B;dm=4E82;na=CJK COMPATIBILITY IDEOGRAPH-F91B;NFKC_CF=4E82
-cp;F91C;dm=5375;na=CJK COMPATIBILITY IDEOGRAPH-F91C;NFKC_CF=5375
-cp;F91D;dm=6B04;na=CJK COMPATIBILITY IDEOGRAPH-F91D;NFKC_CF=6B04
-cp;F91E;dm=721B;na=CJK COMPATIBILITY IDEOGRAPH-F91E;NFKC_CF=721B
-cp;F91F;dm=862D;na=CJK COMPATIBILITY IDEOGRAPH-F91F;NFKC_CF=862D
-cp;F920;dm=9E1E;na=CJK COMPATIBILITY IDEOGRAPH-F920;NFKC_CF=9E1E
-cp;F921;dm=5D50;na=CJK COMPATIBILITY IDEOGRAPH-F921;NFKC_CF=5D50
-cp;F922;dm=6FEB;na=CJK COMPATIBILITY IDEOGRAPH-F922;NFKC_CF=6FEB
-cp;F923;dm=85CD;na=CJK COMPATIBILITY IDEOGRAPH-F923;NFKC_CF=85CD
-cp;F924;dm=8964;na=CJK COMPATIBILITY IDEOGRAPH-F924;NFKC_CF=8964
-cp;F925;dm=62C9;na=CJK COMPATIBILITY IDEOGRAPH-F925;NFKC_CF=62C9
-cp;F926;dm=81D8;na=CJK COMPATIBILITY IDEOGRAPH-F926;NFKC_CF=81D8
-cp;F927;dm=881F;na=CJK COMPATIBILITY IDEOGRAPH-F927;NFKC_CF=881F
-cp;F928;dm=5ECA;na=CJK COMPATIBILITY IDEOGRAPH-F928;NFKC_CF=5ECA
-cp;F929;dm=6717;na=CJK COMPATIBILITY IDEOGRAPH-F929;NFKC_CF=6717
-cp;F92A;dm=6D6A;na=CJK COMPATIBILITY IDEOGRAPH-F92A;NFKC_CF=6D6A
-cp;F92B;dm=72FC;na=CJK COMPATIBILITY IDEOGRAPH-F92B;NFKC_CF=72FC
-cp;F92C;dm=90CE;na=CJK COMPATIBILITY IDEOGRAPH-F92C;NFKC_CF=90CE
-cp;F92D;dm=4F86;na=CJK COMPATIBILITY IDEOGRAPH-F92D;NFKC_CF=4F86
-cp;F92E;dm=51B7;na=CJK COMPATIBILITY IDEOGRAPH-F92E;NFKC_CF=51B7
-cp;F92F;dm=52DE;na=CJK COMPATIBILITY IDEOGRAPH-F92F;NFKC_CF=52DE
-cp;F930;dm=64C4;na=CJK COMPATIBILITY IDEOGRAPH-F930;NFKC_CF=64C4
-cp;F931;dm=6AD3;na=CJK COMPATIBILITY IDEOGRAPH-F931;NFKC_CF=6AD3
-cp;F932;dm=7210;na=CJK COMPATIBILITY IDEOGRAPH-F932;NFKC_CF=7210
-cp;F933;dm=76E7;na=CJK COMPATIBILITY IDEOGRAPH-F933;NFKC_CF=76E7
-cp;F934;dm=8001;na=CJK COMPATIBILITY IDEOGRAPH-F934;NFKC_CF=8001
-cp;F935;dm=8606;na=CJK COMPATIBILITY IDEOGRAPH-F935;NFKC_CF=8606
-cp;F936;dm=865C;na=CJK COMPATIBILITY IDEOGRAPH-F936;NFKC_CF=865C
-cp;F937;dm=8DEF;na=CJK COMPATIBILITY IDEOGRAPH-F937;NFKC_CF=8DEF
-cp;F938;dm=9732;na=CJK COMPATIBILITY IDEOGRAPH-F938;NFKC_CF=9732
-cp;F939;dm=9B6F;na=CJK COMPATIBILITY IDEOGRAPH-F939;NFKC_CF=9B6F
-cp;F93A;dm=9DFA;na=CJK COMPATIBILITY IDEOGRAPH-F93A;NFKC_CF=9DFA
-cp;F93B;dm=788C;na=CJK COMPATIBILITY IDEOGRAPH-F93B;NFKC_CF=788C
-cp;F93C;dm=797F;na=CJK COMPATIBILITY IDEOGRAPH-F93C;NFKC_CF=797F
-cp;F93D;dm=7DA0;na=CJK COMPATIBILITY IDEOGRAPH-F93D;NFKC_CF=7DA0
-cp;F93E;dm=83C9;na=CJK COMPATIBILITY IDEOGRAPH-F93E;NFKC_CF=83C9
-cp;F93F;dm=9304;na=CJK COMPATIBILITY IDEOGRAPH-F93F;NFKC_CF=9304
-cp;F940;dm=9E7F;na=CJK COMPATIBILITY IDEOGRAPH-F940;NFKC_CF=9E7F
-cp;F941;dm=8AD6;na=CJK COMPATIBILITY IDEOGRAPH-F941;NFKC_CF=8AD6
-cp;F942;dm=58DF;na=CJK COMPATIBILITY IDEOGRAPH-F942;NFKC_CF=58DF
-cp;F943;dm=5F04;na=CJK COMPATIBILITY IDEOGRAPH-F943;NFKC_CF=5F04
-cp;F944;dm=7C60;na=CJK COMPATIBILITY IDEOGRAPH-F944;NFKC_CF=7C60
-cp;F945;dm=807E;na=CJK COMPATIBILITY IDEOGRAPH-F945;NFKC_CF=807E
-cp;F946;dm=7262;na=CJK COMPATIBILITY IDEOGRAPH-F946;NFKC_CF=7262
-cp;F947;dm=78CA;na=CJK COMPATIBILITY IDEOGRAPH-F947;NFKC_CF=78CA
-cp;F948;dm=8CC2;na=CJK COMPATIBILITY IDEOGRAPH-F948;NFKC_CF=8CC2
-cp;F949;dm=96F7;na=CJK COMPATIBILITY IDEOGRAPH-F949;NFKC_CF=96F7
-cp;F94A;dm=58D8;na=CJK COMPATIBILITY IDEOGRAPH-F94A;NFKC_CF=58D8
-cp;F94B;dm=5C62;na=CJK COMPATIBILITY IDEOGRAPH-F94B;NFKC_CF=5C62
-cp;F94C;dm=6A13;na=CJK COMPATIBILITY IDEOGRAPH-F94C;NFKC_CF=6A13
-cp;F94D;dm=6DDA;na=CJK COMPATIBILITY IDEOGRAPH-F94D;NFKC_CF=6DDA
-cp;F94E;dm=6F0F;na=CJK COMPATIBILITY IDEOGRAPH-F94E;NFKC_CF=6F0F
-cp;F94F;dm=7D2F;na=CJK COMPATIBILITY IDEOGRAPH-F94F;NFKC_CF=7D2F
-cp;F950;dm=7E37;na=CJK COMPATIBILITY IDEOGRAPH-F950;NFKC_CF=7E37
-cp;F951;dm=964B;na=CJK COMPATIBILITY IDEOGRAPH-F951;NFKC_CF=964B
-cp;F952;dm=52D2;na=CJK COMPATIBILITY IDEOGRAPH-F952;NFKC_CF=52D2
-cp;F953;dm=808B;na=CJK COMPATIBILITY IDEOGRAPH-F953;NFKC_CF=808B
-cp;F954;dm=51DC;na=CJK COMPATIBILITY IDEOGRAPH-F954;NFKC_CF=51DC
-cp;F955;dm=51CC;na=CJK COMPATIBILITY IDEOGRAPH-F955;NFKC_CF=51CC
-cp;F956;dm=7A1C;na=CJK COMPATIBILITY IDEOGRAPH-F956;NFKC_CF=7A1C
-cp;F957;dm=7DBE;na=CJK COMPATIBILITY IDEOGRAPH-F957;NFKC_CF=7DBE
-cp;F958;dm=83F1;na=CJK COMPATIBILITY IDEOGRAPH-F958;NFKC_CF=83F1
-cp;F959;dm=9675;na=CJK COMPATIBILITY IDEOGRAPH-F959;NFKC_CF=9675
-cp;F95A;dm=8B80;na=CJK COMPATIBILITY IDEOGRAPH-F95A;NFKC_CF=8B80
-cp;F95B;dm=62CF;na=CJK COMPATIBILITY IDEOGRAPH-F95B;NFKC_CF=62CF
-cp;F95C;dm=6A02;na=CJK COMPATIBILITY IDEOGRAPH-F95C;NFKC_CF=6A02
-cp;F95D;dm=8AFE;na=CJK COMPATIBILITY IDEOGRAPH-F95D;NFKC_CF=8AFE
-cp;F95E;dm=4E39;na=CJK COMPATIBILITY IDEOGRAPH-F95E;NFKC_CF=4E39
-cp;F95F;dm=5BE7;na=CJK COMPATIBILITY IDEOGRAPH-F95F;NFKC_CF=5BE7
-cp;F960;dm=6012;na=CJK COMPATIBILITY IDEOGRAPH-F960;NFKC_CF=6012
-cp;F961;dm=7387;na=CJK COMPATIBILITY IDEOGRAPH-F961;NFKC_CF=7387
-cp;F962;dm=7570;na=CJK COMPATIBILITY IDEOGRAPH-F962;NFKC_CF=7570
-cp;F963;dm=5317;na=CJK COMPATIBILITY IDEOGRAPH-F963;NFKC_CF=5317
-cp;F964;dm=78FB;na=CJK COMPATIBILITY IDEOGRAPH-F964;NFKC_CF=78FB
-cp;F965;dm=4FBF;na=CJK COMPATIBILITY IDEOGRAPH-F965;NFKC_CF=4FBF
-cp;F966;dm=5FA9;na=CJK COMPATIBILITY IDEOGRAPH-F966;NFKC_CF=5FA9
-cp;F967;dm=4E0D;na=CJK COMPATIBILITY IDEOGRAPH-F967;NFKC_CF=4E0D
-cp;F968;dm=6CCC;na=CJK COMPATIBILITY IDEOGRAPH-F968;NFKC_CF=6CCC
-cp;F969;dm=6578;na=CJK COMPATIBILITY IDEOGRAPH-F969;NFKC_CF=6578
-cp;F96A;dm=7D22;na=CJK COMPATIBILITY IDEOGRAPH-F96A;NFKC_CF=7D22
-cp;F96B;dm=53C3;na=CJK COMPATIBILITY IDEOGRAPH-F96B;NFKC_CF=53C3;nt=Nu;nv=3
-cp;F96C;dm=585E;na=CJK COMPATIBILITY IDEOGRAPH-F96C;NFKC_CF=585E
-cp;F96D;dm=7701;na=CJK COMPATIBILITY IDEOGRAPH-F96D;NFKC_CF=7701
-cp;F96E;dm=8449;na=CJK COMPATIBILITY IDEOGRAPH-F96E;NFKC_CF=8449
-cp;F96F;dm=8AAA;na=CJK COMPATIBILITY IDEOGRAPH-F96F;NFKC_CF=8AAA
-cp;F970;dm=6BBA;na=CJK COMPATIBILITY IDEOGRAPH-F970;NFKC_CF=6BBA
-cp;F971;dm=8FB0;na=CJK COMPATIBILITY IDEOGRAPH-F971;NFKC_CF=8FB0
-cp;F972;dm=6C88;na=CJK COMPATIBILITY IDEOGRAPH-F972;NFKC_CF=6C88
-cp;F973;dm=62FE;na=CJK COMPATIBILITY IDEOGRAPH-F973;NFKC_CF=62FE;nt=Nu;nv=10
-cp;F974;dm=82E5;na=CJK COMPATIBILITY IDEOGRAPH-F974;NFKC_CF=82E5
-cp;F975;dm=63A0;na=CJK COMPATIBILITY IDEOGRAPH-F975;NFKC_CF=63A0
-cp;F976;dm=7565;na=CJK COMPATIBILITY IDEOGRAPH-F976;NFKC_CF=7565
-cp;F977;dm=4EAE;na=CJK COMPATIBILITY IDEOGRAPH-F977;NFKC_CF=4EAE
-cp;F978;dm=5169;na=CJK COMPATIBILITY IDEOGRAPH-F978;NFKC_CF=5169;nt=Nu;nv=2
-cp;F979;dm=51C9;na=CJK COMPATIBILITY IDEOGRAPH-F979;NFKC_CF=51C9
-cp;F97A;dm=6881;na=CJK COMPATIBILITY IDEOGRAPH-F97A;NFKC_CF=6881
-cp;F97B;dm=7CE7;na=CJK COMPATIBILITY IDEOGRAPH-F97B;NFKC_CF=7CE7
-cp;F97C;dm=826F;na=CJK COMPATIBILITY IDEOGRAPH-F97C;NFKC_CF=826F
-cp;F97D;dm=8AD2;na=CJK COMPATIBILITY IDEOGRAPH-F97D;NFKC_CF=8AD2
-cp;F97E;dm=91CF;na=CJK COMPATIBILITY IDEOGRAPH-F97E;NFKC_CF=91CF
-cp;F97F;dm=52F5;na=CJK COMPATIBILITY IDEOGRAPH-F97F;NFKC_CF=52F5
-cp;F980;dm=5442;na=CJK COMPATIBILITY IDEOGRAPH-F980;NFKC_CF=5442
-cp;F981;dm=5973;na=CJK COMPATIBILITY IDEOGRAPH-F981;NFKC_CF=5973
-cp;F982;dm=5EEC;na=CJK COMPATIBILITY IDEOGRAPH-F982;NFKC_CF=5EEC
-cp;F983;dm=65C5;na=CJK COMPATIBILITY IDEOGRAPH-F983;NFKC_CF=65C5
-cp;F984;dm=6FFE;na=CJK COMPATIBILITY IDEOGRAPH-F984;NFKC_CF=6FFE
-cp;F985;dm=792A;na=CJK COMPATIBILITY IDEOGRAPH-F985;NFKC_CF=792A
-cp;F986;dm=95AD;na=CJK COMPATIBILITY IDEOGRAPH-F986;NFKC_CF=95AD
-cp;F987;dm=9A6A;na=CJK COMPATIBILITY IDEOGRAPH-F987;NFKC_CF=9A6A
-cp;F988;dm=9E97;na=CJK COMPATIBILITY IDEOGRAPH-F988;NFKC_CF=9E97
-cp;F989;dm=9ECE;na=CJK COMPATIBILITY IDEOGRAPH-F989;NFKC_CF=9ECE
-cp;F98A;dm=529B;na=CJK COMPATIBILITY IDEOGRAPH-F98A;NFKC_CF=529B
-cp;F98B;dm=66C6;na=CJK COMPATIBILITY IDEOGRAPH-F98B;NFKC_CF=66C6
-cp;F98C;dm=6B77;na=CJK COMPATIBILITY IDEOGRAPH-F98C;NFKC_CF=6B77
-cp;F98D;dm=8F62;na=CJK COMPATIBILITY IDEOGRAPH-F98D;NFKC_CF=8F62
-cp;F98E;dm=5E74;na=CJK COMPATIBILITY IDEOGRAPH-F98E;NFKC_CF=5E74
-cp;F98F;dm=6190;na=CJK COMPATIBILITY IDEOGRAPH-F98F;NFKC_CF=6190
-cp;F990;dm=6200;na=CJK COMPATIBILITY IDEOGRAPH-F990;NFKC_CF=6200
-cp;F991;dm=649A;na=CJK COMPATIBILITY IDEOGRAPH-F991;NFKC_CF=649A
-cp;F992;dm=6F23;na=CJK COMPATIBILITY IDEOGRAPH-F992;NFKC_CF=6F23
-cp;F993;dm=7149;na=CJK COMPATIBILITY IDEOGRAPH-F993;NFKC_CF=7149
-cp;F994;dm=7489;na=CJK COMPATIBILITY IDEOGRAPH-F994;NFKC_CF=7489
-cp;F995;dm=79CA;na=CJK COMPATIBILITY IDEOGRAPH-F995;NFKC_CF=79CA
-cp;F996;dm=7DF4;na=CJK COMPATIBILITY IDEOGRAPH-F996;NFKC_CF=7DF4
-cp;F997;dm=806F;na=CJK COMPATIBILITY IDEOGRAPH-F997;NFKC_CF=806F
-cp;F998;dm=8F26;na=CJK COMPATIBILITY IDEOGRAPH-F998;NFKC_CF=8F26
-cp;F999;dm=84EE;na=CJK COMPATIBILITY IDEOGRAPH-F999;NFKC_CF=84EE
-cp;F99A;dm=9023;na=CJK COMPATIBILITY IDEOGRAPH-F99A;NFKC_CF=9023
-cp;F99B;dm=934A;na=CJK COMPATIBILITY IDEOGRAPH-F99B;NFKC_CF=934A
-cp;F99C;dm=5217;na=CJK COMPATIBILITY IDEOGRAPH-F99C;NFKC_CF=5217
-cp;F99D;dm=52A3;na=CJK COMPATIBILITY IDEOGRAPH-F99D;NFKC_CF=52A3
-cp;F99E;dm=54BD;na=CJK COMPATIBILITY IDEOGRAPH-F99E;NFKC_CF=54BD
-cp;F99F;dm=70C8;na=CJK COMPATIBILITY IDEOGRAPH-F99F;NFKC_CF=70C8
-cp;F9A0;dm=88C2;na=CJK COMPATIBILITY IDEOGRAPH-F9A0;NFKC_CF=88C2
-cp;F9A1;dm=8AAA;na=CJK COMPATIBILITY IDEOGRAPH-F9A1;NFKC_CF=8AAA
-cp;F9A2;dm=5EC9;na=CJK COMPATIBILITY IDEOGRAPH-F9A2;NFKC_CF=5EC9
-cp;F9A3;dm=5FF5;na=CJK COMPATIBILITY IDEOGRAPH-F9A3;NFKC_CF=5FF5
-cp;F9A4;dm=637B;na=CJK COMPATIBILITY IDEOGRAPH-F9A4;NFKC_CF=637B
-cp;F9A5;dm=6BAE;na=CJK COMPATIBILITY IDEOGRAPH-F9A5;NFKC_CF=6BAE
-cp;F9A6;dm=7C3E;na=CJK COMPATIBILITY IDEOGRAPH-F9A6;NFKC_CF=7C3E
-cp;F9A7;dm=7375;na=CJK COMPATIBILITY IDEOGRAPH-F9A7;NFKC_CF=7375
-cp;F9A8;dm=4EE4;na=CJK COMPATIBILITY IDEOGRAPH-F9A8;NFKC_CF=4EE4
-cp;F9A9;dm=56F9;na=CJK COMPATIBILITY IDEOGRAPH-F9A9;NFKC_CF=56F9
-cp;F9AA;dm=5BE7;na=CJK COMPATIBILITY IDEOGRAPH-F9AA;NFKC_CF=5BE7
-cp;F9AB;dm=5DBA;na=CJK COMPATIBILITY IDEOGRAPH-F9AB;NFKC_CF=5DBA
-cp;F9AC;dm=601C;na=CJK COMPATIBILITY IDEOGRAPH-F9AC;NFKC_CF=601C
-cp;F9AD;dm=73B2;na=CJK COMPATIBILITY IDEOGRAPH-F9AD;NFKC_CF=73B2
-cp;F9AE;dm=7469;na=CJK COMPATIBILITY IDEOGRAPH-F9AE;NFKC_CF=7469
-cp;F9AF;dm=7F9A;na=CJK COMPATIBILITY IDEOGRAPH-F9AF;NFKC_CF=7F9A
-cp;F9B0;dm=8046;na=CJK COMPATIBILITY IDEOGRAPH-F9B0;NFKC_CF=8046
-cp;F9B1;dm=9234;na=CJK COMPATIBILITY IDEOGRAPH-F9B1;NFKC_CF=9234
-cp;F9B2;dm=96F6;na=CJK COMPATIBILITY IDEOGRAPH-F9B2;NFKC_CF=96F6;nt=Nu;nv=0
-cp;F9B3;dm=9748;na=CJK COMPATIBILITY IDEOGRAPH-F9B3;NFKC_CF=9748
-cp;F9B4;dm=9818;na=CJK COMPATIBILITY IDEOGRAPH-F9B4;NFKC_CF=9818
-cp;F9B5;dm=4F8B;na=CJK COMPATIBILITY IDEOGRAPH-F9B5;NFKC_CF=4F8B
-cp;F9B6;dm=79AE;na=CJK COMPATIBILITY IDEOGRAPH-F9B6;NFKC_CF=79AE
-cp;F9B7;dm=91B4;na=CJK COMPATIBILITY IDEOGRAPH-F9B7;NFKC_CF=91B4
-cp;F9B8;dm=96B8;na=CJK COMPATIBILITY IDEOGRAPH-F9B8;NFKC_CF=96B8
-cp;F9B9;dm=60E1;na=CJK COMPATIBILITY IDEOGRAPH-F9B9;NFKC_CF=60E1
-cp;F9BA;dm=4E86;na=CJK COMPATIBILITY IDEOGRAPH-F9BA;NFKC_CF=4E86
-cp;F9BB;dm=50DA;na=CJK COMPATIBILITY IDEOGRAPH-F9BB;NFKC_CF=50DA
-cp;F9BC;dm=5BEE;na=CJK COMPATIBILITY IDEOGRAPH-F9BC;NFKC_CF=5BEE
-cp;F9BD;dm=5C3F;na=CJK COMPATIBILITY IDEOGRAPH-F9BD;NFKC_CF=5C3F
-cp;F9BE;dm=6599;na=CJK COMPATIBILITY IDEOGRAPH-F9BE;NFKC_CF=6599
-cp;F9BF;dm=6A02;na=CJK COMPATIBILITY IDEOGRAPH-F9BF;NFKC_CF=6A02
-cp;F9C0;dm=71CE;na=CJK COMPATIBILITY IDEOGRAPH-F9C0;NFKC_CF=71CE
-cp;F9C1;dm=7642;na=CJK COMPATIBILITY IDEOGRAPH-F9C1;NFKC_CF=7642
-cp;F9C2;dm=84FC;na=CJK COMPATIBILITY IDEOGRAPH-F9C2;NFKC_CF=84FC
-cp;F9C3;dm=907C;na=CJK COMPATIBILITY IDEOGRAPH-F9C3;NFKC_CF=907C
-cp;F9C4;dm=9F8D;na=CJK COMPATIBILITY IDEOGRAPH-F9C4;NFKC_CF=9F8D
-cp;F9C5;dm=6688;na=CJK COMPATIBILITY IDEOGRAPH-F9C5;NFKC_CF=6688
-cp;F9C6;dm=962E;na=CJK COMPATIBILITY IDEOGRAPH-F9C6;NFKC_CF=962E
-cp;F9C7;dm=5289;na=CJK COMPATIBILITY IDEOGRAPH-F9C7;NFKC_CF=5289
-cp;F9C8;dm=677B;na=CJK COMPATIBILITY IDEOGRAPH-F9C8;NFKC_CF=677B
-cp;F9C9;dm=67F3;na=CJK COMPATIBILITY IDEOGRAPH-F9C9;NFKC_CF=67F3
-cp;F9CA;dm=6D41;na=CJK COMPATIBILITY IDEOGRAPH-F9CA;NFKC_CF=6D41
-cp;F9CB;dm=6E9C;na=CJK COMPATIBILITY IDEOGRAPH-F9CB;NFKC_CF=6E9C
-cp;F9CC;dm=7409;na=CJK COMPATIBILITY IDEOGRAPH-F9CC;NFKC_CF=7409
-cp;F9CD;dm=7559;na=CJK COMPATIBILITY IDEOGRAPH-F9CD;NFKC_CF=7559
-cp;F9CE;dm=786B;na=CJK COMPATIBILITY IDEOGRAPH-F9CE;NFKC_CF=786B
-cp;F9CF;dm=7D10;na=CJK COMPATIBILITY IDEOGRAPH-F9CF;NFKC_CF=7D10
-cp;F9D0;dm=985E;na=CJK COMPATIBILITY IDEOGRAPH-F9D0;NFKC_CF=985E
-cp;F9D1;dm=516D;na=CJK COMPATIBILITY IDEOGRAPH-F9D1;NFKC_CF=516D;nt=Nu;nv=6
-cp;F9D2;dm=622E;na=CJK COMPATIBILITY IDEOGRAPH-F9D2;NFKC_CF=622E
-cp;F9D3;dm=9678;na=CJK COMPATIBILITY IDEOGRAPH-F9D3;NFKC_CF=9678;nt=Nu;nv=6
-cp;F9D4;dm=502B;na=CJK COMPATIBILITY IDEOGRAPH-F9D4;NFKC_CF=502B
-cp;F9D5;dm=5D19;na=CJK COMPATIBILITY IDEOGRAPH-F9D5;NFKC_CF=5D19
-cp;F9D6;dm=6DEA;na=CJK COMPATIBILITY IDEOGRAPH-F9D6;NFKC_CF=6DEA
-cp;F9D7;dm=8F2A;na=CJK COMPATIBILITY IDEOGRAPH-F9D7;NFKC_CF=8F2A
-cp;F9D8;dm=5F8B;na=CJK COMPATIBILITY IDEOGRAPH-F9D8;NFKC_CF=5F8B
-cp;F9D9;dm=6144;na=CJK COMPATIBILITY IDEOGRAPH-F9D9;NFKC_CF=6144
-cp;F9DA;dm=6817;na=CJK COMPATIBILITY IDEOGRAPH-F9DA;NFKC_CF=6817
-cp;F9DB;dm=7387;na=CJK COMPATIBILITY IDEOGRAPH-F9DB;NFKC_CF=7387
-cp;F9DC;dm=9686;na=CJK COMPATIBILITY IDEOGRAPH-F9DC;NFKC_CF=9686
-cp;F9DD;dm=5229;na=CJK COMPATIBILITY IDEOGRAPH-F9DD;NFKC_CF=5229
-cp;F9DE;dm=540F;na=CJK COMPATIBILITY IDEOGRAPH-F9DE;NFKC_CF=540F
-cp;F9DF;dm=5C65;na=CJK COMPATIBILITY IDEOGRAPH-F9DF;NFKC_CF=5C65
-cp;F9E0;dm=6613;na=CJK COMPATIBILITY IDEOGRAPH-F9E0;NFKC_CF=6613
-cp;F9E1;dm=674E;na=CJK COMPATIBILITY IDEOGRAPH-F9E1;NFKC_CF=674E
-cp;F9E2;dm=68A8;na=CJK COMPATIBILITY IDEOGRAPH-F9E2;NFKC_CF=68A8
-cp;F9E3;dm=6CE5;na=CJK COMPATIBILITY IDEOGRAPH-F9E3;NFKC_CF=6CE5
-cp;F9E4;dm=7406;na=CJK COMPATIBILITY IDEOGRAPH-F9E4;NFKC_CF=7406
-cp;F9E5;dm=75E2;na=CJK COMPATIBILITY IDEOGRAPH-F9E5;NFKC_CF=75E2
-cp;F9E6;dm=7F79;na=CJK COMPATIBILITY IDEOGRAPH-F9E6;NFKC_CF=7F79
-cp;F9E7;dm=88CF;na=CJK COMPATIBILITY IDEOGRAPH-F9E7;NFKC_CF=88CF
-cp;F9E8;dm=88E1;na=CJK COMPATIBILITY IDEOGRAPH-F9E8;NFKC_CF=88E1
-cp;F9E9;dm=91CC;na=CJK COMPATIBILITY IDEOGRAPH-F9E9;NFKC_CF=91CC
-cp;F9EA;dm=96E2;na=CJK COMPATIBILITY IDEOGRAPH-F9EA;NFKC_CF=96E2
-cp;F9EB;dm=533F;na=CJK COMPATIBILITY IDEOGRAPH-F9EB;NFKC_CF=533F
-cp;F9EC;dm=6EBA;na=CJK COMPATIBILITY IDEOGRAPH-F9EC;NFKC_CF=6EBA
-cp;F9ED;dm=541D;na=CJK COMPATIBILITY IDEOGRAPH-F9ED;NFKC_CF=541D
-cp;F9EE;dm=71D0;na=CJK COMPATIBILITY IDEOGRAPH-F9EE;NFKC_CF=71D0
-cp;F9EF;dm=7498;na=CJK COMPATIBILITY IDEOGRAPH-F9EF;NFKC_CF=7498
-cp;F9F0;dm=85FA;na=CJK COMPATIBILITY IDEOGRAPH-F9F0;NFKC_CF=85FA
-cp;F9F1;dm=96A3;na=CJK COMPATIBILITY IDEOGRAPH-F9F1;NFKC_CF=96A3
-cp;F9F2;dm=9C57;na=CJK COMPATIBILITY IDEOGRAPH-F9F2;NFKC_CF=9C57
-cp;F9F3;dm=9E9F;na=CJK COMPATIBILITY IDEOGRAPH-F9F3;NFKC_CF=9E9F
-cp;F9F4;dm=6797;na=CJK COMPATIBILITY IDEOGRAPH-F9F4;NFKC_CF=6797
-cp;F9F5;dm=6DCB;na=CJK COMPATIBILITY IDEOGRAPH-F9F5;NFKC_CF=6DCB
-cp;F9F6;dm=81E8;na=CJK COMPATIBILITY IDEOGRAPH-F9F6;NFKC_CF=81E8
-cp;F9F7;dm=7ACB;na=CJK COMPATIBILITY IDEOGRAPH-F9F7;NFKC_CF=7ACB
-cp;F9F8;dm=7B20;na=CJK COMPATIBILITY IDEOGRAPH-F9F8;NFKC_CF=7B20
-cp;F9F9;dm=7C92;na=CJK COMPATIBILITY IDEOGRAPH-F9F9;NFKC_CF=7C92
-cp;F9FA;dm=72C0;na=CJK COMPATIBILITY IDEOGRAPH-F9FA;NFKC_CF=72C0
-cp;F9FB;dm=7099;na=CJK COMPATIBILITY IDEOGRAPH-F9FB;NFKC_CF=7099
-cp;F9FC;dm=8B58;na=CJK COMPATIBILITY IDEOGRAPH-F9FC;NFKC_CF=8B58
-cp;F9FD;dm=4EC0;na=CJK COMPATIBILITY IDEOGRAPH-F9FD;NFKC_CF=4EC0;nt=Nu;nv=10
-cp;F9FE;dm=8336;na=CJK COMPATIBILITY IDEOGRAPH-F9FE;NFKC_CF=8336
-cp;F9FF;dm=523A;na=CJK COMPATIBILITY IDEOGRAPH-F9FF;NFKC_CF=523A
-cp;FA00;dm=5207;na=CJK COMPATIBILITY IDEOGRAPH-FA00;NFKC_CF=5207
-cp;FA01;dm=5EA6;na=CJK COMPATIBILITY IDEOGRAPH-FA01;NFKC_CF=5EA6
-cp;FA02;dm=62D3;na=CJK COMPATIBILITY IDEOGRAPH-FA02;NFKC_CF=62D3
-cp;FA03;dm=7CD6;na=CJK COMPATIBILITY IDEOGRAPH-FA03;NFKC_CF=7CD6
-cp;FA04;dm=5B85;na=CJK COMPATIBILITY IDEOGRAPH-FA04;NFKC_CF=5B85
-cp;FA05;dm=6D1E;na=CJK COMPATIBILITY IDEOGRAPH-FA05;NFKC_CF=6D1E
-cp;FA06;dm=66B4;na=CJK COMPATIBILITY IDEOGRAPH-FA06;NFKC_CF=66B4
-cp;FA07;dm=8F3B;na=CJK COMPATIBILITY IDEOGRAPH-FA07;NFKC_CF=8F3B
-cp;FA08;dm=884C;na=CJK COMPATIBILITY IDEOGRAPH-FA08;NFKC_CF=884C
-cp;FA09;dm=964D;na=CJK COMPATIBILITY IDEOGRAPH-FA09;NFKC_CF=964D
-cp;FA0A;dm=898B;na=CJK COMPATIBILITY IDEOGRAPH-FA0A;NFKC_CF=898B
-cp;FA0B;dm=5ED3;na=CJK COMPATIBILITY IDEOGRAPH-FA0B;NFKC_CF=5ED3
+cp;F900;dm=8C48;na=CJK COMPATIBILITY IDEOGRAPH-F900;NFKC_CF=8C48;NFKC_SCF=8C48
+cp;F901;dm=66F4;na=CJK COMPATIBILITY IDEOGRAPH-F901;NFKC_CF=66F4;NFKC_SCF=66F4
+cp;F902;dm=8ECA;na=CJK COMPATIBILITY IDEOGRAPH-F902;NFKC_CF=8ECA;NFKC_SCF=8ECA
+cp;F903;dm=8CC8;na=CJK COMPATIBILITY IDEOGRAPH-F903;NFKC_CF=8CC8;NFKC_SCF=8CC8
+cp;F904;dm=6ED1;na=CJK COMPATIBILITY IDEOGRAPH-F904;NFKC_CF=6ED1;NFKC_SCF=6ED1
+cp;F905;dm=4E32;na=CJK COMPATIBILITY IDEOGRAPH-F905;NFKC_CF=4E32;NFKC_SCF=4E32
+cp;F906;dm=53E5;na=CJK COMPATIBILITY IDEOGRAPH-F906;NFKC_CF=53E5;NFKC_SCF=53E5
+cp;F907;dm=9F9C;na=CJK COMPATIBILITY IDEOGRAPH-F907;NFKC_CF=9F9C;NFKC_SCF=9F9C
+cp;F908;dm=9F9C;na=CJK COMPATIBILITY IDEOGRAPH-F908;NFKC_CF=9F9C;NFKC_SCF=9F9C
+cp;F909;dm=5951;na=CJK COMPATIBILITY IDEOGRAPH-F909;NFKC_CF=5951;NFKC_SCF=5951
+cp;F90A;dm=91D1;na=CJK COMPATIBILITY IDEOGRAPH-F90A;NFKC_CF=91D1;NFKC_SCF=91D1
+cp;F90B;dm=5587;na=CJK COMPATIBILITY IDEOGRAPH-F90B;NFKC_CF=5587;NFKC_SCF=5587
+cp;F90C;dm=5948;na=CJK COMPATIBILITY IDEOGRAPH-F90C;NFKC_CF=5948;NFKC_SCF=5948
+cp;F90D;dm=61F6;na=CJK COMPATIBILITY IDEOGRAPH-F90D;NFKC_CF=61F6;NFKC_SCF=61F6
+cp;F90E;dm=7669;na=CJK COMPATIBILITY IDEOGRAPH-F90E;NFKC_CF=7669;NFKC_SCF=7669
+cp;F90F;dm=7F85;na=CJK COMPATIBILITY IDEOGRAPH-F90F;NFKC_CF=7F85;NFKC_SCF=7F85
+cp;F910;dm=863F;na=CJK COMPATIBILITY IDEOGRAPH-F910;NFKC_CF=863F;NFKC_SCF=863F
+cp;F911;dm=87BA;na=CJK COMPATIBILITY IDEOGRAPH-F911;NFKC_CF=87BA;NFKC_SCF=87BA
+cp;F912;dm=88F8;na=CJK COMPATIBILITY IDEOGRAPH-F912;NFKC_CF=88F8;NFKC_SCF=88F8
+cp;F913;dm=908F;na=CJK COMPATIBILITY IDEOGRAPH-F913;NFKC_CF=908F;NFKC_SCF=908F
+cp;F914;dm=6A02;na=CJK COMPATIBILITY IDEOGRAPH-F914;NFKC_CF=6A02;NFKC_SCF=6A02
+cp;F915;dm=6D1B;na=CJK COMPATIBILITY IDEOGRAPH-F915;NFKC_CF=6D1B;NFKC_SCF=6D1B
+cp;F916;dm=70D9;na=CJK COMPATIBILITY IDEOGRAPH-F916;NFKC_CF=70D9;NFKC_SCF=70D9
+cp;F917;dm=73DE;na=CJK COMPATIBILITY IDEOGRAPH-F917;NFKC_CF=73DE;NFKC_SCF=73DE
+cp;F918;dm=843D;na=CJK COMPATIBILITY IDEOGRAPH-F918;NFKC_CF=843D;NFKC_SCF=843D
+cp;F919;dm=916A;na=CJK COMPATIBILITY IDEOGRAPH-F919;NFKC_CF=916A;NFKC_SCF=916A
+cp;F91A;dm=99F1;na=CJK COMPATIBILITY IDEOGRAPH-F91A;NFKC_CF=99F1;NFKC_SCF=99F1
+cp;F91B;dm=4E82;na=CJK COMPATIBILITY IDEOGRAPH-F91B;NFKC_CF=4E82;NFKC_SCF=4E82
+cp;F91C;dm=5375;na=CJK COMPATIBILITY IDEOGRAPH-F91C;NFKC_CF=5375;NFKC_SCF=5375
+cp;F91D;dm=6B04;na=CJK COMPATIBILITY IDEOGRAPH-F91D;NFKC_CF=6B04;NFKC_SCF=6B04
+cp;F91E;dm=721B;na=CJK COMPATIBILITY IDEOGRAPH-F91E;NFKC_CF=721B;NFKC_SCF=721B
+cp;F91F;dm=862D;na=CJK COMPATIBILITY IDEOGRAPH-F91F;NFKC_CF=862D;NFKC_SCF=862D
+cp;F920;dm=9E1E;na=CJK COMPATIBILITY IDEOGRAPH-F920;NFKC_CF=9E1E;NFKC_SCF=9E1E
+cp;F921;dm=5D50;na=CJK COMPATIBILITY IDEOGRAPH-F921;NFKC_CF=5D50;NFKC_SCF=5D50
+cp;F922;dm=6FEB;na=CJK COMPATIBILITY IDEOGRAPH-F922;NFKC_CF=6FEB;NFKC_SCF=6FEB
+cp;F923;dm=85CD;na=CJK COMPATIBILITY IDEOGRAPH-F923;NFKC_CF=85CD;NFKC_SCF=85CD
+cp;F924;dm=8964;na=CJK COMPATIBILITY IDEOGRAPH-F924;NFKC_CF=8964;NFKC_SCF=8964
+cp;F925;dm=62C9;na=CJK COMPATIBILITY IDEOGRAPH-F925;NFKC_CF=62C9;NFKC_SCF=62C9
+cp;F926;dm=81D8;na=CJK COMPATIBILITY IDEOGRAPH-F926;NFKC_CF=81D8;NFKC_SCF=81D8
+cp;F927;dm=881F;na=CJK COMPATIBILITY IDEOGRAPH-F927;NFKC_CF=881F;NFKC_SCF=881F
+cp;F928;dm=5ECA;na=CJK COMPATIBILITY IDEOGRAPH-F928;NFKC_CF=5ECA;NFKC_SCF=5ECA
+cp;F929;dm=6717;na=CJK COMPATIBILITY IDEOGRAPH-F929;NFKC_CF=6717;NFKC_SCF=6717
+cp;F92A;dm=6D6A;na=CJK COMPATIBILITY IDEOGRAPH-F92A;NFKC_CF=6D6A;NFKC_SCF=6D6A
+cp;F92B;dm=72FC;na=CJK COMPATIBILITY IDEOGRAPH-F92B;NFKC_CF=72FC;NFKC_SCF=72FC
+cp;F92C;dm=90CE;na=CJK COMPATIBILITY IDEOGRAPH-F92C;NFKC_CF=90CE;NFKC_SCF=90CE
+cp;F92D;dm=4F86;na=CJK COMPATIBILITY IDEOGRAPH-F92D;NFKC_CF=4F86;NFKC_SCF=4F86
+cp;F92E;dm=51B7;na=CJK COMPATIBILITY IDEOGRAPH-F92E;NFKC_CF=51B7;NFKC_SCF=51B7
+cp;F92F;dm=52DE;na=CJK COMPATIBILITY IDEOGRAPH-F92F;NFKC_CF=52DE;NFKC_SCF=52DE
+cp;F930;dm=64C4;na=CJK COMPATIBILITY IDEOGRAPH-F930;NFKC_CF=64C4;NFKC_SCF=64C4
+cp;F931;dm=6AD3;na=CJK COMPATIBILITY IDEOGRAPH-F931;NFKC_CF=6AD3;NFKC_SCF=6AD3
+cp;F932;dm=7210;na=CJK COMPATIBILITY IDEOGRAPH-F932;NFKC_CF=7210;NFKC_SCF=7210
+cp;F933;dm=76E7;na=CJK COMPATIBILITY IDEOGRAPH-F933;NFKC_CF=76E7;NFKC_SCF=76E7
+cp;F934;dm=8001;na=CJK COMPATIBILITY IDEOGRAPH-F934;NFKC_CF=8001;NFKC_SCF=8001
+cp;F935;dm=8606;na=CJK COMPATIBILITY IDEOGRAPH-F935;NFKC_CF=8606;NFKC_SCF=8606
+cp;F936;dm=865C;na=CJK COMPATIBILITY IDEOGRAPH-F936;NFKC_CF=865C;NFKC_SCF=865C
+cp;F937;dm=8DEF;na=CJK COMPATIBILITY IDEOGRAPH-F937;NFKC_CF=8DEF;NFKC_SCF=8DEF
+cp;F938;dm=9732;na=CJK COMPATIBILITY IDEOGRAPH-F938;NFKC_CF=9732;NFKC_SCF=9732
+cp;F939;dm=9B6F;na=CJK COMPATIBILITY IDEOGRAPH-F939;NFKC_CF=9B6F;NFKC_SCF=9B6F
+cp;F93A;dm=9DFA;na=CJK COMPATIBILITY IDEOGRAPH-F93A;NFKC_CF=9DFA;NFKC_SCF=9DFA
+cp;F93B;dm=788C;na=CJK COMPATIBILITY IDEOGRAPH-F93B;NFKC_CF=788C;NFKC_SCF=788C
+cp;F93C;dm=797F;na=CJK COMPATIBILITY IDEOGRAPH-F93C;NFKC_CF=797F;NFKC_SCF=797F
+cp;F93D;dm=7DA0;na=CJK COMPATIBILITY IDEOGRAPH-F93D;NFKC_CF=7DA0;NFKC_SCF=7DA0
+cp;F93E;dm=83C9;na=CJK COMPATIBILITY IDEOGRAPH-F93E;NFKC_CF=83C9;NFKC_SCF=83C9
+cp;F93F;dm=9304;na=CJK COMPATIBILITY IDEOGRAPH-F93F;NFKC_CF=9304;NFKC_SCF=9304
+cp;F940;dm=9E7F;na=CJK COMPATIBILITY IDEOGRAPH-F940;NFKC_CF=9E7F;NFKC_SCF=9E7F
+cp;F941;dm=8AD6;na=CJK COMPATIBILITY IDEOGRAPH-F941;NFKC_CF=8AD6;NFKC_SCF=8AD6
+cp;F942;dm=58DF;na=CJK COMPATIBILITY IDEOGRAPH-F942;NFKC_CF=58DF;NFKC_SCF=58DF
+cp;F943;dm=5F04;na=CJK COMPATIBILITY IDEOGRAPH-F943;NFKC_CF=5F04;NFKC_SCF=5F04
+cp;F944;dm=7C60;na=CJK COMPATIBILITY IDEOGRAPH-F944;NFKC_CF=7C60;NFKC_SCF=7C60
+cp;F945;dm=807E;na=CJK COMPATIBILITY IDEOGRAPH-F945;NFKC_CF=807E;NFKC_SCF=807E
+cp;F946;dm=7262;na=CJK COMPATIBILITY IDEOGRAPH-F946;NFKC_CF=7262;NFKC_SCF=7262
+cp;F947;dm=78CA;na=CJK COMPATIBILITY IDEOGRAPH-F947;NFKC_CF=78CA;NFKC_SCF=78CA
+cp;F948;dm=8CC2;na=CJK COMPATIBILITY IDEOGRAPH-F948;NFKC_CF=8CC2;NFKC_SCF=8CC2
+cp;F949;dm=96F7;na=CJK COMPATIBILITY IDEOGRAPH-F949;NFKC_CF=96F7;NFKC_SCF=96F7
+cp;F94A;dm=58D8;na=CJK COMPATIBILITY IDEOGRAPH-F94A;NFKC_CF=58D8;NFKC_SCF=58D8
+cp;F94B;dm=5C62;na=CJK COMPATIBILITY IDEOGRAPH-F94B;NFKC_CF=5C62;NFKC_SCF=5C62
+cp;F94C;dm=6A13;na=CJK COMPATIBILITY IDEOGRAPH-F94C;NFKC_CF=6A13;NFKC_SCF=6A13
+cp;F94D;dm=6DDA;na=CJK COMPATIBILITY IDEOGRAPH-F94D;NFKC_CF=6DDA;NFKC_SCF=6DDA
+cp;F94E;dm=6F0F;na=CJK COMPATIBILITY IDEOGRAPH-F94E;NFKC_CF=6F0F;NFKC_SCF=6F0F
+cp;F94F;dm=7D2F;na=CJK COMPATIBILITY IDEOGRAPH-F94F;NFKC_CF=7D2F;NFKC_SCF=7D2F
+cp;F950;dm=7E37;na=CJK COMPATIBILITY IDEOGRAPH-F950;NFKC_CF=7E37;NFKC_SCF=7E37
+cp;F951;dm=964B;na=CJK COMPATIBILITY IDEOGRAPH-F951;NFKC_CF=964B;NFKC_SCF=964B
+cp;F952;dm=52D2;na=CJK COMPATIBILITY IDEOGRAPH-F952;NFKC_CF=52D2;NFKC_SCF=52D2
+cp;F953;dm=808B;na=CJK COMPATIBILITY IDEOGRAPH-F953;NFKC_CF=808B;NFKC_SCF=808B
+cp;F954;dm=51DC;na=CJK COMPATIBILITY IDEOGRAPH-F954;NFKC_CF=51DC;NFKC_SCF=51DC
+cp;F955;dm=51CC;na=CJK COMPATIBILITY IDEOGRAPH-F955;NFKC_CF=51CC;NFKC_SCF=51CC
+cp;F956;dm=7A1C;na=CJK COMPATIBILITY IDEOGRAPH-F956;NFKC_CF=7A1C;NFKC_SCF=7A1C
+cp;F957;dm=7DBE;na=CJK COMPATIBILITY IDEOGRAPH-F957;NFKC_CF=7DBE;NFKC_SCF=7DBE
+cp;F958;dm=83F1;na=CJK COMPATIBILITY IDEOGRAPH-F958;NFKC_CF=83F1;NFKC_SCF=83F1
+cp;F959;dm=9675;na=CJK COMPATIBILITY IDEOGRAPH-F959;NFKC_CF=9675;NFKC_SCF=9675
+cp;F95A;dm=8B80;na=CJK COMPATIBILITY IDEOGRAPH-F95A;NFKC_CF=8B80;NFKC_SCF=8B80
+cp;F95B;dm=62CF;na=CJK COMPATIBILITY IDEOGRAPH-F95B;NFKC_CF=62CF;NFKC_SCF=62CF
+cp;F95C;dm=6A02;na=CJK COMPATIBILITY IDEOGRAPH-F95C;NFKC_CF=6A02;NFKC_SCF=6A02
+cp;F95D;dm=8AFE;na=CJK COMPATIBILITY IDEOGRAPH-F95D;NFKC_CF=8AFE;NFKC_SCF=8AFE
+cp;F95E;dm=4E39;na=CJK COMPATIBILITY IDEOGRAPH-F95E;NFKC_CF=4E39;NFKC_SCF=4E39
+cp;F95F;dm=5BE7;na=CJK COMPATIBILITY IDEOGRAPH-F95F;NFKC_CF=5BE7;NFKC_SCF=5BE7
+cp;F960;dm=6012;na=CJK COMPATIBILITY IDEOGRAPH-F960;NFKC_CF=6012;NFKC_SCF=6012
+cp;F961;dm=7387;na=CJK COMPATIBILITY IDEOGRAPH-F961;NFKC_CF=7387;NFKC_SCF=7387
+cp;F962;dm=7570;na=CJK COMPATIBILITY IDEOGRAPH-F962;NFKC_CF=7570;NFKC_SCF=7570
+cp;F963;dm=5317;na=CJK COMPATIBILITY IDEOGRAPH-F963;NFKC_CF=5317;NFKC_SCF=5317
+cp;F964;dm=78FB;na=CJK COMPATIBILITY IDEOGRAPH-F964;NFKC_CF=78FB;NFKC_SCF=78FB
+cp;F965;dm=4FBF;na=CJK COMPATIBILITY IDEOGRAPH-F965;NFKC_CF=4FBF;NFKC_SCF=4FBF
+cp;F966;dm=5FA9;na=CJK COMPATIBILITY IDEOGRAPH-F966;NFKC_CF=5FA9;NFKC_SCF=5FA9
+cp;F967;dm=4E0D;na=CJK COMPATIBILITY IDEOGRAPH-F967;NFKC_CF=4E0D;NFKC_SCF=4E0D
+cp;F968;dm=6CCC;na=CJK COMPATIBILITY IDEOGRAPH-F968;NFKC_CF=6CCC;NFKC_SCF=6CCC
+cp;F969;dm=6578;na=CJK COMPATIBILITY IDEOGRAPH-F969;NFKC_CF=6578;NFKC_SCF=6578
+cp;F96A;dm=7D22;na=CJK COMPATIBILITY IDEOGRAPH-F96A;NFKC_CF=7D22;NFKC_SCF=7D22
+cp;F96B;dm=53C3;na=CJK COMPATIBILITY IDEOGRAPH-F96B;NFKC_CF=53C3;NFKC_SCF=53C3;nt=Nu;nv=3
+cp;F96C;dm=585E;na=CJK COMPATIBILITY IDEOGRAPH-F96C;NFKC_CF=585E;NFKC_SCF=585E
+cp;F96D;dm=7701;na=CJK COMPATIBILITY IDEOGRAPH-F96D;NFKC_CF=7701;NFKC_SCF=7701
+cp;F96E;dm=8449;na=CJK COMPATIBILITY IDEOGRAPH-F96E;NFKC_CF=8449;NFKC_SCF=8449
+cp;F96F;dm=8AAA;na=CJK COMPATIBILITY IDEOGRAPH-F96F;NFKC_CF=8AAA;NFKC_SCF=8AAA
+cp;F970;dm=6BBA;na=CJK COMPATIBILITY IDEOGRAPH-F970;NFKC_CF=6BBA;NFKC_SCF=6BBA
+cp;F971;dm=8FB0;na=CJK COMPATIBILITY IDEOGRAPH-F971;NFKC_CF=8FB0;NFKC_SCF=8FB0
+cp;F972;dm=6C88;na=CJK COMPATIBILITY IDEOGRAPH-F972;NFKC_CF=6C88;NFKC_SCF=6C88
+cp;F973;dm=62FE;na=CJK COMPATIBILITY IDEOGRAPH-F973;NFKC_CF=62FE;NFKC_SCF=62FE;nt=Nu;nv=10
+cp;F974;dm=82E5;na=CJK COMPATIBILITY IDEOGRAPH-F974;NFKC_CF=82E5;NFKC_SCF=82E5
+cp;F975;dm=63A0;na=CJK COMPATIBILITY IDEOGRAPH-F975;NFKC_CF=63A0;NFKC_SCF=63A0
+cp;F976;dm=7565;na=CJK COMPATIBILITY IDEOGRAPH-F976;NFKC_CF=7565;NFKC_SCF=7565
+cp;F977;dm=4EAE;na=CJK COMPATIBILITY IDEOGRAPH-F977;NFKC_CF=4EAE;NFKC_SCF=4EAE
+cp;F978;dm=5169;na=CJK COMPATIBILITY IDEOGRAPH-F978;NFKC_CF=5169;NFKC_SCF=5169;nt=Nu;nv=2
+cp;F979;dm=51C9;na=CJK COMPATIBILITY IDEOGRAPH-F979;NFKC_CF=51C9;NFKC_SCF=51C9
+cp;F97A;dm=6881;na=CJK COMPATIBILITY IDEOGRAPH-F97A;NFKC_CF=6881;NFKC_SCF=6881
+cp;F97B;dm=7CE7;na=CJK COMPATIBILITY IDEOGRAPH-F97B;NFKC_CF=7CE7;NFKC_SCF=7CE7
+cp;F97C;dm=826F;na=CJK COMPATIBILITY IDEOGRAPH-F97C;NFKC_CF=826F;NFKC_SCF=826F
+cp;F97D;dm=8AD2;na=CJK COMPATIBILITY IDEOGRAPH-F97D;NFKC_CF=8AD2;NFKC_SCF=8AD2
+cp;F97E;dm=91CF;na=CJK COMPATIBILITY IDEOGRAPH-F97E;NFKC_CF=91CF;NFKC_SCF=91CF
+cp;F97F;dm=52F5;na=CJK COMPATIBILITY IDEOGRAPH-F97F;NFKC_CF=52F5;NFKC_SCF=52F5
+cp;F980;dm=5442;na=CJK COMPATIBILITY IDEOGRAPH-F980;NFKC_CF=5442;NFKC_SCF=5442
+cp;F981;dm=5973;na=CJK COMPATIBILITY IDEOGRAPH-F981;NFKC_CF=5973;NFKC_SCF=5973
+cp;F982;dm=5EEC;na=CJK COMPATIBILITY IDEOGRAPH-F982;NFKC_CF=5EEC;NFKC_SCF=5EEC
+cp;F983;dm=65C5;na=CJK COMPATIBILITY IDEOGRAPH-F983;NFKC_CF=65C5;NFKC_SCF=65C5
+cp;F984;dm=6FFE;na=CJK COMPATIBILITY IDEOGRAPH-F984;NFKC_CF=6FFE;NFKC_SCF=6FFE
+cp;F985;dm=792A;na=CJK COMPATIBILITY IDEOGRAPH-F985;NFKC_CF=792A;NFKC_SCF=792A
+cp;F986;dm=95AD;na=CJK COMPATIBILITY IDEOGRAPH-F986;NFKC_CF=95AD;NFKC_SCF=95AD
+cp;F987;dm=9A6A;na=CJK COMPATIBILITY IDEOGRAPH-F987;NFKC_CF=9A6A;NFKC_SCF=9A6A
+cp;F988;dm=9E97;na=CJK COMPATIBILITY IDEOGRAPH-F988;NFKC_CF=9E97;NFKC_SCF=9E97
+cp;F989;dm=9ECE;na=CJK COMPATIBILITY IDEOGRAPH-F989;NFKC_CF=9ECE;NFKC_SCF=9ECE
+cp;F98A;dm=529B;na=CJK COMPATIBILITY IDEOGRAPH-F98A;NFKC_CF=529B;NFKC_SCF=529B
+cp;F98B;dm=66C6;na=CJK COMPATIBILITY IDEOGRAPH-F98B;NFKC_CF=66C6;NFKC_SCF=66C6
+cp;F98C;dm=6B77;na=CJK COMPATIBILITY IDEOGRAPH-F98C;NFKC_CF=6B77;NFKC_SCF=6B77
+cp;F98D;dm=8F62;na=CJK COMPATIBILITY IDEOGRAPH-F98D;NFKC_CF=8F62;NFKC_SCF=8F62
+cp;F98E;dm=5E74;na=CJK COMPATIBILITY IDEOGRAPH-F98E;NFKC_CF=5E74;NFKC_SCF=5E74
+cp;F98F;dm=6190;na=CJK COMPATIBILITY IDEOGRAPH-F98F;NFKC_CF=6190;NFKC_SCF=6190
+cp;F990;dm=6200;na=CJK COMPATIBILITY IDEOGRAPH-F990;NFKC_CF=6200;NFKC_SCF=6200
+cp;F991;dm=649A;na=CJK COMPATIBILITY IDEOGRAPH-F991;NFKC_CF=649A;NFKC_SCF=649A
+cp;F992;dm=6F23;na=CJK COMPATIBILITY IDEOGRAPH-F992;NFKC_CF=6F23;NFKC_SCF=6F23
+cp;F993;dm=7149;na=CJK COMPATIBILITY IDEOGRAPH-F993;NFKC_CF=7149;NFKC_SCF=7149
+cp;F994;dm=7489;na=CJK COMPATIBILITY IDEOGRAPH-F994;NFKC_CF=7489;NFKC_SCF=7489
+cp;F995;dm=79CA;na=CJK COMPATIBILITY IDEOGRAPH-F995;NFKC_CF=79CA;NFKC_SCF=79CA
+cp;F996;dm=7DF4;na=CJK COMPATIBILITY IDEOGRAPH-F996;NFKC_CF=7DF4;NFKC_SCF=7DF4
+cp;F997;dm=806F;na=CJK COMPATIBILITY IDEOGRAPH-F997;NFKC_CF=806F;NFKC_SCF=806F
+cp;F998;dm=8F26;na=CJK COMPATIBILITY IDEOGRAPH-F998;NFKC_CF=8F26;NFKC_SCF=8F26
+cp;F999;dm=84EE;na=CJK COMPATIBILITY IDEOGRAPH-F999;NFKC_CF=84EE;NFKC_SCF=84EE
+cp;F99A;dm=9023;na=CJK COMPATIBILITY IDEOGRAPH-F99A;NFKC_CF=9023;NFKC_SCF=9023
+cp;F99B;dm=934A;na=CJK COMPATIBILITY IDEOGRAPH-F99B;NFKC_CF=934A;NFKC_SCF=934A
+cp;F99C;dm=5217;na=CJK COMPATIBILITY IDEOGRAPH-F99C;NFKC_CF=5217;NFKC_SCF=5217
+cp;F99D;dm=52A3;na=CJK COMPATIBILITY IDEOGRAPH-F99D;NFKC_CF=52A3;NFKC_SCF=52A3
+cp;F99E;dm=54BD;na=CJK COMPATIBILITY IDEOGRAPH-F99E;NFKC_CF=54BD;NFKC_SCF=54BD
+cp;F99F;dm=70C8;na=CJK COMPATIBILITY IDEOGRAPH-F99F;NFKC_CF=70C8;NFKC_SCF=70C8
+cp;F9A0;dm=88C2;na=CJK COMPATIBILITY IDEOGRAPH-F9A0;NFKC_CF=88C2;NFKC_SCF=88C2
+cp;F9A1;dm=8AAA;na=CJK COMPATIBILITY IDEOGRAPH-F9A1;NFKC_CF=8AAA;NFKC_SCF=8AAA
+cp;F9A2;dm=5EC9;na=CJK COMPATIBILITY IDEOGRAPH-F9A2;NFKC_CF=5EC9;NFKC_SCF=5EC9
+cp;F9A3;dm=5FF5;na=CJK COMPATIBILITY IDEOGRAPH-F9A3;NFKC_CF=5FF5;NFKC_SCF=5FF5
+cp;F9A4;dm=637B;na=CJK COMPATIBILITY IDEOGRAPH-F9A4;NFKC_CF=637B;NFKC_SCF=637B
+cp;F9A5;dm=6BAE;na=CJK COMPATIBILITY IDEOGRAPH-F9A5;NFKC_CF=6BAE;NFKC_SCF=6BAE
+cp;F9A6;dm=7C3E;na=CJK COMPATIBILITY IDEOGRAPH-F9A6;NFKC_CF=7C3E;NFKC_SCF=7C3E
+cp;F9A7;dm=7375;na=CJK COMPATIBILITY IDEOGRAPH-F9A7;NFKC_CF=7375;NFKC_SCF=7375
+cp;F9A8;dm=4EE4;na=CJK COMPATIBILITY IDEOGRAPH-F9A8;NFKC_CF=4EE4;NFKC_SCF=4EE4
+cp;F9A9;dm=56F9;na=CJK COMPATIBILITY IDEOGRAPH-F9A9;NFKC_CF=56F9;NFKC_SCF=56F9
+cp;F9AA;dm=5BE7;na=CJK COMPATIBILITY IDEOGRAPH-F9AA;NFKC_CF=5BE7;NFKC_SCF=5BE7
+cp;F9AB;dm=5DBA;na=CJK COMPATIBILITY IDEOGRAPH-F9AB;NFKC_CF=5DBA;NFKC_SCF=5DBA
+cp;F9AC;dm=601C;na=CJK COMPATIBILITY IDEOGRAPH-F9AC;NFKC_CF=601C;NFKC_SCF=601C
+cp;F9AD;dm=73B2;na=CJK COMPATIBILITY IDEOGRAPH-F9AD;NFKC_CF=73B2;NFKC_SCF=73B2
+cp;F9AE;dm=7469;na=CJK COMPATIBILITY IDEOGRAPH-F9AE;NFKC_CF=7469;NFKC_SCF=7469
+cp;F9AF;dm=7F9A;na=CJK COMPATIBILITY IDEOGRAPH-F9AF;NFKC_CF=7F9A;NFKC_SCF=7F9A
+cp;F9B0;dm=8046;na=CJK COMPATIBILITY IDEOGRAPH-F9B0;NFKC_CF=8046;NFKC_SCF=8046
+cp;F9B1;dm=9234;na=CJK COMPATIBILITY IDEOGRAPH-F9B1;NFKC_CF=9234;NFKC_SCF=9234
+cp;F9B2;dm=96F6;na=CJK COMPATIBILITY IDEOGRAPH-F9B2;NFKC_CF=96F6;NFKC_SCF=96F6;nt=Nu;nv=0
+cp;F9B3;dm=9748;na=CJK COMPATIBILITY IDEOGRAPH-F9B3;NFKC_CF=9748;NFKC_SCF=9748
+cp;F9B4;dm=9818;na=CJK COMPATIBILITY IDEOGRAPH-F9B4;NFKC_CF=9818;NFKC_SCF=9818
+cp;F9B5;dm=4F8B;na=CJK COMPATIBILITY IDEOGRAPH-F9B5;NFKC_CF=4F8B;NFKC_SCF=4F8B
+cp;F9B6;dm=79AE;na=CJK COMPATIBILITY IDEOGRAPH-F9B6;NFKC_CF=79AE;NFKC_SCF=79AE
+cp;F9B7;dm=91B4;na=CJK COMPATIBILITY IDEOGRAPH-F9B7;NFKC_CF=91B4;NFKC_SCF=91B4
+cp;F9B8;dm=96B8;na=CJK COMPATIBILITY IDEOGRAPH-F9B8;NFKC_CF=96B8;NFKC_SCF=96B8
+cp;F9B9;dm=60E1;na=CJK COMPATIBILITY IDEOGRAPH-F9B9;NFKC_CF=60E1;NFKC_SCF=60E1
+cp;F9BA;dm=4E86;na=CJK COMPATIBILITY IDEOGRAPH-F9BA;NFKC_CF=4E86;NFKC_SCF=4E86
+cp;F9BB;dm=50DA;na=CJK COMPATIBILITY IDEOGRAPH-F9BB;NFKC_CF=50DA;NFKC_SCF=50DA
+cp;F9BC;dm=5BEE;na=CJK COMPATIBILITY IDEOGRAPH-F9BC;NFKC_CF=5BEE;NFKC_SCF=5BEE
+cp;F9BD;dm=5C3F;na=CJK COMPATIBILITY IDEOGRAPH-F9BD;NFKC_CF=5C3F;NFKC_SCF=5C3F
+cp;F9BE;dm=6599;na=CJK COMPATIBILITY IDEOGRAPH-F9BE;NFKC_CF=6599;NFKC_SCF=6599
+cp;F9BF;dm=6A02;na=CJK COMPATIBILITY IDEOGRAPH-F9BF;NFKC_CF=6A02;NFKC_SCF=6A02
+cp;F9C0;dm=71CE;na=CJK COMPATIBILITY IDEOGRAPH-F9C0;NFKC_CF=71CE;NFKC_SCF=71CE
+cp;F9C1;dm=7642;na=CJK COMPATIBILITY IDEOGRAPH-F9C1;NFKC_CF=7642;NFKC_SCF=7642
+cp;F9C2;dm=84FC;na=CJK COMPATIBILITY IDEOGRAPH-F9C2;NFKC_CF=84FC;NFKC_SCF=84FC
+cp;F9C3;dm=907C;na=CJK COMPATIBILITY IDEOGRAPH-F9C3;NFKC_CF=907C;NFKC_SCF=907C
+cp;F9C4;dm=9F8D;na=CJK COMPATIBILITY IDEOGRAPH-F9C4;NFKC_CF=9F8D;NFKC_SCF=9F8D
+cp;F9C5;dm=6688;na=CJK COMPATIBILITY IDEOGRAPH-F9C5;NFKC_CF=6688;NFKC_SCF=6688
+cp;F9C6;dm=962E;na=CJK COMPATIBILITY IDEOGRAPH-F9C6;NFKC_CF=962E;NFKC_SCF=962E
+cp;F9C7;dm=5289;na=CJK COMPATIBILITY IDEOGRAPH-F9C7;NFKC_CF=5289;NFKC_SCF=5289
+cp;F9C8;dm=677B;na=CJK COMPATIBILITY IDEOGRAPH-F9C8;NFKC_CF=677B;NFKC_SCF=677B
+cp;F9C9;dm=67F3;na=CJK COMPATIBILITY IDEOGRAPH-F9C9;NFKC_CF=67F3;NFKC_SCF=67F3
+cp;F9CA;dm=6D41;na=CJK COMPATIBILITY IDEOGRAPH-F9CA;NFKC_CF=6D41;NFKC_SCF=6D41
+cp;F9CB;dm=6E9C;na=CJK COMPATIBILITY IDEOGRAPH-F9CB;NFKC_CF=6E9C;NFKC_SCF=6E9C
+cp;F9CC;dm=7409;na=CJK COMPATIBILITY IDEOGRAPH-F9CC;NFKC_CF=7409;NFKC_SCF=7409
+cp;F9CD;dm=7559;na=CJK COMPATIBILITY IDEOGRAPH-F9CD;NFKC_CF=7559;NFKC_SCF=7559
+cp;F9CE;dm=786B;na=CJK COMPATIBILITY IDEOGRAPH-F9CE;NFKC_CF=786B;NFKC_SCF=786B
+cp;F9CF;dm=7D10;na=CJK COMPATIBILITY IDEOGRAPH-F9CF;NFKC_CF=7D10;NFKC_SCF=7D10
+cp;F9D0;dm=985E;na=CJK COMPATIBILITY IDEOGRAPH-F9D0;NFKC_CF=985E;NFKC_SCF=985E
+cp;F9D1;dm=516D;na=CJK COMPATIBILITY IDEOGRAPH-F9D1;NFKC_CF=516D;NFKC_SCF=516D;nt=Nu;nv=6
+cp;F9D2;dm=622E;na=CJK COMPATIBILITY IDEOGRAPH-F9D2;NFKC_CF=622E;NFKC_SCF=622E
+cp;F9D3;dm=9678;na=CJK COMPATIBILITY IDEOGRAPH-F9D3;NFKC_CF=9678;NFKC_SCF=9678;nt=Nu;nv=6
+cp;F9D4;dm=502B;na=CJK COMPATIBILITY IDEOGRAPH-F9D4;NFKC_CF=502B;NFKC_SCF=502B
+cp;F9D5;dm=5D19;na=CJK COMPATIBILITY IDEOGRAPH-F9D5;NFKC_CF=5D19;NFKC_SCF=5D19
+cp;F9D6;dm=6DEA;na=CJK COMPATIBILITY IDEOGRAPH-F9D6;NFKC_CF=6DEA;NFKC_SCF=6DEA
+cp;F9D7;dm=8F2A;na=CJK COMPATIBILITY IDEOGRAPH-F9D7;NFKC_CF=8F2A;NFKC_SCF=8F2A
+cp;F9D8;dm=5F8B;na=CJK COMPATIBILITY IDEOGRAPH-F9D8;NFKC_CF=5F8B;NFKC_SCF=5F8B
+cp;F9D9;dm=6144;na=CJK COMPATIBILITY IDEOGRAPH-F9D9;NFKC_CF=6144;NFKC_SCF=6144
+cp;F9DA;dm=6817;na=CJK COMPATIBILITY IDEOGRAPH-F9DA;NFKC_CF=6817;NFKC_SCF=6817
+cp;F9DB;dm=7387;na=CJK COMPATIBILITY IDEOGRAPH-F9DB;NFKC_CF=7387;NFKC_SCF=7387
+cp;F9DC;dm=9686;na=CJK COMPATIBILITY IDEOGRAPH-F9DC;NFKC_CF=9686;NFKC_SCF=9686
+cp;F9DD;dm=5229;na=CJK COMPATIBILITY IDEOGRAPH-F9DD;NFKC_CF=5229;NFKC_SCF=5229
+cp;F9DE;dm=540F;na=CJK COMPATIBILITY IDEOGRAPH-F9DE;NFKC_CF=540F;NFKC_SCF=540F
+cp;F9DF;dm=5C65;na=CJK COMPATIBILITY IDEOGRAPH-F9DF;NFKC_CF=5C65;NFKC_SCF=5C65
+cp;F9E0;dm=6613;na=CJK COMPATIBILITY IDEOGRAPH-F9E0;NFKC_CF=6613;NFKC_SCF=6613
+cp;F9E1;dm=674E;na=CJK COMPATIBILITY IDEOGRAPH-F9E1;NFKC_CF=674E;NFKC_SCF=674E
+cp;F9E2;dm=68A8;na=CJK COMPATIBILITY IDEOGRAPH-F9E2;NFKC_CF=68A8;NFKC_SCF=68A8
+cp;F9E3;dm=6CE5;na=CJK COMPATIBILITY IDEOGRAPH-F9E3;NFKC_CF=6CE5;NFKC_SCF=6CE5
+cp;F9E4;dm=7406;na=CJK COMPATIBILITY IDEOGRAPH-F9E4;NFKC_CF=7406;NFKC_SCF=7406
+cp;F9E5;dm=75E2;na=CJK COMPATIBILITY IDEOGRAPH-F9E5;NFKC_CF=75E2;NFKC_SCF=75E2
+cp;F9E6;dm=7F79;na=CJK COMPATIBILITY IDEOGRAPH-F9E6;NFKC_CF=7F79;NFKC_SCF=7F79
+cp;F9E7;dm=88CF;na=CJK COMPATIBILITY IDEOGRAPH-F9E7;NFKC_CF=88CF;NFKC_SCF=88CF
+cp;F9E8;dm=88E1;na=CJK COMPATIBILITY IDEOGRAPH-F9E8;NFKC_CF=88E1;NFKC_SCF=88E1
+cp;F9E9;dm=91CC;na=CJK COMPATIBILITY IDEOGRAPH-F9E9;NFKC_CF=91CC;NFKC_SCF=91CC
+cp;F9EA;dm=96E2;na=CJK COMPATIBILITY IDEOGRAPH-F9EA;NFKC_CF=96E2;NFKC_SCF=96E2
+cp;F9EB;dm=533F;na=CJK COMPATIBILITY IDEOGRAPH-F9EB;NFKC_CF=533F;NFKC_SCF=533F
+cp;F9EC;dm=6EBA;na=CJK COMPATIBILITY IDEOGRAPH-F9EC;NFKC_CF=6EBA;NFKC_SCF=6EBA
+cp;F9ED;dm=541D;na=CJK COMPATIBILITY IDEOGRAPH-F9ED;NFKC_CF=541D;NFKC_SCF=541D
+cp;F9EE;dm=71D0;na=CJK COMPATIBILITY IDEOGRAPH-F9EE;NFKC_CF=71D0;NFKC_SCF=71D0
+cp;F9EF;dm=7498;na=CJK COMPATIBILITY IDEOGRAPH-F9EF;NFKC_CF=7498;NFKC_SCF=7498
+cp;F9F0;dm=85FA;na=CJK COMPATIBILITY IDEOGRAPH-F9F0;NFKC_CF=85FA;NFKC_SCF=85FA
+cp;F9F1;dm=96A3;na=CJK COMPATIBILITY IDEOGRAPH-F9F1;NFKC_CF=96A3;NFKC_SCF=96A3
+cp;F9F2;dm=9C57;na=CJK COMPATIBILITY IDEOGRAPH-F9F2;NFKC_CF=9C57;NFKC_SCF=9C57
+cp;F9F3;dm=9E9F;na=CJK COMPATIBILITY IDEOGRAPH-F9F3;NFKC_CF=9E9F;NFKC_SCF=9E9F
+cp;F9F4;dm=6797;na=CJK COMPATIBILITY IDEOGRAPH-F9F4;NFKC_CF=6797;NFKC_SCF=6797
+cp;F9F5;dm=6DCB;na=CJK COMPATIBILITY IDEOGRAPH-F9F5;NFKC_CF=6DCB;NFKC_SCF=6DCB
+cp;F9F6;dm=81E8;na=CJK COMPATIBILITY IDEOGRAPH-F9F6;NFKC_CF=81E8;NFKC_SCF=81E8
+cp;F9F7;dm=7ACB;na=CJK COMPATIBILITY IDEOGRAPH-F9F7;NFKC_CF=7ACB;NFKC_SCF=7ACB
+cp;F9F8;dm=7B20;na=CJK COMPATIBILITY IDEOGRAPH-F9F8;NFKC_CF=7B20;NFKC_SCF=7B20
+cp;F9F9;dm=7C92;na=CJK COMPATIBILITY IDEOGRAPH-F9F9;NFKC_CF=7C92;NFKC_SCF=7C92
+cp;F9FA;dm=72C0;na=CJK COMPATIBILITY IDEOGRAPH-F9FA;NFKC_CF=72C0;NFKC_SCF=72C0
+cp;F9FB;dm=7099;na=CJK COMPATIBILITY IDEOGRAPH-F9FB;NFKC_CF=7099;NFKC_SCF=7099
+cp;F9FC;dm=8B58;na=CJK COMPATIBILITY IDEOGRAPH-F9FC;NFKC_CF=8B58;NFKC_SCF=8B58
+cp;F9FD;dm=4EC0;na=CJK COMPATIBILITY IDEOGRAPH-F9FD;NFKC_CF=4EC0;NFKC_SCF=4EC0;nt=Nu;nv=10
+cp;F9FE;dm=8336;na=CJK COMPATIBILITY IDEOGRAPH-F9FE;NFKC_CF=8336;NFKC_SCF=8336
+cp;F9FF;dm=523A;na=CJK COMPATIBILITY IDEOGRAPH-F9FF;NFKC_CF=523A;NFKC_SCF=523A
+cp;FA00;dm=5207;na=CJK COMPATIBILITY IDEOGRAPH-FA00;NFKC_CF=5207;NFKC_SCF=5207
+cp;FA01;dm=5EA6;na=CJK COMPATIBILITY IDEOGRAPH-FA01;NFKC_CF=5EA6;NFKC_SCF=5EA6
+cp;FA02;dm=62D3;na=CJK COMPATIBILITY IDEOGRAPH-FA02;NFKC_CF=62D3;NFKC_SCF=62D3
+cp;FA03;dm=7CD6;na=CJK COMPATIBILITY IDEOGRAPH-FA03;NFKC_CF=7CD6;NFKC_SCF=7CD6
+cp;FA04;dm=5B85;na=CJK COMPATIBILITY IDEOGRAPH-FA04;NFKC_CF=5B85;NFKC_SCF=5B85
+cp;FA05;dm=6D1E;na=CJK COMPATIBILITY IDEOGRAPH-FA05;NFKC_CF=6D1E;NFKC_SCF=6D1E
+cp;FA06;dm=66B4;na=CJK COMPATIBILITY IDEOGRAPH-FA06;NFKC_CF=66B4;NFKC_SCF=66B4
+cp;FA07;dm=8F3B;na=CJK COMPATIBILITY IDEOGRAPH-FA07;NFKC_CF=8F3B;NFKC_SCF=8F3B
+cp;FA08;dm=884C;na=CJK COMPATIBILITY IDEOGRAPH-FA08;NFKC_CF=884C;NFKC_SCF=884C
+cp;FA09;dm=964D;na=CJK COMPATIBILITY IDEOGRAPH-FA09;NFKC_CF=964D;NFKC_SCF=964D
+cp;FA0A;dm=898B;na=CJK COMPATIBILITY IDEOGRAPH-FA0A;NFKC_CF=898B;NFKC_SCF=898B
+cp;FA0B;dm=5ED3;na=CJK COMPATIBILITY IDEOGRAPH-FA0B;NFKC_CF=5ED3;NFKC_SCF=5ED3
# Duplicate characters from Big 5
-cp;FA0C;dm=5140;na=CJK COMPATIBILITY IDEOGRAPH-FA0C;NFKC_CF=5140
-cp;FA0D;dm=55C0;na=CJK COMPATIBILITY IDEOGRAPH-FA0D;NFKC_CF=55C0
+cp;FA0C;dm=5140;na=CJK COMPATIBILITY IDEOGRAPH-FA0C;NFKC_CF=5140;NFKC_SCF=5140
+cp;FA0D;dm=55C0;na=CJK COMPATIBILITY IDEOGRAPH-FA0D;NFKC_CF=55C0;NFKC_SCF=55C0
# The IBM 32 compatibility ideographs
cp;FA0E;-Comp_Ex;-CWKCF;dt=None;na=CJK COMPATIBILITY IDEOGRAPH-FA0E;NFC_QC=Y;NFD_QC=Y;NFKC_QC=Y;NFKD_QC=Y;UIdeo
cp;FA0F;-Comp_Ex;-CWKCF;dt=None;na=CJK COMPATIBILITY IDEOGRAPH-FA0F;NFC_QC=Y;NFD_QC=Y;NFKC_QC=Y;NFKD_QC=Y;UIdeo
-cp;FA10;dm=585A;na=CJK COMPATIBILITY IDEOGRAPH-FA10;NFKC_CF=585A
+cp;FA10;dm=585A;na=CJK COMPATIBILITY IDEOGRAPH-FA10;NFKC_CF=585A;NFKC_SCF=585A
cp;FA11;-Comp_Ex;-CWKCF;dt=None;na=CJK COMPATIBILITY IDEOGRAPH-FA11;NFC_QC=Y;NFD_QC=Y;NFKC_QC=Y;NFKD_QC=Y;UIdeo
-cp;FA12;dm=6674;na=CJK COMPATIBILITY IDEOGRAPH-FA12;NFKC_CF=6674
+cp;FA12;dm=6674;na=CJK COMPATIBILITY IDEOGRAPH-FA12;NFKC_CF=6674;NFKC_SCF=6674
cp;FA13;-Comp_Ex;-CWKCF;dt=None;na=CJK COMPATIBILITY IDEOGRAPH-FA13;NFC_QC=Y;NFD_QC=Y;NFKC_QC=Y;NFKD_QC=Y;UIdeo
cp;FA14;-Comp_Ex;-CWKCF;dt=None;na=CJK COMPATIBILITY IDEOGRAPH-FA14;NFC_QC=Y;NFD_QC=Y;NFKC_QC=Y;NFKD_QC=Y;UIdeo
-cp;FA15;dm=51DE;na=CJK COMPATIBILITY IDEOGRAPH-FA15;NFKC_CF=51DE
-cp;FA16;dm=732A;na=CJK COMPATIBILITY IDEOGRAPH-FA16;NFKC_CF=732A
-cp;FA17;dm=76CA;na=CJK COMPATIBILITY IDEOGRAPH-FA17;NFKC_CF=76CA
-cp;FA18;dm=793C;na=CJK COMPATIBILITY IDEOGRAPH-FA18;NFKC_CF=793C
-cp;FA19;dm=795E;na=CJK COMPATIBILITY IDEOGRAPH-FA19;NFKC_CF=795E
-cp;FA1A;dm=7965;na=CJK COMPATIBILITY IDEOGRAPH-FA1A;NFKC_CF=7965
-cp;FA1B;dm=798F;na=CJK COMPATIBILITY IDEOGRAPH-FA1B;NFKC_CF=798F
-cp;FA1C;dm=9756;na=CJK COMPATIBILITY IDEOGRAPH-FA1C;NFKC_CF=9756
-cp;FA1D;dm=7CBE;na=CJK COMPATIBILITY IDEOGRAPH-FA1D;NFKC_CF=7CBE
-cp;FA1E;dm=7FBD;na=CJK COMPATIBILITY IDEOGRAPH-FA1E;NFKC_CF=7FBD
+cp;FA15;dm=51DE;na=CJK COMPATIBILITY IDEOGRAPH-FA15;NFKC_CF=51DE;NFKC_SCF=51DE
+cp;FA16;dm=732A;na=CJK COMPATIBILITY IDEOGRAPH-FA16;NFKC_CF=732A;NFKC_SCF=732A
+cp;FA17;dm=76CA;na=CJK COMPATIBILITY IDEOGRAPH-FA17;NFKC_CF=76CA;NFKC_SCF=76CA
+cp;FA18;dm=793C;na=CJK COMPATIBILITY IDEOGRAPH-FA18;NFKC_CF=793C;NFKC_SCF=793C
+cp;FA19;dm=795E;na=CJK COMPATIBILITY IDEOGRAPH-FA19;NFKC_CF=795E;NFKC_SCF=795E
+cp;FA1A;dm=7965;na=CJK COMPATIBILITY IDEOGRAPH-FA1A;NFKC_CF=7965;NFKC_SCF=7965
+cp;FA1B;dm=798F;na=CJK COMPATIBILITY IDEOGRAPH-FA1B;NFKC_CF=798F;NFKC_SCF=798F
+cp;FA1C;dm=9756;na=CJK COMPATIBILITY IDEOGRAPH-FA1C;NFKC_CF=9756;NFKC_SCF=9756
+cp;FA1D;dm=7CBE;na=CJK COMPATIBILITY IDEOGRAPH-FA1D;NFKC_CF=7CBE;NFKC_SCF=7CBE
+cp;FA1E;dm=7FBD;na=CJK COMPATIBILITY IDEOGRAPH-FA1E;NFKC_CF=7FBD;NFKC_SCF=7FBD
cp;FA1F;-Comp_Ex;-CWKCF;dt=None;na=CJK COMPATIBILITY IDEOGRAPH-FA1F;NFC_QC=Y;NFD_QC=Y;NFKC_QC=Y;NFKD_QC=Y;UIdeo
-cp;FA20;dm=8612;na=CJK COMPATIBILITY IDEOGRAPH-FA20;NFKC_CF=8612
+cp;FA20;dm=8612;na=CJK COMPATIBILITY IDEOGRAPH-FA20;NFKC_CF=8612;NFKC_SCF=8612
cp;FA21;-Comp_Ex;-CWKCF;dt=None;na=CJK COMPATIBILITY IDEOGRAPH-FA21;NFC_QC=Y;NFD_QC=Y;NFKC_QC=Y;NFKD_QC=Y;UIdeo
-cp;FA22;dm=8AF8;na=CJK COMPATIBILITY IDEOGRAPH-FA22;NFKC_CF=8AF8
+cp;FA22;dm=8AF8;na=CJK COMPATIBILITY IDEOGRAPH-FA22;NFKC_CF=8AF8;NFKC_SCF=8AF8
cp;FA23;-Comp_Ex;-CWKCF;dt=None;na=CJK COMPATIBILITY IDEOGRAPH-FA23;NFC_QC=Y;NFD_QC=Y;NFKC_QC=Y;NFKD_QC=Y;UIdeo
cp;FA24;-Comp_Ex;-CWKCF;dt=None;na=CJK COMPATIBILITY IDEOGRAPH-FA24;NFC_QC=Y;NFD_QC=Y;NFKC_QC=Y;NFKD_QC=Y;UIdeo
-cp;FA25;dm=9038;na=CJK COMPATIBILITY IDEOGRAPH-FA25;NFKC_CF=9038
-cp;FA26;dm=90FD;na=CJK COMPATIBILITY IDEOGRAPH-FA26;NFKC_CF=90FD
+cp;FA25;dm=9038;na=CJK COMPATIBILITY IDEOGRAPH-FA25;NFKC_CF=9038;NFKC_SCF=9038
+cp;FA26;dm=90FD;na=CJK COMPATIBILITY IDEOGRAPH-FA26;NFKC_CF=90FD;NFKC_SCF=90FD
cp;FA27;-Comp_Ex;-CWKCF;dt=None;na=CJK COMPATIBILITY IDEOGRAPH-FA27;NFC_QC=Y;NFD_QC=Y;NFKC_QC=Y;NFKD_QC=Y;UIdeo
cp;FA28;-Comp_Ex;-CWKCF;dt=None;na=CJK COMPATIBILITY IDEOGRAPH-FA28;NFC_QC=Y;NFD_QC=Y;NFKC_QC=Y;NFKD_QC=Y;UIdeo
cp;FA29;-Comp_Ex;-CWKCF;dt=None;na=CJK COMPATIBILITY IDEOGRAPH-FA29;NFC_QC=Y;NFD_QC=Y;NFKC_QC=Y;NFKD_QC=Y;UIdeo
-cp;FA2A;dm=98EF;na=CJK COMPATIBILITY IDEOGRAPH-FA2A;NFKC_CF=98EF
-cp;FA2B;dm=98FC;na=CJK COMPATIBILITY IDEOGRAPH-FA2B;NFKC_CF=98FC
-cp;FA2C;dm=9928;na=CJK COMPATIBILITY IDEOGRAPH-FA2C;NFKC_CF=9928
-cp;FA2D;dm=9DB4;na=CJK COMPATIBILITY IDEOGRAPH-FA2D;NFKC_CF=9DB4
+cp;FA2A;dm=98EF;na=CJK COMPATIBILITY IDEOGRAPH-FA2A;NFKC_CF=98EF;NFKC_SCF=98EF
+cp;FA2B;dm=98FC;na=CJK COMPATIBILITY IDEOGRAPH-FA2B;NFKC_CF=98FC;NFKC_SCF=98FC
+cp;FA2C;dm=9928;na=CJK COMPATIBILITY IDEOGRAPH-FA2C;NFKC_CF=9928;NFKC_SCF=9928
+cp;FA2D;dm=9DB4;na=CJK COMPATIBILITY IDEOGRAPH-FA2D;NFKC_CF=9DB4;NFKC_SCF=9DB4
# Korean compatibility ideographs
-cp;FA2E;age=6.1;dm=90DE;na=CJK COMPATIBILITY IDEOGRAPH-FA2E;NFKC_CF=90DE
-cp;FA2F;age=6.1;dm=96B7;na=CJK COMPATIBILITY IDEOGRAPH-FA2F;NFKC_CF=96B7
+cp;FA2E;age=6.1;dm=90DE;na=CJK COMPATIBILITY IDEOGRAPH-FA2E;NFKC_CF=90DE;NFKC_SCF=90DE
+cp;FA2F;age=6.1;dm=96B7;na=CJK COMPATIBILITY IDEOGRAPH-FA2F;NFKC_CF=96B7;NFKC_SCF=96B7
# JIS X 0213 compatibility ideographs
-cp;FA30;age=3.2;dm=4FAE;na=CJK COMPATIBILITY IDEOGRAPH-FA30;NFKC_CF=4FAE
-cp;FA31;age=3.2;dm=50E7;na=CJK COMPATIBILITY IDEOGRAPH-FA31;NFKC_CF=50E7
-cp;FA32;age=3.2;dm=514D;na=CJK COMPATIBILITY IDEOGRAPH-FA32;NFKC_CF=514D
-cp;FA33;age=3.2;dm=52C9;na=CJK COMPATIBILITY IDEOGRAPH-FA33;NFKC_CF=52C9
-cp;FA34;age=3.2;dm=52E4;na=CJK COMPATIBILITY IDEOGRAPH-FA34;NFKC_CF=52E4
-cp;FA35;age=3.2;dm=5351;na=CJK COMPATIBILITY IDEOGRAPH-FA35;NFKC_CF=5351
-cp;FA36;age=3.2;dm=559D;na=CJK COMPATIBILITY IDEOGRAPH-FA36;NFKC_CF=559D
-cp;FA37;age=3.2;dm=5606;na=CJK COMPATIBILITY IDEOGRAPH-FA37;NFKC_CF=5606
-cp;FA38;age=3.2;dm=5668;na=CJK COMPATIBILITY IDEOGRAPH-FA38;NFKC_CF=5668
-cp;FA39;age=3.2;dm=5840;na=CJK COMPATIBILITY IDEOGRAPH-FA39;NFKC_CF=5840
-cp;FA3A;age=3.2;dm=58A8;na=CJK COMPATIBILITY IDEOGRAPH-FA3A;NFKC_CF=58A8
-cp;FA3B;age=3.2;dm=5C64;na=CJK COMPATIBILITY IDEOGRAPH-FA3B;NFKC_CF=5C64
-cp;FA3C;age=3.2;dm=5C6E;na=CJK COMPATIBILITY IDEOGRAPH-FA3C;NFKC_CF=5C6E
-cp;FA3D;age=3.2;dm=6094;na=CJK COMPATIBILITY IDEOGRAPH-FA3D;NFKC_CF=6094
-cp;FA3E;age=3.2;dm=6168;na=CJK COMPATIBILITY IDEOGRAPH-FA3E;NFKC_CF=6168
-cp;FA3F;age=3.2;dm=618E;na=CJK COMPATIBILITY IDEOGRAPH-FA3F;NFKC_CF=618E
-cp;FA40;age=3.2;dm=61F2;na=CJK COMPATIBILITY IDEOGRAPH-FA40;NFKC_CF=61F2
-cp;FA41;age=3.2;dm=654F;na=CJK COMPATIBILITY IDEOGRAPH-FA41;NFKC_CF=654F
-cp;FA42;age=3.2;dm=65E2;na=CJK COMPATIBILITY IDEOGRAPH-FA42;NFKC_CF=65E2
-cp;FA43;age=3.2;dm=6691;na=CJK COMPATIBILITY IDEOGRAPH-FA43;NFKC_CF=6691
-cp;FA44;age=3.2;dm=6885;na=CJK COMPATIBILITY IDEOGRAPH-FA44;NFKC_CF=6885
-cp;FA45;age=3.2;dm=6D77;na=CJK COMPATIBILITY IDEOGRAPH-FA45;NFKC_CF=6D77
-cp;FA46;age=3.2;dm=6E1A;na=CJK COMPATIBILITY IDEOGRAPH-FA46;NFKC_CF=6E1A
-cp;FA47;age=3.2;dm=6F22;na=CJK COMPATIBILITY IDEOGRAPH-FA47;NFKC_CF=6F22
-cp;FA48;age=3.2;dm=716E;na=CJK COMPATIBILITY IDEOGRAPH-FA48;NFKC_CF=716E
-cp;FA49;age=3.2;dm=722B;na=CJK COMPATIBILITY IDEOGRAPH-FA49;NFKC_CF=722B
-cp;FA4A;age=3.2;dm=7422;na=CJK COMPATIBILITY IDEOGRAPH-FA4A;NFKC_CF=7422
-cp;FA4B;age=3.2;dm=7891;na=CJK COMPATIBILITY IDEOGRAPH-FA4B;NFKC_CF=7891
-cp;FA4C;age=3.2;dm=793E;na=CJK COMPATIBILITY IDEOGRAPH-FA4C;NFKC_CF=793E
-cp;FA4D;age=3.2;dm=7949;na=CJK COMPATIBILITY IDEOGRAPH-FA4D;NFKC_CF=7949
-cp;FA4E;age=3.2;dm=7948;na=CJK COMPATIBILITY IDEOGRAPH-FA4E;NFKC_CF=7948
-cp;FA4F;age=3.2;dm=7950;na=CJK COMPATIBILITY IDEOGRAPH-FA4F;NFKC_CF=7950
-cp;FA50;age=3.2;dm=7956;na=CJK COMPATIBILITY IDEOGRAPH-FA50;NFKC_CF=7956
-cp;FA51;age=3.2;dm=795D;na=CJK COMPATIBILITY IDEOGRAPH-FA51;NFKC_CF=795D
-cp;FA52;age=3.2;dm=798D;na=CJK COMPATIBILITY IDEOGRAPH-FA52;NFKC_CF=798D
-cp;FA53;age=3.2;dm=798E;na=CJK COMPATIBILITY IDEOGRAPH-FA53;NFKC_CF=798E
-cp;FA54;age=3.2;dm=7A40;na=CJK COMPATIBILITY IDEOGRAPH-FA54;NFKC_CF=7A40
-cp;FA55;age=3.2;dm=7A81;na=CJK COMPATIBILITY IDEOGRAPH-FA55;NFKC_CF=7A81
-cp;FA56;age=3.2;dm=7BC0;na=CJK COMPATIBILITY IDEOGRAPH-FA56;NFKC_CF=7BC0
-cp;FA57;age=3.2;dm=7DF4;na=CJK COMPATIBILITY IDEOGRAPH-FA57;NFKC_CF=7DF4
-cp;FA58;age=3.2;dm=7E09;na=CJK COMPATIBILITY IDEOGRAPH-FA58;NFKC_CF=7E09
-cp;FA59;age=3.2;dm=7E41;na=CJK COMPATIBILITY IDEOGRAPH-FA59;NFKC_CF=7E41
-cp;FA5A;age=3.2;dm=7F72;na=CJK COMPATIBILITY IDEOGRAPH-FA5A;NFKC_CF=7F72
-cp;FA5B;age=3.2;dm=8005;na=CJK COMPATIBILITY IDEOGRAPH-FA5B;NFKC_CF=8005
-cp;FA5C;age=3.2;dm=81ED;na=CJK COMPATIBILITY IDEOGRAPH-FA5C;NFKC_CF=81ED
-cp;FA5D;age=3.2;dm=8279;na=CJK COMPATIBILITY IDEOGRAPH-FA5D;NFKC_CF=8279
-cp;FA5E;age=3.2;dm=8279;na=CJK COMPATIBILITY IDEOGRAPH-FA5E;NFKC_CF=8279
-cp;FA5F;age=3.2;dm=8457;na=CJK COMPATIBILITY IDEOGRAPH-FA5F;NFKC_CF=8457
-cp;FA60;age=3.2;dm=8910;na=CJK COMPATIBILITY IDEOGRAPH-FA60;NFKC_CF=8910
-cp;FA61;age=3.2;dm=8996;na=CJK COMPATIBILITY IDEOGRAPH-FA61;NFKC_CF=8996
-cp;FA62;age=3.2;dm=8B01;na=CJK COMPATIBILITY IDEOGRAPH-FA62;NFKC_CF=8B01
-cp;FA63;age=3.2;dm=8B39;na=CJK COMPATIBILITY IDEOGRAPH-FA63;NFKC_CF=8B39
-cp;FA64;age=3.2;dm=8CD3;na=CJK COMPATIBILITY IDEOGRAPH-FA64;NFKC_CF=8CD3
-cp;FA65;age=3.2;dm=8D08;na=CJK COMPATIBILITY IDEOGRAPH-FA65;NFKC_CF=8D08
-cp;FA66;age=3.2;dm=8FB6;na=CJK COMPATIBILITY IDEOGRAPH-FA66;NFKC_CF=8FB6
-cp;FA67;age=3.2;dm=9038;na=CJK COMPATIBILITY IDEOGRAPH-FA67;NFKC_CF=9038
-cp;FA68;age=3.2;dm=96E3;na=CJK COMPATIBILITY IDEOGRAPH-FA68;NFKC_CF=96E3
-cp;FA69;age=3.2;dm=97FF;na=CJK COMPATIBILITY IDEOGRAPH-FA69;NFKC_CF=97FF
-cp;FA6A;age=3.2;dm=983B;na=CJK COMPATIBILITY IDEOGRAPH-FA6A;NFKC_CF=983B
+cp;FA30;age=3.2;dm=4FAE;na=CJK COMPATIBILITY IDEOGRAPH-FA30;NFKC_CF=4FAE;NFKC_SCF=4FAE
+cp;FA31;age=3.2;dm=50E7;na=CJK COMPATIBILITY IDEOGRAPH-FA31;NFKC_CF=50E7;NFKC_SCF=50E7
+cp;FA32;age=3.2;dm=514D;na=CJK COMPATIBILITY IDEOGRAPH-FA32;NFKC_CF=514D;NFKC_SCF=514D
+cp;FA33;age=3.2;dm=52C9;na=CJK COMPATIBILITY IDEOGRAPH-FA33;NFKC_CF=52C9;NFKC_SCF=52C9
+cp;FA34;age=3.2;dm=52E4;na=CJK COMPATIBILITY IDEOGRAPH-FA34;NFKC_CF=52E4;NFKC_SCF=52E4
+cp;FA35;age=3.2;dm=5351;na=CJK COMPATIBILITY IDEOGRAPH-FA35;NFKC_CF=5351;NFKC_SCF=5351
+cp;FA36;age=3.2;dm=559D;na=CJK COMPATIBILITY IDEOGRAPH-FA36;NFKC_CF=559D;NFKC_SCF=559D
+cp;FA37;age=3.2;dm=5606;na=CJK COMPATIBILITY IDEOGRAPH-FA37;NFKC_CF=5606;NFKC_SCF=5606
+cp;FA38;age=3.2;dm=5668;na=CJK COMPATIBILITY IDEOGRAPH-FA38;NFKC_CF=5668;NFKC_SCF=5668
+cp;FA39;age=3.2;dm=5840;na=CJK COMPATIBILITY IDEOGRAPH-FA39;NFKC_CF=5840;NFKC_SCF=5840
+cp;FA3A;age=3.2;dm=58A8;na=CJK COMPATIBILITY IDEOGRAPH-FA3A;NFKC_CF=58A8;NFKC_SCF=58A8
+cp;FA3B;age=3.2;dm=5C64;na=CJK COMPATIBILITY IDEOGRAPH-FA3B;NFKC_CF=5C64;NFKC_SCF=5C64
+cp;FA3C;age=3.2;dm=5C6E;na=CJK COMPATIBILITY IDEOGRAPH-FA3C;NFKC_CF=5C6E;NFKC_SCF=5C6E
+cp;FA3D;age=3.2;dm=6094;na=CJK COMPATIBILITY IDEOGRAPH-FA3D;NFKC_CF=6094;NFKC_SCF=6094
+cp;FA3E;age=3.2;dm=6168;na=CJK COMPATIBILITY IDEOGRAPH-FA3E;NFKC_CF=6168;NFKC_SCF=6168
+cp;FA3F;age=3.2;dm=618E;na=CJK COMPATIBILITY IDEOGRAPH-FA3F;NFKC_CF=618E;NFKC_SCF=618E
+cp;FA40;age=3.2;dm=61F2;na=CJK COMPATIBILITY IDEOGRAPH-FA40;NFKC_CF=61F2;NFKC_SCF=61F2
+cp;FA41;age=3.2;dm=654F;na=CJK COMPATIBILITY IDEOGRAPH-FA41;NFKC_CF=654F;NFKC_SCF=654F
+cp;FA42;age=3.2;dm=65E2;na=CJK COMPATIBILITY IDEOGRAPH-FA42;NFKC_CF=65E2;NFKC_SCF=65E2
+cp;FA43;age=3.2;dm=6691;na=CJK COMPATIBILITY IDEOGRAPH-FA43;NFKC_CF=6691;NFKC_SCF=6691
+cp;FA44;age=3.2;dm=6885;na=CJK COMPATIBILITY IDEOGRAPH-FA44;NFKC_CF=6885;NFKC_SCF=6885
+cp;FA45;age=3.2;dm=6D77;na=CJK COMPATIBILITY IDEOGRAPH-FA45;NFKC_CF=6D77;NFKC_SCF=6D77
+cp;FA46;age=3.2;dm=6E1A;na=CJK COMPATIBILITY IDEOGRAPH-FA46;NFKC_CF=6E1A;NFKC_SCF=6E1A
+cp;FA47;age=3.2;dm=6F22;na=CJK COMPATIBILITY IDEOGRAPH-FA47;NFKC_CF=6F22;NFKC_SCF=6F22
+cp;FA48;age=3.2;dm=716E;na=CJK COMPATIBILITY IDEOGRAPH-FA48;NFKC_CF=716E;NFKC_SCF=716E
+cp;FA49;age=3.2;dm=722B;na=CJK COMPATIBILITY IDEOGRAPH-FA49;NFKC_CF=722B;NFKC_SCF=722B
+cp;FA4A;age=3.2;dm=7422;na=CJK COMPATIBILITY IDEOGRAPH-FA4A;NFKC_CF=7422;NFKC_SCF=7422
+cp;FA4B;age=3.2;dm=7891;na=CJK COMPATIBILITY IDEOGRAPH-FA4B;NFKC_CF=7891;NFKC_SCF=7891
+cp;FA4C;age=3.2;dm=793E;na=CJK COMPATIBILITY IDEOGRAPH-FA4C;NFKC_CF=793E;NFKC_SCF=793E
+cp;FA4D;age=3.2;dm=7949;na=CJK COMPATIBILITY IDEOGRAPH-FA4D;NFKC_CF=7949;NFKC_SCF=7949
+cp;FA4E;age=3.2;dm=7948;na=CJK COMPATIBILITY IDEOGRAPH-FA4E;NFKC_CF=7948;NFKC_SCF=7948
+cp;FA4F;age=3.2;dm=7950;na=CJK COMPATIBILITY IDEOGRAPH-FA4F;NFKC_CF=7950;NFKC_SCF=7950
+cp;FA50;age=3.2;dm=7956;na=CJK COMPATIBILITY IDEOGRAPH-FA50;NFKC_CF=7956;NFKC_SCF=7956
+cp;FA51;age=3.2;dm=795D;na=CJK COMPATIBILITY IDEOGRAPH-FA51;NFKC_CF=795D;NFKC_SCF=795D
+cp;FA52;age=3.2;dm=798D;na=CJK COMPATIBILITY IDEOGRAPH-FA52;NFKC_CF=798D;NFKC_SCF=798D
+cp;FA53;age=3.2;dm=798E;na=CJK COMPATIBILITY IDEOGRAPH-FA53;NFKC_CF=798E;NFKC_SCF=798E
+cp;FA54;age=3.2;dm=7A40;na=CJK COMPATIBILITY IDEOGRAPH-FA54;NFKC_CF=7A40;NFKC_SCF=7A40
+cp;FA55;age=3.2;dm=7A81;na=CJK COMPATIBILITY IDEOGRAPH-FA55;NFKC_CF=7A81;NFKC_SCF=7A81
+cp;FA56;age=3.2;dm=7BC0;na=CJK COMPATIBILITY IDEOGRAPH-FA56;NFKC_CF=7BC0;NFKC_SCF=7BC0
+cp;FA57;age=3.2;dm=7DF4;na=CJK COMPATIBILITY IDEOGRAPH-FA57;NFKC_CF=7DF4;NFKC_SCF=7DF4
+cp;FA58;age=3.2;dm=7E09;na=CJK COMPATIBILITY IDEOGRAPH-FA58;NFKC_CF=7E09;NFKC_SCF=7E09
+cp;FA59;age=3.2;dm=7E41;na=CJK COMPATIBILITY IDEOGRAPH-FA59;NFKC_CF=7E41;NFKC_SCF=7E41
+cp;FA5A;age=3.2;dm=7F72;na=CJK COMPATIBILITY IDEOGRAPH-FA5A;NFKC_CF=7F72;NFKC_SCF=7F72
+cp;FA5B;age=3.2;dm=8005;na=CJK COMPATIBILITY IDEOGRAPH-FA5B;NFKC_CF=8005;NFKC_SCF=8005
+cp;FA5C;age=3.2;dm=81ED;na=CJK COMPATIBILITY IDEOGRAPH-FA5C;NFKC_CF=81ED;NFKC_SCF=81ED
+cp;FA5D;age=3.2;dm=8279;na=CJK COMPATIBILITY IDEOGRAPH-FA5D;NFKC_CF=8279;NFKC_SCF=8279
+cp;FA5E;age=3.2;dm=8279;na=CJK COMPATIBILITY IDEOGRAPH-FA5E;NFKC_CF=8279;NFKC_SCF=8279
+cp;FA5F;age=3.2;dm=8457;na=CJK COMPATIBILITY IDEOGRAPH-FA5F;NFKC_CF=8457;NFKC_SCF=8457
+cp;FA60;age=3.2;dm=8910;na=CJK COMPATIBILITY IDEOGRAPH-FA60;NFKC_CF=8910;NFKC_SCF=8910
+cp;FA61;age=3.2;dm=8996;na=CJK COMPATIBILITY IDEOGRAPH-FA61;NFKC_CF=8996;NFKC_SCF=8996
+cp;FA62;age=3.2;dm=8B01;na=CJK COMPATIBILITY IDEOGRAPH-FA62;NFKC_CF=8B01;NFKC_SCF=8B01
+cp;FA63;age=3.2;dm=8B39;na=CJK COMPATIBILITY IDEOGRAPH-FA63;NFKC_CF=8B39;NFKC_SCF=8B39
+cp;FA64;age=3.2;dm=8CD3;na=CJK COMPATIBILITY IDEOGRAPH-FA64;NFKC_CF=8CD3;NFKC_SCF=8CD3
+cp;FA65;age=3.2;dm=8D08;na=CJK COMPATIBILITY IDEOGRAPH-FA65;NFKC_CF=8D08;NFKC_SCF=8D08
+cp;FA66;age=3.2;dm=8FB6;na=CJK COMPATIBILITY IDEOGRAPH-FA66;NFKC_CF=8FB6;NFKC_SCF=8FB6
+cp;FA67;age=3.2;dm=9038;na=CJK COMPATIBILITY IDEOGRAPH-FA67;NFKC_CF=9038;NFKC_SCF=9038
+cp;FA68;age=3.2;dm=96E3;na=CJK COMPATIBILITY IDEOGRAPH-FA68;NFKC_CF=96E3;NFKC_SCF=96E3
+cp;FA69;age=3.2;dm=97FF;na=CJK COMPATIBILITY IDEOGRAPH-FA69;NFKC_CF=97FF;NFKC_SCF=97FF
+cp;FA6A;age=3.2;dm=983B;na=CJK COMPATIBILITY IDEOGRAPH-FA6A;NFKC_CF=983B;NFKC_SCF=983B
# ARIB compatibility ideographs
-cp;FA6B;age=5.2;dm=6075;na=CJK COMPATIBILITY IDEOGRAPH-FA6B;NFKC_CF=6075
-cp;FA6C;age=5.2;dm=242EE;na=CJK COMPATIBILITY IDEOGRAPH-FA6C;NFKC_CF=242EE
-cp;FA6D;age=5.2;dm=8218;na=CJK COMPATIBILITY IDEOGRAPH-FA6D;NFKC_CF=8218
+cp;FA6B;age=5.2;dm=6075;na=CJK COMPATIBILITY IDEOGRAPH-FA6B;NFKC_CF=6075;NFKC_SCF=6075
+cp;FA6C;age=5.2;dm=242EE;na=CJK COMPATIBILITY IDEOGRAPH-FA6C;NFKC_CF=242EE;NFKC_SCF=242EE
+cp;FA6D;age=5.2;dm=8218;na=CJK COMPATIBILITY IDEOGRAPH-FA6D;NFKC_CF=8218;NFKC_SCF=8218
unassigned;FA6E..FA6F;ea=W;lb=ID;vo=U
# DPRK compatibility ideographs
-cp;FA70;age=4.1;dm=4E26;na=CJK COMPATIBILITY IDEOGRAPH-FA70;NFKC_CF=4E26
-cp;FA71;age=4.1;dm=51B5;na=CJK COMPATIBILITY IDEOGRAPH-FA71;NFKC_CF=51B5
-cp;FA72;age=4.1;dm=5168;na=CJK COMPATIBILITY IDEOGRAPH-FA72;NFKC_CF=5168
-cp;FA73;age=4.1;dm=4F80;na=CJK COMPATIBILITY IDEOGRAPH-FA73;NFKC_CF=4F80
-cp;FA74;age=4.1;dm=5145;na=CJK COMPATIBILITY IDEOGRAPH-FA74;NFKC_CF=5145
-cp;FA75;age=4.1;dm=5180;na=CJK COMPATIBILITY IDEOGRAPH-FA75;NFKC_CF=5180
-cp;FA76;age=4.1;dm=52C7;na=CJK COMPATIBILITY IDEOGRAPH-FA76;NFKC_CF=52C7
-cp;FA77;age=4.1;dm=52FA;na=CJK COMPATIBILITY IDEOGRAPH-FA77;NFKC_CF=52FA
-cp;FA78;age=4.1;dm=559D;na=CJK COMPATIBILITY IDEOGRAPH-FA78;NFKC_CF=559D
-cp;FA79;age=4.1;dm=5555;na=CJK COMPATIBILITY IDEOGRAPH-FA79;NFKC_CF=5555
-cp;FA7A;age=4.1;dm=5599;na=CJK COMPATIBILITY IDEOGRAPH-FA7A;NFKC_CF=5599
-cp;FA7B;age=4.1;dm=55E2;na=CJK COMPATIBILITY IDEOGRAPH-FA7B;NFKC_CF=55E2
-cp;FA7C;age=4.1;dm=585A;na=CJK COMPATIBILITY IDEOGRAPH-FA7C;NFKC_CF=585A
-cp;FA7D;age=4.1;dm=58B3;na=CJK COMPATIBILITY IDEOGRAPH-FA7D;NFKC_CF=58B3
-cp;FA7E;age=4.1;dm=5944;na=CJK COMPATIBILITY IDEOGRAPH-FA7E;NFKC_CF=5944
-cp;FA7F;age=4.1;dm=5954;na=CJK COMPATIBILITY IDEOGRAPH-FA7F;NFKC_CF=5954
-cp;FA80;age=4.1;dm=5A62;na=CJK COMPATIBILITY IDEOGRAPH-FA80;NFKC_CF=5A62
-cp;FA81;age=4.1;dm=5B28;na=CJK COMPATIBILITY IDEOGRAPH-FA81;NFKC_CF=5B28
-cp;FA82;age=4.1;dm=5ED2;na=CJK COMPATIBILITY IDEOGRAPH-FA82;NFKC_CF=5ED2
-cp;FA83;age=4.1;dm=5ED9;na=CJK COMPATIBILITY IDEOGRAPH-FA83;NFKC_CF=5ED9
-cp;FA84;age=4.1;dm=5F69;na=CJK COMPATIBILITY IDEOGRAPH-FA84;NFKC_CF=5F69
-cp;FA85;age=4.1;dm=5FAD;na=CJK COMPATIBILITY IDEOGRAPH-FA85;NFKC_CF=5FAD
-cp;FA86;age=4.1;dm=60D8;na=CJK COMPATIBILITY IDEOGRAPH-FA86;NFKC_CF=60D8
-cp;FA87;age=4.1;dm=614E;na=CJK COMPATIBILITY IDEOGRAPH-FA87;NFKC_CF=614E
-cp;FA88;age=4.1;dm=6108;na=CJK COMPATIBILITY IDEOGRAPH-FA88;NFKC_CF=6108
-cp;FA89;age=4.1;dm=618E;na=CJK COMPATIBILITY IDEOGRAPH-FA89;NFKC_CF=618E
-cp;FA8A;age=4.1;dm=6160;na=CJK COMPATIBILITY IDEOGRAPH-FA8A;NFKC_CF=6160
-cp;FA8B;age=4.1;dm=61F2;na=CJK COMPATIBILITY IDEOGRAPH-FA8B;NFKC_CF=61F2
-cp;FA8C;age=4.1;dm=6234;na=CJK COMPATIBILITY IDEOGRAPH-FA8C;NFKC_CF=6234
-cp;FA8D;age=4.1;dm=63C4;na=CJK COMPATIBILITY IDEOGRAPH-FA8D;NFKC_CF=63C4
-cp;FA8E;age=4.1;dm=641C;na=CJK COMPATIBILITY IDEOGRAPH-FA8E;NFKC_CF=641C
-cp;FA8F;age=4.1;dm=6452;na=CJK COMPATIBILITY IDEOGRAPH-FA8F;NFKC_CF=6452
-cp;FA90;age=4.1;dm=6556;na=CJK COMPATIBILITY IDEOGRAPH-FA90;NFKC_CF=6556
-cp;FA91;age=4.1;dm=6674;na=CJK COMPATIBILITY IDEOGRAPH-FA91;NFKC_CF=6674
-cp;FA92;age=4.1;dm=6717;na=CJK COMPATIBILITY IDEOGRAPH-FA92;NFKC_CF=6717
-cp;FA93;age=4.1;dm=671B;na=CJK COMPATIBILITY IDEOGRAPH-FA93;NFKC_CF=671B
-cp;FA94;age=4.1;dm=6756;na=CJK COMPATIBILITY IDEOGRAPH-FA94;NFKC_CF=6756
-cp;FA95;age=4.1;dm=6B79;na=CJK COMPATIBILITY IDEOGRAPH-FA95;NFKC_CF=6B79
-cp;FA96;age=4.1;dm=6BBA;na=CJK COMPATIBILITY IDEOGRAPH-FA96;NFKC_CF=6BBA
-cp;FA97;age=4.1;dm=6D41;na=CJK COMPATIBILITY IDEOGRAPH-FA97;NFKC_CF=6D41
-cp;FA98;age=4.1;dm=6EDB;na=CJK COMPATIBILITY IDEOGRAPH-FA98;NFKC_CF=6EDB
-cp;FA99;age=4.1;dm=6ECB;na=CJK COMPATIBILITY IDEOGRAPH-FA99;NFKC_CF=6ECB
-cp;FA9A;age=4.1;dm=6F22;na=CJK COMPATIBILITY IDEOGRAPH-FA9A;NFKC_CF=6F22
-cp;FA9B;age=4.1;dm=701E;na=CJK COMPATIBILITY IDEOGRAPH-FA9B;NFKC_CF=701E
-cp;FA9C;age=4.1;dm=716E;na=CJK COMPATIBILITY IDEOGRAPH-FA9C;NFKC_CF=716E
-cp;FA9D;age=4.1;dm=77A7;na=CJK COMPATIBILITY IDEOGRAPH-FA9D;NFKC_CF=77A7
-cp;FA9E;age=4.1;dm=7235;na=CJK COMPATIBILITY IDEOGRAPH-FA9E;NFKC_CF=7235
-cp;FA9F;age=4.1;dm=72AF;na=CJK COMPATIBILITY IDEOGRAPH-FA9F;NFKC_CF=72AF
-cp;FAA0;age=4.1;dm=732A;na=CJK COMPATIBILITY IDEOGRAPH-FAA0;NFKC_CF=732A
-cp;FAA1;age=4.1;dm=7471;na=CJK COMPATIBILITY IDEOGRAPH-FAA1;NFKC_CF=7471
-cp;FAA2;age=4.1;dm=7506;na=CJK COMPATIBILITY IDEOGRAPH-FAA2;NFKC_CF=7506
-cp;FAA3;age=4.1;dm=753B;na=CJK COMPATIBILITY IDEOGRAPH-FAA3;NFKC_CF=753B
-cp;FAA4;age=4.1;dm=761D;na=CJK COMPATIBILITY IDEOGRAPH-FAA4;NFKC_CF=761D
-cp;FAA5;age=4.1;dm=761F;na=CJK COMPATIBILITY IDEOGRAPH-FAA5;NFKC_CF=761F
-cp;FAA6;age=4.1;dm=76CA;na=CJK COMPATIBILITY IDEOGRAPH-FAA6;NFKC_CF=76CA
-cp;FAA7;age=4.1;dm=76DB;na=CJK COMPATIBILITY IDEOGRAPH-FAA7;NFKC_CF=76DB
-cp;FAA8;age=4.1;dm=76F4;na=CJK COMPATIBILITY IDEOGRAPH-FAA8;NFKC_CF=76F4
-cp;FAA9;age=4.1;dm=774A;na=CJK COMPATIBILITY IDEOGRAPH-FAA9;NFKC_CF=774A
-cp;FAAA;age=4.1;dm=7740;na=CJK COMPATIBILITY IDEOGRAPH-FAAA;NFKC_CF=7740
-cp;FAAB;age=4.1;dm=78CC;na=CJK COMPATIBILITY IDEOGRAPH-FAAB;NFKC_CF=78CC
-cp;FAAC;age=4.1;dm=7AB1;na=CJK COMPATIBILITY IDEOGRAPH-FAAC;NFKC_CF=7AB1
-cp;FAAD;age=4.1;dm=7BC0;na=CJK COMPATIBILITY IDEOGRAPH-FAAD;NFKC_CF=7BC0
-cp;FAAE;age=4.1;dm=7C7B;na=CJK COMPATIBILITY IDEOGRAPH-FAAE;NFKC_CF=7C7B
-cp;FAAF;age=4.1;dm=7D5B;na=CJK COMPATIBILITY IDEOGRAPH-FAAF;NFKC_CF=7D5B
-cp;FAB0;age=4.1;dm=7DF4;na=CJK COMPATIBILITY IDEOGRAPH-FAB0;NFKC_CF=7DF4
-cp;FAB1;age=4.1;dm=7F3E;na=CJK COMPATIBILITY IDEOGRAPH-FAB1;NFKC_CF=7F3E
-cp;FAB2;age=4.1;dm=8005;na=CJK COMPATIBILITY IDEOGRAPH-FAB2;NFKC_CF=8005
-cp;FAB3;age=4.1;dm=8352;na=CJK COMPATIBILITY IDEOGRAPH-FAB3;NFKC_CF=8352
-cp;FAB4;age=4.1;dm=83EF;na=CJK COMPATIBILITY IDEOGRAPH-FAB4;NFKC_CF=83EF
-cp;FAB5;age=4.1;dm=8779;na=CJK COMPATIBILITY IDEOGRAPH-FAB5;NFKC_CF=8779
-cp;FAB6;age=4.1;dm=8941;na=CJK COMPATIBILITY IDEOGRAPH-FAB6;NFKC_CF=8941
-cp;FAB7;age=4.1;dm=8986;na=CJK COMPATIBILITY IDEOGRAPH-FAB7;NFKC_CF=8986
-cp;FAB8;age=4.1;dm=8996;na=CJK COMPATIBILITY IDEOGRAPH-FAB8;NFKC_CF=8996
-cp;FAB9;age=4.1;dm=8ABF;na=CJK COMPATIBILITY IDEOGRAPH-FAB9;NFKC_CF=8ABF
-cp;FABA;age=4.1;dm=8AF8;na=CJK COMPATIBILITY IDEOGRAPH-FABA;NFKC_CF=8AF8
-cp;FABB;age=4.1;dm=8ACB;na=CJK COMPATIBILITY IDEOGRAPH-FABB;NFKC_CF=8ACB
-cp;FABC;age=4.1;dm=8B01;na=CJK COMPATIBILITY IDEOGRAPH-FABC;NFKC_CF=8B01
-cp;FABD;age=4.1;dm=8AFE;na=CJK COMPATIBILITY IDEOGRAPH-FABD;NFKC_CF=8AFE
-cp;FABE;age=4.1;dm=8AED;na=CJK COMPATIBILITY IDEOGRAPH-FABE;NFKC_CF=8AED
-cp;FABF;age=4.1;dm=8B39;na=CJK COMPATIBILITY IDEOGRAPH-FABF;NFKC_CF=8B39
-cp;FAC0;age=4.1;dm=8B8A;na=CJK COMPATIBILITY IDEOGRAPH-FAC0;NFKC_CF=8B8A
-cp;FAC1;age=4.1;dm=8D08;na=CJK COMPATIBILITY IDEOGRAPH-FAC1;NFKC_CF=8D08
-cp;FAC2;age=4.1;dm=8F38;na=CJK COMPATIBILITY IDEOGRAPH-FAC2;NFKC_CF=8F38
-cp;FAC3;age=4.1;dm=9072;na=CJK COMPATIBILITY IDEOGRAPH-FAC3;NFKC_CF=9072
-cp;FAC4;age=4.1;dm=9199;na=CJK COMPATIBILITY IDEOGRAPH-FAC4;NFKC_CF=9199
-cp;FAC5;age=4.1;dm=9276;na=CJK COMPATIBILITY IDEOGRAPH-FAC5;NFKC_CF=9276
-cp;FAC6;age=4.1;dm=967C;na=CJK COMPATIBILITY IDEOGRAPH-FAC6;NFKC_CF=967C
-cp;FAC7;age=4.1;dm=96E3;na=CJK COMPATIBILITY IDEOGRAPH-FAC7;NFKC_CF=96E3
-cp;FAC8;age=4.1;dm=9756;na=CJK COMPATIBILITY IDEOGRAPH-FAC8;NFKC_CF=9756
-cp;FAC9;age=4.1;dm=97DB;na=CJK COMPATIBILITY IDEOGRAPH-FAC9;NFKC_CF=97DB
-cp;FACA;age=4.1;dm=97FF;na=CJK COMPATIBILITY IDEOGRAPH-FACA;NFKC_CF=97FF
-cp;FACB;age=4.1;dm=980B;na=CJK COMPATIBILITY IDEOGRAPH-FACB;NFKC_CF=980B
-cp;FACC;age=4.1;dm=983B;na=CJK COMPATIBILITY IDEOGRAPH-FACC;NFKC_CF=983B
-cp;FACD;age=4.1;dm=9B12;na=CJK COMPATIBILITY IDEOGRAPH-FACD;NFKC_CF=9B12
-cp;FACE;age=4.1;dm=9F9C;na=CJK COMPATIBILITY IDEOGRAPH-FACE;NFKC_CF=9F9C
-cp;FACF;age=4.1;dm=2284A;na=CJK COMPATIBILITY IDEOGRAPH-FACF;NFKC_CF=2284A
-cp;FAD0;age=4.1;dm=22844;na=CJK COMPATIBILITY IDEOGRAPH-FAD0;NFKC_CF=22844
-cp;FAD1;age=4.1;dm=233D5;na=CJK COMPATIBILITY IDEOGRAPH-FAD1;NFKC_CF=233D5
-cp;FAD2;age=4.1;dm=3B9D;na=CJK COMPATIBILITY IDEOGRAPH-FAD2;NFKC_CF=3B9D
-cp;FAD3;age=4.1;dm=4018;na=CJK COMPATIBILITY IDEOGRAPH-FAD3;NFKC_CF=4018
-cp;FAD4;age=4.1;dm=4039;na=CJK COMPATIBILITY IDEOGRAPH-FAD4;NFKC_CF=4039
-cp;FAD5;age=4.1;dm=25249;na=CJK COMPATIBILITY IDEOGRAPH-FAD5;NFKC_CF=25249
-cp;FAD6;age=4.1;dm=25CD0;na=CJK COMPATIBILITY IDEOGRAPH-FAD6;NFKC_CF=25CD0
-cp;FAD7;age=4.1;dm=27ED3;na=CJK COMPATIBILITY IDEOGRAPH-FAD7;NFKC_CF=27ED3
-cp;FAD8;age=4.1;dm=9F43;na=CJK COMPATIBILITY IDEOGRAPH-FAD8;NFKC_CF=9F43
-cp;FAD9;age=4.1;dm=9F8E;na=CJK COMPATIBILITY IDEOGRAPH-FAD9;NFKC_CF=9F8E
+cp;FA70;age=4.1;dm=4E26;na=CJK COMPATIBILITY IDEOGRAPH-FA70;NFKC_CF=4E26;NFKC_SCF=4E26
+cp;FA71;age=4.1;dm=51B5;na=CJK COMPATIBILITY IDEOGRAPH-FA71;NFKC_CF=51B5;NFKC_SCF=51B5
+cp;FA72;age=4.1;dm=5168;na=CJK COMPATIBILITY IDEOGRAPH-FA72;NFKC_CF=5168;NFKC_SCF=5168
+cp;FA73;age=4.1;dm=4F80;na=CJK COMPATIBILITY IDEOGRAPH-FA73;NFKC_CF=4F80;NFKC_SCF=4F80
+cp;FA74;age=4.1;dm=5145;na=CJK COMPATIBILITY IDEOGRAPH-FA74;NFKC_CF=5145;NFKC_SCF=5145
+cp;FA75;age=4.1;dm=5180;na=CJK COMPATIBILITY IDEOGRAPH-FA75;NFKC_CF=5180;NFKC_SCF=5180
+cp;FA76;age=4.1;dm=52C7;na=CJK COMPATIBILITY IDEOGRAPH-FA76;NFKC_CF=52C7;NFKC_SCF=52C7
+cp;FA77;age=4.1;dm=52FA;na=CJK COMPATIBILITY IDEOGRAPH-FA77;NFKC_CF=52FA;NFKC_SCF=52FA
+cp;FA78;age=4.1;dm=559D;na=CJK COMPATIBILITY IDEOGRAPH-FA78;NFKC_CF=559D;NFKC_SCF=559D
+cp;FA79;age=4.1;dm=5555;na=CJK COMPATIBILITY IDEOGRAPH-FA79;NFKC_CF=5555;NFKC_SCF=5555
+cp;FA7A;age=4.1;dm=5599;na=CJK COMPATIBILITY IDEOGRAPH-FA7A;NFKC_CF=5599;NFKC_SCF=5599
+cp;FA7B;age=4.1;dm=55E2;na=CJK COMPATIBILITY IDEOGRAPH-FA7B;NFKC_CF=55E2;NFKC_SCF=55E2
+cp;FA7C;age=4.1;dm=585A;na=CJK COMPATIBILITY IDEOGRAPH-FA7C;NFKC_CF=585A;NFKC_SCF=585A
+cp;FA7D;age=4.1;dm=58B3;na=CJK COMPATIBILITY IDEOGRAPH-FA7D;NFKC_CF=58B3;NFKC_SCF=58B3
+cp;FA7E;age=4.1;dm=5944;na=CJK COMPATIBILITY IDEOGRAPH-FA7E;NFKC_CF=5944;NFKC_SCF=5944
+cp;FA7F;age=4.1;dm=5954;na=CJK COMPATIBILITY IDEOGRAPH-FA7F;NFKC_CF=5954;NFKC_SCF=5954
+cp;FA80;age=4.1;dm=5A62;na=CJK COMPATIBILITY IDEOGRAPH-FA80;NFKC_CF=5A62;NFKC_SCF=5A62
+cp;FA81;age=4.1;dm=5B28;na=CJK COMPATIBILITY IDEOGRAPH-FA81;NFKC_CF=5B28;NFKC_SCF=5B28
+cp;FA82;age=4.1;dm=5ED2;na=CJK COMPATIBILITY IDEOGRAPH-FA82;NFKC_CF=5ED2;NFKC_SCF=5ED2
+cp;FA83;age=4.1;dm=5ED9;na=CJK COMPATIBILITY IDEOGRAPH-FA83;NFKC_CF=5ED9;NFKC_SCF=5ED9
+cp;FA84;age=4.1;dm=5F69;na=CJK COMPATIBILITY IDEOGRAPH-FA84;NFKC_CF=5F69;NFKC_SCF=5F69
+cp;FA85;age=4.1;dm=5FAD;na=CJK COMPATIBILITY IDEOGRAPH-FA85;NFKC_CF=5FAD;NFKC_SCF=5FAD
+cp;FA86;age=4.1;dm=60D8;na=CJK COMPATIBILITY IDEOGRAPH-FA86;NFKC_CF=60D8;NFKC_SCF=60D8
+cp;FA87;age=4.1;dm=614E;na=CJK COMPATIBILITY IDEOGRAPH-FA87;NFKC_CF=614E;NFKC_SCF=614E
+cp;FA88;age=4.1;dm=6108;na=CJK COMPATIBILITY IDEOGRAPH-FA88;NFKC_CF=6108;NFKC_SCF=6108
+cp;FA89;age=4.1;dm=618E;na=CJK COMPATIBILITY IDEOGRAPH-FA89;NFKC_CF=618E;NFKC_SCF=618E
+cp;FA8A;age=4.1;dm=6160;na=CJK COMPATIBILITY IDEOGRAPH-FA8A;NFKC_CF=6160;NFKC_SCF=6160
+cp;FA8B;age=4.1;dm=61F2;na=CJK COMPATIBILITY IDEOGRAPH-FA8B;NFKC_CF=61F2;NFKC_SCF=61F2
+cp;FA8C;age=4.1;dm=6234;na=CJK COMPATIBILITY IDEOGRAPH-FA8C;NFKC_CF=6234;NFKC_SCF=6234
+cp;FA8D;age=4.1;dm=63C4;na=CJK COMPATIBILITY IDEOGRAPH-FA8D;NFKC_CF=63C4;NFKC_SCF=63C4
+cp;FA8E;age=4.1;dm=641C;na=CJK COMPATIBILITY IDEOGRAPH-FA8E;NFKC_CF=641C;NFKC_SCF=641C
+cp;FA8F;age=4.1;dm=6452;na=CJK COMPATIBILITY IDEOGRAPH-FA8F;NFKC_CF=6452;NFKC_SCF=6452
+cp;FA90;age=4.1;dm=6556;na=CJK COMPATIBILITY IDEOGRAPH-FA90;NFKC_CF=6556;NFKC_SCF=6556
+cp;FA91;age=4.1;dm=6674;na=CJK COMPATIBILITY IDEOGRAPH-FA91;NFKC_CF=6674;NFKC_SCF=6674
+cp;FA92;age=4.1;dm=6717;na=CJK COMPATIBILITY IDEOGRAPH-FA92;NFKC_CF=6717;NFKC_SCF=6717
+cp;FA93;age=4.1;dm=671B;na=CJK COMPATIBILITY IDEOGRAPH-FA93;NFKC_CF=671B;NFKC_SCF=671B
+cp;FA94;age=4.1;dm=6756;na=CJK COMPATIBILITY IDEOGRAPH-FA94;NFKC_CF=6756;NFKC_SCF=6756
+cp;FA95;age=4.1;dm=6B79;na=CJK COMPATIBILITY IDEOGRAPH-FA95;NFKC_CF=6B79;NFKC_SCF=6B79
+cp;FA96;age=4.1;dm=6BBA;na=CJK COMPATIBILITY IDEOGRAPH-FA96;NFKC_CF=6BBA;NFKC_SCF=6BBA
+cp;FA97;age=4.1;dm=6D41;na=CJK COMPATIBILITY IDEOGRAPH-FA97;NFKC_CF=6D41;NFKC_SCF=6D41
+cp;FA98;age=4.1;dm=6EDB;na=CJK COMPATIBILITY IDEOGRAPH-FA98;NFKC_CF=6EDB;NFKC_SCF=6EDB
+cp;FA99;age=4.1;dm=6ECB;na=CJK COMPATIBILITY IDEOGRAPH-FA99;NFKC_CF=6ECB;NFKC_SCF=6ECB
+cp;FA9A;age=4.1;dm=6F22;na=CJK COMPATIBILITY IDEOGRAPH-FA9A;NFKC_CF=6F22;NFKC_SCF=6F22
+cp;FA9B;age=4.1;dm=701E;na=CJK COMPATIBILITY IDEOGRAPH-FA9B;NFKC_CF=701E;NFKC_SCF=701E
+cp;FA9C;age=4.1;dm=716E;na=CJK COMPATIBILITY IDEOGRAPH-FA9C;NFKC_CF=716E;NFKC_SCF=716E
+cp;FA9D;age=4.1;dm=77A7;na=CJK COMPATIBILITY IDEOGRAPH-FA9D;NFKC_CF=77A7;NFKC_SCF=77A7
+cp;FA9E;age=4.1;dm=7235;na=CJK COMPATIBILITY IDEOGRAPH-FA9E;NFKC_CF=7235;NFKC_SCF=7235
+cp;FA9F;age=4.1;dm=72AF;na=CJK COMPATIBILITY IDEOGRAPH-FA9F;NFKC_CF=72AF;NFKC_SCF=72AF
+cp;FAA0;age=4.1;dm=732A;na=CJK COMPATIBILITY IDEOGRAPH-FAA0;NFKC_CF=732A;NFKC_SCF=732A
+cp;FAA1;age=4.1;dm=7471;na=CJK COMPATIBILITY IDEOGRAPH-FAA1;NFKC_CF=7471;NFKC_SCF=7471
+cp;FAA2;age=4.1;dm=7506;na=CJK COMPATIBILITY IDEOGRAPH-FAA2;NFKC_CF=7506;NFKC_SCF=7506
+cp;FAA3;age=4.1;dm=753B;na=CJK COMPATIBILITY IDEOGRAPH-FAA3;NFKC_CF=753B;NFKC_SCF=753B
+cp;FAA4;age=4.1;dm=761D;na=CJK COMPATIBILITY IDEOGRAPH-FAA4;NFKC_CF=761D;NFKC_SCF=761D
+cp;FAA5;age=4.1;dm=761F;na=CJK COMPATIBILITY IDEOGRAPH-FAA5;NFKC_CF=761F;NFKC_SCF=761F
+cp;FAA6;age=4.1;dm=76CA;na=CJK COMPATIBILITY IDEOGRAPH-FAA6;NFKC_CF=76CA;NFKC_SCF=76CA
+cp;FAA7;age=4.1;dm=76DB;na=CJK COMPATIBILITY IDEOGRAPH-FAA7;NFKC_CF=76DB;NFKC_SCF=76DB
+cp;FAA8;age=4.1;dm=76F4;na=CJK COMPATIBILITY IDEOGRAPH-FAA8;NFKC_CF=76F4;NFKC_SCF=76F4
+cp;FAA9;age=4.1;dm=774A;na=CJK COMPATIBILITY IDEOGRAPH-FAA9;NFKC_CF=774A;NFKC_SCF=774A
+cp;FAAA;age=4.1;dm=7740;na=CJK COMPATIBILITY IDEOGRAPH-FAAA;NFKC_CF=7740;NFKC_SCF=7740
+cp;FAAB;age=4.1;dm=78CC;na=CJK COMPATIBILITY IDEOGRAPH-FAAB;NFKC_CF=78CC;NFKC_SCF=78CC
+cp;FAAC;age=4.1;dm=7AB1;na=CJK COMPATIBILITY IDEOGRAPH-FAAC;NFKC_CF=7AB1;NFKC_SCF=7AB1
+cp;FAAD;age=4.1;dm=7BC0;na=CJK COMPATIBILITY IDEOGRAPH-FAAD;NFKC_CF=7BC0;NFKC_SCF=7BC0
+cp;FAAE;age=4.1;dm=7C7B;na=CJK COMPATIBILITY IDEOGRAPH-FAAE;NFKC_CF=7C7B;NFKC_SCF=7C7B
+cp;FAAF;age=4.1;dm=7D5B;na=CJK COMPATIBILITY IDEOGRAPH-FAAF;NFKC_CF=7D5B;NFKC_SCF=7D5B
+cp;FAB0;age=4.1;dm=7DF4;na=CJK COMPATIBILITY IDEOGRAPH-FAB0;NFKC_CF=7DF4;NFKC_SCF=7DF4
+cp;FAB1;age=4.1;dm=7F3E;na=CJK COMPATIBILITY IDEOGRAPH-FAB1;NFKC_CF=7F3E;NFKC_SCF=7F3E
+cp;FAB2;age=4.1;dm=8005;na=CJK COMPATIBILITY IDEOGRAPH-FAB2;NFKC_CF=8005;NFKC_SCF=8005
+cp;FAB3;age=4.1;dm=8352;na=CJK COMPATIBILITY IDEOGRAPH-FAB3;NFKC_CF=8352;NFKC_SCF=8352
+cp;FAB4;age=4.1;dm=83EF;na=CJK COMPATIBILITY IDEOGRAPH-FAB4;NFKC_CF=83EF;NFKC_SCF=83EF
+cp;FAB5;age=4.1;dm=8779;na=CJK COMPATIBILITY IDEOGRAPH-FAB5;NFKC_CF=8779;NFKC_SCF=8779
+cp;FAB6;age=4.1;dm=8941;na=CJK COMPATIBILITY IDEOGRAPH-FAB6;NFKC_CF=8941;NFKC_SCF=8941
+cp;FAB7;age=4.1;dm=8986;na=CJK COMPATIBILITY IDEOGRAPH-FAB7;NFKC_CF=8986;NFKC_SCF=8986
+cp;FAB8;age=4.1;dm=8996;na=CJK COMPATIBILITY IDEOGRAPH-FAB8;NFKC_CF=8996;NFKC_SCF=8996
+cp;FAB9;age=4.1;dm=8ABF;na=CJK COMPATIBILITY IDEOGRAPH-FAB9;NFKC_CF=8ABF;NFKC_SCF=8ABF
+cp;FABA;age=4.1;dm=8AF8;na=CJK COMPATIBILITY IDEOGRAPH-FABA;NFKC_CF=8AF8;NFKC_SCF=8AF8
+cp;FABB;age=4.1;dm=8ACB;na=CJK COMPATIBILITY IDEOGRAPH-FABB;NFKC_CF=8ACB;NFKC_SCF=8ACB
+cp;FABC;age=4.1;dm=8B01;na=CJK COMPATIBILITY IDEOGRAPH-FABC;NFKC_CF=8B01;NFKC_SCF=8B01
+cp;FABD;age=4.1;dm=8AFE;na=CJK COMPATIBILITY IDEOGRAPH-FABD;NFKC_CF=8AFE;NFKC_SCF=8AFE
+cp;FABE;age=4.1;dm=8AED;na=CJK COMPATIBILITY IDEOGRAPH-FABE;NFKC_CF=8AED;NFKC_SCF=8AED
+cp;FABF;age=4.1;dm=8B39;na=CJK COMPATIBILITY IDEOGRAPH-FABF;NFKC_CF=8B39;NFKC_SCF=8B39
+cp;FAC0;age=4.1;dm=8B8A;na=CJK COMPATIBILITY IDEOGRAPH-FAC0;NFKC_CF=8B8A;NFKC_SCF=8B8A
+cp;FAC1;age=4.1;dm=8D08;na=CJK COMPATIBILITY IDEOGRAPH-FAC1;NFKC_CF=8D08;NFKC_SCF=8D08
+cp;FAC2;age=4.1;dm=8F38;na=CJK COMPATIBILITY IDEOGRAPH-FAC2;NFKC_CF=8F38;NFKC_SCF=8F38
+cp;FAC3;age=4.1;dm=9072;na=CJK COMPATIBILITY IDEOGRAPH-FAC3;NFKC_CF=9072;NFKC_SCF=9072
+cp;FAC4;age=4.1;dm=9199;na=CJK COMPATIBILITY IDEOGRAPH-FAC4;NFKC_CF=9199;NFKC_SCF=9199
+cp;FAC5;age=4.1;dm=9276;na=CJK COMPATIBILITY IDEOGRAPH-FAC5;NFKC_CF=9276;NFKC_SCF=9276
+cp;FAC6;age=4.1;dm=967C;na=CJK COMPATIBILITY IDEOGRAPH-FAC6;NFKC_CF=967C;NFKC_SCF=967C
+cp;FAC7;age=4.1;dm=96E3;na=CJK COMPATIBILITY IDEOGRAPH-FAC7;NFKC_CF=96E3;NFKC_SCF=96E3
+cp;FAC8;age=4.1;dm=9756;na=CJK COMPATIBILITY IDEOGRAPH-FAC8;NFKC_CF=9756;NFKC_SCF=9756
+cp;FAC9;age=4.1;dm=97DB;na=CJK COMPATIBILITY IDEOGRAPH-FAC9;NFKC_CF=97DB;NFKC_SCF=97DB
+cp;FACA;age=4.1;dm=97FF;na=CJK COMPATIBILITY IDEOGRAPH-FACA;NFKC_CF=97FF;NFKC_SCF=97FF
+cp;FACB;age=4.1;dm=980B;na=CJK COMPATIBILITY IDEOGRAPH-FACB;NFKC_CF=980B;NFKC_SCF=980B
+cp;FACC;age=4.1;dm=983B;na=CJK COMPATIBILITY IDEOGRAPH-FACC;NFKC_CF=983B;NFKC_SCF=983B
+cp;FACD;age=4.1;dm=9B12;na=CJK COMPATIBILITY IDEOGRAPH-FACD;NFKC_CF=9B12;NFKC_SCF=9B12
+cp;FACE;age=4.1;dm=9F9C;na=CJK COMPATIBILITY IDEOGRAPH-FACE;NFKC_CF=9F9C;NFKC_SCF=9F9C
+cp;FACF;age=4.1;dm=2284A;na=CJK COMPATIBILITY IDEOGRAPH-FACF;NFKC_CF=2284A;NFKC_SCF=2284A
+cp;FAD0;age=4.1;dm=22844;na=CJK COMPATIBILITY IDEOGRAPH-FAD0;NFKC_CF=22844;NFKC_SCF=22844
+cp;FAD1;age=4.1;dm=233D5;na=CJK COMPATIBILITY IDEOGRAPH-FAD1;NFKC_CF=233D5;NFKC_SCF=233D5
+cp;FAD2;age=4.1;dm=3B9D;na=CJK COMPATIBILITY IDEOGRAPH-FAD2;NFKC_CF=3B9D;NFKC_SCF=3B9D
+cp;FAD3;age=4.1;dm=4018;na=CJK COMPATIBILITY IDEOGRAPH-FAD3;NFKC_CF=4018;NFKC_SCF=4018
+cp;FAD4;age=4.1;dm=4039;na=CJK COMPATIBILITY IDEOGRAPH-FAD4;NFKC_CF=4039;NFKC_SCF=4039
+cp;FAD5;age=4.1;dm=25249;na=CJK COMPATIBILITY IDEOGRAPH-FAD5;NFKC_CF=25249;NFKC_SCF=25249
+cp;FAD6;age=4.1;dm=25CD0;na=CJK COMPATIBILITY IDEOGRAPH-FAD6;NFKC_CF=25CD0;NFKC_SCF=25CD0
+cp;FAD7;age=4.1;dm=27ED3;na=CJK COMPATIBILITY IDEOGRAPH-FAD7;NFKC_CF=27ED3;NFKC_SCF=27ED3
+cp;FAD8;age=4.1;dm=9F43;na=CJK COMPATIBILITY IDEOGRAPH-FAD8;NFKC_CF=9F43;NFKC_SCF=9F43
+cp;FAD9;age=4.1;dm=9F8E;na=CJK COMPATIBILITY IDEOGRAPH-FAD9;NFKC_CF=9F8E;NFKC_SCF=9F8E
unassigned;FADA..FAFF;ea=W;lb=ID;vo=U
block;FB00..FB4F;age=1.1;Alpha;bc=R;blk=Alphabetic_PF;Comp_Ex;CWKCF;dt=Can;gc=Lo;Gr_Base;IDC;IDS;lb=HL;NFC_QC=N;NFD_QC=N;NFKC_QC=N;NFKD_QC=N;SB=LE;sc=Hebr;WB=HL;XIDC;XIDS
# FB00..FB4F Alphabetic Presentation Forms
# Latin ligatures
-cp;FB00;bc=L;Cased;cf=0066 0066;-Comp_Ex;CWCF;CWCM;CWT;CWU;dm=0066 0066;dt=Com;gc=Ll;lb=AL;lc=FB00;Lower;na=LATIN SMALL LIGATURE FF;NFC_QC=Y;NFD_QC=Y;NFKC_CF=0066 0066;SB=LO;sc=Latn;tc=0046 0066;uc=0046 0046;WB=LE
-cp;FB01;bc=L;Cased;cf=0066 0069;-Comp_Ex;CWCF;CWCM;CWT;CWU;dm=0066 0069;dt=Com;gc=Ll;lb=AL;lc=FB01;Lower;na=LATIN SMALL LIGATURE FI;NFC_QC=Y;NFD_QC=Y;NFKC_CF=0066 0069;SB=LO;sc=Latn;tc=0046 0069;uc=0046 0049;WB=LE
-cp;FB02;bc=L;Cased;cf=0066 006C;-Comp_Ex;CWCF;CWCM;CWT;CWU;dm=0066 006C;dt=Com;gc=Ll;lb=AL;lc=FB02;Lower;na=LATIN SMALL LIGATURE FL;NFC_QC=Y;NFD_QC=Y;NFKC_CF=0066 006C;SB=LO;sc=Latn;tc=0046 006C;uc=0046 004C;WB=LE
-cp;FB03;bc=L;Cased;cf=0066 0066 0069;-Comp_Ex;CWCF;CWCM;CWT;CWU;dm=0066 0066 0069;dt=Com;gc=Ll;lb=AL;lc=FB03;Lower;na=LATIN SMALL LIGATURE FFI;NFC_QC=Y;NFD_QC=Y;NFKC_CF=0066 0066 0069;SB=LO;sc=Latn;tc=0046 0066 0069;uc=0046 0046 0049;WB=LE
-cp;FB04;bc=L;Cased;cf=0066 0066 006C;-Comp_Ex;CWCF;CWCM;CWT;CWU;dm=0066 0066 006C;dt=Com;gc=Ll;lb=AL;lc=FB04;Lower;na=LATIN SMALL LIGATURE FFL;NFC_QC=Y;NFD_QC=Y;NFKC_CF=0066 0066 006C;SB=LO;sc=Latn;tc=0046 0066 006C;uc=0046 0046 004C;WB=LE
-cp;FB05;bc=L;Cased;cf=0073 0074;-Comp_Ex;CWCF;CWCM;CWT;CWU;dm=017F 0074;dt=Com;gc=Ll;lb=AL;lc=FB05;Lower;na=LATIN SMALL LIGATURE LONG S T;NFC_QC=Y;NFD_QC=Y;NFKC_CF=0073 0074;SB=LO;sc=Latn;tc=0053 0074;uc=0053 0054;WB=LE
-cp;FB06;bc=L;Cased;cf=0073 0074;-Comp_Ex;CWCF;CWCM;CWT;CWU;dm=0073 0074;dt=Com;gc=Ll;lb=AL;lc=FB06;Lower;na=LATIN SMALL LIGATURE ST;NFC_QC=Y;NFD_QC=Y;NFKC_CF=0073 0074;SB=LO;sc=Latn;tc=0053 0074;uc=0053 0054;WB=LE
+cp;FB00;bc=L;Cased;cf=0066 0066;-Comp_Ex;CWCF;CWCM;CWT;CWU;dm=0066 0066;dt=Com;gc=Ll;lb=AL;lc=FB00;Lower;na=LATIN SMALL LIGATURE FF;NFC_QC=Y;NFD_QC=Y;NFKC_CF=0066 0066;NFKC_SCF=0066 0066;SB=LO;sc=Latn;tc=0046 0066;uc=0046 0046;WB=LE
+cp;FB01;bc=L;Cased;cf=0066 0069;-Comp_Ex;CWCF;CWCM;CWT;CWU;dm=0066 0069;dt=Com;gc=Ll;lb=AL;lc=FB01;Lower;na=LATIN SMALL LIGATURE FI;NFC_QC=Y;NFD_QC=Y;NFKC_CF=0066 0069;NFKC_SCF=0066 0069;SB=LO;sc=Latn;tc=0046 0069;uc=0046 0049;WB=LE
+cp;FB02;bc=L;Cased;cf=0066 006C;-Comp_Ex;CWCF;CWCM;CWT;CWU;dm=0066 006C;dt=Com;gc=Ll;lb=AL;lc=FB02;Lower;na=LATIN SMALL LIGATURE FL;NFC_QC=Y;NFD_QC=Y;NFKC_CF=0066 006C;NFKC_SCF=0066 006C;SB=LO;sc=Latn;tc=0046 006C;uc=0046 004C;WB=LE
+cp;FB03;bc=L;Cased;cf=0066 0066 0069;-Comp_Ex;CWCF;CWCM;CWT;CWU;dm=0066 0066 0069;dt=Com;gc=Ll;lb=AL;lc=FB03;Lower;na=LATIN SMALL LIGATURE FFI;NFC_QC=Y;NFD_QC=Y;NFKC_CF=0066 0066 0069;NFKC_SCF=0066 0066 0069;SB=LO;sc=Latn;tc=0046 0066 0069;uc=0046 0046 0049;WB=LE
+cp;FB04;bc=L;Cased;cf=0066 0066 006C;-Comp_Ex;CWCF;CWCM;CWT;CWU;dm=0066 0066 006C;dt=Com;gc=Ll;lb=AL;lc=FB04;Lower;na=LATIN SMALL LIGATURE FFL;NFC_QC=Y;NFD_QC=Y;NFKC_CF=0066 0066 006C;NFKC_SCF=0066 0066 006C;SB=LO;sc=Latn;tc=0046 0066 006C;uc=0046 0046 004C;WB=LE
+cp;FB05;bc=L;Cased;cf=0073 0074;-Comp_Ex;CWCF;CWCM;CWT;CWU;dm=017F 0074;dt=Com;gc=Ll;lb=AL;lc=FB05;Lower;na=LATIN SMALL LIGATURE LONG S T;NFC_QC=Y;NFD_QC=Y;NFKC_CF=0073 0074;NFKC_SCF=0073 0074;SB=LO;sc=Latn;scf=FB06;tc=0053 0074;uc=0053 0054;WB=LE
+cp;FB06;bc=L;Cased;cf=0073 0074;-Comp_Ex;CWCF;CWCM;CWT;CWU;dm=0073 0074;dt=Com;gc=Ll;lb=AL;lc=FB06;Lower;na=LATIN SMALL LIGATURE ST;NFC_QC=Y;NFD_QC=Y;NFKC_CF=0073 0074;NFKC_SCF=0073 0074;SB=LO;sc=Latn;tc=0053 0074;uc=0053 0054;WB=LE
unassigned;FB07..FB12
# Armenian ligatures
-cp;FB13;bc=L;Cased;cf=0574 0576;-Comp_Ex;CWCF;CWCM;CWT;CWU;dm=0574 0576;dt=Com;gc=Ll;lb=AL;lc=FB13;Lower;na=ARMENIAN SMALL LIGATURE MEN NOW;NFC_QC=Y;NFD_QC=Y;NFKC_CF=0574 0576;SB=LO;sc=Armn;tc=0544 0576;uc=0544 0546;WB=LE
-cp;FB14;bc=L;Cased;cf=0574 0565;-Comp_Ex;CWCF;CWCM;CWT;CWU;dm=0574 0565;dt=Com;gc=Ll;lb=AL;lc=FB14;Lower;na=ARMENIAN SMALL LIGATURE MEN ECH;NFC_QC=Y;NFD_QC=Y;NFKC_CF=0574 0565;SB=LO;sc=Armn;tc=0544 0565;uc=0544 0535;WB=LE
-cp;FB15;bc=L;Cased;cf=0574 056B;-Comp_Ex;CWCF;CWCM;CWT;CWU;dm=0574 056B;dt=Com;gc=Ll;lb=AL;lc=FB15;Lower;na=ARMENIAN SMALL LIGATURE MEN INI;NFC_QC=Y;NFD_QC=Y;NFKC_CF=0574 056B;SB=LO;sc=Armn;tc=0544 056B;uc=0544 053B;WB=LE
-cp;FB16;bc=L;Cased;cf=057E 0576;-Comp_Ex;CWCF;CWCM;CWT;CWU;dm=057E 0576;dt=Com;gc=Ll;lb=AL;lc=FB16;Lower;na=ARMENIAN SMALL LIGATURE VEW NOW;NFC_QC=Y;NFD_QC=Y;NFKC_CF=057E 0576;SB=LO;sc=Armn;tc=054E 0576;uc=054E 0546;WB=LE
-cp;FB17;bc=L;Cased;cf=0574 056D;-Comp_Ex;CWCF;CWCM;CWT;CWU;dm=0574 056D;dt=Com;gc=Ll;lb=AL;lc=FB17;Lower;na=ARMENIAN SMALL LIGATURE MEN XEH;NFC_QC=Y;NFD_QC=Y;NFKC_CF=0574 056D;SB=LO;sc=Armn;tc=0544 056D;uc=0544 053D;WB=LE
+cp;FB13;bc=L;Cased;cf=0574 0576;-Comp_Ex;CWCF;CWCM;CWT;CWU;dm=0574 0576;dt=Com;gc=Ll;lb=AL;lc=FB13;Lower;na=ARMENIAN SMALL LIGATURE MEN NOW;NFC_QC=Y;NFD_QC=Y;NFKC_CF=0574 0576;NFKC_SCF=0574 0576;SB=LO;sc=Armn;tc=0544 0576;uc=0544 0546;WB=LE
+cp;FB14;bc=L;Cased;cf=0574 0565;-Comp_Ex;CWCF;CWCM;CWT;CWU;dm=0574 0565;dt=Com;gc=Ll;lb=AL;lc=FB14;Lower;na=ARMENIAN SMALL LIGATURE MEN ECH;NFC_QC=Y;NFD_QC=Y;NFKC_CF=0574 0565;NFKC_SCF=0574 0565;SB=LO;sc=Armn;tc=0544 0565;uc=0544 0535;WB=LE
+cp;FB15;bc=L;Cased;cf=0574 056B;-Comp_Ex;CWCF;CWCM;CWT;CWU;dm=0574 056B;dt=Com;gc=Ll;lb=AL;lc=FB15;Lower;na=ARMENIAN SMALL LIGATURE MEN INI;NFC_QC=Y;NFD_QC=Y;NFKC_CF=0574 056B;NFKC_SCF=0574 056B;SB=LO;sc=Armn;tc=0544 056B;uc=0544 053B;WB=LE
+cp;FB16;bc=L;Cased;cf=057E 0576;-Comp_Ex;CWCF;CWCM;CWT;CWU;dm=057E 0576;dt=Com;gc=Ll;lb=AL;lc=FB16;Lower;na=ARMENIAN SMALL LIGATURE VEW NOW;NFC_QC=Y;NFD_QC=Y;NFKC_CF=057E 0576;NFKC_SCF=057E 0576;SB=LO;sc=Armn;tc=054E 0576;uc=054E 0546;WB=LE
+cp;FB17;bc=L;Cased;cf=0574 056D;-Comp_Ex;CWCF;CWCM;CWT;CWU;dm=0574 056D;dt=Com;gc=Ll;lb=AL;lc=FB17;Lower;na=ARMENIAN SMALL LIGATURE MEN XEH;NFC_QC=Y;NFD_QC=Y;NFKC_CF=0574 056D;NFKC_SCF=0574 056D;SB=LO;sc=Armn;tc=0544 056D;uc=0544 053D;WB=LE
unassigned;FB18..FB1C
# Hebrew presentation forms
-cp;FB1D;age=3.0;dm=05D9 05B4;na=HEBREW LETTER YOD WITH HIRIQ;NFKC_CF=05D9 05B4
-cp;FB1E;bc=NSM;ccc=26;CI;-Comp_Ex;-CWKCF;Dia;dt=None;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=HEBREW POINT JUDEO-SPANISH VARIKA;NFC_QC=Y;NFD_QC=Y;NFKC_QC=Y;NFKD_QC=Y;SB=EX;WB=Extend;-XIDS
-cp;FB1F;dm=05F2 05B7;na=HEBREW LIGATURE YIDDISH YOD YOD PATAH;NFKC_CF=05F2 05B7
-cp;FB20;-Comp_Ex;dm=05E2;dt=Font;na=HEBREW LETTER ALTERNATIVE AYIN;NFC_QC=Y;NFD_QC=Y;NFKC_CF=05E2
-cp;FB21;-Comp_Ex;dm=05D0;dt=Font;na=HEBREW LETTER WIDE ALEF;NFC_QC=Y;NFD_QC=Y;NFKC_CF=05D0
-cp;FB22;-Comp_Ex;dm=05D3;dt=Font;na=HEBREW LETTER WIDE DALET;NFC_QC=Y;NFD_QC=Y;NFKC_CF=05D3
-cp;FB23;-Comp_Ex;dm=05D4;dt=Font;na=HEBREW LETTER WIDE HE;NFC_QC=Y;NFD_QC=Y;NFKC_CF=05D4
-cp;FB24;-Comp_Ex;dm=05DB;dt=Font;na=HEBREW LETTER WIDE KAF;NFC_QC=Y;NFD_QC=Y;NFKC_CF=05DB
-cp;FB25;-Comp_Ex;dm=05DC;dt=Font;na=HEBREW LETTER WIDE LAMED;NFC_QC=Y;NFD_QC=Y;NFKC_CF=05DC
-cp;FB26;-Comp_Ex;dm=05DD;dt=Font;na=HEBREW LETTER WIDE FINAL MEM;NFC_QC=Y;NFD_QC=Y;NFKC_CF=05DD
-cp;FB27;-Comp_Ex;dm=05E8;dt=Font;na=HEBREW LETTER WIDE RESH;NFC_QC=Y;NFD_QC=Y;NFKC_CF=05E8
-cp;FB28;-Comp_Ex;dm=05EA;dt=Font;na=HEBREW LETTER WIDE TAV;NFC_QC=Y;NFD_QC=Y;NFKC_CF=05EA
-cp;FB29;-Alpha;bc=ES;-Comp_Ex;dm=002B;dt=Font;gc=Sm;-IDC;-IDS;lb=AL;Math;na=HEBREW LETTER ALTERNATIVE PLUS SIGN;NFC_QC=Y;NFD_QC=Y;NFKC_CF=002B;SB=XX;WB=XX;-XIDC;-XIDS
-cp;FB2A;dm=05E9 05C1;na=HEBREW LETTER SHIN WITH SHIN DOT;NFKC_CF=05E9 05C1
-cp;FB2B;dm=05E9 05C2;na=HEBREW LETTER SHIN WITH SIN DOT;NFKC_CF=05E9 05C2
-cp;FB2C;dm=FB49 05C1;na=HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT;NFKC_CF=05E9 05BC 05C1
-cp;FB2D;dm=FB49 05C2;na=HEBREW LETTER SHIN WITH DAGESH AND SIN DOT;NFKC_CF=05E9 05BC 05C2
-cp;FB2E;dm=05D0 05B7;na=HEBREW LETTER ALEF WITH PATAH;NFKC_CF=05D0 05B7
-cp;FB2F;dm=05D0 05B8;na=HEBREW LETTER ALEF WITH QAMATS;NFKC_CF=05D0 05B8
-cp;FB30;dm=05D0 05BC;na=HEBREW LETTER ALEF WITH MAPIQ;NFKC_CF=05D0 05BC
-cp;FB31;dm=05D1 05BC;na=HEBREW LETTER BET WITH DAGESH;NFKC_CF=05D1 05BC
-cp;FB32;dm=05D2 05BC;na=HEBREW LETTER GIMEL WITH DAGESH;NFKC_CF=05D2 05BC
-cp;FB33;dm=05D3 05BC;na=HEBREW LETTER DALET WITH DAGESH;NFKC_CF=05D3 05BC
-cp;FB34;dm=05D4 05BC;na=HEBREW LETTER HE WITH MAPIQ;NFKC_CF=05D4 05BC
-cp;FB35;dm=05D5 05BC;na=HEBREW LETTER VAV WITH DAGESH;NFKC_CF=05D5 05BC
-cp;FB36;dm=05D6 05BC;na=HEBREW LETTER ZAYIN WITH DAGESH;NFKC_CF=05D6 05BC
+cp;FB1D;age=3.0;dm=05D9 05B4;na=HEBREW LETTER YOD WITH HIRIQ;NFKC_CF=05D9 05B4;NFKC_SCF=05D9 05B4
+cp;FB1E;bc=NSM;ccc=26;CI;-Comp_Ex;-CWKCF;Dia;dt=None;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=HEBREW POINT JUDEO-SPANISH VARIKA;NFC_QC=Y;NFD_QC=Y;NFKC_QC=Y;NFKD_QC=Y;SB=EX;WB=Extend;-XIDS
+cp;FB1F;dm=05F2 05B7;na=HEBREW LIGATURE YIDDISH YOD YOD PATAH;NFKC_CF=05F2 05B7;NFKC_SCF=05F2 05B7
+cp;FB20;-Comp_Ex;dm=05E2;dt=Font;na=HEBREW LETTER ALTERNATIVE AYIN;NFC_QC=Y;NFD_QC=Y;NFKC_CF=05E2;NFKC_SCF=05E2
+cp;FB21;-Comp_Ex;dm=05D0;dt=Font;na=HEBREW LETTER WIDE ALEF;NFC_QC=Y;NFD_QC=Y;NFKC_CF=05D0;NFKC_SCF=05D0
+cp;FB22;-Comp_Ex;dm=05D3;dt=Font;na=HEBREW LETTER WIDE DALET;NFC_QC=Y;NFD_QC=Y;NFKC_CF=05D3;NFKC_SCF=05D3
+cp;FB23;-Comp_Ex;dm=05D4;dt=Font;na=HEBREW LETTER WIDE HE;NFC_QC=Y;NFD_QC=Y;NFKC_CF=05D4;NFKC_SCF=05D4
+cp;FB24;-Comp_Ex;dm=05DB;dt=Font;na=HEBREW LETTER WIDE KAF;NFC_QC=Y;NFD_QC=Y;NFKC_CF=05DB;NFKC_SCF=05DB
+cp;FB25;-Comp_Ex;dm=05DC;dt=Font;na=HEBREW LETTER WIDE LAMED;NFC_QC=Y;NFD_QC=Y;NFKC_CF=05DC;NFKC_SCF=05DC
+cp;FB26;-Comp_Ex;dm=05DD;dt=Font;na=HEBREW LETTER WIDE FINAL MEM;NFC_QC=Y;NFD_QC=Y;NFKC_CF=05DD;NFKC_SCF=05DD
+cp;FB27;-Comp_Ex;dm=05E8;dt=Font;na=HEBREW LETTER WIDE RESH;NFC_QC=Y;NFD_QC=Y;NFKC_CF=05E8;NFKC_SCF=05E8
+cp;FB28;-Comp_Ex;dm=05EA;dt=Font;na=HEBREW LETTER WIDE TAV;NFC_QC=Y;NFD_QC=Y;NFKC_CF=05EA;NFKC_SCF=05EA
+cp;FB29;-Alpha;bc=ES;-Comp_Ex;dm=002B;dt=Font;gc=Sm;-IDC;-IDS;lb=AL;Math;na=HEBREW LETTER ALTERNATIVE PLUS SIGN;NFC_QC=Y;NFD_QC=Y;NFKC_CF=002B;NFKC_SCF=002B;SB=XX;WB=XX;-XIDC;-XIDS
+cp;FB2A;dm=05E9 05C1;na=HEBREW LETTER SHIN WITH SHIN DOT;NFKC_CF=05E9 05C1;NFKC_SCF=05E9 05C1
+cp;FB2B;dm=05E9 05C2;na=HEBREW LETTER SHIN WITH SIN DOT;NFKC_CF=05E9 05C2;NFKC_SCF=05E9 05C2
+cp;FB2C;dm=FB49 05C1;na=HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT;NFKC_CF=05E9 05BC 05C1;NFKC_SCF=05E9 05BC 05C1
+cp;FB2D;dm=FB49 05C2;na=HEBREW LETTER SHIN WITH DAGESH AND SIN DOT;NFKC_CF=05E9 05BC 05C2;NFKC_SCF=05E9 05BC 05C2
+cp;FB2E;dm=05D0 05B7;na=HEBREW LETTER ALEF WITH PATAH;NFKC_CF=05D0 05B7;NFKC_SCF=05D0 05B7
+cp;FB2F;dm=05D0 05B8;na=HEBREW LETTER ALEF WITH QAMATS;NFKC_CF=05D0 05B8;NFKC_SCF=05D0 05B8
+cp;FB30;dm=05D0 05BC;na=HEBREW LETTER ALEF WITH MAPIQ;NFKC_CF=05D0 05BC;NFKC_SCF=05D0 05BC
+cp;FB31;dm=05D1 05BC;na=HEBREW LETTER BET WITH DAGESH;NFKC_CF=05D1 05BC;NFKC_SCF=05D1 05BC
+cp;FB32;dm=05D2 05BC;na=HEBREW LETTER GIMEL WITH DAGESH;NFKC_CF=05D2 05BC;NFKC_SCF=05D2 05BC
+cp;FB33;dm=05D3 05BC;na=HEBREW LETTER DALET WITH DAGESH;NFKC_CF=05D3 05BC;NFKC_SCF=05D3 05BC
+cp;FB34;dm=05D4 05BC;na=HEBREW LETTER HE WITH MAPIQ;NFKC_CF=05D4 05BC;NFKC_SCF=05D4 05BC
+cp;FB35;dm=05D5 05BC;na=HEBREW LETTER VAV WITH DAGESH;NFKC_CF=05D5 05BC;NFKC_SCF=05D5 05BC
+cp;FB36;dm=05D6 05BC;na=HEBREW LETTER ZAYIN WITH DAGESH;NFKC_CF=05D6 05BC;NFKC_SCF=05D6 05BC
unassigned;FB37;bc=R
-cp;FB38;dm=05D8 05BC;na=HEBREW LETTER TET WITH DAGESH;NFKC_CF=05D8 05BC
-cp;FB39;dm=05D9 05BC;na=HEBREW LETTER YOD WITH DAGESH;NFKC_CF=05D9 05BC
-cp;FB3A;dm=05DA 05BC;na=HEBREW LETTER FINAL KAF WITH DAGESH;NFKC_CF=05DA 05BC
-cp;FB3B;dm=05DB 05BC;na=HEBREW LETTER KAF WITH DAGESH;NFKC_CF=05DB 05BC
-cp;FB3C;dm=05DC 05BC;na=HEBREW LETTER LAMED WITH DAGESH;NFKC_CF=05DC 05BC
+cp;FB38;dm=05D8 05BC;na=HEBREW LETTER TET WITH DAGESH;NFKC_CF=05D8 05BC;NFKC_SCF=05D8 05BC
+cp;FB39;dm=05D9 05BC;na=HEBREW LETTER YOD WITH DAGESH;NFKC_CF=05D9 05BC;NFKC_SCF=05D9 05BC
+cp;FB3A;dm=05DA 05BC;na=HEBREW LETTER FINAL KAF WITH DAGESH;NFKC_CF=05DA 05BC;NFKC_SCF=05DA 05BC
+cp;FB3B;dm=05DB 05BC;na=HEBREW LETTER KAF WITH DAGESH;NFKC_CF=05DB 05BC;NFKC_SCF=05DB 05BC
+cp;FB3C;dm=05DC 05BC;na=HEBREW LETTER LAMED WITH DAGESH;NFKC_CF=05DC 05BC;NFKC_SCF=05DC 05BC
unassigned;FB3D;bc=R
-cp;FB3E;dm=05DE 05BC;na=HEBREW LETTER MEM WITH DAGESH;NFKC_CF=05DE 05BC
+cp;FB3E;dm=05DE 05BC;na=HEBREW LETTER MEM WITH DAGESH;NFKC_CF=05DE 05BC;NFKC_SCF=05DE 05BC
unassigned;FB3F;bc=R
-cp;FB40;dm=05E0 05BC;na=HEBREW LETTER NUN WITH DAGESH;NFKC_CF=05E0 05BC
-cp;FB41;dm=05E1 05BC;na=HEBREW LETTER SAMEKH WITH DAGESH;NFKC_CF=05E1 05BC
+cp;FB40;dm=05E0 05BC;na=HEBREW LETTER NUN WITH DAGESH;NFKC_CF=05E0 05BC;NFKC_SCF=05E0 05BC
+cp;FB41;dm=05E1 05BC;na=HEBREW LETTER SAMEKH WITH DAGESH;NFKC_CF=05E1 05BC;NFKC_SCF=05E1 05BC
unassigned;FB42;bc=R
-cp;FB43;dm=05E3 05BC;na=HEBREW LETTER FINAL PE WITH DAGESH;NFKC_CF=05E3 05BC
-cp;FB44;dm=05E4 05BC;na=HEBREW LETTER PE WITH DAGESH;NFKC_CF=05E4 05BC
+cp;FB43;dm=05E3 05BC;na=HEBREW LETTER FINAL PE WITH DAGESH;NFKC_CF=05E3 05BC;NFKC_SCF=05E3 05BC
+cp;FB44;dm=05E4 05BC;na=HEBREW LETTER PE WITH DAGESH;NFKC_CF=05E4 05BC;NFKC_SCF=05E4 05BC
unassigned;FB45;bc=R
-cp;FB46;dm=05E6 05BC;na=HEBREW LETTER TSADI WITH DAGESH;NFKC_CF=05E6 05BC
-cp;FB47;dm=05E7 05BC;na=HEBREW LETTER QOF WITH DAGESH;NFKC_CF=05E7 05BC
-cp;FB48;dm=05E8 05BC;na=HEBREW LETTER RESH WITH DAGESH;NFKC_CF=05E8 05BC
-cp;FB49;dm=05E9 05BC;na=HEBREW LETTER SHIN WITH DAGESH;NFKC_CF=05E9 05BC
-cp;FB4A;dm=05EA 05BC;na=HEBREW LETTER TAV WITH DAGESH;NFKC_CF=05EA 05BC
-cp;FB4B;dm=05D5 05B9;na=HEBREW LETTER VAV WITH HOLAM;NFKC_CF=05D5 05B9
-cp;FB4C;dm=05D1 05BF;na=HEBREW LETTER BET WITH RAFE;NFKC_CF=05D1 05BF
-cp;FB4D;dm=05DB 05BF;na=HEBREW LETTER KAF WITH RAFE;NFKC_CF=05DB 05BF
-cp;FB4E;dm=05E4 05BF;na=HEBREW LETTER PE WITH RAFE;NFKC_CF=05E4 05BF
-cp;FB4F;-Comp_Ex;dm=05D0 05DC;dt=Com;na=HEBREW LIGATURE ALEF LAMED;NFC_QC=Y;NFD_QC=Y;NFKC_CF=05D0 05DC
+cp;FB46;dm=05E6 05BC;na=HEBREW LETTER TSADI WITH DAGESH;NFKC_CF=05E6 05BC;NFKC_SCF=05E6 05BC
+cp;FB47;dm=05E7 05BC;na=HEBREW LETTER QOF WITH DAGESH;NFKC_CF=05E7 05BC;NFKC_SCF=05E7 05BC
+cp;FB48;dm=05E8 05BC;na=HEBREW LETTER RESH WITH DAGESH;NFKC_CF=05E8 05BC;NFKC_SCF=05E8 05BC
+cp;FB49;dm=05E9 05BC;na=HEBREW LETTER SHIN WITH DAGESH;NFKC_CF=05E9 05BC;NFKC_SCF=05E9 05BC
+cp;FB4A;dm=05EA 05BC;na=HEBREW LETTER TAV WITH DAGESH;NFKC_CF=05EA 05BC;NFKC_SCF=05EA 05BC
+cp;FB4B;dm=05D5 05B9;na=HEBREW LETTER VAV WITH HOLAM;NFKC_CF=05D5 05B9;NFKC_SCF=05D5 05B9
+cp;FB4C;dm=05D1 05BF;na=HEBREW LETTER BET WITH RAFE;NFKC_CF=05D1 05BF;NFKC_SCF=05D1 05BF
+cp;FB4D;dm=05DB 05BF;na=HEBREW LETTER KAF WITH RAFE;NFKC_CF=05DB 05BF;NFKC_SCF=05DB 05BF
+cp;FB4E;dm=05E4 05BF;na=HEBREW LETTER PE WITH RAFE;NFKC_CF=05E4 05BF;NFKC_SCF=05E4 05BF
+cp;FB4F;-Comp_Ex;dm=05D0 05DC;dt=Com;na=HEBREW LIGATURE ALEF LAMED;NFC_QC=Y;NFD_QC=Y;NFKC_CF=05D0 05DC;NFKC_SCF=05D0 05DC
block;FB50..FDFF;age=1.1;Alpha;bc=AL;blk=Arabic_PF_A;CWKCF;dt=Fin;gc=Lo;Gr_Base;IDC;IDS;lb=AL;NFKC_QC=N;NFKD_QC=N;SB=LE;sc=Arab;WB=LE;XIDC;XIDS
# FB50..FDFF Arabic Presentation Forms-A
# Glyphs for contextual forms of letters for Persian, Urdu, Sindhi, etc.
-cp;FB50;dm=0671;dt=Iso;na=ARABIC LETTER ALEF WASLA ISOLATED FORM;NFKC_CF=0671
-cp;FB51;dm=0671;na=ARABIC LETTER ALEF WASLA FINAL FORM;NFKC_CF=0671
-cp;FB52;dm=067B;dt=Iso;na=ARABIC LETTER BEEH ISOLATED FORM;NFKC_CF=067B
-cp;FB53;dm=067B;na=ARABIC LETTER BEEH FINAL FORM;NFKC_CF=067B
-cp;FB54;dm=067B;dt=Init;na=ARABIC LETTER BEEH INITIAL FORM;NFKC_CF=067B
-cp;FB55;dm=067B;dt=Med;na=ARABIC LETTER BEEH MEDIAL FORM;NFKC_CF=067B
-cp;FB56;dm=067E;dt=Iso;na=ARABIC LETTER PEH ISOLATED FORM;NFKC_CF=067E
-cp;FB57;dm=067E;na=ARABIC LETTER PEH FINAL FORM;NFKC_CF=067E
-cp;FB58;dm=067E;dt=Init;na=ARABIC LETTER PEH INITIAL FORM;NFKC_CF=067E
-cp;FB59;dm=067E;dt=Med;na=ARABIC LETTER PEH MEDIAL FORM;NFKC_CF=067E
-cp;FB5A;dm=0680;dt=Iso;na=ARABIC LETTER BEHEH ISOLATED FORM;NFKC_CF=0680
-cp;FB5B;dm=0680;na=ARABIC LETTER BEHEH FINAL FORM;NFKC_CF=0680
-cp;FB5C;dm=0680;dt=Init;na=ARABIC LETTER BEHEH INITIAL FORM;NFKC_CF=0680
-cp;FB5D;dm=0680;dt=Med;na=ARABIC LETTER BEHEH MEDIAL FORM;NFKC_CF=0680
-cp;FB5E;dm=067A;dt=Iso;na=ARABIC LETTER TTEHEH ISOLATED FORM;NFKC_CF=067A
-cp;FB5F;dm=067A;na=ARABIC LETTER TTEHEH FINAL FORM;NFKC_CF=067A
-cp;FB60;dm=067A;dt=Init;na=ARABIC LETTER TTEHEH INITIAL FORM;NFKC_CF=067A
-cp;FB61;dm=067A;dt=Med;na=ARABIC LETTER TTEHEH MEDIAL FORM;NFKC_CF=067A
-cp;FB62;dm=067F;dt=Iso;na=ARABIC LETTER TEHEH ISOLATED FORM;NFKC_CF=067F
-cp;FB63;dm=067F;na=ARABIC LETTER TEHEH FINAL FORM;NFKC_CF=067F
-cp;FB64;dm=067F;dt=Init;na=ARABIC LETTER TEHEH INITIAL FORM;NFKC_CF=067F
-cp;FB65;dm=067F;dt=Med;na=ARABIC LETTER TEHEH MEDIAL FORM;NFKC_CF=067F
-cp;FB66;dm=0679;dt=Iso;na=ARABIC LETTER TTEH ISOLATED FORM;NFKC_CF=0679
-cp;FB67;dm=0679;na=ARABIC LETTER TTEH FINAL FORM;NFKC_CF=0679
-cp;FB68;dm=0679;dt=Init;na=ARABIC LETTER TTEH INITIAL FORM;NFKC_CF=0679
-cp;FB69;dm=0679;dt=Med;na=ARABIC LETTER TTEH MEDIAL FORM;NFKC_CF=0679
-cp;FB6A;dm=06A4;dt=Iso;na=ARABIC LETTER VEH ISOLATED FORM;NFKC_CF=06A4
-cp;FB6B;dm=06A4;na=ARABIC LETTER VEH FINAL FORM;NFKC_CF=06A4
-cp;FB6C;dm=06A4;dt=Init;na=ARABIC LETTER VEH INITIAL FORM;NFKC_CF=06A4
-cp;FB6D;dm=06A4;dt=Med;na=ARABIC LETTER VEH MEDIAL FORM;NFKC_CF=06A4
-cp;FB6E;dm=06A6;dt=Iso;na=ARABIC LETTER PEHEH ISOLATED FORM;NFKC_CF=06A6
-cp;FB6F;dm=06A6;na=ARABIC LETTER PEHEH FINAL FORM;NFKC_CF=06A6
-cp;FB70;dm=06A6;dt=Init;na=ARABIC LETTER PEHEH INITIAL FORM;NFKC_CF=06A6
-cp;FB71;dm=06A6;dt=Med;na=ARABIC LETTER PEHEH MEDIAL FORM;NFKC_CF=06A6
-cp;FB72;dm=0684;dt=Iso;na=ARABIC LETTER DYEH ISOLATED FORM;NFKC_CF=0684
-cp;FB73;dm=0684;na=ARABIC LETTER DYEH FINAL FORM;NFKC_CF=0684
-cp;FB74;dm=0684;dt=Init;na=ARABIC LETTER DYEH INITIAL FORM;NFKC_CF=0684
-cp;FB75;dm=0684;dt=Med;na=ARABIC LETTER DYEH MEDIAL FORM;NFKC_CF=0684
-cp;FB76;dm=0683;dt=Iso;na=ARABIC LETTER NYEH ISOLATED FORM;NFKC_CF=0683
-cp;FB77;dm=0683;na=ARABIC LETTER NYEH FINAL FORM;NFKC_CF=0683
-cp;FB78;dm=0683;dt=Init;na=ARABIC LETTER NYEH INITIAL FORM;NFKC_CF=0683
-cp;FB79;dm=0683;dt=Med;na=ARABIC LETTER NYEH MEDIAL FORM;NFKC_CF=0683
-cp;FB7A;dm=0686;dt=Iso;na=ARABIC LETTER TCHEH ISOLATED FORM;NFKC_CF=0686
-cp;FB7B;dm=0686;na=ARABIC LETTER TCHEH FINAL FORM;NFKC_CF=0686
-cp;FB7C;dm=0686;dt=Init;na=ARABIC LETTER TCHEH INITIAL FORM;NFKC_CF=0686
-cp;FB7D;dm=0686;dt=Med;na=ARABIC LETTER TCHEH MEDIAL FORM;NFKC_CF=0686
-cp;FB7E;dm=0687;dt=Iso;na=ARABIC LETTER TCHEHEH ISOLATED FORM;NFKC_CF=0687
-cp;FB7F;dm=0687;na=ARABIC LETTER TCHEHEH FINAL FORM;NFKC_CF=0687
-cp;FB80;dm=0687;dt=Init;na=ARABIC LETTER TCHEHEH INITIAL FORM;NFKC_CF=0687
-cp;FB81;dm=0687;dt=Med;na=ARABIC LETTER TCHEHEH MEDIAL FORM;NFKC_CF=0687
-cp;FB82;dm=068D;dt=Iso;na=ARABIC LETTER DDAHAL ISOLATED FORM;NFKC_CF=068D
-cp;FB83;dm=068D;na=ARABIC LETTER DDAHAL FINAL FORM;NFKC_CF=068D
-cp;FB84;dm=068C;dt=Iso;na=ARABIC LETTER DAHAL ISOLATED FORM;NFKC_CF=068C
-cp;FB85;dm=068C;na=ARABIC LETTER DAHAL FINAL FORM;NFKC_CF=068C
-cp;FB86;dm=068E;dt=Iso;na=ARABIC LETTER DUL ISOLATED FORM;NFKC_CF=068E
-cp;FB87;dm=068E;na=ARABIC LETTER DUL FINAL FORM;NFKC_CF=068E
-cp;FB88;dm=0688;dt=Iso;na=ARABIC LETTER DDAL ISOLATED FORM;NFKC_CF=0688
-cp;FB89;dm=0688;na=ARABIC LETTER DDAL FINAL FORM;NFKC_CF=0688
-cp;FB8A;dm=0698;dt=Iso;na=ARABIC LETTER JEH ISOLATED FORM;NFKC_CF=0698
-cp;FB8B;dm=0698;na=ARABIC LETTER JEH FINAL FORM;NFKC_CF=0698
-cp;FB8C;dm=0691;dt=Iso;na=ARABIC LETTER RREH ISOLATED FORM;NFKC_CF=0691
-cp;FB8D;dm=0691;na=ARABIC LETTER RREH FINAL FORM;NFKC_CF=0691
-cp;FB8E;dm=06A9;dt=Iso;na=ARABIC LETTER KEHEH ISOLATED FORM;NFKC_CF=06A9
-cp;FB8F;dm=06A9;na=ARABIC LETTER KEHEH FINAL FORM;NFKC_CF=06A9
-cp;FB90;dm=06A9;dt=Init;na=ARABIC LETTER KEHEH INITIAL FORM;NFKC_CF=06A9
-cp;FB91;dm=06A9;dt=Med;na=ARABIC LETTER KEHEH MEDIAL FORM;NFKC_CF=06A9
-cp;FB92;dm=06AF;dt=Iso;na=ARABIC LETTER GAF ISOLATED FORM;NFKC_CF=06AF
-cp;FB93;dm=06AF;na=ARABIC LETTER GAF FINAL FORM;NFKC_CF=06AF
-cp;FB94;dm=06AF;dt=Init;na=ARABIC LETTER GAF INITIAL FORM;NFKC_CF=06AF
-cp;FB95;dm=06AF;dt=Med;na=ARABIC LETTER GAF MEDIAL FORM;NFKC_CF=06AF
-cp;FB96;dm=06B3;dt=Iso;na=ARABIC LETTER GUEH ISOLATED FORM;NFKC_CF=06B3
-cp;FB97;dm=06B3;na=ARABIC LETTER GUEH FINAL FORM;NFKC_CF=06B3
-cp;FB98;dm=06B3;dt=Init;na=ARABIC LETTER GUEH INITIAL FORM;NFKC_CF=06B3
-cp;FB99;dm=06B3;dt=Med;na=ARABIC LETTER GUEH MEDIAL FORM;NFKC_CF=06B3
-cp;FB9A;dm=06B1;dt=Iso;na=ARABIC LETTER NGOEH ISOLATED FORM;NFKC_CF=06B1
-cp;FB9B;dm=06B1;na=ARABIC LETTER NGOEH FINAL FORM;NFKC_CF=06B1
-cp;FB9C;dm=06B1;dt=Init;na=ARABIC LETTER NGOEH INITIAL FORM;NFKC_CF=06B1
-cp;FB9D;dm=06B1;dt=Med;na=ARABIC LETTER NGOEH MEDIAL FORM;NFKC_CF=06B1
-cp;FB9E;dm=06BA;dt=Iso;na=ARABIC LETTER NOON GHUNNA ISOLATED FORM;NFKC_CF=06BA
-cp;FB9F;dm=06BA;na=ARABIC LETTER NOON GHUNNA FINAL FORM;NFKC_CF=06BA
-cp;FBA0;dm=06BB;dt=Iso;na=ARABIC LETTER RNOON ISOLATED FORM;NFKC_CF=06BB
-cp;FBA1;dm=06BB;na=ARABIC LETTER RNOON FINAL FORM;NFKC_CF=06BB
-cp;FBA2;dm=06BB;dt=Init;na=ARABIC LETTER RNOON INITIAL FORM;NFKC_CF=06BB
-cp;FBA3;dm=06BB;dt=Med;na=ARABIC LETTER RNOON MEDIAL FORM;NFKC_CF=06BB
-cp;FBA4;dm=06C0;dt=Iso;na=ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM;NFKC_CF=06C0
-cp;FBA5;dm=06C0;na=ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM;NFKC_CF=06C0
-cp;FBA6;dm=06C1;dt=Iso;na=ARABIC LETTER HEH GOAL ISOLATED FORM;NFKC_CF=06C1
-cp;FBA7;dm=06C1;na=ARABIC LETTER HEH GOAL FINAL FORM;NFKC_CF=06C1
-cp;FBA8;dm=06C1;dt=Init;na=ARABIC LETTER HEH GOAL INITIAL FORM;NFKC_CF=06C1
-cp;FBA9;dm=06C1;dt=Med;na=ARABIC LETTER HEH GOAL MEDIAL FORM;NFKC_CF=06C1
-cp;FBAA;dm=06BE;dt=Iso;na=ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM;NFKC_CF=06BE
-cp;FBAB;dm=06BE;na=ARABIC LETTER HEH DOACHASHMEE FINAL FORM;NFKC_CF=06BE
-cp;FBAC;dm=06BE;dt=Init;na=ARABIC LETTER HEH DOACHASHMEE INITIAL FORM;NFKC_CF=06BE
-cp;FBAD;dm=06BE;dt=Med;na=ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM;NFKC_CF=06BE
-cp;FBAE;dm=06D2;dt=Iso;na=ARABIC LETTER YEH BARREE ISOLATED FORM;NFKC_CF=06D2
-cp;FBAF;dm=06D2;na=ARABIC LETTER YEH BARREE FINAL FORM;NFKC_CF=06D2
-cp;FBB0;dm=06D3;dt=Iso;na=ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM;NFKC_CF=06D3
-cp;FBB1;dm=06D3;na=ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM;NFKC_CF=06D3
+cp;FB50;dm=0671;dt=Iso;na=ARABIC LETTER ALEF WASLA ISOLATED FORM;NFKC_CF=0671;NFKC_SCF=0671
+cp;FB51;dm=0671;na=ARABIC LETTER ALEF WASLA FINAL FORM;NFKC_CF=0671;NFKC_SCF=0671
+cp;FB52;dm=067B;dt=Iso;na=ARABIC LETTER BEEH ISOLATED FORM;NFKC_CF=067B;NFKC_SCF=067B
+cp;FB53;dm=067B;na=ARABIC LETTER BEEH FINAL FORM;NFKC_CF=067B;NFKC_SCF=067B
+cp;FB54;dm=067B;dt=Init;na=ARABIC LETTER BEEH INITIAL FORM;NFKC_CF=067B;NFKC_SCF=067B
+cp;FB55;dm=067B;dt=Med;na=ARABIC LETTER BEEH MEDIAL FORM;NFKC_CF=067B;NFKC_SCF=067B
+cp;FB56;dm=067E;dt=Iso;na=ARABIC LETTER PEH ISOLATED FORM;NFKC_CF=067E;NFKC_SCF=067E
+cp;FB57;dm=067E;na=ARABIC LETTER PEH FINAL FORM;NFKC_CF=067E;NFKC_SCF=067E
+cp;FB58;dm=067E;dt=Init;na=ARABIC LETTER PEH INITIAL FORM;NFKC_CF=067E;NFKC_SCF=067E
+cp;FB59;dm=067E;dt=Med;na=ARABIC LETTER PEH MEDIAL FORM;NFKC_CF=067E;NFKC_SCF=067E
+cp;FB5A;dm=0680;dt=Iso;na=ARABIC LETTER BEHEH ISOLATED FORM;NFKC_CF=0680;NFKC_SCF=0680
+cp;FB5B;dm=0680;na=ARABIC LETTER BEHEH FINAL FORM;NFKC_CF=0680;NFKC_SCF=0680
+cp;FB5C;dm=0680;dt=Init;na=ARABIC LETTER BEHEH INITIAL FORM;NFKC_CF=0680;NFKC_SCF=0680
+cp;FB5D;dm=0680;dt=Med;na=ARABIC LETTER BEHEH MEDIAL FORM;NFKC_CF=0680;NFKC_SCF=0680
+cp;FB5E;dm=067A;dt=Iso;na=ARABIC LETTER TTEHEH ISOLATED FORM;NFKC_CF=067A;NFKC_SCF=067A
+cp;FB5F;dm=067A;na=ARABIC LETTER TTEHEH FINAL FORM;NFKC_CF=067A;NFKC_SCF=067A
+cp;FB60;dm=067A;dt=Init;na=ARABIC LETTER TTEHEH INITIAL FORM;NFKC_CF=067A;NFKC_SCF=067A
+cp;FB61;dm=067A;dt=Med;na=ARABIC LETTER TTEHEH MEDIAL FORM;NFKC_CF=067A;NFKC_SCF=067A
+cp;FB62;dm=067F;dt=Iso;na=ARABIC LETTER TEHEH ISOLATED FORM;NFKC_CF=067F;NFKC_SCF=067F
+cp;FB63;dm=067F;na=ARABIC LETTER TEHEH FINAL FORM;NFKC_CF=067F;NFKC_SCF=067F
+cp;FB64;dm=067F;dt=Init;na=ARABIC LETTER TEHEH INITIAL FORM;NFKC_CF=067F;NFKC_SCF=067F
+cp;FB65;dm=067F;dt=Med;na=ARABIC LETTER TEHEH MEDIAL FORM;NFKC_CF=067F;NFKC_SCF=067F
+cp;FB66;dm=0679;dt=Iso;na=ARABIC LETTER TTEH ISOLATED FORM;NFKC_CF=0679;NFKC_SCF=0679
+cp;FB67;dm=0679;na=ARABIC LETTER TTEH FINAL FORM;NFKC_CF=0679;NFKC_SCF=0679
+cp;FB68;dm=0679;dt=Init;na=ARABIC LETTER TTEH INITIAL FORM;NFKC_CF=0679;NFKC_SCF=0679
+cp;FB69;dm=0679;dt=Med;na=ARABIC LETTER TTEH MEDIAL FORM;NFKC_CF=0679;NFKC_SCF=0679
+cp;FB6A;dm=06A4;dt=Iso;na=ARABIC LETTER VEH ISOLATED FORM;NFKC_CF=06A4;NFKC_SCF=06A4
+cp;FB6B;dm=06A4;na=ARABIC LETTER VEH FINAL FORM;NFKC_CF=06A4;NFKC_SCF=06A4
+cp;FB6C;dm=06A4;dt=Init;na=ARABIC LETTER VEH INITIAL FORM;NFKC_CF=06A4;NFKC_SCF=06A4
+cp;FB6D;dm=06A4;dt=Med;na=ARABIC LETTER VEH MEDIAL FORM;NFKC_CF=06A4;NFKC_SCF=06A4
+cp;FB6E;dm=06A6;dt=Iso;na=ARABIC LETTER PEHEH ISOLATED FORM;NFKC_CF=06A6;NFKC_SCF=06A6
+cp;FB6F;dm=06A6;na=ARABIC LETTER PEHEH FINAL FORM;NFKC_CF=06A6;NFKC_SCF=06A6
+cp;FB70;dm=06A6;dt=Init;na=ARABIC LETTER PEHEH INITIAL FORM;NFKC_CF=06A6;NFKC_SCF=06A6
+cp;FB71;dm=06A6;dt=Med;na=ARABIC LETTER PEHEH MEDIAL FORM;NFKC_CF=06A6;NFKC_SCF=06A6
+cp;FB72;dm=0684;dt=Iso;na=ARABIC LETTER DYEH ISOLATED FORM;NFKC_CF=0684;NFKC_SCF=0684
+cp;FB73;dm=0684;na=ARABIC LETTER DYEH FINAL FORM;NFKC_CF=0684;NFKC_SCF=0684
+cp;FB74;dm=0684;dt=Init;na=ARABIC LETTER DYEH INITIAL FORM;NFKC_CF=0684;NFKC_SCF=0684
+cp;FB75;dm=0684;dt=Med;na=ARABIC LETTER DYEH MEDIAL FORM;NFKC_CF=0684;NFKC_SCF=0684
+cp;FB76;dm=0683;dt=Iso;na=ARABIC LETTER NYEH ISOLATED FORM;NFKC_CF=0683;NFKC_SCF=0683
+cp;FB77;dm=0683;na=ARABIC LETTER NYEH FINAL FORM;NFKC_CF=0683;NFKC_SCF=0683
+cp;FB78;dm=0683;dt=Init;na=ARABIC LETTER NYEH INITIAL FORM;NFKC_CF=0683;NFKC_SCF=0683
+cp;FB79;dm=0683;dt=Med;na=ARABIC LETTER NYEH MEDIAL FORM;NFKC_CF=0683;NFKC_SCF=0683
+cp;FB7A;dm=0686;dt=Iso;na=ARABIC LETTER TCHEH ISOLATED FORM;NFKC_CF=0686;NFKC_SCF=0686
+cp;FB7B;dm=0686;na=ARABIC LETTER TCHEH FINAL FORM;NFKC_CF=0686;NFKC_SCF=0686
+cp;FB7C;dm=0686;dt=Init;na=ARABIC LETTER TCHEH INITIAL FORM;NFKC_CF=0686;NFKC_SCF=0686
+cp;FB7D;dm=0686;dt=Med;na=ARABIC LETTER TCHEH MEDIAL FORM;NFKC_CF=0686;NFKC_SCF=0686
+cp;FB7E;dm=0687;dt=Iso;na=ARABIC LETTER TCHEHEH ISOLATED FORM;NFKC_CF=0687;NFKC_SCF=0687
+cp;FB7F;dm=0687;na=ARABIC LETTER TCHEHEH FINAL FORM;NFKC_CF=0687;NFKC_SCF=0687
+cp;FB80;dm=0687;dt=Init;na=ARABIC LETTER TCHEHEH INITIAL FORM;NFKC_CF=0687;NFKC_SCF=0687
+cp;FB81;dm=0687;dt=Med;na=ARABIC LETTER TCHEHEH MEDIAL FORM;NFKC_CF=0687;NFKC_SCF=0687
+cp;FB82;dm=068D;dt=Iso;na=ARABIC LETTER DDAHAL ISOLATED FORM;NFKC_CF=068D;NFKC_SCF=068D
+cp;FB83;dm=068D;na=ARABIC LETTER DDAHAL FINAL FORM;NFKC_CF=068D;NFKC_SCF=068D
+cp;FB84;dm=068C;dt=Iso;na=ARABIC LETTER DAHAL ISOLATED FORM;NFKC_CF=068C;NFKC_SCF=068C
+cp;FB85;dm=068C;na=ARABIC LETTER DAHAL FINAL FORM;NFKC_CF=068C;NFKC_SCF=068C
+cp;FB86;dm=068E;dt=Iso;na=ARABIC LETTER DUL ISOLATED FORM;NFKC_CF=068E;NFKC_SCF=068E
+cp;FB87;dm=068E;na=ARABIC LETTER DUL FINAL FORM;NFKC_CF=068E;NFKC_SCF=068E
+cp;FB88;dm=0688;dt=Iso;na=ARABIC LETTER DDAL ISOLATED FORM;NFKC_CF=0688;NFKC_SCF=0688
+cp;FB89;dm=0688;na=ARABIC LETTER DDAL FINAL FORM;NFKC_CF=0688;NFKC_SCF=0688
+cp;FB8A;dm=0698;dt=Iso;na=ARABIC LETTER JEH ISOLATED FORM;NFKC_CF=0698;NFKC_SCF=0698
+cp;FB8B;dm=0698;na=ARABIC LETTER JEH FINAL FORM;NFKC_CF=0698;NFKC_SCF=0698
+cp;FB8C;dm=0691;dt=Iso;na=ARABIC LETTER RREH ISOLATED FORM;NFKC_CF=0691;NFKC_SCF=0691
+cp;FB8D;dm=0691;na=ARABIC LETTER RREH FINAL FORM;NFKC_CF=0691;NFKC_SCF=0691
+cp;FB8E;dm=06A9;dt=Iso;na=ARABIC LETTER KEHEH ISOLATED FORM;NFKC_CF=06A9;NFKC_SCF=06A9
+cp;FB8F;dm=06A9;na=ARABIC LETTER KEHEH FINAL FORM;NFKC_CF=06A9;NFKC_SCF=06A9
+cp;FB90;dm=06A9;dt=Init;na=ARABIC LETTER KEHEH INITIAL FORM;NFKC_CF=06A9;NFKC_SCF=06A9
+cp;FB91;dm=06A9;dt=Med;na=ARABIC LETTER KEHEH MEDIAL FORM;NFKC_CF=06A9;NFKC_SCF=06A9
+cp;FB92;dm=06AF;dt=Iso;na=ARABIC LETTER GAF ISOLATED FORM;NFKC_CF=06AF;NFKC_SCF=06AF
+cp;FB93;dm=06AF;na=ARABIC LETTER GAF FINAL FORM;NFKC_CF=06AF;NFKC_SCF=06AF
+cp;FB94;dm=06AF;dt=Init;na=ARABIC LETTER GAF INITIAL FORM;NFKC_CF=06AF;NFKC_SCF=06AF
+cp;FB95;dm=06AF;dt=Med;na=ARABIC LETTER GAF MEDIAL FORM;NFKC_CF=06AF;NFKC_SCF=06AF
+cp;FB96;dm=06B3;dt=Iso;na=ARABIC LETTER GUEH ISOLATED FORM;NFKC_CF=06B3;NFKC_SCF=06B3
+cp;FB97;dm=06B3;na=ARABIC LETTER GUEH FINAL FORM;NFKC_CF=06B3;NFKC_SCF=06B3
+cp;FB98;dm=06B3;dt=Init;na=ARABIC LETTER GUEH INITIAL FORM;NFKC_CF=06B3;NFKC_SCF=06B3
+cp;FB99;dm=06B3;dt=Med;na=ARABIC LETTER GUEH MEDIAL FORM;NFKC_CF=06B3;NFKC_SCF=06B3
+cp;FB9A;dm=06B1;dt=Iso;na=ARABIC LETTER NGOEH ISOLATED FORM;NFKC_CF=06B1;NFKC_SCF=06B1
+cp;FB9B;dm=06B1;na=ARABIC LETTER NGOEH FINAL FORM;NFKC_CF=06B1;NFKC_SCF=06B1
+cp;FB9C;dm=06B1;dt=Init;na=ARABIC LETTER NGOEH INITIAL FORM;NFKC_CF=06B1;NFKC_SCF=06B1
+cp;FB9D;dm=06B1;dt=Med;na=ARABIC LETTER NGOEH MEDIAL FORM;NFKC_CF=06B1;NFKC_SCF=06B1
+cp;FB9E;dm=06BA;dt=Iso;na=ARABIC LETTER NOON GHUNNA ISOLATED FORM;NFKC_CF=06BA;NFKC_SCF=06BA
+cp;FB9F;dm=06BA;na=ARABIC LETTER NOON GHUNNA FINAL FORM;NFKC_CF=06BA;NFKC_SCF=06BA
+cp;FBA0;dm=06BB;dt=Iso;na=ARABIC LETTER RNOON ISOLATED FORM;NFKC_CF=06BB;NFKC_SCF=06BB
+cp;FBA1;dm=06BB;na=ARABIC LETTER RNOON FINAL FORM;NFKC_CF=06BB;NFKC_SCF=06BB
+cp;FBA2;dm=06BB;dt=Init;na=ARABIC LETTER RNOON INITIAL FORM;NFKC_CF=06BB;NFKC_SCF=06BB
+cp;FBA3;dm=06BB;dt=Med;na=ARABIC LETTER RNOON MEDIAL FORM;NFKC_CF=06BB;NFKC_SCF=06BB
+cp;FBA4;dm=06C0;dt=Iso;na=ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM;NFKC_CF=06C0;NFKC_SCF=06C0
+cp;FBA5;dm=06C0;na=ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM;NFKC_CF=06C0;NFKC_SCF=06C0
+cp;FBA6;dm=06C1;dt=Iso;na=ARABIC LETTER HEH GOAL ISOLATED FORM;NFKC_CF=06C1;NFKC_SCF=06C1
+cp;FBA7;dm=06C1;na=ARABIC LETTER HEH GOAL FINAL FORM;NFKC_CF=06C1;NFKC_SCF=06C1
+cp;FBA8;dm=06C1;dt=Init;na=ARABIC LETTER HEH GOAL INITIAL FORM;NFKC_CF=06C1;NFKC_SCF=06C1
+cp;FBA9;dm=06C1;dt=Med;na=ARABIC LETTER HEH GOAL MEDIAL FORM;NFKC_CF=06C1;NFKC_SCF=06C1
+cp;FBAA;dm=06BE;dt=Iso;na=ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM;NFKC_CF=06BE;NFKC_SCF=06BE
+cp;FBAB;dm=06BE;na=ARABIC LETTER HEH DOACHASHMEE FINAL FORM;NFKC_CF=06BE;NFKC_SCF=06BE
+cp;FBAC;dm=06BE;dt=Init;na=ARABIC LETTER HEH DOACHASHMEE INITIAL FORM;NFKC_CF=06BE;NFKC_SCF=06BE
+cp;FBAD;dm=06BE;dt=Med;na=ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM;NFKC_CF=06BE;NFKC_SCF=06BE
+cp;FBAE;dm=06D2;dt=Iso;na=ARABIC LETTER YEH BARREE ISOLATED FORM;NFKC_CF=06D2;NFKC_SCF=06D2
+cp;FBAF;dm=06D2;na=ARABIC LETTER YEH BARREE FINAL FORM;NFKC_CF=06D2;NFKC_SCF=06D2
+cp;FBB0;dm=06D3;dt=Iso;na=ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM;NFKC_CF=06D3;NFKC_SCF=06D3
+cp;FBB1;dm=06D3;na=ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM;NFKC_CF=06D3;NFKC_SCF=06D3
# Arabic pedagogical symbols
cp;FBB2;age=6.0;-Alpha;CI;-CWKCF;dt=None;gc=Sk;-IDC;-IDS;na=ARABIC SYMBOL DOT ABOVE;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
cp;FBB3;age=6.0;-Alpha;CI;-CWKCF;dt=None;gc=Sk;-IDC;-IDS;na=ARABIC SYMBOL DOT BELOW;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
@@ -20191,370 +20223,370 @@ cp;FBC1;age=6.0;-Alpha;CI;-CWKCF;dt=None;gc=Sk;-IDC;-IDS;na=ARABIC SYMBOL SMALL
cp;FBC2;age=14.0;-Alpha;CI;-CWKCF;dt=None;gc=Sk;-IDC;-IDS;na=ARABIC SYMBOL WASLA ABOVE;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
unassigned;FBC3..FBD2;bc=AL
# Glyphs for contextual forms of letters for Central Asian languages
-cp;FBD3;dm=06AD;dt=Iso;na=ARABIC LETTER NG ISOLATED FORM;NFKC_CF=06AD
-cp;FBD4;dm=06AD;na=ARABIC LETTER NG FINAL FORM;NFKC_CF=06AD
-cp;FBD5;dm=06AD;dt=Init;na=ARABIC LETTER NG INITIAL FORM;NFKC_CF=06AD
-cp;FBD6;dm=06AD;dt=Med;na=ARABIC LETTER NG MEDIAL FORM;NFKC_CF=06AD
-cp;FBD7;dm=06C7;dt=Iso;na=ARABIC LETTER U ISOLATED FORM;NFKC_CF=06C7
-cp;FBD8;dm=06C7;na=ARABIC LETTER U FINAL FORM;NFKC_CF=06C7
-cp;FBD9;dm=06C6;dt=Iso;na=ARABIC LETTER OE ISOLATED FORM;NFKC_CF=06C6
-cp;FBDA;dm=06C6;na=ARABIC LETTER OE FINAL FORM;NFKC_CF=06C6
-cp;FBDB;dm=06C8;dt=Iso;na=ARABIC LETTER YU ISOLATED FORM;NFKC_CF=06C8
-cp;FBDC;dm=06C8;na=ARABIC LETTER YU FINAL FORM;NFKC_CF=06C8
-cp;FBDD;dm=0677;dt=Iso;na=ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM;NFKC_CF=06C7 0674
-cp;FBDE;dm=06CB;dt=Iso;na=ARABIC LETTER VE ISOLATED FORM;NFKC_CF=06CB
-cp;FBDF;dm=06CB;na=ARABIC LETTER VE FINAL FORM;NFKC_CF=06CB
-cp;FBE0;dm=06C5;dt=Iso;na=ARABIC LETTER KIRGHIZ OE ISOLATED FORM;NFKC_CF=06C5
-cp;FBE1;dm=06C5;na=ARABIC LETTER KIRGHIZ OE FINAL FORM;NFKC_CF=06C5
-cp;FBE2;dm=06C9;dt=Iso;na=ARABIC LETTER KIRGHIZ YU ISOLATED FORM;NFKC_CF=06C9
-cp;FBE3;dm=06C9;na=ARABIC LETTER KIRGHIZ YU FINAL FORM;NFKC_CF=06C9
-cp;FBE4;dm=06D0;dt=Iso;na=ARABIC LETTER E ISOLATED FORM;NFKC_CF=06D0
-cp;FBE5;dm=06D0;na=ARABIC LETTER E FINAL FORM;NFKC_CF=06D0
-cp;FBE6;dm=06D0;dt=Init;na=ARABIC LETTER E INITIAL FORM;NFKC_CF=06D0
-cp;FBE7;dm=06D0;dt=Med;na=ARABIC LETTER E MEDIAL FORM;NFKC_CF=06D0
-cp;FBE8;dm=0649;dt=Init;na=ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM;NFKC_CF=0649
-cp;FBE9;dm=0649;dt=Med;na=ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM;NFKC_CF=0649
+cp;FBD3;dm=06AD;dt=Iso;na=ARABIC LETTER NG ISOLATED FORM;NFKC_CF=06AD;NFKC_SCF=06AD
+cp;FBD4;dm=06AD;na=ARABIC LETTER NG FINAL FORM;NFKC_CF=06AD;NFKC_SCF=06AD
+cp;FBD5;dm=06AD;dt=Init;na=ARABIC LETTER NG INITIAL FORM;NFKC_CF=06AD;NFKC_SCF=06AD
+cp;FBD6;dm=06AD;dt=Med;na=ARABIC LETTER NG MEDIAL FORM;NFKC_CF=06AD;NFKC_SCF=06AD
+cp;FBD7;dm=06C7;dt=Iso;na=ARABIC LETTER U ISOLATED FORM;NFKC_CF=06C7;NFKC_SCF=06C7
+cp;FBD8;dm=06C7;na=ARABIC LETTER U FINAL FORM;NFKC_CF=06C7;NFKC_SCF=06C7
+cp;FBD9;dm=06C6;dt=Iso;na=ARABIC LETTER OE ISOLATED FORM;NFKC_CF=06C6;NFKC_SCF=06C6
+cp;FBDA;dm=06C6;na=ARABIC LETTER OE FINAL FORM;NFKC_CF=06C6;NFKC_SCF=06C6
+cp;FBDB;dm=06C8;dt=Iso;na=ARABIC LETTER YU ISOLATED FORM;NFKC_CF=06C8;NFKC_SCF=06C8
+cp;FBDC;dm=06C8;na=ARABIC LETTER YU FINAL FORM;NFKC_CF=06C8;NFKC_SCF=06C8
+cp;FBDD;dm=0677;dt=Iso;na=ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM;NFKC_CF=06C7 0674;NFKC_SCF=06C7 0674
+cp;FBDE;dm=06CB;dt=Iso;na=ARABIC LETTER VE ISOLATED FORM;NFKC_CF=06CB;NFKC_SCF=06CB
+cp;FBDF;dm=06CB;na=ARABIC LETTER VE FINAL FORM;NFKC_CF=06CB;NFKC_SCF=06CB
+cp;FBE0;dm=06C5;dt=Iso;na=ARABIC LETTER KIRGHIZ OE ISOLATED FORM;NFKC_CF=06C5;NFKC_SCF=06C5
+cp;FBE1;dm=06C5;na=ARABIC LETTER KIRGHIZ OE FINAL FORM;NFKC_CF=06C5;NFKC_SCF=06C5
+cp;FBE2;dm=06C9;dt=Iso;na=ARABIC LETTER KIRGHIZ YU ISOLATED FORM;NFKC_CF=06C9;NFKC_SCF=06C9
+cp;FBE3;dm=06C9;na=ARABIC LETTER KIRGHIZ YU FINAL FORM;NFKC_CF=06C9;NFKC_SCF=06C9
+cp;FBE4;dm=06D0;dt=Iso;na=ARABIC LETTER E ISOLATED FORM;NFKC_CF=06D0;NFKC_SCF=06D0
+cp;FBE5;dm=06D0;na=ARABIC LETTER E FINAL FORM;NFKC_CF=06D0;NFKC_SCF=06D0
+cp;FBE6;dm=06D0;dt=Init;na=ARABIC LETTER E INITIAL FORM;NFKC_CF=06D0;NFKC_SCF=06D0
+cp;FBE7;dm=06D0;dt=Med;na=ARABIC LETTER E MEDIAL FORM;NFKC_CF=06D0;NFKC_SCF=06D0
+cp;FBE8;dm=0649;dt=Init;na=ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM;NFKC_CF=0649;NFKC_SCF=0649
+cp;FBE9;dm=0649;dt=Med;na=ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM;NFKC_CF=0649;NFKC_SCF=0649
# Ligatures (two elements)
-cp;FBEA;dm=0626 0627;dt=Iso;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM;NFKC_CF=0626 0627
-cp;FBEB;dm=0626 0627;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM;NFKC_CF=0626 0627
-cp;FBEC;dm=0626 06D5;dt=Iso;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM;NFKC_CF=0626 06D5
-cp;FBED;dm=0626 06D5;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM;NFKC_CF=0626 06D5
-cp;FBEE;dm=0626 0648;dt=Iso;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM;NFKC_CF=0626 0648
-cp;FBEF;dm=0626 0648;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM;NFKC_CF=0626 0648
-cp;FBF0;dm=0626 06C7;dt=Iso;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM;NFKC_CF=0626 06C7
-cp;FBF1;dm=0626 06C7;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM;NFKC_CF=0626 06C7
-cp;FBF2;dm=0626 06C6;dt=Iso;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM;NFKC_CF=0626 06C6
-cp;FBF3;dm=0626 06C6;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM;NFKC_CF=0626 06C6
-cp;FBF4;dm=0626 06C8;dt=Iso;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM;NFKC_CF=0626 06C8
-cp;FBF5;dm=0626 06C8;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM;NFKC_CF=0626 06C8
-cp;FBF6;dm=0626 06D0;dt=Iso;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM;NFKC_CF=0626 06D0
-cp;FBF7;dm=0626 06D0;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM;NFKC_CF=0626 06D0
-cp;FBF8;dm=0626 06D0;dt=Init;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM;NFKC_CF=0626 06D0
-cp;FBF9;dm=0626 0649;dt=Iso;na=ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;NFKC_CF=0626 0649
-cp;FBFA;dm=0626 0649;na=ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;NFKC_CF=0626 0649
-cp;FBFB;dm=0626 0649;dt=Init;na=ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM;NFKC_CF=0626 0649
-cp;FBFC;dm=06CC;dt=Iso;na=ARABIC LETTER FARSI YEH ISOLATED FORM;NFKC_CF=06CC
-cp;FBFD;dm=06CC;na=ARABIC LETTER FARSI YEH FINAL FORM;NFKC_CF=06CC
-cp;FBFE;dm=06CC;dt=Init;na=ARABIC LETTER FARSI YEH INITIAL FORM;NFKC_CF=06CC
-cp;FBFF;dm=06CC;dt=Med;na=ARABIC LETTER FARSI YEH MEDIAL FORM;NFKC_CF=06CC
-cp;FC00;dm=0626 062C;dt=Iso;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM;NFKC_CF=0626 062C
-cp;FC01;dm=0626 062D;dt=Iso;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM;NFKC_CF=0626 062D
-cp;FC02;dm=0626 0645;dt=Iso;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM;NFKC_CF=0626 0645
-cp;FC03;dm=0626 0649;dt=Iso;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;NFKC_CF=0626 0649
-cp;FC04;dm=0626 064A;dt=Iso;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM;NFKC_CF=0626 064A
-cp;FC05;dm=0628 062C;dt=Iso;na=ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM;NFKC_CF=0628 062C
-cp;FC06;dm=0628 062D;dt=Iso;na=ARABIC LIGATURE BEH WITH HAH ISOLATED FORM;NFKC_CF=0628 062D
-cp;FC07;dm=0628 062E;dt=Iso;na=ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM;NFKC_CF=0628 062E
-cp;FC08;dm=0628 0645;dt=Iso;na=ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM;NFKC_CF=0628 0645
-cp;FC09;dm=0628 0649;dt=Iso;na=ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM;NFKC_CF=0628 0649
-cp;FC0A;dm=0628 064A;dt=Iso;na=ARABIC LIGATURE BEH WITH YEH ISOLATED FORM;NFKC_CF=0628 064A
-cp;FC0B;dm=062A 062C;dt=Iso;na=ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM;NFKC_CF=062A 062C
-cp;FC0C;dm=062A 062D;dt=Iso;na=ARABIC LIGATURE TEH WITH HAH ISOLATED FORM;NFKC_CF=062A 062D
-cp;FC0D;dm=062A 062E;dt=Iso;na=ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM;NFKC_CF=062A 062E
-cp;FC0E;dm=062A 0645;dt=Iso;na=ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM;NFKC_CF=062A 0645
-cp;FC0F;dm=062A 0649;dt=Iso;na=ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM;NFKC_CF=062A 0649
-cp;FC10;dm=062A 064A;dt=Iso;na=ARABIC LIGATURE TEH WITH YEH ISOLATED FORM;NFKC_CF=062A 064A
-cp;FC11;dm=062B 062C;dt=Iso;na=ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM;NFKC_CF=062B 062C
-cp;FC12;dm=062B 0645;dt=Iso;na=ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM;NFKC_CF=062B 0645
-cp;FC13;dm=062B 0649;dt=Iso;na=ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM;NFKC_CF=062B 0649
-cp;FC14;dm=062B 064A;dt=Iso;na=ARABIC LIGATURE THEH WITH YEH ISOLATED FORM;NFKC_CF=062B 064A
-cp;FC15;dm=062C 062D;dt=Iso;na=ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM;NFKC_CF=062C 062D
-cp;FC16;dm=062C 0645;dt=Iso;na=ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM;NFKC_CF=062C 0645
-cp;FC17;dm=062D 062C;dt=Iso;na=ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM;NFKC_CF=062D 062C
-cp;FC18;dm=062D 0645;dt=Iso;na=ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM;NFKC_CF=062D 0645
-cp;FC19;dm=062E 062C;dt=Iso;na=ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM;NFKC_CF=062E 062C
-cp;FC1A;dm=062E 062D;dt=Iso;na=ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM;NFKC_CF=062E 062D
-cp;FC1B;dm=062E 0645;dt=Iso;na=ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM;NFKC_CF=062E 0645
-cp;FC1C;dm=0633 062C;dt=Iso;na=ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM;NFKC_CF=0633 062C
-cp;FC1D;dm=0633 062D;dt=Iso;na=ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM;NFKC_CF=0633 062D
-cp;FC1E;dm=0633 062E;dt=Iso;na=ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM;NFKC_CF=0633 062E
-cp;FC1F;dm=0633 0645;dt=Iso;na=ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM;NFKC_CF=0633 0645
-cp;FC20;dm=0635 062D;dt=Iso;na=ARABIC LIGATURE SAD WITH HAH ISOLATED FORM;NFKC_CF=0635 062D
-cp;FC21;dm=0635 0645;dt=Iso;na=ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM;NFKC_CF=0635 0645
-cp;FC22;dm=0636 062C;dt=Iso;na=ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM;NFKC_CF=0636 062C
-cp;FC23;dm=0636 062D;dt=Iso;na=ARABIC LIGATURE DAD WITH HAH ISOLATED FORM;NFKC_CF=0636 062D
-cp;FC24;dm=0636 062E;dt=Iso;na=ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM;NFKC_CF=0636 062E
-cp;FC25;dm=0636 0645;dt=Iso;na=ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM;NFKC_CF=0636 0645
-cp;FC26;dm=0637 062D;dt=Iso;na=ARABIC LIGATURE TAH WITH HAH ISOLATED FORM;NFKC_CF=0637 062D
-cp;FC27;dm=0637 0645;dt=Iso;na=ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM;NFKC_CF=0637 0645
-cp;FC28;dm=0638 0645;dt=Iso;na=ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM;NFKC_CF=0638 0645
-cp;FC29;dm=0639 062C;dt=Iso;na=ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM;NFKC_CF=0639 062C
-cp;FC2A;dm=0639 0645;dt=Iso;na=ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM;NFKC_CF=0639 0645
-cp;FC2B;dm=063A 062C;dt=Iso;na=ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM;NFKC_CF=063A 062C
-cp;FC2C;dm=063A 0645;dt=Iso;na=ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM;NFKC_CF=063A 0645
-cp;FC2D;dm=0641 062C;dt=Iso;na=ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM;NFKC_CF=0641 062C
-cp;FC2E;dm=0641 062D;dt=Iso;na=ARABIC LIGATURE FEH WITH HAH ISOLATED FORM;NFKC_CF=0641 062D
-cp;FC2F;dm=0641 062E;dt=Iso;na=ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM;NFKC_CF=0641 062E
-cp;FC30;dm=0641 0645;dt=Iso;na=ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM;NFKC_CF=0641 0645
-cp;FC31;dm=0641 0649;dt=Iso;na=ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM;NFKC_CF=0641 0649
-cp;FC32;dm=0641 064A;dt=Iso;na=ARABIC LIGATURE FEH WITH YEH ISOLATED FORM;NFKC_CF=0641 064A
-cp;FC33;dm=0642 062D;dt=Iso;na=ARABIC LIGATURE QAF WITH HAH ISOLATED FORM;NFKC_CF=0642 062D
-cp;FC34;dm=0642 0645;dt=Iso;na=ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM;NFKC_CF=0642 0645
-cp;FC35;dm=0642 0649;dt=Iso;na=ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM;NFKC_CF=0642 0649
-cp;FC36;dm=0642 064A;dt=Iso;na=ARABIC LIGATURE QAF WITH YEH ISOLATED FORM;NFKC_CF=0642 064A
-cp;FC37;dm=0643 0627;dt=Iso;na=ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM;NFKC_CF=0643 0627
-cp;FC38;dm=0643 062C;dt=Iso;na=ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM;NFKC_CF=0643 062C
-cp;FC39;dm=0643 062D;dt=Iso;na=ARABIC LIGATURE KAF WITH HAH ISOLATED FORM;NFKC_CF=0643 062D
-cp;FC3A;dm=0643 062E;dt=Iso;na=ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM;NFKC_CF=0643 062E
-cp;FC3B;dm=0643 0644;dt=Iso;na=ARABIC LIGATURE KAF WITH LAM ISOLATED FORM;NFKC_CF=0643 0644
-cp;FC3C;dm=0643 0645;dt=Iso;na=ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM;NFKC_CF=0643 0645
-cp;FC3D;dm=0643 0649;dt=Iso;na=ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM;NFKC_CF=0643 0649
-cp;FC3E;dm=0643 064A;dt=Iso;na=ARABIC LIGATURE KAF WITH YEH ISOLATED FORM;NFKC_CF=0643 064A
-cp;FC3F;dm=0644 062C;dt=Iso;na=ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM;NFKC_CF=0644 062C
-cp;FC40;dm=0644 062D;dt=Iso;na=ARABIC LIGATURE LAM WITH HAH ISOLATED FORM;NFKC_CF=0644 062D
-cp;FC41;dm=0644 062E;dt=Iso;na=ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM;NFKC_CF=0644 062E
-cp;FC42;dm=0644 0645;dt=Iso;na=ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM;NFKC_CF=0644 0645
-cp;FC43;dm=0644 0649;dt=Iso;na=ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM;NFKC_CF=0644 0649
-cp;FC44;dm=0644 064A;dt=Iso;na=ARABIC LIGATURE LAM WITH YEH ISOLATED FORM;NFKC_CF=0644 064A
-cp;FC45;dm=0645 062C;dt=Iso;na=ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM;NFKC_CF=0645 062C
-cp;FC46;dm=0645 062D;dt=Iso;na=ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM;NFKC_CF=0645 062D
-cp;FC47;dm=0645 062E;dt=Iso;na=ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM;NFKC_CF=0645 062E
-cp;FC48;dm=0645 0645;dt=Iso;na=ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM;NFKC_CF=0645 0645
-cp;FC49;dm=0645 0649;dt=Iso;na=ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM;NFKC_CF=0645 0649
-cp;FC4A;dm=0645 064A;dt=Iso;na=ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM;NFKC_CF=0645 064A
-cp;FC4B;dm=0646 062C;dt=Iso;na=ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM;NFKC_CF=0646 062C
-cp;FC4C;dm=0646 062D;dt=Iso;na=ARABIC LIGATURE NOON WITH HAH ISOLATED FORM;NFKC_CF=0646 062D
-cp;FC4D;dm=0646 062E;dt=Iso;na=ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM;NFKC_CF=0646 062E
-cp;FC4E;dm=0646 0645;dt=Iso;na=ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM;NFKC_CF=0646 0645
-cp;FC4F;dm=0646 0649;dt=Iso;na=ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM;NFKC_CF=0646 0649
-cp;FC50;dm=0646 064A;dt=Iso;na=ARABIC LIGATURE NOON WITH YEH ISOLATED FORM;NFKC_CF=0646 064A
-cp;FC51;dm=0647 062C;dt=Iso;na=ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM;NFKC_CF=0647 062C
-cp;FC52;dm=0647 0645;dt=Iso;na=ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM;NFKC_CF=0647 0645
-cp;FC53;dm=0647 0649;dt=Iso;na=ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM;NFKC_CF=0647 0649
-cp;FC54;dm=0647 064A;dt=Iso;na=ARABIC LIGATURE HEH WITH YEH ISOLATED FORM;NFKC_CF=0647 064A
-cp;FC55;dm=064A 062C;dt=Iso;na=ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM;NFKC_CF=064A 062C
-cp;FC56;dm=064A 062D;dt=Iso;na=ARABIC LIGATURE YEH WITH HAH ISOLATED FORM;NFKC_CF=064A 062D
-cp;FC57;dm=064A 062E;dt=Iso;na=ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM;NFKC_CF=064A 062E
-cp;FC58;dm=064A 0645;dt=Iso;na=ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM;NFKC_CF=064A 0645
-cp;FC59;dm=064A 0649;dt=Iso;na=ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM;NFKC_CF=064A 0649
-cp;FC5A;dm=064A 064A;dt=Iso;na=ARABIC LIGATURE YEH WITH YEH ISOLATED FORM;NFKC_CF=064A 064A
-cp;FC5B;dm=0630 0670;dt=Iso;na=ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM;NFKC_CF=0630 0670
-cp;FC5C;dm=0631 0670;dt=Iso;na=ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM;NFKC_CF=0631 0670
-cp;FC5D;dm=0649 0670;dt=Iso;na=ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM;NFKC_CF=0649 0670
-cp;FC5E;dm=0020 064C 0651;dt=Iso;na=ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM;NFKC_CF=0020 064C 0651;-XIDC;-XIDS
-cp;FC5F;dm=0020 064D 0651;dt=Iso;na=ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM;NFKC_CF=0020 064D 0651;-XIDC;-XIDS
-cp;FC60;dm=0020 064E 0651;dt=Iso;na=ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM;NFKC_CF=0020 064E 0651;-XIDC;-XIDS
-cp;FC61;dm=0020 064F 0651;dt=Iso;na=ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM;NFKC_CF=0020 064F 0651;-XIDC;-XIDS
-cp;FC62;dm=0020 0650 0651;dt=Iso;na=ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM;NFKC_CF=0020 0650 0651;-XIDC;-XIDS
-cp;FC63;dm=0020 0651 0670;dt=Iso;na=ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM;NFKC_CF=0020 0651 0670;-XIDC;-XIDS
-cp;FC64;dm=0626 0631;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM;NFKC_CF=0626 0631
-cp;FC65;dm=0626 0632;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM;NFKC_CF=0626 0632
-cp;FC66;dm=0626 0645;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM;NFKC_CF=0626 0645
-cp;FC67;dm=0626 0646;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM;NFKC_CF=0626 0646
-cp;FC68;dm=0626 0649;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;NFKC_CF=0626 0649
-cp;FC69;dm=0626 064A;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM;NFKC_CF=0626 064A
-cp;FC6A;dm=0628 0631;na=ARABIC LIGATURE BEH WITH REH FINAL FORM;NFKC_CF=0628 0631
-cp;FC6B;dm=0628 0632;na=ARABIC LIGATURE BEH WITH ZAIN FINAL FORM;NFKC_CF=0628 0632
-cp;FC6C;dm=0628 0645;na=ARABIC LIGATURE BEH WITH MEEM FINAL FORM;NFKC_CF=0628 0645
-cp;FC6D;dm=0628 0646;na=ARABIC LIGATURE BEH WITH NOON FINAL FORM;NFKC_CF=0628 0646
-cp;FC6E;dm=0628 0649;na=ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM;NFKC_CF=0628 0649
-cp;FC6F;dm=0628 064A;na=ARABIC LIGATURE BEH WITH YEH FINAL FORM;NFKC_CF=0628 064A
-cp;FC70;dm=062A 0631;na=ARABIC LIGATURE TEH WITH REH FINAL FORM;NFKC_CF=062A 0631
-cp;FC71;dm=062A 0632;na=ARABIC LIGATURE TEH WITH ZAIN FINAL FORM;NFKC_CF=062A 0632
-cp;FC72;dm=062A 0645;na=ARABIC LIGATURE TEH WITH MEEM FINAL FORM;NFKC_CF=062A 0645
-cp;FC73;dm=062A 0646;na=ARABIC LIGATURE TEH WITH NOON FINAL FORM;NFKC_CF=062A 0646
-cp;FC74;dm=062A 0649;na=ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM;NFKC_CF=062A 0649
-cp;FC75;dm=062A 064A;na=ARABIC LIGATURE TEH WITH YEH FINAL FORM;NFKC_CF=062A 064A
-cp;FC76;dm=062B 0631;na=ARABIC LIGATURE THEH WITH REH FINAL FORM;NFKC_CF=062B 0631
-cp;FC77;dm=062B 0632;na=ARABIC LIGATURE THEH WITH ZAIN FINAL FORM;NFKC_CF=062B 0632
-cp;FC78;dm=062B 0645;na=ARABIC LIGATURE THEH WITH MEEM FINAL FORM;NFKC_CF=062B 0645
-cp;FC79;dm=062B 0646;na=ARABIC LIGATURE THEH WITH NOON FINAL FORM;NFKC_CF=062B 0646
-cp;FC7A;dm=062B 0649;na=ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM;NFKC_CF=062B 0649
-cp;FC7B;dm=062B 064A;na=ARABIC LIGATURE THEH WITH YEH FINAL FORM;NFKC_CF=062B 064A
-cp;FC7C;dm=0641 0649;na=ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM;NFKC_CF=0641 0649
-cp;FC7D;dm=0641 064A;na=ARABIC LIGATURE FEH WITH YEH FINAL FORM;NFKC_CF=0641 064A
-cp;FC7E;dm=0642 0649;na=ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM;NFKC_CF=0642 0649
-cp;FC7F;dm=0642 064A;na=ARABIC LIGATURE QAF WITH YEH FINAL FORM;NFKC_CF=0642 064A
-cp;FC80;dm=0643 0627;na=ARABIC LIGATURE KAF WITH ALEF FINAL FORM;NFKC_CF=0643 0627
-cp;FC81;dm=0643 0644;na=ARABIC LIGATURE KAF WITH LAM FINAL FORM;NFKC_CF=0643 0644
-cp;FC82;dm=0643 0645;na=ARABIC LIGATURE KAF WITH MEEM FINAL FORM;NFKC_CF=0643 0645
-cp;FC83;dm=0643 0649;na=ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM;NFKC_CF=0643 0649
-cp;FC84;dm=0643 064A;na=ARABIC LIGATURE KAF WITH YEH FINAL FORM;NFKC_CF=0643 064A
-cp;FC85;dm=0644 0645;na=ARABIC LIGATURE LAM WITH MEEM FINAL FORM;NFKC_CF=0644 0645
-cp;FC86;dm=0644 0649;na=ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM;NFKC_CF=0644 0649
-cp;FC87;dm=0644 064A;na=ARABIC LIGATURE LAM WITH YEH FINAL FORM;NFKC_CF=0644 064A
-cp;FC88;dm=0645 0627;na=ARABIC LIGATURE MEEM WITH ALEF FINAL FORM;NFKC_CF=0645 0627
-cp;FC89;dm=0645 0645;na=ARABIC LIGATURE MEEM WITH MEEM FINAL FORM;NFKC_CF=0645 0645
-cp;FC8A;dm=0646 0631;na=ARABIC LIGATURE NOON WITH REH FINAL FORM;NFKC_CF=0646 0631
-cp;FC8B;dm=0646 0632;na=ARABIC LIGATURE NOON WITH ZAIN FINAL FORM;NFKC_CF=0646 0632
-cp;FC8C;dm=0646 0645;na=ARABIC LIGATURE NOON WITH MEEM FINAL FORM;NFKC_CF=0646 0645
-cp;FC8D;dm=0646 0646;na=ARABIC LIGATURE NOON WITH NOON FINAL FORM;NFKC_CF=0646 0646
-cp;FC8E;dm=0646 0649;na=ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM;NFKC_CF=0646 0649
-cp;FC8F;dm=0646 064A;na=ARABIC LIGATURE NOON WITH YEH FINAL FORM;NFKC_CF=0646 064A
-cp;FC90;dm=0649 0670;na=ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM;NFKC_CF=0649 0670
-cp;FC91;dm=064A 0631;na=ARABIC LIGATURE YEH WITH REH FINAL FORM;NFKC_CF=064A 0631
-cp;FC92;dm=064A 0632;na=ARABIC LIGATURE YEH WITH ZAIN FINAL FORM;NFKC_CF=064A 0632
-cp;FC93;dm=064A 0645;na=ARABIC LIGATURE YEH WITH MEEM FINAL FORM;NFKC_CF=064A 0645
-cp;FC94;dm=064A 0646;na=ARABIC LIGATURE YEH WITH NOON FINAL FORM;NFKC_CF=064A 0646
-cp;FC95;dm=064A 0649;na=ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM;NFKC_CF=064A 0649
-cp;FC96;dm=064A 064A;na=ARABIC LIGATURE YEH WITH YEH FINAL FORM;NFKC_CF=064A 064A
-cp;FC97;dm=0626 062C;dt=Init;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM;NFKC_CF=0626 062C
-cp;FC98;dm=0626 062D;dt=Init;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM;NFKC_CF=0626 062D
-cp;FC99;dm=0626 062E;dt=Init;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM;NFKC_CF=0626 062E
-cp;FC9A;dm=0626 0645;dt=Init;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM;NFKC_CF=0626 0645
-cp;FC9B;dm=0626 0647;dt=Init;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM;NFKC_CF=0626 0647
-cp;FC9C;dm=0628 062C;dt=Init;na=ARABIC LIGATURE BEH WITH JEEM INITIAL FORM;NFKC_CF=0628 062C
-cp;FC9D;dm=0628 062D;dt=Init;na=ARABIC LIGATURE BEH WITH HAH INITIAL FORM;NFKC_CF=0628 062D
-cp;FC9E;dm=0628 062E;dt=Init;na=ARABIC LIGATURE BEH WITH KHAH INITIAL FORM;NFKC_CF=0628 062E
-cp;FC9F;dm=0628 0645;dt=Init;na=ARABIC LIGATURE BEH WITH MEEM INITIAL FORM;NFKC_CF=0628 0645
-cp;FCA0;dm=0628 0647;dt=Init;na=ARABIC LIGATURE BEH WITH HEH INITIAL FORM;NFKC_CF=0628 0647
-cp;FCA1;dm=062A 062C;dt=Init;na=ARABIC LIGATURE TEH WITH JEEM INITIAL FORM;NFKC_CF=062A 062C
-cp;FCA2;dm=062A 062D;dt=Init;na=ARABIC LIGATURE TEH WITH HAH INITIAL FORM;NFKC_CF=062A 062D
-cp;FCA3;dm=062A 062E;dt=Init;na=ARABIC LIGATURE TEH WITH KHAH INITIAL FORM;NFKC_CF=062A 062E
-cp;FCA4;dm=062A 0645;dt=Init;na=ARABIC LIGATURE TEH WITH MEEM INITIAL FORM;NFKC_CF=062A 0645
-cp;FCA5;dm=062A 0647;dt=Init;na=ARABIC LIGATURE TEH WITH HEH INITIAL FORM;NFKC_CF=062A 0647
-cp;FCA6;dm=062B 0645;dt=Init;na=ARABIC LIGATURE THEH WITH MEEM INITIAL FORM;NFKC_CF=062B 0645
-cp;FCA7;dm=062C 062D;dt=Init;na=ARABIC LIGATURE JEEM WITH HAH INITIAL FORM;NFKC_CF=062C 062D
-cp;FCA8;dm=062C 0645;dt=Init;na=ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM;NFKC_CF=062C 0645
-cp;FCA9;dm=062D 062C;dt=Init;na=ARABIC LIGATURE HAH WITH JEEM INITIAL FORM;NFKC_CF=062D 062C
-cp;FCAA;dm=062D 0645;dt=Init;na=ARABIC LIGATURE HAH WITH MEEM INITIAL FORM;NFKC_CF=062D 0645
-cp;FCAB;dm=062E 062C;dt=Init;na=ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM;NFKC_CF=062E 062C
-cp;FCAC;dm=062E 0645;dt=Init;na=ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM;NFKC_CF=062E 0645
-cp;FCAD;dm=0633 062C;dt=Init;na=ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM;NFKC_CF=0633 062C
-cp;FCAE;dm=0633 062D;dt=Init;na=ARABIC LIGATURE SEEN WITH HAH INITIAL FORM;NFKC_CF=0633 062D
-cp;FCAF;dm=0633 062E;dt=Init;na=ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM;NFKC_CF=0633 062E
-cp;FCB0;dm=0633 0645;dt=Init;na=ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM;NFKC_CF=0633 0645
-cp;FCB1;dm=0635 062D;dt=Init;na=ARABIC LIGATURE SAD WITH HAH INITIAL FORM;NFKC_CF=0635 062D
-cp;FCB2;dm=0635 062E;dt=Init;na=ARABIC LIGATURE SAD WITH KHAH INITIAL FORM;NFKC_CF=0635 062E
-cp;FCB3;dm=0635 0645;dt=Init;na=ARABIC LIGATURE SAD WITH MEEM INITIAL FORM;NFKC_CF=0635 0645
-cp;FCB4;dm=0636 062C;dt=Init;na=ARABIC LIGATURE DAD WITH JEEM INITIAL FORM;NFKC_CF=0636 062C
-cp;FCB5;dm=0636 062D;dt=Init;na=ARABIC LIGATURE DAD WITH HAH INITIAL FORM;NFKC_CF=0636 062D
-cp;FCB6;dm=0636 062E;dt=Init;na=ARABIC LIGATURE DAD WITH KHAH INITIAL FORM;NFKC_CF=0636 062E
-cp;FCB7;dm=0636 0645;dt=Init;na=ARABIC LIGATURE DAD WITH MEEM INITIAL FORM;NFKC_CF=0636 0645
-cp;FCB8;dm=0637 062D;dt=Init;na=ARABIC LIGATURE TAH WITH HAH INITIAL FORM;NFKC_CF=0637 062D
-cp;FCB9;dm=0638 0645;dt=Init;na=ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM;NFKC_CF=0638 0645
-cp;FCBA;dm=0639 062C;dt=Init;na=ARABIC LIGATURE AIN WITH JEEM INITIAL FORM;NFKC_CF=0639 062C
-cp;FCBB;dm=0639 0645;dt=Init;na=ARABIC LIGATURE AIN WITH MEEM INITIAL FORM;NFKC_CF=0639 0645
-cp;FCBC;dm=063A 062C;dt=Init;na=ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM;NFKC_CF=063A 062C
-cp;FCBD;dm=063A 0645;dt=Init;na=ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM;NFKC_CF=063A 0645
-cp;FCBE;dm=0641 062C;dt=Init;na=ARABIC LIGATURE FEH WITH JEEM INITIAL FORM;NFKC_CF=0641 062C
-cp;FCBF;dm=0641 062D;dt=Init;na=ARABIC LIGATURE FEH WITH HAH INITIAL FORM;NFKC_CF=0641 062D
-cp;FCC0;dm=0641 062E;dt=Init;na=ARABIC LIGATURE FEH WITH KHAH INITIAL FORM;NFKC_CF=0641 062E
-cp;FCC1;dm=0641 0645;dt=Init;na=ARABIC LIGATURE FEH WITH MEEM INITIAL FORM;NFKC_CF=0641 0645
-cp;FCC2;dm=0642 062D;dt=Init;na=ARABIC LIGATURE QAF WITH HAH INITIAL FORM;NFKC_CF=0642 062D
-cp;FCC3;dm=0642 0645;dt=Init;na=ARABIC LIGATURE QAF WITH MEEM INITIAL FORM;NFKC_CF=0642 0645
-cp;FCC4;dm=0643 062C;dt=Init;na=ARABIC LIGATURE KAF WITH JEEM INITIAL FORM;NFKC_CF=0643 062C
-cp;FCC5;dm=0643 062D;dt=Init;na=ARABIC LIGATURE KAF WITH HAH INITIAL FORM;NFKC_CF=0643 062D
-cp;FCC6;dm=0643 062E;dt=Init;na=ARABIC LIGATURE KAF WITH KHAH INITIAL FORM;NFKC_CF=0643 062E
-cp;FCC7;dm=0643 0644;dt=Init;na=ARABIC LIGATURE KAF WITH LAM INITIAL FORM;NFKC_CF=0643 0644
-cp;FCC8;dm=0643 0645;dt=Init;na=ARABIC LIGATURE KAF WITH MEEM INITIAL FORM;NFKC_CF=0643 0645
-cp;FCC9;dm=0644 062C;dt=Init;na=ARABIC LIGATURE LAM WITH JEEM INITIAL FORM;NFKC_CF=0644 062C
-cp;FCCA;dm=0644 062D;dt=Init;na=ARABIC LIGATURE LAM WITH HAH INITIAL FORM;NFKC_CF=0644 062D
-cp;FCCB;dm=0644 062E;dt=Init;na=ARABIC LIGATURE LAM WITH KHAH INITIAL FORM;NFKC_CF=0644 062E
-cp;FCCC;dm=0644 0645;dt=Init;na=ARABIC LIGATURE LAM WITH MEEM INITIAL FORM;NFKC_CF=0644 0645
-cp;FCCD;dm=0644 0647;dt=Init;na=ARABIC LIGATURE LAM WITH HEH INITIAL FORM;NFKC_CF=0644 0647
-cp;FCCE;dm=0645 062C;dt=Init;na=ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM;NFKC_CF=0645 062C
-cp;FCCF;dm=0645 062D;dt=Init;na=ARABIC LIGATURE MEEM WITH HAH INITIAL FORM;NFKC_CF=0645 062D
-cp;FCD0;dm=0645 062E;dt=Init;na=ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM;NFKC_CF=0645 062E
-cp;FCD1;dm=0645 0645;dt=Init;na=ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM;NFKC_CF=0645 0645
-cp;FCD2;dm=0646 062C;dt=Init;na=ARABIC LIGATURE NOON WITH JEEM INITIAL FORM;NFKC_CF=0646 062C
-cp;FCD3;dm=0646 062D;dt=Init;na=ARABIC LIGATURE NOON WITH HAH INITIAL FORM;NFKC_CF=0646 062D
-cp;FCD4;dm=0646 062E;dt=Init;na=ARABIC LIGATURE NOON WITH KHAH INITIAL FORM;NFKC_CF=0646 062E
-cp;FCD5;dm=0646 0645;dt=Init;na=ARABIC LIGATURE NOON WITH MEEM INITIAL FORM;NFKC_CF=0646 0645
-cp;FCD6;dm=0646 0647;dt=Init;na=ARABIC LIGATURE NOON WITH HEH INITIAL FORM;NFKC_CF=0646 0647
-cp;FCD7;dm=0647 062C;dt=Init;na=ARABIC LIGATURE HEH WITH JEEM INITIAL FORM;NFKC_CF=0647 062C
-cp;FCD8;dm=0647 0645;dt=Init;na=ARABIC LIGATURE HEH WITH MEEM INITIAL FORM;NFKC_CF=0647 0645
-cp;FCD9;dm=0647 0670;dt=Init;na=ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM;NFKC_CF=0647 0670
-cp;FCDA;dm=064A 062C;dt=Init;na=ARABIC LIGATURE YEH WITH JEEM INITIAL FORM;NFKC_CF=064A 062C
-cp;FCDB;dm=064A 062D;dt=Init;na=ARABIC LIGATURE YEH WITH HAH INITIAL FORM;NFKC_CF=064A 062D
-cp;FCDC;dm=064A 062E;dt=Init;na=ARABIC LIGATURE YEH WITH KHAH INITIAL FORM;NFKC_CF=064A 062E
-cp;FCDD;dm=064A 0645;dt=Init;na=ARABIC LIGATURE YEH WITH MEEM INITIAL FORM;NFKC_CF=064A 0645
-cp;FCDE;dm=064A 0647;dt=Init;na=ARABIC LIGATURE YEH WITH HEH INITIAL FORM;NFKC_CF=064A 0647
-cp;FCDF;dm=0626 0645;dt=Med;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM;NFKC_CF=0626 0645
-cp;FCE0;dm=0626 0647;dt=Med;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM;NFKC_CF=0626 0647
-cp;FCE1;dm=0628 0645;dt=Med;na=ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM;NFKC_CF=0628 0645
-cp;FCE2;dm=0628 0647;dt=Med;na=ARABIC LIGATURE BEH WITH HEH MEDIAL FORM;NFKC_CF=0628 0647
-cp;FCE3;dm=062A 0645;dt=Med;na=ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM;NFKC_CF=062A 0645
-cp;FCE4;dm=062A 0647;dt=Med;na=ARABIC LIGATURE TEH WITH HEH MEDIAL FORM;NFKC_CF=062A 0647
-cp;FCE5;dm=062B 0645;dt=Med;na=ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM;NFKC_CF=062B 0645
-cp;FCE6;dm=062B 0647;dt=Med;na=ARABIC LIGATURE THEH WITH HEH MEDIAL FORM;NFKC_CF=062B 0647
-cp;FCE7;dm=0633 0645;dt=Med;na=ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM;NFKC_CF=0633 0645
-cp;FCE8;dm=0633 0647;dt=Med;na=ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM;NFKC_CF=0633 0647
-cp;FCE9;dm=0634 0645;dt=Med;na=ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM;NFKC_CF=0634 0645
-cp;FCEA;dm=0634 0647;dt=Med;na=ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM;NFKC_CF=0634 0647
-cp;FCEB;dm=0643 0644;dt=Med;na=ARABIC LIGATURE KAF WITH LAM MEDIAL FORM;NFKC_CF=0643 0644
-cp;FCEC;dm=0643 0645;dt=Med;na=ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM;NFKC_CF=0643 0645
-cp;FCED;dm=0644 0645;dt=Med;na=ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM;NFKC_CF=0644 0645
-cp;FCEE;dm=0646 0645;dt=Med;na=ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM;NFKC_CF=0646 0645
-cp;FCEF;dm=0646 0647;dt=Med;na=ARABIC LIGATURE NOON WITH HEH MEDIAL FORM;NFKC_CF=0646 0647
-cp;FCF0;dm=064A 0645;dt=Med;na=ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM;NFKC_CF=064A 0645
-cp;FCF1;dm=064A 0647;dt=Med;na=ARABIC LIGATURE YEH WITH HEH MEDIAL FORM;NFKC_CF=064A 0647
-cp;FCF2;dm=0640 064E 0651;dt=Med;na=ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM;NFKC_CF=0640 064E 0651
-cp;FCF3;dm=0640 064F 0651;dt=Med;na=ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM;NFKC_CF=0640 064F 0651
-cp;FCF4;dm=0640 0650 0651;dt=Med;na=ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM;NFKC_CF=0640 0650 0651
-cp;FCF5;dm=0637 0649;dt=Iso;na=ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM;NFKC_CF=0637 0649
-cp;FCF6;dm=0637 064A;dt=Iso;na=ARABIC LIGATURE TAH WITH YEH ISOLATED FORM;NFKC_CF=0637 064A
-cp;FCF7;dm=0639 0649;dt=Iso;na=ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM;NFKC_CF=0639 0649
-cp;FCF8;dm=0639 064A;dt=Iso;na=ARABIC LIGATURE AIN WITH YEH ISOLATED FORM;NFKC_CF=0639 064A
-cp;FCF9;dm=063A 0649;dt=Iso;na=ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM;NFKC_CF=063A 0649
-cp;FCFA;dm=063A 064A;dt=Iso;na=ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM;NFKC_CF=063A 064A
-cp;FCFB;dm=0633 0649;dt=Iso;na=ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM;NFKC_CF=0633 0649
-cp;FCFC;dm=0633 064A;dt=Iso;na=ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM;NFKC_CF=0633 064A
-cp;FCFD;dm=0634 0649;dt=Iso;na=ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM;NFKC_CF=0634 0649
-cp;FCFE;dm=0634 064A;dt=Iso;na=ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM;NFKC_CF=0634 064A
-cp;FCFF;dm=062D 0649;dt=Iso;na=ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM;NFKC_CF=062D 0649
-cp;FD00;dm=062D 064A;dt=Iso;na=ARABIC LIGATURE HAH WITH YEH ISOLATED FORM;NFKC_CF=062D 064A
-cp;FD01;dm=062C 0649;dt=Iso;na=ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM;NFKC_CF=062C 0649
-cp;FD02;dm=062C 064A;dt=Iso;na=ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM;NFKC_CF=062C 064A
-cp;FD03;dm=062E 0649;dt=Iso;na=ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM;NFKC_CF=062E 0649
-cp;FD04;dm=062E 064A;dt=Iso;na=ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM;NFKC_CF=062E 064A
-cp;FD05;dm=0635 0649;dt=Iso;na=ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM;NFKC_CF=0635 0649
-cp;FD06;dm=0635 064A;dt=Iso;na=ARABIC LIGATURE SAD WITH YEH ISOLATED FORM;NFKC_CF=0635 064A
-cp;FD07;dm=0636 0649;dt=Iso;na=ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM;NFKC_CF=0636 0649
-cp;FD08;dm=0636 064A;dt=Iso;na=ARABIC LIGATURE DAD WITH YEH ISOLATED FORM;NFKC_CF=0636 064A
-cp;FD09;dm=0634 062C;dt=Iso;na=ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM;NFKC_CF=0634 062C
-cp;FD0A;dm=0634 062D;dt=Iso;na=ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM;NFKC_CF=0634 062D
-cp;FD0B;dm=0634 062E;dt=Iso;na=ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM;NFKC_CF=0634 062E
-cp;FD0C;dm=0634 0645;dt=Iso;na=ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM;NFKC_CF=0634 0645
-cp;FD0D;dm=0634 0631;dt=Iso;na=ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM;NFKC_CF=0634 0631
-cp;FD0E;dm=0633 0631;dt=Iso;na=ARABIC LIGATURE SEEN WITH REH ISOLATED FORM;NFKC_CF=0633 0631
-cp;FD0F;dm=0635 0631;dt=Iso;na=ARABIC LIGATURE SAD WITH REH ISOLATED FORM;NFKC_CF=0635 0631
-cp;FD10;dm=0636 0631;dt=Iso;na=ARABIC LIGATURE DAD WITH REH ISOLATED FORM;NFKC_CF=0636 0631
-cp;FD11;dm=0637 0649;na=ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM;NFKC_CF=0637 0649
-cp;FD12;dm=0637 064A;na=ARABIC LIGATURE TAH WITH YEH FINAL FORM;NFKC_CF=0637 064A
-cp;FD13;dm=0639 0649;na=ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM;NFKC_CF=0639 0649
-cp;FD14;dm=0639 064A;na=ARABIC LIGATURE AIN WITH YEH FINAL FORM;NFKC_CF=0639 064A
-cp;FD15;dm=063A 0649;na=ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM;NFKC_CF=063A 0649
-cp;FD16;dm=063A 064A;na=ARABIC LIGATURE GHAIN WITH YEH FINAL FORM;NFKC_CF=063A 064A
-cp;FD17;dm=0633 0649;na=ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM;NFKC_CF=0633 0649
-cp;FD18;dm=0633 064A;na=ARABIC LIGATURE SEEN WITH YEH FINAL FORM;NFKC_CF=0633 064A
-cp;FD19;dm=0634 0649;na=ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM;NFKC_CF=0634 0649
-cp;FD1A;dm=0634 064A;na=ARABIC LIGATURE SHEEN WITH YEH FINAL FORM;NFKC_CF=0634 064A
-cp;FD1B;dm=062D 0649;na=ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM;NFKC_CF=062D 0649
-cp;FD1C;dm=062D 064A;na=ARABIC LIGATURE HAH WITH YEH FINAL FORM;NFKC_CF=062D 064A
-cp;FD1D;dm=062C 0649;na=ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM;NFKC_CF=062C 0649
-cp;FD1E;dm=062C 064A;na=ARABIC LIGATURE JEEM WITH YEH FINAL FORM;NFKC_CF=062C 064A
-cp;FD1F;dm=062E 0649;na=ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM;NFKC_CF=062E 0649
-cp;FD20;dm=062E 064A;na=ARABIC LIGATURE KHAH WITH YEH FINAL FORM;NFKC_CF=062E 064A
-cp;FD21;dm=0635 0649;na=ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM;NFKC_CF=0635 0649
-cp;FD22;dm=0635 064A;na=ARABIC LIGATURE SAD WITH YEH FINAL FORM;NFKC_CF=0635 064A
-cp;FD23;dm=0636 0649;na=ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM;NFKC_CF=0636 0649
-cp;FD24;dm=0636 064A;na=ARABIC LIGATURE DAD WITH YEH FINAL FORM;NFKC_CF=0636 064A
-cp;FD25;dm=0634 062C;na=ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM;NFKC_CF=0634 062C
-cp;FD26;dm=0634 062D;na=ARABIC LIGATURE SHEEN WITH HAH FINAL FORM;NFKC_CF=0634 062D
-cp;FD27;dm=0634 062E;na=ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM;NFKC_CF=0634 062E
-cp;FD28;dm=0634 0645;na=ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM;NFKC_CF=0634 0645
-cp;FD29;dm=0634 0631;na=ARABIC LIGATURE SHEEN WITH REH FINAL FORM;NFKC_CF=0634 0631
-cp;FD2A;dm=0633 0631;na=ARABIC LIGATURE SEEN WITH REH FINAL FORM;NFKC_CF=0633 0631
-cp;FD2B;dm=0635 0631;na=ARABIC LIGATURE SAD WITH REH FINAL FORM;NFKC_CF=0635 0631
-cp;FD2C;dm=0636 0631;na=ARABIC LIGATURE DAD WITH REH FINAL FORM;NFKC_CF=0636 0631
-cp;FD2D;dm=0634 062C;dt=Init;na=ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM;NFKC_CF=0634 062C
-cp;FD2E;dm=0634 062D;dt=Init;na=ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM;NFKC_CF=0634 062D
-cp;FD2F;dm=0634 062E;dt=Init;na=ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM;NFKC_CF=0634 062E
-cp;FD30;dm=0634 0645;dt=Init;na=ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM;NFKC_CF=0634 0645
-cp;FD31;dm=0633 0647;dt=Init;na=ARABIC LIGATURE SEEN WITH HEH INITIAL FORM;NFKC_CF=0633 0647
-cp;FD32;dm=0634 0647;dt=Init;na=ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM;NFKC_CF=0634 0647
-cp;FD33;dm=0637 0645;dt=Init;na=ARABIC LIGATURE TAH WITH MEEM INITIAL FORM;NFKC_CF=0637 0645
-cp;FD34;dm=0633 062C;dt=Med;na=ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM;NFKC_CF=0633 062C
-cp;FD35;dm=0633 062D;dt=Med;na=ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM;NFKC_CF=0633 062D
-cp;FD36;dm=0633 062E;dt=Med;na=ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM;NFKC_CF=0633 062E
-cp;FD37;dm=0634 062C;dt=Med;na=ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM;NFKC_CF=0634 062C
-cp;FD38;dm=0634 062D;dt=Med;na=ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM;NFKC_CF=0634 062D
-cp;FD39;dm=0634 062E;dt=Med;na=ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM;NFKC_CF=0634 062E
-cp;FD3A;dm=0637 0645;dt=Med;na=ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM;NFKC_CF=0637 0645
-cp;FD3B;dm=0638 0645;dt=Med;na=ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM;NFKC_CF=0638 0645
-cp;FD3C;dm=0627 064B;na=ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM;NFKC_CF=0627 064B
-cp;FD3D;dm=0627 064B;dt=Iso;na=ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM;NFKC_CF=0627 064B
+cp;FBEA;dm=0626 0627;dt=Iso;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM;NFKC_CF=0626 0627;NFKC_SCF=0626 0627
+cp;FBEB;dm=0626 0627;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM;NFKC_CF=0626 0627;NFKC_SCF=0626 0627
+cp;FBEC;dm=0626 06D5;dt=Iso;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM;NFKC_CF=0626 06D5;NFKC_SCF=0626 06D5
+cp;FBED;dm=0626 06D5;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM;NFKC_CF=0626 06D5;NFKC_SCF=0626 06D5
+cp;FBEE;dm=0626 0648;dt=Iso;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM;NFKC_CF=0626 0648;NFKC_SCF=0626 0648
+cp;FBEF;dm=0626 0648;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM;NFKC_CF=0626 0648;NFKC_SCF=0626 0648
+cp;FBF0;dm=0626 06C7;dt=Iso;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM;NFKC_CF=0626 06C7;NFKC_SCF=0626 06C7
+cp;FBF1;dm=0626 06C7;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM;NFKC_CF=0626 06C7;NFKC_SCF=0626 06C7
+cp;FBF2;dm=0626 06C6;dt=Iso;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM;NFKC_CF=0626 06C6;NFKC_SCF=0626 06C6
+cp;FBF3;dm=0626 06C6;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM;NFKC_CF=0626 06C6;NFKC_SCF=0626 06C6
+cp;FBF4;dm=0626 06C8;dt=Iso;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM;NFKC_CF=0626 06C8;NFKC_SCF=0626 06C8
+cp;FBF5;dm=0626 06C8;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM;NFKC_CF=0626 06C8;NFKC_SCF=0626 06C8
+cp;FBF6;dm=0626 06D0;dt=Iso;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM;NFKC_CF=0626 06D0;NFKC_SCF=0626 06D0
+cp;FBF7;dm=0626 06D0;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM;NFKC_CF=0626 06D0;NFKC_SCF=0626 06D0
+cp;FBF8;dm=0626 06D0;dt=Init;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM;NFKC_CF=0626 06D0;NFKC_SCF=0626 06D0
+cp;FBF9;dm=0626 0649;dt=Iso;na=ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;NFKC_CF=0626 0649;NFKC_SCF=0626 0649
+cp;FBFA;dm=0626 0649;na=ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;NFKC_CF=0626 0649;NFKC_SCF=0626 0649
+cp;FBFB;dm=0626 0649;dt=Init;na=ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM;NFKC_CF=0626 0649;NFKC_SCF=0626 0649
+cp;FBFC;dm=06CC;dt=Iso;na=ARABIC LETTER FARSI YEH ISOLATED FORM;NFKC_CF=06CC;NFKC_SCF=06CC
+cp;FBFD;dm=06CC;na=ARABIC LETTER FARSI YEH FINAL FORM;NFKC_CF=06CC;NFKC_SCF=06CC
+cp;FBFE;dm=06CC;dt=Init;na=ARABIC LETTER FARSI YEH INITIAL FORM;NFKC_CF=06CC;NFKC_SCF=06CC
+cp;FBFF;dm=06CC;dt=Med;na=ARABIC LETTER FARSI YEH MEDIAL FORM;NFKC_CF=06CC;NFKC_SCF=06CC
+cp;FC00;dm=0626 062C;dt=Iso;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM;NFKC_CF=0626 062C;NFKC_SCF=0626 062C
+cp;FC01;dm=0626 062D;dt=Iso;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM;NFKC_CF=0626 062D;NFKC_SCF=0626 062D
+cp;FC02;dm=0626 0645;dt=Iso;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM;NFKC_CF=0626 0645;NFKC_SCF=0626 0645
+cp;FC03;dm=0626 0649;dt=Iso;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;NFKC_CF=0626 0649;NFKC_SCF=0626 0649
+cp;FC04;dm=0626 064A;dt=Iso;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM;NFKC_CF=0626 064A;NFKC_SCF=0626 064A
+cp;FC05;dm=0628 062C;dt=Iso;na=ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM;NFKC_CF=0628 062C;NFKC_SCF=0628 062C
+cp;FC06;dm=0628 062D;dt=Iso;na=ARABIC LIGATURE BEH WITH HAH ISOLATED FORM;NFKC_CF=0628 062D;NFKC_SCF=0628 062D
+cp;FC07;dm=0628 062E;dt=Iso;na=ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM;NFKC_CF=0628 062E;NFKC_SCF=0628 062E
+cp;FC08;dm=0628 0645;dt=Iso;na=ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM;NFKC_CF=0628 0645;NFKC_SCF=0628 0645
+cp;FC09;dm=0628 0649;dt=Iso;na=ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM;NFKC_CF=0628 0649;NFKC_SCF=0628 0649
+cp;FC0A;dm=0628 064A;dt=Iso;na=ARABIC LIGATURE BEH WITH YEH ISOLATED FORM;NFKC_CF=0628 064A;NFKC_SCF=0628 064A
+cp;FC0B;dm=062A 062C;dt=Iso;na=ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM;NFKC_CF=062A 062C;NFKC_SCF=062A 062C
+cp;FC0C;dm=062A 062D;dt=Iso;na=ARABIC LIGATURE TEH WITH HAH ISOLATED FORM;NFKC_CF=062A 062D;NFKC_SCF=062A 062D
+cp;FC0D;dm=062A 062E;dt=Iso;na=ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM;NFKC_CF=062A 062E;NFKC_SCF=062A 062E
+cp;FC0E;dm=062A 0645;dt=Iso;na=ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM;NFKC_CF=062A 0645;NFKC_SCF=062A 0645
+cp;FC0F;dm=062A 0649;dt=Iso;na=ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM;NFKC_CF=062A 0649;NFKC_SCF=062A 0649
+cp;FC10;dm=062A 064A;dt=Iso;na=ARABIC LIGATURE TEH WITH YEH ISOLATED FORM;NFKC_CF=062A 064A;NFKC_SCF=062A 064A
+cp;FC11;dm=062B 062C;dt=Iso;na=ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM;NFKC_CF=062B 062C;NFKC_SCF=062B 062C
+cp;FC12;dm=062B 0645;dt=Iso;na=ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM;NFKC_CF=062B 0645;NFKC_SCF=062B 0645
+cp;FC13;dm=062B 0649;dt=Iso;na=ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM;NFKC_CF=062B 0649;NFKC_SCF=062B 0649
+cp;FC14;dm=062B 064A;dt=Iso;na=ARABIC LIGATURE THEH WITH YEH ISOLATED FORM;NFKC_CF=062B 064A;NFKC_SCF=062B 064A
+cp;FC15;dm=062C 062D;dt=Iso;na=ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM;NFKC_CF=062C 062D;NFKC_SCF=062C 062D
+cp;FC16;dm=062C 0645;dt=Iso;na=ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM;NFKC_CF=062C 0645;NFKC_SCF=062C 0645
+cp;FC17;dm=062D 062C;dt=Iso;na=ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM;NFKC_CF=062D 062C;NFKC_SCF=062D 062C
+cp;FC18;dm=062D 0645;dt=Iso;na=ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM;NFKC_CF=062D 0645;NFKC_SCF=062D 0645
+cp;FC19;dm=062E 062C;dt=Iso;na=ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM;NFKC_CF=062E 062C;NFKC_SCF=062E 062C
+cp;FC1A;dm=062E 062D;dt=Iso;na=ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM;NFKC_CF=062E 062D;NFKC_SCF=062E 062D
+cp;FC1B;dm=062E 0645;dt=Iso;na=ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM;NFKC_CF=062E 0645;NFKC_SCF=062E 0645
+cp;FC1C;dm=0633 062C;dt=Iso;na=ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM;NFKC_CF=0633 062C;NFKC_SCF=0633 062C
+cp;FC1D;dm=0633 062D;dt=Iso;na=ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM;NFKC_CF=0633 062D;NFKC_SCF=0633 062D
+cp;FC1E;dm=0633 062E;dt=Iso;na=ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM;NFKC_CF=0633 062E;NFKC_SCF=0633 062E
+cp;FC1F;dm=0633 0645;dt=Iso;na=ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM;NFKC_CF=0633 0645;NFKC_SCF=0633 0645
+cp;FC20;dm=0635 062D;dt=Iso;na=ARABIC LIGATURE SAD WITH HAH ISOLATED FORM;NFKC_CF=0635 062D;NFKC_SCF=0635 062D
+cp;FC21;dm=0635 0645;dt=Iso;na=ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM;NFKC_CF=0635 0645;NFKC_SCF=0635 0645
+cp;FC22;dm=0636 062C;dt=Iso;na=ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM;NFKC_CF=0636 062C;NFKC_SCF=0636 062C
+cp;FC23;dm=0636 062D;dt=Iso;na=ARABIC LIGATURE DAD WITH HAH ISOLATED FORM;NFKC_CF=0636 062D;NFKC_SCF=0636 062D
+cp;FC24;dm=0636 062E;dt=Iso;na=ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM;NFKC_CF=0636 062E;NFKC_SCF=0636 062E
+cp;FC25;dm=0636 0645;dt=Iso;na=ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM;NFKC_CF=0636 0645;NFKC_SCF=0636 0645
+cp;FC26;dm=0637 062D;dt=Iso;na=ARABIC LIGATURE TAH WITH HAH ISOLATED FORM;NFKC_CF=0637 062D;NFKC_SCF=0637 062D
+cp;FC27;dm=0637 0645;dt=Iso;na=ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM;NFKC_CF=0637 0645;NFKC_SCF=0637 0645
+cp;FC28;dm=0638 0645;dt=Iso;na=ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM;NFKC_CF=0638 0645;NFKC_SCF=0638 0645
+cp;FC29;dm=0639 062C;dt=Iso;na=ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM;NFKC_CF=0639 062C;NFKC_SCF=0639 062C
+cp;FC2A;dm=0639 0645;dt=Iso;na=ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM;NFKC_CF=0639 0645;NFKC_SCF=0639 0645
+cp;FC2B;dm=063A 062C;dt=Iso;na=ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM;NFKC_CF=063A 062C;NFKC_SCF=063A 062C
+cp;FC2C;dm=063A 0645;dt=Iso;na=ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM;NFKC_CF=063A 0645;NFKC_SCF=063A 0645
+cp;FC2D;dm=0641 062C;dt=Iso;na=ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM;NFKC_CF=0641 062C;NFKC_SCF=0641 062C
+cp;FC2E;dm=0641 062D;dt=Iso;na=ARABIC LIGATURE FEH WITH HAH ISOLATED FORM;NFKC_CF=0641 062D;NFKC_SCF=0641 062D
+cp;FC2F;dm=0641 062E;dt=Iso;na=ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM;NFKC_CF=0641 062E;NFKC_SCF=0641 062E
+cp;FC30;dm=0641 0645;dt=Iso;na=ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM;NFKC_CF=0641 0645;NFKC_SCF=0641 0645
+cp;FC31;dm=0641 0649;dt=Iso;na=ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM;NFKC_CF=0641 0649;NFKC_SCF=0641 0649
+cp;FC32;dm=0641 064A;dt=Iso;na=ARABIC LIGATURE FEH WITH YEH ISOLATED FORM;NFKC_CF=0641 064A;NFKC_SCF=0641 064A
+cp;FC33;dm=0642 062D;dt=Iso;na=ARABIC LIGATURE QAF WITH HAH ISOLATED FORM;NFKC_CF=0642 062D;NFKC_SCF=0642 062D
+cp;FC34;dm=0642 0645;dt=Iso;na=ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM;NFKC_CF=0642 0645;NFKC_SCF=0642 0645
+cp;FC35;dm=0642 0649;dt=Iso;na=ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM;NFKC_CF=0642 0649;NFKC_SCF=0642 0649
+cp;FC36;dm=0642 064A;dt=Iso;na=ARABIC LIGATURE QAF WITH YEH ISOLATED FORM;NFKC_CF=0642 064A;NFKC_SCF=0642 064A
+cp;FC37;dm=0643 0627;dt=Iso;na=ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM;NFKC_CF=0643 0627;NFKC_SCF=0643 0627
+cp;FC38;dm=0643 062C;dt=Iso;na=ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM;NFKC_CF=0643 062C;NFKC_SCF=0643 062C
+cp;FC39;dm=0643 062D;dt=Iso;na=ARABIC LIGATURE KAF WITH HAH ISOLATED FORM;NFKC_CF=0643 062D;NFKC_SCF=0643 062D
+cp;FC3A;dm=0643 062E;dt=Iso;na=ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM;NFKC_CF=0643 062E;NFKC_SCF=0643 062E
+cp;FC3B;dm=0643 0644;dt=Iso;na=ARABIC LIGATURE KAF WITH LAM ISOLATED FORM;NFKC_CF=0643 0644;NFKC_SCF=0643 0644
+cp;FC3C;dm=0643 0645;dt=Iso;na=ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM;NFKC_CF=0643 0645;NFKC_SCF=0643 0645
+cp;FC3D;dm=0643 0649;dt=Iso;na=ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM;NFKC_CF=0643 0649;NFKC_SCF=0643 0649
+cp;FC3E;dm=0643 064A;dt=Iso;na=ARABIC LIGATURE KAF WITH YEH ISOLATED FORM;NFKC_CF=0643 064A;NFKC_SCF=0643 064A
+cp;FC3F;dm=0644 062C;dt=Iso;na=ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM;NFKC_CF=0644 062C;NFKC_SCF=0644 062C
+cp;FC40;dm=0644 062D;dt=Iso;na=ARABIC LIGATURE LAM WITH HAH ISOLATED FORM;NFKC_CF=0644 062D;NFKC_SCF=0644 062D
+cp;FC41;dm=0644 062E;dt=Iso;na=ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM;NFKC_CF=0644 062E;NFKC_SCF=0644 062E
+cp;FC42;dm=0644 0645;dt=Iso;na=ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM;NFKC_CF=0644 0645;NFKC_SCF=0644 0645
+cp;FC43;dm=0644 0649;dt=Iso;na=ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM;NFKC_CF=0644 0649;NFKC_SCF=0644 0649
+cp;FC44;dm=0644 064A;dt=Iso;na=ARABIC LIGATURE LAM WITH YEH ISOLATED FORM;NFKC_CF=0644 064A;NFKC_SCF=0644 064A
+cp;FC45;dm=0645 062C;dt=Iso;na=ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM;NFKC_CF=0645 062C;NFKC_SCF=0645 062C
+cp;FC46;dm=0645 062D;dt=Iso;na=ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM;NFKC_CF=0645 062D;NFKC_SCF=0645 062D
+cp;FC47;dm=0645 062E;dt=Iso;na=ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM;NFKC_CF=0645 062E;NFKC_SCF=0645 062E
+cp;FC48;dm=0645 0645;dt=Iso;na=ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM;NFKC_CF=0645 0645;NFKC_SCF=0645 0645
+cp;FC49;dm=0645 0649;dt=Iso;na=ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM;NFKC_CF=0645 0649;NFKC_SCF=0645 0649
+cp;FC4A;dm=0645 064A;dt=Iso;na=ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM;NFKC_CF=0645 064A;NFKC_SCF=0645 064A
+cp;FC4B;dm=0646 062C;dt=Iso;na=ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM;NFKC_CF=0646 062C;NFKC_SCF=0646 062C
+cp;FC4C;dm=0646 062D;dt=Iso;na=ARABIC LIGATURE NOON WITH HAH ISOLATED FORM;NFKC_CF=0646 062D;NFKC_SCF=0646 062D
+cp;FC4D;dm=0646 062E;dt=Iso;na=ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM;NFKC_CF=0646 062E;NFKC_SCF=0646 062E
+cp;FC4E;dm=0646 0645;dt=Iso;na=ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM;NFKC_CF=0646 0645;NFKC_SCF=0646 0645
+cp;FC4F;dm=0646 0649;dt=Iso;na=ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM;NFKC_CF=0646 0649;NFKC_SCF=0646 0649
+cp;FC50;dm=0646 064A;dt=Iso;na=ARABIC LIGATURE NOON WITH YEH ISOLATED FORM;NFKC_CF=0646 064A;NFKC_SCF=0646 064A
+cp;FC51;dm=0647 062C;dt=Iso;na=ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM;NFKC_CF=0647 062C;NFKC_SCF=0647 062C
+cp;FC52;dm=0647 0645;dt=Iso;na=ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM;NFKC_CF=0647 0645;NFKC_SCF=0647 0645
+cp;FC53;dm=0647 0649;dt=Iso;na=ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM;NFKC_CF=0647 0649;NFKC_SCF=0647 0649
+cp;FC54;dm=0647 064A;dt=Iso;na=ARABIC LIGATURE HEH WITH YEH ISOLATED FORM;NFKC_CF=0647 064A;NFKC_SCF=0647 064A
+cp;FC55;dm=064A 062C;dt=Iso;na=ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM;NFKC_CF=064A 062C;NFKC_SCF=064A 062C
+cp;FC56;dm=064A 062D;dt=Iso;na=ARABIC LIGATURE YEH WITH HAH ISOLATED FORM;NFKC_CF=064A 062D;NFKC_SCF=064A 062D
+cp;FC57;dm=064A 062E;dt=Iso;na=ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM;NFKC_CF=064A 062E;NFKC_SCF=064A 062E
+cp;FC58;dm=064A 0645;dt=Iso;na=ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM;NFKC_CF=064A 0645;NFKC_SCF=064A 0645
+cp;FC59;dm=064A 0649;dt=Iso;na=ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM;NFKC_CF=064A 0649;NFKC_SCF=064A 0649
+cp;FC5A;dm=064A 064A;dt=Iso;na=ARABIC LIGATURE YEH WITH YEH ISOLATED FORM;NFKC_CF=064A 064A;NFKC_SCF=064A 064A
+cp;FC5B;dm=0630 0670;dt=Iso;na=ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM;NFKC_CF=0630 0670;NFKC_SCF=0630 0670
+cp;FC5C;dm=0631 0670;dt=Iso;na=ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM;NFKC_CF=0631 0670;NFKC_SCF=0631 0670
+cp;FC5D;dm=0649 0670;dt=Iso;na=ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM;NFKC_CF=0649 0670;NFKC_SCF=0649 0670
+cp;FC5E;dm=0020 064C 0651;dt=Iso;na=ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM;NFKC_CF=0020 064C 0651;NFKC_SCF=0020 064C 0651;-XIDC;-XIDS
+cp;FC5F;dm=0020 064D 0651;dt=Iso;na=ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM;NFKC_CF=0020 064D 0651;NFKC_SCF=0020 064D 0651;-XIDC;-XIDS
+cp;FC60;dm=0020 064E 0651;dt=Iso;na=ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM;NFKC_CF=0020 064E 0651;NFKC_SCF=0020 064E 0651;-XIDC;-XIDS
+cp;FC61;dm=0020 064F 0651;dt=Iso;na=ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM;NFKC_CF=0020 064F 0651;NFKC_SCF=0020 064F 0651;-XIDC;-XIDS
+cp;FC62;dm=0020 0650 0651;dt=Iso;na=ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM;NFKC_CF=0020 0650 0651;NFKC_SCF=0020 0650 0651;-XIDC;-XIDS
+cp;FC63;dm=0020 0651 0670;dt=Iso;na=ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM;NFKC_CF=0020 0651 0670;NFKC_SCF=0020 0651 0670;-XIDC;-XIDS
+cp;FC64;dm=0626 0631;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM;NFKC_CF=0626 0631;NFKC_SCF=0626 0631
+cp;FC65;dm=0626 0632;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM;NFKC_CF=0626 0632;NFKC_SCF=0626 0632
+cp;FC66;dm=0626 0645;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM;NFKC_CF=0626 0645;NFKC_SCF=0626 0645
+cp;FC67;dm=0626 0646;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM;NFKC_CF=0626 0646;NFKC_SCF=0626 0646
+cp;FC68;dm=0626 0649;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;NFKC_CF=0626 0649;NFKC_SCF=0626 0649
+cp;FC69;dm=0626 064A;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM;NFKC_CF=0626 064A;NFKC_SCF=0626 064A
+cp;FC6A;dm=0628 0631;na=ARABIC LIGATURE BEH WITH REH FINAL FORM;NFKC_CF=0628 0631;NFKC_SCF=0628 0631
+cp;FC6B;dm=0628 0632;na=ARABIC LIGATURE BEH WITH ZAIN FINAL FORM;NFKC_CF=0628 0632;NFKC_SCF=0628 0632
+cp;FC6C;dm=0628 0645;na=ARABIC LIGATURE BEH WITH MEEM FINAL FORM;NFKC_CF=0628 0645;NFKC_SCF=0628 0645
+cp;FC6D;dm=0628 0646;na=ARABIC LIGATURE BEH WITH NOON FINAL FORM;NFKC_CF=0628 0646;NFKC_SCF=0628 0646
+cp;FC6E;dm=0628 0649;na=ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM;NFKC_CF=0628 0649;NFKC_SCF=0628 0649
+cp;FC6F;dm=0628 064A;na=ARABIC LIGATURE BEH WITH YEH FINAL FORM;NFKC_CF=0628 064A;NFKC_SCF=0628 064A
+cp;FC70;dm=062A 0631;na=ARABIC LIGATURE TEH WITH REH FINAL FORM;NFKC_CF=062A 0631;NFKC_SCF=062A 0631
+cp;FC71;dm=062A 0632;na=ARABIC LIGATURE TEH WITH ZAIN FINAL FORM;NFKC_CF=062A 0632;NFKC_SCF=062A 0632
+cp;FC72;dm=062A 0645;na=ARABIC LIGATURE TEH WITH MEEM FINAL FORM;NFKC_CF=062A 0645;NFKC_SCF=062A 0645
+cp;FC73;dm=062A 0646;na=ARABIC LIGATURE TEH WITH NOON FINAL FORM;NFKC_CF=062A 0646;NFKC_SCF=062A 0646
+cp;FC74;dm=062A 0649;na=ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM;NFKC_CF=062A 0649;NFKC_SCF=062A 0649
+cp;FC75;dm=062A 064A;na=ARABIC LIGATURE TEH WITH YEH FINAL FORM;NFKC_CF=062A 064A;NFKC_SCF=062A 064A
+cp;FC76;dm=062B 0631;na=ARABIC LIGATURE THEH WITH REH FINAL FORM;NFKC_CF=062B 0631;NFKC_SCF=062B 0631
+cp;FC77;dm=062B 0632;na=ARABIC LIGATURE THEH WITH ZAIN FINAL FORM;NFKC_CF=062B 0632;NFKC_SCF=062B 0632
+cp;FC78;dm=062B 0645;na=ARABIC LIGATURE THEH WITH MEEM FINAL FORM;NFKC_CF=062B 0645;NFKC_SCF=062B 0645
+cp;FC79;dm=062B 0646;na=ARABIC LIGATURE THEH WITH NOON FINAL FORM;NFKC_CF=062B 0646;NFKC_SCF=062B 0646
+cp;FC7A;dm=062B 0649;na=ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM;NFKC_CF=062B 0649;NFKC_SCF=062B 0649
+cp;FC7B;dm=062B 064A;na=ARABIC LIGATURE THEH WITH YEH FINAL FORM;NFKC_CF=062B 064A;NFKC_SCF=062B 064A
+cp;FC7C;dm=0641 0649;na=ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM;NFKC_CF=0641 0649;NFKC_SCF=0641 0649
+cp;FC7D;dm=0641 064A;na=ARABIC LIGATURE FEH WITH YEH FINAL FORM;NFKC_CF=0641 064A;NFKC_SCF=0641 064A
+cp;FC7E;dm=0642 0649;na=ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM;NFKC_CF=0642 0649;NFKC_SCF=0642 0649
+cp;FC7F;dm=0642 064A;na=ARABIC LIGATURE QAF WITH YEH FINAL FORM;NFKC_CF=0642 064A;NFKC_SCF=0642 064A
+cp;FC80;dm=0643 0627;na=ARABIC LIGATURE KAF WITH ALEF FINAL FORM;NFKC_CF=0643 0627;NFKC_SCF=0643 0627
+cp;FC81;dm=0643 0644;na=ARABIC LIGATURE KAF WITH LAM FINAL FORM;NFKC_CF=0643 0644;NFKC_SCF=0643 0644
+cp;FC82;dm=0643 0645;na=ARABIC LIGATURE KAF WITH MEEM FINAL FORM;NFKC_CF=0643 0645;NFKC_SCF=0643 0645
+cp;FC83;dm=0643 0649;na=ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM;NFKC_CF=0643 0649;NFKC_SCF=0643 0649
+cp;FC84;dm=0643 064A;na=ARABIC LIGATURE KAF WITH YEH FINAL FORM;NFKC_CF=0643 064A;NFKC_SCF=0643 064A
+cp;FC85;dm=0644 0645;na=ARABIC LIGATURE LAM WITH MEEM FINAL FORM;NFKC_CF=0644 0645;NFKC_SCF=0644 0645
+cp;FC86;dm=0644 0649;na=ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM;NFKC_CF=0644 0649;NFKC_SCF=0644 0649
+cp;FC87;dm=0644 064A;na=ARABIC LIGATURE LAM WITH YEH FINAL FORM;NFKC_CF=0644 064A;NFKC_SCF=0644 064A
+cp;FC88;dm=0645 0627;na=ARABIC LIGATURE MEEM WITH ALEF FINAL FORM;NFKC_CF=0645 0627;NFKC_SCF=0645 0627
+cp;FC89;dm=0645 0645;na=ARABIC LIGATURE MEEM WITH MEEM FINAL FORM;NFKC_CF=0645 0645;NFKC_SCF=0645 0645
+cp;FC8A;dm=0646 0631;na=ARABIC LIGATURE NOON WITH REH FINAL FORM;NFKC_CF=0646 0631;NFKC_SCF=0646 0631
+cp;FC8B;dm=0646 0632;na=ARABIC LIGATURE NOON WITH ZAIN FINAL FORM;NFKC_CF=0646 0632;NFKC_SCF=0646 0632
+cp;FC8C;dm=0646 0645;na=ARABIC LIGATURE NOON WITH MEEM FINAL FORM;NFKC_CF=0646 0645;NFKC_SCF=0646 0645
+cp;FC8D;dm=0646 0646;na=ARABIC LIGATURE NOON WITH NOON FINAL FORM;NFKC_CF=0646 0646;NFKC_SCF=0646 0646
+cp;FC8E;dm=0646 0649;na=ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM;NFKC_CF=0646 0649;NFKC_SCF=0646 0649
+cp;FC8F;dm=0646 064A;na=ARABIC LIGATURE NOON WITH YEH FINAL FORM;NFKC_CF=0646 064A;NFKC_SCF=0646 064A
+cp;FC90;dm=0649 0670;na=ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM;NFKC_CF=0649 0670;NFKC_SCF=0649 0670
+cp;FC91;dm=064A 0631;na=ARABIC LIGATURE YEH WITH REH FINAL FORM;NFKC_CF=064A 0631;NFKC_SCF=064A 0631
+cp;FC92;dm=064A 0632;na=ARABIC LIGATURE YEH WITH ZAIN FINAL FORM;NFKC_CF=064A 0632;NFKC_SCF=064A 0632
+cp;FC93;dm=064A 0645;na=ARABIC LIGATURE YEH WITH MEEM FINAL FORM;NFKC_CF=064A 0645;NFKC_SCF=064A 0645
+cp;FC94;dm=064A 0646;na=ARABIC LIGATURE YEH WITH NOON FINAL FORM;NFKC_CF=064A 0646;NFKC_SCF=064A 0646
+cp;FC95;dm=064A 0649;na=ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM;NFKC_CF=064A 0649;NFKC_SCF=064A 0649
+cp;FC96;dm=064A 064A;na=ARABIC LIGATURE YEH WITH YEH FINAL FORM;NFKC_CF=064A 064A;NFKC_SCF=064A 064A
+cp;FC97;dm=0626 062C;dt=Init;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM;NFKC_CF=0626 062C;NFKC_SCF=0626 062C
+cp;FC98;dm=0626 062D;dt=Init;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM;NFKC_CF=0626 062D;NFKC_SCF=0626 062D
+cp;FC99;dm=0626 062E;dt=Init;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM;NFKC_CF=0626 062E;NFKC_SCF=0626 062E
+cp;FC9A;dm=0626 0645;dt=Init;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM;NFKC_CF=0626 0645;NFKC_SCF=0626 0645
+cp;FC9B;dm=0626 0647;dt=Init;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM;NFKC_CF=0626 0647;NFKC_SCF=0626 0647
+cp;FC9C;dm=0628 062C;dt=Init;na=ARABIC LIGATURE BEH WITH JEEM INITIAL FORM;NFKC_CF=0628 062C;NFKC_SCF=0628 062C
+cp;FC9D;dm=0628 062D;dt=Init;na=ARABIC LIGATURE BEH WITH HAH INITIAL FORM;NFKC_CF=0628 062D;NFKC_SCF=0628 062D
+cp;FC9E;dm=0628 062E;dt=Init;na=ARABIC LIGATURE BEH WITH KHAH INITIAL FORM;NFKC_CF=0628 062E;NFKC_SCF=0628 062E
+cp;FC9F;dm=0628 0645;dt=Init;na=ARABIC LIGATURE BEH WITH MEEM INITIAL FORM;NFKC_CF=0628 0645;NFKC_SCF=0628 0645
+cp;FCA0;dm=0628 0647;dt=Init;na=ARABIC LIGATURE BEH WITH HEH INITIAL FORM;NFKC_CF=0628 0647;NFKC_SCF=0628 0647
+cp;FCA1;dm=062A 062C;dt=Init;na=ARABIC LIGATURE TEH WITH JEEM INITIAL FORM;NFKC_CF=062A 062C;NFKC_SCF=062A 062C
+cp;FCA2;dm=062A 062D;dt=Init;na=ARABIC LIGATURE TEH WITH HAH INITIAL FORM;NFKC_CF=062A 062D;NFKC_SCF=062A 062D
+cp;FCA3;dm=062A 062E;dt=Init;na=ARABIC LIGATURE TEH WITH KHAH INITIAL FORM;NFKC_CF=062A 062E;NFKC_SCF=062A 062E
+cp;FCA4;dm=062A 0645;dt=Init;na=ARABIC LIGATURE TEH WITH MEEM INITIAL FORM;NFKC_CF=062A 0645;NFKC_SCF=062A 0645
+cp;FCA5;dm=062A 0647;dt=Init;na=ARABIC LIGATURE TEH WITH HEH INITIAL FORM;NFKC_CF=062A 0647;NFKC_SCF=062A 0647
+cp;FCA6;dm=062B 0645;dt=Init;na=ARABIC LIGATURE THEH WITH MEEM INITIAL FORM;NFKC_CF=062B 0645;NFKC_SCF=062B 0645
+cp;FCA7;dm=062C 062D;dt=Init;na=ARABIC LIGATURE JEEM WITH HAH INITIAL FORM;NFKC_CF=062C 062D;NFKC_SCF=062C 062D
+cp;FCA8;dm=062C 0645;dt=Init;na=ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM;NFKC_CF=062C 0645;NFKC_SCF=062C 0645
+cp;FCA9;dm=062D 062C;dt=Init;na=ARABIC LIGATURE HAH WITH JEEM INITIAL FORM;NFKC_CF=062D 062C;NFKC_SCF=062D 062C
+cp;FCAA;dm=062D 0645;dt=Init;na=ARABIC LIGATURE HAH WITH MEEM INITIAL FORM;NFKC_CF=062D 0645;NFKC_SCF=062D 0645
+cp;FCAB;dm=062E 062C;dt=Init;na=ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM;NFKC_CF=062E 062C;NFKC_SCF=062E 062C
+cp;FCAC;dm=062E 0645;dt=Init;na=ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM;NFKC_CF=062E 0645;NFKC_SCF=062E 0645
+cp;FCAD;dm=0633 062C;dt=Init;na=ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM;NFKC_CF=0633 062C;NFKC_SCF=0633 062C
+cp;FCAE;dm=0633 062D;dt=Init;na=ARABIC LIGATURE SEEN WITH HAH INITIAL FORM;NFKC_CF=0633 062D;NFKC_SCF=0633 062D
+cp;FCAF;dm=0633 062E;dt=Init;na=ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM;NFKC_CF=0633 062E;NFKC_SCF=0633 062E
+cp;FCB0;dm=0633 0645;dt=Init;na=ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM;NFKC_CF=0633 0645;NFKC_SCF=0633 0645
+cp;FCB1;dm=0635 062D;dt=Init;na=ARABIC LIGATURE SAD WITH HAH INITIAL FORM;NFKC_CF=0635 062D;NFKC_SCF=0635 062D
+cp;FCB2;dm=0635 062E;dt=Init;na=ARABIC LIGATURE SAD WITH KHAH INITIAL FORM;NFKC_CF=0635 062E;NFKC_SCF=0635 062E
+cp;FCB3;dm=0635 0645;dt=Init;na=ARABIC LIGATURE SAD WITH MEEM INITIAL FORM;NFKC_CF=0635 0645;NFKC_SCF=0635 0645
+cp;FCB4;dm=0636 062C;dt=Init;na=ARABIC LIGATURE DAD WITH JEEM INITIAL FORM;NFKC_CF=0636 062C;NFKC_SCF=0636 062C
+cp;FCB5;dm=0636 062D;dt=Init;na=ARABIC LIGATURE DAD WITH HAH INITIAL FORM;NFKC_CF=0636 062D;NFKC_SCF=0636 062D
+cp;FCB6;dm=0636 062E;dt=Init;na=ARABIC LIGATURE DAD WITH KHAH INITIAL FORM;NFKC_CF=0636 062E;NFKC_SCF=0636 062E
+cp;FCB7;dm=0636 0645;dt=Init;na=ARABIC LIGATURE DAD WITH MEEM INITIAL FORM;NFKC_CF=0636 0645;NFKC_SCF=0636 0645
+cp;FCB8;dm=0637 062D;dt=Init;na=ARABIC LIGATURE TAH WITH HAH INITIAL FORM;NFKC_CF=0637 062D;NFKC_SCF=0637 062D
+cp;FCB9;dm=0638 0645;dt=Init;na=ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM;NFKC_CF=0638 0645;NFKC_SCF=0638 0645
+cp;FCBA;dm=0639 062C;dt=Init;na=ARABIC LIGATURE AIN WITH JEEM INITIAL FORM;NFKC_CF=0639 062C;NFKC_SCF=0639 062C
+cp;FCBB;dm=0639 0645;dt=Init;na=ARABIC LIGATURE AIN WITH MEEM INITIAL FORM;NFKC_CF=0639 0645;NFKC_SCF=0639 0645
+cp;FCBC;dm=063A 062C;dt=Init;na=ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM;NFKC_CF=063A 062C;NFKC_SCF=063A 062C
+cp;FCBD;dm=063A 0645;dt=Init;na=ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM;NFKC_CF=063A 0645;NFKC_SCF=063A 0645
+cp;FCBE;dm=0641 062C;dt=Init;na=ARABIC LIGATURE FEH WITH JEEM INITIAL FORM;NFKC_CF=0641 062C;NFKC_SCF=0641 062C
+cp;FCBF;dm=0641 062D;dt=Init;na=ARABIC LIGATURE FEH WITH HAH INITIAL FORM;NFKC_CF=0641 062D;NFKC_SCF=0641 062D
+cp;FCC0;dm=0641 062E;dt=Init;na=ARABIC LIGATURE FEH WITH KHAH INITIAL FORM;NFKC_CF=0641 062E;NFKC_SCF=0641 062E
+cp;FCC1;dm=0641 0645;dt=Init;na=ARABIC LIGATURE FEH WITH MEEM INITIAL FORM;NFKC_CF=0641 0645;NFKC_SCF=0641 0645
+cp;FCC2;dm=0642 062D;dt=Init;na=ARABIC LIGATURE QAF WITH HAH INITIAL FORM;NFKC_CF=0642 062D;NFKC_SCF=0642 062D
+cp;FCC3;dm=0642 0645;dt=Init;na=ARABIC LIGATURE QAF WITH MEEM INITIAL FORM;NFKC_CF=0642 0645;NFKC_SCF=0642 0645
+cp;FCC4;dm=0643 062C;dt=Init;na=ARABIC LIGATURE KAF WITH JEEM INITIAL FORM;NFKC_CF=0643 062C;NFKC_SCF=0643 062C
+cp;FCC5;dm=0643 062D;dt=Init;na=ARABIC LIGATURE KAF WITH HAH INITIAL FORM;NFKC_CF=0643 062D;NFKC_SCF=0643 062D
+cp;FCC6;dm=0643 062E;dt=Init;na=ARABIC LIGATURE KAF WITH KHAH INITIAL FORM;NFKC_CF=0643 062E;NFKC_SCF=0643 062E
+cp;FCC7;dm=0643 0644;dt=Init;na=ARABIC LIGATURE KAF WITH LAM INITIAL FORM;NFKC_CF=0643 0644;NFKC_SCF=0643 0644
+cp;FCC8;dm=0643 0645;dt=Init;na=ARABIC LIGATURE KAF WITH MEEM INITIAL FORM;NFKC_CF=0643 0645;NFKC_SCF=0643 0645
+cp;FCC9;dm=0644 062C;dt=Init;na=ARABIC LIGATURE LAM WITH JEEM INITIAL FORM;NFKC_CF=0644 062C;NFKC_SCF=0644 062C
+cp;FCCA;dm=0644 062D;dt=Init;na=ARABIC LIGATURE LAM WITH HAH INITIAL FORM;NFKC_CF=0644 062D;NFKC_SCF=0644 062D
+cp;FCCB;dm=0644 062E;dt=Init;na=ARABIC LIGATURE LAM WITH KHAH INITIAL FORM;NFKC_CF=0644 062E;NFKC_SCF=0644 062E
+cp;FCCC;dm=0644 0645;dt=Init;na=ARABIC LIGATURE LAM WITH MEEM INITIAL FORM;NFKC_CF=0644 0645;NFKC_SCF=0644 0645
+cp;FCCD;dm=0644 0647;dt=Init;na=ARABIC LIGATURE LAM WITH HEH INITIAL FORM;NFKC_CF=0644 0647;NFKC_SCF=0644 0647
+cp;FCCE;dm=0645 062C;dt=Init;na=ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM;NFKC_CF=0645 062C;NFKC_SCF=0645 062C
+cp;FCCF;dm=0645 062D;dt=Init;na=ARABIC LIGATURE MEEM WITH HAH INITIAL FORM;NFKC_CF=0645 062D;NFKC_SCF=0645 062D
+cp;FCD0;dm=0645 062E;dt=Init;na=ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM;NFKC_CF=0645 062E;NFKC_SCF=0645 062E
+cp;FCD1;dm=0645 0645;dt=Init;na=ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM;NFKC_CF=0645 0645;NFKC_SCF=0645 0645
+cp;FCD2;dm=0646 062C;dt=Init;na=ARABIC LIGATURE NOON WITH JEEM INITIAL FORM;NFKC_CF=0646 062C;NFKC_SCF=0646 062C
+cp;FCD3;dm=0646 062D;dt=Init;na=ARABIC LIGATURE NOON WITH HAH INITIAL FORM;NFKC_CF=0646 062D;NFKC_SCF=0646 062D
+cp;FCD4;dm=0646 062E;dt=Init;na=ARABIC LIGATURE NOON WITH KHAH INITIAL FORM;NFKC_CF=0646 062E;NFKC_SCF=0646 062E
+cp;FCD5;dm=0646 0645;dt=Init;na=ARABIC LIGATURE NOON WITH MEEM INITIAL FORM;NFKC_CF=0646 0645;NFKC_SCF=0646 0645
+cp;FCD6;dm=0646 0647;dt=Init;na=ARABIC LIGATURE NOON WITH HEH INITIAL FORM;NFKC_CF=0646 0647;NFKC_SCF=0646 0647
+cp;FCD7;dm=0647 062C;dt=Init;na=ARABIC LIGATURE HEH WITH JEEM INITIAL FORM;NFKC_CF=0647 062C;NFKC_SCF=0647 062C
+cp;FCD8;dm=0647 0645;dt=Init;na=ARABIC LIGATURE HEH WITH MEEM INITIAL FORM;NFKC_CF=0647 0645;NFKC_SCF=0647 0645
+cp;FCD9;dm=0647 0670;dt=Init;na=ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM;NFKC_CF=0647 0670;NFKC_SCF=0647 0670
+cp;FCDA;dm=064A 062C;dt=Init;na=ARABIC LIGATURE YEH WITH JEEM INITIAL FORM;NFKC_CF=064A 062C;NFKC_SCF=064A 062C
+cp;FCDB;dm=064A 062D;dt=Init;na=ARABIC LIGATURE YEH WITH HAH INITIAL FORM;NFKC_CF=064A 062D;NFKC_SCF=064A 062D
+cp;FCDC;dm=064A 062E;dt=Init;na=ARABIC LIGATURE YEH WITH KHAH INITIAL FORM;NFKC_CF=064A 062E;NFKC_SCF=064A 062E
+cp;FCDD;dm=064A 0645;dt=Init;na=ARABIC LIGATURE YEH WITH MEEM INITIAL FORM;NFKC_CF=064A 0645;NFKC_SCF=064A 0645
+cp;FCDE;dm=064A 0647;dt=Init;na=ARABIC LIGATURE YEH WITH HEH INITIAL FORM;NFKC_CF=064A 0647;NFKC_SCF=064A 0647
+cp;FCDF;dm=0626 0645;dt=Med;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM;NFKC_CF=0626 0645;NFKC_SCF=0626 0645
+cp;FCE0;dm=0626 0647;dt=Med;na=ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM;NFKC_CF=0626 0647;NFKC_SCF=0626 0647
+cp;FCE1;dm=0628 0645;dt=Med;na=ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM;NFKC_CF=0628 0645;NFKC_SCF=0628 0645
+cp;FCE2;dm=0628 0647;dt=Med;na=ARABIC LIGATURE BEH WITH HEH MEDIAL FORM;NFKC_CF=0628 0647;NFKC_SCF=0628 0647
+cp;FCE3;dm=062A 0645;dt=Med;na=ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM;NFKC_CF=062A 0645;NFKC_SCF=062A 0645
+cp;FCE4;dm=062A 0647;dt=Med;na=ARABIC LIGATURE TEH WITH HEH MEDIAL FORM;NFKC_CF=062A 0647;NFKC_SCF=062A 0647
+cp;FCE5;dm=062B 0645;dt=Med;na=ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM;NFKC_CF=062B 0645;NFKC_SCF=062B 0645
+cp;FCE6;dm=062B 0647;dt=Med;na=ARABIC LIGATURE THEH WITH HEH MEDIAL FORM;NFKC_CF=062B 0647;NFKC_SCF=062B 0647
+cp;FCE7;dm=0633 0645;dt=Med;na=ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM;NFKC_CF=0633 0645;NFKC_SCF=0633 0645
+cp;FCE8;dm=0633 0647;dt=Med;na=ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM;NFKC_CF=0633 0647;NFKC_SCF=0633 0647
+cp;FCE9;dm=0634 0645;dt=Med;na=ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM;NFKC_CF=0634 0645;NFKC_SCF=0634 0645
+cp;FCEA;dm=0634 0647;dt=Med;na=ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM;NFKC_CF=0634 0647;NFKC_SCF=0634 0647
+cp;FCEB;dm=0643 0644;dt=Med;na=ARABIC LIGATURE KAF WITH LAM MEDIAL FORM;NFKC_CF=0643 0644;NFKC_SCF=0643 0644
+cp;FCEC;dm=0643 0645;dt=Med;na=ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM;NFKC_CF=0643 0645;NFKC_SCF=0643 0645
+cp;FCED;dm=0644 0645;dt=Med;na=ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM;NFKC_CF=0644 0645;NFKC_SCF=0644 0645
+cp;FCEE;dm=0646 0645;dt=Med;na=ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM;NFKC_CF=0646 0645;NFKC_SCF=0646 0645
+cp;FCEF;dm=0646 0647;dt=Med;na=ARABIC LIGATURE NOON WITH HEH MEDIAL FORM;NFKC_CF=0646 0647;NFKC_SCF=0646 0647
+cp;FCF0;dm=064A 0645;dt=Med;na=ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM;NFKC_CF=064A 0645;NFKC_SCF=064A 0645
+cp;FCF1;dm=064A 0647;dt=Med;na=ARABIC LIGATURE YEH WITH HEH MEDIAL FORM;NFKC_CF=064A 0647;NFKC_SCF=064A 0647
+cp;FCF2;dm=0640 064E 0651;dt=Med;na=ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM;NFKC_CF=0640 064E 0651;NFKC_SCF=0640 064E 0651
+cp;FCF3;dm=0640 064F 0651;dt=Med;na=ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM;NFKC_CF=0640 064F 0651;NFKC_SCF=0640 064F 0651
+cp;FCF4;dm=0640 0650 0651;dt=Med;na=ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM;NFKC_CF=0640 0650 0651;NFKC_SCF=0640 0650 0651
+cp;FCF5;dm=0637 0649;dt=Iso;na=ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM;NFKC_CF=0637 0649;NFKC_SCF=0637 0649
+cp;FCF6;dm=0637 064A;dt=Iso;na=ARABIC LIGATURE TAH WITH YEH ISOLATED FORM;NFKC_CF=0637 064A;NFKC_SCF=0637 064A
+cp;FCF7;dm=0639 0649;dt=Iso;na=ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM;NFKC_CF=0639 0649;NFKC_SCF=0639 0649
+cp;FCF8;dm=0639 064A;dt=Iso;na=ARABIC LIGATURE AIN WITH YEH ISOLATED FORM;NFKC_CF=0639 064A;NFKC_SCF=0639 064A
+cp;FCF9;dm=063A 0649;dt=Iso;na=ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM;NFKC_CF=063A 0649;NFKC_SCF=063A 0649
+cp;FCFA;dm=063A 064A;dt=Iso;na=ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM;NFKC_CF=063A 064A;NFKC_SCF=063A 064A
+cp;FCFB;dm=0633 0649;dt=Iso;na=ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM;NFKC_CF=0633 0649;NFKC_SCF=0633 0649
+cp;FCFC;dm=0633 064A;dt=Iso;na=ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM;NFKC_CF=0633 064A;NFKC_SCF=0633 064A
+cp;FCFD;dm=0634 0649;dt=Iso;na=ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM;NFKC_CF=0634 0649;NFKC_SCF=0634 0649
+cp;FCFE;dm=0634 064A;dt=Iso;na=ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM;NFKC_CF=0634 064A;NFKC_SCF=0634 064A
+cp;FCFF;dm=062D 0649;dt=Iso;na=ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM;NFKC_CF=062D 0649;NFKC_SCF=062D 0649
+cp;FD00;dm=062D 064A;dt=Iso;na=ARABIC LIGATURE HAH WITH YEH ISOLATED FORM;NFKC_CF=062D 064A;NFKC_SCF=062D 064A
+cp;FD01;dm=062C 0649;dt=Iso;na=ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM;NFKC_CF=062C 0649;NFKC_SCF=062C 0649
+cp;FD02;dm=062C 064A;dt=Iso;na=ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM;NFKC_CF=062C 064A;NFKC_SCF=062C 064A
+cp;FD03;dm=062E 0649;dt=Iso;na=ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM;NFKC_CF=062E 0649;NFKC_SCF=062E 0649
+cp;FD04;dm=062E 064A;dt=Iso;na=ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM;NFKC_CF=062E 064A;NFKC_SCF=062E 064A
+cp;FD05;dm=0635 0649;dt=Iso;na=ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM;NFKC_CF=0635 0649;NFKC_SCF=0635 0649
+cp;FD06;dm=0635 064A;dt=Iso;na=ARABIC LIGATURE SAD WITH YEH ISOLATED FORM;NFKC_CF=0635 064A;NFKC_SCF=0635 064A
+cp;FD07;dm=0636 0649;dt=Iso;na=ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM;NFKC_CF=0636 0649;NFKC_SCF=0636 0649
+cp;FD08;dm=0636 064A;dt=Iso;na=ARABIC LIGATURE DAD WITH YEH ISOLATED FORM;NFKC_CF=0636 064A;NFKC_SCF=0636 064A
+cp;FD09;dm=0634 062C;dt=Iso;na=ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM;NFKC_CF=0634 062C;NFKC_SCF=0634 062C
+cp;FD0A;dm=0634 062D;dt=Iso;na=ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM;NFKC_CF=0634 062D;NFKC_SCF=0634 062D
+cp;FD0B;dm=0634 062E;dt=Iso;na=ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM;NFKC_CF=0634 062E;NFKC_SCF=0634 062E
+cp;FD0C;dm=0634 0645;dt=Iso;na=ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM;NFKC_CF=0634 0645;NFKC_SCF=0634 0645
+cp;FD0D;dm=0634 0631;dt=Iso;na=ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM;NFKC_CF=0634 0631;NFKC_SCF=0634 0631
+cp;FD0E;dm=0633 0631;dt=Iso;na=ARABIC LIGATURE SEEN WITH REH ISOLATED FORM;NFKC_CF=0633 0631;NFKC_SCF=0633 0631
+cp;FD0F;dm=0635 0631;dt=Iso;na=ARABIC LIGATURE SAD WITH REH ISOLATED FORM;NFKC_CF=0635 0631;NFKC_SCF=0635 0631
+cp;FD10;dm=0636 0631;dt=Iso;na=ARABIC LIGATURE DAD WITH REH ISOLATED FORM;NFKC_CF=0636 0631;NFKC_SCF=0636 0631
+cp;FD11;dm=0637 0649;na=ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM;NFKC_CF=0637 0649;NFKC_SCF=0637 0649
+cp;FD12;dm=0637 064A;na=ARABIC LIGATURE TAH WITH YEH FINAL FORM;NFKC_CF=0637 064A;NFKC_SCF=0637 064A
+cp;FD13;dm=0639 0649;na=ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM;NFKC_CF=0639 0649;NFKC_SCF=0639 0649
+cp;FD14;dm=0639 064A;na=ARABIC LIGATURE AIN WITH YEH FINAL FORM;NFKC_CF=0639 064A;NFKC_SCF=0639 064A
+cp;FD15;dm=063A 0649;na=ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM;NFKC_CF=063A 0649;NFKC_SCF=063A 0649
+cp;FD16;dm=063A 064A;na=ARABIC LIGATURE GHAIN WITH YEH FINAL FORM;NFKC_CF=063A 064A;NFKC_SCF=063A 064A
+cp;FD17;dm=0633 0649;na=ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM;NFKC_CF=0633 0649;NFKC_SCF=0633 0649
+cp;FD18;dm=0633 064A;na=ARABIC LIGATURE SEEN WITH YEH FINAL FORM;NFKC_CF=0633 064A;NFKC_SCF=0633 064A
+cp;FD19;dm=0634 0649;na=ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM;NFKC_CF=0634 0649;NFKC_SCF=0634 0649
+cp;FD1A;dm=0634 064A;na=ARABIC LIGATURE SHEEN WITH YEH FINAL FORM;NFKC_CF=0634 064A;NFKC_SCF=0634 064A
+cp;FD1B;dm=062D 0649;na=ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM;NFKC_CF=062D 0649;NFKC_SCF=062D 0649
+cp;FD1C;dm=062D 064A;na=ARABIC LIGATURE HAH WITH YEH FINAL FORM;NFKC_CF=062D 064A;NFKC_SCF=062D 064A
+cp;FD1D;dm=062C 0649;na=ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM;NFKC_CF=062C 0649;NFKC_SCF=062C 0649
+cp;FD1E;dm=062C 064A;na=ARABIC LIGATURE JEEM WITH YEH FINAL FORM;NFKC_CF=062C 064A;NFKC_SCF=062C 064A
+cp;FD1F;dm=062E 0649;na=ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM;NFKC_CF=062E 0649;NFKC_SCF=062E 0649
+cp;FD20;dm=062E 064A;na=ARABIC LIGATURE KHAH WITH YEH FINAL FORM;NFKC_CF=062E 064A;NFKC_SCF=062E 064A
+cp;FD21;dm=0635 0649;na=ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM;NFKC_CF=0635 0649;NFKC_SCF=0635 0649
+cp;FD22;dm=0635 064A;na=ARABIC LIGATURE SAD WITH YEH FINAL FORM;NFKC_CF=0635 064A;NFKC_SCF=0635 064A
+cp;FD23;dm=0636 0649;na=ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM;NFKC_CF=0636 0649;NFKC_SCF=0636 0649
+cp;FD24;dm=0636 064A;na=ARABIC LIGATURE DAD WITH YEH FINAL FORM;NFKC_CF=0636 064A;NFKC_SCF=0636 064A
+cp;FD25;dm=0634 062C;na=ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM;NFKC_CF=0634 062C;NFKC_SCF=0634 062C
+cp;FD26;dm=0634 062D;na=ARABIC LIGATURE SHEEN WITH HAH FINAL FORM;NFKC_CF=0634 062D;NFKC_SCF=0634 062D
+cp;FD27;dm=0634 062E;na=ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM;NFKC_CF=0634 062E;NFKC_SCF=0634 062E
+cp;FD28;dm=0634 0645;na=ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM;NFKC_CF=0634 0645;NFKC_SCF=0634 0645
+cp;FD29;dm=0634 0631;na=ARABIC LIGATURE SHEEN WITH REH FINAL FORM;NFKC_CF=0634 0631;NFKC_SCF=0634 0631
+cp;FD2A;dm=0633 0631;na=ARABIC LIGATURE SEEN WITH REH FINAL FORM;NFKC_CF=0633 0631;NFKC_SCF=0633 0631
+cp;FD2B;dm=0635 0631;na=ARABIC LIGATURE SAD WITH REH FINAL FORM;NFKC_CF=0635 0631;NFKC_SCF=0635 0631
+cp;FD2C;dm=0636 0631;na=ARABIC LIGATURE DAD WITH REH FINAL FORM;NFKC_CF=0636 0631;NFKC_SCF=0636 0631
+cp;FD2D;dm=0634 062C;dt=Init;na=ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM;NFKC_CF=0634 062C;NFKC_SCF=0634 062C
+cp;FD2E;dm=0634 062D;dt=Init;na=ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM;NFKC_CF=0634 062D;NFKC_SCF=0634 062D
+cp;FD2F;dm=0634 062E;dt=Init;na=ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM;NFKC_CF=0634 062E;NFKC_SCF=0634 062E
+cp;FD30;dm=0634 0645;dt=Init;na=ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM;NFKC_CF=0634 0645;NFKC_SCF=0634 0645
+cp;FD31;dm=0633 0647;dt=Init;na=ARABIC LIGATURE SEEN WITH HEH INITIAL FORM;NFKC_CF=0633 0647;NFKC_SCF=0633 0647
+cp;FD32;dm=0634 0647;dt=Init;na=ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM;NFKC_CF=0634 0647;NFKC_SCF=0634 0647
+cp;FD33;dm=0637 0645;dt=Init;na=ARABIC LIGATURE TAH WITH MEEM INITIAL FORM;NFKC_CF=0637 0645;NFKC_SCF=0637 0645
+cp;FD34;dm=0633 062C;dt=Med;na=ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM;NFKC_CF=0633 062C;NFKC_SCF=0633 062C
+cp;FD35;dm=0633 062D;dt=Med;na=ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM;NFKC_CF=0633 062D;NFKC_SCF=0633 062D
+cp;FD36;dm=0633 062E;dt=Med;na=ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM;NFKC_CF=0633 062E;NFKC_SCF=0633 062E
+cp;FD37;dm=0634 062C;dt=Med;na=ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM;NFKC_CF=0634 062C;NFKC_SCF=0634 062C
+cp;FD38;dm=0634 062D;dt=Med;na=ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM;NFKC_CF=0634 062D;NFKC_SCF=0634 062D
+cp;FD39;dm=0634 062E;dt=Med;na=ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM;NFKC_CF=0634 062E;NFKC_SCF=0634 062E
+cp;FD3A;dm=0637 0645;dt=Med;na=ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM;NFKC_CF=0637 0645;NFKC_SCF=0637 0645
+cp;FD3B;dm=0638 0645;dt=Med;na=ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM;NFKC_CF=0638 0645;NFKC_SCF=0638 0645
+cp;FD3C;dm=0627 064B;na=ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM;NFKC_CF=0627 064B;NFKC_SCF=0627 064B
+cp;FD3D;dm=0627 064B;dt=Iso;na=ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM;NFKC_CF=0627 064B;NFKC_SCF=0627 064B
# Punctuation
cp;FD3E;-Alpha;bc=ON;-CWKCF;dt=None;gc=Pe;-IDC;-IDS;lb=CL;na=ORNATE LEFT PARENTHESIS;NFKC_QC=Y;NFKD_QC=Y;Pat_Syn;SB=CL;sc=Zyyy;scx=Arab Nkoo;WB=XX;-XIDC;-XIDS
cp;FD3F;-Alpha;bc=ON;-CWKCF;dt=None;gc=Ps;-IDC;-IDS;lb=OP;na=ORNATE RIGHT PARENTHESIS;NFKC_QC=Y;NFKD_QC=Y;Pat_Syn;SB=CL;sc=Zyyy;scx=Arab Nkoo;WB=XX;-XIDC;-XIDS
@@ -20576,151 +20608,151 @@ cp;FD4D;age=14.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;na=ARABIC LIGATURE
cp;FD4E;age=14.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;na=ARABIC LIGATURE TABAARAKA WA-TAAALAA;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
cp;FD4F;age=14.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;na=ARABIC LIGATURE RAHIMAHUM ALLAAH;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
# Ligatures (three elements)
-cp;FD50;dm=062A 062C 0645;dt=Init;na=ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM;NFKC_CF=062A 062C 0645
-cp;FD51;dm=062A 062D 062C;na=ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM;NFKC_CF=062A 062D 062C
-cp;FD52;dm=062A 062D 062C;dt=Init;na=ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM;NFKC_CF=062A 062D 062C
-cp;FD53;dm=062A 062D 0645;dt=Init;na=ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM;NFKC_CF=062A 062D 0645
-cp;FD54;dm=062A 062E 0645;dt=Init;na=ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM;NFKC_CF=062A 062E 0645
-cp;FD55;dm=062A 0645 062C;dt=Init;na=ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM;NFKC_CF=062A 0645 062C
-cp;FD56;dm=062A 0645 062D;dt=Init;na=ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM;NFKC_CF=062A 0645 062D
-cp;FD57;dm=062A 0645 062E;dt=Init;na=ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM;NFKC_CF=062A 0645 062E
-cp;FD58;dm=062C 0645 062D;na=ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM;NFKC_CF=062C 0645 062D
-cp;FD59;dm=062C 0645 062D;dt=Init;na=ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM;NFKC_CF=062C 0645 062D
-cp;FD5A;dm=062D 0645 064A;na=ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM;NFKC_CF=062D 0645 064A
-cp;FD5B;dm=062D 0645 0649;na=ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM;NFKC_CF=062D 0645 0649
-cp;FD5C;dm=0633 062D 062C;dt=Init;na=ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM;NFKC_CF=0633 062D 062C
-cp;FD5D;dm=0633 062C 062D;dt=Init;na=ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM;NFKC_CF=0633 062C 062D
-cp;FD5E;dm=0633 062C 0649;na=ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM;NFKC_CF=0633 062C 0649
-cp;FD5F;dm=0633 0645 062D;na=ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM;NFKC_CF=0633 0645 062D
-cp;FD60;dm=0633 0645 062D;dt=Init;na=ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM;NFKC_CF=0633 0645 062D
-cp;FD61;dm=0633 0645 062C;dt=Init;na=ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM;NFKC_CF=0633 0645 062C
-cp;FD62;dm=0633 0645 0645;na=ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM;NFKC_CF=0633 0645 0645
-cp;FD63;dm=0633 0645 0645;dt=Init;na=ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM;NFKC_CF=0633 0645 0645
-cp;FD64;dm=0635 062D 062D;na=ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM;NFKC_CF=0635 062D 062D
-cp;FD65;dm=0635 062D 062D;dt=Init;na=ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM;NFKC_CF=0635 062D 062D
-cp;FD66;dm=0635 0645 0645;na=ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM;NFKC_CF=0635 0645 0645
-cp;FD67;dm=0634 062D 0645;na=ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM;NFKC_CF=0634 062D 0645
-cp;FD68;dm=0634 062D 0645;dt=Init;na=ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM;NFKC_CF=0634 062D 0645
-cp;FD69;dm=0634 062C 064A;na=ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM;NFKC_CF=0634 062C 064A
-cp;FD6A;dm=0634 0645 062E;na=ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM;NFKC_CF=0634 0645 062E
-cp;FD6B;dm=0634 0645 062E;dt=Init;na=ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM;NFKC_CF=0634 0645 062E
-cp;FD6C;dm=0634 0645 0645;na=ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM;NFKC_CF=0634 0645 0645
-cp;FD6D;dm=0634 0645 0645;dt=Init;na=ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM;NFKC_CF=0634 0645 0645
-cp;FD6E;dm=0636 062D 0649;na=ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM;NFKC_CF=0636 062D 0649
-cp;FD6F;dm=0636 062E 0645;na=ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM;NFKC_CF=0636 062E 0645
-cp;FD70;dm=0636 062E 0645;dt=Init;na=ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM;NFKC_CF=0636 062E 0645
-cp;FD71;dm=0637 0645 062D;na=ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM;NFKC_CF=0637 0645 062D
-cp;FD72;dm=0637 0645 062D;dt=Init;na=ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM;NFKC_CF=0637 0645 062D
-cp;FD73;dm=0637 0645 0645;dt=Init;na=ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM;NFKC_CF=0637 0645 0645
-cp;FD74;dm=0637 0645 064A;na=ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM;NFKC_CF=0637 0645 064A
-cp;FD75;dm=0639 062C 0645;na=ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM;NFKC_CF=0639 062C 0645
-cp;FD76;dm=0639 0645 0645;na=ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM;NFKC_CF=0639 0645 0645
-cp;FD77;dm=0639 0645 0645;dt=Init;na=ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM;NFKC_CF=0639 0645 0645
-cp;FD78;dm=0639 0645 0649;na=ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;NFKC_CF=0639 0645 0649
-cp;FD79;dm=063A 0645 0645;na=ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM;NFKC_CF=063A 0645 0645
-cp;FD7A;dm=063A 0645 064A;na=ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM;NFKC_CF=063A 0645 064A
-cp;FD7B;dm=063A 0645 0649;na=ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;NFKC_CF=063A 0645 0649
-cp;FD7C;dm=0641 062E 0645;na=ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM;NFKC_CF=0641 062E 0645
-cp;FD7D;dm=0641 062E 0645;dt=Init;na=ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM;NFKC_CF=0641 062E 0645
-cp;FD7E;dm=0642 0645 062D;na=ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM;NFKC_CF=0642 0645 062D
-cp;FD7F;dm=0642 0645 0645;na=ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM;NFKC_CF=0642 0645 0645
-cp;FD80;dm=0644 062D 0645;na=ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM;NFKC_CF=0644 062D 0645
-cp;FD81;dm=0644 062D 064A;na=ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM;NFKC_CF=0644 062D 064A
-cp;FD82;dm=0644 062D 0649;na=ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM;NFKC_CF=0644 062D 0649
-cp;FD83;dm=0644 062C 062C;dt=Init;na=ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM;NFKC_CF=0644 062C 062C
-cp;FD84;dm=0644 062C 062C;na=ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM;NFKC_CF=0644 062C 062C
-cp;FD85;dm=0644 062E 0645;na=ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM;NFKC_CF=0644 062E 0645
-cp;FD86;dm=0644 062E 0645;dt=Init;na=ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM;NFKC_CF=0644 062E 0645
-cp;FD87;dm=0644 0645 062D;na=ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM;NFKC_CF=0644 0645 062D
-cp;FD88;dm=0644 0645 062D;dt=Init;na=ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM;NFKC_CF=0644 0645 062D
-cp;FD89;dm=0645 062D 062C;dt=Init;na=ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM;NFKC_CF=0645 062D 062C
-cp;FD8A;dm=0645 062D 0645;dt=Init;na=ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM;NFKC_CF=0645 062D 0645
-cp;FD8B;dm=0645 062D 064A;na=ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM;NFKC_CF=0645 062D 064A
-cp;FD8C;dm=0645 062C 062D;dt=Init;na=ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM;NFKC_CF=0645 062C 062D
-cp;FD8D;dm=0645 062C 0645;dt=Init;na=ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM;NFKC_CF=0645 062C 0645
-cp;FD8E;dm=0645 062E 062C;dt=Init;na=ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM;NFKC_CF=0645 062E 062C
-cp;FD8F;dm=0645 062E 0645;dt=Init;na=ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM;NFKC_CF=0645 062E 0645
+cp;FD50;dm=062A 062C 0645;dt=Init;na=ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM;NFKC_CF=062A 062C 0645;NFKC_SCF=062A 062C 0645
+cp;FD51;dm=062A 062D 062C;na=ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM;NFKC_CF=062A 062D 062C;NFKC_SCF=062A 062D 062C
+cp;FD52;dm=062A 062D 062C;dt=Init;na=ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM;NFKC_CF=062A 062D 062C;NFKC_SCF=062A 062D 062C
+cp;FD53;dm=062A 062D 0645;dt=Init;na=ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM;NFKC_CF=062A 062D 0645;NFKC_SCF=062A 062D 0645
+cp;FD54;dm=062A 062E 0645;dt=Init;na=ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM;NFKC_CF=062A 062E 0645;NFKC_SCF=062A 062E 0645
+cp;FD55;dm=062A 0645 062C;dt=Init;na=ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM;NFKC_CF=062A 0645 062C;NFKC_SCF=062A 0645 062C
+cp;FD56;dm=062A 0645 062D;dt=Init;na=ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM;NFKC_CF=062A 0645 062D;NFKC_SCF=062A 0645 062D
+cp;FD57;dm=062A 0645 062E;dt=Init;na=ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM;NFKC_CF=062A 0645 062E;NFKC_SCF=062A 0645 062E
+cp;FD58;dm=062C 0645 062D;na=ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM;NFKC_CF=062C 0645 062D;NFKC_SCF=062C 0645 062D
+cp;FD59;dm=062C 0645 062D;dt=Init;na=ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM;NFKC_CF=062C 0645 062D;NFKC_SCF=062C 0645 062D
+cp;FD5A;dm=062D 0645 064A;na=ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM;NFKC_CF=062D 0645 064A;NFKC_SCF=062D 0645 064A
+cp;FD5B;dm=062D 0645 0649;na=ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM;NFKC_CF=062D 0645 0649;NFKC_SCF=062D 0645 0649
+cp;FD5C;dm=0633 062D 062C;dt=Init;na=ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM;NFKC_CF=0633 062D 062C;NFKC_SCF=0633 062D 062C
+cp;FD5D;dm=0633 062C 062D;dt=Init;na=ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM;NFKC_CF=0633 062C 062D;NFKC_SCF=0633 062C 062D
+cp;FD5E;dm=0633 062C 0649;na=ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM;NFKC_CF=0633 062C 0649;NFKC_SCF=0633 062C 0649
+cp;FD5F;dm=0633 0645 062D;na=ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM;NFKC_CF=0633 0645 062D;NFKC_SCF=0633 0645 062D
+cp;FD60;dm=0633 0645 062D;dt=Init;na=ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM;NFKC_CF=0633 0645 062D;NFKC_SCF=0633 0645 062D
+cp;FD61;dm=0633 0645 062C;dt=Init;na=ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM;NFKC_CF=0633 0645 062C;NFKC_SCF=0633 0645 062C
+cp;FD62;dm=0633 0645 0645;na=ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM;NFKC_CF=0633 0645 0645;NFKC_SCF=0633 0645 0645
+cp;FD63;dm=0633 0645 0645;dt=Init;na=ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM;NFKC_CF=0633 0645 0645;NFKC_SCF=0633 0645 0645
+cp;FD64;dm=0635 062D 062D;na=ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM;NFKC_CF=0635 062D 062D;NFKC_SCF=0635 062D 062D
+cp;FD65;dm=0635 062D 062D;dt=Init;na=ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM;NFKC_CF=0635 062D 062D;NFKC_SCF=0635 062D 062D
+cp;FD66;dm=0635 0645 0645;na=ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM;NFKC_CF=0635 0645 0645;NFKC_SCF=0635 0645 0645
+cp;FD67;dm=0634 062D 0645;na=ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM;NFKC_CF=0634 062D 0645;NFKC_SCF=0634 062D 0645
+cp;FD68;dm=0634 062D 0645;dt=Init;na=ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM;NFKC_CF=0634 062D 0645;NFKC_SCF=0634 062D 0645
+cp;FD69;dm=0634 062C 064A;na=ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM;NFKC_CF=0634 062C 064A;NFKC_SCF=0634 062C 064A
+cp;FD6A;dm=0634 0645 062E;na=ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM;NFKC_CF=0634 0645 062E;NFKC_SCF=0634 0645 062E
+cp;FD6B;dm=0634 0645 062E;dt=Init;na=ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM;NFKC_CF=0634 0645 062E;NFKC_SCF=0634 0645 062E
+cp;FD6C;dm=0634 0645 0645;na=ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM;NFKC_CF=0634 0645 0645;NFKC_SCF=0634 0645 0645
+cp;FD6D;dm=0634 0645 0645;dt=Init;na=ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM;NFKC_CF=0634 0645 0645;NFKC_SCF=0634 0645 0645
+cp;FD6E;dm=0636 062D 0649;na=ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM;NFKC_CF=0636 062D 0649;NFKC_SCF=0636 062D 0649
+cp;FD6F;dm=0636 062E 0645;na=ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM;NFKC_CF=0636 062E 0645;NFKC_SCF=0636 062E 0645
+cp;FD70;dm=0636 062E 0645;dt=Init;na=ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM;NFKC_CF=0636 062E 0645;NFKC_SCF=0636 062E 0645
+cp;FD71;dm=0637 0645 062D;na=ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM;NFKC_CF=0637 0645 062D;NFKC_SCF=0637 0645 062D
+cp;FD72;dm=0637 0645 062D;dt=Init;na=ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM;NFKC_CF=0637 0645 062D;NFKC_SCF=0637 0645 062D
+cp;FD73;dm=0637 0645 0645;dt=Init;na=ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM;NFKC_CF=0637 0645 0645;NFKC_SCF=0637 0645 0645
+cp;FD74;dm=0637 0645 064A;na=ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM;NFKC_CF=0637 0645 064A;NFKC_SCF=0637 0645 064A
+cp;FD75;dm=0639 062C 0645;na=ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM;NFKC_CF=0639 062C 0645;NFKC_SCF=0639 062C 0645
+cp;FD76;dm=0639 0645 0645;na=ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM;NFKC_CF=0639 0645 0645;NFKC_SCF=0639 0645 0645
+cp;FD77;dm=0639 0645 0645;dt=Init;na=ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM;NFKC_CF=0639 0645 0645;NFKC_SCF=0639 0645 0645
+cp;FD78;dm=0639 0645 0649;na=ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;NFKC_CF=0639 0645 0649;NFKC_SCF=0639 0645 0649
+cp;FD79;dm=063A 0645 0645;na=ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM;NFKC_CF=063A 0645 0645;NFKC_SCF=063A 0645 0645
+cp;FD7A;dm=063A 0645 064A;na=ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM;NFKC_CF=063A 0645 064A;NFKC_SCF=063A 0645 064A
+cp;FD7B;dm=063A 0645 0649;na=ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;NFKC_CF=063A 0645 0649;NFKC_SCF=063A 0645 0649
+cp;FD7C;dm=0641 062E 0645;na=ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM;NFKC_CF=0641 062E 0645;NFKC_SCF=0641 062E 0645
+cp;FD7D;dm=0641 062E 0645;dt=Init;na=ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM;NFKC_CF=0641 062E 0645;NFKC_SCF=0641 062E 0645
+cp;FD7E;dm=0642 0645 062D;na=ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM;NFKC_CF=0642 0645 062D;NFKC_SCF=0642 0645 062D
+cp;FD7F;dm=0642 0645 0645;na=ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM;NFKC_CF=0642 0645 0645;NFKC_SCF=0642 0645 0645
+cp;FD80;dm=0644 062D 0645;na=ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM;NFKC_CF=0644 062D 0645;NFKC_SCF=0644 062D 0645
+cp;FD81;dm=0644 062D 064A;na=ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM;NFKC_CF=0644 062D 064A;NFKC_SCF=0644 062D 064A
+cp;FD82;dm=0644 062D 0649;na=ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM;NFKC_CF=0644 062D 0649;NFKC_SCF=0644 062D 0649
+cp;FD83;dm=0644 062C 062C;dt=Init;na=ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM;NFKC_CF=0644 062C 062C;NFKC_SCF=0644 062C 062C
+cp;FD84;dm=0644 062C 062C;na=ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM;NFKC_CF=0644 062C 062C;NFKC_SCF=0644 062C 062C
+cp;FD85;dm=0644 062E 0645;na=ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM;NFKC_CF=0644 062E 0645;NFKC_SCF=0644 062E 0645
+cp;FD86;dm=0644 062E 0645;dt=Init;na=ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM;NFKC_CF=0644 062E 0645;NFKC_SCF=0644 062E 0645
+cp;FD87;dm=0644 0645 062D;na=ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM;NFKC_CF=0644 0645 062D;NFKC_SCF=0644 0645 062D
+cp;FD88;dm=0644 0645 062D;dt=Init;na=ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM;NFKC_CF=0644 0645 062D;NFKC_SCF=0644 0645 062D
+cp;FD89;dm=0645 062D 062C;dt=Init;na=ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM;NFKC_CF=0645 062D 062C;NFKC_SCF=0645 062D 062C
+cp;FD8A;dm=0645 062D 0645;dt=Init;na=ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM;NFKC_CF=0645 062D 0645;NFKC_SCF=0645 062D 0645
+cp;FD8B;dm=0645 062D 064A;na=ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM;NFKC_CF=0645 062D 064A;NFKC_SCF=0645 062D 064A
+cp;FD8C;dm=0645 062C 062D;dt=Init;na=ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM;NFKC_CF=0645 062C 062D;NFKC_SCF=0645 062C 062D
+cp;FD8D;dm=0645 062C 0645;dt=Init;na=ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM;NFKC_CF=0645 062C 0645;NFKC_SCF=0645 062C 0645
+cp;FD8E;dm=0645 062E 062C;dt=Init;na=ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM;NFKC_CF=0645 062E 062C;NFKC_SCF=0645 062E 062C
+cp;FD8F;dm=0645 062E 0645;dt=Init;na=ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM;NFKC_CF=0645 062E 0645;NFKC_SCF=0645 062E 0645
unassigned;FD90..FD91;bc=AL
-cp;FD92;dm=0645 062C 062E;dt=Init;na=ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM;NFKC_CF=0645 062C 062E
-cp;FD93;dm=0647 0645 062C;dt=Init;na=ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM;NFKC_CF=0647 0645 062C
-cp;FD94;dm=0647 0645 0645;dt=Init;na=ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM;NFKC_CF=0647 0645 0645
-cp;FD95;dm=0646 062D 0645;dt=Init;na=ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM;NFKC_CF=0646 062D 0645
-cp;FD96;dm=0646 062D 0649;na=ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM;NFKC_CF=0646 062D 0649
-cp;FD97;dm=0646 062C 0645;na=ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM;NFKC_CF=0646 062C 0645
-cp;FD98;dm=0646 062C 0645;dt=Init;na=ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM;NFKC_CF=0646 062C 0645
-cp;FD99;dm=0646 062C 0649;na=ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM;NFKC_CF=0646 062C 0649
-cp;FD9A;dm=0646 0645 064A;na=ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM;NFKC_CF=0646 0645 064A
-cp;FD9B;dm=0646 0645 0649;na=ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM;NFKC_CF=0646 0645 0649
-cp;FD9C;dm=064A 0645 0645;na=ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM;NFKC_CF=064A 0645 0645
-cp;FD9D;dm=064A 0645 0645;dt=Init;na=ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM;NFKC_CF=064A 0645 0645
-cp;FD9E;dm=0628 062E 064A;na=ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM;NFKC_CF=0628 062E 064A
-cp;FD9F;dm=062A 062C 064A;na=ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM;NFKC_CF=062A 062C 064A
-cp;FDA0;dm=062A 062C 0649;na=ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM;NFKC_CF=062A 062C 0649
-cp;FDA1;dm=062A 062E 064A;na=ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM;NFKC_CF=062A 062E 064A
-cp;FDA2;dm=062A 062E 0649;na=ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM;NFKC_CF=062A 062E 0649
-cp;FDA3;dm=062A 0645 064A;na=ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM;NFKC_CF=062A 0645 064A
-cp;FDA4;dm=062A 0645 0649;na=ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM;NFKC_CF=062A 0645 0649
-cp;FDA5;dm=062C 0645 064A;na=ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM;NFKC_CF=062C 0645 064A
-cp;FDA6;dm=062C 062D 0649;na=ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM;NFKC_CF=062C 062D 0649
-cp;FDA7;dm=062C 0645 0649;na=ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM;NFKC_CF=062C 0645 0649
-cp;FDA8;dm=0633 062E 0649;na=ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM;NFKC_CF=0633 062E 0649
-cp;FDA9;dm=0635 062D 064A;na=ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM;NFKC_CF=0635 062D 064A
-cp;FDAA;dm=0634 062D 064A;na=ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM;NFKC_CF=0634 062D 064A
-cp;FDAB;dm=0636 062D 064A;na=ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM;NFKC_CF=0636 062D 064A
-cp;FDAC;dm=0644 062C 064A;na=ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM;NFKC_CF=0644 062C 064A
-cp;FDAD;dm=0644 0645 064A;na=ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM;NFKC_CF=0644 0645 064A
-cp;FDAE;dm=064A 062D 064A;na=ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM;NFKC_CF=064A 062D 064A
-cp;FDAF;dm=064A 062C 064A;na=ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM;NFKC_CF=064A 062C 064A
-cp;FDB0;dm=064A 0645 064A;na=ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM;NFKC_CF=064A 0645 064A
-cp;FDB1;dm=0645 0645 064A;na=ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM;NFKC_CF=0645 0645 064A
-cp;FDB2;dm=0642 0645 064A;na=ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM;NFKC_CF=0642 0645 064A
-cp;FDB3;dm=0646 062D 064A;na=ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM;NFKC_CF=0646 062D 064A
-cp;FDB4;dm=0642 0645 062D;dt=Init;na=ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM;NFKC_CF=0642 0645 062D
-cp;FDB5;dm=0644 062D 0645;dt=Init;na=ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM;NFKC_CF=0644 062D 0645
-cp;FDB6;dm=0639 0645 064A;na=ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM;NFKC_CF=0639 0645 064A
-cp;FDB7;dm=0643 0645 064A;na=ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM;NFKC_CF=0643 0645 064A
-cp;FDB8;dm=0646 062C 062D;dt=Init;na=ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM;NFKC_CF=0646 062C 062D
-cp;FDB9;dm=0645 062E 064A;na=ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM;NFKC_CF=0645 062E 064A
-cp;FDBA;dm=0644 062C 0645;dt=Init;na=ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM;NFKC_CF=0644 062C 0645
-cp;FDBB;dm=0643 0645 0645;na=ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM;NFKC_CF=0643 0645 0645
-cp;FDBC;dm=0644 062C 0645;na=ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM;NFKC_CF=0644 062C 0645
-cp;FDBD;dm=0646 062C 062D;na=ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM;NFKC_CF=0646 062C 062D
-cp;FDBE;dm=062C 062D 064A;na=ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM;NFKC_CF=062C 062D 064A
-cp;FDBF;dm=062D 062C 064A;na=ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM;NFKC_CF=062D 062C 064A
-cp;FDC0;dm=0645 062C 064A;na=ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM;NFKC_CF=0645 062C 064A
-cp;FDC1;dm=0641 0645 064A;na=ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM;NFKC_CF=0641 0645 064A
-cp;FDC2;dm=0628 062D 064A;na=ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM;NFKC_CF=0628 062D 064A
-cp;FDC3;dm=0643 0645 0645;dt=Init;na=ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM;NFKC_CF=0643 0645 0645
-cp;FDC4;dm=0639 062C 0645;dt=Init;na=ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM;NFKC_CF=0639 062C 0645
-cp;FDC5;dm=0635 0645 0645;dt=Init;na=ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM;NFKC_CF=0635 0645 0645
-cp;FDC6;dm=0633 062E 064A;na=ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM;NFKC_CF=0633 062E 064A
-cp;FDC7;dm=0646 062C 064A;na=ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM;NFKC_CF=0646 062C 064A
+cp;FD92;dm=0645 062C 062E;dt=Init;na=ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM;NFKC_CF=0645 062C 062E;NFKC_SCF=0645 062C 062E
+cp;FD93;dm=0647 0645 062C;dt=Init;na=ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM;NFKC_CF=0647 0645 062C;NFKC_SCF=0647 0645 062C
+cp;FD94;dm=0647 0645 0645;dt=Init;na=ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM;NFKC_CF=0647 0645 0645;NFKC_SCF=0647 0645 0645
+cp;FD95;dm=0646 062D 0645;dt=Init;na=ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM;NFKC_CF=0646 062D 0645;NFKC_SCF=0646 062D 0645
+cp;FD96;dm=0646 062D 0649;na=ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM;NFKC_CF=0646 062D 0649;NFKC_SCF=0646 062D 0649
+cp;FD97;dm=0646 062C 0645;na=ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM;NFKC_CF=0646 062C 0645;NFKC_SCF=0646 062C 0645
+cp;FD98;dm=0646 062C 0645;dt=Init;na=ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM;NFKC_CF=0646 062C 0645;NFKC_SCF=0646 062C 0645
+cp;FD99;dm=0646 062C 0649;na=ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM;NFKC_CF=0646 062C 0649;NFKC_SCF=0646 062C 0649
+cp;FD9A;dm=0646 0645 064A;na=ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM;NFKC_CF=0646 0645 064A;NFKC_SCF=0646 0645 064A
+cp;FD9B;dm=0646 0645 0649;na=ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM;NFKC_CF=0646 0645 0649;NFKC_SCF=0646 0645 0649
+cp;FD9C;dm=064A 0645 0645;na=ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM;NFKC_CF=064A 0645 0645;NFKC_SCF=064A 0645 0645
+cp;FD9D;dm=064A 0645 0645;dt=Init;na=ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM;NFKC_CF=064A 0645 0645;NFKC_SCF=064A 0645 0645
+cp;FD9E;dm=0628 062E 064A;na=ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM;NFKC_CF=0628 062E 064A;NFKC_SCF=0628 062E 064A
+cp;FD9F;dm=062A 062C 064A;na=ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM;NFKC_CF=062A 062C 064A;NFKC_SCF=062A 062C 064A
+cp;FDA0;dm=062A 062C 0649;na=ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM;NFKC_CF=062A 062C 0649;NFKC_SCF=062A 062C 0649
+cp;FDA1;dm=062A 062E 064A;na=ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM;NFKC_CF=062A 062E 064A;NFKC_SCF=062A 062E 064A
+cp;FDA2;dm=062A 062E 0649;na=ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM;NFKC_CF=062A 062E 0649;NFKC_SCF=062A 062E 0649
+cp;FDA3;dm=062A 0645 064A;na=ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM;NFKC_CF=062A 0645 064A;NFKC_SCF=062A 0645 064A
+cp;FDA4;dm=062A 0645 0649;na=ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM;NFKC_CF=062A 0645 0649;NFKC_SCF=062A 0645 0649
+cp;FDA5;dm=062C 0645 064A;na=ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM;NFKC_CF=062C 0645 064A;NFKC_SCF=062C 0645 064A
+cp;FDA6;dm=062C 062D 0649;na=ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM;NFKC_CF=062C 062D 0649;NFKC_SCF=062C 062D 0649
+cp;FDA7;dm=062C 0645 0649;na=ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM;NFKC_CF=062C 0645 0649;NFKC_SCF=062C 0645 0649
+cp;FDA8;dm=0633 062E 0649;na=ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM;NFKC_CF=0633 062E 0649;NFKC_SCF=0633 062E 0649
+cp;FDA9;dm=0635 062D 064A;na=ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM;NFKC_CF=0635 062D 064A;NFKC_SCF=0635 062D 064A
+cp;FDAA;dm=0634 062D 064A;na=ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM;NFKC_CF=0634 062D 064A;NFKC_SCF=0634 062D 064A
+cp;FDAB;dm=0636 062D 064A;na=ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM;NFKC_CF=0636 062D 064A;NFKC_SCF=0636 062D 064A
+cp;FDAC;dm=0644 062C 064A;na=ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM;NFKC_CF=0644 062C 064A;NFKC_SCF=0644 062C 064A
+cp;FDAD;dm=0644 0645 064A;na=ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM;NFKC_CF=0644 0645 064A;NFKC_SCF=0644 0645 064A
+cp;FDAE;dm=064A 062D 064A;na=ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM;NFKC_CF=064A 062D 064A;NFKC_SCF=064A 062D 064A
+cp;FDAF;dm=064A 062C 064A;na=ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM;NFKC_CF=064A 062C 064A;NFKC_SCF=064A 062C 064A
+cp;FDB0;dm=064A 0645 064A;na=ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM;NFKC_CF=064A 0645 064A;NFKC_SCF=064A 0645 064A
+cp;FDB1;dm=0645 0645 064A;na=ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM;NFKC_CF=0645 0645 064A;NFKC_SCF=0645 0645 064A
+cp;FDB2;dm=0642 0645 064A;na=ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM;NFKC_CF=0642 0645 064A;NFKC_SCF=0642 0645 064A
+cp;FDB3;dm=0646 062D 064A;na=ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM;NFKC_CF=0646 062D 064A;NFKC_SCF=0646 062D 064A
+cp;FDB4;dm=0642 0645 062D;dt=Init;na=ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM;NFKC_CF=0642 0645 062D;NFKC_SCF=0642 0645 062D
+cp;FDB5;dm=0644 062D 0645;dt=Init;na=ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM;NFKC_CF=0644 062D 0645;NFKC_SCF=0644 062D 0645
+cp;FDB6;dm=0639 0645 064A;na=ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM;NFKC_CF=0639 0645 064A;NFKC_SCF=0639 0645 064A
+cp;FDB7;dm=0643 0645 064A;na=ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM;NFKC_CF=0643 0645 064A;NFKC_SCF=0643 0645 064A
+cp;FDB8;dm=0646 062C 062D;dt=Init;na=ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM;NFKC_CF=0646 062C 062D;NFKC_SCF=0646 062C 062D
+cp;FDB9;dm=0645 062E 064A;na=ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM;NFKC_CF=0645 062E 064A;NFKC_SCF=0645 062E 064A
+cp;FDBA;dm=0644 062C 0645;dt=Init;na=ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM;NFKC_CF=0644 062C 0645;NFKC_SCF=0644 062C 0645
+cp;FDBB;dm=0643 0645 0645;na=ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM;NFKC_CF=0643 0645 0645;NFKC_SCF=0643 0645 0645
+cp;FDBC;dm=0644 062C 0645;na=ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM;NFKC_CF=0644 062C 0645;NFKC_SCF=0644 062C 0645
+cp;FDBD;dm=0646 062C 062D;na=ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM;NFKC_CF=0646 062C 062D;NFKC_SCF=0646 062C 062D
+cp;FDBE;dm=062C 062D 064A;na=ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM;NFKC_CF=062C 062D 064A;NFKC_SCF=062C 062D 064A
+cp;FDBF;dm=062D 062C 064A;na=ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM;NFKC_CF=062D 062C 064A;NFKC_SCF=062D 062C 064A
+cp;FDC0;dm=0645 062C 064A;na=ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM;NFKC_CF=0645 062C 064A;NFKC_SCF=0645 062C 064A
+cp;FDC1;dm=0641 0645 064A;na=ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM;NFKC_CF=0641 0645 064A;NFKC_SCF=0641 0645 064A
+cp;FDC2;dm=0628 062D 064A;na=ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM;NFKC_CF=0628 062D 064A;NFKC_SCF=0628 062D 064A
+cp;FDC3;dm=0643 0645 0645;dt=Init;na=ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM;NFKC_CF=0643 0645 0645;NFKC_SCF=0643 0645 0645
+cp;FDC4;dm=0639 062C 0645;dt=Init;na=ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM;NFKC_CF=0639 062C 0645;NFKC_SCF=0639 062C 0645
+cp;FDC5;dm=0635 0645 0645;dt=Init;na=ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM;NFKC_CF=0635 0645 0645;NFKC_SCF=0635 0645 0645
+cp;FDC6;dm=0633 062E 064A;na=ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM;NFKC_CF=0633 062E 064A;NFKC_SCF=0633 062E 064A
+cp;FDC7;dm=0646 062C 064A;na=ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM;NFKC_CF=0646 062C 064A;NFKC_SCF=0646 062C 064A
unassigned;FDC8..FDCE;bc=AL
# Honorific word ligature
cp;FDCF;age=14.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;na=ARABIC LIGATURE SALAAMUHU ALAYNAA;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
# Noncharacters
unassigned;FDD0..FDEF;age=3.1;bc=BN;NChar
# Word ligatures
-cp;FDF0;dm=0635 0644 06D2;dt=Iso;na=ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM;NFKC_CF=0635 0644 06D2
-cp;FDF1;dm=0642 0644 06D2;dt=Iso;na=ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM;NFKC_CF=0642 0644 06D2
-cp;FDF2;dm=0627 0644 0644 0647;dt=Iso;na=ARABIC LIGATURE ALLAH ISOLATED FORM;NFKC_CF=0627 0644 0644 0647;scx=Arab Thaa
-cp;FDF3;dm=0627 0643 0628 0631;dt=Iso;na=ARABIC LIGATURE AKBAR ISOLATED FORM;NFKC_CF=0627 0643 0628 0631
-cp;FDF4;dm=0645 062D 0645 062F;dt=Iso;na=ARABIC LIGATURE MOHAMMAD ISOLATED FORM;NFKC_CF=0645 062D 0645 062F
-cp;FDF5;dm=0635 0644 0639 0645;dt=Iso;na=ARABIC LIGATURE SALAM ISOLATED FORM;NFKC_CF=0635 0644 0639 0645
-cp;FDF6;dm=0631 0633 0648 0644;dt=Iso;na=ARABIC LIGATURE RASOUL ISOLATED FORM;NFKC_CF=0631 0633 0648 0644
-cp;FDF7;dm=0639 0644 064A 0647;dt=Iso;na=ARABIC LIGATURE ALAYHE ISOLATED FORM;NFKC_CF=0639 0644 064A 0647
-cp;FDF8;dm=0648 0633 0644 0645;dt=Iso;na=ARABIC LIGATURE WASALLAM ISOLATED FORM;NFKC_CF=0648 0633 0644 0645
-cp;FDF9;dm=0635 0644 0649;dt=Iso;na=ARABIC LIGATURE SALLA ISOLATED FORM;NFKC_CF=0635 0644 0649
-cp;FDFA;dm=0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;dt=Iso;na=ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM;NFKC_CF=0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;-XIDC;-XIDS
-cp;FDFB;dm=062C 0644 0020 062C 0644 0627 0644 0647;dt=Iso;na=ARABIC LIGATURE JALLAJALALOUHOU;NFKC_CF=062C 0644 0020 062C 0644 0627 0644 0647;-XIDC;-XIDS
+cp;FDF0;dm=0635 0644 06D2;dt=Iso;na=ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM;NFKC_CF=0635 0644 06D2;NFKC_SCF=0635 0644 06D2
+cp;FDF1;dm=0642 0644 06D2;dt=Iso;na=ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM;NFKC_CF=0642 0644 06D2;NFKC_SCF=0642 0644 06D2
+cp;FDF2;dm=0627 0644 0644 0647;dt=Iso;na=ARABIC LIGATURE ALLAH ISOLATED FORM;NFKC_CF=0627 0644 0644 0647;NFKC_SCF=0627 0644 0644 0647;scx=Arab Thaa
+cp;FDF3;dm=0627 0643 0628 0631;dt=Iso;na=ARABIC LIGATURE AKBAR ISOLATED FORM;NFKC_CF=0627 0643 0628 0631;NFKC_SCF=0627 0643 0628 0631
+cp;FDF4;dm=0645 062D 0645 062F;dt=Iso;na=ARABIC LIGATURE MOHAMMAD ISOLATED FORM;NFKC_CF=0645 062D 0645 062F;NFKC_SCF=0645 062D 0645 062F
+cp;FDF5;dm=0635 0644 0639 0645;dt=Iso;na=ARABIC LIGATURE SALAM ISOLATED FORM;NFKC_CF=0635 0644 0639 0645;NFKC_SCF=0635 0644 0639 0645
+cp;FDF6;dm=0631 0633 0648 0644;dt=Iso;na=ARABIC LIGATURE RASOUL ISOLATED FORM;NFKC_CF=0631 0633 0648 0644;NFKC_SCF=0631 0633 0648 0644
+cp;FDF7;dm=0639 0644 064A 0647;dt=Iso;na=ARABIC LIGATURE ALAYHE ISOLATED FORM;NFKC_CF=0639 0644 064A 0647;NFKC_SCF=0639 0644 064A 0647
+cp;FDF8;dm=0648 0633 0644 0645;dt=Iso;na=ARABIC LIGATURE WASALLAM ISOLATED FORM;NFKC_CF=0648 0633 0644 0645;NFKC_SCF=0648 0633 0644 0645
+cp;FDF9;dm=0635 0644 0649;dt=Iso;na=ARABIC LIGATURE SALLA ISOLATED FORM;NFKC_CF=0635 0644 0649;NFKC_SCF=0635 0644 0649
+cp;FDFA;dm=0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;dt=Iso;na=ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM;NFKC_CF=0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;NFKC_SCF=0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;-XIDC;-XIDS
+cp;FDFB;dm=062C 0644 0020 062C 0644 0627 0644 0647;dt=Iso;na=ARABIC LIGATURE JALLAJALALOUHOU;NFKC_CF=062C 0644 0020 062C 0644 0627 0644 0647;NFKC_SCF=062C 0644 0020 062C 0644 0627 0644 0647;-XIDC;-XIDS
# Currency symbol
-cp;FDFC;age=3.2;-Alpha;dm=0631 06CC 0627 0644;dt=Iso;gc=Sc;-IDC;-IDS;lb=PO;na=RIAL SIGN;NFKC_CF=0631 06CC 0627 0644;SB=XX;WB=XX;-XIDC;-XIDS
+cp;FDFC;age=3.2;-Alpha;dm=0631 06CC 0627 0644;dt=Iso;gc=Sc;-IDC;-IDS;lb=PO;na=RIAL SIGN;NFKC_CF=0631 06CC 0627 0644;NFKC_SCF=0631 06CC 0627 0644;SB=XX;WB=XX;-XIDC;-XIDS
# Honorific word ligatures
cp;FDFD;age=4.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;na=ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM;NFKC_QC=Y;NFKD_QC=Y;SB=XX;scx=Arab Thaa;WB=XX;-XIDC;-XIDS
cp;FDFE;age=14.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;na=ARABIC LIGATURE SUBHAANAHU WA TAAALAA;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
cp;FDFF;age=14.0;-Alpha;bc=ON;-CWKCF;dt=None;gc=So;-IDC;-IDS;na=ARABIC LIGATURE AZZA WA JALL;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
-block;FE00..FE0F;age=3.2;bc=NSM;blk=VS;CI;CWKCF;DI;ea=A;gc=Mn;GCB=EX;Gr_Ext;IDC;jt=T;lb=CM;NFKC_CF=;SB=EX;sc=Zinh;VS;WB=Extend;XIDC
+block;FE00..FE0F;age=3.2;bc=NSM;blk=VS;CI;CWKCF;DI;ea=A;gc=Mn;GCB=EX;Gr_Ext;IDC;jt=T;lb=CM;NFKC_CF=;NFKC_SCF=;SB=EX;sc=Zinh;VS;WB=Extend;XIDC
# FE00..FE0F Variation Selectors
# Variation selectors
cp;FE00;na=VARIATION SELECTOR-1;Name_Alias=abbreviation=VS1
@@ -20744,19 +20776,19 @@ cp;FE0F;EComp;na=VARIATION SELECTOR-16;Name_Alias=abbreviation=VS16
block;FE10..FE1F;age=4.1;bc=ON;blk=Vertical_Forms;CWKCF;dt=Vert;ea=W;gc=Po;Gr_Base;lb=CL;NFKC_QC=N;NFKD_QC=N;sc=Zyyy;vo=U
# FE10..FE1F Vertical Forms
# Glyphs for vertical variants
-cp;FE10;dm=002C;lb=IS;na=PRESENTATION FORM FOR VERTICAL COMMA;NFKC_CF=002C;SB=SC;WB=MN
-cp;FE11;dm=3001;na=PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA;NFKC_CF=3001;SB=SC
-cp;FE12;dm=3002;na=PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP;NFKC_CF=3002
-cp;FE13;CI;dm=003A;lb=IS;na=PRESENTATION FORM FOR VERTICAL COLON;NFKC_CF=003A;SB=SC;WB=ML
-cp;FE14;dm=003B;lb=IS;na=PRESENTATION FORM FOR VERTICAL SEMICOLON;NFKC_CF=003B;WB=MN
-cp;FE15;dm=0021;lb=EX;na=PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK;NFKC_CF=0021
-cp;FE16;dm=003F;lb=EX;na=PRESENTATION FORM FOR VERTICAL QUESTION MARK;NFKC_CF=003F
-cp;FE17;dm=3016;gc=Ps;lb=OP;na=PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET;NFKC_CF=3016;SB=CL
-cp;FE18;dm=3017;gc=Pe;na=PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET;Name_Alias=correction=PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRACKET;NFKC_CF=3017;SB=CL
-cp;FE19;dm=2026;lb=IN;na=PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS;NFKC_CF=002E 002E 002E
+cp;FE10;dm=002C;lb=IS;na=PRESENTATION FORM FOR VERTICAL COMMA;NFKC_CF=002C;NFKC_SCF=002C;SB=SC;WB=MN
+cp;FE11;dm=3001;na=PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA;NFKC_CF=3001;NFKC_SCF=3001;SB=SC
+cp;FE12;dm=3002;na=PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP;NFKC_CF=3002;NFKC_SCF=3002
+cp;FE13;CI;dm=003A;lb=IS;na=PRESENTATION FORM FOR VERTICAL COLON;NFKC_CF=003A;NFKC_SCF=003A;SB=SC;WB=ML
+cp;FE14;dm=003B;lb=IS;na=PRESENTATION FORM FOR VERTICAL SEMICOLON;NFKC_CF=003B;NFKC_SCF=003B;WB=MN
+cp;FE15;dm=0021;lb=EX;na=PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK;NFKC_CF=0021;NFKC_SCF=0021
+cp;FE16;dm=003F;lb=EX;na=PRESENTATION FORM FOR VERTICAL QUESTION MARK;NFKC_CF=003F;NFKC_SCF=003F
+cp;FE17;dm=3016;gc=Ps;lb=OP;na=PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET;NFKC_CF=3016;NFKC_SCF=3016;SB=CL
+cp;FE18;dm=3017;gc=Pe;na=PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET;Name_Alias=correction=PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRACKET;NFKC_CF=3017;NFKC_SCF=3017;SB=CL
+cp;FE19;dm=2026;lb=IN;na=PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS;NFKC_CF=002E 002E 002E;NFKC_SCF=002E 002E 002E
unassigned;FE1A..FE1F;vo=U
-block;FE20..FE2F;age=7.0;bc=NSM;blk=Half_Marks;ccc=230;CI;Dia;gc=Mn;GCB=EX;Gr_Ext;IDC;jt=T;lb=CM;SB=EX;sc=Zinh;WB=Extend;XIDC
+block;FE20..FE2F;age=7.0;bc=NSM;blk=Half_Marks;ccc=230;CI;Dia;gc=Mn;GCB=EX;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;SB=EX;sc=Zinh;WB=Extend;XIDC
# FE20..FE2F Combining Half Marks
# Combining half marks
cp;FE20;age=1.1;na=COMBINING LIGATURE LEFT HALF
@@ -20779,475 +20811,475 @@ cp;FE2D;ccc=220;na=COMBINING CONJOINING MACRON BELOW
cp;FE2E;age=8.0;na=COMBINING CYRILLIC TITLO LEFT HALF;sc=Cyrl
cp;FE2F;age=8.0;na=COMBINING CYRILLIC TITLO RIGHT HALF;sc=Cyrl
-block;FE30..FE4F;age=1.1;bc=ON;blk=CJK_Compat_Forms;CWKCF;dt=Vert;ea=W;gc=Pe;Gr_Base;lb=ID;NFKC_QC=N;NFKD_QC=N;SB=CL;sc=Zyyy;vo=U
+block;FE30..FE4F;age=1.1;bc=ON;blk=CJK_Compat_Forms;CWKCF;dt=Vert;ea=W;gc=Pe;Gr_Base;lb=ID;NFKC_QC=N;NFKC_SCF=0020 0305;NFKD_QC=N;SB=CL;sc=Zyyy;vo=U
# FE30..FE4F CJK Compatibility Forms
# Glyphs for vertical variants
-cp;FE30;dm=2025;gc=Po;na=PRESENTATION FORM FOR VERTICAL TWO DOT LEADER;NFKC_CF=002E 002E;SB=XX
-cp;FE31;Dash;dm=2014;gc=Pd;na=PRESENTATION FORM FOR VERTICAL EM DASH;NFKC_CF=2014;SB=SC
-cp;FE32;Dash;dm=2013;gc=Pd;na=PRESENTATION FORM FOR VERTICAL EN DASH;NFKC_CF=2013;SB=SC
-cp;FE33;dm=005F;gc=Pc;IDC;na=PRESENTATION FORM FOR VERTICAL LOW LINE;NFKC_CF=005F;SB=XX;WB=EX;XIDC
-cp;FE34;dm=005F;gc=Pc;IDC;na=PRESENTATION FORM FOR VERTICAL WAVY LOW LINE;NFKC_CF=005F;SB=XX;WB=EX;XIDC
-cp;FE35;dm=0028;gc=Ps;lb=OP;na=PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS;NFKC_CF=0028
-cp;FE36;dm=0029;lb=CL;na=PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS;NFKC_CF=0029
-cp;FE37;dm=007B;gc=Ps;lb=OP;na=PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET;NFKC_CF=007B
-cp;FE38;dm=007D;lb=CL;na=PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET;NFKC_CF=007D
-cp;FE39;dm=3014;gc=Ps;lb=OP;na=PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET;NFKC_CF=3014
-cp;FE3A;dm=3015;lb=CL;na=PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET;NFKC_CF=3015
-cp;FE3B;dm=3010;gc=Ps;lb=OP;na=PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET;NFKC_CF=3010
-cp;FE3C;dm=3011;lb=CL;na=PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET;NFKC_CF=3011
-cp;FE3D;dm=300A;gc=Ps;lb=OP;na=PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET;NFKC_CF=300A
-cp;FE3E;dm=300B;lb=CL;na=PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET;NFKC_CF=300B
-cp;FE3F;dm=3008;gc=Ps;lb=OP;na=PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET;NFKC_CF=3008
-cp;FE40;dm=3009;lb=CL;na=PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET;NFKC_CF=3009
-cp;FE41;dm=300C;gc=Ps;lb=OP;na=PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET;NFKC_CF=300C;QMark
-cp;FE42;dm=300D;lb=CL;na=PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET;NFKC_CF=300D;QMark
-cp;FE43;dm=300E;gc=Ps;lb=OP;na=PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET;NFKC_CF=300E;QMark
-cp;FE44;dm=300F;lb=CL;na=PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET;NFKC_CF=300F;QMark
+cp;FE30;dm=2025;gc=Po;na=PRESENTATION FORM FOR VERTICAL TWO DOT LEADER;NFKC_CF=002E 002E;NFKC_SCF=002E 002E;SB=XX
+cp;FE31;Dash;dm=2014;gc=Pd;na=PRESENTATION FORM FOR VERTICAL EM DASH;NFKC_CF=2014;NFKC_SCF=2014;SB=SC
+cp;FE32;Dash;dm=2013;gc=Pd;na=PRESENTATION FORM FOR VERTICAL EN DASH;NFKC_CF=2013;NFKC_SCF=2013;SB=SC
+cp;FE33;dm=005F;gc=Pc;IDC;na=PRESENTATION FORM FOR VERTICAL LOW LINE;NFKC_CF=005F;NFKC_SCF=005F;SB=XX;WB=EX;XIDC
+cp;FE34;dm=005F;gc=Pc;IDC;na=PRESENTATION FORM FOR VERTICAL WAVY LOW LINE;NFKC_CF=005F;NFKC_SCF=005F;SB=XX;WB=EX;XIDC
+cp;FE35;dm=0028;gc=Ps;lb=OP;na=PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS;NFKC_CF=0028;NFKC_SCF=0028
+cp;FE36;dm=0029;lb=CL;na=PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS;NFKC_CF=0029;NFKC_SCF=0029
+cp;FE37;dm=007B;gc=Ps;lb=OP;na=PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET;NFKC_CF=007B;NFKC_SCF=007B
+cp;FE38;dm=007D;lb=CL;na=PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET;NFKC_CF=007D;NFKC_SCF=007D
+cp;FE39;dm=3014;gc=Ps;lb=OP;na=PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET;NFKC_CF=3014;NFKC_SCF=3014
+cp;FE3A;dm=3015;lb=CL;na=PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET;NFKC_CF=3015;NFKC_SCF=3015
+cp;FE3B;dm=3010;gc=Ps;lb=OP;na=PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET;NFKC_CF=3010;NFKC_SCF=3010
+cp;FE3C;dm=3011;lb=CL;na=PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET;NFKC_CF=3011;NFKC_SCF=3011
+cp;FE3D;dm=300A;gc=Ps;lb=OP;na=PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET;NFKC_CF=300A;NFKC_SCF=300A
+cp;FE3E;dm=300B;lb=CL;na=PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET;NFKC_CF=300B;NFKC_SCF=300B
+cp;FE3F;dm=3008;gc=Ps;lb=OP;na=PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET;NFKC_CF=3008;NFKC_SCF=3008
+cp;FE40;dm=3009;lb=CL;na=PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET;NFKC_CF=3009;NFKC_SCF=3009
+cp;FE41;dm=300C;gc=Ps;lb=OP;na=PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET;NFKC_CF=300C;NFKC_SCF=300C;QMark
+cp;FE42;dm=300D;lb=CL;na=PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET;NFKC_CF=300D;NFKC_SCF=300D;QMark
+cp;FE43;dm=300E;gc=Ps;lb=OP;na=PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET;NFKC_CF=300E;NFKC_SCF=300E;QMark
+cp;FE44;dm=300F;lb=CL;na=PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET;NFKC_CF=300F;NFKC_SCF=300F;QMark
# Sidelining emphasis marks
-cp;FE45;age=3.2;-CWKCF;dt=None;gc=Po;na=SESAME DOT;NFKC_QC=Y;NFKD_QC=Y;Pat_Syn;SB=XX;scx=Bopo Hang Hani Hira Kana
-cp;FE46;age=3.2;-CWKCF;dt=None;gc=Po;na=WHITE SESAME DOT;NFKC_QC=Y;NFKD_QC=Y;Pat_Syn;SB=XX;scx=Bopo Hang Hani Hira Kana
+cp;FE45;age=3.2;-CWKCF;dt=None;gc=Po;na=SESAME DOT;NFKC_QC=Y;NFKC_SCF=<code point>;NFKD_QC=Y;Pat_Syn;SB=XX;scx=Bopo Hang Hani Hira Kana
+cp;FE46;age=3.2;-CWKCF;dt=None;gc=Po;na=WHITE SESAME DOT;NFKC_QC=Y;NFKC_SCF=<code point>;NFKD_QC=Y;Pat_Syn;SB=XX;scx=Bopo Hang Hani Hira Kana
# Glyphs for vertical variants
-cp;FE47;age=4.0;dm=005B;gc=Ps;lb=OP;na=PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET;NFKC_CF=005B
-cp;FE48;age=4.0;dm=005D;lb=CL;na=PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET;NFKC_CF=005D
+cp;FE47;age=4.0;dm=005B;gc=Ps;lb=OP;na=PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET;NFKC_CF=005B;NFKC_SCF=005B
+cp;FE48;age=4.0;dm=005D;lb=CL;na=PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET;NFKC_CF=005D;NFKC_SCF=005D
# Overscores and underscores
cp;FE49;dm=203E;dt=Com;gc=Po;na=DASHED OVERLINE;NFKC_CF=0020 0305;SB=XX;vo=R
cp;FE4A;dm=203E;dt=Com;gc=Po;na=CENTRELINE OVERLINE;NFKC_CF=0020 0305;SB=XX;vo=R
cp;FE4B;dm=203E;dt=Com;gc=Po;na=WAVY OVERLINE;NFKC_CF=0020 0305;SB=XX;vo=R
cp;FE4C;dm=203E;dt=Com;gc=Po;na=DOUBLE WAVY OVERLINE;NFKC_CF=0020 0305;SB=XX;vo=R
-cp;FE4D;dm=005F;dt=Com;gc=Pc;IDC;na=DASHED LOW LINE;NFKC_CF=005F;SB=XX;vo=R;WB=EX;XIDC
-cp;FE4E;dm=005F;dt=Com;gc=Pc;IDC;na=CENTRELINE LOW LINE;NFKC_CF=005F;SB=XX;vo=R;WB=EX;XIDC
-cp;FE4F;dm=005F;dt=Com;gc=Pc;IDC;na=WAVY LOW LINE;NFKC_CF=005F;SB=XX;vo=R;WB=EX;XIDC
+cp;FE4D;dm=005F;dt=Com;gc=Pc;IDC;na=DASHED LOW LINE;NFKC_CF=005F;NFKC_SCF=005F;SB=XX;vo=R;WB=EX;XIDC
+cp;FE4E;dm=005F;dt=Com;gc=Pc;IDC;na=CENTRELINE LOW LINE;NFKC_CF=005F;NFKC_SCF=005F;SB=XX;vo=R;WB=EX;XIDC
+cp;FE4F;dm=005F;dt=Com;gc=Pc;IDC;na=WAVY LOW LINE;NFKC_CF=005F;NFKC_SCF=005F;SB=XX;vo=R;WB=EX;XIDC
block;FE50..FE6F;age=1.1;bc=ON;blk=Small_Forms;CWKCF;dt=Sml;ea=W;gc=Po;Gr_Base;lb=ID;NFKC_QC=N;NFKD_QC=N;sc=Zyyy;vo=U
# FE50..FE6F Small Form Variants
# Small form variants
-cp;FE50;bc=CS;dm=002C;lb=CL;na=SMALL COMMA;NFKC_CF=002C;SB=SC;Term;vo=Tu;WB=MN
-cp;FE51;dm=3001;na=SMALL IDEOGRAPHIC COMMA;NFKC_CF=3001;SB=SC;Term;vo=Tu
-cp;FE52;bc=CS;CI;dm=002E;lb=CL;na=SMALL FULL STOP;NFKC_CF=002E;SB=AT;STerm;Term;vo=Tu;WB=MB
+cp;FE50;bc=CS;dm=002C;lb=CL;na=SMALL COMMA;NFKC_CF=002C;NFKC_SCF=002C;SB=SC;Term;vo=Tu;WB=MN
+cp;FE51;dm=3001;na=SMALL IDEOGRAPHIC COMMA;NFKC_CF=3001;NFKC_SCF=3001;SB=SC;Term;vo=Tu
+cp;FE52;bc=CS;CI;dm=002E;lb=CL;na=SMALL FULL STOP;NFKC_CF=002E;NFKC_SCF=002E;SB=AT;STerm;Term;vo=Tu;WB=MB
unassigned;FE53;vo=U
-cp;FE54;dm=003B;lb=NS;na=SMALL SEMICOLON;NFKC_CF=003B;Term;WB=MN
-cp;FE55;bc=CS;CI;dm=003A;lb=NS;na=SMALL COLON;NFKC_CF=003A;SB=SC;Term;WB=ML
-cp;FE56;dm=003F;lb=EX;na=SMALL QUESTION MARK;NFKC_CF=003F;SB=ST;STerm;Term
-cp;FE57;dm=0021;lb=EX;na=SMALL EXCLAMATION MARK;NFKC_CF=0021;SB=ST;STerm;Term
-cp;FE58;Dash;dm=2014;gc=Pd;na=SMALL EM DASH;NFKC_CF=2014;SB=SC;vo=R
-cp;FE59;Bidi_M;bmg=FE5A;bpb=FE5A;bpt=o;dm=0028;gc=Ps;lb=OP;na=SMALL LEFT PARENTHESIS;NFKC_CF=0028;SB=CL;vo=Tr
-cp;FE5A;Bidi_M;bmg=FE59;bpb=FE59;bpt=c;dm=0029;gc=Pe;lb=CL;na=SMALL RIGHT PARENTHESIS;NFKC_CF=0029;SB=CL;vo=Tr
-cp;FE5B;Bidi_M;bmg=FE5C;bpb=FE5C;bpt=o;dm=007B;gc=Ps;lb=OP;na=SMALL LEFT CURLY BRACKET;NFKC_CF=007B;SB=CL;vo=Tr
-cp;FE5C;Bidi_M;bmg=FE5B;bpb=FE5B;bpt=c;dm=007D;gc=Pe;lb=CL;na=SMALL RIGHT CURLY BRACKET;NFKC_CF=007D;SB=CL;vo=Tr
-cp;FE5D;Bidi_M;bmg=FE5E;bpb=FE5E;bpt=o;dm=3014;gc=Ps;lb=OP;na=SMALL LEFT TORTOISE SHELL BRACKET;NFKC_CF=3014;SB=CL;vo=Tr
-cp;FE5E;Bidi_M;bmg=FE5D;bpb=FE5D;bpt=c;dm=3015;gc=Pe;lb=CL;na=SMALL RIGHT TORTOISE SHELL BRACKET;NFKC_CF=3015;SB=CL;vo=Tr
-cp;FE5F;bc=ET;dm=0023;na=SMALL NUMBER SIGN;NFKC_CF=0023
-cp;FE60;dm=0026;na=SMALL AMPERSAND;NFKC_CF=0026
-cp;FE61;dm=002A;Math;na=SMALL ASTERISK;NFKC_CF=002A
-cp;FE62;bc=ES;dm=002B;gc=Sm;Math;na=SMALL PLUS SIGN;NFKC_CF=002B
-cp;FE63;bc=ES;Dash;dm=002D;gc=Pd;Hyphen;Math;na=SMALL HYPHEN-MINUS;NFKC_CF=002D;SB=SC;vo=R
-cp;FE64;Bidi_M;bmg=FE65;dm=003C;gc=Sm;Math;na=SMALL LESS-THAN SIGN;NFKC_CF=003C;vo=R
-cp;FE65;Bidi_M;bmg=FE64;dm=003E;gc=Sm;Math;na=SMALL GREATER-THAN SIGN;NFKC_CF=003E;vo=R
-cp;FE66;dm=003D;gc=Sm;Math;na=SMALL EQUALS SIGN;NFKC_CF=003D;vo=R
+cp;FE54;dm=003B;lb=NS;na=SMALL SEMICOLON;NFKC_CF=003B;NFKC_SCF=003B;Term;WB=MN
+cp;FE55;bc=CS;CI;dm=003A;lb=NS;na=SMALL COLON;NFKC_CF=003A;NFKC_SCF=003A;SB=SC;Term;WB=ML
+cp;FE56;dm=003F;lb=EX;na=SMALL QUESTION MARK;NFKC_CF=003F;NFKC_SCF=003F;SB=ST;STerm;Term
+cp;FE57;dm=0021;lb=EX;na=SMALL EXCLAMATION MARK;NFKC_CF=0021;NFKC_SCF=0021;SB=ST;STerm;Term
+cp;FE58;Dash;dm=2014;gc=Pd;na=SMALL EM DASH;NFKC_CF=2014;NFKC_SCF=2014;SB=SC;vo=R
+cp;FE59;Bidi_M;bmg=FE5A;bpb=FE5A;bpt=o;dm=0028;gc=Ps;lb=OP;na=SMALL LEFT PARENTHESIS;NFKC_CF=0028;NFKC_SCF=0028;SB=CL;vo=Tr
+cp;FE5A;Bidi_M;bmg=FE59;bpb=FE59;bpt=c;dm=0029;gc=Pe;lb=CL;na=SMALL RIGHT PARENTHESIS;NFKC_CF=0029;NFKC_SCF=0029;SB=CL;vo=Tr
+cp;FE5B;Bidi_M;bmg=FE5C;bpb=FE5C;bpt=o;dm=007B;gc=Ps;lb=OP;na=SMALL LEFT CURLY BRACKET;NFKC_CF=007B;NFKC_SCF=007B;SB=CL;vo=Tr
+cp;FE5C;Bidi_M;bmg=FE5B;bpb=FE5B;bpt=c;dm=007D;gc=Pe;lb=CL;na=SMALL RIGHT CURLY BRACKET;NFKC_CF=007D;NFKC_SCF=007D;SB=CL;vo=Tr
+cp;FE5D;Bidi_M;bmg=FE5E;bpb=FE5E;bpt=o;dm=3014;gc=Ps;lb=OP;na=SMALL LEFT TORTOISE SHELL BRACKET;NFKC_CF=3014;NFKC_SCF=3014;SB=CL;vo=Tr
+cp;FE5E;Bidi_M;bmg=FE5D;bpb=FE5D;bpt=c;dm=3015;gc=Pe;lb=CL;na=SMALL RIGHT TORTOISE SHELL BRACKET;NFKC_CF=3015;NFKC_SCF=3015;SB=CL;vo=Tr
+cp;FE5F;bc=ET;dm=0023;na=SMALL NUMBER SIGN;NFKC_CF=0023;NFKC_SCF=0023
+cp;FE60;dm=0026;na=SMALL AMPERSAND;NFKC_CF=0026;NFKC_SCF=0026
+cp;FE61;dm=002A;Math;na=SMALL ASTERISK;NFKC_CF=002A;NFKC_SCF=002A
+cp;FE62;bc=ES;dm=002B;gc=Sm;Math;na=SMALL PLUS SIGN;NFKC_CF=002B;NFKC_SCF=002B
+cp;FE63;bc=ES;Dash;dm=002D;gc=Pd;Hyphen;Math;na=SMALL HYPHEN-MINUS;NFKC_CF=002D;NFKC_SCF=002D;SB=SC;vo=R
+cp;FE64;Bidi_M;bmg=FE65;dm=003C;gc=Sm;Math;na=SMALL LESS-THAN SIGN;NFKC_CF=003C;NFKC_SCF=003C;vo=R
+cp;FE65;Bidi_M;bmg=FE64;dm=003E;gc=Sm;Math;na=SMALL GREATER-THAN SIGN;NFKC_CF=003E;NFKC_SCF=003E;vo=R
+cp;FE66;dm=003D;gc=Sm;Math;na=SMALL EQUALS SIGN;NFKC_CF=003D;NFKC_SCF=003D;vo=R
unassigned;FE67;vo=U
-cp;FE68;dm=005C;Math;na=SMALL REVERSE SOLIDUS;NFKC_CF=005C
-cp;FE69;bc=ET;dm=0024;gc=Sc;lb=PR;na=SMALL DOLLAR SIGN;NFKC_CF=0024
-cp;FE6A;bc=ET;dm=0025;lb=PO;na=SMALL PERCENT SIGN;NFKC_CF=0025
-cp;FE6B;dm=0040;na=SMALL COMMERCIAL AT;NFKC_CF=0040
+cp;FE68;dm=005C;Math;na=SMALL REVERSE SOLIDUS;NFKC_CF=005C;NFKC_SCF=005C
+cp;FE69;bc=ET;dm=0024;gc=Sc;lb=PR;na=SMALL DOLLAR SIGN;NFKC_CF=0024;NFKC_SCF=0024
+cp;FE6A;bc=ET;dm=0025;lb=PO;na=SMALL PERCENT SIGN;NFKC_CF=0025;NFKC_SCF=0025
+cp;FE6B;dm=0040;na=SMALL COMMERCIAL AT;NFKC_CF=0040;NFKC_SCF=0040
unassigned;FE6C..FE6F;vo=U
-block;FE70..FEFF;age=1.1;Alpha;bc=AL;blk=Arabic_PF_B;CWKCF;dt=Iso;gc=Lo;Gr_Base;IDC;IDS;lb=AL;NFKC_QC=N;NFKD_QC=N;SB=LE;sc=Arab;WB=LE;XIDC;XIDS
+block;FE70..FEFF;age=1.1;Alpha;bc=AL;blk=Arabic_PF_B;CWKCF;dt=Iso;gc=Lo;Gr_Base;IDC;IDS;lb=AL;NFKC_QC=N;NFKC_SCF=0626;NFKD_QC=N;SB=LE;sc=Arab;WB=LE;XIDC;XIDS
# FE70..FEFF Arabic Presentation Forms-B
# Glyphs for spacing forms of Arabic points
-cp;FE70;dm=0020 064B;na=ARABIC FATHATAN ISOLATED FORM;NFKC_CF=0020 064B;-XIDC;-XIDS
-cp;FE71;dm=0640 064B;dt=Med;na=ARABIC TATWEEL WITH FATHATAN ABOVE;NFKC_CF=0640 064B
-cp;FE72;dm=0020 064C;na=ARABIC DAMMATAN ISOLATED FORM;NFKC_CF=0020 064C;-XIDC;-XIDS
+cp;FE70;dm=0020 064B;na=ARABIC FATHATAN ISOLATED FORM;NFKC_CF=0020 064B;NFKC_SCF=0020 064B;-XIDC;-XIDS
+cp;FE71;dm=0640 064B;dt=Med;na=ARABIC TATWEEL WITH FATHATAN ABOVE;NFKC_CF=0640 064B;NFKC_SCF=0640 064B
+cp;FE72;dm=0020 064C;na=ARABIC DAMMATAN ISOLATED FORM;NFKC_CF=0020 064C;NFKC_SCF=0020 064C;-XIDC;-XIDS
# Glyph part
-cp;FE73;age=3.2;-CWKCF;dt=None;na=ARABIC TAIL FRAGMENT;NFKC_QC=Y;NFKD_QC=Y
+cp;FE73;age=3.2;-CWKCF;dt=None;na=ARABIC TAIL FRAGMENT;NFKC_QC=Y;NFKC_SCF=<code point>;NFKD_QC=Y
# Glyphs for spacing forms of Arabic points
-cp;FE74;dm=0020 064D;na=ARABIC KASRATAN ISOLATED FORM;NFKC_CF=0020 064D;-XIDC;-XIDS
+cp;FE74;dm=0020 064D;na=ARABIC KASRATAN ISOLATED FORM;NFKC_CF=0020 064D;NFKC_SCF=0020 064D;-XIDC;-XIDS
unassigned;FE75;bc=AL
-cp;FE76;dm=0020 064E;na=ARABIC FATHA ISOLATED FORM;NFKC_CF=0020 064E;-XIDC;-XIDS
-cp;FE77;dm=0640 064E;dt=Med;na=ARABIC FATHA MEDIAL FORM;NFKC_CF=0640 064E
-cp;FE78;dm=0020 064F;na=ARABIC DAMMA ISOLATED FORM;NFKC_CF=0020 064F;-XIDC;-XIDS
-cp;FE79;dm=0640 064F;dt=Med;na=ARABIC DAMMA MEDIAL FORM;NFKC_CF=0640 064F
-cp;FE7A;dm=0020 0650;na=ARABIC KASRA ISOLATED FORM;NFKC_CF=0020 0650;-XIDC;-XIDS
-cp;FE7B;dm=0640 0650;dt=Med;na=ARABIC KASRA MEDIAL FORM;NFKC_CF=0640 0650
-cp;FE7C;dm=0020 0651;na=ARABIC SHADDA ISOLATED FORM;NFKC_CF=0020 0651;-XIDC;-XIDS
-cp;FE7D;dm=0640 0651;dt=Med;na=ARABIC SHADDA MEDIAL FORM;NFKC_CF=0640 0651
-cp;FE7E;dm=0020 0652;na=ARABIC SUKUN ISOLATED FORM;NFKC_CF=0020 0652;-XIDC;-XIDS
-cp;FE7F;dm=0640 0652;dt=Med;na=ARABIC SUKUN MEDIAL FORM;NFKC_CF=0640 0652
+cp;FE76;dm=0020 064E;na=ARABIC FATHA ISOLATED FORM;NFKC_CF=0020 064E;NFKC_SCF=0020 064E;-XIDC;-XIDS
+cp;FE77;dm=0640 064E;dt=Med;na=ARABIC FATHA MEDIAL FORM;NFKC_CF=0640 064E;NFKC_SCF=0640 064E
+cp;FE78;dm=0020 064F;na=ARABIC DAMMA ISOLATED FORM;NFKC_CF=0020 064F;NFKC_SCF=0020 064F;-XIDC;-XIDS
+cp;FE79;dm=0640 064F;dt=Med;na=ARABIC DAMMA MEDIAL FORM;NFKC_CF=0640 064F;NFKC_SCF=0640 064F
+cp;FE7A;dm=0020 0650;na=ARABIC KASRA ISOLATED FORM;NFKC_CF=0020 0650;NFKC_SCF=0020 0650;-XIDC;-XIDS
+cp;FE7B;dm=0640 0650;dt=Med;na=ARABIC KASRA MEDIAL FORM;NFKC_CF=0640 0650;NFKC_SCF=0640 0650
+cp;FE7C;dm=0020 0651;na=ARABIC SHADDA ISOLATED FORM;NFKC_CF=0020 0651;NFKC_SCF=0020 0651;-XIDC;-XIDS
+cp;FE7D;dm=0640 0651;dt=Med;na=ARABIC SHADDA MEDIAL FORM;NFKC_CF=0640 0651;NFKC_SCF=0640 0651
+cp;FE7E;dm=0020 0652;na=ARABIC SUKUN ISOLATED FORM;NFKC_CF=0020 0652;NFKC_SCF=0020 0652;-XIDC;-XIDS
+cp;FE7F;dm=0640 0652;dt=Med;na=ARABIC SUKUN MEDIAL FORM;NFKC_CF=0640 0652;NFKC_SCF=0640 0652
# Basic glyphs for Arabic language contextual forms
-cp;FE80;dm=0621;na=ARABIC LETTER HAMZA ISOLATED FORM;NFKC_CF=0621
-cp;FE81;dm=0622;na=ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM;NFKC_CF=0622
-cp;FE82;dm=0622;dt=Fin;na=ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM;NFKC_CF=0622
-cp;FE83;dm=0623;na=ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM;NFKC_CF=0623
-cp;FE84;dm=0623;dt=Fin;na=ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM;NFKC_CF=0623
-cp;FE85;dm=0624;na=ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM;NFKC_CF=0624
-cp;FE86;dm=0624;dt=Fin;na=ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM;NFKC_CF=0624
-cp;FE87;dm=0625;na=ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM;NFKC_CF=0625
-cp;FE88;dm=0625;dt=Fin;na=ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM;NFKC_CF=0625
+cp;FE80;dm=0621;na=ARABIC LETTER HAMZA ISOLATED FORM;NFKC_CF=0621;NFKC_SCF=0621
+cp;FE81;dm=0622;na=ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM;NFKC_CF=0622;NFKC_SCF=0622
+cp;FE82;dm=0622;dt=Fin;na=ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM;NFKC_CF=0622;NFKC_SCF=0622
+cp;FE83;dm=0623;na=ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM;NFKC_CF=0623;NFKC_SCF=0623
+cp;FE84;dm=0623;dt=Fin;na=ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM;NFKC_CF=0623;NFKC_SCF=0623
+cp;FE85;dm=0624;na=ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM;NFKC_CF=0624;NFKC_SCF=0624
+cp;FE86;dm=0624;dt=Fin;na=ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM;NFKC_CF=0624;NFKC_SCF=0624
+cp;FE87;dm=0625;na=ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM;NFKC_CF=0625;NFKC_SCF=0625
+cp;FE88;dm=0625;dt=Fin;na=ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM;NFKC_CF=0625;NFKC_SCF=0625
cp;FE89;dm=0626;na=ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM;NFKC_CF=0626
cp;FE8A;dm=0626;dt=Fin;na=ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM;NFKC_CF=0626
cp;FE8B;dm=0626;dt=Init;na=ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM;NFKC_CF=0626
cp;FE8C;dm=0626;dt=Med;na=ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM;NFKC_CF=0626
-cp;FE8D;dm=0627;na=ARABIC LETTER ALEF ISOLATED FORM;NFKC_CF=0627
-cp;FE8E;dm=0627;dt=Fin;na=ARABIC LETTER ALEF FINAL FORM;NFKC_CF=0627
-cp;FE8F;dm=0628;na=ARABIC LETTER BEH ISOLATED FORM;NFKC_CF=0628
-cp;FE90;dm=0628;dt=Fin;na=ARABIC LETTER BEH FINAL FORM;NFKC_CF=0628
-cp;FE91;dm=0628;dt=Init;na=ARABIC LETTER BEH INITIAL FORM;NFKC_CF=0628
-cp;FE92;dm=0628;dt=Med;na=ARABIC LETTER BEH MEDIAL FORM;NFKC_CF=0628
-cp;FE93;dm=0629;na=ARABIC LETTER TEH MARBUTA ISOLATED FORM;NFKC_CF=0629
-cp;FE94;dm=0629;dt=Fin;na=ARABIC LETTER TEH MARBUTA FINAL FORM;NFKC_CF=0629
-cp;FE95;dm=062A;na=ARABIC LETTER TEH ISOLATED FORM;NFKC_CF=062A
-cp;FE96;dm=062A;dt=Fin;na=ARABIC LETTER TEH FINAL FORM;NFKC_CF=062A
-cp;FE97;dm=062A;dt=Init;na=ARABIC LETTER TEH INITIAL FORM;NFKC_CF=062A
-cp;FE98;dm=062A;dt=Med;na=ARABIC LETTER TEH MEDIAL FORM;NFKC_CF=062A
-cp;FE99;dm=062B;na=ARABIC LETTER THEH ISOLATED FORM;NFKC_CF=062B
-cp;FE9A;dm=062B;dt=Fin;na=ARABIC LETTER THEH FINAL FORM;NFKC_CF=062B
-cp;FE9B;dm=062B;dt=Init;na=ARABIC LETTER THEH INITIAL FORM;NFKC_CF=062B
-cp;FE9C;dm=062B;dt=Med;na=ARABIC LETTER THEH MEDIAL FORM;NFKC_CF=062B
-cp;FE9D;dm=062C;na=ARABIC LETTER JEEM ISOLATED FORM;NFKC_CF=062C
-cp;FE9E;dm=062C;dt=Fin;na=ARABIC LETTER JEEM FINAL FORM;NFKC_CF=062C
-cp;FE9F;dm=062C;dt=Init;na=ARABIC LETTER JEEM INITIAL FORM;NFKC_CF=062C
-cp;FEA0;dm=062C;dt=Med;na=ARABIC LETTER JEEM MEDIAL FORM;NFKC_CF=062C
-cp;FEA1;dm=062D;na=ARABIC LETTER HAH ISOLATED FORM;NFKC_CF=062D
-cp;FEA2;dm=062D;dt=Fin;na=ARABIC LETTER HAH FINAL FORM;NFKC_CF=062D
-cp;FEA3;dm=062D;dt=Init;na=ARABIC LETTER HAH INITIAL FORM;NFKC_CF=062D
-cp;FEA4;dm=062D;dt=Med;na=ARABIC LETTER HAH MEDIAL FORM;NFKC_CF=062D
-cp;FEA5;dm=062E;na=ARABIC LETTER KHAH ISOLATED FORM;NFKC_CF=062E
-cp;FEA6;dm=062E;dt=Fin;na=ARABIC LETTER KHAH FINAL FORM;NFKC_CF=062E
-cp;FEA7;dm=062E;dt=Init;na=ARABIC LETTER KHAH INITIAL FORM;NFKC_CF=062E
-cp;FEA8;dm=062E;dt=Med;na=ARABIC LETTER KHAH MEDIAL FORM;NFKC_CF=062E
-cp;FEA9;dm=062F;na=ARABIC LETTER DAL ISOLATED FORM;NFKC_CF=062F
-cp;FEAA;dm=062F;dt=Fin;na=ARABIC LETTER DAL FINAL FORM;NFKC_CF=062F
-cp;FEAB;dm=0630;na=ARABIC LETTER THAL ISOLATED FORM;NFKC_CF=0630
-cp;FEAC;dm=0630;dt=Fin;na=ARABIC LETTER THAL FINAL FORM;NFKC_CF=0630
-cp;FEAD;dm=0631;na=ARABIC LETTER REH ISOLATED FORM;NFKC_CF=0631
-cp;FEAE;dm=0631;dt=Fin;na=ARABIC LETTER REH FINAL FORM;NFKC_CF=0631
-cp;FEAF;dm=0632;na=ARABIC LETTER ZAIN ISOLATED FORM;NFKC_CF=0632
-cp;FEB0;dm=0632;dt=Fin;na=ARABIC LETTER ZAIN FINAL FORM;NFKC_CF=0632
-cp;FEB1;dm=0633;na=ARABIC LETTER SEEN ISOLATED FORM;NFKC_CF=0633
-cp;FEB2;dm=0633;dt=Fin;na=ARABIC LETTER SEEN FINAL FORM;NFKC_CF=0633
-cp;FEB3;dm=0633;dt=Init;na=ARABIC LETTER SEEN INITIAL FORM;NFKC_CF=0633
-cp;FEB4;dm=0633;dt=Med;na=ARABIC LETTER SEEN MEDIAL FORM;NFKC_CF=0633
-cp;FEB5;dm=0634;na=ARABIC LETTER SHEEN ISOLATED FORM;NFKC_CF=0634
-cp;FEB6;dm=0634;dt=Fin;na=ARABIC LETTER SHEEN FINAL FORM;NFKC_CF=0634
-cp;FEB7;dm=0634;dt=Init;na=ARABIC LETTER SHEEN INITIAL FORM;NFKC_CF=0634
-cp;FEB8;dm=0634;dt=Med;na=ARABIC LETTER SHEEN MEDIAL FORM;NFKC_CF=0634
-cp;FEB9;dm=0635;na=ARABIC LETTER SAD ISOLATED FORM;NFKC_CF=0635
-cp;FEBA;dm=0635;dt=Fin;na=ARABIC LETTER SAD FINAL FORM;NFKC_CF=0635
-cp;FEBB;dm=0635;dt=Init;na=ARABIC LETTER SAD INITIAL FORM;NFKC_CF=0635
-cp;FEBC;dm=0635;dt=Med;na=ARABIC LETTER SAD MEDIAL FORM;NFKC_CF=0635
-cp;FEBD;dm=0636;na=ARABIC LETTER DAD ISOLATED FORM;NFKC_CF=0636
-cp;FEBE;dm=0636;dt=Fin;na=ARABIC LETTER DAD FINAL FORM;NFKC_CF=0636
-cp;FEBF;dm=0636;dt=Init;na=ARABIC LETTER DAD INITIAL FORM;NFKC_CF=0636
-cp;FEC0;dm=0636;dt=Med;na=ARABIC LETTER DAD MEDIAL FORM;NFKC_CF=0636
-cp;FEC1;dm=0637;na=ARABIC LETTER TAH ISOLATED FORM;NFKC_CF=0637
-cp;FEC2;dm=0637;dt=Fin;na=ARABIC LETTER TAH FINAL FORM;NFKC_CF=0637
-cp;FEC3;dm=0637;dt=Init;na=ARABIC LETTER TAH INITIAL FORM;NFKC_CF=0637
-cp;FEC4;dm=0637;dt=Med;na=ARABIC LETTER TAH MEDIAL FORM;NFKC_CF=0637
-cp;FEC5;dm=0638;na=ARABIC LETTER ZAH ISOLATED FORM;NFKC_CF=0638
-cp;FEC6;dm=0638;dt=Fin;na=ARABIC LETTER ZAH FINAL FORM;NFKC_CF=0638
-cp;FEC7;dm=0638;dt=Init;na=ARABIC LETTER ZAH INITIAL FORM;NFKC_CF=0638
-cp;FEC8;dm=0638;dt=Med;na=ARABIC LETTER ZAH MEDIAL FORM;NFKC_CF=0638
-cp;FEC9;dm=0639;na=ARABIC LETTER AIN ISOLATED FORM;NFKC_CF=0639
-cp;FECA;dm=0639;dt=Fin;na=ARABIC LETTER AIN FINAL FORM;NFKC_CF=0639
-cp;FECB;dm=0639;dt=Init;na=ARABIC LETTER AIN INITIAL FORM;NFKC_CF=0639
-cp;FECC;dm=0639;dt=Med;na=ARABIC LETTER AIN MEDIAL FORM;NFKC_CF=0639
-cp;FECD;dm=063A;na=ARABIC LETTER GHAIN ISOLATED FORM;NFKC_CF=063A
-cp;FECE;dm=063A;dt=Fin;na=ARABIC LETTER GHAIN FINAL FORM;NFKC_CF=063A
-cp;FECF;dm=063A;dt=Init;na=ARABIC LETTER GHAIN INITIAL FORM;NFKC_CF=063A
-cp;FED0;dm=063A;dt=Med;na=ARABIC LETTER GHAIN MEDIAL FORM;NFKC_CF=063A
-cp;FED1;dm=0641;na=ARABIC LETTER FEH ISOLATED FORM;NFKC_CF=0641
-cp;FED2;dm=0641;dt=Fin;na=ARABIC LETTER FEH FINAL FORM;NFKC_CF=0641
-cp;FED3;dm=0641;dt=Init;na=ARABIC LETTER FEH INITIAL FORM;NFKC_CF=0641
-cp;FED4;dm=0641;dt=Med;na=ARABIC LETTER FEH MEDIAL FORM;NFKC_CF=0641
-cp;FED5;dm=0642;na=ARABIC LETTER QAF ISOLATED FORM;NFKC_CF=0642
-cp;FED6;dm=0642;dt=Fin;na=ARABIC LETTER QAF FINAL FORM;NFKC_CF=0642
-cp;FED7;dm=0642;dt=Init;na=ARABIC LETTER QAF INITIAL FORM;NFKC_CF=0642
-cp;FED8;dm=0642;dt=Med;na=ARABIC LETTER QAF MEDIAL FORM;NFKC_CF=0642
-cp;FED9;dm=0643;na=ARABIC LETTER KAF ISOLATED FORM;NFKC_CF=0643
-cp;FEDA;dm=0643;dt=Fin;na=ARABIC LETTER KAF FINAL FORM;NFKC_CF=0643
-cp;FEDB;dm=0643;dt=Init;na=ARABIC LETTER KAF INITIAL FORM;NFKC_CF=0643
-cp;FEDC;dm=0643;dt=Med;na=ARABIC LETTER KAF MEDIAL FORM;NFKC_CF=0643
-cp;FEDD;dm=0644;na=ARABIC LETTER LAM ISOLATED FORM;NFKC_CF=0644
-cp;FEDE;dm=0644;dt=Fin;na=ARABIC LETTER LAM FINAL FORM;NFKC_CF=0644
-cp;FEDF;dm=0644;dt=Init;na=ARABIC LETTER LAM INITIAL FORM;NFKC_CF=0644
-cp;FEE0;dm=0644;dt=Med;na=ARABIC LETTER LAM MEDIAL FORM;NFKC_CF=0644
-cp;FEE1;dm=0645;na=ARABIC LETTER MEEM ISOLATED FORM;NFKC_CF=0645
-cp;FEE2;dm=0645;dt=Fin;na=ARABIC LETTER MEEM FINAL FORM;NFKC_CF=0645
-cp;FEE3;dm=0645;dt=Init;na=ARABIC LETTER MEEM INITIAL FORM;NFKC_CF=0645
-cp;FEE4;dm=0645;dt=Med;na=ARABIC LETTER MEEM MEDIAL FORM;NFKC_CF=0645
-cp;FEE5;dm=0646;na=ARABIC LETTER NOON ISOLATED FORM;NFKC_CF=0646
-cp;FEE6;dm=0646;dt=Fin;na=ARABIC LETTER NOON FINAL FORM;NFKC_CF=0646
-cp;FEE7;dm=0646;dt=Init;na=ARABIC LETTER NOON INITIAL FORM;NFKC_CF=0646
-cp;FEE8;dm=0646;dt=Med;na=ARABIC LETTER NOON MEDIAL FORM;NFKC_CF=0646
-cp;FEE9;dm=0647;na=ARABIC LETTER HEH ISOLATED FORM;NFKC_CF=0647
-cp;FEEA;dm=0647;dt=Fin;na=ARABIC LETTER HEH FINAL FORM;NFKC_CF=0647
-cp;FEEB;dm=0647;dt=Init;na=ARABIC LETTER HEH INITIAL FORM;NFKC_CF=0647
-cp;FEEC;dm=0647;dt=Med;na=ARABIC LETTER HEH MEDIAL FORM;NFKC_CF=0647
-cp;FEED;dm=0648;na=ARABIC LETTER WAW ISOLATED FORM;NFKC_CF=0648
-cp;FEEE;dm=0648;dt=Fin;na=ARABIC LETTER WAW FINAL FORM;NFKC_CF=0648
-cp;FEEF;dm=0649;na=ARABIC LETTER ALEF MAKSURA ISOLATED FORM;NFKC_CF=0649
-cp;FEF0;dm=0649;dt=Fin;na=ARABIC LETTER ALEF MAKSURA FINAL FORM;NFKC_CF=0649
-cp;FEF1;dm=064A;na=ARABIC LETTER YEH ISOLATED FORM;NFKC_CF=064A
-cp;FEF2;dm=064A;dt=Fin;na=ARABIC LETTER YEH FINAL FORM;NFKC_CF=064A
-cp;FEF3;dm=064A;dt=Init;na=ARABIC LETTER YEH INITIAL FORM;NFKC_CF=064A
-cp;FEF4;dm=064A;dt=Med;na=ARABIC LETTER YEH MEDIAL FORM;NFKC_CF=064A
-cp;FEF5;dm=0644 0622;na=ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM;NFKC_CF=0644 0622
-cp;FEF6;dm=0644 0622;dt=Fin;na=ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM;NFKC_CF=0644 0622
-cp;FEF7;dm=0644 0623;na=ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM;NFKC_CF=0644 0623
-cp;FEF8;dm=0644 0623;dt=Fin;na=ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM;NFKC_CF=0644 0623
-cp;FEF9;dm=0644 0625;na=ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM;NFKC_CF=0644 0625
-cp;FEFA;dm=0644 0625;dt=Fin;na=ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM;NFKC_CF=0644 0625
-cp;FEFB;dm=0644 0627;na=ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM;NFKC_CF=0644 0627
-cp;FEFC;dm=0644 0627;dt=Fin;na=ARABIC LIGATURE LAM WITH ALEF FINAL FORM;NFKC_CF=0644 0627
+cp;FE8D;dm=0627;na=ARABIC LETTER ALEF ISOLATED FORM;NFKC_CF=0627;NFKC_SCF=0627
+cp;FE8E;dm=0627;dt=Fin;na=ARABIC LETTER ALEF FINAL FORM;NFKC_CF=0627;NFKC_SCF=0627
+cp;FE8F;dm=0628;na=ARABIC LETTER BEH ISOLATED FORM;NFKC_CF=0628;NFKC_SCF=0628
+cp;FE90;dm=0628;dt=Fin;na=ARABIC LETTER BEH FINAL FORM;NFKC_CF=0628;NFKC_SCF=0628
+cp;FE91;dm=0628;dt=Init;na=ARABIC LETTER BEH INITIAL FORM;NFKC_CF=0628;NFKC_SCF=0628
+cp;FE92;dm=0628;dt=Med;na=ARABIC LETTER BEH MEDIAL FORM;NFKC_CF=0628;NFKC_SCF=0628
+cp;FE93;dm=0629;na=ARABIC LETTER TEH MARBUTA ISOLATED FORM;NFKC_CF=0629;NFKC_SCF=0629
+cp;FE94;dm=0629;dt=Fin;na=ARABIC LETTER TEH MARBUTA FINAL FORM;NFKC_CF=0629;NFKC_SCF=0629
+cp;FE95;dm=062A;na=ARABIC LETTER TEH ISOLATED FORM;NFKC_CF=062A;NFKC_SCF=062A
+cp;FE96;dm=062A;dt=Fin;na=ARABIC LETTER TEH FINAL FORM;NFKC_CF=062A;NFKC_SCF=062A
+cp;FE97;dm=062A;dt=Init;na=ARABIC LETTER TEH INITIAL FORM;NFKC_CF=062A;NFKC_SCF=062A
+cp;FE98;dm=062A;dt=Med;na=ARABIC LETTER TEH MEDIAL FORM;NFKC_CF=062A;NFKC_SCF=062A
+cp;FE99;dm=062B;na=ARABIC LETTER THEH ISOLATED FORM;NFKC_CF=062B;NFKC_SCF=062B
+cp;FE9A;dm=062B;dt=Fin;na=ARABIC LETTER THEH FINAL FORM;NFKC_CF=062B;NFKC_SCF=062B
+cp;FE9B;dm=062B;dt=Init;na=ARABIC LETTER THEH INITIAL FORM;NFKC_CF=062B;NFKC_SCF=062B
+cp;FE9C;dm=062B;dt=Med;na=ARABIC LETTER THEH MEDIAL FORM;NFKC_CF=062B;NFKC_SCF=062B
+cp;FE9D;dm=062C;na=ARABIC LETTER JEEM ISOLATED FORM;NFKC_CF=062C;NFKC_SCF=062C
+cp;FE9E;dm=062C;dt=Fin;na=ARABIC LETTER JEEM FINAL FORM;NFKC_CF=062C;NFKC_SCF=062C
+cp;FE9F;dm=062C;dt=Init;na=ARABIC LETTER JEEM INITIAL FORM;NFKC_CF=062C;NFKC_SCF=062C
+cp;FEA0;dm=062C;dt=Med;na=ARABIC LETTER JEEM MEDIAL FORM;NFKC_CF=062C;NFKC_SCF=062C
+cp;FEA1;dm=062D;na=ARABIC LETTER HAH ISOLATED FORM;NFKC_CF=062D;NFKC_SCF=062D
+cp;FEA2;dm=062D;dt=Fin;na=ARABIC LETTER HAH FINAL FORM;NFKC_CF=062D;NFKC_SCF=062D
+cp;FEA3;dm=062D;dt=Init;na=ARABIC LETTER HAH INITIAL FORM;NFKC_CF=062D;NFKC_SCF=062D
+cp;FEA4;dm=062D;dt=Med;na=ARABIC LETTER HAH MEDIAL FORM;NFKC_CF=062D;NFKC_SCF=062D
+cp;FEA5;dm=062E;na=ARABIC LETTER KHAH ISOLATED FORM;NFKC_CF=062E;NFKC_SCF=062E
+cp;FEA6;dm=062E;dt=Fin;na=ARABIC LETTER KHAH FINAL FORM;NFKC_CF=062E;NFKC_SCF=062E
+cp;FEA7;dm=062E;dt=Init;na=ARABIC LETTER KHAH INITIAL FORM;NFKC_CF=062E;NFKC_SCF=062E
+cp;FEA8;dm=062E;dt=Med;na=ARABIC LETTER KHAH MEDIAL FORM;NFKC_CF=062E;NFKC_SCF=062E
+cp;FEA9;dm=062F;na=ARABIC LETTER DAL ISOLATED FORM;NFKC_CF=062F;NFKC_SCF=062F
+cp;FEAA;dm=062F;dt=Fin;na=ARABIC LETTER DAL FINAL FORM;NFKC_CF=062F;NFKC_SCF=062F
+cp;FEAB;dm=0630;na=ARABIC LETTER THAL ISOLATED FORM;NFKC_CF=0630;NFKC_SCF=0630
+cp;FEAC;dm=0630;dt=Fin;na=ARABIC LETTER THAL FINAL FORM;NFKC_CF=0630;NFKC_SCF=0630
+cp;FEAD;dm=0631;na=ARABIC LETTER REH ISOLATED FORM;NFKC_CF=0631;NFKC_SCF=0631
+cp;FEAE;dm=0631;dt=Fin;na=ARABIC LETTER REH FINAL FORM;NFKC_CF=0631;NFKC_SCF=0631
+cp;FEAF;dm=0632;na=ARABIC LETTER ZAIN ISOLATED FORM;NFKC_CF=0632;NFKC_SCF=0632
+cp;FEB0;dm=0632;dt=Fin;na=ARABIC LETTER ZAIN FINAL FORM;NFKC_CF=0632;NFKC_SCF=0632
+cp;FEB1;dm=0633;na=ARABIC LETTER SEEN ISOLATED FORM;NFKC_CF=0633;NFKC_SCF=0633
+cp;FEB2;dm=0633;dt=Fin;na=ARABIC LETTER SEEN FINAL FORM;NFKC_CF=0633;NFKC_SCF=0633
+cp;FEB3;dm=0633;dt=Init;na=ARABIC LETTER SEEN INITIAL FORM;NFKC_CF=0633;NFKC_SCF=0633
+cp;FEB4;dm=0633;dt=Med;na=ARABIC LETTER SEEN MEDIAL FORM;NFKC_CF=0633;NFKC_SCF=0633
+cp;FEB5;dm=0634;na=ARABIC LETTER SHEEN ISOLATED FORM;NFKC_CF=0634;NFKC_SCF=0634
+cp;FEB6;dm=0634;dt=Fin;na=ARABIC LETTER SHEEN FINAL FORM;NFKC_CF=0634;NFKC_SCF=0634
+cp;FEB7;dm=0634;dt=Init;na=ARABIC LETTER SHEEN INITIAL FORM;NFKC_CF=0634;NFKC_SCF=0634
+cp;FEB8;dm=0634;dt=Med;na=ARABIC LETTER SHEEN MEDIAL FORM;NFKC_CF=0634;NFKC_SCF=0634
+cp;FEB9;dm=0635;na=ARABIC LETTER SAD ISOLATED FORM;NFKC_CF=0635;NFKC_SCF=0635
+cp;FEBA;dm=0635;dt=Fin;na=ARABIC LETTER SAD FINAL FORM;NFKC_CF=0635;NFKC_SCF=0635
+cp;FEBB;dm=0635;dt=Init;na=ARABIC LETTER SAD INITIAL FORM;NFKC_CF=0635;NFKC_SCF=0635
+cp;FEBC;dm=0635;dt=Med;na=ARABIC LETTER SAD MEDIAL FORM;NFKC_CF=0635;NFKC_SCF=0635
+cp;FEBD;dm=0636;na=ARABIC LETTER DAD ISOLATED FORM;NFKC_CF=0636;NFKC_SCF=0636
+cp;FEBE;dm=0636;dt=Fin;na=ARABIC LETTER DAD FINAL FORM;NFKC_CF=0636;NFKC_SCF=0636
+cp;FEBF;dm=0636;dt=Init;na=ARABIC LETTER DAD INITIAL FORM;NFKC_CF=0636;NFKC_SCF=0636
+cp;FEC0;dm=0636;dt=Med;na=ARABIC LETTER DAD MEDIAL FORM;NFKC_CF=0636;NFKC_SCF=0636
+cp;FEC1;dm=0637;na=ARABIC LETTER TAH ISOLATED FORM;NFKC_CF=0637;NFKC_SCF=0637
+cp;FEC2;dm=0637;dt=Fin;na=ARABIC LETTER TAH FINAL FORM;NFKC_CF=0637;NFKC_SCF=0637
+cp;FEC3;dm=0637;dt=Init;na=ARABIC LETTER TAH INITIAL FORM;NFKC_CF=0637;NFKC_SCF=0637
+cp;FEC4;dm=0637;dt=Med;na=ARABIC LETTER TAH MEDIAL FORM;NFKC_CF=0637;NFKC_SCF=0637
+cp;FEC5;dm=0638;na=ARABIC LETTER ZAH ISOLATED FORM;NFKC_CF=0638;NFKC_SCF=0638
+cp;FEC6;dm=0638;dt=Fin;na=ARABIC LETTER ZAH FINAL FORM;NFKC_CF=0638;NFKC_SCF=0638
+cp;FEC7;dm=0638;dt=Init;na=ARABIC LETTER ZAH INITIAL FORM;NFKC_CF=0638;NFKC_SCF=0638
+cp;FEC8;dm=0638;dt=Med;na=ARABIC LETTER ZAH MEDIAL FORM;NFKC_CF=0638;NFKC_SCF=0638
+cp;FEC9;dm=0639;na=ARABIC LETTER AIN ISOLATED FORM;NFKC_CF=0639;NFKC_SCF=0639
+cp;FECA;dm=0639;dt=Fin;na=ARABIC LETTER AIN FINAL FORM;NFKC_CF=0639;NFKC_SCF=0639
+cp;FECB;dm=0639;dt=Init;na=ARABIC LETTER AIN INITIAL FORM;NFKC_CF=0639;NFKC_SCF=0639
+cp;FECC;dm=0639;dt=Med;na=ARABIC LETTER AIN MEDIAL FORM;NFKC_CF=0639;NFKC_SCF=0639
+cp;FECD;dm=063A;na=ARABIC LETTER GHAIN ISOLATED FORM;NFKC_CF=063A;NFKC_SCF=063A
+cp;FECE;dm=063A;dt=Fin;na=ARABIC LETTER GHAIN FINAL FORM;NFKC_CF=063A;NFKC_SCF=063A
+cp;FECF;dm=063A;dt=Init;na=ARABIC LETTER GHAIN INITIAL FORM;NFKC_CF=063A;NFKC_SCF=063A
+cp;FED0;dm=063A;dt=Med;na=ARABIC LETTER GHAIN MEDIAL FORM;NFKC_CF=063A;NFKC_SCF=063A
+cp;FED1;dm=0641;na=ARABIC LETTER FEH ISOLATED FORM;NFKC_CF=0641;NFKC_SCF=0641
+cp;FED2;dm=0641;dt=Fin;na=ARABIC LETTER FEH FINAL FORM;NFKC_CF=0641;NFKC_SCF=0641
+cp;FED3;dm=0641;dt=Init;na=ARABIC LETTER FEH INITIAL FORM;NFKC_CF=0641;NFKC_SCF=0641
+cp;FED4;dm=0641;dt=Med;na=ARABIC LETTER FEH MEDIAL FORM;NFKC_CF=0641;NFKC_SCF=0641
+cp;FED5;dm=0642;na=ARABIC LETTER QAF ISOLATED FORM;NFKC_CF=0642;NFKC_SCF=0642
+cp;FED6;dm=0642;dt=Fin;na=ARABIC LETTER QAF FINAL FORM;NFKC_CF=0642;NFKC_SCF=0642
+cp;FED7;dm=0642;dt=Init;na=ARABIC LETTER QAF INITIAL FORM;NFKC_CF=0642;NFKC_SCF=0642
+cp;FED8;dm=0642;dt=Med;na=ARABIC LETTER QAF MEDIAL FORM;NFKC_CF=0642;NFKC_SCF=0642
+cp;FED9;dm=0643;na=ARABIC LETTER KAF ISOLATED FORM;NFKC_CF=0643;NFKC_SCF=0643
+cp;FEDA;dm=0643;dt=Fin;na=ARABIC LETTER KAF FINAL FORM;NFKC_CF=0643;NFKC_SCF=0643
+cp;FEDB;dm=0643;dt=Init;na=ARABIC LETTER KAF INITIAL FORM;NFKC_CF=0643;NFKC_SCF=0643
+cp;FEDC;dm=0643;dt=Med;na=ARABIC LETTER KAF MEDIAL FORM;NFKC_CF=0643;NFKC_SCF=0643
+cp;FEDD;dm=0644;na=ARABIC LETTER LAM ISOLATED FORM;NFKC_CF=0644;NFKC_SCF=0644
+cp;FEDE;dm=0644;dt=Fin;na=ARABIC LETTER LAM FINAL FORM;NFKC_CF=0644;NFKC_SCF=0644
+cp;FEDF;dm=0644;dt=Init;na=ARABIC LETTER LAM INITIAL FORM;NFKC_CF=0644;NFKC_SCF=0644
+cp;FEE0;dm=0644;dt=Med;na=ARABIC LETTER LAM MEDIAL FORM;NFKC_CF=0644;NFKC_SCF=0644
+cp;FEE1;dm=0645;na=ARABIC LETTER MEEM ISOLATED FORM;NFKC_CF=0645;NFKC_SCF=0645
+cp;FEE2;dm=0645;dt=Fin;na=ARABIC LETTER MEEM FINAL FORM;NFKC_CF=0645;NFKC_SCF=0645
+cp;FEE3;dm=0645;dt=Init;na=ARABIC LETTER MEEM INITIAL FORM;NFKC_CF=0645;NFKC_SCF=0645
+cp;FEE4;dm=0645;dt=Med;na=ARABIC LETTER MEEM MEDIAL FORM;NFKC_CF=0645;NFKC_SCF=0645
+cp;FEE5;dm=0646;na=ARABIC LETTER NOON ISOLATED FORM;NFKC_CF=0646;NFKC_SCF=0646
+cp;FEE6;dm=0646;dt=Fin;na=ARABIC LETTER NOON FINAL FORM;NFKC_CF=0646;NFKC_SCF=0646
+cp;FEE7;dm=0646;dt=Init;na=ARABIC LETTER NOON INITIAL FORM;NFKC_CF=0646;NFKC_SCF=0646
+cp;FEE8;dm=0646;dt=Med;na=ARABIC LETTER NOON MEDIAL FORM;NFKC_CF=0646;NFKC_SCF=0646
+cp;FEE9;dm=0647;na=ARABIC LETTER HEH ISOLATED FORM;NFKC_CF=0647;NFKC_SCF=0647
+cp;FEEA;dm=0647;dt=Fin;na=ARABIC LETTER HEH FINAL FORM;NFKC_CF=0647;NFKC_SCF=0647
+cp;FEEB;dm=0647;dt=Init;na=ARABIC LETTER HEH INITIAL FORM;NFKC_CF=0647;NFKC_SCF=0647
+cp;FEEC;dm=0647;dt=Med;na=ARABIC LETTER HEH MEDIAL FORM;NFKC_CF=0647;NFKC_SCF=0647
+cp;FEED;dm=0648;na=ARABIC LETTER WAW ISOLATED FORM;NFKC_CF=0648;NFKC_SCF=0648
+cp;FEEE;dm=0648;dt=Fin;na=ARABIC LETTER WAW FINAL FORM;NFKC_CF=0648;NFKC_SCF=0648
+cp;FEEF;dm=0649;na=ARABIC LETTER ALEF MAKSURA ISOLATED FORM;NFKC_CF=0649;NFKC_SCF=0649
+cp;FEF0;dm=0649;dt=Fin;na=ARABIC LETTER ALEF MAKSURA FINAL FORM;NFKC_CF=0649;NFKC_SCF=0649
+cp;FEF1;dm=064A;na=ARABIC LETTER YEH ISOLATED FORM;NFKC_CF=064A;NFKC_SCF=064A
+cp;FEF2;dm=064A;dt=Fin;na=ARABIC LETTER YEH FINAL FORM;NFKC_CF=064A;NFKC_SCF=064A
+cp;FEF3;dm=064A;dt=Init;na=ARABIC LETTER YEH INITIAL FORM;NFKC_CF=064A;NFKC_SCF=064A
+cp;FEF4;dm=064A;dt=Med;na=ARABIC LETTER YEH MEDIAL FORM;NFKC_CF=064A;NFKC_SCF=064A
+cp;FEF5;dm=0644 0622;na=ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM;NFKC_CF=0644 0622;NFKC_SCF=0644 0622
+cp;FEF6;dm=0644 0622;dt=Fin;na=ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM;NFKC_CF=0644 0622;NFKC_SCF=0644 0622
+cp;FEF7;dm=0644 0623;na=ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM;NFKC_CF=0644 0623;NFKC_SCF=0644 0623
+cp;FEF8;dm=0644 0623;dt=Fin;na=ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM;NFKC_CF=0644 0623;NFKC_SCF=0644 0623
+cp;FEF9;dm=0644 0625;na=ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM;NFKC_CF=0644 0625;NFKC_SCF=0644 0625
+cp;FEFA;dm=0644 0625;dt=Fin;na=ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM;NFKC_CF=0644 0625;NFKC_SCF=0644 0625
+cp;FEFB;dm=0644 0627;na=ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM;NFKC_CF=0644 0627;NFKC_SCF=0644 0627
+cp;FEFC;dm=0644 0627;dt=Fin;na=ARABIC LIGATURE LAM WITH ALEF FINAL FORM;NFKC_CF=0644 0627;NFKC_SCF=0644 0627
unassigned;FEFD..FEFE;bc=AL
# Special
-cp;FEFF;-Alpha;bc=BN;CI;DI;dt=None;gc=Cf;GCB=CN;-Gr_Base;-IDC;-IDS;jt=T;lb=WJ;na=ZERO WIDTH NO-BREAK SPACE;Name_Alias=alternate=BYTE ORDER MARK,abbreviation=BOM,abbreviation=ZWNBSP;NFKC_CF=;NFKC_QC=Y;NFKD_QC=Y;SB=FO;sc=Zyyy;WB=FO;-XIDC;-XIDS
+cp;FEFF;-Alpha;bc=BN;CI;DI;dt=None;gc=Cf;GCB=CN;-Gr_Base;-IDC;-IDS;jt=T;lb=WJ;na=ZERO WIDTH NO-BREAK SPACE;Name_Alias=alternate=BYTE ORDER MARK,abbreviation=BOM,abbreviation=ZWNBSP;NFKC_CF=;NFKC_QC=Y;NFKC_SCF=;NFKD_QC=Y;SB=FO;sc=Zyyy;WB=FO;-XIDC;-XIDS
-block;FF00..FFEF;age=1.1;Alpha;blk=Half_And_Full_Forms;CWKCF;dt=Nar;ea=H;gc=Lo;Gr_Base;IDC;IDS;lb=ID;NFKC_QC=N;NFKD_QC=N;SB=LE;sc=Zyyy;WB=LE;XIDC;XIDS
+block;FF00..FFEF;age=1.1;Alpha;blk=Half_And_Full_Forms;CWKCF;dt=Nar;ea=H;gc=Lo;Gr_Base;IDC;IDS;lb=ID;NFKC_QC=N;NFKC_SCF=0061;NFKD_QC=N;SB=LE;sc=Zyyy;WB=LE;XIDC;XIDS
# FF00..FFEF Halfwidth and Fullwidth Forms
unassigned;FF00
# Fullwidth ASCII variants
-cp;FF01;-Alpha;bc=ON;dm=0021;dt=Wide;ea=F;gc=Po;-IDC;-IDS;lb=EX;na=FULLWIDTH EXCLAMATION MARK;NFKC_CF=0021;SB=ST;STerm;Term;vo=Tu;WB=XX;-XIDC;-XIDS
-cp;FF02;-Alpha;bc=ON;dm=0022;dt=Wide;ea=F;gc=Po;-IDC;-IDS;na=FULLWIDTH QUOTATION MARK;NFKC_CF=0022;QMark;SB=XX;vo=U;WB=XX;-XIDC;-XIDS
-cp;FF03;-Alpha;bc=ET;dm=0023;dt=Wide;ea=F;gc=Po;-IDC;-IDS;na=FULLWIDTH NUMBER SIGN;NFKC_CF=0023;SB=XX;vo=U;WB=XX;-XIDC;-XIDS
-cp;FF04;-Alpha;bc=ET;dm=0024;dt=Wide;ea=F;gc=Sc;-IDC;-IDS;lb=PR;na=FULLWIDTH DOLLAR SIGN;NFKC_CF=0024;SB=XX;vo=U;WB=XX;-XIDC;-XIDS
-cp;FF05;-Alpha;bc=ET;dm=0025;dt=Wide;ea=F;gc=Po;-IDC;-IDS;lb=PO;na=FULLWIDTH PERCENT SIGN;NFKC_CF=0025;SB=XX;vo=U;WB=XX;-XIDC;-XIDS
-cp;FF06;-Alpha;bc=ON;dm=0026;dt=Wide;ea=F;gc=Po;-IDC;-IDS;na=FULLWIDTH AMPERSAND;NFKC_CF=0026;SB=XX;vo=U;WB=XX;-XIDC;-XIDS
-cp;FF07;-Alpha;bc=ON;CI;dm=0027;dt=Wide;ea=F;gc=Po;-IDC;-IDS;na=FULLWIDTH APOSTROPHE;NFKC_CF=0027;QMark;SB=XX;vo=U;WB=MB;-XIDC;-XIDS
-cp;FF08;-Alpha;bc=ON;Bidi_M;bmg=FF09;bpb=FF09;bpt=o;dm=0028;dt=Wide;ea=F;gc=Ps;-IDC;-IDS;lb=OP;na=FULLWIDTH LEFT PARENTHESIS;NFKC_CF=0028;SB=CL;vo=Tr;WB=XX;-XIDC;-XIDS
-cp;FF09;-Alpha;bc=ON;Bidi_M;bmg=FF08;bpb=FF08;bpt=c;dm=0029;dt=Wide;ea=F;gc=Pe;-IDC;-IDS;lb=CL;na=FULLWIDTH RIGHT PARENTHESIS;NFKC_CF=0029;SB=CL;vo=Tr;WB=XX;-XIDC;-XIDS
-cp;FF0A;-Alpha;bc=ON;dm=002A;dt=Wide;ea=F;gc=Po;-IDC;-IDS;na=FULLWIDTH ASTERISK;NFKC_CF=002A;SB=XX;vo=U;WB=XX;-XIDC;-XIDS
-cp;FF0B;-Alpha;bc=ES;dm=002B;dt=Wide;ea=F;gc=Sm;-IDC;-IDS;Math;na=FULLWIDTH PLUS SIGN;NFKC_CF=002B;SB=XX;vo=U;WB=XX;-XIDC;-XIDS
-cp;FF0C;-Alpha;bc=CS;dm=002C;dt=Wide;ea=F;gc=Po;-IDC;-IDS;lb=CL;na=FULLWIDTH COMMA;NFKC_CF=002C;SB=SC;Term;vo=Tu;WB=MN;-XIDC;-XIDS
-cp;FF0D;-Alpha;bc=ES;Dash;dm=002D;dt=Wide;ea=F;gc=Pd;Hyphen;-IDC;-IDS;na=FULLWIDTH HYPHEN-MINUS;NFKC_CF=002D;SB=SC;WB=XX;-XIDC;-XIDS
-cp;FF0E;-Alpha;bc=CS;CI;dm=002E;dt=Wide;ea=F;gc=Po;-IDC;-IDS;lb=CL;na=FULLWIDTH FULL STOP;NFKC_CF=002E;SB=AT;STerm;Term;vo=Tu;WB=MB;-XIDC;-XIDS
-cp;FF0F;-Alpha;bc=CS;dm=002F;dt=Wide;ea=F;gc=Po;-IDC;-IDS;na=FULLWIDTH SOLIDUS;NFKC_CF=002F;SB=XX;vo=U;WB=XX;-XIDC;-XIDS
-cp;FF10;-Alpha;bc=EN;dm=0030;dt=Wide;ea=F;gc=Nd;Hex;-IDS;na=FULLWIDTH DIGIT ZERO;NFKC_CF=0030;nt=De;nv=0;SB=NU;vo=U;WB=NU;-XIDS
-cp;FF11;-Alpha;bc=EN;dm=0031;dt=Wide;ea=F;gc=Nd;Hex;-IDS;na=FULLWIDTH DIGIT ONE;NFKC_CF=0031;nt=De;nv=1;SB=NU;vo=U;WB=NU;-XIDS
-cp;FF12;-Alpha;bc=EN;dm=0032;dt=Wide;ea=F;gc=Nd;Hex;-IDS;na=FULLWIDTH DIGIT TWO;NFKC_CF=0032;nt=De;nv=2;SB=NU;vo=U;WB=NU;-XIDS
-cp;FF13;-Alpha;bc=EN;dm=0033;dt=Wide;ea=F;gc=Nd;Hex;-IDS;na=FULLWIDTH DIGIT THREE;NFKC_CF=0033;nt=De;nv=3;SB=NU;vo=U;WB=NU;-XIDS
-cp;FF14;-Alpha;bc=EN;dm=0034;dt=Wide;ea=F;gc=Nd;Hex;-IDS;na=FULLWIDTH DIGIT FOUR;NFKC_CF=0034;nt=De;nv=4;SB=NU;vo=U;WB=NU;-XIDS
-cp;FF15;-Alpha;bc=EN;dm=0035;dt=Wide;ea=F;gc=Nd;Hex;-IDS;na=FULLWIDTH DIGIT FIVE;NFKC_CF=0035;nt=De;nv=5;SB=NU;vo=U;WB=NU;-XIDS
-cp;FF16;-Alpha;bc=EN;dm=0036;dt=Wide;ea=F;gc=Nd;Hex;-IDS;na=FULLWIDTH DIGIT SIX;NFKC_CF=0036;nt=De;nv=6;SB=NU;vo=U;WB=NU;-XIDS
-cp;FF17;-Alpha;bc=EN;dm=0037;dt=Wide;ea=F;gc=Nd;Hex;-IDS;na=FULLWIDTH DIGIT SEVEN;NFKC_CF=0037;nt=De;nv=7;SB=NU;vo=U;WB=NU;-XIDS
-cp;FF18;-Alpha;bc=EN;dm=0038;dt=Wide;ea=F;gc=Nd;Hex;-IDS;na=FULLWIDTH DIGIT EIGHT;NFKC_CF=0038;nt=De;nv=8;SB=NU;vo=U;WB=NU;-XIDS
-cp;FF19;-Alpha;bc=EN;dm=0039;dt=Wide;ea=F;gc=Nd;Hex;-IDS;na=FULLWIDTH DIGIT NINE;NFKC_CF=0039;nt=De;nv=9;SB=NU;vo=U;WB=NU;-XIDS
-cp;FF1A;-Alpha;bc=CS;CI;dm=003A;dt=Wide;ea=F;gc=Po;-IDC;-IDS;lb=NS;na=FULLWIDTH COLON;NFKC_CF=003A;SB=SC;Term;vo=Tr;WB=ML;-XIDC;-XIDS
-cp;FF1B;-Alpha;bc=ON;dm=003B;dt=Wide;ea=F;gc=Po;-IDC;-IDS;lb=NS;na=FULLWIDTH SEMICOLON;NFKC_CF=003B;SB=XX;Term;vo=Tr;WB=MN;-XIDC;-XIDS
-cp;FF1C;-Alpha;bc=ON;Bidi_M;bmg=FF1E;dm=003C;dt=Wide;ea=F;gc=Sm;-IDC;-IDS;Math;na=FULLWIDTH LESS-THAN SIGN;NFKC_CF=003C;SB=XX;WB=XX;-XIDC;-XIDS
-cp;FF1D;-Alpha;bc=ON;dm=003D;dt=Wide;ea=F;gc=Sm;-IDC;-IDS;Math;na=FULLWIDTH EQUALS SIGN;NFKC_CF=003D;SB=XX;WB=XX;-XIDC;-XIDS
-cp;FF1E;-Alpha;bc=ON;Bidi_M;bmg=FF1C;dm=003E;dt=Wide;ea=F;gc=Sm;-IDC;-IDS;Math;na=FULLWIDTH GREATER-THAN SIGN;NFKC_CF=003E;SB=XX;WB=XX;-XIDC;-XIDS
-cp;FF1F;-Alpha;bc=ON;dm=003F;dt=Wide;ea=F;gc=Po;-IDC;-IDS;lb=EX;na=FULLWIDTH QUESTION MARK;NFKC_CF=003F;SB=ST;STerm;Term;vo=Tu;WB=XX;-XIDC;-XIDS
-cp;FF20;-Alpha;bc=ON;dm=0040;dt=Wide;ea=F;gc=Po;-IDC;-IDS;na=FULLWIDTH COMMERCIAL AT;NFKC_CF=0040;SB=XX;vo=U;WB=XX;-XIDC;-XIDS
+cp;FF01;-Alpha;bc=ON;dm=0021;dt=Wide;ea=F;gc=Po;-IDC;-IDS;lb=EX;na=FULLWIDTH EXCLAMATION MARK;NFKC_CF=0021;NFKC_SCF=0021;SB=ST;STerm;Term;vo=Tu;WB=XX;-XIDC;-XIDS
+cp;FF02;-Alpha;bc=ON;dm=0022;dt=Wide;ea=F;gc=Po;-IDC;-IDS;na=FULLWIDTH QUOTATION MARK;NFKC_CF=0022;NFKC_SCF=0022;QMark;SB=XX;vo=U;WB=XX;-XIDC;-XIDS
+cp;FF03;-Alpha;bc=ET;dm=0023;dt=Wide;ea=F;gc=Po;-IDC;-IDS;na=FULLWIDTH NUMBER SIGN;NFKC_CF=0023;NFKC_SCF=0023;SB=XX;vo=U;WB=XX;-XIDC;-XIDS
+cp;FF04;-Alpha;bc=ET;dm=0024;dt=Wide;ea=F;gc=Sc;-IDC;-IDS;lb=PR;na=FULLWIDTH DOLLAR SIGN;NFKC_CF=0024;NFKC_SCF=0024;SB=XX;vo=U;WB=XX;-XIDC;-XIDS
+cp;FF05;-Alpha;bc=ET;dm=0025;dt=Wide;ea=F;gc=Po;-IDC;-IDS;lb=PO;na=FULLWIDTH PERCENT SIGN;NFKC_CF=0025;NFKC_SCF=0025;SB=XX;vo=U;WB=XX;-XIDC;-XIDS
+cp;FF06;-Alpha;bc=ON;dm=0026;dt=Wide;ea=F;gc=Po;-IDC;-IDS;na=FULLWIDTH AMPERSAND;NFKC_CF=0026;NFKC_SCF=0026;SB=XX;vo=U;WB=XX;-XIDC;-XIDS
+cp;FF07;-Alpha;bc=ON;CI;dm=0027;dt=Wide;ea=F;gc=Po;-IDC;-IDS;na=FULLWIDTH APOSTROPHE;NFKC_CF=0027;NFKC_SCF=0027;QMark;SB=XX;vo=U;WB=MB;-XIDC;-XIDS
+cp;FF08;-Alpha;bc=ON;Bidi_M;bmg=FF09;bpb=FF09;bpt=o;dm=0028;dt=Wide;ea=F;gc=Ps;-IDC;-IDS;lb=OP;na=FULLWIDTH LEFT PARENTHESIS;NFKC_CF=0028;NFKC_SCF=0028;SB=CL;vo=Tr;WB=XX;-XIDC;-XIDS
+cp;FF09;-Alpha;bc=ON;Bidi_M;bmg=FF08;bpb=FF08;bpt=c;dm=0029;dt=Wide;ea=F;gc=Pe;-IDC;-IDS;lb=CL;na=FULLWIDTH RIGHT PARENTHESIS;NFKC_CF=0029;NFKC_SCF=0029;SB=CL;vo=Tr;WB=XX;-XIDC;-XIDS
+cp;FF0A;-Alpha;bc=ON;dm=002A;dt=Wide;ea=F;gc=Po;-IDC;-IDS;na=FULLWIDTH ASTERISK;NFKC_CF=002A;NFKC_SCF=002A;SB=XX;vo=U;WB=XX;-XIDC;-XIDS
+cp;FF0B;-Alpha;bc=ES;dm=002B;dt=Wide;ea=F;gc=Sm;-IDC;-IDS;Math;na=FULLWIDTH PLUS SIGN;NFKC_CF=002B;NFKC_SCF=002B;SB=XX;vo=U;WB=XX;-XIDC;-XIDS
+cp;FF0C;-Alpha;bc=CS;dm=002C;dt=Wide;ea=F;gc=Po;-IDC;-IDS;lb=CL;na=FULLWIDTH COMMA;NFKC_CF=002C;NFKC_SCF=002C;SB=SC;Term;vo=Tu;WB=MN;-XIDC;-XIDS
+cp;FF0D;-Alpha;bc=ES;Dash;dm=002D;dt=Wide;ea=F;gc=Pd;Hyphen;-IDC;-IDS;na=FULLWIDTH HYPHEN-MINUS;NFKC_CF=002D;NFKC_SCF=002D;SB=SC;WB=XX;-XIDC;-XIDS
+cp;FF0E;-Alpha;bc=CS;CI;dm=002E;dt=Wide;ea=F;gc=Po;-IDC;-IDS;lb=CL;na=FULLWIDTH FULL STOP;NFKC_CF=002E;NFKC_SCF=002E;SB=AT;STerm;Term;vo=Tu;WB=MB;-XIDC;-XIDS
+cp;FF0F;-Alpha;bc=CS;dm=002F;dt=Wide;ea=F;gc=Po;-IDC;-IDS;na=FULLWIDTH SOLIDUS;NFKC_CF=002F;NFKC_SCF=002F;SB=XX;vo=U;WB=XX;-XIDC;-XIDS
+cp;FF10;-Alpha;bc=EN;dm=0030;dt=Wide;ea=F;gc=Nd;Hex;-IDS;na=FULLWIDTH DIGIT ZERO;NFKC_CF=0030;NFKC_SCF=0030;nt=De;nv=0;SB=NU;vo=U;WB=NU;-XIDS
+cp;FF11;-Alpha;bc=EN;dm=0031;dt=Wide;ea=F;gc=Nd;Hex;-IDS;na=FULLWIDTH DIGIT ONE;NFKC_CF=0031;NFKC_SCF=0031;nt=De;nv=1;SB=NU;vo=U;WB=NU;-XIDS
+cp;FF12;-Alpha;bc=EN;dm=0032;dt=Wide;ea=F;gc=Nd;Hex;-IDS;na=FULLWIDTH DIGIT TWO;NFKC_CF=0032;NFKC_SCF=0032;nt=De;nv=2;SB=NU;vo=U;WB=NU;-XIDS
+cp;FF13;-Alpha;bc=EN;dm=0033;dt=Wide;ea=F;gc=Nd;Hex;-IDS;na=FULLWIDTH DIGIT THREE;NFKC_CF=0033;NFKC_SCF=0033;nt=De;nv=3;SB=NU;vo=U;WB=NU;-XIDS
+cp;FF14;-Alpha;bc=EN;dm=0034;dt=Wide;ea=F;gc=Nd;Hex;-IDS;na=FULLWIDTH DIGIT FOUR;NFKC_CF=0034;NFKC_SCF=0034;nt=De;nv=4;SB=NU;vo=U;WB=NU;-XIDS
+cp;FF15;-Alpha;bc=EN;dm=0035;dt=Wide;ea=F;gc=Nd;Hex;-IDS;na=FULLWIDTH DIGIT FIVE;NFKC_CF=0035;NFKC_SCF=0035;nt=De;nv=5;SB=NU;vo=U;WB=NU;-XIDS
+cp;FF16;-Alpha;bc=EN;dm=0036;dt=Wide;ea=F;gc=Nd;Hex;-IDS;na=FULLWIDTH DIGIT SIX;NFKC_CF=0036;NFKC_SCF=0036;nt=De;nv=6;SB=NU;vo=U;WB=NU;-XIDS
+cp;FF17;-Alpha;bc=EN;dm=0037;dt=Wide;ea=F;gc=Nd;Hex;-IDS;na=FULLWIDTH DIGIT SEVEN;NFKC_CF=0037;NFKC_SCF=0037;nt=De;nv=7;SB=NU;vo=U;WB=NU;-XIDS
+cp;FF18;-Alpha;bc=EN;dm=0038;dt=Wide;ea=F;gc=Nd;Hex;-IDS;na=FULLWIDTH DIGIT EIGHT;NFKC_CF=0038;NFKC_SCF=0038;nt=De;nv=8;SB=NU;vo=U;WB=NU;-XIDS
+cp;FF19;-Alpha;bc=EN;dm=0039;dt=Wide;ea=F;gc=Nd;Hex;-IDS;na=FULLWIDTH DIGIT NINE;NFKC_CF=0039;NFKC_SCF=0039;nt=De;nv=9;SB=NU;vo=U;WB=NU;-XIDS
+cp;FF1A;-Alpha;bc=CS;CI;dm=003A;dt=Wide;ea=F;gc=Po;-IDC;-IDS;lb=NS;na=FULLWIDTH COLON;NFKC_CF=003A;NFKC_SCF=003A;SB=SC;Term;vo=Tr;WB=ML;-XIDC;-XIDS
+cp;FF1B;-Alpha;bc=ON;dm=003B;dt=Wide;ea=F;gc=Po;-IDC;-IDS;lb=NS;na=FULLWIDTH SEMICOLON;NFKC_CF=003B;NFKC_SCF=003B;SB=XX;Term;vo=Tr;WB=MN;-XIDC;-XIDS
+cp;FF1C;-Alpha;bc=ON;Bidi_M;bmg=FF1E;dm=003C;dt=Wide;ea=F;gc=Sm;-IDC;-IDS;Math;na=FULLWIDTH LESS-THAN SIGN;NFKC_CF=003C;NFKC_SCF=003C;SB=XX;WB=XX;-XIDC;-XIDS
+cp;FF1D;-Alpha;bc=ON;dm=003D;dt=Wide;ea=F;gc=Sm;-IDC;-IDS;Math;na=FULLWIDTH EQUALS SIGN;NFKC_CF=003D;NFKC_SCF=003D;SB=XX;WB=XX;-XIDC;-XIDS
+cp;FF1E;-Alpha;bc=ON;Bidi_M;bmg=FF1C;dm=003E;dt=Wide;ea=F;gc=Sm;-IDC;-IDS;Math;na=FULLWIDTH GREATER-THAN SIGN;NFKC_CF=003E;NFKC_SCF=003E;SB=XX;WB=XX;-XIDC;-XIDS
+cp;FF1F;-Alpha;bc=ON;dm=003F;dt=Wide;ea=F;gc=Po;-IDC;-IDS;lb=EX;na=FULLWIDTH QUESTION MARK;NFKC_CF=003F;NFKC_SCF=003F;SB=ST;STerm;Term;vo=Tu;WB=XX;-XIDC;-XIDS
+cp;FF20;-Alpha;bc=ON;dm=0040;dt=Wide;ea=F;gc=Po;-IDC;-IDS;na=FULLWIDTH COMMERCIAL AT;NFKC_CF=0040;NFKC_SCF=0040;SB=XX;vo=U;WB=XX;-XIDC;-XIDS
cp;FF21;Cased;cf=FF41;CWCF;CWCM;CWL;dm=0041;dt=Wide;ea=F;gc=Lu;Hex;na=FULLWIDTH LATIN CAPITAL LETTER A;NFKC_CF=0061;SB=UP;sc=Latn;scf=FF41;slc=FF41;Upper;vo=U
-cp;FF22;Cased;cf=FF42;CWCF;CWCM;CWL;dm=0042;dt=Wide;ea=F;gc=Lu;Hex;na=FULLWIDTH LATIN CAPITAL LETTER B;NFKC_CF=0062;SB=UP;sc=Latn;scf=FF42;slc=FF42;Upper;vo=U
-cp;FF23;Cased;cf=FF43;CWCF;CWCM;CWL;dm=0043;dt=Wide;ea=F;gc=Lu;Hex;na=FULLWIDTH LATIN CAPITAL LETTER C;NFKC_CF=0063;SB=UP;sc=Latn;scf=FF43;slc=FF43;Upper;vo=U
-cp;FF24;Cased;cf=FF44;CWCF;CWCM;CWL;dm=0044;dt=Wide;ea=F;gc=Lu;Hex;na=FULLWIDTH LATIN CAPITAL LETTER D;NFKC_CF=0064;SB=UP;sc=Latn;scf=FF44;slc=FF44;Upper;vo=U
-cp;FF25;Cased;cf=FF45;CWCF;CWCM;CWL;dm=0045;dt=Wide;ea=F;gc=Lu;Hex;na=FULLWIDTH LATIN CAPITAL LETTER E;NFKC_CF=0065;SB=UP;sc=Latn;scf=FF45;slc=FF45;Upper;vo=U
-cp;FF26;Cased;cf=FF46;CWCF;CWCM;CWL;dm=0046;dt=Wide;ea=F;gc=Lu;Hex;na=FULLWIDTH LATIN CAPITAL LETTER F;NFKC_CF=0066;SB=UP;sc=Latn;scf=FF46;slc=FF46;Upper;vo=U
-cp;FF27;Cased;cf=FF47;CWCF;CWCM;CWL;dm=0047;dt=Wide;ea=F;gc=Lu;na=FULLWIDTH LATIN CAPITAL LETTER G;NFKC_CF=0067;SB=UP;sc=Latn;scf=FF47;slc=FF47;Upper;vo=U
-cp;FF28;Cased;cf=FF48;CWCF;CWCM;CWL;dm=0048;dt=Wide;ea=F;gc=Lu;na=FULLWIDTH LATIN CAPITAL LETTER H;NFKC_CF=0068;SB=UP;sc=Latn;scf=FF48;slc=FF48;Upper;vo=U
-cp;FF29;Cased;cf=FF49;CWCF;CWCM;CWL;dm=0049;dt=Wide;ea=F;gc=Lu;na=FULLWIDTH LATIN CAPITAL LETTER I;NFKC_CF=0069;SB=UP;sc=Latn;scf=FF49;slc=FF49;Upper;vo=U
-cp;FF2A;Cased;cf=FF4A;CWCF;CWCM;CWL;dm=004A;dt=Wide;ea=F;gc=Lu;na=FULLWIDTH LATIN CAPITAL LETTER J;NFKC_CF=006A;SB=UP;sc=Latn;scf=FF4A;slc=FF4A;Upper;vo=U
-cp;FF2B;Cased;cf=FF4B;CWCF;CWCM;CWL;dm=004B;dt=Wide;ea=F;gc=Lu;na=FULLWIDTH LATIN CAPITAL LETTER K;NFKC_CF=006B;SB=UP;sc=Latn;scf=FF4B;slc=FF4B;Upper;vo=U
-cp;FF2C;Cased;cf=FF4C;CWCF;CWCM;CWL;dm=004C;dt=Wide;ea=F;gc=Lu;na=FULLWIDTH LATIN CAPITAL LETTER L;NFKC_CF=006C;SB=UP;sc=Latn;scf=FF4C;slc=FF4C;Upper;vo=U
-cp;FF2D;Cased;cf=FF4D;CWCF;CWCM;CWL;dm=004D;dt=Wide;ea=F;gc=Lu;na=FULLWIDTH LATIN CAPITAL LETTER M;NFKC_CF=006D;SB=UP;sc=Latn;scf=FF4D;slc=FF4D;Upper;vo=U
-cp;FF2E;Cased;cf=FF4E;CWCF;CWCM;CWL;dm=004E;dt=Wide;ea=F;gc=Lu;na=FULLWIDTH LATIN CAPITAL LETTER N;NFKC_CF=006E;SB=UP;sc=Latn;scf=FF4E;slc=FF4E;Upper;vo=U
-cp;FF2F;Cased;cf=FF4F;CWCF;CWCM;CWL;dm=004F;dt=Wide;ea=F;gc=Lu;na=FULLWIDTH LATIN CAPITAL LETTER O;NFKC_CF=006F;SB=UP;sc=Latn;scf=FF4F;slc=FF4F;Upper;vo=U
-cp;FF30;Cased;cf=FF50;CWCF;CWCM;CWL;dm=0050;dt=Wide;ea=F;gc=Lu;na=FULLWIDTH LATIN CAPITAL LETTER P;NFKC_CF=0070;SB=UP;sc=Latn;scf=FF50;slc=FF50;Upper;vo=U
-cp;FF31;Cased;cf=FF51;CWCF;CWCM;CWL;dm=0051;dt=Wide;ea=F;gc=Lu;na=FULLWIDTH LATIN CAPITAL LETTER Q;NFKC_CF=0071;SB=UP;sc=Latn;scf=FF51;slc=FF51;Upper;vo=U
-cp;FF32;Cased;cf=FF52;CWCF;CWCM;CWL;dm=0052;dt=Wide;ea=F;gc=Lu;na=FULLWIDTH LATIN CAPITAL LETTER R;NFKC_CF=0072;SB=UP;sc=Latn;scf=FF52;slc=FF52;Upper;vo=U
-cp;FF33;Cased;cf=FF53;CWCF;CWCM;CWL;dm=0053;dt=Wide;ea=F;gc=Lu;na=FULLWIDTH LATIN CAPITAL LETTER S;NFKC_CF=0073;SB=UP;sc=Latn;scf=FF53;slc=FF53;Upper;vo=U
-cp;FF34;Cased;cf=FF54;CWCF;CWCM;CWL;dm=0054;dt=Wide;ea=F;gc=Lu;na=FULLWIDTH LATIN CAPITAL LETTER T;NFKC_CF=0074;SB=UP;sc=Latn;scf=FF54;slc=FF54;Upper;vo=U
-cp;FF35;Cased;cf=FF55;CWCF;CWCM;CWL;dm=0055;dt=Wide;ea=F;gc=Lu;na=FULLWIDTH LATIN CAPITAL LETTER U;NFKC_CF=0075;SB=UP;sc=Latn;scf=FF55;slc=FF55;Upper;vo=U
-cp;FF36;Cased;cf=FF56;CWCF;CWCM;CWL;dm=0056;dt=Wide;ea=F;gc=Lu;na=FULLWIDTH LATIN CAPITAL LETTER V;NFKC_CF=0076;SB=UP;sc=Latn;scf=FF56;slc=FF56;Upper;vo=U
-cp;FF37;Cased;cf=FF57;CWCF;CWCM;CWL;dm=0057;dt=Wide;ea=F;gc=Lu;na=FULLWIDTH LATIN CAPITAL LETTER W;NFKC_CF=0077;SB=UP;sc=Latn;scf=FF57;slc=FF57;Upper;vo=U
-cp;FF38;Cased;cf=FF58;CWCF;CWCM;CWL;dm=0058;dt=Wide;ea=F;gc=Lu;na=FULLWIDTH LATIN CAPITAL LETTER X;NFKC_CF=0078;SB=UP;sc=Latn;scf=FF58;slc=FF58;Upper;vo=U
-cp;FF39;Cased;cf=FF59;CWCF;CWCM;CWL;dm=0059;dt=Wide;ea=F;gc=Lu;na=FULLWIDTH LATIN CAPITAL LETTER Y;NFKC_CF=0079;SB=UP;sc=Latn;scf=FF59;slc=FF59;Upper;vo=U
-cp;FF3A;Cased;cf=FF5A;CWCF;CWCM;CWL;dm=005A;dt=Wide;ea=F;gc=Lu;na=FULLWIDTH LATIN CAPITAL LETTER Z;NFKC_CF=007A;SB=UP;sc=Latn;scf=FF5A;slc=FF5A;Upper;vo=U
-cp;FF3B;-Alpha;bc=ON;Bidi_M;bmg=FF3D;bpb=FF3D;bpt=o;dm=005B;dt=Wide;ea=F;gc=Ps;-IDC;-IDS;lb=OP;na=FULLWIDTH LEFT SQUARE BRACKET;NFKC_CF=005B;SB=CL;vo=Tr;WB=XX;-XIDC;-XIDS
-cp;FF3C;-Alpha;bc=ON;dm=005C;dt=Wide;ea=F;gc=Po;-IDC;-IDS;Math;na=FULLWIDTH REVERSE SOLIDUS;NFKC_CF=005C;SB=XX;vo=U;WB=XX;-XIDC;-XIDS
-cp;FF3D;-Alpha;bc=ON;Bidi_M;bmg=FF3B;bpb=FF3B;bpt=c;dm=005D;dt=Wide;ea=F;gc=Pe;-IDC;-IDS;lb=CL;na=FULLWIDTH RIGHT SQUARE BRACKET;NFKC_CF=005D;SB=CL;vo=Tr;WB=XX;-XIDC;-XIDS
-cp;FF3E;-Alpha;bc=ON;CI;Dia;dm=005E;dt=Wide;ea=F;gc=Sk;-IDC;-IDS;Math;na=FULLWIDTH CIRCUMFLEX ACCENT;NFKC_CF=005E;SB=XX;vo=U;WB=XX;-XIDC;-XIDS
-cp;FF3F;-Alpha;bc=ON;dm=005F;dt=Wide;ea=F;gc=Pc;-IDS;na=FULLWIDTH LOW LINE;NFKC_CF=005F;SB=XX;vo=Tr;WB=EX;-XIDS
-cp;FF40;-Alpha;bc=ON;CI;Dia;dm=0060;dt=Wide;ea=F;gc=Sk;-IDC;-IDS;na=FULLWIDTH GRAVE ACCENT;NFKC_CF=0060;SB=XX;vo=U;WB=XX;-XIDC;-XIDS
+cp;FF22;Cased;cf=FF42;CWCF;CWCM;CWL;dm=0042;dt=Wide;ea=F;gc=Lu;Hex;na=FULLWIDTH LATIN CAPITAL LETTER B;NFKC_CF=0062;NFKC_SCF=0062;SB=UP;sc=Latn;scf=FF42;slc=FF42;Upper;vo=U
+cp;FF23;Cased;cf=FF43;CWCF;CWCM;CWL;dm=0043;dt=Wide;ea=F;gc=Lu;Hex;na=FULLWIDTH LATIN CAPITAL LETTER C;NFKC_CF=0063;NFKC_SCF=0063;SB=UP;sc=Latn;scf=FF43;slc=FF43;Upper;vo=U
+cp;FF24;Cased;cf=FF44;CWCF;CWCM;CWL;dm=0044;dt=Wide;ea=F;gc=Lu;Hex;na=FULLWIDTH LATIN CAPITAL LETTER D;NFKC_CF=0064;NFKC_SCF=0064;SB=UP;sc=Latn;scf=FF44;slc=FF44;Upper;vo=U
+cp;FF25;Cased;cf=FF45;CWCF;CWCM;CWL;dm=0045;dt=Wide;ea=F;gc=Lu;Hex;na=FULLWIDTH LATIN CAPITAL LETTER E;NFKC_CF=0065;NFKC_SCF=0065;SB=UP;sc=Latn;scf=FF45;slc=FF45;Upper;vo=U
+cp;FF26;Cased;cf=FF46;CWCF;CWCM;CWL;dm=0046;dt=Wide;ea=F;gc=Lu;Hex;na=FULLWIDTH LATIN CAPITAL LETTER F;NFKC_CF=0066;NFKC_SCF=0066;SB=UP;sc=Latn;scf=FF46;slc=FF46;Upper;vo=U
+cp;FF27;Cased;cf=FF47;CWCF;CWCM;CWL;dm=0047;dt=Wide;ea=F;gc=Lu;na=FULLWIDTH LATIN CAPITAL LETTER G;NFKC_CF=0067;NFKC_SCF=0067;SB=UP;sc=Latn;scf=FF47;slc=FF47;Upper;vo=U
+cp;FF28;Cased;cf=FF48;CWCF;CWCM;CWL;dm=0048;dt=Wide;ea=F;gc=Lu;na=FULLWIDTH LATIN CAPITAL LETTER H;NFKC_CF=0068;NFKC_SCF=0068;SB=UP;sc=Latn;scf=FF48;slc=FF48;Upper;vo=U
+cp;FF29;Cased;cf=FF49;CWCF;CWCM;CWL;dm=0049;dt=Wide;ea=F;gc=Lu;na=FULLWIDTH LATIN CAPITAL LETTER I;NFKC_CF=0069;NFKC_SCF=0069;SB=UP;sc=Latn;scf=FF49;slc=FF49;Upper;vo=U
+cp;FF2A;Cased;cf=FF4A;CWCF;CWCM;CWL;dm=004A;dt=Wide;ea=F;gc=Lu;na=FULLWIDTH LATIN CAPITAL LETTER J;NFKC_CF=006A;NFKC_SCF=006A;SB=UP;sc=Latn;scf=FF4A;slc=FF4A;Upper;vo=U
+cp;FF2B;Cased;cf=FF4B;CWCF;CWCM;CWL;dm=004B;dt=Wide;ea=F;gc=Lu;na=FULLWIDTH LATIN CAPITAL LETTER K;NFKC_CF=006B;NFKC_SCF=006B;SB=UP;sc=Latn;scf=FF4B;slc=FF4B;Upper;vo=U
+cp;FF2C;Cased;cf=FF4C;CWCF;CWCM;CWL;dm=004C;dt=Wide;ea=F;gc=Lu;na=FULLWIDTH LATIN CAPITAL LETTER L;NFKC_CF=006C;NFKC_SCF=006C;SB=UP;sc=Latn;scf=FF4C;slc=FF4C;Upper;vo=U
+cp;FF2D;Cased;cf=FF4D;CWCF;CWCM;CWL;dm=004D;dt=Wide;ea=F;gc=Lu;na=FULLWIDTH LATIN CAPITAL LETTER M;NFKC_CF=006D;NFKC_SCF=006D;SB=UP;sc=Latn;scf=FF4D;slc=FF4D;Upper;vo=U
+cp;FF2E;Cased;cf=FF4E;CWCF;CWCM;CWL;dm=004E;dt=Wide;ea=F;gc=Lu;na=FULLWIDTH LATIN CAPITAL LETTER N;NFKC_CF=006E;NFKC_SCF=006E;SB=UP;sc=Latn;scf=FF4E;slc=FF4E;Upper;vo=U
+cp;FF2F;Cased;cf=FF4F;CWCF;CWCM;CWL;dm=004F;dt=Wide;ea=F;gc=Lu;na=FULLWIDTH LATIN CAPITAL LETTER O;NFKC_CF=006F;NFKC_SCF=006F;SB=UP;sc=Latn;scf=FF4F;slc=FF4F;Upper;vo=U
+cp;FF30;Cased;cf=FF50;CWCF;CWCM;CWL;dm=0050;dt=Wide;ea=F;gc=Lu;na=FULLWIDTH LATIN CAPITAL LETTER P;NFKC_CF=0070;NFKC_SCF=0070;SB=UP;sc=Latn;scf=FF50;slc=FF50;Upper;vo=U
+cp;FF31;Cased;cf=FF51;CWCF;CWCM;CWL;dm=0051;dt=Wide;ea=F;gc=Lu;na=FULLWIDTH LATIN CAPITAL LETTER Q;NFKC_CF=0071;NFKC_SCF=0071;SB=UP;sc=Latn;scf=FF51;slc=FF51;Upper;vo=U
+cp;FF32;Cased;cf=FF52;CWCF;CWCM;CWL;dm=0052;dt=Wide;ea=F;gc=Lu;na=FULLWIDTH LATIN CAPITAL LETTER R;NFKC_CF=0072;NFKC_SCF=0072;SB=UP;sc=Latn;scf=FF52;slc=FF52;Upper;vo=U
+cp;FF33;Cased;cf=FF53;CWCF;CWCM;CWL;dm=0053;dt=Wide;ea=F;gc=Lu;na=FULLWIDTH LATIN CAPITAL LETTER S;NFKC_CF=0073;NFKC_SCF=0073;SB=UP;sc=Latn;scf=FF53;slc=FF53;Upper;vo=U
+cp;FF34;Cased;cf=FF54;CWCF;CWCM;CWL;dm=0054;dt=Wide;ea=F;gc=Lu;na=FULLWIDTH LATIN CAPITAL LETTER T;NFKC_CF=0074;NFKC_SCF=0074;SB=UP;sc=Latn;scf=FF54;slc=FF54;Upper;vo=U
+cp;FF35;Cased;cf=FF55;CWCF;CWCM;CWL;dm=0055;dt=Wide;ea=F;gc=Lu;na=FULLWIDTH LATIN CAPITAL LETTER U;NFKC_CF=0075;NFKC_SCF=0075;SB=UP;sc=Latn;scf=FF55;slc=FF55;Upper;vo=U
+cp;FF36;Cased;cf=FF56;CWCF;CWCM;CWL;dm=0056;dt=Wide;ea=F;gc=Lu;na=FULLWIDTH LATIN CAPITAL LETTER V;NFKC_CF=0076;NFKC_SCF=0076;SB=UP;sc=Latn;scf=FF56;slc=FF56;Upper;vo=U
+cp;FF37;Cased;cf=FF57;CWCF;CWCM;CWL;dm=0057;dt=Wide;ea=F;gc=Lu;na=FULLWIDTH LATIN CAPITAL LETTER W;NFKC_CF=0077;NFKC_SCF=0077;SB=UP;sc=Latn;scf=FF57;slc=FF57;Upper;vo=U
+cp;FF38;Cased;cf=FF58;CWCF;CWCM;CWL;dm=0058;dt=Wide;ea=F;gc=Lu;na=FULLWIDTH LATIN CAPITAL LETTER X;NFKC_CF=0078;NFKC_SCF=0078;SB=UP;sc=Latn;scf=FF58;slc=FF58;Upper;vo=U
+cp;FF39;Cased;cf=FF59;CWCF;CWCM;CWL;dm=0059;dt=Wide;ea=F;gc=Lu;na=FULLWIDTH LATIN CAPITAL LETTER Y;NFKC_CF=0079;NFKC_SCF=0079;SB=UP;sc=Latn;scf=FF59;slc=FF59;Upper;vo=U
+cp;FF3A;Cased;cf=FF5A;CWCF;CWCM;CWL;dm=005A;dt=Wide;ea=F;gc=Lu;na=FULLWIDTH LATIN CAPITAL LETTER Z;NFKC_CF=007A;NFKC_SCF=007A;SB=UP;sc=Latn;scf=FF5A;slc=FF5A;Upper;vo=U
+cp;FF3B;-Alpha;bc=ON;Bidi_M;bmg=FF3D;bpb=FF3D;bpt=o;dm=005B;dt=Wide;ea=F;gc=Ps;-IDC;-IDS;lb=OP;na=FULLWIDTH LEFT SQUARE BRACKET;NFKC_CF=005B;NFKC_SCF=005B;SB=CL;vo=Tr;WB=XX;-XIDC;-XIDS
+cp;FF3C;-Alpha;bc=ON;dm=005C;dt=Wide;ea=F;gc=Po;-IDC;-IDS;Math;na=FULLWIDTH REVERSE SOLIDUS;NFKC_CF=005C;NFKC_SCF=005C;SB=XX;vo=U;WB=XX;-XIDC;-XIDS
+cp;FF3D;-Alpha;bc=ON;Bidi_M;bmg=FF3B;bpb=FF3B;bpt=c;dm=005D;dt=Wide;ea=F;gc=Pe;-IDC;-IDS;lb=CL;na=FULLWIDTH RIGHT SQUARE BRACKET;NFKC_CF=005D;NFKC_SCF=005D;SB=CL;vo=Tr;WB=XX;-XIDC;-XIDS
+cp;FF3E;-Alpha;bc=ON;CI;Dia;dm=005E;dt=Wide;ea=F;gc=Sk;-IDC;-IDS;Math;na=FULLWIDTH CIRCUMFLEX ACCENT;NFKC_CF=005E;NFKC_SCF=005E;SB=XX;vo=U;WB=XX;-XIDC;-XIDS
+cp;FF3F;-Alpha;bc=ON;dm=005F;dt=Wide;ea=F;gc=Pc;-IDS;na=FULLWIDTH LOW LINE;NFKC_CF=005F;NFKC_SCF=005F;SB=XX;vo=Tr;WB=EX;-XIDS
+cp;FF40;-Alpha;bc=ON;CI;Dia;dm=0060;dt=Wide;ea=F;gc=Sk;-IDC;-IDS;na=FULLWIDTH GRAVE ACCENT;NFKC_CF=0060;NFKC_SCF=0060;SB=XX;vo=U;WB=XX;-XIDC;-XIDS
cp;FF41;Cased;CWCM;CWT;CWU;dm=0061;dt=Wide;ea=F;gc=Ll;Hex;Lower;na=FULLWIDTH LATIN SMALL LETTER A;NFKC_CF=0061;SB=LO;sc=Latn;stc=FF21;suc=FF21;vo=U
-cp;FF42;Cased;CWCM;CWT;CWU;dm=0062;dt=Wide;ea=F;gc=Ll;Hex;Lower;na=FULLWIDTH LATIN SMALL LETTER B;NFKC_CF=0062;SB=LO;sc=Latn;stc=FF22;suc=FF22;vo=U
-cp;FF43;Cased;CWCM;CWT;CWU;dm=0063;dt=Wide;ea=F;gc=Ll;Hex;Lower;na=FULLWIDTH LATIN SMALL LETTER C;NFKC_CF=0063;SB=LO;sc=Latn;stc=FF23;suc=FF23;vo=U
-cp;FF44;Cased;CWCM;CWT;CWU;dm=0064;dt=Wide;ea=F;gc=Ll;Hex;Lower;na=FULLWIDTH LATIN SMALL LETTER D;NFKC_CF=0064;SB=LO;sc=Latn;stc=FF24;suc=FF24;vo=U
-cp;FF45;Cased;CWCM;CWT;CWU;dm=0065;dt=Wide;ea=F;gc=Ll;Hex;Lower;na=FULLWIDTH LATIN SMALL LETTER E;NFKC_CF=0065;SB=LO;sc=Latn;stc=FF25;suc=FF25;vo=U
-cp;FF46;Cased;CWCM;CWT;CWU;dm=0066;dt=Wide;ea=F;gc=Ll;Hex;Lower;na=FULLWIDTH LATIN SMALL LETTER F;NFKC_CF=0066;SB=LO;sc=Latn;stc=FF26;suc=FF26;vo=U
-cp;FF47;Cased;CWCM;CWT;CWU;dm=0067;dt=Wide;ea=F;gc=Ll;Lower;na=FULLWIDTH LATIN SMALL LETTER G;NFKC_CF=0067;SB=LO;sc=Latn;stc=FF27;suc=FF27;vo=U
-cp;FF48;Cased;CWCM;CWT;CWU;dm=0068;dt=Wide;ea=F;gc=Ll;Lower;na=FULLWIDTH LATIN SMALL LETTER H;NFKC_CF=0068;SB=LO;sc=Latn;stc=FF28;suc=FF28;vo=U
-cp;FF49;Cased;CWCM;CWT;CWU;dm=0069;dt=Wide;ea=F;gc=Ll;Lower;na=FULLWIDTH LATIN SMALL LETTER I;NFKC_CF=0069;SB=LO;sc=Latn;stc=FF29;suc=FF29;vo=U
-cp;FF4A;Cased;CWCM;CWT;CWU;dm=006A;dt=Wide;ea=F;gc=Ll;Lower;na=FULLWIDTH LATIN SMALL LETTER J;NFKC_CF=006A;SB=LO;sc=Latn;stc=FF2A;suc=FF2A;vo=U
-cp;FF4B;Cased;CWCM;CWT;CWU;dm=006B;dt=Wide;ea=F;gc=Ll;Lower;na=FULLWIDTH LATIN SMALL LETTER K;NFKC_CF=006B;SB=LO;sc=Latn;stc=FF2B;suc=FF2B;vo=U
-cp;FF4C;Cased;CWCM;CWT;CWU;dm=006C;dt=Wide;ea=F;gc=Ll;Lower;na=FULLWIDTH LATIN SMALL LETTER L;NFKC_CF=006C;SB=LO;sc=Latn;stc=FF2C;suc=FF2C;vo=U
-cp;FF4D;Cased;CWCM;CWT;CWU;dm=006D;dt=Wide;ea=F;gc=Ll;Lower;na=FULLWIDTH LATIN SMALL LETTER M;NFKC_CF=006D;SB=LO;sc=Latn;stc=FF2D;suc=FF2D;vo=U
-cp;FF4E;Cased;CWCM;CWT;CWU;dm=006E;dt=Wide;ea=F;gc=Ll;Lower;na=FULLWIDTH LATIN SMALL LETTER N;NFKC_CF=006E;SB=LO;sc=Latn;stc=FF2E;suc=FF2E;vo=U
-cp;FF4F;Cased;CWCM;CWT;CWU;dm=006F;dt=Wide;ea=F;gc=Ll;Lower;na=FULLWIDTH LATIN SMALL LETTER O;NFKC_CF=006F;SB=LO;sc=Latn;stc=FF2F;suc=FF2F;vo=U
-cp;FF50;Cased;CWCM;CWT;CWU;dm=0070;dt=Wide;ea=F;gc=Ll;Lower;na=FULLWIDTH LATIN SMALL LETTER P;NFKC_CF=0070;SB=LO;sc=Latn;stc=FF30;suc=FF30;vo=U
-cp;FF51;Cased;CWCM;CWT;CWU;dm=0071;dt=Wide;ea=F;gc=Ll;Lower;na=FULLWIDTH LATIN SMALL LETTER Q;NFKC_CF=0071;SB=LO;sc=Latn;stc=FF31;suc=FF31;vo=U
-cp;FF52;Cased;CWCM;CWT;CWU;dm=0072;dt=Wide;ea=F;gc=Ll;Lower;na=FULLWIDTH LATIN SMALL LETTER R;NFKC_CF=0072;SB=LO;sc=Latn;stc=FF32;suc=FF32;vo=U
-cp;FF53;Cased;CWCM;CWT;CWU;dm=0073;dt=Wide;ea=F;gc=Ll;Lower;na=FULLWIDTH LATIN SMALL LETTER S;NFKC_CF=0073;SB=LO;sc=Latn;stc=FF33;suc=FF33;vo=U
-cp;FF54;Cased;CWCM;CWT;CWU;dm=0074;dt=Wide;ea=F;gc=Ll;Lower;na=FULLWIDTH LATIN SMALL LETTER T;NFKC_CF=0074;SB=LO;sc=Latn;stc=FF34;suc=FF34;vo=U
-cp;FF55;Cased;CWCM;CWT;CWU;dm=0075;dt=Wide;ea=F;gc=Ll;Lower;na=FULLWIDTH LATIN SMALL LETTER U;NFKC_CF=0075;SB=LO;sc=Latn;stc=FF35;suc=FF35;vo=U
-cp;FF56;Cased;CWCM;CWT;CWU;dm=0076;dt=Wide;ea=F;gc=Ll;Lower;na=FULLWIDTH LATIN SMALL LETTER V;NFKC_CF=0076;SB=LO;sc=Latn;stc=FF36;suc=FF36;vo=U
-cp;FF57;Cased;CWCM;CWT;CWU;dm=0077;dt=Wide;ea=F;gc=Ll;Lower;na=FULLWIDTH LATIN SMALL LETTER W;NFKC_CF=0077;SB=LO;sc=Latn;stc=FF37;suc=FF37;vo=U
-cp;FF58;Cased;CWCM;CWT;CWU;dm=0078;dt=Wide;ea=F;gc=Ll;Lower;na=FULLWIDTH LATIN SMALL LETTER X;NFKC_CF=0078;SB=LO;sc=Latn;stc=FF38;suc=FF38;vo=U
-cp;FF59;Cased;CWCM;CWT;CWU;dm=0079;dt=Wide;ea=F;gc=Ll;Lower;na=FULLWIDTH LATIN SMALL LETTER Y;NFKC_CF=0079;SB=LO;sc=Latn;stc=FF39;suc=FF39;vo=U
-cp;FF5A;Cased;CWCM;CWT;CWU;dm=007A;dt=Wide;ea=F;gc=Ll;Lower;na=FULLWIDTH LATIN SMALL LETTER Z;NFKC_CF=007A;SB=LO;sc=Latn;stc=FF3A;suc=FF3A;vo=U
-cp;FF5B;-Alpha;bc=ON;Bidi_M;bmg=FF5D;bpb=FF5D;bpt=o;dm=007B;dt=Wide;ea=F;gc=Ps;-IDC;-IDS;lb=OP;na=FULLWIDTH LEFT CURLY BRACKET;NFKC_CF=007B;SB=CL;vo=Tr;WB=XX;-XIDC;-XIDS
-cp;FF5C;-Alpha;bc=ON;dm=007C;dt=Wide;ea=F;gc=Sm;-IDC;-IDS;Math;na=FULLWIDTH VERTICAL LINE;NFKC_CF=007C;SB=XX;vo=Tr;WB=XX;-XIDC;-XIDS
-cp;FF5D;-Alpha;bc=ON;Bidi_M;bmg=FF5B;bpb=FF5B;bpt=c;dm=007D;dt=Wide;ea=F;gc=Pe;-IDC;-IDS;lb=CL;na=FULLWIDTH RIGHT CURLY BRACKET;NFKC_CF=007D;SB=CL;vo=Tr;WB=XX;-XIDC;-XIDS
-cp;FF5E;-Alpha;bc=ON;dm=007E;dt=Wide;ea=F;gc=Sm;-IDC;-IDS;Math;na=FULLWIDTH TILDE;NFKC_CF=007E;SB=XX;vo=Tr;WB=XX;-XIDC;-XIDS
+cp;FF42;Cased;CWCM;CWT;CWU;dm=0062;dt=Wide;ea=F;gc=Ll;Hex;Lower;na=FULLWIDTH LATIN SMALL LETTER B;NFKC_CF=0062;NFKC_SCF=0062;SB=LO;sc=Latn;stc=FF22;suc=FF22;vo=U
+cp;FF43;Cased;CWCM;CWT;CWU;dm=0063;dt=Wide;ea=F;gc=Ll;Hex;Lower;na=FULLWIDTH LATIN SMALL LETTER C;NFKC_CF=0063;NFKC_SCF=0063;SB=LO;sc=Latn;stc=FF23;suc=FF23;vo=U
+cp;FF44;Cased;CWCM;CWT;CWU;dm=0064;dt=Wide;ea=F;gc=Ll;Hex;Lower;na=FULLWIDTH LATIN SMALL LETTER D;NFKC_CF=0064;NFKC_SCF=0064;SB=LO;sc=Latn;stc=FF24;suc=FF24;vo=U
+cp;FF45;Cased;CWCM;CWT;CWU;dm=0065;dt=Wide;ea=F;gc=Ll;Hex;Lower;na=FULLWIDTH LATIN SMALL LETTER E;NFKC_CF=0065;NFKC_SCF=0065;SB=LO;sc=Latn;stc=FF25;suc=FF25;vo=U
+cp;FF46;Cased;CWCM;CWT;CWU;dm=0066;dt=Wide;ea=F;gc=Ll;Hex;Lower;na=FULLWIDTH LATIN SMALL LETTER F;NFKC_CF=0066;NFKC_SCF=0066;SB=LO;sc=Latn;stc=FF26;suc=FF26;vo=U
+cp;FF47;Cased;CWCM;CWT;CWU;dm=0067;dt=Wide;ea=F;gc=Ll;Lower;na=FULLWIDTH LATIN SMALL LETTER G;NFKC_CF=0067;NFKC_SCF=0067;SB=LO;sc=Latn;stc=FF27;suc=FF27;vo=U
+cp;FF48;Cased;CWCM;CWT;CWU;dm=0068;dt=Wide;ea=F;gc=Ll;Lower;na=FULLWIDTH LATIN SMALL LETTER H;NFKC_CF=0068;NFKC_SCF=0068;SB=LO;sc=Latn;stc=FF28;suc=FF28;vo=U
+cp;FF49;Cased;CWCM;CWT;CWU;dm=0069;dt=Wide;ea=F;gc=Ll;Lower;na=FULLWIDTH LATIN SMALL LETTER I;NFKC_CF=0069;NFKC_SCF=0069;SB=LO;sc=Latn;stc=FF29;suc=FF29;vo=U
+cp;FF4A;Cased;CWCM;CWT;CWU;dm=006A;dt=Wide;ea=F;gc=Ll;Lower;na=FULLWIDTH LATIN SMALL LETTER J;NFKC_CF=006A;NFKC_SCF=006A;SB=LO;sc=Latn;stc=FF2A;suc=FF2A;vo=U
+cp;FF4B;Cased;CWCM;CWT;CWU;dm=006B;dt=Wide;ea=F;gc=Ll;Lower;na=FULLWIDTH LATIN SMALL LETTER K;NFKC_CF=006B;NFKC_SCF=006B;SB=LO;sc=Latn;stc=FF2B;suc=FF2B;vo=U
+cp;FF4C;Cased;CWCM;CWT;CWU;dm=006C;dt=Wide;ea=F;gc=Ll;Lower;na=FULLWIDTH LATIN SMALL LETTER L;NFKC_CF=006C;NFKC_SCF=006C;SB=LO;sc=Latn;stc=FF2C;suc=FF2C;vo=U
+cp;FF4D;Cased;CWCM;CWT;CWU;dm=006D;dt=Wide;ea=F;gc=Ll;Lower;na=FULLWIDTH LATIN SMALL LETTER M;NFKC_CF=006D;NFKC_SCF=006D;SB=LO;sc=Latn;stc=FF2D;suc=FF2D;vo=U
+cp;FF4E;Cased;CWCM;CWT;CWU;dm=006E;dt=Wide;ea=F;gc=Ll;Lower;na=FULLWIDTH LATIN SMALL LETTER N;NFKC_CF=006E;NFKC_SCF=006E;SB=LO;sc=Latn;stc=FF2E;suc=FF2E;vo=U
+cp;FF4F;Cased;CWCM;CWT;CWU;dm=006F;dt=Wide;ea=F;gc=Ll;Lower;na=FULLWIDTH LATIN SMALL LETTER O;NFKC_CF=006F;NFKC_SCF=006F;SB=LO;sc=Latn;stc=FF2F;suc=FF2F;vo=U
+cp;FF50;Cased;CWCM;CWT;CWU;dm=0070;dt=Wide;ea=F;gc=Ll;Lower;na=FULLWIDTH LATIN SMALL LETTER P;NFKC_CF=0070;NFKC_SCF=0070;SB=LO;sc=Latn;stc=FF30;suc=FF30;vo=U
+cp;FF51;Cased;CWCM;CWT;CWU;dm=0071;dt=Wide;ea=F;gc=Ll;Lower;na=FULLWIDTH LATIN SMALL LETTER Q;NFKC_CF=0071;NFKC_SCF=0071;SB=LO;sc=Latn;stc=FF31;suc=FF31;vo=U
+cp;FF52;Cased;CWCM;CWT;CWU;dm=0072;dt=Wide;ea=F;gc=Ll;Lower;na=FULLWIDTH LATIN SMALL LETTER R;NFKC_CF=0072;NFKC_SCF=0072;SB=LO;sc=Latn;stc=FF32;suc=FF32;vo=U
+cp;FF53;Cased;CWCM;CWT;CWU;dm=0073;dt=Wide;ea=F;gc=Ll;Lower;na=FULLWIDTH LATIN SMALL LETTER S;NFKC_CF=0073;NFKC_SCF=0073;SB=LO;sc=Latn;stc=FF33;suc=FF33;vo=U
+cp;FF54;Cased;CWCM;CWT;CWU;dm=0074;dt=Wide;ea=F;gc=Ll;Lower;na=FULLWIDTH LATIN SMALL LETTER T;NFKC_CF=0074;NFKC_SCF=0074;SB=LO;sc=Latn;stc=FF34;suc=FF34;vo=U
+cp;FF55;Cased;CWCM;CWT;CWU;dm=0075;dt=Wide;ea=F;gc=Ll;Lower;na=FULLWIDTH LATIN SMALL LETTER U;NFKC_CF=0075;NFKC_SCF=0075;SB=LO;sc=Latn;stc=FF35;suc=FF35;vo=U
+cp;FF56;Cased;CWCM;CWT;CWU;dm=0076;dt=Wide;ea=F;gc=Ll;Lower;na=FULLWIDTH LATIN SMALL LETTER V;NFKC_CF=0076;NFKC_SCF=0076;SB=LO;sc=Latn;stc=FF36;suc=FF36;vo=U
+cp;FF57;Cased;CWCM;CWT;CWU;dm=0077;dt=Wide;ea=F;gc=Ll;Lower;na=FULLWIDTH LATIN SMALL LETTER W;NFKC_CF=0077;NFKC_SCF=0077;SB=LO;sc=Latn;stc=FF37;suc=FF37;vo=U
+cp;FF58;Cased;CWCM;CWT;CWU;dm=0078;dt=Wide;ea=F;gc=Ll;Lower;na=FULLWIDTH LATIN SMALL LETTER X;NFKC_CF=0078;NFKC_SCF=0078;SB=LO;sc=Latn;stc=FF38;suc=FF38;vo=U
+cp;FF59;Cased;CWCM;CWT;CWU;dm=0079;dt=Wide;ea=F;gc=Ll;Lower;na=FULLWIDTH LATIN SMALL LETTER Y;NFKC_CF=0079;NFKC_SCF=0079;SB=LO;sc=Latn;stc=FF39;suc=FF39;vo=U
+cp;FF5A;Cased;CWCM;CWT;CWU;dm=007A;dt=Wide;ea=F;gc=Ll;Lower;na=FULLWIDTH LATIN SMALL LETTER Z;NFKC_CF=007A;NFKC_SCF=007A;SB=LO;sc=Latn;stc=FF3A;suc=FF3A;vo=U
+cp;FF5B;-Alpha;bc=ON;Bidi_M;bmg=FF5D;bpb=FF5D;bpt=o;dm=007B;dt=Wide;ea=F;gc=Ps;-IDC;-IDS;lb=OP;na=FULLWIDTH LEFT CURLY BRACKET;NFKC_CF=007B;NFKC_SCF=007B;SB=CL;vo=Tr;WB=XX;-XIDC;-XIDS
+cp;FF5C;-Alpha;bc=ON;dm=007C;dt=Wide;ea=F;gc=Sm;-IDC;-IDS;Math;na=FULLWIDTH VERTICAL LINE;NFKC_CF=007C;NFKC_SCF=007C;SB=XX;vo=Tr;WB=XX;-XIDC;-XIDS
+cp;FF5D;-Alpha;bc=ON;Bidi_M;bmg=FF5B;bpb=FF5B;bpt=c;dm=007D;dt=Wide;ea=F;gc=Pe;-IDC;-IDS;lb=CL;na=FULLWIDTH RIGHT CURLY BRACKET;NFKC_CF=007D;NFKC_SCF=007D;SB=CL;vo=Tr;WB=XX;-XIDC;-XIDS
+cp;FF5E;-Alpha;bc=ON;dm=007E;dt=Wide;ea=F;gc=Sm;-IDC;-IDS;Math;na=FULLWIDTH TILDE;NFKC_CF=007E;NFKC_SCF=007E;SB=XX;vo=Tr;WB=XX;-XIDC;-XIDS
# Fullwidth brackets
-cp;FF5F;age=3.2;-Alpha;bc=ON;Bidi_M;bmg=FF60;bpb=FF60;bpt=o;dm=2985;dt=Wide;ea=F;gc=Ps;-IDC;-IDS;lb=OP;na=FULLWIDTH LEFT WHITE PARENTHESIS;NFKC_CF=2985;SB=CL;vo=Tr;WB=XX;-XIDC;-XIDS
-cp;FF60;age=3.2;-Alpha;bc=ON;Bidi_M;bmg=FF5F;bpb=FF5F;bpt=c;dm=2986;dt=Wide;ea=F;gc=Pe;-IDC;-IDS;lb=CL;na=FULLWIDTH RIGHT WHITE PARENTHESIS;NFKC_CF=2986;SB=CL;vo=Tr;WB=XX;-XIDC;-XIDS
+cp;FF5F;age=3.2;-Alpha;bc=ON;Bidi_M;bmg=FF60;bpb=FF60;bpt=o;dm=2985;dt=Wide;ea=F;gc=Ps;-IDC;-IDS;lb=OP;na=FULLWIDTH LEFT WHITE PARENTHESIS;NFKC_CF=2985;NFKC_SCF=2985;SB=CL;vo=Tr;WB=XX;-XIDC;-XIDS
+cp;FF60;age=3.2;-Alpha;bc=ON;Bidi_M;bmg=FF5F;bpb=FF5F;bpt=c;dm=2986;dt=Wide;ea=F;gc=Pe;-IDC;-IDS;lb=CL;na=FULLWIDTH RIGHT WHITE PARENTHESIS;NFKC_CF=2986;NFKC_SCF=2986;SB=CL;vo=Tr;WB=XX;-XIDC;-XIDS
# Halfwidth CJK punctuation
-cp;FF61;-Alpha;bc=ON;dm=3002;gc=Po;-IDC;-IDS;lb=CL;na=HALFWIDTH IDEOGRAPHIC FULL STOP;NFKC_CF=3002;SB=ST;scx=Bopo Hang Hani Hira Kana Yiii;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;FF62;-Alpha;bc=ON;Bidi_M;bmg=FF63;bpb=FF63;bpt=o;dm=300C;gc=Ps;-IDC;-IDS;lb=OP;na=HALFWIDTH LEFT CORNER BRACKET;NFKC_CF=300C;QMark;SB=CL;scx=Bopo Hang Hani Hira Kana Yiii;WB=XX;-XIDC;-XIDS
-cp;FF63;-Alpha;bc=ON;Bidi_M;bmg=FF62;bpb=FF62;bpt=c;dm=300D;gc=Pe;-IDC;-IDS;lb=CL;na=HALFWIDTH RIGHT CORNER BRACKET;NFKC_CF=300D;QMark;SB=CL;scx=Bopo Hang Hani Hira Kana Yiii;WB=XX;-XIDC;-XIDS
-cp;FF64;-Alpha;bc=ON;dm=3001;gc=Po;-IDC;-IDS;lb=CL;na=HALFWIDTH IDEOGRAPHIC COMMA;NFKC_CF=3001;SB=SC;scx=Bopo Hang Hani Hira Kana Yiii;Term;WB=XX;-XIDC;-XIDS
+cp;FF61;-Alpha;bc=ON;dm=3002;gc=Po;-IDC;-IDS;lb=CL;na=HALFWIDTH IDEOGRAPHIC FULL STOP;NFKC_CF=3002;NFKC_SCF=3002;SB=ST;scx=Bopo Hang Hani Hira Kana Yiii;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;FF62;-Alpha;bc=ON;Bidi_M;bmg=FF63;bpb=FF63;bpt=o;dm=300C;gc=Ps;-IDC;-IDS;lb=OP;na=HALFWIDTH LEFT CORNER BRACKET;NFKC_CF=300C;NFKC_SCF=300C;QMark;SB=CL;scx=Bopo Hang Hani Hira Kana Yiii;WB=XX;-XIDC;-XIDS
+cp;FF63;-Alpha;bc=ON;Bidi_M;bmg=FF62;bpb=FF62;bpt=c;dm=300D;gc=Pe;-IDC;-IDS;lb=CL;na=HALFWIDTH RIGHT CORNER BRACKET;NFKC_CF=300D;NFKC_SCF=300D;QMark;SB=CL;scx=Bopo Hang Hani Hira Kana Yiii;WB=XX;-XIDC;-XIDS
+cp;FF64;-Alpha;bc=ON;dm=3001;gc=Po;-IDC;-IDS;lb=CL;na=HALFWIDTH IDEOGRAPHIC COMMA;NFKC_CF=3001;NFKC_SCF=3001;SB=SC;scx=Bopo Hang Hani Hira Kana Yiii;Term;WB=XX;-XIDC;-XIDS
# Halfwidth Katakana variants
-cp;FF65;-Alpha;bc=ON;dm=30FB;gc=Po;Hyphen;-IDC;-IDS;lb=NS;na=HALFWIDTH KATAKANA MIDDLE DOT;NFKC_CF=30FB;SB=XX;scx=Bopo Hang Hani Hira Kana Yiii;WB=XX;-XIDC;-XIDS
-cp;FF66;dm=30F2;na=HALFWIDTH KATAKANA LETTER WO;NFKC_CF=30F2;sc=Kana;WB=KA
-cp;FF67;dm=30A1;lb=CJ;na=HALFWIDTH KATAKANA LETTER SMALL A;NFKC_CF=30A1;sc=Kana;WB=KA
-cp;FF68;dm=30A3;lb=CJ;na=HALFWIDTH KATAKANA LETTER SMALL I;NFKC_CF=30A3;sc=Kana;WB=KA
-cp;FF69;dm=30A5;lb=CJ;na=HALFWIDTH KATAKANA LETTER SMALL U;NFKC_CF=30A5;sc=Kana;WB=KA
-cp;FF6A;dm=30A7;lb=CJ;na=HALFWIDTH KATAKANA LETTER SMALL E;NFKC_CF=30A7;sc=Kana;WB=KA
-cp;FF6B;dm=30A9;lb=CJ;na=HALFWIDTH KATAKANA LETTER SMALL O;NFKC_CF=30A9;sc=Kana;WB=KA
-cp;FF6C;dm=30E3;lb=CJ;na=HALFWIDTH KATAKANA LETTER SMALL YA;NFKC_CF=30E3;sc=Kana;WB=KA
-cp;FF6D;dm=30E5;lb=CJ;na=HALFWIDTH KATAKANA LETTER SMALL YU;NFKC_CF=30E5;sc=Kana;WB=KA
-cp;FF6E;dm=30E7;lb=CJ;na=HALFWIDTH KATAKANA LETTER SMALL YO;NFKC_CF=30E7;sc=Kana;WB=KA
-cp;FF6F;dm=30C3;lb=CJ;na=HALFWIDTH KATAKANA LETTER SMALL TU;NFKC_CF=30C3;sc=Kana;WB=KA
-cp;FF70;CI;Dia;dm=30FC;Ext;gc=Lm;lb=CJ;na=HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK;NFKC_CF=30FC;scx=Hira Kana;WB=KA
-cp;FF71;dm=30A2;na=HALFWIDTH KATAKANA LETTER A;NFKC_CF=30A2;sc=Kana;WB=KA
-cp;FF72;dm=30A4;na=HALFWIDTH KATAKANA LETTER I;NFKC_CF=30A4;sc=Kana;WB=KA
-cp;FF73;dm=30A6;na=HALFWIDTH KATAKANA LETTER U;NFKC_CF=30A6;sc=Kana;WB=KA
-cp;FF74;dm=30A8;na=HALFWIDTH KATAKANA LETTER E;NFKC_CF=30A8;sc=Kana;WB=KA
-cp;FF75;dm=30AA;na=HALFWIDTH KATAKANA LETTER O;NFKC_CF=30AA;sc=Kana;WB=KA
-cp;FF76;dm=30AB;na=HALFWIDTH KATAKANA LETTER KA;NFKC_CF=30AB;sc=Kana;WB=KA
-cp;FF77;dm=30AD;na=HALFWIDTH KATAKANA LETTER KI;NFKC_CF=30AD;sc=Kana;WB=KA
-cp;FF78;dm=30AF;na=HALFWIDTH KATAKANA LETTER KU;NFKC_CF=30AF;sc=Kana;WB=KA
-cp;FF79;dm=30B1;na=HALFWIDTH KATAKANA LETTER KE;NFKC_CF=30B1;sc=Kana;WB=KA
-cp;FF7A;dm=30B3;na=HALFWIDTH KATAKANA LETTER KO;NFKC_CF=30B3;sc=Kana;WB=KA
-cp;FF7B;dm=30B5;na=HALFWIDTH KATAKANA LETTER SA;NFKC_CF=30B5;sc=Kana;WB=KA
-cp;FF7C;dm=30B7;na=HALFWIDTH KATAKANA LETTER SI;NFKC_CF=30B7;sc=Kana;WB=KA
-cp;FF7D;dm=30B9;na=HALFWIDTH KATAKANA LETTER SU;NFKC_CF=30B9;sc=Kana;WB=KA
-cp;FF7E;dm=30BB;na=HALFWIDTH KATAKANA LETTER SE;NFKC_CF=30BB;sc=Kana;WB=KA
-cp;FF7F;dm=30BD;na=HALFWIDTH KATAKANA LETTER SO;NFKC_CF=30BD;sc=Kana;WB=KA
-cp;FF80;dm=30BF;na=HALFWIDTH KATAKANA LETTER TA;NFKC_CF=30BF;sc=Kana;WB=KA
-cp;FF81;dm=30C1;na=HALFWIDTH KATAKANA LETTER TI;NFKC_CF=30C1;sc=Kana;WB=KA
-cp;FF82;dm=30C4;na=HALFWIDTH KATAKANA LETTER TU;NFKC_CF=30C4;sc=Kana;WB=KA
-cp;FF83;dm=30C6;na=HALFWIDTH KATAKANA LETTER TE;NFKC_CF=30C6;sc=Kana;WB=KA
-cp;FF84;dm=30C8;na=HALFWIDTH KATAKANA LETTER TO;NFKC_CF=30C8;sc=Kana;WB=KA
-cp;FF85;dm=30CA;na=HALFWIDTH KATAKANA LETTER NA;NFKC_CF=30CA;sc=Kana;WB=KA
-cp;FF86;dm=30CB;na=HALFWIDTH KATAKANA LETTER NI;NFKC_CF=30CB;sc=Kana;WB=KA
-cp;FF87;dm=30CC;na=HALFWIDTH KATAKANA LETTER NU;NFKC_CF=30CC;sc=Kana;WB=KA
-cp;FF88;dm=30CD;na=HALFWIDTH KATAKANA LETTER NE;NFKC_CF=30CD;sc=Kana;WB=KA
-cp;FF89;dm=30CE;na=HALFWIDTH KATAKANA LETTER NO;NFKC_CF=30CE;sc=Kana;WB=KA
-cp;FF8A;dm=30CF;na=HALFWIDTH KATAKANA LETTER HA;NFKC_CF=30CF;sc=Kana;WB=KA
-cp;FF8B;dm=30D2;na=HALFWIDTH KATAKANA LETTER HI;NFKC_CF=30D2;sc=Kana;WB=KA
-cp;FF8C;dm=30D5;na=HALFWIDTH KATAKANA LETTER HU;NFKC_CF=30D5;sc=Kana;WB=KA
-cp;FF8D;dm=30D8;na=HALFWIDTH KATAKANA LETTER HE;NFKC_CF=30D8;sc=Kana;WB=KA
-cp;FF8E;dm=30DB;na=HALFWIDTH KATAKANA LETTER HO;NFKC_CF=30DB;sc=Kana;WB=KA
-cp;FF8F;dm=30DE;na=HALFWIDTH KATAKANA LETTER MA;NFKC_CF=30DE;sc=Kana;WB=KA
-cp;FF90;dm=30DF;na=HALFWIDTH KATAKANA LETTER MI;NFKC_CF=30DF;sc=Kana;WB=KA
-cp;FF91;dm=30E0;na=HALFWIDTH KATAKANA LETTER MU;NFKC_CF=30E0;sc=Kana;WB=KA
-cp;FF92;dm=30E1;na=HALFWIDTH KATAKANA LETTER ME;NFKC_CF=30E1;sc=Kana;WB=KA
-cp;FF93;dm=30E2;na=HALFWIDTH KATAKANA LETTER MO;NFKC_CF=30E2;sc=Kana;WB=KA
-cp;FF94;dm=30E4;na=HALFWIDTH KATAKANA LETTER YA;NFKC_CF=30E4;sc=Kana;WB=KA
-cp;FF95;dm=30E6;na=HALFWIDTH KATAKANA LETTER YU;NFKC_CF=30E6;sc=Kana;WB=KA
-cp;FF96;dm=30E8;na=HALFWIDTH KATAKANA LETTER YO;NFKC_CF=30E8;sc=Kana;WB=KA
-cp;FF97;dm=30E9;na=HALFWIDTH KATAKANA LETTER RA;NFKC_CF=30E9;sc=Kana;WB=KA
-cp;FF98;dm=30EA;na=HALFWIDTH KATAKANA LETTER RI;NFKC_CF=30EA;sc=Kana;WB=KA
-cp;FF99;dm=30EB;na=HALFWIDTH KATAKANA LETTER RU;NFKC_CF=30EB;sc=Kana;WB=KA
-cp;FF9A;dm=30EC;na=HALFWIDTH KATAKANA LETTER RE;NFKC_CF=30EC;sc=Kana;WB=KA
-cp;FF9B;dm=30ED;na=HALFWIDTH KATAKANA LETTER RO;NFKC_CF=30ED;sc=Kana;WB=KA
-cp;FF9C;dm=30EF;na=HALFWIDTH KATAKANA LETTER WA;NFKC_CF=30EF;sc=Kana;WB=KA
-cp;FF9D;dm=30F3;na=HALFWIDTH KATAKANA LETTER N;NFKC_CF=30F3;sc=Kana;WB=KA
-cp;FF9E;CI;Dia;dm=3099;gc=Lm;GCB=EX;-Gr_Base;Gr_Ext;lb=NS;na=HALFWIDTH KATAKANA VOICED SOUND MARK;NFKC_CF=3099;SB=EX;scx=Hira Kana;WB=Extend;-XIDS
-cp;FF9F;CI;Dia;dm=309A;gc=Lm;GCB=EX;-Gr_Base;Gr_Ext;lb=NS;na=HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK;NFKC_CF=309A;SB=EX;scx=Hira Kana;WB=Extend;-XIDS
+cp;FF65;-Alpha;bc=ON;dm=30FB;gc=Po;Hyphen;-IDS;lb=NS;na=HALFWIDTH KATAKANA MIDDLE DOT;NFKC_CF=30FB;NFKC_SCF=30FB;SB=XX;scx=Bopo Hang Hani Hira Kana Yiii;WB=XX;-XIDS
+cp;FF66;dm=30F2;na=HALFWIDTH KATAKANA LETTER WO;NFKC_CF=30F2;NFKC_SCF=30F2;sc=Kana;WB=KA
+cp;FF67;dm=30A1;lb=CJ;na=HALFWIDTH KATAKANA LETTER SMALL A;NFKC_CF=30A1;NFKC_SCF=30A1;sc=Kana;WB=KA
+cp;FF68;dm=30A3;lb=CJ;na=HALFWIDTH KATAKANA LETTER SMALL I;NFKC_CF=30A3;NFKC_SCF=30A3;sc=Kana;WB=KA
+cp;FF69;dm=30A5;lb=CJ;na=HALFWIDTH KATAKANA LETTER SMALL U;NFKC_CF=30A5;NFKC_SCF=30A5;sc=Kana;WB=KA
+cp;FF6A;dm=30A7;lb=CJ;na=HALFWIDTH KATAKANA LETTER SMALL E;NFKC_CF=30A7;NFKC_SCF=30A7;sc=Kana;WB=KA
+cp;FF6B;dm=30A9;lb=CJ;na=HALFWIDTH KATAKANA LETTER SMALL O;NFKC_CF=30A9;NFKC_SCF=30A9;sc=Kana;WB=KA
+cp;FF6C;dm=30E3;lb=CJ;na=HALFWIDTH KATAKANA LETTER SMALL YA;NFKC_CF=30E3;NFKC_SCF=30E3;sc=Kana;WB=KA
+cp;FF6D;dm=30E5;lb=CJ;na=HALFWIDTH KATAKANA LETTER SMALL YU;NFKC_CF=30E5;NFKC_SCF=30E5;sc=Kana;WB=KA
+cp;FF6E;dm=30E7;lb=CJ;na=HALFWIDTH KATAKANA LETTER SMALL YO;NFKC_CF=30E7;NFKC_SCF=30E7;sc=Kana;WB=KA
+cp;FF6F;dm=30C3;lb=CJ;na=HALFWIDTH KATAKANA LETTER SMALL TU;NFKC_CF=30C3;NFKC_SCF=30C3;sc=Kana;WB=KA
+cp;FF70;CI;Dia;dm=30FC;Ext;gc=Lm;lb=CJ;na=HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK;NFKC_CF=30FC;NFKC_SCF=30FC;scx=Hira Kana;WB=KA
+cp;FF71;dm=30A2;na=HALFWIDTH KATAKANA LETTER A;NFKC_CF=30A2;NFKC_SCF=30A2;sc=Kana;WB=KA
+cp;FF72;dm=30A4;na=HALFWIDTH KATAKANA LETTER I;NFKC_CF=30A4;NFKC_SCF=30A4;sc=Kana;WB=KA
+cp;FF73;dm=30A6;na=HALFWIDTH KATAKANA LETTER U;NFKC_CF=30A6;NFKC_SCF=30A6;sc=Kana;WB=KA
+cp;FF74;dm=30A8;na=HALFWIDTH KATAKANA LETTER E;NFKC_CF=30A8;NFKC_SCF=30A8;sc=Kana;WB=KA
+cp;FF75;dm=30AA;na=HALFWIDTH KATAKANA LETTER O;NFKC_CF=30AA;NFKC_SCF=30AA;sc=Kana;WB=KA
+cp;FF76;dm=30AB;na=HALFWIDTH KATAKANA LETTER KA;NFKC_CF=30AB;NFKC_SCF=30AB;sc=Kana;WB=KA
+cp;FF77;dm=30AD;na=HALFWIDTH KATAKANA LETTER KI;NFKC_CF=30AD;NFKC_SCF=30AD;sc=Kana;WB=KA
+cp;FF78;dm=30AF;na=HALFWIDTH KATAKANA LETTER KU;NFKC_CF=30AF;NFKC_SCF=30AF;sc=Kana;WB=KA
+cp;FF79;dm=30B1;na=HALFWIDTH KATAKANA LETTER KE;NFKC_CF=30B1;NFKC_SCF=30B1;sc=Kana;WB=KA
+cp;FF7A;dm=30B3;na=HALFWIDTH KATAKANA LETTER KO;NFKC_CF=30B3;NFKC_SCF=30B3;sc=Kana;WB=KA
+cp;FF7B;dm=30B5;na=HALFWIDTH KATAKANA LETTER SA;NFKC_CF=30B5;NFKC_SCF=30B5;sc=Kana;WB=KA
+cp;FF7C;dm=30B7;na=HALFWIDTH KATAKANA LETTER SI;NFKC_CF=30B7;NFKC_SCF=30B7;sc=Kana;WB=KA
+cp;FF7D;dm=30B9;na=HALFWIDTH KATAKANA LETTER SU;NFKC_CF=30B9;NFKC_SCF=30B9;sc=Kana;WB=KA
+cp;FF7E;dm=30BB;na=HALFWIDTH KATAKANA LETTER SE;NFKC_CF=30BB;NFKC_SCF=30BB;sc=Kana;WB=KA
+cp;FF7F;dm=30BD;na=HALFWIDTH KATAKANA LETTER SO;NFKC_CF=30BD;NFKC_SCF=30BD;sc=Kana;WB=KA
+cp;FF80;dm=30BF;na=HALFWIDTH KATAKANA LETTER TA;NFKC_CF=30BF;NFKC_SCF=30BF;sc=Kana;WB=KA
+cp;FF81;dm=30C1;na=HALFWIDTH KATAKANA LETTER TI;NFKC_CF=30C1;NFKC_SCF=30C1;sc=Kana;WB=KA
+cp;FF82;dm=30C4;na=HALFWIDTH KATAKANA LETTER TU;NFKC_CF=30C4;NFKC_SCF=30C4;sc=Kana;WB=KA
+cp;FF83;dm=30C6;na=HALFWIDTH KATAKANA LETTER TE;NFKC_CF=30C6;NFKC_SCF=30C6;sc=Kana;WB=KA
+cp;FF84;dm=30C8;na=HALFWIDTH KATAKANA LETTER TO;NFKC_CF=30C8;NFKC_SCF=30C8;sc=Kana;WB=KA
+cp;FF85;dm=30CA;na=HALFWIDTH KATAKANA LETTER NA;NFKC_CF=30CA;NFKC_SCF=30CA;sc=Kana;WB=KA
+cp;FF86;dm=30CB;na=HALFWIDTH KATAKANA LETTER NI;NFKC_CF=30CB;NFKC_SCF=30CB;sc=Kana;WB=KA
+cp;FF87;dm=30CC;na=HALFWIDTH KATAKANA LETTER NU;NFKC_CF=30CC;NFKC_SCF=30CC;sc=Kana;WB=KA
+cp;FF88;dm=30CD;na=HALFWIDTH KATAKANA LETTER NE;NFKC_CF=30CD;NFKC_SCF=30CD;sc=Kana;WB=KA
+cp;FF89;dm=30CE;na=HALFWIDTH KATAKANA LETTER NO;NFKC_CF=30CE;NFKC_SCF=30CE;sc=Kana;WB=KA
+cp;FF8A;dm=30CF;na=HALFWIDTH KATAKANA LETTER HA;NFKC_CF=30CF;NFKC_SCF=30CF;sc=Kana;WB=KA
+cp;FF8B;dm=30D2;na=HALFWIDTH KATAKANA LETTER HI;NFKC_CF=30D2;NFKC_SCF=30D2;sc=Kana;WB=KA
+cp;FF8C;dm=30D5;na=HALFWIDTH KATAKANA LETTER HU;NFKC_CF=30D5;NFKC_SCF=30D5;sc=Kana;WB=KA
+cp;FF8D;dm=30D8;na=HALFWIDTH KATAKANA LETTER HE;NFKC_CF=30D8;NFKC_SCF=30D8;sc=Kana;WB=KA
+cp;FF8E;dm=30DB;na=HALFWIDTH KATAKANA LETTER HO;NFKC_CF=30DB;NFKC_SCF=30DB;sc=Kana;WB=KA
+cp;FF8F;dm=30DE;na=HALFWIDTH KATAKANA LETTER MA;NFKC_CF=30DE;NFKC_SCF=30DE;sc=Kana;WB=KA
+cp;FF90;dm=30DF;na=HALFWIDTH KATAKANA LETTER MI;NFKC_CF=30DF;NFKC_SCF=30DF;sc=Kana;WB=KA
+cp;FF91;dm=30E0;na=HALFWIDTH KATAKANA LETTER MU;NFKC_CF=30E0;NFKC_SCF=30E0;sc=Kana;WB=KA
+cp;FF92;dm=30E1;na=HALFWIDTH KATAKANA LETTER ME;NFKC_CF=30E1;NFKC_SCF=30E1;sc=Kana;WB=KA
+cp;FF93;dm=30E2;na=HALFWIDTH KATAKANA LETTER MO;NFKC_CF=30E2;NFKC_SCF=30E2;sc=Kana;WB=KA
+cp;FF94;dm=30E4;na=HALFWIDTH KATAKANA LETTER YA;NFKC_CF=30E4;NFKC_SCF=30E4;sc=Kana;WB=KA
+cp;FF95;dm=30E6;na=HALFWIDTH KATAKANA LETTER YU;NFKC_CF=30E6;NFKC_SCF=30E6;sc=Kana;WB=KA
+cp;FF96;dm=30E8;na=HALFWIDTH KATAKANA LETTER YO;NFKC_CF=30E8;NFKC_SCF=30E8;sc=Kana;WB=KA
+cp;FF97;dm=30E9;na=HALFWIDTH KATAKANA LETTER RA;NFKC_CF=30E9;NFKC_SCF=30E9;sc=Kana;WB=KA
+cp;FF98;dm=30EA;na=HALFWIDTH KATAKANA LETTER RI;NFKC_CF=30EA;NFKC_SCF=30EA;sc=Kana;WB=KA
+cp;FF99;dm=30EB;na=HALFWIDTH KATAKANA LETTER RU;NFKC_CF=30EB;NFKC_SCF=30EB;sc=Kana;WB=KA
+cp;FF9A;dm=30EC;na=HALFWIDTH KATAKANA LETTER RE;NFKC_CF=30EC;NFKC_SCF=30EC;sc=Kana;WB=KA
+cp;FF9B;dm=30ED;na=HALFWIDTH KATAKANA LETTER RO;NFKC_CF=30ED;NFKC_SCF=30ED;sc=Kana;WB=KA
+cp;FF9C;dm=30EF;na=HALFWIDTH KATAKANA LETTER WA;NFKC_CF=30EF;NFKC_SCF=30EF;sc=Kana;WB=KA
+cp;FF9D;dm=30F3;na=HALFWIDTH KATAKANA LETTER N;NFKC_CF=30F3;NFKC_SCF=30F3;sc=Kana;WB=KA
+cp;FF9E;CI;Dia;dm=3099;gc=Lm;GCB=EX;-Gr_Base;Gr_Ext;lb=NS;na=HALFWIDTH KATAKANA VOICED SOUND MARK;NFKC_CF=3099;NFKC_SCF=3099;SB=EX;scx=Hira Kana;WB=Extend;-XIDS
+cp;FF9F;CI;Dia;dm=309A;gc=Lm;GCB=EX;-Gr_Base;Gr_Ext;lb=NS;na=HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK;NFKC_CF=309A;NFKC_SCF=309A;SB=EX;scx=Hira Kana;WB=Extend;-XIDS
# Halfwidth Hangul variants
-cp;FFA0;DI;dm=3164;na=HALFWIDTH HANGUL FILLER;NFKC_CF=;sc=Hang
-cp;FFA1;dm=3131;na=HALFWIDTH HANGUL LETTER KIYEOK;NFKC_CF=1100;sc=Hang
-cp;FFA2;dm=3132;na=HALFWIDTH HANGUL LETTER SSANGKIYEOK;NFKC_CF=1101;sc=Hang
-cp;FFA3;dm=3133;na=HALFWIDTH HANGUL LETTER KIYEOK-SIOS;NFKC_CF=11AA;sc=Hang
-cp;FFA4;dm=3134;na=HALFWIDTH HANGUL LETTER NIEUN;NFKC_CF=1102;sc=Hang
-cp;FFA5;dm=3135;na=HALFWIDTH HANGUL LETTER NIEUN-CIEUC;NFKC_CF=11AC;sc=Hang
-cp;FFA6;dm=3136;na=HALFWIDTH HANGUL LETTER NIEUN-HIEUH;NFKC_CF=11AD;sc=Hang
-cp;FFA7;dm=3137;na=HALFWIDTH HANGUL LETTER TIKEUT;NFKC_CF=1103;sc=Hang
-cp;FFA8;dm=3138;na=HALFWIDTH HANGUL LETTER SSANGTIKEUT;NFKC_CF=1104;sc=Hang
-cp;FFA9;dm=3139;na=HALFWIDTH HANGUL LETTER RIEUL;NFKC_CF=1105;sc=Hang
-cp;FFAA;dm=313A;na=HALFWIDTH HANGUL LETTER RIEUL-KIYEOK;NFKC_CF=11B0;sc=Hang
-cp;FFAB;dm=313B;na=HALFWIDTH HANGUL LETTER RIEUL-MIEUM;NFKC_CF=11B1;sc=Hang
-cp;FFAC;dm=313C;na=HALFWIDTH HANGUL LETTER RIEUL-PIEUP;NFKC_CF=11B2;sc=Hang
-cp;FFAD;dm=313D;na=HALFWIDTH HANGUL LETTER RIEUL-SIOS;NFKC_CF=11B3;sc=Hang
-cp;FFAE;dm=313E;na=HALFWIDTH HANGUL LETTER RIEUL-THIEUTH;NFKC_CF=11B4;sc=Hang
-cp;FFAF;dm=313F;na=HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH;NFKC_CF=11B5;sc=Hang
-cp;FFB0;dm=3140;na=HALFWIDTH HANGUL LETTER RIEUL-HIEUH;NFKC_CF=111A;sc=Hang
-cp;FFB1;dm=3141;na=HALFWIDTH HANGUL LETTER MIEUM;NFKC_CF=1106;sc=Hang
-cp;FFB2;dm=3142;na=HALFWIDTH HANGUL LETTER PIEUP;NFKC_CF=1107;sc=Hang
-cp;FFB3;dm=3143;na=HALFWIDTH HANGUL LETTER SSANGPIEUP;NFKC_CF=1108;sc=Hang
-cp;FFB4;dm=3144;na=HALFWIDTH HANGUL LETTER PIEUP-SIOS;NFKC_CF=1121;sc=Hang
-cp;FFB5;dm=3145;na=HALFWIDTH HANGUL LETTER SIOS;NFKC_CF=1109;sc=Hang
-cp;FFB6;dm=3146;na=HALFWIDTH HANGUL LETTER SSANGSIOS;NFKC_CF=110A;sc=Hang
-cp;FFB7;dm=3147;na=HALFWIDTH HANGUL LETTER IEUNG;NFKC_CF=110B;sc=Hang
-cp;FFB8;dm=3148;na=HALFWIDTH HANGUL LETTER CIEUC;NFKC_CF=110C;sc=Hang
-cp;FFB9;dm=3149;na=HALFWIDTH HANGUL LETTER SSANGCIEUC;NFKC_CF=110D;sc=Hang
-cp;FFBA;dm=314A;na=HALFWIDTH HANGUL LETTER CHIEUCH;NFKC_CF=110E;sc=Hang
-cp;FFBB;dm=314B;na=HALFWIDTH HANGUL LETTER KHIEUKH;NFKC_CF=110F;sc=Hang
-cp;FFBC;dm=314C;na=HALFWIDTH HANGUL LETTER THIEUTH;NFKC_CF=1110;sc=Hang
-cp;FFBD;dm=314D;na=HALFWIDTH HANGUL LETTER PHIEUPH;NFKC_CF=1111;sc=Hang
-cp;FFBE;dm=314E;na=HALFWIDTH HANGUL LETTER HIEUH;NFKC_CF=1112;sc=Hang
+cp;FFA0;DI;dm=3164;na=HALFWIDTH HANGUL FILLER;NFKC_CF=;NFKC_SCF=;sc=Hang
+cp;FFA1;dm=3131;na=HALFWIDTH HANGUL LETTER KIYEOK;NFKC_CF=1100;NFKC_SCF=1100;sc=Hang
+cp;FFA2;dm=3132;na=HALFWIDTH HANGUL LETTER SSANGKIYEOK;NFKC_CF=1101;NFKC_SCF=1101;sc=Hang
+cp;FFA3;dm=3133;na=HALFWIDTH HANGUL LETTER KIYEOK-SIOS;NFKC_CF=11AA;NFKC_SCF=11AA;sc=Hang
+cp;FFA4;dm=3134;na=HALFWIDTH HANGUL LETTER NIEUN;NFKC_CF=1102;NFKC_SCF=1102;sc=Hang
+cp;FFA5;dm=3135;na=HALFWIDTH HANGUL LETTER NIEUN-CIEUC;NFKC_CF=11AC;NFKC_SCF=11AC;sc=Hang
+cp;FFA6;dm=3136;na=HALFWIDTH HANGUL LETTER NIEUN-HIEUH;NFKC_CF=11AD;NFKC_SCF=11AD;sc=Hang
+cp;FFA7;dm=3137;na=HALFWIDTH HANGUL LETTER TIKEUT;NFKC_CF=1103;NFKC_SCF=1103;sc=Hang
+cp;FFA8;dm=3138;na=HALFWIDTH HANGUL LETTER SSANGTIKEUT;NFKC_CF=1104;NFKC_SCF=1104;sc=Hang
+cp;FFA9;dm=3139;na=HALFWIDTH HANGUL LETTER RIEUL;NFKC_CF=1105;NFKC_SCF=1105;sc=Hang
+cp;FFAA;dm=313A;na=HALFWIDTH HANGUL LETTER RIEUL-KIYEOK;NFKC_CF=11B0;NFKC_SCF=11B0;sc=Hang
+cp;FFAB;dm=313B;na=HALFWIDTH HANGUL LETTER RIEUL-MIEUM;NFKC_CF=11B1;NFKC_SCF=11B1;sc=Hang
+cp;FFAC;dm=313C;na=HALFWIDTH HANGUL LETTER RIEUL-PIEUP;NFKC_CF=11B2;NFKC_SCF=11B2;sc=Hang
+cp;FFAD;dm=313D;na=HALFWIDTH HANGUL LETTER RIEUL-SIOS;NFKC_CF=11B3;NFKC_SCF=11B3;sc=Hang
+cp;FFAE;dm=313E;na=HALFWIDTH HANGUL LETTER RIEUL-THIEUTH;NFKC_CF=11B4;NFKC_SCF=11B4;sc=Hang
+cp;FFAF;dm=313F;na=HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH;NFKC_CF=11B5;NFKC_SCF=11B5;sc=Hang
+cp;FFB0;dm=3140;na=HALFWIDTH HANGUL LETTER RIEUL-HIEUH;NFKC_CF=111A;NFKC_SCF=111A;sc=Hang
+cp;FFB1;dm=3141;na=HALFWIDTH HANGUL LETTER MIEUM;NFKC_CF=1106;NFKC_SCF=1106;sc=Hang
+cp;FFB2;dm=3142;na=HALFWIDTH HANGUL LETTER PIEUP;NFKC_CF=1107;NFKC_SCF=1107;sc=Hang
+cp;FFB3;dm=3143;na=HALFWIDTH HANGUL LETTER SSANGPIEUP;NFKC_CF=1108;NFKC_SCF=1108;sc=Hang
+cp;FFB4;dm=3144;na=HALFWIDTH HANGUL LETTER PIEUP-SIOS;NFKC_CF=1121;NFKC_SCF=1121;sc=Hang
+cp;FFB5;dm=3145;na=HALFWIDTH HANGUL LETTER SIOS;NFKC_CF=1109;NFKC_SCF=1109;sc=Hang
+cp;FFB6;dm=3146;na=HALFWIDTH HANGUL LETTER SSANGSIOS;NFKC_CF=110A;NFKC_SCF=110A;sc=Hang
+cp;FFB7;dm=3147;na=HALFWIDTH HANGUL LETTER IEUNG;NFKC_CF=110B;NFKC_SCF=110B;sc=Hang
+cp;FFB8;dm=3148;na=HALFWIDTH HANGUL LETTER CIEUC;NFKC_CF=110C;NFKC_SCF=110C;sc=Hang
+cp;FFB9;dm=3149;na=HALFWIDTH HANGUL LETTER SSANGCIEUC;NFKC_CF=110D;NFKC_SCF=110D;sc=Hang
+cp;FFBA;dm=314A;na=HALFWIDTH HANGUL LETTER CHIEUCH;NFKC_CF=110E;NFKC_SCF=110E;sc=Hang
+cp;FFBB;dm=314B;na=HALFWIDTH HANGUL LETTER KHIEUKH;NFKC_CF=110F;NFKC_SCF=110F;sc=Hang
+cp;FFBC;dm=314C;na=HALFWIDTH HANGUL LETTER THIEUTH;NFKC_CF=1110;NFKC_SCF=1110;sc=Hang
+cp;FFBD;dm=314D;na=HALFWIDTH HANGUL LETTER PHIEUPH;NFKC_CF=1111;NFKC_SCF=1111;sc=Hang
+cp;FFBE;dm=314E;na=HALFWIDTH HANGUL LETTER HIEUH;NFKC_CF=1112;NFKC_SCF=1112;sc=Hang
unassigned;FFBF..FFC1
-cp;FFC2;dm=314F;na=HALFWIDTH HANGUL LETTER A;NFKC_CF=1161;sc=Hang
-cp;FFC3;dm=3150;na=HALFWIDTH HANGUL LETTER AE;NFKC_CF=1162;sc=Hang
-cp;FFC4;dm=3151;na=HALFWIDTH HANGUL LETTER YA;NFKC_CF=1163;sc=Hang
-cp;FFC5;dm=3152;na=HALFWIDTH HANGUL LETTER YAE;NFKC_CF=1164;sc=Hang
-cp;FFC6;dm=3153;na=HALFWIDTH HANGUL LETTER EO;NFKC_CF=1165;sc=Hang
-cp;FFC7;dm=3154;na=HALFWIDTH HANGUL LETTER E;NFKC_CF=1166;sc=Hang
+cp;FFC2;dm=314F;na=HALFWIDTH HANGUL LETTER A;NFKC_CF=1161;NFKC_SCF=1161;sc=Hang
+cp;FFC3;dm=3150;na=HALFWIDTH HANGUL LETTER AE;NFKC_CF=1162;NFKC_SCF=1162;sc=Hang
+cp;FFC4;dm=3151;na=HALFWIDTH HANGUL LETTER YA;NFKC_CF=1163;NFKC_SCF=1163;sc=Hang
+cp;FFC5;dm=3152;na=HALFWIDTH HANGUL LETTER YAE;NFKC_CF=1164;NFKC_SCF=1164;sc=Hang
+cp;FFC6;dm=3153;na=HALFWIDTH HANGUL LETTER EO;NFKC_CF=1165;NFKC_SCF=1165;sc=Hang
+cp;FFC7;dm=3154;na=HALFWIDTH HANGUL LETTER E;NFKC_CF=1166;NFKC_SCF=1166;sc=Hang
unassigned;FFC8..FFC9
-cp;FFCA;dm=3155;na=HALFWIDTH HANGUL LETTER YEO;NFKC_CF=1167;sc=Hang
-cp;FFCB;dm=3156;na=HALFWIDTH HANGUL LETTER YE;NFKC_CF=1168;sc=Hang
-cp;FFCC;dm=3157;na=HALFWIDTH HANGUL LETTER O;NFKC_CF=1169;sc=Hang
-cp;FFCD;dm=3158;na=HALFWIDTH HANGUL LETTER WA;NFKC_CF=116A;sc=Hang
-cp;FFCE;dm=3159;na=HALFWIDTH HANGUL LETTER WAE;NFKC_CF=116B;sc=Hang
-cp;FFCF;dm=315A;na=HALFWIDTH HANGUL LETTER OE;NFKC_CF=116C;sc=Hang
+cp;FFCA;dm=3155;na=HALFWIDTH HANGUL LETTER YEO;NFKC_CF=1167;NFKC_SCF=1167;sc=Hang
+cp;FFCB;dm=3156;na=HALFWIDTH HANGUL LETTER YE;NFKC_CF=1168;NFKC_SCF=1168;sc=Hang
+cp;FFCC;dm=3157;na=HALFWIDTH HANGUL LETTER O;NFKC_CF=1169;NFKC_SCF=1169;sc=Hang
+cp;FFCD;dm=3158;na=HALFWIDTH HANGUL LETTER WA;NFKC_CF=116A;NFKC_SCF=116A;sc=Hang
+cp;FFCE;dm=3159;na=HALFWIDTH HANGUL LETTER WAE;NFKC_CF=116B;NFKC_SCF=116B;sc=Hang
+cp;FFCF;dm=315A;na=HALFWIDTH HANGUL LETTER OE;NFKC_CF=116C;NFKC_SCF=116C;sc=Hang
unassigned;FFD0..FFD1
-cp;FFD2;dm=315B;na=HALFWIDTH HANGUL LETTER YO;NFKC_CF=116D;sc=Hang
-cp;FFD3;dm=315C;na=HALFWIDTH HANGUL LETTER U;NFKC_CF=116E;sc=Hang
-cp;FFD4;dm=315D;na=HALFWIDTH HANGUL LETTER WEO;NFKC_CF=116F;sc=Hang
-cp;FFD5;dm=315E;na=HALFWIDTH HANGUL LETTER WE;NFKC_CF=1170;sc=Hang
-cp;FFD6;dm=315F;na=HALFWIDTH HANGUL LETTER WI;NFKC_CF=1171;sc=Hang
-cp;FFD7;dm=3160;na=HALFWIDTH HANGUL LETTER YU;NFKC_CF=1172;sc=Hang
+cp;FFD2;dm=315B;na=HALFWIDTH HANGUL LETTER YO;NFKC_CF=116D;NFKC_SCF=116D;sc=Hang
+cp;FFD3;dm=315C;na=HALFWIDTH HANGUL LETTER U;NFKC_CF=116E;NFKC_SCF=116E;sc=Hang
+cp;FFD4;dm=315D;na=HALFWIDTH HANGUL LETTER WEO;NFKC_CF=116F;NFKC_SCF=116F;sc=Hang
+cp;FFD5;dm=315E;na=HALFWIDTH HANGUL LETTER WE;NFKC_CF=1170;NFKC_SCF=1170;sc=Hang
+cp;FFD6;dm=315F;na=HALFWIDTH HANGUL LETTER WI;NFKC_CF=1171;NFKC_SCF=1171;sc=Hang
+cp;FFD7;dm=3160;na=HALFWIDTH HANGUL LETTER YU;NFKC_CF=1172;NFKC_SCF=1172;sc=Hang
unassigned;FFD8..FFD9
-cp;FFDA;dm=3161;na=HALFWIDTH HANGUL LETTER EU;NFKC_CF=1173;sc=Hang
-cp;FFDB;dm=3162;na=HALFWIDTH HANGUL LETTER YI;NFKC_CF=1174;sc=Hang
-cp;FFDC;dm=3163;na=HALFWIDTH HANGUL LETTER I;NFKC_CF=1175;sc=Hang
+cp;FFDA;dm=3161;na=HALFWIDTH HANGUL LETTER EU;NFKC_CF=1173;NFKC_SCF=1173;sc=Hang
+cp;FFDB;dm=3162;na=HALFWIDTH HANGUL LETTER YI;NFKC_CF=1174;NFKC_SCF=1174;sc=Hang
+cp;FFDC;dm=3163;na=HALFWIDTH HANGUL LETTER I;NFKC_CF=1175;NFKC_SCF=1175;sc=Hang
unassigned;FFDD..FFDF
# Fullwidth symbol variants
-cp;FFE0;-Alpha;bc=ET;dm=00A2;dt=Wide;ea=F;gc=Sc;-IDC;-IDS;lb=PO;na=FULLWIDTH CENT SIGN;NFKC_CF=00A2;SB=XX;vo=U;WB=XX;-XIDC;-XIDS
-cp;FFE1;-Alpha;bc=ET;dm=00A3;dt=Wide;ea=F;gc=Sc;-IDC;-IDS;lb=PR;na=FULLWIDTH POUND SIGN;NFKC_CF=00A3;SB=XX;vo=U;WB=XX;-XIDC;-XIDS
-cp;FFE2;-Alpha;bc=ON;dm=00AC;dt=Wide;ea=F;gc=Sm;-IDC;-IDS;Math;na=FULLWIDTH NOT SIGN;NFKC_CF=00AC;SB=XX;vo=U;WB=XX;-XIDC;-XIDS
-cp;FFE3;-Alpha;bc=ON;CI;Dia;dm=00AF;dt=Wide;ea=F;gc=Sk;-IDC;-IDS;na=FULLWIDTH MACRON;NFKC_CF=0020 0304;SB=XX;vo=Tr;WB=XX;-XIDC;-XIDS
-cp;FFE4;-Alpha;bc=ON;dm=00A6;dt=Wide;ea=F;gc=So;-IDC;-IDS;na=FULLWIDTH BROKEN BAR;NFKC_CF=00A6;SB=XX;vo=U;WB=XX;-XIDC;-XIDS
-cp;FFE5;-Alpha;bc=ET;dm=00A5;dt=Wide;ea=F;gc=Sc;-IDC;-IDS;lb=PR;na=FULLWIDTH YEN SIGN;NFKC_CF=00A5;SB=XX;vo=U;WB=XX;-XIDC;-XIDS
-cp;FFE6;-Alpha;bc=ET;dm=20A9;dt=Wide;ea=F;gc=Sc;-IDC;-IDS;lb=PR;na=FULLWIDTH WON SIGN;NFKC_CF=20A9;SB=XX;vo=U;WB=XX;-XIDC;-XIDS
+cp;FFE0;-Alpha;bc=ET;dm=00A2;dt=Wide;ea=F;gc=Sc;-IDC;-IDS;lb=PO;na=FULLWIDTH CENT SIGN;NFKC_CF=00A2;NFKC_SCF=00A2;SB=XX;vo=U;WB=XX;-XIDC;-XIDS
+cp;FFE1;-Alpha;bc=ET;dm=00A3;dt=Wide;ea=F;gc=Sc;-IDC;-IDS;lb=PR;na=FULLWIDTH POUND SIGN;NFKC_CF=00A3;NFKC_SCF=00A3;SB=XX;vo=U;WB=XX;-XIDC;-XIDS
+cp;FFE2;-Alpha;bc=ON;dm=00AC;dt=Wide;ea=F;gc=Sm;-IDC;-IDS;Math;na=FULLWIDTH NOT SIGN;NFKC_CF=00AC;NFKC_SCF=00AC;SB=XX;vo=U;WB=XX;-XIDC;-XIDS
+cp;FFE3;-Alpha;bc=ON;CI;Dia;dm=00AF;dt=Wide;ea=F;gc=Sk;-IDC;-IDS;na=FULLWIDTH MACRON;NFKC_CF=0020 0304;NFKC_SCF=0020 0304;SB=XX;vo=Tr;WB=XX;-XIDC;-XIDS
+cp;FFE4;-Alpha;bc=ON;dm=00A6;dt=Wide;ea=F;gc=So;-IDC;-IDS;na=FULLWIDTH BROKEN BAR;NFKC_CF=00A6;NFKC_SCF=00A6;SB=XX;vo=U;WB=XX;-XIDC;-XIDS
+cp;FFE5;-Alpha;bc=ET;dm=00A5;dt=Wide;ea=F;gc=Sc;-IDC;-IDS;lb=PR;na=FULLWIDTH YEN SIGN;NFKC_CF=00A5;NFKC_SCF=00A5;SB=XX;vo=U;WB=XX;-XIDC;-XIDS
+cp;FFE6;-Alpha;bc=ET;dm=20A9;dt=Wide;ea=F;gc=Sc;-IDC;-IDS;lb=PR;na=FULLWIDTH WON SIGN;NFKC_CF=20A9;NFKC_SCF=20A9;SB=XX;vo=U;WB=XX;-XIDC;-XIDS
unassigned;FFE7;vo=U
# Halfwidth symbol variants
-cp;FFE8;-Alpha;bc=ON;dm=2502;gc=So;-IDC;-IDS;lb=AL;na=HALFWIDTH FORMS LIGHT VERTICAL;NFKC_CF=2502;SB=XX;WB=XX;-XIDC;-XIDS
-cp;FFE9;-Alpha;bc=ON;dm=2190;gc=Sm;-IDC;-IDS;lb=AL;Math;na=HALFWIDTH LEFTWARDS ARROW;NFKC_CF=2190;SB=XX;WB=XX;-XIDC;-XIDS
-cp;FFEA;-Alpha;bc=ON;dm=2191;gc=Sm;-IDC;-IDS;lb=AL;Math;na=HALFWIDTH UPWARDS ARROW;NFKC_CF=2191;SB=XX;WB=XX;-XIDC;-XIDS
-cp;FFEB;-Alpha;bc=ON;dm=2192;gc=Sm;-IDC;-IDS;lb=AL;Math;na=HALFWIDTH RIGHTWARDS ARROW;NFKC_CF=2192;SB=XX;WB=XX;-XIDC;-XIDS
-cp;FFEC;-Alpha;bc=ON;dm=2193;gc=Sm;-IDC;-IDS;lb=AL;Math;na=HALFWIDTH DOWNWARDS ARROW;NFKC_CF=2193;SB=XX;WB=XX;-XIDC;-XIDS
-cp;FFED;-Alpha;bc=ON;dm=25A0;gc=So;-IDC;-IDS;lb=AL;na=HALFWIDTH BLACK SQUARE;NFKC_CF=25A0;SB=XX;WB=XX;-XIDC;-XIDS
-cp;FFEE;-Alpha;bc=ON;dm=25CB;gc=So;-IDC;-IDS;lb=AL;na=HALFWIDTH WHITE CIRCLE;NFKC_CF=25CB;SB=XX;WB=XX;-XIDC;-XIDS
+cp;FFE8;-Alpha;bc=ON;dm=2502;gc=So;-IDC;-IDS;lb=AL;na=HALFWIDTH FORMS LIGHT VERTICAL;NFKC_CF=2502;NFKC_SCF=2502;SB=XX;WB=XX;-XIDC;-XIDS
+cp;FFE9;-Alpha;bc=ON;dm=2190;gc=Sm;-IDC;-IDS;lb=AL;Math;na=HALFWIDTH LEFTWARDS ARROW;NFKC_CF=2190;NFKC_SCF=2190;SB=XX;WB=XX;-XIDC;-XIDS
+cp;FFEA;-Alpha;bc=ON;dm=2191;gc=Sm;-IDC;-IDS;lb=AL;Math;na=HALFWIDTH UPWARDS ARROW;NFKC_CF=2191;NFKC_SCF=2191;SB=XX;WB=XX;-XIDC;-XIDS
+cp;FFEB;-Alpha;bc=ON;dm=2192;gc=Sm;-IDC;-IDS;lb=AL;Math;na=HALFWIDTH RIGHTWARDS ARROW;NFKC_CF=2192;NFKC_SCF=2192;SB=XX;WB=XX;-XIDC;-XIDS
+cp;FFEC;-Alpha;bc=ON;dm=2193;gc=Sm;-IDC;-IDS;lb=AL;Math;na=HALFWIDTH DOWNWARDS ARROW;NFKC_CF=2193;NFKC_SCF=2193;SB=XX;WB=XX;-XIDC;-XIDS
+cp;FFED;-Alpha;bc=ON;dm=25A0;gc=So;-IDC;-IDS;lb=AL;na=HALFWIDTH BLACK SQUARE;NFKC_CF=25A0;NFKC_SCF=25A0;SB=XX;WB=XX;-XIDC;-XIDS
+cp;FFEE;-Alpha;bc=ON;dm=25CB;gc=So;-IDC;-IDS;lb=AL;na=HALFWIDTH WHITE CIRCLE;NFKC_CF=25CB;NFKC_SCF=25CB;SB=XX;WB=XX;-XIDC;-XIDS
unassigned;FFEF
block;FFF0..FFFF;age=3.0;bc=ON;blk=Specials;gc=Cf;lb=CM;sc=Zyyy
# FFF0..FFFF Specials
-unassigned;FFF0..FFF8;bc=BN;CWKCF;DI;GCB=CN;NFKC_CF=;vo=U
+unassigned;FFF0..FFF8;bc=BN;CWKCF;DI;GCB=CN;NFKC_CF=;NFKC_SCF=;vo=U
# Interlinear annotation
cp;FFF9;CI;GCB=CN;jt=T;na=INTERLINEAR ANNOTATION ANCHOR;SB=FO;WB=FO
cp;FFFA;CI;GCB=CN;jt=T;na=INTERLINEAR ANNOTATION SEPARATOR;SB=FO;WB=FO
@@ -21714,7 +21746,7 @@ cp;101FA;na=PHAISTOS DISC SIGN STRAINER
cp;101FB;na=PHAISTOS DISC SIGN SMALL AXE
cp;101FC;na=PHAISTOS DISC SIGN WAVY BAND
# Combining stroke
-cp;101FD;bc=NSM;ccc=220;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;101FD;bc=NSM;ccc=220;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE;SB=EX;sc=Zinh;WB=Extend;XIDC
unassigned;101FE..101FF
block;10280..1029F;age=5.1;Alpha;blk=Lycian;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Lyci;WB=LE;XIDC;XIDS
@@ -21808,7 +21840,7 @@ unassigned;102D1..102DF
block;102E0..102FF;age=7.0;bc=EN;blk=Coptic_Epact_Numbers;gc=No;Gr_Base;lb=AL;nt=Nu;sc=Zyyy;scx=Arab Copt
# 102E0..102FF Coptic Epact Numbers
# Sign
-cp;102E0;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=COPTIC EPACT THOUSANDS MARK;nt=None;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;102E0;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=COPTIC EPACT THOUSANDS MARK;nt=None;SB=EX;sc=Zinh;WB=Extend;XIDC
# Digits
cp;102E1;na=COPTIC EPACT DIGIT ONE;nv=1
cp;102E2;na=COPTIC EPACT DIGIT TWO;nv=2
@@ -21963,11 +21995,11 @@ cp;10373;na=OLD PERMIC LETTER YU
cp;10374;na=OLD PERMIC LETTER YA
cp;10375;na=OLD PERMIC LETTER IA
# Combining letters
-cp;10376;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=COMBINING OLD PERMIC LETTER AN;SB=EX;WB=Extend;-XIDS
-cp;10377;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=COMBINING OLD PERMIC LETTER DOI;SB=EX;WB=Extend;-XIDS
-cp;10378;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=COMBINING OLD PERMIC LETTER ZATA;SB=EX;WB=Extend;-XIDS
-cp;10379;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=COMBINING OLD PERMIC LETTER NENOE;SB=EX;WB=Extend;-XIDS
-cp;1037A;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=COMBINING OLD PERMIC LETTER SII;SB=EX;WB=Extend;-XIDS
+cp;10376;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING OLD PERMIC LETTER AN;SB=EX;WB=Extend;-XIDS
+cp;10377;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING OLD PERMIC LETTER DOI;SB=EX;WB=Extend;-XIDS
+cp;10378;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING OLD PERMIC LETTER ZATA;SB=EX;WB=Extend;-XIDS
+cp;10379;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING OLD PERMIC LETTER NENOE;SB=EX;WB=Extend;-XIDS
+cp;1037A;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=COMBINING OLD PERMIC LETTER SII;SB=EX;WB=Extend;-XIDS
unassigned;1037B..1037F
block;10380..1039F;age=4.0;Alpha;blk=Ugaritic;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Ugar;WB=LE;XIDC;XIDS
@@ -22070,46 +22102,46 @@ unassigned;103D6..103DF
block;10400..1044F;age=3.1;Alpha;blk=Deseret;Cased;CWCM;gc=Ll;Gr_Base;IDC;IDS;lb=AL;SB=LO;sc=Dsrt;WB=LE;XIDC;XIDS
# 10400..1044F Deseret
# Uppercase letters
-cp;10400;cf=10428;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER LONG I;NFKC_CF=10428;SB=UP;scf=10428;slc=10428;Upper
-cp;10401;cf=10429;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER LONG E;NFKC_CF=10429;SB=UP;scf=10429;slc=10429;Upper
-cp;10402;cf=1042A;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER LONG A;NFKC_CF=1042A;SB=UP;scf=1042A;slc=1042A;Upper
-cp;10403;cf=1042B;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER LONG AH;NFKC_CF=1042B;SB=UP;scf=1042B;slc=1042B;Upper
-cp;10404;cf=1042C;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER LONG O;NFKC_CF=1042C;SB=UP;scf=1042C;slc=1042C;Upper
-cp;10405;cf=1042D;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER LONG OO;NFKC_CF=1042D;SB=UP;scf=1042D;slc=1042D;Upper
-cp;10406;cf=1042E;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER SHORT I;NFKC_CF=1042E;SB=UP;scf=1042E;slc=1042E;Upper
-cp;10407;cf=1042F;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER SHORT E;NFKC_CF=1042F;SB=UP;scf=1042F;slc=1042F;Upper
-cp;10408;cf=10430;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER SHORT A;NFKC_CF=10430;SB=UP;scf=10430;slc=10430;Upper
-cp;10409;cf=10431;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER SHORT AH;NFKC_CF=10431;SB=UP;scf=10431;slc=10431;Upper
-cp;1040A;cf=10432;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER SHORT O;NFKC_CF=10432;SB=UP;scf=10432;slc=10432;Upper
-cp;1040B;cf=10433;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER SHORT OO;NFKC_CF=10433;SB=UP;scf=10433;slc=10433;Upper
-cp;1040C;cf=10434;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER AY;NFKC_CF=10434;SB=UP;scf=10434;slc=10434;Upper
-cp;1040D;cf=10435;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER OW;NFKC_CF=10435;SB=UP;scf=10435;slc=10435;Upper
-cp;1040E;cf=10436;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER WU;NFKC_CF=10436;SB=UP;scf=10436;slc=10436;Upper
-cp;1040F;cf=10437;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER YEE;NFKC_CF=10437;SB=UP;scf=10437;slc=10437;Upper
-cp;10410;cf=10438;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER H;NFKC_CF=10438;SB=UP;scf=10438;slc=10438;Upper
-cp;10411;cf=10439;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER PEE;NFKC_CF=10439;SB=UP;scf=10439;slc=10439;Upper
-cp;10412;cf=1043A;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER BEE;NFKC_CF=1043A;SB=UP;scf=1043A;slc=1043A;Upper
-cp;10413;cf=1043B;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER TEE;NFKC_CF=1043B;SB=UP;scf=1043B;slc=1043B;Upper
-cp;10414;cf=1043C;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER DEE;NFKC_CF=1043C;SB=UP;scf=1043C;slc=1043C;Upper
-cp;10415;cf=1043D;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER CHEE;NFKC_CF=1043D;SB=UP;scf=1043D;slc=1043D;Upper
-cp;10416;cf=1043E;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER JEE;NFKC_CF=1043E;SB=UP;scf=1043E;slc=1043E;Upper
-cp;10417;cf=1043F;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER KAY;NFKC_CF=1043F;SB=UP;scf=1043F;slc=1043F;Upper
-cp;10418;cf=10440;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER GAY;NFKC_CF=10440;SB=UP;scf=10440;slc=10440;Upper
-cp;10419;cf=10441;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER EF;NFKC_CF=10441;SB=UP;scf=10441;slc=10441;Upper
-cp;1041A;cf=10442;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER VEE;NFKC_CF=10442;SB=UP;scf=10442;slc=10442;Upper
-cp;1041B;cf=10443;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER ETH;NFKC_CF=10443;SB=UP;scf=10443;slc=10443;Upper
-cp;1041C;cf=10444;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER THEE;NFKC_CF=10444;SB=UP;scf=10444;slc=10444;Upper
-cp;1041D;cf=10445;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER ES;NFKC_CF=10445;SB=UP;scf=10445;slc=10445;Upper
-cp;1041E;cf=10446;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER ZEE;NFKC_CF=10446;SB=UP;scf=10446;slc=10446;Upper
-cp;1041F;cf=10447;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER ESH;NFKC_CF=10447;SB=UP;scf=10447;slc=10447;Upper
-cp;10420;cf=10448;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER ZHEE;NFKC_CF=10448;SB=UP;scf=10448;slc=10448;Upper
-cp;10421;cf=10449;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER ER;NFKC_CF=10449;SB=UP;scf=10449;slc=10449;Upper
-cp;10422;cf=1044A;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER EL;NFKC_CF=1044A;SB=UP;scf=1044A;slc=1044A;Upper
-cp;10423;cf=1044B;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER EM;NFKC_CF=1044B;SB=UP;scf=1044B;slc=1044B;Upper
-cp;10424;cf=1044C;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER EN;NFKC_CF=1044C;SB=UP;scf=1044C;slc=1044C;Upper
-cp;10425;cf=1044D;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER ENG;NFKC_CF=1044D;SB=UP;scf=1044D;slc=1044D;Upper
-cp;10426;age=4.0;cf=1044E;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER OI;NFKC_CF=1044E;SB=UP;scf=1044E;slc=1044E;Upper
-cp;10427;age=4.0;cf=1044F;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER EW;NFKC_CF=1044F;SB=UP;scf=1044F;slc=1044F;Upper
+cp;10400;cf=10428;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER LONG I;NFKC_CF=10428;NFKC_SCF=10428;SB=UP;scf=10428;slc=10428;Upper
+cp;10401;cf=10429;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER LONG E;NFKC_CF=10429;NFKC_SCF=10429;SB=UP;scf=10429;slc=10429;Upper
+cp;10402;cf=1042A;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER LONG A;NFKC_CF=1042A;NFKC_SCF=1042A;SB=UP;scf=1042A;slc=1042A;Upper
+cp;10403;cf=1042B;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER LONG AH;NFKC_CF=1042B;NFKC_SCF=1042B;SB=UP;scf=1042B;slc=1042B;Upper
+cp;10404;cf=1042C;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER LONG O;NFKC_CF=1042C;NFKC_SCF=1042C;SB=UP;scf=1042C;slc=1042C;Upper
+cp;10405;cf=1042D;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER LONG OO;NFKC_CF=1042D;NFKC_SCF=1042D;SB=UP;scf=1042D;slc=1042D;Upper
+cp;10406;cf=1042E;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER SHORT I;NFKC_CF=1042E;NFKC_SCF=1042E;SB=UP;scf=1042E;slc=1042E;Upper
+cp;10407;cf=1042F;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER SHORT E;NFKC_CF=1042F;NFKC_SCF=1042F;SB=UP;scf=1042F;slc=1042F;Upper
+cp;10408;cf=10430;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER SHORT A;NFKC_CF=10430;NFKC_SCF=10430;SB=UP;scf=10430;slc=10430;Upper
+cp;10409;cf=10431;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER SHORT AH;NFKC_CF=10431;NFKC_SCF=10431;SB=UP;scf=10431;slc=10431;Upper
+cp;1040A;cf=10432;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER SHORT O;NFKC_CF=10432;NFKC_SCF=10432;SB=UP;scf=10432;slc=10432;Upper
+cp;1040B;cf=10433;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER SHORT OO;NFKC_CF=10433;NFKC_SCF=10433;SB=UP;scf=10433;slc=10433;Upper
+cp;1040C;cf=10434;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER AY;NFKC_CF=10434;NFKC_SCF=10434;SB=UP;scf=10434;slc=10434;Upper
+cp;1040D;cf=10435;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER OW;NFKC_CF=10435;NFKC_SCF=10435;SB=UP;scf=10435;slc=10435;Upper
+cp;1040E;cf=10436;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER WU;NFKC_CF=10436;NFKC_SCF=10436;SB=UP;scf=10436;slc=10436;Upper
+cp;1040F;cf=10437;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER YEE;NFKC_CF=10437;NFKC_SCF=10437;SB=UP;scf=10437;slc=10437;Upper
+cp;10410;cf=10438;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER H;NFKC_CF=10438;NFKC_SCF=10438;SB=UP;scf=10438;slc=10438;Upper
+cp;10411;cf=10439;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER PEE;NFKC_CF=10439;NFKC_SCF=10439;SB=UP;scf=10439;slc=10439;Upper
+cp;10412;cf=1043A;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER BEE;NFKC_CF=1043A;NFKC_SCF=1043A;SB=UP;scf=1043A;slc=1043A;Upper
+cp;10413;cf=1043B;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER TEE;NFKC_CF=1043B;NFKC_SCF=1043B;SB=UP;scf=1043B;slc=1043B;Upper
+cp;10414;cf=1043C;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER DEE;NFKC_CF=1043C;NFKC_SCF=1043C;SB=UP;scf=1043C;slc=1043C;Upper
+cp;10415;cf=1043D;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER CHEE;NFKC_CF=1043D;NFKC_SCF=1043D;SB=UP;scf=1043D;slc=1043D;Upper
+cp;10416;cf=1043E;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER JEE;NFKC_CF=1043E;NFKC_SCF=1043E;SB=UP;scf=1043E;slc=1043E;Upper
+cp;10417;cf=1043F;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER KAY;NFKC_CF=1043F;NFKC_SCF=1043F;SB=UP;scf=1043F;slc=1043F;Upper
+cp;10418;cf=10440;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER GAY;NFKC_CF=10440;NFKC_SCF=10440;SB=UP;scf=10440;slc=10440;Upper
+cp;10419;cf=10441;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER EF;NFKC_CF=10441;NFKC_SCF=10441;SB=UP;scf=10441;slc=10441;Upper
+cp;1041A;cf=10442;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER VEE;NFKC_CF=10442;NFKC_SCF=10442;SB=UP;scf=10442;slc=10442;Upper
+cp;1041B;cf=10443;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER ETH;NFKC_CF=10443;NFKC_SCF=10443;SB=UP;scf=10443;slc=10443;Upper
+cp;1041C;cf=10444;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER THEE;NFKC_CF=10444;NFKC_SCF=10444;SB=UP;scf=10444;slc=10444;Upper
+cp;1041D;cf=10445;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER ES;NFKC_CF=10445;NFKC_SCF=10445;SB=UP;scf=10445;slc=10445;Upper
+cp;1041E;cf=10446;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER ZEE;NFKC_CF=10446;NFKC_SCF=10446;SB=UP;scf=10446;slc=10446;Upper
+cp;1041F;cf=10447;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER ESH;NFKC_CF=10447;NFKC_SCF=10447;SB=UP;scf=10447;slc=10447;Upper
+cp;10420;cf=10448;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER ZHEE;NFKC_CF=10448;NFKC_SCF=10448;SB=UP;scf=10448;slc=10448;Upper
+cp;10421;cf=10449;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER ER;NFKC_CF=10449;NFKC_SCF=10449;SB=UP;scf=10449;slc=10449;Upper
+cp;10422;cf=1044A;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER EL;NFKC_CF=1044A;NFKC_SCF=1044A;SB=UP;scf=1044A;slc=1044A;Upper
+cp;10423;cf=1044B;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER EM;NFKC_CF=1044B;NFKC_SCF=1044B;SB=UP;scf=1044B;slc=1044B;Upper
+cp;10424;cf=1044C;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER EN;NFKC_CF=1044C;NFKC_SCF=1044C;SB=UP;scf=1044C;slc=1044C;Upper
+cp;10425;cf=1044D;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER ENG;NFKC_CF=1044D;NFKC_SCF=1044D;SB=UP;scf=1044D;slc=1044D;Upper
+cp;10426;age=4.0;cf=1044E;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER OI;NFKC_CF=1044E;NFKC_SCF=1044E;SB=UP;scf=1044E;slc=1044E;Upper
+cp;10427;age=4.0;cf=1044F;CWCF;CWKCF;CWL;gc=Lu;na=DESERET CAPITAL LETTER EW;NFKC_CF=1044F;NFKC_SCF=1044F;SB=UP;scf=1044F;slc=1044F;Upper
# Lowercase letters
cp;10428;CWT;CWU;Lower;na=DESERET SMALL LETTER LONG I;stc=10400;suc=10400
cp;10429;CWT;CWU;Lower;na=DESERET SMALL LETTER LONG E;stc=10401;suc=10401
@@ -22256,42 +22288,42 @@ unassigned;104AA..104AF
block;104B0..104FF;age=9.0;Alpha;blk=Osage;Cased;CWCM;gc=Ll;Gr_Base;IDC;IDS;lb=AL;SB=LO;sc=Osge;WB=LE;XIDC;XIDS
# 104B0..104FF Osage
# Uppercase letters
-cp;104B0;cf=104D8;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER A;NFKC_CF=104D8;SB=UP;scf=104D8;slc=104D8;Upper
-cp;104B1;cf=104D9;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER AI;NFKC_CF=104D9;SB=UP;scf=104D9;slc=104D9;Upper
-cp;104B2;cf=104DA;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER AIN;NFKC_CF=104DA;SB=UP;scf=104DA;slc=104DA;Upper
-cp;104B3;cf=104DB;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER AH;NFKC_CF=104DB;SB=UP;scf=104DB;slc=104DB;Upper
-cp;104B4;cf=104DC;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER BRA;NFKC_CF=104DC;SB=UP;scf=104DC;slc=104DC;Upper
-cp;104B5;cf=104DD;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER CHA;NFKC_CF=104DD;SB=UP;scf=104DD;slc=104DD;Upper
-cp;104B6;cf=104DE;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER EHCHA;NFKC_CF=104DE;SB=UP;scf=104DE;slc=104DE;Upper
-cp;104B7;cf=104DF;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER E;NFKC_CF=104DF;SB=UP;scf=104DF;slc=104DF;Upper
-cp;104B8;cf=104E0;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER EIN;NFKC_CF=104E0;SB=UP;scf=104E0;slc=104E0;Upper
-cp;104B9;cf=104E1;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER HA;NFKC_CF=104E1;SB=UP;scf=104E1;slc=104E1;Upper
-cp;104BA;cf=104E2;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER HYA;NFKC_CF=104E2;SB=UP;scf=104E2;slc=104E2;Upper
-cp;104BB;cf=104E3;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER I;NFKC_CF=104E3;SB=UP;scf=104E3;slc=104E3;Upper
-cp;104BC;cf=104E4;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER KA;NFKC_CF=104E4;SB=UP;scf=104E4;slc=104E4;Upper
-cp;104BD;cf=104E5;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER EHKA;NFKC_CF=104E5;SB=UP;scf=104E5;slc=104E5;Upper
-cp;104BE;cf=104E6;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER KYA;NFKC_CF=104E6;SB=UP;scf=104E6;slc=104E6;Upper
-cp;104BF;cf=104E7;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER LA;NFKC_CF=104E7;SB=UP;scf=104E7;slc=104E7;Upper
-cp;104C0;cf=104E8;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER MA;NFKC_CF=104E8;SB=UP;scf=104E8;slc=104E8;Upper
-cp;104C1;cf=104E9;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER NA;NFKC_CF=104E9;SB=UP;scf=104E9;slc=104E9;Upper
-cp;104C2;cf=104EA;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER O;NFKC_CF=104EA;SB=UP;scf=104EA;slc=104EA;Upper
-cp;104C3;cf=104EB;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER OIN;NFKC_CF=104EB;SB=UP;scf=104EB;slc=104EB;Upper
-cp;104C4;cf=104EC;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER PA;NFKC_CF=104EC;SB=UP;scf=104EC;slc=104EC;Upper
-cp;104C5;cf=104ED;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER EHPA;NFKC_CF=104ED;SB=UP;scf=104ED;slc=104ED;Upper
-cp;104C6;cf=104EE;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER SA;NFKC_CF=104EE;SB=UP;scf=104EE;slc=104EE;Upper
-cp;104C7;cf=104EF;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER SHA;NFKC_CF=104EF;SB=UP;scf=104EF;slc=104EF;Upper
-cp;104C8;cf=104F0;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER TA;NFKC_CF=104F0;SB=UP;scf=104F0;slc=104F0;Upper
-cp;104C9;cf=104F1;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER EHTA;NFKC_CF=104F1;SB=UP;scf=104F1;slc=104F1;Upper
-cp;104CA;cf=104F2;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER TSA;NFKC_CF=104F2;SB=UP;scf=104F2;slc=104F2;Upper
-cp;104CB;cf=104F3;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER EHTSA;NFKC_CF=104F3;SB=UP;scf=104F3;slc=104F3;Upper
-cp;104CC;cf=104F4;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER TSHA;NFKC_CF=104F4;SB=UP;scf=104F4;slc=104F4;Upper
-cp;104CD;cf=104F5;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER DHA;NFKC_CF=104F5;SB=UP;scf=104F5;slc=104F5;Upper
-cp;104CE;cf=104F6;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER U;NFKC_CF=104F6;SB=UP;scf=104F6;slc=104F6;Upper
-cp;104CF;cf=104F7;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER WA;NFKC_CF=104F7;SB=UP;scf=104F7;slc=104F7;Upper
-cp;104D0;cf=104F8;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER KHA;NFKC_CF=104F8;SB=UP;scf=104F8;slc=104F8;Upper
-cp;104D1;cf=104F9;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER GHA;NFKC_CF=104F9;SB=UP;scf=104F9;slc=104F9;Upper
-cp;104D2;cf=104FA;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER ZA;NFKC_CF=104FA;SB=UP;scf=104FA;slc=104FA;Upper
-cp;104D3;cf=104FB;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER ZHA;NFKC_CF=104FB;SB=UP;scf=104FB;slc=104FB;Upper
+cp;104B0;cf=104D8;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER A;NFKC_CF=104D8;NFKC_SCF=104D8;SB=UP;scf=104D8;slc=104D8;Upper
+cp;104B1;cf=104D9;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER AI;NFKC_CF=104D9;NFKC_SCF=104D9;SB=UP;scf=104D9;slc=104D9;Upper
+cp;104B2;cf=104DA;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER AIN;NFKC_CF=104DA;NFKC_SCF=104DA;SB=UP;scf=104DA;slc=104DA;Upper
+cp;104B3;cf=104DB;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER AH;NFKC_CF=104DB;NFKC_SCF=104DB;SB=UP;scf=104DB;slc=104DB;Upper
+cp;104B4;cf=104DC;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER BRA;NFKC_CF=104DC;NFKC_SCF=104DC;SB=UP;scf=104DC;slc=104DC;Upper
+cp;104B5;cf=104DD;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER CHA;NFKC_CF=104DD;NFKC_SCF=104DD;SB=UP;scf=104DD;slc=104DD;Upper
+cp;104B6;cf=104DE;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER EHCHA;NFKC_CF=104DE;NFKC_SCF=104DE;SB=UP;scf=104DE;slc=104DE;Upper
+cp;104B7;cf=104DF;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER E;NFKC_CF=104DF;NFKC_SCF=104DF;SB=UP;scf=104DF;slc=104DF;Upper
+cp;104B8;cf=104E0;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER EIN;NFKC_CF=104E0;NFKC_SCF=104E0;SB=UP;scf=104E0;slc=104E0;Upper
+cp;104B9;cf=104E1;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER HA;NFKC_CF=104E1;NFKC_SCF=104E1;SB=UP;scf=104E1;slc=104E1;Upper
+cp;104BA;cf=104E2;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER HYA;NFKC_CF=104E2;NFKC_SCF=104E2;SB=UP;scf=104E2;slc=104E2;Upper
+cp;104BB;cf=104E3;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER I;NFKC_CF=104E3;NFKC_SCF=104E3;SB=UP;scf=104E3;slc=104E3;Upper
+cp;104BC;cf=104E4;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER KA;NFKC_CF=104E4;NFKC_SCF=104E4;SB=UP;scf=104E4;slc=104E4;Upper
+cp;104BD;cf=104E5;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER EHKA;NFKC_CF=104E5;NFKC_SCF=104E5;SB=UP;scf=104E5;slc=104E5;Upper
+cp;104BE;cf=104E6;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER KYA;NFKC_CF=104E6;NFKC_SCF=104E6;SB=UP;scf=104E6;slc=104E6;Upper
+cp;104BF;cf=104E7;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER LA;NFKC_CF=104E7;NFKC_SCF=104E7;SB=UP;scf=104E7;slc=104E7;Upper
+cp;104C0;cf=104E8;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER MA;NFKC_CF=104E8;NFKC_SCF=104E8;SB=UP;scf=104E8;slc=104E8;Upper
+cp;104C1;cf=104E9;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER NA;NFKC_CF=104E9;NFKC_SCF=104E9;SB=UP;scf=104E9;slc=104E9;Upper
+cp;104C2;cf=104EA;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER O;NFKC_CF=104EA;NFKC_SCF=104EA;SB=UP;scf=104EA;slc=104EA;Upper
+cp;104C3;cf=104EB;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER OIN;NFKC_CF=104EB;NFKC_SCF=104EB;SB=UP;scf=104EB;slc=104EB;Upper
+cp;104C4;cf=104EC;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER PA;NFKC_CF=104EC;NFKC_SCF=104EC;SB=UP;scf=104EC;slc=104EC;Upper
+cp;104C5;cf=104ED;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER EHPA;NFKC_CF=104ED;NFKC_SCF=104ED;SB=UP;scf=104ED;slc=104ED;Upper
+cp;104C6;cf=104EE;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER SA;NFKC_CF=104EE;NFKC_SCF=104EE;SB=UP;scf=104EE;slc=104EE;Upper
+cp;104C7;cf=104EF;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER SHA;NFKC_CF=104EF;NFKC_SCF=104EF;SB=UP;scf=104EF;slc=104EF;Upper
+cp;104C8;cf=104F0;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER TA;NFKC_CF=104F0;NFKC_SCF=104F0;SB=UP;scf=104F0;slc=104F0;Upper
+cp;104C9;cf=104F1;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER EHTA;NFKC_CF=104F1;NFKC_SCF=104F1;SB=UP;scf=104F1;slc=104F1;Upper
+cp;104CA;cf=104F2;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER TSA;NFKC_CF=104F2;NFKC_SCF=104F2;SB=UP;scf=104F2;slc=104F2;Upper
+cp;104CB;cf=104F3;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER EHTSA;NFKC_CF=104F3;NFKC_SCF=104F3;SB=UP;scf=104F3;slc=104F3;Upper
+cp;104CC;cf=104F4;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER TSHA;NFKC_CF=104F4;NFKC_SCF=104F4;SB=UP;scf=104F4;slc=104F4;Upper
+cp;104CD;cf=104F5;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER DHA;NFKC_CF=104F5;NFKC_SCF=104F5;SB=UP;scf=104F5;slc=104F5;Upper
+cp;104CE;cf=104F6;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER U;NFKC_CF=104F6;NFKC_SCF=104F6;SB=UP;scf=104F6;slc=104F6;Upper
+cp;104CF;cf=104F7;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER WA;NFKC_CF=104F7;NFKC_SCF=104F7;SB=UP;scf=104F7;slc=104F7;Upper
+cp;104D0;cf=104F8;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER KHA;NFKC_CF=104F8;NFKC_SCF=104F8;SB=UP;scf=104F8;slc=104F8;Upper
+cp;104D1;cf=104F9;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER GHA;NFKC_CF=104F9;NFKC_SCF=104F9;SB=UP;scf=104F9;slc=104F9;Upper
+cp;104D2;cf=104FA;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER ZA;NFKC_CF=104FA;NFKC_SCF=104FA;SB=UP;scf=104FA;slc=104FA;Upper
+cp;104D3;cf=104FB;CWCF;CWKCF;CWL;gc=Lu;na=OSAGE CAPITAL LETTER ZHA;NFKC_CF=104FB;NFKC_SCF=104FB;SB=UP;scf=104FB;slc=104FB;Upper
unassigned;104D4..104D7
# Lowercase letters
cp;104D8;CWT;CWU;Lower;na=OSAGE SMALL LETTER A;stc=104B0;suc=104B0
@@ -22439,44 +22471,44 @@ cp;1056F;-Alpha;gc=Po;-IDC;-IDS;na=CAUCASIAN ALBANIAN CITATION MARK;SB=XX;WB=XX;
block;10570..105BF;age=14.0;Alpha;blk=Vithkuqi;Cased;CWCM;gc=Ll;Gr_Base;IDC;IDS;lb=AL;SB=LO;sc=Vith;WB=LE;XIDC;XIDS
# 10570..105BF Vithkuqi
# Capital letters
-cp;10570;cf=10597;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER A;NFKC_CF=10597;SB=UP;scf=10597;slc=10597;Upper
-cp;10571;cf=10598;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER BBE;NFKC_CF=10598;SB=UP;scf=10598;slc=10598;Upper
-cp;10572;cf=10599;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER BE;NFKC_CF=10599;SB=UP;scf=10599;slc=10599;Upper
-cp;10573;cf=1059A;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER CE;NFKC_CF=1059A;SB=UP;scf=1059A;slc=1059A;Upper
-cp;10574;cf=1059B;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER CHE;NFKC_CF=1059B;SB=UP;scf=1059B;slc=1059B;Upper
-cp;10575;cf=1059C;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER DE;NFKC_CF=1059C;SB=UP;scf=1059C;slc=1059C;Upper
-cp;10576;cf=1059D;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER DHE;NFKC_CF=1059D;SB=UP;scf=1059D;slc=1059D;Upper
-cp;10577;cf=1059E;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER EI;NFKC_CF=1059E;SB=UP;scf=1059E;slc=1059E;Upper
-cp;10578;cf=1059F;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER E;NFKC_CF=1059F;SB=UP;scf=1059F;slc=1059F;Upper
-cp;10579;cf=105A0;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER FE;NFKC_CF=105A0;SB=UP;scf=105A0;slc=105A0;Upper
-cp;1057A;cf=105A1;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER GA;NFKC_CF=105A1;SB=UP;scf=105A1;slc=105A1;Upper
+cp;10570;cf=10597;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER A;NFKC_CF=10597;NFKC_SCF=10597;SB=UP;scf=10597;slc=10597;Upper
+cp;10571;cf=10598;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER BBE;NFKC_CF=10598;NFKC_SCF=10598;SB=UP;scf=10598;slc=10598;Upper
+cp;10572;cf=10599;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER BE;NFKC_CF=10599;NFKC_SCF=10599;SB=UP;scf=10599;slc=10599;Upper
+cp;10573;cf=1059A;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER CE;NFKC_CF=1059A;NFKC_SCF=1059A;SB=UP;scf=1059A;slc=1059A;Upper
+cp;10574;cf=1059B;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER CHE;NFKC_CF=1059B;NFKC_SCF=1059B;SB=UP;scf=1059B;slc=1059B;Upper
+cp;10575;cf=1059C;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER DE;NFKC_CF=1059C;NFKC_SCF=1059C;SB=UP;scf=1059C;slc=1059C;Upper
+cp;10576;cf=1059D;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER DHE;NFKC_CF=1059D;NFKC_SCF=1059D;SB=UP;scf=1059D;slc=1059D;Upper
+cp;10577;cf=1059E;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER EI;NFKC_CF=1059E;NFKC_SCF=1059E;SB=UP;scf=1059E;slc=1059E;Upper
+cp;10578;cf=1059F;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER E;NFKC_CF=1059F;NFKC_SCF=1059F;SB=UP;scf=1059F;slc=1059F;Upper
+cp;10579;cf=105A0;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER FE;NFKC_CF=105A0;NFKC_SCF=105A0;SB=UP;scf=105A0;slc=105A0;Upper
+cp;1057A;cf=105A1;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER GA;NFKC_CF=105A1;NFKC_SCF=105A1;SB=UP;scf=105A1;slc=105A1;Upper
unassigned;1057B
-cp;1057C;cf=105A3;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER HA;NFKC_CF=105A3;SB=UP;scf=105A3;slc=105A3;Upper
-cp;1057D;cf=105A4;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER HHA;NFKC_CF=105A4;SB=UP;scf=105A4;slc=105A4;Upper
-cp;1057E;cf=105A5;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER I;NFKC_CF=105A5;SB=UP;scf=105A5;slc=105A5;Upper
-cp;1057F;cf=105A6;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER IJE;NFKC_CF=105A6;SB=UP;scf=105A6;slc=105A6;Upper
-cp;10580;cf=105A7;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER JE;NFKC_CF=105A7;SB=UP;scf=105A7;slc=105A7;Upper
-cp;10581;cf=105A8;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER KA;NFKC_CF=105A8;SB=UP;scf=105A8;slc=105A8;Upper
-cp;10582;cf=105A9;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER LA;NFKC_CF=105A9;SB=UP;scf=105A9;slc=105A9;Upper
-cp;10583;cf=105AA;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER LLA;NFKC_CF=105AA;SB=UP;scf=105AA;slc=105AA;Upper
-cp;10584;cf=105AB;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER ME;NFKC_CF=105AB;SB=UP;scf=105AB;slc=105AB;Upper
-cp;10585;cf=105AC;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER NE;NFKC_CF=105AC;SB=UP;scf=105AC;slc=105AC;Upper
-cp;10586;cf=105AD;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER NJE;NFKC_CF=105AD;SB=UP;scf=105AD;slc=105AD;Upper
-cp;10587;cf=105AE;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER O;NFKC_CF=105AE;SB=UP;scf=105AE;slc=105AE;Upper
-cp;10588;cf=105AF;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER PE;NFKC_CF=105AF;SB=UP;scf=105AF;slc=105AF;Upper
-cp;10589;cf=105B0;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER QA;NFKC_CF=105B0;SB=UP;scf=105B0;slc=105B0;Upper
-cp;1058A;cf=105B1;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER RE;NFKC_CF=105B1;SB=UP;scf=105B1;slc=105B1;Upper
+cp;1057C;cf=105A3;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER HA;NFKC_CF=105A3;NFKC_SCF=105A3;SB=UP;scf=105A3;slc=105A3;Upper
+cp;1057D;cf=105A4;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER HHA;NFKC_CF=105A4;NFKC_SCF=105A4;SB=UP;scf=105A4;slc=105A4;Upper
+cp;1057E;cf=105A5;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER I;NFKC_CF=105A5;NFKC_SCF=105A5;SB=UP;scf=105A5;slc=105A5;Upper
+cp;1057F;cf=105A6;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER IJE;NFKC_CF=105A6;NFKC_SCF=105A6;SB=UP;scf=105A6;slc=105A6;Upper
+cp;10580;cf=105A7;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER JE;NFKC_CF=105A7;NFKC_SCF=105A7;SB=UP;scf=105A7;slc=105A7;Upper
+cp;10581;cf=105A8;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER KA;NFKC_CF=105A8;NFKC_SCF=105A8;SB=UP;scf=105A8;slc=105A8;Upper
+cp;10582;cf=105A9;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER LA;NFKC_CF=105A9;NFKC_SCF=105A9;SB=UP;scf=105A9;slc=105A9;Upper
+cp;10583;cf=105AA;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER LLA;NFKC_CF=105AA;NFKC_SCF=105AA;SB=UP;scf=105AA;slc=105AA;Upper
+cp;10584;cf=105AB;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER ME;NFKC_CF=105AB;NFKC_SCF=105AB;SB=UP;scf=105AB;slc=105AB;Upper
+cp;10585;cf=105AC;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER NE;NFKC_CF=105AC;NFKC_SCF=105AC;SB=UP;scf=105AC;slc=105AC;Upper
+cp;10586;cf=105AD;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER NJE;NFKC_CF=105AD;NFKC_SCF=105AD;SB=UP;scf=105AD;slc=105AD;Upper
+cp;10587;cf=105AE;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER O;NFKC_CF=105AE;NFKC_SCF=105AE;SB=UP;scf=105AE;slc=105AE;Upper
+cp;10588;cf=105AF;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER PE;NFKC_CF=105AF;NFKC_SCF=105AF;SB=UP;scf=105AF;slc=105AF;Upper
+cp;10589;cf=105B0;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER QA;NFKC_CF=105B0;NFKC_SCF=105B0;SB=UP;scf=105B0;slc=105B0;Upper
+cp;1058A;cf=105B1;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER RE;NFKC_CF=105B1;NFKC_SCF=105B1;SB=UP;scf=105B1;slc=105B1;Upper
unassigned;1058B
-cp;1058C;cf=105B3;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER SE;NFKC_CF=105B3;SB=UP;scf=105B3;slc=105B3;Upper
-cp;1058D;cf=105B4;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER SHE;NFKC_CF=105B4;SB=UP;scf=105B4;slc=105B4;Upper
-cp;1058E;cf=105B5;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER TE;NFKC_CF=105B5;SB=UP;scf=105B5;slc=105B5;Upper
-cp;1058F;cf=105B6;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER THE;NFKC_CF=105B6;SB=UP;scf=105B6;slc=105B6;Upper
-cp;10590;cf=105B7;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER U;NFKC_CF=105B7;SB=UP;scf=105B7;slc=105B7;Upper
-cp;10591;cf=105B8;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER VE;NFKC_CF=105B8;SB=UP;scf=105B8;slc=105B8;Upper
-cp;10592;cf=105B9;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER XE;NFKC_CF=105B9;SB=UP;scf=105B9;slc=105B9;Upper
+cp;1058C;cf=105B3;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER SE;NFKC_CF=105B3;NFKC_SCF=105B3;SB=UP;scf=105B3;slc=105B3;Upper
+cp;1058D;cf=105B4;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER SHE;NFKC_CF=105B4;NFKC_SCF=105B4;SB=UP;scf=105B4;slc=105B4;Upper
+cp;1058E;cf=105B5;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER TE;NFKC_CF=105B5;NFKC_SCF=105B5;SB=UP;scf=105B5;slc=105B5;Upper
+cp;1058F;cf=105B6;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER THE;NFKC_CF=105B6;NFKC_SCF=105B6;SB=UP;scf=105B6;slc=105B6;Upper
+cp;10590;cf=105B7;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER U;NFKC_CF=105B7;NFKC_SCF=105B7;SB=UP;scf=105B7;slc=105B7;Upper
+cp;10591;cf=105B8;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER VE;NFKC_CF=105B8;NFKC_SCF=105B8;SB=UP;scf=105B8;slc=105B8;Upper
+cp;10592;cf=105B9;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER XE;NFKC_CF=105B9;NFKC_SCF=105B9;SB=UP;scf=105B9;slc=105B9;Upper
unassigned;10593
-cp;10594;cf=105BB;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER Y;NFKC_CF=105BB;SB=UP;scf=105BB;slc=105BB;Upper
-cp;10595;cf=105BC;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER ZE;NFKC_CF=105BC;SB=UP;scf=105BC;slc=105BC;Upper
+cp;10594;cf=105BB;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER Y;NFKC_CF=105BB;NFKC_SCF=105BB;SB=UP;scf=105BB;slc=105BB;Upper
+cp;10595;cf=105BC;CWCF;CWKCF;CWL;gc=Lu;na=VITHKUQI CAPITAL LETTER ZE;NFKC_CF=105BC;NFKC_SCF=105BC;SB=UP;scf=105BC;slc=105BC;Upper
unassigned;10596
# Small letters
cp;10597;CWT;CWU;Lower;na=VITHKUQI SMALL LETTER A;stc=10570;suc=10570
@@ -22877,64 +22909,64 @@ block;10780..107BF;age=14.0;Alpha;blk=Latin_Ext_F;Cased;CI;CWKCF;Dia;dt=Sup;gc=L
# Modifier letter for VoQS
cp;10780;-CWKCF;dt=None;na=MODIFIER LETTER SMALL CAPITAL AA;NFKC_QC=Y;NFKD_QC=Y
# Modifier letters for IPA
-cp;10781;-Cased;dm=02D0;Ext;-Lower;na=MODIFIER LETTER SUPERSCRIPT TRIANGULAR COLON;NFKC_CF=02D0;SB=LE
-cp;10782;-Cased;dm=02D1;Ext;-Lower;na=MODIFIER LETTER SUPERSCRIPT HALF TRIANGULAR COLON;NFKC_CF=02D1;SB=LE
-cp;10783;dm=00E6;na=MODIFIER LETTER SMALL AE;NFKC_CF=00E6
-cp;10784;dm=0299;na=MODIFIER LETTER SMALL CAPITAL B;NFKC_CF=0299
-cp;10785;dm=0253;na=MODIFIER LETTER SMALL B WITH HOOK;NFKC_CF=0253
+cp;10781;-Cased;dm=02D0;Ext;-Lower;na=MODIFIER LETTER SUPERSCRIPT TRIANGULAR COLON;NFKC_CF=02D0;NFKC_SCF=02D0;SB=LE
+cp;10782;-Cased;dm=02D1;Ext;-Lower;na=MODIFIER LETTER SUPERSCRIPT HALF TRIANGULAR COLON;NFKC_CF=02D1;NFKC_SCF=02D1;SB=LE
+cp;10783;dm=00E6;na=MODIFIER LETTER SMALL AE;NFKC_CF=00E6;NFKC_SCF=00E6
+cp;10784;dm=0299;na=MODIFIER LETTER SMALL CAPITAL B;NFKC_CF=0299;NFKC_SCF=0299
+cp;10785;dm=0253;na=MODIFIER LETTER SMALL B WITH HOOK;NFKC_CF=0253;NFKC_SCF=0253
unassigned;10786
-cp;10787;dm=02A3;na=MODIFIER LETTER SMALL DZ DIGRAPH;NFKC_CF=02A3
-cp;10788;dm=AB66;na=MODIFIER LETTER SMALL DZ DIGRAPH WITH RETROFLEX HOOK;NFKC_CF=AB66
-cp;10789;dm=02A5;na=MODIFIER LETTER SMALL DZ DIGRAPH WITH CURL;NFKC_CF=02A5
-cp;1078A;dm=02A4;na=MODIFIER LETTER SMALL DEZH DIGRAPH;NFKC_CF=02A4
-cp;1078B;dm=0256;na=MODIFIER LETTER SMALL D WITH TAIL;NFKC_CF=0256
-cp;1078C;dm=0257;na=MODIFIER LETTER SMALL D WITH HOOK;NFKC_CF=0257
-cp;1078D;dm=1D91;na=MODIFIER LETTER SMALL D WITH HOOK AND TAIL;NFKC_CF=1D91
-cp;1078E;dm=0258;na=MODIFIER LETTER SMALL REVERSED E;NFKC_CF=0258
-cp;1078F;dm=025E;na=MODIFIER LETTER SMALL CLOSED REVERSED OPEN E;NFKC_CF=025E
-cp;10790;dm=02A9;na=MODIFIER LETTER SMALL FENG DIGRAPH;NFKC_CF=02A9
-cp;10791;dm=0264;na=MODIFIER LETTER SMALL RAMS HORN;NFKC_CF=0264
-cp;10792;dm=0262;na=MODIFIER LETTER SMALL CAPITAL G;NFKC_CF=0262
-cp;10793;dm=0260;na=MODIFIER LETTER SMALL G WITH HOOK;NFKC_CF=0260
-cp;10794;dm=029B;na=MODIFIER LETTER SMALL CAPITAL G WITH HOOK;NFKC_CF=029B
-cp;10795;dm=0127;na=MODIFIER LETTER SMALL H WITH STROKE;NFKC_CF=0127
-cp;10796;dm=029C;na=MODIFIER LETTER SMALL CAPITAL H;NFKC_CF=029C
-cp;10797;dm=0267;na=MODIFIER LETTER SMALL HENG WITH HOOK;NFKC_CF=0267
-cp;10798;dm=0284;na=MODIFIER LETTER SMALL DOTLESS J WITH STROKE AND HOOK;NFKC_CF=0284
-cp;10799;dm=02AA;na=MODIFIER LETTER SMALL LS DIGRAPH;NFKC_CF=02AA
-cp;1079A;dm=02AB;na=MODIFIER LETTER SMALL LZ DIGRAPH;NFKC_CF=02AB
-cp;1079B;dm=026C;na=MODIFIER LETTER SMALL L WITH BELT;NFKC_CF=026C
-cp;1079C;dm=1DF04;na=MODIFIER LETTER SMALL CAPITAL L WITH BELT;NFKC_CF=1DF04
-cp;1079D;dm=A78E;na=MODIFIER LETTER SMALL L WITH RETROFLEX HOOK AND BELT;NFKC_CF=A78E
-cp;1079E;dm=026E;na=MODIFIER LETTER SMALL LEZH;NFKC_CF=026E
-cp;1079F;dm=1DF05;na=MODIFIER LETTER SMALL LEZH WITH RETROFLEX HOOK;NFKC_CF=1DF05
-cp;107A0;dm=028E;na=MODIFIER LETTER SMALL TURNED Y;NFKC_CF=028E
-cp;107A1;dm=1DF06;na=MODIFIER LETTER SMALL TURNED Y WITH BELT;NFKC_CF=1DF06
-cp;107A2;dm=00F8;na=MODIFIER LETTER SMALL O WITH STROKE;NFKC_CF=00F8
-cp;107A3;dm=0276;na=MODIFIER LETTER SMALL CAPITAL OE;NFKC_CF=0276
-cp;107A4;dm=0277;na=MODIFIER LETTER SMALL CLOSED OMEGA;NFKC_CF=0277
-cp;107A5;dm=0071;na=MODIFIER LETTER SMALL Q;NFKC_CF=0071
-cp;107A6;dm=027A;na=MODIFIER LETTER SMALL TURNED R WITH LONG LEG;NFKC_CF=027A
-cp;107A7;dm=1DF08;na=MODIFIER LETTER SMALL TURNED R WITH LONG LEG AND RETROFLEX HOOK;NFKC_CF=1DF08
-cp;107A8;dm=027D;na=MODIFIER LETTER SMALL R WITH TAIL;NFKC_CF=027D
-cp;107A9;dm=027E;na=MODIFIER LETTER SMALL R WITH FISHHOOK;NFKC_CF=027E
-cp;107AA;dm=0280;na=MODIFIER LETTER SMALL CAPITAL R;NFKC_CF=0280
-cp;107AB;dm=02A8;na=MODIFIER LETTER SMALL TC DIGRAPH WITH CURL;NFKC_CF=02A8
-cp;107AC;dm=02A6;na=MODIFIER LETTER SMALL TS DIGRAPH;NFKC_CF=02A6
-cp;107AD;dm=AB67;na=MODIFIER LETTER SMALL TS DIGRAPH WITH RETROFLEX HOOK;NFKC_CF=AB67
-cp;107AE;dm=02A7;na=MODIFIER LETTER SMALL TESH DIGRAPH;NFKC_CF=02A7
-cp;107AF;dm=0288;na=MODIFIER LETTER SMALL T WITH RETROFLEX HOOK;NFKC_CF=0288
-cp;107B0;dm=2C71;na=MODIFIER LETTER SMALL V WITH RIGHT HOOK;NFKC_CF=2C71
+cp;10787;dm=02A3;na=MODIFIER LETTER SMALL DZ DIGRAPH;NFKC_CF=02A3;NFKC_SCF=02A3
+cp;10788;dm=AB66;na=MODIFIER LETTER SMALL DZ DIGRAPH WITH RETROFLEX HOOK;NFKC_CF=AB66;NFKC_SCF=AB66
+cp;10789;dm=02A5;na=MODIFIER LETTER SMALL DZ DIGRAPH WITH CURL;NFKC_CF=02A5;NFKC_SCF=02A5
+cp;1078A;dm=02A4;na=MODIFIER LETTER SMALL DEZH DIGRAPH;NFKC_CF=02A4;NFKC_SCF=02A4
+cp;1078B;dm=0256;na=MODIFIER LETTER SMALL D WITH TAIL;NFKC_CF=0256;NFKC_SCF=0256
+cp;1078C;dm=0257;na=MODIFIER LETTER SMALL D WITH HOOK;NFKC_CF=0257;NFKC_SCF=0257
+cp;1078D;dm=1D91;na=MODIFIER LETTER SMALL D WITH HOOK AND TAIL;NFKC_CF=1D91;NFKC_SCF=1D91
+cp;1078E;dm=0258;na=MODIFIER LETTER SMALL REVERSED E;NFKC_CF=0258;NFKC_SCF=0258
+cp;1078F;dm=025E;na=MODIFIER LETTER SMALL CLOSED REVERSED OPEN E;NFKC_CF=025E;NFKC_SCF=025E
+cp;10790;dm=02A9;na=MODIFIER LETTER SMALL FENG DIGRAPH;NFKC_CF=02A9;NFKC_SCF=02A9
+cp;10791;dm=0264;na=MODIFIER LETTER SMALL RAMS HORN;NFKC_CF=0264;NFKC_SCF=0264
+cp;10792;dm=0262;na=MODIFIER LETTER SMALL CAPITAL G;NFKC_CF=0262;NFKC_SCF=0262
+cp;10793;dm=0260;na=MODIFIER LETTER SMALL G WITH HOOK;NFKC_CF=0260;NFKC_SCF=0260
+cp;10794;dm=029B;na=MODIFIER LETTER SMALL CAPITAL G WITH HOOK;NFKC_CF=029B;NFKC_SCF=029B
+cp;10795;dm=0127;na=MODIFIER LETTER SMALL H WITH STROKE;NFKC_CF=0127;NFKC_SCF=0127
+cp;10796;dm=029C;na=MODIFIER LETTER SMALL CAPITAL H;NFKC_CF=029C;NFKC_SCF=029C
+cp;10797;dm=0267;na=MODIFIER LETTER SMALL HENG WITH HOOK;NFKC_CF=0267;NFKC_SCF=0267
+cp;10798;dm=0284;na=MODIFIER LETTER SMALL DOTLESS J WITH STROKE AND HOOK;NFKC_CF=0284;NFKC_SCF=0284
+cp;10799;dm=02AA;na=MODIFIER LETTER SMALL LS DIGRAPH;NFKC_CF=02AA;NFKC_SCF=02AA
+cp;1079A;dm=02AB;na=MODIFIER LETTER SMALL LZ DIGRAPH;NFKC_CF=02AB;NFKC_SCF=02AB
+cp;1079B;dm=026C;na=MODIFIER LETTER SMALL L WITH BELT;NFKC_CF=026C;NFKC_SCF=026C
+cp;1079C;dm=1DF04;na=MODIFIER LETTER SMALL CAPITAL L WITH BELT;NFKC_CF=1DF04;NFKC_SCF=1DF04
+cp;1079D;dm=A78E;na=MODIFIER LETTER SMALL L WITH RETROFLEX HOOK AND BELT;NFKC_CF=A78E;NFKC_SCF=A78E
+cp;1079E;dm=026E;na=MODIFIER LETTER SMALL LEZH;NFKC_CF=026E;NFKC_SCF=026E
+cp;1079F;dm=1DF05;na=MODIFIER LETTER SMALL LEZH WITH RETROFLEX HOOK;NFKC_CF=1DF05;NFKC_SCF=1DF05
+cp;107A0;dm=028E;na=MODIFIER LETTER SMALL TURNED Y;NFKC_CF=028E;NFKC_SCF=028E
+cp;107A1;dm=1DF06;na=MODIFIER LETTER SMALL TURNED Y WITH BELT;NFKC_CF=1DF06;NFKC_SCF=1DF06
+cp;107A2;dm=00F8;na=MODIFIER LETTER SMALL O WITH STROKE;NFKC_CF=00F8;NFKC_SCF=00F8
+cp;107A3;dm=0276;na=MODIFIER LETTER SMALL CAPITAL OE;NFKC_CF=0276;NFKC_SCF=0276
+cp;107A4;dm=0277;na=MODIFIER LETTER SMALL CLOSED OMEGA;NFKC_CF=0277;NFKC_SCF=0277
+cp;107A5;dm=0071;na=MODIFIER LETTER SMALL Q;NFKC_CF=0071;NFKC_SCF=0071
+cp;107A6;dm=027A;na=MODIFIER LETTER SMALL TURNED R WITH LONG LEG;NFKC_CF=027A;NFKC_SCF=027A
+cp;107A7;dm=1DF08;na=MODIFIER LETTER SMALL TURNED R WITH LONG LEG AND RETROFLEX HOOK;NFKC_CF=1DF08;NFKC_SCF=1DF08
+cp;107A8;dm=027D;na=MODIFIER LETTER SMALL R WITH TAIL;NFKC_CF=027D;NFKC_SCF=027D
+cp;107A9;dm=027E;na=MODIFIER LETTER SMALL R WITH FISHHOOK;NFKC_CF=027E;NFKC_SCF=027E
+cp;107AA;dm=0280;na=MODIFIER LETTER SMALL CAPITAL R;NFKC_CF=0280;NFKC_SCF=0280
+cp;107AB;dm=02A8;na=MODIFIER LETTER SMALL TC DIGRAPH WITH CURL;NFKC_CF=02A8;NFKC_SCF=02A8
+cp;107AC;dm=02A6;na=MODIFIER LETTER SMALL TS DIGRAPH;NFKC_CF=02A6;NFKC_SCF=02A6
+cp;107AD;dm=AB67;na=MODIFIER LETTER SMALL TS DIGRAPH WITH RETROFLEX HOOK;NFKC_CF=AB67;NFKC_SCF=AB67
+cp;107AE;dm=02A7;na=MODIFIER LETTER SMALL TESH DIGRAPH;NFKC_CF=02A7;NFKC_SCF=02A7
+cp;107AF;dm=0288;na=MODIFIER LETTER SMALL T WITH RETROFLEX HOOK;NFKC_CF=0288;NFKC_SCF=0288
+cp;107B0;dm=2C71;na=MODIFIER LETTER SMALL V WITH RIGHT HOOK;NFKC_CF=2C71;NFKC_SCF=2C71
unassigned;107B1
-cp;107B2;dm=028F;na=MODIFIER LETTER SMALL CAPITAL Y;NFKC_CF=028F
-cp;107B3;dm=02A1;na=MODIFIER LETTER GLOTTAL STOP WITH STROKE;NFKC_CF=02A1
-cp;107B4;dm=02A2;na=MODIFIER LETTER REVERSED GLOTTAL STOP WITH STROKE;NFKC_CF=02A2
-cp;107B5;dm=0298;na=MODIFIER LETTER BILABIAL CLICK;NFKC_CF=0298
-cp;107B6;dm=01C0;na=MODIFIER LETTER DENTAL CLICK;NFKC_CF=01C0
-cp;107B7;dm=01C1;na=MODIFIER LETTER LATERAL CLICK;NFKC_CF=01C1
-cp;107B8;dm=01C2;na=MODIFIER LETTER ALVEOLAR CLICK;NFKC_CF=01C2
-cp;107B9;dm=1DF0A;na=MODIFIER LETTER RETROFLEX CLICK WITH RETROFLEX HOOK;NFKC_CF=1DF0A
-cp;107BA;dm=1DF1E;na=MODIFIER LETTER SMALL S WITH CURL;NFKC_CF=1DF1E
+cp;107B2;dm=028F;na=MODIFIER LETTER SMALL CAPITAL Y;NFKC_CF=028F;NFKC_SCF=028F
+cp;107B3;dm=02A1;na=MODIFIER LETTER GLOTTAL STOP WITH STROKE;NFKC_CF=02A1;NFKC_SCF=02A1
+cp;107B4;dm=02A2;na=MODIFIER LETTER REVERSED GLOTTAL STOP WITH STROKE;NFKC_CF=02A2;NFKC_SCF=02A2
+cp;107B5;dm=0298;na=MODIFIER LETTER BILABIAL CLICK;NFKC_CF=0298;NFKC_SCF=0298
+cp;107B6;dm=01C0;na=MODIFIER LETTER DENTAL CLICK;NFKC_CF=01C0;NFKC_SCF=01C0
+cp;107B7;dm=01C1;na=MODIFIER LETTER LATERAL CLICK;NFKC_CF=01C1;NFKC_SCF=01C1
+cp;107B8;dm=01C2;na=MODIFIER LETTER ALVEOLAR CLICK;NFKC_CF=01C2;NFKC_SCF=01C2
+cp;107B9;dm=1DF0A;na=MODIFIER LETTER RETROFLEX CLICK WITH RETROFLEX HOOK;NFKC_CF=1DF0A;NFKC_SCF=1DF0A
+cp;107BA;dm=1DF1E;na=MODIFIER LETTER SMALL S WITH CURL;NFKC_CF=1DF1E;NFKC_SCF=1DF1E
unassigned;107BB..107BF
block;10800..1083F;age=4.0;Alpha;bc=R;blk=Cypriot_Syllabary;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Cprt;WB=LE;XIDC;XIDS
@@ -23389,9 +23421,9 @@ unassigned;10A07..10A0B;bc=R
# Length mark
cp;10A0C;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=KHAROSHTHI VOWEL LENGTH MARK;SB=EX;WB=Extend
# Various signs
-cp;10A0D;bc=NSM;ccc=220;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=KHAROSHTHI SIGN DOUBLE RING BELOW;SB=EX;WB=Extend
+cp;10A0D;bc=NSM;ccc=220;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=KHAROSHTHI SIGN DOUBLE RING BELOW;SB=EX;WB=Extend
cp;10A0E;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;InSC=Bindu;jt=T;lb=CM;na=KHAROSHTHI SIGN ANUSVARA;SB=EX;WB=Extend
-cp;10A0F;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Visarga;jt=T;lb=CM;na=KHAROSHTHI SIGN VISARGA;SB=EX;WB=Extend
+cp;10A0F;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Visarga;jt=T;lb=CM;na=KHAROSHTHI SIGN VISARGA;SB=EX;WB=Extend
# Consonants
cp;10A10;IDS;na=KHAROSHTHI LETTER KA;XIDS
cp;10A11;IDS;na=KHAROSHTHI LETTER KHA;XIDS
@@ -23433,12 +23465,12 @@ cp;10A34;age=11.0;IDS;na=KHAROSHTHI LETTER TTTA;XIDS
cp;10A35;age=11.0;IDS;na=KHAROSHTHI LETTER VHA;XIDS
unassigned;10A36..10A37;bc=R
# Various signs
-cp;10A38;-Alpha;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Nukta;jt=T;lb=CM;na=KHAROSHTHI SIGN BAR ABOVE;SB=EX;WB=Extend
-cp;10A39;-Alpha;bc=NSM;ccc=1;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=KHAROSHTHI SIGN CAUDA;SB=EX;WB=Extend
-cp;10A3A;-Alpha;bc=NSM;ccc=220;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=KHAROSHTHI SIGN DOT BELOW;SB=EX;WB=Extend
+cp;10A38;-Alpha;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Nukta;jt=T;lb=CM;na=KHAROSHTHI SIGN BAR ABOVE;SB=EX;WB=Extend
+cp;10A39;-Alpha;bc=NSM;ccc=1;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=KHAROSHTHI SIGN CAUDA;SB=EX;WB=Extend
+cp;10A3A;-Alpha;bc=NSM;ccc=220;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=KHAROSHTHI SIGN DOT BELOW;SB=EX;WB=Extend
unassigned;10A3B..10A3E;bc=R
# Virama
-cp;10A3F;-Alpha;bc=NSM;ccc=9;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;InSC=Invisible_Stacker;jt=T;lb=CM;na=KHAROSHTHI VIRAMA;SB=EX;WB=Extend
+cp;10A3F;-Alpha;bc=NSM;ccc=9;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;InCB=Extend;InSC=Invisible_Stacker;jt=T;lb=CM;na=KHAROSHTHI VIRAMA;SB=EX;WB=Extend
# Digits
cp;10A40;-Alpha;gc=No;-IDC;InSC=Number;na=KHAROSHTHI DIGIT ONE;nt=Di;nv=1;SB=XX;WB=XX;-XIDC
cp;10A41;-Alpha;gc=No;-IDC;InSC=Number;na=KHAROSHTHI DIGIT TWO;nt=Di;nv=2;SB=XX;WB=XX;-XIDC
@@ -23583,8 +23615,8 @@ cp;10AE2;jt=U;na=MANICHAEAN LETTER SHIN
cp;10AE3;jt=U;na=MANICHAEAN LETTER SSHIN
cp;10AE4;jg=Manichaean_Taw;jt=R;na=MANICHAEAN LETTER TAW
# Combining marks
-cp;10AE5;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=MANICHAEAN ABBREVIATION MARK ABOVE;SB=EX;WB=Extend;-XIDS
-cp;10AE6;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=MANICHAEAN ABBREVIATION MARK BELOW;SB=EX;WB=Extend;-XIDS
+cp;10AE5;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=MANICHAEAN ABBREVIATION MARK ABOVE;SB=EX;WB=Extend;-XIDS
+cp;10AE6;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=MANICHAEAN ABBREVIATION MARK BELOW;SB=EX;WB=Extend;-XIDS
unassigned;10AE7..10AEA;bc=R
# Numbers
cp;10AEB;-Alpha;gc=No;-IDC;-IDS;jg=Manichaean_One;na=MANICHAEAN NUMBER ONE;nt=Nu;nv=1;SB=XX;WB=XX;-XIDC;-XIDS
@@ -23864,57 +23896,57 @@ unassigned;10C50..10C7F;bc=R
block;10C80..10CFF;age=8.0;Alpha;bc=R;blk=Old_Hungarian;Cased;CWCM;gc=Ll;Gr_Base;IDC;IDS;lb=AL;SB=LO;sc=Hung;WB=LE;XIDC;XIDS
# 10C80..10CFF Old Hungarian
# Uppercase letters
-cp;10C80;cf=10CC0;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER A;NFKC_CF=10CC0;SB=UP;scf=10CC0;slc=10CC0;Upper
-cp;10C81;cf=10CC1;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER AA;NFKC_CF=10CC1;SB=UP;scf=10CC1;slc=10CC1;Upper
-cp;10C82;cf=10CC2;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EB;NFKC_CF=10CC2;SB=UP;scf=10CC2;slc=10CC2;Upper
-cp;10C83;cf=10CC3;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER AMB;NFKC_CF=10CC3;SB=UP;scf=10CC3;slc=10CC3;Upper
-cp;10C84;cf=10CC4;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EC;NFKC_CF=10CC4;SB=UP;scf=10CC4;slc=10CC4;Upper
-cp;10C85;cf=10CC5;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER ENC;NFKC_CF=10CC5;SB=UP;scf=10CC5;slc=10CC5;Upper
-cp;10C86;cf=10CC6;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER ECS;NFKC_CF=10CC6;SB=UP;scf=10CC6;slc=10CC6;Upper
-cp;10C87;cf=10CC7;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER ED;NFKC_CF=10CC7;SB=UP;scf=10CC7;slc=10CC7;Upper
-cp;10C88;cf=10CC8;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER AND;NFKC_CF=10CC8;SB=UP;scf=10CC8;slc=10CC8;Upper
-cp;10C89;cf=10CC9;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER E;NFKC_CF=10CC9;SB=UP;scf=10CC9;slc=10CC9;Upper
-cp;10C8A;cf=10CCA;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER CLOSE E;NFKC_CF=10CCA;SB=UP;scf=10CCA;slc=10CCA;Upper
-cp;10C8B;cf=10CCB;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EE;NFKC_CF=10CCB;SB=UP;scf=10CCB;slc=10CCB;Upper
-cp;10C8C;cf=10CCC;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EF;NFKC_CF=10CCC;SB=UP;scf=10CCC;slc=10CCC;Upper
-cp;10C8D;cf=10CCD;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EG;NFKC_CF=10CCD;SB=UP;scf=10CCD;slc=10CCD;Upper
-cp;10C8E;cf=10CCE;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EGY;NFKC_CF=10CCE;SB=UP;scf=10CCE;slc=10CCE;Upper
-cp;10C8F;cf=10CCF;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EH;NFKC_CF=10CCF;SB=UP;scf=10CCF;slc=10CCF;Upper
-cp;10C90;cf=10CD0;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER I;NFKC_CF=10CD0;SB=UP;scf=10CD0;slc=10CD0;Upper
-cp;10C91;cf=10CD1;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER II;NFKC_CF=10CD1;SB=UP;scf=10CD1;slc=10CD1;Upper
-cp;10C92;cf=10CD2;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EJ;NFKC_CF=10CD2;SB=UP;scf=10CD2;slc=10CD2;Upper
-cp;10C93;cf=10CD3;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EK;NFKC_CF=10CD3;SB=UP;scf=10CD3;slc=10CD3;Upper
-cp;10C94;cf=10CD4;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER AK;NFKC_CF=10CD4;SB=UP;scf=10CD4;slc=10CD4;Upper
-cp;10C95;cf=10CD5;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER UNK;NFKC_CF=10CD5;SB=UP;scf=10CD5;slc=10CD5;Upper
-cp;10C96;cf=10CD6;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EL;NFKC_CF=10CD6;SB=UP;scf=10CD6;slc=10CD6;Upper
-cp;10C97;cf=10CD7;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER ELY;NFKC_CF=10CD7;SB=UP;scf=10CD7;slc=10CD7;Upper
-cp;10C98;cf=10CD8;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EM;NFKC_CF=10CD8;SB=UP;scf=10CD8;slc=10CD8;Upper
-cp;10C99;cf=10CD9;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EN;NFKC_CF=10CD9;SB=UP;scf=10CD9;slc=10CD9;Upper
-cp;10C9A;cf=10CDA;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER ENY;NFKC_CF=10CDA;SB=UP;scf=10CDA;slc=10CDA;Upper
-cp;10C9B;cf=10CDB;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER O;NFKC_CF=10CDB;SB=UP;scf=10CDB;slc=10CDB;Upper
-cp;10C9C;cf=10CDC;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER OO;NFKC_CF=10CDC;SB=UP;scf=10CDC;slc=10CDC;Upper
-cp;10C9D;cf=10CDD;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER NIKOLSBURG OE;NFKC_CF=10CDD;SB=UP;scf=10CDD;slc=10CDD;Upper
-cp;10C9E;cf=10CDE;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER RUDIMENTA OE;NFKC_CF=10CDE;SB=UP;scf=10CDE;slc=10CDE;Upper
-cp;10C9F;cf=10CDF;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER OEE;NFKC_CF=10CDF;SB=UP;scf=10CDF;slc=10CDF;Upper
-cp;10CA0;cf=10CE0;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EP;NFKC_CF=10CE0;SB=UP;scf=10CE0;slc=10CE0;Upper
-cp;10CA1;cf=10CE1;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EMP;NFKC_CF=10CE1;SB=UP;scf=10CE1;slc=10CE1;Upper
-cp;10CA2;cf=10CE2;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER ER;NFKC_CF=10CE2;SB=UP;scf=10CE2;slc=10CE2;Upper
-cp;10CA3;cf=10CE3;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER SHORT ER;NFKC_CF=10CE3;SB=UP;scf=10CE3;slc=10CE3;Upper
-cp;10CA4;cf=10CE4;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER ES;NFKC_CF=10CE4;SB=UP;scf=10CE4;slc=10CE4;Upper
-cp;10CA5;cf=10CE5;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER ESZ;NFKC_CF=10CE5;SB=UP;scf=10CE5;slc=10CE5;Upper
-cp;10CA6;cf=10CE6;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER ET;NFKC_CF=10CE6;SB=UP;scf=10CE6;slc=10CE6;Upper
-cp;10CA7;cf=10CE7;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER ENT;NFKC_CF=10CE7;SB=UP;scf=10CE7;slc=10CE7;Upper
-cp;10CA8;cf=10CE8;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER ETY;NFKC_CF=10CE8;SB=UP;scf=10CE8;slc=10CE8;Upper
-cp;10CA9;cf=10CE9;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER ECH;NFKC_CF=10CE9;SB=UP;scf=10CE9;slc=10CE9;Upper
-cp;10CAA;cf=10CEA;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER U;NFKC_CF=10CEA;SB=UP;scf=10CEA;slc=10CEA;Upper
-cp;10CAB;cf=10CEB;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER UU;NFKC_CF=10CEB;SB=UP;scf=10CEB;slc=10CEB;Upper
-cp;10CAC;cf=10CEC;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER NIKOLSBURG UE;NFKC_CF=10CEC;SB=UP;scf=10CEC;slc=10CEC;Upper
-cp;10CAD;cf=10CED;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER RUDIMENTA UE;NFKC_CF=10CED;SB=UP;scf=10CED;slc=10CED;Upper
-cp;10CAE;cf=10CEE;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EV;NFKC_CF=10CEE;SB=UP;scf=10CEE;slc=10CEE;Upper
-cp;10CAF;cf=10CEF;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EZ;NFKC_CF=10CEF;SB=UP;scf=10CEF;slc=10CEF;Upper
-cp;10CB0;cf=10CF0;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EZS;NFKC_CF=10CF0;SB=UP;scf=10CF0;slc=10CF0;Upper
-cp;10CB1;cf=10CF1;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER ENT-SHAPED SIGN;NFKC_CF=10CF1;SB=UP;scf=10CF1;slc=10CF1;Upper
-cp;10CB2;cf=10CF2;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER US;NFKC_CF=10CF2;SB=UP;scf=10CF2;slc=10CF2;Upper
+cp;10C80;cf=10CC0;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER A;NFKC_CF=10CC0;NFKC_SCF=10CC0;SB=UP;scf=10CC0;slc=10CC0;Upper
+cp;10C81;cf=10CC1;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER AA;NFKC_CF=10CC1;NFKC_SCF=10CC1;SB=UP;scf=10CC1;slc=10CC1;Upper
+cp;10C82;cf=10CC2;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EB;NFKC_CF=10CC2;NFKC_SCF=10CC2;SB=UP;scf=10CC2;slc=10CC2;Upper
+cp;10C83;cf=10CC3;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER AMB;NFKC_CF=10CC3;NFKC_SCF=10CC3;SB=UP;scf=10CC3;slc=10CC3;Upper
+cp;10C84;cf=10CC4;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EC;NFKC_CF=10CC4;NFKC_SCF=10CC4;SB=UP;scf=10CC4;slc=10CC4;Upper
+cp;10C85;cf=10CC5;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER ENC;NFKC_CF=10CC5;NFKC_SCF=10CC5;SB=UP;scf=10CC5;slc=10CC5;Upper
+cp;10C86;cf=10CC6;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER ECS;NFKC_CF=10CC6;NFKC_SCF=10CC6;SB=UP;scf=10CC6;slc=10CC6;Upper
+cp;10C87;cf=10CC7;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER ED;NFKC_CF=10CC7;NFKC_SCF=10CC7;SB=UP;scf=10CC7;slc=10CC7;Upper
+cp;10C88;cf=10CC8;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER AND;NFKC_CF=10CC8;NFKC_SCF=10CC8;SB=UP;scf=10CC8;slc=10CC8;Upper
+cp;10C89;cf=10CC9;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER E;NFKC_CF=10CC9;NFKC_SCF=10CC9;SB=UP;scf=10CC9;slc=10CC9;Upper
+cp;10C8A;cf=10CCA;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER CLOSE E;NFKC_CF=10CCA;NFKC_SCF=10CCA;SB=UP;scf=10CCA;slc=10CCA;Upper
+cp;10C8B;cf=10CCB;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EE;NFKC_CF=10CCB;NFKC_SCF=10CCB;SB=UP;scf=10CCB;slc=10CCB;Upper
+cp;10C8C;cf=10CCC;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EF;NFKC_CF=10CCC;NFKC_SCF=10CCC;SB=UP;scf=10CCC;slc=10CCC;Upper
+cp;10C8D;cf=10CCD;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EG;NFKC_CF=10CCD;NFKC_SCF=10CCD;SB=UP;scf=10CCD;slc=10CCD;Upper
+cp;10C8E;cf=10CCE;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EGY;NFKC_CF=10CCE;NFKC_SCF=10CCE;SB=UP;scf=10CCE;slc=10CCE;Upper
+cp;10C8F;cf=10CCF;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EH;NFKC_CF=10CCF;NFKC_SCF=10CCF;SB=UP;scf=10CCF;slc=10CCF;Upper
+cp;10C90;cf=10CD0;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER I;NFKC_CF=10CD0;NFKC_SCF=10CD0;SB=UP;scf=10CD0;slc=10CD0;Upper
+cp;10C91;cf=10CD1;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER II;NFKC_CF=10CD1;NFKC_SCF=10CD1;SB=UP;scf=10CD1;slc=10CD1;Upper
+cp;10C92;cf=10CD2;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EJ;NFKC_CF=10CD2;NFKC_SCF=10CD2;SB=UP;scf=10CD2;slc=10CD2;Upper
+cp;10C93;cf=10CD3;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EK;NFKC_CF=10CD3;NFKC_SCF=10CD3;SB=UP;scf=10CD3;slc=10CD3;Upper
+cp;10C94;cf=10CD4;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER AK;NFKC_CF=10CD4;NFKC_SCF=10CD4;SB=UP;scf=10CD4;slc=10CD4;Upper
+cp;10C95;cf=10CD5;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER UNK;NFKC_CF=10CD5;NFKC_SCF=10CD5;SB=UP;scf=10CD5;slc=10CD5;Upper
+cp;10C96;cf=10CD6;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EL;NFKC_CF=10CD6;NFKC_SCF=10CD6;SB=UP;scf=10CD6;slc=10CD6;Upper
+cp;10C97;cf=10CD7;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER ELY;NFKC_CF=10CD7;NFKC_SCF=10CD7;SB=UP;scf=10CD7;slc=10CD7;Upper
+cp;10C98;cf=10CD8;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EM;NFKC_CF=10CD8;NFKC_SCF=10CD8;SB=UP;scf=10CD8;slc=10CD8;Upper
+cp;10C99;cf=10CD9;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EN;NFKC_CF=10CD9;NFKC_SCF=10CD9;SB=UP;scf=10CD9;slc=10CD9;Upper
+cp;10C9A;cf=10CDA;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER ENY;NFKC_CF=10CDA;NFKC_SCF=10CDA;SB=UP;scf=10CDA;slc=10CDA;Upper
+cp;10C9B;cf=10CDB;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER O;NFKC_CF=10CDB;NFKC_SCF=10CDB;SB=UP;scf=10CDB;slc=10CDB;Upper
+cp;10C9C;cf=10CDC;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER OO;NFKC_CF=10CDC;NFKC_SCF=10CDC;SB=UP;scf=10CDC;slc=10CDC;Upper
+cp;10C9D;cf=10CDD;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER NIKOLSBURG OE;NFKC_CF=10CDD;NFKC_SCF=10CDD;SB=UP;scf=10CDD;slc=10CDD;Upper
+cp;10C9E;cf=10CDE;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER RUDIMENTA OE;NFKC_CF=10CDE;NFKC_SCF=10CDE;SB=UP;scf=10CDE;slc=10CDE;Upper
+cp;10C9F;cf=10CDF;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER OEE;NFKC_CF=10CDF;NFKC_SCF=10CDF;SB=UP;scf=10CDF;slc=10CDF;Upper
+cp;10CA0;cf=10CE0;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EP;NFKC_CF=10CE0;NFKC_SCF=10CE0;SB=UP;scf=10CE0;slc=10CE0;Upper
+cp;10CA1;cf=10CE1;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EMP;NFKC_CF=10CE1;NFKC_SCF=10CE1;SB=UP;scf=10CE1;slc=10CE1;Upper
+cp;10CA2;cf=10CE2;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER ER;NFKC_CF=10CE2;NFKC_SCF=10CE2;SB=UP;scf=10CE2;slc=10CE2;Upper
+cp;10CA3;cf=10CE3;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER SHORT ER;NFKC_CF=10CE3;NFKC_SCF=10CE3;SB=UP;scf=10CE3;slc=10CE3;Upper
+cp;10CA4;cf=10CE4;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER ES;NFKC_CF=10CE4;NFKC_SCF=10CE4;SB=UP;scf=10CE4;slc=10CE4;Upper
+cp;10CA5;cf=10CE5;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER ESZ;NFKC_CF=10CE5;NFKC_SCF=10CE5;SB=UP;scf=10CE5;slc=10CE5;Upper
+cp;10CA6;cf=10CE6;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER ET;NFKC_CF=10CE6;NFKC_SCF=10CE6;SB=UP;scf=10CE6;slc=10CE6;Upper
+cp;10CA7;cf=10CE7;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER ENT;NFKC_CF=10CE7;NFKC_SCF=10CE7;SB=UP;scf=10CE7;slc=10CE7;Upper
+cp;10CA8;cf=10CE8;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER ETY;NFKC_CF=10CE8;NFKC_SCF=10CE8;SB=UP;scf=10CE8;slc=10CE8;Upper
+cp;10CA9;cf=10CE9;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER ECH;NFKC_CF=10CE9;NFKC_SCF=10CE9;SB=UP;scf=10CE9;slc=10CE9;Upper
+cp;10CAA;cf=10CEA;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER U;NFKC_CF=10CEA;NFKC_SCF=10CEA;SB=UP;scf=10CEA;slc=10CEA;Upper
+cp;10CAB;cf=10CEB;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER UU;NFKC_CF=10CEB;NFKC_SCF=10CEB;SB=UP;scf=10CEB;slc=10CEB;Upper
+cp;10CAC;cf=10CEC;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER NIKOLSBURG UE;NFKC_CF=10CEC;NFKC_SCF=10CEC;SB=UP;scf=10CEC;slc=10CEC;Upper
+cp;10CAD;cf=10CED;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER RUDIMENTA UE;NFKC_CF=10CED;NFKC_SCF=10CED;SB=UP;scf=10CED;slc=10CED;Upper
+cp;10CAE;cf=10CEE;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EV;NFKC_CF=10CEE;NFKC_SCF=10CEE;SB=UP;scf=10CEE;slc=10CEE;Upper
+cp;10CAF;cf=10CEF;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EZ;NFKC_CF=10CEF;NFKC_SCF=10CEF;SB=UP;scf=10CEF;slc=10CEF;Upper
+cp;10CB0;cf=10CF0;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER EZS;NFKC_CF=10CF0;NFKC_SCF=10CF0;SB=UP;scf=10CF0;slc=10CF0;Upper
+cp;10CB1;cf=10CF1;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER ENT-SHAPED SIGN;NFKC_CF=10CF1;NFKC_SCF=10CF1;SB=UP;scf=10CF1;slc=10CF1;Upper
+cp;10CB2;cf=10CF2;CWCF;CWKCF;CWL;gc=Lu;na=OLD HUNGARIAN CAPITAL LETTER US;NFKC_CF=10CF2;NFKC_SCF=10CF2;SB=UP;scf=10CF2;slc=10CF2;Upper
unassigned;10CB3..10CBF;bc=R
# Lowercase letters
cp;10CC0;CWT;CWU;Lower;na=OLD HUNGARIAN SMALL LETTER A;stc=10C80;suc=10C80
@@ -24021,11 +24053,11 @@ cp;10D22;Dia;jt=R;na=HANIFI ROHINGYA MARK SAKIN
# Nasalization mark
cp;10D23;Dia;jg=Hanifi_Rohingya_Kinna_Ya;na=HANIFI ROHINGYA MARK NA KHONNA
# Tone signs
-cp;10D24;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=HANIFI ROHINGYA SIGN HARBAHAY;SB=EX;WB=Extend;-XIDS
-cp;10D25;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=HANIFI ROHINGYA SIGN TAHALA;SB=EX;WB=Extend;-XIDS
-cp;10D26;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=HANIFI ROHINGYA SIGN TANA;SB=EX;WB=Extend;-XIDS
+cp;10D24;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=HANIFI ROHINGYA SIGN HARBAHAY;SB=EX;WB=Extend;-XIDS
+cp;10D25;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=HANIFI ROHINGYA SIGN TAHALA;SB=EX;WB=Extend;-XIDS
+cp;10D26;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=HANIFI ROHINGYA SIGN TANA;SB=EX;WB=Extend;-XIDS
# Gemination sign
-cp;10D27;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=HANIFI ROHINGYA SIGN TASSI;SB=EX;WB=Extend;-XIDS
+cp;10D27;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=HANIFI ROHINGYA SIGN TASSI;SB=EX;WB=Extend;-XIDS
unassigned;10D28..10D2F;bc=AL
# Digits
cp;10D30;-Alpha;bc=AN;gc=Nd;-IDS;jt=U;lb=NU;na=HANIFI ROHINGYA DIGIT ZERO;nt=De;nv=0;SB=NU;WB=NU;-XIDS
@@ -24128,8 +24160,8 @@ cp;10EA8;na=YEZIDI LETTER YOT
cp;10EA9;na=YEZIDI LETTER ET
unassigned;10EAA;bc=R
# Combining marks
-cp;10EAB;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=YEZIDI COMBINING HAMZA MARK;SB=EX;WB=Extend;-XIDS
-cp;10EAC;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=YEZIDI COMBINING MADDA MARK;SB=EX;WB=Extend;-XIDS
+cp;10EAB;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=YEZIDI COMBINING HAMZA MARK;SB=EX;WB=Extend;-XIDS
+cp;10EAC;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=YEZIDI COMBINING MADDA MARK;SB=EX;WB=Extend;-XIDS
# Punctuation
cp;10EAD;-Alpha;Dash;gc=Pd;-IDC;-IDS;lb=BA;na=YEZIDI HYPHENATION MARK;SB=XX;WB=XX;-XIDC;-XIDS
unassigned;10EAE..10EAF;bc=R
@@ -24138,7 +24170,7 @@ cp;10EB0;na=YEZIDI LETTER LAM WITH DOT ABOVE
cp;10EB1;na=YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE
unassigned;10EB2..10EBF;bc=R
-block;10EC0..10EFF;age=15.0;bc=NSM;blk=Arabic_Ext_C;ccc=220;CI;Dia;gc=Mn;GCB=EX;Gr_Ext;IDC;jt=T;lb=CM;SB=EX;sc=Arab;WB=Extend;XIDC
+block;10EC0..10EFF;age=15.0;bc=NSM;blk=Arabic_Ext_C;ccc=220;CI;Dia;gc=Mn;GCB=EX;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;SB=EX;sc=Arab;WB=Extend;XIDC
# 10EC0..10EFF Arabic Extended-C
unassigned;10EC0..10EFC;bc=AL
# Quranic marks used in Turkey
@@ -24220,17 +24252,17 @@ cp;10F44;Alpha;IDS;na=SOGDIAN LETTER LESH;XIDS
# Phonogram
cp;10F45;Alpha;IDS;jt=U;na=SOGDIAN INDEPENDENT SHIN;XIDS
# Combining marks
-cp;10F46;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;jt=T;lb=CM;na=SOGDIAN COMBINING DOT BELOW;SB=EX;WB=Extend
-cp;10F47;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;jt=T;lb=CM;na=SOGDIAN COMBINING TWO DOTS BELOW;SB=EX;WB=Extend
-cp;10F48;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;jt=T;lb=CM;na=SOGDIAN COMBINING DOT ABOVE;SB=EX;WB=Extend
-cp;10F49;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;jt=T;lb=CM;na=SOGDIAN COMBINING TWO DOTS ABOVE;SB=EX;WB=Extend
-cp;10F4A;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;jt=T;lb=CM;na=SOGDIAN COMBINING CURVE ABOVE;SB=EX;WB=Extend
-cp;10F4B;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;jt=T;lb=CM;na=SOGDIAN COMBINING CURVE BELOW;SB=EX;WB=Extend
-cp;10F4C;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;jt=T;lb=CM;na=SOGDIAN COMBINING HOOK ABOVE;SB=EX;WB=Extend
-cp;10F4D;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;jt=T;lb=CM;na=SOGDIAN COMBINING HOOK BELOW;SB=EX;WB=Extend
-cp;10F4E;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;jt=T;lb=CM;na=SOGDIAN COMBINING LONG HOOK BELOW;SB=EX;WB=Extend
-cp;10F4F;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;jt=T;lb=CM;na=SOGDIAN COMBINING RESH BELOW;SB=EX;WB=Extend
-cp;10F50;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;jt=T;lb=CM;na=SOGDIAN COMBINING STROKE BELOW;SB=EX;WB=Extend
+cp;10F46;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;jt=T;lb=CM;na=SOGDIAN COMBINING DOT BELOW;SB=EX;WB=Extend
+cp;10F47;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;jt=T;lb=CM;na=SOGDIAN COMBINING TWO DOTS BELOW;SB=EX;WB=Extend
+cp;10F48;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;jt=T;lb=CM;na=SOGDIAN COMBINING DOT ABOVE;SB=EX;WB=Extend
+cp;10F49;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;jt=T;lb=CM;na=SOGDIAN COMBINING TWO DOTS ABOVE;SB=EX;WB=Extend
+cp;10F4A;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;jt=T;lb=CM;na=SOGDIAN COMBINING CURVE ABOVE;SB=EX;WB=Extend
+cp;10F4B;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;jt=T;lb=CM;na=SOGDIAN COMBINING CURVE BELOW;SB=EX;WB=Extend
+cp;10F4C;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;jt=T;lb=CM;na=SOGDIAN COMBINING HOOK ABOVE;SB=EX;WB=Extend
+cp;10F4D;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;jt=T;lb=CM;na=SOGDIAN COMBINING HOOK BELOW;SB=EX;WB=Extend
+cp;10F4E;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;jt=T;lb=CM;na=SOGDIAN COMBINING LONG HOOK BELOW;SB=EX;WB=Extend
+cp;10F4F;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;jt=T;lb=CM;na=SOGDIAN COMBINING RESH BELOW;SB=EX;WB=Extend
+cp;10F50;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;jt=T;lb=CM;na=SOGDIAN COMBINING STROKE BELOW;SB=EX;WB=Extend
# Numbers
cp;10F51;gc=No;-IDC;na=SOGDIAN NUMBER ONE;nt=Nu;nv=1;SB=XX;WB=XX;-XIDC
cp;10F52;gc=No;-IDC;na=SOGDIAN NUMBER TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC
@@ -24266,10 +24298,10 @@ cp;10F7F;na=OLD UYGHUR LETTER SHIN
cp;10F80;na=OLD UYGHUR LETTER TAW
cp;10F81;na=OLD UYGHUR LETTER LESH
# Combining signs
-cp;10F82;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=OLD UYGHUR COMBINING DOT ABOVE;SB=EX;WB=Extend;-XIDS
-cp;10F83;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=OLD UYGHUR COMBINING DOT BELOW;SB=EX;WB=Extend;-XIDS
-cp;10F84;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=OLD UYGHUR COMBINING TWO DOTS ABOVE;SB=EX;WB=Extend;-XIDS
-cp;10F85;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=OLD UYGHUR COMBINING TWO DOTS BELOW;SB=EX;WB=Extend;-XIDS
+cp;10F82;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=OLD UYGHUR COMBINING DOT ABOVE;SB=EX;WB=Extend;-XIDS
+cp;10F83;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=OLD UYGHUR COMBINING DOT BELOW;SB=EX;WB=Extend;-XIDS
+cp;10F84;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=OLD UYGHUR COMBINING TWO DOTS ABOVE;SB=EX;WB=Extend;-XIDS
+cp;10F85;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=OLD UYGHUR COMBINING TWO DOTS BELOW;SB=EX;WB=Extend;-XIDS
# Punctuation
cp;10F86;-Alpha;gc=Po;-IDC;-IDS;jt=U;na=OLD UYGHUR PUNCTUATION BAR;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
cp;10F87;-Alpha;gc=Po;-IDC;-IDS;jt=U;na=OLD UYGHUR PUNCTUATION TWO BARS;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
@@ -24340,14 +24372,14 @@ cp;10FF5;na=ELYMAIC LETTER TAW
cp;10FF6;na=ELYMAIC LIGATURE ZAYIN-YODH
unassigned;10FF7..10FFF;bc=R
-block;11000..1107F;age=6.0;Alpha;blk=Brahmi;gc=Lo;Gr_Base;IDC;InSC=Consonant;lb=AL;SB=LE;sc=Brah;WB=LE;XIDC
+block;11000..1107F;age=6.0;Alpha;blk=Brahmi;gc=Lo;Gr_Base;IDC;InSC=Consonant;lb=AK;SB=LE;sc=Brah;WB=LE;XIDC
# 11000..1107F Brahmi
# Various signs
cp;11000;gc=Mc;GCB=SM;InPC=Right;InSC=Bindu;lb=CM;na=BRAHMI SIGN CANDRABINDU;SB=EX;WB=Extend
cp;11001;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=BRAHMI SIGN ANUSVARA;SB=EX;WB=Extend
cp;11002;gc=Mc;GCB=SM;InPC=Right;InSC=Visarga;lb=CM;na=BRAHMI SIGN VISARGA;SB=EX;WB=Extend
-cp;11003;IDS;InSC=Consonant_With_Stacker;na=BRAHMI SIGN JIHVAMULIYA;XIDS
-cp;11004;IDS;InSC=Consonant_With_Stacker;na=BRAHMI SIGN UPADHMANIYA;XIDS
+cp;11003;IDS;InSC=Consonant_With_Stacker;lb=AP;na=BRAHMI SIGN JIHVAMULIYA;XIDS
+cp;11004;IDS;InSC=Consonant_With_Stacker;lb=AP;na=BRAHMI SIGN UPADHMANIYA;XIDS
# Independent vowels
cp;11005;IDS;InSC=Vowel_Independent;na=BRAHMI LETTER A;XIDS
cp;11006;IDS;InSC=Vowel_Independent;na=BRAHMI LETTER AA;XIDS
@@ -24417,50 +24449,50 @@ cp;11043;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Vowel_Dependent;jt
cp;11044;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=BRAHMI VOWEL SIGN O;SB=EX;WB=Extend
cp;11045;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=BRAHMI VOWEL SIGN AU;SB=EX;WB=Extend
# Virama
-cp;11046;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;InPC=Top;InSC=Virama;jt=T;lb=CM;na=BRAHMI VIRAMA;SB=EX;WB=Extend
+cp;11046;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;InPC=Top;InSC=Virama;jt=T;lb=VI;na=BRAHMI VIRAMA;SB=EX;WB=Extend
# Punctuation
cp;11047;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=BRAHMI DANDA;SB=ST;STerm;Term;WB=XX;-XIDC
cp;11048;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=BRAHMI DOUBLE DANDA;SB=ST;STerm;Term;WB=XX;-XIDC
-cp;11049;-Alpha;gc=Po;-IDC;InSC=Other;na=BRAHMI PUNCTUATION DOT;SB=XX;Term;WB=XX;-XIDC
-cp;1104A;-Alpha;gc=Po;-IDC;InSC=Other;na=BRAHMI PUNCTUATION DOUBLE DOT;SB=XX;Term;WB=XX;-XIDC
-cp;1104B;-Alpha;gc=Po;-IDC;InSC=Other;na=BRAHMI PUNCTUATION LINE;SB=XX;Term;WB=XX;-XIDC
-cp;1104C;-Alpha;gc=Po;-IDC;InSC=Other;na=BRAHMI PUNCTUATION CRESCENT BAR;SB=XX;Term;WB=XX;-XIDC
-cp;1104D;-Alpha;gc=Po;-IDC;InSC=Other;na=BRAHMI PUNCTUATION LOTUS;SB=XX;Term;WB=XX;-XIDC
+cp;11049;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=BRAHMI PUNCTUATION DOT;SB=XX;Term;WB=XX;-XIDC
+cp;1104A;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=BRAHMI PUNCTUATION DOUBLE DOT;SB=XX;Term;WB=XX;-XIDC
+cp;1104B;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=BRAHMI PUNCTUATION LINE;SB=XX;Term;WB=XX;-XIDC
+cp;1104C;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=BRAHMI PUNCTUATION CRESCENT BAR;SB=XX;Term;WB=XX;-XIDC
+cp;1104D;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=BRAHMI PUNCTUATION LOTUS;SB=XX;Term;WB=XX;-XIDC
unassigned;1104E..11051
# Numbers
-cp;11052;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;na=BRAHMI NUMBER ONE;nt=Di;nv=1;SB=XX;WB=XX;-XIDC
-cp;11053;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;na=BRAHMI NUMBER TWO;nt=Di;nv=2;SB=XX;WB=XX;-XIDC
-cp;11054;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;na=BRAHMI NUMBER THREE;nt=Di;nv=3;SB=XX;WB=XX;-XIDC
-cp;11055;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;na=BRAHMI NUMBER FOUR;nt=Di;nv=4;SB=XX;WB=XX;-XIDC
-cp;11056;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;na=BRAHMI NUMBER FIVE;nt=Di;nv=5;SB=XX;WB=XX;-XIDC
-cp;11057;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;na=BRAHMI NUMBER SIX;nt=Di;nv=6;SB=XX;WB=XX;-XIDC
-cp;11058;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;na=BRAHMI NUMBER SEVEN;nt=Di;nv=7;SB=XX;WB=XX;-XIDC
-cp;11059;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;na=BRAHMI NUMBER EIGHT;nt=Di;nv=8;SB=XX;WB=XX;-XIDC
-cp;1105A;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;na=BRAHMI NUMBER NINE;nt=Di;nv=9;SB=XX;WB=XX;-XIDC
-cp;1105B;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;na=BRAHMI NUMBER TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC
-cp;1105C;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;na=BRAHMI NUMBER TWENTY;nt=Nu;nv=20;SB=XX;WB=XX;-XIDC
-cp;1105D;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;na=BRAHMI NUMBER THIRTY;nt=Nu;nv=30;SB=XX;WB=XX;-XIDC
-cp;1105E;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;na=BRAHMI NUMBER FORTY;nt=Nu;nv=40;SB=XX;WB=XX;-XIDC
-cp;1105F;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;na=BRAHMI NUMBER FIFTY;nt=Nu;nv=50;SB=XX;WB=XX;-XIDC
-cp;11060;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;na=BRAHMI NUMBER SIXTY;nt=Nu;nv=60;SB=XX;WB=XX;-XIDC
-cp;11061;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;na=BRAHMI NUMBER SEVENTY;nt=Nu;nv=70;SB=XX;WB=XX;-XIDC
-cp;11062;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;na=BRAHMI NUMBER EIGHTY;nt=Nu;nv=80;SB=XX;WB=XX;-XIDC
-cp;11063;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;na=BRAHMI NUMBER NINETY;nt=Nu;nv=90;SB=XX;WB=XX;-XIDC
-cp;11064;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;na=BRAHMI NUMBER ONE HUNDRED;nt=Nu;nv=100;SB=XX;WB=XX;-XIDC
-cp;11065;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;na=BRAHMI NUMBER ONE THOUSAND;nt=Nu;nv=1000;SB=XX;WB=XX;-XIDC
+cp;11052;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER ONE;nt=Di;nv=1;SB=XX;WB=XX;-XIDC
+cp;11053;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER TWO;nt=Di;nv=2;SB=XX;WB=XX;-XIDC
+cp;11054;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER THREE;nt=Di;nv=3;SB=XX;WB=XX;-XIDC
+cp;11055;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER FOUR;nt=Di;nv=4;SB=XX;WB=XX;-XIDC
+cp;11056;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER FIVE;nt=Di;nv=5;SB=XX;WB=XX;-XIDC
+cp;11057;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER SIX;nt=Di;nv=6;SB=XX;WB=XX;-XIDC
+cp;11058;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER SEVEN;nt=Di;nv=7;SB=XX;WB=XX;-XIDC
+cp;11059;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER EIGHT;nt=Di;nv=8;SB=XX;WB=XX;-XIDC
+cp;1105A;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER NINE;nt=Di;nv=9;SB=XX;WB=XX;-XIDC
+cp;1105B;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER TEN;nt=Nu;nv=10;SB=XX;WB=XX;-XIDC
+cp;1105C;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER TWENTY;nt=Nu;nv=20;SB=XX;WB=XX;-XIDC
+cp;1105D;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER THIRTY;nt=Nu;nv=30;SB=XX;WB=XX;-XIDC
+cp;1105E;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER FORTY;nt=Nu;nv=40;SB=XX;WB=XX;-XIDC
+cp;1105F;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER FIFTY;nt=Nu;nv=50;SB=XX;WB=XX;-XIDC
+cp;11060;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER SIXTY;nt=Nu;nv=60;SB=XX;WB=XX;-XIDC
+cp;11061;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER SEVENTY;nt=Nu;nv=70;SB=XX;WB=XX;-XIDC
+cp;11062;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER EIGHTY;nt=Nu;nv=80;SB=XX;WB=XX;-XIDC
+cp;11063;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER NINETY;nt=Nu;nv=90;SB=XX;WB=XX;-XIDC
+cp;11064;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER ONE HUNDRED;nt=Nu;nv=100;SB=XX;WB=XX;-XIDC
+cp;11065;-Alpha;bc=ON;gc=No;-IDC;InSC=Brahmi_Joining_Number;lb=ID;na=BRAHMI NUMBER ONE THOUSAND;nt=Nu;nv=1000;SB=XX;WB=XX;-XIDC
# Digits
-cp;11066;-Alpha;gc=Nd;InSC=Number;lb=NU;na=BRAHMI DIGIT ZERO;nt=De;nv=0;SB=NU;WB=NU
-cp;11067;-Alpha;gc=Nd;InSC=Number;lb=NU;na=BRAHMI DIGIT ONE;nt=De;nv=1;SB=NU;WB=NU
-cp;11068;-Alpha;gc=Nd;InSC=Number;lb=NU;na=BRAHMI DIGIT TWO;nt=De;nv=2;SB=NU;WB=NU
-cp;11069;-Alpha;gc=Nd;InSC=Number;lb=NU;na=BRAHMI DIGIT THREE;nt=De;nv=3;SB=NU;WB=NU
-cp;1106A;-Alpha;gc=Nd;InSC=Number;lb=NU;na=BRAHMI DIGIT FOUR;nt=De;nv=4;SB=NU;WB=NU
-cp;1106B;-Alpha;gc=Nd;InSC=Number;lb=NU;na=BRAHMI DIGIT FIVE;nt=De;nv=5;SB=NU;WB=NU
-cp;1106C;-Alpha;gc=Nd;InSC=Number;lb=NU;na=BRAHMI DIGIT SIX;nt=De;nv=6;SB=NU;WB=NU
-cp;1106D;-Alpha;gc=Nd;InSC=Number;lb=NU;na=BRAHMI DIGIT SEVEN;nt=De;nv=7;SB=NU;WB=NU
-cp;1106E;-Alpha;gc=Nd;InSC=Number;lb=NU;na=BRAHMI DIGIT EIGHT;nt=De;nv=8;SB=NU;WB=NU
-cp;1106F;-Alpha;gc=Nd;InSC=Number;lb=NU;na=BRAHMI DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU
+cp;11066;-Alpha;gc=Nd;InSC=Number;lb=AS;na=BRAHMI DIGIT ZERO;nt=De;nv=0;SB=NU;WB=NU
+cp;11067;-Alpha;gc=Nd;InSC=Number;lb=AS;na=BRAHMI DIGIT ONE;nt=De;nv=1;SB=NU;WB=NU
+cp;11068;-Alpha;gc=Nd;InSC=Number;lb=AS;na=BRAHMI DIGIT TWO;nt=De;nv=2;SB=NU;WB=NU
+cp;11069;-Alpha;gc=Nd;InSC=Number;lb=AS;na=BRAHMI DIGIT THREE;nt=De;nv=3;SB=NU;WB=NU
+cp;1106A;-Alpha;gc=Nd;InSC=Number;lb=AS;na=BRAHMI DIGIT FOUR;nt=De;nv=4;SB=NU;WB=NU
+cp;1106B;-Alpha;gc=Nd;InSC=Number;lb=AS;na=BRAHMI DIGIT FIVE;nt=De;nv=5;SB=NU;WB=NU
+cp;1106C;-Alpha;gc=Nd;InSC=Number;lb=AS;na=BRAHMI DIGIT SIX;nt=De;nv=6;SB=NU;WB=NU
+cp;1106D;-Alpha;gc=Nd;InSC=Number;lb=AS;na=BRAHMI DIGIT SEVEN;nt=De;nv=7;SB=NU;WB=NU
+cp;1106E;-Alpha;gc=Nd;InSC=Number;lb=AS;na=BRAHMI DIGIT EIGHT;nt=De;nv=8;SB=NU;WB=NU
+cp;1106F;-Alpha;gc=Nd;InSC=Number;lb=AS;na=BRAHMI DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU
# Virama
-cp;11070;age=14.0;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;InPC=Top;InSC=Pure_Killer;jt=T;lb=CM;na=BRAHMI SIGN OLD TAMIL VIRAMA;SB=EX;WB=Extend
+cp;11070;age=14.0;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;InCB=Extend;InPC=Top;InSC=Pure_Killer;jt=T;lb=CM;na=BRAHMI SIGN OLD TAMIL VIRAMA;SB=EX;WB=Extend
# Independent vowels
cp;11071;age=14.0;IDS;InSC=Vowel_Independent;na=BRAHMI LETTER OLD TAMIL SHORT E;XIDS
cp;11072;age=14.0;IDS;InSC=Vowel_Independent;na=BRAHMI LETTER OLD TAMIL SHORT O;XIDS
@@ -24471,7 +24503,7 @@ cp;11074;age=14.0;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Vowel_Dep
cp;11075;age=14.0;IDS;na=BRAHMI LETTER OLD TAMIL LLA;XIDS
unassigned;11076..1107E
# Number joiner
-cp;1107F;age=7.0;-Alpha;bc=NSM;ccc=9;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;InSC=Number_Joiner;jt=T;lb=CM;na=BRAHMI NUMBER JOINER;SB=EX;WB=Extend
+cp;1107F;age=7.0;-Alpha;bc=NSM;ccc=9;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;InCB=Extend;InSC=Number_Joiner;jt=T;lb=GL;na=BRAHMI NUMBER JOINER;SB=EX;WB=Extend
block;11080..110CF;age=5.2;Alpha;blk=Kaithi;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Kthi;WB=LE;XIDC;XIDS
# 11080..110CF Kaithi
@@ -24539,10 +24571,10 @@ cp;110B8;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=KAITHI VOWEL
# Virama
cp;110B9;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InPC=Bottom;InSC=Virama;jt=T;lb=CM;na=KAITHI SIGN VIRAMA;SB=EX;WB=Extend;-XIDS
# Various signs
-cp;110BA;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=KAITHI SIGN NUKTA;NFC_QC=M;NFKC_QC=M;SB=EX;WB=Extend;-XIDS
+cp;110BA;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=KAITHI SIGN NUKTA;NFC_QC=M;NFKC_QC=M;SB=EX;WB=Extend;-XIDS
cp;110BB;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;na=KAITHI ABBREVIATION SIGN;SB=XX;WB=XX;-XIDC;-XIDS
cp;110BC;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;na=KAITHI ENUMERATION SIGN;SB=XX;WB=XX;-XIDC;-XIDS
-cp;110BD;-Alpha;CI;gc=Cf;GCB=PP;-Gr_Base;-IDC;-IDS;InSC=Other;na=KAITHI NUMBER SIGN;PCM;SB=FO;WB=FO;-XIDC;-XIDS
+cp;110BD;-Alpha;CI;gc=Cf;GCB=PP;-Gr_Base;-IDC;-IDS;InSC=Other;lb=NU;na=KAITHI NUMBER SIGN;PCM;SB=NU;WB=NU;-XIDC;-XIDS
# Punctuation
cp;110BE;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=KAITHI SECTION MARK;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
cp;110BF;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=KAITHI DOUBLE SECTION MARK;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
@@ -24552,7 +24584,7 @@ cp;110C1;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=KAITHI DOUBLE DANDA;SB=ST;ST
cp;110C2;age=14.0;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=KAITHI VOWEL SIGN VOCALIC R;SB=EX;WB=Extend;-XIDS
unassigned;110C3..110CC
# Sign
-cp;110CD;age=11.0;-Alpha;CI;gc=Cf;GCB=PP;-Gr_Base;-IDC;-IDS;InSC=Other;na=KAITHI NUMBER SIGN ABOVE;PCM;SB=FO;WB=FO;-XIDC;-XIDS
+cp;110CD;age=11.0;-Alpha;CI;gc=Cf;GCB=PP;-Gr_Base;-IDC;-IDS;InSC=Other;lb=NU;na=KAITHI NUMBER SIGN ABOVE;PCM;SB=NU;WB=NU;-XIDC;-XIDS
unassigned;110CE..110CF
block;110D0..110FF;age=6.1;Alpha;blk=Sora_Sompeng;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Sora;WB=LE;XIDC;XIDS
@@ -24602,9 +24634,9 @@ unassigned;110FA..110FF
block;11100..1114F;age=6.1;Alpha;blk=Chakma;gc=Lo;Gr_Base;IDC;InSC=Consonant;lb=AL;SB=LE;sc=Cakm;WB=LE;XIDC
# 11100..1114F Chakma
# Various signs
-cp;11100;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=CHAKMA SIGN CANDRABINDU;SB=EX;WB=Extend
-cp;11101;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=CHAKMA SIGN ANUSVARA;SB=EX;WB=Extend
-cp;11102;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Visarga;jt=T;lb=CM;na=CHAKMA SIGN VISARGA;SB=EX;WB=Extend
+cp;11100;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=CHAKMA SIGN CANDRABINDU;SB=EX;WB=Extend
+cp;11101;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=CHAKMA SIGN ANUSVARA;SB=EX;WB=Extend
+cp;11102;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Top;InSC=Visarga;jt=T;lb=CM;na=CHAKMA SIGN VISARGA;SB=EX;WB=Extend
# Independent vowels
cp;11103;IDS;InSC=Vowel_Independent;na=CHAKMA LETTER AA;XIDS
cp;11104;IDS;InSC=Vowel_Independent;na=CHAKMA LETTER I;XIDS
@@ -24657,8 +24689,8 @@ cp;11130;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Vowel_Dependent;jt
cp;11131;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=CHAKMA O MARK;SB=EX;WB=Extend
cp;11132;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=CHAKMA AU MARK;SB=EX;WB=Extend
# Various signs
-cp;11133;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;InSC=Invisible_Stacker;jt=T;lb=CM;na=CHAKMA VIRAMA;SB=EX;WB=Extend
-cp;11134;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;InPC=Top;InSC=Pure_Killer;jt=T;lb=CM;na=CHAKMA MAAYYAA;SB=EX;WB=Extend
+cp;11133;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;InCB=Extend;InSC=Invisible_Stacker;jt=T;lb=CM;na=CHAKMA VIRAMA;SB=EX;WB=Extend
+cp;11134;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;InCB=Extend;InPC=Top;InSC=Pure_Killer;jt=T;lb=CM;na=CHAKMA MAAYYAA;SB=EX;WB=Extend
unassigned;11135
# Digits
cp;11136;-Alpha;gc=Nd;InSC=Number;lb=NU;na=CHAKMA DIGIT ZERO;nt=De;nv=0;SB=NU;WB=NU
@@ -24725,7 +24757,7 @@ cp;11170;na=MAHAJANI LETTER SA
cp;11171;na=MAHAJANI LETTER HA
cp;11172;na=MAHAJANI LETTER RRA
# Sign
-cp;11173;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=MAHAJANI SIGN NUKTA;SB=EX;WB=Extend;-XIDS
+cp;11173;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=MAHAJANI SIGN NUKTA;SB=EX;WB=Extend;-XIDS
# Punctuation
cp;11174;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;na=MAHAJANI ABBREVIATION SIGN;SB=XX;WB=XX;-XIDC;-XIDS
cp;11175;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BB;na=MAHAJANI SECTION MARK;SB=XX;WB=XX;-XIDC;-XIDS
@@ -24818,7 +24850,7 @@ cp;111C8;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=SHARADA SEPARATOR;SB=XX;WB=X
# Sign
cp;111C9;age=8.0;-Alpha;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Syllable_Modifier;jt=T;lb=CM;na=SHARADA SANDHI MARK;SB=EX;WB=Extend;-XIDS
# Signs for Kashmiri
-cp;111CA;age=8.0;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=SHARADA SIGN NUKTA;SB=EX;WB=Extend;-XIDS
+cp;111CA;age=8.0;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=SHARADA SIGN NUKTA;SB=EX;WB=Extend;-XIDS
cp;111CB;age=8.0;-Alpha;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=SHARADA VOWEL MODIFIER MARK;SB=EX;WB=Extend;-XIDS
cp;111CC;age=8.0;-Alpha;bc=NSM;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=SHARADA EXTRA SHORT VOWEL MARK;SB=EX;WB=Extend;-XIDS
# Punctuation
@@ -24934,7 +24966,7 @@ cp;11233;gc=Mc;GCB=SM;-IDS;InPC=Top_And_Right;InSC=Vowel_Dependent;lb=CM;na=KHOJ
# Various signs
cp;11234;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=KHOJKI SIGN ANUSVARA;SB=EX;WB=Extend;-XIDS
cp;11235;-Alpha;ccc=9;Dia;gc=Mc;GCB=SM;Gr_Link;-IDS;InPC=Right;InSC=Virama;lb=CM;na=KHOJKI SIGN VIRAMA;SB=EX;WB=Extend;-XIDS
-cp;11236;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Nukta;jt=T;lb=CM;na=KHOJKI SIGN NUKTA;SB=EX;WB=Extend;-XIDS
+cp;11236;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Top;InSC=Nukta;jt=T;lb=CM;na=KHOJKI SIGN NUKTA;SB=EX;WB=Extend;-XIDS
cp;11237;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Gemination_Mark;jt=T;lb=CM;na=KHOJKI SIGN SHADDA;SB=EX;WB=Extend;-XIDS
# Punctuation
cp;11238;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=KHOJKI DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
@@ -25066,8 +25098,8 @@ cp;112E6;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Depende
cp;112E7;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=KHUDAWADI VOWEL SIGN O;SB=EX;WB=Extend;-XIDS
cp;112E8;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=KHUDAWADI VOWEL SIGN AU;SB=EX;WB=Extend;-XIDS
# Various signs
-cp;112E9;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=KHUDAWADI SIGN NUKTA;SB=EX;WB=Extend;-XIDS
-cp;112EA;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InPC=Bottom;InSC=Pure_Killer;jt=T;lb=CM;na=KHUDAWADI SIGN VIRAMA;SB=EX;WB=Extend;-XIDS
+cp;112E9;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=KHUDAWADI SIGN NUKTA;SB=EX;WB=Extend;-XIDS
+cp;112EA;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InCB=Extend;InPC=Bottom;InSC=Pure_Killer;jt=T;lb=CM;na=KHUDAWADI SIGN VIRAMA;SB=EX;WB=Extend;-XIDS
unassigned;112EB..112EF
# Digits
cp;112F0;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=KHUDAWADI DIGIT ZERO;nt=De;nv=0;SB=NU;WB=NU;-XIDS
@@ -25082,7 +25114,7 @@ cp;112F8;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=KHUDAWADI DIGIT EIGHT;nt=De;nv=8
cp;112F9;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=KHUDAWADI DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU;-XIDS
unassigned;112FA..112FF
-block;11300..1137F;age=7.0;Alpha;blk=Grantha;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Gran;WB=Extend;XIDC;XIDS
+block;11300..1137F;age=7.0;Alpha;blk=Grantha;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AK;SB=LE;sc=Gran;WB=Extend;XIDC;XIDS
# 11300..1137F Grantha
# Various signs
cp;11300;age=8.0;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=GRANTHA SIGN COMBINING ANUSVARA ABOVE;SB=EX;-XIDS
@@ -25145,9 +25177,9 @@ cp;11338;na=GRANTHA LETTER SA;WB=LE
cp;11339;na=GRANTHA LETTER HA;WB=LE
unassigned;1133A
# Various signs
-cp;1133B;age=11.0;-Alpha;bc=NSM;ccc=7;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=COMBINING BINDU BELOW;SB=EX;sc=Zinh;scx=Gran Taml;-XIDS
-cp;1133C;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=GRANTHA SIGN NUKTA;SB=EX;scx=Gran Taml;-XIDS
-cp;1133D;InSC=Avagraha;na=GRANTHA SIGN AVAGRAHA;WB=LE
+cp;1133B;age=11.0;-Alpha;bc=NSM;ccc=7;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=COMBINING BINDU BELOW;SB=EX;sc=Zinh;scx=Gran Taml;-XIDS
+cp;1133C;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=GRANTHA SIGN NUKTA;SB=EX;scx=Gran Taml;-XIDS
+cp;1133D;InSC=Avagraha;lb=BA;na=GRANTHA SIGN AVAGRAHA;WB=LE
# Dependent vowel signs
cp;1133E;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=GRANTHA VOWEL SIGN AA;NFC_QC=M;NFKC_QC=M;SB=EX;-XIDS
cp;1133F;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=GRANTHA VOWEL SIGN I;SB=EX;-XIDS
@@ -25164,19 +25196,19 @@ unassigned;11349..1134A
cp;1134B;dm=11347 1133E;dt=Can;gc=Mc;GCB=SM;-IDS;InPC=Left_And_Right;InSC=Vowel_Dependent;lb=CM;na=GRANTHA VOWEL SIGN OO;NFD_QC=N;NFKD_QC=N;SB=EX;-XIDS
cp;1134C;dm=11347 11357;dt=Can;gc=Mc;GCB=SM;-IDS;InPC=Left_And_Right;InSC=Vowel_Dependent;lb=CM;na=GRANTHA VOWEL SIGN AU;NFD_QC=N;NFKD_QC=N;SB=EX;-XIDS
# Virama
-cp;1134D;-Alpha;ccc=9;Dia;gc=Mc;GCB=SM;Gr_Link;-IDS;InPC=Right;InSC=Virama;lb=CM;na=GRANTHA SIGN VIRAMA;SB=EX;-XIDS
+cp;1134D;-Alpha;ccc=9;Dia;gc=Mc;GCB=SM;Gr_Link;-IDS;InPC=Right;InSC=Virama;lb=VI;na=GRANTHA SIGN VIRAMA;SB=EX;-XIDS
unassigned;1134E..1134F
# Sign
-cp;11350;age=8.0;InSC=Other;na=GRANTHA OM;WB=LE
+cp;11350;age=8.0;InSC=Other;lb=AS;na=GRANTHA OM;WB=LE
unassigned;11351..11356
# Dependent vowel sign
cp;11357;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=GRANTHA AU LENGTH MARK;NFC_QC=M;NFKC_QC=M;SB=EX;-XIDS
unassigned;11358..1135C
# Sign
-cp;1135D;Ext;InSC=Other;na=GRANTHA SIGN PLUTA;WB=LE
+cp;1135D;Ext;InSC=Other;lb=BA;na=GRANTHA SIGN PLUTA;WB=LE
# Anusvaras
-cp;1135E;InSC=Bindu;na=GRANTHA LETTER VEDIC ANUSVARA;WB=LE
-cp;1135F;InSC=Bindu;na=GRANTHA LETTER VEDIC DOUBLE ANUSVARA;WB=LE
+cp;1135E;InSC=Bindu;lb=AS;na=GRANTHA LETTER VEDIC ANUSVARA;WB=LE
+cp;1135F;InSC=Bindu;lb=AS;na=GRANTHA LETTER VEDIC DOUBLE ANUSVARA;WB=LE
# Independent vowels
cp;11360;InSC=Vowel_Independent;na=GRANTHA LETTER VOCALIC RR;WB=LE
cp;11361;InSC=Vowel_Independent;na=GRANTHA LETTER VOCALIC LL;WB=LE
@@ -25185,19 +25217,19 @@ cp;11362;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=GRANTHA VOWE
cp;11363;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=GRANTHA VOWEL SIGN VOCALIC LL;SB=EX;-XIDS
unassigned;11364..11365
# Cantillation marks (svara) for the Samaveda
-cp;11366;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Cantillation_Mark;jt=T;lb=CM;na=COMBINING GRANTHA DIGIT ZERO;SB=EX;-XIDS
-cp;11367;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Cantillation_Mark;jt=T;lb=CM;na=COMBINING GRANTHA DIGIT ONE;SB=EX;-XIDS
-cp;11368;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Cantillation_Mark;jt=T;lb=CM;na=COMBINING GRANTHA DIGIT TWO;SB=EX;-XIDS
-cp;11369;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Cantillation_Mark;jt=T;lb=CM;na=COMBINING GRANTHA DIGIT THREE;SB=EX;-XIDS
-cp;1136A;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Cantillation_Mark;jt=T;lb=CM;na=COMBINING GRANTHA DIGIT FOUR;SB=EX;-XIDS
-cp;1136B;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Cantillation_Mark;jt=T;lb=CM;na=COMBINING GRANTHA DIGIT FIVE;SB=EX;-XIDS
-cp;1136C;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Cantillation_Mark;jt=T;lb=CM;na=COMBINING GRANTHA DIGIT SIX;SB=EX;-XIDS
+cp;11366;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Top;InSC=Cantillation_Mark;jt=T;lb=CM;na=COMBINING GRANTHA DIGIT ZERO;SB=EX;-XIDS
+cp;11367;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Top;InSC=Cantillation_Mark;jt=T;lb=CM;na=COMBINING GRANTHA DIGIT ONE;SB=EX;-XIDS
+cp;11368;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Top;InSC=Cantillation_Mark;jt=T;lb=CM;na=COMBINING GRANTHA DIGIT TWO;SB=EX;-XIDS
+cp;11369;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Top;InSC=Cantillation_Mark;jt=T;lb=CM;na=COMBINING GRANTHA DIGIT THREE;SB=EX;-XIDS
+cp;1136A;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Top;InSC=Cantillation_Mark;jt=T;lb=CM;na=COMBINING GRANTHA DIGIT FOUR;SB=EX;-XIDS
+cp;1136B;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Top;InSC=Cantillation_Mark;jt=T;lb=CM;na=COMBINING GRANTHA DIGIT FIVE;SB=EX;-XIDS
+cp;1136C;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Top;InSC=Cantillation_Mark;jt=T;lb=CM;na=COMBINING GRANTHA DIGIT SIX;SB=EX;-XIDS
unassigned;1136D..1136F
-cp;11370;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Cantillation_Mark;jt=T;lb=CM;na=COMBINING GRANTHA LETTER A;SB=EX;-XIDS
-cp;11371;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Cantillation_Mark;jt=T;lb=CM;na=COMBINING GRANTHA LETTER KA;SB=EX;-XIDS
-cp;11372;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Cantillation_Mark;jt=T;lb=CM;na=COMBINING GRANTHA LETTER NA;SB=EX;-XIDS
-cp;11373;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Cantillation_Mark;jt=T;lb=CM;na=COMBINING GRANTHA LETTER VI;SB=EX;-XIDS
-cp;11374;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Cantillation_Mark;jt=T;lb=CM;na=COMBINING GRANTHA LETTER PA;SB=EX;-XIDS
+cp;11370;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Top;InSC=Cantillation_Mark;jt=T;lb=CM;na=COMBINING GRANTHA LETTER A;SB=EX;-XIDS
+cp;11371;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Top;InSC=Cantillation_Mark;jt=T;lb=CM;na=COMBINING GRANTHA LETTER KA;SB=EX;-XIDS
+cp;11372;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Top;InSC=Cantillation_Mark;jt=T;lb=CM;na=COMBINING GRANTHA LETTER NA;SB=EX;-XIDS
+cp;11373;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Top;InSC=Cantillation_Mark;jt=T;lb=CM;na=COMBINING GRANTHA LETTER VI;SB=EX;-XIDS
+cp;11374;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Top;InSC=Cantillation_Mark;jt=T;lb=CM;na=COMBINING GRANTHA LETTER PA;SB=EX;-XIDS
unassigned;11375..1137F
block;11400..1147F;age=9.0;Alpha;blk=Newa;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Newa;WB=LE;XIDC;XIDS
@@ -25276,7 +25308,7 @@ cp;11442;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;In
cp;11443;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=NEWA SIGN CANDRABINDU;SB=EX;WB=Extend;-XIDS
cp;11444;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=NEWA SIGN ANUSVARA;SB=EX;WB=Extend;-XIDS
cp;11445;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Visarga;lb=CM;na=NEWA SIGN VISARGA;SB=EX;WB=Extend;-XIDS
-cp;11446;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=NEWA SIGN NUKTA;SB=EX;WB=Extend;-XIDS
+cp;11446;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=NEWA SIGN NUKTA;SB=EX;WB=Extend;-XIDS
cp;11447;InSC=Avagraha;na=NEWA SIGN AVAGRAHA
cp;11448;InSC=Other;na=NEWA SIGN FINAL ANUSVARA
# Invocation signs
@@ -25305,7 +25337,7 @@ cp;1145A;age=13.0;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=NEWA DOUBLE COMMA;S
cp;1145B;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=NEWA PLACEHOLDER MARK;SB=XX;Term;WB=XX;-XIDC;-XIDS
unassigned;1145C
cp;1145D;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;na=NEWA INSERTION SIGN;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1145E;age=11.0;-Alpha;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Syllable_Modifier;jt=T;lb=CM;na=NEWA SANDHI MARK;SB=EX;WB=Extend;-XIDS
+cp;1145E;age=11.0;-Alpha;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Top;InSC=Syllable_Modifier;jt=T;lb=CM;na=NEWA SANDHI MARK;SB=EX;WB=Extend;-XIDS
cp;1145F;age=12.0;InSC=Bindu;na=NEWA LETTER VEDIC ANUSVARA
cp;11460;age=13.0;InSC=Consonant_With_Stacker;na=NEWA SIGN JIHVAMULIYA
cp;11461;age=13.0;InSC=Consonant_With_Stacker;na=NEWA SIGN UPADHMANIYA
@@ -25385,7 +25417,7 @@ cp;114BF;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Bindu;jt=T;lb
cp;114C0;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=TIRHUTA SIGN ANUSVARA;SB=EX;WB=Extend;-XIDS
cp;114C1;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Visarga;lb=CM;na=TIRHUTA SIGN VISARGA;SB=EX;WB=Extend;-XIDS
cp;114C2;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InPC=Bottom;InSC=Virama;jt=T;lb=CM;na=TIRHUTA SIGN VIRAMA;SB=EX;WB=Extend;-XIDS
-cp;114C3;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=TIRHUTA SIGN NUKTA;SB=EX;WB=Extend;-XIDS
+cp;114C3;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=TIRHUTA SIGN NUKTA;SB=EX;WB=Extend;-XIDS
cp;114C4;InSC=Avagraha;na=TIRHUTA SIGN AVAGRAHA
cp;114C5;InSC=Other;na=TIRHUTA GVANG
cp;114C6;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;na=TIRHUTA ABBREVIATION SIGN;SB=XX;WB=XX;-XIDC;-XIDS
@@ -25473,7 +25505,7 @@ cp;115BC;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Bindu;jt=T;lb=CM;n
cp;115BD;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=SIDDHAM SIGN ANUSVARA;SB=EX;WB=Extend;-XIDS
cp;115BE;gc=Mc;GCB=SM;InPC=Right;InSC=Visarga;lb=CM;na=SIDDHAM SIGN VISARGA;SB=EX;WB=Extend;-XIDS
cp;115BF;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;InPC=Bottom;InSC=Virama;jt=T;lb=CM;na=SIDDHAM SIGN VIRAMA;SB=EX;WB=Extend;-XIDS
-cp;115C0;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=SIDDHAM SIGN NUKTA;SB=EX;WB=Extend;-XIDS
+cp;115C0;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InCB=Extend;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=SIDDHAM SIGN NUKTA;SB=EX;WB=Extend;-XIDS
# Head mark
cp;115C1;-Alpha;gc=Po;-IDC;InSC=Other;lb=BB;na=SIDDHAM SIGN SIDDHAM;SB=XX;WB=XX;-XIDC;-XIDS
# Punctuation
@@ -25684,7 +25716,7 @@ cp;116B5;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Depende
# Virama
cp;116B6;-Alpha;ccc=9;Dia;gc=Mc;GCB=SM;Gr_Link;-IDS;InPC=Right;InSC=Virama;lb=CM;na=TAKRI SIGN VIRAMA;SB=EX;WB=Extend;-XIDS
# Nukta
-cp;116B7;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=TAKRI SIGN NUKTA;SB=EX;WB=Extend;-XIDS
+cp;116B7;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=TAKRI SIGN NUKTA;SB=EX;WB=Extend;-XIDS
# Consonant
cp;116B8;age=12.0;na=TAKRI LETTER ARCHAIC KHA
# Punctuation
@@ -25750,7 +25782,7 @@ cp;11727;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Vowel_Dependent;jt
cp;11728;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Bottom;InSC=Vowel_Dependent;jt=T;na=AHOM VOWEL SIGN O;SB=EX;WB=Extend
cp;11729;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Vowel_Dependent;jt=T;na=AHOM VOWEL SIGN AI;SB=EX;WB=Extend
cp;1172A;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Vowel_Dependent;jt=T;na=AHOM VOWEL SIGN AM;SB=EX;WB=Extend
-cp;1172B;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;InPC=Top;InSC=Pure_Killer;jt=T;na=AHOM SIGN KILLER;SB=EX;WB=Extend
+cp;1172B;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;InCB=Extend;InPC=Top;InSC=Pure_Killer;jt=T;na=AHOM SIGN KILLER;SB=EX;WB=Extend
unassigned;1172C..1172F
# Digits
cp;11730;-Alpha;gc=Nd;InSC=Number;lb=NU;na=AHOM DIGIT ZERO;nt=De;nv=0;SB=NU;WB=NU
@@ -25845,7 +25877,7 @@ cp;11836;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Depende
cp;11837;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=DOGRA SIGN ANUSVARA;SB=EX;WB=Extend;-XIDS
cp;11838;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Visarga;lb=CM;na=DOGRA SIGN VISARGA;SB=EX;WB=Extend;-XIDS
cp;11839;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InPC=Bottom;InSC=Virama;jt=T;lb=CM;na=DOGRA SIGN VIRAMA;SB=EX;WB=Extend;-XIDS
-cp;1183A;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=DOGRA SIGN NUKTA;SB=EX;WB=Extend;-XIDS
+cp;1183A;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=DOGRA SIGN NUKTA;SB=EX;WB=Extend;-XIDS
# Punctuation
cp;1183B;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;na=DOGRA ABBREVIATION SIGN;SB=XX;WB=XX;-XIDC;-XIDS
unassigned;1183C..1184F
@@ -25853,39 +25885,39 @@ unassigned;1183C..1184F
block;118A0..118FF;age=7.0;Alpha;blk=Warang_Citi;Cased;CWCM;gc=Ll;Gr_Base;IDC;IDS;lb=AL;SB=LO;sc=Wara;WB=LE;XIDC;XIDS
# 118A0..118FF Warang Citi
# Uppercase vowels
-cp;118A0;cf=118C0;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER NGAA;NFKC_CF=118C0;SB=UP;scf=118C0;slc=118C0;Upper
-cp;118A1;cf=118C1;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER A;NFKC_CF=118C1;SB=UP;scf=118C1;slc=118C1;Upper
-cp;118A2;cf=118C2;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER WI;NFKC_CF=118C2;SB=UP;scf=118C2;slc=118C2;Upper
-cp;118A3;cf=118C3;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER YU;NFKC_CF=118C3;SB=UP;scf=118C3;slc=118C3;Upper
-cp;118A4;cf=118C4;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER YA;NFKC_CF=118C4;SB=UP;scf=118C4;slc=118C4;Upper
-cp;118A5;cf=118C5;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER YO;NFKC_CF=118C5;SB=UP;scf=118C5;slc=118C5;Upper
-cp;118A6;cf=118C6;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER II;NFKC_CF=118C6;SB=UP;scf=118C6;slc=118C6;Upper
-cp;118A7;cf=118C7;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER UU;NFKC_CF=118C7;SB=UP;scf=118C7;slc=118C7;Upper
-cp;118A8;cf=118C8;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER E;NFKC_CF=118C8;SB=UP;scf=118C8;slc=118C8;Upper
-cp;118A9;cf=118C9;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER O;NFKC_CF=118C9;SB=UP;scf=118C9;slc=118C9;Upper
+cp;118A0;cf=118C0;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER NGAA;NFKC_CF=118C0;NFKC_SCF=118C0;SB=UP;scf=118C0;slc=118C0;Upper
+cp;118A1;cf=118C1;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER A;NFKC_CF=118C1;NFKC_SCF=118C1;SB=UP;scf=118C1;slc=118C1;Upper
+cp;118A2;cf=118C2;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER WI;NFKC_CF=118C2;NFKC_SCF=118C2;SB=UP;scf=118C2;slc=118C2;Upper
+cp;118A3;cf=118C3;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER YU;NFKC_CF=118C3;NFKC_SCF=118C3;SB=UP;scf=118C3;slc=118C3;Upper
+cp;118A4;cf=118C4;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER YA;NFKC_CF=118C4;NFKC_SCF=118C4;SB=UP;scf=118C4;slc=118C4;Upper
+cp;118A5;cf=118C5;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER YO;NFKC_CF=118C5;NFKC_SCF=118C5;SB=UP;scf=118C5;slc=118C5;Upper
+cp;118A6;cf=118C6;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER II;NFKC_CF=118C6;NFKC_SCF=118C6;SB=UP;scf=118C6;slc=118C6;Upper
+cp;118A7;cf=118C7;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER UU;NFKC_CF=118C7;NFKC_SCF=118C7;SB=UP;scf=118C7;slc=118C7;Upper
+cp;118A8;cf=118C8;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER E;NFKC_CF=118C8;NFKC_SCF=118C8;SB=UP;scf=118C8;slc=118C8;Upper
+cp;118A9;cf=118C9;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER O;NFKC_CF=118C9;NFKC_SCF=118C9;SB=UP;scf=118C9;slc=118C9;Upper
# Uppercase consonants
-cp;118AA;cf=118CA;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER ANG;NFKC_CF=118CA;SB=UP;scf=118CA;slc=118CA;Upper
-cp;118AB;cf=118CB;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER GA;NFKC_CF=118CB;SB=UP;scf=118CB;slc=118CB;Upper
-cp;118AC;cf=118CC;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER KO;NFKC_CF=118CC;SB=UP;scf=118CC;slc=118CC;Upper
-cp;118AD;cf=118CD;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER ENY;NFKC_CF=118CD;SB=UP;scf=118CD;slc=118CD;Upper
-cp;118AE;cf=118CE;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER YUJ;NFKC_CF=118CE;SB=UP;scf=118CE;slc=118CE;Upper
-cp;118AF;cf=118CF;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER UC;NFKC_CF=118CF;SB=UP;scf=118CF;slc=118CF;Upper
-cp;118B0;cf=118D0;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER ENN;NFKC_CF=118D0;SB=UP;scf=118D0;slc=118D0;Upper
-cp;118B1;cf=118D1;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER ODD;NFKC_CF=118D1;SB=UP;scf=118D1;slc=118D1;Upper
-cp;118B2;cf=118D2;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER TTE;NFKC_CF=118D2;SB=UP;scf=118D2;slc=118D2;Upper
-cp;118B3;cf=118D3;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER NUNG;NFKC_CF=118D3;SB=UP;scf=118D3;slc=118D3;Upper
-cp;118B4;cf=118D4;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER DA;NFKC_CF=118D4;SB=UP;scf=118D4;slc=118D4;Upper
-cp;118B5;cf=118D5;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER AT;NFKC_CF=118D5;SB=UP;scf=118D5;slc=118D5;Upper
-cp;118B6;cf=118D6;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER AM;NFKC_CF=118D6;SB=UP;scf=118D6;slc=118D6;Upper
-cp;118B7;cf=118D7;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER BU;NFKC_CF=118D7;SB=UP;scf=118D7;slc=118D7;Upper
-cp;118B8;cf=118D8;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER PU;NFKC_CF=118D8;SB=UP;scf=118D8;slc=118D8;Upper
-cp;118B9;cf=118D9;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER HIYO;NFKC_CF=118D9;SB=UP;scf=118D9;slc=118D9;Upper
-cp;118BA;cf=118DA;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER HOLO;NFKC_CF=118DA;SB=UP;scf=118DA;slc=118DA;Upper
-cp;118BB;cf=118DB;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER HORR;NFKC_CF=118DB;SB=UP;scf=118DB;slc=118DB;Upper
-cp;118BC;cf=118DC;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER HAR;NFKC_CF=118DC;SB=UP;scf=118DC;slc=118DC;Upper
-cp;118BD;cf=118DD;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER SSUU;NFKC_CF=118DD;SB=UP;scf=118DD;slc=118DD;Upper
-cp;118BE;cf=118DE;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER SII;NFKC_CF=118DE;SB=UP;scf=118DE;slc=118DE;Upper
-cp;118BF;cf=118DF;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER VIYO;NFKC_CF=118DF;SB=UP;scf=118DF;slc=118DF;Upper
+cp;118AA;cf=118CA;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER ANG;NFKC_CF=118CA;NFKC_SCF=118CA;SB=UP;scf=118CA;slc=118CA;Upper
+cp;118AB;cf=118CB;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER GA;NFKC_CF=118CB;NFKC_SCF=118CB;SB=UP;scf=118CB;slc=118CB;Upper
+cp;118AC;cf=118CC;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER KO;NFKC_CF=118CC;NFKC_SCF=118CC;SB=UP;scf=118CC;slc=118CC;Upper
+cp;118AD;cf=118CD;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER ENY;NFKC_CF=118CD;NFKC_SCF=118CD;SB=UP;scf=118CD;slc=118CD;Upper
+cp;118AE;cf=118CE;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER YUJ;NFKC_CF=118CE;NFKC_SCF=118CE;SB=UP;scf=118CE;slc=118CE;Upper
+cp;118AF;cf=118CF;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER UC;NFKC_CF=118CF;NFKC_SCF=118CF;SB=UP;scf=118CF;slc=118CF;Upper
+cp;118B0;cf=118D0;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER ENN;NFKC_CF=118D0;NFKC_SCF=118D0;SB=UP;scf=118D0;slc=118D0;Upper
+cp;118B1;cf=118D1;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER ODD;NFKC_CF=118D1;NFKC_SCF=118D1;SB=UP;scf=118D1;slc=118D1;Upper
+cp;118B2;cf=118D2;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER TTE;NFKC_CF=118D2;NFKC_SCF=118D2;SB=UP;scf=118D2;slc=118D2;Upper
+cp;118B3;cf=118D3;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER NUNG;NFKC_CF=118D3;NFKC_SCF=118D3;SB=UP;scf=118D3;slc=118D3;Upper
+cp;118B4;cf=118D4;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER DA;NFKC_CF=118D4;NFKC_SCF=118D4;SB=UP;scf=118D4;slc=118D4;Upper
+cp;118B5;cf=118D5;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER AT;NFKC_CF=118D5;NFKC_SCF=118D5;SB=UP;scf=118D5;slc=118D5;Upper
+cp;118B6;cf=118D6;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER AM;NFKC_CF=118D6;NFKC_SCF=118D6;SB=UP;scf=118D6;slc=118D6;Upper
+cp;118B7;cf=118D7;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER BU;NFKC_CF=118D7;NFKC_SCF=118D7;SB=UP;scf=118D7;slc=118D7;Upper
+cp;118B8;cf=118D8;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER PU;NFKC_CF=118D8;NFKC_SCF=118D8;SB=UP;scf=118D8;slc=118D8;Upper
+cp;118B9;cf=118D9;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER HIYO;NFKC_CF=118D9;NFKC_SCF=118D9;SB=UP;scf=118D9;slc=118D9;Upper
+cp;118BA;cf=118DA;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER HOLO;NFKC_CF=118DA;NFKC_SCF=118DA;SB=UP;scf=118DA;slc=118DA;Upper
+cp;118BB;cf=118DB;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER HORR;NFKC_CF=118DB;NFKC_SCF=118DB;SB=UP;scf=118DB;slc=118DB;Upper
+cp;118BC;cf=118DC;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER HAR;NFKC_CF=118DC;NFKC_SCF=118DC;SB=UP;scf=118DC;slc=118DC;Upper
+cp;118BD;cf=118DD;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER SSUU;NFKC_CF=118DD;NFKC_SCF=118DD;SB=UP;scf=118DD;slc=118DD;Upper
+cp;118BE;cf=118DE;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER SII;NFKC_CF=118DE;NFKC_SCF=118DE;SB=UP;scf=118DE;slc=118DE;Upper
+cp;118BF;cf=118DF;CWCF;CWKCF;CWL;gc=Lu;na=WARANG CITI CAPITAL LETTER VIYO;NFKC_CF=118DF;NFKC_SCF=118DF;SB=UP;scf=118DF;slc=118DF;Upper
# Lowercase vowels
cp;118C0;CWT;CWU;Lower;na=WARANG CITI SMALL LETTER NGAA;stc=118A0;suc=118A0
cp;118C1;CWT;CWU;Lower;na=WARANG CITI SMALL LETTER A;stc=118A1;suc=118A1
@@ -25945,7 +25977,7 @@ unassigned;118F3..118FE
# Sign
cp;118FF;-Cased;-CWCM;gc=Lo;na=WARANG CITI OM;SB=LE
-block;11900..1195F;age=13.0;Alpha;blk=Dives_Akuru;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Diak;WB=LE;XIDC;XIDS
+block;11900..1195F;age=13.0;Alpha;blk=Dives_Akuru;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AK;SB=LE;sc=Diak;WB=LE;XIDC;XIDS
# 11900..1195F Dives Akuru
# Independent vowels
cp;11900;InSC=Vowel_Independent;na=DIVES AKURU LETTER A
@@ -26011,30 +26043,30 @@ cp;1193B;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Bindu;jt=T;lb
cp;1193C;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=DIVES AKURU SIGN CANDRABINDU;SB=EX;WB=Extend;-XIDS
# Signs
cp;1193D;-Alpha;ccc=9;Dia;gc=Mc;GCB=SM;Gr_Link;-IDS;InPC=Right;InSC=Pure_Killer;lb=CM;na=DIVES AKURU SIGN HALANTA;SB=EX;WB=Extend;-XIDS
-cp;1193E;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InSC=Invisible_Stacker;jt=T;lb=CM;na=DIVES AKURU VIRAMA;SB=EX;WB=Extend;-XIDS
-cp;1193F;GCB=PP;InPC=Top;InSC=Consonant_Prefixed;na=DIVES AKURU PREFIXED NASAL SIGN
+cp;1193E;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InCB=Extend;InSC=Invisible_Stacker;jt=T;lb=VI;na=DIVES AKURU VIRAMA;SB=EX;WB=Extend;-XIDS
+cp;1193F;GCB=PP;InPC=Top;InSC=Consonant_Prefixed;lb=AP;na=DIVES AKURU PREFIXED NASAL SIGN
# Conjunct-specific letters
cp;11940;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Consonant_Medial;lb=CM;na=DIVES AKURU MEDIAL YA;SB=EX;WB=Extend;-XIDS
-cp;11941;GCB=PP;InPC=Top;InSC=Consonant_Preceding_Repha;na=DIVES AKURU INITIAL RA
+cp;11941;GCB=PP;InPC=Top;InSC=Consonant_Preceding_Repha;lb=AP;na=DIVES AKURU INITIAL RA
cp;11942;gc=Mc;GCB=SM;-IDS;InPC=Bottom_And_Right;InSC=Consonant_Medial;lb=CM;na=DIVES AKURU MEDIAL RA;SB=EX;WB=Extend;-XIDS
# Nukta
-cp;11943;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=DIVES AKURU SIGN NUKTA;SB=EX;WB=Extend;-XIDS
+cp;11943;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=DIVES AKURU SIGN NUKTA;SB=EX;WB=Extend;-XIDS
# Punctuation
cp;11944;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=DIVES AKURU DOUBLE DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
cp;11945;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=DIVES AKURU GAP FILLER;SB=XX;WB=XX;-XIDC;-XIDS
cp;11946;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=DIVES AKURU END OF TEXT MARK;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
unassigned;11947..1194F
# Digits
-cp;11950;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=DIVES AKURU DIGIT ZERO;nt=De;nv=0;SB=NU;WB=NU;-XIDS
-cp;11951;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=DIVES AKURU DIGIT ONE;nt=De;nv=1;SB=NU;WB=NU;-XIDS
-cp;11952;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=DIVES AKURU DIGIT TWO;nt=De;nv=2;SB=NU;WB=NU;-XIDS
-cp;11953;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=DIVES AKURU DIGIT THREE;nt=De;nv=3;SB=NU;WB=NU;-XIDS
-cp;11954;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=DIVES AKURU DIGIT FOUR;nt=De;nv=4;SB=NU;WB=NU;-XIDS
-cp;11955;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=DIVES AKURU DIGIT FIVE;nt=De;nv=5;SB=NU;WB=NU;-XIDS
-cp;11956;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=DIVES AKURU DIGIT SIX;nt=De;nv=6;SB=NU;WB=NU;-XIDS
-cp;11957;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=DIVES AKURU DIGIT SEVEN;nt=De;nv=7;SB=NU;WB=NU;-XIDS
-cp;11958;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=DIVES AKURU DIGIT EIGHT;nt=De;nv=8;SB=NU;WB=NU;-XIDS
-cp;11959;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=DIVES AKURU DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU;-XIDS
+cp;11950;-Alpha;gc=Nd;-IDS;InSC=Number;lb=ID;na=DIVES AKURU DIGIT ZERO;nt=De;nv=0;SB=NU;WB=NU;-XIDS
+cp;11951;-Alpha;gc=Nd;-IDS;InSC=Number;lb=ID;na=DIVES AKURU DIGIT ONE;nt=De;nv=1;SB=NU;WB=NU;-XIDS
+cp;11952;-Alpha;gc=Nd;-IDS;InSC=Number;lb=ID;na=DIVES AKURU DIGIT TWO;nt=De;nv=2;SB=NU;WB=NU;-XIDS
+cp;11953;-Alpha;gc=Nd;-IDS;InSC=Number;lb=ID;na=DIVES AKURU DIGIT THREE;nt=De;nv=3;SB=NU;WB=NU;-XIDS
+cp;11954;-Alpha;gc=Nd;-IDS;InSC=Number;lb=ID;na=DIVES AKURU DIGIT FOUR;nt=De;nv=4;SB=NU;WB=NU;-XIDS
+cp;11955;-Alpha;gc=Nd;-IDS;InSC=Number;lb=ID;na=DIVES AKURU DIGIT FIVE;nt=De;nv=5;SB=NU;WB=NU;-XIDS
+cp;11956;-Alpha;gc=Nd;-IDS;InSC=Number;lb=ID;na=DIVES AKURU DIGIT SIX;nt=De;nv=6;SB=NU;WB=NU;-XIDS
+cp;11957;-Alpha;gc=Nd;-IDS;InSC=Number;lb=ID;na=DIVES AKURU DIGIT SEVEN;nt=De;nv=7;SB=NU;WB=NU;-XIDS
+cp;11958;-Alpha;gc=Nd;-IDS;InSC=Number;lb=ID;na=DIVES AKURU DIGIT EIGHT;nt=De;nv=8;SB=NU;WB=NU;-XIDS
+cp;11959;-Alpha;gc=Nd;-IDS;InSC=Number;lb=ID;na=DIVES AKURU DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU;-XIDS
unassigned;1195A..1195F
block;119A0..119FF;age=12.0;Alpha;blk=Nandinagari;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Nand;WB=LE;XIDC;XIDS
@@ -26174,7 +26206,7 @@ cp;11A32;na=ZANABAZAR SQUARE LETTER KSSA
# Final consonant mark
cp;11A33;-Alpha;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Syllable_Modifier;jt=T;lb=CM;na=ZANABAZAR SQUARE FINAL CONSONANT MARK;SB=EX;WB=Extend;-XIDS
# Virama
-cp;11A34;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InPC=Bottom;InSC=Pure_Killer;jt=T;lb=CM;na=ZANABAZAR SQUARE SIGN VIRAMA;SB=EX;WB=Extend;-XIDS
+cp;11A34;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InCB=Extend;InPC=Bottom;InSC=Pure_Killer;jt=T;lb=CM;na=ZANABAZAR SQUARE SIGN VIRAMA;SB=EX;WB=Extend;-XIDS
# Candrabindu and candra ornaments
cp;11A35;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=ZANABAZAR SQUARE SIGN CANDRABINDU;SB=EX;WB=Extend;-XIDS
cp;11A36;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=ZANABAZAR SQUARE SIGN CANDRABINDU WITH ORNAMENT;SB=EX;WB=Extend;-XIDS
@@ -26201,7 +26233,7 @@ cp;11A44;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=ZANABAZAR SQUARE MARK LONG T
cp;11A45;-Alpha;gc=Po;-IDC;-IDS;InSC=Consonant_Placeholder;lb=BB;na=ZANABAZAR SQUARE INITIAL DOUBLE-LINED HEAD MARK;SB=XX;WB=XX;-XIDC;-XIDS
cp;11A46;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;na=ZANABAZAR SQUARE CLOSING DOUBLE-LINED HEAD MARK;SB=XX;WB=XX;-XIDC;-XIDS
# Subjoiner
-cp;11A47;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InSC=Invisible_Stacker;jt=T;lb=CM;na=ZANABAZAR SQUARE SUBJOINER;SB=EX;WB=Extend;-XIDS
+cp;11A47;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InCB=Extend;InSC=Invisible_Stacker;jt=T;lb=CM;na=ZANABAZAR SQUARE SUBJOINER;SB=EX;WB=Extend;-XIDS
unassigned;11A48..11A4F;vo=U
block;11A50..11AAF;age=10.0;Alpha;blk=Soyombo;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Soyo;vo=U;WB=LE;XIDC;XIDS
@@ -26289,7 +26321,7 @@ cp;11A97;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Visarga;lb=CM;na=SOYOMBO SIGN VISARGA
# Gemination mark
cp;11A98;-Alpha;bc=NSM;CI;Ext;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Gemination_Mark;jt=T;lb=CM;na=SOYOMBO GEMINATION MARK;SB=EX;WB=Extend;-XIDS
# Subjoiner
-cp;11A99;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InSC=Invisible_Stacker;jt=T;lb=CM;na=SOYOMBO SUBJOINER;SB=EX;WB=Extend;-XIDS
+cp;11A99;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InCB=Extend;InSC=Invisible_Stacker;jt=T;lb=CM;na=SOYOMBO SUBJOINER;SB=EX;WB=Extend;-XIDS
# Punctuation
cp;11A9A;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=SOYOMBO MARK TSHEG;SB=XX;WB=XX;-XIDC;-XIDS
cp;11A9B;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=SOYOMBO MARK SHAD;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
@@ -26669,11 +26701,11 @@ cp;11D3F;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Depende
# Various signs
cp;11D40;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=MASARAM GONDI SIGN ANUSVARA;SB=EX;WB=Extend;-XIDS
cp;11D41;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Visarga;jt=T;lb=CM;na=MASARAM GONDI SIGN VISARGA;SB=EX;WB=Extend;-XIDS
-cp;11D42;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=MASARAM GONDI SIGN NUKTA;SB=EX;WB=Extend;-XIDS
+cp;11D42;-Alpha;bc=NSM;ccc=7;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;InPC=Bottom;InSC=Nukta;jt=T;lb=CM;na=MASARAM GONDI SIGN NUKTA;SB=EX;WB=Extend;-XIDS
cp;11D43;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=MASARAM GONDI SIGN CANDRA;SB=EX;WB=Extend;-XIDS
-cp;11D44;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InPC=Bottom;InSC=Pure_Killer;jt=T;lb=CM;na=MASARAM GONDI SIGN HALANTA;SB=EX;WB=Extend;-XIDS
+cp;11D44;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InCB=Extend;InPC=Bottom;InSC=Pure_Killer;jt=T;lb=CM;na=MASARAM GONDI SIGN HALANTA;SB=EX;WB=Extend;-XIDS
# Virama
-cp;11D45;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InSC=Invisible_Stacker;jt=T;lb=CM;na=MASARAM GONDI VIRAMA;SB=EX;WB=Extend;-XIDS
+cp;11D45;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InCB=Extend;InSC=Invisible_Stacker;jt=T;lb=CM;na=MASARAM GONDI VIRAMA;SB=EX;WB=Extend;-XIDS
# Cluster-specific consonant forms
cp;11D46;GCB=PP;InPC=Right;InSC=Consonant_Preceding_Repha;na=MASARAM GONDI REPHA
cp;11D47;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Consonant_Medial;jt=T;lb=CM;na=MASARAM GONDI RA-KARA;SB=EX;WB=Extend;-XIDS
@@ -26753,7 +26785,7 @@ cp;11D94;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=GUNJALA GOND
cp;11D95;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=GUNJALA GONDI SIGN ANUSVARA;SB=EX;WB=Extend;-XIDS
cp;11D96;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Visarga;lb=CM;na=GUNJALA GONDI SIGN VISARGA;SB=EX;WB=Extend;-XIDS
# Virama
-cp;11D97;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InSC=Invisible_Stacker;jt=T;lb=CM;na=GUNJALA GONDI VIRAMA;SB=EX;WB=Extend;-XIDS
+cp;11D97;-Alpha;bc=NSM;ccc=9;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;-IDS;InCB=Extend;InSC=Invisible_Stacker;jt=T;lb=CM;na=GUNJALA GONDI VIRAMA;SB=EX;WB=Extend;-XIDS
# Symbol
cp;11D98;InSC=Other;na=GUNJALA GONDI OM
unassigned;11D99..11D9F
@@ -26770,7 +26802,7 @@ cp;11DA8;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=GUNJALA GONDI DIGIT EIGHT;nt=De;
cp;11DA9;-Alpha;gc=Nd;-IDS;InSC=Number;lb=NU;na=GUNJALA GONDI DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU;-XIDS
unassigned;11DAA..11DAF
-block;11EE0..11EFF;age=11.0;Alpha;blk=Makasar;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AL;SB=LE;sc=Maka;WB=LE;XIDC;XIDS
+block;11EE0..11EFF;age=11.0;Alpha;blk=Makasar;gc=Lo;Gr_Base;IDC;IDS;InSC=Consonant;lb=AS;SB=LE;sc=Maka;WB=LE;XIDC;XIDS
# 11EE0..11EFF Makasar
# Consonants
cp;11EE0;na=MAKASAR LETTER KA
@@ -26792,23 +26824,23 @@ cp;11EEF;na=MAKASAR LETTER VA
cp;11EF0;na=MAKASAR LETTER SA
cp;11EF1;na=MAKASAR LETTER A
# Consonant reduplicator
-cp;11EF2;InSC=Consonant_Placeholder;na=MAKASAR ANGKA
+cp;11EF2;InSC=Consonant_Placeholder;lb=BA;na=MAKASAR ANGKA
# Vowel signs
cp;11EF3;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=MAKASAR VOWEL SIGN I;SB=EX;WB=Extend;-XIDS
cp;11EF4;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InPC=Bottom;InSC=Vowel_Dependent;jt=T;lb=CM;na=MAKASAR VOWEL SIGN U;SB=EX;WB=Extend;-XIDS
cp;11EF5;gc=Mc;GCB=SM;-IDS;InPC=Left;InSC=Vowel_Dependent;lb=CM;na=MAKASAR VOWEL SIGN E;SB=EX;WB=Extend;-XIDS
cp;11EF6;gc=Mc;GCB=SM;-IDS;InPC=Right;InSC=Vowel_Dependent;lb=CM;na=MAKASAR VOWEL SIGN O;SB=EX;WB=Extend;-XIDS
# Punctuation
-cp;11EF7;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;na=MAKASAR PASSIMBANG;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-cp;11EF8;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;na=MAKASAR END OF SECTION;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;11EF7;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=MAKASAR PASSIMBANG;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
+cp;11EF8;-Alpha;gc=Po;-IDC;-IDS;InSC=Other;lb=BA;na=MAKASAR END OF SECTION;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
unassigned;11EF9..11EFF
-block;11F00..11F5F;age=15.0;Alpha;blk=Kawi;gc=Lo;Gr_Base;IDC;InSC=Consonant;lb=AL;SB=LE;sc=Kawi;WB=LE;XIDC;XIDS
+block;11F00..11F5F;age=15.0;Alpha;blk=Kawi;gc=Lo;Gr_Base;IDC;InSC=Consonant;lb=AK;SB=LE;sc=Kawi;WB=LE;XIDC;XIDS
# 11F00..11F5F Kawi
# Signs
cp;11F00;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=KAWI SIGN CANDRABINDU;SB=EX;WB=Extend;-XIDS
cp;11F01;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Bindu;jt=T;lb=CM;na=KAWI SIGN ANUSVARA;SB=EX;WB=Extend;-XIDS
-cp;11F02;GCB=PP;IDS;InPC=Top;InSC=Consonant_Preceding_Repha;na=KAWI SIGN REPHA
+cp;11F02;GCB=PP;IDS;InPC=Top;InSC=Consonant_Preceding_Repha;lb=AP;na=KAWI SIGN REPHA
cp;11F03;gc=Mc;GCB=SM;InPC=Right;InSC=Visarga;lb=CM;na=KAWI SIGN VISARGA;SB=EX;WB=Extend;-XIDS
# Independent vowels
cp;11F04;IDS;InSC=Vowel_Independent;na=KAWI LETTER A
@@ -26874,7 +26906,7 @@ cp;11F3F;gc=Mc;GCB=SM;InPC=Left;InSC=Vowel_Dependent;lb=CM;na=KAWI VOWEL SIGN AI
cp;11F40;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;InPC=Top;InSC=Vowel_Dependent;jt=T;lb=CM;na=KAWI VOWEL SIGN EU;SB=EX;WB=Extend;-XIDS
# Viramas
cp;11F41;-Alpha;ccc=9;gc=Mc;GCB=SM;Gr_Link;InPC=Right;InSC=Pure_Killer;lb=CM;na=KAWI SIGN KILLER;SB=EX;WB=Extend;-XIDS
-cp;11F42;-Alpha;bc=NSM;ccc=9;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;InSC=Invisible_Stacker;jt=T;lb=CM;na=KAWI CONJOINER;SB=EX;WB=Extend;-XIDS
+cp;11F42;-Alpha;bc=NSM;ccc=9;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;Gr_Link;InCB=Extend;InSC=Invisible_Stacker;jt=T;lb=VI;na=KAWI CONJOINER;SB=EX;WB=Extend;-XIDS
# Punctuation
cp;11F43;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=KAWI DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
cp;11F44;-Alpha;gc=Po;-IDC;InSC=Other;lb=BA;na=KAWI DOUBLE DANDA;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
@@ -26890,16 +26922,16 @@ cp;11F4D;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=KAWI PUNCTUATION FILLED CIRCLE;SB
cp;11F4E;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=KAWI PUNCTUATION SPIRAL;SB=XX;WB=XX;-XIDC;-XIDS
cp;11F4F;-Alpha;gc=Po;-IDC;InSC=Other;lb=ID;na=KAWI PUNCTUATION CLOSING SPIRAL;SB=XX;WB=XX;-XIDC;-XIDS
# Digits
-cp;11F50;-Alpha;gc=Nd;InSC=Number;lb=NU;na=KAWI DIGIT ZERO;nt=De;nv=0;SB=NU;WB=NU;-XIDS
-cp;11F51;-Alpha;gc=Nd;InSC=Number;lb=NU;na=KAWI DIGIT ONE;nt=De;nv=1;SB=NU;WB=NU;-XIDS
-cp;11F52;-Alpha;gc=Nd;InSC=Number;lb=NU;na=KAWI DIGIT TWO;nt=De;nv=2;SB=NU;WB=NU;-XIDS
-cp;11F53;-Alpha;gc=Nd;InSC=Number;lb=NU;na=KAWI DIGIT THREE;nt=De;nv=3;SB=NU;WB=NU;-XIDS
-cp;11F54;-Alpha;gc=Nd;InSC=Number;lb=NU;na=KAWI DIGIT FOUR;nt=De;nv=4;SB=NU;WB=NU;-XIDS
-cp;11F55;-Alpha;gc=Nd;InSC=Number;lb=NU;na=KAWI DIGIT FIVE;nt=De;nv=5;SB=NU;WB=NU;-XIDS
-cp;11F56;-Alpha;gc=Nd;InSC=Number;lb=NU;na=KAWI DIGIT SIX;nt=De;nv=6;SB=NU;WB=NU;-XIDS
-cp;11F57;-Alpha;gc=Nd;InSC=Number;lb=NU;na=KAWI DIGIT SEVEN;nt=De;nv=7;SB=NU;WB=NU;-XIDS
-cp;11F58;-Alpha;gc=Nd;InSC=Number;lb=NU;na=KAWI DIGIT EIGHT;nt=De;nv=8;SB=NU;WB=NU;-XIDS
-cp;11F59;-Alpha;gc=Nd;InSC=Number;lb=NU;na=KAWI DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU;-XIDS
+cp;11F50;-Alpha;gc=Nd;InSC=Number;lb=AS;na=KAWI DIGIT ZERO;nt=De;nv=0;SB=NU;WB=NU;-XIDS
+cp;11F51;-Alpha;gc=Nd;InSC=Number;lb=AS;na=KAWI DIGIT ONE;nt=De;nv=1;SB=NU;WB=NU;-XIDS
+cp;11F52;-Alpha;gc=Nd;InSC=Number;lb=AS;na=KAWI DIGIT TWO;nt=De;nv=2;SB=NU;WB=NU;-XIDS
+cp;11F53;-Alpha;gc=Nd;InSC=Number;lb=AS;na=KAWI DIGIT THREE;nt=De;nv=3;SB=NU;WB=NU;-XIDS
+cp;11F54;-Alpha;gc=Nd;InSC=Number;lb=AS;na=KAWI DIGIT FOUR;nt=De;nv=4;SB=NU;WB=NU;-XIDS
+cp;11F55;-Alpha;gc=Nd;InSC=Number;lb=AS;na=KAWI DIGIT FIVE;nt=De;nv=5;SB=NU;WB=NU;-XIDS
+cp;11F56;-Alpha;gc=Nd;InSC=Number;lb=AS;na=KAWI DIGIT SIX;nt=De;nv=6;SB=NU;WB=NU;-XIDS
+cp;11F57;-Alpha;gc=Nd;InSC=Number;lb=AS;na=KAWI DIGIT SEVEN;nt=De;nv=7;SB=NU;WB=NU;-XIDS
+cp;11F58;-Alpha;gc=Nd;InSC=Number;lb=AS;na=KAWI DIGIT EIGHT;nt=De;nv=8;SB=NU;WB=NU;-XIDS
+cp;11F59;-Alpha;gc=Nd;InSC=Number;lb=AS;na=KAWI DIGIT NINE;nt=De;nv=9;SB=NU;WB=NU;-XIDS
unassigned;11F5A..11F5F
block;11FB0..11FBF;age=13.0;Alpha;blk=Lisu_Sup;gc=Lo;Gr_Base;IDC;IDS;lb=AL;na=LISU LETTER YHA;SB=LE;sc=Lisu;WB=LE;XIDC;XIDS
@@ -29434,7 +29466,7 @@ cp;1342C;na=EGYPTIAN HIEROGLYPH AA030
cp;1342D;na=EGYPTIAN HIEROGLYPH AA031
cp;1342E;na=EGYPTIAN HIEROGLYPH AA032
# Addition to group V
-cp;1342F;age=15.0;na=EGYPTIAN HIEROGLYPH V011D
+cp;1342F;age=15.0;lb=OP;na=EGYPTIAN HIEROGLYPH V011D
block;13430..1345F;age=15.0;blk=Egyptian_Hieroglyph_Format_Controls;CI;gc=Cf;GCB=CN;IDC;jt=T;lb=CM;SB=EX;sc=Egyp;vo=U;WB=Extend;XIDC
# 13430..1345F Egyptian Hieroglyph Format Controls
@@ -30848,11 +30880,11 @@ cp;16AEC;na=BASSA VAH LETTER E
cp;16AED;na=BASSA VAH LETTER I
unassigned;16AEE..16AEF
# Combining tone marks
-cp;16AF0;-Alpha;bc=NSM;ccc=1;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=BASSA VAH COMBINING HIGH TONE;SB=EX;WB=Extend;-XIDS
-cp;16AF1;-Alpha;bc=NSM;ccc=1;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=BASSA VAH COMBINING LOW TONE;SB=EX;WB=Extend;-XIDS
-cp;16AF2;-Alpha;bc=NSM;ccc=1;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=BASSA VAH COMBINING MID TONE;SB=EX;WB=Extend;-XIDS
-cp;16AF3;-Alpha;bc=NSM;ccc=1;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=BASSA VAH COMBINING LOW-MID TONE;SB=EX;WB=Extend;-XIDS
-cp;16AF4;-Alpha;bc=NSM;ccc=1;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=BASSA VAH COMBINING HIGH-LOW TONE;SB=EX;WB=Extend;-XIDS
+cp;16AF0;-Alpha;bc=NSM;ccc=1;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=BASSA VAH COMBINING HIGH TONE;SB=EX;WB=Extend;-XIDS
+cp;16AF1;-Alpha;bc=NSM;ccc=1;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=BASSA VAH COMBINING LOW TONE;SB=EX;WB=Extend;-XIDS
+cp;16AF2;-Alpha;bc=NSM;ccc=1;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=BASSA VAH COMBINING MID TONE;SB=EX;WB=Extend;-XIDS
+cp;16AF3;-Alpha;bc=NSM;ccc=1;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=BASSA VAH COMBINING LOW-MID TONE;SB=EX;WB=Extend;-XIDS
+cp;16AF4;-Alpha;bc=NSM;ccc=1;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=BASSA VAH COMBINING HIGH-LOW TONE;SB=EX;WB=Extend;-XIDS
# Punctuation
cp;16AF5;-Alpha;gc=Po;-IDC;-IDS;lb=BA;na=BASSA VAH FULL STOP;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
unassigned;16AF6..16AFF
@@ -30910,13 +30942,13 @@ cp;16B2D;na=PAHAWH HMONG CONSONANT AU
cp;16B2E;na=PAHAWH HMONG CONSONANT XAU
cp;16B2F;na=PAHAWH HMONG CONSONANT CAU
# Combining diacritical marks
-cp;16B30;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=PAHAWH HMONG MARK CIM TUB;SB=EX;WB=Extend;-XIDS
-cp;16B31;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=PAHAWH HMONG MARK CIM SO;SB=EX;WB=Extend;-XIDS
-cp;16B32;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=PAHAWH HMONG MARK CIM KES;SB=EX;WB=Extend;-XIDS
-cp;16B33;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=PAHAWH HMONG MARK CIM KHAV;SB=EX;WB=Extend;-XIDS
-cp;16B34;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=PAHAWH HMONG MARK CIM SUAM;SB=EX;WB=Extend;-XIDS
-cp;16B35;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=PAHAWH HMONG MARK CIM HOM;SB=EX;WB=Extend;-XIDS
-cp;16B36;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=PAHAWH HMONG MARK CIM TAUM;SB=EX;WB=Extend;-XIDS
+cp;16B30;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=PAHAWH HMONG MARK CIM TUB;SB=EX;WB=Extend;-XIDS
+cp;16B31;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=PAHAWH HMONG MARK CIM SO;SB=EX;WB=Extend;-XIDS
+cp;16B32;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=PAHAWH HMONG MARK CIM KES;SB=EX;WB=Extend;-XIDS
+cp;16B33;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=PAHAWH HMONG MARK CIM KHAV;SB=EX;WB=Extend;-XIDS
+cp;16B34;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=PAHAWH HMONG MARK CIM SUAM;SB=EX;WB=Extend;-XIDS
+cp;16B35;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=PAHAWH HMONG MARK CIM HOM;SB=EX;WB=Extend;-XIDS
+cp;16B36;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=PAHAWH HMONG MARK CIM TAUM;SB=EX;WB=Extend;-XIDS
# Punctuation
cp;16B37;-Alpha;gc=Po;-IDC;-IDS;lb=BA;na=PAHAWH HMONG SIGN VOS THOM;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
cp;16B38;-Alpha;gc=Po;-IDC;-IDS;lb=BA;na=PAHAWH HMONG SIGN VOS TSHAB CEEB;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
@@ -31005,38 +31037,38 @@ cp;16B8F;na=PAHAWH HMONG CLAN SIGN VWJ
block;16E40..16E9F;age=11.0;Alpha;blk=Medefaidrin;Cased;CWCM;gc=Ll;Gr_Base;IDC;IDS;lb=AL;SB=LO;sc=Medf;WB=LE;XIDC;XIDS
# 16E40..16E9F Medefaidrin
# Uppercase letters
-cp;16E40;cf=16E60;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER M;NFKC_CF=16E60;SB=UP;scf=16E60;slc=16E60;Upper
-cp;16E41;cf=16E61;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER S;NFKC_CF=16E61;SB=UP;scf=16E61;slc=16E61;Upper
-cp;16E42;cf=16E62;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER V;NFKC_CF=16E62;SB=UP;scf=16E62;slc=16E62;Upper
-cp;16E43;cf=16E63;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER W;NFKC_CF=16E63;SB=UP;scf=16E63;slc=16E63;Upper
-cp;16E44;cf=16E64;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER ATIU;NFKC_CF=16E64;SB=UP;scf=16E64;slc=16E64;Upper
-cp;16E45;cf=16E65;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER Z;NFKC_CF=16E65;SB=UP;scf=16E65;slc=16E65;Upper
-cp;16E46;cf=16E66;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER KP;NFKC_CF=16E66;SB=UP;scf=16E66;slc=16E66;Upper
-cp;16E47;cf=16E67;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER P;NFKC_CF=16E67;SB=UP;scf=16E67;slc=16E67;Upper
-cp;16E48;cf=16E68;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER T;NFKC_CF=16E68;SB=UP;scf=16E68;slc=16E68;Upper
-cp;16E49;cf=16E69;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER G;NFKC_CF=16E69;SB=UP;scf=16E69;slc=16E69;Upper
-cp;16E4A;cf=16E6A;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER F;NFKC_CF=16E6A;SB=UP;scf=16E6A;slc=16E6A;Upper
-cp;16E4B;cf=16E6B;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER I;NFKC_CF=16E6B;SB=UP;scf=16E6B;slc=16E6B;Upper
-cp;16E4C;cf=16E6C;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER K;NFKC_CF=16E6C;SB=UP;scf=16E6C;slc=16E6C;Upper
-cp;16E4D;cf=16E6D;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER A;NFKC_CF=16E6D;SB=UP;scf=16E6D;slc=16E6D;Upper
-cp;16E4E;cf=16E6E;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER J;NFKC_CF=16E6E;SB=UP;scf=16E6E;slc=16E6E;Upper
-cp;16E4F;cf=16E6F;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER E;NFKC_CF=16E6F;SB=UP;scf=16E6F;slc=16E6F;Upper
-cp;16E50;cf=16E70;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER B;NFKC_CF=16E70;SB=UP;scf=16E70;slc=16E70;Upper
-cp;16E51;cf=16E71;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER C;NFKC_CF=16E71;SB=UP;scf=16E71;slc=16E71;Upper
-cp;16E52;cf=16E72;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER U;NFKC_CF=16E72;SB=UP;scf=16E72;slc=16E72;Upper
-cp;16E53;cf=16E73;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER YU;NFKC_CF=16E73;SB=UP;scf=16E73;slc=16E73;Upper
-cp;16E54;cf=16E74;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER L;NFKC_CF=16E74;SB=UP;scf=16E74;slc=16E74;Upper
-cp;16E55;cf=16E75;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER Q;NFKC_CF=16E75;SB=UP;scf=16E75;slc=16E75;Upper
-cp;16E56;cf=16E76;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER HP;Name_Alias=correction=MEDEFAIDRIN CAPITAL LETTER H;NFKC_CF=16E76;SB=UP;scf=16E76;slc=16E76;Upper
-cp;16E57;cf=16E77;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER NY;Name_Alias=correction=MEDEFAIDRIN CAPITAL LETTER NG;NFKC_CF=16E77;SB=UP;scf=16E77;slc=16E77;Upper
-cp;16E58;cf=16E78;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER X;NFKC_CF=16E78;SB=UP;scf=16E78;slc=16E78;Upper
-cp;16E59;cf=16E79;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER D;NFKC_CF=16E79;SB=UP;scf=16E79;slc=16E79;Upper
-cp;16E5A;cf=16E7A;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER OE;NFKC_CF=16E7A;SB=UP;scf=16E7A;slc=16E7A;Upper
-cp;16E5B;cf=16E7B;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER N;NFKC_CF=16E7B;SB=UP;scf=16E7B;slc=16E7B;Upper
-cp;16E5C;cf=16E7C;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER R;NFKC_CF=16E7C;SB=UP;scf=16E7C;slc=16E7C;Upper
-cp;16E5D;cf=16E7D;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER O;NFKC_CF=16E7D;SB=UP;scf=16E7D;slc=16E7D;Upper
-cp;16E5E;cf=16E7E;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER AI;NFKC_CF=16E7E;SB=UP;scf=16E7E;slc=16E7E;Upper
-cp;16E5F;cf=16E7F;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER Y;NFKC_CF=16E7F;SB=UP;scf=16E7F;slc=16E7F;Upper
+cp;16E40;cf=16E60;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER M;NFKC_CF=16E60;NFKC_SCF=16E60;SB=UP;scf=16E60;slc=16E60;Upper
+cp;16E41;cf=16E61;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER S;NFKC_CF=16E61;NFKC_SCF=16E61;SB=UP;scf=16E61;slc=16E61;Upper
+cp;16E42;cf=16E62;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER V;NFKC_CF=16E62;NFKC_SCF=16E62;SB=UP;scf=16E62;slc=16E62;Upper
+cp;16E43;cf=16E63;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER W;NFKC_CF=16E63;NFKC_SCF=16E63;SB=UP;scf=16E63;slc=16E63;Upper
+cp;16E44;cf=16E64;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER ATIU;NFKC_CF=16E64;NFKC_SCF=16E64;SB=UP;scf=16E64;slc=16E64;Upper
+cp;16E45;cf=16E65;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER Z;NFKC_CF=16E65;NFKC_SCF=16E65;SB=UP;scf=16E65;slc=16E65;Upper
+cp;16E46;cf=16E66;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER KP;NFKC_CF=16E66;NFKC_SCF=16E66;SB=UP;scf=16E66;slc=16E66;Upper
+cp;16E47;cf=16E67;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER P;NFKC_CF=16E67;NFKC_SCF=16E67;SB=UP;scf=16E67;slc=16E67;Upper
+cp;16E48;cf=16E68;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER T;NFKC_CF=16E68;NFKC_SCF=16E68;SB=UP;scf=16E68;slc=16E68;Upper
+cp;16E49;cf=16E69;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER G;NFKC_CF=16E69;NFKC_SCF=16E69;SB=UP;scf=16E69;slc=16E69;Upper
+cp;16E4A;cf=16E6A;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER F;NFKC_CF=16E6A;NFKC_SCF=16E6A;SB=UP;scf=16E6A;slc=16E6A;Upper
+cp;16E4B;cf=16E6B;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER I;NFKC_CF=16E6B;NFKC_SCF=16E6B;SB=UP;scf=16E6B;slc=16E6B;Upper
+cp;16E4C;cf=16E6C;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER K;NFKC_CF=16E6C;NFKC_SCF=16E6C;SB=UP;scf=16E6C;slc=16E6C;Upper
+cp;16E4D;cf=16E6D;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER A;NFKC_CF=16E6D;NFKC_SCF=16E6D;SB=UP;scf=16E6D;slc=16E6D;Upper
+cp;16E4E;cf=16E6E;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER J;NFKC_CF=16E6E;NFKC_SCF=16E6E;SB=UP;scf=16E6E;slc=16E6E;Upper
+cp;16E4F;cf=16E6F;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER E;NFKC_CF=16E6F;NFKC_SCF=16E6F;SB=UP;scf=16E6F;slc=16E6F;Upper
+cp;16E50;cf=16E70;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER B;NFKC_CF=16E70;NFKC_SCF=16E70;SB=UP;scf=16E70;slc=16E70;Upper
+cp;16E51;cf=16E71;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER C;NFKC_CF=16E71;NFKC_SCF=16E71;SB=UP;scf=16E71;slc=16E71;Upper
+cp;16E52;cf=16E72;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER U;NFKC_CF=16E72;NFKC_SCF=16E72;SB=UP;scf=16E72;slc=16E72;Upper
+cp;16E53;cf=16E73;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER YU;NFKC_CF=16E73;NFKC_SCF=16E73;SB=UP;scf=16E73;slc=16E73;Upper
+cp;16E54;cf=16E74;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER L;NFKC_CF=16E74;NFKC_SCF=16E74;SB=UP;scf=16E74;slc=16E74;Upper
+cp;16E55;cf=16E75;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER Q;NFKC_CF=16E75;NFKC_SCF=16E75;SB=UP;scf=16E75;slc=16E75;Upper
+cp;16E56;cf=16E76;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER HP;Name_Alias=correction=MEDEFAIDRIN CAPITAL LETTER H;NFKC_CF=16E76;NFKC_SCF=16E76;SB=UP;scf=16E76;slc=16E76;Upper
+cp;16E57;cf=16E77;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER NY;Name_Alias=correction=MEDEFAIDRIN CAPITAL LETTER NG;NFKC_CF=16E77;NFKC_SCF=16E77;SB=UP;scf=16E77;slc=16E77;Upper
+cp;16E58;cf=16E78;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER X;NFKC_CF=16E78;NFKC_SCF=16E78;SB=UP;scf=16E78;slc=16E78;Upper
+cp;16E59;cf=16E79;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER D;NFKC_CF=16E79;NFKC_SCF=16E79;SB=UP;scf=16E79;slc=16E79;Upper
+cp;16E5A;cf=16E7A;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER OE;NFKC_CF=16E7A;NFKC_SCF=16E7A;SB=UP;scf=16E7A;slc=16E7A;Upper
+cp;16E5B;cf=16E7B;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER N;NFKC_CF=16E7B;NFKC_SCF=16E7B;SB=UP;scf=16E7B;slc=16E7B;Upper
+cp;16E5C;cf=16E7C;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER R;NFKC_CF=16E7C;NFKC_SCF=16E7C;SB=UP;scf=16E7C;slc=16E7C;Upper
+cp;16E5D;cf=16E7D;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER O;NFKC_CF=16E7D;NFKC_SCF=16E7D;SB=UP;scf=16E7D;slc=16E7D;Upper
+cp;16E5E;cf=16E7E;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER AI;NFKC_CF=16E7E;NFKC_SCF=16E7E;SB=UP;scf=16E7E;slc=16E7E;Upper
+cp;16E5F;cf=16E7F;CWCF;CWKCF;CWL;gc=Lu;na=MEDEFAIDRIN CAPITAL LETTER Y;NFKC_CF=16E7F;NFKC_SCF=16E7F;SB=UP;scf=16E7F;slc=16E7F;Upper
# Lowercase letters
cp;16E60;CWT;CWU;Lower;na=MEDEFAIDRIN SMALL LETTER M;stc=16E40;suc=16E40
cp;16E61;CWT;CWU;Lower;na=MEDEFAIDRIN SMALL LETTER S;stc=16E41;suc=16E41
@@ -33502,11 +33534,11 @@ cp;1BC9C;-Alpha;gc=So;-IDC;-IDS;na=DUPLOYAN SIGN O WITH CROSS;SB=XX;WB=XX;-XIDC;
# Sloan R-form selector
cp;1BC9D;-Alpha;bc=NSM;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=DUPLOYAN THICK LETTER SELECTOR;SB=EX;WB=Extend;-XIDS
# Shorthand double mark
-cp;1BC9E;bc=NSM;ccc=1;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=DUPLOYAN DOUBLE MARK;SB=EX;WB=Extend;-XIDS
+cp;1BC9E;bc=NSM;ccc=1;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=DUPLOYAN DOUBLE MARK;SB=EX;WB=Extend;-XIDS
# Chinook punctuation
cp;1BC9F;-Alpha;gc=Po;-IDC;-IDS;lb=BA;na=DUPLOYAN PUNCTUATION CHINOOK FULL STOP;SB=ST;STerm;Term;WB=XX;-XIDC;-XIDS
-block;1BCA0..1BCAF;age=7.0;bc=BN;blk=Shorthand_Format_Controls;CI;CWKCF;DI;gc=Cf;GCB=CN;jt=T;lb=CM;SB=FO;sc=Zyyy;scx=Dupl;WB=FO
+block;1BCA0..1BCAF;age=7.0;bc=BN;blk=Shorthand_Format_Controls;CI;CWKCF;DI;gc=Cf;GCB=CN;jt=T;lb=CM;NFKC_SCF=;SB=FO;sc=Zyyy;scx=Dupl;WB=FO
# 1BCA0..1BCAF Shorthand Format Controls
# Shorthand format controls
cp;1BCA0;na=SHORTHAND FORMAT LETTER OVERLAP;NFKC_CF=
@@ -34085,58 +34117,58 @@ cp;1D15B;na=MUSICAL SYMBOL CLUSTER NOTEHEAD BLACK
# Notes
cp;1D15C;na=MUSICAL SYMBOL BREVE
cp;1D15D;na=MUSICAL SYMBOL WHOLE NOTE
-cp;1D15E;Comp_Ex;CWKCF;dm=1D157 1D165;dt=Can;na=MUSICAL SYMBOL HALF NOTE;NFC_QC=N;NFD_QC=N;NFKC_CF=1D157 1D165;NFKC_QC=N;NFKD_QC=N
-cp;1D15F;Comp_Ex;CWKCF;dm=1D158 1D165;dt=Can;na=MUSICAL SYMBOL QUARTER NOTE;NFC_QC=N;NFD_QC=N;NFKC_CF=1D158 1D165;NFKC_QC=N;NFKD_QC=N
-cp;1D160;Comp_Ex;CWKCF;dm=1D15F 1D16E;dt=Can;na=MUSICAL SYMBOL EIGHTH NOTE;NFC_QC=N;NFD_QC=N;NFKC_CF=1D158 1D165 1D16E;NFKC_QC=N;NFKD_QC=N
-cp;1D161;Comp_Ex;CWKCF;dm=1D15F 1D16F;dt=Can;na=MUSICAL SYMBOL SIXTEENTH NOTE;NFC_QC=N;NFD_QC=N;NFKC_CF=1D158 1D165 1D16F;NFKC_QC=N;NFKD_QC=N
-cp;1D162;Comp_Ex;CWKCF;dm=1D15F 1D170;dt=Can;na=MUSICAL SYMBOL THIRTY-SECOND NOTE;NFC_QC=N;NFD_QC=N;NFKC_CF=1D158 1D165 1D170;NFKC_QC=N;NFKD_QC=N
-cp;1D163;Comp_Ex;CWKCF;dm=1D15F 1D171;dt=Can;na=MUSICAL SYMBOL SIXTY-FOURTH NOTE;NFC_QC=N;NFD_QC=N;NFKC_CF=1D158 1D165 1D171;NFKC_QC=N;NFKD_QC=N
-cp;1D164;Comp_Ex;CWKCF;dm=1D15F 1D172;dt=Can;na=MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE;NFC_QC=N;NFD_QC=N;NFKC_CF=1D158 1D165 1D172;NFKC_QC=N;NFKD_QC=N
+cp;1D15E;Comp_Ex;CWKCF;dm=1D157 1D165;dt=Can;na=MUSICAL SYMBOL HALF NOTE;NFC_QC=N;NFD_QC=N;NFKC_CF=1D157 1D165;NFKC_QC=N;NFKC_SCF=1D157 1D165;NFKD_QC=N
+cp;1D15F;Comp_Ex;CWKCF;dm=1D158 1D165;dt=Can;na=MUSICAL SYMBOL QUARTER NOTE;NFC_QC=N;NFD_QC=N;NFKC_CF=1D158 1D165;NFKC_QC=N;NFKC_SCF=1D158 1D165;NFKD_QC=N
+cp;1D160;Comp_Ex;CWKCF;dm=1D15F 1D16E;dt=Can;na=MUSICAL SYMBOL EIGHTH NOTE;NFC_QC=N;NFD_QC=N;NFKC_CF=1D158 1D165 1D16E;NFKC_QC=N;NFKC_SCF=1D158 1D165 1D16E;NFKD_QC=N
+cp;1D161;Comp_Ex;CWKCF;dm=1D15F 1D16F;dt=Can;na=MUSICAL SYMBOL SIXTEENTH NOTE;NFC_QC=N;NFD_QC=N;NFKC_CF=1D158 1D165 1D16F;NFKC_QC=N;NFKC_SCF=1D158 1D165 1D16F;NFKD_QC=N
+cp;1D162;Comp_Ex;CWKCF;dm=1D15F 1D170;dt=Can;na=MUSICAL SYMBOL THIRTY-SECOND NOTE;NFC_QC=N;NFD_QC=N;NFKC_CF=1D158 1D165 1D170;NFKC_QC=N;NFKC_SCF=1D158 1D165 1D170;NFKD_QC=N
+cp;1D163;Comp_Ex;CWKCF;dm=1D15F 1D171;dt=Can;na=MUSICAL SYMBOL SIXTY-FOURTH NOTE;NFC_QC=N;NFD_QC=N;NFKC_CF=1D158 1D165 1D171;NFKC_QC=N;NFKC_SCF=1D158 1D165 1D171;NFKD_QC=N
+cp;1D164;Comp_Ex;CWKCF;dm=1D15F 1D172;dt=Can;na=MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE;NFC_QC=N;NFD_QC=N;NFKC_CF=1D158 1D165 1D172;NFKC_QC=N;NFKC_SCF=1D158 1D165 1D172;NFKD_QC=N
# Stems
-cp;1D165;ccc=216;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;IDC;lb=CM;na=MUSICAL SYMBOL COMBINING STEM;SB=EX;WB=Extend;XIDC
+cp;1D165;ccc=216;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;lb=CM;na=MUSICAL SYMBOL COMBINING STEM;SB=EX;WB=Extend;XIDC
cp;1D166;ccc=216;gc=Mc;GCB=SM;IDC;lb=CM;na=MUSICAL SYMBOL COMBINING SPRECHGESANG STEM;SB=EX;WB=Extend;XIDC
# Tremolos
-cp;1D167;bc=NSM;ccc=1;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING TREMOLO-1;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1D168;bc=NSM;ccc=1;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING TREMOLO-2;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1D169;bc=NSM;ccc=1;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING TREMOLO-3;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1D167;bc=NSM;ccc=1;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING TREMOLO-1;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1D168;bc=NSM;ccc=1;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING TREMOLO-2;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1D169;bc=NSM;ccc=1;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING TREMOLO-3;SB=EX;sc=Zinh;WB=Extend;XIDC
cp;1D16A;na=MUSICAL SYMBOL FINGERED TREMOLO-1
cp;1D16B;na=MUSICAL SYMBOL FINGERED TREMOLO-2
cp;1D16C;na=MUSICAL SYMBOL FINGERED TREMOLO-3
# Augmentation dot
cp;1D16D;ccc=226;Dia;gc=Mc;GCB=SM;IDC;lb=CM;na=MUSICAL SYMBOL COMBINING AUGMENTATION DOT;SB=EX;WB=Extend;XIDC
# Flags
-cp;1D16E;ccc=216;Dia;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;IDC;lb=CM;na=MUSICAL SYMBOL COMBINING FLAG-1;SB=EX;WB=Extend;XIDC
-cp;1D16F;ccc=216;Dia;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;IDC;lb=CM;na=MUSICAL SYMBOL COMBINING FLAG-2;SB=EX;WB=Extend;XIDC
-cp;1D170;ccc=216;Dia;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;IDC;lb=CM;na=MUSICAL SYMBOL COMBINING FLAG-3;SB=EX;WB=Extend;XIDC
-cp;1D171;ccc=216;Dia;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;IDC;lb=CM;na=MUSICAL SYMBOL COMBINING FLAG-4;SB=EX;WB=Extend;XIDC
-cp;1D172;ccc=216;Dia;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;IDC;lb=CM;na=MUSICAL SYMBOL COMBINING FLAG-5;SB=EX;WB=Extend;XIDC
+cp;1D16E;ccc=216;Dia;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;lb=CM;na=MUSICAL SYMBOL COMBINING FLAG-1;SB=EX;WB=Extend;XIDC
+cp;1D16F;ccc=216;Dia;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;lb=CM;na=MUSICAL SYMBOL COMBINING FLAG-2;SB=EX;WB=Extend;XIDC
+cp;1D170;ccc=216;Dia;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;lb=CM;na=MUSICAL SYMBOL COMBINING FLAG-3;SB=EX;WB=Extend;XIDC
+cp;1D171;ccc=216;Dia;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;lb=CM;na=MUSICAL SYMBOL COMBINING FLAG-4;SB=EX;WB=Extend;XIDC
+cp;1D172;ccc=216;Dia;gc=Mc;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;lb=CM;na=MUSICAL SYMBOL COMBINING FLAG-5;SB=EX;WB=Extend;XIDC
# Beams and slurs
-cp;1D173;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=MUSICAL SYMBOL BEGIN BEAM;NFKC_CF=;SB=FO;WB=FO
-cp;1D174;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=MUSICAL SYMBOL END BEAM;NFKC_CF=;SB=FO;WB=FO
-cp;1D175;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=MUSICAL SYMBOL BEGIN TIE;NFKC_CF=;SB=FO;WB=FO
-cp;1D176;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=MUSICAL SYMBOL END TIE;NFKC_CF=;SB=FO;WB=FO
-cp;1D177;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=MUSICAL SYMBOL BEGIN SLUR;NFKC_CF=;SB=FO;WB=FO
-cp;1D178;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=MUSICAL SYMBOL END SLUR;NFKC_CF=;SB=FO;WB=FO
-cp;1D179;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=MUSICAL SYMBOL BEGIN PHRASE;NFKC_CF=;SB=FO;WB=FO
-cp;1D17A;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=MUSICAL SYMBOL END PHRASE;NFKC_CF=;SB=FO;WB=FO
+cp;1D173;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=MUSICAL SYMBOL BEGIN BEAM;NFKC_CF=;NFKC_SCF=;SB=FO;WB=FO
+cp;1D174;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=MUSICAL SYMBOL END BEAM;NFKC_CF=;NFKC_SCF=;SB=FO;WB=FO
+cp;1D175;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=MUSICAL SYMBOL BEGIN TIE;NFKC_CF=;NFKC_SCF=;SB=FO;WB=FO
+cp;1D176;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=MUSICAL SYMBOL END TIE;NFKC_CF=;NFKC_SCF=;SB=FO;WB=FO
+cp;1D177;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=MUSICAL SYMBOL BEGIN SLUR;NFKC_CF=;NFKC_SCF=;SB=FO;WB=FO
+cp;1D178;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=MUSICAL SYMBOL END SLUR;NFKC_CF=;NFKC_SCF=;SB=FO;WB=FO
+cp;1D179;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=MUSICAL SYMBOL BEGIN PHRASE;NFKC_CF=;NFKC_SCF=;SB=FO;WB=FO
+cp;1D17A;bc=BN;CI;CWKCF;DI;gc=Cf;GCB=CN;-Gr_Base;jt=T;lb=CM;na=MUSICAL SYMBOL END PHRASE;NFKC_CF=;NFKC_SCF=;SB=FO;WB=FO
# Articulation
-cp;1D17B;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING ACCENT;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1D17C;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING STACCATO;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1D17D;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING TENUTO;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1D17E;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING STACCATISSIMO;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1D17F;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING MARCATO;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1D180;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING MARCATO-STACCATO;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1D181;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING ACCENT-STACCATO;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1D182;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING LOURE;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1D17B;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING ACCENT;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1D17C;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING STACCATO;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1D17D;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING TENUTO;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1D17E;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING STACCATISSIMO;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1D17F;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING MARCATO;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1D180;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING MARCATO-STACCATO;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1D181;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING ACCENT-STACCATO;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1D182;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING LOURE;SB=EX;sc=Zinh;WB=Extend;XIDC
cp;1D183;na=MUSICAL SYMBOL ARPEGGIATO UP
cp;1D184;na=MUSICAL SYMBOL ARPEGGIATO DOWN
-cp;1D185;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING DOIT;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1D186;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING RIP;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1D187;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING FLIP;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1D188;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING SMEAR;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1D189;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING BEND;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1D18A;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING DOUBLE TONGUE;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1D18B;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING TRIPLE TONGUE;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1D185;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING DOIT;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1D186;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING RIP;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1D187;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING FLIP;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1D188;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING SMEAR;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1D189;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING BEND;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1D18A;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING DOUBLE TONGUE;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1D18B;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING TRIPLE TONGUE;SB=EX;sc=Zinh;WB=Extend;XIDC
cp;1D18C;na=MUSICAL SYMBOL RINFORZANDO
cp;1D18D;na=MUSICAL SYMBOL SUBITO
cp;1D18E;na=MUSICAL SYMBOL Z
@@ -34171,10 +34203,10 @@ cp;1D1A7;na=MUSICAL SYMBOL NEBENSTIMME
cp;1D1A8;na=MUSICAL SYMBOL END OF STIMME
cp;1D1A9;na=MUSICAL SYMBOL DEGREE SLASH
# Instrumentation
-cp;1D1AA;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING DOWN BOW;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1D1AB;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING UP BOW;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1D1AC;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING HARMONIC;SB=EX;sc=Zinh;WB=Extend;XIDC
-cp;1D1AD;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING SNAP PIZZICATO;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1D1AA;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING DOWN BOW;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1D1AB;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING UP BOW;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1D1AC;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING HARMONIC;SB=EX;sc=Zinh;WB=Extend;XIDC
+cp;1D1AD;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=MUSICAL SYMBOL COMBINING SNAP PIZZICATO;SB=EX;sc=Zinh;WB=Extend;XIDC
# Pedals
cp;1D1AE;na=MUSICAL SYMBOL PEDAL MARK
cp;1D1AF;na=MUSICAL SYMBOL PEDAL UP MARK
@@ -34191,12 +34223,12 @@ cp;1D1B7;na=MUSICAL SYMBOL LONGA
cp;1D1B8;na=MUSICAL SYMBOL BREVIS
cp;1D1B9;na=MUSICAL SYMBOL SEMIBREVIS WHITE
cp;1D1BA;na=MUSICAL SYMBOL SEMIBREVIS BLACK
-cp;1D1BB;Comp_Ex;CWKCF;dm=1D1B9 1D165;dt=Can;na=MUSICAL SYMBOL MINIMA;NFC_QC=N;NFD_QC=N;NFKC_CF=1D1B9 1D165;NFKC_QC=N;NFKD_QC=N
-cp;1D1BC;Comp_Ex;CWKCF;dm=1D1BA 1D165;dt=Can;na=MUSICAL SYMBOL MINIMA BLACK;NFC_QC=N;NFD_QC=N;NFKC_CF=1D1BA 1D165;NFKC_QC=N;NFKD_QC=N
-cp;1D1BD;Comp_Ex;CWKCF;dm=1D1BB 1D16E;dt=Can;na=MUSICAL SYMBOL SEMIMINIMA WHITE;NFC_QC=N;NFD_QC=N;NFKC_CF=1D1B9 1D165 1D16E;NFKC_QC=N;NFKD_QC=N
-cp;1D1BE;Comp_Ex;CWKCF;dm=1D1BC 1D16E;dt=Can;na=MUSICAL SYMBOL SEMIMINIMA BLACK;NFC_QC=N;NFD_QC=N;NFKC_CF=1D1BA 1D165 1D16E;NFKC_QC=N;NFKD_QC=N
-cp;1D1BF;Comp_Ex;CWKCF;dm=1D1BB 1D16F;dt=Can;na=MUSICAL SYMBOL FUSA WHITE;NFC_QC=N;NFD_QC=N;NFKC_CF=1D1B9 1D165 1D16F;NFKC_QC=N;NFKD_QC=N
-cp;1D1C0;Comp_Ex;CWKCF;dm=1D1BC 1D16F;dt=Can;na=MUSICAL SYMBOL FUSA BLACK;NFC_QC=N;NFD_QC=N;NFKC_CF=1D1BA 1D165 1D16F;NFKC_QC=N;NFKD_QC=N
+cp;1D1BB;Comp_Ex;CWKCF;dm=1D1B9 1D165;dt=Can;na=MUSICAL SYMBOL MINIMA;NFC_QC=N;NFD_QC=N;NFKC_CF=1D1B9 1D165;NFKC_QC=N;NFKC_SCF=1D1B9 1D165;NFKD_QC=N
+cp;1D1BC;Comp_Ex;CWKCF;dm=1D1BA 1D165;dt=Can;na=MUSICAL SYMBOL MINIMA BLACK;NFC_QC=N;NFD_QC=N;NFKC_CF=1D1BA 1D165;NFKC_QC=N;NFKC_SCF=1D1BA 1D165;NFKD_QC=N
+cp;1D1BD;Comp_Ex;CWKCF;dm=1D1BB 1D16E;dt=Can;na=MUSICAL SYMBOL SEMIMINIMA WHITE;NFC_QC=N;NFD_QC=N;NFKC_CF=1D1B9 1D165 1D16E;NFKC_QC=N;NFKC_SCF=1D1B9 1D165 1D16E;NFKD_QC=N
+cp;1D1BE;Comp_Ex;CWKCF;dm=1D1BC 1D16E;dt=Can;na=MUSICAL SYMBOL SEMIMINIMA BLACK;NFC_QC=N;NFD_QC=N;NFKC_CF=1D1BA 1D165 1D16E;NFKC_QC=N;NFKC_SCF=1D1BA 1D165 1D16E;NFKD_QC=N
+cp;1D1BF;Comp_Ex;CWKCF;dm=1D1BB 1D16F;dt=Can;na=MUSICAL SYMBOL FUSA WHITE;NFC_QC=N;NFD_QC=N;NFKC_CF=1D1B9 1D165 1D16F;NFKC_QC=N;NFKC_SCF=1D1B9 1D165 1D16F;NFKD_QC=N
+cp;1D1C0;Comp_Ex;CWKCF;dm=1D1BC 1D16F;dt=Can;na=MUSICAL SYMBOL FUSA BLACK;NFC_QC=N;NFD_QC=N;NFKC_CF=1D1BA 1D165 1D16F;NFKC_QC=N;NFKC_SCF=1D1BA 1D165 1D16F;NFKD_QC=N
# Mensural rests
cp;1D1C1;na=MUSICAL SYMBOL LONGA PERFECTA REST
cp;1D1C2;na=MUSICAL SYMBOL LONGA IMPERFECTA REST
@@ -34323,9 +34355,9 @@ cp;1D23F;na=GREEK INSTRUMENTAL NOTATION SYMBOL-52
cp;1D240;na=GREEK INSTRUMENTAL NOTATION SYMBOL-53
cp;1D241;na=GREEK INSTRUMENTAL NOTATION SYMBOL-54
# Further Greek musical notation symbols
-cp;1D242;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=COMBINING GREEK MUSICAL TRISEME;SB=EX;WB=Extend;XIDC
-cp;1D243;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=COMBINING GREEK MUSICAL TETRASEME;SB=EX;WB=Extend;XIDC
-cp;1D244;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;jt=T;lb=CM;na=COMBINING GREEK MUSICAL PENTASEME;SB=EX;WB=Extend;XIDC
+cp;1D242;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=COMBINING GREEK MUSICAL TRISEME;SB=EX;WB=Extend;XIDC
+cp;1D243;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=COMBINING GREEK MUSICAL TETRASEME;SB=EX;WB=Extend;XIDC
+cp;1D244;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;na=COMBINING GREEK MUSICAL PENTASEME;SB=EX;WB=Extend;XIDC
cp;1D245;na=GREEK MUSICAL LEIMMA
unassigned;1D246..1D24F
@@ -34505,1054 +34537,1054 @@ cp;1D377;age=11.0;na=TALLY MARK ONE;scx=<script>
cp;1D378;age=11.0;na=TALLY MARK FIVE;nv=5;scx=<script>
unassigned;1D379..1D37F;vo=U
-block;1D400..1D7FF;age=3.1;Alpha;blk=Math_Alphanum;Cased;CWKCF;dt=Font;gc=Ll;Gr_Base;IDC;IDS;lb=AL;Math;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Zyyy;WB=LE;XIDC;XIDS
+block;1D400..1D7FF;age=3.1;Alpha;blk=Math_Alphanum;Cased;CWKCF;dt=Font;gc=Ll;Gr_Base;IDC;IDS;lb=AL;Math;NFKC_QC=N;NFKC_SCF=0061;NFKD_QC=N;SB=LO;sc=Zyyy;WB=LE;XIDC;XIDS
# 1D400..1D7FF Mathematical Alphanumeric Symbols
# Bold symbols
cp;1D400;dm=0041;FC_NFKC=0061;gc=Lu;na=MATHEMATICAL BOLD CAPITAL A;NFKC_CF=0061;SB=UP;Upper
-cp;1D401;dm=0042;FC_NFKC=0062;gc=Lu;na=MATHEMATICAL BOLD CAPITAL B;NFKC_CF=0062;SB=UP;Upper
-cp;1D402;dm=0043;FC_NFKC=0063;gc=Lu;na=MATHEMATICAL BOLD CAPITAL C;NFKC_CF=0063;SB=UP;Upper
-cp;1D403;dm=0044;FC_NFKC=0064;gc=Lu;na=MATHEMATICAL BOLD CAPITAL D;NFKC_CF=0064;SB=UP;Upper
-cp;1D404;dm=0045;FC_NFKC=0065;gc=Lu;na=MATHEMATICAL BOLD CAPITAL E;NFKC_CF=0065;SB=UP;Upper
-cp;1D405;dm=0046;FC_NFKC=0066;gc=Lu;na=MATHEMATICAL BOLD CAPITAL F;NFKC_CF=0066;SB=UP;Upper
-cp;1D406;dm=0047;FC_NFKC=0067;gc=Lu;na=MATHEMATICAL BOLD CAPITAL G;NFKC_CF=0067;SB=UP;Upper
-cp;1D407;dm=0048;FC_NFKC=0068;gc=Lu;na=MATHEMATICAL BOLD CAPITAL H;NFKC_CF=0068;SB=UP;Upper
-cp;1D408;dm=0049;FC_NFKC=0069;gc=Lu;na=MATHEMATICAL BOLD CAPITAL I;NFKC_CF=0069;SB=UP;Upper
-cp;1D409;dm=004A;FC_NFKC=006A;gc=Lu;na=MATHEMATICAL BOLD CAPITAL J;NFKC_CF=006A;SB=UP;Upper
-cp;1D40A;dm=004B;FC_NFKC=006B;gc=Lu;na=MATHEMATICAL BOLD CAPITAL K;NFKC_CF=006B;SB=UP;Upper
-cp;1D40B;dm=004C;FC_NFKC=006C;gc=Lu;na=MATHEMATICAL BOLD CAPITAL L;NFKC_CF=006C;SB=UP;Upper
-cp;1D40C;dm=004D;FC_NFKC=006D;gc=Lu;na=MATHEMATICAL BOLD CAPITAL M;NFKC_CF=006D;SB=UP;Upper
-cp;1D40D;dm=004E;FC_NFKC=006E;gc=Lu;na=MATHEMATICAL BOLD CAPITAL N;NFKC_CF=006E;SB=UP;Upper
-cp;1D40E;dm=004F;FC_NFKC=006F;gc=Lu;na=MATHEMATICAL BOLD CAPITAL O;NFKC_CF=006F;SB=UP;Upper
-cp;1D40F;dm=0050;FC_NFKC=0070;gc=Lu;na=MATHEMATICAL BOLD CAPITAL P;NFKC_CF=0070;SB=UP;Upper
-cp;1D410;dm=0051;FC_NFKC=0071;gc=Lu;na=MATHEMATICAL BOLD CAPITAL Q;NFKC_CF=0071;SB=UP;Upper
-cp;1D411;dm=0052;FC_NFKC=0072;gc=Lu;na=MATHEMATICAL BOLD CAPITAL R;NFKC_CF=0072;SB=UP;Upper
-cp;1D412;dm=0053;FC_NFKC=0073;gc=Lu;na=MATHEMATICAL BOLD CAPITAL S;NFKC_CF=0073;SB=UP;Upper
-cp;1D413;dm=0054;FC_NFKC=0074;gc=Lu;na=MATHEMATICAL BOLD CAPITAL T;NFKC_CF=0074;SB=UP;Upper
-cp;1D414;dm=0055;FC_NFKC=0075;gc=Lu;na=MATHEMATICAL BOLD CAPITAL U;NFKC_CF=0075;SB=UP;Upper
-cp;1D415;dm=0056;FC_NFKC=0076;gc=Lu;na=MATHEMATICAL BOLD CAPITAL V;NFKC_CF=0076;SB=UP;Upper
-cp;1D416;dm=0057;FC_NFKC=0077;gc=Lu;na=MATHEMATICAL BOLD CAPITAL W;NFKC_CF=0077;SB=UP;Upper
-cp;1D417;dm=0058;FC_NFKC=0078;gc=Lu;na=MATHEMATICAL BOLD CAPITAL X;NFKC_CF=0078;SB=UP;Upper
-cp;1D418;dm=0059;FC_NFKC=0079;gc=Lu;na=MATHEMATICAL BOLD CAPITAL Y;NFKC_CF=0079;SB=UP;Upper
-cp;1D419;dm=005A;FC_NFKC=007A;gc=Lu;na=MATHEMATICAL BOLD CAPITAL Z;NFKC_CF=007A;SB=UP;Upper
+cp;1D401;dm=0042;FC_NFKC=0062;gc=Lu;na=MATHEMATICAL BOLD CAPITAL B;NFKC_CF=0062;NFKC_SCF=0062;SB=UP;Upper
+cp;1D402;dm=0043;FC_NFKC=0063;gc=Lu;na=MATHEMATICAL BOLD CAPITAL C;NFKC_CF=0063;NFKC_SCF=0063;SB=UP;Upper
+cp;1D403;dm=0044;FC_NFKC=0064;gc=Lu;na=MATHEMATICAL BOLD CAPITAL D;NFKC_CF=0064;NFKC_SCF=0064;SB=UP;Upper
+cp;1D404;dm=0045;FC_NFKC=0065;gc=Lu;na=MATHEMATICAL BOLD CAPITAL E;NFKC_CF=0065;NFKC_SCF=0065;SB=UP;Upper
+cp;1D405;dm=0046;FC_NFKC=0066;gc=Lu;na=MATHEMATICAL BOLD CAPITAL F;NFKC_CF=0066;NFKC_SCF=0066;SB=UP;Upper
+cp;1D406;dm=0047;FC_NFKC=0067;gc=Lu;na=MATHEMATICAL BOLD CAPITAL G;NFKC_CF=0067;NFKC_SCF=0067;SB=UP;Upper
+cp;1D407;dm=0048;FC_NFKC=0068;gc=Lu;na=MATHEMATICAL BOLD CAPITAL H;NFKC_CF=0068;NFKC_SCF=0068;SB=UP;Upper
+cp;1D408;dm=0049;FC_NFKC=0069;gc=Lu;na=MATHEMATICAL BOLD CAPITAL I;NFKC_CF=0069;NFKC_SCF=0069;SB=UP;Upper
+cp;1D409;dm=004A;FC_NFKC=006A;gc=Lu;na=MATHEMATICAL BOLD CAPITAL J;NFKC_CF=006A;NFKC_SCF=006A;SB=UP;Upper
+cp;1D40A;dm=004B;FC_NFKC=006B;gc=Lu;na=MATHEMATICAL BOLD CAPITAL K;NFKC_CF=006B;NFKC_SCF=006B;SB=UP;Upper
+cp;1D40B;dm=004C;FC_NFKC=006C;gc=Lu;na=MATHEMATICAL BOLD CAPITAL L;NFKC_CF=006C;NFKC_SCF=006C;SB=UP;Upper
+cp;1D40C;dm=004D;FC_NFKC=006D;gc=Lu;na=MATHEMATICAL BOLD CAPITAL M;NFKC_CF=006D;NFKC_SCF=006D;SB=UP;Upper
+cp;1D40D;dm=004E;FC_NFKC=006E;gc=Lu;na=MATHEMATICAL BOLD CAPITAL N;NFKC_CF=006E;NFKC_SCF=006E;SB=UP;Upper
+cp;1D40E;dm=004F;FC_NFKC=006F;gc=Lu;na=MATHEMATICAL BOLD CAPITAL O;NFKC_CF=006F;NFKC_SCF=006F;SB=UP;Upper
+cp;1D40F;dm=0050;FC_NFKC=0070;gc=Lu;na=MATHEMATICAL BOLD CAPITAL P;NFKC_CF=0070;NFKC_SCF=0070;SB=UP;Upper
+cp;1D410;dm=0051;FC_NFKC=0071;gc=Lu;na=MATHEMATICAL BOLD CAPITAL Q;NFKC_CF=0071;NFKC_SCF=0071;SB=UP;Upper
+cp;1D411;dm=0052;FC_NFKC=0072;gc=Lu;na=MATHEMATICAL BOLD CAPITAL R;NFKC_CF=0072;NFKC_SCF=0072;SB=UP;Upper
+cp;1D412;dm=0053;FC_NFKC=0073;gc=Lu;na=MATHEMATICAL BOLD CAPITAL S;NFKC_CF=0073;NFKC_SCF=0073;SB=UP;Upper
+cp;1D413;dm=0054;FC_NFKC=0074;gc=Lu;na=MATHEMATICAL BOLD CAPITAL T;NFKC_CF=0074;NFKC_SCF=0074;SB=UP;Upper
+cp;1D414;dm=0055;FC_NFKC=0075;gc=Lu;na=MATHEMATICAL BOLD CAPITAL U;NFKC_CF=0075;NFKC_SCF=0075;SB=UP;Upper
+cp;1D415;dm=0056;FC_NFKC=0076;gc=Lu;na=MATHEMATICAL BOLD CAPITAL V;NFKC_CF=0076;NFKC_SCF=0076;SB=UP;Upper
+cp;1D416;dm=0057;FC_NFKC=0077;gc=Lu;na=MATHEMATICAL BOLD CAPITAL W;NFKC_CF=0077;NFKC_SCF=0077;SB=UP;Upper
+cp;1D417;dm=0058;FC_NFKC=0078;gc=Lu;na=MATHEMATICAL BOLD CAPITAL X;NFKC_CF=0078;NFKC_SCF=0078;SB=UP;Upper
+cp;1D418;dm=0059;FC_NFKC=0079;gc=Lu;na=MATHEMATICAL BOLD CAPITAL Y;NFKC_CF=0079;NFKC_SCF=0079;SB=UP;Upper
+cp;1D419;dm=005A;FC_NFKC=007A;gc=Lu;na=MATHEMATICAL BOLD CAPITAL Z;NFKC_CF=007A;NFKC_SCF=007A;SB=UP;Upper
cp;1D41A;dm=0061;Lower;na=MATHEMATICAL BOLD SMALL A;NFKC_CF=0061
-cp;1D41B;dm=0062;Lower;na=MATHEMATICAL BOLD SMALL B;NFKC_CF=0062
-cp;1D41C;dm=0063;Lower;na=MATHEMATICAL BOLD SMALL C;NFKC_CF=0063
-cp;1D41D;dm=0064;Lower;na=MATHEMATICAL BOLD SMALL D;NFKC_CF=0064
-cp;1D41E;dm=0065;Lower;na=MATHEMATICAL BOLD SMALL E;NFKC_CF=0065
-cp;1D41F;dm=0066;Lower;na=MATHEMATICAL BOLD SMALL F;NFKC_CF=0066
-cp;1D420;dm=0067;Lower;na=MATHEMATICAL BOLD SMALL G;NFKC_CF=0067
-cp;1D421;dm=0068;Lower;na=MATHEMATICAL BOLD SMALL H;NFKC_CF=0068
-cp;1D422;dm=0069;Lower;na=MATHEMATICAL BOLD SMALL I;NFKC_CF=0069;SD
-cp;1D423;dm=006A;Lower;na=MATHEMATICAL BOLD SMALL J;NFKC_CF=006A;SD
-cp;1D424;dm=006B;Lower;na=MATHEMATICAL BOLD SMALL K;NFKC_CF=006B
-cp;1D425;dm=006C;Lower;na=MATHEMATICAL BOLD SMALL L;NFKC_CF=006C
-cp;1D426;dm=006D;Lower;na=MATHEMATICAL BOLD SMALL M;NFKC_CF=006D
-cp;1D427;dm=006E;Lower;na=MATHEMATICAL BOLD SMALL N;NFKC_CF=006E
-cp;1D428;dm=006F;Lower;na=MATHEMATICAL BOLD SMALL O;NFKC_CF=006F
-cp;1D429;dm=0070;Lower;na=MATHEMATICAL BOLD SMALL P;NFKC_CF=0070
-cp;1D42A;dm=0071;Lower;na=MATHEMATICAL BOLD SMALL Q;NFKC_CF=0071
-cp;1D42B;dm=0072;Lower;na=MATHEMATICAL BOLD SMALL R;NFKC_CF=0072
-cp;1D42C;dm=0073;Lower;na=MATHEMATICAL BOLD SMALL S;NFKC_CF=0073
-cp;1D42D;dm=0074;Lower;na=MATHEMATICAL BOLD SMALL T;NFKC_CF=0074
-cp;1D42E;dm=0075;Lower;na=MATHEMATICAL BOLD SMALL U;NFKC_CF=0075
-cp;1D42F;dm=0076;Lower;na=MATHEMATICAL BOLD SMALL V;NFKC_CF=0076
-cp;1D430;dm=0077;Lower;na=MATHEMATICAL BOLD SMALL W;NFKC_CF=0077
-cp;1D431;dm=0078;Lower;na=MATHEMATICAL BOLD SMALL X;NFKC_CF=0078
-cp;1D432;dm=0079;Lower;na=MATHEMATICAL BOLD SMALL Y;NFKC_CF=0079
-cp;1D433;dm=007A;Lower;na=MATHEMATICAL BOLD SMALL Z;NFKC_CF=007A
+cp;1D41B;dm=0062;Lower;na=MATHEMATICAL BOLD SMALL B;NFKC_CF=0062;NFKC_SCF=0062
+cp;1D41C;dm=0063;Lower;na=MATHEMATICAL BOLD SMALL C;NFKC_CF=0063;NFKC_SCF=0063
+cp;1D41D;dm=0064;Lower;na=MATHEMATICAL BOLD SMALL D;NFKC_CF=0064;NFKC_SCF=0064
+cp;1D41E;dm=0065;Lower;na=MATHEMATICAL BOLD SMALL E;NFKC_CF=0065;NFKC_SCF=0065
+cp;1D41F;dm=0066;Lower;na=MATHEMATICAL BOLD SMALL F;NFKC_CF=0066;NFKC_SCF=0066
+cp;1D420;dm=0067;Lower;na=MATHEMATICAL BOLD SMALL G;NFKC_CF=0067;NFKC_SCF=0067
+cp;1D421;dm=0068;Lower;na=MATHEMATICAL BOLD SMALL H;NFKC_CF=0068;NFKC_SCF=0068
+cp;1D422;dm=0069;Lower;na=MATHEMATICAL BOLD SMALL I;NFKC_CF=0069;NFKC_SCF=0069;SD
+cp;1D423;dm=006A;Lower;na=MATHEMATICAL BOLD SMALL J;NFKC_CF=006A;NFKC_SCF=006A;SD
+cp;1D424;dm=006B;Lower;na=MATHEMATICAL BOLD SMALL K;NFKC_CF=006B;NFKC_SCF=006B
+cp;1D425;dm=006C;Lower;na=MATHEMATICAL BOLD SMALL L;NFKC_CF=006C;NFKC_SCF=006C
+cp;1D426;dm=006D;Lower;na=MATHEMATICAL BOLD SMALL M;NFKC_CF=006D;NFKC_SCF=006D
+cp;1D427;dm=006E;Lower;na=MATHEMATICAL BOLD SMALL N;NFKC_CF=006E;NFKC_SCF=006E
+cp;1D428;dm=006F;Lower;na=MATHEMATICAL BOLD SMALL O;NFKC_CF=006F;NFKC_SCF=006F
+cp;1D429;dm=0070;Lower;na=MATHEMATICAL BOLD SMALL P;NFKC_CF=0070;NFKC_SCF=0070
+cp;1D42A;dm=0071;Lower;na=MATHEMATICAL BOLD SMALL Q;NFKC_CF=0071;NFKC_SCF=0071
+cp;1D42B;dm=0072;Lower;na=MATHEMATICAL BOLD SMALL R;NFKC_CF=0072;NFKC_SCF=0072
+cp;1D42C;dm=0073;Lower;na=MATHEMATICAL BOLD SMALL S;NFKC_CF=0073;NFKC_SCF=0073
+cp;1D42D;dm=0074;Lower;na=MATHEMATICAL BOLD SMALL T;NFKC_CF=0074;NFKC_SCF=0074
+cp;1D42E;dm=0075;Lower;na=MATHEMATICAL BOLD SMALL U;NFKC_CF=0075;NFKC_SCF=0075
+cp;1D42F;dm=0076;Lower;na=MATHEMATICAL BOLD SMALL V;NFKC_CF=0076;NFKC_SCF=0076
+cp;1D430;dm=0077;Lower;na=MATHEMATICAL BOLD SMALL W;NFKC_CF=0077;NFKC_SCF=0077
+cp;1D431;dm=0078;Lower;na=MATHEMATICAL BOLD SMALL X;NFKC_CF=0078;NFKC_SCF=0078
+cp;1D432;dm=0079;Lower;na=MATHEMATICAL BOLD SMALL Y;NFKC_CF=0079;NFKC_SCF=0079
+cp;1D433;dm=007A;Lower;na=MATHEMATICAL BOLD SMALL Z;NFKC_CF=007A;NFKC_SCF=007A
# Italic symbols
cp;1D434;dm=0041;FC_NFKC=0061;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL A;NFKC_CF=0061;SB=UP;Upper
-cp;1D435;dm=0042;FC_NFKC=0062;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL B;NFKC_CF=0062;SB=UP;Upper
-cp;1D436;dm=0043;FC_NFKC=0063;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL C;NFKC_CF=0063;SB=UP;Upper
-cp;1D437;dm=0044;FC_NFKC=0064;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL D;NFKC_CF=0064;SB=UP;Upper
-cp;1D438;dm=0045;FC_NFKC=0065;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL E;NFKC_CF=0065;SB=UP;Upper
-cp;1D439;dm=0046;FC_NFKC=0066;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL F;NFKC_CF=0066;SB=UP;Upper
-cp;1D43A;dm=0047;FC_NFKC=0067;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL G;NFKC_CF=0067;SB=UP;Upper
-cp;1D43B;dm=0048;FC_NFKC=0068;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL H;NFKC_CF=0068;SB=UP;Upper
-cp;1D43C;dm=0049;FC_NFKC=0069;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL I;NFKC_CF=0069;SB=UP;Upper
-cp;1D43D;dm=004A;FC_NFKC=006A;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL J;NFKC_CF=006A;SB=UP;Upper
-cp;1D43E;dm=004B;FC_NFKC=006B;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL K;NFKC_CF=006B;SB=UP;Upper
-cp;1D43F;dm=004C;FC_NFKC=006C;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL L;NFKC_CF=006C;SB=UP;Upper
-cp;1D440;dm=004D;FC_NFKC=006D;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL M;NFKC_CF=006D;SB=UP;Upper
-cp;1D441;dm=004E;FC_NFKC=006E;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL N;NFKC_CF=006E;SB=UP;Upper
-cp;1D442;dm=004F;FC_NFKC=006F;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL O;NFKC_CF=006F;SB=UP;Upper
-cp;1D443;dm=0050;FC_NFKC=0070;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL P;NFKC_CF=0070;SB=UP;Upper
-cp;1D444;dm=0051;FC_NFKC=0071;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL Q;NFKC_CF=0071;SB=UP;Upper
-cp;1D445;dm=0052;FC_NFKC=0072;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL R;NFKC_CF=0072;SB=UP;Upper
-cp;1D446;dm=0053;FC_NFKC=0073;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL S;NFKC_CF=0073;SB=UP;Upper
-cp;1D447;dm=0054;FC_NFKC=0074;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL T;NFKC_CF=0074;SB=UP;Upper
-cp;1D448;dm=0055;FC_NFKC=0075;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL U;NFKC_CF=0075;SB=UP;Upper
-cp;1D449;dm=0056;FC_NFKC=0076;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL V;NFKC_CF=0076;SB=UP;Upper
-cp;1D44A;dm=0057;FC_NFKC=0077;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL W;NFKC_CF=0077;SB=UP;Upper
-cp;1D44B;dm=0058;FC_NFKC=0078;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL X;NFKC_CF=0078;SB=UP;Upper
-cp;1D44C;dm=0059;FC_NFKC=0079;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL Y;NFKC_CF=0079;SB=UP;Upper
-cp;1D44D;dm=005A;FC_NFKC=007A;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL Z;NFKC_CF=007A;SB=UP;Upper
+cp;1D435;dm=0042;FC_NFKC=0062;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL B;NFKC_CF=0062;NFKC_SCF=0062;SB=UP;Upper
+cp;1D436;dm=0043;FC_NFKC=0063;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL C;NFKC_CF=0063;NFKC_SCF=0063;SB=UP;Upper
+cp;1D437;dm=0044;FC_NFKC=0064;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL D;NFKC_CF=0064;NFKC_SCF=0064;SB=UP;Upper
+cp;1D438;dm=0045;FC_NFKC=0065;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL E;NFKC_CF=0065;NFKC_SCF=0065;SB=UP;Upper
+cp;1D439;dm=0046;FC_NFKC=0066;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL F;NFKC_CF=0066;NFKC_SCF=0066;SB=UP;Upper
+cp;1D43A;dm=0047;FC_NFKC=0067;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL G;NFKC_CF=0067;NFKC_SCF=0067;SB=UP;Upper
+cp;1D43B;dm=0048;FC_NFKC=0068;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL H;NFKC_CF=0068;NFKC_SCF=0068;SB=UP;Upper
+cp;1D43C;dm=0049;FC_NFKC=0069;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL I;NFKC_CF=0069;NFKC_SCF=0069;SB=UP;Upper
+cp;1D43D;dm=004A;FC_NFKC=006A;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL J;NFKC_CF=006A;NFKC_SCF=006A;SB=UP;Upper
+cp;1D43E;dm=004B;FC_NFKC=006B;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL K;NFKC_CF=006B;NFKC_SCF=006B;SB=UP;Upper
+cp;1D43F;dm=004C;FC_NFKC=006C;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL L;NFKC_CF=006C;NFKC_SCF=006C;SB=UP;Upper
+cp;1D440;dm=004D;FC_NFKC=006D;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL M;NFKC_CF=006D;NFKC_SCF=006D;SB=UP;Upper
+cp;1D441;dm=004E;FC_NFKC=006E;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL N;NFKC_CF=006E;NFKC_SCF=006E;SB=UP;Upper
+cp;1D442;dm=004F;FC_NFKC=006F;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL O;NFKC_CF=006F;NFKC_SCF=006F;SB=UP;Upper
+cp;1D443;dm=0050;FC_NFKC=0070;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL P;NFKC_CF=0070;NFKC_SCF=0070;SB=UP;Upper
+cp;1D444;dm=0051;FC_NFKC=0071;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL Q;NFKC_CF=0071;NFKC_SCF=0071;SB=UP;Upper
+cp;1D445;dm=0052;FC_NFKC=0072;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL R;NFKC_CF=0072;NFKC_SCF=0072;SB=UP;Upper
+cp;1D446;dm=0053;FC_NFKC=0073;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL S;NFKC_CF=0073;NFKC_SCF=0073;SB=UP;Upper
+cp;1D447;dm=0054;FC_NFKC=0074;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL T;NFKC_CF=0074;NFKC_SCF=0074;SB=UP;Upper
+cp;1D448;dm=0055;FC_NFKC=0075;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL U;NFKC_CF=0075;NFKC_SCF=0075;SB=UP;Upper
+cp;1D449;dm=0056;FC_NFKC=0076;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL V;NFKC_CF=0076;NFKC_SCF=0076;SB=UP;Upper
+cp;1D44A;dm=0057;FC_NFKC=0077;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL W;NFKC_CF=0077;NFKC_SCF=0077;SB=UP;Upper
+cp;1D44B;dm=0058;FC_NFKC=0078;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL X;NFKC_CF=0078;NFKC_SCF=0078;SB=UP;Upper
+cp;1D44C;dm=0059;FC_NFKC=0079;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL Y;NFKC_CF=0079;NFKC_SCF=0079;SB=UP;Upper
+cp;1D44D;dm=005A;FC_NFKC=007A;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL Z;NFKC_CF=007A;NFKC_SCF=007A;SB=UP;Upper
cp;1D44E;dm=0061;Lower;na=MATHEMATICAL ITALIC SMALL A;NFKC_CF=0061
-cp;1D44F;dm=0062;Lower;na=MATHEMATICAL ITALIC SMALL B;NFKC_CF=0062
-cp;1D450;dm=0063;Lower;na=MATHEMATICAL ITALIC SMALL C;NFKC_CF=0063
-cp;1D451;dm=0064;Lower;na=MATHEMATICAL ITALIC SMALL D;NFKC_CF=0064
-cp;1D452;dm=0065;Lower;na=MATHEMATICAL ITALIC SMALL E;NFKC_CF=0065
-cp;1D453;dm=0066;Lower;na=MATHEMATICAL ITALIC SMALL F;NFKC_CF=0066
-cp;1D454;dm=0067;Lower;na=MATHEMATICAL ITALIC SMALL G;NFKC_CF=0067
+cp;1D44F;dm=0062;Lower;na=MATHEMATICAL ITALIC SMALL B;NFKC_CF=0062;NFKC_SCF=0062
+cp;1D450;dm=0063;Lower;na=MATHEMATICAL ITALIC SMALL C;NFKC_CF=0063;NFKC_SCF=0063
+cp;1D451;dm=0064;Lower;na=MATHEMATICAL ITALIC SMALL D;NFKC_CF=0064;NFKC_SCF=0064
+cp;1D452;dm=0065;Lower;na=MATHEMATICAL ITALIC SMALL E;NFKC_CF=0065;NFKC_SCF=0065
+cp;1D453;dm=0066;Lower;na=MATHEMATICAL ITALIC SMALL F;NFKC_CF=0066;NFKC_SCF=0066
+cp;1D454;dm=0067;Lower;na=MATHEMATICAL ITALIC SMALL G;NFKC_CF=0067;NFKC_SCF=0067
unassigned;1D455
-cp;1D456;dm=0069;Lower;na=MATHEMATICAL ITALIC SMALL I;NFKC_CF=0069;SD
-cp;1D457;dm=006A;Lower;na=MATHEMATICAL ITALIC SMALL J;NFKC_CF=006A;SD
-cp;1D458;dm=006B;Lower;na=MATHEMATICAL ITALIC SMALL K;NFKC_CF=006B
-cp;1D459;dm=006C;Lower;na=MATHEMATICAL ITALIC SMALL L;NFKC_CF=006C
-cp;1D45A;dm=006D;Lower;na=MATHEMATICAL ITALIC SMALL M;NFKC_CF=006D
-cp;1D45B;dm=006E;Lower;na=MATHEMATICAL ITALIC SMALL N;NFKC_CF=006E
-cp;1D45C;dm=006F;Lower;na=MATHEMATICAL ITALIC SMALL O;NFKC_CF=006F
-cp;1D45D;dm=0070;Lower;na=MATHEMATICAL ITALIC SMALL P;NFKC_CF=0070
-cp;1D45E;dm=0071;Lower;na=MATHEMATICAL ITALIC SMALL Q;NFKC_CF=0071
-cp;1D45F;dm=0072;Lower;na=MATHEMATICAL ITALIC SMALL R;NFKC_CF=0072
-cp;1D460;dm=0073;Lower;na=MATHEMATICAL ITALIC SMALL S;NFKC_CF=0073
-cp;1D461;dm=0074;Lower;na=MATHEMATICAL ITALIC SMALL T;NFKC_CF=0074
-cp;1D462;dm=0075;Lower;na=MATHEMATICAL ITALIC SMALL U;NFKC_CF=0075
-cp;1D463;dm=0076;Lower;na=MATHEMATICAL ITALIC SMALL V;NFKC_CF=0076
-cp;1D464;dm=0077;Lower;na=MATHEMATICAL ITALIC SMALL W;NFKC_CF=0077
-cp;1D465;dm=0078;Lower;na=MATHEMATICAL ITALIC SMALL X;NFKC_CF=0078
-cp;1D466;dm=0079;Lower;na=MATHEMATICAL ITALIC SMALL Y;NFKC_CF=0079
-cp;1D467;dm=007A;Lower;na=MATHEMATICAL ITALIC SMALL Z;NFKC_CF=007A
+cp;1D456;dm=0069;Lower;na=MATHEMATICAL ITALIC SMALL I;NFKC_CF=0069;NFKC_SCF=0069;SD
+cp;1D457;dm=006A;Lower;na=MATHEMATICAL ITALIC SMALL J;NFKC_CF=006A;NFKC_SCF=006A;SD
+cp;1D458;dm=006B;Lower;na=MATHEMATICAL ITALIC SMALL K;NFKC_CF=006B;NFKC_SCF=006B
+cp;1D459;dm=006C;Lower;na=MATHEMATICAL ITALIC SMALL L;NFKC_CF=006C;NFKC_SCF=006C
+cp;1D45A;dm=006D;Lower;na=MATHEMATICAL ITALIC SMALL M;NFKC_CF=006D;NFKC_SCF=006D
+cp;1D45B;dm=006E;Lower;na=MATHEMATICAL ITALIC SMALL N;NFKC_CF=006E;NFKC_SCF=006E
+cp;1D45C;dm=006F;Lower;na=MATHEMATICAL ITALIC SMALL O;NFKC_CF=006F;NFKC_SCF=006F
+cp;1D45D;dm=0070;Lower;na=MATHEMATICAL ITALIC SMALL P;NFKC_CF=0070;NFKC_SCF=0070
+cp;1D45E;dm=0071;Lower;na=MATHEMATICAL ITALIC SMALL Q;NFKC_CF=0071;NFKC_SCF=0071
+cp;1D45F;dm=0072;Lower;na=MATHEMATICAL ITALIC SMALL R;NFKC_CF=0072;NFKC_SCF=0072
+cp;1D460;dm=0073;Lower;na=MATHEMATICAL ITALIC SMALL S;NFKC_CF=0073;NFKC_SCF=0073
+cp;1D461;dm=0074;Lower;na=MATHEMATICAL ITALIC SMALL T;NFKC_CF=0074;NFKC_SCF=0074
+cp;1D462;dm=0075;Lower;na=MATHEMATICAL ITALIC SMALL U;NFKC_CF=0075;NFKC_SCF=0075
+cp;1D463;dm=0076;Lower;na=MATHEMATICAL ITALIC SMALL V;NFKC_CF=0076;NFKC_SCF=0076
+cp;1D464;dm=0077;Lower;na=MATHEMATICAL ITALIC SMALL W;NFKC_CF=0077;NFKC_SCF=0077
+cp;1D465;dm=0078;Lower;na=MATHEMATICAL ITALIC SMALL X;NFKC_CF=0078;NFKC_SCF=0078
+cp;1D466;dm=0079;Lower;na=MATHEMATICAL ITALIC SMALL Y;NFKC_CF=0079;NFKC_SCF=0079
+cp;1D467;dm=007A;Lower;na=MATHEMATICAL ITALIC SMALL Z;NFKC_CF=007A;NFKC_SCF=007A
# Bold italic symbols
cp;1D468;dm=0041;FC_NFKC=0061;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL A;NFKC_CF=0061;SB=UP;Upper
-cp;1D469;dm=0042;FC_NFKC=0062;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL B;NFKC_CF=0062;SB=UP;Upper
-cp;1D46A;dm=0043;FC_NFKC=0063;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL C;NFKC_CF=0063;SB=UP;Upper
-cp;1D46B;dm=0044;FC_NFKC=0064;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL D;NFKC_CF=0064;SB=UP;Upper
-cp;1D46C;dm=0045;FC_NFKC=0065;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL E;NFKC_CF=0065;SB=UP;Upper
-cp;1D46D;dm=0046;FC_NFKC=0066;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL F;NFKC_CF=0066;SB=UP;Upper
-cp;1D46E;dm=0047;FC_NFKC=0067;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL G;NFKC_CF=0067;SB=UP;Upper
-cp;1D46F;dm=0048;FC_NFKC=0068;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL H;NFKC_CF=0068;SB=UP;Upper
-cp;1D470;dm=0049;FC_NFKC=0069;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL I;NFKC_CF=0069;SB=UP;Upper
-cp;1D471;dm=004A;FC_NFKC=006A;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL J;NFKC_CF=006A;SB=UP;Upper
-cp;1D472;dm=004B;FC_NFKC=006B;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL K;NFKC_CF=006B;SB=UP;Upper
-cp;1D473;dm=004C;FC_NFKC=006C;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL L;NFKC_CF=006C;SB=UP;Upper
-cp;1D474;dm=004D;FC_NFKC=006D;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL M;NFKC_CF=006D;SB=UP;Upper
-cp;1D475;dm=004E;FC_NFKC=006E;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL N;NFKC_CF=006E;SB=UP;Upper
-cp;1D476;dm=004F;FC_NFKC=006F;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL O;NFKC_CF=006F;SB=UP;Upper
-cp;1D477;dm=0050;FC_NFKC=0070;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL P;NFKC_CF=0070;SB=UP;Upper
-cp;1D478;dm=0051;FC_NFKC=0071;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL Q;NFKC_CF=0071;SB=UP;Upper
-cp;1D479;dm=0052;FC_NFKC=0072;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL R;NFKC_CF=0072;SB=UP;Upper
-cp;1D47A;dm=0053;FC_NFKC=0073;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL S;NFKC_CF=0073;SB=UP;Upper
-cp;1D47B;dm=0054;FC_NFKC=0074;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL T;NFKC_CF=0074;SB=UP;Upper
-cp;1D47C;dm=0055;FC_NFKC=0075;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL U;NFKC_CF=0075;SB=UP;Upper
-cp;1D47D;dm=0056;FC_NFKC=0076;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL V;NFKC_CF=0076;SB=UP;Upper
-cp;1D47E;dm=0057;FC_NFKC=0077;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL W;NFKC_CF=0077;SB=UP;Upper
-cp;1D47F;dm=0058;FC_NFKC=0078;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL X;NFKC_CF=0078;SB=UP;Upper
-cp;1D480;dm=0059;FC_NFKC=0079;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL Y;NFKC_CF=0079;SB=UP;Upper
-cp;1D481;dm=005A;FC_NFKC=007A;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL Z;NFKC_CF=007A;SB=UP;Upper
+cp;1D469;dm=0042;FC_NFKC=0062;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL B;NFKC_CF=0062;NFKC_SCF=0062;SB=UP;Upper
+cp;1D46A;dm=0043;FC_NFKC=0063;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL C;NFKC_CF=0063;NFKC_SCF=0063;SB=UP;Upper
+cp;1D46B;dm=0044;FC_NFKC=0064;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL D;NFKC_CF=0064;NFKC_SCF=0064;SB=UP;Upper
+cp;1D46C;dm=0045;FC_NFKC=0065;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL E;NFKC_CF=0065;NFKC_SCF=0065;SB=UP;Upper
+cp;1D46D;dm=0046;FC_NFKC=0066;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL F;NFKC_CF=0066;NFKC_SCF=0066;SB=UP;Upper
+cp;1D46E;dm=0047;FC_NFKC=0067;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL G;NFKC_CF=0067;NFKC_SCF=0067;SB=UP;Upper
+cp;1D46F;dm=0048;FC_NFKC=0068;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL H;NFKC_CF=0068;NFKC_SCF=0068;SB=UP;Upper
+cp;1D470;dm=0049;FC_NFKC=0069;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL I;NFKC_CF=0069;NFKC_SCF=0069;SB=UP;Upper
+cp;1D471;dm=004A;FC_NFKC=006A;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL J;NFKC_CF=006A;NFKC_SCF=006A;SB=UP;Upper
+cp;1D472;dm=004B;FC_NFKC=006B;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL K;NFKC_CF=006B;NFKC_SCF=006B;SB=UP;Upper
+cp;1D473;dm=004C;FC_NFKC=006C;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL L;NFKC_CF=006C;NFKC_SCF=006C;SB=UP;Upper
+cp;1D474;dm=004D;FC_NFKC=006D;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL M;NFKC_CF=006D;NFKC_SCF=006D;SB=UP;Upper
+cp;1D475;dm=004E;FC_NFKC=006E;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL N;NFKC_CF=006E;NFKC_SCF=006E;SB=UP;Upper
+cp;1D476;dm=004F;FC_NFKC=006F;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL O;NFKC_CF=006F;NFKC_SCF=006F;SB=UP;Upper
+cp;1D477;dm=0050;FC_NFKC=0070;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL P;NFKC_CF=0070;NFKC_SCF=0070;SB=UP;Upper
+cp;1D478;dm=0051;FC_NFKC=0071;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL Q;NFKC_CF=0071;NFKC_SCF=0071;SB=UP;Upper
+cp;1D479;dm=0052;FC_NFKC=0072;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL R;NFKC_CF=0072;NFKC_SCF=0072;SB=UP;Upper
+cp;1D47A;dm=0053;FC_NFKC=0073;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL S;NFKC_CF=0073;NFKC_SCF=0073;SB=UP;Upper
+cp;1D47B;dm=0054;FC_NFKC=0074;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL T;NFKC_CF=0074;NFKC_SCF=0074;SB=UP;Upper
+cp;1D47C;dm=0055;FC_NFKC=0075;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL U;NFKC_CF=0075;NFKC_SCF=0075;SB=UP;Upper
+cp;1D47D;dm=0056;FC_NFKC=0076;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL V;NFKC_CF=0076;NFKC_SCF=0076;SB=UP;Upper
+cp;1D47E;dm=0057;FC_NFKC=0077;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL W;NFKC_CF=0077;NFKC_SCF=0077;SB=UP;Upper
+cp;1D47F;dm=0058;FC_NFKC=0078;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL X;NFKC_CF=0078;NFKC_SCF=0078;SB=UP;Upper
+cp;1D480;dm=0059;FC_NFKC=0079;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL Y;NFKC_CF=0079;NFKC_SCF=0079;SB=UP;Upper
+cp;1D481;dm=005A;FC_NFKC=007A;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL Z;NFKC_CF=007A;NFKC_SCF=007A;SB=UP;Upper
cp;1D482;dm=0061;Lower;na=MATHEMATICAL BOLD ITALIC SMALL A;NFKC_CF=0061
-cp;1D483;dm=0062;Lower;na=MATHEMATICAL BOLD ITALIC SMALL B;NFKC_CF=0062
-cp;1D484;dm=0063;Lower;na=MATHEMATICAL BOLD ITALIC SMALL C;NFKC_CF=0063
-cp;1D485;dm=0064;Lower;na=MATHEMATICAL BOLD ITALIC SMALL D;NFKC_CF=0064
-cp;1D486;dm=0065;Lower;na=MATHEMATICAL BOLD ITALIC SMALL E;NFKC_CF=0065
-cp;1D487;dm=0066;Lower;na=MATHEMATICAL BOLD ITALIC SMALL F;NFKC_CF=0066
-cp;1D488;dm=0067;Lower;na=MATHEMATICAL BOLD ITALIC SMALL G;NFKC_CF=0067
-cp;1D489;dm=0068;Lower;na=MATHEMATICAL BOLD ITALIC SMALL H;NFKC_CF=0068
-cp;1D48A;dm=0069;Lower;na=MATHEMATICAL BOLD ITALIC SMALL I;NFKC_CF=0069;SD
-cp;1D48B;dm=006A;Lower;na=MATHEMATICAL BOLD ITALIC SMALL J;NFKC_CF=006A;SD
-cp;1D48C;dm=006B;Lower;na=MATHEMATICAL BOLD ITALIC SMALL K;NFKC_CF=006B
-cp;1D48D;dm=006C;Lower;na=MATHEMATICAL BOLD ITALIC SMALL L;NFKC_CF=006C
-cp;1D48E;dm=006D;Lower;na=MATHEMATICAL BOLD ITALIC SMALL M;NFKC_CF=006D
-cp;1D48F;dm=006E;Lower;na=MATHEMATICAL BOLD ITALIC SMALL N;NFKC_CF=006E
-cp;1D490;dm=006F;Lower;na=MATHEMATICAL BOLD ITALIC SMALL O;NFKC_CF=006F
-cp;1D491;dm=0070;Lower;na=MATHEMATICAL BOLD ITALIC SMALL P;NFKC_CF=0070
-cp;1D492;dm=0071;Lower;na=MATHEMATICAL BOLD ITALIC SMALL Q;NFKC_CF=0071
-cp;1D493;dm=0072;Lower;na=MATHEMATICAL BOLD ITALIC SMALL R;NFKC_CF=0072
-cp;1D494;dm=0073;Lower;na=MATHEMATICAL BOLD ITALIC SMALL S;NFKC_CF=0073
-cp;1D495;dm=0074;Lower;na=MATHEMATICAL BOLD ITALIC SMALL T;NFKC_CF=0074
-cp;1D496;dm=0075;Lower;na=MATHEMATICAL BOLD ITALIC SMALL U;NFKC_CF=0075
-cp;1D497;dm=0076;Lower;na=MATHEMATICAL BOLD ITALIC SMALL V;NFKC_CF=0076
-cp;1D498;dm=0077;Lower;na=MATHEMATICAL BOLD ITALIC SMALL W;NFKC_CF=0077
-cp;1D499;dm=0078;Lower;na=MATHEMATICAL BOLD ITALIC SMALL X;NFKC_CF=0078
-cp;1D49A;dm=0079;Lower;na=MATHEMATICAL BOLD ITALIC SMALL Y;NFKC_CF=0079
-cp;1D49B;dm=007A;Lower;na=MATHEMATICAL BOLD ITALIC SMALL Z;NFKC_CF=007A
+cp;1D483;dm=0062;Lower;na=MATHEMATICAL BOLD ITALIC SMALL B;NFKC_CF=0062;NFKC_SCF=0062
+cp;1D484;dm=0063;Lower;na=MATHEMATICAL BOLD ITALIC SMALL C;NFKC_CF=0063;NFKC_SCF=0063
+cp;1D485;dm=0064;Lower;na=MATHEMATICAL BOLD ITALIC SMALL D;NFKC_CF=0064;NFKC_SCF=0064
+cp;1D486;dm=0065;Lower;na=MATHEMATICAL BOLD ITALIC SMALL E;NFKC_CF=0065;NFKC_SCF=0065
+cp;1D487;dm=0066;Lower;na=MATHEMATICAL BOLD ITALIC SMALL F;NFKC_CF=0066;NFKC_SCF=0066
+cp;1D488;dm=0067;Lower;na=MATHEMATICAL BOLD ITALIC SMALL G;NFKC_CF=0067;NFKC_SCF=0067
+cp;1D489;dm=0068;Lower;na=MATHEMATICAL BOLD ITALIC SMALL H;NFKC_CF=0068;NFKC_SCF=0068
+cp;1D48A;dm=0069;Lower;na=MATHEMATICAL BOLD ITALIC SMALL I;NFKC_CF=0069;NFKC_SCF=0069;SD
+cp;1D48B;dm=006A;Lower;na=MATHEMATICAL BOLD ITALIC SMALL J;NFKC_CF=006A;NFKC_SCF=006A;SD
+cp;1D48C;dm=006B;Lower;na=MATHEMATICAL BOLD ITALIC SMALL K;NFKC_CF=006B;NFKC_SCF=006B
+cp;1D48D;dm=006C;Lower;na=MATHEMATICAL BOLD ITALIC SMALL L;NFKC_CF=006C;NFKC_SCF=006C
+cp;1D48E;dm=006D;Lower;na=MATHEMATICAL BOLD ITALIC SMALL M;NFKC_CF=006D;NFKC_SCF=006D
+cp;1D48F;dm=006E;Lower;na=MATHEMATICAL BOLD ITALIC SMALL N;NFKC_CF=006E;NFKC_SCF=006E
+cp;1D490;dm=006F;Lower;na=MATHEMATICAL BOLD ITALIC SMALL O;NFKC_CF=006F;NFKC_SCF=006F
+cp;1D491;dm=0070;Lower;na=MATHEMATICAL BOLD ITALIC SMALL P;NFKC_CF=0070;NFKC_SCF=0070
+cp;1D492;dm=0071;Lower;na=MATHEMATICAL BOLD ITALIC SMALL Q;NFKC_CF=0071;NFKC_SCF=0071
+cp;1D493;dm=0072;Lower;na=MATHEMATICAL BOLD ITALIC SMALL R;NFKC_CF=0072;NFKC_SCF=0072
+cp;1D494;dm=0073;Lower;na=MATHEMATICAL BOLD ITALIC SMALL S;NFKC_CF=0073;NFKC_SCF=0073
+cp;1D495;dm=0074;Lower;na=MATHEMATICAL BOLD ITALIC SMALL T;NFKC_CF=0074;NFKC_SCF=0074
+cp;1D496;dm=0075;Lower;na=MATHEMATICAL BOLD ITALIC SMALL U;NFKC_CF=0075;NFKC_SCF=0075
+cp;1D497;dm=0076;Lower;na=MATHEMATICAL BOLD ITALIC SMALL V;NFKC_CF=0076;NFKC_SCF=0076
+cp;1D498;dm=0077;Lower;na=MATHEMATICAL BOLD ITALIC SMALL W;NFKC_CF=0077;NFKC_SCF=0077
+cp;1D499;dm=0078;Lower;na=MATHEMATICAL BOLD ITALIC SMALL X;NFKC_CF=0078;NFKC_SCF=0078
+cp;1D49A;dm=0079;Lower;na=MATHEMATICAL BOLD ITALIC SMALL Y;NFKC_CF=0079;NFKC_SCF=0079
+cp;1D49B;dm=007A;Lower;na=MATHEMATICAL BOLD ITALIC SMALL Z;NFKC_CF=007A;NFKC_SCF=007A
# Script symbols
cp;1D49C;dm=0041;FC_NFKC=0061;gc=Lu;na=MATHEMATICAL SCRIPT CAPITAL A;NFKC_CF=0061;SB=UP;Upper
unassigned;1D49D
-cp;1D49E;dm=0043;FC_NFKC=0063;gc=Lu;na=MATHEMATICAL SCRIPT CAPITAL C;NFKC_CF=0063;SB=UP;Upper
-cp;1D49F;dm=0044;FC_NFKC=0064;gc=Lu;na=MATHEMATICAL SCRIPT CAPITAL D;NFKC_CF=0064;SB=UP;Upper
+cp;1D49E;dm=0043;FC_NFKC=0063;gc=Lu;na=MATHEMATICAL SCRIPT CAPITAL C;NFKC_CF=0063;NFKC_SCF=0063;SB=UP;Upper
+cp;1D49F;dm=0044;FC_NFKC=0064;gc=Lu;na=MATHEMATICAL SCRIPT CAPITAL D;NFKC_CF=0064;NFKC_SCF=0064;SB=UP;Upper
unassigned;1D4A0..1D4A1
-cp;1D4A2;dm=0047;FC_NFKC=0067;gc=Lu;na=MATHEMATICAL SCRIPT CAPITAL G;NFKC_CF=0067;SB=UP;Upper
+cp;1D4A2;dm=0047;FC_NFKC=0067;gc=Lu;na=MATHEMATICAL SCRIPT CAPITAL G;NFKC_CF=0067;NFKC_SCF=0067;SB=UP;Upper
unassigned;1D4A3..1D4A4
-cp;1D4A5;dm=004A;FC_NFKC=006A;gc=Lu;na=MATHEMATICAL SCRIPT CAPITAL J;NFKC_CF=006A;SB=UP;Upper
-cp;1D4A6;dm=004B;FC_NFKC=006B;gc=Lu;na=MATHEMATICAL SCRIPT CAPITAL K;NFKC_CF=006B;SB=UP;Upper
+cp;1D4A5;dm=004A;FC_NFKC=006A;gc=Lu;na=MATHEMATICAL SCRIPT CAPITAL J;NFKC_CF=006A;NFKC_SCF=006A;SB=UP;Upper
+cp;1D4A6;dm=004B;FC_NFKC=006B;gc=Lu;na=MATHEMATICAL SCRIPT CAPITAL K;NFKC_CF=006B;NFKC_SCF=006B;SB=UP;Upper
unassigned;1D4A7..1D4A8
-cp;1D4A9;dm=004E;FC_NFKC=006E;gc=Lu;na=MATHEMATICAL SCRIPT CAPITAL N;NFKC_CF=006E;SB=UP;Upper
-cp;1D4AA;dm=004F;FC_NFKC=006F;gc=Lu;na=MATHEMATICAL SCRIPT CAPITAL O;NFKC_CF=006F;SB=UP;Upper
-cp;1D4AB;dm=0050;FC_NFKC=0070;gc=Lu;na=MATHEMATICAL SCRIPT CAPITAL P;NFKC_CF=0070;SB=UP;Upper
-cp;1D4AC;dm=0051;FC_NFKC=0071;gc=Lu;na=MATHEMATICAL SCRIPT CAPITAL Q;NFKC_CF=0071;SB=UP;Upper
+cp;1D4A9;dm=004E;FC_NFKC=006E;gc=Lu;na=MATHEMATICAL SCRIPT CAPITAL N;NFKC_CF=006E;NFKC_SCF=006E;SB=UP;Upper
+cp;1D4AA;dm=004F;FC_NFKC=006F;gc=Lu;na=MATHEMATICAL SCRIPT CAPITAL O;NFKC_CF=006F;NFKC_SCF=006F;SB=UP;Upper
+cp;1D4AB;dm=0050;FC_NFKC=0070;gc=Lu;na=MATHEMATICAL SCRIPT CAPITAL P;NFKC_CF=0070;NFKC_SCF=0070;SB=UP;Upper
+cp;1D4AC;dm=0051;FC_NFKC=0071;gc=Lu;na=MATHEMATICAL SCRIPT CAPITAL Q;NFKC_CF=0071;NFKC_SCF=0071;SB=UP;Upper
unassigned;1D4AD
-cp;1D4AE;dm=0053;FC_NFKC=0073;gc=Lu;na=MATHEMATICAL SCRIPT CAPITAL S;NFKC_CF=0073;SB=UP;Upper
-cp;1D4AF;dm=0054;FC_NFKC=0074;gc=Lu;na=MATHEMATICAL SCRIPT CAPITAL T;NFKC_CF=0074;SB=UP;Upper
-cp;1D4B0;dm=0055;FC_NFKC=0075;gc=Lu;na=MATHEMATICAL SCRIPT CAPITAL U;NFKC_CF=0075;SB=UP;Upper
-cp;1D4B1;dm=0056;FC_NFKC=0076;gc=Lu;na=MATHEMATICAL SCRIPT CAPITAL V;NFKC_CF=0076;SB=UP;Upper
-cp;1D4B2;dm=0057;FC_NFKC=0077;gc=Lu;na=MATHEMATICAL SCRIPT CAPITAL W;NFKC_CF=0077;SB=UP;Upper
-cp;1D4B3;dm=0058;FC_NFKC=0078;gc=Lu;na=MATHEMATICAL SCRIPT CAPITAL X;NFKC_CF=0078;SB=UP;Upper
-cp;1D4B4;dm=0059;FC_NFKC=0079;gc=Lu;na=MATHEMATICAL SCRIPT CAPITAL Y;NFKC_CF=0079;SB=UP;Upper
-cp;1D4B5;dm=005A;FC_NFKC=007A;gc=Lu;na=MATHEMATICAL SCRIPT CAPITAL Z;NFKC_CF=007A;SB=UP;Upper
+cp;1D4AE;dm=0053;FC_NFKC=0073;gc=Lu;na=MATHEMATICAL SCRIPT CAPITAL S;NFKC_CF=0073;NFKC_SCF=0073;SB=UP;Upper
+cp;1D4AF;dm=0054;FC_NFKC=0074;gc=Lu;na=MATHEMATICAL SCRIPT CAPITAL T;NFKC_CF=0074;NFKC_SCF=0074;SB=UP;Upper
+cp;1D4B0;dm=0055;FC_NFKC=0075;gc=Lu;na=MATHEMATICAL SCRIPT CAPITAL U;NFKC_CF=0075;NFKC_SCF=0075;SB=UP;Upper
+cp;1D4B1;dm=0056;FC_NFKC=0076;gc=Lu;na=MATHEMATICAL SCRIPT CAPITAL V;NFKC_CF=0076;NFKC_SCF=0076;SB=UP;Upper
+cp;1D4B2;dm=0057;FC_NFKC=0077;gc=Lu;na=MATHEMATICAL SCRIPT CAPITAL W;NFKC_CF=0077;NFKC_SCF=0077;SB=UP;Upper
+cp;1D4B3;dm=0058;FC_NFKC=0078;gc=Lu;na=MATHEMATICAL SCRIPT CAPITAL X;NFKC_CF=0078;NFKC_SCF=0078;SB=UP;Upper
+cp;1D4B4;dm=0059;FC_NFKC=0079;gc=Lu;na=MATHEMATICAL SCRIPT CAPITAL Y;NFKC_CF=0079;NFKC_SCF=0079;SB=UP;Upper
+cp;1D4B5;dm=005A;FC_NFKC=007A;gc=Lu;na=MATHEMATICAL SCRIPT CAPITAL Z;NFKC_CF=007A;NFKC_SCF=007A;SB=UP;Upper
cp;1D4B6;dm=0061;Lower;na=MATHEMATICAL SCRIPT SMALL A;NFKC_CF=0061
-cp;1D4B7;dm=0062;Lower;na=MATHEMATICAL SCRIPT SMALL B;NFKC_CF=0062
-cp;1D4B8;dm=0063;Lower;na=MATHEMATICAL SCRIPT SMALL C;NFKC_CF=0063
-cp;1D4B9;dm=0064;Lower;na=MATHEMATICAL SCRIPT SMALL D;NFKC_CF=0064
+cp;1D4B7;dm=0062;Lower;na=MATHEMATICAL SCRIPT SMALL B;NFKC_CF=0062;NFKC_SCF=0062
+cp;1D4B8;dm=0063;Lower;na=MATHEMATICAL SCRIPT SMALL C;NFKC_CF=0063;NFKC_SCF=0063
+cp;1D4B9;dm=0064;Lower;na=MATHEMATICAL SCRIPT SMALL D;NFKC_CF=0064;NFKC_SCF=0064
unassigned;1D4BA
-cp;1D4BB;dm=0066;Lower;na=MATHEMATICAL SCRIPT SMALL F;NFKC_CF=0066
+cp;1D4BB;dm=0066;Lower;na=MATHEMATICAL SCRIPT SMALL F;NFKC_CF=0066;NFKC_SCF=0066
unassigned;1D4BC
-cp;1D4BD;dm=0068;Lower;na=MATHEMATICAL SCRIPT SMALL H;NFKC_CF=0068
-cp;1D4BE;dm=0069;Lower;na=MATHEMATICAL SCRIPT SMALL I;NFKC_CF=0069;SD
-cp;1D4BF;dm=006A;Lower;na=MATHEMATICAL SCRIPT SMALL J;NFKC_CF=006A;SD
-cp;1D4C0;dm=006B;Lower;na=MATHEMATICAL SCRIPT SMALL K;NFKC_CF=006B
-cp;1D4C1;age=4.0;dm=006C;Lower;na=MATHEMATICAL SCRIPT SMALL L;NFKC_CF=006C
-cp;1D4C2;dm=006D;Lower;na=MATHEMATICAL SCRIPT SMALL M;NFKC_CF=006D
-cp;1D4C3;dm=006E;Lower;na=MATHEMATICAL SCRIPT SMALL N;NFKC_CF=006E
+cp;1D4BD;dm=0068;Lower;na=MATHEMATICAL SCRIPT SMALL H;NFKC_CF=0068;NFKC_SCF=0068
+cp;1D4BE;dm=0069;Lower;na=MATHEMATICAL SCRIPT SMALL I;NFKC_CF=0069;NFKC_SCF=0069;SD
+cp;1D4BF;dm=006A;Lower;na=MATHEMATICAL SCRIPT SMALL J;NFKC_CF=006A;NFKC_SCF=006A;SD
+cp;1D4C0;dm=006B;Lower;na=MATHEMATICAL SCRIPT SMALL K;NFKC_CF=006B;NFKC_SCF=006B
+cp;1D4C1;age=4.0;dm=006C;Lower;na=MATHEMATICAL SCRIPT SMALL L;NFKC_CF=006C;NFKC_SCF=006C
+cp;1D4C2;dm=006D;Lower;na=MATHEMATICAL SCRIPT SMALL M;NFKC_CF=006D;NFKC_SCF=006D
+cp;1D4C3;dm=006E;Lower;na=MATHEMATICAL SCRIPT SMALL N;NFKC_CF=006E;NFKC_SCF=006E
unassigned;1D4C4
-cp;1D4C5;dm=0070;Lower;na=MATHEMATICAL SCRIPT SMALL P;NFKC_CF=0070
-cp;1D4C6;dm=0071;Lower;na=MATHEMATICAL SCRIPT SMALL Q;NFKC_CF=0071
-cp;1D4C7;dm=0072;Lower;na=MATHEMATICAL SCRIPT SMALL R;NFKC_CF=0072
-cp;1D4C8;dm=0073;Lower;na=MATHEMATICAL SCRIPT SMALL S;NFKC_CF=0073
-cp;1D4C9;dm=0074;Lower;na=MATHEMATICAL SCRIPT SMALL T;NFKC_CF=0074
-cp;1D4CA;dm=0075;Lower;na=MATHEMATICAL SCRIPT SMALL U;NFKC_CF=0075
-cp;1D4CB;dm=0076;Lower;na=MATHEMATICAL SCRIPT SMALL V;NFKC_CF=0076
-cp;1D4CC;dm=0077;Lower;na=MATHEMATICAL SCRIPT SMALL W;NFKC_CF=0077
-cp;1D4CD;dm=0078;Lower;na=MATHEMATICAL SCRIPT SMALL X;NFKC_CF=0078
-cp;1D4CE;dm=0079;Lower;na=MATHEMATICAL SCRIPT SMALL Y;NFKC_CF=0079
-cp;1D4CF;dm=007A;Lower;na=MATHEMATICAL SCRIPT SMALL Z;NFKC_CF=007A
+cp;1D4C5;dm=0070;Lower;na=MATHEMATICAL SCRIPT SMALL P;NFKC_CF=0070;NFKC_SCF=0070
+cp;1D4C6;dm=0071;Lower;na=MATHEMATICAL SCRIPT SMALL Q;NFKC_CF=0071;NFKC_SCF=0071
+cp;1D4C7;dm=0072;Lower;na=MATHEMATICAL SCRIPT SMALL R;NFKC_CF=0072;NFKC_SCF=0072
+cp;1D4C8;dm=0073;Lower;na=MATHEMATICAL SCRIPT SMALL S;NFKC_CF=0073;NFKC_SCF=0073
+cp;1D4C9;dm=0074;Lower;na=MATHEMATICAL SCRIPT SMALL T;NFKC_CF=0074;NFKC_SCF=0074
+cp;1D4CA;dm=0075;Lower;na=MATHEMATICAL SCRIPT SMALL U;NFKC_CF=0075;NFKC_SCF=0075
+cp;1D4CB;dm=0076;Lower;na=MATHEMATICAL SCRIPT SMALL V;NFKC_CF=0076;NFKC_SCF=0076
+cp;1D4CC;dm=0077;Lower;na=MATHEMATICAL SCRIPT SMALL W;NFKC_CF=0077;NFKC_SCF=0077
+cp;1D4CD;dm=0078;Lower;na=MATHEMATICAL SCRIPT SMALL X;NFKC_CF=0078;NFKC_SCF=0078
+cp;1D4CE;dm=0079;Lower;na=MATHEMATICAL SCRIPT SMALL Y;NFKC_CF=0079;NFKC_SCF=0079
+cp;1D4CF;dm=007A;Lower;na=MATHEMATICAL SCRIPT SMALL Z;NFKC_CF=007A;NFKC_SCF=007A
# Bold script symbols
cp;1D4D0;dm=0041;FC_NFKC=0061;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL A;NFKC_CF=0061;SB=UP;Upper
-cp;1D4D1;dm=0042;FC_NFKC=0062;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL B;NFKC_CF=0062;SB=UP;Upper
-cp;1D4D2;dm=0043;FC_NFKC=0063;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL C;NFKC_CF=0063;SB=UP;Upper
-cp;1D4D3;dm=0044;FC_NFKC=0064;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL D;NFKC_CF=0064;SB=UP;Upper
-cp;1D4D4;dm=0045;FC_NFKC=0065;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL E;NFKC_CF=0065;SB=UP;Upper
-cp;1D4D5;dm=0046;FC_NFKC=0066;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL F;NFKC_CF=0066;SB=UP;Upper
-cp;1D4D6;dm=0047;FC_NFKC=0067;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL G;NFKC_CF=0067;SB=UP;Upper
-cp;1D4D7;dm=0048;FC_NFKC=0068;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL H;NFKC_CF=0068;SB=UP;Upper
-cp;1D4D8;dm=0049;FC_NFKC=0069;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL I;NFKC_CF=0069;SB=UP;Upper
-cp;1D4D9;dm=004A;FC_NFKC=006A;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL J;NFKC_CF=006A;SB=UP;Upper
-cp;1D4DA;dm=004B;FC_NFKC=006B;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL K;NFKC_CF=006B;SB=UP;Upper
-cp;1D4DB;dm=004C;FC_NFKC=006C;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL L;NFKC_CF=006C;SB=UP;Upper
-cp;1D4DC;dm=004D;FC_NFKC=006D;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL M;NFKC_CF=006D;SB=UP;Upper
-cp;1D4DD;dm=004E;FC_NFKC=006E;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL N;NFKC_CF=006E;SB=UP;Upper
-cp;1D4DE;dm=004F;FC_NFKC=006F;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL O;NFKC_CF=006F;SB=UP;Upper
-cp;1D4DF;dm=0050;FC_NFKC=0070;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL P;NFKC_CF=0070;SB=UP;Upper
-cp;1D4E0;dm=0051;FC_NFKC=0071;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL Q;NFKC_CF=0071;SB=UP;Upper
-cp;1D4E1;dm=0052;FC_NFKC=0072;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL R;NFKC_CF=0072;SB=UP;Upper
-cp;1D4E2;dm=0053;FC_NFKC=0073;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL S;NFKC_CF=0073;SB=UP;Upper
-cp;1D4E3;dm=0054;FC_NFKC=0074;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL T;NFKC_CF=0074;SB=UP;Upper
-cp;1D4E4;dm=0055;FC_NFKC=0075;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL U;NFKC_CF=0075;SB=UP;Upper
-cp;1D4E5;dm=0056;FC_NFKC=0076;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL V;NFKC_CF=0076;SB=UP;Upper
-cp;1D4E6;dm=0057;FC_NFKC=0077;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL W;NFKC_CF=0077;SB=UP;Upper
-cp;1D4E7;dm=0058;FC_NFKC=0078;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL X;NFKC_CF=0078;SB=UP;Upper
-cp;1D4E8;dm=0059;FC_NFKC=0079;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL Y;NFKC_CF=0079;SB=UP;Upper
-cp;1D4E9;dm=005A;FC_NFKC=007A;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL Z;NFKC_CF=007A;SB=UP;Upper
+cp;1D4D1;dm=0042;FC_NFKC=0062;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL B;NFKC_CF=0062;NFKC_SCF=0062;SB=UP;Upper
+cp;1D4D2;dm=0043;FC_NFKC=0063;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL C;NFKC_CF=0063;NFKC_SCF=0063;SB=UP;Upper
+cp;1D4D3;dm=0044;FC_NFKC=0064;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL D;NFKC_CF=0064;NFKC_SCF=0064;SB=UP;Upper
+cp;1D4D4;dm=0045;FC_NFKC=0065;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL E;NFKC_CF=0065;NFKC_SCF=0065;SB=UP;Upper
+cp;1D4D5;dm=0046;FC_NFKC=0066;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL F;NFKC_CF=0066;NFKC_SCF=0066;SB=UP;Upper
+cp;1D4D6;dm=0047;FC_NFKC=0067;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL G;NFKC_CF=0067;NFKC_SCF=0067;SB=UP;Upper
+cp;1D4D7;dm=0048;FC_NFKC=0068;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL H;NFKC_CF=0068;NFKC_SCF=0068;SB=UP;Upper
+cp;1D4D8;dm=0049;FC_NFKC=0069;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL I;NFKC_CF=0069;NFKC_SCF=0069;SB=UP;Upper
+cp;1D4D9;dm=004A;FC_NFKC=006A;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL J;NFKC_CF=006A;NFKC_SCF=006A;SB=UP;Upper
+cp;1D4DA;dm=004B;FC_NFKC=006B;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL K;NFKC_CF=006B;NFKC_SCF=006B;SB=UP;Upper
+cp;1D4DB;dm=004C;FC_NFKC=006C;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL L;NFKC_CF=006C;NFKC_SCF=006C;SB=UP;Upper
+cp;1D4DC;dm=004D;FC_NFKC=006D;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL M;NFKC_CF=006D;NFKC_SCF=006D;SB=UP;Upper
+cp;1D4DD;dm=004E;FC_NFKC=006E;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL N;NFKC_CF=006E;NFKC_SCF=006E;SB=UP;Upper
+cp;1D4DE;dm=004F;FC_NFKC=006F;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL O;NFKC_CF=006F;NFKC_SCF=006F;SB=UP;Upper
+cp;1D4DF;dm=0050;FC_NFKC=0070;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL P;NFKC_CF=0070;NFKC_SCF=0070;SB=UP;Upper
+cp;1D4E0;dm=0051;FC_NFKC=0071;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL Q;NFKC_CF=0071;NFKC_SCF=0071;SB=UP;Upper
+cp;1D4E1;dm=0052;FC_NFKC=0072;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL R;NFKC_CF=0072;NFKC_SCF=0072;SB=UP;Upper
+cp;1D4E2;dm=0053;FC_NFKC=0073;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL S;NFKC_CF=0073;NFKC_SCF=0073;SB=UP;Upper
+cp;1D4E3;dm=0054;FC_NFKC=0074;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL T;NFKC_CF=0074;NFKC_SCF=0074;SB=UP;Upper
+cp;1D4E4;dm=0055;FC_NFKC=0075;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL U;NFKC_CF=0075;NFKC_SCF=0075;SB=UP;Upper
+cp;1D4E5;dm=0056;FC_NFKC=0076;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL V;NFKC_CF=0076;NFKC_SCF=0076;SB=UP;Upper
+cp;1D4E6;dm=0057;FC_NFKC=0077;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL W;NFKC_CF=0077;NFKC_SCF=0077;SB=UP;Upper
+cp;1D4E7;dm=0058;FC_NFKC=0078;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL X;NFKC_CF=0078;NFKC_SCF=0078;SB=UP;Upper
+cp;1D4E8;dm=0059;FC_NFKC=0079;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL Y;NFKC_CF=0079;NFKC_SCF=0079;SB=UP;Upper
+cp;1D4E9;dm=005A;FC_NFKC=007A;gc=Lu;na=MATHEMATICAL BOLD SCRIPT CAPITAL Z;NFKC_CF=007A;NFKC_SCF=007A;SB=UP;Upper
cp;1D4EA;dm=0061;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL A;NFKC_CF=0061
-cp;1D4EB;dm=0062;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL B;NFKC_CF=0062
-cp;1D4EC;dm=0063;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL C;NFKC_CF=0063
-cp;1D4ED;dm=0064;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL D;NFKC_CF=0064
-cp;1D4EE;dm=0065;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL E;NFKC_CF=0065
-cp;1D4EF;dm=0066;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL F;NFKC_CF=0066
-cp;1D4F0;dm=0067;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL G;NFKC_CF=0067
-cp;1D4F1;dm=0068;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL H;NFKC_CF=0068
-cp;1D4F2;dm=0069;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL I;NFKC_CF=0069;SD
-cp;1D4F3;dm=006A;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL J;NFKC_CF=006A;SD
-cp;1D4F4;dm=006B;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL K;NFKC_CF=006B
-cp;1D4F5;dm=006C;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL L;NFKC_CF=006C
-cp;1D4F6;dm=006D;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL M;NFKC_CF=006D
-cp;1D4F7;dm=006E;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL N;NFKC_CF=006E
-cp;1D4F8;dm=006F;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL O;NFKC_CF=006F
-cp;1D4F9;dm=0070;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL P;NFKC_CF=0070
-cp;1D4FA;dm=0071;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL Q;NFKC_CF=0071
-cp;1D4FB;dm=0072;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL R;NFKC_CF=0072
-cp;1D4FC;dm=0073;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL S;NFKC_CF=0073
-cp;1D4FD;dm=0074;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL T;NFKC_CF=0074
-cp;1D4FE;dm=0075;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL U;NFKC_CF=0075
-cp;1D4FF;dm=0076;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL V;NFKC_CF=0076
-cp;1D500;dm=0077;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL W;NFKC_CF=0077
-cp;1D501;dm=0078;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL X;NFKC_CF=0078
-cp;1D502;dm=0079;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL Y;NFKC_CF=0079
-cp;1D503;dm=007A;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL Z;NFKC_CF=007A
+cp;1D4EB;dm=0062;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL B;NFKC_CF=0062;NFKC_SCF=0062
+cp;1D4EC;dm=0063;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL C;NFKC_CF=0063;NFKC_SCF=0063
+cp;1D4ED;dm=0064;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL D;NFKC_CF=0064;NFKC_SCF=0064
+cp;1D4EE;dm=0065;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL E;NFKC_CF=0065;NFKC_SCF=0065
+cp;1D4EF;dm=0066;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL F;NFKC_CF=0066;NFKC_SCF=0066
+cp;1D4F0;dm=0067;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL G;NFKC_CF=0067;NFKC_SCF=0067
+cp;1D4F1;dm=0068;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL H;NFKC_CF=0068;NFKC_SCF=0068
+cp;1D4F2;dm=0069;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL I;NFKC_CF=0069;NFKC_SCF=0069;SD
+cp;1D4F3;dm=006A;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL J;NFKC_CF=006A;NFKC_SCF=006A;SD
+cp;1D4F4;dm=006B;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL K;NFKC_CF=006B;NFKC_SCF=006B
+cp;1D4F5;dm=006C;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL L;NFKC_CF=006C;NFKC_SCF=006C
+cp;1D4F6;dm=006D;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL M;NFKC_CF=006D;NFKC_SCF=006D
+cp;1D4F7;dm=006E;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL N;NFKC_CF=006E;NFKC_SCF=006E
+cp;1D4F8;dm=006F;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL O;NFKC_CF=006F;NFKC_SCF=006F
+cp;1D4F9;dm=0070;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL P;NFKC_CF=0070;NFKC_SCF=0070
+cp;1D4FA;dm=0071;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL Q;NFKC_CF=0071;NFKC_SCF=0071
+cp;1D4FB;dm=0072;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL R;NFKC_CF=0072;NFKC_SCF=0072
+cp;1D4FC;dm=0073;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL S;NFKC_CF=0073;NFKC_SCF=0073
+cp;1D4FD;dm=0074;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL T;NFKC_CF=0074;NFKC_SCF=0074
+cp;1D4FE;dm=0075;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL U;NFKC_CF=0075;NFKC_SCF=0075
+cp;1D4FF;dm=0076;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL V;NFKC_CF=0076;NFKC_SCF=0076
+cp;1D500;dm=0077;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL W;NFKC_CF=0077;NFKC_SCF=0077
+cp;1D501;dm=0078;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL X;NFKC_CF=0078;NFKC_SCF=0078
+cp;1D502;dm=0079;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL Y;NFKC_CF=0079;NFKC_SCF=0079
+cp;1D503;dm=007A;Lower;na=MATHEMATICAL BOLD SCRIPT SMALL Z;NFKC_CF=007A;NFKC_SCF=007A
# Fraktur symbols
cp;1D504;dm=0041;FC_NFKC=0061;gc=Lu;na=MATHEMATICAL FRAKTUR CAPITAL A;NFKC_CF=0061;SB=UP;Upper
-cp;1D505;dm=0042;FC_NFKC=0062;gc=Lu;na=MATHEMATICAL FRAKTUR CAPITAL B;NFKC_CF=0062;SB=UP;Upper
+cp;1D505;dm=0042;FC_NFKC=0062;gc=Lu;na=MATHEMATICAL FRAKTUR CAPITAL B;NFKC_CF=0062;NFKC_SCF=0062;SB=UP;Upper
unassigned;1D506
-cp;1D507;dm=0044;FC_NFKC=0064;gc=Lu;na=MATHEMATICAL FRAKTUR CAPITAL D;NFKC_CF=0064;SB=UP;Upper
-cp;1D508;dm=0045;FC_NFKC=0065;gc=Lu;na=MATHEMATICAL FRAKTUR CAPITAL E;NFKC_CF=0065;SB=UP;Upper
-cp;1D509;dm=0046;FC_NFKC=0066;gc=Lu;na=MATHEMATICAL FRAKTUR CAPITAL F;NFKC_CF=0066;SB=UP;Upper
-cp;1D50A;dm=0047;FC_NFKC=0067;gc=Lu;na=MATHEMATICAL FRAKTUR CAPITAL G;NFKC_CF=0067;SB=UP;Upper
+cp;1D507;dm=0044;FC_NFKC=0064;gc=Lu;na=MATHEMATICAL FRAKTUR CAPITAL D;NFKC_CF=0064;NFKC_SCF=0064;SB=UP;Upper
+cp;1D508;dm=0045;FC_NFKC=0065;gc=Lu;na=MATHEMATICAL FRAKTUR CAPITAL E;NFKC_CF=0065;NFKC_SCF=0065;SB=UP;Upper
+cp;1D509;dm=0046;FC_NFKC=0066;gc=Lu;na=MATHEMATICAL FRAKTUR CAPITAL F;NFKC_CF=0066;NFKC_SCF=0066;SB=UP;Upper
+cp;1D50A;dm=0047;FC_NFKC=0067;gc=Lu;na=MATHEMATICAL FRAKTUR CAPITAL G;NFKC_CF=0067;NFKC_SCF=0067;SB=UP;Upper
unassigned;1D50B..1D50C
-cp;1D50D;dm=004A;FC_NFKC=006A;gc=Lu;na=MATHEMATICAL FRAKTUR CAPITAL J;NFKC_CF=006A;SB=UP;Upper
-cp;1D50E;dm=004B;FC_NFKC=006B;gc=Lu;na=MATHEMATICAL FRAKTUR CAPITAL K;NFKC_CF=006B;SB=UP;Upper
-cp;1D50F;dm=004C;FC_NFKC=006C;gc=Lu;na=MATHEMATICAL FRAKTUR CAPITAL L;NFKC_CF=006C;SB=UP;Upper
-cp;1D510;dm=004D;FC_NFKC=006D;gc=Lu;na=MATHEMATICAL FRAKTUR CAPITAL M;NFKC_CF=006D;SB=UP;Upper
-cp;1D511;dm=004E;FC_NFKC=006E;gc=Lu;na=MATHEMATICAL FRAKTUR CAPITAL N;NFKC_CF=006E;SB=UP;Upper
-cp;1D512;dm=004F;FC_NFKC=006F;gc=Lu;na=MATHEMATICAL FRAKTUR CAPITAL O;NFKC_CF=006F;SB=UP;Upper
-cp;1D513;dm=0050;FC_NFKC=0070;gc=Lu;na=MATHEMATICAL FRAKTUR CAPITAL P;NFKC_CF=0070;SB=UP;Upper
-cp;1D514;dm=0051;FC_NFKC=0071;gc=Lu;na=MATHEMATICAL FRAKTUR CAPITAL Q;NFKC_CF=0071;SB=UP;Upper
+cp;1D50D;dm=004A;FC_NFKC=006A;gc=Lu;na=MATHEMATICAL FRAKTUR CAPITAL J;NFKC_CF=006A;NFKC_SCF=006A;SB=UP;Upper
+cp;1D50E;dm=004B;FC_NFKC=006B;gc=Lu;na=MATHEMATICAL FRAKTUR CAPITAL K;NFKC_CF=006B;NFKC_SCF=006B;SB=UP;Upper
+cp;1D50F;dm=004C;FC_NFKC=006C;gc=Lu;na=MATHEMATICAL FRAKTUR CAPITAL L;NFKC_CF=006C;NFKC_SCF=006C;SB=UP;Upper
+cp;1D510;dm=004D;FC_NFKC=006D;gc=Lu;na=MATHEMATICAL FRAKTUR CAPITAL M;NFKC_CF=006D;NFKC_SCF=006D;SB=UP;Upper
+cp;1D511;dm=004E;FC_NFKC=006E;gc=Lu;na=MATHEMATICAL FRAKTUR CAPITAL N;NFKC_CF=006E;NFKC_SCF=006E;SB=UP;Upper
+cp;1D512;dm=004F;FC_NFKC=006F;gc=Lu;na=MATHEMATICAL FRAKTUR CAPITAL O;NFKC_CF=006F;NFKC_SCF=006F;SB=UP;Upper
+cp;1D513;dm=0050;FC_NFKC=0070;gc=Lu;na=MATHEMATICAL FRAKTUR CAPITAL P;NFKC_CF=0070;NFKC_SCF=0070;SB=UP;Upper
+cp;1D514;dm=0051;FC_NFKC=0071;gc=Lu;na=MATHEMATICAL FRAKTUR CAPITAL Q;NFKC_CF=0071;NFKC_SCF=0071;SB=UP;Upper
unassigned;1D515
-cp;1D516;dm=0053;FC_NFKC=0073;gc=Lu;na=MATHEMATICAL FRAKTUR CAPITAL S;NFKC_CF=0073;SB=UP;Upper
-cp;1D517;dm=0054;FC_NFKC=0074;gc=Lu;na=MATHEMATICAL FRAKTUR CAPITAL T;NFKC_CF=0074;SB=UP;Upper
-cp;1D518;dm=0055;FC_NFKC=0075;gc=Lu;na=MATHEMATICAL FRAKTUR CAPITAL U;NFKC_CF=0075;SB=UP;Upper
-cp;1D519;dm=0056;FC_NFKC=0076;gc=Lu;na=MATHEMATICAL FRAKTUR CAPITAL V;NFKC_CF=0076;SB=UP;Upper
-cp;1D51A;dm=0057;FC_NFKC=0077;gc=Lu;na=MATHEMATICAL FRAKTUR CAPITAL W;NFKC_CF=0077;SB=UP;Upper
-cp;1D51B;dm=0058;FC_NFKC=0078;gc=Lu;na=MATHEMATICAL FRAKTUR CAPITAL X;NFKC_CF=0078;SB=UP;Upper
-cp;1D51C;dm=0059;FC_NFKC=0079;gc=Lu;na=MATHEMATICAL FRAKTUR CAPITAL Y;NFKC_CF=0079;SB=UP;Upper
+cp;1D516;dm=0053;FC_NFKC=0073;gc=Lu;na=MATHEMATICAL FRAKTUR CAPITAL S;NFKC_CF=0073;NFKC_SCF=0073;SB=UP;Upper
+cp;1D517;dm=0054;FC_NFKC=0074;gc=Lu;na=MATHEMATICAL FRAKTUR CAPITAL T;NFKC_CF=0074;NFKC_SCF=0074;SB=UP;Upper
+cp;1D518;dm=0055;FC_NFKC=0075;gc=Lu;na=MATHEMATICAL FRAKTUR CAPITAL U;NFKC_CF=0075;NFKC_SCF=0075;SB=UP;Upper
+cp;1D519;dm=0056;FC_NFKC=0076;gc=Lu;na=MATHEMATICAL FRAKTUR CAPITAL V;NFKC_CF=0076;NFKC_SCF=0076;SB=UP;Upper
+cp;1D51A;dm=0057;FC_NFKC=0077;gc=Lu;na=MATHEMATICAL FRAKTUR CAPITAL W;NFKC_CF=0077;NFKC_SCF=0077;SB=UP;Upper
+cp;1D51B;dm=0058;FC_NFKC=0078;gc=Lu;na=MATHEMATICAL FRAKTUR CAPITAL X;NFKC_CF=0078;NFKC_SCF=0078;SB=UP;Upper
+cp;1D51C;dm=0059;FC_NFKC=0079;gc=Lu;na=MATHEMATICAL FRAKTUR CAPITAL Y;NFKC_CF=0079;NFKC_SCF=0079;SB=UP;Upper
unassigned;1D51D
cp;1D51E;dm=0061;Lower;na=MATHEMATICAL FRAKTUR SMALL A;NFKC_CF=0061
-cp;1D51F;dm=0062;Lower;na=MATHEMATICAL FRAKTUR SMALL B;NFKC_CF=0062
-cp;1D520;dm=0063;Lower;na=MATHEMATICAL FRAKTUR SMALL C;NFKC_CF=0063
-cp;1D521;dm=0064;Lower;na=MATHEMATICAL FRAKTUR SMALL D;NFKC_CF=0064
-cp;1D522;dm=0065;Lower;na=MATHEMATICAL FRAKTUR SMALL E;NFKC_CF=0065
-cp;1D523;dm=0066;Lower;na=MATHEMATICAL FRAKTUR SMALL F;NFKC_CF=0066
-cp;1D524;dm=0067;Lower;na=MATHEMATICAL FRAKTUR SMALL G;NFKC_CF=0067
-cp;1D525;dm=0068;Lower;na=MATHEMATICAL FRAKTUR SMALL H;NFKC_CF=0068
-cp;1D526;dm=0069;Lower;na=MATHEMATICAL FRAKTUR SMALL I;NFKC_CF=0069;SD
-cp;1D527;dm=006A;Lower;na=MATHEMATICAL FRAKTUR SMALL J;NFKC_CF=006A;SD
-cp;1D528;dm=006B;Lower;na=MATHEMATICAL FRAKTUR SMALL K;NFKC_CF=006B
-cp;1D529;dm=006C;Lower;na=MATHEMATICAL FRAKTUR SMALL L;NFKC_CF=006C
-cp;1D52A;dm=006D;Lower;na=MATHEMATICAL FRAKTUR SMALL M;NFKC_CF=006D
-cp;1D52B;dm=006E;Lower;na=MATHEMATICAL FRAKTUR SMALL N;NFKC_CF=006E
-cp;1D52C;dm=006F;Lower;na=MATHEMATICAL FRAKTUR SMALL O;NFKC_CF=006F
-cp;1D52D;dm=0070;Lower;na=MATHEMATICAL FRAKTUR SMALL P;NFKC_CF=0070
-cp;1D52E;dm=0071;Lower;na=MATHEMATICAL FRAKTUR SMALL Q;NFKC_CF=0071
-cp;1D52F;dm=0072;Lower;na=MATHEMATICAL FRAKTUR SMALL R;NFKC_CF=0072
-cp;1D530;dm=0073;Lower;na=MATHEMATICAL FRAKTUR SMALL S;NFKC_CF=0073
-cp;1D531;dm=0074;Lower;na=MATHEMATICAL FRAKTUR SMALL T;NFKC_CF=0074
-cp;1D532;dm=0075;Lower;na=MATHEMATICAL FRAKTUR SMALL U;NFKC_CF=0075
-cp;1D533;dm=0076;Lower;na=MATHEMATICAL FRAKTUR SMALL V;NFKC_CF=0076
-cp;1D534;dm=0077;Lower;na=MATHEMATICAL FRAKTUR SMALL W;NFKC_CF=0077
-cp;1D535;dm=0078;Lower;na=MATHEMATICAL FRAKTUR SMALL X;NFKC_CF=0078
-cp;1D536;dm=0079;Lower;na=MATHEMATICAL FRAKTUR SMALL Y;NFKC_CF=0079
-cp;1D537;dm=007A;Lower;na=MATHEMATICAL FRAKTUR SMALL Z;NFKC_CF=007A
+cp;1D51F;dm=0062;Lower;na=MATHEMATICAL FRAKTUR SMALL B;NFKC_CF=0062;NFKC_SCF=0062
+cp;1D520;dm=0063;Lower;na=MATHEMATICAL FRAKTUR SMALL C;NFKC_CF=0063;NFKC_SCF=0063
+cp;1D521;dm=0064;Lower;na=MATHEMATICAL FRAKTUR SMALL D;NFKC_CF=0064;NFKC_SCF=0064
+cp;1D522;dm=0065;Lower;na=MATHEMATICAL FRAKTUR SMALL E;NFKC_CF=0065;NFKC_SCF=0065
+cp;1D523;dm=0066;Lower;na=MATHEMATICAL FRAKTUR SMALL F;NFKC_CF=0066;NFKC_SCF=0066
+cp;1D524;dm=0067;Lower;na=MATHEMATICAL FRAKTUR SMALL G;NFKC_CF=0067;NFKC_SCF=0067
+cp;1D525;dm=0068;Lower;na=MATHEMATICAL FRAKTUR SMALL H;NFKC_CF=0068;NFKC_SCF=0068
+cp;1D526;dm=0069;Lower;na=MATHEMATICAL FRAKTUR SMALL I;NFKC_CF=0069;NFKC_SCF=0069;SD
+cp;1D527;dm=006A;Lower;na=MATHEMATICAL FRAKTUR SMALL J;NFKC_CF=006A;NFKC_SCF=006A;SD
+cp;1D528;dm=006B;Lower;na=MATHEMATICAL FRAKTUR SMALL K;NFKC_CF=006B;NFKC_SCF=006B
+cp;1D529;dm=006C;Lower;na=MATHEMATICAL FRAKTUR SMALL L;NFKC_CF=006C;NFKC_SCF=006C
+cp;1D52A;dm=006D;Lower;na=MATHEMATICAL FRAKTUR SMALL M;NFKC_CF=006D;NFKC_SCF=006D
+cp;1D52B;dm=006E;Lower;na=MATHEMATICAL FRAKTUR SMALL N;NFKC_CF=006E;NFKC_SCF=006E
+cp;1D52C;dm=006F;Lower;na=MATHEMATICAL FRAKTUR SMALL O;NFKC_CF=006F;NFKC_SCF=006F
+cp;1D52D;dm=0070;Lower;na=MATHEMATICAL FRAKTUR SMALL P;NFKC_CF=0070;NFKC_SCF=0070
+cp;1D52E;dm=0071;Lower;na=MATHEMATICAL FRAKTUR SMALL Q;NFKC_CF=0071;NFKC_SCF=0071
+cp;1D52F;dm=0072;Lower;na=MATHEMATICAL FRAKTUR SMALL R;NFKC_CF=0072;NFKC_SCF=0072
+cp;1D530;dm=0073;Lower;na=MATHEMATICAL FRAKTUR SMALL S;NFKC_CF=0073;NFKC_SCF=0073
+cp;1D531;dm=0074;Lower;na=MATHEMATICAL FRAKTUR SMALL T;NFKC_CF=0074;NFKC_SCF=0074
+cp;1D532;dm=0075;Lower;na=MATHEMATICAL FRAKTUR SMALL U;NFKC_CF=0075;NFKC_SCF=0075
+cp;1D533;dm=0076;Lower;na=MATHEMATICAL FRAKTUR SMALL V;NFKC_CF=0076;NFKC_SCF=0076
+cp;1D534;dm=0077;Lower;na=MATHEMATICAL FRAKTUR SMALL W;NFKC_CF=0077;NFKC_SCF=0077
+cp;1D535;dm=0078;Lower;na=MATHEMATICAL FRAKTUR SMALL X;NFKC_CF=0078;NFKC_SCF=0078
+cp;1D536;dm=0079;Lower;na=MATHEMATICAL FRAKTUR SMALL Y;NFKC_CF=0079;NFKC_SCF=0079
+cp;1D537;dm=007A;Lower;na=MATHEMATICAL FRAKTUR SMALL Z;NFKC_CF=007A;NFKC_SCF=007A
# Double-struck symbols
cp;1D538;dm=0041;FC_NFKC=0061;gc=Lu;na=MATHEMATICAL DOUBLE-STRUCK CAPITAL A;NFKC_CF=0061;SB=UP;Upper
-cp;1D539;dm=0042;FC_NFKC=0062;gc=Lu;na=MATHEMATICAL DOUBLE-STRUCK CAPITAL B;NFKC_CF=0062;SB=UP;Upper
+cp;1D539;dm=0042;FC_NFKC=0062;gc=Lu;na=MATHEMATICAL DOUBLE-STRUCK CAPITAL B;NFKC_CF=0062;NFKC_SCF=0062;SB=UP;Upper
unassigned;1D53A
-cp;1D53B;dm=0044;FC_NFKC=0064;gc=Lu;na=MATHEMATICAL DOUBLE-STRUCK CAPITAL D;NFKC_CF=0064;SB=UP;Upper
-cp;1D53C;dm=0045;FC_NFKC=0065;gc=Lu;na=MATHEMATICAL DOUBLE-STRUCK CAPITAL E;NFKC_CF=0065;SB=UP;Upper
-cp;1D53D;dm=0046;FC_NFKC=0066;gc=Lu;na=MATHEMATICAL DOUBLE-STRUCK CAPITAL F;NFKC_CF=0066;SB=UP;Upper
-cp;1D53E;dm=0047;FC_NFKC=0067;gc=Lu;na=MATHEMATICAL DOUBLE-STRUCK CAPITAL G;NFKC_CF=0067;SB=UP;Upper
+cp;1D53B;dm=0044;FC_NFKC=0064;gc=Lu;na=MATHEMATICAL DOUBLE-STRUCK CAPITAL D;NFKC_CF=0064;NFKC_SCF=0064;SB=UP;Upper
+cp;1D53C;dm=0045;FC_NFKC=0065;gc=Lu;na=MATHEMATICAL DOUBLE-STRUCK CAPITAL E;NFKC_CF=0065;NFKC_SCF=0065;SB=UP;Upper
+cp;1D53D;dm=0046;FC_NFKC=0066;gc=Lu;na=MATHEMATICAL DOUBLE-STRUCK CAPITAL F;NFKC_CF=0066;NFKC_SCF=0066;SB=UP;Upper
+cp;1D53E;dm=0047;FC_NFKC=0067;gc=Lu;na=MATHEMATICAL DOUBLE-STRUCK CAPITAL G;NFKC_CF=0067;NFKC_SCF=0067;SB=UP;Upper
unassigned;1D53F
-cp;1D540;dm=0049;FC_NFKC=0069;gc=Lu;na=MATHEMATICAL DOUBLE-STRUCK CAPITAL I;NFKC_CF=0069;SB=UP;Upper
-cp;1D541;dm=004A;FC_NFKC=006A;gc=Lu;na=MATHEMATICAL DOUBLE-STRUCK CAPITAL J;NFKC_CF=006A;SB=UP;Upper
-cp;1D542;dm=004B;FC_NFKC=006B;gc=Lu;na=MATHEMATICAL DOUBLE-STRUCK CAPITAL K;NFKC_CF=006B;SB=UP;Upper
-cp;1D543;dm=004C;FC_NFKC=006C;gc=Lu;na=MATHEMATICAL DOUBLE-STRUCK CAPITAL L;NFKC_CF=006C;SB=UP;Upper
-cp;1D544;dm=004D;FC_NFKC=006D;gc=Lu;na=MATHEMATICAL DOUBLE-STRUCK CAPITAL M;NFKC_CF=006D;SB=UP;Upper
+cp;1D540;dm=0049;FC_NFKC=0069;gc=Lu;na=MATHEMATICAL DOUBLE-STRUCK CAPITAL I;NFKC_CF=0069;NFKC_SCF=0069;SB=UP;Upper
+cp;1D541;dm=004A;FC_NFKC=006A;gc=Lu;na=MATHEMATICAL DOUBLE-STRUCK CAPITAL J;NFKC_CF=006A;NFKC_SCF=006A;SB=UP;Upper
+cp;1D542;dm=004B;FC_NFKC=006B;gc=Lu;na=MATHEMATICAL DOUBLE-STRUCK CAPITAL K;NFKC_CF=006B;NFKC_SCF=006B;SB=UP;Upper
+cp;1D543;dm=004C;FC_NFKC=006C;gc=Lu;na=MATHEMATICAL DOUBLE-STRUCK CAPITAL L;NFKC_CF=006C;NFKC_SCF=006C;SB=UP;Upper
+cp;1D544;dm=004D;FC_NFKC=006D;gc=Lu;na=MATHEMATICAL DOUBLE-STRUCK CAPITAL M;NFKC_CF=006D;NFKC_SCF=006D;SB=UP;Upper
unassigned;1D545
-cp;1D546;dm=004F;FC_NFKC=006F;gc=Lu;na=MATHEMATICAL DOUBLE-STRUCK CAPITAL O;NFKC_CF=006F;SB=UP;Upper
+cp;1D546;dm=004F;FC_NFKC=006F;gc=Lu;na=MATHEMATICAL DOUBLE-STRUCK CAPITAL O;NFKC_CF=006F;NFKC_SCF=006F;SB=UP;Upper
unassigned;1D547..1D549
-cp;1D54A;dm=0053;FC_NFKC=0073;gc=Lu;na=MATHEMATICAL DOUBLE-STRUCK CAPITAL S;NFKC_CF=0073;SB=UP;Upper
-cp;1D54B;dm=0054;FC_NFKC=0074;gc=Lu;na=MATHEMATICAL DOUBLE-STRUCK CAPITAL T;NFKC_CF=0074;SB=UP;Upper
-cp;1D54C;dm=0055;FC_NFKC=0075;gc=Lu;na=MATHEMATICAL DOUBLE-STRUCK CAPITAL U;NFKC_CF=0075;SB=UP;Upper
-cp;1D54D;dm=0056;FC_NFKC=0076;gc=Lu;na=MATHEMATICAL DOUBLE-STRUCK CAPITAL V;NFKC_CF=0076;SB=UP;Upper
-cp;1D54E;dm=0057;FC_NFKC=0077;gc=Lu;na=MATHEMATICAL DOUBLE-STRUCK CAPITAL W;NFKC_CF=0077;SB=UP;Upper
-cp;1D54F;dm=0058;FC_NFKC=0078;gc=Lu;na=MATHEMATICAL DOUBLE-STRUCK CAPITAL X;NFKC_CF=0078;SB=UP;Upper
-cp;1D550;dm=0059;FC_NFKC=0079;gc=Lu;na=MATHEMATICAL DOUBLE-STRUCK CAPITAL Y;NFKC_CF=0079;SB=UP;Upper
+cp;1D54A;dm=0053;FC_NFKC=0073;gc=Lu;na=MATHEMATICAL DOUBLE-STRUCK CAPITAL S;NFKC_CF=0073;NFKC_SCF=0073;SB=UP;Upper
+cp;1D54B;dm=0054;FC_NFKC=0074;gc=Lu;na=MATHEMATICAL DOUBLE-STRUCK CAPITAL T;NFKC_CF=0074;NFKC_SCF=0074;SB=UP;Upper
+cp;1D54C;dm=0055;FC_NFKC=0075;gc=Lu;na=MATHEMATICAL DOUBLE-STRUCK CAPITAL U;NFKC_CF=0075;NFKC_SCF=0075;SB=UP;Upper
+cp;1D54D;dm=0056;FC_NFKC=0076;gc=Lu;na=MATHEMATICAL DOUBLE-STRUCK CAPITAL V;NFKC_CF=0076;NFKC_SCF=0076;SB=UP;Upper
+cp;1D54E;dm=0057;FC_NFKC=0077;gc=Lu;na=MATHEMATICAL DOUBLE-STRUCK CAPITAL W;NFKC_CF=0077;NFKC_SCF=0077;SB=UP;Upper
+cp;1D54F;dm=0058;FC_NFKC=0078;gc=Lu;na=MATHEMATICAL DOUBLE-STRUCK CAPITAL X;NFKC_CF=0078;NFKC_SCF=0078;SB=UP;Upper
+cp;1D550;dm=0059;FC_NFKC=0079;gc=Lu;na=MATHEMATICAL DOUBLE-STRUCK CAPITAL Y;NFKC_CF=0079;NFKC_SCF=0079;SB=UP;Upper
unassigned;1D551
cp;1D552;dm=0061;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL A;NFKC_CF=0061
-cp;1D553;dm=0062;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL B;NFKC_CF=0062
-cp;1D554;dm=0063;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL C;NFKC_CF=0063
-cp;1D555;dm=0064;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL D;NFKC_CF=0064
-cp;1D556;dm=0065;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL E;NFKC_CF=0065
-cp;1D557;dm=0066;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL F;NFKC_CF=0066
-cp;1D558;dm=0067;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL G;NFKC_CF=0067
-cp;1D559;dm=0068;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL H;NFKC_CF=0068
-cp;1D55A;dm=0069;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL I;NFKC_CF=0069;SD
-cp;1D55B;dm=006A;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL J;NFKC_CF=006A;SD
-cp;1D55C;dm=006B;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL K;NFKC_CF=006B
-cp;1D55D;dm=006C;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL L;NFKC_CF=006C
-cp;1D55E;dm=006D;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL M;NFKC_CF=006D
-cp;1D55F;dm=006E;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL N;NFKC_CF=006E
-cp;1D560;dm=006F;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL O;NFKC_CF=006F
-cp;1D561;dm=0070;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL P;NFKC_CF=0070
-cp;1D562;dm=0071;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL Q;NFKC_CF=0071
-cp;1D563;dm=0072;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL R;NFKC_CF=0072
-cp;1D564;dm=0073;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL S;NFKC_CF=0073
-cp;1D565;dm=0074;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL T;NFKC_CF=0074
-cp;1D566;dm=0075;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL U;NFKC_CF=0075
-cp;1D567;dm=0076;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL V;NFKC_CF=0076
-cp;1D568;dm=0077;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL W;NFKC_CF=0077
-cp;1D569;dm=0078;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL X;NFKC_CF=0078
-cp;1D56A;dm=0079;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL Y;NFKC_CF=0079
-cp;1D56B;dm=007A;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL Z;NFKC_CF=007A
+cp;1D553;dm=0062;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL B;NFKC_CF=0062;NFKC_SCF=0062
+cp;1D554;dm=0063;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL C;NFKC_CF=0063;NFKC_SCF=0063
+cp;1D555;dm=0064;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL D;NFKC_CF=0064;NFKC_SCF=0064
+cp;1D556;dm=0065;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL E;NFKC_CF=0065;NFKC_SCF=0065
+cp;1D557;dm=0066;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL F;NFKC_CF=0066;NFKC_SCF=0066
+cp;1D558;dm=0067;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL G;NFKC_CF=0067;NFKC_SCF=0067
+cp;1D559;dm=0068;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL H;NFKC_CF=0068;NFKC_SCF=0068
+cp;1D55A;dm=0069;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL I;NFKC_CF=0069;NFKC_SCF=0069;SD
+cp;1D55B;dm=006A;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL J;NFKC_CF=006A;NFKC_SCF=006A;SD
+cp;1D55C;dm=006B;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL K;NFKC_CF=006B;NFKC_SCF=006B
+cp;1D55D;dm=006C;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL L;NFKC_CF=006C;NFKC_SCF=006C
+cp;1D55E;dm=006D;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL M;NFKC_CF=006D;NFKC_SCF=006D
+cp;1D55F;dm=006E;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL N;NFKC_CF=006E;NFKC_SCF=006E
+cp;1D560;dm=006F;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL O;NFKC_CF=006F;NFKC_SCF=006F
+cp;1D561;dm=0070;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL P;NFKC_CF=0070;NFKC_SCF=0070
+cp;1D562;dm=0071;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL Q;NFKC_CF=0071;NFKC_SCF=0071
+cp;1D563;dm=0072;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL R;NFKC_CF=0072;NFKC_SCF=0072
+cp;1D564;dm=0073;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL S;NFKC_CF=0073;NFKC_SCF=0073
+cp;1D565;dm=0074;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL T;NFKC_CF=0074;NFKC_SCF=0074
+cp;1D566;dm=0075;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL U;NFKC_CF=0075;NFKC_SCF=0075
+cp;1D567;dm=0076;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL V;NFKC_CF=0076;NFKC_SCF=0076
+cp;1D568;dm=0077;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL W;NFKC_CF=0077;NFKC_SCF=0077
+cp;1D569;dm=0078;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL X;NFKC_CF=0078;NFKC_SCF=0078
+cp;1D56A;dm=0079;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL Y;NFKC_CF=0079;NFKC_SCF=0079
+cp;1D56B;dm=007A;Lower;na=MATHEMATICAL DOUBLE-STRUCK SMALL Z;NFKC_CF=007A;NFKC_SCF=007A
# Bold Fraktur symbols
cp;1D56C;dm=0041;FC_NFKC=0061;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL A;NFKC_CF=0061;SB=UP;Upper
-cp;1D56D;dm=0042;FC_NFKC=0062;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL B;NFKC_CF=0062;SB=UP;Upper
-cp;1D56E;dm=0043;FC_NFKC=0063;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL C;NFKC_CF=0063;SB=UP;Upper
-cp;1D56F;dm=0044;FC_NFKC=0064;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL D;NFKC_CF=0064;SB=UP;Upper
-cp;1D570;dm=0045;FC_NFKC=0065;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL E;NFKC_CF=0065;SB=UP;Upper
-cp;1D571;dm=0046;FC_NFKC=0066;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL F;NFKC_CF=0066;SB=UP;Upper
-cp;1D572;dm=0047;FC_NFKC=0067;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL G;NFKC_CF=0067;SB=UP;Upper
-cp;1D573;dm=0048;FC_NFKC=0068;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL H;NFKC_CF=0068;SB=UP;Upper
-cp;1D574;dm=0049;FC_NFKC=0069;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL I;NFKC_CF=0069;SB=UP;Upper
-cp;1D575;dm=004A;FC_NFKC=006A;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL J;NFKC_CF=006A;SB=UP;Upper
-cp;1D576;dm=004B;FC_NFKC=006B;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL K;NFKC_CF=006B;SB=UP;Upper
-cp;1D577;dm=004C;FC_NFKC=006C;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL L;NFKC_CF=006C;SB=UP;Upper
-cp;1D578;dm=004D;FC_NFKC=006D;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL M;NFKC_CF=006D;SB=UP;Upper
-cp;1D579;dm=004E;FC_NFKC=006E;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL N;NFKC_CF=006E;SB=UP;Upper
-cp;1D57A;dm=004F;FC_NFKC=006F;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL O;NFKC_CF=006F;SB=UP;Upper
-cp;1D57B;dm=0050;FC_NFKC=0070;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL P;NFKC_CF=0070;SB=UP;Upper
-cp;1D57C;dm=0051;FC_NFKC=0071;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL Q;NFKC_CF=0071;SB=UP;Upper
-cp;1D57D;dm=0052;FC_NFKC=0072;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL R;NFKC_CF=0072;SB=UP;Upper
-cp;1D57E;dm=0053;FC_NFKC=0073;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL S;NFKC_CF=0073;SB=UP;Upper
-cp;1D57F;dm=0054;FC_NFKC=0074;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL T;NFKC_CF=0074;SB=UP;Upper
-cp;1D580;dm=0055;FC_NFKC=0075;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL U;NFKC_CF=0075;SB=UP;Upper
-cp;1D581;dm=0056;FC_NFKC=0076;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL V;NFKC_CF=0076;SB=UP;Upper
-cp;1D582;dm=0057;FC_NFKC=0077;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL W;NFKC_CF=0077;SB=UP;Upper
-cp;1D583;dm=0058;FC_NFKC=0078;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL X;NFKC_CF=0078;SB=UP;Upper
-cp;1D584;dm=0059;FC_NFKC=0079;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL Y;NFKC_CF=0079;SB=UP;Upper
-cp;1D585;dm=005A;FC_NFKC=007A;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL Z;NFKC_CF=007A;SB=UP;Upper
+cp;1D56D;dm=0042;FC_NFKC=0062;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL B;NFKC_CF=0062;NFKC_SCF=0062;SB=UP;Upper
+cp;1D56E;dm=0043;FC_NFKC=0063;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL C;NFKC_CF=0063;NFKC_SCF=0063;SB=UP;Upper
+cp;1D56F;dm=0044;FC_NFKC=0064;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL D;NFKC_CF=0064;NFKC_SCF=0064;SB=UP;Upper
+cp;1D570;dm=0045;FC_NFKC=0065;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL E;NFKC_CF=0065;NFKC_SCF=0065;SB=UP;Upper
+cp;1D571;dm=0046;FC_NFKC=0066;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL F;NFKC_CF=0066;NFKC_SCF=0066;SB=UP;Upper
+cp;1D572;dm=0047;FC_NFKC=0067;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL G;NFKC_CF=0067;NFKC_SCF=0067;SB=UP;Upper
+cp;1D573;dm=0048;FC_NFKC=0068;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL H;NFKC_CF=0068;NFKC_SCF=0068;SB=UP;Upper
+cp;1D574;dm=0049;FC_NFKC=0069;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL I;NFKC_CF=0069;NFKC_SCF=0069;SB=UP;Upper
+cp;1D575;dm=004A;FC_NFKC=006A;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL J;NFKC_CF=006A;NFKC_SCF=006A;SB=UP;Upper
+cp;1D576;dm=004B;FC_NFKC=006B;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL K;NFKC_CF=006B;NFKC_SCF=006B;SB=UP;Upper
+cp;1D577;dm=004C;FC_NFKC=006C;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL L;NFKC_CF=006C;NFKC_SCF=006C;SB=UP;Upper
+cp;1D578;dm=004D;FC_NFKC=006D;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL M;NFKC_CF=006D;NFKC_SCF=006D;SB=UP;Upper
+cp;1D579;dm=004E;FC_NFKC=006E;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL N;NFKC_CF=006E;NFKC_SCF=006E;SB=UP;Upper
+cp;1D57A;dm=004F;FC_NFKC=006F;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL O;NFKC_CF=006F;NFKC_SCF=006F;SB=UP;Upper
+cp;1D57B;dm=0050;FC_NFKC=0070;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL P;NFKC_CF=0070;NFKC_SCF=0070;SB=UP;Upper
+cp;1D57C;dm=0051;FC_NFKC=0071;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL Q;NFKC_CF=0071;NFKC_SCF=0071;SB=UP;Upper
+cp;1D57D;dm=0052;FC_NFKC=0072;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL R;NFKC_CF=0072;NFKC_SCF=0072;SB=UP;Upper
+cp;1D57E;dm=0053;FC_NFKC=0073;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL S;NFKC_CF=0073;NFKC_SCF=0073;SB=UP;Upper
+cp;1D57F;dm=0054;FC_NFKC=0074;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL T;NFKC_CF=0074;NFKC_SCF=0074;SB=UP;Upper
+cp;1D580;dm=0055;FC_NFKC=0075;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL U;NFKC_CF=0075;NFKC_SCF=0075;SB=UP;Upper
+cp;1D581;dm=0056;FC_NFKC=0076;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL V;NFKC_CF=0076;NFKC_SCF=0076;SB=UP;Upper
+cp;1D582;dm=0057;FC_NFKC=0077;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL W;NFKC_CF=0077;NFKC_SCF=0077;SB=UP;Upper
+cp;1D583;dm=0058;FC_NFKC=0078;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL X;NFKC_CF=0078;NFKC_SCF=0078;SB=UP;Upper
+cp;1D584;dm=0059;FC_NFKC=0079;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL Y;NFKC_CF=0079;NFKC_SCF=0079;SB=UP;Upper
+cp;1D585;dm=005A;FC_NFKC=007A;gc=Lu;na=MATHEMATICAL BOLD FRAKTUR CAPITAL Z;NFKC_CF=007A;NFKC_SCF=007A;SB=UP;Upper
cp;1D586;dm=0061;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL A;NFKC_CF=0061
-cp;1D587;dm=0062;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL B;NFKC_CF=0062
-cp;1D588;dm=0063;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL C;NFKC_CF=0063
-cp;1D589;dm=0064;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL D;NFKC_CF=0064
-cp;1D58A;dm=0065;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL E;NFKC_CF=0065
-cp;1D58B;dm=0066;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL F;NFKC_CF=0066
-cp;1D58C;dm=0067;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL G;NFKC_CF=0067
-cp;1D58D;dm=0068;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL H;NFKC_CF=0068
-cp;1D58E;dm=0069;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL I;NFKC_CF=0069;SD
-cp;1D58F;dm=006A;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL J;NFKC_CF=006A;SD
-cp;1D590;dm=006B;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL K;NFKC_CF=006B
-cp;1D591;dm=006C;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL L;NFKC_CF=006C
-cp;1D592;dm=006D;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL M;NFKC_CF=006D
-cp;1D593;dm=006E;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL N;NFKC_CF=006E
-cp;1D594;dm=006F;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL O;NFKC_CF=006F
-cp;1D595;dm=0070;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL P;NFKC_CF=0070
-cp;1D596;dm=0071;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL Q;NFKC_CF=0071
-cp;1D597;dm=0072;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL R;NFKC_CF=0072
-cp;1D598;dm=0073;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL S;NFKC_CF=0073
-cp;1D599;dm=0074;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL T;NFKC_CF=0074
-cp;1D59A;dm=0075;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL U;NFKC_CF=0075
-cp;1D59B;dm=0076;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL V;NFKC_CF=0076
-cp;1D59C;dm=0077;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL W;NFKC_CF=0077
-cp;1D59D;dm=0078;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL X;NFKC_CF=0078
-cp;1D59E;dm=0079;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL Y;NFKC_CF=0079
-cp;1D59F;dm=007A;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL Z;NFKC_CF=007A
+cp;1D587;dm=0062;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL B;NFKC_CF=0062;NFKC_SCF=0062
+cp;1D588;dm=0063;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL C;NFKC_CF=0063;NFKC_SCF=0063
+cp;1D589;dm=0064;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL D;NFKC_CF=0064;NFKC_SCF=0064
+cp;1D58A;dm=0065;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL E;NFKC_CF=0065;NFKC_SCF=0065
+cp;1D58B;dm=0066;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL F;NFKC_CF=0066;NFKC_SCF=0066
+cp;1D58C;dm=0067;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL G;NFKC_CF=0067;NFKC_SCF=0067
+cp;1D58D;dm=0068;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL H;NFKC_CF=0068;NFKC_SCF=0068
+cp;1D58E;dm=0069;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL I;NFKC_CF=0069;NFKC_SCF=0069;SD
+cp;1D58F;dm=006A;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL J;NFKC_CF=006A;NFKC_SCF=006A;SD
+cp;1D590;dm=006B;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL K;NFKC_CF=006B;NFKC_SCF=006B
+cp;1D591;dm=006C;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL L;NFKC_CF=006C;NFKC_SCF=006C
+cp;1D592;dm=006D;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL M;NFKC_CF=006D;NFKC_SCF=006D
+cp;1D593;dm=006E;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL N;NFKC_CF=006E;NFKC_SCF=006E
+cp;1D594;dm=006F;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL O;NFKC_CF=006F;NFKC_SCF=006F
+cp;1D595;dm=0070;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL P;NFKC_CF=0070;NFKC_SCF=0070
+cp;1D596;dm=0071;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL Q;NFKC_CF=0071;NFKC_SCF=0071
+cp;1D597;dm=0072;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL R;NFKC_CF=0072;NFKC_SCF=0072
+cp;1D598;dm=0073;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL S;NFKC_CF=0073;NFKC_SCF=0073
+cp;1D599;dm=0074;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL T;NFKC_CF=0074;NFKC_SCF=0074
+cp;1D59A;dm=0075;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL U;NFKC_CF=0075;NFKC_SCF=0075
+cp;1D59B;dm=0076;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL V;NFKC_CF=0076;NFKC_SCF=0076
+cp;1D59C;dm=0077;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL W;NFKC_CF=0077;NFKC_SCF=0077
+cp;1D59D;dm=0078;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL X;NFKC_CF=0078;NFKC_SCF=0078
+cp;1D59E;dm=0079;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL Y;NFKC_CF=0079;NFKC_SCF=0079
+cp;1D59F;dm=007A;Lower;na=MATHEMATICAL BOLD FRAKTUR SMALL Z;NFKC_CF=007A;NFKC_SCF=007A
# Sans-serif symbols
cp;1D5A0;dm=0041;FC_NFKC=0061;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL A;NFKC_CF=0061;SB=UP;Upper
-cp;1D5A1;dm=0042;FC_NFKC=0062;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL B;NFKC_CF=0062;SB=UP;Upper
-cp;1D5A2;dm=0043;FC_NFKC=0063;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL C;NFKC_CF=0063;SB=UP;Upper
-cp;1D5A3;dm=0044;FC_NFKC=0064;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL D;NFKC_CF=0064;SB=UP;Upper
-cp;1D5A4;dm=0045;FC_NFKC=0065;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL E;NFKC_CF=0065;SB=UP;Upper
-cp;1D5A5;dm=0046;FC_NFKC=0066;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL F;NFKC_CF=0066;SB=UP;Upper
-cp;1D5A6;dm=0047;FC_NFKC=0067;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL G;NFKC_CF=0067;SB=UP;Upper
-cp;1D5A7;dm=0048;FC_NFKC=0068;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL H;NFKC_CF=0068;SB=UP;Upper
-cp;1D5A8;dm=0049;FC_NFKC=0069;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL I;NFKC_CF=0069;SB=UP;Upper
-cp;1D5A9;dm=004A;FC_NFKC=006A;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL J;NFKC_CF=006A;SB=UP;Upper
-cp;1D5AA;dm=004B;FC_NFKC=006B;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL K;NFKC_CF=006B;SB=UP;Upper
-cp;1D5AB;dm=004C;FC_NFKC=006C;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL L;NFKC_CF=006C;SB=UP;Upper
-cp;1D5AC;dm=004D;FC_NFKC=006D;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL M;NFKC_CF=006D;SB=UP;Upper
-cp;1D5AD;dm=004E;FC_NFKC=006E;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL N;NFKC_CF=006E;SB=UP;Upper
-cp;1D5AE;dm=004F;FC_NFKC=006F;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL O;NFKC_CF=006F;SB=UP;Upper
-cp;1D5AF;dm=0050;FC_NFKC=0070;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL P;NFKC_CF=0070;SB=UP;Upper
-cp;1D5B0;dm=0051;FC_NFKC=0071;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL Q;NFKC_CF=0071;SB=UP;Upper
-cp;1D5B1;dm=0052;FC_NFKC=0072;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL R;NFKC_CF=0072;SB=UP;Upper
-cp;1D5B2;dm=0053;FC_NFKC=0073;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL S;NFKC_CF=0073;SB=UP;Upper
-cp;1D5B3;dm=0054;FC_NFKC=0074;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL T;NFKC_CF=0074;SB=UP;Upper
-cp;1D5B4;dm=0055;FC_NFKC=0075;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL U;NFKC_CF=0075;SB=UP;Upper
-cp;1D5B5;dm=0056;FC_NFKC=0076;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL V;NFKC_CF=0076;SB=UP;Upper
-cp;1D5B6;dm=0057;FC_NFKC=0077;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL W;NFKC_CF=0077;SB=UP;Upper
-cp;1D5B7;dm=0058;FC_NFKC=0078;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL X;NFKC_CF=0078;SB=UP;Upper
-cp;1D5B8;dm=0059;FC_NFKC=0079;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL Y;NFKC_CF=0079;SB=UP;Upper
-cp;1D5B9;dm=005A;FC_NFKC=007A;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL Z;NFKC_CF=007A;SB=UP;Upper
+cp;1D5A1;dm=0042;FC_NFKC=0062;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL B;NFKC_CF=0062;NFKC_SCF=0062;SB=UP;Upper
+cp;1D5A2;dm=0043;FC_NFKC=0063;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL C;NFKC_CF=0063;NFKC_SCF=0063;SB=UP;Upper
+cp;1D5A3;dm=0044;FC_NFKC=0064;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL D;NFKC_CF=0064;NFKC_SCF=0064;SB=UP;Upper
+cp;1D5A4;dm=0045;FC_NFKC=0065;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL E;NFKC_CF=0065;NFKC_SCF=0065;SB=UP;Upper
+cp;1D5A5;dm=0046;FC_NFKC=0066;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL F;NFKC_CF=0066;NFKC_SCF=0066;SB=UP;Upper
+cp;1D5A6;dm=0047;FC_NFKC=0067;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL G;NFKC_CF=0067;NFKC_SCF=0067;SB=UP;Upper
+cp;1D5A7;dm=0048;FC_NFKC=0068;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL H;NFKC_CF=0068;NFKC_SCF=0068;SB=UP;Upper
+cp;1D5A8;dm=0049;FC_NFKC=0069;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL I;NFKC_CF=0069;NFKC_SCF=0069;SB=UP;Upper
+cp;1D5A9;dm=004A;FC_NFKC=006A;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL J;NFKC_CF=006A;NFKC_SCF=006A;SB=UP;Upper
+cp;1D5AA;dm=004B;FC_NFKC=006B;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL K;NFKC_CF=006B;NFKC_SCF=006B;SB=UP;Upper
+cp;1D5AB;dm=004C;FC_NFKC=006C;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL L;NFKC_CF=006C;NFKC_SCF=006C;SB=UP;Upper
+cp;1D5AC;dm=004D;FC_NFKC=006D;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL M;NFKC_CF=006D;NFKC_SCF=006D;SB=UP;Upper
+cp;1D5AD;dm=004E;FC_NFKC=006E;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL N;NFKC_CF=006E;NFKC_SCF=006E;SB=UP;Upper
+cp;1D5AE;dm=004F;FC_NFKC=006F;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL O;NFKC_CF=006F;NFKC_SCF=006F;SB=UP;Upper
+cp;1D5AF;dm=0050;FC_NFKC=0070;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL P;NFKC_CF=0070;NFKC_SCF=0070;SB=UP;Upper
+cp;1D5B0;dm=0051;FC_NFKC=0071;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL Q;NFKC_CF=0071;NFKC_SCF=0071;SB=UP;Upper
+cp;1D5B1;dm=0052;FC_NFKC=0072;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL R;NFKC_CF=0072;NFKC_SCF=0072;SB=UP;Upper
+cp;1D5B2;dm=0053;FC_NFKC=0073;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL S;NFKC_CF=0073;NFKC_SCF=0073;SB=UP;Upper
+cp;1D5B3;dm=0054;FC_NFKC=0074;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL T;NFKC_CF=0074;NFKC_SCF=0074;SB=UP;Upper
+cp;1D5B4;dm=0055;FC_NFKC=0075;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL U;NFKC_CF=0075;NFKC_SCF=0075;SB=UP;Upper
+cp;1D5B5;dm=0056;FC_NFKC=0076;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL V;NFKC_CF=0076;NFKC_SCF=0076;SB=UP;Upper
+cp;1D5B6;dm=0057;FC_NFKC=0077;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL W;NFKC_CF=0077;NFKC_SCF=0077;SB=UP;Upper
+cp;1D5B7;dm=0058;FC_NFKC=0078;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL X;NFKC_CF=0078;NFKC_SCF=0078;SB=UP;Upper
+cp;1D5B8;dm=0059;FC_NFKC=0079;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL Y;NFKC_CF=0079;NFKC_SCF=0079;SB=UP;Upper
+cp;1D5B9;dm=005A;FC_NFKC=007A;gc=Lu;na=MATHEMATICAL SANS-SERIF CAPITAL Z;NFKC_CF=007A;NFKC_SCF=007A;SB=UP;Upper
cp;1D5BA;dm=0061;Lower;na=MATHEMATICAL SANS-SERIF SMALL A;NFKC_CF=0061
-cp;1D5BB;dm=0062;Lower;na=MATHEMATICAL SANS-SERIF SMALL B;NFKC_CF=0062
-cp;1D5BC;dm=0063;Lower;na=MATHEMATICAL SANS-SERIF SMALL C;NFKC_CF=0063
-cp;1D5BD;dm=0064;Lower;na=MATHEMATICAL SANS-SERIF SMALL D;NFKC_CF=0064
-cp;1D5BE;dm=0065;Lower;na=MATHEMATICAL SANS-SERIF SMALL E;NFKC_CF=0065
-cp;1D5BF;dm=0066;Lower;na=MATHEMATICAL SANS-SERIF SMALL F;NFKC_CF=0066
-cp;1D5C0;dm=0067;Lower;na=MATHEMATICAL SANS-SERIF SMALL G;NFKC_CF=0067
-cp;1D5C1;dm=0068;Lower;na=MATHEMATICAL SANS-SERIF SMALL H;NFKC_CF=0068
-cp;1D5C2;dm=0069;Lower;na=MATHEMATICAL SANS-SERIF SMALL I;NFKC_CF=0069;SD
-cp;1D5C3;dm=006A;Lower;na=MATHEMATICAL SANS-SERIF SMALL J;NFKC_CF=006A;SD
-cp;1D5C4;dm=006B;Lower;na=MATHEMATICAL SANS-SERIF SMALL K;NFKC_CF=006B
-cp;1D5C5;dm=006C;Lower;na=MATHEMATICAL SANS-SERIF SMALL L;NFKC_CF=006C
-cp;1D5C6;dm=006D;Lower;na=MATHEMATICAL SANS-SERIF SMALL M;NFKC_CF=006D
-cp;1D5C7;dm=006E;Lower;na=MATHEMATICAL SANS-SERIF SMALL N;NFKC_CF=006E
-cp;1D5C8;dm=006F;Lower;na=MATHEMATICAL SANS-SERIF SMALL O;NFKC_CF=006F
-cp;1D5C9;dm=0070;Lower;na=MATHEMATICAL SANS-SERIF SMALL P;NFKC_CF=0070
-cp;1D5CA;dm=0071;Lower;na=MATHEMATICAL SANS-SERIF SMALL Q;NFKC_CF=0071
-cp;1D5CB;dm=0072;Lower;na=MATHEMATICAL SANS-SERIF SMALL R;NFKC_CF=0072
-cp;1D5CC;dm=0073;Lower;na=MATHEMATICAL SANS-SERIF SMALL S;NFKC_CF=0073
-cp;1D5CD;dm=0074;Lower;na=MATHEMATICAL SANS-SERIF SMALL T;NFKC_CF=0074
-cp;1D5CE;dm=0075;Lower;na=MATHEMATICAL SANS-SERIF SMALL U;NFKC_CF=0075
-cp;1D5CF;dm=0076;Lower;na=MATHEMATICAL SANS-SERIF SMALL V;NFKC_CF=0076
-cp;1D5D0;dm=0077;Lower;na=MATHEMATICAL SANS-SERIF SMALL W;NFKC_CF=0077
-cp;1D5D1;dm=0078;Lower;na=MATHEMATICAL SANS-SERIF SMALL X;NFKC_CF=0078
-cp;1D5D2;dm=0079;Lower;na=MATHEMATICAL SANS-SERIF SMALL Y;NFKC_CF=0079
-cp;1D5D3;dm=007A;Lower;na=MATHEMATICAL SANS-SERIF SMALL Z;NFKC_CF=007A
+cp;1D5BB;dm=0062;Lower;na=MATHEMATICAL SANS-SERIF SMALL B;NFKC_CF=0062;NFKC_SCF=0062
+cp;1D5BC;dm=0063;Lower;na=MATHEMATICAL SANS-SERIF SMALL C;NFKC_CF=0063;NFKC_SCF=0063
+cp;1D5BD;dm=0064;Lower;na=MATHEMATICAL SANS-SERIF SMALL D;NFKC_CF=0064;NFKC_SCF=0064
+cp;1D5BE;dm=0065;Lower;na=MATHEMATICAL SANS-SERIF SMALL E;NFKC_CF=0065;NFKC_SCF=0065
+cp;1D5BF;dm=0066;Lower;na=MATHEMATICAL SANS-SERIF SMALL F;NFKC_CF=0066;NFKC_SCF=0066
+cp;1D5C0;dm=0067;Lower;na=MATHEMATICAL SANS-SERIF SMALL G;NFKC_CF=0067;NFKC_SCF=0067
+cp;1D5C1;dm=0068;Lower;na=MATHEMATICAL SANS-SERIF SMALL H;NFKC_CF=0068;NFKC_SCF=0068
+cp;1D5C2;dm=0069;Lower;na=MATHEMATICAL SANS-SERIF SMALL I;NFKC_CF=0069;NFKC_SCF=0069;SD
+cp;1D5C3;dm=006A;Lower;na=MATHEMATICAL SANS-SERIF SMALL J;NFKC_CF=006A;NFKC_SCF=006A;SD
+cp;1D5C4;dm=006B;Lower;na=MATHEMATICAL SANS-SERIF SMALL K;NFKC_CF=006B;NFKC_SCF=006B
+cp;1D5C5;dm=006C;Lower;na=MATHEMATICAL SANS-SERIF SMALL L;NFKC_CF=006C;NFKC_SCF=006C
+cp;1D5C6;dm=006D;Lower;na=MATHEMATICAL SANS-SERIF SMALL M;NFKC_CF=006D;NFKC_SCF=006D
+cp;1D5C7;dm=006E;Lower;na=MATHEMATICAL SANS-SERIF SMALL N;NFKC_CF=006E;NFKC_SCF=006E
+cp;1D5C8;dm=006F;Lower;na=MATHEMATICAL SANS-SERIF SMALL O;NFKC_CF=006F;NFKC_SCF=006F
+cp;1D5C9;dm=0070;Lower;na=MATHEMATICAL SANS-SERIF SMALL P;NFKC_CF=0070;NFKC_SCF=0070
+cp;1D5CA;dm=0071;Lower;na=MATHEMATICAL SANS-SERIF SMALL Q;NFKC_CF=0071;NFKC_SCF=0071
+cp;1D5CB;dm=0072;Lower;na=MATHEMATICAL SANS-SERIF SMALL R;NFKC_CF=0072;NFKC_SCF=0072
+cp;1D5CC;dm=0073;Lower;na=MATHEMATICAL SANS-SERIF SMALL S;NFKC_CF=0073;NFKC_SCF=0073
+cp;1D5CD;dm=0074;Lower;na=MATHEMATICAL SANS-SERIF SMALL T;NFKC_CF=0074;NFKC_SCF=0074
+cp;1D5CE;dm=0075;Lower;na=MATHEMATICAL SANS-SERIF SMALL U;NFKC_CF=0075;NFKC_SCF=0075
+cp;1D5CF;dm=0076;Lower;na=MATHEMATICAL SANS-SERIF SMALL V;NFKC_CF=0076;NFKC_SCF=0076
+cp;1D5D0;dm=0077;Lower;na=MATHEMATICAL SANS-SERIF SMALL W;NFKC_CF=0077;NFKC_SCF=0077
+cp;1D5D1;dm=0078;Lower;na=MATHEMATICAL SANS-SERIF SMALL X;NFKC_CF=0078;NFKC_SCF=0078
+cp;1D5D2;dm=0079;Lower;na=MATHEMATICAL SANS-SERIF SMALL Y;NFKC_CF=0079;NFKC_SCF=0079
+cp;1D5D3;dm=007A;Lower;na=MATHEMATICAL SANS-SERIF SMALL Z;NFKC_CF=007A;NFKC_SCF=007A
# Sans-serif bold symbols
cp;1D5D4;dm=0041;FC_NFKC=0061;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL A;NFKC_CF=0061;SB=UP;Upper
-cp;1D5D5;dm=0042;FC_NFKC=0062;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL B;NFKC_CF=0062;SB=UP;Upper
-cp;1D5D6;dm=0043;FC_NFKC=0063;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL C;NFKC_CF=0063;SB=UP;Upper
-cp;1D5D7;dm=0044;FC_NFKC=0064;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL D;NFKC_CF=0064;SB=UP;Upper
-cp;1D5D8;dm=0045;FC_NFKC=0065;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL E;NFKC_CF=0065;SB=UP;Upper
-cp;1D5D9;dm=0046;FC_NFKC=0066;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL F;NFKC_CF=0066;SB=UP;Upper
-cp;1D5DA;dm=0047;FC_NFKC=0067;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL G;NFKC_CF=0067;SB=UP;Upper
-cp;1D5DB;dm=0048;FC_NFKC=0068;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL H;NFKC_CF=0068;SB=UP;Upper
-cp;1D5DC;dm=0049;FC_NFKC=0069;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL I;NFKC_CF=0069;SB=UP;Upper
-cp;1D5DD;dm=004A;FC_NFKC=006A;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL J;NFKC_CF=006A;SB=UP;Upper
-cp;1D5DE;dm=004B;FC_NFKC=006B;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL K;NFKC_CF=006B;SB=UP;Upper
-cp;1D5DF;dm=004C;FC_NFKC=006C;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL L;NFKC_CF=006C;SB=UP;Upper
-cp;1D5E0;dm=004D;FC_NFKC=006D;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL M;NFKC_CF=006D;SB=UP;Upper
-cp;1D5E1;dm=004E;FC_NFKC=006E;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL N;NFKC_CF=006E;SB=UP;Upper
-cp;1D5E2;dm=004F;FC_NFKC=006F;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL O;NFKC_CF=006F;SB=UP;Upper
-cp;1D5E3;dm=0050;FC_NFKC=0070;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL P;NFKC_CF=0070;SB=UP;Upper
-cp;1D5E4;dm=0051;FC_NFKC=0071;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL Q;NFKC_CF=0071;SB=UP;Upper
-cp;1D5E5;dm=0052;FC_NFKC=0072;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL R;NFKC_CF=0072;SB=UP;Upper
-cp;1D5E6;dm=0053;FC_NFKC=0073;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL S;NFKC_CF=0073;SB=UP;Upper
-cp;1D5E7;dm=0054;FC_NFKC=0074;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL T;NFKC_CF=0074;SB=UP;Upper
-cp;1D5E8;dm=0055;FC_NFKC=0075;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL U;NFKC_CF=0075;SB=UP;Upper
-cp;1D5E9;dm=0056;FC_NFKC=0076;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL V;NFKC_CF=0076;SB=UP;Upper
-cp;1D5EA;dm=0057;FC_NFKC=0077;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL W;NFKC_CF=0077;SB=UP;Upper
-cp;1D5EB;dm=0058;FC_NFKC=0078;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL X;NFKC_CF=0078;SB=UP;Upper
-cp;1D5EC;dm=0059;FC_NFKC=0079;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL Y;NFKC_CF=0079;SB=UP;Upper
-cp;1D5ED;dm=005A;FC_NFKC=007A;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL Z;NFKC_CF=007A;SB=UP;Upper
+cp;1D5D5;dm=0042;FC_NFKC=0062;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL B;NFKC_CF=0062;NFKC_SCF=0062;SB=UP;Upper
+cp;1D5D6;dm=0043;FC_NFKC=0063;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL C;NFKC_CF=0063;NFKC_SCF=0063;SB=UP;Upper
+cp;1D5D7;dm=0044;FC_NFKC=0064;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL D;NFKC_CF=0064;NFKC_SCF=0064;SB=UP;Upper
+cp;1D5D8;dm=0045;FC_NFKC=0065;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL E;NFKC_CF=0065;NFKC_SCF=0065;SB=UP;Upper
+cp;1D5D9;dm=0046;FC_NFKC=0066;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL F;NFKC_CF=0066;NFKC_SCF=0066;SB=UP;Upper
+cp;1D5DA;dm=0047;FC_NFKC=0067;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL G;NFKC_CF=0067;NFKC_SCF=0067;SB=UP;Upper
+cp;1D5DB;dm=0048;FC_NFKC=0068;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL H;NFKC_CF=0068;NFKC_SCF=0068;SB=UP;Upper
+cp;1D5DC;dm=0049;FC_NFKC=0069;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL I;NFKC_CF=0069;NFKC_SCF=0069;SB=UP;Upper
+cp;1D5DD;dm=004A;FC_NFKC=006A;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL J;NFKC_CF=006A;NFKC_SCF=006A;SB=UP;Upper
+cp;1D5DE;dm=004B;FC_NFKC=006B;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL K;NFKC_CF=006B;NFKC_SCF=006B;SB=UP;Upper
+cp;1D5DF;dm=004C;FC_NFKC=006C;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL L;NFKC_CF=006C;NFKC_SCF=006C;SB=UP;Upper
+cp;1D5E0;dm=004D;FC_NFKC=006D;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL M;NFKC_CF=006D;NFKC_SCF=006D;SB=UP;Upper
+cp;1D5E1;dm=004E;FC_NFKC=006E;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL N;NFKC_CF=006E;NFKC_SCF=006E;SB=UP;Upper
+cp;1D5E2;dm=004F;FC_NFKC=006F;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL O;NFKC_CF=006F;NFKC_SCF=006F;SB=UP;Upper
+cp;1D5E3;dm=0050;FC_NFKC=0070;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL P;NFKC_CF=0070;NFKC_SCF=0070;SB=UP;Upper
+cp;1D5E4;dm=0051;FC_NFKC=0071;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL Q;NFKC_CF=0071;NFKC_SCF=0071;SB=UP;Upper
+cp;1D5E5;dm=0052;FC_NFKC=0072;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL R;NFKC_CF=0072;NFKC_SCF=0072;SB=UP;Upper
+cp;1D5E6;dm=0053;FC_NFKC=0073;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL S;NFKC_CF=0073;NFKC_SCF=0073;SB=UP;Upper
+cp;1D5E7;dm=0054;FC_NFKC=0074;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL T;NFKC_CF=0074;NFKC_SCF=0074;SB=UP;Upper
+cp;1D5E8;dm=0055;FC_NFKC=0075;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL U;NFKC_CF=0075;NFKC_SCF=0075;SB=UP;Upper
+cp;1D5E9;dm=0056;FC_NFKC=0076;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL V;NFKC_CF=0076;NFKC_SCF=0076;SB=UP;Upper
+cp;1D5EA;dm=0057;FC_NFKC=0077;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL W;NFKC_CF=0077;NFKC_SCF=0077;SB=UP;Upper
+cp;1D5EB;dm=0058;FC_NFKC=0078;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL X;NFKC_CF=0078;NFKC_SCF=0078;SB=UP;Upper
+cp;1D5EC;dm=0059;FC_NFKC=0079;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL Y;NFKC_CF=0079;NFKC_SCF=0079;SB=UP;Upper
+cp;1D5ED;dm=005A;FC_NFKC=007A;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL Z;NFKC_CF=007A;NFKC_SCF=007A;SB=UP;Upper
cp;1D5EE;dm=0061;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL A;NFKC_CF=0061
-cp;1D5EF;dm=0062;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL B;NFKC_CF=0062
-cp;1D5F0;dm=0063;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL C;NFKC_CF=0063
-cp;1D5F1;dm=0064;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL D;NFKC_CF=0064
-cp;1D5F2;dm=0065;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL E;NFKC_CF=0065
-cp;1D5F3;dm=0066;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL F;NFKC_CF=0066
-cp;1D5F4;dm=0067;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL G;NFKC_CF=0067
-cp;1D5F5;dm=0068;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL H;NFKC_CF=0068
-cp;1D5F6;dm=0069;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL I;NFKC_CF=0069;SD
-cp;1D5F7;dm=006A;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL J;NFKC_CF=006A;SD
-cp;1D5F8;dm=006B;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL K;NFKC_CF=006B
-cp;1D5F9;dm=006C;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL L;NFKC_CF=006C
-cp;1D5FA;dm=006D;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL M;NFKC_CF=006D
-cp;1D5FB;dm=006E;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL N;NFKC_CF=006E
-cp;1D5FC;dm=006F;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL O;NFKC_CF=006F
-cp;1D5FD;dm=0070;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL P;NFKC_CF=0070
-cp;1D5FE;dm=0071;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL Q;NFKC_CF=0071
-cp;1D5FF;dm=0072;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL R;NFKC_CF=0072
-cp;1D600;dm=0073;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL S;NFKC_CF=0073
-cp;1D601;dm=0074;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL T;NFKC_CF=0074
-cp;1D602;dm=0075;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL U;NFKC_CF=0075
-cp;1D603;dm=0076;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL V;NFKC_CF=0076
-cp;1D604;dm=0077;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL W;NFKC_CF=0077
-cp;1D605;dm=0078;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL X;NFKC_CF=0078
-cp;1D606;dm=0079;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL Y;NFKC_CF=0079
-cp;1D607;dm=007A;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL Z;NFKC_CF=007A
+cp;1D5EF;dm=0062;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL B;NFKC_CF=0062;NFKC_SCF=0062
+cp;1D5F0;dm=0063;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL C;NFKC_CF=0063;NFKC_SCF=0063
+cp;1D5F1;dm=0064;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL D;NFKC_CF=0064;NFKC_SCF=0064
+cp;1D5F2;dm=0065;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL E;NFKC_CF=0065;NFKC_SCF=0065
+cp;1D5F3;dm=0066;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL F;NFKC_CF=0066;NFKC_SCF=0066
+cp;1D5F4;dm=0067;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL G;NFKC_CF=0067;NFKC_SCF=0067
+cp;1D5F5;dm=0068;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL H;NFKC_CF=0068;NFKC_SCF=0068
+cp;1D5F6;dm=0069;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL I;NFKC_CF=0069;NFKC_SCF=0069;SD
+cp;1D5F7;dm=006A;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL J;NFKC_CF=006A;NFKC_SCF=006A;SD
+cp;1D5F8;dm=006B;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL K;NFKC_CF=006B;NFKC_SCF=006B
+cp;1D5F9;dm=006C;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL L;NFKC_CF=006C;NFKC_SCF=006C
+cp;1D5FA;dm=006D;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL M;NFKC_CF=006D;NFKC_SCF=006D
+cp;1D5FB;dm=006E;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL N;NFKC_CF=006E;NFKC_SCF=006E
+cp;1D5FC;dm=006F;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL O;NFKC_CF=006F;NFKC_SCF=006F
+cp;1D5FD;dm=0070;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL P;NFKC_CF=0070;NFKC_SCF=0070
+cp;1D5FE;dm=0071;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL Q;NFKC_CF=0071;NFKC_SCF=0071
+cp;1D5FF;dm=0072;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL R;NFKC_CF=0072;NFKC_SCF=0072
+cp;1D600;dm=0073;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL S;NFKC_CF=0073;NFKC_SCF=0073
+cp;1D601;dm=0074;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL T;NFKC_CF=0074;NFKC_SCF=0074
+cp;1D602;dm=0075;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL U;NFKC_CF=0075;NFKC_SCF=0075
+cp;1D603;dm=0076;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL V;NFKC_CF=0076;NFKC_SCF=0076
+cp;1D604;dm=0077;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL W;NFKC_CF=0077;NFKC_SCF=0077
+cp;1D605;dm=0078;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL X;NFKC_CF=0078;NFKC_SCF=0078
+cp;1D606;dm=0079;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL Y;NFKC_CF=0079;NFKC_SCF=0079
+cp;1D607;dm=007A;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL Z;NFKC_CF=007A;NFKC_SCF=007A
# Sans-serif italic symbols
cp;1D608;dm=0041;FC_NFKC=0061;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL A;NFKC_CF=0061;SB=UP;Upper
-cp;1D609;dm=0042;FC_NFKC=0062;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL B;NFKC_CF=0062;SB=UP;Upper
-cp;1D60A;dm=0043;FC_NFKC=0063;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL C;NFKC_CF=0063;SB=UP;Upper
-cp;1D60B;dm=0044;FC_NFKC=0064;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL D;NFKC_CF=0064;SB=UP;Upper
-cp;1D60C;dm=0045;FC_NFKC=0065;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL E;NFKC_CF=0065;SB=UP;Upper
-cp;1D60D;dm=0046;FC_NFKC=0066;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL F;NFKC_CF=0066;SB=UP;Upper
-cp;1D60E;dm=0047;FC_NFKC=0067;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL G;NFKC_CF=0067;SB=UP;Upper
-cp;1D60F;dm=0048;FC_NFKC=0068;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL H;NFKC_CF=0068;SB=UP;Upper
-cp;1D610;dm=0049;FC_NFKC=0069;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL I;NFKC_CF=0069;SB=UP;Upper
-cp;1D611;dm=004A;FC_NFKC=006A;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL J;NFKC_CF=006A;SB=UP;Upper
-cp;1D612;dm=004B;FC_NFKC=006B;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL K;NFKC_CF=006B;SB=UP;Upper
-cp;1D613;dm=004C;FC_NFKC=006C;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL L;NFKC_CF=006C;SB=UP;Upper
-cp;1D614;dm=004D;FC_NFKC=006D;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL M;NFKC_CF=006D;SB=UP;Upper
-cp;1D615;dm=004E;FC_NFKC=006E;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL N;NFKC_CF=006E;SB=UP;Upper
-cp;1D616;dm=004F;FC_NFKC=006F;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL O;NFKC_CF=006F;SB=UP;Upper
-cp;1D617;dm=0050;FC_NFKC=0070;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL P;NFKC_CF=0070;SB=UP;Upper
-cp;1D618;dm=0051;FC_NFKC=0071;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q;NFKC_CF=0071;SB=UP;Upper
-cp;1D619;dm=0052;FC_NFKC=0072;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL R;NFKC_CF=0072;SB=UP;Upper
-cp;1D61A;dm=0053;FC_NFKC=0073;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL S;NFKC_CF=0073;SB=UP;Upper
-cp;1D61B;dm=0054;FC_NFKC=0074;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL T;NFKC_CF=0074;SB=UP;Upper
-cp;1D61C;dm=0055;FC_NFKC=0075;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL U;NFKC_CF=0075;SB=UP;Upper
-cp;1D61D;dm=0056;FC_NFKC=0076;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL V;NFKC_CF=0076;SB=UP;Upper
-cp;1D61E;dm=0057;FC_NFKC=0077;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL W;NFKC_CF=0077;SB=UP;Upper
-cp;1D61F;dm=0058;FC_NFKC=0078;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL X;NFKC_CF=0078;SB=UP;Upper
-cp;1D620;dm=0059;FC_NFKC=0079;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y;NFKC_CF=0079;SB=UP;Upper
-cp;1D621;dm=005A;FC_NFKC=007A;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z;NFKC_CF=007A;SB=UP;Upper
+cp;1D609;dm=0042;FC_NFKC=0062;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL B;NFKC_CF=0062;NFKC_SCF=0062;SB=UP;Upper
+cp;1D60A;dm=0043;FC_NFKC=0063;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL C;NFKC_CF=0063;NFKC_SCF=0063;SB=UP;Upper
+cp;1D60B;dm=0044;FC_NFKC=0064;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL D;NFKC_CF=0064;NFKC_SCF=0064;SB=UP;Upper
+cp;1D60C;dm=0045;FC_NFKC=0065;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL E;NFKC_CF=0065;NFKC_SCF=0065;SB=UP;Upper
+cp;1D60D;dm=0046;FC_NFKC=0066;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL F;NFKC_CF=0066;NFKC_SCF=0066;SB=UP;Upper
+cp;1D60E;dm=0047;FC_NFKC=0067;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL G;NFKC_CF=0067;NFKC_SCF=0067;SB=UP;Upper
+cp;1D60F;dm=0048;FC_NFKC=0068;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL H;NFKC_CF=0068;NFKC_SCF=0068;SB=UP;Upper
+cp;1D610;dm=0049;FC_NFKC=0069;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL I;NFKC_CF=0069;NFKC_SCF=0069;SB=UP;Upper
+cp;1D611;dm=004A;FC_NFKC=006A;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL J;NFKC_CF=006A;NFKC_SCF=006A;SB=UP;Upper
+cp;1D612;dm=004B;FC_NFKC=006B;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL K;NFKC_CF=006B;NFKC_SCF=006B;SB=UP;Upper
+cp;1D613;dm=004C;FC_NFKC=006C;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL L;NFKC_CF=006C;NFKC_SCF=006C;SB=UP;Upper
+cp;1D614;dm=004D;FC_NFKC=006D;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL M;NFKC_CF=006D;NFKC_SCF=006D;SB=UP;Upper
+cp;1D615;dm=004E;FC_NFKC=006E;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL N;NFKC_CF=006E;NFKC_SCF=006E;SB=UP;Upper
+cp;1D616;dm=004F;FC_NFKC=006F;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL O;NFKC_CF=006F;NFKC_SCF=006F;SB=UP;Upper
+cp;1D617;dm=0050;FC_NFKC=0070;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL P;NFKC_CF=0070;NFKC_SCF=0070;SB=UP;Upper
+cp;1D618;dm=0051;FC_NFKC=0071;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q;NFKC_CF=0071;NFKC_SCF=0071;SB=UP;Upper
+cp;1D619;dm=0052;FC_NFKC=0072;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL R;NFKC_CF=0072;NFKC_SCF=0072;SB=UP;Upper
+cp;1D61A;dm=0053;FC_NFKC=0073;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL S;NFKC_CF=0073;NFKC_SCF=0073;SB=UP;Upper
+cp;1D61B;dm=0054;FC_NFKC=0074;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL T;NFKC_CF=0074;NFKC_SCF=0074;SB=UP;Upper
+cp;1D61C;dm=0055;FC_NFKC=0075;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL U;NFKC_CF=0075;NFKC_SCF=0075;SB=UP;Upper
+cp;1D61D;dm=0056;FC_NFKC=0076;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL V;NFKC_CF=0076;NFKC_SCF=0076;SB=UP;Upper
+cp;1D61E;dm=0057;FC_NFKC=0077;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL W;NFKC_CF=0077;NFKC_SCF=0077;SB=UP;Upper
+cp;1D61F;dm=0058;FC_NFKC=0078;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL X;NFKC_CF=0078;NFKC_SCF=0078;SB=UP;Upper
+cp;1D620;dm=0059;FC_NFKC=0079;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y;NFKC_CF=0079;NFKC_SCF=0079;SB=UP;Upper
+cp;1D621;dm=005A;FC_NFKC=007A;gc=Lu;na=MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z;NFKC_CF=007A;NFKC_SCF=007A;SB=UP;Upper
cp;1D622;dm=0061;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL A;NFKC_CF=0061
-cp;1D623;dm=0062;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL B;NFKC_CF=0062
-cp;1D624;dm=0063;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL C;NFKC_CF=0063
-cp;1D625;dm=0064;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL D;NFKC_CF=0064
-cp;1D626;dm=0065;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL E;NFKC_CF=0065
-cp;1D627;dm=0066;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL F;NFKC_CF=0066
-cp;1D628;dm=0067;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL G;NFKC_CF=0067
-cp;1D629;dm=0068;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL H;NFKC_CF=0068
-cp;1D62A;dm=0069;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL I;NFKC_CF=0069;SD
-cp;1D62B;dm=006A;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL J;NFKC_CF=006A;SD
-cp;1D62C;dm=006B;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL K;NFKC_CF=006B
-cp;1D62D;dm=006C;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL L;NFKC_CF=006C
-cp;1D62E;dm=006D;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL M;NFKC_CF=006D
-cp;1D62F;dm=006E;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL N;NFKC_CF=006E
-cp;1D630;dm=006F;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL O;NFKC_CF=006F
-cp;1D631;dm=0070;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL P;NFKC_CF=0070
-cp;1D632;dm=0071;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL Q;NFKC_CF=0071
-cp;1D633;dm=0072;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL R;NFKC_CF=0072
-cp;1D634;dm=0073;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL S;NFKC_CF=0073
-cp;1D635;dm=0074;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL T;NFKC_CF=0074
-cp;1D636;dm=0075;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL U;NFKC_CF=0075
-cp;1D637;dm=0076;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL V;NFKC_CF=0076
-cp;1D638;dm=0077;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL W;NFKC_CF=0077
-cp;1D639;dm=0078;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL X;NFKC_CF=0078
-cp;1D63A;dm=0079;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL Y;NFKC_CF=0079
-cp;1D63B;dm=007A;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL Z;NFKC_CF=007A
+cp;1D623;dm=0062;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL B;NFKC_CF=0062;NFKC_SCF=0062
+cp;1D624;dm=0063;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL C;NFKC_CF=0063;NFKC_SCF=0063
+cp;1D625;dm=0064;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL D;NFKC_CF=0064;NFKC_SCF=0064
+cp;1D626;dm=0065;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL E;NFKC_CF=0065;NFKC_SCF=0065
+cp;1D627;dm=0066;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL F;NFKC_CF=0066;NFKC_SCF=0066
+cp;1D628;dm=0067;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL G;NFKC_CF=0067;NFKC_SCF=0067
+cp;1D629;dm=0068;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL H;NFKC_CF=0068;NFKC_SCF=0068
+cp;1D62A;dm=0069;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL I;NFKC_CF=0069;NFKC_SCF=0069;SD
+cp;1D62B;dm=006A;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL J;NFKC_CF=006A;NFKC_SCF=006A;SD
+cp;1D62C;dm=006B;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL K;NFKC_CF=006B;NFKC_SCF=006B
+cp;1D62D;dm=006C;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL L;NFKC_CF=006C;NFKC_SCF=006C
+cp;1D62E;dm=006D;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL M;NFKC_CF=006D;NFKC_SCF=006D
+cp;1D62F;dm=006E;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL N;NFKC_CF=006E;NFKC_SCF=006E
+cp;1D630;dm=006F;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL O;NFKC_CF=006F;NFKC_SCF=006F
+cp;1D631;dm=0070;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL P;NFKC_CF=0070;NFKC_SCF=0070
+cp;1D632;dm=0071;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL Q;NFKC_CF=0071;NFKC_SCF=0071
+cp;1D633;dm=0072;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL R;NFKC_CF=0072;NFKC_SCF=0072
+cp;1D634;dm=0073;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL S;NFKC_CF=0073;NFKC_SCF=0073
+cp;1D635;dm=0074;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL T;NFKC_CF=0074;NFKC_SCF=0074
+cp;1D636;dm=0075;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL U;NFKC_CF=0075;NFKC_SCF=0075
+cp;1D637;dm=0076;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL V;NFKC_CF=0076;NFKC_SCF=0076
+cp;1D638;dm=0077;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL W;NFKC_CF=0077;NFKC_SCF=0077
+cp;1D639;dm=0078;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL X;NFKC_CF=0078;NFKC_SCF=0078
+cp;1D63A;dm=0079;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL Y;NFKC_CF=0079;NFKC_SCF=0079
+cp;1D63B;dm=007A;Lower;na=MATHEMATICAL SANS-SERIF ITALIC SMALL Z;NFKC_CF=007A;NFKC_SCF=007A
# Sans-serif bold italic symbols
cp;1D63C;dm=0041;FC_NFKC=0061;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A;NFKC_CF=0061;SB=UP;Upper
-cp;1D63D;dm=0042;FC_NFKC=0062;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B;NFKC_CF=0062;SB=UP;Upper
-cp;1D63E;dm=0043;FC_NFKC=0063;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C;NFKC_CF=0063;SB=UP;Upper
-cp;1D63F;dm=0044;FC_NFKC=0064;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D;NFKC_CF=0064;SB=UP;Upper
-cp;1D640;dm=0045;FC_NFKC=0065;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E;NFKC_CF=0065;SB=UP;Upper
-cp;1D641;dm=0046;FC_NFKC=0066;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F;NFKC_CF=0066;SB=UP;Upper
-cp;1D642;dm=0047;FC_NFKC=0067;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G;NFKC_CF=0067;SB=UP;Upper
-cp;1D643;dm=0048;FC_NFKC=0068;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H;NFKC_CF=0068;SB=UP;Upper
-cp;1D644;dm=0049;FC_NFKC=0069;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I;NFKC_CF=0069;SB=UP;Upper
-cp;1D645;dm=004A;FC_NFKC=006A;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J;NFKC_CF=006A;SB=UP;Upper
-cp;1D646;dm=004B;FC_NFKC=006B;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K;NFKC_CF=006B;SB=UP;Upper
-cp;1D647;dm=004C;FC_NFKC=006C;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L;NFKC_CF=006C;SB=UP;Upper
-cp;1D648;dm=004D;FC_NFKC=006D;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M;NFKC_CF=006D;SB=UP;Upper
-cp;1D649;dm=004E;FC_NFKC=006E;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N;NFKC_CF=006E;SB=UP;Upper
-cp;1D64A;dm=004F;FC_NFKC=006F;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O;NFKC_CF=006F;SB=UP;Upper
-cp;1D64B;dm=0050;FC_NFKC=0070;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P;NFKC_CF=0070;SB=UP;Upper
-cp;1D64C;dm=0051;FC_NFKC=0071;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q;NFKC_CF=0071;SB=UP;Upper
-cp;1D64D;dm=0052;FC_NFKC=0072;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R;NFKC_CF=0072;SB=UP;Upper
-cp;1D64E;dm=0053;FC_NFKC=0073;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S;NFKC_CF=0073;SB=UP;Upper
-cp;1D64F;dm=0054;FC_NFKC=0074;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T;NFKC_CF=0074;SB=UP;Upper
-cp;1D650;dm=0055;FC_NFKC=0075;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U;NFKC_CF=0075;SB=UP;Upper
-cp;1D651;dm=0056;FC_NFKC=0076;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V;NFKC_CF=0076;SB=UP;Upper
-cp;1D652;dm=0057;FC_NFKC=0077;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W;NFKC_CF=0077;SB=UP;Upper
-cp;1D653;dm=0058;FC_NFKC=0078;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X;NFKC_CF=0078;SB=UP;Upper
-cp;1D654;dm=0059;FC_NFKC=0079;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y;NFKC_CF=0079;SB=UP;Upper
-cp;1D655;dm=005A;FC_NFKC=007A;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z;NFKC_CF=007A;SB=UP;Upper
+cp;1D63D;dm=0042;FC_NFKC=0062;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B;NFKC_CF=0062;NFKC_SCF=0062;SB=UP;Upper
+cp;1D63E;dm=0043;FC_NFKC=0063;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C;NFKC_CF=0063;NFKC_SCF=0063;SB=UP;Upper
+cp;1D63F;dm=0044;FC_NFKC=0064;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D;NFKC_CF=0064;NFKC_SCF=0064;SB=UP;Upper
+cp;1D640;dm=0045;FC_NFKC=0065;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E;NFKC_CF=0065;NFKC_SCF=0065;SB=UP;Upper
+cp;1D641;dm=0046;FC_NFKC=0066;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F;NFKC_CF=0066;NFKC_SCF=0066;SB=UP;Upper
+cp;1D642;dm=0047;FC_NFKC=0067;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G;NFKC_CF=0067;NFKC_SCF=0067;SB=UP;Upper
+cp;1D643;dm=0048;FC_NFKC=0068;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H;NFKC_CF=0068;NFKC_SCF=0068;SB=UP;Upper
+cp;1D644;dm=0049;FC_NFKC=0069;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I;NFKC_CF=0069;NFKC_SCF=0069;SB=UP;Upper
+cp;1D645;dm=004A;FC_NFKC=006A;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J;NFKC_CF=006A;NFKC_SCF=006A;SB=UP;Upper
+cp;1D646;dm=004B;FC_NFKC=006B;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K;NFKC_CF=006B;NFKC_SCF=006B;SB=UP;Upper
+cp;1D647;dm=004C;FC_NFKC=006C;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L;NFKC_CF=006C;NFKC_SCF=006C;SB=UP;Upper
+cp;1D648;dm=004D;FC_NFKC=006D;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M;NFKC_CF=006D;NFKC_SCF=006D;SB=UP;Upper
+cp;1D649;dm=004E;FC_NFKC=006E;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N;NFKC_CF=006E;NFKC_SCF=006E;SB=UP;Upper
+cp;1D64A;dm=004F;FC_NFKC=006F;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O;NFKC_CF=006F;NFKC_SCF=006F;SB=UP;Upper
+cp;1D64B;dm=0050;FC_NFKC=0070;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P;NFKC_CF=0070;NFKC_SCF=0070;SB=UP;Upper
+cp;1D64C;dm=0051;FC_NFKC=0071;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q;NFKC_CF=0071;NFKC_SCF=0071;SB=UP;Upper
+cp;1D64D;dm=0052;FC_NFKC=0072;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R;NFKC_CF=0072;NFKC_SCF=0072;SB=UP;Upper
+cp;1D64E;dm=0053;FC_NFKC=0073;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S;NFKC_CF=0073;NFKC_SCF=0073;SB=UP;Upper
+cp;1D64F;dm=0054;FC_NFKC=0074;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T;NFKC_CF=0074;NFKC_SCF=0074;SB=UP;Upper
+cp;1D650;dm=0055;FC_NFKC=0075;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U;NFKC_CF=0075;NFKC_SCF=0075;SB=UP;Upper
+cp;1D651;dm=0056;FC_NFKC=0076;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V;NFKC_CF=0076;NFKC_SCF=0076;SB=UP;Upper
+cp;1D652;dm=0057;FC_NFKC=0077;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W;NFKC_CF=0077;NFKC_SCF=0077;SB=UP;Upper
+cp;1D653;dm=0058;FC_NFKC=0078;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X;NFKC_CF=0078;NFKC_SCF=0078;SB=UP;Upper
+cp;1D654;dm=0059;FC_NFKC=0079;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y;NFKC_CF=0079;NFKC_SCF=0079;SB=UP;Upper
+cp;1D655;dm=005A;FC_NFKC=007A;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z;NFKC_CF=007A;NFKC_SCF=007A;SB=UP;Upper
cp;1D656;dm=0061;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A;NFKC_CF=0061
-cp;1D657;dm=0062;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B;NFKC_CF=0062
-cp;1D658;dm=0063;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C;NFKC_CF=0063
-cp;1D659;dm=0064;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D;NFKC_CF=0064
-cp;1D65A;dm=0065;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E;NFKC_CF=0065
-cp;1D65B;dm=0066;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F;NFKC_CF=0066
-cp;1D65C;dm=0067;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G;NFKC_CF=0067
-cp;1D65D;dm=0068;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H;NFKC_CF=0068
-cp;1D65E;dm=0069;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I;NFKC_CF=0069;SD
-cp;1D65F;dm=006A;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J;NFKC_CF=006A;SD
-cp;1D660;dm=006B;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K;NFKC_CF=006B
-cp;1D661;dm=006C;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L;NFKC_CF=006C
-cp;1D662;dm=006D;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M;NFKC_CF=006D
-cp;1D663;dm=006E;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N;NFKC_CF=006E
-cp;1D664;dm=006F;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O;NFKC_CF=006F
-cp;1D665;dm=0070;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P;NFKC_CF=0070
-cp;1D666;dm=0071;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q;NFKC_CF=0071
-cp;1D667;dm=0072;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R;NFKC_CF=0072
-cp;1D668;dm=0073;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S;NFKC_CF=0073
-cp;1D669;dm=0074;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T;NFKC_CF=0074
-cp;1D66A;dm=0075;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U;NFKC_CF=0075
-cp;1D66B;dm=0076;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V;NFKC_CF=0076
-cp;1D66C;dm=0077;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W;NFKC_CF=0077
-cp;1D66D;dm=0078;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X;NFKC_CF=0078
-cp;1D66E;dm=0079;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y;NFKC_CF=0079
-cp;1D66F;dm=007A;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z;NFKC_CF=007A
+cp;1D657;dm=0062;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B;NFKC_CF=0062;NFKC_SCF=0062
+cp;1D658;dm=0063;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C;NFKC_CF=0063;NFKC_SCF=0063
+cp;1D659;dm=0064;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D;NFKC_CF=0064;NFKC_SCF=0064
+cp;1D65A;dm=0065;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E;NFKC_CF=0065;NFKC_SCF=0065
+cp;1D65B;dm=0066;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F;NFKC_CF=0066;NFKC_SCF=0066
+cp;1D65C;dm=0067;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G;NFKC_CF=0067;NFKC_SCF=0067
+cp;1D65D;dm=0068;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H;NFKC_CF=0068;NFKC_SCF=0068
+cp;1D65E;dm=0069;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I;NFKC_CF=0069;NFKC_SCF=0069;SD
+cp;1D65F;dm=006A;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J;NFKC_CF=006A;NFKC_SCF=006A;SD
+cp;1D660;dm=006B;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K;NFKC_CF=006B;NFKC_SCF=006B
+cp;1D661;dm=006C;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L;NFKC_CF=006C;NFKC_SCF=006C
+cp;1D662;dm=006D;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M;NFKC_CF=006D;NFKC_SCF=006D
+cp;1D663;dm=006E;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N;NFKC_CF=006E;NFKC_SCF=006E
+cp;1D664;dm=006F;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O;NFKC_CF=006F;NFKC_SCF=006F
+cp;1D665;dm=0070;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P;NFKC_CF=0070;NFKC_SCF=0070
+cp;1D666;dm=0071;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q;NFKC_CF=0071;NFKC_SCF=0071
+cp;1D667;dm=0072;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R;NFKC_CF=0072;NFKC_SCF=0072
+cp;1D668;dm=0073;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S;NFKC_CF=0073;NFKC_SCF=0073
+cp;1D669;dm=0074;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T;NFKC_CF=0074;NFKC_SCF=0074
+cp;1D66A;dm=0075;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U;NFKC_CF=0075;NFKC_SCF=0075
+cp;1D66B;dm=0076;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V;NFKC_CF=0076;NFKC_SCF=0076
+cp;1D66C;dm=0077;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W;NFKC_CF=0077;NFKC_SCF=0077
+cp;1D66D;dm=0078;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X;NFKC_CF=0078;NFKC_SCF=0078
+cp;1D66E;dm=0079;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y;NFKC_CF=0079;NFKC_SCF=0079
+cp;1D66F;dm=007A;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z;NFKC_CF=007A;NFKC_SCF=007A
# Monospace symbols
cp;1D670;dm=0041;FC_NFKC=0061;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL A;NFKC_CF=0061;SB=UP;Upper
-cp;1D671;dm=0042;FC_NFKC=0062;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL B;NFKC_CF=0062;SB=UP;Upper
-cp;1D672;dm=0043;FC_NFKC=0063;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL C;NFKC_CF=0063;SB=UP;Upper
-cp;1D673;dm=0044;FC_NFKC=0064;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL D;NFKC_CF=0064;SB=UP;Upper
-cp;1D674;dm=0045;FC_NFKC=0065;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL E;NFKC_CF=0065;SB=UP;Upper
-cp;1D675;dm=0046;FC_NFKC=0066;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL F;NFKC_CF=0066;SB=UP;Upper
-cp;1D676;dm=0047;FC_NFKC=0067;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL G;NFKC_CF=0067;SB=UP;Upper
-cp;1D677;dm=0048;FC_NFKC=0068;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL H;NFKC_CF=0068;SB=UP;Upper
-cp;1D678;dm=0049;FC_NFKC=0069;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL I;NFKC_CF=0069;SB=UP;Upper
-cp;1D679;dm=004A;FC_NFKC=006A;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL J;NFKC_CF=006A;SB=UP;Upper
-cp;1D67A;dm=004B;FC_NFKC=006B;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL K;NFKC_CF=006B;SB=UP;Upper
-cp;1D67B;dm=004C;FC_NFKC=006C;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL L;NFKC_CF=006C;SB=UP;Upper
-cp;1D67C;dm=004D;FC_NFKC=006D;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL M;NFKC_CF=006D;SB=UP;Upper
-cp;1D67D;dm=004E;FC_NFKC=006E;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL N;NFKC_CF=006E;SB=UP;Upper
-cp;1D67E;dm=004F;FC_NFKC=006F;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL O;NFKC_CF=006F;SB=UP;Upper
-cp;1D67F;dm=0050;FC_NFKC=0070;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL P;NFKC_CF=0070;SB=UP;Upper
-cp;1D680;dm=0051;FC_NFKC=0071;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL Q;NFKC_CF=0071;SB=UP;Upper
-cp;1D681;dm=0052;FC_NFKC=0072;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL R;NFKC_CF=0072;SB=UP;Upper
-cp;1D682;dm=0053;FC_NFKC=0073;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL S;NFKC_CF=0073;SB=UP;Upper
-cp;1D683;dm=0054;FC_NFKC=0074;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL T;NFKC_CF=0074;SB=UP;Upper
-cp;1D684;dm=0055;FC_NFKC=0075;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL U;NFKC_CF=0075;SB=UP;Upper
-cp;1D685;dm=0056;FC_NFKC=0076;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL V;NFKC_CF=0076;SB=UP;Upper
-cp;1D686;dm=0057;FC_NFKC=0077;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL W;NFKC_CF=0077;SB=UP;Upper
-cp;1D687;dm=0058;FC_NFKC=0078;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL X;NFKC_CF=0078;SB=UP;Upper
-cp;1D688;dm=0059;FC_NFKC=0079;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL Y;NFKC_CF=0079;SB=UP;Upper
-cp;1D689;dm=005A;FC_NFKC=007A;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL Z;NFKC_CF=007A;SB=UP;Upper
+cp;1D671;dm=0042;FC_NFKC=0062;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL B;NFKC_CF=0062;NFKC_SCF=0062;SB=UP;Upper
+cp;1D672;dm=0043;FC_NFKC=0063;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL C;NFKC_CF=0063;NFKC_SCF=0063;SB=UP;Upper
+cp;1D673;dm=0044;FC_NFKC=0064;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL D;NFKC_CF=0064;NFKC_SCF=0064;SB=UP;Upper
+cp;1D674;dm=0045;FC_NFKC=0065;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL E;NFKC_CF=0065;NFKC_SCF=0065;SB=UP;Upper
+cp;1D675;dm=0046;FC_NFKC=0066;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL F;NFKC_CF=0066;NFKC_SCF=0066;SB=UP;Upper
+cp;1D676;dm=0047;FC_NFKC=0067;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL G;NFKC_CF=0067;NFKC_SCF=0067;SB=UP;Upper
+cp;1D677;dm=0048;FC_NFKC=0068;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL H;NFKC_CF=0068;NFKC_SCF=0068;SB=UP;Upper
+cp;1D678;dm=0049;FC_NFKC=0069;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL I;NFKC_CF=0069;NFKC_SCF=0069;SB=UP;Upper
+cp;1D679;dm=004A;FC_NFKC=006A;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL J;NFKC_CF=006A;NFKC_SCF=006A;SB=UP;Upper
+cp;1D67A;dm=004B;FC_NFKC=006B;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL K;NFKC_CF=006B;NFKC_SCF=006B;SB=UP;Upper
+cp;1D67B;dm=004C;FC_NFKC=006C;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL L;NFKC_CF=006C;NFKC_SCF=006C;SB=UP;Upper
+cp;1D67C;dm=004D;FC_NFKC=006D;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL M;NFKC_CF=006D;NFKC_SCF=006D;SB=UP;Upper
+cp;1D67D;dm=004E;FC_NFKC=006E;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL N;NFKC_CF=006E;NFKC_SCF=006E;SB=UP;Upper
+cp;1D67E;dm=004F;FC_NFKC=006F;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL O;NFKC_CF=006F;NFKC_SCF=006F;SB=UP;Upper
+cp;1D67F;dm=0050;FC_NFKC=0070;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL P;NFKC_CF=0070;NFKC_SCF=0070;SB=UP;Upper
+cp;1D680;dm=0051;FC_NFKC=0071;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL Q;NFKC_CF=0071;NFKC_SCF=0071;SB=UP;Upper
+cp;1D681;dm=0052;FC_NFKC=0072;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL R;NFKC_CF=0072;NFKC_SCF=0072;SB=UP;Upper
+cp;1D682;dm=0053;FC_NFKC=0073;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL S;NFKC_CF=0073;NFKC_SCF=0073;SB=UP;Upper
+cp;1D683;dm=0054;FC_NFKC=0074;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL T;NFKC_CF=0074;NFKC_SCF=0074;SB=UP;Upper
+cp;1D684;dm=0055;FC_NFKC=0075;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL U;NFKC_CF=0075;NFKC_SCF=0075;SB=UP;Upper
+cp;1D685;dm=0056;FC_NFKC=0076;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL V;NFKC_CF=0076;NFKC_SCF=0076;SB=UP;Upper
+cp;1D686;dm=0057;FC_NFKC=0077;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL W;NFKC_CF=0077;NFKC_SCF=0077;SB=UP;Upper
+cp;1D687;dm=0058;FC_NFKC=0078;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL X;NFKC_CF=0078;NFKC_SCF=0078;SB=UP;Upper
+cp;1D688;dm=0059;FC_NFKC=0079;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL Y;NFKC_CF=0079;NFKC_SCF=0079;SB=UP;Upper
+cp;1D689;dm=005A;FC_NFKC=007A;gc=Lu;na=MATHEMATICAL MONOSPACE CAPITAL Z;NFKC_CF=007A;NFKC_SCF=007A;SB=UP;Upper
cp;1D68A;dm=0061;Lower;na=MATHEMATICAL MONOSPACE SMALL A;NFKC_CF=0061
-cp;1D68B;dm=0062;Lower;na=MATHEMATICAL MONOSPACE SMALL B;NFKC_CF=0062
-cp;1D68C;dm=0063;Lower;na=MATHEMATICAL MONOSPACE SMALL C;NFKC_CF=0063
-cp;1D68D;dm=0064;Lower;na=MATHEMATICAL MONOSPACE SMALL D;NFKC_CF=0064
-cp;1D68E;dm=0065;Lower;na=MATHEMATICAL MONOSPACE SMALL E;NFKC_CF=0065
-cp;1D68F;dm=0066;Lower;na=MATHEMATICAL MONOSPACE SMALL F;NFKC_CF=0066
-cp;1D690;dm=0067;Lower;na=MATHEMATICAL MONOSPACE SMALL G;NFKC_CF=0067
-cp;1D691;dm=0068;Lower;na=MATHEMATICAL MONOSPACE SMALL H;NFKC_CF=0068
-cp;1D692;dm=0069;Lower;na=MATHEMATICAL MONOSPACE SMALL I;NFKC_CF=0069;SD
-cp;1D693;dm=006A;Lower;na=MATHEMATICAL MONOSPACE SMALL J;NFKC_CF=006A;SD
-cp;1D694;dm=006B;Lower;na=MATHEMATICAL MONOSPACE SMALL K;NFKC_CF=006B
-cp;1D695;dm=006C;Lower;na=MATHEMATICAL MONOSPACE SMALL L;NFKC_CF=006C
-cp;1D696;dm=006D;Lower;na=MATHEMATICAL MONOSPACE SMALL M;NFKC_CF=006D
-cp;1D697;dm=006E;Lower;na=MATHEMATICAL MONOSPACE SMALL N;NFKC_CF=006E
-cp;1D698;dm=006F;Lower;na=MATHEMATICAL MONOSPACE SMALL O;NFKC_CF=006F
-cp;1D699;dm=0070;Lower;na=MATHEMATICAL MONOSPACE SMALL P;NFKC_CF=0070
-cp;1D69A;dm=0071;Lower;na=MATHEMATICAL MONOSPACE SMALL Q;NFKC_CF=0071
-cp;1D69B;dm=0072;Lower;na=MATHEMATICAL MONOSPACE SMALL R;NFKC_CF=0072
-cp;1D69C;dm=0073;Lower;na=MATHEMATICAL MONOSPACE SMALL S;NFKC_CF=0073
-cp;1D69D;dm=0074;Lower;na=MATHEMATICAL MONOSPACE SMALL T;NFKC_CF=0074
-cp;1D69E;dm=0075;Lower;na=MATHEMATICAL MONOSPACE SMALL U;NFKC_CF=0075
-cp;1D69F;dm=0076;Lower;na=MATHEMATICAL MONOSPACE SMALL V;NFKC_CF=0076
-cp;1D6A0;dm=0077;Lower;na=MATHEMATICAL MONOSPACE SMALL W;NFKC_CF=0077
-cp;1D6A1;dm=0078;Lower;na=MATHEMATICAL MONOSPACE SMALL X;NFKC_CF=0078
-cp;1D6A2;dm=0079;Lower;na=MATHEMATICAL MONOSPACE SMALL Y;NFKC_CF=0079
-cp;1D6A3;dm=007A;Lower;na=MATHEMATICAL MONOSPACE SMALL Z;NFKC_CF=007A
+cp;1D68B;dm=0062;Lower;na=MATHEMATICAL MONOSPACE SMALL B;NFKC_CF=0062;NFKC_SCF=0062
+cp;1D68C;dm=0063;Lower;na=MATHEMATICAL MONOSPACE SMALL C;NFKC_CF=0063;NFKC_SCF=0063
+cp;1D68D;dm=0064;Lower;na=MATHEMATICAL MONOSPACE SMALL D;NFKC_CF=0064;NFKC_SCF=0064
+cp;1D68E;dm=0065;Lower;na=MATHEMATICAL MONOSPACE SMALL E;NFKC_CF=0065;NFKC_SCF=0065
+cp;1D68F;dm=0066;Lower;na=MATHEMATICAL MONOSPACE SMALL F;NFKC_CF=0066;NFKC_SCF=0066
+cp;1D690;dm=0067;Lower;na=MATHEMATICAL MONOSPACE SMALL G;NFKC_CF=0067;NFKC_SCF=0067
+cp;1D691;dm=0068;Lower;na=MATHEMATICAL MONOSPACE SMALL H;NFKC_CF=0068;NFKC_SCF=0068
+cp;1D692;dm=0069;Lower;na=MATHEMATICAL MONOSPACE SMALL I;NFKC_CF=0069;NFKC_SCF=0069;SD
+cp;1D693;dm=006A;Lower;na=MATHEMATICAL MONOSPACE SMALL J;NFKC_CF=006A;NFKC_SCF=006A;SD
+cp;1D694;dm=006B;Lower;na=MATHEMATICAL MONOSPACE SMALL K;NFKC_CF=006B;NFKC_SCF=006B
+cp;1D695;dm=006C;Lower;na=MATHEMATICAL MONOSPACE SMALL L;NFKC_CF=006C;NFKC_SCF=006C
+cp;1D696;dm=006D;Lower;na=MATHEMATICAL MONOSPACE SMALL M;NFKC_CF=006D;NFKC_SCF=006D
+cp;1D697;dm=006E;Lower;na=MATHEMATICAL MONOSPACE SMALL N;NFKC_CF=006E;NFKC_SCF=006E
+cp;1D698;dm=006F;Lower;na=MATHEMATICAL MONOSPACE SMALL O;NFKC_CF=006F;NFKC_SCF=006F
+cp;1D699;dm=0070;Lower;na=MATHEMATICAL MONOSPACE SMALL P;NFKC_CF=0070;NFKC_SCF=0070
+cp;1D69A;dm=0071;Lower;na=MATHEMATICAL MONOSPACE SMALL Q;NFKC_CF=0071;NFKC_SCF=0071
+cp;1D69B;dm=0072;Lower;na=MATHEMATICAL MONOSPACE SMALL R;NFKC_CF=0072;NFKC_SCF=0072
+cp;1D69C;dm=0073;Lower;na=MATHEMATICAL MONOSPACE SMALL S;NFKC_CF=0073;NFKC_SCF=0073
+cp;1D69D;dm=0074;Lower;na=MATHEMATICAL MONOSPACE SMALL T;NFKC_CF=0074;NFKC_SCF=0074
+cp;1D69E;dm=0075;Lower;na=MATHEMATICAL MONOSPACE SMALL U;NFKC_CF=0075;NFKC_SCF=0075
+cp;1D69F;dm=0076;Lower;na=MATHEMATICAL MONOSPACE SMALL V;NFKC_CF=0076;NFKC_SCF=0076
+cp;1D6A0;dm=0077;Lower;na=MATHEMATICAL MONOSPACE SMALL W;NFKC_CF=0077;NFKC_SCF=0077
+cp;1D6A1;dm=0078;Lower;na=MATHEMATICAL MONOSPACE SMALL X;NFKC_CF=0078;NFKC_SCF=0078
+cp;1D6A2;dm=0079;Lower;na=MATHEMATICAL MONOSPACE SMALL Y;NFKC_CF=0079;NFKC_SCF=0079
+cp;1D6A3;dm=007A;Lower;na=MATHEMATICAL MONOSPACE SMALL Z;NFKC_CF=007A;NFKC_SCF=007A
# Dotless symbols
-cp;1D6A4;age=4.1;dm=0131;Lower;na=MATHEMATICAL ITALIC SMALL DOTLESS I;NFKC_CF=0131
-cp;1D6A5;age=4.1;dm=0237;Lower;na=MATHEMATICAL ITALIC SMALL DOTLESS J;NFKC_CF=0237
+cp;1D6A4;age=4.1;dm=0131;Lower;na=MATHEMATICAL ITALIC SMALL DOTLESS I;NFKC_CF=0131;NFKC_SCF=0131
+cp;1D6A5;age=4.1;dm=0237;Lower;na=MATHEMATICAL ITALIC SMALL DOTLESS J;NFKC_CF=0237;NFKC_SCF=0237
unassigned;1D6A6..1D6A7
# Bold Greek symbols
-cp;1D6A8;dm=0391;FC_NFKC=03B1;gc=Lu;na=MATHEMATICAL BOLD CAPITAL ALPHA;NFKC_CF=03B1;SB=UP;Upper
-cp;1D6A9;dm=0392;FC_NFKC=03B2;gc=Lu;na=MATHEMATICAL BOLD CAPITAL BETA;NFKC_CF=03B2;SB=UP;Upper
-cp;1D6AA;dm=0393;FC_NFKC=03B3;gc=Lu;na=MATHEMATICAL BOLD CAPITAL GAMMA;NFKC_CF=03B3;SB=UP;Upper
-cp;1D6AB;dm=0394;FC_NFKC=03B4;gc=Lu;na=MATHEMATICAL BOLD CAPITAL DELTA;NFKC_CF=03B4;SB=UP;Upper
-cp;1D6AC;dm=0395;FC_NFKC=03B5;gc=Lu;na=MATHEMATICAL BOLD CAPITAL EPSILON;NFKC_CF=03B5;SB=UP;Upper
-cp;1D6AD;dm=0396;FC_NFKC=03B6;gc=Lu;na=MATHEMATICAL BOLD CAPITAL ZETA;NFKC_CF=03B6;SB=UP;Upper
-cp;1D6AE;dm=0397;FC_NFKC=03B7;gc=Lu;na=MATHEMATICAL BOLD CAPITAL ETA;NFKC_CF=03B7;SB=UP;Upper
-cp;1D6AF;dm=0398;FC_NFKC=03B8;gc=Lu;na=MATHEMATICAL BOLD CAPITAL THETA;NFKC_CF=03B8;SB=UP;Upper
-cp;1D6B0;dm=0399;FC_NFKC=03B9;gc=Lu;na=MATHEMATICAL BOLD CAPITAL IOTA;NFKC_CF=03B9;SB=UP;Upper
-cp;1D6B1;dm=039A;FC_NFKC=03BA;gc=Lu;na=MATHEMATICAL BOLD CAPITAL KAPPA;NFKC_CF=03BA;SB=UP;Upper
-cp;1D6B2;dm=039B;FC_NFKC=03BB;gc=Lu;na=MATHEMATICAL BOLD CAPITAL LAMDA;NFKC_CF=03BB;SB=UP;Upper
-cp;1D6B3;dm=039C;FC_NFKC=03BC;gc=Lu;na=MATHEMATICAL BOLD CAPITAL MU;NFKC_CF=03BC;SB=UP;Upper
-cp;1D6B4;dm=039D;FC_NFKC=03BD;gc=Lu;na=MATHEMATICAL BOLD CAPITAL NU;NFKC_CF=03BD;SB=UP;Upper
-cp;1D6B5;dm=039E;FC_NFKC=03BE;gc=Lu;na=MATHEMATICAL BOLD CAPITAL XI;NFKC_CF=03BE;SB=UP;Upper
-cp;1D6B6;dm=039F;FC_NFKC=03BF;gc=Lu;na=MATHEMATICAL BOLD CAPITAL OMICRON;NFKC_CF=03BF;SB=UP;Upper
-cp;1D6B7;dm=03A0;FC_NFKC=03C0;gc=Lu;na=MATHEMATICAL BOLD CAPITAL PI;NFKC_CF=03C0;SB=UP;Upper
-cp;1D6B8;dm=03A1;FC_NFKC=03C1;gc=Lu;na=MATHEMATICAL BOLD CAPITAL RHO;NFKC_CF=03C1;SB=UP;Upper
-cp;1D6B9;dm=03F4;FC_NFKC=03B8;gc=Lu;na=MATHEMATICAL BOLD CAPITAL THETA SYMBOL;NFKC_CF=03B8;SB=UP;Upper
-cp;1D6BA;dm=03A3;FC_NFKC=03C3;gc=Lu;na=MATHEMATICAL BOLD CAPITAL SIGMA;NFKC_CF=03C3;SB=UP;Upper
-cp;1D6BB;dm=03A4;FC_NFKC=03C4;gc=Lu;na=MATHEMATICAL BOLD CAPITAL TAU;NFKC_CF=03C4;SB=UP;Upper
-cp;1D6BC;dm=03A5;FC_NFKC=03C5;gc=Lu;na=MATHEMATICAL BOLD CAPITAL UPSILON;NFKC_CF=03C5;SB=UP;Upper
-cp;1D6BD;dm=03A6;FC_NFKC=03C6;gc=Lu;na=MATHEMATICAL BOLD CAPITAL PHI;NFKC_CF=03C6;SB=UP;Upper
-cp;1D6BE;dm=03A7;FC_NFKC=03C7;gc=Lu;na=MATHEMATICAL BOLD CAPITAL CHI;NFKC_CF=03C7;SB=UP;Upper
-cp;1D6BF;dm=03A8;FC_NFKC=03C8;gc=Lu;na=MATHEMATICAL BOLD CAPITAL PSI;NFKC_CF=03C8;SB=UP;Upper
-cp;1D6C0;dm=03A9;FC_NFKC=03C9;gc=Lu;na=MATHEMATICAL BOLD CAPITAL OMEGA;NFKC_CF=03C9;SB=UP;Upper
-cp;1D6C1;-Alpha;-Cased;dm=2207;gc=Sm;-IDC;-IDS;na=MATHEMATICAL BOLD NABLA;NFKC_CF=2207;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1D6C2;dm=03B1;Lower;na=MATHEMATICAL BOLD SMALL ALPHA;NFKC_CF=03B1
-cp;1D6C3;dm=03B2;Lower;na=MATHEMATICAL BOLD SMALL BETA;NFKC_CF=03B2
-cp;1D6C4;dm=03B3;Lower;na=MATHEMATICAL BOLD SMALL GAMMA;NFKC_CF=03B3
-cp;1D6C5;dm=03B4;Lower;na=MATHEMATICAL BOLD SMALL DELTA;NFKC_CF=03B4
-cp;1D6C6;dm=03B5;Lower;na=MATHEMATICAL BOLD SMALL EPSILON;NFKC_CF=03B5
-cp;1D6C7;dm=03B6;Lower;na=MATHEMATICAL BOLD SMALL ZETA;NFKC_CF=03B6
-cp;1D6C8;dm=03B7;Lower;na=MATHEMATICAL BOLD SMALL ETA;NFKC_CF=03B7
-cp;1D6C9;dm=03B8;Lower;na=MATHEMATICAL BOLD SMALL THETA;NFKC_CF=03B8
-cp;1D6CA;dm=03B9;Lower;na=MATHEMATICAL BOLD SMALL IOTA;NFKC_CF=03B9
-cp;1D6CB;dm=03BA;Lower;na=MATHEMATICAL BOLD SMALL KAPPA;NFKC_CF=03BA
-cp;1D6CC;dm=03BB;Lower;na=MATHEMATICAL BOLD SMALL LAMDA;NFKC_CF=03BB
-cp;1D6CD;dm=03BC;Lower;na=MATHEMATICAL BOLD SMALL MU;NFKC_CF=03BC
-cp;1D6CE;dm=03BD;Lower;na=MATHEMATICAL BOLD SMALL NU;NFKC_CF=03BD
-cp;1D6CF;dm=03BE;Lower;na=MATHEMATICAL BOLD SMALL XI;NFKC_CF=03BE
-cp;1D6D0;dm=03BF;Lower;na=MATHEMATICAL BOLD SMALL OMICRON;NFKC_CF=03BF
-cp;1D6D1;dm=03C0;Lower;na=MATHEMATICAL BOLD SMALL PI;NFKC_CF=03C0
-cp;1D6D2;dm=03C1;Lower;na=MATHEMATICAL BOLD SMALL RHO;NFKC_CF=03C1
-cp;1D6D3;dm=03C2;FC_NFKC=03C3;Lower;na=MATHEMATICAL BOLD SMALL FINAL SIGMA;NFKC_CF=03C3
-cp;1D6D4;dm=03C3;Lower;na=MATHEMATICAL BOLD SMALL SIGMA;NFKC_CF=03C3
-cp;1D6D5;dm=03C4;Lower;na=MATHEMATICAL BOLD SMALL TAU;NFKC_CF=03C4
-cp;1D6D6;dm=03C5;Lower;na=MATHEMATICAL BOLD SMALL UPSILON;NFKC_CF=03C5
-cp;1D6D7;dm=03C6;Lower;na=MATHEMATICAL BOLD SMALL PHI;NFKC_CF=03C6
-cp;1D6D8;dm=03C7;Lower;na=MATHEMATICAL BOLD SMALL CHI;NFKC_CF=03C7
-cp;1D6D9;dm=03C8;Lower;na=MATHEMATICAL BOLD SMALL PSI;NFKC_CF=03C8
-cp;1D6DA;dm=03C9;Lower;na=MATHEMATICAL BOLD SMALL OMEGA;NFKC_CF=03C9
+cp;1D6A8;dm=0391;FC_NFKC=03B1;gc=Lu;na=MATHEMATICAL BOLD CAPITAL ALPHA;NFKC_CF=03B1;NFKC_SCF=03B1;SB=UP;Upper
+cp;1D6A9;dm=0392;FC_NFKC=03B2;gc=Lu;na=MATHEMATICAL BOLD CAPITAL BETA;NFKC_CF=03B2;NFKC_SCF=03B2;SB=UP;Upper
+cp;1D6AA;dm=0393;FC_NFKC=03B3;gc=Lu;na=MATHEMATICAL BOLD CAPITAL GAMMA;NFKC_CF=03B3;NFKC_SCF=03B3;SB=UP;Upper
+cp;1D6AB;dm=0394;FC_NFKC=03B4;gc=Lu;na=MATHEMATICAL BOLD CAPITAL DELTA;NFKC_CF=03B4;NFKC_SCF=03B4;SB=UP;Upper
+cp;1D6AC;dm=0395;FC_NFKC=03B5;gc=Lu;na=MATHEMATICAL BOLD CAPITAL EPSILON;NFKC_CF=03B5;NFKC_SCF=03B5;SB=UP;Upper
+cp;1D6AD;dm=0396;FC_NFKC=03B6;gc=Lu;na=MATHEMATICAL BOLD CAPITAL ZETA;NFKC_CF=03B6;NFKC_SCF=03B6;SB=UP;Upper
+cp;1D6AE;dm=0397;FC_NFKC=03B7;gc=Lu;na=MATHEMATICAL BOLD CAPITAL ETA;NFKC_CF=03B7;NFKC_SCF=03B7;SB=UP;Upper
+cp;1D6AF;dm=0398;FC_NFKC=03B8;gc=Lu;na=MATHEMATICAL BOLD CAPITAL THETA;NFKC_CF=03B8;NFKC_SCF=03B8;SB=UP;Upper
+cp;1D6B0;dm=0399;FC_NFKC=03B9;gc=Lu;na=MATHEMATICAL BOLD CAPITAL IOTA;NFKC_CF=03B9;NFKC_SCF=03B9;SB=UP;Upper
+cp;1D6B1;dm=039A;FC_NFKC=03BA;gc=Lu;na=MATHEMATICAL BOLD CAPITAL KAPPA;NFKC_CF=03BA;NFKC_SCF=03BA;SB=UP;Upper
+cp;1D6B2;dm=039B;FC_NFKC=03BB;gc=Lu;na=MATHEMATICAL BOLD CAPITAL LAMDA;NFKC_CF=03BB;NFKC_SCF=03BB;SB=UP;Upper
+cp;1D6B3;dm=039C;FC_NFKC=03BC;gc=Lu;na=MATHEMATICAL BOLD CAPITAL MU;NFKC_CF=03BC;NFKC_SCF=03BC;SB=UP;Upper
+cp;1D6B4;dm=039D;FC_NFKC=03BD;gc=Lu;na=MATHEMATICAL BOLD CAPITAL NU;NFKC_CF=03BD;NFKC_SCF=03BD;SB=UP;Upper
+cp;1D6B5;dm=039E;FC_NFKC=03BE;gc=Lu;na=MATHEMATICAL BOLD CAPITAL XI;NFKC_CF=03BE;NFKC_SCF=03BE;SB=UP;Upper
+cp;1D6B6;dm=039F;FC_NFKC=03BF;gc=Lu;na=MATHEMATICAL BOLD CAPITAL OMICRON;NFKC_CF=03BF;NFKC_SCF=03BF;SB=UP;Upper
+cp;1D6B7;dm=03A0;FC_NFKC=03C0;gc=Lu;na=MATHEMATICAL BOLD CAPITAL PI;NFKC_CF=03C0;NFKC_SCF=03C0;SB=UP;Upper
+cp;1D6B8;dm=03A1;FC_NFKC=03C1;gc=Lu;na=MATHEMATICAL BOLD CAPITAL RHO;NFKC_CF=03C1;NFKC_SCF=03C1;SB=UP;Upper
+cp;1D6B9;dm=03F4;FC_NFKC=03B8;gc=Lu;na=MATHEMATICAL BOLD CAPITAL THETA SYMBOL;NFKC_CF=03B8;NFKC_SCF=03B8;SB=UP;Upper
+cp;1D6BA;dm=03A3;FC_NFKC=03C3;gc=Lu;na=MATHEMATICAL BOLD CAPITAL SIGMA;NFKC_CF=03C3;NFKC_SCF=03C3;SB=UP;Upper
+cp;1D6BB;dm=03A4;FC_NFKC=03C4;gc=Lu;na=MATHEMATICAL BOLD CAPITAL TAU;NFKC_CF=03C4;NFKC_SCF=03C4;SB=UP;Upper
+cp;1D6BC;dm=03A5;FC_NFKC=03C5;gc=Lu;na=MATHEMATICAL BOLD CAPITAL UPSILON;NFKC_CF=03C5;NFKC_SCF=03C5;SB=UP;Upper
+cp;1D6BD;dm=03A6;FC_NFKC=03C6;gc=Lu;na=MATHEMATICAL BOLD CAPITAL PHI;NFKC_CF=03C6;NFKC_SCF=03C6;SB=UP;Upper
+cp;1D6BE;dm=03A7;FC_NFKC=03C7;gc=Lu;na=MATHEMATICAL BOLD CAPITAL CHI;NFKC_CF=03C7;NFKC_SCF=03C7;SB=UP;Upper
+cp;1D6BF;dm=03A8;FC_NFKC=03C8;gc=Lu;na=MATHEMATICAL BOLD CAPITAL PSI;NFKC_CF=03C8;NFKC_SCF=03C8;SB=UP;Upper
+cp;1D6C0;dm=03A9;FC_NFKC=03C9;gc=Lu;na=MATHEMATICAL BOLD CAPITAL OMEGA;NFKC_CF=03C9;NFKC_SCF=03C9;SB=UP;Upper
+cp;1D6C1;-Alpha;-Cased;dm=2207;gc=Sm;-IDC;ID_Compat_Math_Continue;ID_Compat_Math_Start;-IDS;na=MATHEMATICAL BOLD NABLA;NFKC_CF=2207;NFKC_SCF=2207;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1D6C2;dm=03B1;Lower;na=MATHEMATICAL BOLD SMALL ALPHA;NFKC_CF=03B1;NFKC_SCF=03B1
+cp;1D6C3;dm=03B2;Lower;na=MATHEMATICAL BOLD SMALL BETA;NFKC_CF=03B2;NFKC_SCF=03B2
+cp;1D6C4;dm=03B3;Lower;na=MATHEMATICAL BOLD SMALL GAMMA;NFKC_CF=03B3;NFKC_SCF=03B3
+cp;1D6C5;dm=03B4;Lower;na=MATHEMATICAL BOLD SMALL DELTA;NFKC_CF=03B4;NFKC_SCF=03B4
+cp;1D6C6;dm=03B5;Lower;na=MATHEMATICAL BOLD SMALL EPSILON;NFKC_CF=03B5;NFKC_SCF=03B5
+cp;1D6C7;dm=03B6;Lower;na=MATHEMATICAL BOLD SMALL ZETA;NFKC_CF=03B6;NFKC_SCF=03B6
+cp;1D6C8;dm=03B7;Lower;na=MATHEMATICAL BOLD SMALL ETA;NFKC_CF=03B7;NFKC_SCF=03B7
+cp;1D6C9;dm=03B8;Lower;na=MATHEMATICAL BOLD SMALL THETA;NFKC_CF=03B8;NFKC_SCF=03B8
+cp;1D6CA;dm=03B9;Lower;na=MATHEMATICAL BOLD SMALL IOTA;NFKC_CF=03B9;NFKC_SCF=03B9
+cp;1D6CB;dm=03BA;Lower;na=MATHEMATICAL BOLD SMALL KAPPA;NFKC_CF=03BA;NFKC_SCF=03BA
+cp;1D6CC;dm=03BB;Lower;na=MATHEMATICAL BOLD SMALL LAMDA;NFKC_CF=03BB;NFKC_SCF=03BB
+cp;1D6CD;dm=03BC;Lower;na=MATHEMATICAL BOLD SMALL MU;NFKC_CF=03BC;NFKC_SCF=03BC
+cp;1D6CE;dm=03BD;Lower;na=MATHEMATICAL BOLD SMALL NU;NFKC_CF=03BD;NFKC_SCF=03BD
+cp;1D6CF;dm=03BE;Lower;na=MATHEMATICAL BOLD SMALL XI;NFKC_CF=03BE;NFKC_SCF=03BE
+cp;1D6D0;dm=03BF;Lower;na=MATHEMATICAL BOLD SMALL OMICRON;NFKC_CF=03BF;NFKC_SCF=03BF
+cp;1D6D1;dm=03C0;Lower;na=MATHEMATICAL BOLD SMALL PI;NFKC_CF=03C0;NFKC_SCF=03C0
+cp;1D6D2;dm=03C1;Lower;na=MATHEMATICAL BOLD SMALL RHO;NFKC_CF=03C1;NFKC_SCF=03C1
+cp;1D6D3;dm=03C2;FC_NFKC=03C3;Lower;na=MATHEMATICAL BOLD SMALL FINAL SIGMA;NFKC_CF=03C3;NFKC_SCF=03C3
+cp;1D6D4;dm=03C3;Lower;na=MATHEMATICAL BOLD SMALL SIGMA;NFKC_CF=03C3;NFKC_SCF=03C3
+cp;1D6D5;dm=03C4;Lower;na=MATHEMATICAL BOLD SMALL TAU;NFKC_CF=03C4;NFKC_SCF=03C4
+cp;1D6D6;dm=03C5;Lower;na=MATHEMATICAL BOLD SMALL UPSILON;NFKC_CF=03C5;NFKC_SCF=03C5
+cp;1D6D7;dm=03C6;Lower;na=MATHEMATICAL BOLD SMALL PHI;NFKC_CF=03C6;NFKC_SCF=03C6
+cp;1D6D8;dm=03C7;Lower;na=MATHEMATICAL BOLD SMALL CHI;NFKC_CF=03C7;NFKC_SCF=03C7
+cp;1D6D9;dm=03C8;Lower;na=MATHEMATICAL BOLD SMALL PSI;NFKC_CF=03C8;NFKC_SCF=03C8
+cp;1D6DA;dm=03C9;Lower;na=MATHEMATICAL BOLD SMALL OMEGA;NFKC_CF=03C9;NFKC_SCF=03C9
# Additional bold Greek symbols
-cp;1D6DB;-Alpha;bc=ON;Bidi_M;-Cased;dm=2202;gc=Sm;-IDC;-IDS;na=MATHEMATICAL BOLD PARTIAL DIFFERENTIAL;NFKC_CF=2202;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1D6DC;dm=03F5;Lower;na=MATHEMATICAL BOLD EPSILON SYMBOL;NFKC_CF=03B5
-cp;1D6DD;dm=03D1;Lower;na=MATHEMATICAL BOLD THETA SYMBOL;NFKC_CF=03B8
-cp;1D6DE;dm=03F0;Lower;na=MATHEMATICAL BOLD KAPPA SYMBOL;NFKC_CF=03BA
-cp;1D6DF;dm=03D5;Lower;na=MATHEMATICAL BOLD PHI SYMBOL;NFKC_CF=03C6
-cp;1D6E0;dm=03F1;Lower;na=MATHEMATICAL BOLD RHO SYMBOL;NFKC_CF=03C1
-cp;1D6E1;dm=03D6;Lower;na=MATHEMATICAL BOLD PI SYMBOL;NFKC_CF=03C0
+cp;1D6DB;-Alpha;bc=ON;Bidi_M;-Cased;dm=2202;gc=Sm;-IDC;ID_Compat_Math_Continue;ID_Compat_Math_Start;-IDS;na=MATHEMATICAL BOLD PARTIAL DIFFERENTIAL;NFKC_CF=2202;NFKC_SCF=2202;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1D6DC;dm=03F5;Lower;na=MATHEMATICAL BOLD EPSILON SYMBOL;NFKC_CF=03B5;NFKC_SCF=03B5
+cp;1D6DD;dm=03D1;Lower;na=MATHEMATICAL BOLD THETA SYMBOL;NFKC_CF=03B8;NFKC_SCF=03B8
+cp;1D6DE;dm=03F0;Lower;na=MATHEMATICAL BOLD KAPPA SYMBOL;NFKC_CF=03BA;NFKC_SCF=03BA
+cp;1D6DF;dm=03D5;Lower;na=MATHEMATICAL BOLD PHI SYMBOL;NFKC_CF=03C6;NFKC_SCF=03C6
+cp;1D6E0;dm=03F1;Lower;na=MATHEMATICAL BOLD RHO SYMBOL;NFKC_CF=03C1;NFKC_SCF=03C1
+cp;1D6E1;dm=03D6;Lower;na=MATHEMATICAL BOLD PI SYMBOL;NFKC_CF=03C0;NFKC_SCF=03C0
# Italic Greek symbols
-cp;1D6E2;dm=0391;FC_NFKC=03B1;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL ALPHA;NFKC_CF=03B1;SB=UP;Upper
-cp;1D6E3;dm=0392;FC_NFKC=03B2;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL BETA;NFKC_CF=03B2;SB=UP;Upper
-cp;1D6E4;dm=0393;FC_NFKC=03B3;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL GAMMA;NFKC_CF=03B3;SB=UP;Upper
-cp;1D6E5;dm=0394;FC_NFKC=03B4;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL DELTA;NFKC_CF=03B4;SB=UP;Upper
-cp;1D6E6;dm=0395;FC_NFKC=03B5;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL EPSILON;NFKC_CF=03B5;SB=UP;Upper
-cp;1D6E7;dm=0396;FC_NFKC=03B6;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL ZETA;NFKC_CF=03B6;SB=UP;Upper
-cp;1D6E8;dm=0397;FC_NFKC=03B7;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL ETA;NFKC_CF=03B7;SB=UP;Upper
-cp;1D6E9;dm=0398;FC_NFKC=03B8;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL THETA;NFKC_CF=03B8;SB=UP;Upper
-cp;1D6EA;dm=0399;FC_NFKC=03B9;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL IOTA;NFKC_CF=03B9;SB=UP;Upper
-cp;1D6EB;dm=039A;FC_NFKC=03BA;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL KAPPA;NFKC_CF=03BA;SB=UP;Upper
-cp;1D6EC;dm=039B;FC_NFKC=03BB;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL LAMDA;NFKC_CF=03BB;SB=UP;Upper
-cp;1D6ED;dm=039C;FC_NFKC=03BC;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL MU;NFKC_CF=03BC;SB=UP;Upper
-cp;1D6EE;dm=039D;FC_NFKC=03BD;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL NU;NFKC_CF=03BD;SB=UP;Upper
-cp;1D6EF;dm=039E;FC_NFKC=03BE;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL XI;NFKC_CF=03BE;SB=UP;Upper
-cp;1D6F0;dm=039F;FC_NFKC=03BF;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL OMICRON;NFKC_CF=03BF;SB=UP;Upper
-cp;1D6F1;dm=03A0;FC_NFKC=03C0;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL PI;NFKC_CF=03C0;SB=UP;Upper
-cp;1D6F2;dm=03A1;FC_NFKC=03C1;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL RHO;NFKC_CF=03C1;SB=UP;Upper
-cp;1D6F3;dm=03F4;FC_NFKC=03B8;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL THETA SYMBOL;NFKC_CF=03B8;SB=UP;Upper
-cp;1D6F4;dm=03A3;FC_NFKC=03C3;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL SIGMA;NFKC_CF=03C3;SB=UP;Upper
-cp;1D6F5;dm=03A4;FC_NFKC=03C4;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL TAU;NFKC_CF=03C4;SB=UP;Upper
-cp;1D6F6;dm=03A5;FC_NFKC=03C5;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL UPSILON;NFKC_CF=03C5;SB=UP;Upper
-cp;1D6F7;dm=03A6;FC_NFKC=03C6;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL PHI;NFKC_CF=03C6;SB=UP;Upper
-cp;1D6F8;dm=03A7;FC_NFKC=03C7;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL CHI;NFKC_CF=03C7;SB=UP;Upper
-cp;1D6F9;dm=03A8;FC_NFKC=03C8;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL PSI;NFKC_CF=03C8;SB=UP;Upper
-cp;1D6FA;dm=03A9;FC_NFKC=03C9;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL OMEGA;NFKC_CF=03C9;SB=UP;Upper
-cp;1D6FB;-Alpha;-Cased;dm=2207;gc=Sm;-IDC;-IDS;na=MATHEMATICAL ITALIC NABLA;NFKC_CF=2207;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1D6FC;dm=03B1;Lower;na=MATHEMATICAL ITALIC SMALL ALPHA;NFKC_CF=03B1
-cp;1D6FD;dm=03B2;Lower;na=MATHEMATICAL ITALIC SMALL BETA;NFKC_CF=03B2
-cp;1D6FE;dm=03B3;Lower;na=MATHEMATICAL ITALIC SMALL GAMMA;NFKC_CF=03B3
-cp;1D6FF;dm=03B4;Lower;na=MATHEMATICAL ITALIC SMALL DELTA;NFKC_CF=03B4
-cp;1D700;dm=03B5;Lower;na=MATHEMATICAL ITALIC SMALL EPSILON;NFKC_CF=03B5
-cp;1D701;dm=03B6;Lower;na=MATHEMATICAL ITALIC SMALL ZETA;NFKC_CF=03B6
-cp;1D702;dm=03B7;Lower;na=MATHEMATICAL ITALIC SMALL ETA;NFKC_CF=03B7
-cp;1D703;dm=03B8;Lower;na=MATHEMATICAL ITALIC SMALL THETA;NFKC_CF=03B8
-cp;1D704;dm=03B9;Lower;na=MATHEMATICAL ITALIC SMALL IOTA;NFKC_CF=03B9
-cp;1D705;dm=03BA;Lower;na=MATHEMATICAL ITALIC SMALL KAPPA;NFKC_CF=03BA
-cp;1D706;dm=03BB;Lower;na=MATHEMATICAL ITALIC SMALL LAMDA;NFKC_CF=03BB
-cp;1D707;dm=03BC;Lower;na=MATHEMATICAL ITALIC SMALL MU;NFKC_CF=03BC
-cp;1D708;dm=03BD;Lower;na=MATHEMATICAL ITALIC SMALL NU;NFKC_CF=03BD
-cp;1D709;dm=03BE;Lower;na=MATHEMATICAL ITALIC SMALL XI;NFKC_CF=03BE
-cp;1D70A;dm=03BF;Lower;na=MATHEMATICAL ITALIC SMALL OMICRON;NFKC_CF=03BF
-cp;1D70B;dm=03C0;Lower;na=MATHEMATICAL ITALIC SMALL PI;NFKC_CF=03C0
-cp;1D70C;dm=03C1;Lower;na=MATHEMATICAL ITALIC SMALL RHO;NFKC_CF=03C1
-cp;1D70D;dm=03C2;FC_NFKC=03C3;Lower;na=MATHEMATICAL ITALIC SMALL FINAL SIGMA;NFKC_CF=03C3
-cp;1D70E;dm=03C3;Lower;na=MATHEMATICAL ITALIC SMALL SIGMA;NFKC_CF=03C3
-cp;1D70F;dm=03C4;Lower;na=MATHEMATICAL ITALIC SMALL TAU;NFKC_CF=03C4
-cp;1D710;dm=03C5;Lower;na=MATHEMATICAL ITALIC SMALL UPSILON;NFKC_CF=03C5
-cp;1D711;dm=03C6;Lower;na=MATHEMATICAL ITALIC SMALL PHI;NFKC_CF=03C6
-cp;1D712;dm=03C7;Lower;na=MATHEMATICAL ITALIC SMALL CHI;NFKC_CF=03C7
-cp;1D713;dm=03C8;Lower;na=MATHEMATICAL ITALIC SMALL PSI;NFKC_CF=03C8
-cp;1D714;dm=03C9;Lower;na=MATHEMATICAL ITALIC SMALL OMEGA;NFKC_CF=03C9
+cp;1D6E2;dm=0391;FC_NFKC=03B1;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL ALPHA;NFKC_CF=03B1;NFKC_SCF=03B1;SB=UP;Upper
+cp;1D6E3;dm=0392;FC_NFKC=03B2;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL BETA;NFKC_CF=03B2;NFKC_SCF=03B2;SB=UP;Upper
+cp;1D6E4;dm=0393;FC_NFKC=03B3;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL GAMMA;NFKC_CF=03B3;NFKC_SCF=03B3;SB=UP;Upper
+cp;1D6E5;dm=0394;FC_NFKC=03B4;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL DELTA;NFKC_CF=03B4;NFKC_SCF=03B4;SB=UP;Upper
+cp;1D6E6;dm=0395;FC_NFKC=03B5;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL EPSILON;NFKC_CF=03B5;NFKC_SCF=03B5;SB=UP;Upper
+cp;1D6E7;dm=0396;FC_NFKC=03B6;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL ZETA;NFKC_CF=03B6;NFKC_SCF=03B6;SB=UP;Upper
+cp;1D6E8;dm=0397;FC_NFKC=03B7;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL ETA;NFKC_CF=03B7;NFKC_SCF=03B7;SB=UP;Upper
+cp;1D6E9;dm=0398;FC_NFKC=03B8;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL THETA;NFKC_CF=03B8;NFKC_SCF=03B8;SB=UP;Upper
+cp;1D6EA;dm=0399;FC_NFKC=03B9;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL IOTA;NFKC_CF=03B9;NFKC_SCF=03B9;SB=UP;Upper
+cp;1D6EB;dm=039A;FC_NFKC=03BA;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL KAPPA;NFKC_CF=03BA;NFKC_SCF=03BA;SB=UP;Upper
+cp;1D6EC;dm=039B;FC_NFKC=03BB;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL LAMDA;NFKC_CF=03BB;NFKC_SCF=03BB;SB=UP;Upper
+cp;1D6ED;dm=039C;FC_NFKC=03BC;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL MU;NFKC_CF=03BC;NFKC_SCF=03BC;SB=UP;Upper
+cp;1D6EE;dm=039D;FC_NFKC=03BD;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL NU;NFKC_CF=03BD;NFKC_SCF=03BD;SB=UP;Upper
+cp;1D6EF;dm=039E;FC_NFKC=03BE;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL XI;NFKC_CF=03BE;NFKC_SCF=03BE;SB=UP;Upper
+cp;1D6F0;dm=039F;FC_NFKC=03BF;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL OMICRON;NFKC_CF=03BF;NFKC_SCF=03BF;SB=UP;Upper
+cp;1D6F1;dm=03A0;FC_NFKC=03C0;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL PI;NFKC_CF=03C0;NFKC_SCF=03C0;SB=UP;Upper
+cp;1D6F2;dm=03A1;FC_NFKC=03C1;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL RHO;NFKC_CF=03C1;NFKC_SCF=03C1;SB=UP;Upper
+cp;1D6F3;dm=03F4;FC_NFKC=03B8;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL THETA SYMBOL;NFKC_CF=03B8;NFKC_SCF=03B8;SB=UP;Upper
+cp;1D6F4;dm=03A3;FC_NFKC=03C3;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL SIGMA;NFKC_CF=03C3;NFKC_SCF=03C3;SB=UP;Upper
+cp;1D6F5;dm=03A4;FC_NFKC=03C4;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL TAU;NFKC_CF=03C4;NFKC_SCF=03C4;SB=UP;Upper
+cp;1D6F6;dm=03A5;FC_NFKC=03C5;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL UPSILON;NFKC_CF=03C5;NFKC_SCF=03C5;SB=UP;Upper
+cp;1D6F7;dm=03A6;FC_NFKC=03C6;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL PHI;NFKC_CF=03C6;NFKC_SCF=03C6;SB=UP;Upper
+cp;1D6F8;dm=03A7;FC_NFKC=03C7;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL CHI;NFKC_CF=03C7;NFKC_SCF=03C7;SB=UP;Upper
+cp;1D6F9;dm=03A8;FC_NFKC=03C8;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL PSI;NFKC_CF=03C8;NFKC_SCF=03C8;SB=UP;Upper
+cp;1D6FA;dm=03A9;FC_NFKC=03C9;gc=Lu;na=MATHEMATICAL ITALIC CAPITAL OMEGA;NFKC_CF=03C9;NFKC_SCF=03C9;SB=UP;Upper
+cp;1D6FB;-Alpha;-Cased;dm=2207;gc=Sm;-IDC;ID_Compat_Math_Continue;ID_Compat_Math_Start;-IDS;na=MATHEMATICAL ITALIC NABLA;NFKC_CF=2207;NFKC_SCF=2207;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1D6FC;dm=03B1;Lower;na=MATHEMATICAL ITALIC SMALL ALPHA;NFKC_CF=03B1;NFKC_SCF=03B1
+cp;1D6FD;dm=03B2;Lower;na=MATHEMATICAL ITALIC SMALL BETA;NFKC_CF=03B2;NFKC_SCF=03B2
+cp;1D6FE;dm=03B3;Lower;na=MATHEMATICAL ITALIC SMALL GAMMA;NFKC_CF=03B3;NFKC_SCF=03B3
+cp;1D6FF;dm=03B4;Lower;na=MATHEMATICAL ITALIC SMALL DELTA;NFKC_CF=03B4;NFKC_SCF=03B4
+cp;1D700;dm=03B5;Lower;na=MATHEMATICAL ITALIC SMALL EPSILON;NFKC_CF=03B5;NFKC_SCF=03B5
+cp;1D701;dm=03B6;Lower;na=MATHEMATICAL ITALIC SMALL ZETA;NFKC_CF=03B6;NFKC_SCF=03B6
+cp;1D702;dm=03B7;Lower;na=MATHEMATICAL ITALIC SMALL ETA;NFKC_CF=03B7;NFKC_SCF=03B7
+cp;1D703;dm=03B8;Lower;na=MATHEMATICAL ITALIC SMALL THETA;NFKC_CF=03B8;NFKC_SCF=03B8
+cp;1D704;dm=03B9;Lower;na=MATHEMATICAL ITALIC SMALL IOTA;NFKC_CF=03B9;NFKC_SCF=03B9
+cp;1D705;dm=03BA;Lower;na=MATHEMATICAL ITALIC SMALL KAPPA;NFKC_CF=03BA;NFKC_SCF=03BA
+cp;1D706;dm=03BB;Lower;na=MATHEMATICAL ITALIC SMALL LAMDA;NFKC_CF=03BB;NFKC_SCF=03BB
+cp;1D707;dm=03BC;Lower;na=MATHEMATICAL ITALIC SMALL MU;NFKC_CF=03BC;NFKC_SCF=03BC
+cp;1D708;dm=03BD;Lower;na=MATHEMATICAL ITALIC SMALL NU;NFKC_CF=03BD;NFKC_SCF=03BD
+cp;1D709;dm=03BE;Lower;na=MATHEMATICAL ITALIC SMALL XI;NFKC_CF=03BE;NFKC_SCF=03BE
+cp;1D70A;dm=03BF;Lower;na=MATHEMATICAL ITALIC SMALL OMICRON;NFKC_CF=03BF;NFKC_SCF=03BF
+cp;1D70B;dm=03C0;Lower;na=MATHEMATICAL ITALIC SMALL PI;NFKC_CF=03C0;NFKC_SCF=03C0
+cp;1D70C;dm=03C1;Lower;na=MATHEMATICAL ITALIC SMALL RHO;NFKC_CF=03C1;NFKC_SCF=03C1
+cp;1D70D;dm=03C2;FC_NFKC=03C3;Lower;na=MATHEMATICAL ITALIC SMALL FINAL SIGMA;NFKC_CF=03C3;NFKC_SCF=03C3
+cp;1D70E;dm=03C3;Lower;na=MATHEMATICAL ITALIC SMALL SIGMA;NFKC_CF=03C3;NFKC_SCF=03C3
+cp;1D70F;dm=03C4;Lower;na=MATHEMATICAL ITALIC SMALL TAU;NFKC_CF=03C4;NFKC_SCF=03C4
+cp;1D710;dm=03C5;Lower;na=MATHEMATICAL ITALIC SMALL UPSILON;NFKC_CF=03C5;NFKC_SCF=03C5
+cp;1D711;dm=03C6;Lower;na=MATHEMATICAL ITALIC SMALL PHI;NFKC_CF=03C6;NFKC_SCF=03C6
+cp;1D712;dm=03C7;Lower;na=MATHEMATICAL ITALIC SMALL CHI;NFKC_CF=03C7;NFKC_SCF=03C7
+cp;1D713;dm=03C8;Lower;na=MATHEMATICAL ITALIC SMALL PSI;NFKC_CF=03C8;NFKC_SCF=03C8
+cp;1D714;dm=03C9;Lower;na=MATHEMATICAL ITALIC SMALL OMEGA;NFKC_CF=03C9;NFKC_SCF=03C9
# Additional italic Greek symbols
-cp;1D715;-Alpha;bc=ON;Bidi_M;-Cased;dm=2202;gc=Sm;-IDC;-IDS;na=MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL;NFKC_CF=2202;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1D716;dm=03F5;Lower;na=MATHEMATICAL ITALIC EPSILON SYMBOL;NFKC_CF=03B5
-cp;1D717;dm=03D1;Lower;na=MATHEMATICAL ITALIC THETA SYMBOL;NFKC_CF=03B8
-cp;1D718;dm=03F0;Lower;na=MATHEMATICAL ITALIC KAPPA SYMBOL;NFKC_CF=03BA
-cp;1D719;dm=03D5;Lower;na=MATHEMATICAL ITALIC PHI SYMBOL;NFKC_CF=03C6
-cp;1D71A;dm=03F1;Lower;na=MATHEMATICAL ITALIC RHO SYMBOL;NFKC_CF=03C1
-cp;1D71B;dm=03D6;Lower;na=MATHEMATICAL ITALIC PI SYMBOL;NFKC_CF=03C0
+cp;1D715;-Alpha;bc=ON;Bidi_M;-Cased;dm=2202;gc=Sm;-IDC;ID_Compat_Math_Continue;ID_Compat_Math_Start;-IDS;na=MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL;NFKC_CF=2202;NFKC_SCF=2202;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1D716;dm=03F5;Lower;na=MATHEMATICAL ITALIC EPSILON SYMBOL;NFKC_CF=03B5;NFKC_SCF=03B5
+cp;1D717;dm=03D1;Lower;na=MATHEMATICAL ITALIC THETA SYMBOL;NFKC_CF=03B8;NFKC_SCF=03B8
+cp;1D718;dm=03F0;Lower;na=MATHEMATICAL ITALIC KAPPA SYMBOL;NFKC_CF=03BA;NFKC_SCF=03BA
+cp;1D719;dm=03D5;Lower;na=MATHEMATICAL ITALIC PHI SYMBOL;NFKC_CF=03C6;NFKC_SCF=03C6
+cp;1D71A;dm=03F1;Lower;na=MATHEMATICAL ITALIC RHO SYMBOL;NFKC_CF=03C1;NFKC_SCF=03C1
+cp;1D71B;dm=03D6;Lower;na=MATHEMATICAL ITALIC PI SYMBOL;NFKC_CF=03C0;NFKC_SCF=03C0
# Bold italic Greek symbols
-cp;1D71C;dm=0391;FC_NFKC=03B1;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL ALPHA;NFKC_CF=03B1;SB=UP;Upper
-cp;1D71D;dm=0392;FC_NFKC=03B2;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL BETA;NFKC_CF=03B2;SB=UP;Upper
-cp;1D71E;dm=0393;FC_NFKC=03B3;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL GAMMA;NFKC_CF=03B3;SB=UP;Upper
-cp;1D71F;dm=0394;FC_NFKC=03B4;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL DELTA;NFKC_CF=03B4;SB=UP;Upper
-cp;1D720;dm=0395;FC_NFKC=03B5;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL EPSILON;NFKC_CF=03B5;SB=UP;Upper
-cp;1D721;dm=0396;FC_NFKC=03B6;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL ZETA;NFKC_CF=03B6;SB=UP;Upper
-cp;1D722;dm=0397;FC_NFKC=03B7;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL ETA;NFKC_CF=03B7;SB=UP;Upper
-cp;1D723;dm=0398;FC_NFKC=03B8;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL THETA;NFKC_CF=03B8;SB=UP;Upper
-cp;1D724;dm=0399;FC_NFKC=03B9;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL IOTA;NFKC_CF=03B9;SB=UP;Upper
-cp;1D725;dm=039A;FC_NFKC=03BA;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL KAPPA;NFKC_CF=03BA;SB=UP;Upper
-cp;1D726;dm=039B;FC_NFKC=03BB;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL LAMDA;NFKC_CF=03BB;SB=UP;Upper
-cp;1D727;dm=039C;FC_NFKC=03BC;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL MU;NFKC_CF=03BC;SB=UP;Upper
-cp;1D728;dm=039D;FC_NFKC=03BD;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL NU;NFKC_CF=03BD;SB=UP;Upper
-cp;1D729;dm=039E;FC_NFKC=03BE;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL XI;NFKC_CF=03BE;SB=UP;Upper
-cp;1D72A;dm=039F;FC_NFKC=03BF;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL OMICRON;NFKC_CF=03BF;SB=UP;Upper
-cp;1D72B;dm=03A0;FC_NFKC=03C0;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL PI;NFKC_CF=03C0;SB=UP;Upper
-cp;1D72C;dm=03A1;FC_NFKC=03C1;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL RHO;NFKC_CF=03C1;SB=UP;Upper
-cp;1D72D;dm=03F4;FC_NFKC=03B8;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL;NFKC_CF=03B8;SB=UP;Upper
-cp;1D72E;dm=03A3;FC_NFKC=03C3;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL SIGMA;NFKC_CF=03C3;SB=UP;Upper
-cp;1D72F;dm=03A4;FC_NFKC=03C4;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL TAU;NFKC_CF=03C4;SB=UP;Upper
-cp;1D730;dm=03A5;FC_NFKC=03C5;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL UPSILON;NFKC_CF=03C5;SB=UP;Upper
-cp;1D731;dm=03A6;FC_NFKC=03C6;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL PHI;NFKC_CF=03C6;SB=UP;Upper
-cp;1D732;dm=03A7;FC_NFKC=03C7;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL CHI;NFKC_CF=03C7;SB=UP;Upper
-cp;1D733;dm=03A8;FC_NFKC=03C8;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL PSI;NFKC_CF=03C8;SB=UP;Upper
-cp;1D734;dm=03A9;FC_NFKC=03C9;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL OMEGA;NFKC_CF=03C9;SB=UP;Upper
-cp;1D735;-Alpha;-Cased;dm=2207;gc=Sm;-IDC;-IDS;na=MATHEMATICAL BOLD ITALIC NABLA;NFKC_CF=2207;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1D736;dm=03B1;Lower;na=MATHEMATICAL BOLD ITALIC SMALL ALPHA;NFKC_CF=03B1
-cp;1D737;dm=03B2;Lower;na=MATHEMATICAL BOLD ITALIC SMALL BETA;NFKC_CF=03B2
-cp;1D738;dm=03B3;Lower;na=MATHEMATICAL BOLD ITALIC SMALL GAMMA;NFKC_CF=03B3
-cp;1D739;dm=03B4;Lower;na=MATHEMATICAL BOLD ITALIC SMALL DELTA;NFKC_CF=03B4
-cp;1D73A;dm=03B5;Lower;na=MATHEMATICAL BOLD ITALIC SMALL EPSILON;NFKC_CF=03B5
-cp;1D73B;dm=03B6;Lower;na=MATHEMATICAL BOLD ITALIC SMALL ZETA;NFKC_CF=03B6
-cp;1D73C;dm=03B7;Lower;na=MATHEMATICAL BOLD ITALIC SMALL ETA;NFKC_CF=03B7
-cp;1D73D;dm=03B8;Lower;na=MATHEMATICAL BOLD ITALIC SMALL THETA;NFKC_CF=03B8
-cp;1D73E;dm=03B9;Lower;na=MATHEMATICAL BOLD ITALIC SMALL IOTA;NFKC_CF=03B9
-cp;1D73F;dm=03BA;Lower;na=MATHEMATICAL BOLD ITALIC SMALL KAPPA;NFKC_CF=03BA
-cp;1D740;dm=03BB;Lower;na=MATHEMATICAL BOLD ITALIC SMALL LAMDA;NFKC_CF=03BB
-cp;1D741;dm=03BC;Lower;na=MATHEMATICAL BOLD ITALIC SMALL MU;NFKC_CF=03BC
-cp;1D742;dm=03BD;Lower;na=MATHEMATICAL BOLD ITALIC SMALL NU;NFKC_CF=03BD
-cp;1D743;dm=03BE;Lower;na=MATHEMATICAL BOLD ITALIC SMALL XI;NFKC_CF=03BE
-cp;1D744;dm=03BF;Lower;na=MATHEMATICAL BOLD ITALIC SMALL OMICRON;NFKC_CF=03BF
-cp;1D745;dm=03C0;Lower;na=MATHEMATICAL BOLD ITALIC SMALL PI;NFKC_CF=03C0
-cp;1D746;dm=03C1;Lower;na=MATHEMATICAL BOLD ITALIC SMALL RHO;NFKC_CF=03C1
-cp;1D747;dm=03C2;FC_NFKC=03C3;Lower;na=MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA;NFKC_CF=03C3
-cp;1D748;dm=03C3;Lower;na=MATHEMATICAL BOLD ITALIC SMALL SIGMA;NFKC_CF=03C3
-cp;1D749;dm=03C4;Lower;na=MATHEMATICAL BOLD ITALIC SMALL TAU;NFKC_CF=03C4
-cp;1D74A;dm=03C5;Lower;na=MATHEMATICAL BOLD ITALIC SMALL UPSILON;NFKC_CF=03C5
-cp;1D74B;dm=03C6;Lower;na=MATHEMATICAL BOLD ITALIC SMALL PHI;NFKC_CF=03C6
-cp;1D74C;dm=03C7;Lower;na=MATHEMATICAL BOLD ITALIC SMALL CHI;NFKC_CF=03C7
-cp;1D74D;dm=03C8;Lower;na=MATHEMATICAL BOLD ITALIC SMALL PSI;NFKC_CF=03C8
-cp;1D74E;dm=03C9;Lower;na=MATHEMATICAL BOLD ITALIC SMALL OMEGA;NFKC_CF=03C9
+cp;1D71C;dm=0391;FC_NFKC=03B1;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL ALPHA;NFKC_CF=03B1;NFKC_SCF=03B1;SB=UP;Upper
+cp;1D71D;dm=0392;FC_NFKC=03B2;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL BETA;NFKC_CF=03B2;NFKC_SCF=03B2;SB=UP;Upper
+cp;1D71E;dm=0393;FC_NFKC=03B3;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL GAMMA;NFKC_CF=03B3;NFKC_SCF=03B3;SB=UP;Upper
+cp;1D71F;dm=0394;FC_NFKC=03B4;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL DELTA;NFKC_CF=03B4;NFKC_SCF=03B4;SB=UP;Upper
+cp;1D720;dm=0395;FC_NFKC=03B5;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL EPSILON;NFKC_CF=03B5;NFKC_SCF=03B5;SB=UP;Upper
+cp;1D721;dm=0396;FC_NFKC=03B6;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL ZETA;NFKC_CF=03B6;NFKC_SCF=03B6;SB=UP;Upper
+cp;1D722;dm=0397;FC_NFKC=03B7;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL ETA;NFKC_CF=03B7;NFKC_SCF=03B7;SB=UP;Upper
+cp;1D723;dm=0398;FC_NFKC=03B8;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL THETA;NFKC_CF=03B8;NFKC_SCF=03B8;SB=UP;Upper
+cp;1D724;dm=0399;FC_NFKC=03B9;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL IOTA;NFKC_CF=03B9;NFKC_SCF=03B9;SB=UP;Upper
+cp;1D725;dm=039A;FC_NFKC=03BA;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL KAPPA;NFKC_CF=03BA;NFKC_SCF=03BA;SB=UP;Upper
+cp;1D726;dm=039B;FC_NFKC=03BB;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL LAMDA;NFKC_CF=03BB;NFKC_SCF=03BB;SB=UP;Upper
+cp;1D727;dm=039C;FC_NFKC=03BC;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL MU;NFKC_CF=03BC;NFKC_SCF=03BC;SB=UP;Upper
+cp;1D728;dm=039D;FC_NFKC=03BD;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL NU;NFKC_CF=03BD;NFKC_SCF=03BD;SB=UP;Upper
+cp;1D729;dm=039E;FC_NFKC=03BE;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL XI;NFKC_CF=03BE;NFKC_SCF=03BE;SB=UP;Upper
+cp;1D72A;dm=039F;FC_NFKC=03BF;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL OMICRON;NFKC_CF=03BF;NFKC_SCF=03BF;SB=UP;Upper
+cp;1D72B;dm=03A0;FC_NFKC=03C0;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL PI;NFKC_CF=03C0;NFKC_SCF=03C0;SB=UP;Upper
+cp;1D72C;dm=03A1;FC_NFKC=03C1;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL RHO;NFKC_CF=03C1;NFKC_SCF=03C1;SB=UP;Upper
+cp;1D72D;dm=03F4;FC_NFKC=03B8;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL;NFKC_CF=03B8;NFKC_SCF=03B8;SB=UP;Upper
+cp;1D72E;dm=03A3;FC_NFKC=03C3;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL SIGMA;NFKC_CF=03C3;NFKC_SCF=03C3;SB=UP;Upper
+cp;1D72F;dm=03A4;FC_NFKC=03C4;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL TAU;NFKC_CF=03C4;NFKC_SCF=03C4;SB=UP;Upper
+cp;1D730;dm=03A5;FC_NFKC=03C5;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL UPSILON;NFKC_CF=03C5;NFKC_SCF=03C5;SB=UP;Upper
+cp;1D731;dm=03A6;FC_NFKC=03C6;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL PHI;NFKC_CF=03C6;NFKC_SCF=03C6;SB=UP;Upper
+cp;1D732;dm=03A7;FC_NFKC=03C7;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL CHI;NFKC_CF=03C7;NFKC_SCF=03C7;SB=UP;Upper
+cp;1D733;dm=03A8;FC_NFKC=03C8;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL PSI;NFKC_CF=03C8;NFKC_SCF=03C8;SB=UP;Upper
+cp;1D734;dm=03A9;FC_NFKC=03C9;gc=Lu;na=MATHEMATICAL BOLD ITALIC CAPITAL OMEGA;NFKC_CF=03C9;NFKC_SCF=03C9;SB=UP;Upper
+cp;1D735;-Alpha;-Cased;dm=2207;gc=Sm;-IDC;ID_Compat_Math_Continue;ID_Compat_Math_Start;-IDS;na=MATHEMATICAL BOLD ITALIC NABLA;NFKC_CF=2207;NFKC_SCF=2207;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1D736;dm=03B1;Lower;na=MATHEMATICAL BOLD ITALIC SMALL ALPHA;NFKC_CF=03B1;NFKC_SCF=03B1
+cp;1D737;dm=03B2;Lower;na=MATHEMATICAL BOLD ITALIC SMALL BETA;NFKC_CF=03B2;NFKC_SCF=03B2
+cp;1D738;dm=03B3;Lower;na=MATHEMATICAL BOLD ITALIC SMALL GAMMA;NFKC_CF=03B3;NFKC_SCF=03B3
+cp;1D739;dm=03B4;Lower;na=MATHEMATICAL BOLD ITALIC SMALL DELTA;NFKC_CF=03B4;NFKC_SCF=03B4
+cp;1D73A;dm=03B5;Lower;na=MATHEMATICAL BOLD ITALIC SMALL EPSILON;NFKC_CF=03B5;NFKC_SCF=03B5
+cp;1D73B;dm=03B6;Lower;na=MATHEMATICAL BOLD ITALIC SMALL ZETA;NFKC_CF=03B6;NFKC_SCF=03B6
+cp;1D73C;dm=03B7;Lower;na=MATHEMATICAL BOLD ITALIC SMALL ETA;NFKC_CF=03B7;NFKC_SCF=03B7
+cp;1D73D;dm=03B8;Lower;na=MATHEMATICAL BOLD ITALIC SMALL THETA;NFKC_CF=03B8;NFKC_SCF=03B8
+cp;1D73E;dm=03B9;Lower;na=MATHEMATICAL BOLD ITALIC SMALL IOTA;NFKC_CF=03B9;NFKC_SCF=03B9
+cp;1D73F;dm=03BA;Lower;na=MATHEMATICAL BOLD ITALIC SMALL KAPPA;NFKC_CF=03BA;NFKC_SCF=03BA
+cp;1D740;dm=03BB;Lower;na=MATHEMATICAL BOLD ITALIC SMALL LAMDA;NFKC_CF=03BB;NFKC_SCF=03BB
+cp;1D741;dm=03BC;Lower;na=MATHEMATICAL BOLD ITALIC SMALL MU;NFKC_CF=03BC;NFKC_SCF=03BC
+cp;1D742;dm=03BD;Lower;na=MATHEMATICAL BOLD ITALIC SMALL NU;NFKC_CF=03BD;NFKC_SCF=03BD
+cp;1D743;dm=03BE;Lower;na=MATHEMATICAL BOLD ITALIC SMALL XI;NFKC_CF=03BE;NFKC_SCF=03BE
+cp;1D744;dm=03BF;Lower;na=MATHEMATICAL BOLD ITALIC SMALL OMICRON;NFKC_CF=03BF;NFKC_SCF=03BF
+cp;1D745;dm=03C0;Lower;na=MATHEMATICAL BOLD ITALIC SMALL PI;NFKC_CF=03C0;NFKC_SCF=03C0
+cp;1D746;dm=03C1;Lower;na=MATHEMATICAL BOLD ITALIC SMALL RHO;NFKC_CF=03C1;NFKC_SCF=03C1
+cp;1D747;dm=03C2;FC_NFKC=03C3;Lower;na=MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA;NFKC_CF=03C3;NFKC_SCF=03C3
+cp;1D748;dm=03C3;Lower;na=MATHEMATICAL BOLD ITALIC SMALL SIGMA;NFKC_CF=03C3;NFKC_SCF=03C3
+cp;1D749;dm=03C4;Lower;na=MATHEMATICAL BOLD ITALIC SMALL TAU;NFKC_CF=03C4;NFKC_SCF=03C4
+cp;1D74A;dm=03C5;Lower;na=MATHEMATICAL BOLD ITALIC SMALL UPSILON;NFKC_CF=03C5;NFKC_SCF=03C5
+cp;1D74B;dm=03C6;Lower;na=MATHEMATICAL BOLD ITALIC SMALL PHI;NFKC_CF=03C6;NFKC_SCF=03C6
+cp;1D74C;dm=03C7;Lower;na=MATHEMATICAL BOLD ITALIC SMALL CHI;NFKC_CF=03C7;NFKC_SCF=03C7
+cp;1D74D;dm=03C8;Lower;na=MATHEMATICAL BOLD ITALIC SMALL PSI;NFKC_CF=03C8;NFKC_SCF=03C8
+cp;1D74E;dm=03C9;Lower;na=MATHEMATICAL BOLD ITALIC SMALL OMEGA;NFKC_CF=03C9;NFKC_SCF=03C9
# Additional bold italic Greek symbols
-cp;1D74F;-Alpha;bc=ON;Bidi_M;-Cased;dm=2202;gc=Sm;-IDC;-IDS;na=MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL;NFKC_CF=2202;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1D750;dm=03F5;Lower;na=MATHEMATICAL BOLD ITALIC EPSILON SYMBOL;NFKC_CF=03B5
-cp;1D751;dm=03D1;Lower;na=MATHEMATICAL BOLD ITALIC THETA SYMBOL;NFKC_CF=03B8
-cp;1D752;dm=03F0;Lower;na=MATHEMATICAL BOLD ITALIC KAPPA SYMBOL;NFKC_CF=03BA
-cp;1D753;dm=03D5;Lower;na=MATHEMATICAL BOLD ITALIC PHI SYMBOL;NFKC_CF=03C6
-cp;1D754;dm=03F1;Lower;na=MATHEMATICAL BOLD ITALIC RHO SYMBOL;NFKC_CF=03C1
-cp;1D755;dm=03D6;Lower;na=MATHEMATICAL BOLD ITALIC PI SYMBOL;NFKC_CF=03C0
+cp;1D74F;-Alpha;bc=ON;Bidi_M;-Cased;dm=2202;gc=Sm;-IDC;ID_Compat_Math_Continue;ID_Compat_Math_Start;-IDS;na=MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL;NFKC_CF=2202;NFKC_SCF=2202;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1D750;dm=03F5;Lower;na=MATHEMATICAL BOLD ITALIC EPSILON SYMBOL;NFKC_CF=03B5;NFKC_SCF=03B5
+cp;1D751;dm=03D1;Lower;na=MATHEMATICAL BOLD ITALIC THETA SYMBOL;NFKC_CF=03B8;NFKC_SCF=03B8
+cp;1D752;dm=03F0;Lower;na=MATHEMATICAL BOLD ITALIC KAPPA SYMBOL;NFKC_CF=03BA;NFKC_SCF=03BA
+cp;1D753;dm=03D5;Lower;na=MATHEMATICAL BOLD ITALIC PHI SYMBOL;NFKC_CF=03C6;NFKC_SCF=03C6
+cp;1D754;dm=03F1;Lower;na=MATHEMATICAL BOLD ITALIC RHO SYMBOL;NFKC_CF=03C1;NFKC_SCF=03C1
+cp;1D755;dm=03D6;Lower;na=MATHEMATICAL BOLD ITALIC PI SYMBOL;NFKC_CF=03C0;NFKC_SCF=03C0
# Sans-serif bold Greek symbols
-cp;1D756;dm=0391;FC_NFKC=03B1;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA;NFKC_CF=03B1;SB=UP;Upper
-cp;1D757;dm=0392;FC_NFKC=03B2;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA;NFKC_CF=03B2;SB=UP;Upper
-cp;1D758;dm=0393;FC_NFKC=03B3;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA;NFKC_CF=03B3;SB=UP;Upper
-cp;1D759;dm=0394;FC_NFKC=03B4;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA;NFKC_CF=03B4;SB=UP;Upper
-cp;1D75A;dm=0395;FC_NFKC=03B5;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON;NFKC_CF=03B5;SB=UP;Upper
-cp;1D75B;dm=0396;FC_NFKC=03B6;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA;NFKC_CF=03B6;SB=UP;Upper
-cp;1D75C;dm=0397;FC_NFKC=03B7;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA;NFKC_CF=03B7;SB=UP;Upper
-cp;1D75D;dm=0398;FC_NFKC=03B8;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA;NFKC_CF=03B8;SB=UP;Upper
-cp;1D75E;dm=0399;FC_NFKC=03B9;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA;NFKC_CF=03B9;SB=UP;Upper
-cp;1D75F;dm=039A;FC_NFKC=03BA;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA;NFKC_CF=03BA;SB=UP;Upper
-cp;1D760;dm=039B;FC_NFKC=03BB;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA;NFKC_CF=03BB;SB=UP;Upper
-cp;1D761;dm=039C;FC_NFKC=03BC;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL MU;NFKC_CF=03BC;SB=UP;Upper
-cp;1D762;dm=039D;FC_NFKC=03BD;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL NU;NFKC_CF=03BD;SB=UP;Upper
-cp;1D763;dm=039E;FC_NFKC=03BE;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL XI;NFKC_CF=03BE;SB=UP;Upper
-cp;1D764;dm=039F;FC_NFKC=03BF;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON;NFKC_CF=03BF;SB=UP;Upper
-cp;1D765;dm=03A0;FC_NFKC=03C0;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL PI;NFKC_CF=03C0;SB=UP;Upper
-cp;1D766;dm=03A1;FC_NFKC=03C1;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO;NFKC_CF=03C1;SB=UP;Upper
-cp;1D767;dm=03F4;FC_NFKC=03B8;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL;NFKC_CF=03B8;SB=UP;Upper
-cp;1D768;dm=03A3;FC_NFKC=03C3;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA;NFKC_CF=03C3;SB=UP;Upper
-cp;1D769;dm=03A4;FC_NFKC=03C4;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU;NFKC_CF=03C4;SB=UP;Upper
-cp;1D76A;dm=03A5;FC_NFKC=03C5;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON;NFKC_CF=03C5;SB=UP;Upper
-cp;1D76B;dm=03A6;FC_NFKC=03C6;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI;NFKC_CF=03C6;SB=UP;Upper
-cp;1D76C;dm=03A7;FC_NFKC=03C7;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI;NFKC_CF=03C7;SB=UP;Upper
-cp;1D76D;dm=03A8;FC_NFKC=03C8;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI;NFKC_CF=03C8;SB=UP;Upper
-cp;1D76E;dm=03A9;FC_NFKC=03C9;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA;NFKC_CF=03C9;SB=UP;Upper
-cp;1D76F;-Alpha;-Cased;dm=2207;gc=Sm;-IDC;-IDS;na=MATHEMATICAL SANS-SERIF BOLD NABLA;NFKC_CF=2207;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1D770;dm=03B1;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA;NFKC_CF=03B1
-cp;1D771;dm=03B2;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL BETA;NFKC_CF=03B2
-cp;1D772;dm=03B3;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA;NFKC_CF=03B3
-cp;1D773;dm=03B4;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL DELTA;NFKC_CF=03B4
-cp;1D774;dm=03B5;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON;NFKC_CF=03B5
-cp;1D775;dm=03B6;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL ZETA;NFKC_CF=03B6
-cp;1D776;dm=03B7;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL ETA;NFKC_CF=03B7
-cp;1D777;dm=03B8;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL THETA;NFKC_CF=03B8
-cp;1D778;dm=03B9;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL IOTA;NFKC_CF=03B9
-cp;1D779;dm=03BA;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA;NFKC_CF=03BA
-cp;1D77A;dm=03BB;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA;NFKC_CF=03BB
-cp;1D77B;dm=03BC;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL MU;NFKC_CF=03BC
-cp;1D77C;dm=03BD;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL NU;NFKC_CF=03BD
-cp;1D77D;dm=03BE;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL XI;NFKC_CF=03BE
-cp;1D77E;dm=03BF;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON;NFKC_CF=03BF
-cp;1D77F;dm=03C0;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL PI;NFKC_CF=03C0
-cp;1D780;dm=03C1;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL RHO;NFKC_CF=03C1
-cp;1D781;dm=03C2;FC_NFKC=03C3;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA;NFKC_CF=03C3
-cp;1D782;dm=03C3;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA;NFKC_CF=03C3
-cp;1D783;dm=03C4;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL TAU;NFKC_CF=03C4
-cp;1D784;dm=03C5;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON;NFKC_CF=03C5
-cp;1D785;dm=03C6;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL PHI;NFKC_CF=03C6
-cp;1D786;dm=03C7;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL CHI;NFKC_CF=03C7
-cp;1D787;dm=03C8;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL PSI;NFKC_CF=03C8
-cp;1D788;dm=03C9;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA;NFKC_CF=03C9
+cp;1D756;dm=0391;FC_NFKC=03B1;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA;NFKC_CF=03B1;NFKC_SCF=03B1;SB=UP;Upper
+cp;1D757;dm=0392;FC_NFKC=03B2;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA;NFKC_CF=03B2;NFKC_SCF=03B2;SB=UP;Upper
+cp;1D758;dm=0393;FC_NFKC=03B3;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA;NFKC_CF=03B3;NFKC_SCF=03B3;SB=UP;Upper
+cp;1D759;dm=0394;FC_NFKC=03B4;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA;NFKC_CF=03B4;NFKC_SCF=03B4;SB=UP;Upper
+cp;1D75A;dm=0395;FC_NFKC=03B5;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON;NFKC_CF=03B5;NFKC_SCF=03B5;SB=UP;Upper
+cp;1D75B;dm=0396;FC_NFKC=03B6;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA;NFKC_CF=03B6;NFKC_SCF=03B6;SB=UP;Upper
+cp;1D75C;dm=0397;FC_NFKC=03B7;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA;NFKC_CF=03B7;NFKC_SCF=03B7;SB=UP;Upper
+cp;1D75D;dm=0398;FC_NFKC=03B8;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA;NFKC_CF=03B8;NFKC_SCF=03B8;SB=UP;Upper
+cp;1D75E;dm=0399;FC_NFKC=03B9;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA;NFKC_CF=03B9;NFKC_SCF=03B9;SB=UP;Upper
+cp;1D75F;dm=039A;FC_NFKC=03BA;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA;NFKC_CF=03BA;NFKC_SCF=03BA;SB=UP;Upper
+cp;1D760;dm=039B;FC_NFKC=03BB;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA;NFKC_CF=03BB;NFKC_SCF=03BB;SB=UP;Upper
+cp;1D761;dm=039C;FC_NFKC=03BC;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL MU;NFKC_CF=03BC;NFKC_SCF=03BC;SB=UP;Upper
+cp;1D762;dm=039D;FC_NFKC=03BD;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL NU;NFKC_CF=03BD;NFKC_SCF=03BD;SB=UP;Upper
+cp;1D763;dm=039E;FC_NFKC=03BE;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL XI;NFKC_CF=03BE;NFKC_SCF=03BE;SB=UP;Upper
+cp;1D764;dm=039F;FC_NFKC=03BF;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON;NFKC_CF=03BF;NFKC_SCF=03BF;SB=UP;Upper
+cp;1D765;dm=03A0;FC_NFKC=03C0;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL PI;NFKC_CF=03C0;NFKC_SCF=03C0;SB=UP;Upper
+cp;1D766;dm=03A1;FC_NFKC=03C1;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO;NFKC_CF=03C1;NFKC_SCF=03C1;SB=UP;Upper
+cp;1D767;dm=03F4;FC_NFKC=03B8;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL;NFKC_CF=03B8;NFKC_SCF=03B8;SB=UP;Upper
+cp;1D768;dm=03A3;FC_NFKC=03C3;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA;NFKC_CF=03C3;NFKC_SCF=03C3;SB=UP;Upper
+cp;1D769;dm=03A4;FC_NFKC=03C4;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU;NFKC_CF=03C4;NFKC_SCF=03C4;SB=UP;Upper
+cp;1D76A;dm=03A5;FC_NFKC=03C5;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON;NFKC_CF=03C5;NFKC_SCF=03C5;SB=UP;Upper
+cp;1D76B;dm=03A6;FC_NFKC=03C6;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI;NFKC_CF=03C6;NFKC_SCF=03C6;SB=UP;Upper
+cp;1D76C;dm=03A7;FC_NFKC=03C7;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI;NFKC_CF=03C7;NFKC_SCF=03C7;SB=UP;Upper
+cp;1D76D;dm=03A8;FC_NFKC=03C8;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI;NFKC_CF=03C8;NFKC_SCF=03C8;SB=UP;Upper
+cp;1D76E;dm=03A9;FC_NFKC=03C9;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA;NFKC_CF=03C9;NFKC_SCF=03C9;SB=UP;Upper
+cp;1D76F;-Alpha;-Cased;dm=2207;gc=Sm;-IDC;ID_Compat_Math_Continue;ID_Compat_Math_Start;-IDS;na=MATHEMATICAL SANS-SERIF BOLD NABLA;NFKC_CF=2207;NFKC_SCF=2207;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1D770;dm=03B1;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA;NFKC_CF=03B1;NFKC_SCF=03B1
+cp;1D771;dm=03B2;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL BETA;NFKC_CF=03B2;NFKC_SCF=03B2
+cp;1D772;dm=03B3;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA;NFKC_CF=03B3;NFKC_SCF=03B3
+cp;1D773;dm=03B4;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL DELTA;NFKC_CF=03B4;NFKC_SCF=03B4
+cp;1D774;dm=03B5;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON;NFKC_CF=03B5;NFKC_SCF=03B5
+cp;1D775;dm=03B6;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL ZETA;NFKC_CF=03B6;NFKC_SCF=03B6
+cp;1D776;dm=03B7;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL ETA;NFKC_CF=03B7;NFKC_SCF=03B7
+cp;1D777;dm=03B8;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL THETA;NFKC_CF=03B8;NFKC_SCF=03B8
+cp;1D778;dm=03B9;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL IOTA;NFKC_CF=03B9;NFKC_SCF=03B9
+cp;1D779;dm=03BA;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA;NFKC_CF=03BA;NFKC_SCF=03BA
+cp;1D77A;dm=03BB;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA;NFKC_CF=03BB;NFKC_SCF=03BB
+cp;1D77B;dm=03BC;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL MU;NFKC_CF=03BC;NFKC_SCF=03BC
+cp;1D77C;dm=03BD;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL NU;NFKC_CF=03BD;NFKC_SCF=03BD
+cp;1D77D;dm=03BE;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL XI;NFKC_CF=03BE;NFKC_SCF=03BE
+cp;1D77E;dm=03BF;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON;NFKC_CF=03BF;NFKC_SCF=03BF
+cp;1D77F;dm=03C0;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL PI;NFKC_CF=03C0;NFKC_SCF=03C0
+cp;1D780;dm=03C1;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL RHO;NFKC_CF=03C1;NFKC_SCF=03C1
+cp;1D781;dm=03C2;FC_NFKC=03C3;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA;NFKC_CF=03C3;NFKC_SCF=03C3
+cp;1D782;dm=03C3;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA;NFKC_CF=03C3;NFKC_SCF=03C3
+cp;1D783;dm=03C4;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL TAU;NFKC_CF=03C4;NFKC_SCF=03C4
+cp;1D784;dm=03C5;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON;NFKC_CF=03C5;NFKC_SCF=03C5
+cp;1D785;dm=03C6;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL PHI;NFKC_CF=03C6;NFKC_SCF=03C6
+cp;1D786;dm=03C7;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL CHI;NFKC_CF=03C7;NFKC_SCF=03C7
+cp;1D787;dm=03C8;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL PSI;NFKC_CF=03C8;NFKC_SCF=03C8
+cp;1D788;dm=03C9;Lower;na=MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA;NFKC_CF=03C9;NFKC_SCF=03C9
# Additional sans-serif bold Greek symbols
-cp;1D789;-Alpha;bc=ON;Bidi_M;-Cased;dm=2202;gc=Sm;-IDC;-IDS;na=MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL;NFKC_CF=2202;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1D78A;dm=03F5;Lower;na=MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL;NFKC_CF=03B5
-cp;1D78B;dm=03D1;Lower;na=MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL;NFKC_CF=03B8
-cp;1D78C;dm=03F0;Lower;na=MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL;NFKC_CF=03BA
-cp;1D78D;dm=03D5;Lower;na=MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL;NFKC_CF=03C6
-cp;1D78E;dm=03F1;Lower;na=MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL;NFKC_CF=03C1
-cp;1D78F;dm=03D6;Lower;na=MATHEMATICAL SANS-SERIF BOLD PI SYMBOL;NFKC_CF=03C0
+cp;1D789;-Alpha;bc=ON;Bidi_M;-Cased;dm=2202;gc=Sm;-IDC;ID_Compat_Math_Continue;ID_Compat_Math_Start;-IDS;na=MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL;NFKC_CF=2202;NFKC_SCF=2202;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1D78A;dm=03F5;Lower;na=MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL;NFKC_CF=03B5;NFKC_SCF=03B5
+cp;1D78B;dm=03D1;Lower;na=MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL;NFKC_CF=03B8;NFKC_SCF=03B8
+cp;1D78C;dm=03F0;Lower;na=MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL;NFKC_CF=03BA;NFKC_SCF=03BA
+cp;1D78D;dm=03D5;Lower;na=MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL;NFKC_CF=03C6;NFKC_SCF=03C6
+cp;1D78E;dm=03F1;Lower;na=MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL;NFKC_CF=03C1;NFKC_SCF=03C1
+cp;1D78F;dm=03D6;Lower;na=MATHEMATICAL SANS-SERIF BOLD PI SYMBOL;NFKC_CF=03C0;NFKC_SCF=03C0
# Sans-serif bold italic Greek symbols
-cp;1D790;dm=0391;FC_NFKC=03B1;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA;NFKC_CF=03B1;SB=UP;Upper
-cp;1D791;dm=0392;FC_NFKC=03B2;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA;NFKC_CF=03B2;SB=UP;Upper
-cp;1D792;dm=0393;FC_NFKC=03B3;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA;NFKC_CF=03B3;SB=UP;Upper
-cp;1D793;dm=0394;FC_NFKC=03B4;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA;NFKC_CF=03B4;SB=UP;Upper
-cp;1D794;dm=0395;FC_NFKC=03B5;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON;NFKC_CF=03B5;SB=UP;Upper
-cp;1D795;dm=0396;FC_NFKC=03B6;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA;NFKC_CF=03B6;SB=UP;Upper
-cp;1D796;dm=0397;FC_NFKC=03B7;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA;NFKC_CF=03B7;SB=UP;Upper
-cp;1D797;dm=0398;FC_NFKC=03B8;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA;NFKC_CF=03B8;SB=UP;Upper
-cp;1D798;dm=0399;FC_NFKC=03B9;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA;NFKC_CF=03B9;SB=UP;Upper
-cp;1D799;dm=039A;FC_NFKC=03BA;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA;NFKC_CF=03BA;SB=UP;Upper
-cp;1D79A;dm=039B;FC_NFKC=03BB;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA;NFKC_CF=03BB;SB=UP;Upper
-cp;1D79B;dm=039C;FC_NFKC=03BC;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU;NFKC_CF=03BC;SB=UP;Upper
-cp;1D79C;dm=039D;FC_NFKC=03BD;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU;NFKC_CF=03BD;SB=UP;Upper
-cp;1D79D;dm=039E;FC_NFKC=03BE;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI;NFKC_CF=03BE;SB=UP;Upper
-cp;1D79E;dm=039F;FC_NFKC=03BF;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON;NFKC_CF=03BF;SB=UP;Upper
-cp;1D79F;dm=03A0;FC_NFKC=03C0;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI;NFKC_CF=03C0;SB=UP;Upper
-cp;1D7A0;dm=03A1;FC_NFKC=03C1;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO;NFKC_CF=03C1;SB=UP;Upper
-cp;1D7A1;dm=03F4;FC_NFKC=03B8;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL;NFKC_CF=03B8;SB=UP;Upper
-cp;1D7A2;dm=03A3;FC_NFKC=03C3;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA;NFKC_CF=03C3;SB=UP;Upper
-cp;1D7A3;dm=03A4;FC_NFKC=03C4;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU;NFKC_CF=03C4;SB=UP;Upper
-cp;1D7A4;dm=03A5;FC_NFKC=03C5;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON;NFKC_CF=03C5;SB=UP;Upper
-cp;1D7A5;dm=03A6;FC_NFKC=03C6;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI;NFKC_CF=03C6;SB=UP;Upper
-cp;1D7A6;dm=03A7;FC_NFKC=03C7;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI;NFKC_CF=03C7;SB=UP;Upper
-cp;1D7A7;dm=03A8;FC_NFKC=03C8;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI;NFKC_CF=03C8;SB=UP;Upper
-cp;1D7A8;dm=03A9;FC_NFKC=03C9;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA;NFKC_CF=03C9;SB=UP;Upper
-cp;1D7A9;-Alpha;-Cased;dm=2207;gc=Sm;-IDC;-IDS;na=MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA;NFKC_CF=2207;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1D7AA;dm=03B1;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA;NFKC_CF=03B1
-cp;1D7AB;dm=03B2;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA;NFKC_CF=03B2
-cp;1D7AC;dm=03B3;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA;NFKC_CF=03B3
-cp;1D7AD;dm=03B4;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA;NFKC_CF=03B4
-cp;1D7AE;dm=03B5;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON;NFKC_CF=03B5
-cp;1D7AF;dm=03B6;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA;NFKC_CF=03B6
-cp;1D7B0;dm=03B7;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA;NFKC_CF=03B7
-cp;1D7B1;dm=03B8;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA;NFKC_CF=03B8
-cp;1D7B2;dm=03B9;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA;NFKC_CF=03B9
-cp;1D7B3;dm=03BA;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA;NFKC_CF=03BA
-cp;1D7B4;dm=03BB;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA;NFKC_CF=03BB
-cp;1D7B5;dm=03BC;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU;NFKC_CF=03BC
-cp;1D7B6;dm=03BD;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU;NFKC_CF=03BD
-cp;1D7B7;dm=03BE;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI;NFKC_CF=03BE
-cp;1D7B8;dm=03BF;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON;NFKC_CF=03BF
-cp;1D7B9;dm=03C0;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI;NFKC_CF=03C0
-cp;1D7BA;dm=03C1;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO;NFKC_CF=03C1
-cp;1D7BB;dm=03C2;FC_NFKC=03C3;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA;NFKC_CF=03C3
-cp;1D7BC;dm=03C3;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA;NFKC_CF=03C3
-cp;1D7BD;dm=03C4;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU;NFKC_CF=03C4
-cp;1D7BE;dm=03C5;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON;NFKC_CF=03C5
-cp;1D7BF;dm=03C6;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI;NFKC_CF=03C6
-cp;1D7C0;dm=03C7;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI;NFKC_CF=03C7
-cp;1D7C1;dm=03C8;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI;NFKC_CF=03C8
-cp;1D7C2;dm=03C9;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA;NFKC_CF=03C9
+cp;1D790;dm=0391;FC_NFKC=03B1;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA;NFKC_CF=03B1;NFKC_SCF=03B1;SB=UP;Upper
+cp;1D791;dm=0392;FC_NFKC=03B2;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA;NFKC_CF=03B2;NFKC_SCF=03B2;SB=UP;Upper
+cp;1D792;dm=0393;FC_NFKC=03B3;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA;NFKC_CF=03B3;NFKC_SCF=03B3;SB=UP;Upper
+cp;1D793;dm=0394;FC_NFKC=03B4;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA;NFKC_CF=03B4;NFKC_SCF=03B4;SB=UP;Upper
+cp;1D794;dm=0395;FC_NFKC=03B5;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON;NFKC_CF=03B5;NFKC_SCF=03B5;SB=UP;Upper
+cp;1D795;dm=0396;FC_NFKC=03B6;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA;NFKC_CF=03B6;NFKC_SCF=03B6;SB=UP;Upper
+cp;1D796;dm=0397;FC_NFKC=03B7;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA;NFKC_CF=03B7;NFKC_SCF=03B7;SB=UP;Upper
+cp;1D797;dm=0398;FC_NFKC=03B8;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA;NFKC_CF=03B8;NFKC_SCF=03B8;SB=UP;Upper
+cp;1D798;dm=0399;FC_NFKC=03B9;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA;NFKC_CF=03B9;NFKC_SCF=03B9;SB=UP;Upper
+cp;1D799;dm=039A;FC_NFKC=03BA;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA;NFKC_CF=03BA;NFKC_SCF=03BA;SB=UP;Upper
+cp;1D79A;dm=039B;FC_NFKC=03BB;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA;NFKC_CF=03BB;NFKC_SCF=03BB;SB=UP;Upper
+cp;1D79B;dm=039C;FC_NFKC=03BC;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU;NFKC_CF=03BC;NFKC_SCF=03BC;SB=UP;Upper
+cp;1D79C;dm=039D;FC_NFKC=03BD;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU;NFKC_CF=03BD;NFKC_SCF=03BD;SB=UP;Upper
+cp;1D79D;dm=039E;FC_NFKC=03BE;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI;NFKC_CF=03BE;NFKC_SCF=03BE;SB=UP;Upper
+cp;1D79E;dm=039F;FC_NFKC=03BF;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON;NFKC_CF=03BF;NFKC_SCF=03BF;SB=UP;Upper
+cp;1D79F;dm=03A0;FC_NFKC=03C0;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI;NFKC_CF=03C0;NFKC_SCF=03C0;SB=UP;Upper
+cp;1D7A0;dm=03A1;FC_NFKC=03C1;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO;NFKC_CF=03C1;NFKC_SCF=03C1;SB=UP;Upper
+cp;1D7A1;dm=03F4;FC_NFKC=03B8;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL;NFKC_CF=03B8;NFKC_SCF=03B8;SB=UP;Upper
+cp;1D7A2;dm=03A3;FC_NFKC=03C3;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA;NFKC_CF=03C3;NFKC_SCF=03C3;SB=UP;Upper
+cp;1D7A3;dm=03A4;FC_NFKC=03C4;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU;NFKC_CF=03C4;NFKC_SCF=03C4;SB=UP;Upper
+cp;1D7A4;dm=03A5;FC_NFKC=03C5;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON;NFKC_CF=03C5;NFKC_SCF=03C5;SB=UP;Upper
+cp;1D7A5;dm=03A6;FC_NFKC=03C6;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI;NFKC_CF=03C6;NFKC_SCF=03C6;SB=UP;Upper
+cp;1D7A6;dm=03A7;FC_NFKC=03C7;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI;NFKC_CF=03C7;NFKC_SCF=03C7;SB=UP;Upper
+cp;1D7A7;dm=03A8;FC_NFKC=03C8;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI;NFKC_CF=03C8;NFKC_SCF=03C8;SB=UP;Upper
+cp;1D7A8;dm=03A9;FC_NFKC=03C9;gc=Lu;na=MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA;NFKC_CF=03C9;NFKC_SCF=03C9;SB=UP;Upper
+cp;1D7A9;-Alpha;-Cased;dm=2207;gc=Sm;-IDC;ID_Compat_Math_Continue;ID_Compat_Math_Start;-IDS;na=MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA;NFKC_CF=2207;NFKC_SCF=2207;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1D7AA;dm=03B1;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA;NFKC_CF=03B1;NFKC_SCF=03B1
+cp;1D7AB;dm=03B2;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA;NFKC_CF=03B2;NFKC_SCF=03B2
+cp;1D7AC;dm=03B3;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA;NFKC_CF=03B3;NFKC_SCF=03B3
+cp;1D7AD;dm=03B4;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA;NFKC_CF=03B4;NFKC_SCF=03B4
+cp;1D7AE;dm=03B5;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON;NFKC_CF=03B5;NFKC_SCF=03B5
+cp;1D7AF;dm=03B6;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA;NFKC_CF=03B6;NFKC_SCF=03B6
+cp;1D7B0;dm=03B7;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA;NFKC_CF=03B7;NFKC_SCF=03B7
+cp;1D7B1;dm=03B8;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA;NFKC_CF=03B8;NFKC_SCF=03B8
+cp;1D7B2;dm=03B9;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA;NFKC_CF=03B9;NFKC_SCF=03B9
+cp;1D7B3;dm=03BA;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA;NFKC_CF=03BA;NFKC_SCF=03BA
+cp;1D7B4;dm=03BB;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA;NFKC_CF=03BB;NFKC_SCF=03BB
+cp;1D7B5;dm=03BC;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU;NFKC_CF=03BC;NFKC_SCF=03BC
+cp;1D7B6;dm=03BD;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU;NFKC_CF=03BD;NFKC_SCF=03BD
+cp;1D7B7;dm=03BE;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI;NFKC_CF=03BE;NFKC_SCF=03BE
+cp;1D7B8;dm=03BF;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON;NFKC_CF=03BF;NFKC_SCF=03BF
+cp;1D7B9;dm=03C0;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI;NFKC_CF=03C0;NFKC_SCF=03C0
+cp;1D7BA;dm=03C1;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO;NFKC_CF=03C1;NFKC_SCF=03C1
+cp;1D7BB;dm=03C2;FC_NFKC=03C3;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA;NFKC_CF=03C3;NFKC_SCF=03C3
+cp;1D7BC;dm=03C3;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA;NFKC_CF=03C3;NFKC_SCF=03C3
+cp;1D7BD;dm=03C4;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU;NFKC_CF=03C4;NFKC_SCF=03C4
+cp;1D7BE;dm=03C5;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON;NFKC_CF=03C5;NFKC_SCF=03C5
+cp;1D7BF;dm=03C6;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI;NFKC_CF=03C6;NFKC_SCF=03C6
+cp;1D7C0;dm=03C7;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI;NFKC_CF=03C7;NFKC_SCF=03C7
+cp;1D7C1;dm=03C8;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI;NFKC_CF=03C8;NFKC_SCF=03C8
+cp;1D7C2;dm=03C9;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA;NFKC_CF=03C9;NFKC_SCF=03C9
# Additional sans-serif bold italic Greek symbols
-cp;1D7C3;-Alpha;bc=ON;Bidi_M;-Cased;dm=2202;gc=Sm;-IDC;-IDS;na=MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL;NFKC_CF=2202;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1D7C4;dm=03F5;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL;NFKC_CF=03B5
-cp;1D7C5;dm=03D1;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL;NFKC_CF=03B8
-cp;1D7C6;dm=03F0;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL;NFKC_CF=03BA
-cp;1D7C7;dm=03D5;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL;NFKC_CF=03C6
-cp;1D7C8;dm=03F1;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL;NFKC_CF=03C1
-cp;1D7C9;dm=03D6;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL;NFKC_CF=03C0
+cp;1D7C3;-Alpha;bc=ON;Bidi_M;-Cased;dm=2202;gc=Sm;-IDC;ID_Compat_Math_Continue;ID_Compat_Math_Start;-IDS;na=MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL;NFKC_CF=2202;NFKC_SCF=2202;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1D7C4;dm=03F5;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL;NFKC_CF=03B5;NFKC_SCF=03B5
+cp;1D7C5;dm=03D1;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL;NFKC_CF=03B8;NFKC_SCF=03B8
+cp;1D7C6;dm=03F0;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL;NFKC_CF=03BA;NFKC_SCF=03BA
+cp;1D7C7;dm=03D5;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL;NFKC_CF=03C6;NFKC_SCF=03C6
+cp;1D7C8;dm=03F1;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL;NFKC_CF=03C1;NFKC_SCF=03C1
+cp;1D7C9;dm=03D6;Lower;na=MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL;NFKC_CF=03C0;NFKC_SCF=03C0
# Additional bold Greek symbols
-cp;1D7CA;age=5.0;dm=03DC;FC_NFKC=03DD;gc=Lu;na=MATHEMATICAL BOLD CAPITAL DIGAMMA;NFKC_CF=03DD;SB=UP;Upper
-cp;1D7CB;age=5.0;dm=03DD;Lower;na=MATHEMATICAL BOLD SMALL DIGAMMA;NFKC_CF=03DD
+cp;1D7CA;age=5.0;dm=03DC;FC_NFKC=03DD;gc=Lu;na=MATHEMATICAL BOLD CAPITAL DIGAMMA;NFKC_CF=03DD;NFKC_SCF=03DD;SB=UP;Upper
+cp;1D7CB;age=5.0;dm=03DD;Lower;na=MATHEMATICAL BOLD SMALL DIGAMMA;NFKC_CF=03DD;NFKC_SCF=03DD
unassigned;1D7CC..1D7CD
# Bold digits
-cp;1D7CE;-Alpha;bc=EN;-Cased;dm=0030;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL BOLD DIGIT ZERO;NFKC_CF=0030;nt=De;nv=0;SB=NU;WB=NU;-XIDS
-cp;1D7CF;-Alpha;bc=EN;-Cased;dm=0031;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL BOLD DIGIT ONE;NFKC_CF=0031;nt=De;nv=1;SB=NU;WB=NU;-XIDS
-cp;1D7D0;-Alpha;bc=EN;-Cased;dm=0032;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL BOLD DIGIT TWO;NFKC_CF=0032;nt=De;nv=2;SB=NU;WB=NU;-XIDS
-cp;1D7D1;-Alpha;bc=EN;-Cased;dm=0033;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL BOLD DIGIT THREE;NFKC_CF=0033;nt=De;nv=3;SB=NU;WB=NU;-XIDS
-cp;1D7D2;-Alpha;bc=EN;-Cased;dm=0034;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL BOLD DIGIT FOUR;NFKC_CF=0034;nt=De;nv=4;SB=NU;WB=NU;-XIDS
-cp;1D7D3;-Alpha;bc=EN;-Cased;dm=0035;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL BOLD DIGIT FIVE;NFKC_CF=0035;nt=De;nv=5;SB=NU;WB=NU;-XIDS
-cp;1D7D4;-Alpha;bc=EN;-Cased;dm=0036;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL BOLD DIGIT SIX;NFKC_CF=0036;nt=De;nv=6;SB=NU;WB=NU;-XIDS
-cp;1D7D5;-Alpha;bc=EN;-Cased;dm=0037;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL BOLD DIGIT SEVEN;NFKC_CF=0037;nt=De;nv=7;SB=NU;WB=NU;-XIDS
-cp;1D7D6;-Alpha;bc=EN;-Cased;dm=0038;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL BOLD DIGIT EIGHT;NFKC_CF=0038;nt=De;nv=8;SB=NU;WB=NU;-XIDS
-cp;1D7D7;-Alpha;bc=EN;-Cased;dm=0039;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL BOLD DIGIT NINE;NFKC_CF=0039;nt=De;nv=9;SB=NU;WB=NU;-XIDS
+cp;1D7CE;-Alpha;bc=EN;-Cased;dm=0030;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL BOLD DIGIT ZERO;NFKC_CF=0030;NFKC_SCF=0030;nt=De;nv=0;SB=NU;WB=NU;-XIDS
+cp;1D7CF;-Alpha;bc=EN;-Cased;dm=0031;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL BOLD DIGIT ONE;NFKC_CF=0031;NFKC_SCF=0031;nt=De;nv=1;SB=NU;WB=NU;-XIDS
+cp;1D7D0;-Alpha;bc=EN;-Cased;dm=0032;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL BOLD DIGIT TWO;NFKC_CF=0032;NFKC_SCF=0032;nt=De;nv=2;SB=NU;WB=NU;-XIDS
+cp;1D7D1;-Alpha;bc=EN;-Cased;dm=0033;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL BOLD DIGIT THREE;NFKC_CF=0033;NFKC_SCF=0033;nt=De;nv=3;SB=NU;WB=NU;-XIDS
+cp;1D7D2;-Alpha;bc=EN;-Cased;dm=0034;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL BOLD DIGIT FOUR;NFKC_CF=0034;NFKC_SCF=0034;nt=De;nv=4;SB=NU;WB=NU;-XIDS
+cp;1D7D3;-Alpha;bc=EN;-Cased;dm=0035;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL BOLD DIGIT FIVE;NFKC_CF=0035;NFKC_SCF=0035;nt=De;nv=5;SB=NU;WB=NU;-XIDS
+cp;1D7D4;-Alpha;bc=EN;-Cased;dm=0036;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL BOLD DIGIT SIX;NFKC_CF=0036;NFKC_SCF=0036;nt=De;nv=6;SB=NU;WB=NU;-XIDS
+cp;1D7D5;-Alpha;bc=EN;-Cased;dm=0037;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL BOLD DIGIT SEVEN;NFKC_CF=0037;NFKC_SCF=0037;nt=De;nv=7;SB=NU;WB=NU;-XIDS
+cp;1D7D6;-Alpha;bc=EN;-Cased;dm=0038;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL BOLD DIGIT EIGHT;NFKC_CF=0038;NFKC_SCF=0038;nt=De;nv=8;SB=NU;WB=NU;-XIDS
+cp;1D7D7;-Alpha;bc=EN;-Cased;dm=0039;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL BOLD DIGIT NINE;NFKC_CF=0039;NFKC_SCF=0039;nt=De;nv=9;SB=NU;WB=NU;-XIDS
# Double-struck digits
-cp;1D7D8;-Alpha;bc=EN;-Cased;dm=0030;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO;NFKC_CF=0030;nt=De;nv=0;SB=NU;WB=NU;-XIDS
-cp;1D7D9;-Alpha;bc=EN;-Cased;dm=0031;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL DOUBLE-STRUCK DIGIT ONE;NFKC_CF=0031;nt=De;nv=1;SB=NU;WB=NU;-XIDS
-cp;1D7DA;-Alpha;bc=EN;-Cased;dm=0032;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL DOUBLE-STRUCK DIGIT TWO;NFKC_CF=0032;nt=De;nv=2;SB=NU;WB=NU;-XIDS
-cp;1D7DB;-Alpha;bc=EN;-Cased;dm=0033;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL DOUBLE-STRUCK DIGIT THREE;NFKC_CF=0033;nt=De;nv=3;SB=NU;WB=NU;-XIDS
-cp;1D7DC;-Alpha;bc=EN;-Cased;dm=0034;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR;NFKC_CF=0034;nt=De;nv=4;SB=NU;WB=NU;-XIDS
-cp;1D7DD;-Alpha;bc=EN;-Cased;dm=0035;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE;NFKC_CF=0035;nt=De;nv=5;SB=NU;WB=NU;-XIDS
-cp;1D7DE;-Alpha;bc=EN;-Cased;dm=0036;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL DOUBLE-STRUCK DIGIT SIX;NFKC_CF=0036;nt=De;nv=6;SB=NU;WB=NU;-XIDS
-cp;1D7DF;-Alpha;bc=EN;-Cased;dm=0037;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN;NFKC_CF=0037;nt=De;nv=7;SB=NU;WB=NU;-XIDS
-cp;1D7E0;-Alpha;bc=EN;-Cased;dm=0038;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT;NFKC_CF=0038;nt=De;nv=8;SB=NU;WB=NU;-XIDS
-cp;1D7E1;-Alpha;bc=EN;-Cased;dm=0039;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL DOUBLE-STRUCK DIGIT NINE;NFKC_CF=0039;nt=De;nv=9;SB=NU;WB=NU;-XIDS
+cp;1D7D8;-Alpha;bc=EN;-Cased;dm=0030;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO;NFKC_CF=0030;NFKC_SCF=0030;nt=De;nv=0;SB=NU;WB=NU;-XIDS
+cp;1D7D9;-Alpha;bc=EN;-Cased;dm=0031;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL DOUBLE-STRUCK DIGIT ONE;NFKC_CF=0031;NFKC_SCF=0031;nt=De;nv=1;SB=NU;WB=NU;-XIDS
+cp;1D7DA;-Alpha;bc=EN;-Cased;dm=0032;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL DOUBLE-STRUCK DIGIT TWO;NFKC_CF=0032;NFKC_SCF=0032;nt=De;nv=2;SB=NU;WB=NU;-XIDS
+cp;1D7DB;-Alpha;bc=EN;-Cased;dm=0033;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL DOUBLE-STRUCK DIGIT THREE;NFKC_CF=0033;NFKC_SCF=0033;nt=De;nv=3;SB=NU;WB=NU;-XIDS
+cp;1D7DC;-Alpha;bc=EN;-Cased;dm=0034;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR;NFKC_CF=0034;NFKC_SCF=0034;nt=De;nv=4;SB=NU;WB=NU;-XIDS
+cp;1D7DD;-Alpha;bc=EN;-Cased;dm=0035;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE;NFKC_CF=0035;NFKC_SCF=0035;nt=De;nv=5;SB=NU;WB=NU;-XIDS
+cp;1D7DE;-Alpha;bc=EN;-Cased;dm=0036;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL DOUBLE-STRUCK DIGIT SIX;NFKC_CF=0036;NFKC_SCF=0036;nt=De;nv=6;SB=NU;WB=NU;-XIDS
+cp;1D7DF;-Alpha;bc=EN;-Cased;dm=0037;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN;NFKC_CF=0037;NFKC_SCF=0037;nt=De;nv=7;SB=NU;WB=NU;-XIDS
+cp;1D7E0;-Alpha;bc=EN;-Cased;dm=0038;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT;NFKC_CF=0038;NFKC_SCF=0038;nt=De;nv=8;SB=NU;WB=NU;-XIDS
+cp;1D7E1;-Alpha;bc=EN;-Cased;dm=0039;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL DOUBLE-STRUCK DIGIT NINE;NFKC_CF=0039;NFKC_SCF=0039;nt=De;nv=9;SB=NU;WB=NU;-XIDS
# Sans-serif digits
-cp;1D7E2;-Alpha;bc=EN;-Cased;dm=0030;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL SANS-SERIF DIGIT ZERO;NFKC_CF=0030;nt=De;nv=0;SB=NU;WB=NU;-XIDS
-cp;1D7E3;-Alpha;bc=EN;-Cased;dm=0031;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL SANS-SERIF DIGIT ONE;NFKC_CF=0031;nt=De;nv=1;SB=NU;WB=NU;-XIDS
-cp;1D7E4;-Alpha;bc=EN;-Cased;dm=0032;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL SANS-SERIF DIGIT TWO;NFKC_CF=0032;nt=De;nv=2;SB=NU;WB=NU;-XIDS
-cp;1D7E5;-Alpha;bc=EN;-Cased;dm=0033;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL SANS-SERIF DIGIT THREE;NFKC_CF=0033;nt=De;nv=3;SB=NU;WB=NU;-XIDS
-cp;1D7E6;-Alpha;bc=EN;-Cased;dm=0034;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL SANS-SERIF DIGIT FOUR;NFKC_CF=0034;nt=De;nv=4;SB=NU;WB=NU;-XIDS
-cp;1D7E7;-Alpha;bc=EN;-Cased;dm=0035;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL SANS-SERIF DIGIT FIVE;NFKC_CF=0035;nt=De;nv=5;SB=NU;WB=NU;-XIDS
-cp;1D7E8;-Alpha;bc=EN;-Cased;dm=0036;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL SANS-SERIF DIGIT SIX;NFKC_CF=0036;nt=De;nv=6;SB=NU;WB=NU;-XIDS
-cp;1D7E9;-Alpha;bc=EN;-Cased;dm=0037;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL SANS-SERIF DIGIT SEVEN;NFKC_CF=0037;nt=De;nv=7;SB=NU;WB=NU;-XIDS
-cp;1D7EA;-Alpha;bc=EN;-Cased;dm=0038;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL SANS-SERIF DIGIT EIGHT;NFKC_CF=0038;nt=De;nv=8;SB=NU;WB=NU;-XIDS
-cp;1D7EB;-Alpha;bc=EN;-Cased;dm=0039;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL SANS-SERIF DIGIT NINE;NFKC_CF=0039;nt=De;nv=9;SB=NU;WB=NU;-XIDS
+cp;1D7E2;-Alpha;bc=EN;-Cased;dm=0030;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL SANS-SERIF DIGIT ZERO;NFKC_CF=0030;NFKC_SCF=0030;nt=De;nv=0;SB=NU;WB=NU;-XIDS
+cp;1D7E3;-Alpha;bc=EN;-Cased;dm=0031;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL SANS-SERIF DIGIT ONE;NFKC_CF=0031;NFKC_SCF=0031;nt=De;nv=1;SB=NU;WB=NU;-XIDS
+cp;1D7E4;-Alpha;bc=EN;-Cased;dm=0032;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL SANS-SERIF DIGIT TWO;NFKC_CF=0032;NFKC_SCF=0032;nt=De;nv=2;SB=NU;WB=NU;-XIDS
+cp;1D7E5;-Alpha;bc=EN;-Cased;dm=0033;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL SANS-SERIF DIGIT THREE;NFKC_CF=0033;NFKC_SCF=0033;nt=De;nv=3;SB=NU;WB=NU;-XIDS
+cp;1D7E6;-Alpha;bc=EN;-Cased;dm=0034;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL SANS-SERIF DIGIT FOUR;NFKC_CF=0034;NFKC_SCF=0034;nt=De;nv=4;SB=NU;WB=NU;-XIDS
+cp;1D7E7;-Alpha;bc=EN;-Cased;dm=0035;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL SANS-SERIF DIGIT FIVE;NFKC_CF=0035;NFKC_SCF=0035;nt=De;nv=5;SB=NU;WB=NU;-XIDS
+cp;1D7E8;-Alpha;bc=EN;-Cased;dm=0036;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL SANS-SERIF DIGIT SIX;NFKC_CF=0036;NFKC_SCF=0036;nt=De;nv=6;SB=NU;WB=NU;-XIDS
+cp;1D7E9;-Alpha;bc=EN;-Cased;dm=0037;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL SANS-SERIF DIGIT SEVEN;NFKC_CF=0037;NFKC_SCF=0037;nt=De;nv=7;SB=NU;WB=NU;-XIDS
+cp;1D7EA;-Alpha;bc=EN;-Cased;dm=0038;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL SANS-SERIF DIGIT EIGHT;NFKC_CF=0038;NFKC_SCF=0038;nt=De;nv=8;SB=NU;WB=NU;-XIDS
+cp;1D7EB;-Alpha;bc=EN;-Cased;dm=0039;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL SANS-SERIF DIGIT NINE;NFKC_CF=0039;NFKC_SCF=0039;nt=De;nv=9;SB=NU;WB=NU;-XIDS
# Sans-serif bold digits
-cp;1D7EC;-Alpha;bc=EN;-Cased;dm=0030;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO;NFKC_CF=0030;nt=De;nv=0;SB=NU;WB=NU;-XIDS
-cp;1D7ED;-Alpha;bc=EN;-Cased;dm=0031;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL SANS-SERIF BOLD DIGIT ONE;NFKC_CF=0031;nt=De;nv=1;SB=NU;WB=NU;-XIDS
-cp;1D7EE;-Alpha;bc=EN;-Cased;dm=0032;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL SANS-SERIF BOLD DIGIT TWO;NFKC_CF=0032;nt=De;nv=2;SB=NU;WB=NU;-XIDS
-cp;1D7EF;-Alpha;bc=EN;-Cased;dm=0033;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL SANS-SERIF BOLD DIGIT THREE;NFKC_CF=0033;nt=De;nv=3;SB=NU;WB=NU;-XIDS
-cp;1D7F0;-Alpha;bc=EN;-Cased;dm=0034;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR;NFKC_CF=0034;nt=De;nv=4;SB=NU;WB=NU;-XIDS
-cp;1D7F1;-Alpha;bc=EN;-Cased;dm=0035;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE;NFKC_CF=0035;nt=De;nv=5;SB=NU;WB=NU;-XIDS
-cp;1D7F2;-Alpha;bc=EN;-Cased;dm=0036;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL SANS-SERIF BOLD DIGIT SIX;NFKC_CF=0036;nt=De;nv=6;SB=NU;WB=NU;-XIDS
-cp;1D7F3;-Alpha;bc=EN;-Cased;dm=0037;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN;NFKC_CF=0037;nt=De;nv=7;SB=NU;WB=NU;-XIDS
-cp;1D7F4;-Alpha;bc=EN;-Cased;dm=0038;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT;NFKC_CF=0038;nt=De;nv=8;SB=NU;WB=NU;-XIDS
-cp;1D7F5;-Alpha;bc=EN;-Cased;dm=0039;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL SANS-SERIF BOLD DIGIT NINE;NFKC_CF=0039;nt=De;nv=9;SB=NU;WB=NU;-XIDS
+cp;1D7EC;-Alpha;bc=EN;-Cased;dm=0030;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO;NFKC_CF=0030;NFKC_SCF=0030;nt=De;nv=0;SB=NU;WB=NU;-XIDS
+cp;1D7ED;-Alpha;bc=EN;-Cased;dm=0031;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL SANS-SERIF BOLD DIGIT ONE;NFKC_CF=0031;NFKC_SCF=0031;nt=De;nv=1;SB=NU;WB=NU;-XIDS
+cp;1D7EE;-Alpha;bc=EN;-Cased;dm=0032;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL SANS-SERIF BOLD DIGIT TWO;NFKC_CF=0032;NFKC_SCF=0032;nt=De;nv=2;SB=NU;WB=NU;-XIDS
+cp;1D7EF;-Alpha;bc=EN;-Cased;dm=0033;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL SANS-SERIF BOLD DIGIT THREE;NFKC_CF=0033;NFKC_SCF=0033;nt=De;nv=3;SB=NU;WB=NU;-XIDS
+cp;1D7F0;-Alpha;bc=EN;-Cased;dm=0034;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR;NFKC_CF=0034;NFKC_SCF=0034;nt=De;nv=4;SB=NU;WB=NU;-XIDS
+cp;1D7F1;-Alpha;bc=EN;-Cased;dm=0035;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE;NFKC_CF=0035;NFKC_SCF=0035;nt=De;nv=5;SB=NU;WB=NU;-XIDS
+cp;1D7F2;-Alpha;bc=EN;-Cased;dm=0036;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL SANS-SERIF BOLD DIGIT SIX;NFKC_CF=0036;NFKC_SCF=0036;nt=De;nv=6;SB=NU;WB=NU;-XIDS
+cp;1D7F3;-Alpha;bc=EN;-Cased;dm=0037;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN;NFKC_CF=0037;NFKC_SCF=0037;nt=De;nv=7;SB=NU;WB=NU;-XIDS
+cp;1D7F4;-Alpha;bc=EN;-Cased;dm=0038;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT;NFKC_CF=0038;NFKC_SCF=0038;nt=De;nv=8;SB=NU;WB=NU;-XIDS
+cp;1D7F5;-Alpha;bc=EN;-Cased;dm=0039;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL SANS-SERIF BOLD DIGIT NINE;NFKC_CF=0039;NFKC_SCF=0039;nt=De;nv=9;SB=NU;WB=NU;-XIDS
# Monospace digits
-cp;1D7F6;-Alpha;bc=EN;-Cased;dm=0030;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL MONOSPACE DIGIT ZERO;NFKC_CF=0030;nt=De;nv=0;SB=NU;WB=NU;-XIDS
-cp;1D7F7;-Alpha;bc=EN;-Cased;dm=0031;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL MONOSPACE DIGIT ONE;NFKC_CF=0031;nt=De;nv=1;SB=NU;WB=NU;-XIDS
-cp;1D7F8;-Alpha;bc=EN;-Cased;dm=0032;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL MONOSPACE DIGIT TWO;NFKC_CF=0032;nt=De;nv=2;SB=NU;WB=NU;-XIDS
-cp;1D7F9;-Alpha;bc=EN;-Cased;dm=0033;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL MONOSPACE DIGIT THREE;NFKC_CF=0033;nt=De;nv=3;SB=NU;WB=NU;-XIDS
-cp;1D7FA;-Alpha;bc=EN;-Cased;dm=0034;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL MONOSPACE DIGIT FOUR;NFKC_CF=0034;nt=De;nv=4;SB=NU;WB=NU;-XIDS
-cp;1D7FB;-Alpha;bc=EN;-Cased;dm=0035;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL MONOSPACE DIGIT FIVE;NFKC_CF=0035;nt=De;nv=5;SB=NU;WB=NU;-XIDS
-cp;1D7FC;-Alpha;bc=EN;-Cased;dm=0036;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL MONOSPACE DIGIT SIX;NFKC_CF=0036;nt=De;nv=6;SB=NU;WB=NU;-XIDS
-cp;1D7FD;-Alpha;bc=EN;-Cased;dm=0037;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL MONOSPACE DIGIT SEVEN;NFKC_CF=0037;nt=De;nv=7;SB=NU;WB=NU;-XIDS
-cp;1D7FE;-Alpha;bc=EN;-Cased;dm=0038;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL MONOSPACE DIGIT EIGHT;NFKC_CF=0038;nt=De;nv=8;SB=NU;WB=NU;-XIDS
-cp;1D7FF;-Alpha;bc=EN;-Cased;dm=0039;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL MONOSPACE DIGIT NINE;NFKC_CF=0039;nt=De;nv=9;SB=NU;WB=NU;-XIDS
+cp;1D7F6;-Alpha;bc=EN;-Cased;dm=0030;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL MONOSPACE DIGIT ZERO;NFKC_CF=0030;NFKC_SCF=0030;nt=De;nv=0;SB=NU;WB=NU;-XIDS
+cp;1D7F7;-Alpha;bc=EN;-Cased;dm=0031;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL MONOSPACE DIGIT ONE;NFKC_CF=0031;NFKC_SCF=0031;nt=De;nv=1;SB=NU;WB=NU;-XIDS
+cp;1D7F8;-Alpha;bc=EN;-Cased;dm=0032;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL MONOSPACE DIGIT TWO;NFKC_CF=0032;NFKC_SCF=0032;nt=De;nv=2;SB=NU;WB=NU;-XIDS
+cp;1D7F9;-Alpha;bc=EN;-Cased;dm=0033;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL MONOSPACE DIGIT THREE;NFKC_CF=0033;NFKC_SCF=0033;nt=De;nv=3;SB=NU;WB=NU;-XIDS
+cp;1D7FA;-Alpha;bc=EN;-Cased;dm=0034;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL MONOSPACE DIGIT FOUR;NFKC_CF=0034;NFKC_SCF=0034;nt=De;nv=4;SB=NU;WB=NU;-XIDS
+cp;1D7FB;-Alpha;bc=EN;-Cased;dm=0035;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL MONOSPACE DIGIT FIVE;NFKC_CF=0035;NFKC_SCF=0035;nt=De;nv=5;SB=NU;WB=NU;-XIDS
+cp;1D7FC;-Alpha;bc=EN;-Cased;dm=0036;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL MONOSPACE DIGIT SIX;NFKC_CF=0036;NFKC_SCF=0036;nt=De;nv=6;SB=NU;WB=NU;-XIDS
+cp;1D7FD;-Alpha;bc=EN;-Cased;dm=0037;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL MONOSPACE DIGIT SEVEN;NFKC_CF=0037;NFKC_SCF=0037;nt=De;nv=7;SB=NU;WB=NU;-XIDS
+cp;1D7FE;-Alpha;bc=EN;-Cased;dm=0038;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL MONOSPACE DIGIT EIGHT;NFKC_CF=0038;NFKC_SCF=0038;nt=De;nv=8;SB=NU;WB=NU;-XIDS
+cp;1D7FF;-Alpha;bc=EN;-Cased;dm=0039;gc=Nd;-IDS;lb=NU;na=MATHEMATICAL MONOSPACE DIGIT NINE;NFKC_CF=0039;NFKC_SCF=0039;nt=De;nv=9;SB=NU;WB=NU;-XIDS
block;1D800..1DAAF;age=8.0;blk=Sutton_SignWriting;gc=So;Gr_Base;lb=AL;sc=Sgnw;vo=U
# 1D800..1DAAF Sutton SignWriting
@@ -36301,7 +36333,7 @@ cp;1DF29;age=15.0;na=LATIN SMALL LETTER S WITH MID-HEIGHT LEFT HOOK
cp;1DF2A;age=15.0;na=LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK
unassigned;1DF2B..1DFFF
-block;1E000..1E02F;age=9.0;Alpha;bc=NSM;blk=Glagolitic_Sup;ccc=230;CI;gc=Mn;GCB=EX;Gr_Ext;IDC;jt=T;lb=CM;SB=EX;sc=Glag;WB=Extend;XIDC
+block;1E000..1E02F;age=9.0;Alpha;bc=NSM;blk=Glagolitic_Sup;ccc=230;CI;gc=Mn;GCB=EX;Gr_Ext;IDC;InCB=Extend;jt=T;lb=CM;SB=EX;sc=Glag;WB=Extend;XIDC
# 1E000..1E02F Glagolitic Supplement
# Combining letters
cp;1E000;na=COMBINING GLAGOLITIC LETTER AZU
@@ -36351,73 +36383,73 @@ unassigned;1E02B..1E02F
block;1E030..1E08F;age=15.0;Alpha;blk=Cyrillic_Ext_D;Cased;CI;CWKCF;Dia;dt=Sup;gc=Lm;Gr_Base;IDC;IDS;lb=AL;Lower;NFKC_QC=N;NFKD_QC=N;SB=LO;sc=Cyrl;WB=LE;XIDC;XIDS
# 1E030..1E08F Cyrillic Extended-D
# Superscript modifier letters
-cp;1E030;dm=0430;na=MODIFIER LETTER CYRILLIC SMALL A;NFKC_CF=0430
-cp;1E031;dm=0431;na=MODIFIER LETTER CYRILLIC SMALL BE;NFKC_CF=0431
-cp;1E032;dm=0432;na=MODIFIER LETTER CYRILLIC SMALL VE;NFKC_CF=0432
-cp;1E033;dm=0433;na=MODIFIER LETTER CYRILLIC SMALL GHE;NFKC_CF=0433
-cp;1E034;dm=0434;na=MODIFIER LETTER CYRILLIC SMALL DE;NFKC_CF=0434
-cp;1E035;dm=0435;na=MODIFIER LETTER CYRILLIC SMALL IE;NFKC_CF=0435
-cp;1E036;dm=0436;na=MODIFIER LETTER CYRILLIC SMALL ZHE;NFKC_CF=0436
-cp;1E037;dm=0437;na=MODIFIER LETTER CYRILLIC SMALL ZE;NFKC_CF=0437
-cp;1E038;dm=0438;na=MODIFIER LETTER CYRILLIC SMALL I;NFKC_CF=0438
-cp;1E039;dm=043A;na=MODIFIER LETTER CYRILLIC SMALL KA;NFKC_CF=043A
-cp;1E03A;dm=043B;na=MODIFIER LETTER CYRILLIC SMALL EL;NFKC_CF=043B
-cp;1E03B;dm=043C;na=MODIFIER LETTER CYRILLIC SMALL EM;NFKC_CF=043C
-cp;1E03C;dm=043E;na=MODIFIER LETTER CYRILLIC SMALL O;NFKC_CF=043E
-cp;1E03D;dm=043F;na=MODIFIER LETTER CYRILLIC SMALL PE;NFKC_CF=043F
-cp;1E03E;dm=0440;na=MODIFIER LETTER CYRILLIC SMALL ER;NFKC_CF=0440
-cp;1E03F;dm=0441;na=MODIFIER LETTER CYRILLIC SMALL ES;NFKC_CF=0441
-cp;1E040;dm=0442;na=MODIFIER LETTER CYRILLIC SMALL TE;NFKC_CF=0442
-cp;1E041;dm=0443;na=MODIFIER LETTER CYRILLIC SMALL U;NFKC_CF=0443
-cp;1E042;dm=0444;na=MODIFIER LETTER CYRILLIC SMALL EF;NFKC_CF=0444
-cp;1E043;dm=0445;na=MODIFIER LETTER CYRILLIC SMALL HA;NFKC_CF=0445
-cp;1E044;dm=0446;na=MODIFIER LETTER CYRILLIC SMALL TSE;NFKC_CF=0446
-cp;1E045;dm=0447;na=MODIFIER LETTER CYRILLIC SMALL CHE;NFKC_CF=0447
-cp;1E046;dm=0448;na=MODIFIER LETTER CYRILLIC SMALL SHA;NFKC_CF=0448
-cp;1E047;dm=044B;na=MODIFIER LETTER CYRILLIC SMALL YERU;NFKC_CF=044B
-cp;1E048;dm=044D;na=MODIFIER LETTER CYRILLIC SMALL E;NFKC_CF=044D
-cp;1E049;dm=044E;na=MODIFIER LETTER CYRILLIC SMALL YU;NFKC_CF=044E
-cp;1E04A;dm=A689;na=MODIFIER LETTER CYRILLIC SMALL DZZE;NFKC_CF=A689
-cp;1E04B;dm=04D9;na=MODIFIER LETTER CYRILLIC SMALL SCHWA;NFKC_CF=04D9
-cp;1E04C;dm=0456;na=MODIFIER LETTER CYRILLIC SMALL BYELORUSSIAN-UKRAINIAN I;NFKC_CF=0456;SD
-cp;1E04D;dm=0458;na=MODIFIER LETTER CYRILLIC SMALL JE;NFKC_CF=0458;SD
-cp;1E04E;dm=04E9;na=MODIFIER LETTER CYRILLIC SMALL BARRED O;NFKC_CF=04E9
-cp;1E04F;dm=04AF;na=MODIFIER LETTER CYRILLIC SMALL STRAIGHT U;NFKC_CF=04AF
-cp;1E050;dm=04CF;na=MODIFIER LETTER CYRILLIC SMALL PALOCHKA;NFKC_CF=04CF
+cp;1E030;dm=0430;na=MODIFIER LETTER CYRILLIC SMALL A;NFKC_CF=0430;NFKC_SCF=0430
+cp;1E031;dm=0431;na=MODIFIER LETTER CYRILLIC SMALL BE;NFKC_CF=0431;NFKC_SCF=0431
+cp;1E032;dm=0432;na=MODIFIER LETTER CYRILLIC SMALL VE;NFKC_CF=0432;NFKC_SCF=0432
+cp;1E033;dm=0433;na=MODIFIER LETTER CYRILLIC SMALL GHE;NFKC_CF=0433;NFKC_SCF=0433
+cp;1E034;dm=0434;na=MODIFIER LETTER CYRILLIC SMALL DE;NFKC_CF=0434;NFKC_SCF=0434
+cp;1E035;dm=0435;na=MODIFIER LETTER CYRILLIC SMALL IE;NFKC_CF=0435;NFKC_SCF=0435
+cp;1E036;dm=0436;na=MODIFIER LETTER CYRILLIC SMALL ZHE;NFKC_CF=0436;NFKC_SCF=0436
+cp;1E037;dm=0437;na=MODIFIER LETTER CYRILLIC SMALL ZE;NFKC_CF=0437;NFKC_SCF=0437
+cp;1E038;dm=0438;na=MODIFIER LETTER CYRILLIC SMALL I;NFKC_CF=0438;NFKC_SCF=0438
+cp;1E039;dm=043A;na=MODIFIER LETTER CYRILLIC SMALL KA;NFKC_CF=043A;NFKC_SCF=043A
+cp;1E03A;dm=043B;na=MODIFIER LETTER CYRILLIC SMALL EL;NFKC_CF=043B;NFKC_SCF=043B
+cp;1E03B;dm=043C;na=MODIFIER LETTER CYRILLIC SMALL EM;NFKC_CF=043C;NFKC_SCF=043C
+cp;1E03C;dm=043E;na=MODIFIER LETTER CYRILLIC SMALL O;NFKC_CF=043E;NFKC_SCF=043E
+cp;1E03D;dm=043F;na=MODIFIER LETTER CYRILLIC SMALL PE;NFKC_CF=043F;NFKC_SCF=043F
+cp;1E03E;dm=0440;na=MODIFIER LETTER CYRILLIC SMALL ER;NFKC_CF=0440;NFKC_SCF=0440
+cp;1E03F;dm=0441;na=MODIFIER LETTER CYRILLIC SMALL ES;NFKC_CF=0441;NFKC_SCF=0441
+cp;1E040;dm=0442;na=MODIFIER LETTER CYRILLIC SMALL TE;NFKC_CF=0442;NFKC_SCF=0442
+cp;1E041;dm=0443;na=MODIFIER LETTER CYRILLIC SMALL U;NFKC_CF=0443;NFKC_SCF=0443
+cp;1E042;dm=0444;na=MODIFIER LETTER CYRILLIC SMALL EF;NFKC_CF=0444;NFKC_SCF=0444
+cp;1E043;dm=0445;na=MODIFIER LETTER CYRILLIC SMALL HA;NFKC_CF=0445;NFKC_SCF=0445
+cp;1E044;dm=0446;na=MODIFIER LETTER CYRILLIC SMALL TSE;NFKC_CF=0446;NFKC_SCF=0446
+cp;1E045;dm=0447;na=MODIFIER LETTER CYRILLIC SMALL CHE;NFKC_CF=0447;NFKC_SCF=0447
+cp;1E046;dm=0448;na=MODIFIER LETTER CYRILLIC SMALL SHA;NFKC_CF=0448;NFKC_SCF=0448
+cp;1E047;dm=044B;na=MODIFIER LETTER CYRILLIC SMALL YERU;NFKC_CF=044B;NFKC_SCF=044B
+cp;1E048;dm=044D;na=MODIFIER LETTER CYRILLIC SMALL E;NFKC_CF=044D;NFKC_SCF=044D
+cp;1E049;dm=044E;na=MODIFIER LETTER CYRILLIC SMALL YU;NFKC_CF=044E;NFKC_SCF=044E
+cp;1E04A;dm=A689;na=MODIFIER LETTER CYRILLIC SMALL DZZE;NFKC_CF=A689;NFKC_SCF=A689
+cp;1E04B;dm=04D9;na=MODIFIER LETTER CYRILLIC SMALL SCHWA;NFKC_CF=04D9;NFKC_SCF=04D9
+cp;1E04C;dm=0456;na=MODIFIER LETTER CYRILLIC SMALL BYELORUSSIAN-UKRAINIAN I;NFKC_CF=0456;NFKC_SCF=0456;SD
+cp;1E04D;dm=0458;na=MODIFIER LETTER CYRILLIC SMALL JE;NFKC_CF=0458;NFKC_SCF=0458;SD
+cp;1E04E;dm=04E9;na=MODIFIER LETTER CYRILLIC SMALL BARRED O;NFKC_CF=04E9;NFKC_SCF=04E9
+cp;1E04F;dm=04AF;na=MODIFIER LETTER CYRILLIC SMALL STRAIGHT U;NFKC_CF=04AF;NFKC_SCF=04AF
+cp;1E050;dm=04CF;na=MODIFIER LETTER CYRILLIC SMALL PALOCHKA;NFKC_CF=04CF;NFKC_SCF=04CF
# Subscript modifier letters
-cp;1E051;dm=0430;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER A;NFKC_CF=0430
-cp;1E052;dm=0431;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER BE;NFKC_CF=0431
-cp;1E053;dm=0432;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER VE;NFKC_CF=0432
-cp;1E054;dm=0433;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER GHE;NFKC_CF=0433
-cp;1E055;dm=0434;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER DE;NFKC_CF=0434
-cp;1E056;dm=0435;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER IE;NFKC_CF=0435
-cp;1E057;dm=0436;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER ZHE;NFKC_CF=0436
-cp;1E058;dm=0437;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER ZE;NFKC_CF=0437
-cp;1E059;dm=0438;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER I;NFKC_CF=0438
-cp;1E05A;dm=043A;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER KA;NFKC_CF=043A
-cp;1E05B;dm=043B;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER EL;NFKC_CF=043B
-cp;1E05C;dm=043E;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER O;NFKC_CF=043E
-cp;1E05D;dm=043F;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER PE;NFKC_CF=043F
-cp;1E05E;dm=0441;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER ES;NFKC_CF=0441
-cp;1E05F;dm=0443;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER U;NFKC_CF=0443
-cp;1E060;dm=0444;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER EF;NFKC_CF=0444
-cp;1E061;dm=0445;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER HA;NFKC_CF=0445
-cp;1E062;dm=0446;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER TSE;NFKC_CF=0446
-cp;1E063;dm=0447;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER CHE;NFKC_CF=0447
-cp;1E064;dm=0448;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER SHA;NFKC_CF=0448
-cp;1E065;dm=044A;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER HARD SIGN;NFKC_CF=044A
-cp;1E066;dm=044B;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER YERU;NFKC_CF=044B
-cp;1E067;dm=0491;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER GHE WITH UPTURN;NFKC_CF=0491
-cp;1E068;dm=0456;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER BYELORUSSIAN-UKRAINIAN I;NFKC_CF=0456;SD
-cp;1E069;dm=0455;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER DZE;NFKC_CF=0455
-cp;1E06A;dm=045F;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER DZHE;NFKC_CF=045F
+cp;1E051;dm=0430;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER A;NFKC_CF=0430;NFKC_SCF=0430
+cp;1E052;dm=0431;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER BE;NFKC_CF=0431;NFKC_SCF=0431
+cp;1E053;dm=0432;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER VE;NFKC_CF=0432;NFKC_SCF=0432
+cp;1E054;dm=0433;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER GHE;NFKC_CF=0433;NFKC_SCF=0433
+cp;1E055;dm=0434;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER DE;NFKC_CF=0434;NFKC_SCF=0434
+cp;1E056;dm=0435;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER IE;NFKC_CF=0435;NFKC_SCF=0435
+cp;1E057;dm=0436;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER ZHE;NFKC_CF=0436;NFKC_SCF=0436
+cp;1E058;dm=0437;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER ZE;NFKC_CF=0437;NFKC_SCF=0437
+cp;1E059;dm=0438;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER I;NFKC_CF=0438;NFKC_SCF=0438
+cp;1E05A;dm=043A;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER KA;NFKC_CF=043A;NFKC_SCF=043A
+cp;1E05B;dm=043B;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER EL;NFKC_CF=043B;NFKC_SCF=043B
+cp;1E05C;dm=043E;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER O;NFKC_CF=043E;NFKC_SCF=043E
+cp;1E05D;dm=043F;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER PE;NFKC_CF=043F;NFKC_SCF=043F
+cp;1E05E;dm=0441;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER ES;NFKC_CF=0441;NFKC_SCF=0441
+cp;1E05F;dm=0443;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER U;NFKC_CF=0443;NFKC_SCF=0443
+cp;1E060;dm=0444;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER EF;NFKC_CF=0444;NFKC_SCF=0444
+cp;1E061;dm=0445;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER HA;NFKC_CF=0445;NFKC_SCF=0445
+cp;1E062;dm=0446;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER TSE;NFKC_CF=0446;NFKC_SCF=0446
+cp;1E063;dm=0447;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER CHE;NFKC_CF=0447;NFKC_SCF=0447
+cp;1E064;dm=0448;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER SHA;NFKC_CF=0448;NFKC_SCF=0448
+cp;1E065;dm=044A;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER HARD SIGN;NFKC_CF=044A;NFKC_SCF=044A
+cp;1E066;dm=044B;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER YERU;NFKC_CF=044B;NFKC_SCF=044B
+cp;1E067;dm=0491;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER GHE WITH UPTURN;NFKC_CF=0491;NFKC_SCF=0491
+cp;1E068;dm=0456;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER BYELORUSSIAN-UKRAINIAN I;NFKC_CF=0456;NFKC_SCF=0456;SD
+cp;1E069;dm=0455;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER DZE;NFKC_CF=0455;NFKC_SCF=0455
+cp;1E06A;dm=045F;dt=Sub;na=CYRILLIC SUBSCRIPT SMALL LETTER DZHE;NFKC_CF=045F;NFKC_SCF=045F
# Superscript modifier letters
-cp;1E06B;dm=04AB;na=MODIFIER LETTER CYRILLIC SMALL ES WITH DESCENDER;NFKC_CF=04AB
-cp;1E06C;dm=A651;na=MODIFIER LETTER CYRILLIC SMALL YERU WITH BACK YER;NFKC_CF=A651
-cp;1E06D;dm=04B1;na=MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE;NFKC_CF=04B1
+cp;1E06B;dm=04AB;na=MODIFIER LETTER CYRILLIC SMALL ES WITH DESCENDER;NFKC_CF=04AB;NFKC_SCF=04AB
+cp;1E06C;dm=A651;na=MODIFIER LETTER CYRILLIC SMALL YERU WITH BACK YER;NFKC_CF=A651;NFKC_SCF=A651
+cp;1E06D;dm=04B1;na=MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE;NFKC_CF=04B1;NFKC_SCF=04B1
unassigned;1E06E..1E08E
# Diacritical mark
-cp;1E08F;bc=NSM;-Cased;ccc=230;-CWKCF;-Dia;dt=None;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;-Lower;na=COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I;NFKC_QC=Y;NFKD_QC=Y;SB=EX;WB=Extend;-XIDS
+cp;1E08F;bc=NSM;-Cased;ccc=230;-CWKCF;-Dia;dt=None;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;-Lower;na=COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I;NFKC_QC=Y;NFKD_QC=Y;SB=EX;WB=Extend;-XIDS
block;1E100..1E14F;age=12.0;Alpha;blk=Nyiakeng_Puachue_Hmong;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Hmnp;WB=LE;XIDC;XIDS
# 1E100..1E14F Nyiakeng Puachue Hmong
@@ -36470,13 +36502,13 @@ cp;1E12B;na=NYIAKENG PUACHUE HMONG LETTER EE
cp;1E12C;na=NYIAKENG PUACHUE HMONG LETTER W
unassigned;1E12D..1E12F
# Tone marks
-cp;1E130;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=NYIAKENG PUACHUE HMONG TONE-B;SB=EX;WB=Extend;-XIDS
-cp;1E131;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=NYIAKENG PUACHUE HMONG TONE-M;SB=EX;WB=Extend;-XIDS
-cp;1E132;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=NYIAKENG PUACHUE HMONG TONE-J;SB=EX;WB=Extend;-XIDS
-cp;1E133;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=NYIAKENG PUACHUE HMONG TONE-V;SB=EX;WB=Extend;-XIDS
-cp;1E134;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=NYIAKENG PUACHUE HMONG TONE-S;SB=EX;WB=Extend;-XIDS
-cp;1E135;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=NYIAKENG PUACHUE HMONG TONE-G;SB=EX;WB=Extend;-XIDS
-cp;1E136;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=NYIAKENG PUACHUE HMONG TONE-D;SB=EX;WB=Extend;-XIDS
+cp;1E130;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=NYIAKENG PUACHUE HMONG TONE-B;SB=EX;WB=Extend;-XIDS
+cp;1E131;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=NYIAKENG PUACHUE HMONG TONE-M;SB=EX;WB=Extend;-XIDS
+cp;1E132;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=NYIAKENG PUACHUE HMONG TONE-J;SB=EX;WB=Extend;-XIDS
+cp;1E133;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=NYIAKENG PUACHUE HMONG TONE-V;SB=EX;WB=Extend;-XIDS
+cp;1E134;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=NYIAKENG PUACHUE HMONG TONE-S;SB=EX;WB=Extend;-XIDS
+cp;1E135;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=NYIAKENG PUACHUE HMONG TONE-G;SB=EX;WB=Extend;-XIDS
+cp;1E136;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=NYIAKENG PUACHUE HMONG TONE-D;SB=EX;WB=Extend;-XIDS
# Determinatives
cp;1E137;CI;gc=Lm;na=NYIAKENG PUACHUE HMONG SIGN FOR PERSON
cp;1E138;CI;gc=Lm;na=NYIAKENG PUACHUE HMONG SIGN FOR THING
@@ -36539,7 +36571,7 @@ cp;1E2AB;na=TOTO LETTER AE
cp;1E2AC;na=TOTO LETTER BREATHY AE
cp;1E2AD;na=TOTO LETTER A
# Sign
-cp;1E2AE;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=TOTO SIGN RISING TONE;SB=EX;WB=Extend;-XIDS
+cp;1E2AE;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=TOTO SIGN RISING TONE;SB=EX;WB=Extend;-XIDS
unassigned;1E2AF..1E2BF
block;1E2C0..1E2FF;age=12.0;Alpha;blk=Wancho;gc=Lo;Gr_Base;IDC;IDS;lb=AL;SB=LE;sc=Wcho;WB=LE;XIDC;XIDS
@@ -36590,10 +36622,10 @@ cp;1E2E9;na=WANCHO LETTER NYA
cp;1E2EA;na=WANCHO LETTER UEN
cp;1E2EB;na=WANCHO LETTER YIH
# Tone marks
-cp;1E2EC;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=WANCHO TONE TUP;SB=EX;WB=Extend;-XIDS
-cp;1E2ED;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=WANCHO TONE TUPNI;SB=EX;WB=Extend;-XIDS
-cp;1E2EE;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=WANCHO TONE KOI;SB=EX;WB=Extend;-XIDS
-cp;1E2EF;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=WANCHO TONE KOINI;SB=EX;WB=Extend;-XIDS
+cp;1E2EC;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=WANCHO TONE TUP;SB=EX;WB=Extend;-XIDS
+cp;1E2ED;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=WANCHO TONE TUPNI;SB=EX;WB=Extend;-XIDS
+cp;1E2EE;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=WANCHO TONE KOI;SB=EX;WB=Extend;-XIDS
+cp;1E2EF;-Alpha;bc=NSM;ccc=230;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=WANCHO TONE KOINI;SB=EX;WB=Extend;-XIDS
# Digits
cp;1E2F0;-Alpha;gc=Nd;-IDS;lb=NU;na=WANCHO DIGIT ZERO;nt=De;nv=0;SB=NU;WB=NU;-XIDS
cp;1E2F1;-Alpha;gc=Nd;-IDS;lb=NU;na=WANCHO DIGIT ONE;nt=De;nv=1;SB=NU;WB=NU;-XIDS
@@ -36641,10 +36673,10 @@ cp;1E4E9;na=NAG MUNDARI LETTER ETT
cp;1E4EA;na=NAG MUNDARI LETTER ELL
# Various signs
cp;1E4EB;CI;gc=Lm;na=NAG MUNDARI SIGN OJOD
-cp;1E4EC;-Alpha;bc=NSM;ccc=232;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=NAG MUNDARI SIGN MUHOR;SB=EX;WB=Extend;-XIDS
-cp;1E4ED;-Alpha;bc=NSM;ccc=232;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=NAG MUNDARI SIGN TOYOR;SB=EX;WB=Extend;-XIDS
-cp;1E4EE;-Alpha;bc=NSM;ccc=220;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=NAG MUNDARI SIGN IKIR;SB=EX;WB=Extend;-XIDS
-cp;1E4EF;-Alpha;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=NAG MUNDARI SIGN SUTUH;SB=EX;WB=Extend;-XIDS
+cp;1E4EC;-Alpha;bc=NSM;ccc=232;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=NAG MUNDARI SIGN MUHOR;SB=EX;WB=Extend;-XIDS
+cp;1E4ED;-Alpha;bc=NSM;ccc=232;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=NAG MUNDARI SIGN TOYOR;SB=EX;WB=Extend;-XIDS
+cp;1E4EE;-Alpha;bc=NSM;ccc=220;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=NAG MUNDARI SIGN IKIR;SB=EX;WB=Extend;-XIDS
+cp;1E4EF;-Alpha;bc=NSM;ccc=230;CI;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=NAG MUNDARI SIGN SUTUH;SB=EX;WB=Extend;-XIDS
# Digits
cp;1E4F0;-Alpha;gc=Nd;-IDS;lb=NU;na=NAG MUNDARI DIGIT ZERO;nt=De;nv=0;SB=NU;WB=NU;-XIDS
cp;1E4F1;-Alpha;gc=Nd;-IDS;lb=NU;na=NAG MUNDARI DIGIT ONE;nt=De;nv=1;SB=NU;WB=NU;-XIDS
@@ -36932,13 +36964,13 @@ cp;1E8CD;-Alpha;gc=No;-IDC;-IDS;na=MENDE KIKAKUI DIGIT SEVEN;nt=Nu;nv=7;SB=XX;WB
cp;1E8CE;-Alpha;gc=No;-IDC;-IDS;na=MENDE KIKAKUI DIGIT EIGHT;nt=Nu;nv=8;SB=XX;WB=XX;-XIDC;-XIDS
cp;1E8CF;-Alpha;gc=No;-IDC;-IDS;na=MENDE KIKAKUI DIGIT NINE;nt=Nu;nv=9;SB=XX;WB=XX;-XIDC;-XIDS
# Combining number bases
-cp;1E8D0;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=MENDE KIKAKUI COMBINING NUMBER TEENS;SB=EX;WB=Extend;-XIDS
-cp;1E8D1;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=MENDE KIKAKUI COMBINING NUMBER TENS;SB=EX;WB=Extend;-XIDS
-cp;1E8D2;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=MENDE KIKAKUI COMBINING NUMBER HUNDREDS;SB=EX;WB=Extend;-XIDS
-cp;1E8D3;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=MENDE KIKAKUI COMBINING NUMBER THOUSANDS;SB=EX;WB=Extend;-XIDS
-cp;1E8D4;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=MENDE KIKAKUI COMBINING NUMBER TEN THOUSANDS;SB=EX;WB=Extend;-XIDS
-cp;1E8D5;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=MENDE KIKAKUI COMBINING NUMBER HUNDRED THOUSANDS;SB=EX;WB=Extend;-XIDS
-cp;1E8D6;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=MENDE KIKAKUI COMBINING NUMBER MILLIONS;SB=EX;WB=Extend;-XIDS
+cp;1E8D0;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=MENDE KIKAKUI COMBINING NUMBER TEENS;SB=EX;WB=Extend;-XIDS
+cp;1E8D1;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=MENDE KIKAKUI COMBINING NUMBER TENS;SB=EX;WB=Extend;-XIDS
+cp;1E8D2;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=MENDE KIKAKUI COMBINING NUMBER HUNDREDS;SB=EX;WB=Extend;-XIDS
+cp;1E8D3;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=MENDE KIKAKUI COMBINING NUMBER THOUSANDS;SB=EX;WB=Extend;-XIDS
+cp;1E8D4;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=MENDE KIKAKUI COMBINING NUMBER TEN THOUSANDS;SB=EX;WB=Extend;-XIDS
+cp;1E8D5;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=MENDE KIKAKUI COMBINING NUMBER HUNDRED THOUSANDS;SB=EX;WB=Extend;-XIDS
+cp;1E8D6;-Alpha;bc=NSM;ccc=220;CI;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=MENDE KIKAKUI COMBINING NUMBER MILLIONS;SB=EX;WB=Extend;-XIDS
unassigned;1E8D7..1E8DF;bc=R
# No block
@@ -36947,41 +36979,41 @@ unassigned;1E8E0..1E8FF;bc=R
block;1E900..1E95F;age=9.0;Alpha;bc=R;blk=Adlam;Cased;CWCM;gc=Ll;Gr_Base;IDC;IDS;jt=D;lb=AL;SB=LO;sc=Adlm;WB=LE;XIDC;XIDS
# 1E900..1E95F Adlam
# Capital letters
-cp;1E900;cf=1E922;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER ALIF;NFKC_CF=1E922;SB=UP;scf=1E922;slc=1E922;Upper
-cp;1E901;cf=1E923;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER DAALI;NFKC_CF=1E923;SB=UP;scf=1E923;slc=1E923;Upper
-cp;1E902;cf=1E924;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER LAAM;NFKC_CF=1E924;SB=UP;scf=1E924;slc=1E924;Upper
-cp;1E903;cf=1E925;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER MIIM;NFKC_CF=1E925;SB=UP;scf=1E925;slc=1E925;Upper
-cp;1E904;cf=1E926;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER BA;NFKC_CF=1E926;SB=UP;scf=1E926;slc=1E926;Upper
-cp;1E905;cf=1E927;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER SINNYIIYHE;NFKC_CF=1E927;SB=UP;scf=1E927;slc=1E927;Upper
-cp;1E906;cf=1E928;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER PE;NFKC_CF=1E928;SB=UP;scf=1E928;slc=1E928;Upper
-cp;1E907;cf=1E929;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER BHE;NFKC_CF=1E929;SB=UP;scf=1E929;slc=1E929;Upper
-cp;1E908;cf=1E92A;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER RA;NFKC_CF=1E92A;SB=UP;scf=1E92A;slc=1E92A;Upper
-cp;1E909;cf=1E92B;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER E;NFKC_CF=1E92B;SB=UP;scf=1E92B;slc=1E92B;Upper
-cp;1E90A;cf=1E92C;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER FA;NFKC_CF=1E92C;SB=UP;scf=1E92C;slc=1E92C;Upper
-cp;1E90B;cf=1E92D;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER I;NFKC_CF=1E92D;SB=UP;scf=1E92D;slc=1E92D;Upper
-cp;1E90C;cf=1E92E;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER O;NFKC_CF=1E92E;SB=UP;scf=1E92E;slc=1E92E;Upper
-cp;1E90D;cf=1E92F;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER DHA;NFKC_CF=1E92F;SB=UP;scf=1E92F;slc=1E92F;Upper
-cp;1E90E;cf=1E930;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER YHE;NFKC_CF=1E930;SB=UP;scf=1E930;slc=1E930;Upper
-cp;1E90F;cf=1E931;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER WAW;NFKC_CF=1E931;SB=UP;scf=1E931;slc=1E931;Upper
-cp;1E910;cf=1E932;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER NUN;NFKC_CF=1E932;SB=UP;scf=1E932;slc=1E932;Upper
-cp;1E911;cf=1E933;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER KAF;NFKC_CF=1E933;SB=UP;scf=1E933;slc=1E933;Upper
-cp;1E912;cf=1E934;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER YA;NFKC_CF=1E934;SB=UP;scf=1E934;slc=1E934;Upper
-cp;1E913;cf=1E935;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER U;NFKC_CF=1E935;SB=UP;scf=1E935;slc=1E935;Upper
-cp;1E914;cf=1E936;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER JIIM;NFKC_CF=1E936;SB=UP;scf=1E936;slc=1E936;Upper
-cp;1E915;cf=1E937;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER CHI;NFKC_CF=1E937;SB=UP;scf=1E937;slc=1E937;Upper
-cp;1E916;cf=1E938;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER HA;NFKC_CF=1E938;SB=UP;scf=1E938;slc=1E938;Upper
-cp;1E917;cf=1E939;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER QAAF;NFKC_CF=1E939;SB=UP;scf=1E939;slc=1E939;Upper
-cp;1E918;cf=1E93A;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER GA;NFKC_CF=1E93A;SB=UP;scf=1E93A;slc=1E93A;Upper
-cp;1E919;cf=1E93B;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER NYA;NFKC_CF=1E93B;SB=UP;scf=1E93B;slc=1E93B;Upper
-cp;1E91A;cf=1E93C;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER TU;NFKC_CF=1E93C;SB=UP;scf=1E93C;slc=1E93C;Upper
-cp;1E91B;cf=1E93D;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER NHA;NFKC_CF=1E93D;SB=UP;scf=1E93D;slc=1E93D;Upper
+cp;1E900;cf=1E922;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER ALIF;NFKC_CF=1E922;NFKC_SCF=1E922;SB=UP;scf=1E922;slc=1E922;Upper
+cp;1E901;cf=1E923;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER DAALI;NFKC_CF=1E923;NFKC_SCF=1E923;SB=UP;scf=1E923;slc=1E923;Upper
+cp;1E902;cf=1E924;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER LAAM;NFKC_CF=1E924;NFKC_SCF=1E924;SB=UP;scf=1E924;slc=1E924;Upper
+cp;1E903;cf=1E925;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER MIIM;NFKC_CF=1E925;NFKC_SCF=1E925;SB=UP;scf=1E925;slc=1E925;Upper
+cp;1E904;cf=1E926;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER BA;NFKC_CF=1E926;NFKC_SCF=1E926;SB=UP;scf=1E926;slc=1E926;Upper
+cp;1E905;cf=1E927;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER SINNYIIYHE;NFKC_CF=1E927;NFKC_SCF=1E927;SB=UP;scf=1E927;slc=1E927;Upper
+cp;1E906;cf=1E928;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER PE;NFKC_CF=1E928;NFKC_SCF=1E928;SB=UP;scf=1E928;slc=1E928;Upper
+cp;1E907;cf=1E929;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER BHE;NFKC_CF=1E929;NFKC_SCF=1E929;SB=UP;scf=1E929;slc=1E929;Upper
+cp;1E908;cf=1E92A;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER RA;NFKC_CF=1E92A;NFKC_SCF=1E92A;SB=UP;scf=1E92A;slc=1E92A;Upper
+cp;1E909;cf=1E92B;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER E;NFKC_CF=1E92B;NFKC_SCF=1E92B;SB=UP;scf=1E92B;slc=1E92B;Upper
+cp;1E90A;cf=1E92C;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER FA;NFKC_CF=1E92C;NFKC_SCF=1E92C;SB=UP;scf=1E92C;slc=1E92C;Upper
+cp;1E90B;cf=1E92D;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER I;NFKC_CF=1E92D;NFKC_SCF=1E92D;SB=UP;scf=1E92D;slc=1E92D;Upper
+cp;1E90C;cf=1E92E;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER O;NFKC_CF=1E92E;NFKC_SCF=1E92E;SB=UP;scf=1E92E;slc=1E92E;Upper
+cp;1E90D;cf=1E92F;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER DHA;NFKC_CF=1E92F;NFKC_SCF=1E92F;SB=UP;scf=1E92F;slc=1E92F;Upper
+cp;1E90E;cf=1E930;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER YHE;NFKC_CF=1E930;NFKC_SCF=1E930;SB=UP;scf=1E930;slc=1E930;Upper
+cp;1E90F;cf=1E931;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER WAW;NFKC_CF=1E931;NFKC_SCF=1E931;SB=UP;scf=1E931;slc=1E931;Upper
+cp;1E910;cf=1E932;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER NUN;NFKC_CF=1E932;NFKC_SCF=1E932;SB=UP;scf=1E932;slc=1E932;Upper
+cp;1E911;cf=1E933;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER KAF;NFKC_CF=1E933;NFKC_SCF=1E933;SB=UP;scf=1E933;slc=1E933;Upper
+cp;1E912;cf=1E934;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER YA;NFKC_CF=1E934;NFKC_SCF=1E934;SB=UP;scf=1E934;slc=1E934;Upper
+cp;1E913;cf=1E935;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER U;NFKC_CF=1E935;NFKC_SCF=1E935;SB=UP;scf=1E935;slc=1E935;Upper
+cp;1E914;cf=1E936;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER JIIM;NFKC_CF=1E936;NFKC_SCF=1E936;SB=UP;scf=1E936;slc=1E936;Upper
+cp;1E915;cf=1E937;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER CHI;NFKC_CF=1E937;NFKC_SCF=1E937;SB=UP;scf=1E937;slc=1E937;Upper
+cp;1E916;cf=1E938;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER HA;NFKC_CF=1E938;NFKC_SCF=1E938;SB=UP;scf=1E938;slc=1E938;Upper
+cp;1E917;cf=1E939;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER QAAF;NFKC_CF=1E939;NFKC_SCF=1E939;SB=UP;scf=1E939;slc=1E939;Upper
+cp;1E918;cf=1E93A;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER GA;NFKC_CF=1E93A;NFKC_SCF=1E93A;SB=UP;scf=1E93A;slc=1E93A;Upper
+cp;1E919;cf=1E93B;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER NYA;NFKC_CF=1E93B;NFKC_SCF=1E93B;SB=UP;scf=1E93B;slc=1E93B;Upper
+cp;1E91A;cf=1E93C;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER TU;NFKC_CF=1E93C;NFKC_SCF=1E93C;SB=UP;scf=1E93C;slc=1E93C;Upper
+cp;1E91B;cf=1E93D;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER NHA;NFKC_CF=1E93D;NFKC_SCF=1E93D;SB=UP;scf=1E93D;slc=1E93D;Upper
# Supplementary capital letters
-cp;1E91C;cf=1E93E;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER VA;NFKC_CF=1E93E;SB=UP;scf=1E93E;slc=1E93E;Upper
-cp;1E91D;cf=1E93F;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER KHA;NFKC_CF=1E93F;SB=UP;scf=1E93F;slc=1E93F;Upper
-cp;1E91E;cf=1E940;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER GBE;NFKC_CF=1E940;SB=UP;scf=1E940;slc=1E940;Upper
-cp;1E91F;cf=1E941;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER ZAL;NFKC_CF=1E941;SB=UP;scf=1E941;slc=1E941;Upper
-cp;1E920;cf=1E942;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER KPO;NFKC_CF=1E942;SB=UP;scf=1E942;slc=1E942;Upper
-cp;1E921;cf=1E943;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER SHA;NFKC_CF=1E943;SB=UP;scf=1E943;slc=1E943;Upper
+cp;1E91C;cf=1E93E;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER VA;NFKC_CF=1E93E;NFKC_SCF=1E93E;SB=UP;scf=1E93E;slc=1E93E;Upper
+cp;1E91D;cf=1E93F;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER KHA;NFKC_CF=1E93F;NFKC_SCF=1E93F;SB=UP;scf=1E93F;slc=1E93F;Upper
+cp;1E91E;cf=1E940;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER GBE;NFKC_CF=1E940;NFKC_SCF=1E940;SB=UP;scf=1E940;slc=1E940;Upper
+cp;1E91F;cf=1E941;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER ZAL;NFKC_CF=1E941;NFKC_SCF=1E941;SB=UP;scf=1E941;slc=1E941;Upper
+cp;1E920;cf=1E942;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER KPO;NFKC_CF=1E942;NFKC_SCF=1E942;SB=UP;scf=1E942;slc=1E942;Upper
+cp;1E921;cf=1E943;CWCF;CWKCF;CWL;gc=Lu;na=ADLAM CAPITAL LETTER SHA;NFKC_CF=1E943;NFKC_SCF=1E943;SB=UP;scf=1E943;slc=1E943;Upper
# Small letters
cp;1E922;CWT;CWU;Lower;na=ADLAM SMALL LETTER ALIF;stc=1E900;suc=1E900
cp;1E923;CWT;CWU;Lower;na=ADLAM SMALL LETTER DAALI;stc=1E901;suc=1E901
@@ -37019,13 +37051,13 @@ cp;1E941;CWT;CWU;Lower;na=ADLAM SMALL LETTER ZAL;stc=1E91F;suc=1E91F
cp;1E942;CWT;CWU;Lower;na=ADLAM SMALL LETTER KPO;stc=1E920;suc=1E920
cp;1E943;CWT;CWU;Lower;na=ADLAM SMALL LETTER SHA;stc=1E921;suc=1E921
# Diacritical marks
-cp;1E944;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;Ext;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ADLAM ALIF LENGTHENER;SB=EX;WB=Extend;-XIDS
-cp;1E945;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;Ext;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ADLAM VOWEL LENGTHENER;SB=EX;WB=Extend;-XIDS
-cp;1E946;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;Ext;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ADLAM GEMINATION MARK;SB=EX;WB=Extend;-XIDS
-cp;1E947;bc=NSM;-Cased;ccc=230;CI;-CWCM;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ADLAM HAMZA;SB=EX;WB=Extend;-XIDS
-cp;1E948;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ADLAM CONSONANT MODIFIER;SB=EX;WB=Extend;-XIDS
-cp;1E949;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ADLAM GEMINATE CONSONANT MODIFIER;SB=EX;WB=Extend;-XIDS
-cp;1E94A;-Alpha;bc=NSM;-Cased;ccc=7;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;jt=T;lb=CM;na=ADLAM NUKTA;SB=EX;WB=Extend;-XIDS
+cp;1E944;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;Ext;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ADLAM ALIF LENGTHENER;SB=EX;WB=Extend;-XIDS
+cp;1E945;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;Ext;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ADLAM VOWEL LENGTHENER;SB=EX;WB=Extend;-XIDS
+cp;1E946;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;Ext;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ADLAM GEMINATION MARK;SB=EX;WB=Extend;-XIDS
+cp;1E947;bc=NSM;-Cased;ccc=230;CI;-CWCM;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ADLAM HAMZA;SB=EX;WB=Extend;-XIDS
+cp;1E948;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ADLAM CONSONANT MODIFIER;SB=EX;WB=Extend;-XIDS
+cp;1E949;-Alpha;bc=NSM;-Cased;ccc=230;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ADLAM GEMINATE CONSONANT MODIFIER;SB=EX;WB=Extend;-XIDS
+cp;1E94A;-Alpha;bc=NSM;-Cased;ccc=7;CI;-CWCM;Dia;gc=Mn;GCB=EX;-Gr_Base;Gr_Ext;-IDS;InCB=Extend;jt=T;lb=CM;na=ADLAM NUKTA;SB=EX;WB=Extend;-XIDS
# Modifier letter
cp;1E94B;age=12.0;-Cased;CI;-CWCM;gc=Lm;jt=T;na=ADLAM NASALIZATION MARK;SB=LE
unassigned;1E94C..1E94F;bc=R
@@ -37213,191 +37245,191 @@ unassigned;1ED3E..1ED4F;bc=AL
# No block
unassigned;1ED50..1EDFF;bc=R
-block;1EE00..1EEFF;age=6.1;Alpha;bc=AL;blk=Arabic_Math;CWKCF;dt=Font;gc=Lo;Gr_Base;IDC;IDS;lb=AL;Math;NFKC_QC=N;NFKD_QC=N;SB=LE;sc=Arab;WB=LE;XIDC;XIDS
+block;1EE00..1EEFF;age=6.1;Alpha;bc=AL;blk=Arabic_Math;CWKCF;dt=Font;gc=Lo;Gr_Base;IDC;IDS;lb=AL;Math;NFKC_QC=N;NFKC_SCF=062C;NFKD_QC=N;SB=LE;sc=Arab;WB=LE;XIDC;XIDS
# 1EE00..1EEFF Arabic Mathematical Alphabetic Symbols
# Isolated symbols
-cp;1EE00;dm=0627;na=ARABIC MATHEMATICAL ALEF;NFKC_CF=0627
-cp;1EE01;dm=0628;na=ARABIC MATHEMATICAL BEH;NFKC_CF=0628
+cp;1EE00;dm=0627;na=ARABIC MATHEMATICAL ALEF;NFKC_CF=0627;NFKC_SCF=0627
+cp;1EE01;dm=0628;na=ARABIC MATHEMATICAL BEH;NFKC_CF=0628;NFKC_SCF=0628
cp;1EE02;dm=062C;na=ARABIC MATHEMATICAL JEEM;NFKC_CF=062C
-cp;1EE03;dm=062F;na=ARABIC MATHEMATICAL DAL;NFKC_CF=062F
+cp;1EE03;dm=062F;na=ARABIC MATHEMATICAL DAL;NFKC_CF=062F;NFKC_SCF=062F
unassigned;1EE04;bc=AL
-cp;1EE05;dm=0648;na=ARABIC MATHEMATICAL WAW;NFKC_CF=0648
-cp;1EE06;dm=0632;na=ARABIC MATHEMATICAL ZAIN;NFKC_CF=0632
-cp;1EE07;dm=062D;na=ARABIC MATHEMATICAL HAH;NFKC_CF=062D
-cp;1EE08;dm=0637;na=ARABIC MATHEMATICAL TAH;NFKC_CF=0637
-cp;1EE09;dm=064A;na=ARABIC MATHEMATICAL YEH;NFKC_CF=064A
-cp;1EE0A;dm=0643;na=ARABIC MATHEMATICAL KAF;NFKC_CF=0643
-cp;1EE0B;dm=0644;na=ARABIC MATHEMATICAL LAM;NFKC_CF=0644
-cp;1EE0C;dm=0645;na=ARABIC MATHEMATICAL MEEM;NFKC_CF=0645
-cp;1EE0D;dm=0646;na=ARABIC MATHEMATICAL NOON;NFKC_CF=0646
-cp;1EE0E;dm=0633;na=ARABIC MATHEMATICAL SEEN;NFKC_CF=0633
-cp;1EE0F;dm=0639;na=ARABIC MATHEMATICAL AIN;NFKC_CF=0639
-cp;1EE10;dm=0641;na=ARABIC MATHEMATICAL FEH;NFKC_CF=0641
-cp;1EE11;dm=0635;na=ARABIC MATHEMATICAL SAD;NFKC_CF=0635
-cp;1EE12;dm=0642;na=ARABIC MATHEMATICAL QAF;NFKC_CF=0642
-cp;1EE13;dm=0631;na=ARABIC MATHEMATICAL REH;NFKC_CF=0631
-cp;1EE14;dm=0634;na=ARABIC MATHEMATICAL SHEEN;NFKC_CF=0634
-cp;1EE15;dm=062A;na=ARABIC MATHEMATICAL TEH;NFKC_CF=062A
-cp;1EE16;dm=062B;na=ARABIC MATHEMATICAL THEH;NFKC_CF=062B
-cp;1EE17;dm=062E;na=ARABIC MATHEMATICAL KHAH;NFKC_CF=062E
-cp;1EE18;dm=0630;na=ARABIC MATHEMATICAL THAL;NFKC_CF=0630
-cp;1EE19;dm=0636;na=ARABIC MATHEMATICAL DAD;NFKC_CF=0636
-cp;1EE1A;dm=0638;na=ARABIC MATHEMATICAL ZAH;NFKC_CF=0638
-cp;1EE1B;dm=063A;na=ARABIC MATHEMATICAL GHAIN;NFKC_CF=063A
-cp;1EE1C;dm=066E;na=ARABIC MATHEMATICAL DOTLESS BEH;NFKC_CF=066E
-cp;1EE1D;dm=06BA;na=ARABIC MATHEMATICAL DOTLESS NOON;NFKC_CF=06BA
-cp;1EE1E;dm=06A1;na=ARABIC MATHEMATICAL DOTLESS FEH;NFKC_CF=06A1
-cp;1EE1F;dm=066F;na=ARABIC MATHEMATICAL DOTLESS QAF;NFKC_CF=066F
+cp;1EE05;dm=0648;na=ARABIC MATHEMATICAL WAW;NFKC_CF=0648;NFKC_SCF=0648
+cp;1EE06;dm=0632;na=ARABIC MATHEMATICAL ZAIN;NFKC_CF=0632;NFKC_SCF=0632
+cp;1EE07;dm=062D;na=ARABIC MATHEMATICAL HAH;NFKC_CF=062D;NFKC_SCF=062D
+cp;1EE08;dm=0637;na=ARABIC MATHEMATICAL TAH;NFKC_CF=0637;NFKC_SCF=0637
+cp;1EE09;dm=064A;na=ARABIC MATHEMATICAL YEH;NFKC_CF=064A;NFKC_SCF=064A
+cp;1EE0A;dm=0643;na=ARABIC MATHEMATICAL KAF;NFKC_CF=0643;NFKC_SCF=0643
+cp;1EE0B;dm=0644;na=ARABIC MATHEMATICAL LAM;NFKC_CF=0644;NFKC_SCF=0644
+cp;1EE0C;dm=0645;na=ARABIC MATHEMATICAL MEEM;NFKC_CF=0645;NFKC_SCF=0645
+cp;1EE0D;dm=0646;na=ARABIC MATHEMATICAL NOON;NFKC_CF=0646;NFKC_SCF=0646
+cp;1EE0E;dm=0633;na=ARABIC MATHEMATICAL SEEN;NFKC_CF=0633;NFKC_SCF=0633
+cp;1EE0F;dm=0639;na=ARABIC MATHEMATICAL AIN;NFKC_CF=0639;NFKC_SCF=0639
+cp;1EE10;dm=0641;na=ARABIC MATHEMATICAL FEH;NFKC_CF=0641;NFKC_SCF=0641
+cp;1EE11;dm=0635;na=ARABIC MATHEMATICAL SAD;NFKC_CF=0635;NFKC_SCF=0635
+cp;1EE12;dm=0642;na=ARABIC MATHEMATICAL QAF;NFKC_CF=0642;NFKC_SCF=0642
+cp;1EE13;dm=0631;na=ARABIC MATHEMATICAL REH;NFKC_CF=0631;NFKC_SCF=0631
+cp;1EE14;dm=0634;na=ARABIC MATHEMATICAL SHEEN;NFKC_CF=0634;NFKC_SCF=0634
+cp;1EE15;dm=062A;na=ARABIC MATHEMATICAL TEH;NFKC_CF=062A;NFKC_SCF=062A
+cp;1EE16;dm=062B;na=ARABIC MATHEMATICAL THEH;NFKC_CF=062B;NFKC_SCF=062B
+cp;1EE17;dm=062E;na=ARABIC MATHEMATICAL KHAH;NFKC_CF=062E;NFKC_SCF=062E
+cp;1EE18;dm=0630;na=ARABIC MATHEMATICAL THAL;NFKC_CF=0630;NFKC_SCF=0630
+cp;1EE19;dm=0636;na=ARABIC MATHEMATICAL DAD;NFKC_CF=0636;NFKC_SCF=0636
+cp;1EE1A;dm=0638;na=ARABIC MATHEMATICAL ZAH;NFKC_CF=0638;NFKC_SCF=0638
+cp;1EE1B;dm=063A;na=ARABIC MATHEMATICAL GHAIN;NFKC_CF=063A;NFKC_SCF=063A
+cp;1EE1C;dm=066E;na=ARABIC MATHEMATICAL DOTLESS BEH;NFKC_CF=066E;NFKC_SCF=066E
+cp;1EE1D;dm=06BA;na=ARABIC MATHEMATICAL DOTLESS NOON;NFKC_CF=06BA;NFKC_SCF=06BA
+cp;1EE1E;dm=06A1;na=ARABIC MATHEMATICAL DOTLESS FEH;NFKC_CF=06A1;NFKC_SCF=06A1
+cp;1EE1F;dm=066F;na=ARABIC MATHEMATICAL DOTLESS QAF;NFKC_CF=066F;NFKC_SCF=066F
unassigned;1EE20;bc=AL
# Initial symbols
-cp;1EE21;dm=0628;na=ARABIC MATHEMATICAL INITIAL BEH;NFKC_CF=0628
+cp;1EE21;dm=0628;na=ARABIC MATHEMATICAL INITIAL BEH;NFKC_CF=0628;NFKC_SCF=0628
cp;1EE22;dm=062C;na=ARABIC MATHEMATICAL INITIAL JEEM;NFKC_CF=062C
unassigned;1EE23;bc=AL
-cp;1EE24;dm=0647;na=ARABIC MATHEMATICAL INITIAL HEH;NFKC_CF=0647
+cp;1EE24;dm=0647;na=ARABIC MATHEMATICAL INITIAL HEH;NFKC_CF=0647;NFKC_SCF=0647
unassigned;1EE25..1EE26;bc=AL
-cp;1EE27;dm=062D;na=ARABIC MATHEMATICAL INITIAL HAH;NFKC_CF=062D
+cp;1EE27;dm=062D;na=ARABIC MATHEMATICAL INITIAL HAH;NFKC_CF=062D;NFKC_SCF=062D
unassigned;1EE28;bc=AL
-cp;1EE29;dm=064A;na=ARABIC MATHEMATICAL INITIAL YEH;NFKC_CF=064A
-cp;1EE2A;dm=0643;na=ARABIC MATHEMATICAL INITIAL KAF;NFKC_CF=0643
-cp;1EE2B;dm=0644;na=ARABIC MATHEMATICAL INITIAL LAM;NFKC_CF=0644
-cp;1EE2C;dm=0645;na=ARABIC MATHEMATICAL INITIAL MEEM;NFKC_CF=0645
-cp;1EE2D;dm=0646;na=ARABIC MATHEMATICAL INITIAL NOON;NFKC_CF=0646
-cp;1EE2E;dm=0633;na=ARABIC MATHEMATICAL INITIAL SEEN;NFKC_CF=0633
-cp;1EE2F;dm=0639;na=ARABIC MATHEMATICAL INITIAL AIN;NFKC_CF=0639
-cp;1EE30;dm=0641;na=ARABIC MATHEMATICAL INITIAL FEH;NFKC_CF=0641
-cp;1EE31;dm=0635;na=ARABIC MATHEMATICAL INITIAL SAD;NFKC_CF=0635
-cp;1EE32;dm=0642;na=ARABIC MATHEMATICAL INITIAL QAF;NFKC_CF=0642
+cp;1EE29;dm=064A;na=ARABIC MATHEMATICAL INITIAL YEH;NFKC_CF=064A;NFKC_SCF=064A
+cp;1EE2A;dm=0643;na=ARABIC MATHEMATICAL INITIAL KAF;NFKC_CF=0643;NFKC_SCF=0643
+cp;1EE2B;dm=0644;na=ARABIC MATHEMATICAL INITIAL LAM;NFKC_CF=0644;NFKC_SCF=0644
+cp;1EE2C;dm=0645;na=ARABIC MATHEMATICAL INITIAL MEEM;NFKC_CF=0645;NFKC_SCF=0645
+cp;1EE2D;dm=0646;na=ARABIC MATHEMATICAL INITIAL NOON;NFKC_CF=0646;NFKC_SCF=0646
+cp;1EE2E;dm=0633;na=ARABIC MATHEMATICAL INITIAL SEEN;NFKC_CF=0633;NFKC_SCF=0633
+cp;1EE2F;dm=0639;na=ARABIC MATHEMATICAL INITIAL AIN;NFKC_CF=0639;NFKC_SCF=0639
+cp;1EE30;dm=0641;na=ARABIC MATHEMATICAL INITIAL FEH;NFKC_CF=0641;NFKC_SCF=0641
+cp;1EE31;dm=0635;na=ARABIC MATHEMATICAL INITIAL SAD;NFKC_CF=0635;NFKC_SCF=0635
+cp;1EE32;dm=0642;na=ARABIC MATHEMATICAL INITIAL QAF;NFKC_CF=0642;NFKC_SCF=0642
unassigned;1EE33;bc=AL
-cp;1EE34;dm=0634;na=ARABIC MATHEMATICAL INITIAL SHEEN;NFKC_CF=0634
-cp;1EE35;dm=062A;na=ARABIC MATHEMATICAL INITIAL TEH;NFKC_CF=062A
-cp;1EE36;dm=062B;na=ARABIC MATHEMATICAL INITIAL THEH;NFKC_CF=062B
-cp;1EE37;dm=062E;na=ARABIC MATHEMATICAL INITIAL KHAH;NFKC_CF=062E
+cp;1EE34;dm=0634;na=ARABIC MATHEMATICAL INITIAL SHEEN;NFKC_CF=0634;NFKC_SCF=0634
+cp;1EE35;dm=062A;na=ARABIC MATHEMATICAL INITIAL TEH;NFKC_CF=062A;NFKC_SCF=062A
+cp;1EE36;dm=062B;na=ARABIC MATHEMATICAL INITIAL THEH;NFKC_CF=062B;NFKC_SCF=062B
+cp;1EE37;dm=062E;na=ARABIC MATHEMATICAL INITIAL KHAH;NFKC_CF=062E;NFKC_SCF=062E
unassigned;1EE38;bc=AL
-cp;1EE39;dm=0636;na=ARABIC MATHEMATICAL INITIAL DAD;NFKC_CF=0636
+cp;1EE39;dm=0636;na=ARABIC MATHEMATICAL INITIAL DAD;NFKC_CF=0636;NFKC_SCF=0636
unassigned;1EE3A;bc=AL
-cp;1EE3B;dm=063A;na=ARABIC MATHEMATICAL INITIAL GHAIN;NFKC_CF=063A
+cp;1EE3B;dm=063A;na=ARABIC MATHEMATICAL INITIAL GHAIN;NFKC_CF=063A;NFKC_SCF=063A
unassigned;1EE3C..1EE41;bc=AL
# Tailed symbols
cp;1EE42;dm=062C;na=ARABIC MATHEMATICAL TAILED JEEM;NFKC_CF=062C
unassigned;1EE43..1EE46;bc=AL
-cp;1EE47;dm=062D;na=ARABIC MATHEMATICAL TAILED HAH;NFKC_CF=062D
+cp;1EE47;dm=062D;na=ARABIC MATHEMATICAL TAILED HAH;NFKC_CF=062D;NFKC_SCF=062D
unassigned;1EE48;bc=AL
-cp;1EE49;dm=064A;na=ARABIC MATHEMATICAL TAILED YEH;NFKC_CF=064A
+cp;1EE49;dm=064A;na=ARABIC MATHEMATICAL TAILED YEH;NFKC_CF=064A;NFKC_SCF=064A
unassigned;1EE4A;bc=AL
-cp;1EE4B;dm=0644;na=ARABIC MATHEMATICAL TAILED LAM;NFKC_CF=0644
+cp;1EE4B;dm=0644;na=ARABIC MATHEMATICAL TAILED LAM;NFKC_CF=0644;NFKC_SCF=0644
unassigned;1EE4C;bc=AL
-cp;1EE4D;dm=0646;na=ARABIC MATHEMATICAL TAILED NOON;NFKC_CF=0646
-cp;1EE4E;dm=0633;na=ARABIC MATHEMATICAL TAILED SEEN;NFKC_CF=0633
-cp;1EE4F;dm=0639;na=ARABIC MATHEMATICAL TAILED AIN;NFKC_CF=0639
+cp;1EE4D;dm=0646;na=ARABIC MATHEMATICAL TAILED NOON;NFKC_CF=0646;NFKC_SCF=0646
+cp;1EE4E;dm=0633;na=ARABIC MATHEMATICAL TAILED SEEN;NFKC_CF=0633;NFKC_SCF=0633
+cp;1EE4F;dm=0639;na=ARABIC MATHEMATICAL TAILED AIN;NFKC_CF=0639;NFKC_SCF=0639
unassigned;1EE50;bc=AL
-cp;1EE51;dm=0635;na=ARABIC MATHEMATICAL TAILED SAD;NFKC_CF=0635
-cp;1EE52;dm=0642;na=ARABIC MATHEMATICAL TAILED QAF;NFKC_CF=0642
+cp;1EE51;dm=0635;na=ARABIC MATHEMATICAL TAILED SAD;NFKC_CF=0635;NFKC_SCF=0635
+cp;1EE52;dm=0642;na=ARABIC MATHEMATICAL TAILED QAF;NFKC_CF=0642;NFKC_SCF=0642
unassigned;1EE53;bc=AL
-cp;1EE54;dm=0634;na=ARABIC MATHEMATICAL TAILED SHEEN;NFKC_CF=0634
+cp;1EE54;dm=0634;na=ARABIC MATHEMATICAL TAILED SHEEN;NFKC_CF=0634;NFKC_SCF=0634
unassigned;1EE55..1EE56;bc=AL
-cp;1EE57;dm=062E;na=ARABIC MATHEMATICAL TAILED KHAH;NFKC_CF=062E
+cp;1EE57;dm=062E;na=ARABIC MATHEMATICAL TAILED KHAH;NFKC_CF=062E;NFKC_SCF=062E
unassigned;1EE58;bc=AL
-cp;1EE59;dm=0636;na=ARABIC MATHEMATICAL TAILED DAD;NFKC_CF=0636
+cp;1EE59;dm=0636;na=ARABIC MATHEMATICAL TAILED DAD;NFKC_CF=0636;NFKC_SCF=0636
unassigned;1EE5A;bc=AL
-cp;1EE5B;dm=063A;na=ARABIC MATHEMATICAL TAILED GHAIN;NFKC_CF=063A
+cp;1EE5B;dm=063A;na=ARABIC MATHEMATICAL TAILED GHAIN;NFKC_CF=063A;NFKC_SCF=063A
unassigned;1EE5C;bc=AL
-cp;1EE5D;dm=06BA;na=ARABIC MATHEMATICAL TAILED DOTLESS NOON;NFKC_CF=06BA
+cp;1EE5D;dm=06BA;na=ARABIC MATHEMATICAL TAILED DOTLESS NOON;NFKC_CF=06BA;NFKC_SCF=06BA
unassigned;1EE5E;bc=AL
-cp;1EE5F;dm=066F;na=ARABIC MATHEMATICAL TAILED DOTLESS QAF;NFKC_CF=066F
+cp;1EE5F;dm=066F;na=ARABIC MATHEMATICAL TAILED DOTLESS QAF;NFKC_CF=066F;NFKC_SCF=066F
unassigned;1EE60;bc=AL
# Stretched symbols
-cp;1EE61;dm=0628;na=ARABIC MATHEMATICAL STRETCHED BEH;NFKC_CF=0628
+cp;1EE61;dm=0628;na=ARABIC MATHEMATICAL STRETCHED BEH;NFKC_CF=0628;NFKC_SCF=0628
cp;1EE62;dm=062C;na=ARABIC MATHEMATICAL STRETCHED JEEM;NFKC_CF=062C
unassigned;1EE63;bc=AL
-cp;1EE64;dm=0647;na=ARABIC MATHEMATICAL STRETCHED HEH;NFKC_CF=0647
+cp;1EE64;dm=0647;na=ARABIC MATHEMATICAL STRETCHED HEH;NFKC_CF=0647;NFKC_SCF=0647
unassigned;1EE65..1EE66;bc=AL
-cp;1EE67;dm=062D;na=ARABIC MATHEMATICAL STRETCHED HAH;NFKC_CF=062D
-cp;1EE68;dm=0637;na=ARABIC MATHEMATICAL STRETCHED TAH;NFKC_CF=0637
-cp;1EE69;dm=064A;na=ARABIC MATHEMATICAL STRETCHED YEH;NFKC_CF=064A
-cp;1EE6A;dm=0643;na=ARABIC MATHEMATICAL STRETCHED KAF;NFKC_CF=0643
+cp;1EE67;dm=062D;na=ARABIC MATHEMATICAL STRETCHED HAH;NFKC_CF=062D;NFKC_SCF=062D
+cp;1EE68;dm=0637;na=ARABIC MATHEMATICAL STRETCHED TAH;NFKC_CF=0637;NFKC_SCF=0637
+cp;1EE69;dm=064A;na=ARABIC MATHEMATICAL STRETCHED YEH;NFKC_CF=064A;NFKC_SCF=064A
+cp;1EE6A;dm=0643;na=ARABIC MATHEMATICAL STRETCHED KAF;NFKC_CF=0643;NFKC_SCF=0643
unassigned;1EE6B;bc=AL
-cp;1EE6C;dm=0645;na=ARABIC MATHEMATICAL STRETCHED MEEM;NFKC_CF=0645
-cp;1EE6D;dm=0646;na=ARABIC MATHEMATICAL STRETCHED NOON;NFKC_CF=0646
-cp;1EE6E;dm=0633;na=ARABIC MATHEMATICAL STRETCHED SEEN;NFKC_CF=0633
-cp;1EE6F;dm=0639;na=ARABIC MATHEMATICAL STRETCHED AIN;NFKC_CF=0639
-cp;1EE70;dm=0641;na=ARABIC MATHEMATICAL STRETCHED FEH;NFKC_CF=0641
-cp;1EE71;dm=0635;na=ARABIC MATHEMATICAL STRETCHED SAD;NFKC_CF=0635
-cp;1EE72;dm=0642;na=ARABIC MATHEMATICAL STRETCHED QAF;NFKC_CF=0642
+cp;1EE6C;dm=0645;na=ARABIC MATHEMATICAL STRETCHED MEEM;NFKC_CF=0645;NFKC_SCF=0645
+cp;1EE6D;dm=0646;na=ARABIC MATHEMATICAL STRETCHED NOON;NFKC_CF=0646;NFKC_SCF=0646
+cp;1EE6E;dm=0633;na=ARABIC MATHEMATICAL STRETCHED SEEN;NFKC_CF=0633;NFKC_SCF=0633
+cp;1EE6F;dm=0639;na=ARABIC MATHEMATICAL STRETCHED AIN;NFKC_CF=0639;NFKC_SCF=0639
+cp;1EE70;dm=0641;na=ARABIC MATHEMATICAL STRETCHED FEH;NFKC_CF=0641;NFKC_SCF=0641
+cp;1EE71;dm=0635;na=ARABIC MATHEMATICAL STRETCHED SAD;NFKC_CF=0635;NFKC_SCF=0635
+cp;1EE72;dm=0642;na=ARABIC MATHEMATICAL STRETCHED QAF;NFKC_CF=0642;NFKC_SCF=0642
unassigned;1EE73;bc=AL
-cp;1EE74;dm=0634;na=ARABIC MATHEMATICAL STRETCHED SHEEN;NFKC_CF=0634
-cp;1EE75;dm=062A;na=ARABIC MATHEMATICAL STRETCHED TEH;NFKC_CF=062A
-cp;1EE76;dm=062B;na=ARABIC MATHEMATICAL STRETCHED THEH;NFKC_CF=062B
-cp;1EE77;dm=062E;na=ARABIC MATHEMATICAL STRETCHED KHAH;NFKC_CF=062E
+cp;1EE74;dm=0634;na=ARABIC MATHEMATICAL STRETCHED SHEEN;NFKC_CF=0634;NFKC_SCF=0634
+cp;1EE75;dm=062A;na=ARABIC MATHEMATICAL STRETCHED TEH;NFKC_CF=062A;NFKC_SCF=062A
+cp;1EE76;dm=062B;na=ARABIC MATHEMATICAL STRETCHED THEH;NFKC_CF=062B;NFKC_SCF=062B
+cp;1EE77;dm=062E;na=ARABIC MATHEMATICAL STRETCHED KHAH;NFKC_CF=062E;NFKC_SCF=062E
unassigned;1EE78;bc=AL
-cp;1EE79;dm=0636;na=ARABIC MATHEMATICAL STRETCHED DAD;NFKC_CF=0636
-cp;1EE7A;dm=0638;na=ARABIC MATHEMATICAL STRETCHED ZAH;NFKC_CF=0638
-cp;1EE7B;dm=063A;na=ARABIC MATHEMATICAL STRETCHED GHAIN;NFKC_CF=063A
-cp;1EE7C;dm=066E;na=ARABIC MATHEMATICAL STRETCHED DOTLESS BEH;NFKC_CF=066E
+cp;1EE79;dm=0636;na=ARABIC MATHEMATICAL STRETCHED DAD;NFKC_CF=0636;NFKC_SCF=0636
+cp;1EE7A;dm=0638;na=ARABIC MATHEMATICAL STRETCHED ZAH;NFKC_CF=0638;NFKC_SCF=0638
+cp;1EE7B;dm=063A;na=ARABIC MATHEMATICAL STRETCHED GHAIN;NFKC_CF=063A;NFKC_SCF=063A
+cp;1EE7C;dm=066E;na=ARABIC MATHEMATICAL STRETCHED DOTLESS BEH;NFKC_CF=066E;NFKC_SCF=066E
unassigned;1EE7D;bc=AL
-cp;1EE7E;dm=06A1;na=ARABIC MATHEMATICAL STRETCHED DOTLESS FEH;NFKC_CF=06A1
+cp;1EE7E;dm=06A1;na=ARABIC MATHEMATICAL STRETCHED DOTLESS FEH;NFKC_CF=06A1;NFKC_SCF=06A1
unassigned;1EE7F;bc=AL
# Looped symbols
-cp;1EE80;dm=0627;na=ARABIC MATHEMATICAL LOOPED ALEF;NFKC_CF=0627
-cp;1EE81;dm=0628;na=ARABIC MATHEMATICAL LOOPED BEH;NFKC_CF=0628
+cp;1EE80;dm=0627;na=ARABIC MATHEMATICAL LOOPED ALEF;NFKC_CF=0627;NFKC_SCF=0627
+cp;1EE81;dm=0628;na=ARABIC MATHEMATICAL LOOPED BEH;NFKC_CF=0628;NFKC_SCF=0628
cp;1EE82;dm=062C;na=ARABIC MATHEMATICAL LOOPED JEEM;NFKC_CF=062C
-cp;1EE83;dm=062F;na=ARABIC MATHEMATICAL LOOPED DAL;NFKC_CF=062F
-cp;1EE84;dm=0647;na=ARABIC MATHEMATICAL LOOPED HEH;NFKC_CF=0647
-cp;1EE85;dm=0648;na=ARABIC MATHEMATICAL LOOPED WAW;NFKC_CF=0648
-cp;1EE86;dm=0632;na=ARABIC MATHEMATICAL LOOPED ZAIN;NFKC_CF=0632
-cp;1EE87;dm=062D;na=ARABIC MATHEMATICAL LOOPED HAH;NFKC_CF=062D
-cp;1EE88;dm=0637;na=ARABIC MATHEMATICAL LOOPED TAH;NFKC_CF=0637
-cp;1EE89;dm=064A;na=ARABIC MATHEMATICAL LOOPED YEH;NFKC_CF=064A
+cp;1EE83;dm=062F;na=ARABIC MATHEMATICAL LOOPED DAL;NFKC_CF=062F;NFKC_SCF=062F
+cp;1EE84;dm=0647;na=ARABIC MATHEMATICAL LOOPED HEH;NFKC_CF=0647;NFKC_SCF=0647
+cp;1EE85;dm=0648;na=ARABIC MATHEMATICAL LOOPED WAW;NFKC_CF=0648;NFKC_SCF=0648
+cp;1EE86;dm=0632;na=ARABIC MATHEMATICAL LOOPED ZAIN;NFKC_CF=0632;NFKC_SCF=0632
+cp;1EE87;dm=062D;na=ARABIC MATHEMATICAL LOOPED HAH;NFKC_CF=062D;NFKC_SCF=062D
+cp;1EE88;dm=0637;na=ARABIC MATHEMATICAL LOOPED TAH;NFKC_CF=0637;NFKC_SCF=0637
+cp;1EE89;dm=064A;na=ARABIC MATHEMATICAL LOOPED YEH;NFKC_CF=064A;NFKC_SCF=064A
unassigned;1EE8A;bc=AL
-cp;1EE8B;dm=0644;na=ARABIC MATHEMATICAL LOOPED LAM;NFKC_CF=0644
-cp;1EE8C;dm=0645;na=ARABIC MATHEMATICAL LOOPED MEEM;NFKC_CF=0645
-cp;1EE8D;dm=0646;na=ARABIC MATHEMATICAL LOOPED NOON;NFKC_CF=0646
-cp;1EE8E;dm=0633;na=ARABIC MATHEMATICAL LOOPED SEEN;NFKC_CF=0633
-cp;1EE8F;dm=0639;na=ARABIC MATHEMATICAL LOOPED AIN;NFKC_CF=0639
-cp;1EE90;dm=0641;na=ARABIC MATHEMATICAL LOOPED FEH;NFKC_CF=0641
-cp;1EE91;dm=0635;na=ARABIC MATHEMATICAL LOOPED SAD;NFKC_CF=0635
-cp;1EE92;dm=0642;na=ARABIC MATHEMATICAL LOOPED QAF;NFKC_CF=0642
-cp;1EE93;dm=0631;na=ARABIC MATHEMATICAL LOOPED REH;NFKC_CF=0631
-cp;1EE94;dm=0634;na=ARABIC MATHEMATICAL LOOPED SHEEN;NFKC_CF=0634
-cp;1EE95;dm=062A;na=ARABIC MATHEMATICAL LOOPED TEH;NFKC_CF=062A
-cp;1EE96;dm=062B;na=ARABIC MATHEMATICAL LOOPED THEH;NFKC_CF=062B
-cp;1EE97;dm=062E;na=ARABIC MATHEMATICAL LOOPED KHAH;NFKC_CF=062E
-cp;1EE98;dm=0630;na=ARABIC MATHEMATICAL LOOPED THAL;NFKC_CF=0630
-cp;1EE99;dm=0636;na=ARABIC MATHEMATICAL LOOPED DAD;NFKC_CF=0636
-cp;1EE9A;dm=0638;na=ARABIC MATHEMATICAL LOOPED ZAH;NFKC_CF=0638
-cp;1EE9B;dm=063A;na=ARABIC MATHEMATICAL LOOPED GHAIN;NFKC_CF=063A
+cp;1EE8B;dm=0644;na=ARABIC MATHEMATICAL LOOPED LAM;NFKC_CF=0644;NFKC_SCF=0644
+cp;1EE8C;dm=0645;na=ARABIC MATHEMATICAL LOOPED MEEM;NFKC_CF=0645;NFKC_SCF=0645
+cp;1EE8D;dm=0646;na=ARABIC MATHEMATICAL LOOPED NOON;NFKC_CF=0646;NFKC_SCF=0646
+cp;1EE8E;dm=0633;na=ARABIC MATHEMATICAL LOOPED SEEN;NFKC_CF=0633;NFKC_SCF=0633
+cp;1EE8F;dm=0639;na=ARABIC MATHEMATICAL LOOPED AIN;NFKC_CF=0639;NFKC_SCF=0639
+cp;1EE90;dm=0641;na=ARABIC MATHEMATICAL LOOPED FEH;NFKC_CF=0641;NFKC_SCF=0641
+cp;1EE91;dm=0635;na=ARABIC MATHEMATICAL LOOPED SAD;NFKC_CF=0635;NFKC_SCF=0635
+cp;1EE92;dm=0642;na=ARABIC MATHEMATICAL LOOPED QAF;NFKC_CF=0642;NFKC_SCF=0642
+cp;1EE93;dm=0631;na=ARABIC MATHEMATICAL LOOPED REH;NFKC_CF=0631;NFKC_SCF=0631
+cp;1EE94;dm=0634;na=ARABIC MATHEMATICAL LOOPED SHEEN;NFKC_CF=0634;NFKC_SCF=0634
+cp;1EE95;dm=062A;na=ARABIC MATHEMATICAL LOOPED TEH;NFKC_CF=062A;NFKC_SCF=062A
+cp;1EE96;dm=062B;na=ARABIC MATHEMATICAL LOOPED THEH;NFKC_CF=062B;NFKC_SCF=062B
+cp;1EE97;dm=062E;na=ARABIC MATHEMATICAL LOOPED KHAH;NFKC_CF=062E;NFKC_SCF=062E
+cp;1EE98;dm=0630;na=ARABIC MATHEMATICAL LOOPED THAL;NFKC_CF=0630;NFKC_SCF=0630
+cp;1EE99;dm=0636;na=ARABIC MATHEMATICAL LOOPED DAD;NFKC_CF=0636;NFKC_SCF=0636
+cp;1EE9A;dm=0638;na=ARABIC MATHEMATICAL LOOPED ZAH;NFKC_CF=0638;NFKC_SCF=0638
+cp;1EE9B;dm=063A;na=ARABIC MATHEMATICAL LOOPED GHAIN;NFKC_CF=063A;NFKC_SCF=063A
unassigned;1EE9C..1EEA0;bc=AL
# Double-struck symbols
-cp;1EEA1;dm=0628;na=ARABIC MATHEMATICAL DOUBLE-STRUCK BEH;NFKC_CF=0628
+cp;1EEA1;dm=0628;na=ARABIC MATHEMATICAL DOUBLE-STRUCK BEH;NFKC_CF=0628;NFKC_SCF=0628
cp;1EEA2;dm=062C;na=ARABIC MATHEMATICAL DOUBLE-STRUCK JEEM;NFKC_CF=062C
-cp;1EEA3;dm=062F;na=ARABIC MATHEMATICAL DOUBLE-STRUCK DAL;NFKC_CF=062F
+cp;1EEA3;dm=062F;na=ARABIC MATHEMATICAL DOUBLE-STRUCK DAL;NFKC_CF=062F;NFKC_SCF=062F
unassigned;1EEA4;bc=AL
-cp;1EEA5;dm=0648;na=ARABIC MATHEMATICAL DOUBLE-STRUCK WAW;NFKC_CF=0648
-cp;1EEA6;dm=0632;na=ARABIC MATHEMATICAL DOUBLE-STRUCK ZAIN;NFKC_CF=0632
-cp;1EEA7;dm=062D;na=ARABIC MATHEMATICAL DOUBLE-STRUCK HAH;NFKC_CF=062D
-cp;1EEA8;dm=0637;na=ARABIC MATHEMATICAL DOUBLE-STRUCK TAH;NFKC_CF=0637
-cp;1EEA9;dm=064A;na=ARABIC MATHEMATICAL DOUBLE-STRUCK YEH;NFKC_CF=064A
+cp;1EEA5;dm=0648;na=ARABIC MATHEMATICAL DOUBLE-STRUCK WAW;NFKC_CF=0648;NFKC_SCF=0648
+cp;1EEA6;dm=0632;na=ARABIC MATHEMATICAL DOUBLE-STRUCK ZAIN;NFKC_CF=0632;NFKC_SCF=0632
+cp;1EEA7;dm=062D;na=ARABIC MATHEMATICAL DOUBLE-STRUCK HAH;NFKC_CF=062D;NFKC_SCF=062D
+cp;1EEA8;dm=0637;na=ARABIC MATHEMATICAL DOUBLE-STRUCK TAH;NFKC_CF=0637;NFKC_SCF=0637
+cp;1EEA9;dm=064A;na=ARABIC MATHEMATICAL DOUBLE-STRUCK YEH;NFKC_CF=064A;NFKC_SCF=064A
unassigned;1EEAA;bc=AL
-cp;1EEAB;dm=0644;na=ARABIC MATHEMATICAL DOUBLE-STRUCK LAM;NFKC_CF=0644
-cp;1EEAC;dm=0645;na=ARABIC MATHEMATICAL DOUBLE-STRUCK MEEM;NFKC_CF=0645
-cp;1EEAD;dm=0646;na=ARABIC MATHEMATICAL DOUBLE-STRUCK NOON;NFKC_CF=0646
-cp;1EEAE;dm=0633;na=ARABIC MATHEMATICAL DOUBLE-STRUCK SEEN;NFKC_CF=0633
-cp;1EEAF;dm=0639;na=ARABIC MATHEMATICAL DOUBLE-STRUCK AIN;NFKC_CF=0639
-cp;1EEB0;dm=0641;na=ARABIC MATHEMATICAL DOUBLE-STRUCK FEH;NFKC_CF=0641
-cp;1EEB1;dm=0635;na=ARABIC MATHEMATICAL DOUBLE-STRUCK SAD;NFKC_CF=0635
-cp;1EEB2;dm=0642;na=ARABIC MATHEMATICAL DOUBLE-STRUCK QAF;NFKC_CF=0642
-cp;1EEB3;dm=0631;na=ARABIC MATHEMATICAL DOUBLE-STRUCK REH;NFKC_CF=0631
-cp;1EEB4;dm=0634;na=ARABIC MATHEMATICAL DOUBLE-STRUCK SHEEN;NFKC_CF=0634
-cp;1EEB5;dm=062A;na=ARABIC MATHEMATICAL DOUBLE-STRUCK TEH;NFKC_CF=062A
-cp;1EEB6;dm=062B;na=ARABIC MATHEMATICAL DOUBLE-STRUCK THEH;NFKC_CF=062B
-cp;1EEB7;dm=062E;na=ARABIC MATHEMATICAL DOUBLE-STRUCK KHAH;NFKC_CF=062E
-cp;1EEB8;dm=0630;na=ARABIC MATHEMATICAL DOUBLE-STRUCK THAL;NFKC_CF=0630
-cp;1EEB9;dm=0636;na=ARABIC MATHEMATICAL DOUBLE-STRUCK DAD;NFKC_CF=0636
-cp;1EEBA;dm=0638;na=ARABIC MATHEMATICAL DOUBLE-STRUCK ZAH;NFKC_CF=0638
-cp;1EEBB;dm=063A;na=ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN;NFKC_CF=063A
+cp;1EEAB;dm=0644;na=ARABIC MATHEMATICAL DOUBLE-STRUCK LAM;NFKC_CF=0644;NFKC_SCF=0644
+cp;1EEAC;dm=0645;na=ARABIC MATHEMATICAL DOUBLE-STRUCK MEEM;NFKC_CF=0645;NFKC_SCF=0645
+cp;1EEAD;dm=0646;na=ARABIC MATHEMATICAL DOUBLE-STRUCK NOON;NFKC_CF=0646;NFKC_SCF=0646
+cp;1EEAE;dm=0633;na=ARABIC MATHEMATICAL DOUBLE-STRUCK SEEN;NFKC_CF=0633;NFKC_SCF=0633
+cp;1EEAF;dm=0639;na=ARABIC MATHEMATICAL DOUBLE-STRUCK AIN;NFKC_CF=0639;NFKC_SCF=0639
+cp;1EEB0;dm=0641;na=ARABIC MATHEMATICAL DOUBLE-STRUCK FEH;NFKC_CF=0641;NFKC_SCF=0641
+cp;1EEB1;dm=0635;na=ARABIC MATHEMATICAL DOUBLE-STRUCK SAD;NFKC_CF=0635;NFKC_SCF=0635
+cp;1EEB2;dm=0642;na=ARABIC MATHEMATICAL DOUBLE-STRUCK QAF;NFKC_CF=0642;NFKC_SCF=0642
+cp;1EEB3;dm=0631;na=ARABIC MATHEMATICAL DOUBLE-STRUCK REH;NFKC_CF=0631;NFKC_SCF=0631
+cp;1EEB4;dm=0634;na=ARABIC MATHEMATICAL DOUBLE-STRUCK SHEEN;NFKC_CF=0634;NFKC_SCF=0634
+cp;1EEB5;dm=062A;na=ARABIC MATHEMATICAL DOUBLE-STRUCK TEH;NFKC_CF=062A;NFKC_SCF=062A
+cp;1EEB6;dm=062B;na=ARABIC MATHEMATICAL DOUBLE-STRUCK THEH;NFKC_CF=062B;NFKC_SCF=062B
+cp;1EEB7;dm=062E;na=ARABIC MATHEMATICAL DOUBLE-STRUCK KHAH;NFKC_CF=062E;NFKC_SCF=062E
+cp;1EEB8;dm=0630;na=ARABIC MATHEMATICAL DOUBLE-STRUCK THAL;NFKC_CF=0630;NFKC_SCF=0630
+cp;1EEB9;dm=0636;na=ARABIC MATHEMATICAL DOUBLE-STRUCK DAD;NFKC_CF=0636;NFKC_SCF=0636
+cp;1EEBA;dm=0638;na=ARABIC MATHEMATICAL DOUBLE-STRUCK ZAH;NFKC_CF=0638;NFKC_SCF=0638
+cp;1EEBB;dm=063A;na=ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN;NFKC_CF=063A;NFKC_SCF=063A
unassigned;1EEBC..1EEEF;bc=AL
# Stretching operators
-cp;1EEF0;-Alpha;bc=ON;-CWKCF;dt=None;gc=Sm;-IDC;-IDS;na=ARABIC MATHEMATICAL OPERATOR MEEM WITH HAH WITH TATWEEL;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
-cp;1EEF1;-Alpha;bc=ON;-CWKCF;dt=None;gc=Sm;-IDC;-IDS;na=ARABIC MATHEMATICAL OPERATOR HAH WITH DAL;NFKC_QC=Y;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1EEF0;-Alpha;bc=ON;-CWKCF;dt=None;gc=Sm;-IDC;-IDS;na=ARABIC MATHEMATICAL OPERATOR MEEM WITH HAH WITH TATWEEL;NFKC_QC=Y;NFKC_SCF=<code point>;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
+cp;1EEF1;-Alpha;bc=ON;-CWKCF;dt=None;gc=Sm;-IDC;-IDS;na=ARABIC MATHEMATICAL OPERATOR HAH WITH DAL;NFKC_QC=Y;NFKC_SCF=<code point>;NFKD_QC=Y;SB=XX;WB=XX;-XIDC;-XIDS
unassigned;1EEF2..1EEFF;bc=AL
# No block
@@ -37680,18 +37712,18 @@ unassigned;1F0F6..1F0FF;ExtPict;lb=ID;vo=U
block;1F100..1F1FF;age=6.0;blk=Enclosed_Alphanum_Sup;ea=A;gc=So;Gr_Base;lb=AI;sc=Zyyy;vo=U
# 1F100..1F1FF Enclosed Alphanumeric Supplement
# Number with full stop
-cp;1F100;age=5.2;bc=EN;CWKCF;dm=0030 002E;dt=Com;gc=No;na=DIGIT ZERO FULL STOP;NFKC_CF=0030 002E;NFKC_QC=N;NFKD_QC=N;nt=Di;nv=0
+cp;1F100;age=5.2;bc=EN;CWKCF;dm=0030 002E;dt=Com;gc=No;na=DIGIT ZERO FULL STOP;NFKC_CF=0030 002E;NFKC_QC=N;NFKC_SCF=0030 002E;NFKD_QC=N;nt=Di;nv=0
# Numbers with comma
-cp;1F101;age=5.2;bc=EN;CWKCF;dm=0030 002C;dt=Com;gc=No;na=DIGIT ZERO COMMA;NFKC_CF=0030 002C;NFKC_QC=N;NFKD_QC=N;nt=Di;nv=0
-cp;1F102;age=5.2;bc=EN;CWKCF;dm=0031 002C;dt=Com;gc=No;na=DIGIT ONE COMMA;NFKC_CF=0031 002C;NFKC_QC=N;NFKD_QC=N;nt=Di;nv=1
-cp;1F103;age=5.2;bc=EN;CWKCF;dm=0032 002C;dt=Com;gc=No;na=DIGIT TWO COMMA;NFKC_CF=0032 002C;NFKC_QC=N;NFKD_QC=N;nt=Di;nv=2
-cp;1F104;age=5.2;bc=EN;CWKCF;dm=0033 002C;dt=Com;gc=No;na=DIGIT THREE COMMA;NFKC_CF=0033 002C;NFKC_QC=N;NFKD_QC=N;nt=Di;nv=3
-cp;1F105;age=5.2;bc=EN;CWKCF;dm=0034 002C;dt=Com;gc=No;na=DIGIT FOUR COMMA;NFKC_CF=0034 002C;NFKC_QC=N;NFKD_QC=N;nt=Di;nv=4
-cp;1F106;age=5.2;bc=EN;CWKCF;dm=0035 002C;dt=Com;gc=No;na=DIGIT FIVE COMMA;NFKC_CF=0035 002C;NFKC_QC=N;NFKD_QC=N;nt=Di;nv=5
-cp;1F107;age=5.2;bc=EN;CWKCF;dm=0036 002C;dt=Com;gc=No;na=DIGIT SIX COMMA;NFKC_CF=0036 002C;NFKC_QC=N;NFKD_QC=N;nt=Di;nv=6
-cp;1F108;age=5.2;bc=EN;CWKCF;dm=0037 002C;dt=Com;gc=No;na=DIGIT SEVEN COMMA;NFKC_CF=0037 002C;NFKC_QC=N;NFKD_QC=N;nt=Di;nv=7
-cp;1F109;age=5.2;bc=EN;CWKCF;dm=0038 002C;dt=Com;gc=No;na=DIGIT EIGHT COMMA;NFKC_CF=0038 002C;NFKC_QC=N;NFKD_QC=N;nt=Di;nv=8
-cp;1F10A;age=5.2;bc=EN;CWKCF;dm=0039 002C;dt=Com;gc=No;na=DIGIT NINE COMMA;NFKC_CF=0039 002C;NFKC_QC=N;NFKD_QC=N;nt=Di;nv=9
+cp;1F101;age=5.2;bc=EN;CWKCF;dm=0030 002C;dt=Com;gc=No;na=DIGIT ZERO COMMA;NFKC_CF=0030 002C;NFKC_QC=N;NFKC_SCF=0030 002C;NFKD_QC=N;nt=Di;nv=0
+cp;1F102;age=5.2;bc=EN;CWKCF;dm=0031 002C;dt=Com;gc=No;na=DIGIT ONE COMMA;NFKC_CF=0031 002C;NFKC_QC=N;NFKC_SCF=0031 002C;NFKD_QC=N;nt=Di;nv=1
+cp;1F103;age=5.2;bc=EN;CWKCF;dm=0032 002C;dt=Com;gc=No;na=DIGIT TWO COMMA;NFKC_CF=0032 002C;NFKC_QC=N;NFKC_SCF=0032 002C;NFKD_QC=N;nt=Di;nv=2
+cp;1F104;age=5.2;bc=EN;CWKCF;dm=0033 002C;dt=Com;gc=No;na=DIGIT THREE COMMA;NFKC_CF=0033 002C;NFKC_QC=N;NFKC_SCF=0033 002C;NFKD_QC=N;nt=Di;nv=3
+cp;1F105;age=5.2;bc=EN;CWKCF;dm=0034 002C;dt=Com;gc=No;na=DIGIT FOUR COMMA;NFKC_CF=0034 002C;NFKC_QC=N;NFKC_SCF=0034 002C;NFKD_QC=N;nt=Di;nv=4
+cp;1F106;age=5.2;bc=EN;CWKCF;dm=0035 002C;dt=Com;gc=No;na=DIGIT FIVE COMMA;NFKC_CF=0035 002C;NFKC_QC=N;NFKC_SCF=0035 002C;NFKD_QC=N;nt=Di;nv=5
+cp;1F107;age=5.2;bc=EN;CWKCF;dm=0036 002C;dt=Com;gc=No;na=DIGIT SIX COMMA;NFKC_CF=0036 002C;NFKC_QC=N;NFKC_SCF=0036 002C;NFKD_QC=N;nt=Di;nv=6
+cp;1F108;age=5.2;bc=EN;CWKCF;dm=0037 002C;dt=Com;gc=No;na=DIGIT SEVEN COMMA;NFKC_CF=0037 002C;NFKC_QC=N;NFKC_SCF=0037 002C;NFKD_QC=N;nt=Di;nv=7
+cp;1F109;age=5.2;bc=EN;CWKCF;dm=0038 002C;dt=Com;gc=No;na=DIGIT EIGHT COMMA;NFKC_CF=0038 002C;NFKC_QC=N;NFKC_SCF=0038 002C;NFKD_QC=N;nt=Di;nv=8
+cp;1F10A;age=5.2;bc=EN;CWKCF;dm=0039 002C;dt=Com;gc=No;na=DIGIT NINE COMMA;NFKC_CF=0039 002C;NFKC_QC=N;NFKC_SCF=0039 002C;NFKD_QC=N;nt=Di;nv=9
# Circled sans-serif digits
cp;1F10B;age=7.0;bc=ON;ea=N;gc=No;na=DINGBAT CIRCLED SANS-SERIF DIGIT ZERO;nt=Nu;nv=0
cp;1F10C;age=7.0;bc=ON;ea=N;gc=No;na=DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ZERO;nt=Nu;nv=0
@@ -37700,74 +37732,74 @@ cp;1F10D;age=13.0;bc=ON;ea=N;ExtPict;lb=ID;na=CIRCLED ZERO WITH SLASH
cp;1F10E;age=13.0;bc=ON;ea=N;ExtPict;lb=ID;na=CIRCLED ANTICLOCKWISE ARROW
cp;1F10F;age=13.0;bc=ON;ea=N;ExtPict;lb=ID;na=CIRCLED DOLLAR SIGN WITH OVERLAID BACKSLASH
# Parenthesized Latin letters
-cp;1F110;age=5.2;CWKCF;dm=0028 0041 0029;dt=Com;FC_NFKC=0028 0061 0029;na=PARENTHESIZED LATIN CAPITAL LETTER A;NFKC_CF=0028 0061 0029;NFKC_QC=N;NFKD_QC=N
-cp;1F111;age=5.2;CWKCF;dm=0028 0042 0029;dt=Com;FC_NFKC=0028 0062 0029;na=PARENTHESIZED LATIN CAPITAL LETTER B;NFKC_CF=0028 0062 0029;NFKC_QC=N;NFKD_QC=N
-cp;1F112;age=5.2;CWKCF;dm=0028 0043 0029;dt=Com;FC_NFKC=0028 0063 0029;na=PARENTHESIZED LATIN CAPITAL LETTER C;NFKC_CF=0028 0063 0029;NFKC_QC=N;NFKD_QC=N
-cp;1F113;age=5.2;CWKCF;dm=0028 0044 0029;dt=Com;FC_NFKC=0028 0064 0029;na=PARENTHESIZED LATIN CAPITAL LETTER D;NFKC_CF=0028 0064 0029;NFKC_QC=N;NFKD_QC=N
-cp;1F114;age=5.2;CWKCF;dm=0028 0045 0029;dt=Com;FC_NFKC=0028 0065 0029;na=PARENTHESIZED LATIN CAPITAL LETTER E;NFKC_CF=0028 0065 0029;NFKC_QC=N;NFKD_QC=N
-cp;1F115;age=5.2;CWKCF;dm=0028 0046 0029;dt=Com;FC_NFKC=0028 0066 0029;na=PARENTHESIZED LATIN CAPITAL LETTER F;NFKC_CF=0028 0066 0029;NFKC_QC=N;NFKD_QC=N
-cp;1F116;age=5.2;CWKCF;dm=0028 0047 0029;dt=Com;FC_NFKC=0028 0067 0029;na=PARENTHESIZED LATIN CAPITAL LETTER G;NFKC_CF=0028 0067 0029;NFKC_QC=N;NFKD_QC=N
-cp;1F117;age=5.2;CWKCF;dm=0028 0048 0029;dt=Com;FC_NFKC=0028 0068 0029;na=PARENTHESIZED LATIN CAPITAL LETTER H;NFKC_CF=0028 0068 0029;NFKC_QC=N;NFKD_QC=N
-cp;1F118;age=5.2;CWKCF;dm=0028 0049 0029;dt=Com;FC_NFKC=0028 0069 0029;na=PARENTHESIZED LATIN CAPITAL LETTER I;NFKC_CF=0028 0069 0029;NFKC_QC=N;NFKD_QC=N
-cp;1F119;age=5.2;CWKCF;dm=0028 004A 0029;dt=Com;FC_NFKC=0028 006A 0029;na=PARENTHESIZED LATIN CAPITAL LETTER J;NFKC_CF=0028 006A 0029;NFKC_QC=N;NFKD_QC=N
-cp;1F11A;age=5.2;CWKCF;dm=0028 004B 0029;dt=Com;FC_NFKC=0028 006B 0029;na=PARENTHESIZED LATIN CAPITAL LETTER K;NFKC_CF=0028 006B 0029;NFKC_QC=N;NFKD_QC=N
-cp;1F11B;age=5.2;CWKCF;dm=0028 004C 0029;dt=Com;FC_NFKC=0028 006C 0029;na=PARENTHESIZED LATIN CAPITAL LETTER L;NFKC_CF=0028 006C 0029;NFKC_QC=N;NFKD_QC=N
-cp;1F11C;age=5.2;CWKCF;dm=0028 004D 0029;dt=Com;FC_NFKC=0028 006D 0029;na=PARENTHESIZED LATIN CAPITAL LETTER M;NFKC_CF=0028 006D 0029;NFKC_QC=N;NFKD_QC=N
-cp;1F11D;age=5.2;CWKCF;dm=0028 004E 0029;dt=Com;FC_NFKC=0028 006E 0029;na=PARENTHESIZED LATIN CAPITAL LETTER N;NFKC_CF=0028 006E 0029;NFKC_QC=N;NFKD_QC=N
-cp;1F11E;age=5.2;CWKCF;dm=0028 004F 0029;dt=Com;FC_NFKC=0028 006F 0029;na=PARENTHESIZED LATIN CAPITAL LETTER O;NFKC_CF=0028 006F 0029;NFKC_QC=N;NFKD_QC=N
-cp;1F11F;age=5.2;CWKCF;dm=0028 0050 0029;dt=Com;FC_NFKC=0028 0070 0029;na=PARENTHESIZED LATIN CAPITAL LETTER P;NFKC_CF=0028 0070 0029;NFKC_QC=N;NFKD_QC=N
-cp;1F120;age=5.2;CWKCF;dm=0028 0051 0029;dt=Com;FC_NFKC=0028 0071 0029;na=PARENTHESIZED LATIN CAPITAL LETTER Q;NFKC_CF=0028 0071 0029;NFKC_QC=N;NFKD_QC=N
-cp;1F121;age=5.2;CWKCF;dm=0028 0052 0029;dt=Com;FC_NFKC=0028 0072 0029;na=PARENTHESIZED LATIN CAPITAL LETTER R;NFKC_CF=0028 0072 0029;NFKC_QC=N;NFKD_QC=N
-cp;1F122;age=5.2;CWKCF;dm=0028 0053 0029;dt=Com;FC_NFKC=0028 0073 0029;na=PARENTHESIZED LATIN CAPITAL LETTER S;NFKC_CF=0028 0073 0029;NFKC_QC=N;NFKD_QC=N
-cp;1F123;age=5.2;CWKCF;dm=0028 0054 0029;dt=Com;FC_NFKC=0028 0074 0029;na=PARENTHESIZED LATIN CAPITAL LETTER T;NFKC_CF=0028 0074 0029;NFKC_QC=N;NFKD_QC=N
-cp;1F124;age=5.2;CWKCF;dm=0028 0055 0029;dt=Com;FC_NFKC=0028 0075 0029;na=PARENTHESIZED LATIN CAPITAL LETTER U;NFKC_CF=0028 0075 0029;NFKC_QC=N;NFKD_QC=N
-cp;1F125;age=5.2;CWKCF;dm=0028 0056 0029;dt=Com;FC_NFKC=0028 0076 0029;na=PARENTHESIZED LATIN CAPITAL LETTER V;NFKC_CF=0028 0076 0029;NFKC_QC=N;NFKD_QC=N
-cp;1F126;age=5.2;CWKCF;dm=0028 0057 0029;dt=Com;FC_NFKC=0028 0077 0029;na=PARENTHESIZED LATIN CAPITAL LETTER W;NFKC_CF=0028 0077 0029;NFKC_QC=N;NFKD_QC=N
-cp;1F127;age=5.2;CWKCF;dm=0028 0058 0029;dt=Com;FC_NFKC=0028 0078 0029;na=PARENTHESIZED LATIN CAPITAL LETTER X;NFKC_CF=0028 0078 0029;NFKC_QC=N;NFKD_QC=N
-cp;1F128;age=5.2;CWKCF;dm=0028 0059 0029;dt=Com;FC_NFKC=0028 0079 0029;na=PARENTHESIZED LATIN CAPITAL LETTER Y;NFKC_CF=0028 0079 0029;NFKC_QC=N;NFKD_QC=N
-cp;1F129;age=5.2;CWKCF;dm=0028 005A 0029;dt=Com;FC_NFKC=0028 007A 0029;na=PARENTHESIZED LATIN CAPITAL LETTER Z;NFKC_CF=0028 007A 0029;NFKC_QC=N;NFKD_QC=N
+cp;1F110;age=5.2;CWKCF;dm=0028 0041 0029;dt=Com;FC_NFKC=0028 0061 0029;na=PARENTHESIZED LATIN CAPITAL LETTER A;NFKC_CF=0028 0061 0029;NFKC_QC=N;NFKC_SCF=0028 0061 0029;NFKD_QC=N
+cp;1F111;age=5.2;CWKCF;dm=0028 0042 0029;dt=Com;FC_NFKC=0028 0062 0029;na=PARENTHESIZED LATIN CAPITAL LETTER B;NFKC_CF=0028 0062 0029;NFKC_QC=N;NFKC_SCF=0028 0062 0029;NFKD_QC=N
+cp;1F112;age=5.2;CWKCF;dm=0028 0043 0029;dt=Com;FC_NFKC=0028 0063 0029;na=PARENTHESIZED LATIN CAPITAL LETTER C;NFKC_CF=0028 0063 0029;NFKC_QC=N;NFKC_SCF=0028 0063 0029;NFKD_QC=N
+cp;1F113;age=5.2;CWKCF;dm=0028 0044 0029;dt=Com;FC_NFKC=0028 0064 0029;na=PARENTHESIZED LATIN CAPITAL LETTER D;NFKC_CF=0028 0064 0029;NFKC_QC=N;NFKC_SCF=0028 0064 0029;NFKD_QC=N
+cp;1F114;age=5.2;CWKCF;dm=0028 0045 0029;dt=Com;FC_NFKC=0028 0065 0029;na=PARENTHESIZED LATIN CAPITAL LETTER E;NFKC_CF=0028 0065 0029;NFKC_QC=N;NFKC_SCF=0028 0065 0029;NFKD_QC=N
+cp;1F115;age=5.2;CWKCF;dm=0028 0046 0029;dt=Com;FC_NFKC=0028 0066 0029;na=PARENTHESIZED LATIN CAPITAL LETTER F;NFKC_CF=0028 0066 0029;NFKC_QC=N;NFKC_SCF=0028 0066 0029;NFKD_QC=N
+cp;1F116;age=5.2;CWKCF;dm=0028 0047 0029;dt=Com;FC_NFKC=0028 0067 0029;na=PARENTHESIZED LATIN CAPITAL LETTER G;NFKC_CF=0028 0067 0029;NFKC_QC=N;NFKC_SCF=0028 0067 0029;NFKD_QC=N
+cp;1F117;age=5.2;CWKCF;dm=0028 0048 0029;dt=Com;FC_NFKC=0028 0068 0029;na=PARENTHESIZED LATIN CAPITAL LETTER H;NFKC_CF=0028 0068 0029;NFKC_QC=N;NFKC_SCF=0028 0068 0029;NFKD_QC=N
+cp;1F118;age=5.2;CWKCF;dm=0028 0049 0029;dt=Com;FC_NFKC=0028 0069 0029;na=PARENTHESIZED LATIN CAPITAL LETTER I;NFKC_CF=0028 0069 0029;NFKC_QC=N;NFKC_SCF=0028 0069 0029;NFKD_QC=N
+cp;1F119;age=5.2;CWKCF;dm=0028 004A 0029;dt=Com;FC_NFKC=0028 006A 0029;na=PARENTHESIZED LATIN CAPITAL LETTER J;NFKC_CF=0028 006A 0029;NFKC_QC=N;NFKC_SCF=0028 006A 0029;NFKD_QC=N
+cp;1F11A;age=5.2;CWKCF;dm=0028 004B 0029;dt=Com;FC_NFKC=0028 006B 0029;na=PARENTHESIZED LATIN CAPITAL LETTER K;NFKC_CF=0028 006B 0029;NFKC_QC=N;NFKC_SCF=0028 006B 0029;NFKD_QC=N
+cp;1F11B;age=5.2;CWKCF;dm=0028 004C 0029;dt=Com;FC_NFKC=0028 006C 0029;na=PARENTHESIZED LATIN CAPITAL LETTER L;NFKC_CF=0028 006C 0029;NFKC_QC=N;NFKC_SCF=0028 006C 0029;NFKD_QC=N
+cp;1F11C;age=5.2;CWKCF;dm=0028 004D 0029;dt=Com;FC_NFKC=0028 006D 0029;na=PARENTHESIZED LATIN CAPITAL LETTER M;NFKC_CF=0028 006D 0029;NFKC_QC=N;NFKC_SCF=0028 006D 0029;NFKD_QC=N
+cp;1F11D;age=5.2;CWKCF;dm=0028 004E 0029;dt=Com;FC_NFKC=0028 006E 0029;na=PARENTHESIZED LATIN CAPITAL LETTER N;NFKC_CF=0028 006E 0029;NFKC_QC=N;NFKC_SCF=0028 006E 0029;NFKD_QC=N
+cp;1F11E;age=5.2;CWKCF;dm=0028 004F 0029;dt=Com;FC_NFKC=0028 006F 0029;na=PARENTHESIZED LATIN CAPITAL LETTER O;NFKC_CF=0028 006F 0029;NFKC_QC=N;NFKC_SCF=0028 006F 0029;NFKD_QC=N
+cp;1F11F;age=5.2;CWKCF;dm=0028 0050 0029;dt=Com;FC_NFKC=0028 0070 0029;na=PARENTHESIZED LATIN CAPITAL LETTER P;NFKC_CF=0028 0070 0029;NFKC_QC=N;NFKC_SCF=0028 0070 0029;NFKD_QC=N
+cp;1F120;age=5.2;CWKCF;dm=0028 0051 0029;dt=Com;FC_NFKC=0028 0071 0029;na=PARENTHESIZED LATIN CAPITAL LETTER Q;NFKC_CF=0028 0071 0029;NFKC_QC=N;NFKC_SCF=0028 0071 0029;NFKD_QC=N
+cp;1F121;age=5.2;CWKCF;dm=0028 0052 0029;dt=Com;FC_NFKC=0028 0072 0029;na=PARENTHESIZED LATIN CAPITAL LETTER R;NFKC_CF=0028 0072 0029;NFKC_QC=N;NFKC_SCF=0028 0072 0029;NFKD_QC=N
+cp;1F122;age=5.2;CWKCF;dm=0028 0053 0029;dt=Com;FC_NFKC=0028 0073 0029;na=PARENTHESIZED LATIN CAPITAL LETTER S;NFKC_CF=0028 0073 0029;NFKC_QC=N;NFKC_SCF=0028 0073 0029;NFKD_QC=N
+cp;1F123;age=5.2;CWKCF;dm=0028 0054 0029;dt=Com;FC_NFKC=0028 0074 0029;na=PARENTHESIZED LATIN CAPITAL LETTER T;NFKC_CF=0028 0074 0029;NFKC_QC=N;NFKC_SCF=0028 0074 0029;NFKD_QC=N
+cp;1F124;age=5.2;CWKCF;dm=0028 0055 0029;dt=Com;FC_NFKC=0028 0075 0029;na=PARENTHESIZED LATIN CAPITAL LETTER U;NFKC_CF=0028 0075 0029;NFKC_QC=N;NFKC_SCF=0028 0075 0029;NFKD_QC=N
+cp;1F125;age=5.2;CWKCF;dm=0028 0056 0029;dt=Com;FC_NFKC=0028 0076 0029;na=PARENTHESIZED LATIN CAPITAL LETTER V;NFKC_CF=0028 0076 0029;NFKC_QC=N;NFKC_SCF=0028 0076 0029;NFKD_QC=N
+cp;1F126;age=5.2;CWKCF;dm=0028 0057 0029;dt=Com;FC_NFKC=0028 0077 0029;na=PARENTHESIZED LATIN CAPITAL LETTER W;NFKC_CF=0028 0077 0029;NFKC_QC=N;NFKC_SCF=0028 0077 0029;NFKD_QC=N
+cp;1F127;age=5.2;CWKCF;dm=0028 0058 0029;dt=Com;FC_NFKC=0028 0078 0029;na=PARENTHESIZED LATIN CAPITAL LETTER X;NFKC_CF=0028 0078 0029;NFKC_QC=N;NFKC_SCF=0028 0078 0029;NFKD_QC=N
+cp;1F128;age=5.2;CWKCF;dm=0028 0059 0029;dt=Com;FC_NFKC=0028 0079 0029;na=PARENTHESIZED LATIN CAPITAL LETTER Y;NFKC_CF=0028 0079 0029;NFKC_QC=N;NFKC_SCF=0028 0079 0029;NFKD_QC=N
+cp;1F129;age=5.2;CWKCF;dm=0028 005A 0029;dt=Com;FC_NFKC=0028 007A 0029;na=PARENTHESIZED LATIN CAPITAL LETTER Z;NFKC_CF=0028 007A 0029;NFKC_QC=N;NFKC_SCF=0028 007A 0029;NFKD_QC=N
# Latin letter with tortoise shell brackets
-cp;1F12A;age=5.2;CWKCF;dm=3014 0053 3015;dt=Com;FC_NFKC=3014 0073 3015;na=TORTOISE SHELL BRACKETED LATIN CAPITAL LETTER S;NFKC_CF=3014 0073 3015;NFKC_QC=N;NFKD_QC=N
+cp;1F12A;age=5.2;CWKCF;dm=3014 0053 3015;dt=Com;FC_NFKC=3014 0073 3015;na=TORTOISE SHELL BRACKETED LATIN CAPITAL LETTER S;NFKC_CF=3014 0073 3015;NFKC_QC=N;NFKC_SCF=3014 0073 3015;NFKD_QC=N
# Circled italic Latin letters
-cp;1F12B;age=5.2;CWKCF;dm=0043;dt=Enc;FC_NFKC=0063;na=CIRCLED ITALIC LATIN CAPITAL LETTER C;NFKC_CF=0063;NFKC_QC=N;NFKD_QC=N
-cp;1F12C;age=5.2;CWKCF;dm=0052;dt=Enc;FC_NFKC=0072;na=CIRCLED ITALIC LATIN CAPITAL LETTER R;NFKC_CF=0072;NFKC_QC=N;NFKD_QC=N
+cp;1F12B;age=5.2;CWKCF;dm=0043;dt=Enc;FC_NFKC=0063;na=CIRCLED ITALIC LATIN CAPITAL LETTER C;NFKC_CF=0063;NFKC_QC=N;NFKC_SCF=0063;NFKD_QC=N
+cp;1F12C;age=5.2;CWKCF;dm=0052;dt=Enc;FC_NFKC=0072;na=CIRCLED ITALIC LATIN CAPITAL LETTER R;NFKC_CF=0072;NFKC_QC=N;NFKC_SCF=0072;NFKD_QC=N
# Circled Latin letters or letter sequences
-cp;1F12D;age=5.2;CWKCF;dm=0043 0044;dt=Enc;FC_NFKC=0063 0064;na=CIRCLED CD;NFKC_CF=0063 0064;NFKC_QC=N;NFKD_QC=N
-cp;1F12E;age=5.2;CWKCF;dm=0057 005A;dt=Enc;ea=N;FC_NFKC=0077 007A;lb=AL;na=CIRCLED WZ;NFKC_CF=0077 007A;NFKC_QC=N;NFKD_QC=N
+cp;1F12D;age=5.2;CWKCF;dm=0043 0044;dt=Enc;FC_NFKC=0063 0064;na=CIRCLED CD;NFKC_CF=0063 0064;NFKC_QC=N;NFKC_SCF=0063 0064;NFKD_QC=N
+cp;1F12E;age=5.2;CWKCF;dm=0057 005A;dt=Enc;ea=N;FC_NFKC=0077 007A;lb=AL;na=CIRCLED WZ;NFKC_CF=0077 007A;NFKC_QC=N;NFKC_SCF=0077 007A;NFKD_QC=N
cp;1F12F;age=11.0;bc=ON;ea=N;ExtPict;lb=AL;na=COPYLEFT SYMBOL
# Squared Latin letters
-cp;1F130;Alpha;Cased;CWKCF;dm=0041;dt=Sqr;FC_NFKC=0061;na=SQUARED LATIN CAPITAL LETTER A;NFKC_CF=0061;NFKC_QC=N;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F131;age=5.2;Alpha;Cased;CWKCF;dm=0042;dt=Sqr;FC_NFKC=0062;na=SQUARED LATIN CAPITAL LETTER B;NFKC_CF=0062;NFKC_QC=N;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F132;Alpha;Cased;CWKCF;dm=0043;dt=Sqr;FC_NFKC=0063;na=SQUARED LATIN CAPITAL LETTER C;NFKC_CF=0063;NFKC_QC=N;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F133;Alpha;Cased;CWKCF;dm=0044;dt=Sqr;FC_NFKC=0064;na=SQUARED LATIN CAPITAL LETTER D;NFKC_CF=0064;NFKC_QC=N;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F134;Alpha;Cased;CWKCF;dm=0045;dt=Sqr;FC_NFKC=0065;na=SQUARED LATIN CAPITAL LETTER E;NFKC_CF=0065;NFKC_QC=N;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F135;Alpha;Cased;CWKCF;dm=0046;dt=Sqr;FC_NFKC=0066;na=SQUARED LATIN CAPITAL LETTER F;NFKC_CF=0066;NFKC_QC=N;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F136;Alpha;Cased;CWKCF;dm=0047;dt=Sqr;FC_NFKC=0067;na=SQUARED LATIN CAPITAL LETTER G;NFKC_CF=0067;NFKC_QC=N;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F137;Alpha;Cased;CWKCF;dm=0048;dt=Sqr;FC_NFKC=0068;na=SQUARED LATIN CAPITAL LETTER H;NFKC_CF=0068;NFKC_QC=N;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F138;Alpha;Cased;CWKCF;dm=0049;dt=Sqr;FC_NFKC=0069;na=SQUARED LATIN CAPITAL LETTER I;NFKC_CF=0069;NFKC_QC=N;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F139;Alpha;Cased;CWKCF;dm=004A;dt=Sqr;FC_NFKC=006A;na=SQUARED LATIN CAPITAL LETTER J;NFKC_CF=006A;NFKC_QC=N;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F13A;Alpha;Cased;CWKCF;dm=004B;dt=Sqr;FC_NFKC=006B;na=SQUARED LATIN CAPITAL LETTER K;NFKC_CF=006B;NFKC_QC=N;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F13B;Alpha;Cased;CWKCF;dm=004C;dt=Sqr;FC_NFKC=006C;na=SQUARED LATIN CAPITAL LETTER L;NFKC_CF=006C;NFKC_QC=N;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F13C;Alpha;Cased;CWKCF;dm=004D;dt=Sqr;FC_NFKC=006D;na=SQUARED LATIN CAPITAL LETTER M;NFKC_CF=006D;NFKC_QC=N;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F13D;age=5.2;Alpha;Cased;CWKCF;dm=004E;dt=Sqr;FC_NFKC=006E;na=SQUARED LATIN CAPITAL LETTER N;NFKC_CF=006E;NFKC_QC=N;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F13E;Alpha;Cased;CWKCF;dm=004F;dt=Sqr;FC_NFKC=006F;na=SQUARED LATIN CAPITAL LETTER O;NFKC_CF=006F;NFKC_QC=N;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F13F;age=5.2;Alpha;Cased;CWKCF;dm=0050;dt=Sqr;FC_NFKC=0070;na=SQUARED LATIN CAPITAL LETTER P;NFKC_CF=0070;NFKC_QC=N;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F140;Alpha;Cased;CWKCF;dm=0051;dt=Sqr;FC_NFKC=0071;na=SQUARED LATIN CAPITAL LETTER Q;NFKC_CF=0071;NFKC_QC=N;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F141;Alpha;Cased;CWKCF;dm=0052;dt=Sqr;FC_NFKC=0072;na=SQUARED LATIN CAPITAL LETTER R;NFKC_CF=0072;NFKC_QC=N;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F142;age=5.2;Alpha;Cased;CWKCF;dm=0053;dt=Sqr;FC_NFKC=0073;na=SQUARED LATIN CAPITAL LETTER S;NFKC_CF=0073;NFKC_QC=N;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F143;Alpha;Cased;CWKCF;dm=0054;dt=Sqr;FC_NFKC=0074;na=SQUARED LATIN CAPITAL LETTER T;NFKC_CF=0074;NFKC_QC=N;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F144;Alpha;Cased;CWKCF;dm=0055;dt=Sqr;FC_NFKC=0075;na=SQUARED LATIN CAPITAL LETTER U;NFKC_CF=0075;NFKC_QC=N;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F145;Alpha;Cased;CWKCF;dm=0056;dt=Sqr;FC_NFKC=0076;na=SQUARED LATIN CAPITAL LETTER V;NFKC_CF=0076;NFKC_QC=N;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F146;age=5.2;Alpha;Cased;CWKCF;dm=0057;dt=Sqr;FC_NFKC=0077;na=SQUARED LATIN CAPITAL LETTER W;NFKC_CF=0077;NFKC_QC=N;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F147;Alpha;Cased;CWKCF;dm=0058;dt=Sqr;FC_NFKC=0078;na=SQUARED LATIN CAPITAL LETTER X;NFKC_CF=0078;NFKC_QC=N;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F148;Alpha;Cased;CWKCF;dm=0059;dt=Sqr;FC_NFKC=0079;na=SQUARED LATIN CAPITAL LETTER Y;NFKC_CF=0079;NFKC_QC=N;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F149;Alpha;Cased;CWKCF;dm=005A;dt=Sqr;FC_NFKC=007A;na=SQUARED LATIN CAPITAL LETTER Z;NFKC_CF=007A;NFKC_QC=N;NFKD_QC=N;SB=UP;Upper;WB=LE
-cp;1F14A;age=5.2;CWKCF;dm=0048 0056;dt=Sqr;FC_NFKC=0068 0076;na=SQUARED HV;NFKC_CF=0068 0076;NFKC_QC=N;NFKD_QC=N
-cp;1F14B;age=5.2;CWKCF;dm=004D 0056;dt=Sqr;FC_NFKC=006D 0076;na=SQUARED MV;NFKC_CF=006D 0076;NFKC_QC=N;NFKD_QC=N
-cp;1F14C;age=5.2;CWKCF;dm=0053 0044;dt=Sqr;FC_NFKC=0073 0064;na=SQUARED SD;NFKC_CF=0073 0064;NFKC_QC=N;NFKD_QC=N
-cp;1F14D;age=5.2;CWKCF;dm=0053 0053;dt=Sqr;FC_NFKC=0073 0073;na=SQUARED SS;NFKC_CF=0073 0073;NFKC_QC=N;NFKD_QC=N
-cp;1F14E;age=5.2;CWKCF;dm=0050 0050 0056;dt=Sqr;FC_NFKC=0070 0070 0076;na=SQUARED PPV;NFKC_CF=0070 0070 0076;NFKC_QC=N;NFKD_QC=N
-cp;1F14F;CWKCF;dm=0057 0043;dt=Sqr;FC_NFKC=0077 0063;na=SQUARED WC;NFKC_CF=0077 0063;NFKC_QC=N;NFKD_QC=N
+cp;1F130;Alpha;Cased;CWKCF;dm=0041;dt=Sqr;FC_NFKC=0061;na=SQUARED LATIN CAPITAL LETTER A;NFKC_CF=0061;NFKC_QC=N;NFKC_SCF=0061;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F131;age=5.2;Alpha;Cased;CWKCF;dm=0042;dt=Sqr;FC_NFKC=0062;na=SQUARED LATIN CAPITAL LETTER B;NFKC_CF=0062;NFKC_QC=N;NFKC_SCF=0062;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F132;Alpha;Cased;CWKCF;dm=0043;dt=Sqr;FC_NFKC=0063;na=SQUARED LATIN CAPITAL LETTER C;NFKC_CF=0063;NFKC_QC=N;NFKC_SCF=0063;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F133;Alpha;Cased;CWKCF;dm=0044;dt=Sqr;FC_NFKC=0064;na=SQUARED LATIN CAPITAL LETTER D;NFKC_CF=0064;NFKC_QC=N;NFKC_SCF=0064;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F134;Alpha;Cased;CWKCF;dm=0045;dt=Sqr;FC_NFKC=0065;na=SQUARED LATIN CAPITAL LETTER E;NFKC_CF=0065;NFKC_QC=N;NFKC_SCF=0065;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F135;Alpha;Cased;CWKCF;dm=0046;dt=Sqr;FC_NFKC=0066;na=SQUARED LATIN CAPITAL LETTER F;NFKC_CF=0066;NFKC_QC=N;NFKC_SCF=0066;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F136;Alpha;Cased;CWKCF;dm=0047;dt=Sqr;FC_NFKC=0067;na=SQUARED LATIN CAPITAL LETTER G;NFKC_CF=0067;NFKC_QC=N;NFKC_SCF=0067;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F137;Alpha;Cased;CWKCF;dm=0048;dt=Sqr;FC_NFKC=0068;na=SQUARED LATIN CAPITAL LETTER H;NFKC_CF=0068;NFKC_QC=N;NFKC_SCF=0068;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F138;Alpha;Cased;CWKCF;dm=0049;dt=Sqr;FC_NFKC=0069;na=SQUARED LATIN CAPITAL LETTER I;NFKC_CF=0069;NFKC_QC=N;NFKC_SCF=0069;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F139;Alpha;Cased;CWKCF;dm=004A;dt=Sqr;FC_NFKC=006A;na=SQUARED LATIN CAPITAL LETTER J;NFKC_CF=006A;NFKC_QC=N;NFKC_SCF=006A;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F13A;Alpha;Cased;CWKCF;dm=004B;dt=Sqr;FC_NFKC=006B;na=SQUARED LATIN CAPITAL LETTER K;NFKC_CF=006B;NFKC_QC=N;NFKC_SCF=006B;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F13B;Alpha;Cased;CWKCF;dm=004C;dt=Sqr;FC_NFKC=006C;na=SQUARED LATIN CAPITAL LETTER L;NFKC_CF=006C;NFKC_QC=N;NFKC_SCF=006C;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F13C;Alpha;Cased;CWKCF;dm=004D;dt=Sqr;FC_NFKC=006D;na=SQUARED LATIN CAPITAL LETTER M;NFKC_CF=006D;NFKC_QC=N;NFKC_SCF=006D;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F13D;age=5.2;Alpha;Cased;CWKCF;dm=004E;dt=Sqr;FC_NFKC=006E;na=SQUARED LATIN CAPITAL LETTER N;NFKC_CF=006E;NFKC_QC=N;NFKC_SCF=006E;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F13E;Alpha;Cased;CWKCF;dm=004F;dt=Sqr;FC_NFKC=006F;na=SQUARED LATIN CAPITAL LETTER O;NFKC_CF=006F;NFKC_QC=N;NFKC_SCF=006F;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F13F;age=5.2;Alpha;Cased;CWKCF;dm=0050;dt=Sqr;FC_NFKC=0070;na=SQUARED LATIN CAPITAL LETTER P;NFKC_CF=0070;NFKC_QC=N;NFKC_SCF=0070;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F140;Alpha;Cased;CWKCF;dm=0051;dt=Sqr;FC_NFKC=0071;na=SQUARED LATIN CAPITAL LETTER Q;NFKC_CF=0071;NFKC_QC=N;NFKC_SCF=0071;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F141;Alpha;Cased;CWKCF;dm=0052;dt=Sqr;FC_NFKC=0072;na=SQUARED LATIN CAPITAL LETTER R;NFKC_CF=0072;NFKC_QC=N;NFKC_SCF=0072;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F142;age=5.2;Alpha;Cased;CWKCF;dm=0053;dt=Sqr;FC_NFKC=0073;na=SQUARED LATIN CAPITAL LETTER S;NFKC_CF=0073;NFKC_QC=N;NFKC_SCF=0073;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F143;Alpha;Cased;CWKCF;dm=0054;dt=Sqr;FC_NFKC=0074;na=SQUARED LATIN CAPITAL LETTER T;NFKC_CF=0074;NFKC_QC=N;NFKC_SCF=0074;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F144;Alpha;Cased;CWKCF;dm=0055;dt=Sqr;FC_NFKC=0075;na=SQUARED LATIN CAPITAL LETTER U;NFKC_CF=0075;NFKC_QC=N;NFKC_SCF=0075;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F145;Alpha;Cased;CWKCF;dm=0056;dt=Sqr;FC_NFKC=0076;na=SQUARED LATIN CAPITAL LETTER V;NFKC_CF=0076;NFKC_QC=N;NFKC_SCF=0076;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F146;age=5.2;Alpha;Cased;CWKCF;dm=0057;dt=Sqr;FC_NFKC=0077;na=SQUARED LATIN CAPITAL LETTER W;NFKC_CF=0077;NFKC_QC=N;NFKC_SCF=0077;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F147;Alpha;Cased;CWKCF;dm=0058;dt=Sqr;FC_NFKC=0078;na=SQUARED LATIN CAPITAL LETTER X;NFKC_CF=0078;NFKC_QC=N;NFKC_SCF=0078;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F148;Alpha;Cased;CWKCF;dm=0059;dt=Sqr;FC_NFKC=0079;na=SQUARED LATIN CAPITAL LETTER Y;NFKC_CF=0079;NFKC_QC=N;NFKC_SCF=0079;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F149;Alpha;Cased;CWKCF;dm=005A;dt=Sqr;FC_NFKC=007A;na=SQUARED LATIN CAPITAL LETTER Z;NFKC_CF=007A;NFKC_QC=N;NFKC_SCF=007A;NFKD_QC=N;SB=UP;Upper;WB=LE
+cp;1F14A;age=5.2;CWKCF;dm=0048 0056;dt=Sqr;FC_NFKC=0068 0076;na=SQUARED HV;NFKC_CF=0068 0076;NFKC_QC=N;NFKC_SCF=0068 0076;NFKD_QC=N
+cp;1F14B;age=5.2;CWKCF;dm=004D 0056;dt=Sqr;FC_NFKC=006D 0076;na=SQUARED MV;NFKC_CF=006D 0076;NFKC_QC=N;NFKC_SCF=006D 0076;NFKD_QC=N
+cp;1F14C;age=5.2;CWKCF;dm=0053 0044;dt=Sqr;FC_NFKC=0073 0064;na=SQUARED SD;NFKC_CF=0073 0064;NFKC_QC=N;NFKC_SCF=0073 0064;NFKD_QC=N
+cp;1F14D;age=5.2;CWKCF;dm=0053 0053;dt=Sqr;FC_NFKC=0073 0073;na=SQUARED SS;NFKC_CF=0073 0073;NFKC_QC=N;NFKC_SCF=0073 0073;NFKD_QC=N
+cp;1F14E;age=5.2;CWKCF;dm=0050 0050 0056;dt=Sqr;FC_NFKC=0070 0070 0076;na=SQUARED PPV;NFKC_CF=0070 0070 0076;NFKC_QC=N;NFKC_SCF=0070 0070 0076;NFKD_QC=N
+cp;1F14F;CWKCF;dm=0057 0043;dt=Sqr;FC_NFKC=0077 0063;na=SQUARED WC;NFKC_CF=0077 0063;NFKC_QC=N;NFKC_SCF=0077 0063;NFKD_QC=N
# White on black circled Latin letters
cp;1F150;Alpha;Cased;na=NEGATIVE CIRCLED LATIN CAPITAL LETTER A;SB=UP;Upper;WB=LE
cp;1F151;Alpha;Cased;na=NEGATIVE CIRCLED LATIN CAPITAL LETTER B;SB=UP;Upper;WB=LE
@@ -37796,9 +37828,9 @@ cp;1F167;Alpha;Cased;na=NEGATIVE CIRCLED LATIN CAPITAL LETTER X;SB=UP;Upper;WB=L
cp;1F168;Alpha;Cased;na=NEGATIVE CIRCLED LATIN CAPITAL LETTER Y;SB=UP;Upper;WB=LE
cp;1F169;Alpha;Cased;na=NEGATIVE CIRCLED LATIN CAPITAL LETTER Z;SB=UP;Upper;WB=LE
# Raised squared Latin sequences
-cp;1F16A;age=6.1;bc=ON;CWKCF;dm=004D 0043;dt=Sup;ea=N;FC_NFKC=006D 0063;lb=AL;na=RAISED MC SIGN;NFKC_CF=006D 0063;NFKC_QC=N;NFKD_QC=N
-cp;1F16B;age=6.1;bc=ON;CWKCF;dm=004D 0044;dt=Sup;ea=N;FC_NFKC=006D 0064;lb=AL;na=RAISED MD SIGN;NFKC_CF=006D 0064;NFKC_QC=N;NFKD_QC=N
-cp;1F16C;age=12.0;bc=ON;CWKCF;dm=004D 0052;dt=Sup;ea=N;ExtPict;FC_NFKC=006D 0072;lb=AL;na=RAISED MR SIGN;NFKC_CF=006D 0072;NFKC_QC=N;NFKD_QC=N
+cp;1F16A;age=6.1;bc=ON;CWKCF;dm=004D 0043;dt=Sup;ea=N;FC_NFKC=006D 0063;lb=AL;na=RAISED MC SIGN;NFKC_CF=006D 0063;NFKC_QC=N;NFKC_SCF=006D 0063;NFKD_QC=N
+cp;1F16B;age=6.1;bc=ON;CWKCF;dm=004D 0044;dt=Sup;ea=N;FC_NFKC=006D 0064;lb=AL;na=RAISED MD SIGN;NFKC_CF=006D 0064;NFKC_QC=N;NFKC_SCF=006D 0064;NFKD_QC=N
+cp;1F16C;age=12.0;bc=ON;CWKCF;dm=004D 0052;dt=Sup;ea=N;ExtPict;FC_NFKC=006D 0072;lb=AL;na=RAISED MR SIGN;NFKC_CF=006D 0072;NFKC_QC=N;NFKC_SCF=006D 0072;NFKD_QC=N
# Creative Commons symbols
cp;1F16D;age=13.0;bc=ON;ea=N;ExtPict;lb=ID;na=CIRCLED CC
cp;1F16E;age=13.0;bc=ON;ea=N;ExtPict;lb=ID;na=CIRCLED C WITH OVERLAID BACKSLASH
@@ -37837,7 +37869,7 @@ cp;1F18D;age=5.2;na=NEGATIVE SQUARED SA
cp;1F18E;ea=W;Emoji;EPres;ExtPict;na=NEGATIVE SQUARED AB
cp;1F18F;na=NEGATIVE SQUARED WC
# Squared Latin letter sequences
-cp;1F190;age=5.2;CWKCF;dm=0044 004A;dt=Sqr;FC_NFKC=0064 006A;na=SQUARE DJ;NFKC_CF=0064 006A;NFKC_QC=N;NFKD_QC=N
+cp;1F190;age=5.2;CWKCF;dm=0044 004A;dt=Sqr;FC_NFKC=0064 006A;na=SQUARE DJ;NFKC_CF=0064 006A;NFKC_QC=N;NFKC_SCF=0064 006A;NFKD_QC=N
cp;1F191;ea=W;Emoji;EPres;ExtPict;na=SQUARED CL
cp;1F192;ea=W;Emoji;EPres;ExtPict;na=SQUARED COOL
cp;1F193;ea=W;Emoji;EPres;ExtPict;na=SQUARED FREE
@@ -37901,72 +37933,72 @@ cp;1F1FF;ea=N;EComp;Emoji;EPres;GCB=RI;lb=RI;na=REGIONAL INDICATOR SYMBOL LETTER
block;1F200..1F2FF;age=5.2;blk=Enclosed_Ideographic_Sup;CWKCF;dt=Sqr;ea=W;gc=So;Gr_Base;lb=ID;NFKC_QC=N;NFKD_QC=N;sc=Zyyy;vo=U
# 1F200..1F2FF Enclosed Ideographic Supplement
# Squared hiragana from ARIB STD B24
-cp;1F200;dm=307B 304B;na=SQUARE HIRAGANA HOKA;NFKC_CF=307B 304B;sc=Hira;vo=Tu
+cp;1F200;dm=307B 304B;na=SQUARE HIRAGANA HOKA;NFKC_CF=307B 304B;NFKC_SCF=307B 304B;sc=Hira;vo=Tu
# Squared katakana
-cp;1F201;age=6.0;dm=30B3 30B3;Emoji;EPres;ExtPict;na=SQUARED KATAKANA KOKO;NFKC_CF=30B3 30B3;vo=Tu
-cp;1F202;age=6.0;dm=30B5;Emoji;ExtPict;na=SQUARED KATAKANA SA;NFKC_CF=30B5
+cp;1F201;age=6.0;dm=30B3 30B3;Emoji;EPres;ExtPict;na=SQUARED KATAKANA KOKO;NFKC_CF=30B3 30B3;NFKC_SCF=30B3 30B3;vo=Tu
+cp;1F202;age=6.0;dm=30B5;Emoji;ExtPict;na=SQUARED KATAKANA SA;NFKC_CF=30B5;NFKC_SCF=30B5
unassigned;1F203..1F20F;ExtPict;lb=ID;vo=U
# Squared ideographs and kana from ARIB STD B24
-cp;1F210;dm=624B;na=SQUARED CJK UNIFIED IDEOGRAPH-624B;NFKC_CF=624B
-cp;1F211;dm=5B57;na=SQUARED CJK UNIFIED IDEOGRAPH-5B57;NFKC_CF=5B57
-cp;1F212;dm=53CC;na=SQUARED CJK UNIFIED IDEOGRAPH-53CC;NFKC_CF=53CC
-cp;1F213;dm=30C7;na=SQUARED KATAKANA DE;NFKC_CF=30C7
-cp;1F214;dm=4E8C;na=SQUARED CJK UNIFIED IDEOGRAPH-4E8C;NFKC_CF=4E8C
-cp;1F215;dm=591A;na=SQUARED CJK UNIFIED IDEOGRAPH-591A;NFKC_CF=591A
-cp;1F216;dm=89E3;na=SQUARED CJK UNIFIED IDEOGRAPH-89E3;NFKC_CF=89E3
-cp;1F217;dm=5929;na=SQUARED CJK UNIFIED IDEOGRAPH-5929;NFKC_CF=5929
-cp;1F218;dm=4EA4;na=SQUARED CJK UNIFIED IDEOGRAPH-4EA4;NFKC_CF=4EA4
-cp;1F219;dm=6620;na=SQUARED CJK UNIFIED IDEOGRAPH-6620;NFKC_CF=6620
-cp;1F21A;dm=7121;Emoji;EPres;ExtPict;na=SQUARED CJK UNIFIED IDEOGRAPH-7121;NFKC_CF=7121
-cp;1F21B;dm=6599;na=SQUARED CJK UNIFIED IDEOGRAPH-6599;NFKC_CF=6599
-cp;1F21C;dm=524D;na=SQUARED CJK UNIFIED IDEOGRAPH-524D;NFKC_CF=524D
-cp;1F21D;dm=5F8C;na=SQUARED CJK UNIFIED IDEOGRAPH-5F8C;NFKC_CF=5F8C
-cp;1F21E;dm=518D;na=SQUARED CJK UNIFIED IDEOGRAPH-518D;NFKC_CF=518D
-cp;1F21F;dm=65B0;na=SQUARED CJK UNIFIED IDEOGRAPH-65B0;NFKC_CF=65B0
-cp;1F220;dm=521D;na=SQUARED CJK UNIFIED IDEOGRAPH-521D;NFKC_CF=521D
-cp;1F221;dm=7D42;na=SQUARED CJK UNIFIED IDEOGRAPH-7D42;NFKC_CF=7D42
-cp;1F222;dm=751F;na=SQUARED CJK UNIFIED IDEOGRAPH-751F;NFKC_CF=751F
-cp;1F223;dm=8CA9;na=SQUARED CJK UNIFIED IDEOGRAPH-8CA9;NFKC_CF=8CA9
-cp;1F224;dm=58F0;na=SQUARED CJK UNIFIED IDEOGRAPH-58F0;NFKC_CF=58F0
-cp;1F225;dm=5439;na=SQUARED CJK UNIFIED IDEOGRAPH-5439;NFKC_CF=5439
-cp;1F226;dm=6F14;na=SQUARED CJK UNIFIED IDEOGRAPH-6F14;NFKC_CF=6F14
-cp;1F227;dm=6295;na=SQUARED CJK UNIFIED IDEOGRAPH-6295;NFKC_CF=6295
-cp;1F228;dm=6355;na=SQUARED CJK UNIFIED IDEOGRAPH-6355;NFKC_CF=6355
-cp;1F229;dm=4E00;na=SQUARED CJK UNIFIED IDEOGRAPH-4E00;NFKC_CF=4E00
-cp;1F22A;dm=4E09;na=SQUARED CJK UNIFIED IDEOGRAPH-4E09;NFKC_CF=4E09
-cp;1F22B;dm=904A;na=SQUARED CJK UNIFIED IDEOGRAPH-904A;NFKC_CF=904A
-cp;1F22C;dm=5DE6;na=SQUARED CJK UNIFIED IDEOGRAPH-5DE6;NFKC_CF=5DE6
-cp;1F22D;dm=4E2D;na=SQUARED CJK UNIFIED IDEOGRAPH-4E2D;NFKC_CF=4E2D
-cp;1F22E;dm=53F3;na=SQUARED CJK UNIFIED IDEOGRAPH-53F3;NFKC_CF=53F3
-cp;1F22F;dm=6307;Emoji;EPres;ExtPict;na=SQUARED CJK UNIFIED IDEOGRAPH-6307;NFKC_CF=6307
-cp;1F230;dm=8D70;na=SQUARED CJK UNIFIED IDEOGRAPH-8D70;NFKC_CF=8D70
-cp;1F231;dm=6253;na=SQUARED CJK UNIFIED IDEOGRAPH-6253;NFKC_CF=6253
+cp;1F210;dm=624B;na=SQUARED CJK UNIFIED IDEOGRAPH-624B;NFKC_CF=624B;NFKC_SCF=624B
+cp;1F211;dm=5B57;na=SQUARED CJK UNIFIED IDEOGRAPH-5B57;NFKC_CF=5B57;NFKC_SCF=5B57
+cp;1F212;dm=53CC;na=SQUARED CJK UNIFIED IDEOGRAPH-53CC;NFKC_CF=53CC;NFKC_SCF=53CC
+cp;1F213;dm=30C7;na=SQUARED KATAKANA DE;NFKC_CF=30C7;NFKC_SCF=30C7
+cp;1F214;dm=4E8C;na=SQUARED CJK UNIFIED IDEOGRAPH-4E8C;NFKC_CF=4E8C;NFKC_SCF=4E8C
+cp;1F215;dm=591A;na=SQUARED CJK UNIFIED IDEOGRAPH-591A;NFKC_CF=591A;NFKC_SCF=591A
+cp;1F216;dm=89E3;na=SQUARED CJK UNIFIED IDEOGRAPH-89E3;NFKC_CF=89E3;NFKC_SCF=89E3
+cp;1F217;dm=5929;na=SQUARED CJK UNIFIED IDEOGRAPH-5929;NFKC_CF=5929;NFKC_SCF=5929
+cp;1F218;dm=4EA4;na=SQUARED CJK UNIFIED IDEOGRAPH-4EA4;NFKC_CF=4EA4;NFKC_SCF=4EA4
+cp;1F219;dm=6620;na=SQUARED CJK UNIFIED IDEOGRAPH-6620;NFKC_CF=6620;NFKC_SCF=6620
+cp;1F21A;dm=7121;Emoji;EPres;ExtPict;na=SQUARED CJK UNIFIED IDEOGRAPH-7121;NFKC_CF=7121;NFKC_SCF=7121
+cp;1F21B;dm=6599;na=SQUARED CJK UNIFIED IDEOGRAPH-6599;NFKC_CF=6599;NFKC_SCF=6599
+cp;1F21C;dm=524D;na=SQUARED CJK UNIFIED IDEOGRAPH-524D;NFKC_CF=524D;NFKC_SCF=524D
+cp;1F21D;dm=5F8C;na=SQUARED CJK UNIFIED IDEOGRAPH-5F8C;NFKC_CF=5F8C;NFKC_SCF=5F8C
+cp;1F21E;dm=518D;na=SQUARED CJK UNIFIED IDEOGRAPH-518D;NFKC_CF=518D;NFKC_SCF=518D
+cp;1F21F;dm=65B0;na=SQUARED CJK UNIFIED IDEOGRAPH-65B0;NFKC_CF=65B0;NFKC_SCF=65B0
+cp;1F220;dm=521D;na=SQUARED CJK UNIFIED IDEOGRAPH-521D;NFKC_CF=521D;NFKC_SCF=521D
+cp;1F221;dm=7D42;na=SQUARED CJK UNIFIED IDEOGRAPH-7D42;NFKC_CF=7D42;NFKC_SCF=7D42
+cp;1F222;dm=751F;na=SQUARED CJK UNIFIED IDEOGRAPH-751F;NFKC_CF=751F;NFKC_SCF=751F
+cp;1F223;dm=8CA9;na=SQUARED CJK UNIFIED IDEOGRAPH-8CA9;NFKC_CF=8CA9;NFKC_SCF=8CA9
+cp;1F224;dm=58F0;na=SQUARED CJK UNIFIED IDEOGRAPH-58F0;NFKC_CF=58F0;NFKC_SCF=58F0
+cp;1F225;dm=5439;na=SQUARED CJK UNIFIED IDEOGRAPH-5439;NFKC_CF=5439;NFKC_SCF=5439
+cp;1F226;dm=6F14;na=SQUARED CJK UNIFIED IDEOGRAPH-6F14;NFKC_CF=6F14;NFKC_SCF=6F14
+cp;1F227;dm=6295;na=SQUARED CJK UNIFIED IDEOGRAPH-6295;NFKC_CF=6295;NFKC_SCF=6295
+cp;1F228;dm=6355;na=SQUARED CJK UNIFIED IDEOGRAPH-6355;NFKC_CF=6355;NFKC_SCF=6355
+cp;1F229;dm=4E00;na=SQUARED CJK UNIFIED IDEOGRAPH-4E00;NFKC_CF=4E00;NFKC_SCF=4E00
+cp;1F22A;dm=4E09;na=SQUARED CJK UNIFIED IDEOGRAPH-4E09;NFKC_CF=4E09;NFKC_SCF=4E09
+cp;1F22B;dm=904A;na=SQUARED CJK UNIFIED IDEOGRAPH-904A;NFKC_CF=904A;NFKC_SCF=904A
+cp;1F22C;dm=5DE6;na=SQUARED CJK UNIFIED IDEOGRAPH-5DE6;NFKC_CF=5DE6;NFKC_SCF=5DE6
+cp;1F22D;dm=4E2D;na=SQUARED CJK UNIFIED IDEOGRAPH-4E2D;NFKC_CF=4E2D;NFKC_SCF=4E2D
+cp;1F22E;dm=53F3;na=SQUARED CJK UNIFIED IDEOGRAPH-53F3;NFKC_CF=53F3;NFKC_SCF=53F3
+cp;1F22F;dm=6307;Emoji;EPres;ExtPict;na=SQUARED CJK UNIFIED IDEOGRAPH-6307;NFKC_CF=6307;NFKC_SCF=6307
+cp;1F230;dm=8D70;na=SQUARED CJK UNIFIED IDEOGRAPH-8D70;NFKC_CF=8D70;NFKC_SCF=8D70
+cp;1F231;dm=6253;na=SQUARED CJK UNIFIED IDEOGRAPH-6253;NFKC_CF=6253;NFKC_SCF=6253
# Squared ideographs
-cp;1F232;age=6.0;dm=7981;Emoji;EPres;ExtPict;na=SQUARED CJK UNIFIED IDEOGRAPH-7981;NFKC_CF=7981
-cp;1F233;age=6.0;dm=7A7A;Emoji;EPres;ExtPict;na=SQUARED CJK UNIFIED IDEOGRAPH-7A7A;NFKC_CF=7A7A
-cp;1F234;age=6.0;dm=5408;Emoji;EPres;ExtPict;na=SQUARED CJK UNIFIED IDEOGRAPH-5408;NFKC_CF=5408
-cp;1F235;age=6.0;dm=6E80;Emoji;EPres;ExtPict;na=SQUARED CJK UNIFIED IDEOGRAPH-6E80;NFKC_CF=6E80
-cp;1F236;age=6.0;dm=6709;Emoji;EPres;ExtPict;na=SQUARED CJK UNIFIED IDEOGRAPH-6709;NFKC_CF=6709
-cp;1F237;age=6.0;dm=6708;Emoji;ExtPict;na=SQUARED CJK UNIFIED IDEOGRAPH-6708;NFKC_CF=6708
-cp;1F238;age=6.0;dm=7533;Emoji;EPres;ExtPict;na=SQUARED CJK UNIFIED IDEOGRAPH-7533;NFKC_CF=7533
-cp;1F239;age=6.0;dm=5272;Emoji;EPres;ExtPict;na=SQUARED CJK UNIFIED IDEOGRAPH-5272;NFKC_CF=5272
-cp;1F23A;age=6.0;dm=55B6;Emoji;EPres;ExtPict;na=SQUARED CJK UNIFIED IDEOGRAPH-55B6;NFKC_CF=55B6
-cp;1F23B;age=9.0;dm=914D;na=SQUARED CJK UNIFIED IDEOGRAPH-914D;NFKC_CF=914D
+cp;1F232;age=6.0;dm=7981;Emoji;EPres;ExtPict;na=SQUARED CJK UNIFIED IDEOGRAPH-7981;NFKC_CF=7981;NFKC_SCF=7981
+cp;1F233;age=6.0;dm=7A7A;Emoji;EPres;ExtPict;na=SQUARED CJK UNIFIED IDEOGRAPH-7A7A;NFKC_CF=7A7A;NFKC_SCF=7A7A
+cp;1F234;age=6.0;dm=5408;Emoji;EPres;ExtPict;na=SQUARED CJK UNIFIED IDEOGRAPH-5408;NFKC_CF=5408;NFKC_SCF=5408
+cp;1F235;age=6.0;dm=6E80;Emoji;EPres;ExtPict;na=SQUARED CJK UNIFIED IDEOGRAPH-6E80;NFKC_CF=6E80;NFKC_SCF=6E80
+cp;1F236;age=6.0;dm=6709;Emoji;EPres;ExtPict;na=SQUARED CJK UNIFIED IDEOGRAPH-6709;NFKC_CF=6709;NFKC_SCF=6709
+cp;1F237;age=6.0;dm=6708;Emoji;ExtPict;na=SQUARED CJK UNIFIED IDEOGRAPH-6708;NFKC_CF=6708;NFKC_SCF=6708
+cp;1F238;age=6.0;dm=7533;Emoji;EPres;ExtPict;na=SQUARED CJK UNIFIED IDEOGRAPH-7533;NFKC_CF=7533;NFKC_SCF=7533
+cp;1F239;age=6.0;dm=5272;Emoji;EPres;ExtPict;na=SQUARED CJK UNIFIED IDEOGRAPH-5272;NFKC_CF=5272;NFKC_SCF=5272
+cp;1F23A;age=6.0;dm=55B6;Emoji;EPres;ExtPict;na=SQUARED CJK UNIFIED IDEOGRAPH-55B6;NFKC_CF=55B6;NFKC_SCF=55B6
+cp;1F23B;age=9.0;dm=914D;na=SQUARED CJK UNIFIED IDEOGRAPH-914D;NFKC_CF=914D;NFKC_SCF=914D
unassigned;1F23C..1F23F;ExtPict;lb=ID;vo=U
# Ideographs with tortoise shell brackets from ARIB STD B24
-cp;1F240;dm=3014 672C 3015;dt=Com;na=TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C;NFKC_CF=3014 672C 3015
-cp;1F241;dm=3014 4E09 3015;dt=Com;na=TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E09;NFKC_CF=3014 4E09 3015
-cp;1F242;dm=3014 4E8C 3015;dt=Com;na=TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E8C;NFKC_CF=3014 4E8C 3015
-cp;1F243;dm=3014 5B89 3015;dt=Com;na=TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-5B89;NFKC_CF=3014 5B89 3015
-cp;1F244;dm=3014 70B9 3015;dt=Com;na=TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-70B9;NFKC_CF=3014 70B9 3015
-cp;1F245;dm=3014 6253 3015;dt=Com;na=TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6253;NFKC_CF=3014 6253 3015
-cp;1F246;dm=3014 76D7 3015;dt=Com;na=TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-76D7;NFKC_CF=3014 76D7 3015
-cp;1F247;dm=3014 52DD 3015;dt=Com;na=TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-52DD;NFKC_CF=3014 52DD 3015
-cp;1F248;dm=3014 6557 3015;dt=Com;na=TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557;NFKC_CF=3014 6557 3015
+cp;1F240;dm=3014 672C 3015;dt=Com;na=TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C;NFKC_CF=3014 672C 3015;NFKC_SCF=3014 672C 3015
+cp;1F241;dm=3014 4E09 3015;dt=Com;na=TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E09;NFKC_CF=3014 4E09 3015;NFKC_SCF=3014 4E09 3015
+cp;1F242;dm=3014 4E8C 3015;dt=Com;na=TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E8C;NFKC_CF=3014 4E8C 3015;NFKC_SCF=3014 4E8C 3015
+cp;1F243;dm=3014 5B89 3015;dt=Com;na=TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-5B89;NFKC_CF=3014 5B89 3015;NFKC_SCF=3014 5B89 3015
+cp;1F244;dm=3014 70B9 3015;dt=Com;na=TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-70B9;NFKC_CF=3014 70B9 3015;NFKC_SCF=3014 70B9 3015
+cp;1F245;dm=3014 6253 3015;dt=Com;na=TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6253;NFKC_CF=3014 6253 3015;NFKC_SCF=3014 6253 3015
+cp;1F246;dm=3014 76D7 3015;dt=Com;na=TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-76D7;NFKC_CF=3014 76D7 3015;NFKC_SCF=3014 76D7 3015
+cp;1F247;dm=3014 52DD 3015;dt=Com;na=TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-52DD;NFKC_CF=3014 52DD 3015;NFKC_SCF=3014 52DD 3015
+cp;1F248;dm=3014 6557 3015;dt=Com;na=TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557;NFKC_CF=3014 6557 3015;NFKC_SCF=3014 6557 3015
unassigned;1F249..1F24F;ExtPict;lb=ID;vo=U
# Circled ideographs
-cp;1F250;age=6.0;dm=5F97;dt=Enc;Emoji;EPres;ExtPict;na=CIRCLED IDEOGRAPH ADVANTAGE;NFKC_CF=5F97;scx=Hani
-cp;1F251;age=6.0;dm=53EF;dt=Enc;Emoji;EPres;ExtPict;na=CIRCLED IDEOGRAPH ACCEPT;NFKC_CF=53EF;scx=Hani
+cp;1F250;age=6.0;dm=5F97;dt=Enc;Emoji;EPres;ExtPict;na=CIRCLED IDEOGRAPH ADVANTAGE;NFKC_CF=5F97;NFKC_SCF=5F97;scx=Hani
+cp;1F251;age=6.0;dm=53EF;dt=Enc;Emoji;EPres;ExtPict;na=CIRCLED IDEOGRAPH ACCEPT;NFKC_CF=53EF;NFKC_SCF=53EF;scx=Hani
unassigned;1F252..1F25F;ExtPict;lb=ID;vo=U
# Symbols for Chinese folk religion
cp;1F260;age=10.0;bc=ON;-CWKCF;dt=None;ExtPict;na=ROUNDED SYMBOL FOR FU;NFKC_QC=Y;NFKD_QC=Y
@@ -40311,16 +40343,16 @@ cp;1FBC9;na=STICK FIGURE WITH DRESS
cp;1FBCA;na=WHITE UP-POINTING CHEVRON
unassigned;1FBCB..1FBEF
# Segmented digits
-cp;1FBF0;bc=EN;CWKCF;dm=0030;dt=Font;gc=Nd;IDC;lb=NU;na=SEGMENTED DIGIT ZERO;NFKC_CF=0030;NFKC_QC=N;NFKD_QC=N;nt=De;nv=0;SB=NU;WB=NU;XIDC
-cp;1FBF1;bc=EN;CWKCF;dm=0031;dt=Font;gc=Nd;IDC;lb=NU;na=SEGMENTED DIGIT ONE;NFKC_CF=0031;NFKC_QC=N;NFKD_QC=N;nt=De;nv=1;SB=NU;WB=NU;XIDC
-cp;1FBF2;bc=EN;CWKCF;dm=0032;dt=Font;gc=Nd;IDC;lb=NU;na=SEGMENTED DIGIT TWO;NFKC_CF=0032;NFKC_QC=N;NFKD_QC=N;nt=De;nv=2;SB=NU;WB=NU;XIDC
-cp;1FBF3;bc=EN;CWKCF;dm=0033;dt=Font;gc=Nd;IDC;lb=NU;na=SEGMENTED DIGIT THREE;NFKC_CF=0033;NFKC_QC=N;NFKD_QC=N;nt=De;nv=3;SB=NU;WB=NU;XIDC
-cp;1FBF4;bc=EN;CWKCF;dm=0034;dt=Font;gc=Nd;IDC;lb=NU;na=SEGMENTED DIGIT FOUR;NFKC_CF=0034;NFKC_QC=N;NFKD_QC=N;nt=De;nv=4;SB=NU;WB=NU;XIDC
-cp;1FBF5;bc=EN;CWKCF;dm=0035;dt=Font;gc=Nd;IDC;lb=NU;na=SEGMENTED DIGIT FIVE;NFKC_CF=0035;NFKC_QC=N;NFKD_QC=N;nt=De;nv=5;SB=NU;WB=NU;XIDC
-cp;1FBF6;bc=EN;CWKCF;dm=0036;dt=Font;gc=Nd;IDC;lb=NU;na=SEGMENTED DIGIT SIX;NFKC_CF=0036;NFKC_QC=N;NFKD_QC=N;nt=De;nv=6;SB=NU;WB=NU;XIDC
-cp;1FBF7;bc=EN;CWKCF;dm=0037;dt=Font;gc=Nd;IDC;lb=NU;na=SEGMENTED DIGIT SEVEN;NFKC_CF=0037;NFKC_QC=N;NFKD_QC=N;nt=De;nv=7;SB=NU;WB=NU;XIDC
-cp;1FBF8;bc=EN;CWKCF;dm=0038;dt=Font;gc=Nd;IDC;lb=NU;na=SEGMENTED DIGIT EIGHT;NFKC_CF=0038;NFKC_QC=N;NFKD_QC=N;nt=De;nv=8;SB=NU;WB=NU;XIDC
-cp;1FBF9;bc=EN;CWKCF;dm=0039;dt=Font;gc=Nd;IDC;lb=NU;na=SEGMENTED DIGIT NINE;NFKC_CF=0039;NFKC_QC=N;NFKD_QC=N;nt=De;nv=9;SB=NU;WB=NU;XIDC
+cp;1FBF0;bc=EN;CWKCF;dm=0030;dt=Font;gc=Nd;IDC;lb=NU;na=SEGMENTED DIGIT ZERO;NFKC_CF=0030;NFKC_QC=N;NFKC_SCF=0030;NFKD_QC=N;nt=De;nv=0;SB=NU;WB=NU;XIDC
+cp;1FBF1;bc=EN;CWKCF;dm=0031;dt=Font;gc=Nd;IDC;lb=NU;na=SEGMENTED DIGIT ONE;NFKC_CF=0031;NFKC_QC=N;NFKC_SCF=0031;NFKD_QC=N;nt=De;nv=1;SB=NU;WB=NU;XIDC
+cp;1FBF2;bc=EN;CWKCF;dm=0032;dt=Font;gc=Nd;IDC;lb=NU;na=SEGMENTED DIGIT TWO;NFKC_CF=0032;NFKC_QC=N;NFKC_SCF=0032;NFKD_QC=N;nt=De;nv=2;SB=NU;WB=NU;XIDC
+cp;1FBF3;bc=EN;CWKCF;dm=0033;dt=Font;gc=Nd;IDC;lb=NU;na=SEGMENTED DIGIT THREE;NFKC_CF=0033;NFKC_QC=N;NFKC_SCF=0033;NFKD_QC=N;nt=De;nv=3;SB=NU;WB=NU;XIDC
+cp;1FBF4;bc=EN;CWKCF;dm=0034;dt=Font;gc=Nd;IDC;lb=NU;na=SEGMENTED DIGIT FOUR;NFKC_CF=0034;NFKC_QC=N;NFKC_SCF=0034;NFKD_QC=N;nt=De;nv=4;SB=NU;WB=NU;XIDC
+cp;1FBF5;bc=EN;CWKCF;dm=0035;dt=Font;gc=Nd;IDC;lb=NU;na=SEGMENTED DIGIT FIVE;NFKC_CF=0035;NFKC_QC=N;NFKC_SCF=0035;NFKD_QC=N;nt=De;nv=5;SB=NU;WB=NU;XIDC
+cp;1FBF6;bc=EN;CWKCF;dm=0036;dt=Font;gc=Nd;IDC;lb=NU;na=SEGMENTED DIGIT SIX;NFKC_CF=0036;NFKC_QC=N;NFKC_SCF=0036;NFKD_QC=N;nt=De;nv=6;SB=NU;WB=NU;XIDC
+cp;1FBF7;bc=EN;CWKCF;dm=0037;dt=Font;gc=Nd;IDC;lb=NU;na=SEGMENTED DIGIT SEVEN;NFKC_CF=0037;NFKC_QC=N;NFKC_SCF=0037;NFKD_QC=N;nt=De;nv=7;SB=NU;WB=NU;XIDC
+cp;1FBF8;bc=EN;CWKCF;dm=0038;dt=Font;gc=Nd;IDC;lb=NU;na=SEGMENTED DIGIT EIGHT;NFKC_CF=0038;NFKC_QC=N;NFKC_SCF=0038;NFKD_QC=N;nt=De;nv=8;SB=NU;WB=NU;XIDC
+cp;1FBF9;bc=EN;CWKCF;dm=0039;dt=Font;gc=Nd;IDC;lb=NU;na=SEGMENTED DIGIT NINE;NFKC_CF=0039;NFKC_QC=N;NFKC_SCF=0039;NFKD_QC=N;nt=De;nv=9;SB=NU;WB=NU;XIDC
unassigned;1FBFA..1FBFF
# No block
@@ -40377,554 +40409,559 @@ block;2CEB0..2EBEF;age=10.0;Alpha;blk=CJK_Ext_F;ea=W;gc=Lo;Gr_Base;IDC;Ideo;IDS;
algnamesrange;2CEB0..2EBE0;han;CJK UNIFIED IDEOGRAPH-
unassigned;2EBE1..2EBEF;ea=W;lb=ID;vo=U
+block;2EBF0..2EE5F;age=15.1;Alpha;blk=CJK_Ext_I;ea=W;gc=Lo;Gr_Base;IDC;Ideo;IDS;lb=ID;SB=LE;sc=Hani;UIdeo;vo=U;XIDC;XIDS
+# 2EBF0..2EE5D CJK Unified Ideographs Extension I
+algnamesrange;2EBF0..2EE5D;han;CJK UNIFIED IDEOGRAPH-
+unassigned;2EE5E..2EE5F;ea=W;lb=ID;vo=U
+
# No block
-unassigned;2EBF0..2F7FF;ea=W;lb=ID;vo=U
+unassigned;2EE60..2F7FF;ea=W;lb=ID;vo=U
-block;2F800..2FA1F;age=3.1;Alpha;blk=CJK_Compat_Ideographs_Sup;Comp_Ex;CWKCF;dt=Can;ea=W;gc=Lo;Gr_Base;IDC;Ideo;IDS;lb=ID;NFC_QC=N;NFD_QC=N;NFKC_QC=N;NFKD_QC=N;SB=LE;sc=Hani;vo=U;XIDC;XIDS
+block;2F800..2FA1F;age=3.1;Alpha;blk=CJK_Compat_Ideographs_Sup;Comp_Ex;CWKCF;dt=Can;ea=W;gc=Lo;Gr_Base;IDC;Ideo;IDS;lb=ID;NFC_QC=N;NFD_QC=N;NFKC_QC=N;NFKC_SCF=537F;NFKD_QC=N;SB=LE;sc=Hani;vo=U;XIDC;XIDS
# 2F800..2FA1F CJK Compatibility Ideographs Supplement
# Duplicate characters from CNS 11643-1992
-cp;2F800;dm=4E3D;na=CJK COMPATIBILITY IDEOGRAPH-2F800;NFKC_CF=4E3D
-cp;2F801;dm=4E38;na=CJK COMPATIBILITY IDEOGRAPH-2F801;NFKC_CF=4E38
-cp;2F802;dm=4E41;na=CJK COMPATIBILITY IDEOGRAPH-2F802;NFKC_CF=4E41
-cp;2F803;dm=20122;na=CJK COMPATIBILITY IDEOGRAPH-2F803;NFKC_CF=20122
-cp;2F804;dm=4F60;na=CJK COMPATIBILITY IDEOGRAPH-2F804;NFKC_CF=4F60
-cp;2F805;dm=4FAE;na=CJK COMPATIBILITY IDEOGRAPH-2F805;NFKC_CF=4FAE
-cp;2F806;dm=4FBB;na=CJK COMPATIBILITY IDEOGRAPH-2F806;NFKC_CF=4FBB
-cp;2F807;dm=5002;na=CJK COMPATIBILITY IDEOGRAPH-2F807;NFKC_CF=5002
-cp;2F808;dm=507A;na=CJK COMPATIBILITY IDEOGRAPH-2F808;NFKC_CF=507A
-cp;2F809;dm=5099;na=CJK COMPATIBILITY IDEOGRAPH-2F809;NFKC_CF=5099
-cp;2F80A;dm=50E7;na=CJK COMPATIBILITY IDEOGRAPH-2F80A;NFKC_CF=50E7
-cp;2F80B;dm=50CF;na=CJK COMPATIBILITY IDEOGRAPH-2F80B;NFKC_CF=50CF
-cp;2F80C;dm=349E;na=CJK COMPATIBILITY IDEOGRAPH-2F80C;NFKC_CF=349E
-cp;2F80D;dm=2063A;na=CJK COMPATIBILITY IDEOGRAPH-2F80D;NFKC_CF=2063A
-cp;2F80E;dm=514D;na=CJK COMPATIBILITY IDEOGRAPH-2F80E;NFKC_CF=514D
-cp;2F80F;dm=5154;na=CJK COMPATIBILITY IDEOGRAPH-2F80F;NFKC_CF=5154
-cp;2F810;dm=5164;na=CJK COMPATIBILITY IDEOGRAPH-2F810;NFKC_CF=5164
-cp;2F811;dm=5177;na=CJK COMPATIBILITY IDEOGRAPH-2F811;NFKC_CF=5177
-cp;2F812;dm=2051C;na=CJK COMPATIBILITY IDEOGRAPH-2F812;NFKC_CF=2051C
-cp;2F813;dm=34B9;na=CJK COMPATIBILITY IDEOGRAPH-2F813;NFKC_CF=34B9
-cp;2F814;dm=5167;na=CJK COMPATIBILITY IDEOGRAPH-2F814;NFKC_CF=5167
-cp;2F815;dm=518D;na=CJK COMPATIBILITY IDEOGRAPH-2F815;NFKC_CF=518D
-cp;2F816;dm=2054B;na=CJK COMPATIBILITY IDEOGRAPH-2F816;NFKC_CF=2054B
-cp;2F817;dm=5197;na=CJK COMPATIBILITY IDEOGRAPH-2F817;NFKC_CF=5197
-cp;2F818;dm=51A4;na=CJK COMPATIBILITY IDEOGRAPH-2F818;NFKC_CF=51A4
-cp;2F819;dm=4ECC;na=CJK COMPATIBILITY IDEOGRAPH-2F819;NFKC_CF=4ECC
-cp;2F81A;dm=51AC;na=CJK COMPATIBILITY IDEOGRAPH-2F81A;NFKC_CF=51AC
-cp;2F81B;dm=51B5;na=CJK COMPATIBILITY IDEOGRAPH-2F81B;NFKC_CF=51B5
-cp;2F81C;dm=291DF;na=CJK COMPATIBILITY IDEOGRAPH-2F81C;NFKC_CF=291DF
-cp;2F81D;dm=51F5;na=CJK COMPATIBILITY IDEOGRAPH-2F81D;NFKC_CF=51F5
-cp;2F81E;dm=5203;na=CJK COMPATIBILITY IDEOGRAPH-2F81E;NFKC_CF=5203
-cp;2F81F;dm=34DF;na=CJK COMPATIBILITY IDEOGRAPH-2F81F;NFKC_CF=34DF
-cp;2F820;dm=523B;na=CJK COMPATIBILITY IDEOGRAPH-2F820;NFKC_CF=523B
-cp;2F821;dm=5246;na=CJK COMPATIBILITY IDEOGRAPH-2F821;NFKC_CF=5246
-cp;2F822;dm=5272;na=CJK COMPATIBILITY IDEOGRAPH-2F822;NFKC_CF=5272
-cp;2F823;dm=5277;na=CJK COMPATIBILITY IDEOGRAPH-2F823;NFKC_CF=5277
-cp;2F824;dm=3515;na=CJK COMPATIBILITY IDEOGRAPH-2F824;NFKC_CF=3515
-cp;2F825;dm=52C7;na=CJK COMPATIBILITY IDEOGRAPH-2F825;NFKC_CF=52C7
-cp;2F826;dm=52C9;na=CJK COMPATIBILITY IDEOGRAPH-2F826;NFKC_CF=52C9
-cp;2F827;dm=52E4;na=CJK COMPATIBILITY IDEOGRAPH-2F827;NFKC_CF=52E4
-cp;2F828;dm=52FA;na=CJK COMPATIBILITY IDEOGRAPH-2F828;NFKC_CF=52FA
-cp;2F829;dm=5305;na=CJK COMPATIBILITY IDEOGRAPH-2F829;NFKC_CF=5305
-cp;2F82A;dm=5306;na=CJK COMPATIBILITY IDEOGRAPH-2F82A;NFKC_CF=5306
-cp;2F82B;dm=5317;na=CJK COMPATIBILITY IDEOGRAPH-2F82B;NFKC_CF=5317
-cp;2F82C;dm=5349;na=CJK COMPATIBILITY IDEOGRAPH-2F82C;NFKC_CF=5349
-cp;2F82D;dm=5351;na=CJK COMPATIBILITY IDEOGRAPH-2F82D;NFKC_CF=5351
-cp;2F82E;dm=535A;na=CJK COMPATIBILITY IDEOGRAPH-2F82E;NFKC_CF=535A
-cp;2F82F;dm=5373;na=CJK COMPATIBILITY IDEOGRAPH-2F82F;NFKC_CF=5373
-cp;2F830;dm=537D;na=CJK COMPATIBILITY IDEOGRAPH-2F830;NFKC_CF=537D
+cp;2F800;dm=4E3D;na=CJK COMPATIBILITY IDEOGRAPH-2F800;NFKC_CF=4E3D;NFKC_SCF=4E3D
+cp;2F801;dm=4E38;na=CJK COMPATIBILITY IDEOGRAPH-2F801;NFKC_CF=4E38;NFKC_SCF=4E38
+cp;2F802;dm=4E41;na=CJK COMPATIBILITY IDEOGRAPH-2F802;NFKC_CF=4E41;NFKC_SCF=4E41
+cp;2F803;dm=20122;na=CJK COMPATIBILITY IDEOGRAPH-2F803;NFKC_CF=20122;NFKC_SCF=20122
+cp;2F804;dm=4F60;na=CJK COMPATIBILITY IDEOGRAPH-2F804;NFKC_CF=4F60;NFKC_SCF=4F60
+cp;2F805;dm=4FAE;na=CJK COMPATIBILITY IDEOGRAPH-2F805;NFKC_CF=4FAE;NFKC_SCF=4FAE
+cp;2F806;dm=4FBB;na=CJK COMPATIBILITY IDEOGRAPH-2F806;NFKC_CF=4FBB;NFKC_SCF=4FBB
+cp;2F807;dm=5002;na=CJK COMPATIBILITY IDEOGRAPH-2F807;NFKC_CF=5002;NFKC_SCF=5002
+cp;2F808;dm=507A;na=CJK COMPATIBILITY IDEOGRAPH-2F808;NFKC_CF=507A;NFKC_SCF=507A
+cp;2F809;dm=5099;na=CJK COMPATIBILITY IDEOGRAPH-2F809;NFKC_CF=5099;NFKC_SCF=5099
+cp;2F80A;dm=50E7;na=CJK COMPATIBILITY IDEOGRAPH-2F80A;NFKC_CF=50E7;NFKC_SCF=50E7
+cp;2F80B;dm=50CF;na=CJK COMPATIBILITY IDEOGRAPH-2F80B;NFKC_CF=50CF;NFKC_SCF=50CF
+cp;2F80C;dm=349E;na=CJK COMPATIBILITY IDEOGRAPH-2F80C;NFKC_CF=349E;NFKC_SCF=349E
+cp;2F80D;dm=2063A;na=CJK COMPATIBILITY IDEOGRAPH-2F80D;NFKC_CF=2063A;NFKC_SCF=2063A
+cp;2F80E;dm=514D;na=CJK COMPATIBILITY IDEOGRAPH-2F80E;NFKC_CF=514D;NFKC_SCF=514D
+cp;2F80F;dm=5154;na=CJK COMPATIBILITY IDEOGRAPH-2F80F;NFKC_CF=5154;NFKC_SCF=5154
+cp;2F810;dm=5164;na=CJK COMPATIBILITY IDEOGRAPH-2F810;NFKC_CF=5164;NFKC_SCF=5164
+cp;2F811;dm=5177;na=CJK COMPATIBILITY IDEOGRAPH-2F811;NFKC_CF=5177;NFKC_SCF=5177
+cp;2F812;dm=2051C;na=CJK COMPATIBILITY IDEOGRAPH-2F812;NFKC_CF=2051C;NFKC_SCF=2051C
+cp;2F813;dm=34B9;na=CJK COMPATIBILITY IDEOGRAPH-2F813;NFKC_CF=34B9;NFKC_SCF=34B9
+cp;2F814;dm=5167;na=CJK COMPATIBILITY IDEOGRAPH-2F814;NFKC_CF=5167;NFKC_SCF=5167
+cp;2F815;dm=518D;na=CJK COMPATIBILITY IDEOGRAPH-2F815;NFKC_CF=518D;NFKC_SCF=518D
+cp;2F816;dm=2054B;na=CJK COMPATIBILITY IDEOGRAPH-2F816;NFKC_CF=2054B;NFKC_SCF=2054B
+cp;2F817;dm=5197;na=CJK COMPATIBILITY IDEOGRAPH-2F817;NFKC_CF=5197;NFKC_SCF=5197
+cp;2F818;dm=51A4;na=CJK COMPATIBILITY IDEOGRAPH-2F818;NFKC_CF=51A4;NFKC_SCF=51A4
+cp;2F819;dm=4ECC;na=CJK COMPATIBILITY IDEOGRAPH-2F819;NFKC_CF=4ECC;NFKC_SCF=4ECC
+cp;2F81A;dm=51AC;na=CJK COMPATIBILITY IDEOGRAPH-2F81A;NFKC_CF=51AC;NFKC_SCF=51AC
+cp;2F81B;dm=51B5;na=CJK COMPATIBILITY IDEOGRAPH-2F81B;NFKC_CF=51B5;NFKC_SCF=51B5
+cp;2F81C;dm=291DF;na=CJK COMPATIBILITY IDEOGRAPH-2F81C;NFKC_CF=291DF;NFKC_SCF=291DF
+cp;2F81D;dm=51F5;na=CJK COMPATIBILITY IDEOGRAPH-2F81D;NFKC_CF=51F5;NFKC_SCF=51F5
+cp;2F81E;dm=5203;na=CJK COMPATIBILITY IDEOGRAPH-2F81E;NFKC_CF=5203;NFKC_SCF=5203
+cp;2F81F;dm=34DF;na=CJK COMPATIBILITY IDEOGRAPH-2F81F;NFKC_CF=34DF;NFKC_SCF=34DF
+cp;2F820;dm=523B;na=CJK COMPATIBILITY IDEOGRAPH-2F820;NFKC_CF=523B;NFKC_SCF=523B
+cp;2F821;dm=5246;na=CJK COMPATIBILITY IDEOGRAPH-2F821;NFKC_CF=5246;NFKC_SCF=5246
+cp;2F822;dm=5272;na=CJK COMPATIBILITY IDEOGRAPH-2F822;NFKC_CF=5272;NFKC_SCF=5272
+cp;2F823;dm=5277;na=CJK COMPATIBILITY IDEOGRAPH-2F823;NFKC_CF=5277;NFKC_SCF=5277
+cp;2F824;dm=3515;na=CJK COMPATIBILITY IDEOGRAPH-2F824;NFKC_CF=3515;NFKC_SCF=3515
+cp;2F825;dm=52C7;na=CJK COMPATIBILITY IDEOGRAPH-2F825;NFKC_CF=52C7;NFKC_SCF=52C7
+cp;2F826;dm=52C9;na=CJK COMPATIBILITY IDEOGRAPH-2F826;NFKC_CF=52C9;NFKC_SCF=52C9
+cp;2F827;dm=52E4;na=CJK COMPATIBILITY IDEOGRAPH-2F827;NFKC_CF=52E4;NFKC_SCF=52E4
+cp;2F828;dm=52FA;na=CJK COMPATIBILITY IDEOGRAPH-2F828;NFKC_CF=52FA;NFKC_SCF=52FA
+cp;2F829;dm=5305;na=CJK COMPATIBILITY IDEOGRAPH-2F829;NFKC_CF=5305;NFKC_SCF=5305
+cp;2F82A;dm=5306;na=CJK COMPATIBILITY IDEOGRAPH-2F82A;NFKC_CF=5306;NFKC_SCF=5306
+cp;2F82B;dm=5317;na=CJK COMPATIBILITY IDEOGRAPH-2F82B;NFKC_CF=5317;NFKC_SCF=5317
+cp;2F82C;dm=5349;na=CJK COMPATIBILITY IDEOGRAPH-2F82C;NFKC_CF=5349;NFKC_SCF=5349
+cp;2F82D;dm=5351;na=CJK COMPATIBILITY IDEOGRAPH-2F82D;NFKC_CF=5351;NFKC_SCF=5351
+cp;2F82E;dm=535A;na=CJK COMPATIBILITY IDEOGRAPH-2F82E;NFKC_CF=535A;NFKC_SCF=535A
+cp;2F82F;dm=5373;na=CJK COMPATIBILITY IDEOGRAPH-2F82F;NFKC_CF=5373;NFKC_SCF=5373
+cp;2F830;dm=537D;na=CJK COMPATIBILITY IDEOGRAPH-2F830;NFKC_CF=537D;NFKC_SCF=537D
cp;2F831;dm=537F;na=CJK COMPATIBILITY IDEOGRAPH-2F831;NFKC_CF=537F
cp;2F832;dm=537F;na=CJK COMPATIBILITY IDEOGRAPH-2F832;NFKC_CF=537F
cp;2F833;dm=537F;na=CJK COMPATIBILITY IDEOGRAPH-2F833;NFKC_CF=537F
-cp;2F834;dm=20A2C;na=CJK COMPATIBILITY IDEOGRAPH-2F834;NFKC_CF=20A2C
-cp;2F835;dm=7070;na=CJK COMPATIBILITY IDEOGRAPH-2F835;NFKC_CF=7070
-cp;2F836;dm=53CA;na=CJK COMPATIBILITY IDEOGRAPH-2F836;NFKC_CF=53CA
-cp;2F837;dm=53DF;na=CJK COMPATIBILITY IDEOGRAPH-2F837;NFKC_CF=53DF
-cp;2F838;dm=20B63;na=CJK COMPATIBILITY IDEOGRAPH-2F838;NFKC_CF=20B63
-cp;2F839;dm=53EB;na=CJK COMPATIBILITY IDEOGRAPH-2F839;NFKC_CF=53EB
-cp;2F83A;dm=53F1;na=CJK COMPATIBILITY IDEOGRAPH-2F83A;NFKC_CF=53F1
-cp;2F83B;dm=5406;na=CJK COMPATIBILITY IDEOGRAPH-2F83B;NFKC_CF=5406
-cp;2F83C;dm=549E;na=CJK COMPATIBILITY IDEOGRAPH-2F83C;NFKC_CF=549E
-cp;2F83D;dm=5438;na=CJK COMPATIBILITY IDEOGRAPH-2F83D;NFKC_CF=5438
-cp;2F83E;dm=5448;na=CJK COMPATIBILITY IDEOGRAPH-2F83E;NFKC_CF=5448
-cp;2F83F;dm=5468;na=CJK COMPATIBILITY IDEOGRAPH-2F83F;NFKC_CF=5468
-cp;2F840;dm=54A2;na=CJK COMPATIBILITY IDEOGRAPH-2F840;NFKC_CF=54A2
-cp;2F841;dm=54F6;na=CJK COMPATIBILITY IDEOGRAPH-2F841;NFKC_CF=54F6
-cp;2F842;dm=5510;na=CJK COMPATIBILITY IDEOGRAPH-2F842;NFKC_CF=5510
-cp;2F843;dm=5553;na=CJK COMPATIBILITY IDEOGRAPH-2F843;NFKC_CF=5553
-cp;2F844;dm=5563;na=CJK COMPATIBILITY IDEOGRAPH-2F844;NFKC_CF=5563
-cp;2F845;dm=5584;na=CJK COMPATIBILITY IDEOGRAPH-2F845;NFKC_CF=5584
-cp;2F846;dm=5584;na=CJK COMPATIBILITY IDEOGRAPH-2F846;NFKC_CF=5584
-cp;2F847;dm=5599;na=CJK COMPATIBILITY IDEOGRAPH-2F847;NFKC_CF=5599
-cp;2F848;dm=55AB;na=CJK COMPATIBILITY IDEOGRAPH-2F848;NFKC_CF=55AB
-cp;2F849;dm=55B3;na=CJK COMPATIBILITY IDEOGRAPH-2F849;NFKC_CF=55B3
-cp;2F84A;dm=55C2;na=CJK COMPATIBILITY IDEOGRAPH-2F84A;NFKC_CF=55C2
-cp;2F84B;dm=5716;na=CJK COMPATIBILITY IDEOGRAPH-2F84B;NFKC_CF=5716
-cp;2F84C;dm=5606;na=CJK COMPATIBILITY IDEOGRAPH-2F84C;NFKC_CF=5606
-cp;2F84D;dm=5717;na=CJK COMPATIBILITY IDEOGRAPH-2F84D;NFKC_CF=5717
-cp;2F84E;dm=5651;na=CJK COMPATIBILITY IDEOGRAPH-2F84E;NFKC_CF=5651
-cp;2F84F;dm=5674;na=CJK COMPATIBILITY IDEOGRAPH-2F84F;NFKC_CF=5674
-cp;2F850;dm=5207;na=CJK COMPATIBILITY IDEOGRAPH-2F850;NFKC_CF=5207
-cp;2F851;dm=58EE;na=CJK COMPATIBILITY IDEOGRAPH-2F851;NFKC_CF=58EE
-cp;2F852;dm=57CE;na=CJK COMPATIBILITY IDEOGRAPH-2F852;NFKC_CF=57CE
-cp;2F853;dm=57F4;na=CJK COMPATIBILITY IDEOGRAPH-2F853;NFKC_CF=57F4
-cp;2F854;dm=580D;na=CJK COMPATIBILITY IDEOGRAPH-2F854;NFKC_CF=580D
-cp;2F855;dm=578B;na=CJK COMPATIBILITY IDEOGRAPH-2F855;NFKC_CF=578B
-cp;2F856;dm=5832;na=CJK COMPATIBILITY IDEOGRAPH-2F856;NFKC_CF=5832
-cp;2F857;dm=5831;na=CJK COMPATIBILITY IDEOGRAPH-2F857;NFKC_CF=5831
-cp;2F858;dm=58AC;na=CJK COMPATIBILITY IDEOGRAPH-2F858;NFKC_CF=58AC
-cp;2F859;dm=214E4;na=CJK COMPATIBILITY IDEOGRAPH-2F859;NFKC_CF=214E4
-cp;2F85A;dm=58F2;na=CJK COMPATIBILITY IDEOGRAPH-2F85A;NFKC_CF=58F2
-cp;2F85B;dm=58F7;na=CJK COMPATIBILITY IDEOGRAPH-2F85B;NFKC_CF=58F7
-cp;2F85C;dm=5906;na=CJK COMPATIBILITY IDEOGRAPH-2F85C;NFKC_CF=5906
-cp;2F85D;dm=591A;na=CJK COMPATIBILITY IDEOGRAPH-2F85D;NFKC_CF=591A
-cp;2F85E;dm=5922;na=CJK COMPATIBILITY IDEOGRAPH-2F85E;NFKC_CF=5922
-cp;2F85F;dm=5962;na=CJK COMPATIBILITY IDEOGRAPH-2F85F;NFKC_CF=5962
-cp;2F860;dm=216A8;na=CJK COMPATIBILITY IDEOGRAPH-2F860;NFKC_CF=216A8
-cp;2F861;dm=216EA;na=CJK COMPATIBILITY IDEOGRAPH-2F861;NFKC_CF=216EA
-cp;2F862;dm=59EC;na=CJK COMPATIBILITY IDEOGRAPH-2F862;NFKC_CF=59EC
-cp;2F863;dm=5A1B;na=CJK COMPATIBILITY IDEOGRAPH-2F863;NFKC_CF=5A1B
-cp;2F864;dm=5A27;na=CJK COMPATIBILITY IDEOGRAPH-2F864;NFKC_CF=5A27
-cp;2F865;dm=59D8;na=CJK COMPATIBILITY IDEOGRAPH-2F865;NFKC_CF=59D8
-cp;2F866;dm=5A66;na=CJK COMPATIBILITY IDEOGRAPH-2F866;NFKC_CF=5A66
-cp;2F867;dm=36EE;na=CJK COMPATIBILITY IDEOGRAPH-2F867;NFKC_CF=36EE
-cp;2F868;dm=36FC;na=CJK COMPATIBILITY IDEOGRAPH-2F868;NFKC_CF=36FC
-cp;2F869;dm=5B08;na=CJK COMPATIBILITY IDEOGRAPH-2F869;NFKC_CF=5B08
-cp;2F86A;dm=5B3E;na=CJK COMPATIBILITY IDEOGRAPH-2F86A;NFKC_CF=5B3E
-cp;2F86B;dm=5B3E;na=CJK COMPATIBILITY IDEOGRAPH-2F86B;NFKC_CF=5B3E
-cp;2F86C;dm=219C8;na=CJK COMPATIBILITY IDEOGRAPH-2F86C;NFKC_CF=219C8
-cp;2F86D;dm=5BC3;na=CJK COMPATIBILITY IDEOGRAPH-2F86D;NFKC_CF=5BC3
-cp;2F86E;dm=5BD8;na=CJK COMPATIBILITY IDEOGRAPH-2F86E;NFKC_CF=5BD8
-cp;2F86F;dm=5BE7;na=CJK COMPATIBILITY IDEOGRAPH-2F86F;NFKC_CF=5BE7
-cp;2F870;dm=5BF3;na=CJK COMPATIBILITY IDEOGRAPH-2F870;NFKC_CF=5BF3
-cp;2F871;dm=21B18;na=CJK COMPATIBILITY IDEOGRAPH-2F871;NFKC_CF=21B18
-cp;2F872;dm=5BFF;na=CJK COMPATIBILITY IDEOGRAPH-2F872;NFKC_CF=5BFF
-cp;2F873;dm=5C06;na=CJK COMPATIBILITY IDEOGRAPH-2F873;NFKC_CF=5C06
-cp;2F874;dm=5F53;na=CJK COMPATIBILITY IDEOGRAPH-2F874;NFKC_CF=5F53
-cp;2F875;dm=5C22;na=CJK COMPATIBILITY IDEOGRAPH-2F875;NFKC_CF=5C22
-cp;2F876;dm=3781;na=CJK COMPATIBILITY IDEOGRAPH-2F876;NFKC_CF=3781
-cp;2F877;dm=5C60;na=CJK COMPATIBILITY IDEOGRAPH-2F877;NFKC_CF=5C60
-cp;2F878;dm=5C6E;na=CJK COMPATIBILITY IDEOGRAPH-2F878;NFKC_CF=5C6E
-cp;2F879;dm=5CC0;na=CJK COMPATIBILITY IDEOGRAPH-2F879;NFKC_CF=5CC0
-cp;2F87A;dm=5C8D;na=CJK COMPATIBILITY IDEOGRAPH-2F87A;NFKC_CF=5C8D
-cp;2F87B;dm=21DE4;na=CJK COMPATIBILITY IDEOGRAPH-2F87B;NFKC_CF=21DE4
-cp;2F87C;dm=5D43;na=CJK COMPATIBILITY IDEOGRAPH-2F87C;NFKC_CF=5D43
-cp;2F87D;dm=21DE6;na=CJK COMPATIBILITY IDEOGRAPH-2F87D;NFKC_CF=21DE6
-cp;2F87E;dm=5D6E;na=CJK COMPATIBILITY IDEOGRAPH-2F87E;NFKC_CF=5D6E
-cp;2F87F;dm=5D6B;na=CJK COMPATIBILITY IDEOGRAPH-2F87F;NFKC_CF=5D6B
-cp;2F880;dm=5D7C;na=CJK COMPATIBILITY IDEOGRAPH-2F880;NFKC_CF=5D7C
-cp;2F881;dm=5DE1;na=CJK COMPATIBILITY IDEOGRAPH-2F881;NFKC_CF=5DE1
-cp;2F882;dm=5DE2;na=CJK COMPATIBILITY IDEOGRAPH-2F882;NFKC_CF=5DE2
-cp;2F883;dm=382F;na=CJK COMPATIBILITY IDEOGRAPH-2F883;NFKC_CF=382F
-cp;2F884;dm=5DFD;na=CJK COMPATIBILITY IDEOGRAPH-2F884;NFKC_CF=5DFD
-cp;2F885;dm=5E28;na=CJK COMPATIBILITY IDEOGRAPH-2F885;NFKC_CF=5E28
-cp;2F886;dm=5E3D;na=CJK COMPATIBILITY IDEOGRAPH-2F886;NFKC_CF=5E3D
-cp;2F887;dm=5E69;na=CJK COMPATIBILITY IDEOGRAPH-2F887;NFKC_CF=5E69
-cp;2F888;dm=3862;na=CJK COMPATIBILITY IDEOGRAPH-2F888;NFKC_CF=3862
-cp;2F889;dm=22183;na=CJK COMPATIBILITY IDEOGRAPH-2F889;NFKC_CF=22183
-cp;2F88A;dm=387C;na=CJK COMPATIBILITY IDEOGRAPH-2F88A;NFKC_CF=387C
-cp;2F88B;dm=5EB0;na=CJK COMPATIBILITY IDEOGRAPH-2F88B;NFKC_CF=5EB0
-cp;2F88C;dm=5EB3;na=CJK COMPATIBILITY IDEOGRAPH-2F88C;NFKC_CF=5EB3
-cp;2F88D;dm=5EB6;na=CJK COMPATIBILITY IDEOGRAPH-2F88D;NFKC_CF=5EB6
-cp;2F88E;dm=5ECA;na=CJK COMPATIBILITY IDEOGRAPH-2F88E;NFKC_CF=5ECA
-cp;2F88F;dm=2A392;na=CJK COMPATIBILITY IDEOGRAPH-2F88F;NFKC_CF=2A392
-cp;2F890;dm=5EFE;na=CJK COMPATIBILITY IDEOGRAPH-2F890;NFKC_CF=5EFE;nt=Nu;nv=9
-cp;2F891;dm=22331;na=CJK COMPATIBILITY IDEOGRAPH-2F891;NFKC_CF=22331
-cp;2F892;dm=22331;na=CJK COMPATIBILITY IDEOGRAPH-2F892;NFKC_CF=22331
-cp;2F893;dm=8201;na=CJK COMPATIBILITY IDEOGRAPH-2F893;NFKC_CF=8201
-cp;2F894;dm=5F22;na=CJK COMPATIBILITY IDEOGRAPH-2F894;NFKC_CF=5F22
-cp;2F895;dm=5F22;na=CJK COMPATIBILITY IDEOGRAPH-2F895;NFKC_CF=5F22
-cp;2F896;dm=38C7;na=CJK COMPATIBILITY IDEOGRAPH-2F896;NFKC_CF=38C7
-cp;2F897;dm=232B8;na=CJK COMPATIBILITY IDEOGRAPH-2F897;NFKC_CF=232B8
-cp;2F898;dm=261DA;na=CJK COMPATIBILITY IDEOGRAPH-2F898;NFKC_CF=261DA
-cp;2F899;dm=5F62;na=CJK COMPATIBILITY IDEOGRAPH-2F899;NFKC_CF=5F62
-cp;2F89A;dm=5F6B;na=CJK COMPATIBILITY IDEOGRAPH-2F89A;NFKC_CF=5F6B
-cp;2F89B;dm=38E3;na=CJK COMPATIBILITY IDEOGRAPH-2F89B;NFKC_CF=38E3
-cp;2F89C;dm=5F9A;na=CJK COMPATIBILITY IDEOGRAPH-2F89C;NFKC_CF=5F9A
-cp;2F89D;dm=5FCD;na=CJK COMPATIBILITY IDEOGRAPH-2F89D;NFKC_CF=5FCD
-cp;2F89E;dm=5FD7;na=CJK COMPATIBILITY IDEOGRAPH-2F89E;NFKC_CF=5FD7
-cp;2F89F;dm=5FF9;na=CJK COMPATIBILITY IDEOGRAPH-2F89F;NFKC_CF=5FF9
-cp;2F8A0;dm=6081;na=CJK COMPATIBILITY IDEOGRAPH-2F8A0;NFKC_CF=6081
-cp;2F8A1;dm=393A;na=CJK COMPATIBILITY IDEOGRAPH-2F8A1;NFKC_CF=393A
-cp;2F8A2;dm=391C;na=CJK COMPATIBILITY IDEOGRAPH-2F8A2;NFKC_CF=391C
-cp;2F8A3;dm=6094;na=CJK COMPATIBILITY IDEOGRAPH-2F8A3;NFKC_CF=6094
-cp;2F8A4;dm=226D4;na=CJK COMPATIBILITY IDEOGRAPH-2F8A4;NFKC_CF=226D4
-cp;2F8A5;dm=60C7;na=CJK COMPATIBILITY IDEOGRAPH-2F8A5;NFKC_CF=60C7
-cp;2F8A6;dm=6148;na=CJK COMPATIBILITY IDEOGRAPH-2F8A6;NFKC_CF=6148
-cp;2F8A7;dm=614C;na=CJK COMPATIBILITY IDEOGRAPH-2F8A7;NFKC_CF=614C
-cp;2F8A8;dm=614E;na=CJK COMPATIBILITY IDEOGRAPH-2F8A8;NFKC_CF=614E
-cp;2F8A9;dm=614C;na=CJK COMPATIBILITY IDEOGRAPH-2F8A9;NFKC_CF=614C
-cp;2F8AA;dm=617A;na=CJK COMPATIBILITY IDEOGRAPH-2F8AA;NFKC_CF=617A
-cp;2F8AB;dm=618E;na=CJK COMPATIBILITY IDEOGRAPH-2F8AB;NFKC_CF=618E
-cp;2F8AC;dm=61B2;na=CJK COMPATIBILITY IDEOGRAPH-2F8AC;NFKC_CF=61B2
-cp;2F8AD;dm=61A4;na=CJK COMPATIBILITY IDEOGRAPH-2F8AD;NFKC_CF=61A4
-cp;2F8AE;dm=61AF;na=CJK COMPATIBILITY IDEOGRAPH-2F8AE;NFKC_CF=61AF
-cp;2F8AF;dm=61DE;na=CJK COMPATIBILITY IDEOGRAPH-2F8AF;NFKC_CF=61DE
-cp;2F8B0;dm=61F2;na=CJK COMPATIBILITY IDEOGRAPH-2F8B0;NFKC_CF=61F2
-cp;2F8B1;dm=61F6;na=CJK COMPATIBILITY IDEOGRAPH-2F8B1;NFKC_CF=61F6
-cp;2F8B2;dm=6210;na=CJK COMPATIBILITY IDEOGRAPH-2F8B2;NFKC_CF=6210
-cp;2F8B3;dm=621B;na=CJK COMPATIBILITY IDEOGRAPH-2F8B3;NFKC_CF=621B
-cp;2F8B4;dm=625D;na=CJK COMPATIBILITY IDEOGRAPH-2F8B4;NFKC_CF=625D
-cp;2F8B5;dm=62B1;na=CJK COMPATIBILITY IDEOGRAPH-2F8B5;NFKC_CF=62B1
-cp;2F8B6;dm=62D4;na=CJK COMPATIBILITY IDEOGRAPH-2F8B6;NFKC_CF=62D4
-cp;2F8B7;dm=6350;na=CJK COMPATIBILITY IDEOGRAPH-2F8B7;NFKC_CF=6350
-cp;2F8B8;dm=22B0C;na=CJK COMPATIBILITY IDEOGRAPH-2F8B8;NFKC_CF=22B0C
-cp;2F8B9;dm=633D;na=CJK COMPATIBILITY IDEOGRAPH-2F8B9;NFKC_CF=633D
-cp;2F8BA;dm=62FC;na=CJK COMPATIBILITY IDEOGRAPH-2F8BA;NFKC_CF=62FC
-cp;2F8BB;dm=6368;na=CJK COMPATIBILITY IDEOGRAPH-2F8BB;NFKC_CF=6368
-cp;2F8BC;dm=6383;na=CJK COMPATIBILITY IDEOGRAPH-2F8BC;NFKC_CF=6383
-cp;2F8BD;dm=63E4;na=CJK COMPATIBILITY IDEOGRAPH-2F8BD;NFKC_CF=63E4
-cp;2F8BE;dm=22BF1;na=CJK COMPATIBILITY IDEOGRAPH-2F8BE;NFKC_CF=22BF1
-cp;2F8BF;dm=6422;na=CJK COMPATIBILITY IDEOGRAPH-2F8BF;NFKC_CF=6422
-cp;2F8C0;dm=63C5;na=CJK COMPATIBILITY IDEOGRAPH-2F8C0;NFKC_CF=63C5
-cp;2F8C1;dm=63A9;na=CJK COMPATIBILITY IDEOGRAPH-2F8C1;NFKC_CF=63A9
-cp;2F8C2;dm=3A2E;na=CJK COMPATIBILITY IDEOGRAPH-2F8C2;NFKC_CF=3A2E
-cp;2F8C3;dm=6469;na=CJK COMPATIBILITY IDEOGRAPH-2F8C3;NFKC_CF=6469
-cp;2F8C4;dm=647E;na=CJK COMPATIBILITY IDEOGRAPH-2F8C4;NFKC_CF=647E
-cp;2F8C5;dm=649D;na=CJK COMPATIBILITY IDEOGRAPH-2F8C5;NFKC_CF=649D
-cp;2F8C6;dm=6477;na=CJK COMPATIBILITY IDEOGRAPH-2F8C6;NFKC_CF=6477
-cp;2F8C7;dm=3A6C;na=CJK COMPATIBILITY IDEOGRAPH-2F8C7;NFKC_CF=3A6C
-cp;2F8C8;dm=654F;na=CJK COMPATIBILITY IDEOGRAPH-2F8C8;NFKC_CF=654F
-cp;2F8C9;dm=656C;na=CJK COMPATIBILITY IDEOGRAPH-2F8C9;NFKC_CF=656C
-cp;2F8CA;dm=2300A;na=CJK COMPATIBILITY IDEOGRAPH-2F8CA;NFKC_CF=2300A
-cp;2F8CB;dm=65E3;na=CJK COMPATIBILITY IDEOGRAPH-2F8CB;NFKC_CF=65E3
-cp;2F8CC;dm=66F8;na=CJK COMPATIBILITY IDEOGRAPH-2F8CC;NFKC_CF=66F8
-cp;2F8CD;dm=6649;na=CJK COMPATIBILITY IDEOGRAPH-2F8CD;NFKC_CF=6649
-cp;2F8CE;dm=3B19;na=CJK COMPATIBILITY IDEOGRAPH-2F8CE;NFKC_CF=3B19
-cp;2F8CF;dm=6691;na=CJK COMPATIBILITY IDEOGRAPH-2F8CF;NFKC_CF=6691
-cp;2F8D0;dm=3B08;na=CJK COMPATIBILITY IDEOGRAPH-2F8D0;NFKC_CF=3B08
-cp;2F8D1;dm=3AE4;na=CJK COMPATIBILITY IDEOGRAPH-2F8D1;NFKC_CF=3AE4
-cp;2F8D2;dm=5192;na=CJK COMPATIBILITY IDEOGRAPH-2F8D2;NFKC_CF=5192
-cp;2F8D3;dm=5195;na=CJK COMPATIBILITY IDEOGRAPH-2F8D3;NFKC_CF=5195
-cp;2F8D4;dm=6700;na=CJK COMPATIBILITY IDEOGRAPH-2F8D4;NFKC_CF=6700
-cp;2F8D5;dm=669C;na=CJK COMPATIBILITY IDEOGRAPH-2F8D5;NFKC_CF=669C
-cp;2F8D6;dm=80AD;na=CJK COMPATIBILITY IDEOGRAPH-2F8D6;NFKC_CF=80AD
-cp;2F8D7;dm=43D9;na=CJK COMPATIBILITY IDEOGRAPH-2F8D7;NFKC_CF=43D9
-cp;2F8D8;dm=6717;na=CJK COMPATIBILITY IDEOGRAPH-2F8D8;NFKC_CF=6717
-cp;2F8D9;dm=671B;na=CJK COMPATIBILITY IDEOGRAPH-2F8D9;NFKC_CF=671B
-cp;2F8DA;dm=6721;na=CJK COMPATIBILITY IDEOGRAPH-2F8DA;NFKC_CF=6721
-cp;2F8DB;dm=675E;na=CJK COMPATIBILITY IDEOGRAPH-2F8DB;NFKC_CF=675E
-cp;2F8DC;dm=6753;na=CJK COMPATIBILITY IDEOGRAPH-2F8DC;NFKC_CF=6753
-cp;2F8DD;dm=233C3;na=CJK COMPATIBILITY IDEOGRAPH-2F8DD;NFKC_CF=233C3
-cp;2F8DE;dm=3B49;na=CJK COMPATIBILITY IDEOGRAPH-2F8DE;NFKC_CF=3B49
-cp;2F8DF;dm=67FA;na=CJK COMPATIBILITY IDEOGRAPH-2F8DF;NFKC_CF=67FA
-cp;2F8E0;dm=6785;na=CJK COMPATIBILITY IDEOGRAPH-2F8E0;NFKC_CF=6785
-cp;2F8E1;dm=6852;na=CJK COMPATIBILITY IDEOGRAPH-2F8E1;NFKC_CF=6852
-cp;2F8E2;dm=6885;na=CJK COMPATIBILITY IDEOGRAPH-2F8E2;NFKC_CF=6885
-cp;2F8E3;dm=2346D;na=CJK COMPATIBILITY IDEOGRAPH-2F8E3;NFKC_CF=2346D
-cp;2F8E4;dm=688E;na=CJK COMPATIBILITY IDEOGRAPH-2F8E4;NFKC_CF=688E
-cp;2F8E5;dm=681F;na=CJK COMPATIBILITY IDEOGRAPH-2F8E5;NFKC_CF=681F
-cp;2F8E6;dm=6914;na=CJK COMPATIBILITY IDEOGRAPH-2F8E6;NFKC_CF=6914
-cp;2F8E7;dm=3B9D;na=CJK COMPATIBILITY IDEOGRAPH-2F8E7;NFKC_CF=3B9D
-cp;2F8E8;dm=6942;na=CJK COMPATIBILITY IDEOGRAPH-2F8E8;NFKC_CF=6942
-cp;2F8E9;dm=69A3;na=CJK COMPATIBILITY IDEOGRAPH-2F8E9;NFKC_CF=69A3
-cp;2F8EA;dm=69EA;na=CJK COMPATIBILITY IDEOGRAPH-2F8EA;NFKC_CF=69EA
-cp;2F8EB;dm=6AA8;na=CJK COMPATIBILITY IDEOGRAPH-2F8EB;NFKC_CF=6AA8
-cp;2F8EC;dm=236A3;na=CJK COMPATIBILITY IDEOGRAPH-2F8EC;NFKC_CF=236A3
-cp;2F8ED;dm=6ADB;na=CJK COMPATIBILITY IDEOGRAPH-2F8ED;NFKC_CF=6ADB
-cp;2F8EE;dm=3C18;na=CJK COMPATIBILITY IDEOGRAPH-2F8EE;NFKC_CF=3C18
-cp;2F8EF;dm=6B21;na=CJK COMPATIBILITY IDEOGRAPH-2F8EF;NFKC_CF=6B21
-cp;2F8F0;dm=238A7;na=CJK COMPATIBILITY IDEOGRAPH-2F8F0;NFKC_CF=238A7
-cp;2F8F1;dm=6B54;na=CJK COMPATIBILITY IDEOGRAPH-2F8F1;NFKC_CF=6B54
-cp;2F8F2;dm=3C4E;na=CJK COMPATIBILITY IDEOGRAPH-2F8F2;NFKC_CF=3C4E
-cp;2F8F3;dm=6B72;na=CJK COMPATIBILITY IDEOGRAPH-2F8F3;NFKC_CF=6B72
-cp;2F8F4;dm=6B9F;na=CJK COMPATIBILITY IDEOGRAPH-2F8F4;NFKC_CF=6B9F
-cp;2F8F5;dm=6BBA;na=CJK COMPATIBILITY IDEOGRAPH-2F8F5;NFKC_CF=6BBA
-cp;2F8F6;dm=6BBB;na=CJK COMPATIBILITY IDEOGRAPH-2F8F6;NFKC_CF=6BBB
-cp;2F8F7;dm=23A8D;na=CJK COMPATIBILITY IDEOGRAPH-2F8F7;NFKC_CF=23A8D
-cp;2F8F8;dm=21D0B;na=CJK COMPATIBILITY IDEOGRAPH-2F8F8;NFKC_CF=21D0B
-cp;2F8F9;dm=23AFA;na=CJK COMPATIBILITY IDEOGRAPH-2F8F9;NFKC_CF=23AFA
-cp;2F8FA;dm=6C4E;na=CJK COMPATIBILITY IDEOGRAPH-2F8FA;NFKC_CF=6C4E
-cp;2F8FB;dm=23CBC;na=CJK COMPATIBILITY IDEOGRAPH-2F8FB;NFKC_CF=23CBC
-cp;2F8FC;dm=6CBF;na=CJK COMPATIBILITY IDEOGRAPH-2F8FC;NFKC_CF=6CBF
-cp;2F8FD;dm=6CCD;na=CJK COMPATIBILITY IDEOGRAPH-2F8FD;NFKC_CF=6CCD
-cp;2F8FE;dm=6C67;na=CJK COMPATIBILITY IDEOGRAPH-2F8FE;NFKC_CF=6C67
-cp;2F8FF;dm=6D16;na=CJK COMPATIBILITY IDEOGRAPH-2F8FF;NFKC_CF=6D16
-cp;2F900;dm=6D3E;na=CJK COMPATIBILITY IDEOGRAPH-2F900;NFKC_CF=6D3E
-cp;2F901;dm=6D77;na=CJK COMPATIBILITY IDEOGRAPH-2F901;NFKC_CF=6D77
-cp;2F902;dm=6D41;na=CJK COMPATIBILITY IDEOGRAPH-2F902;NFKC_CF=6D41
-cp;2F903;dm=6D69;na=CJK COMPATIBILITY IDEOGRAPH-2F903;NFKC_CF=6D69
-cp;2F904;dm=6D78;na=CJK COMPATIBILITY IDEOGRAPH-2F904;NFKC_CF=6D78
-cp;2F905;dm=6D85;na=CJK COMPATIBILITY IDEOGRAPH-2F905;NFKC_CF=6D85
-cp;2F906;dm=23D1E;na=CJK COMPATIBILITY IDEOGRAPH-2F906;NFKC_CF=23D1E
-cp;2F907;dm=6D34;na=CJK COMPATIBILITY IDEOGRAPH-2F907;NFKC_CF=6D34
-cp;2F908;dm=6E2F;na=CJK COMPATIBILITY IDEOGRAPH-2F908;NFKC_CF=6E2F
-cp;2F909;dm=6E6E;na=CJK COMPATIBILITY IDEOGRAPH-2F909;NFKC_CF=6E6E
-cp;2F90A;dm=3D33;na=CJK COMPATIBILITY IDEOGRAPH-2F90A;NFKC_CF=3D33
-cp;2F90B;dm=6ECB;na=CJK COMPATIBILITY IDEOGRAPH-2F90B;NFKC_CF=6ECB
-cp;2F90C;dm=6EC7;na=CJK COMPATIBILITY IDEOGRAPH-2F90C;NFKC_CF=6EC7
-cp;2F90D;dm=23ED1;na=CJK COMPATIBILITY IDEOGRAPH-2F90D;NFKC_CF=23ED1
-cp;2F90E;dm=6DF9;na=CJK COMPATIBILITY IDEOGRAPH-2F90E;NFKC_CF=6DF9
-cp;2F90F;dm=6F6E;na=CJK COMPATIBILITY IDEOGRAPH-2F90F;NFKC_CF=6F6E
-cp;2F910;dm=23F5E;na=CJK COMPATIBILITY IDEOGRAPH-2F910;NFKC_CF=23F5E
-cp;2F911;dm=23F8E;na=CJK COMPATIBILITY IDEOGRAPH-2F911;NFKC_CF=23F8E
-cp;2F912;dm=6FC6;na=CJK COMPATIBILITY IDEOGRAPH-2F912;NFKC_CF=6FC6
-cp;2F913;dm=7039;na=CJK COMPATIBILITY IDEOGRAPH-2F913;NFKC_CF=7039
-cp;2F914;dm=701E;na=CJK COMPATIBILITY IDEOGRAPH-2F914;NFKC_CF=701E
-cp;2F915;dm=701B;na=CJK COMPATIBILITY IDEOGRAPH-2F915;NFKC_CF=701B
-cp;2F916;dm=3D96;na=CJK COMPATIBILITY IDEOGRAPH-2F916;NFKC_CF=3D96
-cp;2F917;dm=704A;na=CJK COMPATIBILITY IDEOGRAPH-2F917;NFKC_CF=704A
-cp;2F918;dm=707D;na=CJK COMPATIBILITY IDEOGRAPH-2F918;NFKC_CF=707D
-cp;2F919;dm=7077;na=CJK COMPATIBILITY IDEOGRAPH-2F919;NFKC_CF=7077
-cp;2F91A;dm=70AD;na=CJK COMPATIBILITY IDEOGRAPH-2F91A;NFKC_CF=70AD
-cp;2F91B;dm=20525;na=CJK COMPATIBILITY IDEOGRAPH-2F91B;NFKC_CF=20525
-cp;2F91C;dm=7145;na=CJK COMPATIBILITY IDEOGRAPH-2F91C;NFKC_CF=7145
-cp;2F91D;dm=24263;na=CJK COMPATIBILITY IDEOGRAPH-2F91D;NFKC_CF=24263
-cp;2F91E;dm=719C;na=CJK COMPATIBILITY IDEOGRAPH-2F91E;NFKC_CF=719C
-cp;2F91F;dm=243AB;na=CJK COMPATIBILITY IDEOGRAPH-2F91F;NFKC_CF=243AB
-cp;2F920;dm=7228;na=CJK COMPATIBILITY IDEOGRAPH-2F920;NFKC_CF=7228
-cp;2F921;dm=7235;na=CJK COMPATIBILITY IDEOGRAPH-2F921;NFKC_CF=7235
-cp;2F922;dm=7250;na=CJK COMPATIBILITY IDEOGRAPH-2F922;NFKC_CF=7250
-cp;2F923;dm=24608;na=CJK COMPATIBILITY IDEOGRAPH-2F923;NFKC_CF=24608
-cp;2F924;dm=7280;na=CJK COMPATIBILITY IDEOGRAPH-2F924;NFKC_CF=7280
-cp;2F925;dm=7295;na=CJK COMPATIBILITY IDEOGRAPH-2F925;NFKC_CF=7295
-cp;2F926;dm=24735;na=CJK COMPATIBILITY IDEOGRAPH-2F926;NFKC_CF=24735
-cp;2F927;dm=24814;na=CJK COMPATIBILITY IDEOGRAPH-2F927;NFKC_CF=24814
-cp;2F928;dm=737A;na=CJK COMPATIBILITY IDEOGRAPH-2F928;NFKC_CF=737A
-cp;2F929;dm=738B;na=CJK COMPATIBILITY IDEOGRAPH-2F929;NFKC_CF=738B
-cp;2F92A;dm=3EAC;na=CJK COMPATIBILITY IDEOGRAPH-2F92A;NFKC_CF=3EAC
-cp;2F92B;dm=73A5;na=CJK COMPATIBILITY IDEOGRAPH-2F92B;NFKC_CF=73A5
-cp;2F92C;dm=3EB8;na=CJK COMPATIBILITY IDEOGRAPH-2F92C;NFKC_CF=3EB8
-cp;2F92D;dm=3EB8;na=CJK COMPATIBILITY IDEOGRAPH-2F92D;NFKC_CF=3EB8
-cp;2F92E;dm=7447;na=CJK COMPATIBILITY IDEOGRAPH-2F92E;NFKC_CF=7447
-cp;2F92F;dm=745C;na=CJK COMPATIBILITY IDEOGRAPH-2F92F;NFKC_CF=745C
-cp;2F930;dm=7471;na=CJK COMPATIBILITY IDEOGRAPH-2F930;NFKC_CF=7471
-cp;2F931;dm=7485;na=CJK COMPATIBILITY IDEOGRAPH-2F931;NFKC_CF=7485
-cp;2F932;dm=74CA;na=CJK COMPATIBILITY IDEOGRAPH-2F932;NFKC_CF=74CA
-cp;2F933;dm=3F1B;na=CJK COMPATIBILITY IDEOGRAPH-2F933;NFKC_CF=3F1B
-cp;2F934;dm=7524;na=CJK COMPATIBILITY IDEOGRAPH-2F934;NFKC_CF=7524
-cp;2F935;dm=24C36;na=CJK COMPATIBILITY IDEOGRAPH-2F935;NFKC_CF=24C36
-cp;2F936;dm=753E;na=CJK COMPATIBILITY IDEOGRAPH-2F936;NFKC_CF=753E
-cp;2F937;dm=24C92;na=CJK COMPATIBILITY IDEOGRAPH-2F937;NFKC_CF=24C92
-cp;2F938;dm=7570;na=CJK COMPATIBILITY IDEOGRAPH-2F938;NFKC_CF=7570
-cp;2F939;dm=2219F;na=CJK COMPATIBILITY IDEOGRAPH-2F939;NFKC_CF=2219F
-cp;2F93A;dm=7610;na=CJK COMPATIBILITY IDEOGRAPH-2F93A;NFKC_CF=7610
-cp;2F93B;dm=24FA1;na=CJK COMPATIBILITY IDEOGRAPH-2F93B;NFKC_CF=24FA1
-cp;2F93C;dm=24FB8;na=CJK COMPATIBILITY IDEOGRAPH-2F93C;NFKC_CF=24FB8
-cp;2F93D;dm=25044;na=CJK COMPATIBILITY IDEOGRAPH-2F93D;NFKC_CF=25044
-cp;2F93E;dm=3FFC;na=CJK COMPATIBILITY IDEOGRAPH-2F93E;NFKC_CF=3FFC
-cp;2F93F;dm=4008;na=CJK COMPATIBILITY IDEOGRAPH-2F93F;NFKC_CF=4008
-cp;2F940;dm=76F4;na=CJK COMPATIBILITY IDEOGRAPH-2F940;NFKC_CF=76F4
-cp;2F941;dm=250F3;na=CJK COMPATIBILITY IDEOGRAPH-2F941;NFKC_CF=250F3
-cp;2F942;dm=250F2;na=CJK COMPATIBILITY IDEOGRAPH-2F942;NFKC_CF=250F2
-cp;2F943;dm=25119;na=CJK COMPATIBILITY IDEOGRAPH-2F943;NFKC_CF=25119
-cp;2F944;dm=25133;na=CJK COMPATIBILITY IDEOGRAPH-2F944;NFKC_CF=25133
-cp;2F945;dm=771E;na=CJK COMPATIBILITY IDEOGRAPH-2F945;NFKC_CF=771E
-cp;2F946;dm=771F;na=CJK COMPATIBILITY IDEOGRAPH-2F946;NFKC_CF=771F
-cp;2F947;dm=771F;na=CJK COMPATIBILITY IDEOGRAPH-2F947;NFKC_CF=771F
-cp;2F948;dm=774A;na=CJK COMPATIBILITY IDEOGRAPH-2F948;NFKC_CF=774A
-cp;2F949;dm=4039;na=CJK COMPATIBILITY IDEOGRAPH-2F949;NFKC_CF=4039
-cp;2F94A;dm=778B;na=CJK COMPATIBILITY IDEOGRAPH-2F94A;NFKC_CF=778B
-cp;2F94B;dm=4046;na=CJK COMPATIBILITY IDEOGRAPH-2F94B;NFKC_CF=4046
-cp;2F94C;dm=4096;na=CJK COMPATIBILITY IDEOGRAPH-2F94C;NFKC_CF=4096
-cp;2F94D;dm=2541D;na=CJK COMPATIBILITY IDEOGRAPH-2F94D;NFKC_CF=2541D
-cp;2F94E;dm=784E;na=CJK COMPATIBILITY IDEOGRAPH-2F94E;NFKC_CF=784E
-cp;2F94F;dm=788C;na=CJK COMPATIBILITY IDEOGRAPH-2F94F;NFKC_CF=788C
-cp;2F950;dm=78CC;na=CJK COMPATIBILITY IDEOGRAPH-2F950;NFKC_CF=78CC
-cp;2F951;dm=40E3;na=CJK COMPATIBILITY IDEOGRAPH-2F951;NFKC_CF=40E3
-cp;2F952;dm=25626;na=CJK COMPATIBILITY IDEOGRAPH-2F952;NFKC_CF=25626
-cp;2F953;dm=7956;na=CJK COMPATIBILITY IDEOGRAPH-2F953;NFKC_CF=7956
-cp;2F954;dm=2569A;na=CJK COMPATIBILITY IDEOGRAPH-2F954;NFKC_CF=2569A
-cp;2F955;dm=256C5;na=CJK COMPATIBILITY IDEOGRAPH-2F955;NFKC_CF=256C5
-cp;2F956;dm=798F;na=CJK COMPATIBILITY IDEOGRAPH-2F956;NFKC_CF=798F
-cp;2F957;dm=79EB;na=CJK COMPATIBILITY IDEOGRAPH-2F957;NFKC_CF=79EB
-cp;2F958;dm=412F;na=CJK COMPATIBILITY IDEOGRAPH-2F958;NFKC_CF=412F
-cp;2F959;dm=7A40;na=CJK COMPATIBILITY IDEOGRAPH-2F959;NFKC_CF=7A40
-cp;2F95A;dm=7A4A;na=CJK COMPATIBILITY IDEOGRAPH-2F95A;NFKC_CF=7A4A
-cp;2F95B;dm=7A4F;na=CJK COMPATIBILITY IDEOGRAPH-2F95B;NFKC_CF=7A4F
-cp;2F95C;dm=2597C;na=CJK COMPATIBILITY IDEOGRAPH-2F95C;NFKC_CF=2597C
-cp;2F95D;dm=25AA7;na=CJK COMPATIBILITY IDEOGRAPH-2F95D;NFKC_CF=25AA7
-cp;2F95E;dm=25AA7;na=CJK COMPATIBILITY IDEOGRAPH-2F95E;NFKC_CF=25AA7
-cp;2F95F;dm=7AEE;na=CJK COMPATIBILITY IDEOGRAPH-2F95F;NFKC_CF=7AEE
-cp;2F960;dm=4202;na=CJK COMPATIBILITY IDEOGRAPH-2F960;NFKC_CF=4202
-cp;2F961;dm=25BAB;na=CJK COMPATIBILITY IDEOGRAPH-2F961;NFKC_CF=25BAB
-cp;2F962;dm=7BC6;na=CJK COMPATIBILITY IDEOGRAPH-2F962;NFKC_CF=7BC6
-cp;2F963;dm=7BC9;na=CJK COMPATIBILITY IDEOGRAPH-2F963;NFKC_CF=7BC9
-cp;2F964;dm=4227;na=CJK COMPATIBILITY IDEOGRAPH-2F964;NFKC_CF=4227
-cp;2F965;dm=25C80;na=CJK COMPATIBILITY IDEOGRAPH-2F965;NFKC_CF=25C80
-cp;2F966;dm=7CD2;na=CJK COMPATIBILITY IDEOGRAPH-2F966;NFKC_CF=7CD2
-cp;2F967;dm=42A0;na=CJK COMPATIBILITY IDEOGRAPH-2F967;NFKC_CF=42A0
-cp;2F968;dm=7CE8;na=CJK COMPATIBILITY IDEOGRAPH-2F968;NFKC_CF=7CE8
-cp;2F969;dm=7CE3;na=CJK COMPATIBILITY IDEOGRAPH-2F969;NFKC_CF=7CE3
-cp;2F96A;dm=7D00;na=CJK COMPATIBILITY IDEOGRAPH-2F96A;NFKC_CF=7D00
-cp;2F96B;dm=25F86;na=CJK COMPATIBILITY IDEOGRAPH-2F96B;NFKC_CF=25F86
-cp;2F96C;dm=7D63;na=CJK COMPATIBILITY IDEOGRAPH-2F96C;NFKC_CF=7D63
-cp;2F96D;dm=4301;na=CJK COMPATIBILITY IDEOGRAPH-2F96D;NFKC_CF=4301
-cp;2F96E;dm=7DC7;na=CJK COMPATIBILITY IDEOGRAPH-2F96E;NFKC_CF=7DC7
-cp;2F96F;dm=7E02;na=CJK COMPATIBILITY IDEOGRAPH-2F96F;NFKC_CF=7E02
-cp;2F970;dm=7E45;na=CJK COMPATIBILITY IDEOGRAPH-2F970;NFKC_CF=7E45
-cp;2F971;dm=4334;na=CJK COMPATIBILITY IDEOGRAPH-2F971;NFKC_CF=4334
-cp;2F972;dm=26228;na=CJK COMPATIBILITY IDEOGRAPH-2F972;NFKC_CF=26228
-cp;2F973;dm=26247;na=CJK COMPATIBILITY IDEOGRAPH-2F973;NFKC_CF=26247
-cp;2F974;dm=4359;na=CJK COMPATIBILITY IDEOGRAPH-2F974;NFKC_CF=4359
-cp;2F975;dm=262D9;na=CJK COMPATIBILITY IDEOGRAPH-2F975;NFKC_CF=262D9
-cp;2F976;dm=7F7A;na=CJK COMPATIBILITY IDEOGRAPH-2F976;NFKC_CF=7F7A
-cp;2F977;dm=2633E;na=CJK COMPATIBILITY IDEOGRAPH-2F977;NFKC_CF=2633E
-cp;2F978;dm=7F95;na=CJK COMPATIBILITY IDEOGRAPH-2F978;NFKC_CF=7F95
-cp;2F979;dm=7FFA;na=CJK COMPATIBILITY IDEOGRAPH-2F979;NFKC_CF=7FFA
-cp;2F97A;dm=8005;na=CJK COMPATIBILITY IDEOGRAPH-2F97A;NFKC_CF=8005
-cp;2F97B;dm=264DA;na=CJK COMPATIBILITY IDEOGRAPH-2F97B;NFKC_CF=264DA
-cp;2F97C;dm=26523;na=CJK COMPATIBILITY IDEOGRAPH-2F97C;NFKC_CF=26523
-cp;2F97D;dm=8060;na=CJK COMPATIBILITY IDEOGRAPH-2F97D;NFKC_CF=8060
-cp;2F97E;dm=265A8;na=CJK COMPATIBILITY IDEOGRAPH-2F97E;NFKC_CF=265A8
-cp;2F97F;dm=8070;na=CJK COMPATIBILITY IDEOGRAPH-2F97F;NFKC_CF=8070
-cp;2F980;dm=2335F;na=CJK COMPATIBILITY IDEOGRAPH-2F980;NFKC_CF=2335F
-cp;2F981;dm=43D5;na=CJK COMPATIBILITY IDEOGRAPH-2F981;NFKC_CF=43D5
-cp;2F982;dm=80B2;na=CJK COMPATIBILITY IDEOGRAPH-2F982;NFKC_CF=80B2
-cp;2F983;dm=8103;na=CJK COMPATIBILITY IDEOGRAPH-2F983;NFKC_CF=8103
-cp;2F984;dm=440B;na=CJK COMPATIBILITY IDEOGRAPH-2F984;NFKC_CF=440B
-cp;2F985;dm=813E;na=CJK COMPATIBILITY IDEOGRAPH-2F985;NFKC_CF=813E
-cp;2F986;dm=5AB5;na=CJK COMPATIBILITY IDEOGRAPH-2F986;NFKC_CF=5AB5
-cp;2F987;dm=267A7;na=CJK COMPATIBILITY IDEOGRAPH-2F987;NFKC_CF=267A7
-cp;2F988;dm=267B5;na=CJK COMPATIBILITY IDEOGRAPH-2F988;NFKC_CF=267B5
-cp;2F989;dm=23393;na=CJK COMPATIBILITY IDEOGRAPH-2F989;NFKC_CF=23393
-cp;2F98A;dm=2339C;na=CJK COMPATIBILITY IDEOGRAPH-2F98A;NFKC_CF=2339C
-cp;2F98B;dm=8201;na=CJK COMPATIBILITY IDEOGRAPH-2F98B;NFKC_CF=8201
-cp;2F98C;dm=8204;na=CJK COMPATIBILITY IDEOGRAPH-2F98C;NFKC_CF=8204
-cp;2F98D;dm=8F9E;na=CJK COMPATIBILITY IDEOGRAPH-2F98D;NFKC_CF=8F9E
-cp;2F98E;dm=446B;na=CJK COMPATIBILITY IDEOGRAPH-2F98E;NFKC_CF=446B
-cp;2F98F;dm=8291;na=CJK COMPATIBILITY IDEOGRAPH-2F98F;NFKC_CF=8291
-cp;2F990;dm=828B;na=CJK COMPATIBILITY IDEOGRAPH-2F990;NFKC_CF=828B
-cp;2F991;dm=829D;na=CJK COMPATIBILITY IDEOGRAPH-2F991;NFKC_CF=829D
-cp;2F992;dm=52B3;na=CJK COMPATIBILITY IDEOGRAPH-2F992;NFKC_CF=52B3
-cp;2F993;dm=82B1;na=CJK COMPATIBILITY IDEOGRAPH-2F993;NFKC_CF=82B1
-cp;2F994;dm=82B3;na=CJK COMPATIBILITY IDEOGRAPH-2F994;NFKC_CF=82B3
-cp;2F995;dm=82BD;na=CJK COMPATIBILITY IDEOGRAPH-2F995;NFKC_CF=82BD
-cp;2F996;dm=82E6;na=CJK COMPATIBILITY IDEOGRAPH-2F996;NFKC_CF=82E6
-cp;2F997;dm=26B3C;na=CJK COMPATIBILITY IDEOGRAPH-2F997;NFKC_CF=26B3C
-cp;2F998;dm=82E5;na=CJK COMPATIBILITY IDEOGRAPH-2F998;NFKC_CF=82E5
-cp;2F999;dm=831D;na=CJK COMPATIBILITY IDEOGRAPH-2F999;NFKC_CF=831D
-cp;2F99A;dm=8363;na=CJK COMPATIBILITY IDEOGRAPH-2F99A;NFKC_CF=8363
-cp;2F99B;dm=83AD;na=CJK COMPATIBILITY IDEOGRAPH-2F99B;NFKC_CF=83AD
-cp;2F99C;dm=8323;na=CJK COMPATIBILITY IDEOGRAPH-2F99C;NFKC_CF=8323
-cp;2F99D;dm=83BD;na=CJK COMPATIBILITY IDEOGRAPH-2F99D;NFKC_CF=83BD
-cp;2F99E;dm=83E7;na=CJK COMPATIBILITY IDEOGRAPH-2F99E;NFKC_CF=83E7
-cp;2F99F;dm=8457;na=CJK COMPATIBILITY IDEOGRAPH-2F99F;NFKC_CF=8457
-cp;2F9A0;dm=8353;na=CJK COMPATIBILITY IDEOGRAPH-2F9A0;NFKC_CF=8353
-cp;2F9A1;dm=83CA;na=CJK COMPATIBILITY IDEOGRAPH-2F9A1;NFKC_CF=83CA
-cp;2F9A2;dm=83CC;na=CJK COMPATIBILITY IDEOGRAPH-2F9A2;NFKC_CF=83CC
-cp;2F9A3;dm=83DC;na=CJK COMPATIBILITY IDEOGRAPH-2F9A3;NFKC_CF=83DC
-cp;2F9A4;dm=26C36;na=CJK COMPATIBILITY IDEOGRAPH-2F9A4;NFKC_CF=26C36
-cp;2F9A5;dm=26D6B;na=CJK COMPATIBILITY IDEOGRAPH-2F9A5;NFKC_CF=26D6B
-cp;2F9A6;dm=26CD5;na=CJK COMPATIBILITY IDEOGRAPH-2F9A6;NFKC_CF=26CD5
-cp;2F9A7;dm=452B;na=CJK COMPATIBILITY IDEOGRAPH-2F9A7;NFKC_CF=452B
-cp;2F9A8;dm=84F1;na=CJK COMPATIBILITY IDEOGRAPH-2F9A8;NFKC_CF=84F1
-cp;2F9A9;dm=84F3;na=CJK COMPATIBILITY IDEOGRAPH-2F9A9;NFKC_CF=84F3
-cp;2F9AA;dm=8516;na=CJK COMPATIBILITY IDEOGRAPH-2F9AA;NFKC_CF=8516
-cp;2F9AB;dm=273CA;na=CJK COMPATIBILITY IDEOGRAPH-2F9AB;NFKC_CF=273CA
-cp;2F9AC;dm=8564;na=CJK COMPATIBILITY IDEOGRAPH-2F9AC;NFKC_CF=8564
-cp;2F9AD;dm=26F2C;na=CJK COMPATIBILITY IDEOGRAPH-2F9AD;NFKC_CF=26F2C
-cp;2F9AE;dm=455D;na=CJK COMPATIBILITY IDEOGRAPH-2F9AE;NFKC_CF=455D
-cp;2F9AF;dm=4561;na=CJK COMPATIBILITY IDEOGRAPH-2F9AF;NFKC_CF=4561
-cp;2F9B0;dm=26FB1;na=CJK COMPATIBILITY IDEOGRAPH-2F9B0;NFKC_CF=26FB1
-cp;2F9B1;dm=270D2;na=CJK COMPATIBILITY IDEOGRAPH-2F9B1;NFKC_CF=270D2
-cp;2F9B2;dm=456B;na=CJK COMPATIBILITY IDEOGRAPH-2F9B2;NFKC_CF=456B
-cp;2F9B3;dm=8650;na=CJK COMPATIBILITY IDEOGRAPH-2F9B3;NFKC_CF=8650
-cp;2F9B4;dm=865C;na=CJK COMPATIBILITY IDEOGRAPH-2F9B4;NFKC_CF=865C
-cp;2F9B5;dm=8667;na=CJK COMPATIBILITY IDEOGRAPH-2F9B5;NFKC_CF=8667
-cp;2F9B6;dm=8669;na=CJK COMPATIBILITY IDEOGRAPH-2F9B6;NFKC_CF=8669
-cp;2F9B7;dm=86A9;na=CJK COMPATIBILITY IDEOGRAPH-2F9B7;NFKC_CF=86A9
-cp;2F9B8;dm=8688;na=CJK COMPATIBILITY IDEOGRAPH-2F9B8;NFKC_CF=8688
-cp;2F9B9;dm=870E;na=CJK COMPATIBILITY IDEOGRAPH-2F9B9;NFKC_CF=870E
-cp;2F9BA;dm=86E2;na=CJK COMPATIBILITY IDEOGRAPH-2F9BA;NFKC_CF=86E2
-cp;2F9BB;dm=8779;na=CJK COMPATIBILITY IDEOGRAPH-2F9BB;NFKC_CF=8779
-cp;2F9BC;dm=8728;na=CJK COMPATIBILITY IDEOGRAPH-2F9BC;NFKC_CF=8728
-cp;2F9BD;dm=876B;na=CJK COMPATIBILITY IDEOGRAPH-2F9BD;NFKC_CF=876B
-cp;2F9BE;dm=8786;na=CJK COMPATIBILITY IDEOGRAPH-2F9BE;NFKC_CF=8786
-cp;2F9BF;dm=45D7;na=CJK COMPATIBILITY IDEOGRAPH-2F9BF;NFKC_CF=45D7
-cp;2F9C0;dm=87E1;na=CJK COMPATIBILITY IDEOGRAPH-2F9C0;NFKC_CF=87E1
-cp;2F9C1;dm=8801;na=CJK COMPATIBILITY IDEOGRAPH-2F9C1;NFKC_CF=8801
-cp;2F9C2;dm=45F9;na=CJK COMPATIBILITY IDEOGRAPH-2F9C2;NFKC_CF=45F9
-cp;2F9C3;dm=8860;na=CJK COMPATIBILITY IDEOGRAPH-2F9C3;NFKC_CF=8860
-cp;2F9C4;dm=8863;na=CJK COMPATIBILITY IDEOGRAPH-2F9C4;NFKC_CF=8863
-cp;2F9C5;dm=27667;na=CJK COMPATIBILITY IDEOGRAPH-2F9C5;NFKC_CF=27667
-cp;2F9C6;dm=88D7;na=CJK COMPATIBILITY IDEOGRAPH-2F9C6;NFKC_CF=88D7
-cp;2F9C7;dm=88DE;na=CJK COMPATIBILITY IDEOGRAPH-2F9C7;NFKC_CF=88DE
-cp;2F9C8;dm=4635;na=CJK COMPATIBILITY IDEOGRAPH-2F9C8;NFKC_CF=4635
-cp;2F9C9;dm=88FA;na=CJK COMPATIBILITY IDEOGRAPH-2F9C9;NFKC_CF=88FA
-cp;2F9CA;dm=34BB;na=CJK COMPATIBILITY IDEOGRAPH-2F9CA;NFKC_CF=34BB
-cp;2F9CB;dm=278AE;na=CJK COMPATIBILITY IDEOGRAPH-2F9CB;NFKC_CF=278AE
-cp;2F9CC;dm=27966;na=CJK COMPATIBILITY IDEOGRAPH-2F9CC;NFKC_CF=27966
-cp;2F9CD;dm=46BE;na=CJK COMPATIBILITY IDEOGRAPH-2F9CD;NFKC_CF=46BE
-cp;2F9CE;dm=46C7;na=CJK COMPATIBILITY IDEOGRAPH-2F9CE;NFKC_CF=46C7
-cp;2F9CF;dm=8AA0;na=CJK COMPATIBILITY IDEOGRAPH-2F9CF;NFKC_CF=8AA0
-cp;2F9D0;dm=8AED;na=CJK COMPATIBILITY IDEOGRAPH-2F9D0;NFKC_CF=8AED
-cp;2F9D1;dm=8B8A;na=CJK COMPATIBILITY IDEOGRAPH-2F9D1;NFKC_CF=8B8A
-cp;2F9D2;dm=8C55;na=CJK COMPATIBILITY IDEOGRAPH-2F9D2;NFKC_CF=8C55
-cp;2F9D3;dm=27CA8;na=CJK COMPATIBILITY IDEOGRAPH-2F9D3;NFKC_CF=27CA8
-cp;2F9D4;dm=8CAB;na=CJK COMPATIBILITY IDEOGRAPH-2F9D4;NFKC_CF=8CAB
-cp;2F9D5;dm=8CC1;na=CJK COMPATIBILITY IDEOGRAPH-2F9D5;NFKC_CF=8CC1
-cp;2F9D6;dm=8D1B;na=CJK COMPATIBILITY IDEOGRAPH-2F9D6;NFKC_CF=8D1B
-cp;2F9D7;dm=8D77;na=CJK COMPATIBILITY IDEOGRAPH-2F9D7;NFKC_CF=8D77
-cp;2F9D8;dm=27F2F;na=CJK COMPATIBILITY IDEOGRAPH-2F9D8;NFKC_CF=27F2F
-cp;2F9D9;dm=20804;na=CJK COMPATIBILITY IDEOGRAPH-2F9D9;NFKC_CF=20804
-cp;2F9DA;dm=8DCB;na=CJK COMPATIBILITY IDEOGRAPH-2F9DA;NFKC_CF=8DCB
-cp;2F9DB;dm=8DBC;na=CJK COMPATIBILITY IDEOGRAPH-2F9DB;NFKC_CF=8DBC
-cp;2F9DC;dm=8DF0;na=CJK COMPATIBILITY IDEOGRAPH-2F9DC;NFKC_CF=8DF0
-cp;2F9DD;dm=208DE;na=CJK COMPATIBILITY IDEOGRAPH-2F9DD;NFKC_CF=208DE
-cp;2F9DE;dm=8ED4;na=CJK COMPATIBILITY IDEOGRAPH-2F9DE;NFKC_CF=8ED4
-cp;2F9DF;dm=8F38;na=CJK COMPATIBILITY IDEOGRAPH-2F9DF;NFKC_CF=8F38
-cp;2F9E0;dm=285D2;na=CJK COMPATIBILITY IDEOGRAPH-2F9E0;NFKC_CF=285D2
-cp;2F9E1;dm=285ED;na=CJK COMPATIBILITY IDEOGRAPH-2F9E1;NFKC_CF=285ED
-cp;2F9E2;dm=9094;na=CJK COMPATIBILITY IDEOGRAPH-2F9E2;NFKC_CF=9094
-cp;2F9E3;dm=90F1;na=CJK COMPATIBILITY IDEOGRAPH-2F9E3;NFKC_CF=90F1
-cp;2F9E4;dm=9111;na=CJK COMPATIBILITY IDEOGRAPH-2F9E4;NFKC_CF=9111
-cp;2F9E5;dm=2872E;na=CJK COMPATIBILITY IDEOGRAPH-2F9E5;NFKC_CF=2872E
-cp;2F9E6;dm=911B;na=CJK COMPATIBILITY IDEOGRAPH-2F9E6;NFKC_CF=911B
-cp;2F9E7;dm=9238;na=CJK COMPATIBILITY IDEOGRAPH-2F9E7;NFKC_CF=9238
-cp;2F9E8;dm=92D7;na=CJK COMPATIBILITY IDEOGRAPH-2F9E8;NFKC_CF=92D7
-cp;2F9E9;dm=92D8;na=CJK COMPATIBILITY IDEOGRAPH-2F9E9;NFKC_CF=92D8
-cp;2F9EA;dm=927C;na=CJK COMPATIBILITY IDEOGRAPH-2F9EA;NFKC_CF=927C
-cp;2F9EB;dm=93F9;na=CJK COMPATIBILITY IDEOGRAPH-2F9EB;NFKC_CF=93F9
-cp;2F9EC;dm=9415;na=CJK COMPATIBILITY IDEOGRAPH-2F9EC;NFKC_CF=9415
-cp;2F9ED;dm=28BFA;na=CJK COMPATIBILITY IDEOGRAPH-2F9ED;NFKC_CF=28BFA
-cp;2F9EE;dm=958B;na=CJK COMPATIBILITY IDEOGRAPH-2F9EE;NFKC_CF=958B
-cp;2F9EF;dm=4995;na=CJK COMPATIBILITY IDEOGRAPH-2F9EF;NFKC_CF=4995
-cp;2F9F0;dm=95B7;na=CJK COMPATIBILITY IDEOGRAPH-2F9F0;NFKC_CF=95B7
-cp;2F9F1;dm=28D77;na=CJK COMPATIBILITY IDEOGRAPH-2F9F1;NFKC_CF=28D77
-cp;2F9F2;dm=49E6;na=CJK COMPATIBILITY IDEOGRAPH-2F9F2;NFKC_CF=49E6
-cp;2F9F3;dm=96C3;na=CJK COMPATIBILITY IDEOGRAPH-2F9F3;NFKC_CF=96C3
-cp;2F9F4;dm=5DB2;na=CJK COMPATIBILITY IDEOGRAPH-2F9F4;NFKC_CF=5DB2
-cp;2F9F5;dm=9723;na=CJK COMPATIBILITY IDEOGRAPH-2F9F5;NFKC_CF=9723
-cp;2F9F6;dm=29145;na=CJK COMPATIBILITY IDEOGRAPH-2F9F6;NFKC_CF=29145
-cp;2F9F7;dm=2921A;na=CJK COMPATIBILITY IDEOGRAPH-2F9F7;NFKC_CF=2921A
-cp;2F9F8;dm=4A6E;na=CJK COMPATIBILITY IDEOGRAPH-2F9F8;NFKC_CF=4A6E
-cp;2F9F9;dm=4A76;na=CJK COMPATIBILITY IDEOGRAPH-2F9F9;NFKC_CF=4A76
-cp;2F9FA;dm=97E0;na=CJK COMPATIBILITY IDEOGRAPH-2F9FA;NFKC_CF=97E0
-cp;2F9FB;dm=2940A;na=CJK COMPATIBILITY IDEOGRAPH-2F9FB;NFKC_CF=2940A
-cp;2F9FC;dm=4AB2;na=CJK COMPATIBILITY IDEOGRAPH-2F9FC;NFKC_CF=4AB2
-cp;2F9FD;dm=29496;na=CJK COMPATIBILITY IDEOGRAPH-2F9FD;NFKC_CF=29496
-cp;2F9FE;dm=980B;na=CJK COMPATIBILITY IDEOGRAPH-2F9FE;NFKC_CF=980B
-cp;2F9FF;dm=980B;na=CJK COMPATIBILITY IDEOGRAPH-2F9FF;NFKC_CF=980B
-cp;2FA00;dm=9829;na=CJK COMPATIBILITY IDEOGRAPH-2FA00;NFKC_CF=9829
-cp;2FA01;dm=295B6;na=CJK COMPATIBILITY IDEOGRAPH-2FA01;NFKC_CF=295B6
-cp;2FA02;dm=98E2;na=CJK COMPATIBILITY IDEOGRAPH-2FA02;NFKC_CF=98E2
-cp;2FA03;dm=4B33;na=CJK COMPATIBILITY IDEOGRAPH-2FA03;NFKC_CF=4B33
-cp;2FA04;dm=9929;na=CJK COMPATIBILITY IDEOGRAPH-2FA04;NFKC_CF=9929
-cp;2FA05;dm=99A7;na=CJK COMPATIBILITY IDEOGRAPH-2FA05;NFKC_CF=99A7
-cp;2FA06;dm=99C2;na=CJK COMPATIBILITY IDEOGRAPH-2FA06;NFKC_CF=99C2
-cp;2FA07;dm=99FE;na=CJK COMPATIBILITY IDEOGRAPH-2FA07;NFKC_CF=99FE
-cp;2FA08;dm=4BCE;na=CJK COMPATIBILITY IDEOGRAPH-2FA08;NFKC_CF=4BCE
-cp;2FA09;dm=29B30;na=CJK COMPATIBILITY IDEOGRAPH-2FA09;NFKC_CF=29B30
-cp;2FA0A;dm=9B12;na=CJK COMPATIBILITY IDEOGRAPH-2FA0A;NFKC_CF=9B12
-cp;2FA0B;dm=9C40;na=CJK COMPATIBILITY IDEOGRAPH-2FA0B;NFKC_CF=9C40
-cp;2FA0C;dm=9CFD;na=CJK COMPATIBILITY IDEOGRAPH-2FA0C;NFKC_CF=9CFD
-cp;2FA0D;dm=4CCE;na=CJK COMPATIBILITY IDEOGRAPH-2FA0D;NFKC_CF=4CCE
-cp;2FA0E;dm=4CED;na=CJK COMPATIBILITY IDEOGRAPH-2FA0E;NFKC_CF=4CED
-cp;2FA0F;dm=9D67;na=CJK COMPATIBILITY IDEOGRAPH-2FA0F;NFKC_CF=9D67
-cp;2FA10;dm=2A0CE;na=CJK COMPATIBILITY IDEOGRAPH-2FA10;NFKC_CF=2A0CE
-cp;2FA11;dm=4CF8;na=CJK COMPATIBILITY IDEOGRAPH-2FA11;NFKC_CF=4CF8
-cp;2FA12;dm=2A105;na=CJK COMPATIBILITY IDEOGRAPH-2FA12;NFKC_CF=2A105
-cp;2FA13;dm=2A20E;na=CJK COMPATIBILITY IDEOGRAPH-2FA13;NFKC_CF=2A20E
-cp;2FA14;dm=2A291;na=CJK COMPATIBILITY IDEOGRAPH-2FA14;NFKC_CF=2A291
-cp;2FA15;dm=9EBB;na=CJK COMPATIBILITY IDEOGRAPH-2FA15;NFKC_CF=9EBB
-cp;2FA16;dm=4D56;na=CJK COMPATIBILITY IDEOGRAPH-2FA16;NFKC_CF=4D56
-cp;2FA17;dm=9EF9;na=CJK COMPATIBILITY IDEOGRAPH-2FA17;NFKC_CF=9EF9
-cp;2FA18;dm=9EFE;na=CJK COMPATIBILITY IDEOGRAPH-2FA18;NFKC_CF=9EFE
-cp;2FA19;dm=9F05;na=CJK COMPATIBILITY IDEOGRAPH-2FA19;NFKC_CF=9F05
-cp;2FA1A;dm=9F0F;na=CJK COMPATIBILITY IDEOGRAPH-2FA1A;NFKC_CF=9F0F
-cp;2FA1B;dm=9F16;na=CJK COMPATIBILITY IDEOGRAPH-2FA1B;NFKC_CF=9F16
-cp;2FA1C;dm=9F3B;na=CJK COMPATIBILITY IDEOGRAPH-2FA1C;NFKC_CF=9F3B
-cp;2FA1D;dm=2A600;na=CJK COMPATIBILITY IDEOGRAPH-2FA1D;NFKC_CF=2A600
+cp;2F834;dm=20A2C;na=CJK COMPATIBILITY IDEOGRAPH-2F834;NFKC_CF=20A2C;NFKC_SCF=20A2C
+cp;2F835;dm=7070;na=CJK COMPATIBILITY IDEOGRAPH-2F835;NFKC_CF=7070;NFKC_SCF=7070
+cp;2F836;dm=53CA;na=CJK COMPATIBILITY IDEOGRAPH-2F836;NFKC_CF=53CA;NFKC_SCF=53CA
+cp;2F837;dm=53DF;na=CJK COMPATIBILITY IDEOGRAPH-2F837;NFKC_CF=53DF;NFKC_SCF=53DF
+cp;2F838;dm=20B63;na=CJK COMPATIBILITY IDEOGRAPH-2F838;NFKC_CF=20B63;NFKC_SCF=20B63
+cp;2F839;dm=53EB;na=CJK COMPATIBILITY IDEOGRAPH-2F839;NFKC_CF=53EB;NFKC_SCF=53EB
+cp;2F83A;dm=53F1;na=CJK COMPATIBILITY IDEOGRAPH-2F83A;NFKC_CF=53F1;NFKC_SCF=53F1
+cp;2F83B;dm=5406;na=CJK COMPATIBILITY IDEOGRAPH-2F83B;NFKC_CF=5406;NFKC_SCF=5406
+cp;2F83C;dm=549E;na=CJK COMPATIBILITY IDEOGRAPH-2F83C;NFKC_CF=549E;NFKC_SCF=549E
+cp;2F83D;dm=5438;na=CJK COMPATIBILITY IDEOGRAPH-2F83D;NFKC_CF=5438;NFKC_SCF=5438
+cp;2F83E;dm=5448;na=CJK COMPATIBILITY IDEOGRAPH-2F83E;NFKC_CF=5448;NFKC_SCF=5448
+cp;2F83F;dm=5468;na=CJK COMPATIBILITY IDEOGRAPH-2F83F;NFKC_CF=5468;NFKC_SCF=5468
+cp;2F840;dm=54A2;na=CJK COMPATIBILITY IDEOGRAPH-2F840;NFKC_CF=54A2;NFKC_SCF=54A2
+cp;2F841;dm=54F6;na=CJK COMPATIBILITY IDEOGRAPH-2F841;NFKC_CF=54F6;NFKC_SCF=54F6
+cp;2F842;dm=5510;na=CJK COMPATIBILITY IDEOGRAPH-2F842;NFKC_CF=5510;NFKC_SCF=5510
+cp;2F843;dm=5553;na=CJK COMPATIBILITY IDEOGRAPH-2F843;NFKC_CF=5553;NFKC_SCF=5553
+cp;2F844;dm=5563;na=CJK COMPATIBILITY IDEOGRAPH-2F844;NFKC_CF=5563;NFKC_SCF=5563
+cp;2F845;dm=5584;na=CJK COMPATIBILITY IDEOGRAPH-2F845;NFKC_CF=5584;NFKC_SCF=5584
+cp;2F846;dm=5584;na=CJK COMPATIBILITY IDEOGRAPH-2F846;NFKC_CF=5584;NFKC_SCF=5584
+cp;2F847;dm=5599;na=CJK COMPATIBILITY IDEOGRAPH-2F847;NFKC_CF=5599;NFKC_SCF=5599
+cp;2F848;dm=55AB;na=CJK COMPATIBILITY IDEOGRAPH-2F848;NFKC_CF=55AB;NFKC_SCF=55AB
+cp;2F849;dm=55B3;na=CJK COMPATIBILITY IDEOGRAPH-2F849;NFKC_CF=55B3;NFKC_SCF=55B3
+cp;2F84A;dm=55C2;na=CJK COMPATIBILITY IDEOGRAPH-2F84A;NFKC_CF=55C2;NFKC_SCF=55C2
+cp;2F84B;dm=5716;na=CJK COMPATIBILITY IDEOGRAPH-2F84B;NFKC_CF=5716;NFKC_SCF=5716
+cp;2F84C;dm=5606;na=CJK COMPATIBILITY IDEOGRAPH-2F84C;NFKC_CF=5606;NFKC_SCF=5606
+cp;2F84D;dm=5717;na=CJK COMPATIBILITY IDEOGRAPH-2F84D;NFKC_CF=5717;NFKC_SCF=5717
+cp;2F84E;dm=5651;na=CJK COMPATIBILITY IDEOGRAPH-2F84E;NFKC_CF=5651;NFKC_SCF=5651
+cp;2F84F;dm=5674;na=CJK COMPATIBILITY IDEOGRAPH-2F84F;NFKC_CF=5674;NFKC_SCF=5674
+cp;2F850;dm=5207;na=CJK COMPATIBILITY IDEOGRAPH-2F850;NFKC_CF=5207;NFKC_SCF=5207
+cp;2F851;dm=58EE;na=CJK COMPATIBILITY IDEOGRAPH-2F851;NFKC_CF=58EE;NFKC_SCF=58EE
+cp;2F852;dm=57CE;na=CJK COMPATIBILITY IDEOGRAPH-2F852;NFKC_CF=57CE;NFKC_SCF=57CE
+cp;2F853;dm=57F4;na=CJK COMPATIBILITY IDEOGRAPH-2F853;NFKC_CF=57F4;NFKC_SCF=57F4
+cp;2F854;dm=580D;na=CJK COMPATIBILITY IDEOGRAPH-2F854;NFKC_CF=580D;NFKC_SCF=580D
+cp;2F855;dm=578B;na=CJK COMPATIBILITY IDEOGRAPH-2F855;NFKC_CF=578B;NFKC_SCF=578B
+cp;2F856;dm=5832;na=CJK COMPATIBILITY IDEOGRAPH-2F856;NFKC_CF=5832;NFKC_SCF=5832
+cp;2F857;dm=5831;na=CJK COMPATIBILITY IDEOGRAPH-2F857;NFKC_CF=5831;NFKC_SCF=5831
+cp;2F858;dm=58AC;na=CJK COMPATIBILITY IDEOGRAPH-2F858;NFKC_CF=58AC;NFKC_SCF=58AC
+cp;2F859;dm=214E4;na=CJK COMPATIBILITY IDEOGRAPH-2F859;NFKC_CF=214E4;NFKC_SCF=214E4
+cp;2F85A;dm=58F2;na=CJK COMPATIBILITY IDEOGRAPH-2F85A;NFKC_CF=58F2;NFKC_SCF=58F2
+cp;2F85B;dm=58F7;na=CJK COMPATIBILITY IDEOGRAPH-2F85B;NFKC_CF=58F7;NFKC_SCF=58F7
+cp;2F85C;dm=5906;na=CJK COMPATIBILITY IDEOGRAPH-2F85C;NFKC_CF=5906;NFKC_SCF=5906
+cp;2F85D;dm=591A;na=CJK COMPATIBILITY IDEOGRAPH-2F85D;NFKC_CF=591A;NFKC_SCF=591A
+cp;2F85E;dm=5922;na=CJK COMPATIBILITY IDEOGRAPH-2F85E;NFKC_CF=5922;NFKC_SCF=5922
+cp;2F85F;dm=5962;na=CJK COMPATIBILITY IDEOGRAPH-2F85F;NFKC_CF=5962;NFKC_SCF=5962
+cp;2F860;dm=216A8;na=CJK COMPATIBILITY IDEOGRAPH-2F860;NFKC_CF=216A8;NFKC_SCF=216A8
+cp;2F861;dm=216EA;na=CJK COMPATIBILITY IDEOGRAPH-2F861;NFKC_CF=216EA;NFKC_SCF=216EA
+cp;2F862;dm=59EC;na=CJK COMPATIBILITY IDEOGRAPH-2F862;NFKC_CF=59EC;NFKC_SCF=59EC
+cp;2F863;dm=5A1B;na=CJK COMPATIBILITY IDEOGRAPH-2F863;NFKC_CF=5A1B;NFKC_SCF=5A1B
+cp;2F864;dm=5A27;na=CJK COMPATIBILITY IDEOGRAPH-2F864;NFKC_CF=5A27;NFKC_SCF=5A27
+cp;2F865;dm=59D8;na=CJK COMPATIBILITY IDEOGRAPH-2F865;NFKC_CF=59D8;NFKC_SCF=59D8
+cp;2F866;dm=5A66;na=CJK COMPATIBILITY IDEOGRAPH-2F866;NFKC_CF=5A66;NFKC_SCF=5A66
+cp;2F867;dm=36EE;na=CJK COMPATIBILITY IDEOGRAPH-2F867;NFKC_CF=36EE;NFKC_SCF=36EE
+cp;2F868;dm=36FC;na=CJK COMPATIBILITY IDEOGRAPH-2F868;NFKC_CF=36FC;NFKC_SCF=36FC
+cp;2F869;dm=5B08;na=CJK COMPATIBILITY IDEOGRAPH-2F869;NFKC_CF=5B08;NFKC_SCF=5B08
+cp;2F86A;dm=5B3E;na=CJK COMPATIBILITY IDEOGRAPH-2F86A;NFKC_CF=5B3E;NFKC_SCF=5B3E
+cp;2F86B;dm=5B3E;na=CJK COMPATIBILITY IDEOGRAPH-2F86B;NFKC_CF=5B3E;NFKC_SCF=5B3E
+cp;2F86C;dm=219C8;na=CJK COMPATIBILITY IDEOGRAPH-2F86C;NFKC_CF=219C8;NFKC_SCF=219C8
+cp;2F86D;dm=5BC3;na=CJK COMPATIBILITY IDEOGRAPH-2F86D;NFKC_CF=5BC3;NFKC_SCF=5BC3
+cp;2F86E;dm=5BD8;na=CJK COMPATIBILITY IDEOGRAPH-2F86E;NFKC_CF=5BD8;NFKC_SCF=5BD8
+cp;2F86F;dm=5BE7;na=CJK COMPATIBILITY IDEOGRAPH-2F86F;NFKC_CF=5BE7;NFKC_SCF=5BE7
+cp;2F870;dm=5BF3;na=CJK COMPATIBILITY IDEOGRAPH-2F870;NFKC_CF=5BF3;NFKC_SCF=5BF3
+cp;2F871;dm=21B18;na=CJK COMPATIBILITY IDEOGRAPH-2F871;NFKC_CF=21B18;NFKC_SCF=21B18
+cp;2F872;dm=5BFF;na=CJK COMPATIBILITY IDEOGRAPH-2F872;NFKC_CF=5BFF;NFKC_SCF=5BFF
+cp;2F873;dm=5C06;na=CJK COMPATIBILITY IDEOGRAPH-2F873;NFKC_CF=5C06;NFKC_SCF=5C06
+cp;2F874;dm=5F53;na=CJK COMPATIBILITY IDEOGRAPH-2F874;NFKC_CF=5F53;NFKC_SCF=5F53
+cp;2F875;dm=5C22;na=CJK COMPATIBILITY IDEOGRAPH-2F875;NFKC_CF=5C22;NFKC_SCF=5C22
+cp;2F876;dm=3781;na=CJK COMPATIBILITY IDEOGRAPH-2F876;NFKC_CF=3781;NFKC_SCF=3781
+cp;2F877;dm=5C60;na=CJK COMPATIBILITY IDEOGRAPH-2F877;NFKC_CF=5C60;NFKC_SCF=5C60
+cp;2F878;dm=5C6E;na=CJK COMPATIBILITY IDEOGRAPH-2F878;NFKC_CF=5C6E;NFKC_SCF=5C6E
+cp;2F879;dm=5CC0;na=CJK COMPATIBILITY IDEOGRAPH-2F879;NFKC_CF=5CC0;NFKC_SCF=5CC0
+cp;2F87A;dm=5C8D;na=CJK COMPATIBILITY IDEOGRAPH-2F87A;NFKC_CF=5C8D;NFKC_SCF=5C8D
+cp;2F87B;dm=21DE4;na=CJK COMPATIBILITY IDEOGRAPH-2F87B;NFKC_CF=21DE4;NFKC_SCF=21DE4
+cp;2F87C;dm=5D43;na=CJK COMPATIBILITY IDEOGRAPH-2F87C;NFKC_CF=5D43;NFKC_SCF=5D43
+cp;2F87D;dm=21DE6;na=CJK COMPATIBILITY IDEOGRAPH-2F87D;NFKC_CF=21DE6;NFKC_SCF=21DE6
+cp;2F87E;dm=5D6E;na=CJK COMPATIBILITY IDEOGRAPH-2F87E;NFKC_CF=5D6E;NFKC_SCF=5D6E
+cp;2F87F;dm=5D6B;na=CJK COMPATIBILITY IDEOGRAPH-2F87F;NFKC_CF=5D6B;NFKC_SCF=5D6B
+cp;2F880;dm=5D7C;na=CJK COMPATIBILITY IDEOGRAPH-2F880;NFKC_CF=5D7C;NFKC_SCF=5D7C
+cp;2F881;dm=5DE1;na=CJK COMPATIBILITY IDEOGRAPH-2F881;NFKC_CF=5DE1;NFKC_SCF=5DE1
+cp;2F882;dm=5DE2;na=CJK COMPATIBILITY IDEOGRAPH-2F882;NFKC_CF=5DE2;NFKC_SCF=5DE2
+cp;2F883;dm=382F;na=CJK COMPATIBILITY IDEOGRAPH-2F883;NFKC_CF=382F;NFKC_SCF=382F
+cp;2F884;dm=5DFD;na=CJK COMPATIBILITY IDEOGRAPH-2F884;NFKC_CF=5DFD;NFKC_SCF=5DFD
+cp;2F885;dm=5E28;na=CJK COMPATIBILITY IDEOGRAPH-2F885;NFKC_CF=5E28;NFKC_SCF=5E28
+cp;2F886;dm=5E3D;na=CJK COMPATIBILITY IDEOGRAPH-2F886;NFKC_CF=5E3D;NFKC_SCF=5E3D
+cp;2F887;dm=5E69;na=CJK COMPATIBILITY IDEOGRAPH-2F887;NFKC_CF=5E69;NFKC_SCF=5E69
+cp;2F888;dm=3862;na=CJK COMPATIBILITY IDEOGRAPH-2F888;NFKC_CF=3862;NFKC_SCF=3862
+cp;2F889;dm=22183;na=CJK COMPATIBILITY IDEOGRAPH-2F889;NFKC_CF=22183;NFKC_SCF=22183
+cp;2F88A;dm=387C;na=CJK COMPATIBILITY IDEOGRAPH-2F88A;NFKC_CF=387C;NFKC_SCF=387C
+cp;2F88B;dm=5EB0;na=CJK COMPATIBILITY IDEOGRAPH-2F88B;NFKC_CF=5EB0;NFKC_SCF=5EB0
+cp;2F88C;dm=5EB3;na=CJK COMPATIBILITY IDEOGRAPH-2F88C;NFKC_CF=5EB3;NFKC_SCF=5EB3
+cp;2F88D;dm=5EB6;na=CJK COMPATIBILITY IDEOGRAPH-2F88D;NFKC_CF=5EB6;NFKC_SCF=5EB6
+cp;2F88E;dm=5ECA;na=CJK COMPATIBILITY IDEOGRAPH-2F88E;NFKC_CF=5ECA;NFKC_SCF=5ECA
+cp;2F88F;dm=2A392;na=CJK COMPATIBILITY IDEOGRAPH-2F88F;NFKC_CF=2A392;NFKC_SCF=2A392
+cp;2F890;dm=5EFE;na=CJK COMPATIBILITY IDEOGRAPH-2F890;NFKC_CF=5EFE;NFKC_SCF=5EFE;nt=Nu;nv=9
+cp;2F891;dm=22331;na=CJK COMPATIBILITY IDEOGRAPH-2F891;NFKC_CF=22331;NFKC_SCF=22331
+cp;2F892;dm=22331;na=CJK COMPATIBILITY IDEOGRAPH-2F892;NFKC_CF=22331;NFKC_SCF=22331
+cp;2F893;dm=8201;na=CJK COMPATIBILITY IDEOGRAPH-2F893;NFKC_CF=8201;NFKC_SCF=8201
+cp;2F894;dm=5F22;na=CJK COMPATIBILITY IDEOGRAPH-2F894;NFKC_CF=5F22;NFKC_SCF=5F22
+cp;2F895;dm=5F22;na=CJK COMPATIBILITY IDEOGRAPH-2F895;NFKC_CF=5F22;NFKC_SCF=5F22
+cp;2F896;dm=38C7;na=CJK COMPATIBILITY IDEOGRAPH-2F896;NFKC_CF=38C7;NFKC_SCF=38C7
+cp;2F897;dm=232B8;na=CJK COMPATIBILITY IDEOGRAPH-2F897;NFKC_CF=232B8;NFKC_SCF=232B8
+cp;2F898;dm=261DA;na=CJK COMPATIBILITY IDEOGRAPH-2F898;NFKC_CF=261DA;NFKC_SCF=261DA
+cp;2F899;dm=5F62;na=CJK COMPATIBILITY IDEOGRAPH-2F899;NFKC_CF=5F62;NFKC_SCF=5F62
+cp;2F89A;dm=5F6B;na=CJK COMPATIBILITY IDEOGRAPH-2F89A;NFKC_CF=5F6B;NFKC_SCF=5F6B
+cp;2F89B;dm=38E3;na=CJK COMPATIBILITY IDEOGRAPH-2F89B;NFKC_CF=38E3;NFKC_SCF=38E3
+cp;2F89C;dm=5F9A;na=CJK COMPATIBILITY IDEOGRAPH-2F89C;NFKC_CF=5F9A;NFKC_SCF=5F9A
+cp;2F89D;dm=5FCD;na=CJK COMPATIBILITY IDEOGRAPH-2F89D;NFKC_CF=5FCD;NFKC_SCF=5FCD
+cp;2F89E;dm=5FD7;na=CJK COMPATIBILITY IDEOGRAPH-2F89E;NFKC_CF=5FD7;NFKC_SCF=5FD7
+cp;2F89F;dm=5FF9;na=CJK COMPATIBILITY IDEOGRAPH-2F89F;NFKC_CF=5FF9;NFKC_SCF=5FF9
+cp;2F8A0;dm=6081;na=CJK COMPATIBILITY IDEOGRAPH-2F8A0;NFKC_CF=6081;NFKC_SCF=6081
+cp;2F8A1;dm=393A;na=CJK COMPATIBILITY IDEOGRAPH-2F8A1;NFKC_CF=393A;NFKC_SCF=393A
+cp;2F8A2;dm=391C;na=CJK COMPATIBILITY IDEOGRAPH-2F8A2;NFKC_CF=391C;NFKC_SCF=391C
+cp;2F8A3;dm=6094;na=CJK COMPATIBILITY IDEOGRAPH-2F8A3;NFKC_CF=6094;NFKC_SCF=6094
+cp;2F8A4;dm=226D4;na=CJK COMPATIBILITY IDEOGRAPH-2F8A4;NFKC_CF=226D4;NFKC_SCF=226D4
+cp;2F8A5;dm=60C7;na=CJK COMPATIBILITY IDEOGRAPH-2F8A5;NFKC_CF=60C7;NFKC_SCF=60C7
+cp;2F8A6;dm=6148;na=CJK COMPATIBILITY IDEOGRAPH-2F8A6;NFKC_CF=6148;NFKC_SCF=6148
+cp;2F8A7;dm=614C;na=CJK COMPATIBILITY IDEOGRAPH-2F8A7;NFKC_CF=614C;NFKC_SCF=614C
+cp;2F8A8;dm=614E;na=CJK COMPATIBILITY IDEOGRAPH-2F8A8;NFKC_CF=614E;NFKC_SCF=614E
+cp;2F8A9;dm=614C;na=CJK COMPATIBILITY IDEOGRAPH-2F8A9;NFKC_CF=614C;NFKC_SCF=614C
+cp;2F8AA;dm=617A;na=CJK COMPATIBILITY IDEOGRAPH-2F8AA;NFKC_CF=617A;NFKC_SCF=617A
+cp;2F8AB;dm=618E;na=CJK COMPATIBILITY IDEOGRAPH-2F8AB;NFKC_CF=618E;NFKC_SCF=618E
+cp;2F8AC;dm=61B2;na=CJK COMPATIBILITY IDEOGRAPH-2F8AC;NFKC_CF=61B2;NFKC_SCF=61B2
+cp;2F8AD;dm=61A4;na=CJK COMPATIBILITY IDEOGRAPH-2F8AD;NFKC_CF=61A4;NFKC_SCF=61A4
+cp;2F8AE;dm=61AF;na=CJK COMPATIBILITY IDEOGRAPH-2F8AE;NFKC_CF=61AF;NFKC_SCF=61AF
+cp;2F8AF;dm=61DE;na=CJK COMPATIBILITY IDEOGRAPH-2F8AF;NFKC_CF=61DE;NFKC_SCF=61DE
+cp;2F8B0;dm=61F2;na=CJK COMPATIBILITY IDEOGRAPH-2F8B0;NFKC_CF=61F2;NFKC_SCF=61F2
+cp;2F8B1;dm=61F6;na=CJK COMPATIBILITY IDEOGRAPH-2F8B1;NFKC_CF=61F6;NFKC_SCF=61F6
+cp;2F8B2;dm=6210;na=CJK COMPATIBILITY IDEOGRAPH-2F8B2;NFKC_CF=6210;NFKC_SCF=6210
+cp;2F8B3;dm=621B;na=CJK COMPATIBILITY IDEOGRAPH-2F8B3;NFKC_CF=621B;NFKC_SCF=621B
+cp;2F8B4;dm=625D;na=CJK COMPATIBILITY IDEOGRAPH-2F8B4;NFKC_CF=625D;NFKC_SCF=625D
+cp;2F8B5;dm=62B1;na=CJK COMPATIBILITY IDEOGRAPH-2F8B5;NFKC_CF=62B1;NFKC_SCF=62B1
+cp;2F8B6;dm=62D4;na=CJK COMPATIBILITY IDEOGRAPH-2F8B6;NFKC_CF=62D4;NFKC_SCF=62D4
+cp;2F8B7;dm=6350;na=CJK COMPATIBILITY IDEOGRAPH-2F8B7;NFKC_CF=6350;NFKC_SCF=6350
+cp;2F8B8;dm=22B0C;na=CJK COMPATIBILITY IDEOGRAPH-2F8B8;NFKC_CF=22B0C;NFKC_SCF=22B0C
+cp;2F8B9;dm=633D;na=CJK COMPATIBILITY IDEOGRAPH-2F8B9;NFKC_CF=633D;NFKC_SCF=633D
+cp;2F8BA;dm=62FC;na=CJK COMPATIBILITY IDEOGRAPH-2F8BA;NFKC_CF=62FC;NFKC_SCF=62FC
+cp;2F8BB;dm=6368;na=CJK COMPATIBILITY IDEOGRAPH-2F8BB;NFKC_CF=6368;NFKC_SCF=6368
+cp;2F8BC;dm=6383;na=CJK COMPATIBILITY IDEOGRAPH-2F8BC;NFKC_CF=6383;NFKC_SCF=6383
+cp;2F8BD;dm=63E4;na=CJK COMPATIBILITY IDEOGRAPH-2F8BD;NFKC_CF=63E4;NFKC_SCF=63E4
+cp;2F8BE;dm=22BF1;na=CJK COMPATIBILITY IDEOGRAPH-2F8BE;NFKC_CF=22BF1;NFKC_SCF=22BF1
+cp;2F8BF;dm=6422;na=CJK COMPATIBILITY IDEOGRAPH-2F8BF;NFKC_CF=6422;NFKC_SCF=6422
+cp;2F8C0;dm=63C5;na=CJK COMPATIBILITY IDEOGRAPH-2F8C0;NFKC_CF=63C5;NFKC_SCF=63C5
+cp;2F8C1;dm=63A9;na=CJK COMPATIBILITY IDEOGRAPH-2F8C1;NFKC_CF=63A9;NFKC_SCF=63A9
+cp;2F8C2;dm=3A2E;na=CJK COMPATIBILITY IDEOGRAPH-2F8C2;NFKC_CF=3A2E;NFKC_SCF=3A2E
+cp;2F8C3;dm=6469;na=CJK COMPATIBILITY IDEOGRAPH-2F8C3;NFKC_CF=6469;NFKC_SCF=6469
+cp;2F8C4;dm=647E;na=CJK COMPATIBILITY IDEOGRAPH-2F8C4;NFKC_CF=647E;NFKC_SCF=647E
+cp;2F8C5;dm=649D;na=CJK COMPATIBILITY IDEOGRAPH-2F8C5;NFKC_CF=649D;NFKC_SCF=649D
+cp;2F8C6;dm=6477;na=CJK COMPATIBILITY IDEOGRAPH-2F8C6;NFKC_CF=6477;NFKC_SCF=6477
+cp;2F8C7;dm=3A6C;na=CJK COMPATIBILITY IDEOGRAPH-2F8C7;NFKC_CF=3A6C;NFKC_SCF=3A6C
+cp;2F8C8;dm=654F;na=CJK COMPATIBILITY IDEOGRAPH-2F8C8;NFKC_CF=654F;NFKC_SCF=654F
+cp;2F8C9;dm=656C;na=CJK COMPATIBILITY IDEOGRAPH-2F8C9;NFKC_CF=656C;NFKC_SCF=656C
+cp;2F8CA;dm=2300A;na=CJK COMPATIBILITY IDEOGRAPH-2F8CA;NFKC_CF=2300A;NFKC_SCF=2300A
+cp;2F8CB;dm=65E3;na=CJK COMPATIBILITY IDEOGRAPH-2F8CB;NFKC_CF=65E3;NFKC_SCF=65E3
+cp;2F8CC;dm=66F8;na=CJK COMPATIBILITY IDEOGRAPH-2F8CC;NFKC_CF=66F8;NFKC_SCF=66F8
+cp;2F8CD;dm=6649;na=CJK COMPATIBILITY IDEOGRAPH-2F8CD;NFKC_CF=6649;NFKC_SCF=6649
+cp;2F8CE;dm=3B19;na=CJK COMPATIBILITY IDEOGRAPH-2F8CE;NFKC_CF=3B19;NFKC_SCF=3B19
+cp;2F8CF;dm=6691;na=CJK COMPATIBILITY IDEOGRAPH-2F8CF;NFKC_CF=6691;NFKC_SCF=6691
+cp;2F8D0;dm=3B08;na=CJK COMPATIBILITY IDEOGRAPH-2F8D0;NFKC_CF=3B08;NFKC_SCF=3B08
+cp;2F8D1;dm=3AE4;na=CJK COMPATIBILITY IDEOGRAPH-2F8D1;NFKC_CF=3AE4;NFKC_SCF=3AE4
+cp;2F8D2;dm=5192;na=CJK COMPATIBILITY IDEOGRAPH-2F8D2;NFKC_CF=5192;NFKC_SCF=5192
+cp;2F8D3;dm=5195;na=CJK COMPATIBILITY IDEOGRAPH-2F8D3;NFKC_CF=5195;NFKC_SCF=5195
+cp;2F8D4;dm=6700;na=CJK COMPATIBILITY IDEOGRAPH-2F8D4;NFKC_CF=6700;NFKC_SCF=6700
+cp;2F8D5;dm=669C;na=CJK COMPATIBILITY IDEOGRAPH-2F8D5;NFKC_CF=669C;NFKC_SCF=669C
+cp;2F8D6;dm=80AD;na=CJK COMPATIBILITY IDEOGRAPH-2F8D6;NFKC_CF=80AD;NFKC_SCF=80AD
+cp;2F8D7;dm=43D9;na=CJK COMPATIBILITY IDEOGRAPH-2F8D7;NFKC_CF=43D9;NFKC_SCF=43D9
+cp;2F8D8;dm=6717;na=CJK COMPATIBILITY IDEOGRAPH-2F8D8;NFKC_CF=6717;NFKC_SCF=6717
+cp;2F8D9;dm=671B;na=CJK COMPATIBILITY IDEOGRAPH-2F8D9;NFKC_CF=671B;NFKC_SCF=671B
+cp;2F8DA;dm=6721;na=CJK COMPATIBILITY IDEOGRAPH-2F8DA;NFKC_CF=6721;NFKC_SCF=6721
+cp;2F8DB;dm=675E;na=CJK COMPATIBILITY IDEOGRAPH-2F8DB;NFKC_CF=675E;NFKC_SCF=675E
+cp;2F8DC;dm=6753;na=CJK COMPATIBILITY IDEOGRAPH-2F8DC;NFKC_CF=6753;NFKC_SCF=6753
+cp;2F8DD;dm=233C3;na=CJK COMPATIBILITY IDEOGRAPH-2F8DD;NFKC_CF=233C3;NFKC_SCF=233C3
+cp;2F8DE;dm=3B49;na=CJK COMPATIBILITY IDEOGRAPH-2F8DE;NFKC_CF=3B49;NFKC_SCF=3B49
+cp;2F8DF;dm=67FA;na=CJK COMPATIBILITY IDEOGRAPH-2F8DF;NFKC_CF=67FA;NFKC_SCF=67FA
+cp;2F8E0;dm=6785;na=CJK COMPATIBILITY IDEOGRAPH-2F8E0;NFKC_CF=6785;NFKC_SCF=6785
+cp;2F8E1;dm=6852;na=CJK COMPATIBILITY IDEOGRAPH-2F8E1;NFKC_CF=6852;NFKC_SCF=6852
+cp;2F8E2;dm=6885;na=CJK COMPATIBILITY IDEOGRAPH-2F8E2;NFKC_CF=6885;NFKC_SCF=6885
+cp;2F8E3;dm=2346D;na=CJK COMPATIBILITY IDEOGRAPH-2F8E3;NFKC_CF=2346D;NFKC_SCF=2346D
+cp;2F8E4;dm=688E;na=CJK COMPATIBILITY IDEOGRAPH-2F8E4;NFKC_CF=688E;NFKC_SCF=688E
+cp;2F8E5;dm=681F;na=CJK COMPATIBILITY IDEOGRAPH-2F8E5;NFKC_CF=681F;NFKC_SCF=681F
+cp;2F8E6;dm=6914;na=CJK COMPATIBILITY IDEOGRAPH-2F8E6;NFKC_CF=6914;NFKC_SCF=6914
+cp;2F8E7;dm=3B9D;na=CJK COMPATIBILITY IDEOGRAPH-2F8E7;NFKC_CF=3B9D;NFKC_SCF=3B9D
+cp;2F8E8;dm=6942;na=CJK COMPATIBILITY IDEOGRAPH-2F8E8;NFKC_CF=6942;NFKC_SCF=6942
+cp;2F8E9;dm=69A3;na=CJK COMPATIBILITY IDEOGRAPH-2F8E9;NFKC_CF=69A3;NFKC_SCF=69A3
+cp;2F8EA;dm=69EA;na=CJK COMPATIBILITY IDEOGRAPH-2F8EA;NFKC_CF=69EA;NFKC_SCF=69EA
+cp;2F8EB;dm=6AA8;na=CJK COMPATIBILITY IDEOGRAPH-2F8EB;NFKC_CF=6AA8;NFKC_SCF=6AA8
+cp;2F8EC;dm=236A3;na=CJK COMPATIBILITY IDEOGRAPH-2F8EC;NFKC_CF=236A3;NFKC_SCF=236A3
+cp;2F8ED;dm=6ADB;na=CJK COMPATIBILITY IDEOGRAPH-2F8ED;NFKC_CF=6ADB;NFKC_SCF=6ADB
+cp;2F8EE;dm=3C18;na=CJK COMPATIBILITY IDEOGRAPH-2F8EE;NFKC_CF=3C18;NFKC_SCF=3C18
+cp;2F8EF;dm=6B21;na=CJK COMPATIBILITY IDEOGRAPH-2F8EF;NFKC_CF=6B21;NFKC_SCF=6B21
+cp;2F8F0;dm=238A7;na=CJK COMPATIBILITY IDEOGRAPH-2F8F0;NFKC_CF=238A7;NFKC_SCF=238A7
+cp;2F8F1;dm=6B54;na=CJK COMPATIBILITY IDEOGRAPH-2F8F1;NFKC_CF=6B54;NFKC_SCF=6B54
+cp;2F8F2;dm=3C4E;na=CJK COMPATIBILITY IDEOGRAPH-2F8F2;NFKC_CF=3C4E;NFKC_SCF=3C4E
+cp;2F8F3;dm=6B72;na=CJK COMPATIBILITY IDEOGRAPH-2F8F3;NFKC_CF=6B72;NFKC_SCF=6B72
+cp;2F8F4;dm=6B9F;na=CJK COMPATIBILITY IDEOGRAPH-2F8F4;NFKC_CF=6B9F;NFKC_SCF=6B9F
+cp;2F8F5;dm=6BBA;na=CJK COMPATIBILITY IDEOGRAPH-2F8F5;NFKC_CF=6BBA;NFKC_SCF=6BBA
+cp;2F8F6;dm=6BBB;na=CJK COMPATIBILITY IDEOGRAPH-2F8F6;NFKC_CF=6BBB;NFKC_SCF=6BBB
+cp;2F8F7;dm=23A8D;na=CJK COMPATIBILITY IDEOGRAPH-2F8F7;NFKC_CF=23A8D;NFKC_SCF=23A8D
+cp;2F8F8;dm=21D0B;na=CJK COMPATIBILITY IDEOGRAPH-2F8F8;NFKC_CF=21D0B;NFKC_SCF=21D0B
+cp;2F8F9;dm=23AFA;na=CJK COMPATIBILITY IDEOGRAPH-2F8F9;NFKC_CF=23AFA;NFKC_SCF=23AFA
+cp;2F8FA;dm=6C4E;na=CJK COMPATIBILITY IDEOGRAPH-2F8FA;NFKC_CF=6C4E;NFKC_SCF=6C4E
+cp;2F8FB;dm=23CBC;na=CJK COMPATIBILITY IDEOGRAPH-2F8FB;NFKC_CF=23CBC;NFKC_SCF=23CBC
+cp;2F8FC;dm=6CBF;na=CJK COMPATIBILITY IDEOGRAPH-2F8FC;NFKC_CF=6CBF;NFKC_SCF=6CBF
+cp;2F8FD;dm=6CCD;na=CJK COMPATIBILITY IDEOGRAPH-2F8FD;NFKC_CF=6CCD;NFKC_SCF=6CCD
+cp;2F8FE;dm=6C67;na=CJK COMPATIBILITY IDEOGRAPH-2F8FE;NFKC_CF=6C67;NFKC_SCF=6C67
+cp;2F8FF;dm=6D16;na=CJK COMPATIBILITY IDEOGRAPH-2F8FF;NFKC_CF=6D16;NFKC_SCF=6D16
+cp;2F900;dm=6D3E;na=CJK COMPATIBILITY IDEOGRAPH-2F900;NFKC_CF=6D3E;NFKC_SCF=6D3E
+cp;2F901;dm=6D77;na=CJK COMPATIBILITY IDEOGRAPH-2F901;NFKC_CF=6D77;NFKC_SCF=6D77
+cp;2F902;dm=6D41;na=CJK COMPATIBILITY IDEOGRAPH-2F902;NFKC_CF=6D41;NFKC_SCF=6D41
+cp;2F903;dm=6D69;na=CJK COMPATIBILITY IDEOGRAPH-2F903;NFKC_CF=6D69;NFKC_SCF=6D69
+cp;2F904;dm=6D78;na=CJK COMPATIBILITY IDEOGRAPH-2F904;NFKC_CF=6D78;NFKC_SCF=6D78
+cp;2F905;dm=6D85;na=CJK COMPATIBILITY IDEOGRAPH-2F905;NFKC_CF=6D85;NFKC_SCF=6D85
+cp;2F906;dm=23D1E;na=CJK COMPATIBILITY IDEOGRAPH-2F906;NFKC_CF=23D1E;NFKC_SCF=23D1E
+cp;2F907;dm=6D34;na=CJK COMPATIBILITY IDEOGRAPH-2F907;NFKC_CF=6D34;NFKC_SCF=6D34
+cp;2F908;dm=6E2F;na=CJK COMPATIBILITY IDEOGRAPH-2F908;NFKC_CF=6E2F;NFKC_SCF=6E2F
+cp;2F909;dm=6E6E;na=CJK COMPATIBILITY IDEOGRAPH-2F909;NFKC_CF=6E6E;NFKC_SCF=6E6E
+cp;2F90A;dm=3D33;na=CJK COMPATIBILITY IDEOGRAPH-2F90A;NFKC_CF=3D33;NFKC_SCF=3D33
+cp;2F90B;dm=6ECB;na=CJK COMPATIBILITY IDEOGRAPH-2F90B;NFKC_CF=6ECB;NFKC_SCF=6ECB
+cp;2F90C;dm=6EC7;na=CJK COMPATIBILITY IDEOGRAPH-2F90C;NFKC_CF=6EC7;NFKC_SCF=6EC7
+cp;2F90D;dm=23ED1;na=CJK COMPATIBILITY IDEOGRAPH-2F90D;NFKC_CF=23ED1;NFKC_SCF=23ED1
+cp;2F90E;dm=6DF9;na=CJK COMPATIBILITY IDEOGRAPH-2F90E;NFKC_CF=6DF9;NFKC_SCF=6DF9
+cp;2F90F;dm=6F6E;na=CJK COMPATIBILITY IDEOGRAPH-2F90F;NFKC_CF=6F6E;NFKC_SCF=6F6E
+cp;2F910;dm=23F5E;na=CJK COMPATIBILITY IDEOGRAPH-2F910;NFKC_CF=23F5E;NFKC_SCF=23F5E
+cp;2F911;dm=23F8E;na=CJK COMPATIBILITY IDEOGRAPH-2F911;NFKC_CF=23F8E;NFKC_SCF=23F8E
+cp;2F912;dm=6FC6;na=CJK COMPATIBILITY IDEOGRAPH-2F912;NFKC_CF=6FC6;NFKC_SCF=6FC6
+cp;2F913;dm=7039;na=CJK COMPATIBILITY IDEOGRAPH-2F913;NFKC_CF=7039;NFKC_SCF=7039
+cp;2F914;dm=701E;na=CJK COMPATIBILITY IDEOGRAPH-2F914;NFKC_CF=701E;NFKC_SCF=701E
+cp;2F915;dm=701B;na=CJK COMPATIBILITY IDEOGRAPH-2F915;NFKC_CF=701B;NFKC_SCF=701B
+cp;2F916;dm=3D96;na=CJK COMPATIBILITY IDEOGRAPH-2F916;NFKC_CF=3D96;NFKC_SCF=3D96
+cp;2F917;dm=704A;na=CJK COMPATIBILITY IDEOGRAPH-2F917;NFKC_CF=704A;NFKC_SCF=704A
+cp;2F918;dm=707D;na=CJK COMPATIBILITY IDEOGRAPH-2F918;NFKC_CF=707D;NFKC_SCF=707D
+cp;2F919;dm=7077;na=CJK COMPATIBILITY IDEOGRAPH-2F919;NFKC_CF=7077;NFKC_SCF=7077
+cp;2F91A;dm=70AD;na=CJK COMPATIBILITY IDEOGRAPH-2F91A;NFKC_CF=70AD;NFKC_SCF=70AD
+cp;2F91B;dm=20525;na=CJK COMPATIBILITY IDEOGRAPH-2F91B;NFKC_CF=20525;NFKC_SCF=20525
+cp;2F91C;dm=7145;na=CJK COMPATIBILITY IDEOGRAPH-2F91C;NFKC_CF=7145;NFKC_SCF=7145
+cp;2F91D;dm=24263;na=CJK COMPATIBILITY IDEOGRAPH-2F91D;NFKC_CF=24263;NFKC_SCF=24263
+cp;2F91E;dm=719C;na=CJK COMPATIBILITY IDEOGRAPH-2F91E;NFKC_CF=719C;NFKC_SCF=719C
+cp;2F91F;dm=243AB;na=CJK COMPATIBILITY IDEOGRAPH-2F91F;NFKC_CF=243AB;NFKC_SCF=243AB
+cp;2F920;dm=7228;na=CJK COMPATIBILITY IDEOGRAPH-2F920;NFKC_CF=7228;NFKC_SCF=7228
+cp;2F921;dm=7235;na=CJK COMPATIBILITY IDEOGRAPH-2F921;NFKC_CF=7235;NFKC_SCF=7235
+cp;2F922;dm=7250;na=CJK COMPATIBILITY IDEOGRAPH-2F922;NFKC_CF=7250;NFKC_SCF=7250
+cp;2F923;dm=24608;na=CJK COMPATIBILITY IDEOGRAPH-2F923;NFKC_CF=24608;NFKC_SCF=24608
+cp;2F924;dm=7280;na=CJK COMPATIBILITY IDEOGRAPH-2F924;NFKC_CF=7280;NFKC_SCF=7280
+cp;2F925;dm=7295;na=CJK COMPATIBILITY IDEOGRAPH-2F925;NFKC_CF=7295;NFKC_SCF=7295
+cp;2F926;dm=24735;na=CJK COMPATIBILITY IDEOGRAPH-2F926;NFKC_CF=24735;NFKC_SCF=24735
+cp;2F927;dm=24814;na=CJK COMPATIBILITY IDEOGRAPH-2F927;NFKC_CF=24814;NFKC_SCF=24814
+cp;2F928;dm=737A;na=CJK COMPATIBILITY IDEOGRAPH-2F928;NFKC_CF=737A;NFKC_SCF=737A
+cp;2F929;dm=738B;na=CJK COMPATIBILITY IDEOGRAPH-2F929;NFKC_CF=738B;NFKC_SCF=738B
+cp;2F92A;dm=3EAC;na=CJK COMPATIBILITY IDEOGRAPH-2F92A;NFKC_CF=3EAC;NFKC_SCF=3EAC
+cp;2F92B;dm=73A5;na=CJK COMPATIBILITY IDEOGRAPH-2F92B;NFKC_CF=73A5;NFKC_SCF=73A5
+cp;2F92C;dm=3EB8;na=CJK COMPATIBILITY IDEOGRAPH-2F92C;NFKC_CF=3EB8;NFKC_SCF=3EB8
+cp;2F92D;dm=3EB8;na=CJK COMPATIBILITY IDEOGRAPH-2F92D;NFKC_CF=3EB8;NFKC_SCF=3EB8
+cp;2F92E;dm=7447;na=CJK COMPATIBILITY IDEOGRAPH-2F92E;NFKC_CF=7447;NFKC_SCF=7447
+cp;2F92F;dm=745C;na=CJK COMPATIBILITY IDEOGRAPH-2F92F;NFKC_CF=745C;NFKC_SCF=745C
+cp;2F930;dm=7471;na=CJK COMPATIBILITY IDEOGRAPH-2F930;NFKC_CF=7471;NFKC_SCF=7471
+cp;2F931;dm=7485;na=CJK COMPATIBILITY IDEOGRAPH-2F931;NFKC_CF=7485;NFKC_SCF=7485
+cp;2F932;dm=74CA;na=CJK COMPATIBILITY IDEOGRAPH-2F932;NFKC_CF=74CA;NFKC_SCF=74CA
+cp;2F933;dm=3F1B;na=CJK COMPATIBILITY IDEOGRAPH-2F933;NFKC_CF=3F1B;NFKC_SCF=3F1B
+cp;2F934;dm=7524;na=CJK COMPATIBILITY IDEOGRAPH-2F934;NFKC_CF=7524;NFKC_SCF=7524
+cp;2F935;dm=24C36;na=CJK COMPATIBILITY IDEOGRAPH-2F935;NFKC_CF=24C36;NFKC_SCF=24C36
+cp;2F936;dm=753E;na=CJK COMPATIBILITY IDEOGRAPH-2F936;NFKC_CF=753E;NFKC_SCF=753E
+cp;2F937;dm=24C92;na=CJK COMPATIBILITY IDEOGRAPH-2F937;NFKC_CF=24C92;NFKC_SCF=24C92
+cp;2F938;dm=7570;na=CJK COMPATIBILITY IDEOGRAPH-2F938;NFKC_CF=7570;NFKC_SCF=7570
+cp;2F939;dm=2219F;na=CJK COMPATIBILITY IDEOGRAPH-2F939;NFKC_CF=2219F;NFKC_SCF=2219F
+cp;2F93A;dm=7610;na=CJK COMPATIBILITY IDEOGRAPH-2F93A;NFKC_CF=7610;NFKC_SCF=7610
+cp;2F93B;dm=24FA1;na=CJK COMPATIBILITY IDEOGRAPH-2F93B;NFKC_CF=24FA1;NFKC_SCF=24FA1
+cp;2F93C;dm=24FB8;na=CJK COMPATIBILITY IDEOGRAPH-2F93C;NFKC_CF=24FB8;NFKC_SCF=24FB8
+cp;2F93D;dm=25044;na=CJK COMPATIBILITY IDEOGRAPH-2F93D;NFKC_CF=25044;NFKC_SCF=25044
+cp;2F93E;dm=3FFC;na=CJK COMPATIBILITY IDEOGRAPH-2F93E;NFKC_CF=3FFC;NFKC_SCF=3FFC
+cp;2F93F;dm=4008;na=CJK COMPATIBILITY IDEOGRAPH-2F93F;NFKC_CF=4008;NFKC_SCF=4008
+cp;2F940;dm=76F4;na=CJK COMPATIBILITY IDEOGRAPH-2F940;NFKC_CF=76F4;NFKC_SCF=76F4
+cp;2F941;dm=250F3;na=CJK COMPATIBILITY IDEOGRAPH-2F941;NFKC_CF=250F3;NFKC_SCF=250F3
+cp;2F942;dm=250F2;na=CJK COMPATIBILITY IDEOGRAPH-2F942;NFKC_CF=250F2;NFKC_SCF=250F2
+cp;2F943;dm=25119;na=CJK COMPATIBILITY IDEOGRAPH-2F943;NFKC_CF=25119;NFKC_SCF=25119
+cp;2F944;dm=25133;na=CJK COMPATIBILITY IDEOGRAPH-2F944;NFKC_CF=25133;NFKC_SCF=25133
+cp;2F945;dm=771E;na=CJK COMPATIBILITY IDEOGRAPH-2F945;NFKC_CF=771E;NFKC_SCF=771E
+cp;2F946;dm=771F;na=CJK COMPATIBILITY IDEOGRAPH-2F946;NFKC_CF=771F;NFKC_SCF=771F
+cp;2F947;dm=771F;na=CJK COMPATIBILITY IDEOGRAPH-2F947;NFKC_CF=771F;NFKC_SCF=771F
+cp;2F948;dm=774A;na=CJK COMPATIBILITY IDEOGRAPH-2F948;NFKC_CF=774A;NFKC_SCF=774A
+cp;2F949;dm=4039;na=CJK COMPATIBILITY IDEOGRAPH-2F949;NFKC_CF=4039;NFKC_SCF=4039
+cp;2F94A;dm=778B;na=CJK COMPATIBILITY IDEOGRAPH-2F94A;NFKC_CF=778B;NFKC_SCF=778B
+cp;2F94B;dm=4046;na=CJK COMPATIBILITY IDEOGRAPH-2F94B;NFKC_CF=4046;NFKC_SCF=4046
+cp;2F94C;dm=4096;na=CJK COMPATIBILITY IDEOGRAPH-2F94C;NFKC_CF=4096;NFKC_SCF=4096
+cp;2F94D;dm=2541D;na=CJK COMPATIBILITY IDEOGRAPH-2F94D;NFKC_CF=2541D;NFKC_SCF=2541D
+cp;2F94E;dm=784E;na=CJK COMPATIBILITY IDEOGRAPH-2F94E;NFKC_CF=784E;NFKC_SCF=784E
+cp;2F94F;dm=788C;na=CJK COMPATIBILITY IDEOGRAPH-2F94F;NFKC_CF=788C;NFKC_SCF=788C
+cp;2F950;dm=78CC;na=CJK COMPATIBILITY IDEOGRAPH-2F950;NFKC_CF=78CC;NFKC_SCF=78CC
+cp;2F951;dm=40E3;na=CJK COMPATIBILITY IDEOGRAPH-2F951;NFKC_CF=40E3;NFKC_SCF=40E3
+cp;2F952;dm=25626;na=CJK COMPATIBILITY IDEOGRAPH-2F952;NFKC_CF=25626;NFKC_SCF=25626
+cp;2F953;dm=7956;na=CJK COMPATIBILITY IDEOGRAPH-2F953;NFKC_CF=7956;NFKC_SCF=7956
+cp;2F954;dm=2569A;na=CJK COMPATIBILITY IDEOGRAPH-2F954;NFKC_CF=2569A;NFKC_SCF=2569A
+cp;2F955;dm=256C5;na=CJK COMPATIBILITY IDEOGRAPH-2F955;NFKC_CF=256C5;NFKC_SCF=256C5
+cp;2F956;dm=798F;na=CJK COMPATIBILITY IDEOGRAPH-2F956;NFKC_CF=798F;NFKC_SCF=798F
+cp;2F957;dm=79EB;na=CJK COMPATIBILITY IDEOGRAPH-2F957;NFKC_CF=79EB;NFKC_SCF=79EB
+cp;2F958;dm=412F;na=CJK COMPATIBILITY IDEOGRAPH-2F958;NFKC_CF=412F;NFKC_SCF=412F
+cp;2F959;dm=7A40;na=CJK COMPATIBILITY IDEOGRAPH-2F959;NFKC_CF=7A40;NFKC_SCF=7A40
+cp;2F95A;dm=7A4A;na=CJK COMPATIBILITY IDEOGRAPH-2F95A;NFKC_CF=7A4A;NFKC_SCF=7A4A
+cp;2F95B;dm=7A4F;na=CJK COMPATIBILITY IDEOGRAPH-2F95B;NFKC_CF=7A4F;NFKC_SCF=7A4F
+cp;2F95C;dm=2597C;na=CJK COMPATIBILITY IDEOGRAPH-2F95C;NFKC_CF=2597C;NFKC_SCF=2597C
+cp;2F95D;dm=25AA7;na=CJK COMPATIBILITY IDEOGRAPH-2F95D;NFKC_CF=25AA7;NFKC_SCF=25AA7
+cp;2F95E;dm=25AA7;na=CJK COMPATIBILITY IDEOGRAPH-2F95E;NFKC_CF=25AA7;NFKC_SCF=25AA7
+cp;2F95F;dm=7AEE;na=CJK COMPATIBILITY IDEOGRAPH-2F95F;NFKC_CF=7AEE;NFKC_SCF=7AEE
+cp;2F960;dm=4202;na=CJK COMPATIBILITY IDEOGRAPH-2F960;NFKC_CF=4202;NFKC_SCF=4202
+cp;2F961;dm=25BAB;na=CJK COMPATIBILITY IDEOGRAPH-2F961;NFKC_CF=25BAB;NFKC_SCF=25BAB
+cp;2F962;dm=7BC6;na=CJK COMPATIBILITY IDEOGRAPH-2F962;NFKC_CF=7BC6;NFKC_SCF=7BC6
+cp;2F963;dm=7BC9;na=CJK COMPATIBILITY IDEOGRAPH-2F963;NFKC_CF=7BC9;NFKC_SCF=7BC9
+cp;2F964;dm=4227;na=CJK COMPATIBILITY IDEOGRAPH-2F964;NFKC_CF=4227;NFKC_SCF=4227
+cp;2F965;dm=25C80;na=CJK COMPATIBILITY IDEOGRAPH-2F965;NFKC_CF=25C80;NFKC_SCF=25C80
+cp;2F966;dm=7CD2;na=CJK COMPATIBILITY IDEOGRAPH-2F966;NFKC_CF=7CD2;NFKC_SCF=7CD2
+cp;2F967;dm=42A0;na=CJK COMPATIBILITY IDEOGRAPH-2F967;NFKC_CF=42A0;NFKC_SCF=42A0
+cp;2F968;dm=7CE8;na=CJK COMPATIBILITY IDEOGRAPH-2F968;NFKC_CF=7CE8;NFKC_SCF=7CE8
+cp;2F969;dm=7CE3;na=CJK COMPATIBILITY IDEOGRAPH-2F969;NFKC_CF=7CE3;NFKC_SCF=7CE3
+cp;2F96A;dm=7D00;na=CJK COMPATIBILITY IDEOGRAPH-2F96A;NFKC_CF=7D00;NFKC_SCF=7D00
+cp;2F96B;dm=25F86;na=CJK COMPATIBILITY IDEOGRAPH-2F96B;NFKC_CF=25F86;NFKC_SCF=25F86
+cp;2F96C;dm=7D63;na=CJK COMPATIBILITY IDEOGRAPH-2F96C;NFKC_CF=7D63;NFKC_SCF=7D63
+cp;2F96D;dm=4301;na=CJK COMPATIBILITY IDEOGRAPH-2F96D;NFKC_CF=4301;NFKC_SCF=4301
+cp;2F96E;dm=7DC7;na=CJK COMPATIBILITY IDEOGRAPH-2F96E;NFKC_CF=7DC7;NFKC_SCF=7DC7
+cp;2F96F;dm=7E02;na=CJK COMPATIBILITY IDEOGRAPH-2F96F;NFKC_CF=7E02;NFKC_SCF=7E02
+cp;2F970;dm=7E45;na=CJK COMPATIBILITY IDEOGRAPH-2F970;NFKC_CF=7E45;NFKC_SCF=7E45
+cp;2F971;dm=4334;na=CJK COMPATIBILITY IDEOGRAPH-2F971;NFKC_CF=4334;NFKC_SCF=4334
+cp;2F972;dm=26228;na=CJK COMPATIBILITY IDEOGRAPH-2F972;NFKC_CF=26228;NFKC_SCF=26228
+cp;2F973;dm=26247;na=CJK COMPATIBILITY IDEOGRAPH-2F973;NFKC_CF=26247;NFKC_SCF=26247
+cp;2F974;dm=4359;na=CJK COMPATIBILITY IDEOGRAPH-2F974;NFKC_CF=4359;NFKC_SCF=4359
+cp;2F975;dm=262D9;na=CJK COMPATIBILITY IDEOGRAPH-2F975;NFKC_CF=262D9;NFKC_SCF=262D9
+cp;2F976;dm=7F7A;na=CJK COMPATIBILITY IDEOGRAPH-2F976;NFKC_CF=7F7A;NFKC_SCF=7F7A
+cp;2F977;dm=2633E;na=CJK COMPATIBILITY IDEOGRAPH-2F977;NFKC_CF=2633E;NFKC_SCF=2633E
+cp;2F978;dm=7F95;na=CJK COMPATIBILITY IDEOGRAPH-2F978;NFKC_CF=7F95;NFKC_SCF=7F95
+cp;2F979;dm=7FFA;na=CJK COMPATIBILITY IDEOGRAPH-2F979;NFKC_CF=7FFA;NFKC_SCF=7FFA
+cp;2F97A;dm=8005;na=CJK COMPATIBILITY IDEOGRAPH-2F97A;NFKC_CF=8005;NFKC_SCF=8005
+cp;2F97B;dm=264DA;na=CJK COMPATIBILITY IDEOGRAPH-2F97B;NFKC_CF=264DA;NFKC_SCF=264DA
+cp;2F97C;dm=26523;na=CJK COMPATIBILITY IDEOGRAPH-2F97C;NFKC_CF=26523;NFKC_SCF=26523
+cp;2F97D;dm=8060;na=CJK COMPATIBILITY IDEOGRAPH-2F97D;NFKC_CF=8060;NFKC_SCF=8060
+cp;2F97E;dm=265A8;na=CJK COMPATIBILITY IDEOGRAPH-2F97E;NFKC_CF=265A8;NFKC_SCF=265A8
+cp;2F97F;dm=8070;na=CJK COMPATIBILITY IDEOGRAPH-2F97F;NFKC_CF=8070;NFKC_SCF=8070
+cp;2F980;dm=2335F;na=CJK COMPATIBILITY IDEOGRAPH-2F980;NFKC_CF=2335F;NFKC_SCF=2335F
+cp;2F981;dm=43D5;na=CJK COMPATIBILITY IDEOGRAPH-2F981;NFKC_CF=43D5;NFKC_SCF=43D5
+cp;2F982;dm=80B2;na=CJK COMPATIBILITY IDEOGRAPH-2F982;NFKC_CF=80B2;NFKC_SCF=80B2
+cp;2F983;dm=8103;na=CJK COMPATIBILITY IDEOGRAPH-2F983;NFKC_CF=8103;NFKC_SCF=8103
+cp;2F984;dm=440B;na=CJK COMPATIBILITY IDEOGRAPH-2F984;NFKC_CF=440B;NFKC_SCF=440B
+cp;2F985;dm=813E;na=CJK COMPATIBILITY IDEOGRAPH-2F985;NFKC_CF=813E;NFKC_SCF=813E
+cp;2F986;dm=5AB5;na=CJK COMPATIBILITY IDEOGRAPH-2F986;NFKC_CF=5AB5;NFKC_SCF=5AB5
+cp;2F987;dm=267A7;na=CJK COMPATIBILITY IDEOGRAPH-2F987;NFKC_CF=267A7;NFKC_SCF=267A7
+cp;2F988;dm=267B5;na=CJK COMPATIBILITY IDEOGRAPH-2F988;NFKC_CF=267B5;NFKC_SCF=267B5
+cp;2F989;dm=23393;na=CJK COMPATIBILITY IDEOGRAPH-2F989;NFKC_CF=23393;NFKC_SCF=23393
+cp;2F98A;dm=2339C;na=CJK COMPATIBILITY IDEOGRAPH-2F98A;NFKC_CF=2339C;NFKC_SCF=2339C
+cp;2F98B;dm=8201;na=CJK COMPATIBILITY IDEOGRAPH-2F98B;NFKC_CF=8201;NFKC_SCF=8201
+cp;2F98C;dm=8204;na=CJK COMPATIBILITY IDEOGRAPH-2F98C;NFKC_CF=8204;NFKC_SCF=8204
+cp;2F98D;dm=8F9E;na=CJK COMPATIBILITY IDEOGRAPH-2F98D;NFKC_CF=8F9E;NFKC_SCF=8F9E
+cp;2F98E;dm=446B;na=CJK COMPATIBILITY IDEOGRAPH-2F98E;NFKC_CF=446B;NFKC_SCF=446B
+cp;2F98F;dm=8291;na=CJK COMPATIBILITY IDEOGRAPH-2F98F;NFKC_CF=8291;NFKC_SCF=8291
+cp;2F990;dm=828B;na=CJK COMPATIBILITY IDEOGRAPH-2F990;NFKC_CF=828B;NFKC_SCF=828B
+cp;2F991;dm=829D;na=CJK COMPATIBILITY IDEOGRAPH-2F991;NFKC_CF=829D;NFKC_SCF=829D
+cp;2F992;dm=52B3;na=CJK COMPATIBILITY IDEOGRAPH-2F992;NFKC_CF=52B3;NFKC_SCF=52B3
+cp;2F993;dm=82B1;na=CJK COMPATIBILITY IDEOGRAPH-2F993;NFKC_CF=82B1;NFKC_SCF=82B1
+cp;2F994;dm=82B3;na=CJK COMPATIBILITY IDEOGRAPH-2F994;NFKC_CF=82B3;NFKC_SCF=82B3
+cp;2F995;dm=82BD;na=CJK COMPATIBILITY IDEOGRAPH-2F995;NFKC_CF=82BD;NFKC_SCF=82BD
+cp;2F996;dm=82E6;na=CJK COMPATIBILITY IDEOGRAPH-2F996;NFKC_CF=82E6;NFKC_SCF=82E6
+cp;2F997;dm=26B3C;na=CJK COMPATIBILITY IDEOGRAPH-2F997;NFKC_CF=26B3C;NFKC_SCF=26B3C
+cp;2F998;dm=82E5;na=CJK COMPATIBILITY IDEOGRAPH-2F998;NFKC_CF=82E5;NFKC_SCF=82E5
+cp;2F999;dm=831D;na=CJK COMPATIBILITY IDEOGRAPH-2F999;NFKC_CF=831D;NFKC_SCF=831D
+cp;2F99A;dm=8363;na=CJK COMPATIBILITY IDEOGRAPH-2F99A;NFKC_CF=8363;NFKC_SCF=8363
+cp;2F99B;dm=83AD;na=CJK COMPATIBILITY IDEOGRAPH-2F99B;NFKC_CF=83AD;NFKC_SCF=83AD
+cp;2F99C;dm=8323;na=CJK COMPATIBILITY IDEOGRAPH-2F99C;NFKC_CF=8323;NFKC_SCF=8323
+cp;2F99D;dm=83BD;na=CJK COMPATIBILITY IDEOGRAPH-2F99D;NFKC_CF=83BD;NFKC_SCF=83BD
+cp;2F99E;dm=83E7;na=CJK COMPATIBILITY IDEOGRAPH-2F99E;NFKC_CF=83E7;NFKC_SCF=83E7
+cp;2F99F;dm=8457;na=CJK COMPATIBILITY IDEOGRAPH-2F99F;NFKC_CF=8457;NFKC_SCF=8457
+cp;2F9A0;dm=8353;na=CJK COMPATIBILITY IDEOGRAPH-2F9A0;NFKC_CF=8353;NFKC_SCF=8353
+cp;2F9A1;dm=83CA;na=CJK COMPATIBILITY IDEOGRAPH-2F9A1;NFKC_CF=83CA;NFKC_SCF=83CA
+cp;2F9A2;dm=83CC;na=CJK COMPATIBILITY IDEOGRAPH-2F9A2;NFKC_CF=83CC;NFKC_SCF=83CC
+cp;2F9A3;dm=83DC;na=CJK COMPATIBILITY IDEOGRAPH-2F9A3;NFKC_CF=83DC;NFKC_SCF=83DC
+cp;2F9A4;dm=26C36;na=CJK COMPATIBILITY IDEOGRAPH-2F9A4;NFKC_CF=26C36;NFKC_SCF=26C36
+cp;2F9A5;dm=26D6B;na=CJK COMPATIBILITY IDEOGRAPH-2F9A5;NFKC_CF=26D6B;NFKC_SCF=26D6B
+cp;2F9A6;dm=26CD5;na=CJK COMPATIBILITY IDEOGRAPH-2F9A6;NFKC_CF=26CD5;NFKC_SCF=26CD5
+cp;2F9A7;dm=452B;na=CJK COMPATIBILITY IDEOGRAPH-2F9A7;NFKC_CF=452B;NFKC_SCF=452B
+cp;2F9A8;dm=84F1;na=CJK COMPATIBILITY IDEOGRAPH-2F9A8;NFKC_CF=84F1;NFKC_SCF=84F1
+cp;2F9A9;dm=84F3;na=CJK COMPATIBILITY IDEOGRAPH-2F9A9;NFKC_CF=84F3;NFKC_SCF=84F3
+cp;2F9AA;dm=8516;na=CJK COMPATIBILITY IDEOGRAPH-2F9AA;NFKC_CF=8516;NFKC_SCF=8516
+cp;2F9AB;dm=273CA;na=CJK COMPATIBILITY IDEOGRAPH-2F9AB;NFKC_CF=273CA;NFKC_SCF=273CA
+cp;2F9AC;dm=8564;na=CJK COMPATIBILITY IDEOGRAPH-2F9AC;NFKC_CF=8564;NFKC_SCF=8564
+cp;2F9AD;dm=26F2C;na=CJK COMPATIBILITY IDEOGRAPH-2F9AD;NFKC_CF=26F2C;NFKC_SCF=26F2C
+cp;2F9AE;dm=455D;na=CJK COMPATIBILITY IDEOGRAPH-2F9AE;NFKC_CF=455D;NFKC_SCF=455D
+cp;2F9AF;dm=4561;na=CJK COMPATIBILITY IDEOGRAPH-2F9AF;NFKC_CF=4561;NFKC_SCF=4561
+cp;2F9B0;dm=26FB1;na=CJK COMPATIBILITY IDEOGRAPH-2F9B0;NFKC_CF=26FB1;NFKC_SCF=26FB1
+cp;2F9B1;dm=270D2;na=CJK COMPATIBILITY IDEOGRAPH-2F9B1;NFKC_CF=270D2;NFKC_SCF=270D2
+cp;2F9B2;dm=456B;na=CJK COMPATIBILITY IDEOGRAPH-2F9B2;NFKC_CF=456B;NFKC_SCF=456B
+cp;2F9B3;dm=8650;na=CJK COMPATIBILITY IDEOGRAPH-2F9B3;NFKC_CF=8650;NFKC_SCF=8650
+cp;2F9B4;dm=865C;na=CJK COMPATIBILITY IDEOGRAPH-2F9B4;NFKC_CF=865C;NFKC_SCF=865C
+cp;2F9B5;dm=8667;na=CJK COMPATIBILITY IDEOGRAPH-2F9B5;NFKC_CF=8667;NFKC_SCF=8667
+cp;2F9B6;dm=8669;na=CJK COMPATIBILITY IDEOGRAPH-2F9B6;NFKC_CF=8669;NFKC_SCF=8669
+cp;2F9B7;dm=86A9;na=CJK COMPATIBILITY IDEOGRAPH-2F9B7;NFKC_CF=86A9;NFKC_SCF=86A9
+cp;2F9B8;dm=8688;na=CJK COMPATIBILITY IDEOGRAPH-2F9B8;NFKC_CF=8688;NFKC_SCF=8688
+cp;2F9B9;dm=870E;na=CJK COMPATIBILITY IDEOGRAPH-2F9B9;NFKC_CF=870E;NFKC_SCF=870E
+cp;2F9BA;dm=86E2;na=CJK COMPATIBILITY IDEOGRAPH-2F9BA;NFKC_CF=86E2;NFKC_SCF=86E2
+cp;2F9BB;dm=8779;na=CJK COMPATIBILITY IDEOGRAPH-2F9BB;NFKC_CF=8779;NFKC_SCF=8779
+cp;2F9BC;dm=8728;na=CJK COMPATIBILITY IDEOGRAPH-2F9BC;NFKC_CF=8728;NFKC_SCF=8728
+cp;2F9BD;dm=876B;na=CJK COMPATIBILITY IDEOGRAPH-2F9BD;NFKC_CF=876B;NFKC_SCF=876B
+cp;2F9BE;dm=8786;na=CJK COMPATIBILITY IDEOGRAPH-2F9BE;NFKC_CF=8786;NFKC_SCF=8786
+cp;2F9BF;dm=45D7;na=CJK COMPATIBILITY IDEOGRAPH-2F9BF;NFKC_CF=45D7;NFKC_SCF=45D7
+cp;2F9C0;dm=87E1;na=CJK COMPATIBILITY IDEOGRAPH-2F9C0;NFKC_CF=87E1;NFKC_SCF=87E1
+cp;2F9C1;dm=8801;na=CJK COMPATIBILITY IDEOGRAPH-2F9C1;NFKC_CF=8801;NFKC_SCF=8801
+cp;2F9C2;dm=45F9;na=CJK COMPATIBILITY IDEOGRAPH-2F9C2;NFKC_CF=45F9;NFKC_SCF=45F9
+cp;2F9C3;dm=8860;na=CJK COMPATIBILITY IDEOGRAPH-2F9C3;NFKC_CF=8860;NFKC_SCF=8860
+cp;2F9C4;dm=8863;na=CJK COMPATIBILITY IDEOGRAPH-2F9C4;NFKC_CF=8863;NFKC_SCF=8863
+cp;2F9C5;dm=27667;na=CJK COMPATIBILITY IDEOGRAPH-2F9C5;NFKC_CF=27667;NFKC_SCF=27667
+cp;2F9C6;dm=88D7;na=CJK COMPATIBILITY IDEOGRAPH-2F9C6;NFKC_CF=88D7;NFKC_SCF=88D7
+cp;2F9C7;dm=88DE;na=CJK COMPATIBILITY IDEOGRAPH-2F9C7;NFKC_CF=88DE;NFKC_SCF=88DE
+cp;2F9C8;dm=4635;na=CJK COMPATIBILITY IDEOGRAPH-2F9C8;NFKC_CF=4635;NFKC_SCF=4635
+cp;2F9C9;dm=88FA;na=CJK COMPATIBILITY IDEOGRAPH-2F9C9;NFKC_CF=88FA;NFKC_SCF=88FA
+cp;2F9CA;dm=34BB;na=CJK COMPATIBILITY IDEOGRAPH-2F9CA;NFKC_CF=34BB;NFKC_SCF=34BB
+cp;2F9CB;dm=278AE;na=CJK COMPATIBILITY IDEOGRAPH-2F9CB;NFKC_CF=278AE;NFKC_SCF=278AE
+cp;2F9CC;dm=27966;na=CJK COMPATIBILITY IDEOGRAPH-2F9CC;NFKC_CF=27966;NFKC_SCF=27966
+cp;2F9CD;dm=46BE;na=CJK COMPATIBILITY IDEOGRAPH-2F9CD;NFKC_CF=46BE;NFKC_SCF=46BE
+cp;2F9CE;dm=46C7;na=CJK COMPATIBILITY IDEOGRAPH-2F9CE;NFKC_CF=46C7;NFKC_SCF=46C7
+cp;2F9CF;dm=8AA0;na=CJK COMPATIBILITY IDEOGRAPH-2F9CF;NFKC_CF=8AA0;NFKC_SCF=8AA0
+cp;2F9D0;dm=8AED;na=CJK COMPATIBILITY IDEOGRAPH-2F9D0;NFKC_CF=8AED;NFKC_SCF=8AED
+cp;2F9D1;dm=8B8A;na=CJK COMPATIBILITY IDEOGRAPH-2F9D1;NFKC_CF=8B8A;NFKC_SCF=8B8A
+cp;2F9D2;dm=8C55;na=CJK COMPATIBILITY IDEOGRAPH-2F9D2;NFKC_CF=8C55;NFKC_SCF=8C55
+cp;2F9D3;dm=27CA8;na=CJK COMPATIBILITY IDEOGRAPH-2F9D3;NFKC_CF=27CA8;NFKC_SCF=27CA8
+cp;2F9D4;dm=8CAB;na=CJK COMPATIBILITY IDEOGRAPH-2F9D4;NFKC_CF=8CAB;NFKC_SCF=8CAB
+cp;2F9D5;dm=8CC1;na=CJK COMPATIBILITY IDEOGRAPH-2F9D5;NFKC_CF=8CC1;NFKC_SCF=8CC1
+cp;2F9D6;dm=8D1B;na=CJK COMPATIBILITY IDEOGRAPH-2F9D6;NFKC_CF=8D1B;NFKC_SCF=8D1B
+cp;2F9D7;dm=8D77;na=CJK COMPATIBILITY IDEOGRAPH-2F9D7;NFKC_CF=8D77;NFKC_SCF=8D77
+cp;2F9D8;dm=27F2F;na=CJK COMPATIBILITY IDEOGRAPH-2F9D8;NFKC_CF=27F2F;NFKC_SCF=27F2F
+cp;2F9D9;dm=20804;na=CJK COMPATIBILITY IDEOGRAPH-2F9D9;NFKC_CF=20804;NFKC_SCF=20804
+cp;2F9DA;dm=8DCB;na=CJK COMPATIBILITY IDEOGRAPH-2F9DA;NFKC_CF=8DCB;NFKC_SCF=8DCB
+cp;2F9DB;dm=8DBC;na=CJK COMPATIBILITY IDEOGRAPH-2F9DB;NFKC_CF=8DBC;NFKC_SCF=8DBC
+cp;2F9DC;dm=8DF0;na=CJK COMPATIBILITY IDEOGRAPH-2F9DC;NFKC_CF=8DF0;NFKC_SCF=8DF0
+cp;2F9DD;dm=208DE;na=CJK COMPATIBILITY IDEOGRAPH-2F9DD;NFKC_CF=208DE;NFKC_SCF=208DE
+cp;2F9DE;dm=8ED4;na=CJK COMPATIBILITY IDEOGRAPH-2F9DE;NFKC_CF=8ED4;NFKC_SCF=8ED4
+cp;2F9DF;dm=8F38;na=CJK COMPATIBILITY IDEOGRAPH-2F9DF;NFKC_CF=8F38;NFKC_SCF=8F38
+cp;2F9E0;dm=285D2;na=CJK COMPATIBILITY IDEOGRAPH-2F9E0;NFKC_CF=285D2;NFKC_SCF=285D2
+cp;2F9E1;dm=285ED;na=CJK COMPATIBILITY IDEOGRAPH-2F9E1;NFKC_CF=285ED;NFKC_SCF=285ED
+cp;2F9E2;dm=9094;na=CJK COMPATIBILITY IDEOGRAPH-2F9E2;NFKC_CF=9094;NFKC_SCF=9094
+cp;2F9E3;dm=90F1;na=CJK COMPATIBILITY IDEOGRAPH-2F9E3;NFKC_CF=90F1;NFKC_SCF=90F1
+cp;2F9E4;dm=9111;na=CJK COMPATIBILITY IDEOGRAPH-2F9E4;NFKC_CF=9111;NFKC_SCF=9111
+cp;2F9E5;dm=2872E;na=CJK COMPATIBILITY IDEOGRAPH-2F9E5;NFKC_CF=2872E;NFKC_SCF=2872E
+cp;2F9E6;dm=911B;na=CJK COMPATIBILITY IDEOGRAPH-2F9E6;NFKC_CF=911B;NFKC_SCF=911B
+cp;2F9E7;dm=9238;na=CJK COMPATIBILITY IDEOGRAPH-2F9E7;NFKC_CF=9238;NFKC_SCF=9238
+cp;2F9E8;dm=92D7;na=CJK COMPATIBILITY IDEOGRAPH-2F9E8;NFKC_CF=92D7;NFKC_SCF=92D7
+cp;2F9E9;dm=92D8;na=CJK COMPATIBILITY IDEOGRAPH-2F9E9;NFKC_CF=92D8;NFKC_SCF=92D8
+cp;2F9EA;dm=927C;na=CJK COMPATIBILITY IDEOGRAPH-2F9EA;NFKC_CF=927C;NFKC_SCF=927C
+cp;2F9EB;dm=93F9;na=CJK COMPATIBILITY IDEOGRAPH-2F9EB;NFKC_CF=93F9;NFKC_SCF=93F9
+cp;2F9EC;dm=9415;na=CJK COMPATIBILITY IDEOGRAPH-2F9EC;NFKC_CF=9415;NFKC_SCF=9415
+cp;2F9ED;dm=28BFA;na=CJK COMPATIBILITY IDEOGRAPH-2F9ED;NFKC_CF=28BFA;NFKC_SCF=28BFA
+cp;2F9EE;dm=958B;na=CJK COMPATIBILITY IDEOGRAPH-2F9EE;NFKC_CF=958B;NFKC_SCF=958B
+cp;2F9EF;dm=4995;na=CJK COMPATIBILITY IDEOGRAPH-2F9EF;NFKC_CF=4995;NFKC_SCF=4995
+cp;2F9F0;dm=95B7;na=CJK COMPATIBILITY IDEOGRAPH-2F9F0;NFKC_CF=95B7;NFKC_SCF=95B7
+cp;2F9F1;dm=28D77;na=CJK COMPATIBILITY IDEOGRAPH-2F9F1;NFKC_CF=28D77;NFKC_SCF=28D77
+cp;2F9F2;dm=49E6;na=CJK COMPATIBILITY IDEOGRAPH-2F9F2;NFKC_CF=49E6;NFKC_SCF=49E6
+cp;2F9F3;dm=96C3;na=CJK COMPATIBILITY IDEOGRAPH-2F9F3;NFKC_CF=96C3;NFKC_SCF=96C3
+cp;2F9F4;dm=5DB2;na=CJK COMPATIBILITY IDEOGRAPH-2F9F4;NFKC_CF=5DB2;NFKC_SCF=5DB2
+cp;2F9F5;dm=9723;na=CJK COMPATIBILITY IDEOGRAPH-2F9F5;NFKC_CF=9723;NFKC_SCF=9723
+cp;2F9F6;dm=29145;na=CJK COMPATIBILITY IDEOGRAPH-2F9F6;NFKC_CF=29145;NFKC_SCF=29145
+cp;2F9F7;dm=2921A;na=CJK COMPATIBILITY IDEOGRAPH-2F9F7;NFKC_CF=2921A;NFKC_SCF=2921A
+cp;2F9F8;dm=4A6E;na=CJK COMPATIBILITY IDEOGRAPH-2F9F8;NFKC_CF=4A6E;NFKC_SCF=4A6E
+cp;2F9F9;dm=4A76;na=CJK COMPATIBILITY IDEOGRAPH-2F9F9;NFKC_CF=4A76;NFKC_SCF=4A76
+cp;2F9FA;dm=97E0;na=CJK COMPATIBILITY IDEOGRAPH-2F9FA;NFKC_CF=97E0;NFKC_SCF=97E0
+cp;2F9FB;dm=2940A;na=CJK COMPATIBILITY IDEOGRAPH-2F9FB;NFKC_CF=2940A;NFKC_SCF=2940A
+cp;2F9FC;dm=4AB2;na=CJK COMPATIBILITY IDEOGRAPH-2F9FC;NFKC_CF=4AB2;NFKC_SCF=4AB2
+cp;2F9FD;dm=29496;na=CJK COMPATIBILITY IDEOGRAPH-2F9FD;NFKC_CF=29496;NFKC_SCF=29496
+cp;2F9FE;dm=980B;na=CJK COMPATIBILITY IDEOGRAPH-2F9FE;NFKC_CF=980B;NFKC_SCF=980B
+cp;2F9FF;dm=980B;na=CJK COMPATIBILITY IDEOGRAPH-2F9FF;NFKC_CF=980B;NFKC_SCF=980B
+cp;2FA00;dm=9829;na=CJK COMPATIBILITY IDEOGRAPH-2FA00;NFKC_CF=9829;NFKC_SCF=9829
+cp;2FA01;dm=295B6;na=CJK COMPATIBILITY IDEOGRAPH-2FA01;NFKC_CF=295B6;NFKC_SCF=295B6
+cp;2FA02;dm=98E2;na=CJK COMPATIBILITY IDEOGRAPH-2FA02;NFKC_CF=98E2;NFKC_SCF=98E2
+cp;2FA03;dm=4B33;na=CJK COMPATIBILITY IDEOGRAPH-2FA03;NFKC_CF=4B33;NFKC_SCF=4B33
+cp;2FA04;dm=9929;na=CJK COMPATIBILITY IDEOGRAPH-2FA04;NFKC_CF=9929;NFKC_SCF=9929
+cp;2FA05;dm=99A7;na=CJK COMPATIBILITY IDEOGRAPH-2FA05;NFKC_CF=99A7;NFKC_SCF=99A7
+cp;2FA06;dm=99C2;na=CJK COMPATIBILITY IDEOGRAPH-2FA06;NFKC_CF=99C2;NFKC_SCF=99C2
+cp;2FA07;dm=99FE;na=CJK COMPATIBILITY IDEOGRAPH-2FA07;NFKC_CF=99FE;NFKC_SCF=99FE
+cp;2FA08;dm=4BCE;na=CJK COMPATIBILITY IDEOGRAPH-2FA08;NFKC_CF=4BCE;NFKC_SCF=4BCE
+cp;2FA09;dm=29B30;na=CJK COMPATIBILITY IDEOGRAPH-2FA09;NFKC_CF=29B30;NFKC_SCF=29B30
+cp;2FA0A;dm=9B12;na=CJK COMPATIBILITY IDEOGRAPH-2FA0A;NFKC_CF=9B12;NFKC_SCF=9B12
+cp;2FA0B;dm=9C40;na=CJK COMPATIBILITY IDEOGRAPH-2FA0B;NFKC_CF=9C40;NFKC_SCF=9C40
+cp;2FA0C;dm=9CFD;na=CJK COMPATIBILITY IDEOGRAPH-2FA0C;NFKC_CF=9CFD;NFKC_SCF=9CFD
+cp;2FA0D;dm=4CCE;na=CJK COMPATIBILITY IDEOGRAPH-2FA0D;NFKC_CF=4CCE;NFKC_SCF=4CCE
+cp;2FA0E;dm=4CED;na=CJK COMPATIBILITY IDEOGRAPH-2FA0E;NFKC_CF=4CED;NFKC_SCF=4CED
+cp;2FA0F;dm=9D67;na=CJK COMPATIBILITY IDEOGRAPH-2FA0F;NFKC_CF=9D67;NFKC_SCF=9D67
+cp;2FA10;dm=2A0CE;na=CJK COMPATIBILITY IDEOGRAPH-2FA10;NFKC_CF=2A0CE;NFKC_SCF=2A0CE
+cp;2FA11;dm=4CF8;na=CJK COMPATIBILITY IDEOGRAPH-2FA11;NFKC_CF=4CF8;NFKC_SCF=4CF8
+cp;2FA12;dm=2A105;na=CJK COMPATIBILITY IDEOGRAPH-2FA12;NFKC_CF=2A105;NFKC_SCF=2A105
+cp;2FA13;dm=2A20E;na=CJK COMPATIBILITY IDEOGRAPH-2FA13;NFKC_CF=2A20E;NFKC_SCF=2A20E
+cp;2FA14;dm=2A291;na=CJK COMPATIBILITY IDEOGRAPH-2FA14;NFKC_CF=2A291;NFKC_SCF=2A291
+cp;2FA15;dm=9EBB;na=CJK COMPATIBILITY IDEOGRAPH-2FA15;NFKC_CF=9EBB;NFKC_SCF=9EBB
+cp;2FA16;dm=4D56;na=CJK COMPATIBILITY IDEOGRAPH-2FA16;NFKC_CF=4D56;NFKC_SCF=4D56
+cp;2FA17;dm=9EF9;na=CJK COMPATIBILITY IDEOGRAPH-2FA17;NFKC_CF=9EF9;NFKC_SCF=9EF9
+cp;2FA18;dm=9EFE;na=CJK COMPATIBILITY IDEOGRAPH-2FA18;NFKC_CF=9EFE;NFKC_SCF=9EFE
+cp;2FA19;dm=9F05;na=CJK COMPATIBILITY IDEOGRAPH-2FA19;NFKC_CF=9F05;NFKC_SCF=9F05
+cp;2FA1A;dm=9F0F;na=CJK COMPATIBILITY IDEOGRAPH-2FA1A;NFKC_CF=9F0F;NFKC_SCF=9F0F
+cp;2FA1B;dm=9F16;na=CJK COMPATIBILITY IDEOGRAPH-2FA1B;NFKC_CF=9F16;NFKC_SCF=9F16
+cp;2FA1C;dm=9F3B;na=CJK COMPATIBILITY IDEOGRAPH-2FA1C;NFKC_CF=9F3B;NFKC_SCF=9F3B
+cp;2FA1D;dm=2A600;na=CJK COMPATIBILITY IDEOGRAPH-2FA1D;NFKC_CF=2A600;NFKC_SCF=2A600
unassigned;2FA1E..2FA1F;ea=W;lb=ID;vo=U
# No block
@@ -40980,12 +41017,12 @@ unassigned;CFFFE..CFFFF;age=2.0;bc=BN;NChar
# Noncharacters
unassigned;DFFFE..DFFFF;age=2.0;bc=BN;NChar
-block;E0000..E007F;age=3.1;bc=BN;blk=Tags;CI;CWKCF;DI;EComp;gc=Cf;GCB=EX;Gr_Ext;jt=T;lb=CM;NFKC_CF=;SB=EX;sc=Zyyy;WB=Extend
+block;E0000..E007F;age=3.1;bc=BN;blk=Tags;CI;CWKCF;DI;EComp;gc=Cf;GCB=EX;Gr_Ext;jt=T;lb=CM;NFKC_CF=;NFKC_SCF=;SB=EX;sc=Zyyy;WB=Extend
# E0000..E007F Tags
-unassigned;E0000;bc=BN;CWKCF;DI;GCB=CN;NFKC_CF=
+unassigned;E0000;bc=BN;CWKCF;DI;GCB=CN;NFKC_CF=;NFKC_SCF=
# Tag identifiers
cp;E0001;Dep;-EComp;GCB=CN;-Gr_Ext;na=LANGUAGE TAG;SB=FO;WB=FO
-unassigned;E0002..E001F;bc=BN;CWKCF;DI;GCB=CN;NFKC_CF=
+unassigned;E0002..E001F;bc=BN;CWKCF;DI;GCB=CN;NFKC_CF=;NFKC_SCF=
# Tag components
cp;E0020;na=TAG SPACE
cp;E0021;na=TAG EXCLAMATION MARK
@@ -41086,9 +41123,9 @@ cp;E007E;na=TAG TILDE
cp;E007F;na=CANCEL TAG
# No block
-unassigned;E0080..E00FF;bc=BN;CWKCF;DI;GCB=CN;NFKC_CF=
+unassigned;E0080..E00FF;bc=BN;CWKCF;DI;GCB=CN;NFKC_CF=;NFKC_SCF=
-block;E0100..E01EF;age=4.0;bc=NSM;blk=VS_Sup;CI;CWKCF;DI;ea=A;gc=Mn;GCB=EX;Gr_Ext;IDC;jt=T;lb=CM;NFKC_CF=;SB=EX;sc=Zinh;VS;WB=Extend;XIDC
+block;E0100..E01EF;age=4.0;bc=NSM;blk=VS_Sup;CI;CWKCF;DI;ea=A;gc=Mn;GCB=EX;Gr_Ext;IDC;jt=T;lb=CM;NFKC_CF=;NFKC_SCF=;SB=EX;sc=Zinh;VS;WB=Extend;XIDC
# E0100..E01EF Variation Selectors Supplement
# Ideographic-specific variation selectors
cp;E0100;na=VARIATION SELECTOR-17;Name_Alias=abbreviation=VS17
@@ -41333,7 +41370,7 @@ cp;E01EE;na=VARIATION SELECTOR-255;Name_Alias=abbreviation=VS255
cp;E01EF;na=VARIATION SELECTOR-256;Name_Alias=abbreviation=VS256
# No block
-unassigned;E01F0..E0FFF;bc=BN;CWKCF;DI;GCB=CN;NFKC_CF=
+unassigned;E01F0..E0FFF;bc=BN;CWKCF;DI;GCB=CN;NFKC_CF=;NFKC_SCF=
# EFF80..EFFFF Unassigned
# Noncharacters
unassigned;EFFFE..EFFFF;age=2.0;bc=BN;NChar
diff --git a/Build/source/libs/icu/icu-src/source/extra/scrptrun/scrptrun.cpp b/Build/source/libs/icu/icu-src/source/extra/scrptrun/scrptrun.cpp
index 0a438c316a6..4fd8de1b85e 100644
--- a/Build/source/libs/icu/icu-src/source/extra/scrptrun/scrptrun.cpp
+++ b/Build/source/libs/icu/icu-src/source/extra/scrptrun/scrptrun.cpp
@@ -125,14 +125,14 @@ UBool ScriptRun::next()
scriptCode = USCRIPT_COMMON;
for (scriptStart = scriptEnd; scriptEnd < charLimit; scriptEnd += 1) {
- UChar high = charArray[scriptEnd];
+ char16_t high = charArray[scriptEnd];
UChar32 ch = high;
// if the character is a high surrogate and it's not the last one
// in the text, see if it's followed by a low surrogate
if (high >= 0xD800 && high <= 0xDBFF && scriptEnd < charLimit - 1)
{
- UChar low = charArray[scriptEnd + 1];
+ char16_t low = charArray[scriptEnd + 1];
// if it is followed by a low surrogate,
// consume it and form the full character
diff --git a/Build/source/libs/icu/icu-src/source/extra/scrptrun/scrptrun.h b/Build/source/libs/icu/icu-src/source/extra/scrptrun/scrptrun.h
index 7f033a72834..cc077466411 100644
--- a/Build/source/libs/icu/icu-src/source/extra/scrptrun/scrptrun.h
+++ b/Build/source/libs/icu/icu-src/source/extra/scrptrun/scrptrun.h
@@ -39,15 +39,15 @@ class ScriptRun : public UObject {
public:
ScriptRun();
- ScriptRun(const UChar chars[], int32_t length);
+ ScriptRun(const char16_t chars[], int32_t length);
- ScriptRun(const UChar chars[], int32_t start, int32_t length);
+ ScriptRun(const char16_t chars[], int32_t start, int32_t length);
void reset();
void reset(int32_t start, int32_t count);
- void reset(const UChar chars[], int32_t start, int32_t length);
+ void reset(const char16_t chars[], int32_t start, int32_t length);
int32_t getScriptStart();
@@ -77,7 +77,7 @@ private:
int32_t charStart;
int32_t charLimit;
- const UChar *charArray;
+ const char16_t *charArray;
int32_t scriptStart;
int32_t scriptEnd;
@@ -103,15 +103,15 @@ private:
inline ScriptRun::ScriptRun()
{
- reset(NULL, 0, 0);
+ reset(nullptr, 0, 0);
}
-inline ScriptRun::ScriptRun(const UChar chars[], int32_t length)
+inline ScriptRun::ScriptRun(const char16_t chars[], int32_t length)
{
reset(chars, 0, length);
}
-inline ScriptRun::ScriptRun(const UChar chars[], int32_t start, int32_t length)
+inline ScriptRun::ScriptRun(const char16_t chars[], int32_t start, int32_t length)
{
reset(chars, start, length);
}
@@ -147,7 +147,7 @@ inline void ScriptRun::reset(int32_t start, int32_t length)
reset();
}
-inline void ScriptRun::reset(const UChar chars[], int32_t start, int32_t length)
+inline void ScriptRun::reset(const char16_t chars[], int32_t start, int32_t length)
{
charArray = chars;
diff --git a/Build/source/libs/icu/icu-src/source/extra/scrptrun/srtest.cpp b/Build/source/libs/icu/icu-src/source/extra/scrptrun/srtest.cpp
index 8d59fb9ef6a..63750960cdf 100644
--- a/Build/source/libs/icu/icu-src/source/extra/scrptrun/srtest.cpp
+++ b/Build/source/libs/icu/icu-src/source/extra/scrptrun/srtest.cpp
@@ -15,7 +15,7 @@
#include <stdio.h>
-UChar testChars[] = {
+char16_t testChars[] = {
0x0020, 0x0946, 0x0939, 0x093F, 0x0928, 0x094D, 0x0926, 0x0940, 0x0020,
0x0627, 0x0644, 0x0639, 0x0631, 0x0628, 0x064A, 0x0629, 0x0020,
0x0420, 0x0443, 0x0441, 0x0441, 0x043A, 0x0438, 0x0439, 0x0020,
diff --git a/Build/source/libs/icu/icu-src/source/extra/uconv/uconv.cpp b/Build/source/libs/icu/icu-src/source/extra/uconv/uconv.cpp
index 3be4e8ec575..0f4af65663e 100644
--- a/Build/source/libs/icu/icu-src/source/extra/uconv/uconv.cpp
+++ b/Build/source/libs/icu/icu-src/source/extra/uconv/uconv.cpp
@@ -325,7 +325,7 @@ static int printConverters(const char *pname, const char *lookfor,
const char *standardName;
UBool isFirst = true;
UErrorCode enumError = U_ZERO_ERROR;
- while ((standardName = uenum_next(nameEnum, NULL, &enumError))) {
+ while ((standardName = uenum_next(nameEnum, nullptr, &enumError))) {
/* See if this alias is supported by this standard. */
if (!strcmp(standardName, alias)) {
if (!t) {
@@ -427,7 +427,7 @@ getChunkLimit(const UnicodeString &prev, const UnicodeString &s) {
// all of these characters are on the BMP
// do not include FF or VT in case they are part of a paragraph
// (important for bidi contexts)
- static const UChar paraEnds[] = {
+ static const char16_t paraEnds[] = {
0xd, 0xa, 0x85, 0x2028, 0x2029
};
enum {
@@ -445,8 +445,8 @@ getChunkLimit(const UnicodeString &prev, const UnicodeString &s) {
}
}
- const UChar *u = s.getBuffer(), *limit = u + s.length();
- UChar c;
+ const char16_t *u = s.getBuffer(), *limit = u + s.length();
+ char16_t c;
while (u < limit) {
c = *u++;
@@ -476,13 +476,13 @@ enum {
CNV_ADDS_FEFF // automatically adds/detects the U+FEFF signature character
};
-static inline UChar
+static inline char16_t
nibbleToHex(uint8_t n) {
n &= 0xf;
return
n <= 9 ?
- (UChar)(0x30 + n) :
- (UChar)((0x61 - 10) + n);
+ (char16_t)(0x30 + n) :
+ (char16_t)((0x61 - 10) + n);
}
// check the converter's Unicode signature properties;
@@ -506,8 +506,8 @@ cnvSigType(UConverter *cnv) {
if (result == CNV_WITH_FEFF) {
// test if the output charset emits a signature anyway
- const UChar a[1] = { 0x61 }; // "a"
- const UChar *in;
+ const char16_t a[1] = { 0x61 }; // "a"
+ const char16_t *in;
char buffer[20];
char *out;
@@ -518,10 +518,10 @@ cnvSigType(UConverter *cnv) {
ucnv_fromUnicode(cnv,
&out, buffer + sizeof(buffer),
&in, a + 1,
- NULL, true, &err);
+ nullptr, true, &err);
ucnv_resetFromUnicode(cnv);
- if (NULL != ucnv_detectUnicodeSignature(buffer, (int32_t)(out - buffer), NULL, &err) &&
+ if (nullptr != ucnv_detectUnicodeSignature(buffer, (int32_t)(out - buffer), nullptr, &err) &&
U_SUCCESS(err)
) {
result = CNV_ADDS_FEFF;
@@ -534,7 +534,7 @@ cnvSigType(UConverter *cnv) {
class ConvertFile {
public:
ConvertFile() :
- buf(NULL), outbuf(NULL), fromoffsets(NULL),
+ buf(nullptr), outbuf(nullptr), fromoffsets(nullptr),
bufsz(0), signature(0) {}
void
@@ -600,8 +600,8 @@ ConvertFile::convertFile(const char *pname,
uint32_t infoffset = 0, outfoffset = 0; /* Where we are in the file, for error reporting. */
- const UChar *unibuf, *unibufbp;
- UChar *unibufp;
+ const char16_t *unibuf, *unibufbp;
+ char16_t *unibufp;
size_t rd, wr;
@@ -650,7 +650,7 @@ ConvertFile::convertFile(const char *pname,
#if !UCONFIG_NO_TRANSLITERATION
// Create transliterator as needed.
- if (translit != NULL && *translit) {
+ if (translit != nullptr && *translit) {
UParseError parse;
UnicodeString str(translit), pestr;
@@ -669,7 +669,7 @@ ConvertFile::convertFile(const char *pname,
initMsg(pname);
if (parse.line >= 0) {
- UChar linebuf[20], offsetbuf[20];
+ char16_t linebuf[20], offsetbuf[20];
uprv_itou(linebuf, 20, parse.line, 10, 0);
uprv_itou(offsetbuf, 20, parse.offset, 10, 0);
u_wmsg(stderr, "cantCreateTranslitParseErr", str.getTerminatedBuffer(),
@@ -691,7 +691,7 @@ ConvertFile::convertFile(const char *pname,
#endif
// Create codepage converter. If the codepage or its aliases weren't
- // available, it returns NULL and a failure code. We also set the
+ // available, it returns nullptr and a failure code. We also set the
// callbacks, and return errors in the same way.
convfrom = ucnv_open(fromcpage, &err);
@@ -770,7 +770,7 @@ ConvertFile::convertFile(const char *pname,
// Use bufsz instead of u.getCapacity() for the targetLimit
// so that we don't overflow fromoffsets[].
ucnv_toUnicode(convfrom, &unibufp, unibuf + bufsz, &cbufp,
- buf + rd, useOffsets ? fromoffsets : NULL, flush, &err);
+ buf + rd, useOffsets ? fromoffsets : nullptr, flush, &err);
ulen = (int32_t)(unibufp - unibuf);
u.releaseBuffer(U_SUCCESS(err) ? ulen : 0);
@@ -804,14 +804,14 @@ ConvertFile::convertFile(const char *pname,
// length of the just consumed bytes -
// length of the error bytes
length =
- (int8_t)sprintf(pos, "%d",
+ (int8_t)snprintf(pos, sizeof(pos), "%d",
(int)(infoffset + (cbufp - buf) - errorLength));
// output the bytes that caused the error
UnicodeString str;
for (i = 0; i < errorLength; ++i) {
if (i > 0) {
- str.append((UChar)uSP);
+ str.append((char16_t)uSP);
}
str.append(nibbleToHex((uint8_t)errorBytes[i] >> 4));
str.append(nibbleToHex((uint8_t)errorBytes[i]));
@@ -839,7 +839,7 @@ ConvertFile::convertFile(const char *pname,
if (u.charAt(0) == uSig) {
u.remove(0, 1);
- // account for the removed UChar and offset
+ // account for the removed char16_t and offset
--ulen;
if (useOffsets) {
@@ -862,7 +862,7 @@ ConvertFile::convertFile(const char *pname,
// while avoiding the slower keyboard mode.
// The end-of-chunk characters are completely included in the
// transformed string in case they are to be transformed themselves.
- if (t != NULL) {
+ if (t != nullptr) {
UnicodeString out;
int32_t chunkLimit;
@@ -897,7 +897,7 @@ ConvertFile::convertFile(const char *pname,
// and possible/necessary
if (sig > 0) {
if (u.charAt(0) != uSig && cnvSigType(convto) == CNV_WITH_FEFF) {
- u.insert(0, (UChar)uSig);
+ u.insert(0, (char16_t)uSig);
if (useOffsets) {
// insert a pseudo-offset into fromoffsets[] as well
@@ -906,7 +906,7 @@ ConvertFile::convertFile(const char *pname,
fromoffsets[0] = -1;
}
- // account for the additional UChar and offset
+ // account for the additional char16_t and offset
++ulen;
}
sig = 0;
@@ -929,7 +929,7 @@ ConvertFile::convertFile(const char *pname,
ucnv_fromUnicode(convto, &bufp, outbuf + bufsz,
&unibufbp,
unibuf + ulen,
- NULL, (UBool)(flush && fromSawEndOfBytes), &err);
+ nullptr, (UBool)(flush && fromSawEndOfBytes), &err);
// toSawEndOfUnicode indicates that ucnv_fromUnicode() is done
// converting all of the intermediate UChars.
@@ -939,7 +939,7 @@ ConvertFile::convertFile(const char *pname,
if (err == U_BUFFER_OVERFLOW_ERROR) {
err = U_ZERO_ERROR;
} else if (U_FAILURE(err)) {
- UChar errorUChars[4];
+ char16_t errorUChars[4];
const char *errtag;
char pos[32];
UChar32 c;
@@ -977,7 +977,7 @@ ConvertFile::convertFile(const char *pname,
ferroffset = static_cast<int32_t>(infoffset + (prevbufp - buf) + fromoffset);
errtag = "problemCvtFromU";
} else {
- // Do not use fromoffsets if (t != NULL) because the Unicode text may
+ // Do not use fromoffsets if (t != nullptr) because the Unicode text may
// be different from what the offsets refer to.
// output file offset
@@ -985,13 +985,13 @@ ConvertFile::convertFile(const char *pname,
errtag = "problemCvtFromUOut";
}
- length = (int8_t)sprintf(pos, "%u", (int)ferroffset);
+ length = (int8_t)snprintf(pos, sizeof(pos), "%u", (int)ferroffset);
// output the code points that caused the error
UnicodeString str;
for (i = 0; i < errorLength;) {
if (i > 0) {
- str.append((UChar)uSP);
+ str.append((char16_t)uSP);
}
U16_NEXT(errorUChars, i, errorLength, c);
if (c >= 0x100000) {
@@ -1062,7 +1062,7 @@ normal_exit:
}
static void usage(const char *pname, int ecode) {
- const UChar *msg;
+ const char16_t *msg;
int32_t msgLen;
UErrorCode err = U_ZERO_ERROR;
FILE *fp = ecode ? stderr : stdout;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/alphaindex.cpp b/Build/source/libs/icu/icu-src/source/i18n/alphaindex.cpp
index 16b9d99395b..1b49d3b5443 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/alphaindex.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/alphaindex.cpp
@@ -40,7 +40,7 @@ namespace {
* Prefix string for Chinese index buckets.
* See http://unicode.org/repos/cldr/trunk/specs/ldml/tr35-collation.html#Collation_Indexes
*/
-const UChar BASE[1] = { 0xFDD0 };
+const char16_t BASE[1] = { 0xFDD0 };
const int32_t BASE_LENGTH = 1;
UBool isOneLabelBetterThanOther(const Normalizer2 &nfkdNormalizer,
@@ -64,12 +64,12 @@ namespace {
UnicodeString *ownedString(const UnicodeString &s, LocalPointer<UnicodeString> &owned,
UErrorCode &errorCode) {
- if (U_FAILURE(errorCode)) { return NULL; }
+ if (U_FAILURE(errorCode)) { return nullptr; }
if (owned.isValid()) {
return owned.orphan();
}
UnicodeString *p = new UnicodeString(s);
- if (p == NULL) {
+ if (p == nullptr) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
}
return p;
@@ -158,7 +158,7 @@ public:
}
}
const AlphabeticIndex::Bucket *bucket = getBucket(*bucketList_, start);
- if (bucket->displayBucket_ != NULL) {
+ if (bucket->displayBucket_ != nullptr) {
bucket = bucket->displayBucket_;
}
return bucket->displayIndex_;
@@ -198,29 +198,29 @@ AlphabeticIndex::ImmutableIndex::getBucket(int32_t index) const {
if (0 <= index && index < buckets_->getBucketCount()) {
return icu::getBucket(*buckets_->immutableVisibleList_, index);
} else {
- return NULL;
+ return nullptr;
}
}
AlphabeticIndex::AlphabeticIndex(const Locale &locale, UErrorCode &status)
- : inputList_(NULL),
- labelsIterIndex_(-1), itemsIterIndex_(0), currentBucket_(NULL),
+ : inputList_(nullptr),
+ labelsIterIndex_(-1), itemsIterIndex_(0), currentBucket_(nullptr),
maxLabelCount_(99),
- initialLabels_(NULL), firstCharsInScripts_(NULL),
- collator_(NULL), collatorPrimaryOnly_(NULL),
- buckets_(NULL) {
+ initialLabels_(nullptr), firstCharsInScripts_(nullptr),
+ collator_(nullptr), collatorPrimaryOnly_(nullptr),
+ buckets_(nullptr) {
init(&locale, status);
}
AlphabeticIndex::AlphabeticIndex(RuleBasedCollator *collator, UErrorCode &status)
- : inputList_(NULL),
- labelsIterIndex_(-1), itemsIterIndex_(0), currentBucket_(NULL),
+ : inputList_(nullptr),
+ labelsIterIndex_(-1), itemsIterIndex_(0), currentBucket_(nullptr),
maxLabelCount_(99),
- initialLabels_(NULL), firstCharsInScripts_(NULL),
- collator_(collator), collatorPrimaryOnly_(NULL),
- buckets_(NULL) {
- init(NULL, status);
+ initialLabels_(nullptr), firstCharsInScripts_(nullptr),
+ collator_(collator), collatorPrimaryOnly_(nullptr),
+ buckets_(nullptr) {
+ init(nullptr, status);
}
@@ -253,22 +253,22 @@ AlphabeticIndex &AlphabeticIndex::addLabels(const Locale &locale, UErrorCode &st
AlphabeticIndex::ImmutableIndex *AlphabeticIndex::buildImmutableIndex(UErrorCode &errorCode) {
- if (U_FAILURE(errorCode)) { return NULL; }
+ if (U_FAILURE(errorCode)) { return nullptr; }
// In C++, the ImmutableIndex must own its copy of the BucketList,
// even if it contains no records, for proper memory management.
- // We could clone the buckets_ if they are not NULL,
+ // We could clone the buckets_ if they are not nullptr,
// but that would be worth it only if this method is called multiple times,
// or called after using the old-style bucket iterator API.
LocalPointer<BucketList> immutableBucketList(createBucketList(errorCode));
LocalPointer<RuleBasedCollator> coll(collatorPrimaryOnly_->clone());
if (immutableBucketList.isNull() || coll.isNull()) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
ImmutableIndex *immIndex = new ImmutableIndex(immutableBucketList.getAlias(), coll.getAlias());
- if (immIndex == NULL) {
+ if (immIndex == nullptr) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
// The ImmutableIndex adopted its parameter objects.
immutableBucketList.orphan();
@@ -286,7 +286,7 @@ int32_t AlphabeticIndex::getBucketCount(UErrorCode &status) {
int32_t AlphabeticIndex::getRecordCount(UErrorCode &status) {
- if (U_FAILURE(status) || inputList_ == NULL) {
+ if (U_FAILURE(status) || inputList_ == nullptr) {
return 0;
}
return inputList_->size();
@@ -319,7 +319,7 @@ void AlphabeticIndex::initLabels(UVector &indexCharacters, UErrorCode &errorCode
// even if the label string sorts the same when all contractions are suppressed.
ownedItem.adoptInstead(new UnicodeString(*item, 0, itemLength - 1));
item = ownedItem.getAlias();
- if (item == NULL) {
+ if (item == nullptr) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -376,19 +376,19 @@ const UnicodeString &fixLabel(const UnicodeString &current, UnicodeString &temp)
if (!current.startsWith(BASE, BASE_LENGTH)) {
return current;
}
- UChar rest = current.charAt(BASE_LENGTH);
+ char16_t rest = current.charAt(BASE_LENGTH);
if (0x2800 < rest && rest <= 0x28FF) { // stroke count
int32_t count = rest-0x2800;
- temp.setTo((UChar)(0x30 + count % 10));
+ temp.setTo((char16_t)(0x30 + count % 10));
if (count >= 10) {
count /= 10;
- temp.insert(0, (UChar)(0x30 + count % 10));
+ temp.insert(0, (char16_t)(0x30 + count % 10));
if (count >= 10) {
count /= 10;
- temp.insert(0, (UChar)(0x30 + count));
+ temp.insert(0, (char16_t)(0x30 + count));
}
}
- return temp.append((UChar)0x5283);
+ return temp.append((char16_t)0x5283);
}
return temp.setTo(current, BASE_LENGTH);
}
@@ -421,7 +421,7 @@ BucketList *AlphabeticIndex::createBucketList(UErrorCode &errorCode) const {
UVector indexCharacters(errorCode);
indexCharacters.setDeleter(uprv_deleteUObject);
initLabels(indexCharacters, errorCode);
- if (U_FAILURE(errorCode)) { return NULL; }
+ if (U_FAILURE(errorCode)) { return nullptr; }
// Variables for hasMultiplePrimaryWeights().
UVector64 ces(errorCode);
@@ -435,28 +435,28 @@ BucketList *AlphabeticIndex::createBucketList(UErrorCode &errorCode) const {
// Helper arrays for Chinese Pinyin collation.
Bucket *asciiBuckets[26] = {
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL
+ nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr,
+ nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr
};
Bucket *pinyinBuckets[26] = {
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL
+ nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr,
+ nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr
};
UBool hasPinyin = false;
LocalPointer<UVector> bucketList(new UVector(errorCode), errorCode);
if (U_FAILURE(errorCode)) {
- return NULL;
+ return nullptr;
}
bucketList->setDeleter(uprv_deleteUObject);
// underflow bucket
LocalPointer<Bucket> bucket(new Bucket(getUnderflowLabel(), emptyString_, U_ALPHAINDEX_UNDERFLOW), errorCode);
if (U_FAILURE(errorCode)) {
- return NULL;
+ return nullptr;
}
bucketList->adoptElement(bucket.orphan(), errorCode);
- if (U_FAILURE(errorCode)) { return NULL; }
+ if (U_FAILURE(errorCode)) { return nullptr; }
UnicodeString temp;
@@ -492,7 +492,7 @@ BucketList *AlphabeticIndex::createBucketList(UErrorCode &errorCode) const {
bucketList->adoptElement(bucket.orphan(), errorCode);
if (U_FAILURE(errorCode)) { return nullptr; }
// Remember ASCII and Pinyin buckets for Pinyin redirects.
- UChar c;
+ char16_t c;
if (current.length() == 1 && 0x41 <= (c = current.charAt(0)) && c <= 0x5A) { // A-Z
asciiBuckets[c - 0x41] = (Bucket *)bucketList->lastElement();
} else if (current.length() == BASE_LENGTH + 1 && current.startsWith(BASE, BASE_LENGTH) &&
@@ -513,7 +513,7 @@ BucketList *AlphabeticIndex::createBucketList(UErrorCode &errorCode) const {
// underflow or inflow label.
break;
}
- if (singleBucket->displayBucket_ == NULL &&
+ if (singleBucket->displayBucket_ == nullptr &&
!hasMultiplePrimaryWeights(*collatorPrimaryOnly_, variableTop,
singleBucket->lowerBoundary_,
ces, errorCode)) {
@@ -522,11 +522,11 @@ BucketList *AlphabeticIndex::createBucketList(UErrorCode &errorCode) const {
// For example, after ... Q R S Sch we add Sch\uFFFF->S
// and after ... Q R S Sch Sch\uFFFF St we add St\uFFFF->S.
bucket.adoptInsteadAndCheckErrorCode(new Bucket(emptyString_,
- UnicodeString(current).append((UChar)0xFFFF),
+ UnicodeString(current).append((char16_t)0xFFFF),
U_ALPHAINDEX_NORMAL),
errorCode);
if (U_FAILURE(errorCode)) {
- return NULL;
+ return nullptr;
}
bucket->displayBucket_ = singleBucket;
bucketList->adoptElement(bucket.orphan(), errorCode);
@@ -537,13 +537,13 @@ BucketList *AlphabeticIndex::createBucketList(UErrorCode &errorCode) const {
}
}
}
- if (U_FAILURE(errorCode)) { return NULL; }
+ if (U_FAILURE(errorCode)) { return nullptr; }
if (bucketList->size() == 1) {
// No real labels, show only the underflow label.
BucketList *bl = new BucketList(bucketList.getAlias(), bucketList.getAlias());
- if (bl == NULL) {
+ if (bl == nullptr) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
bucketList.orphan();
return bl;
@@ -556,24 +556,24 @@ BucketList *AlphabeticIndex::createBucketList(UErrorCode &errorCode) const {
if (hasPinyin) {
// Redirect Pinyin buckets.
- Bucket *asciiBucket = NULL;
+ Bucket *asciiBucket = nullptr;
for (int32_t i = 0; i < 26; ++i) {
- if (asciiBuckets[i] != NULL) {
+ if (asciiBuckets[i] != nullptr) {
asciiBucket = asciiBuckets[i];
}
- if (pinyinBuckets[i] != NULL && asciiBucket != NULL) {
+ if (pinyinBuckets[i] != nullptr && asciiBucket != nullptr) {
pinyinBuckets[i]->displayBucket_ = asciiBucket;
hasInvisibleBuckets = true;
}
}
}
- if (U_FAILURE(errorCode)) { return NULL; }
+ if (U_FAILURE(errorCode)) { return nullptr; }
if (!hasInvisibleBuckets) {
BucketList *bl = new BucketList(bucketList.getAlias(), bucketList.getAlias());
- if (bl == NULL) {
+ if (bl == nullptr) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
bucketList.orphan();
return bl;
@@ -584,7 +584,7 @@ BucketList *AlphabeticIndex::createBucketList(UErrorCode &errorCode) const {
Bucket *nextBucket = getBucket(*bucketList, i);
while (--i > 0) {
Bucket *bucket = getBucket(*bucketList, i);
- if (bucket->displayBucket_ != NULL) {
+ if (bucket->displayBucket_ != nullptr) {
continue; // skip invisible buckets
}
if (bucket->labelType_ == U_ALPHAINDEX_INFLOW) {
@@ -598,21 +598,21 @@ BucketList *AlphabeticIndex::createBucketList(UErrorCode &errorCode) const {
LocalPointer<UVector> publicBucketList(new UVector(errorCode), errorCode);
if (U_FAILURE(errorCode)) {
- return NULL;
+ return nullptr;
}
// Do not call publicBucketList->setDeleter():
// This vector shares its objects with the bucketList.
for (int32_t j = 0; j < bucketList->size(); ++j) {
Bucket *bucket = getBucket(*bucketList, j);
- if (bucket->displayBucket_ == NULL) {
+ if (bucket->displayBucket_ == nullptr) {
publicBucketList->addElement(bucket, errorCode);
}
}
- if (U_FAILURE(errorCode)) { return NULL; }
+ if (U_FAILURE(errorCode)) { return nullptr; }
BucketList *bl = new BucketList(bucketList.getAlias(), publicBucketList.getAlias());
- if (bl == NULL) {
+ if (bl == nullptr) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
bucketList.orphan();
publicBucketList.orphan();
@@ -623,11 +623,11 @@ BucketList *AlphabeticIndex::createBucketList(UErrorCode &errorCode) const {
* Creates an index, and buckets and sorts the list of records into the index.
*/
void AlphabeticIndex::initBuckets(UErrorCode &errorCode) {
- if (U_FAILURE(errorCode) || buckets_ != NULL) {
+ if (U_FAILURE(errorCode) || buckets_ != nullptr) {
return;
}
buckets_ = createBucketList(errorCode);
- if (U_FAILURE(errorCode) || inputList_ == NULL || inputList_->isEmpty()) {
+ if (U_FAILURE(errorCode) || inputList_ == nullptr || inputList_->isEmpty()) {
return;
}
@@ -649,14 +649,14 @@ void AlphabeticIndex::initBuckets(UErrorCode &errorCode) {
nextBucket = getBucket(*buckets_->bucketList_, bucketIndex++);
upperBoundary = &nextBucket->lowerBoundary_;
} else {
- nextBucket = NULL;
- upperBoundary = NULL;
+ nextBucket = nullptr;
+ upperBoundary = nullptr;
}
for (int32_t i = 0; i < inputList_->size(); ++i) {
Record *r = getRecord(*inputList_, i);
// if the current bucket isn't the right one, find the one that is
// We have a special flag for the last bucket so that we don't look any further
- while (upperBoundary != NULL &&
+ while (upperBoundary != nullptr &&
collatorPrimaryOnly_->compare(r->name_, *upperBoundary, errorCode) >= 0) {
currentBucket = nextBucket;
// now reset the boundary that we compare against
@@ -664,15 +664,15 @@ void AlphabeticIndex::initBuckets(UErrorCode &errorCode) {
nextBucket = getBucket(*buckets_->bucketList_, bucketIndex++);
upperBoundary = &nextBucket->lowerBoundary_;
} else {
- upperBoundary = NULL;
+ upperBoundary = nullptr;
}
}
// now put the record into the bucket.
Bucket *bucket = currentBucket;
- if (bucket->displayBucket_ != NULL) {
+ if (bucket->displayBucket_ != nullptr) {
bucket = bucket->displayBucket_;
}
- if (bucket->records_ == NULL) {
+ if (bucket->records_ == nullptr) {
LocalPointer<UVector> records(new UVector(errorCode), errorCode);
if (U_FAILURE(errorCode)) {
return;
@@ -684,16 +684,16 @@ void AlphabeticIndex::initBuckets(UErrorCode &errorCode) {
}
void AlphabeticIndex::clearBuckets() {
- if (buckets_ != NULL) {
+ if (buckets_ != nullptr) {
delete buckets_;
- buckets_ = NULL;
+ buckets_ = nullptr;
internalResetBucketIterator();
}
}
void AlphabeticIndex::internalResetBucketIterator() {
labelsIterIndex_ = -1;
- currentBucket_ = NULL;
+ currentBucket_ = nullptr;
}
@@ -760,7 +760,7 @@ UBool AlphabeticIndex::addChineseIndexCharacters(UErrorCode &errorCode) {
while (iter.next()) {
const UnicodeString &s = iter.getString();
U_ASSERT (s.startsWith(BASE, BASE_LENGTH));
- UChar c = s.charAt(s.length() - 1);
+ char16_t c = s.charAt(s.length() - 1);
if (0x41 <= c && c <= 0x5A) { // A-Z
// There are Pinyin labels, add ASCII A-Z labels as well.
initialLabels_->add(0x41, 0x5A); // A-Z
@@ -774,7 +774,7 @@ UBool AlphabeticIndex::addChineseIndexCharacters(UErrorCode &errorCode) {
/*
* Return the string with interspersed CGJs. Input must have more than 2 codepoints.
*/
-static const UChar CGJ = 0x034F;
+static const char16_t CGJ = 0x034F;
UnicodeString AlphabeticIndex::separated(const UnicodeString &item) {
UnicodeString result;
if (item.length() == 0) {
@@ -869,40 +869,40 @@ AlphabeticIndex &AlphabeticIndex::setMaxLabelCount(int32_t maxLabelCount, UError
void AlphabeticIndex::init(const Locale *locale, UErrorCode &status) {
if (U_FAILURE(status)) { return; }
- if (locale == NULL && collator_ == NULL) {
+ if (locale == nullptr && collator_ == nullptr) {
status = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
initialLabels_ = new UnicodeSet();
- if (initialLabels_ == NULL) {
+ if (initialLabels_ == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
- inflowLabel_.setTo((UChar)0x2026); // Ellipsis
+ inflowLabel_.setTo((char16_t)0x2026); // Ellipsis
overflowLabel_ = inflowLabel_;
underflowLabel_ = inflowLabel_;
- if (collator_ == NULL) {
+ if (collator_ == nullptr) {
Collator *coll = Collator::createInstance(*locale, status);
if (U_FAILURE(status)) {
delete coll;
return;
}
- if (coll == NULL) {
+ if (coll == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
collator_ = dynamic_cast<RuleBasedCollator *>(coll);
- if (collator_ == NULL) {
+ if (collator_ == nullptr) {
delete coll;
status = U_UNSUPPORTED_ERROR;
return;
}
}
collatorPrimaryOnly_ = collator_->clone();
- if (collatorPrimaryOnly_ == NULL) {
+ if (collatorPrimaryOnly_ == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -930,7 +930,7 @@ void AlphabeticIndex::init(const Locale *locale, UErrorCode &status) {
// Chinese index characters, which are specific to each of the several Chinese tailorings,
// take precedence over the single locale data exemplar set per language.
- if (!addChineseIndexCharacters(status) && locale != NULL) {
+ if (!addChineseIndexCharacters(status) && locale != nullptr) {
addIndexExemplars(*locale, status);
}
}
@@ -947,13 +947,13 @@ collatorComparator(const void *context, const void *left, const void *right) {
const UnicodeString *rightString = static_cast<const UnicodeString *>(rightElement->pointer);
if (leftString == rightString) {
- // Catches case where both are NULL
+ // Catches case where both are nullptr
return 0;
}
- if (leftString == NULL) {
+ if (leftString == nullptr) {
return 1;
}
- if (rightString == NULL) {
+ if (rightString == nullptr) {
return -1;
}
const Collator *col = static_cast<const Collator *>(context);
@@ -977,11 +977,11 @@ recordCompareFn(const void *context, const void *left, const void *right) {
UVector *AlphabeticIndex::firstStringsInScript(UErrorCode &status) {
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
LocalPointer<UVector> dest(new UVector(status), status);
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
dest->setDeleter(uprv_deleteUObject);
// Fetch the script-first-primary contractions which are defined in the root collator.
@@ -989,11 +989,11 @@ UVector *AlphabeticIndex::firstStringsInScript(UErrorCode &status) {
UnicodeSet set;
collatorPrimaryOnly_->internalAddContractions(0xFDD1, set, status);
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
if (set.isEmpty()) {
status = U_UNSUPPORTED_ERROR;
- return NULL;
+ return nullptr;
}
UnicodeSetIterator iter(set);
while (iter.next()) {
@@ -1059,7 +1059,7 @@ AlphabeticIndex & AlphabeticIndex::addRecord(const UnicodeString &name, const vo
if (U_FAILURE(status)) {
return *this;
}
- if (inputList_ == NULL) {
+ if (inputList_ == nullptr) {
LocalPointer<UVector> inputList(new UVector(status), status);
if (U_FAILURE(status)) {
return *this;
@@ -1082,7 +1082,7 @@ AlphabeticIndex & AlphabeticIndex::addRecord(const UnicodeString &name, const vo
AlphabeticIndex &AlphabeticIndex::clearRecords(UErrorCode &status) {
- if (U_SUCCESS(status) && inputList_ != NULL && !inputList_->isEmpty()) {
+ if (U_SUCCESS(status) && inputList_ != nullptr && !inputList_->isEmpty()) {
inputList_->removeAllElements();
clearBuckets();
}
@@ -1107,7 +1107,7 @@ UBool AlphabeticIndex::nextBucket(UErrorCode &status) {
if (U_FAILURE(status)) {
return false;
}
- if (buckets_ == NULL && currentBucket_ != NULL) {
+ if (buckets_ == nullptr && currentBucket_ != nullptr) {
status = U_ENUM_OUT_OF_SYNC_ERROR;
return false;
}
@@ -1126,7 +1126,7 @@ UBool AlphabeticIndex::nextBucket(UErrorCode &status) {
}
const UnicodeString &AlphabeticIndex::getBucketLabel() const {
- if (currentBucket_ != NULL) {
+ if (currentBucket_ != nullptr) {
return currentBucket_->label_;
} else {
return emptyString_;
@@ -1135,7 +1135,7 @@ const UnicodeString &AlphabeticIndex::getBucketLabel() const {
UAlphabeticIndexLabelType AlphabeticIndex::getBucketLabelType() const {
- if (currentBucket_ != NULL) {
+ if (currentBucket_ != nullptr) {
return currentBucket_->labelType_;
} else {
return U_ALPHAINDEX_NORMAL;
@@ -1144,7 +1144,7 @@ UAlphabeticIndexLabelType AlphabeticIndex::getBucketLabelType() const {
int32_t AlphabeticIndex::getBucketRecordCount() const {
- if (currentBucket_ != NULL && currentBucket_->records_ != NULL) {
+ if (currentBucket_ != nullptr && currentBucket_->records_ != nullptr) {
return currentBucket_->records_->size();
} else {
return 0;
@@ -1165,17 +1165,17 @@ UBool AlphabeticIndex::nextRecord(UErrorCode &status) {
if (U_FAILURE(status)) {
return false;
}
- if (currentBucket_ == NULL) {
+ if (currentBucket_ == nullptr) {
// We are trying to iterate over the items in a bucket, but there is no
// current bucket from the enumeration of buckets.
status = U_INVALID_STATE_ERROR;
return false;
}
- if (buckets_ == NULL) {
+ if (buckets_ == nullptr) {
status = U_ENUM_OUT_OF_SYNC_ERROR;
return false;
}
- if (currentBucket_->records_ == NULL) {
+ if (currentBucket_->records_ == nullptr) {
return false;
}
++itemsIterIndex_;
@@ -1189,7 +1189,7 @@ UBool AlphabeticIndex::nextRecord(UErrorCode &status) {
const UnicodeString &AlphabeticIndex::getRecordName() const {
const UnicodeString *retStr = &emptyString_;
- if (currentBucket_ != NULL && currentBucket_->records_ != NULL &&
+ if (currentBucket_ != nullptr && currentBucket_->records_ != nullptr &&
itemsIterIndex_ >= 0 &&
itemsIterIndex_ < currentBucket_->records_->size()) {
Record *item = static_cast<Record *>(currentBucket_->records_->elementAt(itemsIterIndex_));
@@ -1199,8 +1199,8 @@ const UnicodeString &AlphabeticIndex::getRecordName() const {
}
const void *AlphabeticIndex::getRecordData() const {
- const void *retPtr = NULL;
- if (currentBucket_ != NULL && currentBucket_->records_ != NULL &&
+ const void *retPtr = nullptr;
+ if (currentBucket_ != nullptr && currentBucket_->records_ != nullptr &&
itemsIterIndex_ >= 0 &&
itemsIterIndex_ < currentBucket_->records_->size()) {
Record *item = static_cast<Record *>(currentBucket_->records_->elementAt(itemsIterIndex_));
@@ -1221,8 +1221,8 @@ AlphabeticIndex::Bucket::Bucket(const UnicodeString &label,
const UnicodeString &lowerBoundary,
UAlphabeticIndexLabelType type)
: label_(label), lowerBoundary_(lowerBoundary), labelType_(type),
- displayBucket_(NULL), displayIndex_(-1),
- records_(NULL) {
+ displayBucket_(nullptr), displayIndex_(-1),
+ records_(nullptr) {
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/anytrans.cpp b/Build/source/libs/icu/icu-src/source/i18n/anytrans.cpp
index e10ff479ddd..4972b687333 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/anytrans.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/anytrans.cpp
@@ -29,11 +29,11 @@
//------------------------------------------------------------
// Constants
-static const UChar TARGET_SEP = 45; // '-'
-static const UChar VARIANT_SEP = 47; // '/'
-static const UChar ANY[] = {0x41,0x6E,0x79,0}; // "Any"
-static const UChar NULL_ID[] = {78,117,108,108,0}; // "Null"
-static const UChar LATIN_PIVOT[] = {0x2D,0x4C,0x61,0x74,0x6E,0x3B,0x4C,0x61,0x74,0x6E,0x2D,0}; // "-Latn;Latn-"
+static const char16_t TARGET_SEP = 45; // '-'
+static const char16_t VARIANT_SEP = 47; // '/'
+static const char16_t ANY[] = {0x41,0x6E,0x79,0}; // "Any"
+static const char16_t NULL_ID[] = {78,117,108,108,0}; // "Null"
+static const char16_t LATIN_PIVOT[] = {0x2D,0x4C,0x61,0x74,0x6E,0x3B,0x4C,0x61,0x74,0x6E,0x2D,0}; // "-Latn;Latn-"
// initial size for an Any-XXXX transform's cache of script-XXXX transforms
// (will grow as necessary, but we don't expect to have source text with more than 7 scripts)
@@ -187,10 +187,10 @@ AnyTransliterator::AnyTransliterator(const UnicodeString& id,
const UnicodeString& theVariant,
UScriptCode theTargetScript,
UErrorCode& ec) :
- Transliterator(id, NULL),
+ Transliterator(id, nullptr),
targetScript(theTargetScript)
{
- cache = uhash_openSize(uhash_hashLong, uhash_compareLong, NULL, ANY_TRANS_CACHE_INIT_SIZE, &ec);
+ cache = uhash_openSize(uhash_hashLong, uhash_compareLong, nullptr, ANY_TRANS_CACHE_INIT_SIZE, &ec);
if (U_FAILURE(ec)) {
return;
}
@@ -216,7 +216,7 @@ AnyTransliterator::AnyTransliterator(const AnyTransliterator& o) :
{
// Don't copy the cache contents
UErrorCode ec = U_ZERO_ERROR;
- cache = uhash_openSize(uhash_hashLong, uhash_compareLong, NULL, ANY_TRANS_CACHE_INIT_SIZE, &ec);
+ cache = uhash_openSize(uhash_hashLong, uhash_compareLong, nullptr, ANY_TRANS_CACHE_INIT_SIZE, &ec);
if (U_FAILURE(ec)) {
return;
}
@@ -248,7 +248,7 @@ void AnyTransliterator::handleTransliterate(Replaceable& text, UTransPosition& p
// our target or target/variant
Transliterator* t = getTransliterator(it.scriptCode);
- if (t == NULL) {
+ if (t == nullptr) {
// We have no transliterator. Do nothing, but keep
// pos.start up to date.
pos.start = it.limit;
@@ -280,40 +280,40 @@ void AnyTransliterator::handleTransliterate(Replaceable& text, UTransPosition& p
Transliterator* AnyTransliterator::getTransliterator(UScriptCode source) const {
if (source == targetScript || source == USCRIPT_INVALID_CODE) {
- return NULL;
+ return nullptr;
}
- Transliterator* t = NULL;
+ Transliterator* t = nullptr;
{
- Mutex m(NULL);
+ Mutex m(nullptr);
t = (Transliterator*) uhash_iget(cache, (int32_t) source);
}
- if (t == NULL) {
+ if (t == nullptr) {
UErrorCode ec = U_ZERO_ERROR;
UnicodeString sourceName(uscript_getShortName(source), -1, US_INV);
UnicodeString id(sourceName);
id.append(TARGET_SEP).append(target);
t = Transliterator::createInstance(id, UTRANS_FORWARD, ec);
- if (U_FAILURE(ec) || t == NULL) {
+ if (U_FAILURE(ec) || t == nullptr) {
delete t;
// Try to pivot around Latin, our most common script
id = sourceName;
id.append(LATIN_PIVOT, -1).append(target);
t = Transliterator::createInstance(id, UTRANS_FORWARD, ec);
- if (U_FAILURE(ec) || t == NULL) {
+ if (U_FAILURE(ec) || t == nullptr) {
delete t;
- t = NULL;
+ t = nullptr;
}
}
- if (t != NULL) {
- Transliterator *rt = NULL;
+ if (t != nullptr) {
+ Transliterator *rt = nullptr;
{
- Mutex m(NULL);
+ Mutex m(nullptr);
rt = static_cast<Transliterator *> (uhash_iget(cache, (int32_t) source));
- if (rt == NULL) {
+ if (rt == nullptr) {
// Common case, no race to cache this new transliterator.
uhash_iput(cache, (int32_t) source, t, &ec);
} else {
@@ -341,7 +341,7 @@ static UScriptCode scriptNameToCode(const UnicodeString& name) {
if (isInvariant) {
name.extract(0, nameLen, buf, (int32_t)sizeof(buf), US_INV);
- buf[127] = 0; // Make sure that we NULL terminate the string.
+ buf[127] = 0; // Make sure that we nullptr terminate the string.
}
if (!isInvariant || uscript_getCode(buf, &code, 1, &ec) != 1 || U_FAILURE(ec))
{
diff --git a/Build/source/libs/icu/icu-src/source/i18n/anytrans.h b/Build/source/libs/icu/icu-src/source/i18n/anytrans.h
index 67ebb2e7d2f..9aa7eef2ce7 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/anytrans.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/anytrans.h
@@ -107,7 +107,7 @@ private:
/**
* Returns a transliterator from the given source to our target or
- * target/variant. Returns NULL if the source is the same as our
+ * target/variant. Returns nullptr 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
diff --git a/Build/source/libs/icu/icu-src/source/i18n/astro.cpp b/Build/source/libs/icu/icu-src/source/i18n/astro.cpp
index b28e9f06ba5..575efeb1758 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/astro.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/astro.cpp
@@ -44,8 +44,8 @@ static void debug_astro_msg(const char *pat, ...)
#include "unicode/ustring.h"
static const char * debug_astro_date(UDate d) {
static char gStrBuf[1024];
- static DateFormat *df = NULL;
- if(df == NULL) {
+ static DateFormat *df = nullptr;
+ if(df == nullptr) {
df = DateFormat::createDateTimeInstance(DateFormat::MEDIUM, DateFormat::MEDIUM, Locale::getUS());
df->adoptTimeZone(TimeZone::getGMT()->clone());
}
@@ -68,7 +68,7 @@ static inline UBool isINVALID(double d) {
static icu::UMutex ccLock;
U_CDECL_BEGIN
-static UBool calendar_astro_cleanup(void) {
+static UBool calendar_astro_cleanup() {
return true;
}
U_CDECL_END
@@ -1481,7 +1481,7 @@ UnicodeString CalendarAstronomer::Ecliptic::toString() const
{
#ifdef U_DEBUG_ASTRO
char tmp[800];
- sprintf(tmp, "[%.5f,%.5f]", longitude*RAD_DEG, latitude*RAD_DEG);
+ snprintf(tmp, sizeof(tmp), "[%.5f,%.5f]", longitude*RAD_DEG, latitude*RAD_DEG);
return UnicodeString(tmp, "");
#else
return UnicodeString();
@@ -1492,7 +1492,7 @@ UnicodeString CalendarAstronomer::Equatorial::toString() const
{
#ifdef U_DEBUG_ASTRO
char tmp[400];
- sprintf(tmp, "%f,%f",
+ snprintf(tmp, sizeof(tmp), "%f,%f",
(ascension*RAD_DEG), (declination*RAD_DEG));
return UnicodeString(tmp, "");
#else
@@ -1504,7 +1504,7 @@ UnicodeString CalendarAstronomer::Horizon::toString() const
{
#ifdef U_DEBUG_ASTRO
char tmp[800];
- sprintf(tmp, "[%.5f,%.5f]", altitude*RAD_DEG, azimuth*RAD_DEG);
+ snprintf(tmp, sizeof(tmp), "[%.5f,%.5f]", altitude*RAD_DEG, azimuth*RAD_DEG);
return UnicodeString(tmp, "");
#else
return UnicodeString();
@@ -1532,13 +1532,13 @@ UnicodeString CalendarAstronomer::Horizon::toString() const
void CalendarCache::createCache(CalendarCache** cache, UErrorCode& status) {
ucln_i18n_registerCleanup(UCLN_I18N_ASTRO_CALENDAR, calendar_astro_cleanup);
- if(cache == NULL) {
+ if(cache == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
} else {
*cache = new CalendarCache(32, status);
if(U_FAILURE(status)) {
delete *cache;
- *cache = NULL;
+ *cache = nullptr;
}
}
}
@@ -1551,7 +1551,7 @@ int32_t CalendarCache::get(CalendarCache** cache, int32_t key, UErrorCode &statu
}
umtx_lock(&ccLock);
- if(*cache == NULL) {
+ if(*cache == nullptr) {
createCache(cache, status);
if(U_FAILURE(status)) {
umtx_unlock(&ccLock);
@@ -1572,7 +1572,7 @@ void CalendarCache::put(CalendarCache** cache, int32_t key, int32_t value, UErro
}
umtx_lock(&ccLock);
- if(*cache == NULL) {
+ if(*cache == nullptr) {
createCache(cache, status);
if(U_FAILURE(status)) {
umtx_unlock(&ccLock);
@@ -1587,12 +1587,12 @@ void CalendarCache::put(CalendarCache** cache, int32_t key, int32_t value, UErro
}
CalendarCache::CalendarCache(int32_t size, UErrorCode &status) {
- fTable = uhash_openSize(uhash_hashLong, uhash_compareLong, NULL, size, &status);
+ fTable = uhash_openSize(uhash_hashLong, uhash_compareLong, nullptr, size, &status);
U_DEBUG_ASTRO_MSG(("%p: Opening.\n", fTable));
}
CalendarCache::~CalendarCache() {
- if(fTable != NULL) {
+ if(fTable != nullptr) {
U_DEBUG_ASTRO_MSG(("%p: Closing.\n", fTable));
uhash_close(fTable);
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/basictz.cpp b/Build/source/libs/icu/icu-src/source/i18n/basictz.cpp
index dfc3aea6cbc..2490fadcc91 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/basictz.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/basictz.cpp
@@ -131,17 +131,17 @@ BasicTimeZone::hasEquivalentTransitions(const BasicTimeZone& tz, UDate start, UD
void
BasicTimeZone::getSimpleRulesNear(UDate date, InitialTimeZoneRule*& initial,
AnnualTimeZoneRule*& std, AnnualTimeZoneRule*& dst, UErrorCode& status) const {
- initial = NULL;
- std = NULL;
- dst = NULL;
+ initial = nullptr;
+ std = nullptr;
+ dst = nullptr;
if (U_FAILURE(status)) {
return;
}
int32_t initialRaw, initialDst;
UnicodeString initialName;
- AnnualTimeZoneRule *ar1 = NULL;
- AnnualTimeZoneRule *ar2 = NULL;
+ AnnualTimeZoneRule *ar1 = nullptr;
+ AnnualTimeZoneRule *ar2 = nullptr;
UnicodeString name;
UBool avail;
@@ -207,12 +207,12 @@ BasicTimeZone::getSimpleRulesNear(UDate date, InitialTimeZoneRule*& initial,
|| initialDst != tr.getTo()->getDSTSavings()) {
// We cannot use this rule as the second transition rule
delete ar2;
- ar2 = NULL;
+ ar2 = nullptr;
}
}
}
}
- if (ar2 == NULL) {
+ if (ar2 == nullptr) {
// Try previous transition
avail = getPreviousTransition(date, true, tr);
if (avail) {
@@ -238,15 +238,15 @@ BasicTimeZone::getSimpleRulesNear(UDate date, InitialTimeZoneRule*& initial,
if (!avail || d <= nextTransitionTime) {
// We cannot use this rule as the second transition rule
delete ar2;
- ar2 = NULL;
+ ar2 = nullptr;
}
}
}
}
- if (ar2 == NULL) {
+ if (ar2 == nullptr) {
// Cannot find a good pair of AnnualTimeZoneRule
delete ar1;
- ar1 = NULL;
+ ar1 = nullptr;
} else {
// The initial rule should represent the rule before the previous transition
ar1->getName(initialName);
@@ -274,7 +274,7 @@ BasicTimeZone::getSimpleRulesNear(UDate date, InitialTimeZoneRule*& initial,
initial = new InitialTimeZoneRule(initialName, initialRaw, initialDst);
// Set the standard and daylight saving rules
- if (ar1 != NULL && ar2 != NULL) {
+ if (ar1 != nullptr && ar2 != nullptr) {
if (ar1->getDSTSavings() != 0) {
dst = ar1;
std = ar2;
@@ -405,7 +405,7 @@ BasicTimeZone::getTimeZoneRulesAfter(UDate start, InitialTimeZoneRule*& initial,
}
const TimeArrayTimeZoneRule *tar = dynamic_cast<const TimeArrayTimeZoneRule *>(toRule);
const AnnualTimeZoneRule *ar;
- if (tar != NULL) {
+ if (tar != nullptr) {
// Get the previous raw offset and DST savings before the very first start time
TimeZoneTransition tzt0;
t = start;
@@ -472,7 +472,7 @@ BasicTimeZone::getTimeZoneRulesAfter(UDate start, InitialTimeZoneRule*& initial,
}
}
}
- } else if ((ar = dynamic_cast<const AnnualTimeZoneRule *>(toRule)) != NULL) {
+ } else if ((ar = dynamic_cast<const AnnualTimeZoneRule *>(toRule)) != nullptr) {
ar->getFirstStart(tzt.getFrom()->getRawOffset(), tzt.getFrom()->getDSTSavings(), firstStart);
if (firstStart == tzt.getTime()) {
// Just add the rule as is
diff --git a/Build/source/libs/icu/icu-src/source/i18n/bocsu.cpp b/Build/source/libs/icu/icu-src/source/i18n/bocsu.cpp
index 861a76a0427..585415643ba 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/bocsu.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/bocsu.cpp
@@ -98,7 +98,7 @@ u_writeDiff(int32_t diff, uint8_t *p) {
* NFD text - there are never Hangul characters included.
*/
U_CFUNC UChar32
-u_writeIdenticalLevelRun(UChar32 prev, const UChar *s, int32_t length, icu::ByteSink &sink) {
+u_writeIdenticalLevelRun(UChar32 prev, const char16_t *s, int32_t length, icu::ByteSink &sink) {
char scratch[64];
int32_t capacity;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/brktrans.cpp b/Build/source/libs/icu/icu-src/source/i18n/brktrans.cpp
index f0ec8407db2..1ec0b2ad441 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/brktrans.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/brktrans.cpp
@@ -34,7 +34,7 @@ U_NAMESPACE_BEGIN
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(BreakTransliterator)
-static const UChar SPACE = 32; // ' '
+static const char16_t SPACE = 32; // ' '
/**
@@ -43,7 +43,7 @@ static const UChar SPACE = 32; // ' '
*/
BreakTransliterator::BreakTransliterator(UnicodeFilter* adoptedFilter) :
Transliterator(UNICODE_STRING("Any-BreakInternal", 17), adoptedFilter),
- cachedBI(NULL), cachedBoundaries(NULL), fInsertion(SPACE) {
+ cachedBI(nullptr), cachedBoundaries(nullptr), fInsertion(SPACE) {
}
@@ -57,7 +57,7 @@ BreakTransliterator::~BreakTransliterator() {
* Copy constructor.
*/
BreakTransliterator::BreakTransliterator(const BreakTransliterator& o) :
- Transliterator(o), cachedBI(NULL), cachedBoundaries(NULL), fInsertion(o.fInsertion) {
+ Transliterator(o), cachedBI(nullptr), cachedBoundaries(nullptr), fInsertion(o.fInsertion) {
}
@@ -182,7 +182,7 @@ void BreakTransliterator::setInsertion(const UnicodeString &insertion) {
UnicodeString BreakTransliterator::replaceableAsString(Replaceable &r) {
UnicodeString s;
UnicodeString *rs = dynamic_cast<UnicodeString *>(&r);
- if (rs != NULL) {
+ if (rs != nullptr) {
s = *rs;
} else {
r.extractBetween(0, r.length(), s);
diff --git a/Build/source/libs/icu/icu-src/source/i18n/buddhcal.cpp b/Build/source/libs/icu/icu-src/source/i18n/buddhcal.cpp
index de304129cb4..dc14af00bf9 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/buddhcal.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/buddhcal.cpp
@@ -78,13 +78,6 @@ int32_t BuddhistCalendar::handleGetExtendedYear()
return year;
}
-int32_t BuddhistCalendar::handleComputeMonthStart(int32_t eyear, int32_t month,
-
- UBool useMonth) const
-{
- return GregorianCalendar::handleComputeMonthStart(eyear, month, useMonth);
-}
-
void BuddhistCalendar::handleComputeFields(int32_t julianDay, UErrorCode& status)
{
GregorianCalendar::handleComputeFields(julianDay, status);
diff --git a/Build/source/libs/icu/icu-src/source/i18n/buddhcal.h b/Build/source/libs/icu/icu-src/source/i18n/buddhcal.h
index 2ef5c524935..01b59341c12 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/buddhcal.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/buddhcal.h
@@ -107,7 +107,7 @@ public:
* same class ID. Objects of other classes have different class IDs.
* @internal
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
/**
* Return the class ID for this class. This is useful only for comparing to a return
@@ -120,7 +120,7 @@ public:
* @return The class ID for all objects of this class.
* @internal
*/
- U_I18N_API static UClassID U_EXPORT2 getStaticClassID(void);
+ U_I18N_API static UClassID U_EXPORT2 getStaticClassID();
/**
* return the calendar type, "buddhist".
@@ -157,21 +157,6 @@ private:
* @internal
*/
virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const override;
- /**
- * 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
- * @param return the Julian day number of the day before the first
- * day of the given month and year
- * @internal
- */
- virtual int32_t handleComputeMonthStart(int32_t eyear, int32_t month,
- UBool useMonth) const override;
/**
* Returns true because the Buddhist Calendar does have a default century
diff --git a/Build/source/libs/icu/icu-src/source/i18n/calendar.cpp b/Build/source/libs/icu/icu-src/source/i18n/calendar.cpp
index 7b8b929990f..4b6edc87c91 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/calendar.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/calendar.cpp
@@ -45,6 +45,7 @@
#include "hebrwcal.h"
#include "persncal.h"
#include "indiancal.h"
+#include "iso8601cal.h"
#include "chnsecal.h"
#include "coptccal.h"
#include "dangical.h"
@@ -62,18 +63,20 @@
#include "sharedcalendar.h"
#include "unifiedcache.h"
#include "ulocimp.h"
+#include "bytesinkutil.h"
+#include "charstr.h"
#if !UCONFIG_NO_SERVICE
-static icu::ICULocaleService* gService = NULL;
+static icu::ICULocaleService* gService = nullptr;
static icu::UInitOnce gServiceInitOnce {};
// INTERNAL - for cleanup
U_CDECL_BEGIN
-static UBool calendar_cleanup(void) {
+static UBool calendar_cleanup() {
#if !UCONFIG_NO_SERVICE
if (gService) {
delete gService;
- gService = NULL;
+ gService = nullptr;
}
gServiceInitOnce.reset();
#endif
@@ -175,7 +178,7 @@ static const char * const gCalTypes[] = {
"islamic-umalqura",
"islamic-tbla",
"islamic-rgsa",
- NULL
+ nullptr
};
// Must be in the order of gCalTypes above
@@ -228,7 +231,7 @@ const SharedCalendar *LocaleCacheKey<SharedCalendar>::createObject(
}
static ECalType getCalendarType(const char *s) {
- for (int i = 0; gCalTypes[i] != NULL; i++) {
+ for (int i = 0; gCalTypes[i] != nullptr; i++) {
if (uprv_stricmp(s, gCalTypes[i]) == 0) {
return (ECalType)i;
}
@@ -246,46 +249,32 @@ static UBool isStandardSupportedKeyword(const char *keyword, UErrorCode& status)
return (calType != CALTYPE_UNKNOWN);
}
-// only used with service registration.
-static void getCalendarKeyword(const UnicodeString &id, char *targetBuffer, int32_t targetBufferSize) {
- UnicodeString calendarKeyword = UNICODE_STRING_SIMPLE("calendar=");
- int32_t calKeyLen = calendarKeyword.length();
- int32_t keyLen = 0;
-
- int32_t keywordIdx = id.indexOf((UChar)0x003D); /* '=' */
- if (id[0] == 0x40/*'@'*/
- && id.compareBetween(1, keywordIdx+1, calendarKeyword, 0, calKeyLen) == 0)
- {
- keyLen = id.extract(keywordIdx+1, id.length(), targetBuffer, targetBufferSize, US_INV);
- }
- targetBuffer[keyLen] = 0;
-}
#endif
static ECalType getCalendarTypeForLocale(const char *locid) {
UErrorCode status = U_ZERO_ERROR;
ECalType calType = CALTYPE_UNKNOWN;
- //TODO: ULOC_FULL_NAME is out of date and too small..
- char canonicalName[256];
-
// Canonicalize, so that an old-style variant will be transformed to keywords.
// e.g ja_JP_TRADITIONAL -> ja_JP@calendar=japanese
// NOTE: Since ICU-20187, ja_JP_TRADITIONAL no longer canonicalizes, and
// the Gregorian calendar is returned instead.
- int32_t canonicalLen = uloc_canonicalize(locid, canonicalName, sizeof(canonicalName) - 1, &status);
+ CharString canonicalName;
+ {
+ CharStringByteSink sink(&canonicalName);
+ ulocimp_canonicalize(locid, sink, &status);
+ }
if (U_FAILURE(status)) {
return CALTYPE_GREGORIAN;
}
- canonicalName[canonicalLen] = 0; // terminate
-
- char calTypeBuf[32];
- int32_t calTypeBufLen;
- calTypeBufLen = uloc_getKeywordValue(canonicalName, "calendar", calTypeBuf, sizeof(calTypeBuf) - 1, &status);
+ CharString calTypeBuf;
+ {
+ CharStringByteSink sink(&calTypeBuf);
+ ulocimp_getKeywordValue(canonicalName.data(), "calendar", sink, &status);
+ }
if (U_SUCCESS(status)) {
- calTypeBuf[calTypeBufLen] = 0;
- calType = getCalendarType(calTypeBuf);
+ calType = getCalendarType(calTypeBuf.data());
if (calType != CALTYPE_UNKNOWN) {
return calType;
}
@@ -295,30 +284,27 @@ static ECalType getCalendarTypeForLocale(const char *locid) {
// when calendar keyword is not available or not supported, read supplementalData
// to get the default calendar type for the locale's region
char region[ULOC_COUNTRY_CAPACITY];
- (void)ulocimp_getRegionForSupplementalData(canonicalName, true, region, sizeof(region), &status);
+ (void)ulocimp_getRegionForSupplementalData(canonicalName.data(), true, region, sizeof(region), &status);
if (U_FAILURE(status)) {
return CALTYPE_GREGORIAN;
}
// Read preferred calendar values from supplementalData calendarPreference
- UResourceBundle *rb = ures_openDirect(NULL, "supplementalData", &status);
+ UResourceBundle *rb = ures_openDirect(nullptr, "supplementalData", &status);
ures_getByKey(rb, "calendarPreferenceData", rb, &status);
- UResourceBundle *order = ures_getByKey(rb, region, NULL, &status);
- if (status == U_MISSING_RESOURCE_ERROR && rb != NULL) {
+ UResourceBundle *order = ures_getByKey(rb, region, nullptr, &status);
+ if (status == U_MISSING_RESOURCE_ERROR && rb != nullptr) {
status = U_ZERO_ERROR;
- order = ures_getByKey(rb, "001", NULL, &status);
+ order = ures_getByKey(rb, "001", nullptr, &status);
}
- calTypeBuf[0] = 0;
- if (U_SUCCESS(status) && order != NULL) {
+ calTypeBuf.clear();
+ if (U_SUCCESS(status) && order != nullptr) {
// the first calendar type is the default for the region
int32_t len = 0;
- const UChar *uCalType = ures_getStringByIndex(order, 0, &len, &status);
- if (len < (int32_t)sizeof(calTypeBuf)) {
- u_UCharsToChars(uCalType, calTypeBuf, len);
- *(calTypeBuf + len) = 0; // terminate;
- calType = getCalendarType(calTypeBuf);
- }
+ const char16_t *uCalType = ures_getStringByIndex(order, 0, &len, &status);
+ calTypeBuf.appendInvariantChars(uCalType, len, status);
+ calType = getCalendarType(calTypeBuf.data());
}
ures_close(order);
@@ -354,18 +340,19 @@ static Calendar *createStandardCalendar(ECalType calType, const Locale &loc, UEr
cal.adoptInsteadAndCheckErrorCode(new PersianCalendar(loc, status), status);
break;
case CALTYPE_ISLAMIC_TBLA:
- cal.adoptInsteadAndCheckErrorCode(new IslamicCalendar(loc, status, IslamicCalendar::TBLA), status);
+ cal.adoptInsteadAndCheckErrorCode(new IslamicTBLACalendar(loc, status), status);
break;
case CALTYPE_ISLAMIC_CIVIL:
- cal.adoptInsteadAndCheckErrorCode(new IslamicCalendar(loc, status, IslamicCalendar::CIVIL), status);
+ cal.adoptInsteadAndCheckErrorCode(new IslamicCivilCalendar(loc, status), status);
break;
case CALTYPE_ISLAMIC_RGSA:
- // default any region specific not handled individually to islamic
+ cal.adoptInsteadAndCheckErrorCode(new IslamicRGSACalendar(loc, status), status);
+ break;
case CALTYPE_ISLAMIC:
- cal.adoptInsteadAndCheckErrorCode(new IslamicCalendar(loc, status, IslamicCalendar::ASTRONOMICAL), status);
+ cal.adoptInsteadAndCheckErrorCode(new IslamicCalendar(loc, status), status);
break;
case CALTYPE_ISLAMIC_UMALQURA:
- cal.adoptInsteadAndCheckErrorCode(new IslamicCalendar(loc, status, IslamicCalendar::UMALQURA), status);
+ cal.adoptInsteadAndCheckErrorCode(new IslamicUmalquraCalendar(loc, status), status);
break;
case CALTYPE_HEBREW:
cal.adoptInsteadAndCheckErrorCode(new HebrewCalendar(loc, status), status);
@@ -380,17 +367,13 @@ static Calendar *createStandardCalendar(ECalType calType, const Locale &loc, UEr
cal.adoptInsteadAndCheckErrorCode(new CopticCalendar(loc, status), status);
break;
case CALTYPE_ETHIOPIC:
- cal.adoptInsteadAndCheckErrorCode(new EthiopicCalendar(loc, status, EthiopicCalendar::AMETE_MIHRET_ERA), status);
+ cal.adoptInsteadAndCheckErrorCode(new EthiopicCalendar(loc, status), status);
break;
case CALTYPE_ETHIOPIC_AMETE_ALEM:
- cal.adoptInsteadAndCheckErrorCode(new EthiopicCalendar(loc, status, EthiopicCalendar::AMETE_ALEM_ERA), status);
+ cal.adoptInsteadAndCheckErrorCode(new EthiopicAmeteAlemCalendar(loc, status), status);
break;
case CALTYPE_ISO8601:
- cal.adoptInsteadAndCheckErrorCode(new GregorianCalendar(loc, status), status);
- if (cal.isValid()) {
- cal->setFirstDayOfWeek(UCAL_MONDAY);
- cal->setMinimalDaysInFirstWeek(4);
- }
+ cal.adoptInsteadAndCheckErrorCode(new ISO8601Calendar(loc, status), status);
break;
case CALTYPE_DANGI:
cal.adoptInsteadAndCheckErrorCode(new DangiCalendar(loc, status), status);
@@ -433,8 +416,8 @@ protected:
virtual void updateVisibleIDs(Hashtable& result, UErrorCode& status) const override
{
if (U_SUCCESS(status)) {
- for(int32_t i=0;gCalTypes[i] != NULL;i++) {
- UnicodeString id((UChar)0x40); /* '@' a variant character */
+ for(int32_t i=0;gCalTypes[i] != nullptr;i++) {
+ UnicodeString id((char16_t)0x40); /* '@' a variant character */
id.append(UNICODE_STRING_SIMPLE("calendar="));
id.append(UnicodeString(gCalTypes[i], -1, US_INV));
result.put(id, (void*)this, status);
@@ -447,22 +430,20 @@ protected:
return nullptr;
}
#ifdef U_DEBUG_CALSVC
- if(dynamic_cast<const LocaleKey*>(&key) == NULL) {
+ if(dynamic_cast<const LocaleKey*>(&key) == nullptr) {
fprintf(stderr, "::create - not a LocaleKey!\n");
}
#endif
- const LocaleKey& lkey = (LocaleKey&)key;
+ const LocaleKey* lkey = dynamic_cast<const LocaleKey*>(&key);
+ U_ASSERT(lkey != nullptr);
Locale curLoc; // current locale
Locale canLoc; // Canonical locale
- lkey.currentLocale(curLoc);
- lkey.canonicalLocale(canLoc);
+ lkey->currentLocale(curLoc);
+ lkey->canonicalLocale(canLoc);
char keyword[ULOC_FULLNAME_CAPACITY];
- UnicodeString str;
-
- key.currentID(str);
- getCalendarKeyword(str, keyword, (int32_t) sizeof(keyword));
+ curLoc.getKeywordValue("calendar", keyword, (int32_t) sizeof(keyword), status);
#ifdef U_DEBUG_CALSVC
fprintf(stderr, "BasicCalendarFactory::create() - cur %s, can %s\n", (const char*)curLoc.getName(), (const char*)canLoc.getName());
@@ -473,7 +454,7 @@ protected:
fprintf(stderr, "BasicCalendarFactory - not handling %s.[%s]\n", (const char*) curLoc.getName(), tmp );
#endif
- return NULL;
+ return nullptr;
}
return createStandardCalendar(getCalendarType(keyword), canLoc, status);
@@ -496,15 +477,16 @@ protected:
return nullptr;
}
- LocaleKey &lkey = (LocaleKey&)key;
+ const LocaleKey *lkey = dynamic_cast<const LocaleKey*>(&key);
+ U_ASSERT(lkey != nullptr);
Locale loc;
- lkey.currentLocale(loc);
+ lkey->currentLocale(loc);
UnicodeString *ret = new UnicodeString();
if (ret == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
} else {
- ret->append((UChar)0x40); // '@' is a variant character
+ ret->append((char16_t)0x40); // '@' is a variant character
ret->append(UNICODE_STRING("calendar=", 9));
ret->append(UnicodeString(gCalTypes[getCalendarTypeForLocale(loc.getName())], -1, US_INV));
}
@@ -528,7 +510,7 @@ public:
virtual UObject* cloneInstance(UObject* instance) const override {
UnicodeString *s = dynamic_cast<UnicodeString *>(instance);
- if(s != NULL) {
+ if(s != nullptr) {
return s->clone();
} else {
#ifdef U_DEBUG_CALSVC_F
@@ -543,7 +525,7 @@ public:
if (U_FAILURE(status)) {
return nullptr;
}
- LocaleKey& lkey = (LocaleKey&)key;
+ LocaleKey& lkey = static_cast<LocaleKey&>(const_cast<ICUServiceKey&>(key));
//int32_t kind = lkey.kind();
Locale loc;
@@ -594,7 +576,7 @@ initCalendarService(UErrorCode &status)
}
ucln_i18n_registerCleanup(UCLN_I18N_CALENDAR, calendar_cleanup);
gService = new CalendarService();
- if (gService == NULL) {
+ if (gService == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -614,7 +596,7 @@ initCalendarService(UErrorCode &status)
fprintf(stderr, "err (%s) registering classes, deleting service.....\n", u_errorName(status));
#endif
delete gService;
- gService = NULL;
+ gService = nullptr;
}
}
@@ -654,7 +636,7 @@ static const int32_t kCalendarLimits[UCAL_FIELD_COUNT][4] = {
{ 0, 0, 59, 59 }, // MINUTE
{ 0, 0, 59, 59 }, // SECOND
{ 0, 0, 999, 999 }, // MILLISECOND
- {-16*kOneHour, -16*kOneHour, 12*kOneHour, 30*kOneHour }, // ZONE_OFFSET
+ {-24*kOneHour, -16*kOneHour, 12*kOneHour, 30*kOneHour }, // ZONE_OFFSET
{ -1*kOneHour, -1*kOneHour, 2*kOneHour, 2*kOneHour }, // DST_OFFSET
{/*N/A*/-1, /*N/A*/-1, /*N/A*/-1, /*N/A*/-1}, // YEAR_WOY
{ 1, 1, 7, 7 }, // DOW_LOCAL
@@ -662,6 +644,7 @@ static const int32_t kCalendarLimits[UCAL_FIELD_COUNT][4] = {
{ -0x7F000000, -0x7F000000, 0x7F000000, 0x7F000000 }, // JULIAN_DAY
{ 0, 0, 24*kOneHour-1, 24*kOneHour-1 }, // MILLISECONDS_IN_DAY
{ 0, 0, 1, 1 }, // IS_LEAP_MONTH
+ { 0, 0, 11, 11 } // ORDINAL_MONTH
};
// Resource bundle tags read by this class
@@ -730,7 +713,7 @@ fAreFieldsVirtuallySet(false),
fNextStamp((int32_t)kMinimumUserStamp),
fTime(0),
fLenient(true),
-fZone(NULL),
+fZone(nullptr),
fRepeatedWallTime(UCAL_WALLTIME_LAST),
fSkippedWallTime(UCAL_WALLTIME_LAST)
{
@@ -741,10 +724,10 @@ fSkippedWallTime(UCAL_WALLTIME_LAST)
return;
}
fZone = TimeZone::createDefault();
- if (fZone == NULL) {
+ if (fZone == nullptr) {
success = U_MEMORY_ALLOCATION_ERROR;
}
- setWeekData(Locale::getDefault(), NULL, success);
+ setWeekData(Locale::getDefault(), nullptr, success);
}
// -------------------------------------
@@ -758,7 +741,7 @@ fAreFieldsVirtuallySet(false),
fNextStamp((int32_t)kMinimumUserStamp),
fTime(0),
fLenient(true),
-fZone(NULL),
+fZone(nullptr),
fRepeatedWallTime(UCAL_WALLTIME_LAST),
fSkippedWallTime(UCAL_WALLTIME_LAST)
{
@@ -779,7 +762,7 @@ fSkippedWallTime(UCAL_WALLTIME_LAST)
clear();
fZone = zone;
- setWeekData(aLocale, NULL, success);
+ setWeekData(aLocale, nullptr, success);
}
// -------------------------------------
@@ -793,7 +776,7 @@ fAreFieldsVirtuallySet(false),
fNextStamp((int32_t)kMinimumUserStamp),
fTime(0),
fLenient(true),
-fZone(NULL),
+fZone(nullptr),
fRepeatedWallTime(UCAL_WALLTIME_LAST),
fSkippedWallTime(UCAL_WALLTIME_LAST)
{
@@ -804,10 +787,10 @@ fSkippedWallTime(UCAL_WALLTIME_LAST)
}
clear();
fZone = zone.clone();
- if (fZone == NULL) {
+ if (fZone == nullptr) {
success = U_MEMORY_ALLOCATION_ERROR;
}
- setWeekData(aLocale, NULL, success);
+ setWeekData(aLocale, nullptr, success);
}
// -------------------------------------
@@ -822,7 +805,7 @@ Calendar::~Calendar()
Calendar::Calendar(const Calendar &source)
: UObject(source)
{
- fZone = NULL;
+ fZone = nullptr;
*this = source;
}
@@ -844,8 +827,8 @@ Calendar::operator=(const Calendar &right)
fRepeatedWallTime = right.fRepeatedWallTime;
fSkippedWallTime = right.fSkippedWallTime;
delete fZone;
- fZone = NULL;
- if (right.fZone != NULL) {
+ fZone = nullptr;
+ if (right.fZone != nullptr) {
fZone = right.fZone->clone();
}
fFirstDayOfWeek = right.fFirstDayOfWeek;
@@ -895,11 +878,11 @@ Calendar::createInstance(const Locale& aLocale, UErrorCode& success)
Calendar * U_EXPORT2
Calendar::makeInstance(const Locale& aLocale, UErrorCode& success) {
if (U_FAILURE(success)) {
- return NULL;
+ return nullptr;
}
Locale actualLoc;
- UObject* u = NULL;
+ UObject* u = nullptr;
#if !UCONFIG_NO_SERVICE
if (isCalendarServiceUsed()) {
@@ -910,18 +893,18 @@ Calendar::makeInstance(const Locale& aLocale, UErrorCode& success) {
{
u = createStandardCalendar(getCalendarTypeForLocale(aLocale.getName()), aLocale, success);
}
- Calendar* c = NULL;
+ Calendar* c = nullptr;
if(U_FAILURE(success) || !u) {
if(U_SUCCESS(success)) { // Propagate some kind of err
success = U_INTERNAL_PROGRAM_ERROR;
}
- return NULL;
+ return nullptr;
}
#if !UCONFIG_NO_SERVICE
const UnicodeString* str = dynamic_cast<const UnicodeString*>(u);
- if(str != NULL) {
+ if(str != nullptr) {
// It's a unicode string telling us what type of calendar to load ("gregorian", etc)
// Create a Locale over this string
Locale l("");
@@ -933,7 +916,7 @@ Calendar::makeInstance(const Locale& aLocale, UErrorCode& success) {
Locale actualLoc2;
delete u;
- u = NULL;
+ u = nullptr;
// Don't overwrite actualLoc, since the actual loc from this call
// may be something like "@calendar=gregorian" -- TODO investigate
@@ -944,11 +927,11 @@ Calendar::makeInstance(const Locale& aLocale, UErrorCode& success) {
if(U_SUCCESS(success)) {
success = U_INTERNAL_PROGRAM_ERROR; // Propagate some err
}
- return NULL;
+ return nullptr;
}
str = dynamic_cast<const UnicodeString*>(c);
- if(str != NULL) {
+ if(str != nullptr) {
// recursed! Second lookup returned a UnicodeString.
// Perhaps DefaultCalendar{} was set to another locale.
#ifdef U_DEBUG_CALSVC
@@ -966,7 +949,7 @@ Calendar::makeInstance(const Locale& aLocale, UErrorCode& success) {
#endif
success = U_MISSING_RESOURCE_ERROR; // requested a calendar type which could NOT be found.
delete c;
- return NULL;
+ return nullptr;
}
#ifdef U_DEBUG_CALSVC
fprintf(stderr, "%p: setting week count data to locale %s, actual locale %s\n", c, (const char*)aLocale.getName(), (const char *)actualLoc.getName());
@@ -995,16 +978,16 @@ Calendar* U_EXPORT2
Calendar::createInstance(TimeZone* zone, const Locale& aLocale, UErrorCode& success)
{
LocalPointer<TimeZone> zonePtr(zone);
- const SharedCalendar *shared = NULL;
+ const SharedCalendar *shared = nullptr;
UnifiedCache::getByLocale(aLocale, shared, success);
if (U_FAILURE(success)) {
- return NULL;
+ return nullptr;
}
Calendar *c = (*shared)->clone();
shared->removeRef();
- if (c == NULL) {
+ if (c == nullptr) {
success = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
// Now, reset calendar to default state:
@@ -1034,7 +1017,7 @@ Calendar::getCalendarTypeFromLocale(
char *typeBuffer,
int32_t typeBufferSize,
UErrorCode &success) {
- const SharedCalendar *shared = NULL;
+ const SharedCalendar *shared = nullptr;
UnifiedCache::getByLocale(aLocale, shared, success);
if (U_FAILURE(success)) {
return;
@@ -1118,7 +1101,7 @@ Calendar::getKeywordValuesForLocale(const char* key,
commonlyUsed, &status);
if (U_FAILURE(status)) {
uenum_close(uenum);
- return NULL;
+ return nullptr;
}
UStringEnumeration* ustringenum = new UStringEnumeration(uenum);
if (ustringenum == nullptr) {
@@ -1185,6 +1168,9 @@ Calendar::setTimeInMillis( double millis, UErrorCode& status ) {
status = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
+ } else if (uprv_isNaN(millis)) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
}
fTime = millis;
@@ -1205,6 +1191,13 @@ Calendar::setTimeInMillis( double millis, UErrorCode& status ) {
int32_t
Calendar::get(UCalendarDateFields field, UErrorCode& status) const
{
+ if (U_FAILURE(status)) {
+ return 0;
+ }
+ if (field < 0 || field >= UCAL_FIELD_COUNT) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
// field values are only computed when actually requested; for more on when computation
// of various things happens, see the "data flow in Calendar" description at the top
// of this file
@@ -1217,6 +1210,9 @@ Calendar::get(UCalendarDateFields field, UErrorCode& status) const
void
Calendar::set(UCalendarDateFields field, int32_t value)
{
+ if (field < 0 || field >= UCAL_FIELD_COUNT) {
+ return;
+ }
if (fAreFieldsVirtuallySet) {
UErrorCode ec = U_ZERO_ERROR;
computeFields(ec);
@@ -1267,130 +1263,14 @@ Calendar::set(int32_t year, int32_t month, int32_t date, int32_t hour, int32_t m
}
// -------------------------------------
-// For now the full getRelatedYear implementation is here;
-// per #10752 move the non-default implementation to subclasses
-// (default implementation will do no year adjustment)
-
-static int32_t gregoYearFromIslamicStart(int32_t year) {
- // ad hoc conversion, improve under #10752
- // rough est for now, ok for grego 1846-2138,
- // otherwise occasionally wrong (for 3% of years)
- int cycle, offset, shift = 0;
- if (year >= 1397) {
- cycle = (year - 1397) / 67;
- offset = (year - 1397) % 67;
- shift = 2*cycle + ((offset >= 33)? 1: 0);
- } else {
- cycle = (year - 1396) / 67 - 1;
- offset = -(year - 1396) % 67;
- shift = 2*cycle + ((offset <= 33)? 1: 0);
- }
- return year + 579 - shift;
-}
-
int32_t Calendar::getRelatedYear(UErrorCode &status) const
{
- if (U_FAILURE(status)) {
- return 0;
- }
- int32_t year = get(UCAL_EXTENDED_YEAR, status);
- if (U_FAILURE(status)) {
- return 0;
- }
- // modify for calendar type
- ECalType type = getCalendarType(getType());
- switch (type) {
- case CALTYPE_PERSIAN:
- year += 622; break;
- case CALTYPE_HEBREW:
- year -= 3760; break;
- case CALTYPE_CHINESE:
- year -= 2637; break;
- case CALTYPE_INDIAN:
- year += 79; break;
- case CALTYPE_COPTIC:
- year += 284; break;
- case CALTYPE_ETHIOPIC:
- year += 8; break;
- case CALTYPE_ETHIOPIC_AMETE_ALEM:
- year -=5492; break;
- case CALTYPE_DANGI:
- year -= 2333; break;
- case CALTYPE_ISLAMIC_CIVIL:
- case CALTYPE_ISLAMIC:
- case CALTYPE_ISLAMIC_UMALQURA:
- case CALTYPE_ISLAMIC_TBLA:
- case CALTYPE_ISLAMIC_RGSA:
- year = gregoYearFromIslamicStart(year); break;
- default:
- // CALTYPE_GREGORIAN
- // CALTYPE_JAPANESE
- // CALTYPE_BUDDHIST
- // CALTYPE_ROC
- // CALTYPE_ISO8601
- // do nothing, EXTENDED_YEAR same as Gregorian
- break;
- }
- return year;
+ return get(UCAL_EXTENDED_YEAR, status);
}
// -------------------------------------
-// For now the full setRelatedYear implementation is here;
-// per #10752 move the non-default implementation to subclasses
-// (default implementation will do no year adjustment)
-
-static int32_t firstIslamicStartYearFromGrego(int32_t year) {
- // ad hoc conversion, improve under #10752
- // rough est for now, ok for grego 1846-2138,
- // otherwise occasionally wrong (for 3% of years)
- int cycle, offset, shift = 0;
- if (year >= 1977) {
- cycle = (year - 1977) / 65;
- offset = (year - 1977) % 65;
- shift = 2*cycle + ((offset >= 32)? 1: 0);
- } else {
- cycle = (year - 1976) / 65 - 1;
- offset = -(year - 1976) % 65;
- shift = 2*cycle + ((offset <= 32)? 1: 0);
- }
- return year - 579 + shift;
-}
void Calendar::setRelatedYear(int32_t year)
{
- // modify for calendar type
- ECalType type = getCalendarType(getType());
- switch (type) {
- case CALTYPE_PERSIAN:
- year -= 622; break;
- case CALTYPE_HEBREW:
- year += 3760; break;
- case CALTYPE_CHINESE:
- year += 2637; break;
- case CALTYPE_INDIAN:
- year -= 79; break;
- case CALTYPE_COPTIC:
- year -= 284; break;
- case CALTYPE_ETHIOPIC:
- year -= 8; break;
- case CALTYPE_ETHIOPIC_AMETE_ALEM:
- year +=5492; break;
- case CALTYPE_DANGI:
- year += 2333; break;
- case CALTYPE_ISLAMIC_CIVIL:
- case CALTYPE_ISLAMIC:
- case CALTYPE_ISLAMIC_UMALQURA:
- case CALTYPE_ISLAMIC_TBLA:
- case CALTYPE_ISLAMIC_RGSA:
- year = firstIslamicStartYearFromGrego(year); break;
- default:
- // CALTYPE_GREGORIAN
- // CALTYPE_JAPANESE
- // CALTYPE_BUDDHIST
- // CALTYPE_ROC
- // CALTYPE_ISO8601
- // do nothing, EXTENDED_YEAR same as Gregorian
- break;
- }
// set extended year
set(UCAL_EXTENDED_YEAR, year);
}
@@ -1414,13 +1294,25 @@ Calendar::clear()
void
Calendar::clear(UCalendarDateFields field)
{
+ if (field < 0 || field >= UCAL_FIELD_COUNT) {
+ return;
+ }
if (fAreFieldsVirtuallySet) {
UErrorCode ec = U_ZERO_ERROR;
computeFields(ec);
}
fFields[field] = 0;
fStamp[field] = kUnset;
- fIsSet[field] = false; // Remove later
+ if (field == UCAL_MONTH) {
+ fFields[UCAL_ORDINAL_MONTH] = 0;
+ fStamp[UCAL_ORDINAL_MONTH] = kUnset;
+ fIsSet[UCAL_ORDINAL_MONTH] = false; // Remove later
+ }
+ if (field == UCAL_ORDINAL_MONTH) {
+ fFields[UCAL_MONTH] = 0;
+ fStamp[UCAL_MONTH] = kUnset;
+ fIsSet[UCAL_MONTH] = false; // Remove later
+ }
fIsTimeSet = fAreFieldsSet = fAreAllFieldsSet = fAreFieldsVirtuallySet = false;
}
@@ -1429,6 +1321,9 @@ Calendar::clear(UCalendarDateFields field)
UBool
Calendar::isSet(UCalendarDateFields field) const
{
+ if (field < 0 || field >= UCAL_FIELD_COUNT) {
+ return false;
+ }
return fAreFieldsVirtuallySet || (fStamp[field] != kUnset);
}
@@ -1507,6 +1402,10 @@ void Calendar::pinField(UCalendarDateFields field, UErrorCode& status) {
if (U_FAILURE(status)) {
return;
}
+ if (field < 0 || field >= UCAL_FIELD_COUNT) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
int32_t max = getActualMaximum(field, status);
int32_t min = getActualMinimum(field, status);
@@ -1539,7 +1438,8 @@ void Calendar::computeFields(UErrorCode &ec)
(1 << UCAL_MONTH) |
(1 << UCAL_DAY_OF_MONTH) | // = UCAL_DATE
(1 << UCAL_DAY_OF_YEAR) |
- (1 << UCAL_EXTENDED_YEAR);
+ (1 << UCAL_EXTENDED_YEAR) |
+ (1 << UCAL_ORDINAL_MONTH);
for (int32_t i=0; i<UCAL_FIELD_COUNT; ++i) {
if ((mask & 1) == 0) {
@@ -1808,7 +1708,9 @@ void Calendar::handleComputeFields(int32_t /* julianDay */, UErrorCode& status)
if (U_FAILURE(status)) {
return;
}
- internalSet(UCAL_MONTH, getGregorianMonth());
+ int32_t month = getGregorianMonth();
+ internalSet(UCAL_MONTH, month);
+ internalSet(UCAL_ORDINAL_MONTH, month);
internalSet(UCAL_DAY_OF_MONTH, getGregorianDayOfMonth());
internalSet(UCAL_DAY_OF_YEAR, getGregorianDayOfYear());
int32_t eyear = getGregorianYear();
@@ -1829,8 +1731,7 @@ void Calendar::roll(EDateFields field, int32_t amount, UErrorCode& status)
roll((UCalendarDateFields)field, amount, status);
}
-void Calendar::roll(UCalendarDateFields field, int32_t amount, UErrorCode& status)
-{
+void Calendar::roll(UCalendarDateFields field, int32_t amount, UErrorCode& status) UPRV_NO_SANITIZE_UNDEFINED {
if (amount == 0) {
return; // Nothing to do
}
@@ -1840,6 +1741,10 @@ void Calendar::roll(UCalendarDateFields field, int32_t amount, UErrorCode& statu
if(U_FAILURE(status)) {
return;
}
+ if (field < 0 || field >= UCAL_FIELD_COUNT) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
switch (field) {
case UCAL_DAY_OF_MONTH:
case UCAL_AM_PM:
@@ -1890,6 +1795,7 @@ void Calendar::roll(UCalendarDateFields field, int32_t amount, UErrorCode& statu
}
case UCAL_MONTH:
+ case UCAL_ORDINAL_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.
@@ -2021,6 +1927,10 @@ void Calendar::roll(UCalendarDateFields field, int32_t amount, UErrorCode& statu
// Now roll between start and (limit - 1).
int32_t gap = limit - start;
+ if (gap == 0) {
+ status = U_INTERNAL_PROGRAM_ERROR;
+ return;
+ }
int32_t day_of_month = (internalGet(UCAL_DAY_OF_MONTH) + amount*7 -
start) % gap;
if (day_of_month < 0) day_of_month += gap;
@@ -2079,6 +1989,10 @@ void Calendar::roll(UCalendarDateFields field, int32_t amount, UErrorCode& statu
// Now roll between start and (limit - 1).
int32_t gap = limit - start;
+ if (gap == 0) {
+ status = U_INTERNAL_PROGRAM_ERROR;
+ return;
+ }
int32_t day_of_year = (internalGet(UCAL_DAY_OF_YEAR) + amount*7 -
start) % gap;
if (day_of_year < 0) day_of_year += gap;
@@ -2094,6 +2008,7 @@ void Calendar::roll(UCalendarDateFields field, int32_t amount, UErrorCode& statu
// have to be updated as well.
set(UCAL_DAY_OF_YEAR, day_of_year);
clear(UCAL_MONTH);
+ clear(UCAL_ORDINAL_MONTH);
return;
}
case UCAL_DAY_OF_YEAR:
@@ -2180,6 +2095,10 @@ void Calendar::add(UCalendarDateFields field, int32_t amount, UErrorCode& status
if (U_FAILURE(status)) {
return;
}
+ if (field < 0 || field >= UCAL_FIELD_COUNT) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
if (amount == 0) {
return; // Do nothing!
}
@@ -2236,6 +2155,7 @@ void Calendar::add(UCalendarDateFields field, int32_t amount, UErrorCode& status
U_FALLTHROUGH;
case UCAL_EXTENDED_YEAR:
case UCAL_MONTH:
+ case UCAL_ORDINAL_MONTH:
{
UBool oldLenient = isLenient();
setLenient(true);
@@ -2365,7 +2285,13 @@ int32_t Calendar::fieldDifference(UDate when, EDateFields field, UErrorCode& sta
}
int32_t Calendar::fieldDifference(UDate targetMs, UCalendarDateFields field, UErrorCode& ec) {
- if (U_FAILURE(ec)) return 0;
+ if (U_FAILURE(ec)) {
+ return 0;
+ }
+ if (field < 0 || field >= UCAL_FIELD_COUNT) {
+ ec = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
int32_t min = 0;
double startMs = getTimeInMillis(ec);
// Always add from the start millis. This accommodates
@@ -2427,7 +2353,7 @@ int32_t Calendar::fieldDifference(UDate targetMs, UCalendarDateFields field, UEr
break;
} else {
min = max;
- max <<= 1;
+ max = (int32_t)((uint32_t)(max) << 1);
if (max == 0) {
// Field difference too large to fit into int32_t
#if defined (U_DEBUG_CAL)
@@ -2469,8 +2395,10 @@ int32_t Calendar::fieldDifference(UDate targetMs, UCalendarDateFields field, UEr
void
Calendar::adoptTimeZone(TimeZone* zone)
{
- // Do nothing if passed-in zone is NULL
- if (zone == NULL) return;
+ // Do nothing if passed-in zone is nullptr
+ if (zone == nullptr) {
+ return;
+ }
// fZone should always be non-null
delete fZone;
@@ -2492,7 +2420,7 @@ Calendar::setTimeZone(const TimeZone& zone)
const TimeZone&
Calendar::getTimeZone() const
{
- U_ASSERT(fZone != NULL);
+ U_ASSERT(fZone != nullptr);
return *fZone;
}
@@ -2503,9 +2431,9 @@ Calendar::orphanTimeZone()
{
// we let go of the time zone; the new time zone is the system default time zone
TimeZone *defaultZone = TimeZone::createDefault();
- if (defaultZone == NULL) {
- // No error handling available. Must keep fZone non-NULL, there are many unchecked uses.
- return NULL;
+ if (defaultZone == nullptr) {
+ // No error handling available. Must keep fZone non-nullptr, there are many unchecked uses.
+ return nullptr;
}
TimeZone *z = fZone;
fZone = defaultZone;
@@ -2541,7 +2469,7 @@ Calendar::setRepeatedWallTimeOption(UCalendarWallTimeOption option)
// -------------------------------------
UCalendarWallTimeOption
-Calendar::getRepeatedWallTimeOption(void) const
+Calendar::getRepeatedWallTimeOption() const
{
return fRepeatedWallTime;
}
@@ -2557,7 +2485,7 @@ Calendar::setSkippedWallTimeOption(UCalendarWallTimeOption option)
// -------------------------------------
UCalendarWallTimeOption
-Calendar::getSkippedWallTimeOption(void) const
+Calendar::getSkippedWallTimeOption() const
{
return fSkippedWallTime;
}
@@ -2565,8 +2493,7 @@ Calendar::getSkippedWallTimeOption(void) const
// -------------------------------------
void
-Calendar::setFirstDayOfWeek(UCalendarDaysOfWeek value)
-{
+Calendar::setFirstDayOfWeek(UCalendarDaysOfWeek value) UPRV_NO_SANITIZE_UNDEFINED {
if (fFirstDayOfWeek != value &&
value >= UCAL_SUNDAY && value <= UCAL_SATURDAY) {
fFirstDayOfWeek = value;
@@ -2673,7 +2600,7 @@ Calendar::isWeekend(UDate date, UErrorCode &status) const
}
// clone the calendar so we don't mess with the real one.
Calendar *work = this->clone();
- if (work == NULL) {
+ if (work == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return false;
}
@@ -2687,7 +2614,7 @@ Calendar::isWeekend(UDate date, UErrorCode &status) const
}
UBool
-Calendar::isWeekend(void) const
+Calendar::isWeekend() const
{
UErrorCode status = U_ZERO_ERROR;
UCalendarDaysOfWeek dayOfWeek = (UCalendarDaysOfWeek)get(UCAL_DAY_OF_WEEK, status);
@@ -2818,13 +2745,16 @@ int32_t Calendar::getLimit(UCalendarDateFields field, ELimitType limitType) cons
}
}
-
int32_t
Calendar::getActualMinimum(UCalendarDateFields field, UErrorCode& status) const
{
if (U_FAILURE(status)) {
return 0;
}
+ if (field < 0 || field >= UCAL_FIELD_COUNT) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
int32_t fieldValue = getGreatestMinimum(field);
int32_t endValue = getMinimum(field);
@@ -2836,7 +2766,7 @@ Calendar::getActualMinimum(UCalendarDateFields field, UErrorCode& status) const
// clone the calendar so we don't mess with the real one, and set it to
// accept anything for the field values
Calendar *work = this->clone();
- if (work == NULL) {
+ if (work == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return 0;
}
@@ -2869,7 +2799,65 @@ Calendar::getActualMinimum(UCalendarDateFields field, UErrorCode& status) const
// -------------------------------------
+UBool
+Calendar::inDaylightTime(UErrorCode& status) const
+{
+ if (U_FAILURE(status) || !getTimeZone().useDaylightTime()) {
+ return false;
+ }
+
+ // Force an update of the state of the Calendar.
+ ((Calendar*)this)->complete(status); // cast away const
+
+ return (UBool)(U_SUCCESS(status) ? (internalGet(UCAL_DST_OFFSET) != 0) : false);
+}
+
+bool
+Calendar::inTemporalLeapYear(UErrorCode& status) const
+{
+ // Default to Gregorian based leap year rule.
+ return getActualMaximum(UCAL_DAY_OF_YEAR, status) == 366;
+}
+// -------------------------------------
+
+static const char * const gTemporalMonthCodes[] = {
+ "M01", "M02", "M03", "M04", "M05", "M06",
+ "M07", "M08", "M09", "M10", "M11", "M12", nullptr
+};
+
+const char*
+Calendar::getTemporalMonthCode(UErrorCode& status) const
+{
+ int32_t month = get(UCAL_MONTH, status);
+ if (U_FAILURE(status)) {
+ return nullptr;
+ }
+ U_ASSERT(month < 12);
+ U_ASSERT(internalGet(UCAL_IS_LEAP_MONTH) == 0);
+ return gTemporalMonthCodes[month];
+}
+
+void
+Calendar::setTemporalMonthCode(const char* code, UErrorCode& status )
+{
+ if (U_FAILURE(status)) {
+ return;
+ }
+ int32_t len = static_cast<int32_t>(uprv_strlen(code));
+ if (len == 3 && code[0] == 'M') {
+ for (int m = 0; gTemporalMonthCodes[m] != nullptr; m++) {
+ if (uprv_strcmp(code, gTemporalMonthCodes[m]) == 0) {
+ set(UCAL_MONTH, m);
+ set(UCAL_IS_LEAP_MONTH, 0);
+ return;
+ }
+ }
+ }
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+}
+
+// -------------------------------------
/**
* Ensure that each field is within its valid range by calling {@link
@@ -2900,11 +2888,15 @@ void Calendar::validateField(UCalendarDateFields field, UErrorCode &status) {
if (U_FAILURE(status)) {
return;
}
+ if (field < 0 || field >= UCAL_FIELD_COUNT) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
int32_t y;
switch (field) {
case UCAL_DAY_OF_MONTH:
y = handleGetExtendedYear();
- validateField(field, 1, handleGetMonthLength(y, internalGet(UCAL_MONTH)), status);
+ validateField(field, 1, handleGetMonthLength(y, internalGetMonth()), status);
break;
case UCAL_DAY_OF_YEAR:
y = handleGetExtendedYear();
@@ -2939,6 +2931,10 @@ void Calendar::validateField(UCalendarDateFields field, int32_t min, int32_t max
if (U_FAILURE(status)) {
return;
}
+ if (field < 0 || field >= UCAL_FIELD_COUNT) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
int32_t value = fFields[field];
if (value < min || value > max) {
#if defined (U_DEBUG_CAL)
@@ -2965,7 +2961,7 @@ UCalendarDateFields Calendar::newerField(UCalendarDateFields defaultField, UCale
return defaultField;
}
-UCalendarDateFields Calendar::resolveFields(const UFieldResolutionTable* precedenceTable) {
+UCalendarDateFields Calendar::resolveFields(const UFieldResolutionTable* precedenceTable) const {
int32_t bestField = UCAL_FIELD_COUNT;
int32_t tempBestField;
for (int32_t g=0; precedenceTable[g][0][0] != -1 && (bestField == UCAL_FIELD_COUNT); ++g) {
@@ -3034,6 +3030,16 @@ const UFieldResolutionTable Calendar::kDatePrecedence[] =
};
+const UFieldResolutionTable Calendar::kMonthPrecedence[] =
+{
+ {
+ { UCAL_MONTH,kResolveSTOP, kResolveSTOP },
+ { UCAL_ORDINAL_MONTH,kResolveSTOP, kResolveSTOP },
+ {kResolveSTOP}
+ },
+ {{kResolveSTOP}}
+};
+
const UFieldResolutionTable Calendar::kDOWPrecedence[] =
{
{
@@ -3316,6 +3322,7 @@ int32_t Calendar::computeJulianDay()
if (fStamp[UCAL_JULIAN_DAY] >= (int32_t)kMinimumUserStamp) {
int32_t bestStamp = newestStamp(UCAL_ERA, UCAL_DAY_OF_WEEK_IN_MONTH, kUnset);
bestStamp = newestStamp(UCAL_YEAR_WOY, UCAL_EXTENDED_YEAR, bestStamp);
+ bestStamp = newestStamp(UCAL_ORDINAL_MONTH, UCAL_ORDINAL_MONTH, bestStamp);
if (bestStamp <= fStamp[UCAL_JULIAN_DAY]) {
return internalGet(UCAL_JULIAN_DAY);
}
@@ -3355,8 +3362,8 @@ int32_t Calendar::handleComputeJulianDay(UCalendarDateFields bestField) {
// give calendar subclass a chance to have a default 'first' month
int32_t month;
- if(isSet(UCAL_MONTH)) {
- month = internalGet(UCAL_MONTH);
+ if(isSet(UCAL_MONTH) || isSet(UCAL_ORDINAL_MONTH)) {
+ month = internalGetMonth();
} else {
month = getDefaultMonthInYear(year);
}
@@ -3424,7 +3431,7 @@ int32_t Calendar::handleComputeJulianDay(UCalendarDateFields bestField) {
// 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.
- int32_t m = internalGet(UCAL_MONTH, UCAL_JANUARY);
+ int32_t m = internalGetMonth(UCAL_JANUARY);
int32_t monthLength = handleGetMonthLength(year, m);
date += ((monthLength - date) / 7 + dim + 1) * 7;
}
@@ -3613,7 +3620,7 @@ int32_t Calendar::handleGetExtendedYearFromWeekFields(int32_t yearWoy, int32_t w
switch(bestField) {
case UCAL_WEEK_OF_YEAR:
if(woy == 1) {
- if(jan1InPrevYear == true) {
+ if(jan1InPrevYear) {
// the first week of January is in the previous year
// therefore WOY1 is always solidly within yearWoy
return yearWoy;
@@ -3649,23 +3656,25 @@ int32_t Calendar::handleGetExtendedYearFromWeekFields(int32_t yearWoy, int32_t w
}
case UCAL_DATE:
- if((internalGet(UCAL_MONTH)==0) &&
+ {
+ int32_t m = internalGetMonth();
+ if((m == 0) &&
(woy >= getLeastMaximum(UCAL_WEEK_OF_YEAR))) {
return yearWoy+1; // month 0, late woy = in the next year
} else if(woy==1) {
//if(nextJan1InPrevYear) {
- if(internalGet(UCAL_MONTH)==0) {
+ if(m == 0) {
return yearWoy;
} else {
return yearWoy-1;
}
//}
}
-
- //(internalGet(UCAL_DATE) <= (7-first)) /* && in minDow */ ) {
- //within 1st week and in this month..
- //return yearWoy+1;
- return yearWoy;
+ }
+ //(internalGet(UCAL_DATE) <= (7-first)) /* && in minDow */ ) {
+ //within 1st week and in this month..
+ //return yearWoy+1;
+ return yearWoy;
default: // assume the year is appropriate
return yearWoy;
@@ -3689,13 +3698,19 @@ Calendar::getActualMaximum(UCalendarDateFields field, UErrorCode& status) const
if (U_FAILURE(status)) {
return 0;
}
+ if (field < 0 || field >= UCAL_FIELD_COUNT) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
int32_t result;
switch (field) {
case UCAL_DATE:
{
- if(U_FAILURE(status)) return 0;
Calendar *cal = clone();
- if(!cal) { status = U_MEMORY_ALLOCATION_ERROR; return 0; }
+ if(!cal) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ return 0;
+ }
cal->setLenient(true);
cal->prepareGetActual(field,false,status);
result = handleGetMonthLength(cal->get(UCAL_EXTENDED_YEAR, status), cal->get(UCAL_MONTH, status));
@@ -3705,9 +3720,11 @@ Calendar::getActualMaximum(UCalendarDateFields field, UErrorCode& status) const
case UCAL_DAY_OF_YEAR:
{
- if(U_FAILURE(status)) return 0;
Calendar *cal = clone();
- if(!cal) { status = U_MEMORY_ALLOCATION_ERROR; return 0; }
+ if(!cal) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ return 0;
+ }
cal->setLenient(true);
cal->prepareGetActual(field,false,status);
result = handleGetYearLength(cal->get(UCAL_EXTENDED_YEAR, status));
@@ -3731,6 +3748,10 @@ Calendar::getActualMaximum(UCalendarDateFields field, UErrorCode& status) const
result = getMaximum(field);
break;
+ case UCAL_ORDINAL_MONTH:
+ result = inTemporalLeapYear(status) ? getMaximum(UCAL_ORDINAL_MONTH) : getLeastMaximum(UCAL_ORDINAL_MONTH);
+ break;
+
default:
// For all other fields, do it the hard way....
result = getActualHelper(field, getLeastMaximum(field), getMaximum(field),status);
@@ -3766,6 +3787,10 @@ void Calendar::prepareGetActual(UCalendarDateFields field, UBool isMinimum, UErr
if (U_FAILURE(status)) {
return;
}
+ if (field < 0 || field >= UCAL_FIELD_COUNT) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
set(UCAL_MILLISECONDS_IN_DAY, 0);
switch (field) {
@@ -3824,6 +3849,10 @@ int32_t Calendar::getActualHelper(UCalendarDateFields field, int32_t startValue,
if (U_FAILURE(status)) {
return 0;
}
+ if (field < 0 || field >= UCAL_FIELD_COUNT) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
if (startValue == endValue) {
// if we know that the maximum value is always the same, just return it
return startValue;
@@ -3833,9 +3862,14 @@ int32_t Calendar::getActualHelper(UCalendarDateFields field, int32_t startValue,
// clone the calendar so we don't mess with the real one, and set it to
// accept anything for the field values
- if(U_FAILURE(status)) return startValue;
+ if(U_FAILURE(status)) {
+ return startValue;
+ }
Calendar *work = clone();
- if(!work) { status = U_MEMORY_ALLOCATION_ERROR; return startValue; }
+ if(!work) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ return startValue;
+ }
// need to resolve time here, otherwise, fields set for actual limit
// may cause conflict with fields previously set (but not yet resolved).
@@ -3889,7 +3923,9 @@ void
Calendar::setWeekData(const Locale& desiredLocale, const char *type, UErrorCode& status)
{
- if (U_FAILURE(status)) return;
+ if (U_FAILURE(status)) {
+ return;
+ }
fFirstDayOfWeek = UCAL_SUNDAY;
fMinimalDaysInFirstWeek = 1;
@@ -3929,12 +3965,12 @@ Calendar::setWeekData(const Locale& desiredLocale, const char *type, UErrorCode&
// Get the monthNames resource bundle for the calendar 'type'. Fallback to gregorian if the resource is not
// found.
- LocalUResourceBundlePointer calData(ures_open(NULL, useLocale.getBaseName(), &status));
+ LocalUResourceBundlePointer calData(ures_open(nullptr, useLocale.getBaseName(), &status));
ures_getByKey(calData.getAlias(), gCalendar, calData.getAlias(), &status);
LocalUResourceBundlePointer monthNames;
- if (type != NULL && *type != '\0' && uprv_strcmp(type, gGregorian) != 0) {
- monthNames.adoptInstead(ures_getByKeyWithFallback(calData.getAlias(), type, NULL, &status));
+ if (type != nullptr && *type != '\0' && uprv_strcmp(type, gGregorian) != 0) {
+ monthNames.adoptInstead(ures_getByKeyWithFallback(calData.getAlias(), type, nullptr, &status));
ures_getByKeyWithFallback(monthNames.getAlias(), gMonthNames,
monthNames.getAlias(), &status);
}
@@ -3960,12 +3996,12 @@ Calendar::setWeekData(const Locale& desiredLocale, const char *type, UErrorCode&
(void)ulocimp_getRegionForSupplementalData(desiredLocale.getName(), true, region, sizeof(region), &status);
// Read week data values from supplementalData week data
- UResourceBundle *rb = ures_openDirect(NULL, "supplementalData", &status);
+ UResourceBundle *rb = ures_openDirect(nullptr, "supplementalData", &status);
ures_getByKey(rb, "weekData", rb, &status);
- UResourceBundle *weekData = ures_getByKey(rb, region, NULL, &status);
- if (status == U_MISSING_RESOURCE_ERROR && rb != NULL) {
+ UResourceBundle *weekData = ures_getByKey(rb, region, nullptr, &status);
+ if (status == U_MISSING_RESOURCE_ERROR && rb != nullptr) {
status = U_ZERO_ERROR;
- weekData = ures_getByKey(rb, "001", NULL, &status);
+ weekData = ures_getByKey(rb, "001", nullptr, &status);
}
if (U_FAILURE(status)) {
@@ -3987,6 +4023,29 @@ Calendar::setWeekData(const Locale& desiredLocale, const char *type, UErrorCode&
} else {
status = U_INVALID_FORMAT_ERROR;
}
+
+ // Check if the locale has a "fw" u extension and we honor it if present.
+ // And we don't change the overal status, as the presence / lack of "fw" is not an error.
+ UErrorCode fwStatus = U_ZERO_ERROR;
+ char fwExt[ULOC_FULLNAME_CAPACITY] = "";
+ desiredLocale.getKeywordValue("fw", fwExt, ULOC_FULLNAME_CAPACITY, fwStatus);
+ if (U_SUCCESS(fwStatus)) {
+ if (uprv_strcmp(fwExt, "sun") == 0) {
+ fFirstDayOfWeek = UCAL_SUNDAY;
+ } else if (uprv_strcmp(fwExt, "mon") == 0) {
+ fFirstDayOfWeek = UCAL_MONDAY;
+ } else if (uprv_strcmp(fwExt, "tue") == 0) {
+ fFirstDayOfWeek = UCAL_TUESDAY;
+ } else if (uprv_strcmp(fwExt, "wed") == 0) {
+ fFirstDayOfWeek = UCAL_WEDNESDAY;
+ } else if (uprv_strcmp(fwExt, "thu") == 0) {
+ fFirstDayOfWeek = UCAL_THURSDAY;
+ } else if (uprv_strcmp(fwExt, "fri") == 0) {
+ fFirstDayOfWeek = UCAL_FRIDAY;
+ } else if (uprv_strcmp(fwExt, "sat") == 0) {
+ fFirstDayOfWeek = UCAL_SATURDAY;
+ }
+ }
}
ures_close(weekData);
ures_close(rb);
@@ -4060,15 +4119,29 @@ Calendar::internalSet(EDateFields field, int32_t value)
internalSet((UCalendarDateFields) field, value);
}
+int32_t Calendar::internalGetMonth() const {
+ if (resolveFields(kMonthPrecedence) == UCAL_MONTH) {
+ return internalGet(UCAL_MONTH);
+ }
+ return internalGet(UCAL_ORDINAL_MONTH);
+}
+
+int32_t Calendar::internalGetMonth(int32_t defaultValue) const {
+ if (resolveFields(kMonthPrecedence) == UCAL_MONTH) {
+ return internalGet(UCAL_MONTH, defaultValue);
+ }
+ return internalGet(UCAL_ORDINAL_MONTH);
+}
+
BasicTimeZone*
-Calendar::getBasicTimeZone(void) const {
- if (dynamic_cast<const OlsonTimeZone *>(fZone) != NULL
- || dynamic_cast<const SimpleTimeZone *>(fZone) != NULL
- || dynamic_cast<const RuleBasedTimeZone *>(fZone) != NULL
- || dynamic_cast<const VTimeZone *>(fZone) != NULL) {
+Calendar::getBasicTimeZone() const {
+ if (dynamic_cast<const OlsonTimeZone *>(fZone) != nullptr
+ || dynamic_cast<const SimpleTimeZone *>(fZone) != nullptr
+ || dynamic_cast<const RuleBasedTimeZone *>(fZone) != nullptr
+ || dynamic_cast<const VTimeZone *>(fZone) != nullptr) {
return (BasicTimeZone*)fZone;
}
- return NULL;
+ return nullptr;
}
U_NAMESPACE_END
diff --git a/Build/source/libs/icu/icu-src/source/i18n/casetrn.cpp b/Build/source/libs/icu/icu-src/source/i18n/casetrn.cpp
index a065330cac2..2f9699ee9dc 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/casetrn.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/casetrn.cpp
@@ -147,7 +147,7 @@ void CaseMapTransliterator::handleTransliterate(Replaceable& text,
csc.limit = offsets.contextLimit;
UnicodeString tmp;
- const UChar *s;
+ const char16_t *s;
UChar32 c;
int32_t textPos, delta, result;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/cecal.cpp b/Build/source/libs/icu/icu-src/source/i18n/cecal.cpp
index 60e3d4b2657..456801ee370 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/cecal.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/cecal.cpp
@@ -13,6 +13,7 @@
#include "cecal.h"
#include "gregoimp.h" //Math
+#include "cstring.h"
U_NAMESPACE_BEGIN
@@ -42,6 +43,7 @@ static const int32_t LIMITS[UCAL_FIELD_COUNT][4] = {
{/*N/A*/-1,/*N/A*/-1,/*N/A*/-1,/*N/A*/-1}, // JULIAN_DAY
{/*N/A*/-1,/*N/A*/-1,/*N/A*/-1,/*N/A*/-1}, // MILLISECONDS_IN_DAY
{/*N/A*/-1,/*N/A*/-1,/*N/A*/-1,/*N/A*/-1}, // IS_LEAP_MONTH
+ { 0, 0, 12, 12}, // ORDINAL_MONTH
};
//-------------------------------------------------------------------------
@@ -87,19 +89,6 @@ CECalendar::handleGetLimit(UCalendarDateFields field, ELimitType limitType) cons
}
UBool
-CECalendar::inDaylightTime(UErrorCode& status) const
-{
- if (U_FAILURE(status) || !getTimeZone().useDaylightTime()) {
- return false;
- }
-
- // Force an update of the state of the Calendar.
- ((CECalendar*)this)->complete(status); // cast away const
-
- return (UBool)(U_SUCCESS(status) ? (internalGet(UCAL_DST_OFFSET) != 0) : false);
-}
-
-UBool
CECalendar::haveDefaultCentury() const
{
return true;
@@ -145,6 +134,24 @@ CECalendar::jdToCE(int32_t julianDay, int32_t jdEpochOffset, int32_t& year, int3
day = (doy % 30) + 1; // 1-based days in a month
}
+static const char* kMonthCode13 = "M13";
+
+const char* CECalendar::getTemporalMonthCode(UErrorCode& status) const {
+ if (get(UCAL_MONTH, status) == 12) return kMonthCode13;
+ return Calendar::getTemporalMonthCode(status);
+}
+
+void
+CECalendar::setTemporalMonthCode(const char* code, UErrorCode& status) {
+ if (U_FAILURE(status)) return;
+ if (uprv_strcmp(code, kMonthCode13) == 0) {
+ set(UCAL_MONTH, 12);
+ set(UCAL_IS_LEAP_MONTH, 0);
+ return;
+ }
+ Calendar::setTemporalMonthCode(code, status);
+}
+
U_NAMESPACE_END
#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/Build/source/libs/icu/icu-src/source/i18n/cecal.h b/Build/source/libs/icu/icu-src/source/i18n/cecal.h
index 9ac71f6ba38..16f36a7976c 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/cecal.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/cecal.h
@@ -24,6 +24,36 @@ U_NAMESPACE_BEGIN
*/
class U_I18N_API CECalendar : public Calendar {
+public:
+
+ /**
+ * Gets The Temporal monthCode value corresponding to the month for the date.
+ * The value is a string identifier that starts with the literal grapheme
+ * "M" followed by two graphemes representing the zero-padded month number
+ * of the current month in a normal (non-leap) year. For the short thirteen
+ * month in each year in the CECalendar, the value is "M13".
+ *
+ * @param status ICU Error Code
+ * @return One of 13 possible strings in {"M01".. "M12", "M13"}.
+ * @draft ICU 73
+ */
+ virtual const char* getTemporalMonthCode(UErrorCode& status) const override;
+
+ /**
+ * Sets The Temporal monthCode which is a string identifier that starts
+ * with the literal grapheme "M" followed by two graphemes representing
+ * the zero-padded month number of the current month in a normal
+ * (non-leap) year. For CECalendar calendar, the values
+ * are "M01" .. "M13" while the "M13" is represent the short thirteen month
+ * in each year.
+ *
+ * @param temporalMonth The value to be set for temporal monthCode.
+ * @param status ICU Error Code
+ *
+ * @draft ICU 73
+ */
+ virtual void setTemporalMonthCode(const char* code, UErrorCode& status) override;
+
protected:
//-------------------------------------------------------------------------
// Constructors...
@@ -77,17 +107,6 @@ protected:
virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const override;
/**
- * (Overrides Calendar) Return true if the current date for this Calendar is in
- * Daylight Savings Time. Recognizes DST_OFFSET, if it is set.
- *
- * @param status Fill-in parameter which receives the status of this operation.
- * @return True if the current date for this Calendar is in Daylight Savings Time,
- * false, otherwise.
- * @internal
- */
- virtual UBool inDaylightTime(UErrorCode&) const override;
-
- /**
* Returns true because Coptic/Ethiopic Calendar does have a default century
* @internal
*/
diff --git a/Build/source/libs/icu/icu-src/source/i18n/chnsecal.cpp b/Build/source/libs/icu/icu-src/source/i18n/chnsecal.cpp
index e48c90eb5af..c7c573bacc7 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/chnsecal.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/chnsecal.cpp
@@ -17,6 +17,8 @@
#include "chnsecal.h"
+#include <cstdint>
+
#if !UCONFIG_NO_FORMATTING
#include "umutex.h"
@@ -26,6 +28,7 @@
#include "unicode/simpletz.h"
#include "uhash.h"
#include "ucln_in.h"
+#include "cstring.h"
// Debugging
#ifdef U_DEBUG_CHNSECAL
@@ -52,13 +55,13 @@ static void debug_chnsecal_msg(const char *pat, ...)
// --- The cache --
static icu::UMutex astroLock;
-static icu::CalendarAstronomer *gChineseCalendarAstro = NULL;
+static icu::CalendarAstronomer *gChineseCalendarAstro = nullptr;
// Lazy Creation & Access synchronized by class CalendarCache with a mutex.
-static icu::CalendarCache *gChineseCalendarWinterSolsticeCache = NULL;
-static icu::CalendarCache *gChineseCalendarNewYearCache = NULL;
+static icu::CalendarCache *gChineseCalendarWinterSolsticeCache = nullptr;
+static icu::CalendarCache *gChineseCalendarNewYearCache = nullptr;
-static icu::TimeZone *gChineseCalendarZoneAstroCalc = NULL;
+static icu::TimeZone *gChineseCalendarZoneAstroCalc = nullptr;
static icu::UInitOnce gChineseCalendarZoneAstroCalcInitOnce {};
/**
@@ -85,22 +88,22 @@ static const int32_t SYNODIC_GAP = 25;
U_CDECL_BEGIN
-static UBool calendar_chinese_cleanup(void) {
+static UBool calendar_chinese_cleanup() {
if (gChineseCalendarAstro) {
delete gChineseCalendarAstro;
- gChineseCalendarAstro = NULL;
+ gChineseCalendarAstro = nullptr;
}
if (gChineseCalendarWinterSolsticeCache) {
delete gChineseCalendarWinterSolsticeCache;
- gChineseCalendarWinterSolsticeCache = NULL;
+ gChineseCalendarWinterSolsticeCache = nullptr;
}
if (gChineseCalendarNewYearCache) {
delete gChineseCalendarNewYearCache;
- gChineseCalendarNewYearCache = NULL;
+ gChineseCalendarNewYearCache = nullptr;
}
if (gChineseCalendarZoneAstroCalc) {
delete gChineseCalendarZoneAstroCalc;
- gChineseCalendarZoneAstroCalc = NULL;
+ gChineseCalendarZoneAstroCalc = nullptr;
}
gChineseCalendarZoneAstroCalcInitOnce.reset();
return true;
@@ -124,7 +127,7 @@ ChineseCalendar* ChineseCalendar::clone() const {
ChineseCalendar::ChineseCalendar(const Locale& aLocale, UErrorCode& success)
: Calendar(TimeZone::forLocaleOrDefault(aLocale), aLocale, success),
- isLeapYear(false),
+ hasLeapMonthBetweenWinterSolstices(false),
fEpochYear(CHINESE_EPOCH_YEAR),
fZoneAstroCalc(getChineseCalZoneAstroCalc())
{
@@ -134,7 +137,7 @@ ChineseCalendar::ChineseCalendar(const Locale& aLocale, UErrorCode& success)
ChineseCalendar::ChineseCalendar(const Locale& aLocale, int32_t epochYear,
const TimeZone* zoneAstroCalc, UErrorCode &success)
: Calendar(TimeZone::forLocaleOrDefault(aLocale), aLocale, success),
- isLeapYear(false),
+ hasLeapMonthBetweenWinterSolstices(false),
fEpochYear(epochYear),
fZoneAstroCalc(zoneAstroCalc)
{
@@ -142,7 +145,7 @@ ChineseCalendar::ChineseCalendar(const Locale& aLocale, int32_t epochYear,
}
ChineseCalendar::ChineseCalendar(const ChineseCalendar& other) : Calendar(other) {
- isLeapYear = other.isLeapYear;
+ hasLeapMonthBetweenWinterSolstices = other.hasLeapMonthBetweenWinterSolstices;
fEpochYear = other.fEpochYear;
fZoneAstroCalc = other.fZoneAstroCalc;
}
@@ -160,7 +163,7 @@ static void U_CALLCONV initChineseCalZoneAstroCalc() {
ucln_i18n_registerCleanup(UCLN_I18N_CHINESE_CALENDAR, calendar_chinese_cleanup);
}
-const TimeZone* ChineseCalendar::getChineseCalZoneAstroCalc(void) const {
+const TimeZone* ChineseCalendar::getChineseCalZoneAstroCalc() const {
umtx_initOnce(gChineseCalendarZoneAstroCalcInitOnce, &initChineseCalZoneAstroCalc);
return gChineseCalendarZoneAstroCalc;
}
@@ -196,6 +199,7 @@ static const int32_t LIMITS[UCAL_FIELD_COUNT][4] = {
{/*N/A*/-1,/*N/A*/-1,/*N/A*/-1,/*N/A*/-1}, // JULIAN_DAY
{/*N/A*/-1,/*N/A*/-1,/*N/A*/-1,/*N/A*/-1}, // MILLISECONDS_IN_DAY
{ 0, 0, 1, 1}, // IS_LEAP_MONTH
+ { 0, 0, 11, 12}, // ORDINAL_MONTH
};
@@ -321,7 +325,6 @@ const UFieldResolutionTable* ChineseCalendar::getFieldResolutionTable() const {
* @stable ICU 2.8
*/
int32_t ChineseCalendar::handleComputeMonthStart(int32_t eyear, int32_t month, UBool useMonth) const {
-
ChineseCalendar *nonConstThis = (ChineseCalendar*)this; // cast away const
// If the month is out of range, adjust it into range, and
@@ -340,6 +343,7 @@ int32_t ChineseCalendar::handleComputeMonthStart(int32_t eyear, int32_t month, U
// Save fields for later restoration
int32_t saveMonth = internalGet(UCAL_MONTH);
+ int32_t saveOrdinalMonth = internalGet(UCAL_ORDINAL_MONTH);
int32_t saveIsLeapMonth = internalGet(UCAL_IS_LEAP_MONTH);
// Ignore IS_LEAP_MONTH field if useMonth is false
@@ -361,8 +365,8 @@ int32_t ChineseCalendar::handleComputeMonthStart(int32_t eyear, int32_t month, U
}
nonConstThis->internalSet(UCAL_MONTH, saveMonth);
+ nonConstThis->internalSet(UCAL_ORDINAL_MONTH, saveOrdinalMonth);
nonConstThis->internalSet(UCAL_IS_LEAP_MONTH, saveIsLeapMonth);
-
return julianDay - 1;
}
@@ -374,13 +378,14 @@ int32_t ChineseCalendar::handleComputeMonthStart(int32_t eyear, int32_t month, U
void ChineseCalendar::add(UCalendarDateFields field, int32_t amount, UErrorCode& status) {
switch (field) {
case UCAL_MONTH:
+ case UCAL_ORDINAL_MONTH:
if (amount != 0) {
int32_t dom = get(UCAL_DAY_OF_MONTH, status);
if (U_FAILURE(status)) break;
int32_t day = get(UCAL_JULIAN_DAY, status) - kEpochStartAsJulianDay; // Get local day
if (U_FAILURE(status)) break;
int32_t moon = day - dom + 1; // New moon
- offsetMonth(moon, dom, amount);
+ offsetMonth(moon, dom, amount, status);
}
break;
default:
@@ -404,6 +409,7 @@ void ChineseCalendar::add(EDateFields field, int32_t amount, UErrorCode& status)
void ChineseCalendar::roll(UCalendarDateFields field, int32_t amount, UErrorCode& status) {
switch (field) {
case UCAL_MONTH:
+ case UCAL_ORDINAL_MONTH:
if (amount != 0) {
int32_t dom = get(UCAL_DAY_OF_MONTH, status);
if (U_FAILURE(status)) break;
@@ -419,7 +425,7 @@ void ChineseCalendar::roll(UCalendarDateFields field, int32_t amount, UErrorCode
// leap year.
int32_t m = get(UCAL_MONTH, status); // 0-based month
if (U_FAILURE(status)) break;
- if (isLeapYear) { // (member variable)
+ if (hasLeapMonthBetweenWinterSolstices) { // (member variable)
if (get(UCAL_IS_LEAP_MONTH, status) == 1) {
++m;
} else {
@@ -442,14 +448,14 @@ void ChineseCalendar::roll(UCalendarDateFields field, int32_t amount, UErrorCode
// Now do the standard roll computation on m, with the
// allowed range of 0..n-1, where n is 12 or 13.
- int32_t n = isLeapYear ? 13 : 12; // Months in this year
+ int32_t n = hasLeapMonthBetweenWinterSolstices ? 13 : 12; // Months in this year
int32_t newM = (m + amount) % n;
if (newM < 0) {
newM += n;
}
if (newM != m) {
- offsetMonth(moon, dom, newM - m);
+ offsetMonth(moon, dom, newM - m, status);
}
}
break;
@@ -482,7 +488,7 @@ void ChineseCalendar::roll(EDateFields field, int32_t amount, UErrorCode& status
*/
double ChineseCalendar::daysToMillis(double days) const {
double millis = days * (double)kOneDay;
- if (fZoneAstroCalc != NULL) {
+ if (fZoneAstroCalc != nullptr) {
int32_t rawOffset, dstOffset;
UErrorCode status = U_ZERO_ERROR;
fZoneAstroCalc->getOffset(millis, false, rawOffset, dstOffset, status);
@@ -499,7 +505,7 @@ double ChineseCalendar::daysToMillis(double days) const {
* @return days after January 1, 1970 0:00 in the astronomical base zone
*/
double ChineseCalendar::millisToDays(double millis) const {
- if (fZoneAstroCalc != NULL) {
+ if (fZoneAstroCalc != nullptr) {
int32_t rawOffset, dstOffset;
UErrorCode status = U_ZERO_ERROR;
fZoneAstroCalc->getOffset(millis, false, rawOffset, dstOffset, status);
@@ -536,7 +542,7 @@ int32_t ChineseCalendar::winterSolstice(int32_t gyear) const {
double ms = daysToMillis(Grego::fieldsToDay(gyear, UCAL_DECEMBER, 1));
umtx_lock(&astroLock);
- if(gChineseCalendarAstro == NULL) {
+ if(gChineseCalendarAstro == nullptr) {
gChineseCalendarAstro = new CalendarAstronomer();
ucln_i18n_registerCleanup(UCLN_I18N_CHINESE_CALENDAR, calendar_chinese_cleanup);
}
@@ -566,7 +572,7 @@ int32_t ChineseCalendar::winterSolstice(int32_t gyear) const {
int32_t ChineseCalendar::newMoonNear(double days, UBool after) const {
umtx_lock(&astroLock);
- if(gChineseCalendarAstro == NULL) {
+ if(gChineseCalendarAstro == nullptr) {
gChineseCalendarAstro = new CalendarAstronomer();
ucln_i18n_registerCleanup(UCLN_I18N_CHINESE_CALENDAR, calendar_chinese_cleanup);
}
@@ -598,7 +604,7 @@ int32_t ChineseCalendar::synodicMonthsBetween(int32_t day1, int32_t day2) const
int32_t ChineseCalendar::majorSolarTerm(int32_t days) const {
umtx_lock(&astroLock);
- if(gChineseCalendarAstro == NULL) {
+ if(gChineseCalendarAstro == nullptr) {
gChineseCalendarAstro = new CalendarAstronomer();
ucln_i18n_registerCleanup(UCLN_I18N_CHINESE_CALENDAR, calendar_chinese_cleanup);
}
@@ -649,9 +655,13 @@ UBool ChineseCalendar::isLeapMonthBetween(int32_t newMoon1, int32_t newMoon2) co
}
#endif
- return (newMoon2 >= newMoon1) &&
- (isLeapMonthBetween(newMoon1, newMoonNear(newMoon2 - SYNODIC_GAP, false)) ||
- hasNoMajorSolarTerm(newMoon2));
+ while (newMoon2 >= newMoon1) {
+ if (hasNoMajorSolarTerm(newMoon2)) {
+ return true;
+ }
+ newMoon2 = newMoonNear(newMoon2 - SYNODIC_GAP, false);
+ }
+ return false;
}
/**
@@ -661,7 +671,7 @@ UBool ChineseCalendar::isLeapMonthBetween(int32_t newMoon1, int32_t newMoon2) co
* IS_LEAP_MONTH fields, as required by
* <code>handleComputeMonthStart()</code>.
*
- * <p>As a side effect, this method sets {@link #isLeapYear}.
+ * <p>As a side effect, this method sets {@link #hasLeapMonthBetweenWinterSolstices}.
* @param days days after January 1, 1970 0:00 astronomical base zone
* of the date to compute fields for
* @param gyear the Gregorian year of the given date
@@ -672,7 +682,6 @@ UBool ChineseCalendar::isLeapMonthBetween(int32_t newMoon1, int32_t newMoon2) co
*/
void ChineseCalendar::computeChineseFields(int32_t days, int32_t gyear, int32_t gmonth,
UBool 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.
@@ -692,24 +701,33 @@ void ChineseCalendar::computeChineseFields(int32_t days, int32_t gyear, int32_t
int32_t firstMoon = newMoonNear(solsticeBefore + 1, true);
int32_t lastMoon = newMoonNear(solsticeAfter + 1, false);
int32_t thisMoon = newMoonNear(days + 1, false); // Start of this month
- // Note: isLeapYear is a member variable
- isLeapYear = synodicMonthsBetween(firstMoon, lastMoon) == 12;
+ // Note: hasLeapMonthBetweenWinterSolstices is a member variable
+ hasLeapMonthBetweenWinterSolstices = synodicMonthsBetween(firstMoon, lastMoon) == 12;
int32_t month = synodicMonthsBetween(firstMoon, thisMoon);
- if (isLeapYear && isLeapMonthBetween(firstMoon, thisMoon)) {
+ int32_t theNewYear = newYear(gyear);
+ if (days < theNewYear) {
+ theNewYear = newYear(gyear-1);
+ }
+ if (hasLeapMonthBetweenWinterSolstices && isLeapMonthBetween(firstMoon, thisMoon)) {
month--;
}
if (month < 1) {
month += 12;
}
-
- UBool isLeapMonth = isLeapYear &&
+ int32_t ordinalMonth = synodicMonthsBetween(theNewYear, thisMoon);
+ if (ordinalMonth < 0) {
+ ordinalMonth += 12;
+ }
+ UBool isLeapMonth = hasLeapMonthBetweenWinterSolstices &&
hasNoMajorSolarTerm(thisMoon) &&
!isLeapMonthBetween(firstMoon, newMoonNear(thisMoon - SYNODIC_GAP, false));
internalSet(UCAL_MONTH, month-1); // Convert from 1-based to 0-based
+ internalSet(UCAL_ORDINAL_MONTH, ordinalMonth); // Convert from 1-based to 0-based
internalSet(UCAL_IS_LEAP_MONTH, isLeapMonth?1:0);
+
if (setAllFields) {
// Extended year and cycle year is based on the epoch year
@@ -793,12 +811,21 @@ int32_t ChineseCalendar::newYear(int32_t gyear) const {
* @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
+ * @param status The status.
*/
-void ChineseCalendar::offsetMonth(int32_t newMoon, int32_t dom, int32_t delta) {
- UErrorCode status = U_ZERO_ERROR;
+void ChineseCalendar::offsetMonth(int32_t newMoon, int32_t dom, int32_t delta,
+ UErrorCode& status) {
+ if (U_FAILURE(status)) { return; }
// Move to the middle of the month before our target month.
- newMoon += (int32_t) (CalendarAstronomer::SYNODIC_MONTH * (delta - 0.5));
+ double value = newMoon;
+ value += (CalendarAstronomer::SYNODIC_MONTH *
+ (static_cast<double>(delta) - 0.5));
+ if (value < INT32_MIN || value > INT32_MAX) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
+ newMoon = static_cast<int32_t>(value);
// Search forward to the target month's new moon
newMoon = newMoonNear(newMoon, true);
@@ -825,18 +852,21 @@ void ChineseCalendar::offsetMonth(int32_t newMoon, int32_t dom, int32_t delta) {
}
}
+constexpr uint32_t kChineseRelatedYearDiff = -2637;
-UBool
-ChineseCalendar::inDaylightTime(UErrorCode& status) const
+int32_t ChineseCalendar::getRelatedYear(UErrorCode &status) const
{
- // copied from GregorianCalendar
- if (U_FAILURE(status) || !getTimeZone().useDaylightTime())
- return false;
-
- // Force an update of the state of the Calendar.
- ((ChineseCalendar*)this)->complete(status); // cast away const
+ int32_t year = get(UCAL_EXTENDED_YEAR, status);
+ if (U_FAILURE(status)) {
+ return 0;
+ }
+ return year + kChineseRelatedYearDiff;
+}
- return (UBool)(U_SUCCESS(status) ? (internalGet(UCAL_DST_OFFSET) != 0) : false);
+void ChineseCalendar::setRelatedYear(int32_t year)
+{
+ // set extended year
+ set(UCAL_EXTENDED_YEAR, year - kChineseRelatedYearDiff);
}
// default century
@@ -894,8 +924,84 @@ ChineseCalendar::internalGetDefaultCenturyStartYear() const
return gSystemDefaultCenturyStartYear;
}
+bool
+ChineseCalendar::inTemporalLeapYear(UErrorCode &status) const
+{
+ int32_t days = getActualMaximum(UCAL_DAY_OF_YEAR, status);
+ if (U_FAILURE(status)) return false;
+ return days > 360;
+}
+
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(ChineseCalendar)
+
+static const char * const gTemporalLeapMonthCodes[] = {
+ "M01L", "M02L", "M03L", "M04L", "M05L", "M06L",
+ "M07L", "M08L", "M09L", "M10L", "M11L", "M12L", nullptr
+};
+
+const char* ChineseCalendar::getTemporalMonthCode(UErrorCode &status) const {
+ // We need to call get, not internalGet, to force the calculation
+ // from UCAL_ORDINAL_MONTH.
+ int32_t is_leap = get(UCAL_IS_LEAP_MONTH, status);
+ if (U_FAILURE(status)) return nullptr;
+ if (is_leap != 0) {
+ int32_t month = get(UCAL_MONTH, status);
+ if (U_FAILURE(status)) return nullptr;
+ return gTemporalLeapMonthCodes[month];
+ }
+ return Calendar::getTemporalMonthCode(status);
+}
+
+void
+ChineseCalendar::setTemporalMonthCode(const char* code, UErrorCode& status )
+{
+ if (U_FAILURE(status)) return;
+ int32_t len = static_cast<int32_t>(uprv_strlen(code));
+ if (len != 4 || code[0] != 'M' || code[3] != 'L') {
+ set(UCAL_IS_LEAP_MONTH, 0);
+ return Calendar::setTemporalMonthCode(code, status);
+ }
+ for (int m = 0; gTemporalLeapMonthCodes[m] != nullptr; m++) {
+ if (uprv_strcmp(code, gTemporalLeapMonthCodes[m]) == 0) {
+ set(UCAL_MONTH, m);
+ set(UCAL_IS_LEAP_MONTH, 1);
+ return;
+ }
+ }
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+}
+
+int32_t ChineseCalendar::internalGetMonth() const {
+ if (resolveFields(kMonthPrecedence) == UCAL_MONTH) {
+ return internalGet(UCAL_MONTH);
+ }
+ LocalPointer<Calendar> temp(this->clone());
+ temp->set(UCAL_MONTH, 0);
+ temp->set(UCAL_IS_LEAP_MONTH, 0);
+ temp->set(UCAL_DATE, 1);
+ // Calculate the UCAL_MONTH and UCAL_IS_LEAP_MONTH by adding number of
+ // months.
+ UErrorCode status = U_ZERO_ERROR;
+ temp->roll(UCAL_MONTH, internalGet(UCAL_ORDINAL_MONTH), status);
+ U_ASSERT(U_SUCCESS(status));
+
+ ChineseCalendar *nonConstThis = (ChineseCalendar*)this; // cast away const
+ nonConstThis->internalSet(UCAL_IS_LEAP_MONTH, temp->get(UCAL_IS_LEAP_MONTH, status));
+ U_ASSERT(U_SUCCESS(status));
+ int32_t month = temp->get(UCAL_MONTH, status);
+ U_ASSERT(U_SUCCESS(status));
+ nonConstThis->internalSet(UCAL_MONTH, month);
+ return month;
+}
+
+int32_t ChineseCalendar::internalGetMonth(int32_t defaultValue) const {
+ if (resolveFields(kMonthPrecedence) == UCAL_MONTH) {
+ return internalGet(UCAL_MONTH, defaultValue);
+ }
+ return internalGetMonth();
+}
+
U_NAMESPACE_END
#endif
diff --git a/Build/source/libs/icu/icu-src/source/i18n/chnsecal.h b/Build/source/libs/icu/icu-src/source/i18n/chnsecal.h
index 488fe169d99..e4910f6eb8e 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/chnsecal.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/chnsecal.h
@@ -75,10 +75,6 @@ U_NAMESPACE_BEGIN
* <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>
*
@@ -113,6 +109,49 @@ class U_I18N_API ChineseCalendar : public Calendar {
*/
ChineseCalendar(const Locale& aLocale, UErrorCode &success);
+ /**
+ * Returns true if the date is in a leap year.
+ *
+ * @param status ICU Error Code
+ * @return True if the date in the fields is in a Temporal proposal
+ * defined leap year. False otherwise.
+ */
+ virtual bool inTemporalLeapYear(UErrorCode &status) const override;
+
+ /**
+ * Gets The Temporal monthCode value corresponding to the month for the date.
+ * The value is a string identifier that starts with the literal grapheme
+ * "M" followed by two graphemes representing the zero-padded month number
+ * of the current month in a normal (non-leap) year and suffixed by an
+ * optional literal grapheme "L" if this is a leap month in a lunisolar
+ * calendar. For Chinese calendars (including Dangi), the values are
+ * "M01" .. "M12" for non-leap year, and "M01" .. "M12" with one of
+ * "M01L" .. "M12L" for leap year.
+ *
+ * @param status ICU Error Code
+ * @return One of 24 possible strings in
+ * {"M01" .. "M12", "M01L" .. "M12L"}.
+ * @draft ICU 73
+ */
+ virtual const char* getTemporalMonthCode(UErrorCode &status) const override;
+
+ /**
+ * Sets The Temporal monthCode which is a string identifier that starts
+ * with the literal grapheme "M" followed by two graphemes representing
+ * the zero-padded month number of the current month in a normal
+ * (non-leap) year and suffixed by an optional literal grapheme "L" if this
+ * is a leap month in a lunisolar calendar. For Chinese calendars, the values
+ * are "M01" .. "M12" for non-leap years, and "M01" .. "M12" plus one in
+ * "M01L" .. "M12L" for leap year.
+ *
+ * @param temporalMonth The value to be set for temporal monthCode. One of
+ * 24 possible strings in {"M01" .. "M12", "M01L" .. "M12L"}.
+ * @param status ICU Error Code
+ *
+ * @draft ICU 73
+ */
+ virtual void setTemporalMonthCode(const char* code, UErrorCode& status) override;
+
protected:
/**
@@ -152,7 +191,12 @@ class U_I18N_API ChineseCalendar : public Calendar {
// Internal data....
//-------------------------------------------------------------------------
- UBool isLeapYear;
+ // There is a leap month between the Winter Solstice before and after the
+ // current date.This is different from leap year because in some year, such as
+ // 1813 and 2033, the leap month is after the Winter Solstice of that year. So
+ // this value could be false for a date prior to the Winter Solstice of that
+ // year but that year still has a leap month and therefor is a leap year.
+ UBool hasLeapMonthBetweenWinterSolstices;
int32_t fEpochYear; // Start year of this Chinese calendar instance.
const TimeZone* fZoneAstroCalc; // Zone used for the astronomical calculation
// of this Chinese calendar instance.
@@ -175,6 +219,20 @@ class U_I18N_API ChineseCalendar : public Calendar {
virtual void roll(UCalendarDateFields field, int32_t amount, UErrorCode &status) override;
virtual void roll(EDateFields field, int32_t amount, UErrorCode &status) override;
+ /**
+ * @return The related Gregorian year; will be obtained by modifying the value
+ * obtained by get from UCAL_EXTENDED_YEAR field
+ * @internal
+ */
+ virtual int32_t getRelatedYear(UErrorCode &status) const override;
+
+ /**
+ * @param year The related Gregorian year to set; will be modified as necessary then
+ * set in UCAL_EXTENDED_YEAR field
+ * @internal
+ */
+ virtual void setRelatedYear(int32_t year) override;
+
//----------------------------------------------------------------------
// Internal methods & astronomical calculations
//----------------------------------------------------------------------
@@ -194,8 +252,8 @@ class U_I18N_API ChineseCalendar : public Calendar {
virtual void computeChineseFields(int32_t days, int32_t gyear,
int32_t gmonth, UBool setAllFields);
virtual int32_t newYear(int32_t gyear) const;
- virtual void offsetMonth(int32_t newMoon, int32_t dom, int32_t delta);
- const TimeZone* getChineseCalZoneAstroCalc(void) const;
+ virtual void offsetMonth(int32_t newMoon, int32_t dom, int32_t delta, UErrorCode& status);
+ const TimeZone* getChineseCalZoneAstroCalc() const;
// UObject stuff
public:
@@ -204,7 +262,7 @@ class U_I18N_API ChineseCalendar : public Calendar {
* same class ID. Objects of other classes have different class IDs.
* @internal
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
/**
* Return the class ID for this class. This is useful only for comparing to a return
@@ -217,7 +275,7 @@ class U_I18N_API ChineseCalendar : public Calendar {
* @return The class ID for all objects of this class.
* @internal
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* return the calendar type, "chinese".
@@ -227,20 +285,12 @@ class U_I18N_API ChineseCalendar : public Calendar {
*/
virtual const char * getType() const override;
-
protected:
- /**
- * (Overrides Calendar) Return true if the current date for this Calendar is in
- * Daylight Savings Time. Recognizes DST_OFFSET, if it is set.
- *
- * @param status Fill-in parameter which receives the status of this operation.
- * @return True if the current date for this Calendar is in Daylight Savings Time,
- * false, otherwise.
- * @internal
- */
- virtual UBool inDaylightTime(UErrorCode& status) const override;
+ virtual int32_t internalGetMonth(int32_t defaultValue) const override;
+ virtual int32_t internalGetMonth() const override;
+ protected:
/**
* Returns true because the Islamic Calendar does have a default century
* @internal
@@ -266,13 +316,13 @@ class U_I18N_API ChineseCalendar : public Calendar {
* Returns the beginning date of the 100-year window that dates
* with 2-digit years are considered to fall within.
*/
- UDate internalGetDefaultCenturyStart(void) const;
+ UDate internalGetDefaultCenturyStart() const;
/**
* Returns the first year of the 100-year window that dates with
* 2-digit years are considered to fall within.
*/
- int32_t internalGetDefaultCenturyStartYear(void) const;
+ int32_t internalGetDefaultCenturyStartYear() const;
ChineseCalendar() = delete; // default constructor not implemented
};
diff --git a/Build/source/libs/icu/icu-src/source/i18n/choicfmt.cpp b/Build/source/libs/icu/icu-src/source/i18n/choicfmt.cpp
index d06eec35fa2..96e73fabcfa 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/choicfmt.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/choicfmt.cpp
@@ -51,23 +51,23 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(ChoiceFormat)
// Special characters used by ChoiceFormat. There are two characters
// used interchangeably to indicate <=. Either is parsed, but only
// LESS_EQUAL is generated by toPattern().
-#define SINGLE_QUOTE ((UChar)0x0027) /*'*/
-#define LESS_THAN ((UChar)0x003C) /*<*/
-#define LESS_EQUAL ((UChar)0x0023) /*#*/
-#define LESS_EQUAL2 ((UChar)0x2264)
-#define VERTICAL_BAR ((UChar)0x007C) /*|*/
-#define MINUS ((UChar)0x002D) /*-*/
+#define SINGLE_QUOTE ((char16_t)0x0027) /*'*/
+#define LESS_THAN ((char16_t)0x003C) /*<*/
+#define LESS_EQUAL ((char16_t)0x0023) /*#*/
+#define LESS_EQUAL2 ((char16_t)0x2264)
+#define VERTICAL_BAR ((char16_t)0x007C) /*|*/
+#define MINUS ((char16_t)0x002D) /*-*/
-static const UChar LEFT_CURLY_BRACE = 0x7B; /*{*/
-static const UChar RIGHT_CURLY_BRACE = 0x7D; /*}*/
+static const char16_t LEFT_CURLY_BRACE = 0x7B; /*{*/
+static const char16_t RIGHT_CURLY_BRACE = 0x7D; /*}*/
#ifdef INFINITY
#undef INFINITY
#endif
-#define INFINITY ((UChar)0x221E)
+#define INFINITY ((char16_t)0x221E)
-//static const UChar gPositiveInfinity[] = {INFINITY, 0};
-//static const UChar gNegativeInfinity[] = {MINUS, INFINITY, 0};
+//static const char16_t gPositiveInfinity[] = {INFINITY, 0};
+//static const char16_t gNegativeInfinity[] = {MINUS, INFINITY, 0};
#define POSITIVE_INF_STRLEN 1
#define NEGATIVE_INF_STRLEN 2
@@ -92,7 +92,7 @@ ChoiceFormat::ChoiceFormat(const double* limits,
: constructorErrorCode(U_ZERO_ERROR),
msgPattern(constructorErrorCode)
{
- setChoices(limits, NULL, formats, cnt, constructorErrorCode);
+ setChoices(limits, nullptr, formats, cnt, constructorErrorCode);
}
// -------------------------------------
@@ -137,7 +137,7 @@ ChoiceFormat::operator==(const Format& that) const
{
if (this == &that) return true;
if (!NumberFormat::operator==(that)) return false;
- ChoiceFormat& thatAlias = (ChoiceFormat&)that;
+ const ChoiceFormat& thatAlias = static_cast<const ChoiceFormat&>(that);
return msgPattern == thatAlias.msgPattern;
}
@@ -175,10 +175,10 @@ ChoiceFormat::dtos(double value,
char *itrPtr = temp;
char *expPtr;
- sprintf(temp, "%.*g", DBL_DIG, value);
+ snprintf(temp, sizeof(temp), "%.*g", DBL_DIG, value);
/* Find and convert the decimal point.
- Using setlocale on some machines will cause sprintf to use a comma for certain locales.
+ Using setlocale on some machines will cause snprintf to use a comma for certain locales.
*/
while (*itrPtr && (*itrPtr == '-' || isdigit(*itrPtr))) {
itrPtr++;
@@ -209,7 +209,7 @@ ChoiceFormat::dtos(double value,
while (*itrPtr) {
*(expPtr++) = *(itrPtr++);
}
- // NULL terminate
+ // NUL terminate
*expPtr = 0;
}
}
@@ -225,7 +225,7 @@ void
ChoiceFormat::applyPattern(const UnicodeString& pattern,
UErrorCode& status)
{
- msgPattern.parseChoiceStyle(pattern, NULL, status);
+ msgPattern.parseChoiceStyle(pattern, nullptr, status);
constructorErrorCode = status;
}
@@ -257,7 +257,7 @@ ChoiceFormat::setChoices( const double* limits,
int32_t cnt )
{
UErrorCode errorCode = U_ZERO_ERROR;
- setChoices(limits, NULL, formats, cnt, errorCode);
+ setChoices(limits, nullptr, formats, cnt, errorCode);
}
// -------------------------------------
@@ -281,7 +281,7 @@ ChoiceFormat::setChoices(const double* limits,
if (U_FAILURE(errorCode)) {
return;
}
- if (limits == NULL || formats == NULL) {
+ if (limits == nullptr || formats == nullptr) {
errorCode = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
@@ -301,7 +301,7 @@ ChoiceFormat::setChoices(const double* limits,
} else {
result += dtos(limits[i], buf);
}
- if (closures != NULL && closures[i]) {
+ if (closures != nullptr && closures[i]) {
result += LESS_THAN;
} else {
result += LESS_EQUAL;
@@ -313,7 +313,7 @@ ChoiceFormat::setChoices(const double* limits,
int32_t textLength = text.length();
int32_t nestingLevel = 0;
for (int32_t j = 0; j < textLength; ++j) {
- UChar c = text[j];
+ char16_t c = text[j];
if (c == SINGLE_QUOTE && nestingLevel == 0) {
// Double each top-level apostrophe.
result.append(c);
@@ -347,7 +347,7 @@ const double*
ChoiceFormat::getLimits(int32_t& cnt) const
{
cnt = 0;
- return NULL;
+ return nullptr;
}
// -------------------------------------
@@ -357,7 +357,7 @@ const UBool*
ChoiceFormat::getClosures(int32_t& cnt) const
{
cnt = 0;
- return NULL;
+ return nullptr;
}
// -------------------------------------
@@ -367,7 +367,7 @@ const UnicodeString*
ChoiceFormat::getFormats(int32_t& cnt) const
{
cnt = 0;
- return NULL;
+ return nullptr;
}
// -------------------------------------
@@ -450,7 +450,7 @@ ChoiceFormat::findSubMessage(const MessagePattern &pattern, int32_t partIndex, d
double boundary = pattern.getNumericValue(part);
// Fetch the ARG_SELECTOR character.
int32_t selectorIndex = pattern.getPatternIndex(partIndex++);
- UChar boundaryChar = pattern.getPatternString().charAt(selectorIndex);
+ char16_t boundaryChar = pattern.getPatternString().charAt(selectorIndex);
if (boundaryChar == LESS_THAN ? !(number > boundary) : !(number >= boundary)) {
// The number is in the interval between the previous boundary and the current one.
// Return with the sub-message between them.
diff --git a/Build/source/libs/icu/icu-src/source/i18n/coleitr.cpp b/Build/source/libs/icu/icu-src/source/i18n/coleitr.cpp
index 05039502734..be0a8e4690f 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/coleitr.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/coleitr.cpp
@@ -54,7 +54,7 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(CollationElementIterator)
CollationElementIterator::CollationElementIterator(
const CollationElementIterator& other)
- : UObject(other), iter_(NULL), rbc_(NULL), otherHalf_(0), dir_(0), offsets_(NULL) {
+ : UObject(other), iter_(nullptr), rbc_(nullptr), otherHalf_(0), dir_(0), offsets_(nullptr) {
*this = other;
}
@@ -82,7 +82,7 @@ UBool ceNeedsTwoParts(int64_t ce) {
int32_t CollationElementIterator::getOffset() const
{
- if (dir_ < 0 && offsets_ != NULL && !offsets_->isEmpty()) {
+ if (dir_ < 0 && offsets_ != nullptr && !offsets_->isEmpty()) {
// CollationIterator::previousCE() decrements the CEs length
// while it pops CEs from its internal buffer.
int32_t i = iter_->getCEsLength();
@@ -185,9 +185,9 @@ int32_t CollationElementIterator::previous(UErrorCode& status)
status = U_INVALID_STATE_ERROR;
return NULLORDER;
}
- if (offsets_ == NULL) {
+ if (offsets_ == nullptr) {
offsets_ = new UVector32(status);
- if (offsets_ == NULL) {
+ if (offsets_ == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return NULLORDER;
}
@@ -234,7 +234,7 @@ void CollationElementIterator::setOffset(int32_t newOffset,
if (0 < newOffset && newOffset < string_.length()) {
int32_t offset = newOffset;
do {
- UChar c = string_.charAt(offset);
+ char16_t c = string_.charAt(offset);
if (!rbc_->isUnsafe(c) ||
(U16_IS_LEAD(c) && !rbc_->isUnsafe(string_.char32At(offset)))) {
break;
@@ -278,7 +278,7 @@ void CollationElementIterator::setText(const UnicodeString& source,
}
string_ = source;
- const UChar *s = string_.getBuffer();
+ const char16_t *s = string_.getBuffer();
CollationIterator *newIter;
UBool numeric = rbc_->settings->isNumeric();
if (rbc_->settings->dontCheckFCD()) {
@@ -286,7 +286,7 @@ void CollationElementIterator::setText(const UnicodeString& source,
} else {
newIter = new FCDUTF16CollationIterator(rbc_->data, numeric, s, s, s + string_.length());
}
- if (newIter == NULL) {
+ if (newIter == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -331,7 +331,7 @@ CollationElementIterator::CollationElementIterator(
const UnicodeString &source,
const RuleBasedCollator *coll,
UErrorCode &status)
- : iter_(NULL), rbc_(coll), otherHalf_(0), dir_(0), offsets_(NULL) {
+ : iter_(nullptr), rbc_(coll), otherHalf_(0), dir_(0), offsets_(nullptr) {
setText(source, status);
}
@@ -343,7 +343,7 @@ CollationElementIterator::CollationElementIterator(
const CharacterIterator &source,
const RuleBasedCollator *coll,
UErrorCode &status)
- : iter_(NULL), rbc_(coll), otherHalf_(0), dir_(0), offsets_(NULL) {
+ : iter_(nullptr), rbc_(coll), otherHalf_(0), dir_(0), offsets_(nullptr) {
// We only call source.getText() which should be const anyway.
setText(const_cast<CharacterIterator &>(source), status);
}
@@ -360,18 +360,18 @@ const CollationElementIterator& CollationElementIterator::operator=(
CollationIterator *newIter;
const FCDUTF16CollationIterator *otherFCDIter =
dynamic_cast<const FCDUTF16CollationIterator *>(other.iter_);
- if(otherFCDIter != NULL) {
+ if(otherFCDIter != nullptr) {
newIter = new FCDUTF16CollationIterator(*otherFCDIter, string_.getBuffer());
} else {
const UTF16CollationIterator *otherIter =
dynamic_cast<const UTF16CollationIterator *>(other.iter_);
- if(otherIter != NULL) {
+ if(otherIter != nullptr) {
newIter = new UTF16CollationIterator(*otherIter, string_.getBuffer());
} else {
- newIter = NULL;
+ newIter = nullptr;
}
}
- if(newIter != NULL) {
+ if(newIter != nullptr) {
delete iter_;
iter_ = newIter;
rbc_ = other.rbc_;
@@ -380,12 +380,12 @@ const CollationElementIterator& CollationElementIterator::operator=(
string_ = other.string_;
}
- if(other.dir_ < 0 && other.offsets_ != NULL && !other.offsets_->isEmpty()) {
+ if(other.dir_ < 0 && other.offsets_ != nullptr && !other.offsets_->isEmpty()) {
UErrorCode errorCode = U_ZERO_ERROR;
- if(offsets_ == NULL) {
+ if(offsets_ == nullptr) {
offsets_ = new UVector32(other.offsets_->size(), errorCode);
}
- if(offsets_ != NULL) {
+ if(offsets_ != nullptr) {
offsets_->assign(*other.offsets_, errorCode);
}
}
@@ -435,15 +435,15 @@ MaxExpSink::~MaxExpSink() {}
UHashtable *
CollationElementIterator::computeMaxExpansions(const CollationData *data, UErrorCode &errorCode) {
- if (U_FAILURE(errorCode)) { return NULL; }
+ if (U_FAILURE(errorCode)) { return nullptr; }
UHashtable *maxExpansions = uhash_open(uhash_hashLong, uhash_compareLong,
uhash_compareLong, &errorCode);
- if (U_FAILURE(errorCode)) { return NULL; }
+ if (U_FAILURE(errorCode)) { return nullptr; }
MaxExpSink sink(maxExpansions, errorCode);
- ContractionsAndExpansions(NULL, NULL, &sink, true).forData(data, errorCode);
+ ContractionsAndExpansions(nullptr, nullptr, &sink, true).forData(data, errorCode);
if (U_FAILURE(errorCode)) {
uhash_close(maxExpansions);
- return NULL;
+ return nullptr;
}
return maxExpansions;
}
@@ -457,7 +457,7 @@ int32_t
CollationElementIterator::getMaxExpansion(const UHashtable *maxExpansions, int32_t order) {
if (order == 0) { return 1; }
int32_t max;
- if(maxExpansions != NULL && (max = uhash_igeti(maxExpansions, order)) != 0) {
+ if(maxExpansions != nullptr && (max = uhash_igeti(maxExpansions, order)) != 0) {
return max;
}
if ((order & 0xc0) == 0xc0) {
diff --git a/Build/source/libs/icu/icu-src/source/i18n/coll.cpp b/Build/source/libs/icu/icu-src/source/i18n/coll.cpp
index b22a9d58760..ced55c8dbf0 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/coll.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/coll.cpp
@@ -61,10 +61,10 @@
#include "uresimp.h"
#include "ucln_in.h"
-static icu::Locale* availableLocaleList = NULL;
+static icu::Locale* availableLocaleList = nullptr;
static int32_t availableLocaleListCount;
#if !UCONFIG_NO_SERVICE
-static icu::ICULocaleService* gService = NULL;
+static icu::ICULocaleService* gService = nullptr;
static icu::UInitOnce gServiceInitOnce {};
#endif
static icu::UInitOnce gAvailableLocaleListInitOnce {};
@@ -73,17 +73,17 @@ static icu::UInitOnce gAvailableLocaleListInitOnce {};
* Release all static memory held by collator.
*/
U_CDECL_BEGIN
-static UBool U_CALLCONV collator_cleanup(void) {
+static UBool U_CALLCONV collator_cleanup() {
#if !UCONFIG_NO_SERVICE
if (gService) {
delete gService;
- gService = NULL;
+ gService = nullptr;
}
gServiceInitOnce.reset();
#endif
if (availableLocaleList) {
delete []availableLocaleList;
- availableLocaleList = NULL;
+ availableLocaleList = nullptr;
}
availableLocaleListCount = 0;
gAvailableLocaleListInitOnce.reset();
@@ -108,7 +108,7 @@ CollatorFactory::~CollatorFactory() {}
//-------------------------------------------
UBool
-CollatorFactory::visible(void) const {
+CollatorFactory::visible() const {
return true;
}
@@ -137,7 +137,7 @@ ICUCollatorFactory::~ICUCollatorFactory() {}
UObject*
ICUCollatorFactory::create(const ICUServiceKey& key, const ICUService* /* service */, UErrorCode& status) const {
if (handlesKey(key, status)) {
- const LocaleKey& lkey = (const LocaleKey&)key;
+ const LocaleKey& lkey = static_cast<const LocaleKey&>(key);
Locale loc;
// make sure the requested locale is correct
// default LocaleFactory uses currentLocale since that's the one vetted by handlesKey
@@ -146,7 +146,7 @@ ICUCollatorFactory::create(const ICUServiceKey& key, const ICUService* /* servic
return Collator::makeInstance(loc, status);
}
- return NULL;
+ return nullptr;
}
// -------------------------------------
@@ -167,7 +167,8 @@ public:
}
virtual UObject* handleDefault(const ICUServiceKey& key, UnicodeString* actualID, UErrorCode& status) const override {
- LocaleKey& lkey = (LocaleKey&)key;
+ const LocaleKey* lkey = dynamic_cast<const LocaleKey*>(&key);
+ U_ASSERT(lkey != nullptr);
if (actualID) {
// Ugly Hack Alert! We return an empty actualID to signal
// to callers that this is a default object, not a "real"
@@ -175,13 +176,13 @@ public:
actualID->truncate(0);
}
Locale loc("");
- lkey.canonicalLocale(loc);
+ lkey->canonicalLocale(loc);
return Collator::makeInstance(loc, status);
}
virtual UObject* getKey(ICUServiceKey& key, UnicodeString* actualReturn, UErrorCode& status) const override {
UnicodeString ar;
- if (actualReturn == NULL) {
+ if (actualReturn == nullptr) {
actualReturn = &ar;
}
return (Collator*)ICULocaleService::getKey(key, actualReturn, status);
@@ -203,7 +204,7 @@ static void U_CALLCONV initService() {
static ICULocaleService*
-getService(void)
+getService()
{
umtx_initOnce(gServiceInitOnce, &initService);
return gService;
@@ -212,9 +213,9 @@ getService(void)
// -------------------------------------
static inline UBool
-hasService(void)
+hasService()
{
- UBool retVal = !gServiceInitOnce.isReset() && (getService() != NULL);
+ UBool retVal = !gServiceInitOnce.isReset() && (getService() != nullptr);
return retVal;
}
@@ -223,9 +224,9 @@ hasService(void)
static void U_CALLCONV
initAvailableLocaleList(UErrorCode &status) {
U_ASSERT(availableLocaleListCount == 0);
- U_ASSERT(availableLocaleList == NULL);
+ U_ASSERT(availableLocaleList == nullptr);
// for now, there is a hardcoded list, so just walk through that list and set it up.
- UResourceBundle *index = NULL;
+ UResourceBundle *index = nullptr;
StackUResourceBundle installed;
int32_t i = 0;
@@ -236,11 +237,11 @@ initAvailableLocaleList(UErrorCode &status) {
availableLocaleListCount = ures_getSize(installed.getAlias());
availableLocaleList = new Locale[availableLocaleListCount];
- if (availableLocaleList != NULL) {
+ if (availableLocaleList != nullptr) {
ures_resetIterator(installed.getAlias());
while(ures_hasNext(installed.getAlias())) {
- const char *tempKey = NULL;
- ures_getNextString(installed.getAlias(), NULL, &tempKey, &status);
+ const char *tempKey = nullptr;
+ ures_getNextString(installed.getAlias(), nullptr, &tempKey, &status);
availableLocaleList[i++] = Locale(tempKey);
}
}
@@ -434,7 +435,7 @@ Collator* U_EXPORT2 Collator::createInstance(const Locale& desiredLocale,
if (desiredLocale.isBogus()) {
// Locale constructed from malformed locale ID or language tag.
status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
Collator* coll;
@@ -446,18 +447,18 @@ Collator* U_EXPORT2 Collator::createInstance(const Locale& desiredLocale,
#endif
{
coll = makeInstance(desiredLocale, status);
- // Either returns NULL with U_FAILURE(status), or non-NULL with U_SUCCESS(status)
+ // Either returns nullptr with U_FAILURE(status), or non-nullptr with U_SUCCESS(status)
}
- // The use of *coll in setAttributesFromKeywords can cause the NULL check to be
+ // The use of *coll in setAttributesFromKeywords can cause the nullptr check to be
// optimized out of the delete even though setAttributesFromKeywords returns
// immediately if U_FAILURE(status), so we add a check here.
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
setAttributesFromKeywords(desiredLocale, *coll, status);
if (U_FAILURE(status)) {
delete coll;
- return NULL;
+ return nullptr;
}
return coll;
}
@@ -467,7 +468,7 @@ Collator* Collator::makeInstance(const Locale& desiredLocale, UErrorCode& statu
const CollationCacheEntry *entry = CollationLoader::loadTailoring(desiredLocale, status);
if (U_SUCCESS(status)) {
Collator *result = new RuleBasedCollator(entry);
- if (result != NULL) {
+ if (result != nullptr) {
// Both the unified cache's get() and the RBC constructor
// did addRef(). Undo one of them.
entry->removeRef();
@@ -475,11 +476,11 @@ Collator* Collator::makeInstance(const Locale& desiredLocale, UErrorCode& statu
}
status = U_MEMORY_ALLOCATION_ERROR;
}
- if (entry != NULL) {
+ if (entry != nullptr) {
// Undo the addRef() from the cache.get().
entry->removeRef();
}
- return NULL;
+ return nullptr;
}
Collator *
@@ -505,8 +506,8 @@ Collator::EComparisonResult Collator::compare(const UnicodeString& source,
}
// implement deprecated, previously abstract method
-Collator::EComparisonResult Collator::compare(const UChar* source, int32_t sourceLength,
- const UChar* target, int32_t targetLength)
+Collator::EComparisonResult Collator::compare(const char16_t* source, int32_t sourceLength,
+ const char16_t* target, int32_t targetLength)
const
{
UErrorCode ec = U_ZERO_ERROR;
@@ -561,7 +562,7 @@ UBool Collator::greater(const UnicodeString& source,
const Locale* U_EXPORT2 Collator::getAvailableLocales(int32_t& count)
{
UErrorCode status = U_ZERO_ERROR;
- Locale *result = NULL;
+ Locale *result = nullptr;
count = 0;
if (isAvailableLocaleListInitialized(status))
{
@@ -594,7 +595,7 @@ UnicodeString& U_EXPORT2 Collator::getDisplayName(const Locale& objectLocale,
/* This is useless information */
/*void Collator::getVersion(UVersionInfo versionInfo) const
{
- if (versionInfo!=NULL)
+ if (versionInfo!=nullptr)
uprv_memcpy(versionInfo, fVersion, U_MAX_VERSION_LENGTH);
}
*/
@@ -665,7 +666,7 @@ Collator::setLocales(const Locale& /* requestedLocale */, const Locale& /* valid
UnicodeSet *Collator::getTailoredSet(UErrorCode &status) const
{
if(U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
// everything can be changed
return new UnicodeSet(0, 0x10FFFF);
@@ -684,7 +685,7 @@ Collator::registerInstance(Collator* toAdopt, const Locale& locale, UErrorCode&
toAdopt->setLocales(locale, locale, locale);
return getService()->registerInstance(toAdopt, locale, status);
}
- return NULL;
+ return nullptr;
}
// -------------------------------------
@@ -698,7 +699,7 @@ public:
CFactory(CollatorFactory* delegate, UErrorCode& status)
: LocaleKeyFactory(delegate->visible() ? VISIBLE : INVISIBLE)
, _delegate(delegate)
- , _ids(NULL)
+ , _ids(nullptr)
{
if (U_SUCCESS(status)) {
int32_t count = 0;
@@ -709,7 +710,7 @@ public:
_ids->put(idlist[i], (void*)this, status);
if (U_FAILURE(status)) {
delete _ids;
- _ids = NULL;
+ _ids = nullptr;
return;
}
}
@@ -729,7 +730,7 @@ protected:
if (U_SUCCESS(status)) {
return _ids;
}
- return NULL;
+ return nullptr;
}
virtual UnicodeString&
@@ -746,12 +747,13 @@ UObject*
CFactory::create(const ICUServiceKey& key, const ICUService* /* service */, UErrorCode& status) const
{
if (handlesKey(key, status)) {
- const LocaleKey& lkey = (const LocaleKey&)key;
+ const LocaleKey* lkey = dynamic_cast<const LocaleKey*>(&key);
+ U_ASSERT(lkey != nullptr);
Locale validLoc;
- lkey.currentLocale(validLoc);
+ lkey->currentLocale(validLoc);
return _delegate->createCollator(validLoc);
}
- return NULL;
+ return nullptr;
}
UnicodeString&
@@ -760,7 +762,7 @@ CFactory::getDisplayName(const UnicodeString& id, const Locale& locale, UnicodeS
if ((_coverage & 0x1) == 0) {
UErrorCode status = U_ZERO_ERROR;
const Hashtable* ids = getSupportedIDs(status);
- if (ids && (ids->get(id) != NULL)) {
+ if (ids && (ids->get(id) != nullptr)) {
Locale loc;
LocaleUtility::initLocaleFromName(id, loc);
return _delegate->getDisplayName(loc, locale, result);
@@ -780,7 +782,7 @@ Collator::registerFactory(CollatorFactory* toAdopt, UErrorCode& status)
}
status = U_MEMORY_ALLOCATION_ERROR;
}
- return NULL;
+ return nullptr;
}
// -------------------------------------
@@ -802,8 +804,8 @@ class CollationLocaleListEnumeration : public StringEnumeration {
private:
int32_t index;
public:
- static UClassID U_EXPORT2 getStaticClassID(void);
- virtual UClassID getDynamicClassID(void) const override;
+ static UClassID U_EXPORT2 getStaticClassID();
+ virtual UClassID getDynamicClassID() const override;
public:
CollationLocaleListEnumeration()
: index(0)
@@ -831,14 +833,14 @@ public:
const char* result;
if(index < availableLocaleListCount) {
result = availableLocaleList[index++].getName();
- if(resultLength != NULL) {
+ if(resultLength != nullptr) {
*resultLength = (int32_t)uprv_strlen(result);
}
} else {
- if(resultLength != NULL) {
+ if(resultLength != nullptr) {
*resultLength = 0;
}
- result = NULL;
+ result = nullptr;
}
return result;
}
@@ -862,7 +864,7 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(CollationLocaleListEnumeration)
// -------------------------------------
StringEnumeration* U_EXPORT2
-Collator::getAvailableLocales(void)
+Collator::getAvailableLocales()
{
#if !UCONFIG_NO_SERVICE
if (hasService()) {
@@ -873,7 +875,7 @@ Collator::getAvailableLocales(void)
if (isAvailableLocaleListInitialized(status)) {
return new CollationLocaleListEnumeration();
}
- return NULL;
+ return nullptr;
}
StringEnumeration* U_EXPORT2
@@ -911,7 +913,7 @@ Collator::getFunctionalEquivalent(const char* keyword, const Locale& locale,
}
Collator::ECollationStrength
-Collator::getStrength(void) const {
+Collator::getStrength() const {
UErrorCode intStatus = U_ZERO_ERROR;
return (ECollationStrength)getAttribute(UCOL_STRENGTH, intStatus);
}
@@ -961,7 +963,7 @@ Collator::getEquivalentReorderCodes(int32_t reorderCode,
int32_t *dest, int32_t capacity,
UErrorCode &errorCode) {
if(U_FAILURE(errorCode)) { return 0; }
- if(capacity < 0 || (dest == NULL && capacity > 0)) {
+ if(capacity < 0 || (dest == nullptr && capacity > 0)) {
errorCode = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -986,7 +988,7 @@ Collator::internalCompareUTF8(const char *left, int32_t leftLength,
const char *right, int32_t rightLength,
UErrorCode &errorCode) const {
if(U_FAILURE(errorCode)) { return UCOL_EQUAL; }
- if((left == NULL && leftLength != 0) || (right == NULL && rightLength != 0)) {
+ if((left == nullptr && leftLength != 0) || (right == nullptr && rightLength != 0)) {
errorCode = U_ILLEGAL_ARGUMENT_ERROR;
return UCOL_EQUAL;
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/collationbuilder.cpp b/Build/source/libs/icu/icu-src/source/i18n/collationbuilder.cpp
index fbf09a313d6..3da74cc4833 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/collationbuilder.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/collationbuilder.cpp
@@ -83,72 +83,72 @@ BundleImporter::getRules(
// most code will not have a static dependency on the builder code.
RuleBasedCollator::RuleBasedCollator()
- : data(NULL),
- settings(NULL),
- tailoring(NULL),
- cacheEntry(NULL),
+ : data(nullptr),
+ settings(nullptr),
+ tailoring(nullptr),
+ cacheEntry(nullptr),
validLocale(""),
explicitlySetAttributes(0),
actualLocaleIsSameAsValid(false) {
}
RuleBasedCollator::RuleBasedCollator(const UnicodeString &rules, UErrorCode &errorCode)
- : data(NULL),
- settings(NULL),
- tailoring(NULL),
- cacheEntry(NULL),
+ : data(nullptr),
+ settings(nullptr),
+ tailoring(nullptr),
+ cacheEntry(nullptr),
validLocale(""),
explicitlySetAttributes(0),
actualLocaleIsSameAsValid(false) {
- internalBuildTailoring(rules, UCOL_DEFAULT, UCOL_DEFAULT, NULL, NULL, errorCode);
+ internalBuildTailoring(rules, UCOL_DEFAULT, UCOL_DEFAULT, nullptr, nullptr, errorCode);
}
RuleBasedCollator::RuleBasedCollator(const UnicodeString &rules, ECollationStrength strength,
UErrorCode &errorCode)
- : data(NULL),
- settings(NULL),
- tailoring(NULL),
- cacheEntry(NULL),
+ : data(nullptr),
+ settings(nullptr),
+ tailoring(nullptr),
+ cacheEntry(nullptr),
validLocale(""),
explicitlySetAttributes(0),
actualLocaleIsSameAsValid(false) {
- internalBuildTailoring(rules, strength, UCOL_DEFAULT, NULL, NULL, errorCode);
+ internalBuildTailoring(rules, strength, UCOL_DEFAULT, nullptr, nullptr, errorCode);
}
RuleBasedCollator::RuleBasedCollator(const UnicodeString &rules,
UColAttributeValue decompositionMode,
UErrorCode &errorCode)
- : data(NULL),
- settings(NULL),
- tailoring(NULL),
- cacheEntry(NULL),
+ : data(nullptr),
+ settings(nullptr),
+ tailoring(nullptr),
+ cacheEntry(nullptr),
validLocale(""),
explicitlySetAttributes(0),
actualLocaleIsSameAsValid(false) {
- internalBuildTailoring(rules, UCOL_DEFAULT, decompositionMode, NULL, NULL, errorCode);
+ internalBuildTailoring(rules, UCOL_DEFAULT, decompositionMode, nullptr, nullptr, errorCode);
}
RuleBasedCollator::RuleBasedCollator(const UnicodeString &rules,
ECollationStrength strength,
UColAttributeValue decompositionMode,
UErrorCode &errorCode)
- : data(NULL),
- settings(NULL),
- tailoring(NULL),
- cacheEntry(NULL),
+ : data(nullptr),
+ settings(nullptr),
+ tailoring(nullptr),
+ cacheEntry(nullptr),
validLocale(""),
explicitlySetAttributes(0),
actualLocaleIsSameAsValid(false) {
- internalBuildTailoring(rules, strength, decompositionMode, NULL, NULL, errorCode);
+ internalBuildTailoring(rules, strength, decompositionMode, nullptr, nullptr, errorCode);
}
RuleBasedCollator::RuleBasedCollator(const UnicodeString &rules,
UParseError &parseError, UnicodeString &reason,
UErrorCode &errorCode)
- : data(NULL),
- settings(NULL),
- tailoring(NULL),
- cacheEntry(NULL),
+ : data(nullptr),
+ settings(nullptr),
+ tailoring(nullptr),
+ cacheEntry(nullptr),
validLocale(""),
explicitlySetAttributes(0),
actualLocaleIsSameAsValid(false) {
@@ -163,7 +163,7 @@ RuleBasedCollator::internalBuildTailoring(const UnicodeString &rules,
UErrorCode &errorCode) {
const CollationTailoring *base = CollationRoot::getRoot(errorCode);
if(U_FAILURE(errorCode)) { return; }
- if(outReason != NULL) { outReason->remove(); }
+ if(outReason != nullptr) { outReason->remove(); }
CollationBuilder builder(base, errorCode);
UVersionInfo noVersion = { 0, 0, 0, 0 };
BundleImporter importer;
@@ -172,7 +172,7 @@ RuleBasedCollator::internalBuildTailoring(const UnicodeString &rules,
outParseError, errorCode));
if(U_FAILURE(errorCode)) {
const char *reason = builder.getErrorReason();
- if(reason != NULL && outReason != NULL) {
+ if(reason != nullptr && outReason != nullptr) {
*outReason = UnicodeString(reason, -1, US_INV);
}
return;
@@ -201,7 +201,7 @@ CollationBuilder::CollationBuilder(const CollationTailoring *b, UBool icu4xMode,
variableTop(0),
dataBuilder(new CollationDataBuilder(icu4xMode, errorCode)), fastLatinEnabled(true),
icu4xMode(icu4xMode),
- errorReason(NULL),
+ errorReason(nullptr),
cesLength(0),
rootPrimaryIndexes(errorCode), nodes(errorCode) {
nfcImpl.ensureCanonIterData(errorCode);
@@ -209,7 +209,7 @@ CollationBuilder::CollationBuilder(const CollationTailoring *b, UBool icu4xMode,
errorReason = "CollationBuilder fields initialization failed";
return;
}
- if(dataBuilder == NULL) {
+ if(dataBuilder == nullptr) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -233,19 +233,19 @@ CollationBuilder::parseAndBuild(const UnicodeString &ruleString,
CollationRuleParser::Importer *importer,
UParseError *outParseError,
UErrorCode &errorCode) {
- if(U_FAILURE(errorCode)) { return NULL; }
- if(baseData->rootElements == NULL) {
+ if(U_FAILURE(errorCode)) { return nullptr; }
+ if(baseData->rootElements == nullptr) {
errorCode = U_MISSING_RESOURCE_ERROR;
errorReason = "missing root elements data, tailoring not supported";
- return NULL;
+ return nullptr;
}
LocalPointer<CollationTailoring> tailoring(new CollationTailoring(base->settings));
if(tailoring.isNull() || tailoring->isBogus()) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
CollationRuleParser parser(baseData, errorCode);
- if(U_FAILURE(errorCode)) { return NULL; }
+ if(U_FAILURE(errorCode)) { return nullptr; }
// Note: This always bases &[last variable] and &[first regular]
// on the root collator's maxVariable/variableTop.
// If we wanted this to change after [maxVariable x], then we would keep
@@ -257,7 +257,7 @@ CollationBuilder::parseAndBuild(const UnicodeString &ruleString,
CollationSettings &ownedSettings = *SharedObject::copyOnWrite(tailoring->settings);
parser.parse(ruleString, ownedSettings, outParseError, errorCode);
errorReason = parser.getErrorReason();
- if(U_FAILURE(errorCode)) { return NULL; }
+ if(U_FAILURE(errorCode)) { return nullptr; }
if(dataBuilder->hasMappings()) {
makeTailoredCEs(errorCode);
if (!icu4xMode) {
@@ -274,15 +274,15 @@ CollationBuilder::parseAndBuild(const UnicodeString &ruleString,
dataBuilder->optimize(optimizeSet, errorCode);
}
tailoring->ensureOwnedData(errorCode);
- if(U_FAILURE(errorCode)) { return NULL; }
+ if(U_FAILURE(errorCode)) { return nullptr; }
if(fastLatinEnabled) { dataBuilder->enableFastLatin(); }
dataBuilder->build(*tailoring->ownedData, errorCode);
tailoring->builder = dataBuilder;
- dataBuilder = NULL;
+ dataBuilder = nullptr;
} else {
tailoring->data = baseData;
}
- if(U_FAILURE(errorCode)) { return NULL; }
+ if(U_FAILURE(errorCode)) { return nullptr; }
ownedSettings.fastLatinOptions = CollationFastLatin::getOptions(
tailoring->data, ownedSettings,
ownedSettings.fastLatinPrimaries, UPRV_LENGTHOF(ownedSettings.fastLatinPrimaries));
@@ -669,7 +669,7 @@ CollationBuilder::addRelation(int32_t strength, const UnicodeString &prefix,
// It does not work with certain types of contextual mappings.
int32_t nfdLength = nfdString.length();
if(nfdLength >= 2) {
- UChar c = nfdString.charAt(0);
+ char16_t c = nfdString.charAt(0);
if(Hangul::isJamoL(c) || Hangul::isJamoV(c)) {
// While handling a Hangul syllable, contractions starting with Jamo L or V
// would not see the following Jamo of that syllable.
@@ -1030,7 +1030,7 @@ CollationBuilder::setCaseBits(const UnicodeString &nfdString,
int64_t cases = 0;
if(numTailoredPrimaries > 0) {
- const UChar *s = nfdString.getBuffer();
+ const char16_t *s = nfdString.getBuffer();
UTF16CollationIterator baseCEs(baseData, false, s, s, s + nfdString.length());
int32_t baseCEsLength = baseCEs.fetchCEs(errorCode) - 1;
if(U_FAILURE(errorCode)) {
@@ -1113,12 +1113,23 @@ CollationBuilder::addWithClosure(const UnicodeString &nfdPrefix, const UnicodeSt
return ce32;
}
+// ICU-22517
+// This constant defines a limit for the addOnlyClosure to return
+// error, to avoid taking a long time for canonical closure expansion.
+// Please let us know if you have a reasonable use case that needed
+// for a practical Collation rule that needs to increase this limit.
+// This value is needed for compiling a rule with eight Hangul syllables such as
+// "&a=bì«Šì«Šì«Šì«Šì«Šì«Šì«Šì«Š" without error, which should be more than realistic
+// usage.
+static constexpr int32_t kClosureLoopLimit = 6560;
+
uint32_t
CollationBuilder::addOnlyClosure(const UnicodeString &nfdPrefix, const UnicodeString &nfdString,
const int64_t newCEs[], int32_t newCEsLength, uint32_t ce32,
UErrorCode &errorCode) {
if(U_FAILURE(errorCode)) { return ce32; }
+ int32_t loop = 0;
// Map from canonically equivalent input to the CEs. (But not from the all-NFD input.)
if(nfdPrefix.isEmpty()) {
CanonicalIterator stringIter(nfdString, errorCode);
@@ -1128,6 +1139,11 @@ CollationBuilder::addOnlyClosure(const UnicodeString &nfdPrefix, const UnicodeSt
UnicodeString str = stringIter.next();
if(str.isBogus()) { break; }
if(ignoreString(str, errorCode) || str == nfdString) { continue; }
+ if (loop++ > kClosureLoopLimit) {
+ // To avoid hang as in ICU-22517, return with error.
+ errorCode = U_INPUT_TOO_LONG_ERROR;
+ return ce32;
+ }
ce32 = addIfDifferent(prefix, str, newCEs, newCEsLength, ce32, errorCode);
if(U_FAILURE(errorCode)) { return ce32; }
}
@@ -1144,6 +1160,11 @@ CollationBuilder::addOnlyClosure(const UnicodeString &nfdPrefix, const UnicodeSt
UnicodeString str = stringIter.next();
if(str.isBogus()) { break; }
if(ignoreString(str, errorCode) || (samePrefix && str == nfdString)) { continue; }
+ if (loop++ > kClosureLoopLimit) {
+ // To avoid hang as in ICU-22517, return with error.
+ errorCode = U_INPUT_TOO_LONG_ERROR;
+ return ce32;
+ }
ce32 = addIfDifferent(prefix, str, newCEs, newCEsLength, ce32, errorCode);
if(U_FAILURE(errorCode)) { return ce32; }
}
@@ -1641,24 +1662,24 @@ U_NAMESPACE_END
U_NAMESPACE_USE
U_CAPI UCollator * U_EXPORT2
-ucol_openRules(const UChar *rules, int32_t rulesLength,
+ucol_openRules(const char16_t *rules, int32_t rulesLength,
UColAttributeValue normalizationMode, UCollationStrength strength,
UParseError *parseError, UErrorCode *pErrorCode) {
- if(U_FAILURE(*pErrorCode)) { return NULL; }
- if(rules == NULL && rulesLength != 0) {
+ if(U_FAILURE(*pErrorCode)) { return nullptr; }
+ if(rules == nullptr && rulesLength != 0) {
*pErrorCode = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
RuleBasedCollator *coll = new RuleBasedCollator();
- if(coll == NULL) {
+ if(coll == nullptr) {
*pErrorCode = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
UnicodeString r((UBool)(rulesLength < 0), rules, rulesLength);
- coll->internalBuildTailoring(r, strength, normalizationMode, parseError, NULL, *pErrorCode);
+ coll->internalBuildTailoring(r, strength, normalizationMode, parseError, nullptr, *pErrorCode);
if(U_FAILURE(*pErrorCode)) {
delete coll;
- return NULL;
+ return nullptr;
}
return coll->toUCollator();
}
@@ -1676,13 +1697,13 @@ ucol_getUnsafeSet( const UCollator *coll,
USet *unsafe,
UErrorCode *status)
{
- UChar buffer[internalBufferSize];
+ char16_t buffer[internalBufferSize];
int32_t len = 0;
uset_clear(unsafe);
// cccpattern = "[[:^tccc=0:][:^lccc=0:]]", unfortunately variant
- static const UChar cccpattern[25] = { 0x5b, 0x5b, 0x3a, 0x5e, 0x74, 0x63, 0x63, 0x63, 0x3d, 0x30, 0x3a, 0x5d,
+ static const char16_t cccpattern[25] = { 0x5b, 0x5b, 0x3a, 0x5e, 0x74, 0x63, 0x63, 0x63, 0x3d, 0x30, 0x3a, 0x5d,
0x5b, 0x3a, 0x5e, 0x6c, 0x63, 0x63, 0x63, 0x3d, 0x30, 0x3a, 0x5d, 0x5d, 0x00 };
// add chars that fail the fcd check
@@ -1696,14 +1717,14 @@ ucol_getUnsafeSet( const UCollator *coll,
USet *contractions = uset_open(0,0);
int32_t i = 0, j = 0;
- ucol_getContractionsAndExpansions(coll, contractions, NULL, false, status);
+ ucol_getContractionsAndExpansions(coll, contractions, nullptr, false, status);
int32_t contsSize = uset_size(contractions);
UChar32 c = 0;
// Contraction set consists only of strings
// to get unsafe code points, we need to
// break the strings apart and add them to the unsafe set
for(i = 0; i < contsSize; i++) {
- len = uset_getItem(contractions, i, NULL, NULL, buffer, internalBufferSize, status);
+ len = uset_getItem(contractions, i, nullptr, nullptr, buffer, internalBufferSize, status);
if(len > 0) {
j = 0;
while(j < len) {
diff --git a/Build/source/libs/icu/icu-src/source/i18n/collationdata.h b/Build/source/libs/icu/icu-src/source/i18n/collationdata.h
index 71bf17abd0d..d4f66828fbc 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/collationdata.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/collationdata.h
@@ -49,17 +49,17 @@ struct U_I18N_API CollationData : public UMemory {
static constexpr int32_t MAX_NUM_SCRIPT_RANGES = 256;
CollationData(const Normalizer2Impl &nfc)
- : trie(NULL),
- ce32s(NULL), ces(NULL), contexts(NULL), base(NULL),
- jamoCE32s(NULL),
+ : trie(nullptr),
+ ce32s(nullptr), ces(nullptr), contexts(nullptr), base(nullptr),
+ jamoCE32s(nullptr),
nfcImpl(nfc),
numericPrimary(0x12000000),
ce32sLength(0), cesLength(0), contextsLength(0),
- compressibleBytes(NULL),
- unsafeBackwardSet(NULL),
- fastLatinTable(NULL), fastLatinTableLength(0),
- numScripts(0), scriptsIndex(NULL), scriptStarts(NULL), scriptStartsLength(0),
- rootElements(NULL), rootElementsLength(0) {}
+ compressibleBytes(nullptr),
+ unsafeBackwardSet(nullptr),
+ fastLatinTable(nullptr), fastLatinTableLength(0),
+ numScripts(0), scriptsIndex(nullptr), scriptStarts(nullptr), scriptStartsLength(0),
+ rootElements(nullptr), rootElementsLength(0) {}
uint32_t getCE32(UChar32 c) const {
return UTRIE2_GET32(trie, c);
@@ -90,7 +90,7 @@ struct U_I18N_API CollationData : public UMemory {
* Returns the CE32 from two contexts words.
* Access to the defaultCE32 for contraction and prefix matching.
*/
- static uint32_t readCE32(const UChar *p) {
+ static uint32_t readCE32(const char16_t *p) {
return ((uint32_t)p[0] << 16) | p[1];
}
@@ -178,8 +178,8 @@ struct U_I18N_API CollationData : public UMemory {
/** Array of CE values for expansions and OFFSET_TAG. */
const int64_t *ces;
/** Array of prefix and contraction-suffix matching data. */
- const UChar *contexts;
- /** Base collation data, or NULL if this data itself is a base. */
+ const char16_t *contexts;
+ /** Base collation data, or nullptr if this data itself is a base. */
const CollationData *base;
/**
* Simple array of JAMO_CE32S_LENGTH=19+21+27 CE32s, one per canonical Jamo L/V/T.
@@ -238,7 +238,7 @@ struct U_I18N_API CollationData : public UMemory {
/**
* Collation elements in the root collator.
* Used by the CollationRootElements class. The data structure is described there.
- * NULL in a tailoring.
+ * nullptr in a tailoring.
*/
const uint32_t *rootElements;
int32_t rootElementsLength;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/collationdatabuilder.cpp b/Build/source/libs/icu/icu-src/source/i18n/collationdatabuilder.cpp
index e7c3da1ea5e..7c6f1b881e6 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/collationdatabuilder.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/collationdatabuilder.cpp
@@ -166,7 +166,7 @@ protected:
DataBuilderCollationIterator::DataBuilderCollationIterator(CollationDataBuilder &b)
: CollationIterator(&builderData, /*numeric=*/ false),
builder(b), builderData(b.nfcImpl),
- s(NULL), pos(0) {
+ s(nullptr), pos(0) {
builderData.base = builder.base;
// Set all of the jamoCE32s[] to indirection CE32s.
for(int32_t j = 0; j < CollationData::JAMO_CE32S_LENGTH; ++j) { // Count across Jamo types.
@@ -298,13 +298,13 @@ DataBuilderCollationIterator::getCE32FromBuilderData(uint32_t ce32, UErrorCode &
CollationDataBuilder::CollationDataBuilder(UBool icu4xMode, UErrorCode &errorCode)
: nfcImpl(*Normalizer2Factory::getNFCImpl(errorCode)),
- base(NULL), baseSettings(NULL),
- trie(NULL),
+ base(nullptr), baseSettings(nullptr),
+ trie(nullptr),
ce32s(errorCode), ce64s(errorCode), conditionalCE32s(errorCode),
modified(false),
icu4xMode(icu4xMode),
- fastLatinEnabled(false), fastLatinBuilder(NULL),
- collIter(NULL) {
+ fastLatinEnabled(false), fastLatinBuilder(nullptr),
+ collIter(nullptr) {
// Reserve the first CE32 for U+0000.
if (!icu4xMode) {
ce32s.addElement(0, errorCode);
@@ -321,11 +321,11 @@ CollationDataBuilder::~CollationDataBuilder() {
void
CollationDataBuilder::initForTailoring(const CollationData *b, UErrorCode &errorCode) {
if(U_FAILURE(errorCode)) { return; }
- if(trie != NULL) {
+ if(trie != nullptr) {
errorCode = U_INVALID_STATE_ERROR;
return;
}
- if(b == NULL) {
+ if(b == nullptr) {
errorCode = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
@@ -566,7 +566,7 @@ CollationDataBuilder::addCE32(const UnicodeString &prefix, const UnicodeString &
errorCode = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
- if(trie == NULL || utrie2_isFrozen(trie)) {
+ if(trie == nullptr || utrie2_isFrozen(trie)) {
errorCode = U_INVALID_STATE_ERROR;
return;
}
@@ -657,7 +657,7 @@ CollationDataBuilder::addCE32(const UnicodeString &prefix, const UnicodeString &
if (s.length() > cLength) {
// Check that there's no modern Hangul in contractions.
for (int32_t i = 0; i < s.length(); ++i) {
- UChar c = s.charAt(i);
+ char16_t c = s.charAt(i);
if ((c >= 0x1100 && c < 0x1100 + 19) || (c >= 0x1161 && c < 0x1161 + 21) || (c >= 0x11A7 && c < 0x11A7 + 28) || (c >= 0xAC00 && c < 0xD7A4)) {
errorCode = U_UNSUPPORTED_ERROR;
return;
@@ -692,7 +692,7 @@ CollationDataBuilder::addCE32(const UnicodeString &prefix, const UnicodeString &
if(!isBuilderContextCE32(oldCE32)) {
// Replace the simple oldCE32 with a builder context CE32
// pointing to a new ConditionalCE32 list head.
- int32_t index = addConditionalCE32(UnicodeString((UChar)0), oldCE32, errorCode);
+ int32_t index = addConditionalCE32(UnicodeString((char16_t)0), oldCE32, errorCode);
if(U_FAILURE(errorCode)) { return; }
uint32_t contextCE32 = makeBuilderContextCE32(index);
utrie2_set32(trie, c, contextCE32, &errorCode);
@@ -703,7 +703,7 @@ CollationDataBuilder::addCE32(const UnicodeString &prefix, const UnicodeString &
cond->builtCE32 = Collation::NO_CE32;
}
UnicodeString suffix(s, cLength);
- UnicodeString context((UChar)prefix.length());
+ UnicodeString context((char16_t)prefix.length());
context.append(prefix).append(suffix);
unsafeBackwardSet.addAll(suffix);
for(;;) {
@@ -777,7 +777,7 @@ CollationDataBuilder::encodeCEs(const int64_t ces[], int32_t cesLength,
errorCode = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
- if(trie == NULL || utrie2_isFrozen(trie)) {
+ if(trie == nullptr || utrie2_isFrozen(trie)) {
errorCode = U_INVALID_STATE_ERROR;
return 0;
}
@@ -914,13 +914,13 @@ CollationDataBuilder::copyFromBaseCE32(UChar32 c, uint32_t ce32, UBool withConte
case Collation::PREFIX_TAG: {
// Flatten prefixes and nested suffixes (contractions)
// into a linear list of ConditionalCE32.
- const UChar *p = base->contexts + Collation::indexFromCE32(ce32);
+ const char16_t *p = base->contexts + Collation::indexFromCE32(ce32);
ce32 = CollationData::readCE32(p); // Default if no prefix match.
if(!withContext) {
return copyFromBaseCE32(c, ce32, false, errorCode);
}
ConditionalCE32 head;
- UnicodeString context((UChar)0);
+ UnicodeString context((char16_t)0);
int32_t index;
if(Collation::isContractionCE32(ce32)) {
index = copyContractionsFromBaseCE32(context, c, ce32, &head, errorCode);
@@ -934,7 +934,7 @@ CollationDataBuilder::copyFromBaseCE32(UChar32 c, uint32_t ce32, UBool withConte
while(prefixes.next(errorCode)) {
context = prefixes.getString();
context.reverse();
- context.insert(0, (UChar)context.length());
+ context.insert(0, (char16_t)context.length());
ce32 = (uint32_t)prefixes.getValue();
if(Collation::isContractionCE32(ce32)) {
index = copyContractionsFromBaseCE32(context, c, ce32, cond, errorCode);
@@ -951,12 +951,12 @@ CollationDataBuilder::copyFromBaseCE32(UChar32 c, uint32_t ce32, UBool withConte
}
case Collation::CONTRACTION_TAG: {
if(!withContext) {
- const UChar *p = base->contexts + Collation::indexFromCE32(ce32);
+ const char16_t *p = base->contexts + Collation::indexFromCE32(ce32);
ce32 = CollationData::readCE32(p); // Default if no suffix match.
return copyFromBaseCE32(c, ce32, false, errorCode);
}
ConditionalCE32 head;
- UnicodeString context((UChar)0);
+ UnicodeString context((char16_t)0);
copyContractionsFromBaseCE32(context, c, ce32, &head, errorCode);
ce32 = makeBuilderContextCE32(head.next);
contextChars.add(c);
@@ -981,7 +981,7 @@ int32_t
CollationDataBuilder::copyContractionsFromBaseCE32(UnicodeString &context, UChar32 c, uint32_t ce32,
ConditionalCE32 *cond, UErrorCode &errorCode) {
if(U_FAILURE(errorCode)) { return 0; }
- const UChar *p = base->contexts + Collation::indexFromCE32(ce32);
+ const char16_t *p = base->contexts + Collation::indexFromCE32(ce32);
int32_t index;
if((ce32 & Collation::CONTRACT_SINGLE_CP_NO_MATCH) != 0) {
// No match on the single code point.
@@ -1148,12 +1148,12 @@ void
CollationDataBuilder::copyFrom(const CollationDataBuilder &src, const CEModifier &modifier,
UErrorCode &errorCode) {
if(U_FAILURE(errorCode)) { return; }
- if(trie == NULL || utrie2_isFrozen(trie)) {
+ if(trie == nullptr || utrie2_isFrozen(trie)) {
errorCode = U_INVALID_STATE_ERROR;
return;
}
CopyHelper helper(src, *this, modifier, errorCode);
- utrie2_enum(src.trie, NULL, enumRangeForCopy, &helper);
+ utrie2_enum(src.trie, nullptr, enumRangeForCopy, &helper);
errorCode = helper.errorCode;
// Update the contextChars and the unsafeBackwardSet while copying,
// in case a character had conditional mappings in the source builder
@@ -1205,7 +1205,7 @@ CollationDataBuilder::suppressContractions(const UnicodeSet &set, UErrorCode &er
UBool
CollationDataBuilder::getJamoCE32s(uint32_t jamoCE32s[], UErrorCode &errorCode) {
if(U_FAILURE(errorCode)) { return false; }
- UBool anyJamoAssigned = base == NULL; // always set jamoCE32s in the base data
+ UBool anyJamoAssigned = base == nullptr; // always set jamoCE32s in the base data
UBool needToCopyFromBase = false;
for(int32_t j = 0; j < CollationData::JAMO_CE32S_LENGTH; ++j) { // Count across Jamo types.
UChar32 jamo = jamoCpFromIndex(j);
@@ -1318,9 +1318,9 @@ U_CDECL_END
void
CollationDataBuilder::setLeadSurrogates(UErrorCode &errorCode) {
- for(UChar lead = 0xd800; lead < 0xdc00; ++lead) {
+ for(char16_t lead = 0xd800; lead < 0xdc00; ++lead) {
int32_t value = -1;
- utrie2_enumForLeadSurrogate(trie, lead, NULL, enumRangeLeadValue, &value);
+ utrie2_enumForLeadSurrogate(trie, lead, nullptr, enumRangeLeadValue, &value);
utrie2_set32ForLeadSurrogateCodeUnit(
trie, lead,
Collation::makeCE32FromTagAndIndex(Collation::LEAD_SURROGATE_TAG, 0) | (uint32_t)value,
@@ -1331,7 +1331,7 @@ CollationDataBuilder::setLeadSurrogates(UErrorCode &errorCode) {
void
CollationDataBuilder::build(CollationData &data, UErrorCode &errorCode) {
buildMappings(data, errorCode);
- if(base != NULL) {
+ if(base != nullptr) {
data.numericPrimary = base->numericPrimary;
data.compressibleBytes = base->compressibleBytes;
data.numScripts = base->numScripts;
@@ -1345,7 +1345,7 @@ CollationDataBuilder::build(CollationData &data, UErrorCode &errorCode) {
void
CollationDataBuilder::buildMappings(CollationData &data, UErrorCode &errorCode) {
if(U_FAILURE(errorCode)) { return; }
- if(trie == NULL || utrie2_isFrozen(trie)) {
+ if(trie == nullptr || utrie2_isFrozen(trie)) {
errorCode = U_INVALID_STATE_ERROR;
return;
}
@@ -1411,7 +1411,7 @@ CollationDataBuilder::buildMappings(CollationData &data, UErrorCode &errorCode)
// Mark each lead surrogate as "unsafe"
// if any of its 1024 associated supplementary code points is "unsafe".
UChar32 c = 0x10000;
- for(UChar lead = 0xd800; lead < 0xdc00; ++lead, c += 0x400) {
+ for(char16_t lead = 0xd800; lead < 0xdc00; ++lead, c += 0x400) {
if(unsafeBackwardSet.containsSome(c, c + 0x3ff)) {
unsafeBackwardSet.add(lead);
}
@@ -1612,7 +1612,7 @@ int32_t
CollationDataBuilder::addContextTrie(uint32_t defaultCE32, UCharsTrieBuilder &trieBuilder,
UErrorCode &errorCode) {
UnicodeString context;
- context.append((UChar)(defaultCE32 >> 16)).append((UChar)defaultCE32);
+ context.append((char16_t)(defaultCE32 >> 16)).append((char16_t)defaultCE32);
UnicodeString trieString;
context.append(trieBuilder.buildUnicodeString(USTRINGTRIE_BUILD_SMALL, trieString, errorCode));
if(U_FAILURE(errorCode)) { return -1; }
@@ -1630,25 +1630,25 @@ CollationDataBuilder::buildFastLatinTable(CollationData &data, UErrorCode &error
delete fastLatinBuilder;
fastLatinBuilder = new CollationFastLatinBuilder(errorCode);
- if(fastLatinBuilder == NULL) {
+ if(fastLatinBuilder == nullptr) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
return;
}
if(fastLatinBuilder->forData(data, errorCode)) {
const uint16_t *table = fastLatinBuilder->getTable();
int32_t length = fastLatinBuilder->lengthOfTable();
- if(base != NULL && length == base->fastLatinTableLength &&
+ if(base != nullptr && length == base->fastLatinTableLength &&
uprv_memcmp(table, base->fastLatinTable, length * 2) == 0) {
// Same fast Latin table as in the base, use that one instead.
delete fastLatinBuilder;
- fastLatinBuilder = NULL;
+ fastLatinBuilder = nullptr;
table = base->fastLatinTable;
}
data.fastLatinTable = table;
data.fastLatinTableLength = length;
} else {
delete fastLatinBuilder;
- fastLatinBuilder = NULL;
+ fastLatinBuilder = nullptr;
}
}
@@ -1671,9 +1671,9 @@ CollationDataBuilder::getCEs(const UnicodeString &prefix, const UnicodeString &s
int32_t
CollationDataBuilder::getCEs(const UnicodeString &s, int32_t start,
int64_t ces[], int32_t cesLength) {
- if(collIter == NULL) {
+ if(collIter == nullptr) {
collIter = new DataBuilderCollationIterator(*this);
- if(collIter == NULL) { return 0; }
+ if(collIter == nullptr) { return 0; }
}
return collIter->fetchCEs(s, start, ces, cesLength);
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/collationdatareader.cpp b/Build/source/libs/icu/icu-src/source/i18n/collationdatareader.cpp
index a96982cd946..1884208eaa4 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/collationdatareader.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/collationdatareader.cpp
@@ -47,14 +47,14 @@ void
CollationDataReader::read(const CollationTailoring *base, const uint8_t *inBytes, int32_t inLength,
CollationTailoring &tailoring, UErrorCode &errorCode) {
if(U_FAILURE(errorCode)) { return; }
- if(base != NULL) {
- if(inBytes == NULL || (0 <= inLength && inLength < 24)) {
+ if(base != nullptr) {
+ if(inBytes == nullptr || (0 <= inLength && inLength < 24)) {
errorCode = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
const DataHeader *header = reinterpret_cast<const DataHeader *>(inBytes);
if(!(header->dataHeader.magic1 == 0xda && header->dataHeader.magic2 == 0x27 &&
- isAcceptable(tailoring.version, NULL, NULL, &header->info))) {
+ isAcceptable(tailoring.version, nullptr, nullptr, &header->info))) {
errorCode = U_INVALID_FORMAT_ERROR;
return;
}
@@ -69,7 +69,7 @@ CollationDataReader::read(const CollationTailoring *base, const uint8_t *inBytes
}
}
- if(inBytes == NULL || (0 <= inLength && inLength < 8)) {
+ if(inBytes == nullptr || (0 <= inLength && inLength < 8)) {
errorCode = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
@@ -81,7 +81,7 @@ CollationDataReader::read(const CollationTailoring *base, const uint8_t *inBytes
}
// Assume that the tailoring data is in initial state,
- // with NULL pointers and 0 lengths.
+ // with nullptr pointers and 0 lengths.
// Set pointers to non-empty data parts.
// Do this in order of their byte offsets. (Should help porting to Java.)
@@ -102,16 +102,16 @@ CollationDataReader::read(const CollationTailoring *base, const uint8_t *inBytes
return;
}
- const CollationData *baseData = base == NULL ? NULL : base->data;
- const int32_t *reorderCodes = NULL;
+ const CollationData *baseData = base == nullptr ? nullptr : base->data;
+ const int32_t *reorderCodes = nullptr;
int32_t reorderCodesLength = 0;
- const uint32_t *reorderRanges = NULL;
+ const uint32_t *reorderRanges = nullptr;
int32_t reorderRangesLength = 0;
index = IX_REORDER_CODES_OFFSET;
offset = getIndex(inIndexes, indexesLength, index);
length = getIndex(inIndexes, indexesLength, index + 1) - offset;
if(length >= 4) {
- if(baseData == NULL) {
+ if(baseData == nullptr) {
// We assume for collation settings that
// the base data does not have a reordering.
errorCode = U_INVALID_FORMAT_ERROR;
@@ -138,7 +138,7 @@ CollationDataReader::read(const CollationTailoring *base, const uint8_t *inBytes
// There should be a reorder table only if there are reorder codes.
// However, when there are reorder codes the reorder table may be omitted to reduce
// the data size.
- const uint8_t *reorderTable = NULL;
+ const uint8_t *reorderTable = nullptr;
index = IX_REORDER_TABLE_OFFSET;
offset = getIndex(inIndexes, indexesLength, index);
length = getIndex(inIndexes, indexesLength, index + 1) - offset;
@@ -153,11 +153,11 @@ CollationDataReader::read(const CollationTailoring *base, const uint8_t *inBytes
// when the CollationData is otherwise complete.
}
- if(baseData != NULL && baseData->numericPrimary != (inIndexes[IX_OPTIONS] & 0xff000000)) {
+ if(baseData != nullptr && baseData->numericPrimary != (inIndexes[IX_OPTIONS] & 0xff000000)) {
errorCode = U_INVALID_FORMAT_ERROR;
return;
}
- CollationData *data = NULL; // Remains NULL if there are no mappings.
+ CollationData *data = nullptr; // Remains nullptr if there are no mappings.
index = IX_TRIE_OFFSET;
offset = getIndex(inIndexes, indexesLength, index);
@@ -168,10 +168,10 @@ CollationDataReader::read(const CollationTailoring *base, const uint8_t *inBytes
data->base = baseData;
data->numericPrimary = inIndexes[IX_OPTIONS] & 0xff000000;
data->trie = tailoring.trie = utrie2_openFromSerialized(
- UTRIE2_32_VALUE_BITS, inBytes + offset, length, NULL,
+ UTRIE2_32_VALUE_BITS, inBytes + offset, length, nullptr,
&errorCode);
if(U_FAILURE(errorCode)) { return; }
- } else if(baseData != NULL) {
+ } else if(baseData != nullptr) {
// Use the base data. Only the settings are tailored.
tailoring.data = baseData;
} else {
@@ -183,7 +183,7 @@ CollationDataReader::read(const CollationTailoring *base, const uint8_t *inBytes
offset = getIndex(inIndexes, indexesLength, index);
length = getIndex(inIndexes, indexesLength, index + 1) - offset;
if(length >= 8) {
- if(data == NULL) {
+ if(data == nullptr) {
errorCode = U_INVALID_FORMAT_ERROR; // Tailored ces without tailored trie.
return;
}
@@ -195,7 +195,7 @@ CollationDataReader::read(const CollationTailoring *base, const uint8_t *inBytes
offset = getIndex(inIndexes, indexesLength, index);
length = getIndex(inIndexes, indexesLength, index + 1) - offset;
if(length >= 4) {
- if(data == NULL) {
+ if(data == nullptr) {
errorCode = U_INVALID_FORMAT_ERROR; // Tailored ce32s without tailored trie.
return;
}
@@ -205,14 +205,14 @@ CollationDataReader::read(const CollationTailoring *base, const uint8_t *inBytes
int32_t jamoCE32sStart = getIndex(inIndexes, indexesLength, IX_JAMO_CE32S_START);
if(jamoCE32sStart >= 0) {
- if(data == NULL || data->ce32s == NULL) {
+ if(data == nullptr || data->ce32s == nullptr) {
errorCode = U_INVALID_FORMAT_ERROR; // Index into non-existent ce32s[].
return;
}
data->jamoCE32s = data->ce32s + jamoCE32sStart;
- } else if(data == NULL) {
+ } else if(data == nullptr) {
// Nothing to do.
- } else if(baseData != NULL) {
+ } else if(baseData != nullptr) {
data->jamoCE32s = baseData->jamoCE32s;
} else {
errorCode = U_INVALID_FORMAT_ERROR; // No Jamo CE32s for Hangul processing.
@@ -224,7 +224,7 @@ CollationDataReader::read(const CollationTailoring *base, const uint8_t *inBytes
length = getIndex(inIndexes, indexesLength, index + 1) - offset;
if(length >= 4) {
length /= 4;
- if(data == NULL || length <= CollationRootElements::IX_SEC_TER_BOUNDARIES) {
+ if(data == nullptr || length <= CollationRootElements::IX_SEC_TER_BOUNDARIES) {
errorCode = U_INVALID_FORMAT_ERROR;
return;
}
@@ -248,11 +248,11 @@ CollationDataReader::read(const CollationTailoring *base, const uint8_t *inBytes
offset = getIndex(inIndexes, indexesLength, index);
length = getIndex(inIndexes, indexesLength, index + 1) - offset;
if(length >= 2) {
- if(data == NULL) {
+ if(data == nullptr) {
errorCode = U_INVALID_FORMAT_ERROR; // Tailored contexts without tailored trie.
return;
}
- data->contexts = reinterpret_cast<const UChar *>(inBytes + offset);
+ data->contexts = reinterpret_cast<const char16_t *>(inBytes + offset);
data->contextsLength = length / 2;
}
@@ -260,14 +260,14 @@ CollationDataReader::read(const CollationTailoring *base, const uint8_t *inBytes
offset = getIndex(inIndexes, indexesLength, index);
length = getIndex(inIndexes, indexesLength, index + 1) - offset;
if(length >= 2) {
- if(data == NULL) {
+ if(data == nullptr) {
errorCode = U_INVALID_FORMAT_ERROR;
return;
}
- if(baseData == NULL) {
+ if(baseData == nullptr) {
#if defined(COLLUNSAFE_COLL_VERSION) && defined (COLLUNSAFE_SERIALIZE)
tailoring.unsafeBackwardSet = new UnicodeSet(unsafe_serializedData, unsafe_serializedCount, UnicodeSet::kSerialized, errorCode);
- if(tailoring.unsafeBackwardSet == NULL) {
+ if(tailoring.unsafeBackwardSet == nullptr) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
return;
} else if (U_FAILURE(errorCode)) {
@@ -286,7 +286,7 @@ CollationDataReader::read(const CollationTailoring *base, const uint8_t *inBytes
// new UnicodeSet("[[:^lccc=0:][\\udc00-\\udfff]]").
// It is faster and requires fewer code dependencies.
tailoring.unsafeBackwardSet = new UnicodeSet(0xdc00, 0xdfff); // trail surrogates
- if(tailoring.unsafeBackwardSet == NULL) {
+ if(tailoring.unsafeBackwardSet == nullptr) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -296,7 +296,7 @@ CollationDataReader::read(const CollationTailoring *base, const uint8_t *inBytes
// Clone the root collator's set contents.
tailoring.unsafeBackwardSet = static_cast<UnicodeSet *>(
baseData->unsafeBackwardSet->cloneAsThawed());
- if(tailoring.unsafeBackwardSet == NULL) {
+ if(tailoring.unsafeBackwardSet == nullptr) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -317,16 +317,16 @@ CollationDataReader::read(const CollationTailoring *base, const uint8_t *inBytes
// Mark each lead surrogate as "unsafe"
// if any of its 1024 associated supplementary code points is "unsafe".
UChar32 c = 0x10000;
- for(UChar lead = 0xd800; lead < 0xdc00; ++lead, c += 0x400) {
+ for(char16_t lead = 0xd800; lead < 0xdc00; ++lead, c += 0x400) {
if(!tailoring.unsafeBackwardSet->containsNone(c, c + 0x3ff)) {
tailoring.unsafeBackwardSet->add(lead);
}
}
tailoring.unsafeBackwardSet->freeze();
data->unsafeBackwardSet = tailoring.unsafeBackwardSet;
- } else if(data == NULL) {
+ } else if(data == nullptr) {
// Nothing to do.
- } else if(baseData != NULL) {
+ } else if(baseData != nullptr) {
// No tailoring-specific data: Alias the root collator's set.
data->unsafeBackwardSet = baseData->unsafeBackwardSet;
} else {
@@ -337,8 +337,8 @@ CollationDataReader::read(const CollationTailoring *base, const uint8_t *inBytes
// If the fast Latin format version is different,
// or the version is set to 0 for "no fast Latin table",
// then just always use the normal string comparison path.
- if(data != NULL) {
- data->fastLatinTable = NULL;
+ if(data != nullptr) {
+ data->fastLatinTable = nullptr;
data->fastLatinTableLength = 0;
if(((inIndexes[IX_OPTIONS] >> 16) & 0xff) == CollationFastLatin::VERSION) {
index = IX_FAST_LATIN_TABLE_OFFSET;
@@ -351,7 +351,7 @@ CollationDataReader::read(const CollationTailoring *base, const uint8_t *inBytes
errorCode = U_INVALID_FORMAT_ERROR; // header vs. table version mismatch
return;
}
- } else if(baseData != NULL) {
+ } else if(baseData != nullptr) {
data->fastLatinTable = baseData->fastLatinTable;
data->fastLatinTableLength = baseData->fastLatinTableLength;
}
@@ -362,7 +362,7 @@ CollationDataReader::read(const CollationTailoring *base, const uint8_t *inBytes
offset = getIndex(inIndexes, indexesLength, index);
length = getIndex(inIndexes, indexesLength, index + 1) - offset;
if(length >= 2) {
- if(data == NULL) {
+ if(data == nullptr) {
errorCode = U_INVALID_FORMAT_ERROR;
return;
}
@@ -385,9 +385,9 @@ CollationDataReader::read(const CollationTailoring *base, const uint8_t *inBytes
errorCode = U_INVALID_FORMAT_ERROR;
return;
}
- } else if(data == NULL) {
+ } else if(data == nullptr) {
// Nothing to do.
- } else if(baseData != NULL) {
+ } else if(baseData != nullptr) {
data->numScripts = baseData->numScripts;
data->scriptsIndex = baseData->scriptsIndex;
data->scriptStarts = baseData->scriptStarts;
@@ -398,14 +398,14 @@ CollationDataReader::read(const CollationTailoring *base, const uint8_t *inBytes
offset = getIndex(inIndexes, indexesLength, index);
length = getIndex(inIndexes, indexesLength, index + 1) - offset;
if(length >= 256) {
- if(data == NULL) {
+ if(data == nullptr) {
errorCode = U_INVALID_FORMAT_ERROR;
return;
}
data->compressibleBytes = reinterpret_cast<const UBool *>(inBytes + offset);
- } else if(data == NULL) {
+ } else if(data == nullptr) {
// Nothing to do.
- } else if(baseData != NULL) {
+ } else if(baseData != nullptr) {
data->compressibleBytes = baseData->compressibleBytes;
} else {
errorCode = U_INVALID_FORMAT_ERROR; // No compressibleBytes[].
@@ -429,7 +429,7 @@ CollationDataReader::read(const CollationTailoring *base, const uint8_t *inBytes
}
CollationSettings *settings = SharedObject::copyOnWrite(tailoring.settings);
- if(settings == NULL) {
+ if(settings == nullptr) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -468,7 +468,7 @@ CollationDataReader::isAcceptable(void *context,
pInfo->formatVersion[0] == 5
) {
UVersionInfo *version = static_cast<UVersionInfo *>(context);
- if(version != NULL) {
+ if(version != nullptr) {
uprv_memcpy(version, pInfo->dataVersion, 4);
}
return true;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/collationdatareader.h b/Build/source/libs/icu/icu-src/source/i18n/collationdatareader.h
index 083b57ea580..5030f6c8523 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/collationdatareader.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/collationdatareader.h
@@ -80,7 +80,7 @@ struct U_I18N_API CollationDataReader /* all static */ {
/** Byte offset to uint32_t rootElements[]. */
IX_ROOT_ELEMENTS_OFFSET, // 12
- /** Byte offset to UChar *contexts[]. */
+ /** Byte offset to char16_t *contexts[]. */
IX_CONTEXTS_OFFSET,
/** Byte offset to uint16_t [] with serialized unsafeBackwardSet. */
IX_UNSAFE_BWD_OFFSET,
@@ -198,7 +198,7 @@ private:
* Compact storage for all of the CEs that occur in the root collation.
* See the CollationRootElements class.
*
- * UChar *contexts[];
+ * char16_t *contexts[];
* Serialized UCharsTrie structures with prefix (pre-context) and contraction mappings.
*
* uint16_t unsafeBackwardSet[]; -- see UnicodeSet::serialize()
diff --git a/Build/source/libs/icu/icu-src/source/i18n/collationdatawriter.cpp b/Build/source/libs/icu/icu-src/source/i18n/collationdatawriter.cpp
index b4be7df8878..ce78a0526a3 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/collationdatawriter.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/collationdatawriter.cpp
@@ -33,22 +33,22 @@ U_NAMESPACE_BEGIN
uint8_t *
RuleBasedCollator::cloneRuleData(int32_t &length, UErrorCode &errorCode) const {
- if(U_FAILURE(errorCode)) { return NULL; }
+ if(U_FAILURE(errorCode)) { return nullptr; }
LocalMemory<uint8_t> buffer((uint8_t *)uprv_malloc(20000));
if(buffer.isNull()) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
length = cloneBinary(buffer.getAlias(), 20000, errorCode);
if(errorCode == U_BUFFER_OVERFLOW_ERROR) {
- if(buffer.allocateInsteadAndCopy(length, 0) == NULL) {
+ if(buffer.allocateInsteadAndCopy(length, 0) == nullptr) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
errorCode = U_ZERO_ERROR;
length = cloneBinary(buffer.getAlias(), length, errorCode);
}
- if(U_FAILURE(errorCode)) { return NULL; }
+ if(U_FAILURE(errorCode)) { return nullptr; }
return buffer.orphan();
}
@@ -79,7 +79,7 @@ CollationDataWriter::writeBase(const CollationData &data, const CollationSetting
const void *rootElements, int32_t rootElementsLength,
int32_t indexes[], uint8_t *dest, int32_t capacity,
UErrorCode &errorCode) {
- return write(true, NULL,
+ return write(true, nullptr,
data, settings,
rootElements, rootElementsLength,
indexes, dest, capacity, errorCode);
@@ -91,7 +91,7 @@ CollationDataWriter::writeTailoring(const CollationTailoring &t, const Collation
UErrorCode &errorCode) {
return write(false, t.version,
*t.data, settings,
- NULL, 0,
+ nullptr, 0,
indexes, dest, capacity, errorCode);
}
@@ -102,7 +102,7 @@ CollationDataWriter::write(UBool isBase, const UVersionInfo dataVersion,
int32_t indexes[], uint8_t *dest, int32_t capacity,
UErrorCode &errorCode) {
if(U_FAILURE(errorCode)) { return 0; }
- if(capacity < 0 || (capacity > 0 && dest == NULL)) {
+ if(capacity < 0 || (capacity > 0 && dest == nullptr)) {
errorCode = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -117,7 +117,7 @@ CollationDataWriter::write(UBool isBase, const UVersionInfo dataVersion,
const CollationData *baseData = data.base;
int32_t fastLatinVersion;
- if(data.fastLatinTable != NULL) {
+ if(data.fastLatinTable != nullptr) {
fastLatinVersion = (int32_t)CollationFastLatin::VERSION << 16;
} else {
fastLatinVersion = 0;
@@ -132,7 +132,7 @@ CollationDataWriter::write(UBool isBase, const UVersionInfo dataVersion,
hasMappings = true;
unsafeBackwardSet = *data.unsafeBackwardSet;
fastLatinTableLength = data.fastLatinTableLength;
- } else if(baseData == NULL) {
+ } else if(baseData == nullptr) {
hasMappings = false;
if(settings.reorderCodesLength == 0) {
// only options
@@ -207,7 +207,7 @@ CollationDataWriter::write(UBool isBase, const UVersionInfo dataVersion,
dest += headerSize;
capacity -= headerSize;
} else {
- dest = NULL;
+ dest = nullptr;
capacity = 0;
}
}
@@ -233,7 +233,7 @@ CollationDataWriter::write(UBool isBase, const UVersionInfo dataVersion,
totalSize += reorderCodesLength * 4;
indexes[CollationDataReader::IX_REORDER_TABLE_OFFSET] = totalSize;
- if(settings.reorderTable != NULL) {
+ if(settings.reorderTable != nullptr) {
totalSize += 256;
}
@@ -245,7 +245,7 @@ CollationDataWriter::write(UBool isBase, const UVersionInfo dataVersion,
length = utrie2_serialize(data.trie, dest + totalSize,
capacity - totalSize, &errorCode2);
} else {
- length = utrie2_serialize(data.trie, NULL, 0, &errorCode2);
+ length = utrie2_serialize(data.trie, nullptr, 0, &errorCode2);
}
if(U_FAILURE(errorCode2) && errorCode2 != U_BUFFER_OVERFLOW_ERROR) {
errorCode = errorCode2;
@@ -287,7 +287,7 @@ CollationDataWriter::write(UBool isBase, const UVersionInfo dataVersion,
length = unsafeBackwardSet.serialize(
p, (capacity - totalSize) / 2, errorCode2);
} else {
- length = unsafeBackwardSet.serialize(NULL, 0, errorCode2);
+ length = unsafeBackwardSet.serialize(nullptr, 0, errorCode2);
}
if(U_FAILURE(errorCode2) && errorCode2 != U_BUFFER_OVERFLOW_ERROR) {
errorCode = errorCode2;
@@ -302,9 +302,9 @@ CollationDataWriter::write(UBool isBase, const UVersionInfo dataVersion,
UnicodeString scripts;
indexes[CollationDataReader::IX_SCRIPTS_OFFSET] = totalSize;
if(isBase) {
- scripts.append((UChar)data.numScripts);
- scripts.append(reinterpret_cast<const UChar *>(data.scriptsIndex), data.numScripts + 16);
- scripts.append(reinterpret_cast<const UChar *>(data.scriptStarts), data.scriptStartsLength);
+ scripts.append((char16_t)data.numScripts);
+ scripts.append(reinterpret_cast<const char16_t *>(data.scriptsIndex), data.numScripts + 16);
+ scripts.append(reinterpret_cast<const char16_t *>(data.scriptStarts), data.scriptStartsLength);
totalSize += scripts.length() * 2;
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/collationfastlatin.cpp b/Build/source/libs/icu/icu-src/source/i18n/collationfastlatin.cpp
index 35cf60e8151..f40781a1178 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/collationfastlatin.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/collationfastlatin.cpp
@@ -27,7 +27,7 @@ int32_t
CollationFastLatin::getOptions(const CollationData *data, const CollationSettings &settings,
uint16_t *primaries, int32_t capacity) {
const uint16_t *table = data->fastLatinTable;
- if(table == NULL) { return -1; }
+ if(table == nullptr) { return -1; }
U_ASSERT(capacity == LATIN_LIMIT);
if(capacity != LATIN_LIMIT) { return -1; }
@@ -107,8 +107,8 @@ CollationFastLatin::getOptions(const CollationData *data, const CollationSetting
int32_t
CollationFastLatin::compareUTF16(const uint16_t *table, const uint16_t *primaries, int32_t options,
- const UChar *left, int32_t leftLength,
- const UChar *right, int32_t rightLength) {
+ const char16_t *left, int32_t leftLength,
+ const char16_t *right, int32_t rightLength) {
// This is a modified copy of CollationCompare::compareUpToQuaternary(),
// optimized for common Latin text.
// Keep them in sync!
@@ -154,7 +154,7 @@ CollationFastLatin::compareUTF16(const uint16_t *table, const uint16_t *primarie
leftPair &= LONG_PRIMARY_MASK;
break;
} else {
- leftPair = nextPair(table, c, leftPair, left, NULL, leftIndex, leftLength);
+ leftPair = nextPair(table, c, leftPair, left, nullptr, leftIndex, leftLength);
if(leftPair == BAIL_OUT) { return BAIL_OUT_RESULT; }
leftPair = getPrimaries(variableTop, leftPair);
}
@@ -185,7 +185,7 @@ CollationFastLatin::compareUTF16(const uint16_t *table, const uint16_t *primarie
rightPair &= LONG_PRIMARY_MASK;
break;
} else {
- rightPair = nextPair(table, c, rightPair, right, NULL, rightIndex, rightLength);
+ rightPair = nextPair(table, c, rightPair, right, nullptr, rightIndex, rightLength);
if(rightPair == BAIL_OUT) { return BAIL_OUT_RESULT; }
rightPair = getPrimaries(variableTop, rightPair);
}
@@ -236,7 +236,7 @@ CollationFastLatin::compareUTF16(const uint16_t *table, const uint16_t *primarie
leftPair = COMMON_SEC_PLUS_OFFSET;
break;
} else {
- leftPair = nextPair(table, c, leftPair, left, NULL, leftIndex, leftLength);
+ leftPair = nextPair(table, c, leftPair, left, nullptr, leftIndex, leftLength);
leftPair = getSecondaries(variableTop, leftPair);
}
}
@@ -261,7 +261,7 @@ CollationFastLatin::compareUTF16(const uint16_t *table, const uint16_t *primarie
rightPair = COMMON_SEC_PLUS_OFFSET;
break;
} else {
- rightPair = nextPair(table, c, rightPair, right, NULL, rightIndex, rightLength);
+ rightPair = nextPair(table, c, rightPair, right, nullptr, rightIndex, rightLength);
rightPair = getSecondaries(variableTop, rightPair);
}
}
@@ -300,7 +300,7 @@ CollationFastLatin::compareUTF16(const uint16_t *table, const uint16_t *primarie
UChar32 c = left[leftIndex++];
leftPair = (c <= LATIN_MAX) ? table[c] : lookup(table, c);
if(leftPair < MIN_LONG) {
- leftPair = nextPair(table, c, leftPair, left, NULL, leftIndex, leftLength);
+ leftPair = nextPair(table, c, leftPair, left, nullptr, leftIndex, leftLength);
}
leftPair = getCases(variableTop, strengthIsPrimary, leftPair);
}
@@ -313,7 +313,7 @@ CollationFastLatin::compareUTF16(const uint16_t *table, const uint16_t *primarie
UChar32 c = right[rightIndex++];
rightPair = (c <= LATIN_MAX) ? table[c] : lookup(table, c);
if(rightPair < MIN_LONG) {
- rightPair = nextPair(table, c, rightPair, right, NULL, rightIndex, rightLength);
+ rightPair = nextPair(table, c, rightPair, right, nullptr, rightIndex, rightLength);
}
rightPair = getCases(variableTop, strengthIsPrimary, rightPair);
}
@@ -353,7 +353,7 @@ CollationFastLatin::compareUTF16(const uint16_t *table, const uint16_t *primarie
UChar32 c = left[leftIndex++];
leftPair = (c <= LATIN_MAX) ? table[c] : lookup(table, c);
if(leftPair < MIN_LONG) {
- leftPair = nextPair(table, c, leftPair, left, NULL, leftIndex, leftLength);
+ leftPair = nextPair(table, c, leftPair, left, nullptr, leftIndex, leftLength);
}
leftPair = getTertiaries(variableTop, withCaseBits, leftPair);
}
@@ -366,7 +366,7 @@ CollationFastLatin::compareUTF16(const uint16_t *table, const uint16_t *primarie
UChar32 c = right[rightIndex++];
rightPair = (c <= LATIN_MAX) ? table[c] : lookup(table, c);
if(rightPair < MIN_LONG) {
- rightPair = nextPair(table, c, rightPair, right, NULL, rightIndex, rightLength);
+ rightPair = nextPair(table, c, rightPair, right, nullptr, rightIndex, rightLength);
}
rightPair = getTertiaries(variableTop, withCaseBits, rightPair);
}
@@ -409,7 +409,7 @@ CollationFastLatin::compareUTF16(const uint16_t *table, const uint16_t *primarie
UChar32 c = left[leftIndex++];
leftPair = (c <= LATIN_MAX) ? table[c] : lookup(table, c);
if(leftPair < MIN_LONG) {
- leftPair = nextPair(table, c, leftPair, left, NULL, leftIndex, leftLength);
+ leftPair = nextPair(table, c, leftPair, left, nullptr, leftIndex, leftLength);
}
leftPair = getQuaternaries(variableTop, leftPair);
}
@@ -422,7 +422,7 @@ CollationFastLatin::compareUTF16(const uint16_t *table, const uint16_t *primarie
UChar32 c = right[rightIndex++];
rightPair = (c <= LATIN_MAX) ? table[c] : lookup(table, c);
if(rightPair < MIN_LONG) {
- rightPair = nextPair(table, c, rightPair, right, NULL, rightIndex, rightLength);
+ rightPair = nextPair(table, c, rightPair, right, nullptr, rightIndex, rightLength);
}
rightPair = getQuaternaries(variableTop, rightPair);
}
@@ -499,7 +499,7 @@ CollationFastLatin::compareUTF8(const uint16_t *table, const uint16_t *primaries
leftPair &= LONG_PRIMARY_MASK;
break;
} else {
- leftPair = nextPair(table, c, leftPair, NULL, left, leftIndex, leftLength);
+ leftPair = nextPair(table, c, leftPair, nullptr, left, leftIndex, leftLength);
if(leftPair == BAIL_OUT) { return BAIL_OUT_RESULT; }
leftPair = getPrimaries(variableTop, leftPair);
}
@@ -536,7 +536,7 @@ CollationFastLatin::compareUTF8(const uint16_t *table, const uint16_t *primaries
rightPair &= LONG_PRIMARY_MASK;
break;
} else {
- rightPair = nextPair(table, c, rightPair, NULL, right, rightIndex, rightLength);
+ rightPair = nextPair(table, c, rightPair, nullptr, right, rightIndex, rightLength);
if(rightPair == BAIL_OUT) { return BAIL_OUT_RESULT; }
rightPair = getPrimaries(variableTop, rightPair);
}
@@ -587,7 +587,7 @@ CollationFastLatin::compareUTF8(const uint16_t *table, const uint16_t *primaries
leftPair = COMMON_SEC_PLUS_OFFSET;
break;
} else {
- leftPair = nextPair(table, c, leftPair, NULL, left, leftIndex, leftLength);
+ leftPair = nextPair(table, c, leftPair, nullptr, left, leftIndex, leftLength);
leftPair = getSecondaries(variableTop, leftPair);
}
}
@@ -612,7 +612,7 @@ CollationFastLatin::compareUTF8(const uint16_t *table, const uint16_t *primaries
rightPair = COMMON_SEC_PLUS_OFFSET;
break;
} else {
- rightPair = nextPair(table, c, rightPair, NULL, right, rightIndex, rightLength);
+ rightPair = nextPair(table, c, rightPair, nullptr, right, rightIndex, rightLength);
rightPair = getSecondaries(variableTop, rightPair);
}
}
@@ -651,7 +651,7 @@ CollationFastLatin::compareUTF8(const uint16_t *table, const uint16_t *primaries
UChar32 c = left[leftIndex++];
leftPair = (c <= 0x7f) ? table[c] : lookupUTF8Unsafe(table, c, left, leftIndex);
if(leftPair < MIN_LONG) {
- leftPair = nextPair(table, c, leftPair, NULL, left, leftIndex, leftLength);
+ leftPair = nextPair(table, c, leftPair, nullptr, left, leftIndex, leftLength);
}
leftPair = getCases(variableTop, strengthIsPrimary, leftPair);
}
@@ -664,7 +664,7 @@ CollationFastLatin::compareUTF8(const uint16_t *table, const uint16_t *primaries
UChar32 c = right[rightIndex++];
rightPair = (c <= 0x7f) ? table[c] : lookupUTF8Unsafe(table, c, right, rightIndex);
if(rightPair < MIN_LONG) {
- rightPair = nextPair(table, c, rightPair, NULL, right, rightIndex, rightLength);
+ rightPair = nextPair(table, c, rightPair, nullptr, right, rightIndex, rightLength);
}
rightPair = getCases(variableTop, strengthIsPrimary, rightPair);
}
@@ -704,7 +704,7 @@ CollationFastLatin::compareUTF8(const uint16_t *table, const uint16_t *primaries
UChar32 c = left[leftIndex++];
leftPair = (c <= 0x7f) ? table[c] : lookupUTF8Unsafe(table, c, left, leftIndex);
if(leftPair < MIN_LONG) {
- leftPair = nextPair(table, c, leftPair, NULL, left, leftIndex, leftLength);
+ leftPair = nextPair(table, c, leftPair, nullptr, left, leftIndex, leftLength);
}
leftPair = getTertiaries(variableTop, withCaseBits, leftPair);
}
@@ -717,7 +717,7 @@ CollationFastLatin::compareUTF8(const uint16_t *table, const uint16_t *primaries
UChar32 c = right[rightIndex++];
rightPair = (c <= 0x7f) ? table[c] : lookupUTF8Unsafe(table, c, right, rightIndex);
if(rightPair < MIN_LONG) {
- rightPair = nextPair(table, c, rightPair, NULL, right, rightIndex, rightLength);
+ rightPair = nextPair(table, c, rightPair, nullptr, right, rightIndex, rightLength);
}
rightPair = getTertiaries(variableTop, withCaseBits, rightPair);
}
@@ -760,7 +760,7 @@ CollationFastLatin::compareUTF8(const uint16_t *table, const uint16_t *primaries
UChar32 c = left[leftIndex++];
leftPair = (c <= 0x7f) ? table[c] : lookupUTF8Unsafe(table, c, left, leftIndex);
if(leftPair < MIN_LONG) {
- leftPair = nextPair(table, c, leftPair, NULL, left, leftIndex, leftLength);
+ leftPair = nextPair(table, c, leftPair, nullptr, left, leftIndex, leftLength);
}
leftPair = getQuaternaries(variableTop, leftPair);
}
@@ -773,7 +773,7 @@ CollationFastLatin::compareUTF8(const uint16_t *table, const uint16_t *primaries
UChar32 c = right[rightIndex++];
rightPair = (c <= 0x7f) ? table[c] : lookupUTF8Unsafe(table, c, right, rightIndex);
if(rightPair < MIN_LONG) {
- rightPair = nextPair(table, c, rightPair, NULL, right, rightIndex, rightLength);
+ rightPair = nextPair(table, c, rightPair, nullptr, right, rightIndex, rightLength);
}
rightPair = getQuaternaries(variableTop, rightPair);
}
@@ -854,7 +854,7 @@ CollationFastLatin::lookupUTF8Unsafe(const uint16_t *table, UChar32 c,
uint32_t
CollationFastLatin::nextPair(const uint16_t *table, UChar32 c, uint32_t ce,
- const UChar *s16, const uint8_t *s8, int32_t &sIndex, int32_t &sLength) {
+ const char16_t *s16, const uint8_t *s8, int32_t &sIndex, int32_t &sLength) {
if(ce >= MIN_LONG || ce < CONTRACTION) {
return ce; // simple or special mini CE
} else if(ce >= EXPANSION) {
@@ -872,7 +872,7 @@ CollationFastLatin::nextPair(const uint16_t *table, UChar32 c, uint32_t ce,
// Read the next character.
int32_t c2;
int32_t nextIndex = sIndex;
- if(s16 != NULL) {
+ if(s16 != nullptr) {
c2 = s16[nextIndex++];
if(c2 > LATIN_MAX) {
if(PUNCT_START <= c2 && c2 < PUNCT_LIMIT) {
diff --git a/Build/source/libs/icu/icu-src/source/i18n/collationfastlatin.h b/Build/source/libs/icu/icu-src/source/i18n/collationfastlatin.h
index 7013f71ce60..d4caddcb63e 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/collationfastlatin.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/collationfastlatin.h
@@ -188,7 +188,7 @@ public:
*/
static const int32_t BAIL_OUT_RESULT = -2;
- static inline int32_t getCharIndex(UChar c) {
+ static inline int32_t getCharIndex(char16_t c) {
if(c <= LATIN_MAX) {
return c;
} else if(PUNCT_START <= c && c < PUNCT_LIMIT) {
@@ -211,8 +211,8 @@ public:
uint16_t *primaries, int32_t capacity);
static int32_t compareUTF16(const uint16_t *table, const uint16_t *primaries, int32_t options,
- const UChar *left, int32_t leftLength,
- const UChar *right, int32_t rightLength);
+ const char16_t *left, int32_t leftLength,
+ const char16_t *right, int32_t rightLength);
static int32_t compareUTF8(const uint16_t *table, const uint16_t *primaries, int32_t options,
const uint8_t *left, int32_t leftLength,
@@ -226,7 +226,7 @@ private:
const uint8_t *s8, int32_t &sIndex);
static uint32_t nextPair(const uint16_t *table, UChar32 c, uint32_t ce,
- const UChar *s16, const uint8_t *s8, int32_t &sIndex, int32_t &sLength);
+ const char16_t *s16, const uint8_t *s8, int32_t &sIndex, int32_t &sLength);
static inline uint32_t getPrimaries(uint32_t variableTop, uint32_t pair) {
uint32_t ce = pair & 0xffff;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/collationfastlatinbuilder.cpp b/Build/source/libs/icu/icu-src/source/i18n/collationfastlatinbuilder.cpp
index fc50e9df8ed..b1fd3af70aa 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/collationfastlatinbuilder.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/collationfastlatinbuilder.cpp
@@ -89,7 +89,7 @@ binarySearch(const int64_t list[], int32_t limit, int64_t ce) {
CollationFastLatinBuilder::CollationFastLatinBuilder(UErrorCode &errorCode)
: ce0(0), ce1(0),
contractionCEs(errorCode), uniqueCEs(errorCode),
- miniCEs(NULL),
+ miniCEs(nullptr),
firstDigitPrimary(0), firstLatinPrimary(0), lastLatinPrimary(0),
firstShortPrimary(0), shortPrimaryOverflow(false),
headerLength(0) {
@@ -140,7 +140,7 @@ CollationFastLatinBuilder::loadGroups(const CollationData &data, UErrorCode &err
if(U_FAILURE(errorCode)) { return false; }
headerLength = 1 + NUM_SPECIAL_GROUPS;
uint32_t r0 = (CollationFastLatin::VERSION << 8) | headerLength;
- result.append((UChar)r0);
+ result.append((char16_t)r0);
// The first few reordering groups should be special groups
// (space, punct, ..., digit) followed by Latn, then Grek and other scripts.
for(int32_t i = 0; i < NUM_SPECIAL_GROUPS; ++i) {
@@ -149,7 +149,7 @@ CollationFastLatinBuilder::loadGroups(const CollationData &data, UErrorCode &err
// missing data
return false;
}
- result.append((UChar)0); // reserve a slot for this group
+ result.append((char16_t)0); // reserve a slot for this group
}
firstDigitPrimary = data.getFirstPrimaryForGroup(UCOL_REORDER_CODE_DIGIT);
@@ -205,7 +205,7 @@ void
CollationFastLatinBuilder::getCEs(const CollationData &data, UErrorCode &errorCode) {
if(U_FAILURE(errorCode)) { return; }
int32_t i = 0;
- for(UChar c = 0;; ++i, ++c) {
+ for(char16_t c = 0;; ++i, ++c) {
if(c == CollationFastLatin::LATIN_LIMIT) {
c = CollationFastLatin::PUNCT_START;
} else if(c == CollationFastLatin::PUNCT_LIMIT) {
@@ -342,7 +342,7 @@ UBool
CollationFastLatinBuilder::getCEsFromContractionCE32(const CollationData &data, uint32_t ce32,
UErrorCode &errorCode) {
if(U_FAILURE(errorCode)) { return false; }
- const UChar *p = data.contexts + Collation::indexFromCE32(ce32);
+ const char16_t *p = data.contexts + Collation::indexFromCE32(ce32);
ce32 = CollationData::readCE32(p); // Default if no suffix match.
// Since the original ce32 is not a prefix mapping,
// the default ce32 must not be another contraction.
@@ -431,7 +431,7 @@ CollationFastLatinBuilder::encodeUniqueCEs(UErrorCode &errorCode) {
if(U_FAILURE(errorCode)) { return false; }
uprv_free(miniCEs);
miniCEs = (uint16_t *)uprv_malloc(uniqueCEs.size() * 2);
- if(miniCEs == NULL) {
+ if(miniCEs == nullptr) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
return false;
}
@@ -454,7 +454,7 @@ CollationFastLatinBuilder::encodeUniqueCEs(UErrorCode &errorCode) {
U_ASSERT(pri <= CollationFastLatin::MAX_LONG);
// Set the group's header entry to the
// last "long primary" in or before the group.
- result.setCharAt(1 + group, (UChar)pri);
+ result.setCharAt(1 + group, (char16_t)pri);
if(++group < NUM_SPECIAL_GROUPS) {
lastGroupPrimary = lastSpecialPrimaries[group];
} else {
@@ -566,7 +566,7 @@ CollationFastLatinBuilder::encodeCharCEs(UErrorCode &errorCode) {
if(U_FAILURE(errorCode)) { return false; }
int32_t miniCEsStart = result.length();
for(int32_t i = 0; i < CollationFastLatin::NUM_FAST_CHARS; ++i) {
- result.append((UChar)0); // initialize to completely ignorable
+ result.append((char16_t)0); // initialize to completely ignorable
}
int32_t indexBase = result.length();
for(int32_t i = 0; i < CollationFastLatin::NUM_FAST_CHARS; ++i) {
@@ -581,11 +581,11 @@ CollationFastLatinBuilder::encodeCharCEs(UErrorCode &errorCode) {
if(expansionIndex > (int32_t)CollationFastLatin::INDEX_MASK) {
miniCE = CollationFastLatin::BAIL_OUT;
} else {
- result.append((UChar)(miniCE >> 16)).append((UChar)miniCE);
+ result.append((char16_t)(miniCE >> 16)).append((char16_t)miniCE);
miniCE = CollationFastLatin::EXPANSION | expansionIndex;
}
}
- result.setCharAt(miniCEsStart + i, (UChar)miniCE);
+ result.setCharAt(miniCEsStart + i, (char16_t)miniCE);
}
return U_SUCCESS(errorCode);
}
@@ -613,13 +613,13 @@ CollationFastLatinBuilder::encodeContractions(UErrorCode &errorCode) {
int64_t cce1 = contractionCEs.elementAti(index + 2);
uint32_t miniCE = encodeTwoCEs(cce0, cce1);
if(miniCE == CollationFastLatin::BAIL_OUT) {
- result.append((UChar)(x | (1 << CollationFastLatin::CONTR_LENGTH_SHIFT)));
+ result.append((char16_t)(x | (1 << CollationFastLatin::CONTR_LENGTH_SHIFT)));
} else if(miniCE <= 0xffff) {
- result.append((UChar)(x | (2 << CollationFastLatin::CONTR_LENGTH_SHIFT)));
- result.append((UChar)miniCE);
+ result.append((char16_t)(x | (2 << CollationFastLatin::CONTR_LENGTH_SHIFT)));
+ result.append((char16_t)miniCE);
} else {
- result.append((UChar)(x | (3 << CollationFastLatin::CONTR_LENGTH_SHIFT)));
- result.append((UChar)(miniCE >> 16)).append((UChar)miniCE);
+ result.append((char16_t)(x | (3 << CollationFastLatin::CONTR_LENGTH_SHIFT)));
+ result.append((char16_t)(miniCE >> 16)).append((char16_t)miniCE);
}
firstTriple = false;
}
@@ -627,11 +627,11 @@ CollationFastLatinBuilder::encodeContractions(UErrorCode &errorCode) {
// and if so, then we could truncate the result and reuse the other list.
// However, that seems unlikely.
result.setCharAt(headerLength + i,
- (UChar)(CollationFastLatin::CONTRACTION | contractionIndex));
+ (char16_t)(CollationFastLatin::CONTRACTION | contractionIndex));
}
if(result.length() > firstContractionIndex) {
// Terminate the last contraction list.
- result.append((UChar)CollationFastLatin::CONTR_CHAR_MASK);
+ result.append((char16_t)CollationFastLatin::CONTR_CHAR_MASK);
}
if(result.isBogus()) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/collationiterator.cpp b/Build/source/libs/icu/icu-src/source/i18n/collationiterator.cpp
index a47b3d86bea..f8c6da22b2b 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/collationiterator.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/collationiterator.cpp
@@ -46,7 +46,7 @@ CollationIterator::CEBuffer::ensureAppendCapacity(int32_t appCap, UErrorCode &er
}
} while(capacity < (length + appCap));
int64_t *p = buffer.resize(capacity, length);
- if(p == NULL) {
+ if(p == nullptr) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
return false;
}
@@ -149,7 +149,7 @@ CollationIterator::CollationIterator(const CollationIterator &other)
trie(other.trie),
data(other.data),
cesIndex(other.cesIndex),
- skipped(NULL),
+ skipped(nullptr),
numCpFwd(other.numCpFwd),
isNumeric(other.isNumeric) {
UErrorCode errorCode = U_ZERO_ERROR;
@@ -191,7 +191,7 @@ CollationIterator::operator==(const CollationIterator &other) const {
void
CollationIterator::reset() {
cesIndex = ceBuffer.length = 0;
- if(skipped != NULL) { skipped->clear(); }
+ if(skipped != nullptr) { skipped->clear(); }
}
int32_t
@@ -209,7 +209,7 @@ CollationIterator::handleNextCE32(UChar32 &c, UErrorCode &errorCode) {
return (c < 0) ? Collation::FALLBACK_CE32 : data->getCE32(c);
}
-UChar
+char16_t
CollationIterator::handleGetTrailSurrogate() {
return 0;
}
@@ -303,7 +303,7 @@ CollationIterator::appendCEsFromCE32(const CollationData *d, UChar32 c, uint32_t
if(forward) { forwardNumCodePoints(1, errorCode); }
break;
case Collation::CONTRACTION_TAG: {
- const UChar *p = d->contexts + Collation::indexFromCE32(ce32);
+ const char16_t *p = d->contexts + Collation::indexFromCE32(ce32);
uint32_t defaultCE32 = CollationData::readCE32(p); // Default if no suffix match.
if(!forward) {
// Backward contractions are handled by previousCEUnsafe().
@@ -312,7 +312,7 @@ CollationIterator::appendCEsFromCE32(const CollationData *d, UChar32 c, uint32_t
break;
}
UChar32 nextCp;
- if(skipped == NULL && numCpFwd < 0) {
+ if(skipped == nullptr && numCpFwd < 0) {
// Some portion of nextCE32FromContraction() pulled out here as an ASCII fast path,
// avoiding the function call and the nextSkippedCodePoint() overhead.
nextCp = nextCodePoint(errorCode);
@@ -408,7 +408,7 @@ CollationIterator::appendCEsFromCE32(const CollationData *d, UChar32 c, uint32_t
case Collation::LEAD_SURROGATE_TAG: {
U_ASSERT(forward); // Backward iteration should never see lead surrogate code _unit_ data.
U_ASSERT(U16_IS_LEAD(c));
- UChar trail;
+ char16_t trail;
if(U16_IS_TRAIL(trail = handleGetTrailSurrogate())) {
c = U16_GET_SUPPLEMENTARY(c, trail);
ce32 &= Collation::LEAD_TYPE_MASK;
@@ -447,7 +447,7 @@ CollationIterator::appendCEsFromCE32(const CollationData *d, UChar32 c, uint32_t
uint32_t
CollationIterator::getCE32FromPrefix(const CollationData *d, uint32_t ce32,
UErrorCode &errorCode) {
- const UChar *p = d->contexts + Collation::indexFromCE32(ce32);
+ const char16_t *p = d->contexts + Collation::indexFromCE32(ce32);
ce32 = CollationData::readCE32(p); // Default if no prefix match.
p += 2;
// Number of code points read before the original code point.
@@ -469,17 +469,17 @@ CollationIterator::getCE32FromPrefix(const CollationData *d, uint32_t ce32,
UChar32
CollationIterator::nextSkippedCodePoint(UErrorCode &errorCode) {
- if(skipped != NULL && skipped->hasNext()) { return skipped->next(); }
+ if(skipped != nullptr && skipped->hasNext()) { return skipped->next(); }
if(numCpFwd == 0) { return U_SENTINEL; }
UChar32 c = nextCodePoint(errorCode);
- if(skipped != NULL && !skipped->isEmpty() && c >= 0) { skipped->incBeyond(); }
+ if(skipped != nullptr && !skipped->isEmpty() && c >= 0) { skipped->incBeyond(); }
if(numCpFwd > 0 && c >= 0) { --numCpFwd; }
return c;
}
void
CollationIterator::backwardNumSkipped(int32_t n, UErrorCode &errorCode) {
- if(skipped != NULL && !skipped->isEmpty()) {
+ if(skipped != nullptr && !skipped->isEmpty()) {
n = skipped->backwardNumCodePoints(n);
}
backwardNumCodePoints(n, errorCode);
@@ -488,7 +488,7 @@ CollationIterator::backwardNumSkipped(int32_t n, UErrorCode &errorCode) {
uint32_t
CollationIterator::nextCE32FromContraction(const CollationData *d, uint32_t contractionCE32,
- const UChar *p, uint32_t ce32, UChar32 c,
+ const char16_t *p, uint32_t ce32, UChar32 c,
UErrorCode &errorCode) {
// c: next code point after the original one
@@ -501,7 +501,7 @@ CollationIterator::nextCE32FromContraction(const CollationData *d, uint32_t cont
// and therefore need not remember the suffixes state from before a mismatch for retrying.
// If we are already processing skipped combining marks, then we do track the state.
UCharsTrie suffixes(p);
- if(skipped != NULL && !skipped->isEmpty()) { skipped->saveTrieState(suffixes); }
+ if(skipped != nullptr && !skipped->isEmpty()) { skipped->saveTrieState(suffixes); }
UStringTrieResult match = suffixes.firstForCodePoint(c);
for(;;) {
UChar32 nextCp;
@@ -510,7 +510,7 @@ CollationIterator::nextCE32FromContraction(const CollationData *d, uint32_t cont
if(!USTRINGTRIE_HAS_NEXT(match) || (c = nextSkippedCodePoint(errorCode)) < 0) {
return ce32;
}
- if(skipped != NULL && !skipped->isEmpty()) { skipped->saveTrieState(suffixes); }
+ if(skipped != nullptr && !skipped->isEmpty()) { skipped->saveTrieState(suffixes); }
sinceMatch = 1;
} else if(match == USTRINGTRIE_NO_MATCH || (nextCp = nextSkippedCodePoint(errorCode)) < 0) {
// No match for c, or partial match (USTRINGTRIE_NO_VALUE) and no further text.
@@ -597,10 +597,10 @@ CollationIterator::nextCE32FromDiscontiguousContraction(
// We have read and matched (lookAhead-2) code points,
// read non-matching c and peeked ahead at nextCp.
// Return to the state before the mismatch and continue matching with nextCp.
- if(skipped == NULL || skipped->isEmpty()) {
- if(skipped == NULL) {
+ if(skipped == nullptr || skipped->isEmpty()) {
+ if(skipped == nullptr) {
skipped = new SkippedState();
- if(skipped == NULL) {
+ if(skipped == nullptr) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
return 0;
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/collationiterator.h b/Build/source/libs/icu/icu-src/source/i18n/collationiterator.h
index 93c119c6b85..07bdf61985a 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/collationiterator.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/collationiterator.h
@@ -103,7 +103,7 @@ public:
: trie(d->trie),
data(d),
cesIndex(0),
- skipped(NULL),
+ skipped(nullptr),
numCpFwd(-1),
isNumeric(numeric) {}
@@ -242,7 +242,7 @@ protected:
* if a trail surrogate follows the lead surrogate.
* Otherwise returns any other code unit and does not advance.
*/
- virtual UChar handleGetTrailSurrogate();
+ virtual char16_t handleGetTrailSurrogate();
/**
* Called when handleNextCE32() returns with c==0, to see whether it is a NUL terminator.
@@ -290,7 +290,7 @@ private:
uint32_t nextCE32FromContraction(
const CollationData *d, uint32_t contractionCE32,
- const UChar *p, uint32_t ce32, UChar32 c,
+ const char16_t *p, uint32_t ce32, UChar32 c,
UErrorCode &errorCode);
uint32_t nextCE32FromDiscontiguousContraction(
diff --git a/Build/source/libs/icu/icu-src/source/i18n/collationkeys.cpp b/Build/source/libs/icu/icu-src/source/i18n/collationkeys.cpp
index c7e0de618de..c429ac3f8f7 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/collationkeys.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/collationkeys.cpp
@@ -28,7 +28,7 @@ SortKeyByteSink::~SortKeyByteSink() {}
void
SortKeyByteSink::Append(const char *bytes, int32_t n) {
- if (n <= 0 || bytes == NULL) {
+ if (n <= 0 || bytes == nullptr) {
return;
}
if (ignore_ > 0) {
@@ -63,7 +63,7 @@ SortKeyByteSink::GetAppendBuffer(int32_t min_capacity,
int32_t *result_capacity) {
if (min_capacity < 1 || scratch_capacity < min_capacity) {
*result_capacity = 0;
- return NULL;
+ return nullptr;
}
if (ignore_ > 0) {
// Do not write ignored bytes right at the end of the buffer.
@@ -192,7 +192,7 @@ UBool SortKeyLevel::ensureCapacity(int32_t appendCapacity) {
if (newCapacity < 200) {
newCapacity = 200;
}
- if(buffer.resize(newCapacity, len)==NULL) {
+ if(buffer.resize(newCapacity, len)==nullptr) {
return ok = false;
}
return true;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/collationkeys.h b/Build/source/libs/icu/icu-src/source/i18n/collationkeys.h
index 8dad286dc64..d1331566128 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/collationkeys.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/collationkeys.h
@@ -66,14 +66,14 @@ public:
UBool Overflowed() const { return appended_ > capacity_; }
/** @return false if memory allocation failed */
- UBool IsOk() const { return buffer_ != NULL; }
+ UBool IsOk() const { return buffer_ != nullptr; }
protected:
virtual void AppendBeyondCapacity(const char *bytes, int32_t n, int32_t length) = 0;
virtual UBool Resize(int32_t appendCapacity, int32_t length) = 0;
void SetNotOk() {
- buffer_ = NULL;
+ buffer_ = nullptr;
capacity_ = 0;
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/collationroot.cpp b/Build/source/libs/icu/icu-src/source/i18n/collationroot.cpp
index dc88c35a680..99686345f9b 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/collationroot.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/collationroot.cpp
@@ -33,7 +33,7 @@ U_NAMESPACE_BEGIN
namespace {
-static const CollationCacheEntry *rootSingleton = NULL;
+static const CollationCacheEntry *rootSingleton = nullptr;
static UInitOnce initOnce {};
} // namespace
@@ -51,17 +51,17 @@ U_CDECL_END
UDataMemory*
CollationRoot::loadFromFile(const char* ucadataPath, UErrorCode &errorCode) {
UDataMemory dataMemory;
- UDataMemory *rDataMem = NULL;
+ UDataMemory *rDataMem = nullptr;
if (U_FAILURE(errorCode)) {
- return NULL;
+ return nullptr;
}
if (uprv_mapFile(&dataMemory, ucadataPath, &errorCode)) {
if (dataMemory.pHeader->dataHeader.magic1 == 0xda &&
dataMemory.pHeader->dataHeader.magic2 == 0x27 &&
- CollationDataReader::isAcceptable(NULL, "icu", "ucadata", &dataMemory.pHeader->info)) {
+ CollationDataReader::isAcceptable(nullptr, "icu", "ucadata", &dataMemory.pHeader->info)) {
rDataMem = UDataMemory_createNewInstance(&errorCode);
if (U_FAILURE(errorCode)) {
- return NULL;
+ return nullptr;
}
rDataMem->pHeader = dataMemory.pHeader;
rDataMem->mapAddr = dataMemory.mapAddr;
@@ -69,16 +69,16 @@ CollationRoot::loadFromFile(const char* ucadataPath, UErrorCode &errorCode) {
return rDataMem;
}
errorCode = U_INVALID_FORMAT_ERROR;
- return NULL;
+ return nullptr;
}
errorCode = U_MISSING_RESOURCE_ERROR;
- return NULL;
+ return nullptr;
}
void U_CALLCONV
CollationRoot::load(const char* ucadataPath, UErrorCode &errorCode) {
if(U_FAILURE(errorCode)) { return; }
- LocalPointer<CollationTailoring> t(new CollationTailoring(NULL));
+ LocalPointer<CollationTailoring> t(new CollationTailoring(nullptr));
if(t.isNull() || t->isBogus()) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
return;
@@ -90,11 +90,11 @@ CollationRoot::load(const char* ucadataPath, UErrorCode &errorCode) {
t->version, &errorCode);
if(U_FAILURE(errorCode)) { return; }
const uint8_t *inBytes = static_cast<const uint8_t *>(udata_getMemory(t->memory));
- CollationDataReader::read(NULL, inBytes, udata_getLength(t->memory), *t, errorCode);
+ CollationDataReader::read(nullptr, inBytes, udata_getLength(t->memory), *t, errorCode);
if(U_FAILURE(errorCode)) { return; }
ucln_i18n_registerCleanup(UCLN_I18N_COLLATION_ROOT, uprv_collation_root_cleanup);
CollationCacheEntry *entry = new CollationCacheEntry(Locale::getRoot(), t.getAlias());
- if(entry != NULL) {
+ if(entry != nullptr) {
t.orphan(); // The rootSingleton took ownership of the tailoring.
entry->addRef();
rootSingleton = entry;
@@ -103,29 +103,29 @@ CollationRoot::load(const char* ucadataPath, UErrorCode &errorCode) {
const CollationCacheEntry *
CollationRoot::getRootCacheEntry(UErrorCode &errorCode) {
- umtx_initOnce(initOnce, CollationRoot::load, static_cast<const char*>(NULL), errorCode);
- if(U_FAILURE(errorCode)) { return NULL; }
+ umtx_initOnce(initOnce, CollationRoot::load, static_cast<const char*>(nullptr), errorCode);
+ if(U_FAILURE(errorCode)) { return nullptr; }
return rootSingleton;
}
const CollationTailoring *
CollationRoot::getRoot(UErrorCode &errorCode) {
- umtx_initOnce(initOnce, CollationRoot::load, static_cast<const char*>(NULL), errorCode);
- if(U_FAILURE(errorCode)) { return NULL; }
+ umtx_initOnce(initOnce, CollationRoot::load, static_cast<const char*>(nullptr), errorCode);
+ if(U_FAILURE(errorCode)) { return nullptr; }
return rootSingleton->tailoring;
}
const CollationData *
CollationRoot::getData(UErrorCode &errorCode) {
const CollationTailoring *root = getRoot(errorCode);
- if(U_FAILURE(errorCode)) { return NULL; }
+ if(U_FAILURE(errorCode)) { return nullptr; }
return root->data;
}
const CollationSettings *
CollationRoot::getSettings(UErrorCode &errorCode) {
const CollationTailoring *root = getRoot(errorCode);
- if(U_FAILURE(errorCode)) { return NULL; }
+ if(U_FAILURE(errorCode)) { return nullptr; }
return root->settings;
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/collationruleparser.cpp b/Build/source/libs/icu/icu-src/source/i18n/collationruleparser.cpp
index 7fb95c0b2b5..ba740e8d188 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/collationruleparser.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/collationruleparser.cpp
@@ -24,6 +24,7 @@
#include "unicode/uloc.h"
#include "unicode/unistr.h"
#include "unicode/utf16.h"
+#include "bytesinkutil.h"
#include "charstr.h"
#include "cmemory.h"
#include "collation.h"
@@ -34,13 +35,14 @@
#include "cstring.h"
#include "patternprops.h"
#include "uassert.h"
+#include "ulocimp.h"
#include "uvectr32.h"
U_NAMESPACE_BEGIN
namespace {
-static const UChar BEFORE[] = { 0x5b, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0 }; // "[before"
+static const char16_t BEFORE[] = { 0x5b, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0 }; // "[before"
const int32_t BEFORE_LENGTH = 7;
} // namespace
@@ -58,9 +60,9 @@ CollationRuleParser::Importer::~Importer() {}
CollationRuleParser::CollationRuleParser(const CollationData *base, UErrorCode &errorCode)
: nfd(*Normalizer2::getNFDInstance(errorCode)),
nfc(*Normalizer2::getNFCInstance(errorCode)),
- rules(NULL), baseData(base), settings(NULL),
- parseError(NULL), errorReason(NULL),
- sink(NULL), importer(NULL),
+ rules(nullptr), baseData(base), settings(nullptr),
+ parseError(nullptr), errorReason(nullptr),
+ sink(nullptr), importer(nullptr),
ruleIndex(0) {
}
@@ -75,13 +77,13 @@ CollationRuleParser::parse(const UnicodeString &ruleString,
if(U_FAILURE(errorCode)) { return; }
settings = &outSettings;
parseError = outParseError;
- if(parseError != NULL) {
+ if(parseError != nullptr) {
parseError->line = 0;
parseError->offset = -1;
parseError->preContext[0] = 0;
parseError->postContext[0] = 0;
}
- errorReason = NULL;
+ errorReason = nullptr;
parse(ruleString, errorCode);
}
@@ -92,7 +94,7 @@ CollationRuleParser::parse(const UnicodeString &ruleString, UErrorCode &errorCod
ruleIndex = 0;
while(ruleIndex < rules->length()) {
- UChar c = rules->charAt(ruleIndex);
+ char16_t c = rules->charAt(ruleIndex);
if(PatternProps::isWhiteSpace(c)) {
++ruleIndex;
continue;
@@ -174,7 +176,7 @@ CollationRuleParser::parseResetAndPosition(UErrorCode &errorCode) {
if(U_FAILURE(errorCode)) { return UCOL_DEFAULT; }
int32_t i = skipWhiteSpace(ruleIndex + 1);
int32_t j;
- UChar c;
+ char16_t c;
int32_t resetStrength;
if(rules->compare(i, BEFORE_LENGTH, BEFORE, 0, BEFORE_LENGTH) == 0 &&
(j = i + BEFORE_LENGTH) < rules->length() &&
@@ -211,7 +213,7 @@ CollationRuleParser::parseRelationOperator(UErrorCode &errorCode) {
if(ruleIndex >= rules->length()) { return UCOL_DEFAULT; }
int32_t strength;
int32_t i = ruleIndex;
- UChar c = rules->charAt(i++);
+ char16_t c = rules->charAt(i++);
switch(c) {
case 0x3c: // '<'
if(i < rules->length() && rules->charAt(i) == 0x3c) { // <<
@@ -262,7 +264,7 @@ CollationRuleParser::parseRelationStrings(int32_t strength, int32_t i, UErrorCod
UnicodeString prefix, str, extension;
i = parseTailoringString(i, str, errorCode);
if(U_FAILURE(errorCode)) { return; }
- UChar next = (i < rules->length()) ? rules->charAt(i) : 0;
+ char16_t next = (i < rules->length()) ? rules->charAt(i) : 0;
if(next == 0x7c) { // '|' separates the context prefix from the string.
prefix = str;
i = parseTailoringString(i + 1, str, errorCode);
@@ -377,7 +379,7 @@ CollationRuleParser::parseString(int32_t i, UnicodeString &raw, UErrorCode &erro
if(c == 0x27) { // apostrophe
if(i < rules->length() && rules->charAt(i) == 0x27) {
// Double apostrophe, encodes a single one.
- raw.append((UChar)0x27);
+ raw.append((char16_t)0x27);
++i;
continue;
}
@@ -397,7 +399,7 @@ CollationRuleParser::parseString(int32_t i, UnicodeString &raw, UErrorCode &erro
break;
}
}
- raw.append((UChar)c);
+ raw.append((char16_t)c);
}
} else if(c == 0x5c) { // backslash
if(i == rules->length()) {
@@ -417,7 +419,7 @@ CollationRuleParser::parseString(int32_t i, UnicodeString &raw, UErrorCode &erro
--i;
break;
} else {
- raw.append((UChar)c);
+ raw.append((char16_t)c);
}
}
for(int32_t j = 0; j < raw.length();) {
@@ -465,16 +467,16 @@ CollationRuleParser::parseSpecialPosition(int32_t i, UnicodeString &str, UErrorC
++j;
for(int32_t pos = 0; pos < UPRV_LENGTHOF(positions); ++pos) {
if(raw == UnicodeString(positions[pos], -1, US_INV)) {
- str.setTo((UChar)POS_LEAD).append((UChar)(POS_BASE + pos));
+ str.setTo((char16_t)POS_LEAD).append((char16_t)(POS_BASE + pos));
return j;
}
}
if(raw == UNICODE_STRING_SIMPLE("top")) {
- str.setTo((UChar)POS_LEAD).append((UChar)(POS_BASE + LAST_REGULAR));
+ str.setTo((char16_t)POS_LEAD).append((char16_t)(POS_BASE + LAST_REGULAR));
return j;
}
if(raw == UNICODE_STRING_SIMPLE("variable top")) {
- str.setTo((UChar)POS_LEAD).append((UChar)(POS_BASE + LAST_VARIABLE));
+ str.setTo((char16_t)POS_LEAD).append((char16_t)(POS_BASE + LAST_VARIABLE));
return j;
}
}
@@ -506,14 +508,14 @@ CollationRuleParser::parseSetting(UErrorCode &errorCode) {
return;
}
UnicodeString v;
- int32_t valueIndex = raw.lastIndexOf((UChar)0x20);
+ int32_t valueIndex = raw.lastIndexOf((char16_t)0x20);
if(valueIndex >= 0) {
v.setTo(raw, valueIndex + 1);
raw.truncate(valueIndex);
}
if(raw == UNICODE_STRING_SIMPLE("strength") && v.length() == 1) {
int32_t value = UCOL_DEFAULT;
- UChar c = v.charAt(0);
+ char16_t c = v.charAt(0);
if(0x31 <= c && c <= 0x34) { // 1..4
value = UCOL_PRIMARY + (c - 0x31);
} else if(c == 0x49) { // 'I'
@@ -604,19 +606,20 @@ CollationRuleParser::parseSetting(UErrorCode &errorCode) {
lang.appendInvariantChars(v, errorCode);
if(errorCode == U_MEMORY_ALLOCATION_ERROR) { return; }
// BCP 47 language tag -> ICU locale ID
- char localeID[ULOC_FULLNAME_CAPACITY];
+ CharString localeID;
int32_t parsedLength;
- int32_t length = uloc_forLanguageTag(lang.data(), localeID, ULOC_FULLNAME_CAPACITY,
- &parsedLength, &errorCode);
- if(U_FAILURE(errorCode) ||
- parsedLength != lang.length() || length >= ULOC_FULLNAME_CAPACITY) {
+ {
+ CharStringByteSink sink(&localeID);
+ ulocimp_forLanguageTag(lang.data(), -1, sink, &parsedLength, &errorCode);
+ }
+ if(U_FAILURE(errorCode) || parsedLength != lang.length()) {
errorCode = U_ZERO_ERROR;
setParseError("expected language tag in [import langTag]", errorCode);
return;
}
// localeID minus all keywords
char baseID[ULOC_FULLNAME_CAPACITY];
- length = uloc_getBaseName(localeID, baseID, ULOC_FULLNAME_CAPACITY, &errorCode);
+ int32_t length = uloc_getBaseName(localeID.data(), baseID, ULOC_FULLNAME_CAPACITY, &errorCode);
if(U_FAILURE(errorCode) || length >= ULOC_KEYWORDS_CAPACITY) {
errorCode = U_ZERO_ERROR;
setParseError("expected language tag in [import langTag]", errorCode);
@@ -629,23 +632,25 @@ CollationRuleParser::parseSetting(UErrorCode &errorCode) {
uprv_memcpy(baseID, "und", 3);
}
// @collation=type, or length=0 if not specified
- char collationType[ULOC_KEYWORDS_CAPACITY];
- length = uloc_getKeywordValue(localeID, "collation",
- collationType, ULOC_KEYWORDS_CAPACITY,
- &errorCode);
- if(U_FAILURE(errorCode) || length >= ULOC_KEYWORDS_CAPACITY) {
+ CharString collationType;
+ {
+ CharStringByteSink sink(&collationType);
+ ulocimp_getKeywordValue(localeID.data(), "collation", sink, &errorCode);
+ }
+ if(U_FAILURE(errorCode)) {
errorCode = U_ZERO_ERROR;
setParseError("expected language tag in [import langTag]", errorCode);
return;
}
- if(importer == NULL) {
+ if(importer == nullptr) {
setParseError("[import langTag] is not supported", errorCode);
} else {
UnicodeString importedRules;
- importer->getRules(baseID, length > 0 ? collationType : "standard",
+ importer->getRules(baseID,
+ !collationType.isEmpty() ? collationType.data() : "standard",
importedRules, errorReason, errorCode);
if(U_FAILURE(errorCode)) {
- if(errorReason == NULL) {
+ if(errorReason == nullptr) {
errorReason = "[import langTag] failed";
}
setErrorContext();
@@ -655,7 +660,7 @@ CollationRuleParser::parseSetting(UErrorCode &errorCode) {
int32_t outerRuleIndex = ruleIndex;
parse(importedRules, errorCode);
if(U_FAILURE(errorCode)) {
- if(parseError != NULL) {
+ if(parseError != nullptr) {
parseError->offset = outerRuleIndex;
}
}
@@ -698,7 +703,7 @@ CollationRuleParser::parseReordering(const UnicodeString &raw, UErrorCode &error
CharString word;
while(i < raw.length()) {
++i; // skip the word-separating space
- int32_t limit = raw.indexOf((UChar)0x20, i);
+ int32_t limit = raw.indexOf((char16_t)0x20, i);
if(limit < 0) { limit = raw.length(); }
word.clear().appendInvariantChars(raw.tempSubStringBetween(i, limit), errorCode);
if(U_FAILURE(errorCode)) { return; }
@@ -756,7 +761,7 @@ CollationRuleParser::parseUnicodeSet(int32_t i, UnicodeSet &set, UErrorCode &err
setParseError("unbalanced UnicodeSet pattern brackets", errorCode);
return j;
}
- UChar c = rules->charAt(j++);
+ char16_t c = rules->charAt(j++);
if(c == 0x5b) { // '['
++level;
} else if(c == 0x5d) { // ']'
@@ -779,12 +784,12 @@ CollationRuleParser::parseUnicodeSet(int32_t i, UnicodeSet &set, UErrorCode &err
int32_t
CollationRuleParser::readWords(int32_t i, UnicodeString &raw) const {
- static const UChar sp = 0x20;
+ static const char16_t sp = 0x20;
raw.remove();
i = skipWhiteSpace(i);
for(;;) {
if(i >= rules->length()) { return 0; }
- UChar c = rules->charAt(i);
+ char16_t c = rules->charAt(i);
if(isSyntaxChar(c) && c != 0x2d && c != 0x5f) { // syntax except -_
if(raw.isEmpty()) { return i; }
if(raw.endsWith(&sp, 1)) { // remove trailing space
@@ -806,7 +811,7 @@ int32_t
CollationRuleParser::skipComment(int32_t i) const {
// skip to past the newline
while(i < rules->length()) {
- UChar c = rules->charAt(i++);
+ char16_t c = rules->charAt(i++);
// LF or FF or CR or NEL or LS or PS
if(c == 0xa || c == 0xc || c == 0xd || c == 0x85 || c == 0x2028 || c == 0x2029) {
// Unicode Newline Guidelines: "A readline function should stop at NLF, LS, FF, or PS."
@@ -825,12 +830,12 @@ CollationRuleParser::setParseError(const char *reason, UErrorCode &errorCode) {
// rather than U_PARSE_ERROR;
errorCode = U_INVALID_FORMAT_ERROR;
errorReason = reason;
- if(parseError != NULL) { setErrorContext(); }
+ if(parseError != nullptr) { setErrorContext(); }
}
void
CollationRuleParser::setErrorContext() {
- if(parseError == NULL) { return; }
+ if(parseError == nullptr) { return; }
// Note: This relies on the calling code maintaining the ruleIndex
// at a position that is useful for debugging.
diff --git a/Build/source/libs/icu/icu-src/source/i18n/collationruleparser.h b/Build/source/libs/icu/icu-src/source/i18n/collationruleparser.h
index e124881fcf0..aabdf03f57b 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/collationruleparser.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/collationruleparser.h
@@ -60,13 +60,13 @@ public:
*
* The second contraction character is POS_BASE + Position.
*/
- static const UChar POS_LEAD = 0xfffe;
+ static const char16_t POS_LEAD = 0xfffe;
/**
* Base for the second character of contractions that encode special reset positions.
* Braille characters U+28xx are printable and normalization-inert.
* @see POS_LEAD
*/
- static const UChar POS_BASE = 0x2800;
+ static const char16_t POS_BASE = 0x2800;
class U_I18N_API Sink : public UObject {
public:
diff --git a/Build/source/libs/icu/icu-src/source/i18n/collationsets.cpp b/Build/source/libs/icu/icu-src/source/i18n/collationsets.cpp
index b23c5e318d7..62e6a5d1806 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/collationsets.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/collationsets.cpp
@@ -48,8 +48,8 @@ TailoredSet::forData(const CollationData *d, UErrorCode &ec) {
errorCode = ec; // Preserve info & warning codes.
data = d;
baseData = d->base;
- U_ASSERT(baseData != NULL);
- utrie2_enum(data->trie, NULL, enumTailoredRange, this);
+ U_ASSERT(baseData != nullptr);
+ utrie2_enum(data->trie, nullptr, enumTailoredRange, this);
ec = errorCode;
}
@@ -82,30 +82,30 @@ TailoredSet::handleCE32(UChar32 start, UChar32 end, uint32_t ce32) {
void
TailoredSet::compare(UChar32 c, uint32_t ce32, uint32_t baseCE32) {
if(Collation::isPrefixCE32(ce32)) {
- const UChar *p = data->contexts + Collation::indexFromCE32(ce32);
+ const char16_t *p = data->contexts + Collation::indexFromCE32(ce32);
ce32 = data->getFinalCE32(CollationData::readCE32(p));
if(Collation::isPrefixCE32(baseCE32)) {
- const UChar *q = baseData->contexts + Collation::indexFromCE32(baseCE32);
+ const char16_t *q = baseData->contexts + Collation::indexFromCE32(baseCE32);
baseCE32 = baseData->getFinalCE32(CollationData::readCE32(q));
comparePrefixes(c, p + 2, q + 2);
} else {
addPrefixes(data, c, p + 2);
}
} else if(Collation::isPrefixCE32(baseCE32)) {
- const UChar *q = baseData->contexts + Collation::indexFromCE32(baseCE32);
+ const char16_t *q = baseData->contexts + Collation::indexFromCE32(baseCE32);
baseCE32 = baseData->getFinalCE32(CollationData::readCE32(q));
addPrefixes(baseData, c, q + 2);
}
if(Collation::isContractionCE32(ce32)) {
- const UChar *p = data->contexts + Collation::indexFromCE32(ce32);
+ const char16_t *p = data->contexts + Collation::indexFromCE32(ce32);
if((ce32 & Collation::CONTRACT_SINGLE_CP_NO_MATCH) != 0) {
ce32 = Collation::NO_CE32;
} else {
ce32 = data->getFinalCE32(CollationData::readCE32(p));
}
if(Collation::isContractionCE32(baseCE32)) {
- const UChar *q = baseData->contexts + Collation::indexFromCE32(baseCE32);
+ const char16_t *q = baseData->contexts + Collation::indexFromCE32(baseCE32);
if((baseCE32 & Collation::CONTRACT_SINGLE_CP_NO_MATCH) != 0) {
baseCE32 = Collation::NO_CE32;
} else {
@@ -116,7 +116,7 @@ TailoredSet::compare(UChar32 c, uint32_t ce32, uint32_t baseCE32) {
addContractions(c, p + 2);
}
} else if(Collation::isContractionCE32(baseCE32)) {
- const UChar *q = baseData->contexts + Collation::indexFromCE32(baseCE32);
+ const char16_t *q = baseData->contexts + Collation::indexFromCE32(baseCE32);
baseCE32 = baseData->getFinalCE32(CollationData::readCE32(q));
addContractions(c, q + 2);
}
@@ -202,7 +202,7 @@ TailoredSet::compare(UChar32 c, uint32_t ce32, uint32_t baseCE32) {
}
}
} else if(tag == Collation::HANGUL_TAG) {
- UChar jamos[3];
+ char16_t jamos[3];
int32_t length = Hangul::decompose(c, jamos);
if(tailored->contains(jamos[0]) || tailored->contains(jamos[1]) ||
(length == 3 && tailored->contains(jamos[2]))) {
@@ -214,24 +214,24 @@ TailoredSet::compare(UChar32 c, uint32_t ce32, uint32_t baseCE32) {
}
void
-TailoredSet::comparePrefixes(UChar32 c, const UChar *p, const UChar *q) {
+TailoredSet::comparePrefixes(UChar32 c, const char16_t *p, const char16_t *q) {
// Parallel iteration over prefixes of both tables.
UCharsTrie::Iterator prefixes(p, 0, errorCode);
UCharsTrie::Iterator basePrefixes(q, 0, errorCode);
- const UnicodeString *tp = NULL; // Tailoring prefix.
- const UnicodeString *bp = NULL; // Base prefix.
+ const UnicodeString *tp = nullptr; // Tailoring prefix.
+ const UnicodeString *bp = nullptr; // Base prefix.
// Use a string with a U+FFFF as the limit sentinel.
// U+FFFF is untailorable and will not occur in prefixes.
- UnicodeString none((UChar)0xffff);
+ UnicodeString none((char16_t)0xffff);
for(;;) {
- if(tp == NULL) {
+ if(tp == nullptr) {
if(prefixes.next(errorCode)) {
tp = &prefixes.getString();
} else {
tp = &none;
}
}
- if(bp == NULL) {
+ if(bp == nullptr) {
if(basePrefixes.next(errorCode)) {
bp = &basePrefixes.getString();
} else {
@@ -243,42 +243,42 @@ TailoredSet::comparePrefixes(UChar32 c, const UChar *p, const UChar *q) {
if(cmp < 0) {
// tp occurs in the tailoring but not in the base.
addPrefix(data, *tp, c, (uint32_t)prefixes.getValue());
- tp = NULL;
+ tp = nullptr;
} else if(cmp > 0) {
// bp occurs in the base but not in the tailoring.
addPrefix(baseData, *bp, c, (uint32_t)basePrefixes.getValue());
- bp = NULL;
+ bp = nullptr;
} else {
setPrefix(*tp);
compare(c, (uint32_t)prefixes.getValue(), (uint32_t)basePrefixes.getValue());
resetPrefix();
- tp = NULL;
- bp = NULL;
+ tp = nullptr;
+ bp = nullptr;
}
}
}
void
-TailoredSet::compareContractions(UChar32 c, const UChar *p, const UChar *q) {
+TailoredSet::compareContractions(UChar32 c, const char16_t *p, const char16_t *q) {
// Parallel iteration over suffixes of both tables.
UCharsTrie::Iterator suffixes(p, 0, errorCode);
UCharsTrie::Iterator baseSuffixes(q, 0, errorCode);
- const UnicodeString *ts = NULL; // Tailoring suffix.
- const UnicodeString *bs = NULL; // Base suffix.
+ const UnicodeString *ts = nullptr; // Tailoring suffix.
+ const UnicodeString *bs = nullptr; // Base suffix.
// Use a string with two U+FFFF as the limit sentinel.
// U+FFFF is untailorable and will not occur in contractions except maybe
// as a single suffix character for a root-collator boundary contraction.
- UnicodeString none((UChar)0xffff);
- none.append((UChar)0xffff);
+ UnicodeString none((char16_t)0xffff);
+ none.append((char16_t)0xffff);
for(;;) {
- if(ts == NULL) {
+ if(ts == nullptr) {
if(suffixes.next(errorCode)) {
ts = &suffixes.getString();
} else {
ts = &none;
}
}
- if(bs == NULL) {
+ if(bs == nullptr) {
if(baseSuffixes.next(errorCode)) {
bs = &baseSuffixes.getString();
} else {
@@ -290,23 +290,23 @@ TailoredSet::compareContractions(UChar32 c, const UChar *p, const UChar *q) {
if(cmp < 0) {
// ts occurs in the tailoring but not in the base.
addSuffix(c, *ts);
- ts = NULL;
+ ts = nullptr;
} else if(cmp > 0) {
// bs occurs in the base but not in the tailoring.
addSuffix(c, *bs);
- bs = NULL;
+ bs = nullptr;
} else {
suffix = ts;
compare(c, (uint32_t)suffixes.getValue(), (uint32_t)baseSuffixes.getValue());
- suffix = NULL;
- ts = NULL;
- bs = NULL;
+ suffix = nullptr;
+ ts = nullptr;
+ bs = nullptr;
}
}
}
void
-TailoredSet::addPrefixes(const CollationData *d, UChar32 c, const UChar *p) {
+TailoredSet::addPrefixes(const CollationData *d, UChar32 c, const char16_t *p) {
UCharsTrie::Iterator prefixes(p, 0, errorCode);
while(prefixes.next(errorCode)) {
addPrefix(d, prefixes.getString(), c, (uint32_t)prefixes.getValue());
@@ -318,7 +318,7 @@ TailoredSet::addPrefix(const CollationData *d, const UnicodeString &pfx, UChar32
setPrefix(pfx);
ce32 = d->getFinalCE32(ce32);
if(Collation::isContractionCE32(ce32)) {
- const UChar *p = d->contexts + Collation::indexFromCE32(ce32);
+ const char16_t *p = d->contexts + Collation::indexFromCE32(ce32);
addContractions(c, p + 2);
}
tailored->add(UnicodeString(unreversedPrefix).append(c));
@@ -326,7 +326,7 @@ TailoredSet::addPrefix(const CollationData *d, const UnicodeString &pfx, UChar32
}
void
-TailoredSet::addContractions(UChar32 c, const UChar *p) {
+TailoredSet::addContractions(UChar32 c, const char16_t *p) {
UCharsTrie::Iterator suffixes(p, 0, errorCode);
while(suffixes.next(errorCode)) {
addSuffix(c, suffixes.getString());
@@ -340,12 +340,12 @@ TailoredSet::addSuffix(UChar32 c, const UnicodeString &sfx) {
void
TailoredSet::add(UChar32 c) {
- if(unreversedPrefix.isEmpty() && suffix == NULL) {
+ if(unreversedPrefix.isEmpty() && suffix == nullptr) {
tailored->add(c);
} else {
UnicodeString s(unreversedPrefix);
s.append(c);
- if(suffix != NULL) {
+ if(suffix != nullptr) {
s.append(*suffix);
}
tailored->add(s);
@@ -393,12 +393,12 @@ ContractionsAndExpansions::forData(const CollationData *d, UErrorCode &ec) {
if(U_FAILURE(ec)) { return; }
errorCode = ec; // Preserve info & warning codes.
// Add all from the data, can be tailoring or base.
- if(d->base != NULL) {
+ if(d->base != nullptr) {
checkTailored = -1;
}
data = d;
- utrie2_enum(data->trie, NULL, enumCnERange, this);
- if(d->base == NULL || U_FAILURE(errorCode)) {
+ utrie2_enum(data->trie, nullptr, enumCnERange, this);
+ if(d->base == nullptr || U_FAILURE(errorCode)) {
ec = errorCode;
return;
}
@@ -406,7 +406,7 @@ ContractionsAndExpansions::forData(const CollationData *d, UErrorCode &ec) {
tailored.freeze();
checkTailored = 1;
data = d->base;
- utrie2_enum(data->trie, NULL, enumCnERange, this);
+ utrie2_enum(data->trie, nullptr, enumCnERange, this);
ec = errorCode;
}
@@ -429,7 +429,7 @@ ContractionsAndExpansions::handleCE32(UChar32 start, UChar32 end, uint32_t ce32)
for(;;) {
if((ce32 & 0xff) < Collation::SPECIAL_CE32_LOW_BYTE) {
// !isSpecialCE32()
- if(sink != NULL) {
+ if(sink != nullptr) {
sink->handleCE(Collation::ceFromSimpleCE32(ce32));
}
return;
@@ -443,17 +443,17 @@ ContractionsAndExpansions::handleCE32(UChar32 start, UChar32 end, uint32_t ce32)
if(U_SUCCESS(errorCode)) { errorCode = U_INTERNAL_PROGRAM_ERROR; }
return;
case Collation::LONG_PRIMARY_TAG:
- if(sink != NULL) {
+ if(sink != nullptr) {
sink->handleCE(Collation::ceFromLongPrimaryCE32(ce32));
}
return;
case Collation::LONG_SECONDARY_TAG:
- if(sink != NULL) {
+ if(sink != nullptr) {
sink->handleCE(Collation::ceFromLongSecondaryCE32(ce32));
}
return;
case Collation::LATIN_EXPANSION_TAG:
- if(sink != NULL) {
+ if(sink != nullptr) {
ces[0] = Collation::latinCE0FromCE32(ce32);
ces[1] = Collation::latinCE1FromCE32(ce32);
sink->handleExpansion(ces, 2);
@@ -465,7 +465,7 @@ ContractionsAndExpansions::handleCE32(UChar32 start, UChar32 end, uint32_t ce32)
}
return;
case Collation::EXPANSION32_TAG:
- if(sink != NULL) {
+ if(sink != nullptr) {
const uint32_t *ce32s = data->ce32s + Collation::indexFromCE32(ce32);
int32_t length = Collation::lengthFromCE32(ce32);
for(int32_t i = 0; i < length; ++i) {
@@ -480,7 +480,7 @@ ContractionsAndExpansions::handleCE32(UChar32 start, UChar32 end, uint32_t ce32)
}
return;
case Collation::EXPANSION_TAG:
- if(sink != NULL) {
+ if(sink != nullptr) {
int32_t length = Collation::lengthFromCE32(ce32);
sink->handleExpansion(data->ces + Collation::indexFromCE32(ce32), length);
}
@@ -506,13 +506,13 @@ ContractionsAndExpansions::handleCE32(UChar32 start, UChar32 end, uint32_t ce32)
ce32 = data->ce32s[0];
break;
case Collation::HANGUL_TAG:
- if(sink != NULL) {
+ if(sink != nullptr) {
// TODO: This should be optimized,
// especially if [start..end] is the complete Hangul range. (assert that)
- UTF16CollationIterator iter(data, false, NULL, NULL, NULL);
- UChar hangul[1] = { 0 };
+ UTF16CollationIterator iter(data, false, nullptr, nullptr, nullptr);
+ char16_t hangul[1] = { 0 };
for(UChar32 c = start; c <= end; ++c) {
- hangul[0] = (UChar)c;
+ hangul[0] = (char16_t)c;
iter.setText(hangul, hangul + 1);
int32_t length = iter.fetchCEs(errorCode);
if(U_FAILURE(errorCode)) { return; }
@@ -540,7 +540,7 @@ ContractionsAndExpansions::handleCE32(UChar32 start, UChar32 end, uint32_t ce32)
void
ContractionsAndExpansions::handlePrefixes(
UChar32 start, UChar32 end, uint32_t ce32) {
- const UChar *p = data->contexts + Collation::indexFromCE32(ce32);
+ const char16_t *p = data->contexts + Collation::indexFromCE32(ce32);
ce32 = CollationData::readCE32(p); // Default if no prefix match.
handleCE32(start, end, ce32);
if(!addPrefixes) { return; }
@@ -559,7 +559,7 @@ ContractionsAndExpansions::handlePrefixes(
void
ContractionsAndExpansions::handleContractions(
UChar32 start, UChar32 end, uint32_t ce32) {
- const UChar *p = data->contexts + Collation::indexFromCE32(ce32);
+ const char16_t *p = data->contexts + Collation::indexFromCE32(ce32);
if((ce32 & Collation::CONTRACT_SINGLE_CP_NO_MATCH) != 0) {
// No match on the single code point.
// We are underneath a prefix, and the default mapping is just
@@ -579,13 +579,13 @@ ContractionsAndExpansions::handleContractions(
}
handleCE32(start, end, (uint32_t)suffixes.getValue());
}
- suffix = NULL;
+ suffix = nullptr;
}
void
ContractionsAndExpansions::addExpansions(UChar32 start, UChar32 end) {
- if(unreversedPrefix.isEmpty() && suffix == NULL) {
- if(expansions != NULL) {
+ if(unreversedPrefix.isEmpty() && suffix == nullptr) {
+ if(expansions != nullptr) {
expansions->add(start, end);
}
} else {
@@ -595,11 +595,11 @@ ContractionsAndExpansions::addExpansions(UChar32 start, UChar32 end) {
void
ContractionsAndExpansions::addStrings(UChar32 start, UChar32 end, UnicodeSet *set) {
- if(set == NULL) { return; }
+ if(set == nullptr) { return; }
UnicodeString s(unreversedPrefix);
do {
s.append(start);
- if(suffix != NULL) {
+ if(suffix != nullptr) {
s.append(*suffix);
}
set->add(s);
diff --git a/Build/source/libs/icu/icu-src/source/i18n/collationsets.h b/Build/source/libs/icu/icu-src/source/i18n/collationsets.h
index aed41f7ac8d..99aa194e762 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/collationsets.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/collationsets.h
@@ -43,9 +43,9 @@ struct CollationData;
class TailoredSet : public UMemory {
public:
TailoredSet(UnicodeSet *t)
- : data(NULL), baseData(NULL),
+ : data(nullptr), baseData(nullptr),
tailored(t),
- suffix(NULL),
+ suffix(nullptr),
errorCode(U_ZERO_ERROR) {}
void forData(const CollationData *d, UErrorCode &errorCode);
@@ -58,12 +58,12 @@ public:
private:
void compare(UChar32 c, uint32_t ce32, uint32_t baseCE32);
- void comparePrefixes(UChar32 c, const UChar *p, const UChar *q);
- void compareContractions(UChar32 c, const UChar *p, const UChar *q);
+ void comparePrefixes(UChar32 c, const char16_t *p, const char16_t *q);
+ void compareContractions(UChar32 c, const char16_t *p, const char16_t *q);
- void addPrefixes(const CollationData *d, UChar32 c, const UChar *p);
+ void addPrefixes(const CollationData *d, UChar32 c, const char16_t *p);
void addPrefix(const CollationData *d, const UnicodeString &pfx, UChar32 c, uint32_t ce32);
- void addContractions(UChar32 c, const UChar *p);
+ void addContractions(UChar32 c, const char16_t *p);
void addSuffix(UChar32 c, const UnicodeString &sfx);
void add(UChar32 c);
@@ -94,12 +94,12 @@ public:
};
ContractionsAndExpansions(UnicodeSet *con, UnicodeSet *exp, CESink *s, UBool prefixes)
- : data(NULL),
+ : data(nullptr),
contractions(con), expansions(exp),
sink(s),
addPrefixes(prefixes),
checkTailored(0),
- suffix(NULL),
+ suffix(nullptr),
errorCode(U_ZERO_ERROR) {}
void forData(const CollationData *d, UErrorCode &errorCode);
diff --git a/Build/source/libs/icu/icu-src/source/i18n/collationsettings.cpp b/Build/source/libs/icu/icu-src/source/i18n/collationsettings.cpp
index fe051880b81..1533daf38c7 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/collationsettings.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/collationsettings.cpp
@@ -30,10 +30,10 @@ U_NAMESPACE_BEGIN
CollationSettings::CollationSettings(const CollationSettings &other)
: SharedObject(other),
options(other.options), variableTop(other.variableTop),
- reorderTable(NULL),
+ reorderTable(nullptr),
minHighNoReorder(other.minHighNoReorder),
- reorderRanges(NULL), reorderRangesLength(0),
- reorderCodes(NULL), reorderCodesLength(0), reorderCodesCapacity(0),
+ reorderRanges(nullptr), reorderRangesLength(0),
+ reorderCodes(nullptr), reorderCodesLength(0), reorderCodesCapacity(0),
fastLatinOptions(other.fastLatinOptions) {
UErrorCode errorCode = U_ZERO_ERROR;
copyReorderingFrom(other, errorCode);
@@ -72,10 +72,10 @@ CollationSettings::hashCode() const {
void
CollationSettings::resetReordering() {
- // When we turn off reordering, we want to set a NULL permutation
+ // When we turn off reordering, we want to set a nullptr permutation
// rather than a no-op permutation.
// Keep the memory via reorderCodes and its capacity.
- reorderTable = NULL;
+ reorderTable = nullptr;
minHighNoReorder = 0;
reorderRangesLength = 0;
reorderCodesLength = 0;
@@ -86,7 +86,7 @@ CollationSettings::aliasReordering(const CollationData &data, const int32_t *cod
const uint32_t *ranges, int32_t rangesLength,
const uint8_t *table, UErrorCode &errorCode) {
if(U_FAILURE(errorCode)) { return; }
- if(table != NULL &&
+ if(table != nullptr &&
(rangesLength == 0 ?
!reorderTableHasSplitBytes(table) :
rangesLength >= 2 &&
@@ -111,7 +111,7 @@ CollationSettings::aliasReordering(const CollationData &data, const int32_t *cod
if(firstSplitByteRangeIndex == rangesLength) {
U_ASSERT(!reorderTableHasSplitBytes(table));
minHighNoReorder = 0;
- reorderRanges = NULL;
+ reorderRanges = nullptr;
reorderRangesLength = 0;
} else {
U_ASSERT(table[ranges[firstSplitByteRangeIndex] >> 24] == 0);
@@ -201,7 +201,7 @@ CollationSettings::setReorderArrays(const int32_t *codes, int32_t codesLength,
// Allocate one memory block for the codes, the ranges, and the 16-aligned table.
int32_t capacity = (totalLength + 3) & ~3; // round up to a multiple of 4 ints
ownedCodes = (int32_t *)uprv_malloc(capacity * 4 + 256);
- if(ownedCodes == NULL) {
+ if(ownedCodes == nullptr) {
resetReordering();
errorCode = U_MEMORY_ALLOCATION_ERROR;
return;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/collationsettings.h b/Build/source/libs/icu/icu-src/source/i18n/collationsettings.h
index 3da8f6214f6..43a181211c0 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/collationsettings.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/collationsettings.h
@@ -106,10 +106,10 @@ struct U_I18N_API CollationSettings : public SharedObject {
: options((UCOL_DEFAULT_STRENGTH << STRENGTH_SHIFT) |
(MAX_VAR_PUNCT << MAX_VARIABLE_SHIFT)),
variableTop(0),
- reorderTable(NULL),
+ reorderTable(nullptr),
minHighNoReorder(0),
- reorderRanges(NULL), reorderRangesLength(0),
- reorderCodes(NULL), reorderCodesLength(0), reorderCodesCapacity(0),
+ reorderRanges(nullptr), reorderRangesLength(0),
+ reorderCodes(nullptr), reorderCodesLength(0), reorderCodesCapacity(0),
fastLatinOptions(-1) {}
CollationSettings(const CollationSettings &other);
@@ -131,7 +131,7 @@ struct U_I18N_API CollationSettings : public SharedObject {
UErrorCode &errorCode);
void copyReorderingFrom(const CollationSettings &other, UErrorCode &errorCode);
- inline UBool hasReordering() const { return reorderTable != NULL; }
+ inline UBool hasReordering() const { return reorderTable != nullptr; }
static UBool reorderTableHasSplitBytes(const uint8_t table[256]);
inline uint32_t reorder(uint32_t p) const {
uint8_t b = reorderTable[p >> 24];
@@ -216,7 +216,7 @@ struct U_I18N_API CollationSettings : public SharedObject {
/** Variable-top primary weight. */
uint32_t variableTop;
/**
- * 256-byte table for reordering permutation of primary lead bytes; NULL if no reordering.
+ * 256-byte table for reordering permutation of primary lead bytes; nullptr if no reordering.
* A 0 entry at a non-zero index means that the primary lead byte is "split"
* (there are different offsets for primaries that share that lead byte)
* and the reordering offset must be determined via the reorderRanges.
diff --git a/Build/source/libs/icu/icu-src/source/i18n/collationtailoring.cpp b/Build/source/libs/icu/icu-src/source/i18n/collationtailoring.cpp
index 440414c4336..8d22cf25166 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/collationtailoring.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/collationtailoring.cpp
@@ -33,20 +33,20 @@
U_NAMESPACE_BEGIN
CollationTailoring::CollationTailoring(const CollationSettings *baseSettings)
- : data(NULL), settings(baseSettings),
+ : data(nullptr), settings(baseSettings),
actualLocale(""),
- ownedData(NULL),
- builder(NULL), memory(NULL), bundle(NULL),
- trie(NULL), unsafeBackwardSet(NULL),
- maxExpansions(NULL) {
- if(baseSettings != NULL) {
+ ownedData(nullptr),
+ builder(nullptr), memory(nullptr), bundle(nullptr),
+ trie(nullptr), unsafeBackwardSet(nullptr),
+ maxExpansions(nullptr) {
+ if(baseSettings != nullptr) {
U_ASSERT(baseSettings->reorderCodesLength == 0);
- U_ASSERT(baseSettings->reorderTable == NULL);
+ U_ASSERT(baseSettings->reorderTable == nullptr);
U_ASSERT(baseSettings->minHighNoReorder == 0);
} else {
settings = new CollationSettings();
}
- if(settings != NULL) {
+ if(settings != nullptr) {
settings->addRef();
}
rules.getTerminatedBuffer(); // ensure NUL-termination
@@ -69,11 +69,11 @@ CollationTailoring::~CollationTailoring() {
UBool
CollationTailoring::ensureOwnedData(UErrorCode &errorCode) {
if(U_FAILURE(errorCode)) { return false; }
- if(ownedData == NULL) {
+ if(ownedData == nullptr) {
const Normalizer2Impl *nfcImpl = Normalizer2Factory::getNFCImpl(errorCode);
if(U_FAILURE(errorCode)) { return false; }
ownedData = new CollationData(*nfcImpl);
- if(ownedData == NULL) {
+ if(ownedData == nullptr) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
return false;
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/collationtailoring.h b/Build/source/libs/icu/icu-src/source/i18n/collationtailoring.h
index a6143c1c269..ed7e46e3b9c 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/collationtailoring.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/collationtailoring.h
@@ -54,7 +54,7 @@ struct U_I18N_API CollationTailoring : public SharedObject {
/**
* Returns true if the constructor could not initialize properly.
*/
- UBool isBogus() { return settings == NULL; }
+ UBool isBogus() { return settings == nullptr; }
UBool ensureOwnedData(UErrorCode &errorCode);
@@ -97,7 +97,7 @@ private:
struct U_I18N_API CollationCacheEntry : public SharedObject {
CollationCacheEntry(const Locale &loc, const CollationTailoring *t)
: validLocale(loc), tailoring(t) {
- if(t != NULL) {
+ if(t != nullptr) {
t->addRef();
}
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/collationweights.cpp b/Build/source/libs/icu/icu-src/source/i18n/collationweights.cpp
index 02d0268f53b..2351484590c 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/collationweights.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/collationweights.cpp
@@ -409,7 +409,7 @@ CollationWeights::allocWeightsInShortRanges(int32_t n, int32_t minLength) {
/* sort the ranges by weight values */
UErrorCode errorCode=U_ZERO_ERROR;
uprv_sortArray(ranges, rangeCount, sizeof(WeightRange),
- compareRanges, NULL, false, &errorCode);
+ compareRanges, nullptr, false, &errorCode);
/* ignore error code: we know that the internal sort function will not fail here */
}
return true;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/coptccal.cpp b/Build/source/libs/icu/icu-src/source/i18n/coptccal.cpp
index 0be700ca013..a957f8f2c56 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/coptccal.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/coptccal.cpp
@@ -92,10 +92,28 @@ CopticCalendar::handleComputeFields(int32_t julianDay, UErrorCode &/*status*/)
internalSet(UCAL_ERA, era);
internalSet(UCAL_YEAR, year);
internalSet(UCAL_MONTH, month);
+ internalSet(UCAL_ORDINAL_MONTH, month);
internalSet(UCAL_DATE, day);
internalSet(UCAL_DAY_OF_YEAR, (30 * month) + day);
}
+constexpr uint32_t kCopticRelatedYearDiff = 284;
+
+int32_t CopticCalendar::getRelatedYear(UErrorCode &status) const
+{
+ int32_t year = get(UCAL_EXTENDED_YEAR, status);
+ if (U_FAILURE(status)) {
+ return 0;
+ }
+ return year + kCopticRelatedYearDiff;
+}
+
+void CopticCalendar::setRelatedYear(int32_t year)
+{
+ // set extended year
+ set(UCAL_EXTENDED_YEAR, year - kCopticRelatedYearDiff);
+}
+
/**
* The system maintains a static default century start date and Year. They are
* initialized the first time they are used. Once the system default century date
diff --git a/Build/source/libs/icu/icu-src/source/i18n/coptccal.h b/Build/source/libs/icu/icu-src/source/i18n/coptccal.h
index 5c51af04ca0..396127e8adb 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/coptccal.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/coptccal.h
@@ -154,6 +154,20 @@ public:
*/
const char * getType() const override;
+ /**
+ * @return The related Gregorian year; will be obtained by modifying the value
+ * obtained by get from UCAL_EXTENDED_YEAR field
+ * @internal
+ */
+ virtual int32_t getRelatedYear(UErrorCode &status) const override;
+
+ /**
+ * @param year The related Gregorian year to set; will be modified as necessary then
+ * set in UCAL_EXTENDED_YEAR field
+ * @internal
+ */
+ virtual void setRelatedYear(int32_t year) override;
+
protected:
//-------------------------------------------------------------------------
// Calendar framework
@@ -202,7 +216,7 @@ public:
* same class ID. Objects of other classes have different class IDs.
* @internal
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
/**
* Return the class ID for this class. This is useful only for comparing to a return
@@ -215,7 +229,7 @@ public:
* @return The class ID for all objects of this class.
* @internal
*/
- U_I18N_API static UClassID U_EXPORT2 getStaticClassID(void);
+ U_I18N_API static UClassID U_EXPORT2 getStaticClassID();
#if 0
// We do not want to introduce this API in ICU4C.
diff --git a/Build/source/libs/icu/icu-src/source/i18n/cpdtrans.cpp b/Build/source/libs/icu/icu-src/source/i18n/cpdtrans.cpp
index f2b1c36a338..9b103646891 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/cpdtrans.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/cpdtrans.cpp
@@ -22,15 +22,15 @@
#include "cmemory.h"
// keep in sync with Transliterator
-//static const UChar ID_SEP = 0x002D; /*-*/
-static const UChar ID_DELIM = 0x003B; /*;*/
-static const UChar NEWLINE = 10;
+//static const char16_t ID_SEP = 0x002D; /*-*/
+static const char16_t ID_DELIM = 0x003B; /*;*/
+static const char16_t NEWLINE = 10;
-static const UChar COLON_COLON[] = {0x3A, 0x3A, 0}; //"::"
+static const char16_t COLON_COLON[] = {0x3A, 0x3A, 0}; //"::"
U_NAMESPACE_BEGIN
-const UChar CompoundTransliterator::PASS_STRING[] = { 0x0025, 0x0050, 0x0061, 0x0073, 0x0073, 0 }; // "%Pass"
+const char16_t CompoundTransliterator::PASS_STRING[] = { 0x0025, 0x0050, 0x0061, 0x0073, 0x0073, 0 }; // "%Pass"
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(CompoundTransliterator)
@@ -110,7 +110,7 @@ CompoundTransliterator::CompoundTransliterator(const UnicodeString& newID,
CompoundTransliterator::CompoundTransliterator(UVector& list,
UParseError& /*parseError*/,
UErrorCode& status) :
- Transliterator(UnicodeString(), NULL),
+ Transliterator(UnicodeString(), nullptr),
trans(0), numAnonymousRBTs(0)
{
// TODO add code for parseError...currently unused, but
@@ -123,7 +123,7 @@ CompoundTransliterator::CompoundTransliterator(UVector& list,
int32_t anonymousRBTs,
UParseError& /*parseError*/,
UErrorCode& status) :
- Transliterator(UnicodeString(), NULL),
+ Transliterator(UnicodeString(), nullptr),
trans(0), numAnonymousRBTs(anonymousRBTs)
{
init(list, UTRANS_FORWARD, false, status);
@@ -131,7 +131,7 @@ CompoundTransliterator::CompoundTransliterator(UVector& list,
/**
* Finish constructing a transliterator: only to be called by
- * constructors. Before calling init(), set trans and filter to NULL.
+ * constructors. Before calling init(), set trans and filter to nullptr.
* @param id the id containing ';'-separated entries
* @param direction either FORWARD or REVERSE
* @param idSplitPoint the index into id at which the
@@ -139,7 +139,7 @@ CompoundTransliterator::CompoundTransliterator(UVector& list,
* -1 if there is none.
* @param adoptedSplitTransliterator a transliterator to be inserted
* before the entry at offset idSplitPoint in the id string. May be
- * NULL to insert no entry.
+ * nullptr 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.
@@ -156,7 +156,7 @@ void CompoundTransliterator::init(const UnicodeString& id,
}
UVector list(status);
- UnicodeSet* compoundFilter = NULL;
+ UnicodeSet* compoundFilter = nullptr;
UnicodeString regenID;
if (!TransliteratorIDParser::parseCompoundID(id, direction,
regenID, list, compoundFilter)) {
@@ -169,14 +169,14 @@ void CompoundTransliterator::init(const UnicodeString& id,
init(list, direction, fixReverseID, status);
- if (compoundFilter != NULL) {
+ if (compoundFilter != nullptr) {
adoptFilter(compoundFilter);
}
}
/**
* Finish constructing a transliterator: only to be called by
- * constructors. Before calling init(), set trans and filter to NULL.
+ * constructors. Before calling init(), set trans and filter to nullptr.
* @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
@@ -197,7 +197,7 @@ void CompoundTransliterator::init(UVector& list,
if (U_SUCCESS(status)) {
count = list.size();
trans = (Transliterator **)uprv_malloc(count * sizeof(Transliterator *));
- /* test for NULL */
+ /* test for nullptr */
if (trans == 0) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
@@ -265,7 +265,7 @@ CompoundTransliterator::~CompoundTransliterator() {
freeTransliterators();
}
-void CompoundTransliterator::freeTransliterators(void) {
+void CompoundTransliterator::freeTransliterators() {
if (trans != 0) {
for (int32_t i=0; i<count; ++i) {
delete trans[i];
@@ -286,23 +286,23 @@ CompoundTransliterator& CompoundTransliterator::operator=(
Transliterator::operator=(t);
int32_t i = 0;
UBool failed = false;
- if (trans != NULL) {
+ if (trans != nullptr) {
for (i=0; i<count; ++i) {
delete trans[i];
trans[i] = 0;
}
}
if (t.count > count) {
- if (trans != NULL) {
+ if (trans != nullptr) {
uprv_free(trans);
}
trans = (Transliterator **)uprv_malloc(t.count * sizeof(Transliterator *));
}
count = t.count;
- if (trans != NULL) {
+ if (trans != nullptr) {
for (i=0; i<count; ++i) {
trans[i] = t.trans[i]->clone();
- if (trans[i] == NULL) {
+ if (trans[i] == nullptr) {
failed = true;
break;
}
@@ -314,7 +314,7 @@ CompoundTransliterator& CompoundTransliterator::operator=(
int32_t n;
for (n = i-1; n >= 0; n--) {
uprv_free(trans[n]);
- trans[n] = NULL;
+ trans[n] = nullptr;
}
}
numAnonymousRBTs = t.numAnonymousRBTs;
@@ -332,7 +332,7 @@ CompoundTransliterator* CompoundTransliterator::clone() const {
* Returns the number of transliterators in this chain.
* @return number of transliterators in this chain.
*/
-int32_t CompoundTransliterator::getCount(void) const {
+int32_t CompoundTransliterator::getCount() const {
return count;
}
@@ -348,14 +348,14 @@ const Transliterator& CompoundTransliterator::getTransliterator(int32_t index) c
void CompoundTransliterator::setTransliterators(Transliterator* const transliterators[],
int32_t transCount) {
Transliterator** a = (Transliterator **)uprv_malloc(transCount * sizeof(Transliterator *));
- if (a == NULL) {
+ if (a == nullptr) {
return;
}
int32_t i = 0;
UBool failed = false;
for (i=0; i<transCount; ++i) {
a[i] = transliterators[i]->clone();
- if (a[i] == NULL) {
+ if (a[i] == nullptr) {
failed = true;
break;
}
@@ -364,7 +364,7 @@ void CompoundTransliterator::setTransliterators(Transliterator* const transliter
int32_t n;
for (n = i-1; n >= 0; n--) {
uprv_free(a[n]);
- a[n] = NULL;
+ a[n] = nullptr;
}
return;
}
@@ -385,7 +385,7 @@ void CompoundTransliterator::adoptTransliterators(Transliterator* adoptedTransli
/**
* Append c to buf, unless buf is empty or buf already ends in c.
*/
-static void _smartAppend(UnicodeString& buf, UChar c) {
+static void _smartAppend(UnicodeString& buf, char16_t c) {
if (buf.length() != 0 &&
buf.charAt(buf.length() - 1) != c) {
buf.append(c);
@@ -401,7 +401,7 @@ UnicodeString& CompoundTransliterator::toRules(UnicodeString& rulesSource,
// compoundRBTIndex >= 0. For the transliterator at compoundRBTIndex,
// we do call toRules() recursively.
rulesSource.truncate(0);
- if (numAnonymousRBTs >= 1 && getFilter() != NULL) {
+ if (numAnonymousRBTs >= 1 && getFilter() != nullptr) {
// If we are a compound RBT and if we have a global
// filter, then emit it at the top.
UnicodeString pat;
@@ -599,7 +599,7 @@ void CompoundTransliterator::handleTransliterate(Replaceable& text, UTransPositi
* Sets the length of the longest context required by this transliterator.
* This is <em>preceding</em> context.
*/
-void CompoundTransliterator::computeMaximumContextLength(void) {
+void CompoundTransliterator::computeMaximumContextLength() {
int32_t max = 0;
for (int32_t i=0; i<count; ++i) {
int32_t len = trans[i]->getMaximumContextLength();
diff --git a/Build/source/libs/icu/icu-src/source/i18n/cpdtrans.h b/Build/source/libs/icu/icu-src/source/i18n/cpdtrans.h
index af60cb827e3..a27c617c95b 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/cpdtrans.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/cpdtrans.h
@@ -70,7 +70,7 @@ public:
* @param id compound ID
* @param dir either UTRANS_FORWARD or UTRANS_REVERSE
* @param adoptedFilter a global filter for this compound transliterator
- * or NULL
+ * or nullptr
*/
CompoundTransliterator(const UnicodeString& id,
UTransDirection dir,
@@ -80,7 +80,7 @@ public:
/**
* Constructs a new compound transliterator in the FORWARD
- * direction with a NULL filter.
+ * direction with a nullptr filter.
*/
CompoundTransliterator(const UnicodeString& id,
UParseError& parseError,
@@ -104,7 +104,7 @@ public:
* Returns the number of transliterators in this chain.
* @return number of transliterators in this chain.
*/
- virtual int32_t getCount(void) const;
+ virtual int32_t getCount() const;
/**
* Returns the transliterator at the given index in this chain.
@@ -171,7 +171,7 @@ public:
static UClassID U_EXPORT2 getStaticClassID();
/* @internal */
- static const UChar PASS_STRING[];
+ static const char16_t PASS_STRING[];
private:
@@ -220,9 +220,9 @@ private:
UnicodeString joinIDs(Transliterator* const transliterators[],
int32_t transCount);
- void freeTransliterators(void);
+ void freeTransliterators();
- void computeMaximumContextLength(void);
+ void computeMaximumContextLength();
};
U_NAMESPACE_END
diff --git a/Build/source/libs/icu/icu-src/source/i18n/csdetect.cpp b/Build/source/libs/icu/icu-src/source/i18n/csdetect.cpp
index 0b22d4dc2ae..16004f9f5d5 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/csdetect.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/csdetect.cpp
@@ -46,22 +46,22 @@ struct CSRecognizerInfo : public UMemory {
U_NAMESPACE_END
-static icu::CSRecognizerInfo **fCSRecognizers = NULL;
+static icu::CSRecognizerInfo **fCSRecognizers = nullptr;
static icu::UInitOnce gCSRecognizersInitOnce {};
static int32_t fCSRecognizers_size = 0;
U_CDECL_BEGIN
-static UBool U_CALLCONV csdet_cleanup(void)
+static UBool U_CALLCONV csdet_cleanup()
{
U_NAMESPACE_USE
- if (fCSRecognizers != NULL) {
+ if (fCSRecognizers != nullptr) {
for(int32_t r = 0; r < fCSRecognizers_size; r += 1) {
delete fCSRecognizers[r];
- fCSRecognizers[r] = NULL;
+ fCSRecognizers[r] = nullptr;
}
DELETE_ARRAY(fCSRecognizers);
- fCSRecognizers = NULL;
+ fCSRecognizers = nullptr;
fCSRecognizers_size = 0;
}
gCSRecognizersInitOnce.reset();
@@ -124,14 +124,14 @@ static void U_CALLCONV initRecognizers(UErrorCode &status) {
fCSRecognizers = NEW_ARRAY(CSRecognizerInfo *, rCount);
- if (fCSRecognizers == NULL) {
+ if (fCSRecognizers == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
}
else {
fCSRecognizers_size = rCount;
for (int32_t r = 0; r < rCount; r += 1) {
fCSRecognizers[r] = tempArray[r];
- if (fCSRecognizers[r] == NULL) {
+ if (fCSRecognizers[r] == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
}
}
@@ -148,9 +148,9 @@ void CharsetDetector::setRecognizers(UErrorCode &status)
}
CharsetDetector::CharsetDetector(UErrorCode &status)
- : textIn(new InputText(status)), resultArray(NULL),
+ : textIn(new InputText(status)), resultArray(nullptr),
resultCount(0), fStripTags(false), fFreshTextSet(false),
- fEnabledRecognizers(NULL)
+ fEnabledRecognizers(nullptr)
{
if (U_FAILURE(status)) {
return;
@@ -164,7 +164,7 @@ CharsetDetector::CharsetDetector(UErrorCode &status)
resultArray = (CharsetMatch **)uprv_malloc(sizeof(CharsetMatch *)*fCSRecognizers_size);
- if (resultArray == NULL) {
+ if (resultArray == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -172,7 +172,7 @@ CharsetDetector::CharsetDetector(UErrorCode &status)
for(int32_t i = 0; i < fCSRecognizers_size; i += 1) {
resultArray[i] = new CharsetMatch();
- if (resultArray[i] == NULL) {
+ if (resultArray[i] == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
break;
}
@@ -236,7 +236,7 @@ const CharsetMatch *CharsetDetector::detect(UErrorCode &status)
if(maxMatchesFound > 0) {
return resultArray[0];
} else {
- return NULL;
+ return nullptr;
}
}
@@ -245,7 +245,7 @@ const CharsetMatch * const *CharsetDetector::detectAll(int32_t &maxMatchesFound,
if(!textIn->isSet()) {
status = U_MISSING_RESOURCE_ERROR;// TODO: Need to set proper status code for input text not set
- return NULL;
+ return nullptr;
} else if (fFreshTextSet) {
CharsetRecognizer *csr;
int32_t i;
@@ -263,7 +263,7 @@ const CharsetMatch * const *CharsetDetector::detectAll(int32_t &maxMatchesFound,
}
if (resultCount > 1) {
- uprv_sortArray(resultArray, resultCount, sizeof resultArray[0], charsetMatchComparator, NULL, true, &status);
+ uprv_sortArray(resultArray, resultCount, sizeof resultArray[0], charsetMatchComparator, nullptr, true, &status);
}
fFreshTextSet = false;
}
@@ -272,7 +272,7 @@ const CharsetMatch * const *CharsetDetector::detectAll(int32_t &maxMatchesFound,
if (maxMatchesFound == 0) {
status = U_INVALID_CHAR_FOUND;
- return NULL;
+ return nullptr;
}
return resultArray;
@@ -300,10 +300,10 @@ void CharsetDetector::setDetectableCharset(const char *encoding, UBool enabled,
return;
}
- if (fEnabledRecognizers == NULL && !isDefaultVal) {
+ if (fEnabledRecognizers == nullptr && !isDefaultVal) {
// Create an array storing the non default setting
fEnabledRecognizers = NEW_ARRAY(UBool, fCSRecognizers_size);
- if (fEnabledRecognizers == NULL) {
+ if (fEnabledRecognizers == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -313,7 +313,7 @@ void CharsetDetector::setDetectableCharset(const char *encoding, UBool enabled,
}
}
- if (fEnabledRecognizers != NULL) {
+ if (fEnabledRecognizers != nullptr) {
fEnabledRecognizers[modIdx] = enabled;
}
}
@@ -342,7 +342,7 @@ typedef struct {
static void U_CALLCONV
enumClose(UEnumeration *en) {
- if(en->context != NULL) {
+ if(en->context != nullptr) {
DELETE_ARRAY(en->context);
}
@@ -359,7 +359,7 @@ enumCount(UEnumeration *en, UErrorCode *) {
// Otherwise, ucsdet_getDetectableCharsets - only enabled ones
int32_t count = 0;
UBool *enabledArray = ((Context *)en->context)->enabledRecognizers;
- if (enabledArray != NULL) {
+ if (enabledArray != nullptr) {
// custom set
for (int32_t i = 0; i < fCSRecognizers_size; i++) {
if (enabledArray[i]) {
@@ -379,7 +379,7 @@ enumCount(UEnumeration *en, UErrorCode *) {
static const char* U_CALLCONV
enumNext(UEnumeration *en, int32_t *resultLength, UErrorCode * /*status*/) {
- const char *currName = NULL;
+ const char *currName = nullptr;
if (((Context *)en->context)->currIndex < fCSRecognizers_size) {
if (((Context *)en->context)->all) {
@@ -389,9 +389,9 @@ enumNext(UEnumeration *en, int32_t *resultLength, UErrorCode * /*status*/) {
} else {
// ucsdet_getDetectableCharsets
UBool *enabledArray = ((Context *)en->context)->enabledRecognizers;
- if (enabledArray != NULL) {
+ if (enabledArray != nullptr) {
// custom set
- while (currName == NULL && ((Context *)en->context)->currIndex < fCSRecognizers_size) {
+ while (currName == nullptr && ((Context *)en->context)->currIndex < fCSRecognizers_size) {
if (enabledArray[((Context *)en->context)->currIndex]) {
currName = fCSRecognizers[((Context *)en->context)->currIndex]->recognizer->getName();
}
@@ -399,7 +399,7 @@ enumNext(UEnumeration *en, int32_t *resultLength, UErrorCode * /*status*/) {
}
} else {
// default set
- while (currName == NULL && ((Context *)en->context)->currIndex < fCSRecognizers_size) {
+ while (currName == nullptr && ((Context *)en->context)->currIndex < fCSRecognizers_size) {
if (fCSRecognizers[((Context *)en->context)->currIndex]->isDefaultEnabled) {
currName = fCSRecognizers[((Context *)en->context)->currIndex]->recognizer->getName();
}
@@ -409,8 +409,8 @@ enumNext(UEnumeration *en, int32_t *resultLength, UErrorCode * /*status*/) {
}
}
- if(resultLength != NULL) {
- *resultLength = currName == NULL ? 0 : (int32_t)uprv_strlen(currName);
+ if(resultLength != nullptr) {
+ *resultLength = currName == nullptr ? 0 : (int32_t)uprv_strlen(currName);
}
return currName;
@@ -423,8 +423,8 @@ enumReset(UEnumeration *en, UErrorCode *) {
}
static const UEnumeration gCSDetEnumeration = {
- NULL,
- NULL,
+ nullptr,
+ nullptr,
enumClose,
enumCount,
uenum_unextDefault,
@@ -447,13 +447,13 @@ UEnumeration * CharsetDetector::getAllDetectableCharsets(UErrorCode &status)
}
UEnumeration *en = NEW_ARRAY(UEnumeration, 1);
- if (en == NULL) {
+ if (en == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return 0;
}
memcpy(en, &gCSDetEnumeration, sizeof(UEnumeration));
en->context = (void*)NEW_ARRAY(Context, 1);
- if (en->context == NULL) {
+ if (en->context == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
DELETE_ARRAY(en);
return 0;
@@ -470,13 +470,13 @@ UEnumeration * CharsetDetector::getDetectableCharsets(UErrorCode &status) const
}
UEnumeration *en = NEW_ARRAY(UEnumeration, 1);
- if (en == NULL) {
+ if (en == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return 0;
}
memcpy(en, &gCSDetEnumeration, sizeof(UEnumeration));
en->context = (void*)NEW_ARRAY(Context, 1);
- if (en->context == NULL) {
+ if (en->context == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
DELETE_ARRAY(en);
return 0;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/csmatch.cpp b/Build/source/libs/icu/icu-src/source/i18n/csmatch.cpp
index 83bf5316656..4c5f73b31b0 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/csmatch.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/csmatch.cpp
@@ -21,7 +21,7 @@
U_NAMESPACE_BEGIN
CharsetMatch::CharsetMatch()
- : textIn(NULL), confidence(0), fCharsetName(NULL), fLang(NULL)
+ : textIn(nullptr), confidence(0), fCharsetName(nullptr), fLang(nullptr)
{
// nothing else to do.
}
@@ -33,11 +33,11 @@ void CharsetMatch::set(InputText *input, const CharsetRecognizer *cr, int32_t co
confidence = conf;
fCharsetName = csName;
fLang = lang;
- if (cr != NULL) {
- if (fCharsetName == NULL) {
+ if (cr != nullptr) {
+ if (fCharsetName == nullptr) {
fCharsetName = cr->getName();
}
- if (fLang == NULL) {
+ if (fLang == nullptr) {
fLang = cr->getLanguage();
}
}
@@ -58,7 +58,7 @@ int32_t CharsetMatch::getConfidence()const
return confidence;
}
-int32_t CharsetMatch::getUChars(UChar *buf, int32_t cap, UErrorCode *status) const
+int32_t CharsetMatch::getUChars(char16_t *buf, int32_t cap, UErrorCode *status) const
{
UConverter *conv = ucnv_open(getName(), status);
int32_t result = ucnv_toUChars(conv, buf, cap, (const char *) textIn->fRawInput, textIn->fRawLength, status);
diff --git a/Build/source/libs/icu/icu-src/source/i18n/csmatch.h b/Build/source/libs/icu/icu-src/source/i18n/csmatch.h
index fe379ceea7e..c31da818637 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/csmatch.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/csmatch.h
@@ -44,14 +44,14 @@ class CharsetMatch : public UMemory
/**
* fully set the state of this CharsetMatch.
* Called by the CharsetRecognizers to record match results.
- * Default (NULL) parameters for names will be filled by calling the
+ * Default (nullptr) parameters for names will be filled by calling the
* corresponding getters on the recognizer.
*/
void set(InputText *input,
const CharsetRecognizer *cr,
int32_t conf,
- const char *csName=NULL,
- const char *lang=NULL);
+ const char *csName=nullptr,
+ const char *lang=nullptr);
/**
* Return the name of the charset for this Match
@@ -62,7 +62,7 @@ class CharsetMatch : public UMemory
int32_t getConfidence()const;
- int32_t getUChars(UChar *buf, int32_t cap, UErrorCode *status) const;
+ int32_t getUChars(char16_t *buf, int32_t cap, UErrorCode *status) const;
};
U_NAMESPACE_END
diff --git a/Build/source/libs/icu/icu-src/source/i18n/csrucode.cpp b/Build/source/libs/icu/icu-src/source/i18n/csrucode.cpp
index e0a64aa949a..a6e6f83f0f3 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/csrucode.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/csrucode.cpp
@@ -37,7 +37,7 @@ const char *CharsetRecog_UTF_16_BE::getName() const
// NULs are a contra-indication, they will appear commonly if the actual encoding is UTF-32.
// NULs should be rare in actual text.
-static int32_t adjustConfidence(UChar codeUnit, int32_t confidence) {
+static int32_t adjustConfidence(char16_t codeUnit, int32_t confidence) {
if (codeUnit == 0) {
confidence -= 10;
} else if ((codeUnit >= 0x20 && codeUnit <= 0xff) || codeUnit == 0x0a) {
@@ -60,7 +60,7 @@ UBool CharsetRecog_UTF_16_BE::match(InputText* textIn, CharsetMatch *results) co
int32_t bytesToCheck = (length > 30) ? 30 : length;
for (int32_t charIndex=0; charIndex<bytesToCheck-1; charIndex+=2) {
- UChar codeUnit = (input[charIndex] << 8) | input[charIndex + 1];
+ char16_t codeUnit = (input[charIndex] << 8) | input[charIndex + 1];
if (charIndex == 0 && codeUnit == 0xFEFF) {
confidence = 100;
break;
@@ -95,7 +95,7 @@ UBool CharsetRecog_UTF_16_LE::match(InputText* textIn, CharsetMatch *results) co
int32_t bytesToCheck = (length > 30) ? 30 : length;
for (int32_t charIndex=0; charIndex<bytesToCheck-1; charIndex+=2) {
- UChar codeUnit = input[charIndex] | (input[charIndex + 1] << 8);
+ char16_t codeUnit = input[charIndex] | (input[charIndex + 1] << 8);
if (charIndex == 0 && codeUnit == 0xFEFF) {
confidence = 100; // UTF-16 BOM
if (length >= 4 && input[2] == 0 && input[3] == 0) {
diff --git a/Build/source/libs/icu/icu-src/source/i18n/curramt.cpp b/Build/source/libs/icu/icu-src/source/i18n/curramt.cpp
index 6fd2ea2fda5..43c3e9c151a 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/curramt.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/curramt.cpp
@@ -44,7 +44,11 @@ CurrencyAmount* CurrencyAmount::clone() const {
CurrencyAmount::~CurrencyAmount() {
}
-
+
+const CurrencyUnit& CurrencyAmount::getCurrency() const {
+ return static_cast<const CurrencyUnit&>(getUnit());
+}
+
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(CurrencyAmount)
U_NAMESPACE_END
diff --git a/Build/source/libs/icu/icu-src/source/i18n/currfmt.cpp b/Build/source/libs/icu/icu-src/source/i18n/currfmt.cpp
index 0ad0492ee7a..b7dfc09c545 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/currfmt.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/currfmt.cpp
@@ -50,7 +50,7 @@ void CurrencyFormat::parseObject(const UnicodeString& source,
ParsePosition& pos) const
{
CurrencyAmount* currAmt = getCurrencyFormatInternal().parseCurrency(source, pos);
- if (currAmt != NULL) {
+ if (currAmt != nullptr) {
result.adoptObject(currAmt);
}
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/currpinf.cpp b/Build/source/libs/icu/icu-src/source/i18n/currpinf.cpp
index 1a1c5802717..7c5adaaf7c3 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/currpinf.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/currpinf.cpp
@@ -29,7 +29,7 @@
U_NAMESPACE_BEGIN
-static const UChar gNumberPatternSeparator = 0x3B; // ;
+static const char16_t gNumberPatternSeparator = 0x3B; // ;
U_CDECL_BEGIN
@@ -50,11 +50,11 @@ U_CDECL_END
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(CurrencyPluralInfo)
-static const UChar gDefaultCurrencyPluralPattern[] = {'0', '.', '#', '#', ' ', 0xA4, 0xA4, 0xA4, 0};
-static const UChar gTripleCurrencySign[] = {0xA4, 0xA4, 0xA4, 0};
-static const UChar gPluralCountOther[] = {0x6F, 0x74, 0x68, 0x65, 0x72, 0};
-static const UChar gPart0[] = {0x7B, 0x30, 0x7D, 0};
-static const UChar gPart1[] = {0x7B, 0x31, 0x7D, 0};
+static const char16_t gDefaultCurrencyPluralPattern[] = {'0', '.', '#', '#', ' ', 0xA4, 0xA4, 0xA4, 0};
+static const char16_t gTripleCurrencySign[] = {0xA4, 0xA4, 0xA4, 0};
+static const char16_t gPluralCountOther[] = {0x6F, 0x74, 0x68, 0x65, 0x72, 0};
+static const char16_t gPart0[] = {0x7B, 0x30, 0x7D, 0};
+static const char16_t gPart1[] = {0x7B, 0x31, 0x7D, 0};
static const char gNumberElementsTag[]="NumberElements";
static const char gLatnTag[]="latn";
@@ -289,7 +289,7 @@ CurrencyPluralInfo::setupCurrencyPluralPattern(const Locale& loc, UErrorCode& st
ures_getByKeyWithFallback(numElements.getAlias(), ns->getName(), rb.getAlias(), &ec);
ures_getByKeyWithFallback(rb.getAlias(), gPatternsTag, rb.getAlias(), &ec);
int32_t ptnLen;
- const UChar* numberStylePattern = ures_getStringByKeyWithFallback(rb.getAlias(), gDecimalFormatTag, &ptnLen, &ec);
+ const char16_t* numberStylePattern = ures_getStringByKeyWithFallback(rb.getAlias(), gDecimalFormatTag, &ptnLen, &ec);
// Fall back to "latn" if num sys specific pattern isn't there.
if ( ec == U_MISSING_RESOURCE_ERROR && (uprv_strcmp(ns->getName(), gLatnTag) != 0)) {
ec = U_ZERO_ERROR;
@@ -298,7 +298,7 @@ CurrencyPluralInfo::setupCurrencyPluralPattern(const Locale& loc, UErrorCode& st
numberStylePattern = ures_getStringByKeyWithFallback(rb.getAlias(), gDecimalFormatTag, &ptnLen, &ec);
}
int32_t numberStylePatternLen = ptnLen;
- const UChar* negNumberStylePattern = nullptr;
+ const char16_t* negNumberStylePattern = nullptr;
int32_t negNumberStylePatternLen = 0;
// TODO: Java
// parse to check whether there is ";" separator in the numberStylePattern
@@ -335,7 +335,7 @@ CurrencyPluralInfo::setupCurrencyPluralPattern(const Locale& loc, UErrorCode& st
while (((pluralCount = keywords->next(nullptr, ec)) != nullptr) && U_SUCCESS(ec)) {
int32_t ptnLength;
UErrorCode err = U_ZERO_ERROR;
- const UChar* patternChars = ures_getStringByKeyWithFallback(currencyRes.getAlias(), pluralCount, &ptnLength, &err);
+ const char16_t* patternChars = ures_getStringByKeyWithFallback(currencyRes.getAlias(), pluralCount, &ptnLength, &err);
if (err == U_MEMORY_ALLOCATION_ERROR || patternChars == nullptr) {
ec = err;
break;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/currunit.cpp b/Build/source/libs/icu/icu-src/source/i18n/currunit.cpp
index 92bcf1268ac..98f28365cfc 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/currunit.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/currunit.cpp
@@ -48,7 +48,7 @@ CurrencyUnit::CurrencyUnit(ConstChar16Ptr _isoCode, UErrorCode& ec) {
isoCode[3] = 0;
}
if (useDefault) {
- uprv_memcpy(isoCode, kDefaultCurrency, sizeof(UChar) * 4);
+ uprv_memcpy(isoCode, kDefaultCurrency, sizeof(char16_t) * 4);
}
char simpleIsoCode[4];
u_UCharsToChars(isoCode, simpleIsoCode, 4);
diff --git a/Build/source/libs/icu/icu-src/source/i18n/dangical.cpp b/Build/source/libs/icu/icu-src/source/i18n/dangical.cpp
index 59cdc661dac..2b340ee4b45 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/dangical.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/dangical.cpp
@@ -23,7 +23,7 @@
#include "unicode/tzrule.h"
// --- The cache --
-static icu::TimeZone *gDangiCalendarZoneAstroCalc = NULL;
+static icu::TimeZone *gDangiCalendarZoneAstroCalc = nullptr;
static icu::UInitOnce gDangiCalendarInitOnce {};
/**
@@ -33,10 +33,10 @@ static icu::UInitOnce gDangiCalendarInitOnce {};
static const int32_t DANGI_EPOCH_YEAR = -2332; // Gregorian year
U_CDECL_BEGIN
-static UBool calendar_dangi_cleanup(void) {
+static UBool calendar_dangi_cleanup() {
if (gDangiCalendarZoneAstroCalc) {
delete gDangiCalendarZoneAstroCalc;
- gDangiCalendarZoneAstroCalc = NULL;
+ gDangiCalendarZoneAstroCalc = nullptr;
}
gDangiCalendarInitOnce.reset();
return true;
@@ -141,6 +141,23 @@ const TimeZone* DangiCalendar::getDangiCalZoneAstroCalc(UErrorCode &status) cons
return gDangiCalendarZoneAstroCalc;
}
+constexpr uint32_t kDangiRelatedYearDiff = -2333;
+
+int32_t DangiCalendar::getRelatedYear(UErrorCode &status) const
+{
+ int32_t year = get(UCAL_EXTENDED_YEAR, status);
+ if (U_FAILURE(status)) {
+ return 0;
+ }
+ return year + kDangiRelatedYearDiff;
+}
+
+void DangiCalendar::setRelatedYear(int32_t year)
+{
+ // set extended year
+ set(UCAL_EXTENDED_YEAR, year - kDangiRelatedYearDiff);
+}
+
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(DangiCalendar)
diff --git a/Build/source/libs/icu/icu-src/source/i18n/dangical.h b/Build/source/libs/icu/icu-src/source/i18n/dangical.h
index 9d0437264ef..3e5b0bb859b 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/dangical.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/dangical.h
@@ -72,6 +72,20 @@ class DangiCalendar : public ChineseCalendar {
// Internal methods & astronomical calculations
//----------------------------------------------------------------------
+ /**
+ * @return The related Gregorian year; will be obtained by modifying the value
+ * obtained by get from UCAL_EXTENDED_YEAR field
+ * @internal
+ */
+ virtual int32_t getRelatedYear(UErrorCode &status) const override;
+
+ /**
+ * @param year The related Gregorian year to set; will be modified as necessary then
+ * set in UCAL_EXTENDED_YEAR field
+ * @internal
+ */
+ virtual void setRelatedYear(int32_t year) override;
+
private:
const TimeZone* getDangiCalZoneAstroCalc(UErrorCode &status) const;
@@ -83,7 +97,7 @@ class DangiCalendar : public ChineseCalendar {
* same class ID. Objects of other classes have different class IDs.
* @internal
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
/**
* Return the class ID for this class. This is useful only for comparing to a return
@@ -96,7 +110,7 @@ class DangiCalendar : public ChineseCalendar {
* @return The class ID for all objects of this class.
* @internal
*/
- U_I18N_API static UClassID U_EXPORT2 getStaticClassID(void);
+ U_I18N_API static UClassID U_EXPORT2 getStaticClassID();
/**
* return the calendar type, "dangi".
diff --git a/Build/source/libs/icu/icu-src/source/i18n/datefmt.cpp b/Build/source/libs/icu/icu-src/source/i18n/datefmt.cpp
index 2638cbf14de..029634e3dcb 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/datefmt.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/datefmt.cpp
@@ -62,7 +62,7 @@ template<>
const DateFmtBestPattern *LocaleCacheKey<DateFmtBestPattern>::createObject(
const void * /*creationContext*/, UErrorCode &status) const {
status = U_UNSUPPORTED_ERROR;
- return NULL;
+ return nullptr;
}
class DateFmtBestPatternKey : public LocaleCacheKey<DateFmtBestPattern> {
@@ -101,7 +101,7 @@ public:
LocalPointer<DateTimePatternGenerator> dtpg(
DateTimePatternGenerator::createInstance(fLoc, status));
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
LocalPointer<DateFmtBestPattern> pattern(
@@ -109,7 +109,7 @@ public:
dtpg->getBestPattern(fSkeleton, status)),
status);
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
DateFmtBestPattern *result = pattern.orphan();
result->addRef();
@@ -149,12 +149,12 @@ DateFormat& DateFormat::operator=(const DateFormat& other)
if(other.fCalendar) {
fCalendar = other.fCalendar->clone();
} else {
- fCalendar = NULL;
+ fCalendar = nullptr;
}
if(other.fNumberFormat) {
fNumberFormat = other.fNumberFormat->clone();
} else {
- fNumberFormat = NULL;
+ fNumberFormat = nullptr;
}
fBoolFlags = other.fBoolFlags;
fCapitalizationContext = other.fCapitalizationContext;
@@ -175,18 +175,17 @@ DateFormat::~DateFormat()
bool
DateFormat::operator==(const Format& other) const
{
- // This protected comparison operator should only be called by subclasses
- // which have confirmed that the other object being compared against is
- // an instance of a sublcass of DateFormat. THIS IS IMPORTANT.
-
+ if (this == &other) {
+ return true;
+ }
+ if (!(Format::operator==(other))) {
+ return false;
+ }
// Format::operator== guarantees that this cast is safe
DateFormat* fmt = (DateFormat*)&other;
-
- return (this == fmt) ||
- (Format::operator==(other) &&
- fCalendar&&(fCalendar->isEquivalentTo(*fmt->fCalendar)) &&
+ return fCalendar&&(fCalendar->isEquivalentTo(*fmt->fCalendar)) &&
(fNumberFormat && *fNumberFormat == *fmt->fNumberFormat) &&
- (fCapitalizationContext == fmt->fCapitalizationContext) );
+ (fCapitalizationContext == fmt->fCapitalizationContext);
}
//----------------------------------------------------------------------
@@ -277,10 +276,10 @@ DateFormat::format(Calendar& /* unused cal */,
UnicodeString&
DateFormat::format(UDate date, UnicodeString& appendTo, FieldPosition& fieldPosition) const {
- if (fCalendar != NULL) {
+ if (fCalendar != nullptr) {
// Use a clone of our calendar instance
Calendar* calClone = fCalendar->clone();
- if (calClone != NULL) {
+ if (calClone != nullptr) {
UErrorCode ec = U_ZERO_ERROR;
calClone->setTime(date, ec);
if (U_SUCCESS(ec)) {
@@ -297,9 +296,9 @@ DateFormat::format(UDate date, UnicodeString& appendTo, FieldPosition& fieldPosi
UnicodeString&
DateFormat::format(UDate date, UnicodeString& appendTo, FieldPositionIterator* posIter,
UErrorCode& status) const {
- if (fCalendar != NULL) {
+ if (fCalendar != nullptr) {
Calendar* calClone = fCalendar->clone();
- if (calClone != NULL) {
+ if (calClone != nullptr) {
calClone->setTime(date, status);
if (U_SUCCESS(status)) {
format(*calClone, appendTo, posIter, status);
@@ -328,9 +327,9 @@ DateFormat::parse(const UnicodeString& text,
ParsePosition& pos) const
{
UDate d = 0; // Error return UDate is 0 (the epoch)
- if (fCalendar != NULL) {
+ if (fCalendar != nullptr) {
Calendar* calClone = fCalendar->clone();
- if (calClone != NULL) {
+ if (calClone != nullptr) {
int32_t start = pos.getIndex();
calClone->clear();
parse(text, *calClone, pos);
@@ -434,7 +433,7 @@ DateFormat::getBestPattern(
return UnicodeString();
}
DateFmtBestPatternKey key(locale, skeleton, status);
- const DateFmtBestPattern *patternPtr = NULL;
+ const DateFmtBestPattern *patternPtr = nullptr;
cache->get(key, patternPtr, status);
if (U_FAILURE(status)) {
return UnicodeString();
@@ -452,20 +451,20 @@ DateFormat::createInstanceForSkeleton(
UErrorCode &status) {
LocalPointer<Calendar> calendar(calendarToAdopt);
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
if (calendar.isNull()) {
status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
Locale localeWithCalendar = locale;
localeWithCalendar.setKeywordValue("calendar", calendar->getType(), status);
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
DateFormat *result = createInstanceForSkeleton(skeleton, localeWithCalendar, status);
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
result->adoptCalendar(calendar.orphan());
return result;
@@ -477,14 +476,14 @@ DateFormat::createInstanceForSkeleton(
const Locale &locale,
UErrorCode &status) {
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
LocalPointer<DateFormat> df(
new SimpleDateFormat(
getBestPattern(locale, skeleton, status),
locale, status),
status);
- return U_SUCCESS(status) ? df.orphan() : NULL;
+ return U_SUCCESS(status) ? df.orphan() : nullptr;
}
DateFormat* U_EXPORT2
@@ -568,7 +567,7 @@ void
DateFormat::setCalendar(const Calendar& newCalendar)
{
Calendar* newCalClone = newCalendar.clone();
- if (newCalClone != NULL) {
+ if (newCalClone != nullptr) {
adoptCalendar(newCalClone);
}
}
@@ -597,7 +596,7 @@ void
DateFormat::setNumberFormat(const NumberFormat& newNumberFormat)
{
NumberFormat* newNumFmtClone = newNumberFormat.clone();
- if (newNumFmtClone != NULL) {
+ if (newNumFmtClone != nullptr) {
adoptNumberFormat(newNumFmtClone);
}
}
@@ -615,7 +614,7 @@ DateFormat::getNumberFormat() const
void
DateFormat::adoptTimeZone(TimeZone* zone)
{
- if (fCalendar != NULL) {
+ if (fCalendar != nullptr) {
fCalendar->adoptTimeZone(zone);
}
}
@@ -624,7 +623,7 @@ DateFormat::adoptTimeZone(TimeZone* zone)
void
DateFormat::setTimeZone(const TimeZone& zone)
{
- if (fCalendar != NULL) {
+ if (fCalendar != nullptr) {
fCalendar->setTimeZone(zone);
}
}
@@ -634,7 +633,7 @@ DateFormat::setTimeZone(const TimeZone& zone)
const TimeZone&
DateFormat::getTimeZone() const
{
- if (fCalendar != NULL) {
+ if (fCalendar != nullptr) {
return fCalendar->getTimeZone();
}
// If calendar doesn't exists, create default timezone.
@@ -647,7 +646,7 @@ DateFormat::getTimeZone() const
void
DateFormat::setLenient(UBool lenient)
{
- if (fCalendar != NULL) {
+ if (fCalendar != nullptr) {
fCalendar->setLenient(lenient);
}
UErrorCode status = U_ZERO_ERROR;
@@ -661,7 +660,7 @@ UBool
DateFormat::isLenient() const
{
UBool lenient = true;
- if (fCalendar != NULL) {
+ if (fCalendar != nullptr) {
lenient = fCalendar->isLenient();
}
UErrorCode status = U_ZERO_ERROR;
@@ -673,7 +672,7 @@ DateFormat::isLenient() const
void
DateFormat::setCalendarLenient(UBool lenient)
{
- if (fCalendar != NULL) {
+ if (fCalendar != nullptr) {
fCalendar->setLenient(lenient);
}
}
@@ -683,7 +682,7 @@ DateFormat::setCalendarLenient(UBool lenient)
UBool
DateFormat::isCalendarLenient() const
{
- if (fCalendar != NULL) {
+ if (fCalendar != nullptr) {
return fCalendar->isLenient();
}
// fCalendar is rarely null
diff --git a/Build/source/libs/icu/icu-src/source/i18n/dayperiodrules.cpp b/Build/source/libs/icu/icu-src/source/i18n/dayperiodrules.cpp
index 3ef822842de..294390cce2b 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/dayperiodrules.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/dayperiodrules.cpp
@@ -14,10 +14,12 @@
#include "dayperiodrules.h"
#include "unicode/ures.h"
+#include "bytesinkutil.h"
#include "charstr.h"
#include "cstring.h"
#include "ucln_in.h"
#include "uhash.h"
+#include "ulocimp.h"
#include "umutex.h"
#include "uresimp.h"
@@ -27,12 +29,12 @@ U_NAMESPACE_BEGIN
namespace {
struct DayPeriodRulesData : public UMemory {
- DayPeriodRulesData() : localeToRuleSetNumMap(NULL), rules(NULL), maxRuleSetNum(0) {}
+ DayPeriodRulesData() : localeToRuleSetNumMap(nullptr), rules(nullptr), maxRuleSetNum(0) {}
UHashtable *localeToRuleSetNumMap;
DayPeriodRules *rules;
int32_t maxRuleSetNum;
-} *data = NULL;
+} *data = nullptr;
enum CutoffType {
CUTOFF_TYPE_UNKNOWN = -1,
@@ -67,7 +69,7 @@ struct DayPeriodRulesDataSink : public ResourceSink {
} else if (uprv_strcmp(key, "rules") == 0) {
// Allocate one more than needed to skip [0]. See comment in parseSetNum().
data->rules = new DayPeriodRules[data->maxRuleSetNum + 1];
- if (data->rules == NULL) {
+ if (data->rules == nullptr) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -307,7 +309,7 @@ U_CFUNC UBool U_CALLCONV dayPeriodRulesCleanup() {
delete[] data->rules;
uhash_close(data->localeToRuleSetNumMap);
delete data;
- data = NULL;
+ data = nullptr;
return true;
}
@@ -319,8 +321,8 @@ void U_CALLCONV DayPeriodRules::load(UErrorCode &errorCode) {
}
data = new DayPeriodRulesData();
- data->localeToRuleSetNumMap = uhash_open(uhash_hashChars, uhash_compareChars, NULL, &errorCode);
- LocalUResourceBundlePointer rb_dayPeriods(ures_openDirect(NULL, "dayPeriods", &errorCode));
+ data->localeToRuleSetNumMap = uhash_open(uhash_hashChars, uhash_compareChars, nullptr, &errorCode);
+ LocalUResourceBundlePointer rb_dayPeriods(ures_openDirect(nullptr, "dayPeriods", &errorCode));
// Get the largest rule set number (so we allocate enough objects).
DayPeriodRulesCountSink countSink;
@@ -337,12 +339,11 @@ const DayPeriodRules *DayPeriodRules::getInstance(const Locale &locale, UErrorCo
umtx_initOnce(initOnce, DayPeriodRules::load, errorCode);
// If the entire day period rules data doesn't conform to spec (even if the part we want
- // does), return NULL.
- if(U_FAILURE(errorCode)) { return NULL; }
+ // does), return nullptr.
+ if(U_FAILURE(errorCode)) { return nullptr; }
const char *localeCode = locale.getBaseName();
char name[ULOC_FULLNAME_CAPACITY];
- char parentName[ULOC_FULLNAME_CAPACITY];
if (uprv_strlen(localeCode) < ULOC_FULLNAME_CAPACITY) {
uprv_strcpy(name, localeCode);
@@ -353,20 +354,21 @@ const DayPeriodRules *DayPeriodRules::getInstance(const Locale &locale, UErrorCo
}
} else {
errorCode = U_BUFFER_OVERFLOW_ERROR;
- return NULL;
+ return nullptr;
}
int32_t ruleSetNum = 0; // NB there is no rule set 0 and 0 is returned upon lookup failure.
while (*name != '\0') {
ruleSetNum = uhash_geti(data->localeToRuleSetNumMap, name);
if (ruleSetNum == 0) {
- // name and parentName can't be the same pointer, so fill in parent then copy to child.
- uloc_getParent(name, parentName, ULOC_FULLNAME_CAPACITY, &errorCode);
- if (*parentName == '\0') {
+ CharString parent;
+ CharStringByteSink sink(&parent);
+ ulocimp_getParent(name, sink, &errorCode);
+ if (parent.isEmpty()) {
// Saves a lookup in the hash table.
break;
}
- uprv_strcpy(name, parentName);
+ parent.extract(name, UPRV_LENGTHOF(name), errorCode);
} else {
break;
}
@@ -375,7 +377,7 @@ const DayPeriodRules *DayPeriodRules::getInstance(const Locale &locale, UErrorCo
if (ruleSetNum <= 0 || data->rules[ruleSetNum].getDayPeriodForHour(0) == DAYPERIOD_UNKNOWN) {
// If day period for hour 0 is UNKNOWN then day period for all hours are UNKNOWN.
// Data doesn't exist even with fallback.
- return NULL;
+ return nullptr;
} else {
return &data->rules[ruleSetNum];
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/dcfmtsym.cpp b/Build/source/libs/icu/icu-src/source/i18n/dcfmtsym.cpp
index 5d06c189fbe..ac1f777399a 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/dcfmtsym.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/dcfmtsym.cpp
@@ -59,38 +59,38 @@ static const char gLatn[] = "latn";
static const char gSymbols[] = "symbols";
static const char gNumberElementsLatnSymbols[] = "NumberElements/latn/symbols";
-static const UChar INTL_CURRENCY_SYMBOL_STR[] = {0xa4, 0xa4, 0};
+static const char16_t INTL_CURRENCY_SYMBOL_STR[] = {0xa4, 0xa4, 0};
// List of field names to be loaded from the data files.
// These are parallel with the enum ENumberFormatSymbol in unicode/dcfmtsym.h.
static const char *gNumberElementKeys[DecimalFormatSymbols::kFormatSymbolCount] = {
"decimal",
"group",
- NULL, /* #11897: the <list> symbol is NOT the pattern separator symbol */
+ nullptr, /* #11897: the <list> symbol is NOT the pattern separator symbol */
"percentSign",
- NULL, /* Native zero digit is deprecated from CLDR - get it from the numbering system */
- NULL, /* Pattern digit character is deprecated from CLDR - use # by default always */
+ nullptr, /* Native zero digit is deprecated from CLDR - get it from the numbering system */
+ nullptr, /* Pattern digit character is deprecated from CLDR - use # by default always */
"minusSign",
"plusSign",
- NULL, /* currency symbol - Wait until we know the currency before loading from CLDR */
- NULL, /* intl currency symbol - Wait until we know the currency before loading from CLDR */
+ nullptr, /* currency symbol - Wait until we know the currency before loading from CLDR */
+ nullptr, /* intl currency symbol - Wait until we know the currency before loading from CLDR */
"currencyDecimal",
"exponential",
"perMille",
- NULL, /* Escape padding character - not in CLDR */
+ nullptr, /* Escape padding character - not in CLDR */
"infinity",
"nan",
- NULL, /* Significant digit symbol - not in CLDR */
+ nullptr, /* Significant digit symbol - not in CLDR */
"currencyGroup",
- NULL, /* one digit - get it from the numbering system */
- NULL, /* two digit - get it from the numbering system */
- NULL, /* three digit - get it from the numbering system */
- NULL, /* four digit - get it from the numbering system */
- NULL, /* five digit - get it from the numbering system */
- NULL, /* six digit - get it from the numbering system */
- NULL, /* seven digit - get it from the numbering system */
- NULL, /* eight digit - get it from the numbering system */
- NULL, /* nine digit - get it from the numbering system */
+ nullptr, /* one digit - get it from the numbering system */
+ nullptr, /* two digit - get it from the numbering system */
+ nullptr, /* three digit - get it from the numbering system */
+ nullptr, /* four digit - get it from the numbering system */
+ nullptr, /* five digit - get it from the numbering system */
+ nullptr, /* six digit - get it from the numbering system */
+ nullptr, /* seven digit - get it from the numbering system */
+ nullptr, /* eight digit - get it from the numbering system */
+ nullptr, /* nine digit - get it from the numbering system */
"superscriptingExponent", /* Multiplication (x) symbol for exponents */
"approximatelySign" /* Approximately sign symbol */
};
@@ -99,7 +99,7 @@ static const char *gNumberElementKeys[DecimalFormatSymbols::kFormatSymbolCount]
// Initializes this with the decimal format symbols in the default locale.
DecimalFormatSymbols::DecimalFormatSymbols(UErrorCode& status)
- : UObject(), locale(), currPattern(NULL) {
+ : UObject(), locale() {
initialize(locale, status, true);
}
@@ -107,26 +107,26 @@ DecimalFormatSymbols::DecimalFormatSymbols(UErrorCode& status)
// Initializes this with the decimal format symbols in the desired locale.
DecimalFormatSymbols::DecimalFormatSymbols(const Locale& loc, UErrorCode& status)
- : UObject(), locale(loc), currPattern(NULL) {
+ : UObject(), locale(loc) {
initialize(locale, status);
}
DecimalFormatSymbols::DecimalFormatSymbols(const Locale& loc, const NumberingSystem& ns, UErrorCode& status)
- : UObject(), locale(loc), currPattern(NULL) {
+ : UObject(), locale(loc) {
initialize(locale, status, false, &ns);
}
DecimalFormatSymbols::DecimalFormatSymbols()
- : UObject(), locale(Locale::getRoot()), currPattern(NULL) {
+ : UObject(), locale(Locale::getRoot()) {
*validLocale = *actualLocale = 0;
initialize();
}
DecimalFormatSymbols*
DecimalFormatSymbols::createWithLastResortData(UErrorCode& status) {
- if (U_FAILURE(status)) { return NULL; }
+ if (U_FAILURE(status)) { return nullptr; }
DecimalFormatSymbols* sym = new DecimalFormatSymbols();
- if (sym == NULL) {
+ if (sym == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
}
return sym;
@@ -169,6 +169,7 @@ DecimalFormatSymbols::operator=(const DecimalFormatSymbols& rhs)
fIsCustomIntlCurrencySymbol = rhs.fIsCustomIntlCurrencySymbol;
fCodePointZero = rhs.fCodePointZero;
currPattern = rhs.currPattern;
+ uprv_strcpy(nsName, rhs.nsName);
}
return *this;
}
@@ -237,7 +238,7 @@ struct DecFmtSymDataSink : public ResourceSink {
if (U_FAILURE(errorCode)) { return; }
for (int32_t j = 0; symbolsTable.getKeyAndValue(j, key, value); ++j) {
for (int32_t i=0; i<DecimalFormatSymbols::kFormatSymbolCount; i++) {
- if (gNumberElementKeys[i] != NULL && uprv_strcmp(key, gNumberElementKeys[i]) == 0) {
+ if (gNumberElementKeys[i] != nullptr && uprv_strcmp(key, gNumberElementKeys[i]) == 0) {
if (!seenSymbol[i]) {
seenSymbol[i] = true;
dfs.setSymbol(
@@ -329,11 +330,13 @@ struct CurrencySpacingSink : public ResourceSink {
// both beforeCurrency and afterCurrency were found in CLDR.
static const char* defaults[] = { "[:letter:]", "[:digit:]", " " };
if (!hasBeforeCurrency || !hasAfterCurrency) {
- for (UBool beforeCurrency = 0; beforeCurrency <= true; beforeCurrency++) {
- for (int32_t pattern = 0; pattern < UNUM_CURRENCY_SPACING_COUNT; pattern++) {
- dfs.setPatternForCurrencySpacing((UCurrencySpacing)pattern,
- beforeCurrency, UnicodeString(defaults[pattern], -1, US_INV));
- }
+ for (int32_t pattern = 0; pattern < UNUM_CURRENCY_SPACING_COUNT; pattern++) {
+ dfs.setPatternForCurrencySpacing((UCurrencySpacing)pattern,
+ false, UnicodeString(defaults[pattern], -1, US_INV));
+ }
+ for (int32_t pattern = 0; pattern < UNUM_CURRENCY_SPACING_COUNT; pattern++) {
+ dfs.setPatternForCurrencySpacing((UCurrencySpacing)pattern,
+ true, UnicodeString(defaults[pattern], -1, US_INV));
}
}
}
@@ -381,12 +384,13 @@ DecimalFormatSymbols::initialize(const Locale& loc, UErrorCode& status,
} else {
nsName = gLatn;
}
+ uprv_strcpy(this->nsName, nsName);
// Open resource bundles
const char* locStr = loc.getName();
- LocalUResourceBundlePointer resource(ures_open(NULL, locStr, &status));
+ LocalUResourceBundlePointer resource(ures_open(nullptr, locStr, &status));
LocalUResourceBundlePointer numberElementsRes(
- ures_getByKeyWithFallback(resource.getAlias(), gNumberElements, NULL, &status));
+ ures_getByKeyWithFallback(resource.getAlias(), gNumberElements, nullptr, &status));
if (U_FAILURE(status)) {
if ( useLastResortData ) {
@@ -457,7 +461,7 @@ DecimalFormatSymbols::initialize(const Locale& loc, UErrorCode& status,
// Get the default currency from the currency API.
UErrorCode internalStatus = U_ZERO_ERROR; // don't propagate failures out
- UChar curriso[4];
+ char16_t curriso[4];
UnicodeString tempStr;
int32_t currisoLength = ucurr_forLocale(locStr, curriso, UPRV_LENGTHOF(curriso), &internalStatus);
if (U_SUCCESS(internalStatus) && currisoLength == 3) {
@@ -481,44 +485,44 @@ DecimalFormatSymbols::initialize() {
* cannot initialize a static array with class constructors.
* markus 2000may25
*/
- fSymbols[kDecimalSeparatorSymbol] = (UChar)0x2e; // '.' decimal separator
+ fSymbols[kDecimalSeparatorSymbol] = (char16_t)0x2e; // '.' decimal separator
fSymbols[kGroupingSeparatorSymbol].remove(); // group (thousands) separator
- fSymbols[kPatternSeparatorSymbol] = (UChar)0x3b; // ';' pattern separator
- fSymbols[kPercentSymbol] = (UChar)0x25; // '%' percent sign
- fSymbols[kZeroDigitSymbol] = (UChar)0x30; // '0' native 0 digit
- fSymbols[kOneDigitSymbol] = (UChar)0x31; // '1' native 1 digit
- fSymbols[kTwoDigitSymbol] = (UChar)0x32; // '2' native 2 digit
- fSymbols[kThreeDigitSymbol] = (UChar)0x33; // '3' native 3 digit
- fSymbols[kFourDigitSymbol] = (UChar)0x34; // '4' native 4 digit
- fSymbols[kFiveDigitSymbol] = (UChar)0x35; // '5' native 5 digit
- fSymbols[kSixDigitSymbol] = (UChar)0x36; // '6' native 6 digit
- fSymbols[kSevenDigitSymbol] = (UChar)0x37; // '7' native 7 digit
- fSymbols[kEightDigitSymbol] = (UChar)0x38; // '8' native 8 digit
- fSymbols[kNineDigitSymbol] = (UChar)0x39; // '9' native 9 digit
- fSymbols[kDigitSymbol] = (UChar)0x23; // '#' pattern digit
- fSymbols[kPlusSignSymbol] = (UChar)0x002b; // '+' plus sign
- fSymbols[kMinusSignSymbol] = (UChar)0x2d; // '-' minus sign
- fSymbols[kCurrencySymbol] = (UChar)0xa4; // 'OX' currency symbol
+ fSymbols[kPatternSeparatorSymbol] = (char16_t)0x3b; // ';' pattern separator
+ fSymbols[kPercentSymbol] = (char16_t)0x25; // '%' percent sign
+ fSymbols[kZeroDigitSymbol] = (char16_t)0x30; // '0' native 0 digit
+ fSymbols[kOneDigitSymbol] = (char16_t)0x31; // '1' native 1 digit
+ fSymbols[kTwoDigitSymbol] = (char16_t)0x32; // '2' native 2 digit
+ fSymbols[kThreeDigitSymbol] = (char16_t)0x33; // '3' native 3 digit
+ fSymbols[kFourDigitSymbol] = (char16_t)0x34; // '4' native 4 digit
+ fSymbols[kFiveDigitSymbol] = (char16_t)0x35; // '5' native 5 digit
+ fSymbols[kSixDigitSymbol] = (char16_t)0x36; // '6' native 6 digit
+ fSymbols[kSevenDigitSymbol] = (char16_t)0x37; // '7' native 7 digit
+ fSymbols[kEightDigitSymbol] = (char16_t)0x38; // '8' native 8 digit
+ fSymbols[kNineDigitSymbol] = (char16_t)0x39; // '9' native 9 digit
+ fSymbols[kDigitSymbol] = (char16_t)0x23; // '#' pattern digit
+ fSymbols[kPlusSignSymbol] = (char16_t)0x002b; // '+' plus sign
+ fSymbols[kMinusSignSymbol] = (char16_t)0x2d; // '-' minus sign
+ fSymbols[kCurrencySymbol] = (char16_t)0xa4; // 'OX' currency symbol
fSymbols[kIntlCurrencySymbol].setTo(true, INTL_CURRENCY_SYMBOL_STR, 2);
- fSymbols[kMonetarySeparatorSymbol] = (UChar)0x2e; // '.' monetary decimal separator
- fSymbols[kExponentialSymbol] = (UChar)0x45; // 'E' exponential
- fSymbols[kPerMillSymbol] = (UChar)0x2030; // '%o' per mill
- fSymbols[kPadEscapeSymbol] = (UChar)0x2a; // '*' pad escape symbol
- fSymbols[kInfinitySymbol] = (UChar)0x221e; // 'oo' infinite
- fSymbols[kNaNSymbol] = (UChar)0xfffd; // SUB NaN
- fSymbols[kSignificantDigitSymbol] = (UChar)0x0040; // '@' significant digit
+ fSymbols[kMonetarySeparatorSymbol] = (char16_t)0x2e; // '.' monetary decimal separator
+ fSymbols[kExponentialSymbol] = (char16_t)0x45; // 'E' exponential
+ fSymbols[kPerMillSymbol] = (char16_t)0x2030; // '%o' per mill
+ fSymbols[kPadEscapeSymbol] = (char16_t)0x2a; // '*' pad escape symbol
+ fSymbols[kInfinitySymbol] = (char16_t)0x221e; // 'oo' infinite
+ fSymbols[kNaNSymbol] = (char16_t)0xfffd; // SUB NaN
+ fSymbols[kSignificantDigitSymbol] = (char16_t)0x0040; // '@' significant digit
fSymbols[kMonetaryGroupingSeparatorSymbol].remove(); //
- fSymbols[kExponentMultiplicationSymbol] = (UChar)0xd7; // 'x' multiplication symbol for exponents
+ fSymbols[kExponentMultiplicationSymbol] = (char16_t)0xd7; // 'x' multiplication symbol for exponents
fSymbols[kApproximatelySignSymbol] = u'~'; // '~' approximately sign
fIsCustomCurrencySymbol = false;
fIsCustomIntlCurrencySymbol = false;
fCodePointZero = 0x30;
U_ASSERT(fCodePointZero == fSymbols[kZeroDigitSymbol].char32At(0));
currPattern = nullptr;
-
+ nsName[0] = 0;
}
-void DecimalFormatSymbols::setCurrency(const UChar* currency, UErrorCode& status) {
+void DecimalFormatSymbols::setCurrency(const char16_t* currency, UErrorCode& status) {
// TODO: If this method is made public:
// - Adopt ICU4J behavior of not allowing currency to be null.
// - Also verify that the length of currency is 3.
@@ -541,7 +545,7 @@ void DecimalFormatSymbols::setCurrency(const UChar* currency, UErrorCode& status
UErrorCode localStatus = U_ZERO_ERROR;
LocalUResourceBundlePointer rbTop(ures_open(U_ICUDATA_CURR, locale.getName(), &localStatus));
LocalUResourceBundlePointer rb(
- ures_getByKeyWithFallback(rbTop.getAlias(), "Currencies", NULL, &localStatus));
+ ures_getByKeyWithFallback(rbTop.getAlias(), "Currencies", nullptr, &localStatus));
ures_getByKeyWithFallback(rb.getAlias(), cc, rb.getAlias(), &localStatus);
if(U_SUCCESS(localStatus) && ures_getSize(rb.getAlias())>2) { // the length is 3 if more data is present
ures_getByIndex(rb.getAlias(), 2, rb.getAlias(), &localStatus);
diff --git a/Build/source/libs/icu/icu-src/source/i18n/decContext.cpp b/Build/source/libs/icu/icu-src/source/i18n/decContext.cpp
index 421d65b43f9..bdc5f22fe5f 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/decContext.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/decContext.cpp
@@ -219,7 +219,7 @@ U_CAPI decContext * U_EXPORT2 uprv_decContextSetStatus(decContext *context, uIn
/* is raised if appropriate. */
/* */
/* returns the context structure, unless the string is equal to */
-/* DEC_Condition_MU or is not recognized. In these cases NULL is */
+/* DEC_Condition_MU or is not recognized. In these cases nullptr is */
/* returned. */
/* ------------------------------------------------------------------ */
U_CAPI decContext * U_EXPORT2 uprv_decContextSetStatusFromString(decContext *context,
@@ -256,7 +256,7 @@ U_CAPI decContext * U_EXPORT2 uprv_decContextSetStatusFromString(decContext *co
return uprv_decContextSetStatus(context, DEC_Underflow);
if (strcmp(string, DEC_Condition_ZE)==0)
return context;
- return NULL; /* Multiple status, or unknown */
+ return nullptr; /* Multiple status, or unknown */
} /* decContextSetStatusFromString */
/* ------------------------------------------------------------------ */
@@ -270,7 +270,7 @@ U_CAPI decContext * U_EXPORT2 uprv_decContextSetStatusFromString(decContext *co
/* raised. */
/* */
/* returns the context structure, unless the string is equal to */
-/* DEC_Condition_MU or is not recognized. In these cases NULL is */
+/* DEC_Condition_MU or is not recognized. In these cases nullptr is */
/* returned. */
/* ------------------------------------------------------------------ */
U_CAPI decContext * U_EXPORT2 uprv_decContextSetStatusFromStringQuiet(decContext *context,
@@ -307,7 +307,7 @@ U_CAPI decContext * U_EXPORT2 uprv_decContextSetStatusFromStringQuiet(decContex
return uprv_decContextSetStatusQuiet(context, DEC_Underflow);
if (strcmp(string, DEC_Condition_ZE)==0)
return context;
- return NULL; /* Multiple status, or unknown */
+ return nullptr; /* Multiple status, or unknown */
} /* decContextSetStatusFromStringQuiet */
/* ------------------------------------------------------------------ */
diff --git a/Build/source/libs/icu/icu-src/source/i18n/decNumber.cpp b/Build/source/libs/icu/icu-src/source/i18n/decNumber.cpp
index 71477d8202c..42da36dc4be 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/decNumber.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/decNumber.cpp
@@ -95,11 +95,11 @@
/* conversions are available in separate modules. */
/* */
/* 7. Normally, input operands are assumed to be valid. Set DECCHECK */
-/* to 1 for extended operand checking (including NULL operands). */
-/* Results are undefined if a badly-formed structure (or a NULL */
+/* to 1 for extended operand checking (including nullptr operands). */
+/* Results are undefined if a badly-formed structure (or a nullptr */
/* pointer to a structure) is provided, though with DECCHECK */
/* enabled the operator routines are protected against exceptions. */
-/* (Except if the result pointer is NULL, which is unrecoverable.) */
+/* (Except if the result pointer is nullptr, which is unrecoverable.) */
/* */
/* However, the routines will never cause exceptions if they are */
/* given well-formed operands, even if the value of the operands */
@@ -516,11 +516,11 @@ U_CAPI decNumber * U_EXPORT2 uprv_decNumberFromString(decNumber *dn, const char
Unit *res; /* where result will be built */
Unit resbuff[SD2U(DECBUFFER+9)];/* local buffer in case need temporary */
/* [+9 allows for ln() constants] */
- Unit *allocres=NULL; /* -> allocated result, iff allocated */
+ Unit *allocres=nullptr; /* -> allocated result, iff allocated */
Int d=0; /* count of digits found in decimal part */
- const char *dotchar=NULL; /* where dot was found */
+ const char *dotchar=nullptr; /* where dot was found */
const char *cfirst=chars; /* -> first character of decimal part */
- const char *last=NULL; /* -> last digit of decimal part */
+ const char *last=nullptr; /* -> last digit of decimal part */
const char *c; /* work */
Unit *up; /* .. */
#if DECDPUN>1
@@ -541,7 +541,7 @@ U_CAPI decNumber * U_EXPORT2 uprv_decNumberFromString(decNumber *dn, const char
d++; /* count of real digits */
continue; /* still in decimal part */
}
- if (*c=='.' && dotchar==NULL) { /* first '.' */
+ if (*c=='.' && dotchar==nullptr) { /* first '.' */
dotchar=c; /* record offset into decimal part */
if (c==cfirst) cfirst++; /* first digit must follow */
continue;}
@@ -558,7 +558,7 @@ U_CAPI decNumber * U_EXPORT2 uprv_decNumberFromString(decNumber *dn, const char
break;
} /* c */
- if (last==NULL) { /* no digits yet */
+ if (last==nullptr) { /* no digits yet */
status=DEC_Conversion_syntax;/* assume the worst */
if (*c=='\0') break; /* and no more to come... */
#if DECSUBSET
@@ -566,7 +566,7 @@ U_CAPI decNumber * U_EXPORT2 uprv_decNumberFromString(decNumber *dn, const char
if (!set->extended) break; /* hopeless */
#endif
/* Infinities and NaNs are possible, here */
- if (dotchar!=NULL) break; /* .. unless had a dot */
+ if (dotchar!=nullptr) break; /* .. unless had a dot */
uprv_decNumberZero(dn); /* be optimistic */
if (decBiStr(c, "infinity", "INFINITY")
|| decBiStr(c, "inf", "INF")) {
@@ -609,7 +609,7 @@ U_CAPI decNumber * U_EXPORT2 uprv_decNumberFromString(decNumber *dn, const char
/* good; drop through to convert the integer to coefficient */
status=0; /* syntax is OK */
bits=dn->bits; /* for copy-back */
- } /* last==NULL */
+ } /* last==nullptr */
else if (*c!='\0') { /* more to process... */
/* had some digits; exponent is only valid sequence now */
@@ -667,7 +667,7 @@ U_CAPI decNumber * U_EXPORT2 uprv_decNumberFromString(decNumber *dn, const char
} /* at least one leading 0 */
/* Handle decimal point... */
- if (dotchar!=NULL && dotchar<last) /* non-trailing '.' found? */
+ if (dotchar!=nullptr && dotchar<last) /* non-trailing '.' found? */
exponent -= static_cast<int32_t>(last-dotchar); /* adjust exponent */
/* [we can now ignore the .] */
@@ -679,7 +679,7 @@ U_CAPI decNumber * U_EXPORT2 uprv_decNumberFromString(decNumber *dn, const char
res=resbuff; /* assume use local buffer */
if (needbytes>(Int)sizeof(resbuff)) { /* too big for local */
allocres=(Unit *)malloc(needbytes);
- if (allocres==NULL) {status|=DEC_Insufficient_storage; break;}
+ if (allocres==nullptr) {status|=DEC_Insufficient_storage; break;}
res=allocres;
}
}
@@ -736,7 +736,7 @@ U_CAPI decNumber * U_EXPORT2 uprv_decNumberFromString(decNumber *dn, const char
/* decNumberShow(dn); */
} while(0); /* [for break] */
- if (allocres!=NULL) free(allocres); /* drop any storage used */
+ if (allocres!=nullptr) free(allocres); /* drop any storage used */
if (status!=0) decStatus(dn, status, set);
return dn;
} /* decNumberFromString */
@@ -953,9 +953,9 @@ U_CAPI decNumber * U_EXPORT2 uprv_decNumberCompareTotalMag(decNumber *res, const
uInt status=0; /* accumulator */
uInt needbytes; /* for space calculations */
decNumber bufa[D2N(DECBUFFER+1)];/* +1 in case DECBUFFER=0 */
- decNumber *allocbufa=NULL; /* -> allocated bufa, iff allocated */
+ decNumber *allocbufa=nullptr; /* -> allocated bufa, iff allocated */
decNumber bufb[D2N(DECBUFFER+1)];
- decNumber *allocbufb=NULL; /* -> allocated bufb, iff allocated */
+ decNumber *allocbufb=nullptr; /* -> allocated bufb, iff allocated */
decNumber *a, *b; /* temporary pointers */
#if DECCHECK
@@ -969,7 +969,7 @@ U_CAPI decNumber * U_EXPORT2 uprv_decNumberCompareTotalMag(decNumber *res, const
needbytes=sizeof(decNumber)+(D2U(lhs->digits)-1)*sizeof(Unit);
if (needbytes>sizeof(bufa)) { /* need malloc space */
allocbufa=(decNumber *)malloc(needbytes);
- if (allocbufa==NULL) { /* hopeless -- abandon */
+ if (allocbufa==nullptr) { /* hopeless -- abandon */
status|=DEC_Insufficient_storage;
break;}
a=allocbufa; /* use the allocated space */
@@ -983,7 +983,7 @@ U_CAPI decNumber * U_EXPORT2 uprv_decNumberCompareTotalMag(decNumber *res, const
needbytes=sizeof(decNumber)+(D2U(rhs->digits)-1)*sizeof(Unit);
if (needbytes>sizeof(bufb)) { /* need malloc space */
allocbufb=(decNumber *)malloc(needbytes);
- if (allocbufb==NULL) { /* hopeless -- abandon */
+ if (allocbufb==nullptr) { /* hopeless -- abandon */
status|=DEC_Insufficient_storage;
break;}
b=allocbufb; /* use the allocated space */
@@ -995,8 +995,8 @@ U_CAPI decNumber * U_EXPORT2 uprv_decNumberCompareTotalMag(decNumber *res, const
decCompareOp(res, lhs, rhs, set, COMPTOTAL, &status);
} while(0); /* end protected */
- if (allocbufa!=NULL) free(allocbufa); /* drop any storage used */
- if (allocbufb!=NULL) free(allocbufb); /* .. */
+ if (allocbufa!=nullptr) free(allocbufa); /* drop any storage used */
+ if (allocbufb!=nullptr) free(allocbufb); /* .. */
if (status!=0) decStatus(res, status, set);
return res;
} /* decNumberCompareTotalMag */
@@ -1073,7 +1073,7 @@ U_CAPI decNumber * U_EXPORT2 uprv_decNumberExp(decNumber *res, const decNumber *
decContext *set) {
uInt status=0; /* accumulator */
#if DECSUBSET
- decNumber *allocrhs=NULL; /* non-NULL if rounded rhs allocated */
+ decNumber *allocrhs=nullptr; /* non-nullptr if rounded rhs allocated */
#endif
#if DECCHECK
@@ -1090,7 +1090,7 @@ U_CAPI decNumber * U_EXPORT2 uprv_decNumberExp(decNumber *res, const decNumber *
/* reduce operand and set lostDigits status, as needed */
if (rhs->digits>set->digits) {
allocrhs=decRoundOperand(rhs, set, &status);
- if (allocrhs==NULL) break;
+ if (allocrhs==nullptr) break;
rhs=allocrhs;
}
}
@@ -1099,7 +1099,7 @@ U_CAPI decNumber * U_EXPORT2 uprv_decNumberExp(decNumber *res, const decNumber *
} while(0); /* end protected */
#if DECSUBSET
- if (allocrhs !=NULL) free(allocrhs); /* drop any storage used */
+ if (allocrhs !=nullptr) free(allocrhs); /* drop any storage used */
#endif
/* apply significant status */
if (status!=0) decStatus(res, status, set);
@@ -1132,7 +1132,7 @@ U_CAPI decNumber * U_EXPORT2 uprv_decNumberFMA(decNumber *res, const decNumber *
decContext dcmul; /* context for the multiplication */
uInt needbytes; /* for space calculations */
decNumber bufa[D2N(DECBUFFER*2+1)];
- decNumber *allocbufa=NULL; /* -> allocated bufa, iff allocated */
+ decNumber *allocbufa=nullptr; /* -> allocated bufa, iff allocated */
decNumber *acc; /* accumulator pointer */
decNumber dzero; /* work */
@@ -1162,7 +1162,7 @@ U_CAPI decNumber * U_EXPORT2 uprv_decNumberFMA(decNumber *res, const decNumber *
needbytes=sizeof(decNumber)+(D2U(dcmul.digits)-1)*sizeof(Unit);
if (needbytes>sizeof(bufa)) { /* need malloc space */
allocbufa=(decNumber *)malloc(needbytes);
- if (allocbufa==NULL) { /* hopeless -- abandon */
+ if (allocbufa==nullptr) { /* hopeless -- abandon */
status|=DEC_Insufficient_storage;
break;}
acc=allocbufa; /* use the allocated space */
@@ -1194,7 +1194,7 @@ U_CAPI decNumber * U_EXPORT2 uprv_decNumberFMA(decNumber *res, const decNumber *
decAddOp(res, acc, fhs, set, 0, &status);
} while(0); /* end protected */
- if (allocbufa!=NULL) free(allocbufa); /* drop any storage used */
+ if (allocbufa!=nullptr) free(allocbufa); /* drop any storage used */
if (status!=0) decStatus(res, status, set);
#if DECCHECK
decCheckInexact(res, set);
@@ -1293,7 +1293,7 @@ U_CAPI decNumber * U_EXPORT2 uprv_decNumberLn(decNumber *res, const decNumber *r
decContext *set) {
uInt status=0; /* accumulator */
#if DECSUBSET
- decNumber *allocrhs=NULL; /* non-NULL if rounded rhs allocated */
+ decNumber *allocrhs=nullptr; /* non-nullptr if rounded rhs allocated */
#endif
#if DECCHECK
@@ -1308,7 +1308,7 @@ U_CAPI decNumber * U_EXPORT2 uprv_decNumberLn(decNumber *res, const decNumber *r
/* reduce operand and set lostDigits status, as needed */
if (rhs->digits>set->digits) {
allocrhs=decRoundOperand(rhs, set, &status);
- if (allocrhs==NULL) break;
+ if (allocrhs==nullptr) break;
rhs=allocrhs;
}
/* special check in subset for rhs=0 */
@@ -1321,7 +1321,7 @@ U_CAPI decNumber * U_EXPORT2 uprv_decNumberLn(decNumber *res, const decNumber *r
} while(0); /* end protected */
#if DECSUBSET
- if (allocrhs !=NULL) free(allocrhs); /* drop any storage used */
+ if (allocrhs !=nullptr) free(allocrhs); /* drop any storage used */
#endif
/* apply significant status */
if (status!=0) decStatus(res, status, set);
@@ -1364,7 +1364,7 @@ U_CAPI decNumber * U_EXPORT2 uprv_decNumberLogB(decNumber *res, const decNumber
#endif
/* NaNs as usual; Infinities return +Infinity; 0->oops */
- if (decNumberIsNaN(rhs)) decNaNs(res, rhs, NULL, set, &status);
+ if (decNumberIsNaN(rhs)) decNaNs(res, rhs, nullptr, set, &status);
else if (decNumberIsInfinite(rhs)) uprv_decNumberCopyAbs(res, rhs);
else if (decNumberIsZero(rhs)) {
uprv_decNumberZero(res); /* prepare for Infinity */
@@ -1425,15 +1425,15 @@ U_CAPI decNumber * U_EXPORT2 uprv_decNumberLog10(decNumber *res, const decNumber
/* buffers for a and b working decimals */
/* (adjustment calculator, same size) */
decNumber bufa[D2N(DECBUFFER+2)];
- decNumber *allocbufa=NULL; /* -> allocated bufa, iff allocated */
+ decNumber *allocbufa=nullptr; /* -> allocated bufa, iff allocated */
decNumber *a=bufa; /* temporary a */
decNumber bufb[D2N(DECBUFFER+2)];
- decNumber *allocbufb=NULL; /* -> allocated bufb, iff allocated */
+ decNumber *allocbufb=nullptr; /* -> allocated bufb, iff allocated */
decNumber *b=bufb; /* temporary b */
decNumber bufw[D2N(10)]; /* working 2-10 digit number */
decNumber *w=bufw; /* .. */
#if DECSUBSET
- decNumber *allocrhs=NULL; /* non-NULL if rounded rhs allocated */
+ decNumber *allocrhs=nullptr; /* non-nullptr if rounded rhs allocated */
#endif
decContext aset; /* working context */
@@ -1450,7 +1450,7 @@ U_CAPI decNumber * U_EXPORT2 uprv_decNumberLog10(decNumber *res, const decNumber
/* reduce operand and set lostDigits status, as needed */
if (rhs->digits>set->digits) {
allocrhs=decRoundOperand(rhs, set, &status);
- if (allocrhs==NULL) break;
+ if (allocrhs==nullptr) break;
rhs=allocrhs;
}
/* special check in subset for rhs=0 */
@@ -1495,7 +1495,7 @@ U_CAPI decNumber * U_EXPORT2 uprv_decNumberLog10(decNumber *res, const decNumber
needbytes=sizeof(decNumber)+(D2U(p)-1)*sizeof(Unit);
if (needbytes>sizeof(bufa)) { /* need malloc space */
allocbufa=(decNumber *)malloc(needbytes);
- if (allocbufa==NULL) { /* hopeless -- abandon */
+ if (allocbufa==nullptr) { /* hopeless -- abandon */
status|=DEC_Insufficient_storage;
break;}
a=allocbufa; /* use the allocated space */
@@ -1518,7 +1518,7 @@ U_CAPI decNumber * U_EXPORT2 uprv_decNumberLog10(decNumber *res, const decNumber
needbytes=sizeof(decNumber)+(D2U(p)-1)*sizeof(Unit);
if (needbytes>sizeof(bufb)) { /* need malloc space */
allocbufb=(decNumber *)malloc(needbytes);
- if (allocbufb==NULL) { /* hopeless -- abandon */
+ if (allocbufb==nullptr) { /* hopeless -- abandon */
status|=DEC_Insufficient_storage;
break;}
b=allocbufb; /* use the allocated space */
@@ -1538,10 +1538,10 @@ U_CAPI decNumber * U_EXPORT2 uprv_decNumberLog10(decNumber *res, const decNumber
decDivideOp(res, a, b, &aset, DIVIDE, &status); /* into result */
} while(0); /* [for break] */
- if (allocbufa!=NULL) free(allocbufa); /* drop any storage used */
- if (allocbufb!=NULL) free(allocbufb); /* .. */
+ if (allocbufa!=nullptr) free(allocbufa); /* drop any storage used */
+ if (allocbufb!=nullptr) free(allocbufb); /* .. */
#if DECSUBSET
- if (allocrhs !=NULL) free(allocrhs); /* .. */
+ if (allocrhs !=nullptr) free(allocrhs); /* .. */
#endif
/* apply significant status */
if (status!=0) decStatus(res, status, set);
@@ -1974,11 +1974,11 @@ U_CAPI decNumber * U_EXPORT2 uprv_decNumberMultiply(decNumber *res, const decNum
U_CAPI decNumber * U_EXPORT2 uprv_decNumberPower(decNumber *res, const decNumber *lhs,
const decNumber *rhs, decContext *set) {
#if DECSUBSET
- decNumber *alloclhs=NULL; /* non-NULL if rounded lhs allocated */
- decNumber *allocrhs=NULL; /* .., rhs */
+ decNumber *alloclhs=nullptr; /* non-nullptr if rounded lhs allocated */
+ decNumber *allocrhs=nullptr; /* .., rhs */
#endif
- decNumber *allocdac=NULL; /* -> allocated acc buffer, iff used */
- decNumber *allocinv=NULL; /* -> allocated 1/x buffer, iff used */
+ decNumber *allocdac=nullptr; /* -> allocated acc buffer, iff used */
+ decNumber *allocinv=nullptr; /* -> allocated 1/x buffer, iff used */
Int reqdigits=set->digits; /* requested DIGITS */
Int n; /* rhs in binary */
Flag rhsint=0; /* 1 if rhs is an integer */
@@ -2010,12 +2010,12 @@ U_CAPI decNumber * U_EXPORT2 uprv_decNumberPower(decNumber *res, const decNumber
if (!set->extended) { /* reduce operands and set status, as needed */
if (lhs->digits>reqdigits) {
alloclhs=decRoundOperand(lhs, set, &status);
- if (alloclhs==NULL) break;
+ if (alloclhs==nullptr) break;
lhs=alloclhs;
}
if (rhs->digits>reqdigits) {
allocrhs=decRoundOperand(rhs, set, &status);
- if (allocrhs==NULL) break;
+ if (allocrhs==nullptr) break;
rhs=allocrhs;
}
}
@@ -2166,7 +2166,7 @@ U_CAPI decNumber * U_EXPORT2 uprv_decNumberPower(decNumber *res, const decNumber
/* [needbytes also used below if 1/lhs needed] */
if (needbytes>sizeof(dacbuff)) {
allocdac=(decNumber *)malloc(needbytes);
- if (allocdac==NULL) { /* hopeless -- abandon */
+ if (allocdac==nullptr) { /* hopeless -- abandon */
status|=DEC_Insufficient_storage;
break;}
dac=allocdac; /* use the allocated space */
@@ -2213,7 +2213,7 @@ U_CAPI decNumber * U_EXPORT2 uprv_decNumberPower(decNumber *res, const decNumber
/* now locate or allocate space for the inverted lhs */
if (needbytes>sizeof(invbuff)) {
allocinv=(decNumber *)malloc(needbytes);
- if (allocinv==NULL) { /* hopeless -- abandon */
+ if (allocinv==nullptr) { /* hopeless -- abandon */
status|=DEC_Insufficient_storage;
break;}
inv=allocinv; /* use the allocated space */
@@ -2285,11 +2285,11 @@ U_CAPI decNumber * U_EXPORT2 uprv_decNumberPower(decNumber *res, const decNumber
#endif
} while(0); /* end protected */
- if (allocdac!=NULL) free(allocdac); /* drop any storage used */
- if (allocinv!=NULL) free(allocinv); /* .. */
+ if (allocdac!=nullptr) free(allocdac); /* drop any storage used */
+ if (allocinv!=nullptr) free(allocinv); /* .. */
#if DECSUBSET
- if (alloclhs!=NULL) free(alloclhs); /* .. */
- if (allocrhs!=NULL) free(allocrhs); /* .. */
+ if (alloclhs!=nullptr) free(alloclhs); /* .. */
+ if (allocrhs!=nullptr) free(allocrhs); /* .. */
#endif
if (status!=0) decStatus(res, status, set);
#if DECCHECK
@@ -2344,7 +2344,7 @@ U_CAPI decNumber * U_EXPORT2 uprv_decNumberNormalize(decNumber *res, const decNu
U_CAPI decNumber * U_EXPORT2 uprv_decNumberReduce(decNumber *res, const decNumber *rhs,
decContext *set) {
#if DECSUBSET
- decNumber *allocrhs=NULL; /* non-NULL if rounded rhs allocated */
+ decNumber *allocrhs=nullptr; /* non-nullptr if rounded rhs allocated */
#endif
uInt status=0; /* as usual */
Int residue=0; /* as usual */
@@ -2360,7 +2360,7 @@ U_CAPI decNumber * U_EXPORT2 uprv_decNumberReduce(decNumber *res, const decNumbe
/* reduce operand and set lostDigits status, as needed */
if (rhs->digits>set->digits) {
allocrhs=decRoundOperand(rhs, set, &status);
- if (allocrhs==NULL) break;
+ if (allocrhs==nullptr) break;
rhs=allocrhs;
}
}
@@ -2369,7 +2369,7 @@ U_CAPI decNumber * U_EXPORT2 uprv_decNumberReduce(decNumber *res, const decNumbe
/* Infinities copy through; NaNs need usual treatment */
if (decNumberIsNaN(rhs)) {
- decNaNs(res, rhs, NULL, set, &status);
+ decNaNs(res, rhs, nullptr, set, &status);
break;
}
@@ -2381,7 +2381,7 @@ U_CAPI decNumber * U_EXPORT2 uprv_decNumberReduce(decNumber *res, const decNumbe
} while(0); /* end protected */
#if DECSUBSET
- if (allocrhs !=NULL) free(allocrhs); /* .. */
+ if (allocrhs !=nullptr) free(allocrhs); /* .. */
#endif
if (status!=0) decStatus(res, status, set);/* then report status */
return res;
@@ -2845,7 +2845,7 @@ U_CAPI decNumber * U_EXPORT2 uprv_decNumberSquareRoot(decNumber *res, const decN
Int dropped; /* .. */
#if DECSUBSET
- decNumber *allocrhs=NULL; /* non-NULL if rounded rhs allocated */
+ decNumber *allocrhs=nullptr; /* non-nullptr if rounded rhs allocated */
#endif
/* buffer for f [needs +1 in case DECBUFFER 0] */
decNumber buff[D2N(DECBUFFER+1)];
@@ -2853,9 +2853,9 @@ U_CAPI decNumber * U_EXPORT2 uprv_decNumberSquareRoot(decNumber *res, const decN
decNumber bufa[D2N(DECBUFFER+2)];
/* buffer for temporary, b [must be same size as a] */
decNumber bufb[D2N(DECBUFFER+2)];
- decNumber *allocbuff=NULL; /* -> allocated buff, iff allocated */
- decNumber *allocbufa=NULL; /* -> allocated bufa, iff allocated */
- decNumber *allocbufb=NULL; /* -> allocated bufb, iff allocated */
+ decNumber *allocbuff=nullptr; /* -> allocated buff, iff allocated */
+ decNumber *allocbufa=nullptr; /* -> allocated bufa, iff allocated */
+ decNumber *allocbufb=nullptr; /* -> allocated bufb, iff allocated */
decNumber *f=buff; /* reduced fraction */
decNumber *a=bufa; /* approximation to result */
decNumber *b=bufb; /* intermediate result */
@@ -2873,7 +2873,7 @@ U_CAPI decNumber * U_EXPORT2 uprv_decNumberSquareRoot(decNumber *res, const decN
/* reduce operand and set lostDigits status, as needed */
if (rhs->digits>set->digits) {
allocrhs=decRoundOperand(rhs, set, &status);
- if (allocrhs==NULL) break;
+ if (allocrhs==nullptr) break;
/* [Note: 'f' allocation below could reuse this buffer if */
/* used, but as this is rare they are kept separate for clarity.] */
rhs=allocrhs;
@@ -2888,7 +2888,7 @@ U_CAPI decNumber * U_EXPORT2 uprv_decNumberSquareRoot(decNumber *res, const decN
if (decNumberIsNegative(rhs)) status|=DEC_Invalid_operation;
else uprv_decNumberCopy(res, rhs); /* +Infinity */
}
- else decNaNs(res, rhs, NULL, set, &status); /* a NaN */
+ else decNaNs(res, rhs, nullptr, set, &status); /* a NaN */
break;
}
@@ -2926,7 +2926,7 @@ U_CAPI decNumber * U_EXPORT2 uprv_decNumberSquareRoot(decNumber *res, const decN
needbytes=sizeof(decNumber)+(D2U(rhs->digits)-1)*sizeof(Unit);
if (needbytes>(Int)sizeof(buff)) {
allocbuff=(decNumber *)malloc(needbytes);
- if (allocbuff==NULL) { /* hopeless -- abandon */
+ if (allocbuff==nullptr) { /* hopeless -- abandon */
status|=DEC_Insufficient_storage;
break;}
f=allocbuff; /* use the allocated space */
@@ -2936,7 +2936,7 @@ U_CAPI decNumber * U_EXPORT2 uprv_decNumberSquareRoot(decNumber *res, const decN
if (needbytes>(Int)sizeof(bufa)) { /* [same applies to b] */
allocbufa=(decNumber *)malloc(needbytes);
allocbufb=(decNumber *)malloc(needbytes);
- if (allocbufa==NULL || allocbufb==NULL) { /* hopeless */
+ if (allocbufa==nullptr || allocbufb==nullptr) { /* hopeless */
status|=DEC_Insufficient_storage;
break;}
a=allocbufa; /* use the allocated spaces */
@@ -3147,11 +3147,11 @@ U_CAPI decNumber * U_EXPORT2 uprv_decNumberSquareRoot(decNumber *res, const decN
uprv_decNumberCopy(res, a); /* a is now the result */
} while(0); /* end protected */
- if (allocbuff!=NULL) free(allocbuff); /* drop any storage used */
- if (allocbufa!=NULL) free(allocbufa); /* .. */
- if (allocbufb!=NULL) free(allocbufb); /* .. */
+ if (allocbuff!=nullptr) free(allocbuff); /* drop any storage used */
+ if (allocbufa!=nullptr) free(allocbufa); /* .. */
+ if (allocbufb!=nullptr) free(allocbufb); /* .. */
#if DECSUBSET
- if (allocrhs !=NULL) free(allocrhs); /* .. */
+ if (allocrhs !=nullptr) free(allocrhs); /* .. */
#endif
if (status!=0) decStatus(res, status, set);/* then report status */
#if DECCHECK
@@ -3221,7 +3221,7 @@ U_CAPI decNumber * U_EXPORT2 uprv_decNumberToIntegralExact(decNumber *res, const
/* handle infinities and NaNs */
if (SPECIALARG) {
if (decNumberIsInfinite(rhs)) uprv_decNumberCopy(res, rhs); /* an Infinity */
- else decNaNs(res, rhs, NULL, set, &status); /* a NaN */
+ else decNaNs(res, rhs, nullptr, set, &status); /* a NaN */
}
else { /* finite */
/* have a finite number; no error possible (res must be big enough) */
@@ -3385,7 +3385,7 @@ const char *uprv_decNumberClassToString(enum decClass eclass) {
U_CAPI decNumber * U_EXPORT2 uprv_decNumberCopy(decNumber *dest, const decNumber *src) {
#if DECCHECK
- if (src==NULL) return uprv_decNumberZero(dest);
+ if (src==nullptr) return uprv_decNumberZero(dest);
#endif
if (dest==src) return dest; /* no copy required */
@@ -3605,7 +3605,7 @@ U_CAPI decNumber * U_EXPORT2 uprv_decNumberTrim(decNumber *dn) {
/* */
/* No error is possible. */
/* ------------------------------------------------------------------ */
-const char * uprv_decNumberVersion(void) {
+const char * uprv_decNumberVersion() {
return DECVERSION;
} /* decNumberVersion */
@@ -3837,8 +3837,8 @@ static decNumber * decAddOp(decNumber *res, const decNumber *lhs,
const decNumber *rhs, decContext *set,
uByte negate, uInt *status) {
#if DECSUBSET
- decNumber *alloclhs=NULL; /* non-NULL if rounded lhs allocated */
- decNumber *allocrhs=NULL; /* .., rhs */
+ decNumber *alloclhs=nullptr; /* non-nullptr if rounded lhs allocated */
+ decNumber *allocrhs=nullptr; /* .., rhs */
#endif
Int rhsshift; /* working shift (in Units) */
Int maxdigits; /* longest logical length */
@@ -3850,7 +3850,7 @@ static decNumber * decAddOp(decNumber *res, const decNumber *lhs,
Unit accbuff[SD2U(DECBUFFER*2+20)]; /* local buffer [*2+20 reduces many */
/* allocations when called from */
/* other operations, notable exp] */
- Unit *allocacc=NULL; /* -> allocated acc buffer, iff allocated */
+ Unit *allocacc=nullptr; /* -> allocated acc buffer, iff allocated */
Int reqdigits=set->digits; /* local copy; requested DIGITS */
Int padding; /* work */
@@ -3864,12 +3864,12 @@ static decNumber * decAddOp(decNumber *res, const decNumber *lhs,
/* reduce operands and set lostDigits status, as needed */
if (lhs->digits>reqdigits) {
alloclhs=decRoundOperand(lhs, set, status);
- if (alloclhs==NULL) break;
+ if (alloclhs==nullptr) break;
lhs=alloclhs;
}
if (rhs->digits>reqdigits) {
allocrhs=decRoundOperand(rhs, set, status);
- if (allocrhs==NULL) break;
+ if (allocrhs==nullptr) break;
rhs=allocrhs;
}
}
@@ -4075,7 +4075,7 @@ static decNumber * decAddOp(decNumber *res, const decNumber *lhs,
if (need*sizeof(Unit)>sizeof(accbuff)) {
/* printf("malloc add %ld %ld\n", need, sizeof(accbuff)); */
allocacc=(Unit *)malloc(need*sizeof(Unit));
- if (allocacc==NULL) { /* hopeless -- abandon */
+ if (allocacc==nullptr) { /* hopeless -- abandon */
*status|=DEC_Insufficient_storage;
break;}
acc=allocacc;
@@ -4171,10 +4171,10 @@ static decNumber * decAddOp(decNumber *res, const decNumber *lhs,
}
} while(0); /* end protected */
- if (allocacc!=NULL) free(allocacc); /* drop any storage used */
+ if (allocacc!=nullptr) free(allocacc); /* drop any storage used */
#if DECSUBSET
- if (allocrhs!=NULL) free(allocrhs); /* .. */
- if (alloclhs!=NULL) free(alloclhs); /* .. */
+ if (allocrhs!=nullptr) free(allocrhs); /* .. */
+ if (alloclhs!=nullptr) free(alloclhs); /* .. */
#endif
return res;
} /* decAddOp */
@@ -4253,12 +4253,12 @@ static decNumber * decDivideOp(decNumber *res,
const decNumber *lhs, const decNumber *rhs,
decContext *set, Flag op, uInt *status) {
#if DECSUBSET
- decNumber *alloclhs=NULL; /* non-NULL if rounded lhs allocated */
- decNumber *allocrhs=NULL; /* .., rhs */
+ decNumber *alloclhs=nullptr; /* non-nullptr if rounded lhs allocated */
+ decNumber *allocrhs=nullptr; /* .., rhs */
#endif
Unit accbuff[SD2U(DECBUFFER+DECDPUN+10)]; /* local buffer */
Unit *acc=accbuff; /* -> accumulator array for result */
- Unit *allocacc=NULL; /* -> allocated buffer, iff allocated */
+ Unit *allocacc=nullptr; /* -> allocated buffer, iff allocated */
Unit *accnext; /* -> where next digit will go */
Int acclength; /* length of acc needed [Units] */
Int accunits; /* count of units accumulated */
@@ -4266,7 +4266,7 @@ static decNumber * decDivideOp(decNumber *res,
Unit varbuff[SD2U(DECBUFFER*2+DECDPUN)]; /* buffer for var1 */
Unit *var1=varbuff; /* -> var1 array for long subtraction */
- Unit *varalloc=NULL; /* -> allocated buffer, iff used */
+ Unit *varalloc=nullptr; /* -> allocated buffer, iff used */
Unit *msu1; /* -> msu of var1 */
const Unit *var2; /* -> var2 array */
@@ -4303,12 +4303,12 @@ static decNumber * decDivideOp(decNumber *res,
/* reduce operands and set lostDigits status, as needed */
if (lhs->digits>reqdigits) {
alloclhs=decRoundOperand(lhs, set, status);
- if (alloclhs==NULL) break;
+ if (alloclhs==nullptr) break;
lhs=alloclhs;
}
if (rhs->digits>reqdigits) {
allocrhs=decRoundOperand(rhs, set, status);
- if (allocrhs==NULL) break;
+ if (allocrhs==nullptr) break;
rhs=allocrhs;
}
}
@@ -4440,7 +4440,7 @@ static decNumber * decDivideOp(decNumber *res,
if (acclength*sizeof(Unit)>sizeof(accbuff)) {
/* printf("malloc dvacc %ld units\n", acclength); */
allocacc=(Unit *)malloc(acclength*sizeof(Unit));
- if (allocacc==NULL) { /* hopeless -- abandon */
+ if (allocacc==nullptr) { /* hopeless -- abandon */
*status|=DEC_Insufficient_storage;
break;}
acc=allocacc; /* use the allocated space */
@@ -4465,7 +4465,7 @@ static decNumber * decDivideOp(decNumber *res,
if ((var1units+1)*sizeof(Unit)>sizeof(varbuff)) {
/* printf("malloc dvvar %ld units\n", var1units+1); */
varalloc=(Unit *)malloc((var1units+1)*sizeof(Unit));
- if (varalloc==NULL) { /* hopeless -- abandon */
+ if (varalloc==nullptr) { /* hopeless -- abandon */
*status|=DEC_Insufficient_storage;
break;}
var1=varalloc; /* use the allocated space */
@@ -4823,11 +4823,11 @@ static decNumber * decDivideOp(decNumber *res,
#endif
} while(0); /* end protected */
- if (varalloc!=NULL) free(varalloc); /* drop any storage used */
- if (allocacc!=NULL) free(allocacc); /* .. */
+ if (varalloc!=nullptr) free(varalloc); /* drop any storage used */
+ if (allocacc!=nullptr) free(allocacc); /* .. */
#if DECSUBSET
- if (allocrhs!=NULL) free(allocrhs); /* .. */
- if (alloclhs!=NULL) free(alloclhs); /* .. */
+ if (allocrhs!=nullptr) free(allocrhs); /* .. */
+ if (alloclhs!=nullptr) free(alloclhs); /* .. */
#endif
return res;
} /* decDivideOp */
@@ -4878,7 +4878,7 @@ static decNumber * decMultiplyOp(decNumber *res, const decNumber *lhs,
uByte bits; /* result sign */
Unit *acc; /* -> accumulator Unit array */
Int needbytes; /* size calculator */
- void *allocacc=NULL; /* -> allocated accumulator, iff allocated */
+ void *allocacc=nullptr; /* -> allocated accumulator, iff allocated */
Unit accbuff[SD2U(DECBUFFER*4+1)]; /* buffer (+1 for DECBUFFER==0, */
/* *4 for calls from other operations) */
const Unit *mer, *mermsup; /* work */
@@ -4902,10 +4902,10 @@ static decNumber * decMultiplyOp(decNumber *res, const decNumber *lhs,
/* lazy carry evaluation */
uInt zlhibuff[(DECBUFFER*2+1)/8+1]; /* buffer (+1 for DECBUFFER==0) */
uInt *zlhi=zlhibuff; /* -> lhs array */
- uInt *alloclhi=NULL; /* -> allocated buffer, iff allocated */
+ uInt *alloclhi=nullptr; /* -> allocated buffer, iff allocated */
uInt zrhibuff[(DECBUFFER*2+1)/8+1]; /* buffer (+1 for DECBUFFER==0) */
uInt *zrhi=zrhibuff; /* -> rhs array */
- uInt *allocrhi=NULL; /* -> allocated buffer, iff allocated */
+ uInt *allocrhi=nullptr; /* -> allocated buffer, iff allocated */
uLong zaccbuff[(DECBUFFER*2+1)/4+2]; /* buffer (+1 for DECBUFFER==0) */
/* [allocacc is shared for both paths, as only one will run] */
uLong *zacc=zaccbuff; /* -> accumulator array for exact result */
@@ -4926,8 +4926,8 @@ static decNumber * decMultiplyOp(decNumber *res, const decNumber *lhs,
#endif
#if DECSUBSET
- decNumber *alloclhs=NULL; /* -> allocated buffer, iff allocated */
- decNumber *allocrhs=NULL; /* -> allocated buffer, iff allocated */
+ decNumber *alloclhs=nullptr; /* -> allocated buffer, iff allocated */
+ decNumber *allocrhs=nullptr; /* -> allocated buffer, iff allocated */
#endif
#if DECCHECK
@@ -4967,12 +4967,12 @@ static decNumber * decMultiplyOp(decNumber *res, const decNumber *lhs,
/* reduce operands and set lostDigits status, as needed */
if (lhs->digits>set->digits) {
alloclhs=decRoundOperand(lhs, set, status);
- if (alloclhs==NULL) break;
+ if (alloclhs==nullptr) break;
lhs=alloclhs;
}
if (rhs->digits>set->digits) {
allocrhs=decRoundOperand(rhs, set, status);
- if (allocrhs==NULL) break;
+ if (allocrhs==nullptr) break;
rhs=allocrhs;
}
}
@@ -5018,7 +5018,7 @@ static decNumber * decMultiplyOp(decNumber *res, const decNumber *lhs,
if (needbytes>(Int)sizeof(zaccbuff)) {
allocacc=(uLong *)malloc(needbytes);
zacc=(uLong *)allocacc;}
- if (zlhi==NULL||zrhi==NULL||zacc==NULL) {
+ if (zlhi==nullptr||zrhi==nullptr||zacc==nullptr) {
*status|=DEC_Insufficient_storage;
break;}
@@ -5113,7 +5113,7 @@ static decNumber * decMultiplyOp(decNumber *res, const decNumber *lhs,
needbytes=(D2U(lhs->digits)+D2U(rhs->digits))*sizeof(Unit);
if (needbytes>(Int)sizeof(accbuff)) {
allocacc=(Unit *)malloc(needbytes);
- if (allocacc==NULL) {*status|=DEC_Insufficient_storage; break;}
+ if (allocacc==nullptr) {*status|=DEC_Insufficient_storage; break;}
acc=(Unit *)allocacc; /* use the allocated space */
}
@@ -5172,14 +5172,14 @@ static decNumber * decMultiplyOp(decNumber *res, const decNumber *lhs,
decFinish(res, set, &residue, status); /* final cleanup */
} while(0); /* end protected */
- if (allocacc!=NULL) free(allocacc); /* drop any storage used */
+ if (allocacc!=nullptr) free(allocacc); /* drop any storage used */
#if DECSUBSET
- if (allocrhs!=NULL) free(allocrhs); /* .. */
- if (alloclhs!=NULL) free(alloclhs); /* .. */
+ if (allocrhs!=nullptr) free(allocrhs); /* .. */
+ if (alloclhs!=nullptr) free(alloclhs); /* .. */
#endif
#if FASTMUL
- if (allocrhi!=NULL) free(allocrhi); /* .. */
- if (alloclhi!=NULL) free(alloclhi); /* .. */
+ if (allocrhi!=nullptr) free(allocrhi); /* .. */
+ if (alloclhi!=nullptr) free(alloclhi); /* .. */
#endif
return res;
} /* decMultiplyOp */
@@ -5278,7 +5278,7 @@ decNumber * decExpOp(decNumber *res, const decNumber *rhs,
/* is treated like other buffers, using DECBUFFER, +1 in case */
/* DECBUFFER is 0 */
decNumber bufr[D2N(DECBUFFER*2+1)];
- decNumber *allocrhs=NULL; /* non-NULL if rhs buffer allocated */
+ decNumber *allocrhs=nullptr; /* non-nullptr if rhs buffer allocated */
/* the working precision will be no more than set->digits+8+1 */
/* so for on-stack buffers DECBUFFER+9 is used, +1 in case DECBUFFER */
@@ -5286,11 +5286,11 @@ decNumber * decExpOp(decNumber *res, const decNumber *rhs,
/* buffer for t, term (working precision plus) */
decNumber buft[D2N(DECBUFFER*2+9+1)];
- decNumber *allocbuft=NULL; /* -> allocated buft, iff allocated */
+ decNumber *allocbuft=nullptr; /* -> allocated buft, iff allocated */
decNumber *t=buft; /* term */
/* buffer for a, accumulator (working precision * 2), at least 9 */
decNumber bufa[D2N(DECBUFFER*4+18+1)];
- decNumber *allocbufa=NULL; /* -> allocated bufa, iff allocated */
+ decNumber *allocbufa=nullptr; /* -> allocated bufa, iff allocated */
decNumber *a=bufa; /* accumulator */
/* decNumber for the divisor term; this needs at most 9 digits */
/* and so can be fixed size [16 so can use standard context] */
@@ -5310,7 +5310,7 @@ decNumber * decExpOp(decNumber *res, const decNumber *rhs,
uprv_decNumberZero(res);
else uprv_decNumberCopy(res, rhs); /* +Infinity -> self */
}
- else decNaNs(res, rhs, NULL, set, status); /* a NaN */
+ else decNaNs(res, rhs, nullptr, set, status); /* a NaN */
break;}
if (ISZERO(rhs)) { /* zeros -> exact 1 */
@@ -5400,7 +5400,7 @@ decNumber * decExpOp(decNumber *res, const decNumber *rhs,
needbytes=sizeof(decNumber)+(D2U(rhs->digits)-1)*sizeof(Unit);
if (needbytes>sizeof(bufr)) { /* need malloc space */
allocrhs=(decNumber *)malloc(needbytes);
- if (allocrhs==NULL) { /* hopeless -- abandon */
+ if (allocrhs==nullptr) { /* hopeless -- abandon */
*status|=DEC_Insufficient_storage;
break;}
newrhs=allocrhs; /* use the allocated space */
@@ -5432,7 +5432,7 @@ decNumber * decExpOp(decNumber *res, const decNumber *rhs,
needbytes=sizeof(decNumber)+(D2U(p*2)-1)*sizeof(Unit);
if (needbytes>sizeof(bufa)) { /* need malloc space */
allocbufa=(decNumber *)malloc(needbytes);
- if (allocbufa==NULL) { /* hopeless -- abandon */
+ if (allocbufa==nullptr) { /* hopeless -- abandon */
*status|=DEC_Insufficient_storage;
break;}
a=allocbufa; /* use the allocated space */
@@ -5444,7 +5444,7 @@ decNumber * decExpOp(decNumber *res, const decNumber *rhs,
needbytes=sizeof(decNumber)+(D2U(p+2)-1)*sizeof(Unit);
if (needbytes>sizeof(buft)) { /* need malloc space */
allocbuft=(decNumber *)malloc(needbytes);
- if (allocbuft==NULL) { /* hopeless -- abandon */
+ if (allocbuft==nullptr) { /* hopeless -- abandon */
*status|=DEC_Insufficient_storage;
break;}
t=allocbuft; /* use the allocated space */
@@ -5528,9 +5528,9 @@ decNumber * decExpOp(decNumber *res, const decNumber *rhs,
decFinish(res, set, &residue, status); /* cleanup/set flags */
} while(0); /* end protected */
- if (allocrhs !=NULL) free(allocrhs); /* drop any storage used */
- if (allocbufa!=NULL) free(allocbufa); /* .. */
- if (allocbuft!=NULL) free(allocbuft); /* .. */
+ if (allocrhs !=nullptr) free(allocrhs); /* drop any storage used */
+ if (allocbufa!=nullptr) free(allocbufa); /* .. */
+ if (allocbuft!=nullptr) free(allocbuft); /* .. */
/* [status is handled by caller] */
return res;
} /* decExpOp */
@@ -5640,10 +5640,10 @@ decNumber * decLnOp(decNumber *res, const decNumber *rhs,
/* buffers for a (accumulator, typically precision+2) and b */
/* (adjustment calculator, same size) */
decNumber bufa[D2N(DECBUFFER+12)];
- decNumber *allocbufa=NULL; /* -> allocated bufa, iff allocated */
+ decNumber *allocbufa=nullptr; /* -> allocated bufa, iff allocated */
decNumber *a=bufa; /* accumulator/work */
decNumber bufb[D2N(DECBUFFER*2+2)];
- decNumber *allocbufb=NULL; /* -> allocated bufa, iff allocated */
+ decNumber *allocbufb=nullptr; /* -> allocated bufa, iff allocated */
decNumber *b=bufb; /* adjustment/work */
decNumber numone; /* constant 1 */
@@ -5662,7 +5662,7 @@ decNumber * decLnOp(decNumber *res, const decNumber *rhs,
*status|=DEC_Invalid_operation;
else uprv_decNumberCopy(res, rhs); /* +Infinity -> self */
}
- else decNaNs(res, rhs, NULL, set, status); /* a NaN */
+ else decNaNs(res, rhs, nullptr, set, status); /* a NaN */
break;}
if (ISZERO(rhs)) { /* +/- zeros -> -Infinity */
@@ -5713,7 +5713,7 @@ decNumber * decLnOp(decNumber *res, const decNumber *rhs,
needbytes=sizeof(decNumber)+(D2U(MAXI(p,16))-1)*sizeof(Unit);
if (needbytes>sizeof(bufa)) { /* need malloc space */
allocbufa=(decNumber *)malloc(needbytes);
- if (allocbufa==NULL) { /* hopeless -- abandon */
+ if (allocbufa==nullptr) { /* hopeless -- abandon */
*status|=DEC_Insufficient_storage;
break;}
a=allocbufa; /* use the allocated space */
@@ -5722,7 +5722,7 @@ decNumber * decLnOp(decNumber *res, const decNumber *rhs,
needbytes=sizeof(decNumber)+(D2U(MAXI(pp,16))-1)*sizeof(Unit);
if (needbytes>sizeof(bufb)) { /* need malloc space */
allocbufb=(decNumber *)malloc(needbytes);
- if (allocbufb==NULL) { /* hopeless -- abandon */
+ if (allocbufb==nullptr) { /* hopeless -- abandon */
*status|=DEC_Insufficient_storage;
break;}
b=allocbufb; /* use the allocated space */
@@ -5843,8 +5843,8 @@ decNumber * decLnOp(decNumber *res, const decNumber *rhs,
decFinish(res, set, &residue, status); /* cleanup/set flags */
} while(0); /* end protected */
- if (allocbufa!=NULL) free(allocbufa); /* drop any storage used */
- if (allocbufb!=NULL) free(allocbufb); /* .. */
+ if (allocbufa!=nullptr) free(allocbufa); /* drop any storage used */
+ if (allocbufb!=nullptr) free(allocbufb); /* .. */
/* [status is handled by caller] */
return res;
} /* decLnOp */
@@ -5878,8 +5878,8 @@ static decNumber * decQuantizeOp(decNumber *res, const decNumber *lhs,
const decNumber *rhs, decContext *set,
Flag quant, uInt *status) {
#if DECSUBSET
- decNumber *alloclhs=NULL; /* non-NULL if rounded lhs allocated */
- decNumber *allocrhs=NULL; /* .., rhs */
+ decNumber *alloclhs=nullptr; /* non-nullptr if rounded lhs allocated */
+ decNumber *allocrhs=nullptr; /* .., rhs */
#endif
const decNumber *inrhs=rhs; /* save original rhs */
Int reqdigits=set->digits; /* requested DIGITS */
@@ -5897,12 +5897,12 @@ static decNumber * decQuantizeOp(decNumber *res, const decNumber *lhs,
/* reduce operands and set lostDigits status, as needed */
if (lhs->digits>reqdigits) {
alloclhs=decRoundOperand(lhs, set, status);
- if (alloclhs==NULL) break;
+ if (alloclhs==nullptr) break;
lhs=alloclhs;
}
if (rhs->digits>reqdigits) { /* [this only checks lostDigits] */
allocrhs=decRoundOperand(rhs, set, status);
- if (allocrhs==NULL) break;
+ if (allocrhs==nullptr) break;
rhs=allocrhs;
}
}
@@ -6011,8 +6011,8 @@ static decNumber * decQuantizeOp(decNumber *res, const decNumber *lhs,
} while(0); /* end protected */
#if DECSUBSET
- if (allocrhs!=NULL) free(allocrhs); /* drop any storage used */
- if (alloclhs!=NULL) free(alloclhs); /* .. */
+ if (allocrhs!=nullptr) free(allocrhs); /* drop any storage used */
+ if (alloclhs!=nullptr) free(alloclhs); /* .. */
#endif
return res;
} /* decQuantizeOp */
@@ -6051,8 +6051,8 @@ static decNumber * decCompareOp(decNumber *res, const decNumber *lhs,
const decNumber *rhs, decContext *set,
Flag op, uInt *status) {
#if DECSUBSET
- decNumber *alloclhs=NULL; /* non-NULL if rounded lhs allocated */
- decNumber *allocrhs=NULL; /* .., rhs */
+ decNumber *alloclhs=nullptr; /* non-nullptr if rounded lhs allocated */
+ decNumber *allocrhs=nullptr; /* .., rhs */
#endif
Int result=0; /* default result value */
uByte merged; /* work */
@@ -6067,12 +6067,12 @@ static decNumber * decCompareOp(decNumber *res, const decNumber *lhs,
/* reduce operands and set lostDigits status, as needed */
if (lhs->digits>set->digits) {
alloclhs=decRoundOperand(lhs, set, status);
- if (alloclhs==NULL) {result=BADINT; break;}
+ if (alloclhs==nullptr) {result=BADINT; break;}
lhs=alloclhs;
}
if (rhs->digits>set->digits) {
allocrhs=decRoundOperand(rhs, set, status);
- if (allocrhs==NULL) {result=BADINT; break;}
+ if (allocrhs==nullptr) {result=BADINT; break;}
rhs=allocrhs;
}
}
@@ -6194,8 +6194,8 @@ static decNumber * decCompareOp(decNumber *res, const decNumber *lhs,
}
}
#if DECSUBSET
- if (allocrhs!=NULL) free(allocrhs); /* free any storage used */
- if (alloclhs!=NULL) free(alloclhs); /* .. */
+ if (allocrhs!=nullptr) free(allocrhs); /* free any storage used */
+ if (alloclhs!=nullptr) free(alloclhs); /* .. */
#endif
return res;
} /* decCompareOp */
@@ -6280,7 +6280,7 @@ static Int decUnitCompare(const Unit *a, Int alength,
const Unit *b, Int blength, Int exp) {
Unit *acc; /* accumulator for result */
Unit accbuff[SD2U(DECBUFFER*2+1)]; /* local buffer */
- Unit *allocacc=NULL; /* -> allocated acc buffer, iff allocated */
+ Unit *allocacc=nullptr; /* -> allocated acc buffer, iff allocated */
Int accunits, need; /* units in use or needed for acc */
const Unit *l, *r, *u; /* work */
Int expunits, exprem, result; /* .. */
@@ -6312,7 +6312,7 @@ static Int decUnitCompare(const Unit *a, Int alength,
acc=accbuff; /* assume use local buffer */
if (need*sizeof(Unit)>sizeof(accbuff)) {
allocacc=(Unit *)malloc(need*sizeof(Unit));
- if (allocacc==NULL) return BADINT; /* hopeless -- abandon */
+ if (allocacc==nullptr) return BADINT; /* hopeless -- abandon */
acc=allocacc;
}
/* Calculate units and remainder from exponent. */
@@ -6329,7 +6329,7 @@ static Int decUnitCompare(const Unit *a, Int alength,
result=(*u==0 ? 0 : +1);
}
/* clean up and return the result */
- if (allocacc!=NULL) free(allocacc); /* drop any storage used */
+ if (allocacc!=nullptr) free(allocacc); /* drop any storage used */
return result;
} /* decUnitCompare */
@@ -6847,7 +6847,7 @@ static Int decShiftToLeast(Unit *uar, Int units, Int shift) {
/* Instead, return an allocated decNumber, rounded as required. */
/* It is the caller's responsibility to free the allocated storage. */
/* */
-/* If no storage is available then the result cannot be used, so NULL */
+/* If no storage is available then the result cannot be used, so nullptr */
/* is returned. */
/* ------------------------------------------------------------------ */
static decNumber *decRoundOperand(const decNumber *dn, decContext *set,
@@ -6860,9 +6860,9 @@ static decNumber *decRoundOperand(const decNumber *dn, decContext *set,
/* length specified by the context */
res=(decNumber *)malloc(sizeof(decNumber)
+(D2U(set->digits)-1)*sizeof(Unit));
- if (res==NULL) {
+ if (res==nullptr) {
*status|=DEC_Insufficient_storage;
- return NULL;
+ return nullptr;
}
decCopyFit(res, dn, set, &residue, &newstatus);
decApplyRound(res, set, residue, &newstatus);
@@ -7725,7 +7725,7 @@ static Flag decBiStr(const char *targ, const char *str1, const char *str2) {
/* */
/* res is the result number */
/* lhs is the first operand */
-/* rhs is the second operand, or NULL if none */
+/* rhs is the second operand, or nullptr if none */
/* context is used to limit payload length */
/* status contains the current status */
/* returns res in case convenient */
@@ -7741,7 +7741,7 @@ static decNumber * decNaNs(decNumber *res, const decNumber *lhs,
/* and status updated if need be */
if (lhs->bits & DECSNAN)
*status|=DEC_Invalid_operation | DEC_sNaN;
- else if (rhs==NULL);
+ else if (rhs==nullptr);
else if (rhs->bits & DECSNAN) {
lhs=rhs;
*status|=DEC_Invalid_operation | DEC_sNaN;
@@ -7862,8 +7862,8 @@ void uprv_decNumberShow(const decNumber *dn) {
uInt u, d; /* .. */
Int cut; /* .. */
char isign='+'; /* main sign */
- if (dn==NULL) {
- printf("NULL\n");
+ if (dn==nullptr) {
+ printf("nullptr\n");
return;}
if (decNumberIsNegative(dn)) isign='-';
printf(" >> %c ", isign);
@@ -7944,22 +7944,22 @@ static void decDumpAr(char name, const Unit *ar, Int len) {
/* ------------------------------------------------------------------ */
/* decCheckOperands -- check operand(s) to a routine */
/* res is the result structure (not checked; it will be set to */
-/* quiet NaN if error found (and it is not NULL)) */
+/* quiet NaN if error found (and it is not nullptr)) */
/* lhs is the first operand (may be DECUNRESU) */
/* rhs is the second (may be DECUNUSED) */
/* set is the context (may be DECUNCONT) */
/* returns 0 if both operands, and the context are clean, or 1 */
/* otherwise (in which case the context will show an error, */
-/* unless NULL). Note that res is not cleaned; caller should */
-/* handle this so res=NULL case is safe. */
+/* unless nullptr). Note that res is not cleaned; caller should */
+/* handle this so res=nullptr case is safe. */
/* The caller is expected to abandon immediately if 1 is returned. */
/* ------------------------------------------------------------------ */
static Flag decCheckOperands(decNumber *res, const decNumber *lhs,
const decNumber *rhs, decContext *set) {
Flag bad=0;
- if (set==NULL) { /* oops; hopeless */
+ if (set==nullptr) { /* oops; hopeless */
#if DECTRACE || DECVERB
- printf("Reference to context is NULL.\n");
+ printf("Reference to context is nullptr.\n");
#endif
bad=1;
return 1;}
@@ -7972,11 +7972,11 @@ static Flag decCheckOperands(decNumber *res, const decNumber *lhs,
#endif
}
else {
- if (res==NULL) {
+ if (res==nullptr) {
bad=1;
#if DECTRACE
- /* this one not DECVERB as standard tests include NULL */
- printf("Reference to result is NULL.\n");
+ /* this one not DECVERB as standard tests include nullptr */
+ printf("Reference to result is nullptr.\n");
#endif
}
if (!bad && lhs!=DECUNUSED) bad=(decCheckNumber(lhs));
@@ -7984,7 +7984,7 @@ static Flag decCheckOperands(decNumber *res, const decNumber *lhs,
}
if (bad) {
if (set!=DECUNCONT) uprv_decContextSetStatus(set, DEC_Invalid_operation);
- if (res!=DECUNRESU && res!=NULL) {
+ if (res!=DECUNRESU && res!=nullptr) {
uprv_decNumberZero(res);
res->bits=DECNAN; /* qNaN */
}
@@ -8006,10 +8006,10 @@ static Flag decCheckNumber(const decNumber *dn) {
Int ae, d, digits; /* .. */
Int emin, emax; /* .. */
- if (dn==NULL) { /* hopeless */
+ if (dn==nullptr) { /* hopeless */
#if DECTRACE
- /* this one not DECVERB as standard tests include NULL */
- printf("Reference to decNumber is NULL.\n");
+ /* this one not DECVERB as standard tests include nullptr */
+ printf("Reference to decNumber is nullptr.\n");
#endif
return 1;}
@@ -8114,7 +8114,7 @@ static void decCheckInexact(const decNumber *dn, decContext *set) {
}
#else
/* next is a noop for quiet compiler */
- if (dn!=NULL && dn->digits==0) set->status|=DEC_Invalid_operation;
+ if (dn!=nullptr && dn->digits==0) set->status|=DEC_Invalid_operation;
#endif
return;
} /* decCheckInexact */
@@ -8144,7 +8144,7 @@ static void *decMalloc(size_t n) {
uInt uiwork; /* for macros */
alloc=malloc(size); /* -> allocated storage */
- if (alloc==NULL) return NULL; /* out of strorage */
+ if (alloc==nullptr) return nullptr; /* out of strorage */
b0=(uByte *)alloc; /* as bytes */
decAllocBytes+=n; /* account for storage */
UBFROMUI(alloc, n); /* save n */
@@ -8171,7 +8171,7 @@ static void decFree(void *alloc) {
uByte *b, *b0; /* work */
uInt uiwork; /* for macros */
- if (alloc==NULL) return; /* allowed; it's a nop */
+ if (alloc==nullptr) return; /* allowed; it's a nop */
b0=(uByte *)alloc; /* as bytes */
b0-=8; /* -> true start of storage */
n=UBTOUI(b0); /* lift length */
diff --git a/Build/source/libs/icu/icu-src/source/i18n/decNumber.h b/Build/source/libs/icu/icu-src/source/i18n/decNumber.h
index ddcc50e2efe..4a1eb364e19 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/decNumber.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/decNumber.h
@@ -174,7 +174,7 @@
U_CAPI decNumber * U_EXPORT2 uprv_decNumberNextPlus(decNumber *, const decNumber *, decContext *);
U_CAPI decNumber * U_EXPORT2 uprv_decNumberNextToward(decNumber *, const decNumber *, const decNumber *, decContext *);
U_CAPI decNumber * U_EXPORT2 uprv_decNumberTrim(decNumber *);
- U_CAPI const char * U_EXPORT2 uprv_decNumberVersion(void);
+ U_CAPI const char * U_EXPORT2 uprv_decNumberVersion();
U_CAPI decNumber * U_EXPORT2 uprv_decNumberZero(decNumber *);
/* Functions for testing decNumbers (normality depends on context) */
diff --git a/Build/source/libs/icu/icu-src/source/i18n/decimfmt.cpp b/Build/source/libs/icu/icu-src/source/i18n/decimfmt.cpp
index bca33366792..75906991d72 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/decimfmt.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/decimfmt.cpp
@@ -790,7 +790,7 @@ CurrencyAmount* DecimalFormat::parseCurrency(const UnicodeString& text, ParsePos
}
}
-const DecimalFormatSymbols* DecimalFormat::getDecimalFormatSymbols(void) const {
+const DecimalFormatSymbols* DecimalFormat::getDecimalFormatSymbols() const {
if (fields == nullptr) {
return nullptr;
}
@@ -803,7 +803,7 @@ const DecimalFormatSymbols* DecimalFormat::getDecimalFormatSymbols(void) const {
void DecimalFormat::adoptDecimalFormatSymbols(DecimalFormatSymbols* symbolsToAdopt) {
if (symbolsToAdopt == nullptr) {
- return; // do not allow caller to set fields->symbols to NULL
+ return; // do not allow caller to set fields->symbols to nullptr
}
// we must take ownership of symbolsToAdopt, even in a failure case.
LocalPointer<DecimalFormatSymbols> dfs(symbolsToAdopt);
@@ -831,7 +831,7 @@ void DecimalFormat::setDecimalFormatSymbols(const DecimalFormatSymbols& symbols)
touchNoError();
}
-const CurrencyPluralInfo* DecimalFormat::getCurrencyPluralInfo(void) const {
+const CurrencyPluralInfo* DecimalFormat::getCurrencyPluralInfo() const {
if (fields == nullptr) {
return nullptr;
}
@@ -957,7 +957,7 @@ void DecimalFormat::setSignAlwaysShown(UBool value) {
touchNoError();
}
-int32_t DecimalFormat::getMultiplier(void) const {
+int32_t DecimalFormat::getMultiplier() const {
const DecimalFormatProperties *dfp;
// Not much we can do to report an error.
if (fields == nullptr) {
@@ -1021,7 +1021,7 @@ void DecimalFormat::setMultiplierScale(int32_t newValue) {
touchNoError();
}
-double DecimalFormat::getRoundingIncrement(void) const {
+double DecimalFormat::getRoundingIncrement() const {
// Not much we can do to report an error.
if (fields == nullptr) {
// Fallback to using the default instance of DecimalFormatProperties.
@@ -1037,7 +1037,7 @@ void DecimalFormat::setRoundingIncrement(double newValue) {
touchNoError();
}
-ERoundingMode DecimalFormat::getRoundingMode(void) const {
+ERoundingMode DecimalFormat::getRoundingMode() const {
// Not much we can do to report an error.
if (fields == nullptr) {
// Fallback to using the default instance of DecimalFormatProperties.
@@ -1047,7 +1047,7 @@ ERoundingMode DecimalFormat::getRoundingMode(void) const {
return static_cast<ERoundingMode>(fields->exportedProperties.roundingMode.getNoError());
}
-void DecimalFormat::setRoundingMode(ERoundingMode roundingMode) {
+void DecimalFormat::setRoundingMode(ERoundingMode roundingMode) UPRV_NO_SANITIZE_UNDEFINED {
if (fields == nullptr) { return; }
auto uRoundingMode = static_cast<UNumberFormatRoundingMode>(roundingMode);
if (!fields->properties.roundingMode.isNull() && uRoundingMode == fields->properties.roundingMode.getNoError()) {
@@ -1058,7 +1058,7 @@ void DecimalFormat::setRoundingMode(ERoundingMode roundingMode) {
touchNoError();
}
-int32_t DecimalFormat::getFormatWidth(void) const {
+int32_t DecimalFormat::getFormatWidth() const {
// Not much we can do to report an error.
if (fields == nullptr) {
// Fallback to using the default instance of DecimalFormatProperties.
@@ -1094,7 +1094,7 @@ void DecimalFormat::setPadCharacter(const UnicodeString& padChar) {
touchNoError();
}
-EPadPosition DecimalFormat::getPadPosition(void) const {
+EPadPosition DecimalFormat::getPadPosition() const {
if (fields == nullptr || fields->properties.padPosition.isNull()) {
return EPadPosition::kPadBeforePrefix;
} else {
@@ -1113,7 +1113,7 @@ void DecimalFormat::setPadPosition(EPadPosition padPos) {
touchNoError();
}
-UBool DecimalFormat::isScientificNotation(void) const {
+UBool DecimalFormat::isScientificNotation() const {
// Not much we can do to report an error.
if (fields == nullptr) {
// Fallback to using the default instance of DecimalFormatProperties.
@@ -1134,7 +1134,7 @@ void DecimalFormat::setScientificNotation(UBool useScientific) {
touchNoError();
}
-int8_t DecimalFormat::getMinimumExponentDigits(void) const {
+int8_t DecimalFormat::getMinimumExponentDigits() const {
// Not much we can do to report an error.
if (fields == nullptr) {
// Fallback to using the default instance of DecimalFormatProperties.
@@ -1150,7 +1150,7 @@ void DecimalFormat::setMinimumExponentDigits(int8_t minExpDig) {
touchNoError();
}
-UBool DecimalFormat::isExponentSignAlwaysShown(void) const {
+UBool DecimalFormat::isExponentSignAlwaysShown() const {
// Not much we can do to report an error.
if (fields == nullptr) {
// Fallback to using the default instance of DecimalFormatProperties.
@@ -1166,7 +1166,7 @@ void DecimalFormat::setExponentSignAlwaysShown(UBool expSignAlways) {
touchNoError();
}
-int32_t DecimalFormat::getGroupingSize(void) const {
+int32_t DecimalFormat::getGroupingSize() const {
int32_t groupingSize;
// Not much we can do to report an error.
if (fields == nullptr) {
@@ -1188,7 +1188,7 @@ void DecimalFormat::setGroupingSize(int32_t newValue) {
touchNoError();
}
-int32_t DecimalFormat::getSecondaryGroupingSize(void) const {
+int32_t DecimalFormat::getSecondaryGroupingSize() const {
int32_t grouping2;
// Not much we can do to report an error.
if (fields == nullptr) {
@@ -1226,7 +1226,7 @@ void DecimalFormat::setMinimumGroupingDigits(int32_t newValue) {
touchNoError();
}
-UBool DecimalFormat::isDecimalSeparatorAlwaysShown(void) const {
+UBool DecimalFormat::isDecimalSeparatorAlwaysShown() const {
// Not much we can do to report an error.
if (fields == nullptr) {
// Fallback to using the default instance of DecimalFormatProperties.
@@ -1242,7 +1242,7 @@ void DecimalFormat::setDecimalSeparatorAlwaysShown(UBool newValue) {
touchNoError();
}
-UBool DecimalFormat::isDecimalPatternMatchRequired(void) const {
+UBool DecimalFormat::isDecimalPatternMatchRequired() const {
// Not much we can do to report an error.
if (fields == nullptr) {
// Fallback to using the default instance of DecimalFormatProperties.
diff --git a/Build/source/libs/icu/icu-src/source/i18n/double-conversion-double-to-string.cpp b/Build/source/libs/icu/icu-src/source/i18n/double-conversion-double-to-string.cpp
index 5ee6d2b8e87..938484bca85 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/double-conversion-double-to-string.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/double-conversion-double-to-string.cpp
@@ -94,7 +94,14 @@ void DoubleToStringConverter::CreateExponentialRepresentation(
StringBuilder* result_builder) const {
DOUBLE_CONVERSION_ASSERT(length != 0);
result_builder->AddCharacter(decimal_digits[0]);
- if (length != 1) {
+ if (length == 1) {
+ if ((flags_ & EMIT_TRAILING_DECIMAL_POINT_IN_EXPONENTIAL) != 0) {
+ result_builder->AddCharacter('.');
+ if ((flags_ & EMIT_TRAILING_ZERO_AFTER_POINT_IN_EXPONENTIAL) != 0) {
+ result_builder->AddCharacter('0');
+ }
+ }
+ } else {
result_builder->AddCharacter('.');
result_builder->AddSubstring(&decimal_digits[1], length-1);
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/double-conversion-double-to-string.h b/Build/source/libs/icu/icu-src/source/i18n/double-conversion-double-to-string.h
index 1fae2e87715..b8cb06a8b2c 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/double-conversion-double-to-string.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/double-conversion-double-to-string.h
@@ -93,7 +93,9 @@ class DoubleToStringConverter {
EMIT_TRAILING_DECIMAL_POINT = 2,
EMIT_TRAILING_ZERO_AFTER_POINT = 4,
UNIQUE_ZERO = 8,
- NO_TRAILING_ZERO = 16
+ NO_TRAILING_ZERO = 16,
+ EMIT_TRAILING_DECIMAL_POINT_IN_EXPONENTIAL = 32,
+ EMIT_TRAILING_ZERO_AFTER_POINT_IN_EXPONENTIAL = 64
};
// Flags should be a bit-or combination of the possible Flags-enum.
@@ -112,9 +114,16 @@ class DoubleToStringConverter {
// of the result in precision mode. Matches printf's %g.
// When EMIT_TRAILING_ZERO_AFTER_POINT is also given, one trailing zero is
// preserved.
+ // - EMIT_TRAILING_DECIMAL_POINT_IN_EXPONENTIAL: when the input number has
+ // exactly one significant digit and is converted into exponent form then a
+ // trailing decimal point is appended to the significand in shortest mode
+ // or in precision mode with one requested digit.
+ // - EMIT_TRAILING_ZERO_AFTER_POINT_IN_EXPONENTIAL: in addition to a trailing
+ // decimal point emits a trailing '0'-character. This flag requires the
+ // EMIT_TRAILING_DECIMAL_POINT_IN_EXPONENTIAL flag.
//
// Infinity symbol and nan_symbol provide the string representation for these
- // special values. If the string is NULL and the special value is encountered
+ // special values. If the string is nullptr and the special value is encountered
// then the conversion functions return false.
//
// The exponent_character is used in exponential representations. It is
@@ -147,6 +156,22 @@ class DoubleToStringConverter {
// ToPrecision(230.0, 2) -> "230." with EMIT_TRAILING_DECIMAL_POINT.
// ToPrecision(230.0, 2) -> "2.3e2" with EMIT_TRAILING_ZERO_AFTER_POINT.
//
+ // When converting numbers with exactly one significant digit to exponent
+ // form in shortest mode or in precision mode with one requested digit, the
+ // EMIT_TRAILING_DECIMAL_POINT and EMIT_TRAILING_ZERO_AFTER_POINT flags have
+ // no effect. Use the EMIT_TRAILING_DECIMAL_POINT_IN_EXPONENTIAL flag to
+ // append a decimal point in this case and the
+ // EMIT_TRAILING_ZERO_AFTER_POINT_IN_EXPONENTIAL flag to also append a
+ // '0'-character in this case.
+ // Example with decimal_in_shortest_low = 0:
+ // ToShortest(0.0009) -> "9e-4"
+ // with EMIT_TRAILING_DECIMAL_POINT_IN_EXPONENTIAL deactivated.
+ // ToShortest(0.0009) -> "9.e-4"
+ // with EMIT_TRAILING_DECIMAL_POINT_IN_EXPONENTIAL activated.
+ // ToShortest(0.0009) -> "9.0e-4"
+ // with EMIT_TRAILING_DECIMAL_POINT_IN_EXPONENTIAL activated and
+ // EMIT_TRAILING_ZERO_AFTER_POINT_IN_EXPONENTIAL activated.
+ //
// The min_exponent_width is used for exponential representations.
// The converter adds leading '0's to the exponent until the exponent
// is at least min_exponent_width digits long.
@@ -429,7 +454,7 @@ class DoubleToStringConverter {
// If the value is a special value (NaN or Infinity) constructs the
// corresponding string using the configured infinity/nan-symbol.
- // If either of them is NULL or the value is not special then the
+ // If either of them is nullptr or the value is not special then the
// function returns false.
bool HandleSpecialValues(double value, StringBuilder* result_builder) const;
// Constructs an exponential representation (i.e. 1.234e56).
diff --git a/Build/source/libs/icu/icu-src/source/i18n/double-conversion-string-to-double.h b/Build/source/libs/icu/icu-src/source/i18n/double-conversion-string-to-double.h
index 9f6f5307111..1d4e3dddde9 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/double-conversion-string-to-double.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/double-conversion-string-to-double.h
@@ -158,8 +158,8 @@ class StringToDoubleConverter {
// flags = ALLOW_OCTAL | ALLOW_LEADING_SPACES,
// empty_string_value = 0.0,
// junk_string_value = NaN,
- // infinity_symbol = NULL,
- // nan_symbol = NULL:
+ // infinity_symbol = nullptr,
+ // nan_symbol = nullptr:
// StringToDouble("0x1234") -> NaN // junk_string_value.
// StringToDouble("01234") -> 668.0.
// StringToDouble("") -> 0.0 // empty_string_value.
diff --git a/Build/source/libs/icu/icu-src/source/i18n/dt_impl.h b/Build/source/libs/icu/icu-src/source/i18n/dt_impl.h
index a4058c69244..a21b68ce1e2 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/dt_impl.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/dt_impl.h
@@ -25,66 +25,66 @@
#include "unicode/unistr.h"
-#define QUOTE ((UChar)0x0027)
-#define LOW_LINE ((UChar)0x005F)
-#define COLON ((UChar)0x003A)
-#define LEFT_CURLY_BRACKET ((UChar)0x007B)
-#define RIGHT_CURLY_BRACKET ((UChar)0x007D)
-#define SPACE ((UChar)0x0020)
-#define EN_DASH ((UChar)0x2013)
-#define SOLIDUS ((UChar)0x002F)
-#define PERCENT ((UChar)0x0025)
+#define QUOTE ((char16_t)0x0027)
+#define LOW_LINE ((char16_t)0x005F)
+#define COLON ((char16_t)0x003A)
+#define LEFT_CURLY_BRACKET ((char16_t)0x007B)
+#define RIGHT_CURLY_BRACKET ((char16_t)0x007D)
+#define SPACE ((char16_t)0x0020)
+#define EN_DASH ((char16_t)0x2013)
+#define SOLIDUS ((char16_t)0x002F)
+#define PERCENT ((char16_t)0x0025)
-#define DIGIT_ZERO ((UChar)0x0030)
-#define DIGIT_ONE ((UChar)0x0031)
+#define DIGIT_ZERO ((char16_t)0x0030)
+#define DIGIT_ONE ((char16_t)0x0031)
-#define LOW_A ((UChar)0x0061)
-#define LOW_B ((UChar)0x0062)
-#define LOW_C ((UChar)0x0063)
-#define LOW_D ((UChar)0x0064)
-#define LOW_E ((UChar)0x0065)
-#define LOW_F ((UChar)0x0066)
-#define LOW_G ((UChar)0x0067)
-#define LOW_H ((UChar)0x0068)
-#define LOW_I ((UChar)0x0069)
-#define LOW_J ((UChar)0x006a)
-#define LOW_K ((UChar)0x006B)
-#define LOW_L ((UChar)0x006C)
-#define LOW_M ((UChar)0x006D)
-#define LOW_N ((UChar)0x006E)
-#define LOW_O ((UChar)0x006F)
-#define LOW_P ((UChar)0x0070)
-#define LOW_Q ((UChar)0x0071)
-#define LOW_R ((UChar)0x0072)
-#define LOW_S ((UChar)0x0073)
-#define LOW_T ((UChar)0x0074)
-#define LOW_U ((UChar)0x0075)
-#define LOW_V ((UChar)0x0076)
-#define LOW_W ((UChar)0x0077)
-#define LOW_Y ((UChar)0x0079)
-#define LOW_Z ((UChar)0x007A)
+#define LOW_A ((char16_t)0x0061)
+#define LOW_B ((char16_t)0x0062)
+#define LOW_C ((char16_t)0x0063)
+#define LOW_D ((char16_t)0x0064)
+#define LOW_E ((char16_t)0x0065)
+#define LOW_F ((char16_t)0x0066)
+#define LOW_G ((char16_t)0x0067)
+#define LOW_H ((char16_t)0x0068)
+#define LOW_I ((char16_t)0x0069)
+#define LOW_J ((char16_t)0x006a)
+#define LOW_K ((char16_t)0x006B)
+#define LOW_L ((char16_t)0x006C)
+#define LOW_M ((char16_t)0x006D)
+#define LOW_N ((char16_t)0x006E)
+#define LOW_O ((char16_t)0x006F)
+#define LOW_P ((char16_t)0x0070)
+#define LOW_Q ((char16_t)0x0071)
+#define LOW_R ((char16_t)0x0072)
+#define LOW_S ((char16_t)0x0073)
+#define LOW_T ((char16_t)0x0074)
+#define LOW_U ((char16_t)0x0075)
+#define LOW_V ((char16_t)0x0076)
+#define LOW_W ((char16_t)0x0077)
+#define LOW_Y ((char16_t)0x0079)
+#define LOW_Z ((char16_t)0x007A)
-#define CAP_A ((UChar)0x0041)
-#define CAP_C ((UChar)0x0043)
-#define CAP_D ((UChar)0x0044)
-#define CAP_E ((UChar)0x0045)
-#define CAP_F ((UChar)0x0046)
-#define CAP_G ((UChar)0x0047)
-#define CAP_H ((UChar)0x0048)
-#define CAP_K ((UChar)0x004B)
-#define CAP_L ((UChar)0x004C)
-#define CAP_M ((UChar)0x004D)
-#define CAP_N ((UChar)0x004E)
-#define CAP_O ((UChar)0x004F)
-#define CAP_P ((UChar)0x0050)
-#define CAP_Q ((UChar)0x0051)
-#define CAP_S ((UChar)0x0053)
-#define CAP_T ((UChar)0x0054)
-#define CAP_U ((UChar)0x0055)
-#define CAP_V ((UChar)0x0056)
-#define CAP_W ((UChar)0x0057)
-#define CAP_Y ((UChar)0x0059)
-#define CAP_Z ((UChar)0x005A)
+#define CAP_A ((char16_t)0x0041)
+#define CAP_C ((char16_t)0x0043)
+#define CAP_D ((char16_t)0x0044)
+#define CAP_E ((char16_t)0x0045)
+#define CAP_F ((char16_t)0x0046)
+#define CAP_G ((char16_t)0x0047)
+#define CAP_H ((char16_t)0x0048)
+#define CAP_K ((char16_t)0x004B)
+#define CAP_L ((char16_t)0x004C)
+#define CAP_M ((char16_t)0x004D)
+#define CAP_N ((char16_t)0x004E)
+#define CAP_O ((char16_t)0x004F)
+#define CAP_P ((char16_t)0x0050)
+#define CAP_Q ((char16_t)0x0051)
+#define CAP_S ((char16_t)0x0053)
+#define CAP_T ((char16_t)0x0054)
+#define CAP_U ((char16_t)0x0055)
+#define CAP_V ((char16_t)0x0056)
+#define CAP_W ((char16_t)0x0057)
+#define CAP_Y ((char16_t)0x0059)
+#define CAP_Z ((char16_t)0x005A)
#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/Build/source/libs/icu/icu-src/source/i18n/dtfmtsym.cpp b/Build/source/libs/icu/icu-src/source/i18n/dtfmtsym.cpp
index 4c449761249..943f6e21d2e 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/dtfmtsym.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/dtfmtsym.cpp
@@ -70,7 +70,7 @@
* Unlocalized date-time pattern characters. For example: 'y', 'd', etc. All
* locales use the same these unlocalized pattern characters.
*/
-static const UChar gPatternChars[] = {
+static const char16_t gPatternChars[] = {
// if UDAT_HAS_PATTERN_CHAR_FOR_TIME_SEPARATOR:
// GyMdkHmsSEDFwWahKzYeugAZvcLQqVUOXxrbB:
// else:
@@ -91,7 +91,7 @@ static const UChar gPatternChars[] = {
// files. They aren't designed for actual use, just for backup.
// These are the month names and abbreviations of last resort.
-static const UChar gLastResortMonthNames[13][3] =
+static const char16_t gLastResortMonthNames[13][3] =
{
{0x0030, 0x0031, 0x0000}, /* "01" */
{0x0030, 0x0032, 0x0000}, /* "02" */
@@ -109,7 +109,7 @@ static const UChar gLastResortMonthNames[13][3] =
};
// These are the weekday names and abbreviations of last resort.
-static const UChar gLastResortDayNames[8][2] =
+static const char16_t gLastResortDayNames[8][2] =
{
{0x0030, 0x0000}, /* "0" */
{0x0031, 0x0000}, /* "1" */
@@ -122,7 +122,7 @@ static const UChar gLastResortDayNames[8][2] =
};
// These are the quarter names and abbreviations of last resort.
-static const UChar gLastResortQuarters[4][2] =
+static const char16_t gLastResortQuarters[4][2] =
{
{0x0031, 0x0000}, /* "1" */
{0x0032, 0x0000}, /* "2" */
@@ -131,13 +131,13 @@ static const UChar gLastResortQuarters[4][2] =
};
// These are the am/pm and BC/AD markers of last resort.
-static const UChar gLastResortAmPmMarkers[2][3] =
+static const char16_t gLastResortAmPmMarkers[2][3] =
{
{0x0041, 0x004D, 0x0000}, /* "AM" */
{0x0050, 0x004D, 0x0000} /* "PM" */
};
-static const UChar gLastResortEras[2][3] =
+static const char16_t gLastResortEras[2][3] =
{
{0x0042, 0x0043, 0x0000}, /* "BC" */
{0x0041, 0x0044, 0x0000} /* "AD" */
@@ -179,17 +179,17 @@ const SharedDateFormatSymbols *
char type[256];
Calendar::getCalendarTypeFromLocale(fLoc, type, UPRV_LENGTHOF(type), status);
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
SharedDateFormatSymbols *shared
= new SharedDateFormatSymbols(fLoc, type, status);
- if (shared == NULL) {
+ if (shared == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
if (U_FAILURE(status)) {
delete shared;
- return NULL;
+ return nullptr;
}
shared->addRef();
return shared;
@@ -248,16 +248,16 @@ static inline UnicodeString* newUnicodeStringArray(size_t count) {
DateFormatSymbols * U_EXPORT2
DateFormatSymbols::createForLocale(
const Locale& locale, UErrorCode &status) {
- const SharedDateFormatSymbols *shared = NULL;
+ const SharedDateFormatSymbols *shared = nullptr;
UnifiedCache::getByLocale(locale, shared, status);
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
DateFormatSymbols *result = new DateFormatSymbols(shared->get());
shared->removeRef();
- if (result == NULL) {
+ if (result == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
return result;
}
@@ -266,13 +266,13 @@ DateFormatSymbols::DateFormatSymbols(const Locale& locale,
UErrorCode& status)
: UObject()
{
- initializeData(locale, NULL, status);
+ initializeData(locale, nullptr, status);
}
DateFormatSymbols::DateFormatSymbols(UErrorCode& status)
: UObject()
{
- initializeData(Locale::getDefault(), NULL, status, true);
+ initializeData(Locale::getDefault(), nullptr, status, true);
}
@@ -314,9 +314,17 @@ DateFormatSymbols::assignArray(UnicodeString*& dstArray,
// only from a locale bundle or set via the cloning API,
// *and* for as long as all the strings are in *private* fields, preventing
// a subclass from creating these strings in an "unsafe" way (with respect to fastCopyFrom()).
+ if(srcArray == nullptr) {
+ // Do not attempt to copy bogus input (which will crash).
+ // Note that this assignArray method already had the potential to return a null dstArray;
+ // see handling below for "if(dstArray != nullptr)".
+ dstCount = 0;
+ dstArray = nullptr;
+ return;
+ }
dstCount = srcCount;
dstArray = newUnicodeStringArray(srcCount);
- if(dstArray != NULL) {
+ if(dstArray != nullptr) {
int32_t i;
for(i=0; i<srcCount; ++i) {
dstArray[i].fastCopyFrom(srcArray[i]);
@@ -336,11 +344,11 @@ DateFormatSymbols::createZoneStrings(const UnicodeString *const * otherStrings)
UBool failed = false;
fZoneStrings = (UnicodeString **)uprv_malloc(fZoneStringsRowCount * sizeof(UnicodeString *));
- if (fZoneStrings != NULL) {
+ if (fZoneStrings != nullptr) {
for (row=0; row<fZoneStringsRowCount; ++row)
{
fZoneStrings[row] = newUnicodeStringArray(fZoneStringsColCount);
- if (fZoneStrings[row] == NULL) {
+ if (fZoneStrings[row] == nullptr) {
failed = true;
break;
}
@@ -356,7 +364,7 @@ DateFormatSymbols::createZoneStrings(const UnicodeString *const * otherStrings)
delete[] fZoneStrings[i];
}
uprv_free(fZoneStrings);
- fZoneStrings = NULL;
+ fZoneStrings = nullptr;
}
}
@@ -408,38 +416,38 @@ DateFormatSymbols::copyData(const DateFormatSymbols& other) {
other.fStandaloneNarrowDayPeriods, other.fStandaloneNarrowDayPeriodsCount);
assignArray(fStandaloneAbbreviatedDayPeriods, fStandaloneAbbreviatedDayPeriodsCount,
other.fStandaloneAbbreviatedDayPeriods, other.fStandaloneAbbreviatedDayPeriodsCount);
- if (other.fLeapMonthPatterns != NULL) {
+ if (other.fLeapMonthPatterns != nullptr) {
assignArray(fLeapMonthPatterns, fLeapMonthPatternsCount, other.fLeapMonthPatterns, other.fLeapMonthPatternsCount);
} else {
- fLeapMonthPatterns = NULL;
+ fLeapMonthPatterns = nullptr;
fLeapMonthPatternsCount = 0;
}
- if (other.fShortYearNames != NULL) {
+ if (other.fShortYearNames != nullptr) {
assignArray(fShortYearNames, fShortYearNamesCount, other.fShortYearNames, other.fShortYearNamesCount);
} else {
- fShortYearNames = NULL;
+ fShortYearNames = nullptr;
fShortYearNamesCount = 0;
}
- if (other.fShortZodiacNames != NULL) {
+ if (other.fShortZodiacNames != nullptr) {
assignArray(fShortZodiacNames, fShortZodiacNamesCount, other.fShortZodiacNames, other.fShortZodiacNamesCount);
} else {
- fShortZodiacNames = NULL;
+ fShortZodiacNames = nullptr;
fShortZodiacNamesCount = 0;
}
- if (other.fZoneStrings != NULL) {
+ if (other.fZoneStrings != nullptr) {
fZoneStringsColCount = other.fZoneStringsColCount;
fZoneStringsRowCount = other.fZoneStringsRowCount;
createZoneStrings((const UnicodeString**)other.fZoneStrings);
} else {
- fZoneStrings = NULL;
+ fZoneStrings = nullptr;
fZoneStringsColCount = 0;
fZoneStringsRowCount = 0;
}
fZSFLocale = other.fZSFLocale;
// Other zone strings data is created on demand
- fLocaleZoneStrings = NULL;
+ fLocaleZoneStrings = nullptr;
// fastCopyFrom() - see assignArray comments
fLocalPatternChars.fastCopyFrom(other.fLocalPatternChars);
@@ -519,8 +527,8 @@ void DateFormatSymbols::disposeZoneStrings()
uprv_free(fLocaleZoneStrings);
}
- fZoneStrings = NULL;
- fLocaleZoneStrings = NULL;
+ fZoneStrings = nullptr;
+ fLocaleZoneStrings = nullptr;
fZoneStringsRowCount = 0;
fZoneStringsColCount = 0;
}
@@ -623,11 +631,11 @@ DateFormatSymbols::operator==(const DateFormatSymbols& other) const
fStandaloneWideDayPeriodsCount))
{
// Compare the contents of fZoneStrings
- if (fZoneStrings == NULL && other.fZoneStrings == NULL) {
+ if (fZoneStrings == nullptr && other.fZoneStrings == nullptr) {
if (fZSFLocale == other.fZSFLocale) {
return true;
}
- } else if (fZoneStrings != NULL && other.fZoneStrings != NULL) {
+ } else if (fZoneStrings != nullptr && other.fZoneStrings != nullptr) {
if (fZoneStringsRowCount == other.fZoneStringsRowCount
&& fZoneStringsColCount == other.fZoneStringsColCount) {
bool cmpres = true;
@@ -683,7 +691,7 @@ DateFormatSymbols::getShortMonths(int32_t &count) const
const UnicodeString*
DateFormatSymbols::getMonths(int32_t &count, DtContextType context, DtWidthType width ) const
{
- UnicodeString *returnValue = NULL;
+ UnicodeString *returnValue = nullptr;
switch (context) {
case FORMAT :
@@ -747,7 +755,7 @@ DateFormatSymbols::getShortWeekdays(int32_t &count) const
const UnicodeString*
DateFormatSymbols::getWeekdays(int32_t &count, DtContextType context, DtWidthType width) const
{
- UnicodeString *returnValue = NULL;
+ UnicodeString *returnValue = nullptr;
switch (context) {
case FORMAT :
switch(width) {
@@ -802,7 +810,7 @@ DateFormatSymbols::getWeekdays(int32_t &count, DtContextType context, DtWidthTyp
const UnicodeString*
DateFormatSymbols::getQuarters(int32_t &count, DtContextType context, DtWidthType width ) const
{
- UnicodeString *returnValue = NULL;
+ UnicodeString *returnValue = nullptr;
switch (context) {
case FORMAT :
@@ -1250,12 +1258,12 @@ DateFormatSymbols::setTimeSeparatorString(const UnicodeString& newTimeSeparator)
const UnicodeString**
DateFormatSymbols::getZoneStrings(int32_t& rowCount, int32_t& columnCount) const
{
- const UnicodeString **result = NULL;
+ const UnicodeString **result = nullptr;
static UMutex LOCK;
umtx_lock(&LOCK);
- if (fZoneStrings == NULL) {
- if (fLocaleZoneStrings == NULL) {
+ if (fZoneStrings == nullptr) {
+ if (fLocaleZoneStrings == nullptr) {
((DateFormatSymbols*)this)->initZoneStringsArray();
}
result = (const UnicodeString**)fLocaleZoneStrings;
@@ -1274,16 +1282,16 @@ DateFormatSymbols::getZoneStrings(int32_t& rowCount, int32_t& columnCount) const
// This code must be called within a synchronized block
void
-DateFormatSymbols::initZoneStringsArray(void) {
- if (fZoneStrings != NULL || fLocaleZoneStrings != NULL) {
+DateFormatSymbols::initZoneStringsArray() {
+ if (fZoneStrings != nullptr || fLocaleZoneStrings != nullptr) {
return;
}
UErrorCode status = U_ZERO_ERROR;
- StringEnumeration *tzids = NULL;
- UnicodeString ** zarray = NULL;
- TimeZoneNames *tzNames = NULL;
+ StringEnumeration *tzids = nullptr;
+ UnicodeString ** zarray = nullptr;
+ TimeZoneNames *tzNames = nullptr;
int32_t rows = 0;
static const UTimeZoneNameType TYPES[] = {
@@ -1294,7 +1302,7 @@ DateFormatSymbols::initZoneStringsArray(void) {
do { // dummy do-while
- tzids = TimeZone::createTimeZoneIDEnumeration(ZONE_SET, NULL, NULL, status);
+ tzids = TimeZone::createTimeZoneIDEnumeration(ZONE_SET, nullptr, nullptr, status);
rows = tzids->count(status);
if (U_FAILURE(status)) {
break;
@@ -1303,7 +1311,7 @@ DateFormatSymbols::initZoneStringsArray(void) {
// Allocate array
int32_t size = rows * sizeof(UnicodeString*);
zarray = (UnicodeString**)uprv_malloc(size);
- if (zarray == NULL) {
+ if (zarray == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
break;
}
@@ -1324,7 +1332,7 @@ DateFormatSymbols::initZoneStringsArray(void) {
}
zarray[i] = new UnicodeString[5];
- if (zarray[i] == NULL) {
+ if (zarray[i] == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
break;
}
@@ -1344,7 +1352,7 @@ DateFormatSymbols::initZoneStringsArray(void) {
}
}
uprv_free(zarray);
- zarray = NULL;
+ zarray = nullptr;
}
}
@@ -1376,15 +1384,15 @@ DateFormatSymbols::setZoneStrings(const UnicodeString* const *strings, int32_t r
//------------------------------------------------------
const char16_t * U_EXPORT2
-DateFormatSymbols::getPatternUChars(void)
+DateFormatSymbols::getPatternUChars()
{
return gPatternChars;
}
UDateFormatField U_EXPORT2
-DateFormatSymbols::getPatternCharIndex(UChar c) {
- const UChar *p = u_strchr(gPatternChars, c);
- if (p == NULL) {
+DateFormatSymbols::getPatternCharIndex(char16_t c) {
+ const char16_t *p = u_strchr(gPatternChars, c);
+ if (p == nullptr) {
return UDAT_FIELD_COUNT;
} else {
return static_cast<UDateFormatField>(p - gPatternChars);
@@ -1429,7 +1437,7 @@ DateFormatSymbols::isNumericField(UDateFormatField f, int32_t count) {
}
UBool U_EXPORT2
-DateFormatSymbols::isNumericPatternChar(UChar c, int32_t count) {
+DateFormatSymbols::isNumericPatternChar(char16_t c, int32_t count) {
return isNumericField(getPatternCharIndex(c), count);
}
@@ -1455,35 +1463,35 @@ DateFormatSymbols::setLocalPatternChars(const UnicodeString& newLocalPatternChar
namespace {
// Constants declarations
-static const UChar kCalendarAliasPrefixUChar[] = {
+static const char16_t kCalendarAliasPrefixUChar[] = {
SOLIDUS, CAP_L, CAP_O, CAP_C, CAP_A, CAP_L, CAP_E, SOLIDUS,
LOW_C, LOW_A, LOW_L, LOW_E, LOW_N, LOW_D, LOW_A, LOW_R, SOLIDUS
};
-static const UChar kGregorianTagUChar[] = {
+static const char16_t kGregorianTagUChar[] = {
LOW_G, LOW_R, LOW_E, LOW_G, LOW_O, LOW_R, LOW_I, LOW_A, LOW_N
};
-static const UChar kVariantTagUChar[] = {
+static const char16_t kVariantTagUChar[] = {
PERCENT, LOW_V, LOW_A, LOW_R, LOW_I, LOW_A, LOW_N, LOW_T
};
-static const UChar kLeapTagUChar[] = {
+static const char16_t kLeapTagUChar[] = {
LOW_L, LOW_E, LOW_A, LOW_P
};
-static const UChar kCyclicNameSetsTagUChar[] = {
+static const char16_t kCyclicNameSetsTagUChar[] = {
LOW_C, LOW_Y, LOW_C, LOW_L, LOW_I, LOW_C, CAP_N, LOW_A, LOW_M, LOW_E, CAP_S, LOW_E, LOW_T, LOW_S
};
-static const UChar kYearsTagUChar[] = {
+static const char16_t kYearsTagUChar[] = {
SOLIDUS, LOW_Y, LOW_E, LOW_A, LOW_R, LOW_S
};
-static const UChar kZodiacsUChar[] = {
+static const char16_t kZodiacsUChar[] = {
SOLIDUS, LOW_Z, LOW_O, LOW_D, LOW_I, LOW_A, LOW_C, LOW_S
};
-static const UChar kDayPartsTagUChar[] = {
+static const char16_t kDayPartsTagUChar[] = {
SOLIDUS, LOW_D, LOW_A, LOW_Y, CAP_P, LOW_A, LOW_R, LOW_T, LOW_S
};
-static const UChar kFormatTagUChar[] = {
+static const char16_t kFormatTagUChar[] = {
SOLIDUS, LOW_F, LOW_O, LOW_R, LOW_M, LOW_A, LOW_T
};
-static const UChar kAbbrTagUChar[] = {
+static const char16_t kAbbrTagUChar[] = {
SOLIDUS, LOW_A, LOW_B, LOW_B, LOW_R, LOW_E, LOW_V, LOW_I, LOW_A, LOW_T, LOW_E, LOW_D
};
@@ -1528,14 +1536,14 @@ struct CalendarDataSink : public ResourceSink {
mapRefs(),
aliasPathPairs(uprv_deleteUObject, uhash_compareUnicodeString, status),
currentCalendarType(), nextCalendarType(),
- resourcesToVisit(NULL), aliasRelativePath() {
+ resourcesToVisit(nullptr), aliasRelativePath() {
if (U_FAILURE(status)) { return; }
}
virtual ~CalendarDataSink();
// Configure the CalendarSink to visit all the resources
void visitAllResources() {
- resourcesToVisit.adoptInstead(NULL);
+ resourcesToVisit.adoptInstead(nullptr);
}
// Actions to be done before enumerating
@@ -1550,7 +1558,7 @@ struct CalendarDataSink : public ResourceSink {
U_ASSERT(!currentCalendarType.isEmpty());
// Stores the resources to visit on the next calendar.
- LocalPointer<UVector> resourcesToVisitNext(NULL);
+ LocalPointer<UVector> resourcesToVisitNext(nullptr);
ResourceTable calendarData = value.getTable(errorCode);
if (U_FAILURE(errorCode)) { return; }
@@ -1581,7 +1589,7 @@ struct CalendarDataSink : public ResourceSink {
} else if (aliasType == SAME_CALENDAR) {
// Register same-calendar alias
- if (arrays.get(aliasRelativePath) == NULL && maps.get(aliasRelativePath) == NULL) {
+ if (arrays.get(aliasRelativePath) == nullptr && maps.get(aliasRelativePath) == nullptr) {
LocalPointer<UnicodeString> aliasRelativePathCopy(aliasRelativePath.clone(), errorCode);
aliasPathPairs.adoptElement(aliasRelativePathCopy.orphan(), errorCode);
if (U_FAILURE(errorCode)) { return; }
@@ -1601,7 +1609,7 @@ struct CalendarDataSink : public ResourceSink {
if (uprv_strcmp(key, gAmPmMarkersTag) == 0
|| uprv_strcmp(key, gAmPmMarkersAbbrTag) == 0
|| uprv_strcmp(key, gAmPmMarkersNarrowTag) == 0) {
- if (arrays.get(keyUString) == NULL) {
+ if (arrays.get(keyUString) == nullptr) {
ResourceArray resourceArray = value.getArray(errorCode);
int32_t arraySize = resourceArray.getSize();
LocalArray<UnicodeString> stringArray(new UnicodeString[arraySize], errorCode);
@@ -1630,9 +1638,9 @@ struct CalendarDataSink : public ResourceSink {
UnicodeString *alias = (UnicodeString*)aliasPathPairs[i];
UnicodeString *aliasArray;
Hashtable *aliasMap;
- if ((aliasArray = (UnicodeString*)arrays.get(*alias)) != NULL) {
+ if ((aliasArray = (UnicodeString*)arrays.get(*alias)) != nullptr) {
UnicodeString *path = (UnicodeString*)aliasPathPairs[i + 1];
- if (arrays.get(*path) == NULL) {
+ if (arrays.get(*path) == nullptr) {
// Clone the array
int32_t aliasArraySize = arraySizes.geti(*alias);
LocalArray<UnicodeString> aliasArrayCopy(new UnicodeString[aliasArraySize], errorCode);
@@ -1644,9 +1652,9 @@ struct CalendarDataSink : public ResourceSink {
}
if (U_FAILURE(errorCode)) { return; }
mod = true;
- } else if ((aliasMap = (Hashtable*)maps.get(*alias)) != NULL) {
+ } else if ((aliasMap = (Hashtable*)maps.get(*alias)) != nullptr) {
UnicodeString *path = (UnicodeString*)aliasPathPairs[i + 1];
- if (maps.get(*path) == NULL) {
+ if (maps.get(*path) == nullptr) {
maps.put(*path, aliasMap, errorCode);
}
if (U_FAILURE(errorCode)) { return; }
@@ -1674,7 +1682,7 @@ struct CalendarDataSink : public ResourceSink {
ResourceTable table = value.getTable(errorCode);
if (U_FAILURE(errorCode)) return;
- Hashtable* stringMap = NULL;
+ Hashtable* stringMap = nullptr;
// Iterate over all the elements of the table and add them to the map
for (int i = 0; table.getKeyAndValue(i, key, value); i++) {
@@ -1691,7 +1699,7 @@ struct CalendarDataSink : public ResourceSink {
if (i == 0) {
// mapRefs will keep ownership of 'stringMap':
stringMap = mapRefs.create(false, errorCode);
- if (stringMap == NULL) {
+ if (stringMap == nullptr) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -1699,16 +1707,16 @@ struct CalendarDataSink : public ResourceSink {
if (U_FAILURE(errorCode)) { return; }
stringMap->setValueDeleter(uprv_deleteUObject);
}
- U_ASSERT(stringMap != NULL);
+ U_ASSERT(stringMap != nullptr);
int32_t valueStringSize;
- const UChar *valueString = value.getString(valueStringSize, errorCode);
+ const char16_t *valueString = value.getString(valueStringSize, errorCode);
if (U_FAILURE(errorCode)) { return; }
LocalPointer<UnicodeString> valueUString(new UnicodeString(true, valueString, valueStringSize), errorCode);
stringMap->put(keyUString, valueUString.orphan(), errorCode);
if (U_FAILURE(errorCode)) { return; }
continue;
}
- U_ASSERT(stringMap == NULL);
+ U_ASSERT(stringMap == nullptr);
// Store the current path's length and append the current key to the path.
int32_t pathLength = path.length();
@@ -1744,7 +1752,7 @@ struct CalendarDataSink : public ResourceSink {
}
// == Handle aliases ==
- if (arrays.get(path) != NULL || maps.get(path) != NULL) {
+ if (arrays.get(path) != nullptr || maps.get(path) != nullptr) {
// Drop the latest key on the path and continue
path.retainBetween(0, pathLength);
continue;
@@ -1795,7 +1803,7 @@ struct CalendarDataSink : public ResourceSink {
if (value.getType() == URES_ALIAS) {
int32_t aliasPathSize;
- const UChar* aliasPathUChar = value.getAliasString(aliasPathSize, errorCode);
+ const char16_t* aliasPathUChar = value.getAliasString(aliasPathSize, errorCode);
if (U_FAILURE(errorCode)) { return NONE; }
UnicodeString aliasPath(aliasPathUChar, aliasPathSize);
const int32_t aliasPrefixLength = UPRV_LENGTHOF(kCalendarAliasPrefixUChar);
@@ -1846,7 +1854,7 @@ CalendarDataSink::~CalendarDataSink() {
//------------------------------------------------------
static void
-initField(UnicodeString **field, int32_t& length, const UChar *data, LastResortSize numStr, LastResortSize strLen, UErrorCode &status) {
+initField(UnicodeString **field, int32_t& length, const char16_t *data, LastResortSize numStr, LastResortSize strLen, UErrorCode &status) {
if (U_SUCCESS(status)) {
length = numStr;
*field = newUnicodeStringArray((size_t)numStr);
@@ -1870,7 +1878,7 @@ initField(UnicodeString **field, int32_t& length, CalendarDataSink &sink, CharSt
UnicodeString keyUString(key.data(), -1, US_INV);
UnicodeString* array = static_cast<UnicodeString*>(sink.arrays.get(keyUString));
- if (array != NULL) {
+ if (array != nullptr) {
length = sink.arraySizes.geti(keyUString);
*field = array;
// DateFormatSymbols takes ownership of the array:
@@ -1888,11 +1896,11 @@ initField(UnicodeString **field, int32_t& length, CalendarDataSink &sink, CharSt
UnicodeString keyUString(key.data(), -1, US_INV);
UnicodeString* array = static_cast<UnicodeString*>(sink.arrays.get(keyUString));
- if (array != NULL) {
+ if (array != nullptr) {
int32_t arrayLength = sink.arraySizes.geti(keyUString);
length = arrayLength + arrayOffset;
*field = new UnicodeString[length];
- if (*field == NULL) {
+ if (*field == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -1910,10 +1918,10 @@ initLeapMonthPattern(UnicodeString *field, int32_t index, CalendarDataSink &sink
if (U_SUCCESS(status)) {
UnicodeString pathUString(path.data(), -1, US_INV);
Hashtable *leapMonthTable = static_cast<Hashtable*>(sink.maps.get(pathUString));
- if (leapMonthTable != NULL) {
+ if (leapMonthTable != nullptr) {
UnicodeString leapLabel(false, kLeapTagUChar, UPRV_LENGTHOF(kLeapTagUChar));
UnicodeString *leapMonthPattern = static_cast<UnicodeString*>(leapMonthTable->get(leapLabel));
- if (leapMonthPattern != NULL) {
+ if (leapMonthPattern != nullptr) {
field[index].fastCopyFrom(*leapMonthPattern);
} else {
field[index].setToBogus();
@@ -1956,7 +1964,7 @@ typedef struct {
} ContextUsageTypeNameToEnumValue;
static const ContextUsageTypeNameToEnumValue contextUsageTypeMap[] = {
- // Entries must be sorted by usageTypeName; entry with NULL name terminates list.
+ // Entries must be sorted by usageTypeName; entry with nullptr name terminates list.
{ "day-format-except-narrow", DateFormatSymbols::kCapContextUsageDayFormat },
{ "day-narrow", DateFormatSymbols::kCapContextUsageDayNarrow },
{ "day-standalone-except-narrow", DateFormatSymbols::kCapContextUsageDayStandalone },
@@ -1970,7 +1978,7 @@ static const ContextUsageTypeNameToEnumValue contextUsageTypeMap[] = {
{ "month-standalone-except-narrow", DateFormatSymbols::kCapContextUsageMonthStandalone },
{ "zone-long", DateFormatSymbols::kCapContextUsageZoneLong },
{ "zone-short", DateFormatSymbols::kCapContextUsageZoneShort },
- { NULL, (DateFormatSymbols::ECapitalizationContextUsageType)0 },
+ { nullptr, (DateFormatSymbols::ECapitalizationContextUsageType)0 },
};
// Resource keys to look up localized strings for day periods.
@@ -1982,23 +1990,23 @@ static const char *dayPeriodKeys[] = {"midnight", "noon",
UnicodeString* loadDayPeriodStrings(CalendarDataSink &sink, CharString &path,
int32_t &stringCount, UErrorCode &status) {
- if (U_FAILURE(status)) { return NULL; }
+ if (U_FAILURE(status)) { return nullptr; }
UnicodeString pathUString(path.data(), -1, US_INV);
Hashtable* map = static_cast<Hashtable*>(sink.maps.get(pathUString));
stringCount = UPRV_LENGTHOF(dayPeriodKeys);
UnicodeString *strings = new UnicodeString[stringCount];
- if (strings == NULL) {
+ if (strings == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
- if (map != NULL) {
+ if (map != nullptr) {
for (int32_t i = 0; i < stringCount; ++i) {
UnicodeString dayPeriodKey(dayPeriodKeys[i], -1, US_INV);
UnicodeString *dayPeriod = static_cast<UnicodeString*>(map->get(dayPeriodKey));
- if (dayPeriod != NULL) {
+ if (dayPeriod != nullptr) {
strings[i].fastCopyFrom(*dayPeriod);
} else {
strings[i].setToBogus();
@@ -2017,79 +2025,79 @@ void
DateFormatSymbols::initializeData(const Locale& locale, const char *type, UErrorCode& status, UBool useLastResortData)
{
int32_t len = 0;
- /* In case something goes wrong, initialize all of the data to NULL. */
- fEras = NULL;
+ /* In case something goes wrong, initialize all of the data to nullptr. */
+ fEras = nullptr;
fErasCount = 0;
- fEraNames = NULL;
+ fEraNames = nullptr;
fEraNamesCount = 0;
- fNarrowEras = NULL;
+ fNarrowEras = nullptr;
fNarrowErasCount = 0;
- fMonths = NULL;
+ fMonths = nullptr;
fMonthsCount=0;
- fShortMonths = NULL;
+ fShortMonths = nullptr;
fShortMonthsCount=0;
- fNarrowMonths = NULL;
+ fNarrowMonths = nullptr;
fNarrowMonthsCount=0;
- fStandaloneMonths = NULL;
+ fStandaloneMonths = nullptr;
fStandaloneMonthsCount=0;
- fStandaloneShortMonths = NULL;
+ fStandaloneShortMonths = nullptr;
fStandaloneShortMonthsCount=0;
- fStandaloneNarrowMonths = NULL;
+ fStandaloneNarrowMonths = nullptr;
fStandaloneNarrowMonthsCount=0;
- fWeekdays = NULL;
+ fWeekdays = nullptr;
fWeekdaysCount=0;
- fShortWeekdays = NULL;
+ fShortWeekdays = nullptr;
fShortWeekdaysCount=0;
- fShorterWeekdays = NULL;
+ fShorterWeekdays = nullptr;
fShorterWeekdaysCount=0;
- fNarrowWeekdays = NULL;
+ fNarrowWeekdays = nullptr;
fNarrowWeekdaysCount=0;
- fStandaloneWeekdays = NULL;
+ fStandaloneWeekdays = nullptr;
fStandaloneWeekdaysCount=0;
- fStandaloneShortWeekdays = NULL;
+ fStandaloneShortWeekdays = nullptr;
fStandaloneShortWeekdaysCount=0;
- fStandaloneShorterWeekdays = NULL;
+ fStandaloneShorterWeekdays = nullptr;
fStandaloneShorterWeekdaysCount=0;
- fStandaloneNarrowWeekdays = NULL;
+ fStandaloneNarrowWeekdays = nullptr;
fStandaloneNarrowWeekdaysCount=0;
- fAmPms = NULL;
+ fAmPms = nullptr;
fAmPmsCount=0;
- fNarrowAmPms = NULL;
+ fNarrowAmPms = nullptr;
fNarrowAmPmsCount=0;
fTimeSeparator.setToBogus();
- fQuarters = NULL;
+ fQuarters = nullptr;
fQuartersCount = 0;
- fShortQuarters = NULL;
+ fShortQuarters = nullptr;
fShortQuartersCount = 0;
- fNarrowQuarters = NULL;
+ fNarrowQuarters = nullptr;
fNarrowQuartersCount = 0;
- fStandaloneQuarters = NULL;
+ fStandaloneQuarters = nullptr;
fStandaloneQuartersCount = 0;
- fStandaloneShortQuarters = NULL;
+ fStandaloneShortQuarters = nullptr;
fStandaloneShortQuartersCount = 0;
- fStandaloneNarrowQuarters = NULL;
+ fStandaloneNarrowQuarters = nullptr;
fStandaloneNarrowQuartersCount = 0;
- fLeapMonthPatterns = NULL;
+ fLeapMonthPatterns = nullptr;
fLeapMonthPatternsCount = 0;
- fShortYearNames = NULL;
+ fShortYearNames = nullptr;
fShortYearNamesCount = 0;
- fShortZodiacNames = NULL;
+ fShortZodiacNames = nullptr;
fShortZodiacNamesCount = 0;
fZoneStringsRowCount = 0;
fZoneStringsColCount = 0;
- fZoneStrings = NULL;
- fLocaleZoneStrings = NULL;
- fAbbreviatedDayPeriods = NULL;
+ fZoneStrings = nullptr;
+ fLocaleZoneStrings = nullptr;
+ fAbbreviatedDayPeriods = nullptr;
fAbbreviatedDayPeriodsCount = 0;
- fWideDayPeriods = NULL;
+ fWideDayPeriods = nullptr;
fWideDayPeriodsCount = 0;
- fNarrowDayPeriods = NULL;
+ fNarrowDayPeriods = nullptr;
fNarrowDayPeriodsCount = 0;
- fStandaloneAbbreviatedDayPeriods = NULL;
+ fStandaloneAbbreviatedDayPeriods = nullptr;
fStandaloneAbbreviatedDayPeriodsCount = 0;
- fStandaloneWideDayPeriods = NULL;
+ fStandaloneWideDayPeriods = nullptr;
fStandaloneWideDayPeriodsCount = 0;
- fStandaloneNarrowDayPeriods = NULL;
+ fStandaloneNarrowDayPeriods = nullptr;
fStandaloneNarrowDayPeriodsCount = 0;
uprv_memset(fCapitalization, 0, sizeof(fCapitalization));
@@ -2103,13 +2111,13 @@ DateFormatSymbols::initializeData(const Locale& locale, const char *type, UError
// Create a CalendarDataSink to process this data and the resource bundles
CalendarDataSink calendarSink(status);
- UResourceBundle *rb = ures_open(NULL, locale.getBaseName(), &status);
- UResourceBundle *cb = ures_getByKey(rb, gCalendarTag, NULL, &status);
+ UResourceBundle *rb = ures_open(nullptr, locale.getBaseName(), &status);
+ UResourceBundle *cb = ures_getByKey(rb, gCalendarTag, nullptr, &status);
if (U_FAILURE(status)) return;
// Iterate over the resource bundle data following the fallbacks through different calendar types
- UnicodeString calendarType((type != NULL && *type != '\0')? type : gGregorianTag, -1, US_INV);
+ UnicodeString calendarType((type != nullptr && *type != '\0')? type : gGregorianTag, -1, US_INV);
while (!calendarType.isBogus()) {
CharString calendarTypeBuffer;
calendarTypeBuffer.appendInvariantChars(calendarType, status);
@@ -2118,7 +2126,7 @@ DateFormatSymbols::initializeData(const Locale& locale, const char *type, UError
// Enumerate this calendar type. If the calendar is not found fallback to gregorian
UErrorCode oldStatus = status;
- UResourceBundle *ctb = ures_getByKeyWithFallback(cb, calendarTypeCArray, NULL, &status);
+ UResourceBundle *ctb = ures_getByKeyWithFallback(cb, calendarTypeCArray, nullptr, &status);
if (status == U_MISSING_RESOURCE_ERROR) {
ures_close(ctb);
if (uprv_strcmp(calendarTypeCArray, gGregorianTag) != 0) {
@@ -2190,7 +2198,7 @@ DateFormatSymbols::initializeData(const Locale& locale, const char *type, UError
fLeapMonthPatternsCount = kMonthPatternsCount;
} else {
delete[] fLeapMonthPatterns;
- fLeapMonthPatterns = NULL;
+ fLeapMonthPatterns = nullptr;
}
}
@@ -2203,23 +2211,23 @@ DateFormatSymbols::initializeData(const Locale& locale, const char *type, UError
// Load context transforms and capitalization
tempStatus = U_ZERO_ERROR;
- UResourceBundle *localeBundle = ures_open(NULL, locale.getName(), &tempStatus);
+ UResourceBundle *localeBundle = ures_open(nullptr, locale.getName(), &tempStatus);
if (U_SUCCESS(tempStatus)) {
- UResourceBundle *contextTransforms = ures_getByKeyWithFallback(localeBundle, gContextTransformsTag, NULL, &tempStatus);
+ UResourceBundle *contextTransforms = ures_getByKeyWithFallback(localeBundle, gContextTransformsTag, nullptr, &tempStatus);
if (U_SUCCESS(tempStatus)) {
UResourceBundle *contextTransformUsage;
- while ( (contextTransformUsage = ures_getNextResource(contextTransforms, NULL, &tempStatus)) != NULL ) {
+ while ( (contextTransformUsage = ures_getNextResource(contextTransforms, nullptr, &tempStatus)) != nullptr ) {
const int32_t * intVector = ures_getIntVector(contextTransformUsage, &len, &status);
- if (U_SUCCESS(tempStatus) && intVector != NULL && len >= 2) {
+ if (U_SUCCESS(tempStatus) && intVector != nullptr && len >= 2) {
const char* usageType = ures_getKey(contextTransformUsage);
- if (usageType != NULL) {
+ if (usageType != nullptr) {
const ContextUsageTypeNameToEnumValue * typeMapPtr = contextUsageTypeMap;
int32_t compResult = 0;
// linear search; list is short and we cannot be sure that bsearch is available
- while ( typeMapPtr->usageTypeName != NULL && (compResult = uprv_strcmp(usageType, typeMapPtr->usageTypeName)) > 0 ) {
+ while ( typeMapPtr->usageTypeName != nullptr && (compResult = uprv_strcmp(usageType, typeMapPtr->usageTypeName)) > 0 ) {
++typeMapPtr;
}
- if (typeMapPtr->usageTypeName != NULL && compResult == 0) {
+ if (typeMapPtr->usageTypeName != nullptr && compResult == 0) {
fCapitalization[typeMapPtr->usageTypeEnumValue][0] = static_cast<UBool>(intVector[0]);
fCapitalization[typeMapPtr->usageTypeEnumValue][1] = static_cast<UBool>(intVector[1]);
}
@@ -2235,15 +2243,15 @@ DateFormatSymbols::initializeData(const Locale& locale, const char *type, UError
const LocalPointer<NumberingSystem> numberingSystem(
NumberingSystem::createInstance(locale, tempStatus), tempStatus);
if (U_SUCCESS(tempStatus)) {
- // These functions all fail gracefully if passed NULL pointers and
+ // These functions all fail gracefully if passed nullptr pointers and
// do nothing unless U_SUCCESS(tempStatus), so it's only necessary
// to check for errors once after all calls are made.
const LocalUResourceBundlePointer numberElementsData(ures_getByKeyWithFallback(
- localeBundle, gNumberElementsTag, NULL, &tempStatus));
+ localeBundle, gNumberElementsTag, nullptr, &tempStatus));
const LocalUResourceBundlePointer nsNameData(ures_getByKeyWithFallback(
- numberElementsData.getAlias(), numberingSystem->getName(), NULL, &tempStatus));
+ numberElementsData.getAlias(), numberingSystem->getName(), nullptr, &tempStatus));
const LocalUResourceBundlePointer symbolsData(ures_getByKeyWithFallback(
- nsNameData.getAlias(), gSymbolsTag, NULL, &tempStatus));
+ nsNameData.getAlias(), gSymbolsTag, nullptr, &tempStatus));
fTimeSeparator = ures_getUnicodeStringByKey(
symbolsData.getAlias(), gTimeSeparatorTag, &tempStatus);
if (U_FAILURE(tempStatus)) {
@@ -2259,24 +2267,48 @@ DateFormatSymbols::initializeData(const Locale& locale, const char *type, UError
}
// Load day periods
+ fAbbreviatedDayPeriods = loadDayPeriodStrings(calendarSink,
+ buildResourcePath(path, gDayPeriodTag, gNamesFormatTag, gNamesAbbrTag, status),
+ fAbbreviatedDayPeriodsCount, status);
+
fWideDayPeriods = loadDayPeriodStrings(calendarSink,
buildResourcePath(path, gDayPeriodTag, gNamesFormatTag, gNamesWideTag, status),
fWideDayPeriodsCount, status);
fNarrowDayPeriods = loadDayPeriodStrings(calendarSink,
buildResourcePath(path, gDayPeriodTag, gNamesFormatTag, gNamesNarrowTag, status),
fNarrowDayPeriodsCount, status);
- fAbbreviatedDayPeriods = loadDayPeriodStrings(calendarSink,
- buildResourcePath(path, gDayPeriodTag, gNamesFormatTag, gNamesAbbrTag, status),
- fAbbreviatedDayPeriodsCount, status);
+
+ fStandaloneAbbreviatedDayPeriods = loadDayPeriodStrings(calendarSink,
+ buildResourcePath(path, gDayPeriodTag, gNamesStandaloneTag, gNamesAbbrTag, status),
+ fStandaloneAbbreviatedDayPeriodsCount, status);
+
fStandaloneWideDayPeriods = loadDayPeriodStrings(calendarSink,
buildResourcePath(path, gDayPeriodTag, gNamesStandaloneTag, gNamesWideTag, status),
fStandaloneWideDayPeriodsCount, status);
fStandaloneNarrowDayPeriods = loadDayPeriodStrings(calendarSink,
buildResourcePath(path, gDayPeriodTag, gNamesStandaloneTag, gNamesNarrowTag, status),
fStandaloneNarrowDayPeriodsCount, status);
- fStandaloneAbbreviatedDayPeriods = loadDayPeriodStrings(calendarSink,
- buildResourcePath(path, gDayPeriodTag, gNamesStandaloneTag, gNamesAbbrTag, status),
- fStandaloneAbbreviatedDayPeriodsCount, status);
+
+ // Fill in for missing/bogus items (dayPeriods are a map so single items might be missing)
+ if (U_SUCCESS(status)) {
+ for (int32_t dpidx = 0; dpidx < fAbbreviatedDayPeriodsCount; ++dpidx) {
+ if (dpidx < fWideDayPeriodsCount && fWideDayPeriods != nullptr && fWideDayPeriods[dpidx].isBogus()) {
+ fWideDayPeriods[dpidx].fastCopyFrom(fAbbreviatedDayPeriods[dpidx]);
+ }
+ if (dpidx < fNarrowDayPeriodsCount && fNarrowDayPeriods != nullptr && fNarrowDayPeriods[dpidx].isBogus()) {
+ fNarrowDayPeriods[dpidx].fastCopyFrom(fAbbreviatedDayPeriods[dpidx]);
+ }
+ if (dpidx < fStandaloneAbbreviatedDayPeriodsCount && fStandaloneAbbreviatedDayPeriods != nullptr && fStandaloneAbbreviatedDayPeriods[dpidx].isBogus()) {
+ fStandaloneAbbreviatedDayPeriods[dpidx].fastCopyFrom(fAbbreviatedDayPeriods[dpidx]);
+ }
+ if (dpidx < fStandaloneWideDayPeriodsCount && fStandaloneWideDayPeriods != nullptr && fStandaloneWideDayPeriods[dpidx].isBogus()) {
+ fStandaloneWideDayPeriods[dpidx].fastCopyFrom(fStandaloneAbbreviatedDayPeriods[dpidx]);
+ }
+ if (dpidx < fStandaloneNarrowDayPeriodsCount && fStandaloneNarrowDayPeriods != nullptr && fStandaloneNarrowDayPeriods[dpidx].isBogus()) {
+ fStandaloneNarrowDayPeriods[dpidx].fastCopyFrom(fStandaloneAbbreviatedDayPeriods[dpidx]);
+ }
+ }
+ }
U_LOCALE_BASED(locBased, *this);
// if we make it to here, the resource data is cool, and we can get everything out
@@ -2352,12 +2384,20 @@ DateFormatSymbols::initializeData(const Locale& locale, const char *type, UError
initField(&fNarrowAmPms, fNarrowAmPmsCount, calendarSink,
buildResourcePath(path, gAmPmMarkersAbbrTag, status), status);
}
+ if(status == U_MISSING_RESOURCE_ERROR) {
+ status = U_ZERO_ERROR;
+ assignArray(fNarrowAmPms, fNarrowAmPmsCount, fAmPms, fAmPmsCount);
+ }
// Load quarters
initField(&fQuarters, fQuartersCount, calendarSink,
buildResourcePath(path, gQuartersTag, gNamesFormatTag, gNamesWideTag, status), status);
initField(&fShortQuarters, fShortQuartersCount, calendarSink,
buildResourcePath(path, gQuartersTag, gNamesFormatTag, gNamesAbbrTag, status), status);
+ if(status == U_MISSING_RESOURCE_ERROR) {
+ status = U_ZERO_ERROR;
+ assignArray(fShortQuarters, fShortQuartersCount, fQuarters, fQuartersCount);
+ }
initField(&fStandaloneQuarters, fStandaloneQuartersCount, calendarSink,
buildResourcePath(path, gQuartersTag, gNamesStandaloneTag, gNamesWideTag, status), status);
@@ -2469,31 +2509,31 @@ DateFormatSymbols::initializeData(const Locale& locale, const char *type, UError
status = U_USING_FALLBACK_WARNING;
//TODO(fabalbon): make sure we are storing las resort data for all fields in here.
- initField(&fEras, fErasCount, (const UChar *)gLastResortEras, kEraNum, kEraLen, status);
- initField(&fEraNames, fEraNamesCount, (const UChar *)gLastResortEras, kEraNum, kEraLen, status);
- initField(&fNarrowEras, fNarrowErasCount, (const UChar *)gLastResortEras, kEraNum, kEraLen, status);
- initField(&fMonths, fMonthsCount, (const UChar *)gLastResortMonthNames, kMonthNum, kMonthLen, status);
- initField(&fShortMonths, fShortMonthsCount, (const UChar *)gLastResortMonthNames, kMonthNum, kMonthLen, status);
- initField(&fNarrowMonths, fNarrowMonthsCount, (const UChar *)gLastResortMonthNames, kMonthNum, kMonthLen, status);
- initField(&fStandaloneMonths, fStandaloneMonthsCount, (const UChar *)gLastResortMonthNames, kMonthNum, kMonthLen, status);
- initField(&fStandaloneShortMonths, fStandaloneShortMonthsCount, (const UChar *)gLastResortMonthNames, kMonthNum, kMonthLen, status);
- initField(&fStandaloneNarrowMonths, fStandaloneNarrowMonthsCount, (const UChar *)gLastResortMonthNames, kMonthNum, kMonthLen, status);
- initField(&fWeekdays, fWeekdaysCount, (const UChar *)gLastResortDayNames, kDayNum, kDayLen, status);
- initField(&fShortWeekdays, fShortWeekdaysCount, (const UChar *)gLastResortDayNames, kDayNum, kDayLen, status);
- initField(&fShorterWeekdays, fShorterWeekdaysCount, (const UChar *)gLastResortDayNames, kDayNum, kDayLen, status);
- initField(&fNarrowWeekdays, fNarrowWeekdaysCount, (const UChar *)gLastResortDayNames, kDayNum, kDayLen, status);
- initField(&fStandaloneWeekdays, fStandaloneWeekdaysCount, (const UChar *)gLastResortDayNames, kDayNum, kDayLen, status);
- initField(&fStandaloneShortWeekdays, fStandaloneShortWeekdaysCount, (const UChar *)gLastResortDayNames, kDayNum, kDayLen, status);
- initField(&fStandaloneShorterWeekdays, fStandaloneShorterWeekdaysCount, (const UChar *)gLastResortDayNames, kDayNum, kDayLen, status);
- initField(&fStandaloneNarrowWeekdays, fStandaloneNarrowWeekdaysCount, (const UChar *)gLastResortDayNames, kDayNum, kDayLen, status);
- initField(&fAmPms, fAmPmsCount, (const UChar *)gLastResortAmPmMarkers, kAmPmNum, kAmPmLen, status);
- initField(&fNarrowAmPms, fNarrowAmPmsCount, (const UChar *)gLastResortAmPmMarkers, kAmPmNum, kAmPmLen, status);
- initField(&fQuarters, fQuartersCount, (const UChar *)gLastResortQuarters, kQuarterNum, kQuarterLen, status);
- initField(&fShortQuarters, fShortQuartersCount, (const UChar *)gLastResortQuarters, kQuarterNum, kQuarterLen, status);
- initField(&fNarrowQuarters, fNarrowQuartersCount, (const UChar *)gLastResortQuarters, kQuarterNum, kQuarterLen, status);
- initField(&fStandaloneQuarters, fStandaloneQuartersCount, (const UChar *)gLastResortQuarters, kQuarterNum, kQuarterLen, status);
- initField(&fStandaloneShortQuarters, fStandaloneShortQuartersCount, (const UChar *)gLastResortQuarters, kQuarterNum, kQuarterLen, status);
- initField(&fStandaloneNarrowQuarters, fStandaloneNarrowQuartersCount, (const UChar *)gLastResortQuarters, kQuarterNum, kQuarterLen, status);
+ initField(&fEras, fErasCount, (const char16_t *)gLastResortEras, kEraNum, kEraLen, status);
+ initField(&fEraNames, fEraNamesCount, (const char16_t *)gLastResortEras, kEraNum, kEraLen, status);
+ initField(&fNarrowEras, fNarrowErasCount, (const char16_t *)gLastResortEras, kEraNum, kEraLen, status);
+ initField(&fMonths, fMonthsCount, (const char16_t *)gLastResortMonthNames, kMonthNum, kMonthLen, status);
+ initField(&fShortMonths, fShortMonthsCount, (const char16_t *)gLastResortMonthNames, kMonthNum, kMonthLen, status);
+ initField(&fNarrowMonths, fNarrowMonthsCount, (const char16_t *)gLastResortMonthNames, kMonthNum, kMonthLen, status);
+ initField(&fStandaloneMonths, fStandaloneMonthsCount, (const char16_t *)gLastResortMonthNames, kMonthNum, kMonthLen, status);
+ initField(&fStandaloneShortMonths, fStandaloneShortMonthsCount, (const char16_t *)gLastResortMonthNames, kMonthNum, kMonthLen, status);
+ initField(&fStandaloneNarrowMonths, fStandaloneNarrowMonthsCount, (const char16_t *)gLastResortMonthNames, kMonthNum, kMonthLen, status);
+ initField(&fWeekdays, fWeekdaysCount, (const char16_t *)gLastResortDayNames, kDayNum, kDayLen, status);
+ initField(&fShortWeekdays, fShortWeekdaysCount, (const char16_t *)gLastResortDayNames, kDayNum, kDayLen, status);
+ initField(&fShorterWeekdays, fShorterWeekdaysCount, (const char16_t *)gLastResortDayNames, kDayNum, kDayLen, status);
+ initField(&fNarrowWeekdays, fNarrowWeekdaysCount, (const char16_t *)gLastResortDayNames, kDayNum, kDayLen, status);
+ initField(&fStandaloneWeekdays, fStandaloneWeekdaysCount, (const char16_t *)gLastResortDayNames, kDayNum, kDayLen, status);
+ initField(&fStandaloneShortWeekdays, fStandaloneShortWeekdaysCount, (const char16_t *)gLastResortDayNames, kDayNum, kDayLen, status);
+ initField(&fStandaloneShorterWeekdays, fStandaloneShorterWeekdaysCount, (const char16_t *)gLastResortDayNames, kDayNum, kDayLen, status);
+ initField(&fStandaloneNarrowWeekdays, fStandaloneNarrowWeekdaysCount, (const char16_t *)gLastResortDayNames, kDayNum, kDayLen, status);
+ initField(&fAmPms, fAmPmsCount, (const char16_t *)gLastResortAmPmMarkers, kAmPmNum, kAmPmLen, status);
+ initField(&fNarrowAmPms, fNarrowAmPmsCount, (const char16_t *)gLastResortAmPmMarkers, kAmPmNum, kAmPmLen, status);
+ initField(&fQuarters, fQuartersCount, (const char16_t *)gLastResortQuarters, kQuarterNum, kQuarterLen, status);
+ initField(&fShortQuarters, fShortQuartersCount, (const char16_t *)gLastResortQuarters, kQuarterNum, kQuarterLen, status);
+ initField(&fNarrowQuarters, fNarrowQuartersCount, (const char16_t *)gLastResortQuarters, kQuarterNum, kQuarterLen, status);
+ initField(&fStandaloneQuarters, fStandaloneQuartersCount, (const char16_t *)gLastResortQuarters, kQuarterNum, kQuarterLen, status);
+ initField(&fStandaloneShortQuarters, fStandaloneShortQuartersCount, (const char16_t *)gLastResortQuarters, kQuarterNum, kQuarterLen, status);
+ initField(&fStandaloneNarrowQuarters, fStandaloneNarrowQuartersCount, (const char16_t *)gLastResortQuarters, kQuarterNum, kQuarterLen, status);
fLocalPatternChars.setTo(true, gPatternChars, PATTERN_CHARS_LEN);
}
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/dtitv_impl.h b/Build/source/libs/icu/icu-src/source/i18n/dtitv_impl.h
index 6fc16bb3e08..2cc77648179 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/dtitv_impl.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/dtitv_impl.h
@@ -25,65 +25,65 @@
#include "unicode/unistr.h"
-#define QUOTE ((UChar)0x0027)
-#define LOW_LINE ((UChar)0x005F)
-#define COLON ((UChar)0x003A)
-#define LEFT_CURLY_BRACKET ((UChar)0x007B)
-#define RIGHT_CURLY_BRACKET ((UChar)0x007D)
-#define SPACE ((UChar)0x0020)
-#define EN_DASH ((UChar)0x2013)
-#define SOLIDUS ((UChar)0x002F)
+#define QUOTE ((char16_t)0x0027)
+#define LOW_LINE ((char16_t)0x005F)
+#define COLON ((char16_t)0x003A)
+#define LEFT_CURLY_BRACKET ((char16_t)0x007B)
+#define RIGHT_CURLY_BRACKET ((char16_t)0x007D)
+#define SPACE ((char16_t)0x0020)
+#define EN_DASH ((char16_t)0x2013)
+#define SOLIDUS ((char16_t)0x002F)
-#define DIGIT_ZERO ((UChar)0x0030)
-#define DIGIT_ONE ((UChar)0x0031)
+#define DIGIT_ZERO ((char16_t)0x0030)
+#define DIGIT_ONE ((char16_t)0x0031)
-#define LOW_A ((UChar)0x0061)
-#define LOW_B ((UChar)0x0062)
-#define LOW_C ((UChar)0x0063)
-#define LOW_D ((UChar)0x0064)
-#define LOW_E ((UChar)0x0065)
-#define LOW_F ((UChar)0x0066)
-#define LOW_G ((UChar)0x0067)
-#define LOW_H ((UChar)0x0068)
-#define LOW_I ((UChar)0x0069)
-#define LOW_J ((UChar)0x006a)
-#define LOW_K ((UChar)0x006B)
-#define LOW_L ((UChar)0x006C)
-#define LOW_M ((UChar)0x006D)
-#define LOW_N ((UChar)0x006E)
-#define LOW_O ((UChar)0x006F)
-#define LOW_P ((UChar)0x0070)
-#define LOW_Q ((UChar)0x0071)
-#define LOW_R ((UChar)0x0072)
-#define LOW_S ((UChar)0x0073)
-#define LOW_T ((UChar)0x0074)
-#define LOW_U ((UChar)0x0075)
-#define LOW_V ((UChar)0x0076)
-#define LOW_W ((UChar)0x0077)
-#define LOW_Y ((UChar)0x0079)
-#define LOW_Z ((UChar)0x007A)
+#define LOW_A ((char16_t)0x0061)
+#define LOW_B ((char16_t)0x0062)
+#define LOW_C ((char16_t)0x0063)
+#define LOW_D ((char16_t)0x0064)
+#define LOW_E ((char16_t)0x0065)
+#define LOW_F ((char16_t)0x0066)
+#define LOW_G ((char16_t)0x0067)
+#define LOW_H ((char16_t)0x0068)
+#define LOW_I ((char16_t)0x0069)
+#define LOW_J ((char16_t)0x006a)
+#define LOW_K ((char16_t)0x006B)
+#define LOW_L ((char16_t)0x006C)
+#define LOW_M ((char16_t)0x006D)
+#define LOW_N ((char16_t)0x006E)
+#define LOW_O ((char16_t)0x006F)
+#define LOW_P ((char16_t)0x0070)
+#define LOW_Q ((char16_t)0x0071)
+#define LOW_R ((char16_t)0x0072)
+#define LOW_S ((char16_t)0x0073)
+#define LOW_T ((char16_t)0x0074)
+#define LOW_U ((char16_t)0x0075)
+#define LOW_V ((char16_t)0x0076)
+#define LOW_W ((char16_t)0x0077)
+#define LOW_Y ((char16_t)0x0079)
+#define LOW_Z ((char16_t)0x007A)
-#define CAP_A ((UChar)0x0041)
-#define CAP_B ((UChar)0x0042)
-#define CAP_C ((UChar)0x0043)
-#define CAP_D ((UChar)0x0044)
-#define CAP_E ((UChar)0x0045)
-#define CAP_F ((UChar)0x0046)
-#define CAP_G ((UChar)0x0047)
-#define CAP_J ((UChar)0x004A)
-#define CAP_H ((UChar)0x0048)
-#define CAP_K ((UChar)0x004B)
-#define CAP_L ((UChar)0x004C)
-#define CAP_M ((UChar)0x004D)
-#define CAP_O ((UChar)0x004F)
-#define CAP_Q ((UChar)0x0051)
-#define CAP_S ((UChar)0x0053)
-#define CAP_T ((UChar)0x0054)
-#define CAP_U ((UChar)0x0055)
-#define CAP_V ((UChar)0x0056)
-#define CAP_W ((UChar)0x0057)
-#define CAP_Y ((UChar)0x0059)
-#define CAP_Z ((UChar)0x005A)
+#define CAP_A ((char16_t)0x0041)
+#define CAP_B ((char16_t)0x0042)
+#define CAP_C ((char16_t)0x0043)
+#define CAP_D ((char16_t)0x0044)
+#define CAP_E ((char16_t)0x0045)
+#define CAP_F ((char16_t)0x0046)
+#define CAP_G ((char16_t)0x0047)
+#define CAP_J ((char16_t)0x004A)
+#define CAP_H ((char16_t)0x0048)
+#define CAP_K ((char16_t)0x004B)
+#define CAP_L ((char16_t)0x004C)
+#define CAP_M ((char16_t)0x004D)
+#define CAP_O ((char16_t)0x004F)
+#define CAP_Q ((char16_t)0x0051)
+#define CAP_S ((char16_t)0x0053)
+#define CAP_T ((char16_t)0x0054)
+#define CAP_U ((char16_t)0x0055)
+#define CAP_V ((char16_t)0x0056)
+#define CAP_W ((char16_t)0x0057)
+#define CAP_Y ((char16_t)0x0059)
+#define CAP_Z ((char16_t)0x005A)
//#define MINIMUM_SUPPORTED_CALENDAR_FIELD UCAL_MINUTE
diff --git a/Build/source/libs/icu/icu-src/source/i18n/dtitvfmt.cpp b/Build/source/libs/icu/icu-src/source/i18n/dtitvfmt.cpp
index eb5be7846e2..60870146681 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/dtitvfmt.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/dtitvfmt.cpp
@@ -44,7 +44,7 @@ U_NAMESPACE_BEGIN
#endif
-static const UChar gDateFormatSkeleton[][11] = {
+static const char16_t gDateFormatSkeleton[][11] = {
//yMMMMEEEEd
{LOW_Y, CAP_M, CAP_M, CAP_M, CAP_M, CAP_E, CAP_E, CAP_E, CAP_E, LOW_D, 0},
//yMMMMd
@@ -61,10 +61,10 @@ static const char gDateTimePatternsTag[] = "DateTimePatterns";
// latestFirst:
-static const UChar gLaterFirstPrefix[] = {LOW_L, LOW_A, LOW_T, LOW_E, LOW_S,LOW_T, CAP_F, LOW_I, LOW_R, LOW_S, LOW_T, COLON};
+static const char16_t gLaterFirstPrefix[] = {LOW_L, LOW_A, LOW_T, LOW_E, LOW_S,LOW_T, CAP_F, LOW_I, LOW_R, LOW_S, LOW_T, COLON};
// earliestFirst:
-static const UChar gEarlierFirstPrefix[] = {LOW_E, LOW_A, LOW_R, LOW_L, LOW_I, LOW_E, LOW_S, LOW_T, CAP_F, LOW_I, LOW_R, LOW_S, LOW_T, COLON};
+static const char16_t gEarlierFirstPrefix[] = {LOW_E, LOW_A, LOW_R, LOW_L, LOW_I, LOW_E, LOW_S, LOW_T, CAP_F, LOW_I, LOW_R, LOW_S, LOW_T, COLON};
class FormattedDateIntervalData : public FormattedValueFieldPositionIteratorImpl {
@@ -104,7 +104,7 @@ DateIntervalFormat::createInstance(const UnicodeString& skeleton,
UnicodeString pat;
((SimpleDateFormat*)dtfmt)->toPattern(pat);
pat.extract(0, pat.length(), result_1, "UTF-8");
- sprintf(mesg, "skeleton: %s; pattern: %s\n", result, result_1);
+ snprintf(mesg, sizeof(mesg), "skeleton: %s; pattern: %s\n", result, result_1);
PRINTMESG(mesg)
#endif
@@ -761,7 +761,7 @@ DateIntervalFormat::initializePattern(UErrorCode& status) {
char result_1[1000];
char mesg[2000];
fSkeleton.extract(0, fSkeleton.length(), result, "UTF-8");
- sprintf(mesg, "in getBestSkeleton: fSkeleton: %s; \n", result);
+ snprintf(mesg, sizeof(mesg), "in getBestSkeleton: fSkeleton: %s; \n", result);
PRINTMESG(mesg)
#endif
// fSkeleton is already set by createDateIntervalInstance()
@@ -808,7 +808,7 @@ DateIntervalFormat::initializePattern(UErrorCode& status) {
char result_1[1000];
char mesg[2000];
fSkeleton.extract(0, fSkeleton.length(), result, "UTF-8");
- sprintf(mesg, "in getBestSkeleton: fSkeleton: %s; \n", result);
+ snprintf(mesg, sizeof(mesg), "in getBestSkeleton: fSkeleton: %s; \n", result);
PRINTMESG(mesg)
#endif
@@ -827,7 +827,7 @@ DateIntervalFormat::initializePattern(UErrorCode& status) {
dateTimePatternsRes.getAlias(), &status);
int32_t dateTimeFormatLength;
- const UChar* dateTimeFormat = ures_getStringByIndex(
+ const char16_t* dateTimeFormat = ures_getStringByIndex(
dateTimePatternsRes.getAlias(),
(int32_t)DateFormat::kDateTime,
&dateTimeFormatLength, &status);
@@ -964,14 +964,14 @@ UnicodeString
DateIntervalFormat::normalizeHourMetacharacters(const UnicodeString& skeleton) const {
UnicodeString result = skeleton;
- UChar hourMetachar = u'\0';
- UChar dayPeriodChar = u'\0';
+ char16_t hourMetachar = u'\0';
+ char16_t dayPeriodChar = u'\0';
int32_t hourFieldStart = 0;
int32_t hourFieldLength = 0;
int32_t dayPeriodStart = 0;
int32_t dayPeriodLength = 0;
for (int32_t i = 0; i < result.length(); i++) {
- UChar c = result[i];
+ char16_t c = result[i];
if (c == LOW_J || c == CAP_J || c == CAP_C || c == LOW_H || c == CAP_H || c == LOW_K || c == CAP_K) {
if (hourMetachar == u'\0') {
hourMetachar = c;
@@ -993,7 +993,7 @@ DateIntervalFormat::normalizeHourMetacharacters(const UnicodeString& skeleton) c
if (hourMetachar != u'\0') {
UErrorCode err = U_ZERO_ERROR;
- UChar hourChar = CAP_H;
+ char16_t hourChar = CAP_H;
UnicodeString convertedPattern = DateFormat::getBestPattern(fLocale, UnicodeString(hourMetachar), err);
if (U_SUCCESS(err)) {
@@ -1066,11 +1066,11 @@ DateIntervalFormat::getDateTimeSkeleton(const UnicodeString& skeleton,
int32_t mCount = 0;
int32_t vCount = 0;
int32_t zCount = 0;
- UChar hourChar = u'\0';
+ char16_t hourChar = u'\0';
int32_t i;
for (i = 0; i < skeleton.length(); ++i) {
- UChar ch = skeleton[i];
+ char16_t ch = skeleton[i];
switch ( ch ) {
case CAP_E:
dateSkeleton.append(ch);
@@ -1463,7 +1463,7 @@ DateIntervalFormat::setIntervalPattern(UCalendarDateFields field,
// need to look for it from skeleton 'yMMMd',
// if found, adjust field width in interval pattern from
// "MMM" to "MMMM".
- UChar fieldLetter = fgCalendarFieldToPatternLetter[field];
+ char16_t fieldLetter = fgCalendarFieldToPatternLetter[field];
if ( extendedSkeleton ) {
*extendedSkeleton = *skeleton;
*extendedBestSkeleton = *bestSkeleton;
@@ -1506,7 +1506,7 @@ DateIntervalFormat::setIntervalPattern(UCalendarDateFields field,
int32_t U_EXPORT2
DateIntervalFormat::splitPatternInto2Part(const UnicodeString& intervalPattern) {
UBool inQuote = false;
- UChar prevCh = 0;
+ char16_t prevCh = 0;
int32_t count = 0;
/* repeatedPattern used to record whether a pattern has already seen.
@@ -1534,7 +1534,7 @@ DateIntervalFormat::splitPatternInto2Part(const UnicodeString& intervalPattern)
int32_t i;
UBool foundRepetition = false;
for (i = 0; i < intervalPattern.length(); ++i) {
- UChar ch = intervalPattern.charAt(i);
+ char16_t ch = intervalPattern.charAt(i);
if (ch != prevCh && count > 0) {
// check the repeativeness of pattern letter
@@ -1682,7 +1682,7 @@ UBool U_EXPORT2
DateIntervalFormat::fieldExistsInSkeleton(UCalendarDateFields field,
const UnicodeString& skeleton)
{
- const UChar fieldChar = fgCalendarFieldToPatternLetter[field];
+ const char16_t fieldChar = fgCalendarFieldToPatternLetter[field];
return ( (skeleton.indexOf(fieldChar) == -1)?false:true ) ;
}
@@ -1757,17 +1757,17 @@ DateIntervalFormat::adjustFieldWidth(const UnicodeString& inputSkeleton,
}
UBool inQuote = false;
- UChar prevCh = 0;
+ char16_t prevCh = 0;
int32_t count = 0;
// loop through the pattern string character by character
int32_t adjustedPtnLength = adjustedPtn.length();
int32_t i;
for (i = 0; i < adjustedPtnLength; ++i) {
- UChar ch = adjustedPtn.charAt(i);
+ char16_t ch = adjustedPtn.charAt(i);
if (ch != prevCh && count > 0) {
// check the repeativeness of pattern letter
- UChar skeletonChar = prevCh;
+ char16_t skeletonChar = prevCh;
if ( skeletonChar == CAP_L ) {
// there is no "L" (always be "M") in skeleton,
// but there is "L" in pattern.
@@ -1806,7 +1806,7 @@ DateIntervalFormat::adjustFieldWidth(const UnicodeString& inputSkeleton,
if ( count > 0 ) {
// last item
// check the repeativeness of pattern letter
- UChar skeletonChar = prevCh;
+ char16_t skeletonChar = prevCh;
if ( skeletonChar == CAP_L ) {
// there is no "L" (always be "M") in skeleton,
// but there is "L" in pattern.
@@ -1889,7 +1889,7 @@ DateIntervalFormat::concatSingleDate2TimeInterval(UnicodeString& format,
-const UChar
+const char16_t
DateIntervalFormat::fgCalendarFieldToPatternLetter[] =
{
/*GyM*/ CAP_G, LOW_Y, CAP_M,
diff --git a/Build/source/libs/icu/icu-src/source/i18n/dtitvinf.cpp b/Build/source/libs/icu/icu-src/source/i18n/dtitvinf.cpp
index f5fb86ce581..c4b6bbcf401 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/dtitvinf.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/dtitvinf.cpp
@@ -23,6 +23,7 @@
#include <iostream>
#endif
+#include "bytesinkutil.h"
#include "cmemory.h"
#include "cstring.h"
#include "unicode/msgfmt.h"
@@ -35,6 +36,7 @@
#include "uresimp.h"
#include "hash.h"
#include "gregoimp.h"
+#include "ulocimp.h"
#include "uresimp.h"
@@ -55,12 +57,12 @@ static const char gIntervalDateTimePatternTag[]="intervalFormats";
static const char gFallbackPatternTag[]="fallback";
// {0}
-static const UChar gFirstPattern[] = {LEFT_CURLY_BRACKET, DIGIT_ZERO, RIGHT_CURLY_BRACKET};
+static const char16_t gFirstPattern[] = {LEFT_CURLY_BRACKET, DIGIT_ZERO, RIGHT_CURLY_BRACKET};
// {1}
-static const UChar gSecondPattern[] = {LEFT_CURLY_BRACKET, DIGIT_ONE, RIGHT_CURLY_BRACKET};
+static const char16_t gSecondPattern[] = {LEFT_CURLY_BRACKET, DIGIT_ONE, RIGHT_CURLY_BRACKET};
// default fall-back
-static const UChar gDefaultFallbackPattern[] = {LEFT_CURLY_BRACKET, DIGIT_ZERO, RIGHT_CURLY_BRACKET, SPACE, EN_DASH, SPACE, LEFT_CURLY_BRACKET, DIGIT_ONE, RIGHT_CURLY_BRACKET, 0};
+static const char16_t gDefaultFallbackPattern[] = {LEFT_CURLY_BRACKET, DIGIT_ZERO, RIGHT_CURLY_BRACKET, SPACE, EN_DASH, SPACE, LEFT_CURLY_BRACKET, DIGIT_ONE, RIGHT_CURLY_BRACKET, 0};
DateIntervalInfo::DateIntervalInfo(UErrorCode& status)
: fFallbackIntervalPattern(gDefaultFallbackPattern),
@@ -218,10 +220,10 @@ DateIntervalInfo::getFallbackIntervalPattern(UnicodeString& result) const {
static const int32_t PATH_PREFIX_LENGTH = 17;
-static const UChar PATH_PREFIX[] = {SOLIDUS, CAP_L, CAP_O, CAP_C, CAP_A, CAP_L, CAP_E, SOLIDUS,
+static const char16_t PATH_PREFIX[] = {SOLIDUS, CAP_L, CAP_O, CAP_C, CAP_A, CAP_L, CAP_E, SOLIDUS,
LOW_C, LOW_A, LOW_L, LOW_E, LOW_N, LOW_D, LOW_A, LOW_R, SOLIDUS};
static const int32_t PATH_SUFFIX_LENGTH = 16;
-static const UChar PATH_SUFFIX[] = {SOLIDUS, LOW_I, LOW_N, LOW_T, LOW_E, LOW_R, LOW_V, LOW_A,
+static const char16_t PATH_SUFFIX[] = {SOLIDUS, LOW_I, LOW_N, LOW_T, LOW_E, LOW_R, LOW_V, LOW_A,
LOW_L, CAP_F, LOW_O, LOW_R, LOW_M, LOW_A, LOW_T, LOW_S};
/**
@@ -397,17 +399,19 @@ DateIntervalInfo::initializeData(const Locale& locale, UErrorCode& status)
// Get the correct calendar type
const char * calendarTypeToUse = gGregorianTag; // initial default
- char calendarType[ULOC_KEYWORDS_CAPACITY]; // to be filled in with the type to use, if all goes well
char localeWithCalendarKey[ULOC_LOCALE_IDENTIFIER_CAPACITY];
// obtain a locale that always has the calendar key value that should be used
(void)ures_getFunctionalEquivalent(localeWithCalendarKey, ULOC_LOCALE_IDENTIFIER_CAPACITY, nullptr,
"calendar", "calendar", locName, nullptr, false, &status);
localeWithCalendarKey[ULOC_LOCALE_IDENTIFIER_CAPACITY-1] = 0; // ensure null termination
// now get the calendar key value from that locale
- int32_t calendarTypeLen = uloc_getKeywordValue(localeWithCalendarKey, "calendar", calendarType,
- ULOC_KEYWORDS_CAPACITY, &status);
- if (U_SUCCESS(status) && calendarTypeLen < ULOC_KEYWORDS_CAPACITY) {
- calendarTypeToUse = calendarType;
+ CharString calendarType;
+ {
+ CharStringByteSink sink(&calendarType);
+ ulocimp_getKeywordValue(localeWithCalendarKey, "calendar", sink, &status);
+ }
+ if (U_SUCCESS(status)) {
+ calendarTypeToUse = calendarType.data();
}
status = U_ZERO_ERROR;
@@ -424,7 +428,7 @@ DateIntervalInfo::initializeData(const Locale& locale, UErrorCode& status)
UResourceBundle *calTypeBundle, *itvDtPtnResource;
// Get the fallback pattern
- const UChar* resStr = nullptr;
+ const char16_t* resStr = nullptr;
int32_t resStrLen = 0;
calTypeBundle = ures_getByKeyWithFallback(calBundle, calendarTypeToUse, nullptr, &status);
itvDtPtnResource = ures_getByKeyWithFallback(calTypeBundle,
@@ -504,7 +508,7 @@ DateIntervalInfo::setIntervalPatternInternally(const UnicodeString& skeleton,
}
patternsOfOneSkeleton[index] = intervalPattern;
- if ( emptyHash == true ) {
+ if ( emptyHash ) {
fIntervalPatterns->put(skeleton, patternsOfOneSkeleton, status);
}
}
@@ -547,7 +551,7 @@ DateIntervalInfo::getBestSkeleton(const UnicodeString& skeleton,
char result_1[1000];
char mesg[2000];
skeleton.extract(0, skeleton.length(), result, "UTF-8");
- sprintf(mesg, "in getBestSkeleton: skeleton: %s; \n", result);
+ snprintf(mesg, sizeof(mesg), "in getBestSkeleton: skeleton: %s; \n", result);
PRINTMESG(mesg)
#endif
@@ -616,7 +620,7 @@ DateIntervalInfo::getBestSkeleton(const UnicodeString& skeleton,
UnicodeString* newSkeleton = (UnicodeString*)keyTok.pointer;
#ifdef DTITVINF_DEBUG
skeleton->extract(0, skeleton->length(), result, "UTF-8");
- sprintf(mesg, "available skeletons: skeleton: %s; \n", result);
+ snprintf(mesg, sizeof(mesg), "available skeletons: skeleton: %s; \n", result);
PRINTMESG(mesg)
#endif
@@ -748,7 +752,7 @@ U_CALLCONV dtitvinfHashTableValueComparator(UHashTok val1, UHashTok val2) {
const UnicodeString* pattern2 = (UnicodeString*)val2.pointer;
UBool ret = true;
int8_t i;
- for ( i = 0; i < DateIntervalInfo::kMaxIntervalPatternIndex && ret == true; ++i ) {
+ for ( i = 0; i < DateIntervalInfo::kMaxIntervalPatternIndex && ret ; ++i ) {
ret = (pattern1[i] == pattern2[i]);
}
return ret;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/dtptngen.cpp b/Build/source/libs/icu/icu-src/source/i18n/dtptngen.cpp
index f4e28de91bc..aa23b7cd4a6 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/dtptngen.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/dtptngen.cpp
@@ -29,6 +29,7 @@
#include "unicode/ustring.h"
#include "unicode/rep.h"
#include "unicode/region.h"
+#include "bytesinkutil.h"
#include "cpputils.h"
#include "mutex.h"
#include "umutex.h"
@@ -37,7 +38,9 @@
#include "locbased.h"
#include "hash.h"
#include "uhash.h"
+#include "ulocimp.h"
#include "uresimp.h"
+#include "ulocimp.h"
#include "dtptngen_impl.h"
#include "ucln_in.h"
#include "charstr.h"
@@ -58,7 +61,7 @@
#include "uarrsort.h"
struct UResAEntry {
- UChar *key;
+ char16_t *key;
UResourceBundle *item;
};
@@ -97,7 +100,7 @@ static void ures_a_open(UResourceBundleAIterator *aiter, UResourceBundle *bund,
aiter->entries[i].item = ures_getByIndex(aiter->bund, i, nullptr, status);
const char *akey = ures_getKey(aiter->entries[i].item);
int32_t len = uprv_strlen(akey)+1;
- aiter->entries[i].key = (UChar*)uprv_malloc(len*sizeof(UChar));
+ aiter->entries[i].key = (char16_t*)uprv_malloc(len*sizeof(char16_t));
u_charsToUChars(akey, aiter->entries[i].key, len);
}
uprv_sortArray(aiter->entries, aiter->num, sizeof(UResAEntry), ures_a_codepointSort, nullptr, true, status);
@@ -113,13 +116,13 @@ static void ures_a_close(UResourceBundleAIterator *aiter) {
#endif
}
-static const UChar *ures_a_getNextString(UResourceBundleAIterator *aiter, int32_t *len, const char **key, UErrorCode *err) {
+static const char16_t *ures_a_getNextString(UResourceBundleAIterator *aiter, int32_t *len, const char **key, UErrorCode *err) {
#if !defined(U_SORT_ASCII_BUNDLE_ITERATOR)
return ures_getNextString(aiter->bund, len, key, err);
#else
if(U_FAILURE(*err)) return nullptr;
UResourceBundle *item = aiter->entries[aiter->cursor].item;
- const UChar* ret = ures_getString(item, len, err);
+ const char16_t* ret = ures_getString(item, len, err);
*key = ures_getKey(item);
aiter->cursor++;
return ret;
@@ -135,7 +138,7 @@ U_NAMESPACE_BEGIN
// *****************************************************************************
// class DateTimePatternGenerator
// *****************************************************************************
-static const UChar Canonical_Items[] = {
+static const char16_t Canonical_Items[] = {
// GyQMwWEDFdaHmsSv
CAP_G, LOW_Y, CAP_Q, CAP_M, LOW_W, CAP_W, CAP_E,
CAP_D, CAP_F, LOW_D, LOW_A, // The UDATPG_x_FIELD constants and these fields have a different order than in ICU4J
@@ -277,10 +280,10 @@ static constexpr UDateTimePGDisplayWidth UDATPG_WIDTH_APPENDITEM = UDATPG_WIDE;
static constexpr int32_t UDATPG_FIELD_KEY_MAX = 24; // max length of CLDR field tag (type + width)
// For appendItems
-static const UChar UDATPG_ItemFormat[]= {0x7B, 0x30, 0x7D, 0x20, 0x251C, 0x7B, 0x32, 0x7D, 0x3A,
+static const char16_t UDATPG_ItemFormat[]= {0x7B, 0x30, 0x7D, 0x20, 0x251C, 0x7B, 0x32, 0x7D, 0x3A,
0x20, 0x7B, 0x31, 0x7D, 0x2524, 0}; // {0} \u251C{2}: {1}\u2524
-//static const UChar repeatedPatterns[6]={CAP_G, CAP_E, LOW_Z, LOW_V, CAP_Q, 0}; // "GEzvQ"
+//static const char16_t repeatedPatterns[6]={CAP_G, CAP_E, LOW_Z, LOW_V, CAP_Q, 0}; // "GEzvQ"
static const char DT_DateTimePatternsTag[]="DateTimePatterns";
static const char DT_DateAtTimePatternsTag[]="DateTimePatterns%atTime";
@@ -655,17 +658,9 @@ void DateTimePatternGenerator::getAllowedHourFormats(const Locale &locale, UErro
if (U_FAILURE(status)) { return; }
const char *language = locale.getLanguage();
- const char *country = locale.getCountry();
-
- char regionOverride[8];
- int32_t regionOverrideLength = locale.getKeywordValue("rg", regionOverride, sizeof(regionOverride), status);
- if (U_SUCCESS(status) && regionOverrideLength > 0) {
- country = regionOverride;
- if (regionOverrideLength > 2) {
- // chop off any subdivision codes that may have been included
- regionOverride[2] = '\0';
- }
- }
+ char baseCountry[8];
+ ulocimp_getRegionForSupplementalData(locale.getName(), false, baseCountry, 8, &status);
+ const char* country = baseCountry;
Locale maxLocale; // must be here for correct lifetime
if (*language == '\0' || *country == '\0') {
@@ -864,7 +859,7 @@ DateTimePatternGenerator::hackTimes(const UnicodeString& hackPattern, UErrorCode
mmss+=field;
}
else {
- UChar ch=field.charAt(0);
+ char16_t ch=field.charAt(0);
if (ch==LOW_M) {
gotMm=true;
mmss+=field;
@@ -910,22 +905,19 @@ DateTimePatternGenerator::getCalendarTypeToUse(const Locale& locale, CharString&
&localStatus);
localeWithCalendarKey[ULOC_LOCALE_IDENTIFIER_CAPACITY-1] = 0; // ensure null termination
// now get the calendar key value from that locale
- char calendarType[ULOC_KEYWORDS_CAPACITY];
- int32_t calendarTypeLen = uloc_getKeywordValue(
- localeWithCalendarKey,
- "calendar",
- calendarType,
- ULOC_KEYWORDS_CAPACITY,
- &localStatus);
+ destination.clear();
+ {
+ CharStringByteSink sink(&destination);
+ ulocimp_getKeywordValue(
+ localeWithCalendarKey,
+ "calendar",
+ sink,
+ &localStatus);
+ }
// If the input locale was invalid, don't fail with missing resource error, instead
// continue with default of Gregorian.
if (U_FAILURE(localStatus) && localStatus != U_MISSING_RESOURCE_ERROR) {
err = localStatus;
- return;
- }
- if (calendarTypeLen > 0 && calendarTypeLen < ULOC_KEYWORDS_CAPACITY) {
- destination.clear().append(calendarType, -1, err);
- if (U_FAILURE(err)) { return; }
}
}
}
@@ -1001,11 +993,11 @@ struct DateTimePatternGenerator::AppendItemNamesSink : public ResourceSink {
U_ASSERT(i < 20);
if (i < 10) {
// F0, F1, ..., F9
- valueStr += (UChar)(i+0x30);
+ valueStr += (char16_t)(i+0x30);
} else {
// F10, F11, ...
- valueStr += (UChar)0x31;
- valueStr += (UChar)(i-10 + 0x30);
+ valueStr += (char16_t)0x31;
+ valueStr += (char16_t)(i-10 + 0x30);
}
// NUL-terminate for the C API.
valueStr.getTerminatedBuffer();
@@ -1031,7 +1023,7 @@ struct DateTimePatternGenerator::AvailableFormatsSink : public ResourceSink {
AvailableFormatsSink(DateTimePatternGenerator& _dtpg) : dtpg(_dtpg) {}
virtual ~AvailableFormatsSink();
- virtual void put(const char *key, ResourceValue &value, UBool isRoot,
+ virtual void put(const char *key, ResourceValue &value, UBool /*isRoot*/,
UErrorCode &errorCode) override {
const UnicodeString formatKey(key, -1, US_INV);
if (!dtpg.isAvailableFormatSet(formatKey) ) {
@@ -1040,7 +1032,7 @@ struct DateTimePatternGenerator::AvailableFormatsSink : public ResourceSink {
// derived from std patterns, but not a previous availableFormats entry:
const UnicodeString& formatValue = value.getUnicodeString(errorCode);
conflictingPattern.remove();
- dtpg.addPatternWithSkeleton(formatValue, &formatKey, !isRoot, conflictingPattern, errorCode);
+ dtpg.addPatternWithSkeleton(formatValue, &formatKey, true, conflictingPattern, errorCode);
}
}
};
@@ -1250,7 +1242,7 @@ DateTimePatternGenerator::mapSkeletonMetacharacters(const UnicodeString& pattern
UBool inQuoted = false;
int32_t patPos, patLen = patternForm.length();
for (patPos = 0; patPos < patLen; patPos++) {
- UChar patChr = patternForm.charAt(patPos);
+ char16_t patChr = patternForm.charAt(patPos);
if (patChr == SINGLE_QUOTE) {
inQuoted = !inQuoted;
} else if (!inQuoted) {
@@ -1268,8 +1260,8 @@ DateTimePatternGenerator::mapSkeletonMetacharacters(const UnicodeString& pattern
}
int32_t hourLen = 1 + (extraLen & 1);
int32_t dayPeriodLen = (extraLen < 2)? 1: 3 + (extraLen >> 1);
- UChar hourChar = LOW_H;
- UChar dayPeriodChar = LOW_A;
+ char16_t hourChar = LOW_H;
+ char16_t dayPeriodChar = LOW_A;
if (patChr == LOW_J) {
hourChar = fDefaultHourFormatChar;
} else {
@@ -1414,7 +1406,7 @@ void
DateTimePatternGenerator::setDateTimeFromCalendar(const Locale& locale, UErrorCode& status) {
if (U_FAILURE(status)) { return; }
- const UChar *resStr;
+ const char16_t *resStr;
int32_t resStrLen = 0;
LocalUResourceBundlePointer calData(ures_open(nullptr, locale.getBaseName(), &status));
@@ -1719,7 +1711,7 @@ DateTimePatternGenerator::adjustFieldTypes(const UnicodeString& pattern,
// a) The length of the field in the skeleton (skelFieldLen) is equal to reqFieldLen.
// b) The pattern field is numeric and the skeleton field is not, or vice versa.
- UChar reqFieldChar = dtMatcher->skeleton.original.getFieldChar(typeValue);
+ char16_t reqFieldChar = dtMatcher->skeleton.original.getFieldChar(typeValue);
int32_t reqFieldLen = dtMatcher->skeleton.original.getFieldLength(typeValue);
if (reqFieldChar == CAP_E && reqFieldLen < 3)
reqFieldLen = 3; // 1-3 for E are equivalent to 3 for c,e
@@ -1741,7 +1733,7 @@ DateTimePatternGenerator::adjustFieldTypes(const UnicodeString& pattern,
adjFieldLen = field.length();
}
}
- UChar c = (typeValue!= UDATPG_HOUR_FIELD
+ char16_t c = (typeValue!= UDATPG_HOUR_FIELD
&& typeValue!= UDATPG_MONTH_FIELD
&& typeValue!= UDATPG_WEEKDAY_FIELD
&& (typeValue!= UDATPG_YEAR_FIELD || reqFieldChar==CAP_Y))
@@ -2051,7 +2043,7 @@ PatternMap::copyFrom(const PatternMap& other, UErrorCode& status) {
}
PtnElem*
-PatternMap::getHeader(UChar baseChar) const {
+PatternMap::getHeader(char16_t baseChar) const {
PtnElem* curElem;
if ( (baseChar >= CAP_A) && (baseChar <= CAP_Z) ) {
@@ -2083,7 +2075,7 @@ PatternMap::add(const UnicodeString& basePattern,
const UnicodeString& value,// mapped pattern value
UBool skeletonWasSpecified,
UErrorCode &status) {
- UChar baseChar = basePattern.charAt(0);
+ char16_t baseChar = basePattern.charAt(0);
PtnElem *curElem, *baseElem;
status = U_ZERO_ERROR;
@@ -2177,10 +2169,10 @@ PatternMap::getPatternFromBasePattern(const UnicodeString& basePattern, UBool& s
// Find the pattern from the given skeleton.
-// At least when this is called from getBestRaw & addPattern (in which case specifiedSkeletonPtr is non-NULL),
+// At least when this is called from getBestRaw & addPattern (in which case specifiedSkeletonPtr is non-nullptr),
// the comparison should be based on skeleton.original (which is unique and tied to the distance measurement in bestRaw)
// and not skeleton.baseOriginal (which is not unique); otherwise we may pick a different skeleton than the one with the
-// optimum distance value in getBestRaw. When this is called from public getRedundants (specifiedSkeletonPtr is NULL),
+// optimum distance value in getBestRaw. When this is called from public getRedundants (specifiedSkeletonPtr is nullptr),
// for now it will continue to compare based on baseOriginal so as not to change the behavior unnecessarily.
const UnicodeString *
PatternMap::getPatternFromSkeleton(const PtnSkeleton& skeleton, const PtnSkeleton** specifiedSkeletonPtr) const { // key to search for
@@ -2191,7 +2183,7 @@ PatternMap::getPatternFromSkeleton(const PtnSkeleton& skeleton, const PtnSkeleto
}
// find boot entry
- UChar baseChar = skeleton.getFirstChar();
+ char16_t baseChar = skeleton.getFirstChar();
if ((curElem=getHeader(baseChar))==nullptr) {
return nullptr; // no match
}
@@ -2287,7 +2279,7 @@ PatternMap::getDuplicateElem(
} // PatternMap::getDuplicateElem
-DateTimeMatcher::DateTimeMatcher(void) {
+DateTimeMatcher::DateTimeMatcher() {
}
DateTimeMatcher::~DateTimeMatcher() {}
@@ -2335,7 +2327,7 @@ DateTimeMatcher::set(const UnicodeString& pattern, FormatParser* fp, PtnSkeleton
const dtTypeElem *row = &dtTypes[canonicalIndex];
int32_t field = row->field;
skeletonResult.original.populate(field, value);
- UChar repeatChar = row->patternChar;
+ char16_t repeatChar = row->patternChar;
int32_t repeatCount = row->minLen;
skeletonResult.baseOriginal.populate(field, repeatChar, repeatCount);
int16_t subField = row->type;
@@ -2493,7 +2485,7 @@ FormatParser::setTokens(const UnicodeString& pattern, int32_t startPos, int32_t
}
// check the current char is between A-Z or a-z
do {
- UChar c=pattern.charAt(curLoc);
+ char16_t c=pattern.charAt(curLoc);
if ( (c>=CAP_A && c<=CAP_Z) || (c>=LOW_A && c<=LOW_Z) ) {
curLoc++;
}
@@ -2537,7 +2529,7 @@ FormatParser::getCanonicalIndex(const UnicodeString& s, UBool strict) {
if (len == 0) {
return -1;
}
- UChar ch = s.charAt(0);
+ char16_t ch = s.charAt(0);
// Verify that all are the same character.
for (int32_t l = 1; l < len; l++) {
@@ -2605,7 +2597,7 @@ FormatParser::getQuoteLiteral(UnicodeString& quote, int32_t *itemIndex) {
UBool
FormatParser::isPatternSeparator(const UnicodeString& field) const {
for (int32_t i=0; i<field.length(); ++i ) {
- UChar c= field.charAt(i);
+ char16_t c= field.charAt(i);
if ( (c==SINGLE_QUOTE) || (c==BACKSLASH) || (c==SPACE) || (c==COLON) ||
(c==QUOTATION_MARK) || (c==COMMA) || (c==HYPHEN) ||(items[i].charAt(0)==DOT) ) {
continue;
@@ -2737,7 +2729,7 @@ void SkeletonFields::clearField(int32_t field) {
lengths[field] = 0;
}
-UChar SkeletonFields::getFieldChar(int32_t field) const {
+char16_t SkeletonFields::getFieldChar(int32_t field) const {
return chars[field];
}
@@ -2749,7 +2741,7 @@ void SkeletonFields::populate(int32_t field, const UnicodeString& value) {
populate(field, value.charAt(0), value.length());
}
-void SkeletonFields::populate(int32_t field, UChar ch, int32_t length) {
+void SkeletonFields::populate(int32_t field, char16_t ch, int32_t length) {
chars[field] = (int8_t) ch;
lengths[field] = (int8_t) length;
}
@@ -2766,7 +2758,7 @@ UnicodeString& SkeletonFields::appendTo(UnicodeString& string) const {
}
UnicodeString& SkeletonFields::appendFieldTo(int32_t field, UnicodeString& string) const {
- UChar ch(chars[field]);
+ char16_t ch(chars[field]);
int32_t length = (int32_t) lengths[field];
for (int32_t i=0; i<length; i++) {
@@ -2775,7 +2767,7 @@ UnicodeString& SkeletonFields::appendFieldTo(int32_t field, UnicodeString& strin
return string;
}
-UChar SkeletonFields::getFirstChar() const {
+char16_t SkeletonFields::getFirstChar() const {
for (int32_t i = 0; i < UDATPG_FIELD_COUNT; ++i) {
if (lengths[i] != 0) {
return chars[i];
@@ -2839,7 +2831,7 @@ PtnSkeleton::getBaseSkeleton() const {
return result;
}
-UChar
+char16_t
PtnSkeleton::getFirstChar() const {
return baseOriginal.getFirstChar();
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/dtptngen_impl.h b/Build/source/libs/icu/icu-src/source/i18n/dtptngen_impl.h
index 5caae11654b..74fe925b2f6 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/dtptngen_impl.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/dtptngen_impl.h
@@ -32,66 +32,66 @@
#define EXTRA_FIELD 0x10000
#define MISSING_FIELD 0x1000
#define MAX_STRING_ENUMERATION 200
-#define SINGLE_QUOTE ((UChar)0x0027)
-#define FORWARDSLASH ((UChar)0x002F)
-#define BACKSLASH ((UChar)0x005C)
-#define SPACE ((UChar)0x0020)
-#define QUOTATION_MARK ((UChar)0x0022)
-#define ASTERISK ((UChar)0x002A)
-#define PLUSSITN ((UChar)0x002B)
-#define COMMA ((UChar)0x002C)
-#define HYPHEN ((UChar)0x002D)
-#define DOT ((UChar)0x002E)
-#define COLON ((UChar)0x003A)
-#define CAP_A ((UChar)0x0041)
-#define CAP_B ((UChar)0x0042)
-#define CAP_C ((UChar)0x0043)
-#define CAP_D ((UChar)0x0044)
-#define CAP_E ((UChar)0x0045)
-#define CAP_F ((UChar)0x0046)
-#define CAP_G ((UChar)0x0047)
-#define CAP_H ((UChar)0x0048)
-#define CAP_J ((UChar)0x004A)
-#define CAP_K ((UChar)0x004B)
-#define CAP_L ((UChar)0x004C)
-#define CAP_M ((UChar)0x004D)
-#define CAP_O ((UChar)0x004F)
-#define CAP_Q ((UChar)0x0051)
-#define CAP_S ((UChar)0x0053)
-#define CAP_T ((UChar)0x0054)
-#define CAP_U ((UChar)0x0055)
-#define CAP_V ((UChar)0x0056)
-#define CAP_W ((UChar)0x0057)
-#define CAP_X ((UChar)0x0058)
-#define CAP_Y ((UChar)0x0059)
-#define CAP_Z ((UChar)0x005A)
-#define LOWLINE ((UChar)0x005F)
-#define LOW_A ((UChar)0x0061)
-#define LOW_B ((UChar)0x0062)
-#define LOW_C ((UChar)0x0063)
-#define LOW_D ((UChar)0x0064)
-#define LOW_E ((UChar)0x0065)
-#define LOW_F ((UChar)0x0066)
-#define LOW_G ((UChar)0x0067)
-#define LOW_H ((UChar)0x0068)
-#define LOW_I ((UChar)0x0069)
-#define LOW_J ((UChar)0x006A)
-#define LOW_K ((UChar)0x006B)
-#define LOW_L ((UChar)0x006C)
-#define LOW_M ((UChar)0x006D)
-#define LOW_N ((UChar)0x006E)
-#define LOW_O ((UChar)0x006F)
-#define LOW_P ((UChar)0x0070)
-#define LOW_Q ((UChar)0x0071)
-#define LOW_R ((UChar)0x0072)
-#define LOW_S ((UChar)0x0073)
-#define LOW_T ((UChar)0x0074)
-#define LOW_U ((UChar)0x0075)
-#define LOW_V ((UChar)0x0076)
-#define LOW_W ((UChar)0x0077)
-#define LOW_X ((UChar)0x0078)
-#define LOW_Y ((UChar)0x0079)
-#define LOW_Z ((UChar)0x007A)
+#define SINGLE_QUOTE ((char16_t)0x0027)
+#define FORWARDSLASH ((char16_t)0x002F)
+#define BACKSLASH ((char16_t)0x005C)
+#define SPACE ((char16_t)0x0020)
+#define QUOTATION_MARK ((char16_t)0x0022)
+#define ASTERISK ((char16_t)0x002A)
+#define PLUSSITN ((char16_t)0x002B)
+#define COMMA ((char16_t)0x002C)
+#define HYPHEN ((char16_t)0x002D)
+#define DOT ((char16_t)0x002E)
+#define COLON ((char16_t)0x003A)
+#define CAP_A ((char16_t)0x0041)
+#define CAP_B ((char16_t)0x0042)
+#define CAP_C ((char16_t)0x0043)
+#define CAP_D ((char16_t)0x0044)
+#define CAP_E ((char16_t)0x0045)
+#define CAP_F ((char16_t)0x0046)
+#define CAP_G ((char16_t)0x0047)
+#define CAP_H ((char16_t)0x0048)
+#define CAP_J ((char16_t)0x004A)
+#define CAP_K ((char16_t)0x004B)
+#define CAP_L ((char16_t)0x004C)
+#define CAP_M ((char16_t)0x004D)
+#define CAP_O ((char16_t)0x004F)
+#define CAP_Q ((char16_t)0x0051)
+#define CAP_S ((char16_t)0x0053)
+#define CAP_T ((char16_t)0x0054)
+#define CAP_U ((char16_t)0x0055)
+#define CAP_V ((char16_t)0x0056)
+#define CAP_W ((char16_t)0x0057)
+#define CAP_X ((char16_t)0x0058)
+#define CAP_Y ((char16_t)0x0059)
+#define CAP_Z ((char16_t)0x005A)
+#define LOWLINE ((char16_t)0x005F)
+#define LOW_A ((char16_t)0x0061)
+#define LOW_B ((char16_t)0x0062)
+#define LOW_C ((char16_t)0x0063)
+#define LOW_D ((char16_t)0x0064)
+#define LOW_E ((char16_t)0x0065)
+#define LOW_F ((char16_t)0x0066)
+#define LOW_G ((char16_t)0x0067)
+#define LOW_H ((char16_t)0x0068)
+#define LOW_I ((char16_t)0x0069)
+#define LOW_J ((char16_t)0x006A)
+#define LOW_K ((char16_t)0x006B)
+#define LOW_L ((char16_t)0x006C)
+#define LOW_M ((char16_t)0x006D)
+#define LOW_N ((char16_t)0x006E)
+#define LOW_O ((char16_t)0x006F)
+#define LOW_P ((char16_t)0x0070)
+#define LOW_Q ((char16_t)0x0071)
+#define LOW_R ((char16_t)0x0072)
+#define LOW_S ((char16_t)0x0073)
+#define LOW_T ((char16_t)0x0074)
+#define LOW_U ((char16_t)0x0075)
+#define LOW_V ((char16_t)0x0076)
+#define LOW_W ((char16_t)0x0077)
+#define LOW_X ((char16_t)0x0078)
+#define LOW_Y ((char16_t)0x0079)
+#define LOW_Z ((char16_t)0x007A)
#define DT_NARROW -0x101
#define DT_SHORTER -0x102
#define DT_SHORT -0x103
@@ -111,7 +111,7 @@ typedef enum dtStrEnum {
}dtStrEnum;
typedef struct dtTypeElem {
- UChar patternChar;
+ char16_t patternChar;
UDateTimePatternField field;
int16_t type;
int16_t minLen;
@@ -126,14 +126,14 @@ public:
void clear();
void copyFrom(const SkeletonFields& other);
void clearField(int32_t field);
- UChar getFieldChar(int32_t field) const;
+ char16_t getFieldChar(int32_t field) const;
int32_t getFieldLength(int32_t field) const;
void populate(int32_t field, const UnicodeString& value);
- void populate(int32_t field, UChar repeatChar, int32_t repeatCount);
+ void populate(int32_t field, char16_t repeatChar, int32_t repeatCount);
UBool isFieldEmpty(int32_t field) const;
UnicodeString& appendTo(UnicodeString& string) const;
UnicodeString& appendFieldTo(int32_t field, UnicodeString& string) const;
- UChar getFirstChar() const;
+ char16_t getFirstChar() const;
inline bool operator==(const SkeletonFields& other) const;
inline bool operator!=(const SkeletonFields& other) const;
@@ -165,7 +165,7 @@ public:
UBool equals(const PtnSkeleton& other) const;
UnicodeString getSkeleton() const;
UnicodeString getBaseSkeleton() const;
- UChar getFirstChar() const;
+ char16_t getFirstChar() const;
// TODO: Why is this virtual, as well as the other destructors in this file? We don't want
// vtables when we don't use class objects polymorphically.
@@ -252,7 +252,7 @@ public:
const UnicodeString* getPatternFromBasePattern(const UnicodeString& basePattern, UBool& skeletonWasSpecified) const;
const UnicodeString* getPatternFromSkeleton(const PtnSkeleton& skeleton, const PtnSkeleton** specifiedSkeletonPtr = 0) const;
void copyFrom(const PatternMap& other, UErrorCode& status);
- PtnElem* getHeader(UChar baseChar) const;
+ PtnElem* getHeader(char16_t baseChar) const;
UBool equals(const PatternMap& other) const;
private:
UBool isDupAllowed;
@@ -278,8 +278,8 @@ class DTSkeletonEnumeration : public StringEnumeration {
public:
DTSkeletonEnumeration(PatternMap& patternMap, dtStrEnum type, UErrorCode& status);
virtual ~DTSkeletonEnumeration();
- static UClassID U_EXPORT2 getStaticClassID(void);
- virtual UClassID getDynamicClassID(void) const override;
+ static UClassID U_EXPORT2 getStaticClassID();
+ virtual UClassID getDynamicClassID() const override;
virtual const UnicodeString* snext(UErrorCode& status) override;
virtual void reset(UErrorCode& status) override;
virtual int32_t count(UErrorCode& status) const override;
@@ -293,8 +293,8 @@ class DTRedundantEnumeration : public StringEnumeration {
public:
DTRedundantEnumeration();
virtual ~DTRedundantEnumeration();
- static UClassID U_EXPORT2 getStaticClassID(void);
- virtual UClassID getDynamicClassID(void) const override;
+ static UClassID U_EXPORT2 getStaticClassID();
+ virtual UClassID getDynamicClassID() const override;
virtual const UnicodeString* snext(UErrorCode& status) override;
virtual void reset(UErrorCode& status) override;
virtual int32_t count(UErrorCode& status) const override;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/dtrule.cpp b/Build/source/libs/icu/icu-src/source/i18n/dtrule.cpp
index 63949b63aa9..7322cbfdad4 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/dtrule.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/dtrule.cpp
@@ -100,37 +100,37 @@ DateTimeRule::operator!=(const DateTimeRule& that) const {
}
DateTimeRule::DateRuleType
-DateTimeRule::getDateRuleType(void) const {
+DateTimeRule::getDateRuleType() const {
return fDateRuleType;
}
DateTimeRule::TimeRuleType
-DateTimeRule::getTimeRuleType(void) const {
+DateTimeRule::getTimeRuleType() const {
return fTimeRuleType;
}
int32_t
-DateTimeRule::getRuleMonth(void) const {
+DateTimeRule::getRuleMonth() const {
return fMonth;
}
int32_t
-DateTimeRule::getRuleDayOfMonth(void) const {
+DateTimeRule::getRuleDayOfMonth() const {
return fDayOfMonth;
}
int32_t
-DateTimeRule::getRuleDayOfWeek(void) const {
+DateTimeRule::getRuleDayOfWeek() const {
return fDayOfWeek;
}
int32_t
-DateTimeRule::getRuleWeekInMonth(void) const {
+DateTimeRule::getRuleWeekInMonth() const {
return fWeekInMonth;
}
int32_t
-DateTimeRule::getRuleMillisInDay(void) const {
+DateTimeRule::getRuleMillisInDay() const {
return fMillisInDay;
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/erarules.cpp b/Build/source/libs/icu/icu-src/source/i18n/erarules.cpp
index ffc7c993a22..65405bb84aa 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/erarules.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/erarules.cpp
@@ -31,8 +31,8 @@ static const int32_t DAY_MASK = 0x000000FF;
static const int32_t MAX_INT32 = 0x7FFFFFFF;
static const int32_t MIN_INT32 = 0xFFFFFFFF;
-static const UChar VAL_FALSE[] = {0x66, 0x61, 0x6c, 0x73, 0x65}; // "false"
-static const UChar VAL_FALSE_LEN = 5;
+static const char16_t VAL_FALSE[] = {0x66, 0x61, 0x6c, 0x73, 0x65}; // "false"
+static const char16_t VAL_FALSE_LEN = 5;
static UBool isSet(int startDate) {
return startDate != 0;
@@ -54,7 +54,7 @@ static UBool isValidRuleStartDate(int32_t year, int32_t month, int32_t day) {
* @return an encoded date.
*/
static int32_t encodeDate(int32_t year, int32_t month, int32_t day) {
- return year << 16 | month << 8 | day;
+ return (int32_t)((uint32_t)year << 16) | month << 8 | day;
}
static void decodeDate(int32_t encodedDate, int32_t (&fields)[3]) {
@@ -176,7 +176,7 @@ EraRules* EraRules::createInstance(const char *calType, UBool includeTentativeEr
}
startDates[eraIdx] = encodeDate(fields[0], fields[1], fields[2]);
} else if (uprv_strcmp(key, "named") == 0) {
- const UChar *val = ures_getString(res.getAlias(), &len, &status);
+ const char16_t *val = ures_getString(res.getAlias(), &len, &status);
if (u_strncmp(val, VAL_FALSE, VAL_FALSE_LEN) == 0) {
hasName = false;
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/esctrn.cpp b/Build/source/libs/icu/icu-src/source/i18n/esctrn.cpp
index 00c1304d245..24fa6f58e45 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/esctrn.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/esctrn.cpp
@@ -20,14 +20,14 @@
U_NAMESPACE_BEGIN
-static const UChar UNIPRE[] = {85,43,0}; // "U+"
-static const UChar BS_u[] = {92,117,0}; // "\\u"
-static const UChar BS_U[] = {92,85,0}; // "\\U"
-static const UChar XMLPRE[] = {38,35,120,0}; // "&#x"
-static const UChar XML10PRE[] = {38,35,0}; // "&#"
-static const UChar PERLPRE[] = {92,120,123,0}; // "\\x{"
-static const UChar SEMI[] = {59,0}; // ";"
-static const UChar RBRACE[] = {125,0}; // "}"
+static const char16_t UNIPRE[] = {85,43,0}; // "U+"
+static const char16_t BS_u[] = {92,117,0}; // "\\u"
+static const char16_t BS_U[] = {92,85,0}; // "\\U"
+static const char16_t XMLPRE[] = {38,35,120,0}; // "&#x"
+static const char16_t XML10PRE[] = {38,35,0}; // "&#"
+static const char16_t PERLPRE[] = {92,120,123,0}; // "\\x{"
+static const char16_t SEMI[] = {59,0}; // ";"
+static const char16_t RBRACE[] = {125,0}; // "}"
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(EscapeTransliterator)
@@ -36,28 +36,28 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(EscapeTransliterator)
*/
static Transliterator* _createEscUnicode(const UnicodeString& ID, Transliterator::Token /*context*/) {
// Unicode: "U+10FFFF" hex, min=4, max=6
- return new EscapeTransliterator(ID, UnicodeString(true, UNIPRE, 2), UnicodeString(), 16, 4, true, NULL);
+ return new EscapeTransliterator(ID, UnicodeString(true, UNIPRE, 2), UnicodeString(), 16, 4, true, nullptr);
}
static Transliterator* _createEscJava(const UnicodeString& ID, Transliterator::Token /*context*/) {
// Java: "\\uFFFF" hex, min=4, max=4
- return new EscapeTransliterator(ID, UnicodeString(true, BS_u, 2), UnicodeString(), 16, 4, false, NULL);
+ return new EscapeTransliterator(ID, UnicodeString(true, BS_u, 2), UnicodeString(), 16, 4, false, nullptr);
}
static Transliterator* _createEscC(const UnicodeString& ID, Transliterator::Token /*context*/) {
// C: "\\uFFFF" hex, min=4, max=4; \\U0010FFFF hex, min=8, max=8
return new EscapeTransliterator(ID, UnicodeString(true, BS_u, 2), UnicodeString(), 16, 4, true,
- new EscapeTransliterator(UnicodeString(), UnicodeString(true, BS_U, 2), UnicodeString(), 16, 8, true, NULL));
+ new EscapeTransliterator(UnicodeString(), UnicodeString(true, BS_U, 2), UnicodeString(), 16, 8, true, nullptr));
}
static Transliterator* _createEscXML(const UnicodeString& ID, Transliterator::Token /*context*/) {
// XML: "&#x10FFFF;" hex, min=1, max=6
- return new EscapeTransliterator(ID, UnicodeString(true, XMLPRE, 3), UnicodeString(SEMI[0]), 16, 1, true, NULL);
+ return new EscapeTransliterator(ID, UnicodeString(true, XMLPRE, 3), UnicodeString(SEMI[0]), 16, 1, true, nullptr);
}
static Transliterator* _createEscXML10(const UnicodeString& ID, Transliterator::Token /*context*/) {
// XML10: "&1114111;" dec, min=1, max=7 (not really "Any-Hex")
- return new EscapeTransliterator(ID, UnicodeString(true, XML10PRE, 2), UnicodeString(SEMI[0]), 10, 1, true, NULL);
+ return new EscapeTransliterator(ID, UnicodeString(true, XML10PRE, 2), UnicodeString(SEMI[0]), 10, 1, true, nullptr);
}
static Transliterator* _createEscPerl(const UnicodeString& ID, Transliterator::Token /*context*/) {
// Perl: "\\x{263A}" hex, min=1, max=6
- return new EscapeTransliterator(ID, UnicodeString(true, PERLPRE, 3), UnicodeString(RBRACE[0]), 16, 1, true, NULL);
+ return new EscapeTransliterator(ID, UnicodeString(true, PERLPRE, 3), UnicodeString(RBRACE[0]), 16, 1, true, nullptr);
}
/**
@@ -91,7 +91,7 @@ EscapeTransliterator::EscapeTransliterator(const UnicodeString& newID,
int32_t _radix, int32_t _minDigits,
UBool _grokSupplementals,
EscapeTransliterator* adoptedSupplementalHandler) :
- Transliterator(newID, NULL)
+ Transliterator(newID, nullptr)
{
this->prefix = _prefix;
this->suffix = _suffix;
@@ -112,7 +112,7 @@ EscapeTransliterator::EscapeTransliterator(const EscapeTransliterator& o) :
minDigits(o.minDigits),
grokSupplementals(o.grokSupplementals) {
supplementalHandler = (o.supplementalHandler != 0) ?
- new EscapeTransliterator(*o.supplementalHandler) : NULL;
+ new EscapeTransliterator(*o.supplementalHandler) : nullptr;
}
EscapeTransliterator::~EscapeTransliterator() {
@@ -145,7 +145,7 @@ void EscapeTransliterator::handleTransliterate(Replaceable& text,
int32_t c = grokSupplementals ? text.char32At(start) : text.charAt(start);
int32_t charLen = grokSupplementals ? U16_LENGTH(c) : 1;
- if ((c & 0xFFFF0000) != 0 && supplementalHandler != NULL) {
+ if ((c & 0xFFFF0000) != 0 && supplementalHandler != nullptr) {
buf.truncate(0);
buf.append(supplementalHandler->prefix);
ICU_Utility::appendNumber(buf, c, supplementalHandler->radix,
diff --git a/Build/source/libs/icu/icu-src/source/i18n/ethpccal.cpp b/Build/source/libs/icu/icu-src/source/i18n/ethpccal.cpp
index 07937872242..be4010843a5 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/ethpccal.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/ethpccal.cpp
@@ -19,6 +19,7 @@
U_NAMESPACE_BEGIN
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(EthiopicCalendar)
+UOBJECT_DEFINE_RTTI_IMPLEMENTATION(EthiopicAmeteAlemCalendar)
//static const int32_t JD_EPOCH_OFFSET_AMETE_ALEM = -285019;
static const int32_t JD_EPOCH_OFFSET_AMETE_MIHRET = 1723856;
@@ -29,16 +30,8 @@ static const int32_t AMETE_MIHRET_DELTA = 5500; // 5501 - 1 (Amete Alem 5501 = A
//-------------------------------------------------------------------------
EthiopicCalendar::EthiopicCalendar(const Locale& aLocale,
- UErrorCode& success,
- EEraType type /*= AMETE_MIHRET_ERA*/)
-: CECalendar(aLocale, success),
- eraType(type)
-{
-}
-
-EthiopicCalendar::EthiopicCalendar(const EthiopicCalendar& other)
-: CECalendar(other),
- eraType(other.eraType)
+ UErrorCode& success)
+: CECalendar(aLocale, success)
{
}
@@ -55,24 +48,9 @@ EthiopicCalendar::clone() const
const char *
EthiopicCalendar::getType() const
{
- if (isAmeteAlemEra()) {
- return "ethiopic-amete-alem";
- }
return "ethiopic";
}
-void
-EthiopicCalendar::setAmeteAlemEra(UBool onOff)
-{
- eraType = onOff ? AMETE_ALEM_ERA : AMETE_MIHRET_ERA;
-}
-
-UBool
-EthiopicCalendar::isAmeteAlemEra() const
-{
- return (eraType == AMETE_ALEM_ERA);
-}
-
//-------------------------------------------------------------------------
// Calendar framework
//-------------------------------------------------------------------------
@@ -82,58 +60,46 @@ EthiopicCalendar::handleGetExtendedYear()
{
// Ethiopic calendar uses EXTENDED_YEAR aligned to
// Amelete Hihret year always.
- int32_t eyear;
if (newerField(UCAL_EXTENDED_YEAR, UCAL_YEAR) == UCAL_EXTENDED_YEAR) {
- eyear = internalGet(UCAL_EXTENDED_YEAR, 1); // Default to year 1
- } else if (isAmeteAlemEra()) {
- eyear = internalGet(UCAL_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
- int32_t era = internalGet(UCAL_ERA, AMETE_MIHRET);
- if (era == AMETE_MIHRET) {
- eyear = internalGet(UCAL_YEAR, 1); // Default to year 1
- } else {
- eyear = internalGet(UCAL_YEAR, 1) - AMETE_MIHRET_DELTA;
- }
+ return internalGet(UCAL_EXTENDED_YEAR, 1); // Default to year 1
+ }
+ // The year defaults to the epoch start, the era to AMETE_MIHRET
+ if (internalGet(UCAL_ERA, AMETE_MIHRET) == AMETE_MIHRET) {
+ return internalGet(UCAL_YEAR, 1); // Default to year 1
}
- return eyear;
+ return internalGet(UCAL_YEAR, 1) - AMETE_MIHRET_DELTA;
}
void
EthiopicCalendar::handleComputeFields(int32_t julianDay, UErrorCode &/*status*/)
{
- int32_t eyear, month, day, era, year;
+ int32_t eyear, month, day;
jdToCE(julianDay, getJDEpochOffset(), eyear, month, day);
- if (isAmeteAlemEra()) {
- era = AMETE_ALEM;
- year = eyear + AMETE_MIHRET_DELTA;
- } else {
- if (eyear > 0) {
- era = AMETE_MIHRET;
- year = eyear;
- } else {
- era = AMETE_ALEM;
- year = eyear + AMETE_MIHRET_DELTA;
- }
- }
-
internalSet(UCAL_EXTENDED_YEAR, eyear);
- internalSet(UCAL_ERA, era);
- internalSet(UCAL_YEAR, year);
+ internalSet(UCAL_ERA, (eyear > 0) ? AMETE_MIHRET : AMETE_ALEM);
+ internalSet(UCAL_YEAR, (eyear > 0) ? eyear : (eyear + AMETE_MIHRET_DELTA));
internalSet(UCAL_MONTH, month);
+ internalSet(UCAL_ORDINAL_MONTH, month);
internalSet(UCAL_DATE, day);
internalSet(UCAL_DAY_OF_YEAR, (30 * month) + day);
}
-int32_t
-EthiopicCalendar::handleGetLimit(UCalendarDateFields field, ELimitType limitType) const
+constexpr uint32_t kEthiopicRelatedYearDiff = 8;
+
+int32_t EthiopicCalendar::getRelatedYear(UErrorCode &status) const
{
- if (isAmeteAlemEra() && field == UCAL_ERA) {
- return 0; // Only one era in this mode, era is always 0
+ int32_t year = get(UCAL_EXTENDED_YEAR, status);
+ if (U_FAILURE(status)) {
+ return 0;
}
- return CECalendar::handleGetLimit(field, limitType);
+ return year + kEthiopicRelatedYearDiff;
+}
+
+void EthiopicCalendar::setRelatedYear(int32_t year)
+{
+ // set extended year
+ set(UCAL_EXTENDED_YEAR, year - kEthiopicRelatedYearDiff);
}
/**
@@ -173,9 +139,6 @@ EthiopicCalendar::defaultCenturyStartYear() const
{
// lazy-evaluate systemDefaultCenturyStartYear
umtx_initOnce(gSystemDefaultCenturyInit, &initializeSystemDefaultCentury);
- if (isAmeteAlemEra()) {
- return gSystemDefaultCenturyStartYear + AMETE_MIHRET_DELTA;
- }
return gSystemDefaultCenturyStartYear;
}
@@ -202,6 +165,95 @@ EthiopicCalendar::ethiopicToJD(int32_t year, int32_t month, int32_t date)
}
#endif
+//-------------------------------------------------------------------------
+// Constructors...
+//-------------------------------------------------------------------------
+
+EthiopicAmeteAlemCalendar::EthiopicAmeteAlemCalendar(const Locale& aLocale,
+ UErrorCode& success)
+: EthiopicCalendar(aLocale, success)
+{
+}
+
+EthiopicAmeteAlemCalendar::~EthiopicAmeteAlemCalendar()
+{
+}
+
+EthiopicAmeteAlemCalendar*
+EthiopicAmeteAlemCalendar::clone() const
+{
+ return new EthiopicAmeteAlemCalendar(*this);
+}
+
+//-------------------------------------------------------------------------
+// Calendar framework
+//-------------------------------------------------------------------------
+
+const char *
+EthiopicAmeteAlemCalendar::getType() const
+{
+ return "ethiopic-amete-alem";
+}
+
+int32_t
+EthiopicAmeteAlemCalendar::handleGetExtendedYear()
+{
+ // Ethiopic calendar uses EXTENDED_YEAR aligned to
+ // Amelete Hihret year always.
+ if (newerField(UCAL_EXTENDED_YEAR, UCAL_YEAR) == UCAL_EXTENDED_YEAR) {
+ return internalGet(UCAL_EXTENDED_YEAR, 1); // Default to year 1
+ }
+ return internalGet(UCAL_YEAR, 1 + AMETE_MIHRET_DELTA)
+ - AMETE_MIHRET_DELTA; // Default to year 1 of Amelete Mihret
+}
+
+void
+EthiopicAmeteAlemCalendar::handleComputeFields(int32_t julianDay, UErrorCode &/*status*/)
+{
+ int32_t eyear, month, day;
+ jdToCE(julianDay, getJDEpochOffset(), eyear, month, day);
+
+ internalSet(UCAL_EXTENDED_YEAR, eyear);
+ internalSet(UCAL_ERA, AMETE_ALEM);
+ internalSet(UCAL_YEAR, eyear + AMETE_MIHRET_DELTA);
+ internalSet(UCAL_MONTH, month);
+ internalSet(UCAL_ORDINAL_MONTH, month);
+ internalSet(UCAL_DATE, day);
+ internalSet(UCAL_DAY_OF_YEAR, (30 * month) + day);
+}
+
+int32_t
+EthiopicAmeteAlemCalendar::handleGetLimit(UCalendarDateFields field, ELimitType limitType) const
+{
+ if (field == UCAL_ERA) {
+ return 0; // Only one era in this mode, era is always 0
+ }
+ return EthiopicCalendar::handleGetLimit(field, limitType);
+}
+
+constexpr uint32_t kEthiopicAmeteAlemRelatedYearDiff = -5492;
+
+int32_t EthiopicAmeteAlemCalendar::getRelatedYear(UErrorCode &status) const
+{
+ int32_t year = get(UCAL_EXTENDED_YEAR, status);
+ if (U_FAILURE(status)) {
+ return 0;
+ }
+ return year + kEthiopicAmeteAlemRelatedYearDiff;
+}
+
+void EthiopicAmeteAlemCalendar::setRelatedYear(int32_t year)
+{
+ // set extended year
+ set(UCAL_EXTENDED_YEAR, year - kEthiopicAmeteAlemRelatedYearDiff);
+}
+
+int32_t
+EthiopicAmeteAlemCalendar::defaultCenturyStartYear() const
+{
+ return EthiopicCalendar::defaultCenturyStartYear() + AMETE_MIHRET_DELTA;
+}
+
U_NAMESPACE_END
#endif
diff --git a/Build/source/libs/icu/icu-src/source/i18n/ethpccal.h b/Build/source/libs/icu/icu-src/source/i18n/ethpccal.h
index 0cc5b6c535e..19d9e0efb7e 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/ethpccal.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/ethpccal.h
@@ -27,15 +27,6 @@ class EthiopicCalendar : public CECalendar {
public:
/**
- * Calendar type - use Amete Alem era for all the time or not
- * @internal
- */
- enum EEraType {
- AMETE_MIHRET_ERA,
- AMETE_ALEM_ERA
- };
-
- /**
* Useful constants for EthiopicCalendar.
* @internal
*/
@@ -98,7 +89,7 @@ public:
/**
* Constant for &#x1290;&#x1210;&#x1234;, the 12th month of the Ethiopic year.
*/
- NEHASSA,
+ NEHASSE,
/**
* Constant for &#x1333;&#x1309;&#x121c;&#x1295;, the 13th month of the Ethiopic year.
@@ -122,13 +113,13 @@ public:
* only use Amete Alem for all the time.
* @internal
*/
- EthiopicCalendar(const Locale& aLocale, UErrorCode& success, EEraType type = AMETE_MIHRET_ERA);
+ EthiopicCalendar(const Locale& aLocale, UErrorCode& success);
/**
* Copy Constructor
* @internal
*/
- EthiopicCalendar(const EthiopicCalendar& other);
+ EthiopicCalendar(const EthiopicCalendar& other) = default;
/**
* Destructor.
@@ -144,25 +135,25 @@ public:
virtual EthiopicCalendar* clone() const override;
/**
- * return the calendar type, "ethiopic"
+ * Return the calendar type, "ethiopic"
* @return calendar type
* @internal
*/
virtual const char * getType() const override;
/**
- * Set Alem or Mihret era.
- * @param onOff Set Amete Alem era if true, otherwise set Amete Mihret era.
+ * @return The related Gregorian year; will be obtained by modifying the value
+ * obtained by get from UCAL_EXTENDED_YEAR field
* @internal
*/
- void setAmeteAlemEra (UBool onOff);
+ virtual int32_t getRelatedYear(UErrorCode &status) const override;
/**
- * Return true if this calendar is set to the Amete Alem era.
- * @return true if set to the Amete Alem era.
+ * @param year The related Gregorian year to set; will be modified as necessary then
+ * set in UCAL_EXTENDED_YEAR field
* @internal
*/
- UBool isAmeteAlemEra() const;
+ virtual void setRelatedYear(int32_t year) override;
protected:
//-------------------------------------------------------------------------
@@ -171,6 +162,11 @@ protected:
/**
* Return the extended year defined by the current fields.
+ * This calendar uses both AMETE_ALEM and AMETE_MIHRET.
+ *
+ * EXTENDED_YEAR ERA YEAR
+ * 0 AMETE_ALEM 5500
+ * 1 AMETE_MIHRET 1
* @internal
*/
virtual int32_t handleGetExtendedYear() override;
@@ -182,12 +178,6 @@ protected:
virtual void handleComputeFields(int32_t julianDay, UErrorCode &status) override;
/**
- * Calculate the limit for a specified type of limit and field
- * @internal
- */
- virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const override;
-
- /**
* Returns the date of the start of the default century
* @return start of century - in milliseconds since epoch, 1970
* @internal
@@ -206,18 +196,6 @@ protected:
*/
virtual int32_t getJDEpochOffset() const override;
-private:
- /**
- * When eraType is AMETE_ALEM_ERA, then this calendar use only AMETE_ALEM
- * for the era. Otherwise (default), this calendar uses both AMETE_ALEM
- * and AMETE_MIHRET.
- *
- * EXTENDED_YEAR AMETE_ALEM_ERA AMETE_MIHRET_ERA
- * 0 Amete Alem 5500 Amete Alem 5500
- * 1 Amete Mihret 1 Amete Alem 5501
- */
- EEraType eraType;
-
public:
/**
* Override Calendar Returns a unique class ID POLYMORPHICALLY. Pure virtual
@@ -229,7 +207,7 @@ public:
* same class ID. Objects of other classes have different class IDs.
* @internal
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
/**
* Return the class ID for this class. This is useful only for comparing to a return
@@ -242,7 +220,7 @@ public:
* @return The class ID for all objects of this class.
* @internal
*/
- U_I18N_API static UClassID U_EXPORT2 getStaticClassID(void);
+ U_I18N_API static UClassID U_EXPORT2 getStaticClassID();
#if 0
// We do not want to introduce this API in ICU4C.
@@ -266,6 +244,123 @@ public:
#endif
};
+/**
+ * Implement the Ethiopic Amete Alem calendar system.
+ * @internal
+ */
+class EthiopicAmeteAlemCalendar : public EthiopicCalendar {
+
+public:
+ /**
+ * Constructs a EthiopicAmeteAlemCalendar based on the current time in the default time zone
+ * with the given locale.
+ *
+ * @param aLocale The given locale.
+ * @param success Indicates the status of EthiopicCalendar object construction.
+ * Returns U_ZERO_ERROR if constructed successfully.
+ * @internal
+ */
+ EthiopicAmeteAlemCalendar(const Locale& aLocale, UErrorCode& success);
+
+ /**
+ * Copy Constructor
+ * @internal
+ */
+ EthiopicAmeteAlemCalendar(const EthiopicAmeteAlemCalendar& other) = default;
+
+ /**
+ * Destructor.
+ * @internal
+ */
+ virtual ~EthiopicAmeteAlemCalendar();
+
+ /**
+ * Create and return a polymorphic copy of this calendar.
+ * @return return a polymorphic copy of this calendar.
+ * @internal
+ */
+ virtual EthiopicAmeteAlemCalendar* clone() const override;
+
+ /**
+ * Return the calendar type, "ethiopic-amete-alem"
+ * @return calendar type
+ * @internal
+ */
+ virtual const char * getType() const override;
+
+ /**
+ * Override Calendar Returns a unique class ID POLYMORPHICALLY. Pure virtual
+ * override. This method is to implement a simple version of RTTI, since not all C++
+ * compilers support genuine RTTI. Polymorphic operator==() and clone() methods call
+ * this method.
+ *
+ * @return The class ID for this object. All objects of a given class have the
+ * same class ID. Objects of other classes have different class IDs.
+ * @internal
+ */
+ virtual UClassID getDynamicClassID() const override;
+
+ /**
+ * Return the class ID for this class. This is useful only for comparing to a return
+ * value from getDynamicClassID(). For example:
+ *
+ * Base* polymorphic_pointer = createPolymorphicObject();
+ * if (polymorphic_pointer->getDynamicClassID() ==
+ * Derived::getStaticClassID()) ...
+ *
+ * @return The class ID for all objects of this class.
+ * @internal
+ */
+ U_I18N_API static UClassID U_EXPORT2 getStaticClassID();
+
+ /**
+ * @return The related Gregorian year; will be obtained by modifying the value
+ * obtained by get from UCAL_EXTENDED_YEAR field
+ * @internal
+ */
+ virtual int32_t getRelatedYear(UErrorCode &status) const override;
+
+ /**
+ * @param year The related Gregorian year to set; will be modified as necessary then
+ * set in UCAL_EXTENDED_YEAR field
+ * @internal
+ */
+ virtual void setRelatedYear(int32_t year) override;
+
+protected:
+ //-------------------------------------------------------------------------
+ // Calendar framework
+ //-------------------------------------------------------------------------
+
+ /**
+ * Return the extended year defined by the current fields.
+ * This calendar use only AMETE_ALEM for the era.
+ *
+ * EXTENDED_YEAR ERA YEAR
+ * 0 AMETE_ALEM 5500
+ * 1 AMETE_ALEM 5501
+ * @internal
+ */
+ virtual int32_t handleGetExtendedYear() override;
+
+ /**
+ * Compute fields from the JD
+ * @internal
+ */
+ virtual void handleComputeFields(int32_t julianDay, UErrorCode &status) override;
+
+ /**
+ * Calculate the limit for a specified type of limit and field
+ * @internal
+ */
+ virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const override;
+ /**
+ * Returns the year in which the default century begins
+ * @internal
+ */
+ virtual int32_t defaultCenturyStartYear() const override;
+};
+
U_NAMESPACE_END
#endif /* #if !UCONFIG_NO_FORMATTING */
#endif /* ETHPCCAL_H */
diff --git a/Build/source/libs/icu/icu-src/source/i18n/fmtable.cpp b/Build/source/libs/icu/icu-src/source/i18n/fmtable.cpp
index c3ede98328e..65dafc95aa2 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/fmtable.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/fmtable.cpp
@@ -56,7 +56,7 @@ using number::impl::DecimalQuantity;
// Return true if *a == *b.
static inline UBool objectEquals(const UObject* a, const UObject* b) {
// LATER: return *a == *b;
- return *((const Measure*) a) == *((const Measure*) b);
+ return *((const Measure*) a) == *b;
}
// Return a clone of *a.
@@ -67,7 +67,7 @@ static inline UObject* objectClone(const UObject* a) {
// Return true if *a is an instance of Measure.
static inline UBool instanceOfMeasure(const UObject* a) {
- return dynamic_cast<const Measure*>(a) != NULL;
+ return dynamic_cast<const Measure*>(a) != nullptr;
}
/**
@@ -79,7 +79,7 @@ static inline UBool instanceOfMeasure(const UObject* a) {
*/
static Formattable* createArrayCopy(const Formattable* array, int32_t count) {
Formattable *result = new Formattable[count];
- if (result != NULL) {
+ if (result != nullptr) {
for (int32_t i=0; i<count; ++i)
result[i] = array[i]; // Don't memcpy!
}
@@ -104,8 +104,8 @@ static void setError(UErrorCode& ec, UErrorCode err) {
void Formattable::init() {
fValue.fInt64 = 0;
fType = kLong;
- fDecimalStr = NULL;
- fDecimalQuantity = NULL;
+ fDecimalStr = nullptr;
+ fDecimalQuantity = nullptr;
fBogus.setToBogus();
}
@@ -259,14 +259,14 @@ Formattable::operator=(const Formattable& source)
}
UErrorCode status = U_ZERO_ERROR;
- if (source.fDecimalQuantity != NULL) {
+ if (source.fDecimalQuantity != nullptr) {
fDecimalQuantity = new DecimalQuantity(*source.fDecimalQuantity);
}
- if (source.fDecimalStr != NULL) {
+ if (source.fDecimalStr != nullptr) {
fDecimalStr = new CharString(*source.fDecimalStr, status);
if (U_FAILURE(status)) {
delete fDecimalStr;
- fDecimalStr = NULL;
+ fDecimalStr = nullptr;
}
}
}
@@ -315,7 +315,7 @@ Formattable::operator==(const Formattable& that) const
}
break;
case kObject:
- if (fValue.fObject == NULL || that.fValue.fObject == NULL) {
+ if (fValue.fObject == nullptr || that.fValue.fObject == nullptr) {
equal = false;
} else {
equal = objectEquals(fValue.fObject, that.fValue.fObject);
@@ -357,10 +357,10 @@ void Formattable::dispose()
fValue.fInt64 = 0;
delete fDecimalStr;
- fDecimalStr = NULL;
+ fDecimalStr = nullptr;
delete fDecimalQuantity;
- fDecimalQuantity = NULL;
+ fDecimalQuantity = nullptr;
}
Formattable *
@@ -421,7 +421,7 @@ Formattable::getLong(UErrorCode& status) const
return (int32_t)fValue.fDouble; // loses fraction
}
case Formattable::kObject:
- if (fValue.fObject == NULL) {
+ if (fValue.fObject == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return 0;
}
@@ -462,7 +462,7 @@ Formattable::getInt64(UErrorCode& status) const
} else if (fValue.fDouble < (double)U_INT64_MIN) {
status = U_INVALID_FORMAT_ERROR;
return U_INT64_MIN;
- } else if (fabs(fValue.fDouble) > U_DOUBLE_MAX_EXACT_INT && fDecimalQuantity != NULL) {
+ } else if (fabs(fValue.fDouble) > U_DOUBLE_MAX_EXACT_INT && fDecimalQuantity != nullptr) {
if (fDecimalQuantity->fitsInLong(true)) {
return fDecimalQuantity->toLong();
} else {
@@ -474,7 +474,7 @@ Formattable::getInt64(UErrorCode& status) const
return (int64_t)fValue.fDouble;
}
case Formattable::kObject:
- if (fValue.fObject == NULL) {
+ if (fValue.fObject == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return 0;
}
@@ -504,7 +504,7 @@ Formattable::getDouble(UErrorCode& status) const
case Formattable::kDouble:
return fValue.fDouble;
case Formattable::kObject:
- if (fValue.fObject == NULL) {
+ if (fValue.fObject == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return 0;
}
@@ -522,7 +522,7 @@ Formattable::getDouble(UErrorCode& status) const
const UObject*
Formattable::getObject() const {
- return (fType == kObject) ? fValue.fObject : NULL;
+ return (fType == kObject) ? fValue.fObject : nullptr;
}
// -------------------------------------
@@ -630,7 +630,7 @@ Formattable::getString(UnicodeString& result, UErrorCode& status) const
setError(status, U_INVALID_FORMAT_ERROR);
result.setToBogus();
} else {
- if (fValue.fString == NULL) {
+ if (fValue.fString == nullptr) {
setError(status, U_MEMORY_ALLOCATION_ERROR);
} else {
result = *fValue.fString;
@@ -647,7 +647,7 @@ Formattable::getString(UErrorCode& status) const
setError(status, U_INVALID_FORMAT_ERROR);
return *getBogus();
}
- if (fValue.fString == NULL) {
+ if (fValue.fString == nullptr) {
setError(status, U_MEMORY_ALLOCATION_ERROR);
return *getBogus();
}
@@ -662,7 +662,7 @@ Formattable::getString(UErrorCode& status)
setError(status, U_INVALID_FORMAT_ERROR);
return *getBogus();
}
- if (fValue.fString == NULL) {
+ if (fValue.fString == nullptr) {
setError(status, U_MEMORY_ALLOCATION_ERROR);
return *getBogus();
}
@@ -676,7 +676,7 @@ Formattable::getArray(int32_t& count, UErrorCode& status) const
if (fType != kArray) {
setError(status, U_INVALID_FORMAT_ERROR);
count = 0;
- return NULL;
+ return nullptr;
}
count = fValue.fArrayAndCount.fCount;
return fValue.fArrayAndCount.fArray;
@@ -697,12 +697,12 @@ StringPiece Formattable::getDecimalNumber(UErrorCode &status) {
if (U_FAILURE(status)) {
return "";
}
- if (fDecimalStr != NULL) {
+ if (fDecimalStr != nullptr) {
return fDecimalStr->toStringPiece();
}
CharString *decimalStr = internalGetCharString(status);
- if(decimalStr == NULL) {
+ if(decimalStr == nullptr) {
return ""; // getDecimalNumber returns "" for error cases
} else {
return decimalStr->toStringPiece();
@@ -710,8 +710,8 @@ StringPiece Formattable::getDecimalNumber(UErrorCode &status) {
}
CharString *Formattable::internalGetCharString(UErrorCode &status) {
- if(fDecimalStr == NULL) {
- if (fDecimalQuantity == NULL) {
+ if(fDecimalStr == nullptr) {
+ if (fDecimalQuantity == nullptr) {
// No decimal number for the formattable yet. Which means the value was
// set directly by the user as an int, int64 or double. If the value came
// from parsing, or from the user setting a decimal number, fDecimalNum
@@ -725,9 +725,9 @@ CharString *Formattable::internalGetCharString(UErrorCode &status) {
}
fDecimalStr = new CharString();
- if (fDecimalStr == NULL) {
+ if (fDecimalStr == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
// Older ICUs called uprv_decNumberToString here, which is not exactly the same as
// DecimalQuantity::toScientificString(). The biggest difference is that uprv_decNumberToString does
@@ -775,11 +775,11 @@ Formattable::populateDecimalQuantity(number::impl::DecimalQuantity& output, UErr
// ---------------------------------------
void
Formattable::adoptDecimalQuantity(DecimalQuantity *dq) {
- if (fDecimalQuantity != NULL) {
+ if (fDecimalQuantity != nullptr) {
delete fDecimalQuantity;
}
fDecimalQuantity = dq;
- if (dq == NULL) { // allow adoptDigitList(NULL) to clear
+ if (dq == nullptr) { // allow adoptDigitList(nullptr) to clear
return;
}
@@ -898,11 +898,11 @@ U_NAMESPACE_USE
U_CAPI UFormattable* U_EXPORT2
ufmt_open(UErrorCode *status) {
if( U_FAILURE(*status) ) {
- return NULL;
+ return nullptr;
}
UFormattable *fmt = (new Formattable())->toUFormattable();
- if( fmt == NULL ) {
+ if( fmt == nullptr ) {
*status = U_MEMORY_ALLOCATION_ERROR;
}
return fmt;
@@ -958,7 +958,7 @@ ufmt_getObject(const UFormattable *fmt, UErrorCode *status) {
const Formattable *obj = Formattable::fromUFormattable(fmt);
const void *ret = obj->getObject();
- if( ret==NULL &&
+ if( ret==nullptr &&
(obj->getType() != Formattable::kObject) &&
U_SUCCESS( *status )) {
*status = U_INVALID_FORMAT_ERROR;
@@ -966,7 +966,7 @@ ufmt_getObject(const UFormattable *fmt, UErrorCode *status) {
return ret;
}
-U_CAPI const UChar* U_EXPORT2
+U_CAPI const char16_t* U_EXPORT2
ufmt_getUChars(UFormattable *fmt, int32_t *len, UErrorCode *status) {
Formattable *obj = Formattable::fromUFormattable(fmt);
@@ -975,12 +975,12 @@ ufmt_getUChars(UFormattable *fmt, int32_t *len, UErrorCode *status) {
if( U_SUCCESS(*status) ){
*status = U_INVALID_FORMAT_ERROR;
}
- return NULL;
+ return nullptr;
}
// This should return a valid string
UnicodeString &str = obj->getString(*status);
- if( U_SUCCESS(*status) && len != NULL ) {
+ if( U_SUCCESS(*status) && len != nullptr ) {
*len = str.length();
}
return str.getTerminatedBuffer();
@@ -1001,10 +1001,10 @@ ufmt_getArrayItemByIndex(UFormattable* fmt, int32_t n, UErrorCode *status) {
int32_t count;
(void)obj->getArray(count, *status);
if(U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
} else if(n<0 || n>=count) {
setError(*status, U_INDEX_OUTOFBOUNDS_ERROR);
- return NULL;
+ return nullptr;
} else {
return (*obj)[n].toUFormattable(); // returns non-const Formattable
}
@@ -1020,11 +1020,11 @@ ufmt_getDecNumChars(UFormattable *fmt, int32_t *len, UErrorCode *status) {
if(U_FAILURE(*status)) {
return "";
}
- if(charString == NULL) {
+ if(charString == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
return "";
} else {
- if(len!=NULL) {
+ if(len!=nullptr) {
*len = charString->length();
}
return charString->data();
diff --git a/Build/source/libs/icu/icu-src/source/i18n/formattedval_impl.h b/Build/source/libs/icu/icu-src/source/i18n/formattedval_impl.h
index 2b9a3970d2e..e19392c5b9d 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/formattedval_impl.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/formattedval_impl.h
@@ -83,10 +83,10 @@ public:
// Implementation of FormattedValue (const):
- UnicodeString toString(UErrorCode& status) const U_OVERRIDE;
- UnicodeString toTempString(UErrorCode& status) const U_OVERRIDE;
- Appendable& appendTo(Appendable& appendable, UErrorCode& status) const U_OVERRIDE;
- UBool nextPosition(ConstrainedFieldPosition& cfpos, UErrorCode& status) const U_OVERRIDE;
+ UnicodeString toString(UErrorCode& status) const override;
+ UnicodeString toTempString(UErrorCode& status) const override;
+ Appendable& appendTo(Appendable& appendable, UErrorCode& status) const override;
+ UBool nextPosition(ConstrainedFieldPosition& cfpos, UErrorCode& status) const override;
// Additional methods used during construction phase only (non-const):
@@ -153,12 +153,15 @@ public:
virtual ~FormattedValueStringBuilderImpl();
+ FormattedValueStringBuilderImpl(FormattedValueStringBuilderImpl&&) = default;
+ FormattedValueStringBuilderImpl& operator=(FormattedValueStringBuilderImpl&&) = default;
+
// Implementation of FormattedValue (const):
- UnicodeString toString(UErrorCode& status) const U_OVERRIDE;
- UnicodeString toTempString(UErrorCode& status) const U_OVERRIDE;
- Appendable& appendTo(Appendable& appendable, UErrorCode& status) const U_OVERRIDE;
- UBool nextPosition(ConstrainedFieldPosition& cfpos, UErrorCode& status) const U_OVERRIDE;
+ UnicodeString toString(UErrorCode& status) const override;
+ UnicodeString toTempString(UErrorCode& status) const override;
+ Appendable& appendTo(Appendable& appendable, UErrorCode& status) const override;
+ UBool nextPosition(ConstrainedFieldPosition& cfpos, UErrorCode& status) const override;
// Additional helper functions:
UBool nextFieldPosition(FieldPosition& fp, UErrorCode& status) const;
@@ -219,7 +222,7 @@ struct UFormattedValueImpl : public UMemory, public UFormattedValueApiHelper {
/** Implementation of the methods from U_FORMATTED_VALUE_SUBCLASS_AUTO. */
#define UPRV_FORMATTED_VALUE_SUBCLASS_AUTO_IMPL(Name) \
- Name::Name(Name&& src) U_NOEXCEPT \
+ Name::Name(Name&& src) noexcept \
: fData(src.fData), fErrorCode(src.fErrorCode) { \
src.fData = nullptr; \
src.fErrorCode = U_INVALID_STATE_ERROR; \
@@ -228,7 +231,7 @@ struct UFormattedValueImpl : public UMemory, public UFormattedValueApiHelper {
delete fData; \
fData = nullptr; \
} \
- Name& Name::operator=(Name&& src) U_NOEXCEPT { \
+ Name& Name::operator=(Name&& src) noexcept { \
delete fData; \
fData = src.fData; \
src.fData = nullptr; \
diff --git a/Build/source/libs/icu/icu-src/source/i18n/formattedvalue.cpp b/Build/source/libs/icu/icu-src/source/i18n/formattedvalue.cpp
index f103c015b8e..aacd6ac70e0 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/formattedvalue.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/formattedvalue.cpp
@@ -193,7 +193,7 @@ ucfpos_close(UConstrainedFieldPosition* ptr) {
}
-U_CAPI const UChar* U_EXPORT2
+U_CAPI const char16_t* U_EXPORT2
ufmtval_getString(
const UFormattedValue* ufmtval,
int32_t* pLength,
diff --git a/Build/source/libs/icu/icu-src/source/i18n/fphdlimp.cpp b/Build/source/libs/icu/icu-src/source/i18n/fphdlimp.cpp
index 4f6a98c2120..e170dc4b992 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/fphdlimp.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/fphdlimp.cpp
@@ -54,7 +54,7 @@ FieldPositionOnlyHandler::shiftLast(int32_t delta) {
}
UBool
-FieldPositionOnlyHandler::isRecording(void) const {
+FieldPositionOnlyHandler::isRecording() const {
return pos.getField() != FieldPosition::DONT_CARE;
}
@@ -67,7 +67,7 @@ void FieldPositionOnlyHandler::setAcceptFirstOnly(UBool acceptFirstOnly) {
FieldPositionIteratorHandler::FieldPositionIteratorHandler(FieldPositionIterator* posIter,
UErrorCode& _status)
- : iter(posIter), vec(NULL), status(_status), fCategory(UFIELD_CATEGORY_UNDEFINED) {
+ : iter(posIter), vec(nullptr), status(_status), fCategory(UFIELD_CATEGORY_UNDEFINED) {
if (iter && U_SUCCESS(status)) {
vec = new UVector32(status);
}
@@ -85,7 +85,7 @@ FieldPositionIteratorHandler::~FieldPositionIteratorHandler() {
iter->setData(vec, status);
}
// if iter is null, we never allocated vec, so no need to free it
- vec = NULL;
+ vec = nullptr;
}
void
@@ -116,7 +116,7 @@ FieldPositionIteratorHandler::shiftLast(int32_t delta) {
}
UBool
-FieldPositionIteratorHandler::isRecording(void) const {
+FieldPositionIteratorHandler::isRecording() const {
return U_SUCCESS(status);
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/fphdlimp.h b/Build/source/libs/icu/icu-src/source/i18n/fphdlimp.h
index 4fb0c7b6fe6..ad09c6c9036 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/fphdlimp.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/fphdlimp.h
@@ -31,7 +31,7 @@ class U_I18N_API FieldPositionHandler: public UMemory {
virtual ~FieldPositionHandler();
virtual void addAttribute(int32_t id, int32_t start, int32_t limit) = 0;
virtual void shiftLast(int32_t delta) = 0;
- virtual UBool isRecording(void) const = 0;
+ virtual UBool isRecording() const = 0;
void setShift(int32_t delta);
};
@@ -48,9 +48,9 @@ class FieldPositionOnlyHandler : public FieldPositionHandler {
FieldPositionOnlyHandler(FieldPosition& pos);
virtual ~FieldPositionOnlyHandler();
- void addAttribute(int32_t id, int32_t start, int32_t limit) U_OVERRIDE;
- void shiftLast(int32_t delta) U_OVERRIDE;
- UBool isRecording(void) const U_OVERRIDE;
+ void addAttribute(int32_t id, int32_t start, int32_t limit) override;
+ void shiftLast(int32_t delta) override;
+ UBool isRecording() const override;
/**
* Enable this option to lock in the FieldPosition value after seeing the
@@ -65,7 +65,7 @@ class FieldPositionOnlyHandler : public FieldPositionHandler {
// exported as U_I18N_API for tests
class U_I18N_API FieldPositionIteratorHandler : public FieldPositionHandler {
- FieldPositionIterator* iter; // can be NULL
+ FieldPositionIterator* iter; // can be nullptr
UVector32* vec;
UErrorCode status;
UFieldCategory fCategory;
@@ -74,10 +74,10 @@ class U_I18N_API FieldPositionIteratorHandler : public FieldPositionHandler {
// to be destroyed before status goes out of scope. Easiest thing is to
// allocate us on the stack in the same (or narrower) scope as status has.
// This attempts to encourage that by blocking heap allocation.
- static void* U_EXPORT2 operator new(size_t) U_NOEXCEPT = delete;
- static void* U_EXPORT2 operator new[](size_t) U_NOEXCEPT = delete;
+ static void* U_EXPORT2 operator new(size_t) noexcept = delete;
+ static void* U_EXPORT2 operator new[](size_t) noexcept = delete;
#if U_HAVE_PLACEMENT_NEW
- static void* U_EXPORT2 operator new(size_t, void*) U_NOEXCEPT = delete;
+ static void* U_EXPORT2 operator new(size_t, void*) noexcept = delete;
#endif
public:
@@ -86,9 +86,9 @@ class U_I18N_API FieldPositionIteratorHandler : public FieldPositionHandler {
FieldPositionIteratorHandler(UVector32* vec, UErrorCode& status);
~FieldPositionIteratorHandler();
- void addAttribute(int32_t id, int32_t start, int32_t limit) U_OVERRIDE;
- void shiftLast(int32_t delta) U_OVERRIDE;
- UBool isRecording(void) const U_OVERRIDE;
+ void addAttribute(int32_t id, int32_t start, int32_t limit) override;
+ void shiftLast(int32_t delta) override;
+ UBool isRecording() const override;
/** Copies a failed error code into _status. */
inline void getError(UErrorCode& _status) {
diff --git a/Build/source/libs/icu/icu-src/source/i18n/fpositer.cpp b/Build/source/libs/icu/icu-src/source/i18n/fpositer.cpp
index 64bec990e3a..68f1edcc174 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/fpositer.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/fpositer.cpp
@@ -22,16 +22,16 @@ U_NAMESPACE_BEGIN
FieldPositionIterator::~FieldPositionIterator() {
delete data;
- data = NULL;
+ data = nullptr;
pos = -1;
}
FieldPositionIterator::FieldPositionIterator()
- : data(NULL), pos(-1) {
+ : data(nullptr), pos(-1) {
}
FieldPositionIterator::FieldPositionIterator(const FieldPositionIterator &rhs)
- : UObject(rhs), data(NULL), pos(rhs.pos) {
+ : UObject(rhs), data(nullptr), pos(rhs.pos) {
if (rhs.data) {
UErrorCode status = U_ZERO_ERROR;
@@ -39,7 +39,7 @@ FieldPositionIterator::FieldPositionIterator(const FieldPositionIterator &rhs)
data->assign(*rhs.data, status);
if (status != U_ZERO_ERROR) {
delete data;
- data = NULL;
+ data = nullptr;
pos = -1;
}
}
@@ -53,7 +53,7 @@ bool FieldPositionIterator::operator==(const FieldPositionIterator &rhs) const {
return false;
}
if (!data) {
- return rhs.data == NULL;
+ return rhs.data == nullptr;
}
return rhs.data ? data->operator==(*rhs.data) : false;
}
@@ -64,7 +64,7 @@ void FieldPositionIterator::setData(UVector32 *adopt, UErrorCode& status) {
if (adopt) {
if (adopt->size() == 0) {
delete adopt;
- adopt = NULL;
+ adopt = nullptr;
} else if ((adopt->size() % 4) != 0) {
status = U_ILLEGAL_ARGUMENT_ERROR;
} else {
@@ -87,7 +87,7 @@ void FieldPositionIterator::setData(UVector32 *adopt, UErrorCode& status) {
delete data;
data = adopt;
- pos = adopt == NULL ? -1 : 0;
+ pos = adopt == nullptr ? -1 : 0;
}
UBool FieldPositionIterator::next(FieldPosition& fp) {
diff --git a/Build/source/libs/icu/icu-src/source/i18n/funcrepl.cpp b/Build/source/libs/icu/icu-src/source/i18n/funcrepl.cpp
index 7dd54ed8d2b..f093a1e4379 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/funcrepl.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/funcrepl.cpp
@@ -18,9 +18,9 @@
#include "unicode/uniset.h"
#include "funcrepl.h"
-static const UChar AMPERSAND = 38; // '&'
-static const UChar OPEN[] = {40,32,0}; // "( "
-static const UChar CLOSE[] = {32,41,0}; // " )"
+static const char16_t AMPERSAND = 38; // '&'
+static const char16_t OPEN[] = {40,32,0}; // "( "
+static const char16_t CLOSE[] = {32,41,0}; // " )"
U_NAMESPACE_BEGIN
diff --git a/Build/source/libs/icu/icu-src/source/i18n/gender.cpp b/Build/source/libs/icu/icu-src/source/i18n/gender.cpp
index ef64d178467..d023b50218a 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/gender.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/gender.cpp
@@ -19,24 +19,29 @@
#if !UCONFIG_NO_FORMATTING
+#include <utility>
+
#include "unicode/gender.h"
#include "unicode/ugender.h"
#include "unicode/ures.h"
+#include "bytesinkutil.h"
+#include "charstr.h"
#include "cmemory.h"
#include "cstring.h"
#include "mutex.h"
#include "uassert.h"
#include "ucln_in.h"
+#include "ulocimp.h"
#include "umutex.h"
#include "uhash.h"
-static UHashtable* gGenderInfoCache = NULL;
+static UHashtable* gGenderInfoCache = nullptr;
static const char* gNeutralStr = "neutral";
static const char* gMailTaintsStr = "maleTaints";
static const char* gMixedNeutralStr = "mixedNeutral";
-static icu::GenderInfo* gObjs = NULL;
+static icu::GenderInfo* gObjs = nullptr;
static icu::UInitOnce gGenderInitOnce {};
enum GenderStyle {
@@ -48,10 +53,10 @@ enum GenderStyle {
U_CDECL_BEGIN
-static UBool U_CALLCONV gender_cleanup(void) {
- if (gGenderInfoCache != NULL) {
+static UBool U_CALLCONV gender_cleanup() {
+ if (gGenderInfoCache != nullptr) {
uhash_close(gGenderInfoCache);
- gGenderInfoCache = NULL;
+ gGenderInfoCache = nullptr;
delete [] gObjs;
}
gGenderInitOnce.reset();
@@ -64,19 +69,19 @@ U_NAMESPACE_BEGIN
void U_CALLCONV GenderInfo_initCache(UErrorCode &status) {
ucln_i18n_registerCleanup(UCLN_I18N_GENDERINFO, gender_cleanup);
- U_ASSERT(gGenderInfoCache == NULL);
+ U_ASSERT(gGenderInfoCache == nullptr);
if (U_FAILURE(status)) {
return;
}
gObjs = new GenderInfo[GENDER_STYLE_LENGTH];
- if (gObjs == NULL) {
+ if (gObjs == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
for (int i = 0; i < GENDER_STYLE_LENGTH; i++) {
gObjs[i]._style = i;
}
- gGenderInfoCache = uhash_open(uhash_hashChars, uhash_compareChars, NULL, &status);
+ gGenderInfoCache = uhash_open(uhash_hashChars, uhash_compareChars, nullptr, &status);
if (U_FAILURE(status)) {
delete [] gObjs;
return;
@@ -95,11 +100,11 @@ const GenderInfo* GenderInfo::getInstance(const Locale& locale, UErrorCode& stat
// Make sure our cache exists.
umtx_initOnce(gGenderInitOnce, &GenderInfo_initCache, status);
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
static UMutex gGenderMetaLock;
- const GenderInfo* result = NULL;
+ const GenderInfo* result = nullptr;
const char* key = locale.getName();
{
Mutex lock(&gGenderMetaLock);
@@ -112,7 +117,7 @@ const GenderInfo* GenderInfo::getInstance(const Locale& locale, UErrorCode& stat
// On cache miss, try to create GenderInfo from CLDR data
result = loadInstance(locale, status);
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
// Try to put our GenderInfo object in cache. If there is a race condition,
@@ -125,7 +130,7 @@ const GenderInfo* GenderInfo::getInstance(const Locale& locale, UErrorCode& stat
} else {
uhash_put(gGenderInfoCache, uprv_strdup(key), (void*) result, &status);
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
}
}
@@ -134,30 +139,36 @@ const GenderInfo* GenderInfo::getInstance(const Locale& locale, UErrorCode& stat
const GenderInfo* GenderInfo::loadInstance(const Locale& locale, UErrorCode& status) {
LocalUResourceBundlePointer rb(
- ures_openDirect(NULL, "genderList", &status));
+ ures_openDirect(nullptr, "genderList", &status));
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
- LocalUResourceBundlePointer locRes(ures_getByKey(rb.getAlias(), "genderList", NULL, &status));
+ LocalUResourceBundlePointer locRes(ures_getByKey(rb.getAlias(), "genderList", nullptr, &status));
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
int32_t resLen = 0;
const char* curLocaleName = locale.getName();
UErrorCode key_status = U_ZERO_ERROR;
- const UChar* s = ures_getStringByKey(locRes.getAlias(), curLocaleName, &resLen, &key_status);
- if (s == NULL) {
+ const char16_t* s = ures_getStringByKey(locRes.getAlias(), curLocaleName, &resLen, &key_status);
+ if (s == nullptr) {
key_status = U_ZERO_ERROR;
- char parentLocaleName[ULOC_FULLNAME_CAPACITY];
- uprv_strcpy(parentLocaleName, curLocaleName);
- while (s == NULL && uloc_getParent(parentLocaleName, parentLocaleName, ULOC_FULLNAME_CAPACITY, &key_status) > 0) {
+ CharString parentLocaleName(curLocaleName, key_status);
+ while (s == nullptr) {
+ {
+ CharString tmp;
+ CharStringByteSink sink(&tmp);
+ ulocimp_getParent(parentLocaleName.data(), sink, &status);
+ if (tmp.isEmpty()) break;
+ parentLocaleName = std::move(tmp);
+ }
key_status = U_ZERO_ERROR;
resLen = 0;
- s = ures_getStringByKey(locRes.getAlias(), parentLocaleName, &resLen, &key_status);
+ s = ures_getStringByKey(locRes.getAlias(), parentLocaleName.data(), &resLen, &key_status);
key_status = U_ZERO_ERROR;
}
}
- if (s == NULL) {
+ if (s == nullptr) {
return &gObjs[NEUTRAL];
}
char type_str[256] = "";
diff --git a/Build/source/libs/icu/icu-src/source/i18n/gregocal.cpp b/Build/source/libs/icu/icu-src/source/i18n/gregocal.cpp
index 63a6c2d4529..ec14abbbf10 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/gregocal.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/gregocal.cpp
@@ -101,6 +101,7 @@ static const int32_t kGregorianCalendarLimits[UCAL_FIELD_COUNT][4] = {
{/*N/A*/-1,/*N/A*/-1,/*N/A*/-1,/*N/A*/-1}, // JULIAN_DAY
{/*N/A*/-1,/*N/A*/-1,/*N/A*/-1,/*N/A*/-1}, // MILLISECONDS_IN_DAY
{/*N/A*/-1,/*N/A*/-1,/*N/A*/-1,/*N/A*/-1}, // IS_LEAP_MONTH
+ { 0, 0, 11, 11}, // ORDINAL_MONTH
};
/*
@@ -349,7 +350,7 @@ GregorianCalendar::setGregorianChange(UDate date, UErrorCode& status)
// Normalize the year so BC values are represented as 0 and negative
// values.
GregorianCalendar *cal = new GregorianCalendar(getTimeZone(), status);
- /* test for NULL */
+ /* test for nullptr */
if (cal == 0) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
@@ -435,6 +436,7 @@ void GregorianCalendar::handleComputeFields(int32_t julianDay, UErrorCode& statu
}
internalSet(UCAL_MONTH, month);
+ internalSet(UCAL_ORDINAL_MONTH, month);
internalSet(UCAL_DAY_OF_MONTH, dayOfMonth);
internalSet(UCAL_DAY_OF_YEAR, dayOfYear);
internalSet(UCAL_EXTENDED_YEAR, eyear);
@@ -487,7 +489,7 @@ int32_t GregorianCalendar::handleComputeJulianDay(UCalendarDateFields bestField)
// The following check handles portions of the cutover year BEFORE the
// cutover itself happens.
//if ((fIsGregorian==true) != (jd >= fCutoverJulianDay)) { /* cutoverJulianDay)) { */
- if ((fIsGregorian==true) != (jd >= fCutoverJulianDay)) { /* cutoverJulianDay)) { */
+ if ((fIsGregorian) != (jd >= fCutoverJulianDay)) { /* cutoverJulianDay)) { */
#if defined (U_DEBUG_CAL)
fprintf(stderr, "%s:%d: jd [invert] %d\n",
__FILE__, __LINE__, jd);
@@ -609,14 +611,6 @@ GregorianCalendar::monthLength(int32_t month, int32_t year) const
// -------------------------------------
int32_t
-GregorianCalendar::yearLength(int32_t year) const
-{
- return isLeapYear(year) ? 366 : 365;
-}
-
-// -------------------------------------
-
-int32_t
GregorianCalendar::yearLength() const
{
return isLeapYear(internalGet(UCAL_YEAR)) ? 366 : 365;
@@ -624,24 +618,6 @@ GregorianCalendar::yearLength() const
// -------------------------------------
-/**
-* After adjustments such as add(MONTH), add(YEAR), we don't want the
-* month to jump around. E.g., we don't want Jan 31 + 1 month to go to Mar
-* 3, we want it to go to Feb 28. Adjustments which might run into this
-* problem call this method to retain the proper month.
-*/
-void
-GregorianCalendar::pinDayOfMonth()
-{
- int32_t monthLen = monthLength(internalGet(UCAL_MONTH));
- int32_t dom = internalGet(UCAL_DATE);
- if(dom > monthLen)
- set(UCAL_DATE, monthLen);
-}
-
-// -------------------------------------
-
-
UBool
GregorianCalendar::validateFields() const
{
@@ -659,7 +635,7 @@ GregorianCalendar::validateFields() const
if (isSet(UCAL_DATE)) {
int32_t date = internalGet(UCAL_DATE);
if (date < getMinimum(UCAL_DATE) ||
- date > monthLength(internalGet(UCAL_MONTH))) {
+ date > monthLength(internalGetMonth())) {
return false;
}
}
@@ -821,8 +797,7 @@ GregorianCalendar::roll(EDateFields field, int32_t amount, UErrorCode& status) {
}
void
-GregorianCalendar::roll(UCalendarDateFields field, int32_t amount, UErrorCode& status)
-{
+GregorianCalendar::roll(UCalendarDateFields field, int32_t amount, UErrorCode& status) UPRV_NO_SANITIZE_UNDEFINED {
if((amount == 0) || U_FAILURE(status)) {
return;
}
@@ -839,7 +814,7 @@ GregorianCalendar::roll(UCalendarDateFields field, int32_t amount, UErrorCode& s
case UCAL_DAY_OF_MONTH:
case UCAL_WEEK_OF_MONTH:
{
- int32_t max = monthLength(internalGet(UCAL_MONTH));
+ int32_t max = monthLength(internalGetMonth());
UDate t = internalGetTime();
// We subtract 1 from the DAY_OF_MONTH to make it zero-based, and an
// additional 10 if we are after the cutover. Thus the monthStart
@@ -872,7 +847,7 @@ GregorianCalendar::roll(UCalendarDateFields field, int32_t amount, UErrorCode& s
// may be one year before or after the calendar year.
int32_t isoYear = get(UCAL_YEAR_WOY, status);
int32_t isoDoy = internalGet(UCAL_DAY_OF_YEAR);
- if (internalGet(UCAL_MONTH) == UCAL_JANUARY) {
+ if (internalGetMonth() == UCAL_JANUARY) {
if (woy >= 52) {
isoDoy += handleGetYearLength(isoYear);
}
@@ -1237,20 +1212,6 @@ int32_t GregorianCalendar::handleGetExtendedYearFromWeekFields(int32_t yearWoy,
// -------------------------------------
-UBool
-GregorianCalendar::inDaylightTime(UErrorCode& status) const
-{
- if (U_FAILURE(status) || !getTimeZone().useDaylightTime())
- return false;
-
- // Force an update of the state of the Calendar.
- ((GregorianCalendar*)this)->complete(status); // cast away const
-
- return (UBool)(U_SUCCESS(status) ? (internalGet(UCAL_DST_OFFSET) != 0) : false);
-}
-
-// -------------------------------------
-
/**
* Return the ERA. We need a special method for this because the
* default ERA is AD, but a zero (unset) ERA is BC.
diff --git a/Build/source/libs/icu/icu-src/source/i18n/gregoimp.cpp b/Build/source/libs/icu/icu-src/source/i18n/gregoimp.cpp
index f862cd1d831..31b5aeed835 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/gregoimp.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/gregoimp.cpp
@@ -37,11 +37,13 @@ int32_t ClockMath::floorDivide(double numerator, int32_t denominator,
// For an integer n and representable ⌊x/n⌋, ⌊RN(x/n)⌋=⌊x/n⌋, where RN is
// rounding to nearest.
double quotient = uprv_floor(numerator / denominator);
- // For doubles x and n, where n is an integer and ⌊x+n⌋ < 2³¹, the
- // expression `(int32_t) (x + n)` evaluated with rounding to nearest
- // differs from ⌊x+n⌋ if 0 < ⌈x⌉−x ≪ x+n, as `x + n` is rounded up to
- // n+⌈x⌉ = ⌊x+n⌋ + 1. Rewriting it as ⌊x⌋+n makes the addition exact.
- *remainder = (int32_t) (uprv_floor(numerator) - (quotient * denominator));
+ if (remainder != nullptr) {
+ // For doubles x and n, where n is an integer and ⌊x+n⌋ < 2³¹, the
+ // expression `(int32_t) (x + n)` evaluated with rounding to nearest
+ // differs from ⌊x+n⌋ if 0 < ⌈x⌉−x ≪ x+n, as `x + n` is rounded up to
+ // n+⌈x⌉ = ⌊x+n⌋ + 1. Rewriting it as ⌊x⌋+n makes the addition exact.
+ *remainder = (int32_t) (uprv_floor(numerator) - (quotient * denominator));
+ }
return (int32_t) quotient;
}
@@ -50,16 +52,16 @@ double ClockMath::floorDivide(double dividend, double divisor,
// Only designed to work for positive divisors
U_ASSERT(divisor > 0);
double quotient = floorDivide(dividend, divisor);
- *remainder = dividend - (quotient * divisor);
+ double r = dividend - (quotient * divisor);
// N.B. For certain large dividends, on certain platforms, there
// is a bug such that the quotient is off by one. If you doubt
// this to be true, set a breakpoint below and run cintltst.
- if (*remainder < 0 || *remainder >= divisor) {
+ if (r < 0 || r >= divisor) {
// E.g. 6.7317038241449352e+022 / 86400000.0 is wrong on my
// machine (too high by one). 4.1792057231752762e+024 /
// 86400000.0 is wrong the other way (too low).
double q = quotient;
- quotient += (*remainder < 0) ? -1 : +1;
+ quotient += (r < 0) ? -1 : +1;
if (q == quotient) {
// For quotients > ~2^53, we won't be able to add or
// subtract one, since the LSB of the mantissa will be >
@@ -70,12 +72,15 @@ double ClockMath::floorDivide(double dividend, double divisor,
// values give back an approximate answer rather than
// crashing. For example, UDate values above a ~10^25
// might all have a time of midnight.
- *remainder = 0;
+ r = 0;
} else {
- *remainder = dividend - (quotient * divisor);
+ r = dividend - (quotient * divisor);
}
}
- U_ASSERT(0 <= *remainder && *remainder < divisor);
+ U_ASSERT(0 <= r && r < divisor);
+ if (remainder != nullptr) {
+ *remainder = r;
+ }
return quotient;
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/hebrwcal.cpp b/Build/source/libs/icu/icu-src/source/i18n/hebrwcal.cpp
index b3e6bcb65c3..6451c89c599 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/hebrwcal.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/hebrwcal.cpp
@@ -20,10 +20,11 @@
#if !UCONFIG_NO_FORMATTING
#include "cmemory.h"
+#include "cstring.h"
#include "umutex.h"
#include <float.h>
-#include "gregoimp.h" // Math
-#include "astro.h" // CalendarAstronomer
+#include "gregoimp.h" // ClockMath
+#include "astro.h" // CalendarCache
#include "uhash.h"
#include "ucln_in.h"
@@ -63,6 +64,7 @@ static const int32_t LIMITS[UCAL_FIELD_COUNT][4] = {
{/*N/A*/-1,/*N/A*/-1,/*N/A*/-1,/*N/A*/-1}, // JULIAN_DAY
{/*N/A*/-1,/*N/A*/-1,/*N/A*/-1,/*N/A*/-1}, // MILLISECONDS_IN_DAY
{/*N/A*/-1,/*N/A*/-1,/*N/A*/-1,/*N/A*/-1}, // IS_LEAP_MONTH
+ { 0, 0, 11, 12}, // ORDINAL_MONTH
};
/**
@@ -134,12 +136,12 @@ static const int16_t LEAP_MONTH_START[][3] = {
{ 383, 384, 385 }, // Elul
};
-static icu::CalendarCache *gCache = NULL;
+static icu::CalendarCache *gCache = nullptr;
U_CDECL_BEGIN
-static UBool calendar_hebrew_cleanup(void) {
+static UBool calendar_hebrew_cleanup() {
delete gCache;
- gCache = NULL;
+ gCache = nullptr;
return true;
}
U_CDECL_END
@@ -217,7 +219,8 @@ void HebrewCalendar::add(UCalendarDateFields field, int32_t amount, UErrorCode&
return;
}
switch (field) {
- case UCAL_MONTH:
+ case UCAL_MONTH:
+ case UCAL_ORDINAL_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
@@ -315,6 +318,7 @@ void HebrewCalendar::roll(UCalendarDateFields field, int32_t amount, UErrorCode&
}
switch (field) {
case UCAL_MONTH:
+ case UCAL_ORDINAL_MONTH:
{
int32_t month = get(UCAL_MONTH, status);
int32_t year = get(UCAL_YEAR, status);
@@ -534,7 +538,8 @@ int32_t HebrewCalendar::handleGetYearLength(int32_t eyear) const {
}
void HebrewCalendar::validateField(UCalendarDateFields field, UErrorCode &status) {
- if (field == UCAL_MONTH && !isLeapYear(handleGetExtendedYear()) && internalGet(UCAL_MONTH) == ADAR_1) {
+ if ((field == UCAL_MONTH || field == UCAL_ORDINAL_MONTH)
+ && !isLeapYear(handleGetExtendedYear()) && internalGetMonth() == ADAR_1) {
status = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
@@ -607,6 +612,11 @@ void HebrewCalendar::handleComputeFields(int32_t julianDay, UErrorCode &status)
internalSet(UCAL_ERA, 0);
internalSet(UCAL_YEAR, year);
internalSet(UCAL_EXTENDED_YEAR, year);
+ int32_t ordinal_month = month;
+ if (!isLeap && ordinal_month > ADAR_1) {
+ ordinal_month--;
+ }
+ internalSet(UCAL_ORDINAL_MONTH, ordinal_month);
internalSet(UCAL_MONTH, month);
internalSet(UCAL_DAY_OF_MONTH, dayOfMonth);
internalSet(UCAL_DAY_OF_YEAR, dayOfYear);
@@ -666,17 +676,21 @@ int32_t HebrewCalendar::handleComputeMonthStart(int32_t eyear, int32_t month, UB
return (int) (day + 347997);
}
-UBool
-HebrewCalendar::inDaylightTime(UErrorCode& status) const
-{
- // copied from GregorianCalendar
- if (U_FAILURE(status) || !getTimeZone().useDaylightTime())
- return false;
+constexpr uint32_t kHebrewRelatedYearDiff = -3760;
- // Force an update of the state of the Calendar.
- ((HebrewCalendar*)this)->complete(status); // cast away const
+int32_t HebrewCalendar::getRelatedYear(UErrorCode &status) const
+{
+ int32_t year = get(UCAL_EXTENDED_YEAR, status);
+ if (U_FAILURE(status)) {
+ return 0;
+ }
+ return year + kHebrewRelatedYearDiff;
+}
- return (UBool)(U_SUCCESS(status) ? (internalGet(UCAL_DST_OFFSET) != 0) : false);
+void HebrewCalendar::setRelatedYear(int32_t year)
+{
+ // set extended year
+ set(UCAL_EXTENDED_YEAR, year - kHebrewRelatedYearDiff);
}
/**
@@ -724,6 +738,49 @@ int32_t HebrewCalendar::defaultCenturyStartYear() const {
return gSystemDefaultCenturyStartYear;
}
+bool HebrewCalendar::inTemporalLeapYear(UErrorCode& status) const {
+ if (U_FAILURE(status)) return false;
+ int32_t eyear = get(UCAL_EXTENDED_YEAR, status);
+ if (U_FAILURE(status)) return false;
+ return isLeapYear(eyear);
+}
+
+static const char * const gTemporalMonthCodesForHebrew[] = {
+ "M01", "M02", "M03", "M04", "M05", "M05L", "M06",
+ "M07", "M08", "M09", "M10", "M11", "M12", nullptr
+};
+
+const char* HebrewCalendar::getTemporalMonthCode(UErrorCode& status) const {
+ int32_t month = get(UCAL_MONTH, status);
+ if (U_FAILURE(status)) return nullptr;
+ return gTemporalMonthCodesForHebrew[month];
+}
+
+void HebrewCalendar::setTemporalMonthCode(const char* code, UErrorCode& status )
+{
+ if (U_FAILURE(status)) return;
+ int32_t len = static_cast<int32_t>(uprv_strlen(code));
+ if (len == 3 || len == 4) {
+ for (int m = 0; gTemporalMonthCodesForHebrew[m] != nullptr; m++) {
+ if (uprv_strcmp(code, gTemporalMonthCodesForHebrew[m]) == 0) {
+ set(UCAL_MONTH, m);
+ return;
+ }
+ }
+ }
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+}
+
+int32_t HebrewCalendar::internalGetMonth() const {
+ if (resolveFields(kMonthPrecedence) == UCAL_ORDINAL_MONTH) {
+ int32_t ordinalMonth = internalGet(UCAL_ORDINAL_MONTH);
+ HebrewCalendar *nonConstThis = (HebrewCalendar*)this; // cast away const
+
+ int32_t year = nonConstThis->handleGetExtendedYear();
+ return ordinalMonth + (((!isLeapYear(year)) && (ordinalMonth > ADAR_1)) ? 1: 0);
+ }
+ return Calendar::internalGetMonth();
+}
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(HebrewCalendar)
diff --git a/Build/source/libs/icu/icu-src/source/i18n/hebrwcal.h b/Build/source/libs/icu/icu-src/source/i18n/hebrwcal.h
index d75651d47a4..829a642211a 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/hebrwcal.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/hebrwcal.h
@@ -198,7 +198,7 @@ public:
* same class ID. Objects of other classes have different class IDs.
* @internal
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
/**
* Return the class ID for this class. This is useful only for comparing to a return
@@ -211,7 +211,7 @@ public:
* @return The class ID for all objects of this class.
* @internal
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* return the calendar type, "hebrew".
@@ -273,6 +273,20 @@ public:
*/
static UBool isLeapYear(int32_t year) ;
+ /**
+ * @return The related Gregorian year; will be obtained by modifying the value
+ * obtained by get from UCAL_EXTENDED_YEAR field
+ * @internal
+ */
+ virtual int32_t getRelatedYear(UErrorCode &status) const override;
+
+ /**
+ * @param year The related Gregorian year to set; will be modified as necessary then
+ * set in UCAL_EXTENDED_YEAR field
+ * @internal
+ */
+ virtual void setRelatedYear(int32_t year) override;
+
protected:
/**
@@ -366,18 +380,6 @@ public:
virtual void validateField(UCalendarDateFields field, UErrorCode &status) override;
protected:
-
- /**
- * (Overrides Calendar) Return true if the current date for this Calendar is in
- * Daylight Savings Time. Recognizes DST_OFFSET, if it is set.
- *
- * @param status Fill-in parameter which receives the status of this operation.
- * @return True if the current date for this Calendar is in Daylight Savings Time,
- * false, otherwise.
- * @internal
- */
- virtual UBool inDaylightTime(UErrorCode& status) const override;
-
/**
* Returns true because the Hebrew Calendar does have a default century
* @internal
@@ -397,6 +399,51 @@ public:
*/
virtual int32_t defaultCenturyStartYear() const override;
+ public:
+ /**
+ * Returns true if the date is in a leap year.
+ *
+ * @param status ICU Error Code
+ * @return True if the date in the fields is in a Temporal proposal
+ * defined leap year. False otherwise.
+ */
+ virtual bool inTemporalLeapYear(UErrorCode& status) const override;
+
+ /**
+ * Gets The Temporal monthCode value corresponding to the month for the date.
+ * The value is a string identifier that starts with the literal grapheme
+ * "M" followed by two graphemes representing the zero-padded month number
+ * of the current month in a normal (non-leap) year and suffixed by an
+ * optional literal grapheme "L" if this is a leap month in a lunisolar
+ * calendar. For the Hebrew calendar, the values are "M01" .. "M12" for
+ * non-leap year, and "M01" .. "M05", "M05L", "M06" .. "M12" for leap year.
+ *
+ * @param status ICU Error Code
+ * @return One of 13 possible strings in {"M01".. "M05", "M05L",
+ * "M06" .. "M12"}.
+ * @draft ICU 73
+ */
+ virtual const char* getTemporalMonthCode(UErrorCode& status) const override;
+
+ /**
+ * Sets The Temporal monthCode which is a string identifier that starts
+ * with the literal grapheme "M" followed by two graphemes representing
+ * the zero-padded month number of the current month in a normal
+ * (non-leap) year and suffixed by an optional literal grapheme "L" if this
+ * is a leap month in a lunisolar calendar. For Hebrew calendar, the values
+ * are "M01" .. "M12" for non-leap years, and "M01" .. "M05", "M05L", "M06"
+ * .. "M12" for leap year.
+ *
+ * @param temporalMonth The value to be set for temporal monthCode.
+ * @param status ICU Error Code
+ *
+ * @draft ICU 73
+ */
+ virtual void setTemporalMonthCode(const char* code, UErrorCode& status ) override;
+
+ protected:
+ virtual int32_t internalGetMonth() const override;
+
private: // Calendar-specific implementation
/**
* Finds the day # of the first day in the given Hebrew year.
diff --git a/Build/source/libs/icu/icu-src/source/i18n/i18n.vcxproj b/Build/source/libs/icu/icu-src/source/i18n/i18n.vcxproj
index 60bbe0f89ee..73ab2d4651e 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/i18n.vcxproj
+++ b/Build/source/libs/icu/icu-src/source/i18n/i18n.vcxproj
@@ -166,6 +166,7 @@
<ClCompile Include="hebrwcal.cpp" />
<ClCompile Include="indiancal.cpp" />
<ClCompile Include="islamcal.cpp" />
+ <ClCompile Include="iso8601cal.cpp" />
<ClCompile Include="japancal.cpp" />
<ClCompile Include="listformatter.cpp" />
<ClCompile Include="ulistformatter.cpp" />
@@ -201,6 +202,7 @@
<ClCompile Include="number_mapper.cpp" />
<ClCompile Include="number_multiplier.cpp" />
<ClCompile Include="number_currencysymbols.cpp" />
+ <ClCompile Include="number_simple.cpp" />
<ClCompile Include="number_skeletons.cpp" />
<ClCompile Include="number_symbolswrapper.cpp" />
<ClCompile Include="number_capi.cpp" />
@@ -384,6 +386,7 @@
<ClInclude Include="hebrwcal.h" />
<ClInclude Include="indiancal.h" />
<ClInclude Include="islamcal.h" />
+ <ClInclude Include="iso8601cal.h" />
<ClInclude Include="japancal.h" />
<ClInclude Include="measunit_impl.h" />
<ClInclude Include="msgfmt_impl.h" />
diff --git a/Build/source/libs/icu/icu-src/source/i18n/i18n.vcxproj.filters b/Build/source/libs/icu/icu-src/source/i18n/i18n.vcxproj.filters
index 74fd8c48614..e35edb5c1b1 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/i18n.vcxproj.filters
+++ b/Build/source/libs/icu/icu-src/source/i18n/i18n.vcxproj.filters
@@ -186,6 +186,9 @@
<ClCompile Include="indiancal.cpp">
<Filter>formatting</Filter>
</ClCompile>
+ <ClCompile Include="iso8601cal.cpp">
+ <Filter>formatting</Filter>
+ </ClCompile>
<ClCompile Include="islamcal.cpp">
<Filter>formatting</Filter>
</ClCompile>
@@ -606,6 +609,9 @@
<ClCompile Include="number_currencysymbols.cpp">
<Filter>formatting</Filter>
</ClCompile>
+ <ClCompile Include="number_simple.cpp">
+ <Filter>formatting</Filter>
+ </ClCompile>
<ClCompile Include="number_skeletons.cpp">
<Filter>formatting</Filter>
</ClCompile>
@@ -851,6 +857,9 @@
<ClInclude Include="indiancal.h">
<Filter>formatting</Filter>
</ClInclude>
+ <ClInclude Include="iso8601cal.h">
+ <Filter>formatting</Filter>
+ </ClInclude>
<ClInclude Include="islamcal.h">
<Filter>formatting</Filter>
</ClInclude>
diff --git a/Build/source/libs/icu/icu-src/source/i18n/i18n_uwp.vcxproj b/Build/source/libs/icu/icu-src/source/i18n/i18n_uwp.vcxproj
index 7ce4ae64f96..9afcb5ddb94 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/i18n_uwp.vcxproj
+++ b/Build/source/libs/icu/icu-src/source/i18n/i18n_uwp.vcxproj
@@ -399,6 +399,7 @@
<ClCompile Include="hebrwcal.cpp" />
<ClCompile Include="indiancal.cpp" />
<ClCompile Include="islamcal.cpp" />
+ <ClCompile Include="iso8601cal.cpp" />
<ClCompile Include="japancal.cpp" />
<ClCompile Include="listformatter.cpp" />
<ClCompile Include="ulistformatter.cpp" />
@@ -434,6 +435,7 @@
<ClCompile Include="number_mapper.cpp" />
<ClCompile Include="number_multiplier.cpp" />
<ClCompile Include="number_currencysymbols.cpp" />
+ <ClCompile Include="number_simple.cpp" />
<ClCompile Include="number_skeletons.cpp" />
<ClCompile Include="number_symbolswrapper.cpp" />
<ClCompile Include="number_capi.cpp" />
@@ -615,6 +617,7 @@
<ClInclude Include="hebrwcal.h" />
<ClInclude Include="indiancal.h" />
<ClInclude Include="islamcal.h" />
+ <ClInclude Include="iso8601cal.h" />
<ClInclude Include="japancal.h" />
<ClInclude Include="measunit_impl.h" />
<ClInclude Include="msgfmt_impl.h" />
diff --git a/Build/source/libs/icu/icu-src/source/i18n/indiancal.cpp b/Build/source/libs/icu/icu-src/source/i18n/indiancal.cpp
index 935290a5751..29c2749f48c 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/indiancal.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/indiancal.cpp
@@ -16,7 +16,6 @@
#include "mutex.h"
#include <float.h>
#include "gregoimp.h" // Math
-#include "astro.h" // CalendarAstronomer
#include "uhash.h"
// Debugging
@@ -81,6 +80,7 @@ static const int32_t LIMITS[UCAL_FIELD_COUNT][4] = {
{/*N/A*/-1,/*N/A*/-1,/*N/A*/-1,/*N/A*/-1}, // JULIAN_DAY
{/*N/A*/-1,/*N/A*/-1,/*N/A*/-1,/*N/A*/-1}, // MILLISECONDS_IN_DAY
{/*N/A*/-1,/*N/A*/-1,/*N/A*/-1,/*N/A*/-1}, // IS_LEAP_MONTH
+ { 0, 0, 11, 11}, // ORDINAL_MONTH
};
static const int32_t INDIAN_ERA_START = 78;
@@ -294,24 +294,27 @@ void IndianCalendar::handleComputeFields(int32_t julianDay, UErrorCode& /* stat
internalSet(UCAL_EXTENDED_YEAR, IndianYear);
internalSet(UCAL_YEAR, IndianYear);
internalSet(UCAL_MONTH, IndianMonth);
+ internalSet(UCAL_ORDINAL_MONTH, IndianMonth);
internalSet(UCAL_DAY_OF_MONTH, IndianDayOfMonth);
internalSet(UCAL_DAY_OF_YEAR, yday + 1); // yday is 0-based
}
-UBool
-IndianCalendar::inDaylightTime(UErrorCode& status) const
+constexpr uint32_t kIndianRelatedYearDiff = 79;
+
+int32_t IndianCalendar::getRelatedYear(UErrorCode &status) const
{
- // copied from GregorianCalendar
- if (U_FAILURE(status) || !getTimeZone().useDaylightTime()) {
- return false;
+ int32_t year = get(UCAL_EXTENDED_YEAR, status);
+ if (U_FAILURE(status)) {
+ return 0;
}
-
- // Force an update of the state of the Calendar.
- ((IndianCalendar*)this)->complete(status); // cast away const
-
- return (UBool)(U_SUCCESS(status) ? (internalGet(UCAL_DST_OFFSET) != 0) : false);
+ return year + kIndianRelatedYearDiff;
}
+void IndianCalendar::setRelatedYear(int32_t year)
+{
+ // set extended year
+ set(UCAL_EXTENDED_YEAR, year - kIndianRelatedYearDiff);
+}
/**
* The system maintains a static default century start date and Year. They are
diff --git a/Build/source/libs/icu/icu-src/source/i18n/indiancal.h b/Build/source/libs/icu/icu-src/source/i18n/indiancal.h
index bfbea003295..5ef9113a85a 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/indiancal.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/indiancal.h
@@ -261,7 +261,7 @@ public:
* same class ID. Objects of other classes have different class IDs.
* @internal
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
/**
* Return the class ID for this class. This is useful only for comparing to a return
@@ -274,7 +274,7 @@ public:
* @return The class ID for all objects of this class.
* @internal
*/
- static UClassID U_EXPORT2 getStaticClassID(void);
+ static UClassID U_EXPORT2 getStaticClassID();
/**
* return the calendar type, "indian".
@@ -284,24 +284,26 @@ public:
*/
virtual const char * getType() const override;
-private:
- IndianCalendar() = delete; // default constructor not implemented
-
- // Default century.
-protected:
+ /**
+ * @return The related Gregorian year; will be obtained by modifying the value
+ * obtained by get from UCAL_EXTENDED_YEAR field
+ * @internal
+ */
+ virtual int32_t getRelatedYear(UErrorCode &status) const override;
/**
- * (Overrides Calendar) Return true if the current date for this Calendar is in
- * Daylight Savings Time. Recognizes DST_OFFSET, if it is set.
- *
- * @param status Fill-in parameter which receives the status of this operation.
- * @return True if the current date for this Calendar is in Daylight Savings Time,
- * false, otherwise.
+ * @param year The related Gregorian year to set; will be modified as necessary then
+ * set in UCAL_EXTENDED_YEAR field
* @internal
*/
- virtual UBool inDaylightTime(UErrorCode& status) const override;
+ virtual void setRelatedYear(int32_t year) override;
+private:
+ IndianCalendar() = delete; // default constructor not implemented
+
+ // Default century.
+protected:
/**
* Returns true because the Indian Calendar does have a default century
* @internal
diff --git a/Build/source/libs/icu/icu-src/source/i18n/inputext.cpp b/Build/source/libs/icu/icu-src/source/i18n/inputext.cpp
index 7c78ad249a4..bce9862c0fe 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/inputext.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/inputext.cpp
@@ -34,7 +34,7 @@ InputText::InputText(UErrorCode &status)
fRawInput(0),
fRawLength(0)
{
- if (fInputBytes == NULL || fByteStats == NULL) {
+ if (fInputBytes == nullptr || fByteStats == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
}
}
@@ -70,7 +70,7 @@ void InputText::setDeclaredEncoding(const char* encoding, int32_t len)
UBool InputText::isSet() const
{
- return fRawInput != NULL;
+ return fRawInput != nullptr;
}
/**
diff --git a/Build/source/libs/icu/icu-src/source/i18n/islamcal.cpp b/Build/source/libs/icu/icu-src/source/i18n/islamcal.cpp
index 916b4da2b64..c21530a736e 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/islamcal.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/islamcal.cpp
@@ -54,18 +54,18 @@ static void debug_islamcal_msg(const char *pat, ...)
// --- The cache --
// cache of months
-static icu::CalendarCache *gMonthCache = NULL;
-static icu::CalendarAstronomer *gIslamicCalendarAstro = NULL;
+static icu::CalendarCache *gMonthCache = nullptr;
+static icu::CalendarAstronomer *gIslamicCalendarAstro = nullptr;
U_CDECL_BEGIN
-static UBool calendar_islamic_cleanup(void) {
+static UBool calendar_islamic_cleanup() {
if (gMonthCache) {
delete gMonthCache;
- gMonthCache = NULL;
+ gMonthCache = nullptr;
}
if (gIslamicCalendarAstro) {
delete gIslamicCalendarAstro;
- gIslamicCalendarAstro = NULL;
+ gIslamicCalendarAstro = nullptr;
}
return true;
}
@@ -206,67 +206,22 @@ int32_t getUmalqura_MonthLength(int32_t y, int32_t m) {
//-------------------------------------------------------------------------
const char *IslamicCalendar::getType() const {
- const char *sType = NULL;
-
- switch (cType) {
- case CIVIL:
- sType = "islamic-civil";
- break;
- case ASTRONOMICAL:
- sType = "islamic";
- break;
- case TBLA:
- sType = "islamic-tbla";
- break;
- case UMALQURA:
- sType = "islamic-umalqura";
- break;
- default:
- UPRV_UNREACHABLE_EXIT; // out of range
- }
- return sType;
+ return "islamic";
}
IslamicCalendar* IslamicCalendar::clone() const {
return new IslamicCalendar(*this);
}
-IslamicCalendar::IslamicCalendar(const Locale& aLocale, UErrorCode& success, ECalculationType type)
-: Calendar(TimeZone::forLocaleOrDefault(aLocale), aLocale, success),
-cType(type)
+IslamicCalendar::IslamicCalendar(const Locale& aLocale, UErrorCode& success)
+: Calendar(TimeZone::forLocaleOrDefault(aLocale), aLocale, success)
{
setTimeInMillis(getNow(), success); // Call this again now that the vtable is set up properly.
}
-IslamicCalendar::IslamicCalendar(const IslamicCalendar& other) : Calendar(other), cType(other.cType) {
-}
-
IslamicCalendar::~IslamicCalendar()
{
}
-
-void IslamicCalendar::setCalculationType(ECalculationType type, UErrorCode &status)
-{
- if (cType != type) {
- // The fields of the calendar will become invalid, because the calendar
- // rules are different
- UDate m = getTimeInMillis(status);
- cType = type;
- clear();
- setTimeInMillis(m, status);
- }
-}
-
-/**
-* Returns <code>true</code> if this object is using the fixed-cycle civil
-* calendar, or <code>false</code> if using the religious, astronomical
-* calendar.
-* @draft ICU 2.4
-*/
-UBool IslamicCalendar::isCivil() {
- return (cType == CIVIL);
-}
-
//-------------------------------------------------------------------------
// Minimum / Maximum access functions
//-------------------------------------------------------------------------
@@ -304,6 +259,7 @@ static const int32_t LIMITS[UCAL_FIELD_COUNT][4] = {
{/*N/A*/-1,/*N/A*/-1,/*N/A*/-1,/*N/A*/-1}, // JULIAN_DAY
{/*N/A*/-1,/*N/A*/-1,/*N/A*/-1,/*N/A*/-1}, // MILLISECONDS_IN_DAY
{/*N/A*/-1,/*N/A*/-1,/*N/A*/-1,/*N/A*/-1}, // IS_LEAP_MONTH
+ { 0, 0, 11, 11}, // ORDINAL_MONTH
};
/**
@@ -365,19 +321,7 @@ UBool IslamicCalendar::civilLeapYear(int32_t year)
* from the Hijri epoch, origin 0.
*/
int32_t IslamicCalendar::yearStart(int32_t year) const{
- if (cType == CIVIL || cType == TBLA ||
- (cType == UMALQURA && (year < UMALQURA_YEAR_START || year > UMALQURA_YEAR_END)))
- {
- return (year-1)*354 + ClockMath::floorDivide((3+11*(int64_t)year),(int64_t)30);
- } else if(cType==ASTRONOMICAL){
- return trueMonthStart(12*(year-1));
- } else {
- year -= UMALQURA_YEAR_START;
- // rounded least-squares fit of the dates previously calculated from UMALQURA_MONTHLENGTH iteration
- int32_t yrStartLinearEstimate = (int32_t)((354.36720 * (double)year) + 460322.05 + 0.5);
- // need a slight correction to some
- return yrStartLinearEstimate + umAlQuraYrStartEstimateFix[year];
- }
+ return trueMonthStart(12*(year-1));
}
/**
@@ -388,19 +332,7 @@ int32_t IslamicCalendar::yearStart(int32_t year) const{
* @param month The hijri month, 0-based (assumed to be in range 0..11)
*/
int32_t IslamicCalendar::monthStart(int32_t year, int32_t month) const {
- if (cType == CIVIL || cType == TBLA) {
- // This does not handle months out of the range 0..11
- return (int32_t)uprv_ceil(29.5*month)
- + (year-1)*354 + (int32_t)ClockMath::floorDivide((3+11*(int64_t)year),(int64_t)30);
- } else if(cType==ASTRONOMICAL){
- return trueMonthStart(12*(year-1) + month);
- } else {
- int32_t ms = yearStart(year);
- for(int i=0; i< month; i++){
- ms+= handleGetMonthLength(year, i);
- }
- return ms;
- }
+ return trueMonthStart(12*(year-1) + month);
}
/**
@@ -473,9 +405,9 @@ double IslamicCalendar::moonAge(UDate time, UErrorCode &status)
static UMutex astroLock; // pod bay door lock
umtx_lock(&astroLock);
- if(gIslamicCalendarAstro == NULL) {
+ if(gIslamicCalendarAstro == nullptr) {
gIslamicCalendarAstro = new CalendarAstronomer();
- if (gIslamicCalendarAstro == NULL) {
+ if (gIslamicCalendarAstro == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return age;
}
@@ -506,22 +438,8 @@ double IslamicCalendar::moonAge(UDate time, UErrorCode &status)
* @draft ICU 2.4
*/
int32_t IslamicCalendar::handleGetMonthLength(int32_t extendedYear, int32_t month) const {
-
- int32_t length = 0;
-
- if (cType == CIVIL || cType == TBLA ||
- (cType == UMALQURA && (extendedYear<UMALQURA_YEAR_START || extendedYear>UMALQURA_YEAR_END)) ) {
- length = 29 + (month+1) % 2;
- if (month == DHU_AL_HIJJAH && civilLeapYear(extendedYear)) {
- length++;
- }
- } else if(cType == ASTRONOMICAL){
- month = 12*(extendedYear-1) + month;
- length = trueMonthStart(month+1) - trueMonthStart(month) ;
- } else {
- length = getUmalqura_MonthLength(extendedYear - UMALQURA_YEAR_START, month);
- }
- return length;
+ month = 12*(extendedYear-1) + month;
+ return trueMonthStart(month+1) - trueMonthStart(month) ;
}
/**
@@ -529,19 +447,8 @@ int32_t IslamicCalendar::handleGetMonthLength(int32_t extendedYear, int32_t mont
* @draft ICU 2.4
*/
int32_t IslamicCalendar::handleGetYearLength(int32_t extendedYear) const {
- if (cType == CIVIL || cType == TBLA ||
- (cType == UMALQURA && (extendedYear<UMALQURA_YEAR_START || extendedYear>UMALQURA_YEAR_END)) ) {
- return 354 + (civilLeapYear(extendedYear) ? 1 : 0);
- } else if(cType == ASTRONOMICAL){
- int32_t month = 12*(extendedYear-1);
- return (trueMonthStart(month + 12) - trueMonthStart(month));
- } else {
- int len = 0;
- for(int i=0; i<12; i++) {
- len += handleGetMonthLength(extendedYear, i);
- }
- return len;
- }
+ int32_t month = 12*(extendedYear-1);
+ return (trueMonthStart(month + 12) - trueMonthStart(month));
}
//-------------------------------------------------------------------------
@@ -567,8 +474,8 @@ int32_t IslamicCalendar::handleComputeMonthStart(int32_t eyear, int32_t month, U
eyear += (month / 12) - 1;
month = (month % 12) + 11;
}
- return monthStart(eyear, month) + ((cType == TBLA)? ASTRONOMICAL_EPOC: CIVIL_EPOC) - 1;
-}
+ return monthStart(eyear, month) + getEpoc() - 1;
+}
//-------------------------------------------------------------------------
// Functions for converting from milliseconds to field values
@@ -604,105 +511,97 @@ int32_t IslamicCalendar::handleGetExtendedYear() {
* @draft ICU 2.4
*/
void IslamicCalendar::handleComputeFields(int32_t julianDay, UErrorCode &status) {
- int32_t year, month, dayOfMonth, dayOfYear;
- int32_t startDate;
- int32_t days = julianDay - CIVIL_EPOC;
+ if (U_FAILURE(status)) return;
+ int32_t days = julianDay - getEpoc();
- if (cType == CIVIL || cType == TBLA) {
- if(cType == TBLA) {
- days = julianDay - ASTRONOMICAL_EPOC;
- }
- // Use the civil calendar approximation, which is just arithmetic
- year = (int32_t)ClockMath::floorDivide(30 * (int64_t)days + 10646, (int64_t)10631);
- month = (int32_t)uprv_ceil((days - 29 - yearStart(year)) / 29.5 );
- month = month<11?month:11;
- startDate = monthStart(year, month);
- } else if(cType == ASTRONOMICAL){
- // Guess at the number of elapsed full months since the epoch
- int32_t months = (int32_t)uprv_floor((double)days / CalendarAstronomer::SYNODIC_MONTH);
+ // Guess at the number of elapsed full months since the epoch
+ int32_t month = (int32_t)uprv_floor((double)days / CalendarAstronomer::SYNODIC_MONTH);
- startDate = (int32_t)uprv_floor(months * CalendarAstronomer::SYNODIC_MONTH);
+ int32_t startDate = (int32_t)uprv_floor(month * CalendarAstronomer::SYNODIC_MONTH);
- double age = moonAge(internalGetTime(), status);
- if (U_FAILURE(status)) {
- status = U_MEMORY_ALLOCATION_ERROR;
- return;
- }
- if ( days - startDate >= 25 && age > 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 ((startDate = trueMonthStart(months)) > days) {
- // If it was after the date in question, back up a month and try again
- months--;
- }
+ double age = moonAge(internalGetTime(), status);
+ if (U_FAILURE(status)) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ return;
+ }
+ if ( days - startDate >= 25 && age > 0) {
+ // If we're near the end of the month, assume next month and search backwards
+ month++;
+ }
- year = months >= 0 ? ((months / 12) + 1) : ((months + 1 ) / 12);
- month = ((months % 12) + 12 ) % 12;
- } else if(cType == UMALQURA) {
- int32_t umalquraStartdays = yearStart(UMALQURA_YEAR_START) ;
- if( days < umalquraStartdays){
- //Use Civil calculation
- year = (int32_t)ClockMath::floorDivide(
- (30 * (int64_t)days + 10646) , (int64_t)10631.0 );
- month = (int32_t)uprv_ceil((days - 29 - yearStart(year)) / 29.5 );
- month = month<11?month:11;
- startDate = monthStart(year, month);
- }else{
- int y =UMALQURA_YEAR_START-1, m =0;
- long d = 1;
- while(d > 0){
- y++;
- d = days - yearStart(y) +1;
- if(d == handleGetYearLength(y)){
- m=11;
- break;
- }else if(d < handleGetYearLength(y) ){
- int monthLen = handleGetMonthLength(y, m);
- m=0;
- while(d > monthLen){
- d -= monthLen;
- m++;
- monthLen = handleGetMonthLength(y, m);
- }
- break;
- }
- }
- year = y;
- month = m;
- }
- } else { // invalid 'civil'
- UPRV_UNREACHABLE_EXIT; // should not get here, out of range
+ // 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 ((startDate = trueMonthStart(month)) > days) {
+ // If it was after the date in question, back up a month and try again
+ month--;
}
- dayOfMonth = (days - monthStart(year, month)) + 1;
+ int32_t year = month >= 0 ? ((month / 12) + 1) : ((month + 1 ) / 12);
+ month = ((month % 12) + 12 ) % 12;
+ int32_t dayOfMonth = (days - monthStart(year, month)) + 1;
// Now figure out the day of the year.
- dayOfYear = (days - monthStart(year, 0)) + 1;
-
+ int32_t dayOfYear = (days - monthStart(year, 0)) + 1;
internalSet(UCAL_ERA, 0);
internalSet(UCAL_YEAR, year);
internalSet(UCAL_EXTENDED_YEAR, year);
internalSet(UCAL_MONTH, month);
+ internalSet(UCAL_ORDINAL_MONTH, month);
internalSet(UCAL_DAY_OF_MONTH, dayOfMonth);
- internalSet(UCAL_DAY_OF_YEAR, dayOfYear);
-}
+ internalSet(UCAL_DAY_OF_YEAR, dayOfYear);
+}
+
+int32_t IslamicCalendar::getEpoc() const {
+ return CIVIL_EPOC;
+}
-UBool
-IslamicCalendar::inDaylightTime(UErrorCode& status) const
+static int32_t gregoYearFromIslamicStart(int32_t year) {
+ // ad hoc conversion, improve under #10752
+ // rough est for now, ok for grego 1846-2138,
+ // otherwise occasionally wrong (for 3% of years)
+ int cycle, offset, shift = 0;
+ if (year >= 1397) {
+ cycle = (year - 1397) / 67;
+ offset = (year - 1397) % 67;
+ shift = 2*cycle + ((offset >= 33)? 1: 0);
+ } else {
+ cycle = (year - 1396) / 67 - 1;
+ offset = -(year - 1396) % 67;
+ shift = 2*cycle + ((offset <= 33)? 1: 0);
+ }
+ return year + 579 - shift;
+}
+
+int32_t IslamicCalendar::getRelatedYear(UErrorCode &status) const
{
- // copied from GregorianCalendar
- if (U_FAILURE(status) || !getTimeZone().useDaylightTime())
- return false;
+ int32_t year = get(UCAL_EXTENDED_YEAR, status);
+ if (U_FAILURE(status)) {
+ return 0;
+ }
+ return gregoYearFromIslamicStart(year);
+}
- // Force an update of the state of the Calendar.
- ((IslamicCalendar*)this)->complete(status); // cast away const
+static int32_t firstIslamicStartYearFromGrego(int32_t year) {
+ // ad hoc conversion, improve under #10752
+ // rough est for now, ok for grego 1846-2138,
+ // otherwise occasionally wrong (for 3% of years)
+ int cycle, offset, shift = 0;
+ if (year >= 1977) {
+ cycle = (year - 1977) / 65;
+ offset = (year - 1977) % 65;
+ shift = 2*cycle + ((offset >= 32)? 1: 0);
+ } else {
+ cycle = (year - 1976) / 65 - 1;
+ offset = -(year - 1976) % 65;
+ shift = 2*cycle + ((offset <= 32)? 1: 0);
+ }
+ return year - 579 + shift;
+}
- return (UBool)(U_SUCCESS(status) ? (internalGet(UCAL_DST_OFFSET) != 0) : false);
+void IslamicCalendar::setRelatedYear(int32_t year)
+{
+ set(UCAL_EXTENDED_YEAR, firstIslamicStartYearFromGrego(year));
}
/**
@@ -734,6 +633,14 @@ int32_t IslamicCalendar::defaultCenturyStartYear() const
return gSystemDefaultCenturyStartYear;
}
+bool
+IslamicCalendar::inTemporalLeapYear(UErrorCode &status) const
+{
+ int32_t days = getActualMaximum(UCAL_DAY_OF_YEAR, status);
+ if (U_FAILURE(status)) return false;
+ return days == 355;
+}
+
U_CFUNC void U_CALLCONV
IslamicCalendar::initializeSystemDefaultCentury()
@@ -754,9 +661,317 @@ IslamicCalendar::initializeSystemDefaultCentury()
// out.
}
+/*****************************************************************************
+ * IslamicCivilCalendar
+ *****************************************************************************/
+IslamicCivilCalendar::IslamicCivilCalendar(const Locale& aLocale, UErrorCode& success)
+ : IslamicCalendar(aLocale, success)
+{
+}
+
+IslamicCivilCalendar::~IslamicCivilCalendar()
+{
+}
+
+const char *IslamicCivilCalendar::getType() const {
+ return "islamic-civil";
+}
+
+IslamicCivilCalendar* IslamicCivilCalendar::clone() const {
+ return new IslamicCivilCalendar(*this);
+}
+
+/**
+* Return the day # on which the given year starts. Days are counted
+* from the Hijri epoch, origin 0.
+*/
+int32_t IslamicCivilCalendar::yearStart(int32_t year) const{
+ return static_cast<int32_t>(
+ (year-1)*354 + ClockMath::floorDivide((3+11*static_cast<int64_t>(year)),
+ static_cast<int64_t>(30)));
+}
+
+/**
+* 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 (assumed to be in range 0..11)
+*/
+int32_t IslamicCivilCalendar::monthStart(int32_t year, int32_t month) const {
+ // This does not handle months out of the range 0..11
+ return static_cast<int32_t>(
+ uprv_ceil(29.5*month) + (year-1)*354 +
+ static_cast<int32_t>(ClockMath::floorDivide(
+ 3+11*static_cast<int64_t>(year),
+ static_cast<int64_t>(30))));
+}
+
+/**
+* Return the length (in days) of the given month.
+*
+* @param year The hijri year
+* @param year The hijri month, 0-based
+* @draft ICU 2.4
+*/
+int32_t IslamicCivilCalendar::handleGetMonthLength(int32_t extendedYear, int32_t month) const {
+ int32_t length = 29 + (month+1) % 2;
+ if (month == DHU_AL_HIJJAH && civilLeapYear(extendedYear)) {
+ length++;
+ }
+ return length;
+}
+
+/**
+* Return the number of days in the given Islamic year
+* @draft ICU 2.4
+*/
+int32_t IslamicCivilCalendar::handleGetYearLength(int32_t extendedYear) const {
+ return 354 + (civilLeapYear(extendedYear) ? 1 : 0);
+}
+
+/**
+* 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.
+* @draft ICU 2.4
+*/
+void IslamicCivilCalendar::handleComputeFields(int32_t julianDay, UErrorCode &status) {
+ if (U_FAILURE(status)) return;
+ int32_t days = julianDay - getEpoc();
+
+ // Use the civil calendar approximation, which is just arithmetic
+ int32_t year = static_cast<int32_t>(
+ ClockMath::floorDivide(30 * static_cast<int64_t>(days) + 10646,
+ static_cast<int64_t>(10631)));
+ int32_t month = static_cast<int32_t>(
+ uprv_ceil((days - 29 - yearStart(year)) / 29.5 ));
+ month = month<11?month:11;
+
+ int32_t dayOfMonth = (days - monthStart(year, month)) + 1;
+
+ // Now figure out the day of the year.
+ int32_t dayOfYear = (days - monthStart(year, 0)) + 1;
+
+ internalSet(UCAL_ERA, 0);
+ internalSet(UCAL_YEAR, year);
+ internalSet(UCAL_EXTENDED_YEAR, year);
+ internalSet(UCAL_MONTH, month);
+ internalSet(UCAL_ORDINAL_MONTH, month);
+ internalSet(UCAL_DAY_OF_MONTH, dayOfMonth);
+ internalSet(UCAL_DAY_OF_YEAR, dayOfYear);
+}
+/*****************************************************************************
+ * IslamicTBLACalendar
+ *****************************************************************************/
+IslamicTBLACalendar::IslamicTBLACalendar(const Locale& aLocale, UErrorCode& success)
+ : IslamicCivilCalendar(aLocale, success)
+{
+}
+
+IslamicTBLACalendar::~IslamicTBLACalendar()
+{
+}
+
+const char *IslamicTBLACalendar::getType() const {
+ return "islamic-tbla";
+}
+
+IslamicTBLACalendar* IslamicTBLACalendar::clone() const {
+ return new IslamicTBLACalendar(*this);
+}
+
+int32_t IslamicTBLACalendar::getEpoc() const {
+ return ASTRONOMICAL_EPOC;
+}
+
+/*****************************************************************************
+ * IslamicUmalquraCalendar
+ *****************************************************************************/
+IslamicUmalquraCalendar::IslamicUmalquraCalendar(const Locale& aLocale, UErrorCode& success)
+ : IslamicCalendar(aLocale, success)
+{
+}
+
+IslamicUmalquraCalendar::~IslamicUmalquraCalendar()
+{
+}
+const char *IslamicUmalquraCalendar::getType() const {
+ return "islamic-umalqura";
+}
+
+IslamicUmalquraCalendar* IslamicUmalquraCalendar::clone() const {
+ return new IslamicUmalquraCalendar(*this);
+}
+
+/**
+* Return the day # on which the given year starts. Days are counted
+* from the Hijri epoch, origin 0.
+*/
+int32_t IslamicUmalquraCalendar::yearStart(int32_t year) const {
+ if (year < UMALQURA_YEAR_START || year > UMALQURA_YEAR_END) {
+ return static_cast<int32_t>(
+ (year-1)*354 + ClockMath::floorDivide((3+11*static_cast<int64_t>(year)),
+ static_cast<int64_t>(30)));
+ }
+ year -= UMALQURA_YEAR_START;
+ // rounded least-squares fit of the dates previously calculated from UMALQURA_MONTHLENGTH iteration
+ int32_t yrStartLinearEstimate = static_cast<int32_t>(
+ (354.36720 * (double)year) + 460322.05 + 0.5);
+ // need a slight correction to some
+ return yrStartLinearEstimate + umAlQuraYrStartEstimateFix[year];
+}
+
+/**
+* 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 (assumed to be in range 0..11)
+*/
+int32_t IslamicUmalquraCalendar::monthStart(int32_t year, int32_t month) const {
+ int32_t ms = yearStart(year);
+ for(int i=0; i< month; i++){
+ ms+= handleGetMonthLength(year, i);
+ }
+ return ms;
+}
+
+/**
+* Return the length (in days) of the given month.
+*
+* @param year The hijri year
+* @param year The hijri month, 0-based
+*/
+int32_t IslamicUmalquraCalendar::handleGetMonthLength(int32_t extendedYear, int32_t month) const {
+ int32_t length = 0;
+ if (extendedYear<UMALQURA_YEAR_START || extendedYear>UMALQURA_YEAR_END) {
+ length = 29 + (month+1) % 2;
+ if (month == DHU_AL_HIJJAH && civilLeapYear(extendedYear)) {
+ length++;
+ }
+ return length;
+ }
+ return getUmalqura_MonthLength(extendedYear - UMALQURA_YEAR_START, month);
+}
+
+/**
+* Return the number of days in the given Islamic year
+* @draft ICU 2.4
+*/
+int32_t IslamicUmalquraCalendar::handleGetYearLength(int32_t extendedYear) const {
+ if (extendedYear<UMALQURA_YEAR_START || extendedYear>UMALQURA_YEAR_END) {
+ return 354 + (civilLeapYear(extendedYear) ? 1 : 0);
+ }
+ int len = 0;
+ for(int i=0; i<12; i++) {
+ len += handleGetMonthLength(extendedYear, i);
+ }
+ return len;
+}
+
+/**
+* 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.
+* @draft ICU 2.4
+*/
+void IslamicUmalquraCalendar::handleComputeFields(int32_t julianDay, UErrorCode &status) {
+ if (U_FAILURE(status)) return;
+ int32_t year, month, dayOfMonth, dayOfYear;
+ int32_t days = julianDay - getEpoc();
+
+ int32_t umalquraStartdays = yearStart(UMALQURA_YEAR_START) ;
+ if (days < umalquraStartdays) {
+ //Use Civil calculation
+ year = (int32_t)ClockMath::floorDivide(
+ (30 * (int64_t)days + 10646) , (int64_t)10631.0 );
+ month = (int32_t)uprv_ceil((days - 29 - yearStart(year)) / 29.5 );
+ month = month < 11 ? month : 11;
+ } else {
+ int y =UMALQURA_YEAR_START-1, m =0;
+ long d = 1;
+ while (d > 0) {
+ y++;
+ d = days - yearStart(y) +1;
+ if (d == handleGetYearLength(y)) {
+ m=11;
+ break;
+ }
+ if (d < handleGetYearLength(y)){
+ int monthLen = handleGetMonthLength(y, m);
+ m=0;
+ while(d > monthLen){
+ d -= monthLen;
+ m++;
+ monthLen = handleGetMonthLength(y, m);
+ }
+ break;
+ }
+ }
+ year = y;
+ month = m;
+ }
+
+ dayOfMonth = (days - monthStart(year, month)) + 1;
+
+ // Now figure out the day of the year.
+ dayOfYear = (days - monthStart(year, 0)) + 1;
+
+ internalSet(UCAL_ERA, 0);
+ internalSet(UCAL_YEAR, year);
+ internalSet(UCAL_EXTENDED_YEAR, year);
+ internalSet(UCAL_MONTH, month);
+ internalSet(UCAL_ORDINAL_MONTH, month);
+ internalSet(UCAL_DAY_OF_MONTH, dayOfMonth);
+ internalSet(UCAL_DAY_OF_YEAR, dayOfYear);
+}
+/*****************************************************************************
+ * IslamicRGSACalendar
+ *****************************************************************************/
+IslamicRGSACalendar::IslamicRGSACalendar(const Locale& aLocale, UErrorCode& success)
+ : IslamicCalendar(aLocale, success)
+{
+}
+
+IslamicRGSACalendar::~IslamicRGSACalendar()
+{
+}
+
+const char *IslamicRGSACalendar::getType() const {
+ return "islamic-rgsa";
+}
+
+IslamicRGSACalendar* IslamicRGSACalendar::clone() const {
+ return new IslamicRGSACalendar(*this);
+}
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(IslamicCalendar)
+UOBJECT_DEFINE_RTTI_IMPLEMENTATION(IslamicCivilCalendar)
+UOBJECT_DEFINE_RTTI_IMPLEMENTATION(IslamicUmalquraCalendar)
+UOBJECT_DEFINE_RTTI_IMPLEMENTATION(IslamicTBLACalendar)
+UOBJECT_DEFINE_RTTI_IMPLEMENTATION(IslamicRGSACalendar)
U_NAMESPACE_END
diff --git a/Build/source/libs/icu/icu-src/source/i18n/islamcal.h b/Build/source/libs/icu/icu-src/source/i18n/islamcal.h
index 7d9941d4709..8469269bccc 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/islamcal.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/islamcal.h
@@ -53,7 +53,8 @@ U_NAMESPACE_BEGIN
* 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.
+ * object. This calendar variant is implemented in the IslamicCivilCalendar
+ * class.
* <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
@@ -71,10 +72,6 @@ U_NAMESPACE_BEGIN
* 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.
*
* @see GregorianCalendar
*
@@ -88,18 +85,6 @@ class U_I18N_API IslamicCalendar : public Calendar {
//-------------------------------------------------------------------------
// Constants...
//-------------------------------------------------------------------------
-
- /**
- * Calendar type - civil or religious or um alqura
- * @internal
- */
- enum ECalculationType {
- ASTRONOMICAL,
- CIVIL,
- UMALQURA,
- TBLA
- };
-
/**
* Constants for the months
* @internal
@@ -192,16 +177,15 @@ class U_I18N_API IslamicCalendar : public Calendar {
* @param aLocale The given locale.
* @param success Indicates the status of IslamicCalendar object construction.
* Returns U_ZERO_ERROR if constructed successfully.
- * @param type The Islamic calendar calculation type. The default value is CIVIL.
* @internal
*/
- IslamicCalendar(const Locale& aLocale, UErrorCode &success, ECalculationType type = CIVIL);
+ IslamicCalendar(const Locale& aLocale, UErrorCode &success);
/**
* Copy Constructor
* @internal
*/
- IslamicCalendar(const IslamicCalendar& other);
+ IslamicCalendar(const IslamicCalendar& other) = default;
/**
* Destructor.
@@ -209,40 +193,20 @@ class U_I18N_API IslamicCalendar : public Calendar {
*/
virtual ~IslamicCalendar();
- /**
- * Sets Islamic calendar calculation type used by this instance.
- *
- * @param type The calendar calculation type, <code>CIVIL</code> to use the civil
- * calendar, <code>ASTRONOMICAL</code> to use the astronomical calendar.
- * @internal
- */
- void setCalculationType(ECalculationType type, UErrorCode &status);
-
- /**
- * Returns <code>true</code> if this object is using the fixed-cycle civil
- * calendar, or <code>false</code> if using the religious, astronomical
- * calendar.
- * @internal
- */
- UBool isCivil();
-
-
- // TODO: copy c'tor, etc
-
// clone
virtual IslamicCalendar* clone() const override;
- private:
+ protected:
/**
* Determine whether a year is a leap year in the Islamic civil calendar
*/
static UBool civilLeapYear(int32_t year);
-
+
/**
* Return the day # on which the given year starts. Days are counted
* from the Hijri epoch, origin 0.
*/
- int32_t yearStart(int32_t year) const;
+ virtual int32_t yearStart(int32_t year) const;
/**
* Return the day # on which the given month starts. Days are counted
@@ -251,7 +215,7 @@ class U_I18N_API IslamicCalendar : public Calendar {
* @param year The hijri year
* @param year The hijri month, 0-based
*/
- int32_t monthStart(int32_t year, int32_t month) const;
+ virtual int32_t monthStart(int32_t year, int32_t month) const;
/**
* Find the day number on which a particular month of the true/lunar
@@ -263,6 +227,7 @@ class U_I18N_API IslamicCalendar : public Calendar {
*/
int32_t trueMonthStart(int32_t month) const;
+ private:
/**
* 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
@@ -274,17 +239,6 @@ class U_I18N_API IslamicCalendar : public Calendar {
*/
static double moonAge(UDate time, UErrorCode &status);
- //-------------------------------------------------------------------------
- // Internal data....
- //
-
- /**
- * <code>CIVIL</code> if this object uses the fixed-cycle Islamic civil calendar,
- * and <code>ASTRONOMICAL</code> if it approximates the true religious calendar using
- * astronomical calculations for the time of the new moon.
- */
- ECalculationType cType;
-
//----------------------------------------------------------------------
// Calendar framework
//----------------------------------------------------------------------
@@ -346,6 +300,12 @@ class U_I18N_API IslamicCalendar : public Calendar {
*/
virtual void handleComputeFields(int32_t julianDay, UErrorCode &status) override;
+ /**
+ * Return the epoc.
+ * @internal
+ */
+ virtual int32_t getEpoc() const;
+
// UObject stuff
public:
/**
@@ -353,7 +313,7 @@ class U_I18N_API IslamicCalendar : public Calendar {
* same class ID. Objects of other classes have different class IDs.
* @internal
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
/**
* Return the class ID for this class. This is useful only for comparing to a return
@@ -366,34 +326,44 @@ class U_I18N_API IslamicCalendar : public Calendar {
* @return The class ID for all objects of this class.
* @internal
*/
- /*U_I18N_API*/ static UClassID U_EXPORT2 getStaticClassID(void);
+ /*U_I18N_API*/ static UClassID U_EXPORT2 getStaticClassID();
/**
- * return the calendar type, "buddhist".
+ * return the calendar type, "islamic".
*
* @return calendar type
* @internal
*/
virtual const char * getType() const override;
- private:
- IslamicCalendar() = delete; // default constructor not implemented
+ /**
+ * @return The related Gregorian year; will be obtained by modifying the value
+ * obtained by get from UCAL_EXTENDED_YEAR field
+ * @internal
+ */
+ virtual int32_t getRelatedYear(UErrorCode &status) const override;
- // Default century.
- protected:
+ /**
+ * @param year The related Gregorian year to set; will be modified as necessary then
+ * set in UCAL_EXTENDED_YEAR field
+ * @internal
+ */
+ virtual void setRelatedYear(int32_t year) override;
/**
- * (Overrides Calendar) Return true if the current date for this Calendar is in
- * Daylight Savings Time. Recognizes DST_OFFSET, if it is set.
+ * Returns true if the date is in a leap year.
*
- * @param status Fill-in parameter which receives the status of this operation.
- * @return True if the current date for this Calendar is in Daylight Savings Time,
- * false, otherwise.
- * @internal
+ * @param status ICU Error Code
+ * @return True if the date in the fields is in a Temporal proposal
+ * defined leap year. False otherwise.
*/
- virtual UBool inDaylightTime(UErrorCode& status) const override;
+ virtual bool inTemporalLeapYear(UErrorCode &status) const override;
+ private:
+ IslamicCalendar() = delete; // default constructor not implemented
+ // Default century.
+ protected:
/**
* Returns true because the Islamic Calendar does have a default century
* @internal
@@ -419,13 +389,375 @@ class U_I18N_API IslamicCalendar : public Calendar {
* are considered to fall within so that its start date is 80 years
* before the current time.
*/
- static void U_CALLCONV initializeSystemDefaultCentury(void);
+ static void U_CALLCONV initializeSystemDefaultCentury();
};
-U_NAMESPACE_END
+/*
+ * IslamicCivilCalendar is one of the two main variants of the Islamic calendar.
+ * 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 calendar is referring as "Islamic calendar, tabular (intercalary years
+ * [2,5,7,10,13,16,18,21,24,26,29]- civil epoch" in CLDR.
+ */
+class U_I18N_API IslamicCivilCalendar : public IslamicCalendar {
+ public:
+ /**
+ * Constructs an IslamicCivilCalendar based on the current time in the default time zone
+ * with the given locale.
+ *
+ * @param aLocale The given locale.
+ * @param success Indicates the status of IslamicCivilCalendar object construction.
+ * Returns U_ZERO_ERROR if constructed successfully.
+ * @internal
+ */
+ IslamicCivilCalendar(const Locale& aLocale, UErrorCode &success);
-#endif
-#endif
+ /**
+ * Copy Constructor
+ * @internal
+ */
+ IslamicCivilCalendar(const IslamicCivilCalendar& other) = default;
+
+ /**
+ * Destructor.
+ * @internal
+ */
+ virtual ~IslamicCivilCalendar();
+
+ // clone
+ virtual IslamicCivilCalendar* clone() const override;
+
+ /**
+ * @return The class ID for this object. All objects of a given class have the
+ * same class ID. Objects of other classes have different class IDs.
+ * @internal
+ */
+ virtual UClassID getDynamicClassID() const override;
+
+ /**
+ * Return the class ID for this class. This is useful only for comparing to a return
+ * value from getDynamicClassID(). For example:
+ *
+ * Base* polymorphic_pointer = createPolymorphicObject();
+ * if (polymorphic_pointer->getDynamicClassID() ==
+ * Derived::getStaticClassID()) ...
+ *
+ * @return The class ID for all objects of this class.
+ * @internal
+ */
+ static UClassID U_EXPORT2 getStaticClassID();
+
+ /**
+ * return the calendar type, "islamic-civil".
+ *
+ * @return calendar type
+ * @internal
+ */
+ virtual const char * getType() const override;
+
+ protected:
+ /**
+ * Return the day # on which the given year starts. Days are counted
+ * from the Hijri epoch, origin 0.
+ * @internal
+ */
+ virtual int32_t yearStart(int32_t year) const override;
+
+ /**
+ * Return the day # on which the given month starts. Days are counted
+ * from the Hijri epoch, origin 0.
+ *
+ * @param year The hijri year
+ * @param year The hijri month, 0-based
+ * @internal
+ */
+ virtual int32_t monthStart(int32_t year, int32_t month) const override;
+
+ /**
+ * Return the length (in days) of the given month.
+ *
+ * @param year The hijri year
+ * @param year The hijri month, 0-based
+ * @internal
+ */
+ virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month) const override;
+
+ /**
+ * Return the number of days in the given Islamic year
+ * @internal
+ */
+ virtual int32_t handleGetYearLength(int32_t extendedYear) const override;
+
+ /**
+ * 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.
+ * @internal
+ */
+ virtual void handleComputeFields(int32_t julianDay, UErrorCode &status) override;
+};
+
+/*
+ * IslamicTBLACalendar calendar.
+ * This is a subclass of IslamicCivilCalendar. The only differences in the
+ * calendar math is it uses different epoch.
+ * This calendar is referring as "Islamic calendar, tabular (intercalary years
+ * [2,5,7,10,13,16,18,21,24,26,29] - astronomical epoch" in CLDR.
+ */
+class U_I18N_API IslamicTBLACalendar : public IslamicCivilCalendar {
+ public:
+ /**
+ * Constructs an IslamicTBLACalendar based on the current time in the default time zone
+ * with the given locale.
+ *
+ * @param aLocale The given locale.
+ * @param success Indicates the status of IslamicTBLACalendar object construction.
+ * Returns U_ZERO_ERROR if constructed successfully.
+ * @internal
+ */
+ IslamicTBLACalendar(const Locale& aLocale, UErrorCode &success);
+
+ /**
+ * Copy Constructor
+ * @internal
+ */
+ IslamicTBLACalendar(const IslamicTBLACalendar& other) = default;
+
+ /**
+ * Destructor.
+ * @internal
+ */
+ virtual ~IslamicTBLACalendar();
+
+ /**
+ * @return The class ID for this object. All objects of a given class have the
+ * same class ID. Objects of other classes have different class IDs.
+ * @internal
+ */
+ virtual UClassID getDynamicClassID() const override;
+
+ /**
+ * Return the class ID for this class. This is useful only for comparing to a return
+ * value from getDynamicClassID(). For example:
+ *
+ * Base* polymorphic_pointer = createPolymorphicObject();
+ * if (polymorphic_pointer->getDynamicClassID() ==
+ * Derived::getStaticClassID()) ...
+ *
+ * @return The class ID for all objects of this class.
+ * @internal
+ */
+ static UClassID U_EXPORT2 getStaticClassID();
+
+ /**
+ * return the calendar type, "islamic-tbla".
+ *
+ * @return calendar type
+ * @internal
+ */
+ virtual const char * getType() const override;
+
+ // clone
+ virtual IslamicTBLACalendar* clone() const override;
+
+ protected:
+ /**
+ * Return the epoc.
+ * @internal
+ */
+ virtual int32_t getEpoc() const override;
+};
+
+/*
+ * IslamicUmalquraCalendar
+ * This calendar is referred as "Islamic calendar, Umm al-Qura" in CLDR.
+ */
+class U_I18N_API IslamicUmalquraCalendar : public IslamicCalendar {
+ public:
+ /**
+ * Constructs an IslamicUmalquraCalendar based on the current time in the default time zone
+ * with the given locale.
+ *
+ * @param aLocale The given locale.
+ * @param success Indicates the status of IslamicUmalquraCalendar object construction.
+ * Returns U_ZERO_ERROR if constructed successfully.
+ * @internal
+ */
+ IslamicUmalquraCalendar(const Locale& aLocale, UErrorCode &success);
+
+ /**
+ * Copy Constructor
+ * @internal
+ */
+ IslamicUmalquraCalendar(const IslamicUmalquraCalendar& other) = default;
+
+ /**
+ * Destructor.
+ * @internal
+ */
+ virtual ~IslamicUmalquraCalendar();
+
+ /**
+ * @return The class ID for this object. All objects of a given class have the
+ * same class ID. Objects of other classes have different class IDs.
+ * @internal
+ */
+ virtual UClassID getDynamicClassID() const override;
+
+ /**
+ * Return the class ID for this class. This is useful only for comparing to a return
+ * value from getDynamicClassID(). For example:
+ *
+ * Base* polymorphic_pointer = createPolymorphicObject();
+ * if (polymorphic_pointer->getDynamicClassID() ==
+ * Derived::getStaticClassID()) ...
+ *
+ * @return The class ID for all objects of this class.
+ * @internal
+ */
+ static UClassID U_EXPORT2 getStaticClassID();
+
+ /**
+ * return the calendar type, "islamic-umalqura".
+ *
+ * @return calendar type
+ * @internal
+ */
+ virtual const char * getType() const override;
+ // clone
+ virtual IslamicUmalquraCalendar* clone() const override;
+
+ protected:
+ /**
+ * Return the day # on which the given year starts. Days are counted
+ * from the Hijri epoch, origin 0.
+ * @internal
+ */
+ virtual int32_t yearStart(int32_t year) const override;
+ /**
+ * Return the day # on which the given month starts. Days are counted
+ * from the Hijri epoch, origin 0.
+ *
+ * @param year The hijri year
+ * @param year The hijri month, 0-based
+ * @internal
+ */
+ virtual int32_t monthStart(int32_t year, int32_t month) const override;
+ /**
+ * Return the length (in days) of the given month.
+ *
+ * @param year The hijri year
+ * @param year The hijri month, 0-based
+ * @internal
+ */
+ virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month) const override;
+
+ /**
+ * Return the number of days in the given Islamic year
+ * @internal
+ */
+ virtual int32_t handleGetYearLength(int32_t extendedYear) const override;
+
+ /**
+ * 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.
+ * @internal
+ */
+ virtual void handleComputeFields(int32_t julianDay, UErrorCode &status) override;
+};
+
+
+/*
+ * IslamicRGSACalendar
+ * Islamic calendar, Saudi Arabia sighting. Since the calendar depends on the
+ * sighting, it is impossible to implement by algorithm ahead of time. It is
+ * currently identical to IslamicCalendar except the getType will return
+ * "islamic-rgsa".
+ */
+class U_I18N_API IslamicRGSACalendar : public IslamicCalendar {
+ public:
+ /**
+ * Constructs an IslamicRGSACalendar based on the current time in the default time zone
+ * with the given locale.
+ *
+ * @param aLocale The given locale.
+ * @param success Indicates the status of IslamicRGSACalendar object construction.
+ * Returns U_ZERO_ERROR if constructed successfully.
+ * @internal
+ */
+ IslamicRGSACalendar(const Locale& aLocale, UErrorCode &success);
+
+ /**
+ * Copy Constructor
+ * @internal
+ */
+ IslamicRGSACalendar(const IslamicRGSACalendar& other) = default;
+
+ /**
+ * Destructor.
+ * @internal
+ */
+ virtual ~IslamicRGSACalendar();
+
+ /**
+ * @return The class ID for this object. All objects of a given class have the
+ * same class ID. Objects of other classes have different class IDs.
+ * @internal
+ */
+ virtual UClassID getDynamicClassID() const override;
+
+ /**
+ * Return the class ID for this class. This is useful only for comparing to a return
+ * value from getDynamicClassID(). For example:
+ *
+ * Base* polymorphic_pointer = createPolymorphicObject();
+ * if (polymorphic_pointer->getDynamicClassID() ==
+ * Derived::getStaticClassID()) ...
+ *
+ * @return The class ID for all objects of this class.
+ * @internal
+ */
+ static UClassID U_EXPORT2 getStaticClassID();
+
+ /**
+ * return the calendar type, "islamic-rgsa".
+ *
+ * @return calendar type
+ * @internal
+ */
+ virtual const char * getType() const override;
+
+ // clone
+ virtual IslamicRGSACalendar* clone() const override;
+};
+
+U_NAMESPACE_END
+
+#endif
+#endif
diff --git a/Build/source/libs/icu/icu-src/source/i18n/iso8601cal.cpp b/Build/source/libs/icu/icu-src/source/i18n/iso8601cal.cpp
new file mode 100644
index 00000000000..c3288bc6b5d
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/i18n/iso8601cal.cpp
@@ -0,0 +1,43 @@
+// © 2022 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+#include "iso8601cal.h"
+#include "unicode/gregocal.h"
+
+U_NAMESPACE_BEGIN
+
+UOBJECT_DEFINE_RTTI_IMPLEMENTATION(ISO8601Calendar)
+
+ISO8601Calendar::ISO8601Calendar(const Locale& aLocale, UErrorCode& success)
+: GregorianCalendar(aLocale, success)
+{
+ UErrorCode fwStatus = U_ZERO_ERROR;
+ int32_t fwLength = aLocale.getKeywordValue("fw", nullptr, 0, fwStatus);
+ // Do not set first day of week for iso8601 to Monday if we have fw keyword
+ // and let the value set by the Calendar constructor to take care of it.
+ if (U_SUCCESS(fwStatus) && fwLength == 0) {
+ setFirstDayOfWeek(UCAL_MONDAY);
+ }
+ setMinimalDaysInFirstWeek(4);
+}
+
+ISO8601Calendar::~ISO8601Calendar()
+{
+}
+
+ISO8601Calendar* ISO8601Calendar::clone() const
+{
+ return new ISO8601Calendar(*this);
+}
+
+const char *ISO8601Calendar::getType() const
+{
+ return "iso8601";
+}
+
+U_NAMESPACE_END
+
+#endif
diff --git a/Build/source/libs/icu/icu-src/source/i18n/iso8601cal.h b/Build/source/libs/icu/icu-src/source/i18n/iso8601cal.h
new file mode 100644
index 00000000000..688fac3588b
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/i18n/iso8601cal.h
@@ -0,0 +1,102 @@
+// © 2022 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+#ifndef ISO8601CAL_H
+#define ISO8601CAL_H
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+#include "unicode/calendar.h"
+#include "unicode/gregocal.h"
+#include "unicode/timezone.h"
+
+U_NAMESPACE_BEGIN
+
+/**
+ * Concrete class which provides the ISO8601 calendar.
+ * <P>
+ * <code>ISO8601Calendar</code> is a subclass of <code>GregorianCalendar</code>
+ * that the first day of a week is Monday and the minimal days in the first
+ * week of a year or month is four days.
+ * <p>
+ * The ISO8601 calendar is identical to the Gregorian calendar in all respects
+ * except for the first day of week and the minimal days in the first week
+ * of a year.
+ * @internal
+ */
+class ISO8601Calendar : public GregorianCalendar {
+ public:
+ //-------------------------------------------------------------------------
+ // Constructors...
+ //-------------------------------------------------------------------------
+
+ /**
+ * Constructs a DangiCalendar based on the current time in the default time zone
+ * with the given locale.
+ *
+ * @param aLocale The given locale.
+ * @param success Indicates the status of ISO8601Calendar object construction.
+ * Returns U_ZERO_ERROR if constructed successfully.
+ * @internal
+ */
+ ISO8601Calendar(const Locale& aLocale, UErrorCode &success);
+
+ /**
+ * Copy Constructor
+ * @internal
+ */
+ ISO8601Calendar(const ISO8601Calendar& other) = default;
+
+ /**
+ * Destructor.
+ * @internal
+ */
+ virtual ~ISO8601Calendar();
+
+ /**
+ * Clone.
+ * @internal
+ */
+ virtual ISO8601Calendar* clone() const override;
+
+ // UObject stuff
+ public:
+ /**
+ * @return The class ID for this object. All objects of a given class have the
+ * same class ID. Objects of other classes have different class IDs.
+ * @internal
+ */
+ virtual UClassID getDynamicClassID() const override;
+
+ /**
+ * Return the class ID for this class. This is useful only for comparing to a return
+ * value from getDynamicClassID(). For example:
+ *
+ * Base* polymorphic_pointer = createPolymorphicObject();
+ * if (polymorphic_pointer->getDynamicClassID() ==
+ * Derived::getStaticClassID()) ...
+ *
+ * @return The class ID for all objects of this class.
+ * @internal
+ */
+ U_I18N_API static UClassID U_EXPORT2 getStaticClassID();
+
+ /**
+ * return the calendar type, "iso8601".
+ *
+ * @return calendar type
+ * @internal
+ */
+ virtual const char * getType() const override;
+
+
+ private:
+
+ ISO8601Calendar(); // default constructor not implemented
+};
+
+U_NAMESPACE_END
+
+#endif
+#endif
diff --git a/Build/source/libs/icu/icu-src/source/i18n/japancal.cpp b/Build/source/libs/icu/icu-src/source/i18n/japancal.cpp
index ca9b0704a00..fc18d6c0eb1 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/japancal.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/japancal.cpp
@@ -43,7 +43,7 @@ static icu::UInitOnce gJapaneseEraRulesInitOnce {};
static int32_t gCurrentEra = 0;
U_CDECL_BEGIN
-static UBool japanese_calendar_cleanup(void) {
+static UBool japanese_calendar_cleanup() {
if (gJapaneseEraRules) {
delete gJapaneseEraRules;
gJapaneseEraRules = nullptr;
@@ -75,7 +75,7 @@ UBool JapaneseCalendar::enableTentativeEra() {
#if U_PLATFORM_HAS_WINUWP_API == 1
// UWP doesn't allow access to getenv(), but we can call GetEnvironmentVariableW to do the same thing.
- UChar varName[26] = {};
+ char16_t varName[26] = {};
u_charsToUChars(TENTATIVE_ERA_VAR_NAME, varName, static_cast<int32_t>(uprv_strlen(TENTATIVE_ERA_VAR_NAME)));
WCHAR varValue[5] = {};
DWORD ret = GetEnvironmentVariableW(reinterpret_cast<WCHAR*>(varName), varValue, UPRV_LENGTHOF(varValue));
@@ -84,7 +84,7 @@ UBool JapaneseCalendar::enableTentativeEra() {
}
#else
char *envVarVal = getenv(TENTATIVE_ERA_VAR_NAME);
- if (envVarVal != NULL && uprv_stricmp(envVarVal, "true") == 0) {
+ if (envVarVal != nullptr && uprv_stricmp(envVarVal, "true") == 0) {
includeTentativeEra = true;
}
#endif
@@ -219,7 +219,7 @@ void JapaneseCalendar::handleComputeFields(int32_t julianDay, UErrorCode& status
//Calendar::timeToFields(theTime, quick, status);
GregorianCalendar::handleComputeFields(julianDay, status);
int32_t year = internalGet(UCAL_EXTENDED_YEAR); // Gregorian year
- int32_t eraIdx = gJapaneseEraRules->getEraIndex(year, internalGet(UCAL_MONTH) + 1, internalGet(UCAL_DAY_OF_MONTH), status);
+ int32_t eraIdx = gJapaneseEraRules->getEraIndex(year, internalGetMonth() + 1, internalGet(UCAL_DAY_OF_MONTH), status);
internalSet(UCAL_ERA, eraIdx);
internalSet(UCAL_YEAR, year - gJapaneseEraRules->getStartYear(eraIdx, status) + 1);
diff --git a/Build/source/libs/icu/icu-src/source/i18n/japancal.h b/Build/source/libs/icu/icu-src/source/i18n/japancal.h
index 88513440528..3ae4900a2cd 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/japancal.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/japancal.h
@@ -70,14 +70,14 @@ public:
* Check environment variable.
* @internal
*/
- U_I18N_API static UBool U_EXPORT2 enableTentativeEra(void);
+ U_I18N_API static UBool U_EXPORT2 enableTentativeEra();
/**
* Useful constants for JapaneseCalendar.
* Exported for use by test code.
* @internal
*/
- U_I18N_API static uint32_t U_EXPORT2 getCurrentEra(void); // the current era
+ U_I18N_API static uint32_t U_EXPORT2 getCurrentEra(); // the current era
/**
* Constructs a JapaneseCalendar based on the current time in the default time zone
@@ -143,7 +143,7 @@ public:
* same class ID. Objects of other classes have different class IDs.
* @internal
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
/**
* Return the class ID for this class. This is useful only for comparing to a return
@@ -156,7 +156,7 @@ public:
* @return The class ID for all objects of this class.
* @internal
*/
- U_I18N_API static UClassID U_EXPORT2 getStaticClassID(void);
+ U_I18N_API static UClassID U_EXPORT2 getStaticClassID();
/**
* return the calendar type, "japanese".
diff --git a/Build/source/libs/icu/icu-src/source/i18n/listformatter.cpp b/Build/source/libs/icu/icu-src/source/i18n/listformatter.cpp
index 4142fa461da..3405b5de383 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/listformatter.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/listformatter.cpp
@@ -396,8 +396,8 @@ static const char* typeWidthToStyleString(UListFormatterType type, UListFormatte
return nullptr;
}
-static const UChar solidus = 0x2F;
-static const UChar aliasPrefix[] = { 0x6C,0x69,0x73,0x74,0x50,0x61,0x74,0x74,0x65,0x72,0x6E,0x2F }; // "listPattern/"
+static const char16_t solidus = 0x2F;
+static const char16_t aliasPrefix[] = { 0x6C,0x69,0x73,0x74,0x50,0x61,0x74,0x74,0x65,0x72,0x6E,0x2F }; // "listPattern/"
enum {
kAliasPrefixLen = UPRV_LENGTHOF(aliasPrefix),
kStyleLenMax = 24 // longest currently is 14
@@ -405,16 +405,9 @@ enum {
struct ListFormatter::ListPatternsSink : public ResourceSink {
UnicodeString two, start, middle, end;
-#if ((U_PLATFORM == U_PF_AIX) || (U_PLATFORM == U_PF_OS390)) && (U_CPLUSPLUS_VERSION < 11)
- char aliasedStyle[kStyleLenMax+1];
- ListPatternsSink() {
- uprv_memset(aliasedStyle, 0, kStyleLenMax+1);
- }
-#else
char aliasedStyle[kStyleLenMax+1] = {0};
ListPatternsSink() {}
-#endif
virtual ~ListPatternsSink();
void setAliasedStyle(UnicodeString alias) {
diff --git a/Build/source/libs/icu/icu-src/source/i18n/measfmt.cpp b/Build/source/libs/icu/icu-src/source/i18n/measfmt.cpp
index d2b4e7018dc..da4e69b49b7 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/measfmt.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/measfmt.cpp
@@ -181,7 +181,7 @@ static UBool getString(
UnicodeString &result,
UErrorCode &status) {
int32_t len = 0;
- const UChar *resStr = ures_getString(resource, &len, &status);
+ const char16_t *resStr = ures_getString(resource, &len, &status);
if (U_FAILURE(status)) {
return false;
}
@@ -204,7 +204,7 @@ static UnicodeString loadNumericDateFormatterPattern(
ures_getByKeyWithFallback(
resource,
chs.data(),
- NULL,
+ nullptr,
&status));
if (U_FAILURE(status)) {
return result;
@@ -212,7 +212,7 @@ static UnicodeString loadNumericDateFormatterPattern(
getString(patternBundle.getAlias(), result, status);
// Replace 'h' with 'H'
int32_t len = result.length();
- UChar *buffer = result.getBuffer(len);
+ char16_t *buffer = result.getBuffer(len);
for (int32_t i = 0; i < len; ++i) {
if (buffer[i] == 0x68) { // 'h'
buffer[i] = 0x48; // 'H'
@@ -226,7 +226,7 @@ static NumericDateFormatters *loadNumericDateFormatters(
const UResourceBundle *resource,
UErrorCode &status) {
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
NumericDateFormatters *result = new NumericDateFormatters(
loadNumericDateFormatterPattern(resource, "hm", status),
@@ -234,7 +234,7 @@ static NumericDateFormatters *loadNumericDateFormatters(
loadNumericDateFormatterPattern(resource, "hms", status));
if (U_FAILURE(status)) {
delete result;
- return NULL;
+ return nullptr;
}
return result;
}
@@ -248,12 +248,12 @@ const MeasureFormatCacheData *LocaleCacheKey<MeasureFormatCacheData>::createObje
UNUM_CURRENCY_PLURAL, UNUM_CURRENCY_ISO, UNUM_CURRENCY};
LocalPointer<MeasureFormatCacheData> result(new MeasureFormatCacheData(), status);
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
result->adoptNumericDateFormatters(loadNumericDateFormatters(
unitsBundle.getAlias(), status));
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
for (int32_t i = 0; i < WIDTH_INDEX_COUNT; ++i) {
@@ -266,17 +266,17 @@ const MeasureFormatCacheData *LocaleCacheKey<MeasureFormatCacheData>::createObje
status = localStatus;
}
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
}
NumberFormat *inf = NumberFormat::createInstance(
localeId, UNUM_DECIMAL, status);
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
inf->setMaximumFractionDigits(0);
DecimalFormat *decfmt = dynamic_cast<DecimalFormat *>(inf);
- if (decfmt != NULL) {
+ if (decfmt != nullptr) {
decfmt->setRoundingMode(DecimalFormat::kRoundDown);
}
result->adoptIntegerFormat(inf);
@@ -352,12 +352,12 @@ static int32_t toHMS(
MeasureFormat::MeasureFormat(
const Locale &locale, UMeasureFormatWidth w, UErrorCode &status)
- : cache(NULL),
- numberFormat(NULL),
- pluralRules(NULL),
+ : cache(nullptr),
+ numberFormat(nullptr),
+ pluralRules(nullptr),
fWidth(w),
- listFormatter(NULL) {
- initMeasureFormat(locale, w, NULL, status);
+ listFormatter(nullptr) {
+ initMeasureFormat(locale, w, nullptr, status);
}
MeasureFormat::MeasureFormat(
@@ -365,11 +365,11 @@ MeasureFormat::MeasureFormat(
UMeasureFormatWidth w,
NumberFormat *nfToAdopt,
UErrorCode &status)
- : cache(NULL),
- numberFormat(NULL),
- pluralRules(NULL),
+ : cache(nullptr),
+ numberFormat(nullptr),
+ pluralRules(nullptr),
fWidth(w),
- listFormatter(NULL) {
+ listFormatter(nullptr) {
initMeasureFormat(locale, w, nfToAdopt, status);
}
@@ -379,11 +379,11 @@ MeasureFormat::MeasureFormat(const MeasureFormat &other) :
numberFormat(other.numberFormat),
pluralRules(other.pluralRules),
fWidth(other.fWidth),
- listFormatter(NULL) {
+ listFormatter(nullptr) {
cache->addRef();
numberFormat->addRef();
pluralRules->addRef();
- if (other.listFormatter != NULL) {
+ if (other.listFormatter != nullptr) {
listFormatter = new ListFormatter(*other.listFormatter);
}
}
@@ -398,30 +398,30 @@ MeasureFormat &MeasureFormat::operator=(const MeasureFormat &other) {
SharedObject::copyPtr(other.pluralRules, pluralRules);
fWidth = other.fWidth;
delete listFormatter;
- if (other.listFormatter != NULL) {
+ if (other.listFormatter != nullptr) {
listFormatter = new ListFormatter(*other.listFormatter);
} else {
- listFormatter = NULL;
+ listFormatter = nullptr;
}
return *this;
}
MeasureFormat::MeasureFormat() :
- cache(NULL),
- numberFormat(NULL),
- pluralRules(NULL),
+ cache(nullptr),
+ numberFormat(nullptr),
+ pluralRules(nullptr),
fWidth(UMEASFMT_WIDTH_SHORT),
- listFormatter(NULL) {
+ listFormatter(nullptr) {
}
MeasureFormat::~MeasureFormat() {
- if (cache != NULL) {
+ if (cache != nullptr) {
cache->removeRef();
}
- if (numberFormat != NULL) {
+ if (numberFormat != nullptr) {
numberFormat->removeRef();
}
- if (pluralRules != NULL) {
+ if (pluralRules != nullptr) {
pluralRules->removeRef();
}
delete listFormatter;
@@ -476,7 +476,7 @@ UnicodeString &MeasureFormat::format(
if (obj.getType() == Formattable::kObject) {
const UObject* formatObj = obj.getObject();
const Measure* amount = dynamic_cast<const Measure*>(formatObj);
- if (amount != NULL) {
+ if (amount != nullptr) {
return formatMeasure(
*amount, **numberFormat, appendTo, pos, status);
}
@@ -547,7 +547,7 @@ UnicodeString &MeasureFormat::formatMeasures(
measures, measureCount, appendTo, pos, status);
}
UnicodeString *results = new UnicodeString[measureCount];
- if (results == NULL) {
+ if (results == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return appendTo;
}
@@ -635,7 +635,7 @@ void MeasureFormat::adoptNumberFormat(
return;
}
SharedNumberFormat *shared = new SharedNumberFormat(nf.getAlias());
- if (shared == NULL) {
+ if (shared == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -647,7 +647,7 @@ UBool MeasureFormat::setMeasureFormatLocale(const Locale &locale, UErrorCode &st
if (U_FAILURE(status) || locale == getLocale(status)) {
return false;
}
- initMeasureFormat(locale, fWidth, NULL, status);
+ initMeasureFormat(locale, fWidth, nullptr, status);
return U_SUCCESS(status);
}
@@ -683,7 +683,7 @@ UnicodeString &MeasureFormat::formatMeasure(
const Formattable& amtNumber = measure.getNumber();
const MeasureUnit& amtUnit = measure.getUnit();
if (isCurrency(amtUnit)) {
- UChar isoCode[4];
+ char16_t isoCode[4];
u_charsToUChars(amtUnit.getSubtype(), isoCode, 4);
return cache->getCurrencyFormat(fWidth)->format(
new CurrencyAmount(amtNumber, isoCode, status),
diff --git a/Build/source/libs/icu/icu-src/source/i18n/measunit.cpp b/Build/source/libs/icu/icu-src/source/i18n/measunit.cpp
index f53137c48cd..abb21997705 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/measunit.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/measunit.cpp
@@ -56,11 +56,11 @@ static const int32_t gOffsets[] = {
429,
430,
436,
- 446,
- 450,
- 454,
+ 447,
+ 452,
456,
- 490
+ 458,
+ 492
};
static const int32_t kCurrencyOffset = 5;
@@ -532,6 +532,7 @@ static const char * const gSubTypes[] = {
"watt",
"atmosphere",
"bar",
+ "gasoline-energy-density",
"hectopascal",
"inch-ofhg",
"kilopascal",
@@ -540,6 +541,7 @@ static const char * const gSubTypes[] = {
"millimeter-ofhg",
"pascal",
"pound-force-per-square-inch",
+ "beaufort",
"kilometer-per-hour",
"knot",
"meter-per-second",
@@ -1686,102 +1688,118 @@ MeasureUnit MeasureUnit::getBar() {
return MeasureUnit(18, 1);
}
-MeasureUnit *MeasureUnit::createHectopascal(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createGasolineEnergyDensity(UErrorCode &status) {
return MeasureUnit::create(18, 2, status);
}
-MeasureUnit MeasureUnit::getHectopascal() {
+MeasureUnit MeasureUnit::getGasolineEnergyDensity() {
return MeasureUnit(18, 2);
}
-MeasureUnit *MeasureUnit::createInchHg(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createHectopascal(UErrorCode &status) {
return MeasureUnit::create(18, 3, status);
}
-MeasureUnit MeasureUnit::getInchHg() {
+MeasureUnit MeasureUnit::getHectopascal() {
return MeasureUnit(18, 3);
}
-MeasureUnit *MeasureUnit::createKilopascal(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createInchHg(UErrorCode &status) {
return MeasureUnit::create(18, 4, status);
}
-MeasureUnit MeasureUnit::getKilopascal() {
+MeasureUnit MeasureUnit::getInchHg() {
return MeasureUnit(18, 4);
}
-MeasureUnit *MeasureUnit::createMegapascal(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createKilopascal(UErrorCode &status) {
return MeasureUnit::create(18, 5, status);
}
-MeasureUnit MeasureUnit::getMegapascal() {
+MeasureUnit MeasureUnit::getKilopascal() {
return MeasureUnit(18, 5);
}
-MeasureUnit *MeasureUnit::createMillibar(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createMegapascal(UErrorCode &status) {
return MeasureUnit::create(18, 6, status);
}
-MeasureUnit MeasureUnit::getMillibar() {
+MeasureUnit MeasureUnit::getMegapascal() {
return MeasureUnit(18, 6);
}
-MeasureUnit *MeasureUnit::createMillimeterOfMercury(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createMillibar(UErrorCode &status) {
return MeasureUnit::create(18, 7, status);
}
-MeasureUnit MeasureUnit::getMillimeterOfMercury() {
+MeasureUnit MeasureUnit::getMillibar() {
return MeasureUnit(18, 7);
}
-MeasureUnit *MeasureUnit::createPascal(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createMillimeterOfMercury(UErrorCode &status) {
return MeasureUnit::create(18, 8, status);
}
-MeasureUnit MeasureUnit::getPascal() {
+MeasureUnit MeasureUnit::getMillimeterOfMercury() {
return MeasureUnit(18, 8);
}
-MeasureUnit *MeasureUnit::createPoundPerSquareInch(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createPascal(UErrorCode &status) {
return MeasureUnit::create(18, 9, status);
}
-MeasureUnit MeasureUnit::getPoundPerSquareInch() {
+MeasureUnit MeasureUnit::getPascal() {
return MeasureUnit(18, 9);
}
-MeasureUnit *MeasureUnit::createKilometerPerHour(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createPoundPerSquareInch(UErrorCode &status) {
+ return MeasureUnit::create(18, 10, status);
+}
+
+MeasureUnit MeasureUnit::getPoundPerSquareInch() {
+ return MeasureUnit(18, 10);
+}
+
+MeasureUnit *MeasureUnit::createBeaufort(UErrorCode &status) {
return MeasureUnit::create(19, 0, status);
}
-MeasureUnit MeasureUnit::getKilometerPerHour() {
+MeasureUnit MeasureUnit::getBeaufort() {
return MeasureUnit(19, 0);
}
-MeasureUnit *MeasureUnit::createKnot(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createKilometerPerHour(UErrorCode &status) {
return MeasureUnit::create(19, 1, status);
}
-MeasureUnit MeasureUnit::getKnot() {
+MeasureUnit MeasureUnit::getKilometerPerHour() {
return MeasureUnit(19, 1);
}
-MeasureUnit *MeasureUnit::createMeterPerSecond(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createKnot(UErrorCode &status) {
return MeasureUnit::create(19, 2, status);
}
-MeasureUnit MeasureUnit::getMeterPerSecond() {
+MeasureUnit MeasureUnit::getKnot() {
return MeasureUnit(19, 2);
}
-MeasureUnit *MeasureUnit::createMilePerHour(UErrorCode &status) {
+MeasureUnit *MeasureUnit::createMeterPerSecond(UErrorCode &status) {
return MeasureUnit::create(19, 3, status);
}
-MeasureUnit MeasureUnit::getMilePerHour() {
+MeasureUnit MeasureUnit::getMeterPerSecond() {
return MeasureUnit(19, 3);
}
+MeasureUnit *MeasureUnit::createMilePerHour(UErrorCode &status) {
+ return MeasureUnit::create(19, 4, status);
+}
+
+MeasureUnit MeasureUnit::getMilePerHour() {
+ return MeasureUnit(19, 4);
+}
+
MeasureUnit *MeasureUnit::createCelsius(UErrorCode &status) {
return MeasureUnit::create(20, 0, status);
}
@@ -2277,13 +2295,13 @@ StringEnumeration* MeasureUnit::getAvailableTypes(UErrorCode &errorCode) {
gTypes, UPRV_LENGTHOF(gTypes), &errorCode);
if (U_FAILURE(errorCode)) {
uenum_close(uenum);
- return NULL;
+ return nullptr;
}
StringEnumeration *result = new UStringEnumeration(uenum);
- if (result == NULL) {
+ if (result == nullptr) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
uenum_close(uenum);
- return NULL;
+ return nullptr;
}
return result;
}
@@ -2309,10 +2327,10 @@ bool MeasureUnit::findBySubType(StringPiece subType, MeasureUnit* output) {
MeasureUnit *MeasureUnit::create(int typeId, int subTypeId, UErrorCode &status) {
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
MeasureUnit *result = new MeasureUnit(typeId, subTypeId);
- if (result == NULL) {
+ if (result == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
}
return result;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/measunit_extra.cpp b/Build/source/libs/icu/icu-src/source/i18n/measunit_extra.cpp
index 3d49d1d610a..295d6a8ce85 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/measunit_extra.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/measunit_extra.cpp
@@ -148,7 +148,7 @@ const struct UnitPrefixStrings {
* int32_t *unitCategories[ARR_SIZE];
* SimpleUnitIdentifiersSink identifierSink(gSerializedUnitCategoriesTrie, unitIdentifiers,
* unitCategories, ARR_SIZE, b, kTrieValueOffset);
- * LocalUResourceBundlePointer unitsBundle(ures_openDirect(NULL, "units", &status));
+ * LocalUResourceBundlePointer unitsBundle(ures_openDirect(nullptr, "units", &status));
* ures_getAllItemsWithFallback(unitsBundle.getAlias(), "convertUnits", identifierSink, status);
*/
class SimpleUnitIdentifiersSink : public icu::ResourceSink {
@@ -220,7 +220,7 @@ class SimpleUnitIdentifiersSink : public icu::ResourceSink {
break;
}
int32_t len;
- const UChar* uTarget = value.getString(len, status);
+ const char16_t* uTarget = value.getString(len, status);
CharString target;
target.appendInvariantChars(uTarget, len, status);
if (U_FAILURE(status)) { return; }
@@ -255,15 +255,15 @@ class SimpleUnitIdentifiersSink : public icu::ResourceSink {
*
* For example: "kilogram" -> "mass", "meter-per-second" -> "speed".
*
- * In C++ unitQuantity values are collected in order into a UChar* array, while
+ * In C++ unitQuantity values are collected in order into a char16_t* array, while
* unitQuantity keys are added added to a TrieBuilder, with associated values
- * being the index into the aforementioned UChar* array.
+ * being the index into the aforementioned char16_t* array.
*/
class CategoriesSink : public icu::ResourceSink {
public:
/**
* Constructor.
- * @param out Array of UChar* to which unitQuantity values will be saved.
+ * @param out Array of char16_t* to which unitQuantity values will be saved.
* The pointers returned not owned: they point directly at the resource
* strings in static memory.
* @param outSize The size of the `out` array.
@@ -271,7 +271,7 @@ class CategoriesSink : public icu::ResourceSink {
* each unitQuantity will be added, each with value being the offset
* into `out`.
*/
- explicit CategoriesSink(const UChar **out, int32_t &outSize, BytesTrieBuilder &trieBuilder)
+ explicit CategoriesSink(const char16_t **out, int32_t &outSize, BytesTrieBuilder &trieBuilder)
: outQuantitiesArray(out), outSize(outSize), trieBuilder(trieBuilder), outIndex(0) {}
void put(const char * /*key*/, ResourceValue &value, UBool /*noFallback*/, UErrorCode &status) override {
@@ -305,7 +305,7 @@ class CategoriesSink : public icu::ResourceSink {
}
private:
- const UChar **outQuantitiesArray;
+ const char16_t **outQuantitiesArray;
int32_t &outSize;
BytesTrieBuilder &trieBuilder;
@@ -327,11 +327,11 @@ int32_t *gSimpleUnitCategories = nullptr;
char *gSerializedUnitExtrasStemTrie = nullptr;
-// Array of UChar* pointing at the unit categories (aka "quantities", aka
+// Array of char16_t* pointing at the unit categories (aka "quantities", aka
// "types"), as found in the `unitQuantities` resource. The array memory itself
-// is owned by this pointer, but the individual UChar* in that array point at
+// is owned by this pointer, but the individual char16_t* in that array point at
// static memory.
-const UChar **gCategories = nullptr;
+const char16_t **gCategories = nullptr;
// Number of items in `gCategories`.
int32_t gCategoriesCount = 0;
// Serialized BytesTrie for mapping from base units to indices into gCategories.
@@ -362,8 +362,8 @@ void U_CALLCONV initUnitExtras(UErrorCode& status) {
ures_getByKey(unitsBundle.getAlias(), CATEGORY_TABLE_NAME, nullptr, &status));
if (U_FAILURE(status)) { return; }
gCategoriesCount = unitQuantities.getAlias()->fSize;
- size_t quantitiesMallocSize = sizeof(UChar *) * gCategoriesCount;
- gCategories = static_cast<const UChar **>(uprv_malloc(quantitiesMallocSize));
+ size_t quantitiesMallocSize = sizeof(char16_t *) * gCategoriesCount;
+ gCategories = static_cast<const char16_t **>(uprv_malloc(quantitiesMallocSize));
if (gCategories == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
@@ -946,7 +946,7 @@ const char *SingleUnitImpl::getSimpleUnitID() const {
return gSimpleUnits[index];
}
-void SingleUnitImpl::appendNeutralIdentifier(CharString &result, UErrorCode &status) const {
+void SingleUnitImpl::appendNeutralIdentifier(CharString &result, UErrorCode &status) const UPRV_NO_SANITIZE_UNDEFINED {
int32_t absPower = std::abs(this->dimensionality);
U_ASSERT(absPower > 0); // "this function does not support the dimensionless single units";
@@ -1195,7 +1195,7 @@ UMeasurePrefix MeasureUnit::getPrefix(UErrorCode& status) const {
return SingleUnitImpl::forMeasureUnit(*this, status).unitPrefix;
}
-MeasureUnit MeasureUnit::withPrefix(UMeasurePrefix prefix, UErrorCode& status) const {
+MeasureUnit MeasureUnit::withPrefix(UMeasurePrefix prefix, UErrorCode& status) const UPRV_NO_SANITIZE_UNDEFINED {
SingleUnitImpl singleUnit = SingleUnitImpl::forMeasureUnit(*this, status);
singleUnit.unitPrefix = prefix;
return singleUnit.build(status);
diff --git a/Build/source/libs/icu/icu-src/source/i18n/measure.cpp b/Build/source/libs/icu/icu-src/source/i18n/measure.cpp
index b9c47fd4015..cdbd995034a 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/measure.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/measure.cpp
@@ -69,8 +69,8 @@ bool Measure::operator==(const UObject& other) const {
}
const Measure &m = static_cast<const Measure&>(other);
return number == m.number &&
- ((unit == NULL) == (m.unit == NULL)) &&
- (unit == NULL || *unit == *m.unit);
+ ((unit == nullptr) == (m.unit == nullptr)) &&
+ (unit == nullptr || *unit == *m.unit);
}
U_NAMESPACE_END
diff --git a/Build/source/libs/icu/icu-src/source/i18n/msgfmt.cpp b/Build/source/libs/icu/icu-src/source/i18n/msgfmt.cpp
index 29476f328f8..29fb4b3a01b 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/msgfmt.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/msgfmt.cpp
@@ -55,87 +55,87 @@
// class MessageFormat
// *****************************************************************************
-#define SINGLE_QUOTE ((UChar)0x0027)
-#define COMMA ((UChar)0x002C)
-#define LEFT_CURLY_BRACE ((UChar)0x007B)
-#define RIGHT_CURLY_BRACE ((UChar)0x007D)
+#define SINGLE_QUOTE ((char16_t)0x0027)
+#define COMMA ((char16_t)0x002C)
+#define LEFT_CURLY_BRACE ((char16_t)0x007B)
+#define RIGHT_CURLY_BRACE ((char16_t)0x007D)
//---------------------------------------
// static data
-static const UChar ID_NUMBER[] = {
+static const char16_t ID_NUMBER[] = {
0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0 /* "number" */
};
-static const UChar ID_DATE[] = {
+static const char16_t ID_DATE[] = {
0x64, 0x61, 0x74, 0x65, 0 /* "date" */
};
-static const UChar ID_TIME[] = {
+static const char16_t ID_TIME[] = {
0x74, 0x69, 0x6D, 0x65, 0 /* "time" */
};
-static const UChar ID_SPELLOUT[] = {
+static const char16_t ID_SPELLOUT[] = {
0x73, 0x70, 0x65, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0 /* "spellout" */
};
-static const UChar ID_ORDINAL[] = {
+static const char16_t ID_ORDINAL[] = {
0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x6c, 0 /* "ordinal" */
};
-static const UChar ID_DURATION[] = {
+static const char16_t ID_DURATION[] = {
0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0 /* "duration" */
};
// MessageFormat Type List Number, Date, Time or Choice
-static const UChar * const TYPE_IDS[] = {
+static const char16_t * const TYPE_IDS[] = {
ID_NUMBER,
ID_DATE,
ID_TIME,
ID_SPELLOUT,
ID_ORDINAL,
ID_DURATION,
- NULL,
+ nullptr,
};
-static const UChar ID_EMPTY[] = {
+static const char16_t ID_EMPTY[] = {
0 /* empty string, used for default so that null can mark end of list */
};
-static const UChar ID_CURRENCY[] = {
+static const char16_t ID_CURRENCY[] = {
0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x63, 0x79, 0 /* "currency" */
};
-static const UChar ID_PERCENT[] = {
+static const char16_t ID_PERCENT[] = {
0x70, 0x65, 0x72, 0x63, 0x65, 0x6E, 0x74, 0 /* "percent" */
};
-static const UChar ID_INTEGER[] = {
+static const char16_t ID_INTEGER[] = {
0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0 /* "integer" */
};
// NumberFormat modifier list, default, currency, percent or integer
-static const UChar * const NUMBER_STYLE_IDS[] = {
+static const char16_t * const NUMBER_STYLE_IDS[] = {
ID_EMPTY,
ID_CURRENCY,
ID_PERCENT,
ID_INTEGER,
- NULL,
+ nullptr,
};
-static const UChar ID_SHORT[] = {
+static const char16_t ID_SHORT[] = {
0x73, 0x68, 0x6F, 0x72, 0x74, 0 /* "short" */
};
-static const UChar ID_MEDIUM[] = {
+static const char16_t ID_MEDIUM[] = {
0x6D, 0x65, 0x64, 0x69, 0x75, 0x6D, 0 /* "medium" */
};
-static const UChar ID_LONG[] = {
+static const char16_t ID_LONG[] = {
0x6C, 0x6F, 0x6E, 0x67, 0 /* "long" */
};
-static const UChar ID_FULL[] = {
+static const char16_t ID_FULL[] = {
0x66, 0x75, 0x6C, 0x6C, 0 /* "full" */
};
// DateFormat modifier list, default, short, medium, long or full
-static const UChar * const DATE_STYLE_IDS[] = {
+static const char16_t * const DATE_STYLE_IDS[] = {
ID_EMPTY,
ID_SHORT,
ID_MEDIUM,
ID_LONG,
ID_FULL,
- NULL,
+ nullptr,
};
static const icu::DateFormat::EStyle DATE_STYLES[] = {
@@ -148,11 +148,11 @@ static const icu::DateFormat::EStyle DATE_STYLES[] = {
static const int32_t DEFAULT_INITIAL_CAPACITY = 10;
-static const UChar NULL_STRING[] = {
+static const char16_t NULL_STRING[] = {
0x6E, 0x75, 0x6C, 0x6C, 0 // "null"
};
-static const UChar OTHER_STRING[] = {
+static const char16_t OTHER_STRING[] = {
0x6F, 0x74, 0x68, 0x65, 0x72, 0 // "other"
};
@@ -177,7 +177,7 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(FormatNameEnumeration)
* the given UnicodeString.
*/
static UnicodeString& itos(int32_t i, UnicodeString& appendTo) {
- UChar temp[16];
+ char16_t temp[16];
uprv_itou(temp,16,i,10,0); // 10 == radix
appendTo.append(temp, -1);
return appendTo;
@@ -194,7 +194,7 @@ public:
app.appendString(s.getBuffer(), s.length());
len += s.length();
}
- void append(const UChar* s, const int32_t sLength) {
+ void append(const char16_t* s, const int32_t sLength) {
app.appendString(s, sLength);
len += sLength;
}
@@ -234,16 +234,16 @@ MessageFormat::MessageFormat(const UnicodeString& pattern,
UErrorCode& success)
: fLocale(Locale::getDefault()), // Uses the default locale
msgPattern(success),
- formatAliases(NULL),
+ formatAliases(nullptr),
formatAliasesCapacity(0),
- argTypes(NULL),
+ argTypes(nullptr),
argTypeCount(0),
argTypeCapacity(0),
hasArgTypeConflicts(false),
- defaultNumberFormat(NULL),
- defaultDateFormat(NULL),
- cachedFormatters(NULL),
- customFormatArgStarts(NULL),
+ defaultNumberFormat(nullptr),
+ defaultDateFormat(nullptr),
+ cachedFormatters(nullptr),
+ customFormatArgStarts(nullptr),
pluralProvider(*this, UPLURAL_TYPE_CARDINAL),
ordinalProvider(*this, UPLURAL_TYPE_ORDINAL)
{
@@ -256,16 +256,16 @@ MessageFormat::MessageFormat(const UnicodeString& pattern,
UErrorCode& success)
: fLocale(newLocale),
msgPattern(success),
- formatAliases(NULL),
+ formatAliases(nullptr),
formatAliasesCapacity(0),
- argTypes(NULL),
+ argTypes(nullptr),
argTypeCount(0),
argTypeCapacity(0),
hasArgTypeConflicts(false),
- defaultNumberFormat(NULL),
- defaultDateFormat(NULL),
- cachedFormatters(NULL),
- customFormatArgStarts(NULL),
+ defaultNumberFormat(nullptr),
+ defaultDateFormat(nullptr),
+ cachedFormatters(nullptr),
+ customFormatArgStarts(nullptr),
pluralProvider(*this, UPLURAL_TYPE_CARDINAL),
ordinalProvider(*this, UPLURAL_TYPE_ORDINAL)
{
@@ -279,16 +279,16 @@ MessageFormat::MessageFormat(const UnicodeString& pattern,
UErrorCode& success)
: fLocale(newLocale),
msgPattern(success),
- formatAliases(NULL),
+ formatAliases(nullptr),
formatAliasesCapacity(0),
- argTypes(NULL),
+ argTypes(nullptr),
argTypeCount(0),
argTypeCapacity(0),
hasArgTypeConflicts(false),
- defaultNumberFormat(NULL),
- defaultDateFormat(NULL),
- cachedFormatters(NULL),
- customFormatArgStarts(NULL),
+ defaultNumberFormat(nullptr),
+ defaultDateFormat(nullptr),
+ cachedFormatters(nullptr),
+ customFormatArgStarts(nullptr),
pluralProvider(*this, UPLURAL_TYPE_CARDINAL),
ordinalProvider(*this, UPLURAL_TYPE_ORDINAL)
{
@@ -301,20 +301,20 @@ MessageFormat::MessageFormat(const MessageFormat& that)
Format(that),
fLocale(that.fLocale),
msgPattern(that.msgPattern),
- formatAliases(NULL),
+ formatAliases(nullptr),
formatAliasesCapacity(0),
- argTypes(NULL),
+ argTypes(nullptr),
argTypeCount(0),
argTypeCapacity(0),
hasArgTypeConflicts(that.hasArgTypeConflicts),
- defaultNumberFormat(NULL),
- defaultDateFormat(NULL),
- cachedFormatters(NULL),
- customFormatArgStarts(NULL),
+ defaultNumberFormat(nullptr),
+ defaultDateFormat(nullptr),
+ cachedFormatters(nullptr),
+ customFormatArgStarts(nullptr),
pluralProvider(*this, UPLURAL_TYPE_CARDINAL),
ordinalProvider(*this, UPLURAL_TYPE_ORDINAL)
{
- // This will take care of creating the hash tables (since they are NULL).
+ // This will take care of creating the hash tables (since they are nullptr).
UErrorCode ec = U_ZERO_ERROR;
copyObjects(that, ec);
if (U_FAILURE(ec)) {
@@ -340,7 +340,7 @@ MessageFormat::~MessageFormat()
* Allocate argTypes[] to at least the given capacity and return
* true if successful. If not, leave argTypes[] unchanged.
*
- * If argTypes is NULL, allocate it. If it is not NULL, enlarge it
+ * If argTypes is nullptr, allocate it. If it is not nullptr, enlarge it
* if necessary to be at least as large as specified.
*/
UBool MessageFormat::allocateArgTypes(int32_t capacity, UErrorCode& status) {
@@ -357,7 +357,7 @@ UBool MessageFormat::allocateArgTypes(int32_t capacity, UErrorCode& status) {
}
Formattable::Type* a = (Formattable::Type*)
uprv_realloc(argTypes, sizeof(*argTypes) * capacity);
- if (a == NULL) {
+ if (a == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return false;
}
@@ -394,20 +394,20 @@ MessageFormat::operator==(const Format& rhs) const
{
if (this == &rhs) return true;
- MessageFormat& that = (MessageFormat&)rhs;
-
// Check class ID before checking MessageFormat members
- if (!Format::operator==(rhs) ||
- msgPattern != that.msgPattern ||
+ if (!Format::operator==(rhs)) return false;
+
+ const MessageFormat& that = static_cast<const MessageFormat&>(rhs);
+ if (msgPattern != that.msgPattern ||
fLocale != that.fLocale) {
return false;
}
// Compare hashtables.
- if ((customFormatArgStarts == NULL) != (that.customFormatArgStarts == NULL)) {
+ if ((customFormatArgStarts == nullptr) != (that.customFormatArgStarts == nullptr)) {
return false;
}
- if (customFormatArgStarts == NULL) {
+ if (customFormatArgStarts == nullptr) {
return true;
}
@@ -450,9 +450,9 @@ MessageFormat::setLocale(const Locale& theLocale)
{
if (fLocale != theLocale) {
delete defaultNumberFormat;
- defaultNumberFormat = NULL;
+ defaultNumberFormat = nullptr;
delete defaultDateFormat;
- defaultDateFormat = NULL;
+ defaultDateFormat = nullptr;
fLocale = theLocale;
setLocaleIDs(fLocale.getName(), fLocale.getName());
pluralProvider.reset();
@@ -500,9 +500,9 @@ MessageFormat::applyPattern(const UnicodeString& pattern,
void MessageFormat::resetPattern() {
msgPattern.clear();
uhash_close(cachedFormatters);
- cachedFormatters = NULL;
+ cachedFormatters = nullptr;
uhash_close(customFormatArgStarts);
- customFormatArgStarts = NULL;
+ customFormatArgStarts = nullptr;
argTypeCount = 0;
hasArgTypeConflicts = false;
}
@@ -515,7 +515,8 @@ MessageFormat::applyPattern(const UnicodeString& pattern,
if (aposMode != msgPattern.getApostropheMode()) {
msgPattern.clearPatternAndSetApostropheMode(aposMode);
}
- applyPattern(pattern, *parseError, status);
+ UParseError tempParseError;
+ applyPattern(pattern, (parseError == nullptr) ? tempParseError : *parseError, status);
}
// -------------------------------------
@@ -523,7 +524,7 @@ MessageFormat::applyPattern(const UnicodeString& pattern,
UnicodeString&
MessageFormat::toPattern(UnicodeString& appendTo) const {
- if ((customFormatArgStarts != NULL && 0 != uhash_count(customFormatArgStarts)) ||
+ if ((customFormatArgStarts != nullptr && 0 != uhash_count(customFormatArgStarts)) ||
0 == msgPattern.countParts()
) {
appendTo.setToBogus();
@@ -554,7 +555,7 @@ void MessageFormat::setArgStartFormat(int32_t argStart,
delete formatter;
return;
}
- if (cachedFormatters == NULL) {
+ if (cachedFormatters == nullptr) {
cachedFormatters=uhash_open(uhash_hashLong, uhash_compareLong,
equalFormatsForHash, &status);
if (U_FAILURE(status)) {
@@ -563,7 +564,7 @@ void MessageFormat::setArgStartFormat(int32_t argStart,
}
uhash_setValueDeleter(cachedFormatters, uprv_deleteUObject);
}
- if (formatter == NULL) {
+ if (formatter == nullptr) {
formatter = new DummyFormat();
}
uhash_iput(cachedFormatters, argStart, formatter, &status);
@@ -583,23 +584,23 @@ void MessageFormat::setCustomArgStartFormat(int32_t argStart,
Format* formatter,
UErrorCode& status) {
setArgStartFormat(argStart, formatter, status);
- if (customFormatArgStarts == NULL) {
+ if (customFormatArgStarts == nullptr) {
customFormatArgStarts=uhash_open(uhash_hashLong, uhash_compareLong,
- NULL, &status);
+ nullptr, &status);
}
uhash_iputi(customFormatArgStarts, argStart, 1, &status);
}
Format* MessageFormat::getCachedFormatter(int32_t argumentNumber) const {
- if (cachedFormatters == NULL) {
- return NULL;
+ if (cachedFormatters == nullptr) {
+ return nullptr;
}
void* ptr = uhash_iget(cachedFormatters, argumentNumber);
- if (ptr != NULL && dynamic_cast<DummyFormat*>((Format*)ptr) == NULL) {
+ if (ptr != nullptr && dynamic_cast<DummyFormat*>((Format*)ptr) == nullptr) {
return (Format*) ptr;
} else {
- // Not cached, or a DummyFormat representing setFormat(NULL).
- return NULL;
+ // Not cached, or a DummyFormat representing setFormat(nullptr).
+ return nullptr;
}
}
@@ -609,14 +610,14 @@ Format* MessageFormat::getCachedFormatter(int32_t argumentNumber) const {
void
MessageFormat::adoptFormats(Format** newFormats,
int32_t count) {
- if (newFormats == NULL || count < 0) {
+ if (newFormats == nullptr || count < 0) {
return;
}
// Throw away any cached formatters.
- if (cachedFormatters != NULL) {
+ if (cachedFormatters != nullptr) {
uhash_removeAll(cachedFormatters);
}
- if (customFormatArgStarts != NULL) {
+ if (customFormatArgStarts != nullptr) {
uhash_removeAll(customFormatArgStarts);
}
@@ -642,14 +643,14 @@ MessageFormat::adoptFormats(Format** newFormats,
void
MessageFormat::setFormats(const Format** newFormats,
int32_t count) {
- if (newFormats == NULL || count < 0) {
+ if (newFormats == nullptr || count < 0) {
return;
}
// Throw away any cached formatters.
- if (cachedFormatters != NULL) {
+ if (cachedFormatters != nullptr) {
uhash_removeAll(cachedFormatters);
}
- if (customFormatArgStarts != NULL) {
+ if (customFormatArgStarts != nullptr) {
uhash_removeAll(customFormatArgStarts);
}
@@ -657,10 +658,10 @@ MessageFormat::setFormats(const Format** newFormats,
int32_t formatNumber = 0;
for (int32_t partIndex = 0;
formatNumber < count && U_SUCCESS(status) && (partIndex = nextTopLevelArgStart(partIndex)) >= 0;) {
- Format* newFormat = NULL;
- if (newFormats[formatNumber] != NULL) {
+ Format* newFormat = nullptr;
+ if (newFormats[formatNumber] != nullptr) {
newFormat = newFormats[formatNumber]->clone();
- if (newFormat == NULL) {
+ if (newFormat == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
}
}
@@ -715,11 +716,11 @@ MessageFormat::adoptFormat(const UnicodeString& formatName,
Format* f;
if (p.isValid()) {
f = p.orphan();
- } else if (formatToAdopt == NULL) {
- f = NULL;
+ } else if (formatToAdopt == nullptr) {
+ f = nullptr;
} else {
f = formatToAdopt->clone();
- if (f == NULL) {
+ if (f == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -757,19 +758,19 @@ MessageFormat::setFormat(int32_t n, const Format& newFormat) {
// Do nothing if the variable is not less than the array count.
Format *
MessageFormat::getFormat(const UnicodeString& formatName, UErrorCode& status) {
- if (U_FAILURE(status) || cachedFormatters == NULL) return NULL;
+ if (U_FAILURE(status) || cachedFormatters == nullptr) return nullptr;
int32_t argNumber = MessagePattern::validateArgumentName(formatName);
if (argNumber < UMSGPAT_ARG_NAME_NOT_NUMBER) {
status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
for (int32_t partIndex = 0; (partIndex = nextTopLevelArgStart(partIndex)) >= 0;) {
if (argNameMatches(partIndex + 1, formatName, argNumber)) {
return getCachedFormatter(partIndex);
}
}
- return NULL;
+ return nullptr;
}
// -------------------------------------
@@ -791,7 +792,7 @@ MessageFormat::setFormat(const UnicodeString& formatName,
) {
if (argNameMatches(partIndex + 1, formatName, argNumber)) {
Format* new_format = newFormat.clone();
- if (new_format == NULL) {
+ if (new_format == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -852,7 +853,7 @@ UnicodeString MessageFormat::getArgName(int32_t partIndex) {
StringEnumeration*
MessageFormat::getFormatNames(UErrorCode& status) {
- if (U_FAILURE(status)) return NULL;
+ if (U_FAILURE(status)) return nullptr;
LocalPointer<UVector> formatNames(new UVector(status), status);
if (U_FAILURE(status)) {
@@ -882,7 +883,7 @@ MessageFormat::format(const Formattable* source,
FieldPosition& ignore,
UErrorCode& success) const
{
- return format(source, NULL, cnt, appendTo, &ignore, success);
+ return format(source, nullptr, cnt, appendTo, &ignore, success);
}
// -------------------------------------
@@ -898,7 +899,7 @@ MessageFormat::format( const UnicodeString& pattern,
UErrorCode& success)
{
MessageFormat temp(pattern, success);
- return temp.format(arguments, NULL, cnt, appendTo, NULL, success);
+ return temp.format(arguments, nullptr, cnt, appendTo, nullptr, success);
}
// -------------------------------------
@@ -920,7 +921,7 @@ MessageFormat::format(const Formattable& source,
}
int32_t cnt;
const Formattable* tmpPtr = source.getArray(cnt);
- return format(tmpPtr, NULL, cnt, appendTo, &ignore, success);
+ return format(tmpPtr, nullptr, cnt, appendTo, &ignore, success);
}
UnicodeString&
@@ -929,7 +930,7 @@ MessageFormat::format(const UnicodeString* argumentNames,
int32_t count,
UnicodeString& appendTo,
UErrorCode& success) const {
- return format(arguments, argumentNames, count, appendTo, NULL, success);
+ return format(arguments, argumentNames, count, appendTo, nullptr, success);
}
// Does linear search to find the match for an ArgName.
@@ -941,7 +942,7 @@ const Formattable* MessageFormat::getArgFromListByName(const Formattable* argume
return arguments + i;
}
}
- return NULL;
+ return nullptr;
}
@@ -958,7 +959,7 @@ MessageFormat::format(const Formattable* arguments,
UnicodeStringAppendable usapp(appendTo);
AppendableWrapper app(usapp);
- format(0, NULL, arguments, argumentNames, cnt, app, pos, status);
+ format(0, nullptr, arguments, argumentNames, cnt, app, pos, status);
return appendTo;
}
@@ -973,7 +974,7 @@ public:
PluralSelectorContext(int32_t start, const UnicodeString &name,
const Formattable &num, double off, UErrorCode &errorCode)
: startIndex(start), argName(name), offset(off),
- numberArgIndex(-1), formatter(NULL), forReplaceNumber(false) {
+ numberArgIndex(-1), formatter(nullptr), forReplaceNumber(false) {
// number needs to be set even when select() is not called.
// Keep it as a Number/Formattable:
// For format() methods, and to preserve information (e.g., BigDecimal).
@@ -1002,8 +1003,8 @@ public:
} // namespace
-// if argumentNames is NULL, this means arguments is a numeric array.
-// arguments can not be NULL.
+// if argumentNames is nullptr, this means arguments is a numeric array.
+// arguments can not be nullptr.
// We use const void *plNumber rather than const PluralSelectorContext *pluralNumber
// so that we need not declare the PluralSelectorContext in the public header file.
void MessageFormat::format(int32_t msgStart, const void *plNumber,
@@ -1050,29 +1051,29 @@ void MessageFormat::format(int32_t msgStart, const void *plNumber,
const Formattable* arg;
UBool noArg = false;
UnicodeString argName = msgPattern.getSubstring(*part);
- if (argumentNames == NULL) {
+ if (argumentNames == nullptr) {
int32_t argNumber = part->getValue(); // ARG_NUMBER
if (0 <= argNumber && argNumber < cnt) {
arg = arguments + argNumber;
} else {
- arg = NULL;
+ arg = nullptr;
noArg = true;
}
} else {
arg = getArgFromListByName(arguments, argumentNames, cnt, argName);
- if (arg == NULL) {
+ if (arg == nullptr) {
noArg = true;
}
}
++i;
int32_t prevDestLength = appendTo.length();
- const Format* formatter = NULL;
+ const Format* formatter = nullptr;
if (noArg) {
appendTo.append(
UnicodeString(LEFT_CURLY_BRACE).append(argName).append(RIGHT_CURLY_BRACE));
- } else if (arg == NULL) {
+ } else if (arg == nullptr) {
appendTo.append(NULL_STRING, 4);
- } else if(plNumber!=NULL &&
+ } else if(plNumber!=nullptr &&
static_cast<const PluralSelectorContext *>(plNumber)->numberArgIndex==(i-2)) {
const PluralSelectorContext &pluralNumber =
*static_cast<const PluralSelectorContext *>(plNumber);
@@ -1099,7 +1100,7 @@ void MessageFormat::format(int32_t msgStart, const void *plNumber,
(subMsgString.indexOf(SINGLE_QUOTE) >= 0 && !MessageImpl::jdkAposMode(msgPattern))
) {
MessageFormat subMsgFormat(subMsgString, fLocale, success);
- subMsgFormat.format(0, NULL, arguments, argumentNames, cnt, appendTo, ignore, success);
+ subMsgFormat.format(0, nullptr, arguments, argumentNames, cnt, appendTo, ignore, success);
} else {
appendTo.append(subMsgString);
}
@@ -1107,7 +1108,7 @@ void MessageFormat::format(int32_t msgStart, const void *plNumber,
appendTo.formatAndAppend(formatter, *arg, success);
}
} else if (argType == UMSGPAT_ARG_TYPE_NONE || (cachedFormatters && uhash_iget(cachedFormatters, i - 2))) {
- // We arrive here if getCachedFormatter returned NULL, but there was actually an element in the hash table.
+ // We arrive here if getCachedFormatter returned nullptr, but there was actually an element in the hash table.
// This can only happen if the hash table contained a DummyFormat, so the if statement above is a check
// for the hash table containing DummyFormat.
if (arg->isNumeric()) {
@@ -1128,7 +1129,7 @@ void MessageFormat::format(int32_t msgStart, const void *plNumber,
// because only this one converts non-double numeric types to double.
const double number = arg->getDouble(success);
int32_t subMsgStart = ChoiceFormat::findSubMessage(msgPattern, i, number);
- formatComplexSubMessage(subMsgStart, NULL, arguments, argumentNames,
+ formatComplexSubMessage(subMsgStart, nullptr, arguments, argumentNames,
cnt, appendTo, success);
} else if (UMSGPAT_ARG_TYPE_HAS_PLURAL_STYLE(argType)) {
if (!arg->isNumeric()) {
@@ -1147,7 +1148,7 @@ void MessageFormat::format(int32_t msgStart, const void *plNumber,
cnt, appendTo, success);
} else if (argType == UMSGPAT_ARG_TYPE_SELECT) {
int32_t subMsgStart = SelectFormat::findSubMessage(msgPattern, i, arg->getString(success), success);
- formatComplexSubMessage(subMsgStart, NULL, arguments, argumentNames,
+ formatComplexSubMessage(subMsgStart, nullptr, arguments, argumentNames,
cnt, appendTo, success);
} else {
// This should never happen.
@@ -1173,7 +1174,7 @@ void MessageFormat::formatComplexSubMessage(int32_t msgStart,
}
if (!MessageImpl::jdkAposMode(msgPattern)) {
- format(msgStart, plNumber, arguments, argumentNames, cnt, appendTo, NULL, success);
+ format(msgStart, plNumber, arguments, argumentNames, cnt, appendTo, nullptr, success);
return;
}
@@ -1218,8 +1219,8 @@ void MessageFormat::formatComplexSubMessage(int32_t msgStart,
if (sb.indexOf(LEFT_CURLY_BRACE) >= 0) {
UnicodeString emptyPattern; // gcc 3.3.3 fails with "UnicodeString()" as the first parameter.
MessageFormat subMsgFormat(emptyPattern, fLocale, success);
- subMsgFormat.applyPattern(sb, UMSGPAT_APOS_DOUBLE_REQUIRED, NULL, success);
- subMsgFormat.format(0, NULL, arguments, argumentNames, cnt, appendTo, NULL, success);
+ subMsgFormat.applyPattern(sb, UMSGPAT_APOS_DOUBLE_REQUIRED, nullptr, success);
+ subMsgFormat.format(0, nullptr, arguments, argumentNames, cnt, appendTo, nullptr, success);
} else {
appendTo.append(sb);
}
@@ -1248,12 +1249,12 @@ UnicodeString MessageFormat::getLiteralStringUntilNextArgument(int32_t from) con
FieldPosition* MessageFormat::updateMetaData(AppendableWrapper& /*dest*/, int32_t /*prevLength*/,
FieldPosition* /*fp*/, const Formattable* /*argId*/) const {
// Unlike in Java, there are no field attributes defined for MessageFormat. Do nothing.
- return NULL;
+ return nullptr;
/*
- if (fp != NULL && Field.ARGUMENT.equals(fp.getFieldAttribute())) {
+ if (fp != nullptr && Field.ARGUMENT.equals(fp.getFieldAttribute())) {
fp->setBeginIndex(prevLength);
fp->setEndIndex(dest.get_length());
- return NULL;
+ return nullptr;
}
return fp;
*/
@@ -1325,14 +1326,14 @@ void MessageFormat::copyObjects(const MessageFormat& that, UErrorCode& ec) {
}
uprv_memcpy(argTypes, that.argTypes, argTypeCount * sizeof(argTypes[0]));
}
- if (cachedFormatters != NULL) {
+ if (cachedFormatters != nullptr) {
uhash_removeAll(cachedFormatters);
}
- if (customFormatArgStarts != NULL) {
+ if (customFormatArgStarts != nullptr) {
uhash_removeAll(customFormatArgStarts);
}
if (that.cachedFormatters) {
- if (cachedFormatters == NULL) {
+ if (cachedFormatters == nullptr) {
cachedFormatters=uhash_open(uhash_hashLong, uhash_compareLong,
equalFormatsForHash, &ec);
if (U_FAILURE(ec)) {
@@ -1355,9 +1356,9 @@ void MessageFormat::copyObjects(const MessageFormat& that, UErrorCode& ec) {
}
}
if (that.customFormatArgStarts) {
- if (customFormatArgStarts == NULL) {
+ if (customFormatArgStarts == nullptr) {
customFormatArgStarts=uhash_open(uhash_hashLong, uhash_compareLong,
- NULL, &ec);
+ nullptr, &ec);
}
const int32_t count = uhash_count(that.customFormatArgStarts);
int32_t pos, idx;
@@ -1378,13 +1379,13 @@ MessageFormat::parse(int32_t msgStart,
count = 0;
if (U_FAILURE(ec)) {
pos.setErrorIndex(pos.getIndex());
- return NULL;
+ return nullptr;
}
// parse() does not work with named arguments.
if (msgPattern.hasNamedArguments()) {
ec = U_ARGUMENT_TYPE_MISMATCH;
pos.setErrorIndex(pos.getIndex());
- return NULL;
+ return nullptr;
}
LocalArray<Formattable> resultArray(new Formattable[argTypeCount ? argTypeCount : 1]);
const UnicodeString& msgString=msgPattern.getPatternString();
@@ -1404,7 +1405,7 @@ MessageFormat::parse(int32_t msgStart,
prevIndex += len;
} else {
pos.setErrorIndex(sourceOffset);
- return NULL; // leave index as is to signal error
+ return nullptr; // leave index as is to signal error
}
if(type==UMSGPAT_PART_TYPE_MSG_LIMIT) {
// Things went well! Done.
@@ -1425,22 +1426,22 @@ MessageFormat::parse(int32_t msgStart,
int32_t argNumber = part->getValue(); // ARG_NUMBER
UnicodeString key;
++i;
- const Format* formatter = NULL;
+ const Format* formatter = nullptr;
Formattable& argResult = resultArray[argNumber];
- if(cachedFormatters!=NULL && (formatter = getCachedFormatter(i - 2))!=NULL) {
+ if(cachedFormatters!=nullptr && (formatter = getCachedFormatter(i - 2))!=nullptr) {
// Just parse using the formatter.
tempStatus.setIndex(sourceOffset);
formatter->parseObject(source, argResult, tempStatus);
if (tempStatus.getIndex() == sourceOffset) {
pos.setErrorIndex(sourceOffset);
- return NULL; // leave index as is to signal error
+ return nullptr; // leave index as is to signal error
}
sourceOffset = tempStatus.getIndex();
haveArgResult = true;
} else if(
argType==UMSGPAT_ARG_TYPE_NONE || (cachedFormatters && uhash_iget(cachedFormatters, i -2))) {
- // We arrive here if getCachedFormatter returned NULL, but there was actually an element in the hash table.
+ // We arrive here if getCachedFormatter returned nullptr, but there was actually an element in the hash table.
// This can only happen if the hash table contained a DummyFormat, so the if statement above is a check
// for the hash table containing DummyFormat.
@@ -1457,7 +1458,7 @@ MessageFormat::parse(int32_t msgStart,
}
if (next < 0) {
pos.setErrorIndex(sourceOffset);
- return NULL; // leave index as is to signal error
+ return nullptr; // leave index as is to signal error
} else {
UnicodeString strValue(source.tempSubString(sourceOffset, next - sourceOffset));
UnicodeString compValue;
@@ -1475,7 +1476,7 @@ MessageFormat::parse(int32_t msgStart,
double choiceResult = ChoiceFormat::parseArgument(msgPattern, i, source, tempStatus);
if (tempStatus.getIndex() == sourceOffset) {
pos.setErrorIndex(sourceOffset);
- return NULL; // leave index as is to signal error
+ return nullptr; // leave index as is to signal error
}
argResult.setDouble(choiceResult);
haveArgResult = true;
@@ -1483,11 +1484,11 @@ MessageFormat::parse(int32_t msgStart,
} else if(UMSGPAT_ARG_TYPE_HAS_PLURAL_STYLE(argType) || argType==UMSGPAT_ARG_TYPE_SELECT) {
// Parsing not supported.
ec = U_UNSUPPORTED_ERROR;
- return NULL;
+ return nullptr;
} else {
// This should never happen.
ec = U_INTERNAL_PROGRAM_ERROR;
- return NULL;
+ return nullptr;
}
if (haveArgResult && count <= argNumber) {
count = argNumber + 1;
@@ -1521,7 +1522,7 @@ MessageFormat::parse(const UnicodeString& source,
{
if (msgPattern.hasNamedArguments()) {
success = U_ARGUMENT_TYPE_MISMATCH;
- return NULL;
+ return nullptr;
}
ParsePosition status(0);
// Calls the actual implementation method and starts
@@ -1530,7 +1531,7 @@ MessageFormat::parse(const UnicodeString& source,
if (status.getIndex() == 0) {
success = U_MESSAGE_PARSE_ERROR;
delete[] result;
- return NULL;
+ return nullptr;
}
return result;
}
@@ -1545,7 +1546,7 @@ MessageFormat::parseObject( const UnicodeString& source,
{
int32_t cnt = 0;
Formattable* tmpResult = parse(source, status, cnt);
- if (tmpResult != NULL)
+ if (tmpResult != nullptr)
result.adoptArray(tmpResult, cnt);
}
@@ -1554,10 +1555,10 @@ MessageFormat::autoQuoteApostrophe(const UnicodeString& pattern, UErrorCode& sta
UnicodeString result;
if (U_SUCCESS(status)) {
int32_t plen = pattern.length();
- const UChar* pat = pattern.getBuffer();
+ const char16_t* pat = pattern.getBuffer();
int32_t blen = plen * 2 + 1; // space for null termination, convenience
- UChar* buf = result.getBuffer(blen);
- if (buf == NULL) {
+ char16_t* buf = result.getBuffer(blen);
+ if (buf == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
} else {
int32_t len = umsg_autoQuoteApostrophe(pat, plen, buf, blen, &status);
@@ -1574,7 +1575,7 @@ MessageFormat::autoQuoteApostrophe(const UnicodeString& pattern, UErrorCode& sta
static Format* makeRBNF(URBNFRuleSetTag tag, const Locale& locale, const UnicodeString& defaultRuleSet, UErrorCode& ec) {
RuleBasedNumberFormat* fmt = new RuleBasedNumberFormat(tag, locale, ec);
- if (fmt == NULL) {
+ if (fmt == nullptr) {
ec = U_MEMORY_ALLOCATION_ERROR;
} else if (U_SUCCESS(ec) && defaultRuleSet.length() > 0) {
UErrorCode localStatus = U_ZERO_ERROR; // ignore unrecognized default rule set
@@ -1588,10 +1589,10 @@ void MessageFormat::cacheExplicitFormats(UErrorCode& status) {
return;
}
- if (cachedFormatters != NULL) {
+ if (cachedFormatters != nullptr) {
uhash_removeAll(cachedFormatters);
}
- if (customFormatArgStarts != NULL) {
+ if (customFormatArgStarts != nullptr) {
uhash_removeAll(customFormatArgStarts);
}
@@ -1684,9 +1685,9 @@ Format* MessageFormat::createAppropriateFormat(UnicodeString& type, UnicodeStrin
Formattable::Type& formattableType, UParseError& parseError,
UErrorCode& ec) {
if (U_FAILURE(ec)) {
- return NULL;
+ return nullptr;
}
- Format* fmt = NULL;
+ Format* fmt = nullptr;
int32_t typeID, styleID;
DateFormat::EStyle date_style;
int32_t firstNonSpace;
@@ -1747,9 +1748,9 @@ Format* MessageFormat::createAppropriateFormat(UnicodeString& type, UnicodeStrin
fmt = DateFormat::createTimeInstance(date_style, fLocale);
}
- if (styleID < 0 && fmt != NULL) {
+ if (styleID < 0 && fmt != nullptr) {
SimpleDateFormat* sdtfmt = dynamic_cast<SimpleDateFormat*>(fmt);
- if (sdtfmt != NULL) {
+ if (sdtfmt != nullptr) {
sdtfmt->applyPattern(style);
}
}
@@ -1781,14 +1782,14 @@ Format* MessageFormat::createAppropriateFormat(UnicodeString& type, UnicodeStrin
//-------------------------------------
// Finds the string, s, in the string array, list.
int32_t MessageFormat::findKeyword(const UnicodeString& s,
- const UChar * const *list)
+ const char16_t * const *list)
{
if (s.isEmpty()) {
return 0; // default
}
int32_t length = s.length();
- const UChar *ps = PatternProps::trimWhiteSpace(s.getBuffer(), length);
+ const char16_t *ps = PatternProps::trimWhiteSpace(s.getBuffer(), length);
UnicodeString buffer(false, ps, length);
// Trims the space characters and turns all characters
// in s to lower case.
@@ -1808,7 +1809,7 @@ NumberFormat*
MessageFormat::createIntegerFormat(const Locale& locale, UErrorCode& status) const {
NumberFormat *temp = NumberFormat::createInstance(locale, status);
DecimalFormat *temp2;
- if (temp != NULL && (temp2 = dynamic_cast<DecimalFormat*>(temp)) != NULL) {
+ if (temp != nullptr && (temp2 = dynamic_cast<DecimalFormat*>(temp)) != nullptr) {
temp2->setMaximumFractionDigits(0);
temp2->setDecimalSeparatorAlwaysShown(false);
temp2->setParseIntegerOnly(true);
@@ -1819,19 +1820,19 @@ MessageFormat::createIntegerFormat(const Locale& locale, UErrorCode& status) con
/**
* Return the default number format. Used to format a numeric
- * argument when subformats[i].format is NULL. Returns NULL
+ * argument when subformats[i].format is nullptr. Returns nullptr
* on failure.
*
* Semantically const but may modify *this.
*/
const NumberFormat* MessageFormat::getDefaultNumberFormat(UErrorCode& ec) const {
- if (defaultNumberFormat == NULL) {
+ if (defaultNumberFormat == nullptr) {
MessageFormat* t = (MessageFormat*) this;
t->defaultNumberFormat = NumberFormat::createInstance(fLocale, ec);
if (U_FAILURE(ec)) {
delete t->defaultNumberFormat;
- t->defaultNumberFormat = NULL;
- } else if (t->defaultNumberFormat == NULL) {
+ t->defaultNumberFormat = nullptr;
+ } else if (t->defaultNumberFormat == nullptr) {
ec = U_MEMORY_ALLOCATION_ERROR;
}
}
@@ -1840,16 +1841,16 @@ const NumberFormat* MessageFormat::getDefaultNumberFormat(UErrorCode& ec) const
/**
* Return the default date format. Used to format a date
- * argument when subformats[i].format is NULL. Returns NULL
+ * argument when subformats[i].format is nullptr. Returns nullptr
* on failure.
*
* Semantically const but may modify *this.
*/
const DateFormat* MessageFormat::getDefaultDateFormat(UErrorCode& ec) const {
- if (defaultDateFormat == NULL) {
+ if (defaultDateFormat == nullptr) {
MessageFormat* t = (MessageFormat*) this;
t->defaultDateFormat = DateFormat::createDateTimeInstance(DateFormat::kShort, DateFormat::kShort, fLocale);
- if (t->defaultDateFormat == NULL) {
+ if (t->defaultDateFormat == nullptr) {
ec = U_MEMORY_ALLOCATION_ERROR;
}
}
@@ -1924,7 +1925,7 @@ FormatNameEnumeration::snext(UErrorCode& status) {
if (U_SUCCESS(status) && pos < fFormatNames->size()) {
return (const UnicodeString*)fFormatNames->elementAt(pos++);
}
- return NULL;
+ return nullptr;
}
void
@@ -1934,14 +1935,14 @@ FormatNameEnumeration::reset(UErrorCode& /*status*/) {
int32_t
FormatNameEnumeration::count(UErrorCode& /*status*/) const {
- return (fFormatNames==NULL) ? 0 : fFormatNames->size();
+ return (fFormatNames==nullptr) ? 0 : fFormatNames->size();
}
FormatNameEnumeration::~FormatNameEnumeration() {
}
MessageFormat::PluralSelectorProvider::PluralSelectorProvider(const MessageFormat &mf, UPluralType t)
- : msgFormat(mf), rules(NULL), type(t) {
+ : msgFormat(mf), rules(nullptr), type(t) {
}
MessageFormat::PluralSelectorProvider::~PluralSelectorProvider() {
@@ -1954,7 +1955,7 @@ UnicodeString MessageFormat::PluralSelectorProvider::select(void *ctx, double nu
return UnicodeString(false, OTHER_STRING, 5);
}
MessageFormat::PluralSelectorProvider* t = const_cast<MessageFormat::PluralSelectorProvider*>(this);
- if(rules == NULL) {
+ if(rules == nullptr) {
t->rules = PluralRules::forLocale(msgFormat.fLocale, type, ec);
if (U_FAILURE(ec)) {
return UnicodeString(false, OTHER_STRING, 5);
@@ -1969,11 +1970,11 @@ UnicodeString MessageFormat::PluralSelectorProvider::select(void *ctx, double nu
PluralSelectorContext &context = *static_cast<PluralSelectorContext *>(ctx);
int32_t otherIndex = msgFormat.findOtherSubMessage(context.startIndex);
context.numberArgIndex = msgFormat.findFirstPluralNumberArg(otherIndex, context.argName);
- if(context.numberArgIndex > 0 && msgFormat.cachedFormatters != NULL) {
+ if(context.numberArgIndex > 0 && msgFormat.cachedFormatters != nullptr) {
context.formatter =
(const Format*)uhash_iget(msgFormat.cachedFormatters, context.numberArgIndex);
}
- if(context.formatter == NULL) {
+ if(context.formatter == nullptr) {
context.formatter = msgFormat.getDefaultNumberFormat(ec);
context.forReplaceNumber = true;
}
@@ -1983,7 +1984,7 @@ UnicodeString MessageFormat::PluralSelectorProvider::select(void *ctx, double nu
}
context.formatter->format(context.number, context.numberString, ec);
auto* decFmt = dynamic_cast<const DecimalFormat *>(context.formatter);
- if(decFmt != NULL) {
+ if(decFmt != nullptr) {
number::impl::DecimalQuantity dq;
decFmt->formatToDecimalQuantity(context.number, dq, ec);
if (U_FAILURE(ec)) {
@@ -1997,7 +1998,7 @@ UnicodeString MessageFormat::PluralSelectorProvider::select(void *ctx, double nu
void MessageFormat::PluralSelectorProvider::reset() {
delete rules;
- rules = NULL;
+ rules = nullptr;
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/msgfmt_impl.h b/Build/source/libs/icu/icu-src/source/i18n/msgfmt_impl.h
index 80cb8a691eb..84344a3a251 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/msgfmt_impl.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/msgfmt_impl.h
@@ -28,8 +28,8 @@ class FormatNameEnumeration : public StringEnumeration {
public:
FormatNameEnumeration(LocalPointer<UVector> fFormatNames, UErrorCode& status);
virtual ~FormatNameEnumeration();
- static UClassID U_EXPORT2 getStaticClassID(void);
- virtual UClassID getDynamicClassID(void) const override;
+ static UClassID U_EXPORT2 getStaticClassID();
+ virtual UClassID getDynamicClassID() const override;
virtual const UnicodeString* snext(UErrorCode& status) override;
virtual void reset(UErrorCode& status) override;
virtual int32_t count(UErrorCode& status) const override;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/name2uni.cpp b/Build/source/libs/icu/icu-src/source/i18n/name2uni.cpp
index b22c68b022a..2d26dba812c 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/name2uni.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/name2uni.cpp
@@ -29,10 +29,10 @@ U_NAMESPACE_BEGIN
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(NameUnicodeTransliterator)
-static const UChar OPEN[] = {92,78,126,123,126,0}; // "\N~{~"
-static const UChar OPEN_DELIM = 92; // '\\' first char of OPEN
-static const UChar CLOSE_DELIM = 125; // '}'
-static const UChar SPACE = 32; // ' '
+static const char16_t OPEN[] = {92,78,126,123,126,0}; // "\N~{~"
+static const char16_t OPEN_DELIM = 92; // '\\' first char of OPEN
+static const char16_t CLOSE_DELIM = 125; // '}'
+static const char16_t SPACE = 32; // ' '
U_CDECL_BEGIN
@@ -50,7 +50,7 @@ _set_addRange(USet *set, UChar32 start, UChar32 end) {
}
static void U_CALLCONV
-_set_addString(USet *set, const UChar *str, int32_t length) {
+_set_addString(USet *set, const char16_t *str, int32_t length) {
((UnicodeSet *)set)->add(UnicodeString((UBool)(length<0), str, length));
}*/
@@ -68,10 +68,10 @@ NameUnicodeTransliterator::NameUnicodeTransliterator(UnicodeFilter* adoptedFilte
USetAdder sa = {
(USet *)legalPtr, // USet* == UnicodeSet*
_set_add,
- NULL, // Don't need _set_addRange
- NULL, // Don't need _set_addString
- NULL, // Don't need remove()
- NULL
+ nullptr, // Don't need _set_addRange
+ nullptr, // Don't need _set_addString
+ nullptr, // Don't need remove()
+ nullptr
};
uprv_getCharNameCharacters(&sa);
}
@@ -111,7 +111,7 @@ void NameUnicodeTransliterator::handleTransliterate(Replaceable& text, UTransPos
UBool isIncremental) const {
// The failure mode, here and below, is to behave like Any-Null,
// if either there is no name data (max len == 0) or there is no
- // memory (malloc() => NULL).
+ // memory (malloc() => nullptr).
int32_t maxLen = uprv_getMaxCharNameLength();
if (maxLen == 0) {
@@ -122,7 +122,7 @@ void NameUnicodeTransliterator::handleTransliterate(Replaceable& text, UTransPos
// Accommodate the longest possible name
++maxLen; // allow for temporary trailing space
char* cbuf = (char*) uprv_malloc(maxLen);
- if (cbuf == NULL) {
+ if (cbuf == nullptr) {
offsets.start = offsets.limit;
return;
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/nfrlist.h b/Build/source/libs/icu/icu-src/source/i18n/nfrlist.h
index 3eb1882b2f9..1864d4d3bd9 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/nfrlist.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/nfrlist.h
@@ -39,7 +39,7 @@ protected:
uint32_t fCapacity;
public:
NFRuleList(uint32_t capacity = 10)
- : fStuff(capacity ? (NFRule**)uprv_malloc(capacity * sizeof(NFRule*)) : NULL)
+ : fStuff(capacity ? (NFRule**)uprv_malloc(capacity * sizeof(NFRule*)) : nullptr)
, fCount(0)
, fCapacity(capacity) {}
~NFRuleList() {
@@ -50,10 +50,10 @@ public:
uprv_free(fStuff);
}
}
- NFRule* operator[](uint32_t index) const { return fStuff != NULL ? fStuff[index] : NULL; }
+ NFRule* operator[](uint32_t index) const { return fStuff != nullptr ? fStuff[index] : nullptr; }
NFRule* remove(uint32_t index) {
- if (fStuff == NULL) {
- return NULL;
+ if (fStuff == nullptr) {
+ return nullptr;
}
NFRule* result = fStuff[index];
fCount -= 1;
@@ -67,7 +67,7 @@ public:
fCapacity += 10;
fStuff = (NFRule**)uprv_realloc(fStuff, fCapacity * sizeof(NFRule*)); // assume success
}
- if (fStuff != NULL) {
+ if (fStuff != nullptr) {
fStuff[fCount++] = thing;
} else {
fCapacity = 0;
@@ -75,17 +75,17 @@ public:
}
}
uint32_t size() const { return fCount; }
- NFRule* last() const { return (fCount > 0 && fStuff != NULL) ? fStuff[fCount-1] : NULL; }
+ NFRule* last() const { return (fCount > 0 && fStuff != nullptr) ? fStuff[fCount-1] : nullptr; }
NFRule** release() {
- add(NULL); // ensure null termination
+ add(nullptr); // ensure null termination
NFRule** result = fStuff;
- fStuff = NULL;
+ fStuff = nullptr;
fCount = 0;
fCapacity = 0;
return result;
}
void deleteAll() {
- NFRule** tmp = NULL;
+ NFRule** tmp = nullptr;
int32_t size = fCount;
if (size > 0) {
tmp = release();
diff --git a/Build/source/libs/icu/icu-src/source/i18n/nfrs.cpp b/Build/source/libs/icu/icu-src/source/i18n/nfrs.cpp
index 17fab139113..1f4b9b9d294 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/nfrs.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/nfrs.cpp
@@ -118,17 +118,17 @@ util_lcm(int64_t x, int64_t y)
}
#endif
-static const UChar gPercent = 0x0025;
-static const UChar gColon = 0x003a;
-static const UChar gSemicolon = 0x003b;
-static const UChar gLineFeed = 0x000a;
+static const char16_t gPercent = 0x0025;
+static const char16_t gColon = 0x003a;
+static const char16_t gSemicolon = 0x003b;
+static const char16_t gLineFeed = 0x000a;
-static const UChar gPercentPercent[] =
+static const char16_t gPercentPercent[] =
{
0x25, 0x25, 0
}; /* "%%" */
-static const UChar gNoparse[] =
+static const char16_t gNoparse[] =
{
0x40, 0x6E, 0x6F, 0x70, 0x61, 0x72, 0x73, 0x65, 0
}; /* "@noparse" */
@@ -143,7 +143,7 @@ NFRuleSet::NFRuleSet(RuleBasedNumberFormat *_owner, UnicodeString* descriptions,
, fIsParseable(true)
{
for (int32_t i = 0; i < NON_NUMERICAL_RULE_LENGTH; ++i) {
- nonNumericalRules[i] = NULL;
+ nonNumericalRules[i] = nullptr;
}
if (U_FAILURE(status)) {
@@ -303,7 +303,7 @@ void NFRuleSet::setBestFractionRule(int32_t originalIndex, NFRule *newRule, UBoo
fractionRules.add(newRule);
}
NFRule *bestResult = nonNumericalRules[originalIndex];
- if (bestResult == NULL) {
+ if (bestResult == nullptr) {
nonNumericalRules[originalIndex] = newRule;
}
else {
@@ -535,7 +535,7 @@ NFRuleSet::findNormalRule(int64_t number) const
}
}
if (hi == 0) { // bad rule set, minimum base > 0
- return NULL; // want to throw exception here
+ return nullptr; // want to throw exception here
}
NFRule *result = rules[hi - 1];
@@ -547,7 +547,7 @@ NFRuleSet::findNormalRule(int64_t number) const
// return
if (result->shouldRollBack(number)) {
if (hi == 1) { // bad rule set, no prior rule to rollback to from this base
- return NULL;
+ return nullptr;
}
result = rules[hi - 2];
}
@@ -671,7 +671,7 @@ NFRuleSet::findFractionRuleSetRule(double number) const
static void dumpUS(FILE* f, const UnicodeString& us) {
int len = us.length();
char* buf = (char *)uprv_malloc((len+1)*sizeof(char)); //new char[len+1];
- if (buf != NULL) {
+ if (buf != nullptr) {
us.extract(0, len, buf);
buf[len] = 0;
fprintf(f, "%s", buf);
@@ -860,7 +860,7 @@ static const uint8_t asciiDigits[] = {
0x77u, 0x78u, 0x79u, 0x7au,
};
-static const UChar kUMinus = (UChar)0x002d;
+static const char16_t kUMinus = (char16_t)0x002d;
#ifdef RBNF_DEBUG
static const char kMinus = '-';
@@ -910,7 +910,7 @@ int64_t util64_atoi(const char* str, uint32_t radix)
return result;
}
-int64_t util64_utoi(const UChar* str, uint32_t radix)
+int64_t util64_utoi(const char16_t* str, uint32_t radix)
{
if (radix > 36) {
radix = 36;
@@ -925,7 +925,7 @@ int64_t util64_utoi(const UChar* str, uint32_t radix)
neg = 1;
}
int64_t result = 0;
- UChar c;
+ char16_t c;
uint8_t b;
while (((c = *str++) < 0x0080) && (b = digitInfo[c]) && ((b &= 0x7f) < radix)) {
result *= lradix;
@@ -983,7 +983,7 @@ uint32_t util64_toa(int64_t w, char* buf, uint32_t len, uint32_t radix, UBool ra
}
#endif
-uint32_t util64_tou(int64_t w, UChar* buf, uint32_t len, uint32_t radix, UBool raw)
+uint32_t util64_tou(int64_t w, char16_t* buf, uint32_t len, uint32_t radix, UBool raw)
{
if (radix > 36) {
radix = 36;
@@ -992,13 +992,13 @@ uint32_t util64_tou(int64_t w, UChar* buf, uint32_t len, uint32_t radix, UBool r
}
int64_t base = radix;
- UChar* p = buf;
+ char16_t* p = buf;
if (len && (w < 0) && (radix == 10) && !raw) {
w = -w;
*p++ = kUMinus;
--len;
} else if (len && (w == 0)) {
- *p++ = (UChar)raw ? 0 : asciiDigits[0];
+ *p++ = (char16_t)raw ? 0 : asciiDigits[0];
--len;
}
@@ -1006,7 +1006,7 @@ uint32_t util64_tou(int64_t w, UChar* buf, uint32_t len, uint32_t radix, UBool r
int64_t n = w / base;
int64_t m = n * base;
int32_t d = (int32_t)(w-m);
- *p++ = (UChar)(raw ? d : asciiDigits[d]);
+ *p++ = (char16_t)(raw ? d : asciiDigits[d]);
w = n;
--len;
}
@@ -1019,7 +1019,7 @@ uint32_t util64_tou(int64_t w, UChar* buf, uint32_t len, uint32_t radix, UBool r
++buf;
}
while (--p > buf) {
- UChar c = *p;
+ char16_t c = *p;
*p = *buf;
*buf = c;
++buf;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/nfrs.h b/Build/source/libs/icu/icu-src/source/i18n/nfrs.h
index a6ad3a3bb7f..a1beedda17d 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/nfrs.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/nfrs.h
@@ -93,10 +93,10 @@ int64_t util64_fromDouble(double d);
uint64_t util64_pow(uint32_t radix, uint16_t exponent);
// convert n to digit string in buffer, return length of string
-uint32_t util64_tou(int64_t n, UChar* buffer, uint32_t buflen, uint32_t radix = 10, UBool raw = false);
+uint32_t util64_tou(int64_t n, char16_t* buffer, uint32_t buflen, uint32_t radix = 10, UBool raw = false);
#ifdef RBNF_DEBUG
-int64_t util64_utoi(const UChar* str, uint32_t radix = 10);
+int64_t util64_utoi(const char16_t* str, uint32_t radix = 10);
uint32_t util64_toa(int64_t n, char* buffer, uint32_t buflen, uint32_t radix = 10, UBool raw = false);
int64_t util64_atoi(const char* str, uint32_t radix);
#endif
diff --git a/Build/source/libs/icu/icu-src/source/i18n/nfrule.cpp b/Build/source/libs/icu/icu-src/source/i18n/nfrule.cpp
index 2f8383c764c..51bd4c974f4 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/nfrule.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/nfrule.cpp
@@ -40,10 +40,10 @@ NFRule::NFRule(const RuleBasedNumberFormat* _rbnf, const UnicodeString &_ruleTex
, exponent(0)
, decimalPoint(0)
, fRuleText(_ruleText)
- , sub1(NULL)
- , sub2(NULL)
+ , sub1(nullptr)
+ , sub2(nullptr)
, formatter(_rbnf)
- , rulePatternFormat(NULL)
+ , rulePatternFormat(nullptr)
{
if (!fRuleText.isEmpty()) {
parseRuleDescriptor(fRuleText, status);
@@ -54,54 +54,54 @@ NFRule::~NFRule()
{
if (sub1 != sub2) {
delete sub2;
- sub2 = NULL;
+ sub2 = nullptr;
}
delete sub1;
- sub1 = NULL;
+ sub1 = nullptr;
delete rulePatternFormat;
- rulePatternFormat = NULL;
+ rulePatternFormat = nullptr;
}
-static const UChar gLeftBracket = 0x005b;
-static const UChar gRightBracket = 0x005d;
-static const UChar gColon = 0x003a;
-static const UChar gZero = 0x0030;
-static const UChar gNine = 0x0039;
-static const UChar gSpace = 0x0020;
-static const UChar gSlash = 0x002f;
-static const UChar gGreaterThan = 0x003e;
-static const UChar gLessThan = 0x003c;
-static const UChar gComma = 0x002c;
-static const UChar gDot = 0x002e;
-static const UChar gTick = 0x0027;
-//static const UChar gMinus = 0x002d;
-static const UChar gSemicolon = 0x003b;
-static const UChar gX = 0x0078;
-
-static const UChar gMinusX[] = {0x2D, 0x78, 0}; /* "-x" */
-static const UChar gInf[] = {0x49, 0x6E, 0x66, 0}; /* "Inf" */
-static const UChar gNaN[] = {0x4E, 0x61, 0x4E, 0}; /* "NaN" */
-
-static const UChar gDollarOpenParenthesis[] = {0x24, 0x28, 0}; /* "$(" */
-static const UChar gClosedParenthesisDollar[] = {0x29, 0x24, 0}; /* ")$" */
-
-static const UChar gLessLess[] = {0x3C, 0x3C, 0}; /* "<<" */
-static const UChar gLessPercent[] = {0x3C, 0x25, 0}; /* "<%" */
-static const UChar gLessHash[] = {0x3C, 0x23, 0}; /* "<#" */
-static const UChar gLessZero[] = {0x3C, 0x30, 0}; /* "<0" */
-static const UChar gGreaterGreater[] = {0x3E, 0x3E, 0}; /* ">>" */
-static const UChar gGreaterPercent[] = {0x3E, 0x25, 0}; /* ">%" */
-static const UChar gGreaterHash[] = {0x3E, 0x23, 0}; /* ">#" */
-static const UChar gGreaterZero[] = {0x3E, 0x30, 0}; /* ">0" */
-static const UChar gEqualPercent[] = {0x3D, 0x25, 0}; /* "=%" */
-static const UChar gEqualHash[] = {0x3D, 0x23, 0}; /* "=#" */
-static const UChar gEqualZero[] = {0x3D, 0x30, 0}; /* "=0" */
-static const UChar gGreaterGreaterGreater[] = {0x3E, 0x3E, 0x3E, 0}; /* ">>>" */
-
-static const UChar * const RULE_PREFIXES[] = {
+static const char16_t gLeftBracket = 0x005b;
+static const char16_t gRightBracket = 0x005d;
+static const char16_t gColon = 0x003a;
+static const char16_t gZero = 0x0030;
+static const char16_t gNine = 0x0039;
+static const char16_t gSpace = 0x0020;
+static const char16_t gSlash = 0x002f;
+static const char16_t gGreaterThan = 0x003e;
+static const char16_t gLessThan = 0x003c;
+static const char16_t gComma = 0x002c;
+static const char16_t gDot = 0x002e;
+static const char16_t gTick = 0x0027;
+//static const char16_t gMinus = 0x002d;
+static const char16_t gSemicolon = 0x003b;
+static const char16_t gX = 0x0078;
+
+static const char16_t gMinusX[] = {0x2D, 0x78, 0}; /* "-x" */
+static const char16_t gInf[] = {0x49, 0x6E, 0x66, 0}; /* "Inf" */
+static const char16_t gNaN[] = {0x4E, 0x61, 0x4E, 0}; /* "NaN" */
+
+static const char16_t gDollarOpenParenthesis[] = {0x24, 0x28, 0}; /* "$(" */
+static const char16_t gClosedParenthesisDollar[] = {0x29, 0x24, 0}; /* ")$" */
+
+static const char16_t gLessLess[] = {0x3C, 0x3C, 0}; /* "<<" */
+static const char16_t gLessPercent[] = {0x3C, 0x25, 0}; /* "<%" */
+static const char16_t gLessHash[] = {0x3C, 0x23, 0}; /* "<#" */
+static const char16_t gLessZero[] = {0x3C, 0x30, 0}; /* "<0" */
+static const char16_t gGreaterGreater[] = {0x3E, 0x3E, 0}; /* ">>" */
+static const char16_t gGreaterPercent[] = {0x3E, 0x25, 0}; /* ">%" */
+static const char16_t gGreaterHash[] = {0x3E, 0x23, 0}; /* ">#" */
+static const char16_t gGreaterZero[] = {0x3E, 0x30, 0}; /* ">0" */
+static const char16_t gEqualPercent[] = {0x3D, 0x25, 0}; /* "=%" */
+static const char16_t gEqualHash[] = {0x3D, 0x23, 0}; /* "=#" */
+static const char16_t gEqualZero[] = {0x3D, 0x30, 0}; /* "=0" */
+static const char16_t gGreaterGreaterGreater[] = {0x3E, 0x3E, 0x3E, 0}; /* ">>>" */
+
+static const char16_t * const RULE_PREFIXES[] = {
gLessLess, gLessPercent, gLessHash, gLessZero,
gGreaterGreater, gGreaterPercent,gGreaterHash, gGreaterZero,
- gEqualPercent, gEqualHash, gEqualZero, NULL
+ gEqualPercent, gEqualHash, gEqualZero, nullptr
};
void
@@ -117,7 +117,7 @@ NFRule::makeRules(UnicodeString& description,
// (this also strips the rule descriptor, if any, off the
// description string)
NFRule* rule1 = new NFRule(rbnf, description, status);
- /* test for NULL */
+ /* test for nullptr */
if (rule1 == 0) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
@@ -144,7 +144,7 @@ NFRule::makeRules(UnicodeString& description,
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;
+ NFRule* rule2 = nullptr;
UnicodeString sbuf;
// we'll actually only split the rule into two rules if its
@@ -161,7 +161,7 @@ NFRule::makeRules(UnicodeString& description,
// increment the original rule's base value ("rule1" actually
// goes SECOND in the rule set's rule list)
rule2 = new NFRule(rbnf, UnicodeString(), status);
- /* test for NULL */
+ /* test for nullptr */
if (rule2 == 0) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
@@ -217,7 +217,7 @@ NFRule::makeRules(UnicodeString& description,
// 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) {
+ if (rule2 != nullptr) {
if (rule2->baseValue >= kNoBase) {
rules.add(rule2);
}
@@ -270,8 +270,8 @@ NFRule::parseRuleDescriptor(UnicodeString& description, UErrorCode& status)
// for one of the special rules. If it does, set the base
// value to the correct identifier value
int descriptorLength = descriptor.length();
- UChar firstChar = descriptor.charAt(0);
- UChar lastChar = descriptor.charAt(descriptorLength - 1);
+ char16_t firstChar = descriptor.charAt(0);
+ char16_t lastChar = descriptor.charAt(descriptorLength - 1);
if (firstChar >= gZero && firstChar <= gNine && lastChar != gX) {
// if the rule descriptor begins with a digit, it's a descriptor
// for a normal rule
@@ -279,7 +279,7 @@ NFRule::parseRuleDescriptor(UnicodeString& description, UErrorCode& status)
// just build up the value as we encounter the digits.
int64_t val = 0;
p = 0;
- UChar c = gSpace;
+ char16_t c = gSpace;
// begin parsing the descriptor: copy digits
// into "tempValue", skip periods, commas, and spaces,
@@ -420,9 +420,9 @@ NFRule::extractSubstitutions(const NFRuleSet* ruleSet,
}
fRuleText = ruleText;
sub1 = extractSubstitution(ruleSet, predecessor, status);
- if (sub1 == NULL) {
+ if (sub1 == nullptr) {
// Small optimization. There is no need to create a redundant NullSubstitution.
- sub2 = NULL;
+ sub2 = nullptr;
}
else {
sub2 = extractSubstitution(ruleSet, predecessor, status);
@@ -469,7 +469,7 @@ NFRule::extractSubstitution(const NFRuleSet* ruleSet,
const NFRule* predecessor,
UErrorCode& status)
{
- NFSubstitution* result = NULL;
+ NFSubstitution* result = nullptr;
// search the rule's rule text for the first two characters of
// a substitution token
@@ -479,7 +479,7 @@ NFRule::extractSubstitution(const NFRuleSet* ruleSet,
// if we didn't find one, create a null substitution positioned
// at the end of the rule text
if (subStart == -1) {
- return NULL;
+ return nullptr;
}
// special-case the ">>>" token, since searching for the > at the
@@ -490,7 +490,7 @@ NFRule::extractSubstitution(const NFRuleSet* ruleSet,
// otherwise the substitution token ends with the same character
// it began with
} else {
- UChar c = fRuleText.charAt(subStart);
+ char16_t c = fRuleText.charAt(subStart);
subEnd = fRuleText.indexOf(c, subStart + 1);
// special case for '<%foo<<'
if (c == gLessThan && subEnd != -1 && subEnd < fRuleText.length() - 1 && fRuleText.charAt(subEnd+1) == c) {
@@ -506,7 +506,7 @@ NFRule::extractSubstitution(const NFRuleSet* ruleSet,
// unmatched token character), create a null substitution positioned
// at the end of the rule
if (subEnd == -1) {
- return NULL;
+ return nullptr;
}
// if we get here, we have a real substitution token (or at least
@@ -549,10 +549,10 @@ NFRule::setBaseValue(int64_t newBaseValue, UErrorCode& status)
// 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) {
+ if (sub1 != nullptr) {
sub1->setDivisor(radix, exponent, status);
}
- if (sub2 != NULL) {
+ if (sub2 != nullptr) {
sub2->setDivisor(radix, exponent, status);
}
@@ -650,7 +650,7 @@ NFRule::operator==(const NFRule& rhs) const
*/
static void util_append64(UnicodeString& result, int64_t n)
{
- UChar buffer[256];
+ char16_t buffer[256];
int32_t len = util64_tou(n, buffer, sizeof(buffer));
UnicodeString temp(buffer, len);
result.append(temp);
@@ -690,7 +690,7 @@ NFRule::_appendRuleText(UnicodeString& result) const
// 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 (fRuleText.charAt(0) == gSpace && (sub1 == NULL || sub1->getPos() != 0)) {
+ if (fRuleText.charAt(0) == gSpace && (sub1 == nullptr || sub1->getPos() != 0)) {
result.append(gTick);
}
@@ -700,11 +700,11 @@ NFRule::_appendRuleText(UnicodeString& result) const
ruleTextCopy.setTo(fRuleText);
UnicodeString temp;
- if (sub2 != NULL) {
+ if (sub2 != nullptr) {
sub2->toString(temp);
ruleTextCopy.insert(sub2->getPos(), temp);
}
- if (sub1 != NULL) {
+ if (sub1 != nullptr) {
sub1->toString(temp);
ruleTextCopy.insert(sub1->getPos(), temp);
}
@@ -763,10 +763,10 @@ NFRule::doFormat(int64_t number, UnicodeString& toInsertInto, int32_t pos, int32
lengthOffset = fRuleText.length() - (toInsertInto.length() - initialLength);
}
- if (sub2 != NULL) {
+ if (sub2 != nullptr) {
sub2->doSubstitution(number, toInsertInto, pos - (sub2->getPos() > pluralRuleStart ? lengthOffset : 0), recursionCount, status);
}
- if (sub1 != NULL) {
+ if (sub1 != nullptr) {
sub1->doSubstitution(number, toInsertInto, pos - (sub1->getPos() > pluralRuleStart ? lengthOffset : 0), recursionCount, status);
}
}
@@ -817,10 +817,10 @@ NFRule::doFormat(double number, UnicodeString& toInsertInto, int32_t pos, int32_
lengthOffset = fRuleText.length() - (toInsertInto.length() - initialLength);
}
- if (sub2 != NULL) {
+ if (sub2 != nullptr) {
sub2->doSubstitution(number, toInsertInto, pos - (sub2->getPos() > pluralRuleStart ? lengthOffset : 0), recursionCount, status);
}
- if (sub1 != NULL) {
+ if (sub1 != nullptr) {
sub1->doSubstitution(number, toInsertInto, pos - (sub1->getPos() > pluralRuleStart ? lengthOffset : 0), recursionCount, status);
}
}
@@ -852,7 +852,7 @@ NFRule::shouldRollBack(int64_t number) const
// 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 != NULL && sub1->isModulusSubstitution()) || (sub2 != NULL && sub2->isModulusSubstitution())) {
+ if ((sub1 != nullptr && sub1->isModulusSubstitution()) || (sub2 != nullptr && sub2->isModulusSubstitution())) {
int64_t re = util64_pow(radix, exponent);
return (number % re) == 0 && (baseValue % re) != 0;
}
@@ -887,7 +887,7 @@ NFRule::shouldRollBack(int64_t number) const
static void dumpUS(FILE* f, const UnicodeString& us) {
int len = us.length();
char* buf = (char *)uprv_malloc((len+1)*sizeof(char)); //new char[len+1];
- if (buf != NULL) {
+ if (buf != nullptr) {
us.extract(0, len, buf);
buf[len] = 0;
fprintf(f, "%s", buf);
@@ -908,8 +908,8 @@ NFRule::doParse(const UnicodeString& text,
ParsePosition pp;
UnicodeString workText(text);
- int32_t sub1Pos = sub1 != NULL ? sub1->getPos() : fRuleText.length();
- int32_t sub2Pos = sub2 != NULL ? sub2->getPos() : fRuleText.length();
+ int32_t sub1Pos = sub1 != nullptr ? sub1->getPos() : fRuleText.length();
+ int32_t sub2Pos = sub2 != nullptr ? sub2->getPos() : fRuleText.length();
// check to see whether the text before the first substitution
// matches the text at the beginning of the string being
@@ -1010,7 +1010,7 @@ NFRule::doParse(const UnicodeString& text,
// 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 == NULL) {
+ if (pp.getIndex() != 0 || sub1 == nullptr) {
start = pp.getIndex();
UnicodeString workText2;
@@ -1030,7 +1030,7 @@ NFRule::doParse(const UnicodeString& text,
// 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 == NULL) {
+ if (pp2.getIndex() != 0 || sub2 == nullptr) {
if (prefixLength + pp.getIndex() + pp2.getIndex() > highWaterMark) {
highWaterMark = prefixLength + pp.getIndex() + pp2.getIndex();
result = partialResult;
@@ -1078,7 +1078,7 @@ NFRule::doParse(const UnicodeString& text,
// 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 == NULL) {
+ if (isFractionRule && highWaterMark > 0 && sub1 == nullptr) {
result = 1 / result;
}
@@ -1235,7 +1235,7 @@ NFRule::matchToDelimiter(const UnicodeString& text,
// for "delimiter". Instead, just use "sub" to parse as much of
// "text" as possible.
}
- else if (sub == NULL) {
+ else if (sub == nullptr) {
return _baseValue;
}
else {
@@ -1309,7 +1309,7 @@ NFRule::prefixLength(const UnicodeString& str, const UnicodeString& prefix, UErr
// the CollationElementIterator protocol. Hopefully, this
// will change someday.)
const RuleBasedCollator* collator = formatter->getCollator();
- if (collator == NULL) {
+ if (collator == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return 0;
}
@@ -1588,7 +1588,7 @@ NFRule::allIgnorable(const UnicodeString& str, UErrorCode& status) const
// element is 0 (ignorable) at the primary level
if (formatter->isLenient()) {
const RuleBasedCollator* collator = formatter->getCollator();
- if (collator == NULL) {
+ if (collator == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return false;
}
@@ -1618,10 +1618,10 @@ NFRule::allIgnorable(const UnicodeString& str, UErrorCode& status) const
void
NFRule::setDecimalFormatSymbols(const DecimalFormatSymbols& newSymbols, UErrorCode& status) {
- if (sub1 != NULL) {
+ if (sub1 != nullptr) {
sub1->setDecimalFormatSymbols(newSymbols, status);
}
- if (sub2 != NULL) {
+ if (sub2 != nullptr) {
sub2->setDecimalFormatSymbols(newSymbols, status);
}
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/nfrule.h b/Build/source/libs/icu/icu-src/source/i18n/nfrule.h
index 5e615e485c8..fda74fabf2c 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/nfrule.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/nfrule.h
@@ -63,7 +63,7 @@ public:
int64_t getBaseValue() const { return baseValue; }
void setBaseValue(int64_t value, UErrorCode& status);
- UChar getDecimalPoint() const { return decimalPoint; }
+ char16_t getDecimalPoint() const { return decimalPoint; }
int64_t getDivisor() const;
@@ -108,7 +108,7 @@ private:
int64_t baseValue;
int32_t radix;
int16_t exponent;
- UChar decimalPoint;
+ char16_t decimalPoint;
UnicodeString fRuleText;
NFSubstitution* sub1;
NFSubstitution* sub2;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/nfsubs.cpp b/Build/source/libs/icu/icu-src/source/i18n/nfsubs.cpp
index 9dba77b1e30..5256b8a39bb 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/nfsubs.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/nfsubs.cpp
@@ -25,23 +25,23 @@
#if U_HAVE_RBNF
-static const UChar gLessThan = 0x003c;
-static const UChar gEquals = 0x003d;
-static const UChar gGreaterThan = 0x003e;
-static const UChar gPercent = 0x0025;
-static const UChar gPound = 0x0023;
-static const UChar gZero = 0x0030;
-static const UChar gSpace = 0x0020;
-
-static const UChar gEqualsEquals[] =
+static const char16_t gLessThan = 0x003c;
+static const char16_t gEquals = 0x003d;
+static const char16_t gGreaterThan = 0x003e;
+static const char16_t gPercent = 0x0025;
+static const char16_t gPound = 0x0023;
+static const char16_t gZero = 0x0030;
+static const char16_t gSpace = 0x0020;
+
+static const char16_t gEqualsEquals[] =
{
0x3D, 0x3D, 0
}; /* "==" */
-static const UChar gGreaterGreaterGreaterThan[] =
+static const char16_t gGreaterGreaterGreaterThan[] =
{
0x3E, 0x3E, 0x3E, 0
}; /* ">>>" */
-static const UChar gGreaterGreaterThan[] =
+static const char16_t gGreaterGreaterThan[] =
{
0x3E, 0x3E, 0
}; /* ">>" */
@@ -62,11 +62,11 @@ public:
virtual double transformNumber(double number) const override { return number; }
virtual double composeRuleValue(double newRuleValue, double /*oldRuleValue*/) const override { return newRuleValue; }
virtual double calcUpperBound(double oldUpperBound) const override { return oldUpperBound; }
- virtual UChar tokenChar() const override { return (UChar)0x003d; } // '='
+ virtual char16_t tokenChar() const override { return (char16_t)0x003d; } // '='
public:
- static UClassID getStaticClassID(void);
- virtual UClassID getDynamicClassID(void) const override;
+ static UClassID getStaticClassID();
+ virtual UClassID getDynamicClassID() const override;
};
SameValueSubstitution::~SameValueSubstitution() {}
@@ -103,7 +103,25 @@ public:
}
virtual double transformNumber(double number) const override {
- if (getRuleSet()) {
+ bool doFloor = getRuleSet() != nullptr;
+ if (!doFloor) {
+ // This is a HACK that partially addresses ICU-22313. The original code wanted us to do
+ // floor() on the result if we were passing it to another rule set, but not if we were passing
+ // it to a DecimalFormat. But the DurationRules rule set has multiplier substitutions where
+ // we DO want to do the floor() operation. What we REALLY want is to do floor() any time
+ // the owning rule also has a ModulusSubsitution, but we don't have access to that information
+ // here, so instead we're doing a floor() any time the DecimalFormat has maxFracDigits equal to
+ // 0. This seems to work with our existing rule sets, but could be a problem in the future,
+ // but the "real" fix for DurationRules isn't worth doing, since we're deprecating DurationRules
+ // anyway. This is enough to keep it from being egregiously wrong, without obvious side
+ // effects. --rtg 8/16/23
+ const DecimalFormat* decimalFormat = getNumberFormat();
+ if (decimalFormat == nullptr || decimalFormat->getMaximumFractionDigits() == 0) {
+ doFloor = true;
+ }
+ }
+
+ if (doFloor) {
return uprv_floor(number / divisor);
} else {
return number / divisor;
@@ -116,11 +134,11 @@ public:
virtual double calcUpperBound(double /*oldUpperBound*/) const override { return static_cast<double>(divisor); }
- virtual UChar tokenChar() const override { return (UChar)0x003c; } // '<'
+ virtual char16_t tokenChar() const override { return (char16_t)0x003c; } // '<'
public:
- static UClassID getStaticClassID(void);
- virtual UClassID getDynamicClassID(void) const override;
+ static UClassID getStaticClassID();
+ virtual UClassID getDynamicClassID() const override;
};
MultiplierSubstitution::~MultiplierSubstitution() {}
@@ -169,13 +187,13 @@ public:
virtual UBool isModulusSubstitution() const override { return true; }
- virtual UChar tokenChar() const override { return (UChar)0x003e; } // '>'
+ virtual char16_t tokenChar() const override { return (char16_t)0x003e; } // '>'
virtual void toString(UnicodeString& result) const override;
public:
- static UClassID getStaticClassID(void);
- virtual UClassID getDynamicClassID(void) const override;
+ static UClassID getStaticClassID();
+ virtual UClassID getDynamicClassID() const override;
};
ModulusSubstitution::~ModulusSubstitution() {}
@@ -193,11 +211,11 @@ public:
virtual double transformNumber(double number) const override { return uprv_floor(number); }
virtual double composeRuleValue(double newRuleValue, double oldRuleValue) const override { return newRuleValue + oldRuleValue; }
virtual double calcUpperBound(double /*oldUpperBound*/) const override { return DBL_MAX; }
- virtual UChar tokenChar() const override { return (UChar)0x003c; } // '<'
+ virtual char16_t tokenChar() const override { return (char16_t)0x003c; } // '<'
public:
- static UClassID getStaticClassID(void);
- virtual UClassID getDynamicClassID(void) const override;
+ static UClassID getStaticClassID();
+ virtual UClassID getDynamicClassID() const override;
};
IntegralPartSubstitution::~IntegralPartSubstitution() {}
@@ -230,11 +248,11 @@ public:
virtual double composeRuleValue(double newRuleValue, double oldRuleValue) const override { return newRuleValue + oldRuleValue; }
virtual double calcUpperBound(double /*oldUpperBound*/) const override { return 0.0; }
- virtual UChar tokenChar() const override { return (UChar)0x003e; } // '>'
+ virtual char16_t tokenChar() const override { return (char16_t)0x003e; } // '>'
public:
- static UClassID getStaticClassID(void);
- virtual UClassID getDynamicClassID(void) const override;
+ static UClassID getStaticClassID();
+ virtual UClassID getDynamicClassID() const override;
};
FractionalPartSubstitution::~FractionalPartSubstitution() {}
@@ -252,11 +270,11 @@ public:
virtual double transformNumber(double number) const override { return uprv_fabs(number); }
virtual double composeRuleValue(double newRuleValue, double /*oldRuleValue*/) const override { return -newRuleValue; }
virtual double calcUpperBound(double /*oldUpperBound*/) const override { return DBL_MAX; }
- virtual UChar tokenChar() const override { return (UChar)0x003e; } // '>'
+ virtual char16_t tokenChar() const override { return (char16_t)0x003e; } // '>'
public:
- static UClassID getStaticClassID(void);
- virtual UClassID getDynamicClassID(void) const override;
+ static UClassID getStaticClassID();
+ virtual UClassID getDynamicClassID() const override;
};
AbsoluteValueSubstitution::~AbsoluteValueSubstitution() {}
@@ -302,13 +320,13 @@ public:
virtual double composeRuleValue(double newRuleValue, double oldRuleValue) const override { return newRuleValue / oldRuleValue; }
virtual double calcUpperBound(double /*oldUpperBound*/) const override { return denominator; }
- virtual UChar tokenChar() const override { return (UChar)0x003c; } // '<'
+ virtual char16_t tokenChar() const override { return (char16_t)0x003c; } // '<'
private:
- static const UChar LTLT[2];
+ static const char16_t LTLT[2];
public:
- static UClassID getStaticClassID(void);
- virtual UClassID getDynamicClassID(void) const override;
+ static UClassID getStaticClassID();
+ virtual UClassID getDynamicClassID() const override;
};
NumeratorSubstitution::~NumeratorSubstitution() {}
@@ -324,7 +342,7 @@ NFSubstitution::makeSubstitution(int32_t pos,
{
// if the description is empty, return a NullSubstitution
if (description.length() == 0) {
- return NULL;
+ return nullptr;
}
switch (description.charAt(0)) {
@@ -335,7 +353,7 @@ NFSubstitution::makeSubstitution(int32_t pos,
if (rule->getBaseValue() == NFRule::kNegativeNumberRule) {
// throw new IllegalArgumentException("<< not allowed in negative-number rule");
status = U_PARSE_ERROR;
- return NULL;
+ return nullptr;
}
// if the rule is a fraction rule, return an
@@ -380,7 +398,7 @@ NFSubstitution::makeSubstitution(int32_t pos,
else if (ruleSet->isFractionRuleSet()) {
// throw new IllegalArgumentException(">> not allowed in fraction rule set");
status = U_PARSE_ERROR;
- return NULL;
+ return nullptr;
}
// otherwise, return a ModulusSubstitution
@@ -399,14 +417,14 @@ NFSubstitution::makeSubstitution(int32_t pos,
// throw new IllegalArgumentException("Illegal substitution character");
status = U_PARSE_ERROR;
}
- return NULL;
+ return nullptr;
}
NFSubstitution::NFSubstitution(int32_t _pos,
const NFRuleSet* _ruleSet,
const UnicodeString& description,
UErrorCode& status)
- : pos(_pos), ruleSet(NULL), numberFormat(NULL)
+ : pos(_pos), ruleSet(nullptr), numberFormat(nullptr)
{
// the description should begin and end with the same character.
// If it doesn't that's a syntax error. Otherwise,
@@ -448,7 +466,7 @@ NFSubstitution::NFSubstitution(int32_t _pos,
return;
}
DecimalFormat *tempNumberFormat = new DecimalFormat(workingDescription, *sym, status);
- /* test for NULL */
+ /* test for nullptr */
if (!tempNumberFormat) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
@@ -467,9 +485,9 @@ NFSubstitution::NFSubstitution(int32_t _pos,
// a number even when it's 0)
// this causes problems when >>> is used in a frationalPartSubstitution
- // this->ruleSet = NULL;
+ // this->ruleSet = nullptr;
this->ruleSet = _ruleSet;
- this->numberFormat = NULL;
+ this->numberFormat = nullptr;
}
else {
// and of the description is none of these things, it's a syntax error
@@ -482,7 +500,7 @@ NFSubstitution::NFSubstitution(int32_t _pos,
NFSubstitution::~NFSubstitution()
{
delete numberFormat;
- numberFormat = NULL;
+ numberFormat = nullptr;
}
/**
@@ -499,7 +517,7 @@ NFSubstitution::setDivisor(int32_t /*radix*/, int16_t /*exponent*/, UErrorCode&
void
NFSubstitution::setDecimalFormatSymbols(const DecimalFormatSymbols &newSymbols, UErrorCode& /*status*/) {
- if (numberFormat != NULL) {
+ if (numberFormat != nullptr) {
numberFormat->setDecimalFormatSymbols(newSymbols);
}
}
@@ -523,10 +541,10 @@ NFSubstitution::operator==(const NFSubstitution& rhs) const
// this should be called by subclasses before their own equality tests
return typeid(*this) == typeid(rhs)
&& pos == rhs.pos
- && (ruleSet == NULL) == (rhs.ruleSet == NULL)
+ && (ruleSet == nullptr) == (rhs.ruleSet == nullptr)
// && ruleSet == rhs.ruleSet causes circularity, other checks to make instead?
- && (numberFormat == NULL
- ? (rhs.numberFormat == NULL)
+ && (numberFormat == nullptr
+ ? (rhs.numberFormat == nullptr)
: (*numberFormat == *rhs.numberFormat));
}
@@ -547,9 +565,9 @@ NFSubstitution::toString(UnicodeString& text) const
text.append(tokenChar());
UnicodeString temp;
- if (ruleSet != NULL) {
+ if (ruleSet != nullptr) {
ruleSet->getName(temp);
- } else if (numberFormat != NULL) {
+ } else if (numberFormat != nullptr) {
numberFormat->toPattern(temp);
}
text.append(temp);
@@ -573,12 +591,12 @@ NFSubstitution::toString(UnicodeString& text) const
void
NFSubstitution::doSubstitution(int64_t number, UnicodeString& toInsertInto, int32_t _pos, int32_t recursionCount, UErrorCode& status) const
{
- if (ruleSet != NULL) {
+ if (ruleSet != nullptr) {
// 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
ruleSet->format(transformNumber(number), toInsertInto, _pos + this->pos, recursionCount, status);
- } else if (numberFormat != NULL) {
+ } else if (numberFormat != nullptr) {
if (number <= MAX_INT64_IN_DOUBLE) {
// or perform the transformation on the number (preserving
// the result's fractional part if the formatter it set
@@ -634,16 +652,16 @@ NFSubstitution::doSubstitution(double number, UnicodeString& toInsertInto, int32
// if the result is an integer, from here on out we work in integer
// space (saving time and memory and preserving accuracy)
- if (numberToFormat == uprv_floor(numberToFormat) && ruleSet != NULL) {
+ if (numberToFormat == uprv_floor(numberToFormat) && ruleSet != nullptr) {
ruleSet->format(util64_fromDouble(numberToFormat), toInsertInto, _pos + this->pos, recursionCount, status);
// 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) {
+ if (ruleSet != nullptr) {
ruleSet->format(numberToFormat, toInsertInto, _pos + this->pos, recursionCount, status);
- } else if (numberFormat != NULL) {
+ } else if (numberFormat != nullptr) {
UnicodeString temp;
numberFormat->format(numberToFormat, temp);
toInsertInto.insert(_pos + this->pos, temp);
@@ -715,7 +733,7 @@ NFSubstitution::doParse(const UnicodeString& text,
// 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) {
+ if (ruleSet != nullptr) {
ruleSet->parse(text, parsePosition, upperBound, nonNumericalExecutedRuleMask, result);
if (lenientParse && !ruleSet->isFractionRuleSet() && parsePosition.getIndex() == 0) {
UErrorCode status = U_ZERO_ERROR;
@@ -727,7 +745,7 @@ NFSubstitution::doParse(const UnicodeString& text,
}
// ...or use our DecimalFormat to parse the text
- } else if (numberFormat != NULL) {
+ } else if (numberFormat != nullptr) {
numberFormat->parse(text, result, parsePosition);
}
@@ -834,7 +852,7 @@ ModulusSubstitution::ModulusSubstitution(int32_t _pos,
UErrorCode& status)
: NFSubstitution(_pos, _ruleSet, description, status)
, divisor(rule->getDivisor())
- , ruleToUse(NULL)
+ , ruleToUse(nullptr)
{
// the owning rule's divisor controls the behavior of this
// substitution: rather than keeping a backpointer to the rule,
@@ -882,7 +900,7 @@ ModulusSubstitution::doSubstitution(int64_t number, UnicodeString& toInsertInto,
// 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) {
+ if (ruleToUse == nullptr) {
NFSubstitution::doSubstitution(number, toInsertInto, _pos, recursionCount, status);
// a >>> substitution goes straight to a particular rule to
@@ -907,7 +925,7 @@ ModulusSubstitution::doSubstitution(double number, UnicodeString& toInsertInto,
// 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) {
+ if (ruleToUse == nullptr) {
NFSubstitution::doSubstitution(number, toInsertInto, _pos, recursionCount, status);
// a >>> substitution goes straight to a particular rule to
@@ -943,7 +961,7 @@ ModulusSubstitution::doParse(const UnicodeString& text,
{
// if this isn't a >>> substitution, we can just use the
// inherited parse() routine to do the parsing
- if (ruleToUse == NULL) {
+ if (ruleToUse == nullptr) {
return NFSubstitution::doParse(text, parsePosition, baseValue, upperBound, lenientParse, nonNumericalExecutedRuleMask, result);
// but if it IS a >>> substitution, we have to do it here: we
@@ -976,7 +994,7 @@ ModulusSubstitution::toString(UnicodeString& text) const
// either the name of the rule set it uses, or the pattern of
// the DecimalFormat it uses
- if ( ruleToUse != NULL ) { // Must have been a >>> substitution.
+ if ( ruleToUse != nullptr ) { // Must have been a >>> substitution.
text.remove();
text.append(tokenChar());
text.append(tokenChar());
@@ -1146,7 +1164,7 @@ FractionalPartSubstitution::doParse(const UnicodeString& text,
DecimalQuantity dl;
int32_t totalDigits = 0;
- NumberFormat* fmt = NULL;
+ NumberFormat* fmt = nullptr;
while (workText.length() > 0 && workPos.getIndex() != 0) {
workPos.setIndex(0);
Formattable temp;
@@ -1163,7 +1181,7 @@ FractionalPartSubstitution::doParse(const UnicodeString& text,
fmt = NumberFormat::createInstance(status);
if (U_FAILURE(status)) {
delete fmt;
- fmt = NULL;
+ fmt = nullptr;
}
}
if (fmt) {
@@ -1224,7 +1242,7 @@ NumeratorSubstitution::doSubstitution(double number, UnicodeString& toInsertInto
int64_t longNF = util64_fromDouble(numberToFormat);
const NFRuleSet* aruleSet = getRuleSet();
- if (withZeros && aruleSet != NULL) {
+ if (withZeros && aruleSet != nullptr) {
// if there are leading zeros in the decimal expansion then emit them
int64_t nf =longNF;
int32_t len = toInsertInto.length();
@@ -1237,14 +1255,14 @@ NumeratorSubstitution::doSubstitution(double number, UnicodeString& toInsertInto
// if the result is an integer, from here on out we work in integer
// space (saving time and memory and preserving accuracy)
- if (numberToFormat == longNF && aruleSet != NULL) {
+ if (numberToFormat == longNF && aruleSet != nullptr) {
aruleSet->format(longNF, toInsertInto, apos + getPos(), recursionCount, status);
// 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 (aruleSet != NULL) {
+ if (aruleSet != nullptr) {
aruleSet->format(numberToFormat, toInsertInto, apos + getPos(), recursionCount, status);
} else {
UnicodeString temp;
@@ -1334,7 +1352,7 @@ NumeratorSubstitution::operator==(const NFSubstitution& rhs) const
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(NumeratorSubstitution)
-const UChar NumeratorSubstitution::LTLT[] = { 0x003c, 0x003c };
+const char16_t NumeratorSubstitution::LTLT[] = { 0x003c, 0x003c };
U_NAMESPACE_END
diff --git a/Build/source/libs/icu/icu-src/source/i18n/nfsubs.h b/Build/source/libs/icu/icu-src/source/i18n/nfsubs.h
index a38a3722a59..d252f864993 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/nfsubs.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/nfsubs.h
@@ -234,7 +234,7 @@ public:
* substitutions of this type. Used by toString().
* @return This substitution's token character.
*/
- virtual UChar tokenChar() const = 0;
+ virtual char16_t tokenChar() const = 0;
/**
* Returns true if this is a modulus substitution. (We didn't do this
@@ -249,8 +249,8 @@ private:
NFSubstitution &operator=(const NFSubstitution &other) = delete; // forbid copying of this class
public:
- static UClassID getStaticClassID(void);
- virtual UClassID getDynamicClassID(void) const override;
+ static UClassID getStaticClassID();
+ virtual UClassID getDynamicClassID() const override;
};
U_NAMESPACE_END
diff --git a/Build/source/libs/icu/icu-src/source/i18n/nortrans.cpp b/Build/source/libs/icu/icu-src/source/i18n/nortrans.cpp
index b1809daebd0..d793433b3d2 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/nortrans.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/nortrans.cpp
@@ -62,11 +62,11 @@ Transliterator* NormalizationTransliterator::_create(const UnicodeString& ID,
const char *name = (const char *)context.pointer;
UNormalization2Mode mode = (UNormalization2Mode)uprv_strchr(name, 0)[1];
UErrorCode errorCode = U_ZERO_ERROR;
- const Normalizer2 *norm2 = Normalizer2::getInstance(NULL, name, mode, errorCode);
+ const Normalizer2 *norm2 = Normalizer2::getInstance(nullptr, name, mode, errorCode);
if(U_SUCCESS(errorCode)) {
return new NormalizationTransliterator(ID, *norm2);
} else {
- return NULL;
+ return nullptr;
}
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/number_asformat.h b/Build/source/libs/icu/icu-src/source/i18n/number_asformat.h
index 394b9a811fd..f921b429420 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/number_asformat.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/number_asformat.h
@@ -34,37 +34,37 @@ class U_I18N_API LocalizedNumberFormatterAsFormat : public Format {
/**
* Destructor.
*/
- ~LocalizedNumberFormatterAsFormat() U_OVERRIDE;
+ ~LocalizedNumberFormatterAsFormat() override;
/**
* Equals operator.
*/
- bool operator==(const Format& other) const U_OVERRIDE;
+ bool operator==(const Format& other) const override;
/**
* Creates a copy of this object.
*/
- LocalizedNumberFormatterAsFormat* clone() const U_OVERRIDE;
+ LocalizedNumberFormatterAsFormat* clone() const override;
/**
* Formats a Number using the wrapped LocalizedNumberFormatter. The provided formattable must be a
* number type.
*/
UnicodeString& format(const Formattable& obj, UnicodeString& appendTo, FieldPosition& pos,
- UErrorCode& status) const U_OVERRIDE;
+ UErrorCode& status) const override;
/**
* Formats a Number using the wrapped LocalizedNumberFormatter. The provided formattable must be a
* number type.
*/
UnicodeString& format(const Formattable& obj, UnicodeString& appendTo, FieldPositionIterator* posIter,
- UErrorCode& status) const U_OVERRIDE;
+ UErrorCode& status) const override;
/**
* Not supported: sets an error index and returns.
*/
void parseObject(const UnicodeString& source, Formattable& result,
- ParsePosition& parse_pos) const U_OVERRIDE;
+ ParsePosition& parse_pos) const override;
/**
* Gets the LocalizedNumberFormatter that this wrapper class uses to format numbers.
@@ -86,7 +86,7 @@ class U_I18N_API LocalizedNumberFormatterAsFormat : public Format {
*/
const LocalizedNumberFormatter& getNumberFormatter() const;
- UClassID getDynamicClassID() const U_OVERRIDE;
+ UClassID getDynamicClassID() const override;
static UClassID U_EXPORT2 getStaticClassID();
private:
diff --git a/Build/source/libs/icu/icu-src/source/i18n/number_capi.cpp b/Build/source/libs/icu/icu-src/source/i18n/number_capi.cpp
index 42bb05c0661..abada9ad869 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/number_capi.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/number_capi.cpp
@@ -16,6 +16,8 @@
#include "number_decnum.h"
#include "unicode/numberformatter.h"
#include "unicode/unumberformatter.h"
+#include "unicode/simplenumberformatter.h"
+#include "unicode/usimplenumberformatter.h"
using namespace icu;
using namespace icu::number;
@@ -35,6 +37,24 @@ struct UNumberFormatterData : public UMemory,
LocalizedNumberFormatter fFormatter;
};
+/**
+ * Implementation class for USimpleNumber. Wraps a SimpleNumberFormatter.
+ */
+struct USimpleNumberData : public UMemory,
+ // Magic number as ASCII == "SNM" (SimpleNuMber)
+ public IcuCApiHelper<USimpleNumber, USimpleNumberData, 0x534E4D00> {
+ SimpleNumber fNumber;
+};
+
+/**
+ * Implementation class for USimpleNumberFormatter. Wraps a SimpleNumberFormatter.
+ */
+struct USimpleNumberFormatterData : public UMemory,
+ // Magic number as ASCII == "SNF" (SimpleNumberFormatter)
+ public IcuCApiHelper<USimpleNumberFormatter, USimpleNumberFormatterData, 0x534E4600> {
+ SimpleNumberFormatter fFormatter;
+};
+
struct UFormattedNumberImpl;
// Magic number as ASCII == "FDN" (FormatteDNumber)
@@ -46,6 +66,8 @@ struct UFormattedNumberImpl : public UFormattedValueImpl, public UFormattedNumbe
FormattedNumber fImpl;
UFormattedNumberData fData;
+
+ void setTo(FormattedNumber value);
};
UFormattedNumberImpl::UFormattedNumberImpl()
@@ -58,6 +80,10 @@ UFormattedNumberImpl::~UFormattedNumberImpl() {
fImpl.fData = nullptr;
}
+void UFormattedNumberImpl::setTo(FormattedNumber value) {
+ fData = std::move(*value.fData);
+}
+
}
}
U_NAMESPACE_END
@@ -82,7 +108,7 @@ const DecimalQuantity* icu::number::impl::validateUFormattedNumberToDecimalQuant
U_CAPI UNumberFormatter* U_EXPORT2
-unumf_openForSkeletonAndLocale(const UChar* skeleton, int32_t skeletonLen, const char* locale,
+unumf_openForSkeletonAndLocale(const char16_t* skeleton, int32_t skeletonLen, const char* locale,
UErrorCode* ec) {
auto* impl = new UNumberFormatterData();
if (impl == nullptr) {
@@ -96,7 +122,7 @@ unumf_openForSkeletonAndLocale(const UChar* skeleton, int32_t skeletonLen, const
}
U_CAPI UNumberFormatter* U_EXPORT2
-unumf_openForSkeletonAndLocaleWithError(const UChar* skeleton, int32_t skeletonLen, const char* locale,
+unumf_openForSkeletonAndLocaleWithError(const char16_t* skeleton, int32_t skeletonLen, const char* locale,
UParseError* perror, UErrorCode* ec) {
auto* impl = new UNumberFormatterData();
if (impl == nullptr) {
@@ -105,7 +131,8 @@ unumf_openForSkeletonAndLocaleWithError(const UChar* skeleton, int32_t skeletonL
}
// Readonly-alias constructor (first argument is whether we are NUL-terminated)
UnicodeString skeletonString(skeletonLen == -1, skeleton, skeletonLen);
- impl->fFormatter = NumberFormatter::forSkeleton(skeletonString, *perror, *ec).locale(locale);
+ UParseError tempParseError;
+ impl->fFormatter = NumberFormatter::forSkeleton(skeletonString, (perror == nullptr) ? tempParseError : *perror, *ec).locale(locale);
return impl->exportForC();
}
@@ -150,7 +177,7 @@ unumf_formatDecimal(const UNumberFormatter* uformatter, const char* value, int32
}
U_CAPI int32_t U_EXPORT2
-unumf_resultToString(const UFormattedNumber* uresult, UChar* buffer, int32_t bufferCapacity,
+unumf_resultToString(const UFormattedNumber* uresult, char16_t* buffer, int32_t bufferCapacity,
UErrorCode* ec) {
const auto* result = UFormattedNumberApiHelper::validate(uresult, *ec);
if (U_FAILURE(*ec)) { return 0; }
@@ -225,6 +252,154 @@ unumf_close(UNumberFormatter* f) {
}
+///// SIMPLE NUMBER FORMATTER /////
+
+U_CAPI USimpleNumber* U_EXPORT2
+usnum_openForInt64(int64_t value, UErrorCode* ec) {
+ auto* number = new USimpleNumberData();
+ if (number == nullptr) {
+ *ec = U_MEMORY_ALLOCATION_ERROR;
+ return nullptr;
+ }
+ number->fNumber = SimpleNumber::forInt64(value, *ec);
+ return number->exportForC();
+}
+
+U_CAPI void U_EXPORT2
+usnum_setToInt64(USimpleNumber* unumber, int64_t value, UErrorCode* ec) {
+ auto* number = USimpleNumberData::validate(unumber, *ec);
+ if (U_FAILURE(*ec)) {
+ return;
+ }
+ number->fNumber = SimpleNumber::forInt64(value, *ec);
+}
+
+U_CAPI void U_EXPORT2
+usnum_multiplyByPowerOfTen(USimpleNumber* unumber, int32_t power, UErrorCode* ec) {
+ auto* number = USimpleNumberData::validate(unumber, *ec);
+ if (U_FAILURE(*ec)) {
+ return;
+ }
+ number->fNumber.multiplyByPowerOfTen(power, *ec);
+}
+
+U_CAPI void U_EXPORT2
+usnum_roundTo(USimpleNumber* unumber, int32_t position, UNumberFormatRoundingMode roundingMode, UErrorCode* ec) {
+ auto* number = USimpleNumberData::validate(unumber, *ec);
+ if (U_FAILURE(*ec)) {
+ return;
+ }
+ number->fNumber.roundTo(position, roundingMode, *ec);
+}
+
+U_CAPI void U_EXPORT2
+usnum_setMinimumIntegerDigits(USimpleNumber* unumber, int32_t minimumIntegerDigits, UErrorCode* ec) {
+ auto* number = USimpleNumberData::validate(unumber, *ec);
+ if (U_FAILURE(*ec)) {
+ return;
+ }
+ number->fNumber.setMinimumIntegerDigits(minimumIntegerDigits, *ec);
+}
+
+U_CAPI void U_EXPORT2
+usnum_setMinimumFractionDigits(USimpleNumber* unumber, int32_t minimumFractionDigits, UErrorCode* ec) {
+ auto* number = USimpleNumberData::validate(unumber, *ec);
+ if (U_FAILURE(*ec)) {
+ return;
+ }
+ number->fNumber.setMinimumFractionDigits(minimumFractionDigits, *ec);
+}
+
+U_CAPI void U_EXPORT2
+usnum_truncateStart(USimpleNumber* unumber, int32_t maximumIntegerDigits, UErrorCode* ec) {
+ auto* number = USimpleNumberData::validate(unumber, *ec);
+ if (U_FAILURE(*ec)) {
+ return;
+ }
+ number->fNumber.truncateStart(maximumIntegerDigits, *ec);
+}
+
+U_CAPI void U_EXPORT2
+usnum_setSign(USimpleNumber* unumber, USimpleNumberSign sign, UErrorCode* ec) {
+ auto* number = USimpleNumberData::validate(unumber, *ec);
+ if (U_FAILURE(*ec)) {
+ return;
+ }
+ number->fNumber.setSign(sign, *ec);
+}
+
+U_CAPI USimpleNumberFormatter* U_EXPORT2
+usnumf_openForLocale(const char* locale, UErrorCode* ec) {
+ auto* impl = new USimpleNumberFormatterData();
+ if (impl == nullptr) {
+ *ec = U_MEMORY_ALLOCATION_ERROR;
+ return nullptr;
+ }
+ impl->fFormatter = SimpleNumberFormatter::forLocale(locale, *ec);
+ return impl->exportForC();
+}
+
+U_CAPI USimpleNumberFormatter* U_EXPORT2
+usnumf_openForLocaleAndGroupingStrategy(
+ const char* locale, UNumberGroupingStrategy groupingStrategy, UErrorCode* ec) {
+ auto* impl = new USimpleNumberFormatterData();
+ if (impl == nullptr) {
+ *ec = U_MEMORY_ALLOCATION_ERROR;
+ return nullptr;
+ }
+ impl->fFormatter = SimpleNumberFormatter::forLocaleAndGroupingStrategy(locale, groupingStrategy, *ec);
+ return impl->exportForC();
+}
+
+U_CAPI void U_EXPORT2
+usnumf_format(
+ const USimpleNumberFormatter* uformatter,
+ USimpleNumber* unumber,
+ UFormattedNumber* uresult,
+ UErrorCode* ec) {
+ auto* formatter = USimpleNumberFormatterData::validate(uformatter, *ec);
+ auto* number = USimpleNumberData::validate(unumber, *ec);
+ auto* result = UFormattedNumberApiHelper::validate(uresult, *ec);
+ if (U_FAILURE(*ec)) {
+ return;
+ }
+ auto localResult = formatter->fFormatter.format(std::move(number->fNumber), *ec);
+ if (U_FAILURE(*ec)) {
+ return;
+ }
+ result->setTo(std::move(localResult));
+}
+
+U_CAPI void U_EXPORT2
+usnumf_formatInt64(
+ const USimpleNumberFormatter* uformatter,
+ int64_t value,
+ UFormattedNumber* uresult,
+ UErrorCode* ec) {
+ auto* formatter = USimpleNumberFormatterData::validate(uformatter, *ec);
+ auto* result = UFormattedNumberApiHelper::validate(uresult, *ec);
+ if (U_FAILURE(*ec)) {
+ return;
+ }
+ auto localResult = formatter->fFormatter.formatInt64(value, *ec);
+ result->setTo(std::move(localResult));
+}
+
+U_CAPI void U_EXPORT2
+usnum_close(USimpleNumber* unumber) {
+ UErrorCode localStatus = U_ZERO_ERROR;
+ const USimpleNumberData* impl = USimpleNumberData::validate(unumber, localStatus);
+ delete impl;
+}
+
+U_CAPI void U_EXPORT2
+usnumf_close(USimpleNumberFormatter* uformatter) {
+ UErrorCode localStatus = U_ZERO_ERROR;
+ const USimpleNumberFormatterData* impl = USimpleNumberFormatterData::validate(uformatter, localStatus);
+ delete impl;
+}
+
+
#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/Build/source/libs/icu/icu-src/source/i18n/number_compact.cpp b/Build/source/libs/icu/icu-src/source/i18n/number_compact.cpp
index 4dc96e7ea1b..2cfa65a031d 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/number_compact.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/number_compact.cpp
@@ -22,7 +22,7 @@ namespace {
// A dummy object used when a "0" compact decimal entry is encountered. This is necessary
// in order to prevent falling back to root. Object equality ("==") is intended.
-const UChar *USE_FALLBACK = u"<USE FALLBACK>";
+const char16_t *USE_FALLBACK = u"<USE FALLBACK>";
/** Produces a string like "NumberElements/latn/patternsShort/decimalFormat". */
void getResourceBundleKey(const char *nsName, CompactStyle compactStyle, CompactType compactType,
@@ -38,7 +38,7 @@ int32_t getIndex(int32_t magnitude, StandardPlural::Form plural) {
return magnitude * StandardPlural::COUNT + plural;
}
-int32_t countZeros(const UChar *patternString, int32_t patternLength) {
+int32_t countZeros(const char16_t *patternString, int32_t patternLength) {
// NOTE: This strategy for computing the number of zeros is a hack for efficiency.
// It could break if there are any 0s that aren't part of the main pattern.
int32_t numZeros = 0;
@@ -104,7 +104,7 @@ int32_t CompactData::getMultiplier(int32_t magnitude) const {
return multipliers[magnitude];
}
-const UChar *CompactData::getPattern(
+const char16_t *CompactData::getPattern(
int32_t magnitude,
const PluralRules *rules,
const DecimalQuantity &dq) const {
@@ -114,7 +114,7 @@ const UChar *CompactData::getPattern(
if (magnitude > largestMagnitude) {
magnitude = largestMagnitude;
}
- const UChar *patternString = nullptr;
+ const char16_t *patternString = nullptr;
if (dq.hasIntegerValue()) {
int64_t i = dq.toLong(true);
if (i == 0) {
@@ -151,14 +151,14 @@ void CompactData::getUniquePatterns(UVector &output, UErrorCode &status) const {
// Insert pattern into the UVector if the UVector does not already contain the pattern.
// Search the UVector from the end since identical patterns are likely to be adjacent.
for (int32_t i = output.size() - 1; i >= 0; i--) {
- if (u_strcmp(pattern, static_cast<const UChar *>(output[i])) == 0) {
+ if (u_strcmp(pattern, static_cast<const char16_t *>(output[i])) == 0) {
goto continue_outer;
}
}
// The string was not found; add it to the UVector.
// Note: must cast off const from pattern to store it in a UVector, which expects (void *)
- output.addElement(const_cast<UChar *>(pattern), status);
+ output.addElement(const_cast<char16_t *>(pattern), status);
continue_outer:
continue;
@@ -197,7 +197,7 @@ void CompactData::CompactDataSink::put(const char *key, ResourceValue &value, UB
// The value "0" means that we need to use the default pattern and not fall back
// to parent locales. Example locale where this is relevant: 'it'.
int32_t patternLength;
- const UChar *patternString = value.getString(patternLength, status);
+ const char16_t *patternString = value.getString(patternLength, status);
if (U_FAILURE(status)) { return; }
if (u_strcmp(patternString, u"0") == 0) {
patternString = USE_FALLBACK;
@@ -279,7 +279,7 @@ void CompactHandler::precomputeAllModifiers(MutablePatternModifier &buildReferen
}
for (int32_t i = 0; i < precomputedModsLength; i++) {
- auto patternString = static_cast<const UChar *>(allPatterns[i]);
+ auto patternString = static_cast<const char16_t *>(allPatterns[i]);
UnicodeString hello(patternString);
CompactModInfo &info = precomputedMods[i];
ParsedPatternInfo patternInfo;
@@ -310,7 +310,7 @@ void CompactHandler::processQuantity(DecimalQuantity &quantity, MicroProps &micr
magnitude -= multiplier;
}
- const UChar *patternString = data.getPattern(magnitude, rules, quantity);
+ const char16_t *patternString = data.getPattern(magnitude, rules, quantity);
if (patternString == nullptr) {
// Use the default (non-compact) modifier.
// No need to take any action.
diff --git a/Build/source/libs/icu/icu-src/source/i18n/number_compact.h b/Build/source/libs/icu/icu-src/source/i18n/number_compact.h
index fa29744c103..aee1df74523 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/number_compact.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/number_compact.h
@@ -26,9 +26,9 @@ class CompactData : public MultiplierProducer {
void populate(const Locale &locale, const char *nsName, CompactStyle compactStyle,
CompactType compactType, UErrorCode &status);
- int32_t getMultiplier(int32_t magnitude) const U_OVERRIDE;
+ int32_t getMultiplier(int32_t magnitude) const override;
- const UChar *getPattern(
+ const char16_t *getPattern(
int32_t magnitude,
const PluralRules *rules,
const DecimalQuantity &dq) const;
@@ -36,7 +36,7 @@ class CompactData : public MultiplierProducer {
void getUniquePatterns(UVector &output, UErrorCode &status) const;
private:
- const UChar *patterns[(COMPACT_MAX_DIGITS + 1) * StandardPlural::COUNT];
+ const char16_t *patterns[(COMPACT_MAX_DIGITS + 1) * StandardPlural::COUNT];
int8_t multipliers[COMPACT_MAX_DIGITS + 1];
int8_t largestMagnitude;
UBool isEmpty;
@@ -45,7 +45,7 @@ class CompactData : public MultiplierProducer {
public:
explicit CompactDataSink(CompactData &data) : data(data) {}
- void put(const char *key, ResourceValue &value, UBool /*noFallback*/, UErrorCode &status) U_OVERRIDE;
+ void put(const char *key, ResourceValue &value, UBool /*noFallback*/, UErrorCode &status) override;
private:
CompactData &data;
@@ -54,7 +54,7 @@ class CompactData : public MultiplierProducer {
struct CompactModInfo {
const ImmutablePatternModifier *mod;
- const UChar* patternString;
+ const char16_t* patternString;
};
class CompactHandler : public MicroPropsGenerator, public UMemory {
@@ -70,10 +70,10 @@ class CompactHandler : public MicroPropsGenerator, public UMemory {
const MicroPropsGenerator *parent,
UErrorCode &status);
- ~CompactHandler() U_OVERRIDE;
+ ~CompactHandler() override;
void
- processQuantity(DecimalQuantity &quantity, MicroProps &micros, UErrorCode &status) const U_OVERRIDE;
+ processQuantity(DecimalQuantity &quantity, MicroProps &micros, UErrorCode &status) const override;
private:
const PluralRules *rules;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/number_decimalquantity.cpp b/Build/source/libs/icu/icu-src/source/i18n/number_decimalquantity.cpp
index b40e1276c35..659465d0870 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/number_decimalquantity.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/number_decimalquantity.cpp
@@ -89,7 +89,7 @@ DecimalQuantity::DecimalQuantity(const DecimalQuantity &other) {
*this = other;
}
-DecimalQuantity::DecimalQuantity(DecimalQuantity&& src) U_NOEXCEPT {
+DecimalQuantity::DecimalQuantity(DecimalQuantity&& src) noexcept {
*this = std::move(src);
}
@@ -102,7 +102,7 @@ DecimalQuantity &DecimalQuantity::operator=(const DecimalQuantity &other) {
return *this;
}
-DecimalQuantity& DecimalQuantity::operator=(DecimalQuantity&& src) U_NOEXCEPT {
+DecimalQuantity& DecimalQuantity::operator=(DecimalQuantity&& src) noexcept {
if (this == &src) {
return *this;
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/number_decimalquantity.h b/Build/source/libs/icu/icu-src/source/i18n/number_decimalquantity.h
index 862addf5d6c..2211fe9c19e 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/number_decimalquantity.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/number_decimalquantity.h
@@ -36,7 +36,7 @@ class U_I18N_API DecimalQuantity : public IFixedDecimal, public UMemory {
DecimalQuantity(const DecimalQuantity &other);
/** Move constructor. */
- DecimalQuantity(DecimalQuantity &&src) U_NOEXCEPT;
+ DecimalQuantity(DecimalQuantity &&src) noexcept;
DecimalQuantity();
@@ -50,7 +50,7 @@ class U_I18N_API DecimalQuantity : public IFixedDecimal, public UMemory {
DecimalQuantity &operator=(const DecimalQuantity &other);
/** Move assignment */
- DecimalQuantity &operator=(DecimalQuantity&& src) U_NOEXCEPT;
+ DecimalQuantity &operator=(DecimalQuantity&& src) noexcept;
/**
* Sets the minimum integer digits that this {@link DecimalQuantity} should generate.
@@ -195,10 +195,10 @@ class U_I18N_API DecimalQuantity : public IFixedDecimal, public UMemory {
Signum signum() const;
/** @return Whether the value represented by this {@link DecimalQuantity} is infinite. */
- bool isInfinite() const U_OVERRIDE;
+ bool isInfinite() const override;
/** @return Whether the value represented by this {@link DecimalQuantity} is not a number. */
- bool isNaN() const U_OVERRIDE;
+ bool isNaN() const override;
/**
* Note: this method incorporates the value of {@code exponent}
@@ -267,9 +267,9 @@ class U_I18N_API DecimalQuantity : public IFixedDecimal, public UMemory {
*/
void appendDigit(int8_t value, int32_t leadingZeros, bool appendAsInteger);
- double getPluralOperand(PluralOperand operand) const U_OVERRIDE;
+ double getPluralOperand(PluralOperand operand) const override;
- bool hasIntegerValue() const U_OVERRIDE;
+ bool hasIntegerValue() const override;
/**
* Gets the digit at the specified magnitude. For example, if the represented number is 12.3,
diff --git a/Build/source/libs/icu/icu-src/source/i18n/number_fluent.cpp b/Build/source/libs/icu/icu-src/source/i18n/number_fluent.cpp
index 8a968d922c2..45d6b06c6df 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/number_fluent.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/number_fluent.cpp
@@ -431,10 +431,10 @@ UnlocalizedNumberFormatter::UnlocalizedNumberFormatter(const NFS<UNF>& other)
}
// Make default copy constructor call the NumberFormatterSettings copy constructor.
-UnlocalizedNumberFormatter::UnlocalizedNumberFormatter(UNF&& src) U_NOEXCEPT
+UnlocalizedNumberFormatter::UnlocalizedNumberFormatter(UNF&& src) noexcept
: UNF(static_cast<NFS<UNF>&&>(src)) {}
-UnlocalizedNumberFormatter::UnlocalizedNumberFormatter(NFS<UNF>&& src) U_NOEXCEPT
+UnlocalizedNumberFormatter::UnlocalizedNumberFormatter(NFS<UNF>&& src) noexcept
: NFS<UNF>(std::move(src)) {
// No additional fields to assign
}
@@ -445,7 +445,7 @@ UnlocalizedNumberFormatter& UnlocalizedNumberFormatter::operator=(const UNF& oth
return *this;
}
-UnlocalizedNumberFormatter& UnlocalizedNumberFormatter::operator=(UNF&& src) U_NOEXCEPT {
+UnlocalizedNumberFormatter& UnlocalizedNumberFormatter::operator=(UNF&& src) noexcept {
NFS<UNF>::operator=(static_cast<NFS<UNF>&&>(src));
// No additional fields to assign
return *this;
@@ -461,10 +461,10 @@ LocalizedNumberFormatter::LocalizedNumberFormatter(const NFS<LNF>& other)
lnfCopyHelper(static_cast<const LNF&>(other), localStatus);
}
-LocalizedNumberFormatter::LocalizedNumberFormatter(LocalizedNumberFormatter&& src) U_NOEXCEPT
+LocalizedNumberFormatter::LocalizedNumberFormatter(LocalizedNumberFormatter&& src) noexcept
: LNF(static_cast<NFS<LNF>&&>(src)) {}
-LocalizedNumberFormatter::LocalizedNumberFormatter(NFS<LNF>&& src) U_NOEXCEPT
+LocalizedNumberFormatter::LocalizedNumberFormatter(NFS<LNF>&& src) noexcept
: NFS<LNF>(std::move(src)) {
lnfMoveHelper(std::move(static_cast<LNF&&>(src)));
}
@@ -477,7 +477,7 @@ LocalizedNumberFormatter& LocalizedNumberFormatter::operator=(const LNF& other)
return *this;
}
-LocalizedNumberFormatter& LocalizedNumberFormatter::operator=(LNF&& src) U_NOEXCEPT {
+LocalizedNumberFormatter& LocalizedNumberFormatter::operator=(LNF&& src) noexcept {
NFS<LNF>::operator=(static_cast<NFS<LNF>&&>(src));
lnfMoveHelper(std::move(src));
return *this;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/number_formatimpl.cpp b/Build/source/libs/icu/icu-src/source/i18n/number_formatimpl.cpp
index 4fb190b744b..53bac49a55c 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/number_formatimpl.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/number_formatimpl.cpp
@@ -36,7 +36,7 @@ int32_t NumberFormatterImpl::formatStatic(const MacroProps &macros, UFormattedNu
NumberFormatterImpl impl(macros, false, status);
MicroProps& micros = impl.preProcessUnsafe(inValue, status);
if (U_FAILURE(status)) { return 0; }
- int32_t length = writeNumber(micros, inValue, outString, 0, status);
+ int32_t length = writeNumber(micros.simple, inValue, outString, 0, status);
length += writeAffixes(micros, outString, 0, length, status);
results->outputUnit = std::move(micros.outputUnit);
results->gender = micros.gender;
@@ -61,7 +61,7 @@ int32_t NumberFormatterImpl::format(UFormattedNumberData *results, UErrorCode &s
MicroProps micros;
preProcess(inValue, micros, status);
if (U_FAILURE(status)) { return 0; }
- int32_t length = writeNumber(micros, inValue, outString, 0, status);
+ int32_t length = writeNumber(micros.simple, inValue, outString, 0, status);
length += writeAffixes(micros, outString, 0, length, status);
results->outputUnit = std::move(micros.outputUnit);
results->gender = micros.gender;
@@ -186,7 +186,7 @@ NumberFormatterImpl::macrosToMicroGenerator(const MacroProps& macros, bool safe,
// Resolve the symbols. Do this here because currency may need to customize them.
if (macros.symbols.isDecimalFormatSymbols()) {
- fMicros.symbols = macros.symbols.getDecimalFormatSymbols();
+ fMicros.simple.symbols = macros.symbols.getDecimalFormatSymbols();
} else {
LocalPointer<DecimalFormatSymbols> newSymbols(
new DecimalFormatSymbols(macros.locale, *ns, status), status);
@@ -199,15 +199,15 @@ NumberFormatterImpl::macrosToMicroGenerator(const MacroProps& macros, bool safe,
return nullptr;
}
}
- fMicros.symbols = newSymbols.getAlias();
+ fMicros.simple.symbols = newSymbols.getAlias();
fSymbols.adoptInstead(newSymbols.orphan());
}
// Load and parse the pattern string. It is used for grouping sizes and affixes only.
// If we are formatting currency, check for a currency-specific pattern.
const char16_t* pattern = nullptr;
- if (isCurrency && fMicros.symbols->getCurrencyPattern() != nullptr) {
- pattern = fMicros.symbols->getCurrencyPattern();
+ if (isCurrency && fMicros.simple.symbols->getCurrencyPattern() != nullptr) {
+ pattern = fMicros.simple.symbols->getCurrencyPattern();
}
if (pattern == nullptr) {
CldrPatternStyle patternStyle;
@@ -291,14 +291,14 @@ NumberFormatterImpl::macrosToMicroGenerator(const MacroProps& macros, bool safe,
// Grouping strategy
if (!macros.grouper.isBogus()) {
- fMicros.grouping = macros.grouper;
+ fMicros.simple.grouping = macros.grouper;
} else if (isCompactNotation) {
// Compact notation uses minGrouping by default since ICU 59
- fMicros.grouping = Grouper::forStrategy(UNUM_GROUPING_MIN2);
+ fMicros.simple.grouping = Grouper::forStrategy(UNUM_GROUPING_MIN2);
} else {
- fMicros.grouping = Grouper::forStrategy(UNUM_GROUPING_AUTO);
+ fMicros.simple.grouping = Grouper::forStrategy(UNUM_GROUPING_AUTO);
}
- fMicros.grouping.setLocaleData(*fPatternInfo, macros.locale);
+ fMicros.simple.grouping.setLocaleData(*fPatternInfo, macros.locale);
// Padding strategy
if (!macros.padder.isBogus()) {
@@ -323,17 +323,17 @@ NumberFormatterImpl::macrosToMicroGenerator(const MacroProps& macros, bool safe,
// Decimal mark display
if (macros.decimal != UNUM_DECIMAL_SEPARATOR_COUNT) {
- fMicros.decimal = macros.decimal;
+ fMicros.simple.decimal = macros.decimal;
} else {
- fMicros.decimal = UNUM_DECIMAL_SEPARATOR_AUTO;
+ fMicros.simple.decimal = UNUM_DECIMAL_SEPARATOR_AUTO;
}
// Use monetary separator symbols
- fMicros.useCurrency = isCurrency;
+ fMicros.simple.useCurrency = isCurrency;
// Inner modifier (scientific notation)
if (macros.notation.fType == Notation::NTN_SCIENTIFIC) {
- auto newScientificHandler = new ScientificHandler(&macros.notation, fMicros.symbols, chain);
+ auto newScientificHandler = new ScientificHandler(&macros.notation, fMicros.simple.symbols, chain);
if (newScientificHandler == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return nullptr;
@@ -362,13 +362,13 @@ NumberFormatterImpl::macrosToMicroGenerator(const MacroProps& macros, bool safe,
patternModifier->setPatternAttributes(fMicros.sign, isPermille, macros.approximately);
if (patternModifier->needsPlurals()) {
patternModifier->setSymbols(
- fMicros.symbols,
+ fMicros.simple.symbols,
currency,
unitWidth,
resolvePluralRules(macros.rules, macros.locale, status),
status);
} else {
- patternModifier->setSymbols(fMicros.symbols, currency, unitWidth, nullptr, status);
+ patternModifier->setSymbols(fMicros.simple.symbols, currency, unitWidth, nullptr, status);
}
if (safe) {
fImmutablePatternModifier.adoptInsteadAndCheckErrorCode(patternModifier->createImmutable(status),
@@ -380,7 +380,7 @@ NumberFormatterImpl::macrosToMicroGenerator(const MacroProps& macros, bool safe,
// currencyAsDecimal
if (affixProvider->currencyAsDecimal()) {
- fMicros.currencyAsDecimal = patternModifier->getCurrencySymbolForUnitWidth(status);
+ fMicros.simple.currencyAsDecimal = patternModifier->getCurrencySymbolForUnitWidth(status);
}
// Outer modifier (CLDR units and currency long names)
@@ -481,8 +481,10 @@ NumberFormatterImpl::macrosToMicroGenerator(const MacroProps& macros, bool safe,
}
const PluralRules*
-NumberFormatterImpl::resolvePluralRules(const PluralRules* rulesPtr, const Locale& locale,
- UErrorCode& status) {
+NumberFormatterImpl::resolvePluralRules(
+ const PluralRules* rulesPtr,
+ const Locale& locale,
+ UErrorCode& status) {
if (rulesPtr != nullptr) {
return rulesPtr;
}
@@ -493,8 +495,12 @@ NumberFormatterImpl::resolvePluralRules(const PluralRules* rulesPtr, const Local
return fRules.getAlias();
}
-int32_t NumberFormatterImpl::writeAffixes(const MicroProps& micros, FormattedStringBuilder& string,
- int32_t start, int32_t end, UErrorCode& status) {
+int32_t NumberFormatterImpl::writeAffixes(
+ const MicroProps& micros,
+ FormattedStringBuilder& string,
+ int32_t start,
+ int32_t end,
+ UErrorCode& status) {
U_ASSERT(micros.modOuter != nullptr);
// Always apply the inner modifier (which is "strong").
int32_t length = micros.modInner->apply(string, start, end, status);
@@ -508,9 +514,12 @@ int32_t NumberFormatterImpl::writeAffixes(const MicroProps& micros, FormattedStr
return length;
}
-int32_t NumberFormatterImpl::writeNumber(const MicroProps& micros, DecimalQuantity& quantity,
- FormattedStringBuilder& string, int32_t index,
- UErrorCode& status) {
+int32_t NumberFormatterImpl::writeNumber(
+ const SimpleMicroProps& micros,
+ DecimalQuantity& quantity,
+ FormattedStringBuilder& string,
+ int32_t index,
+ UErrorCode& status) {
int32_t length = 0;
if (quantity.isInfinite()) {
length += string.insert(
@@ -528,7 +537,12 @@ int32_t NumberFormatterImpl::writeNumber(const MicroProps& micros, DecimalQuanti
} else {
// Add the integer digits
- length += writeIntegerDigits(micros, quantity, string, length + index, status);
+ length += writeIntegerDigits(
+ micros,
+ quantity,
+ string,
+ length + index,
+ status);
// Add the decimal point
if (quantity.getLowerDisplayMagnitude() < 0 || micros.decimal == UNUM_DECIMAL_SEPARATOR_ALWAYS) {
@@ -573,9 +587,12 @@ int32_t NumberFormatterImpl::writeNumber(const MicroProps& micros, DecimalQuanti
return length;
}
-int32_t NumberFormatterImpl::writeIntegerDigits(const MicroProps& micros, DecimalQuantity& quantity,
- FormattedStringBuilder& string, int32_t index,
- UErrorCode& status) {
+int32_t NumberFormatterImpl::writeIntegerDigits(
+ const SimpleMicroProps& micros,
+ DecimalQuantity& quantity,
+ FormattedStringBuilder& string,
+ int32_t index,
+ UErrorCode& status) {
int length = 0;
int integerCount = quantity.getUpperDisplayMagnitude() + 1;
for (int i = 0; i < integerCount; i++) {
@@ -605,9 +622,12 @@ int32_t NumberFormatterImpl::writeIntegerDigits(const MicroProps& micros, Decima
return length;
}
-int32_t NumberFormatterImpl::writeFractionDigits(const MicroProps& micros, DecimalQuantity& quantity,
- FormattedStringBuilder& string, int32_t index,
- UErrorCode& status) {
+int32_t NumberFormatterImpl::writeFractionDigits(
+ const SimpleMicroProps& micros,
+ DecimalQuantity& quantity,
+ FormattedStringBuilder& string,
+ int32_t index,
+ UErrorCode& status) {
int length = 0;
int fractionCount = -quantity.getLowerDisplayMagnitude();
for (int i = 0; i < fractionCount; i++) {
diff --git a/Build/source/libs/icu/icu-src/source/i18n/number_formatimpl.h b/Build/source/libs/icu/icu-src/source/i18n/number_formatimpl.h
index d7be1468b6d..62d53212616 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/number_formatimpl.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/number_formatimpl.h
@@ -79,14 +79,22 @@ class NumberFormatterImpl : public UMemory {
* Synthesizes the output string from a MicroProps and DecimalQuantity.
* This method formats only the main number, not affixes.
*/
- static int32_t writeNumber(const MicroProps& micros, DecimalQuantity& quantity,
- FormattedStringBuilder& string, int32_t index, UErrorCode& status);
+ static int32_t writeNumber(
+ const SimpleMicroProps& micros,
+ DecimalQuantity& quantity,
+ FormattedStringBuilder& string,
+ int32_t index,
+ UErrorCode& status);
/**
* Adds the affixes. Intended to be called immediately after formatNumber.
*/
- static int32_t writeAffixes(const MicroProps& micros, FormattedStringBuilder& string, int32_t start,
- int32_t end, UErrorCode& status);
+ static int32_t writeAffixes(
+ const MicroProps& micros,
+ FormattedStringBuilder& string,
+ int32_t start,
+ int32_t end,
+ UErrorCode& status);
private:
// Head of the MicroPropsGenerator linked list. Subclasses' processQuantity
@@ -146,12 +154,20 @@ class NumberFormatterImpl : public UMemory {
macrosToMicroGenerator(const MacroProps &macros, bool safe, UErrorCode &status);
static int32_t
- writeIntegerDigits(const MicroProps &micros, DecimalQuantity &quantity, FormattedStringBuilder &string,
- int32_t index, UErrorCode &status);
+ writeIntegerDigits(
+ const SimpleMicroProps& micros,
+ DecimalQuantity &quantity,
+ FormattedStringBuilder &string,
+ int32_t index,
+ UErrorCode &status);
static int32_t
- writeFractionDigits(const MicroProps &micros, DecimalQuantity &quantity, FormattedStringBuilder &string,
- int32_t index, UErrorCode &status);
+ writeFractionDigits(
+ const SimpleMicroProps& micros,
+ DecimalQuantity &quantity,
+ FormattedStringBuilder &string,
+ int32_t index,
+ UErrorCode &status);
};
} // namespace impl
diff --git a/Build/source/libs/icu/icu-src/source/i18n/number_grouping.cpp b/Build/source/libs/icu/icu-src/source/i18n/number_grouping.cpp
index 9ba639e67e2..54aeffee811 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/number_grouping.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/number_grouping.cpp
@@ -18,7 +18,7 @@ namespace {
int16_t getMinGroupingForLocale(const Locale& locale) {
// TODO: Cache this?
UErrorCode localStatus = U_ZERO_ERROR;
- LocalUResourceBundlePointer bundle(ures_open(NULL, locale.getName(), &localStatus));
+ LocalUResourceBundlePointer bundle(ures_open(nullptr, locale.getName(), &localStatus));
int32_t resultLen = 0;
const char16_t* result = ures_getStringByKeyWithFallback(
bundle.getAlias(),
diff --git a/Build/source/libs/icu/icu-src/source/i18n/number_longnames.cpp b/Build/source/libs/icu/icu-src/source/i18n/number_longnames.cpp
index be0320cecf2..96c6ca6bf89 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/number_longnames.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/number_longnames.cpp
@@ -151,7 +151,7 @@ enum PlaceholderPosition { PH_EMPTY, PH_NONE, PH_BEGINNING, PH_MIDDLE, PH_END };
void extractCorePattern(const UnicodeString &pattern,
UnicodeString &coreUnit,
PlaceholderPosition &placeholderPosition,
- UChar &joinerChar) {
+ char16_t &joinerChar) {
joinerChar = 0;
int32_t len = pattern.length();
if (pattern.startsWith(u"{0}", 3)) {
@@ -209,7 +209,7 @@ getGenderForBuiltin(const Locale &locale, const MeasureUnit &builtinUnit, UError
UErrorCode localStatus = status;
int32_t resultLen = 0;
- const UChar *result =
+ const char16_t *result =
ures_getStringByKeyWithFallback(unitsBundle.getAlias(), key.data(), &resultLen, &localStatus);
if (U_SUCCESS(localStatus)) {
status = localStatus;
@@ -258,7 +258,7 @@ class InflectedPluralSink : public ResourceSink {
}
// See ResourceSink::put().
- void put(const char *key, ResourceValue &value, UBool /*noFallback*/, UErrorCode &status) U_OVERRIDE {
+ void put(const char *key, ResourceValue &value, UBool /*noFallback*/, UErrorCode &status) override {
int32_t pluralIndex = getIndex(key, status);
if (U_FAILURE(status)) { return; }
if (!outArray[pluralIndex].isBogus()) {
@@ -384,7 +384,7 @@ class PluralTableSink : public ResourceSink {
}
}
- void put(const char *key, ResourceValue &value, UBool /*noFallback*/, UErrorCode &status) U_OVERRIDE {
+ void put(const char *key, ResourceValue &value, UBool /*noFallback*/, UErrorCode &status) override {
if (uprv_strcmp(key, "case") == 0) {
return;
}
@@ -560,7 +560,7 @@ UnicodeString getCompoundValue(StringPiece compoundKey,
UErrorCode localStatus = status;
int32_t len = 0;
- const UChar *ptr =
+ const char16_t *ptr =
ures_getStringByKeyWithFallback(unitsBundle.getAlias(), key.data(), &len, &localStatus);
if (U_FAILURE(localStatus) && width != UNUM_UNIT_WIDTH_SHORT) {
// Fall back to short, which contains more compound data
@@ -606,7 +606,7 @@ class DerivedComponents {
*/
DerivedComponents(const Locale &locale, const char *feature, const char *structure) {
StackUResourceBundle derivationsBundle, stackBundle;
- ures_openDirectFillIn(derivationsBundle.getAlias(), NULL, "grammaticalFeatures", &status);
+ ures_openDirectFillIn(derivationsBundle.getAlias(), nullptr, "grammaticalFeatures", &status);
ures_getByKey(derivationsBundle.getAlias(), "grammaticalData", derivationsBundle.getAlias(),
&status);
ures_getByKey(derivationsBundle.getAlias(), "derivations", derivationsBundle.getAlias(),
@@ -695,7 +695,7 @@ class DerivedComponents {
UnicodeString
getDeriveCompoundRule(Locale locale, const char *feature, const char *structure, UErrorCode &status) {
StackUResourceBundle derivationsBundle, stackBundle;
- ures_openDirectFillIn(derivationsBundle.getAlias(), NULL, "grammaticalFeatures", &status);
+ ures_openDirectFillIn(derivationsBundle.getAlias(), nullptr, "grammaticalFeatures", &status);
ures_getByKey(derivationsBundle.getAlias(), "grammaticalData", derivationsBundle.getAlias(),
&status);
ures_getByKey(derivationsBundle.getAlias(), "derivations", derivationsBundle.getAlias(), &status);
@@ -759,7 +759,7 @@ UnicodeString getDerivedGender(Locale locale,
////////////////////////
// TODO: promote this somewhere? It's based on patternprops.cpp' trimWhitespace
-const UChar *trimSpaceChars(const UChar *s, int32_t &length) {
+const char16_t *trimSpaceChars(const char16_t *s, int32_t &length) {
if (length <= 0 || (!u_isJavaSpaceChar(s[0]) && !u_isJavaSpaceChar(s[length - 1]))) {
return s;
}
@@ -1053,7 +1053,7 @@ void LongNameHandler::forArbitraryUnit(const Locale &loc,
}
UnicodeString denominatorPattern = denominatorFormatter.getTextWithNoArguments();
int32_t trimmedLen = denominatorPattern.length();
- const UChar *trimmed = trimSpaceChars(denominatorPattern.getBuffer(), trimmedLen);
+ const char16_t *trimmed = trimSpaceChars(denominatorPattern.getBuffer(), trimmedLen);
UnicodeString denominatorString(false, trimmed, trimmedLen);
// 9. If the denominatorString is empty, set result to
// [numeratorString], otherwise set result to format(perPattern,
@@ -1144,7 +1144,7 @@ void LongNameHandler::processPatternTimes(MeasureUnitImpl &&productUnit,
}
PlaceholderPosition globalPlaceholder[ARRAY_LENGTH];
- UChar globalJoinerChar = 0;
+ char16_t globalJoinerChar = 0;
// Numbered list items are from the algorithms at
// https://unicode.org/reports/tr35/tr35-general.html#compound-units:
//
@@ -1341,7 +1341,7 @@ void LongNameHandler::processPatternTimes(MeasureUnitImpl &&productUnit,
// 4.6. Extract(corePattern, coreUnit, placeholder, placeholderPosition) from that pattern.
UnicodeString coreUnit;
PlaceholderPosition placeholderPosition;
- UChar joinerChar;
+ char16_t joinerChar;
extractCorePattern(getWithPlural(singleUnitArray, plural, status), coreUnit,
placeholderPosition, joinerChar);
@@ -1529,7 +1529,7 @@ void LongNameHandler::multiSimpleFormatsToModifiers(const UnicodeString *leadFor
void LongNameHandler::processQuantity(DecimalQuantity &quantity, MicroProps &micros,
UErrorCode &status) const {
- if (parent != NULL) {
+ if (parent != nullptr) {
parent->processQuantity(quantity, micros, status);
}
StandardPlural::Form pluralForm = utils::getPluralSafe(micros.rounder, rules, quantity, status);
@@ -1726,12 +1726,12 @@ LongNameMultiplexer *LongNameMultiplexer::forMeasureUnits(const Locale &loc,
result->fMeasureUnits[i] = unit;
if (unit.getComplexity(status) == UMEASURE_UNIT_MIXED) {
MixedUnitLongNameHandler *mlnh = result->fMixedUnitHandlers.createAndCheckErrorCode(status);
- MixedUnitLongNameHandler::forMeasureUnit(loc, unit, width, unitDisplayCase, rules, NULL,
+ MixedUnitLongNameHandler::forMeasureUnit(loc, unit, width, unitDisplayCase, rules, nullptr,
mlnh, status);
result->fHandlers[i] = mlnh;
} else {
LongNameHandler *lnh = result->fLongNameHandlers.createAndCheckErrorCode(status);
- LongNameHandler::forMeasureUnit(loc, unit, width, unitDisplayCase, rules, NULL, lnh, status);
+ LongNameHandler::forMeasureUnit(loc, unit, width, unitDisplayCase, rules, nullptr, lnh, status);
result->fHandlers[i] = lnh;
}
if (U_FAILURE(status)) {
diff --git a/Build/source/libs/icu/icu-src/source/i18n/number_longnames.h b/Build/source/libs/icu/icu-src/source/i18n/number_longnames.h
index 06949989d7f..56d8c9b24e8 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/number_longnames.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/number_longnames.h
@@ -71,9 +71,9 @@ class LongNameHandler : public MicroPropsGenerator, public ModifierStore, public
* on the plural form.
*/
void
- processQuantity(DecimalQuantity &quantity, MicroProps &micros, UErrorCode &status) const U_OVERRIDE;
+ processQuantity(DecimalQuantity &quantity, MicroProps &micros, UErrorCode &status) const override;
- const Modifier* getModifier(Signum signum, StandardPlural::Form plural) const U_OVERRIDE;
+ const Modifier* getModifier(Signum signum, StandardPlural::Form plural) const override;
private:
// A set of pre-computed modifiers, one for each plural form.
@@ -168,12 +168,12 @@ class MixedUnitLongNameHandler : public MicroPropsGenerator, public ModifierStor
* provided via `micros.mixedMeasures`.
*/
void processQuantity(DecimalQuantity &quantity, MicroProps &micros,
- UErrorCode &status) const U_OVERRIDE;
+ UErrorCode &status) const override;
// Required for ModifierStore. And ModifierStore is required by
// SimpleModifier constructor's last parameter. We assert his will never get
// called though.
- const Modifier *getModifier(Signum signum, StandardPlural::Form plural) const U_OVERRIDE;
+ const Modifier *getModifier(Signum signum, StandardPlural::Form plural) const override;
private:
// Not owned
@@ -241,7 +241,7 @@ class LongNameMultiplexer : public MicroPropsGenerator, public UMemory {
// The output unit must be provided via `micros.outputUnit`, it must match
// one of the units provided to the factory function.
void processQuantity(DecimalQuantity &quantity, MicroProps &micros,
- UErrorCode &status) const U_OVERRIDE;
+ UErrorCode &status) const override;
private:
/**
diff --git a/Build/source/libs/icu/icu-src/source/i18n/number_mapper.h b/Build/source/libs/icu/icu-src/source/i18n/number_mapper.h
index 8879b7a94ea..c01607e5688 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/number_mapper.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/number_mapper.h
@@ -38,25 +38,25 @@ class PropertiesAffixPatternProvider : public AffixPatternProvider, public UMemo
// AffixPatternProvider Methods:
- char16_t charAt(int32_t flags, int32_t i) const U_OVERRIDE;
+ char16_t charAt(int32_t flags, int32_t i) const override;
- int32_t length(int32_t flags) const U_OVERRIDE;
+ int32_t length(int32_t flags) const override;
- UnicodeString getString(int32_t flags) const U_OVERRIDE;
+ UnicodeString getString(int32_t flags) const override;
- bool hasCurrencySign() const U_OVERRIDE;
+ bool hasCurrencySign() const override;
- bool positiveHasPlusSign() const U_OVERRIDE;
+ bool positiveHasPlusSign() const override;
- bool hasNegativeSubpattern() const U_OVERRIDE;
+ bool hasNegativeSubpattern() const override;
- bool negativeHasMinusSign() const U_OVERRIDE;
+ bool negativeHasMinusSign() const override;
- bool containsSymbolType(AffixPatternType, UErrorCode&) const U_OVERRIDE;
+ bool containsSymbolType(AffixPatternType, UErrorCode&) const override;
- bool hasBody() const U_OVERRIDE;
+ bool hasBody() const override;
- bool currencyAsDecimal() const U_OVERRIDE;
+ bool currencyAsDecimal() const override;
private:
UnicodeString posPrefix;
@@ -92,25 +92,25 @@ class CurrencyPluralInfoAffixProvider : public AffixPatternProvider, public UMem
// AffixPatternProvider Methods:
- char16_t charAt(int32_t flags, int32_t i) const U_OVERRIDE;
+ char16_t charAt(int32_t flags, int32_t i) const override;
- int32_t length(int32_t flags) const U_OVERRIDE;
+ int32_t length(int32_t flags) const override;
- UnicodeString getString(int32_t flags) const U_OVERRIDE;
+ UnicodeString getString(int32_t flags) const override;
- bool hasCurrencySign() const U_OVERRIDE;
+ bool hasCurrencySign() const override;
- bool positiveHasPlusSign() const U_OVERRIDE;
+ bool positiveHasPlusSign() const override;
- bool hasNegativeSubpattern() const U_OVERRIDE;
+ bool hasNegativeSubpattern() const override;
- bool negativeHasMinusSign() const U_OVERRIDE;
+ bool negativeHasMinusSign() const override;
- bool containsSymbolType(AffixPatternType, UErrorCode&) const U_OVERRIDE;
+ bool containsSymbolType(AffixPatternType, UErrorCode&) const override;
- bool hasBody() const U_OVERRIDE;
+ bool hasBody() const override;
- bool currencyAsDecimal() const U_OVERRIDE;
+ bool currencyAsDecimal() const override;
private:
PropertiesAffixPatternProvider affixesByPlural[StandardPlural::COUNT];
diff --git a/Build/source/libs/icu/icu-src/source/i18n/number_microprops.h b/Build/source/libs/icu/icu-src/source/i18n/number_microprops.h
index c34e7c17e97..18addaae087 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/number_microprops.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/number_microprops.h
@@ -67,33 +67,39 @@ class IntMeasures : public MaybeStackArray<int64_t, 2> {
UErrorCode status = U_ZERO_ERROR;
};
+struct SimpleMicroProps : public UMemory {
+ Grouper grouping;
+ bool useCurrency = false;
+ UNumberDecimalSeparatorDisplay decimal = UNUM_DECIMAL_SEPARATOR_AUTO;
+
+ // Currency symbol to be used as the decimal separator
+ UnicodeString currencyAsDecimal = ICU_Utility::makeBogusString();
+
+ // Note: This struct has no direct ownership of the following pointer.
+ const DecimalFormatSymbols* symbols = nullptr;
+};
+
/**
* MicroProps is the first MicroPropsGenerator that should be should be called,
* producing an initialized MicroProps instance that will be passed on and
* modified throughout the rest of the chain of MicroPropsGenerator instances.
*/
struct MicroProps : public MicroPropsGenerator {
+ SimpleMicroProps simple;
// NOTE: All of these fields are properly initialized in NumberFormatterImpl.
RoundingImpl rounder;
- Grouper grouping;
Padder padding;
IntegerWidth integerWidth;
UNumberSignDisplay sign;
- UNumberDecimalSeparatorDisplay decimal;
- bool useCurrency;
char nsName[9];
- // Currency symbol to be used as the decimal separator
- UnicodeString currencyAsDecimal = ICU_Utility::makeBogusString();
-
// No ownership: must point at a string which will outlive MicroProps
// instances, e.g. a string with static storage duration, or just a string
// that will never be deallocated or modified.
const char *gender;
// Note: This struct has no direct ownership of the following pointers.
- const DecimalFormatSymbols* symbols;
// Pointers to Modifiers provided by the number formatting pipeline (when
// the value is known):
@@ -162,7 +168,7 @@ struct MicroProps : public MicroPropsGenerator {
* not already `*this`, it will be overwritten with a copy of `*this`.
*/
void processQuantity(DecimalQuantity &quantity, MicroProps &micros,
- UErrorCode &status) const U_OVERRIDE {
+ UErrorCode &status) const override {
(void) quantity;
(void) status;
if (this == &micros) {
diff --git a/Build/source/libs/icu/icu-src/source/i18n/number_modifiers.cpp b/Build/source/libs/icu/icu-src/source/i18n/number_modifiers.cpp
index 092b66ff579..0f6fdafb093 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/number_modifiers.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/number_modifiers.cpp
@@ -62,12 +62,21 @@ Modifier::Parameters::Parameters(
ModifierStore::~ModifierStore() = default;
-AdoptingModifierStore::~AdoptingModifierStore() {
+AdoptingSignumModifierStore::~AdoptingSignumModifierStore() {
for (const Modifier *mod : mods) {
delete mod;
}
}
+AdoptingSignumModifierStore&
+AdoptingSignumModifierStore::operator=(AdoptingSignumModifierStore&& other) noexcept {
+ for (size_t i=0; i<SIGNUM_COUNT; i++) {
+ this->mods[i] = other.mods[i];
+ other.mods[i] = nullptr;
+ }
+ return *this;
+}
+
int32_t ConstantAffixModifier::apply(FormattedStringBuilder &output, int leftIndex, int rightIndex,
UErrorCode &status) const {
diff --git a/Build/source/libs/icu/icu-src/source/i18n/number_modifiers.h b/Build/source/libs/icu/icu-src/source/i18n/number_modifiers.h
index 09af3f48813..da6956bcfb4 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/number_modifiers.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/number_modifiers.h
@@ -29,19 +29,19 @@ class U_I18N_API ConstantAffixModifier : public Modifier, public UObject {
: fPrefix(prefix), fSuffix(suffix), fField(field), fStrong(strong) {}
int32_t apply(FormattedStringBuilder &output, int32_t leftIndex, int32_t rightIndex,
- UErrorCode &status) const U_OVERRIDE;
+ UErrorCode &status) const override;
- int32_t getPrefixLength() const U_OVERRIDE;
+ int32_t getPrefixLength() const override;
- int32_t getCodePointCount() const U_OVERRIDE;
+ int32_t getCodePointCount() const override;
- bool isStrong() const U_OVERRIDE;
+ bool isStrong() const override;
- bool containsField(Field field) const U_OVERRIDE;
+ bool containsField(Field field) const override;
- void getParameters(Parameters& output) const U_OVERRIDE;
+ void getParameters(Parameters& output) const override;
- bool semanticallyEquivalent(const Modifier& other) const U_OVERRIDE;
+ bool semanticallyEquivalent(const Modifier& other) const override;
private:
UnicodeString fPrefix;
@@ -65,19 +65,19 @@ class U_I18N_API SimpleModifier : public Modifier, public UMemory {
SimpleModifier();
int32_t apply(FormattedStringBuilder &output, int32_t leftIndex, int32_t rightIndex,
- UErrorCode &status) const U_OVERRIDE;
+ UErrorCode &status) const override;
- int32_t getPrefixLength() const U_OVERRIDE;
+ int32_t getPrefixLength() const override;
- int32_t getCodePointCount() const U_OVERRIDE;
+ int32_t getCodePointCount() const override;
- bool isStrong() const U_OVERRIDE;
+ bool isStrong() const override;
- bool containsField(Field field) const U_OVERRIDE;
+ bool containsField(Field field) const override;
- void getParameters(Parameters& output) const U_OVERRIDE;
+ void getParameters(Parameters& output) const override;
- bool semanticallyEquivalent(const Modifier& other) const U_OVERRIDE;
+ bool semanticallyEquivalent(const Modifier& other) const override;
/**
* TODO: This belongs in SimpleFormatterImpl. The only reason I haven't moved it there yet is because
@@ -158,19 +158,19 @@ class U_I18N_API ConstantMultiFieldModifier : public Modifier, public UMemory {
fStrong(strong) {}
int32_t apply(FormattedStringBuilder &output, int32_t leftIndex, int32_t rightIndex,
- UErrorCode &status) const U_OVERRIDE;
+ UErrorCode &status) const override;
- int32_t getPrefixLength() const U_OVERRIDE;
+ int32_t getPrefixLength() const override;
- int32_t getCodePointCount() const U_OVERRIDE;
+ int32_t getCodePointCount() const override;
- bool isStrong() const U_OVERRIDE;
+ bool isStrong() const override;
- bool containsField(Field field) const U_OVERRIDE;
+ bool containsField(Field field) const override;
- void getParameters(Parameters& output) const U_OVERRIDE;
+ void getParameters(Parameters& output) const override;
- bool semanticallyEquivalent(const Modifier& other) const U_OVERRIDE;
+ bool semanticallyEquivalent(const Modifier& other) const override;
protected:
// NOTE: In Java, these are stored as array pointers. In C++, the FormattedStringBuilder is stored by
@@ -195,7 +195,7 @@ class U_I18N_API CurrencySpacingEnabledModifier : public ConstantMultiFieldModif
UErrorCode &status);
int32_t apply(FormattedStringBuilder &output, int32_t leftIndex, int32_t rightIndex,
- UErrorCode &status) const U_OVERRIDE;
+ UErrorCode &status) const override;
/** Unsafe code path */
static int32_t
@@ -235,7 +235,7 @@ class U_I18N_API EmptyModifier : public Modifier, public UMemory {
explicit EmptyModifier(bool isStrong) : fStrong(isStrong) {}
int32_t apply(FormattedStringBuilder &output, int32_t leftIndex, int32_t rightIndex,
- UErrorCode &status) const U_OVERRIDE {
+ UErrorCode &status) const override {
(void)output;
(void)leftIndex;
(void)rightIndex;
@@ -243,28 +243,28 @@ class U_I18N_API EmptyModifier : public Modifier, public UMemory {
return 0;
}
- int32_t getPrefixLength() const U_OVERRIDE {
+ int32_t getPrefixLength() const override {
return 0;
}
- int32_t getCodePointCount() const U_OVERRIDE {
+ int32_t getCodePointCount() const override {
return 0;
}
- bool isStrong() const U_OVERRIDE {
+ bool isStrong() const override {
return fStrong;
}
- bool containsField(Field field) const U_OVERRIDE {
+ bool containsField(Field field) const override {
(void)field;
return false;
}
- void getParameters(Parameters& output) const U_OVERRIDE {
+ void getParameters(Parameters& output) const override {
output.obj = nullptr;
}
- bool semanticallyEquivalent(const Modifier& other) const U_OVERRIDE {
+ bool semanticallyEquivalent(const Modifier& other) const override {
return other.getCodePointCount() == 0;
}
@@ -272,13 +272,45 @@ class U_I18N_API EmptyModifier : public Modifier, public UMemory {
bool fStrong;
};
+/** An adopting Modifier store that varies by signum but not plural form. */
+class U_I18N_API AdoptingSignumModifierStore : public UMemory {
+ public:
+ virtual ~AdoptingSignumModifierStore();
+
+ AdoptingSignumModifierStore() = default;
+
+ // No copying!
+ AdoptingSignumModifierStore(const AdoptingSignumModifierStore &other) = delete;
+ AdoptingSignumModifierStore& operator=(const AdoptingSignumModifierStore& other) = delete;
+
+ // Moving is OK
+ AdoptingSignumModifierStore(AdoptingSignumModifierStore &&other) noexcept {
+ *this = std::move(other);
+ }
+ AdoptingSignumModifierStore& operator=(AdoptingSignumModifierStore&& other) noexcept;
+
+ /** Take ownership of the Modifier and slot it in at the given Signum. */
+ void adoptModifier(Signum signum, const Modifier* mod) {
+ U_ASSERT(mods[signum] == nullptr);
+ mods[signum] = mod;
+ }
+
+ inline const Modifier*& operator[](Signum signum) {
+ return mods[signum];
+ }
+ inline Modifier const* operator[](Signum signum) const {
+ return mods[signum];
+ }
+
+ private:
+ const Modifier* mods[SIGNUM_COUNT] = {};
+};
+
/**
* This implementation of ModifierStore adopts Modifier pointers.
*/
class U_I18N_API AdoptingModifierStore : public ModifierStore, public UMemory {
public:
- virtual ~AdoptingModifierStore();
-
static constexpr StandardPlural::Form DEFAULT_STANDARD_PLURAL = StandardPlural::OTHER;
AdoptingModifierStore() = default;
@@ -286,46 +318,36 @@ class U_I18N_API AdoptingModifierStore : public ModifierStore, public UMemory {
// No copying!
AdoptingModifierStore(const AdoptingModifierStore &other) = delete;
- /**
- * Sets the Modifier with the specified signum and plural form.
- */
- void adoptModifier(Signum signum, StandardPlural::Form plural, const Modifier *mod) {
- U_ASSERT(mods[getModIndex(signum, plural)] == nullptr);
- mods[getModIndex(signum, plural)] = mod;
+ // Moving is OK
+ AdoptingModifierStore(AdoptingModifierStore &&other) = default;
+
+ /** Sets the modifiers for a specific plural form. */
+ void adoptSignumModifierStore(StandardPlural::Form plural, AdoptingSignumModifierStore other) {
+ mods[plural] = std::move(other);
}
- /**
- * Sets the Modifier with the specified signum.
- * The modifier will apply to all plural forms.
- */
- void adoptModifierWithoutPlural(Signum signum, const Modifier *mod) {
- U_ASSERT(mods[getModIndex(signum, DEFAULT_STANDARD_PLURAL)] == nullptr);
- mods[getModIndex(signum, DEFAULT_STANDARD_PLURAL)] = mod;
+ /** Sets the modifiers for the default plural form. */
+ void adoptSignumModifierStoreNoPlural(AdoptingSignumModifierStore other) {
+ mods[DEFAULT_STANDARD_PLURAL] = std::move(other);
}
/** Returns a reference to the modifier; no ownership change. */
- const Modifier *getModifier(Signum signum, StandardPlural::Form plural) const U_OVERRIDE {
- const Modifier* modifier = mods[getModIndex(signum, plural)];
+ const Modifier *getModifier(Signum signum, StandardPlural::Form plural) const override {
+ const Modifier* modifier = mods[plural][signum];
if (modifier == nullptr && plural != DEFAULT_STANDARD_PLURAL) {
- modifier = mods[getModIndex(signum, DEFAULT_STANDARD_PLURAL)];
+ modifier = mods[DEFAULT_STANDARD_PLURAL][signum];
}
return modifier;
}
/** Returns a reference to the modifier; no ownership change. */
const Modifier *getModifierWithoutPlural(Signum signum) const {
- return mods[getModIndex(signum, DEFAULT_STANDARD_PLURAL)];
+ return mods[DEFAULT_STANDARD_PLURAL][signum];
}
private:
// NOTE: mods is zero-initialized (to nullptr)
- const Modifier *mods[4 * StandardPlural::COUNT] = {};
-
- inline static int32_t getModIndex(Signum signum, StandardPlural::Form plural) {
- U_ASSERT(signum >= 0 && signum < SIGNUM_COUNT);
- U_ASSERT(plural >= 0 && plural < StandardPlural::COUNT);
- return static_cast<int32_t>(plural) * SIGNUM_COUNT + signum;
- }
+ AdoptingSignumModifierStore mods[StandardPlural::COUNT] = {};
};
} // namespace impl
diff --git a/Build/source/libs/icu/icu-src/source/i18n/number_multiplier.cpp b/Build/source/libs/icu/icu-src/source/i18n/number_multiplier.cpp
index 58e1e441bd2..dd5b3f8e069 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/number_multiplier.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/number_multiplier.cpp
@@ -58,13 +58,13 @@ Scale& Scale::operator=(const Scale& other) {
return *this;
}
-Scale::Scale(Scale&& src) U_NOEXCEPT
+Scale::Scale(Scale&& src) noexcept
: fMagnitude(src.fMagnitude), fArbitrary(src.fArbitrary), fError(src.fError) {
// Take ownership away from src if necessary
src.fArbitrary = nullptr;
}
-Scale& Scale::operator=(Scale&& src) U_NOEXCEPT {
+Scale& Scale::operator=(Scale&& src) noexcept {
fMagnitude = src.fMagnitude;
if (fArbitrary != nullptr) {
delete fArbitrary;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/number_multiplier.h b/Build/source/libs/icu/icu-src/source/i18n/number_multiplier.h
index d8235dc601b..c752935b783 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/number_multiplier.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/number_multiplier.h
@@ -25,7 +25,7 @@ class U_I18N_API MultiplierFormatHandler : public MicroPropsGenerator, public UM
void setAndChain(const Scale& multiplier, const MicroPropsGenerator* parent);
void processQuantity(DecimalQuantity& quantity, MicroProps& micros,
- UErrorCode& status) const U_OVERRIDE;
+ UErrorCode& status) const override;
private:
Scale fMultiplier;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/number_patternmodifier.cpp b/Build/source/libs/icu/icu-src/source/i18n/number_patternmodifier.cpp
index 088a30ecd7f..6f398c6acf0 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/number_patternmodifier.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/number_patternmodifier.cpp
@@ -60,6 +60,21 @@ bool MutablePatternModifier::needsPlurals() const {
// Silently ignore any error codes.
}
+AdoptingSignumModifierStore MutablePatternModifier::createImmutableForPlural(StandardPlural::Form plural, UErrorCode& status) {
+ AdoptingSignumModifierStore pm;
+
+ setNumberProperties(SIGNUM_POS, plural);
+ pm.adoptModifier(SIGNUM_POS, createConstantModifier(status));
+ setNumberProperties(SIGNUM_NEG_ZERO, plural);
+ pm.adoptModifier(SIGNUM_NEG_ZERO, createConstantModifier(status));
+ setNumberProperties(SIGNUM_POS_ZERO, plural);
+ pm.adoptModifier(SIGNUM_POS_ZERO, createConstantModifier(status));
+ setNumberProperties(SIGNUM_NEG, plural);
+ pm.adoptModifier(SIGNUM_NEG, createConstantModifier(status));
+
+ return pm;
+}
+
ImmutablePatternModifier* MutablePatternModifier::createImmutable(UErrorCode& status) {
// TODO: Move StandardPlural VALUES to standardplural.h
static const StandardPlural::Form STANDARD_PLURAL_VALUES[] = {
@@ -79,14 +94,7 @@ ImmutablePatternModifier* MutablePatternModifier::createImmutable(UErrorCode& st
if (needsPlurals()) {
// Slower path when we require the plural keyword.
for (StandardPlural::Form plural : STANDARD_PLURAL_VALUES) {
- setNumberProperties(SIGNUM_POS, plural);
- pm->adoptModifier(SIGNUM_POS, plural, createConstantModifier(status));
- setNumberProperties(SIGNUM_NEG_ZERO, plural);
- pm->adoptModifier(SIGNUM_NEG_ZERO, plural, createConstantModifier(status));
- setNumberProperties(SIGNUM_POS_ZERO, plural);
- pm->adoptModifier(SIGNUM_POS_ZERO, plural, createConstantModifier(status));
- setNumberProperties(SIGNUM_NEG, plural);
- pm->adoptModifier(SIGNUM_NEG, plural, createConstantModifier(status));
+ pm->adoptSignumModifierStore(plural, createImmutableForPlural(plural, status));
}
if (U_FAILURE(status)) {
delete pm;
@@ -95,14 +103,7 @@ ImmutablePatternModifier* MutablePatternModifier::createImmutable(UErrorCode& st
return new ImmutablePatternModifier(pm, fRules); // adopts pm
} else {
// Faster path when plural keyword is not needed.
- setNumberProperties(SIGNUM_POS, StandardPlural::Form::COUNT);
- pm->adoptModifierWithoutPlural(SIGNUM_POS, createConstantModifier(status));
- setNumberProperties(SIGNUM_NEG_ZERO, StandardPlural::Form::COUNT);
- pm->adoptModifierWithoutPlural(SIGNUM_NEG_ZERO, createConstantModifier(status));
- setNumberProperties(SIGNUM_POS_ZERO, StandardPlural::Form::COUNT);
- pm->adoptModifierWithoutPlural(SIGNUM_POS_ZERO, createConstantModifier(status));
- setNumberProperties(SIGNUM_NEG, StandardPlural::Form::COUNT);
- pm->adoptModifierWithoutPlural(SIGNUM_NEG, createConstantModifier(status));
+ pm->adoptSignumModifierStoreNoPlural(createImmutableForPlural(StandardPlural::Form::COUNT, status));
if (U_FAILURE(status)) {
delete pm;
return nullptr;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/number_patternmodifier.h b/Build/source/libs/icu/icu-src/source/i18n/number_patternmodifier.h
index 4f825e1ed21..ee38c20c9c9 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/number_patternmodifier.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/number_patternmodifier.h
@@ -42,9 +42,9 @@ class MutablePatternModifier;
// Exported as U_I18N_API because it is needed for the unit test PatternModifierTest
class U_I18N_API ImmutablePatternModifier : public MicroPropsGenerator, public UMemory {
public:
- ~ImmutablePatternModifier() U_OVERRIDE = default;
+ ~ImmutablePatternModifier() override = default;
- void processQuantity(DecimalQuantity&, MicroProps& micros, UErrorCode& status) const U_OVERRIDE;
+ void processQuantity(DecimalQuantity&, MicroProps& micros, UErrorCode& status) const override;
void applyToMicros(MicroProps& micros, const DecimalQuantity& quantity, UErrorCode& status) const;
@@ -89,7 +89,7 @@ class U_I18N_API MutablePatternModifier
public UMemory {
public:
- ~MutablePatternModifier() U_OVERRIDE = default;
+ ~MutablePatternModifier() override = default;
/**
* @param isStrong
@@ -156,6 +156,9 @@ class U_I18N_API MutablePatternModifier
*/
bool needsPlurals() const;
+ /** Creates a quantity-dependent Modifier for the specified plural form. */
+ AdoptingSignumModifierStore createImmutableForPlural(StandardPlural::Form plural, UErrorCode& status);
+
/**
* Creates a new quantity-dependent Modifier that behaves the same as the current instance, but which is immutable
* and can be saved for future use. The number properties in the current instance are mutated; all other properties
@@ -173,27 +176,27 @@ class U_I18N_API MutablePatternModifier
MicroPropsGenerator &addToChain(const MicroPropsGenerator *parent);
- void processQuantity(DecimalQuantity &, MicroProps &micros, UErrorCode &status) const U_OVERRIDE;
+ void processQuantity(DecimalQuantity &, MicroProps &micros, UErrorCode &status) const override;
int32_t apply(FormattedStringBuilder &output, int32_t leftIndex, int32_t rightIndex,
- UErrorCode &status) const U_OVERRIDE;
+ UErrorCode &status) const override;
- int32_t getPrefixLength() const U_OVERRIDE;
+ int32_t getPrefixLength() const override;
- int32_t getCodePointCount() const U_OVERRIDE;
+ int32_t getCodePointCount() const override;
- bool isStrong() const U_OVERRIDE;
+ bool isStrong() const override;
- bool containsField(Field field) const U_OVERRIDE;
+ bool containsField(Field field) const override;
- void getParameters(Parameters& output) const U_OVERRIDE;
+ void getParameters(Parameters& output) const override;
- bool semanticallyEquivalent(const Modifier& other) const U_OVERRIDE;
+ bool semanticallyEquivalent(const Modifier& other) const override;
/**
* Returns the string that substitutes a given symbol type in a pattern.
*/
- UnicodeString getSymbol(AffixPatternType type) const U_OVERRIDE;
+ UnicodeString getSymbol(AffixPatternType type) const override;
/**
* Returns the currency symbol for the unit width specified in setSymbols()
diff --git a/Build/source/libs/icu/icu-src/source/i18n/number_patternstring.cpp b/Build/source/libs/icu/icu-src/source/i18n/number_patternstring.cpp
index 557a7320856..aa082be5a87 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/number_patternstring.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/number_patternstring.cpp
@@ -968,7 +968,7 @@ PatternStringUtils::convertLocalized(const UnicodeString& input, const DecimalFo
UnicodeString result;
int state = 0;
for (int offset = 0; offset < input.length(); offset++) {
- UChar ch = input.charAt(offset);
+ char16_t ch = input.charAt(offset);
// Handle a quote character (state shift)
if (ch == u'\'') {
diff --git a/Build/source/libs/icu/icu-src/source/i18n/number_patternstring.h b/Build/source/libs/icu/icu-src/source/i18n/number_patternstring.h
index 08696697847..989d0d3464b 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/number_patternstring.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/number_patternstring.h
@@ -80,32 +80,32 @@ struct U_I18N_API ParsedPatternInfo : public AffixPatternProvider, public UMemor
ParsedPatternInfo()
: state(this->pattern), currentSubpattern(nullptr) {}
- ~ParsedPatternInfo() U_OVERRIDE = default;
+ ~ParsedPatternInfo() override = default;
// Need to declare this explicitly because of the destructor
- ParsedPatternInfo& operator=(ParsedPatternInfo&& src) U_NOEXCEPT = default;
+ ParsedPatternInfo& operator=(ParsedPatternInfo&& src) noexcept = default;
static int32_t getLengthFromEndpoints(const Endpoints& endpoints);
- char16_t charAt(int32_t flags, int32_t index) const U_OVERRIDE;
+ char16_t charAt(int32_t flags, int32_t index) const override;
- int32_t length(int32_t flags) const U_OVERRIDE;
+ int32_t length(int32_t flags) const override;
- UnicodeString getString(int32_t flags) const U_OVERRIDE;
+ UnicodeString getString(int32_t flags) const override;
- bool positiveHasPlusSign() const U_OVERRIDE;
+ bool positiveHasPlusSign() const override;
- bool hasNegativeSubpattern() const U_OVERRIDE;
+ bool hasNegativeSubpattern() const override;
- bool negativeHasMinusSign() const U_OVERRIDE;
+ bool negativeHasMinusSign() const override;
- bool hasCurrencySign() const U_OVERRIDE;
+ bool hasCurrencySign() const override;
- bool containsSymbolType(AffixPatternType type, UErrorCode& status) const U_OVERRIDE;
+ bool containsSymbolType(AffixPatternType type, UErrorCode& status) const override;
- bool hasBody() const U_OVERRIDE;
+ bool hasBody() const override;
- bool currencyAsDecimal() const U_OVERRIDE;
+ bool currencyAsDecimal() const override;
private:
struct U_I18N_API ParserState {
@@ -115,7 +115,7 @@ struct U_I18N_API ParsedPatternInfo : public AffixPatternProvider, public UMemor
explicit ParserState(const UnicodeString& _pattern)
: pattern(_pattern) {}
- ParserState& operator=(ParserState&& src) U_NOEXCEPT {
+ ParserState& operator=(ParserState&& src) noexcept {
// Leave pattern reference alone; it will continue to point to the same place in memory,
// which gets overwritten by ParsedPatternInfo's implicit move assignment.
offset = src.offset;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/number_rounding.cpp b/Build/source/libs/icu/icu-src/source/i18n/number_rounding.cpp
index a9b3f16c050..e6bb509ffd7 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/number_rounding.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/number_rounding.cpp
@@ -28,7 +28,7 @@ using icu::StringSegment;
void number::impl::parseIncrementOption(const StringSegment &segment,
Precision &outPrecision,
UErrorCode &status) {
- // Need to do char <-> UChar conversion...
+ // Need to do char <-> char16_t conversion...
U_ASSERT(U_SUCCESS(status));
CharString buffer;
SKELETON_UCHAR_TO_CHAR(buffer, segment.toTempUnicodeString(), 0, segment.length(), status);
diff --git a/Build/source/libs/icu/icu-src/source/i18n/number_scientific.h b/Build/source/libs/icu/icu-src/source/i18n/number_scientific.h
index a40a6e416d1..22140a09afc 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/number_scientific.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/number_scientific.h
@@ -22,19 +22,19 @@ class U_I18N_API ScientificModifier : public UMemory, public Modifier {
void set(int32_t exponent, const ScientificHandler *handler);
int32_t apply(FormattedStringBuilder &output, int32_t leftIndex, int32_t rightIndex,
- UErrorCode &status) const U_OVERRIDE;
+ UErrorCode &status) const override;
- int32_t getPrefixLength() const U_OVERRIDE;
+ int32_t getPrefixLength() const override;
- int32_t getCodePointCount() const U_OVERRIDE;
+ int32_t getCodePointCount() const override;
- bool isStrong() const U_OVERRIDE;
+ bool isStrong() const override;
- bool containsField(Field field) const U_OVERRIDE;
+ bool containsField(Field field) const override;
- void getParameters(Parameters& output) const U_OVERRIDE;
+ void getParameters(Parameters& output) const override;
- bool semanticallyEquivalent(const Modifier& other) const U_OVERRIDE;
+ bool semanticallyEquivalent(const Modifier& other) const override;
private:
int32_t fExponent;
@@ -47,9 +47,9 @@ class ScientificHandler : public UMemory, public MicroPropsGenerator, public Mul
const MicroPropsGenerator *parent);
void
- processQuantity(DecimalQuantity &quantity, MicroProps &micros, UErrorCode &status) const U_OVERRIDE;
+ processQuantity(DecimalQuantity &quantity, MicroProps &micros, UErrorCode &status) const override;
- int32_t getMultiplier(int32_t magnitude) const U_OVERRIDE;
+ int32_t getMultiplier(int32_t magnitude) const override;
private:
const Notation::ScientificSettings fSettings;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/number_simple.cpp b/Build/source/libs/icu/icu-src/source/i18n/number_simple.cpp
new file mode 100644
index 00000000000..a2af6be42d6
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/i18n/number_simple.cpp
@@ -0,0 +1,255 @@
+// © 2017 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+#include "unicode/numberformatter.h"
+#include "unicode/simplenumberformatter.h"
+#include "number_formatimpl.h"
+#include "number_utils.h"
+#include "number_patternmodifier.h"
+#include "number_utypes.h"
+
+using namespace icu;
+using namespace icu::number;
+using namespace icu::number::impl;
+
+
+SimpleNumber
+SimpleNumber::forInt64(int64_t value, UErrorCode& status) {
+ if (U_FAILURE(status)) {
+ return SimpleNumber();
+ }
+ auto results = new UFormattedNumberData();
+ if (results == nullptr) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ return SimpleNumber();
+ }
+ results->quantity.setToLong(value);
+ return SimpleNumber(results, status);
+}
+
+SimpleNumber::SimpleNumber(UFormattedNumberData* data, UErrorCode& status) : fData(data) {
+ if (U_FAILURE(status)) {
+ return;
+ }
+ if (fData == nullptr) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
+ if (fData->quantity.isNegative()) {
+ fSign = UNUM_SIMPLE_NUMBER_MINUS_SIGN;
+ } else {
+ fSign = UNUM_SIMPLE_NUMBER_NO_SIGN;
+ }
+}
+
+void SimpleNumber::cleanup() {
+ delete fData;
+ fData = nullptr;
+}
+
+void SimpleNumber::multiplyByPowerOfTen(int32_t power, UErrorCode& status) {
+ if (U_FAILURE(status)) {
+ return;
+ }
+ if (fData == nullptr) {
+ status = U_INVALID_STATE_ERROR;
+ return;
+ }
+ fData->quantity.adjustMagnitude(power);
+}
+
+void SimpleNumber::roundTo(int32_t position, UNumberFormatRoundingMode roundingMode, UErrorCode& status) {
+ if (U_FAILURE(status)) {
+ return;
+ }
+ if (fData == nullptr) {
+ status = U_INVALID_STATE_ERROR;
+ return;
+ }
+ fData->quantity.roundToMagnitude(position, roundingMode, status);
+}
+
+void SimpleNumber::setMinimumIntegerDigits(uint32_t position, UErrorCode& status) {
+ if (U_FAILURE(status)) {
+ return;
+ }
+ if (fData == nullptr) {
+ status = U_INVALID_STATE_ERROR;
+ return;
+ }
+ fData->quantity.setMinInteger(position);
+}
+
+void SimpleNumber::setMinimumFractionDigits(uint32_t position, UErrorCode& status) {
+ if (U_FAILURE(status)) {
+ return;
+ }
+ if (fData == nullptr) {
+ status = U_INVALID_STATE_ERROR;
+ return;
+ }
+ fData->quantity.setMinFraction(position);
+}
+
+void SimpleNumber::truncateStart(uint32_t position, UErrorCode& status) {
+ if (U_FAILURE(status)) {
+ return;
+ }
+ if (fData == nullptr) {
+ status = U_INVALID_STATE_ERROR;
+ return;
+ }
+ fData->quantity.applyMaxInteger(position);
+}
+
+void SimpleNumber::setSign(USimpleNumberSign sign, UErrorCode& status) {
+ if (U_FAILURE(status)) {
+ return;
+ }
+ if (fData == nullptr) {
+ status = U_INVALID_STATE_ERROR;
+ return;
+ }
+ fSign = sign;
+}
+
+
+void SimpleNumberFormatter::cleanup() {
+ delete fOwnedSymbols;
+ delete fMicros;
+ delete fPatternModifier;
+ fOwnedSymbols = nullptr;
+ fMicros = nullptr;
+ fPatternModifier = nullptr;
+}
+
+SimpleNumberFormatter SimpleNumberFormatter::forLocale(const icu::Locale &locale, UErrorCode &status) {
+ return SimpleNumberFormatter::forLocaleAndGroupingStrategy(locale, UNUM_GROUPING_AUTO, status);
+}
+
+SimpleNumberFormatter SimpleNumberFormatter::forLocaleAndGroupingStrategy(
+ const icu::Locale &locale,
+ UNumberGroupingStrategy groupingStrategy,
+ UErrorCode &status) {
+ SimpleNumberFormatter retval;
+ retval.fOwnedSymbols = new DecimalFormatSymbols(locale, status);
+ if (U_FAILURE(status)) {
+ return retval;
+ }
+ if (retval.fOwnedSymbols == nullptr) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ return retval;
+ }
+ retval.initialize(locale, *retval.fOwnedSymbols, groupingStrategy, status);
+ return retval;
+}
+
+
+SimpleNumberFormatter SimpleNumberFormatter::forLocaleAndSymbolsAndGroupingStrategy(
+ const icu::Locale &locale,
+ const DecimalFormatSymbols &symbols,
+ UNumberGroupingStrategy groupingStrategy,
+ UErrorCode &status) {
+ SimpleNumberFormatter retval;
+ retval.initialize(locale, symbols, groupingStrategy, status);
+ return retval;
+}
+
+
+void SimpleNumberFormatter::initialize(
+ const icu::Locale &locale,
+ const DecimalFormatSymbols &symbols,
+ UNumberGroupingStrategy groupingStrategy,
+ UErrorCode &status) {
+ if (U_FAILURE(status)) {
+ return;
+ }
+
+ fMicros = new SimpleMicroProps();
+ if (fMicros == nullptr) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ return;
+ }
+ fMicros->symbols = &symbols;
+
+ auto pattern = utils::getPatternForStyle(
+ locale,
+ symbols.getNumberingSystemName(),
+ CLDR_PATTERN_STYLE_DECIMAL,
+ status);
+ if (U_FAILURE(status)) {
+ return;
+ }
+
+ ParsedPatternInfo patternInfo;
+ PatternParser::parseToPatternInfo(UnicodeString(pattern), patternInfo, status);
+ if (U_FAILURE(status)) {
+ return;
+ }
+
+ auto grouper = Grouper::forStrategy(groupingStrategy);
+ grouper.setLocaleData(patternInfo, locale);
+ fMicros->grouping = grouper;
+
+ MutablePatternModifier patternModifier(false);
+ patternModifier.setPatternInfo(&patternInfo, kUndefinedField);
+ patternModifier.setPatternAttributes(UNUM_SIGN_EXCEPT_ZERO, false, false);
+ patternModifier.setSymbols(fMicros->symbols, {}, UNUM_UNIT_WIDTH_SHORT, nullptr, status);
+
+ fPatternModifier = new AdoptingSignumModifierStore(patternModifier.createImmutableForPlural(StandardPlural::COUNT, status));
+
+ fGroupingStrategy = groupingStrategy;
+ return;
+}
+
+FormattedNumber SimpleNumberFormatter::format(SimpleNumber value, UErrorCode &status) const {
+ formatImpl(value.fData, value.fSign, status);
+
+ // Do not save the results object if we encountered a failure.
+ if (U_SUCCESS(status)) {
+ auto temp = value.fData;
+ value.fData = nullptr;
+ return FormattedNumber(temp);
+ } else {
+ return FormattedNumber(status);
+ }
+}
+
+void SimpleNumberFormatter::formatImpl(UFormattedNumberData* data, USimpleNumberSign sign, UErrorCode &status) const {
+ if (U_FAILURE(status)) {
+ return;
+ }
+ if (data == nullptr) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
+ if (fPatternModifier == nullptr || fMicros == nullptr) {
+ status = U_INVALID_STATE_ERROR;
+ return;
+ }
+
+ Signum signum;
+ if (sign == UNUM_SIMPLE_NUMBER_MINUS_SIGN) {
+ signum = SIGNUM_NEG;
+ } else if (sign == UNUM_SIMPLE_NUMBER_PLUS_SIGN) {
+ signum = SIGNUM_POS;
+ } else {
+ signum = SIGNUM_POS_ZERO;
+ }
+
+ const Modifier* modifier = (*fPatternModifier)[signum];
+ auto length = NumberFormatterImpl::writeNumber(
+ *fMicros,
+ data->quantity,
+ data->getStringRef(),
+ 0,
+ status);
+ length += modifier->apply(data->getStringRef(), 0, length, status);
+ data->getStringRef().writeTerminator(status);
+}
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/Build/source/libs/icu/icu-src/source/i18n/number_skeletons.cpp b/Build/source/libs/icu/icu-src/source/i18n/number_skeletons.cpp
index 3db50369cb6..ef3befbffad 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/number_skeletons.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/number_skeletons.cpp
@@ -1022,7 +1022,7 @@ void blueprint_helpers::parseCurrencyOption(const StringSegment& segment, MacroP
status = U_NUMBER_SKELETON_SYNTAX_ERROR;
return;
}
- const UChar* currencyCode = segment.toTempUnicodeString().getBuffer();
+ const char16_t* currencyCode = segment.toTempUnicodeString().getBuffer();
UErrorCode localStatus = U_ZERO_ERROR;
CurrencyUnit currency(currencyCode, localStatus);
if (U_FAILURE(localStatus)) {
@@ -1057,7 +1057,7 @@ void blueprint_helpers::parseMeasureUnitOption(const StringSegment& segment, Mac
return;
}
- // Need to do char <-> UChar conversion...
+ // Need to do char <-> char16_t conversion...
CharString type;
SKELETON_UCHAR_TO_CHAR(type, stemString, 0, firstHyphen, status);
CharString subType;
@@ -1098,7 +1098,7 @@ void blueprint_helpers::parseMeasurePerUnitOption(const StringSegment& segment,
void blueprint_helpers::parseIdentifierUnitOption(const StringSegment& segment, MacroProps& macros,
UErrorCode& status) {
- // Need to do char <-> UChar conversion...
+ // Need to do char <-> char16_t conversion...
U_ASSERT(U_SUCCESS(status));
CharString buffer;
SKELETON_UCHAR_TO_CHAR(buffer, segment.toTempUnicodeString(), 0, segment.length(), status);
@@ -1114,7 +1114,7 @@ void blueprint_helpers::parseIdentifierUnitOption(const StringSegment& segment,
void blueprint_helpers::parseUnitUsageOption(const StringSegment &segment, MacroProps &macros,
UErrorCode &status) {
- // Need to do char <-> UChar conversion...
+ // Need to do char <-> char16_t conversion...
U_ASSERT(U_SUCCESS(status));
CharString buffer;
SKELETON_UCHAR_TO_CHAR(buffer, segment.toTempUnicodeString(), 0, segment.length(), status);
@@ -1466,7 +1466,7 @@ void blueprint_helpers::generateIntegerWidthOption(int32_t minInt, int32_t maxIn
void blueprint_helpers::parseNumberingSystemOption(const StringSegment& segment, MacroProps& macros,
UErrorCode& status) {
- // Need to do char <-> UChar conversion...
+ // Need to do char <-> char16_t conversion...
U_ASSERT(U_SUCCESS(status));
CharString buffer;
SKELETON_UCHAR_TO_CHAR(buffer, segment.toTempUnicodeString(), 0, segment.length(), status);
@@ -1483,13 +1483,13 @@ void blueprint_helpers::parseNumberingSystemOption(const StringSegment& segment,
void blueprint_helpers::generateNumberingSystemOption(const NumberingSystem& ns, UnicodeString& sb,
UErrorCode&) {
- // Need to do char <-> UChar conversion...
+ // Need to do char <-> char16_t conversion...
sb.append(UnicodeString(ns.getName(), -1, US_INV));
}
void blueprint_helpers::parseScaleOption(const StringSegment& segment, MacroProps& macros,
UErrorCode& status) {
- // Need to do char <-> UChar conversion...
+ // Need to do char <-> char16_t conversion...
U_ASSERT(U_SUCCESS(status));
CharString buffer;
SKELETON_UCHAR_TO_CHAR(buffer, segment.toTempUnicodeString(), 0, segment.length(), status);
diff --git a/Build/source/libs/icu/icu-src/source/i18n/number_symbolswrapper.cpp b/Build/source/libs/icu/icu-src/source/i18n/number_symbolswrapper.cpp
index ac3043d1ca1..4742a69c1fb 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/number_symbolswrapper.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/number_symbolswrapper.cpp
@@ -16,7 +16,7 @@ SymbolsWrapper::SymbolsWrapper(const SymbolsWrapper &other) {
doCopyFrom(other);
}
-SymbolsWrapper::SymbolsWrapper(SymbolsWrapper &&src) U_NOEXCEPT {
+SymbolsWrapper::SymbolsWrapper(SymbolsWrapper &&src) noexcept {
doMoveFrom(std::move(src));
}
@@ -29,7 +29,7 @@ SymbolsWrapper &SymbolsWrapper::operator=(const SymbolsWrapper &other) {
return *this;
}
-SymbolsWrapper &SymbolsWrapper::operator=(SymbolsWrapper &&src) U_NOEXCEPT {
+SymbolsWrapper &SymbolsWrapper::operator=(SymbolsWrapper &&src) noexcept {
if (this == &src) {
return *this;
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/number_usageprefs.cpp b/Build/source/libs/icu/icu-src/source/i18n/number_usageprefs.cpp
index 26fdfafeea4..6f7fdaa9dca 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/number_usageprefs.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/number_usageprefs.cpp
@@ -60,7 +60,7 @@ StringProp &StringProp::operator=(const StringProp &other) {
}
// Move constructor
-StringProp::StringProp(StringProp &&src) U_NOEXCEPT : fValue(src.fValue),
+StringProp::StringProp(StringProp &&src) noexcept : fValue(src.fValue),
fLength(src.fLength),
fError(src.fError) {
// Take ownership away from src if necessary
@@ -68,7 +68,7 @@ StringProp::StringProp(StringProp &&src) U_NOEXCEPT : fValue(src.fValue),
}
// Move assignment operator
-StringProp &StringProp::operator=(StringProp &&src) U_NOEXCEPT {
+StringProp &StringProp::operator=(StringProp &&src) noexcept {
if (this == &src) {
return *this;
}
@@ -102,7 +102,9 @@ void StringProp::set(StringPiece value) {
fError = U_MEMORY_ALLOCATION_ERROR;
return;
}
- uprv_strncpy(fValue, value.data(), fLength);
+ if (fLength > 0) {
+ uprv_strncpy(fValue, value.data(), fLength);
+ }
fValue[fLength] = 0;
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/number_usageprefs.h b/Build/source/libs/icu/icu-src/source/i18n/number_usageprefs.h
index 70547225a00..e90df99d396 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/number_usageprefs.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/number_usageprefs.h
@@ -44,7 +44,7 @@ class U_I18N_API UsagePrefsHandler : public MicroPropsGenerator, public UMemory
* micros.outputUnit.
*/
void processQuantity(DecimalQuantity &quantity, MicroProps &micros,
- UErrorCode &status) const U_OVERRIDE;
+ UErrorCode &status) const override;
/**
* Returns the list of possible output units, i.e. the full set of
@@ -111,7 +111,7 @@ class U_I18N_API UnitConversionHandler : public MicroPropsGenerator, public UMem
* Obtains the appropriate output values from the Unit Converter.
*/
void processQuantity(DecimalQuantity &quantity, MicroProps &micros,
- UErrorCode &status) const U_OVERRIDE;
+ UErrorCode &status) const override;
private:
MeasureUnit fOutputUnit;
LocalPointer<ComplexUnitsConverter> fUnitConverter;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/number_utypes.h b/Build/source/libs/icu/icu-src/source/i18n/number_utypes.h
index 50c861787f4..0c130401894 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/number_utypes.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/number_utypes.h
@@ -35,6 +35,9 @@ public:
UFormattedNumberData() : FormattedValueStringBuilderImpl(kUndefinedField) {}
virtual ~UFormattedNumberData();
+ UFormattedNumberData(UFormattedNumberData&&) = default;
+ UFormattedNumberData& operator=(UFormattedNumberData&&) = default;
+
// The formatted quantity.
DecimalQuantity quantity;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/numfmt.cpp b/Build/source/libs/icu/icu-src/source/i18n/numfmt.cpp
index 9e841da74a4..74689e1363a 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/numfmt.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/numfmt.cpp
@@ -74,32 +74,32 @@ static inline void debugout(UnicodeString s) {
// If no number pattern can be located for a locale, this is the last
// resort. The patterns are same as the ones in root locale.
-static const UChar gLastResortDecimalPat[] = {
+static const char16_t gLastResortDecimalPat[] = {
0x23, 0x2C, 0x23, 0x23, 0x30, 0x2E, 0x23, 0x23, 0x23, 0 /* "#,##0.###" */
};
-static const UChar gLastResortCurrencyPat[] = {
+static const char16_t gLastResortCurrencyPat[] = {
0xA4, 0xA0, 0x23, 0x2C, 0x23, 0x23, 0x30, 0x2E, 0x30, 0x30, 0 /* "\u00A4\u00A0#,##0.00" */
};
-static const UChar gLastResortPercentPat[] = {
+static const char16_t gLastResortPercentPat[] = {
0x23, 0x2C, 0x23, 0x23, 0x30, 0x25, 0 /* "#,##0%" */
};
-static const UChar gLastResortScientificPat[] = {
+static const char16_t gLastResortScientificPat[] = {
0x23, 0x45, 0x30, 0 /* "#E0" */
};
-static const UChar gLastResortIsoCurrencyPat[] = {
+static const char16_t gLastResortIsoCurrencyPat[] = {
0xA4, 0xA4, 0xA0, 0x23, 0x2C, 0x23, 0x23, 0x30, 0x2E, 0x30, 0x30, 0 /* "\u00A4\u00A4\u00A0#,##0.00" */
};
-static const UChar gLastResortPluralCurrencyPat[] = {
+static const char16_t gLastResortPluralCurrencyPat[] = {
0x23, 0x2C, 0x23, 0x23, 0x30, 0x2E, 0x23, 0x23, 0x23, 0x20, 0xA4, 0xA4, 0xA4, 0 /* "#,##0.### \u00A4\u00A4\u00A4*/
};
-static const UChar gLastResortAccountingCurrencyPat[] = {
+static const char16_t gLastResortAccountingCurrencyPat[] = {
0xA4, 0xA0, 0x23, 0x2C, 0x23, 0x23, 0x30, 0x2E, 0x30, 0x30, 0 /* "\u00A4\u00A0#,##0.00" */
};
-static const UChar gSingleCurrencySign[] = {0xA4, 0};
-static const UChar gDoubleCurrencySign[] = {0xA4, 0xA4, 0};
+static const char16_t gSingleCurrencySign[] = {0xA4, 0};
+static const char16_t gDoubleCurrencySign[] = {0xA4, 0xA4, 0};
-static const UChar gSlash = 0x2f;
+static const char16_t gSlash = 0x2f;
// If the maximum base 10 exponent were 4, then the largest number would
// be 99,999 which has 5 digits.
@@ -108,39 +108,39 @@ static const UChar gSlash = 0x2f;
const int32_t icu::NumberFormat::gDefaultMaxIntegerDigits = 2000000000;
const int32_t icu::NumberFormat::gDefaultMinIntegerDigits = 127;
-static const UChar * const gLastResortNumberPatterns[UNUM_FORMAT_STYLE_COUNT] = {
- NULL, // UNUM_PATTERN_DECIMAL
+static const char16_t * const gLastResortNumberPatterns[UNUM_FORMAT_STYLE_COUNT] = {
+ nullptr, // UNUM_PATTERN_DECIMAL
gLastResortDecimalPat, // UNUM_DECIMAL
gLastResortCurrencyPat, // UNUM_CURRENCY
gLastResortPercentPat, // UNUM_PERCENT
gLastResortScientificPat, // UNUM_SCIENTIFIC
- NULL, // UNUM_SPELLOUT
- NULL, // UNUM_ORDINAL
- NULL, // UNUM_DURATION
+ nullptr, // UNUM_SPELLOUT
+ nullptr, // UNUM_ORDINAL
+ nullptr, // UNUM_DURATION
gLastResortDecimalPat, // UNUM_NUMBERING_SYSTEM
- NULL, // UNUM_PATTERN_RULEBASED
+ nullptr, // UNUM_PATTERN_RULEBASED
gLastResortIsoCurrencyPat, // UNUM_CURRENCY_ISO
gLastResortPluralCurrencyPat, // UNUM_CURRENCY_PLURAL
gLastResortAccountingCurrencyPat, // UNUM_CURRENCY_ACCOUNTING
gLastResortCurrencyPat, // UNUM_CASH_CURRENCY
- NULL, // UNUM_DECIMAL_COMPACT_SHORT
- NULL, // UNUM_DECIMAL_COMPACT_LONG
+ nullptr, // UNUM_DECIMAL_COMPACT_SHORT
+ nullptr, // UNUM_DECIMAL_COMPACT_LONG
gLastResortCurrencyPat, // UNUM_CURRENCY_STANDARD
};
// Keys used for accessing resource bundles
static const icu::number::impl::CldrPatternStyle gFormatCldrStyles[UNUM_FORMAT_STYLE_COUNT] = {
- /* NULL */ icu::number::impl::CLDR_PATTERN_STYLE_COUNT, // UNUM_PATTERN_DECIMAL
+ /* nullptr */ icu::number::impl::CLDR_PATTERN_STYLE_COUNT, // UNUM_PATTERN_DECIMAL
icu::number::impl::CLDR_PATTERN_STYLE_DECIMAL, // UNUM_DECIMAL
icu::number::impl::CLDR_PATTERN_STYLE_CURRENCY, // UNUM_CURRENCY
icu::number::impl::CLDR_PATTERN_STYLE_PERCENT, // UNUM_PERCENT
icu::number::impl::CLDR_PATTERN_STYLE_SCIENTIFIC, // UNUM_SCIENTIFIC
- /* NULL */ icu::number::impl::CLDR_PATTERN_STYLE_COUNT, // UNUM_SPELLOUT
- /* NULL */ icu::number::impl::CLDR_PATTERN_STYLE_COUNT, // UNUM_ORDINAL
- /* NULL */ icu::number::impl::CLDR_PATTERN_STYLE_COUNT, // UNUM_DURATION
- /* NULL */ icu::number::impl::CLDR_PATTERN_STYLE_COUNT, // UNUM_NUMBERING_SYSTEM
- /* NULL */ icu::number::impl::CLDR_PATTERN_STYLE_COUNT, // UNUM_PATTERN_RULEBASED
+ /* nullptr */ icu::number::impl::CLDR_PATTERN_STYLE_COUNT, // UNUM_SPELLOUT
+ /* nullptr */ icu::number::impl::CLDR_PATTERN_STYLE_COUNT, // UNUM_ORDINAL
+ /* nullptr */ icu::number::impl::CLDR_PATTERN_STYLE_COUNT, // UNUM_DURATION
+ /* nullptr */ icu::number::impl::CLDR_PATTERN_STYLE_COUNT, // UNUM_NUMBERING_SYSTEM
+ /* nullptr */ icu::number::impl::CLDR_PATTERN_STYLE_COUNT, // UNUM_PATTERN_RULEBASED
// For UNUM_CURRENCY_ISO and UNUM_CURRENCY_PLURAL,
// the pattern is the same as the pattern of UNUM_CURRENCY
// except for replacing the single currency sign with
@@ -149,17 +149,17 @@ static const icu::number::impl::CldrPatternStyle gFormatCldrStyles[UNUM_FORMAT_S
icu::number::impl::CLDR_PATTERN_STYLE_CURRENCY, // UNUM_CURRENCY_PLURAL
icu::number::impl::CLDR_PATTERN_STYLE_ACCOUNTING, // UNUM_CURRENCY_ACCOUNTING
icu::number::impl::CLDR_PATTERN_STYLE_CURRENCY, // UNUM_CASH_CURRENCY
- /* NULL */ icu::number::impl::CLDR_PATTERN_STYLE_COUNT, // UNUM_DECIMAL_COMPACT_SHORT
- /* NULL */ icu::number::impl::CLDR_PATTERN_STYLE_COUNT, // UNUM_DECIMAL_COMPACT_LONG
+ /* nullptr */ icu::number::impl::CLDR_PATTERN_STYLE_COUNT, // UNUM_DECIMAL_COMPACT_SHORT
+ /* nullptr */ icu::number::impl::CLDR_PATTERN_STYLE_COUNT, // UNUM_DECIMAL_COMPACT_LONG
icu::number::impl::CLDR_PATTERN_STYLE_CURRENCY, // UNUM_CURRENCY_STANDARD
};
// Static hashtable cache of NumberingSystem objects used by NumberFormat
-static UHashtable * NumberingSystem_cache = NULL;
+static UHashtable * NumberingSystem_cache = nullptr;
static icu::UInitOnce gNSCacheInitOnce {};
#if !UCONFIG_NO_SERVICE
-static icu::ICULocaleService* gService = NULL;
+static icu::ICULocaleService* gService = nullptr;
static icu::UInitOnce gServiceInitOnce {};
#endif
@@ -172,19 +172,19 @@ deleteNumberingSystem(void *obj) {
delete (icu::NumberingSystem *)obj;
}
-static UBool U_CALLCONV numfmt_cleanup(void) {
+static UBool U_CALLCONV numfmt_cleanup() {
#if !UCONFIG_NO_SERVICE
gServiceInitOnce.reset();
if (gService) {
delete gService;
- gService = NULL;
+ gService = nullptr;
}
#endif
gNSCacheInitOnce.reset();
if (NumberingSystem_cache) {
// delete NumberingSystem_cache;
uhash_close(NumberingSystem_cache);
- NumberingSystem_cache = NULL;
+ NumberingSystem_cache = nullptr;
}
return true;
}
@@ -210,7 +210,7 @@ SimpleNumberFormatFactory::SimpleNumberFormatFactory(const Locale& locale, UBool
SimpleNumberFormatFactory::~SimpleNumberFormatFactory() {}
-UBool SimpleNumberFormatFactory::visible(void) const {
+UBool SimpleNumberFormatFactory::visible() const {
return _visible;
}
@@ -222,7 +222,7 @@ SimpleNumberFormatFactory::getSupportedIDs(int32_t &count, UErrorCode& status) c
return &_id;
}
count = 0;
- return NULL;
+ return nullptr;
}
#endif /* #if !UCONFIG_NO_SERVICE */
@@ -474,42 +474,42 @@ NumberFormat::format(StringPiece decimalNum,
*/
class ArgExtractor {
const Formattable* num;
- UChar save[4];
+ char16_t save[4];
UBool fWasCurrency;
public:
ArgExtractor(const NumberFormat& nf, const Formattable& obj, UErrorCode& status);
~ArgExtractor();
- const Formattable* number(void) const;
- const UChar *iso(void) const;
- UBool wasCurrency(void) const;
+ const Formattable* number() const;
+ const char16_t *iso() const;
+ UBool wasCurrency() const;
};
inline const Formattable*
-ArgExtractor::number(void) const {
+ArgExtractor::number() const {
return num;
}
inline UBool
-ArgExtractor::wasCurrency(void) const {
+ArgExtractor::wasCurrency() const {
return fWasCurrency;
}
-inline const UChar *
-ArgExtractor::iso(void) const {
+inline const char16_t *
+ArgExtractor::iso() const {
return save;
}
ArgExtractor::ArgExtractor(const NumberFormat& /*nf*/, const Formattable& obj, UErrorCode& /*status*/)
: num(&obj), fWasCurrency(false) {
- const UObject* o = obj.getObject(); // most commonly o==NULL
+ const UObject* o = obj.getObject(); // most commonly o==nullptr
const CurrencyAmount* amt;
- if (o != NULL && (amt = dynamic_cast<const CurrencyAmount*>(o)) != NULL) {
+ if (o != nullptr && (amt = dynamic_cast<const CurrencyAmount*>(o)) != nullptr) {
// getISOCurrency() returns a pointer to internal storage, so we
// copy it to retain it across the call to setCurrency().
- //const UChar* curr = amt->getISOCurrency();
+ //const char16_t* curr = amt->getISOCurrency();
u_strcpy(save, amt->getISOCurrency());
num = &amt->getNumber();
fWasCurrency=true;
@@ -564,7 +564,7 @@ NumberFormat::format(const Formattable& obj,
ArgExtractor arg(*this, obj, status);
const Formattable *n = arg.number();
- const UChar *iso = arg.iso();
+ const char16_t *iso = arg.iso();
if(arg.wasCurrency() && u_strcmp(iso, getCurrency())) {
// trying to format a different currency.
@@ -575,7 +575,7 @@ NumberFormat::format(const Formattable& obj,
return cloneFmt->format(*n, appendTo, pos, status);
}
- if (n->isNumeric() && n->getDecimalQuantity() != NULL) {
+ if (n->isNumeric() && n->getDecimalQuantity() != nullptr) {
// Decimal Number. We will have a DigitList available if the value was
// set to a decimal number, or if the value originated with a parse.
//
@@ -619,7 +619,7 @@ NumberFormat::format(const Formattable& obj,
ArgExtractor arg(*this, obj, status);
const Formattable *n = arg.number();
- const UChar *iso = arg.iso();
+ const char16_t *iso = arg.iso();
if(arg.wasCurrency() && u_strcmp(iso, getCurrency())) {
// trying to format a different currency.
@@ -630,7 +630,7 @@ NumberFormat::format(const Formattable& obj,
return cloneFmt->format(*n, appendTo, posIter, status);
}
- if (n->isNumeric() && n->getDecimalQuantity() != NULL) {
+ if (n->isNumeric() && n->getDecimalQuantity() != nullptr) {
// Decimal Number
format(*n->getDecimalQuantity(), appendTo, posIter, status);
} else {
@@ -733,7 +733,7 @@ CurrencyAmount* NumberFormat::parseCurrency(const UnicodeString& text,
int32_t start = pos.getIndex();
parse(text, parseResult, pos);
if (pos.getIndex() != start) {
- UChar curr[4];
+ char16_t curr[4];
UErrorCode ec = U_ZERO_ERROR;
getEffectiveCurrency(curr, ec);
if (U_SUCCESS(ec)) {
@@ -745,7 +745,7 @@ CurrencyAmount* NumberFormat::parseCurrency(const UnicodeString& text,
}
}
}
- return NULL;
+ return nullptr;
}
// -------------------------------------
@@ -878,7 +878,7 @@ public:
NFFactory(NumberFormatFactory* delegate)
: LocaleKeyFactory(delegate->visible() ? VISIBLE : INVISIBLE)
, _delegate(delegate)
- , _ids(NULL)
+ , _ids(nullptr)
{
}
@@ -887,18 +887,19 @@ public:
virtual UObject* create(const ICUServiceKey& key, const ICUService* service, UErrorCode& status) const override
{
if (handlesKey(key, status)) {
- const LocaleKey& lkey = (const LocaleKey&)key;
+ const LocaleKey* lkey = dynamic_cast<const LocaleKey*>(&key);
+ U_ASSERT(lkey != nullptr);
Locale loc;
- lkey.canonicalLocale(loc);
- int32_t kind = lkey.kind();
+ lkey->canonicalLocale(loc);
+ int32_t kind = lkey->kind();
UObject* result = _delegate->createFormat(loc, (UNumberFormatStyle)kind);
- if (result == NULL) {
- result = service->getKey((ICUServiceKey&)key /* cast away const */, NULL, this, status);
+ if (result == nullptr) {
+ result = service->getKey(const_cast<ICUServiceKey&>(key) /* cast away const */, nullptr, this, status);
}
return result;
}
- return NULL;
+ return nullptr;
}
protected:
@@ -922,7 +923,7 @@ protected:
}
return _ids;
}
- return NULL;
+ return nullptr;
}
};
@@ -948,10 +949,11 @@ public:
}
virtual UObject* handleDefault(const ICUServiceKey& key, UnicodeString* /* actualID */, UErrorCode& status) const override {
- LocaleKey& lkey = (LocaleKey&)key;
- int32_t kind = lkey.kind();
+ const LocaleKey* lkey = dynamic_cast<const LocaleKey*>(&key);
+ U_ASSERT(lkey != nullptr);
+ int32_t kind = lkey->kind();
Locale loc;
- lkey.currentLocale(loc);
+ lkey->currentLocale(loc);
return NumberFormat::makeInstance(loc, (UNumberFormatStyle)kind, status);
}
@@ -965,20 +967,20 @@ ICUNumberFormatService::~ICUNumberFormatService() {}
// -------------------------------------
static void U_CALLCONV initNumberFormatService() {
- U_ASSERT(gService == NULL);
+ U_ASSERT(gService == nullptr);
ucln_i18n_registerCleanup(UCLN_I18N_NUMFMT, numfmt_cleanup);
gService = new ICUNumberFormatService();
}
static ICULocaleService*
-getNumberFormatService(void)
+getNumberFormatService()
{
umtx_initOnce(gServiceInitOnce, &initNumberFormatService);
return gService;
}
static UBool haveService() {
- return !gServiceInitOnce.isReset() && (getNumberFormatService() != NULL);
+ return !gServiceInitOnce.isReset() && (getNumberFormatService() != nullptr);
}
// -------------------------------------
@@ -993,12 +995,12 @@ NumberFormat::registerFactory(NumberFormatFactory* toAdopt, UErrorCode& status)
ICULocaleService *service = getNumberFormatService();
if (service) {
NFFactory *tempnnf = new NFFactory(toAdopt);
- if (tempnnf != NULL) {
+ if (tempnnf != nullptr) {
return service->registerFactory(tempnnf, status);
}
}
status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
// -------------------------------------
@@ -1019,13 +1021,13 @@ NumberFormat::unregister(URegistryKey key, UErrorCode& status)
// -------------------------------------
StringEnumeration* U_EXPORT2
-NumberFormat::getAvailableLocales(void)
+NumberFormat::getAvailableLocales()
{
ICULocaleService *service = getNumberFormatService();
if (service) {
return service->getAvailableLocales();
}
- return NULL; // no way to return error condition
+ return nullptr; // no way to return error condition
}
#endif /* UCONFIG_NO_SERVICE */
// -------------------------------------
@@ -1057,11 +1059,11 @@ NumberFormat::createInstance(const Locale& loc, UNumberFormatStyle kind, UErrorC
}
const SharedNumberFormat *shared = createSharedInstance(loc, kind, status);
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
NumberFormat *result = (*shared)->clone();
shared->removeRef();
- if (result == NULL) {
+ if (result == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
}
return result;
@@ -1177,7 +1179,7 @@ NumberFormat::setMinimumFractionDigits(int32_t newValue)
// -------------------------------------
-void NumberFormat::setCurrency(const UChar* theCurrency, UErrorCode& ec) {
+void NumberFormat::setCurrency(const char16_t* theCurrency, UErrorCode& ec) {
if (U_FAILURE(ec)) {
return;
}
@@ -1193,14 +1195,14 @@ const char16_t* NumberFormat::getCurrency() const {
return fCurrency;
}
-void NumberFormat::getEffectiveCurrency(UChar* result, UErrorCode& ec) const {
- const UChar* c = getCurrency();
+void NumberFormat::getEffectiveCurrency(char16_t* result, UErrorCode& ec) const {
+ const char16_t* c = getCurrency();
if (*c != 0) {
u_strncpy(result, c, 3);
result[3] = 0;
} else {
const char* loc = getLocaleID(ULOC_VALID_LOCALE, ec);
- if (loc == NULL) {
+ if (loc == nullptr) {
loc = uloc_getDefault();
}
ucurr_forLocale(loc, result, 4, &ec);
@@ -1239,16 +1241,16 @@ UDisplayContext NumberFormat::getContext(UDisplayContextType type, UErrorCode& s
// or percent) for the desired locale.
static void U_CALLCONV nscacheInit() {
- U_ASSERT(NumberingSystem_cache == NULL);
+ U_ASSERT(NumberingSystem_cache == nullptr);
ucln_i18n_registerCleanup(UCLN_I18N_NUMFMT, numfmt_cleanup);
UErrorCode status = U_ZERO_ERROR;
NumberingSystem_cache = uhash_open(uhash_hashLong,
uhash_compareLong,
- NULL,
+ nullptr,
&status);
if (U_FAILURE(status)) {
// Number Format code will run with no cache if creation fails.
- NumberingSystem_cache = NULL;
+ NumberingSystem_cache = nullptr;
return;
}
uhash_setValueDeleter(NumberingSystem_cache, deleteNumberingSystem);
@@ -1261,13 +1263,13 @@ const SharedNumberFormat *LocaleCacheKey<SharedNumberFormat>::createObject(
NumberFormat *nf = NumberFormat::internalCreateInstance(
localeId, UNUM_DECIMAL, status);
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
SharedNumberFormat *result = new SharedNumberFormat(nf);
- if (result == NULL) {
+ if (result == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
delete nf;
- return NULL;
+ return nullptr;
}
result->addRef();
return result;
@@ -1276,20 +1278,20 @@ const SharedNumberFormat *LocaleCacheKey<SharedNumberFormat>::createObject(
const SharedNumberFormat* U_EXPORT2
NumberFormat::createSharedInstance(const Locale& loc, UNumberFormatStyle kind, UErrorCode& status) {
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
if (kind != UNUM_DECIMAL) {
status = U_UNSUPPORTED_ERROR;
- return NULL;
+ return nullptr;
}
- const SharedNumberFormat *result = NULL;
+ const SharedNumberFormat *result = nullptr;
UnifiedCache::getByLocale(loc, result, status);
return result;
}
UBool
NumberFormat::isStyleSupported(UNumberFormatStyle style) {
- return gLastResortNumberPatterns[style] != NULL;
+ return gLastResortNumberPatterns[style] != nullptr;
}
NumberFormat*
@@ -1304,11 +1306,11 @@ NumberFormat::makeInstance(const Locale& desiredLocale,
UNumberFormatStyle style,
UBool mustBeDecimalFormat,
UErrorCode& status) {
- if (U_FAILURE(status)) return NULL;
+ if (U_FAILURE(status)) return nullptr;
if (style < 0 || style >= UNUM_FORMAT_STYLE_COUNT) {
status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
// For the purposes of general number formatting, UNUM_NUMBERING_SYSTEM should behave the same
@@ -1327,7 +1329,7 @@ NumberFormat::makeInstance(const Locale& desiredLocale,
// because this method does not take a pattern string.
if (!isStyleSupported(style)) {
status = U_UNSUPPORTED_ERROR;
- return NULL;
+ return nullptr;
}
#if U_PLATFORM_USES_ONLY_WIN32_API
@@ -1369,15 +1371,15 @@ NumberFormat::makeInstance(const Locale& desiredLocale,
// Get cached numbering system
LocalPointer<NumberingSystem> ownedNs;
- NumberingSystem *ns = NULL;
- if (NumberingSystem_cache != NULL) {
+ NumberingSystem *ns = nullptr;
+ if (NumberingSystem_cache != nullptr) {
// TODO: Bad hash key usage, see ticket #8504.
int32_t hashKey = desiredLocale.hashCode();
static UMutex nscacheMutex;
Mutex lock(&nscacheMutex);
ns = (NumberingSystem *)uhash_iget(NumberingSystem_cache, hashKey);
- if (ns == NULL) {
+ if (ns == nullptr) {
ns = NumberingSystem::createInstance(desiredLocale,status);
uhash_iput(NumberingSystem_cache, hashKey, (void*)ns, &status);
}
@@ -1388,25 +1390,25 @@ NumberFormat::makeInstance(const Locale& desiredLocale,
// check results of getting a numbering system
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
if (mustBeDecimalFormat && ns->isAlgorithmic()) {
status = U_UNSUPPORTED_ERROR;
- return NULL;
+ return nullptr;
}
LocalPointer<DecimalFormatSymbols> symbolsToAdopt;
UnicodeString pattern;
- LocalUResourceBundlePointer ownedResource(ures_open(NULL, desiredLocale.getName(), &status));
+ LocalUResourceBundlePointer ownedResource(ures_open(nullptr, desiredLocale.getName(), &status));
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
else {
// Loads the decimal symbols of the desired locale.
symbolsToAdopt.adoptInsteadAndCheckErrorCode(new DecimalFormatSymbols(desiredLocale, status), status);
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
// Load the pattern from data using the common library function
@@ -1418,12 +1420,12 @@ NumberFormat::makeInstance(const Locale& desiredLocale,
pattern = UnicodeString(true, patternPtr, -1);
}
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
if(style==UNUM_CURRENCY || style == UNUM_CURRENCY_ISO || style == UNUM_CURRENCY_ACCOUNTING
|| style == UNUM_CASH_CURRENCY || style == UNUM_CURRENCY_STANDARD){
- const UChar* currPattern = symbolsToAdopt->getCurrencyPattern();
- if(currPattern!=NULL){
+ const char16_t* currPattern = symbolsToAdopt->getCurrencyPattern();
+ if(currPattern!=nullptr){
pattern.setTo(currPattern, u_strlen(currPattern));
}
}
@@ -1458,9 +1460,9 @@ NumberFormat::makeInstance(const Locale& desiredLocale,
}
RuleBasedNumberFormat *r = new RuleBasedNumberFormat(desiredRulesType,nsLoc,status);
- if (r == NULL) {
+ if (r == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
r->setDefaultRuleSet(nsRuleSetName,status);
f.adoptInstead(r);
@@ -1504,7 +1506,7 @@ NumberFormat::makeInstance(const Locale& desiredLocale,
f->setLocaleIDs(ures_getLocaleByType(ownedResource.getAlias(), ULOC_VALID_LOCALE, &status),
ures_getLocaleByType(ownedResource.getAlias(), ULOC_ACTUAL_LOCALE, &status));
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
return f.orphan();
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/numparse_affixes.h b/Build/source/libs/icu/icu-src/source/i18n/numparse_affixes.h
index ad731ed5d80..81b633c2626 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/numparse_affixes.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/numparse_affixes.h
@@ -53,7 +53,7 @@ class U_I18N_API CodePointMatcher : public NumberParseMatcher, public UMemory {
// Note: These need to be outside of the numparse::impl namespace, or Clang will generate a compile error.
#if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN
template class U_I18N_API MaybeStackArray<numparse::impl::CodePointMatcher*, 8>;
-template class U_I18N_API MaybeStackArray<UChar, 4>;
+template class U_I18N_API MaybeStackArray<char16_t, 4>;
template class U_I18N_API MemoryPool<numparse::impl::CodePointMatcher, 8>;
template class U_I18N_API numparse::impl::CompactUnicodeString<4>;
#endif
diff --git a/Build/source/libs/icu/icu-src/source/i18n/numparse_currency.h b/Build/source/libs/icu/icu-src/source/i18n/numparse_currency.h
index a94943312fd..4e99334a31b 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/numparse_currency.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/numparse_currency.h
@@ -44,7 +44,7 @@ class U_I18N_API CombinedCurrencyMatcher : public NumberParseMatcher, public UMe
UnicodeString toString() const override;
private:
- UChar fCurrencyCode[4];
+ char16_t fCurrencyCode[4];
UnicodeString fCurrency1;
UnicodeString fCurrency2;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/numparse_types.h b/Build/source/libs/icu/icu-src/source/i18n/numparse_types.h
index 623f0e80f16..8e881793fd3 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/numparse_types.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/numparse_types.h
@@ -67,7 +67,7 @@ class CompactUnicodeString {
CompactUnicodeString(const UnicodeString& text, UErrorCode& status)
: fBuffer(text.length() + 1, status) {
if (U_FAILURE(status)) { return; }
- uprv_memcpy(fBuffer.getAlias(), text.getBuffer(), sizeof(UChar) * text.length());
+ uprv_memcpy(fBuffer.getAlias(), text.getBuffer(), sizeof(char16_t) * text.length());
fBuffer[text.length()] = 0;
}
@@ -81,7 +81,7 @@ class CompactUnicodeString {
}
private:
- MaybeStackArray<UChar, stackCapacity> fBuffer;
+ MaybeStackArray<char16_t, stackCapacity> fBuffer;
};
@@ -125,7 +125,7 @@ class U_I18N_API ParsedNumber {
/**
* The currency that got consumed.
*/
- UChar currencyCode[4];
+ char16_t currencyCode[4];
ParsedNumber();
diff --git a/Build/source/libs/icu/icu-src/source/i18n/numparse_utils.h b/Build/source/libs/icu/icu-src/source/i18n/numparse_utils.h
index 162954bae09..8fda4f4369b 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/numparse_utils.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/numparse_utils.h
@@ -28,8 +28,8 @@ inline static void putLeadCodePoint(const UnicodeString& input, UnicodeSet* outp
}
}
-inline static void copyCurrencyCode(UChar* dest, const UChar* src) {
- uprv_memcpy(dest, src, sizeof(UChar) * 3);
+inline static void copyCurrencyCode(char16_t* dest, const char16_t* src) {
+ uprv_memcpy(dest, src, sizeof(char16_t) * 3);
dest[3] = 0;
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/numparse_validators.h b/Build/source/libs/icu/icu-src/source/i18n/numparse_validators.h
index 5d43b779d0b..9bb4b482b55 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/numparse_validators.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/numparse_validators.h
@@ -16,33 +16,33 @@ namespace impl {
class ValidationMatcher : public NumberParseMatcher {
public:
- bool match(StringSegment&, ParsedNumber&, UErrorCode&) const U_OVERRIDE {
+ bool match(StringSegment&, ParsedNumber&, UErrorCode&) const override {
// No-op
return false;
}
- bool smokeTest(const StringSegment&) const U_OVERRIDE {
+ bool smokeTest(const StringSegment&) const override {
// No-op
return false;
}
- void postProcess(ParsedNumber& result) const U_OVERRIDE = 0;
+ void postProcess(ParsedNumber& result) const override = 0;
};
class RequireAffixValidator : public ValidationMatcher, public UMemory {
public:
- void postProcess(ParsedNumber& result) const U_OVERRIDE;
+ void postProcess(ParsedNumber& result) const override;
- UnicodeString toString() const U_OVERRIDE;
+ UnicodeString toString() const override;
};
class RequireCurrencyValidator : public ValidationMatcher, public UMemory {
public:
- void postProcess(ParsedNumber& result) const U_OVERRIDE;
+ void postProcess(ParsedNumber& result) const override;
- UnicodeString toString() const U_OVERRIDE;
+ UnicodeString toString() const override;
};
@@ -52,9 +52,9 @@ class RequireDecimalSeparatorValidator : public ValidationMatcher, public UMemor
RequireDecimalSeparatorValidator(bool patternHasDecimalSeparator);
- void postProcess(ParsedNumber& result) const U_OVERRIDE;
+ void postProcess(ParsedNumber& result) const override;
- UnicodeString toString() const U_OVERRIDE;
+ UnicodeString toString() const override;
private:
bool fPatternHasDecimalSeparator;
@@ -63,9 +63,9 @@ class RequireDecimalSeparatorValidator : public ValidationMatcher, public UMemor
class RequireNumberValidator : public ValidationMatcher, public UMemory {
public:
- void postProcess(ParsedNumber& result) const U_OVERRIDE;
+ void postProcess(ParsedNumber& result) const override;
- UnicodeString toString() const U_OVERRIDE;
+ UnicodeString toString() const override;
};
@@ -78,9 +78,9 @@ class MultiplierParseHandler : public ValidationMatcher, public UMemory {
MultiplierParseHandler(::icu::number::Scale multiplier);
- void postProcess(ParsedNumber& result) const U_OVERRIDE;
+ void postProcess(ParsedNumber& result) const override;
- UnicodeString toString() const U_OVERRIDE;
+ UnicodeString toString() const override;
private:
::icu::number::Scale fMultiplier;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/numrange_capi.cpp b/Build/source/libs/icu/icu-src/source/i18n/numrange_capi.cpp
index bd3a9ef5e82..9222969eb49 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/numrange_capi.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/numrange_capi.cpp
@@ -83,7 +83,7 @@ const UFormattedNumberRangeData* number::impl::validateUFormattedNumberRange(
U_CAPI UNumberRangeFormatter* U_EXPORT2
unumrf_openForSkeletonWithCollapseAndIdentityFallback(
- const UChar* skeleton,
+ const char16_t* skeleton,
int32_t skeletonLen,
UNumberRangeCollapse collapse,
UNumberRangeIdentityFallback identityFallback,
@@ -97,8 +97,9 @@ unumrf_openForSkeletonWithCollapseAndIdentityFallback(
}
// Readonly-alias constructor (first argument is whether we are NUL-terminated)
UnicodeString skeletonString(skeletonLen == -1, skeleton, skeletonLen);
+ UParseError tempParseError;
impl->fFormatter = NumberRangeFormatter::withLocale(locale)
- .numberFormatterBoth(NumberFormatter::forSkeleton(skeletonString, *perror, *ec))
+ .numberFormatterBoth(NumberFormatter::forSkeleton(skeletonString, (perror == nullptr) ? tempParseError : *perror, *ec))
.collapse(collapse)
.identityFallback(identityFallback);
return impl->exportForC();
diff --git a/Build/source/libs/icu/icu-src/source/i18n/numrange_fluent.cpp b/Build/source/libs/icu/icu-src/source/i18n/numrange_fluent.cpp
index c36defa3699..0944f3024ff 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/numrange_fluent.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/numrange_fluent.cpp
@@ -204,10 +204,10 @@ UnlocalizedNumberRangeFormatter::UnlocalizedNumberRangeFormatter(const NFS<UNF>&
}
// Make default copy constructor call the NumberRangeFormatterSettings copy constructor.
-UnlocalizedNumberRangeFormatter::UnlocalizedNumberRangeFormatter(UNF&& src) U_NOEXCEPT
+UnlocalizedNumberRangeFormatter::UnlocalizedNumberRangeFormatter(UNF&& src) noexcept
: UNF(static_cast<NFS<UNF>&&>(src)) {}
-UnlocalizedNumberRangeFormatter::UnlocalizedNumberRangeFormatter(NFS<UNF>&& src) U_NOEXCEPT
+UnlocalizedNumberRangeFormatter::UnlocalizedNumberRangeFormatter(NFS<UNF>&& src) noexcept
: NFS<UNF>(std::move(src)) {
// No additional fields to assign
}
@@ -218,7 +218,7 @@ UnlocalizedNumberRangeFormatter& UnlocalizedNumberRangeFormatter::operator=(cons
return *this;
}
-UnlocalizedNumberRangeFormatter& UnlocalizedNumberRangeFormatter::operator=(UNF&& src) U_NOEXCEPT {
+UnlocalizedNumberRangeFormatter& UnlocalizedNumberRangeFormatter::operator=(UNF&& src) noexcept {
NFS<UNF>::operator=(static_cast<NFS<UNF>&&>(src));
// No additional fields to assign
return *this;
@@ -233,10 +233,10 @@ LocalizedNumberRangeFormatter::LocalizedNumberRangeFormatter(const NFS<LNF>& oth
// No additional fields to assign
}
-LocalizedNumberRangeFormatter::LocalizedNumberRangeFormatter(LocalizedNumberRangeFormatter&& src) U_NOEXCEPT
+LocalizedNumberRangeFormatter::LocalizedNumberRangeFormatter(LocalizedNumberRangeFormatter&& src) noexcept
: LNF(static_cast<NFS<LNF>&&>(src)) {}
-LocalizedNumberRangeFormatter::LocalizedNumberRangeFormatter(NFS<LNF>&& src) U_NOEXCEPT
+LocalizedNumberRangeFormatter::LocalizedNumberRangeFormatter(NFS<LNF>&& src) noexcept
: NFS<LNF>(std::move(src)) {
// Steal the compiled formatter
LNF&& _src = static_cast<LNF&&>(src);
@@ -252,7 +252,7 @@ LocalizedNumberRangeFormatter& LocalizedNumberRangeFormatter::operator=(const LN
return *this;
}
-LocalizedNumberRangeFormatter& LocalizedNumberRangeFormatter::operator=(LNF&& src) U_NOEXCEPT {
+LocalizedNumberRangeFormatter& LocalizedNumberRangeFormatter::operator=(LNF&& src) noexcept {
NFS<LNF>::operator=(static_cast<NFS<LNF>&&>(src));
// Steal the compiled formatter
auto* stolen = src.fAtomicFormatter.exchange(nullptr);
diff --git a/Build/source/libs/icu/icu-src/source/i18n/numrange_impl.cpp b/Build/source/libs/icu/icu-src/source/i18n/numrange_impl.cpp
index 06efc7b2815..002a8b2a210 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/numrange_impl.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/numrange_impl.cpp
@@ -38,7 +38,7 @@ class NumberRangeDataSink : public ResourceSink {
public:
NumberRangeDataSink(NumberRangeData& data) : fData(data) {}
- void put(const char* key, ResourceValue& value, UBool /*noFallback*/, UErrorCode& status) U_OVERRIDE {
+ void put(const char* key, ResourceValue& value, UBool /*noFallback*/, UErrorCode& status) override {
ResourceTable miscTable = value.getTable(status);
if (U_FAILURE(status)) { return; }
for (int i = 0; miscTable.getKeyAndValue(i, key, value); i++) {
@@ -92,7 +92,7 @@ class NumberRangeDataSink : public ResourceSink {
void getNumberRangeData(const char* localeName, const char* nsName, NumberRangeData& data, UErrorCode& status) {
if (U_FAILURE(status)) { return; }
- LocalUResourceBundlePointer rb(ures_open(NULL, localeName, &status));
+ LocalUResourceBundlePointer rb(ures_open(nullptr, localeName, &status));
if (U_FAILURE(status)) { return; }
NumberRangeDataSink sink(data);
@@ -239,7 +239,7 @@ void NumberRangeFormatterImpl::formatSingleValue(UFormattedNumberRangeData& data
UErrorCode& status) const {
if (U_FAILURE(status)) { return; }
if (fSameFormatters) {
- int32_t length = NumberFormatterImpl::writeNumber(micros1, data.quantity1, data.getStringRef(), 0, status);
+ int32_t length = NumberFormatterImpl::writeNumber(micros1.simple, data.quantity1, data.getStringRef(), 0, status);
NumberFormatterImpl::writeAffixes(micros1, data.getStringRef(), 0, length, status);
} else {
formatRange(data, micros1, micros2, status);
@@ -256,7 +256,7 @@ void NumberRangeFormatterImpl::formatApproximately (UFormattedNumberRangeData& d
MicroProps microsAppx;
data.quantity1.resetExponent();
fApproximatelyFormatter.preProcess(data.quantity1, microsAppx, status);
- int32_t length = NumberFormatterImpl::writeNumber(microsAppx, data.quantity1, data.getStringRef(), 0, status);
+ int32_t length = NumberFormatterImpl::writeNumber(microsAppx.simple, data.quantity1, data.getStringRef(), 0, status);
length += microsAppx.modInner->apply(data.getStringRef(), 0, length, status);
length += microsAppx.modMiddle->apply(data.getStringRef(), 0, length, status);
microsAppx.modOuter->apply(data.getStringRef(), 0, length, status);
@@ -384,10 +384,10 @@ void NumberRangeFormatterImpl::formatRange(UFormattedNumberRangeData& data,
}
}
- length1 += NumberFormatterImpl::writeNumber(micros1, data.quantity1, string, UPRV_INDEX_0, status);
+ length1 += NumberFormatterImpl::writeNumber(micros1.simple, data.quantity1, string, UPRV_INDEX_0, status);
// ICU-21684: Write the second number to a temp string to avoid repeated insert operations
FormattedStringBuilder tempString;
- NumberFormatterImpl::writeNumber(micros2, data.quantity2, tempString, 0, status);
+ NumberFormatterImpl::writeNumber(micros2.simple, data.quantity2, tempString, 0, status);
length2 += string.insert(UPRV_INDEX_2, tempString, status);
// TODO: Support padding?
diff --git a/Build/source/libs/icu/icu-src/source/i18n/numsys.cpp b/Build/source/libs/icu/icu-src/source/i18n/numsys.cpp
index 015d2a4cb69..0d5c43e4b27 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/numsys.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/numsys.cpp
@@ -149,7 +149,7 @@ NumberingSystem::createInstance(const Locale & inLocale, UErrorCode& status) {
while (!nsResolved) {
localStatus = U_ZERO_ERROR;
count = 0;
- const UChar *nsName = ures_getStringByKeyWithFallback(numberElementsRes.getAlias(), buffer, &count, &localStatus);
+ const char16_t *nsName = ures_getStringByKeyWithFallback(numberElementsRes.getAlias(), buffer, &count, &localStatus);
// Don't stomp on the catastrophic failure of OOM.
if (localStatus == U_MEMORY_ALLOCATION_ERROR) {
status = U_MEMORY_ALLOCATION_ERROR;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/numsys_impl.h b/Build/source/libs/icu/icu-src/source/i18n/numsys_impl.h
index e76e634dd23..42cf102a131 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/numsys_impl.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/numsys_impl.h
@@ -29,8 +29,8 @@ public:
NumsysNameEnumeration(UErrorCode& status);
virtual ~NumsysNameEnumeration();
- static UClassID U_EXPORT2 getStaticClassID(void);
- virtual UClassID getDynamicClassID(void) const override;
+ static UClassID U_EXPORT2 getStaticClassID();
+ virtual UClassID getDynamicClassID() const override;
virtual const UnicodeString* snext(UErrorCode& status) override;
virtual void reset(UErrorCode& status) override;
virtual int32_t count(UErrorCode& status) const override;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/olsontz.cpp b/Build/source/libs/icu/icu-src/source/i18n/olsontz.cpp
index e5c60f8cbe0..260e345d795 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/olsontz.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/olsontz.cpp
@@ -52,10 +52,10 @@ static void debug_tz_msg(const char *pat, ...)
#endif
static UBool arrayEqual(const void *a1, const void *a2, int32_t size) {
- if (a1 == NULL && a2 == NULL) {
+ if (a1 == nullptr && a2 == nullptr) {
return true;
}
- if ((a1 != NULL && a2 == NULL) || (a1 == NULL && a2 != NULL)) {
+ if ((a1 != nullptr && a2 == nullptr) || (a1 == nullptr && a2 != nullptr)) {
return false;
}
if (a1 == a2) {
@@ -97,17 +97,17 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(OlsonTimeZone)
* constructor fails so the resultant object is well-behaved.
*/
void OlsonTimeZone::constructEmpty() {
- canonicalID = NULL;
+ canonicalID = nullptr;
transitionCountPre32 = transitionCount32 = transitionCountPost32 = 0;
- transitionTimesPre32 = transitionTimes32 = transitionTimesPost32 = NULL;
+ transitionTimesPre32 = transitionTimes32 = transitionTimesPost32 = nullptr;
- typeMapData = NULL;
+ typeMapData = nullptr;
typeCount = 1;
typeOffsets = ZEROS;
- finalZone = NULL;
+ finalZone = nullptr;
}
/**
@@ -121,11 +121,11 @@ OlsonTimeZone::OlsonTimeZone(const UResourceBundle* top,
const UResourceBundle* res,
const UnicodeString& tzid,
UErrorCode& ec) :
- BasicTimeZone(tzid), finalZone(NULL)
+ BasicTimeZone(tzid), finalZone(nullptr)
{
clearTransitionRules();
U_DEBUG_TZ_MSG(("OlsonTimeZone(%s)\n", ures_getKey((UResourceBundle*)res)));
- if ((top == NULL || res == NULL) && U_SUCCESS(ec)) {
+ if ((top == nullptr || res == nullptr) && U_SUCCESS(ec)) {
ec = U_ILLEGAL_ARGUMENT_ERROR;
}
if (U_SUCCESS(ec)) {
@@ -142,7 +142,7 @@ OlsonTimeZone::OlsonTimeZone(const UResourceBundle* top,
transitionCountPre32 = static_cast<int16_t>(len >> 1);
if (ec == U_MISSING_RESOURCE_ERROR) {
// No pre-32bit transitions
- transitionTimesPre32 = NULL;
+ transitionTimesPre32 = nullptr;
transitionCountPre32 = 0;
ec = U_ZERO_ERROR;
} else if (U_SUCCESS(ec) && (len < 0 || len > 0x7FFF || (len & 1) != 0) /* len must be even */) {
@@ -155,7 +155,7 @@ OlsonTimeZone::OlsonTimeZone(const UResourceBundle* top,
transitionCount32 = static_cast<int16_t>(len);
if (ec == U_MISSING_RESOURCE_ERROR) {
// No 32bit transitions
- transitionTimes32 = NULL;
+ transitionTimes32 = nullptr;
transitionCount32 = 0;
ec = U_ZERO_ERROR;
} else if (U_SUCCESS(ec) && (len < 0 || len > 0x7FFF)) {
@@ -168,7 +168,7 @@ OlsonTimeZone::OlsonTimeZone(const UResourceBundle* top,
transitionCountPost32 = static_cast<int16_t>(len >> 1);
if (ec == U_MISSING_RESOURCE_ERROR) {
// No pre-32bit transitions
- transitionTimesPost32 = NULL;
+ transitionTimesPost32 = nullptr;
transitionCountPost32 = 0;
ec = U_ZERO_ERROR;
} else if (U_SUCCESS(ec) && (len < 0 || len > 0x7FFF || (len & 1) != 0) /* len must be even */) {
@@ -184,7 +184,7 @@ OlsonTimeZone::OlsonTimeZone(const UResourceBundle* top,
typeCount = (int16_t) len >> 1;
// Type map data must be of the same size as the transition count
- typeMapData = NULL;
+ typeMapData = nullptr;
if (transitionCount() > 0) {
ures_getByKey(res, kTYPEMAP, r.getAlias(), &ec);
typeMapData = ures_getBinary(r.getAlias(), &len, &ec);
@@ -198,14 +198,14 @@ OlsonTimeZone::OlsonTimeZone(const UResourceBundle* top,
// Process final rule and data, if any
if (U_SUCCESS(ec)) {
- const UChar *ruleIdUStr = ures_getStringByKey(res, kFINALRULE, &len, &ec);
+ const char16_t *ruleIdUStr = ures_getStringByKey(res, kFINALRULE, &len, &ec);
ures_getByKey(res, kFINALRAW, r.getAlias(), &ec);
int32_t ruleRaw = ures_getInt(r.getAlias(), &ec);
ures_getByKey(res, kFINALYEAR, r.getAlias(), &ec);
int32_t ruleYear = ures_getInt(r.getAlias(), &ec);
if (U_SUCCESS(ec)) {
UnicodeString ruleID(true, ruleIdUStr, len);
- UResourceBundle *rule = TimeZone::loadRule(top, ruleID, NULL, ec);
+ UResourceBundle *rule = TimeZone::loadRule(top, ruleID, nullptr, ec);
const int32_t *ruleData = ures_getIntVector(rule, &len, &ec);
if (U_SUCCESS(ec) && len == 11) {
UnicodeString emptyStr;
@@ -219,7 +219,7 @@ OlsonTimeZone::OlsonTimeZone(const UResourceBundle* top,
ruleData[8] * U_MILLIS_PER_SECOND,
(SimpleTimeZone::TimeMode) ruleData[9],
ruleData[10] * U_MILLIS_PER_SECOND, ec);
- if (finalZone == NULL) {
+ if (finalZone == nullptr) {
ec = U_MEMORY_ALLOCATION_ERROR;
} else {
finalStartYear = ruleYear;
@@ -373,7 +373,7 @@ int32_t OlsonTimeZone::getOffset(uint8_t era, int32_t year, int32_t month,
year = -year;
}
- if (finalZone != NULL && year >= finalStartYear) {
+ if (finalZone != nullptr && year >= finalStartYear) {
return finalZone->getOffset(era, year, month, dom, dow,
millis, monthLength, ec);
}
@@ -393,7 +393,7 @@ void OlsonTimeZone::getOffset(UDate date, UBool local, int32_t& rawoff,
if (U_FAILURE(ec)) {
return;
}
- if (finalZone != NULL && date >= finalStartMillis) {
+ if (finalZone != nullptr && date >= finalStartMillis) {
finalZone->getOffset(date, local, rawoff, dstoff, ec);
} else {
getHistoricalOffset(date, local, kFormer, kLatter, rawoff, dstoff);
@@ -406,7 +406,7 @@ void OlsonTimeZone::getOffsetFromLocal(UDate date, UTimeZoneLocalOption nonExist
if (U_FAILURE(ec)) {
return;
}
- if (finalZone != NULL && date >= finalStartMillis) {
+ if (finalZone != nullptr && date >= finalStartMillis) {
finalZone->getOffsetFromLocal(date, nonExistingTimeOpt, duplicatedTimeOpt, rawoff, dstoff, ec);
} else {
getHistoricalOffset(date, true, nonExistingTimeOpt, duplicatedTimeOpt, rawoff, dstoff);
@@ -564,7 +564,7 @@ UBool OlsonTimeZone::useDaylightTime() const {
// and returns true if so.
UDate current = uprv_getUTCtime();
- if (finalZone != NULL && current >= finalStartMillis) {
+ if (finalZone != nullptr && current >= finalStartMillis) {
return finalZone->useDaylightTime();
}
@@ -591,7 +591,7 @@ UBool OlsonTimeZone::useDaylightTime() const {
}
int32_t
OlsonTimeZone::getDSTSavings() const{
- if (finalZone != NULL){
+ if (finalZone != nullptr){
return finalZone->getDSTSavings();
}
return TimeZone::getDSTSavings();
@@ -611,7 +611,7 @@ OlsonTimeZone::hasSameRules(const TimeZone &other) const {
return true;
}
const OlsonTimeZone* z = dynamic_cast<const OlsonTimeZone*>(&other);
- if (z == NULL) {
+ if (z == nullptr) {
return false;
}
@@ -624,13 +624,13 @@ OlsonTimeZone::hasSameRules(const TimeZone &other) const {
// If the pointers are not equal, the zones may still
// be equal if their rules and transitions are equal
- if ((finalZone == NULL && z->finalZone != NULL)
- || (finalZone != NULL && z->finalZone == NULL)
- || (finalZone != NULL && z->finalZone != NULL && *finalZone != *z->finalZone)) {
+ if ((finalZone == nullptr && z->finalZone != nullptr)
+ || (finalZone != nullptr && z->finalZone == nullptr)
+ || (finalZone != nullptr && z->finalZone != nullptr && *finalZone != *z->finalZone)) {
return false;
}
- if (finalZone != NULL) {
+ if (finalZone != nullptr) {
if (finalStartYear != z->finalStartYear || finalStartMillis != z->finalStartMillis) {
return false;
}
@@ -651,34 +651,34 @@ OlsonTimeZone::hasSameRules(const TimeZone &other) const {
}
void
-OlsonTimeZone::clearTransitionRules(void) {
- initialRule = NULL;
- firstTZTransition = NULL;
- firstFinalTZTransition = NULL;
- historicRules = NULL;
+OlsonTimeZone::clearTransitionRules() {
+ initialRule = nullptr;
+ firstTZTransition = nullptr;
+ firstFinalTZTransition = nullptr;
+ historicRules = nullptr;
historicRuleCount = 0;
- finalZoneWithStartYear = NULL;
+ finalZoneWithStartYear = nullptr;
firstTZTransitionIdx = 0;
transitionRulesInitOnce.reset();
}
void
-OlsonTimeZone::deleteTransitionRules(void) {
- if (initialRule != NULL) {
+OlsonTimeZone::deleteTransitionRules() {
+ if (initialRule != nullptr) {
delete initialRule;
}
- if (firstTZTransition != NULL) {
+ if (firstTZTransition != nullptr) {
delete firstTZTransition;
}
- if (firstFinalTZTransition != NULL) {
+ if (firstFinalTZTransition != nullptr) {
delete firstFinalTZTransition;
}
- if (finalZoneWithStartYear != NULL) {
+ if (finalZoneWithStartYear != nullptr) {
delete finalZoneWithStartYear;
}
- if (historicRules != NULL) {
+ if (historicRules != nullptr) {
for (int i = 0; i < historicRuleCount; i++) {
- if (historicRules[i] != NULL) {
+ if (historicRules[i] != nullptr) {
delete historicRules[i];
}
}
@@ -720,7 +720,7 @@ OlsonTimeZone::initTransitionRules(UErrorCode& status) {
dst = initialDstOffset() * U_MILLIS_PER_SECOND;
initialRule = new InitialTimeZoneRule((dst == 0 ? stdName : dstName), raw, dst);
// Check to make sure initialRule was created
- if (initialRule == NULL) {
+ if (initialRule == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
deleteTransitionRules();
return;
@@ -745,7 +745,7 @@ OlsonTimeZone::initTransitionRules(UErrorCode& status) {
} else {
// Build historic rule array
UDate* times = (UDate*)uprv_malloc(sizeof(UDate)*transCount); /* large enough to store all transition times */
- if (times == NULL) {
+ if (times == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
deleteTransitionRules();
return;
@@ -756,7 +756,7 @@ OlsonTimeZone::initTransitionRules(UErrorCode& status) {
for (transitionIdx = firstTZTransitionIdx; transitionIdx < transCount; transitionIdx++) {
if (typeIdx == (int16_t)typeMapData[transitionIdx]) {
UDate tt = (UDate)transitionTime(transitionIdx);
- if (finalZone == NULL || tt <= finalStartMillis) {
+ if (finalZone == nullptr || tt <= finalStartMillis) {
// Exclude transitions after finalMillis
times[nTimes++] = tt;
}
@@ -766,24 +766,24 @@ OlsonTimeZone::initTransitionRules(UErrorCode& status) {
// Create a TimeArrayTimeZoneRule
raw = typeOffsets[typeIdx << 1] * U_MILLIS_PER_SECOND;
dst = typeOffsets[(typeIdx << 1) + 1] * U_MILLIS_PER_SECOND;
- if (historicRules == NULL) {
+ if (historicRules == nullptr) {
historicRuleCount = typeCount;
historicRules = (TimeArrayTimeZoneRule**)uprv_malloc(sizeof(TimeArrayTimeZoneRule*)*historicRuleCount);
- if (historicRules == NULL) {
+ if (historicRules == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
deleteTransitionRules();
uprv_free(times);
return;
}
for (int i = 0; i < historicRuleCount; i++) {
- // Initialize TimeArrayTimeZoneRule pointers as NULL
- historicRules[i] = NULL;
+ // Initialize TimeArrayTimeZoneRule pointers as nullptr
+ historicRules[i] = nullptr;
}
}
historicRules[typeIdx] = new TimeArrayTimeZoneRule((dst == 0 ? stdName : dstName),
raw, dst, times, nTimes, DateTimeRule::UTC_TIME);
// Check for memory allocation error
- if (historicRules[typeIdx] == NULL) {
+ if (historicRules[typeIdx] == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
deleteTransitionRules();
return;
@@ -797,17 +797,17 @@ OlsonTimeZone::initTransitionRules(UErrorCode& status) {
firstTZTransition = new TimeZoneTransition((UDate)transitionTime(firstTZTransitionIdx),
*initialRule, *historicRules[typeIdx]);
// Check to make sure firstTZTransition was created.
- if (firstTZTransition == NULL) {
+ if (firstTZTransition == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
deleteTransitionRules();
return;
}
}
}
- if (finalZone != NULL) {
+ if (finalZone != nullptr) {
// Get the first occurrence of final rule starts
UDate startTime = (UDate)finalStartMillis;
- TimeZoneRule *firstFinalRule = NULL;
+ TimeZoneRule *firstFinalRule = nullptr;
if (finalZone->useDaylightTime()) {
/*
@@ -819,7 +819,7 @@ OlsonTimeZone::initTransitionRules(UErrorCode& status) {
*/
finalZoneWithStartYear = finalZone->clone();
// Check to make sure finalZone was actually cloned.
- if (finalZoneWithStartYear == NULL) {
+ if (finalZoneWithStartYear == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
deleteTransitionRules();
return;
@@ -830,7 +830,7 @@ OlsonTimeZone::initTransitionRules(UErrorCode& status) {
finalZoneWithStartYear->getNextTransition(startTime, false, tzt);
firstFinalRule = tzt.getTo()->clone();
// Check to make sure firstFinalRule received proper clone.
- if (firstFinalRule == NULL) {
+ if (firstFinalRule == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
deleteTransitionRules();
return;
@@ -840,7 +840,7 @@ OlsonTimeZone::initTransitionRules(UErrorCode& status) {
// final rule with no transitions
finalZoneWithStartYear = finalZone->clone();
// Check to make sure finalZone was actually cloned.
- if (finalZoneWithStartYear == NULL) {
+ if (finalZoneWithStartYear == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
deleteTransitionRules();
return;
@@ -849,23 +849,23 @@ OlsonTimeZone::initTransitionRules(UErrorCode& status) {
firstFinalRule = new TimeArrayTimeZoneRule(tzid,
finalZone->getRawOffset(), 0, &startTime, 1, DateTimeRule::UTC_TIME);
// Check firstFinalRule was properly created.
- if (firstFinalRule == NULL) {
+ if (firstFinalRule == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
deleteTransitionRules();
return;
}
}
- TimeZoneRule *prevRule = NULL;
+ TimeZoneRule *prevRule = nullptr;
if (transCount > 0) {
prevRule = historicRules[typeMapData[transCount - 1]];
}
- if (prevRule == NULL) {
+ if (prevRule == nullptr) {
// No historic transitions, but only finalZone available
prevRule = initialRule;
}
firstFinalTZTransition = new TimeZoneTransition();
// Check to make sure firstFinalTZTransition was created before dereferencing
- if (firstFinalTZTransition == NULL) {
+ if (firstFinalTZTransition == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
deleteTransitionRules();
return;
@@ -884,7 +884,7 @@ OlsonTimeZone::getNextTransition(UDate base, UBool inclusive, TimeZoneTransition
return false;
}
- if (finalZone != NULL) {
+ if (finalZone != nullptr) {
if (inclusive && base == firstFinalTZTransition->getTime()) {
result = *firstFinalTZTransition;
return true;
@@ -898,7 +898,7 @@ OlsonTimeZone::getNextTransition(UDate base, UBool inclusive, TimeZoneTransition
}
}
}
- if (historicRules != NULL) {
+ if (historicRules != nullptr) {
// Find a historical transition
int16_t transCount = transitionCount();
int16_t ttidx = transCount - 1;
@@ -909,7 +909,7 @@ OlsonTimeZone::getNextTransition(UDate base, UBool inclusive, TimeZoneTransition
}
}
if (ttidx == transCount - 1) {
- if (firstFinalTZTransition != NULL) {
+ if (firstFinalTZTransition != nullptr) {
result = *firstFinalTZTransition;
return true;
} else {
@@ -949,7 +949,7 @@ OlsonTimeZone::getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransi
return false;
}
- if (finalZone != NULL) {
+ if (finalZone != nullptr) {
if (inclusive && base == firstFinalTZTransition->getTime()) {
result = *firstFinalTZTransition;
return true;
@@ -964,7 +964,7 @@ OlsonTimeZone::getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransi
}
}
- if (historicRules != NULL) {
+ if (historicRules != nullptr) {
// Find a historical transition
int16_t ttidx = transitionCount() - 1;
for (; ttidx >= firstTZTransitionIdx; ttidx--) {
@@ -1013,16 +1013,16 @@ OlsonTimeZone::countTransitionRules(UErrorCode& status) const {
}
int32_t count = 0;
- if (historicRules != NULL) {
+ if (historicRules != nullptr) {
// historicRules may contain null entries when original zoneinfo data
// includes non transition data.
for (int32_t i = 0; i < historicRuleCount; i++) {
- if (historicRules[i] != NULL) {
+ if (historicRules[i] != nullptr) {
count++;
}
}
}
- if (finalZone != NULL) {
+ if (finalZone != nullptr) {
if (finalZone->useDaylightTime()) {
count += 2;
} else {
@@ -1050,11 +1050,11 @@ OlsonTimeZone::getTimeZoneRules(const InitialTimeZoneRule*& initial,
// Transition rules
int32_t cnt = 0;
- if (historicRules != NULL && trscount > cnt) {
+ if (historicRules != nullptr && trscount > cnt) {
// historicRules may contain null entries when original zoneinfo data
// includes non transition data.
for (int32_t i = 0; i < historicRuleCount; i++) {
- if (historicRules[i] != NULL) {
+ if (historicRules[i] != nullptr) {
trsrules[cnt++] = historicRules[i];
if (cnt >= trscount) {
break;
@@ -1062,7 +1062,7 @@ OlsonTimeZone::getTimeZoneRules(const InitialTimeZoneRule*& initial,
}
}
}
- if (finalZoneWithStartYear != NULL && trscount > cnt) {
+ if (finalZoneWithStartYear != nullptr && trscount > cnt) {
const InitialTimeZoneRule *tmpini;
int32_t tmpcnt = trscount - cnt;
finalZoneWithStartYear->getTimeZoneRules(tmpini, &trsrules[cnt], tmpcnt, status);
diff --git a/Build/source/libs/icu/icu-src/source/i18n/olsontz.h b/Build/source/libs/icu/icu-src/source/i18n/olsontz.h
index 525bbd2b129..9fe0d5dfed1 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/olsontz.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/olsontz.h
@@ -263,7 +263,7 @@ class U_I18N_API OlsonTimeZone: public BasicTimeZone {
/**
* Gets the <code>InitialTimeZoneRule</code> and the set of <code>TimeZoneRule</code>
* which represent time transitions for this time zone. On successful return,
- * the argument initial points to non-NULL <code>InitialTimeZoneRule</code> and
+ * the argument initial points to non-nullptr <code>InitialTimeZoneRule</code> and
* the array trsrules is filled with 0 or multiple <code>TimeZoneRule</code>
* instances up to the size specified by trscount. The results are referencing the
* rule instance held by this time zone instance. Therefore, after this time zone
@@ -282,7 +282,7 @@ class U_I18N_API OlsonTimeZone: public BasicTimeZone {
* Internal API returning the canonical ID of this zone.
* This ID won't be affected by setID().
*/
- const UChar *getCanonicalID() const;
+ const char16_t *getCanonicalID() const;
private:
/**
@@ -328,20 +328,20 @@ private:
/**
* Time of each transition in seconds from 1970 epoch before 32bit second range (<= 1900).
* Each transition in this range is represented by a pair of int32_t.
- * Length is transitionCount int32_t's. NULL if no transitions in this range.
+ * Length is transitionCount int32_t's. nullptr if no transitions in this range.
*/
const int32_t *transitionTimesPre32; // alias into res; do not delete
/**
* Time of each transition in seconds from 1970 epoch in 32bit second range.
- * Length is transitionCount int32_t's. NULL if no transitions in this range.
+ * Length is transitionCount int32_t's. nullptr if no transitions in this range.
*/
const int32_t *transitionTimes32; // alias into res; do not delete
/**
* Time of each transition in seconds from 1970 epoch after 32bit second range (>= 2038).
* Each transition in this range is represented by a pair of int32_t.
- * Length is transitionCount int32_t's. NULL if no transitions in this range.
+ * Length is transitionCount int32_t's. nullptr if no transitions in this range.
*/
const int32_t *transitionTimesPost32; // alias into res; do not delete
@@ -360,14 +360,14 @@ private:
/**
* Type description data, consisting of transitionCount uint8_t
* type indices (from 0..typeCount-1).
- * Length is transitionCount int16_t's. NULL if no transitions.
+ * Length is transitionCount int16_t's. nullptr if no transitions.
*/
const uint8_t *typeMapData; // alias into res; do not delete
/**
* A SimpleTimeZone that governs the behavior for date >= finalMillis.
*/
- SimpleTimeZone *finalZone; // owned, may be NULL
+ SimpleTimeZone *finalZone; // owned, may be nullptr
/**
* For date >= finalMillis, the finalZone will be used.
@@ -382,11 +382,11 @@ private:
/*
* Canonical (CLDR) ID of this zone
*/
- const UChar *canonicalID;
+ const char16_t *canonicalID;
/* BasicTimeZone support */
- void clearTransitionRules(void);
- void deleteTransitionRules(void);
+ void clearTransitionRules();
+ void deleteTransitionRules();
void checkTransitionRules(UErrorCode& status) const;
public: // Internal, for access from plain C code
@@ -441,7 +441,7 @@ OlsonTimeZone::initialDstOffset() const {
return typeOffsets[1];
}
-inline const UChar*
+inline const char16_t*
OlsonTimeZone::getCanonicalID() const {
return canonicalID;
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/persncal.cpp b/Build/source/libs/icu/icu-src/source/i18n/persncal.cpp
index 9db47c98912..ab13f434348 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/persncal.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/persncal.cpp
@@ -58,6 +58,7 @@ static const int32_t kPersianCalendarLimits[UCAL_FIELD_COUNT][4] = {
{/*N/A*/-1,/*N/A*/-1,/*N/A*/-1,/*N/A*/-1}, // JULIAN_DAY
{/*N/A*/-1,/*N/A*/-1,/*N/A*/-1,/*N/A*/-1}, // MILLISECONDS_IN_DAY
{/*N/A*/-1,/*N/A*/-1,/*N/A*/-1,/*N/A*/-1}, // IS_LEAP_MONTH
+ { 0, 0, 11, 11}, // ORDINAL_MONTH
};
U_NAMESPACE_BEGIN
@@ -229,21 +230,26 @@ void PersianCalendar::handleComputeFields(int32_t julianDay, UErrorCode &/*statu
internalSet(UCAL_YEAR, year);
internalSet(UCAL_EXTENDED_YEAR, year);
internalSet(UCAL_MONTH, month);
+ internalSet(UCAL_ORDINAL_MONTH, month);
internalSet(UCAL_DAY_OF_MONTH, dayOfMonth);
internalSet(UCAL_DAY_OF_YEAR, dayOfYear);
}
-UBool
-PersianCalendar::inDaylightTime(UErrorCode& status) const
-{
- // copied from GregorianCalendar
- if (U_FAILURE(status) || !getTimeZone().useDaylightTime())
- return false;
+constexpr uint32_t kPersianRelatedYearDiff = 622;
- // Force an update of the state of the Calendar.
- ((PersianCalendar*)this)->complete(status); // cast away const
+int32_t PersianCalendar::getRelatedYear(UErrorCode &status) const
+{
+ int32_t year = get(UCAL_EXTENDED_YEAR, status);
+ if (U_FAILURE(status)) {
+ return 0;
+ }
+ return year + kPersianRelatedYearDiff;
+}
- return (UBool)(U_SUCCESS(status) ? (internalGet(UCAL_DST_OFFSET) != 0) : false);
+void PersianCalendar::setRelatedYear(int32_t year)
+{
+ // set extended year
+ set(UCAL_EXTENDED_YEAR, year - kPersianRelatedYearDiff);
}
// default century
diff --git a/Build/source/libs/icu/icu-src/source/i18n/persncal.h b/Build/source/libs/icu/icu-src/source/i18n/persncal.h
index d0f2ee5ec20..b943321a54d 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/persncal.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/persncal.h
@@ -255,7 +255,7 @@ class PersianCalendar : public Calendar {
* same class ID. Objects of other classes have different class IDs.
* @internal
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
/**
* Return the class ID for this class. This is useful only for comparing to a return
@@ -268,7 +268,7 @@ class PersianCalendar : public Calendar {
* @return The class ID for all objects of this class.
* @internal
*/
- U_I18N_API static UClassID U_EXPORT2 getStaticClassID(void);
+ U_I18N_API static UClassID U_EXPORT2 getStaticClassID();
/**
* return the calendar type, "persian".
@@ -278,22 +278,24 @@ class PersianCalendar : public Calendar {
*/
virtual const char * getType() const override;
- private:
- PersianCalendar(); // default constructor not implemented
-
- protected:
+ /**
+ * @return The related Gregorian year; will be obtained by modifying the value
+ * obtained by get from UCAL_EXTENDED_YEAR field
+ * @internal
+ */
+ virtual int32_t getRelatedYear(UErrorCode &status) const override;
/**
- * (Overrides Calendar) Return true if the current date for this Calendar is in
- * Daylight Savings Time. Recognizes DST_OFFSET, if it is set.
- *
- * @param status Fill-in parameter which receives the status of this operation.
- * @return True if the current date for this Calendar is in Daylight Savings Time,
- * false, otherwise.
+ * @param year The related Gregorian year to set; will be modified as necessary then
+ * set in UCAL_EXTENDED_YEAR field
* @internal
*/
- virtual UBool inDaylightTime(UErrorCode& status) const override;
+ virtual void setRelatedYear(int32_t year) override;
+
+ private:
+ PersianCalendar(); // default constructor not implemented
+ protected:
/**
* Returns true because the Persian Calendar does have a default century
* @internal
diff --git a/Build/source/libs/icu/icu-src/source/i18n/pluralranges.cpp b/Build/source/libs/icu/icu-src/source/i18n/pluralranges.cpp
index da10e2117d0..403836f6275 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/pluralranges.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/pluralranges.cpp
@@ -26,7 +26,7 @@ class PluralRangesDataSink : public ResourceSink {
public:
PluralRangesDataSink(StandardPluralRanges& output) : fOutput(output) {}
- void put(const char* /*key*/, ResourceValue& value, UBool /*noFallback*/, UErrorCode& status) U_OVERRIDE {
+ void put(const char* /*key*/, ResourceValue& value, UBool /*noFallback*/, UErrorCode& status) override {
ResourceArray entriesArray = value.getArray(status);
if (U_FAILURE(status)) { return; }
fOutput.setCapacity(entriesArray.getSize(), status);
@@ -66,7 +66,7 @@ void getPluralRangesData(const Locale& locale, StandardPluralRanges& output, UEr
int32_t setLen;
// Not all languages are covered: fail gracefully
UErrorCode internalStatus = U_ZERO_ERROR;
- const UChar* set = ures_getStringByKeyWithFallback(rb.getAlias(), dataPath.data(), &setLen, &internalStatus);
+ const char16_t* set = ures_getStringByKeyWithFallback(rb.getAlias(), dataPath.data(), &setLen, &internalStatus);
if (U_FAILURE(internalStatus)) { return; }
dataPath.clear();
diff --git a/Build/source/libs/icu/icu-src/source/i18n/plurfmt.cpp b/Build/source/libs/icu/icu-src/source/i18n/plurfmt.cpp
index 3b8f3a660e5..33a539cd198 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/plurfmt.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/plurfmt.cpp
@@ -31,7 +31,7 @@ U_NAMESPACE_BEGIN
using number::impl::DecimalQuantity;
-static const UChar OTHER_STRING[] = {
+static const char16_t OTHER_STRING[] = {
0x6F, 0x74, 0x68, 0x65, 0x72, 0 // "other"
};
@@ -40,23 +40,23 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(PluralFormat)
PluralFormat::PluralFormat(UErrorCode& status)
: locale(Locale::getDefault()),
msgPattern(status),
- numberFormat(NULL),
+ numberFormat(nullptr),
offset(0) {
- init(NULL, UPLURAL_TYPE_CARDINAL, status);
+ init(nullptr, UPLURAL_TYPE_CARDINAL, status);
}
PluralFormat::PluralFormat(const Locale& loc, UErrorCode& status)
: locale(loc),
msgPattern(status),
- numberFormat(NULL),
+ numberFormat(nullptr),
offset(0) {
- init(NULL, UPLURAL_TYPE_CARDINAL, status);
+ init(nullptr, UPLURAL_TYPE_CARDINAL, status);
}
PluralFormat::PluralFormat(const PluralRules& rules, UErrorCode& status)
: locale(Locale::getDefault()),
msgPattern(status),
- numberFormat(NULL),
+ numberFormat(nullptr),
offset(0) {
init(&rules, UPLURAL_TYPE_COUNT, status);
}
@@ -66,7 +66,7 @@ PluralFormat::PluralFormat(const Locale& loc,
UErrorCode& status)
: locale(loc),
msgPattern(status),
- numberFormat(NULL),
+ numberFormat(nullptr),
offset(0) {
init(&rules, UPLURAL_TYPE_COUNT, status);
}
@@ -76,18 +76,18 @@ PluralFormat::PluralFormat(const Locale& loc,
UErrorCode& status)
: locale(loc),
msgPattern(status),
- numberFormat(NULL),
+ numberFormat(nullptr),
offset(0) {
- init(NULL, type, status);
+ init(nullptr, type, status);
}
PluralFormat::PluralFormat(const UnicodeString& pat,
UErrorCode& status)
: locale(Locale::getDefault()),
msgPattern(status),
- numberFormat(NULL),
+ numberFormat(nullptr),
offset(0) {
- init(NULL, UPLURAL_TYPE_CARDINAL, status);
+ init(nullptr, UPLURAL_TYPE_CARDINAL, status);
applyPattern(pat, status);
}
@@ -96,9 +96,9 @@ PluralFormat::PluralFormat(const Locale& loc,
UErrorCode& status)
: locale(loc),
msgPattern(status),
- numberFormat(NULL),
+ numberFormat(nullptr),
offset(0) {
- init(NULL, UPLURAL_TYPE_CARDINAL, status);
+ init(nullptr, UPLURAL_TYPE_CARDINAL, status);
applyPattern(pat, status);
}
@@ -107,7 +107,7 @@ PluralFormat::PluralFormat(const PluralRules& rules,
UErrorCode& status)
: locale(Locale::getDefault()),
msgPattern(status),
- numberFormat(NULL),
+ numberFormat(nullptr),
offset(0) {
init(&rules, UPLURAL_TYPE_COUNT, status);
applyPattern(pat, status);
@@ -119,7 +119,7 @@ PluralFormat::PluralFormat(const Locale& loc,
UErrorCode& status)
: locale(loc),
msgPattern(status),
- numberFormat(NULL),
+ numberFormat(nullptr),
offset(0) {
init(&rules, UPLURAL_TYPE_COUNT, status);
applyPattern(pat, status);
@@ -131,9 +131,9 @@ PluralFormat::PluralFormat(const Locale& loc,
UErrorCode& status)
: locale(loc),
msgPattern(status),
- numberFormat(NULL),
+ numberFormat(nullptr),
offset(0) {
- init(NULL, type, status);
+ init(nullptr, type, status);
applyPattern(pat, status);
}
@@ -141,7 +141,7 @@ PluralFormat::PluralFormat(const PluralFormat& other)
: Format(other),
locale(other.locale),
msgPattern(other.msgPattern),
- numberFormat(NULL),
+ numberFormat(nullptr),
offset(other.offset) {
copyObjects(other);
}
@@ -149,19 +149,19 @@ PluralFormat::PluralFormat(const PluralFormat& other)
void
PluralFormat::copyObjects(const PluralFormat& other) {
UErrorCode status = U_ZERO_ERROR;
- if (numberFormat != NULL) {
+ if (numberFormat != nullptr) {
delete numberFormat;
}
- if (pluralRulesWrapper.pluralRules != NULL) {
+ if (pluralRulesWrapper.pluralRules != nullptr) {
delete pluralRulesWrapper.pluralRules;
}
- if (other.numberFormat == NULL) {
+ if (other.numberFormat == nullptr) {
numberFormat = NumberFormat::createInstance(locale, status);
} else {
numberFormat = other.numberFormat->clone();
}
- if (other.pluralRulesWrapper.pluralRules == NULL) {
+ if (other.pluralRulesWrapper.pluralRules == nullptr) {
pluralRulesWrapper.pluralRules = PluralRules::forLocale(locale, status);
} else {
pluralRulesWrapper.pluralRules = other.pluralRulesWrapper.pluralRules->clone();
@@ -179,11 +179,11 @@ PluralFormat::init(const PluralRules* rules, UPluralType type, UErrorCode& statu
return;
}
- if (rules==NULL) {
+ if (rules==nullptr) {
pluralRulesWrapper.pluralRules = PluralRules::forLocale(locale, type, status);
} else {
pluralRulesWrapper.pluralRules = rules->clone();
- if (pluralRulesWrapper.pluralRules == NULL) {
+ if (pluralRulesWrapper.pluralRules == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -194,7 +194,7 @@ PluralFormat::init(const PluralRules* rules, UPluralType type, UErrorCode& statu
void
PluralFormat::applyPattern(const UnicodeString& newPattern, UErrorCode& status) {
- msgPattern.parsePluralStyle(newPattern, NULL, status);
+ msgPattern.parsePluralStyle(newPattern, nullptr, status);
if (U_FAILURE(status)) {
msgPattern.clear();
offset = 0;
@@ -343,9 +343,9 @@ PluralFormat::setLocale(const Locale& loc, UErrorCode& status) {
msgPattern.clear();
delete numberFormat;
offset = 0;
- numberFormat = NULL;
+ numberFormat = nullptr;
pluralRulesWrapper.reset();
- init(NULL, UPLURAL_TYPE_CARDINAL, status);
+ init(nullptr, UPLURAL_TYPE_CARDINAL, status);
}
void
@@ -354,7 +354,7 @@ PluralFormat::setNumberFormat(const NumberFormat* format, UErrorCode& status) {
return;
}
NumberFormat* nf = format->clone();
- if (nf != NULL) {
+ if (nf != nullptr) {
delete numberFormat;
numberFormat = nf;
} else {
@@ -393,10 +393,10 @@ PluralFormat::operator==(const Format& other) const {
return
locale == o.locale &&
msgPattern == o.msgPattern && // implies same offset
- (numberFormat == NULL) == (o.numberFormat == NULL) &&
- (numberFormat == NULL || *numberFormat == *o.numberFormat) &&
- (pluralRulesWrapper.pluralRules == NULL) == (o.pluralRulesWrapper.pluralRules == NULL) &&
- (pluralRulesWrapper.pluralRules == NULL ||
+ (numberFormat == nullptr) == (o.numberFormat == nullptr) &&
+ (numberFormat == nullptr || *numberFormat == *o.numberFormat) &&
+ (pluralRulesWrapper.pluralRules == nullptr) == (o.pluralRulesWrapper.pluralRules == nullptr) &&
+ (pluralRulesWrapper.pluralRules == nullptr ||
*pluralRulesWrapper.pluralRules == *o.pluralRulesWrapper.pluralRules);
}
@@ -548,7 +548,7 @@ void PluralFormat::parseType(const UnicodeString& source, const NFRule *rbnfLeni
}
UnicodeString currArg = pattern.tempSubString(partStart->getLimit(), partLimit->getIndex() - partStart->getLimit());
- if (rbnfLenientScanner != NULL) {
+ if (rbnfLenientScanner != nullptr) {
// Check if non-lenient rule finds the text before call lenient parsing
int32_t tempIndex = source.indexOf(currArg, startingAt);
if (tempIndex >= 0) {
@@ -595,7 +595,7 @@ UnicodeString PluralFormat::PluralSelectorAdapter::select(void *context, double
void PluralFormat::PluralSelectorAdapter::reset() {
delete pluralRules;
- pluralRules = NULL;
+ pluralRules = nullptr;
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/plurrule.cpp b/Build/source/libs/icu/icu-src/source/i18n/plurrule.cpp
index 431a3ce04ba..839d14147cc 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/plurrule.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/plurrule.cpp
@@ -12,6 +12,8 @@
#include <math.h>
#include <stdio.h>
+#include <utility>
+
#include "unicode/utypes.h"
#include "unicode/localpointer.h"
#include "unicode/plurrule.h"
@@ -20,6 +22,7 @@
#include "unicode/numfmt.h"
#include "unicode/decimfmt.h"
#include "unicode/numberrangeformatter.h"
+#include "bytesinkutil.h"
#include "charstr.h"
#include "cmemory.h"
#include "cstring.h"
@@ -40,6 +43,7 @@
#include "util.h"
#include "pluralranges.h"
#include "numrange_impl.h"
+#include "ulocimp.h"
#if !UCONFIG_NO_FORMATTING
@@ -50,24 +54,24 @@ using icu::number::impl::DecNum;
using icu::number::impl::DecimalQuantity;
using icu::number::impl::RoundingMode;
-static const UChar PLURAL_KEYWORD_OTHER[]={LOW_O,LOW_T,LOW_H,LOW_E,LOW_R,0};
-static const UChar PLURAL_DEFAULT_RULE[]={LOW_O,LOW_T,LOW_H,LOW_E,LOW_R,COLON,SPACE,LOW_N,0};
-static const UChar PK_IN[]={LOW_I,LOW_N,0};
-static const UChar PK_NOT[]={LOW_N,LOW_O,LOW_T,0};
-static const UChar PK_IS[]={LOW_I,LOW_S,0};
-static const UChar PK_MOD[]={LOW_M,LOW_O,LOW_D,0};
-static const UChar PK_AND[]={LOW_A,LOW_N,LOW_D,0};
-static const UChar PK_OR[]={LOW_O,LOW_R,0};
-static const UChar PK_VAR_N[]={LOW_N,0};
-static const UChar PK_VAR_I[]={LOW_I,0};
-static const UChar PK_VAR_F[]={LOW_F,0};
-static const UChar PK_VAR_T[]={LOW_T,0};
-static const UChar PK_VAR_E[]={LOW_E,0};
-static const UChar PK_VAR_C[]={LOW_C,0};
-static const UChar PK_VAR_V[]={LOW_V,0};
-static const UChar PK_WITHIN[]={LOW_W,LOW_I,LOW_T,LOW_H,LOW_I,LOW_N,0};
-static const UChar PK_DECIMAL[]={LOW_D,LOW_E,LOW_C,LOW_I,LOW_M,LOW_A,LOW_L,0};
-static const UChar PK_INTEGER[]={LOW_I,LOW_N,LOW_T,LOW_E,LOW_G,LOW_E,LOW_R,0};
+static const char16_t PLURAL_KEYWORD_OTHER[]={LOW_O,LOW_T,LOW_H,LOW_E,LOW_R,0};
+static const char16_t PLURAL_DEFAULT_RULE[]={LOW_O,LOW_T,LOW_H,LOW_E,LOW_R,COLON,SPACE,LOW_N,0};
+static const char16_t PK_IN[]={LOW_I,LOW_N,0};
+static const char16_t PK_NOT[]={LOW_N,LOW_O,LOW_T,0};
+static const char16_t PK_IS[]={LOW_I,LOW_S,0};
+static const char16_t PK_MOD[]={LOW_M,LOW_O,LOW_D,0};
+static const char16_t PK_AND[]={LOW_A,LOW_N,LOW_D,0};
+static const char16_t PK_OR[]={LOW_O,LOW_R,0};
+static const char16_t PK_VAR_N[]={LOW_N,0};
+static const char16_t PK_VAR_I[]={LOW_I,0};
+static const char16_t PK_VAR_F[]={LOW_F,0};
+static const char16_t PK_VAR_T[]={LOW_T,0};
+static const char16_t PK_VAR_E[]={LOW_E,0};
+static const char16_t PK_VAR_C[]={LOW_C,0};
+static const char16_t PK_VAR_V[]={LOW_V,0};
+static const char16_t PK_WITHIN[]={LOW_W,LOW_I,LOW_T,LOW_H,LOW_I,LOW_N,0};
+static const char16_t PK_DECIMAL[]={LOW_D,LOW_E,LOW_C,LOW_I,LOW_M,LOW_A,LOW_L,0};
+static const char16_t PK_INTEGER[]={LOW_I,LOW_N,LOW_T,LOW_E,LOW_G,LOW_E,LOW_R,0};
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(PluralRules)
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(PluralKeywordEnumeration)
@@ -822,19 +826,24 @@ PluralRules::getRuleFromResource(const Locale& locale, UPluralType type, UErrorC
}
int32_t resLen=0;
const char *curLocaleName=locale.getBaseName();
- const UChar* s = ures_getStringByKey(locRes.getAlias(), curLocaleName, &resLen, &errCode);
+ const char16_t* s = ures_getStringByKey(locRes.getAlias(), curLocaleName, &resLen, &errCode);
if (s == nullptr) {
// Check parent locales.
UErrorCode status = U_ZERO_ERROR;
- char parentLocaleName[ULOC_FULLNAME_CAPACITY];
const char *curLocaleName2=locale.getBaseName();
- uprv_strcpy(parentLocaleName, curLocaleName2);
+ CharString parentLocaleName(curLocaleName2, status);
- while (uloc_getParent(parentLocaleName, parentLocaleName,
- ULOC_FULLNAME_CAPACITY, &status) > 0) {
+ for (;;) {
+ {
+ CharString tmp;
+ CharStringByteSink sink(&tmp);
+ ulocimp_getParent(parentLocaleName.data(), sink, &status);
+ if (tmp.isEmpty()) break;
+ parentLocaleName = std::move(tmp);
+ }
resLen=0;
- s = ures_getStringByKey(locRes.getAlias(), parentLocaleName, &resLen, &status);
+ s = ures_getStringByKey(locRes.getAlias(), parentLocaleName.data(), &resLen, &status);
if (s != nullptr) {
errCode = U_ZERO_ERROR;
break;
@@ -1114,7 +1123,7 @@ static UnicodeString tokenString(tokenType tok) {
void
RuleChain::dumpRules(UnicodeString& result) {
- UChar digitString[16];
+ char16_t digitString[16];
if ( ruleHeader != nullptr ) {
result += fKeyword;
@@ -1378,7 +1387,7 @@ PluralRuleParser::getNextToken(UErrorCode &status)
return;
}
- UChar ch;
+ char16_t ch;
while (ruleIndex < ruleSrc->length()) {
ch = ruleSrc->charAt(ruleIndex);
type = charType(ch);
@@ -1459,7 +1468,7 @@ PluralRuleParser::getNextToken(UErrorCode &status)
}
tokenType
-PluralRuleParser::charType(UChar ch) {
+PluralRuleParser::charType(char16_t ch) {
if ((ch>=U_ZERO) && (ch<=U_NINE)) {
return tNumber;
}
@@ -1808,9 +1817,9 @@ int32_t FixedDecimal::decimals(double n) {
}
}
- // Slow path, convert with sprintf, parse converted output.
+ // Slow path, convert with snprintf, parse converted output.
char buf[30] = {0};
- sprintf(buf, "%1.15e", n);
+ snprintf(buf, sizeof(buf), "%1.15e", n);
// formatted number looks like this: 1.234567890123457e-01
int exponent = atoi(buf+18);
int numFractionDigits = 15;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/plurrule_impl.h b/Build/source/libs/icu/icu-src/source/i18n/plurrule_impl.h
index c27b655fcde..4de6d6460aa 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/plurrule_impl.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/plurrule_impl.h
@@ -50,67 +50,67 @@ namespace pluralimpl {
// TODO: Remove this and replace with u"" literals. Was for EBCDIC compatibility.
-static const UChar DOT = ((UChar) 0x002E);
-static const UChar SINGLE_QUOTE = ((UChar) 0x0027);
-static const UChar SLASH = ((UChar) 0x002F);
-static const UChar BACKSLASH = ((UChar) 0x005C);
-static const UChar SPACE = ((UChar) 0x0020);
-static const UChar EXCLAMATION = ((UChar) 0x0021);
-static const UChar QUOTATION_MARK = ((UChar) 0x0022);
-static const UChar NUMBER_SIGN = ((UChar) 0x0023);
-static const UChar PERCENT_SIGN = ((UChar) 0x0025);
-static const UChar ASTERISK = ((UChar) 0x002A);
-static const UChar COMMA = ((UChar) 0x002C);
-static const UChar HYPHEN = ((UChar) 0x002D);
-static const UChar U_ZERO = ((UChar) 0x0030);
-static const UChar U_ONE = ((UChar) 0x0031);
-static const UChar U_TWO = ((UChar) 0x0032);
-static const UChar U_THREE = ((UChar) 0x0033);
-static const UChar U_FOUR = ((UChar) 0x0034);
-static const UChar U_FIVE = ((UChar) 0x0035);
-static const UChar U_SIX = ((UChar) 0x0036);
-static const UChar U_SEVEN = ((UChar) 0x0037);
-static const UChar U_EIGHT = ((UChar) 0x0038);
-static const UChar U_NINE = ((UChar) 0x0039);
-static const UChar COLON = ((UChar) 0x003A);
-static const UChar SEMI_COLON = ((UChar) 0x003B);
-static const UChar EQUALS = ((UChar) 0x003D);
-static const UChar AT = ((UChar) 0x0040);
-static const UChar CAP_A = ((UChar) 0x0041);
-static const UChar CAP_B = ((UChar) 0x0042);
-static const UChar CAP_R = ((UChar) 0x0052);
-static const UChar CAP_Z = ((UChar) 0x005A);
-static const UChar LOWLINE = ((UChar) 0x005F);
-static const UChar LEFTBRACE = ((UChar) 0x007B);
-static const UChar RIGHTBRACE = ((UChar) 0x007D);
-static const UChar TILDE = ((UChar) 0x007E);
-static const UChar ELLIPSIS = ((UChar) 0x2026);
-
-static const UChar LOW_A = ((UChar) 0x0061);
-static const UChar LOW_B = ((UChar) 0x0062);
-static const UChar LOW_C = ((UChar) 0x0063);
-static const UChar LOW_D = ((UChar) 0x0064);
-static const UChar LOW_E = ((UChar) 0x0065);
-static const UChar LOW_F = ((UChar) 0x0066);
-static const UChar LOW_G = ((UChar) 0x0067);
-static const UChar LOW_H = ((UChar) 0x0068);
-static const UChar LOW_I = ((UChar) 0x0069);
-static const UChar LOW_J = ((UChar) 0x006a);
-static const UChar LOW_K = ((UChar) 0x006B);
-static const UChar LOW_L = ((UChar) 0x006C);
-static const UChar LOW_M = ((UChar) 0x006D);
-static const UChar LOW_N = ((UChar) 0x006E);
-static const UChar LOW_O = ((UChar) 0x006F);
-static const UChar LOW_P = ((UChar) 0x0070);
-static const UChar LOW_Q = ((UChar) 0x0071);
-static const UChar LOW_R = ((UChar) 0x0072);
-static const UChar LOW_S = ((UChar) 0x0073);
-static const UChar LOW_T = ((UChar) 0x0074);
-static const UChar LOW_U = ((UChar) 0x0075);
-static const UChar LOW_V = ((UChar) 0x0076);
-static const UChar LOW_W = ((UChar) 0x0077);
-static const UChar LOW_Y = ((UChar) 0x0079);
-static const UChar LOW_Z = ((UChar) 0x007A);
+static const char16_t DOT = ((char16_t) 0x002E);
+static const char16_t SINGLE_QUOTE = ((char16_t) 0x0027);
+static const char16_t SLASH = ((char16_t) 0x002F);
+static const char16_t BACKSLASH = ((char16_t) 0x005C);
+static const char16_t SPACE = ((char16_t) 0x0020);
+static const char16_t EXCLAMATION = ((char16_t) 0x0021);
+static const char16_t QUOTATION_MARK = ((char16_t) 0x0022);
+static const char16_t NUMBER_SIGN = ((char16_t) 0x0023);
+static const char16_t PERCENT_SIGN = ((char16_t) 0x0025);
+static const char16_t ASTERISK = ((char16_t) 0x002A);
+static const char16_t COMMA = ((char16_t) 0x002C);
+static const char16_t HYPHEN = ((char16_t) 0x002D);
+static const char16_t U_ZERO = ((char16_t) 0x0030);
+static const char16_t U_ONE = ((char16_t) 0x0031);
+static const char16_t U_TWO = ((char16_t) 0x0032);
+static const char16_t U_THREE = ((char16_t) 0x0033);
+static const char16_t U_FOUR = ((char16_t) 0x0034);
+static const char16_t U_FIVE = ((char16_t) 0x0035);
+static const char16_t U_SIX = ((char16_t) 0x0036);
+static const char16_t U_SEVEN = ((char16_t) 0x0037);
+static const char16_t U_EIGHT = ((char16_t) 0x0038);
+static const char16_t U_NINE = ((char16_t) 0x0039);
+static const char16_t COLON = ((char16_t) 0x003A);
+static const char16_t SEMI_COLON = ((char16_t) 0x003B);
+static const char16_t EQUALS = ((char16_t) 0x003D);
+static const char16_t AT = ((char16_t) 0x0040);
+static const char16_t CAP_A = ((char16_t) 0x0041);
+static const char16_t CAP_B = ((char16_t) 0x0042);
+static const char16_t CAP_R = ((char16_t) 0x0052);
+static const char16_t CAP_Z = ((char16_t) 0x005A);
+static const char16_t LOWLINE = ((char16_t) 0x005F);
+static const char16_t LEFTBRACE = ((char16_t) 0x007B);
+static const char16_t RIGHTBRACE = ((char16_t) 0x007D);
+static const char16_t TILDE = ((char16_t) 0x007E);
+static const char16_t ELLIPSIS = ((char16_t) 0x2026);
+
+static const char16_t LOW_A = ((char16_t) 0x0061);
+static const char16_t LOW_B = ((char16_t) 0x0062);
+static const char16_t LOW_C = ((char16_t) 0x0063);
+static const char16_t LOW_D = ((char16_t) 0x0064);
+static const char16_t LOW_E = ((char16_t) 0x0065);
+static const char16_t LOW_F = ((char16_t) 0x0066);
+static const char16_t LOW_G = ((char16_t) 0x0067);
+static const char16_t LOW_H = ((char16_t) 0x0068);
+static const char16_t LOW_I = ((char16_t) 0x0069);
+static const char16_t LOW_J = ((char16_t) 0x006a);
+static const char16_t LOW_K = ((char16_t) 0x006B);
+static const char16_t LOW_L = ((char16_t) 0x006C);
+static const char16_t LOW_M = ((char16_t) 0x006D);
+static const char16_t LOW_N = ((char16_t) 0x006E);
+static const char16_t LOW_O = ((char16_t) 0x006F);
+static const char16_t LOW_P = ((char16_t) 0x0070);
+static const char16_t LOW_Q = ((char16_t) 0x0071);
+static const char16_t LOW_R = ((char16_t) 0x0072);
+static const char16_t LOW_S = ((char16_t) 0x0073);
+static const char16_t LOW_T = ((char16_t) 0x0074);
+static const char16_t LOW_U = ((char16_t) 0x0075);
+static const char16_t LOW_V = ((char16_t) 0x0076);
+static const char16_t LOW_W = ((char16_t) 0x0077);
+static const char16_t LOW_Y = ((char16_t) 0x0079);
+static const char16_t LOW_Z = ((char16_t) 0x007A);
}
@@ -164,7 +164,7 @@ public:
private:
static tokenType getKeyType(const UnicodeString& token, tokenType type);
- static tokenType charType(UChar ch);
+ static tokenType charType(char16_t ch);
static UBool isValidKeyword(const UnicodeString& token);
const UnicodeString *ruleSrc; // The rules string.
@@ -299,16 +299,16 @@ class U_I18N_API FixedDecimal: public IFixedDecimal, public UObject {
FixedDecimal(double n, int32_t);
explicit FixedDecimal(double n);
FixedDecimal();
- ~FixedDecimal() U_OVERRIDE;
+ ~FixedDecimal() override;
FixedDecimal(const UnicodeString &s, UErrorCode &ec);
FixedDecimal(const FixedDecimal &other);
static FixedDecimal createWithExponent(double n, int32_t v, int32_t e);
- double getPluralOperand(PluralOperand operand) const U_OVERRIDE;
- bool isNaN() const U_OVERRIDE;
- bool isInfinite() const U_OVERRIDE;
- bool hasIntegerValue() const U_OVERRIDE;
+ double getPluralOperand(PluralOperand operand) const override;
+ bool isNaN() const override;
+ bool isInfinite() const override;
+ bool hasIntegerValue() const override;
bool isNanOrInfinity() const; // used in decimfmtimpl.cpp
@@ -410,8 +410,8 @@ class PluralKeywordEnumeration : public StringEnumeration {
public:
PluralKeywordEnumeration(RuleChain *header, UErrorCode& status);
virtual ~PluralKeywordEnumeration();
- static UClassID U_EXPORT2 getStaticClassID(void);
- virtual UClassID getDynamicClassID(void) const override;
+ static UClassID U_EXPORT2 getStaticClassID();
+ virtual UClassID getDynamicClassID() const override;
virtual const UnicodeString* snext(UErrorCode& status) override;
virtual void reset(UErrorCode& status) override;
virtual int32_t count(UErrorCode& status) const override;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/quant.cpp b/Build/source/libs/icu/icu-src/source/i18n/quant.cpp
index ed339333877..4a45db1bf5c 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/quant.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/quant.cpp
@@ -103,21 +103,21 @@ UnicodeString& Quantifier::toPattern(UnicodeString& result,
matcher->toMatcher()->toPattern(result, escapeUnprintable);
if (minCount == 0) {
if (maxCount == 1) {
- return result.append((UChar)63); /*?*/
+ return result.append((char16_t)63); /*?*/
} else if (maxCount == MAX) {
- return result.append((UChar)42); /***/
+ return result.append((char16_t)42); /***/
}
// else fall through
} else if (minCount == 1 && maxCount == MAX) {
- return result.append((UChar)43); /*+*/
+ return result.append((char16_t)43); /*+*/
}
- result.append((UChar)123); /*{*/
+ result.append((char16_t)123); /*{*/
ICU_Utility::appendNumber(result, minCount);
- result.append((UChar)44); /*,*/
+ result.append((char16_t)44); /*,*/
if (maxCount != MAX) {
ICU_Utility::appendNumber(result, maxCount);
}
- result.append((UChar)125); /*}*/
+ result.append((char16_t)125); /*}*/
return result;
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/quantityformatter.cpp b/Build/source/libs/icu/icu-src/source/i18n/quantityformatter.cpp
index 7b4d51e803f..0a1982e3d4c 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/quantityformatter.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/quantityformatter.cpp
@@ -32,14 +32,14 @@ U_NAMESPACE_BEGIN
QuantityFormatter::QuantityFormatter() {
for (int32_t i = 0; i < UPRV_LENGTHOF(formatters); ++i) {
- formatters[i] = NULL;
+ formatters[i] = nullptr;
}
}
QuantityFormatter::QuantityFormatter(const QuantityFormatter &other) {
for (int32_t i = 0; i < UPRV_LENGTHOF(formatters); ++i) {
- if (other.formatters[i] == NULL) {
- formatters[i] = NULL;
+ if (other.formatters[i] == nullptr) {
+ formatters[i] = nullptr;
} else {
formatters[i] = new SimpleFormatter(*other.formatters[i]);
}
@@ -53,8 +53,8 @@ QuantityFormatter &QuantityFormatter::operator=(
}
for (int32_t i = 0; i < UPRV_LENGTHOF(formatters); ++i) {
delete formatters[i];
- if (other.formatters[i] == NULL) {
- formatters[i] = NULL;
+ if (other.formatters[i] == nullptr) {
+ formatters[i] = nullptr;
} else {
formatters[i] = new SimpleFormatter(*other.formatters[i]);
}
@@ -71,7 +71,7 @@ QuantityFormatter::~QuantityFormatter() {
void QuantityFormatter::reset() {
for (int32_t i = 0; i < UPRV_LENGTHOF(formatters); ++i) {
delete formatters[i];
- formatters[i] = NULL;
+ formatters[i] = nullptr;
}
}
@@ -83,11 +83,11 @@ UBool QuantityFormatter::addIfAbsent(
if (U_FAILURE(status)) {
return false;
}
- if (formatters[pluralIndex] != NULL) {
+ if (formatters[pluralIndex] != nullptr) {
return true;
}
SimpleFormatter *newFmt = new SimpleFormatter(rawPattern, 0, 1, status);
- if (newFmt == NULL) {
+ if (newFmt == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return false;
}
@@ -100,7 +100,7 @@ UBool QuantityFormatter::addIfAbsent(
}
UBool QuantityFormatter::isValid() const {
- return formatters[StandardPlural::OTHER] != NULL;
+ return formatters[StandardPlural::OTHER] != nullptr;
}
const SimpleFormatter *QuantityFormatter::getByVariant(
@@ -108,7 +108,7 @@ const SimpleFormatter *QuantityFormatter::getByVariant(
U_ASSERT(isValid());
int32_t pluralIndex = StandardPlural::indexOrOtherIndexFromString(variant);
const SimpleFormatter *pattern = formatters[pluralIndex];
- if (pattern == NULL) {
+ if (pattern == nullptr) {
pattern = formatters[StandardPlural::OTHER];
}
return pattern;
@@ -127,9 +127,9 @@ UnicodeString &QuantityFormatter::format(
return appendTo;
}
const SimpleFormatter *pattern = formatters[p];
- if (pattern == NULL) {
+ if (pattern == nullptr) {
pattern = formatters[StandardPlural::OTHER];
- if (pattern == NULL) {
+ if (pattern == nullptr) {
status = U_INVALID_STATE_ERROR;
return appendTo;
}
@@ -152,7 +152,7 @@ StandardPlural::Form QuantityFormatter::selectPlural(
}
UnicodeString pluralKeyword;
const DecimalFormat *decFmt = dynamic_cast<const DecimalFormat *>(&fmt);
- if (decFmt != NULL) {
+ if (decFmt != nullptr) {
number::impl::DecimalQuantity dq;
decFmt->formatToDecimalQuantity(number, dq, status);
if (U_FAILURE(status)) {
diff --git a/Build/source/libs/icu/icu-src/source/i18n/quantityformatter.h b/Build/source/libs/icu/icu-src/source/i18n/quantityformatter.h
index 841798cf889..ca0c0ee3711 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/quantityformatter.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/quantityformatter.h
@@ -86,7 +86,7 @@ public:
/**
* Gets the pattern formatter that would be used for a particular variant.
* If isValid() returns true, this method is guaranteed to return a
- * non-NULL value.
+ * non-nullptr value.
*/
const SimpleFormatter *getByVariant(const char *variant) const;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/rbnf.cpp b/Build/source/libs/icu/icu-src/source/i18n/rbnf.cpp
index 3d0da00bdb8..06599b4fd16 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/rbnf.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/rbnf.cpp
@@ -45,19 +45,19 @@
#define U_ICUDATA_RBNF U_ICUDATA_NAME U_TREE_SEPARATOR_STRING "rbnf"
-static const UChar gPercentPercent[] =
+static const char16_t gPercentPercent[] =
{
0x25, 0x25, 0
}; /* "%%" */
// All urbnf objects are created through openRules, so we init all of the
// Unicode string constants required by rbnf, nfrs, or nfr here.
-static const UChar gLenientParse[] =
+static const char16_t gLenientParse[] =
{
0x25, 0x25, 0x6C, 0x65, 0x6E, 0x69, 0x65, 0x6E, 0x74, 0x2D, 0x70, 0x61, 0x72, 0x73, 0x65, 0x3A, 0
}; /* "%%lenient-parse:" */
-static const UChar gSemiColon = 0x003B;
-static const UChar gSemiPercent[] =
+static const char16_t gSemiColon = 0x003B;
+static const char16_t gSemiPercent[] =
{
0x3B, 0x25, 0
}; /* ";%" */
@@ -87,41 +87,41 @@ protected:
public:
LocalizationInfo() : refcount(0) {}
- LocalizationInfo* ref(void) {
+ LocalizationInfo* ref() {
++refcount;
return this;
}
- LocalizationInfo* unref(void) {
+ LocalizationInfo* unref() {
if (refcount && --refcount == 0) {
delete this;
}
- return NULL;
+ return nullptr;
}
virtual bool operator==(const LocalizationInfo* rhs) const;
inline bool operator!=(const LocalizationInfo* rhs) const { return !operator==(rhs); }
- virtual int32_t getNumberOfRuleSets(void) const = 0;
- virtual const UChar* getRuleSetName(int32_t index) const = 0;
- virtual int32_t getNumberOfDisplayLocales(void) const = 0;
- virtual const UChar* getLocaleName(int32_t index) const = 0;
- virtual const UChar* getDisplayName(int32_t localeIndex, int32_t ruleIndex) const = 0;
+ virtual int32_t getNumberOfRuleSets() const = 0;
+ virtual const char16_t* getRuleSetName(int32_t index) const = 0;
+ virtual int32_t getNumberOfDisplayLocales() const = 0;
+ virtual const char16_t* getLocaleName(int32_t index) const = 0;
+ virtual const char16_t* getDisplayName(int32_t localeIndex, int32_t ruleIndex) const = 0;
- virtual int32_t indexForLocale(const UChar* locale) const;
- virtual int32_t indexForRuleSet(const UChar* ruleset) const;
+ virtual int32_t indexForLocale(const char16_t* locale) const;
+ virtual int32_t indexForRuleSet(const char16_t* ruleset) const;
// virtual UClassID getDynamicClassID() const = 0;
-// static UClassID getStaticClassID(void);
+// static UClassID getStaticClassID();
};
LocalizationInfo::~LocalizationInfo() {}
//UOBJECT_DEFINE_ABSTRACT_RTTI_IMPLEMENTATION(LocalizationInfo)
-// if both strings are NULL, this returns true
+// if both strings are nullptr, this returns true
static UBool
-streq(const UChar* lhs, const UChar* rhs) {
+streq(const char16_t* lhs, const char16_t* rhs) {
if (rhs == lhs) {
return true;
}
@@ -148,7 +148,7 @@ LocalizationInfo::operator==(const LocalizationInfo* rhs) const {
int32_t dlc = getNumberOfDisplayLocales();
if (dlc == rhs->getNumberOfDisplayLocales()) {
for (int i = 0; i < dlc; ++i) {
- const UChar* locale = getLocaleName(i);
+ const char16_t* locale = getLocaleName(i);
int32_t ix = rhs->indexForLocale(locale);
// if no locale, ix is -1, getLocaleName returns null, so streq returns false
if (!streq(locale, rhs->getLocaleName(ix))) {
@@ -168,7 +168,7 @@ LocalizationInfo::operator==(const LocalizationInfo* rhs) const {
}
int32_t
-LocalizationInfo::indexForLocale(const UChar* locale) const {
+LocalizationInfo::indexForLocale(const char16_t* locale) const {
for (int i = 0; i < getNumberOfDisplayLocales(); ++i) {
if (streq(locale, getLocaleName(i))) {
return i;
@@ -178,7 +178,7 @@ LocalizationInfo::indexForLocale(const UChar* locale) const {
}
int32_t
-LocalizationInfo::indexForRuleSet(const UChar* ruleset) const {
+LocalizationInfo::indexForRuleSet(const char16_t* ruleset) const {
if (ruleset) {
for (int i = 0; i < getNumberOfRuleSets(); ++i) {
if (streq(ruleset, getRuleSetName(i))) {
@@ -198,9 +198,9 @@ class VArray {
int32_t size;
Fn_Deleter deleter;
public:
- VArray() : buf(NULL), cap(0), size(0), deleter(NULL) {}
+ VArray() : buf(nullptr), cap(0), size(0), deleter(nullptr) {}
- VArray(Fn_Deleter del) : buf(NULL), cap(0), size(0), deleter(del) {}
+ VArray(Fn_Deleter del) : buf(nullptr), cap(0), size(0), deleter(del) {}
~VArray() {
if (deleter) {
@@ -225,12 +225,12 @@ public:
} else {
cap += 256;
}
- if (buf == NULL) {
+ if (buf == nullptr) {
buf = (void**)uprv_malloc(cap * sizeof(void*));
} else {
buf = (void**)uprv_realloc(buf, cap * sizeof(void*));
}
- if (buf == NULL) {
+ if (buf == nullptr) {
// if we couldn't realloc, we leak the memory we've already allocated, but we're in deep trouble anyway
status = U_MEMORY_ALLOCATION_ERROR;
return;
@@ -243,9 +243,9 @@ public:
}
}
- void** release(void) {
+ void** release() {
void** result = buf;
- buf = NULL;
+ buf = nullptr;
cap = 0;
size = 0;
return result;
@@ -255,14 +255,14 @@ public:
class LocDataParser;
class StringLocalizationInfo : public LocalizationInfo {
- UChar* info;
- UChar*** data;
+ char16_t* info;
+ char16_t*** data;
int32_t numRuleSets;
int32_t numLocales;
friend class LocDataParser;
- StringLocalizationInfo(UChar* i, UChar*** d, int32_t numRS, int32_t numLocs)
+ StringLocalizationInfo(char16_t* i, char16_t*** d, int32_t numRS, int32_t numLocs)
: info(i), data(d), numRuleSets(numRS), numLocales(numLocs)
{
}
@@ -271,14 +271,14 @@ public:
static StringLocalizationInfo* create(const UnicodeString& info, UParseError& perror, UErrorCode& status);
virtual ~StringLocalizationInfo();
- virtual int32_t getNumberOfRuleSets(void) const override { return numRuleSets; }
- virtual const UChar* getRuleSetName(int32_t index) const override;
- virtual int32_t getNumberOfDisplayLocales(void) const override { return numLocales; }
- virtual const UChar* getLocaleName(int32_t index) const override;
- virtual const UChar* getDisplayName(int32_t localeIndex, int32_t ruleIndex) const override;
+ virtual int32_t getNumberOfRuleSets() const override { return numRuleSets; }
+ virtual const char16_t* getRuleSetName(int32_t index) const override;
+ virtual int32_t getNumberOfDisplayLocales() const override { return numLocales; }
+ virtual const char16_t* getLocaleName(int32_t index) const override;
+ virtual const char16_t* getDisplayName(int32_t localeIndex, int32_t ruleIndex) const override;
// virtual UClassID getDynamicClassID() const;
-// static UClassID getStaticClassID(void);
+// static UClassID getStaticClassID();
private:
void init(UErrorCode& status) const;
@@ -298,46 +298,46 @@ enum {
* Utility for parsing a localization string and returning a StringLocalizationInfo*.
*/
class LocDataParser {
- UChar* data;
- const UChar* e;
- UChar* p;
- UChar ch;
+ char16_t* data;
+ const char16_t* e;
+ char16_t* p;
+ char16_t ch;
UParseError& pe;
UErrorCode& ec;
public:
LocDataParser(UParseError& parseError, UErrorCode& status)
- : data(NULL), e(NULL), p(NULL), ch(0xffff), pe(parseError), ec(status) {}
+ : data(nullptr), e(nullptr), p(nullptr), ch(0xffff), pe(parseError), ec(status) {}
~LocDataParser() {}
/*
* On a successful parse, return a StringLocalizationInfo*, otherwise delete locData, set perror and status,
- * and return NULL. The StringLocalizationInfo will adopt locData if it is created.
+ * and return nullptr. The StringLocalizationInfo will adopt locData if it is created.
*/
- StringLocalizationInfo* parse(UChar* data, int32_t len);
+ StringLocalizationInfo* parse(char16_t* data, int32_t len);
private:
- inline void inc(void) {
+ inline void inc() {
++p;
ch = 0xffff;
}
- inline UBool checkInc(UChar c) {
+ inline UBool checkInc(char16_t c) {
if (p < e && (ch == c || *p == c)) {
inc();
return true;
}
return false;
}
- inline UBool check(UChar c) {
+ inline UBool check(char16_t c) {
return p < e && (ch == c || *p == c);
}
- inline void skipWhitespace(void) {
+ inline void skipWhitespace() {
while (p < e && PatternProps::isWhiteSpace(ch != 0xffff ? ch : *p)) {
inc();
}
}
- inline UBool inList(UChar c, const UChar* list) const {
+ inline UBool inList(char16_t c, const char16_t* list) const {
if (*list == SPACE && PatternProps::isWhiteSpace(c)) {
return true;
}
@@ -348,36 +348,36 @@ private:
}
void parseError(const char* msg);
- StringLocalizationInfo* doParse(void);
+ StringLocalizationInfo* doParse();
- UChar** nextArray(int32_t& requiredLength);
- UChar* nextString(void);
+ char16_t** nextArray(int32_t& requiredLength);
+ char16_t* nextString();
};
#ifdef RBNF_DEBUG
#define ERROR(msg) UPRV_BLOCK_MACRO_BEGIN { \
parseError(msg); \
- return NULL; \
+ return nullptr; \
} UPRV_BLOCK_MACRO_END
#define EXPLANATION_ARG explanationArg
#else
#define ERROR(msg) UPRV_BLOCK_MACRO_BEGIN { \
- parseError(NULL); \
- return NULL; \
+ parseError(nullptr); \
+ return nullptr; \
} UPRV_BLOCK_MACRO_END
#define EXPLANATION_ARG
#endif
-static const UChar DQUOTE_STOPLIST[] = {
+static const char16_t DQUOTE_STOPLIST[] = {
QUOTE, 0
};
-static const UChar SQUOTE_STOPLIST[] = {
+static const char16_t SQUOTE_STOPLIST[] = {
TICK, 0
};
-static const UChar NOQUOTE_STOPLIST[] = {
+static const char16_t NOQUOTE_STOPLIST[] = {
SPACE, COMMA, CLOSE_ANGLE, OPEN_ANGLE, TICK, QUOTE, 0
};
@@ -387,10 +387,10 @@ DeleteFn(void* p) {
}
StringLocalizationInfo*
-LocDataParser::parse(UChar* _data, int32_t len) {
+LocDataParser::parse(char16_t* _data, int32_t len) {
if (U_FAILURE(ec)) {
if (_data) uprv_free(_data);
- return NULL;
+ return nullptr;
}
pe.line = 0;
@@ -398,15 +398,15 @@ LocDataParser::parse(UChar* _data, int32_t len) {
pe.postContext[0] = 0;
pe.preContext[0] = 0;
- if (_data == NULL) {
+ if (_data == nullptr) {
ec = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
if (len <= 0) {
ec = U_ILLEGAL_ARGUMENT_ERROR;
uprv_free(_data);
- return NULL;
+ return nullptr;
}
data = _data;
@@ -419,7 +419,7 @@ LocDataParser::parse(UChar* _data, int32_t len) {
StringLocalizationInfo*
-LocDataParser::doParse(void) {
+LocDataParser::doParse() {
skipWhitespace();
if (!checkInc(OPEN_ANGLE)) {
ERROR("Missing open angle");
@@ -429,7 +429,7 @@ LocDataParser::doParse(void) {
int32_t requiredLength = -1;
while (mightHaveNext) {
mightHaveNext = false;
- UChar** elem = nextArray(requiredLength);
+ char16_t** elem = nextArray(requiredLength);
skipWhitespace();
UBool haveComma = check(COMMA);
if (elem) {
@@ -457,22 +457,22 @@ LocDataParser::doParse(void) {
ERROR("Extra text after close of localization data");
}
- array.add(NULL, ec);
+ array.add(nullptr, ec);
if (U_SUCCESS(ec)) {
- int32_t numLocs = array.length() - 2; // subtract first, NULL
- UChar*** result = (UChar***)array.release();
+ int32_t numLocs = array.length() - 2; // subtract first, nullptr
+ char16_t*** result = (char16_t***)array.release();
- return new StringLocalizationInfo(data, result, requiredLength-2, numLocs); // subtract first, NULL
+ return new StringLocalizationInfo(data, result, requiredLength-2, numLocs); // subtract first, nullptr
}
}
ERROR("Unknown error");
}
-UChar**
+char16_t**
LocDataParser::nextArray(int32_t& requiredLength) {
if (U_FAILURE(ec)) {
- return NULL;
+ return nullptr;
}
skipWhitespace();
@@ -484,7 +484,7 @@ LocDataParser::nextArray(int32_t& requiredLength) {
UBool mightHaveNext = true;
while (mightHaveNext) {
mightHaveNext = false;
- UChar* elem = nextString();
+ char16_t* elem = nextString();
skipWhitespace();
UBool haveComma = check(COMMA);
if (elem) {
@@ -506,7 +506,7 @@ LocDataParser::nextArray(int32_t& requiredLength) {
}
}
- array.add(NULL, ec);
+ array.add(nullptr, ec);
if (U_SUCCESS(ec)) {
if (requiredLength == -1) {
requiredLength = array.length() + 1;
@@ -515,19 +515,19 @@ LocDataParser::nextArray(int32_t& requiredLength) {
ERROR("Array not of required length");
}
- return (UChar**)array.release();
+ return (char16_t**)array.release();
}
ERROR("Unknown Error");
}
-UChar*
+char16_t*
LocDataParser::nextString() {
- UChar* result = NULL;
+ char16_t* result = nullptr;
skipWhitespace();
if (p < e) {
- const UChar* terminators;
- UChar c = *p;
+ const char16_t* terminators;
+ char16_t c = *p;
UBool haveQuote = c == QUOTE || c == TICK;
if (haveQuote) {
inc();
@@ -535,13 +535,13 @@ LocDataParser::nextString() {
} else {
terminators = NOQUOTE_STOPLIST;
}
- UChar* start = p;
+ char16_t* start = p;
while (p < e && !inList(*p, terminators)) ++p;
if (p == e) {
ERROR("Unexpected end of data");
}
- UChar x = *p;
+ char16_t x = *p;
if (p > start) {
ch = x;
*p = 0x0; // terminate by writing to data
@@ -569,17 +569,17 @@ void LocDataParser::parseError(const char* EXPLANATION_ARG)
return;
}
- const UChar* start = p - U_PARSE_CONTEXT_LEN - 1;
+ const char16_t* start = p - U_PARSE_CONTEXT_LEN - 1;
if (start < data) {
start = data;
}
- for (UChar* x = p; --x >= start;) {
+ for (char16_t* x = p; --x >= start;) {
if (!*x) {
start = x+1;
break;
}
}
- const UChar* limit = p + U_PARSE_CONTEXT_LEN - 1;
+ const char16_t* limit = p + U_PARSE_CONTEXT_LEN - 1;
if (limit > e) {
limit = e;
}
@@ -594,7 +594,7 @@ void LocDataParser::parseError(const char* EXPLANATION_ARG)
UnicodeString msg;
msg.append(start, p - start);
- msg.append((UChar)0x002f); /* SOLIDUS/SLASH */
+ msg.append((char16_t)0x002f); /* SOLIDUS/SLASH */
msg.append(p, limit-p);
msg.append(UNICODE_STRING_SIMPLE("'"));
@@ -610,9 +610,9 @@ void LocDataParser::parseError(const char* EXPLANATION_ARG)
#endif
uprv_free(data);
- data = NULL;
- p = NULL;
- e = NULL;
+ data = nullptr;
+ p = nullptr;
+ e = nullptr;
if (U_SUCCESS(ec)) {
ec = U_PARSE_ERROR;
@@ -624,18 +624,18 @@ void LocDataParser::parseError(const char* EXPLANATION_ARG)
StringLocalizationInfo*
StringLocalizationInfo::create(const UnicodeString& info, UParseError& perror, UErrorCode& status) {
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
int32_t len = info.length();
if (len == 0) {
- return NULL; // no error;
+ return nullptr; // no error;
}
- UChar* p = (UChar*)uprv_malloc(len * sizeof(UChar));
+ char16_t* p = (char16_t*)uprv_malloc(len * sizeof(char16_t));
if (!p) {
status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
info.extract(p, len, status);
if (!U_FAILURE(status)) {
@@ -647,7 +647,7 @@ StringLocalizationInfo::create(const UnicodeString& info, UParseError& perror, U
}
StringLocalizationInfo::~StringLocalizationInfo() {
- for (UChar*** p = (UChar***)data; *p; ++p) {
+ for (char16_t*** p = (char16_t***)data; *p; ++p) {
// remaining data is simply pointer into our unicode string data.
if (*p) uprv_free(*p);
}
@@ -656,29 +656,29 @@ StringLocalizationInfo::~StringLocalizationInfo() {
}
-const UChar*
+const char16_t*
StringLocalizationInfo::getRuleSetName(int32_t index) const {
if (index >= 0 && index < getNumberOfRuleSets()) {
return data[0][index];
}
- return NULL;
+ return nullptr;
}
-const UChar*
+const char16_t*
StringLocalizationInfo::getLocaleName(int32_t index) const {
if (index >= 0 && index < getNumberOfDisplayLocales()) {
return data[index+1][0];
}
- return NULL;
+ return nullptr;
}
-const UChar*
+const char16_t*
StringLocalizationInfo::getDisplayName(int32_t localeIndex, int32_t ruleIndex) const {
if (localeIndex >= 0 && localeIndex < getNumberOfDisplayLocales() &&
ruleIndex >= 0 && ruleIndex < getNumberOfRuleSets()) {
return data[localeIndex+1][ruleIndex+1];
}
- return NULL;
+ return nullptr;
}
// ----------
@@ -686,23 +686,23 @@ StringLocalizationInfo::getDisplayName(int32_t localeIndex, int32_t ruleIndex) c
RuleBasedNumberFormat::RuleBasedNumberFormat(const UnicodeString& description,
const UnicodeString& locs,
const Locale& alocale, UParseError& perror, UErrorCode& status)
- : fRuleSets(NULL)
- , ruleSetDescriptions(NULL)
+ : fRuleSets(nullptr)
+ , ruleSetDescriptions(nullptr)
, numRuleSets(0)
- , defaultRuleSet(NULL)
+ , defaultRuleSet(nullptr)
, locale(alocale)
- , collator(NULL)
- , decimalFormatSymbols(NULL)
- , defaultInfinityRule(NULL)
- , defaultNaNRule(NULL)
+ , collator(nullptr)
+ , decimalFormatSymbols(nullptr)
+ , defaultInfinityRule(nullptr)
+ , defaultNaNRule(nullptr)
, fRoundingMode(DecimalFormat::ERoundingMode::kRoundUnnecessary)
, lenient(false)
- , lenientParseRules(NULL)
- , localizations(NULL)
+ , lenientParseRules(nullptr)
+ , localizations(nullptr)
, capitalizationInfoSet(false)
, capitalizationForUIListMenu(false)
, capitalizationForStandAlone(false)
- , capitalizationBrkIter(NULL)
+ , capitalizationBrkIter(nullptr)
{
LocalizationInfo* locinfo = StringLocalizationInfo::create(locs, perror, status);
init(description, locinfo, perror, status);
@@ -711,23 +711,23 @@ RuleBasedNumberFormat::RuleBasedNumberFormat(const UnicodeString& description,
RuleBasedNumberFormat::RuleBasedNumberFormat(const UnicodeString& description,
const UnicodeString& locs,
UParseError& perror, UErrorCode& status)
- : fRuleSets(NULL)
- , ruleSetDescriptions(NULL)
+ : fRuleSets(nullptr)
+ , ruleSetDescriptions(nullptr)
, numRuleSets(0)
- , defaultRuleSet(NULL)
+ , defaultRuleSet(nullptr)
, locale(Locale::getDefault())
- , collator(NULL)
- , decimalFormatSymbols(NULL)
- , defaultInfinityRule(NULL)
- , defaultNaNRule(NULL)
+ , collator(nullptr)
+ , decimalFormatSymbols(nullptr)
+ , defaultInfinityRule(nullptr)
+ , defaultNaNRule(nullptr)
, fRoundingMode(DecimalFormat::ERoundingMode::kRoundUnnecessary)
, lenient(false)
- , lenientParseRules(NULL)
- , localizations(NULL)
+ , lenientParseRules(nullptr)
+ , localizations(nullptr)
, capitalizationInfoSet(false)
, capitalizationForUIListMenu(false)
, capitalizationForStandAlone(false)
- , capitalizationBrkIter(NULL)
+ , capitalizationBrkIter(nullptr)
{
LocalizationInfo* locinfo = StringLocalizationInfo::create(locs, perror, status);
init(description, locinfo, perror, status);
@@ -736,23 +736,23 @@ RuleBasedNumberFormat::RuleBasedNumberFormat(const UnicodeString& description,
RuleBasedNumberFormat::RuleBasedNumberFormat(const UnicodeString& description,
LocalizationInfo* info,
const Locale& alocale, UParseError& perror, UErrorCode& status)
- : fRuleSets(NULL)
- , ruleSetDescriptions(NULL)
+ : fRuleSets(nullptr)
+ , ruleSetDescriptions(nullptr)
, numRuleSets(0)
- , defaultRuleSet(NULL)
+ , defaultRuleSet(nullptr)
, locale(alocale)
- , collator(NULL)
- , decimalFormatSymbols(NULL)
- , defaultInfinityRule(NULL)
- , defaultNaNRule(NULL)
+ , collator(nullptr)
+ , decimalFormatSymbols(nullptr)
+ , defaultInfinityRule(nullptr)
+ , defaultNaNRule(nullptr)
, fRoundingMode(DecimalFormat::ERoundingMode::kRoundUnnecessary)
, lenient(false)
- , lenientParseRules(NULL)
- , localizations(NULL)
+ , lenientParseRules(nullptr)
+ , localizations(nullptr)
, capitalizationInfoSet(false)
, capitalizationForUIListMenu(false)
, capitalizationForStandAlone(false)
- , capitalizationBrkIter(NULL)
+ , capitalizationBrkIter(nullptr)
{
init(description, info, perror, status);
}
@@ -760,70 +760,70 @@ RuleBasedNumberFormat::RuleBasedNumberFormat(const UnicodeString& description,
RuleBasedNumberFormat::RuleBasedNumberFormat(const UnicodeString& description,
UParseError& perror,
UErrorCode& status)
- : fRuleSets(NULL)
- , ruleSetDescriptions(NULL)
+ : fRuleSets(nullptr)
+ , ruleSetDescriptions(nullptr)
, numRuleSets(0)
- , defaultRuleSet(NULL)
+ , defaultRuleSet(nullptr)
, locale(Locale::getDefault())
- , collator(NULL)
- , decimalFormatSymbols(NULL)
- , defaultInfinityRule(NULL)
- , defaultNaNRule(NULL)
+ , collator(nullptr)
+ , decimalFormatSymbols(nullptr)
+ , defaultInfinityRule(nullptr)
+ , defaultNaNRule(nullptr)
, fRoundingMode(DecimalFormat::ERoundingMode::kRoundUnnecessary)
, lenient(false)
- , lenientParseRules(NULL)
- , localizations(NULL)
+ , lenientParseRules(nullptr)
+ , localizations(nullptr)
, capitalizationInfoSet(false)
, capitalizationForUIListMenu(false)
, capitalizationForStandAlone(false)
- , capitalizationBrkIter(NULL)
+ , capitalizationBrkIter(nullptr)
{
- init(description, NULL, perror, status);
+ init(description, nullptr, perror, status);
}
RuleBasedNumberFormat::RuleBasedNumberFormat(const UnicodeString& description,
const Locale& aLocale,
UParseError& perror,
UErrorCode& status)
- : fRuleSets(NULL)
- , ruleSetDescriptions(NULL)
+ : fRuleSets(nullptr)
+ , ruleSetDescriptions(nullptr)
, numRuleSets(0)
- , defaultRuleSet(NULL)
+ , defaultRuleSet(nullptr)
, locale(aLocale)
- , collator(NULL)
- , decimalFormatSymbols(NULL)
- , defaultInfinityRule(NULL)
- , defaultNaNRule(NULL)
+ , collator(nullptr)
+ , decimalFormatSymbols(nullptr)
+ , defaultInfinityRule(nullptr)
+ , defaultNaNRule(nullptr)
, fRoundingMode(DecimalFormat::ERoundingMode::kRoundUnnecessary)
, lenient(false)
- , lenientParseRules(NULL)
- , localizations(NULL)
+ , lenientParseRules(nullptr)
+ , localizations(nullptr)
, capitalizationInfoSet(false)
, capitalizationForUIListMenu(false)
, capitalizationForStandAlone(false)
- , capitalizationBrkIter(NULL)
+ , capitalizationBrkIter(nullptr)
{
- init(description, NULL, perror, status);
+ init(description, nullptr, perror, status);
}
RuleBasedNumberFormat::RuleBasedNumberFormat(URBNFRuleSetTag tag, const Locale& alocale, UErrorCode& status)
- : fRuleSets(NULL)
- , ruleSetDescriptions(NULL)
+ : fRuleSets(nullptr)
+ , ruleSetDescriptions(nullptr)
, numRuleSets(0)
- , defaultRuleSet(NULL)
+ , defaultRuleSet(nullptr)
, locale(alocale)
- , collator(NULL)
- , decimalFormatSymbols(NULL)
- , defaultInfinityRule(NULL)
- , defaultNaNRule(NULL)
+ , collator(nullptr)
+ , decimalFormatSymbols(nullptr)
+ , defaultInfinityRule(nullptr)
+ , defaultNaNRule(nullptr)
, fRoundingMode(DecimalFormat::ERoundingMode::kRoundUnnecessary)
, lenient(false)
- , lenientParseRules(NULL)
- , localizations(NULL)
+ , lenientParseRules(nullptr)
+ , localizations(nullptr)
, capitalizationInfoSet(false)
, capitalizationForUIListMenu(false)
, capitalizationForStandAlone(false)
- , capitalizationBrkIter(NULL)
+ , capitalizationBrkIter(nullptr)
{
if (U_FAILURE(status)) {
return;
@@ -840,18 +840,18 @@ RuleBasedNumberFormat::RuleBasedNumberFormat(URBNFRuleSetTag tag, const Locale&
}
// TODO: read localization info from resource
- LocalizationInfo* locinfo = NULL;
+ LocalizationInfo* locinfo = nullptr;
UResourceBundle* nfrb = ures_open(U_ICUDATA_RBNF, locale.getName(), &status);
if (U_SUCCESS(status)) {
setLocaleIDs(ures_getLocaleByType(nfrb, ULOC_VALID_LOCALE, &status),
ures_getLocaleByType(nfrb, ULOC_ACTUAL_LOCALE, &status));
- UResourceBundle* rbnfRules = ures_getByKeyWithFallback(nfrb, rules_tag, NULL, &status);
+ UResourceBundle* rbnfRules = ures_getByKeyWithFallback(nfrb, rules_tag, nullptr, &status);
if (U_FAILURE(status)) {
ures_close(nfrb);
}
- UResourceBundle* ruleSets = ures_getByKeyWithFallback(rbnfRules, fmt_tag, NULL, &status);
+ UResourceBundle* ruleSets = ures_getByKeyWithFallback(rbnfRules, fmt_tag, nullptr, &status);
if (U_FAILURE(status)) {
ures_close(rbnfRules);
ures_close(nfrb);
@@ -860,7 +860,7 @@ RuleBasedNumberFormat::RuleBasedNumberFormat(URBNFRuleSetTag tag, const Locale&
UnicodeString desc;
while (ures_hasNext(ruleSets)) {
- desc.append(ures_getNextUnicodeString(ruleSets,NULL,&status));
+ desc.append(ures_getNextUnicodeString(ruleSets,nullptr,&status));
}
UParseError perror;
@@ -874,23 +874,23 @@ RuleBasedNumberFormat::RuleBasedNumberFormat(URBNFRuleSetTag tag, const Locale&
RuleBasedNumberFormat::RuleBasedNumberFormat(const RuleBasedNumberFormat& rhs)
: NumberFormat(rhs)
- , fRuleSets(NULL)
- , ruleSetDescriptions(NULL)
+ , fRuleSets(nullptr)
+ , ruleSetDescriptions(nullptr)
, numRuleSets(0)
- , defaultRuleSet(NULL)
+ , defaultRuleSet(nullptr)
, locale(rhs.locale)
- , collator(NULL)
- , decimalFormatSymbols(NULL)
- , defaultInfinityRule(NULL)
- , defaultNaNRule(NULL)
+ , collator(nullptr)
+ , decimalFormatSymbols(nullptr)
+ , defaultInfinityRule(nullptr)
+ , defaultNaNRule(nullptr)
, fRoundingMode(DecimalFormat::ERoundingMode::kRoundUnnecessary)
, lenient(false)
- , lenientParseRules(NULL)
- , localizations(NULL)
+ , lenientParseRules(nullptr)
+ , localizations(nullptr)
, capitalizationInfoSet(false)
, capitalizationForUIListMenu(false)
, capitalizationForStandAlone(false)
- , capitalizationBrkIter(NULL)
+ , capitalizationBrkIter(nullptr)
{
this->operator=(rhs);
}
@@ -911,7 +911,7 @@ RuleBasedNumberFormat::operator=(const RuleBasedNumberFormat& rhs)
UParseError perror;
setDecimalFormatSymbols(*rhs.getDecimalFormatSymbols());
- init(rhs.originalDescription, rhs.localizations ? rhs.localizations->ref() : NULL, perror, status);
+ init(rhs.originalDescription, rhs.localizations ? rhs.localizations->ref() : nullptr, perror, status);
setDefaultRuleSet(rhs.getDefaultRuleSetName(), status);
setRoundingMode(rhs.getRoundingMode());
@@ -919,7 +919,7 @@ RuleBasedNumberFormat::operator=(const RuleBasedNumberFormat& rhs)
capitalizationForUIListMenu = rhs.capitalizationForUIListMenu;
capitalizationForStandAlone = rhs.capitalizationForStandAlone;
#if !UCONFIG_NO_BREAK_ITERATION
- capitalizationBrkIter = (rhs.capitalizationBrkIter!=NULL)? rhs.capitalizationBrkIter->clone(): NULL;
+ capitalizationBrkIter = (rhs.capitalizationBrkIter!=nullptr)? rhs.capitalizationBrkIter->clone(): nullptr;
#endif
return *this;
@@ -944,30 +944,30 @@ RuleBasedNumberFormat::operator==(const Format& other) const
}
if (typeid(*this) == typeid(other)) {
- const RuleBasedNumberFormat& rhs = (const RuleBasedNumberFormat&)other;
+ const RuleBasedNumberFormat& rhs = static_cast<const RuleBasedNumberFormat&>(other);
// test for capitalization info equality is adequately handled
// by the NumberFormat test for fCapitalizationContext equality;
// the info here is just derived from that.
if (locale == rhs.locale &&
lenient == rhs.lenient &&
- (localizations == NULL
- ? rhs.localizations == NULL
- : (rhs.localizations == NULL
+ (localizations == nullptr
+ ? rhs.localizations == nullptr
+ : (rhs.localizations == nullptr
? false
: *localizations == rhs.localizations))) {
NFRuleSet** p = fRuleSets;
NFRuleSet** q = rhs.fRuleSets;
- if (p == NULL) {
- return q == NULL;
- } else if (q == NULL) {
+ if (p == nullptr) {
+ return q == nullptr;
+ } else if (q == nullptr) {
return false;
}
while (*p && *q && (**p == **q)) {
++p;
++q;
}
- return *q == NULL && *p == NULL;
+ return *q == nullptr && *p == nullptr;
}
}
@@ -978,7 +978,7 @@ UnicodeString
RuleBasedNumberFormat::getRules() const
{
UnicodeString result;
- if (fRuleSets != NULL) {
+ if (fRuleSets != nullptr) {
for (NFRuleSet** p = fRuleSets; *p; ++p) {
(*p)->appendRules(result);
}
@@ -1027,7 +1027,7 @@ RuleBasedNumberFormat::getNumberOfRuleSetNames() const
}
int32_t
-RuleBasedNumberFormat::getNumberOfRuleSetDisplayNameLocales(void) const {
+RuleBasedNumberFormat::getNumberOfRuleSetDisplayNameLocales() const {
if (localizations) {
return localizations->getNumberOfDisplayLocales();
}
@@ -1046,7 +1046,7 @@ RuleBasedNumberFormat::getRuleSetDisplayNameLocale(int32_t index, UErrorCode& st
char* bp = buffer;
if (cap > 64) {
bp = (char *)uprv_malloc(cap);
- if (bp == NULL) {
+ if (bp == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return Locale("");
}
@@ -1068,7 +1068,7 @@ RuleBasedNumberFormat::getRuleSetDisplayName(int32_t index, const Locale& locale
if (localizations && index >= 0 && index < localizations->getNumberOfRuleSets()) {
UnicodeString localeName(localeParam.getBaseName(), -1, UnicodeString::kInvariant);
int32_t len = localeName.length();
- UChar* localeStr = localeName.getBuffer(len + 1);
+ char16_t* localeStr = localeName.getBuffer(len + 1);
while (len >= 0) {
localeStr[len] = 0;
int32_t ix = localizations->indexForLocale(localeStr);
@@ -1113,7 +1113,7 @@ RuleBasedNumberFormat::findRuleSet(const UnicodeString& name, UErrorCode& status
}
status = U_ILLEGAL_ARGUMENT_ERROR;
}
- return NULL;
+ return nullptr;
}
UnicodeString&
@@ -1326,7 +1326,7 @@ RuleBasedNumberFormat::adjustForCapitalizationContext(int32_t startPos,
if (capitalizationContext != UDISPCTX_CAPITALIZATION_NONE && startPos == 0 && currentResult.length() > 0) {
// capitalize currentResult according to context
UChar32 ch = currentResult.char32At(0);
- if (u_islower(ch) && U_SUCCESS(status) && capitalizationBrkIter != NULL &&
+ if (u_islower(ch) && U_SUCCESS(status) && capitalizationBrkIter != nullptr &&
( capitalizationContext == UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE ||
(capitalizationContext == UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU && capitalizationForUIListMenu) ||
(capitalizationContext == UDISPCTX_CAPITALIZATION_FOR_STANDALONE && capitalizationForStandAlone)) ) {
@@ -1402,7 +1402,7 @@ RuleBasedNumberFormat::setLenient(UBool enabled)
lenient = enabled;
if (!enabled && collator) {
delete collator;
- collator = NULL;
+ collator = nullptr;
}
}
@@ -1422,7 +1422,7 @@ RuleBasedNumberFormat::setDefaultRuleSet(const UnicodeString& ruleSetName, UErro
status = U_ILLEGAL_ARGUMENT_ERROR;
} else {
NFRuleSet* result = findRuleSet(ruleSetName, status);
- if (result != NULL) {
+ if (result != nullptr) {
defaultRuleSet = result;
}
}
@@ -1443,7 +1443,7 @@ RuleBasedNumberFormat::getDefaultRuleSetName() const {
void
RuleBasedNumberFormat::initDefaultRuleSet()
{
- defaultRuleSet = NULL;
+ defaultRuleSet = nullptr;
if (!fRuleSets) {
return;
}
@@ -1480,7 +1480,7 @@ RuleBasedNumberFormat::init(const UnicodeString& rules, LocalizationInfo* locali
{
// TODO: implement UParseError
uprv_memset(&pErr, 0, sizeof(UParseError));
- // Note: this can leave ruleSets == NULL, so remaining code should check
+ // Note: this can leave ruleSets == nullptr, so remaining code should check
if (U_FAILURE(status)) {
return;
}
@@ -1492,7 +1492,7 @@ RuleBasedNumberFormat::init(const UnicodeString& rules, LocalizationInfo* locali
return;
}
- this->localizations = localizationInfos == NULL ? NULL : localizationInfos->ref();
+ this->localizations = localizationInfos == nullptr ? nullptr : localizationInfos->ref();
UnicodeString description(rules);
if (!description.length()) {
@@ -1533,7 +1533,7 @@ RuleBasedNumberFormat::init(const UnicodeString& rules, LocalizationInfo* locali
// copy out the lenient-parse rules and delete them
// from the description
lenientParseRules = new UnicodeString();
- /* test for NULL */
+ /* test for nullptr */
if (lenientParseRules == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
@@ -1556,14 +1556,14 @@ RuleBasedNumberFormat::init(const UnicodeString& rules, LocalizationInfo* locali
// our rule list is an array of the appropriate size
fRuleSets = (NFRuleSet **)uprv_malloc((numRuleSets + 1) * sizeof(NFRuleSet *));
- /* test for NULL */
+ /* test for nullptr */
if (fRuleSets == 0) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
for (int i = 0; i <= numRuleSets; ++i) {
- fRuleSets[i] = NULL;
+ fRuleSets[i] = nullptr;
}
// divide up the descriptions into individual rule-set descriptions
@@ -1638,7 +1638,7 @@ RuleBasedNumberFormat::init(const UnicodeString& rules, LocalizationInfo* locali
for (int32_t i = 0; i < localizationInfos->getNumberOfRuleSets(); ++i) {
UnicodeString name(true, localizationInfos->getRuleSetName(i), -1);
NFRuleSet* rs = findRuleSet(name, status);
- if (rs == NULL) {
+ if (rs == nullptr) {
break; // error
}
if (i == 0) {
@@ -1664,14 +1664,14 @@ RuleBasedNumberFormat::setContext(UDisplayContext value, UErrorCode& status)
capitalizationInfoSet = true;
}
#if !UCONFIG_NO_BREAK_ITERATION
- if ( capitalizationBrkIter == NULL && (value==UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE ||
+ if ( capitalizationBrkIter == nullptr && (value==UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE ||
(value==UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU && capitalizationForUIListMenu) ||
(value==UDISPCTX_CAPITALIZATION_FOR_STANDALONE && capitalizationForStandAlone)) ) {
status = U_ZERO_ERROR;
capitalizationBrkIter = BreakIterator::createSentenceInstance(locale, status);
if (U_FAILURE(status)) {
delete capitalizationBrkIter;
- capitalizationBrkIter = NULL;
+ capitalizationBrkIter = nullptr;
}
}
#endif
@@ -1682,15 +1682,15 @@ void
RuleBasedNumberFormat::initCapitalizationContextInfo(const Locale& thelocale)
{
#if !UCONFIG_NO_BREAK_ITERATION
- const char * localeID = (thelocale != NULL)? thelocale.getBaseName(): NULL;
+ const char * localeID = (thelocale != nullptr)? thelocale.getBaseName(): nullptr;
UErrorCode status = U_ZERO_ERROR;
- UResourceBundle *rb = ures_open(NULL, localeID, &status);
+ UResourceBundle *rb = ures_open(nullptr, localeID, &status);
rb = ures_getByKeyWithFallback(rb, "contextTransforms", rb, &status);
rb = ures_getByKeyWithFallback(rb, "number-spellout", rb, &status);
- if (U_SUCCESS(status) && rb != NULL) {
+ if (U_SUCCESS(status) && rb != nullptr) {
int32_t len = 0;
const int32_t * intVector = ures_getIntVector(rb, &len, &status);
- if (U_SUCCESS(status) && intVector != NULL && len >= 2) {
+ if (U_SUCCESS(status) && intVector != nullptr && len >= 2) {
capitalizationForUIListMenu = static_cast<UBool>(intVector[0]);
capitalizationForStandAlone = static_cast<UBool>(intVector[1]);
}
@@ -1748,34 +1748,34 @@ RuleBasedNumberFormat::dispose()
delete *p;
}
uprv_free(fRuleSets);
- fRuleSets = NULL;
+ fRuleSets = nullptr;
}
if (ruleSetDescriptions) {
delete [] ruleSetDescriptions;
- ruleSetDescriptions = NULL;
+ ruleSetDescriptions = nullptr;
}
#if !UCONFIG_NO_COLLATION
delete collator;
#endif
- collator = NULL;
+ collator = nullptr;
delete decimalFormatSymbols;
- decimalFormatSymbols = NULL;
+ decimalFormatSymbols = nullptr;
delete defaultInfinityRule;
- defaultInfinityRule = NULL;
+ defaultInfinityRule = nullptr;
delete defaultNaNRule;
- defaultNaNRule = NULL;
+ defaultNaNRule = nullptr;
delete lenientParseRules;
- lenientParseRules = NULL;
+ lenientParseRules = nullptr;
#if !UCONFIG_NO_BREAK_ITERATION
delete capitalizationBrkIter;
- capitalizationBrkIter = NULL;
+ capitalizationBrkIter = nullptr;
#endif
if (localizations) {
@@ -1799,11 +1799,11 @@ RuleBasedNumberFormat::getCollator() const
{
#if !UCONFIG_NO_COLLATION
if (!fRuleSets) {
- return NULL;
+ return nullptr;
}
// lazy-evaluate the collator
- if (collator == NULL && lenient) {
+ if (collator == nullptr && lenient) {
// create a default collator based on the formatter's locale,
// then pull out that collator's rules, append any additional
// rules specified in the description, and create a _new_
@@ -1813,18 +1813,18 @@ RuleBasedNumberFormat::getCollator() const
Collator* temp = Collator::createInstance(locale, status);
RuleBasedCollator* newCollator;
- if (U_SUCCESS(status) && (newCollator = dynamic_cast<RuleBasedCollator*>(temp)) != NULL) {
+ if (U_SUCCESS(status) && (newCollator = dynamic_cast<RuleBasedCollator*>(temp)) != nullptr) {
if (lenientParseRules) {
UnicodeString rules(newCollator->getRules());
rules.append(*lenientParseRules);
newCollator = new RuleBasedCollator(rules, status);
// Exit if newCollator could not be created.
- if (newCollator == NULL) {
- return NULL;
+ if (newCollator == nullptr) {
+ return nullptr;
}
} else {
- temp = NULL;
+ temp = nullptr;
}
if (U_SUCCESS(status)) {
newCollator->setAttribute(UCOL_DECOMPOSITION_MODE, UCOL_ON, status);
@@ -1875,7 +1875,7 @@ RuleBasedNumberFormat::initializeDefaultInfinityRule(UErrorCode &status)
if (U_FAILURE(status)) {
return nullptr;
}
- if (defaultInfinityRule == NULL) {
+ if (defaultInfinityRule == nullptr) {
UnicodeString rule(UNICODE_STRING_SIMPLE("Inf: "));
rule.append(getDecimalFormatSymbols()->getSymbol(DecimalFormatSymbols::kInfinitySymbol));
LocalPointer<NFRule> temp(new NFRule(this, rule, status), status);
@@ -1919,11 +1919,11 @@ RuleBasedNumberFormat::getDefaultNaNRule() const
void
RuleBasedNumberFormat::adoptDecimalFormatSymbols(DecimalFormatSymbols* symbolsToAdopt)
{
- if (symbolsToAdopt == NULL) {
- return; // do not allow caller to set decimalFormatSymbols to NULL
+ if (symbolsToAdopt == nullptr) {
+ return; // do not allow caller to set decimalFormatSymbols to nullptr
}
- if (decimalFormatSymbols != NULL) {
+ if (decimalFormatSymbols != nullptr) {
delete decimalFormatSymbols;
}
@@ -1934,11 +1934,11 @@ RuleBasedNumberFormat::adoptDecimalFormatSymbols(DecimalFormatSymbols* symbolsTo
UErrorCode status = U_ZERO_ERROR;
delete defaultInfinityRule;
- defaultInfinityRule = NULL;
+ defaultInfinityRule = nullptr;
initializeDefaultInfinityRule(status); // Reset with the new DecimalFormatSymbols
delete defaultNaNRule;
- defaultNaNRule = NULL;
+ defaultNaNRule = nullptr;
initializeDefaultNaNRule(status); // Reset with the new DecimalFormatSymbols
if (fRuleSets) {
diff --git a/Build/source/libs/icu/icu-src/source/i18n/rbt.cpp b/Build/source/libs/icu/icu-src/source/i18n/rbt.cpp
index 86d6cbd8bda..2176e89fddc 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/rbt.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/rbt.cpp
@@ -27,7 +27,7 @@ U_NAMESPACE_BEGIN
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(RuleBasedTransliterator)
-static Replaceable *gLockedText = NULL;
+static Replaceable *gLockedText = nullptr;
void RuleBasedTransliterator::_construct(const UnicodeString& rules,
UTransDirection direction,
@@ -46,7 +46,7 @@ void RuleBasedTransliterator::_construct(const UnicodeString& rules,
}
if (parser.idBlockVector.size() != 0 ||
- parser.compoundFilter != NULL ||
+ parser.compoundFilter != nullptr ||
parser.dataVector.size() == 0) {
status = U_INVALID_RBT_SYNTAX; // ::ID blocks disallowed in RBT
return;
@@ -267,7 +267,7 @@ RuleBasedTransliterator::handleTransliterate(Replaceable& text, UTransPosition&
}
// Check to make sure we don't dereference a null pointer.
- if (fData != NULL) {
+ if (fData != nullptr) {
while (index.start < index.limit &&
loopCount <= loopLimit &&
fData->ruleSet.transliterate(text, index, isIncremental)) {
@@ -277,7 +277,7 @@ RuleBasedTransliterator::handleTransliterate(Replaceable& text, UTransPosition&
if (lockedMutexAtThisLevel) {
{
Mutex m;
- gLockedText = NULL;
+ gLockedText = nullptr;
}
umtx_unlock(&transliteratorDataMutex);
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/rbt.h b/Build/source/libs/icu/icu-src/source/i18n/rbt.h
index 8a43c90d462..59fa286a45a 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/rbt.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/rbt.h
@@ -193,7 +193,7 @@ public:
* @return The class ID for all objects of this class.
* @internal Use transliterator factory methods instead since this class will be removed in that release.
*/
- U_I18N_API static UClassID U_EXPORT2 getStaticClassID(void);
+ U_I18N_API static UClassID U_EXPORT2 getStaticClassID();
/**
* Returns a unique class ID <b>polymorphically</b>. This method
@@ -205,7 +205,7 @@ public:
* class have the same class ID. Objects of other classes have
* different class IDs.
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
private:
diff --git a/Build/source/libs/icu/icu-src/source/i18n/rbt_data.cpp b/Build/source/libs/icu/icu-src/source/i18n/rbt_data.cpp
index 866f0c2bfa1..f4212848cb5 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/rbt_data.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/rbt_data.cpp
@@ -50,7 +50,7 @@ TransliterationRuleData::TransliterationRuleData(const TransliterationRuleData&
UnicodeString* value =
new UnicodeString(*(const UnicodeString*)e->value.pointer);
// Exit out if value could not be created.
- if (value == NULL) {
+ if (value == nullptr) {
return;
}
variableNames.put(*(UnicodeString*)e->key.pointer, value, status);
@@ -59,14 +59,14 @@ TransliterationRuleData::TransliterationRuleData(const TransliterationRuleData&
variables = 0;
if (other.variables != 0) {
variables = (UnicodeFunctor **)uprv_malloc(variablesLength * sizeof(UnicodeFunctor *));
- /* test for NULL */
+ /* test for nullptr */
if (variables == 0) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
for (i=0; i<variablesLength; ++i) {
variables[i] = other.variables[i]->clone();
- if (variables[i] == NULL) {
+ if (variables[i] == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
break;
}
@@ -78,7 +78,7 @@ TransliterationRuleData::TransliterationRuleData(const TransliterationRuleData&
delete variables[n];
}
uprv_free(variables);
- variables = NULL;
+ variables = nullptr;
return;
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/rbt_data.h b/Build/source/libs/icu/icu-src/source/i18n/rbt_data.h
index 52a961dde01..43cbb4795b6 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/rbt_data.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/rbt_data.h
@@ -67,7 +67,7 @@ public:
Hashtable variableNames;
/**
- * Map category variable (UChar) to set (UnicodeFunctor).
+ * Map category variable (char16_t) to set (UnicodeFunctor).
* 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
@@ -91,7 +91,7 @@ public:
* variablesBase through variablesBase +
* variablesLength - 1 represent UnicodeFunctor objects.
*/
- UChar variablesBase;
+ char16_t variablesBase;
/**
* The length of variables.
@@ -118,7 +118,7 @@ public:
/**
* Given a stand-in character, return the UnicodeFunctor that it
- * represents, or NULL if it doesn't represent anything.
+ * represents, or nullptr if it doesn't represent anything.
* @param standIn the given stand-in character.
* @return the UnicodeFunctor that 'standIn' represents
*/
@@ -126,7 +126,7 @@ public:
/**
* Given a stand-in character, return the UnicodeMatcher that it
- * represents, or NULL if it doesn't represent anything or if it
+ * represents, or nullptr if it doesn't represent anything or if it
* represents something that is not a matcher.
* @param standIn the given stand-in character.
* @return return the UnicodeMatcher that 'standIn' represents
@@ -135,7 +135,7 @@ public:
/**
* Given a stand-in character, return the UnicodeReplacer that it
- * represents, or NULL if it doesn't represent anything or if it
+ * represents, or nullptr if it doesn't represent anything or if it
* represents something that is not a replacer.
* @param standIn the given stand-in character.
* @return return the UnicodeReplacer that 'standIn' represents
diff --git a/Build/source/libs/icu/icu-src/source/i18n/rbt_pars.cpp b/Build/source/libs/icu/icu-src/source/i18n/rbt_pars.cpp
index f13bf1c227a..10482d5edb1 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/rbt_pars.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/rbt_pars.cpp
@@ -43,66 +43,66 @@
#include "putilimp.h"
// Operators
-#define VARIABLE_DEF_OP ((UChar)0x003D) /*=*/
-#define FORWARD_RULE_OP ((UChar)0x003E) /*>*/
-#define REVERSE_RULE_OP ((UChar)0x003C) /*<*/
-#define FWDREV_RULE_OP ((UChar)0x007E) /*~*/ // internal rep of <> op
+#define VARIABLE_DEF_OP ((char16_t)0x003D) /*=*/
+#define FORWARD_RULE_OP ((char16_t)0x003E) /*>*/
+#define REVERSE_RULE_OP ((char16_t)0x003C) /*<*/
+#define FWDREV_RULE_OP ((char16_t)0x007E) /*~*/ // internal rep of <> op
// Other special characters
-#define QUOTE ((UChar)0x0027) /*'*/
-#define ESCAPE ((UChar)0x005C) /*\*/
-#define END_OF_RULE ((UChar)0x003B) /*;*/
-#define RULE_COMMENT_CHAR ((UChar)0x0023) /*#*/
-
-#define SEGMENT_OPEN ((UChar)0x0028) /*(*/
-#define SEGMENT_CLOSE ((UChar)0x0029) /*)*/
-#define CONTEXT_ANTE ((UChar)0x007B) /*{*/
-#define CONTEXT_POST ((UChar)0x007D) /*}*/
-#define CURSOR_POS ((UChar)0x007C) /*|*/
-#define CURSOR_OFFSET ((UChar)0x0040) /*@*/
-#define ANCHOR_START ((UChar)0x005E) /*^*/
-#define KLEENE_STAR ((UChar)0x002A) /***/
-#define ONE_OR_MORE ((UChar)0x002B) /*+*/
-#define ZERO_OR_ONE ((UChar)0x003F) /*?*/
-
-#define DOT ((UChar)46) /*.*/
-
-static const UChar DOT_SET[] = { // "[^[:Zp:][:Zl:]\r\n$]";
+#define QUOTE ((char16_t)0x0027) /*'*/
+#define ESCAPE ((char16_t)0x005C) /*\*/
+#define END_OF_RULE ((char16_t)0x003B) /*;*/
+#define RULE_COMMENT_CHAR ((char16_t)0x0023) /*#*/
+
+#define SEGMENT_OPEN ((char16_t)0x0028) /*(*/
+#define SEGMENT_CLOSE ((char16_t)0x0029) /*)*/
+#define CONTEXT_ANTE ((char16_t)0x007B) /*{*/
+#define CONTEXT_POST ((char16_t)0x007D) /*}*/
+#define CURSOR_POS ((char16_t)0x007C) /*|*/
+#define CURSOR_OFFSET ((char16_t)0x0040) /*@*/
+#define ANCHOR_START ((char16_t)0x005E) /*^*/
+#define KLEENE_STAR ((char16_t)0x002A) /***/
+#define ONE_OR_MORE ((char16_t)0x002B) /*+*/
+#define ZERO_OR_ONE ((char16_t)0x003F) /*?*/
+
+#define DOT ((char16_t)46) /*.*/
+
+static const char16_t DOT_SET[] = { // "[^[:Zp:][:Zl:]\r\n$]";
91, 94, 91, 58, 90, 112, 58, 93, 91, 58, 90,
108, 58, 93, 92, 114, 92, 110, 36, 93, 0
};
// A function is denoted &Source-Target/Variant(text)
-#define FUNCTION ((UChar)38) /*&*/
+#define FUNCTION ((char16_t)38) /*&*/
// 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 '&'.
-#define ALT_REVERSE_RULE_OP ((UChar)0x2190) // Left Arrow
-#define ALT_FORWARD_RULE_OP ((UChar)0x2192) // Right Arrow
-#define ALT_FWDREV_RULE_OP ((UChar)0x2194) // Left Right Arrow
-#define ALT_FUNCTION ((UChar)0x2206) // Increment (~Greek Capital Delta)
+#define ALT_REVERSE_RULE_OP ((char16_t)0x2190) // Left Arrow
+#define ALT_FORWARD_RULE_OP ((char16_t)0x2192) // Right Arrow
+#define ALT_FWDREV_RULE_OP ((char16_t)0x2194) // Left Right Arrow
+#define ALT_FUNCTION ((char16_t)0x2206) // Increment (~Greek Capital Delta)
// Special characters disallowed at the top level
-static const UChar ILLEGAL_TOP[] = {41,0}; // ")"
+static const char16_t ILLEGAL_TOP[] = {41,0}; // ")"
// Special characters disallowed within a segment
-static const UChar ILLEGAL_SEG[] = {123,125,124,64,0}; // "{}|@"
+static const char16_t ILLEGAL_SEG[] = {123,125,124,64,0}; // "{}|@"
// Special characters disallowed within a function argument
-static const UChar ILLEGAL_FUNC[] = {94,40,46,42,43,63,123,125,124,64,0}; // "^(.*+?{}|@"
+static const char16_t ILLEGAL_FUNC[] = {94,40,46,42,43,63,123,125,124,64,0}; // "^(.*+?{}|@"
// By definition, the ANCHOR_END special character is a
// trailing SymbolTable.SYMBOL_REF character.
// private static final char ANCHOR_END = '$';
-static const UChar gOPERATORS[] = { // "=><"
+static const char16_t gOPERATORS[] = { // "=><"
VARIABLE_DEF_OP, FORWARD_RULE_OP, REVERSE_RULE_OP,
ALT_FORWARD_RULE_OP, ALT_REVERSE_RULE_OP, ALT_FWDREV_RULE_OP,
0
};
-static const UChar HALF_ENDERS[] = { // "=><;"
+static const char16_t HALF_ENDERS[] = { // "=><;"
VARIABLE_DEF_OP, FORWARD_RULE_OP, REVERSE_RULE_OP,
ALT_FORWARD_RULE_OP, ALT_REVERSE_RULE_OP, ALT_FWDREV_RULE_OP,
END_OF_RULE,
@@ -111,15 +111,15 @@ static const UChar HALF_ENDERS[] = { // "=><;"
// These are also used in Transliterator::toRules()
static const int32_t ID_TOKEN_LEN = 2;
-static const UChar ID_TOKEN[] = { 0x3A, 0x3A }; // ':', ':'
+static const char16_t ID_TOKEN[] = { 0x3A, 0x3A }; // ':', ':'
/*
commented out until we do real ::BEGIN/::END functionality
static const int32_t BEGIN_TOKEN_LEN = 5;
-static const UChar BEGIN_TOKEN[] = { 0x42, 0x45, 0x47, 0x49, 0x4e }; // 'BEGIN'
+static const char16_t BEGIN_TOKEN[] = { 0x42, 0x45, 0x47, 0x49, 0x4e }; // 'BEGIN'
static const int32_t END_TOKEN_LEN = 3;
-static const UChar END_TOKEN[] = { 0x45, 0x4e, 0x44 }; // 'END'
+static const char16_t END_TOKEN[] = { 0x45, 0x4e, 0x44 }; // 'END'
*/
U_NAMESPACE_BEGIN
@@ -191,7 +191,7 @@ const UnicodeString* ParseData::lookup(const UnicodeString& name) const {
const UnicodeFunctor* ParseData::lookupMatcher(UChar32 ch) const {
// Note that we cannot use data.lookupSet() because the
// set array has not been constructed yet.
- const UnicodeFunctor* set = NULL;
+ const UnicodeFunctor* set = nullptr;
int32_t i = ch - data->variablesBase;
if (i >= 0 && i < variablesVector->size()) {
int32_t j = ch - data->variablesBase;
@@ -211,7 +211,7 @@ UnicodeString ParseData::parseReference(const UnicodeString& text,
int32_t i = start;
UnicodeString result;
while (i < limit) {
- UChar c = text.charAt(i);
+ char16_t c = text.charAt(i);
if ((i==start && !u_isIDStart(c)) || !u_isIDPart(c)) {
break;
}
@@ -231,7 +231,7 @@ UBool ParseData::isMatcher(UChar32 ch) {
int32_t i = ch - data->variablesBase;
if (i >= 0 && i < variablesVector->size()) {
UnicodeFunctor *f = (UnicodeFunctor*) variablesVector->elementAt(i);
- return f != NULL && f->toMatcher() != NULL;
+ return f != nullptr && f->toMatcher() != nullptr;
}
return true;
}
@@ -246,7 +246,7 @@ UBool ParseData::isReplacer(UChar32 ch) {
int i = ch - data->variablesBase;
if (i >= 0 && i < variablesVector->size()) {
UnicodeFunctor *f = (UnicodeFunctor*) variablesVector->elementAt(i);
- return f != NULL && f->toReplacer() != NULL;
+ return f != nullptr && f->toReplacer() != nullptr;
}
return true;
}
@@ -413,14 +413,14 @@ int32_t RuleHalf::parseSection(const UnicodeString& rule, int32_t pos, int32_t l
while (pos < limit && !done) {
// Since all syntax characters are in the BMP, fetching
// 16-bit code units suffices here.
- UChar c = rule.charAt(pos++);
+ char16_t c = rule.charAt(pos++);
if (PatternProps::isWhiteSpace(c)) {
// Ignore whitespace. Note that this is not Unicode
// spaces, but Java spaces -- a subset, representing
// whitespace likely to be seen in code.
continue;
}
- if (u_strchr(HALF_ENDERS, c) != NULL) {
+ if (u_strchr(HALF_ENDERS, c) != nullptr) {
if (isSegment) {
// Unclosed segment
return syntaxError(U_UNCLOSED_SEGMENT, rule, start, status);
@@ -538,7 +538,7 @@ int32_t RuleHalf::parseSection(const UnicodeString& rule, int32_t pos, int32_t l
StringMatcher* m =
new StringMatcher(buf, bufSegStart, buf.length(),
segmentNumber, *parser.curData);
- if (m == NULL) {
+ if (m == nullptr) {
return syntaxError(U_MEMORY_ALLOCATION_ERROR, rule, start, status);
}
@@ -555,14 +555,14 @@ int32_t RuleHalf::parseSection(const UnicodeString& rule, int32_t pos, int32_t l
TransliteratorIDParser::SingleID* single =
TransliteratorIDParser::parseFilterID(rule, iref);
// The next character MUST be a segment open
- if (single == NULL ||
+ if (single == nullptr ||
!ICU_Utility::parseChar(rule, iref, SEGMENT_OPEN)) {
return syntaxError(U_INVALID_FUNCTION, rule, start, status);
}
Transliterator *t = single->createInstance();
delete single;
- if (t == NULL) {
+ if (t == nullptr) {
return syntaxError(U_INVALID_FUNCTION, rule, start, status);
}
@@ -579,7 +579,7 @@ int32_t RuleHalf::parseSection(const UnicodeString& rule, int32_t pos, int32_t l
buf.extractBetween(bufSegStart, buf.length(), output);
FunctionReplacer *r =
new FunctionReplacer(t, new StringReplacer(output, parser.curData));
- if (r == NULL) {
+ if (r == nullptr) {
return syntaxError(U_MEMORY_ALLOCATION_ERROR, rule, start, status);
}
@@ -673,7 +673,7 @@ int32_t RuleHalf::parseSection(const UnicodeString& rule, int32_t pos, int32_t l
UnicodeFunctor *m =
new StringMatcher(buf, qstart, qlimit, 0, *parser.curData);
- if (m == NULL) {
+ if (m == nullptr) {
return syntaxError(U_MEMORY_ALLOCATION_ERROR, rule, start, status);
}
int32_t min = 0;
@@ -690,7 +690,7 @@ int32_t RuleHalf::parseSection(const UnicodeString& rule, int32_t pos, int32_t l
// do nothing -- min, max already set
}
m = new Quantifier(m, min, max);
- if (m == NULL) {
+ if (m == nullptr) {
return syntaxError(U_MEMORY_ALLOCATION_ERROR, rule, start, status);
}
buf.truncate(qstart);
@@ -833,9 +833,9 @@ variablesVector(statusReturn),
segmentObjects(statusReturn)
{
idBlockVector.setDeleter(uprv_deleteUObject);
- curData = NULL;
- compoundFilter = NULL;
- parseData = NULL;
+ curData = nullptr;
+ compoundFilter = nullptr;
+ parseData = nullptr;
variableNames.setValueDeleter(uprv_deleteUObject);
}
@@ -867,7 +867,7 @@ TransliteratorParser::parse(const UnicodeString& rules,
*/
UnicodeSet* TransliteratorParser::orphanCompoundFilter() {
UnicodeSet* f = compoundFilter;
- compoundFilter = NULL;
+ compoundFilter = nullptr;
return f;
}
@@ -902,26 +902,26 @@ void TransliteratorParser::parseRules(const UnicodeString& rule,
}
idBlockVector.removeAllElements();
- curData = NULL;
+ curData = nullptr;
direction = theDirection;
ruleCount = 0;
delete compoundFilter;
- compoundFilter = NULL;
+ compoundFilter = nullptr;
while (!variablesVector.isEmpty()) {
delete (UnicodeFunctor*)variablesVector.orphanElementAt(0);
}
variableNames.removeAll();
parseData = new ParseData(0, &variablesVector, &variableNames);
- if (parseData == NULL) {
+ if (parseData == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
- dotStandIn = (UChar) -1;
+ dotStandIn = (char16_t) -1;
- UnicodeString *tempstr = NULL; // used for memory allocation error checking
+ UnicodeString *tempstr = nullptr; // used for memory allocation error checking
UnicodeString str; // scratch
UnicodeString idBlockResult;
int32_t pos = 0;
@@ -932,18 +932,18 @@ void TransliteratorParser::parseRules(const UnicodeString& rule,
// 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.
- compoundFilter = NULL;
+ compoundFilter = nullptr;
int32_t compoundFilterOffset = -1;
while (pos < limit && U_SUCCESS(status)) {
- UChar c = rule.charAt(pos++);
+ char16_t c = rule.charAt(pos++);
if (PatternProps::isWhiteSpace(c)) {
// Ignore leading whitespace.
continue;
}
// Skip lines starting with the comment character
if (c == RULE_COMMENT_CHAR) {
- pos = rule.indexOf((UChar)0x000A /*\n*/, pos) + 1;
+ pos = rule.indexOf((char16_t)0x000A /*\n*/, pos) + 1;
if (pos == 0) {
break; // No "\n" found; rest of rule is a comment
}
@@ -974,7 +974,7 @@ void TransliteratorParser::parseRules(const UnicodeString& rule,
int32_t p = pos;
if (!parsingIDs) {
- if (curData != NULL) {
+ if (curData != nullptr) {
U_ASSERT(!dataVector.hasDeleter());
if (direction == UTRANS_FORWARD)
dataVector.addElement(curData, status);
@@ -983,7 +983,7 @@ void TransliteratorParser::parseRules(const UnicodeString& rule,
if (U_FAILURE(status)) {
delete curData;
}
- curData = NULL;
+ curData = nullptr;
}
parsingIDs = true;
}
@@ -1003,12 +1003,12 @@ void TransliteratorParser::parseRules(const UnicodeString& rule,
} else {
// Couldn't parse an ID. Try to parse a global filter
int32_t withParens = -1;
- UnicodeSet* f = TransliteratorIDParser::parseGlobalFilter(rule, p, direction, withParens, NULL);
- if (f != NULL) {
+ UnicodeSet* f = TransliteratorIDParser::parseGlobalFilter(rule, p, direction, withParens, nullptr);
+ if (f != nullptr) {
if (ICU_Utility::parseChar(rule, p, END_OF_RULE)
&& (direction == UTRANS_FORWARD) == (withParens == 0))
{
- if (compoundFilter != NULL) {
+ if (compoundFilter != nullptr) {
// Multiple compound filters
syntaxError(U_MULTIPLE_COMPOUND_FILTERS, rule, pos, status);
delete f;
@@ -1030,8 +1030,8 @@ void TransliteratorParser::parseRules(const UnicodeString& rule,
} else {
if (parsingIDs) {
tempstr = new UnicodeString(idBlockResult);
- // NULL pointer check
- if (tempstr == NULL) {
+ // nullptr pointer check
+ if (tempstr == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -1046,8 +1046,8 @@ void TransliteratorParser::parseRules(const UnicodeString& rule,
idBlockResult.remove();
parsingIDs = false;
curData = new TransliterationRuleData(status);
- // NULL pointer check
- if (curData == NULL) {
+ // nullptr pointer check
+ if (curData == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -1075,8 +1075,8 @@ void TransliteratorParser::parseRules(const UnicodeString& rule,
if (parsingIDs && idBlockResult.length() > 0) {
tempstr = new UnicodeString(idBlockResult);
- // NULL pointer check
- if (tempstr == NULL) {
+ // nullptr pointer check
+ if (tempstr == nullptr) {
// TODO: Testing, forcing this path, shows many memory leaks. ICU-21701
// intltest translit/TransliteratorTest/TestInstantiation
status = U_MEMORY_ALLOCATION_ERROR;
@@ -1090,7 +1090,7 @@ void TransliteratorParser::parseRules(const UnicodeString& rule,
return;
}
}
- else if (!parsingIDs && curData != NULL) {
+ else if (!parsingIDs && curData != nullptr) {
if (direction == UTRANS_FORWARD) {
dataVector.addElement(curData, status);
} else {
@@ -1112,8 +1112,8 @@ void TransliteratorParser::parseRules(const UnicodeString& rule,
data->variables = 0;
} else {
data->variables = (UnicodeFunctor**)uprv_malloc(data->variablesLength * sizeof(UnicodeFunctor*));
- // NULL pointer check
- if (data->variables == NULL) {
+ // nullptr pointer check
+ if (data->variables == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -1128,9 +1128,9 @@ void TransliteratorParser::parseRules(const UnicodeString& rule,
data->variableNames.removeAll();
int32_t p = UHASH_FIRST;
const UHashElement* he = variableNames.nextElement(p);
- while (he != NULL) {
+ while (he != nullptr) {
UnicodeString* tempus = ((UnicodeString*)(he->value.pointer))->clone();
- if (tempus == NULL) {
+ if (tempus == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -1142,7 +1142,7 @@ void TransliteratorParser::parseRules(const UnicodeString& rule,
variablesVector.removeAllElements(); // keeps them from getting deleted when we succeed
// Index the rules
- if (compoundFilter != NULL) {
+ if (compoundFilter != nullptr) {
if ((direction == UTRANS_FORWARD && compoundFilterOffset != 1) ||
(direction == UTRANS_REVERSE && compoundFilterOffset != ruleCount)) {
status = U_MISPLACED_COMPOUND_FILTER;
@@ -1168,10 +1168,10 @@ void TransliteratorParser::setVariableRange(int32_t start, int32_t end, UErrorCo
return;
}
- curData->variablesBase = (UChar) start;
+ curData->variablesBase = (char16_t) start;
if (dataVector.size() == 0) {
- variableNext = (UChar) start;
- variableLimit = (UChar) (end + 1);
+ variableNext = (char16_t) start;
+ variableLimit = (char16_t) (end + 1);
}
}
@@ -1200,15 +1200,15 @@ void TransliteratorParser::pragmaNormalizeRules(UNormalizationMode /*mode*/) {
//TODO Finish
}
-static const UChar PRAGMA_USE[] = {0x75,0x73,0x65,0x20,0}; // "use "
+static const char16_t PRAGMA_USE[] = {0x75,0x73,0x65,0x20,0}; // "use "
-static const UChar PRAGMA_VARIABLE_RANGE[] = {0x7E,0x76,0x61,0x72,0x69,0x61,0x62,0x6C,0x65,0x20,0x72,0x61,0x6E,0x67,0x65,0x20,0x23,0x20,0x23,0x7E,0x3B,0}; // "~variable range # #~;"
+static const char16_t PRAGMA_VARIABLE_RANGE[] = {0x7E,0x76,0x61,0x72,0x69,0x61,0x62,0x6C,0x65,0x20,0x72,0x61,0x6E,0x67,0x65,0x20,0x23,0x20,0x23,0x7E,0x3B,0}; // "~variable range # #~;"
-static const UChar PRAGMA_MAXIMUM_BACKUP[] = {0x7E,0x6D,0x61,0x78,0x69,0x6D,0x75,0x6D,0x20,0x62,0x61,0x63,0x6B,0x75,0x70,0x20,0x23,0x7E,0x3B,0}; // "~maximum backup #~;"
+static const char16_t PRAGMA_MAXIMUM_BACKUP[] = {0x7E,0x6D,0x61,0x78,0x69,0x6D,0x75,0x6D,0x20,0x62,0x61,0x63,0x6B,0x75,0x70,0x20,0x23,0x7E,0x3B,0}; // "~maximum backup #~;"
-static const UChar PRAGMA_NFD_RULES[] = {0x7E,0x6E,0x66,0x64,0x20,0x72,0x75,0x6C,0x65,0x73,0x7E,0x3B,0}; // "~nfd rules~;"
+static const char16_t PRAGMA_NFD_RULES[] = {0x7E,0x6E,0x66,0x64,0x20,0x72,0x75,0x6C,0x65,0x73,0x7E,0x3B,0}; // "~nfd rules~;"
-static const UChar PRAGMA_NFC_RULES[] = {0x7E,0x6E,0x66,0x63,0x20,0x72,0x75,0x6C,0x65,0x73,0x7E,0x3B,0}; // "~nfc rules~;"
+static const char16_t PRAGMA_NFC_RULES[] = {0x7E,0x6E,0x66,0x63,0x20,0x72,0x75,0x6C,0x65,0x73,0x7E,0x3B,0}; // "~nfc rules~;"
/**
* Return true if the given rule looks like a pragma.
@@ -1218,7 +1218,7 @@ static const UChar PRAGMA_NFC_RULES[] = {0x7E,0x6E,0x66,0x63,0x20,0x72,0x75,0x6C
*/
UBool TransliteratorParser::resemblesPragma(const UnicodeString& rule, int32_t pos, int32_t limit) {
// Must start with /use\s/i
- return ICU_Utility::parsePattern(rule, pos, limit, UnicodeString(true, PRAGMA_USE, 4), NULL) >= 0;
+ return ICU_Utility::parsePattern(rule, pos, limit, UnicodeString(true, PRAGMA_USE, 4), nullptr) >= 0;
}
/**
@@ -1255,13 +1255,13 @@ int32_t TransliteratorParser::parsePragma(const UnicodeString& rule, int32_t pos
return p;
}
- p = ICU_Utility::parsePattern(rule, pos, limit, UnicodeString(true, PRAGMA_NFD_RULES, -1), NULL);
+ p = ICU_Utility::parsePattern(rule, pos, limit, UnicodeString(true, PRAGMA_NFD_RULES, -1), nullptr);
if (p >= 0) {
pragmaNormalizeRules(UNORM_NFD);
return p;
}
- p = ICU_Utility::parsePattern(rule, pos, limit, UnicodeString(true, PRAGMA_NFC_RULES, -1), NULL);
+ p = ICU_Utility::parsePattern(rule, pos, limit, UnicodeString(true, PRAGMA_NFC_RULES, -1), nullptr);
if (p >= 0) {
pragmaNormalizeRules(UNORM_NFC);
return p;
@@ -1287,7 +1287,7 @@ int32_t TransliteratorParser::parsePragma(const UnicodeString& rule, int32_t pos
int32_t TransliteratorParser::parseRule(const UnicodeString& rule, int32_t pos, int32_t limit, UErrorCode& status) {
// Locate the left side, operator, and right side
int32_t start = pos;
- UChar op = 0;
+ char16_t op = 0;
int32_t i;
// Set up segments data
@@ -1305,7 +1305,7 @@ int32_t TransliteratorParser::parseRule(const UnicodeString& rule, int32_t pos,
return start;
}
- if (pos == limit || u_strchr(gOPERATORS, (op = rule.charAt(--pos))) == NULL) {
+ if (pos == limit || u_strchr(gOPERATORS, (op = rule.charAt(--pos))) == nullptr) {
return syntaxError(U_MISSING_OPERATOR, rule, start, status);
}
++pos;
@@ -1366,8 +1366,8 @@ int32_t TransliteratorParser::parseRule(const UnicodeString& rule, int32_t pos,
}
// We allow anything on the right, including an empty string.
UnicodeString* value = new UnicodeString(right->text);
- // NULL pointer check
- if (value == NULL) {
+ // nullptr pointer check
+ if (value == nullptr) {
return syntaxError(U_MEMORY_ALLOCATION_ERROR, rule, start, status);
}
variableNames.put(undefinedVariableName, value, status);
@@ -1393,7 +1393,7 @@ int32_t TransliteratorParser::parseRule(const UnicodeString& rule, int32_t pos,
}
}
for (i=0; i<segmentObjects.size(); ++i) {
- if (segmentObjects.elementAt(i) == NULL) {
+ if (segmentObjects.elementAt(i) == nullptr) {
syntaxError(U_INTERNAL_TRANSLITERATOR_ERROR, rule, start, status); // will never happen
}
}
@@ -1451,11 +1451,11 @@ int32_t TransliteratorParser::parseRule(const UnicodeString& rule, int32_t pos,
}
// Flatten segment objects vector to an array
- UnicodeFunctor** segmentsArray = NULL;
+ UnicodeFunctor** segmentsArray = nullptr;
if (segmentObjects.size() > 0) {
segmentsArray = (UnicodeFunctor **)uprv_malloc(segmentObjects.size() * sizeof(UnicodeFunctor *));
// Null pointer check
- if (segmentsArray == NULL) {
+ if (segmentsArray == nullptr) {
return syntaxError(U_MEMORY_ALLOCATION_ERROR, rule, start, status);
}
segmentObjects.toArray((void**) segmentsArray);
@@ -1469,7 +1469,7 @@ int32_t TransliteratorParser::parseRule(const UnicodeString& rule, int32_t pos,
curData,
status);
//Null pointer check
- if (temptr == NULL) {
+ if (temptr == nullptr) {
uprv_free(segmentsArray);
return syntaxError(U_MEMORY_ALLOCATION_ERROR, rule, start, status);
}
@@ -1522,14 +1522,14 @@ int32_t TransliteratorParser::syntaxError(UErrorCode parseErrorCode,
* Parse a UnicodeSet out, store it, and return the stand-in character
* used to represent it.
*/
-UChar TransliteratorParser::parseSet(const UnicodeString& rule,
+char16_t TransliteratorParser::parseSet(const UnicodeString& rule,
ParsePosition& pos,
UErrorCode& status) {
UnicodeSet* set = new UnicodeSet(rule, pos, USET_IGNORE_SPACE, parseData, status);
// Null pointer check
- if (set == NULL) {
+ if (set == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
- return (UChar)0x0000; // Return empty character with error.
+ return (char16_t)0x0000; // Return empty character with error.
}
set->compact();
return generateStandInFor(set, status);
@@ -1539,14 +1539,14 @@ UChar TransliteratorParser::parseSet(const UnicodeString& rule,
* Generate and return a stand-in for a new UnicodeFunctor. Store
* the matcher (adopt it).
*/
-UChar TransliteratorParser::generateStandInFor(UnicodeFunctor* adopted, UErrorCode& status) {
+char16_t TransliteratorParser::generateStandInFor(UnicodeFunctor* adopted, UErrorCode& status) {
// 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 (int32_t i=0; i<variablesVector.size(); ++i) {
if (variablesVector.elementAt(i) == adopted) { // [sic] pointer comparison
- return (UChar) (curData->variablesBase + i);
+ return (char16_t) (curData->variablesBase + i);
}
}
@@ -1566,13 +1566,13 @@ UChar TransliteratorParser::generateStandInFor(UnicodeFunctor* adopted, UErrorCo
/**
* Return the standin for segment seg (1-based).
*/
-UChar TransliteratorParser::getSegmentStandin(int32_t seg, UErrorCode& status) {
+char16_t TransliteratorParser::getSegmentStandin(int32_t seg, UErrorCode& status) {
// Special character used to indicate an empty spot
- UChar empty = curData->variablesBase - 1;
+ char16_t empty = curData->variablesBase - 1;
while (segmentStandins.length() < seg) {
segmentStandins.append(empty);
}
- UChar c = segmentStandins.charAt(seg-1);
+ char16_t c = segmentStandins.charAt(seg-1);
if (c == empty) {
if (variableNext >= variableLimit) {
status = U_VARIABLE_RANGE_EXHAUSTED;
@@ -1582,7 +1582,7 @@ UChar TransliteratorParser::getSegmentStandin(int32_t seg, UErrorCode& status) {
// Set a placeholder in the primary 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((void*) NULL, status);
+ variablesVector.addElement((void*) nullptr, status);
segmentStandins.setCharAt(seg-1, c);
}
return c;
@@ -1603,8 +1603,8 @@ void TransliteratorParser::setSegmentObject(int32_t seg, StringMatcher* adopted,
return;
}
int32_t index = getSegmentStandin(seg, status) - curData->variablesBase;
- if (segmentObjects.elementAt(seg-1) != NULL ||
- variablesVector.elementAt(index) != NULL) {
+ if (segmentObjects.elementAt(seg-1) != nullptr ||
+ variablesVector.elementAt(index) != nullptr) {
// should never happen
if (U_SUCCESS(status)) {status = U_INTERNAL_TRANSLITERATOR_ERROR;}
return;
@@ -1618,13 +1618,13 @@ void TransliteratorParser::setSegmentObject(int32_t seg, StringMatcher* adopted,
* Return the stand-in for the dot set. It is allocated the first
* time and reused thereafter.
*/
-UChar TransliteratorParser::getDotStandIn(UErrorCode& status) {
- if (dotStandIn == (UChar) -1) {
+char16_t TransliteratorParser::getDotStandIn(UErrorCode& status) {
+ if (dotStandIn == (char16_t) -1) {
UnicodeSet* tempus = new UnicodeSet(UnicodeString(true, DOT_SET, -1), status);
// Null pointer check.
- if (tempus == NULL) {
+ if (tempus == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
- return (UChar)0x0000;
+ return (char16_t)0x0000;
}
dotStandIn = generateStandInFor(tempus, status);
}
@@ -1639,7 +1639,7 @@ void TransliteratorParser::appendVariableDef(const UnicodeString& name,
UnicodeString& buf,
UErrorCode& status) {
const UnicodeString* s = (const UnicodeString*) variableNames.get(name);
- if (s == NULL) {
+ if (s == nullptr) {
// 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
@@ -1651,7 +1651,7 @@ void TransliteratorParser::appendVariableDef(const UnicodeString& name,
status = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
- buf.append((UChar) --variableLimit);
+ buf.append((char16_t) --variableLimit);
} else {
//throw new IllegalArgumentException("Undefined variable $"
// + name);
@@ -1673,13 +1673,13 @@ void TransliteratorParser::appendVariableDef(const UnicodeString& name,
U_NAMESPACE_END
U_CAPI int32_t
-utrans_stripRules(const UChar *source, int32_t sourceLen, UChar *target, UErrorCode *status) {
+utrans_stripRules(const char16_t *source, int32_t sourceLen, char16_t *target, UErrorCode *status) {
U_NAMESPACE_USE
- //const UChar *sourceStart = source;
- const UChar *targetStart = target;
- const UChar *sourceLimit = source+sourceLen;
- UChar *targetLimit = target+sourceLen;
+ //const char16_t *sourceStart = source;
+ const char16_t *targetStart = target;
+ const char16_t *sourceLimit = source+sourceLen;
+ char16_t *targetLimit = target+sourceLen;
UChar32 c = 0;
UBool quoted = false;
int32_t index;
@@ -1759,7 +1759,7 @@ utrans_stripRules(const UChar *source, int32_t sourceLen, UChar *target, UErrorC
continue;
}
- /* Append UChar * after dissembling if c > 0xffff*/
+ /* Append char16_t * after dissembling if c > 0xffff*/
index=0;
U16_APPEND_UNSAFE(target, index, c);
target+=index;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/rbt_pars.h b/Build/source/libs/icu/icu-src/source/i18n/rbt_pars.h
index d1a4cd6997c..11cf50e756c 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/rbt_pars.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/rbt_pars.h
@@ -107,14 +107,14 @@ class TransliteratorParser : public UMemory {
* <code>variableLimit</code>. At any point during parsing, available
* variables are <code>variableNext..variableLimit-1</code>.
*/
- UChar variableNext;
+ char16_t 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>.
*/
- UChar variableLimit;
+ char16_t variableLimit;
/**
* When we encounter an undefined variable, we do not immediately signal
@@ -130,7 +130,7 @@ class TransliteratorParser : public UMemory {
* patterns. This is allocated the first time it is needed, and
* reused thereafter.
*/
- UChar dotStandIn;
+ char16_t dotStandIn;
public:
@@ -272,9 +272,9 @@ private:
* @param pos the position in pattern at which to start parsing.
* @return the stand-in character used to represent it.
*/
- UChar parseSet(const UnicodeString& rule,
- ParsePosition& pos,
- UErrorCode& status);
+ char16_t parseSet(const UnicodeString& rule,
+ ParsePosition& pos,
+ UErrorCode& status);
/**
* Generate and return a stand-in for a new UnicodeFunctor. Store
@@ -282,14 +282,14 @@ private:
* @param adopted the UnicodeFunctor to be adopted.
* @return a stand-in for a new UnicodeFunctor.
*/
- UChar generateStandInFor(UnicodeFunctor* adopted, UErrorCode& status);
+ char16_t generateStandInFor(UnicodeFunctor* adopted, UErrorCode& status);
/**
* Return the standin for segment seg (1-based).
* @param seg the given segment.
* @return the standIn character for the given segment.
*/
- UChar getSegmentStandin(int32_t seg, UErrorCode& status);
+ char16_t getSegmentStandin(int32_t seg, UErrorCode& status);
/**
* Set the object for segment seg (1-based).
@@ -303,7 +303,7 @@ private:
* time and reused thereafter.
* @return the stand-in for the dot set.
*/
- UChar getDotStandIn(UErrorCode& status);
+ char16_t getDotStandIn(UErrorCode& status);
/**
* Append the value of the given variable name to the given
diff --git a/Build/source/libs/icu/icu-src/source/i18n/rbt_rule.cpp b/Build/source/libs/icu/icu-src/source/i18n/rbt_rule.cpp
index ee0d938ca95..da8e4eaa1fb 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/rbt_rule.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/rbt_rule.cpp
@@ -26,7 +26,7 @@
#include "util.h"
#include "putilimp.h"
-static const UChar FORWARD_OP[] = {32,62,32,0}; // " > "
+static const char16_t FORWARD_OP[] = {32,62,32,0}; // " > "
U_NAMESPACE_BEGIN
@@ -116,22 +116,22 @@ TransliterationRule::TransliterationRule(const UnicodeString& input,
flags |= ANCHOR_END;
}
- anteContext = NULL;
+ anteContext = nullptr;
if (anteContextLength > 0) {
anteContext = new StringMatcher(pattern, 0, anteContextLength,
false, *data);
- /* test for NULL */
+ /* test for nullptr */
if (anteContext == 0) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
}
- key = NULL;
+ key = nullptr;
if (keyLength > 0) {
key = new StringMatcher(pattern, anteContextLength, anteContextLength + keyLength,
false, *data);
- /* test for NULL */
+ /* test for nullptr */
if (key == 0) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
@@ -139,11 +139,11 @@ TransliterationRule::TransliterationRule(const UnicodeString& input,
}
int32_t postContextLength = pattern.length() - keyLength - anteContextLength;
- postContext = NULL;
+ postContext = nullptr;
if (postContextLength > 0) {
postContext = new StringMatcher(pattern, anteContextLength + keyLength, pattern.length(),
false, *data);
- /* test for NULL */
+ /* test for nullptr */
if (postContext == 0) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
@@ -151,7 +151,7 @@ TransliterationRule::TransliterationRule(const UnicodeString& input,
}
this->output = new StringReplacer(outputStr, cursorPosition + cursorOffset, data);
- /* test for NULL */
+ /* test for nullptr */
if (this->output == 0) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
@@ -163,29 +163,29 @@ TransliterationRule::TransliterationRule(const UnicodeString& input,
*/
TransliterationRule::TransliterationRule(TransliterationRule& other) :
UMemory(other),
- anteContext(NULL),
- key(NULL),
- postContext(NULL),
+ anteContext(nullptr),
+ key(nullptr),
+ postContext(nullptr),
pattern(other.pattern),
anteContextLength(other.anteContextLength),
keyLength(other.keyLength),
flags(other.flags),
data(other.data) {
- segments = NULL;
+ segments = nullptr;
segmentsCount = 0;
if (other.segmentsCount > 0) {
segments = (UnicodeFunctor **)uprv_malloc(other.segmentsCount * sizeof(UnicodeFunctor *));
uprv_memcpy(segments, other.segments, (size_t)other.segmentsCount*sizeof(segments[0]));
}
- if (other.anteContext != NULL) {
+ if (other.anteContext != nullptr) {
anteContext = other.anteContext->clone();
}
- if (other.key != NULL) {
+ if (other.key != nullptr) {
key = other.key->clone();
}
- if (other.postContext != NULL) {
+ if (other.postContext != nullptr) {
postContext = other.postContext->clone();
}
output = other.output->clone();
@@ -208,7 +208,7 @@ TransliterationRule::~TransliterationRule() {
* needed to make repeated incremental transliteration with
* anchors work.
*/
-int32_t TransliterationRule::getContextLength(void) const {
+int32_t TransliterationRule::getContextLength() const {
return anteContextLength + ((flags & ANCHOR_START) ? 1 : 0);
}
@@ -225,7 +225,7 @@ int16_t TransliterationRule::getIndexValue() const {
return -1;
}
UChar32 c = pattern.char32At(anteContextLength);
- return (int16_t)(data->lookupMatcher(c) == NULL ? (c & 0xFF) : -1);
+ return (int16_t)(data->lookupMatcher(c) == nullptr ? (c & 0xFF) : -1);
}
/**
@@ -241,8 +241,8 @@ int16_t TransliterationRule::getIndexValue() const {
UBool TransliterationRule::matchesIndexValue(uint8_t v) const {
// 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;
+ UnicodeMatcher *m = (key != nullptr) ? key : postContext;
+ return (m != nullptr) ? m->matchesIndexValue(v) : true;
}
/**
@@ -361,7 +361,7 @@ UMatchDegree TransliterationRule::matchAndReplace(Replaceable& text,
// ============================ MATCH ===========================
// Reset segment match data
- if (segments != NULL) {
+ if (segments != nullptr) {
for (int32_t i=0; i<segmentsCount; ++i) {
((StringMatcher*) segments[i])->resetMatch();
}
@@ -391,7 +391,7 @@ UMatchDegree TransliterationRule::matchAndReplace(Replaceable& text,
// Start reverse match at char before pos.start
oText = posBefore(text, pos.start);
- if (anteContext != NULL) {
+ if (anteContext != nullptr) {
match = anteContext->matches(text, oText, anteLimit, false);
if (match != U_MATCH) {
return U_MISMATCH;
@@ -410,7 +410,7 @@ UMatchDegree TransliterationRule::matchAndReplace(Replaceable& text,
oText = pos.start;
- if (key != NULL) {
+ if (key != nullptr) {
match = key->matches(text, oText, pos.limit, incremental);
if (match != U_MATCH) {
return match;
@@ -419,7 +419,7 @@ UMatchDegree TransliterationRule::matchAndReplace(Replaceable& text,
keyLimit = oText;
- if (postContext != NULL) {
+ if (postContext != nullptr) {
if (incremental && keyLimit == pos.limit) {
// The key matches just before pos.limit, and there is
// a postContext. Since we are in incremental mode,
@@ -477,31 +477,31 @@ UnicodeString& TransliterationRule::toRule(UnicodeString& rule,
// Do not emit the braces '{' '}' around the pattern if there
// is neither anteContext nor postContext.
UBool emitBraces =
- (anteContext != NULL) || (postContext != NULL);
+ (anteContext != nullptr) || (postContext != nullptr);
// Emit start anchor
if ((flags & ANCHOR_START) != 0) {
- rule.append((UChar)94/*^*/);
+ rule.append((char16_t)94/*^*/);
}
// Emit the input pattern
ICU_Utility::appendToRule(rule, anteContext, escapeUnprintable, quoteBuf);
if (emitBraces) {
- ICU_Utility::appendToRule(rule, (UChar) 0x007B /*{*/, true, escapeUnprintable, quoteBuf);
+ ICU_Utility::appendToRule(rule, (char16_t) 0x007B /*{*/, true, escapeUnprintable, quoteBuf);
}
ICU_Utility::appendToRule(rule, key, escapeUnprintable, quoteBuf);
if (emitBraces) {
- ICU_Utility::appendToRule(rule, (UChar) 0x007D /*}*/, true, escapeUnprintable, quoteBuf);
+ ICU_Utility::appendToRule(rule, (char16_t) 0x007D /*}*/, true, escapeUnprintable, quoteBuf);
}
ICU_Utility::appendToRule(rule, postContext, escapeUnprintable, quoteBuf);
// Emit end anchor
if ((flags & ANCHOR_END) != 0) {
- rule.append((UChar)36/*$*/);
+ rule.append((char16_t)36/*$*/);
}
ICU_Utility::appendToRule(rule, UnicodeString(true, FORWARD_OP, 3), true, escapeUnprintable, quoteBuf);
@@ -511,17 +511,17 @@ UnicodeString& TransliterationRule::toRule(UnicodeString& rule,
ICU_Utility::appendToRule(rule, output->toReplacer()->toReplacerPattern(str, escapeUnprintable),
true, escapeUnprintable, quoteBuf);
- ICU_Utility::appendToRule(rule, (UChar) 0x003B /*;*/, true, escapeUnprintable, quoteBuf);
+ ICU_Utility::appendToRule(rule, (char16_t) 0x003B /*;*/, true, escapeUnprintable, quoteBuf);
return rule;
}
void TransliterationRule::setData(const TransliterationRuleData* d) {
data = d;
- if (anteContext != NULL) anteContext->setData(d);
- if (postContext != NULL) postContext->setData(d);
- if (key != NULL) key->setData(d);
- // assert(output != NULL);
+ if (anteContext != nullptr) anteContext->setData(d);
+ if (postContext != nullptr) postContext->setData(d);
+ if (key != nullptr) key->setData(d);
+ // assert(output != nullptr);
output->setData(d);
// Don't have to do segments since they are in the context or key
}
@@ -536,7 +536,7 @@ void TransliterationRule::addSourceSetTo(UnicodeSet& toUnionTo) const {
UChar32 ch = pattern.char32At(i);
i += U16_LENGTH(ch);
const UnicodeMatcher* matcher = data->lookupMatcher(ch);
- if (matcher == NULL) {
+ if (matcher == nullptr) {
toUnionTo.add(ch);
} else {
matcher->addMatchSetTo(toUnionTo);
diff --git a/Build/source/libs/icu/icu-src/source/i18n/rbt_rule.h b/Build/source/libs/icu/icu-src/source/i18n/rbt_rule.h
index b927f5d6c05..c6f5151d4cf 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/rbt_rule.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/rbt_rule.h
@@ -108,7 +108,7 @@ private:
UnicodeFunctor** segments;
/**
- * The number of elements in segments[] or zero if segments is NULL.
+ * The number of elements in segments[] or zero if segments is nullptr.
*/
int32_t segmentsCount;
@@ -217,7 +217,7 @@ public:
* anchors work.
* @return the preceding context length.
*/
- virtual int32_t getContextLength(void) const;
+ virtual int32_t getContextLength() const;
/**
* Internal method. Returns 8-bit index value for this rule.
diff --git a/Build/source/libs/icu/icu-src/source/i18n/rbt_set.cpp b/Build/source/libs/icu/icu-src/source/i18n/rbt_set.cpp
index c5174674361..c0a2ccd8687 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/rbt_set.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/rbt_set.cpp
@@ -61,9 +61,9 @@ static UnicodeString& _formatInput(UnicodeString &appendTo,
input.extractBetween(pos.start, pos.limit, c);
input.extractBetween(pos.limit, pos.contextLimit, d);
input.extractBetween(pos.contextLimit, input.length(), e);
- appendTo.append(a).append((UChar)123/*{*/).append(b).
- append((UChar)124/*|*/).append(c).append((UChar)124/*|*/).append(d).
- append((UChar)125/*}*/).append(e);
+ appendTo.append(a).append((char16_t)123/*{*/).append(b).
+ append((char16_t)124/*|*/).append(c).append((char16_t)124/*|*/).append(d).
+ append((char16_t)125/*}*/).append(e);
} else {
appendTo.append("INVALID UTransPosition");
//appendTo.append((UnicodeString)"INVALID UTransPosition {cs=" +
@@ -78,7 +78,7 @@ static UnicodeString& _formatInput(UnicodeString &appendTo,
UnicodeString& _appendHex(uint32_t number,
int32_t digits,
UnicodeString& target) {
- static const UChar digitString[] = {
+ static const char16_t digitString[] = {
0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39,
0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0
};
@@ -115,7 +115,7 @@ inline void _debugOut(const char* msg, TransliterationRule* rule,
if (rule) {
UnicodeString r;
rule->toRule(r, true);
- buf.append((UChar)32).append(r);
+ buf.append((char16_t)32).append(r);
}
buf.append(UnicodeString(" => ", ""));
UnicodeString* text = (UnicodeString*)&theText;
@@ -225,7 +225,7 @@ void TransliterationRuleSet::setData(const TransliterationRuleData* d) {
* Return the maximum context length.
* @return the length of the longest preceding context.
*/
-int32_t TransliterationRuleSet::getMaximumContextLength(void) const {
+int32_t TransliterationRuleSet::getMaximumContextLength() const {
return maxContextLength;
}
@@ -296,7 +296,7 @@ void TransliterationRuleSet::freeze(UParseError& parseError,UErrorCode& status)
* Be careful not to call malloc(0).
*/
int16_t* indexValue = (int16_t*) uprv_malloc( sizeof(int16_t) * (n > 0 ? n : 1) );
- /* test for NULL */
+ /* test for nullptr */
if (indexValue == 0) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
@@ -336,11 +336,11 @@ void TransliterationRuleSet::freeze(UParseError& parseError,UErrorCode& status)
/* You can't do malloc(0)! */
if (v.size() == 0) {
- rules = NULL;
+ rules = nullptr;
return;
}
rules = (TransliterationRule **)uprv_malloc(v.size() * sizeof(TransliterationRule *));
- /* test for NULL */
+ /* test for nullptr */
if (rules == 0) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
@@ -417,7 +417,7 @@ UBool TransliterationRuleSet::transliterate(Replaceable& text,
}
// No match or partial match from any rule
pos.start += U16_LENGTH(text.char32At(pos.start));
- _debugOut("no match", NULL, text, pos);
+ _debugOut("no match", nullptr, text, pos);
return true;
}
@@ -431,7 +431,7 @@ UnicodeString& TransliterationRuleSet::toRules(UnicodeString& ruleSource,
ruleSource.truncate(0);
for (i=0; i<count; ++i) {
if (i != 0) {
- ruleSource.append((UChar) 0x000A /*\n*/);
+ ruleSource.append((char16_t) 0x000A /*\n*/);
}
TransliterationRule *r =
(TransliterationRule*) ruleVector->elementAt(i);
diff --git a/Build/source/libs/icu/icu-src/source/i18n/rbt_set.h b/Build/source/libs/icu/icu-src/source/i18n/rbt_set.h
index 3a2890e8ec7..fb436ff67e9 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/rbt_set.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/rbt_set.h
@@ -92,7 +92,7 @@ public:
* Return the maximum context length.
* @return the length of the longest preceding context.
*/
- virtual int32_t getMaximumContextLength(void) const;
+ virtual int32_t getMaximumContextLength() const;
/**
* Add a rule to this set. Rules are added in order, and order is
diff --git a/Build/source/libs/icu/icu-src/source/i18n/rbtz.cpp b/Build/source/libs/icu/icu-src/source/i18n/rbtz.cpp
index 0e174bab38a..e4d71436c58 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/rbtz.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/rbtz.cpp
@@ -39,9 +39,9 @@ deleteTransition(void* obj) {
U_CDECL_END
static UBool compareRules(UVector* rules1, UVector* rules2) {
- if (rules1 == NULL && rules2 == NULL) {
+ if (rules1 == nullptr && rules2 == nullptr) {
return true;
- } else if (rules1 == NULL || rules2 == NULL) {
+ } else if (rules1 == nullptr || rules2 == nullptr) {
return false;
}
int32_t size = rules1->size();
@@ -61,13 +61,13 @@ static UBool compareRules(UVector* rules1, UVector* rules2) {
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(RuleBasedTimeZone)
RuleBasedTimeZone::RuleBasedTimeZone(const UnicodeString& id, InitialTimeZoneRule* initialRule)
-: BasicTimeZone(id), fInitialRule(initialRule), fHistoricRules(NULL), fFinalRules(NULL),
- fHistoricTransitions(NULL), fUpToDate(false) {
+: BasicTimeZone(id), fInitialRule(initialRule), fHistoricRules(nullptr), fFinalRules(nullptr),
+ fHistoricTransitions(nullptr), fUpToDate(false) {
}
RuleBasedTimeZone::RuleBasedTimeZone(const RuleBasedTimeZone& source)
: BasicTimeZone(source), fInitialRule(source.fInitialRule->clone()),
- fHistoricTransitions(NULL), fUpToDate(false) {
+ fHistoricTransitions(nullptr), fUpToDate(false) {
fHistoricRules = copyRules(source.fHistoricRules);
fFinalRules = copyRules(source.fFinalRules);
if (source.fUpToDate) {
@@ -180,23 +180,23 @@ RuleBasedTimeZone::complete(UErrorCode& status) {
}
// Make sure either no final rules or a pair of AnnualTimeZoneRules
// are available.
- if (fFinalRules != NULL && fFinalRules->size() != 2) {
+ if (fFinalRules != nullptr && fFinalRules->size() != 2) {
status = U_INVALID_STATE_ERROR;
return;
}
// Create a TimezoneTransition and add to the list
- if (fHistoricRules != NULL || fFinalRules != NULL) {
+ if (fHistoricRules != nullptr || fFinalRules != nullptr) {
TimeZoneRule *curRule = fInitialRule;
UDate lastTransitionTime = MIN_MILLIS;
// Build the transition array which represents historical time zone
// transitions.
- if (fHistoricRules != NULL && fHistoricRules->size() > 0) {
+ if (fHistoricRules != nullptr && fHistoricRules->size() > 0) {
int32_t i;
int32_t historicCount = fHistoricRules->size();
LocalMemory<bool> done((bool *)uprv_malloc(sizeof(bool) * historicCount));
- if (done == NULL) {
+ if (done == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
goto cleanup;
}
@@ -207,8 +207,8 @@ RuleBasedTimeZone::complete(UErrorCode& status) {
int32_t curStdOffset = curRule->getRawOffset();
int32_t curDstSavings = curRule->getDSTSavings();
UDate nextTransitionTime = MAX_MILLIS;
- TimeZoneRule *nextRule = NULL;
- TimeZoneRule *r = NULL;
+ TimeZoneRule *nextRule = nullptr;
+ TimeZoneRule *r = nullptr;
UBool avail;
UDate tt;
UnicodeString curName, name;
@@ -237,7 +237,7 @@ RuleBasedTimeZone::complete(UErrorCode& status) {
}
}
- if (nextRule == NULL) {
+ if (nextRule == nullptr) {
// Check if all historic rules are done
UBool bDoneAll = true;
for (int32_t j = 0; j < historicCount; j++) {
@@ -251,7 +251,7 @@ RuleBasedTimeZone::complete(UErrorCode& status) {
}
}
- if (fFinalRules != NULL) {
+ if (fFinalRules != nullptr) {
// Check if one of final rules has earlier transition date
for (i = 0; i < 2 /* fFinalRules->size() */; i++) {
TimeZoneRule *fr = (TimeZoneRule*)fFinalRules->elementAt(i);
@@ -269,12 +269,12 @@ RuleBasedTimeZone::complete(UErrorCode& status) {
}
}
- if (nextRule == NULL) {
+ if (nextRule == nullptr) {
// Nothing more
break;
}
- if (fHistoricTransitions == NULL) {
+ if (fHistoricTransitions == nullptr) {
LocalPointer<UVector> lpHistoricTransitions(
new UVector(deleteTransition, nullptr, status), status);
if (U_FAILURE(status)) {
@@ -297,8 +297,8 @@ RuleBasedTimeZone::complete(UErrorCode& status) {
curRule = nextRule;
}
}
- if (fFinalRules != NULL) {
- if (fHistoricTransitions == NULL) {
+ if (fFinalRules != nullptr) {
+ if (fHistoricTransitions == nullptr) {
LocalPointer<UVector> lpHistoricTransitions(
new UVector(deleteTransition, nullptr, status), status);
if (U_FAILURE(status)) {
@@ -427,8 +427,8 @@ RuleBasedTimeZone::getOffsetInternal(UDate date, UBool local,
status = U_INVALID_STATE_ERROR;
return;
}
- const TimeZoneRule *rule = NULL;
- if (fHistoricTransitions == NULL) {
+ const TimeZoneRule *rule = nullptr;
+ if (fHistoricTransitions == nullptr) {
rule = fInitialRule;
} else {
UDate tstart = getTransitionTime((Transition*)fHistoricTransitions->elementAt(0),
@@ -440,10 +440,10 @@ RuleBasedTimeZone::getOffsetInternal(UDate date, UBool local,
UDate tend = getTransitionTime((Transition*)fHistoricTransitions->elementAt(idx),
local, NonExistingTimeOpt, DuplicatedTimeOpt);
if (date > tend) {
- if (fFinalRules != NULL) {
+ if (fFinalRules != nullptr) {
rule = findRuleInFinal(date, local, NonExistingTimeOpt, DuplicatedTimeOpt);
}
- if (rule == NULL) {
+ if (rule == nullptr) {
// no final rules or the given time is before the first transition
// specified by the final rules -> use the last rule
rule = ((Transition*)fHistoricTransitions->elementAt(idx))->to;
@@ -461,7 +461,7 @@ RuleBasedTimeZone::getOffsetInternal(UDate date, UBool local,
}
}
}
- if (rule != NULL) {
+ if (rule != nullptr) {
rawOffset = rule->getRawOffset();
dstOffset = rule->getDSTSavings();
}
@@ -474,7 +474,7 @@ RuleBasedTimeZone::setRawOffset(int32_t /*offsetMillis*/) {
}
int32_t
-RuleBasedTimeZone::getRawOffset(void) const {
+RuleBasedTimeZone::getRawOffset() const {
// Note: This implementation returns standard GMT offset
// as of current time.
UErrorCode status = U_ZERO_ERROR;
@@ -484,7 +484,7 @@ RuleBasedTimeZone::getRawOffset(void) const {
}
UBool
-RuleBasedTimeZone::useDaylightTime(void) const {
+RuleBasedTimeZone::useDaylightTime() const {
// Note: This implementation returns true when
// daylight saving time is used as of now or
// after the next transition.
@@ -526,7 +526,7 @@ RuleBasedTimeZone::hasSameRules(const TimeZone& other) const {
if (typeid(*this) != typeid(other)) {
return false;
}
- const RuleBasedTimeZone& that = (const RuleBasedTimeZone&)other;
+ const RuleBasedTimeZone& that = static_cast<const RuleBasedTimeZone&>(other);
if (*fInitialRule != *(that.fInitialRule)) {
return false;
}
@@ -549,8 +549,8 @@ RuleBasedTimeZone::getNextTransition(UDate base, UBool inclusive, TimeZoneTransi
UBool found = findNext(base, inclusive, transitionTime, fromRule, toRule);
if (found) {
result.setTime(transitionTime);
- result.setFrom((const TimeZoneRule&)*fromRule);
- result.setTo((const TimeZoneRule&)*toRule);
+ result.setFrom(*fromRule);
+ result.setTo(*toRule);
return true;
}
return false;
@@ -568,8 +568,8 @@ RuleBasedTimeZone::getPreviousTransition(UDate base, UBool inclusive, TimeZoneTr
UBool found = findPrev(base, inclusive, transitionTime, fromRule, toRule);
if (found) {
result.setTime(transitionTime);
- result.setFrom((const TimeZoneRule&)*fromRule);
- result.setTo((const TimeZoneRule&)*toRule);
+ result.setFrom(*fromRule);
+ result.setTo(*toRule);
return true;
}
return false;
@@ -578,10 +578,10 @@ RuleBasedTimeZone::getPreviousTransition(UDate base, UBool inclusive, TimeZoneTr
int32_t
RuleBasedTimeZone::countTransitionRules(UErrorCode& /*status*/) const {
int32_t count = 0;
- if (fHistoricRules != NULL) {
+ if (fHistoricRules != nullptr) {
count += fHistoricRules->size();
}
- if (fFinalRules != NULL) {
+ if (fFinalRules != nullptr) {
count += fFinalRules->size();
}
return count;
@@ -601,14 +601,14 @@ RuleBasedTimeZone::getTimeZoneRules(const InitialTimeZoneRule*& initial,
// Transition rules
int32_t cnt = 0;
int32_t idx;
- if (fHistoricRules != NULL && cnt < trscount) {
+ if (fHistoricRules != nullptr && cnt < trscount) {
int32_t historicCount = fHistoricRules->size();
idx = 0;
while (cnt < trscount && idx < historicCount) {
trsrules[cnt++] = (const TimeZoneRule*)fHistoricRules->elementAt(idx++);
}
}
- if (fFinalRules != NULL && cnt < trscount) {
+ if (fFinalRules != nullptr && cnt < trscount) {
int32_t finalCount = fFinalRules->size();
idx = 0;
while (cnt < trscount && idx < finalCount) {
@@ -620,25 +620,25 @@ RuleBasedTimeZone::getTimeZoneRules(const InitialTimeZoneRule*& initial,
}
void
-RuleBasedTimeZone::deleteRules(void) {
+RuleBasedTimeZone::deleteRules() {
delete fInitialRule;
- fInitialRule = NULL;
- if (fHistoricRules != NULL) {
+ fInitialRule = nullptr;
+ if (fHistoricRules != nullptr) {
delete fHistoricRules;
- fHistoricRules = NULL;
+ fHistoricRules = nullptr;
}
- if (fFinalRules != NULL) {
+ if (fFinalRules != nullptr) {
delete fFinalRules;
- fFinalRules = NULL;
+ fFinalRules = nullptr;
}
}
void
-RuleBasedTimeZone::deleteTransitions(void) {
- if (fHistoricTransitions != NULL) {
+RuleBasedTimeZone::deleteTransitions() {
+ if (fHistoricTransitions != nullptr) {
delete fHistoricTransitions;
}
- fHistoricTransitions = NULL;
+ fHistoricTransitions = nullptr;
}
UVector*
@@ -666,14 +666,14 @@ RuleBasedTimeZone::copyRules(UVector* source) {
TimeZoneRule*
RuleBasedTimeZone::findRuleInFinal(UDate date, UBool local,
int32_t NonExistingTimeOpt, int32_t DuplicatedTimeOpt) const {
- if (fFinalRules == NULL) {
- return NULL;
+ if (fFinalRules == nullptr) {
+ return nullptr;
}
AnnualTimeZoneRule* fr0 = (AnnualTimeZoneRule*)fFinalRules->elementAt(0);
AnnualTimeZoneRule* fr1 = (AnnualTimeZoneRule*)fFinalRules->elementAt(1);
- if (fr0 == NULL || fr1 == NULL) {
- return NULL;
+ if (fr0 == nullptr || fr1 == nullptr) {
+ return nullptr;
}
UDate start0, start1;
@@ -705,7 +705,7 @@ RuleBasedTimeZone::findRuleInFinal(UDate date, UBool local,
return fr1;
}
// Both rules take effect after the given time
- return NULL;
+ return nullptr;
}
return (start0 > start1) ? fr0 : fr1;
@@ -714,7 +714,7 @@ RuleBasedTimeZone::findRuleInFinal(UDate date, UBool local,
UBool
RuleBasedTimeZone::findNext(UDate base, UBool inclusive, UDate& transitionTime,
TimeZoneRule*& fromRule, TimeZoneRule*& toRule) const {
- if (fHistoricTransitions == NULL) {
+ if (fHistoricTransitions == nullptr) {
return false;
}
UBool isFinal = false;
@@ -733,7 +733,7 @@ RuleBasedTimeZone::findNext(UDate base, UBool inclusive, UDate& transitionTime,
result = *tzt;
found = true;
} else if (tt <= base) {
- if (fFinalRules != NULL) {
+ if (fFinalRules != nullptr) {
// Find a transion time with finalRules
TimeZoneRule *r0 = (TimeZoneRule*)fFinalRules->elementAt(0);
TimeZoneRule *r1 = (TimeZoneRule*)fFinalRules->elementAt(1);
@@ -798,7 +798,7 @@ RuleBasedTimeZone::findNext(UDate base, UBool inclusive, UDate& transitionTime,
UBool
RuleBasedTimeZone::findPrev(UDate base, UBool inclusive, UDate& transitionTime,
TimeZoneRule*& fromRule, TimeZoneRule*& toRule) const {
- if (fHistoricTransitions == NULL) {
+ if (fHistoricTransitions == nullptr) {
return false;
}
UBool found = false;
@@ -816,7 +816,7 @@ RuleBasedTimeZone::findPrev(UDate base, UBool inclusive, UDate& transitionTime,
result = *tzt;
found = true;
} else if (tt < base) {
- if (fFinalRules != NULL) {
+ if (fFinalRules != nullptr) {
// Find a transion time with finalRules
TimeZoneRule *r0 = (TimeZoneRule*)fFinalRules->elementAt(0);
TimeZoneRule *r1 = (TimeZoneRule*)fFinalRules->elementAt(1);
diff --git a/Build/source/libs/icu/icu-src/source/i18n/regexcmp.cpp b/Build/source/libs/icu/icu-src/source/i18n/regexcmp.cpp
index 4b507002d63..0a0d095ca46 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/regexcmp.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/regexcmp.cpp
@@ -73,7 +73,7 @@ RegexCompile::RegexCompile(RegexPattern *rxp, UErrorCode &status) :
fMatchOpenParen = -1;
fMatchCloseParen = -1;
- fCaptureName = NULL;
+ fCaptureName = nullptr;
fLastSetLiteral = U_SENTINEL;
if (U_SUCCESS(status) && U_FAILURE(rxp->fDeferredStatus)) {
@@ -81,8 +81,8 @@ RegexCompile::RegexCompile(RegexPattern *rxp, UErrorCode &status) :
}
}
-static const UChar chAmp = 0x26; // '&'
-static const UChar chDash = 0x2d; // '-'
+static const char16_t chAmp = 0x26; // '&'
+static const char16_t chDash = 0x2d; // '-'
//------------------------------------------------------------------------------
@@ -91,7 +91,7 @@ static const UChar chDash = 0x2d; // '-'
//
//------------------------------------------------------------------------------
RegexCompile::~RegexCompile() {
- delete fCaptureName; // Normally will be NULL, but can exist if pattern
+ delete fCaptureName; // Normally will be nullptr, but can exist if pattern
// compilation stops with a syntax error.
}
@@ -141,7 +141,7 @@ void RegexCompile::compile(
}
// There should be no pattern stuff in the RegexPattern object. They can not be reused.
- U_ASSERT(fRXPat->fPattern == NULL || utext_nativeLength(fRXPat->fPattern) == 0);
+ U_ASSERT(fRXPat->fPattern == nullptr || utext_nativeLength(fRXPat->fPattern) == 0);
// Prepare the RegexPattern object to receive the compiled pattern.
fRXPat->fPattern = utext_clone(fRXPat->fPattern, pat, false, true, fStatus);
@@ -317,7 +317,7 @@ void RegexCompile::compile(
int32_t numSets = fRXPat->fSets->size();
fRXPat->fSets8 = new Regex8BitSet[numSets];
// Null pointer check.
- if (fRXPat->fSets8 == NULL) {
+ if (fRXPat->fSets8 == nullptr) {
e = *fStatus = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -430,7 +430,7 @@ UBool RegexCompile::doParseActions(int32_t action)
// Scanning (?<letter.
// The first letter of the name will come through again under doConinueNamedCapture.
fCaptureName = new UnicodeString();
- if (fCaptureName == NULL) {
+ if (fCaptureName == nullptr) {
error(U_MEMORY_ALLOCATION_ERROR);
}
break;
@@ -481,7 +481,7 @@ UBool RegexCompile::doParseActions(int32_t action)
fRXPat->fGroupMap->addElement(varsLoc, *fStatus);
// If this is a named capture group, add the name->group number mapping.
- if (fCaptureName != NULL) {
+ if (fCaptureName != nullptr) {
if (!fRXPat->initNamedCaptureMap()) {
if (U_SUCCESS(*fStatus)) {
error(fRXPat->fDeferredStatus);
@@ -490,7 +490,7 @@ UBool RegexCompile::doParseActions(int32_t action)
}
int32_t groupNumber = fRXPat->fGroupMap->size();
int32_t previousMapping = uhash_puti(fRXPat->fNamedCaptureMap, fCaptureName, groupNumber, fStatus);
- fCaptureName = NULL; // hash table takes ownership of the name (key) string.
+ fCaptureName = nullptr; // hash table takes ownership of the name (key) string.
if (previousMapping > 0 && U_SUCCESS(*fStatus)) {
error(U_REGEX_INVALID_CAPTURE_GROUP_NAME);
}
@@ -1333,9 +1333,9 @@ UBool RegexCompile::doParseActions(int32_t action)
break;
case doBeginNamedBackRef:
- U_ASSERT(fCaptureName == NULL);
+ U_ASSERT(fCaptureName == nullptr);
fCaptureName = new UnicodeString;
- if (fCaptureName == NULL) {
+ if (fCaptureName == nullptr) {
error(U_MEMORY_ALLOCATION_ERROR);
}
break;
@@ -1364,7 +1364,7 @@ UBool RegexCompile::doParseActions(int32_t action)
}
}
delete fCaptureName;
- fCaptureName = NULL;
+ fCaptureName = nullptr;
break;
}
@@ -1820,7 +1820,7 @@ UBool RegexCompile::doParseActions(int32_t action)
case doSetPosixProp:
{
UnicodeSet *s = scanPosixProp();
- if (s != NULL) {
+ if (s != nullptr) {
UnicodeSet *tos = (UnicodeSet *)fSetStack.peek();
tos->addAll(*s);
delete s;
@@ -1832,7 +1832,7 @@ UBool RegexCompile::doParseActions(int32_t action)
// Scanned a \p \P within [brackets].
{
UnicodeSet *s = scanProp();
- if (s != NULL) {
+ if (s != nullptr) {
UnicodeSet *tos = (UnicodeSet *)fSetStack.peek();
tos->addAll(*s);
delete s;
@@ -2390,7 +2390,7 @@ void RegexCompile::handleCloseParen() {
//------------------------------------------------------------------------------
void RegexCompile::compileSet(UnicodeSet *theSet)
{
- if (theSet == NULL) {
+ if (theSet == nullptr) {
return;
}
// Remove any strings from the set.
@@ -2620,7 +2620,7 @@ void RegexCompile::findCaseInsensitiveStarters(UChar32 c, UnicodeSet *starterCh
0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2,
0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x1, 0x1, 0x1, 0};
- static const UChar RECaseFixData[] = {
+ static const char16_t RECaseFixData[] = {
0x1e9a, 0xfb00, 0xfb01, 0xfb02, 0xfb03, 0xfb04, 0x1e96, 0x130, 0x1f0, 0xdf,
0x1e9e, 0xfb05, 0xfb06, 0x1e97, 0x1e98, 0x1e99, 0x149, 0x1fb4, 0x1fc4, 0x1fb3,
0x1fb6, 0x1fb7, 0x1fbc, 0x1fc3, 0x1fc6, 0x1fc7, 0x1fcc, 0x390, 0x1fd2, 0x1fd3,
@@ -3944,25 +3944,25 @@ void RegexCompile::error(UErrorCode e) {
// Numeric because there is no portable way to enter them as literals.
// (Think EBCDIC).
//
-static const UChar chCR = 0x0d; // New lines, for terminating comments.
-static const UChar chLF = 0x0a; // Line Feed
-static const UChar chPound = 0x23; // '#', introduces a comment.
-static const UChar chDigit0 = 0x30; // '0'
-static const UChar chDigit7 = 0x37; // '9'
-static const UChar chColon = 0x3A; // ':'
-static const UChar chE = 0x45; // 'E'
-static const UChar chQ = 0x51; // 'Q'
-//static const UChar chN = 0x4E; // 'N'
-static const UChar chP = 0x50; // 'P'
-static const UChar chBackSlash = 0x5c; // '\' introduces a char escape
-//static const UChar chLBracket = 0x5b; // '['
-static const UChar chRBracket = 0x5d; // ']'
-static const UChar chUp = 0x5e; // '^'
-static const UChar chLowerP = 0x70;
-static const UChar chLBrace = 0x7b; // '{'
-static const UChar chRBrace = 0x7d; // '}'
-static const UChar chNEL = 0x85; // NEL newline variant
-static const UChar chLS = 0x2028; // Unicode Line Separator
+static const char16_t chCR = 0x0d; // New lines, for terminating comments.
+static const char16_t chLF = 0x0a; // Line Feed
+static const char16_t chPound = 0x23; // '#', introduces a comment.
+static const char16_t chDigit0 = 0x30; // '0'
+static const char16_t chDigit7 = 0x37; // '9'
+static const char16_t chColon = 0x3A; // ':'
+static const char16_t chE = 0x45; // 'E'
+static const char16_t chQ = 0x51; // 'Q'
+//static const char16_t chN = 0x4E; // 'N'
+static const char16_t chP = 0x50; // 'P'
+static const char16_t chBackSlash = 0x5c; // '\' introduces a char escape
+//static const char16_t chLBracket = 0x5b; // '['
+static const char16_t chRBracket = 0x5d; // ']'
+static const char16_t chUp = 0x5e; // '^'
+static const char16_t chLowerP = 0x70;
+static const char16_t chLBrace = 0x7b; // '{'
+static const char16_t chRBrace = 0x7d; // '}'
+static const char16_t chNEL = 0x85; // NEL newline variant
+static const char16_t chLS = 0x2028; // Unicode Line Separator
//------------------------------------------------------------------------------
@@ -4065,7 +4065,7 @@ void RegexCompile::nextChar(RegexPatternChar &c) {
if (c.fChar == (UChar32)-1) {
break; // End of Input
}
- if (c.fChar == chPound && fEOLComments == true) {
+ if (c.fChar == chPound && fEOLComments) {
// Start of a comment. Consume the rest of it, until EOF or a new line
for (;;) {
c.fChar = nextCharLL();
@@ -4249,14 +4249,14 @@ UChar32 RegexCompile::scanNamedChar() {
// the scan position should be just after the '}'
//
// Return a UnicodeSet, constructed from the \P pattern,
-// or NULL if the pattern is invalid.
+// or nullptr if the pattern is invalid.
//
//------------------------------------------------------------------------------
UnicodeSet *RegexCompile::scanProp() {
- UnicodeSet *uset = NULL;
+ UnicodeSet *uset = nullptr;
if (U_FAILURE(*fStatus)) {
- return NULL;
+ return nullptr;
}
(void)chLowerP; // Suppress compiler unused variable warning.
U_ASSERT(fC.fChar == chLowerP || fC.fChar == chP);
@@ -4266,7 +4266,7 @@ UnicodeSet *RegexCompile::scanProp() {
nextChar(fC);
if (fC.fChar != chLBrace) {
error(U_REGEX_PROPERTY_SYNTAX);
- return NULL;
+ return nullptr;
}
for (;;) {
nextChar(fC);
@@ -4276,7 +4276,7 @@ UnicodeSet *RegexCompile::scanProp() {
if (fC.fChar == -1) {
// Hit the end of the input string without finding the closing '}'
error(U_REGEX_PROPERTY_SYNTAX);
- return NULL;
+ return nullptr;
}
propertyName.append(fC.fChar);
}
@@ -4294,7 +4294,7 @@ UnicodeSet *RegexCompile::scanProp() {
// the scan position must be on the closing ']'
//
// Return a UnicodeSet constructed from the pattern,
-// or NULL if this is not a valid POSIX-style set expression.
+// or nullptr if this is not a valid POSIX-style set expression.
// If not a property expression, restore the initial scan position
// (to the opening ':')
//
@@ -4305,10 +4305,10 @@ UnicodeSet *RegexCompile::scanProp() {
//
//------------------------------------------------------------------------------
UnicodeSet *RegexCompile::scanPosixProp() {
- UnicodeSet *uset = NULL;
+ UnicodeSet *uset = nullptr;
if (U_FAILURE(*fStatus)) {
- return NULL;
+ return nullptr;
}
U_ASSERT(fC.fChar == chColon);
@@ -4412,7 +4412,7 @@ UnicodeSet *RegexCompile::createSetForProperty(const UnicodeString &propName, UB
if (fModeFlags & UREGEX_CASE_INSENSITIVE) {
usetFlags |= USET_CASE_INSENSITIVE;
}
- set.adoptInsteadAndCheckErrorCode(new UnicodeSet(setExpr, usetFlags, NULL, status), status);
+ set.adoptInsteadAndCheckErrorCode(new UnicodeSet(setExpr, usetFlags, nullptr, status), status);
if (U_SUCCESS(status) || status == U_MEMORY_ALLOCATION_ERROR) {
break;
}
@@ -4610,8 +4610,8 @@ UnicodeSet *RegexCompile::createSetForProperty(const UnicodeString &propName, UB
// in the expression.
//
void RegexCompile::setEval(int32_t nextOp) {
- UnicodeSet *rightOperand = NULL;
- UnicodeSet *leftOperand = NULL;
+ UnicodeSet *rightOperand = nullptr;
+ UnicodeSet *leftOperand = nullptr;
for (;;) {
U_ASSERT(fSetOpStack.empty()==false);
int32_t pendingSetOperation = fSetOpStack.peeki();
diff --git a/Build/source/libs/icu/icu-src/source/i18n/regeximp.cpp b/Build/source/libs/icu/icu-src/source/i18n/regeximp.cpp
index d5556696258..86e238c0f71 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/regeximp.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/regeximp.cpp
@@ -19,7 +19,7 @@
U_NAMESPACE_BEGIN
CaseFoldingUTextIterator::CaseFoldingUTextIterator(UText &text) :
- fUText(text), fFoldChars(NULL), fFoldLength(0) {
+ fUText(text), fFoldChars(nullptr), fFoldLength(0) {
}
CaseFoldingUTextIterator::~CaseFoldingUTextIterator() {}
@@ -27,7 +27,7 @@ CaseFoldingUTextIterator::~CaseFoldingUTextIterator() {}
UChar32 CaseFoldingUTextIterator::next() {
UChar32 foldedC;
UChar32 originalC;
- if (fFoldChars == NULL) {
+ if (fFoldChars == nullptr) {
// We are not in a string folding of an earlier character.
// Start handling the next char from the input UText.
originalC = UTEXT_NEXT32(&fUText);
@@ -42,7 +42,7 @@ UChar32 CaseFoldingUTextIterator::next() {
fFoldLength = ~fFoldLength;
}
foldedC = (UChar32)fFoldLength;
- fFoldChars = NULL;
+ fFoldChars = nullptr;
return foldedC;
}
// String foldings fall through here.
@@ -51,20 +51,20 @@ UChar32 CaseFoldingUTextIterator::next() {
U16_NEXT(fFoldChars, fFoldIndex, fFoldLength, foldedC);
if (fFoldIndex >= fFoldLength) {
- fFoldChars = NULL;
+ fFoldChars = nullptr;
}
return foldedC;
}
UBool CaseFoldingUTextIterator::inExpansion() {
- return fFoldChars != NULL;
+ return fFoldChars != nullptr;
}
-CaseFoldingUCharIterator::CaseFoldingUCharIterator(const UChar *chars, int64_t start, int64_t limit) :
- fChars(chars), fIndex(start), fLimit(limit), fFoldChars(NULL), fFoldLength(0) {
+CaseFoldingUCharIterator::CaseFoldingUCharIterator(const char16_t *chars, int64_t start, int64_t limit) :
+ fChars(chars), fIndex(start), fLimit(limit), fFoldChars(nullptr), fFoldLength(0) {
}
@@ -74,7 +74,7 @@ CaseFoldingUCharIterator::~CaseFoldingUCharIterator() {}
UChar32 CaseFoldingUCharIterator::next() {
UChar32 foldedC;
UChar32 originalC;
- if (fFoldChars == NULL) {
+ if (fFoldChars == nullptr) {
// We are not in a string folding of an earlier character.
// Start handling the next char from the input UText.
if (fIndex >= fLimit) {
@@ -90,7 +90,7 @@ UChar32 CaseFoldingUCharIterator::next() {
fFoldLength = ~fFoldLength;
}
foldedC = (UChar32)fFoldLength;
- fFoldChars = NULL;
+ fFoldChars = nullptr;
return foldedC;
}
// String foldings fall through here.
@@ -99,14 +99,14 @@ UChar32 CaseFoldingUCharIterator::next() {
U16_NEXT(fFoldChars, fFoldIndex, fFoldLength, foldedC);
if (fFoldIndex >= fFoldLength) {
- fFoldChars = NULL;
+ fFoldChars = nullptr;
}
return foldedC;
}
UBool CaseFoldingUCharIterator::inExpansion() {
- return fFoldChars != NULL;
+ return fFoldChars != nullptr;
}
int64_t CaseFoldingUCharIterator::getIndex() {
diff --git a/Build/source/libs/icu/icu-src/source/i18n/regeximp.h b/Build/source/libs/icu/icu-src/source/i18n/regeximp.h
index bb0e1e838de..446cd90747c 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/regeximp.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/regeximp.h
@@ -343,7 +343,7 @@ inline void Regex8BitSet::add(UChar32 c) {
}
inline void Regex8BitSet::init(const UnicodeSet *s) {
- if (s != NULL) {
+ if (s != nullptr) {
for (int32_t i=0; i<=255; i++) {
if (s->contains(i)) {
this->add(i);
@@ -374,21 +374,21 @@ class CaseFoldingUTextIterator: public UMemory {
// folding of the same code point from the original UText.
private:
UText &fUText;
- const UChar *fFoldChars;
+ const char16_t *fFoldChars;
int32_t fFoldLength;
int32_t fFoldIndex;
};
-// Case folded UChar * string iterator.
-// Wraps a UChar *, provides a case-folded enumeration over its contents.
+// Case folded char16_t * string iterator.
+// Wraps a char16_t *, provides a case-folded enumeration over its contents.
// Used in implementing case insensitive matching constructs.
// Implementation in rematch.cpp
class CaseFoldingUCharIterator: public UMemory {
public:
- CaseFoldingUCharIterator(const UChar *chars, int64_t start, int64_t limit);
+ CaseFoldingUCharIterator(const char16_t *chars, int64_t start, int64_t limit);
~CaseFoldingUCharIterator();
UChar32 next(); // Next case folded character
@@ -400,10 +400,10 @@ class CaseFoldingUCharIterator: public UMemory {
int64_t getIndex(); // Return the current input buffer index.
private:
- const UChar *fChars;
+ const char16_t *fChars;
int64_t fIndex;
int64_t fLimit;
- const UChar *fFoldChars;
+ const char16_t *fFoldChars;
int32_t fFoldLength;
int32_t fFoldIndex;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/regexst.cpp b/Build/source/libs/icu/icu-src/source/i18n/regexst.cpp
index dc01327a02c..91032305442 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/regexst.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/regexst.cpp
@@ -143,7 +143,7 @@ RegexStaticSets::~RegexStaticSets() {
U_CDECL_BEGIN
static UBool U_CALLCONV
-regex_cleanup(void) {
+regex_cleanup() {
delete RegexStaticSets::gStaticSets;
RegexStaticSets::gStaticSets = nullptr;
gStaticSetsInitOnce.reset();
diff --git a/Build/source/libs/icu/icu-src/source/i18n/regextxt.cpp b/Build/source/libs/icu/icu-src/source/i18n/regextxt.cpp
index 41bb4a944b3..32d8a5c5f82 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/regextxt.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/regextxt.cpp
@@ -16,7 +16,7 @@
U_NAMESPACE_BEGIN
-U_CFUNC UChar U_CALLCONV
+U_CFUNC char16_t U_CALLCONV
uregex_utext_unescape_charAt(int32_t offset, void *ct) {
struct URegexUTextUnescapeCharContext *context = (struct URegexUTextUnescapeCharContext *)ct;
UChar32 c;
@@ -34,15 +34,15 @@ uregex_utext_unescape_charAt(int32_t offset, void *ct) {
// !!!: Doesn't handle characters outside BMP
if (U_IS_BMP(c)) {
- return (UChar)c;
+ return (char16_t)c;
} else {
return 0;
}
}
-U_CFUNC UChar U_CALLCONV
+U_CFUNC char16_t U_CALLCONV
uregex_ucstr_unescape_charAt(int32_t offset, void *context) {
- return ((UChar *)context)[offset];
+ return ((char16_t *)context)[offset];
}
U_NAMESPACE_END
diff --git a/Build/source/libs/icu/icu-src/source/i18n/region.cpp b/Build/source/libs/icu/icu-src/source/i18n/region.cpp
index 6a0c05fc78f..26440b6593c 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/region.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/region.cpp
@@ -42,7 +42,7 @@ U_CDECL_BEGIN
/**
* Cleanup callback func
*/
-static UBool U_CALLCONV region_cleanup(void)
+static UBool U_CALLCONV region_cleanup()
{
icu::Region::cleanupRegionData();
@@ -56,15 +56,15 @@ U_NAMESPACE_BEGIN
static UInitOnce gRegionDataInitOnce {};
static UVector* availableRegions[URGN_LIMIT];
-static UHashtable *regionAliases = NULL;
-static UHashtable *regionIDMap = NULL;
-static UHashtable *numericCodeMap = NULL;
-static UVector *allRegions = NULL;
+static UHashtable *regionAliases = nullptr;
+static UHashtable *regionIDMap = nullptr;
+static UHashtable *numericCodeMap = nullptr;
+static UVector *allRegions = nullptr;
-static const UChar UNKNOWN_REGION_ID [] = { 0x5A, 0x5A, 0 }; /* "ZZ" */
-static const UChar OUTLYING_OCEANIA_REGION_ID [] = { 0x51, 0x4F, 0 }; /* "QO" */
-static const UChar WORLD_ID [] = { 0x30, 0x30, 0x31, 0 }; /* "001" */
-static const UChar RANGE_MARKER = 0x7E; /* '~' */
+static const char16_t UNKNOWN_REGION_ID [] = { 0x5A, 0x5A, 0 }; /* "ZZ" */
+static const char16_t OUTLYING_OCEANIA_REGION_ID [] = { 0x51, 0x4F, 0 }; /* "QO" */
+static const char16_t WORLD_ID [] = { 0x30, 0x30, 0x31, 0 }; /* "001" */
+static const char16_t RANGE_MARKER = 0x7E; /* '~' */
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(RegionNameEnumeration)
@@ -79,31 +79,31 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(RegionNameEnumeration)
void U_CALLCONV Region::loadRegionData(UErrorCode &status) {
// Construct service objs first
- LocalUHashtablePointer newRegionIDMap(uhash_open(uhash_hashUnicodeString, uhash_compareUnicodeString, NULL, &status));
- LocalUHashtablePointer newNumericCodeMap(uhash_open(uhash_hashLong,uhash_compareLong,NULL,&status));
- LocalUHashtablePointer newRegionAliases(uhash_open(uhash_hashUnicodeString,uhash_compareUnicodeString,NULL,&status));
+ LocalUHashtablePointer newRegionIDMap(uhash_open(uhash_hashUnicodeString, uhash_compareUnicodeString, nullptr, &status));
+ LocalUHashtablePointer newNumericCodeMap(uhash_open(uhash_hashLong,uhash_compareLong,nullptr,&status));
+ LocalUHashtablePointer newRegionAliases(uhash_open(uhash_hashUnicodeString,uhash_compareUnicodeString,nullptr,&status));
LocalPointer<UVector> continents(new UVector(uprv_deleteUObject, uhash_compareUnicodeString, status), status);
LocalPointer<UVector> groupings(new UVector(uprv_deleteUObject, uhash_compareUnicodeString, status), status);
LocalPointer<UVector> lpAllRegions(new UVector(uprv_deleteUObject, uhash_compareUnicodeString, status), status);
allRegions = lpAllRegions.orphan();
- LocalUResourceBundlePointer metadata(ures_openDirect(NULL,"metadata",&status));
- LocalUResourceBundlePointer metadataAlias(ures_getByKey(metadata.getAlias(),"alias",NULL,&status));
- LocalUResourceBundlePointer territoryAlias(ures_getByKey(metadataAlias.getAlias(),"territory",NULL,&status));
+ LocalUResourceBundlePointer metadata(ures_openDirect(nullptr,"metadata",&status));
+ LocalUResourceBundlePointer metadataAlias(ures_getByKey(metadata.getAlias(),"alias",nullptr,&status));
+ LocalUResourceBundlePointer territoryAlias(ures_getByKey(metadataAlias.getAlias(),"territory",nullptr,&status));
- LocalUResourceBundlePointer supplementalData(ures_openDirect(NULL,"supplementalData",&status));
- LocalUResourceBundlePointer codeMappings(ures_getByKey(supplementalData.getAlias(),"codeMappings",NULL,&status));
+ LocalUResourceBundlePointer supplementalData(ures_openDirect(nullptr,"supplementalData",&status));
+ LocalUResourceBundlePointer codeMappings(ures_getByKey(supplementalData.getAlias(),"codeMappings",nullptr,&status));
- LocalUResourceBundlePointer idValidity(ures_getByKey(supplementalData.getAlias(),"idValidity",NULL,&status));
- LocalUResourceBundlePointer regionList(ures_getByKey(idValidity.getAlias(),"region",NULL,&status));
- LocalUResourceBundlePointer regionRegular(ures_getByKey(regionList.getAlias(),"regular",NULL,&status));
- LocalUResourceBundlePointer regionMacro(ures_getByKey(regionList.getAlias(),"macroregion",NULL,&status));
- LocalUResourceBundlePointer regionUnknown(ures_getByKey(regionList.getAlias(),"unknown",NULL,&status));
+ LocalUResourceBundlePointer idValidity(ures_getByKey(supplementalData.getAlias(),"idValidity",nullptr,&status));
+ LocalUResourceBundlePointer regionList(ures_getByKey(idValidity.getAlias(),"region",nullptr,&status));
+ LocalUResourceBundlePointer regionRegular(ures_getByKey(regionList.getAlias(),"regular",nullptr,&status));
+ LocalUResourceBundlePointer regionMacro(ures_getByKey(regionList.getAlias(),"macroregion",nullptr,&status));
+ LocalUResourceBundlePointer regionUnknown(ures_getByKey(regionList.getAlias(),"unknown",nullptr,&status));
- LocalUResourceBundlePointer territoryContainment(ures_getByKey(supplementalData.getAlias(),"territoryContainment",NULL,&status));
- LocalUResourceBundlePointer worldContainment(ures_getByKey(territoryContainment.getAlias(),"001",NULL,&status));
- LocalUResourceBundlePointer groupingContainment(ures_getByKey(territoryContainment.getAlias(),"grouping",NULL,&status));
+ LocalUResourceBundlePointer territoryContainment(ures_getByKey(supplementalData.getAlias(),"territoryContainment",nullptr,&status));
+ LocalUResourceBundlePointer worldContainment(ures_getByKey(territoryContainment.getAlias(),"001",nullptr,&status));
+ LocalUResourceBundlePointer groupingContainment(ures_getByKey(territoryContainment.getAlias(),"grouping",nullptr,&status));
ucln_i18n_registerCleanup(UCLN_I18N_REGION, region_cleanup);
if (U_FAILURE(status)) {
@@ -116,12 +116,12 @@ void U_CALLCONV Region::loadRegionData(UErrorCode &status) {
while (U_SUCCESS(status) && ures_hasNext(regionRegular.getAlias())) {
- UnicodeString regionName = ures_getNextUnicodeString(regionRegular.getAlias(),NULL,&status);
+ UnicodeString regionName = ures_getNextUnicodeString(regionRegular.getAlias(),nullptr,&status);
int32_t rangeMarkerLocation = regionName.indexOf(RANGE_MARKER);
- UChar buf[6];
+ char16_t buf[6];
regionName.extract(buf,6,status);
if ( rangeMarkerLocation > 0 ) {
- UChar endRange = regionName.charAt(rangeMarkerLocation+1);
+ char16_t endRange = regionName.charAt(rangeMarkerLocation+1);
buf[rangeMarkerLocation] = 0;
while (U_SUCCESS(status) && buf[rangeMarkerLocation-1] <= endRange) {
LocalPointer<UnicodeString> newRegion(new UnicodeString(buf), status);
@@ -135,12 +135,12 @@ void U_CALLCONV Region::loadRegionData(UErrorCode &status) {
}
while (U_SUCCESS(status) && ures_hasNext(regionMacro.getAlias())) {
- UnicodeString regionName = ures_getNextUnicodeString(regionMacro.getAlias(),NULL,&status);
+ UnicodeString regionName = ures_getNextUnicodeString(regionMacro.getAlias(),nullptr,&status);
int32_t rangeMarkerLocation = regionName.indexOf(RANGE_MARKER);
- UChar buf[6];
+ char16_t buf[6];
regionName.extract(buf,6,status);
if ( rangeMarkerLocation > 0 ) {
- UChar endRange = regionName.charAt(rangeMarkerLocation+1);
+ char16_t endRange = regionName.charAt(rangeMarkerLocation+1);
buf[rangeMarkerLocation] = 0;
while ( buf[rangeMarkerLocation-1] <= endRange && U_SUCCESS(status)) {
LocalPointer<UnicodeString> newRegion(new UnicodeString(buf), status);
@@ -160,7 +160,7 @@ void U_CALLCONV Region::loadRegionData(UErrorCode &status) {
}
while (U_SUCCESS(status) && ures_hasNext(worldContainment.getAlias())) {
- UnicodeString *continentName = new UnicodeString(ures_getNextUnicodeString(worldContainment.getAlias(),NULL,&status));
+ UnicodeString *continentName = new UnicodeString(ures_getNextUnicodeString(worldContainment.getAlias(),nullptr,&status));
continents->adoptElement(continentName,status);
}
if (U_FAILURE(status)) {
@@ -204,11 +204,11 @@ void U_CALLCONV Region::loadRegionData(UErrorCode &status) {
break;
}
Region *grouping = (Region *) uhash_get(newRegionIDMap.getAlias(), groupingName);
- if (grouping != NULL) {
+ if (grouping != nullptr) {
for (int32_t i = 0; i < ures_getSize(groupingBundle) && U_SUCCESS(status); i++) {
UnicodeString child = ures_getUnicodeStringByIndex(groupingBundle, i, &status);
if (U_SUCCESS(status)) {
- if (grouping->containedRegions == NULL) {
+ if (grouping->containedRegions == nullptr) {
LocalPointer<UVector> lpContainedRegions(
new UVector(uprv_deleteUObject, uhash_compareUnicodeString, status), status);
grouping->containedRegions = lpContainedRegions.orphan();
@@ -226,19 +226,19 @@ void U_CALLCONV Region::loadRegionData(UErrorCode &status) {
// Process the territory aliases
while (U_SUCCESS(status) && ures_hasNext(territoryAlias.getAlias())) {
- LocalUResourceBundlePointer res(ures_getNextResource(territoryAlias.getAlias(),NULL,&status));
+ LocalUResourceBundlePointer res(ures_getNextResource(territoryAlias.getAlias(),nullptr,&status));
const char *aliasFrom = ures_getKey(res.getAlias());
LocalPointer<UnicodeString> aliasFromStr(new UnicodeString(aliasFrom, -1, US_INV), status);
UnicodeString aliasTo = ures_getUnicodeStringByKey(res.getAlias(),"replacement",&status);
- res.adoptInstead(NULL);
+ res.adoptInstead(nullptr);
const Region *aliasToRegion = (Region *) uhash_get(newRegionIDMap.getAlias(),&aliasTo);
Region *aliasFromRegion = (Region *)uhash_get(newRegionIDMap.getAlias(),aliasFromStr.getAlias());
- if ( aliasToRegion != NULL && aliasFromRegion == NULL ) { // This is just an alias from some string to a region
+ if ( aliasToRegion != nullptr && aliasFromRegion == nullptr ) { // This is just an alias from some string to a region
uhash_put(newRegionAliases.getAlias(),(void *)aliasFromStr.orphan(), (void *)aliasToRegion,&status);
} else {
- if ( aliasFromRegion == NULL ) { // Deprecated region code not in the primary codes list - so need to create a deprecated region for it.
+ if ( aliasFromRegion == nullptr ) { // Deprecated region code not in the primary codes list - so need to create a deprecated region for it.
LocalPointer<Region> newRgn(new Region, status);
if ( U_SUCCESS(status) ) {
aliasFromRegion = newRgn.orphan();
@@ -288,7 +288,7 @@ void U_CALLCONV Region::loadRegionData(UErrorCode &status) {
// Process the code mappings - This will allow us to assign numeric codes to most of the territories.
while (U_SUCCESS(status) && ures_hasNext(codeMappings.getAlias())) {
- UResourceBundle *mapping = ures_getNextResource(codeMappings.getAlias(),NULL,&status);
+ UResourceBundle *mapping = ures_getNextResource(codeMappings.getAlias(),nullptr,&status);
if (U_SUCCESS(status) && ures_getType(mapping) == URES_ARRAY && ures_getSize(mapping) == 3) {
UnicodeString codeMappingID = ures_getUnicodeStringByIndex(mapping,0,&status);
UnicodeString codeMappingNumber = ures_getUnicodeStringByIndex(mapping,1,&status);
@@ -348,7 +348,7 @@ void U_CALLCONV Region::loadRegionData(UErrorCode &status) {
// Load territory containment info from the supplemental data.
while ( ures_hasNext(territoryContainment.getAlias()) ) {
- LocalUResourceBundlePointer mapping(ures_getNextResource(territoryContainment.getAlias(),NULL,&status));
+ LocalUResourceBundlePointer mapping(ures_getNextResource(territoryContainment.getAlias(),nullptr,&status));
if( U_FAILURE(status) ) {
return; // error out
}
@@ -363,10 +363,10 @@ void U_CALLCONV Region::loadRegionData(UErrorCode &status) {
for ( int j = 0 ; j < ures_getSize(mapping.getAlias()); j++ ) {
UnicodeString child = ures_getUnicodeStringByIndex(mapping.getAlias(),j,&status);
Region *childRegion = (Region *) uhash_get(newRegionIDMap.getAlias(),(void *)&child);
- if ( parentRegion != NULL && childRegion != NULL ) {
+ if ( parentRegion != nullptr && childRegion != nullptr ) {
// Add the child region to the set of regions contained by the parent
- if (parentRegion->containedRegions == NULL) {
+ if (parentRegion->containedRegions == nullptr) {
LocalPointer<UVector> lpContainedRegions(
new UVector(uprv_deleteUObject, uhash_compareUnicodeString, status), status);
parentRegion->containedRegions = lpContainedRegions.orphan();
@@ -399,7 +399,7 @@ void U_CALLCONV Region::loadRegionData(UErrorCode &status) {
int32_t pos = UHASH_FIRST;
while ( const UHashElement* element = uhash_nextElement(newRegionIDMap.getAlias(),&pos)) {
Region *ar = (Region *)element->value.pointer;
- if ( availableRegions[ar->fType] == NULL ) {
+ if ( availableRegions[ar->fType] == nullptr ) {
LocalPointer<UVector> newAr(new UVector(uprv_deleteUObject, uhash_compareUnicodeString, status), status);
availableRegions[ar->fType] = newAr.orphan();
}
@@ -437,10 +437,10 @@ void Region::cleanupRegionData() {
}
if (allRegions) {
delete allRegions;
- allRegions = NULL;
+ allRegions = nullptr;
}
- regionAliases = numericCodeMap = regionIDMap = NULL;
+ regionAliases = numericCodeMap = regionIDMap = nullptr;
gRegionDataInitOnce.reset();
}
@@ -448,9 +448,9 @@ void Region::cleanupRegionData() {
Region::Region ()
: code(-1),
fType(URGN_UNKNOWN),
- containingRegion(NULL),
- containedRegions(NULL),
- preferredValues(NULL) {
+ containingRegion(nullptr),
+ containedRegions(nullptr),
+ preferredValues(nullptr) {
id[0] = 0;
}
@@ -485,19 +485,19 @@ Region::operator!=(const Region &that) const {
* Returns a pointer to a Region using the given region code. The region code can be either 2-letter ISO code,
* 3-letter ISO code, UNM.49 numeric code, or other valid Unicode Region Code as defined by the LDML specification.
* The identifier will be canonicalized internally using the supplemental metadata as defined in the CLDR.
- * If the region code is NULL or not recognized, the appropriate error code will be set ( U_ILLEGAL_ARGUMENT_ERROR )
+ * If the region code is nullptr or not recognized, the appropriate error code will be set ( U_ILLEGAL_ARGUMENT_ERROR )
*/
const Region* U_EXPORT2
Region::getInstance(const char *region_code, UErrorCode &status) {
umtx_initOnce(gRegionDataInitOnce, &loadRegionData, status);
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
if ( !region_code ) {
status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
UnicodeString regionCodeString = UnicodeString(region_code, -1, US_INV);
@@ -509,7 +509,7 @@ Region::getInstance(const char *region_code, UErrorCode &status) {
if ( !r ) { // Unknown region code
status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
if ( r->fType == URGN_DEPRECATED && r->preferredValues->size() == 1) {
@@ -533,7 +533,7 @@ Region::getInstance (int32_t code, UErrorCode &status) {
umtx_initOnce(gRegionDataInitOnce, &loadRegionData, status);
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
Region *r = (Region *)uhash_iget(numericCodeMap,code);
@@ -545,12 +545,12 @@ Region::getInstance (int32_t code, UErrorCode &status) {
}
if( U_FAILURE(status) ) {
- return NULL;
+ return nullptr;
}
if ( !r ) {
status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
if ( r->fType == URGN_DEPRECATED && r->preferredValues->size() == 1) {
@@ -572,13 +572,13 @@ StringEnumeration* U_EXPORT2
Region::getAvailable(URegionType type, UErrorCode &status) {
umtx_initOnce(gRegionDataInitOnce, &loadRegionData, status); // returns immediately if U_FAILURE(status)
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
return new RegionNameEnumeration(availableRegions[type],status);
}
/**
- * Returns a pointer to the region that contains this region. Returns NULL if this region is code "001" (World)
+ * Returns a pointer to the region that contains this region. Returns nullptr if this region is code "001" (World)
* or "ZZ" (Unknown region). For example, calling this method with region "IT" (Italy) returns the
* region "039" (Southern Europe).
*/
@@ -591,17 +591,17 @@ Region::getContainingRegion() const {
/**
* Return a pointer to the region that geographically contains this region and matches the given type,
- * moving multiple steps up the containment chain if necessary. Returns NULL if no containing region can be found
+ * moving multiple steps up the containment chain if necessary. Returns nullptr if no containing region can be found
* that matches the given type. Note: The URegionTypes = "URGN_GROUPING", "URGN_DEPRECATED", or "URGN_UNKNOWN"
- * are not appropriate for use in this API. NULL will be returned in this case. For example, calling this method
+ * are not appropriate for use in this API. nullptr will be returned in this case. For example, calling this method
* with region "IT" (Italy) for type "URGN_CONTINENT" returns the region "150" ( Europe ).
*/
const Region*
Region::getContainingRegion(URegionType type) const {
UErrorCode status = U_ZERO_ERROR;
umtx_initOnce(gRegionDataInitOnce, &loadRegionData, status);
- if ( containingRegion == NULL ) {
- return NULL;
+ if ( containingRegion == nullptr ) {
+ return nullptr;
}
return ( containingRegion->fType == type)? containingRegion: containingRegion->getContainingRegion(type);
@@ -610,7 +610,7 @@ Region::getContainingRegion(URegionType type) const {
/**
* Return an enumeration over the IDs of all the regions that are immediate children of this region in the
* region hierarchy. These returned regions could be either macro regions, territories, or a mixture of the two,
- * depending on the containment data as defined in CLDR. This API may return NULL if this region doesn't have
+ * depending on the containment data as defined in CLDR. This API may return nullptr if this region doesn't have
* any sub-regions. For example, calling this method with region "150" (Europe) returns an enumeration containing
* the various sub regions of Europe - "039" (Southern Europe) - "151" (Eastern Europe) - "154" (Northern Europe)
* and "155" (Western Europe).
@@ -619,7 +619,7 @@ StringEnumeration*
Region::getContainedRegions(UErrorCode &status) const {
umtx_initOnce(gRegionDataInitOnce, &loadRegionData, status); // returns immediately if U_FAILURE(status)
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
return new RegionNameEnumeration(containedRegions,status);
}
@@ -687,14 +687,14 @@ Region::contains(const Region &other) const {
/**
* For deprecated regions, return an enumeration over the IDs of the regions that are the preferred replacement
- * regions for this region. Returns NULL for a non-deprecated region. For example, calling this method with region
+ * regions for this region. Returns nullptr for a non-deprecated region. For example, calling this method with region
* "SU" (Soviet Union) would return a list of the regions containing "RU" (Russia), "AM" (Armenia), "AZ" (Azerbaijan), etc...
*/
StringEnumeration*
Region::getPreferredValues(UErrorCode &status) const {
umtx_initOnce(gRegionDataInitOnce, &loadRegionData, status); // returns immediately if U_FAILURE(status)
if (U_FAILURE(status) || fType != URGN_DEPRECATED) {
- return NULL;
+ return nullptr;
}
return new RegionNameEnumeration(preferredValues,status);
}
@@ -741,11 +741,11 @@ RegionNameEnumeration::RegionNameEnumeration(UVector *nameList, UErrorCode& stat
const UnicodeString*
RegionNameEnumeration::snext(UErrorCode& status) {
- if (U_FAILURE(status) || (fRegionNames==NULL)) {
- return NULL;
+ if (U_FAILURE(status) || (fRegionNames==nullptr)) {
+ return nullptr;
}
const UnicodeString* nextStr = (const UnicodeString *)fRegionNames->elementAt(pos);
- if (nextStr!=NULL) {
+ if (nextStr!=nullptr) {
pos++;
}
return nextStr;
@@ -758,7 +758,7 @@ RegionNameEnumeration::reset(UErrorCode& /*status*/) {
int32_t
RegionNameEnumeration::count(UErrorCode& /*status*/) const {
- return (fRegionNames==NULL) ? 0 : fRegionNames->size();
+ return (fRegionNames==nullptr) ? 0 : fRegionNames->size();
}
RegionNameEnumeration::~RegionNameEnumeration() {
diff --git a/Build/source/libs/icu/icu-src/source/i18n/region_impl.h b/Build/source/libs/icu/icu-src/source/i18n/region_impl.h
index b6a281393f8..edabc6d0fe3 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/region_impl.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/region_impl.h
@@ -32,8 +32,8 @@ public:
*/
RegionNameEnumeration(UVector *nameList, UErrorCode& status);
virtual ~RegionNameEnumeration();
- static UClassID U_EXPORT2 getStaticClassID(void);
- virtual UClassID getDynamicClassID(void) const override;
+ static UClassID U_EXPORT2 getStaticClassID();
+ virtual UClassID getDynamicClassID() const override;
virtual const UnicodeString* snext(UErrorCode& status) override;
virtual void reset(UErrorCode& status) override;
virtual int32_t count(UErrorCode& status) const override;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/reldatefmt.cpp b/Build/source/libs/icu/icu-src/source/i18n/reldatefmt.cpp
index e811eac2c8d..ebdf6c9716e 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/reldatefmt.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/reldatefmt.cpp
@@ -12,7 +12,7 @@
#include "unicode/reldatefmt.h"
-#if !UCONFIG_NO_FORMATTING && !UCONFIG_NO_BREAK_ITERATION
+#if !UCONFIG_NO_FORMATTING
#include <cmath>
#include <functional>
@@ -192,7 +192,7 @@ static UBool getStringByIndex(
UnicodeString &result,
UErrorCode &status) {
int32_t len = 0;
- const UChar *resStr = ures_getStringByIndex(
+ const char16_t *resStr = ures_getStringByIndex(
resource, idx, &len, &status);
if (U_FAILURE(status)) {
return false;
@@ -372,8 +372,8 @@ struct RelDateTimeFmtDataSink : public ResourceSink {
// Utility functions
static UDateRelativeDateTimeFormatterStyle styleFromAliasUnicodeString(UnicodeString s) {
- static const UChar narrow[7] = {0x002D, 0x006E, 0x0061, 0x0072, 0x0072, 0x006F, 0x0077};
- static const UChar sshort[6] = {0x002D, 0x0073, 0x0068, 0x006F, 0x0072, 0x0074,};
+ static const char16_t narrow[7] = {0x002D, 0x006E, 0x0061, 0x0072, 0x0072, 0x006F, 0x0077};
+ static const char16_t sshort[6] = {0x002D, 0x0073, 0x0068, 0x006F, 0x0072, 0x0074,};
if (s.endsWith(narrow, 7)) {
return UDAT_STYLE_NARROW;
}
@@ -701,7 +701,7 @@ static UBool getDateTimePattern(
return getStringByIndex(topLevel.getAlias(), dateTimeFormatOffset, result, status);
}
-template<>
+template<>
const RelativeDateTimeCacheData *LocaleCacheKey<RelativeDateTimeCacheData>::createObject(const void * /*unused*/, UErrorCode &status) const {
const char *localeId = fLoc.getName();
LocalUResourceBundlePointer topLevel(ures_open(nullptr, localeId, &status));
@@ -761,6 +761,7 @@ RelativeDateTimeFormatter::RelativeDateTimeFormatter(UErrorCode& status) :
fStyle(UDAT_STYLE_LONG),
fContext(UDISPCTX_CAPITALIZATION_NONE),
fOptBreakIterator(nullptr) {
+ (void)fOptBreakIterator; // suppress unused field warning
init(nullptr, nullptr, status);
}
@@ -804,16 +805,25 @@ RelativeDateTimeFormatter::RelativeDateTimeFormatter(
if (U_FAILURE(status)) {
return;
}
+ if (styl < 0 || UDAT_STYLE_COUNT <= styl) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
if ((capitalizationContext >> 8) != UDISPCTX_TYPE_CAPITALIZATION) {
status = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
if (capitalizationContext == UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE) {
+#if !UCONFIG_NO_BREAK_ITERATION
BreakIterator *bi = BreakIterator::createSentenceInstance(locale, status);
if (U_FAILURE(status)) {
return;
}
init(nfToAdopt, bi, status);
+#else
+ status = U_UNSUPPORTED_ERROR;
+ return;
+#endif // !UCONFIG_NO_BREAK_ITERATION
} else {
init(nfToAdopt, nullptr, status);
}
@@ -832,9 +842,11 @@ RelativeDateTimeFormatter::RelativeDateTimeFormatter(
fCache->addRef();
fNumberFormat->addRef();
fPluralRules->addRef();
+#if !UCONFIG_NO_BREAK_ITERATION
if (fOptBreakIterator != nullptr) {
fOptBreakIterator->addRef();
}
+#endif // !UCONFIG_NO_BREAK_ITERATION
}
RelativeDateTimeFormatter& RelativeDateTimeFormatter::operator=(
@@ -843,7 +855,9 @@ RelativeDateTimeFormatter& RelativeDateTimeFormatter::operator=(
SharedObject::copyPtr(other.fCache, fCache);
SharedObject::copyPtr(other.fNumberFormat, fNumberFormat);
SharedObject::copyPtr(other.fPluralRules, fPluralRules);
+#if !UCONFIG_NO_BREAK_ITERATION
SharedObject::copyPtr(other.fOptBreakIterator, fOptBreakIterator);
+#endif // !UCONFIG_NO_BREAK_ITERATION
fStyle = other.fStyle;
fContext = other.fContext;
fLocale = other.fLocale;
@@ -861,9 +875,11 @@ RelativeDateTimeFormatter::~RelativeDateTimeFormatter() {
if (fPluralRules != nullptr) {
fPluralRules->removeRef();
}
+#if !UCONFIG_NO_BREAK_ITERATION
if (fOptBreakIterator != nullptr) {
fOptBreakIterator->removeRef();
}
+#endif // !UCONFIG_NO_BREAK_ITERATION
}
const NumberFormat& RelativeDateTimeFormatter::getNumberFormat() const {
@@ -1015,6 +1031,10 @@ void RelativeDateTimeFormatter::formatNumericImpl(
if (U_FAILURE(status)) {
return;
}
+ if (unit < 0 || UDAT_REL_UNIT_COUNT <= unit) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
UDateDirection direction = UDAT_DIRECTION_NEXT;
if (std::signbit(offset)) { // needed to handle -0.0
direction = UDAT_DIRECTION_LAST;
@@ -1083,7 +1103,9 @@ void RelativeDateTimeFormatter::formatAbsoluteImpl(
if (U_FAILURE(status)) {
return;
}
- if (unit == UDAT_ABSOLUTE_NOW && direction != UDAT_DIRECTION_PLAIN) {
+ if ((unit < 0 || UDAT_ABSOLUTE_UNIT_COUNT <= unit) ||
+ (direction < 0 || UDAT_DIRECTION_COUNT <= direction) ||
+ (unit == UDAT_ABSOLUTE_NOW && direction != UDAT_DIRECTION_PLAIN)) {
status = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
@@ -1191,6 +1213,7 @@ UnicodeString& RelativeDateTimeFormatter::combineDateAndTime(
}
UnicodeString& RelativeDateTimeFormatter::adjustForContext(UnicodeString &str) const {
+#if !UCONFIG_NO_BREAK_ITERATION
if (fOptBreakIterator == nullptr
|| str.length() == 0 || !u_islower(str.char32At(0))) {
return str;
@@ -1204,25 +1227,36 @@ UnicodeString& RelativeDateTimeFormatter::adjustForContext(UnicodeString &str) c
fOptBreakIterator->get(),
fLocale,
U_TITLECASE_NO_LOWERCASE | U_TITLECASE_NO_BREAK_ADJUSTMENT);
+#endif // !UCONFIG_NO_BREAK_ITERATION
return str;
}
UBool RelativeDateTimeFormatter::checkNoAdjustForContext(UErrorCode& status) const {
+#if !UCONFIG_NO_BREAK_ITERATION
// This is unsupported because it's hard to keep fields in sync with title
// casing. The code could be written and tested if there is demand.
if (fOptBreakIterator != nullptr) {
status = U_UNSUPPORTED_ERROR;
return false;
}
+#else
+ (void)status; // suppress unused argument warning
+#endif // !UCONFIG_NO_BREAK_ITERATION
return true;
}
void RelativeDateTimeFormatter::init(
NumberFormat *nfToAdopt,
+#if !UCONFIG_NO_BREAK_ITERATION
BreakIterator *biToAdopt,
+#else
+ std::nullptr_t,
+#endif // !UCONFIG_NO_BREAK_ITERATION
UErrorCode &status) {
LocalPointer<NumberFormat> nf(nfToAdopt);
+#if !UCONFIG_NO_BREAK_ITERATION
LocalPointer<BreakIterator> bi(biToAdopt);
+#endif // !UCONFIG_NO_BREAK_ITERATION
UnifiedCache::getByLocale(fLocale, fCache, status);
if (U_FAILURE(status)) {
return;
@@ -1251,6 +1285,7 @@ void RelativeDateTimeFormatter::init(
nf.orphan();
SharedObject::copyPtr(shared, fNumberFormat);
}
+#if !UCONFIG_NO_BREAK_ITERATION
if (bi.isNull()) {
SharedObject::clearPtr(fOptBreakIterator);
} else {
@@ -1262,6 +1297,7 @@ void RelativeDateTimeFormatter::init(
bi.orphan();
SharedObject::copyPtr(shared, fOptBreakIterator);
}
+#endif // !UCONFIG_NO_BREAK_ITERATION
}
U_NAMESPACE_END
@@ -1310,7 +1346,7 @@ U_CAPI int32_t U_EXPORT2
ureldatefmt_formatNumeric( const URelativeDateTimeFormatter* reldatefmt,
double offset,
URelativeDateTimeUnit unit,
- UChar* result,
+ char16_t* result,
int32_t resultCapacity,
UErrorCode* status)
{
@@ -1353,7 +1389,7 @@ U_CAPI int32_t U_EXPORT2
ureldatefmt_format( const URelativeDateTimeFormatter* reldatefmt,
double offset,
URelativeDateTimeUnit unit,
- UChar* result,
+ char16_t* result,
int32_t resultCapacity,
UErrorCode* status)
{
@@ -1394,11 +1430,11 @@ ureldatefmt_formatToResult(
U_CAPI int32_t U_EXPORT2
ureldatefmt_combineDateAndTime( const URelativeDateTimeFormatter* reldatefmt,
- const UChar * relativeDateString,
+ const char16_t * relativeDateString,
int32_t relativeDateStringLen,
- const UChar * timeString,
+ const char16_t * timeString,
int32_t timeStringLen,
- UChar* result,
+ char16_t* result,
int32_t resultCapacity,
UErrorCode* status )
{
diff --git a/Build/source/libs/icu/icu-src/source/i18n/reldtfmt.cpp b/Build/source/libs/icu/icu-src/source/i18n/reldtfmt.cpp
index f381bf8981a..7015c130899 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/reldtfmt.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/reldtfmt.cpp
@@ -34,26 +34,26 @@ U_NAMESPACE_BEGIN
struct URelativeString {
int32_t offset; /** offset of this item, such as, the relative date **/
int32_t len; /** length of the string **/
- const UChar* string; /** string, or NULL if not set **/
+ const char16_t* string; /** string, or nullptr if not set **/
};
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(RelativeDateFormat)
RelativeDateFormat::RelativeDateFormat(const RelativeDateFormat& other) :
- DateFormat(other), fDateTimeFormatter(NULL), fDatePattern(other.fDatePattern),
- fTimePattern(other.fTimePattern), fCombinedFormat(NULL),
+ DateFormat(other), fDateTimeFormatter(nullptr), fDatePattern(other.fDatePattern),
+ fTimePattern(other.fTimePattern), fCombinedFormat(nullptr),
fDateStyle(other.fDateStyle), fLocale(other.fLocale),
- fDatesLen(other.fDatesLen), fDates(NULL),
+ fDatesLen(other.fDatesLen), fDates(nullptr),
fCombinedHasDateAtStart(other.fCombinedHasDateAtStart),
fCapitalizationInfoSet(other.fCapitalizationInfoSet),
fCapitalizationOfRelativeUnitsForUIListMenu(other.fCapitalizationOfRelativeUnitsForUIListMenu),
fCapitalizationOfRelativeUnitsForStandAlone(other.fCapitalizationOfRelativeUnitsForStandAlone),
- fCapitalizationBrkIter(NULL)
+ fCapitalizationBrkIter(nullptr)
{
- if(other.fDateTimeFormatter != NULL) {
+ if(other.fDateTimeFormatter != nullptr) {
fDateTimeFormatter = other.fDateTimeFormatter->clone();
}
- if(other.fCombinedFormat != NULL) {
+ if(other.fCombinedFormat != nullptr) {
fCombinedFormat = new SimpleFormatter(*other.fCombinedFormat);
}
if (fDatesLen > 0) {
@@ -61,7 +61,7 @@ RelativeDateFormat::RelativeDateFormat(const RelativeDateFormat& other) :
uprv_memcpy(fDates, other.fDates, sizeof(fDates[0])*(size_t)fDatesLen);
}
#if !UCONFIG_NO_BREAK_ITERATION
- if (other.fCapitalizationBrkIter != NULL) {
+ if (other.fCapitalizationBrkIter != nullptr) {
fCapitalizationBrkIter = (other.fCapitalizationBrkIter)->clone();
}
#endif
@@ -69,15 +69,23 @@ RelativeDateFormat::RelativeDateFormat(const RelativeDateFormat& other) :
RelativeDateFormat::RelativeDateFormat( UDateFormatStyle timeStyle, UDateFormatStyle dateStyle,
const Locale& locale, UErrorCode& status) :
- DateFormat(), fDateTimeFormatter(NULL), fDatePattern(), fTimePattern(), fCombinedFormat(NULL),
- fDateStyle(dateStyle), fLocale(locale), fDatesLen(0), fDates(NULL),
+ DateFormat(), fDateTimeFormatter(nullptr), fDatePattern(), fTimePattern(), fCombinedFormat(nullptr),
+ fDateStyle(dateStyle), fLocale(locale), fDatesLen(0), fDates(nullptr),
fCombinedHasDateAtStart(false), fCapitalizationInfoSet(false),
fCapitalizationOfRelativeUnitsForUIListMenu(false), fCapitalizationOfRelativeUnitsForStandAlone(false),
- fCapitalizationBrkIter(NULL)
+ fCapitalizationBrkIter(nullptr)
{
if(U_FAILURE(status) ) {
return;
}
+ if (dateStyle != UDAT_FULL_RELATIVE &&
+ dateStyle != UDAT_LONG_RELATIVE &&
+ dateStyle != UDAT_MEDIUM_RELATIVE &&
+ dateStyle != UDAT_SHORT_RELATIVE &&
+ dateStyle != UDAT_RELATIVE) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
if (timeStyle < UDAT_NONE || timeStyle > UDAT_SHORT) {
// don't support other time styles (e.g. relative styles), for now
@@ -91,7 +99,7 @@ RelativeDateFormat::RelativeDateFormat( UDateFormatStyle timeStyle, UDateFormatS
if (baseDateStyle != UDAT_NONE) {
df = createDateInstance((EStyle)baseDateStyle, locale);
fDateTimeFormatter=dynamic_cast<SimpleDateFormat *>(df);
- if (fDateTimeFormatter == NULL) {
+ if (fDateTimeFormatter == nullptr) {
status = U_UNSUPPORTED_ERROR;
return;
}
@@ -99,7 +107,7 @@ RelativeDateFormat::RelativeDateFormat( UDateFormatStyle timeStyle, UDateFormatS
if (timeStyle != UDAT_NONE) {
df = createTimeInstance((EStyle)timeStyle, locale);
SimpleDateFormat *sdf = dynamic_cast<SimpleDateFormat *>(df);
- if (sdf != NULL) {
+ if (sdf != nullptr) {
sdf->toPattern(fTimePattern);
delete sdf;
}
@@ -108,7 +116,7 @@ RelativeDateFormat::RelativeDateFormat( UDateFormatStyle timeStyle, UDateFormatS
// does not matter whether timeStyle is UDAT_NONE, we need something for fDateTimeFormatter
df = createTimeInstance((EStyle)timeStyle, locale);
fDateTimeFormatter=dynamic_cast<SimpleDateFormat *>(df);
- if (fDateTimeFormatter == NULL) {
+ if (fDateTimeFormatter == nullptr) {
status = U_UNSUPPORTED_ERROR;
delete df;
return;
@@ -117,7 +125,7 @@ RelativeDateFormat::RelativeDateFormat( UDateFormatStyle timeStyle, UDateFormatS
}
// Initialize the parent fCalendar, so that parse() works correctly.
- initializeCalendar(NULL, locale, status);
+ initializeCalendar(nullptr, locale, status);
loadDates(status);
}
@@ -149,7 +157,7 @@ bool RelativeDateFormat::operator==(const Format& other) const {
return false;
}
-static const UChar APOSTROPHE = (UChar)0x0027;
+static const char16_t APOSTROPHE = (char16_t)0x0027;
UnicodeString& RelativeDateFormat::format( Calendar& cal,
UnicodeString& appendTo,
@@ -164,17 +172,17 @@ UnicodeString& RelativeDateFormat::format( Calendar& cal,
// look up string
int32_t len = 0;
- const UChar *theString = getStringForDay(dayDiff, len, status);
- if(U_SUCCESS(status) && (theString!=NULL)) {
+ const char16_t *theString = getStringForDay(dayDiff, len, status);
+ if(U_SUCCESS(status) && (theString!=nullptr)) {
// found a relative string
relativeDayString.setTo(theString, len);
}
if ( relativeDayString.length() > 0 && !fDatePattern.isEmpty() &&
- (fTimePattern.isEmpty() || fCombinedFormat == NULL || fCombinedHasDateAtStart)) {
+ (fTimePattern.isEmpty() || fCombinedFormat == nullptr || fCombinedHasDateAtStart)) {
#if !UCONFIG_NO_BREAK_ITERATION
// capitalize relativeDayString according to context for relative, set formatter no context
- if ( u_islower(relativeDayString.char32At(0)) && fCapitalizationBrkIter!= NULL &&
+ if ( u_islower(relativeDayString.char32At(0)) && fCapitalizationBrkIter!= nullptr &&
( capitalizationContext==UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE ||
(capitalizationContext==UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU && fCapitalizationOfRelativeUnitsForUIListMenu) ||
(capitalizationContext==UDISPCTX_CAPITALIZATION_FOR_STANDALONE && fCapitalizationOfRelativeUnitsForStandAlone) ) ) {
@@ -191,7 +199,7 @@ UnicodeString& RelativeDateFormat::format( Calendar& cal,
if (fDatePattern.isEmpty()) {
fDateTimeFormatter->applyPattern(fTimePattern);
fDateTimeFormatter->format(cal,appendTo,pos);
- } else if (fTimePattern.isEmpty() || fCombinedFormat == NULL) {
+ } else if (fTimePattern.isEmpty() || fCombinedFormat == nullptr) {
if (relativeDayString.length() > 0) {
appendTo.append(relativeDayString);
} else {
@@ -243,12 +251,12 @@ void RelativeDateFormat::parse( const UnicodeString& text,
// no date pattern, try parsing as time
fDateTimeFormatter->applyPattern(fTimePattern);
fDateTimeFormatter->parse(text,cal,pos);
- } else if (fTimePattern.isEmpty() || fCombinedFormat == NULL) {
+ } else if (fTimePattern.isEmpty() || fCombinedFormat == nullptr) {
// no time pattern or way to combine, try parsing as date
// first check whether text matches a relativeDayString
UBool matchedRelative = false;
for (int n=0; n < fDatesLen && !matchedRelative; n++) {
- if (fDates[n].string != NULL &&
+ if (fDates[n].string != nullptr &&
text.compare(startIndex, fDates[n].len, fDates[n].string) == 0) {
// it matched, handle the relative day string
UErrorCode status = U_ZERO_ERROR;
@@ -280,7 +288,7 @@ void RelativeDateFormat::parse( const UnicodeString& text,
UErrorCode status = U_ZERO_ERROR;
for (int n=0; n < fDatesLen; n++) {
int32_t relativeStringOffset;
- if (fDates[n].string != NULL &&
+ if (fDates[n].string != nullptr &&
(relativeStringOffset = modifiedText.indexOf(fDates[n].string, fDates[n].len, startIndex)) >= startIndex) {
// it matched, replace the relative date with a real one for parsing
UnicodeString dateString;
@@ -347,20 +355,20 @@ RelativeDateFormat::parse(const UnicodeString& text, UErrorCode& status) const
}
-const UChar *RelativeDateFormat::getStringForDay(int32_t day, int32_t &len, UErrorCode &status) const {
+const char16_t *RelativeDateFormat::getStringForDay(int32_t day, int32_t &len, UErrorCode &status) const {
if(U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
// Is it inside the resource bundle's range?
int n = day + UDAT_DIRECTION_THIS;
if (n >= 0 && n < fDatesLen) {
- if (fDates[n].offset == day && fDates[n].string != NULL) {
+ if (fDates[n].offset == day && fDates[n].string != nullptr) {
len = fDates[n].len;
return fDates[n].string;
}
}
- return NULL; // not found.
+ return nullptr; // not found.
}
UnicodeString&
@@ -370,7 +378,7 @@ RelativeDateFormat::toPattern(UnicodeString& result, UErrorCode& status) const
result.remove();
if (fDatePattern.isEmpty()) {
result.setTo(fTimePattern);
- } else if (fTimePattern.isEmpty() || fCombinedFormat == NULL) {
+ } else if (fTimePattern.isEmpty() || fCombinedFormat == nullptr) {
result.setTo(fDatePattern);
} else {
fCombinedFormat->format(fTimePattern, fDatePattern, result, status);
@@ -427,14 +435,14 @@ RelativeDateFormat::setContext(UDisplayContext value, UErrorCode& status)
fCapitalizationInfoSet = true;
}
#if !UCONFIG_NO_BREAK_ITERATION
- if ( fCapitalizationBrkIter == NULL && (value==UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE ||
+ if ( fCapitalizationBrkIter == nullptr && (value==UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE ||
(value==UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU && fCapitalizationOfRelativeUnitsForUIListMenu) ||
(value==UDISPCTX_CAPITALIZATION_FOR_STANDALONE && fCapitalizationOfRelativeUnitsForStandAlone)) ) {
status = U_ZERO_ERROR;
fCapitalizationBrkIter = BreakIterator::createSentenceInstance(fLocale, status);
if (U_FAILURE(status)) {
delete fCapitalizationBrkIter;
- fCapitalizationBrkIter = NULL;
+ fCapitalizationBrkIter = nullptr;
}
}
#endif
@@ -445,17 +453,17 @@ void
RelativeDateFormat::initCapitalizationContextInfo(const Locale& thelocale)
{
#if !UCONFIG_NO_BREAK_ITERATION
- const char * localeID = (thelocale != NULL)? thelocale.getBaseName(): NULL;
+ const char * localeID = (thelocale != nullptr)? thelocale.getBaseName(): nullptr;
UErrorCode status = U_ZERO_ERROR;
- LocalUResourceBundlePointer rb(ures_open(NULL, localeID, &status));
+ LocalUResourceBundlePointer rb(ures_open(nullptr, localeID, &status));
ures_getByKeyWithFallback(rb.getAlias(),
"contextTransforms/relative",
rb.getAlias(), &status);
- if (U_SUCCESS(status) && rb != NULL) {
+ if (U_SUCCESS(status) && rb != nullptr) {
int32_t len = 0;
const int32_t * intVector = ures_getIntVector(rb.getAlias(),
&len, &status);
- if (U_SUCCESS(status) && intVector != NULL && len >= 2) {
+ if (U_SUCCESS(status) && intVector != nullptr && len >= 2) {
fCapitalizationOfRelativeUnitsForUIListMenu = static_cast<UBool>(intVector[0]);
fCapitalizationOfRelativeUnitsForStandAlone = static_cast<UBool>(intVector[1]);
}
@@ -477,7 +485,7 @@ struct RelDateFmtDataSink : public ResourceSink {
RelDateFmtDataSink(URelativeString* fDates, int32_t len) : fDatesPtr(fDates), fDatesLen(len) {
for (int32_t i = 0; i < fDatesLen; ++i) {
fDatesPtr[i].offset = 0;
- fDatesPtr[i].string = NULL;
+ fDatesPtr[i].string = nullptr;
fDatesPtr[i].len = -1;
}
}
@@ -495,7 +503,7 @@ struct RelDateFmtDataSink : public ResourceSink {
// Put in the proper spot, but don't override existing data.
n = offset + UDAT_DIRECTION_THIS; // Converts to index in UDAT_R
- if (n < fDatesLen && fDatesPtr[n].string == NULL) {
+ if (n < fDatesLen && fDatesPtr[n].string == nullptr) {
// Not found and n is an empty slot.
fDatesPtr[n].offset = offset;
fDatesPtr[n].string = value.getString(len, errorCode);
@@ -512,15 +520,15 @@ RelDateFmtDataSink::~RelDateFmtDataSink() {}
} // Namespace
-static const UChar patItem1[] = {0x7B,0x31,0x7D}; // "{1}"
+static const char16_t patItem1[] = {0x7B,0x31,0x7D}; // "{1}"
static const int32_t patItem1Len = 3;
void RelativeDateFormat::loadDates(UErrorCode &status) {
- UResourceBundle *rb = ures_open(NULL, fLocale.getBaseName(), &status);
+ UResourceBundle *rb = ures_open(nullptr, fLocale.getBaseName(), &status);
LocalUResourceBundlePointer dateTimePatterns(
ures_getByKeyWithFallback(rb,
"calendar/gregorian/DateTimePatterns",
- (UResourceBundle*)NULL, &status));
+ (UResourceBundle*)nullptr, &status));
if(U_SUCCESS(status)) {
int32_t patternsSize = ures_getSize(dateTimePatterns.getAlias());
if (patternsSize > kDateTime) {
@@ -534,7 +542,7 @@ void RelativeDateFormat::loadDates(UErrorCode &status) {
}
}
- const UChar *resStr = ures_getStringByIndex(dateTimePatterns.getAlias(), glueIndex, &resStrLen, &status);
+ const char16_t *resStr = ures_getStringByIndex(dateTimePatterns.getAlias(), glueIndex, &resStrLen, &status);
if (U_SUCCESS(status) && resStrLen >= patItem1Len && u_strncmp(resStr,patItem1,patItem1Len)==0) {
fCombinedHasDateAtStart = true;
}
@@ -567,7 +575,7 @@ RelativeDateFormat::initializeCalendar(TimeZone* adoptZone, const Locale& locale
if(!U_FAILURE(status)) {
fCalendar = Calendar::createInstance(adoptZone?adoptZone:TimeZone::createDefault(), locale, status);
}
- if (U_SUCCESS(status) && fCalendar == NULL) {
+ if (U_SUCCESS(status) && fCalendar == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
}
return fCalendar;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/reldtfmt.h b/Build/source/libs/icu/icu-src/source/i18n/reldtfmt.h
index 98b333a02be..3af43d49cab 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/reldtfmt.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/reldtfmt.h
@@ -233,7 +233,7 @@ public:
* with this date-time formatter.
* @internal ICU 4.8
*/
- virtual const DateFormatSymbols* getDateFormatSymbols(void) const;
+ virtual const DateFormatSymbols* getDateFormatSymbols() const;
/**
* Set a particular UDisplayContext value in the formatter, such as
@@ -273,9 +273,9 @@ private:
* Get the string at a specific offset.
* @param day day offset ( -1, 0, 1, etc.. )
* @param len on output, length of string.
- * @return the string, or NULL if none at that location.
+ * @return the string, or nullptr if none at that location.
*/
- const UChar *getStringForDay(int32_t day, int32_t &len, UErrorCode &status) const;
+ const char16_t *getStringForDay(int32_t day, int32_t &len, UErrorCode &status) const;
/**
* Load the Date string array
@@ -294,7 +294,7 @@ private:
/**
* initializes fCalendar from parameters. Returns fCalendar as a convenience.
- * @param adoptZone Zone to be adopted, or NULL for TimeZone::createDefault().
+ * @param adoptZone Zone to be adopted, or nullptr for TimeZone::createDefault().
* @param locale Locale of the calendar
* @param status Error code
* @return the newly constructed fCalendar
@@ -314,7 +314,7 @@ public:
* @return The class ID for all objects of this class.
* @internal ICU 3.8
*/
- U_I18N_API static UClassID U_EXPORT2 getStaticClassID(void);
+ U_I18N_API static UClassID U_EXPORT2 getStaticClassID();
/**
* Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This
@@ -327,7 +327,7 @@ public:
* other classes have different class IDs.
* @internal ICU 3.8
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
};
diff --git a/Build/source/libs/icu/icu-src/source/i18n/rematch.cpp b/Build/source/libs/icu/icu-src/source/i18n/rematch.cpp
index e74ca3a659f..7a39afbf7b7 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/rematch.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/rematch.cpp
@@ -73,7 +73,7 @@ RegexMatcher::RegexMatcher(const RegexPattern *pat) {
if (U_FAILURE(fDeferredStatus)) {
return;
}
- if (pat==NULL) {
+ if (pat==nullptr) {
fDeferredStatus = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
@@ -157,12 +157,12 @@ RegexMatcher::~RegexMatcher() {
delete fStack;
if (fData != fSmallData) {
uprv_free(fData);
- fData = NULL;
+ fData = nullptr;
}
if (fPatternOwned) {
delete fPatternOwned;
- fPatternOwned = NULL;
- fPattern = NULL;
+ fPatternOwned = nullptr;
+ fPattern = nullptr;
}
if (fInput) {
@@ -189,8 +189,8 @@ RegexMatcher::~RegexMatcher() {
// to run safely.
//
void RegexMatcher::init(UErrorCode &status) {
- fPattern = NULL;
- fPatternOwned = NULL;
+ fPattern = nullptr;
+ fPatternOwned = nullptr;
fFrameSize = 0;
fRegionStart = 0;
fRegionLimit = 0;
@@ -209,26 +209,26 @@ void RegexMatcher::init(UErrorCode &status) {
fAppendPosition = 0;
fHitEnd = false;
fRequireEnd = false;
- fStack = NULL;
- fFrame = NULL;
+ fStack = nullptr;
+ fFrame = nullptr;
fTimeLimit = 0;
fTime = 0;
fTickCounter = 0;
fStackLimit = DEFAULT_BACKTRACK_STACK_CAPACITY;
- fCallbackFn = NULL;
- fCallbackContext = NULL;
- fFindProgressCallbackFn = NULL;
- fFindProgressCallbackContext = NULL;
+ fCallbackFn = nullptr;
+ fCallbackContext = nullptr;
+ fFindProgressCallbackFn = nullptr;
+ fFindProgressCallbackContext = nullptr;
fTraceDebug = false;
fDeferredStatus = status;
fData = fSmallData;
- fWordBreakItr = NULL;
- fGCBreakItr = NULL;
+ fWordBreakItr = nullptr;
+ fGCBreakItr = nullptr;
- fStack = NULL;
- fInputText = NULL;
- fAltInputText = NULL;
- fInput = NULL;
+ fStack = nullptr;
+ fInputText = nullptr;
+ fAltInputText = nullptr;
+ fInput = nullptr;
fInputLength = 0;
fInputUniStrMaybeMutable = false;
}
@@ -245,14 +245,14 @@ void RegexMatcher::init2(UText *input, UErrorCode &status) {
if (fPattern->fDataSize > UPRV_LENGTHOF(fSmallData)) {
fData = (int64_t *)uprv_malloc(fPattern->fDataSize * sizeof(int64_t));
- if (fData == NULL) {
+ if (fData == nullptr) {
status = fDeferredStatus = U_MEMORY_ALLOCATION_ERROR;
return;
}
}
fStack = new UVector64(status);
- if (fStack == NULL) {
+ if (fStack == nullptr) {
status = fDeferredStatus = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -266,10 +266,10 @@ void RegexMatcher::init2(UText *input, UErrorCode &status) {
}
-static const UChar BACKSLASH = 0x5c;
-static const UChar DOLLARSIGN = 0x24;
-static const UChar LEFTBRACKET = 0x7b;
-static const UChar RIGHTBRACKET = 0x7d;
+static const char16_t BACKSLASH = 0x5c;
+static const char16_t DOLLARSIGN = 0x24;
+static const char16_t LEFTBRACKET = 0x7b;
+static const char16_t RIGHTBRACKET = 0x7d;
//--------------------------------------------------------------------------------
//
@@ -326,10 +326,10 @@ RegexMatcher &RegexMatcher::appendReplacement(UText *dest,
len16 = (int32_t)(fMatchStart-fAppendPosition);
} else {
UErrorCode lengthStatus = U_ZERO_ERROR;
- len16 = utext_extract(fInputText, fAppendPosition, fMatchStart, NULL, 0, &lengthStatus);
+ len16 = utext_extract(fInputText, fAppendPosition, fMatchStart, nullptr, 0, &lengthStatus);
}
- UChar *inputChars = (UChar *)uprv_malloc(sizeof(UChar)*(len16+1));
- if (inputChars == NULL) {
+ char16_t *inputChars = (char16_t *)uprv_malloc(sizeof(char16_t)*(len16+1));
+ if (inputChars == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return *this;
}
@@ -364,10 +364,10 @@ RegexMatcher &RegexMatcher::appendReplacement(UText *dest,
UChar32 escapedChar = u_unescapeAt(uregex_utext_unescape_charAt, &offset, INT32_MAX, &context);
if (escapedChar != (UChar32)0xFFFFFFFF) {
if (U_IS_BMP(escapedChar)) {
- UChar c16 = (UChar)escapedChar;
+ char16_t c16 = (char16_t)escapedChar;
destLen += utext_replace(dest, destLen, destLen, &c16, 1, &status);
} else {
- UChar surrogate[2];
+ char16_t surrogate[2];
surrogate[0] = U16_LEAD(escapedChar);
surrogate[1] = U16_TRAIL(escapedChar);
if (U_SUCCESS(status)) {
@@ -386,10 +386,10 @@ RegexMatcher &RegexMatcher::appendReplacement(UText *dest,
(void)UTEXT_NEXT32(replacement);
// Plain backslash escape. Just put out the escaped character.
if (U_IS_BMP(c)) {
- UChar c16 = (UChar)c;
+ char16_t c16 = (char16_t)c;
destLen += utext_replace(dest, destLen, destLen, &c16, 1, &status);
} else {
- UChar surrogate[2];
+ char16_t surrogate[2];
surrogate[0] = U16_LEAD(c);
surrogate[1] = U16_TRAIL(c);
if (U_SUCCESS(status)) {
@@ -400,10 +400,10 @@ RegexMatcher &RegexMatcher::appendReplacement(UText *dest,
} else if (c != DOLLARSIGN) {
// Normal char, not a $. Copy it out without further checks.
if (U_IS_BMP(c)) {
- UChar c16 = (UChar)c;
+ char16_t c16 = (char16_t)c;
destLen += utext_replace(dest, destLen, destLen, &c16, 1, &status);
} else {
- UChar surrogate[2];
+ char16_t surrogate[2];
surrogate[0] = U16_LEAD(c);
surrogate[1] = U16_TRAIL(c);
if (U_SUCCESS(status)) {
@@ -524,12 +524,12 @@ UText *RegexMatcher::appendTail(UText *dest, UErrorCode &status) {
if (UTEXT_USES_U16(fInputText)) {
len16 = (int32_t)(fInputLength-fAppendPosition);
} else {
- len16 = utext_extract(fInputText, fAppendPosition, fInputLength, NULL, 0, &status);
+ len16 = utext_extract(fInputText, fAppendPosition, fInputLength, nullptr, 0, &status);
status = U_ZERO_ERROR; // buffer overflow
}
- UChar *inputChars = (UChar *)uprv_malloc(sizeof(UChar)*(len16));
- if (inputChars == NULL) {
+ char16_t *inputChars = (char16_t *)uprv_malloc(sizeof(char16_t)*(len16));
+ if (inputChars == nullptr) {
fDeferredStatus = U_MEMORY_ALLOCATION_ERROR;
} else {
utext_extract(fInputText, fAppendPosition, fInputLength, inputChars, len16, &status); // unterminated
@@ -933,7 +933,7 @@ UBool RegexMatcher::findUsingChunk(UErrorCode &status) {
startPos = (int32_t)fActiveStart;
}
- const UChar *inputBuf = fInputText->chunkContents;
+ const char16_t *inputBuf = fInputText->chunkContents;
if (fMatch) {
// Save the position of any previous successful match.
@@ -1220,14 +1220,14 @@ UnicodeString RegexMatcher::group(int32_t groupNum, UErrorCode &status) const {
// Get the group length using a utext_extract preflight.
// UText is actually pretty efficient at this when underlying encoding is UTF-16.
- int32_t length = utext_extract(fInputText, groupStart, groupEnd, NULL, 0, &status);
+ int32_t length = utext_extract(fInputText, groupStart, groupEnd, nullptr, 0, &status);
if (status != U_BUFFER_OVERFLOW_ERROR) {
return result;
}
status = U_ZERO_ERROR;
- UChar *buf = result.getBuffer(length);
- if (buf == NULL) {
+ char16_t *buf = result.getBuffer(length);
+ if (buf == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
} else {
int32_t extractLength = utext_extract(fInputText, groupStart, groupEnd, buf, length, &status);
@@ -1257,11 +1257,11 @@ int64_t RegexMatcher::appendGroup(int32_t groupNum, UText *dest, UErrorCode &sta
if (fMatch == false) {
status = U_REGEX_INVALID_STATE;
- return utext_replace(dest, destLen, destLen, NULL, 0, &status);
+ return utext_replace(dest, destLen, destLen, nullptr, 0, &status);
}
if (groupNum < 0 || groupNum > fPattern->fGroupMap->size()) {
status = U_INDEX_OUTOFBOUNDS_ERROR;
- return utext_replace(dest, destLen, destLen, NULL, 0, &status);
+ return utext_replace(dest, destLen, destLen, nullptr, 0, &status);
}
int64_t s, e;
@@ -1278,7 +1278,7 @@ int64_t RegexMatcher::appendGroup(int32_t groupNum, UText *dest, UErrorCode &sta
if (s < 0) {
// A capture group wasn't part of the match
- return utext_replace(dest, destLen, destLen, NULL, 0, &status);
+ return utext_replace(dest, destLen, destLen, nullptr, 0, &status);
}
U_ASSERT(s <= e);
@@ -1292,10 +1292,10 @@ int64_t RegexMatcher::appendGroup(int32_t groupNum, UText *dest, UErrorCode &sta
len16 = (int32_t)(e-s);
} else {
UErrorCode lengthStatus = U_ZERO_ERROR;
- len16 = utext_extract(fInputText, s, e, NULL, 0, &lengthStatus);
+ len16 = utext_extract(fInputText, s, e, nullptr, 0, &lengthStatus);
}
- UChar *groupChars = (UChar *)uprv_malloc(sizeof(UChar)*(len16+1));
- if (groupChars == NULL) {
+ char16_t *groupChars = (char16_t *)uprv_malloc(sizeof(char16_t)*(len16+1));
+ if (groupChars == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return 0;
}
@@ -1361,12 +1361,12 @@ const UnicodeString &RegexMatcher::input() const {
if (UTEXT_USES_U16(fInputText)) {
len16 = (int32_t)fInputLength;
} else {
- len16 = utext_extract(fInputText, 0, fInputLength, NULL, 0, &status);
+ len16 = utext_extract(fInputText, 0, fInputLength, nullptr, 0, &status);
status = U_ZERO_ERROR; // overflow, length status
}
UnicodeString *result = new UnicodeString(len16, 0, 0);
- UChar *inputChars = result->getBuffer(len16);
+ char16_t *inputChars = result->getBuffer(len16);
utext_extract(fInputText, 0, fInputLength, inputChars, len16, &status); // unterminated warning
result->releaseBuffer(len16);
@@ -1409,10 +1409,10 @@ UText *RegexMatcher::getInput (UText *dest, UErrorCode &status) const {
input16Len = (int32_t)fInputLength;
} else {
UErrorCode lengthStatus = U_ZERO_ERROR;
- input16Len = utext_extract(fInputText, 0, fInputLength, NULL, 0, &lengthStatus); // buffer overflow error
+ input16Len = utext_extract(fInputText, 0, fInputLength, nullptr, 0, &lengthStatus); // buffer overflow error
}
- UChar *inputChars = (UChar *)uprv_malloc(sizeof(UChar)*(input16Len));
- if (inputChars == NULL) {
+ char16_t *inputChars = (char16_t *)uprv_malloc(sizeof(char16_t)*(input16Len));
+ if (inputChars == nullptr) {
return dest;
}
@@ -1425,7 +1425,7 @@ UText *RegexMatcher::getInput (UText *dest, UErrorCode &status) const {
}
return dest;
} else {
- return utext_clone(NULL, fInputText, false, true, &status);
+ return utext_clone(nullptr, fInputText, false, true, &status);
}
}
@@ -1726,12 +1726,12 @@ UText *RegexMatcher::replaceAll(UText *replacement, UText *dest, UErrorCode &sta
return dest;
}
- if (dest == NULL) {
+ if (dest == nullptr) {
UnicodeString emptyString;
UText empty = UTEXT_INITIALIZER;
utext_openUnicodeString(&empty, &emptyString, &status);
- dest = utext_clone(NULL, &empty, true, false, &status);
+ dest = utext_clone(nullptr, &empty, true, false, &status);
utext_close(&empty);
}
@@ -1788,12 +1788,12 @@ UText *RegexMatcher::replaceFirst(UText *replacement, UText *dest, UErrorCode &s
return getInput(dest, status);
}
- if (dest == NULL) {
+ if (dest == nullptr) {
UnicodeString emptyString;
UText empty = UTEXT_INITIALIZER;
utext_openUnicodeString(&empty, &emptyString, &status);
- dest = utext_clone(NULL, &empty, true, false, &status);
+ dest = utext_clone(nullptr, &empty, true, false, &status);
utext_close(&empty);
}
@@ -1860,7 +1860,7 @@ RegexMatcher &RegexMatcher::reset(const UnicodeString &input) {
reset();
delete fInput;
- fInput = NULL;
+ fInput = nullptr;
// Do the following for any UnicodeString.
// This is for compatibility for those clients who modify the input string "live" during regex operations.
@@ -1889,7 +1889,7 @@ RegexMatcher &RegexMatcher::reset(UText *input) {
fInputLength = utext_nativeLength(fInputText);
delete fInput;
- fInput = NULL;
+ fInput = nullptr;
#if UCONFIG_NO_BREAK_ITERATION==0
if (fWordBreakItr) {
@@ -1906,7 +1906,7 @@ RegexMatcher &RegexMatcher::reset(UText *input) {
return *this;
}
-/*RegexMatcher &RegexMatcher::reset(const UChar *) {
+/*RegexMatcher &RegexMatcher::reset(const char16_t *) {
fDeferredStatus = U_INTERNAL_PROGRAM_ERROR;
return *this;
}*/
@@ -1935,7 +1935,7 @@ RegexMatcher &RegexMatcher::refreshInputText(UText *input, UErrorCode &status) {
if (U_FAILURE(status)) {
return *this;
}
- if (input == NULL) {
+ if (input == nullptr) {
status = U_ILLEGAL_ARGUMENT_ERROR;
return *this;
}
@@ -1951,7 +1951,7 @@ RegexMatcher &RegexMatcher::refreshInputText(UText *input, UErrorCode &status) {
}
utext_setNativeIndex(fInputText, pos);
- if (fAltInputText != NULL) {
+ if (fAltInputText != nullptr) {
pos = utext_getNativeIndex(fAltInputText);
fAltInputText = utext_clone(fAltInputText, input, false, true, &status);
if (U_FAILURE(status)) {
@@ -1980,7 +1980,7 @@ void RegexMatcher::setTrace(UBool state) {
*
* @param src The source UText
* @param dest The destination UText. Must be writable.
- * May be NULL, in which case a new UText will be allocated.
+ * May be nullptr, in which case a new UText will be allocated.
* @param start Start index of source substring.
* @param limit Limit index of source substring.
* @param status An error code.
@@ -1991,21 +1991,21 @@ static UText *utext_extract_replace(UText *src, UText *dest, int64_t start, int6
}
if (start == limit) {
if (dest) {
- utext_replace(dest, 0, utext_nativeLength(dest), NULL, 0, status);
+ utext_replace(dest, 0, utext_nativeLength(dest), nullptr, 0, status);
return dest;
} else {
- return utext_openUChars(NULL, NULL, 0, status);
+ return utext_openUChars(nullptr, nullptr, 0, status);
}
}
- int32_t length = utext_extract(src, start, limit, NULL, 0, status);
+ int32_t length = utext_extract(src, start, limit, nullptr, 0, status);
if (*status != U_BUFFER_OVERFLOW_ERROR && U_FAILURE(*status)) {
return dest;
}
*status = U_ZERO_ERROR;
- MaybeStackArray<UChar, 40> buffer;
+ MaybeStackArray<char16_t, 40> buffer;
if (length >= buffer.getCapacity()) {
- UChar *newBuf = buffer.resize(length+1); // Leave space for terminating Nul.
- if (newBuf == NULL) {
+ char16_t *newBuf = buffer.resize(length+1); // Leave space for terminating Nul.
+ if (newBuf == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
}
}
@@ -2018,18 +2018,18 @@ static UText *utext_extract_replace(UText *src, UText *dest, int64_t start, int6
// Caller did not provide a preexisting UText.
// Open a new one, and have it adopt the text buffer storage.
if (U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
int32_t ownedLength = 0;
- UChar *ownedBuf = buffer.orphanOrClone(length+1, ownedLength);
- if (ownedBuf == NULL) {
+ char16_t *ownedBuf = buffer.orphanOrClone(length+1, ownedLength);
+ if (ownedBuf == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
- UText *result = utext_openUChars(NULL, ownedBuf, length, status);
+ UText *result = utext_openUChars(nullptr, ownedBuf, length, status);
if (U_FAILURE(*status)) {
uprv_free(ownedBuf);
- return NULL;
+ return nullptr;
}
result->providerProperties |= (1 << UTEXT_PROVIDER_OWNS_TEXT);
return result;
@@ -2053,13 +2053,13 @@ int32_t RegexMatcher::split(const UnicodeString &input,
}
UText **destText = (UText **)uprv_malloc(sizeof(UText*)*destCapacity);
- if (destText == NULL) {
+ if (destText == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return 0;
}
int32_t i;
for (i = 0; i < destCapacity; i++) {
- destText[i] = utext_openUnicodeString(NULL, &dest[i], &status);
+ destText[i] = utext_openUnicodeString(nullptr, &dest[i], &status);
}
int32_t fieldCount = split(&inputText, destText, destCapacity, status);
@@ -2126,15 +2126,15 @@ int32_t RegexMatcher::split(UText *input,
UText remainingText = UTEXT_INITIALIZER;
utext_openUChars(&remainingText, input->chunkContents+nextOutputStringStart,
fActiveLimit-nextOutputStringStart, &status);
- dest[i] = utext_clone(NULL, &remainingText, true, false, &status);
+ dest[i] = utext_clone(nullptr, &remainingText, true, false, &status);
utext_close(&remainingText);
}
} else {
UErrorCode lengthStatus = U_ZERO_ERROR;
int32_t remaining16Length =
- utext_extract(input, nextOutputStringStart, fActiveLimit, NULL, 0, &lengthStatus);
- UChar *remainingChars = (UChar *)uprv_malloc(sizeof(UChar)*(remaining16Length+1));
- if (remainingChars == NULL) {
+ utext_extract(input, nextOutputStringStart, fActiveLimit, nullptr, 0, &lengthStatus);
+ char16_t *remainingChars = (char16_t *)uprv_malloc(sizeof(char16_t)*(remaining16Length+1));
+ if (remainingChars == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
break;
}
@@ -2145,7 +2145,7 @@ int32_t RegexMatcher::split(UText *input,
} else {
UText remainingText = UTEXT_INITIALIZER;
utext_openUChars(&remainingText, remainingChars, remaining16Length, &status);
- dest[i] = utext_clone(NULL, &remainingText, true, false, &status);
+ dest[i] = utext_clone(nullptr, &remainingText, true, false, &status);
utext_close(&remainingText);
}
@@ -2166,14 +2166,14 @@ int32_t RegexMatcher::split(UText *input,
UText remainingText = UTEXT_INITIALIZER;
utext_openUChars(&remainingText, input->chunkContents+nextOutputStringStart,
fMatchStart-nextOutputStringStart, &status);
- dest[i] = utext_clone(NULL, &remainingText, true, false, &status);
+ dest[i] = utext_clone(nullptr, &remainingText, true, false, &status);
utext_close(&remainingText);
}
} else {
UErrorCode lengthStatus = U_ZERO_ERROR;
- int32_t remaining16Length = utext_extract(input, nextOutputStringStart, fMatchStart, NULL, 0, &lengthStatus);
- UChar *remainingChars = (UChar *)uprv_malloc(sizeof(UChar)*(remaining16Length+1));
- if (remainingChars == NULL) {
+ int32_t remaining16Length = utext_extract(input, nextOutputStringStart, fMatchStart, nullptr, 0, &lengthStatus);
+ char16_t *remainingChars = (char16_t *)uprv_malloc(sizeof(char16_t)*(remaining16Length+1));
+ if (remainingChars == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
break;
}
@@ -2183,7 +2183,7 @@ int32_t RegexMatcher::split(UText *input,
} else {
UText remainingText = UTEXT_INITIALIZER;
utext_openUChars(&remainingText, remainingChars, remaining16Length, &status);
- dest[i] = utext_clone(NULL, &remainingText, true, false, &status);
+ dest[i] = utext_clone(nullptr, &remainingText, true, false, &status);
utext_close(&remainingText);
}
@@ -2212,10 +2212,10 @@ int32_t RegexMatcher::split(UText *input,
// the delimiter at the end of input.
if (i+1 < destCapacity) {
++i;
- if (dest[i] == NULL) {
- dest[i] = utext_openUChars(NULL, NULL, 0, &status);
+ if (dest[i] == nullptr) {
+ dest[i] = utext_openUChars(nullptr, nullptr, 0, &status);
} else {
- static const UChar emptyString[] = {(UChar)0};
+ static const char16_t emptyString[] = {(char16_t)0};
utext_replace(dest[i], 0, utext_nativeLength(dest[i]), emptyString, 0, &status);
}
}
@@ -2236,14 +2236,14 @@ int32_t RegexMatcher::split(UText *input,
UText remainingText = UTEXT_INITIALIZER;
utext_openUChars(&remainingText, input->chunkContents+nextOutputStringStart,
fActiveLimit-nextOutputStringStart, &status);
- dest[i] = utext_clone(NULL, &remainingText, true, false, &status);
+ dest[i] = utext_clone(nullptr, &remainingText, true, false, &status);
utext_close(&remainingText);
}
} else {
UErrorCode lengthStatus = U_ZERO_ERROR;
- int32_t remaining16Length = utext_extract(input, nextOutputStringStart, fActiveLimit, NULL, 0, &lengthStatus);
- UChar *remainingChars = (UChar *)uprv_malloc(sizeof(UChar)*(remaining16Length+1));
- if (remainingChars == NULL) {
+ int32_t remaining16Length = utext_extract(input, nextOutputStringStart, fActiveLimit, nullptr, 0, &lengthStatus);
+ char16_t *remainingChars = (char16_t *)uprv_malloc(sizeof(char16_t)*(remaining16Length+1));
+ if (remainingChars == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
break;
}
@@ -2254,7 +2254,7 @@ int32_t RegexMatcher::split(UText *input,
} else {
UText remainingText = UTEXT_INITIALIZER;
utext_openUChars(&remainingText, remainingChars, remaining16Length, &status);
- dest[i] = utext_clone(NULL, &remainingText, true, false, &status);
+ dest[i] = utext_clone(nullptr, &remainingText, true, false, &status);
utext_close(&remainingText);
}
@@ -2516,7 +2516,7 @@ REStackFrame *RegexMatcher::resetStack() {
REStackFrame *iFrame = (REStackFrame *)fStack->reserveBlock(fPattern->fFrameSize, fDeferredStatus);
if(U_FAILURE(fDeferredStatus)) {
- return NULL;
+ return nullptr;
}
int32_t i;
@@ -2584,7 +2584,7 @@ UBool RegexMatcher::isChunkWordBoundary(int32_t pos) {
UBool isBoundary = false;
UBool cIsWord = false;
- const UChar *inputBuf = fInputText->chunkContents;
+ const char16_t *inputBuf = fInputText->chunkContents;
if (pos >= fLookLimit) {
fHitEnd = true;
@@ -2696,7 +2696,7 @@ int64_t RegexMatcher::followingGCBoundary(int64_t pos, UErrorCode &status) {
void RegexMatcher::IncrementTime(UErrorCode &status) {
fTickCounter = TIMER_INITIAL_VALUE;
fTime++;
- if (fCallbackFn != NULL) {
+ if (fCallbackFn != nullptr) {
if ((*fCallbackFn)(fCallbackContext, fTime) == false) {
status = U_REGEX_STOPPED_BY_CALLER;
return;
@@ -2811,7 +2811,7 @@ void RegexMatcher::MatchAt(int64_t startIdx, UBool toEnd, UErrorCode &status) {
//
int64_t *pat = fPattern->fCompiledPat->getBuffer();
- const UChar *litText = fPattern->fLiteralText.getBuffer();
+ const char16_t *litText = fPattern->fLiteralText.getBuffer();
UVector *fSets = fPattern->fSets;
fFrameSize = fPattern->fFrameSize;
@@ -2892,7 +2892,7 @@ void RegexMatcher::MatchAt(int64_t startIdx, UBool toEnd, UErrorCode &status) {
U_ASSERT(opType == URX_STRING_LEN);
U_ASSERT(stringLen >= 2);
- const UChar *patternString = litText+stringStartIdx;
+ const char16_t *patternString = litText+stringStartIdx;
int32_t patternStringIndex = 0;
UTEXT_SETNATIVEINDEX(fInputText, fp->fInputIdx);
UChar32 inputChar;
@@ -3836,7 +3836,7 @@ void RegexMatcher::MatchAt(int64_t startIdx, UBool toEnd, UErrorCode &status) {
// offset to the string text, and one for the length.
// The compiled string has already been case folded.
{
- const UChar *patternString = litText + opValue;
+ const char16_t *patternString = litText + opValue;
int32_t patternStringIdx = 0;
op = (int32_t)pat[fp->fPatIdx];
@@ -4319,10 +4319,10 @@ void RegexMatcher::MatchChunkAt(int32_t startIdx, UBool toEnd, UErrorCode &statu
//
int64_t *pat = fPattern->fCompiledPat->getBuffer();
- const UChar *litText = fPattern->fLiteralText.getBuffer();
+ const char16_t *litText = fPattern->fLiteralText.getBuffer();
UVector *fSets = fPattern->fSets;
- const UChar *inputBuf = fInputText->chunkContents;
+ const char16_t *inputBuf = fInputText->chunkContents;
fFrameSize = fPattern->fFrameSize;
REStackFrame *fp = resetStack();
@@ -4402,10 +4402,10 @@ void RegexMatcher::MatchChunkAt(int32_t startIdx, UBool toEnd, UErrorCode &statu
U_ASSERT(opType == URX_STRING_LEN);
U_ASSERT(stringLen >= 2);
- const UChar * pInp = inputBuf + fp->fInputIdx;
- const UChar * pInpLimit = inputBuf + fActiveLimit;
- const UChar * pPat = litText+stringStartIdx;
- const UChar * pEnd = pInp + stringLen;
+ const char16_t * pInp = inputBuf + fp->fInputIdx;
+ const char16_t * pInpLimit = inputBuf + fActiveLimit;
+ const char16_t * pPat = litText+stringStartIdx;
+ const char16_t * pEnd = pInp + stringLen;
UBool success = true;
while (pInp < pEnd) {
if (pInp >= pInpLimit) {
@@ -4585,7 +4585,7 @@ void RegexMatcher::MatchChunkAt(int32_t startIdx, UBool toEnd, UErrorCode &statu
}
// Check whether character just before the current pos is a new-line
// unless we are at the end of input
- UChar c = inputBuf[fp->fInputIdx - 1];
+ char16_t c = inputBuf[fp->fInputIdx - 1];
if ((fp->fInputIdx < fAnchorLimit) &&
isLineTerminator(c)) {
// It's a new-line. ^ is true. Success.
@@ -4607,7 +4607,7 @@ void RegexMatcher::MatchChunkAt(int32_t startIdx, UBool toEnd, UErrorCode &statu
}
// Check whether character just before the current pos is a new-line
U_ASSERT(fp->fInputIdx <= fAnchorLimit);
- UChar c = inputBuf[fp->fInputIdx - 1];
+ char16_t c = inputBuf[fp->fInputIdx - 1];
if (c != 0x0a) {
// Not at the start of a line. Back-track out.
fp = (REStackFrame *)fStack->popFrame(fFrameSize);
@@ -4695,7 +4695,7 @@ void RegexMatcher::MatchChunkAt(int32_t startIdx, UBool toEnd, UErrorCode &statu
if (isLineTerminator(c)) {
if (c == 0x0d && fp->fInputIdx < fActiveLimit) {
// Check for CR/LF sequence. Consume both together when found.
- UChar c2;
+ char16_t c2;
U16_NEXT(inputBuf, fp->fInputIdx, fActiveLimit, c2);
if (c2 != 0x0a) {
U16_PREV(inputBuf, 0, fp->fInputIdx, c2);
@@ -5302,7 +5302,7 @@ void RegexMatcher::MatchChunkAt(int32_t startIdx, UBool toEnd, UErrorCode &statu
// offset to the string text, and one for the length.
// The compiled string has already been case folded.
{
- const UChar *patternString = litText + opValue;
+ const char16_t *patternString = litText + opValue;
op = (int32_t)pat[fp->fPatIdx];
fp->fPatIdx++;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/remtrans.cpp b/Build/source/libs/icu/icu-src/source/i18n/remtrans.cpp
index 957ac480fbf..40af1845c7b 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/remtrans.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/remtrans.cpp
@@ -17,7 +17,7 @@
#include "remtrans.h"
#include "unicode/unifilt.h"
-static const UChar CURR_ID[] = {65, 110, 121, 45, 0x52, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0x00}; /* "Any-Remove" */
+static const char16_t CURR_ID[] = {65, 110, 121, 45, 0x52, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0x00}; /* "Any-Remove" */
U_NAMESPACE_BEGIN
@@ -50,7 +50,7 @@ RemoveTransliterator::~RemoveTransliterator() {}
RemoveTransliterator* RemoveTransliterator::clone() const {
RemoveTransliterator* result = new RemoveTransliterator();
- if (result != NULL && getFilter() != 0) {
+ if (result != nullptr && getFilter() != 0) {
result->adoptFilter(getFilter()->clone());
}
return result;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/repattrn.cpp b/Build/source/libs/icu/icu-src/source/i18n/repattrn.cpp
index 0ef85bdf6ce..c0a88f70d92 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/repattrn.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/repattrn.cpp
@@ -77,15 +77,15 @@ RegexPattern &RegexPattern::operator = (const RegexPattern &other) {
return *this;
}
- if (other.fPatternString == NULL) {
- fPatternString = NULL;
+ if (other.fPatternString == nullptr) {
+ fPatternString = nullptr;
fPattern = utext_clone(fPattern, other.fPattern, false, true, &fDeferredStatus);
} else {
fPatternString = new UnicodeString(*(other.fPatternString));
- if (fPatternString == NULL) {
+ if (fPatternString == nullptr) {
fDeferredStatus = U_MEMORY_ALLOCATION_ERROR;
} else {
- fPattern = utext_openConstUnicodeString(NULL, fPatternString, &fDeferredStatus);
+ fPattern = utext_openConstUnicodeString(nullptr, fPatternString, &fDeferredStatus);
}
}
if (U_FAILURE(fDeferredStatus)) {
@@ -117,7 +117,7 @@ RegexPattern &RegexPattern::operator = (const RegexPattern &other) {
int32_t i;
int32_t numSets = other.fSets->size();
fSets8 = new Regex8BitSet[numSets];
- if (fSets8 == NULL) {
+ if (fSets8 == nullptr) {
fDeferredStatus = U_MEMORY_ALLOCATION_ERROR;
return *this;
}
@@ -127,7 +127,7 @@ RegexPattern &RegexPattern::operator = (const RegexPattern &other) {
}
UnicodeSet *sourceSet = (UnicodeSet *)other.fSets->elementAt(i);
UnicodeSet *newSet = new UnicodeSet(*sourceSet);
- if (newSet == NULL) {
+ if (newSet == nullptr) {
fDeferredStatus = U_MEMORY_ALLOCATION_ERROR;
break;
}
@@ -145,7 +145,7 @@ RegexPattern &RegexPattern::operator = (const RegexPattern &other) {
const UnicodeString *name = (const UnicodeString *)hashEl->key.pointer;
UnicodeString *key = new UnicodeString(*name);
int32_t val = hashEl->value.integer;
- if (key == NULL) {
+ if (key == nullptr) {
fDeferredStatus = U_MEMORY_ALLOCATION_ERROR;
} else {
uhash_puti(fNamedCaptureMap, key, val, &fDeferredStatus);
@@ -166,24 +166,24 @@ void RegexPattern::init() {
fFlags = 0;
fCompiledPat = 0;
fLiteralText.remove();
- fSets = NULL;
- fSets8 = NULL;
+ fSets = nullptr;
+ fSets8 = nullptr;
fDeferredStatus = U_ZERO_ERROR;
fMinMatchLen = 0;
fFrameSize = 0;
fDataSize = 0;
- fGroupMap = NULL;
+ fGroupMap = nullptr;
fStartType = START_NO_INFO;
fInitialStringIdx = 0;
fInitialStringLen = 0;
- fInitialChars = NULL;
+ fInitialChars = nullptr;
fInitialChar = 0;
- fInitialChars8 = NULL;
+ fInitialChars8 = nullptr;
fNeedsAltInput = false;
- fNamedCaptureMap = NULL;
+ fNamedCaptureMap = nullptr;
- fPattern = NULL; // will be set later
- fPatternString = NULL; // may be set later
+ fPattern = nullptr; // will be set later
+ fPatternString = nullptr; // may be set later
fCompiledPat = new UVector64(fDeferredStatus);
fGroupMap = new UVector32(fDeferredStatus);
fSets = new UVector(fDeferredStatus);
@@ -192,8 +192,8 @@ void RegexPattern::init() {
if (U_FAILURE(fDeferredStatus)) {
return;
}
- if (fCompiledPat == NULL || fGroupMap == NULL || fSets == NULL ||
- fInitialChars == NULL || fInitialChars8 == NULL) {
+ if (fCompiledPat == nullptr || fGroupMap == nullptr || fSets == nullptr ||
+ fInitialChars == nullptr || fInitialChars8 == nullptr) {
fDeferredStatus = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -228,36 +228,36 @@ bool RegexPattern::initNamedCaptureMap() {
//--------------------------------------------------------------------------
void RegexPattern::zap() {
delete fCompiledPat;
- fCompiledPat = NULL;
+ fCompiledPat = nullptr;
int i;
for (i=1; i<fSets->size(); i++) {
UnicodeSet *s;
s = (UnicodeSet *)fSets->elementAt(i);
- if (s != NULL) {
+ if (s != nullptr) {
delete s;
}
}
delete fSets;
- fSets = NULL;
+ fSets = nullptr;
delete[] fSets8;
- fSets8 = NULL;
+ fSets8 = nullptr;
delete fGroupMap;
- fGroupMap = NULL;
+ fGroupMap = nullptr;
delete fInitialChars;
- fInitialChars = NULL;
+ fInitialChars = nullptr;
delete fInitialChars8;
- fInitialChars8 = NULL;
- if (fPattern != NULL) {
+ fInitialChars8 = nullptr;
+ if (fPattern != nullptr) {
utext_close(fPattern);
- fPattern = NULL;
+ fPattern = nullptr;
}
- if (fPatternString != NULL) {
+ if (fPatternString != nullptr) {
delete fPatternString;
- fPatternString = NULL;
+ fPatternString = nullptr;
}
- if (fNamedCaptureMap != NULL) {
+ if (fNamedCaptureMap != nullptr) {
uhash_close(fNamedCaptureMap);
- fNamedCaptureMap = NULL;
+ fNamedCaptureMap = nullptr;
}
}
@@ -293,13 +293,13 @@ RegexPattern *RegexPattern::clone() const {
//--------------------------------------------------------------------------
bool RegexPattern::operator ==(const RegexPattern &other) const {
if (this->fFlags == other.fFlags && this->fDeferredStatus == other.fDeferredStatus) {
- if (this->fPatternString != NULL && other.fPatternString != NULL) {
+ if (this->fPatternString != nullptr && other.fPatternString != nullptr) {
return *(this->fPatternString) == *(other.fPatternString);
- } else if (this->fPattern == NULL) {
- if (other.fPattern == NULL) {
+ } else if (this->fPattern == nullptr) {
+ if (other.fPattern == nullptr) {
return true;
}
- } else if (other.fPattern != NULL) {
+ } else if (other.fPattern != nullptr) {
UTEXT_SETNATIVEINDEX(this->fPattern, 0);
UTEXT_SETNATIVEINDEX(other.fPattern, 0);
return utext_equals(this->fPattern, other.fPattern);
@@ -320,7 +320,7 @@ RegexPattern::compile(const UnicodeString &regex,
UErrorCode &status)
{
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
const uint32_t allFlags = UREGEX_CANON_EQ | UREGEX_CASE_INSENSITIVE | UREGEX_COMMENTS |
@@ -329,23 +329,23 @@ RegexPattern::compile(const UnicodeString &regex,
if ((flags & ~allFlags) != 0) {
status = U_REGEX_INVALID_FLAG;
- return NULL;
+ return nullptr;
}
if ((flags & UREGEX_CANON_EQ) != 0) {
status = U_REGEX_UNIMPLEMENTED;
- return NULL;
+ return nullptr;
}
RegexPattern *This = new RegexPattern;
- if (This == NULL) {
+ if (This == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
if (U_FAILURE(This->fDeferredStatus)) {
status = This->fDeferredStatus;
delete This;
- return NULL;
+ return nullptr;
}
This->fFlags = flags;
@@ -354,7 +354,7 @@ RegexPattern::compile(const UnicodeString &regex,
if (U_FAILURE(status)) {
delete This;
- This = NULL;
+ This = nullptr;
}
return This;
@@ -371,7 +371,7 @@ RegexPattern::compile(UText *regex,
UErrorCode &status)
{
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
const uint32_t allFlags = UREGEX_CANON_EQ | UREGEX_CASE_INSENSITIVE | UREGEX_COMMENTS |
@@ -380,23 +380,23 @@ RegexPattern::compile(UText *regex,
if ((flags & ~allFlags) != 0) {
status = U_REGEX_INVALID_FLAG;
- return NULL;
+ return nullptr;
}
if ((flags & UREGEX_CANON_EQ) != 0) {
status = U_REGEX_UNIMPLEMENTED;
- return NULL;
+ return nullptr;
}
RegexPattern *This = new RegexPattern;
- if (This == NULL) {
+ if (This == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
if (U_FAILURE(This->fDeferredStatus)) {
status = This->fDeferredStatus;
delete This;
- return NULL;
+ return nullptr;
}
This->fFlags = flags;
@@ -405,7 +405,7 @@ RegexPattern::compile(UText *regex,
if (U_FAILURE(status)) {
delete This;
- This = NULL;
+ This = nullptr;
}
return This;
@@ -479,7 +479,7 @@ uint32_t RegexPattern::flags() const {
RegexMatcher *RegexPattern::matcher(const UnicodeString &input,
UErrorCode &status) const {
RegexMatcher *retMatcher = matcher(status);
- if (retMatcher != NULL) {
+ if (retMatcher != nullptr) {
retMatcher->fDeferredStatus = status;
retMatcher->reset(input);
}
@@ -493,20 +493,20 @@ RegexMatcher *RegexPattern::matcher(const UnicodeString &input,
//
//---------------------------------------------------------------------
RegexMatcher *RegexPattern::matcher(UErrorCode &status) const {
- RegexMatcher *retMatcher = NULL;
+ RegexMatcher *retMatcher = nullptr;
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
if (U_FAILURE(fDeferredStatus)) {
status = fDeferredStatus;
- return NULL;
+ return nullptr;
}
retMatcher = new RegexMatcher(this);
- if (retMatcher == NULL) {
+ if (retMatcher == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
return retMatcher;
}
@@ -527,8 +527,8 @@ UBool U_EXPORT2 RegexPattern::matches(const UnicodeString &regex,
if (U_FAILURE(status)) {return false;}
UBool retVal;
- RegexPattern *pat = NULL;
- RegexMatcher *matcher = NULL;
+ RegexPattern *pat = nullptr;
+ RegexMatcher *matcher = nullptr;
pat = RegexPattern::compile(regex, 0, pe, status);
matcher = pat->matcher(input, status);
@@ -551,8 +551,8 @@ UBool U_EXPORT2 RegexPattern::matches(UText *regex,
if (U_FAILURE(status)) {return false;}
UBool retVal = false;
- RegexPattern *pat = NULL;
- RegexMatcher *matcher = NULL;
+ RegexPattern *pat = nullptr;
+ RegexMatcher *matcher = nullptr;
pat = RegexPattern::compile(regex, 0, pe, status);
matcher = pat->matcher(status);
@@ -576,18 +576,18 @@ UBool U_EXPORT2 RegexPattern::matches(UText *regex,
//
//---------------------------------------------------------------------
UnicodeString RegexPattern::pattern() const {
- if (fPatternString != NULL) {
+ if (fPatternString != nullptr) {
return *fPatternString;
- } else if (fPattern == NULL) {
+ } else if (fPattern == nullptr) {
return UnicodeString();
} else {
UErrorCode status = U_ZERO_ERROR;
int64_t nativeLen = utext_nativeLength(fPattern);
- int32_t len16 = utext_extract(fPattern, 0, nativeLen, NULL, 0, &status); // buffer overflow error
+ int32_t len16 = utext_extract(fPattern, 0, nativeLen, nullptr, 0, &status); // buffer overflow error
UnicodeString result;
status = U_ZERO_ERROR;
- UChar *resultChars = result.getBuffer(len16);
+ char16_t *resultChars = result.getBuffer(len16);
utext_extract(fPattern, 0, nativeLen, resultChars, len16, &status); // unterminated warning
result.releaseBuffer(len16);
@@ -604,10 +604,10 @@ UnicodeString RegexPattern::pattern() const {
//
//---------------------------------------------------------------------
UText *RegexPattern::patternText(UErrorCode &status) const {
- if (U_FAILURE(status)) {return NULL;}
+ if (U_FAILURE(status)) {return nullptr;}
status = U_ZERO_ERROR;
- if (fPattern != NULL) {
+ if (fPattern != nullptr) {
return fPattern;
} else {
RegexStaticSets::initGlobals(&status);
@@ -850,7 +850,7 @@ void RegexPattern::dumpPattern() const {
printf(" None\n");
} else {
int32_t pos = UHASH_FIRST;
- const UHashElement *el = NULL;
+ const UHashElement *el = nullptr;
while ((el = uhash_nextElement(fNamedCaptureMap, &pos))) {
const UnicodeString *name = (const UnicodeString *)el->key.pointer;
int32_t number = el->value.integer;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/rulebasedcollator.cpp b/Build/source/libs/icu/icu-src/source/i18n/rulebasedcollator.cpp
index a240295b679..cf4cfc87f2a 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/rulebasedcollator.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/rulebasedcollator.cpp
@@ -32,6 +32,7 @@
#include "unicode/utf8.h"
#include "unicode/uversion.h"
#include "bocsu.h"
+#include "bytesinkutil.h"
#include "charstr.h"
#include "cmemory.h"
#include "collation.h"
@@ -50,6 +51,7 @@
#include "ucol_imp.h"
#include "uhash.h"
#include "uitercollationiterator.h"
+#include "ulocimp.h"
#include "ustr_imp.h"
#include "utf16collationiterator.h"
#include "utf8collationiterator.h"
@@ -74,7 +76,7 @@ FixedSortKeyByteSink::~FixedSortKeyByteSink() {}
void
FixedSortKeyByteSink::AppendBeyondCapacity(const char *bytes, int32_t /*n*/, int32_t length) {
- // buffer_ != NULL && bytes != NULL && n > 0 && appended_ > capacity_
+ // buffer_ != nullptr && bytes != nullptr && n > 0 && appended_ > capacity_
// Fill the buffer completely.
int32_t available = capacity_ - length;
if (available > 0) {
@@ -108,7 +110,7 @@ CollationKeyByteSink::~CollationKeyByteSink() {}
void
CollationKeyByteSink::AppendBeyondCapacity(const char *bytes, int32_t n, int32_t length) {
- // buffer_ != NULL && bytes != NULL && n > 0 && appended_ > capacity_
+ // buffer_ != nullptr && bytes != nullptr && n > 0 && appended_ > capacity_
if (Resize(n, length)) {
uprv_memcpy(buffer_ + length, bytes, n);
}
@@ -116,7 +118,7 @@ CollationKeyByteSink::AppendBeyondCapacity(const char *bytes, int32_t n, int32_t
UBool
CollationKeyByteSink::Resize(int32_t appendCapacity, int32_t length) {
- if (buffer_ == NULL) {
+ if (buffer_ == nullptr) {
return false; // allocation failed before already
}
int32_t newCapacity = 2 * capacity_;
@@ -128,7 +130,7 @@ CollationKeyByteSink::Resize(int32_t appendCapacity, int32_t length) {
newCapacity = 200;
}
uint8_t *newBuffer = key_.reallocate(newCapacity, length);
- if (newBuffer == NULL) {
+ if (newBuffer == nullptr) {
SetNotOk();
return false;
}
@@ -152,15 +154,15 @@ RuleBasedCollator::RuleBasedCollator(const RuleBasedCollator &other)
RuleBasedCollator::RuleBasedCollator(const uint8_t *bin, int32_t length,
const RuleBasedCollator *base, UErrorCode &errorCode)
- : data(NULL),
- settings(NULL),
- tailoring(NULL),
- cacheEntry(NULL),
+ : data(nullptr),
+ settings(nullptr),
+ tailoring(nullptr),
+ cacheEntry(nullptr),
validLocale(""),
explicitlySetAttributes(0),
actualLocaleIsSameAsValid(false) {
if(U_FAILURE(errorCode)) { return; }
- if(bin == NULL || length == 0 || base == NULL) {
+ if(bin == nullptr || length == 0 || base == nullptr) {
errorCode = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
@@ -204,9 +206,9 @@ RuleBasedCollator::adoptTailoring(CollationTailoring *t, UErrorCode &errorCode)
t->deleteIfZeroRefCount();
return;
}
- U_ASSERT(settings == NULL && data == NULL && tailoring == NULL && cacheEntry == NULL);
+ U_ASSERT(settings == nullptr && data == nullptr && tailoring == nullptr && cacheEntry == nullptr);
cacheEntry = new CollationCacheEntry(t->actualLocale, t);
- if(cacheEntry == NULL) {
+ if(cacheEntry == nullptr) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
t->deleteIfZeroRefCount();
return;
@@ -246,8 +248,8 @@ RuleBasedCollator::operator==(const Collator& other) const {
const RuleBasedCollator &o = static_cast<const RuleBasedCollator &>(other);
if(*settings != *o.settings) { return false; }
if(data == o.data) { return true; }
- UBool thisIsRoot = data->base == NULL;
- UBool otherIsRoot = o.data->base == NULL;
+ UBool thisIsRoot = data->base == nullptr;
+ UBool otherIsRoot = o.data->base == nullptr;
U_ASSERT(!thisIsRoot || !otherIsRoot); // otherwise their data pointers should be ==
if(thisIsRoot != otherIsRoot) { return false; }
if((thisIsRoot || !tailoring->rules.isEmpty()) &&
@@ -274,7 +276,7 @@ RuleBasedCollator::operator==(const Collator& other) const {
int32_t
RuleBasedCollator::hashCode() const {
int32_t h = settings->hashCode();
- if(data->base == NULL) { return h; } // root collator
+ if(data->base == nullptr) { return h; } // root collator
// Do not rely on the rule string, see comments in operator==().
UErrorCode errorCode = U_ZERO_ERROR;
LocalPointer<UnicodeSet> set(getTailoredSet(errorCode));
@@ -321,7 +323,7 @@ RuleBasedCollator::getLocale(ULocDataLocaleType type, UErrorCode& errorCode) con
const char *
RuleBasedCollator::internalGetLocaleID(ULocDataLocaleType type, UErrorCode &errorCode) const {
if(U_FAILURE(errorCode)) {
- return NULL;
+ return nullptr;
}
const Locale *result;
switch(type) {
@@ -334,9 +336,9 @@ RuleBasedCollator::internalGetLocaleID(ULocDataLocaleType type, UErrorCode &erro
case ULOC_REQUESTED_LOCALE:
default:
errorCode = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
- if(result->isBogus()) { return NULL; }
+ if(result->isBogus()) { return nullptr; }
const char *id = result->getName();
return id[0] == 0 ? "root" : id;
}
@@ -366,17 +368,17 @@ RuleBasedCollator::getVersion(UVersionInfo version) const {
UnicodeSet *
RuleBasedCollator::getTailoredSet(UErrorCode &errorCode) const {
- if(U_FAILURE(errorCode)) { return NULL; }
+ if(U_FAILURE(errorCode)) { return nullptr; }
UnicodeSet *tailored = new UnicodeSet();
- if(tailored == NULL) {
+ if(tailored == nullptr) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
- if(data->base != NULL) {
+ if(data->base != nullptr) {
TailoredSet(tailored).forData(data, errorCode);
if(U_FAILURE(errorCode)) {
delete tailored;
- return NULL;
+ return nullptr;
}
}
return tailored;
@@ -387,19 +389,19 @@ RuleBasedCollator::internalGetContractionsAndExpansions(
UnicodeSet *contractions, UnicodeSet *expansions,
UBool addPrefixes, UErrorCode &errorCode) const {
if(U_FAILURE(errorCode)) { return; }
- if(contractions != NULL) {
+ if(contractions != nullptr) {
contractions->clear();
}
- if(expansions != NULL) {
+ if(expansions != nullptr) {
expansions->clear();
}
- ContractionsAndExpansions(contractions, expansions, NULL, addPrefixes).forData(data, errorCode);
+ ContractionsAndExpansions(contractions, expansions, nullptr, addPrefixes).forData(data, errorCode);
}
void
RuleBasedCollator::internalAddContractions(UChar32 c, UnicodeSet &set, UErrorCode &errorCode) const {
if(U_FAILURE(errorCode)) { return; }
- ContractionsAndExpansions(&set, NULL, NULL, false).forCodePoint(data, c, errorCode);
+ ContractionsAndExpansions(&set, nullptr, nullptr, false).forCodePoint(data, c, errorCode);
}
const CollationSettings &
@@ -457,7 +459,7 @@ RuleBasedCollator::setAttribute(UColAttribute attr, UColAttributeValue value,
}
}
CollationSettings *ownedSettings = SharedObject::copyOnWrite(settings);
- if(ownedSettings == NULL) {
+ if(ownedSettings == nullptr) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -532,7 +534,7 @@ RuleBasedCollator::setMaxVariable(UColReorderCode group, UErrorCode &errorCode)
}
}
CollationSettings *ownedSettings = SharedObject::copyOnWrite(settings);
- if(ownedSettings == NULL) {
+ if(ownedSettings == nullptr) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
return *this;
}
@@ -566,9 +568,9 @@ RuleBasedCollator::getVariableTop(UErrorCode & /*errorCode*/) const {
}
uint32_t
-RuleBasedCollator::setVariableTop(const UChar *varTop, int32_t len, UErrorCode &errorCode) {
+RuleBasedCollator::setVariableTop(const char16_t *varTop, int32_t len, UErrorCode &errorCode) {
if(U_FAILURE(errorCode)) { return 0; }
- if(varTop == NULL && len !=0) {
+ if(varTop == nullptr && len !=0) {
errorCode = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -617,7 +619,7 @@ RuleBasedCollator::setVariableTop(uint32_t varTop, UErrorCode &errorCode) {
varTop = v;
if(varTop != settings->variableTop) {
CollationSettings *ownedSettings = SharedObject::copyOnWrite(settings);
- if(ownedSettings == NULL) {
+ if(ownedSettings == nullptr) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -639,7 +641,7 @@ int32_t
RuleBasedCollator::getReorderCodes(int32_t *dest, int32_t capacity,
UErrorCode &errorCode) const {
if(U_FAILURE(errorCode)) { return 0; }
- if(capacity < 0 || (dest == NULL && capacity > 0)) {
+ if(capacity < 0 || (dest == nullptr && capacity > 0)) {
errorCode = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -657,7 +659,7 @@ void
RuleBasedCollator::setReorderCodes(const int32_t *reorderCodes, int32_t length,
UErrorCode &errorCode) {
if(U_FAILURE(errorCode)) { return; }
- if(length < 0 || (reorderCodes == NULL && length > 0)) {
+ if(length < 0 || (reorderCodes == nullptr && length > 0)) {
errorCode = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
@@ -672,7 +674,7 @@ RuleBasedCollator::setReorderCodes(const int32_t *reorderCodes, int32_t length,
if(length == 1 && reorderCodes[0] == UCOL_REORDER_CODE_DEFAULT) {
if(settings != &defaultSettings) {
CollationSettings *ownedSettings = SharedObject::copyOnWrite(settings);
- if(ownedSettings == NULL) {
+ if(ownedSettings == nullptr) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -682,7 +684,7 @@ RuleBasedCollator::setReorderCodes(const int32_t *reorderCodes, int32_t length,
return;
}
CollationSettings *ownedSettings = SharedObject::copyOnWrite(settings);
- if(ownedSettings == NULL) {
+ if(ownedSettings == nullptr) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -722,11 +724,11 @@ RuleBasedCollator::compare(const UnicodeString &left, const UnicodeString &right
}
UCollationResult
-RuleBasedCollator::compare(const UChar *left, int32_t leftLength,
- const UChar *right, int32_t rightLength,
+RuleBasedCollator::compare(const char16_t *left, int32_t leftLength,
+ const char16_t *right, int32_t rightLength,
UErrorCode &errorCode) const {
if(U_FAILURE(errorCode)) { return UCOL_EQUAL; }
- if((left == NULL && leftLength != 0) || (right == NULL && rightLength != 0)) {
+ if((left == nullptr && leftLength != 0) || (right == nullptr && rightLength != 0)) {
errorCode = U_ILLEGAL_ARGUMENT_ERROR;
return UCOL_EQUAL;
}
@@ -746,7 +748,7 @@ RuleBasedCollator::compareUTF8(const StringPiece &left, const StringPiece &right
if(U_FAILURE(errorCode)) { return UCOL_EQUAL; }
const uint8_t *leftBytes = reinterpret_cast<const uint8_t *>(left.data());
const uint8_t *rightBytes = reinterpret_cast<const uint8_t *>(right.data());
- if((leftBytes == NULL && !left.empty()) || (rightBytes == NULL && !right.empty())) {
+ if((leftBytes == nullptr && !left.empty()) || (rightBytes == nullptr && !right.empty())) {
errorCode = U_ILLEGAL_ARGUMENT_ERROR;
return UCOL_EQUAL;
}
@@ -758,7 +760,7 @@ RuleBasedCollator::internalCompareUTF8(const char *left, int32_t leftLength,
const char *right, int32_t rightLength,
UErrorCode &errorCode) const {
if(U_FAILURE(errorCode)) { return UCOL_EQUAL; }
- if((left == NULL && leftLength != 0) || (right == NULL && rightLength != 0)) {
+ if((left == nullptr && leftLength != 0) || (right == nullptr && rightLength != 0)) {
errorCode = U_ILLEGAL_ARGUMENT_ERROR;
return UCOL_EQUAL;
}
@@ -809,7 +811,7 @@ public:
UChar32 nextDecomposedCodePoint(const Normalizer2Impl &nfcImpl, UChar32 c) {
if(index >= 0) { return c; }
decomp = nfcImpl.getDecomposition(c, buffer, length);
- if(decomp == NULL) { return c; }
+ if(decomp == nullptr) { return c; }
index = 0;
U16_NEXT_UNSAFE(decomp, index, c);
return c;
@@ -821,24 +823,24 @@ protected:
*/
virtual UChar32 nextRawCodePoint() = 0;
private:
- const UChar *decomp;
- UChar buffer[4];
+ const char16_t *decomp;
+ char16_t buffer[4];
int32_t index;
int32_t length;
};
class UTF16NFDIterator : public NFDIterator {
public:
- UTF16NFDIterator(const UChar *text, const UChar *textLimit) : s(text), limit(textLimit) {}
+ UTF16NFDIterator(const char16_t *text, const char16_t *textLimit) : s(text), limit(textLimit) {}
protected:
virtual UChar32 nextRawCodePoint() override {
if(s == limit) { return U_SENTINEL; }
UChar32 c = *s++;
- if(limit == NULL && c == 0) {
- s = NULL;
+ if(limit == nullptr && c == 0) {
+ s = nullptr;
return U_SENTINEL;
}
- UChar trail;
+ char16_t trail;
if(U16_IS_LEAD(c) && s != limit && U16_IS_TRAIL(trail = *s)) {
++s;
c = U16_GET_SUPPLEMENTARY(c, trail);
@@ -846,18 +848,18 @@ protected:
return c;
}
- const UChar *s;
- const UChar *limit;
+ const char16_t *s;
+ const char16_t *limit;
};
class FCDUTF16NFDIterator : public UTF16NFDIterator {
public:
- FCDUTF16NFDIterator(const Normalizer2Impl &nfcImpl, const UChar *text, const UChar *textLimit)
- : UTF16NFDIterator(NULL, NULL) {
+ FCDUTF16NFDIterator(const Normalizer2Impl &nfcImpl, const char16_t *text, const char16_t *textLimit)
+ : UTF16NFDIterator(nullptr, nullptr) {
UErrorCode errorCode = U_ZERO_ERROR;
- const UChar *spanLimit = nfcImpl.makeFCD(text, textLimit, NULL, errorCode);
+ const char16_t *spanLimit = nfcImpl.makeFCD(text, textLimit, nullptr, errorCode);
if(U_FAILURE(errorCode)) { return; }
- if(spanLimit == textLimit || (textLimit == NULL && *spanLimit == 0)) {
+ if(spanLimit == textLimit || (textLimit == nullptr && *spanLimit == 0)) {
s = text;
limit = spanLimit;
} else {
@@ -966,8 +968,8 @@ UCollationResult compareNFDIter(const Normalizer2Impl &nfcImpl,
} // namespace
UCollationResult
-RuleBasedCollator::doCompare(const UChar *left, int32_t leftLength,
- const UChar *right, int32_t rightLength,
+RuleBasedCollator::doCompare(const char16_t *left, int32_t leftLength,
+ const char16_t *right, int32_t rightLength,
UErrorCode &errorCode) const {
// U_FAILURE(errorCode) checked by caller.
if(left == right && leftLength == rightLength) {
@@ -975,13 +977,13 @@ RuleBasedCollator::doCompare(const UChar *left, int32_t leftLength,
}
// Identical-prefix test.
- const UChar *leftLimit;
- const UChar *rightLimit;
+ const char16_t *leftLimit;
+ const char16_t *rightLimit;
int32_t equalPrefixLength = 0;
if(leftLength < 0) {
- leftLimit = NULL;
- rightLimit = NULL;
- UChar c;
+ leftLimit = nullptr;
+ rightLimit = nullptr;
+ char16_t c;
while((c = left[equalPrefixLength]) == right[equalPrefixLength]) {
if(c == 0) { return UCOL_EQUAL; }
++equalPrefixLength;
@@ -1283,12 +1285,12 @@ RuleBasedCollator::getCollationKey(const UnicodeString &s, CollationKey &key,
}
CollationKey &
-RuleBasedCollator::getCollationKey(const UChar *s, int32_t length, CollationKey& key,
+RuleBasedCollator::getCollationKey(const char16_t *s, int32_t length, CollationKey& key,
UErrorCode &errorCode) const {
if(U_FAILURE(errorCode)) {
return key.setToBogus();
}
- if(s == NULL && length != 0) {
+ if(s == nullptr && length != 0) {
errorCode = U_ILLEGAL_ARGUMENT_ERROR;
return key.setToBogus();
}
@@ -1312,13 +1314,13 @@ RuleBasedCollator::getSortKey(const UnicodeString &s,
}
int32_t
-RuleBasedCollator::getSortKey(const UChar *s, int32_t length,
+RuleBasedCollator::getSortKey(const char16_t *s, int32_t length,
uint8_t *dest, int32_t capacity) const {
- if((s == NULL && length != 0) || capacity < 0 || (dest == NULL && capacity > 0)) {
+ if((s == nullptr && length != 0) || capacity < 0 || (dest == nullptr && capacity > 0)) {
return 0;
}
uint8_t noDest[1] = { 0 };
- if(dest == NULL) {
+ if(dest == nullptr) {
// Distinguish pure preflighting from an allocation error.
dest = noDest;
capacity = 0;
@@ -1330,10 +1332,10 @@ RuleBasedCollator::getSortKey(const UChar *s, int32_t length,
}
void
-RuleBasedCollator::writeSortKey(const UChar *s, int32_t length,
+RuleBasedCollator::writeSortKey(const char16_t *s, int32_t length,
SortKeyByteSink &sink, UErrorCode &errorCode) const {
if(U_FAILURE(errorCode)) { return; }
- const UChar *limit = (length >= 0) ? s + length : NULL;
+ const char16_t *limit = (length >= 0) ? s + length : nullptr;
UBool numeric = settings->isNumeric();
CollationKeys::LevelCallback callback;
if(settings->dontCheckFCD()) {
@@ -1355,10 +1357,10 @@ RuleBasedCollator::writeSortKey(const UChar *s, int32_t length,
}
void
-RuleBasedCollator::writeIdenticalLevel(const UChar *s, const UChar *limit,
+RuleBasedCollator::writeIdenticalLevel(const char16_t *s, const char16_t *limit,
SortKeyByteSink &sink, UErrorCode &errorCode) const {
// NFD quick check
- const UChar *nfdQCYesLimit = data->nfcImpl.decompose(s, limit, NULL, errorCode);
+ const char16_t *nfdQCYesLimit = data->nfcImpl.decompose(s, limit, nullptr, errorCode);
if(U_FAILURE(errorCode)) { return; }
sink.Append(Collation::LEVEL_SEPARATOR_BYTE);
UChar32 prev = 0;
@@ -1367,7 +1369,7 @@ RuleBasedCollator::writeIdenticalLevel(const UChar *s, const UChar *limit,
}
// Is there non-NFD text?
int32_t destLengthEstimate;
- if(limit != NULL) {
+ if(limit != nullptr) {
if(nfdQCYesLimit == limit) { return; }
destLengthEstimate = (int32_t)(limit - nfdQCYesLimit);
} else {
@@ -1424,7 +1426,7 @@ int32_t
RuleBasedCollator::internalNextSortKeyPart(UCharIterator *iter, uint32_t state[2],
uint8_t *dest, int32_t count, UErrorCode &errorCode) const {
if(U_FAILURE(errorCode)) { return 0; }
- if(iter == NULL || state == NULL || count < 0 || (count > 0 && dest == NULL)) {
+ if(iter == nullptr || state == nullptr || count < 0 || (count > 0 && dest == nullptr)) {
errorCode = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -1467,9 +1469,9 @@ RuleBasedCollator::internalNextSortKeyPart(UCharIterator *iter, uint32_t state[2
for(;;) {
UChar32 c = iter->next(iter);
if(c < 0) { break; }
- s.append((UChar)c);
+ s.append((char16_t)c);
}
- const UChar *sArray = s.getBuffer();
+ const char16_t *sArray = s.getBuffer();
writeIdenticalLevel(sArray, sArray + s.length(), sink, errorCode);
if(U_FAILURE(errorCode)) { return 0; }
if(sink.NumberOfBytesAppended() > count) {
@@ -1492,8 +1494,8 @@ void
RuleBasedCollator::internalGetCEs(const UnicodeString &str, UVector64 &ces,
UErrorCode &errorCode) const {
if(U_FAILURE(errorCode)) { return; }
- const UChar *s = str.getBuffer();
- const UChar *limit = s + str.length();
+ const char16_t *s = str.getBuffer();
+ const char16_t *limit = s + str.length();
UBool numeric = settings->isNumeric();
if(settings->dontCheckFCD()) {
UTF16CollationIterator iter(data, numeric, s, s, limit);
@@ -1542,18 +1544,18 @@ RuleBasedCollator::internalGetShortDefinitionString(const char *locale,
char *buffer, int32_t capacity,
UErrorCode &errorCode) const {
if(U_FAILURE(errorCode)) { return 0; }
- if(buffer == NULL ? capacity != 0 : capacity < 0) {
+ if(buffer == nullptr ? capacity != 0 : capacity < 0) {
errorCode = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
- if(locale == NULL) {
+ if(locale == nullptr) {
locale = internalGetLocaleID(ULOC_VALID_LOCALE, errorCode);
}
char resultLocale[ULOC_FULLNAME_CAPACITY + 1];
int32_t length = ucol_getFunctionalEquivalent(resultLocale, ULOC_FULLNAME_CAPACITY,
"collation", locale,
- NULL, &errorCode);
+ nullptr, &errorCode);
if(U_FAILURE(errorCode)) { return 0; }
resultLocale[length] = 0;
@@ -1579,8 +1581,12 @@ RuleBasedCollator::internalGetShortDefinitionString(const char *locale,
appendAttribute(result, 'F', getAttribute(UCOL_FRENCH_COLLATION, errorCode), errorCode);
}
// Note: UCOL_HIRAGANA_QUATERNARY_MODE is deprecated and never changes away from default.
- length = uloc_getKeywordValue(resultLocale, "collation", subtag, UPRV_LENGTHOF(subtag), &errorCode);
- appendSubtag(result, 'K', subtag, length, errorCode);
+ {
+ CharString collation;
+ CharStringByteSink sink(&collation);
+ ulocimp_getKeywordValue(resultLocale, "collation", sink, &errorCode);
+ appendSubtag(result, 'K', collation.data(), collation.length(), errorCode);
+ }
length = uloc_getLanguage(resultLocale, subtag, UPRV_LENGTHOF(subtag), &errorCode);
if (length == 0) {
appendSubtag(result, 'L', "root", 4, errorCode);
@@ -1623,11 +1629,11 @@ RuleBasedCollator::initMaxExpansions(UErrorCode &errorCode) const {
CollationElementIterator *
RuleBasedCollator::createCollationElementIterator(const UnicodeString& source) const {
UErrorCode errorCode = U_ZERO_ERROR;
- if(!initMaxExpansions(errorCode)) { return NULL; }
+ if(!initMaxExpansions(errorCode)) { return nullptr; }
CollationElementIterator *cei = new CollationElementIterator(source, this, errorCode);
if(U_FAILURE(errorCode)) {
delete cei;
- return NULL;
+ return nullptr;
}
return cei;
}
@@ -1635,11 +1641,11 @@ RuleBasedCollator::createCollationElementIterator(const UnicodeString& source) c
CollationElementIterator *
RuleBasedCollator::createCollationElementIterator(const CharacterIterator& source) const {
UErrorCode errorCode = U_ZERO_ERROR;
- if(!initMaxExpansions(errorCode)) { return NULL; }
+ if(!initMaxExpansions(errorCode)) { return nullptr; }
CollationElementIterator *cei = new CollationElementIterator(source, this, errorCode);
if(U_FAILURE(errorCode)) {
delete cei;
- return NULL;
+ return nullptr;
}
return cei;
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/scientificnumberformatter.cpp b/Build/source/libs/icu/icu-src/source/i18n/scientificnumberformatter.cpp
index 99b990708ab..8f9c19c384d 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/scientificnumberformatter.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/scientificnumberformatter.cpp
@@ -20,7 +20,7 @@
U_NAMESPACE_BEGIN
-static const UChar kSuperscriptDigits[] = {
+static const char16_t kSuperscriptDigits[] = {
0x2070,
0xB9,
0xB2,
@@ -32,8 +32,8 @@ static const UChar kSuperscriptDigits[] = {
0x2078,
0x2079};
-static const UChar kSuperscriptPlusSign = 0x207A;
-static const UChar kSuperscriptMinusSign = 0x207B;
+static const char16_t kSuperscriptPlusSign = 0x207A;
+static const char16_t kSuperscriptMinusSign = 0x207B;
static UBool copyAsSuperscript(
const UnicodeString &s,
@@ -101,22 +101,22 @@ ScientificNumberFormatter *ScientificNumberFormatter::createInstance(
LocalPointer<DecimalFormat> fmt(fmtToAdopt);
LocalPointer<Style> style(styleToAdopt);
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
ScientificNumberFormatter *result =
new ScientificNumberFormatter(
fmt.getAlias(),
style.getAlias(),
status);
- if (result == NULL) {
+ if (result == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
fmt.orphan();
style.orphan();
if (U_FAILURE(status)) {
delete result;
- return NULL;
+ return nullptr;
}
return result;
}
@@ -246,12 +246,12 @@ ScientificNumberFormatter::ScientificNumberFormatter(
if (U_FAILURE(status)) {
return;
}
- if (fDecimalFormat == NULL || fStyle == NULL) {
+ if (fDecimalFormat == nullptr || fStyle == nullptr) {
status = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
const DecimalFormatSymbols *sym = fDecimalFormat->getDecimalFormatSymbols();
- if (sym == NULL) {
+ if (sym == nullptr) {
status = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
@@ -262,8 +262,8 @@ ScientificNumberFormatter::ScientificNumberFormatter(
const ScientificNumberFormatter &other)
: UObject(other),
fPreExponent(other.fPreExponent),
- fDecimalFormat(NULL),
- fStyle(NULL) {
+ fDecimalFormat(nullptr),
+ fStyle(nullptr) {
fDecimalFormat = static_cast<DecimalFormat *>(
other.fDecimalFormat->clone());
fStyle = other.fStyle->clone();
diff --git a/Build/source/libs/icu/icu-src/source/i18n/scriptset.cpp b/Build/source/libs/icu/icu-src/source/i18n/scriptset.cpp
index 236bf9d37f1..736a85cf8c1 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/scriptset.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/scriptset.cpp
@@ -198,7 +198,7 @@ UnicodeString &ScriptSet::displayScripts(UnicodeString &dest) const {
UBool firstTime = true;
for (int32_t i = nextSetBit(0); i >= 0; i = nextSetBit(i + 1)) {
if (!firstTime) {
- dest.append((UChar)0x20);
+ dest.append((char16_t)0x20);
}
firstTime = false;
const char *scriptName = uscript_getShortName((UScriptCode(i)));
@@ -253,7 +253,7 @@ void ScriptSet::setScriptExtensions(UChar32 codePoint, UErrorCode& status) {
codePoint, scripts.getAlias(), scripts.getCapacity(), &internalStatus);
if (internalStatus == U_BUFFER_OVERFLOW_ERROR) {
// Need to allocate more space
- if (scripts.resize(script_count) == NULL) {
+ if (scripts.resize(script_count) == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/search.cpp b/Build/source/libs/icu/icu-src/source/i18n/search.cpp
index 56d9b744098..ec5028ca81b 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/search.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/search.cpp
@@ -40,7 +40,7 @@ SearchIterator::SearchIterator(const SearchIterator &other)
SearchIterator::~SearchIterator()
{
- if (m_search_ != NULL) {
+ if (m_search_ != nullptr) {
uprv_free(m_search_);
}
}
@@ -81,10 +81,9 @@ USearchAttributeValue SearchIterator::getAttribute(
{
switch (attribute) {
case USEARCH_OVERLAP :
- return (m_search_->isOverlap == true ? USEARCH_ON : USEARCH_OFF);
+ return (m_search_->isOverlap ? USEARCH_ON : USEARCH_OFF);
case USEARCH_CANONICAL_MATCH :
- return (m_search_->isCanonicalMatch == true ? USEARCH_ON :
- USEARCH_OFF);
+ return (m_search_->isCanonicalMatch ? USEARCH_ON : USEARCH_OFF);
case USEARCH_ELEMENT_COMPARISON :
{
int16_t value = m_search_->elementComparisonType;
@@ -126,7 +125,7 @@ void SearchIterator::setBreakIterator(BreakIterator *breakiter,
{
if (U_SUCCESS(status)) {
#if 0
- m_search_->breakIter = NULL;
+ m_search_->breakIter = nullptr;
// the c++ breakiterator may not make use of ubreakiterator.
// so we'll have to keep track of it ourselves.
#else
@@ -144,7 +143,7 @@ void SearchIterator::setBreakIterator(BreakIterator *breakiter,
}
}
-const BreakIterator * SearchIterator::getBreakIterator(void) const
+const BreakIterator * SearchIterator::getBreakIterator() const
{
return m_breakiterator_;
}
@@ -171,7 +170,7 @@ void SearchIterator::setText(CharacterIterator &text, UErrorCode &status)
}
}
-const UnicodeString & SearchIterator::getText(void) const
+const UnicodeString & SearchIterator::getText() const
{
return m_text_;
}
@@ -191,8 +190,9 @@ bool SearchIterator::operator==(const SearchIterator &that) const
m_search_->matchedLength == that.m_search_->matchedLength &&
m_search_->textLength == that.m_search_->textLength &&
getOffset() == that.getOffset() &&
+ (m_search_->textLength == 0 ||
(uprv_memcmp(m_search_->text, that.m_search_->text,
- m_search_->textLength * sizeof(UChar)) == 0));
+ m_search_->textLength * sizeof(char16_t)) == 0)));
}
// public methods ----------------------------------------------------
@@ -242,7 +242,7 @@ int32_t SearchIterator::next(UErrorCode &status)
int32_t matchindex = m_search_->matchedIndex;
int32_t matchlength = m_search_->matchedLength;
m_search_->reset = false;
- if (m_search_->isForwardSearching == true) {
+ if (m_search_->isForwardSearching) {
int32_t textlength = m_search_->textLength;
if (offset == textlength || matchindex == textlength ||
(matchindex != USEARCH_DONE &&
@@ -295,7 +295,7 @@ int32_t SearchIterator::previous(UErrorCode &status)
}
int32_t matchindex = m_search_->matchedIndex;
- if (m_search_->isForwardSearching == true) {
+ if (m_search_->isForwardSearching) {
// switching direction.
// if matchedIndex == USEARCH_DONE, it means that either a
// setOffset has been called or that next ran off the text
@@ -345,7 +345,7 @@ void SearchIterator::reset()
SearchIterator::SearchIterator()
{
m_search_ = (USearch *)uprv_malloc(sizeof(USearch));
- m_search_->breakIter = NULL;
+ m_search_->breakIter = nullptr;
m_search_->isOverlap = false;
m_search_->isCanonicalMatch = false;
m_search_->elementComparisonType = 0;
@@ -353,9 +353,9 @@ SearchIterator::SearchIterator()
m_search_->reset = true;
m_search_->matchedIndex = USEARCH_DONE;
m_search_->matchedLength = 0;
- m_search_->text = NULL;
+ m_search_->text = nullptr;
m_search_->textLength = 0;
- m_breakiterator_ = NULL;
+ m_breakiterator_ = nullptr;
}
SearchIterator::SearchIterator(const UnicodeString &text,
@@ -364,7 +364,7 @@ SearchIterator::SearchIterator(const UnicodeString &text,
m_text_(text)
{
m_search_ = (USearch *)uprv_malloc(sizeof(USearch));
- m_search_->breakIter = NULL;
+ m_search_->breakIter = nullptr;
m_search_->isOverlap = false;
m_search_->isCanonicalMatch = false;
m_search_->elementComparisonType = 0;
@@ -381,7 +381,7 @@ SearchIterator::SearchIterator(CharacterIterator &text,
m_breakiterator_(breakiter)
{
m_search_ = (USearch *)uprv_malloc(sizeof(USearch));
- m_search_->breakIter = NULL;
+ m_search_->breakIter = nullptr;
m_search_->isOverlap = false;
m_search_->isCanonicalMatch = false;
m_search_->elementComparisonType = 0;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/selfmt.cpp b/Build/source/libs/icu/icu-src/source/i18n/selfmt.cpp
index 9928d284c9f..abe39bcb635 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/selfmt.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/selfmt.cpp
@@ -41,7 +41,7 @@ U_NAMESPACE_BEGIN
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(SelectFormat)
-static const UChar SELECT_KEYWORD_OTHER[] = {LOW_O, LOW_T, LOW_H, LOW_E, LOW_R, 0};
+static const char16_t SELECT_KEYWORD_OTHER[] = {LOW_O, LOW_T, LOW_H, LOW_E, LOW_R, 0};
SelectFormat::SelectFormat(const UnicodeString& pat,
UErrorCode& status) : msgPattern(status) {
@@ -61,7 +61,7 @@ SelectFormat::applyPattern(const UnicodeString& newPattern, UErrorCode& status)
return;
}
- msgPattern.parseSelectStyle(newPattern, NULL, status);
+ msgPattern.parseSelectStyle(newPattern, nullptr, status);
if (U_FAILURE(status)) {
msgPattern.clear();
}
@@ -172,7 +172,7 @@ SelectFormat::operator==(const Format& other) const {
if (!Format::operator==(other)) {
return false;
}
- const SelectFormat& o = (const SelectFormat&)other;
+ const SelectFormat& o = static_cast<const SelectFormat&>(other);
return msgPattern == o.msgPattern;
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/selfmtimpl.h b/Build/source/libs/icu/icu-src/source/i18n/selfmtimpl.h
index a36d1a5c347..6cf875efdee 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/selfmtimpl.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/selfmtimpl.h
@@ -27,62 +27,62 @@
U_NAMESPACE_BEGIN
-#define DOT ((UChar)0x002E)
-#define SINGLE_QUOTE ((UChar)0x0027)
-#define SLASH ((UChar)0x002F)
-#define BACKSLASH ((UChar)0x005C)
-#define SPACE ((UChar)0x0020)
-#define TAB ((UChar)0x0009)
-#define QUOTATION_MARK ((UChar)0x0022)
-#define ASTERISK ((UChar)0x002A)
-#define COMMA ((UChar)0x002C)
-#define HYPHEN ((UChar)0x002D)
-#define U_ZERO ((UChar)0x0030)
-#define U_ONE ((UChar)0x0031)
-#define U_TWO ((UChar)0x0032)
-#define U_THREE ((UChar)0x0033)
-#define U_FOUR ((UChar)0x0034)
-#define U_FIVE ((UChar)0x0035)
-#define U_SIX ((UChar)0x0036)
-#define U_SEVEN ((UChar)0x0037)
-#define U_EIGHT ((UChar)0x0038)
-#define U_NINE ((UChar)0x0039)
-#define COLON ((UChar)0x003A)
-#define SEMI_COLON ((UChar)0x003B)
-#define CAP_A ((UChar)0x0041)
-#define CAP_B ((UChar)0x0042)
-#define CAP_R ((UChar)0x0052)
-#define CAP_Z ((UChar)0x005A)
-#define LOWLINE ((UChar)0x005F)
-#define LEFTBRACE ((UChar)0x007B)
-#define RIGHTBRACE ((UChar)0x007D)
+#define DOT ((char16_t)0x002E)
+#define SINGLE_QUOTE ((char16_t)0x0027)
+#define SLASH ((char16_t)0x002F)
+#define BACKSLASH ((char16_t)0x005C)
+#define SPACE ((char16_t)0x0020)
+#define TAB ((char16_t)0x0009)
+#define QUOTATION_MARK ((char16_t)0x0022)
+#define ASTERISK ((char16_t)0x002A)
+#define COMMA ((char16_t)0x002C)
+#define HYPHEN ((char16_t)0x002D)
+#define U_ZERO ((char16_t)0x0030)
+#define U_ONE ((char16_t)0x0031)
+#define U_TWO ((char16_t)0x0032)
+#define U_THREE ((char16_t)0x0033)
+#define U_FOUR ((char16_t)0x0034)
+#define U_FIVE ((char16_t)0x0035)
+#define U_SIX ((char16_t)0x0036)
+#define U_SEVEN ((char16_t)0x0037)
+#define U_EIGHT ((char16_t)0x0038)
+#define U_NINE ((char16_t)0x0039)
+#define COLON ((char16_t)0x003A)
+#define SEMI_COLON ((char16_t)0x003B)
+#define CAP_A ((char16_t)0x0041)
+#define CAP_B ((char16_t)0x0042)
+#define CAP_R ((char16_t)0x0052)
+#define CAP_Z ((char16_t)0x005A)
+#define LOWLINE ((char16_t)0x005F)
+#define LEFTBRACE ((char16_t)0x007B)
+#define RIGHTBRACE ((char16_t)0x007D)
-#define LOW_A ((UChar)0x0061)
-#define LOW_B ((UChar)0x0062)
-#define LOW_C ((UChar)0x0063)
-#define LOW_D ((UChar)0x0064)
-#define LOW_E ((UChar)0x0065)
-#define LOW_F ((UChar)0x0066)
-#define LOW_G ((UChar)0x0067)
-#define LOW_H ((UChar)0x0068)
-#define LOW_I ((UChar)0x0069)
-#define LOW_J ((UChar)0x006a)
-#define LOW_K ((UChar)0x006B)
-#define LOW_L ((UChar)0x006C)
-#define LOW_M ((UChar)0x006D)
-#define LOW_N ((UChar)0x006E)
-#define LOW_O ((UChar)0x006F)
-#define LOW_P ((UChar)0x0070)
-#define LOW_Q ((UChar)0x0071)
-#define LOW_R ((UChar)0x0072)
-#define LOW_S ((UChar)0x0073)
-#define LOW_T ((UChar)0x0074)
-#define LOW_U ((UChar)0x0075)
-#define LOW_V ((UChar)0x0076)
-#define LOW_W ((UChar)0x0077)
-#define LOW_X ((UChar)0x0078)
-#define LOW_Y ((UChar)0x0079)
-#define LOW_Z ((UChar)0x007A)
+#define LOW_A ((char16_t)0x0061)
+#define LOW_B ((char16_t)0x0062)
+#define LOW_C ((char16_t)0x0063)
+#define LOW_D ((char16_t)0x0064)
+#define LOW_E ((char16_t)0x0065)
+#define LOW_F ((char16_t)0x0066)
+#define LOW_G ((char16_t)0x0067)
+#define LOW_H ((char16_t)0x0068)
+#define LOW_I ((char16_t)0x0069)
+#define LOW_J ((char16_t)0x006a)
+#define LOW_K ((char16_t)0x006B)
+#define LOW_L ((char16_t)0x006C)
+#define LOW_M ((char16_t)0x006D)
+#define LOW_N ((char16_t)0x006E)
+#define LOW_O ((char16_t)0x006F)
+#define LOW_P ((char16_t)0x0070)
+#define LOW_Q ((char16_t)0x0071)
+#define LOW_R ((char16_t)0x0072)
+#define LOW_S ((char16_t)0x0073)
+#define LOW_T ((char16_t)0x0074)
+#define LOW_U ((char16_t)0x0075)
+#define LOW_V ((char16_t)0x0076)
+#define LOW_W ((char16_t)0x0077)
+#define LOW_X ((char16_t)0x0078)
+#define LOW_Y ((char16_t)0x0079)
+#define LOW_Z ((char16_t)0x007A)
class UnicodeSet;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/simpletz.cpp b/Build/source/libs/icu/icu-src/source/i18n/simpletz.cpp
index 77403e48074..8b21152f52f 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/simpletz.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/simpletz.cpp
@@ -53,8 +53,8 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(SimpleTimeZone)
// Gregorian calendar started.
const int8_t SimpleTimeZone::STATICMONTHLENGTH[] = {31,29,31,30,31,30,31,31,30,31,30,31};
-static const UChar DST_STR[] = {0x0028,0x0044,0x0053,0x0054,0x0029,0}; // "(DST)"
-static const UChar STD_STR[] = {0x0028,0x0053,0x0054,0x0044,0x0029,0}; // "(STD)"
+static const char16_t DST_STR[] = {0x0028,0x0044,0x0053,0x0054,0x0029,0}; // "(DST)"
+static const char16_t STD_STR[] = {0x0028,0x0053,0x0054,0x0044,0x0029,0}; // "(STD)"
// *****************************************************************************
@@ -725,7 +725,7 @@ UBool SimpleTimeZone::inDaylightTime(UDate date, UErrorCode& status) const
// and provided only for Java compatibility as of 8/6/97 [LIU].
if (U_FAILURE(status)) return false;
GregorianCalendar *gc = new GregorianCalendar(*this, status);
- /* test for NULL */
+ /* test for nullptr */
if (gc == 0) {
status = U_MEMORY_ALLOCATION_ERROR;
return false;
@@ -991,14 +991,14 @@ SimpleTimeZone::getNextTransition(UDate base, UBool inclusive, TimeZoneTransitio
UBool dstAvail = dstRule->getNextStart(base, stdRule->getRawOffset(), stdRule->getDSTSavings(), inclusive, dstDate);
if (stdAvail && (!dstAvail || stdDate < dstDate)) {
result.setTime(stdDate);
- result.setFrom((const TimeZoneRule&)*dstRule);
- result.setTo((const TimeZoneRule&)*stdRule);
+ result.setFrom(*dstRule);
+ result.setTo(*stdRule);
return true;
}
if (dstAvail && (!stdAvail || dstDate < stdDate)) {
result.setTime(dstDate);
- result.setFrom((const TimeZoneRule&)*stdRule);
- result.setTo((const TimeZoneRule&)*dstRule);
+ result.setFrom(*stdRule);
+ result.setTo(*dstRule);
return true;
}
return false;
@@ -1025,40 +1025,40 @@ SimpleTimeZone::getPreviousTransition(UDate base, UBool inclusive, TimeZoneTrans
UBool dstAvail = dstRule->getPreviousStart(base, stdRule->getRawOffset(), stdRule->getDSTSavings(), inclusive, dstDate);
if (stdAvail && (!dstAvail || stdDate > dstDate)) {
result.setTime(stdDate);
- result.setFrom((const TimeZoneRule&)*dstRule);
- result.setTo((const TimeZoneRule&)*stdRule);
+ result.setFrom(*dstRule);
+ result.setTo(*stdRule);
return true;
}
if (dstAvail && (!stdAvail || dstDate > stdDate)) {
result.setTime(dstDate);
- result.setFrom((const TimeZoneRule&)*stdRule);
- result.setTo((const TimeZoneRule&)*dstRule);
+ result.setFrom(*stdRule);
+ result.setTo(*dstRule);
return true;
}
return false;
}
void
-SimpleTimeZone::clearTransitionRules(void) {
- initialRule = NULL;
- firstTransition = NULL;
- stdRule = NULL;
- dstRule = NULL;
+SimpleTimeZone::clearTransitionRules() {
+ initialRule = nullptr;
+ firstTransition = nullptr;
+ stdRule = nullptr;
+ dstRule = nullptr;
transitionRulesInitialized = false;
}
void
-SimpleTimeZone::deleteTransitionRules(void) {
- if (initialRule != NULL) {
+SimpleTimeZone::deleteTransitionRules() {
+ if (initialRule != nullptr) {
delete initialRule;
}
- if (firstTransition != NULL) {
+ if (firstTransition != nullptr) {
delete firstTransition;
}
- if (stdRule != NULL) {
+ if (stdRule != nullptr) {
delete stdRule;
}
- if (dstRule != NULL) {
+ if (dstRule != nullptr) {
delete dstRule;
}
clearTransitionRules();
@@ -1131,7 +1131,7 @@ SimpleTimeZone::initTransitionRules(UErrorCode& status) {
return;
}
// Check for Null pointer
- if (dtRule == NULL) {
+ if (dtRule == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -1140,7 +1140,7 @@ SimpleTimeZone::initTransitionRules(UErrorCode& status) {
dtRule, startYear, AnnualTimeZoneRule::MAX_YEAR);
// Check for Null pointer
- if (dstRule == NULL) {
+ if (dstRule == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
deleteTransitionRules();
return;
@@ -1168,7 +1168,7 @@ SimpleTimeZone::initTransitionRules(UErrorCode& status) {
}
// Check for Null pointer
- if (dtRule == NULL) {
+ if (dtRule == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
deleteTransitionRules();
return;
@@ -1178,7 +1178,7 @@ SimpleTimeZone::initTransitionRules(UErrorCode& status) {
dtRule, startYear, AnnualTimeZoneRule::MAX_YEAR);
//Check for Null pointer
- if (stdRule == NULL) {
+ if (stdRule == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
deleteTransitionRules();
return;
@@ -1190,7 +1190,7 @@ SimpleTimeZone::initTransitionRules(UErrorCode& status) {
// Create a TimeZoneRule for initial time
if (firstStdStart < firstDstStart) {
initialRule = new InitialTimeZoneRule(tzid+UnicodeString(DST_STR), getRawOffset(), dstRule->getDSTSavings());
- if (initialRule == NULL) {
+ if (initialRule == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
deleteTransitionRules();
return;
@@ -1198,14 +1198,14 @@ SimpleTimeZone::initTransitionRules(UErrorCode& status) {
firstTransition = new TimeZoneTransition(firstStdStart, *initialRule, *stdRule);
} else {
initialRule = new InitialTimeZoneRule(tzid+UnicodeString(STD_STR), getRawOffset(), 0);
- if (initialRule == NULL) {
+ if (initialRule == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
deleteTransitionRules();
return;
}
firstTransition = new TimeZoneTransition(firstDstStart, *initialRule, *dstRule);
}
- if (firstTransition == NULL) {
+ if (firstTransition == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
deleteTransitionRules();
return;
@@ -1215,7 +1215,7 @@ SimpleTimeZone::initTransitionRules(UErrorCode& status) {
// Create a TimeZoneRule for initial time
initialRule = new InitialTimeZoneRule(tzid, getRawOffset(), 0);
// Check for null pointer.
- if (initialRule == NULL) {
+ if (initialRule == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
deleteTransitionRules();
return;
@@ -1244,7 +1244,7 @@ SimpleTimeZone::getTimeZoneRules(const InitialTimeZoneRule*& initial,
}
initial = initialRule;
int32_t cnt = 0;
- if (stdRule != NULL) {
+ if (stdRule != nullptr) {
if (cnt < trscount) {
trsrules[cnt++] = stdRule;
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/smpdtfmt.cpp b/Build/source/libs/icu/icu-src/source/i18n/smpdtfmt.cpp
index 72ba0c0bfc7..628f7febe04 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/smpdtfmt.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/smpdtfmt.cpp
@@ -45,6 +45,7 @@
#include "unicode/ustring.h"
#include "unicode/basictz.h"
#include "unicode/simpleformatter.h"
+#include "unicode/simplenumberformatter.h"
#include "unicode/simpletz.h"
#include "unicode/rbtz.h"
#include "unicode/tzfmt.h"
@@ -94,16 +95,16 @@ U_NAMESPACE_BEGIN
// GMT-minutes. For instance, in France the time zone is GMT+60.
// Also accepted are GMT+H:MM or GMT-H:MM.
// Currently not being used
-//static const UChar gGmt[] = {0x0047, 0x004D, 0x0054, 0x0000}; // "GMT"
-//static const UChar gGmtPlus[] = {0x0047, 0x004D, 0x0054, 0x002B, 0x0000}; // "GMT+"
-//static const UChar gGmtMinus[] = {0x0047, 0x004D, 0x0054, 0x002D, 0x0000}; // "GMT-"
-//static const UChar gDefGmtPat[] = {0x0047, 0x004D, 0x0054, 0x007B, 0x0030, 0x007D, 0x0000}; /* GMT{0} */
-//static const UChar gDefGmtNegHmsPat[] = {0x002D, 0x0048, 0x0048, 0x003A, 0x006D, 0x006D, 0x003A, 0x0073, 0x0073, 0x0000}; /* -HH:mm:ss */
-//static const UChar gDefGmtNegHmPat[] = {0x002D, 0x0048, 0x0048, 0x003A, 0x006D, 0x006D, 0x0000}; /* -HH:mm */
-//static const UChar gDefGmtPosHmsPat[] = {0x002B, 0x0048, 0x0048, 0x003A, 0x006D, 0x006D, 0x003A, 0x0073, 0x0073, 0x0000}; /* +HH:mm:ss */
-//static const UChar gDefGmtPosHmPat[] = {0x002B, 0x0048, 0x0048, 0x003A, 0x006D, 0x006D, 0x0000}; /* +HH:mm */
-//static const UChar gUt[] = {0x0055, 0x0054, 0x0000}; // "UT"
-//static const UChar gUtc[] = {0x0055, 0x0054, 0x0043, 0x0000}; // "UT"
+//static const char16_t gGmt[] = {0x0047, 0x004D, 0x0054, 0x0000}; // "GMT"
+//static const char16_t gGmtPlus[] = {0x0047, 0x004D, 0x0054, 0x002B, 0x0000}; // "GMT+"
+//static const char16_t gGmtMinus[] = {0x0047, 0x004D, 0x0054, 0x002D, 0x0000}; // "GMT-"
+//static const char16_t gDefGmtPat[] = {0x0047, 0x004D, 0x0054, 0x007B, 0x0030, 0x007D, 0x0000}; /* GMT{0} */
+//static const char16_t gDefGmtNegHmsPat[] = {0x002D, 0x0048, 0x0048, 0x003A, 0x006D, 0x006D, 0x003A, 0x0073, 0x0073, 0x0000}; /* -HH:mm:ss */
+//static const char16_t gDefGmtNegHmPat[] = {0x002D, 0x0048, 0x0048, 0x003A, 0x006D, 0x006D, 0x0000}; /* -HH:mm */
+//static const char16_t gDefGmtPosHmsPat[] = {0x002B, 0x0048, 0x0048, 0x003A, 0x006D, 0x006D, 0x003A, 0x0073, 0x0073, 0x0000}; /* +HH:mm:ss */
+//static const char16_t gDefGmtPosHmPat[] = {0x002B, 0x0048, 0x0048, 0x003A, 0x006D, 0x006D, 0x0000}; /* +HH:mm */
+//static const char16_t gUt[] = {0x0055, 0x0054, 0x0000}; // "UT"
+//static const char16_t gUtc[] = {0x0055, 0x0054, 0x0043, 0x0000}; // "UT"
typedef enum GmtPatSize {
kGmtLen = 3,
@@ -159,7 +160,7 @@ static const int8_t kTimeFieldsCount = 10;
// This is a pattern-of-last-resort used when we can't load a usable pattern out
// of a resource.
-static const UChar gDefaultPattern[] =
+static const char16_t gDefaultPattern[] =
{
0x79, 0x4D, 0x4D, 0x64, 0x64, 0x20, 0x68, 0x68, 0x3A, 0x6D, 0x6D, 0x20, 0x61, 0
}; /* "yMMdd hh:mm a" */
@@ -167,13 +168,13 @@ static const UChar gDefaultPattern[] =
// 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).
-static const UChar SUPPRESS_NEGATIVE_PREFIX[] = {0xAB00, 0};
+static const char16_t SUPPRESS_NEGATIVE_PREFIX[] = {0xAB00, 0};
/**
* These are the tags we expect to see in normal resource bundle files associated
* with a locale.
*/
-static const UChar QUOTE = 0x27; // Single quote
+static const char16_t QUOTE = 0x27; // Single quote
/*
* The field range check bias for each UDateFormatField.
@@ -244,7 +245,7 @@ static UMutex LOCK;
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(SimpleDateFormat)
SimpleDateFormat::NSOverride::~NSOverride() {
- if (snf != NULL) {
+ if (snf != nullptr) {
snf->removeRef();
}
}
@@ -265,7 +266,7 @@ void SimpleDateFormat::NSOverride::free() {
static void fixNumberFormatForDates(NumberFormat &nf) {
nf.setGroupingUsed(false);
DecimalFormat* decfmt = dynamic_cast<DecimalFormat*>(&nf);
- if (decfmt != NULL) {
+ if (decfmt != nullptr) {
decfmt->setDecimalSeparatorAlwaysShown(false);
}
nf.setParseIntegerOnly(true);
@@ -276,7 +277,7 @@ static const SharedNumberFormat *createSharedNumberFormat(
NumberFormat *nfToAdopt) {
fixNumberFormatForDates(*nfToAdopt);
const SharedNumberFormat *result = new SharedNumberFormat(nfToAdopt);
- if (result == NULL) {
+ if (result == nullptr) {
delete nfToAdopt;
}
return result;
@@ -286,10 +287,10 @@ static const SharedNumberFormat *createSharedNumberFormat(
const Locale &loc, UErrorCode &status) {
NumberFormat *nf = NumberFormat::createInstance(loc, status);
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
const SharedNumberFormat *result = createSharedNumberFormat(nf);
- if (result == NULL) {
+ if (result == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
}
return result;
@@ -298,11 +299,11 @@ static const SharedNumberFormat *createSharedNumberFormat(
static const SharedNumberFormat **allocSharedNumberFormatters() {
const SharedNumberFormat **result = (const SharedNumberFormat**)
uprv_malloc(UDAT_FIELD_COUNT * sizeof(const SharedNumberFormat*));
- if (result == NULL) {
- return NULL;
+ if (result == nullptr) {
+ return nullptr;
}
for (int32_t i = 0; i < UDAT_FIELD_COUNT; ++i) {
- result[i] = NULL;
+ result[i] = nullptr;
}
return result;
}
@@ -316,8 +317,8 @@ static void freeSharedNumberFormatters(const SharedNumberFormat ** list) {
const NumberFormat *SimpleDateFormat::getNumberFormatByIndex(
UDateFormatField index) const {
- if (fSharedNumberFormatters == NULL ||
- fSharedNumberFormatters[index] == NULL) {
+ if (fSharedNumberFormatters == nullptr ||
+ fSharedNumberFormatters[index] == nullptr) {
return fNumberFormat;
}
return &(**fSharedNumberFormatters[index]);
@@ -334,7 +335,7 @@ SimpleDateFormat::~SimpleDateFormat()
if (fTimeZoneFormat) {
delete fTimeZoneFormat;
}
- freeFastNumberFormatters();
+ delete fSimpleNumberFormatter;
#if !UCONFIG_NO_BREAK_ITERATION
delete fCapitalizationBrkIter;
@@ -344,11 +345,7 @@ SimpleDateFormat::~SimpleDateFormat()
//----------------------------------------------------------------------
SimpleDateFormat::SimpleDateFormat(UErrorCode& status)
- : fLocale(Locale::getDefault()),
- fSymbols(NULL),
- fTimeZoneFormat(NULL),
- fSharedNumberFormatters(NULL),
- fCapitalizationBrkIter(NULL)
+ : fLocale(Locale::getDefault())
{
initializeBooleanAttributes();
construct(kShort, (EStyle) (kShort + kDateOffset), fLocale, status);
@@ -360,16 +357,12 @@ SimpleDateFormat::SimpleDateFormat(UErrorCode& status)
SimpleDateFormat::SimpleDateFormat(const UnicodeString& pattern,
UErrorCode &status)
: fPattern(pattern),
- fLocale(Locale::getDefault()),
- fSymbols(NULL),
- fTimeZoneFormat(NULL),
- fSharedNumberFormatters(NULL),
- fCapitalizationBrkIter(NULL)
+ fLocale(Locale::getDefault())
{
fDateOverride.setToBogus();
fTimeOverride.setToBogus();
initializeBooleanAttributes();
- initializeCalendar(NULL,fLocale,status);
+ initializeCalendar(nullptr,fLocale,status);
fSymbols = DateFormatSymbols::createForLocale(fLocale, status);
initialize(fLocale, status);
initializeDefaultCentury();
@@ -381,16 +374,12 @@ SimpleDateFormat::SimpleDateFormat(const UnicodeString& pattern,
const UnicodeString& override,
UErrorCode &status)
: fPattern(pattern),
- fLocale(Locale::getDefault()),
- fSymbols(NULL),
- fTimeZoneFormat(NULL),
- fSharedNumberFormatters(NULL),
- fCapitalizationBrkIter(NULL)
+ fLocale(Locale::getDefault())
{
fDateOverride.setTo(override);
fTimeOverride.setToBogus();
initializeBooleanAttributes();
- initializeCalendar(NULL,fLocale,status);
+ initializeCalendar(nullptr,fLocale,status);
fSymbols = DateFormatSymbols::createForLocale(fLocale, status);
initialize(fLocale, status);
initializeDefaultCentury();
@@ -405,17 +394,14 @@ SimpleDateFormat::SimpleDateFormat(const UnicodeString& pattern,
const Locale& locale,
UErrorCode& status)
: fPattern(pattern),
- fLocale(locale),
- fTimeZoneFormat(NULL),
- fSharedNumberFormatters(NULL),
- fCapitalizationBrkIter(NULL)
+ fLocale(locale)
{
fDateOverride.setToBogus();
fTimeOverride.setToBogus();
initializeBooleanAttributes();
- initializeCalendar(NULL,fLocale,status);
+ initializeCalendar(nullptr,fLocale,status);
fSymbols = DateFormatSymbols::createForLocale(fLocale, status);
initialize(fLocale, status);
initializeDefaultCentury();
@@ -428,17 +414,14 @@ SimpleDateFormat::SimpleDateFormat(const UnicodeString& pattern,
const Locale& locale,
UErrorCode& status)
: fPattern(pattern),
- fLocale(locale),
- fTimeZoneFormat(NULL),
- fSharedNumberFormatters(NULL),
- fCapitalizationBrkIter(NULL)
+ fLocale(locale)
{
fDateOverride.setTo(override);
fTimeOverride.setToBogus();
initializeBooleanAttributes();
- initializeCalendar(NULL,fLocale,status);
+ initializeCalendar(nullptr,fLocale,status);
fSymbols = DateFormatSymbols::createForLocale(fLocale, status);
initialize(fLocale, status);
initializeDefaultCentury();
@@ -454,17 +437,14 @@ SimpleDateFormat::SimpleDateFormat(const UnicodeString& pattern,
UErrorCode& status)
: fPattern(pattern),
fLocale(Locale::getDefault()),
- fSymbols(symbolsToAdopt),
- fTimeZoneFormat(NULL),
- fSharedNumberFormatters(NULL),
- fCapitalizationBrkIter(NULL)
+ fSymbols(symbolsToAdopt)
{
fDateOverride.setToBogus();
fTimeOverride.setToBogus();
initializeBooleanAttributes();
- initializeCalendar(NULL,fLocale,status);
+ initializeCalendar(nullptr,fLocale,status);
initialize(fLocale, status);
initializeDefaultCentury();
}
@@ -476,17 +456,14 @@ SimpleDateFormat::SimpleDateFormat(const UnicodeString& pattern,
UErrorCode& status)
: fPattern(pattern),
fLocale(Locale::getDefault()),
- fSymbols(new DateFormatSymbols(symbols)),
- fTimeZoneFormat(NULL),
- fSharedNumberFormatters(NULL),
- fCapitalizationBrkIter(NULL)
+ fSymbols(new DateFormatSymbols(symbols))
{
fDateOverride.setToBogus();
fTimeOverride.setToBogus();
initializeBooleanAttributes();
- initializeCalendar(NULL, fLocale, status);
+ initializeCalendar(nullptr, fLocale, status);
initialize(fLocale, status);
initializeDefaultCentury();
}
@@ -498,11 +475,7 @@ SimpleDateFormat::SimpleDateFormat(EStyle timeStyle,
EStyle dateStyle,
const Locale& locale,
UErrorCode& status)
-: fLocale(locale),
- fSymbols(NULL),
- fTimeZoneFormat(NULL),
- fSharedNumberFormatters(NULL),
- fCapitalizationBrkIter(NULL)
+: fLocale(locale)
{
initializeBooleanAttributes();
construct(timeStyle, dateStyle, fLocale, status);
@@ -521,15 +494,11 @@ SimpleDateFormat::SimpleDateFormat(EStyle timeStyle,
SimpleDateFormat::SimpleDateFormat(const Locale& locale,
UErrorCode& status)
: fPattern(gDefaultPattern),
- fLocale(locale),
- fSymbols(NULL),
- fTimeZoneFormat(NULL),
- fSharedNumberFormatters(NULL),
- fCapitalizationBrkIter(NULL)
+ fLocale(locale)
{
if (U_FAILURE(status)) return;
initializeBooleanAttributes();
- initializeCalendar(NULL, fLocale, status);
+ initializeCalendar(nullptr, fLocale, status);
fSymbols = DateFormatSymbols::createForLocale(fLocale, status);
if (U_FAILURE(status))
{
@@ -537,7 +506,7 @@ SimpleDateFormat::SimpleDateFormat(const Locale& locale,
delete fSymbols;
// This constructor doesn't fail; it uses last resort data
fSymbols = new DateFormatSymbols(status);
- /* test for NULL */
+ /* test for nullptr */
if (fSymbols == 0) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
@@ -557,11 +526,7 @@ SimpleDateFormat::SimpleDateFormat(const Locale& locale,
SimpleDateFormat::SimpleDateFormat(const SimpleDateFormat& other)
: DateFormat(other),
- fLocale(other.fLocale),
- fSymbols(NULL),
- fTimeZoneFormat(NULL),
- fSharedNumberFormatters(NULL),
- fCapitalizationBrkIter(NULL)
+ fLocale(other.fLocale)
{
initializeBooleanAttributes();
*this = other;
@@ -574,12 +539,18 @@ SimpleDateFormat& SimpleDateFormat::operator=(const SimpleDateFormat& other)
if (this == &other) {
return *this;
}
+
+ // fSimpleNumberFormatter references fNumberFormatter, delete it
+ // before we call the = operator which may invalidate fNumberFormatter
+ delete fSimpleNumberFormatter;
+ fSimpleNumberFormatter = nullptr;
+
DateFormat::operator=(other);
fDateOverride = other.fDateOverride;
fTimeOverride = other.fTimeOverride;
delete fSymbols;
- fSymbols = NULL;
+ fSymbols = nullptr;
if (other.fSymbols)
fSymbols = new DateFormatSymbols(*other.fSymbols);
@@ -595,7 +566,7 @@ SimpleDateFormat& SimpleDateFormat::operator=(const SimpleDateFormat& other)
fLocale = other.fLocale;
// TimeZoneFormat can now be set independently via setter.
- // If it is NULL, it will be lazily initialized from locale.
+ // If it is nullptr, it will be lazily initialized from locale.
delete fTimeZoneFormat;
fTimeZoneFormat = nullptr;
TimeZoneFormat *otherTZFormat;
@@ -621,16 +592,16 @@ SimpleDateFormat& SimpleDateFormat::operator=(const SimpleDateFormat& other)
}
#if !UCONFIG_NO_BREAK_ITERATION
- if (other.fCapitalizationBrkIter != NULL) {
+ if (other.fCapitalizationBrkIter != nullptr) {
fCapitalizationBrkIter = (other.fCapitalizationBrkIter)->clone();
}
#endif
- if (fSharedNumberFormatters != NULL) {
+ if (fSharedNumberFormatters != nullptr) {
freeSharedNumberFormatters(fSharedNumberFormatters);
- fSharedNumberFormatters = NULL;
+ fSharedNumberFormatters = nullptr;
}
- if (other.fSharedNumberFormatters != NULL) {
+ if (other.fSharedNumberFormatters != nullptr) {
fSharedNumberFormatters = allocSharedNumberFormatters();
if (fSharedNumberFormatters) {
for (int32_t i = 0; i < UDAT_FIELD_COUNT; ++i) {
@@ -642,9 +613,10 @@ SimpleDateFormat& SimpleDateFormat::operator=(const SimpleDateFormat& other)
}
UErrorCode localStatus = U_ZERO_ERROR;
- freeFastNumberFormatters();
- initFastNumberFormatters(localStatus);
-
+ // SimpleNumberFormatter does not have a copy constructor. Furthermore,
+ // it references data from an internal field, fNumberFormatter,
+ // so we must rematerialize that reference after copying over the number formatter.
+ initSimpleNumberFormatter(localStatus);
return *this;
}
@@ -667,8 +639,8 @@ SimpleDateFormat::operator==(const Format& other) const
// DateFormat::operator== guarantees following cast is safe
SimpleDateFormat* that = (SimpleDateFormat*)&other;
return (fPattern == that->fPattern &&
- fSymbols != NULL && // Check for pathological object
- that->fSymbols != NULL && // Check for pathological object
+ fSymbols != nullptr && // Check for pathological object
+ that->fSymbols != nullptr && // Check for pathological object
*fSymbols == *that->fSymbols &&
fHaveDefaultCentury == that->fHaveDefaultCentury &&
fDefaultCenturyStart == that->fDefaultCenturyStart);
@@ -677,7 +649,7 @@ SimpleDateFormat::operator==(const Format& other) const
}
//----------------------------------------------------------------------
-static const UChar* timeSkeletons[4] = {
+static const char16_t* timeSkeletons[4] = {
u"jmmsszzzz", // kFull
u"jmmssz", // kLong
u"jmmss", // kMedium
@@ -693,22 +665,22 @@ void SimpleDateFormat::construct(EStyle timeStyle,
if (U_FAILURE(status)) return;
// We will need the calendar to know what type of symbols to load.
- initializeCalendar(NULL, locale, status);
+ initializeCalendar(nullptr, locale, status);
if (U_FAILURE(status)) return;
// Load date time patterns directly from resources.
- const char* cType = fCalendar ? fCalendar->getType() : NULL;
- LocalUResourceBundlePointer bundle(ures_open(NULL, locale.getBaseName(), &status));
+ const char* cType = fCalendar ? fCalendar->getType() : nullptr;
+ LocalUResourceBundlePointer bundle(ures_open(nullptr, locale.getBaseName(), &status));
if (U_FAILURE(status)) return;
UBool cTypeIsGregorian = true;
LocalUResourceBundlePointer dateTimePatterns;
- if (cType != NULL && uprv_strcmp(cType, "gregorian") != 0) {
+ if (cType != nullptr && uprv_strcmp(cType, "gregorian") != 0) {
CharString resourcePath("calendar/", status);
resourcePath.append(cType, status).append("/DateTimePatterns", status);
dateTimePatterns.adoptInstead(
ures_getByKeyWithFallback(bundle.getAlias(), resourcePath.data(),
- (UResourceBundle*)NULL, &status));
+ (UResourceBundle*)nullptr, &status));
cTypeIsGregorian = false;
}
@@ -718,7 +690,7 @@ void SimpleDateFormat::construct(EStyle timeStyle,
dateTimePatterns.adoptInstead(
ures_getByKeyWithFallback(bundle.getAlias(),
"calendar/gregorian/DateTimePatterns",
- (UResourceBundle*)NULL, &status));
+ (UResourceBundle*)nullptr, &status));
}
if (U_FAILURE(status)) return;
@@ -736,32 +708,41 @@ void SimpleDateFormat::construct(EStyle timeStyle,
// create a symbols object from the locale
fSymbols = DateFormatSymbols::createForLocale(locale, status);
if (U_FAILURE(status)) return;
- /* test for NULL */
+ /* test for nullptr */
if (fSymbols == 0) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
- const UChar *resStr,*ovrStr;
+ const char16_t *resStr,*ovrStr;
int32_t resStrLen,ovrStrLen = 0;
fDateOverride.setToBogus();
fTimeOverride.setToBogus();
UnicodeString timePattern;
if (timeStyle >= kFull && timeStyle <= kShort) {
+ bool hasRgOrHcSubtag = false;
+ // also use DTPG if the locale has the "rg" or "hc" ("hours") subtag-- even if the overriding region
+ // or hour cycle is the same as the one we get by default, we go through the DateTimePatternGenerator
+ UErrorCode dummyErr1 = U_ZERO_ERROR, dummyErr2 = U_ZERO_ERROR;
+ if (locale.getKeywordValue("rg", nullptr, 0, dummyErr1) > 0 || locale.getKeywordValue("hours", nullptr, 0, dummyErr2) > 0) {
+ hasRgOrHcSubtag = true;
+ }
+
const char* baseLocID = locale.getBaseName();
if (baseLocID[0]!=0 && uprv_strcmp(baseLocID,"und")!=0) {
UErrorCode useStatus = U_ZERO_ERROR;
Locale baseLoc(baseLocID);
Locale validLoc(getLocale(ULOC_VALID_LOCALE, useStatus));
- if (U_SUCCESS(useStatus) && validLoc!=baseLoc) {
- bool useDTPG = false;
+ if (hasRgOrHcSubtag || (U_SUCCESS(useStatus) && validLoc!=baseLoc)) {
+ bool useDTPG = hasRgOrHcSubtag;
const char* baseReg = baseLoc.getCountry(); // empty string if no region
if ((baseReg[0]!=0 && uprv_strncmp(baseReg,validLoc.getCountry(),ULOC_COUNTRY_CAPACITY)!=0)
|| uprv_strncmp(baseLoc.getLanguage(),validLoc.getLanguage(),ULOC_LANG_CAPACITY)!=0) {
// use DTPG if
// * baseLoc has a region and validLoc does not have the same one (or has none), OR
// * validLoc has a different language code than baseLoc
+ // * the original locale has the rg or hc subtag
useDTPG = true;
}
if (useDTPG) {
@@ -792,7 +773,7 @@ void SimpleDateFormat::construct(EStyle timeStyle,
UnicodeString tempus1(timePattern);
if (tempus1.length() == 0) {
currentBundle.adoptInstead(
- ures_getByIndex(dateTimePatterns.getAlias(), (int32_t)timeStyle, NULL, &status));
+ ures_getByIndex(dateTimePatterns.getAlias(), (int32_t)timeStyle, nullptr, &status));
if (U_FAILURE(status)) {
status = U_INVALID_FORMAT_ERROR;
return;
@@ -818,7 +799,7 @@ void SimpleDateFormat::construct(EStyle timeStyle,
}
currentBundle.adoptInstead(
- ures_getByIndex(dateTimePatterns.getAlias(), (int32_t)dateStyle, NULL, &status));
+ ures_getByIndex(dateTimePatterns.getAlias(), (int32_t)dateStyle, nullptr, &status));
if (U_FAILURE(status)) {
status = U_INVALID_FORMAT_ERROR;
return;
@@ -883,7 +864,7 @@ void SimpleDateFormat::construct(EStyle timeStyle,
fPattern.setTo(timePattern);
if (fPattern.length() == 0) {
currentBundle.adoptInstead(
- ures_getByIndex(dateTimePatterns.getAlias(), (int32_t)timeStyle, NULL, &status));
+ ures_getByIndex(dateTimePatterns.getAlias(), (int32_t)timeStyle, nullptr, &status));
if (U_FAILURE(status)) {
status = U_INVALID_FORMAT_ERROR;
return;
@@ -909,7 +890,7 @@ void SimpleDateFormat::construct(EStyle timeStyle,
}
else if (dateStyle != kNone) {
currentBundle.adoptInstead(
- ures_getByIndex(dateTimePatterns.getAlias(), (int32_t)dateStyle, NULL, &status));
+ ures_getByIndex(dateTimePatterns.getAlias(), (int32_t)dateStyle, nullptr, &status));
if (U_FAILURE(status)) {
status = U_INVALID_FORMAT_ERROR;
return;
@@ -973,13 +954,13 @@ SimpleDateFormat::initialize(const Locale& locale,
// We don't need to check that the row count is >= 1, since all 2d arrays have at
// least one row
fNumberFormat = NumberFormat::createInstance(locale, status);
- if (fNumberFormat != NULL && U_SUCCESS(status))
+ if (fNumberFormat != nullptr && U_SUCCESS(status))
{
fixNumberFormatForDates(*fNumberFormat);
//fNumberFormat->setLenient(true); // Java uses a custom DateNumberFormat to format/parse
initNumberFormatters(locale, status);
- initFastNumberFormatters(status);
+ initSimpleNumberFormatter(status);
}
else if (U_SUCCESS(status))
@@ -1069,13 +1050,13 @@ SimpleDateFormat::_format(Calendar& cal, UnicodeString& appendTo,
return appendTo;
}
Calendar* workCal = &cal;
- Calendar* calClone = NULL;
+ Calendar* calClone = nullptr;
if (&cal != fCalendar && uprv_strcmp(cal.getType(), fCalendar->getType()) != 0) {
// Different calendar type
// We use the time and time zone from the input calendar, but
// do not use the input calendar for field calculation.
calClone = fCalendar->clone();
- if (calClone != NULL) {
+ if (calClone != nullptr) {
UDate t = cal.getTime(status);
calClone->setTime(t, status);
calClone->setTimeZone(cal.getTimeZone());
@@ -1087,14 +1068,14 @@ SimpleDateFormat::_format(Calendar& cal, UnicodeString& appendTo,
}
UBool inQuote = false;
- UChar prevCh = 0;
+ char16_t prevCh = 0;
int32_t count = 0;
int32_t fieldNum = 0;
UDisplayContext capitalizationContext = getContext(UDISPCTX_TYPE_CAPITALIZATION, status);
// loop through the pattern string character by character
for (int32_t i = 0; i < fPattern.length() && U_SUCCESS(status); ++i) {
- UChar ch = fPattern[i];
+ char16_t ch = fPattern[i];
// Use subFormat() to format a repeated pattern character
// when a different pattern or non-pattern character is seen
@@ -1107,7 +1088,7 @@ SimpleDateFormat::_format(Calendar& cal, UnicodeString& appendTo,
// Consecutive single quotes are a single quote literal,
// either outside of quotes or between quotes
if ((i+1) < fPattern.length() && fPattern[i+1] == QUOTE) {
- appendTo += (UChar)QUOTE;
+ appendTo += (char16_t)QUOTE;
++i;
} else {
inQuote = ! inQuote;
@@ -1131,7 +1112,7 @@ SimpleDateFormat::_format(Calendar& cal, UnicodeString& appendTo,
prevCh, handler, *workCal, status);
}
- if (calClone != NULL) {
+ if (calClone != nullptr) {
delete calClone;
}
@@ -1159,7 +1140,7 @@ SimpleDateFormat::fgCalendarFieldToLevel[] =
/*A?.*/ 40, 0, 0
};
-int32_t SimpleDateFormat::getLevelFromChar(UChar ch) {
+int32_t SimpleDateFormat::getLevelFromChar(char16_t ch) {
// Map date field LETTER into calendar field level.
// the larger the level, the smaller the field unit.
// NOTE: if new fields adds in, the table needs to update.
@@ -1189,7 +1170,7 @@ int32_t SimpleDateFormat::getLevelFromChar(UChar ch) {
return ch < UPRV_LENGTHOF(mapCharToLevel) ? mapCharToLevel[ch] : -1;
}
-UBool SimpleDateFormat::isSyntaxChar(UChar ch) {
+UBool SimpleDateFormat::isSyntaxChar(char16_t ch) {
static const UBool mapCharToIsSyntax[] = {
//
false, false, false, false, false, false, false, false,
@@ -1314,7 +1295,7 @@ _appendSymbolWithMonthPattern(UnicodeString& dst, int32_t value, const UnicodeSt
const UnicodeString* monthPattern, UErrorCode& status) {
U_ASSERT(0 <= value && value < symbolsCount);
if (0 <= value && value < symbolsCount) {
- if (monthPattern == NULL) {
+ if (monthPattern == nullptr) {
dst += symbols[value];
} else {
SimpleFormatter(*monthPattern, 1, 1, status).format(symbols[value], dst, status);
@@ -1324,18 +1305,8 @@ _appendSymbolWithMonthPattern(UnicodeString& dst, int32_t value, const UnicodeSt
//----------------------------------------------------------------------
-static number::LocalizedNumberFormatter*
-createFastFormatter(const DecimalFormat* df, int32_t minInt, int32_t maxInt, UErrorCode& status) {
- const number::LocalizedNumberFormatter* lnfBase = df->toNumberFormatter(status);
- if (U_FAILURE(status)) {
- return nullptr;
- }
- return lnfBase->integerWidth(
- number::IntegerWidth::zeroFillTo(minInt).truncateAt(maxInt)
- ).clone().orphan();
-}
-
-void SimpleDateFormat::initFastNumberFormatters(UErrorCode& status) {
+void
+SimpleDateFormat::initSimpleNumberFormatter(UErrorCode &status) {
if (U_FAILURE(status)) {
return;
}
@@ -1343,27 +1314,20 @@ void SimpleDateFormat::initFastNumberFormatters(UErrorCode& status) {
if (df == nullptr) {
return;
}
- fFastNumberFormatters[SMPDTFMT_NF_1x10] = createFastFormatter(df, 1, 10, status);
- fFastNumberFormatters[SMPDTFMT_NF_2x10] = createFastFormatter(df, 2, 10, status);
- fFastNumberFormatters[SMPDTFMT_NF_3x10] = createFastFormatter(df, 3, 10, status);
- fFastNumberFormatters[SMPDTFMT_NF_4x10] = createFastFormatter(df, 4, 10, status);
- fFastNumberFormatters[SMPDTFMT_NF_2x2] = createFastFormatter(df, 2, 2, status);
-}
-
-void SimpleDateFormat::freeFastNumberFormatters() {
- delete fFastNumberFormatters[SMPDTFMT_NF_1x10];
- delete fFastNumberFormatters[SMPDTFMT_NF_2x10];
- delete fFastNumberFormatters[SMPDTFMT_NF_3x10];
- delete fFastNumberFormatters[SMPDTFMT_NF_4x10];
- delete fFastNumberFormatters[SMPDTFMT_NF_2x2];
- fFastNumberFormatters[SMPDTFMT_NF_1x10] = nullptr;
- fFastNumberFormatters[SMPDTFMT_NF_2x10] = nullptr;
- fFastNumberFormatters[SMPDTFMT_NF_3x10] = nullptr;
- fFastNumberFormatters[SMPDTFMT_NF_4x10] = nullptr;
- fFastNumberFormatters[SMPDTFMT_NF_2x2] = nullptr;
+ const DecimalFormatSymbols* syms = df->getDecimalFormatSymbols();
+ if (syms == nullptr) {
+ return;
+ }
+ fSimpleNumberFormatter = new number::SimpleNumberFormatter(
+ number::SimpleNumberFormatter::forLocaleAndSymbolsAndGroupingStrategy(
+ fLocale, *syms, UNUM_GROUPING_OFF, status
+ )
+ );
+ if (fSimpleNumberFormatter == nullptr) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ }
}
-
void
SimpleDateFormat::initNumberFormatters(const Locale &locale,UErrorCode &status) {
if (U_FAILURE(status)) {
@@ -1373,9 +1337,9 @@ SimpleDateFormat::initNumberFormatters(const Locale &locale,UErrorCode &status)
return;
}
umtx_lock(&LOCK);
- if (fSharedNumberFormatters == NULL) {
+ if (fSharedNumberFormatters == nullptr) {
fSharedNumberFormatters = allocSharedNumberFormatters();
- if (fSharedNumberFormatters == NULL) {
+ if (fSharedNumberFormatters == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
}
}
@@ -1400,10 +1364,10 @@ SimpleDateFormat::processOverrideString(const Locale &locale, const UnicodeStrin
UnicodeString nsName;
UnicodeString ovrField;
UBool moreToProcess = true;
- NSOverride *overrideList = NULL;
+ NSOverride *overrideList = nullptr;
while (moreToProcess) {
- int32_t delimiterPosition = str.indexOf((UChar)ULOC_KEYWORD_ITEM_SEPARATOR_UNICODE,start);
+ int32_t delimiterPosition = str.indexOf((char16_t)ULOC_KEYWORD_ITEM_SEPARATOR_UNICODE,start);
if (delimiterPosition == -1) {
moreToProcess = false;
len = str.length() - start;
@@ -1411,7 +1375,7 @@ SimpleDateFormat::processOverrideString(const Locale &locale, const UnicodeStrin
len = delimiterPosition - start;
}
UnicodeString currentString(str,start,len);
- int32_t equalSignPosition = currentString.indexOf((UChar)ULOC_KEYWORD_ASSIGN_UNICODE,0);
+ int32_t equalSignPosition = currentString.indexOf((char16_t)ULOC_KEYWORD_ASSIGN_UNICODE,0);
if (equalSignPosition == -1) { // Simple override string such as "hebrew"
nsName.setTo(currentString);
ovrField.setToBogus();
@@ -1423,7 +1387,7 @@ SimpleDateFormat::processOverrideString(const Locale &locale, const UnicodeStrin
int32_t nsNameHash = nsName.hashCode();
// See if the numbering system is in the override list, if not, then add it.
NSOverride *curr = overrideList;
- const SharedNumberFormat *snf = NULL;
+ const SharedNumberFormat *snf = nullptr;
UBool found = false;
while ( curr && !found ) {
if ( curr->hash == nsNameHash ) {
@@ -1552,7 +1516,7 @@ SimpleDateFormat::subFormat(UnicodeString &appendTo,
}
currentNumberFormat = getNumberFormatByIndex(patternCharIndex);
- if (currentNumberFormat == NULL) {
+ if (currentNumberFormat == nullptr) {
status = U_INTERNAL_PROGRAM_ERROR;
return;
}
@@ -1580,7 +1544,7 @@ SimpleDateFormat::subFormat(UnicodeString &appendTo,
break;
case UDAT_YEAR_NAME_FIELD:
- if (fSymbols->fShortYearNames != NULL && value <= fSymbols->fShortYearNamesCount) {
+ if (fSymbols->fShortYearNames != nullptr && value <= fSymbols->fShortYearNamesCount) {
// the Calendar YEAR field runs 1 through 60 for cyclic years
_appendSymbol(appendTo, value - 1, fSymbols->fShortYearNames, fSymbols->fShortYearNamesCount);
break;
@@ -1621,43 +1585,43 @@ SimpleDateFormat::subFormat(UnicodeString &appendTo,
value--; // Adjust the month number down 1 in Hebrew non-leap years, i.e. Adar is 6, not 7.
}
{
- int32_t isLeapMonth = (fSymbols->fLeapMonthPatterns != NULL && fSymbols->fLeapMonthPatternsCount >= DateFormatSymbols::kMonthPatternsCount)?
+ int32_t isLeapMonth = (fSymbols->fLeapMonthPatterns != nullptr && fSymbols->fLeapMonthPatternsCount >= DateFormatSymbols::kMonthPatternsCount)?
cal.get(UCAL_IS_LEAP_MONTH, status): 0;
// should consolidate the next section by using arrays of pointers & counts for the right symbols...
if (count == 5) {
if (patternCharIndex == UDAT_MONTH_FIELD) {
_appendSymbolWithMonthPattern(appendTo, value, fSymbols->fNarrowMonths, fSymbols->fNarrowMonthsCount,
- (isLeapMonth!=0)? &(fSymbols->fLeapMonthPatterns[DateFormatSymbols::kLeapMonthPatternFormatNarrow]): NULL, status);
+ (isLeapMonth!=0)? &(fSymbols->fLeapMonthPatterns[DateFormatSymbols::kLeapMonthPatternFormatNarrow]): nullptr, status);
} else {
_appendSymbolWithMonthPattern(appendTo, value, fSymbols->fStandaloneNarrowMonths, fSymbols->fStandaloneNarrowMonthsCount,
- (isLeapMonth!=0)? &(fSymbols->fLeapMonthPatterns[DateFormatSymbols::kLeapMonthPatternStandaloneNarrow]): NULL, status);
+ (isLeapMonth!=0)? &(fSymbols->fLeapMonthPatterns[DateFormatSymbols::kLeapMonthPatternStandaloneNarrow]): nullptr, status);
}
capContextUsageType = DateFormatSymbols::kCapContextUsageMonthNarrow;
} else if (count == 4) {
if (patternCharIndex == UDAT_MONTH_FIELD) {
_appendSymbolWithMonthPattern(appendTo, value, fSymbols->fMonths, fSymbols->fMonthsCount,
- (isLeapMonth!=0)? &(fSymbols->fLeapMonthPatterns[DateFormatSymbols::kLeapMonthPatternFormatWide]): NULL, status);
+ (isLeapMonth!=0)? &(fSymbols->fLeapMonthPatterns[DateFormatSymbols::kLeapMonthPatternFormatWide]): nullptr, status);
capContextUsageType = DateFormatSymbols::kCapContextUsageMonthFormat;
} else {
_appendSymbolWithMonthPattern(appendTo, value, fSymbols->fStandaloneMonths, fSymbols->fStandaloneMonthsCount,
- (isLeapMonth!=0)? &(fSymbols->fLeapMonthPatterns[DateFormatSymbols::kLeapMonthPatternStandaloneWide]): NULL, status);
+ (isLeapMonth!=0)? &(fSymbols->fLeapMonthPatterns[DateFormatSymbols::kLeapMonthPatternStandaloneWide]): nullptr, status);
capContextUsageType = DateFormatSymbols::kCapContextUsageMonthStandalone;
}
} else if (count == 3) {
if (patternCharIndex == UDAT_MONTH_FIELD) {
_appendSymbolWithMonthPattern(appendTo, value, fSymbols->fShortMonths, fSymbols->fShortMonthsCount,
- (isLeapMonth!=0)? &(fSymbols->fLeapMonthPatterns[DateFormatSymbols::kLeapMonthPatternFormatAbbrev]): NULL, status);
+ (isLeapMonth!=0)? &(fSymbols->fLeapMonthPatterns[DateFormatSymbols::kLeapMonthPatternFormatAbbrev]): nullptr, status);
capContextUsageType = DateFormatSymbols::kCapContextUsageMonthFormat;
} else {
_appendSymbolWithMonthPattern(appendTo, value, fSymbols->fStandaloneShortMonths, fSymbols->fStandaloneShortMonthsCount,
- (isLeapMonth!=0)? &(fSymbols->fLeapMonthPatterns[DateFormatSymbols::kLeapMonthPatternStandaloneAbbrev]): NULL, status);
+ (isLeapMonth!=0)? &(fSymbols->fLeapMonthPatterns[DateFormatSymbols::kLeapMonthPatternStandaloneAbbrev]): nullptr, status);
capContextUsageType = DateFormatSymbols::kCapContextUsageMonthStandalone;
}
} else {
UnicodeString monthNumber;
zeroPaddingNumber(currentNumberFormat,monthNumber, value + 1, count, maxIntCount);
_appendSymbolWithMonthPattern(appendTo, 0, &monthNumber, 1,
- (isLeapMonth!=0)? &(fSymbols->fLeapMonthPatterns[DateFormatSymbols::kLeapMonthPatternNumeric]): NULL, status);
+ (isLeapMonth!=0)? &(fSymbols->fLeapMonthPatterns[DateFormatSymbols::kLeapMonthPatternNumeric]): nullptr, status);
}
}
break;
@@ -1795,7 +1759,7 @@ SimpleDateFormat::subFormat(UnicodeString &appendTo,
case UDAT_TIMEZONE_ISO_FIELD: // 'X'
case UDAT_TIMEZONE_ISO_LOCAL_FIELD: // 'x'
{
- UChar zsbuf[ZONE_NAME_U16_MAX];
+ char16_t zsbuf[ZONE_NAME_U16_MAX];
UnicodeString zoneString(zsbuf, 0, UPRV_LENGTHOF(zsbuf));
const TimeZone& tz = cal.getTimeZone();
UDate date = cal.getTime(status);
@@ -1934,7 +1898,7 @@ SimpleDateFormat::subFormat(UnicodeString &appendTo,
case UDAT_AM_PM_MIDNIGHT_NOON_FIELD:
{
- const UnicodeString *toAppend = NULL;
+ const UnicodeString *toAppend = nullptr;
int32_t hour = cal.get(UCAL_HOUR_OF_DAY, status);
// Note: "midnight" can be ambiguous as to whether it refers to beginning of day or end of day.
@@ -1960,10 +1924,10 @@ SimpleDateFormat::subFormat(UnicodeString &appendTo,
}
}
- // toAppend is NULL if time isn't exactly midnight or noon (as displayed).
+ // toAppend is nullptr if time isn't exactly midnight or noon (as displayed).
// toAppend is bogus if time is midnight or noon, but no localized string exists.
// In either case, fall back to am/pm.
- if (toAppend == NULL || toAppend->isBogus()) {
+ if (toAppend == nullptr || toAppend->isBogus()) {
// Reformat with identical arguments except ch, now changed to 'a'.
// We are passing a different fieldToOutput because we want to add
// 'b' to field position. This makes this fallback stable when
@@ -1986,7 +1950,7 @@ SimpleDateFormat::subFormat(UnicodeString &appendTo,
// Data doesn't conform to spec, therefore loading failed.
break;
}
- if (ruleSet == NULL) {
+ if (ruleSet == nullptr) {
// Data doesn't exist for the locale we're looking for.
// Falling back to am/pm.
// We are passing a different fieldToOutput because we want to add
@@ -2020,7 +1984,7 @@ SimpleDateFormat::subFormat(UnicodeString &appendTo,
// Rule set exists, therefore periodType can't be UNKNOWN.
// Get localized string.
U_ASSERT(periodType != DayPeriodRules::DAYPERIOD_UNKNOWN);
- UnicodeString *toAppend = NULL;
+ UnicodeString *toAppend = nullptr;
int32_t index;
// Note: "midnight" can be ambiguous as to whether it refers to beginning of day or end of day.
@@ -2043,7 +2007,7 @@ SimpleDateFormat::subFormat(UnicodeString &appendTo,
// Midnight/Noon -> General Periods -> AM/PM.
// Midnight/Noon -> General Periods.
- if ((toAppend == NULL || toAppend->isBogus()) &&
+ if ((toAppend == nullptr || toAppend->isBogus()) &&
(periodType == DayPeriodRules::DAYPERIOD_MIDNIGHT ||
periodType == DayPeriodRules::DAYPERIOD_NOON)) {
periodType = ruleSet->getDayPeriodForHour(hour);
@@ -2083,7 +2047,7 @@ SimpleDateFormat::subFormat(UnicodeString &appendTo,
}
#if !UCONFIG_NO_BREAK_ITERATION
// if first field, check to see whether we need to and are able to titlecase it
- if (fieldNum == 0 && fCapitalizationBrkIter != NULL && appendTo.length() > beginOffset &&
+ if (fieldNum == 0 && fCapitalizationBrkIter != nullptr && appendTo.length() > beginOffset &&
u_islower(appendTo.char32At(beginOffset))) {
UBool titlecase = false;
switch (capitalizationContext) {
@@ -2116,6 +2080,11 @@ SimpleDateFormat::subFormat(UnicodeString &appendTo,
//----------------------------------------------------------------------
void SimpleDateFormat::adoptNumberFormat(NumberFormat *formatToAdopt) {
+ // Null out the fast formatter, it references fNumberFormat which we're
+ // about to invalidate
+ delete fSimpleNumberFormatter;
+ fSimpleNumberFormatter = nullptr;
+
fixNumberFormatForDates(*formatToAdopt);
delete fNumberFormat;
fNumberFormat = formatToAdopt;
@@ -2124,13 +2093,12 @@ void SimpleDateFormat::adoptNumberFormat(NumberFormat *formatToAdopt) {
// (can't fail).
if (fSharedNumberFormatters) {
freeSharedNumberFormatters(fSharedNumberFormatters);
- fSharedNumberFormatters = NULL;
+ fSharedNumberFormatters = nullptr;
}
- // Also re-compute the fast formatters.
+ // Recompute fSimpleNumberFormatter if necessary
UErrorCode localStatus = U_ZERO_ERROR;
- freeFastNumberFormatters();
- initFastNumberFormatters(localStatus);
+ initSimpleNumberFormatter(localStatus);
}
void SimpleDateFormat::adoptNumberFormat(const UnicodeString& fields, NumberFormat *formatToAdopt, UErrorCode &status){
@@ -2141,20 +2109,20 @@ void SimpleDateFormat::adoptNumberFormat(const UnicodeString& fields, NumberForm
}
// We must ensure fSharedNumberFormatters is allocated.
- if (fSharedNumberFormatters == NULL) {
+ if (fSharedNumberFormatters == nullptr) {
fSharedNumberFormatters = allocSharedNumberFormatters();
- if (fSharedNumberFormatters == NULL) {
+ if (fSharedNumberFormatters == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
}
const SharedNumberFormat *newFormat = createSharedNumberFormat(fmt.orphan());
- if (newFormat == NULL) {
+ if (newFormat == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
for (int i=0; i<fields.length(); i++) {
- UChar field = fields.charAt(i);
+ char16_t field = fields.charAt(i);
// if the pattern character is unrecognized, signal an error and bail out
UDateFormatField patternCharIndex = DateFormatSymbols::getPatternCharIndex(field);
if (patternCharIndex == UDAT_FIELD_COUNT) {
@@ -2171,10 +2139,10 @@ void SimpleDateFormat::adoptNumberFormat(const UnicodeString& fields, NumberForm
}
const NumberFormat *
-SimpleDateFormat::getNumberFormatForField(UChar field) const {
+SimpleDateFormat::getNumberFormatForField(char16_t field) const {
UDateFormatField index = DateFormatSymbols::getPatternCharIndex(field);
if (index == UDAT_FIELD_COUNT) {
- return NULL;
+ return nullptr;
}
return getNumberFormatByIndex(index);
}
@@ -2186,36 +2154,19 @@ SimpleDateFormat::zeroPaddingNumber(
UnicodeString &appendTo,
int32_t value, int32_t minDigits, int32_t maxDigits) const
{
- const number::LocalizedNumberFormatter* fastFormatter = nullptr;
- // NOTE: This uses the heuristic that these five min/max int settings account for the vast majority
- // of SimpleDateFormat number formatting cases at the time of writing (ICU 62).
- if (currentNumberFormat == fNumberFormat) {
- if (maxDigits == 10) {
- if (minDigits == 1) {
- fastFormatter = fFastNumberFormatters[SMPDTFMT_NF_1x10];
- } else if (minDigits == 2) {
- fastFormatter = fFastNumberFormatters[SMPDTFMT_NF_2x10];
- } else if (minDigits == 3) {
- fastFormatter = fFastNumberFormatters[SMPDTFMT_NF_3x10];
- } else if (minDigits == 4) {
- fastFormatter = fFastNumberFormatters[SMPDTFMT_NF_4x10];
- }
- } else if (maxDigits == 2) {
- if (minDigits == 2) {
- fastFormatter = fFastNumberFormatters[SMPDTFMT_NF_2x2];
- }
- }
- }
- if (fastFormatter != nullptr) {
+
+ if (currentNumberFormat == fNumberFormat && fSimpleNumberFormatter) {
// Can use fast path
- number::impl::UFormattedNumberData result;
- result.quantity.setToInt(value);
UErrorCode localStatus = U_ZERO_ERROR;
- fastFormatter->formatImpl(&result, localStatus);
+ number::SimpleNumber number = number::SimpleNumber::forInt64(value, localStatus);
+ number.setMinimumIntegerDigits(minDigits, localStatus);
+ number.truncateStart(maxDigits, localStatus);
+
+ number::FormattedNumber result = fSimpleNumberFormatter->format(std::move(number), localStatus);
if (U_FAILURE(localStatus)) {
return;
}
- appendTo.append(result.getStringRef().toTempUnicodeString());
+ appendTo.append(result.toTempString(localStatus));
return;
}
@@ -2243,7 +2194,7 @@ SimpleDateFormat::zeroPaddingNumber(
* Return true if the given format character, occurring count
* times, represents a numeric field.
*/
-UBool SimpleDateFormat::isNumeric(UChar formatChar, int32_t count) {
+UBool SimpleDateFormat::isNumeric(char16_t formatChar, int32_t count) {
return DateFormatSymbols::isNumericPatternChar(formatChar, count);
}
@@ -2253,7 +2204,7 @@ SimpleDateFormat::isAtNumericField(const UnicodeString &pattern, int32_t pattern
// not at any field
return false;
}
- UChar ch = pattern.charAt(patternOffset);
+ char16_t ch = pattern.charAt(patternOffset);
UDateFormatField f = DateFormatSymbols::getPatternCharIndex(ch);
if (f == UDAT_FIELD_COUNT) {
// not at any field
@@ -2270,7 +2221,7 @@ SimpleDateFormat::isAfterNonNumericField(const UnicodeString &pattern, int32_t p
// not after any field
return false;
}
- UChar ch = pattern.charAt(--patternOffset);
+ char16_t ch = pattern.charAt(--patternOffset);
UDateFormatField f = DateFormatSymbols::getPatternCharIndex(ch);
if (f == UDAT_FIELD_COUNT) {
// not after any field
@@ -2311,16 +2262,16 @@ SimpleDateFormat::parse(const UnicodeString& text, Calendar& cal, ParsePosition&
int32_t abutPass = 0;
UBool inQuote = false;
- MessageFormat * numericLeapMonthFormatter = NULL;
+ MessageFormat * numericLeapMonthFormatter = nullptr;
- Calendar* calClone = NULL;
+ Calendar* calClone = nullptr;
Calendar *workCal = &cal;
if (&cal != fCalendar && uprv_strcmp(cal.getType(), fCalendar->getType()) != 0) {
// Different calendar type
// We use the time/zone from the input calendar, but
// do not use the input calendar for field calculation.
calClone = fCalendar->clone();
- if (calClone != NULL) {
+ if (calClone != nullptr) {
calClone->setTime(cal.getTime(status),status);
if (U_FAILURE(status)) {
goto ExitParse;
@@ -2333,9 +2284,9 @@ SimpleDateFormat::parse(const UnicodeString& text, Calendar& cal, ParsePosition&
}
}
- if (fSymbols->fLeapMonthPatterns != NULL && fSymbols->fLeapMonthPatternsCount >= DateFormatSymbols::kMonthPatternsCount) {
+ if (fSymbols->fLeapMonthPatterns != nullptr && fSymbols->fLeapMonthPatternsCount >= DateFormatSymbols::kMonthPatternsCount) {
numericLeapMonthFormatter = new MessageFormat(fSymbols->fLeapMonthPatterns[DateFormatSymbols::kLeapMonthPatternNumeric], fLocale, status);
- if (numericLeapMonthFormatter == NULL) {
+ if (numericLeapMonthFormatter == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
goto ExitParse;
} else if (U_FAILURE(status)) {
@@ -2344,7 +2295,7 @@ SimpleDateFormat::parse(const UnicodeString& text, Calendar& cal, ParsePosition&
}
for (int32_t i=0; i<fPattern.length(); ++i) {
- UChar ch = fPattern.charAt(i);
+ char16_t ch = fPattern.charAt(i);
// Handle alphabetic field characters.
if (!inQuote && isSyntaxChar(ch)) {
@@ -2417,7 +2368,7 @@ SimpleDateFormat::parse(const UnicodeString& text, Calendar& cal, ParsePosition&
if (i+1 < fPattern.length()) {
// move to next pattern character
- UChar c = fPattern.charAt(i+1);
+ char16_t c = fPattern.charAt(i+1);
// check for whitespace
if (PatternProps::isWhiteSpace(c)) {
@@ -2568,7 +2519,7 @@ SimpleDateFormat::parse(const UnicodeString& text, Calendar& cal, ParsePosition&
if (ambiguousYear[0]) {
copy = cal.clone();
// Check for failed cloning.
- if (copy == NULL) {
+ if (copy == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
goto ExitParse;
}
@@ -2584,17 +2535,17 @@ SimpleDateFormat::parse(const UnicodeString& text, Calendar& cal, ParsePosition&
if (tzTimeType != UTZFMT_TIME_TYPE_UNKNOWN) {
copy = cal.clone();
// Check for failed cloning.
- if (copy == NULL) {
+ if (copy == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
goto ExitParse;
}
const TimeZone & tz = cal.getTimeZone();
- BasicTimeZone *btz = NULL;
+ BasicTimeZone *btz = nullptr;
- if (dynamic_cast<const OlsonTimeZone *>(&tz) != NULL
- || dynamic_cast<const SimpleTimeZone *>(&tz) != NULL
- || dynamic_cast<const RuleBasedTimeZone *>(&tz) != NULL
- || dynamic_cast<const VTimeZone *>(&tz) != NULL) {
+ if (dynamic_cast<const OlsonTimeZone *>(&tz) != nullptr
+ || dynamic_cast<const SimpleTimeZone *>(&tz) != nullptr
+ || dynamic_cast<const RuleBasedTimeZone *>(&tz) != nullptr
+ || dynamic_cast<const VTimeZone *>(&tz) != nullptr) {
btz = (BasicTimeZone*)&tz;
}
@@ -2606,7 +2557,7 @@ SimpleDateFormat::parse(const UnicodeString& text, Calendar& cal, ParsePosition&
// Make sure parsed time zone type (Standard or Daylight)
// matches the rule used by the parsed time zone.
int32_t raw, dst;
- if (btz != NULL) {
+ if (btz != nullptr) {
if (tzTimeType == UTZFMT_TIME_TYPE_STANDARD) {
btz->getOffsetFromLocal(localMillis,
UCAL_TZ_LOCAL_STANDARD_FORMER, UCAL_TZ_LOCAL_STANDARD_LATTER, raw, dst, status);
@@ -2629,7 +2580,7 @@ SimpleDateFormat::parse(const UnicodeString& text, Calendar& cal, ParsePosition&
}
} else { // tztype == TZTYPE_DST
if (dst == 0) {
- if (btz != NULL) {
+ if (btz != nullptr) {
// This implementation resolves daylight saving time offset
// closest rule after the given time.
UDate baseTime = localMillis + raw;
@@ -2694,10 +2645,10 @@ ExitParse:
cal.setTime(workCal->getTime(status), status);
}
- if (numericLeapMonthFormatter != NULL) {
+ if (numericLeapMonthFormatter != nullptr) {
delete numericLeapMonthFormatter;
}
- if (calClone != NULL) {
+ if (calClone != nullptr) {
delete calClone;
}
@@ -2788,7 +2739,7 @@ UBool SimpleDateFormat::matchLiterals(const UnicodeString &pattern,
// scan pattern looking for contiguous literal characters
for ( ; i < pattern.length(); i += 1) {
- UChar ch = pattern.charAt(i);
+ char16_t ch = pattern.charAt(i);
if (!inQuote && isSyntaxChar(ch)) {
break;
@@ -2835,7 +2786,7 @@ UBool SimpleDateFormat::matchLiterals(const UnicodeString &pattern,
int32_t tStart = t;
while (t < text.length()) {
- UChar tch = text.charAt(t);
+ char16_t tch = text.charAt(t);
if (!u_isUWhiteSpace(tch) && !PatternProps::isWhiteSpace(tch)) {
break;
@@ -2872,7 +2823,7 @@ UBool SimpleDateFormat::matchLiterals(const UnicodeString &pattern,
}
// if it is actual whitespace and we're whitespace lenient it's OK
- UChar wsc = text.charAt(t);
+ char16_t wsc = text.charAt(t);
if(PatternProps::isWhiteSpace(wsc)) {
// Lenient mode and it's just whitespace we skip it
++t;
@@ -2896,16 +2847,16 @@ UBool SimpleDateFormat::matchLiterals(const UnicodeString &pattern,
if (p <= 0) {
// no match. Pretend it matched a run of whitespace
// and ignorables in the text.
- const UnicodeSet *ignorables = NULL;
+ const UnicodeSet *ignorables = nullptr;
UDateFormatField patternCharIndex = DateFormatSymbols::getPatternCharIndex(pattern.charAt(i));
if (patternCharIndex != UDAT_FIELD_COUNT) {
ignorables = SimpleDateFormatStaticSets::getIgnorables(patternCharIndex);
}
for (t = textOffset; t < text.length(); t += 1) {
- UChar ch = text.charAt(t);
+ char16_t ch = text.charAt(t);
- if (ignorables == NULL || !ignorables->contains(ch)) {
+ if (ignorables == nullptr || !ignorables->contains(ch)) {
break;
}
}
@@ -2993,7 +2944,7 @@ int32_t SimpleDateFormat::matchString(const UnicodeString& text,
bestMatchLength = matchLen;
}
- if (monthPattern != NULL) {
+ if (monthPattern != nullptr) {
UErrorCode status = U_ZERO_ERROR;
UnicodeString leapMonthName;
SimpleFormatter(*monthPattern, 1, 1, status).format(data[i], leapMonthName, status);
@@ -3018,7 +2969,7 @@ int32_t SimpleDateFormat::matchString(const UnicodeString& text,
}
cal.set(field, bestMatch);
}
- if (monthPattern != NULL) {
+ if (monthPattern != nullptr) {
cal.set(UCAL_IS_LEAP_MONTH, isLeapMonth);
}
}
@@ -3065,7 +3016,7 @@ SimpleDateFormat::set2DigitYearStart(UDate d, UErrorCode& status)
* Private member function that converts the parsed date strings into
* timeFields. Returns -start (for ParsePosition) if failed.
*/
-int32_t SimpleDateFormat::subParse(const UnicodeString& text, int32_t& start, UChar ch, int32_t count,
+int32_t SimpleDateFormat::subParse(const UnicodeString& text, int32_t& start, char16_t ch, int32_t count,
UBool obeyCount, UBool allowNegative, UBool ambiguousYear[], int32_t& saveHebrewMonth, Calendar& cal,
int32_t patLoc, MessageFormat * numericLeapMonthFormatter, UTimeZoneFormatTimeType *tzTimeType,
int32_t *dayPeriod) const
@@ -3090,13 +3041,13 @@ int32_t SimpleDateFormat::subParse(const UnicodeString& text, int32_t& start, UC
}
currentNumberFormat = getNumberFormatByIndex(patternCharIndex);
- if (currentNumberFormat == NULL) {
+ if (currentNumberFormat == nullptr) {
return -start;
}
UCalendarDateFields field = fgPatternIndexToCalendarField[patternCharIndex]; // UCAL_FIELD_COUNT if irrelevant
UnicodeString hebr("hebr", 4, US_INV);
- if (numericLeapMonthFormatter != NULL) {
+ if (numericLeapMonthFormatter != nullptr) {
numericLeapMonthFormatter->setFormats((const Format **)&currentNumberFormat, 1);
}
UBool isChineseCalendar = (uprv_strcmp(cal.getType(),"chinese") == 0 || uprv_strcmp(cal.getType(),"dangi") == 0);
@@ -3141,10 +3092,10 @@ int32_t SimpleDateFormat::subParse(const UnicodeString& text, int32_t& start, UC
const UnicodeString* src;
UBool parsedNumericLeapMonth = false;
- if (numericLeapMonthFormatter != NULL && (patternCharIndex == UDAT_MONTH_FIELD || patternCharIndex == UDAT_STANDALONE_MONTH_FIELD)) {
+ if (numericLeapMonthFormatter != nullptr && (patternCharIndex == UDAT_MONTH_FIELD || patternCharIndex == UDAT_STANDALONE_MONTH_FIELD)) {
int32_t argCount;
Formattable * args = numericLeapMonthFormatter->parse(text, pos, argCount);
- if (args != NULL && argCount == 1 && pos.getIndex() > parseStart && args[0].isNumeric()) {
+ if (args != nullptr && argCount == 1 && pos.getIndex() > parseStart && args[0].isNumeric()) {
parsedNumericLeapMonth = true;
number.setLong(args[0].getLong());
cal.set(UCAL_IS_LEAP_MONTH, 1);
@@ -3239,11 +3190,11 @@ int32_t SimpleDateFormat::subParse(const UnicodeString& text, int32_t& start, UC
return pos.getIndex();
}
if (count == 5) {
- ps = matchString(text, start, UCAL_ERA, fSymbols->fNarrowEras, fSymbols->fNarrowErasCount, NULL, cal);
+ ps = matchString(text, start, UCAL_ERA, fSymbols->fNarrowEras, fSymbols->fNarrowErasCount, nullptr, cal);
} else if (count == 4) {
- ps = matchString(text, start, UCAL_ERA, fSymbols->fEraNames, fSymbols->fEraNamesCount, NULL, cal);
+ ps = matchString(text, start, UCAL_ERA, fSymbols->fEraNames, fSymbols->fEraNamesCount, nullptr, cal);
} else {
- ps = matchString(text, start, UCAL_ERA, fSymbols->fEras, fSymbols->fErasCount, NULL, cal);
+ ps = matchString(text, start, UCAL_ERA, fSymbols->fEras, fSymbols->fErasCount, nullptr, cal);
}
// check return position, if it equals -start, then matchString error
@@ -3317,8 +3268,8 @@ int32_t SimpleDateFormat::subParse(const UnicodeString& text, int32_t& start, UC
return pos.getIndex();
case UDAT_YEAR_NAME_FIELD:
- if (fSymbols->fShortYearNames != NULL) {
- int32_t newStart = matchString(text, start, UCAL_YEAR, fSymbols->fShortYearNames, fSymbols->fShortYearNamesCount, NULL, cal);
+ if (fSymbols->fShortYearNames != nullptr) {
+ int32_t newStart = matchString(text, start, UCAL_YEAR, fSymbols->fShortYearNames, fSymbols->fShortYearNamesCount, nullptr, cal);
if (newStart > 0) {
return newStart;
}
@@ -3359,9 +3310,9 @@ int32_t SimpleDateFormat::subParse(const UnicodeString& text, int32_t& start, UC
// count >= 3 // i.e., MMM/MMMM, LLL/LLLL
// Want to be able to parse both short and long forms.
// Try count == 4 first:
- UnicodeString * wideMonthPat = NULL;
- UnicodeString * shortMonthPat = NULL;
- if (fSymbols->fLeapMonthPatterns != NULL && fSymbols->fLeapMonthPatternsCount >= DateFormatSymbols::kMonthPatternsCount) {
+ UnicodeString * wideMonthPat = nullptr;
+ UnicodeString * shortMonthPat = nullptr;
+ if (fSymbols->fLeapMonthPatterns != nullptr && fSymbols->fLeapMonthPatternsCount >= DateFormatSymbols::kMonthPatternsCount) {
if (patternCharIndex==UDAT_MONTH_FIELD) {
wideMonthPat = &fSymbols->fLeapMonthPatterns[DateFormatSymbols::kLeapMonthPatternFormatWide];
shortMonthPat = &fSymbols->fLeapMonthPatterns[DateFormatSymbols::kLeapMonthPatternFormatAbbrev];
@@ -3461,25 +3412,25 @@ int32_t SimpleDateFormat::subParse(const UnicodeString& text, int32_t& start, UC
int32_t newStart = 0;
if(getBooleanAttribute(UDAT_PARSE_MULTIPLE_PATTERNS_FOR_MATCH, status) || count == 4) {
if ((newStart = matchString(text, start, UCAL_DAY_OF_WEEK,
- fSymbols->fWeekdays, fSymbols->fWeekdaysCount, NULL, cal)) > 0)
+ fSymbols->fWeekdays, fSymbols->fWeekdaysCount, nullptr, cal)) > 0)
return newStart;
}
// EEEE wide failed, now try EEE abbreviated
if(getBooleanAttribute(UDAT_PARSE_MULTIPLE_PATTERNS_FOR_MATCH, status) || count == 3) {
if ((newStart = matchString(text, start, UCAL_DAY_OF_WEEK,
- fSymbols->fShortWeekdays, fSymbols->fShortWeekdaysCount, NULL, cal)) > 0)
+ fSymbols->fShortWeekdays, fSymbols->fShortWeekdaysCount, nullptr, cal)) > 0)
return newStart;
}
// EEE abbreviated failed, now try EEEEEE short
if(getBooleanAttribute(UDAT_PARSE_MULTIPLE_PATTERNS_FOR_MATCH, status) || count == 6) {
if ((newStart = matchString(text, start, UCAL_DAY_OF_WEEK,
- fSymbols->fShorterWeekdays, fSymbols->fShorterWeekdaysCount, NULL, cal)) > 0)
+ fSymbols->fShorterWeekdays, fSymbols->fShorterWeekdaysCount, nullptr, cal)) > 0)
return newStart;
}
// EEEEEE short failed, now try EEEEE narrow
if(getBooleanAttribute(UDAT_PARSE_MULTIPLE_PATTERNS_FOR_MATCH, status) || count == 5) {
if ((newStart = matchString(text, start, UCAL_DAY_OF_WEEK,
- fSymbols->fNarrowWeekdays, fSymbols->fNarrowWeekdaysCount, NULL, cal)) > 0)
+ fSymbols->fNarrowWeekdays, fSymbols->fNarrowWeekdaysCount, nullptr, cal)) > 0)
return newStart;
}
if (!getBooleanAttribute(UDAT_PARSE_ALLOW_NUMERIC, status) || patternCharIndex == UDAT_DAY_OF_WEEK_FIELD)
@@ -3501,17 +3452,17 @@ int32_t SimpleDateFormat::subParse(const UnicodeString& text, int32_t& start, UC
int32_t newStart = 0;
if(getBooleanAttribute(UDAT_PARSE_MULTIPLE_PATTERNS_FOR_MATCH, status) || count == 4) {
if ((newStart = matchString(text, start, UCAL_DAY_OF_WEEK,
- fSymbols->fStandaloneWeekdays, fSymbols->fStandaloneWeekdaysCount, NULL, cal)) > 0)
+ fSymbols->fStandaloneWeekdays, fSymbols->fStandaloneWeekdaysCount, nullptr, cal)) > 0)
return newStart;
}
if(getBooleanAttribute(UDAT_PARSE_MULTIPLE_PATTERNS_FOR_MATCH, status) || count == 3) {
if ((newStart = matchString(text, start, UCAL_DAY_OF_WEEK,
- fSymbols->fStandaloneShortWeekdays, fSymbols->fStandaloneShortWeekdaysCount, NULL, cal)) > 0)
+ fSymbols->fStandaloneShortWeekdays, fSymbols->fStandaloneShortWeekdaysCount, nullptr, cal)) > 0)
return newStart;
}
if(getBooleanAttribute(UDAT_PARSE_MULTIPLE_PATTERNS_FOR_MATCH, status) || count == 6) {
if ((newStart = matchString(text, start, UCAL_DAY_OF_WEEK,
- fSymbols->fStandaloneShorterWeekdays, fSymbols->fStandaloneShorterWeekdaysCount, NULL, cal)) > 0)
+ fSymbols->fStandaloneShorterWeekdays, fSymbols->fStandaloneShorterWeekdaysCount, nullptr, cal)) > 0)
return newStart;
}
if (!getBooleanAttribute(UDAT_PARSE_ALLOW_NUMERIC, status))
@@ -3526,13 +3477,13 @@ int32_t SimpleDateFormat::subParse(const UnicodeString& text, int32_t& start, UC
int32_t newStart = 0;
// try wide/abbrev
if( getBooleanAttribute(UDAT_PARSE_MULTIPLE_PATTERNS_FOR_MATCH, status) || count < 5 ) {
- if ((newStart = matchString(text, start, UCAL_AM_PM, fSymbols->fAmPms, fSymbols->fAmPmsCount, NULL, cal)) > 0) {
+ if ((newStart = matchString(text, start, UCAL_AM_PM, fSymbols->fAmPms, fSymbols->fAmPmsCount, nullptr, cal)) > 0) {
return newStart;
}
}
// try narrow
if( getBooleanAttribute(UDAT_PARSE_MULTIPLE_PATTERNS_FOR_MATCH, status) || count >= 5 ) {
- if ((newStart = matchString(text, start, UCAL_AM_PM, fSymbols->fNarrowAmPms, fSymbols->fNarrowAmPmsCount, NULL, cal)) > 0) {
+ if ((newStart = matchString(text, start, UCAL_AM_PM, fSymbols->fNarrowAmPms, fSymbols->fNarrowAmPmsCount, nullptr, cal)) > 0) {
return newStart;
}
}
@@ -3631,7 +3582,7 @@ int32_t SimpleDateFormat::subParse(const UnicodeString& text, int32_t& start, UC
const TimeZoneFormat *tzfmt = tzFormat(status);
if (U_SUCCESS(status)) {
TimeZone *tz = tzfmt->parse(style, text, pos, tzTimeType);
- if (tz != NULL) {
+ if (tz != nullptr) {
cal.adoptTimeZone(tz);
return pos.getIndex();
}
@@ -3646,7 +3597,7 @@ int32_t SimpleDateFormat::subParse(const UnicodeString& text, int32_t& start, UC
const TimeZoneFormat *tzfmt = tzFormat(status);
if (U_SUCCESS(status)) {
TimeZone *tz = tzfmt->parse(style, text, pos, tzTimeType);
- if (tz != NULL) {
+ if (tz != nullptr) {
cal.adoptTimeZone(tz);
return pos.getIndex();
}
@@ -3659,7 +3610,7 @@ int32_t SimpleDateFormat::subParse(const UnicodeString& text, int32_t& start, UC
const TimeZoneFormat *tzfmt = tzFormat(status);
if (U_SUCCESS(status)) {
TimeZone *tz = tzfmt->parse(style, text, pos, tzTimeType);
- if (tz != NULL) {
+ if (tz != nullptr) {
cal.adoptTimeZone(tz);
return pos.getIndex();
}
@@ -3686,7 +3637,7 @@ int32_t SimpleDateFormat::subParse(const UnicodeString& text, int32_t& start, UC
const TimeZoneFormat *tzfmt = tzFormat(status);
if (U_SUCCESS(status)) {
TimeZone *tz = tzfmt->parse(style, text, pos, tzTimeType);
- if (tz != NULL) {
+ if (tz != nullptr) {
cal.adoptTimeZone(tz);
return pos.getIndex();
}
@@ -3699,7 +3650,7 @@ int32_t SimpleDateFormat::subParse(const UnicodeString& text, int32_t& start, UC
const TimeZoneFormat *tzfmt = tzFormat(status);
if (U_SUCCESS(status)) {
TimeZone *tz = tzfmt->parse(style, text, pos, tzTimeType);
- if (tz != NULL) {
+ if (tz != nullptr) {
cal.adoptTimeZone(tz);
return pos.getIndex();
}
@@ -3729,7 +3680,7 @@ int32_t SimpleDateFormat::subParse(const UnicodeString& text, int32_t& start, UC
const TimeZoneFormat *tzfmt = tzFormat(status);
if (U_SUCCESS(status)) {
TimeZone *tz = tzfmt->parse(style, text, pos, tzTimeType);
- if (tz != NULL) {
+ if (tz != nullptr) {
cal.adoptTimeZone(tz);
return pos.getIndex();
}
@@ -3759,7 +3710,7 @@ int32_t SimpleDateFormat::subParse(const UnicodeString& text, int32_t& start, UC
const TimeZoneFormat *tzfmt = tzFormat(status);
if (U_SUCCESS(status)) {
TimeZone *tz = tzfmt->parse(style, text, pos, tzTimeType);
- if (tz != NULL) {
+ if (tz != nullptr) {
cal.adoptTimeZone(tz);
return pos.getIndex();
}
@@ -3770,8 +3721,8 @@ int32_t SimpleDateFormat::subParse(const UnicodeString& text, int32_t& start, UC
// so we should not get here. Leave support in for future definition.
case UDAT_TIME_SEPARATOR_FIELD:
{
- static const UChar def_sep = DateFormatSymbols::DEFAULT_TIME_SEPARATOR;
- static const UChar alt_sep = DateFormatSymbols::ALTERNATE_TIME_SEPARATOR;
+ static const char16_t def_sep = DateFormatSymbols::DEFAULT_TIME_SEPARATOR;
+ static const char16_t alt_sep = DateFormatSymbols::ALTERNATE_TIME_SEPARATOR;
// Try matching a time separator.
int32_t count_sep = 1;
@@ -3788,12 +3739,12 @@ int32_t SimpleDateFormat::subParse(const UnicodeString& text, int32_t& start, UC
data[count_sep++].setTo(alt_sep);
}
- return matchString(text, start, UCAL_FIELD_COUNT /* => nothing to set */, data, count_sep, NULL, cal);
+ return matchString(text, start, UCAL_FIELD_COUNT /* => nothing to set */, data, count_sep, nullptr, cal);
}
case UDAT_AM_PM_MIDNIGHT_NOON_FIELD:
{
- U_ASSERT(dayPeriod != NULL);
+ U_ASSERT(dayPeriod != nullptr);
int32_t ampmStart = subParse(text, start, 0x61, count,
obeyCount, allowNegative, ambiguousYear, saveHebrewMonth, cal,
patLoc, numericLeapMonthFormatter, tzTimeType);
@@ -3830,7 +3781,7 @@ int32_t SimpleDateFormat::subParse(const UnicodeString& text, int32_t& start, UC
case UDAT_FLEXIBLE_DAY_PERIOD_FIELD:
{
- U_ASSERT(dayPeriod != NULL);
+ U_ASSERT(dayPeriod != nullptr);
int32_t newStart = 0;
if (getBooleanAttribute(UDAT_PARSE_MULTIPLE_PATTERNS_FOR_MATCH, status) || count == 3) {
@@ -3876,7 +3827,7 @@ int32_t SimpleDateFormat::subParse(const UnicodeString& text, int32_t& start, UC
src = &text;
}
parseInt(*src, number, pos, allowNegative,currentNumberFormat);
- if (!isLenient() && pos.getIndex() < start + count) {
+ if (obeyCount && !isLenient() && pos.getIndex() < start + count) {
return -start;
}
if (pos.getIndex() != parseStart) {
@@ -4025,7 +3976,7 @@ void SimpleDateFormat::translatePattern(const UnicodeString& originalPattern,
translatedPattern.remove();
UBool inQuote = false;
for (int32_t i = 0; i < originalPattern.length(); ++i) {
- UChar c = originalPattern[i];
+ char16_t c = originalPattern[i];
if (inQuote) {
if (c == QUOTE) {
inQuote = false;
@@ -4088,18 +4039,18 @@ SimpleDateFormat::applyPattern(const UnicodeString& pattern)
// use procedure from adoptNumberFormat to clear overrides
if (fSharedNumberFormatters) {
freeSharedNumberFormatters(fSharedNumberFormatters);
- fSharedNumberFormatters = NULL;
+ fSharedNumberFormatters = nullptr;
}
fDateOverride.setToBogus(); // record status
} else if (fDateOverride.isBogus() && fHasHanYearChar) {
// No current override (=> no Gannen numbering) but new pattern needs it;
// use procedures from initNUmberFormatters / adoptNumberFormat
umtx_lock(&LOCK);
- if (fSharedNumberFormatters == NULL) {
+ if (fSharedNumberFormatters == nullptr) {
fSharedNumberFormatters = allocSharedNumberFormatters();
}
umtx_unlock(&LOCK);
- if (fSharedNumberFormatters != NULL) {
+ if (fSharedNumberFormatters != nullptr) {
Locale ovrLoc(fLocale.getLanguage(),fLocale.getCountry(),fLocale.getVariant(),"numbers=jpanyear");
UErrorCode status = U_ZERO_ERROR;
const SharedNumberFormat *snf = createSharedNumberFormat(ovrLoc, status);
@@ -4154,7 +4105,7 @@ SimpleDateFormat::setDateFormatSymbols(const DateFormatSymbols& newFormatSymbols
//----------------------------------------------------------------------
const TimeZoneFormat*
-SimpleDateFormat::getTimeZoneFormat(void) const {
+SimpleDateFormat::getTimeZoneFormat() const {
// TimeZoneFormat initialization might fail when out of memory.
// If we always initialize TimeZoneFormat instance, we can return
// such status there. For now, this implementation lazily instantiates
@@ -4212,13 +4163,13 @@ SimpleDateFormat::setContext(UDisplayContext value, UErrorCode& status)
DateFormat::setContext(value, status);
#if !UCONFIG_NO_BREAK_ITERATION
if (U_SUCCESS(status)) {
- if ( fCapitalizationBrkIter == NULL && (value==UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE ||
+ if ( fCapitalizationBrkIter == nullptr && (value==UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE ||
value==UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU || value==UDISPCTX_CAPITALIZATION_FOR_STANDALONE) ) {
status = U_ZERO_ERROR;
fCapitalizationBrkIter = BreakIterator::createSentenceInstance(fLocale, status);
if (U_FAILURE(status)) {
delete fCapitalizationBrkIter;
- fCapitalizationBrkIter = NULL;
+ fCapitalizationBrkIter = nullptr;
}
}
}
@@ -4240,9 +4191,9 @@ SimpleDateFormat::isFieldUnitIgnored(const UnicodeString& pattern,
UCalendarDateFields field) {
int32_t fieldLevel = fgCalendarFieldToLevel[field];
int32_t level;
- UChar ch;
+ char16_t ch;
UBool inQuote = false;
- UChar prevCh = 0;
+ char16_t prevCh = 0;
int32_t count = 0;
for (int32_t i = 0; i < pattern.length(); ++i) {
@@ -4280,7 +4231,7 @@ SimpleDateFormat::isFieldUnitIgnored(const UnicodeString& pattern,
//----------------------------------------------------------------------
const Locale&
-SimpleDateFormat::getSmpFmtLocale(void) const {
+SimpleDateFormat::getSmpFmtLocale() const {
return fLocale;
}
@@ -4306,7 +4257,7 @@ SimpleDateFormat::checkIntSuffix(const UnicodeString& text, int32_t start,
// get the suffix
DecimalFormat* decfmt = dynamic_cast<DecimalFormat*>(fNumberFormat);
- if (decfmt != NULL) {
+ if (decfmt != nullptr) {
if (isNegative) {
suf = decfmt->getNegativeSuffix(suf);
}
@@ -4407,7 +4358,7 @@ SimpleDateFormat::compareSimpleAffix(const UnicodeString& affix,
int32_t
SimpleDateFormat::skipPatternWhiteSpace(const UnicodeString& text, int32_t pos) const {
- const UChar* s = text.getBuffer();
+ const char16_t* s = text.getBuffer();
return (int32_t)(PatternProps::skipWhiteSpace(s + pos, text.length() - pos) - s);
}
@@ -4446,7 +4397,7 @@ void SimpleDateFormat::parsePattern() {
int len = fPattern.length();
UBool inQuote = false;
for (int32_t i = 0; i < len; ++i) {
- UChar ch = fPattern[i];
+ char16_t ch = fPattern[i];
if (ch == QUOTE) {
inQuote = !inQuote;
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/smpdtfst.cpp b/Build/source/libs/icu/icu-src/source/i18n/smpdtfst.cpp
index bbf6e9eddf9..9f9166aceba 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/smpdtfst.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/smpdtfst.cpp
@@ -29,20 +29,20 @@
U_NAMESPACE_BEGIN
-SimpleDateFormatStaticSets *gStaticSets = NULL;
+SimpleDateFormatStaticSets *gStaticSets = nullptr;
UInitOnce gSimpleDateFormatStaticSetsInitOnce {};
SimpleDateFormatStaticSets::SimpleDateFormatStaticSets(UErrorCode &status)
-: fDateIgnorables(NULL),
- fTimeIgnorables(NULL),
- fOtherIgnorables(NULL)
+: fDateIgnorables(nullptr),
+ fTimeIgnorables(nullptr),
+ fOtherIgnorables(nullptr)
{
fDateIgnorables = new UnicodeSet(UNICODE_STRING("[-,./[:whitespace:]]", 20), status);
fTimeIgnorables = new UnicodeSet(UNICODE_STRING("[-.:[:whitespace:]]", 19), status);
fOtherIgnorables = new UnicodeSet(UNICODE_STRING("[:whitespace:]", 14), status);
// Check for null pointers
- if (fDateIgnorables == NULL || fTimeIgnorables == NULL || fOtherIgnorables == NULL) {
+ if (fDateIgnorables == nullptr || fTimeIgnorables == nullptr || fOtherIgnorables == nullptr) {
goto ExitConstrDeleteAll;
}
@@ -54,18 +54,18 @@ SimpleDateFormatStaticSets::SimpleDateFormatStaticSets(UErrorCode &status)
return; // If we reached this point, everything is fine so just exit
ExitConstrDeleteAll: // Remove all sets and return error
- delete fDateIgnorables; fDateIgnorables = NULL;
- delete fTimeIgnorables; fTimeIgnorables = NULL;
- delete fOtherIgnorables; fOtherIgnorables = NULL;
+ delete fDateIgnorables; fDateIgnorables = nullptr;
+ delete fTimeIgnorables; fTimeIgnorables = nullptr;
+ delete fOtherIgnorables; fOtherIgnorables = nullptr;
status = U_MEMORY_ALLOCATION_ERROR;
}
SimpleDateFormatStaticSets::~SimpleDateFormatStaticSets() {
- delete fDateIgnorables; fDateIgnorables = NULL;
- delete fTimeIgnorables; fTimeIgnorables = NULL;
- delete fOtherIgnorables; fOtherIgnorables = NULL;
+ delete fDateIgnorables; fDateIgnorables = nullptr;
+ delete fTimeIgnorables; fTimeIgnorables = nullptr;
+ delete fOtherIgnorables; fOtherIgnorables = nullptr;
}
@@ -76,26 +76,26 @@ SimpleDateFormatStaticSets::~SimpleDateFormatStaticSets() {
//
//------------------------------------------------------------------------------
UBool
-SimpleDateFormatStaticSets::cleanup(void)
+SimpleDateFormatStaticSets::cleanup()
{
delete gStaticSets;
- gStaticSets = NULL;
+ gStaticSets = nullptr;
gSimpleDateFormatStaticSetsInitOnce.reset();
return true;
}
U_CDECL_BEGIN
static UBool U_CALLCONV
-smpdtfmt_cleanup(void)
+smpdtfmt_cleanup()
{
return SimpleDateFormatStaticSets::cleanup();
}
static void U_CALLCONV smpdtfmt_initSets(UErrorCode &status) {
ucln_i18n_registerCleanup(UCLN_I18N_SMPDTFMT, smpdtfmt_cleanup);
- U_ASSERT(gStaticSets == NULL);
+ U_ASSERT(gStaticSets == nullptr);
gStaticSets = new SimpleDateFormatStaticSets(status);
- if (gStaticSets == NULL) {
+ if (gStaticSets == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -108,7 +108,7 @@ UnicodeSet *SimpleDateFormatStaticSets::getIgnorables(UDateFormatField fieldInde
UErrorCode status = U_ZERO_ERROR;
umtx_initOnce(gSimpleDateFormatStaticSetsInitOnce, &smpdtfmt_initSets, status);
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
switch (fieldIndex) {
diff --git a/Build/source/libs/icu/icu-src/source/i18n/sortkey.cpp b/Build/source/libs/icu/icu-src/source/i18n/sortkey.cpp
index 441d15d4263..1fd066cc203 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/sortkey.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/sortkey.cpp
@@ -61,8 +61,8 @@ CollationKey::CollationKey(const uint8_t* newValues, int32_t count)
: UObject(), fFlagAndLength(count),
fHashCode(kInvalidHashCode)
{
- if (count < 0 || (newValues == NULL && count != 0) ||
- (count > getCapacity() && reallocate(count, 0) == NULL)) {
+ if (count < 0 || (newValues == nullptr && count != 0) ||
+ (count > getCapacity() && reallocate(count, 0) == nullptr)) {
setToBogus();
return;
}
@@ -83,7 +83,7 @@ CollationKey::CollationKey(const CollationKey& other)
}
int32_t length = fFlagAndLength;
- if (length > getCapacity() && reallocate(length, 0) == NULL) {
+ if (length > getCapacity() && reallocate(length, 0) == nullptr) {
setToBogus();
return;
}
@@ -100,7 +100,7 @@ CollationKey::~CollationKey()
uint8_t *CollationKey::reallocate(int32_t newCapacity, int32_t length) {
uint8_t *newBytes = static_cast<uint8_t *>(uprv_malloc(newCapacity));
- if(newBytes == NULL) { return NULL; }
+ if(newBytes == nullptr) { return nullptr; }
if(length > 0) {
uprv_memcpy(newBytes, getBytes(), length);
}
@@ -156,7 +156,7 @@ CollationKey::operator=(const CollationKey& other)
}
int32_t length = other.getLength();
- if (length > getCapacity() && reallocate(length, 0) == NULL) {
+ if (length > getCapacity() && reallocate(length, 0) == nullptr) {
return setToBogus();
}
if (length > 0) {
@@ -227,7 +227,7 @@ CollationKey::toByteArray(int32_t& count) const
{
uint8_t *result = (uint8_t*) uprv_malloc( sizeof(uint8_t) * fCount );
- if (result == NULL)
+ if (result == nullptr)
{
count = 0;
}
@@ -247,7 +247,7 @@ static int32_t
computeHashCode(const uint8_t *key, int32_t length) {
const char *s = reinterpret_cast<const char *>(key);
int32_t hash;
- if (s == NULL || length == 0) {
+ if (s == nullptr || length == 0) {
hash = kEmptyHashCode;
} else {
hash = ustr_hashCharsN(s, length);
diff --git a/Build/source/libs/icu/icu-src/source/i18n/sources.txt b/Build/source/libs/icu/icu-src/source/i18n/sources.txt
index b882b0464a9..a1af43b93e8 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/sources.txt
+++ b/Build/source/libs/icu/icu-src/source/i18n/sources.txt
@@ -86,6 +86,7 @@ hebrwcal.cpp
indiancal.cpp
inputext.cpp
islamcal.cpp
+iso8601cal.cpp
japancal.cpp
listformatter.cpp
measfmt.cpp
@@ -121,6 +122,7 @@ number_patternmodifier.cpp
number_patternstring.cpp
number_rounding.cpp
number_scientific.cpp
+number_simple.cpp
number_skeletons.cpp
number_symbolswrapper.cpp
number_usageprefs.cpp
diff --git a/Build/source/libs/icu/icu-src/source/i18n/standardplural.cpp b/Build/source/libs/icu/icu-src/source/i18n/standardplural.cpp
index 5a6069bf7dd..9183e925503 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/standardplural.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/standardplural.cpp
@@ -84,14 +84,14 @@ int32_t StandardPlural::indexOrNegativeFromString(const char *keyword) {
return -1;
}
-static const UChar gZero[] = u"zero";
-static const UChar gOne[] = u"one";
-static const UChar gTwo[] = u"two";
-static const UChar gFew[] = u"few";
-static const UChar gMany[] = u"many";
-static const UChar gOther[] = u"other";
-static const UChar gEq0[] = u"=0";
-static const UChar gEq1[] = u"=1";
+static const char16_t gZero[] = u"zero";
+static const char16_t gOne[] = u"one";
+static const char16_t gTwo[] = u"two";
+static const char16_t gFew[] = u"few";
+static const char16_t gMany[] = u"many";
+static const char16_t gOther[] = u"other";
+static const char16_t gEq0[] = u"=0";
+static const char16_t gEq1[] = u"=1";
int32_t StandardPlural::indexOrNegativeFromString(const UnicodeString &keyword) {
switch (keyword.length()) {
diff --git a/Build/source/libs/icu/icu-src/source/i18n/strmatch.cpp b/Build/source/libs/icu/icu-src/source/i18n/strmatch.cpp
index 93febc708d5..ff52eeacdc4 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/strmatch.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/strmatch.cpp
@@ -96,7 +96,7 @@ UMatchDegree StringMatcher::matches(const Replaceable& text,
if (limit < cursor) {
// Match in the reverse direction
for (i=pattern.length()-1; i>=0; --i) {
- UChar keyChar = pattern.charAt(i);
+ char16_t keyChar = pattern.charAt(i);
UnicodeMatcher* subm = data->lookupMatcher(keyChar);
if (subm == 0) {
if (cursor > limit &&
@@ -127,7 +127,7 @@ UMatchDegree StringMatcher::matches(const Replaceable& text,
// without completing our match.
return U_PARTIAL_MATCH;
}
- UChar keyChar = pattern.charAt(i);
+ char16_t keyChar = pattern.charAt(i);
UnicodeMatcher* subm = data->lookupMatcher(keyChar);
if (subm == 0) {
// Don't need the cursor < limit check if
@@ -165,10 +165,10 @@ UnicodeString& StringMatcher::toPattern(UnicodeString& result,
result.truncate(0);
UnicodeString str, quoteBuf;
if (segmentNumber > 0) {
- result.append((UChar)40); /*(*/
+ result.append((char16_t)40); /*(*/
}
for (int32_t i=0; i<pattern.length(); ++i) {
- UChar keyChar = pattern.charAt(i);
+ char16_t keyChar = pattern.charAt(i);
const UnicodeMatcher* m = data->lookupMatcher(keyChar);
if (m == 0) {
ICU_Utility::appendToRule(result, keyChar, false, escapeUnprintable, quoteBuf);
@@ -178,7 +178,7 @@ UnicodeString& StringMatcher::toPattern(UnicodeString& result,
}
}
if (segmentNumber > 0) {
- result.append((UChar)41); /*)*/
+ result.append((char16_t)41); /*)*/
}
// Flush quoteBuf out to result
ICU_Utility::appendToRule(result, -1,
@@ -206,7 +206,7 @@ void StringMatcher::addMatchSetTo(UnicodeSet& toUnionTo) const {
for (int32_t i=0; i<pattern.length(); i+=U16_LENGTH(ch)) {
ch = pattern.char32At(i);
const UnicodeMatcher* matcher = data->lookupMatcher(ch);
- if (matcher == NULL) {
+ if (matcher == nullptr) {
toUnionTo.add(ch);
} else {
matcher->addMatchSetTo(toUnionTo);
@@ -247,7 +247,7 @@ UnicodeString& StringMatcher::toReplacerPattern(UnicodeString& rule,
UBool /*escapeUnprintable*/) const {
// assert(segmentNumber > 0);
rule.truncate(0);
- rule.append((UChar)0x0024 /*$*/);
+ rule.append((char16_t)0x0024 /*$*/);
ICU_Utility::appendNumber(rule, segmentNumber, 10, 1);
return rule;
}
@@ -282,7 +282,7 @@ void StringMatcher::setData(const TransliterationRuleData* d) {
while (i<pattern.length()) {
UChar32 c = pattern.char32At(i);
UnicodeFunctor* f = data->lookup(c);
- if (f != NULL) {
+ if (f != nullptr) {
f->setData(data);
}
i += U16_LENGTH(c);
diff --git a/Build/source/libs/icu/icu-src/source/i18n/strrepl.cpp b/Build/source/libs/icu/icu-src/source/i18n/strrepl.cpp
index 23dab55430b..2981553869a 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/strrepl.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/strrepl.cpp
@@ -149,7 +149,7 @@ int32_t StringReplacer::replace(Replaceable& text,
text.copy(start-len, start, tempStart);
destStart += len;
} else {
- UnicodeString str((UChar) 0xFFFF);
+ UnicodeString str((char16_t) 0xFFFF);
text.handleReplaceBetween(tempStart, tempStart, str);
destStart++;
}
@@ -162,7 +162,7 @@ int32_t StringReplacer::replace(Replaceable& text,
}
UChar32 c = output.char32At(oOutput);
UnicodeReplacer* r = data->lookupReplacer(c);
- if (r == NULL) {
+ if (r == nullptr) {
// Accumulate straight (non-segment) text.
buf.append(c);
} else {
@@ -249,25 +249,25 @@ UnicodeString& StringReplacer::toReplacerPattern(UnicodeString& rule,
// Handle a cursor preceding the output
if (hasCursor && cursor < 0) {
while (cursor++ < 0) {
- ICU_Utility::appendToRule(rule, (UChar)0x0040 /*@*/, true, escapeUnprintable, quoteBuf);
+ ICU_Utility::appendToRule(rule, (char16_t)0x0040 /*@*/, true, escapeUnprintable, quoteBuf);
}
// Fall through and append '|' below
}
for (int32_t i=0; i<output.length(); ++i) {
if (hasCursor && i == cursor) {
- ICU_Utility::appendToRule(rule, (UChar)0x007C /*|*/, true, escapeUnprintable, quoteBuf);
+ ICU_Utility::appendToRule(rule, (char16_t)0x007C /*|*/, true, escapeUnprintable, quoteBuf);
}
- UChar c = output.charAt(i); // Ok to use 16-bits here
+ char16_t c = output.charAt(i); // Ok to use 16-bits here
UnicodeReplacer* r = data->lookupReplacer(c);
- if (r == NULL) {
+ if (r == nullptr) {
ICU_Utility::appendToRule(rule, c, false, escapeUnprintable, quoteBuf);
} else {
UnicodeString buf;
r->toReplacerPattern(buf, escapeUnprintable);
- buf.insert(0, (UChar)0x20);
- buf.append((UChar)0x20);
+ buf.insert(0, (char16_t)0x20);
+ buf.append((char16_t)0x20);
ICU_Utility::appendToRule(rule, buf,
true, escapeUnprintable, quoteBuf);
}
@@ -279,9 +279,9 @@ UnicodeString& StringReplacer::toReplacerPattern(UnicodeString& rule,
if (hasCursor && cursor > output.length()) {
cursor -= output.length();
while (cursor-- > 0) {
- ICU_Utility::appendToRule(rule, (UChar)0x0040 /*@*/, true, escapeUnprintable, quoteBuf);
+ ICU_Utility::appendToRule(rule, (char16_t)0x0040 /*@*/, true, escapeUnprintable, quoteBuf);
}
- ICU_Utility::appendToRule(rule, (UChar)0x007C /*|*/, true, escapeUnprintable, quoteBuf);
+ ICU_Utility::appendToRule(rule, (char16_t)0x007C /*|*/, true, escapeUnprintable, quoteBuf);
}
// Flush quoteBuf out to result
ICU_Utility::appendToRule(rule, -1,
@@ -298,7 +298,7 @@ void StringReplacer::addReplacementSetTo(UnicodeSet& toUnionTo) const {
for (int32_t i=0; i<output.length(); i+=U16_LENGTH(ch)) {
ch = output.char32At(i);
UnicodeReplacer* r = data->lookupReplacer(ch);
- if (r == NULL) {
+ if (r == nullptr) {
toUnionTo.add(ch);
} else {
r->addReplacementSetTo(toUnionTo);
@@ -315,7 +315,7 @@ void StringReplacer::setData(const TransliterationRuleData* d) {
while (i<output.length()) {
UChar32 c = output.char32At(i);
UnicodeFunctor* f = data->lookup(c);
- if (f != NULL) {
+ if (f != nullptr) {
f->setData(data);
}
i += U16_LENGTH(c);
diff --git a/Build/source/libs/icu/icu-src/source/i18n/stsearch.cpp b/Build/source/libs/icu/icu-src/source/i18n/stsearch.cpp
index 1bade8fbd11..395ce1cdc11 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/stsearch.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/stsearch.cpp
@@ -32,7 +32,7 @@ StringSearch::StringSearch(const UnicodeString &pattern,
m_pattern_(pattern)
{
if (U_FAILURE(status)) {
- m_strsrch_ = NULL;
+ m_strsrch_ = nullptr;
return;
}
@@ -41,7 +41,7 @@ StringSearch::StringSearch(const UnicodeString &pattern,
locale.getName(), (UBreakIterator *)breakiter,
&status);
uprv_free(m_search_);
- m_search_ = NULL;
+ m_search_ = nullptr;
if (U_SUCCESS(status)) {
// m_search_ has been created by the base SearchIterator class
@@ -58,12 +58,12 @@ StringSearch::StringSearch(const UnicodeString &pattern,
m_pattern_(pattern)
{
if (U_FAILURE(status)) {
- m_strsrch_ = NULL;
+ m_strsrch_ = nullptr;
return;
}
- if (coll == NULL) {
+ if (coll == nullptr) {
status = U_ILLEGAL_ARGUMENT_ERROR;
- m_strsrch_ = NULL;
+ m_strsrch_ = nullptr;
return;
}
m_strsrch_ = usearch_openFromCollator(m_pattern_.getBuffer(),
@@ -73,7 +73,7 @@ StringSearch::StringSearch(const UnicodeString &pattern,
(UBreakIterator *)breakiter,
&status);
uprv_free(m_search_);
- m_search_ = NULL;
+ m_search_ = nullptr;
if (U_SUCCESS(status)) {
// m_search_ has been created by the base SearchIterator class
@@ -90,7 +90,7 @@ StringSearch::StringSearch(const UnicodeString &pattern,
m_pattern_(pattern)
{
if (U_FAILURE(status)) {
- m_strsrch_ = NULL;
+ m_strsrch_ = nullptr;
return;
}
m_strsrch_ = usearch_open(m_pattern_.getBuffer(), m_pattern_.length(),
@@ -98,7 +98,7 @@ StringSearch::StringSearch(const UnicodeString &pattern,
locale.getName(), (UBreakIterator *)breakiter,
&status);
uprv_free(m_search_);
- m_search_ = NULL;
+ m_search_ = nullptr;
if (U_SUCCESS(status)) {
// m_search_ has been created by the base SearchIterator class
@@ -115,12 +115,12 @@ StringSearch::StringSearch(const UnicodeString &pattern,
m_pattern_(pattern)
{
if (U_FAILURE(status)) {
- m_strsrch_ = NULL;
+ m_strsrch_ = nullptr;
return;
}
- if (coll == NULL) {
+ if (coll == nullptr) {
status = U_ILLEGAL_ARGUMENT_ERROR;
- m_strsrch_ = NULL;
+ m_strsrch_ = nullptr;
return;
}
m_strsrch_ = usearch_openFromCollator(m_pattern_.getBuffer(),
@@ -130,7 +130,7 @@ StringSearch::StringSearch(const UnicodeString &pattern,
(UBreakIterator *)breakiter,
&status);
uprv_free(m_search_);
- m_search_ = NULL;
+ m_search_ = nullptr;
if (U_SUCCESS(status)) {
// m_search_ has been created by the base SearchIterator class
@@ -146,11 +146,11 @@ StringSearch::StringSearch(const StringSearch &that) :
// Free m_search_ from the superclass
uprv_free(m_search_);
- m_search_ = NULL;
+ m_search_ = nullptr;
- if (that.m_strsrch_ == NULL) {
+ if (that.m_strsrch_ == nullptr) {
// This was not a good copy
- m_strsrch_ = NULL;
+ m_strsrch_ = nullptr;
}
else {
// Make a deep copy
@@ -170,9 +170,9 @@ StringSearch::StringSearch(const StringSearch &that) :
StringSearch::~StringSearch()
{
- if (m_strsrch_ != NULL) {
+ if (m_strsrch_ != nullptr) {
usearch_close(m_strsrch_);
- m_search_ = NULL;
+ m_search_ = nullptr;
}
}
@@ -196,9 +196,9 @@ StringSearch & StringSearch::operator=(const StringSearch &that)
m_text_.getBuffer(),
m_text_.length(),
that.m_strsrch_->collator,
- NULL, &status);
+ nullptr, &status);
// Check null pointer
- if (m_strsrch_ != NULL) {
+ if (m_strsrch_ != nullptr) {
m_search_ = m_strsrch_->search;
}
}
@@ -211,9 +211,10 @@ bool StringSearch::operator==(const SearchIterator &that) const
return true;
}
if (SearchIterator::operator ==(that)) {
- StringSearch &thatsrch = (StringSearch &)that;
- return (this->m_pattern_ == thatsrch.m_pattern_ &&
- this->m_strsrch_->collator == thatsrch.m_strsrch_->collator);
+ const StringSearch *thatsrch = dynamic_cast<const StringSearch *>(&that);
+ if (thatsrch == nullptr) return false;
+ return (this->m_pattern_ == thatsrch->m_pattern_ &&
+ this->m_strsrch_->collator == thatsrch->m_strsrch_->collator);
}
return false;
}
@@ -226,7 +227,7 @@ void StringSearch::setOffset(int32_t position, UErrorCode &status)
usearch_setOffset(m_strsrch_, position, &status);
}
-int32_t StringSearch::getOffset(void) const
+int32_t StringSearch::getOffset() const
{
return usearch_getOffset(m_strsrch_);
}
@@ -289,7 +290,7 @@ StringSearch * StringSearch::safeClone() const
getCollator(),
m_breakiterator_,
status);
- /* test for NULL */
+ /* test for nullptr */
if (result == 0) {
status = U_MEMORY_ALLOCATION_ERROR;
return 0;
@@ -298,7 +299,7 @@ StringSearch * StringSearch::safeClone() const
result->setMatchStart(m_strsrch_->search->matchedIndex);
result->setMatchLength(m_strsrch_->search->matchedLength);
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
return result;
}
@@ -355,7 +356,7 @@ int32_t StringSearch::handleNext(int32_t position, UErrorCode &status)
if (U_FAILURE(status)) {
return USEARCH_DONE;
}
- if (m_breakiterator_ == NULL
+ if (m_breakiterator_ == nullptr
#if !UCONFIG_NO_BREAK_ITERATION
||
m_search_->matchedIndex == USEARCH_DONE ||
@@ -443,7 +444,7 @@ int32_t StringSearch::handlePrev(int32_t position, UErrorCode &status)
if (U_FAILURE(status)) {
return USEARCH_DONE;
}
- if (m_breakiterator_ == NULL
+ if (m_breakiterator_ == nullptr
#if !UCONFIG_NO_BREAK_ITERATION
||
m_search_->matchedIndex == USEARCH_DONE ||
diff --git a/Build/source/libs/icu/icu-src/source/i18n/taiwncal.h b/Build/source/libs/icu/icu-src/source/i18n/taiwncal.h
index ab6b6aff099..b0a30f91080 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/taiwncal.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/taiwncal.h
@@ -104,7 +104,7 @@ public:
* same class ID. Objects of other classes have different class IDs.
* @internal
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
/**
* Return the class ID for this class. This is useful only for comparing to a return
@@ -117,7 +117,7 @@ public:
* @return The class ID for all objects of this class.
* @internal
*/
- U_I18N_API static UClassID U_EXPORT2 getStaticClassID(void);
+ U_I18N_API static UClassID U_EXPORT2 getStaticClassID();
/**
* return the calendar type, "Taiwan".
diff --git a/Build/source/libs/icu/icu-src/source/i18n/timezone.cpp b/Build/source/libs/icu/icu-src/source/i18n/timezone.cpp
index 00b44bfe902..02cbc78ceff 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/timezone.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/timezone.cpp
@@ -105,14 +105,14 @@ static char gStrBuf[256];
// Static data and constants
-static const UChar WORLD[] = {0x30, 0x30, 0x31, 0x00}; /* "001" */
+static const char16_t WORLD[] = {0x30, 0x30, 0x31, 0x00}; /* "001" */
-static const UChar GMT_ID[] = {0x47, 0x4D, 0x54, 0x00}; /* "GMT" */
-static const UChar UNKNOWN_ZONE_ID[] = {0x45, 0x74, 0x63, 0x2F, 0x55, 0x6E, 0x6B, 0x6E, 0x6F, 0x77, 0x6E, 0x00}; /* "Etc/Unknown" */
+static const char16_t GMT_ID[] = {0x47, 0x4D, 0x54, 0x00}; /* "GMT" */
+static const char16_t UNKNOWN_ZONE_ID[] = {0x45, 0x74, 0x63, 0x2F, 0x55, 0x6E, 0x6B, 0x6E, 0x6F, 0x77, 0x6E, 0x00}; /* "Etc/Unknown" */
static const int32_t GMT_ID_LENGTH = 3;
static const int32_t UNKNOWN_ZONE_ID_LENGTH = 11;
-static icu::TimeZone* DEFAULT_ZONE = NULL;
+static icu::TimeZone* DEFAULT_ZONE = nullptr;
static icu::UInitOnce gDefaultZoneInitOnce {};
alignas(icu::SimpleTimeZone)
@@ -127,9 +127,9 @@ static UBool gStaticZonesInitialized = false; // Whether the static zones are in
static char TZDATA_VERSION[16];
static icu::UInitOnce gTZDataVersionInitOnce {};
-static int32_t* MAP_SYSTEM_ZONES = NULL;
-static int32_t* MAP_CANONICAL_SYSTEM_ZONES = NULL;
-static int32_t* MAP_CANONICAL_SYSTEM_LOCATION_ZONES = NULL;
+static int32_t* MAP_SYSTEM_ZONES = nullptr;
+static int32_t* MAP_CANONICAL_SYSTEM_ZONES = nullptr;
+static int32_t* MAP_CANONICAL_SYSTEM_LOCATION_ZONES = nullptr;
static int32_t LEN_SYSTEM_ZONES = 0;
static int32_t LEN_CANONICAL_SYSTEM_ZONES = 0;
@@ -140,11 +140,11 @@ static icu::UInitOnce gCanonicalZonesInitOnce {};
static icu::UInitOnce gCanonicalLocationZonesInitOnce {};
U_CDECL_BEGIN
-static UBool U_CALLCONV timeZone_cleanup(void)
+static UBool U_CALLCONV timeZone_cleanup()
{
U_NAMESPACE_USE
delete DEFAULT_ZONE;
- DEFAULT_ZONE = NULL;
+ DEFAULT_ZONE = nullptr;
gDefaultZoneInitOnce.reset();
if (gStaticZonesInitialized) {
@@ -181,7 +181,7 @@ U_NAMESPACE_BEGIN
static int32_t findInStringArray(UResourceBundle* array, const UnicodeString& id, UErrorCode &status)
{
UnicodeString copy;
- const UChar *u;
+ const char16_t *u;
int32_t len;
int32_t start = 0;
@@ -223,12 +223,12 @@ static int32_t findInStringArray(UResourceBundle* array, const UnicodeString& id
* Fetch a specific zone by name. Replaces the getByKey call.
* @param top Top timezone resource
* @param id Time zone ID
- * @param oldbundle Bundle for reuse (or NULL). see 'ures_open()'
+ * @param oldbundle Bundle for reuse (or nullptr). see 'ures_open()'
* @return the zone's bundle if found, or undefined if error. Reuses oldbundle.
*/
static UResourceBundle* getZoneByName(const UResourceBundle* top, const UnicodeString& id, UResourceBundle *oldbundle, UErrorCode& status) {
// load the Rules object
- UResourceBundle *tmp = ures_getByKey(top, kNAMES, NULL, &status);
+ UResourceBundle *tmp = ures_getByKey(top, kNAMES, nullptr, &status);
// search for the string
int32_t idx = findInStringArray(tmp, id, status);
@@ -237,7 +237,7 @@ static UResourceBundle* getZoneByName(const UResourceBundle* top, const UnicodeS
// not found
status = U_MISSING_RESOURCE_ERROR;
//ures_close(oldbundle);
- //oldbundle = NULL;
+ //oldbundle = nullptr;
} else {
U_DEBUG_TZ_MSG(("gzbn: oldbundle= size %d, type %d, %s\n", ures_getSize(tmp), ures_getType(tmp), u_errorName(status)));
tmp = ures_getByKey(top, kZONES, tmp, &status); // get Zones object from top
@@ -248,7 +248,7 @@ static UResourceBundle* getZoneByName(const UResourceBundle* top, const UnicodeS
ures_close(tmp);
if(U_FAILURE(status)) {
//ures_close(oldbundle);
- return NULL;
+ return nullptr;
} else {
return oldbundle;
}
@@ -291,7 +291,7 @@ static UResourceBundle* openOlsonResource(const UnicodeString& id,
if (ures_getType(&res) == URES_INT) {
int32_t deref = ures_getInt(&res, &ec) + 0;
U_DEBUG_TZ_MSG(("getInt: %s - type is %d\n", u_errorName(ec), ures_getType(&res)));
- UResourceBundle *ares = ures_getByKey(top, kZONES, NULL, &ec); // dereference Zones section
+ UResourceBundle *ares = ures_getByKey(top, kZONES, nullptr, &ec); // dereference Zones section
ures_getByIndex(ares, deref, &res, &ec);
ures_close(ares);
U_DEBUG_TZ_MSG(("alias to #%d (%s) - %s\n", deref, "??", u_errorName(ec)));
@@ -328,7 +328,7 @@ TimeZone::getUnknown()
}
const TimeZone* U_EXPORT2
-TimeZone::getGMT(void)
+TimeZone::getGMT()
{
umtx_initOnce(gStaticZonesInitOnce, &initStaticTimeZones);
return reinterpret_cast<SimpleTimeZone*>(gRawGMT);
@@ -389,7 +389,7 @@ namespace {
TimeZone*
createSystemTimeZone(const UnicodeString& id, UErrorCode& ec) {
if (U_FAILURE(ec)) {
- return NULL;
+ return nullptr;
}
TimeZone* z = 0;
StackUResourceBundle res;
@@ -398,7 +398,7 @@ createSystemTimeZone(const UnicodeString& id, UErrorCode& ec) {
U_DEBUG_TZ_MSG(("post-err=%s\n", u_errorName(ec)));
if (U_SUCCESS(ec)) {
z = new OlsonTimeZone(top, res.getAlias(), id, ec);
- if (z == NULL) {
+ if (z == nullptr) {
ec = U_MEMORY_ALLOCATION_ERROR;
U_DEBUG_TZ_MSG(("cstz: olson time zone failed to initialize - err %s\n", u_errorName(ec)));
}
@@ -407,7 +407,7 @@ createSystemTimeZone(const UnicodeString& id, UErrorCode& ec) {
if (U_FAILURE(ec)) {
U_DEBUG_TZ_MSG(("cstz: failed to create, err %s\n", u_errorName(ec)));
delete z;
- z = NULL;
+ z = nullptr;
}
return z;
}
@@ -433,16 +433,16 @@ TimeZone::createTimeZone(const UnicodeString& ID)
* 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
+ * We cannot return nullptr, because that would break compatibility
* with the JDK.
*/
TimeZone* result = createSystemTimeZone(ID);
- if (result == NULL) {
+ if (result == nullptr) {
U_DEBUG_TZ_MSG(("failed to load system time zone with id - falling to custom"));
result = createCustomTimeZone(ID);
}
- if (result == NULL) {
+ if (result == nullptr) {
U_DEBUG_TZ_MSG(("failed to load time zone with id - falling to Etc/Unknown(GMT)"));
const TimeZone& unknown = getUnknown();
// Unknown zone uses statically allocated memory, so creation of it can never fail due to OOM.
@@ -477,7 +477,7 @@ TimeZone::detectHostTimeZone()
// Invert sign because UNIX semantics are backwards
rawOffset = uprv_timezone() * -U_MILLIS_PER_SECOND;
- TimeZone* hostZone = NULL;
+ TimeZone* hostZone = nullptr;
UnicodeString hostStrID(hostID, -1, US_INV);
@@ -496,18 +496,18 @@ TimeZone::detectHostTimeZone()
#endif
int32_t hostIDLen = hostStrID.length();
- if (hostZone != NULL && rawOffset != hostZone->getRawOffset()
+ if (hostZone != nullptr && rawOffset != hostZone->getRawOffset()
&& (3 <= hostIDLen && hostIDLen <= 4))
{
// Uh oh. This probably wasn't a good id.
// It was probably an ambiguous abbreviation
delete hostZone;
- hostZone = NULL;
+ hostZone = nullptr;
}
// Construct a fixed standard zone with the host's ID
// and raw offset.
- if (hostZone == NULL && hostDetectionSucceeded) {
+ if (hostZone == nullptr && hostDetectionSucceeded) {
hostZone = new SimpleTimeZone(rawOffset, hostStrID);
}
@@ -516,7 +516,7 @@ TimeZone::detectHostTimeZone()
// Note: This is extremely unlikely situation. If
// new SimpleTimeZone(...) above fails, the following
// code may also fail.
- if (hostZone == NULL) {
+ if (hostZone == nullptr) {
// Unknown zone uses static allocated memory, so it must always exist.
// However, clone() allocates memory and can fail.
hostZone = TimeZone::getUnknown().clone();
@@ -531,8 +531,8 @@ static UMutex gDefaultZoneMutex;
/**
* Initialize DEFAULT_ZONE from the system default time zone.
- * Upon return, DEFAULT_ZONE will not be NULL, unless operator new()
- * returns NULL.
+ * Upon return, DEFAULT_ZONE will not be nullptr, unless operator new()
+ * returns nullptr.
*/
static void U_CALLCONV initDefault()
{
@@ -541,7 +541,7 @@ static void U_CALLCONV initDefault()
Mutex lock(&gDefaultZoneMutex);
// If setDefault() has already been called we can skip getting the
// default zone information from the system.
- if (DEFAULT_ZONE != NULL) {
+ if (DEFAULT_ZONE != nullptr) {
return;
}
@@ -560,7 +560,7 @@ static void U_CALLCONV initDefault()
TimeZone *default_zone = TimeZone::detectHostTimeZone();
- U_ASSERT(DEFAULT_ZONE == NULL);
+ U_ASSERT(DEFAULT_ZONE == nullptr);
DEFAULT_ZONE = default_zone;
}
@@ -573,7 +573,7 @@ TimeZone::createDefault()
umtx_initOnce(gDefaultZoneInitOnce, initDefault);
{
Mutex lock(&gDefaultZoneMutex);
- return (DEFAULT_ZONE != NULL) ? DEFAULT_ZONE->clone() : NULL;
+ return (DEFAULT_ZONE != nullptr) ? DEFAULT_ZONE->clone() : nullptr;
}
}
@@ -600,7 +600,7 @@ TimeZone::forLocaleOrDefault(const Locale& locale)
void U_EXPORT2
TimeZone::adoptDefault(TimeZone* zone)
{
- if (zone != NULL)
+ if (zone != nullptr)
{
{
Mutex lock(&gDefaultZoneMutex);
@@ -630,7 +630,7 @@ static void U_CALLCONV initMap(USystemTimeZoneType type, UErrorCode& ec) {
if (U_SUCCESS(ec)) {
int32_t size = ures_getSize(res);
int32_t *m = (int32_t *)uprv_malloc(size * sizeof(int32_t));
- if (m == NULL) {
+ if (m == nullptr) {
ec = U_MEMORY_ALLOCATION_ERROR;
} else {
int32_t numEntries = 0;
@@ -655,7 +655,7 @@ static void U_CALLCONV initMap(USystemTimeZoneType type, UErrorCode& ec) {
}
}
if (type == UCAL_ZONE_TYPE_CANONICAL_LOCATION) {
- const UChar *region = TimeZone::getRegion(id, ec);
+ const char16_t *region = TimeZone::getRegion(id, ec);
if (U_FAILURE(ec)) {
break;
}
@@ -669,7 +669,7 @@ static void U_CALLCONV initMap(USystemTimeZoneType type, UErrorCode& ec) {
if (U_SUCCESS(ec)) {
int32_t *tmp = m;
m = (int32_t *)uprv_realloc(tmp, numEntries * sizeof(int32_t));
- if (m == NULL) {
+ if (m == nullptr) {
// realloc failed.. use the original one even it has unused
// area at the end
m = tmp;
@@ -677,17 +677,17 @@ static void U_CALLCONV initMap(USystemTimeZoneType type, UErrorCode& ec) {
switch(type) {
case UCAL_ZONE_TYPE_ANY:
- U_ASSERT(MAP_SYSTEM_ZONES == NULL);
+ U_ASSERT(MAP_SYSTEM_ZONES == nullptr);
MAP_SYSTEM_ZONES = m;
LEN_SYSTEM_ZONES = numEntries;
break;
case UCAL_ZONE_TYPE_CANONICAL:
- U_ASSERT(MAP_CANONICAL_SYSTEM_ZONES == NULL);
+ U_ASSERT(MAP_CANONICAL_SYSTEM_ZONES == nullptr);
MAP_CANONICAL_SYSTEM_ZONES = m;
LEN_CANONICAL_SYSTEM_ZONES = numEntries;
break;
case UCAL_ZONE_TYPE_CANONICAL_LOCATION:
- U_ASSERT(MAP_CANONICAL_SYSTEM_LOCATION_ZONES == NULL);
+ U_ASSERT(MAP_CANONICAL_SYSTEM_LOCATION_ZONES == nullptr);
MAP_CANONICAL_SYSTEM_LOCATION_ZONES = m;
LEN_CANONICAL_SYSTEM_LOCATION_ZONES = numEntries;
break;
@@ -756,7 +756,7 @@ class TZEnumeration : public StringEnumeration {
private:
// Map into to zones. Our results are zone[map[i]] for
- // i=0..len-1, where zone[i] is the i-th Olson zone. If map==NULL
+ // i=0..len-1, where zone[i] is the i-th Olson zone. If map==nullptr
// then our results are zone[i] for i=0..len-1. Len will be zero
// if the zone data could not be loaded.
int32_t* map;
@@ -766,13 +766,13 @@ private:
TZEnumeration(int32_t* mapData, int32_t mapLen, UBool adoptMapData) : pos(0) {
map = mapData;
- localMap = adoptMapData ? mapData : NULL;
+ localMap = adoptMapData ? mapData : nullptr;
len = mapLen;
}
UBool getID(int32_t i, UErrorCode& ec) {
int32_t idLen = 0;
- const UChar* id = NULL;
+ const char16_t* id = nullptr;
UResourceBundle *top = ures_openDirect(0, kZONEINFO, &ec);
top = ures_getByKey(top, kNAMES, top, &ec); // dereference Zones section
id = ures_getStringByIndex(top, i, &idLen, &ec);
@@ -789,9 +789,9 @@ private:
static int32_t* getMap(USystemTimeZoneType type, int32_t& len, UErrorCode& ec) {
len = 0;
if (U_FAILURE(ec)) {
- return NULL;
+ return nullptr;
}
- int32_t* m = NULL;
+ int32_t* m = nullptr;
switch (type) {
case UCAL_ZONE_TYPE_ANY:
umtx_initOnce(gSystemZonesInitOnce, &initMap, type, ec);
@@ -810,7 +810,7 @@ private:
break;
default:
ec = U_ILLEGAL_ARGUMENT_ERROR;
- m = NULL;
+ m = nullptr;
len = 0;
break;
}
@@ -824,28 +824,28 @@ public:
static TZEnumeration* create(USystemTimeZoneType type, const char* region, const int32_t* rawOffset, UErrorCode& ec) {
if (U_FAILURE(ec)) {
- return NULL;
+ return nullptr;
}
int32_t baseLen;
int32_t *baseMap = getMap(type, baseLen, ec);
if (U_FAILURE(ec)) {
- return NULL;
+ return nullptr;
}
// If any additional conditions are available,
// create instance local map filtered by the conditions.
- int32_t *filteredMap = NULL;
+ int32_t *filteredMap = nullptr;
int32_t numEntries = 0;
- if (region != NULL || rawOffset != NULL) {
+ if (region != nullptr || rawOffset != nullptr) {
int32_t filteredMapSize = DEFAULT_FILTERED_MAP_SIZE;
filteredMap = (int32_t *)uprv_malloc(filteredMapSize * sizeof(int32_t));
- if (filteredMap == NULL) {
+ if (filteredMap == nullptr) {
ec = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
// Walk through the base map
@@ -857,7 +857,7 @@ public:
if (U_FAILURE(ec)) {
break;
}
- if (region != NULL) {
+ if (region != nullptr) {
// Filter by region
char tzregion[4]; // max 3 letters + null term
TimeZone::getRegion(id, tzregion, sizeof(tzregion), ec);
@@ -869,7 +869,7 @@ public:
continue;
}
}
- if (rawOffset != NULL) {
+ if (rawOffset != nullptr) {
// Filter by raw offset
// Note: This is VERY inefficient
TimeZone *z = createSystemTimeZone(id, ec);
@@ -887,7 +887,7 @@ public:
if (filteredMapSize <= numEntries) {
filteredMapSize += MAP_INCREMENT_SIZE;
int32_t *tmp = (int32_t *)uprv_realloc(filteredMap, filteredMapSize * sizeof(int32_t));
- if (tmp == NULL) {
+ if (tmp == nullptr) {
ec = U_MEMORY_ALLOCATION_ERROR;
break;
} else {
@@ -900,37 +900,37 @@ public:
if (U_FAILURE(ec)) {
uprv_free(filteredMap);
- filteredMap = NULL;
+ filteredMap = nullptr;
}
ures_close(res);
}
- TZEnumeration *result = NULL;
+ TZEnumeration *result = nullptr;
if (U_SUCCESS(ec)) {
// Finally, create a new enumeration instance
- if (filteredMap == NULL) {
+ if (filteredMap == nullptr) {
result = new TZEnumeration(baseMap, baseLen, false);
} else {
result = new TZEnumeration(filteredMap, numEntries, true);
- filteredMap = NULL;
+ filteredMap = nullptr;
}
- if (result == NULL) {
+ if (result == nullptr) {
ec = U_MEMORY_ALLOCATION_ERROR;
}
}
- if (filteredMap != NULL) {
+ if (filteredMap != nullptr) {
uprv_free(filteredMap);
}
return result;
}
- TZEnumeration(const TZEnumeration &other) : StringEnumeration(), map(NULL), localMap(NULL), len(0), pos(0) {
- if (other.localMap != NULL) {
+ TZEnumeration(const TZEnumeration &other) : StringEnumeration(), map(nullptr), localMap(nullptr), len(0), pos(0) {
+ if (other.localMap != nullptr) {
localMap = (int32_t *)uprv_malloc(other.len * sizeof(int32_t));
- if (localMap != NULL) {
+ if (localMap != nullptr) {
len = other.len;
uprv_memcpy(localMap, other.localMap, len * sizeof(int32_t));
pos = other.pos;
@@ -938,11 +938,11 @@ public:
} else {
len = 0;
pos = 0;
- map = NULL;
+ map = nullptr;
}
} else {
map = other.map;
- localMap = NULL;
+ localMap = nullptr;
len = other.len;
pos = other.pos;
}
@@ -959,7 +959,7 @@ public:
}
virtual const UnicodeString* snext(UErrorCode& status) override {
- if (U_SUCCESS(status) && map != NULL && pos < len) {
+ if (U_SUCCESS(status) && map != nullptr && pos < len) {
getID(map[pos], status);
++pos;
return &unistr;
@@ -972,12 +972,12 @@ public:
}
public:
- static UClassID U_EXPORT2 getStaticClassID(void);
- virtual UClassID getDynamicClassID(void) const override;
+ static UClassID U_EXPORT2 getStaticClassID();
+ virtual UClassID getDynamicClassID() const override;
};
TZEnumeration::~TZEnumeration() {
- if (localMap != NULL) {
+ if (localMap != nullptr) {
uprv_free(localMap);
}
}
@@ -995,17 +995,17 @@ TimeZone::createTimeZoneIDEnumeration(
StringEnumeration* U_EXPORT2
TimeZone::createEnumeration(UErrorCode& status) {
- return TZEnumeration::create(UCAL_ZONE_TYPE_ANY, NULL, NULL, status);
+ return TZEnumeration::create(UCAL_ZONE_TYPE_ANY, nullptr, nullptr, status);
}
StringEnumeration* U_EXPORT2
TimeZone::createEnumerationForRawOffset(int32_t rawOffset, UErrorCode& status) {
- return TZEnumeration::create(UCAL_ZONE_TYPE_ANY, NULL, &rawOffset, status);
+ return TZEnumeration::create(UCAL_ZONE_TYPE_ANY, nullptr, &rawOffset, status);
}
StringEnumeration* U_EXPORT2
TimeZone::createEnumerationForRegion(const char* region, UErrorCode& status) {
- return TZEnumeration::create(UCAL_ZONE_TYPE_ANY, region, NULL, status);
+ return TZEnumeration::create(UCAL_ZONE_TYPE_ANY, region, nullptr, status);
}
//
@@ -1070,10 +1070,10 @@ TimeZone::getEquivalentID(const UnicodeString& id, int32_t index) {
}
}
if (zone >= 0) {
- UResourceBundle *ares = ures_getByKey(top, kNAMES, NULL, &ec); // dereference Zones section
+ UResourceBundle *ares = ures_getByKey(top, kNAMES, nullptr, &ec); // dereference Zones section
if (U_SUCCESS(ec)) {
int32_t idLen = 0;
- const UChar* id2 = ures_getStringByIndex(ares, zone, &idLen, &ec);
+ const char16_t* id2 = ures_getStringByIndex(ares, zone, &idLen, &ec);
result.fastCopyFrom(UnicodeString(true, id2, idLen));
U_DEBUG_TZ_MSG(("gei(%d) -> %d, len%d, %s\n", index, zone, result.length(), u_errorName(ec)));
}
@@ -1092,18 +1092,18 @@ TimeZone::getEquivalentID(const UnicodeString& id, int32_t index) {
// These methods are used by ZoneMeta class only.
-const UChar*
+const char16_t*
TimeZone::findID(const UnicodeString& id) {
- const UChar *result = NULL;
+ const char16_t *result = nullptr;
UErrorCode ec = U_ZERO_ERROR;
- UResourceBundle *rb = ures_openDirect(NULL, kZONEINFO, &ec);
+ UResourceBundle *rb = ures_openDirect(nullptr, kZONEINFO, &ec);
// resolve zone index by name
- UResourceBundle *names = ures_getByKey(rb, kNAMES, NULL, &ec);
+ UResourceBundle *names = ures_getByKey(rb, kNAMES, nullptr, &ec);
int32_t idx = findInStringArray(names, id, ec);
- result = ures_getStringByIndex(names, idx, NULL, &ec);
+ result = ures_getStringByIndex(names, idx, nullptr, &ec);
if (U_FAILURE(ec)) {
- result = NULL;
+ result = nullptr;
}
ures_close(names);
ures_close(rb);
@@ -1111,16 +1111,16 @@ TimeZone::findID(const UnicodeString& id) {
}
-const UChar*
+const char16_t*
TimeZone::dereferOlsonLink(const UnicodeString& id) {
- const UChar *result = NULL;
+ const char16_t *result = nullptr;
UErrorCode ec = U_ZERO_ERROR;
- UResourceBundle *rb = ures_openDirect(NULL, kZONEINFO, &ec);
+ UResourceBundle *rb = ures_openDirect(nullptr, kZONEINFO, &ec);
// resolve zone index by name
- UResourceBundle *names = ures_getByKey(rb, kNAMES, NULL, &ec);
+ UResourceBundle *names = ures_getByKey(rb, kNAMES, nullptr, &ec);
int32_t idx = findInStringArray(names, id, ec);
- result = ures_getStringByIndex(names, idx, NULL, &ec);
+ result = ures_getStringByIndex(names, idx, nullptr, &ec);
// open the zone bundle by index
ures_getByKey(rb, kZONES, rb, &ec);
@@ -1130,7 +1130,7 @@ TimeZone::dereferOlsonLink(const UnicodeString& id) {
if (ures_getType(rb) == URES_INT) {
// this is a link - dereference the link
int32_t deref = ures_getInt(rb, &ec);
- const UChar* tmp = ures_getStringByIndex(names, deref, NULL, &ec);
+ const char16_t* tmp = ures_getStringByIndex(names, deref, nullptr, &ec);
if (U_SUCCESS(ec)) {
result = tmp;
}
@@ -1143,27 +1143,27 @@ TimeZone::dereferOlsonLink(const UnicodeString& id) {
return result;
}
-const UChar*
+const char16_t*
TimeZone::getRegion(const UnicodeString& id) {
UErrorCode status = U_ZERO_ERROR;
return getRegion(id, status);
}
-const UChar*
+const char16_t*
TimeZone::getRegion(const UnicodeString& id, UErrorCode& status) {
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
- const UChar *result = NULL;
- UResourceBundle *rb = ures_openDirect(NULL, kZONEINFO, &status);
+ const char16_t *result = nullptr;
+ UResourceBundle *rb = ures_openDirect(nullptr, kZONEINFO, &status);
// resolve zone index by name
- UResourceBundle *res = ures_getByKey(rb, kNAMES, NULL, &status);
+ UResourceBundle *res = ures_getByKey(rb, kNAMES, nullptr, &status);
int32_t idx = findInStringArray(res, id, status);
// get region mapping
ures_getByKey(rb, kREGIONS, res, &status);
- const UChar *tmp = ures_getStringByIndex(res, idx, NULL, &status);
+ const char16_t *tmp = ures_getStringByIndex(res, idx, nullptr, &status);
if (U_SUCCESS(status)) {
result = tmp;
}
@@ -1185,13 +1185,13 @@ TimeZone::getRegion(const UnicodeString& id, char *region, int32_t capacity, UEr
return 0;
}
- const UChar *uregion = NULL;
+ const char16_t *uregion = nullptr;
// "Etc/Unknown" is not a system zone ID,
// but in the zone data
if (id.compare(UNKNOWN_ZONE_ID, UNKNOWN_ZONE_ID_LENGTH) != 0) {
uregion = getRegion(id);
}
- if (uregion == NULL) {
+ if (uregion == nullptr) {
status = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -1348,7 +1348,7 @@ TimeZone::createCustomTimeZone(const UnicodeString& id)
int32_t offset = sign * ((hour * 60 + min) * 60 + sec) * 1000;
return new SimpleTimeZone(offset, customID);
}
- return NULL;
+ return nullptr;
}
UnicodeString&
@@ -1495,33 +1495,33 @@ TimeZone::formatCustomID(int32_t hour, int32_t min, int32_t sec,
id.setTo(GMT_ID, GMT_ID_LENGTH);
if (hour | min | sec) {
if (negative) {
- id += (UChar)MINUS;
+ id += (char16_t)MINUS;
} else {
- id += (UChar)PLUS;
+ id += (char16_t)PLUS;
}
if (hour < 10) {
- id += (UChar)ZERO_DIGIT;
+ id += (char16_t)ZERO_DIGIT;
} else {
- id += (UChar)(ZERO_DIGIT + hour/10);
+ id += (char16_t)(ZERO_DIGIT + hour/10);
}
- id += (UChar)(ZERO_DIGIT + hour%10);
- id += (UChar)COLON;
+ id += (char16_t)(ZERO_DIGIT + hour%10);
+ id += (char16_t)COLON;
if (min < 10) {
- id += (UChar)ZERO_DIGIT;
+ id += (char16_t)ZERO_DIGIT;
} else {
- id += (UChar)(ZERO_DIGIT + min/10);
+ id += (char16_t)(ZERO_DIGIT + min/10);
}
- id += (UChar)(ZERO_DIGIT + min%10);
+ id += (char16_t)(ZERO_DIGIT + min%10);
if (sec) {
- id += (UChar)COLON;
+ id += (char16_t)COLON;
if (sec < 10) {
- id += (UChar)ZERO_DIGIT;
+ id += (char16_t)ZERO_DIGIT;
} else {
- id += (UChar)(ZERO_DIGIT + sec/10);
+ id += (char16_t)(ZERO_DIGIT + sec/10);
}
- id += (UChar)(ZERO_DIGIT + sec%10);
+ id += (char16_t)(ZERO_DIGIT + sec%10);
}
}
return id;
@@ -1539,8 +1539,8 @@ static void U_CALLCONV initTZDataVersion(UErrorCode &status) {
ucln_i18n_registerCleanup(UCLN_I18N_TIMEZONE, timeZone_cleanup);
int32_t len = 0;
StackUResourceBundle bundle;
- ures_openDirectFillIn(bundle.getAlias(), NULL, kZONEINFO, &status);
- const UChar *tzver = ures_getStringByKey(bundle.getAlias(), kTZVERSION, &len, &status);
+ ures_openDirectFillIn(bundle.getAlias(), nullptr, kZONEINFO, &status);
+ const char16_t *tzver = ures_getStringByKey(bundle.getAlias(), kTZVERSION, &len, &status);
if (U_SUCCESS(status)) {
if (len >= (int32_t)sizeof(TZDATA_VERSION)) {
@@ -1592,6 +1592,22 @@ TimeZone::getCanonicalID(const UnicodeString& id, UnicodeString& canonicalID, UB
}
UnicodeString&
+TimeZone::getIanaID(const UnicodeString& id, UnicodeString& ianaID, UErrorCode& status)
+{
+ ianaID.remove();
+ if (U_FAILURE(status)) {
+ return ianaID;
+ }
+ if (id.compare(ConstChar16Ptr(UNKNOWN_ZONE_ID), UNKNOWN_ZONE_ID_LENGTH) == 0) {
+ status = U_ILLEGAL_ARGUMENT_ERROR;
+ ianaID.setToBogus();
+ } else {
+ ZoneMeta::getIanaID(id, ianaID, status);
+ }
+ return ianaID;
+}
+
+UnicodeString&
TimeZone::getWindowsID(const UnicodeString& id, UnicodeString& winid, UErrorCode& status) {
winid.remove();
if (U_FAILURE(status)) {
@@ -1613,14 +1629,14 @@ TimeZone::getWindowsID(const UnicodeString& id, UnicodeString& winid, UErrorCode
return winid;
}
- UResourceBundle *mapTimezones = ures_openDirect(NULL, "windowsZones", &status);
+ UResourceBundle *mapTimezones = ures_openDirect(nullptr, "windowsZones", &status);
ures_getByKey(mapTimezones, "mapTimezones", mapTimezones, &status);
if (U_FAILURE(status)) {
return winid;
}
- UResourceBundle *winzone = NULL;
+ UResourceBundle *winzone = nullptr;
UBool found = false;
while (ures_hasNext(mapTimezones) && !found) {
winzone = ures_getNextResource(mapTimezones, winzone, &status);
@@ -1630,7 +1646,7 @@ TimeZone::getWindowsID(const UnicodeString& id, UnicodeString& winid, UErrorCode
if (ures_getType(winzone) != URES_TABLE) {
continue;
}
- UResourceBundle *regionalData = NULL;
+ UResourceBundle *regionalData = nullptr;
while (ures_hasNext(winzone) && !found) {
regionalData = ures_getNextResource(winzone, regionalData, &status);
if (U_FAILURE(status)) {
@@ -1640,16 +1656,16 @@ TimeZone::getWindowsID(const UnicodeString& id, UnicodeString& winid, UErrorCode
continue;
}
int32_t len;
- const UChar *tzids = ures_getString(regionalData, &len, &status);
+ const char16_t *tzids = ures_getString(regionalData, &len, &status);
if (U_FAILURE(status)) {
break;
}
- const UChar *start = tzids;
+ const char16_t *start = tzids;
UBool hasNext = true;
while (hasNext) {
- const UChar *end = u_strchr(start, (UChar)0x20);
- if (end == NULL) {
+ const char16_t *end = u_strchr(start, (char16_t)0x20);
+ if (end == nullptr) {
end = tzids + len;
hasNext = false;
}
@@ -1678,7 +1694,7 @@ TimeZone::getIDForWindowsID(const UnicodeString& winid, const char* region, Unic
return id;
}
- UResourceBundle *zones = ures_openDirect(NULL, "windowsZones", &status);
+ UResourceBundle *zones = ures_openDirect(nullptr, "windowsZones", &status);
ures_getByKey(zones, "mapTimezones", zones, &status);
if (U_FAILURE(status)) {
ures_close(zones);
@@ -1702,16 +1718,16 @@ TimeZone::getIDForWindowsID(const UnicodeString& winid, const char* region, Unic
return id;
}
- const UChar *tzid = NULL;
+ const char16_t *tzid = nullptr;
int32_t len = 0;
UBool gotID = false;
if (region) {
- const UChar *tzids = ures_getStringByKey(zones, region, &len, &tmperr); // use tmperr, because
+ const char16_t *tzids = ures_getStringByKey(zones, region, &len, &tmperr); // use tmperr, because
// regional mapping is optional
if (U_SUCCESS(tmperr)) {
// first ID delimited by space is the default one
- const UChar *end = u_strchr(tzids, (UChar)0x20);
- if (end == NULL) {
+ const char16_t *end = u_strchr(tzids, (char16_t)0x20);
+ if (end == nullptr) {
id.setTo(tzids, -1);
} else {
id.setTo(tzids, static_cast<int32_t>(end - tzids));
diff --git a/Build/source/libs/icu/icu-src/source/i18n/titletrn.cpp b/Build/source/libs/icu/icu-src/source/i18n/titletrn.cpp
index 62e41f920cb..d3732893a78 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/titletrn.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/titletrn.cpp
@@ -28,7 +28,7 @@ U_NAMESPACE_BEGIN
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(TitlecaseTransliterator)
TitlecaseTransliterator::TitlecaseTransliterator() :
- CaseMapTransliterator(UNICODE_STRING("Any-Title", 9), NULL)
+ CaseMapTransliterator(UNICODE_STRING("Any-Title", 9), nullptr)
{
// Need to look back 2 characters in the case of "can't"
setMaximumContextLength(2);
@@ -117,7 +117,7 @@ void TitlecaseTransliterator::handleTransliterate(
csc.limit = offsets.contextLimit;
UnicodeString tmp;
- const UChar *s;
+ const char16_t *s;
int32_t textPos, delta, result;
for(textPos=offsets.start; textPos<offsets.limit;) {
diff --git a/Build/source/libs/icu/icu-src/source/i18n/tmunit.cpp b/Build/source/libs/icu/icu-src/source/i18n/tmunit.cpp
index 361aecb92ed..ffa67eddeb3 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/tmunit.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/tmunit.cpp
@@ -59,11 +59,11 @@ TimeUnit* U_EXPORT2
TimeUnit::createInstance(TimeUnit::UTimeUnitFields timeUnitField,
UErrorCode& status) {
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
if (timeUnitField < 0 || timeUnitField >= UTIMEUNIT_FIELD_COUNT) {
status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
return new TimeUnit(timeUnitField);
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/tmutamt.cpp b/Build/source/libs/icu/icu-src/source/i18n/tmutamt.cpp
index 2753c29374a..94fd8cfa97f 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/tmutamt.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/tmutamt.cpp
@@ -63,7 +63,7 @@ TimeUnitAmount::~TimeUnitAmount() {
const TimeUnit&
TimeUnitAmount::getTimeUnit() const {
- return (const TimeUnit&) getUnit();
+ return static_cast<const TimeUnit&>(getUnit());
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/tmutfmt.cpp b/Build/source/libs/icu/icu-src/source/i18n/tmutfmt.cpp
index 37e56b26a10..dc48b2ee2a4 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/tmutfmt.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/tmutfmt.cpp
@@ -11,37 +11,41 @@
#if !UCONFIG_NO_FORMATTING
+#include <utility>
+
#include "unicode/decimfmt.h"
#include "unicode/localpointer.h"
#include "plurrule_impl.h"
#include "uvector.h"
+#include "bytesinkutil.h"
#include "charstr.h"
#include "cmemory.h"
#include "cstring.h"
#include "hash.h"
+#include "ulocimp.h"
#include "uresimp.h"
#include "ureslocs.h"
#include "unicode/msgfmt.h"
#include "uassert.h"
-#define LEFT_CURLY_BRACKET ((UChar)0x007B)
-#define RIGHT_CURLY_BRACKET ((UChar)0x007D)
-#define SPACE ((UChar)0x0020)
-#define DIGIT_ZERO ((UChar)0x0030)
-#define LOW_S ((UChar)0x0073)
-#define LOW_M ((UChar)0x006D)
-#define LOW_I ((UChar)0x0069)
-#define LOW_N ((UChar)0x006E)
-#define LOW_H ((UChar)0x0068)
-#define LOW_W ((UChar)0x0077)
-#define LOW_D ((UChar)0x0064)
-#define LOW_Y ((UChar)0x0079)
-#define LOW_Z ((UChar)0x007A)
-#define LOW_E ((UChar)0x0065)
-#define LOW_R ((UChar)0x0072)
-#define LOW_O ((UChar)0x006F)
-#define LOW_N ((UChar)0x006E)
-#define LOW_T ((UChar)0x0074)
+#define LEFT_CURLY_BRACKET ((char16_t)0x007B)
+#define RIGHT_CURLY_BRACKET ((char16_t)0x007D)
+#define SPACE ((char16_t)0x0020)
+#define DIGIT_ZERO ((char16_t)0x0030)
+#define LOW_S ((char16_t)0x0073)
+#define LOW_M ((char16_t)0x006D)
+#define LOW_I ((char16_t)0x0069)
+#define LOW_N ((char16_t)0x006E)
+#define LOW_H ((char16_t)0x0068)
+#define LOW_W ((char16_t)0x0077)
+#define LOW_D ((char16_t)0x0064)
+#define LOW_Y ((char16_t)0x0079)
+#define LOW_Z ((char16_t)0x007A)
+#define LOW_E ((char16_t)0x0065)
+#define LOW_R ((char16_t)0x0072)
+#define LOW_O ((char16_t)0x006F)
+#define LOW_N ((char16_t)0x006E)
+#define LOW_T ((char16_t)0x0074)
//TODO: define in compile time
@@ -68,26 +72,26 @@ static const char gTimeUnitMinute[] = "minute";
static const char gTimeUnitSecond[] = "second";
static const char gPluralCountOther[] = "other";
-static const UChar DEFAULT_PATTERN_FOR_SECOND[] = {LEFT_CURLY_BRACKET, DIGIT_ZERO, RIGHT_CURLY_BRACKET, SPACE, LOW_S, 0};
-static const UChar DEFAULT_PATTERN_FOR_MINUTE[] = {LEFT_CURLY_BRACKET, DIGIT_ZERO, RIGHT_CURLY_BRACKET, SPACE, LOW_M, LOW_I, LOW_N, 0};
-static const UChar DEFAULT_PATTERN_FOR_HOUR[] = {LEFT_CURLY_BRACKET, DIGIT_ZERO, RIGHT_CURLY_BRACKET, SPACE, LOW_H, 0};
-static const UChar DEFAULT_PATTERN_FOR_WEEK[] = {LEFT_CURLY_BRACKET, DIGIT_ZERO, RIGHT_CURLY_BRACKET, SPACE, LOW_W, 0};
-static const UChar DEFAULT_PATTERN_FOR_DAY[] = {LEFT_CURLY_BRACKET, DIGIT_ZERO, RIGHT_CURLY_BRACKET, SPACE, LOW_D, 0};
-static const UChar DEFAULT_PATTERN_FOR_MONTH[] = {LEFT_CURLY_BRACKET, DIGIT_ZERO, RIGHT_CURLY_BRACKET, SPACE, LOW_M, 0};
-static const UChar DEFAULT_PATTERN_FOR_YEAR[] = {LEFT_CURLY_BRACKET, DIGIT_ZERO, RIGHT_CURLY_BRACKET, SPACE, LOW_Y, 0};
+static const char16_t DEFAULT_PATTERN_FOR_SECOND[] = {LEFT_CURLY_BRACKET, DIGIT_ZERO, RIGHT_CURLY_BRACKET, SPACE, LOW_S, 0};
+static const char16_t DEFAULT_PATTERN_FOR_MINUTE[] = {LEFT_CURLY_BRACKET, DIGIT_ZERO, RIGHT_CURLY_BRACKET, SPACE, LOW_M, LOW_I, LOW_N, 0};
+static const char16_t DEFAULT_PATTERN_FOR_HOUR[] = {LEFT_CURLY_BRACKET, DIGIT_ZERO, RIGHT_CURLY_BRACKET, SPACE, LOW_H, 0};
+static const char16_t DEFAULT_PATTERN_FOR_WEEK[] = {LEFT_CURLY_BRACKET, DIGIT_ZERO, RIGHT_CURLY_BRACKET, SPACE, LOW_W, 0};
+static const char16_t DEFAULT_PATTERN_FOR_DAY[] = {LEFT_CURLY_BRACKET, DIGIT_ZERO, RIGHT_CURLY_BRACKET, SPACE, LOW_D, 0};
+static const char16_t DEFAULT_PATTERN_FOR_MONTH[] = {LEFT_CURLY_BRACKET, DIGIT_ZERO, RIGHT_CURLY_BRACKET, SPACE, LOW_M, 0};
+static const char16_t DEFAULT_PATTERN_FOR_YEAR[] = {LEFT_CURLY_BRACKET, DIGIT_ZERO, RIGHT_CURLY_BRACKET, SPACE, LOW_Y, 0};
-static const UChar PLURAL_COUNT_ZERO[] = {LOW_Z, LOW_E, LOW_R, LOW_O, 0};
-static const UChar PLURAL_COUNT_ONE[] = {LOW_O, LOW_N, LOW_E, 0};
-static const UChar PLURAL_COUNT_TWO[] = {LOW_T, LOW_W, LOW_O, 0};
+static const char16_t PLURAL_COUNT_ZERO[] = {LOW_Z, LOW_E, LOW_R, LOW_O, 0};
+static const char16_t PLURAL_COUNT_ONE[] = {LOW_O, LOW_N, LOW_E, 0};
+static const char16_t PLURAL_COUNT_TWO[] = {LOW_T, LOW_W, LOW_O, 0};
TimeUnitFormat::TimeUnitFormat(UErrorCode& status) {
- initMeasureFormat(Locale::getDefault(), UMEASFMT_WIDTH_WIDE, NULL, status);
+ initMeasureFormat(Locale::getDefault(), UMEASFMT_WIDTH_WIDE, nullptr, status);
create(UTMUTFMT_FULL_STYLE, status);
}
TimeUnitFormat::TimeUnitFormat(const Locale& locale, UErrorCode& status) {
- initMeasureFormat(locale, UMEASFMT_WIDTH_WIDE, NULL, status);
+ initMeasureFormat(locale, UMEASFMT_WIDTH_WIDE, nullptr, status);
create(UTMUTFMT_FULL_STYLE, status);
}
@@ -95,13 +99,13 @@ TimeUnitFormat::TimeUnitFormat(const Locale& locale, UErrorCode& status) {
TimeUnitFormat::TimeUnitFormat(const Locale& locale, UTimeUnitFormatStyle style, UErrorCode& status) {
switch (style) {
case UTMUTFMT_FULL_STYLE:
- initMeasureFormat(locale, UMEASFMT_WIDTH_WIDE, NULL, status);
+ initMeasureFormat(locale, UMEASFMT_WIDTH_WIDE, nullptr, status);
break;
case UTMUTFMT_ABBREVIATED_STYLE:
- initMeasureFormat(locale, UMEASFMT_WIDTH_SHORT, NULL, status);
+ initMeasureFormat(locale, UMEASFMT_WIDTH_SHORT, nullptr, status);
break;
default:
- initMeasureFormat(locale, UMEASFMT_WIDTH_WIDE, NULL, status);
+ initMeasureFormat(locale, UMEASFMT_WIDTH_WIDE, nullptr, status);
break;
}
create(style, status);
@@ -120,7 +124,7 @@ TimeUnitFormat::TimeUnitFormat(const TimeUnitFormat& other)
copyHash(other.fTimeUnitToCountToPatterns[i], fTimeUnitToCountToPatterns[i], status);
} else {
delete fTimeUnitToCountToPatterns[i];
- fTimeUnitToCountToPatterns[i] = NULL;
+ fTimeUnitToCountToPatterns[i] = nullptr;
}
}
}
@@ -131,7 +135,7 @@ TimeUnitFormat::~TimeUnitFormat() {
i < TimeUnit::UTIMEUNIT_FIELD_COUNT;
i = (TimeUnit::UTimeUnitFields)(i+1)) {
deleteHash(fTimeUnitToCountToPatterns[i]);
- fTimeUnitToCountToPatterns[i] = NULL;
+ fTimeUnitToCountToPatterns[i] = nullptr;
}
}
@@ -152,7 +156,7 @@ TimeUnitFormat::operator=(const TimeUnitFormat& other) {
i < TimeUnit::UTIMEUNIT_FIELD_COUNT;
i = (TimeUnit::UTimeUnitFields)(i+1)) {
deleteHash(fTimeUnitToCountToPatterns[i]);
- fTimeUnitToCountToPatterns[i] = NULL;
+ fTimeUnitToCountToPatterns[i] = nullptr;
}
for (TimeUnit::UTimeUnitFields i = TimeUnit::UTIMEUNIT_YEAR;
i < TimeUnit::UTIMEUNIT_FIELD_COUNT;
@@ -163,7 +167,7 @@ TimeUnitFormat::operator=(const TimeUnitFormat& other) {
copyHash(other.fTimeUnitToCountToPatterns[i], fTimeUnitToCountToPatterns[i], status);
} else {
delete fTimeUnitToCountToPatterns[i];
- fTimeUnitToCountToPatterns[i] = NULL;
+ fTimeUnitToCountToPatterns[i] = nullptr;
}
}
fStyle = other.fStyle;
@@ -180,7 +184,7 @@ TimeUnitFormat::parseObject(const UnicodeString& source,
int32_t oldPos = pos.getIndex();
int32_t newPos = -1;
int32_t longestParseDistance = 0;
- UnicodeString* countOfLongestMatch = NULL;
+ UnicodeString* countOfLongestMatch = nullptr;
#ifdef TMUTFMT_DEBUG
char res[1000];
source.extract(0, source.length(), res, "UTF-8");
@@ -193,8 +197,8 @@ TimeUnitFormat::parseObject(const UnicodeString& source,
i = (TimeUnit::UTimeUnitFields)(i+1)) {
Hashtable* countToPatterns = fTimeUnitToCountToPatterns[i];
int32_t elemPos = UHASH_FIRST;
- const UHashElement* elem = NULL;
- while ((elem = countToPatterns->nextElement(elemPos)) != NULL){
+ const UHashElement* elem = nullptr;
+ while ((elem = countToPatterns->nextElement(elemPos)) != nullptr){
const UHashTok keyTok = elem->key;
UnicodeString* count = (UnicodeString*)keyTok.pointer;
#ifdef TMUTFMT_DEBUG
@@ -288,12 +292,12 @@ TimeUnitFormat::parseObject(const UnicodeString& source,
void
TimeUnitFormat::create(UTimeUnitFormatStyle style, UErrorCode& status) {
- // fTimeUnitToCountToPatterns[] must have its elements initialized to NULL first
+ // fTimeUnitToCountToPatterns[] must have its elements initialized to nullptr first
// before checking for failure status.
for (TimeUnit::UTimeUnitFields i = TimeUnit::UTIMEUNIT_YEAR;
i < TimeUnit::UTIMEUNIT_FIELD_COUNT;
i = (TimeUnit::UTimeUnitFields)(i+1)) {
- fTimeUnitToCountToPatterns[i] = NULL;
+ fTimeUnitToCountToPatterns[i] = nullptr;
}
if (U_FAILURE(status)) {
@@ -326,7 +330,7 @@ TimeUnitFormat::setup(UErrorCode& err) {
return;
}
UnicodeString* pluralCount;
- while ((pluralCount = const_cast<UnicodeString*>(keywords->snext(err))) != NULL) {
+ while ((pluralCount = const_cast<UnicodeString*>(keywords->snext(err))) != nullptr) {
pluralCounts.addElement(pluralCount, err);
}
readFromCurrentLocale(UTMUTFMT_FULL_STYLE, gUnitsTag, pluralCounts, err);
@@ -345,7 +349,7 @@ TimeUnitFormat::initDataMembers(UErrorCode& err){
i < TimeUnit::UTIMEUNIT_FIELD_COUNT;
i = (TimeUnit::UTimeUnitFields)(i+1)) {
deleteHash(fTimeUnitToCountToPatterns[i]);
- fTimeUnitToCountToPatterns[i] = NULL;
+ fTimeUnitToCountToPatterns[i] = nullptr;
}
}
@@ -375,7 +379,7 @@ struct TimeUnitFormatReadSink : public ResourceSink {
for (int32_t i = 0; units.getKeyAndValue(i, key, value); ++i) {
const char* timeUnitName = key;
- if (timeUnitName == NULL) {
+ if (timeUnitName == nullptr) {
continue;
}
@@ -400,7 +404,7 @@ struct TimeUnitFormatReadSink : public ResourceSink {
LocalPointer<Hashtable> localCountToPatterns;
Hashtable *countToPatterns =
timeUnitFormatObj->fTimeUnitToCountToPatterns[timeUnitField];
- if (countToPatterns == NULL) {
+ if (countToPatterns == nullptr) {
localCountToPatterns.adoptInsteadAndCheckErrorCode(
timeUnitFormatObj->initHash(errorCode), errorCode);
countToPatterns = localCountToPatterns.getAlias();
@@ -430,15 +434,15 @@ struct TimeUnitFormatReadSink : public ResourceSink {
}
MessageFormat** formatters =
(MessageFormat**)countToPatterns->get(pluralCountUniStr);
- if (formatters == NULL) {
+ if (formatters == nullptr) {
LocalMemory<MessageFormat *> localFormatters(
(MessageFormat **)uprv_malloc(UTMUTFMT_FORMAT_STYLE_COUNT*sizeof(MessageFormat*)));
if (localFormatters.isNull()) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
return;
}
- localFormatters[UTMUTFMT_FULL_STYLE] = NULL;
- localFormatters[UTMUTFMT_ABBREVIATED_STYLE] = NULL;
+ localFormatters[UTMUTFMT_FULL_STYLE] = nullptr;
+ localFormatters[UTMUTFMT_ABBREVIATED_STYLE] = nullptr;
countToPatterns->put(pluralCountUniStr, localFormatters.getAlias(), errorCode);
if (U_FAILURE(errorCode)) {
return;
@@ -448,7 +452,7 @@ struct TimeUnitFormatReadSink : public ResourceSink {
formatters[style] = messageFormat.orphan();
}
- if (timeUnitFormatObj->fTimeUnitToCountToPatterns[timeUnitField] == NULL) {
+ if (timeUnitFormatObj->fTimeUnitToCountToPatterns[timeUnitField] == nullptr) {
timeUnitFormatObj->fTimeUnitToCountToPatterns[timeUnitField] = localCountToPatterns.orphan();
}
}
@@ -471,7 +475,7 @@ TimeUnitFormat::readFromCurrentLocale(UTimeUnitFormatStyle style, const char* ke
UErrorCode status = U_ZERO_ERROR;
LocalUResourceBundlePointer rb(ures_open(U_ICUDATA_UNIT, getLocaleID(status), &status));
- LocalUResourceBundlePointer unitsRes(ures_getByKey(rb.getAlias(), key, NULL, &status));
+ LocalUResourceBundlePointer unitsRes(ures_getByKey(rb.getAlias(), key, nullptr, &status));
ures_getByKey(unitsRes.getAlias(), "duration", unitsRes.getAlias(), &status);
if (U_FAILURE(status)) {
return;
@@ -507,19 +511,19 @@ TimeUnitFormat::checkConsistency(UTimeUnitFormatStyle style, const char* key, UE
LocalPointer<StringEnumeration> keywords(
getPluralRules().getKeywords(err), err);
const UnicodeString* pluralCount;
- while (U_SUCCESS(err) && (pluralCount = keywords->snext(err)) != NULL) {
+ while (U_SUCCESS(err) && (pluralCount = keywords->snext(err)) != nullptr) {
for (int32_t i = 0; i < TimeUnit::UTIMEUNIT_FIELD_COUNT; ++i) {
// for each time unit,
// get all the patterns for each plural rule in this locale.
Hashtable* countToPatterns = fTimeUnitToCountToPatterns[i];
- if ( countToPatterns == NULL ) {
+ if ( countToPatterns == nullptr ) {
fTimeUnitToCountToPatterns[i] = countToPatterns = initHash(err);
if (U_FAILURE(err)) {
return;
}
}
MessageFormat** formatters = (MessageFormat**)countToPatterns->get(*pluralCount);
- if( formatters == NULL || formatters[style] == NULL ) {
+ if( formatters == nullptr || formatters[style] == nullptr ) {
// look through parents
const char* localeName = getLocaleID(err);
CharString pluralCountChars;
@@ -556,18 +560,21 @@ TimeUnitFormat::searchInLocaleChain(UTimeUnitFormatStyle style, const char* key,
return;
}
UErrorCode status = U_ZERO_ERROR;
- char parentLocale[ULOC_FULLNAME_CAPACITY];
- uprv_strcpy(parentLocale, localeName);
- int32_t locNameLen;
- U_ASSERT(countToPatterns != NULL);
- while ((locNameLen = uloc_getParent(parentLocale, parentLocale,
- ULOC_FULLNAME_CAPACITY, &status)) >= 0){
+ CharString parentLocale(localeName, status);
+ U_ASSERT(countToPatterns != nullptr);
+ for (;;) {
+ {
+ CharString tmp;
+ CharStringByteSink sink(&tmp);
+ ulocimp_getParent(parentLocale.data(), sink, &status);
+ parentLocale = std::move(tmp);
+ }
// look for pattern for srcPluralCount in locale tree
- LocalUResourceBundlePointer rb(ures_open(U_ICUDATA_UNIT, parentLocale, &status));
- LocalUResourceBundlePointer unitsRes(ures_getByKey(rb.getAlias(), key, NULL, &status));
+ LocalUResourceBundlePointer rb(ures_open(U_ICUDATA_UNIT, parentLocale.data(), &status));
+ LocalUResourceBundlePointer unitsRes(ures_getByKey(rb.getAlias(), key, nullptr, &status));
const char* timeUnitName = getTimeUnitName(srcTimeUnitField, status);
- LocalUResourceBundlePointer countsToPatternRB(ures_getByKey(unitsRes.getAlias(), timeUnitName, NULL, &status));
- const UChar* pattern;
+ LocalUResourceBundlePointer countsToPatternRB(ures_getByKey(unitsRes.getAlias(), timeUnitName, nullptr, &status));
+ const char16_t* pattern;
int32_t ptLength;
pattern = ures_getStringByKeyWithFallback(countsToPatternRB.getAlias(), searchPluralCount, &ptLength, &status);
if (U_SUCCESS(status)) {
@@ -578,12 +585,12 @@ TimeUnitFormat::searchInLocaleChain(UTimeUnitFormatStyle style, const char* key,
return;
}
MessageFormat** formatters = (MessageFormat**)countToPatterns->get(srcPluralCount);
- if (formatters == NULL) {
+ if (formatters == nullptr) {
LocalMemory<MessageFormat *> localFormatters(
(MessageFormat**)uprv_malloc(UTMUTFMT_FORMAT_STYLE_COUNT*sizeof(MessageFormat*)));
formatters = localFormatters.getAlias();
- localFormatters[UTMUTFMT_FULL_STYLE] = NULL;
- localFormatters[UTMUTFMT_ABBREVIATED_STYLE] = NULL;
+ localFormatters[UTMUTFMT_FULL_STYLE] = nullptr;
+ localFormatters[UTMUTFMT_ABBREVIATED_STYLE] = nullptr;
countToPatterns->put(srcPluralCount, localFormatters.orphan(), err);
if (U_FAILURE(err)) {
return;
@@ -594,14 +601,14 @@ TimeUnitFormat::searchInLocaleChain(UTimeUnitFormatStyle style, const char* key,
return;
}
status = U_ZERO_ERROR;
- if (locNameLen == 0) {
+ if (parentLocale.isEmpty()) {
break;
}
}
// if no unitsShort resource was found even after fallback to root locale
// then search the units resource fallback from the current level to root
- if ( locNameLen == 0 && uprv_strcmp(key, gShortUnitsTag) == 0) {
+ if ( parentLocale.isEmpty() && uprv_strcmp(key, gShortUnitsTag) == 0) {
#ifdef TMUTFMT_DEBUG
std::cout << "loop into searchInLocaleChain since Short-Long-Alternative \n";
#endif
@@ -615,7 +622,7 @@ TimeUnitFormat::searchInLocaleChain(UTimeUnitFormatStyle style, const char* key,
return;
}
MessageFormat** formatters = (MessageFormat**)countToPatterns->get(srcPluralCount);
- if (formatters != NULL && formatters[style] != NULL) {
+ if (formatters != nullptr && formatters[style] != nullptr) {
return;
}
}
@@ -625,7 +632,7 @@ TimeUnitFormat::searchInLocaleChain(UTimeUnitFormatStyle style, const char* key,
if ( uprv_strcmp(searchPluralCount, gPluralCountOther) == 0 ) {
// set default fall back the same as the resource in root
LocalPointer<MessageFormat> messageFormat;
- const UChar *pattern = NULL;
+ const char16_t *pattern = nullptr;
if ( srcTimeUnitField == TimeUnit::UTIMEUNIT_SECOND ) {
pattern = DEFAULT_PATTERN_FOR_SECOND;
} else if ( srcTimeUnitField == TimeUnit::UTIMEUNIT_MINUTE ) {
@@ -641,7 +648,7 @@ TimeUnitFormat::searchInLocaleChain(UTimeUnitFormatStyle style, const char* key,
} else if ( srcTimeUnitField == TimeUnit::UTIMEUNIT_YEAR ) {
pattern = DEFAULT_PATTERN_FOR_YEAR;
}
- if (pattern != NULL) {
+ if (pattern != nullptr) {
messageFormat.adoptInsteadAndCheckErrorCode(
new MessageFormat(UnicodeString(true, pattern, -1), getLocale(err), err), err);
}
@@ -649,7 +656,7 @@ TimeUnitFormat::searchInLocaleChain(UTimeUnitFormatStyle style, const char* key,
return;
}
MessageFormat** formatters = (MessageFormat**)countToPatterns->get(srcPluralCount);
- if (formatters == NULL) {
+ if (formatters == nullptr) {
LocalMemory<MessageFormat *> localFormatters (
(MessageFormat**)uprv_malloc(UTMUTFMT_FORMAT_STYLE_COUNT*sizeof(MessageFormat*)));
if (localFormatters.isNull()) {
@@ -657,8 +664,8 @@ TimeUnitFormat::searchInLocaleChain(UTimeUnitFormatStyle style, const char* key,
return;
}
formatters = localFormatters.getAlias();
- formatters[UTMUTFMT_FULL_STYLE] = NULL;
- formatters[UTMUTFMT_ABBREVIATED_STYLE] = NULL;
+ formatters[UTMUTFMT_FULL_STYLE] = nullptr;
+ formatters[UTMUTFMT_ABBREVIATED_STYLE] = nullptr;
countToPatterns->put(srcPluralCount, localFormatters.orphan(), err);
}
if (U_SUCCESS(err)) {
@@ -692,9 +699,9 @@ TimeUnitFormat::setNumberFormat(const NumberFormat& format, UErrorCode& status){
void
TimeUnitFormat::deleteHash(Hashtable* htable) {
int32_t pos = UHASH_FIRST;
- const UHashElement* element = NULL;
+ const UHashElement* element = nullptr;
if ( htable ) {
- while ( (element = htable->nextElement(pos)) != NULL ) {
+ while ( (element = htable->nextElement(pos)) != nullptr ) {
const UHashTok valueTok = element->value;
const MessageFormat** value = (const MessageFormat**)valueTok.pointer;
delete value[UTMUTFMT_FULL_STYLE];
@@ -713,9 +720,9 @@ TimeUnitFormat::copyHash(const Hashtable* source, Hashtable* target, UErrorCode&
return;
}
int32_t pos = UHASH_FIRST;
- const UHashElement* element = NULL;
+ const UHashElement* element = nullptr;
if ( source ) {
- while ( (element = source->nextElement(pos)) != NULL ) {
+ while ( (element = source->nextElement(pos)) != nullptr ) {
const UHashTok keyTok = element->key;
const UnicodeString* key = (UnicodeString*)keyTok.pointer;
const UHashTok valueTok = element->value;
@@ -758,16 +765,16 @@ U_CDECL_END
Hashtable*
TimeUnitFormat::initHash(UErrorCode& status) {
if ( U_FAILURE(status) ) {
- return NULL;
+ return nullptr;
}
Hashtable* hTable;
- if ( (hTable = new Hashtable(true, status)) == NULL ) {
+ if ( (hTable = new Hashtable(true, status)) == nullptr ) {
status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
if ( U_FAILURE(status) ) {
delete hTable;
- return NULL;
+ return nullptr;
}
hTable->setValueComparator(tmutfmtHashTableValueComparator);
return hTable;
@@ -778,7 +785,7 @@ const char*
TimeUnitFormat::getTimeUnitName(TimeUnit::UTimeUnitFields unitField,
UErrorCode& status) {
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
switch (unitField) {
case TimeUnit::UTIMEUNIT_YEAR:
@@ -797,7 +804,7 @@ TimeUnitFormat::getTimeUnitName(TimeUnit::UTimeUnitFields unitField,
return gTimeUnitSecond;
default:
status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/translit.cpp b/Build/source/libs/icu/icu-src/source/i18n/translit.cpp
index 4d74d0b6128..29d38b12c7f 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/translit.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/translit.cpp
@@ -54,9 +54,9 @@
#include "cstring.h"
#include "uinvchar.h"
-static const UChar TARGET_SEP = 0x002D; /*-*/
-static const UChar ID_DELIM = 0x003B; /*;*/
-static const UChar VARIANT_SEP = 0x002F; // '/'
+static const char16_t TARGET_SEP = 0x002D; /*-*/
+static const char16_t ID_DELIM = 0x003B; /*;*/
+static const char16_t VARIANT_SEP = 0x002F; // '/'
/**
* Prefix for resource bundle key for the display name for a
@@ -132,7 +132,7 @@ Transliterator::Transliterator(const UnicodeString& theID,
maximumContextLength(0)
{
// NUL-terminate the ID string, which is a non-aliased copy.
- ID.append((UChar)0);
+ ID.append((char16_t)0);
ID.truncate(ID.length()-1);
}
@@ -153,7 +153,7 @@ Transliterator::Transliterator(const Transliterator& other) :
maximumContextLength(other.maximumContextLength)
{
// NUL-terminate the ID string, which is a non-aliased copy.
- ID.append((UChar)0);
+ ID.append((char16_t)0);
ID.truncate(ID.length()-1);
if (other.filter != 0) {
@@ -163,7 +163,7 @@ Transliterator::Transliterator(const Transliterator& other) :
}
Transliterator* Transliterator::clone() const {
- return NULL;
+ return nullptr;
}
/**
@@ -474,7 +474,7 @@ void Transliterator::filteredTransliterate(Replaceable& text,
for (;;) {
- if (filter != NULL) {
+ if (filter != nullptr) {
// Narrow the range to be transliterated to the first segment
// of unfiltered characters at or after index.start.
@@ -666,7 +666,7 @@ void Transliterator::filteredTransliterate(Replaceable& text,
globalLimit += delta;
}
- if (filter == NULL || isIncrementalRun) {
+ if (filter == nullptr || isIncrementalRun) {
break;
}
@@ -700,7 +700,7 @@ void Transliterator::setMaximumContextLength(int32_t maxContextLength) {
* @see #registerInstance
* @see #getAvailableIDs
*/
-const UnicodeString& Transliterator::getID(void) const {
+const UnicodeString& Transliterator::getID() const {
return ID;
}
@@ -834,19 +834,19 @@ UnicodeString& U_EXPORT2 Transliterator::getDisplayName(const UnicodeString& id,
* if this transliterator uses no filter. Caller musn't delete
* the result!
*/
-const UnicodeFilter* Transliterator::getFilter(void) const {
+const UnicodeFilter* Transliterator::getFilter() const {
return filter;
}
/**
* Returns the filter used by this transliterator, or
- * <tt>NULL</tt> if this transliterator uses no filter. The
+ * <tt>nullptr</tt> if this transliterator uses no filter. The
* caller must eventually delete the result. After this call,
- * this transliterator's filter is set to <tt>NULL</tt>.
+ * this transliterator's filter is set to <tt>nullptr</tt>.
*/
-UnicodeFilter* Transliterator::orphanFilter(void) {
+UnicodeFilter* Transliterator::orphanFilter() {
UnicodeFilter *result = filter;
- filter = NULL;
+ filter = nullptr;
return result;
}
@@ -921,7 +921,7 @@ Transliterator::createInstance(const UnicodeString& ID,
UnicodeString canonID;
UVector list(status);
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
UnicodeSet* globalFilter = nullptr;
@@ -930,17 +930,17 @@ Transliterator::createInstance(const UnicodeString& ID,
if (!TransliteratorIDParser::parseCompoundID(ID, dir, canonID, list, globalFilter)) {
status = U_INVALID_ID;
delete globalFilter;
- return NULL;
+ return nullptr;
}
LocalPointer<UnicodeSet> lpGlobalFilter(globalFilter);
TransliteratorIDParser::instantiateList(list, status);
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
U_ASSERT(list.size() > 0);
- Transliterator* t = NULL;
+ Transliterator* t = nullptr;
if (list.size() > 1 || canonID.indexOf(ID_DELIM) >= 0) {
// [NOTE: If it's a compoundID, we instantiate a CompoundTransliterator even if it only
@@ -954,7 +954,7 @@ Transliterator::createInstance(const UnicodeString& ID,
t = (Transliterator*)list.elementAt(0);
}
// Check null pointer
- if (t != NULL) {
+ if (t != nullptr) {
t->setID(canonID);
if (lpGlobalFilter.isValid()) {
t->adoptFilter(lpGlobalFilter.orphan());
@@ -1029,12 +1029,12 @@ Transliterator* Transliterator::createBasicInstance(const UnicodeString& id,
if (U_FAILURE(ec)) {
delete t;
delete alias;
- t = NULL;
+ t = nullptr;
break;
}
}
- if (t != NULL && canon != NULL) {
+ if (t != nullptr && canon != nullptr) {
t->setID(*canon);
}
@@ -1056,7 +1056,7 @@ Transliterator::createFromRules(const UnicodeString& ID,
UParseError& parseError,
UErrorCode& status)
{
- Transliterator* t = NULL;
+ Transliterator* t = nullptr;
TransliteratorParser parser(status);
parser.parse(rules, dir, parseError, status);
@@ -1077,7 +1077,7 @@ Transliterator::createFromRules(const UnicodeString& ID,
// been munged from reverse into forward mode, if
// necessary, so instantiate the ID in the forward
// direction.
- if (parser.compoundFilter != NULL) {
+ if (parser.compoundFilter != nullptr) {
UnicodeString filterPattern;
parser.compoundFilter->toPattern(filterPattern, false);
t = createInstance(filterPattern + UnicodeString(ID_DELIM)
@@ -1087,7 +1087,7 @@ Transliterator::createFromRules(const UnicodeString& ID,
t = createInstance(*((UnicodeString*)parser.idBlockVector.elementAt(0)), UTRANS_FORWARD, parseError, status);
- if (t != NULL) {
+ if (t != nullptr) {
t->setID(ID);
}
}
@@ -1110,7 +1110,7 @@ Transliterator::createFromRules(const UnicodeString& ID,
delete temp;
return nullptr;
}
- if (temp != NULL && typeid(*temp) != typeid(NullTransliterator)) {
+ if (temp != nullptr && typeid(*temp) != typeid(NullTransliterator)) {
transliterators.addElement(temp, status);
if (U_FAILURE(status)) {
delete temp;
@@ -1126,8 +1126,8 @@ Transliterator::createFromRules(const UnicodeString& ID,
// TODO: Should passNumber be turned into a decimal-string representation (1 -> "1")?
RuleBasedTransliterator* temprbt = new RuleBasedTransliterator(UnicodeString(CompoundTransliterator::PASS_STRING) + UnicodeString(passNumber++),
data, true);
- // Check if NULL before adding it to transliterators to avoid future usage of NULL pointer.
- if (temprbt == NULL) {
+ // Check if nullptr before adding it to transliterators to avoid future usage of nullptr pointer.
+ if (temprbt == nullptr) {
if (U_SUCCESS(status)) {
status = U_MEMORY_ALLOCATION_ERROR;
}
@@ -1146,12 +1146,12 @@ Transliterator::createFromRules(const UnicodeString& ID,
t = new CompoundTransliterator(transliterators, passNumber - 1, parseError, status);
// Null pointer check
- if (t != NULL) {
+ if (t != nullptr) {
t->setID(ID);
t->adoptFilter(parser.orphanCompoundFilter());
}
}
- if (U_SUCCESS(status) && t == NULL) {
+ if (U_SUCCESS(status) && t == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
}
return t;
@@ -1182,7 +1182,7 @@ UnicodeString& Transliterator::toRules(UnicodeString& rulesSource,
int32_t Transliterator::countElements() const {
const CompoundTransliterator* ct = dynamic_cast<const CompoundTransliterator*>(this);
- return ct != NULL ? ct->getCount() : 0;
+ return ct != nullptr ? ct->getCount() : 0;
}
const Transliterator& Transliterator::getElement(int32_t index, UErrorCode& ec) const {
@@ -1190,7 +1190,7 @@ const Transliterator& Transliterator::getElement(int32_t index, UErrorCode& ec)
return *this;
}
const CompoundTransliterator* cpd = dynamic_cast<const CompoundTransliterator*>(this);
- int32_t n = (cpd == NULL) ? 1 : cpd->getCount();
+ int32_t n = (cpd == nullptr) ? 1 : cpd->getCount();
if (index < 0 || index >= n) {
ec = U_INDEX_OUTOFBOUNDS_ERROR;
return *this;
@@ -1201,15 +1201,15 @@ const Transliterator& Transliterator::getElement(int32_t index, UErrorCode& ec)
UnicodeSet& Transliterator::getSourceSet(UnicodeSet& result) const {
handleGetSourceSet(result);
- if (filter != NULL) {
+ if (filter != nullptr) {
UnicodeSet* filterSet = dynamic_cast<UnicodeSet*>(filter);
UBool deleteFilterSet = false;
// Most, but not all filters will be UnicodeSets. Optimize for
// the high-runner case.
- if (filterSet == NULL) {
+ if (filterSet == nullptr) {
filterSet = new UnicodeSet();
// Check null pointer
- if (filterSet == NULL) {
+ if (filterSet == nullptr) {
return result;
}
deleteFilterSet = true;
@@ -1323,7 +1323,7 @@ void U_EXPORT2 Transliterator::unregister(const UnicodeString& ID) {
* To retrieve the actual IDs, call getAvailableID(i) with
* i from 0 to countAvailableIDs() - 1.
*/
-int32_t U_EXPORT2 Transliterator::countAvailableIDs(void) {
+int32_t U_EXPORT2 Transliterator::countAvailableIDs() {
int32_t retVal = 0;
Mutex lock(&registryMutex);
UErrorCode ec = U_ZERO_ERROR;
@@ -1340,32 +1340,32 @@ int32_t U_EXPORT2 Transliterator::countAvailableIDs(void) {
* range, the result of getAvailableID(0) is returned.
*/
const UnicodeString& U_EXPORT2 Transliterator::getAvailableID(int32_t index) {
- const UnicodeString* result = NULL;
+ const UnicodeString* result = nullptr;
umtx_lock(&registryMutex);
UErrorCode ec = U_ZERO_ERROR;
if (HAVE_REGISTRY(ec)) {
result = &registry->getAvailableID(index);
}
umtx_unlock(&registryMutex);
- U_ASSERT(result != NULL); // fail if no registry
+ U_ASSERT(result != nullptr); // fail if no registry
return *result;
}
StringEnumeration* U_EXPORT2 Transliterator::getAvailableIDs(UErrorCode& ec) {
- if (U_FAILURE(ec)) return NULL;
- StringEnumeration* result = NULL;
+ if (U_FAILURE(ec)) return nullptr;
+ StringEnumeration* result = nullptr;
umtx_lock(&registryMutex);
if (HAVE_REGISTRY(ec)) {
result = registry->getAvailableIDs();
}
umtx_unlock(&registryMutex);
- if (result == NULL) {
+ if (result == nullptr) {
ec = U_INTERNAL_TRANSLITERATOR_ERROR;
}
return result;
}
-int32_t U_EXPORT2 Transliterator::countAvailableSources(void) {
+int32_t U_EXPORT2 Transliterator::countAvailableSources() {
Mutex lock(&registryMutex);
UErrorCode ec = U_ZERO_ERROR;
return HAVE_REGISTRY(ec) ? _countAvailableSources() : 0;
@@ -1417,7 +1417,7 @@ UnicodeString& U_EXPORT2 Transliterator::getAvailableVariant(int32_t index,
return result;
}
-int32_t Transliterator::_countAvailableSources(void) {
+int32_t Transliterator::_countAvailableSources() {
return registry->countAvailableSources();
}
@@ -1456,11 +1456,11 @@ UnicodeString& Transliterator::_getAvailableVariant(int32_t index,
* @deprecated the new architecture provides filtering at the top
* level. This method will be removed Dec 31 2001.
*/
-UChar Transliterator::filteredCharAt(const Replaceable& text, int32_t i) const {
- UChar c;
+char16_t Transliterator::filteredCharAt(const Replaceable& text, int32_t i) const {
+ char16_t c;
const UnicodeFilter* localFilter = getFilter();
return (localFilter == 0) ? text.charAt(i) :
- (localFilter->contains(c = text.charAt(i)) ? c : (UChar)0xFFFE);
+ (localFilter->contains(c = text.charAt(i)) ? c : (char16_t)0xFFFE);
}
#endif
@@ -1525,7 +1525,7 @@ UBool Transliterator::initializeRegistry(UErrorCode &status) {
UErrorCode lstatus = U_ZERO_ERROR;
UResourceBundle *bundle, *transIDs, *colBund;
- bundle = ures_open(U_ICUDATA_TRANSLIT, NULL/*open default locale*/, &lstatus);
+ bundle = ures_open(U_ICUDATA_TRANSLIT, nullptr/*open default locale*/, &lstatus);
transIDs = ures_getByKey(bundle, RB_RULE_BASED_IDS, 0, &lstatus);
const UnicodeString T_PART = UNICODE_STRING_SIMPLE("-t-");
@@ -1546,14 +1546,14 @@ UBool Transliterator::initializeRegistry(UErrorCode &status) {
ures_close(colBund);
continue;
}
- UResourceBundle* res = ures_getNextResource(colBund, NULL, &lstatus);
+ UResourceBundle* res = ures_getNextResource(colBund, nullptr, &lstatus);
const char* typeStr = ures_getKey(res);
- UChar type;
+ char16_t type;
u_charsToUChars(typeStr, &type, 1);
if (U_SUCCESS(lstatus)) {
int32_t len = 0;
- const UChar *resString;
+ const char16_t *resString;
switch (type) {
case 0x66: // 'f'
case 0x69: // 'i'
@@ -1602,12 +1602,12 @@ UBool Transliterator::initializeRegistry(UErrorCode &status) {
BreakTransliterator* tempBreakTranslit = new BreakTransliterator();
#endif
// Check for null pointers
- if (tempNullTranslit == NULL || tempLowercaseTranslit == NULL || tempUppercaseTranslit == NULL ||
- tempTitlecaseTranslit == NULL || tempUnicodeTranslit == NULL ||
+ if (tempNullTranslit == nullptr || tempLowercaseTranslit == nullptr || tempUppercaseTranslit == nullptr ||
+ tempTitlecaseTranslit == nullptr || tempUnicodeTranslit == nullptr ||
#if !UCONFIG_NO_BREAK_ITERATION
- tempBreakTranslit == NULL ||
+ tempBreakTranslit == nullptr ||
#endif
- tempNameUnicodeTranslit == NULL )
+ tempNameUnicodeTranslit == nullptr )
{
delete tempNullTranslit;
delete tempLowercaseTranslit;
@@ -1620,7 +1620,7 @@ UBool Transliterator::initializeRegistry(UErrorCode &status) {
#endif
// Since there was an error, remove registry
delete registry;
- registry = NULL;
+ registry = nullptr;
status = U_MEMORY_ALLOCATION_ERROR;
return 0;
@@ -1663,12 +1663,12 @@ U_NAMESPACE_END
* necessarily invalidate any rule-based transliterators held by the
* user, because RBTs hold pointers to common data objects.
*/
-U_CFUNC UBool utrans_transliterator_cleanup(void) {
+U_CFUNC UBool utrans_transliterator_cleanup() {
U_NAMESPACE_USE
TransliteratorIDParser::cleanup();
if (registry) {
delete registry;
- registry = NULL;
+ registry = nullptr;
}
return true;
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/transreg.cpp b/Build/source/libs/icu/icu-src/source/i18n/transreg.cpp
index 32040c63a64..3441076334f 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/transreg.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/transreg.cpp
@@ -11,6 +11,7 @@
*/
#include "unicode/utypes.h"
+#include "unicode/rep.h"
#if !UCONFIG_NO_TRANSLITERATION
@@ -40,14 +41,14 @@
#include <stdio.h>
#endif
-// UChar constants
-static const UChar LOCALE_SEP = 95; // '_'
-//static const UChar ID_SEP = 0x002D; /*-*/
-//static const UChar VARIANT_SEP = 0x002F; // '/'
+// char16_t constants
+static const char16_t LOCALE_SEP = 95; // '_'
+//static const char16_t ID_SEP = 0x002D; /*-*/
+//static const char16_t VARIANT_SEP = 0x002F; // '/'
// String constants
-static const UChar ANY[] = { 0x41, 0x6E, 0x79, 0 }; // Any
-static const UChar LAT[] = { 0x4C, 0x61, 0x74, 0 }; // Lat
+static const char16_t ANY[] = { 0x41, 0x6E, 0x79, 0 }; // Any
+static const char16_t LAT[] = { 0x4C, 0x61, 0x74, 0 }; // Lat
// empty string
#define NO_VARIANT UnicodeString()
@@ -123,7 +124,7 @@ Transliterator* TransliteratorAlias::create(UParseError& pe,
if (U_FAILURE(ec)) {
return 0;
}
- Transliterator *t = NULL;
+ Transliterator *t = nullptr;
switch (type) {
case SIMPLE:
t = Transliterator::createInstance(aliasesOrRules, UTRANS_FORWARD, pe, ec);
@@ -141,8 +142,8 @@ Transliterator* TransliteratorAlias::create(UParseError& pe,
// to see whether there really are ID blocks at the beginning and end (by looking for U+FFFF, which
// marks the position where an anonymous transliterator goes) and adjust accordingly
int32_t anonymousRBTs = transes->size();
- UnicodeString noIDBlock((UChar)(0xffff));
- noIDBlock += ((UChar)(0xffff));
+ UnicodeString noIDBlock((char16_t)(0xffff));
+ noIDBlock += ((char16_t)(0xffff));
int32_t pos = aliasesOrRules.indexOf(noIDBlock);
while (pos >= 0) {
pos = aliasesOrRules.indexOf(noIDBlock, pos + 1);
@@ -150,7 +151,7 @@ Transliterator* TransliteratorAlias::create(UParseError& pe,
UVector transliterators(uprv_deleteUObject, nullptr, ec);
UnicodeString idBlock;
- int32_t blockSeparatorPos = aliasesOrRules.indexOf((UChar)(0xffff));
+ int32_t blockSeparatorPos = aliasesOrRules.indexOf((char16_t)(0xffff));
while (blockSeparatorPos >= 0) {
aliasesOrRules.extract(0, blockSeparatorPos, idBlock);
aliasesOrRules.remove(0, blockSeparatorPos + 1);
@@ -158,7 +159,7 @@ Transliterator* TransliteratorAlias::create(UParseError& pe,
transliterators.adoptElement(Transliterator::createInstance(idBlock, UTRANS_FORWARD, pe, ec), ec);
if (!transes->isEmpty())
transliterators.adoptElement(transes->orphanElementAt(0), ec);
- blockSeparatorPos = aliasesOrRules.indexOf((UChar)(0xffff));
+ blockSeparatorPos = aliasesOrRules.indexOf((char16_t)(0xffff));
}
if (!aliasesOrRules.isEmpty())
transliterators.adoptElement(Transliterator::createInstance(aliasesOrRules, UTRANS_FORWARD, pe, ec), ec);
@@ -259,7 +260,7 @@ TransliteratorSpec::TransliteratorSpec(const UnicodeString& theSpec)
LocaleUtility::initLocaleFromName(theSpec, topLoc);
if (!topLoc.isBogus()) {
res = new ResourceBundle(U_ICUDATA_TRANSLIT, topLoc, status);
- /* test for NULL */
+ /* test for nullptr */
if (res == 0) {
return;
}
@@ -359,10 +360,10 @@ ResourceBundle& TransliteratorSpec::getBundle() const {
#ifdef DEBUG_MEM
// Vector of Entry pointers currently in use
-static UVector* DEBUG_entries = NULL;
+static UVector* DEBUG_entries = nullptr;
static void DEBUG_setup() {
- if (DEBUG_entries == NULL) {
+ if (DEBUG_entries == nullptr) {
UErrorCode ec = U_ZERO_ERROR;
DEBUG_entries = new UVector(ec);
}
@@ -404,7 +405,7 @@ static void DEBUG_delEntry(TransliteratorEntry* e) {
// Track object usage
static void DEBUG_useEntry(TransliteratorEntry* e) {
- if (e == NULL) return;
+ if (e == nullptr) return;
DEBUG_setup();
int i = DEBUG_findEntry(e);
if (i < 0) {
@@ -474,7 +475,7 @@ private:
TransliteratorEntry::TransliteratorEntry() {
u.prototype = 0;
- compoundFilter = NULL;
+ compoundFilter = nullptr;
entryType = NONE;
DEBUG_newEntry(this);
}
@@ -490,7 +491,7 @@ TransliteratorEntry::~TransliteratorEntry() {
// invalidates any RBTs that the user has instantiated.
delete u.data;
} else if (entryType == COMPOUND_RBT) {
- while (u.dataVector != NULL && !u.dataVector->isEmpty())
+ while (u.dataVector != nullptr && !u.dataVector->isEmpty())
delete (TransliterationRuleData*)u.dataVector->orphanElementAt(0);
delete u.dataVector;
}
@@ -531,17 +532,15 @@ TransliteratorRegistry::TransliteratorRegistry(UErrorCode& status) :
registry(true, status),
specDAG(true, SPECDAG_INIT_SIZE, status),
variantList(VARIANT_LIST_INIT_SIZE, status),
- availableIDs(AVAILABLE_IDS_INIT_SIZE, status)
+ availableIDs(true, AVAILABLE_IDS_INIT_SIZE, status)
{
registry.setValueDeleter(deleteEntry);
variantList.setDeleter(uprv_deleteUObject);
variantList.setComparer(uhash_compareCaselessUnicodeString);
UnicodeString *emptyString = new UnicodeString();
- if (emptyString != NULL) {
+ if (emptyString != nullptr) {
variantList.adoptElement(emptyString, status);
}
- availableIDs.setDeleter(uprv_deleteUObject);
- availableIDs.setComparer(uhash_compareCaselessUnicodeString);
specDAG.setValueDeleter(uhash_deleteHashtable);
}
@@ -552,7 +551,7 @@ TransliteratorRegistry::~TransliteratorRegistry() {
Transliterator* TransliteratorRegistry::get(const UnicodeString& ID,
TransliteratorAlias*& aliasReturn,
UErrorCode& status) {
- U_ASSERT(aliasReturn == NULL);
+ U_ASSERT(aliasReturn == nullptr);
TransliteratorEntry *entry = find(ID);
return (entry == 0) ? 0
: instantiateEntry(ID, entry, aliasReturn, status);
@@ -562,7 +561,7 @@ Transliterator* TransliteratorRegistry::reget(const UnicodeString& ID,
TransliteratorParser& parser,
TransliteratorAlias*& aliasReturn,
UErrorCode& status) {
- U_ASSERT(aliasReturn == NULL);
+ U_ASSERT(aliasReturn == nullptr);
TransliteratorEntry *entry = find(ID);
if (entry == 0) {
@@ -591,7 +590,7 @@ Transliterator* TransliteratorRegistry::reget(const UnicodeString& ID,
if (parser.idBlockVector.isEmpty() && parser.dataVector.isEmpty()) {
entry->u.data = 0;
entry->entryType = TransliteratorEntry::ALIAS;
- entry->stringArg = UNICODE_STRING_SIMPLE("Any-NULL");
+ entry->stringArg = UNICODE_STRING_SIMPLE("Any-nullptr");
}
else if (parser.idBlockVector.isEmpty() && parser.dataVector.size() == 1) {
entry->u.data = (TransliterationRuleData*)parser.dataVector.orphanElementAt(0);
@@ -626,7 +625,7 @@ Transliterator* TransliteratorRegistry::reget(const UnicodeString& ID,
if (U_FAILURE(status)) {
delete data;
}
- entry->stringArg += (UChar)0xffff; // use U+FFFF to mark position of RBTs in ID block
+ entry->stringArg += (char16_t)0xffff; // use U+FFFF to mark position of RBTs in ID block
}
}
}
@@ -642,7 +641,7 @@ void TransliteratorRegistry::put(Transliterator* adoptedProto,
UErrorCode& ec)
{
TransliteratorEntry *entry = new TransliteratorEntry();
- if (entry == NULL) {
+ if (entry == nullptr) {
ec = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -656,7 +655,7 @@ void TransliteratorRegistry::put(const UnicodeString& ID,
UBool visible,
UErrorCode& ec) {
TransliteratorEntry *entry = new TransliteratorEntry();
- if (entry == NULL) {
+ if (entry == nullptr) {
ec = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -671,7 +670,7 @@ void TransliteratorRegistry::put(const UnicodeString& ID,
UBool visible,
UErrorCode& ec) {
TransliteratorEntry *entry = new TransliteratorEntry();
- if (entry == NULL) {
+ if (entry == nullptr) {
ec = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -693,7 +692,7 @@ void TransliteratorRegistry::put(const UnicodeString& ID,
UErrorCode& /*ec*/) {
TransliteratorEntry *entry = new TransliteratorEntry();
// Null pointer check
- if (entry != NULL) {
+ if (entry != nullptr) {
entry->entryType = TransliteratorEntry::ALIAS;
if (readonlyAliasAlias) {
entry->stringArg.setTo(true, alias.getBuffer(), -1);
@@ -714,7 +713,7 @@ void TransliteratorRegistry::remove(const UnicodeString& ID) {
TransliteratorIDParser::STVtoID(source, target, variant, id);
registry.remove(id);
removeSTV(source, target, variant);
- availableIDs.removeElement((void*) &id);
+ availableIDs.remove(id);
}
//----------------------------------------------------------------------
@@ -727,8 +726,8 @@ void TransliteratorRegistry::remove(const UnicodeString& ID) {
* To retrieve the actual IDs, call getAvailableID(i) with
* i from 0 to countAvailableIDs() - 1.
*/
-int32_t TransliteratorRegistry::countAvailableIDs(void) const {
- return availableIDs.size();
+int32_t TransliteratorRegistry::countAvailableIDs() const {
+ return availableIDs.count();
}
/**
@@ -738,17 +737,34 @@ int32_t TransliteratorRegistry::countAvailableIDs(void) const {
* range, the result of getAvailableID(0) is returned.
*/
const UnicodeString& TransliteratorRegistry::getAvailableID(int32_t index) const {
- if (index < 0 || index >= availableIDs.size()) {
+ if (index < 0 || index >= availableIDs.count()) {
index = 0;
}
- return *(const UnicodeString*) availableIDs[index];
+
+ int32_t pos = UHASH_FIRST;
+ const UHashElement *e = nullptr;
+ while (index-- >= 0) {
+ e = availableIDs.nextElement(pos);
+ if (e == nullptr) {
+ break;
+ }
+ }
+
+ if (e != nullptr) {
+ return *(UnicodeString*) e->key.pointer;
+ }
+
+ // If the code reaches here, the hash table was likely modified during iteration.
+ // Return an statically initialized empty string due to reference return type.
+ static UnicodeString empty;
+ return empty;
}
StringEnumeration* TransliteratorRegistry::getAvailableIDs() const {
return new Enumeration(*this);
}
-int32_t TransliteratorRegistry::countAvailableSources(void) const {
+int32_t TransliteratorRegistry::countAvailableSources() const {
return specDAG.count();
}
@@ -832,7 +848,7 @@ UnicodeString& TransliteratorRegistry::getAvailableVariant(int32_t index,
if (varMask & 1) {
if (varCount == index) {
UnicodeString *v = (UnicodeString*) variantList.elementAt(varListIndex);
- if (v != NULL) {
+ if (v != nullptr) {
result = *v;
return result;
}
@@ -852,14 +868,14 @@ UnicodeString& TransliteratorRegistry::getAvailableVariant(int32_t index,
//----------------------------------------------------------------------
TransliteratorRegistry::Enumeration::Enumeration(const TransliteratorRegistry& _reg) :
- index(0), reg(_reg) {
+ pos(UHASH_FIRST), size(_reg.availableIDs.count()), reg(_reg) {
}
TransliteratorRegistry::Enumeration::~Enumeration() {
}
int32_t TransliteratorRegistry::Enumeration::count(UErrorCode& /*status*/) const {
- return reg.availableIDs.size();
+ return size;
}
const UnicodeString* TransliteratorRegistry::Enumeration::snext(UErrorCode& status) {
@@ -873,24 +889,29 @@ const UnicodeString* TransliteratorRegistry::Enumeration::snext(UErrorCode& stat
// doing as long as there is some possibility of removing this code in favor
// of some new code based on Doug's service framework.
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
- int32_t n = reg.availableIDs.size();
- if (index > n) {
+ int32_t n = reg.availableIDs.count();
+ if (n != size) {
status = U_ENUM_OUT_OF_SYNC_ERROR;
+ return nullptr;
}
- // index == n is okay -- this means we've reached the end
- if (index < n) {
- // Copy the string! This avoids lifetime problems.
- unistr = *(const UnicodeString*)reg.availableIDs[index++];
- return &unistr;
- } else {
- return NULL;
+
+ const UHashElement* element = reg.availableIDs.nextElement(pos);
+ if (element == nullptr) {
+ // If the code reaches this point, it means that it's out of sync
+ // or the caller keeps asking for snext().
+ return nullptr;
}
+
+ // Copy the string! This avoids lifetime problems.
+ unistr = *(const UnicodeString*) element->key.pointer;
+ return &unistr;
}
void TransliteratorRegistry::Enumeration::reset(UErrorCode& /*status*/) {
- index = 0;
+ pos = UHASH_FIRST;
+ size = reg.availableIDs.count();
}
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(TransliteratorRegistry::Enumeration)
@@ -945,18 +966,12 @@ void TransliteratorRegistry::registerEntry(const UnicodeString& ID,
registry.put(ID, adopted, status);
if (visible) {
registerSTV(source, target, variant);
- if (!availableIDs.contains((void*) &ID)) {
- UnicodeString *newID = ID.clone();
- // Check to make sure newID was created.
- if (newID != NULL) {
- // NUL-terminate the ID string
- newID->getTerminatedBuffer();
- availableIDs.adoptElement(newID, status);
- }
+ if (!availableIDs.containsKey(ID)) {
+ availableIDs.puti(ID, /* unused value */ 1, status);
}
} else {
removeSTV(source, target, variant);
- availableIDs.removeElement((void*) &ID);
+ availableIDs.remove(ID);
}
}
@@ -979,7 +994,7 @@ void TransliteratorRegistry::registerSTV(const UnicodeString& source,
size = LAT_TARGETS_INIT_SIZE;
}
targets = new Hashtable(true, size, status);
- if (U_FAILURE(status) || targets == NULL) {
+ if (U_FAILURE(status) || targets == nullptr) {
return;
}
specDAG.put(source, targets, status);
@@ -991,7 +1006,7 @@ void TransliteratorRegistry::registerSTV(const UnicodeString& source,
return;
}
UnicodeString *variantEntry = new UnicodeString(variant);
- if (variantEntry != NULL) {
+ if (variantEntry != nullptr) {
variantList.adoptElement(variantEntry, status);
if (U_SUCCESS(status)) {
variantListIndex = variantList.size() - 1;
@@ -1016,7 +1031,7 @@ void TransliteratorRegistry::removeSTV(const UnicodeString& source,
// assert(target.length() > 0);
UErrorCode status = U_ZERO_ERROR;
Hashtable *targets = (Hashtable*) specDAG.get(source);
- if (targets == NULL) {
+ if (targets == nullptr) {
return; // should never happen for valid s-t/v
}
uint32_t varMask = targets->geti(target);
@@ -1086,11 +1101,11 @@ TransliteratorEntry* TransliteratorRegistry::findInStaticStore(const Translitera
}
// As of 2.0, resource bundle keys cannot contain '_'
-static const UChar TRANSLITERATE_TO[] = {84,114,97,110,115,108,105,116,101,114,97,116,101,84,111,0}; // "TransliterateTo"
+static const char16_t TRANSLITERATE_TO[] = {84,114,97,110,115,108,105,116,101,114,97,116,101,84,111,0}; // "TransliterateTo"
-static const UChar TRANSLITERATE_FROM[] = {84,114,97,110,115,108,105,116,101,114,97,116,101,70,114,111,109,0}; // "TransliterateFrom"
+static const char16_t TRANSLITERATE_FROM[] = {84,114,97,110,115,108,105,116,101,114,97,116,101,70,114,111,109,0}; // "TransliterateFrom"
-static const UChar TRANSLITERATE[] = {84,114,97,110,115,108,105,116,101,114,97,116,101,0}; // "Transliterate"
+static const char16_t TRANSLITERATE[] = {84,114,97,110,115,108,105,116,101,114,97,116,101,0}; // "Transliterate"
/**
* Attempt to find an entry in a single resource bundle. This is
@@ -1158,7 +1173,7 @@ TransliteratorEntry* TransliteratorRegistry::findInBundle(const TransliteratorSp
if (pass==2) {
// Failed
- return NULL;
+ return nullptr;
}
// We have succeeded in loading a string from the locale
@@ -1322,9 +1337,9 @@ Transliterator* TransliteratorRegistry::instantiateEntry(const UnicodeString& ID
{
UVector* rbts = new UVector(uprv_deleteUObject, nullptr, entry->u.dataVector->size(), status);
// Check for null pointer
- if (rbts == NULL) {
+ if (rbts == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
int32_t passNumber = 1;
for (int32_t i = 0; U_SUCCESS(status) && i < entry->u.dataVector->size(); i++) {
diff --git a/Build/source/libs/icu/icu-src/source/i18n/transreg.h b/Build/source/libs/icu/icu-src/source/i18n/transreg.h
index 686e62ae33c..3862be881d6 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/transreg.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/transreg.h
@@ -163,13 +163,13 @@ class TransliteratorRegistry : public UMemory {
* compound) attempt to instantiate it from the registry. Return
* 0 on failure.
*
- * Return a non-NULL aliasReturn value if the ID points to an alias.
+ * Return a non-nullptr 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 NULL before calling.
+ * make aliasReturn nullptr before calling.
* @param ID the given ID
* @param aliasReturn output param to receive TransliteratorAlias;
- * should be NULL on entry
+ * should be nullptr on entry
* @param parseError Struct to receive information on position
* of error if an error is encountered
* @param status Output param set to success/failure code.
@@ -191,7 +191,7 @@ class TransliteratorRegistry : public UMemory {
* from within the TransliteratorRegistry mutex.
*
* @param aliasReturn output param to receive TransliteratorAlias;
- * should be NULL on entry
+ * should be nullptr on entry
*/
Transliterator* reget(const UnicodeString& ID,
TransliteratorParser& parser,
@@ -268,7 +268,7 @@ class TransliteratorRegistry : public UMemory {
* @return the number of IDs currently registered with the system.
* @internal
*/
- int32_t countAvailableIDs(void) const;
+ int32_t countAvailableIDs() const;
/**
* == OBSOLETE - remove in ICU 3.4 ==
@@ -287,7 +287,7 @@ class TransliteratorRegistry : public UMemory {
* Return the number of registered source specifiers.
* @return the number of registered source specifiers.
*/
- int32_t countAvailableSources(void) const;
+ int32_t countAvailableSources() const;
/**
* Return a registered source specifier.
@@ -423,7 +423,8 @@ class TransliteratorRegistry : public UMemory {
static UClassID U_EXPORT2 getStaticClassID();
virtual UClassID getDynamicClassID() const override;
private:
- int32_t index;
+ int32_t pos;
+ int32_t size;
const TransliteratorRegistry& reg;
};
friend class Enumeration;
@@ -452,7 +453,7 @@ class TransliteratorRegistry : public UMemory {
/**
* Vector of public full IDs.
*/
- UVector availableIDs;
+ Hashtable availableIDs;
TransliteratorRegistry(const TransliteratorRegistry &other); // forbid copying of this class
TransliteratorRegistry &operator=(const TransliteratorRegistry &other); // forbid copying of this class
@@ -460,7 +461,7 @@ class TransliteratorRegistry : public UMemory {
U_NAMESPACE_END
-U_CFUNC UBool utrans_transliterator_cleanup(void);
+U_CFUNC UBool utrans_transliterator_cleanup();
#endif /* #if !UCONFIG_NO_TRANSLITERATION */
diff --git a/Build/source/libs/icu/icu-src/source/i18n/tridpars.cpp b/Build/source/libs/icu/icu-src/source/i18n/tridpars.cpp
index a52f928759c..6c23a0dc902 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/tridpars.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/tridpars.cpp
@@ -31,20 +31,20 @@
U_NAMESPACE_BEGIN
-static const UChar ID_DELIM = 0x003B; // ;
-static const UChar TARGET_SEP = 0x002D; // -
-static const UChar VARIANT_SEP = 0x002F; // /
-static const UChar OPEN_REV = 0x0028; // (
-static const UChar CLOSE_REV = 0x0029; // )
+static const char16_t ID_DELIM = 0x003B; // ;
+static const char16_t TARGET_SEP = 0x002D; // -
+static const char16_t VARIANT_SEP = 0x002F; // /
+static const char16_t OPEN_REV = 0x0028; // (
+static const char16_t CLOSE_REV = 0x0029; // )
-//static const UChar EMPTY[] = {0}; // ""
-static const UChar ANY[] = {65,110,121,0}; // "Any"
-static const UChar ANY_NULL[] = {65,110,121,45,78,117,108,108,0}; // "Any-Null"
+//static const char16_t EMPTY[] = {0}; // ""
+static const char16_t ANY[] = {65,110,121,0}; // "Any"
+static const char16_t ANY_NULL[] = {65,110,121,45,78,117,108,108,0}; // "Any-Null"
static const int32_t FORWARD = UTRANS_FORWARD;
static const int32_t REVERSE = UTRANS_REVERSE;
-static Hashtable* SPECIAL_INVERSES = NULL;
+static Hashtable* SPECIAL_INVERSES = nullptr;
static UInitOnce gSpecialInversesInitOnce {};
/**
@@ -81,7 +81,7 @@ Transliterator* TransliteratorIDParser::SingleID::createInstance() {
} else {
t = createBasicInstance(basicID, &canonID);
}
- if (t != NULL) {
+ if (t != nullptr) {
if (filter.length() != 0) {
UErrorCode ec = U_ZERO_ERROR;
UnicodeSet *set = new UnicodeSet(filter, ec);
@@ -106,7 +106,7 @@ Transliterator* TransliteratorIDParser::SingleID::createInstance() {
* 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
+ * @return a SingleID object or nullptr
*/
TransliteratorIDParser::SingleID*
TransliteratorIDParser::parseSingleID(const UnicodeString& id, int32_t& pos,
@@ -116,8 +116,8 @@ TransliteratorIDParser::parseSingleID(const UnicodeString& id, int32_t& pos,
// 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;
+ Specs* specsA = nullptr;
+ Specs* specsB = nullptr;
UBool sawParen = false;
// On the first pass, look for (B) or (). If this fails, then
@@ -125,9 +125,9 @@ TransliteratorIDParser::parseSingleID(const UnicodeString& id, int32_t& pos,
for (int32_t pass=1; pass<=2; ++pass) {
if (pass == 2) {
specsA = parseFilterID(id, pos, true);
- if (specsA == NULL) {
+ if (specsA == nullptr) {
pos = start;
- return NULL;
+ return nullptr;
}
}
if (ICU_Utility::parseChar(id, pos, OPEN_REV)) {
@@ -135,10 +135,10 @@ TransliteratorIDParser::parseSingleID(const UnicodeString& id, int32_t& pos,
if (!ICU_Utility::parseChar(id, pos, CLOSE_REV)) {
specsB = parseFilterID(id, pos, true);
// Must close with a ')'
- if (specsB == NULL || !ICU_Utility::parseChar(id, pos, CLOSE_REV)) {
+ if (specsB == nullptr || !ICU_Utility::parseChar(id, pos, CLOSE_REV)) {
delete specsA;
pos = start;
- return NULL;
+ return nullptr;
}
}
break;
@@ -152,15 +152,15 @@ TransliteratorIDParser::parseSingleID(const UnicodeString& id, int32_t& pos,
SingleID* b = specsToID(specsB, FORWARD);
single = specsToID(specsA, FORWARD);
// Null pointers check
- if (b == NULL || single == NULL) {
+ if (b == nullptr || single == nullptr) {
delete b;
delete single;
status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
single->canonID.append(OPEN_REV)
.append(b->canonID).append(CLOSE_REV);
- if (specsA != NULL) {
+ if (specsA != nullptr) {
single->filter = specsA->filter;
}
delete b;
@@ -168,33 +168,33 @@ TransliteratorIDParser::parseSingleID(const UnicodeString& id, int32_t& pos,
SingleID* a = specsToID(specsA, FORWARD);
single = specsToID(specsB, FORWARD);
// Check for null pointer.
- if (a == NULL || single == NULL) {
+ if (a == nullptr || single == nullptr) {
delete a;
delete single;
status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
single->canonID.append(OPEN_REV)
.append(a->canonID).append(CLOSE_REV);
- if (specsB != NULL) {
+ if (specsB != nullptr) {
single->filter = specsB->filter;
}
delete a;
}
} else {
- // assert(specsA != NULL);
+ // assert(specsA != nullptr);
if (dir == FORWARD) {
single = specsToID(specsA, FORWARD);
} else {
single = specsToSpecialInverse(*specsA, status);
- if (single == NULL) {
+ if (single == nullptr) {
single = specsToID(specsA, REVERSE);
}
}
- // Check for NULL pointer
- if (single == NULL) {
+ // Check for nullptr pointer
+ if (single == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
single->filter = specsA->filter;
}
@@ -220,14 +220,14 @@ TransliteratorIDParser::parseFilterID(const UnicodeString& id, int32_t& pos) {
int32_t start = pos;
Specs* specs = parseFilterID(id, pos, true);
- if (specs == NULL) {
+ if (specs == nullptr) {
pos = start;
- return NULL;
+ return nullptr;
}
// Assemble return results
SingleID* single = specsToID(specs, FORWARD);
- if (single != NULL) {
+ if (single != nullptr) {
single->filter = specs->filter;
}
delete specs;
@@ -250,8 +250,8 @@ TransliteratorIDParser::parseFilterID(const UnicodeString& id, int32_t& pos) {
* 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
+ * ID_DELIM character. May be nullptr.
+ * @return a UnicodeSet object or nullptr. A non-nullptr results
* indicates a successful parse, regardless of whether the filter
* applies to the given direction. The caller should discard it
* if withParens != (dir == REVERSE).
@@ -260,7 +260,7 @@ UnicodeSet* TransliteratorIDParser::parseGlobalFilter(const UnicodeString& id, i
int32_t dir,
int32_t& withParens,
UnicodeString* canonID) {
- UnicodeSet* filter = NULL;
+ UnicodeSet* filter = nullptr;
int32_t start = pos;
if (withParens == -1) {
@@ -268,7 +268,7 @@ UnicodeSet* TransliteratorIDParser::parseGlobalFilter(const UnicodeString& id, i
} else if (withParens == 1) {
if (!ICU_Utility::parseChar(id, pos, OPEN_REV)) {
pos = start;
- return NULL;
+ return nullptr;
}
}
@@ -277,8 +277,8 @@ UnicodeSet* TransliteratorIDParser::parseGlobalFilter(const UnicodeString& id, i
if (UnicodeSet::resemblesPattern(id, pos)) {
ParsePosition ppos(pos);
UErrorCode ec = U_ZERO_ERROR;
- filter = new UnicodeSet(id, ppos, USET_IGNORE_SPACE, NULL, ec);
- /* test for NULL */
+ filter = new UnicodeSet(id, ppos, USET_IGNORE_SPACE, nullptr, ec);
+ /* test for nullptr */
if (filter == 0) {
pos = start;
return 0;
@@ -286,7 +286,7 @@ UnicodeSet* TransliteratorIDParser::parseGlobalFilter(const UnicodeString& id, i
if (U_FAILURE(ec)) {
delete filter;
pos = start;
- return NULL;
+ return nullptr;
}
UnicodeString pattern;
@@ -296,13 +296,13 @@ UnicodeSet* TransliteratorIDParser::parseGlobalFilter(const UnicodeString& id, i
if (withParens == 1 && !ICU_Utility::parseChar(id, pos, CLOSE_REV)) {
delete filter;
pos = start;
- return NULL;
+ return nullptr;
}
// 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 (canonID != nullptr) {
if (dir == FORWARD) {
if (withParens == 1) {
pattern.insert(0, OPEN_REV);
@@ -351,7 +351,7 @@ U_CDECL_END
* 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.
+ * nullptr if there is none.
* @return true if the parse succeeds, that is, if the entire
* id is consumed without syntax error.
*/
@@ -367,13 +367,13 @@ UBool TransliteratorIDParser::parseCompoundID(const UnicodeString& id, int32_t d
UObjectDeleter *save = list.setDeleter(_deleteSingleID);
UnicodeSet* filter;
- globalFilter = NULL;
+ globalFilter = nullptr;
canonID.truncate(0);
// Parse leading global filter, if any
withParens = 0; // parens disallowed
filter = parseGlobalFilter(id, pos, dir, withParens, &canonID);
- if (filter != NULL) {
+ if (filter != nullptr) {
if (!ICU_Utility::parseChar(id, pos, ID_DELIM)) {
// Not a global filter; backup and resume
canonID.truncate(0);
@@ -384,13 +384,13 @@ UBool TransliteratorIDParser::parseCompoundID(const UnicodeString& id, int32_t d
} else {
delete filter;
}
- filter = NULL;
+ filter = nullptr;
}
UBool sawDelimiter = true;
for (;;) {
SingleID* single = parseSingleID(id, pos, dir, ec);
- if (single == NULL) {
+ if (single == nullptr) {
break;
}
if (dir == FORWARD) {
@@ -425,7 +425,7 @@ UBool TransliteratorIDParser::parseCompoundID(const UnicodeString& id, int32_t d
if (sawDelimiter) {
withParens = 1; // parens required
filter = parseGlobalFilter(id, pos, dir, withParens, &canonID);
- if (filter != NULL) {
+ if (filter != nullptr) {
// Don't require trailing ';', but parse it if present
ICU_Utility::parseChar(id, pos, ID_DELIM);
@@ -434,7 +434,7 @@ UBool TransliteratorIDParser::parseCompoundID(const UnicodeString& id, int32_t d
} else {
delete filter;
}
- filter = NULL;
+ filter = nullptr;
}
}
@@ -451,7 +451,7 @@ UBool TransliteratorIDParser::parseCompoundID(const UnicodeString& id, int32_t d
list.removeAllElements();
list.setDeleter(save);
delete globalFilter;
- globalFilter = NULL;
+ globalFilter = nullptr;
return false;
}
@@ -459,7 +459,7 @@ UBool TransliteratorIDParser::parseCompoundID(const UnicodeString& id, int32_t d
* Convert the elements of the 'list' vector, which are SingleID
* objects, into actual Transliterator objects. In the course of
* this, some (or all) entries may be removed. If all entries
- * are removed, the NULL transliterator will be added.
+ * are removed, the nullptr transliterator will be added.
*
* Delete entries with empty basicIDs; these are generated by
* elements like "(A)" in the forward direction, or "A()" in
@@ -492,7 +492,7 @@ void TransliteratorIDParser::instantiateList(UVector& list,
SingleID* single = (SingleID*) list.elementAt(i);
if (single->basicID.length() != 0) {
t = single->createInstance();
- if (t == NULL) {
+ if (t == nullptr) {
ec = U_INVALID_ID;
goto RETURN;
}
@@ -503,10 +503,10 @@ void TransliteratorIDParser::instantiateList(UVector& list,
}
}
- // An empty list is equivalent to a NULL transliterator.
+ // An empty list is equivalent to a nullptr transliterator.
if (tlist.size() == 0) {
- t = createBasicInstance(UnicodeString(true, ANY_NULL, 8), NULL);
- if (t == NULL) {
+ t = createBasicInstance(UnicodeString(true, ANY_NULL, 8), nullptr);
+ if (t == nullptr) {
// Should never happen
ec = U_INTERNAL_TRANSLITERATOR_ERROR;
}
@@ -541,8 +541,8 @@ void TransliteratorIDParser::instantiateList(UVector& list,
* @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
+ * given as the source, and isSourcePresent will be nullptr. Otherwise
+ * isSourcePresent will be non-nullptr. The target may be empty if the
* id is not well-formed. The variant may be empty.
*/
void TransliteratorIDParser::IDtoSTV(const UnicodeString& id,
@@ -607,7 +607,7 @@ void TransliteratorIDParser::STVtoID(const UnicodeString& source,
}
// NUL-terminate the ID string for getTerminatedBuffer.
// This prevents valgrind and Purify warnings.
- id.append((UChar)0);
+ id.append((char16_t)0);
id.truncate(id.length()-1);
}
@@ -660,14 +660,14 @@ void TransliteratorIDParser::registerSpecialInverse(const UnicodeString& target,
Mutex lock(&LOCK);
UnicodeString *tempus = new UnicodeString(inverseTarget); // Used for null pointer check before usage.
- if (tempus == NULL) {
+ if (tempus == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
SPECIAL_INVERSES->put(target, tempus, status);
if (bidirectional) {
tempus = new UnicodeString(target);
- if (tempus == NULL) {
+ if (tempus == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -691,12 +691,12 @@ void TransliteratorIDParser::registerSpecialInverse(const UnicodeString& target,
* @param allowFilter2 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
+ * @return a Specs object, or nullptr 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.
+ * filter reference is nullptr. If the parse fails for any reason
+ * nullptr is returned.
*/
TransliteratorIDParser::Specs*
TransliteratorIDParser::parseFilterID(const UnicodeString& id, int32_t& pos,
@@ -706,7 +706,7 @@ TransliteratorIDParser::parseFilterID(const UnicodeString& id, int32_t& pos,
UnicodeString target;
UnicodeString variant;
UnicodeString filter;
- UChar delimiter = 0;
+ char16_t delimiter = 0;
int32_t specCount = 0;
int32_t start = pos;
@@ -725,10 +725,10 @@ TransliteratorIDParser::parseFilterID(const UnicodeString& id, int32_t& pos,
ParsePosition ppos(pos);
UErrorCode ec = U_ZERO_ERROR;
- UnicodeSet set(id, ppos, USET_IGNORE_SPACE, NULL, ec);
+ UnicodeSet set(id, ppos, USET_IGNORE_SPACE, nullptr, ec);
if (U_FAILURE(ec)) {
pos = start;
- return NULL;
+ return nullptr;
}
id.extractBetween(pos, ppos.getIndex(), filter);
pos = ppos.getIndex();
@@ -736,7 +736,7 @@ TransliteratorIDParser::parseFilterID(const UnicodeString& id, int32_t& pos,
}
if (delimiter == 0) {
- UChar c = id.charAt(pos);
+ char16_t c = id.charAt(pos);
if ((c == TARGET_SEP && target.length() == 0) ||
(c == VARIANT_SEP && variant.length() == 0)) {
delimiter = c;
@@ -788,7 +788,7 @@ TransliteratorIDParser::parseFilterID(const UnicodeString& id, int32_t& pos,
// Must have either source or target
if (source.length() == 0 && target.length() == 0) {
pos = start;
- return NULL;
+ return nullptr;
}
// Empty source or target defaults to ANY
@@ -808,15 +808,15 @@ TransliteratorIDParser::parseFilterID(const UnicodeString& id, int32_t& pos,
* 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.
+ * @return a SingleID; never returns nullptr. Returned object always
+ * has 'filter' field of nullptr.
*/
TransliteratorIDParser::SingleID*
TransliteratorIDParser::specsToID(const Specs* specs, int32_t dir) {
UnicodeString canonID;
UnicodeString basicID;
UnicodeString basicPrefix;
- if (specs != NULL) {
+ if (specs != nullptr) {
UnicodeString buf;
if (dir == FORWARD) {
if (specs->sawSource) {
@@ -845,18 +845,18 @@ TransliteratorIDParser::specsToID(const Specs* specs, int32_t dir) {
/**
* 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.
+ * then return nullptr.
+ * @return a SingleID or nullptr. Returned object always has
+ * 'filter' field of nullptr.
*/
TransliteratorIDParser::SingleID*
TransliteratorIDParser::specsToSpecialInverse(const Specs& specs, UErrorCode &status) {
if (0!=specs.source.caseCompare(ANY, 3, U_FOLD_CASE_DEFAULT)) {
- return NULL;
+ return nullptr;
}
umtx_initOnce(gSpecialInversesInitOnce, init, status);
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
UnicodeString* inverseTarget;
@@ -865,7 +865,7 @@ TransliteratorIDParser::specsToSpecialInverse(const Specs& specs, UErrorCode &st
inverseTarget = (UnicodeString*) SPECIAL_INVERSES->get(specs.target);
umtx_unlock(&LOCK);
- if (inverseTarget != NULL) {
+ if (inverseTarget != nullptr) {
// 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".
@@ -887,7 +887,7 @@ TransliteratorIDParser::specsToSpecialInverse(const Specs& specs, UErrorCode &st
}
return new SingleID(buf, basicID);
}
- return NULL;
+ return nullptr;
}
/**
@@ -903,11 +903,11 @@ Transliterator* TransliteratorIDParser::createBasicInstance(const UnicodeString&
* Initialize static memory. Called through umtx_initOnce only.
*/
void U_CALLCONV TransliteratorIDParser::init(UErrorCode &status) {
- U_ASSERT(SPECIAL_INVERSES == NULL);
+ U_ASSERT(SPECIAL_INVERSES == nullptr);
ucln_i18n_registerCleanup(UCLN_I18N_TRANSLITERATOR, utrans_transliterator_cleanup);
SPECIAL_INVERSES = new Hashtable(true, status);
- if (SPECIAL_INVERSES == NULL) {
+ if (SPECIAL_INVERSES == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -920,7 +920,7 @@ void U_CALLCONV TransliteratorIDParser::init(UErrorCode &status) {
void TransliteratorIDParser::cleanup() {
if (SPECIAL_INVERSES) {
delete SPECIAL_INVERSES;
- SPECIAL_INVERSES = NULL;
+ SPECIAL_INVERSES = nullptr;
}
gSpecialInversesInitOnce.reset();
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/tzfmt.cpp b/Build/source/libs/icu/icu-src/source/i18n/tzfmt.cpp
index 2199986f615..ed53438c414 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/tzfmt.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/tzfmt.cpp
@@ -70,35 +70,35 @@ static const char gGmtFormatTag[]= "gmtFormat";
static const char gGmtZeroFormatTag[] = "gmtZeroFormat";
static const char gHourFormatTag[]= "hourFormat";
-static const UChar TZID_GMT[] = {0x0045, 0x0074, 0x0063, 0x002F, 0x0047, 0x004D, 0x0054, 0}; // Etc/GMT
-static const UChar UNKNOWN_ZONE_ID[] = {
+static const char16_t TZID_GMT[] = {0x0045, 0x0074, 0x0063, 0x002F, 0x0047, 0x004D, 0x0054, 0}; // Etc/GMT
+static const char16_t UNKNOWN_ZONE_ID[] = {
0x0045, 0x0074, 0x0063, 0x002F, 0x0055, 0x006E, 0x006B, 0x006E, 0x006F, 0x0077, 0x006E, 0}; // Etc/Unknown
-static const UChar UNKNOWN_SHORT_ZONE_ID[] = {0x0075, 0x006E, 0x006B, 0}; // unk
-static const UChar UNKNOWN_LOCATION[] = {0x0055, 0x006E, 0x006B, 0x006E, 0x006F, 0x0077, 0x006E, 0}; // Unknown
-
-static const UChar DEFAULT_GMT_PATTERN[] = {0x0047, 0x004D, 0x0054, 0x007B, 0x0030, 0x007D, 0}; // GMT{0}
-//static const UChar DEFAULT_GMT_ZERO[] = {0x0047, 0x004D, 0x0054, 0}; // GMT
-static const UChar DEFAULT_GMT_POSITIVE_HM[] = {0x002B, 0x0048, 0x003A, 0x006D, 0x006D, 0}; // +H:mm
-static const UChar DEFAULT_GMT_POSITIVE_HMS[] = {0x002B, 0x0048, 0x003A, 0x006D, 0x006D, 0x003A, 0x0073, 0x0073, 0}; // +H:mm:ss
-static const UChar DEFAULT_GMT_NEGATIVE_HM[] = {0x002D, 0x0048, 0x003A, 0x006D, 0x006D, 0}; // -H:mm
-static const UChar DEFAULT_GMT_NEGATIVE_HMS[] = {0x002D, 0x0048, 0x003A, 0x006D, 0x006D, 0x003A, 0x0073, 0x0073, 0}; // -H:mm:ss
-static const UChar DEFAULT_GMT_POSITIVE_H[] = {0x002B, 0x0048, 0}; // +H
-static const UChar DEFAULT_GMT_NEGATIVE_H[] = {0x002D, 0x0048, 0}; // -H
+static const char16_t UNKNOWN_SHORT_ZONE_ID[] = {0x0075, 0x006E, 0x006B, 0}; // unk
+static const char16_t UNKNOWN_LOCATION[] = {0x0055, 0x006E, 0x006B, 0x006E, 0x006F, 0x0077, 0x006E, 0}; // Unknown
+
+static const char16_t DEFAULT_GMT_PATTERN[] = {0x0047, 0x004D, 0x0054, 0x007B, 0x0030, 0x007D, 0}; // GMT{0}
+//static const char16_t DEFAULT_GMT_ZERO[] = {0x0047, 0x004D, 0x0054, 0}; // GMT
+static const char16_t DEFAULT_GMT_POSITIVE_HM[] = {0x002B, 0x0048, 0x003A, 0x006D, 0x006D, 0}; // +H:mm
+static const char16_t DEFAULT_GMT_POSITIVE_HMS[] = {0x002B, 0x0048, 0x003A, 0x006D, 0x006D, 0x003A, 0x0073, 0x0073, 0}; // +H:mm:ss
+static const char16_t DEFAULT_GMT_NEGATIVE_HM[] = {0x002D, 0x0048, 0x003A, 0x006D, 0x006D, 0}; // -H:mm
+static const char16_t DEFAULT_GMT_NEGATIVE_HMS[] = {0x002D, 0x0048, 0x003A, 0x006D, 0x006D, 0x003A, 0x0073, 0x0073, 0}; // -H:mm:ss
+static const char16_t DEFAULT_GMT_POSITIVE_H[] = {0x002B, 0x0048, 0}; // +H
+static const char16_t DEFAULT_GMT_NEGATIVE_H[] = {0x002D, 0x0048, 0}; // -H
static const UChar32 DEFAULT_GMT_DIGITS[] = {
0x0030, 0x0031, 0x0032, 0x0033, 0x0034,
0x0035, 0x0036, 0x0037, 0x0038, 0x0039
};
-static const UChar DEFAULT_GMT_OFFSET_SEP = 0x003A; // ':'
+static const char16_t DEFAULT_GMT_OFFSET_SEP = 0x003A; // ':'
-static const UChar ARG0[] = {0x007B, 0x0030, 0x007D}; // "{0}"
+static const char16_t ARG0[] = {0x007B, 0x0030, 0x007D}; // "{0}"
static const int32_t ARG0_LEN = 3;
-static const UChar DEFAULT_GMT_OFFSET_MINUTE_PATTERN[] = {0x006D, 0x006D, 0}; // "mm"
-static const UChar DEFAULT_GMT_OFFSET_SECOND_PATTERN[] = {0x0073, 0x0073, 0}; // "ss"
+static const char16_t DEFAULT_GMT_OFFSET_MINUTE_PATTERN[] = {0x006D, 0x006D, 0}; // "mm"
+static const char16_t DEFAULT_GMT_OFFSET_SECOND_PATTERN[] = {0x0073, 0x0073, 0}; // "ss"
-static const UChar ALT_GMT_STRINGS[][4] = {
+static const char16_t ALT_GMT_STRINGS[][4] = {
{0x0047, 0x004D, 0x0054, 0}, // GMT
{0x0055, 0x0054, 0x0043, 0}, // UTC
{0x0055, 0x0054, 0, 0}, // UT
@@ -117,11 +117,11 @@ static const int32_t PARSE_GMT_OFFSET_TYPES[] = {
-1
};
-static const UChar SINGLEQUOTE = 0x0027;
-static const UChar PLUS = 0x002B;
-static const UChar MINUS = 0x002D;
-static const UChar ISO8601_UTC = 0x005A; // 'Z'
-static const UChar ISO8601_SEP = 0x003A; // ':'
+static const char16_t SINGLEQUOTE = 0x0027;
+static const char16_t PLUS = 0x002B;
+static const char16_t MINUS = 0x002D;
+static const char16_t ISO8601_UTC = 0x005A; // 'Z'
+static const char16_t ISO8601_SEP = 0x003A; // ':'
static const int32_t MILLIS_PER_HOUR = 60 * 60 * 1000;
static const int32_t MILLIS_PER_MINUTE = 60 * 1000;
@@ -144,10 +144,10 @@ static const int32_t ALL_GENERIC_NAME_TYPES = UTZGNM_LOCATION | UTZGNM_LONG | UT
#define MAX_OFFSET_DIGITS 6
// Time Zone ID/Short ID trie
-static TextTrieMap *gZoneIdTrie = NULL;
+static TextTrieMap *gZoneIdTrie = nullptr;
static icu::UInitOnce gZoneIdTrieInitOnce {};
-static TextTrieMap *gShortZoneIdTrie = NULL;
+static TextTrieMap *gShortZoneIdTrie = nullptr;
static icu::UInitOnce gShortZoneIdTrieInitOnce {};
static UMutex gLock;
@@ -156,18 +156,18 @@ U_CDECL_BEGIN
/**
* Cleanup callback func
*/
-static UBool U_CALLCONV tzfmt_cleanup(void)
+static UBool U_CALLCONV tzfmt_cleanup()
{
- if (gZoneIdTrie != NULL) {
+ if (gZoneIdTrie != nullptr) {
delete gZoneIdTrie;
}
- gZoneIdTrie = NULL;
+ gZoneIdTrie = nullptr;
gZoneIdTrieInitOnce.reset();
- if (gShortZoneIdTrie != NULL) {
+ if (gShortZoneIdTrie != nullptr) {
delete gShortZoneIdTrie;
}
- gShortZoneIdTrie = NULL;
+ gShortZoneIdTrie = nullptr;
gShortZoneIdTrieInitOnce.reset();
return true;
@@ -194,14 +194,14 @@ public:
static GMTOffsetField* createText(const UnicodeString& text, UErrorCode& status);
static GMTOffsetField* createTimeField(FieldType type, uint8_t width, UErrorCode& status);
static UBool isValid(FieldType type, int32_t width);
- static FieldType getTypeByLetter(UChar ch);
+ static FieldType getTypeByLetter(char16_t ch);
FieldType getType() const;
uint8_t getWidth() const;
- const UChar* getPatternText(void) const;
+ const char16_t* getPatternText() const;
private:
- UChar* fText;
+ char16_t* fText;
FieldType fType;
uint8_t fWidth;
@@ -209,7 +209,7 @@ private:
};
GMTOffsetField::GMTOffsetField()
-: fText(NULL), fType(TEXT), fWidth(0) {
+: fText(nullptr), fType(TEXT), fWidth(0) {
}
GMTOffsetField::~GMTOffsetField() {
@@ -221,20 +221,20 @@ GMTOffsetField::~GMTOffsetField() {
GMTOffsetField*
GMTOffsetField::createText(const UnicodeString& text, UErrorCode& status) {
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
GMTOffsetField* result = new GMTOffsetField();
- if (result == NULL) {
+ if (result == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
int32_t len = text.length();
- result->fText = (UChar*)uprv_malloc((len + 1) * sizeof(UChar));
- if (result->fText == NULL) {
+ result->fText = (char16_t*)uprv_malloc((len + 1) * sizeof(char16_t));
+ if (result->fText == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
delete result;
- return NULL;
+ return nullptr;
}
u_strncpy(result->fText, text.getBuffer(), len);
result->fText[len] = 0;
@@ -247,12 +247,12 @@ GMTOffsetField*
GMTOffsetField::createTimeField(FieldType type, uint8_t width, UErrorCode& status) {
U_ASSERT(type != TEXT);
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
GMTOffsetField* result = new GMTOffsetField();
- if (result == NULL) {
+ if (result == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
result->fType = type;
@@ -276,7 +276,7 @@ GMTOffsetField::isValid(FieldType type, int32_t width) {
}
GMTOffsetField::FieldType
-GMTOffsetField::getTypeByLetter(UChar ch) {
+GMTOffsetField::getTypeByLetter(char16_t ch) {
if (ch == 0x0048 /* H */) {
return HOUR;
} else if (ch == 0x006D /* m */) {
@@ -297,8 +297,8 @@ GMTOffsetField::getWidth() const {
return fWidth;
}
-inline const UChar*
-GMTOffsetField::getPatternText(void) const {
+inline const char16_t*
+GMTOffsetField::getPatternText() const {
return fText;
}
@@ -317,11 +317,11 @@ U_CDECL_END
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(TimeZoneFormat)
TimeZoneFormat::TimeZoneFormat(const Locale& locale, UErrorCode& status)
-: fLocale(locale), fTimeZoneNames(NULL), fTimeZoneGenericNames(NULL),
- fDefParseOptionFlags(0), fTZDBTimeZoneNames(NULL) {
+: fLocale(locale), fTimeZoneNames(nullptr), fTimeZoneGenericNames(nullptr),
+ fDefParseOptionFlags(0), fTZDBTimeZoneNames(nullptr) {
for (int32_t i = 0; i < UTZFMT_PAT_COUNT; i++) {
- fGMTOffsetPatternItems[i] = NULL;
+ fGMTOffsetPatternItems[i] = nullptr;
}
const char* region = fLocale.getCountry();
@@ -351,13 +351,13 @@ TimeZoneFormat::TimeZoneFormat(const Locale& locale, UErrorCode& status)
return;
}
- const UChar* gmtPattern = NULL;
- const UChar* hourFormats = NULL;
+ const char16_t* gmtPattern = nullptr;
+ const char16_t* hourFormats = nullptr;
UResourceBundle *zoneBundle = ures_open(U_ICUDATA_ZONE, locale.getName(), &status);
- UResourceBundle *zoneStringsArray = ures_getByKeyWithFallback(zoneBundle, gZoneStringsTag, NULL, &status);
+ UResourceBundle *zoneStringsArray = ures_getByKeyWithFallback(zoneBundle, gZoneStringsTag, nullptr, &status);
if (U_SUCCESS(status)) {
- const UChar* resStr;
+ const char16_t* resStr;
int32_t len;
resStr = ures_getStringByKeyWithFallback(zoneStringsArray, gGmtFormatTag, &len, &status);
if (len > 0) {
@@ -375,15 +375,15 @@ TimeZoneFormat::TimeZoneFormat(const Locale& locale, UErrorCode& status)
ures_close(zoneBundle);
}
- if (gmtPattern == NULL) {
+ if (gmtPattern == nullptr) {
gmtPattern = DEFAULT_GMT_PATTERN;
}
initGMTPattern(UnicodeString(true, gmtPattern, -1), status);
UBool useDefaultOffsetPatterns = true;
if (hourFormats) {
- UChar *sep = u_strchr(hourFormats, (UChar)0x003B /* ';' */);
- if (sep != NULL) {
+ char16_t *sep = u_strchr(hourFormats, (char16_t)0x003B /* ';' */);
+ if (sep != nullptr) {
UErrorCode tmpStatus = U_ZERO_ERROR;
fGMTOffsetPatterns[UTZFMT_PAT_POSITIVE_HM].setTo(false, hourFormats, (int32_t)(sep - hourFormats));
fGMTOffsetPatterns[UTZFMT_PAT_NEGATIVE_HM].setTo(true, sep + 1, -1);
@@ -419,11 +419,11 @@ TimeZoneFormat::TimeZoneFormat(const Locale& locale, UErrorCode& status)
}
TimeZoneFormat::TimeZoneFormat(const TimeZoneFormat& other)
-: Format(other), fTimeZoneNames(NULL), fTimeZoneGenericNames(NULL),
- fTZDBTimeZoneNames(NULL) {
+: Format(other), fTimeZoneNames(nullptr), fTimeZoneGenericNames(nullptr),
+ fTZDBTimeZoneNames(nullptr) {
for (int32_t i = 0; i < UTZFMT_PAT_COUNT; i++) {
- fGMTOffsetPatternItems[i] = NULL;
+ fGMTOffsetPatternItems[i] = nullptr;
}
*this = other;
}
@@ -446,9 +446,9 @@ TimeZoneFormat::operator=(const TimeZoneFormat& other) {
delete fTimeZoneNames;
delete fTimeZoneGenericNames;
- fTimeZoneGenericNames = NULL;
+ fTimeZoneGenericNames = nullptr;
delete fTZDBTimeZoneNames;
- fTZDBTimeZoneNames = NULL;
+ fTZDBTimeZoneNames = nullptr;
fLocale = other.fLocale;
uprv_memcpy(fTargetRegion, other.fTargetRegion, sizeof(fTargetRegion));
@@ -467,7 +467,7 @@ TimeZoneFormat::operator=(const TimeZoneFormat& other) {
for (int32_t i = 0; i < UTZFMT_PAT_COUNT; i++) {
fGMTOffsetPatterns[i] = other.fGMTOffsetPatterns[i];
delete fGMTOffsetPatternItems[i];
- fGMTOffsetPatternItems[i] = NULL;
+ fGMTOffsetPatternItems[i] = nullptr;
}
initGMTOffsetPatterns(status);
U_ASSERT(U_SUCCESS(status));
@@ -517,7 +517,7 @@ TimeZoneFormat::createInstance(const Locale& locale, UErrorCode& status) {
return tzfmt;
}
delete tzfmt;
- return NULL;
+ return nullptr;
}
// ------------------------------------------------------------------
@@ -550,7 +550,7 @@ TimeZoneFormat::setDefaultParseOptions(uint32_t flags) {
}
uint32_t
-TimeZoneFormat::getDefaultParseOptions(void) const {
+TimeZoneFormat::getDefaultParseOptions() const {
return fDefParseOptionFlags;
}
@@ -599,7 +599,7 @@ TimeZoneFormat::setGMTOffsetPattern(UTimeZoneFormatGMTOffsetPatternType type, co
}
UVector* patternItems = parseOffsetPattern(pattern, required, status);
- if (patternItems == NULL) {
+ if (patternItems == nullptr) {
return;
}
@@ -652,7 +652,7 @@ TimeZoneFormat::setGMTZeroFormat(const UnicodeString& gmtZeroFormat, UErrorCode&
UnicodeString&
TimeZoneFormat::format(UTimeZoneFormatStyle style, const TimeZone& tz, UDate date,
- UnicodeString& name, UTimeZoneFormatTimeType* timeType /* = NULL */) const {
+ UnicodeString& name, UTimeZoneFormatTimeType* timeType /* = nullptr */) const {
if (timeType) {
*timeType = UTZFMT_TIME_TYPE_UNKNOWN;
}
@@ -682,8 +682,8 @@ TimeZoneFormat::format(UTimeZoneFormatStyle style, const TimeZone& tz, UDate dat
break;
case UTZFMT_STYLE_ZONE_ID_SHORT:
{
- const UChar* shortID = ZoneMeta::getShortID(tz);
- if (shortID == NULL) {
+ const char16_t* shortID = ZoneMeta::getShortID(tz);
+ if (shortID == nullptr) {
shortID = UNKNOWN_SHORT_ZONE_ID;
}
name.setTo(shortID, -1);
@@ -785,17 +785,17 @@ TimeZoneFormat::format(const Formattable& obj, UnicodeString& appendTo,
if (obj.getType() == Formattable::kObject) {
const UObject* formatObj = obj.getObject();
const TimeZone* tz = dynamic_cast<const TimeZone*>(formatObj);
- if (tz == NULL) {
+ if (tz == nullptr) {
const Calendar* cal = dynamic_cast<const Calendar*>(formatObj);
- if (cal != NULL) {
+ if (cal != nullptr) {
tz = &cal->getTimeZone();
date = cal->getTime(status);
}
}
- if (tz != NULL) {
+ if (tz != nullptr) {
int32_t rawOffset, dstOffset;
tz->getOffset(date, false, rawOffset, dstOffset, status);
- UChar buf[ZONE_NAME_U16_MAX];
+ char16_t buf[ZONE_NAME_U16_MAX];
UnicodeString result(buf, 0, UPRV_LENGTHOF(buf));
formatOffsetLocalizedGMT(rawOffset + dstOffset, result, status);
if (U_SUCCESS(status)) {
@@ -812,13 +812,13 @@ TimeZoneFormat::format(const Formattable& obj, UnicodeString& appendTo,
TimeZone*
TimeZoneFormat::parse(UTimeZoneFormatStyle style, const UnicodeString& text, ParsePosition& pos,
- UTimeZoneFormatTimeType* timeType /*= NULL*/) const {
+ UTimeZoneFormatTimeType* timeType /*= nullptr*/) const {
return parse(style, text, pos, getDefaultParseOptions(), timeType);
}
TimeZone*
TimeZoneFormat::parse(UTimeZoneFormatStyle style, const UnicodeString& text, ParsePosition& pos,
- int32_t parseOptions, UTimeZoneFormatTimeType* timeType /* = NULL */) const {
+ int32_t parseOptions, UTimeZoneFormatTimeType* timeType /* = nullptr */) const {
if (timeType) {
*timeType = UTZFMT_TIME_TYPE_UNKNOWN;
}
@@ -862,7 +862,7 @@ TimeZoneFormat::parse(UTimeZoneFormatStyle style, const UnicodeString& text, Par
}
UErrorCode status = U_ZERO_ERROR;
- UChar tzIDBuf[32];
+ char16_t tzIDBuf[32];
UnicodeString tzID(tzIDBuf, 0, UPRV_LENGTHOF(tzIDBuf));
UBool parseTZDBAbbrev = ((parseOptions & UTZFMT_PARSE_OPTION_TZ_DATABASE_ABBREVIATIONS) != 0);
@@ -955,7 +955,7 @@ TimeZoneFormat::parse(UTimeZoneFormatStyle style, const UnicodeString& text, Par
LocalPointer<TimeZoneNames::MatchInfoCollection> specificMatches(fTimeZoneNames->find(text, startIdx, nameTypes, status));
if (U_FAILURE(status)) {
pos.setErrorIndex(startIdx);
- return NULL;
+ return nullptr;
}
if (!specificMatches.isNull()) {
int32_t matchIdx = -1;
@@ -988,7 +988,7 @@ TimeZoneFormat::parse(UTimeZoneFormatStyle style, const UnicodeString& text, Par
tzdbTimeZoneNames->find(text, startIdx, nameTypes, status));
if (U_FAILURE(status)) {
pos.setErrorIndex(startIdx);
- return NULL;
+ return nullptr;
}
if (!tzdbNameMatches.isNull()) {
int32_t matchIdx = -1;
@@ -1044,7 +1044,7 @@ TimeZoneFormat::parse(UTimeZoneFormatStyle style, const UnicodeString& text, Par
}
if (U_FAILURE(status)) {
pos.setErrorIndex(startIdx);
- return NULL;
+ return nullptr;
}
if (len > 0) {
// Found a match
@@ -1112,7 +1112,7 @@ TimeZoneFormat::parse(UTimeZoneFormatStyle style, const UnicodeString& text, Par
// Failed to parse the input text as the time zone format in the specified style.
// Check the longest match among other styles below.
- UChar parsedIDBuf[32];
+ char16_t parsedIDBuf[32];
UnicodeString parsedID(parsedIDBuf, 0, UPRV_LENGTHOF(parsedIDBuf));
UTimeZoneFormatTimeType parsedTimeType = UTZFMT_TIME_TYPE_UNKNOWN;
@@ -1205,7 +1205,7 @@ TimeZoneFormat::parse(UTimeZoneFormatStyle style, const UnicodeString& text, Par
LocalPointer<TimeZoneNames::MatchInfoCollection> specificMatches(fTimeZoneNames->find(text, startIdx, ALL_SIMPLE_NAME_TYPES, status));
if (U_FAILURE(status)) {
pos.setErrorIndex(startIdx);
- return NULL;
+ return nullptr;
}
int32_t specificMatchIdx = -1;
int32_t matchPos = -1;
@@ -1232,7 +1232,7 @@ TimeZoneFormat::parse(UTimeZoneFormatStyle style, const UnicodeString& text, Par
tzdbTimeZoneNames->find(text, startIdx, ALL_SIMPLE_NAME_TYPES, status));
if (U_FAILURE(status)) {
pos.setErrorIndex(startIdx);
- return NULL;
+ return nullptr;
}
int32_t tzdbNameMatchIdx = -1;
int32_t matchPos = -1;
@@ -1264,7 +1264,7 @@ TimeZoneFormat::parse(UTimeZoneFormatStyle style, const UnicodeString& text, Par
}
if (U_FAILURE(status)) {
pos.setErrorIndex(startIdx);
- return NULL;
+ return nullptr;
}
if (genMatchLen > 0 && parsedPos < startIdx + genMatchLen) {
@@ -1320,7 +1320,7 @@ TimeZoneFormat::parse(UTimeZoneFormatStyle style, const UnicodeString& text, Par
}
pos.setErrorIndex(startIdx);
- return NULL;
+ return nullptr;
}
void
@@ -1343,8 +1343,8 @@ TimeZoneFormat::formatGeneric(const TimeZone& tz, int32_t genType, UDate date, U
}
if (genType == UTZGNM_LOCATION) {
- const UChar* canonicalID = ZoneMeta::getCanonicalCLDRID(tz);
- if (canonicalID == NULL) {
+ const char16_t* canonicalID = ZoneMeta::getCanonicalCLDRID(tz);
+ if (canonicalID == nullptr) {
name.setToBogus();
return name;
}
@@ -1356,16 +1356,16 @@ TimeZoneFormat::formatGeneric(const TimeZone& tz, int32_t genType, UDate date, U
UnicodeString&
TimeZoneFormat::formatSpecific(const TimeZone& tz, UTimeZoneNameType stdType, UTimeZoneNameType dstType,
UDate date, UnicodeString& name, UTimeZoneFormatTimeType *timeType) const {
- if (fTimeZoneNames == NULL) {
+ if (fTimeZoneNames == nullptr) {
name.setToBogus();
return name;
}
UErrorCode status = U_ZERO_ERROR;
UBool isDaylight = tz.inDaylightTime(date, status);
- const UChar* canonicalID = ZoneMeta::getCanonicalCLDRID(tz);
+ const char16_t* canonicalID = ZoneMeta::getCanonicalCLDRID(tz);
- if (U_FAILURE(status) || canonicalID == NULL) {
+ if (U_FAILURE(status) || canonicalID == nullptr) {
name.setToBogus();
return name;
}
@@ -1385,11 +1385,11 @@ TimeZoneFormat::formatSpecific(const TimeZone& tz, UTimeZoneNameType stdType, UT
const TimeZoneGenericNames*
TimeZoneFormat::getTimeZoneGenericNames(UErrorCode& status) const {
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
umtx_lock(&gLock);
- if (fTimeZoneGenericNames == NULL) {
+ if (fTimeZoneGenericNames == nullptr) {
TimeZoneFormat *nonConstThis = const_cast<TimeZoneFormat *>(this);
nonConstThis->fTimeZoneGenericNames = TimeZoneGenericNames::createInstance(fLocale, status);
}
@@ -1401,13 +1401,13 @@ TimeZoneFormat::getTimeZoneGenericNames(UErrorCode& status) const {
const TZDBTimeZoneNames*
TimeZoneFormat::getTZDBTimeZoneNames(UErrorCode& status) const {
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
umtx_lock(&gLock);
- if (fTZDBTimeZoneNames == NULL) {
+ if (fTZDBTimeZoneNames == nullptr) {
TZDBTimeZoneNames *tzdbNames = new TZDBTimeZoneNames(fLocale);
- if (tzdbNames == NULL) {
+ if (tzdbNames == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
} else {
TimeZoneFormat *nonConstThis = const_cast<TimeZoneFormat *>(this);
@@ -1421,9 +1421,9 @@ TimeZoneFormat::getTZDBTimeZoneNames(UErrorCode& status) const {
UnicodeString&
TimeZoneFormat::formatExemplarLocation(const TimeZone& tz, UnicodeString& name) const {
- UChar locationBuf[ZONE_NAME_U16_MAX];
+ char16_t locationBuf[ZONE_NAME_U16_MAX];
UnicodeString location(locationBuf, 0, UPRV_LENGTHOF(locationBuf));
- const UChar* canonicalID = ZoneMeta::getCanonicalCLDRID(tz);
+ const char16_t* canonicalID = ZoneMeta::getCanonicalCLDRID(tz);
if (canonicalID) {
fTimeZoneNames->getExemplarLocationName(UnicodeString(true, canonicalID, -1), location);
@@ -1476,12 +1476,12 @@ TimeZoneFormat::parseOffsetISO8601(const UnicodeString& text, ParsePosition& pos
int32_t
TimeZoneFormat::parseOffsetLocalizedGMT(const UnicodeString& text, ParsePosition& pos) const {
- return parseOffsetLocalizedGMT(text, pos, false, NULL);
+ return parseOffsetLocalizedGMT(text, pos, false, nullptr);
}
int32_t
TimeZoneFormat::parseOffsetShortLocalizedGMT(const UnicodeString& text, ParsePosition& pos) const {
- return parseOffsetLocalizedGMT(text, pos, true, NULL);
+ return parseOffsetLocalizedGMT(text, pos, true, nullptr);
}
// ------------------------------------------------------------------
@@ -1502,7 +1502,7 @@ TimeZoneFormat::formatOffsetISO8601(int32_t offset, UBool isBasic, UBool useUtcI
OffsetFields minFields = isShort ? FIELDS_H : FIELDS_HM;
OffsetFields maxFields = ignoreSeconds ? FIELDS_HM : FIELDS_HMS;
- UChar sep = isBasic ? 0 : ISO8601_SEP;
+ char16_t sep = isBasic ? 0 : ISO8601_SEP;
// Note: FIELDS_HMS as maxFields is a CLDR/ICU extension. ISO 8601 specification does
// not support seconds field.
@@ -1532,7 +1532,7 @@ TimeZoneFormat::formatOffsetISO8601(int32_t offset, UBool isBasic, UBool useUtcI
lastIdx--;
}
- UChar sign = PLUS;
+ char16_t sign = PLUS;
if (offset < 0) {
// if all output fields are 0s, do not use negative sign
for (int32_t idx = 0; idx <= lastIdx; idx++) {
@@ -1548,8 +1548,8 @@ TimeZoneFormat::formatOffsetISO8601(int32_t offset, UBool isBasic, UBool useUtcI
if (sep && idx != 0) {
result.append(sep);
}
- result.append((UChar)(0x0030 + fields[idx]/10));
- result.append((UChar)(0x0030 + fields[idx]%10));
+ result.append((char16_t)(0x0030 + fields[idx]/10));
+ result.append((char16_t)(0x0030 + fields[idx]%10));
}
return result;
@@ -1586,7 +1586,7 @@ TimeZoneFormat::formatOffsetLocalizedGMT(int32_t offset, UBool isShort, UnicodeS
U_ASSERT(offsetH <= MAX_OFFSET_HOUR && offsetM <= MAX_OFFSET_MINUTE && offsetS <= MAX_OFFSET_SECOND);
- const UVector* offsetPatternItems = NULL;
+ const UVector* offsetPatternItems = nullptr;
if (positive) {
if (offsetS != 0) {
offsetPatternItems = fGMTOffsetPatternItems[UTZFMT_PAT_POSITIVE_HMS];
@@ -1605,7 +1605,7 @@ TimeZoneFormat::formatOffsetLocalizedGMT(int32_t offset, UBool isShort, UnicodeS
}
}
- U_ASSERT(offsetPatternItems != NULL);
+ U_ASSERT(offsetPatternItems != nullptr);
// Building the GMT format string
result.setTo(fGMTPatternPrefix);
@@ -1638,7 +1638,7 @@ TimeZoneFormat::formatOffsetLocalizedGMT(int32_t offset, UBool isShort, UnicodeS
}
int32_t
-TimeZoneFormat::parseOffsetISO8601(const UnicodeString& text, ParsePosition& pos, UBool extendedOnly, UBool* hasDigitOffset /* = NULL */) const {
+TimeZoneFormat::parseOffsetISO8601(const UnicodeString& text, ParsePosition& pos, UBool extendedOnly, UBool* hasDigitOffset /* = nullptr */) const {
if (hasDigitOffset) {
*hasDigitOffset = false;
}
@@ -1648,8 +1648,8 @@ TimeZoneFormat::parseOffsetISO8601(const UnicodeString& text, ParsePosition& pos
return 0;
}
- UChar firstChar = text.charAt(start);
- if (firstChar == ISO8601_UTC || firstChar == (UChar)(ISO8601_UTC + 0x20)) {
+ char16_t firstChar = text.charAt(start);
+ if (firstChar == ISO8601_UTC || firstChar == (char16_t)(ISO8601_UTC + 0x20)) {
// "Z" (or "z") - indicates UTC
pos.setIndex(start + 1);
return 0;
@@ -1739,7 +1739,7 @@ TimeZoneFormat::parseOffsetLocalizedGMT(const UnicodeString& text, ParsePosition
// Check if this is a default GMT zero format
for (int32_t i = 0; ALT_GMT_STRINGS[i][0] != 0; i++) {
- const UChar* defGMTZero = ALT_GMT_STRINGS[i];
+ const char16_t* defGMTZero = ALT_GMT_STRINGS[i];
int32_t defGMTZeroLen = u_strlen(defGMTZero);
if (text.caseCompare(start, defGMTZeroLen, defGMTZero, 0) == 0) {
pos.setIndex(start + defGMTZeroLen);
@@ -1802,7 +1802,7 @@ TimeZoneFormat::parseOffsetFields(const UnicodeString& text, int32_t start, UBoo
for (int32_t patidx = 0; PARSE_GMT_OFFSET_TYPES[patidx] >= 0; patidx++) {
int32_t gmtPatType = PARSE_GMT_OFFSET_TYPES[patidx];
UVector* items = fGMTOffsetPatternItems[gmtPatType];
- U_ASSERT(items != NULL);
+ U_ASSERT(items != nullptr);
outLen = parseOffsetFieldsWithPattern(text, start, items, false, offsetH, offsetM, offsetS);
if (outLen > 0) {
@@ -1826,7 +1826,7 @@ TimeZoneFormat::parseOffsetFields(const UnicodeString& text, int32_t start, UBoo
for (int32_t patidx = 0; PARSE_GMT_OFFSET_TYPES[patidx] >= 0; patidx++) {
int32_t gmtPatType = PARSE_GMT_OFFSET_TYPES[patidx];
UVector* items = fGMTOffsetPatternItems[gmtPatType];
- U_ASSERT(items != NULL);
+ U_ASSERT(items != nullptr);
// forcing parse to use single hour digit
tmpLen = parseOffsetFieldsWithPattern(text, start, items, true, tmpH, tmpM, tmpS);
@@ -1867,7 +1867,7 @@ TimeZoneFormat::parseOffsetFieldsWithPattern(const UnicodeString& text, int32_t
const GMTOffsetField* field = (const GMTOffsetField*)patternItems->elementAt(i);
GMTOffsetField::FieldType fieldType = field->getType();
if (fieldType == GMTOffsetField::TEXT) {
- const UChar* patStr = field->getPatternText();
+ const char16_t* patStr = field->getPatternText();
len = u_strlen(patStr);
if (i == 0) {
// When TimeZoneFormat parse() is called from SimpleDateFormat,
@@ -2004,7 +2004,7 @@ TimeZoneFormat::parseOffsetDefaultLocalizedGMT(const UnicodeString& text, int st
int32_t gmtLen = 0;
for (int32_t i = 0; ALT_GMT_STRINGS[i][0] != 0; i++) {
- const UChar* gmt = ALT_GMT_STRINGS[i];
+ const char16_t* gmt = ALT_GMT_STRINGS[i];
int32_t len = u_strlen(gmt);
if (text.caseCompare(start, len, gmt, 0) == 0) {
gmtLen = len;
@@ -2023,7 +2023,7 @@ TimeZoneFormat::parseOffsetDefaultLocalizedGMT(const UnicodeString& text, int st
// parse sign
int32_t sign = 1;
- UChar c = text.charAt(idx);
+ char16_t c = text.charAt(idx);
if (c == PLUS) {
sign = 1;
} else if (c == MINUS) {
@@ -2062,7 +2062,7 @@ TimeZoneFormat::parseOffsetDefaultLocalizedGMT(const UnicodeString& text, int st
}
int32_t
-TimeZoneFormat::parseDefaultOffsetFields(const UnicodeString& text, int32_t start, UChar separator, int32_t& parsedLen) const {
+TimeZoneFormat::parseDefaultOffsetFields(const UnicodeString& text, int32_t start, char16_t separator, int32_t& parsedLen) const {
int32_t max = text.length();
int32_t idx = start;
int32_t len = 0;
@@ -2165,11 +2165,11 @@ TimeZoneFormat::parseSingleLocalizedDigit(const UnicodeString& text, int32_t sta
}
UnicodeString&
-TimeZoneFormat::formatOffsetWithAsciiDigits(int32_t offset, UChar sep, OffsetFields minFields, OffsetFields maxFields, UnicodeString& result) {
+TimeZoneFormat::formatOffsetWithAsciiDigits(int32_t offset, char16_t sep, OffsetFields minFields, OffsetFields maxFields, UnicodeString& result) {
U_ASSERT(maxFields >= minFields);
U_ASSERT(offset > -MAX_OFFSET && offset < MAX_OFFSET);
- UChar sign = PLUS;
+ char16_t sign = PLUS;
if (offset < 0) {
sign = MINUS;
offset = -offset;
@@ -2199,8 +2199,8 @@ TimeZoneFormat::formatOffsetWithAsciiDigits(int32_t offset, UChar sep, OffsetFie
if (sep && idx != 0) {
result.append(sep);
}
- result.append((UChar)(0x0030 + fields[idx]/10));
- result.append((UChar)(0x0030 + fields[idx]%10));
+ result.append((char16_t)(0x0030 + fields[idx]/10));
+ result.append((char16_t)(0x0030 + fields[idx]%10));
}
return result;
@@ -2219,7 +2219,7 @@ TimeZoneFormat::parseAbuttingAsciiOffsetFields(const UnicodeString& text, ParseP
int32_t numDigits = 0;
int32_t idx = start;
while (numDigits < maxDigits && idx < text.length()) {
- UChar uch = text.charAt(idx);
+ char16_t uch = text.charAt(idx);
int32_t digit = DIGIT_VAL(uch);
if (digit < 0) {
break;
@@ -2289,12 +2289,12 @@ TimeZoneFormat::parseAbuttingAsciiOffsetFields(const UnicodeString& text, ParseP
}
int32_t
-TimeZoneFormat::parseAsciiOffsetFields(const UnicodeString& text, ParsePosition& pos, UChar sep, OffsetFields minFields, OffsetFields maxFields) {
+TimeZoneFormat::parseAsciiOffsetFields(const UnicodeString& text, ParsePosition& pos, char16_t sep, OffsetFields minFields, OffsetFields maxFields) {
int32_t start = pos.getIndex();
int32_t fieldVal[] = {0, 0, 0};
int32_t fieldLen[] = {0, -1, -1};
for (int32_t idx = start, fieldIdx = 0; idx < text.length() && fieldIdx <= maxFields; idx++) {
- UChar c = text.charAt(idx);
+ char16_t c = text.charAt(idx);
if (c == sep) {
if (fieldIdx == 0) {
if (fieldLen[0] == 0) {
@@ -2412,7 +2412,7 @@ TimeZoneFormat::unquote(const UnicodeString& pattern, UnicodeString& result) {
UBool isPrevQuote = false;
UBool inQuote = false;
for (int32_t i = 0; i < pattern.length(); i++) {
- UChar c = pattern.charAt(i);
+ char16_t c = pattern.charAt(i);
if (c == SINGLEQUOTE) {
if (isPrevQuote) {
result.append(c);
@@ -2432,24 +2432,24 @@ TimeZoneFormat::unquote(const UnicodeString& pattern, UnicodeString& result) {
UVector*
TimeZoneFormat::parseOffsetPattern(const UnicodeString& pattern, OffsetFields required, UErrorCode& status) {
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
- UVector* result = new UVector(deleteGMTOffsetField, NULL, status);
- if (result == NULL) {
+ UVector* result = new UVector(deleteGMTOffsetField, nullptr, status);
+ if (result == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
int32_t checkBits = 0;
UBool isPrevQuote = false;
UBool inQuote = false;
- UChar textBuf[32];
+ char16_t textBuf[32];
UnicodeString text(textBuf, 0, UPRV_LENGTHOF(textBuf));
GMTOffsetField::FieldType itemType = GMTOffsetField::TEXT;
int32_t itemLength = 1;
for (int32_t i = 0; i < pattern.length(); i++) {
- UChar ch = pattern.charAt(i);
+ char16_t ch = pattern.charAt(i);
if (ch == SINGLEQUOTE) {
if (isPrevQuote) {
text.append(SINGLEQUOTE);
@@ -2566,7 +2566,7 @@ TimeZoneFormat::parseOffsetPattern(const UnicodeString& pattern, OffsetFields re
// error
delete result;
- return NULL;
+ return nullptr;
}
UnicodeString&
@@ -2585,7 +2585,7 @@ TimeZoneFormat::expandOffsetPattern(const UnicodeString& offsetHM, UnicodeString
}
UnicodeString sep;
- int32_t idx_H = offsetHM.tempSubString(0, idx_mm).lastIndexOf((UChar)0x0048 /* H */);
+ int32_t idx_H = offsetHM.tempSubString(0, idx_mm).lastIndexOf((char16_t)0x0048 /* H */);
if (idx_H >= 0) {
sep = offsetHM.tempSubString(idx_H + 1, idx_mm - (idx_H + 1));
}
@@ -2610,12 +2610,12 @@ TimeZoneFormat::truncateOffsetPattern(const UnicodeString& offsetHM, UnicodeStri
status = U_ILLEGAL_ARGUMENT_ERROR;
return result;
}
- UChar HH[] = {0x0048, 0x0048};
+ char16_t HH[] = {0x0048, 0x0048};
int32_t idx_HH = offsetHM.tempSubString(0, idx_mm).lastIndexOf(HH, 2, 0);
if (idx_HH >= 0) {
return result.setTo(offsetHM.tempSubString(0, idx_HH + 2));
}
- int32_t idx_H = offsetHM.tempSubString(0, idx_mm).lastIndexOf((UChar)0x0048, 0);
+ int32_t idx_H = offsetHM.tempSubString(0, idx_mm).lastIndexOf((char16_t)0x0048, 0);
if (idx_H >= 0) {
return result.setTo(offsetHM.tempSubString(0, idx_H + 1));
}
@@ -2642,6 +2642,9 @@ TimeZoneFormat::initGMTOffsetPatterns(UErrorCode& status) {
break;
}
}
+ if (U_FAILURE(status)) {
+ return;
+ }
checkAbuttingHoursAndMinutes();
}
@@ -2714,7 +2717,7 @@ TimeZoneFormat::getTimeType(UTimeZoneNameType nameType) {
UnicodeString&
TimeZoneFormat::getTimeZoneID(const TimeZoneNames::MatchInfoCollection* matches, int32_t idx, UnicodeString& tzID) const {
if (!matches->getTimeZoneIDAt(idx, tzID)) {
- UChar mzIDBuf[32];
+ char16_t mzIDBuf[32];
UnicodeString mzID(mzIDBuf, 0, UPRV_LENGTHOF(mzIDBuf));
if (matches->getMetaZoneIDAt(idx, mzID)) {
fTimeZoneNames->getReferenceZoneID(mzID, fTargetRegion, tzID);
@@ -2730,15 +2733,15 @@ public:
virtual ~ZoneIdMatchHandler();
UBool handleMatch(int32_t matchLength, const CharacterNode *node, UErrorCode &status) override;
- const UChar* getID();
+ const char16_t* getID();
int32_t getMatchLen();
private:
int32_t fLen;
- const UChar* fID;
+ const char16_t* fID;
};
ZoneIdMatchHandler::ZoneIdMatchHandler()
-: fLen(0), fID(NULL) {
+: fLen(0), fID(nullptr) {
}
ZoneIdMatchHandler::~ZoneIdMatchHandler() {
@@ -2750,8 +2753,8 @@ ZoneIdMatchHandler::handleMatch(int32_t matchLength, const CharacterNode *node,
return false;
}
if (node->hasValues()) {
- const UChar* id = (const UChar*)node->getValue(0);
- if (id != NULL) {
+ const char16_t* id = (const char16_t*)node->getValue(0);
+ if (id != nullptr) {
if (fLen < matchLength) {
fID = id;
fLen = matchLength;
@@ -2761,7 +2764,7 @@ ZoneIdMatchHandler::handleMatch(int32_t matchLength, const CharacterNode *node,
return true;
}
-const UChar*
+const char16_t*
ZoneIdMatchHandler::getID() {
return fID;
}
@@ -2773,20 +2776,20 @@ ZoneIdMatchHandler::getMatchLen() {
static void U_CALLCONV initZoneIdTrie(UErrorCode &status) {
- U_ASSERT(gZoneIdTrie == NULL);
+ U_ASSERT(gZoneIdTrie == nullptr);
ucln_i18n_registerCleanup(UCLN_I18N_TIMEZONEFORMAT, tzfmt_cleanup);
- gZoneIdTrie = new TextTrieMap(true, NULL); // No deleter, because values are pooled by ZoneMeta
- if (gZoneIdTrie == NULL) {
+ gZoneIdTrie = new TextTrieMap(true, nullptr); // No deleter, because values are pooled by ZoneMeta
+ if (gZoneIdTrie == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
StringEnumeration *tzenum = TimeZone::createEnumeration(status);
if (U_SUCCESS(status)) {
const UnicodeString *id;
- while ((id = tzenum->snext(status)) != NULL) {
- const UChar* uid = ZoneMeta::findTimeZoneID(*id);
+ while ((id = tzenum->snext(status)) != nullptr) {
+ const char16_t* uid = ZoneMeta::findTimeZoneID(*id);
if (uid) {
- gZoneIdTrie->put(uid, const_cast<UChar *>(uid), status);
+ gZoneIdTrie->put(uid, const_cast<char16_t *>(uid), status);
}
}
delete tzenum;
@@ -2822,20 +2825,20 @@ TimeZoneFormat::parseZoneID(const UnicodeString& text, ParsePosition& pos, Unico
}
static void U_CALLCONV initShortZoneIdTrie(UErrorCode &status) {
- U_ASSERT(gShortZoneIdTrie == NULL);
+ U_ASSERT(gShortZoneIdTrie == nullptr);
ucln_i18n_registerCleanup(UCLN_I18N_TIMEZONEFORMAT, tzfmt_cleanup);
- StringEnumeration *tzenum = TimeZone::createTimeZoneIDEnumeration(UCAL_ZONE_TYPE_CANONICAL, NULL, NULL, status);
+ StringEnumeration *tzenum = TimeZone::createTimeZoneIDEnumeration(UCAL_ZONE_TYPE_CANONICAL, nullptr, nullptr, status);
if (U_SUCCESS(status)) {
- gShortZoneIdTrie = new TextTrieMap(true, NULL); // No deleter, because values are pooled by ZoneMeta
- if (gShortZoneIdTrie == NULL) {
+ gShortZoneIdTrie = new TextTrieMap(true, nullptr); // No deleter, because values are pooled by ZoneMeta
+ if (gShortZoneIdTrie == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
} else {
const UnicodeString *id;
- while ((id = tzenum->snext(status)) != NULL) {
- const UChar* uID = ZoneMeta::findTimeZoneID(*id);
- const UChar* shortID = ZoneMeta::getShortID(*id);
+ while ((id = tzenum->snext(status)) != nullptr) {
+ const char16_t* uID = ZoneMeta::findTimeZoneID(*id);
+ const char16_t* shortID = ZoneMeta::getShortID(*id);
if (shortID && uID) {
- gShortZoneIdTrie->put(shortID, const_cast<UChar *>(uID), status);
+ gShortZoneIdTrie->put(shortID, const_cast<char16_t *>(uID), status);
}
}
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/tzgnames.cpp b/Build/source/libs/icu/icu-src/source/i18n/tzgnames.cpp
index e96dfd2b2f2..d55b0fd2ae0 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/tzgnames.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/tzgnames.cpp
@@ -46,10 +46,10 @@ static const char gZoneStrings[] = "zoneStrings";
static const char gRegionFormatTag[] = "regionFormat";
static const char gFallbackFormatTag[] = "fallbackFormat";
-static const UChar gEmpty[] = {0x00};
+static const char16_t gEmpty[] = {0x00};
-static const UChar gDefRegionPattern[] = {0x7B, 0x30, 0x7D, 0x00}; // "{0}"
-static const UChar gDefFallbackPattern[] = {0x7B, 0x31, 0x7D, 0x20, 0x28, 0x7B, 0x30, 0x7D, 0x29, 0x00}; // "{1} ({0})"
+static const char16_t gDefRegionPattern[] = {0x7B, 0x30, 0x7D, 0x00}; // "{0}"
+static const char16_t gDefFallbackPattern[] = {0x7B, 0x31, 0x7D, 0x20, 0x28, 0x7B, 0x30, 0x7D, 0x29, 0x00}; // "{1} ({0})"
static const double kDstCheckRange = (double)184*U_MILLIS_PER_DAY;
@@ -58,8 +58,8 @@ static const double kDstCheckRange = (double)184*U_MILLIS_PER_DAY;
U_CDECL_BEGIN
typedef struct PartialLocationKey {
- const UChar* tzID;
- const UChar* mzID;
+ const char16_t* tzID;
+ const char16_t* mzID;
UBool isLong;
} PartialLocationKey;
@@ -71,10 +71,10 @@ hashPartialLocationKey(const UHashTok key) {
// <tzID>&<mzID>#[L|S]
PartialLocationKey *p = (PartialLocationKey *)key.pointer;
UnicodeString str(p->tzID);
- str.append((UChar)0x26)
+ str.append((char16_t)0x26)
.append(p->mzID, -1)
- .append((UChar)0x23)
- .append((UChar)(p->isLong ? 0x4C : 0x53));
+ .append((char16_t)0x23)
+ .append((char16_t)(p->isLong ? 0x4C : 0x53));
return str.hashCode();
}
@@ -89,7 +89,7 @@ comparePartialLocationKey(const UHashTok key1, const UHashTok key2) {
if (p1 == p2) {
return true;
}
- if (p1 == NULL || p2 == NULL) {
+ if (p1 == nullptr || p2 == nullptr) {
return false;
}
// We just check identity of tzID/mzID
@@ -109,7 +109,7 @@ deleteGNameInfo(void *obj) {
*/
typedef struct GNameInfo {
UTimeZoneGenericNameType type;
- const UChar* tzID;
+ const char16_t* tzID;
} ZNameInfo;
/**
@@ -145,14 +145,14 @@ TimeZoneGenericNameMatchInfo::TimeZoneGenericNameMatchInfo(UVector* matches)
}
TimeZoneGenericNameMatchInfo::~TimeZoneGenericNameMatchInfo() {
- if (fMatches != NULL) {
+ if (fMatches != nullptr) {
delete fMatches;
}
}
int32_t
TimeZoneGenericNameMatchInfo::size() const {
- if (fMatches == NULL) {
+ if (fMatches == nullptr) {
return 0;
}
return fMatches->size();
@@ -161,7 +161,7 @@ TimeZoneGenericNameMatchInfo::size() const {
UTimeZoneGenericNameType
TimeZoneGenericNameMatchInfo::getGenericNameType(int32_t index) const {
GMatchInfo *minfo = (GMatchInfo *)fMatches->elementAt(index);
- if (minfo != NULL) {
+ if (minfo != nullptr) {
return static_cast<UTimeZoneGenericNameType>(minfo->gnameInfo->type);
}
return UTZGNM_UNKNOWN;
@@ -170,7 +170,7 @@ TimeZoneGenericNameMatchInfo::getGenericNameType(int32_t index) const {
int32_t
TimeZoneGenericNameMatchInfo::getMatchLength(int32_t index) const {
ZMatchInfo *minfo = (ZMatchInfo *)fMatches->elementAt(index);
- if (minfo != NULL) {
+ if (minfo != nullptr) {
return minfo->matchLength;
}
return -1;
@@ -179,7 +179,7 @@ TimeZoneGenericNameMatchInfo::getMatchLength(int32_t index) const {
UnicodeString&
TimeZoneGenericNameMatchInfo::getTimeZoneID(int32_t index, UnicodeString& tzID) const {
GMatchInfo *minfo = (GMatchInfo *)fMatches->elementAt(index);
- if (minfo != NULL && minfo->gnameInfo->tzID != NULL) {
+ if (minfo != nullptr && minfo->gnameInfo->tzID != nullptr) {
tzID.setTo(true, minfo->gnameInfo->tzID, -1);
} else {
tzID.setToBogus();
@@ -205,11 +205,11 @@ private:
};
GNameSearchHandler::GNameSearchHandler(uint32_t types)
-: fTypes(types), fResults(NULL), fMaxMatchLen(0) {
+: fTypes(types), fResults(nullptr), fMaxMatchLen(0) {
}
GNameSearchHandler::~GNameSearchHandler() {
- if (fResults != NULL) {
+ if (fResults != nullptr) {
delete fResults;
}
}
@@ -223,20 +223,20 @@ GNameSearchHandler::handleMatch(int32_t matchLength, const CharacterNode *node,
int32_t valuesCount = node->countValues();
for (int32_t i = 0; i < valuesCount; i++) {
GNameInfo *nameinfo = (ZNameInfo *)node->getValue(i);
- if (nameinfo == NULL) {
+ if (nameinfo == nullptr) {
break;
}
if ((nameinfo->type & fTypes) != 0) {
// matches a requested type
- if (fResults == NULL) {
- LocalPointer<UVector> lpResults(new UVector(uprv_free, NULL, status), status);
+ if (fResults == nullptr) {
+ LocalPointer<UVector> lpResults(new UVector(uprv_free, nullptr, status), status);
if (U_FAILURE(status)) {
return false;
}
fResults = lpResults.orphan();
}
GMatchInfo *gmatch = (GMatchInfo *)uprv_malloc(sizeof(GMatchInfo));
- if (gmatch == NULL) {
+ if (gmatch == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return false;
}
@@ -264,7 +264,7 @@ GNameSearchHandler::getMatches(int32_t& maxMatchLen) {
maxMatchLen = fMaxMatchLen;
// reset
- fResults = NULL;
+ fResults = nullptr;
fMaxMatchLen = 0;
return results;
}
@@ -306,7 +306,7 @@ private:
void loadStrings(const UnicodeString& tzCanonicalID);
- const UChar* getGenericLocationName(const UnicodeString& tzCanonicalID);
+ const char16_t* getGenericLocationName(const UnicodeString& tzCanonicalID);
UnicodeString& formatGenericNonLocationName(const TimeZone& tz, UTimeZoneGenericNameType type,
UDate date, UnicodeString& name) const;
@@ -315,7 +315,7 @@ private:
const UnicodeString& mzID, UBool isLong, const UnicodeString& mzDisplayName,
UnicodeString& name) const;
- const UChar* getPartialLocationName(const UnicodeString& tzCanonicalID,
+ const char16_t* getPartialLocationName(const UnicodeString& tzCanonicalID,
const UnicodeString& mzID, UBool isLong, const UnicodeString& mzDisplayName);
TimeZoneGenericNameMatchInfo* findLocal(const UnicodeString& text, int32_t start, uint32_t types, UErrorCode& status) const;
@@ -333,10 +333,10 @@ private:
// ---------------------------------------------------
TZGNCore::TZGNCore(const Locale& locale, UErrorCode& status)
: fLocale(locale),
- fTimeZoneNames(NULL),
- fLocationNamesMap(NULL),
- fPartialLocationNamesMap(NULL),
- fLocaleDisplayNames(NULL),
+ fTimeZoneNames(nullptr),
+ fLocationNamesMap(nullptr),
+ fPartialLocationNamesMap(nullptr),
+ fLocaleDisplayNames(nullptr),
fStringPool(status),
fGNamesTrie(true, deleteGNameInfo),
fGNamesTrieFullyLoaded(false) {
@@ -368,12 +368,12 @@ TZGNCore::initialize(const Locale& locale, UErrorCode& status) {
zoneStrings = ures_getByKeyWithFallback(zoneStrings, gZoneStrings, zoneStrings, &tmpsts);
if (U_SUCCESS(tmpsts)) {
- const UChar *regionPattern = ures_getStringByKeyWithFallback(zoneStrings, gRegionFormatTag, NULL, &tmpsts);
+ const char16_t *regionPattern = ures_getStringByKeyWithFallback(zoneStrings, gRegionFormatTag, nullptr, &tmpsts);
if (U_SUCCESS(tmpsts) && u_strlen(regionPattern) > 0) {
rpat.setTo(regionPattern, -1);
}
tmpsts = U_ZERO_ERROR;
- const UChar *fallbackPattern = ures_getStringByKeyWithFallback(zoneStrings, gFallbackFormatTag, NULL, &tmpsts);
+ const char16_t *fallbackPattern = ures_getStringByKeyWithFallback(zoneStrings, gFallbackFormatTag, nullptr, &tmpsts);
if (U_SUCCESS(tmpsts) && u_strlen(fallbackPattern) > 0) {
fpat.setTo(fallbackPattern, -1);
}
@@ -391,13 +391,13 @@ TZGNCore::initialize(const Locale& locale, UErrorCode& status) {
fLocaleDisplayNames = LocaleDisplayNames::createInstance(locale);
// hash table for names - no key/value deleters
- fLocationNamesMap = uhash_open(uhash_hashUChars, uhash_compareUChars, NULL, &status);
+ fLocationNamesMap = uhash_open(uhash_hashUChars, uhash_compareUChars, nullptr, &status);
if (U_FAILURE(status)) {
cleanup();
return;
}
- fPartialLocationNamesMap = uhash_open(hashPartialLocationKey, comparePartialLocationKey, NULL, &status);
+ fPartialLocationNamesMap = uhash_open(hashPartialLocationKey, comparePartialLocationKey, nullptr, &status);
if (U_FAILURE(status)) {
cleanup();
return;
@@ -430,8 +430,8 @@ TZGNCore::initialize(const Locale& locale, UErrorCode& status) {
// preload generic names for the default zone
TimeZone *tz = TimeZone::createDefault();
- const UChar *tzID = ZoneMeta::getCanonicalCLDRID(*tz);
- if (tzID != NULL) {
+ const char16_t *tzID = ZoneMeta::getCanonicalCLDRID(*tz);
+ if (tzID != nullptr) {
loadStrings(UnicodeString(true, tzID, -1));
}
delete tz;
@@ -439,10 +439,10 @@ TZGNCore::initialize(const Locale& locale, UErrorCode& status) {
void
TZGNCore::cleanup() {
- if (fLocaleDisplayNames != NULL) {
+ if (fLocaleDisplayNames != nullptr) {
delete fLocaleDisplayNames;
}
- if (fTimeZoneNames != NULL) {
+ if (fTimeZoneNames != nullptr) {
delete fTimeZoneNames;
}
@@ -457,8 +457,8 @@ TZGNCore::getDisplayName(const TimeZone& tz, UTimeZoneGenericNameType type, UDat
switch (type) {
case UTZGNM_LOCATION:
{
- const UChar* tzCanonicalID = ZoneMeta::getCanonicalCLDRID(tz);
- if (tzCanonicalID != NULL) {
+ const char16_t* tzCanonicalID = ZoneMeta::getCanonicalCLDRID(tz);
+ if (tzCanonicalID != nullptr) {
getGenericLocationName(UnicodeString(true, tzCanonicalID, -1), name);
}
}
@@ -467,8 +467,8 @@ TZGNCore::getDisplayName(const TimeZone& tz, UTimeZoneGenericNameType type, UDat
case UTZGNM_SHORT:
formatGenericNonLocationName(tz, type, date, name);
if (name.isEmpty()) {
- const UChar* tzCanonicalID = ZoneMeta::getCanonicalCLDRID(tz);
- if (tzCanonicalID != NULL) {
+ const char16_t* tzCanonicalID = ZoneMeta::getCanonicalCLDRID(tz);
+ if (tzCanonicalID != nullptr) {
getGenericLocationName(UnicodeString(true, tzCanonicalID, -1), name);
}
}
@@ -486,7 +486,7 @@ TZGNCore::getGenericLocationName(const UnicodeString& tzCanonicalID, UnicodeStri
return name;
}
- const UChar *locname = NULL;
+ const char16_t *locname = nullptr;
TZGNCore *nonConstThis = const_cast<TZGNCore *>(this);
umtx_lock(&gLock);
{
@@ -494,7 +494,7 @@ TZGNCore::getGenericLocationName(const UnicodeString& tzCanonicalID, UnicodeStri
}
umtx_unlock(&gLock);
- if (locname == NULL) {
+ if (locname == nullptr) {
name.setToBogus();
} else {
name.setTo(locname, u_strlen(locname));
@@ -506,25 +506,25 @@ TZGNCore::getGenericLocationName(const UnicodeString& tzCanonicalID, UnicodeStri
/*
* This method updates the cache and must be called with a lock
*/
-const UChar*
+const char16_t*
TZGNCore::getGenericLocationName(const UnicodeString& tzCanonicalID) {
U_ASSERT(!tzCanonicalID.isEmpty());
if (tzCanonicalID.length() > ZID_KEY_MAX) {
- return NULL;
+ return nullptr;
}
UErrorCode status = U_ZERO_ERROR;
- UChar tzIDKey[ZID_KEY_MAX + 1];
+ char16_t tzIDKey[ZID_KEY_MAX + 1];
int32_t tzIDKeyLen = tzCanonicalID.extract(tzIDKey, ZID_KEY_MAX + 1, status);
U_ASSERT(status == U_ZERO_ERROR); // already checked length above
tzIDKey[tzIDKeyLen] = 0;
- const UChar *locname = (const UChar *)uhash_get(fLocationNamesMap, tzIDKey);
+ const char16_t *locname = (const char16_t *)uhash_get(fLocationNamesMap, tzIDKey);
- if (locname != NULL) {
+ if (locname != nullptr) {
// gEmpty indicate the name is not available
if (locname == gEmpty) {
- return NULL;
+ return nullptr;
}
return locname;
}
@@ -559,26 +559,26 @@ TZGNCore::getGenericLocationName(const UnicodeString& tzCanonicalID) {
fRegionFormat.format(city, name, status);
}
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
}
- locname = name.isEmpty() ? NULL : fStringPool.get(name, status);
+ locname = name.isEmpty() ? nullptr : fStringPool.get(name, status);
if (U_SUCCESS(status)) {
// Cache the result
- const UChar* cacheID = ZoneMeta::findTimeZoneID(tzCanonicalID);
- U_ASSERT(cacheID != NULL);
- if (locname == NULL) {
+ const char16_t* cacheID = ZoneMeta::findTimeZoneID(tzCanonicalID);
+ U_ASSERT(cacheID != nullptr);
+ if (locname == nullptr) {
// gEmpty to indicate - no location name available
uhash_put(fLocationNamesMap, (void *)cacheID, (void *)gEmpty, &status);
} else {
uhash_put(fLocationNamesMap, (void *)cacheID, (void *)locname, &status);
if (U_FAILURE(status)) {
- locname = NULL;
+ locname = nullptr;
} else {
// put the name info into the trie
GNameInfo *nameinfo = (ZNameInfo *)uprv_malloc(sizeof(GNameInfo));
- if (nameinfo != NULL) {
+ if (nameinfo != nullptr) {
nameinfo->type = UTZGNM_LOCATION;
nameinfo->tzID = cacheID;
fGNamesTrie.put(locname, nameinfo, status);
@@ -595,8 +595,8 @@ TZGNCore::formatGenericNonLocationName(const TimeZone& tz, UTimeZoneGenericNameT
U_ASSERT(type == UTZGNM_LONG || type == UTZGNM_SHORT);
name.setToBogus();
- const UChar* uID = ZoneMeta::getCanonicalCLDRID(tz);
- if (uID == NULL) {
+ const char16_t* uID = ZoneMeta::getCanonicalCLDRID(tz);
+ if (uID == nullptr) {
return name;
}
@@ -611,14 +611,14 @@ TZGNCore::formatGenericNonLocationName(const TimeZone& tz, UTimeZoneGenericNameT
}
// Try meta zone
- UChar mzIDBuf[32];
+ char16_t mzIDBuf[32];
UnicodeString mzID(mzIDBuf, 0, UPRV_LENGTHOF(mzIDBuf));
fTimeZoneNames->getMetaZoneID(tzID, date, mzID);
if (!mzID.isEmpty()) {
UErrorCode status = U_ZERO_ERROR;
UBool useStandard = false;
int32_t raw, sav;
- UChar tmpNameBuf[ZONE_NAME_U16_MAX];
+ char16_t tmpNameBuf[ZONE_NAME_U16_MAX];
tz.getOffset(date, false, raw, sav, status);
if (U_FAILURE(status)) {
@@ -630,15 +630,15 @@ TZGNCore::formatGenericNonLocationName(const TimeZone& tz, UTimeZoneGenericNameT
TimeZone *tmptz = tz.clone();
// Check if the zone actually uses daylight saving time around the time
- BasicTimeZone *btz = NULL;
- if (dynamic_cast<OlsonTimeZone *>(tmptz) != NULL
- || dynamic_cast<SimpleTimeZone *>(tmptz) != NULL
- || dynamic_cast<RuleBasedTimeZone *>(tmptz) != NULL
- || dynamic_cast<VTimeZone *>(tmptz) != NULL) {
+ BasicTimeZone *btz = nullptr;
+ if (dynamic_cast<OlsonTimeZone *>(tmptz) != nullptr
+ || dynamic_cast<SimpleTimeZone *>(tmptz) != nullptr
+ || dynamic_cast<RuleBasedTimeZone *>(tmptz) != nullptr
+ || dynamic_cast<VTimeZone *>(tmptz) != nullptr) {
btz = (BasicTimeZone*)tmptz;
}
- if (btz != NULL) {
+ if (btz != nullptr) {
TimeZoneTransition before;
UBool beforTrs = btz->getPreviousTransition(date, true, before);
if (beforTrs
@@ -686,7 +686,7 @@ TZGNCore::formatGenericNonLocationName(const TimeZone& tz, UTimeZoneGenericNameT
// for some meta zones in some locales. This looks like a data bugs.
// For now, we check if the standard name is different from its generic
// name below.
- UChar genNameBuf[ZONE_NAME_U16_MAX];
+ char16_t genNameBuf[ZONE_NAME_U16_MAX];
UnicodeString mzGenericName(genNameBuf, 0, UPRV_LENGTHOF(genNameBuf));
fTimeZoneNames->getMetaZoneDisplayName(mzID, nameType, mzGenericName);
if (stdName.caseCompare(mzGenericName, 0) == 0) {
@@ -702,7 +702,7 @@ TZGNCore::formatGenericNonLocationName(const TimeZone& tz, UTimeZoneGenericNameT
// Check if we need to use a partial location format.
// This check is done by comparing offset with the meta zone's
// golden zone at the given date.
- UChar idBuf[32];
+ char16_t idBuf[32];
UnicodeString goldenID(idBuf, 0, UPRV_LENGTHOF(idBuf));
fTimeZoneNames->getReferenceZoneID(mzID, fTargetRegion, goldenID);
if (!goldenID.isEmpty() && goldenID != tzID) {
@@ -741,7 +741,7 @@ TZGNCore::getPartialLocationName(const UnicodeString& tzCanonicalID,
return name;
}
- const UChar *uplname = NULL;
+ const char16_t *uplname = nullptr;
TZGNCore *nonConstThis = const_cast<TZGNCore *>(this);
umtx_lock(&gLock);
{
@@ -749,7 +749,7 @@ TZGNCore::getPartialLocationName(const UnicodeString& tzCanonicalID,
}
umtx_unlock(&gLock);
- if (uplname == NULL) {
+ if (uplname == nullptr) {
name.setToBogus();
} else {
name.setTo(true, uplname, -1);
@@ -760,7 +760,7 @@ TZGNCore::getPartialLocationName(const UnicodeString& tzCanonicalID,
/*
* This method updates the cache and must be called with a lock
*/
-const UChar*
+const char16_t*
TZGNCore::getPartialLocationName(const UnicodeString& tzCanonicalID,
const UnicodeString& mzID, UBool isLong, const UnicodeString& mzDisplayName) {
U_ASSERT(!tzCanonicalID.isEmpty());
@@ -771,10 +771,10 @@ TZGNCore::getPartialLocationName(const UnicodeString& tzCanonicalID,
key.tzID = ZoneMeta::findTimeZoneID(tzCanonicalID);
key.mzID = ZoneMeta::findMetaZoneID(mzID);
key.isLong = isLong;
- U_ASSERT(key.tzID != NULL && key.mzID != NULL);
+ U_ASSERT(key.tzID != nullptr && key.mzID != nullptr);
- const UChar* uplname = (const UChar*)uhash_get(fPartialLocationNamesMap, (void *)&key);
- if (uplname != NULL) {
+ const char16_t* uplname = (const char16_t*)uhash_get(fPartialLocationNamesMap, (void *)&key);
+ if (uplname != nullptr) {
return uplname;
}
@@ -810,14 +810,14 @@ TZGNCore::getPartialLocationName(const UnicodeString& tzCanonicalID,
UnicodeString name;
fFallbackFormat.format(location, mzDisplayName, name, status);
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
uplname = fStringPool.get(name, status);
if (U_SUCCESS(status)) {
// Add the name to cache
PartialLocationKey* cacheKey = (PartialLocationKey *)uprv_malloc(sizeof(PartialLocationKey));
- if (cacheKey != NULL) {
+ if (cacheKey != nullptr) {
cacheKey->tzID = key.tzID;
cacheKey->mzID = key.mzID;
cacheKey->isLong = key.isLong;
@@ -827,7 +827,7 @@ TZGNCore::getPartialLocationName(const UnicodeString& tzCanonicalID,
} else {
// put the name to the local trie as well
GNameInfo *nameinfo = (ZNameInfo *)uprv_malloc(sizeof(GNameInfo));
- if (nameinfo != NULL) {
+ if (nameinfo != nullptr) {
nameinfo->type = isLong ? UTZGNM_LONG : UTZGNM_SHORT;
nameinfo->tzID = key.tzID;
fGNamesTrie.put(uplname, nameinfo, status);
@@ -859,7 +859,7 @@ TZGNCore::loadStrings(const UnicodeString& tzCanonicalID) {
};
StringEnumeration *mzIDs = fTimeZoneNames->getAvailableMetaZoneIDs(tzCanonicalID, status);
- while ((mzID = mzIDs->snext(status)) != NULL) {
+ while ((mzID = mzIDs->snext(status)) != nullptr) {
if (U_FAILURE(status)) {
break;
}
@@ -878,7 +878,7 @@ TZGNCore::loadStrings(const UnicodeString& tzCanonicalID) {
}
}
}
- if (mzIDs != NULL) {
+ if (mzIDs != nullptr) {
delete mzIDs;
}
}
@@ -905,7 +905,7 @@ TZGNCore::findBestMatch(const UnicodeString& text, int32_t start, uint32_t types
// UBool isLongStandard = false; // workaround - see the comments below
UBool isStandard = false; // TODO: Temporary hack (on hack) for short standard name/location name conflict (found in zh_Hant), should be removed after CLDR 21m1 integration
- if (tznamesMatches != NULL) {
+ if (tznamesMatches != nullptr) {
UnicodeString mzID;
for (int32_t i = 0; i < tznamesMatches->size(); i++) {
int32_t len = tznamesMatches->getMatchLengthAt(i);
@@ -979,7 +979,7 @@ TZGNCore::findBestMatch(const UnicodeString& text, int32_t start, uint32_t types
if (U_FAILURE(status)) {
return 0;
}
- if (localMatches != NULL) {
+ if (localMatches != nullptr) {
for (int32_t i = 0; i < localMatches->size(); i++) {
int32_t len = localMatches->getMatchLength(i);
@@ -1017,25 +1017,25 @@ TZGNCore::findLocal(const UnicodeString& text, int32_t start, uint32_t types, UE
umtx_unlock(&gLock);
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
- TimeZoneGenericNameMatchInfo *gmatchInfo = NULL;
+ TimeZoneGenericNameMatchInfo *gmatchInfo = nullptr;
int32_t maxLen = 0;
UVector *results = handler.getMatches(maxLen);
- if (results != NULL && ((maxLen == (text.length() - start)) || fGNamesTrieFullyLoaded)) {
+ if (results != nullptr && ((maxLen == (text.length() - start)) || fGNamesTrieFullyLoaded)) {
// perfect match
gmatchInfo = new TimeZoneGenericNameMatchInfo(results);
- if (gmatchInfo == NULL) {
+ if (gmatchInfo == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
delete results;
- return NULL;
+ return nullptr;
}
return gmatchInfo;
}
- if (results != NULL) {
+ if (results != nullptr) {
delete results;
}
@@ -1044,17 +1044,17 @@ TZGNCore::findLocal(const UnicodeString& text, int32_t start, uint32_t types, UE
umtx_lock(&gLock);
{
if (!fGNamesTrieFullyLoaded) {
- StringEnumeration *tzIDs = TimeZone::createTimeZoneIDEnumeration(UCAL_ZONE_TYPE_CANONICAL, NULL, NULL, status);
+ StringEnumeration *tzIDs = TimeZone::createTimeZoneIDEnumeration(UCAL_ZONE_TYPE_CANONICAL, nullptr, nullptr, status);
if (U_SUCCESS(status)) {
const UnicodeString *tzID;
- while ((tzID = tzIDs->snext(status)) != NULL) {
+ while ((tzID = tzIDs->snext(status)) != nullptr) {
if (U_FAILURE(status)) {
break;
}
nonConstThis->loadStrings(*tzID);
}
}
- if (tzIDs != NULL) {
+ if (tzIDs != nullptr) {
delete tzIDs;
}
@@ -1066,7 +1066,7 @@ TZGNCore::findLocal(const UnicodeString& text, int32_t start, uint32_t types, UE
umtx_unlock(&gLock);
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
umtx_lock(&gLock);
@@ -1077,12 +1077,12 @@ TZGNCore::findLocal(const UnicodeString& text, int32_t start, uint32_t types, UE
umtx_unlock(&gLock);
results = handler.getMatches(maxLen);
- if (results != NULL && maxLen > 0) {
+ if (results != nullptr && maxLen > 0) {
gmatchInfo = new TimeZoneGenericNameMatchInfo(results);
- if (gmatchInfo == NULL) {
+ if (gmatchInfo == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
delete results;
- return NULL;
+ return nullptr;
}
}
@@ -1105,7 +1105,7 @@ TZGNCore::findTimeZoneNames(const UnicodeString& text, int32_t start, uint32_t t
return fTimeZoneNames->find(text, start, nameTypes, status);
}
- return NULL;
+ return nullptr;
}
typedef struct TZGNCoreRef {
@@ -1116,7 +1116,7 @@ typedef struct TZGNCoreRef {
// TZGNCore object cache handling
static UMutex gTZGNLock;
-static UHashtable *gTZGNCoreCache = NULL;
+static UHashtable *gTZGNCoreCache = nullptr;
static UBool gTZGNCoreCacheInitialized = false;
// Access count - incremented every time up to SWEEP_INTERVAL,
@@ -1136,11 +1136,11 @@ U_CDECL_BEGIN
/**
* Cleanup callback func
*/
-static UBool U_CALLCONV tzgnCore_cleanup(void)
+static UBool U_CALLCONV tzgnCore_cleanup()
{
- if (gTZGNCoreCache != NULL) {
+ if (gTZGNCoreCache != nullptr) {
uhash_close(gTZGNCoreCache);
- gTZGNCoreCache = NULL;
+ gTZGNCoreCache = nullptr;
}
gTZGNCoreCacheInitialized = false;
return true;
@@ -1167,7 +1167,7 @@ static void sweepCache() {
const UHashElement* elem;
double now = (double)uprv_getUTCtime();
- while ((elem = uhash_nextElement(gTZGNCoreCache, &pos)) != NULL) {
+ while ((elem = uhash_nextElement(gTZGNCoreCache, &pos)) != nullptr) {
TZGNCoreRef *entry = (TZGNCoreRef *)elem->value.pointer;
if (entry->refCount <= 0 && (now - entry->lastAccess) > CACHE_EXPIRATION) {
// delete this entry
@@ -1193,21 +1193,21 @@ TimeZoneGenericNames::~TimeZoneGenericNames() {
TimeZoneGenericNames*
TimeZoneGenericNames::createInstance(const Locale& locale, UErrorCode& status) {
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
TimeZoneGenericNames* instance = new TimeZoneGenericNames();
- if (instance == NULL) {
+ if (instance == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
- TZGNCoreRef *cacheEntry = NULL;
+ TZGNCoreRef *cacheEntry = nullptr;
{
Mutex lock(&gTZGNLock);
if (!gTZGNCoreCacheInitialized) {
// Create empty hashtable
- gTZGNCoreCache = uhash_open(uhash_hashChars, uhash_compareChars, NULL, &status);
+ gTZGNCoreCache = uhash_open(uhash_hashChars, uhash_compareChars, nullptr, &status);
if (U_SUCCESS(status)) {
uhash_setKeyDeleter(gTZGNCoreCache, uprv_free);
uhash_setValueDeleter(gTZGNCoreCache, deleteTZGNCoreRef);
@@ -1216,23 +1216,23 @@ TimeZoneGenericNames::createInstance(const Locale& locale, UErrorCode& status) {
}
}
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
// Check the cache, if not available, create new one and cache
const char *key = locale.getName();
cacheEntry = (TZGNCoreRef *)uhash_get(gTZGNCoreCache, key);
- if (cacheEntry == NULL) {
- TZGNCore *tzgnCore = NULL;
- char *newKey = NULL;
+ if (cacheEntry == nullptr) {
+ TZGNCore *tzgnCore = nullptr;
+ char *newKey = nullptr;
tzgnCore = new TZGNCore(locale, status);
- if (tzgnCore == NULL) {
+ if (tzgnCore == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
}
if (U_SUCCESS(status)) {
newKey = (char *)uprv_malloc(uprv_strlen(key) + 1);
- if (newKey == NULL) {
+ if (newKey == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
} else {
uprv_strcpy(newKey, key);
@@ -1240,7 +1240,7 @@ TimeZoneGenericNames::createInstance(const Locale& locale, UErrorCode& status) {
}
if (U_SUCCESS(status)) {
cacheEntry = (TZGNCoreRef *)uprv_malloc(sizeof(TZGNCoreRef));
- if (cacheEntry == NULL) {
+ if (cacheEntry == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
} else {
cacheEntry->obj = tzgnCore;
@@ -1251,16 +1251,16 @@ TimeZoneGenericNames::createInstance(const Locale& locale, UErrorCode& status) {
}
}
if (U_FAILURE(status)) {
- if (tzgnCore != NULL) {
+ if (tzgnCore != nullptr) {
delete tzgnCore;
}
- if (newKey != NULL) {
+ if (newKey != nullptr) {
uprv_free(newKey);
}
- if (cacheEntry != NULL) {
+ if (cacheEntry != nullptr) {
uprv_free(cacheEntry);
}
- cacheEntry = NULL;
+ cacheEntry = nullptr;
}
} else {
// Update the reference count
@@ -1275,9 +1275,9 @@ TimeZoneGenericNames::createInstance(const Locale& locale, UErrorCode& status) {
}
} // End of mutex locked block
- if (cacheEntry == NULL) {
+ if (cacheEntry == nullptr) {
delete instance;
- return NULL;
+ return nullptr;
}
instance->fRef = cacheEntry;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/tznames.cpp b/Build/source/libs/icu/icu-src/source/i18n/tznames.cpp
index ef4266718e0..900499fd400 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/tznames.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/tznames.cpp
@@ -30,7 +30,7 @@ U_NAMESPACE_BEGIN
// TimeZoneNames object cache handling
static UMutex gTimeZoneNamesLock;
-static UHashtable *gTimeZoneNamesCache = NULL;
+static UHashtable *gTimeZoneNamesCache = nullptr;
static UBool gTimeZoneNamesCacheInitialized = false;
// Access count - incremented every time up to SWEEP_INTERVAL,
@@ -56,11 +56,11 @@ U_CDECL_BEGIN
/**
* Cleanup callback func
*/
-static UBool U_CALLCONV timeZoneNames_cleanup(void)
+static UBool U_CALLCONV timeZoneNames_cleanup()
{
- if (gTimeZoneNamesCache != NULL) {
+ if (gTimeZoneNamesCache != nullptr) {
uhash_close(gTimeZoneNamesCache);
- gTimeZoneNamesCache = NULL;
+ gTimeZoneNamesCache = nullptr;
}
gTimeZoneNamesCacheInitialized = false;
return true;
@@ -135,7 +135,7 @@ TimeZoneNamesDelegate::TimeZoneNamesDelegate(const Locale& locale, UErrorCode& s
Mutex lock(&gTimeZoneNamesLock);
if (!gTimeZoneNamesCacheInitialized) {
// Create empty hashtable if it is not already initialized.
- gTimeZoneNamesCache = uhash_open(uhash_hashChars, uhash_compareChars, NULL, &status);
+ gTimeZoneNamesCache = uhash_open(uhash_hashChars, uhash_compareChars, nullptr, &status);
if (U_SUCCESS(status)) {
uhash_setKeyDeleter(gTimeZoneNamesCache, uprv_free);
uhash_setValueDeleter(gTimeZoneNamesCache, deleteTimeZoneNamesCacheEntry);
@@ -149,21 +149,21 @@ TimeZoneNamesDelegate::TimeZoneNamesDelegate(const Locale& locale, UErrorCode& s
}
// Check the cache, if not available, create new one and cache
- TimeZoneNamesCacheEntry *cacheEntry = NULL;
+ TimeZoneNamesCacheEntry *cacheEntry = nullptr;
const char *key = locale.getName();
cacheEntry = (TimeZoneNamesCacheEntry *)uhash_get(gTimeZoneNamesCache, key);
- if (cacheEntry == NULL) {
- TimeZoneNames *tznames = NULL;
- char *newKey = NULL;
+ if (cacheEntry == nullptr) {
+ TimeZoneNames *tznames = nullptr;
+ char *newKey = nullptr;
tznames = new TimeZoneNamesImpl(locale, status);
- if (tznames == NULL) {
+ if (tznames == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
}
if (U_SUCCESS(status)) {
newKey = (char *)uprv_malloc(uprv_strlen(key) + 1);
- if (newKey == NULL) {
+ if (newKey == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
} else {
uprv_strcpy(newKey, key);
@@ -171,7 +171,7 @@ TimeZoneNamesDelegate::TimeZoneNamesDelegate(const Locale& locale, UErrorCode& s
}
if (U_SUCCESS(status)) {
cacheEntry = (TimeZoneNamesCacheEntry *)uprv_malloc(sizeof(TimeZoneNamesCacheEntry));
- if (cacheEntry == NULL) {
+ if (cacheEntry == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
} else {
cacheEntry->names = tznames;
@@ -182,16 +182,16 @@ TimeZoneNamesDelegate::TimeZoneNamesDelegate(const Locale& locale, UErrorCode& s
}
}
if (U_FAILURE(status)) {
- if (tznames != NULL) {
+ if (tznames != nullptr) {
delete tznames;
}
- if (newKey != NULL) {
+ if (newKey != nullptr) {
uprv_free(newKey);
}
- if (cacheEntry != NULL) {
+ if (cacheEntry != nullptr) {
uprv_free(cacheEntry);
}
- cacheEntry = NULL;
+ cacheEntry = nullptr;
}
} else {
// Update the reference count
@@ -236,7 +236,7 @@ TimeZoneNamesDelegate::operator==(const TimeZoneNames& other) const {
TimeZoneNamesDelegate*
TimeZoneNamesDelegate::clone() const {
TimeZoneNamesDelegate* other = new TimeZoneNamesDelegate();
- if (other != NULL) {
+ if (other != nullptr) {
umtx_lock(&gTimeZoneNamesLock);
{
// Just increment the reference count
@@ -306,10 +306,10 @@ TimeZoneNames::~TimeZoneNames() {
TimeZoneNames*
TimeZoneNames::createInstance(const Locale& locale, UErrorCode& status) {
- TimeZoneNames *instance = NULL;
+ TimeZoneNames *instance = nullptr;
if (U_SUCCESS(status)) {
instance = new TimeZoneNamesDelegate(locale, status);
- if (instance == NULL && U_SUCCESS(status)) {
+ if (instance == nullptr && U_SUCCESS(status)) {
status = U_MEMORY_ALLOCATION_ERROR;
}
}
@@ -318,10 +318,10 @@ TimeZoneNames::createInstance(const Locale& locale, UErrorCode& status) {
TimeZoneNames*
TimeZoneNames::createTZDBInstance(const Locale& locale, UErrorCode& status) {
- TimeZoneNames *instance = NULL;
+ TimeZoneNames *instance = nullptr;
if (U_SUCCESS(status)) {
instance = new TZDBTimeZoneNames(locale);
- if (instance == NULL && U_SUCCESS(status)) {
+ if (instance == nullptr && U_SUCCESS(status)) {
status = U_MEMORY_ALLOCATION_ERROR;
}
}
@@ -337,7 +337,7 @@ UnicodeString&
TimeZoneNames::getDisplayName(const UnicodeString& tzID, UTimeZoneNameType type, UDate date, UnicodeString& name) const {
getTimeZoneDisplayName(tzID, type, name);
if (name.isEmpty()) {
- UChar mzIDBuf[32];
+ char16_t mzIDBuf[32];
UnicodeString mzID(mzIDBuf, 0, UPRV_LENGTHOF(mzIDBuf));
getMetaZoneID(tzID, date, mzID);
getMetaZoneDisplayName(mzID, type, name);
@@ -378,7 +378,7 @@ struct MatchInfo : UMemory {
MatchInfo(UTimeZoneNameType nameType, int32_t matchLength, const UnicodeString* tzID, const UnicodeString* mzID) {
this->nameType = nameType;
this->matchLength = matchLength;
- if (tzID != NULL) {
+ if (tzID != nullptr) {
this->id.setTo(*tzID);
this->isTZID = true;
} else {
@@ -399,11 +399,11 @@ U_CDECL_END
// MatchInfoCollection class
// ---------------------------------------------------
TimeZoneNames::MatchInfoCollection::MatchInfoCollection()
-: fMatches(NULL) {
+: fMatches(nullptr) {
}
TimeZoneNames::MatchInfoCollection::~MatchInfoCollection() {
- if (fMatches != NULL) {
+ if (fMatches != nullptr) {
delete fMatches;
}
}
@@ -414,7 +414,7 @@ TimeZoneNames::MatchInfoCollection::addZone(UTimeZoneNameType nameType, int32_t
if (U_FAILURE(status)) {
return;
}
- LocalPointer <MatchInfo> matchInfo(new MatchInfo(nameType, matchLength, &tzID, NULL), status);
+ LocalPointer <MatchInfo> matchInfo(new MatchInfo(nameType, matchLength, &tzID, nullptr), status);
UVector *matchesVec = matches(status);
if (U_FAILURE(status)) {
return;
@@ -428,7 +428,7 @@ TimeZoneNames::MatchInfoCollection::addMetaZone(UTimeZoneNameType nameType, int3
if (U_FAILURE(status)) {
return;
}
- LocalPointer<MatchInfo> matchInfo(new MatchInfo(nameType, matchLength, NULL, &mzID), status);
+ LocalPointer<MatchInfo> matchInfo(new MatchInfo(nameType, matchLength, nullptr, &mzID), status);
UVector *matchesVec = matches(status);
if (U_FAILURE(status)) {
return;
@@ -438,7 +438,7 @@ TimeZoneNames::MatchInfoCollection::addMetaZone(UTimeZoneNameType nameType, int3
int32_t
TimeZoneNames::MatchInfoCollection::size() const {
- if (fMatches == NULL) {
+ if (fMatches == nullptr) {
return 0;
}
return fMatches->size();
@@ -487,17 +487,17 @@ TimeZoneNames::MatchInfoCollection::getMetaZoneIDAt(int32_t idx, UnicodeString&
UVector*
TimeZoneNames::MatchInfoCollection::matches(UErrorCode& status) {
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
- if (fMatches != NULL) {
+ if (fMatches != nullptr) {
return fMatches;
}
- fMatches = new UVector(deleteMatchInfo, NULL, status);
- if (fMatches == NULL) {
+ fMatches = new UVector(deleteMatchInfo, nullptr, status);
+ if (fMatches == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
} else if (U_FAILURE(status)) {
delete fMatches;
- fMatches = NULL;
+ fMatches = nullptr;
}
return fMatches;
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/tznames_impl.cpp b/Build/source/libs/icu/icu-src/source/i18n/tznames_impl.cpp
index 2005c07ba81..8e52fd90a68 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/tznames_impl.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/tznames_impl.cpp
@@ -46,7 +46,7 @@ static const char gMZPrefix[] = "meta:";
static const char EMPTY[] = "<empty>"; // place holder for empty ZNames
static const char DUMMY_LOADER[] = "<dummy>"; // place holder for dummy ZNamesLoader
-static const UChar NO_NAME[] = { 0 }; // for empty no-fallback time zone names
+static const char16_t NO_NAME[] = { 0 }; // for empty no-fallback time zone names
// stuff for TZDBTimeZoneNames
static const char* TZDBNAMES_KEYS[] = {"ss", "sd"};
@@ -54,10 +54,10 @@ static const int32_t TZDBNAMES_KEYS_SIZE = UPRV_LENGTHOF(TZDBNAMES_KEYS);
static UMutex gDataMutex;
-static UHashtable* gTZDBNamesMap = NULL;
+static UHashtable* gTZDBNamesMap = nullptr;
static icu::UInitOnce gTZDBNamesMapInitOnce {};
-static TextTrieMap* gTZDBNamesTrie = NULL;
+static TextTrieMap* gTZDBNamesTrie = nullptr;
static icu::UInitOnce gTZDBNamesTrieInitOnce {};
// The order in which strings are stored may be different than the order in the public enum.
@@ -72,19 +72,19 @@ enum UTimeZoneNameTypeIndex {
UTZNM_INDEX_SHORT_DAYLIGHT,
UTZNM_INDEX_COUNT
};
-static const UChar* const EMPTY_NAMES[UTZNM_INDEX_COUNT] = {0,0,0,0,0,0,0};
+static const char16_t* const EMPTY_NAMES[UTZNM_INDEX_COUNT] = {0,0,0,0,0,0,0};
U_CDECL_BEGIN
-static UBool U_CALLCONV tzdbTimeZoneNames_cleanup(void) {
- if (gTZDBNamesMap != NULL) {
+static UBool U_CALLCONV tzdbTimeZoneNames_cleanup() {
+ if (gTZDBNamesMap != nullptr) {
uhash_close(gTZDBNamesMap);
- gTZDBNamesMap = NULL;
+ gTZDBNamesMap = nullptr;
}
gTZDBNamesMapInitOnce.reset();
- if (gTZDBNamesTrie != NULL) {
+ if (gTZDBNamesTrie != nullptr) {
delete gTZDBNamesTrie;
- gTZDBNamesTrie = NULL;
+ gTZDBNamesTrie = nullptr;
}
gTZDBNamesTrieInitOnce.reset();
@@ -97,8 +97,8 @@ U_CDECL_END
*/
struct ZNameInfo {
UTimeZoneNameType type;
- const UChar* tzID;
- const UChar* mzID;
+ const char16_t* tzID;
+ const char16_t* mzID;
};
/**
@@ -122,7 +122,7 @@ void CharacterNode::clear() {
}
void CharacterNode::deleteValues(UObjectDeleter *valueDeleter) {
- if (fValues == NULL) {
+ if (fValues == nullptr) {
// Do nothing.
} else if (!fHasValuesVector) {
if (valueDeleter) {
@@ -141,7 +141,7 @@ CharacterNode::addValue(void *value, UObjectDeleter *valueDeleter, UErrorCode &s
}
return;
}
- if (fValues == NULL) {
+ if (fValues == nullptr) {
fValues = value;
} else {
// At least one value already.
@@ -149,7 +149,7 @@ CharacterNode::addValue(void *value, UObjectDeleter *valueDeleter, UErrorCode &s
// There is only one value so far, and not in a vector yet.
// Create a vector and add the old value.
LocalPointer<UVector> values(
- new UVector(valueDeleter, NULL, DEFAULT_CHARACTERNODE_CAPACITY, status), status);
+ new UVector(valueDeleter, nullptr, DEFAULT_CHARACTERNODE_CAPACITY, status), status);
if (U_FAILURE(status)) {
if (valueDeleter) {
valueDeleter(value);
@@ -184,8 +184,8 @@ TextTrieMapSearchResultHandler::~TextTrieMapSearchResultHandler(){
// TextTrieMap class implementation
// ---------------------------------------------------
TextTrieMap::TextTrieMap(UBool ignoreCase, UObjectDeleter *valueDeleter)
-: fIgnoreCase(ignoreCase), fNodes(NULL), fNodesCapacity(0), fNodesCount(0),
- fLazyContents(NULL), fIsEmpty(true), fValueDeleter(valueDeleter) {
+: fIgnoreCase(ignoreCase), fNodes(nullptr), fNodesCapacity(0), fNodesCount(0),
+ fLazyContents(nullptr), fIsEmpty(true), fValueDeleter(valueDeleter) {
}
TextTrieMap::~TextTrieMap() {
@@ -194,7 +194,7 @@ TextTrieMap::~TextTrieMap() {
fNodes[index].deleteValues(fValueDeleter);
}
uprv_free(fNodes);
- if (fLazyContents != NULL) {
+ if (fLazyContents != nullptr) {
for (int32_t i=0; i<fLazyContents->size(); i+=2) {
if (fValueDeleter) {
fValueDeleter(fLazyContents->elementAt(i+1));
@@ -219,16 +219,16 @@ int32_t TextTrieMap::isEmpty() const {
//
void
TextTrieMap::put(const UnicodeString &key, void *value, ZNStringPool &sp, UErrorCode &status) {
- const UChar *s = sp.get(key, status);
+ const char16_t *s = sp.get(key, status);
put(s, value, status);
}
// This method is designed for a persistent key, such as string key stored in
// resource bundle.
void
-TextTrieMap::put(const UChar *key, void *value, UErrorCode &status) {
+TextTrieMap::put(const char16_t *key, void *value, UErrorCode &status) {
fIsEmpty = false;
- if (fLazyContents == NULL) {
+ if (fLazyContents == nullptr) {
LocalPointer<UVector> lpLazyContents(new UVector(status), status);
fLazyContents = lpLazyContents.orphan();
}
@@ -238,9 +238,9 @@ TextTrieMap::put(const UChar *key, void *value, UErrorCode &status) {
}
return;
}
- U_ASSERT(fLazyContents != NULL);
+ U_ASSERT(fLazyContents != nullptr);
- UChar *s = const_cast<UChar *>(key);
+ char16_t *s = const_cast<char16_t *>(key);
fLazyContents->addElement(s, status);
if (U_FAILURE(status)) {
if (fValueDeleter) {
@@ -254,10 +254,10 @@ TextTrieMap::put(const UChar *key, void *value, UErrorCode &status) {
void
TextTrieMap::putImpl(const UnicodeString &key, void *value, UErrorCode &status) {
- if (fNodes == NULL) {
+ if (fNodes == nullptr) {
fNodesCapacity = 512;
fNodes = (CharacterNode *)uprv_malloc(fNodesCapacity * sizeof(CharacterNode));
- if (fNodes == NULL) {
+ if (fNodes == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -266,7 +266,7 @@ TextTrieMap::putImpl(const UnicodeString &key, void *value, UErrorCode &status)
}
UnicodeString foldedKey;
- const UChar *keyBuffer;
+ const char16_t *keyBuffer;
int32_t keyLength;
if (fIgnoreCase) {
// Ok to use fastCopyFrom() because we discard the copy when we return.
@@ -296,7 +296,7 @@ TextTrieMap::growNodes() {
newCapacity = 0xffff;
}
CharacterNode *newNodes = (CharacterNode *)uprv_malloc(newCapacity * sizeof(CharacterNode));
- if (newNodes == NULL) {
+ if (newNodes == nullptr) {
return false;
}
uprv_memcpy(newNodes, fNodes, fNodesCount * sizeof(CharacterNode));
@@ -307,16 +307,16 @@ TextTrieMap::growNodes() {
}
CharacterNode*
-TextTrieMap::addChildNode(CharacterNode *parent, UChar c, UErrorCode &status) {
+TextTrieMap::addChildNode(CharacterNode *parent, char16_t c, UErrorCode &status) {
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
// Linear search of the sorted list of children.
uint16_t prevIndex = 0;
uint16_t nodeIndex = parent->fFirstChild;
while (nodeIndex > 0) {
CharacterNode *current = fNodes + nodeIndex;
- UChar childCharacter = current->fCharacter;
+ char16_t childCharacter = current->fCharacter;
if (childCharacter == c) {
return current;
} else if (childCharacter > c) {
@@ -331,7 +331,7 @@ TextTrieMap::addChildNode(CharacterNode *parent, UChar c, UErrorCode &status) {
int32_t parentIndex = (int32_t)(parent - fNodes);
if (!growNodes()) {
status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
parent = fNodes + parentIndex;
}
@@ -351,12 +351,12 @@ TextTrieMap::addChildNode(CharacterNode *parent, UChar c, UErrorCode &status) {
}
CharacterNode*
-TextTrieMap::getChildNode(CharacterNode *parent, UChar c) const {
+TextTrieMap::getChildNode(CharacterNode *parent, char16_t c) const {
// Linear search of the sorted list of children.
uint16_t nodeIndex = parent->fFirstChild;
while (nodeIndex > 0) {
CharacterNode *current = fNodes + nodeIndex;
- UChar childCharacter = current->fCharacter;
+ char16_t childCharacter = current->fCharacter;
if (childCharacter == c) {
return current;
} else if (childCharacter > c) {
@@ -364,7 +364,7 @@ TextTrieMap::getChildNode(CharacterNode *parent, UChar c) const {
}
nodeIndex = current->fNextSibling;
}
- return NULL;
+ return nullptr;
}
@@ -373,15 +373,15 @@ TextTrieMap::getChildNode(CharacterNode *parent, UChar c) const {
// needed for parsing operations, which are less common than formatting,
// and the Trie is big, which is why its creation is deferred until first use.
void TextTrieMap::buildTrie(UErrorCode &status) {
- if (fLazyContents != NULL) {
+ if (fLazyContents != nullptr) {
for (int32_t i=0; i<fLazyContents->size(); i+=2) {
- const UChar *key = (UChar *)fLazyContents->elementAt(i);
+ const char16_t *key = (char16_t *)fLazyContents->elementAt(i);
void *val = fLazyContents->elementAt(i+1);
UnicodeString keyString(true, key, -1); // Aliasing UnicodeString constructor.
putImpl(keyString, val, status);
}
delete fLazyContents;
- fLazyContents = NULL;
+ fLazyContents = nullptr;
}
}
@@ -399,12 +399,12 @@ TextTrieMap::search(const UnicodeString &text, int32_t start,
static UMutex TextTrieMutex;
Mutex lock(&TextTrieMutex);
- if (fLazyContents != NULL) {
+ if (fLazyContents != nullptr) {
TextTrieMap *nonConstThis = const_cast<TextTrieMap *>(this);
nonConstThis->buildTrie(status);
}
}
- if (fNodes == NULL) {
+ if (fNodes == nullptr) {
return;
}
search(fNodes, text, start, start, handler, status);
@@ -434,18 +434,18 @@ TextTrieMap::search(CharacterNode *node, const UnicodeString &text, int32_t star
tmp.foldCase();
int32_t tmpidx = 0;
while (tmpidx < tmp.length()) {
- UChar c = tmp.charAt(tmpidx++);
+ char16_t c = tmp.charAt(tmpidx++);
node = getChildNode(node, c);
- if (node == NULL) {
+ if (node == nullptr) {
break;
}
}
} else {
// here we just get the next UTF16 code unit
- UChar c = text.charAt(index++);
+ char16_t c = text.charAt(index++);
node = getChildNode(node, c);
}
- if (node != NULL) {
+ if (node != nullptr) {
search(node, text, start, index, handler, status);
}
}
@@ -457,23 +457,23 @@ static const int32_t POOL_CHUNK_SIZE = 2000;
struct ZNStringPoolChunk: public UMemory {
ZNStringPoolChunk *fNext; // Ptr to next pool chunk
int32_t fLimit; // Index to start of unused area at end of fStrings
- UChar fStrings[POOL_CHUNK_SIZE]; // Strings array
+ char16_t fStrings[POOL_CHUNK_SIZE]; // Strings array
ZNStringPoolChunk();
};
ZNStringPoolChunk::ZNStringPoolChunk() {
- fNext = NULL;
+ fNext = nullptr;
fLimit = 0;
}
ZNStringPool::ZNStringPool(UErrorCode &status) {
- fChunks = NULL;
- fHash = NULL;
+ fChunks = nullptr;
+ fHash = nullptr;
if (U_FAILURE(status)) {
return;
}
fChunks = new ZNStringPoolChunk;
- if (fChunks == NULL) {
+ if (fChunks == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -488,28 +488,28 @@ ZNStringPool::ZNStringPool(UErrorCode &status) {
}
ZNStringPool::~ZNStringPool() {
- if (fHash != NULL) {
+ if (fHash != nullptr) {
uhash_close(fHash);
- fHash = NULL;
+ fHash = nullptr;
}
- while (fChunks != NULL) {
+ while (fChunks != nullptr) {
ZNStringPoolChunk *nextChunk = fChunks->fNext;
delete fChunks;
fChunks = nextChunk;
}
}
-static const UChar EmptyString = 0;
+static const char16_t EmptyString = 0;
-const UChar *ZNStringPool::get(const UChar *s, UErrorCode &status) {
- const UChar *pooledString;
+const char16_t *ZNStringPool::get(const char16_t *s, UErrorCode &status) {
+ const char16_t *pooledString;
if (U_FAILURE(status)) {
return &EmptyString;
}
- pooledString = static_cast<UChar *>(uhash_get(fHash, s));
- if (pooledString != NULL) {
+ pooledString = static_cast<char16_t *>(uhash_get(fHash, s));
+ if (pooledString != nullptr) {
return pooledString;
}
@@ -523,14 +523,14 @@ const UChar *ZNStringPool::get(const UChar *s, UErrorCode &status) {
}
ZNStringPoolChunk *oldChunk = fChunks;
fChunks = new ZNStringPoolChunk;
- if (fChunks == NULL) {
+ if (fChunks == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return &EmptyString;
}
fChunks->fNext = oldChunk;
}
- UChar *destString = &fChunks->fStrings[fChunks->fLimit];
+ char16_t *destString = &fChunks->fStrings[fChunks->fLimit];
u_strcpy(destString, s);
fChunks->fLimit += (length + 1);
uhash_put(fHash, destString, destString, &status);
@@ -543,15 +543,15 @@ const UChar *ZNStringPool::get(const UChar *s, UErrorCode &status) {
// into the pool's storage. Used for strings from resource bundles,
// which will persist for the life of the zone string formatter, and
// therefore can be used directly without copying.
-const UChar *ZNStringPool::adopt(const UChar * s, UErrorCode &status) {
- const UChar *pooledString;
+const char16_t *ZNStringPool::adopt(const char16_t * s, UErrorCode &status) {
+ const char16_t *pooledString;
if (U_FAILURE(status)) {
return &EmptyString;
}
- if (s != NULL) {
- pooledString = static_cast<UChar *>(uhash_get(fHash, s));
- if (pooledString == NULL) {
- UChar *ncs = const_cast<UChar *>(s);
+ if (s != nullptr) {
+ pooledString = static_cast<char16_t *>(uhash_get(fHash, s));
+ if (pooledString == nullptr) {
+ char16_t *ncs = const_cast<char16_t *>(s);
uhash_put(fHash, ncs, ncs, &status);
}
}
@@ -559,7 +559,7 @@ const UChar *ZNStringPool::adopt(const UChar * s, UErrorCode &status) {
}
-const UChar *ZNStringPool::get(const UnicodeString &s, UErrorCode &status) {
+const char16_t *ZNStringPool::get(const UnicodeString &s, UErrorCode &status) {
UnicodeString &nonConstStr = const_cast<UnicodeString &>(s);
return this->get(nonConstStr.getTerminatedBuffer(), status);
}
@@ -573,7 +573,7 @@ const UChar *ZNStringPool::get(const UnicodeString &s, UErrorCode &status) {
*/
void ZNStringPool::freeze() {
uhash_close(fHash);
- fHash = NULL;
+ fHash = nullptr;
}
@@ -609,17 +609,17 @@ private:
}
}
- const UChar* fNames[UTZNM_INDEX_COUNT];
+ const char16_t* fNames[UTZNM_INDEX_COUNT];
UBool fDidAddIntoTrie;
// Whether we own the location string, if computed rather than loaded from a bundle.
// A meta zone names instance never has an exemplar location string.
UBool fOwnsLocationName;
- ZNames(const UChar* names[], const UChar* locationName)
+ ZNames(const char16_t* names[], const char16_t* locationName)
: fDidAddIntoTrie(false) {
uprv_memcpy(fNames, names, sizeof(fNames));
- if (locationName != NULL) {
+ if (locationName != nullptr) {
fOwnsLocationName = true;
fNames[UTZNM_INDEX_EXEMPLAR_LOCATION] = locationName;
} else {
@@ -630,17 +630,17 @@ private:
public:
~ZNames() {
if (fOwnsLocationName) {
- const UChar* locationName = fNames[UTZNM_INDEX_EXEMPLAR_LOCATION];
- U_ASSERT(locationName != NULL);
+ const char16_t* locationName = fNames[UTZNM_INDEX_EXEMPLAR_LOCATION];
+ U_ASSERT(locationName != nullptr);
uprv_free((void*) locationName);
}
}
private:
- static void* createMetaZoneAndPutInCache(UHashtable* cache, const UChar* names[],
+ static void* createMetaZoneAndPutInCache(UHashtable* cache, const char16_t* names[],
const UnicodeString& mzID, UErrorCode& status) {
- if (U_FAILURE(status)) { return NULL; }
- U_ASSERT(names != NULL);
+ if (U_FAILURE(status)) { return nullptr; }
+ U_ASSERT(names != nullptr);
// Use the persistent ID as the resource key, so we can
// avoid duplications.
@@ -650,35 +650,35 @@ private:
if (uprv_memcmp(names, EMPTY_NAMES, sizeof(EMPTY_NAMES)) == 0) {
value = (void*) EMPTY;
} else {
- value = (void*) (new ZNames(names, NULL));
- if (value == NULL) {
+ value = (void*) (new ZNames(names, nullptr));
+ if (value == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
}
uhash_put(cache, key, value, &status);
return value;
}
- static void* createTimeZoneAndPutInCache(UHashtable* cache, const UChar* names[],
+ static void* createTimeZoneAndPutInCache(UHashtable* cache, const char16_t* names[],
const UnicodeString& tzID, UErrorCode& status) {
- if (U_FAILURE(status)) { return NULL; }
- U_ASSERT(names != NULL);
+ if (U_FAILURE(status)) { return nullptr; }
+ U_ASSERT(names != nullptr);
// If necessary, compute the location name from the time zone name.
- UChar* locationName = NULL;
- if (names[UTZNM_INDEX_EXEMPLAR_LOCATION] == NULL) {
+ char16_t* locationName = nullptr;
+ if (names[UTZNM_INDEX_EXEMPLAR_LOCATION] == nullptr) {
UnicodeString locationNameUniStr;
TimeZoneNamesImpl::getDefaultExemplarLocationName(tzID, locationNameUniStr);
// Copy the computed location name to the heap
if (locationNameUniStr.length() > 0) {
- const UChar* buff = locationNameUniStr.getTerminatedBuffer();
- int32_t len = sizeof(UChar) * (locationNameUniStr.length() + 1);
- locationName = (UChar*) uprv_malloc(len);
- if (locationName == NULL) {
+ const char16_t* buff = locationNameUniStr.getTerminatedBuffer();
+ int32_t len = sizeof(char16_t) * (locationNameUniStr.length() + 1);
+ locationName = (char16_t*) uprv_malloc(len);
+ if (locationName == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
uprv_memcpy(locationName, buff, len);
}
@@ -689,37 +689,37 @@ private:
// TODO: Is there a more efficient way, like intern() in Java?
void* key = (void*) ZoneMeta::findTimeZoneID(tzID);
void* value = (void*) (new ZNames(names, locationName));
- if (value == NULL) {
+ if (value == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
uhash_put(cache, key, value, &status);
return value;
}
- const UChar* getName(UTimeZoneNameType type) const {
+ const char16_t* getName(UTimeZoneNameType type) const {
UTimeZoneNameTypeIndex index = getTZNameTypeIndex(type);
- return index >= 0 ? fNames[index] : NULL;
+ return index >= 0 ? fNames[index] : nullptr;
}
- void addAsMetaZoneIntoTrie(const UChar* mzID, TextTrieMap& trie, UErrorCode& status) {
- addNamesIntoTrie(mzID, NULL, trie, status);
+ void addAsMetaZoneIntoTrie(const char16_t* mzID, TextTrieMap& trie, UErrorCode& status) {
+ addNamesIntoTrie(mzID, nullptr, trie, status);
}
- void addAsTimeZoneIntoTrie(const UChar* tzID, TextTrieMap& trie, UErrorCode& status) {
- addNamesIntoTrie(NULL, tzID, trie, status);
+ void addAsTimeZoneIntoTrie(const char16_t* tzID, TextTrieMap& trie, UErrorCode& status) {
+ addNamesIntoTrie(nullptr, tzID, trie, status);
}
- void addNamesIntoTrie(const UChar* mzID, const UChar* tzID, TextTrieMap& trie,
+ void addNamesIntoTrie(const char16_t* mzID, const char16_t* tzID, TextTrieMap& trie,
UErrorCode& status) {
if (U_FAILURE(status)) { return; }
if (fDidAddIntoTrie) { return; }
fDidAddIntoTrie = true;
for (int32_t i = 0; i < UTZNM_INDEX_COUNT; i++) {
- const UChar* name = fNames[i];
- if (name != NULL) {
+ const char16_t* name = fNames[i];
+ if (name != nullptr) {
ZNameInfo *nameinfo = (ZNameInfo *)uprv_malloc(sizeof(ZNameInfo));
- if (nameinfo == NULL) {
+ if (nameinfo == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -739,7 +739,7 @@ public:
};
struct ZNames::ZNamesLoader : public ResourceSink {
- const UChar *names[UTZNM_INDEX_COUNT];
+ const char16_t *names[UTZNM_INDEX_COUNT];
ZNamesLoader() {
clear();
@@ -764,8 +764,8 @@ struct ZNames::ZNamesLoader : public ResourceSink {
// Replace "/" with ":".
UnicodeString uKey(tzID);
for (int32_t i = 0; i < uKey.length(); i++) {
- if (uKey.charAt(i) == (UChar)0x2F) {
- uKey.setCharAt(i, (UChar)0x3A);
+ if (uKey.charAt(i) == (char16_t)0x2F) {
+ uKey.setCharAt(i, (char16_t)0x3A);
}
}
@@ -776,8 +776,8 @@ struct ZNames::ZNamesLoader : public ResourceSink {
}
void loadNames(const UResourceBundle* zoneStrings, const char* key, UErrorCode& errorCode) {
- U_ASSERT(zoneStrings != NULL);
- U_ASSERT(key != NULL);
+ U_ASSERT(zoneStrings != nullptr);
+ U_ASSERT(key != nullptr);
U_ASSERT(key[0] != '\0');
UErrorCode localStatus = U_ZERO_ERROR;
@@ -793,11 +793,11 @@ struct ZNames::ZNamesLoader : public ResourceSink {
void setNameIfEmpty(const char* key, const ResourceValue* value, UErrorCode& errorCode) {
UTimeZoneNameTypeIndex type = nameTypeFromKey(key);
if (type == UTZNM_INDEX_UNKNOWN) { return; }
- if (names[type] == NULL) {
+ if (names[type] == nullptr) {
int32_t length;
// 'NO_NAME' indicates internally that this field should remain empty. It will be
- // replaced by 'NULL' in getNames()
- names[type] = (value == NULL) ? NO_NAME : value->getString(length, errorCode);
+ // replaced by 'nullptr' in getNames()
+ names[type] = (value == nullptr) ? NO_NAME : value->getString(length, errorCode);
}
}
@@ -807,7 +807,7 @@ struct ZNames::ZNamesLoader : public ResourceSink {
if (U_FAILURE(errorCode)) { return; }
for (int32_t i = 0; namesTable.getKeyAndValue(i, key, value); ++i) {
if (value.isNoInheritanceMarker()) {
- setNameIfEmpty(key, NULL, errorCode);
+ setNameIfEmpty(key, nullptr, errorCode);
} else {
setNameIfEmpty(key, &value, errorCode);
}
@@ -841,11 +841,11 @@ struct ZNames::ZNamesLoader : public ResourceSink {
* This is different than Java, where the array will no longer be modified and null
* may be returned.
*/
- const UChar** getNames() {
- // Remove 'NO_NAME' references in the array and replace with 'NULL'
+ const char16_t** getNames() {
+ // Remove 'NO_NAME' references in the array and replace with 'nullptr'
for (int32_t i = 0; i < UTZNM_INDEX_COUNT; ++i) {
if (names[i] == NO_NAME) {
- names[i] = NULL;
+ names[i] = nullptr;
}
}
return names;
@@ -864,8 +864,8 @@ public:
MetaZoneIDsEnumeration(const UVector& mzIDs);
MetaZoneIDsEnumeration(LocalPointer<UVector> mzIDs);
virtual ~MetaZoneIDsEnumeration();
- static UClassID U_EXPORT2 getStaticClassID(void);
- virtual UClassID getDynamicClassID(void) const override;
+ static UClassID U_EXPORT2 getStaticClassID();
+ virtual UClassID getDynamicClassID() const override;
virtual const UnicodeString* snext(UErrorCode& status) override;
virtual void reset(UErrorCode& status) override;
virtual int32_t count(UErrorCode& status) const override;
@@ -879,11 +879,11 @@ private:
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(MetaZoneIDsEnumeration)
MetaZoneIDsEnumeration::MetaZoneIDsEnumeration()
-: fLen(0), fPos(0), fMetaZoneIDs(NULL), fLocalVector(NULL) {
+: fLen(0), fPos(0), fMetaZoneIDs(nullptr), fLocalVector(nullptr) {
}
MetaZoneIDsEnumeration::MetaZoneIDsEnumeration(const UVector& mzIDs)
-: fPos(0), fMetaZoneIDs(&mzIDs), fLocalVector(NULL) {
+: fPos(0), fMetaZoneIDs(&mzIDs), fLocalVector(nullptr) {
fLen = fMetaZoneIDs->size();
}
@@ -897,11 +897,11 @@ MetaZoneIDsEnumeration::MetaZoneIDsEnumeration(LocalPointer<UVector> mzIDs)
const UnicodeString*
MetaZoneIDsEnumeration::snext(UErrorCode& status) {
- if (U_SUCCESS(status) && fMetaZoneIDs != NULL && fPos < fLen) {
- unistr.setTo((const UChar*)fMetaZoneIDs->elementAt(fPos++), -1);
+ if (U_SUCCESS(status) && fMetaZoneIDs != nullptr && fPos < fLen) {
+ unistr.setTo((const char16_t*)fMetaZoneIDs->elementAt(fPos++), -1);
return &unistr;
}
- return NULL;
+ return nullptr;
}
void
@@ -936,11 +936,11 @@ private:
};
ZNameSearchHandler::ZNameSearchHandler(uint32_t types)
-: fTypes(types), fMaxMatchLen(0), fResults(NULL) {
+: fTypes(types), fMaxMatchLen(0), fResults(nullptr) {
}
ZNameSearchHandler::~ZNameSearchHandler() {
- if (fResults != NULL) {
+ if (fResults != nullptr) {
delete fResults;
}
}
@@ -954,19 +954,19 @@ ZNameSearchHandler::handleMatch(int32_t matchLength, const CharacterNode *node,
int32_t valuesCount = node->countValues();
for (int32_t i = 0; i < valuesCount; i++) {
ZNameInfo *nameinfo = (ZNameInfo *)node->getValue(i);
- if (nameinfo == NULL) {
+ if (nameinfo == nullptr) {
continue;
}
if ((nameinfo->type & fTypes) != 0) {
// matches a requested type
- if (fResults == NULL) {
+ if (fResults == nullptr) {
fResults = new TimeZoneNames::MatchInfoCollection();
- if (fResults == NULL) {
+ if (fResults == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
}
}
if (U_SUCCESS(status)) {
- U_ASSERT(fResults != NULL);
+ U_ASSERT(fResults != nullptr);
if (nameinfo->tzID) {
fResults->addZone(nameinfo->type, matchLength, UnicodeString(nameinfo->tzID, -1), status);
} else {
@@ -990,7 +990,7 @@ ZNameSearchHandler::getMatches(int32_t& maxMatchLen) {
maxMatchLen = fMaxMatchLen;
// reset
- fResults = NULL;
+ fResults = nullptr;
fMaxMatchLen = 0;
return results;
}
@@ -1025,9 +1025,9 @@ U_CDECL_END
TimeZoneNamesImpl::TimeZoneNamesImpl(const Locale& locale, UErrorCode& status)
: fLocale(locale),
- fZoneStrings(NULL),
- fTZNamesMap(NULL),
- fMZNamesMap(NULL),
+ fZoneStrings(nullptr),
+ fTZNamesMap(nullptr),
+ fMZNamesMap(nullptr),
fNamesTrieFullyLoaded(false),
fNamesFullyLoaded(false),
fNamesTrie(true, deleteZNameInfo) {
@@ -1051,8 +1051,8 @@ TimeZoneNamesImpl::initialize(const Locale& locale, UErrorCode& status) {
}
// Initialize hashtables holding time zone/meta zone names
- fMZNamesMap = uhash_open(uhash_hashUChars, uhash_compareUChars, NULL, &status);
- fTZNamesMap = uhash_open(uhash_hashUChars, uhash_compareUChars, NULL, &status);
+ fMZNamesMap = uhash_open(uhash_hashUChars, uhash_compareUChars, nullptr, &status);
+ fTZNamesMap = uhash_open(uhash_hashUChars, uhash_compareUChars, nullptr, &status);
if (U_FAILURE(status)) {
cleanup();
return;
@@ -1064,8 +1064,8 @@ TimeZoneNamesImpl::initialize(const Locale& locale, UErrorCode& status) {
// preload zone strings for the default zone
TimeZone *tz = TimeZone::createDefault();
- const UChar *tzID = ZoneMeta::getCanonicalCLDRID(*tz);
- if (tzID != NULL) {
+ const char16_t *tzID = ZoneMeta::getCanonicalCLDRID(*tz);
+ if (tzID != nullptr) {
loadStrings(UnicodeString(tzID), status);
}
delete tz;
@@ -1085,7 +1085,7 @@ TimeZoneNamesImpl::loadStrings(const UnicodeString& tzCanonicalID, UErrorCode& s
U_ASSERT(!mzIDs.isNull());
const UnicodeString *mzID;
- while (((mzID = mzIDs->snext(status)) != NULL) && U_SUCCESS(status)) {
+ while (((mzID = mzIDs->snext(status)) != nullptr) && U_SUCCESS(status)) {
loadMetaZoneNames(*mzID, status);
}
}
@@ -1096,17 +1096,17 @@ TimeZoneNamesImpl::~TimeZoneNamesImpl() {
void
TimeZoneNamesImpl::cleanup() {
- if (fZoneStrings != NULL) {
+ if (fZoneStrings != nullptr) {
ures_close(fZoneStrings);
- fZoneStrings = NULL;
+ fZoneStrings = nullptr;
}
- if (fMZNamesMap != NULL) {
+ if (fMZNamesMap != nullptr) {
uhash_close(fMZNamesMap);
- fMZNamesMap = NULL;
+ fMZNamesMap = nullptr;
}
- if (fTZNamesMap != NULL) {
+ if (fTZNamesMap != nullptr) {
uhash_close(fTZNamesMap);
- fTZNamesMap = NULL;
+ fTZNamesMap = nullptr;
}
}
@@ -1134,10 +1134,10 @@ TimeZoneNamesImpl::getAvailableMetaZoneIDs(UErrorCode& status) const {
StringEnumeration*
TimeZoneNamesImpl::_getAvailableMetaZoneIDs(UErrorCode& status) {
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
const UVector* mzIDs = ZoneMeta::getAvailableMetazoneIDs();
- if (mzIDs == NULL) {
+ if (mzIDs == nullptr) {
return new MetaZoneIDsEnumeration();
}
return new MetaZoneIDsEnumeration(*mzIDs);
@@ -1152,21 +1152,21 @@ TimeZoneNamesImpl::getAvailableMetaZoneIDs(const UnicodeString& tzID, UErrorCode
StringEnumeration*
TimeZoneNamesImpl::_getAvailableMetaZoneIDs(const UnicodeString& tzID, UErrorCode& status) {
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
const UVector* mappings = ZoneMeta::getMetazoneMappings(tzID);
- if (mappings == NULL) {
+ if (mappings == nullptr) {
return new MetaZoneIDsEnumeration();
}
LocalPointer<MetaZoneIDsEnumeration> senum;
- LocalPointer<UVector> mzIDs(new UVector(NULL, uhash_compareUChars, status), status);
+ LocalPointer<UVector> mzIDs(new UVector(nullptr, uhash_compareUChars, status), status);
if (U_SUCCESS(status)) {
U_ASSERT(mzIDs.isValid());
for (int32_t i = 0; U_SUCCESS(status) && i < mappings->size(); i++) {
OlsonToMetaMappingEntry *map = (OlsonToMetaMappingEntry *)mappings->elementAt(i);
- const UChar *mzID = map->mzid;
+ const char16_t *mzID = map->mzid;
if (!mzIDs->contains((void *)mzID)) {
mzIDs->addElement((void *)mzID, status);
}
@@ -1211,7 +1211,7 @@ TimeZoneNamesImpl::getMetaZoneDisplayName(const UnicodeString& mzID,
return name;
}
- ZNames *znames = NULL;
+ ZNames *znames = nullptr;
TimeZoneNamesImpl *nonConstThis = const_cast<TimeZoneNamesImpl *>(this);
{
@@ -1221,9 +1221,9 @@ TimeZoneNamesImpl::getMetaZoneDisplayName(const UnicodeString& mzID,
if (U_FAILURE(status)) { return name; }
}
- if (znames != NULL) {
- const UChar* s = znames->getName(type);
- if (s != NULL) {
+ if (znames != nullptr) {
+ const char16_t* s = znames->getName(type);
+ if (s != nullptr) {
name.setTo(true, s, -1);
}
}
@@ -1237,7 +1237,7 @@ TimeZoneNamesImpl::getTimeZoneDisplayName(const UnicodeString& tzID, UTimeZoneNa
return name;
}
- ZNames *tznames = NULL;
+ ZNames *tznames = nullptr;
TimeZoneNamesImpl *nonConstThis = const_cast<TimeZoneNamesImpl *>(this);
{
@@ -1247,9 +1247,9 @@ TimeZoneNamesImpl::getTimeZoneDisplayName(const UnicodeString& tzID, UTimeZoneNa
if (U_FAILURE(status)) { return name; }
}
- if (tznames != NULL) {
- const UChar *s = tznames->getName(type);
- if (s != NULL) {
+ if (tznames != nullptr) {
+ const char16_t *s = tznames->getName(type);
+ if (s != nullptr) {
name.setTo(true, s, -1);
}
}
@@ -1259,8 +1259,8 @@ TimeZoneNamesImpl::getTimeZoneDisplayName(const UnicodeString& tzID, UTimeZoneNa
UnicodeString&
TimeZoneNamesImpl::getExemplarLocationName(const UnicodeString& tzID, UnicodeString& name) const {
name.setToBogus(); // cleanup result.
- const UChar* locName = NULL;
- ZNames *tznames = NULL;
+ const char16_t* locName = nullptr;
+ ZNames *tznames = nullptr;
TimeZoneNamesImpl *nonConstThis = const_cast<TimeZoneNamesImpl *>(this);
{
@@ -1270,10 +1270,10 @@ TimeZoneNamesImpl::getExemplarLocationName(const UnicodeString& tzID, UnicodeStr
if (U_FAILURE(status)) { return name; }
}
- if (tznames != NULL) {
+ if (tznames != nullptr) {
locName = tznames->getName(UTZNM_EXEMPLAR_LOCATION);
}
- if (locName != NULL) {
+ if (locName != nullptr) {
name.setTo(true, locName, -1);
}
@@ -1302,26 +1302,26 @@ static void mergeTimeZoneKey(const UnicodeString& mzID, char* result) {
*/
ZNames*
TimeZoneNamesImpl::loadMetaZoneNames(const UnicodeString& mzID, UErrorCode& status) {
- if (U_FAILURE(status)) { return NULL; }
+ if (U_FAILURE(status)) { return nullptr; }
U_ASSERT(mzID.length() <= ZID_KEY_MAX - MZ_PREFIX_LEN);
- UChar mzIDKey[ZID_KEY_MAX + 1];
+ char16_t mzIDKey[ZID_KEY_MAX + 1];
mzID.extract(mzIDKey, ZID_KEY_MAX + 1, status);
U_ASSERT(U_SUCCESS(status)); // already checked length above
mzIDKey[mzID.length()] = 0;
void* mznames = uhash_get(fMZNamesMap, mzIDKey);
- if (mznames == NULL) {
+ if (mznames == nullptr) {
ZNames::ZNamesLoader loader;
loader.loadMetaZone(fZoneStrings, mzID, status);
mznames = ZNames::createMetaZoneAndPutInCache(fMZNamesMap, loader.getNames(), mzID, status);
- if (U_FAILURE(status)) { return NULL; }
+ if (U_FAILURE(status)) { return nullptr; }
}
if (mznames != EMPTY) {
return (ZNames*)mznames;
} else {
- return NULL;
+ return nullptr;
}
}
@@ -1330,20 +1330,20 @@ TimeZoneNamesImpl::loadMetaZoneNames(const UnicodeString& mzID, UErrorCode& stat
*/
ZNames*
TimeZoneNamesImpl::loadTimeZoneNames(const UnicodeString& tzID, UErrorCode& status) {
- if (U_FAILURE(status)) { return NULL; }
+ if (U_FAILURE(status)) { return nullptr; }
U_ASSERT(tzID.length() <= ZID_KEY_MAX);
- UChar tzIDKey[ZID_KEY_MAX + 1];
+ char16_t tzIDKey[ZID_KEY_MAX + 1];
int32_t tzIDKeyLen = tzID.extract(tzIDKey, ZID_KEY_MAX + 1, status);
U_ASSERT(U_SUCCESS(status)); // already checked length above
tzIDKey[tzIDKeyLen] = 0;
void *tznames = uhash_get(fTZNamesMap, tzIDKey);
- if (tznames == NULL) {
+ if (tznames == nullptr) {
ZNames::ZNamesLoader loader;
loader.loadTimeZone(fZoneStrings, tzID, status);
tznames = ZNames::createTimeZoneAndPutInCache(fTZNamesMap, loader.getNames(), tzID, status);
- if (U_FAILURE(status)) { return NULL; }
+ if (U_FAILURE(status)) { return nullptr; }
}
// tznames is never EMPTY
@@ -1363,8 +1363,8 @@ TimeZoneNamesImpl::find(const UnicodeString& text, int32_t start, uint32_t types
// First try of lookup.
matches = doFind(handler, text, start, status);
- if (U_FAILURE(status)) { return NULL; }
- if (matches != NULL) {
+ if (U_FAILURE(status)) { return nullptr; }
+ if (matches != nullptr) {
return matches;
}
@@ -1376,8 +1376,8 @@ TimeZoneNamesImpl::find(const UnicodeString& text, int32_t start, uint32_t types
// Second try of lookup.
matches = doFind(handler, text, start, status);
- if (U_FAILURE(status)) { return NULL; }
- if (matches != NULL) {
+ if (U_FAILURE(status)) { return nullptr; }
+ if (matches != nullptr) {
return matches;
}
@@ -1386,7 +1386,7 @@ TimeZoneNamesImpl::find(const UnicodeString& text, int32_t start, uint32_t types
nonConstThis->internalLoadAllDisplayNames(status);
nonConstThis->addAllNamesIntoTrie(status);
nonConstThis->fNamesTrieFullyLoaded = true;
- if (U_FAILURE(status)) { return NULL; }
+ if (U_FAILURE(status)) { return nullptr; }
// Third try: we must return this one.
return doFind(handler, text, start, status);
@@ -1398,16 +1398,16 @@ TimeZoneNamesImpl::doFind(ZNameSearchHandler& handler,
const UnicodeString& text, int32_t start, UErrorCode& status) const {
fNamesTrie.search(text, start, (TextTrieMapSearchResultHandler *)&handler, status);
- if (U_FAILURE(status)) { return NULL; }
+ if (U_FAILURE(status)) { return nullptr; }
int32_t maxLen = 0;
TimeZoneNames::MatchInfoCollection* matches = handler.getMatches(maxLen);
- if (matches != NULL && ((maxLen == (text.length() - start)) || fNamesTrieFullyLoaded)) {
+ if (matches != nullptr && ((maxLen == (text.length() - start)) || fNamesTrieFullyLoaded)) {
// perfect match, or no more names available
return matches;
}
delete matches;
- return NULL;
+ return nullptr;
}
// Caller must synchronize.
@@ -1417,18 +1417,18 @@ void TimeZoneNamesImpl::addAllNamesIntoTrie(UErrorCode& status) {
const UHashElement* element;
pos = UHASH_FIRST;
- while ((element = uhash_nextElement(fMZNamesMap, &pos)) != NULL) {
+ while ((element = uhash_nextElement(fMZNamesMap, &pos)) != nullptr) {
if (element->value.pointer == EMPTY) { continue; }
- UChar* mzID = (UChar*) element->key.pointer;
+ char16_t* mzID = (char16_t*) element->key.pointer;
ZNames* znames = (ZNames*) element->value.pointer;
znames->addAsMetaZoneIntoTrie(mzID, fNamesTrie, status);
if (U_FAILURE(status)) { return; }
}
pos = UHASH_FIRST;
- while ((element = uhash_nextElement(fTZNamesMap, &pos)) != NULL) {
+ while ((element = uhash_nextElement(fTZNamesMap, &pos)) != nullptr) {
if (element->value.pointer == EMPTY) { continue; }
- UChar* tzID = (UChar*) element->key.pointer;
+ char16_t* tzID = (char16_t*) element->key.pointer;
ZNames* znames = (ZNames*) element->value.pointer;
znames->addAsTimeZoneIntoTrie(tzID, fNamesTrie, status);
if (U_FAILURE(status)) { return; }
@@ -1450,7 +1450,7 @@ struct TimeZoneNamesImpl::ZoneStringsLoader : public ResourceSink {
ZoneStringsLoader(TimeZoneNamesImpl& _tzn, UErrorCode& status)
: tzn(_tzn) {
- keyToLoader = uhash_open(uhash_hashChars, uhash_compareChars, NULL, &status);
+ keyToLoader = uhash_open(uhash_hashChars, uhash_compareChars, nullptr, &status);
if (U_FAILURE(status)) { return; }
uhash_setKeyDeleter(keyToLoader, uprv_free);
uhash_setValueDeleter(keyToLoader, deleteZNamesLoader);
@@ -1460,9 +1460,9 @@ struct TimeZoneNamesImpl::ZoneStringsLoader : public ResourceSink {
void* createKey(const char* key, UErrorCode& status) {
int32_t len = sizeof(char) * (static_cast<int32_t>(uprv_strlen(key)) + 1);
char* newKey = (char*) uprv_malloc(len);
- if (newKey == NULL) {
+ if (newKey == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
uprv_memcpy(newKey, key, len);
newKey[len-1] = '\0';
@@ -1494,7 +1494,7 @@ struct TimeZoneNamesImpl::ZoneStringsLoader : public ResourceSink {
int32_t pos = UHASH_FIRST;
const UHashElement* element;
- while ((element = uhash_nextElement(keyToLoader, &pos)) != NULL) {
+ while ((element = uhash_nextElement(keyToLoader, &pos)) != nullptr) {
if (element->value.pointer == DUMMY_LOADER) { continue; }
ZNames::ZNamesLoader* loader = (ZNames::ZNamesLoader*) element->value.pointer;
char* key = (char*) element->key.pointer;
@@ -1515,16 +1515,16 @@ struct TimeZoneNamesImpl::ZoneStringsLoader : public ResourceSink {
if (U_FAILURE(status)) { return; }
void* loader = uhash_get(keyToLoader, key);
- if (loader == NULL) {
+ if (loader == nullptr) {
if (isMetaZone(key)) {
UnicodeString mzID = mzIDFromKey(key);
void* cacheVal = uhash_get(tzn.fMZNamesMap, mzID.getTerminatedBuffer());
- if (cacheVal != NULL) {
+ if (cacheVal != nullptr) {
// We have already loaded the names for this meta zone.
loader = (void*) DUMMY_LOADER;
} else {
loader = (void*) new ZNames::ZNamesLoader();
- if (loader == NULL) {
+ if (loader == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -1532,12 +1532,12 @@ struct TimeZoneNamesImpl::ZoneStringsLoader : public ResourceSink {
} else {
UnicodeString tzID = tzIDFromKey(key);
void* cacheVal = uhash_get(tzn.fTZNamesMap, tzID.getTerminatedBuffer());
- if (cacheVal != NULL) {
+ if (cacheVal != nullptr) {
// We have already loaded the names for this time zone.
loader = (void*) DUMMY_LOADER;
} else {
loader = (void*) new ZNames::ZNamesLoader();
- if (loader == NULL) {
+ if (loader == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -1597,8 +1597,8 @@ void TimeZoneNamesImpl::getDisplayNames(const UnicodeString& tzID,
if (U_FAILURE(status)) return;
if (tzID.isEmpty()) { return; }
- void* tznames = NULL;
- void* mznames = NULL;
+ void* tznames = nullptr;
+ void* mznames = nullptr;
TimeZoneNamesImpl *nonConstThis = const_cast<TimeZoneNamesImpl*>(this);
// Load the time zone strings
@@ -1607,14 +1607,14 @@ void TimeZoneNamesImpl::getDisplayNames(const UnicodeString& tzID,
tznames = (void*) nonConstThis->loadTimeZoneNames(tzID, status);
if (U_FAILURE(status)) { return; }
}
- U_ASSERT(tznames != NULL);
+ U_ASSERT(tznames != nullptr);
// Load the values into the dest array
for (int i = 0; i < numTypes; i++) {
UTimeZoneNameType type = types[i];
- const UChar* name = ((ZNames*)tznames)->getName(type);
- if (name == NULL) {
- if (mznames == NULL) {
+ const char16_t* name = ((ZNames*)tznames)->getName(type);
+ if (name == nullptr) {
+ if (mznames == nullptr) {
// Load the meta zone name
UnicodeString mzID;
getMetaZoneID(tzID, date, mzID);
@@ -1627,18 +1627,18 @@ void TimeZoneNamesImpl::getDisplayNames(const UnicodeString& tzID,
mznames = (void*) nonConstThis->loadMetaZoneNames(mzID, status);
if (U_FAILURE(status)) { return; }
// Note: when the metazone doesn't exist, in Java, loadMetaZoneNames returns
- // a dummy object instead of NULL.
- if (mznames == NULL) {
+ // a dummy object instead of nullptr.
+ if (mznames == nullptr) {
mznames = (void*) EMPTY;
}
}
}
- U_ASSERT(mznames != NULL);
+ U_ASSERT(mznames != nullptr);
if (mznames != EMPTY) {
name = ((ZNames*)mznames)->getName(type);
}
}
- if (name != NULL) {
+ if (name != nullptr) {
dest[i].setTo(true, name, -1);
} else {
dest[i].setToBogus();
@@ -1659,21 +1659,21 @@ void TimeZoneNamesImpl::internalLoadAllDisplayNames(UErrorCode& status) {
// load strings for all zones
StringEnumeration *tzIDs = TimeZone::createTimeZoneIDEnumeration(
- UCAL_ZONE_TYPE_CANONICAL, NULL, NULL, status);
+ UCAL_ZONE_TYPE_CANONICAL, nullptr, nullptr, status);
if (U_SUCCESS(status)) {
- while ((id = tzIDs->snext(status)) != NULL) {
+ while ((id = tzIDs->snext(status)) != nullptr) {
if (U_FAILURE(status)) {
break;
}
UnicodeString copy(*id);
void* value = uhash_get(fTZNamesMap, copy.getTerminatedBuffer());
- if (value == NULL) {
+ if (value == nullptr) {
// loadStrings also loads related metazone strings
loadStrings(*id, status);
}
}
}
- if (tzIDs != NULL) {
+ if (tzIDs != nullptr) {
delete tzIDs;
}
}
@@ -1681,11 +1681,11 @@ void TimeZoneNamesImpl::internalLoadAllDisplayNames(UErrorCode& status) {
-static const UChar gEtcPrefix[] = { 0x45, 0x74, 0x63, 0x2F }; // "Etc/"
+static const char16_t gEtcPrefix[] = { 0x45, 0x74, 0x63, 0x2F }; // "Etc/"
static const int32_t gEtcPrefixLen = 4;
-static const UChar gSystemVPrefix[] = { 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x56, 0x2F }; // "SystemV/
+static const char16_t gSystemVPrefix[] = { 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x56, 0x2F }; // "SystemV/
static const int32_t gSystemVPrefixLen = 8;
-static const UChar gRiyadh8[] = { 0x52, 0x69, 0x79, 0x61, 0x64, 0x68, 0x38 }; // "Riyadh8"
+static const char16_t gRiyadh8[] = { 0x52, 0x69, 0x79, 0x61, 0x64, 0x68, 0x38 }; // "Riyadh8"
static const int32_t gRiyadh8Len = 7;
UnicodeString& U_EXPORT2
@@ -1696,11 +1696,11 @@ TimeZoneNamesImpl::getDefaultExemplarLocationName(const UnicodeString& tzID, Uni
return name;
}
- int32_t sep = tzID.lastIndexOf((UChar)0x2F /* '/' */);
+ int32_t sep = tzID.lastIndexOf((char16_t)0x2F /* '/' */);
if (sep > 0 && sep + 1 < tzID.length()) {
name.setTo(tzID, sep + 1);
- name.findAndReplace(UnicodeString((UChar)0x5f /* _ */),
- UnicodeString((UChar)0x20 /* space */));
+ name.findAndReplace(UnicodeString((char16_t)0x5f /* _ */),
+ UnicodeString((char16_t)0x20 /* space */));
} else {
name.setToBogus();
}
@@ -1719,29 +1719,29 @@ public:
virtual ~TZDBNames();
static TZDBNames* createInstance(UResourceBundle* rb, const char* key);
- const UChar* getName(UTimeZoneNameType type) const;
+ const char16_t* getName(UTimeZoneNameType type) const;
const char** getParseRegions(int32_t& numRegions) const;
protected:
- TZDBNames(const UChar** names, char** regions, int32_t numRegions);
+ TZDBNames(const char16_t** names, char** regions, int32_t numRegions);
private:
- const UChar** fNames;
+ const char16_t** fNames;
char** fRegions;
int32_t fNumRegions;
};
-TZDBNames::TZDBNames(const UChar** names, char** regions, int32_t numRegions)
+TZDBNames::TZDBNames(const char16_t** names, char** regions, int32_t numRegions)
: fNames(names),
fRegions(regions),
fNumRegions(numRegions) {
}
TZDBNames::~TZDBNames() {
- if (fNames != NULL) {
+ if (fNames != nullptr) {
uprv_free(fNames);
}
- if (fRegions != NULL) {
+ if (fRegions != nullptr) {
char **p = fRegions;
for (int32_t i = 0; i < fNumRegions; p++, i++) {
uprv_free(*p);
@@ -1752,32 +1752,32 @@ TZDBNames::~TZDBNames() {
TZDBNames*
TZDBNames::createInstance(UResourceBundle* rb, const char* key) {
- if (rb == NULL || key == NULL || *key == 0) {
- return NULL;
+ if (rb == nullptr || key == nullptr || *key == 0) {
+ return nullptr;
}
UErrorCode status = U_ZERO_ERROR;
- const UChar **names = NULL;
- char** regions = NULL;
+ const char16_t **names = nullptr;
+ char** regions = nullptr;
int32_t numRegions = 0;
int32_t len = 0;
- UResourceBundle* rbTable = NULL;
+ UResourceBundle* rbTable = nullptr;
rbTable = ures_getByKey(rb, key, rbTable, &status);
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
- names = (const UChar **)uprv_malloc(sizeof(const UChar*) * TZDBNAMES_KEYS_SIZE);
+ names = (const char16_t **)uprv_malloc(sizeof(const char16_t*) * TZDBNAMES_KEYS_SIZE);
UBool isEmpty = true;
- if (names != NULL) {
+ if (names != nullptr) {
for (int32_t i = 0; i < TZDBNAMES_KEYS_SIZE; i++) {
status = U_ZERO_ERROR;
- const UChar *value = ures_getStringByKey(rbTable, TZDBNAMES_KEYS[i], &len, &status);
+ const char16_t *value = ures_getStringByKey(rbTable, TZDBNAMES_KEYS[i], &len, &status);
if (U_FAILURE(status) || len == 0) {
- names[i] = NULL;
+ names[i] = nullptr;
} else {
names[i] = value;
isEmpty = false;
@@ -1786,34 +1786,34 @@ TZDBNames::createInstance(UResourceBundle* rb, const char* key) {
}
if (isEmpty) {
- if (names != NULL) {
+ if (names != nullptr) {
uprv_free(names);
}
- return NULL;
+ return nullptr;
}
- UResourceBundle *regionsRes = ures_getByKey(rbTable, "parseRegions", NULL, &status);
+ UResourceBundle *regionsRes = ures_getByKey(rbTable, "parseRegions", nullptr, &status);
UBool regionError = false;
if (U_SUCCESS(status)) {
numRegions = ures_getSize(regionsRes);
if (numRegions > 0) {
regions = (char**)uprv_malloc(sizeof(char*) * numRegions);
- if (regions != NULL) {
+ if (regions != nullptr) {
char **pRegion = regions;
for (int32_t i = 0; i < numRegions; i++, pRegion++) {
- *pRegion = NULL;
+ *pRegion = nullptr;
}
// filling regions
pRegion = regions;
for (int32_t i = 0; i < numRegions; i++, pRegion++) {
status = U_ZERO_ERROR;
- const UChar *uregion = ures_getStringByIndex(regionsRes, i, &len, &status);
+ const char16_t *uregion = ures_getStringByIndex(regionsRes, i, &len, &status);
if (U_FAILURE(status)) {
regionError = true;
break;
}
*pRegion = (char*)uprv_malloc(sizeof(char) * (len + 1));
- if (*pRegion == NULL) {
+ if (*pRegion == nullptr) {
regionError = true;
break;
}
@@ -1827,28 +1827,28 @@ TZDBNames::createInstance(UResourceBundle* rb, const char* key) {
ures_close(rbTable);
if (regionError) {
- if (names != NULL) {
+ if (names != nullptr) {
uprv_free(names);
}
- if (regions != NULL) {
+ if (regions != nullptr) {
char **p = regions;
for (int32_t i = 0; i < numRegions; p++, i++) {
uprv_free(*p);
}
uprv_free(regions);
}
- return NULL;
+ return nullptr;
}
return new TZDBNames(names, regions, numRegions);
}
-const UChar*
+const char16_t*
TZDBNames::getName(UTimeZoneNameType type) const {
- if (fNames == NULL) {
- return NULL;
+ if (fNames == nullptr) {
+ return nullptr;
}
- const UChar *name = NULL;
+ const char16_t *name = nullptr;
switch(type) {
case UTZNM_SHORT_STANDARD:
name = fNames[0];
@@ -1857,14 +1857,14 @@ TZDBNames::getName(UTimeZoneNameType type) const {
name = fNames[1];
break;
default:
- name = NULL;
+ name = nullptr;
}
return name;
}
const char**
TZDBNames::getParseRegions(int32_t& numRegions) const {
- if (fRegions == NULL) {
+ if (fRegions == nullptr) {
numRegions = 0;
} else {
numRegions = fNumRegions;
@@ -1878,7 +1878,7 @@ U_CDECL_BEGIN
* in the trie
*/
typedef struct TZDBNameInfo {
- const UChar* mzID;
+ const char16_t* mzID;
UTimeZoneNameType type;
UBool ambiguousType;
const char** parseRegions;
@@ -1903,11 +1903,11 @@ private:
};
TZDBNameSearchHandler::TZDBNameSearchHandler(uint32_t types, const char* region)
-: fTypes(types), fMaxMatchLen(0), fResults(NULL), fRegion(region) {
+: fTypes(types), fMaxMatchLen(0), fResults(nullptr), fRegion(region) {
}
TZDBNameSearchHandler::~TZDBNameSearchHandler() {
- if (fResults != NULL) {
+ if (fResults != nullptr) {
delete fResults;
}
}
@@ -1918,14 +1918,14 @@ TZDBNameSearchHandler::handleMatch(int32_t matchLength, const CharacterNode *nod
return false;
}
- TZDBNameInfo *match = NULL;
- TZDBNameInfo *defaultRegionMatch = NULL;
+ TZDBNameInfo *match = nullptr;
+ TZDBNameInfo *defaultRegionMatch = nullptr;
if (node->hasValues()) {
int32_t valuesCount = node->countValues();
for (int32_t i = 0; i < valuesCount; i++) {
TZDBNameInfo *ninfo = (TZDBNameInfo *)node->getValue(i);
- if (ninfo == NULL) {
+ if (ninfo == nullptr) {
continue;
}
if ((ninfo->type & fTypes) != 0) {
@@ -1936,10 +1936,10 @@ TZDBNameSearchHandler::handleMatch(int32_t matchLength, const CharacterNode *nod
// multiple results returned for the same time zone type.
// For this reason, this implementation resolve one among same
// zone type with a same name at this level.
- if (ninfo->parseRegions == NULL) {
+ if (ninfo->parseRegions == nullptr) {
// parseRegions == null means this is the default metazone
// mapping for the abbreviation.
- if (defaultRegionMatch == NULL) {
+ if (defaultRegionMatch == nullptr) {
match = defaultRegionMatch = ninfo;
}
} else {
@@ -1960,14 +1960,14 @@ TZDBNameSearchHandler::handleMatch(int32_t matchLength, const CharacterNode *nod
if (matchRegion) {
break;
}
- if (match == NULL) {
+ if (match == nullptr) {
match = ninfo;
}
}
}
}
- if (match != NULL) {
+ if (match != nullptr) {
UTimeZoneNameType ntype = match->type;
// Note: Workaround for duplicated standard/daylight names
// The tz database contains a few zones sharing a
@@ -1988,15 +1988,15 @@ TZDBNameSearchHandler::handleMatch(int32_t matchLength, const CharacterNode *nod
ntype = UTZNM_SHORT_GENERIC;
}
- if (fResults == NULL) {
+ if (fResults == nullptr) {
fResults = new TimeZoneNames::MatchInfoCollection();
- if (fResults == NULL) {
+ if (fResults == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
}
}
if (U_SUCCESS(status)) {
- U_ASSERT(fResults != NULL);
- U_ASSERT(match->mzID != NULL);
+ U_ASSERT(fResults != nullptr);
+ U_ASSERT(match->mzID != nullptr);
fResults->addMetaZone(ntype, matchLength, UnicodeString(match->mzID, -1), status);
if (U_SUCCESS(status) && matchLength > fMaxMatchLen) {
fMaxMatchLen = matchLength;
@@ -2014,7 +2014,7 @@ TZDBNameSearchHandler::getMatches(int32_t& maxMatchLen) {
maxMatchLen = fMaxMatchLen;
// reset
- fResults = NULL;
+ fResults = nullptr;
fMaxMatchLen = 0;
return results;
}
@@ -2031,9 +2031,9 @@ deleteTZDBNames(void *obj) {
}
static void U_CALLCONV initTZDBNamesMap(UErrorCode &status) {
- gTZDBNamesMap = uhash_open(uhash_hashUChars, uhash_compareUChars, NULL, &status);
+ gTZDBNamesMap = uhash_open(uhash_hashUChars, uhash_compareUChars, nullptr, &status);
if (U_FAILURE(status)) {
- gTZDBNamesMap = NULL;
+ gTZDBNamesMap = nullptr;
return;
}
// no key deleters for tzdb name maps
@@ -2046,7 +2046,7 @@ static void U_CALLCONV initTZDBNamesMap(UErrorCode &status) {
*/
static void U_CALLCONV
deleteTZDBNameInfo(void *obj) {
- if (obj != NULL) {
+ if (obj != nullptr) {
uprv_free(obj);
}
}
@@ -2056,7 +2056,7 @@ static void U_CALLCONV prepareFind(UErrorCode &status) {
return;
}
gTZDBNamesTrie = new TextTrieMap(true, deleteTZDBNameInfo);
- if (gTZDBNamesTrie == NULL) {
+ if (gTZDBNamesTrie == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -2069,12 +2069,12 @@ static void U_CALLCONV prepareFind(UErrorCode &status) {
if (U_FAILURE(status)) {
break;
}
- if (names == NULL) {
+ if (names == nullptr) {
continue;
}
- const UChar *std = names->getName(UTZNM_SHORT_STANDARD);
- const UChar *dst = names->getName(UTZNM_SHORT_DAYLIGHT);
- if (std == NULL && dst == NULL) {
+ const char16_t *std = names->getName(UTZNM_SHORT_STANDARD);
+ const char16_t *dst = names->getName(UTZNM_SHORT_DAYLIGHT);
+ if (std == nullptr && dst == nullptr) {
continue;
}
int32_t numRegions = 0;
@@ -2085,12 +2085,12 @@ static void U_CALLCONV prepareFind(UErrorCode &status) {
// time. For example, Australia/Sydney observes DST,
// but "EST" is used for both standard and daylight.
// we need to store the information for later processing.
- UBool ambiguousType = (std != NULL && dst != NULL && u_strcmp(std, dst) == 0);
+ UBool ambiguousType = (std != nullptr && dst != nullptr && u_strcmp(std, dst) == 0);
- const UChar *uMzID = ZoneMeta::findMetaZoneID(*mzID);
- if (std != NULL) {
+ const char16_t *uMzID = ZoneMeta::findMetaZoneID(*mzID);
+ if (std != nullptr) {
TZDBNameInfo *stdInf = (TZDBNameInfo *)uprv_malloc(sizeof(TZDBNameInfo));
- if (stdInf == NULL) {
+ if (stdInf == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
break;
}
@@ -2101,9 +2101,9 @@ static void U_CALLCONV prepareFind(UErrorCode &status) {
stdInf->nRegions = numRegions;
gTZDBNamesTrie->put(std, stdInf, status);
}
- if (U_SUCCESS(status) && dst != NULL) {
+ if (U_SUCCESS(status) && dst != nullptr) {
TZDBNameInfo *dstInf = (TZDBNameInfo *)uprv_malloc(sizeof(TZDBNameInfo));
- if (dstInf == NULL) {
+ if (dstInf == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
break;
}
@@ -2120,7 +2120,7 @@ static void U_CALLCONV prepareFind(UErrorCode &status) {
if (U_FAILURE(status)) {
delete gTZDBNamesTrie;
- gTZDBNamesTrie = NULL;
+ gTZDBNamesTrie = nullptr;
return;
}
@@ -2203,9 +2203,9 @@ TZDBTimeZoneNames::getMetaZoneDisplayName(const UnicodeString& mzID,
UErrorCode status = U_ZERO_ERROR;
const TZDBNames *tzdbNames = TZDBTimeZoneNames::getMetaZoneNames(mzID, status);
if (U_SUCCESS(status)) {
- if (tzdbNames != NULL) {
- const UChar *s = tzdbNames->getName(type);
- if (s != NULL) {
+ if (tzdbNames != nullptr) {
+ const char16_t *s = tzdbNames->getName(type);
+ if (s != nullptr) {
name.setTo(true, s, -1);
}
}
@@ -2225,13 +2225,13 @@ TZDBTimeZoneNames::MatchInfoCollection*
TZDBTimeZoneNames::find(const UnicodeString& text, int32_t start, uint32_t types, UErrorCode& status) const {
umtx_initOnce(gTZDBNamesTrieInitOnce, &prepareFind, status);
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
TZDBNameSearchHandler handler(types, fRegion);
gTZDBNamesTrie->search(text, start, (TextTrieMapSearchResultHandler *)&handler, status);
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
int32_t maxLen = 0;
return handler.getMatches(maxLen);
@@ -2241,12 +2241,12 @@ const TZDBNames*
TZDBTimeZoneNames::getMetaZoneNames(const UnicodeString& mzID, UErrorCode& status) {
umtx_initOnce(gTZDBNamesMapInitOnce, &initTZDBNamesMap, status);
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
- TZDBNames* tzdbNames = NULL;
+ TZDBNames* tzdbNames = nullptr;
- UChar mzIDKey[ZID_KEY_MAX + 1];
+ char16_t mzIDKey[ZID_KEY_MAX + 1];
mzID.extract(mzIDKey, ZID_KEY_MAX + 1, status);
U_ASSERT(status == U_ZERO_ERROR); // already checked length above
mzIDKey[mzID.length()] = 0;
@@ -2255,7 +2255,7 @@ TZDBTimeZoneNames::getMetaZoneNames(const UnicodeString& mzID, UErrorCode& statu
umtx_lock(&gTZDBNamesMapLock);
{
void *cacheVal = uhash_get(gTZDBNamesMap, mzIDKey);
- if (cacheVal == NULL) {
+ if (cacheVal == nullptr) {
UResourceBundle *zoneStringsRes = ures_openDirect(U_ICUDATA_ZONE, "tzdbNames", &status);
zoneStringsRes = ures_getByKey(zoneStringsRes, gZoneStrings, zoneStringsRes, &status);
if (U_SUCCESS(status)) {
@@ -2263,7 +2263,7 @@ TZDBTimeZoneNames::getMetaZoneNames(const UnicodeString& mzID, UErrorCode& statu
mergeTimeZoneKey(mzID, key);
tzdbNames = TZDBNames::createInstance(zoneStringsRes, key);
- if (tzdbNames == NULL) {
+ if (tzdbNames == nullptr) {
cacheVal = (void *)EMPTY;
} else {
cacheVal = tzdbNames;
@@ -2272,21 +2272,21 @@ TZDBTimeZoneNames::getMetaZoneNames(const UnicodeString& mzID, UErrorCode& statu
// avoid duplications.
// TODO: Is there a more efficient way, like intern() in Java?
void* newKey = (void*) ZoneMeta::findMetaZoneID(mzID);
- if (newKey != NULL) {
+ if (newKey != nullptr) {
uhash_put(gTZDBNamesMap, newKey, cacheVal, &status);
if (U_FAILURE(status)) {
- if (tzdbNames != NULL) {
+ if (tzdbNames != nullptr) {
delete tzdbNames;
- tzdbNames = NULL;
+ tzdbNames = nullptr;
}
}
} else {
// Should never happen with a valid input
- if (tzdbNames != NULL) {
+ if (tzdbNames != nullptr) {
// It's not possible that we get a valid tzdbNames with unknown ID.
// But just in case..
delete tzdbNames;
- tzdbNames = NULL;
+ tzdbNames = nullptr;
}
}
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/tznames_impl.h b/Build/source/libs/icu/icu-src/source/i18n/tznames_impl.h
index d047fa35418..8ca2f84e73d 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/tznames_impl.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/tznames_impl.h
@@ -33,7 +33,7 @@
U_NAMESPACE_BEGIN
/*
- * ZNStringPool Pool of (UChar *) strings. Provides for sharing of repeated
+ * ZNStringPool Pool of (char16_t *) strings. Provides for sharing of repeated
* zone strings.
*/
struct ZNStringPoolChunk;
@@ -47,17 +47,17 @@ class U_I18N_API ZNStringPool: public UMemory {
*
* Life time of the returned string is that of the pool.
*/
- const UChar *get(const UChar *s, UErrorCode &status);
+ const char16_t *get(const char16_t *s, UErrorCode &status);
/* Get the pooled string that is equal to the supplied string s.
* Copy the string into the pool if it is not already present.
*/
- const UChar *get(const UnicodeString &s, UErrorCode &status);
+ const char16_t *get(const UnicodeString &s, UErrorCode &status);
/* Adopt a string into the pool, without copying it.
* Used for strings from resource bundles, which will persist without copying.
*/
- const UChar *adopt(const UChar *s, UErrorCode &status);
+ const char16_t *adopt(const char16_t *s, UErrorCode &status);
/* Freeze the string pool. Discards the hash table that is used
* for looking up a string. All pointers to pooled strings remain valid.
@@ -86,24 +86,24 @@ struct CharacterNode {
inline const void *getValue(int32_t index) const;
void *fValues; // Union of one single value vs. UVector of values.
- UChar fCharacter; // UTF-16 code unit.
+ char16_t fCharacter; // UTF-16 code unit.
uint16_t fFirstChild; // 0 if no children.
uint16_t fNextSibling; // 0 terminates the list.
UBool fHasValuesVector;
UBool fPadding;
- // No value: fValues == NULL and fHasValuesVector == false
+ // No value: fValues == nullptr and fHasValuesVector == false
// One value: fValues == value and fHasValuesVector == false
// >=2 values: fValues == UVector of values and fHasValuesVector == true
};
inline UBool CharacterNode::hasValues() const {
- return (UBool)(fValues != NULL);
+ return (UBool)(fValues != nullptr);
}
inline int32_t CharacterNode::countValues() const {
return
- fValues == NULL ? 0 :
+ fValues == nullptr ? 0 :
!fHasValuesVector ? 1 :
((const UVector *)fValues)->size();
}
@@ -136,7 +136,7 @@ public:
virtual ~TextTrieMap();
void put(const UnicodeString &key, void *value, ZNStringPool &sp, UErrorCode &status);
- void put(const UChar*, void *value, UErrorCode &status);
+ void put(const char16_t*, void *value, UErrorCode &status);
void search(const UnicodeString &text, int32_t start,
TextTrieMapSearchResultHandler *handler, UErrorCode& status) const;
int32_t isEmpty() const;
@@ -152,8 +152,8 @@ private:
UObjectDeleter *fValueDeleter;
UBool growNodes();
- CharacterNode* addChildNode(CharacterNode *parent, UChar c, UErrorCode &status);
- CharacterNode* getChildNode(CharacterNode *parent, UChar c) const;
+ CharacterNode* addChildNode(CharacterNode *parent, char16_t c, UErrorCode &status);
+ CharacterNode* getChildNode(CharacterNode *parent, char16_t c) const;
void putImpl(const UnicodeString &key, void *value, UErrorCode &status);
void buildTrie(UErrorCode &status);
@@ -249,7 +249,7 @@ public:
TimeZoneNames::MatchInfoCollection* find(const UnicodeString& text, int32_t start, uint32_t types, UErrorCode& status) const override;
- // When TZDBNames for the metazone is not available, this method returns NULL,
+ // When TZDBNames for the metazone is not available, this method returns nullptr,
// but does NOT set U_MISSING_RESOURCE_ERROR to status.
static const TZDBNames* getMetaZoneNames(const UnicodeString& mzId, UErrorCode& status);
diff --git a/Build/source/libs/icu/icu-src/source/i18n/tzrule.cpp b/Build/source/libs/icu/icu-src/source/i18n/tzrule.cpp
index a98ecc8086b..a3522f1d8b2 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/tzrule.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/tzrule.cpp
@@ -74,12 +74,12 @@ TimeZoneRule::getName(UnicodeString& name) const {
}
int32_t
-TimeZoneRule::getRawOffset(void) const {
+TimeZoneRule::getRawOffset() const {
return fRawOffset;
}
int32_t
-TimeZoneRule::getDSTSavings(void) const {
+TimeZoneRule::getDSTSavings() const {
return fDSTSavings;
}
@@ -210,7 +210,7 @@ AnnualTimeZoneRule::~AnnualTimeZoneRule() {
}
AnnualTimeZoneRule*
-AnnualTimeZoneRule::clone(void) const {
+AnnualTimeZoneRule::clone() const {
return new AnnualTimeZoneRule(*this);
}
@@ -406,7 +406,7 @@ TimeArrayTimeZoneRule::TimeArrayTimeZoneRule(const UnicodeString& name,
int32_t numStartTimes,
DateTimeRule::TimeRuleType timeRuleType)
: TimeZoneRule(name, rawOffset, dstSavings), fTimeRuleType(timeRuleType),
- fStartTimes(NULL) {
+ fStartTimes(nullptr) {
UErrorCode status = U_ZERO_ERROR;
initStartTimes(startTimes, numStartTimes, status);
//TODO - status?
@@ -414,7 +414,7 @@ TimeArrayTimeZoneRule::TimeArrayTimeZoneRule(const UnicodeString& name,
TimeArrayTimeZoneRule::TimeArrayTimeZoneRule(const TimeArrayTimeZoneRule& source)
-: TimeZoneRule(source), fTimeRuleType(source.fTimeRuleType), fStartTimes(NULL) {
+: TimeZoneRule(source), fTimeRuleType(source.fTimeRuleType), fStartTimes(nullptr) {
UErrorCode status = U_ZERO_ERROR;
initStartTimes(source.fStartTimes, source.fNumStartTimes, status);
//TODO - status?
@@ -422,13 +422,13 @@ TimeArrayTimeZoneRule::TimeArrayTimeZoneRule(const TimeArrayTimeZoneRule& source
TimeArrayTimeZoneRule::~TimeArrayTimeZoneRule() {
- if (fStartTimes != NULL && fStartTimes != fLocalStartTimes) {
+ if (fStartTimes != nullptr && fStartTimes != fLocalStartTimes) {
uprv_free(fStartTimes);
}
}
TimeArrayTimeZoneRule*
-TimeArrayTimeZoneRule::clone(void) const {
+TimeArrayTimeZoneRule::clone() const {
return new TimeArrayTimeZoneRule(*this);
}
@@ -475,7 +475,7 @@ TimeArrayTimeZoneRule::operator!=(const TimeZoneRule& that) const {
}
DateTimeRule::TimeRuleType
-TimeArrayTimeZoneRule::getTimeType(void) const {
+TimeArrayTimeZoneRule::getTimeType() const {
return fTimeRuleType;
}
@@ -489,7 +489,7 @@ TimeArrayTimeZoneRule::getStartTimeAt(int32_t index, UDate& result) const {
}
int32_t
-TimeArrayTimeZoneRule::countStartTimes(void) const {
+TimeArrayTimeZoneRule::countStartTimes() const {
return fNumStartTimes;
}
@@ -521,7 +521,7 @@ UBool
TimeArrayTimeZoneRule::getFirstStart(int32_t prevRawOffset,
int32_t prevDSTSavings,
UDate& result) const {
- if (fNumStartTimes <= 0 || fStartTimes == NULL) {
+ if (fNumStartTimes <= 0 || fStartTimes == nullptr) {
return false;
}
result = getUTC(fStartTimes[0], prevRawOffset, prevDSTSavings);
@@ -532,7 +532,7 @@ UBool
TimeArrayTimeZoneRule::getFinalStart(int32_t prevRawOffset,
int32_t prevDSTSavings,
UDate& result) const {
- if (fNumStartTimes <= 0 || fStartTimes == NULL) {
+ if (fNumStartTimes <= 0 || fStartTimes == nullptr) {
return false;
}
result = getUTC(fStartTimes[fNumStartTimes - 1], prevRawOffset, prevDSTSavings);
@@ -582,13 +582,13 @@ TimeArrayTimeZoneRule::getPreviousStart(UDate base,
UBool
TimeArrayTimeZoneRule::initStartTimes(const UDate source[], int32_t size, UErrorCode& status) {
// Free old array
- if (fStartTimes != NULL && fStartTimes != fLocalStartTimes) {
+ if (fStartTimes != nullptr && fStartTimes != fLocalStartTimes) {
uprv_free(fStartTimes);
}
// Allocate new one if needed
if (size > TIMEARRAY_STACK_BUFFER_SIZE) {
fStartTimes = (UDate*)uprv_malloc(sizeof(UDate)*size);
- if (fStartTimes == NULL) {
+ if (fStartTimes == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
fNumStartTimes = 0;
return false;
@@ -599,9 +599,9 @@ TimeArrayTimeZoneRule::initStartTimes(const UDate source[], int32_t size, UError
uprv_memcpy(fStartTimes, source, sizeof(UDate)*size);
fNumStartTimes = size;
// Sort dates
- uprv_sortArray(fStartTimes, fNumStartTimes, (int32_t)sizeof(UDate), compareDates, NULL, true, &status);
+ uprv_sortArray(fStartTimes, fNumStartTimes, (int32_t)sizeof(UDate), compareDates, nullptr, true, &status);
if (U_FAILURE(status)) {
- if (fStartTimes != NULL && fStartTimes != fLocalStartTimes) {
+ if (fStartTimes != nullptr && fStartTimes != fLocalStartTimes) {
uprv_free(fStartTimes);
}
fNumStartTimes = 0;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/tztrans.cpp b/Build/source/libs/icu/icu-src/source/i18n/tztrans.cpp
index 900e4be5408..dbce3422020 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/tztrans.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/tztrans.cpp
@@ -25,31 +25,31 @@ TimeZoneTransition::TimeZoneTransition(UDate time, const TimeZoneRule& from, con
}
TimeZoneTransition::TimeZoneTransition()
-: UObject(), fTime(0), fFrom(NULL), fTo(NULL) {
+: UObject(), fTime(0), fFrom(nullptr), fTo(nullptr) {
}
TimeZoneTransition::TimeZoneTransition(const TimeZoneTransition& source)
-: UObject(), fTime(source.fTime), fFrom(NULL), fTo(NULL) {
- if (source.fFrom != NULL) {
+: UObject(), fTime(source.fTime), fFrom(nullptr), fTo(nullptr) {
+ if (source.fFrom != nullptr) {
fFrom = source.fFrom->clone();
}
- if (source.fTo != NULL) {
+ if (source.fTo != nullptr) {
fTo = source.fTo->clone();
}
}
TimeZoneTransition::~TimeZoneTransition() {
- if (fFrom != NULL) {
+ if (fFrom != nullptr) {
delete fFrom;
}
- if (fTo != NULL) {
+ if (fTo != nullptr) {
delete fTo;
}
}
TimeZoneTransition*
-TimeZoneTransition::clone(void) const {
+TimeZoneTransition::clone() const {
return new TimeZoneTransition(*this);
}
@@ -74,10 +74,10 @@ TimeZoneTransition::operator==(const TimeZoneTransition& that) const {
if (fTime != that.fTime) {
return false;
}
- if ((fFrom == NULL && that.fFrom == NULL)
- || (fFrom != NULL && that.fFrom != NULL && *fFrom == *(that.fFrom))) {
- if ((fTo == NULL && that.fTo == NULL)
- || (fTo != NULL && that.fTo != NULL && *fTo == *(that.fTo))) {
+ if ((fFrom == nullptr && that.fFrom == nullptr)
+ || (fFrom != nullptr && that.fFrom != nullptr && *fFrom == *(that.fFrom))) {
+ if ((fTo == nullptr && that.fTo == nullptr)
+ || (fTo != nullptr && that.fTo != nullptr && *fTo == *(that.fTo))) {
return true;
}
}
@@ -96,7 +96,7 @@ TimeZoneTransition::setTime(UDate time) {
void
TimeZoneTransition::setFrom(const TimeZoneRule& from) {
- if (fFrom != NULL) {
+ if (fFrom != nullptr) {
delete fFrom;
}
fFrom = from.clone();
@@ -104,7 +104,7 @@ TimeZoneTransition::setFrom(const TimeZoneRule& from) {
void
TimeZoneTransition::adoptFrom(TimeZoneRule* from) {
- if (fFrom != NULL) {
+ if (fFrom != nullptr) {
delete fFrom;
}
fFrom = from;
@@ -112,7 +112,7 @@ TimeZoneTransition::adoptFrom(TimeZoneRule* from) {
void
TimeZoneTransition::setTo(const TimeZoneRule& to) {
- if (fTo != NULL) {
+ if (fTo != nullptr) {
delete fTo;
}
fTo = to.clone();
@@ -120,24 +120,24 @@ TimeZoneTransition::setTo(const TimeZoneRule& to) {
void
TimeZoneTransition::adoptTo(TimeZoneRule* to) {
- if (fTo != NULL) {
+ if (fTo != nullptr) {
delete fTo;
}
fTo = to;
}
UDate
-TimeZoneTransition::getTime(void) const {
+TimeZoneTransition::getTime() const {
return fTime;
}
const TimeZoneRule*
-TimeZoneTransition::getTo(void) const {
+TimeZoneTransition::getTo() const {
return fTo;
}
const TimeZoneRule*
-TimeZoneTransition::getFrom(void) const {
+TimeZoneTransition::getFrom() const {
return fFrom;
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/ucal.cpp b/Build/source/libs/icu/icu-src/source/i18n/ucal.cpp
index 36fe9b8f8a9..dfc8e4f2511 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/ucal.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/ucal.cpp
@@ -24,6 +24,7 @@
#include "unicode/localpointer.h"
#include "cmemory.h"
#include "cstring.h"
+#include "iso8601cal.h"
#include "ustrenum.h"
#include "uenumimp.h"
#include "ulist.h"
@@ -32,7 +33,7 @@
U_NAMESPACE_USE
static TimeZone*
-_createTimeZone(const UChar* zoneID, int32_t len, UErrorCode* ec) {
+_createTimeZone(const char16_t* zoneID, int32_t len, UErrorCode* ec) {
TimeZone* zone = nullptr;
if (ec != nullptr && U_SUCCESS(*ec)) {
// Note that if zoneID is invalid, we get back GMT. This odd
@@ -67,7 +68,7 @@ ucal_openCountryTimeZones(const char* country, UErrorCode* ec) {
}
U_CAPI int32_t U_EXPORT2
-ucal_getDefaultTimeZone(UChar* result, int32_t resultCapacity, UErrorCode* ec) {
+ucal_getDefaultTimeZone(char16_t* result, int32_t resultCapacity, UErrorCode* ec) {
int32_t len = 0;
if (ec != nullptr && U_SUCCESS(*ec)) {
TimeZone* zone = TimeZone::createDefault();
@@ -84,7 +85,7 @@ ucal_getDefaultTimeZone(UChar* result, int32_t resultCapacity, UErrorCode* ec) {
}
U_CAPI void U_EXPORT2
-ucal_setDefaultTimeZone(const UChar* zoneID, UErrorCode* ec) {
+ucal_setDefaultTimeZone(const char16_t* zoneID, UErrorCode* ec) {
TimeZone* zone = _createTimeZone(zoneID, -1, ec);
if (zone != nullptr) {
TimeZone::adoptDefault(zone);
@@ -92,7 +93,7 @@ ucal_setDefaultTimeZone(const UChar* zoneID, UErrorCode* ec) {
}
U_CAPI int32_t U_EXPORT2
-ucal_getHostTimeZone(UChar* result, int32_t resultCapacity, UErrorCode* ec) {
+ucal_getHostTimeZone(char16_t* result, int32_t resultCapacity, UErrorCode* ec) {
int32_t len = 0;
if (ec != nullptr && U_SUCCESS(*ec)) {
TimeZone *zone = TimeZone::detectHostTimeZone();
@@ -109,7 +110,7 @@ ucal_getHostTimeZone(UChar* result, int32_t resultCapacity, UErrorCode* ec) {
}
U_CAPI int32_t U_EXPORT2
-ucal_getDSTSavings(const UChar* zoneID, UErrorCode* ec) {
+ucal_getDSTSavings(const char16_t* zoneID, UErrorCode* ec) {
int32_t result = 0;
TimeZone* zone = _createTimeZone(zoneID, -1, ec);
if (U_SUCCESS(*ec)) {
@@ -148,7 +149,7 @@ ucal_getNow()
#define ULOC_LOCALE_IDENTIFIER_CAPACITY (ULOC_FULLNAME_CAPACITY + 1 + ULOC_KEYWORD_AND_VALUES_CAPACITY)
U_CAPI UCalendar* U_EXPORT2
-ucal_open( const UChar* zoneID,
+ucal_open( const char16_t* zoneID,
int32_t len,
const char* locale,
UCalendarType caltype,
@@ -211,7 +212,7 @@ ucal_clone(const UCalendar* cal,
U_CAPI void U_EXPORT2
ucal_setTimeZone( UCalendar* cal,
- const UChar* zoneID,
+ const char16_t* zoneID,
int32_t len,
UErrorCode *status)
{
@@ -229,7 +230,7 @@ ucal_setTimeZone( UCalendar* cal,
U_CAPI int32_t U_EXPORT2
ucal_getTimeZoneID(const UCalendar *cal,
- UChar *result,
+ char16_t *result,
int32_t resultLength,
UErrorCode *status)
{
@@ -246,7 +247,7 @@ U_CAPI int32_t U_EXPORT2
ucal_getTimeZoneDisplayName(const UCalendar* cal,
UCalendarDisplayNameType type,
const char *locale,
- UChar* result,
+ char16_t* result,
int32_t resultLength,
UErrorCode* status)
{
@@ -307,7 +308,8 @@ ucal_setGregorianChange(UCalendar *cal, UDate date, UErrorCode *pErrorCode) {
*pErrorCode = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
- if(typeid(*cpp_cal) != typeid(GregorianCalendar)) {
+ if(typeid(*cpp_cal) != typeid(GregorianCalendar) &&
+ typeid(*cpp_cal) != typeid(ISO8601Calendar)) {
*pErrorCode = U_UNSUPPORTED_ERROR;
return;
}
@@ -329,7 +331,8 @@ ucal_getGregorianChange(const UCalendar *cal, UErrorCode *pErrorCode) {
*pErrorCode = U_ILLEGAL_ARGUMENT_ERROR;
return (UDate)0;
}
- if(typeid(*cpp_cal) != typeid(GregorianCalendar)) {
+ if(typeid(*cpp_cal) != typeid(GregorianCalendar) &&
+ typeid(*cpp_cal) != typeid(ISO8601Calendar)) {
*pErrorCode = U_UNSUPPORTED_ERROR;
return (UDate)0;
}
@@ -338,9 +341,7 @@ ucal_getGregorianChange(const UCalendar *cal, UErrorCode *pErrorCode) {
U_CAPI int32_t U_EXPORT2
ucal_getAttribute( const UCalendar* cal,
- UCalendarAttribute attr)
-{
-
+ UCalendarAttribute attr) UPRV_NO_SANITIZE_UNDEFINED {
switch(attr) {
case UCAL_LENIENT:
return ((Calendar*)cal)->isLenient();
@@ -468,10 +469,12 @@ U_CAPI void U_EXPORT2
ucal_add( UCalendar* cal,
UCalendarDateFields field,
int32_t amount,
- UErrorCode* status)
-{
-
+ UErrorCode* status) UPRV_NO_SANITIZE_UNDEFINED {
if(U_FAILURE(*status)) return;
+ if (field < 0 || UCAL_FIELD_COUNT <= field) {
+ *status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
((Calendar*)cal)->add(field, amount, *status);
}
@@ -480,10 +483,12 @@ U_CAPI void U_EXPORT2
ucal_roll( UCalendar* cal,
UCalendarDateFields field,
int32_t amount,
- UErrorCode* status)
-{
-
+ UErrorCode* status) UPRV_NO_SANITIZE_UNDEFINED {
if(U_FAILURE(*status)) return;
+ if (field < 0 || UCAL_FIELD_COUNT <= field) {
+ *status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
((Calendar*)cal)->roll(field, amount, *status);
}
@@ -491,10 +496,12 @@ ucal_roll( UCalendar* cal,
U_CAPI int32_t U_EXPORT2
ucal_get( const UCalendar* cal,
UCalendarDateFields field,
- UErrorCode* status )
-{
-
+ UErrorCode* status ) UPRV_NO_SANITIZE_UNDEFINED {
if(U_FAILURE(*status)) return -1;
+ if (field < 0 || UCAL_FIELD_COUNT <= field) {
+ *status = U_ILLEGAL_ARGUMENT_ERROR;
+ return -1;
+ }
return ((Calendar*)cal)->get(field, *status);
}
@@ -502,24 +509,30 @@ ucal_get( const UCalendar* cal,
U_CAPI void U_EXPORT2
ucal_set( UCalendar* cal,
UCalendarDateFields field,
- int32_t value)
-{
+ int32_t value) UPRV_NO_SANITIZE_UNDEFINED {
+ if (field < 0 || UCAL_FIELD_COUNT <= field) {
+ return;
+ }
((Calendar*)cal)->set(field, value);
}
U_CAPI UBool U_EXPORT2
ucal_isSet( const UCalendar* cal,
- UCalendarDateFields field)
-{
+ UCalendarDateFields field) UPRV_NO_SANITIZE_UNDEFINED {
+ if (field < 0 || UCAL_FIELD_COUNT <= field) {
+ return false;
+ }
return ((Calendar*)cal)->isSet(field);
}
U_CAPI void U_EXPORT2
ucal_clearField( UCalendar* cal,
- UCalendarDateFields field)
-{
+ UCalendarDateFields field) UPRV_NO_SANITIZE_UNDEFINED {
+ if (field < 0 || UCAL_FIELD_COUNT <= field) {
+ return;
+ }
((Calendar*)cal)->clear(field);
}
@@ -535,12 +548,14 @@ U_CAPI int32_t U_EXPORT2
ucal_getLimit( const UCalendar* cal,
UCalendarDateFields field,
UCalendarLimitType type,
- UErrorCode *status)
-{
-
+ UErrorCode *status) UPRV_NO_SANITIZE_UNDEFINED {
if(status==0 || U_FAILURE(*status)) {
return -1;
}
+ if (field < 0 || UCAL_FIELD_COUNT <= field) {
+ *status = U_ILLEGAL_ARGUMENT_ERROR;
+ return -1;
+ }
switch(type) {
case UCAL_MINIMUM:
@@ -588,8 +603,8 @@ ucal_getTZDataVersion(UErrorCode* status)
}
U_CAPI int32_t U_EXPORT2
-ucal_getCanonicalTimeZoneID(const UChar* id, int32_t len,
- UChar* result, int32_t resultCapacity, UBool *isSystemID, UErrorCode* status) {
+ucal_getCanonicalTimeZoneID(const char16_t* id, int32_t len,
+ char16_t* result, int32_t resultCapacity, UBool *isSystemID, UErrorCode* status) {
if(status == 0 || U_FAILURE(*status)) {
return 0;
}
@@ -613,6 +628,16 @@ ucal_getCanonicalTimeZoneID(const UChar* id, int32_t len,
return reslen;
}
+U_DRAFT int32_t U_EXPORT2
+ucal_getIanaTimeZoneID(const char16_t* id, int32_t len,
+ char16_t* result, int32_t resultCapacity, UErrorCode* status)
+{
+ UnicodeString ianaID;
+ TimeZone::getIanaID(UnicodeString(id, len), ianaID, *status);
+ return ianaID.extract(result, resultCapacity, *status);
+}
+
+
U_CAPI const char * U_EXPORT2
ucal_getType(const UCalendar *cal, UErrorCode* status)
{
@@ -715,7 +740,7 @@ ucal_getKeywordValuesForLocale(const char * /* key */, const char* locale, UBool
if (U_SUCCESS(*status)) {
for (int i = 0; i < ures_getSize(order); i++) {
int32_t len;
- const UChar *type = ures_getStringByIndex(order, i, &len, status);
+ const char16_t *type = ures_getStringByIndex(order, i, &len, status);
char *caltype = (char*)uprv_malloc(len + 1);
if (caltype == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
@@ -793,7 +818,7 @@ ucal_getTimeZoneTransitionDate(const UCalendar* cal, UTimeZoneTransitionType typ
}
U_CAPI int32_t U_EXPORT2
-ucal_getWindowsTimeZoneID(const UChar* id, int32_t len, UChar* winid, int32_t winidCapacity, UErrorCode* status) {
+ucal_getWindowsTimeZoneID(const char16_t* id, int32_t len, char16_t* winid, int32_t winidCapacity, UErrorCode* status) {
if (U_FAILURE(*status)) {
return 0;
}
@@ -811,7 +836,7 @@ ucal_getWindowsTimeZoneID(const UChar* id, int32_t len, UChar* winid, int32_t wi
}
U_CAPI int32_t U_EXPORT2
-ucal_getTimeZoneIDForWindowsID(const UChar* winid, int32_t len, const char* region, UChar* id, int32_t idCapacity, UErrorCode* status) {
+ucal_getTimeZoneIDForWindowsID(const char16_t* winid, int32_t len, const char* region, char16_t* id, int32_t idCapacity, UErrorCode* status) {
if (U_FAILURE(*status)) {
return 0;
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/ucln_in.cpp b/Build/source/libs/icu/icu-src/source/i18n/ucln_in.cpp
index cdbd16a65e5..a67487bcc6c 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/ucln_in.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/ucln_in.cpp
@@ -30,7 +30,7 @@ static const char copyright[] = U_COPYRIGHT_STRING;
static cleanupFunc *gCleanupFunctions[UCLN_I18N_COUNT];
-static UBool U_CALLCONV i18n_cleanup(void)
+static UBool U_CALLCONV i18n_cleanup()
{
int32_t libType = UCLN_I18N_START;
(void)copyright; /* Suppress unused variable warning with clang. */
@@ -39,7 +39,7 @@ static UBool U_CALLCONV i18n_cleanup(void)
if (gCleanupFunctions[libType])
{
gCleanupFunctions[libType]();
- gCleanupFunctions[libType] = NULL;
+ gCleanupFunctions[libType] = nullptr;
}
}
#if !UCLN_NO_AUTO_CLEANUP && (defined(UCLN_AUTO_ATEXIT) || defined(UCLN_AUTO_LOCAL))
diff --git a/Build/source/libs/icu/icu-src/source/i18n/ucol.cpp b/Build/source/libs/icu/icu-src/source/i18n/ucol.cpp
index 8e1df8d5577..7c9fb00bf3f 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/ucol.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/ucol.cpp
@@ -43,18 +43,18 @@ ucol_openBinary(const uint8_t *bin, int32_t length,
const UCollator *base,
UErrorCode *status)
{
- if(U_FAILURE(*status)) { return NULL; }
+ if(U_FAILURE(*status)) { return nullptr; }
RuleBasedCollator *coll = new RuleBasedCollator(
bin, length,
RuleBasedCollator::rbcFromUCollator(base),
*status);
- if(coll == NULL) {
+ if(coll == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
if(U_FAILURE(*status)) {
delete coll;
- return NULL;
+ return nullptr;
}
return coll->toUCollator();
}
@@ -68,7 +68,7 @@ ucol_cloneBinary(const UCollator *coll,
return 0;
}
const RuleBasedCollator *rbc = RuleBasedCollator::rbcFromUCollator(coll);
- if(rbc == NULL && coll != NULL) {
+ if(rbc == nullptr && coll != nullptr) {
*status = U_UNSUPPORTED_ERROR;
return 0;
}
@@ -78,25 +78,25 @@ ucol_cloneBinary(const UCollator *coll,
U_CAPI UCollator* U_EXPORT2
ucol_safeClone(const UCollator *coll, void * /*stackBuffer*/, int32_t * pBufferSize, UErrorCode *status)
{
- if (status == NULL || U_FAILURE(*status)){
- return NULL;
+ if (status == nullptr || U_FAILURE(*status)){
+ return nullptr;
}
- if (coll == NULL) {
+ if (coll == nullptr) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
- if (pBufferSize != NULL) {
+ if (pBufferSize != nullptr) {
int32_t inputSize = *pBufferSize;
*pBufferSize = 1;
if (inputSize == 0) {
- return NULL; // preflighting for deprecated functionality
+ return nullptr; // preflighting for deprecated functionality
}
}
Collator *newColl = Collator::fromUCollator(coll)->clone();
- if (newColl == NULL) {
+ if (newColl == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
return nullptr;
- } else if (pBufferSize != NULL) {
+ } else if (pBufferSize != nullptr) {
*status = U_SAFECLONE_ALLOCATED_WARNING;
}
return newColl->toUCollator();
@@ -113,7 +113,7 @@ ucol_close(UCollator *coll)
{
UTRACE_ENTRY_OC(UTRACE_UCOL_CLOSE);
UTRACE_DATA1(UTRACE_INFO, "coll = %p", coll);
- if(coll != NULL) {
+ if(coll != nullptr) {
delete Collator::fromUCollator(coll);
}
UTRACE_EXIT();
@@ -124,12 +124,12 @@ ucol_mergeSortkeys(const uint8_t *src1, int32_t src1Length,
const uint8_t *src2, int32_t src2Length,
uint8_t *dest, int32_t destCapacity) {
/* check arguments */
- if( src1==NULL || src1Length<-1 || src1Length==0 || (src1Length>0 && src1[src1Length-1]!=0) ||
- src2==NULL || src2Length<-1 || src2Length==0 || (src2Length>0 && src2[src2Length-1]!=0) ||
- destCapacity<0 || (destCapacity>0 && dest==NULL)
+ if( src1==nullptr || src1Length<-1 || src1Length==0 || (src1Length>0 && src1[src1Length-1]!=0) ||
+ src2==nullptr || src2Length<-1 || src2Length==0 || (src2Length>0 && src2[src2Length-1]!=0) ||
+ destCapacity<0 || (destCapacity>0 && dest==nullptr)
) {
/* error, attempt to write a zero byte and return 0 */
- if(dest!=NULL && destCapacity>0) {
+ if(dest!=nullptr && destCapacity>0) {
*dest=0;
}
return 0;
@@ -196,7 +196,7 @@ ucol_mergeSortkeys(const uint8_t *src1, int32_t src1Length,
U_CAPI int32_t U_EXPORT2
ucol_getSortKey(const UCollator *coll,
- const UChar *source,
+ const char16_t *source,
int32_t sourceLength,
uint8_t *result,
int32_t resultLength)
@@ -204,7 +204,7 @@ ucol_getSortKey(const UCollator *coll,
UTRACE_ENTRY(UTRACE_UCOL_GET_SORTKEY);
if (UTRACE_LEVEL(UTRACE_VERBOSE)) {
UTRACE_DATA3(UTRACE_VERBOSE, "coll=%p, source string = %vh ", coll, source,
- ((sourceLength==-1 && source!=NULL) ? u_strlen(source) : sourceLength));
+ ((sourceLength==-1 && source!=nullptr) ? u_strlen(source) : sourceLength));
}
int32_t keySize = Collator::fromUCollator(coll)->
@@ -223,7 +223,7 @@ ucol_nextSortKeyPart(const UCollator *coll,
UErrorCode *status)
{
/* error checking */
- if(status==NULL || U_FAILURE(*status)) {
+ if(status==nullptr || U_FAILURE(*status)) {
return 0;
}
UTRACE_ENTRY(UTRACE_UCOL_NEXTSORTKEYPART);
@@ -253,10 +253,10 @@ ucol_getBound(const uint8_t *source,
UErrorCode *status)
{
// consistency checks
- if(status == NULL || U_FAILURE(*status)) {
+ if(status == nullptr || U_FAILURE(*status)) {
return 0;
}
- if(source == NULL) {
+ if(source == nullptr) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -281,7 +281,7 @@ ucol_getBound(const uint8_t *source,
// enum will not changes. They are set so that the enum value
// corresponds to the number of extra bytes each bound type
// needs.
- if(result != NULL && resultLength >= sourceIndex+boundType) {
+ if(result != nullptr && resultLength >= sourceIndex+boundType) {
uprv_memcpy(result, source, sourceIndex);
switch(boundType) {
// Lower bound just gets terminated. No extra bytes
@@ -320,15 +320,15 @@ ucol_getMaxVariable(const UCollator *coll) {
}
U_CAPI uint32_t U_EXPORT2
-ucol_setVariableTop(UCollator *coll, const UChar *varTop, int32_t len, UErrorCode *status) {
- if(U_FAILURE(*status) || coll == NULL) {
+ucol_setVariableTop(UCollator *coll, const char16_t *varTop, int32_t len, UErrorCode *status) {
+ if(U_FAILURE(*status) || coll == nullptr) {
return 0;
}
return Collator::fromUCollator(coll)->setVariableTop(varTop, len, *status);
}
U_CAPI uint32_t U_EXPORT2 ucol_getVariableTop(const UCollator *coll, UErrorCode *status) {
- if(U_FAILURE(*status) || coll == NULL) {
+ if(U_FAILURE(*status) || coll == nullptr) {
return 0;
}
return Collator::fromUCollator(coll)->getVariableTop(*status);
@@ -336,7 +336,7 @@ U_CAPI uint32_t U_EXPORT2 ucol_getVariableTop(const UCollator *coll, UErrorCode
U_CAPI void U_EXPORT2
ucol_restoreVariableTop(UCollator *coll, const uint32_t varTop, UErrorCode *status) {
- if(U_FAILURE(*status) || coll == NULL) {
+ if(U_FAILURE(*status) || coll == nullptr) {
return;
}
Collator::fromUCollator(coll)->setVariableTop(varTop, *status);
@@ -344,7 +344,7 @@ ucol_restoreVariableTop(UCollator *coll, const uint32_t varTop, UErrorCode *stat
U_CAPI void U_EXPORT2
ucol_setAttribute(UCollator *coll, UColAttribute attr, UColAttributeValue value, UErrorCode *status) {
- if(U_FAILURE(*status) || coll == NULL) {
+ if(U_FAILURE(*status) || coll == nullptr) {
return;
}
@@ -353,7 +353,7 @@ ucol_setAttribute(UCollator *coll, UColAttribute attr, UColAttributeValue value,
U_CAPI UColAttributeValue U_EXPORT2
ucol_getAttribute(const UCollator *coll, UColAttribute attr, UErrorCode *status) {
- if(U_FAILURE(*status) || coll == NULL) {
+ if(U_FAILURE(*status) || coll == nullptr) {
return UCOL_DEFAULT;
}
@@ -427,7 +427,7 @@ ucol_strcollIter( const UCollator *coll,
UTRACE_ENTRY(UTRACE_UCOL_STRCOLLITER);
UTRACE_DATA3(UTRACE_VERBOSE, "coll=%p, sIter=%p, tIter=%p", coll, sIter, tIter);
- if(sIter == NULL || tIter == NULL || coll == NULL) {
+ if(sIter == nullptr || tIter == nullptr || coll == nullptr) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
UTRACE_EXIT_VALUE_STATUS(UCOL_EQUAL, *status);
return UCOL_EQUAL;
@@ -445,9 +445,9 @@ ucol_strcollIter( const UCollator *coll,
/* */
U_CAPI UCollationResult U_EXPORT2
ucol_strcoll( const UCollator *coll,
- const UChar *source,
+ const char16_t *source,
int32_t sourceLength,
- const UChar *target,
+ const char16_t *target,
int32_t targetLength)
{
UTRACE_ENTRY(UTRACE_UCOL_STRCOLL);
@@ -496,9 +496,9 @@ ucol_strcollUTF8(
/* convenience function for comparing strings */
U_CAPI UBool U_EXPORT2
ucol_greater( const UCollator *coll,
- const UChar *source,
+ const char16_t *source,
int32_t sourceLength,
- const UChar *target,
+ const char16_t *target,
int32_t targetLength)
{
return (ucol_strcoll(coll, source, sourceLength, target, targetLength)
@@ -508,9 +508,9 @@ ucol_greater( const UCollator *coll,
/* convenience function for comparing strings */
U_CAPI UBool U_EXPORT2
ucol_greaterOrEqual( const UCollator *coll,
- const UChar *source,
+ const char16_t *source,
int32_t sourceLength,
- const UChar *target,
+ const char16_t *target,
int32_t targetLength)
{
return (ucol_strcoll(coll, source, sourceLength, target, targetLength)
@@ -520,9 +520,9 @@ ucol_greaterOrEqual( const UCollator *coll,
/* convenience function for comparing strings */
U_CAPI UBool U_EXPORT2
ucol_equal( const UCollator *coll,
- const UChar *source,
+ const char16_t *source,
int32_t sourceLength,
- const UChar *target,
+ const char16_t *target,
int32_t targetLength)
{
return (ucol_strcoll(coll, source, sourceLength, target, targetLength)
@@ -532,7 +532,7 @@ ucol_equal( const UCollator *coll,
U_CAPI void U_EXPORT2
ucol_getUCAVersion(const UCollator* coll, UVersionInfo info) {
const Collator *c = Collator::fromUCollator(coll);
- if(c != NULL) {
+ if(c != nullptr) {
UVersionInfo v;
c->getVersion(v);
// Note: This is tied to how the current implementation encodes the UCA version
@@ -548,29 +548,29 @@ ucol_getUCAVersion(const UCollator* coll, UVersionInfo info) {
}
}
-U_CAPI const UChar * U_EXPORT2
+U_CAPI const char16_t * U_EXPORT2
ucol_getRules(const UCollator *coll, int32_t *length) {
const RuleBasedCollator *rbc = RuleBasedCollator::rbcFromUCollator(coll);
- // OK to crash if coll==NULL: We do not want to check "this" pointers.
- if(rbc != NULL || coll == NULL) {
+ // OK to crash if coll==nullptr: We do not want to check "this" pointers.
+ if(rbc != nullptr || coll == nullptr) {
const UnicodeString &rules = rbc->getRules();
U_ASSERT(rules.getBuffer()[rules.length()] == 0);
*length = rules.length();
return rules.getBuffer();
}
- static const UChar _NUL = 0;
+ static const char16_t _NUL = 0;
*length = 0;
return &_NUL;
}
U_CAPI int32_t U_EXPORT2
-ucol_getRulesEx(const UCollator *coll, UColRuleOption delta, UChar *buffer, int32_t bufferLen) {
+ucol_getRulesEx(const UCollator *coll, UColRuleOption delta, char16_t *buffer, int32_t bufferLen) {
UnicodeString rules;
const RuleBasedCollator *rbc = RuleBasedCollator::rbcFromUCollator(coll);
- if(rbc != NULL || coll == NULL) {
+ if(rbc != nullptr || coll == nullptr) {
rbc->getRules(delta, rules);
}
- if(buffer != NULL && bufferLen > 0) {
+ if(buffer != nullptr && bufferLen > 0) {
UErrorCode errorCode = U_ZERO_ERROR;
return rules.extract(buffer, bufferLen, errorCode);
} else {
@@ -586,16 +586,16 @@ ucol_getLocale(const UCollator *coll, ULocDataLocaleType type, UErrorCode *statu
U_CAPI const char * U_EXPORT2
ucol_getLocaleByType(const UCollator *coll, ULocDataLocaleType type, UErrorCode *status) {
if(U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
UTRACE_ENTRY(UTRACE_UCOL_GETLOCALE);
UTRACE_DATA1(UTRACE_INFO, "coll=%p", coll);
const char *result;
const RuleBasedCollator *rbc = RuleBasedCollator::rbcFromUCollator(coll);
- if(rbc == NULL && coll != NULL) {
+ if(rbc == nullptr && coll != nullptr) {
*status = U_UNSUPPORTED_ERROR;
- result = NULL;
+ result = nullptr;
} else {
result = rbc->internalGetLocaleID(type, *status);
}
@@ -608,12 +608,12 @@ ucol_getLocaleByType(const UCollator *coll, ULocDataLocaleType type, UErrorCode
U_CAPI USet * U_EXPORT2
ucol_getTailoredSet(const UCollator *coll, UErrorCode *status) {
if(U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
UnicodeSet *set = Collator::fromUCollator(coll)->getTailoredSet(*status);
if(U_FAILURE(*status)) {
delete set;
- return NULL;
+ return nullptr;
}
return set->toUSet();
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/ucol_res.cpp b/Build/source/libs/icu/icu-src/source/i18n/ucol_res.cpp
index 8308d99c290..4ec6582f890 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/ucol_res.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/ucol_res.cpp
@@ -59,9 +59,9 @@ U_NAMESPACE_BEGIN
namespace {
-static const UChar *rootRules = NULL;
+static const char16_t *rootRules = nullptr;
static int32_t rootRulesLength = 0;
-static UResourceBundle *rootBundle = NULL;
+static UResourceBundle *rootBundle = nullptr;
static UInitOnce gInitOnceUcolRes {};
} // namespace
@@ -70,10 +70,10 @@ U_CDECL_BEGIN
static UBool U_CALLCONV
ucol_res_cleanup() {
- rootRules = NULL;
+ rootRules = nullptr;
rootRulesLength = 0;
ures_close(rootBundle);
- rootBundle = NULL;
+ rootBundle = nullptr;
gInitOnceUcolRes.reset();
return true;
}
@@ -86,7 +86,7 @@ CollationLoader::loadRootRules(UErrorCode &errorCode) {
rootRules = ures_getStringByKey(rootBundle, "UCARules", &rootRulesLength, &errorCode);
if(U_FAILURE(errorCode)) {
ures_close(rootBundle);
- rootBundle = NULL;
+ rootBundle = nullptr;
return;
}
ucln_i18n_registerCleanup(UCLN_I18N_UCOL_RES, ucol_res_cleanup);
@@ -107,7 +107,7 @@ void
CollationLoader::loadRules(const char *localeID, const char *collationType,
UnicodeString &rules, UErrorCode &errorCode) {
if(U_FAILURE(errorCode)) { return; }
- U_ASSERT(collationType != NULL && *collationType != 0);
+ U_ASSERT(collationType != nullptr && *collationType != 0);
// Copy the type for lowercasing.
char type[16];
int32_t typeLength = static_cast<int32_t>(uprv_strlen(collationType));
@@ -120,11 +120,11 @@ CollationLoader::loadRules(const char *localeID, const char *collationType,
LocalUResourceBundlePointer bundle(ures_open(U_ICUDATA_COLL, localeID, &errorCode));
LocalUResourceBundlePointer collations(
- ures_getByKey(bundle.getAlias(), "collations", NULL, &errorCode));
+ ures_getByKey(bundle.getAlias(), "collations", nullptr, &errorCode));
LocalUResourceBundlePointer data(
- ures_getByKeyWithFallback(collations.getAlias(), type, NULL, &errorCode));
+ ures_getByKeyWithFallback(collations.getAlias(), type, nullptr, &errorCode));
int32_t length;
- const UChar *s = ures_getStringByKey(data.getAlias(), "Sequence", &length, &errorCode);
+ const char16_t *s = ures_getStringByKey(data.getAlias(), "Sequence", &length, &errorCode);
if(U_FAILURE(errorCode)) { return; }
// No string pointer aliasing so that we need not hold onto the resource bundle.
@@ -147,7 +147,7 @@ LocaleCacheKey<CollationCacheEntry>::createObject(const void *creationContext,
const CollationCacheEntry *
CollationLoader::loadTailoring(const Locale &locale, UErrorCode &errorCode) {
const CollationCacheEntry *rootEntry = CollationRoot::getRootCacheEntry(errorCode);
- if(U_FAILURE(errorCode)) { return NULL; }
+ if(U_FAILURE(errorCode)) { return nullptr; }
const char *name = locale.getName();
if(*name == 0 || uprv_strcmp(name, "root") == 0) {
@@ -169,15 +169,25 @@ CollationLoader::CollationLoader(const CollationCacheEntry *re, const Locale &re
: cache(UnifiedCache::getInstance(errorCode)), rootEntry(re),
validLocale(re->validLocale), locale(requested),
typesTried(0), typeFallback(false),
- bundle(NULL), collations(NULL), data(NULL) {
+ bundle(nullptr), collations(nullptr), data(nullptr) {
type[0] = 0;
defaultType[0] = 0;
if(U_FAILURE(errorCode)) { return; }
+ if (locale.isBogus()) {
+ errorCode = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
// Canonicalize the locale ID: Ignore all irrelevant keywords.
const char *baseName = locale.getBaseName();
if(uprv_strcmp(locale.getName(), baseName) != 0) {
locale = Locale(baseName);
+ // Due to ICU-22416, we may have bogus locale constructed from
+ // a string of getBaseName().
+ if (locale.isBogus()) {
+ errorCode = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
// Fetch the collation type from the locale ID.
int32_t typeLength = requested.getKeywordValue("collation",
@@ -213,11 +223,11 @@ CollationLoader::createCacheEntry(UErrorCode &errorCode) {
// In a cache miss, cache.get() calls CacheKey::createObject(),
// which means that we progress via recursion.
// loadFromCollations() will recurse to itself as well for collation type fallback.
- if(bundle == NULL) {
+ if(bundle == nullptr) {
return loadFromLocale(errorCode);
- } else if(collations == NULL) {
+ } else if(collations == nullptr) {
return loadFromBundle(errorCode);
- } else if(data == NULL) {
+ } else if(data == nullptr) {
return loadFromCollations(errorCode);
} else {
return loadFromData(errorCode);
@@ -226,8 +236,8 @@ CollationLoader::createCacheEntry(UErrorCode &errorCode) {
const CollationCacheEntry *
CollationLoader::loadFromLocale(UErrorCode &errorCode) {
- if(U_FAILURE(errorCode)) { return NULL; }
- U_ASSERT(bundle == NULL);
+ if(U_FAILURE(errorCode)) { return nullptr; }
+ U_ASSERT(bundle == nullptr);
bundle = ures_openNoDefault(U_ICUDATA_COLL, locale.getBaseName(), &errorCode);
if(errorCode == U_MISSING_RESOURCE_ERROR) {
errorCode = U_USING_DEFAULT_WARNING;
@@ -238,7 +248,7 @@ CollationLoader::loadFromLocale(UErrorCode &errorCode) {
}
Locale requestedLocale(locale);
const char *vLocale = ures_getLocaleByType(bundle, ULOC_ACTUAL_LOCALE, &errorCode);
- if(U_FAILURE(errorCode)) { return NULL; }
+ if(U_FAILURE(errorCode)) { return nullptr; }
locale = validLocale = Locale(vLocale); // no type until loadFromCollations()
if(type[0] != 0) {
locale.setKeywordValue("collation", type, errorCode);
@@ -252,24 +262,24 @@ CollationLoader::loadFromLocale(UErrorCode &errorCode) {
const CollationCacheEntry *
CollationLoader::loadFromBundle(UErrorCode &errorCode) {
- if(U_FAILURE(errorCode)) { return NULL; }
- U_ASSERT(collations == NULL);
+ if(U_FAILURE(errorCode)) { return nullptr; }
+ U_ASSERT(collations == nullptr);
// There are zero or more tailorings in the collations table.
- collations = ures_getByKey(bundle, "collations", NULL, &errorCode);
+ collations = ures_getByKey(bundle, "collations", nullptr, &errorCode);
if(errorCode == U_MISSING_RESOURCE_ERROR) {
errorCode = U_USING_DEFAULT_WARNING;
// Return the root tailoring with the validLocale, without collation type.
return makeCacheEntryFromRoot(validLocale, errorCode);
}
- if(U_FAILURE(errorCode)) { return NULL; }
+ if(U_FAILURE(errorCode)) { return nullptr; }
// Fetch the default type from the data.
{
UErrorCode internalErrorCode = U_ZERO_ERROR;
LocalUResourceBundlePointer def(
- ures_getByKeyWithFallback(collations, "default", NULL, &internalErrorCode));
+ ures_getByKeyWithFallback(collations, "default", nullptr, &internalErrorCode));
int32_t length;
- const UChar *s = ures_getString(def.getAlias(), &length, &internalErrorCode);
+ const char16_t *s = ures_getString(def.getAlias(), &length, &internalErrorCode);
if(U_SUCCESS(internalErrorCode) && 0 < length && length < UPRV_LENGTHOF(defaultType)) {
u_UCharsToChars(s, defaultType, length + 1);
} else {
@@ -313,11 +323,11 @@ CollationLoader::loadFromBundle(UErrorCode &errorCode) {
const CollationCacheEntry *
CollationLoader::loadFromCollations(UErrorCode &errorCode) {
- if(U_FAILURE(errorCode)) { return NULL; }
- U_ASSERT(data == NULL);
+ if(U_FAILURE(errorCode)) { return nullptr; }
+ U_ASSERT(data == nullptr);
// Load the collations/type tailoring, with type fallback.
LocalUResourceBundlePointer localData(
- ures_getByKeyWithFallback(collations, type, NULL, &errorCode));
+ ures_getByKeyWithFallback(collations, type, nullptr, &errorCode));
int32_t typeLength = static_cast<int32_t>(uprv_strlen(type));
if(errorCode == U_MISSING_RESOURCE_ERROR) {
errorCode = U_USING_DEFAULT_WARNING;
@@ -342,11 +352,11 @@ CollationLoader::loadFromCollations(UErrorCode &errorCode) {
locale.setKeywordValue("collation", type, errorCode);
return getCacheEntry(errorCode);
}
- if(U_FAILURE(errorCode)) { return NULL; }
+ if(U_FAILURE(errorCode)) { return nullptr; }
data = localData.orphan();
const char *actualLocale = ures_getLocaleByType(data, ULOC_ACTUAL_LOCALE, &errorCode);
- if(U_FAILURE(errorCode)) { return NULL; }
+ if(U_FAILURE(errorCode)) { return nullptr; }
const char *vLocale = validLocale.getBaseName();
UBool actualAndValidLocalesAreDifferent = Locale(actualLocale) != Locale(vLocale);
@@ -355,7 +365,7 @@ CollationLoader::loadFromCollations(UErrorCode &errorCode) {
// For the valid locale, suppress the default type.
if(uprv_strcmp(type, defaultType) != 0) {
validLocale.setKeywordValue("collation", type, errorCode);
- if(U_FAILURE(errorCode)) { return NULL; }
+ if(U_FAILURE(errorCode)) { return nullptr; }
}
// Is this the same as the root collator? If so, then use that instead.
@@ -379,29 +389,29 @@ CollationLoader::loadFromCollations(UErrorCode &errorCode) {
const CollationCacheEntry *
CollationLoader::loadFromData(UErrorCode &errorCode) {
- if(U_FAILURE(errorCode)) { return NULL; }
+ if(U_FAILURE(errorCode)) { return nullptr; }
LocalPointer<CollationTailoring> t(new CollationTailoring(rootEntry->tailoring->settings));
if(t.isNull() || t->isBogus()) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
// deserialize
- LocalUResourceBundlePointer binary(ures_getByKey(data, "%%CollationBin", NULL, &errorCode));
+ LocalUResourceBundlePointer binary(ures_getByKey(data, "%%CollationBin", nullptr, &errorCode));
// Note: U_MISSING_RESOURCE_ERROR --> The old code built from rules if available
// but that created undesirable dependencies.
- int32_t length;
+ int32_t length = 0;
const uint8_t *inBytes = ures_getBinary(binary.getAlias(), &length, &errorCode);
CollationDataReader::read(rootEntry->tailoring, inBytes, length, *t, errorCode);
// Note: U_COLLATOR_VERSION_MISMATCH --> The old code built from rules if available
// but that created undesirable dependencies.
- if(U_FAILURE(errorCode)) { return NULL; }
+ if(U_FAILURE(errorCode)) { return nullptr; }
// Try to fetch the optional rules string.
{
UErrorCode internalErrorCode = U_ZERO_ERROR;
int32_t len;
- const UChar *s = ures_getStringByKey(data, "Sequence", &len,
+ const char16_t *s = ures_getStringByKey(data, "Sequence", &len,
&internalErrorCode);
if(U_SUCCESS(internalErrorCode)) {
t->rules.setTo(true, s, len);
@@ -421,13 +431,13 @@ CollationLoader::loadFromData(UErrorCode &errorCode) {
// Opening a bundle for the actual locale should always succeed.
LocalUResourceBundlePointer actualBundle(
ures_open(U_ICUDATA_COLL, actualLocale, &errorCode));
- if(U_FAILURE(errorCode)) { return NULL; }
+ if(U_FAILURE(errorCode)) { return nullptr; }
UErrorCode internalErrorCode = U_ZERO_ERROR;
LocalUResourceBundlePointer def(
- ures_getByKeyWithFallback(actualBundle.getAlias(), "collations/default", NULL,
+ ures_getByKeyWithFallback(actualBundle.getAlias(), "collations/default", nullptr,
&internalErrorCode));
int32_t len;
- const UChar *s = ures_getString(def.getAlias(), &len, &internalErrorCode);
+ const char16_t *s = ures_getString(def.getAlias(), &len, &internalErrorCode);
if(U_SUCCESS(internalErrorCode) && len < UPRV_LENGTHOF(defaultType)) {
u_UCharsToChars(s, defaultType, len + 1);
} else {
@@ -439,17 +449,17 @@ CollationLoader::loadFromData(UErrorCode &errorCode) {
t->actualLocale.setKeywordValue("collation", type, errorCode);
} else if(uprv_strcmp(locale.getName(), locale.getBaseName()) != 0) {
// Remove the collation keyword if it was set.
- t->actualLocale.setKeywordValue("collation", NULL, errorCode);
+ t->actualLocale.setKeywordValue("collation", nullptr, errorCode);
}
- if(U_FAILURE(errorCode)) { return NULL; }
+ if(U_FAILURE(errorCode)) { return nullptr; }
if(typeFallback) {
errorCode = U_USING_DEFAULT_WARNING;
}
t->bundle = bundle;
- bundle = NULL;
+ bundle = nullptr;
const CollationCacheEntry *entry = new CollationCacheEntry(validLocale, t.getAlias());
- if(entry == NULL) {
+ if(entry == nullptr) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
return nullptr;
} else {
@@ -463,7 +473,7 @@ CollationLoader::loadFromData(UErrorCode &errorCode) {
const CollationCacheEntry *
CollationLoader::getCacheEntry(UErrorCode &errorCode) {
LocaleCacheKey<CollationCacheEntry> key(locale);
- const CollationCacheEntry *entry = NULL;
+ const CollationCacheEntry *entry = nullptr;
cache->get(key, this, entry, errorCode);
return entry;
}
@@ -473,7 +483,7 @@ CollationLoader::makeCacheEntryFromRoot(
const Locale &/*loc*/,
UErrorCode &errorCode) const {
if (U_FAILURE(errorCode)) {
- return NULL;
+ return nullptr;
}
rootEntry->addRef();
return makeCacheEntry(validLocale, rootEntry, errorCode);
@@ -488,10 +498,10 @@ CollationLoader::makeCacheEntry(
return entryFromCache;
}
CollationCacheEntry *entry = new CollationCacheEntry(loc, entryFromCache->tailoring);
- if(entry == NULL) {
+ if(entry == nullptr) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
entryFromCache->removeRef();
- return NULL;
+ return nullptr;
}
entry->addRef();
entryFromCache->removeRef();
@@ -508,7 +518,7 @@ ucol_open(const char *loc,
{
UTRACE_ENTRY_OC(UTRACE_UCOL_OPEN);
UTRACE_DATA1(UTRACE_INFO, "locale = \"%s\"", loc);
- UCollator *result = NULL;
+ UCollator *result = nullptr;
Collator *coll = Collator::createInstance(loc, *status);
if(U_SUCCESS(*status)) {
@@ -522,14 +532,14 @@ ucol_open(const char *loc,
U_CAPI int32_t U_EXPORT2
ucol_getDisplayName( const char *objLoc,
const char *dispLoc,
- UChar *result,
+ char16_t *result,
int32_t resultLength,
UErrorCode *status)
{
if(U_FAILURE(*status)) return -1;
UnicodeString dst;
- if(!(result==NULL && resultLength==0)) {
- // NULL destination for pure preflighting: empty dummy string
+ if(!(result==nullptr && resultLength==0)) {
+ // nullptr destination for pure preflighting: empty dummy string
// otherwise, alias the destination buffer
dst.setTo(result, 0, resultLength);
}
@@ -542,10 +552,10 @@ ucol_getAvailable(int32_t index)
{
int32_t count = 0;
const Locale *loc = Collator::getAvailableLocales(count);
- if (loc != NULL && index < count) {
+ if (loc != nullptr && index < count) {
return loc[index].getName();
}
- return NULL;
+ return nullptr;
}
U_CAPI int32_t U_EXPORT2
@@ -561,12 +571,12 @@ U_CAPI UEnumeration* U_EXPORT2
ucol_openAvailableLocales(UErrorCode *status) {
// This is a wrapper over Collator::getAvailableLocales()
if (U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
StringEnumeration *s = icu::Collator::getAvailableLocales();
- if (s == NULL) {
+ if (s == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
return uenum_openFromStringEnumeration(s, status);
}
@@ -582,7 +592,7 @@ static const char* const KEYWORDS[] = { "collation" };
U_CAPI UEnumeration* U_EXPORT2
ucol_getKeywords(UErrorCode *status) {
- UEnumeration *result = NULL;
+ UEnumeration *result = nullptr;
if (U_SUCCESS(*status)) {
return uenum_openCharStringsEnumeration(KEYWORDS, KEYWORD_COUNT, status);
}
@@ -592,21 +602,21 @@ ucol_getKeywords(UErrorCode *status) {
U_CAPI UEnumeration* U_EXPORT2
ucol_getKeywordValues(const char *keyword, UErrorCode *status) {
if (U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
// hard-coded to accept exactly one collation keyword
// modify if additional collation keyword is added later
- if (keyword==NULL || uprv_strcmp(keyword, KEYWORDS[0])!=0)
+ if (keyword==nullptr || uprv_strcmp(keyword, KEYWORDS[0])!=0)
{
*status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
return ures_getKeywordValues(U_ICUDATA_COLL, RESOURCE_NAME, status);
}
static const UEnumeration defaultKeywordValues = {
- NULL,
- NULL,
+ nullptr,
+ nullptr,
ulist_close_keyword_values_iterator,
ulist_count_keyword_values,
uenum_unextDefault,
@@ -634,7 +644,7 @@ public:
defcoll.appendInvariantChars(value.getUnicodeString(errorCode), errorCode);
if (U_SUCCESS(errorCode) && !defcoll.isEmpty()) {
char *ownedDefault = uprv_strdup(defcoll.data());
- if (ownedDefault == NULL) {
+ if (ownedDefault == nullptr) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -673,17 +683,17 @@ ucol_getKeywordValuesForLocale(const char* /*key*/, const char* locale,
LocalUResourceBundlePointer bundle(ures_open(U_ICUDATA_COLL, locale, status));
KeywordsSink sink(*status);
ures_getAllItemsWithFallback(bundle.getAlias(), RESOURCE_NAME, sink, *status);
- if (U_FAILURE(*status)) { return NULL; }
+ if (U_FAILURE(*status)) { return nullptr; }
UEnumeration *en = (UEnumeration *)uprv_malloc(sizeof(UEnumeration));
- if (en == NULL) {
+ if (en == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
memcpy(en, &defaultKeywordValues, sizeof(UEnumeration));
ulist_resetList(sink.values); // Initialize the iterator.
en->context = sink.values;
- sink.values = NULL; // Avoid deletion in the sink destructor.
+ sink.values = nullptr; // Avoid deletion in the sink destructor.
return en;
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/ucol_sit.cpp b/Build/source/libs/icu/icu-src/source/i18n/ucol_sit.cpp
index 19281e43522..2e5bce2cbaa 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/ucol_sit.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/ucol_sit.cpp
@@ -20,6 +20,8 @@
#include "unicode/utf16.h"
#include "utracimp.h"
#include "ucol_imp.h"
+#include "ulocimp.h"
+#include "bytesinkutil.h"
#include "cmemory.h"
#include "cstring.h"
#include "uresimp.h"
@@ -86,7 +88,6 @@ static const char providerKeyword[] = "@sp=";
static const int32_t locElementCount = UCOL_SIT_LOCELEMENT_MAX+1;
static const int32_t locElementCapacity = 32;
static const int32_t loc3066Capacity = 256;
-static const int32_t internalBufferSize = 512;
/* structure containing specification of a collator. Initialized
* from a short string. Also used to construct a short string from a
@@ -99,7 +100,7 @@ struct CollatorSpec {
CharString locale;
UColAttributeValue options[UCOL_ATTRIBUTE_COUNT];
uint32_t variableTopValue;
- UChar variableTopString[locElementCapacity];
+ char16_t variableTopString[locElementCapacity];
int32_t variableTopStringLen;
UBool variableTopSet;
CharString entries[UCOL_SIT_ITEMS_COUNT];
@@ -189,7 +190,7 @@ _processRFC3066Locale(CollatorSpec *spec, uint32_t, const char* string,
char terminator = *string;
string++;
const char *end = uprv_strchr(string+1, terminator);
- if(end == NULL || end - string >= loc3066Capacity) {
+ if(end == nullptr || end - string >= loc3066Capacity) {
*status = U_BUFFER_OVERFLOW_ERROR;
return string;
} else {
@@ -217,10 +218,10 @@ _processCollatorOption(CollatorSpec *spec, uint32_t option, const char* string,
U_CDECL_END
-static UChar
+static char16_t
readHexCodeUnit(const char **string, UErrorCode *status)
{
- UChar result = 0;
+ char16_t result = 0;
int32_t value = 0;
char c;
int32_t noDigits = 0;
@@ -238,7 +239,7 @@ readHexCodeUnit(const char **string, UErrorCode *status)
#endif
return 0;
}
- result = (result << 4) | (UChar)value;
+ result = (result << 4) | (char16_t)value;
noDigits++;
(*string)++;
}
@@ -450,38 +451,37 @@ ucol_prepareShortStringOpen( const char *definition,
ucol_sit_readSpecs(&s, definition, parseError, status);
ucol_sit_calculateWholeLocale(&s, *status);
- char buffer[internalBufferSize];
- uprv_memset(buffer, 0, internalBufferSize);
- uloc_canonicalize(s.locale.data(), buffer, internalBufferSize, status);
+ CharString buffer;
+ {
+ CharStringByteSink sink(&buffer);
+ ulocimp_canonicalize(s.locale.data(), sink, status);
+ }
- UResourceBundle *b = ures_open(U_ICUDATA_COLL, buffer, status);
+ UResourceBundle *b = ures_open(U_ICUDATA_COLL, buffer.data(), status);
/* we try to find stuff from keyword */
- UResourceBundle *collations = ures_getByKey(b, "collations", NULL, status);
- UResourceBundle *collElem = NULL;
- char keyBuffer[256];
- // if there is a keyword, we pick it up and try to get elements
- int32_t keyLen = uloc_getKeywordValue(buffer, "collation", keyBuffer, sizeof(keyBuffer), status);
- // Treat too long a value as no keyword.
- if(keyLen >= (int32_t)sizeof(keyBuffer)) {
- keyLen = 0;
- *status = U_ZERO_ERROR;
+ UResourceBundle *collations = ures_getByKey(b, "collations", nullptr, status);
+ UResourceBundle *collElem = nullptr;
+ CharString keyBuffer;
+ {
+ // if there is a keyword, we pick it up and try to get elements
+ CharStringByteSink sink(&keyBuffer);
+ ulocimp_getKeywordValue(buffer.data(), "collation", sink, status);
}
- if(keyLen == 0) {
+ if(keyBuffer.isEmpty()) {
// no keyword
// we try to find the default setting, which will give us the keyword value
- UResourceBundle *defaultColl = ures_getByKeyWithFallback(collations, "default", NULL, status);
+ UResourceBundle *defaultColl = ures_getByKeyWithFallback(collations, "default", nullptr, status);
if(U_SUCCESS(*status)) {
int32_t defaultKeyLen = 0;
- const UChar *defaultKey = ures_getString(defaultColl, &defaultKeyLen, status);
- u_UCharsToChars(defaultKey, keyBuffer, defaultKeyLen);
- keyBuffer[defaultKeyLen] = 0;
+ const char16_t *defaultKey = ures_getString(defaultColl, &defaultKeyLen, status);
+ keyBuffer.appendInvariantChars(defaultKey, defaultKeyLen, *status);
} else {
*status = U_INTERNAL_PROGRAM_ERROR;
return;
}
ures_close(defaultColl);
}
- collElem = ures_getByKeyWithFallback(collations, keyBuffer, collElem, status);
+ collElem = ures_getByKeyWithFallback(collations, keyBuffer.data(), collElem, status);
ures_close(collElem);
ures_close(collations);
ures_close(b);
@@ -520,14 +520,16 @@ ucol_openFromShortString( const char *definition,
string = ucol_sit_readSpecs(&s, definition, parseError, status);
ucol_sit_calculateWholeLocale(&s, *status);
- char buffer[internalBufferSize];
- uprv_memset(buffer, 0, internalBufferSize);
#ifdef UCOL_TRACE_SIT
fprintf(stderr, "DEF %s, DATA %s, ERR %s\n", definition, s.locale.data(), u_errorName(*status));
#endif
- uloc_canonicalize(s.locale.data(), buffer, internalBufferSize, status);
+ CharString buffer;
+ {
+ CharStringByteSink sink(&buffer);
+ ulocimp_canonicalize(s.locale.data(), sink, status);
+ }
- UCollator *result = ucol_open(buffer, status);
+ UCollator *result = ucol_open(buffer.data(), status);
int32_t i = 0;
for(i = 0; i < UCOL_ATTRIBUTE_COUNT; i++) {
@@ -539,7 +541,7 @@ ucol_openFromShortString( const char *definition,
if(U_FAILURE(*status)) {
parseError->offset = (int32_t)(string - definition);
ucol_close(result);
- return NULL;
+ return nullptr;
}
}
@@ -555,7 +557,7 @@ ucol_openFromShortString( const char *definition,
if(U_FAILURE(*status)) { // here it can only be a bogus value
ucol_close(result);
- result = NULL;
+ result = nullptr;
}
UTRACE_EXIT_PTR_STATUS(result, *status);
@@ -571,7 +573,7 @@ ucol_getShortDefinitionString(const UCollator *coll,
UErrorCode *status)
{
if(U_FAILURE(*status)) return 0;
- if(coll == NULL) {
+ if(coll == nullptr) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -618,7 +620,7 @@ ucol_getContractions( const UCollator *coll,
USet *contractions,
UErrorCode *status)
{
- ucol_getContractionsAndExpansions(coll, contractions, NULL, false, status);
+ ucol_getContractionsAndExpansions(coll, contractions, nullptr, false, status);
return uset_getItemCount(contractions);
}
@@ -642,12 +644,12 @@ ucol_getContractionsAndExpansions( const UCollator *coll,
if(U_FAILURE(*status)) {
return;
}
- if(coll == NULL) {
+ if(coll == nullptr) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
const icu::RuleBasedCollator *rbc = icu::RuleBasedCollator::rbcFromUCollator(coll);
- if(rbc == NULL) {
+ if(rbc == nullptr) {
*status = U_UNSUPPORTED_ERROR;
return;
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/ucoleitr.cpp b/Build/source/libs/icu/icu-src/source/i18n/ucoleitr.cpp
index 53649c01bc1..36b83c4c104 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/ucoleitr.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/ucoleitr.cpp
@@ -92,7 +92,7 @@ void RCEBuffer::put(uint32_t ce, int32_t ixLow, int32_t ixHigh, UErrorCode &erro
}
if (bufferIndex >= bufferSize) {
RCEI *newBuffer = NEW_ARRAY(RCEI, bufferSize + BUFFER_GROW);
- if (newBuffer == NULL) {
+ if (newBuffer == nullptr) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -120,7 +120,7 @@ const RCEI *RCEBuffer::get()
return &buffer[--bufferIndex];
}
- return NULL;
+ return nullptr;
}
PCEBuffer::PCEBuffer()
@@ -154,7 +154,7 @@ void PCEBuffer::put(uint64_t ce, int32_t ixLow, int32_t ixHigh, UErrorCode &erro
}
if (bufferIndex >= bufferSize) {
PCEI *newBuffer = NEW_ARRAY(PCEI, bufferSize + BUFFER_GROW);
- if (newBuffer == NULL) {
+ if (newBuffer == nullptr) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -182,7 +182,7 @@ const PCEI *PCEBuffer::get()
return &buffer[--bufferIndex];
}
- return NULL;
+ return nullptr;
}
UCollationPCE::UCollationPCE(UCollationElements *elems) { init(elems); }
@@ -272,28 +272,28 @@ U_NAMESPACE_END
U_CAPI UCollationElements* U_EXPORT2
ucol_openElements(const UCollator *coll,
- const UChar *text,
+ const char16_t *text,
int32_t textLength,
UErrorCode *status)
{
if (U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
- if (coll == NULL || (text == NULL && textLength != 0)) {
+ if (coll == nullptr || (text == nullptr && textLength != 0)) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
const RuleBasedCollator *rbc = RuleBasedCollator::rbcFromUCollator(coll);
- if (rbc == NULL) {
+ if (rbc == nullptr) {
*status = U_UNSUPPORTED_ERROR; // coll is a Collator but not a RuleBasedCollator
- return NULL;
+ return nullptr;
}
UnicodeString s((UBool)(textLength < 0), text, textLength);
CollationElementIterator *cei = rbc->createCollationElementIterator(s);
- if (cei == NULL) {
+ if (cei == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
return cei->toUCollationElements();
@@ -353,11 +353,11 @@ UCollationPCE::nextProcessed(
result = processCE((uint32_t)ce);
} while (result == UCOL_IGNORABLE);
- if (ixLow != NULL) {
+ if (ixLow != nullptr) {
*ixLow = low;
}
- if (ixHigh != NULL) {
+ if (ixHigh != nullptr) {
*ixHigh = high;
}
@@ -433,11 +433,11 @@ UCollationPCE::previousProcessed(
finish:
if (pceBuffer.isEmpty()) {
// **** Is -1 the right value for ixLow, ixHigh? ****
- if (ixLow != NULL) {
+ if (ixLow != nullptr) {
*ixLow = -1;
}
- if (ixHigh != NULL) {
+ if (ixHigh != nullptr) {
*ixHigh = -1
;
}
@@ -446,11 +446,11 @@ finish:
const PCEI *pcei = pceBuffer.get();
- if (ixLow != NULL) {
+ if (ixLow != nullptr) {
*ixLow = pcei->low;
}
- if (ixHigh != NULL) {
+ if (ixHigh != nullptr) {
*ixHigh = pcei->high;
}
@@ -476,7 +476,7 @@ ucol_getMaxExpansion(const UCollationElements *elems,
U_CAPI void U_EXPORT2
ucol_setText( UCollationElements *elems,
- const UChar *text,
+ const char16_t *text,
int32_t textLength,
UErrorCode *status)
{
@@ -484,7 +484,7 @@ ucol_setText( UCollationElements *elems,
return;
}
- if ((text == NULL && textLength != 0)) {
+ if ((text == nullptr && textLength != 0)) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/ucsdet.cpp b/Build/source/libs/icu/icu-src/source/i18n/ucsdet.cpp
index 8de10d101f3..c8b8712fbaa 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/ucsdet.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/ucsdet.cpp
@@ -39,7 +39,7 @@ ucsdet_open(UErrorCode *status)
if (U_FAILURE(*status)) {
delete csd;
- csd = NULL;
+ csd = nullptr;
}
return (UCharsetDetector *) csd;
@@ -66,7 +66,7 @@ U_CAPI const char * U_EXPORT2
ucsdet_getName(const UCharsetMatch *ucsm, UErrorCode *status)
{
if(U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
return ((CharsetMatch *) ucsm)->getName();
@@ -86,7 +86,7 @@ U_CAPI const char * U_EXPORT2
ucsdet_getLanguage(const UCharsetMatch *ucsm, UErrorCode *status)
{
if(U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
return ((CharsetMatch *) ucsm)->getLanguage();
@@ -96,7 +96,7 @@ U_CAPI const UCharsetMatch * U_EXPORT2
ucsdet_detect(UCharsetDetector *ucsd, UErrorCode *status)
{
if(U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
return (const UCharsetMatch *) ((CharsetDetector *) ucsd)->detect(*status);
@@ -117,7 +117,7 @@ ucsdet_detectAll(UCharsetDetector *ucsd,
int32_t *maxMatchesFound, UErrorCode *status)
{
if(U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
CharsetDetector *csd = (CharsetDetector *) ucsd;
@@ -147,7 +147,7 @@ U_CAPI UBool U_EXPORT2
ucsdet_isInputFilterEnabled(const UCharsetDetector *ucsd)
{
// todo: could use an error return...
- if (ucsd == NULL) {
+ if (ucsd == nullptr) {
return false;
}
@@ -158,7 +158,7 @@ U_CAPI UBool U_EXPORT2
ucsdet_enableInputFilter(UCharsetDetector *ucsd, UBool filter)
{
// todo: could use an error return...
- if (ucsd == NULL) {
+ if (ucsd == nullptr) {
return false;
}
@@ -172,7 +172,7 @@ ucsdet_enableInputFilter(UCharsetDetector *ucsd, UBool filter)
U_CAPI int32_t U_EXPORT2
ucsdet_getUChars(const UCharsetMatch *ucsm,
- UChar *buf, int32_t cap, UErrorCode *status)
+ char16_t *buf, int32_t cap, UErrorCode *status)
{
if(U_FAILURE(*status)) {
return 0;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/udat.cpp b/Build/source/libs/icu/icu-src/source/i18n/udat.cpp
index 426eb7ebf2a..e249be3aee9 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/udat.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/udat.cpp
@@ -34,11 +34,11 @@ U_NAMESPACE_USE
/**
* Verify that fmt is a SimpleDateFormat. Invalid error if not.
* @param fmt the UDateFormat, definitely a DateFormat, maybe something else
- * @param status error code, will be set to failure if there is a failure or the fmt is NULL.
+ * @param status error code, will be set to failure if there is a failure or the fmt is nullptr.
*/
static void verifyIsSimpleDateFormat(const UDateFormat* fmt, UErrorCode *status) {
if(U_SUCCESS(*status) &&
- dynamic_cast<const SimpleDateFormat*>(reinterpret_cast<const DateFormat*>(fmt))==NULL) {
+ dynamic_cast<const SimpleDateFormat*>(reinterpret_cast<const DateFormat*>(fmt))==nullptr) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
}
}
@@ -90,41 +90,41 @@ static UCalendarDateFields gDateFieldMapping[] = {
};
U_CAPI UCalendarDateFields U_EXPORT2
-udat_toCalendarDateField(UDateFormatField field) {
+udat_toCalendarDateField(UDateFormatField field) UPRV_NO_SANITIZE_UNDEFINED {
static_assert(UDAT_FIELD_COUNT == UPRV_LENGTHOF(gDateFieldMapping),
"UDateFormatField and gDateFieldMapping should have the same number of entries and be kept in sync.");
return (field >= UDAT_ERA_FIELD && field < UPRV_LENGTHOF(gDateFieldMapping))? gDateFieldMapping[field]: UCAL_FIELD_COUNT;
}
/* For now- one opener. */
-static UDateFormatOpener gOpener = NULL;
+static UDateFormatOpener gOpener = nullptr;
U_CAPI void U_EXPORT2
udat_registerOpener(UDateFormatOpener opener, UErrorCode *status)
{
if(U_FAILURE(*status)) return;
- umtx_lock(NULL);
- if(gOpener==NULL) {
+ umtx_lock(nullptr);
+ if(gOpener==nullptr) {
gOpener = opener;
} else {
*status = U_ILLEGAL_ARGUMENT_ERROR;
}
- umtx_unlock(NULL);
+ umtx_unlock(nullptr);
}
U_CAPI UDateFormatOpener U_EXPORT2
udat_unregisterOpener(UDateFormatOpener opener, UErrorCode *status)
{
- if(U_FAILURE(*status)) return NULL;
- UDateFormatOpener oldOpener = NULL;
- umtx_lock(NULL);
- if(gOpener==NULL || gOpener!=opener) {
+ if(U_FAILURE(*status)) return nullptr;
+ UDateFormatOpener oldOpener = nullptr;
+ umtx_lock(nullptr);
+ if(gOpener==nullptr || gOpener!=opener) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
} else {
oldOpener=gOpener;
- gOpener=NULL;
+ gOpener=nullptr;
}
- umtx_unlock(NULL);
+ umtx_unlock(nullptr);
return oldOpener;
}
@@ -134,9 +134,9 @@ U_CAPI UDateFormat* U_EXPORT2
udat_open(UDateFormatStyle timeStyle,
UDateFormatStyle dateStyle,
const char *locale,
- const UChar *tzID,
+ const char16_t *tzID,
int32_t tzIDLength,
- const UChar *pattern,
+ const char16_t *pattern,
int32_t patternLength,
UErrorCode *status)
{
@@ -144,9 +144,9 @@ udat_open(UDateFormatStyle timeStyle,
if(U_FAILURE(*status)) {
return 0;
}
- if(gOpener!=NULL) { // if it's registered
+ if(gOpener!=nullptr) { // if it's registered
fmt = (DateFormat*) (*gOpener)(timeStyle,dateStyle,locale,tzID,tzIDLength,pattern,patternLength,status);
- if(fmt!=NULL) {
+ if(fmt!=nullptr) {
return (UDateFormat*)fmt;
} // else fall through.
}
@@ -198,6 +198,7 @@ udat_open(UDateFormatStyle timeStyle,
U_CAPI void U_EXPORT2
udat_close(UDateFormat* format)
{
+ if (format == nullptr) return;
delete (DateFormat*)format;
}
@@ -220,7 +221,7 @@ udat_clone(const UDateFormat *fmt,
U_CAPI int32_t U_EXPORT2
udat_format( const UDateFormat* format,
UDate dateToFormat,
- UChar* result,
+ char16_t* result,
int32_t resultLength,
UFieldPosition* position,
UErrorCode* status)
@@ -228,14 +229,14 @@ udat_format( const UDateFormat* format,
if(U_FAILURE(*status)) {
return -1;
}
- if (result == NULL ? resultLength != 0 : resultLength < 0) {
+ if (result == nullptr ? resultLength != 0 : resultLength < 0) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return -1;
}
UnicodeString res;
- if (result != NULL) {
- // NULL destination for pure preflighting: empty dummy string
+ if (result != nullptr) {
+ // nullptr destination for pure preflighting: empty dummy string
// otherwise, alias the destination buffer
res.setTo(result, 0, resultLength);
}
@@ -258,7 +259,7 @@ udat_format( const UDateFormat* format,
U_CAPI int32_t U_EXPORT2
udat_formatCalendar(const UDateFormat* format,
UCalendar* calendar,
- UChar* result,
+ char16_t* result,
int32_t resultLength,
UFieldPosition* position,
UErrorCode* status)
@@ -266,14 +267,14 @@ udat_formatCalendar(const UDateFormat* format,
if(U_FAILURE(*status)) {
return -1;
}
- if (result == NULL ? resultLength != 0 : resultLength < 0) {
+ if (result == nullptr ? resultLength != 0 : resultLength < 0) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return -1;
}
UnicodeString res;
- if (result != NULL) {
- // NULL destination for pure preflighting: empty dummy string
+ if (result != nullptr) {
+ // nullptr destination for pure preflighting: empty dummy string
// otherwise, alias the destination buffer
res.setTo(result, 0, resultLength);
}
@@ -296,7 +297,7 @@ udat_formatCalendar(const UDateFormat* format,
U_CAPI int32_t U_EXPORT2
udat_formatForFields( const UDateFormat* format,
UDate dateToFormat,
- UChar* result,
+ char16_t* result,
int32_t resultLength,
UFieldPositionIterator* fpositer,
UErrorCode* status)
@@ -304,14 +305,14 @@ udat_formatForFields( const UDateFormat* format,
if(U_FAILURE(*status)) {
return -1;
}
- if (result == NULL ? resultLength != 0 : resultLength < 0) {
+ if (result == nullptr ? resultLength != 0 : resultLength < 0) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return -1;
}
UnicodeString res;
- if (result != NULL) {
- // NULL destination for pure preflighting: empty dummy string
+ if (result != nullptr) {
+ // nullptr destination for pure preflighting: empty dummy string
// otherwise, alias the destination buffer
res.setTo(result, 0, resultLength);
}
@@ -324,7 +325,7 @@ udat_formatForFields( const UDateFormat* format,
U_CAPI int32_t U_EXPORT2
udat_formatCalendarForFields(const UDateFormat* format,
UCalendar* calendar,
- UChar* result,
+ char16_t* result,
int32_t resultLength,
UFieldPositionIterator* fpositer,
UErrorCode* status)
@@ -332,14 +333,14 @@ udat_formatCalendarForFields(const UDateFormat* format,
if(U_FAILURE(*status)) {
return -1;
}
- if (result == NULL ? resultLength != 0 : resultLength < 0) {
+ if (result == nullptr ? resultLength != 0 : resultLength < 0) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return -1;
}
UnicodeString res;
- if (result != NULL) {
- // NULL destination for pure preflighting: empty dummy string
+ if (result != nullptr) {
+ // nullptr destination for pure preflighting: empty dummy string
// otherwise, alias the destination buffer
res.setTo(result, 0, resultLength);
}
@@ -351,7 +352,7 @@ udat_formatCalendarForFields(const UDateFormat* format,
U_CAPI UDate U_EXPORT2
udat_parse( const UDateFormat* format,
- const UChar* text,
+ const char16_t* text,
int32_t textLength,
int32_t *parsePos,
UErrorCode *status)
@@ -363,7 +364,7 @@ udat_parse( const UDateFormat* format,
int32_t stackParsePos = 0;
UDate res;
- if(parsePos == NULL) {
+ if(parsePos == nullptr) {
parsePos = &stackParsePos;
}
@@ -384,7 +385,7 @@ udat_parse( const UDateFormat* format,
U_CAPI void U_EXPORT2
udat_parseCalendar(const UDateFormat* format,
UCalendar* calendar,
- const UChar* text,
+ const char16_t* text,
int32_t textLength,
int32_t *parsePos,
UErrorCode *status)
@@ -395,7 +396,7 @@ udat_parseCalendar(const UDateFormat* format,
ParsePosition pp;
int32_t stackParsePos = 0;
- if(parsePos == NULL) {
+ if(parsePos == nullptr) {
parsePos = &stackParsePos;
}
@@ -458,7 +459,7 @@ udat_setCalendar(UDateFormat* fmt,
}
U_CAPI const UNumberFormat* U_EXPORT2
-udat_getNumberFormatForField(const UDateFormat* fmt, UChar field)
+udat_getNumberFormatForField(const UDateFormat* fmt, char16_t field)
{
UErrorCode status = U_ZERO_ERROR;
verifyIsSimpleDateFormat(fmt, &status);
@@ -474,14 +475,14 @@ udat_getNumberFormat(const UDateFormat* fmt)
U_CAPI void U_EXPORT2
udat_adoptNumberFormatForFields( UDateFormat* fmt,
- const UChar* fields,
+ const char16_t* fields,
UNumberFormat* numberFormatToSet,
UErrorCode* status)
{
verifyIsSimpleDateFormat(fmt, status);
if (U_FAILURE(*status)) return;
- if (fields!=NULL) {
+ if (fields!=nullptr) {
UnicodeString overrideFields(fields);
((SimpleDateFormat*)fmt)->adoptNumberFormat(overrideFields, (NumberFormat*)numberFormatToSet, *status);
}
@@ -535,21 +536,21 @@ udat_set2DigitYearStart( UDateFormat *fmt,
U_CAPI int32_t U_EXPORT2
udat_toPattern( const UDateFormat *fmt,
UBool localized,
- UChar *result,
+ char16_t *result,
int32_t resultLength,
UErrorCode *status)
{
if(U_FAILURE(*status)) {
return -1;
}
- if (result == NULL ? resultLength != 0 : resultLength < 0) {
+ if (result == nullptr ? resultLength != 0 : resultLength < 0) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return -1;
}
UnicodeString res;
- if (result != NULL) {
- // NULL destination for pure preflighting: empty dummy string
+ if (result != nullptr) {
+ // nullptr destination for pure preflighting: empty dummy string
// otherwise, alias the destination buffer
res.setTo(result, 0, resultLength);
}
@@ -557,12 +558,12 @@ udat_toPattern( const UDateFormat *fmt,
const DateFormat *df=reinterpret_cast<const DateFormat *>(fmt);
const SimpleDateFormat *sdtfmt=dynamic_cast<const SimpleDateFormat *>(df);
const RelativeDateFormat *reldtfmt;
- if (sdtfmt!=NULL) {
+ if (sdtfmt!=nullptr) {
if(localized)
sdtfmt->toLocalizedPattern(res, *status);
else
sdtfmt->toPattern(res);
- } else if (!localized && (reldtfmt=dynamic_cast<const RelativeDateFormat *>(df))!=NULL) {
+ } else if (!localized && (reldtfmt=dynamic_cast<const RelativeDateFormat *>(df))!=nullptr) {
reldtfmt->toPattern(res, *status);
} else {
*status = U_ILLEGAL_ARGUMENT_ERROR;
@@ -577,7 +578,7 @@ udat_toPattern( const UDateFormat *fmt,
U_CAPI void U_EXPORT2
udat_applyPattern( UDateFormat *format,
UBool localized,
- const UChar *pattern,
+ const char16_t *pattern,
int32_t patternLength)
{
const UnicodeString pat((UBool)(patternLength == -1), pattern, patternLength);
@@ -598,22 +599,22 @@ U_CAPI int32_t U_EXPORT2
udat_getSymbols(const UDateFormat *fmt,
UDateFormatSymbolType type,
int32_t index,
- UChar *result,
+ char16_t *result,
int32_t resultLength,
UErrorCode *status)
{
const DateFormatSymbols *syms;
const SimpleDateFormat* sdtfmt;
const RelativeDateFormat* rdtfmt;
- if ((sdtfmt = dynamic_cast<const SimpleDateFormat*>(reinterpret_cast<const DateFormat*>(fmt))) != NULL) {
+ if ((sdtfmt = dynamic_cast<const SimpleDateFormat*>(reinterpret_cast<const DateFormat*>(fmt))) != nullptr) {
syms = sdtfmt->getDateFormatSymbols();
- } else if ((rdtfmt = dynamic_cast<const RelativeDateFormat*>(reinterpret_cast<const DateFormat*>(fmt))) != NULL) {
+ } else if ((rdtfmt = dynamic_cast<const RelativeDateFormat*>(reinterpret_cast<const DateFormat*>(fmt))) != nullptr) {
syms = rdtfmt->getDateFormatSymbols();
} else {
return -1;
}
int32_t count = 0;
- const UnicodeString *res = NULL;
+ const UnicodeString *res = nullptr;
switch(type) {
case UDAT_ERAS:
@@ -647,8 +648,8 @@ udat_getSymbols(const UDateFormat *fmt,
case UDAT_LOCALIZED_CHARS:
{
UnicodeString res1;
- if(!(result==NULL && resultLength==0)) {
- // NULL destination for pure preflighting: empty dummy string
+ if(!(result==nullptr && resultLength==0)) {
+ // nullptr destination for pure preflighting: empty dummy string
// otherwise, alias the destination buffer
res1.setTo(result, 0, resultLength);
}
@@ -760,9 +761,9 @@ udat_countSymbols( const UDateFormat *fmt,
const DateFormatSymbols *syms;
const SimpleDateFormat* sdtfmt;
const RelativeDateFormat* rdtfmt;
- if ((sdtfmt = dynamic_cast<const SimpleDateFormat*>(reinterpret_cast<const DateFormat*>(fmt))) != NULL) {
+ if ((sdtfmt = dynamic_cast<const SimpleDateFormat*>(reinterpret_cast<const DateFormat*>(fmt))) != nullptr) {
syms = sdtfmt->getDateFormatSymbols();
- } else if ((rdtfmt = dynamic_cast<const RelativeDateFormat*>(reinterpret_cast<const DateFormat*>(fmt))) != NULL) {
+ } else if ((rdtfmt = dynamic_cast<const RelativeDateFormat*>(reinterpret_cast<const DateFormat*>(fmt))) != nullptr) {
syms = rdtfmt->getDateFormatSymbols();
} else {
return 0;
@@ -925,12 +926,12 @@ class DateFormatSymbolsSingleSetter /* not : public UObject because all methods
public:
static void
setSymbol(UnicodeString *array, int32_t count, int32_t index,
- const UChar *value, int32_t valueLength, UErrorCode &errorCode)
+ const char16_t *value, int32_t valueLength, UErrorCode &errorCode)
{
- if(array!=NULL) {
+ if(array!=nullptr) {
if(index>=count) {
errorCode=U_INDEX_OUTOFBOUNDS_ERROR;
- } else if(value==NULL) {
+ } else if(value==nullptr) {
errorCode=U_ILLEGAL_ARGUMENT_ERROR;
} else {
array[index].setTo(value, valueLength);
@@ -940,182 +941,182 @@ public:
static void
setEra(DateFormatSymbols *syms, int32_t index,
- const UChar *value, int32_t valueLength, UErrorCode &errorCode)
+ const char16_t *value, int32_t valueLength, UErrorCode &errorCode)
{
setSymbol(syms->fEras, syms->fErasCount, index, value, valueLength, errorCode);
}
static void
setEraName(DateFormatSymbols *syms, int32_t index,
- const UChar *value, int32_t valueLength, UErrorCode &errorCode)
+ const char16_t *value, int32_t valueLength, UErrorCode &errorCode)
{
setSymbol(syms->fEraNames, syms->fEraNamesCount, index, value, valueLength, errorCode);
}
static void
setMonth(DateFormatSymbols *syms, int32_t index,
- const UChar *value, int32_t valueLength, UErrorCode &errorCode)
+ const char16_t *value, int32_t valueLength, UErrorCode &errorCode)
{
setSymbol(syms->fMonths, syms->fMonthsCount, index, value, valueLength, errorCode);
}
static void
setShortMonth(DateFormatSymbols *syms, int32_t index,
- const UChar *value, int32_t valueLength, UErrorCode &errorCode)
+ const char16_t *value, int32_t valueLength, UErrorCode &errorCode)
{
setSymbol(syms->fShortMonths, syms->fShortMonthsCount, index, value, valueLength, errorCode);
}
static void
setNarrowMonth(DateFormatSymbols *syms, int32_t index,
- const UChar *value, int32_t valueLength, UErrorCode &errorCode)
+ const char16_t *value, int32_t valueLength, UErrorCode &errorCode)
{
setSymbol(syms->fNarrowMonths, syms->fNarrowMonthsCount, index, value, valueLength, errorCode);
}
static void
setStandaloneMonth(DateFormatSymbols *syms, int32_t index,
- const UChar *value, int32_t valueLength, UErrorCode &errorCode)
+ const char16_t *value, int32_t valueLength, UErrorCode &errorCode)
{
setSymbol(syms->fStandaloneMonths, syms->fStandaloneMonthsCount, index, value, valueLength, errorCode);
}
static void
setStandaloneShortMonth(DateFormatSymbols *syms, int32_t index,
- const UChar *value, int32_t valueLength, UErrorCode &errorCode)
+ const char16_t *value, int32_t valueLength, UErrorCode &errorCode)
{
setSymbol(syms->fStandaloneShortMonths, syms->fStandaloneShortMonthsCount, index, value, valueLength, errorCode);
}
static void
setStandaloneNarrowMonth(DateFormatSymbols *syms, int32_t index,
- const UChar *value, int32_t valueLength, UErrorCode &errorCode)
+ const char16_t *value, int32_t valueLength, UErrorCode &errorCode)
{
setSymbol(syms->fStandaloneNarrowMonths, syms->fStandaloneNarrowMonthsCount, index, value, valueLength, errorCode);
}
static void
setWeekday(DateFormatSymbols *syms, int32_t index,
- const UChar *value, int32_t valueLength, UErrorCode &errorCode)
+ const char16_t *value, int32_t valueLength, UErrorCode &errorCode)
{
setSymbol(syms->fWeekdays, syms->fWeekdaysCount, index, value, valueLength, errorCode);
}
static void
setShortWeekday(DateFormatSymbols *syms, int32_t index,
- const UChar *value, int32_t valueLength, UErrorCode &errorCode)
+ const char16_t *value, int32_t valueLength, UErrorCode &errorCode)
{
setSymbol(syms->fShortWeekdays, syms->fShortWeekdaysCount, index, value, valueLength, errorCode);
}
static void
setShorterWeekday(DateFormatSymbols *syms, int32_t index,
- const UChar *value, int32_t valueLength, UErrorCode &errorCode)
+ const char16_t *value, int32_t valueLength, UErrorCode &errorCode)
{
setSymbol(syms->fShorterWeekdays, syms->fShorterWeekdaysCount, index, value, valueLength, errorCode);
}
static void
setNarrowWeekday(DateFormatSymbols *syms, int32_t index,
- const UChar *value, int32_t valueLength, UErrorCode &errorCode)
+ const char16_t *value, int32_t valueLength, UErrorCode &errorCode)
{
setSymbol(syms->fNarrowWeekdays, syms->fNarrowWeekdaysCount, index, value, valueLength, errorCode);
}
static void
setStandaloneWeekday(DateFormatSymbols *syms, int32_t index,
- const UChar *value, int32_t valueLength, UErrorCode &errorCode)
+ const char16_t *value, int32_t valueLength, UErrorCode &errorCode)
{
setSymbol(syms->fStandaloneWeekdays, syms->fStandaloneWeekdaysCount, index, value, valueLength, errorCode);
}
static void
setStandaloneShortWeekday(DateFormatSymbols *syms, int32_t index,
- const UChar *value, int32_t valueLength, UErrorCode &errorCode)
+ const char16_t *value, int32_t valueLength, UErrorCode &errorCode)
{
setSymbol(syms->fStandaloneShortWeekdays, syms->fStandaloneShortWeekdaysCount, index, value, valueLength, errorCode);
}
static void
setStandaloneShorterWeekday(DateFormatSymbols *syms, int32_t index,
- const UChar *value, int32_t valueLength, UErrorCode &errorCode)
+ const char16_t *value, int32_t valueLength, UErrorCode &errorCode)
{
setSymbol(syms->fStandaloneShorterWeekdays, syms->fStandaloneShorterWeekdaysCount, index, value, valueLength, errorCode);
}
static void
setStandaloneNarrowWeekday(DateFormatSymbols *syms, int32_t index,
- const UChar *value, int32_t valueLength, UErrorCode &errorCode)
+ const char16_t *value, int32_t valueLength, UErrorCode &errorCode)
{
setSymbol(syms->fStandaloneNarrowWeekdays, syms->fStandaloneNarrowWeekdaysCount, index, value, valueLength, errorCode);
}
static void
setQuarter(DateFormatSymbols *syms, int32_t index,
- const UChar *value, int32_t valueLength, UErrorCode &errorCode)
+ const char16_t *value, int32_t valueLength, UErrorCode &errorCode)
{
setSymbol(syms->fQuarters, syms->fQuartersCount, index, value, valueLength, errorCode);
}
static void
setShortQuarter(DateFormatSymbols *syms, int32_t index,
- const UChar *value, int32_t valueLength, UErrorCode &errorCode)
+ const char16_t *value, int32_t valueLength, UErrorCode &errorCode)
{
setSymbol(syms->fShortQuarters, syms->fShortQuartersCount, index, value, valueLength, errorCode);
}
static void
setNarrowQuarter(DateFormatSymbols *syms, int32_t index,
- const UChar *value, int32_t valueLength, UErrorCode &errorCode)
+ const char16_t *value, int32_t valueLength, UErrorCode &errorCode)
{
setSymbol(syms->fNarrowQuarters, syms->fNarrowQuartersCount, index, value, valueLength, errorCode);
}
static void
setStandaloneQuarter(DateFormatSymbols *syms, int32_t index,
- const UChar *value, int32_t valueLength, UErrorCode &errorCode)
+ const char16_t *value, int32_t valueLength, UErrorCode &errorCode)
{
setSymbol(syms->fStandaloneQuarters, syms->fStandaloneQuartersCount, index, value, valueLength, errorCode);
}
static void
setStandaloneShortQuarter(DateFormatSymbols *syms, int32_t index,
- const UChar *value, int32_t valueLength, UErrorCode &errorCode)
+ const char16_t *value, int32_t valueLength, UErrorCode &errorCode)
{
setSymbol(syms->fStandaloneShortQuarters, syms->fStandaloneShortQuartersCount, index, value, valueLength, errorCode);
}
static void
setStandaloneNarrowQuarter(DateFormatSymbols *syms, int32_t index,
- const UChar *value, int32_t valueLength, UErrorCode &errorCode)
+ const char16_t *value, int32_t valueLength, UErrorCode &errorCode)
{
setSymbol(syms->fStandaloneNarrowQuarters, syms->fStandaloneNarrowQuartersCount, index, value, valueLength, errorCode);
}
static void
setShortYearNames(DateFormatSymbols *syms, int32_t index,
- const UChar *value, int32_t valueLength, UErrorCode &errorCode)
+ const char16_t *value, int32_t valueLength, UErrorCode &errorCode)
{
setSymbol(syms->fShortYearNames, syms->fShortYearNamesCount, index, value, valueLength, errorCode);
}
static void
setShortZodiacNames(DateFormatSymbols *syms, int32_t index,
- const UChar *value, int32_t valueLength, UErrorCode &errorCode)
+ const char16_t *value, int32_t valueLength, UErrorCode &errorCode)
{
setSymbol(syms->fShortZodiacNames, syms->fShortZodiacNamesCount, index, value, valueLength, errorCode);
}
static void
setAmPm(DateFormatSymbols *syms, int32_t index,
- const UChar *value, int32_t valueLength, UErrorCode &errorCode)
+ const char16_t *value, int32_t valueLength, UErrorCode &errorCode)
{
setSymbol(syms->fAmPms, syms->fAmPmsCount, index, value, valueLength, errorCode);
}
static void
setLocalPatternChars(DateFormatSymbols *syms,
- const UChar *value, int32_t valueLength, UErrorCode &errorCode)
+ const char16_t *value, int32_t valueLength, UErrorCode &errorCode)
{
setSymbol(&syms->fLocalPatternChars, 1, 0, value, valueLength, errorCode);
}
@@ -1127,7 +1128,7 @@ U_CAPI void U_EXPORT2
udat_setSymbols( UDateFormat *format,
UDateFormatSymbolType type,
int32_t index,
- UChar *value,
+ char16_t *value,
int32_t valueLength,
UErrorCode *status)
{
@@ -1253,11 +1254,11 @@ udat_getLocaleByType(const UDateFormat *fmt,
ULocDataLocaleType type,
UErrorCode* status)
{
- if (fmt == NULL) {
+ if (fmt == nullptr) {
if (U_SUCCESS(*status)) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
}
- return NULL;
+ return nullptr;
}
return ((Format*)fmt)->getLocaleID(type, *status);
}
@@ -1285,11 +1286,11 @@ udat_getContext(const UDateFormat* fmt, UDisplayContextType type, UErrorCode* st
/**
* Verify that fmt is a RelativeDateFormat. Invalid error if not.
* @param fmt the UDateFormat, definitely a DateFormat, maybe something else
- * @param status error code, will be set to failure if there is a failure or the fmt is NULL.
+ * @param status error code, will be set to failure if there is a failure or the fmt is nullptr.
*/
static void verifyIsRelativeDateFormat(const UDateFormat* fmt, UErrorCode *status) {
if(U_SUCCESS(*status) &&
- dynamic_cast<const RelativeDateFormat*>(reinterpret_cast<const DateFormat*>(fmt))==NULL) {
+ dynamic_cast<const RelativeDateFormat*>(reinterpret_cast<const DateFormat*>(fmt))==nullptr) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
}
}
@@ -1297,7 +1298,7 @@ static void verifyIsRelativeDateFormat(const UDateFormat* fmt, UErrorCode *statu
U_CAPI int32_t U_EXPORT2
udat_toPatternRelativeDate(const UDateFormat *fmt,
- UChar *result,
+ char16_t *result,
int32_t resultLength,
UErrorCode *status)
{
@@ -1305,14 +1306,14 @@ udat_toPatternRelativeDate(const UDateFormat *fmt,
if(U_FAILURE(*status)) {
return -1;
}
- if (result == NULL ? resultLength != 0 : resultLength < 0) {
+ if (result == nullptr ? resultLength != 0 : resultLength < 0) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return -1;
}
UnicodeString datePattern;
- if (result != NULL) {
- // NULL destination for pure preflighting: empty dummy string
+ if (result != nullptr) {
+ // nullptr destination for pure preflighting: empty dummy string
// otherwise, alias the destination buffer
datePattern.setTo(result, 0, resultLength);
}
@@ -1322,7 +1323,7 @@ udat_toPatternRelativeDate(const UDateFormat *fmt,
U_CAPI int32_t U_EXPORT2
udat_toPatternRelativeTime(const UDateFormat *fmt,
- UChar *result,
+ char16_t *result,
int32_t resultLength,
UErrorCode *status)
{
@@ -1330,14 +1331,14 @@ udat_toPatternRelativeTime(const UDateFormat *fmt,
if(U_FAILURE(*status)) {
return -1;
}
- if (result == NULL ? resultLength != 0 : resultLength < 0) {
+ if (result == nullptr ? resultLength != 0 : resultLength < 0) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return -1;
}
UnicodeString timePattern;
- if (result != NULL) {
- // NULL destination for pure preflighting: empty dummy string
+ if (result != nullptr) {
+ // nullptr destination for pure preflighting: empty dummy string
// otherwise, alias the destination buffer
timePattern.setTo(result, 0, resultLength);
}
@@ -1347,9 +1348,9 @@ udat_toPatternRelativeTime(const UDateFormat *fmt,
U_CAPI void U_EXPORT2
udat_applyPatternRelative(UDateFormat *format,
- const UChar *datePattern,
+ const char16_t *datePattern,
int32_t datePatternLength,
- const UChar *timePattern,
+ const char16_t *timePattern,
int32_t timePatternLength,
UErrorCode *status)
{
diff --git a/Build/source/libs/icu/icu-src/source/i18n/udateintervalformat.cpp b/Build/source/libs/icu/icu-src/source/i18n/udateintervalformat.cpp
index 355744346a3..a332eacc533 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/udateintervalformat.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/udateintervalformat.cpp
@@ -36,32 +36,32 @@ UPRV_FORMATTED_VALUE_CAPI_AUTO_IMPL(
U_CAPI UDateIntervalFormat* U_EXPORT2
udtitvfmt_open(const char* locale,
- const UChar* skeleton,
+ const char16_t* skeleton,
int32_t skeletonLength,
- const UChar* tzID,
+ const char16_t* tzID,
int32_t tzIDLength,
UErrorCode* status)
{
if (U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
- if ((skeleton == NULL ? skeletonLength != 0 : skeletonLength < -1) ||
- (tzID == NULL ? tzIDLength != 0 : tzIDLength < -1)
+ if ((skeleton == nullptr ? skeletonLength != 0 : skeletonLength < -1) ||
+ (tzID == nullptr ? tzIDLength != 0 : tzIDLength < -1)
) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
UnicodeString skel((UBool)(skeletonLength == -1), skeleton, skeletonLength);
LocalPointer<DateIntervalFormat> formatter(
DateIntervalFormat::createInstance(skel, Locale(locale), *status));
if (U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
if(tzID != 0) {
TimeZone *zone = TimeZone::createTimeZone(UnicodeString((UBool)(tzIDLength == -1), tzID, tzIDLength));
- if(zone == NULL) {
+ if(zone == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
formatter->adoptTimeZone(zone);
}
@@ -80,7 +80,7 @@ U_CAPI int32_t U_EXPORT2
udtitvfmt_format(const UDateIntervalFormat* formatter,
UDate fromDate,
UDate toDate,
- UChar* result,
+ char16_t* result,
int32_t resultCapacity,
UFieldPosition* position,
UErrorCode* status)
@@ -88,13 +88,13 @@ udtitvfmt_format(const UDateIntervalFormat* formatter,
if (U_FAILURE(*status)) {
return -1;
}
- if (result == NULL ? resultCapacity != 0 : resultCapacity < 0) {
+ if (result == nullptr ? resultCapacity != 0 : resultCapacity < 0) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
UnicodeString res;
- if (result != NULL) {
- // NULL destination for pure preflighting: empty dummy string
+ if (result != nullptr) {
+ // nullptr destination for pure preflighting: empty dummy string
// otherwise, alias the destination buffer (copied from udat_format)
res.setTo(result, 0, resultCapacity);
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/udatpg.cpp b/Build/source/libs/icu/icu-src/source/i18n/udatpg.cpp
index 9e61a120768..07aee36882d 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/udatpg.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/udatpg.cpp
@@ -30,7 +30,7 @@ U_NAMESPACE_USE
U_CAPI UDateTimePatternGenerator * U_EXPORT2
udatpg_open(const char *locale, UErrorCode *pErrorCode) {
- if(locale==NULL) {
+ if(locale==nullptr) {
return (UDateTimePatternGenerator *)DateTimePatternGenerator::createInstance(*pErrorCode);
} else {
return (UDateTimePatternGenerator *)DateTimePatternGenerator::createInstance(Locale(locale), *pErrorCode);
@@ -50,15 +50,15 @@ udatpg_close(UDateTimePatternGenerator *dtpg) {
U_CAPI UDateTimePatternGenerator * U_EXPORT2
udatpg_clone(const UDateTimePatternGenerator *dtpg, UErrorCode *pErrorCode) {
if(U_FAILURE(*pErrorCode)) {
- return NULL;
+ return nullptr;
}
return (UDateTimePatternGenerator *)(((const DateTimePatternGenerator *)dtpg)->clone());
}
U_CAPI int32_t U_EXPORT2
udatpg_getBestPattern(UDateTimePatternGenerator *dtpg,
- const UChar *skeleton, int32_t length,
- UChar *bestPattern, int32_t capacity,
+ const char16_t *skeleton, int32_t length,
+ char16_t *bestPattern, int32_t capacity,
UErrorCode *pErrorCode) {
return udatpg_getBestPatternWithOptions(dtpg, skeleton, length,
UDATPG_MATCH_NO_OPTIONS,
@@ -67,14 +67,14 @@ udatpg_getBestPattern(UDateTimePatternGenerator *dtpg,
U_CAPI int32_t U_EXPORT2
udatpg_getBestPatternWithOptions(UDateTimePatternGenerator *dtpg,
- const UChar *skeleton, int32_t length,
+ const char16_t *skeleton, int32_t length,
UDateTimePatternMatchOptions options,
- UChar *bestPattern, int32_t capacity,
+ char16_t *bestPattern, int32_t capacity,
UErrorCode *pErrorCode) {
if(U_FAILURE(*pErrorCode)) {
return 0;
}
- if(skeleton==NULL && length!=0) {
+ if(skeleton==nullptr && length!=0) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -85,13 +85,13 @@ udatpg_getBestPatternWithOptions(UDateTimePatternGenerator *dtpg,
U_CAPI int32_t U_EXPORT2
udatpg_getSkeleton(UDateTimePatternGenerator * /* dtpg */,
- const UChar *pattern, int32_t length,
- UChar *skeleton, int32_t capacity,
+ const char16_t *pattern, int32_t length,
+ char16_t *skeleton, int32_t capacity,
UErrorCode *pErrorCode) {
if(U_FAILURE(*pErrorCode)) {
return 0;
}
- if(pattern==NULL && length!=0) {
+ if(pattern==nullptr && length!=0) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -103,13 +103,13 @@ udatpg_getSkeleton(UDateTimePatternGenerator * /* dtpg */,
U_CAPI int32_t U_EXPORT2
udatpg_getBaseSkeleton(UDateTimePatternGenerator * /* dtpg */,
- const UChar *pattern, int32_t length,
- UChar *skeleton, int32_t capacity,
+ const char16_t *pattern, int32_t length,
+ char16_t *skeleton, int32_t capacity,
UErrorCode *pErrorCode) {
if(U_FAILURE(*pErrorCode)) {
return 0;
}
- if(pattern==NULL && length!=0) {
+ if(pattern==nullptr && length!=0) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -121,14 +121,14 @@ udatpg_getBaseSkeleton(UDateTimePatternGenerator * /* dtpg */,
U_CAPI UDateTimePatternConflict U_EXPORT2
udatpg_addPattern(UDateTimePatternGenerator *dtpg,
- const UChar *pattern, int32_t patternLength,
+ const char16_t *pattern, int32_t patternLength,
UBool override,
- UChar *conflictingPattern, int32_t capacity, int32_t *pLength,
+ char16_t *conflictingPattern, int32_t capacity, int32_t *pLength,
UErrorCode *pErrorCode) {
if(U_FAILURE(*pErrorCode)) {
return UDATPG_NO_CONFLICT;
}
- if(pattern==NULL && patternLength!=0) {
+ if(pattern==nullptr && patternLength!=0) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return UDATPG_NO_CONFLICT;
}
@@ -137,7 +137,7 @@ udatpg_addPattern(UDateTimePatternGenerator *dtpg,
UDateTimePatternConflict result=((DateTimePatternGenerator *)dtpg)->
addPattern(patternString, override, conflictingPatternString, *pErrorCode);
int32_t length=conflictingPatternString.extract(conflictingPattern, capacity, *pErrorCode);
- if(pLength!=NULL) {
+ if(pLength!=nullptr) {
*pLength=length;
}
return result;
@@ -146,17 +146,17 @@ udatpg_addPattern(UDateTimePatternGenerator *dtpg,
U_CAPI void U_EXPORT2
udatpg_setAppendItemFormat(UDateTimePatternGenerator *dtpg,
UDateTimePatternField field,
- const UChar *value, int32_t length) {
+ const char16_t *value, int32_t length) {
UnicodeString valueString((UBool)(length<0), value, length);
((DateTimePatternGenerator *)dtpg)->setAppendItemFormat(field, valueString);
}
-U_CAPI const UChar * U_EXPORT2
+U_CAPI const char16_t * U_EXPORT2
udatpg_getAppendItemFormat(const UDateTimePatternGenerator *dtpg,
UDateTimePatternField field,
int32_t *pLength) {
const UnicodeString &result=((const DateTimePatternGenerator *)dtpg)->getAppendItemFormat(field);
- if(pLength!=NULL) {
+ if(pLength!=nullptr) {
*pLength=result.length();
}
return result.getBuffer();
@@ -165,17 +165,17 @@ udatpg_getAppendItemFormat(const UDateTimePatternGenerator *dtpg,
U_CAPI void U_EXPORT2
udatpg_setAppendItemName(UDateTimePatternGenerator *dtpg,
UDateTimePatternField field,
- const UChar *value, int32_t length) {
+ const char16_t *value, int32_t length) {
UnicodeString valueString((UBool)(length<0), value, length);
((DateTimePatternGenerator *)dtpg)->setAppendItemName(field, valueString);
}
-U_CAPI const UChar * U_EXPORT2
+U_CAPI const char16_t * U_EXPORT2
udatpg_getAppendItemName(const UDateTimePatternGenerator *dtpg,
UDateTimePatternField field,
int32_t *pLength) {
const UnicodeString &result=((const DateTimePatternGenerator *)dtpg)->getAppendItemName(field);
- if(pLength!=NULL) {
+ if(pLength!=nullptr) {
*pLength=result.length();
}
return result.getBuffer();
@@ -185,16 +185,16 @@ U_CAPI int32_t U_EXPORT2
udatpg_getFieldDisplayName(const UDateTimePatternGenerator *dtpg,
UDateTimePatternField field,
UDateTimePGDisplayWidth width,
- UChar *fieldName, int32_t capacity,
+ char16_t *fieldName, int32_t capacity,
UErrorCode *pErrorCode) {
if (U_FAILURE(*pErrorCode))
return -1;
- if (fieldName == NULL ? capacity != 0 : capacity < 0) {
+ if (fieldName == nullptr ? capacity != 0 : capacity < 0) {
*pErrorCode = U_ILLEGAL_ARGUMENT_ERROR;
return -1;
}
UnicodeString result = ((const DateTimePatternGenerator *)dtpg)->getFieldDisplayName(field,width);
- if (fieldName == NULL) {
+ if (fieldName == nullptr) {
return result.length();
}
return result.extract(fieldName, capacity, *pErrorCode);
@@ -202,12 +202,12 @@ udatpg_getFieldDisplayName(const UDateTimePatternGenerator *dtpg,
U_CAPI void U_EXPORT2
udatpg_setDateTimeFormat(const UDateTimePatternGenerator *dtpg,
- const UChar *dtFormat, int32_t length) {
+ const char16_t *dtFormat, int32_t length) {
UnicodeString dtFormatString((UBool)(length<0), dtFormat, length);
((DateTimePatternGenerator *)dtpg)->setDateTimeFormat(dtFormatString);
}
-U_CAPI const UChar * U_EXPORT2
+U_CAPI const char16_t * U_EXPORT2
udatpg_getDateTimeFormat(const UDateTimePatternGenerator *dtpg,
int32_t *pLength) {
UErrorCode status = U_ZERO_ERROR;
@@ -217,7 +217,7 @@ udatpg_getDateTimeFormat(const UDateTimePatternGenerator *dtpg,
U_CAPI void U_EXPORT2
udatpg_setDateTimeFormatForStyle(UDateTimePatternGenerator *udtpg,
UDateFormatStyle style,
- const UChar *dateTimeFormat, int32_t length,
+ const char16_t *dateTimeFormat, int32_t length,
UErrorCode *pErrorCode) {
if (U_FAILURE(*pErrorCode)) {
return;
@@ -230,11 +230,11 @@ udatpg_setDateTimeFormatForStyle(UDateTimePatternGenerator *udtpg,
dtpg->setDateTimeFormat(style, dtFormatString, *pErrorCode);
}
-U_CAPI const UChar* U_EXPORT2
+U_CAPI const char16_t* U_EXPORT2
udatpg_getDateTimeFormatForStyle(const UDateTimePatternGenerator *udtpg,
UDateFormatStyle style, int32_t *pLength,
UErrorCode *pErrorCode) {
- static const UChar emptyString[] = { (UChar)0 };
+ static const char16_t emptyString[] = { (char16_t)0 };
if (U_FAILURE(*pErrorCode)) {
if (pLength !=nullptr) {
*pLength = 0;
@@ -254,16 +254,16 @@ udatpg_getDateTimeFormatForStyle(const UDateTimePatternGenerator *udtpg,
U_CAPI void U_EXPORT2
udatpg_setDecimal(UDateTimePatternGenerator *dtpg,
- const UChar *decimal, int32_t length) {
+ const char16_t *decimal, int32_t length) {
UnicodeString decimalString((UBool)(length<0), decimal, length);
((DateTimePatternGenerator *)dtpg)->setDecimal(decimalString);
}
-U_CAPI const UChar * U_EXPORT2
+U_CAPI const char16_t * U_EXPORT2
udatpg_getDecimal(const UDateTimePatternGenerator *dtpg,
int32_t *pLength) {
const UnicodeString &result=((const DateTimePatternGenerator *)dtpg)->getDecimal();
- if(pLength!=NULL) {
+ if(pLength!=nullptr) {
*pLength=result.length();
}
return result.getBuffer();
@@ -271,9 +271,9 @@ udatpg_getDecimal(const UDateTimePatternGenerator *dtpg,
U_CAPI int32_t U_EXPORT2
udatpg_replaceFieldTypes(UDateTimePatternGenerator *dtpg,
- const UChar *pattern, int32_t patternLength,
- const UChar *skeleton, int32_t skeletonLength,
- UChar *dest, int32_t destCapacity,
+ const char16_t *pattern, int32_t patternLength,
+ const char16_t *skeleton, int32_t skeletonLength,
+ char16_t *dest, int32_t destCapacity,
UErrorCode *pErrorCode) {
return udatpg_replaceFieldTypesWithOptions(dtpg, pattern, patternLength, skeleton, skeletonLength,
UDATPG_MATCH_NO_OPTIONS,
@@ -282,15 +282,15 @@ udatpg_replaceFieldTypes(UDateTimePatternGenerator *dtpg,
U_CAPI int32_t U_EXPORT2
udatpg_replaceFieldTypesWithOptions(UDateTimePatternGenerator *dtpg,
- const UChar *pattern, int32_t patternLength,
- const UChar *skeleton, int32_t skeletonLength,
+ const char16_t *pattern, int32_t patternLength,
+ const char16_t *skeleton, int32_t skeletonLength,
UDateTimePatternMatchOptions options,
- UChar *dest, int32_t destCapacity,
+ char16_t *dest, int32_t destCapacity,
UErrorCode *pErrorCode) {
if(U_FAILURE(*pErrorCode)) {
return 0;
}
- if((pattern==NULL && patternLength!=0) || (skeleton==NULL && skeletonLength!=0)) {
+ if((pattern==nullptr && patternLength!=0) || (skeleton==nullptr && skeletonLength!=0)) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -314,13 +314,13 @@ udatpg_openBaseSkeletons(const UDateTimePatternGenerator *dtpg, UErrorCode *pErr
pErrorCode);
}
-U_CAPI const UChar * U_EXPORT2
+U_CAPI const char16_t * U_EXPORT2
udatpg_getPatternForSkeleton(const UDateTimePatternGenerator *dtpg,
- const UChar *skeleton, int32_t skeletonLength,
+ const char16_t *skeleton, int32_t skeletonLength,
int32_t *pLength) {
UnicodeString skeletonString((UBool)(skeletonLength<0), skeleton, skeletonLength);
const UnicodeString &result=((const DateTimePatternGenerator *)dtpg)->getPatternForSkeleton(skeletonString);
- if(pLength!=NULL) {
+ if(pLength!=nullptr) {
*pLength=result.length();
}
return result.getBuffer();
diff --git a/Build/source/libs/icu/icu-src/source/i18n/ufieldpositer.cpp b/Build/source/libs/icu/icu-src/source/i18n/ufieldpositer.cpp
index 64de856c308..f28e1aa20ee 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/ufieldpositer.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/ufieldpositer.cpp
@@ -22,10 +22,10 @@ U_CAPI UFieldPositionIterator* U_EXPORT2
ufieldpositer_open(UErrorCode* status)
{
if (U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
FieldPositionIterator* fpositer = new FieldPositionIterator();
- if (fpositer == NULL) {
+ if (fpositer == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
}
return (UFieldPositionIterator*)fpositer;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/uitercollationiterator.cpp b/Build/source/libs/icu/icu-src/source/i18n/uitercollationiterator.cpp
index 26cd75a6bd9..6f840f3fe5e 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/uitercollationiterator.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/uitercollationiterator.cpp
@@ -50,11 +50,11 @@ UIterCollationIterator::handleNextCE32(UChar32 &c, UErrorCode & /*errorCode*/) {
return UTRIE2_GET32_FROM_U16_SINGLE_LEAD(trie, c);
}
-UChar
+char16_t
UIterCollationIterator::handleGetTrailSurrogate() {
UChar32 trail = iter.next(&iter);
if(!U16_IS_TRAIL(trail) && trail >= 0) { iter.previous(&iter); }
- return (UChar)trail;
+ return (char16_t)trail;
}
UChar32
@@ -140,7 +140,7 @@ FCDUIterCollationIterator::handleNextCE32(UChar32 &c, UErrorCode &errorCode) {
return UTRIE2_GET32_FROM_U16_SINGLE_LEAD(trie, c);
}
-UChar
+char16_t
FCDUIterCollationIterator::handleGetTrailSurrogate() {
if(state <= ITER_IN_FCD_SEGMENT) {
UChar32 trail = iter.next(&iter);
@@ -149,10 +149,10 @@ FCDUIterCollationIterator::handleGetTrailSurrogate() {
} else if(trail >= 0) {
iter.previous(&iter);
}
- return (UChar)trail;
+ return (char16_t)trail;
} else {
U_ASSERT(pos < normalized.length());
- UChar trail;
+ char16_t trail;
if(U16_IS_TRAIL(trail = normalized[pos])) { ++pos; }
return trail;
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/uitercollationiterator.h b/Build/source/libs/icu/icu-src/source/i18n/uitercollationiterator.h
index e0da353f268..23d8562a87f 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/uitercollationiterator.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/uitercollationiterator.h
@@ -50,7 +50,7 @@ public:
protected:
virtual uint32_t handleNextCE32(UChar32 &c, UErrorCode &errorCode) override;
- virtual UChar handleGetTrailSurrogate() override;
+ virtual char16_t handleGetTrailSurrogate() override;
virtual void forwardNumCodePoints(int32_t num, UErrorCode &errorCode) override;
@@ -82,7 +82,7 @@ public:
protected:
virtual uint32_t handleNextCE32(UChar32 &c, UErrorCode &errorCode) override;
- virtual UChar handleGetTrailSurrogate() override;
+ virtual char16_t handleGetTrailSurrogate() override;
virtual void forwardNumCodePoints(int32_t num, UErrorCode &errorCode) override;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/ulistformatter.cpp b/Build/source/libs/icu/icu-src/source/i18n/ulistformatter.cpp
index 7e8b385c96b..721905f0970 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/ulistformatter.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/ulistformatter.cpp
@@ -24,11 +24,11 @@ ulistfmt_open(const char* locale,
UErrorCode* status)
{
if (U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
LocalPointer<ListFormatter> listfmt(ListFormatter::createInstance(Locale(locale), *status));
if (U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
return (UListFormatter*)listfmt.orphan();
}
@@ -39,11 +39,11 @@ ulistfmt_openForType(const char* locale, UListFormatterType type,
UListFormatterWidth width, UErrorCode* status)
{
if (U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
LocalPointer<ListFormatter> listfmt(ListFormatter::createInstance(Locale(locale), type, width, *status));
if (U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
return (UListFormatter*)listfmt.orphan();
}
@@ -67,14 +67,14 @@ UPRV_FORMATTED_VALUE_CAPI_AUTO_IMPL(
static UnicodeString* getUnicodeStrings(
- const UChar* const strings[],
+ const char16_t* const strings[],
const int32_t* stringLengths,
int32_t stringCount,
UnicodeString* length4StackBuffer,
LocalArray<UnicodeString>& maybeOwner,
UErrorCode& status) {
U_ASSERT(U_SUCCESS(status));
- if (stringCount < 0 || (strings == NULL && stringCount > 0)) {
+ if (stringCount < 0 || (strings == nullptr && stringCount > 0)) {
status = U_ILLEGAL_ARGUMENT_ERROR;
return nullptr;
}
@@ -86,7 +86,7 @@ static UnicodeString* getUnicodeStrings(
}
ustrings = maybeOwner.getAlias();
}
- if (stringLengths == NULL) {
+ if (stringLengths == nullptr) {
for (int32_t stringIndex = 0; stringIndex < stringCount; stringIndex++) {
ustrings[stringIndex].setTo(true, strings[stringIndex], -1);
}
@@ -101,17 +101,17 @@ static UnicodeString* getUnicodeStrings(
U_CAPI int32_t U_EXPORT2
ulistfmt_format(const UListFormatter* listfmt,
- const UChar* const strings[],
+ const char16_t* const strings[],
const int32_t * stringLengths,
int32_t stringCount,
- UChar* result,
+ char16_t* result,
int32_t resultCapacity,
UErrorCode* status)
{
if (U_FAILURE(*status)) {
return -1;
}
- if ((result == NULL) ? resultCapacity != 0 : resultCapacity < 0) {
+ if ((result == nullptr) ? resultCapacity != 0 : resultCapacity < 0) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return -1;
}
@@ -123,8 +123,8 @@ ulistfmt_format(const UListFormatter* listfmt,
return -1;
}
UnicodeString res;
- if (result != NULL) {
- // NULL destination for pure preflighting: empty dummy string
+ if (result != nullptr) {
+ // nullptr destination for pure preflighting: empty dummy string
// otherwise, alias the destination buffer (copied from udat_format)
res.setTo(result, 0, resultCapacity);
}
@@ -136,7 +136,7 @@ ulistfmt_format(const UListFormatter* listfmt,
U_CAPI void U_EXPORT2
ulistfmt_formatStringsToResult(
const UListFormatter* listfmt,
- const UChar* const strings[],
+ const char16_t* const strings[],
const int32_t * stringLengths,
int32_t stringCount,
UFormattedList* uresult,
diff --git a/Build/source/libs/icu/icu-src/source/i18n/ulocdata.cpp b/Build/source/libs/icu/icu-src/source/i18n/ulocdata.cpp
index 48efe9d55ad..0aab6295819 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/ulocdata.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/ulocdata.cpp
@@ -55,24 +55,30 @@ ulocdata_open(const char *localeID, UErrorCode *status)
ULocaleData *uld;
if (U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
uld = (ULocaleData *)uprv_malloc(sizeof(ULocaleData));
- if (uld == NULL) {
+ if (uld == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
- return(NULL);
+ return(nullptr);
}
- uld->langBundle = NULL;
+ uld->langBundle = nullptr;
uld->noSubstitute = false;
- uld->bundle = ures_open(NULL, localeID, status);
- uld->langBundle = ures_open(U_ICUDATA_LANG, localeID, status);
+ uld->bundle = ures_open(nullptr, localeID, status);
if (U_FAILURE(*status)) {
uprv_free(uld);
- return NULL;
+ return nullptr;
+ }
+
+ // ICU-22149: not all functions require lang data, so fail gracefully if it is not present
+ UErrorCode oldStatus = *status;
+ uld->langBundle = ures_open(U_ICUDATA_LANG, localeID, status);
+ if (*status == U_MISSING_RESOURCE_ERROR) {
+ *status = oldStatus;
}
return uld;
@@ -81,7 +87,7 @@ ulocdata_open(const char *localeID, UErrorCode *status)
U_CAPI void U_EXPORT2
ulocdata_close(ULocaleData *uld)
{
- if ( uld != NULL ) {
+ if ( uld != nullptr ) {
ures_close(uld->langBundle);
ures_close(uld->bundle);
uprv_free(uld);
@@ -108,12 +114,12 @@ ulocdata_getExemplarSet(ULocaleData *uld, USet *fillIn,
"AuxExemplarCharacters",
"ExemplarCharactersIndex",
"ExemplarCharactersPunctuation"};
- const UChar *exemplarChars = NULL;
+ const char16_t *exemplarChars = nullptr;
int32_t len = 0;
UErrorCode localStatus = U_ZERO_ERROR;
if (U_FAILURE(*status))
- return NULL;
+ return nullptr;
exemplarChars = ures_getStringByKey(uld->bundle, exemplarSetTypes[extype], &len, &localStatus);
if ( (localStatus == U_USING_DEFAULT_WARNING) && uld->noSubstitute ) {
@@ -125,9 +131,9 @@ ulocdata_getExemplarSet(ULocaleData *uld, USet *fillIn,
}
if (U_FAILURE(*status))
- return NULL;
+ return nullptr;
- if(fillIn != NULL)
+ if(fillIn != nullptr)
uset_applyPattern(fillIn, exemplarChars, len,
USET_IGNORE_SPACE | options, status);
else
@@ -140,7 +146,7 @@ ulocdata_getExemplarSet(ULocaleData *uld, USet *fillIn,
U_CAPI int32_t U_EXPORT2
ulocdata_getDelimiter(ULocaleData *uld, ULocaleDataDelimiterType type,
- UChar *result, int32_t resultLength, UErrorCode *status){
+ char16_t *result, int32_t resultLength, UErrorCode *status){
static const char* const delimiterKeys[] = {
"quotationStart",
@@ -151,13 +157,13 @@ ulocdata_getDelimiter(ULocaleData *uld, ULocaleDataDelimiterType type,
UResourceBundle *delimiterBundle;
int32_t len = 0;
- const UChar *delimiter = NULL;
+ const char16_t *delimiter = nullptr;
UErrorCode localStatus = U_ZERO_ERROR;
if (U_FAILURE(*status))
return 0;
- delimiterBundle = ures_getByKey(uld->bundle, "delimiters", NULL, &localStatus);
+ delimiterBundle = ures_getByKey(uld->bundle, "delimiters", nullptr, &localStatus);
if ( (localStatus == U_USING_DEFAULT_WARNING) && uld->noSubstitute ) {
localStatus = U_MISSING_RESOURCE_ERROR;
@@ -194,24 +200,24 @@ ulocdata_getDelimiter(ULocaleData *uld, ULocaleDataDelimiterType type,
static UResourceBundle * measurementTypeBundleForLocale(const char *localeID, const char *measurementType, UErrorCode *status){
char region[ULOC_COUNTRY_CAPACITY];
UResourceBundle *rb;
- UResourceBundle *measTypeBundle = NULL;
+ UResourceBundle *measTypeBundle = nullptr;
ulocimp_getRegionForSupplementalData(localeID, true, region, ULOC_COUNTRY_CAPACITY, status);
- rb = ures_openDirect(NULL, "supplementalData", status);
+ rb = ures_openDirect(nullptr, "supplementalData", status);
ures_getByKey(rb, "measurementData", rb, status);
- if (rb != NULL) {
- UResourceBundle *measDataBundle = ures_getByKey(rb, region, NULL, status);
+ if (rb != nullptr) {
+ UResourceBundle *measDataBundle = ures_getByKey(rb, region, nullptr, status);
if (U_SUCCESS(*status)) {
- measTypeBundle = ures_getByKey(measDataBundle, measurementType, NULL, status);
+ measTypeBundle = ures_getByKey(measDataBundle, measurementType, nullptr, status);
}
if (*status == U_MISSING_RESOURCE_ERROR) {
*status = U_ZERO_ERROR;
- if (measDataBundle != NULL) {
+ if (measDataBundle != nullptr) {
ures_close(measDataBundle);
}
- measDataBundle = ures_getByKey(rb, "001", NULL, status);
- measTypeBundle = ures_getByKey(measDataBundle, measurementType, NULL, status);
+ measDataBundle = ures_getByKey(rb, "001", nullptr, status);
+ measTypeBundle = ures_getByKey(measDataBundle, measurementType, nullptr, status);
}
ures_close(measDataBundle);
}
@@ -222,10 +228,10 @@ static UResourceBundle * measurementTypeBundleForLocale(const char *localeID, co
U_CAPI UMeasurementSystem U_EXPORT2
ulocdata_getMeasurementSystem(const char *localeID, UErrorCode *status){
- UResourceBundle* measurement=NULL;
+ UResourceBundle* measurement=nullptr;
UMeasurementSystem system = UMS_LIMIT;
- if(status == NULL || U_FAILURE(*status)){
+ if(status == nullptr || U_FAILURE(*status)){
return system;
}
@@ -243,11 +249,11 @@ ulocdata_getMeasurementSystem(const char *localeID, UErrorCode *status){
U_CAPI void U_EXPORT2
ulocdata_getPaperSize(const char* localeID, int32_t *height, int32_t *width, UErrorCode *status){
- UResourceBundle* paperSizeBundle = NULL;
- const int32_t* paperSize=NULL;
+ UResourceBundle* paperSizeBundle = nullptr;
+ const int32_t* paperSize=nullptr;
int32_t len = 0;
- if(status == NULL || U_FAILURE(*status)){
+ if(status == nullptr || U_FAILURE(*status)){
return;
}
@@ -269,26 +275,31 @@ ulocdata_getPaperSize(const char* localeID, int32_t *height, int32_t *width, UEr
U_CAPI void U_EXPORT2
ulocdata_getCLDRVersion(UVersionInfo versionArray, UErrorCode *status) {
- UResourceBundle *rb = NULL;
- rb = ures_openDirect(NULL, "supplementalData", status);
+ UResourceBundle *rb = nullptr;
+ rb = ures_openDirect(nullptr, "supplementalData", status);
ures_getVersionByKey(rb, "cldrVersion", versionArray, status);
ures_close(rb);
}
U_CAPI int32_t U_EXPORT2
ulocdata_getLocaleDisplayPattern(ULocaleData *uld,
- UChar *result,
+ char16_t *result,
int32_t resultCapacity,
UErrorCode *status) {
UResourceBundle *patternBundle;
int32_t len = 0;
- const UChar *pattern = NULL;
+ const char16_t *pattern = nullptr;
UErrorCode localStatus = U_ZERO_ERROR;
if (U_FAILURE(*status))
return 0;
- patternBundle = ures_getByKey(uld->langBundle, "localeDisplayPattern", NULL, &localStatus);
+ if (uld->langBundle == nullptr) {
+ *status = U_MISSING_RESOURCE_ERROR;
+ return 0;
+ }
+
+ patternBundle = ures_getByKey(uld->langBundle, "localeDisplayPattern", nullptr, &localStatus);
if ( (localStatus == U_USING_DEFAULT_WARNING) && uld->noSubstitute ) {
localStatus = U_MISSING_RESOURCE_ERROR;
@@ -325,22 +336,27 @@ ulocdata_getLocaleDisplayPattern(ULocaleData *uld,
U_CAPI int32_t U_EXPORT2
ulocdata_getLocaleSeparator(ULocaleData *uld,
- UChar *result,
+ char16_t *result,
int32_t resultCapacity,
UErrorCode *status) {
UResourceBundle *separatorBundle;
int32_t len = 0;
- const UChar *separator = NULL;
+ const char16_t *separator = nullptr;
UErrorCode localStatus = U_ZERO_ERROR;
- UChar *p0, *p1;
- static const UChar sub0[4] = { 0x007b, 0x0030, 0x007d , 0x0000 }; /* {0} */
- static const UChar sub1[4] = { 0x007b, 0x0031, 0x007d , 0x0000 }; /* {1} */
+ char16_t *p0, *p1;
+ static const char16_t sub0[4] = { 0x007b, 0x0030, 0x007d , 0x0000 }; /* {0} */
+ static const char16_t sub1[4] = { 0x007b, 0x0031, 0x007d , 0x0000 }; /* {1} */
static const int32_t subLen = 3;
if (U_FAILURE(*status))
return 0;
- separatorBundle = ures_getByKey(uld->langBundle, "localeDisplayPattern", NULL, &localStatus);
+ if (uld->langBundle == nullptr) {
+ *status = U_MISSING_RESOURCE_ERROR;
+ return 0;
+ }
+
+ separatorBundle = ures_getByKey(uld->langBundle, "localeDisplayPattern", nullptr, &localStatus);
if ( (localStatus == U_USING_DEFAULT_WARNING) && uld->noSubstitute ) {
localStatus = U_MISSING_RESOURCE_ERROR;
@@ -373,8 +389,8 @@ ulocdata_getLocaleSeparator(ULocaleData *uld,
/* For backwards compatibility, if we have a pattern, return the portion between {0} and {1} */
p0=u_strstr(separator, sub0);
p1=u_strstr(separator, sub1);
- if (p0!=NULL && p1!=NULL && p0<=p1) {
- separator = (const UChar *)p0 + subLen;
+ if (p0!=nullptr && p1!=nullptr && p0<=p1) {
+ separator = (const char16_t *)p0 + subLen;
len = static_cast<int32_t>(p1 - separator);
/* Desired separator is no longer zero-terminated; handle that if necessary */
if (len < resultCapacity) {
diff --git a/Build/source/libs/icu/icu-src/source/i18n/umsg.cpp b/Build/source/libs/icu/icu-src/source/i18n/umsg.cpp
index c2d5a9a1f5a..ea6e62e2aaf 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/umsg.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/umsg.cpp
@@ -59,9 +59,9 @@ U_NAMESPACE_USE
U_CAPI int32_t
u_formatMessage(const char *locale,
- const UChar *pattern,
+ const char16_t *pattern,
int32_t patternLength,
- UChar *result,
+ char16_t *result,
int32_t resultLength,
UErrorCode *status,
...)
@@ -81,16 +81,16 @@ u_formatMessage(const char *locale,
U_CAPI int32_t U_EXPORT2
u_vformatMessage( const char *locale,
- const UChar *pattern,
+ const char16_t *pattern,
int32_t patternLength,
- UChar *result,
+ char16_t *result,
int32_t resultLength,
va_list ap,
UErrorCode *status)
{
//argument checking deferred to subsequent method calls
- UMessageFormat *fmt = umsg_open(pattern,patternLength,locale,NULL,status);
+ UMessageFormat *fmt = umsg_open(pattern,patternLength,locale,nullptr,status);
int32_t retVal = umsg_vformat(fmt,result,resultLength,ap,status);
umsg_close(fmt);
return retVal;
@@ -98,9 +98,9 @@ u_vformatMessage( const char *locale,
U_CAPI int32_t
u_formatMessageWithError(const char *locale,
- const UChar *pattern,
+ const char16_t *pattern,
int32_t patternLength,
- UChar *result,
+ char16_t *result,
int32_t resultLength,
UParseError *parseError,
UErrorCode *status,
@@ -121,9 +121,9 @@ u_formatMessageWithError(const char *locale,
U_CAPI int32_t U_EXPORT2
u_vformatMessageWithError( const char *locale,
- const UChar *pattern,
+ const char16_t *pattern,
int32_t patternLength,
- UChar *result,
+ char16_t *result,
int32_t resultLength,
UParseError *parseError,
va_list ap,
@@ -144,9 +144,9 @@ u_vformatMessageWithError( const char *locale,
// 3. Iterate through each formattable returned, and assign to the arguments
U_CAPI void
u_parseMessage( const char *locale,
- const UChar *pattern,
+ const char16_t *pattern,
int32_t patternLength,
- const UChar *source,
+ const char16_t *source,
int32_t sourceLength,
UErrorCode *status,
...)
@@ -164,15 +164,15 @@ u_parseMessage( const char *locale,
U_CAPI void U_EXPORT2
u_vparseMessage(const char *locale,
- const UChar *pattern,
+ const char16_t *pattern,
int32_t patternLength,
- const UChar *source,
+ const char16_t *source,
int32_t sourceLength,
va_list ap,
UErrorCode *status)
{
//argument checking deferred to subsequent method calls
- UMessageFormat *fmt = umsg_open(pattern,patternLength,locale,NULL,status);
+ UMessageFormat *fmt = umsg_open(pattern,patternLength,locale,nullptr,status);
int32_t count = 0;
umsg_vparse(fmt,source,sourceLength,&count,ap,status);
umsg_close(fmt);
@@ -180,9 +180,9 @@ u_vparseMessage(const char *locale,
U_CAPI void
u_parseMessageWithError(const char *locale,
- const UChar *pattern,
+ const char16_t *pattern,
int32_t patternLength,
- const UChar *source,
+ const char16_t *source,
int32_t sourceLength,
UParseError *error,
UErrorCode *status,
@@ -201,9 +201,9 @@ u_parseMessageWithError(const char *locale,
}
U_CAPI void U_EXPORT2
u_vparseMessageWithError(const char *locale,
- const UChar *pattern,
+ const char16_t *pattern,
int32_t patternLength,
- const UChar *source,
+ const char16_t *source,
int32_t sourceLength,
va_list ap,
UParseError *error,
@@ -223,24 +223,24 @@ u_vparseMessageWithError(const char *locale,
U_CAPI UMessageFormat* U_EXPORT2
-umsg_open( const UChar *pattern,
+umsg_open( const char16_t *pattern,
int32_t patternLength,
const char *locale,
UParseError *parseError,
UErrorCode *status)
{
//check arguments
- if(status==NULL || U_FAILURE(*status))
+ if(status==nullptr || U_FAILURE(*status))
{
return 0;
}
- if(pattern==NULL||patternLength<-1){
+ if(pattern==nullptr||patternLength<-1){
*status=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
UParseError tErr;
- if(parseError==NULL)
+ if(parseError==nullptr)
{
parseError = &tErr;
}
@@ -249,9 +249,9 @@ umsg_open( const UChar *pattern,
UnicodeString patString(patternLength == -1, pattern, len);
MessageFormat* retVal = new MessageFormat(patString,Locale(locale),*parseError,*status);
- if(retVal == NULL) {
+ if(retVal == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
if (U_SUCCESS(*status) && MessageFormatAdapter::hasArgTypeConflicts(*retVal)) {
*status = U_ARGUMENT_TYPE_MISMATCH;
@@ -263,7 +263,7 @@ U_CAPI void U_EXPORT2
umsg_close(UMessageFormat* format)
{
//check arguments
- if(format==NULL){
+ if(format==nullptr){
return;
}
delete (MessageFormat*) format;
@@ -274,12 +274,12 @@ umsg_clone(const UMessageFormat *fmt,
UErrorCode *status)
{
//check arguments
- if(status==NULL || U_FAILURE(*status)){
- return NULL;
+ if(status==nullptr || U_FAILURE(*status)){
+ return nullptr;
}
- if(fmt==NULL){
+ if(fmt==nullptr){
*status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
UMessageFormat retVal = (UMessageFormat)((MessageFormat*)fmt)->clone();
if(retVal == 0) {
@@ -293,7 +293,7 @@ U_CAPI void U_EXPORT2
umsg_setLocale(UMessageFormat *fmt, const char* locale)
{
//check arguments
- if(fmt==NULL){
+ if(fmt==nullptr){
return;
}
((MessageFormat*)fmt)->setLocale(Locale(locale));
@@ -303,7 +303,7 @@ U_CAPI const char* U_EXPORT2
umsg_getLocale(const UMessageFormat *fmt)
{
//check arguments
- if(fmt==NULL){
+ if(fmt==nullptr){
return "";
}
return ((const MessageFormat*)fmt)->getLocale().getName();
@@ -311,22 +311,22 @@ umsg_getLocale(const UMessageFormat *fmt)
U_CAPI void U_EXPORT2
umsg_applyPattern(UMessageFormat *fmt,
- const UChar* pattern,
+ const char16_t* pattern,
int32_t patternLength,
UParseError* parseError,
UErrorCode* status)
{
//check arguments
UParseError tErr;
- if(status ==NULL||U_FAILURE(*status)){
+ if(status ==nullptr||U_FAILURE(*status)){
return ;
}
- if(fmt==NULL || (pattern==NULL && patternLength!=0) || patternLength<-1) {
+ if(fmt==nullptr || (pattern==nullptr && patternLength!=0) || patternLength<-1) {
*status=U_ILLEGAL_ARGUMENT_ERROR;
return ;
}
- if(parseError==NULL){
+ if(parseError==nullptr){
parseError = &tErr;
}
@@ -336,23 +336,23 @@ umsg_applyPattern(UMessageFormat *fmt,
U_CAPI int32_t U_EXPORT2
umsg_toPattern(const UMessageFormat *fmt,
- UChar* result,
+ char16_t* result,
int32_t resultLength,
UErrorCode* status)
{
//check arguments
- if(status ==NULL||U_FAILURE(*status)){
+ if(status ==nullptr||U_FAILURE(*status)){
return -1;
}
- if(fmt==NULL||resultLength<0 || (resultLength>0 && result==0)){
+ if(fmt==nullptr||resultLength<0 || (resultLength>0 && result==0)){
*status=U_ILLEGAL_ARGUMENT_ERROR;
return -1;
}
UnicodeString res;
- if(!(result==NULL && resultLength==0)) {
- // NULL destination for pure preflighting: empty dummy string
+ if(!(result==nullptr && resultLength==0)) {
+ // nullptr destination for pure preflighting: empty dummy string
// otherwise, alias the destination buffer
res.setTo(result, 0, resultLength);
}
@@ -362,7 +362,7 @@ umsg_toPattern(const UMessageFormat *fmt,
U_CAPI int32_t
umsg_format( const UMessageFormat *fmt,
- UChar *result,
+ char16_t *result,
int32_t resultLength,
UErrorCode *status,
...)
@@ -387,7 +387,7 @@ umsg_format( const UMessageFormat *fmt,
U_CAPI int32_t U_EXPORT2
umsg_vformat( const UMessageFormat *fmt,
- UChar *result,
+ char16_t *result,
int32_t resultLength,
va_list ap,
UErrorCode *status)
@@ -397,7 +397,7 @@ umsg_vformat( const UMessageFormat *fmt,
{
return -1;
}
- if(fmt==NULL||resultLength<0 || (resultLength>0 && result==0)) {
+ if(fmt==nullptr||resultLength<0 || (resultLength>0 && result==0)) {
*status=U_ILLEGAL_ARGUMENT_ERROR;
return -1;
}
@@ -412,7 +412,7 @@ umsg_vformat( const UMessageFormat *fmt,
// iterate through the vararg list, and get the arguments out
for(int32_t i = 0; i < count; ++i) {
- UChar *stringVal;
+ char16_t *stringVal;
double tDouble=0;
int32_t tInt =0;
int64_t tInt64 = 0;
@@ -440,7 +440,7 @@ umsg_vformat( const UMessageFormat *fmt,
case Formattable::kString:
// For some reason, a temporary is needed
- stringVal = va_arg(ap, UChar*);
+ stringVal = va_arg(ap, char16_t*);
if(stringVal){
args[i].setString(UnicodeString(stringVal));
}else{
@@ -483,7 +483,7 @@ umsg_vformat( const UMessageFormat *fmt,
U_CAPI void
umsg_parse( const UMessageFormat *fmt,
- const UChar *source,
+ const char16_t *source,
int32_t sourceLength,
int32_t *count,
UErrorCode *status,
@@ -505,18 +505,18 @@ umsg_parse( const UMessageFormat *fmt,
U_CAPI void U_EXPORT2
umsg_vparse(const UMessageFormat *fmt,
- const UChar *source,
+ const char16_t *source,
int32_t sourceLength,
int32_t *count,
va_list ap,
UErrorCode *status)
{
//check arguments
- if(status==NULL||U_FAILURE(*status))
+ if(status==nullptr||U_FAILURE(*status))
{
return;
}
- if(fmt==NULL||source==NULL || sourceLength<-1 || count==NULL){
+ if(fmt==nullptr||source==nullptr || sourceLength<-1 || count==nullptr){
*status=U_ILLEGAL_ARGUMENT_ERROR;
return;
}
@@ -528,7 +528,7 @@ umsg_vparse(const UMessageFormat *fmt,
Formattable *args = ((const MessageFormat*)fmt)->parse(srcString,*count,*status);
UDate *aDate;
double *aDouble;
- UChar *aString;
+ char16_t *aString;
int32_t* aInt;
int64_t* aInt64;
UnicodeString temp;
@@ -574,7 +574,7 @@ umsg_vparse(const UMessageFormat *fmt,
break;
case Formattable::kString:
- aString = va_arg(ap, UChar*);
+ aString = va_arg(ap, char16_t*);
if(aString){
args[i].getString(temp);
len = temp.length();
@@ -602,9 +602,9 @@ umsg_vparse(const UMessageFormat *fmt,
delete [] args;
}
-#define SINGLE_QUOTE ((UChar)0x0027)
-#define CURLY_BRACE_LEFT ((UChar)0x007B)
-#define CURLY_BRACE_RIGHT ((UChar)0x007D)
+#define SINGLE_QUOTE ((char16_t)0x0027)
+#define CURLY_BRACE_LEFT ((char16_t)0x007B)
+#define CURLY_BRACE_RIGHT ((char16_t)0x007D)
#define STATE_INITIAL 0
#define STATE_SINGLE_QUOTE 1
@@ -613,9 +613,9 @@ umsg_vparse(const UMessageFormat *fmt,
#define MAppend(c) if (len < destCapacity) dest[len++] = c; else len++
-int32_t umsg_autoQuoteApostrophe(const UChar* pattern,
+int32_t umsg_autoQuoteApostrophe(const char16_t* pattern,
int32_t patternLength,
- UChar* dest,
+ char16_t* dest,
int32_t destCapacity,
UErrorCode* ec)
{
@@ -623,11 +623,11 @@ int32_t umsg_autoQuoteApostrophe(const UChar* pattern,
int32_t braceCount = 0;
int32_t len = 0;
- if (ec == NULL || U_FAILURE(*ec)) {
+ if (ec == nullptr || U_FAILURE(*ec)) {
return -1;
}
- if (pattern == NULL || patternLength < -1 || (dest == NULL && destCapacity > 0)) {
+ if (pattern == nullptr || patternLength < -1 || (dest == nullptr && destCapacity > 0)) {
*ec = U_ILLEGAL_ARGUMENT_ERROR;
return -1;
}
@@ -638,7 +638,7 @@ int32_t umsg_autoQuoteApostrophe(const UChar* pattern,
}
for (int i = 0; i < patternLength; ++i) {
- UChar c = pattern[i];
+ char16_t c = pattern[i];
switch (state) {
case STATE_INITIAL:
switch (c) {
diff --git a/Build/source/libs/icu/icu-src/source/i18n/umsg_imp.h b/Build/source/libs/icu/icu-src/source/i18n/umsg_imp.h
index 43ef1c78f0d..4c793b17d3a 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/umsg_imp.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/umsg_imp.h
@@ -23,24 +23,24 @@
/* global variables used by the C and C++ message formatting API. */
-extern const UChar *g_umsgTypeList[];
-extern const UChar *g_umsgModifierList[];
-extern const UChar *g_umsgDateModifierList[];
+extern const char16_t *g_umsgTypeList[];
+extern const char16_t *g_umsgModifierList[];
+extern const char16_t *g_umsgDateModifierList[];
extern const int32_t g_umsgListLength;
-extern const UChar g_umsg_number[];
-extern const UChar g_umsg_date[];
-extern const UChar g_umsg_time[];
-extern const UChar g_umsg_choice[];
+extern const char16_t g_umsg_number[];
+extern const char16_t g_umsg_date[];
+extern const char16_t g_umsg_time[];
+extern const char16_t g_umsg_choice[];
-extern const UChar g_umsg_currency[];
-extern const UChar g_umsg_percent[];
-extern const UChar g_umsg_integer[];
+extern const char16_t g_umsg_currency[];
+extern const char16_t g_umsg_percent[];
+extern const char16_t g_umsg_integer[];
-extern const UChar g_umsg_short[];
-extern const UChar g_umsg_medium[];
-extern const UChar g_umsg_long[];
-extern const UChar g_umsg_full[];
+extern const char16_t g_umsg_short[];
+extern const char16_t g_umsg_medium[];
+extern const char16_t g_umsg_long[];
+extern const char16_t g_umsg_full[];
#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unesctrn.cpp b/Build/source/libs/icu/icu-src/source/i18n/unesctrn.cpp
index fb431ffa2e8..cce191ca62e 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unesctrn.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/unesctrn.cpp
@@ -26,47 +26,47 @@ U_NAMESPACE_BEGIN
/**
* Special character marking the end of the spec[] array.
*/
-static const UChar END = 0xFFFF;
+static const char16_t END = 0xFFFF;
// Unicode: "U+10FFFF" hex, min=4, max=6
-static const UChar SPEC_Unicode[] = {
+static const char16_t SPEC_Unicode[] = {
2, 0, 16, 4, 6, 85/*U*/, 43/*+*/,
END
};
// Java: "\\uFFFF" hex, min=4, max=4
-static const UChar SPEC_Java[] = {
+static const char16_t SPEC_Java[] = {
2, 0, 16, 4, 4, 92/*\*/, 117/*u*/,
END
};
// C: "\\uFFFF" hex, min=4, max=4; \\U0010FFFF hex, min=8, max=8
-static const UChar SPEC_C[] = {
+static const char16_t SPEC_C[] = {
2, 0, 16, 4, 4, 92/*\*/, 117/*u*/,
2, 0, 16, 8, 8, 92/*\*/, 85/*U*/,
END
};
// XML: "&#x10FFFF;" hex, min=1, max=6
-static const UChar SPEC_XML[] = {
+static const char16_t SPEC_XML[] = {
3, 1, 16, 1, 6, 38/*&*/, 35/*#*/, 120/*x*/, 59/*;*/,
END
};
// XML10: "&#1114111;" dec, min=1, max=7 (not really "Hex-Any")
-static const UChar SPEC_XML10[] = {
+static const char16_t SPEC_XML10[] = {
2, 1, 10, 1, 7, 38/*&*/, 35/*#*/, 59/*;*/,
END
};
// Perl: "\\x{263A}" hex, min=1, max=6
-static const UChar SPEC_Perl[] = {
+static const char16_t SPEC_Perl[] = {
3, 1, 16, 1, 6, 92/*\*/, 120/*x*/, 123/*{*/, 125/*}*/,
END
};
// All: Java, C, Perl, XML, XML10, Unicode
-static const UChar SPEC_Any[] = {
+static const char16_t SPEC_Any[] = {
2, 0, 16, 4, 6, 85/*U*/, 43/*+*/, // Unicode
2, 0, 16, 4, 4, 92/*\*/, 117/*u*/, // Java
2, 0, 16, 8, 8, 92/*\*/, 85/*U*/, // C (surrogates)
@@ -78,15 +78,15 @@ static const UChar SPEC_Any[] = {
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(UnescapeTransliterator)
-static UChar* copySpec(const UChar* spec) {
+static char16_t* copySpec(const char16_t* spec) {
int32_t len = 0;
while (spec[len] != END) {
++len;
}
++len;
- UChar *result = (UChar *)uprv_malloc(len*sizeof(UChar));
+ char16_t *result = (char16_t *)uprv_malloc(len*sizeof(char16_t));
// Check for memory allocation error.
- if (result != NULL) {
+ if (result != nullptr) {
uprv_memcpy(result, spec, (size_t)len*sizeof(result[0]));
}
return result;
@@ -143,8 +143,8 @@ void UnescapeTransliterator::registerIDs() {
* Constructor. Takes the encoded spec array.
*/
UnescapeTransliterator::UnescapeTransliterator(const UnicodeString& newID,
- const UChar *newSpec) :
- Transliterator(newID, NULL)
+ const char16_t *newSpec) :
+ Transliterator(newID, nullptr)
{
this->spec = copySpec(newSpec);
}
@@ -209,7 +209,7 @@ void UnescapeTransliterator::handleTransliterate(Replaceable& text, UTransPositi
break;
}
}
- UChar c = text.charAt(s++);
+ char16_t c = text.charAt(s++);
if (c != spec[ipat + i]) {
match = false;
break;
@@ -251,7 +251,7 @@ void UnescapeTransliterator::handleTransliterate(Replaceable& text, UTransPositi
match = false;
break;
}
- UChar c = text.charAt(s++);
+ char16_t c = text.charAt(s++);
if (c != spec[ipat + prefixLen + i]) {
match = false;
break;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unesctrn.h b/Build/source/libs/icu/icu-src/source/i18n/unesctrn.h
index e905c5bc5f5..3bea2780827 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unesctrn.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unesctrn.h
@@ -46,7 +46,7 @@ class UnescapeTransliterator : public Transliterator {
* and suffix. The end is marked by a header of length one
* consisting of the character END.
*/
- UChar* spec; // owned; may not be NULL
+ char16_t* spec; // owned; may not be nullptr
public:
@@ -62,7 +62,7 @@ class UnescapeTransliterator : public Transliterator {
* @param spec the encoded spec array
*/
UnescapeTransliterator(const UnicodeString& ID,
- const UChar *spec);
+ const char16_t *spec);
/**
* Copy constructor.
diff --git a/Build/source/libs/icu/icu-src/source/i18n/uni2name.cpp b/Build/source/libs/icu/icu-src/source/i18n/uni2name.cpp
index 97df92b0971..727f8953dbb 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/uni2name.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/uni2name.cpp
@@ -26,8 +26,8 @@ U_NAMESPACE_BEGIN
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(UnicodeNameTransliterator)
-static const UChar OPEN_DELIM[] = {92,78,123,0}; // "\N{"
-static const UChar CLOSE_DELIM = 125; // "}"
+static const char16_t OPEN_DELIM[] = {92,78,123,0}; // "\N{"
+static const char16_t CLOSE_DELIM = 125; // "}"
#define OPEN_DELIM_LEN 3
/**
@@ -73,7 +73,7 @@ void UnicodeNameTransliterator::handleTransliterate(Replaceable& text, UTransPos
UBool /*isIncremental*/) const {
// The failure mode, here and below, is to behave like Any-Null,
// if either there is no name data (max len == 0) or there is no
- // memory (malloc() => NULL).
+ // memory (malloc() => nullptr).
int32_t maxLen = uprv_getMaxCharNameLength();
if (maxLen == 0) {
@@ -83,7 +83,7 @@ void UnicodeNameTransliterator::handleTransliterate(Replaceable& text, UTransPos
// Accommodate the longest possible name plus padding
char* buf = (char*) uprv_malloc(maxLen);
- if (buf == NULL) {
+ if (buf == nullptr) {
offsets.start = offsets.limit;
return;
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/alphaindex.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/alphaindex.h
index ec50822d589..cbce2127176 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/alphaindex.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/alphaindex.h
@@ -277,7 +277,7 @@ public:
int32_t getBucketIndex(const UnicodeString &name, UErrorCode &errorCode) const;
/**
- * Returns the index-th bucket. Returns NULL if the index is out of range.
+ * Returns the index-th bucket. Returns nullptr if the index is out of range.
*
* @param index bucket number
* @return the index-th bucket
@@ -627,7 +627,7 @@ public:
/**
* Return the data pointer of the Record currently being iterated over.
- * Return NULL if the current iteration position before the first item in this Bucket,
+ * Return nullptr if the current iteration position before the first item in this Bucket,
* or after the last.
*
* @return The current Record's data pointer.
@@ -731,7 +731,7 @@ private:
int32_t itemsIterIndex_;
Bucket *currentBucket_; // While an iteration of the index in underway,
// point to the bucket for the current label.
- // NULL when no iteration underway.
+ // nullptr when no iteration underway.
int32_t maxLabelCount_; // Limit on # of labels permitted in the index.
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/basictz.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/basictz.h
index a1c94e523ab..4f8e4cacb14 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/basictz.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/basictz.h
@@ -107,7 +107,7 @@ public:
/**
* Gets the <code>InitialTimeZoneRule</code> and the set of <code>TimeZoneRule</code>
* which represent time transitions for this time zone. On successful return,
- * the argument initial points to non-NULL <code>InitialTimeZoneRule</code> and
+ * the argument initial points to non-nullptr <code>InitialTimeZoneRule</code> and
* the array trsrules is filled with 0 or multiple <code>TimeZoneRule</code>
* instances up to the size specified by trscount. The results are referencing the
* rule instance held by this time zone instance. Therefore, after this time zone
@@ -139,13 +139,13 @@ public:
* The time zone rule objects returned by this method is owned by the caller, so the caller is
* responsible for deleting them after use.
* @param date The date used for extracting time zone rules.
- * @param initial Receives the <code>InitialTimeZone</code>, always not NULL.
+ * @param initial Receives the <code>InitialTimeZone</code>, always not nullptr.
* @param std Receives the <code>AnnualTimeZoneRule</code> for standard time transitions.
* When this time time zone does not observe daylight saving times around the
- * specified date, NULL is set.
+ * specified date, nullptr is set.
* @param dst Receives the <code>AnnualTimeZoneRule</code> for daylight saving time
* transitions. When this time zone does not observer daylight saving times
- * around the specified date, NULL is set.
+ * around the specified date, nullptr is set.
* @param status Receives error status code.
* @stable ICU 3.8
*/
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/calendar.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/calendar.h
index 3c0e5c3e3e0..26781f8a056 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/calendar.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/calendar.h
@@ -302,7 +302,7 @@ public:
* with U_ZERO_ERROR if created successfully, set to a failure result
* otherwise. U_MISSING_RESOURCE_ERROR will be returned if the resource data
* requests a calendar type which has not been installed.
- * @return A Calendar if created successfully. NULL otherwise.
+ * @return A Calendar if created successfully. nullptr otherwise.
* @stable ICU 2.0
*/
static Calendar* U_EXPORT2 createInstance(UErrorCode& success);
@@ -316,7 +316,7 @@ public:
* @param success Indicates the success/failure of Calendar creation. Filled in
* with U_ZERO_ERROR if created successfully, set to a failure result
* otherwise.
- * @return A Calendar if created successfully. NULL otherwise.
+ * @return A Calendar if created successfully. nullptr otherwise.
* @stable ICU 2.0
*/
static Calendar* U_EXPORT2 createInstance(TimeZone* zoneToAdopt, UErrorCode& success);
@@ -329,7 +329,7 @@ public:
* @param success Indicates the success/failure of Calendar creation. Filled in
* with U_ZERO_ERROR if created successfully, set to a failure result
* otherwise.
- * @return A Calendar if created successfully. NULL otherwise.
+ * @return A Calendar if created successfully. nullptr otherwise.
* @stable ICU 2.0
*/
static Calendar* U_EXPORT2 createInstance(const TimeZone& zone, UErrorCode& success);
@@ -341,7 +341,7 @@ public:
* @param success Indicates the success/failure of Calendar creation. Filled in
* with U_ZERO_ERROR if created successfully, set to a failure result
* otherwise.
- * @return A Calendar if created successfully. NULL otherwise.
+ * @return A Calendar if created successfully. nullptr otherwise.
* @stable ICU 2.0
*/
static Calendar* U_EXPORT2 createInstance(const Locale& aLocale, UErrorCode& success);
@@ -356,7 +356,7 @@ public:
* @param success Indicates the success/failure of Calendar creation. Filled in
* with U_ZERO_ERROR if created successfully, set to a failure result
* otherwise.
- * @return A Calendar if created successfully. NULL otherwise.
+ * @return A Calendar if created successfully. nullptr otherwise.
* @stable ICU 2.0
*/
static Calendar* U_EXPORT2 createInstance(TimeZone* zoneToAdopt, const Locale& aLocale, UErrorCode& success);
@@ -370,7 +370,7 @@ public:
* @param success Indicates the success/failure of Calendar creation. Filled in
* with U_ZERO_ERROR if created successfully, set to a failure result
* otherwise.
- * @return A Calendar if created successfully. NULL otherwise.
+ * @return A Calendar if created successfully. nullptr otherwise.
* @stable ICU 2.0
*/
static Calendar* U_EXPORT2 createInstance(const TimeZone& zone, const Locale& aLocale, UErrorCode& success);
@@ -826,7 +826,7 @@ public:
/**
* Sets the calendar's time zone to be the one passed in. The Calendar takes ownership
* of the TimeZone; the caller is no longer responsible for deleting it. If the
- * given time zone is NULL, this function has no effect.
+ * given time zone is nullptr, this function has no effect.
*
* @param value The given time zone.
* @stable ICU 2.0
@@ -870,7 +870,7 @@ public:
* false, otherwise.
* @stable ICU 2.0
*/
- virtual UBool inDaylightTime(UErrorCode& status) const = 0;
+ virtual UBool inDaylightTime(UErrorCode& status) const;
/**
* Specifies whether or not date/time interpretation is to be lenient. With lenient
@@ -1237,7 +1237,8 @@ public:
/**
* Clears the value in the given time field, both making it unset and assigning it a
* value of zero. This field value will be determined during the next resolving of
- * time into time fields.
+ * time into time fields. Clearing UCAL_ORDINAL_MONTH or UCAL_MONTH will
+ * clear both fields.
*
* @param field The time field to be cleared.
* @stable ICU 2.6.
@@ -1349,6 +1350,66 @@ public:
*/
virtual UBool isWeekend(void) const;
+#ifndef U_FORCE_HIDE_DRAFT_API
+ /**
+ * Returns true if the date is in a leap year. Recalculate the current time
+ * field values if the time value has been changed by a call to * setTime().
+ * This method is semantically const, but may alter the object in memory.
+ * A "leap year" is a year that contains more days than other years (for
+ * solar or lunar calendars) or more months than other years (for lunisolar
+ * calendars like Hebrew or Chinese), as defined in the ECMAScript Temporal
+ * proposal.
+ *
+ * @param status ICU Error Code
+ * @return True if the date in the fields is in a Temporal proposal
+ * defined leap year. False otherwise.
+ * @draft ICU 73
+ */
+ virtual bool inTemporalLeapYear(UErrorCode& status) const;
+
+ /**
+ * Gets The Temporal monthCode value corresponding to the month for the date.
+ * The value is a string identifier that starts with the literal grapheme
+ * "M" followed by two graphemes representing the zero-padded month number
+ * of the current month in a normal (non-leap) year and suffixed by an
+ * optional literal grapheme "L" if this is a leap month in a lunisolar
+ * calendar. The 25 possible values are "M01" .. "M13" and "M01L" .. "M12L".
+ * For the Hebrew calendar, the values are "M01" .. "M12" for non-leap year, and
+ * "M01" .. "M05", "M05L", "M06" .. "M12" for leap year.
+ * For the Chinese calendar, the values are "M01" .. "M12" for non-leap year and
+ * in leap year with another monthCode in "M01L" .. "M12L".
+ * For Coptic and Ethiopian calendar, the Temporal monthCode values for any
+ * years are "M01" to "M13".
+ *
+ * @param status ICU Error Code
+ * @return One of 25 possible strings in {"M01".."M13", "M01L".."M12L"}.
+ * @draft ICU 73
+ */
+ virtual const char* getTemporalMonthCode(UErrorCode& status) const;
+
+ /**
+ * Sets The Temporal monthCode which is a string identifier that starts
+ * with the literal grapheme "M" followed by two graphemes representing
+ * the zero-padded month number of the current month in a normal
+ * (non-leap) year and suffixed by an optional literal grapheme "L" if this
+ * is a leap month in a lunisolar calendar. The 25 possible values are
+ * "M01" .. "M13" and "M01L" .. "M12L". For Hebrew calendar, the values are
+ * "M01" .. "M12" for non-leap years, and "M01" .. "M05", "M05L", "M06"
+ * .. "M12" for leap year.
+ * For the Chinese calendar, the values are "M01" .. "M12" for non-leap year and
+ * in leap year with another monthCode in "M01L" .. "M12L".
+ * For Coptic and Ethiopian calendar, the Temporal monthCode values for any
+ * years are "M01" to "M13".
+ *
+ * @param temporalMonth The value to be set for temporal monthCode.
+ * @param status ICU Error Code
+ *
+ * @draft ICU 73
+ */
+ virtual void setTemporalMonthCode(const char* temporalMonth, UErrorCode& status);
+
+#endif // U_FORCE_HIDE_DRAFT_API
+
protected:
/**
@@ -1491,6 +1552,30 @@ protected:
inline int32_t internalGet(UCalendarDateFields field) const {return fFields[field];}
#endif /* U_HIDE_INTERNAL_API */
+ /**
+ * Use this function instead of internalGet(UCAL_MONTH). The implementation
+ * check the timestamp of UCAL_MONTH and UCAL_ORDINAL_MONTH and use the
+ * one set later. The subclass should override it to conver the value of UCAL_ORDINAL_MONTH
+ * to UCAL_MONTH correctly if UCAL_ORDINAL_MONTH has higher priority.
+ *
+ * @return The value for the UCAL_MONTH.
+ * @internal
+ */
+ virtual int32_t internalGetMonth() const;
+
+ /**
+ * Use this function instead of internalGet(UCAL_MONTH, defaultValue). The implementation
+ * check the timestamp of UCAL_MONTH and UCAL_ORDINAL_MONTH and use the
+ * one set later. The subclass should override it to conver the value of UCAL_ORDINAL_MONTH
+ * to UCAL_MONTH correctly if UCAL_ORDINAL_MONTH has higher priority.
+ *
+ * @param defaultValue a default value used if the UCAL_MONTH and
+ * UCAL_ORDINAL are both unset.
+ * @return The value for the UCAL_MONTH.
+ * @internal
+ */
+ virtual int32_t internalGetMonth(int32_t defaultValue) const;
+
#ifndef U_HIDE_DEPRECATED_API
/**
* Sets the value for a given time field. This is a fast internal method for
@@ -1569,7 +1654,6 @@ protected:
*/
virtual int32_t getLimit(UCalendarDateFields field, ELimitType limitType) const;
-
/**
* Return the Julian day number of day before the first day of the
* given month in the given extended year. Subclasses should override
@@ -1723,6 +1807,13 @@ protected:
static const UFieldResolutionTable kDOWPrecedence[];
/**
+ * Precedence table for Months
+ * @see #resolveFields
+ * @internal
+ */
+ static const UFieldResolutionTable kMonthPrecedence[];
+
+ /**
* Given a precedence table, return the newest field combination in
* the table, or UCAL_FIELD_COUNT if none is found.
*
@@ -1749,7 +1840,7 @@ protected:
* match, then UCAL_FIELD_COUNT is returned.
* @internal
*/
- UCalendarDateFields resolveFields(const UFieldResolutionTable *precedenceTable);
+ UCalendarDateFields resolveFields(const UFieldResolutionTable *precedenceTable) const;
#endif /* U_HIDE_INTERNAL_API */
@@ -2092,7 +2183,7 @@ private:
/**
* Time zone affects the time calculation done by Calendar. Calendar subclasses use
- * the time zone data to produce the local time. Always set; never NULL.
+ * the time zone data to produce the local time. Always set; never nullptr.
*/
TimeZone* fZone;
@@ -2374,7 +2465,7 @@ private:
private:
/**
- * Cast TimeZone used by this object to BasicTimeZone, or NULL if the TimeZone
+ * Cast TimeZone used by this object to BasicTimeZone, or nullptr if the TimeZone
* is not an instance of BasicTimeZone.
*/
BasicTimeZone* getBasicTimeZone() const;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/choicfmt.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/choicfmt.h
index 66f437e52f0..429fa0cebd8 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/choicfmt.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/choicfmt.h
@@ -330,31 +330,31 @@ public:
int32_t count);
/**
- * Returns NULL and 0.
+ * Returns nullptr and 0.
* Before ICU 4.8, this used to return the choice limits array.
*
* @param count Will be set to 0.
- * @return NULL
+ * @return nullptr
* @deprecated ICU 4.8 Use the MessagePattern class to analyze a ChoiceFormat pattern.
*/
virtual const double* getLimits(int32_t& count) const;
/**
- * Returns NULL and 0.
+ * Returns nullptr and 0.
* Before ICU 4.8, this used to return the limit booleans array.
*
* @param count Will be set to 0.
- * @return NULL
+ * @return nullptr
* @deprecated ICU 4.8 Use the MessagePattern class to analyze a ChoiceFormat pattern.
*/
virtual const UBool* getClosures(int32_t& count) const;
/**
- * Returns NULL and 0.
+ * Returns nullptr and 0.
* Before ICU 4.8, this used to return the array of choice strings.
*
* @param count Will be set to 0.
- * @return NULL
+ * @return nullptr
* @deprecated ICU 4.8 Use the MessagePattern class to analyze a ChoiceFormat pattern.
*/
virtual const UnicodeString* getFormats(int32_t& count) const;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/coleitr.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/coleitr.h
index d3ddd0ee044..bd0c569f35c 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/coleitr.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/coleitr.h
@@ -118,7 +118,7 @@ class UVector32;
* @see RuleBasedCollator
* @version 1.8 Jan 16 2001
*/
-class U_I18N_API CollationElementIterator U_FINAL : public UObject {
+class U_I18N_API CollationElementIterator final : public UObject {
public:
// CollationElementIterator public data member ------------------------------
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/coll.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/coll.h
index 6aa35bb5b74..fc5af953495 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/coll.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/coll.h
@@ -625,7 +625,7 @@ public:
/**
* Retrieves the reordering codes for this collator.
* @param dest The array to fill with the script ordering.
- * @param destCapacity The length of dest. If it is 0, then dest may be NULL and the function
+ * @param destCapacity The length of dest. If it is 0, then dest may be nullptr and the function
* will only return the length of the result without writing any codes (pre-flighting).
* @param status A reference to an error code value, which must not indicate
* a failure before the function call.
@@ -645,7 +645,7 @@ public:
* Sets the ordering of scripts for this collator.
*
* <p>The reordering codes are a combination of script codes and reorder codes.
- * @param reorderCodes An array of script codes in the new order. This can be NULL if the
+ * @param reorderCodes An array of script codes in the new order. This can be nullptr if the
* length is also set to 0. An empty array will clear any reordering codes on the collator.
* @param reorderCodesLength The length of reorderCodes.
* @param status error code
@@ -668,7 +668,7 @@ public:
*
* @param reorderCode The reorder code to determine equivalence for.
* @param dest The array to fill with the script equivalence reordering codes.
- * @param destCapacity The length of dest. If it is 0, then dest may be NULL and the
+ * @param destCapacity The length of dest. If it is 0, then dest may be nullptr and the
* function will only return the length of the result without writing any codes (pre-flighting).
* @param status A reference to an error code value, which must not indicate
* a failure before the function call.
@@ -750,7 +750,7 @@ public:
* ucol_getKeywords. If any other keyword is passed in, status is set
* to U_ILLEGAL_ARGUMENT_ERROR.
* @param status input-output error code
- * @return a string enumeration over collation keyword values, or NULL
+ * @return a string enumeration over collation keyword values, or nullptr
* upon error. The caller is responsible for deleting the result.
* @stable ICU 3.0
*/
@@ -1008,7 +1008,7 @@ public:
* For more details, see the ICU User Guide.
*
* @param source string to be processed.
- * @param result buffer to store result in. If NULL, number of bytes needed
+ * @param result buffer to store result in. If nullptr, number of bytes needed
* will be returned.
* @param resultLength length of the result buffer. If if not enough the
* buffer will be filled to capacity.
@@ -1031,7 +1031,7 @@ public:
* @param sourceLength length of string to be processed.
* If -1, the string is 0 terminated and length will be decided by the
* function.
- * @param result buffer to store result in. If NULL, number of bytes needed
+ * @param result buffer to store result in. If nullptr, number of bytes needed
* will be returned.
* @param resultLength length of the result buffer. If if not enough the
* buffer will be filled to capacity.
@@ -1145,7 +1145,7 @@ public:
* This is internal, and intended to be used with delegate converters.
*
* @param locale a locale that will appear as a collators locale in the resulting
- * short string definition. If NULL, the locale will be harvested
+ * short string definition. If nullptr, the locale will be harvested
* from the collator.
* @param buffer space to hold the resulting string
* @param capacity capacity of the buffer
@@ -1249,9 +1249,9 @@ public:
/**
* Return a collator for the provided locale. If the locale
- * is not supported, return NULL.
+ * is not supported, return nullptr.
* @param loc the locale identifying the collator to be created.
- * @return a new collator if the locale is supported, otherwise NULL.
+ * @return a new collator if the locale is supported, otherwise nullptr.
* @stable ICU 2.6
*/
virtual Collator* createCollator(const Locale& loc) = 0;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/compactdecimalformat.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/compactdecimalformat.h
index 9c1e2009969..0cbf3d4c73a 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/compactdecimalformat.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/compactdecimalformat.h
@@ -88,7 +88,7 @@ public:
* Destructor.
* @stable ICU 51
*/
- ~CompactDecimalFormat() U_OVERRIDE;
+ ~CompactDecimalFormat() override;
/**
* Assignment operator.
@@ -105,7 +105,7 @@ public:
* @return a polymorphic copy of this CompactDecimalFormat.
* @stable ICU 51
*/
- CompactDecimalFormat* clone() const U_OVERRIDE;
+ CompactDecimalFormat* clone() const override;
using DecimalFormat::format;
@@ -119,7 +119,7 @@ public:
* @stable ICU 51
*/
void parse(const UnicodeString& text, Formattable& result,
- ParsePosition& parsePosition) const U_OVERRIDE;
+ ParsePosition& parsePosition) const override;
/**
* CompactDecimalFormat does not support parsing. This implementation
@@ -130,7 +130,7 @@ public:
* @param status Always set to U_UNSUPPORTED_ERROR.
* @stable ICU 51
*/
- void parse(const UnicodeString& text, Formattable& result, UErrorCode& status) const U_OVERRIDE;
+ void parse(const UnicodeString& text, Formattable& result, UErrorCode& status) const override;
#ifndef U_HIDE_INTERNAL_API
/**
@@ -141,7 +141,7 @@ public:
* 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. This implementation always returns
- * NULL.
+ * nullptr.
*
* @param text the string to parse
* @param pos input-output position; on input, the position within text
@@ -150,10 +150,10 @@ public:
* If the parse fails, the position in unchanged upon output.
* @return if parse succeeds, a pointer to a newly-created CurrencyAmount
* object (owned by the caller) containing information about
- * the parsed currency; if parse fails, this is NULL.
+ * the parsed currency; if parse fails, this is nullptr.
* @internal
*/
- CurrencyAmount* parseCurrency(const UnicodeString& text, ParsePosition& pos) const U_OVERRIDE;
+ CurrencyAmount* parseCurrency(const UnicodeString& text, ParsePosition& pos) const override;
#endif /* U_HIDE_INTERNAL_API */
/**
@@ -180,7 +180,7 @@ public:
* other classes have different class IDs.
* @stable ICU 51
*/
- UClassID getDynamicClassID() const U_OVERRIDE;
+ UClassID getDynamicClassID() const override;
private:
CompactDecimalFormat(const Locale& inLocale, UNumberCompactStyle style, UErrorCode& status);
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/curramt.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/curramt.h
index 818b11ae5bd..e0f6aa13dd2 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/curramt.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/curramt.h
@@ -43,7 +43,7 @@ class U_I18N_API CurrencyAmount: public Measure {
* ISO currency code.
* @param amount a numeric object; amount.isNumeric() must be true
* @param isoCode the 3-letter ISO 4217 currency code; must not be
- * NULL and must have length 3
+ * nullptr and must have length 3
* @param ec input-output error code. If the amount or the isoCode
* is invalid, then this will be set to a failing value.
* @stable ICU 3.0
@@ -56,7 +56,7 @@ class U_I18N_API CurrencyAmount: public Measure {
* ISO currency code.
* @param amount the amount of the given currency
* @param isoCode the 3-letter ISO 4217 currency code; must not be
- * NULL and must have length 3
+ * nullptr and must have length 3
* @param ec input-output error code. If the isoCode is invalid,
* then this will be set to a failing value.
* @stable ICU 3.0
@@ -111,7 +111,7 @@ class U_I18N_API CurrencyAmount: public Measure {
* Return the currency unit object of this object.
* @stable ICU 3.0
*/
- inline const CurrencyUnit& getCurrency() const;
+ const CurrencyUnit& getCurrency() const;
/**
* Return the ISO currency code of this object.
@@ -120,10 +120,6 @@ class U_I18N_API CurrencyAmount: public Measure {
inline const char16_t* getISOCurrency() const;
};
-inline const CurrencyUnit& CurrencyAmount::getCurrency() const {
- return (const CurrencyUnit&) getUnit();
-}
-
inline const char16_t* CurrencyAmount::getISOCurrency() const {
return getCurrency().getISOCurrency();
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/currunit.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/currunit.h
index 8da3f1ffd87..3b367b052bd 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/currunit.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/currunit.h
@@ -48,7 +48,7 @@ class U_I18N_API CurrencyUnit: public MeasureUnit {
* Construct an object with the given ISO currency code.
*
* @param isoCode the 3-letter ISO 4217 currency code; must have
- * length 3 and need not be NUL-terminated. If NULL, the currency
+ * length 3 and need not be NUL-terminated. If nullptr, the currency
* is initialized to the unknown currency XXX.
* @param ec input-output error code. If the isoCode is invalid,
* then this will be set to a failing value.
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/datefmt.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/datefmt.h
index 027fb1712f4..27240a4e1c6 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/datefmt.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/datefmt.h
@@ -269,7 +269,7 @@ public:
* Result is appended to existing contents.
* @param posIter On return, can be used to iterate over positions
* of fields generated by this format call. Field values
- * are defined in UDateFormatField. Can be NULL.
+ * are defined in UDateFormatField. Can be nullptr.
* @param status Output param filled with success/failure status.
* @return Reference to 'appendTo' parameter.
* @stable ICU 4.4
@@ -328,7 +328,7 @@ public:
* Result is appended to existing contents.
* @param posIter On return, can be used to iterate over positions
* of fields generated by this format call. Field values
- * are defined in UDateFormatField. Can be NULL.
+ * are defined in UDateFormatField. Can be nullptr.
* @param status error status.
* @return Reference to 'appendTo' parameter.
* @stable ICU 4.4
@@ -376,7 +376,7 @@ public:
* Result is appended to existing contents.
* @param posIter On return, can be used to iterate over positions
* of fields generated by this format call. Field values
- * are defined in UDateFormatField. Can be NULL.
+ * are defined in UDateFormatField. Can be nullptr.
* @param status error status.
* @return Reference to 'appendTo' parameter.
* @stable ICU 4.4
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/dcfmtsym.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/dcfmtsym.h
index c5f7404416f..6b79c99000e 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/dcfmtsym.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/dcfmtsym.h
@@ -305,7 +305,7 @@ public:
*
* @internal
*/
- void setCurrency(const UChar* currency, UErrorCode& status);
+ void setCurrency(const char16_t* currency, UErrorCode& status);
#endif // U_HIDE_INTERNAL_API
/**
@@ -456,6 +456,12 @@ public:
* @internal
*/
inline const char16_t* getCurrencyPattern(void) const;
+
+ /**
+ * Returns the numbering system with which this DecimalFormatSymbols was initialized.
+ * @internal
+ */
+ inline const char* getNumberingSystemName(void) const;
#endif /* U_HIDE_INTERNAL_API */
private:
@@ -500,12 +506,13 @@ private:
char actualLocale[ULOC_FULLNAME_CAPACITY];
char validLocale[ULOC_FULLNAME_CAPACITY];
- const char16_t* currPattern;
+ const char16_t* currPattern = nullptr;
UnicodeString currencySpcBeforeSym[UNUM_CURRENCY_SPACING_COUNT];
UnicodeString currencySpcAfterSym[UNUM_CURRENCY_SPACING_COUNT];
UBool fIsCustomCurrencySymbol;
UBool fIsCustomIntlCurrencySymbol;
+ char nsName[kInternalNumSysNameCapacity+1] = {};
};
// -------------------------------------
@@ -591,6 +598,10 @@ inline const char16_t*
DecimalFormatSymbols::getCurrencyPattern() const {
return currPattern;
}
+inline const char*
+DecimalFormatSymbols::getNumberingSystemName() const {
+ return nsName;
+}
#endif /* U_HIDE_INTERNAL_API */
U_NAMESPACE_END
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/decimfmt.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/decimfmt.h
index ab6cd14e187..f72ba687258 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/decimfmt.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/decimfmt.h
@@ -803,7 +803,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* @see getGroupingUsed
* @stable ICU 53
*/
- void setGroupingUsed(UBool newValue) U_OVERRIDE;
+ void setGroupingUsed(UBool newValue) override;
/**
* Sets whether or not numbers should be parsed as integers only.
@@ -812,7 +812,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* @see isParseIntegerOnly
* @stable ICU 53
*/
- void setParseIntegerOnly(UBool value) U_OVERRIDE;
+ void setParseIntegerOnly(UBool value) override;
/**
* Sets whether lenient parsing should be enabled (it is off by default).
@@ -821,7 +821,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* \c false otherwise.
* @stable ICU 4.8
*/
- void setLenient(UBool enable) U_OVERRIDE;
+ void setLenient(UBool enable) override;
/**
* Create a DecimalFormat from the given pattern and symbols.
@@ -890,7 +890,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* Destructor.
* @stable ICU 2.0
*/
- ~DecimalFormat() U_OVERRIDE;
+ ~DecimalFormat() override;
/**
* Clone this Format object polymorphically. The caller owns the
@@ -899,7 +899,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* @return a polymorphic copy of this DecimalFormat.
* @stable ICU 2.0
*/
- DecimalFormat* clone() const U_OVERRIDE;
+ DecimalFormat* clone() const override;
/**
* Return true if the given Format objects are semantically equal.
@@ -909,7 +909,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* @return true if the given Format objects are semantically equal.
* @stable ICU 2.0
*/
- bool operator==(const Format& other) const U_OVERRIDE;
+ bool operator==(const Format& other) const override;
using NumberFormat::format;
@@ -925,7 +925,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* @return Reference to 'appendTo' parameter.
* @stable ICU 2.0
*/
- UnicodeString& format(double number, UnicodeString& appendTo, FieldPosition& pos) const U_OVERRIDE;
+ UnicodeString& format(double number, UnicodeString& appendTo, FieldPosition& pos) const override;
#ifndef U_HIDE_INTERNAL_API
/**
@@ -941,7 +941,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* @internal
*/
UnicodeString& format(double number, UnicodeString& appendTo, FieldPosition& pos,
- UErrorCode& status) const U_OVERRIDE;
+ UErrorCode& status) const override;
#endif /* U_HIDE_INTERNAL_API */
/**
@@ -952,13 +952,13 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* Result is appended to existing contents.
* @param posIter On return, can be used to iterate over positions
* of fields generated by this format call.
- * Can be NULL.
+ * Can be nullptr.
* @param status Output param filled with success/failure status.
* @return Reference to 'appendTo' parameter.
* @stable ICU 4.4
*/
UnicodeString& format(double number, UnicodeString& appendTo, FieldPositionIterator* posIter,
- UErrorCode& status) const U_OVERRIDE;
+ UErrorCode& status) const override;
/**
* Format a long number using base-10 representation.
@@ -971,7 +971,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* @return Reference to 'appendTo' parameter.
* @stable ICU 2.0
*/
- UnicodeString& format(int32_t number, UnicodeString& appendTo, FieldPosition& pos) const U_OVERRIDE;
+ UnicodeString& format(int32_t number, UnicodeString& appendTo, FieldPosition& pos) const override;
#ifndef U_HIDE_INTERNAL_API
/**
@@ -987,7 +987,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* @internal
*/
UnicodeString& format(int32_t number, UnicodeString& appendTo, FieldPosition& pos,
- UErrorCode& status) const U_OVERRIDE;
+ UErrorCode& status) const override;
#endif /* U_HIDE_INTERNAL_API */
/**
@@ -998,13 +998,13 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* Result is appended to existing contents.
* @param posIter On return, can be used to iterate over positions
* of fields generated by this format call.
- * Can be NULL.
+ * Can be nullptr.
* @param status Output param filled with success/failure status.
* @return Reference to 'appendTo' parameter.
* @stable ICU 4.4
*/
UnicodeString& format(int32_t number, UnicodeString& appendTo, FieldPositionIterator* posIter,
- UErrorCode& status) const U_OVERRIDE;
+ UErrorCode& status) const override;
/**
* Format an int64 number using base-10 representation.
@@ -1017,7 +1017,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* @return Reference to 'appendTo' parameter.
* @stable ICU 2.8
*/
- UnicodeString& format(int64_t number, UnicodeString& appendTo, FieldPosition& pos) const U_OVERRIDE;
+ UnicodeString& format(int64_t number, UnicodeString& appendTo, FieldPosition& pos) const override;
#ifndef U_HIDE_INTERNAL_API
/**
@@ -1033,7 +1033,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* @internal
*/
UnicodeString& format(int64_t number, UnicodeString& appendTo, FieldPosition& pos,
- UErrorCode& status) const U_OVERRIDE;
+ UErrorCode& status) const override;
#endif /* U_HIDE_INTERNAL_API */
/**
@@ -1044,13 +1044,13 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* Result is appended to existing contents.
* @param posIter On return, can be used to iterate over positions
* of fields generated by this format call.
- * Can be NULL.
+ * Can be nullptr.
* @param status Output param filled with success/failure status.
* @return Reference to 'appendTo' parameter.
* @stable ICU 4.4
*/
UnicodeString& format(int64_t number, UnicodeString& appendTo, FieldPositionIterator* posIter,
- UErrorCode& status) const U_OVERRIDE;
+ UErrorCode& status) const override;
/**
* Format a decimal number.
@@ -1063,13 +1063,13 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* Result is appended to existing contents.
* @param posIter On return, can be used to iterate over positions
* of fields generated by this format call.
- * Can be NULL.
+ * Can be nullptr.
* @param status Output param filled with success/failure status.
* @return Reference to 'appendTo' parameter.
* @stable ICU 4.4
*/
UnicodeString& format(StringPiece number, UnicodeString& appendTo, FieldPositionIterator* posIter,
- UErrorCode& status) const U_OVERRIDE;
+ UErrorCode& status) const override;
#ifndef U_HIDE_INTERNAL_API
@@ -1089,7 +1089,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* @internal
*/
UnicodeString& format(const number::impl::DecimalQuantity& number, UnicodeString& appendTo,
- FieldPositionIterator* posIter, UErrorCode& status) const U_OVERRIDE;
+ FieldPositionIterator* posIter, UErrorCode& status) const override;
/**
* Format a decimal number.
@@ -1107,7 +1107,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* @internal
*/
UnicodeString& format(const number::impl::DecimalQuantity& number, UnicodeString& appendTo,
- FieldPosition& pos, UErrorCode& status) const U_OVERRIDE;
+ FieldPosition& pos, UErrorCode& status) const override;
#endif // U_HIDE_INTERNAL_API
@@ -1116,7 +1116,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
/**
* Parse the given string using this object's choices. The method
* does string comparisons to try to find an optimal match.
- * If no object can be parsed, index is unchanged, and NULL is
+ * If no object can be parsed, index is unchanged, and nullptr is
* returned. The result is returned as the most parsimonious
* type of Formattable that will accommodate all of the
* necessary precision. For example, if the result is exactly 12,
@@ -1133,7 +1133,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* @stable ICU 2.0
*/
void parse(const UnicodeString& text, Formattable& result,
- ParsePosition& parsePosition) const U_OVERRIDE;
+ ParsePosition& parsePosition) const override;
/**
* Parses text from the given string as a currency amount. Unlike
@@ -1151,10 +1151,10 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* If the parse fails, the position in unchanged upon output.
* @return if parse succeeds, a pointer to a newly-created CurrencyAmount
* object (owned by the caller) containing information about
- * the parsed currency; if parse fails, this is NULL.
+ * the parsed currency; if parse fails, this is nullptr.
* @stable ICU 49
*/
- CurrencyAmount* parseCurrency(const UnicodeString& text, ParsePosition& pos) const U_OVERRIDE;
+ CurrencyAmount* parseCurrency(const UnicodeString& text, ParsePosition& pos) const override;
/**
* Returns the decimal format symbols, which is generally not changed
@@ -1399,7 +1399,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* @see #setRoundingMode
* @stable ICU 2.0
*/
- virtual ERoundingMode getRoundingMode(void) const U_OVERRIDE;
+ virtual ERoundingMode getRoundingMode(void) const override;
/**
* Set the rounding mode.
@@ -1409,7 +1409,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* @see #getRoundingMode
* @stable ICU 2.0
*/
- virtual void setRoundingMode(ERoundingMode roundingMode) U_OVERRIDE;
+ virtual void setRoundingMode(ERoundingMode roundingMode) override;
/**
* Get the width to which the output of format() is padded.
@@ -1910,7 +1910,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* @see NumberFormat#setMaximumIntegerDigits
* @stable ICU 2.0
*/
- void setMaximumIntegerDigits(int32_t newValue) U_OVERRIDE;
+ void setMaximumIntegerDigits(int32_t newValue) override;
/**
* Sets the minimum number of digits allowed in the integer portion of a
@@ -1921,7 +1921,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* @see NumberFormat#setMinimumIntegerDigits
* @stable ICU 2.0
*/
- void setMinimumIntegerDigits(int32_t newValue) U_OVERRIDE;
+ void setMinimumIntegerDigits(int32_t newValue) override;
/**
* Sets the maximum number of digits allowed in the fraction portion of a
@@ -1932,7 +1932,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* @see NumberFormat#setMaximumFractionDigits
* @stable ICU 2.0
*/
- void setMaximumFractionDigits(int32_t newValue) U_OVERRIDE;
+ void setMaximumFractionDigits(int32_t newValue) override;
/**
* Sets the minimum number of digits allowed in the fraction portion of a
@@ -1943,7 +1943,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* @see NumberFormat#setMinimumFractionDigits
* @stable ICU 2.0
*/
- void setMinimumFractionDigits(int32_t newValue) U_OVERRIDE;
+ void setMinimumFractionDigits(int32_t newValue) override;
/**
* Returns the minimum number of significant digits that will be
@@ -2014,11 +2014,11 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* currency format through the application of a new pattern.
* @param theCurrency a 3-letter ISO code indicating new currency
* to use. It need not be null-terminated. May be the empty
- * string or NULL to indicate no currency.
+ * string or nullptr to indicate no currency.
* @param ec input-output error code
* @stable ICU 3.0
*/
- void setCurrency(const char16_t* theCurrency, UErrorCode& ec) U_OVERRIDE;
+ void setCurrency(const char16_t* theCurrency, UErrorCode& ec) override;
#ifndef U_FORCE_HIDE_DEPRECATED_API
/**
@@ -2137,7 +2137,7 @@ class U_I18N_API DecimalFormat : public NumberFormat {
* other classes have different class IDs.
* @stable ICU 2.0
*/
- UClassID getDynamicClassID(void) const U_OVERRIDE;
+ UClassID getDynamicClassID(void) const override;
private:
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/displayoptions.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/displayoptions.h
index 7bc763bbacd..9cc822626b5 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/displayoptions.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/displayoptions.h
@@ -22,8 +22,6 @@
U_NAMESPACE_BEGIN
-#ifndef U_HIDE_DRAFT_API
-
/**
* Represents all the display options that are supported by CLDR such as grammatical case, noun
* class, ... etc. It currently supports enums, but may be extended in the future to have other
@@ -40,14 +38,14 @@ U_NAMESPACE_BEGIN
* .build();
* ```
*
- * @draft ICU 72
+ * @stable ICU 72
*/
class U_I18N_API DisplayOptions {
public:
/**
* Responsible for building `DisplayOptions`.
*
- * @draft ICU 72
+ * @stable ICU 72
*/
class U_I18N_API Builder {
public:
@@ -56,7 +54,7 @@ public:
*
* @param grammaticalCase The grammatical case.
* @return Builder
- * @draft ICU 72
+ * @stable ICU 72
*/
Builder &setGrammaticalCase(UDisplayOptionsGrammaticalCase grammaticalCase) {
this->grammaticalCase = grammaticalCase;
@@ -68,7 +66,7 @@ public:
*
* @param nounClass The noun class.
* @return Builder
- * @draft ICU 72
+ * @stable ICU 72
*/
Builder &setNounClass(UDisplayOptionsNounClass nounClass) {
this->nounClass = nounClass;
@@ -80,7 +78,7 @@ public:
*
* @param pluralCategory The plural category.
* @return Builder
- * @draft ICU 72
+ * @stable ICU 72
*/
Builder &setPluralCategory(UDisplayOptionsPluralCategory pluralCategory) {
this->pluralCategory = pluralCategory;
@@ -92,7 +90,7 @@ public:
*
* @param capitalization The capitalization.
* @return Builder
- * @draft ICU 72
+ * @stable ICU 72
*/
Builder &setCapitalization(UDisplayOptionsCapitalization capitalization) {
this->capitalization = capitalization;
@@ -104,7 +102,7 @@ public:
*
* @param nameStyle The name style.
* @return Builder
- * @draft ICU 72
+ * @stable ICU 72
*/
Builder &setNameStyle(UDisplayOptionsNameStyle nameStyle) {
this->nameStyle = nameStyle;
@@ -116,7 +114,7 @@ public:
*
* @param displayLength The display length.
* @return Builder
- * @draft ICU 72
+ * @stable ICU 72
*/
Builder &setDisplayLength(UDisplayOptionsDisplayLength displayLength) {
this->displayLength = displayLength;
@@ -128,7 +126,7 @@ public:
*
* @param substituteHandling The substitute handling.
* @return Builder
- * @draft ICU 72
+ * @stable ICU 72
*/
Builder &setSubstituteHandling(UDisplayOptionsSubstituteHandling substituteHandling) {
this->substituteHandling = substituteHandling;
@@ -139,7 +137,7 @@ public:
* Builds the display options.
*
* @return DisplayOptions
- * @draft ICU 72
+ * @stable ICU 72
*/
DisplayOptions build() { return DisplayOptions(*this); }
@@ -162,21 +160,21 @@ public:
* Creates a builder with the `UNDEFINED` values for all the parameters.
*
* @return Builder
- * @draft ICU 72
+ * @stable ICU 72
*/
static Builder builder();
/**
* Creates a builder with the same parameters from this object.
*
* @return Builder
- * @draft ICU 72
+ * @stable ICU 72
*/
Builder copyToBuilder() const;
/**
* Gets the grammatical case.
*
* @return UDisplayOptionsGrammaticalCase
- * @draft ICU 72
+ * @stable ICU 72
*/
UDisplayOptionsGrammaticalCase getGrammaticalCase() const { return grammaticalCase; }
@@ -184,7 +182,7 @@ public:
* Gets the noun class.
*
* @return UDisplayOptionsNounClass
- * @draft ICU 72
+ * @stable ICU 72
*/
UDisplayOptionsNounClass getNounClass() const { return nounClass; }
@@ -192,7 +190,7 @@ public:
* Gets the plural category.
*
* @return UDisplayOptionsPluralCategory
- * @draft ICU 72
+ * @stable ICU 72
*/
UDisplayOptionsPluralCategory getPluralCategory() const { return pluralCategory; }
@@ -200,7 +198,7 @@ public:
* Gets the capitalization.
*
* @return UDisplayOptionsCapitalization
- * @draft ICU 72
+ * @stable ICU 72
*/
UDisplayOptionsCapitalization getCapitalization() const { return capitalization; }
@@ -208,7 +206,7 @@ public:
* Gets the dialect handling.
*
* @return UDisplayOptionsNameStyle
- * @draft ICU 72
+ * @stable ICU 72
*/
UDisplayOptionsNameStyle getNameStyle() const { return nameStyle; }
@@ -216,7 +214,7 @@ public:
* Gets the display length.
*
* @return UDisplayOptionsDisplayLength
- * @draft ICU 72
+ * @stable ICU 72
*/
UDisplayOptionsDisplayLength getDisplayLength() const { return displayLength; }
@@ -224,7 +222,7 @@ public:
* Gets the substitute handling.
*
* @return UDisplayOptionsSubstituteHandling
- * @draft ICU 72
+ * @stable ICU 72
*/
UDisplayOptionsSubstituteHandling getSubstituteHandling() const { return substituteHandling; }
@@ -232,7 +230,7 @@ public:
* Copies the DisplayOptions.
*
* @param other The options to copy.
- * @draft ICU 72
+ * @stable ICU 72
*/
DisplayOptions &operator=(const DisplayOptions &other) = default;
@@ -240,7 +238,7 @@ public:
* Moves the DisplayOptions.
*
* @param other The options to move from.
- * @draft ICU 72
+ * @stable ICU 72
*/
DisplayOptions &operator=(DisplayOptions &&other) noexcept = default;
@@ -248,7 +246,7 @@ public:
* Copies the DisplayOptions.
*
* @param other The options to copy.
- * @draft ICU 72
+ * @stable ICU 72
*/
DisplayOptions(const DisplayOptions &other) = default;
@@ -263,8 +261,6 @@ private:
UDisplayOptionsSubstituteHandling substituteHandling;
};
-#endif // U_HIDE_DRAFT_API
-
U_NAMESPACE_END
#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/dtfmtsym.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/dtfmtsym.h
index 9dbd7288375..3cd54092e0e 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/dtfmtsym.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/dtfmtsym.h
@@ -74,14 +74,14 @@ class Hashtable;
* DateFormatSymbols are not expected to be subclassed. Data for a calendar is
* loaded out of resource bundles. The 'type' parameter indicates the type of
* calendar, for example, "gregorian" or "japanese". If the type is not gregorian
- * (or NULL, or an empty string) then the type is appended to the resource name,
+ * (or nullptr, or an empty string) then the type is appended to the resource name,
* for example, 'Eras_japanese' instead of 'Eras'. If the resource 'Eras_japanese' did
* not exist (even in root), then this class will fall back to just 'Eras', that is,
* Gregorian data. Therefore, the calendar implementor MUST ensure that the root
* locale at least contains any resources that are to be particularized for the
* calendar type.
*/
-class U_I18N_API DateFormatSymbols U_FINAL : public UObject {
+class U_I18N_API DateFormatSymbols final : public UObject {
public:
/**
* Construct a DateFormatSymbols object by loading format data from
@@ -122,7 +122,7 @@ public:
*
* @param type Type of calendar (as returned by Calendar::getType).
* Will be used to access the correct set of strings.
- * (NULL or empty string defaults to "gregorian".)
+ * (nullptr or empty string defaults to "gregorian".)
* @param status Status code. Failure
* results if the resources for the default cannot be
* found or cannot be loaded
@@ -137,7 +137,7 @@ public:
* @param locale Locale to load format data from.
* @param type Type of calendar (as returned by Calendar::getType).
* Will be used to access the correct set of strings.
- * (NULL or empty string defaults to "gregorian".)
+ * (nullptr or empty string defaults to "gregorian".)
* @param status Status code. Failure
* results if the resources for the locale cannot be
* found or cannot be loaded
@@ -524,14 +524,14 @@ public:
/**
* Somewhat temporary function for getting complete set of leap month patterns for all
- * contexts & widths, indexed by EMonthPatternType values. Returns NULL if calendar
+ * contexts & widths, indexed by EMonthPatternType values. Returns nullptr if calendar
* does not have leap month patterns. Note, there is currently no setter for this.
* Eventually we will add full support for different month pattern types (needed for
* other calendars such as Hindu) at which point this approach will be replaced by a
* more complete approach.
* @param count Filled in with length of the array (may be 0).
* @return The leap month patterns (DateFormatSymbols retains ownership).
- * May be NULL if there are no leap month patterns for this calendar.
+ * May be nullptr if there are no leap month patterns for this calendar.
* @internal
*/
const UnicodeString* getLeapMonthPatterns(int32_t& count) const;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/dtitvfmt.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/dtitvfmt.h
index 85a1b365d83..b4dc8cabf04 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/dtitvfmt.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/dtitvfmt.h
@@ -68,13 +68,13 @@ class U_I18N_API FormattedDateInterval : public UMemory, public FormattedValue {
* Move constructor: Leaves the source FormattedDateInterval in an undefined state.
* @stable ICU 64
*/
- FormattedDateInterval(FormattedDateInterval&& src) U_NOEXCEPT;
+ FormattedDateInterval(FormattedDateInterval&& src) noexcept;
/**
* Destruct an instance of FormattedDateInterval.
* @stable ICU 64
*/
- virtual ~FormattedDateInterval() U_OVERRIDE;
+ virtual ~FormattedDateInterval() override;
/** Copying not supported; use move constructor instead. */
FormattedDateInterval(const FormattedDateInterval&) = delete;
@@ -86,19 +86,19 @@ class U_I18N_API FormattedDateInterval : public UMemory, public FormattedValue {
* Move assignment: Leaves the source FormattedDateInterval in an undefined state.
* @stable ICU 64
*/
- FormattedDateInterval& operator=(FormattedDateInterval&& src) U_NOEXCEPT;
+ FormattedDateInterval& operator=(FormattedDateInterval&& src) noexcept;
/** @copydoc FormattedValue::toString() */
- UnicodeString toString(UErrorCode& status) const U_OVERRIDE;
+ UnicodeString toString(UErrorCode& status) const override;
/** @copydoc FormattedValue::toTempString() */
- UnicodeString toTempString(UErrorCode& status) const U_OVERRIDE;
+ UnicodeString toTempString(UErrorCode& status) const override;
/** @copydoc FormattedValue::appendTo() */
- Appendable &appendTo(Appendable& appendable, UErrorCode& status) const U_OVERRIDE;
+ Appendable &appendTo(Appendable& appendable, UErrorCode& status) const override;
/** @copydoc FormattedValue::nextPosition() */
- UBool nextPosition(ConstrainedFieldPosition& cfpos, UErrorCode& status) const U_OVERRIDE;
+ UBool nextPosition(ConstrainedFieldPosition& cfpos, UErrorCode& status) const override;
private:
FormattedDateIntervalData *fData;
@@ -588,7 +588,7 @@ public:
* If parse fails, return contents are undefined.
* @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
+ * @return A newly created Formattable* object, or nullptr
* on failure. The caller owns this and should
* delete it when done.
* @internal ICU 4.0
@@ -995,8 +995,8 @@ private:
const UnicodeString* skeleton,
const UnicodeString* bestSkeleton,
int8_t differenceInfo,
- UnicodeString* extendedSkeleton = NULL,
- UnicodeString* extendedBestSkeleton = NULL);
+ UnicodeString* extendedSkeleton = nullptr,
+ UnicodeString* extendedBestSkeleton = nullptr);
/**
* Adjust field width in best match interval pattern to match
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/dtitvinf.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/dtitvinf.h
index a1f4f426a1c..5b9a45351c2 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/dtitvinf.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/dtitvinf.h
@@ -151,7 +151,7 @@ U_NAMESPACE_BEGIN
* calendar; non-Gregorian calendars are supported from ICU 4.4.1.
* @stable ICU 4.0
**/
-class U_I18N_API DateIntervalInfo U_FINAL : public UObject {
+class U_I18N_API DateIntervalInfo final : public UObject {
public:
/**
* Default constructor.
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/dtptngen.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/dtptngen.h
index 6d2351ffca8..8c374a30943 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/dtptngen.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/dtptngen.h
@@ -330,7 +330,6 @@ public:
const UnicodeString& getDateTimeFormat() const;
#if !UCONFIG_NO_FORMATTING
-#ifndef U_HIDE_DRAFT_API
/**
* dateTimeFormats are message patterns used to compose combinations of date
* and time patterns. There are four length styles, corresponding to the
@@ -351,7 +350,7 @@ public:
* in/out parameter; if no failure status is already set,
* it will be set according to result of the function (e.g.
* U_ILLEGAL_ARGUMENT_ERROR for style out of range).
- * @draft ICU 71
+ * @stable ICU 71
*/
void setDateTimeFormat(UDateFormatStyle style, const UnicodeString& dateTimeFormat,
UErrorCode& status);
@@ -371,11 +370,10 @@ public:
* or the contents of the string, may no longer be valid if
* setDateTimeFormat is called, or the DateTimePatternGenerator
* object is deleted.
- * @draft ICU 71
+ * @stable ICU 71
*/
const UnicodeString& getDateTimeFormat(UDateFormatStyle style,
UErrorCode& status) const;
-#endif /* U_HIDE_DRAFT_API */
#endif /* #if !UCONFIG_NO_FORMATTING */
/**
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/fieldpos.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/fieldpos.h
index b985f3b2f76..0c092a00522 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/fieldpos.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/fieldpos.h
@@ -177,7 +177,7 @@ public:
/**
* Clone this object.
* Clones can be used concurrently in multiple threads.
- * If an error occurs, then NULL is returned.
+ * If an error occurs, then nullptr is returned.
* The caller must delete the clone.
*
* @return a clone of this object
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/fmtable.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/fmtable.h
index e1c6dec35e4..6bda3576042 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/fmtable.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/fmtable.h
@@ -202,7 +202,7 @@ public:
/**
* Clone this object.
* Clones can be used concurrently in multiple threads.
- * If an error occurs, then NULL is returned.
+ * If an error occurs, then nullptr is returned.
* The caller must delete the clone.
*
* @return a clone of this object
@@ -446,7 +446,7 @@ public:
/**
* Gets the array value and count of this object. If the type is
* not an array, status is set to U_INVALID_FORMAT_ERROR, count is
- * set to 0, and the result is NULL.
+ * set to 0, and the result is nullptr.
* @param count fill-in with the count of this object.
* @param status the error code.
* @return the array value of this object.
@@ -466,15 +466,15 @@ public:
/**
* Returns a pointer to the UObject contained within this
- * formattable, or NULL if this object does not contain a UObject.
- * @return a UObject pointer, or NULL
+ * formattable, or nullptr if this object does not contain a UObject.
+ * @return a UObject pointer, or nullptr
* @stable ICU 3.0
*/
const UObject* getObject() const;
/**
* Returns a numeric string representation of the number contained within this
- * formattable, or NULL if this object does not contain numeric type.
+ * formattable, or nullptr if this object does not contain numeric type.
* For values obtained by parsing, the returned decimal number retains
* the full precision and range of the original input, unconstrained by
* the limits of a double floating point or a 64 bit int.
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/formattednumber.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/formattednumber.h
new file mode 100644
index 00000000000..83178ea40ef
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/formattednumber.h
@@ -0,0 +1,211 @@
+// © 2022 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#ifndef __FORMATTEDNUMBER_H__
+#define __FORMATTEDNUMBER_H__
+
+#include "unicode/utypes.h"
+
+#if U_SHOW_CPLUSPLUS_API
+
+#if !UCONFIG_NO_FORMATTING
+
+#include "unicode/uobject.h"
+#include "unicode/formattedvalue.h"
+#include "unicode/measunit.h"
+#include "unicode/udisplayoptions.h"
+
+/**
+ * \file
+ * \brief C API: Formatted number result from various number formatting functions.
+ *
+ * See also {@link icu::FormattedValue} for additional things you can do with a FormattedNumber.
+ */
+
+U_NAMESPACE_BEGIN
+
+class FieldPositionIteratorHandler;
+
+namespace number { // icu::number
+
+namespace impl {
+class DecimalQuantity;
+class UFormattedNumberData;
+struct UFormattedNumberImpl;
+} // icu::number::impl
+
+
+
+/**
+ * The result of a number formatting operation. This class allows the result to be exported in several data types,
+ * including a UnicodeString and a FieldPositionIterator.
+ *
+ * Instances of this class are immutable and thread-safe.
+ *
+ * @stable ICU 60
+ */
+class U_I18N_API FormattedNumber : public UMemory, public FormattedValue {
+ public:
+
+ /**
+ * Default constructor; makes an empty FormattedNumber.
+ * @stable ICU 64
+ */
+ FormattedNumber()
+ : fData(nullptr), fErrorCode(U_INVALID_STATE_ERROR) {}
+
+ /**
+ * Move constructor: Leaves the source FormattedNumber in an undefined state.
+ * @stable ICU 62
+ */
+ FormattedNumber(FormattedNumber&& src) noexcept;
+
+ /**
+ * Destruct an instance of FormattedNumber.
+ * @stable ICU 60
+ */
+ virtual ~FormattedNumber() override;
+
+ /** Copying not supported; use move constructor instead. */
+ FormattedNumber(const FormattedNumber&) = delete;
+
+ /** Copying not supported; use move assignment instead. */
+ FormattedNumber& operator=(const FormattedNumber&) = delete;
+
+ /**
+ * Move assignment: Leaves the source FormattedNumber in an undefined state.
+ * @stable ICU 62
+ */
+ FormattedNumber& operator=(FormattedNumber&& src) noexcept;
+
+ // Copybrief: this method is older than the parent method
+ /**
+ * @copybrief FormattedValue::toString()
+ *
+ * For more information, see FormattedValue::toString()
+ *
+ * @stable ICU 62
+ */
+ UnicodeString toString(UErrorCode& status) const override;
+
+ // Copydoc: this method is new in ICU 64
+ /** @copydoc FormattedValue::toTempString() */
+ UnicodeString toTempString(UErrorCode& status) const override;
+
+ // Copybrief: this method is older than the parent method
+ /**
+ * @copybrief FormattedValue::appendTo()
+ *
+ * For more information, see FormattedValue::appendTo()
+ *
+ * @stable ICU 62
+ */
+ Appendable &appendTo(Appendable& appendable, UErrorCode& status) const override;
+
+ // Copydoc: this method is new in ICU 64
+ /** @copydoc FormattedValue::nextPosition() */
+ UBool nextPosition(ConstrainedFieldPosition& cfpos, UErrorCode& status) const override;
+
+ /**
+ * Export the formatted number as a "numeric string" conforming to the
+ * syntax defined in the Decimal Arithmetic Specification, available at
+ * http://speleotrove.com/decimal
+ *
+ * This endpoint is useful for obtaining the exact number being printed
+ * after scaling and rounding have been applied by the number formatter.
+ *
+ * Example call site:
+ *
+ * auto decimalNumber = fn.toDecimalNumber<std::string>(status);
+ *
+ * @tparam StringClass A string class compatible with StringByteSink;
+ * for example, std::string.
+ * @param status Set if an error occurs.
+ * @return A StringClass containing the numeric string.
+ * @stable ICU 65
+ */
+ template<typename StringClass>
+ inline StringClass toDecimalNumber(UErrorCode& status) const;
+
+ /**
+ * Gets the resolved output unit.
+ *
+ * The output unit is dependent upon the localized preferences for the usage
+ * specified via NumberFormatterSettings::usage(), and may be a unit with
+ * UMEASURE_UNIT_MIXED unit complexity (MeasureUnit::getComplexity()), such
+ * as "foot-and-inch" or "hour-and-minute-and-second".
+ *
+ * @return `MeasureUnit`.
+ * @stable ICU 68
+ */
+ MeasureUnit getOutputUnit(UErrorCode& status) const;
+
+ /**
+ * Gets the noun class of the formatted output. Returns `UNDEFINED` when the noun class
+ * is not supported yet.
+ *
+ * @return UDisplayOptionsNounClass
+ * @stable ICU 72
+ */
+ UDisplayOptionsNounClass getNounClass(UErrorCode &status) const;
+
+#ifndef U_HIDE_INTERNAL_API
+
+ /**
+ * Gets the raw DecimalQuantity for plural rule selection.
+ * @internal
+ */
+ void getDecimalQuantity(impl::DecimalQuantity& output, UErrorCode& status) const;
+
+ /**
+ * Populates the mutable builder type FieldPositionIteratorHandler.
+ * @internal
+ */
+ void getAllFieldPositionsImpl(FieldPositionIteratorHandler& fpih, UErrorCode& status) const;
+
+#endif /* U_HIDE_INTERNAL_API */
+
+ private:
+ // Can't use LocalPointer because UFormattedNumberData is forward-declared
+ impl::UFormattedNumberData *fData;
+
+ // Error code for the terminal methods
+ UErrorCode fErrorCode;
+
+ /**
+ * Internal constructor from data type. Adopts the data pointer.
+ * @internal (private)
+ */
+ explicit FormattedNumber(impl::UFormattedNumberData *results)
+ : fData(results), fErrorCode(U_ZERO_ERROR) {}
+
+ explicit FormattedNumber(UErrorCode errorCode)
+ : fData(nullptr), fErrorCode(errorCode) {}
+
+ void toDecimalNumber(ByteSink& sink, UErrorCode& status) const;
+
+ // To give LocalizedNumberFormatter format methods access to this class's constructor:
+ friend class LocalizedNumberFormatter;
+ friend class SimpleNumberFormatter;
+
+ // To give C API access to internals
+ friend struct impl::UFormattedNumberImpl;
+};
+
+template<typename StringClass>
+StringClass FormattedNumber::toDecimalNumber(UErrorCode& status) const {
+ StringClass result;
+ StringByteSink<StringClass> sink(&result);
+ toDecimalNumber(sink, status);
+ return result;
+}
+
+} // namespace number
+U_NAMESPACE_END
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+
+#endif /* U_SHOW_CPLUSPLUS_API */
+
+#endif // __FORMATTEDNUMBER_H__
+
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/gregocal.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/gregocal.h
index d97b33b7aca..ab5a9c15716 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/gregocal.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/gregocal.h
@@ -88,7 +88,7 @@ U_NAMESPACE_BEGIN
* cout << "Current Time" << endl;
*
* // create a Pacific Standard Time time zone
- * SimpleTimeZone* pdt = new SimpleTimeZone(-8 * 60 * 60 * 1000, ids->unext(NULL, success)));
+ * SimpleTimeZone* pdt = new SimpleTimeZone(-8 * 60 * 60 * 1000, ids->unext(nullptr, success)));
*
* // set up rules for daylight savings time
* pdt->setStartRule(UCAL_MARCH, 1, UCAL_SUNDAY, 2 * 60 * 60 * 1000);
@@ -423,17 +423,6 @@ public:
*/
virtual int32_t getActualMaximum(UCalendarDateFields field, UErrorCode& status) const override;
- /**
- * (Overrides Calendar) Return true if the current date for this Calendar is in
- * Daylight Savings Time. Recognizes DST_OFFSET, if it is set.
- *
- * @param status Fill-in parameter which receives the status of this operation.
- * @return True if the current date for this Calendar is in Daylight Savings Time,
- * false, otherwise.
- * @stable ICU 2.0
- */
- virtual UBool inDaylightTime(UErrorCode& status) const override;
-
public:
/**
@@ -548,28 +537,12 @@ public:
#ifndef U_HIDE_INTERNAL_API
/**
- * return the length of the given year.
- * @param year the given year.
- * @return the length of the given year.
- * @internal
- */
- int32_t yearLength(int32_t year) const;
-
- /**
* return the length of the year field.
* @return the length of the year field
* @internal
*/
int32_t yearLength(void) const;
- /**
- * After adjustments such as add(MONTH), add(YEAR), we don't want the
- * month to jump around. E.g., we don't want Jan 31 + 1 month to go to Mar
- * 3, we want it to go to Feb 28. Adjustments which might run into this
- * problem call this method to retain the proper month.
- * @internal
- */
- void pinDayOfMonth(void);
#endif /* U_HIDE_INTERNAL_API */
/**
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/listformatter.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/listformatter.h
index 0277afd1671..37a76dcdd40 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/listformatter.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/listformatter.h
@@ -95,13 +95,13 @@ class U_I18N_API FormattedList : public UMemory, public FormattedValue {
* Move constructor: Leaves the source FormattedList in an undefined state.
* @stable ICU 64
*/
- FormattedList(FormattedList&& src) U_NOEXCEPT;
+ FormattedList(FormattedList&& src) noexcept;
/**
* Destruct an instance of FormattedList.
* @stable ICU 64
*/
- virtual ~FormattedList() U_OVERRIDE;
+ virtual ~FormattedList() override;
/** Copying not supported; use move constructor instead. */
FormattedList(const FormattedList&) = delete;
@@ -113,19 +113,19 @@ class U_I18N_API FormattedList : public UMemory, public FormattedValue {
* Move assignment: Leaves the source FormattedList in an undefined state.
* @stable ICU 64
*/
- FormattedList& operator=(FormattedList&& src) U_NOEXCEPT;
+ FormattedList& operator=(FormattedList&& src) noexcept;
/** @copydoc FormattedValue::toString() */
- UnicodeString toString(UErrorCode& status) const U_OVERRIDE;
+ UnicodeString toString(UErrorCode& status) const override;
/** @copydoc FormattedValue::toTempString() */
- UnicodeString toTempString(UErrorCode& status) const U_OVERRIDE;
+ UnicodeString toTempString(UErrorCode& status) const override;
/** @copydoc FormattedValue::appendTo() */
- Appendable &appendTo(Appendable& appendable, UErrorCode& status) const U_OVERRIDE;
+ Appendable &appendTo(Appendable& appendable, UErrorCode& status) const override;
/** @copydoc FormattedValue::nextPosition() */
- UBool nextPosition(ConstrainedFieldPosition& cfpos, UErrorCode& status) const U_OVERRIDE;
+ UBool nextPosition(ConstrainedFieldPosition& cfpos, UErrorCode& status) const override;
private:
FormattedListData *fData;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/measfmt.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/measfmt.h
index 893076145f5..59bf546a905 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/measfmt.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/measfmt.h
@@ -244,7 +244,7 @@ class U_I18N_API MeasureFormat : public Format {
* {@link icu::number::NumberFormatter} instead of NumberFormat.
* @param locale desired locale
* @param ec input-output error code
- * @return a formatter object, or NULL upon error
+ * @return a formatter object, or nullptr upon error
* @stable ICU 3.0
*/
static MeasureFormat* U_EXPORT2 createCurrencyFormat(const Locale& locale,
@@ -257,7 +257,7 @@ class U_I18N_API MeasureFormat : public Format {
* <strong>NOTE:</strong> New users are strongly encouraged to use
* {@link icu::number::NumberFormatter} instead of NumberFormat.
* @param ec input-output error code
- * @return a formatter object, or NULL upon error
+ * @return a formatter object, or nullptr upon error
* @stable ICU 3.0
*/
static MeasureFormat* U_EXPORT2 createCurrencyFormat(UErrorCode& ec);
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/measunit.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/measunit.h
index 6a64ae2bb3e..8f358357826 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/measunit.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/measunit.h
@@ -19,6 +19,7 @@
#if !UCONFIG_NO_FORMATTING
+#include <utility>
#include "unicode/unistr.h"
#include "unicode/localpointer.h"
@@ -370,7 +371,8 @@ class U_I18N_API MeasureUnit: public UObject {
/**
* Default constructor.
- * Populates the instance with the base dimensionless unit.
+ * Populates the instance with the base dimensionless unit, which means that there will be
+ * no unit on the formatted number.
* @stable ICU 3.0
*/
MeasureUnit();
@@ -1526,23 +1528,21 @@ class U_I18N_API MeasureUnit: public UObject {
*/
static MeasureUnit getNanosecond();
-#ifndef U_HIDE_DRAFT_API
/**
* Returns by pointer, unit of duration: quarter.
* Caller owns returned value and must free it.
* Also see {@link #getQuarter()}.
* @param status ICU error code.
- * @draft ICU 72
+ * @stable ICU 72
*/
static MeasureUnit *createQuarter(UErrorCode &status);
/**
* Returns by value, unit of duration: quarter.
* Also see {@link #createQuarter()}.
- * @draft ICU 72
+ * @stable ICU 72
*/
static MeasureUnit getQuarter();
-#endif /* U_HIDE_DRAFT_API */
/**
* Returns by pointer, unit of duration: second.
@@ -2736,23 +2736,21 @@ class U_I18N_API MeasureUnit: public UObject {
*/
static MeasureUnit getTon();
-#ifndef U_HIDE_DRAFT_API
/**
* Returns by pointer, unit of mass: tonne.
* Caller owns returned value and must free it.
* Also see {@link #getTonne()}.
* @param status ICU error code.
- * @draft ICU 72
+ * @stable ICU 72
*/
static MeasureUnit *createTonne(UErrorCode &status);
/**
* Returns by value, unit of mass: tonne.
* Also see {@link #createTonne()}.
- * @draft ICU 72
+ * @stable ICU 72
*/
static MeasureUnit getTonne();
-#endif /* U_HIDE_DRAFT_API */
/**
* Returns by pointer, unit of power: gigawatt.
@@ -2882,6 +2880,24 @@ class U_I18N_API MeasureUnit: public UObject {
*/
static MeasureUnit getBar();
+#ifndef U_HIDE_DRAFT_API
+ /**
+ * Returns by pointer, unit of pressure: gasoline-energy-density.
+ * Caller owns returned value and must free it.
+ * Also see {@link #getGasolineEnergyDensity()}.
+ * @param status ICU error code.
+ * @draft ICU 74
+ */
+ static MeasureUnit *createGasolineEnergyDensity(UErrorCode &status);
+
+ /**
+ * Returns by value, unit of pressure: gasoline-energy-density.
+ * Also see {@link #createGasolineEnergyDensity()}.
+ * @draft ICU 74
+ */
+ static MeasureUnit getGasolineEnergyDensity();
+#endif /* U_HIDE_DRAFT_API */
+
/**
* Returns by pointer, unit of pressure: hectopascal.
* Caller owns returned value and must free it.
@@ -3010,6 +3026,24 @@ class U_I18N_API MeasureUnit: public UObject {
*/
static MeasureUnit getPoundPerSquareInch();
+#ifndef U_HIDE_DRAFT_API
+ /**
+ * Returns by pointer, unit of speed: beaufort.
+ * Caller owns returned value and must free it.
+ * Also see {@link #getBeaufort()}.
+ * @param status ICU error code.
+ * @draft ICU 73
+ */
+ static MeasureUnit *createBeaufort(UErrorCode &status);
+
+ /**
+ * Returns by value, unit of speed: beaufort.
+ * Also see {@link #createBeaufort()}.
+ * @draft ICU 73
+ */
+ static MeasureUnit getBeaufort();
+#endif /* U_HIDE_DRAFT_API */
+
/**
* Returns by pointer, unit of speed: kilometer-per-hour.
* Caller owns returned value and must free it.
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/measure.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/measure.h
index 7b118acfcfa..fbef17c8f03 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/measure.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/measure.h
@@ -49,7 +49,7 @@ class U_I18N_API Measure: public UObject {
* unit. After this call, the caller must not delete the given
* unit object.
* @param number a numeric object; amount.isNumeric() must be true
- * @param adoptedUnit the unit object, which must not be NULL
+ * @param adoptedUnit the unit object, which must not be nullptr
* @param ec input-output error code. If the amount or the unit
* is invalid, then this will be set to a failing value.
* @stable ICU 3.0
@@ -89,6 +89,16 @@ class U_I18N_API Measure: public UObject {
*/
bool operator==(const UObject& other) const;
+#ifndef U_HIDE_DRAFT_API
+ /**
+ * Inequality operator. Returns true if this object is not equal to the other object.
+ * @param other the object to compare with
+ * @return true if the objects are not equal
+ * @draft ICU 74
+ */
+ inline bool operator!=(const UObject& other) const { return !operator==(other); }
+#endif // U_HIDE_DRAFT_API
+
/**
* Return a reference to the numeric value of this object. The
* numeric value may be of any numeric type supported by
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/msgfmt.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/msgfmt.h
index 76e1ab788e2..a8a61f90e3f 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/msgfmt.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/msgfmt.h
@@ -483,7 +483,7 @@ public:
* @param aposMode The new apostrophe mode.
* @param parseError Struct to receive information on the position
* of an error within the pattern.
- * Can be NULL.
+ * Can be nullptr.
* @param status Input/output error code. If the
* pattern cannot be parsed, set to failure code.
* @stable ICU 4.8
@@ -637,8 +637,8 @@ public:
* about format numbering.
*
* @param count output parameter to receive the size of the array
- * @return an array of count Format* objects, or NULL if out of
- * memory. Any or all of the array elements may be NULL.
+ * @return an array of count Format* objects, or nullptr if out of
+ * memory. Any or all of the array elements may be nullptr.
* @stable ICU 2.0
*/
virtual const Format** getFormats(int32_t& count) const;
@@ -768,7 +768,7 @@ public:
* @param status Input/output error code. If the
* pattern cannot be parsed, set to failure code.
* @return an array of parsed arguments. The caller owns both
- * the array and its contents. Returns NULL if status is not U_ZERO_ERROR.
+ * the array and its contents. Returns nullptr if status is not U_ZERO_ERROR.
*
* @stable ICU 2.0
*/
@@ -870,8 +870,8 @@ public:
* Compares two Format objects. This is used for constructing the hash
* tables.
*
- * @param left pointer to a Format object. Must not be NULL.
- * @param right pointer to a Format object. Must not be NULL.
+ * @param left pointer to a Format object. Must not be nullptr.
+ * @param right pointer to a Format object. Must not be nullptr.
*
* @return whether the two objects are the same
* @internal
@@ -946,7 +946,7 @@ private:
PluralSelectorProvider ordinalProvider;
/**
- * Method to retrieve default formats (or NULL on failure).
+ * Method to retrieve default formats (or nullptr on failure).
* These are semantically const, but may modify *this.
*/
const NumberFormat* getDefaultNumberFormat(UErrorCode&) const;
@@ -978,13 +978,13 @@ private:
* AppendableWrapper, updates the field position.
*
* @param msgStart Index to msgPattern part to start formatting from.
- * @param plNumber NULL except when formatting a plural argument sub-message
+ * @param plNumber nullptr except when formatting a plural argument sub-message
* where a '#' is replaced by the format string for this number.
- * @param arguments The formattable objects array. (Must not be NULL.)
- * @param argumentNames NULL if numbered values are used. Otherwise the same
+ * @param arguments The formattable objects array. (Must not be nullptr.)
+ * @param argumentNames nullptr if numbered values are used. Otherwise the same
* length as "arguments", and each entry is the name of the
* corresponding argument in "arguments".
- * @param cnt The length of arguments (and of argumentNames if that is not NULL).
+ * @param cnt The length of arguments (and of argumentNames if that is not nullptr).
* @param appendTo Output parameter to receive the result.
* The result string is appended to existing contents.
* @param pos Field position status.
@@ -1081,8 +1081,8 @@ private:
void resetPattern();
/**
- * A DummyFormatter that we use solely to store a NULL value. UHash does
- * not support storing NULL values.
+ * A DummyFormatter that we use solely to store a nullptr value. UHash does
+ * not support storing nullptr values.
*/
class U_I18N_API DummyFormat : public Format {
public:
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/numberformatter.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/numberformatter.h
index be2056be36d..069324a9ef3 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/numberformatter.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/numberformatter.h
@@ -16,17 +16,17 @@
#include "unicode/dcfmtsym.h"
#include "unicode/displayoptions.h"
#include "unicode/fieldpos.h"
-#include "unicode/formattedvalue.h"
#include "unicode/fpositer.h"
#include "unicode/measunit.h"
#include "unicode/nounit.h"
#include "unicode/parseerr.h"
#include "unicode/plurrule.h"
#include "unicode/ucurr.h"
-#include "unicode/udisplayoptions.h"
#include "unicode/unum.h"
#include "unicode/unumberformatter.h"
#include "unicode/uobject.h"
+#include "unicode/unumberoptions.h"
+#include "unicode/formattednumber.h"
/**
* \file
@@ -80,6 +80,9 @@
* This API is based on the <em>fluent</em> design pattern popularized by libraries such as Google's Guava. For
* extensive details on the design of this API, read <a href="https://goo.gl/szi5VB">the design doc</a>.
*
+ * <p>
+ * Note: To format monetary/currency values, specify the currency in the `.unit()` function.
+ *
* @author Shane Carr
*/
@@ -112,6 +115,7 @@ namespace number { // icu::number
// Forward declarations:
class UnlocalizedNumberFormatter;
class LocalizedNumberFormatter;
+class SimpleNumberFormatter;
class FormattedNumber;
class Notation;
class ScientificNotation;
@@ -166,6 +170,8 @@ struct UFormattedNumberImpl;
class MutablePatternModifier;
class ImmutablePatternModifier;
struct DecimalFormatWarehouse;
+struct SimpleMicroProps;
+class AdoptingSignumModifierStore;
/**
* Used for NumberRangeFormatter and implemented in numrange_fluent.cpp.
@@ -642,7 +648,6 @@ class U_I18N_API Precision : public UMemory {
*/
static IncrementPrecision increment(double roundingIncrement);
-#ifndef U_HIDE_DRAFT_API
/**
* Version of `Precision::increment()` that takes an integer at a particular power of 10.
*
@@ -664,10 +669,9 @@ class U_I18N_API Precision : public UMemory {
* @param magnitude
* The power of 10 of the ones digit of the mantissa.
* @return A precision for chaining or passing to the NumberFormatter precision() setter.
- * @draft ICU 71
+ * @stable ICU 71
*/
static IncrementPrecision incrementExact(uint64_t mantissa, int16_t magnitude);
-#endif // U_HIDE_DRAFT_API
/**
* Show numbers rounded and padded according to the rules for the currency unit. The most common
@@ -1145,10 +1149,10 @@ class U_I18N_API Scale : public UMemory {
Scale& operator=(const Scale& other);
/** @stable ICU 62 */
- Scale(Scale&& src) U_NOEXCEPT;
+ Scale(Scale&& src) noexcept;
/** @stable ICU 62 */
- Scale& operator=(Scale&& src) U_NOEXCEPT;
+ Scale& operator=(Scale&& src) noexcept;
/** @stable ICU 62 */
~Scale();
@@ -1224,10 +1228,10 @@ class U_I18N_API StringProp : public UMemory {
#ifndef U_HIDE_INTERNAL_API
/** @internal */
- StringProp(StringProp &&src) U_NOEXCEPT;
+ StringProp(StringProp &&src) noexcept;
/** @internal */
- StringProp &operator=(StringProp &&src) U_NOEXCEPT;
+ StringProp &operator=(StringProp &&src) noexcept;
/** @internal */
int16_t length() const {
@@ -1288,10 +1292,10 @@ class U_I18N_API SymbolsWrapper : public UMemory {
SymbolsWrapper &operator=(const SymbolsWrapper &other);
/** @internal */
- SymbolsWrapper(SymbolsWrapper&& src) U_NOEXCEPT;
+ SymbolsWrapper(SymbolsWrapper&& src) noexcept;
/** @internal */
- SymbolsWrapper &operator=(SymbolsWrapper&& src) U_NOEXCEPT;
+ SymbolsWrapper &operator=(SymbolsWrapper&& src) noexcept;
/** @internal */
~SymbolsWrapper();
@@ -1436,9 +1440,11 @@ class U_I18N_API Grouper : public UMemory {
// To allow MacroProps/MicroProps to initialize empty instances:
friend struct MacroProps;
friend struct MicroProps;
+ friend struct SimpleMicroProps;
// To allow NumberFormatterImpl to access isBogus() and perform other operations:
friend class NumberFormatterImpl;
+ friend class ::icu::number::SimpleNumberFormatter;
// To allow NumberParserImpl to perform setLocaleData():
friend class ::icu::numparse::impl::NumberParserImpl;
@@ -2254,14 +2260,13 @@ class U_I18N_API NumberFormatterSettings {
*/
Derived usage(StringPiece usage) &&;
-#ifndef U_HIDE_DRAFT_API
/**
* Specifies the DisplayOptions. For example, UDisplayOptionsGrammaticalCase specifies
* the desired case for a unit formatter's output (e.g. accusative, dative, genitive).
*
* @param displayOptions
* @return The fluent chain.
- * @draft ICU 72
+ * @stable ICU 72
*/
Derived displayOptions(const DisplayOptions &displayOptions) const &;
@@ -2270,10 +2275,9 @@ class U_I18N_API NumberFormatterSettings {
*
* @param displayOptions
* @return The fluent chain.
- * @draft ICU 72
+ * @stable ICU 72
*/
Derived displayOptions(const DisplayOptions &displayOptions) &&;
-#endif // U_HIDE_DRAFT_API
#ifndef U_HIDE_INTERNAL_API
/**
@@ -2413,6 +2417,13 @@ class U_I18N_API NumberFormatterSettings {
friend class impl::NumberRangeFormatterImpl;
};
+// Explicit instantiations in source/i18n/number_fluent.cpp.
+// (MSVC treats imports/exports of explicit instantiations differently.)
+#ifndef _MSC_VER
+extern template class NumberFormatterSettings<UnlocalizedNumberFormatter>;
+extern template class NumberFormatterSettings<LocalizedNumberFormatter>;
+#endif
+
/**
* A NumberFormatter that does not yet have a locale. In order to format numbers, a locale must be specified.
*
@@ -2465,7 +2476,7 @@ class U_I18N_API UnlocalizedNumberFormatter
* The source UnlocalizedNumberFormatter will be left in a valid but undefined state.
* @stable ICU 62
*/
- UnlocalizedNumberFormatter(UnlocalizedNumberFormatter&& src) U_NOEXCEPT;
+ UnlocalizedNumberFormatter(UnlocalizedNumberFormatter&& src) noexcept;
/**
* Copy assignment operator.
@@ -2478,13 +2489,13 @@ class U_I18N_API UnlocalizedNumberFormatter
* The source UnlocalizedNumberFormatter will be left in a valid but undefined state.
* @stable ICU 62
*/
- UnlocalizedNumberFormatter& operator=(UnlocalizedNumberFormatter&& src) U_NOEXCEPT;
+ UnlocalizedNumberFormatter& operator=(UnlocalizedNumberFormatter&& src) noexcept;
private:
explicit UnlocalizedNumberFormatter(const NumberFormatterSettings<UnlocalizedNumberFormatter>& other);
explicit UnlocalizedNumberFormatter(
- NumberFormatterSettings<UnlocalizedNumberFormatter>&& src) U_NOEXCEPT;
+ NumberFormatterSettings<UnlocalizedNumberFormatter>&& src) noexcept;
// To give the fluent setters access to this class's constructor:
friend class NumberFormatterSettings<UnlocalizedNumberFormatter>;
@@ -2611,7 +2622,7 @@ class U_I18N_API LocalizedNumberFormatter
* The source LocalizedNumberFormatter will be left in a valid but undefined state.
* @stable ICU 62
*/
- LocalizedNumberFormatter(LocalizedNumberFormatter&& src) U_NOEXCEPT;
+ LocalizedNumberFormatter(LocalizedNumberFormatter&& src) noexcept;
/**
* Copy assignment operator.
@@ -2624,7 +2635,7 @@ class U_I18N_API LocalizedNumberFormatter
* The source LocalizedNumberFormatter will be left in a valid but undefined state.
* @stable ICU 62
*/
- LocalizedNumberFormatter& operator=(LocalizedNumberFormatter&& src) U_NOEXCEPT;
+ LocalizedNumberFormatter& operator=(LocalizedNumberFormatter&& src) noexcept;
#ifndef U_HIDE_INTERNAL_API
@@ -2662,7 +2673,7 @@ class U_I18N_API LocalizedNumberFormatter
explicit LocalizedNumberFormatter(const NumberFormatterSettings<LocalizedNumberFormatter>& other);
- explicit LocalizedNumberFormatter(NumberFormatterSettings<LocalizedNumberFormatter>&& src) U_NOEXCEPT;
+ explicit LocalizedNumberFormatter(NumberFormatterSettings<LocalizedNumberFormatter>&& src) noexcept;
LocalizedNumberFormatter(const impl::MacroProps &macros, const Locale &locale);
@@ -2693,173 +2704,6 @@ class U_I18N_API LocalizedNumberFormatter
#endif
/**
- * The result of a number formatting operation. This class allows the result to be exported in several data types,
- * including a UnicodeString and a FieldPositionIterator.
- *
- * Instances of this class are immutable and thread-safe.
- *
- * @stable ICU 60
- */
-class U_I18N_API FormattedNumber : public UMemory, public FormattedValue {
- public:
-
- /**
- * Default constructor; makes an empty FormattedNumber.
- * @stable ICU 64
- */
- FormattedNumber()
- : fData(nullptr), fErrorCode(U_INVALID_STATE_ERROR) {}
-
- /**
- * Move constructor: Leaves the source FormattedNumber in an undefined state.
- * @stable ICU 62
- */
- FormattedNumber(FormattedNumber&& src) U_NOEXCEPT;
-
- /**
- * Destruct an instance of FormattedNumber.
- * @stable ICU 60
- */
- virtual ~FormattedNumber() U_OVERRIDE;
-
- /** Copying not supported; use move constructor instead. */
- FormattedNumber(const FormattedNumber&) = delete;
-
- /** Copying not supported; use move assignment instead. */
- FormattedNumber& operator=(const FormattedNumber&) = delete;
-
- /**
- * Move assignment: Leaves the source FormattedNumber in an undefined state.
- * @stable ICU 62
- */
- FormattedNumber& operator=(FormattedNumber&& src) U_NOEXCEPT;
-
- // Copybrief: this method is older than the parent method
- /**
- * @copybrief FormattedValue::toString()
- *
- * For more information, see FormattedValue::toString()
- *
- * @stable ICU 62
- */
- UnicodeString toString(UErrorCode& status) const U_OVERRIDE;
-
- // Copydoc: this method is new in ICU 64
- /** @copydoc FormattedValue::toTempString() */
- UnicodeString toTempString(UErrorCode& status) const U_OVERRIDE;
-
- // Copybrief: this method is older than the parent method
- /**
- * @copybrief FormattedValue::appendTo()
- *
- * For more information, see FormattedValue::appendTo()
- *
- * @stable ICU 62
- */
- Appendable &appendTo(Appendable& appendable, UErrorCode& status) const U_OVERRIDE;
-
- // Copydoc: this method is new in ICU 64
- /** @copydoc FormattedValue::nextPosition() */
- UBool nextPosition(ConstrainedFieldPosition& cfpos, UErrorCode& status) const U_OVERRIDE;
-
- /**
- * Export the formatted number as a "numeric string" conforming to the
- * syntax defined in the Decimal Arithmetic Specification, available at
- * http://speleotrove.com/decimal
- *
- * This endpoint is useful for obtaining the exact number being printed
- * after scaling and rounding have been applied by the number formatter.
- *
- * Example call site:
- *
- * auto decimalNumber = fn.toDecimalNumber<std::string>(status);
- *
- * @tparam StringClass A string class compatible with StringByteSink;
- * for example, std::string.
- * @param status Set if an error occurs.
- * @return A StringClass containing the numeric string.
- * @stable ICU 65
- */
- template<typename StringClass>
- inline StringClass toDecimalNumber(UErrorCode& status) const;
-
- /**
- * Gets the resolved output unit.
- *
- * The output unit is dependent upon the localized preferences for the usage
- * specified via NumberFormatterSettings::usage(), and may be a unit with
- * UMEASURE_UNIT_MIXED unit complexity (MeasureUnit::getComplexity()), such
- * as "foot-and-inch" or "hour-and-minute-and-second".
- *
- * @return `MeasureUnit`.
- * @stable ICU 68
- */
- MeasureUnit getOutputUnit(UErrorCode& status) const;
-
-#ifndef U_HIDE_DRAFT_API
-
- /**
- * Gets the noun class of the formatted output. Returns `UNDEFINED` when the noun class
- * is not supported yet.
- *
- * @return UDisplayOptionsNounClass
- * @draft ICU 72
- */
- UDisplayOptionsNounClass getNounClass(UErrorCode &status) const;
-
-#endif // U_HIDE_DRAFT_API
-
-#ifndef U_HIDE_INTERNAL_API
-
- /**
- * Gets the raw DecimalQuantity for plural rule selection.
- * @internal
- */
- void getDecimalQuantity(impl::DecimalQuantity& output, UErrorCode& status) const;
-
- /**
- * Populates the mutable builder type FieldPositionIteratorHandler.
- * @internal
- */
- void getAllFieldPositionsImpl(FieldPositionIteratorHandler& fpih, UErrorCode& status) const;
-
-#endif /* U_HIDE_INTERNAL_API */
-
- private:
- // Can't use LocalPointer because UFormattedNumberData is forward-declared
- const impl::UFormattedNumberData *fData;
-
- // Error code for the terminal methods
- UErrorCode fErrorCode;
-
- /**
- * Internal constructor from data type. Adopts the data pointer.
- * @internal (private)
- */
- explicit FormattedNumber(impl::UFormattedNumberData *results)
- : fData(results), fErrorCode(U_ZERO_ERROR) {}
-
- explicit FormattedNumber(UErrorCode errorCode)
- : fData(nullptr), fErrorCode(errorCode) {}
-
- void toDecimalNumber(ByteSink& sink, UErrorCode& status) const;
-
- // To give LocalizedNumberFormatter format methods access to this class's constructor:
- friend class LocalizedNumberFormatter;
-
- // To give C API access to internals
- friend struct impl::UFormattedNumberImpl;
-};
-
-template<typename StringClass>
-StringClass FormattedNumber::toDecimalNumber(UErrorCode& status) const {
- StringClass result;
- StringByteSink<StringClass> sink(&result);
- toDecimalNumber(sink, status);
- return result;
-}
-
-/**
* See the main description in numberformatter.h for documentation and examples.
*
* @stable ICU 60
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/numberrangeformatter.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/numberrangeformatter.h
index 7f535952d2f..8ca20f31d71 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/numberrangeformatter.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/numberrangeformatter.h
@@ -381,6 +381,13 @@ class U_I18N_API NumberRangeFormatterSettings {
friend class UnlocalizedNumberRangeFormatter;
};
+// Explicit instantiations in source/i18n/numrange_fluent.cpp.
+// (MSVC treats imports/exports of explicit instantiations differently.)
+#ifndef _MSC_VER
+extern template class NumberRangeFormatterSettings<UnlocalizedNumberRangeFormatter>;
+extern template class NumberRangeFormatterSettings<LocalizedNumberRangeFormatter>;
+#endif
+
/**
* A NumberRangeFormatter that does not yet have a locale. In order to format, a locale must be specified.
*
@@ -433,7 +440,7 @@ class U_I18N_API UnlocalizedNumberRangeFormatter
* The source UnlocalizedNumberRangeFormatter will be left in a valid but undefined state.
* @stable ICU 63
*/
- UnlocalizedNumberRangeFormatter(UnlocalizedNumberRangeFormatter&& src) U_NOEXCEPT;
+ UnlocalizedNumberRangeFormatter(UnlocalizedNumberRangeFormatter&& src) noexcept;
/**
* Copy assignment operator.
@@ -446,14 +453,14 @@ class U_I18N_API UnlocalizedNumberRangeFormatter
* The source UnlocalizedNumberRangeFormatter will be left in a valid but undefined state.
* @stable ICU 63
*/
- UnlocalizedNumberRangeFormatter& operator=(UnlocalizedNumberRangeFormatter&& src) U_NOEXCEPT;
+ UnlocalizedNumberRangeFormatter& operator=(UnlocalizedNumberRangeFormatter&& src) noexcept;
private:
explicit UnlocalizedNumberRangeFormatter(
const NumberRangeFormatterSettings<UnlocalizedNumberRangeFormatter>& other);
explicit UnlocalizedNumberRangeFormatter(
- NumberRangeFormatterSettings<UnlocalizedNumberRangeFormatter>&& src) U_NOEXCEPT;
+ NumberRangeFormatterSettings<UnlocalizedNumberRangeFormatter>&& src) noexcept;
// To give the fluent setters access to this class's constructor:
friend class NumberRangeFormatterSettings<UnlocalizedNumberRangeFormatter>;
@@ -507,7 +514,7 @@ class U_I18N_API LocalizedNumberRangeFormatter
* The source LocalizedNumberRangeFormatter will be left in a valid but undefined state.
* @stable ICU 63
*/
- LocalizedNumberRangeFormatter(LocalizedNumberRangeFormatter&& src) U_NOEXCEPT;
+ LocalizedNumberRangeFormatter(LocalizedNumberRangeFormatter&& src) noexcept;
/**
* Copy assignment operator.
@@ -520,7 +527,7 @@ class U_I18N_API LocalizedNumberRangeFormatter
* The source LocalizedNumberRangeFormatter will be left in a valid but undefined state.
* @stable ICU 63
*/
- LocalizedNumberRangeFormatter& operator=(LocalizedNumberRangeFormatter&& src) U_NOEXCEPT;
+ LocalizedNumberRangeFormatter& operator=(LocalizedNumberRangeFormatter&& src) noexcept;
#ifndef U_HIDE_INTERNAL_API
@@ -554,7 +561,7 @@ class U_I18N_API LocalizedNumberRangeFormatter
const NumberRangeFormatterSettings<LocalizedNumberRangeFormatter>& other);
explicit LocalizedNumberRangeFormatter(
- NumberRangeFormatterSettings<LocalizedNumberRangeFormatter>&& src) U_NOEXCEPT;
+ NumberRangeFormatterSettings<LocalizedNumberRangeFormatter>&& src) noexcept;
LocalizedNumberRangeFormatter(const impl::RangeMacroProps &macros, const Locale &locale);
@@ -586,11 +593,11 @@ class U_I18N_API FormattedNumberRange : public UMemory, public FormattedValue {
*
* @stable ICU 63
*/
- UnicodeString toString(UErrorCode& status) const U_OVERRIDE;
+ UnicodeString toString(UErrorCode& status) const override;
// Copydoc: this method is new in ICU 64
/** @copydoc FormattedValue::toTempString() */
- UnicodeString toTempString(UErrorCode& status) const U_OVERRIDE;
+ UnicodeString toTempString(UErrorCode& status) const override;
// Copybrief: this method is older than the parent method
/**
@@ -600,11 +607,11 @@ class U_I18N_API FormattedNumberRange : public UMemory, public FormattedValue {
*
* @stable ICU 63
*/
- Appendable &appendTo(Appendable &appendable, UErrorCode& status) const U_OVERRIDE;
+ Appendable &appendTo(Appendable &appendable, UErrorCode& status) const override;
// Copydoc: this method is new in ICU 64
/** @copydoc FormattedValue::nextPosition() */
- UBool nextPosition(ConstrainedFieldPosition& cfpos, UErrorCode& status) const U_OVERRIDE;
+ UBool nextPosition(ConstrainedFieldPosition& cfpos, UErrorCode& status) const override;
/**
* Extracts the formatted range as a pair of decimal numbers. This endpoint
@@ -661,14 +668,14 @@ class U_I18N_API FormattedNumberRange : public UMemory, public FormattedValue {
* Leaves the source FormattedNumberRange in an undefined state.
* @stable ICU 63
*/
- FormattedNumberRange(FormattedNumberRange&& src) U_NOEXCEPT;
+ FormattedNumberRange(FormattedNumberRange&& src) noexcept;
/**
* Move assignment:
* Leaves the source FormattedNumberRange in an undefined state.
* @stable ICU 63
*/
- FormattedNumberRange& operator=(FormattedNumberRange&& src) U_NOEXCEPT;
+ FormattedNumberRange& operator=(FormattedNumberRange&& src) noexcept;
/**
* Destruct an instance of FormattedNumberRange, cleaning up any memory it might own.
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/numfmt.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/numfmt.h
index 135fe5b6609..e1aa3092761 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/numfmt.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/numfmt.h
@@ -141,7 +141,7 @@ class StringEnumeration;
* format or parsing, or want to give your users more control, you can
* try dynamic_casting the \c NumberFormat you get from the factory methods to a
* \c DecimalFormat. This will work for the vast majority of
- * countries; just remember to test for NULL in case you
+ * countries; just remember to test for nullptr in case you
* encounter an unusual one.
* <P>
* You can also use forms of the parse and format methods with
@@ -198,7 +198,24 @@ public:
* Return U_FORMAT_INEXACT_ERROR if number does not format exactly.
* @stable ICU 4.8
*/
- kRoundUnnecessary
+ kRoundUnnecessary,
+#ifndef U_HIDE_DRAFT_API
+ /**
+ * Rounds ties toward the odd number.
+ * @draft ICU 73
+ */
+ kRoundHalfOdd,
+ /**
+ * Rounds ties toward +∞.
+ * @draft ICU 73
+ */
+ kRoundHalfCeiling,
+ /**
+ * Rounds ties toward -∞.
+ * @draft ICU 73
+ */
+ kRoundHalfFloor,
+#endif /* U_HIDE_DRAFT_API */
};
/**
@@ -310,7 +327,7 @@ public:
* Result is appended to existing contents.
* @param posIter On return, can be used to iterate over positions
* of fields generated by this format call. Can be
- * NULL.
+ * nullptr.
* @param status Output param filled with success/failure status.
* @return Reference to 'appendTo' parameter.
* @stable ICU 4.4
@@ -343,7 +360,7 @@ public:
* last character successfully parsed. If the
* source is not parsed successfully, this param
* will remain unchanged.
- * @return A newly created Formattable* object, or NULL
+ * @return A newly created Formattable* object, or nullptr
* on failure. The caller owns this and should
* delete it when done.
* @stable ICU 2.0
@@ -433,7 +450,7 @@ public:
* Result is appended to existing contents.
* @param posIter On return, can be used to iterate over positions
* of fields generated by this format call.
- * Can be NULL.
+ * Can be nullptr.
* @param status Output param filled with success/failure status.
* @return Reference to 'appendTo' parameter.
* @stable ICU 4.4
@@ -485,7 +502,7 @@ public:
* Result is appended to existing contents.
* @param posIter On return, can be used to iterate over positions
* of fields generated by this format call.
- * Can be NULL.
+ * Can be nullptr.
* @param status Output param filled with success/failure status.
* @return Reference to 'appendTo' parameter.
* @stable ICU 4.4
@@ -538,7 +555,7 @@ public:
* Result is appended to existing contents.
* @param posIter On return, can be used to iterate over positions
* of fields generated by this format call.
- * Can be NULL.
+ * Can be nullptr.
* @param status Output param filled with success/failure status.
* @return Reference to 'appendTo' parameter.
* @stable ICU 4.4
@@ -559,7 +576,7 @@ public:
* Result is appended to existing contents.
* @param posIter On return, can be used to iterate over positions
* of fields generated by this format call.
- * Can be NULL.
+ * Can be nullptr.
* @param status Output param filled with success/failure status.
* @return Reference to 'appendTo' parameter.
* @stable ICU 4.4
@@ -621,7 +638,7 @@ public:
* IntegerOnly is set, will stop at a decimal point (or equivalent;
* e.g. for rational numbers "1 2/3", will stop after the 1).
* <P>
- * If no object can be parsed, index is unchanged, and NULL is
+ * If no object can be parsed, index is unchanged, and nullptr is
* returned.
* <P>
* This is a pure virtual which concrete subclasses must implement.
@@ -673,7 +690,7 @@ public:
* If the parse fails, the position in unchanged upon output.
* @return if parse succeeds, a pointer to a newly-created CurrencyAmount
* object (owned by the caller) containing information about
- * the parsed currency; if parse fails, this is NULL.
+ * the parsed currency; if parse fails, this is nullptr.
* @stable ICU 49
*/
virtual CurrencyAmount* parseCurrency(const UnicodeString& text,
@@ -1001,7 +1018,7 @@ public:
* currency format.
* @param theCurrency a 3-letter ISO code indicating new currency
* to use. It need not be null-terminated. May be the empty
- * string or NULL to indicate no currency.
+ * string or nullptr to indicate no currency.
* @param ec input-output error code
* @stable ICU 3.0
*/
@@ -1113,7 +1130,7 @@ protected:
/**
* Creates the specified number format style of the desired locale.
* If mustBeDecimalFormat is true, then the returned pointer is
- * either a DecimalFormat or it is NULL.
+ * either a DecimalFormat or it is nullptr.
* @internal
*/
static NumberFormat* makeInstance(const Locale& desiredLocale,
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/numsys.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/numsys.h
index 358dc533a51..51a6e147b10 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/numsys.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/numsys.h
@@ -148,7 +148,7 @@ public:
/**
* Returns the name of this numbering system if it was created using one of the predefined names
- * known to ICU. Otherwise, returns NULL.
+ * known to ICU. Otherwise, returns nullptr.
* The predefined names are identical to the numbering system names as defined by
* the BCP47 definition in Unicode CLDR.
* See also, http://www.unicode.org/repos/cldr/tags/latest/common/bcp47/number.xml
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/plurfmt.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/plurfmt.h
index 1bdc3693413..8e6cbb44540 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/plurfmt.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/plurfmt.h
@@ -543,7 +543,7 @@ private:
class U_I18N_API PluralSelectorAdapter : public PluralSelector {
public:
- PluralSelectorAdapter() : pluralRules(NULL) {
+ PluralSelectorAdapter() : pluralRules(nullptr) {
}
virtual ~PluralSelectorAdapter();
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/plurrule.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/plurrule.h
index b4298de63f9..b7d95175f55 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/plurrule.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/plurrule.h
@@ -247,12 +247,12 @@ public:
/**
* Creates a PluralRules from a description if it is parsable, otherwise
- * returns NULL.
+ * returns nullptr.
*
* @param description rule description
* @param status Output param set to success/failure code on exit, which
* must not indicate a failure before the function call.
- * @return new PluralRules pointer. NULL if there is an error.
+ * @return new PluralRules pointer. nullptr if there is an error.
* @stable ICU 4.0
*/
static PluralRules* U_EXPORT2 createRules(const UnicodeString& description,
@@ -263,7 +263,7 @@ public:
*
* @param status Output param set to success/failure code on exit, which
* must not indicate a failure before the function call.
- * @return new PluralRules pointer. NULL if there is an error.
+ * @return new PluralRules pointer. nullptr if there is an error.
* @stable ICU 4.0
*/
static PluralRules* U_EXPORT2 createDefaultRules(UErrorCode& status);
@@ -437,7 +437,7 @@ public:
*
* @param keyword The keyword.
* @param dest Array into which to put the returned values. May
- * be NULL if destCapacity is 0.
+ * be nullptr if destCapacity is 0.
* @param destCapacity The capacity of the array, must be at least 0.
* @param status The error code. Deprecated function, always sets U_UNSUPPORTED_ERROR.
* @return The count of values available, or -1. This count
@@ -458,7 +458,7 @@ public:
*
* @param keyword The keyword.
* @param dest Array into which to put the returned values. May
- * be NULL if destCapacity is 0.
+ * be nullptr if destCapacity is 0.
* @param destCapacity The capacity of the array, must be at least 0.
* @param status The error code.
* @return The count of values written.
@@ -483,7 +483,7 @@ public:
*
* @param keyword The keyword.
* @param dest Array into which to put the returned values. May
- * be NULL if destCapacity is 0.
+ * be nullptr if destCapacity is 0.
* @param destCapacity The capacity of the array, must be at least 0.
* @param status The error code.
* @return The count of values written.
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/rbnf.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/rbnf.h
index 70d92dd549d..f9a1c8f93a5 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/rbnf.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/rbnf.h
@@ -64,18 +64,20 @@ enum URBNFRuleSetTag {
* @stable ICU 2.2
*/
URBNF_ORDINAL,
+#ifndef U_HIDE_DEPRECATED_API
/**
* Requests predefined ruleset for formatting a value as a duration in hours, minutes, and seconds.
- * @stable ICU 2.2
+ * @deprecated ICU 74 Use MeasureFormat instead.
*/
URBNF_DURATION,
+#endif // U_HIDE_DERECATED_API
/**
* Requests predefined ruleset for various non-place-value numbering systems.
* WARNING: The same resource contains rule sets for a variety of different numbering systems.
* You need to call setDefaultRuleSet() on the formatter to choose the actual numbering system.
* @stable ICU 2.2
*/
- URBNF_NUMBERING_SYSTEM,
+ URBNF_NUMBERING_SYSTEM = 3,
#ifndef U_HIDE_DEPRECATED_API
/**
* One more than the highest normal URBNFRuleSetTag value.
@@ -609,7 +611,7 @@ 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. Arrays are NULL-terminated.
+ * same order as the initial array. Arrays are nullptr-terminated.
* @param rules A description of the formatter's desired behavior.
* See the class documentation for a complete explanation of the description
* syntax.
@@ -653,7 +655,7 @@ 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. Arrays are NULL-terminated.
+ * same order as the initial array. Arrays are nullptr-terminated.
* @param rules A description of the formatter's desired behavior.
* See the class documentation for a complete explanation of the description
* syntax.
@@ -1063,7 +1065,7 @@ public:
private:
RuleBasedNumberFormat() = delete; // default constructor not implemented
- // this will ref the localizations if they are not NULL
+ // this will ref the localizations if they are not nullptr
// caller must deref to get adoption
RuleBasedNumberFormat(const UnicodeString& description, LocalizationInfo* localizations,
const Locale& locale, UParseError& perror, UErrorCode& status);
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/rbtz.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/rbtz.h
index 4fbf330cef1..1cc3483ebf2 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/rbtz.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/rbtz.h
@@ -287,7 +287,7 @@ public:
/**
* Gets the <code>InitialTimeZoneRule</code> and the set of <code>TimeZoneRule</code>
* which represent time transitions for this time zone. On successful return,
- * the argument initial points to non-NULL <code>InitialTimeZoneRule</code> and
+ * the argument initial points to non-nullptr <code>InitialTimeZoneRule</code> and
* the array trsrules is filled with 0 or multiple <code>TimeZoneRule</code>
* instances up to the size specified by trscount. The results are referencing the
* rule instance held by this time zone instance. Therefore, after this time zone
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/regex.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/regex.h
index 39b97441a49..cc2f9249295 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/regex.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/regex.h
@@ -84,7 +84,7 @@ class UVector64;
*
* @stable ICU 2.4
*/
-class U_I18N_API RegexPattern U_FINAL : public UObject {
+class U_I18N_API RegexPattern final : public UObject {
public:
/**
@@ -545,7 +545,7 @@ public:
* @param input The string to be split into fields. The field delimiters
* match the pattern (in the "this" object)
* @param dest An array of mutable UText structs to receive the results of the split.
- * If a field is NULL, a new UText is allocated to contain the results for
+ * If a field is nullptr, a new UText is allocated to contain the results for
* that field. This new UText is not guaranteed to be mutable.
* @param destCapacity The number of elements in the destination array.
* If the number of fields found is less than destCapacity, the
@@ -656,7 +656,7 @@ private:
*
* @stable ICU 2.4
*/
-class U_I18N_API RegexMatcher U_FINAL : public UObject {
+class U_I18N_API RegexMatcher final : public UObject {
public:
/**
@@ -901,13 +901,13 @@ public:
* Returns a shallow clone of the entire live input string with the UText current native index
* set to the beginning of the requested group.
*
- * @param dest The UText into which the input should be cloned, or NULL to create a new UText
+ * @param dest The UText into which the input should be cloned, or nullptr to create a new UText
* @param group_len A reference to receive the length of the desired capture group
* @param status A reference to a UErrorCode to receive any errors.
* Possible errors are U_REGEX_INVALID_STATE if no match
* has been attempted or the last match failed and
* U_INDEX_OUTOFBOUNDS_ERROR for a bad capture group number.
- * @return dest if non-NULL, a shallow copy of the input text otherwise
+ * @return dest if non-nullptr, a shallow copy of the input text otherwise
*
* @stable ICU 4.6
*/
@@ -923,13 +923,13 @@ public:
* which returns -1 for non-participating groups.
*
* @param groupNum The capture group number.
- * @param dest The UText into which the input should be cloned, or NULL to create a new UText.
+ * @param dest The UText into which the input should be cloned, or nullptr to create a new UText.
* @param group_len A reference to receive the length of the desired capture group
* @param status A reference to a UErrorCode to receive any errors.
* Possible errors are U_REGEX_INVALID_STATE if no match
* has been attempted or the last match failed and
* U_INDEX_OUTOFBOUNDS_ERROR for a bad capture group number.
- * @return dest if non-NULL, a shallow copy of the input text otherwise
+ * @return dest if non-nullptr, a shallow copy of the input text otherwise
*
* @stable ICU 4.6
*/
@@ -1183,9 +1183,9 @@ public:
* Returns the input string being matched, either by copying it into the provided
* UText parameter or by returning a shallow clone of the live input. Note that copying
* the entire input may cause significant performance and memory issues.
- * @param dest The UText into which the input should be copied, or NULL to create a new UText
+ * @param dest The UText into which the input should be copied, or nullptr to create a new UText
* @param status error code
- * @return dest if non-NULL, a shallow copy of the input text otherwise
+ * @return dest if non-nullptr, a shallow copy of the input text otherwise
*
* @stable ICU 4.6
*/
@@ -1388,7 +1388,7 @@ public:
*
* @param replacement a string containing the replacement text.
* @param dest a mutable UText in which the results are placed.
- * If NULL, a new UText will be created (which may not be mutable).
+ * If nullptr, a new UText will be created (which may not be mutable).
* @param status a reference to a UErrorCode to receive any errors.
* @return a string containing the results of the find and replace.
* If a pre-allocated UText was provided, it will always be used and returned.
@@ -1438,7 +1438,7 @@ public:
*
* @param replacement a string containing the replacement text.
* @param dest a mutable UText in which the results are placed.
- * If NULL, a new UText will be created (which may not be mutable).
+ * If nullptr, a new UText will be created (which may not be mutable).
* @param status a reference to a UErrorCode to receive any errors.
* @return a string containing the results of the find and replace.
* If a pre-allocated UText was provided, it will always be used and returned.
@@ -1492,7 +1492,7 @@ public:
* operations, see replaceFirst() or replaceAll().
*
* @param dest A mutable UText to which the results of the find-and-replace are appended.
- * Must not be NULL.
+ * Must not be nullptr.
* @param replacement A UText that provides the text to be substituted for
* the input text that matched the regexp pattern. The replacement
* text may contain references to captured text from the input.
@@ -1530,7 +1530,7 @@ public:
* or more invocations of the `RegexMatcher::appendReplacement()`.
*
* @param dest A mutable UText to which the results of the find-and-replace are appended.
- * Must not be NULL.
+ * Must not be nullptr.
* @param status error cod
* @return the destination string.
*
@@ -1578,7 +1578,7 @@ public:
* match the pattern (in the "this" object). This matcher
* will be reset to this input string.
* @param dest An array of mutable UText structs to receive the results of the split.
- * If a field is NULL, a new UText is allocated to contain the results for
+ * If a field is nullptr, a new UText is allocated to contain the results for
* that field. This new UText is not guaranteed to be mutable.
* @param destCapacity The number of elements in the destination array.
* If the number of fields found is less than destCapacity, the
@@ -1791,11 +1791,11 @@ private:
UBool isChunkWordBoundary(int32_t pos);
const RegexPattern *fPattern;
- RegexPattern *fPatternOwned; // Non-NULL if this matcher owns the pattern, and
+ RegexPattern *fPatternOwned; // Non-nullptr if this matcher owns the pattern, and
// should delete it when through.
const UnicodeString *fInput; // The string being matched. Only used for input()
- UText *fInputText; // The text being matched. Is never NULL.
+ UText *fInputText; // The text being matched. Is never nullptr.
UText *fAltInputText; // A shallow copy of the text being matched.
// Only created if the pattern contains backreferences.
int64_t fInputLength; // Full length of the input text.
@@ -1855,11 +1855,11 @@ private:
// stack, in bytes. Zero for unlimited.
URegexMatchCallback *fCallbackFn; // Pointer to match progress callback funct.
- // NULL if there is no callback.
+ // nullptr if there is no callback.
const void *fCallbackContext; // User Context ptr for callback function.
URegexFindProgressCallback *fFindProgressCallbackFn; // Pointer to match progress callback funct.
- // NULL if there is no callback.
+ // nullptr if there is no callback.
const void *fFindProgressCallbackContext; // User Context ptr for callback function.
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/region.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/region.h
index ba4a650f4f9..1e19d66f4a5 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/region.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/region.h
@@ -93,7 +93,7 @@ public:
* Returns a pointer to a Region using the given region code. The region code can be either 2-letter ISO code,
* 3-letter ISO code, UNM.49 numeric code, or other valid Unicode Region Code as defined by the LDML specification.
* The identifier will be canonicalized internally using the supplemental metadata as defined in the CLDR.
- * If the region code is NULL or not recognized, the appropriate error code will be set ( U_ILLEGAL_ARGUMENT_ERROR )
+ * If the region code is nullptr or not recognized, the appropriate error code will be set ( U_ILLEGAL_ARGUMENT_ERROR )
* @stable ICU 51
*/
static const Region* U_EXPORT2 getInstance(const char *region_code, UErrorCode &status);
@@ -112,7 +112,7 @@ public:
static StringEnumeration* U_EXPORT2 getAvailable(URegionType type, UErrorCode &status);
/**
- * Returns a pointer to the region that contains this region. Returns NULL if this region is code "001" (World)
+ * Returns a pointer to the region that contains this region. Returns nullptr if this region is code "001" (World)
* or "ZZ" (Unknown region). For example, calling this method with region "IT" (Italy) returns the
* region "039" (Southern Europe).
* @stable ICU 51
@@ -121,9 +121,9 @@ public:
/**
* Return a pointer to the region that geographically contains this region and matches the given type,
- * moving multiple steps up the containment chain if necessary. Returns NULL if no containing region can be found
+ * moving multiple steps up the containment chain if necessary. Returns nullptr if no containing region can be found
* that matches the given type. Note: The URegionTypes = "URGN_GROUPING", "URGN_DEPRECATED", or "URGN_UNKNOWN"
- * are not appropriate for use in this API. NULL will be returned in this case. For example, calling this method
+ * are not appropriate for use in this API. nullptr will be returned in this case. For example, calling this method
* with region "IT" (Italy) for type "URGN_CONTINENT" returns the region "150" ( Europe ).
* @stable ICU 51
*/
@@ -132,7 +132,7 @@ public:
/**
* Return an enumeration over the IDs of all the regions that are immediate children of this region in the
* region hierarchy. These returned regions could be either macro regions, territories, or a mixture of the two,
- * depending on the containment data as defined in CLDR. This API may return NULL if this region doesn't have
+ * depending on the containment data as defined in CLDR. This API may return nullptr if this region doesn't have
* any sub-regions. For example, calling this method with region "150" (Europe) returns an enumeration containing
* the various sub regions of Europe - "039" (Southern Europe) - "151" (Eastern Europe) - "154" (Northern Europe)
* and "155" (Western Europe).
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/reldatefmt.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/reldatefmt.h
index 2a3742fd63c..5dc4905b12a 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/reldatefmt.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/reldatefmt.h
@@ -248,8 +248,6 @@ typedef enum UDateDirection {
#endif // U_HIDE_DEPRECATED_API
} UDateDirection;
-#if !UCONFIG_NO_BREAK_ITERATION
-
U_NAMESPACE_BEGIN
class BreakIterator;
@@ -283,13 +281,13 @@ class U_I18N_API FormattedRelativeDateTime : public UMemory, public FormattedVal
* Move constructor: Leaves the source FormattedRelativeDateTime in an undefined state.
* @stable ICU 64
*/
- FormattedRelativeDateTime(FormattedRelativeDateTime&& src) U_NOEXCEPT;
+ FormattedRelativeDateTime(FormattedRelativeDateTime&& src) noexcept;
/**
* Destruct an instance of FormattedRelativeDateTime.
* @stable ICU 64
*/
- virtual ~FormattedRelativeDateTime() U_OVERRIDE;
+ virtual ~FormattedRelativeDateTime() override;
/** Copying not supported; use move constructor instead. */
FormattedRelativeDateTime(const FormattedRelativeDateTime&) = delete;
@@ -301,19 +299,19 @@ class U_I18N_API FormattedRelativeDateTime : public UMemory, public FormattedVal
* Move assignment: Leaves the source FormattedRelativeDateTime in an undefined state.
* @stable ICU 64
*/
- FormattedRelativeDateTime& operator=(FormattedRelativeDateTime&& src) U_NOEXCEPT;
+ FormattedRelativeDateTime& operator=(FormattedRelativeDateTime&& src) noexcept;
/** @copydoc FormattedValue::toString() */
- UnicodeString toString(UErrorCode& status) const U_OVERRIDE;
+ UnicodeString toString(UErrorCode& status) const override;
/** @copydoc FormattedValue::toTempString() */
- UnicodeString toTempString(UErrorCode& status) const U_OVERRIDE;
+ UnicodeString toTempString(UErrorCode& status) const override;
/** @copydoc FormattedValue::appendTo() */
- Appendable &appendTo(Appendable& appendable, UErrorCode& status) const U_OVERRIDE;
+ Appendable &appendTo(Appendable& appendable, UErrorCode& status) const override;
/** @copydoc FormattedValue::nextPosition() */
- UBool nextPosition(ConstrainedFieldPosition& cfpos, UErrorCode& status) const U_OVERRIDE;
+ UBool nextPosition(ConstrainedFieldPosition& cfpos, UErrorCode& status) const override;
private:
FormattedRelativeDateTimeData *fData;
@@ -428,7 +426,7 @@ public:
* @param locale the locale
* @param nfToAdopt Constructed object takes ownership of this pointer.
* It is an error for caller to delete this pointer or change its
- * contents after calling this constructor. Caller may pass NULL for
+ * contents after calling this constructor. Caller may pass nullptr for
* this argument if they want default number format behavior.
* @param style the format style. The UDAT_RELATIVE bit field has no effect.
* @param capitalizationContext A value from UDisplayContext that pertains to
@@ -560,7 +558,7 @@ public:
*
* This method returns a String. To get more information about the
* formatting result, use formatNumericToValue().
- *
+ *
* @param offset The signed offset for the specified unit. This
* will be formatted according to this object's
* NumberFormat object.
@@ -586,7 +584,7 @@ public:
*
* This method returns a FormattedRelativeDateTime, which exposes more
* information than the String returned by formatNumeric().
- *
+ *
* @param offset The signed offset for the specified unit. This
* will be formatted according to this object's
* NumberFormat object.
@@ -696,11 +694,19 @@ private:
const SharedPluralRules *fPluralRules;
UDateRelativeDateTimeFormatterStyle fStyle;
UDisplayContext fContext;
+#if !UCONFIG_NO_BREAK_ITERATION
const SharedBreakIterator *fOptBreakIterator;
+#else
+ std::nullptr_t fOptBreakIterator = nullptr;
+#endif // !UCONFIG_NO_BREAK_ITERATION
Locale fLocale;
void init(
NumberFormat *nfToAdopt,
+#if !UCONFIG_NO_BREAK_ITERATION
BreakIterator *brkIter,
+#else
+ std::nullptr_t,
+#endif // !UCONFIG_NO_BREAK_ITERATION
UErrorCode &status);
UnicodeString& adjustForContext(UnicodeString &) const;
UBool checkNoAdjustForContext(UErrorCode& status) const;
@@ -743,7 +749,6 @@ private:
U_NAMESPACE_END
-#endif /* !UCONFIG_NO_BREAK_ITERATION */
#endif /* !UCONFIG_NO_FORMATTING */
#endif /* U_SHOW_CPLUSPLUS_API */
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/search.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/search.h
index 295a3ce67e9..a8004efc431 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/search.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/search.h
@@ -206,7 +206,7 @@ public:
* found, but the match's start or end index is not a
* boundary as determined by the <tt>BreakIterator</tt>,
* the match will be rejected and another will be searched
- * for. If this parameter is <tt>NULL</tt>, no break
+ * for. If this parameter is <tt>nullptr</tt>, no break
* detection is attempted.
* @param status for errors if it occurs
* @see BreakIterator
@@ -218,7 +218,7 @@ public:
* Returns the BreakIterator that is used to restrict the points at
* which matches are detected. This will be the same object that was
* passed to the constructor or to <tt>setBreakIterator</tt>.
- * Note that <tt>NULL</tt> is a legal value; it means that break
+ * Note that <tt>nullptr</tt> is a legal value; it means that break
* detection should not be attempted.
* @return BreakIterator used to restrict matchings.
* @see #setBreakIterator
@@ -452,13 +452,13 @@ protected:
* boundary as determined by the <tt>BreakIterator</tt>,
* the match is rejected and <tt>handleNext</tt> or
* <tt>handlePrev</tt> is called again. If this parameter
- * is <tt>NULL</tt>, no break detection is attempted.
+ * is <tt>nullptr</tt>, no break detection is attempted.
* @see #handleNext
* @see #handlePrev
* @stable ICU 2.0
*/
SearchIterator(const UnicodeString &text,
- BreakIterator *breakiter = NULL);
+ BreakIterator *breakiter = nullptr);
/**
* Constructor for use by subclasses.
@@ -474,12 +474,12 @@ protected:
* boundary as determined by the <tt>BreakIterator</tt>,
* the match is rejected and <tt>handleNext</tt> or
* <tt>handlePrev</tt> is called again. If this parameter
- * is <tt>NULL</tt>, no break detection is attempted.
+ * is <tt>nullptr</tt>, no break detection is attempted.
* @see #handleNext
* @see #handlePrev
* @stable ICU 2.0
*/
- SearchIterator(CharacterIterator &text, BreakIterator *breakiter = NULL);
+ SearchIterator(CharacterIterator &text, BreakIterator *breakiter = nullptr);
// protected methods --------------------------------------------------
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/simplenumberformatter.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/simplenumberformatter.h
new file mode 100644
index 00000000000..32b79a94da4
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/simplenumberformatter.h
@@ -0,0 +1,329 @@
+// © 2022 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#ifndef __SIMPLENUMBERFORMATTERH__
+#define __SIMPLENUMBERFORMATTERH__
+
+#include "unicode/utypes.h"
+
+#if U_SHOW_CPLUSPLUS_API
+
+#if !UCONFIG_NO_FORMATTING
+
+#include "unicode/dcfmtsym.h"
+#include "unicode/usimplenumberformatter.h"
+#include "unicode/formattednumber.h"
+
+/**
+ * \file
+ * \brief C++ API: Simple number formatting focused on low memory and code size.
+ *
+ * These functions render locale-aware number strings but without the bells and whistles found in
+ * other number formatting APIs such as those in numberformatter.h, like units and currencies.
+ *
+ * <pre>
+ * SimpleNumberFormatter snf = SimpleNumberFormatter::forLocale("de-CH", status);
+ * FormattedNumber result = snf.formatInt64(-1000007, status);
+ * assertEquals("", u"-1’000’007", result.toString(status));
+ * </pre>
+ */
+
+U_NAMESPACE_BEGIN
+
+
+namespace number { // icu::number
+
+
+namespace impl {
+class UFormattedNumberData;
+struct SimpleMicroProps;
+class AdoptingSignumModifierStore;
+} // icu::number::impl
+
+
+#ifndef U_HIDE_DRAFT_API
+
+
+/**
+ * An input type for SimpleNumberFormatter.
+ *
+ * This class is mutable and not intended for public subclassing. This class is movable but not copyable.
+ *
+ * @draft ICU 73
+ */
+class U_I18N_API SimpleNumber : public UMemory {
+ public:
+ /**
+ * Creates a SimpleNumber for an integer.
+ *
+ * @draft ICU 73
+ */
+ static SimpleNumber forInt64(int64_t value, UErrorCode& status);
+
+ /**
+ * Changes the value of the SimpleNumber by a power of 10.
+ *
+ * This function immediately mutates the inner value.
+ *
+ * @draft ICU 73
+ */
+ void multiplyByPowerOfTen(int32_t power, UErrorCode& status);
+
+ /**
+ * Rounds the value currently stored in the SimpleNumber to the given power of 10.
+ *
+ * This function immediately mutates the inner value.
+ *
+ * @draft ICU 73
+ */
+ void roundTo(int32_t power, UNumberFormatRoundingMode roundingMode, UErrorCode& status);
+
+ /**
+ * Truncates the most significant digits to the given maximum number of integer digits.
+ *
+ * This function immediately mutates the inner value.
+ *
+ * @draft ICU 73
+ */
+ void truncateStart(uint32_t maximumIntegerDigits, UErrorCode& status);
+
+ /**
+ * Pads the beginning of the number with zeros up to the given minimum number of integer digits.
+ *
+ * This setting is applied upon formatting the number.
+ *
+ * @draft ICU 73
+ */
+ void setMinimumIntegerDigits(uint32_t minimumIntegerDigits, UErrorCode& status);
+
+ /**
+ * Pads the end of the number with zeros up to the given minimum number of fraction digits.
+ *
+ * This setting is applied upon formatting the number.
+ *
+ * @draft ICU 73
+ */
+ void setMinimumFractionDigits(uint32_t minimumFractionDigits, UErrorCode& status);
+
+ /**
+ * Sets the sign of the number: an explicit plus sign, explicit minus sign, or no sign.
+ *
+ * This setting is applied upon formatting the number.
+ *
+ * NOTE: This does not support accounting sign notation.
+ *
+ * @draft ICU 73
+ */
+ void setSign(USimpleNumberSign sign, UErrorCode& status);
+
+ /**
+ * Creates a new, empty SimpleNumber that does not contain a value.
+ *
+ * NOTE: This number will fail to format; use forInt64() to create a SimpleNumber with a value.
+ *
+ * @draft ICU 73
+ */
+ SimpleNumber() = default;
+
+ /**
+ * Destruct this SimpleNumber, cleaning up any memory it might own.
+ *
+ * @draft ICU 73
+ */
+ ~SimpleNumber() {
+ cleanup();
+ }
+
+ /**
+ * SimpleNumber move constructor.
+ *
+ * @draft ICU 73
+ */
+ SimpleNumber(SimpleNumber&& other) noexcept {
+ fData = other.fData;
+ fSign = other.fSign;
+ other.fData = nullptr;
+ }
+
+ /**
+ * SimpleNumber move assignment.
+ *
+ * @draft ICU 73
+ */
+ SimpleNumber& operator=(SimpleNumber&& other) noexcept {
+ cleanup();
+ fData = other.fData;
+ fSign = other.fSign;
+ other.fData = nullptr;
+ return *this;
+ }
+
+ private:
+ SimpleNumber(impl::UFormattedNumberData* data, UErrorCode& status);
+ SimpleNumber(const SimpleNumber&) = delete;
+ SimpleNumber& operator=(const SimpleNumber&) = delete;
+
+ void cleanup();
+
+ impl::UFormattedNumberData* fData = nullptr;
+ USimpleNumberSign fSign = UNUM_SIMPLE_NUMBER_NO_SIGN;
+
+ friend class SimpleNumberFormatter;
+};
+
+
+/**
+ * A special NumberFormatter focused on smaller binary size and memory use.
+ *
+ * SimpleNumberFormatter is capable of basic number formatting, including grouping separators,
+ * sign display, and rounding. It is not capable of currencies, compact notation, or units.
+ *
+ * This class is immutable and not intended for public subclassing. This class is movable but not copyable.
+ *
+ * @draft ICU 73
+ */
+class U_I18N_API SimpleNumberFormatter : public UMemory {
+ public:
+ /**
+ * Creates a new SimpleNumberFormatter with all locale defaults.
+ *
+ * @draft ICU 73
+ */
+ static SimpleNumberFormatter forLocale(
+ const icu::Locale &locale,
+ UErrorCode &status);
+
+ /**
+ * Creates a new SimpleNumberFormatter, overriding the grouping strategy.
+ *
+ * @draft ICU 73
+ */
+ static SimpleNumberFormatter forLocaleAndGroupingStrategy(
+ const icu::Locale &locale,
+ UNumberGroupingStrategy groupingStrategy,
+ UErrorCode &status);
+
+ /**
+ * Creates a new SimpleNumberFormatter, overriding the grouping strategy and symbols.
+ *
+ * IMPORTANT: For efficiency, this function borrows the symbols. The symbols MUST remain valid
+ * for the lifetime of the SimpleNumberFormatter.
+ *
+ * @draft ICU 73
+ */
+ static SimpleNumberFormatter forLocaleAndSymbolsAndGroupingStrategy(
+ const icu::Locale &locale,
+ const DecimalFormatSymbols &symbols,
+ UNumberGroupingStrategy groupingStrategy,
+ UErrorCode &status);
+
+ /**
+ * Formats a value using this SimpleNumberFormatter.
+ *
+ * The SimpleNumber argument is "consumed". A new SimpleNumber object should be created for
+ * every formatting operation.
+ *
+ * @draft ICU 73
+ */
+ FormattedNumber format(SimpleNumber value, UErrorCode &status) const;
+
+ /**
+ * Formats an integer using this SimpleNumberFormatter.
+ *
+ * For more control over the formatting, use SimpleNumber.
+ *
+ * @draft ICU 73
+ */
+ FormattedNumber formatInt64(int64_t value, UErrorCode &status) const {
+ return format(SimpleNumber::forInt64(value, status), status);
+ }
+
+#ifndef U_HIDE_INTERNAL_API
+ /**
+ * Run the formatter with the internal types.
+ * @internal
+ */
+ void formatImpl(impl::UFormattedNumberData* data, USimpleNumberSign sign, UErrorCode& status) const;
+#endif // U_HIDE_INTERNAL_API
+
+ /**
+ * Destruct this SimpleNumberFormatter, cleaning up any memory it might own.
+ *
+ * @draft ICU 73
+ */
+ ~SimpleNumberFormatter() {
+ cleanup();
+ }
+
+ /**
+ * Creates a shell, initialized but non-functional SimpleNumberFormatter.
+ *
+ * @draft ICU 73
+ */
+ SimpleNumberFormatter() = default;
+
+ /**
+ * SimpleNumberFormatter: Move constructor.
+ *
+ * @draft ICU 73
+ */
+ SimpleNumberFormatter(SimpleNumberFormatter&& other) noexcept {
+ fGroupingStrategy = other.fGroupingStrategy;
+ fOwnedSymbols = other.fOwnedSymbols;
+ fMicros = other.fMicros;
+ fPatternModifier = other.fPatternModifier;
+ other.fOwnedSymbols = nullptr;
+ other.fMicros = nullptr;
+ other.fPatternModifier = nullptr;
+ }
+
+ /**
+ * SimpleNumberFormatter: Move assignment.
+ *
+ * @draft ICU 73
+ */
+ SimpleNumberFormatter& operator=(SimpleNumberFormatter&& other) noexcept {
+ cleanup();
+ fGroupingStrategy = other.fGroupingStrategy;
+ fOwnedSymbols = other.fOwnedSymbols;
+ fMicros = other.fMicros;
+ fPatternModifier = other.fPatternModifier;
+ other.fOwnedSymbols = nullptr;
+ other.fMicros = nullptr;
+ other.fPatternModifier = nullptr;
+ return *this;
+ }
+
+ private:
+ void initialize(
+ const icu::Locale &locale,
+ const DecimalFormatSymbols &symbols,
+ UNumberGroupingStrategy groupingStrategy,
+ UErrorCode &status);
+
+ void cleanup();
+
+ SimpleNumberFormatter(const SimpleNumberFormatter&) = delete;
+
+ SimpleNumberFormatter& operator=(const SimpleNumberFormatter&) = delete;
+
+ UNumberGroupingStrategy fGroupingStrategy = UNUM_GROUPING_AUTO;
+
+ // Owned Pointers:
+ DecimalFormatSymbols* fOwnedSymbols = nullptr; // can be empty
+ impl::SimpleMicroProps* fMicros = nullptr;
+ impl::AdoptingSignumModifierStore* fPatternModifier = nullptr;
+};
+
+
+#endif // U_HIDE_DRAFT_API
+
+} // namespace number
+U_NAMESPACE_END
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+
+#endif /* U_SHOW_CPLUSPLUS_API */
+
+#endif // __SIMPLENUMBERFORMATTERH__
+
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/simpletz.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/simpletz.h
index cbdba7aff6e..9005c9ccbaf 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/simpletz.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/simpletz.h
@@ -744,7 +744,7 @@ public:
/**
* Gets the <code>InitialTimeZoneRule</code> and the set of <code>TimeZoneRule</code>
* which represent time transitions for this time zone. On successful return,
- * the argument initial points to non-NULL <code>InitialTimeZoneRule</code> and
+ * the argument initial points to non-nullptr <code>InitialTimeZoneRule</code> and
* the array trsrules is filled with 0 or multiple <code>TimeZoneRule</code>
* instances up to the size specified by trscount. The results are referencing the
* rule instance held by this time zone instance. Therefore, after this time zone
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/smpdtfmt.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/smpdtfmt.h
index fb83f90da1e..4343bfbca53 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/smpdtfmt.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/smpdtfmt.h
@@ -55,6 +55,7 @@ class DateIntervalFormat;
namespace number {
class LocalizedNumberFormatter;
+class SimpleNumberFormatter;
}
/**
@@ -1316,7 +1317,7 @@ private:
/**
* initializes fCalendar from parameters. Returns fCalendar as a convenience.
- * @param adoptZone Zone to be adopted, or NULL for TimeZone::createDefault().
+ * @param adoptZone Zone to be adopted, or nullptr for TimeZone::createDefault().
* @param locale Locale of the calendar
* @param status Error code
* @return the newly constructed fCalendar
@@ -1349,7 +1350,7 @@ private:
* @param field the date field being parsed.
* @param stringArray the string array to parsed.
* @param stringArrayCount the size of the array.
- * @param monthPattern pointer to leap month pattern, or NULL if none.
+ * @param monthPattern pointer to leap month pattern, or nullptr if none.
* @param cal a Calendar set to the date and time to be formatted
* into a date/time string.
* @return the new start position if matching succeeded; a negative number
@@ -1432,14 +1433,14 @@ private:
* @param patLoc
* @param numericLeapMonthFormatter If non-null, used to parse numeric leap months.
* @param tzTimeType the type of parsed time zone - standard, daylight or unknown (output).
- * This parameter can be NULL if caller does not need the information.
+ * This parameter can be nullptr if caller does not need the information.
* @return the new start position if matching succeeded; a negative number
* indicating matching failure, otherwise.
*/
int32_t subParse(const UnicodeString& text, int32_t& start, char16_t ch, int32_t count,
UBool obeyCount, UBool allowNegative, UBool ambiguousYear[], int32_t& saveHebrewMonth, Calendar& cal,
int32_t patLoc, MessageFormat * numericLeapMonthFormatter, UTimeZoneFormatTimeType *tzTimeType,
- int32_t *dayPeriod=NULL) const;
+ int32_t *dayPeriod=nullptr) const;
void parseInt(const UnicodeString& text,
Formattable& number,
@@ -1520,14 +1521,9 @@ private:
int32_t skipUWhiteSpace(const UnicodeString& text, int32_t pos) const;
/**
- * Initialize LocalizedNumberFormatter instances used for speedup.
+ * Initialize SimpleNumberFormat instance
*/
- void initFastNumberFormatters(UErrorCode& status);
-
- /**
- * Delete the LocalizedNumberFormatter instances used for speedup.
- */
- void freeFastNumberFormatters();
+ void initSimpleNumberFormatter(UErrorCode &status);
/**
* Initialize NumberFormat instances used for numbering system overrides.
@@ -1599,12 +1595,12 @@ private:
* A pointer to an object containing the strings to use in formatting (e.g.,
* month and day names, AM and PM strings, time zone names, etc.)
*/
- DateFormatSymbols* fSymbols; // Owned
+ DateFormatSymbols* fSymbols = nullptr; // Owned
/**
* The time zone formatter
*/
- TimeZoneFormat* fTimeZoneFormat;
+ TimeZoneFormat* fTimeZoneFormat = nullptr;
/**
* If dates have ambiguous years, we map them into the century starting
@@ -1635,34 +1631,29 @@ private:
int32_t hash;
NSOverride *next;
void free();
- NSOverride() : snf(NULL), hash(0), next(NULL) {
+ NSOverride() : snf(nullptr), hash(0), next(nullptr) {
}
~NSOverride();
};
/**
- * The number format in use for each date field. NULL means fall back
+ * The number format in use for each date field. nullptr means fall back
* to fNumberFormat in DateFormat.
*/
- const SharedNumberFormat **fSharedNumberFormatters;
-
- enum NumberFormatterKey {
- SMPDTFMT_NF_1x10,
- SMPDTFMT_NF_2x10,
- SMPDTFMT_NF_3x10,
- SMPDTFMT_NF_4x10,
- SMPDTFMT_NF_2x2,
- SMPDTFMT_NF_COUNT
- };
+ const SharedNumberFormat **fSharedNumberFormatters = nullptr;
/**
- * Number formatters pre-allocated for fast performance on the most common integer lengths.
+ * Number formatter pre-allocated for fast performance
+ *
+ * This references the decimal symbols from fNumberFormatter if it is an instance
+ * of DecimalFormat (and is otherwise null). This should always be cleaned up before
+ * destroying fNumberFormatter.
*/
- const number::LocalizedNumberFormatter* fFastNumberFormatters[SMPDTFMT_NF_COUNT] = {};
+ const number::SimpleNumberFormatter* fSimpleNumberFormatter = nullptr;
UBool fHaveDefaultCentury;
- const BreakIterator* fCapitalizationBrkIter;
+ const BreakIterator* fCapitalizationBrkIter = nullptr;
};
inline UDate
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/sortkey.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/sortkey.h
index b1231f18b78..401b5abad0a 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/sortkey.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/sortkey.h
@@ -249,7 +249,7 @@ private:
/**
* Replaces the current bytes buffer with a new one of newCapacity
* and copies length bytes from the old buffer to the new one.
- * @return the new buffer, or NULL if the allocation failed
+ * @return the new buffer, or nullptr if the allocation failed
*/
uint8_t *reallocate(int32_t newCapacity, int32_t length);
/**
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/stsearch.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/stsearch.h
index b8a919f6147..b916aebf246 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/stsearch.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/stsearch.h
@@ -116,7 +116,7 @@ U_NAMESPACE_BEGIN
* UnicodeString pattern("fox");
*
* UErrorCode error = U_ZERO_ERROR;
- * StringSearch iter(pattern, target, Locale::getUS(), NULL, status);
+ * StringSearch iter(pattern, target, Locale::getUS(), nullptr, status);
* for (int pos = iter.first(error);
* pos != USEARCH_DONE;
* pos = iter.next(error))
@@ -132,7 +132,7 @@ U_NAMESPACE_BEGIN
* @since ICU 2.0
*/
-class U_I18N_API StringSearch U_FINAL : public SearchIterator
+class U_I18N_API StringSearch final : public SearchIterator
{
public:
@@ -153,8 +153,8 @@ public:
* indices in the target text are not boundaries as
* determined by the <tt>BreakIterator</tt> are
* ignored. If this behavior is not desired,
- * <tt>NULL</tt> can be passed in instead.
- * @param status for errors if any. If pattern or text is NULL, or if
+ * <tt>nullptr</tt> can be passed in instead.
+ * @param status for errors if any. If pattern or text is nullptr, or if
* either the length of pattern or text is 0 then an
* U_ILLEGAL_ARGUMENT_ERROR is returned.
* @stable ICU 2.0
@@ -180,7 +180,7 @@ public:
* indices in the target text are not boundaries as
* determined by the <tt>BreakIterator</tt> are
* ignored. If this behavior is not desired,
- * <tt>NULL</tt> can be passed in instead.
+ * <tt>nullptr</tt> can be passed in instead.
* @param status for errors if any. If either the length of pattern or
* text is 0 then an U_ILLEGAL_ARGUMENT_ERROR is returned.
* @stable ICU 2.0
@@ -211,7 +211,7 @@ public:
* indices in the target text are not boundaries as
* determined by the <tt>BreakIterator</tt> are
* ignored. If this behavior is not desired,
- * <tt>NULL</tt> can be passed in instead.
+ * <tt>nullptr</tt> can be passed in instead.
* @param status for errors if any. If either the length of pattern or
* text is 0 then an U_ILLEGAL_ARGUMENT_ERROR is returned.
* @stable ICU 2.0
@@ -241,7 +241,7 @@ public:
* indices in the target text are not boundaries as
* determined by the <tt>BreakIterator</tt> are
* ignored. If this behavior is not desired,
- * <tt>NULL</tt> can be passed in instead.
+ * <tt>nullptr</tt> can be passed in instead.
* @param status for errors if any. If either the length of pattern or
* text is 0 then an U_ILLEGAL_ARGUMENT_ERROR is returned.
* @stable ICU 2.0
@@ -269,7 +269,7 @@ public:
/**
* Clone this object.
* Clones can be used concurrently in multiple threads.
- * If an error occurs, then NULL is returned.
+ * If an error occurs, then nullptr is returned.
* The caller must delete the clone.
*
* @return a clone of this object
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/tblcoll.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/tblcoll.h
index 2de1af85392..43cf35d1a81 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/tblcoll.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/tblcoll.h
@@ -112,7 +112,7 @@ class UVector64;
* Note, RuleBasedCollator is not to be subclassed.
* @see Collator
*/
-class U_I18N_API RuleBasedCollator U_FINAL : public Collator {
+class U_I18N_API RuleBasedCollator final : public Collator {
public:
/**
* RuleBasedCollator constructor. This takes the table rules and builds a
@@ -193,7 +193,7 @@ public:
* @param length size of the image. If negative, the API will try to
* figure out the length of the image
* @param base Base collator, for lookup of untailored characters.
- * Must be the root collator, must not be NULL.
+ * Must be the root collator, must not be nullptr.
* The base is required to be present through the lifetime of the collator.
* @param status for catching errors
* @return newly created collator
@@ -626,7 +626,7 @@ public:
* For more details, see the ICU User Guide.
*
* @param source string to be processed.
- * @param result buffer to store result in. If NULL, number of bytes needed
+ * @param result buffer to store result in. If nullptr, number of bytes needed
* will be returned.
* @param resultLength length of the result buffer. If if not enough the
* buffer will be filled to capacity.
@@ -645,7 +645,7 @@ public:
* @param source string to be processed.
* @param sourceLength length of string to be processed. If -1, the string
* is 0 terminated and length will be decided by the function.
- * @param result buffer to store result in. If NULL, number of bytes needed
+ * @param result buffer to store result in. If nullptr, number of bytes needed
* will be returned.
* @param resultLength length of the result buffer. If if not enough the
* buffer will be filled to capacity.
@@ -658,7 +658,7 @@ public:
/**
* Retrieves the reordering codes for this collator.
* @param dest The array to fill with the script ordering.
- * @param destCapacity The length of dest. If it is 0, then dest may be NULL and the function
+ * @param destCapacity The length of dest. If it is 0, then dest may be nullptr and the function
* will only return the length of the result without writing any codes (pre-flighting).
* @param status A reference to an error code value, which must not indicate
* a failure before the function call.
@@ -674,7 +674,7 @@ public:
/**
* Sets the ordering of scripts for this collator.
- * @param reorderCodes An array of script codes in the new order. This can be NULL if the
+ * @param reorderCodes An array of script codes in the new order. This can be nullptr if the
* length is also set to 0. An empty array will clear any reordering codes on the collator.
* @param reorderCodesLength The length of reorderCodes.
* @param status error code
@@ -708,7 +708,7 @@ public:
* This is internal, and intended to be used with delegate converters.
*
* @param locale a locale that will appear as a collators locale in the resulting
- * short string definition. If NULL, the locale will be harvested
+ * short string definition. If nullptr, the locale will be harvested
* from the collator.
* @param buffer space to hold the resulting string
* @param capacity capacity of the buffer
@@ -754,8 +754,8 @@ public:
* characters and strings that map to multiple collation elements (expansions).
* If addPrefixes is true, then contractions that are expressed as
* prefix/pre-context rules are included.
- * @param contractions if not NULL, the set to hold the contractions
- * @param expansions if not NULL, the set to hold the expansions
+ * @param contractions if not nullptr, the set to hold the contractions
+ * @param expansions if not nullptr, the set to hold the expansions
* @param addPrefixes include prefix contextual mappings
* @param errorCode in/out ICU error code
* @internal
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/timezone.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/timezone.h
index 382ad97d5bf..e512ef7f92c 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/timezone.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/timezone.h
@@ -171,7 +171,7 @@ public:
* or a custom ID such as "GMT-8:00".
* @return the specified <code>TimeZone</code>, or a mutable clone of getUnknown()
* if the given ID cannot be understood or if the given ID is "Etc/Unknown".
- * The return result is guaranteed to be non-NULL.
+ * The return result is guaranteed to be non-nullptr.
* If you require that the specific zone asked for be returned,
* compare the result with getUnknown() or check the ID of the return result.
* @stable ICU 2.0
@@ -183,11 +183,11 @@ public:
* filter conditions.
* @param zoneType The system time zone type.
* @param region The ISO 3166 two-letter country code or UN M.49
- * three-digit area code. When NULL, no filtering
+ * three-digit area code. When nullptr, no filtering
* done by region.
* @param rawOffset An offset from GMT in milliseconds, ignoring
* the effect of daylight savings time, if any.
- * When NULL, no filtering done by zone offset.
+ * When nullptr, no filtering done by zone offset.
* @param ec Output param to filled in with a success or
* an error.
* @return an enumeration object, owned by the caller.
@@ -267,7 +267,7 @@ public:
* given region. Some zones are affiliated with no region
* (e.g., "UTC"); these may also be retrieved, as a group.
*
- * @param region The ISO 3166 two-letter country code, or NULL to
+ * @param region The ISO 3166 two-letter country code, or nullptr to
* retrieve zones not affiliated with any region.
* @return an enumeration object, owned by the caller
* @deprecated ICU 70 Use createEnumerationForRegion(const char*,UErrorCode&) instead.
@@ -280,7 +280,7 @@ public:
* given region. Some zones are affiliated with no region
* (e.g., "UTC"); these may also be retrieved, as a group.
*
- * @param region The ISO 3166 two-letter country code, or NULL to
+ * @param region The ISO 3166 two-letter country code, or nullptr to
* retrieve zones not affiliated with any region.
* @param status Receives the status.
* @return an enumeration object, owned by the caller
@@ -381,7 +381,7 @@ public:
/**
* Sets the default time zone (i.e., what's returned by createDefault()) to be the
- * specified time zone. If NULL is specified for the time zone, the default time
+ * specified time zone. If nullptr is specified for the time zone, the default time
* zone is set to the default host time zone. This call adopts the TimeZone object
* passed in; the client is no longer responsible for deleting it.
*
@@ -444,6 +444,37 @@ public:
static UnicodeString& U_EXPORT2 getCanonicalID(const UnicodeString& id,
UnicodeString& canonicalID, UBool& isSystemID, UErrorCode& status);
+
+#ifndef U_HIDE_DRAFT_API
+ /**
+ * Returns the preferred time zone ID in the IANA time zone database for the given time zone ID.
+ * There are two types of preferred IDs. The first type is the one defined in zone.tab file,
+ * such as "America/Los_Angeles". The second types is the one defined for zones not associated
+ * with a specific region, but not defined with "Link" syntax such as "Etc/GMT+10".
+ *
+ * <p>Note: For most of valid time zone IDs, this method returns an ID same as getCanonicalID().
+ * getCanonicalID() is based on canonical time zone IDs defined in Unicode CLDR.
+ * These canonical time zone IDs in CLDR were based on very old version of the time zone database.
+ * In the IANA time zone database, some IDs were updated since then. This API returns a newer
+ * time zone ID. For example, CLDR defines "Asia/Calcutta" as the canonical time zone ID. This
+ * method returns "Asia/Kolkata" instead.
+ * <p> "Etc/Unknown" is a special time zone ID defined by CLDR. There are no corresponding zones
+ * in the IANA time zone database. Therefore, this API returns U_ILLEGAL_ARGUMENT_ERROR when the
+ * input ID is "Etc/Unknown".
+ *
+ * @param id The input time zone ID.
+ * @param ianaID Receives the preferred time zone ID in the IANA time zone database. When
+ * the given time zone ID is not a known time zone ID, this method sets an
+ * invalid (bogus) string.
+ * @param status Receives the status. When the given time zone ID is not a known time zone
+ * ID, U_ILLEGAL_ARGUMENT_ERROR is set.
+ * @return A reference to the result.
+ * @draft ICU 74
+ */
+ static UnicodeString& U_EXPORT2 getIanaID(const UnicodeString&id, UnicodeString& ianaID,
+ UErrorCode& status);
+#endif // U_HIDE_DRAFT_API
+
/**
* Converts a system time zone ID to an equivalent Windows time zone ID. For example,
* Windows time zone ID "Pacific Standard Time" is returned for input "America/Los_Angeles".
@@ -486,7 +517,7 @@ public:
* Updating the Time Zone Data</a>.
*
* @param winid A Windows time zone ID.
- * @param region A null-terminated region code, or <code>NULL</code> if no regional preference.
+ * @param region A NUL-terminated region code, or <code>nullptr</code> if no regional preference.
* @param id Receives a system time zone ID. When the input Windows time zone ID is unknown
* or unmappable to a system time zone ID, then an empty string is set on return.
* @param status Receives the status.
@@ -912,7 +943,7 @@ protected:
* Utility function. For internally loading rule data.
* @param top Top resource bundle for tz data
* @param ruleid ID of rule to load
- * @param oldbundle Old bundle to reuse or NULL
+ * @param oldbundle Old bundle to reuse or nullptr
* @param status Status parameter
* @return either a new bundle or *oldbundle
* @internal
@@ -932,7 +963,7 @@ private:
* for ICU internal implementation and useful for building hashtable using a time zone
* ID as a key.
* @param id zone id string
- * @return the pointer of the ID resource, or NULL.
+ * @return the pointer of the ID resource, or nullptr.
*/
static const char16_t* findID(const UnicodeString& id);
@@ -940,15 +971,15 @@ private:
* Resolve a link in Olson tzdata. When the given id is known and it's not a link,
* the id itself is returned. When the given id is known and it is a link, then
* dereferenced zone id is returned. When the given id is unknown, then it returns
- * NULL.
+ * nullptr.
* @param id zone id string
- * @return the dereferenced zone or NULL
+ * @return the dereferenced zone or nullptr
*/
static const char16_t* dereferOlsonLink(const UnicodeString& id);
/**
* Returns the region code associated with the given zone,
- * or NULL if the zone is not known.
+ * or nullptr if the zone is not known.
* @param id zone id string
* @return the region associated with the given zone
*/
@@ -958,7 +989,7 @@ private:
#ifndef U_HIDE_INTERNAL_API
/**
* Returns the region code associated with the given zone,
- * or NULL if the zone is not known.
+ * or nullptr if the zone is not known.
* @param id zone id string
* @param status Status parameter
* @return the region associated with the given zone
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/translit.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/translit.h
index 56eb6448ca4..9ae32967fc4 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/translit.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/translit.h
@@ -590,7 +590,7 @@ protected:
* variant.
* @param id a basic ID of the form S-T or S-T/V.
* @param canon canonical ID to assign to the object, or
- * NULL to leave the ID unchanged
+ * nullptr to leave the ID unchanged
* @return a newly created Transliterator or null if the ID is
* invalid.
* @stable ICU 2.4
@@ -1002,20 +1002,20 @@ public:
UnicodeString& result);
/**
- * Returns the filter used by this transliterator, or <tt>NULL</tt>
+ * Returns the filter used by this transliterator, or <tt>nullptr</tt>
* if this transliterator uses no filter.
- * @return the filter used by this transliterator, or <tt>NULL</tt>
+ * @return the filter used by this transliterator, or <tt>nullptr</tt>
* if this transliterator uses no filter.
* @stable ICU 2.0
*/
const UnicodeFilter* getFilter(void) const;
/**
- * Returns the filter used by this transliterator, or <tt>NULL</tt> if this
+ * Returns the filter used by this transliterator, or <tt>nullptr</tt> if this
* transliterator uses no filter. The caller must eventually delete the
* result. After this call, this transliterator's filter is set to
- * <tt>NULL</tt>.
- * @return the filter used by this transliterator, or <tt>NULL</tt> if this
+ * <tt>nullptr</tt>.
+ * @return the filter used by this transliterator, or <tt>nullptr</tt> if this
* transliterator uses no filter.
* @stable ICU 2.4
*/
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/tzfmt.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/tzfmt.h
index 6db8477026a..4bd80e0e343 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/tzfmt.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/tzfmt.h
@@ -530,14 +530,14 @@ public:
* @param date The date.
* @param name Receives the display name.
* @param timeType the output argument for receiving the time type (standard/daylight/unknown)
- * used for the display name, or NULL if the information is not necessary.
+ * used for the display name, or nullptr if the information is not necessary.
* @return A reference to the result
* @see #UTimeZoneFormatStyle
* @see #UTimeZoneFormatTimeType
* @stable ICU 50
*/
virtual UnicodeString& format(UTimeZoneFormatStyle style, const TimeZone& tz, UDate date,
- UnicodeString& name, UTimeZoneFormatTimeType* timeType = NULL) const;
+ UnicodeString& name, UTimeZoneFormatTimeType* timeType = nullptr) const;
/**
* Returns offset from GMT(UTC) in milliseconds for the given ISO 8601
@@ -592,7 +592,7 @@ public:
* @param pos The position.
* @param parseOptions The parse options represented by bitwise flags of UTimeZoneFormatParseOption.
* @param timeType The output argument for receiving the time type (standard/daylight/unknown),
- * or NULL if the information is not necessary.
+ * or nullptr if the information is not necessary.
* @return A <code>TimeZone</code>, or null if the input could not be parsed.
* @see UTimeZoneFormatStyle
* @see UTimeZoneFormatParseOption
@@ -600,7 +600,7 @@ public:
* @stable ICU 50
*/
virtual TimeZone* parse(UTimeZoneFormatStyle style, const UnicodeString& text, ParsePosition& pos,
- int32_t parseOptions, UTimeZoneFormatTimeType* timeType = NULL) const;
+ int32_t parseOptions, UTimeZoneFormatTimeType* timeType = nullptr) const;
/**
* Returns a <code>TimeZone</code> by parsing the time zone string according to
@@ -610,7 +610,7 @@ public:
* @param style The format style
* @param pos The position.
* @param timeType The output argument for receiving the time type (standard/daylight/unknown),
- * or NULL if the information is not necessary.
+ * or nullptr if the information is not necessary.
* @return A <code>TimeZone</code>, or null if the input could not be parsed.
* @see UTimeZoneFormatStyle
* @see UTimeZoneFormatParseOption
@@ -618,7 +618,7 @@ public:
* @stable ICU 50
*/
TimeZone* parse(UTimeZoneFormatStyle style, const UnicodeString& text, ParsePosition& pos,
- UTimeZoneFormatTimeType* timeType = NULL) const;
+ UTimeZoneFormatTimeType* timeType = nullptr) const;
/* ----------------------------------------------
* Format APIs
@@ -646,7 +646,7 @@ public:
* @param parse_pos The position to start parsing at. Upon return this param is set to the position after the
* last character successfully parsed. If the source is not parsed successfully, this param
* will remain unchanged.
- * @return A newly created Formattable* object, or NULL on failure. The caller owns this and should
+ * @return A newly created Formattable* object, or nullptr on failure. The caller owns this and should
* delete it when done.
* @stable ICU 50
*/
@@ -783,7 +783,7 @@ private:
* @param required the required set of fields, such as FIELDS_HM
* @param status U_ILLEGAL_ARGUMENT is set when the specified pattern does not contain
* pattern letters for the required fields.
- * @return A list of GMTOffsetField objects, or NULL on error.
+ * @return A list of GMTOffsetField objects, or nullptr on error.
*/
static UVector* parseOffsetPattern(const UnicodeString& pattern, OffsetFields required, UErrorCode& status);
@@ -856,7 +856,7 @@ private:
* time zone string.
*/
int32_t parseOffsetISO8601(const UnicodeString& text, ParsePosition& pos, UBool extendedOnly,
- UBool* hasDigitOffset = NULL) const;
+ UBool* hasDigitOffset = nullptr) const;
/**
* Appends localized digits to the buffer.
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/tznames.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/tznames.h
index b32e9562d5e..2b494734b73 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/tznames.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/tznames.h
@@ -402,7 +402,7 @@ public:
* @param types The set of name types represented by bitwise flags of UTimeZoneNameType enums,
* or UTZNM_UNKNOWN for all name types.
* @param status Receives the status.
- * @return A collection of matches (owned by the caller), or NULL if no matches are found.
+ * @return A collection of matches (owned by the caller), or nullptr if no matches are found.
* @see UTimeZoneNameType
* @see MatchInfoCollection
* @internal
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/ucal.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/ucal.h
index 3a4fb69fc3e..f351b6c9dbb 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/ucal.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/ucal.h
@@ -442,6 +442,33 @@ enum UCalendarDateFields {
*/
UCAL_IS_LEAP_MONTH,
+#ifndef U_HIDE_DRAFT_API
+ /**
+ * Field number indicating the month. This is a calendar-specific value.
+ * Differ from UCAL_MONTH, this value is continuous and unique within a
+ * year and range from 0 to 11 or 0 to 12 depending on how many months in a
+ * year, the calendar system has leap month or not, and in leap year or not.
+ * It is the ordinal position of that month in the corresponding year of
+ * the calendar. For Chinese, Dangi, and Hebrew calendar, the range is
+ * 0 to 11 in non-leap years and 0 to 12 in leap years. For Coptic and Ethiopian
+ * calendar, the range is always 0 to 12. For other calendars supported by
+ * ICU now, the range is 0 to 11. When the number of months in a year of the
+ * identified calendar is variable, a different UCAL_ORDINAL_MONTH value can
+ * be used for dates that are part of the same named month in different years.
+ * For example, in the Hebrew calendar, "1 Nisan 5781" is associated with
+ * UCAL_ORDINAL_MONTH value 6 while "1 Nisan 5782" is associated with
+ * UCAL_ORDINAL_MONTH value 7 because 5782 is a leap year and Nisan follows
+ * the insertion of Adar I. In Chinese calendar, "Year 4664 Month 6 Day 2"
+ * is associated with UCAL_ORDINAL_MONTH value 5 while "Year 4665 Month 6 Day 2"
+ * is associated with UCAL_ORDINAL_MONTH value 6 because 4665 is a leap year
+ * and there is an extra "Leap Month 5" which associated with UCAL_ORDINAL_MONTH
+ * value 5 before "Month 6" of year 4664.
+ *
+ * @draft ICU 73
+ */
+ UCAL_ORDINAL_MONTH,
+#endif // U_HIDE_DRAFT_API
+
/* Do not conditionalize the following with #ifndef U_HIDE_DEPRECATED_API,
* it is needed for layout of Calendar, DateFormat, and other objects */
#ifndef U_FORCE_HIDE_DEPRECATED_API
@@ -449,7 +476,13 @@ enum UCalendarDateFields {
* One more than the highest normal UCalendarDateFields value.
* @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
*/
- UCAL_FIELD_COUNT,
+#ifdef U_HIDE_DRAFT_API
+ // Must include all fields that will be in structs
+ UCAL_FIELD_COUNT = UCAL_IS_LEAP_MONTH + 2,
+#else // U_HIDE_DRAFT_API (for UCAL_ORDINAL_MONTH)
+ UCAL_FIELD_COUNT = UCAL_ORDINAL_MONTH + 1,
+#endif // U_HIDE_DRAFT_API (for UCAL_ORDINAL_MONTH)
+
#endif // U_FORCE_HIDE_DEPRECATED_API
/**
@@ -1360,6 +1393,38 @@ ucal_getTZDataVersion(UErrorCode* status);
U_CAPI int32_t U_EXPORT2
ucal_getCanonicalTimeZoneID(const UChar* id, int32_t len,
UChar* result, int32_t resultCapacity, UBool *isSystemID, UErrorCode* status);
+
+#ifndef U_HIDE_DRAFT_API
+/**
+ * Returns the preferred time zone ID in the IANA time zone database for the given time zone ID.
+ * There are two types of preferred IDs. The first type is the one defined in zone.tab file,
+ * such as "America/Los_Angeles". The second types is the one defined for zones not associated
+ * with a specific region, but not defined with "Link" syntax such as "Etc/GMT+10".
+ *
+ * <p>Note: For most of valid time zone IDs, this method returns an ID same as ucal_getCanonicalTimeZoneID().
+ * ucal_getCanonicalTimeZoneID() is based on canonical time zone IDs defined in Unicode CLDR.
+ * These canonical time zone IDs in CLDR were based on very old version of the time zone database.
+ * In the IANA time zone database, some IDs were updated since then. This API returns a newer
+ * time zone ID. For example, CLDR defines "Asia/Calcutta" as the canonical time zone ID. This
+ * method returns "Asia/Kolkata" instead.
+ * <p> "Etc/Unknown" is a special time zone ID defined by CLDR. There are no corresponding zones
+ * in the IANA time zone database. Therefore, this API returns U_ILLEGAL_ARGUMENT_ERROR when the
+ * input ID is "Etc/Unknown".
+ *
+ * @param id The input time zone ID.
+ * @param len The length of the input time zone ID.
+ * @param result The buffer receives the preferred time zone ID in the IANA time zone database.
+ * @param resultCapacity The capacity of the result buffer.
+ * @param status Receives the status. When the given time zone ID is not a known system time zone
+ * ID, U_ILLEGAL_ARGUMENT_ERROR is set.
+ * @return The result string length, not including the terminating null.
+ * @draft ICU 74
+ */
+U_CAPI int32_t U_EXPORT2
+ucal_getIanaTimeZoneID(const UChar* id, int32_t len,
+ UChar* result, int32_t resultCapacity, UErrorCode* status);
+#endif // U_HIDE_DRAFT_API
+
/**
* Get the resource keyword value string designating the calendar type for the UCalendar.
* @param cal The UCalendar to query.
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/ucol.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/ucol.h
index 24963312216..e4ec2f74185 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/ucol.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/ucol.h
@@ -251,42 +251,52 @@ typedef enum {
*/
UCOL_FRENCH_COLLATION,
/** Attribute for handling variable elements.
- * Acceptable values are UCOL_NON_IGNORABLE (default)
- * which treats all the codepoints with non-ignorable
+ * Acceptable values are UCOL_NON_IGNORABLE
+ * which treats all the codepoints with non-ignorable
* primary weights in the same way,
- * and UCOL_SHIFTED which causes codepoints with primary
+ * and UCOL_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.
+ * to be ignored on primary level and moved to the quaternary
+ * level. The default setting in a Collator object depends on the
+ * locale data loaded from the resources. For most locales, the
+ * default is UCOL_NON_IGNORABLE, but for others, such as "th",
+ * the default could be UCOL_SHIFTED.
* @stable ICU 2.0
*/
- UCOL_ALTERNATE_HANDLING,
+ UCOL_ALTERNATE_HANDLING,
/** Controls the ordering of upper and lower case letters.
- * Acceptable values are UCOL_OFF (default), which orders
+ * Acceptable values are UCOL_OFF, which orders
* upper and lower case letters in accordance to their tertiary
- * weights, UCOL_UPPER_FIRST which forces upper case letters to
- * sort before lower case letters, and UCOL_LOWER_FIRST which does
- * the opposite.
+ * weights, UCOL_UPPER_FIRST which forces upper case letters to
+ * sort before lower case letters, and UCOL_LOWER_FIRST which does
+ * the opposite. The default setting in a Collator object depends on the
+ * locale data loaded from the resources. For most locales, the
+ * default is UCOL_OFF, but for others, such as "da" or "mt",
+ * the default could be UCOL_UPPER.
* @stable ICU 2.0
*/
- UCOL_CASE_FIRST,
+ UCOL_CASE_FIRST,
/** Controls whether an extra case level (positioned before the third
- * level) is generated or not. Acceptable values are UCOL_OFF (default),
+ * level) is generated or not. Acceptable values are UCOL_OFF,
* when case level is not generated, and UCOL_ON which causes the case
* level to be generated. Contents of the case level are affected by
- * the value of UCOL_CASE_FIRST attribute. A simple way to ignore
+ * the value of UCOL_CASE_FIRST attribute. A simple way to ignore
* accent differences in a string is to set the strength to UCOL_PRIMARY
- * and enable case level.
+ * and enable case level. The default setting in a Collator object depends
+ * on the locale data loaded from the resources.
* @stable ICU 2.0
*/
UCOL_CASE_LEVEL,
/** Controls whether the normalization check and necessary normalizations
- * are performed. When set to UCOL_OFF (default) no normalization check
- * is performed. The correctness of the result is guaranteed only if the
+ * are performed. When set to UCOL_OFF 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 UCOL_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.
+ * incremental NFD normalization is performed. The default setting in a
+ * Collator object depends on the locale data loaded from the resources.
+ * For many locales, the default is UCOL_OFF, but for others, such as "hi"
+ * "vi', or "bn", * the default could be UCOL_ON.
* @stable ICU 2.0
*/
UCOL_NORMALIZATION_MODE,
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/udatpg.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/udatpg.h
index 684a905e426..1d3060350ec 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/udatpg.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/udatpg.h
@@ -526,7 +526,6 @@ udatpg_getDateTimeFormat(const UDateTimePatternGenerator *dtpg,
int32_t *pLength);
#if !UCONFIG_NO_FORMATTING
-#ifndef U_HIDE_DRAFT_API
/**
* dateTimeFormats are message patterns used to compose combinations of date
* and time patterns. There are four length styles, corresponding to the
@@ -552,7 +551,7 @@ udatpg_getDateTimeFormat(const UDateTimePatternGenerator *dtpg,
* a pointer to the UErrorCode (in/out parameter); if no failure
* status is already set, it will be set according to result of the
* function (e.g. U_ILLEGAL_ARGUMENT_ERROR for style out of range).
- * @draft ICU 71
+ * @stable ICU 71
*/
U_CAPI void U_EXPORT2
udatpg_setDateTimeFormatForStyle(UDateTimePatternGenerator *udtpg,
@@ -580,13 +579,12 @@ udatpg_setDateTimeFormatForStyle(UDateTimePatternGenerator *udtpg,
* may no longer be valid if udatpg_setDateTimeFormat is called, or
* udatpg_setDateTimeFormatForStyle for the same style is called, or the
* UDateTimePatternGenerator object is closed.
- * @draft ICU 71
+ * @stable ICU 71
*/
U_CAPI const UChar* U_EXPORT2
udatpg_getDateTimeFormatForStyle(const UDateTimePatternGenerator *udtpg,
UDateFormatStyle style, int32_t *pLength,
UErrorCode *pErrorCode);
-#endif /* U_HIDE_DRAFT_API */
#endif /* #if !UCONFIG_NO_FORMATTING */
/**
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/udisplayoptions.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/udisplayoptions.h
index 1ecdf1d8e94..490bc01cf39 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/udisplayoptions.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/udisplayoptions.h
@@ -18,47 +18,45 @@
#include "unicode/uversion.h"
-#ifndef U_HIDE_DRAFT_API
-
/**
* Represents all the grammatical cases that are supported by CLDR.
*
- * @draft ICU 72
+ * @stable ICU 72
*/
typedef enum UDisplayOptionsGrammaticalCase {
/**
* A possible setting for GrammaticalCase.
* The grammatical case context to be used is unknown (this is the default value).
- * @draft ICU 72
+ * @stable ICU 72
*/
UDISPOPT_GRAMMATICAL_CASE_UNDEFINED = 0,
- /** @draft ICU 72 */
+ /** @stable ICU 72 */
UDISPOPT_GRAMMATICAL_CASE_ABLATIVE = 1,
- /** @draft ICU 72 */
+ /** @stable ICU 72 */
UDISPOPT_GRAMMATICAL_CASE_ACCUSATIVE = 2,
- /** @draft ICU 72 */
+ /** @stable ICU 72 */
UDISPOPT_GRAMMATICAL_CASE_COMITATIVE = 3,
- /** @draft ICU 72 */
+ /** @stable ICU 72 */
UDISPOPT_GRAMMATICAL_CASE_DATIVE = 4,
- /** @draft ICU 72 */
+ /** @stable ICU 72 */
UDISPOPT_GRAMMATICAL_CASE_ERGATIVE = 5,
- /** @draft ICU 72 */
+ /** @stable ICU 72 */
UDISPOPT_GRAMMATICAL_CASE_GENITIVE = 6,
- /** @draft ICU 72 */
+ /** @stable ICU 72 */
UDISPOPT_GRAMMATICAL_CASE_INSTRUMENTAL = 7,
- /** @draft ICU 72 */
+ /** @stable ICU 72 */
UDISPOPT_GRAMMATICAL_CASE_LOCATIVE = 8,
- /** @draft ICU 72 */
+ /** @stable ICU 72 */
UDISPOPT_GRAMMATICAL_CASE_LOCATIVE_COPULATIVE = 9,
- /** @draft ICU 72 */
+ /** @stable ICU 72 */
UDISPOPT_GRAMMATICAL_CASE_NOMINATIVE = 10,
- /** @draft ICU 72 */
+ /** @stable ICU 72 */
UDISPOPT_GRAMMATICAL_CASE_OBLIQUE = 11,
- /** @draft ICU 72 */
+ /** @stable ICU 72 */
UDISPOPT_GRAMMATICAL_CASE_PREPOSITIONAL = 12,
- /** @draft ICU 72 */
+ /** @stable ICU 72 */
UDISPOPT_GRAMMATICAL_CASE_SOCIATIVE = 13,
- /** @draft ICU 72 */
+ /** @stable ICU 72 */
UDISPOPT_GRAMMATICAL_CASE_VOCATIVE = 14,
} UDisplayOptionsGrammaticalCase;
@@ -66,7 +64,7 @@ typedef enum UDisplayOptionsGrammaticalCase {
* @param grammaticalCase The grammatical case.
* @return the lowercase CLDR keyword string for the grammatical case.
*
- * @draft ICU 72
+ * @stable ICU 72
*/
U_CAPI const char * U_EXPORT2
udispopt_getGrammaticalCaseIdentifier(UDisplayOptionsGrammaticalCase grammaticalCase);
@@ -75,7 +73,7 @@ udispopt_getGrammaticalCaseIdentifier(UDisplayOptionsGrammaticalCase grammatical
* @param identifier in lower case such as "dative" or "nominative"
* @return the plural category corresponding to the identifier, or `UDISPOPT_GRAMMATICAL_CASE_UNDEFINED`
*
- * @draft ICU 72
+ * @stable ICU 72
*/
U_CAPI UDisplayOptionsGrammaticalCase U_EXPORT2
udispopt_fromGrammaticalCaseIdentifier(const char *identifier);
@@ -84,7 +82,7 @@ udispopt_fromGrammaticalCaseIdentifier(const char *identifier);
* Standard CLDR plural form/category constants.
* See https://www.unicode.org/reports/tr35/tr35-numbers.html#Language_Plural_Rules
*
- * @draft ICU 72
+ * @stable ICU 72
*/
typedef enum UDisplayOptionsPluralCategory {
@@ -92,20 +90,20 @@ typedef enum UDisplayOptionsPluralCategory {
* A possible setting for PluralCategory.
* The plural category case context to be used is unknown (this is the default value).
*
- * @draft ICU 72
+ * @stable ICU 72
*/
UDISPOPT_PLURAL_CATEGORY_UNDEFINED = 0,
- /** @draft ICU 72 */
+ /** @stable ICU 72 */
UDISPOPT_PLURAL_CATEGORY_ZERO = 1,
- /** @draft ICU 72 */
+ /** @stable ICU 72 */
UDISPOPT_PLURAL_CATEGORY_ONE = 2,
- /** @draft ICU 72 */
+ /** @stable ICU 72 */
UDISPOPT_PLURAL_CATEGORY_TWO = 3,
- /** @draft ICU 72 */
+ /** @stable ICU 72 */
UDISPOPT_PLURAL_CATEGORY_FEW = 4,
- /** @draft ICU 72 */
+ /** @stable ICU 72 */
UDISPOPT_PLURAL_CATEGORY_MANY = 5,
- /** @draft ICU 72 */
+ /** @stable ICU 72 */
UDISPOPT_PLURAL_CATEGORY_OTHER = 6,
} UDisplayOptionsPluralCategory;
@@ -113,7 +111,7 @@ typedef enum UDisplayOptionsPluralCategory {
* @param pluralCategory The plural category.
* @return the lowercase CLDR identifier string for the plural category.
*
- * @draft ICU 72
+ * @stable ICU 72
*/
U_CAPI const char * U_EXPORT2
udispopt_getPluralCategoryIdentifier(UDisplayOptionsPluralCategory pluralCategory);
@@ -123,7 +121,7 @@ udispopt_getPluralCategoryIdentifier(UDisplayOptionsPluralCategory pluralCategor
* @return the plural category corresponding to the identifier (plural keyword),
* or `UDISPOPT_PLURAL_CATEGORY_UNDEFINED`
*
- * @draft ICU 72
+ * @stable ICU 72
*/
U_CAPI UDisplayOptionsPluralCategory U_EXPORT2
udispopt_fromPluralCategoryIdentifier(const char *identifier);
@@ -131,31 +129,31 @@ udispopt_fromPluralCategoryIdentifier(const char *identifier);
/**
* Represents all the grammatical noun classes that are supported by CLDR.
*
- * @draft ICU 72.
+ * @stable ICU 72.
*/
typedef enum UDisplayOptionsNounClass {
/**
* A possible setting for NounClass.
* The noun class case context to be used is unknown (this is the default value).
*
- * @draft ICU 72
+ * @stable ICU 72
*/
UDISPOPT_NOUN_CLASS_UNDEFINED = 0,
- /** ICU 72 */
+ /** @stable ICU 72 */
UDISPOPT_NOUN_CLASS_OTHER = 1,
- /** ICU 72 */
+ /** @stable ICU 72 */
UDISPOPT_NOUN_CLASS_NEUTER = 2,
- /** ICU 72 */
+ /** @stable ICU 72 */
UDISPOPT_NOUN_CLASS_FEMININE = 3,
- /** ICU 72 */
+ /** @stable ICU 72 */
UDISPOPT_NOUN_CLASS_MASCULINE = 4,
- /** ICU 72 */
+ /** @stable ICU 72 */
UDISPOPT_NOUN_CLASS_ANIMATE = 5,
- /** ICU 72 */
+ /** @stable ICU 72 */
UDISPOPT_NOUN_CLASS_INANIMATE = 6,
- /** ICU 72 */
+ /** @stable ICU 72 */
UDISPOPT_NOUN_CLASS_PERSONAL = 7,
- /** ICU 72 */
+ /** @stable ICU 72 */
UDISPOPT_NOUN_CLASS_COMMON = 8,
} UDisplayOptionsNounClass;
@@ -163,7 +161,7 @@ typedef enum UDisplayOptionsNounClass {
* @param nounClass The noun class.
* @return the lowercase CLDR keyword string for the noun class.
*
- * @draft ICU 72
+ * @stable ICU 72
*/
U_CAPI const char * U_EXPORT2
udispopt_getNounClassIdentifier(UDisplayOptionsNounClass nounClass);
@@ -172,7 +170,7 @@ udispopt_getNounClassIdentifier(UDisplayOptionsNounClass nounClass);
* @param identifier in lower case such as "feminine" or "masculine"
* @return the plural category corresponding to the identifier, or `UDISPOPT_NOUN_CLASS_UNDEFINED`
*
- * @draft ICU 72
+ * @stable ICU 72
*/
U_CAPI UDisplayOptionsNounClass U_EXPORT2
udispopt_fromNounClassIdentifier(const char *identifier);
@@ -180,14 +178,14 @@ udispopt_fromNounClassIdentifier(const char *identifier);
/**
* Represents all the capitalization options.
*
- * @draft ICU 72
+ * @stable ICU 72
*/
typedef enum UDisplayOptionsCapitalization {
/**
* A possible setting for Capitalization.
* The capitalization context to be used is unknown (this is the default value).
*
- * @draft ICU 72
+ * @stable ICU 72
*/
UDISPOPT_CAPITALIZATION_UNDEFINED = 0,
@@ -195,7 +193,7 @@ typedef enum UDisplayOptionsCapitalization {
* The capitalization context if a date, date symbol or display name is to be
* formatted with capitalization appropriate for the beginning of a sentence.
*
- * @draft ICU 72
+ * @stable ICU 72
*/
UDISPOPT_CAPITALIZATION_BEGINNING_OF_SENTENCE = 1,
@@ -203,7 +201,7 @@ typedef enum UDisplayOptionsCapitalization {
* The capitalization context if a date, date symbol or display name is to be
* formatted with capitalization appropriate for the middle of a sentence.
*
- * @draft ICU 72
+ * @stable ICU 72
*/
UDISPOPT_CAPITALIZATION_MIDDLE_OF_SENTENCE = 2,
@@ -212,7 +210,7 @@ typedef enum UDisplayOptionsCapitalization {
* formatted with capitalization appropriate for stand-alone usage such as an
* isolated name on a calendar page.
*
- * @draft ICU 72
+ * @stable ICU 72
*/
UDISPOPT_CAPITALIZATION_STANDALONE = 3,
@@ -220,7 +218,7 @@ typedef enum UDisplayOptionsCapitalization {
* The capitalization context if a date, date symbol or display name is to be
* formatted with capitalization appropriate for a user-interface list or menu item.
*
- * @draft ICU 72
+ * @stable ICU 72
*/
UDISPOPT_CAPITALIZATION_UI_LIST_OR_MENU = 4,
} UDisplayOptionsCapitalization;
@@ -228,14 +226,14 @@ typedef enum UDisplayOptionsCapitalization {
/**
* Represents all the dialect handlings.
*
- * @draft ICU 72
+ * @stable ICU 72
*/
typedef enum UDisplayOptionsNameStyle {
/**
* A possible setting for NameStyle.
* The NameStyle context to be used is unknown (this is the default value).
*
- * @draft ICU 72
+ * @stable ICU 72
*/
UDISPOPT_NAME_STYLE_UNDEFINED = 0,
@@ -243,7 +241,7 @@ typedef enum UDisplayOptionsNameStyle {
* Use standard names when generating a locale name,
* e.g. en_GB displays as 'English (United Kingdom)'.
*
- * @draft ICU 72
+ * @stable ICU 72
*/
UDISPOPT_NAME_STYLE_STANDARD_NAMES = 1,
@@ -251,7 +249,7 @@ typedef enum UDisplayOptionsNameStyle {
* Use dialect names, when generating a locale name,
* e.g. en_GB displays as 'British English'.
*
- * @draft ICU 72
+ * @stable ICU 72
*/
UDISPOPT_NAME_STYLE_DIALECT_NAMES = 2,
} UDisplayOptionsNameStyle;
@@ -259,14 +257,14 @@ typedef enum UDisplayOptionsNameStyle {
/**
* Represents all the display lengths.
*
- * @draft ICU 72
+ * @stable ICU 72
*/
typedef enum UDisplayOptionsDisplayLength {
/**
* A possible setting for DisplayLength.
* The DisplayLength context to be used is unknown (this is the default value).
*
- * @draft ICU 72
+ * @stable ICU 72
*/
UDISPOPT_DISPLAY_LENGTH_UNDEFINED = 0,
@@ -274,7 +272,7 @@ typedef enum UDisplayOptionsDisplayLength {
* Uses full names when generating a locale name,
* e.g. "United States" for US.
*
- * @draft ICU 72
+ * @stable ICU 72
*/
UDISPOPT_DISPLAY_LENGTH_FULL = 1,
@@ -282,7 +280,7 @@ typedef enum UDisplayOptionsDisplayLength {
* Use short names when generating a locale name,
* e.g. "U.S." for US.
*
- * @draft ICU 72
+ * @stable ICU 72
*/
UDISPOPT_DISPLAY_LENGTH_SHORT = 2,
} UDisplayOptionsDisplayLength;
@@ -290,7 +288,7 @@ typedef enum UDisplayOptionsDisplayLength {
/**
* Represents all the substitute handling.
*
- * @draft ICU 72
+ * @stable ICU 72
*/
typedef enum UDisplayOptionsSubstituteHandling {
@@ -298,7 +296,7 @@ typedef enum UDisplayOptionsSubstituteHandling {
* A possible setting for SubstituteHandling.
* The SubstituteHandling context to be used is unknown (this is the default value).
*
- * @draft ICU 72
+ * @stable ICU 72
*/
UDISPOPT_SUBSTITUTE_HANDLING_UNDEFINED = 0,
@@ -306,20 +304,18 @@ typedef enum UDisplayOptionsSubstituteHandling {
* Returns a fallback value (e.g., the input code) when no data is available.
* This is the default behaviour.
*
- * @draft ICU 72
+ * @stable ICU 72
*/
UDISPOPT_SUBSTITUTE_HANDLING_SUBSTITUTE = 1,
/**
* Returns a null value when no data is available.
*
- * @draft ICU 72
+ * @stable ICU 72
*/
UDISPOPT_SUBSTITUTE_HANDLING_NO_SUBSTITUTE = 2,
} UDisplayOptionsSubstituteHandling;
-#endif // U_HIDE_DRAFT_API
-
#endif /* #if !UCONFIG_NO_FORMATTING */
#endif // __UDISPLAYOPTIONS_H__
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/uformattednumber.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/uformattednumber.h
new file mode 100644
index 00000000000..174a040a083
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/uformattednumber.h
@@ -0,0 +1,224 @@
+// © 2022 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#ifndef __UFORMATTEDNUMBER_H__
+#define __UFORMATTEDNUMBER_H__
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+#include "unicode/ufieldpositer.h"
+#include "unicode/uformattedvalue.h"
+#include "unicode/umisc.h"
+
+/**
+ * \file
+ * \brief C API: Formatted number result from various number formatting functions.
+ *
+ * Create a `UFormattedNumber` to hold the result of a number formatting operation. The same
+ * `UFormattedNumber` can be reused multiple times.
+ *
+ * <pre>
+ * LocalUFormattedNumberPointer uresult(unumf_openResult(status));
+ *
+ * // pass uresult.getAlias() to your number formatter
+ *
+ * int32_t length;
+ * const UChar* s = ufmtval_getString(unumf_resultAsValue(uresult.getAlias(), status), &length, status));
+ *
+ * // The string result is in `s` with the given `length` (it is also NUL-terminated).
+ * </pre>
+ */
+
+
+struct UFormattedNumber;
+/**
+ * C-compatible version of icu::number::FormattedNumber.
+ *
+ * NOTE: This is a C-compatible API; C++ users should build against numberformatter.h instead.
+ *
+ * @stable ICU 62
+ */
+typedef struct UFormattedNumber UFormattedNumber;
+
+
+/**
+ * Creates an object to hold the result of a UNumberFormatter
+ * operation. The object can be used repeatedly; it is cleared whenever
+ * passed to a format function.
+ *
+ * @param ec Set if an error occurs.
+ * @stable ICU 62
+ */
+U_CAPI UFormattedNumber* U_EXPORT2
+unumf_openResult(UErrorCode* ec);
+
+
+/**
+ * Returns a representation of a UFormattedNumber as a UFormattedValue,
+ * which can be subsequently passed to any API requiring that type.
+ *
+ * The returned object is owned by the UFormattedNumber and is valid
+ * only as long as the UFormattedNumber is present and unchanged in memory.
+ *
+ * You can think of this method as a cast between types.
+ *
+ * @param uresult The object containing the formatted string.
+ * @param ec Set if an error occurs.
+ * @return A UFormattedValue owned by the input object.
+ * @stable ICU 64
+ */
+U_CAPI const UFormattedValue* U_EXPORT2
+unumf_resultAsValue(const UFormattedNumber* uresult, UErrorCode* ec);
+
+
+/**
+ * Extracts the result number string out of a UFormattedNumber to a UChar buffer if possible.
+ * If bufferCapacity is greater than the required length, a terminating NUL is written.
+ * If bufferCapacity is less than the required length, an error code is set.
+ *
+ * Also see ufmtval_getString, which returns a NUL-terminated string:
+ *
+ * int32_t len;
+ * const UChar* str = ufmtval_getString(unumf_resultAsValue(uresult, &ec), &len, &ec);
+ *
+ * NOTE: This is a C-compatible API; C++ users should build against numberformatter.h instead.
+ *
+ * @param uresult The object containing the formatted number.
+ * @param buffer Where to save the string output.
+ * @param bufferCapacity The number of UChars available in the buffer.
+ * @param ec Set if an error occurs.
+ * @return The required length.
+ * @stable ICU 62
+ */
+U_CAPI int32_t U_EXPORT2
+unumf_resultToString(const UFormattedNumber* uresult, UChar* buffer, int32_t bufferCapacity,
+ UErrorCode* ec);
+
+
+/**
+ * Determines the start and end indices of the next occurrence of the given <em>field</em> in the
+ * output string. This allows you to determine the locations of, for example, the integer part,
+ * fraction part, or symbols.
+ *
+ * This is a simpler but less powerful alternative to {@link ufmtval_nextPosition}.
+ *
+ * If a field occurs just once, calling this method will find that occurrence and return it. If a
+ * field occurs multiple times, this method may be called repeatedly with the following pattern:
+ *
+ * <pre>
+ * UFieldPosition ufpos = {UNUM_GROUPING_SEPARATOR_FIELD, 0, 0};
+ * while (unumf_resultNextFieldPosition(uresult, ufpos, &ec)) {
+ * // do something with ufpos.
+ * }
+ * </pre>
+ *
+ * This method is useful if you know which field to query. If you want all available field position
+ * information, use unumf_resultGetAllFieldPositions().
+ *
+ * NOTE: All fields of the UFieldPosition must be initialized before calling this method.
+ *
+ * @param uresult The object containing the formatted number.
+ * @param ufpos
+ * Input+output variable. On input, the "field" property determines which field to look up,
+ * and the "endIndex" property determines where to begin the search. On output, the
+ * "beginIndex" field is set to the beginning of the first occurrence of the field after the
+ * input "endIndex", and "endIndex" is set to the end of that occurrence of the field
+ * (exclusive index). If a field position is not found, the FieldPosition is not changed and
+ * the method returns false.
+ * @param ec Set if an error occurs.
+ * @stable ICU 62
+ */
+U_CAPI UBool U_EXPORT2
+unumf_resultNextFieldPosition(const UFormattedNumber* uresult, UFieldPosition* ufpos, UErrorCode* ec);
+
+
+/**
+ * Populates the given iterator with all fields in the formatted output string. This allows you to
+ * determine the locations of the integer part, fraction part, and sign.
+ *
+ * This is an alternative to the more powerful {@link ufmtval_nextPosition} API.
+ *
+ * If you need information on only one field, use {@link ufmtval_nextPosition} or
+ * {@link unumf_resultNextFieldPosition}.
+ *
+ * @param uresult The object containing the formatted number.
+ * @param ufpositer
+ * A pointer to a UFieldPositionIterator created by {@link #ufieldpositer_open}. Iteration
+ * information already present in the UFieldPositionIterator is deleted, and the iterator is reset
+ * to apply to the fields in the formatted string created by this function call. The field values
+ * and indexes returned by {@link #ufieldpositer_next} represent fields denoted by
+ * the UNumberFormatFields enum. Fields are not returned in a guaranteed order. Fields cannot
+ * overlap, but they may nest. For example, 1234 could format as "1,234" which might consist of a
+ * grouping separator field for ',' and an integer field encompassing the entire string.
+ * @param ec Set if an error occurs.
+ * @stable ICU 62
+ */
+U_CAPI void U_EXPORT2
+unumf_resultGetAllFieldPositions(const UFormattedNumber* uresult, UFieldPositionIterator* ufpositer,
+ UErrorCode* ec);
+
+
+/**
+ * Extracts the formatted number as a "numeric string" conforming to the
+ * syntax defined in the Decimal Arithmetic Specification, available at
+ * http://speleotrove.com/decimal
+ *
+ * This endpoint is useful for obtaining the exact number being printed
+ * after scaling and rounding have been applied by the number formatter.
+ *
+ * @param uresult The input object containing the formatted number.
+ * @param dest the 8-bit char buffer into which the decimal number is placed
+ * @param destCapacity The size, in chars, of the destination buffer. May be zero
+ * for precomputing the required size.
+ * @param ec receives any error status.
+ * If U_BUFFER_OVERFLOW_ERROR: Returns number of chars for
+ * preflighting.
+ * @return Number of chars in the data. Does not include a trailing NUL.
+ * @stable ICU 68
+ */
+U_CAPI int32_t U_EXPORT2
+unumf_resultToDecimalNumber(
+ const UFormattedNumber* uresult,
+ char* dest,
+ int32_t destCapacity,
+ UErrorCode* ec);
+
+
+/**
+ * Releases the UFormattedNumber created by unumf_openResult().
+ *
+ * @param uresult An object created by unumf_openResult().
+ * @stable ICU 62
+ */
+U_CAPI void U_EXPORT2
+unumf_closeResult(UFormattedNumber* uresult);
+
+
+#if U_SHOW_CPLUSPLUS_API
+U_NAMESPACE_BEGIN
+
+/**
+ * \class LocalUFormattedNumberPointer
+ * "Smart pointer" class; closes a UFormattedNumber via unumf_closeResult().
+ * For most methods see the LocalPointerBase base class.
+ *
+ * Usage:
+ * <pre>
+ * LocalUFormattedNumberPointer uformatter(unumf_openResult(...));
+ * // no need to explicitly call unumf_closeResult()
+ * </pre>
+ *
+ * @see LocalPointerBase
+ * @see LocalPointer
+ * @stable ICU 62
+ */
+U_DEFINE_LOCAL_OPEN_POINTER(LocalUFormattedNumberPointer, UFormattedNumber, unumf_closeResult);
+
+U_NAMESPACE_END
+#endif // U_SHOW_CPLUSPLUS_API
+
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+#endif //__UFORMATTEDNUMBER_H__
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/unum.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/unum.h
index a392afaaed2..2dd2badc1bd 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/unum.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/unum.h
@@ -25,6 +25,7 @@
#include "unicode/uformattable.h"
#include "unicode/udisplaycontext.h"
#include "unicode/ufieldpositer.h"
+#include "unicode/unumberoptions.h"
#if U_SHOW_CPLUSPLUS_API
#include "unicode/localpointer.h"
@@ -271,55 +272,6 @@ typedef enum UNumberFormatStyle {
UNUM_IGNORE = UNUM_PATTERN_DECIMAL
} UNumberFormatStyle;
-/** The possible number format rounding modes.
- *
- * <p>
- * For more detail on rounding modes, see:
- * https://unicode-org.github.io/icu/userguide/format_parse/numbers/rounding-modes
- *
- * @stable ICU 2.0
- */
-typedef enum UNumberFormatRoundingMode {
- UNUM_ROUND_CEILING,
- UNUM_ROUND_FLOOR,
- UNUM_ROUND_DOWN,
- UNUM_ROUND_UP,
- /**
- * Half-even rounding
- * @stable, ICU 3.8
- */
- UNUM_ROUND_HALFEVEN,
-#ifndef U_HIDE_DEPRECATED_API
- /**
- * Half-even rounding, misspelled name
- * @deprecated, ICU 3.8
- */
- UNUM_FOUND_HALFEVEN = UNUM_ROUND_HALFEVEN,
-#endif /* U_HIDE_DEPRECATED_API */
- UNUM_ROUND_HALFDOWN = UNUM_ROUND_HALFEVEN + 1,
- UNUM_ROUND_HALFUP,
- /**
- * ROUND_UNNECESSARY reports an error if formatted result is not exact.
- * @stable ICU 4.8
- */
- UNUM_ROUND_UNNECESSARY,
- /**
- * Rounds ties toward the odd number.
- * @stable ICU 69
- */
- UNUM_ROUND_HALF_ODD,
- /**
- * Rounds ties toward +∞.
- * @stable ICU 69
- */
- UNUM_ROUND_HALF_CEILING,
- /**
- * Rounds ties toward -∞.
- * @stable ICU 69
- */
- UNUM_ROUND_HALF_FLOOR,
-} UNumberFormatRoundingMode;
-
/** The possible number format pad positions.
* @stable ICU 2.0
*/
@@ -399,24 +351,18 @@ typedef enum UNumberFormatFields {
UNUM_MEASURE_UNIT_FIELD,
/** @stable ICU 64 */
UNUM_COMPACT_FIELD,
-#ifndef U_HIDE_DRAFT_API
/**
* Approximately sign. In ICU 70, this was categorized under the generic SIGN field.
- * @draft ICU 71
+ * @stable ICU 71
*/
UNUM_APPROXIMATELY_SIGN_FIELD,
-#endif // U_HIDE_DRAFT_API
#ifndef U_HIDE_DEPRECATED_API
/**
* One more than the highest normal UNumberFormatFields value.
* @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
*/
-#ifndef U_HIDE_DRAFT_API
- UNUM_FIELD_COUNT = UNUM_COMPACT_FIELD + 2
-#else // U_HIDE_DRAFT_API (for UNUM_APPROXIMATELY_SIGN_FIELD)
- UNUM_FIELD_COUNT = UNUM_COMPACT_FIELD + 1
-#endif // U_HIDE_DRAFT_API (for UNUM_APPROXIMATELY_SIGN_FIELD)
+ UNUM_FIELD_COUNT
#endif /* U_HIDE_DEPRECATED_API */
} UNumberFormatFields;
@@ -1161,7 +1107,6 @@ typedef enum UNumberFormatAttribute {
} UNumberFormatAttribute;
-#ifndef U_HIDE_DRAFT_API
/**
* Returns true if the formatter supports the specified attribute and false if not.
* @param fmt The formatter to query.
@@ -1174,12 +1119,11 @@ typedef enum UNumberFormatAttribute {
* @see unum_setDoubleAttribute
* @see unum_getTextAttribute
* @see unum_setTextAttribute
-* @draft ICU 72
+* @stable ICU 72
*/
U_CAPI bool U_EXPORT2
unum_hasAttribute(const UNumberFormat* fmt,
UNumberFormatAttribute attr);
-#endif // U_HIDE_DRAFT_API
/**
* Get a numeric attribute associated with a UNumberFormat.
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/unumberformatter.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/unumberformatter.h
index 253b30b5342..09fa000b826 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/unumberformatter.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/unumberformatter.h
@@ -9,9 +9,8 @@
#if !UCONFIG_NO_FORMATTING
#include "unicode/parseerr.h"
-#include "unicode/ufieldpositer.h"
-#include "unicode/umisc.h"
-#include "unicode/uformattedvalue.h"
+#include "unicode/unumberoptions.h"
+#include "unicode/uformattednumber.h"
/**
@@ -244,107 +243,6 @@ typedef enum UNumberUnitWidth {
} UNumberUnitWidth;
/**
- * An enum declaring the strategy for when and how to display grouping separators (i.e., the
- * separator, often a comma or period, after every 2-3 powers of ten). The choices are several
- * pre-built strategies for different use cases that employ locale data whenever possible. Example
- * outputs for 1234 and 1234567 in <em>en-IN</em>:
- *
- * <ul>
- * <li>OFF: 1234 and 12345
- * <li>MIN2: 1234 and 12,34,567
- * <li>AUTO: 1,234 and 12,34,567
- * <li>ON_ALIGNED: 1,234 and 12,34,567
- * <li>THOUSANDS: 1,234 and 1,234,567
- * </ul>
- *
- * <p>
- * The default is AUTO, which displays grouping separators unless the locale data says that grouping
- * is not customary. To force grouping for all numbers greater than 1000 consistently across locales,
- * use ON_ALIGNED. On the other hand, to display grouping less frequently than the default, use MIN2
- * or OFF. See the docs of each option for details.
- *
- * <p>
- * Note: This enum specifies the strategy for grouping sizes. To set which character to use as the
- * grouping separator, use the "symbols" setter.
- *
- * @stable ICU 63
- */
-typedef enum UNumberGroupingStrategy {
- /**
- * Do not display grouping separators in any locale.
- *
- * @stable ICU 61
- */
- UNUM_GROUPING_OFF,
-
- /**
- * Display grouping using locale defaults, except do not show grouping on values smaller than
- * 10000 (such that there is a <em>minimum of two digits</em> before the first separator).
- *
- * <p>
- * Note that locales may restrict grouping separators to be displayed only on 1 million or
- * greater (for example, ee and hu) or disable grouping altogether (for example, bg currency).
- *
- * <p>
- * Locale data is used to determine whether to separate larger numbers into groups of 2
- * (customary in South Asia) or groups of 3 (customary in Europe and the Americas).
- *
- * @stable ICU 61
- */
- UNUM_GROUPING_MIN2,
-
- /**
- * Display grouping using the default strategy for all locales. This is the default behavior.
- *
- * <p>
- * Note that locales may restrict grouping separators to be displayed only on 1 million or
- * greater (for example, ee and hu) or disable grouping altogether (for example, bg currency).
- *
- * <p>
- * Locale data is used to determine whether to separate larger numbers into groups of 2
- * (customary in South Asia) or groups of 3 (customary in Europe and the Americas).
- *
- * @stable ICU 61
- */
- UNUM_GROUPING_AUTO,
-
- /**
- * Always display the grouping separator on values of at least 1000.
- *
- * <p>
- * This option ignores the locale data that restricts or disables grouping, described in MIN2 and
- * AUTO. This option may be useful to normalize the alignment of numbers, such as in a
- * spreadsheet.
- *
- * <p>
- * Locale data is used to determine whether to separate larger numbers into groups of 2
- * (customary in South Asia) or groups of 3 (customary in Europe and the Americas).
- *
- * @stable ICU 61
- */
- UNUM_GROUPING_ON_ALIGNED,
-
- /**
- * Use the Western defaults: groups of 3 and enabled for all numbers 1000 or greater. Do not use
- * locale data for determining the grouping strategy.
- *
- * @stable ICU 61
- */
- UNUM_GROUPING_THOUSANDS
-
-#ifndef U_HIDE_INTERNAL_API
- ,
- /**
- * One more than the highest UNumberGroupingStrategy value.
- *
- * @internal ICU 62: The numeric value may change over time; see ICU ticket #12420.
- */
- UNUM_GROUPING_COUNT
-#endif /* U_HIDE_INTERNAL_API */
-
-} UNumberGroupingStrategy;
-
-/**
* An enum declaring how to denote positive and negative numbers. Example outputs when formatting
* 123, 0, and -123 in <em>en-US</em>:
*
@@ -528,16 +426,6 @@ struct UNumberFormatter;
*/
typedef struct UNumberFormatter UNumberFormatter;
-struct UFormattedNumber;
-/**
- * C-compatible version of icu::number::FormattedNumber.
- *
- * NOTE: This is a C-compatible API; C++ users should build against numberformatter.h instead.
- *
- * @stable ICU 62
- */
-typedef struct UFormattedNumber UFormattedNumber;
-
/**
* Creates a new UNumberFormatter for the given skeleton string and locale. This is currently the only
@@ -584,17 +472,6 @@ unumf_openForSkeletonAndLocaleWithError(
const UChar* skeleton, int32_t skeletonLen, const char* locale, UParseError* perror, UErrorCode* ec);
-/**
- * Creates an object to hold the result of a UNumberFormatter
- * operation. The object can be used repeatedly; it is cleared whenever
- * passed to a format function.
- *
- * @param ec Set if an error occurs.
- * @stable ICU 62
- */
-U_CAPI UFormattedNumber* U_EXPORT2
-unumf_openResult(UErrorCode* ec);
-
/**
* Uses a UNumberFormatter to format an integer to a UFormattedNumber. A string, field position, and other
@@ -659,135 +536,6 @@ U_CAPI void U_EXPORT2
unumf_formatDecimal(const UNumberFormatter* uformatter, const char* value, int32_t valueLen,
UFormattedNumber* uresult, UErrorCode* ec);
-/**
- * Returns a representation of a UFormattedNumber as a UFormattedValue,
- * which can be subsequently passed to any API requiring that type.
- *
- * The returned object is owned by the UFormattedNumber and is valid
- * only as long as the UFormattedNumber is present and unchanged in memory.
- *
- * You can think of this method as a cast between types.
- *
- * @param uresult The object containing the formatted string.
- * @param ec Set if an error occurs.
- * @return A UFormattedValue owned by the input object.
- * @stable ICU 64
- */
-U_CAPI const UFormattedValue* U_EXPORT2
-unumf_resultAsValue(const UFormattedNumber* uresult, UErrorCode* ec);
-
-
-/**
- * Extracts the result number string out of a UFormattedNumber to a UChar buffer if possible.
- * If bufferCapacity is greater than the required length, a terminating NUL is written.
- * If bufferCapacity is less than the required length, an error code is set.
- *
- * Also see ufmtval_getString, which returns a NUL-terminated string:
- *
- * int32_t len;
- * const UChar* str = ufmtval_getString(unumf_resultAsValue(uresult, &ec), &len, &ec);
- *
- * NOTE: This is a C-compatible API; C++ users should build against numberformatter.h instead.
- *
- * @param uresult The object containing the formatted number.
- * @param buffer Where to save the string output.
- * @param bufferCapacity The number of UChars available in the buffer.
- * @param ec Set if an error occurs.
- * @return The required length.
- * @stable ICU 62
- */
-U_CAPI int32_t U_EXPORT2
-unumf_resultToString(const UFormattedNumber* uresult, UChar* buffer, int32_t bufferCapacity,
- UErrorCode* ec);
-
-
-/**
- * Determines the start and end indices of the next occurrence of the given <em>field</em> in the
- * output string. This allows you to determine the locations of, for example, the integer part,
- * fraction part, or symbols.
- *
- * This is a simpler but less powerful alternative to {@link ufmtval_nextPosition}.
- *
- * If a field occurs just once, calling this method will find that occurrence and return it. If a
- * field occurs multiple times, this method may be called repeatedly with the following pattern:
- *
- * <pre>
- * UFieldPosition ufpos = {UNUM_GROUPING_SEPARATOR_FIELD, 0, 0};
- * while (unumf_resultNextFieldPosition(uresult, ufpos, &ec)) {
- * // do something with ufpos.
- * }
- * </pre>
- *
- * This method is useful if you know which field to query. If you want all available field position
- * information, use unumf_resultGetAllFieldPositions().
- *
- * NOTE: All fields of the UFieldPosition must be initialized before calling this method.
- *
- * @param uresult The object containing the formatted number.
- * @param ufpos
- * Input+output variable. On input, the "field" property determines which field to look up,
- * and the "endIndex" property determines where to begin the search. On output, the
- * "beginIndex" field is set to the beginning of the first occurrence of the field after the
- * input "endIndex", and "endIndex" is set to the end of that occurrence of the field
- * (exclusive index). If a field position is not found, the FieldPosition is not changed and
- * the method returns false.
- * @param ec Set if an error occurs.
- * @stable ICU 62
- */
-U_CAPI UBool U_EXPORT2
-unumf_resultNextFieldPosition(const UFormattedNumber* uresult, UFieldPosition* ufpos, UErrorCode* ec);
-
-
-/**
- * Populates the given iterator with all fields in the formatted output string. This allows you to
- * determine the locations of the integer part, fraction part, and sign.
- *
- * This is an alternative to the more powerful {@link ufmtval_nextPosition} API.
- *
- * If you need information on only one field, use {@link ufmtval_nextPosition} or
- * {@link unumf_resultNextFieldPosition}.
- *
- * @param uresult The object containing the formatted number.
- * @param ufpositer
- * A pointer to a UFieldPositionIterator created by {@link #ufieldpositer_open}. Iteration
- * information already present in the UFieldPositionIterator is deleted, and the iterator is reset
- * to apply to the fields in the formatted string created by this function call. The field values
- * and indexes returned by {@link #ufieldpositer_next} represent fields denoted by
- * the UNumberFormatFields enum. Fields are not returned in a guaranteed order. Fields cannot
- * overlap, but they may nest. For example, 1234 could format as "1,234" which might consist of a
- * grouping separator field for ',' and an integer field encompassing the entire string.
- * @param ec Set if an error occurs.
- * @stable ICU 62
- */
-U_CAPI void U_EXPORT2
-unumf_resultGetAllFieldPositions(const UFormattedNumber* uresult, UFieldPositionIterator* ufpositer,
- UErrorCode* ec);
-
-
-/**
- * Extracts the formatted number as a "numeric string" conforming to the
- * syntax defined in the Decimal Arithmetic Specification, available at
- * http://speleotrove.com/decimal
- *
- * This endpoint is useful for obtaining the exact number being printed
- * after scaling and rounding have been applied by the number formatter.
- *
- * @param uresult The input object containing the formatted number.
- * @param dest the 8-bit char buffer into which the decimal number is placed
- * @param destCapacity The size, in chars, of the destination buffer. May be zero
- * for precomputing the required size.
- * @param ec receives any error status.
- * If U_BUFFER_OVERFLOW_ERROR: Returns number of chars for
- * preflighting.
- * @return Number of chars in the data. Does not include a trailing NUL.
- * @stable ICU 68
- */
-U_CAPI int32_t U_EXPORT2
-unumf_resultToDecimalNumber(
- const UFormattedNumber* uresult,
- char* dest,
- int32_t destCapacity,
- UErrorCode* ec);
/**
@@ -800,15 +548,6 @@ U_CAPI void U_EXPORT2
unumf_close(UNumberFormatter* uformatter);
-/**
- * Releases the UFormattedNumber created by unumf_openResult().
- *
- * @param uresult An object created by unumf_openResult().
- * @stable ICU 62
- */
-U_CAPI void U_EXPORT2
-unumf_closeResult(UFormattedNumber* uresult);
-
#if U_SHOW_CPLUSPLUS_API
U_NAMESPACE_BEGIN
@@ -830,23 +569,6 @@ U_NAMESPACE_BEGIN
*/
U_DEFINE_LOCAL_OPEN_POINTER(LocalUNumberFormatterPointer, UNumberFormatter, unumf_close);
-/**
- * \class LocalUFormattedNumberPointer
- * "Smart pointer" class; closes a UFormattedNumber via unumf_closeResult().
- * For most methods see the LocalPointerBase base class.
- *
- * Usage:
- * <pre>
- * LocalUFormattedNumberPointer uformatter(unumf_openResult(...));
- * // no need to explicitly call unumf_closeResult()
- * </pre>
- *
- * @see LocalPointerBase
- * @see LocalPointer
- * @stable ICU 62
- */
-U_DEFINE_LOCAL_OPEN_POINTER(LocalUFormattedNumberPointer, UFormattedNumber, unumf_closeResult);
-
U_NAMESPACE_END
#endif // U_SHOW_CPLUSPLUS_API
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/unumberoptions.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/unumberoptions.h
new file mode 100644
index 00000000000..3fa8df51d57
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/unumberoptions.h
@@ -0,0 +1,173 @@
+// © 2017 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#ifndef __UNUMBEROPTIONS_H__
+#define __UNUMBEROPTIONS_H__
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+/**
+ * \file
+ * \brief C API: Header-only input options for various number formatting APIs.
+ *
+ * You do not normally need to include this header file directly, because it is included in all
+ * files that use these enums.
+ */
+
+
+/** The possible number format rounding modes.
+ *
+ * <p>
+ * For more detail on rounding modes, see:
+ * https://unicode-org.github.io/icu/userguide/format_parse/numbers/rounding-modes
+ *
+ * @stable ICU 2.0
+ */
+typedef enum UNumberFormatRoundingMode {
+ UNUM_ROUND_CEILING,
+ UNUM_ROUND_FLOOR,
+ UNUM_ROUND_DOWN,
+ UNUM_ROUND_UP,
+ /**
+ * Half-even rounding
+ * @stable, ICU 3.8
+ */
+ UNUM_ROUND_HALFEVEN,
+#ifndef U_HIDE_DEPRECATED_API
+ /**
+ * Half-even rounding, misspelled name
+ * @deprecated, ICU 3.8
+ */
+ UNUM_FOUND_HALFEVEN = UNUM_ROUND_HALFEVEN,
+#endif /* U_HIDE_DEPRECATED_API */
+ UNUM_ROUND_HALFDOWN = UNUM_ROUND_HALFEVEN + 1,
+ UNUM_ROUND_HALFUP,
+ /**
+ * ROUND_UNNECESSARY reports an error if formatted result is not exact.
+ * @stable ICU 4.8
+ */
+ UNUM_ROUND_UNNECESSARY,
+ /**
+ * Rounds ties toward the odd number.
+ * @stable ICU 69
+ */
+ UNUM_ROUND_HALF_ODD,
+ /**
+ * Rounds ties toward +∞.
+ * @stable ICU 69
+ */
+ UNUM_ROUND_HALF_CEILING,
+ /**
+ * Rounds ties toward -∞.
+ * @stable ICU 69
+ */
+ UNUM_ROUND_HALF_FLOOR,
+} UNumberFormatRoundingMode;
+
+
+/**
+ * An enum declaring the strategy for when and how to display grouping separators (i.e., the
+ * separator, often a comma or period, after every 2-3 powers of ten). The choices are several
+ * pre-built strategies for different use cases that employ locale data whenever possible. Example
+ * outputs for 1234 and 1234567 in <em>en-IN</em>:
+ *
+ * <ul>
+ * <li>OFF: 1234 and 12345
+ * <li>MIN2: 1234 and 12,34,567
+ * <li>AUTO: 1,234 and 12,34,567
+ * <li>ON_ALIGNED: 1,234 and 12,34,567
+ * <li>THOUSANDS: 1,234 and 1,234,567
+ * </ul>
+ *
+ * <p>
+ * The default is AUTO, which displays grouping separators unless the locale data says that grouping
+ * is not customary. To force grouping for all numbers greater than 1000 consistently across locales,
+ * use ON_ALIGNED. On the other hand, to display grouping less frequently than the default, use MIN2
+ * or OFF. See the docs of each option for details.
+ *
+ * <p>
+ * Note: This enum specifies the strategy for grouping sizes. To set which character to use as the
+ * grouping separator, use the "symbols" setter.
+ *
+ * @stable ICU 63
+ */
+typedef enum UNumberGroupingStrategy {
+ /**
+ * Do not display grouping separators in any locale.
+ *
+ * @stable ICU 61
+ */
+ UNUM_GROUPING_OFF,
+
+ /**
+ * Display grouping using locale defaults, except do not show grouping on values smaller than
+ * 10000 (such that there is a <em>minimum of two digits</em> before the first separator).
+ *
+ * <p>
+ * Note that locales may restrict grouping separators to be displayed only on 1 million or
+ * greater (for example, ee and hu) or disable grouping altogether (for example, bg currency).
+ *
+ * <p>
+ * Locale data is used to determine whether to separate larger numbers into groups of 2
+ * (customary in South Asia) or groups of 3 (customary in Europe and the Americas).
+ *
+ * @stable ICU 61
+ */
+ UNUM_GROUPING_MIN2,
+
+ /**
+ * Display grouping using the default strategy for all locales. This is the default behavior.
+ *
+ * <p>
+ * Note that locales may restrict grouping separators to be displayed only on 1 million or
+ * greater (for example, ee and hu) or disable grouping altogether (for example, bg currency).
+ *
+ * <p>
+ * Locale data is used to determine whether to separate larger numbers into groups of 2
+ * (customary in South Asia) or groups of 3 (customary in Europe and the Americas).
+ *
+ * @stable ICU 61
+ */
+ UNUM_GROUPING_AUTO,
+
+ /**
+ * Always display the grouping separator on values of at least 1000.
+ *
+ * <p>
+ * This option ignores the locale data that restricts or disables grouping, described in MIN2 and
+ * AUTO. This option may be useful to normalize the alignment of numbers, such as in a
+ * spreadsheet.
+ *
+ * <p>
+ * Locale data is used to determine whether to separate larger numbers into groups of 2
+ * (customary in South Asia) or groups of 3 (customary in Europe and the Americas).
+ *
+ * @stable ICU 61
+ */
+ UNUM_GROUPING_ON_ALIGNED,
+
+ /**
+ * Use the Western defaults: groups of 3 and enabled for all numbers 1000 or greater. Do not use
+ * locale data for determining the grouping strategy.
+ *
+ * @stable ICU 61
+ */
+ UNUM_GROUPING_THOUSANDS
+
+#ifndef U_HIDE_INTERNAL_API
+ ,
+ /**
+ * One more than the highest UNumberGroupingStrategy value.
+ *
+ * @internal ICU 62: The numeric value may change over time; see ICU ticket #12420.
+ */
+ UNUM_GROUPING_COUNT
+#endif /* U_HIDE_INTERNAL_API */
+
+} UNumberGroupingStrategy;
+
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+#endif //__UNUMBEROPTIONS_H__
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/ureldatefmt.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/ureldatefmt.h
index 3c448900437..0882360d147 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/ureldatefmt.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/ureldatefmt.h
@@ -12,7 +12,7 @@
#include "unicode/utypes.h"
-#if !UCONFIG_NO_FORMATTING && !UCONFIG_NO_BREAK_ITERATION
+#if !UCONFIG_NO_FORMATTING
#include "unicode/unum.h"
#include "unicode/udisplaycontext.h"
@@ -505,6 +505,6 @@ ureldatefmt_combineDateAndTime( const URelativeDateTimeFormatter* reldatefmt,
int32_t resultCapacity,
UErrorCode* status );
-#endif /* !UCONFIG_NO_FORMATTING && !UCONFIG_NO_BREAK_ITERATION */
+#endif /* !UCONFIG_NO_FORMATTING */
#endif
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/usimplenumberformatter.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/usimplenumberformatter.h
new file mode 100644
index 00000000000..ef89b46b9c5
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/usimplenumberformatter.h
@@ -0,0 +1,305 @@
+// © 2022 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#ifndef __USIMPLENUMBERFORMATTER_H__
+#define __USIMPLENUMBERFORMATTER_H__
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+#include "unicode/uformattednumber.h"
+#include "unicode/unumberoptions.h"
+
+/**
+ * \file
+ * \brief C API: Simple number formatting focused on low memory and code size.
+ *
+ * These functions render locale-aware number strings but without the bells and whistles found in
+ * other number formatting APIs such as those in unumberformatter.h, like units and currencies.
+ *
+ * Example using C++ helpers:
+ *
+ * <pre>
+ * LocalUSimpleNumberFormatterPointer uformatter(usnumf_openForLocale("de-CH", status));
+ * LocalUFormattedNumberPointer uresult(unumf_openResult(status));
+ * usnumf_formatInt64(uformatter.getAlias(), 55, uresult.getAlias(), status);
+ * assertEquals("",
+ * u"55",
+ * ufmtval_getString(unumf_resultAsValue(uresult.getAlias(), status), nullptr, status));
+ * </pre>
+ *
+ * Example using pure C:
+ *
+ * <pre>
+ * UErrorCode ec = U_ZERO_ERROR;
+ * USimpleNumberFormatter* uformatter = usnumf_openForLocale("bn", &ec);
+ * USimpleNumber* unumber = usnum_openForInt64(1000007, &ec);
+ * UFormattedNumber* uresult = unumf_openResult(&ec);
+ * usnumf_format(uformatter, unumber, uresult, &ec);
+ * int32_t len;
+ * const UChar* str = ufmtval_getString(unumf_resultAsValue(uresult, &ec), &len, &ec);
+ * if (assertSuccess("Formatting end-to-end", &ec)) {
+ * assertUEquals("Should produce a result in Bangla digits", u"১০,০০,০০৭", str);
+ * }
+
+ * // Cleanup:
+ * unumf_closeResult(uresult);
+ * usnum_close(unumber);
+ * usnumf_close(uformatter);
+ * </pre>
+ */
+
+#ifndef U_HIDE_DRAFT_API
+
+
+/**
+ * An explicit sign option for a SimpleNumber.
+ *
+ * @draft ICU 73
+ */
+typedef enum USimpleNumberSign {
+ /**
+ * Render a plus sign.
+ *
+ * @draft ICU 73
+ */
+ UNUM_SIMPLE_NUMBER_PLUS_SIGN,
+ /**
+ * Render no sign.
+ *
+ * @draft ICU 73
+ */
+ UNUM_SIMPLE_NUMBER_NO_SIGN,
+ /**
+ * Render a minus sign.
+ *
+ * @draft ICU 73
+ */
+ UNUM_SIMPLE_NUMBER_MINUS_SIGN,
+} USimpleNumberSign;
+
+
+struct USimpleNumber;
+/**
+ * C-compatible version of icu::number::SimpleNumber.
+ *
+ * @draft ICU 73
+ */
+typedef struct USimpleNumber USimpleNumber;
+
+
+struct USimpleNumberFormatter;
+/**
+ * C-compatible version of icu::number::SimpleNumberFormatter.
+ *
+ * @draft ICU 73
+ */
+typedef struct USimpleNumberFormatter USimpleNumberFormatter;
+
+
+/**
+ * Creates a new USimpleNumber to be formatted with a USimpleNumberFormatter.
+ *
+ * @draft ICU 73
+ */
+U_CAPI USimpleNumber* U_EXPORT2
+usnum_openForInt64(int64_t value, UErrorCode* ec);
+
+
+/**
+ * Overwrites the value in a USimpleNumber to an int64_t.
+ *
+ * This can be used to reset the number value after formatting.
+ *
+ * @draft ICU 73
+ */
+U_CAPI void U_EXPORT2
+usnum_setToInt64(USimpleNumber* unumber, int64_t value, UErrorCode* ec);
+
+
+/**
+ * Changes the value of the USimpleNumber by a power of 10.
+ *
+ * This function immediately mutates the inner value.
+ *
+ * @draft ICU 73
+ */
+U_CAPI void U_EXPORT2
+usnum_multiplyByPowerOfTen(USimpleNumber* unumber, int32_t power, UErrorCode* ec);
+
+
+/**
+ * Rounds the value currently stored in the USimpleNumber to the given power of 10.
+ *
+ * This function immediately mutates the inner value.
+ *
+ * @draft ICU 73
+ */
+U_CAPI void U_EXPORT2
+usnum_roundTo(USimpleNumber* unumber, int32_t power, UNumberFormatRoundingMode roundingMode, UErrorCode* ec);
+
+
+/**
+ * Pads the beginning of the number with zeros up to the given minimum number of integer digits.
+ *
+ * This setting is applied upon formatting the number.
+ *
+ * @draft ICU 73
+ */
+U_CAPI void U_EXPORT2
+usnum_setMinimumIntegerDigits(USimpleNumber* unumber, int32_t minimumIntegerDigits, UErrorCode* ec);
+
+
+/**
+ * Pads the end of the number with zeros up to the given minimum number of fraction digits.
+ *
+ * This setting is applied upon formatting the number.
+ *
+ * @draft ICU 73
+ */
+U_CAPI void U_EXPORT2
+usnum_setMinimumFractionDigits(USimpleNumber* unumber, int32_t minimumFractionDigits, UErrorCode* ec);
+
+
+/**
+ * Truncates digits from the beginning of the number to the given maximum number of integer digits.
+ *
+ * This function immediately mutates the inner value.
+ *
+ * @draft ICU 73
+ */
+U_CAPI void U_EXPORT2
+usnum_truncateStart(USimpleNumber* unumber, int32_t maximumIntegerDigits, UErrorCode* ec);
+
+
+/**
+ * Sets the sign of the number: an explicit plus sign, explicit minus sign, or no sign.
+ *
+ * This setting is applied upon formatting the number.
+ *
+ * NOTE: This does not support accounting sign notation.
+ *
+ * @draft ICU 73
+ */
+U_CAPI void U_EXPORT2
+usnum_setSign(USimpleNumber* unumber, USimpleNumberSign sign, UErrorCode* ec);
+
+
+/**
+ * Creates a new USimpleNumberFormatter with all locale defaults.
+ *
+ * @draft ICU 73
+ */
+U_CAPI USimpleNumberFormatter* U_EXPORT2
+usnumf_openForLocale(const char* locale, UErrorCode* ec);
+
+
+/**
+ * Creates a new USimpleNumberFormatter, overriding the grouping strategy.
+ *
+ * @draft ICU 73
+ */
+U_CAPI USimpleNumberFormatter* U_EXPORT2
+usnumf_openForLocaleAndGroupingStrategy(
+ const char* locale, UNumberGroupingStrategy groupingStrategy, UErrorCode* ec);
+
+
+/**
+ * Formats a number using this SimpleNumberFormatter.
+ *
+ * The USimpleNumber is cleared after calling this function. It can be re-used via
+ * usnum_setToInt64.
+ *
+ * @draft ICU 73
+ */
+U_CAPI void U_EXPORT2
+usnumf_format(
+ const USimpleNumberFormatter* uformatter,
+ USimpleNumber* unumber,
+ UFormattedNumber* uresult,
+ UErrorCode* ec);
+
+
+/**
+ * Formats an integer using this SimpleNumberFormatter.
+ *
+ * For more control over the formatting, use USimpleNumber.
+ *
+ * @draft ICU 73
+ */
+U_CAPI void U_EXPORT2
+usnumf_formatInt64(
+ const USimpleNumberFormatter* uformatter,
+ int64_t value,
+ UFormattedNumber* uresult,
+ UErrorCode* ec);
+
+
+/**
+ * Frees the memory held by a USimpleNumber.
+ *
+ * NOTE: Normally, a USimpleNumber should be adopted by usnumf_formatAndAdoptNumber.
+ *
+ * @draft ICU 73
+ */
+U_CAPI void U_EXPORT2
+usnum_close(USimpleNumber* unumber);
+
+
+/**
+ * Frees the memory held by a USimpleNumberFormatter.
+ *
+ * @draft ICU 73
+ */
+U_CAPI void U_EXPORT2
+usnumf_close(USimpleNumberFormatter* uformatter);
+
+
+#if U_SHOW_CPLUSPLUS_API
+U_NAMESPACE_BEGIN
+
+/**
+ * \class LocalUSimpleNumberPointer
+ * "Smart pointer" class; closes a USimpleNumber via usnum_close().
+ * For most methods see the LocalPointerBase base class.
+ *
+ * NOTE: Normally, a USimpleNumber should be adopted by usnumf_formatAndAdoptNumber.
+ * If you use LocalUSimpleNumberPointer, call `.orphan()` when passing to that function.
+ *
+ * Usage:
+ * <pre>
+ * LocalUSimpleNumberPointer uformatter(usnumf_openForInteger(...));
+ * // no need to explicitly call usnum_close()
+ * </pre>
+ *
+ * @see LocalPointerBase
+ * @see LocalPointer
+ * @draft ICU 73
+ */
+U_DEFINE_LOCAL_OPEN_POINTER(LocalUSimpleNumberPointer, USimpleNumber, usnum_close);
+
+/**
+ * \class LocalUSimpleNumberFormatterPointer
+ * "Smart pointer" class; closes a USimpleNumberFormatter via usnumf_close().
+ * For most methods see the LocalPointerBase base class.
+ *
+ * Usage:
+ * <pre>
+ * LocalUSimpleNumberFormatterPointer uformatter(usnumf_openForLocale(...));
+ * // no need to explicitly call usnumf_close()
+ * </pre>
+ *
+ * @see LocalPointerBase
+ * @see LocalPointer
+ * @draft ICU 73
+ */
+U_DEFINE_LOCAL_OPEN_POINTER(LocalUSimpleNumberFormatterPointer, USimpleNumberFormatter, usnumf_close);
+
+U_NAMESPACE_END
+#endif // U_SHOW_CPLUSPLUS_API
+
+#endif // U_HIDE_DRAFT_API
+
+#endif /* #if !UCONFIG_NO_FORMATTING */
+#endif //__USIMPLENUMBERFORMATTER_H__
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/uspoof.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/uspoof.h
index 0aa887b7066..20d29d62b23 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/uspoof.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/uspoof.h
@@ -19,6 +19,7 @@
#ifndef USPOOF_H
#define USPOOF_H
+#include "unicode/ubidi.h"
#include "unicode/utypes.h"
#include "unicode/uset.h"
#include "unicode/parseerr.h"
@@ -83,6 +84,25 @@
* the instance should be created once (e.g., upon application startup), and the efficient
* {@link uspoof_areConfusable} method can be used at runtime.
*
+ * If the paragraph direction used to display the strings is known, the bidi function should be used instead:
+ *
+ * \code{.c}
+ * UErrorCode status = U_ZERO_ERROR;
+ * // These strings look identical when rendered in a left-to-right context.
+ * // They look distinct in a right-to-left context.
+ * UChar* str1 = (UChar*) u"A1\u05D0"; // A1×
+ * UChar* str2 = (UChar*) u"A\u05D01"; // A×1
+ *
+ * USpoofChecker* sc = uspoof_open(&status);
+ * uspoof_setChecks(sc, USPOOF_CONFUSABLE, &status);
+ *
+ * int32_t bitmask = uspoof_areBidiConfusable(sc, UBIDI_LTR, str1, -1, str2, -1, &status);
+ * UBool result = bitmask != 0;
+ * // areBidiConfusable: 1 (status: U_ZERO_ERROR)
+ * printf("areBidiConfusable: %d (status: %s)\n", result, u_errorName(status));
+ * uspoof_close(sc);
+ * \endcode
+ *
* <p>
* The type {@link LocalUSpoofCheckerPointer} is exposed for C++ programmers. It will automatically call
* {@link uspoof_close} when the object goes out of scope:
@@ -339,6 +359,51 @@
* COMMON or INHERITED, such as numbers and punctuation, are ignored when computing whether a string has multiple
* scripts.
*
+ * <h2>Advanced bidirectional usage</h2>
+ * If the paragraph direction with which the identifiers will be displayed is not known, there are
+ * multiple options for confusable detection depending on the circumstances.
+ *
+ * <p>
+ * In some circumstances, the only concern is confusion between identifiers displayed with the same
+ * paragraph direction.
+ *
+ * <p>
+ * An example is the case where identifiers are usernames prefixed with the @ symbol.
+ * That symbol will appear to the left in a left-to-right context, and to the right in a
+ * right-to-left context, so that an identifier displayed in a left-to-right context can never be
+ * confused with an identifier displayed in a right-to-left context:
+ * <ul>
+ * <li>
+ * The usernames "A1×" (A one aleph) and "A×1" (A aleph 1)
+ * would be considered confusable, since they both appear as \@A1× in a left-to-right context, and the
+ * usernames "×A_1" (aleph A underscore one) and "×1_A" (aleph one underscore A) would be considered
+ * confusable, since they both appear as A_1×@ in a right-to-left context.
+ * </li>
+ * <li>
+ * The username "Mark_" would not be considered confusable with the username "_Mark",
+ * even though the latter would appear as Mark_@ in a right-to-left context, and the
+ * former as \@Mark_ in a left-to-right context.
+ * </li>
+ * </ul>
+ * <p>
+ * In that case, the caller should check for both LTR-confusability and RTL-confusability:
+ *
+ * \code{.cpp}
+ * bool confusableInEitherDirection =
+ * uspoof_areBidiConfusableUnicodeString(sc, UBIDI_LTR, id1, id2, &status) ||
+ * uspoof_areBidiConfusableUnicodeString(sc, UBIDI_RTL, id1, id2, &status);
+ * \endcode
+ *
+ * If the bidiSkeleton is used, the LTR and RTL skeleta should be kept separately and compared, LTR
+ * with LTR and RTL with RTL.
+ *
+ * <p>
+ * In cases where confusability between the visual appearances of an identifier displayed in a
+ * left-to-right context with another identifier displayed in a right-to-left context is a concern,
+ * the LTR skeleton of one can be compared with the RTL skeleton of the other. However, this
+ * very broad definition of confusability may have unexpected results; for instance, it treats the
+ * ASCII identifiers "Mark_" and "_Mark" as confusable.
+ *
* <h2>Additional Information</h2>
*
* A <code>USpoofChecker</code> instance may be used repeatedly to perform checks on any number of identifiers.
@@ -519,7 +584,7 @@ typedef enum USpoofChecks {
/**
- * Constants from UAX #39 for use in {@link uspoof_setRestrictionLevel}, and
+ * Constants from UTS #39 for use in {@link uspoof_setRestrictionLevel}, and
* for returned identifier restriction levels in check results.
*
* @stable ICU 51
@@ -633,8 +698,8 @@ uspoof_openFromSerialized(const void *data, int32_t length, int32_t *pActualLeng
/**
* Open a Spoof Checker from the source form of the spoof data.
* The input corresponds to the Unicode data file confusables.txt
- * as described in Unicode UAX #39. The syntax of the source data
- * is as described in UAX #39 for this file, and the content of
+ * as described in Unicode Technical Standard #39. The syntax of the source data
+ * is as described in UTS #39 for this file, and the content of
* this file is acceptable input.
*
* The character encoding of the (char *) input text is UTF-8.
@@ -1111,7 +1176,7 @@ uspoof_getCheckResultNumerics(const USpoofCheckResult *checkResult, UErrorCode *
/**
- * Check the whether two specified strings are visually confusable.
+ * Check whether two specified strings are visually confusable.
*
* If the strings are confusable, the return value will be nonzero, as long as
* {@link USPOOF_CONFUSABLE} was enabled in uspoof_setChecks().
@@ -1159,7 +1224,58 @@ uspoof_areConfusable(const USpoofChecker *sc,
const UChar *id2, int32_t length2,
UErrorCode *status);
-
+#ifndef U_HIDE_DRAFT_API
+/**
+ * Check whether two specified strings are visually confusable when
+ * displayed in a context with the given paragraph direction.
+ *
+ * If the strings are confusable, the return value will be nonzero, as long as
+ * {@link USPOOF_CONFUSABLE} was enabled in uspoof_setChecks().
+ *
+ * The bits in the return value correspond to flags for each of the classes of
+ * confusables applicable to the two input strings. According to UTS 39
+ * section 4, the possible flags are:
+ *
+ * <ul>
+ * <li>{@link USPOOF_SINGLE_SCRIPT_CONFUSABLE}</li>
+ * <li>{@link USPOOF_MIXED_SCRIPT_CONFUSABLE}</li>
+ * <li>{@link USPOOF_WHOLE_SCRIPT_CONFUSABLE}</li>
+ * </ul>
+ *
+ * If one or more of the above flags were not listed in uspoof_setChecks(), this
+ * function will never report that class of confusable. The check
+ * {@link USPOOF_CONFUSABLE} enables all three flags.
+ *
+ *
+ * @param sc The USpoofChecker
+ * @param direction The paragraph direction with which the identifiers are
+ * displayed. Must be either UBIDI_LTR or UBIDI_RTL.
+ * @param id1 The first of the two identifiers to be compared for
+ * confusability. The strings are in UTF-16 format.
+ * @param length1 the length of the first identifier, expressed in
+ * 16 bit UTF-16 code units, or -1 if the string is
+ * nul terminated.
+ * @param id2 The second of the two identifiers to be compared for
+ * confusability. The identifiers are in UTF-16 format.
+ * @param length2 The length of the second identifiers, expressed in
+ * 16 bit UTF-16 code units, or -1 if the string is
+ * nul terminated.
+ * @param status The error code, set if an error occurred while attempting to
+ * perform the check.
+ * Confusability of the identifiers is not reported here,
+ * but through this function's return value.
+ * @return An integer value with bit(s) set corresponding to
+ * the type of confusability found, as defined by
+ * enum USpoofChecks. Zero is returned if the identifiers
+ * are not confusable.
+ *
+ * @draft ICU 74
+ */
+U_CAPI uint32_t U_EXPORT2 uspoof_areBidiConfusable(const USpoofChecker *sc, UBiDiDirection direction,
+ const UChar *id1, int32_t length1,
+ const UChar *id2, int32_t length2,
+ UErrorCode *status);
+#endif /* U_HIDE_DRAFT_API */
/**
* A version of {@link uspoof_areConfusable} accepting strings in UTF-8 format.
@@ -1192,14 +1308,45 @@ uspoof_areConfusableUTF8(const USpoofChecker *sc,
const char *id2, int32_t length2,
UErrorCode *status);
-
-
+#ifndef U_HIDE_DRAFT_API
+/**
+ * A version of {@link uspoof_areBidiConfusable} accepting strings in UTF-8 format.
+ *
+ * @param sc The USpoofChecker
+ * @param direction The paragraph direction with which the identifiers are
+ * displayed. Must be either UBIDI_LTR or UBIDI_RTL.
+ * @param id1 The first of the two identifiers to be compared for
+ * confusability. The strings are in UTF-8 format.
+ * @param length1 the length of the first identifiers, in bytes, or -1
+ * if the string is nul terminated.
+ * @param id2 The second of the two identifiers to be compared for
+ * confusability. The strings are in UTF-8 format.
+ * @param length2 The length of the second string in bytes, or -1
+ * if the string is nul terminated.
+ * @param status The error code, set if an error occurred while attempting to
+ * perform the check.
+ * Confusability of the strings is not reported here,
+ * but through this function's return value.
+ * @return An integer value with bit(s) set corresponding to
+ * the type of confusability found, as defined by
+ * enum USpoofChecks. Zero is returned if the strings
+ * are not confusable.
+ *
+ * @draft ICU 74
+ *
+ * @see uspoof_areBidiConfusable
+ */
+U_CAPI uint32_t U_EXPORT2 uspoof_areBidiConfusableUTF8(const USpoofChecker *sc, UBiDiDirection direction,
+ const char *id1, int32_t length1,
+ const char *id2, int32_t length2,
+ UErrorCode *status);
+#endif /* U_HIDE_DRAFT_API */
/**
* Get the "skeleton" for an identifier.
* Skeletons are a transformation of the input identifier;
* Two identifiers are confusable if their skeletons are identical.
- * See Unicode UAX #39 for additional information.
+ * See Unicode Technical Standard #39 for additional information.
*
* Using skeletons directly makes it possible to quickly check
* whether an identifier is confusable with any of some large
@@ -1233,11 +1380,50 @@ uspoof_getSkeleton(const USpoofChecker *sc,
UChar *dest, int32_t destCapacity,
UErrorCode *status);
+#ifndef U_HIDE_DRAFT_API
+/**
+ * Get the "bidiSkeleton" for an identifier and a direction.
+ * Skeletons are a transformation of the input identifier;
+ * Two identifiers are LTR-confusable if their LTR bidiSkeletons are identical;
+ * they are RTL-confusable if their RTL bidiSkeletons are identical.
+ * See Unicode Technical Standard #39 for additional information:
+ * https://www.unicode.org/reports/tr39/#Confusable_Detection.
+ *
+ * Using skeletons directly makes it possible to quickly check
+ * whether an identifier is confusable with any of some large
+ * set of existing identifiers, by creating an efficiently
+ * searchable collection of the skeletons.
+ *
+ * @param sc The USpoofChecker.
+ * @param direction The context direction with which the identifier will be
+ * displayed. Must be either UBIDI_LTR or UBIDI_RTL.
+ * @param id The input identifier whose skeleton will be computed.
+ * @param length The length of the input identifier, expressed in 16 bit
+ * UTF-16 code units, or -1 if the string is zero terminated.
+ * @param dest The output buffer, to receive the skeleton string.
+ * @param destCapacity The length of the output buffer, in 16 bit units.
+ * The destCapacity may be zero, in which case the function will
+ * return the actual length of the skeleton.
+ * @param status The error code, set if an error occurred while attempting to
+ * perform the check.
+ * @return The length of the skeleton string. The returned length
+ * is always that of the complete skeleton, even when the
+ * supplied buffer is too small (or of zero length)
+ *
+ * @draft ICU 74
+ * @see uspoof_areBidiConfusable
+ */
+U_CAPI int32_t U_EXPORT2 uspoof_getBidiSkeleton(const USpoofChecker *sc,
+ UBiDiDirection direction,
+ const UChar *id, int32_t length,
+ UChar *dest, int32_t destCapacity, UErrorCode *status);
+#endif /* U_HIDE_DRAFT_API */
+
/**
* Get the "skeleton" for an identifier.
* Skeletons are a transformation of the input identifier;
* Two identifiers are confusable if their skeletons are identical.
- * See Unicode UAX #39 for additional information.
+ * See Unicode Technical Standard #39 for additional information.
*
* Using skeletons directly makes it possible to quickly check
* whether an identifier is confusable with any of some large
@@ -1273,6 +1459,46 @@ uspoof_getSkeletonUTF8(const USpoofChecker *sc,
char *dest, int32_t destCapacity,
UErrorCode *status);
+#ifndef U_HIDE_DRAFT_API
+/**
+ * Get the "bidiSkeleton" for an identifier and a direction.
+ * Skeletons are a transformation of the input identifier;
+ * Two identifiers are LTR-confusable if their LTR bidiSkeletons are identical;
+ * they are RTL-confusable if their RTL bidiSkeletons are identical.
+ * See Unicode Technical Standard #39 for additional information:
+ * https://www.unicode.org/reports/tr39/#Confusable_Detection.
+ *
+ * Using skeletons directly makes it possible to quickly check
+ * whether an identifier is confusable with any of some large
+ * set of existing identifiers, by creating an efficiently
+ * searchable collection of the skeletons.
+ *
+ * @param sc The USpoofChecker
+ * @param direction The context direction with which the identifier will be
+ * displayed. Must be either UBIDI_LTR or UBIDI_RTL.
+ * @param id The UTF-8 format identifier whose skeleton will be computed.
+ * @param length The length of the input string, in bytes,
+ * or -1 if the string is zero terminated.
+ * @param dest The output buffer, to receive the skeleton string.
+ * @param destCapacity The length of the output buffer, in bytes.
+ * The destCapacity may be zero, in which case the function will
+ * return the actual length of the skeleton.
+ * @param status The error code, set if an error occurred while attempting to
+ * perform the check. Possible Errors include U_INVALID_CHAR_FOUND
+ * for invalid UTF-8 sequences, and
+ * U_BUFFER_OVERFLOW_ERROR if the destination buffer is too small
+ * to hold the complete skeleton.
+ * @return The length of the skeleton string, in bytes. The returned length
+ * is always that of the complete skeleton, even when the
+ * supplied buffer is too small (or of zero length)
+ *
+ * @draft ICU 74
+ */
+U_CAPI int32_t U_EXPORT2 uspoof_getBidiSkeletonUTF8(const USpoofChecker *sc, UBiDiDirection direction,
+ const char *id, int32_t length, char *dest,
+ int32_t destCapacity, UErrorCode *status);
+#endif /* U_HIDE_DRAFT_API */
+
/**
* Get the set of Candidate Characters for Inclusion in Identifiers, as defined
* in http://unicode.org/Public/security/latest/xidmodifications.txt
@@ -1433,7 +1659,7 @@ uspoof_getAllowedUnicodeSet(const USpoofChecker *sc, UErrorCode *status);
* @param position Deprecated in ICU 51. Always returns zero.
* Originally, an out parameter for the index of the first
* string position that failed a check.
- * This parameter may be NULL.
+ * This parameter may be nullptr.
* @param status The error code, set if an error occurred while attempting to
* perform the check.
* Spoofing or security issues detected with the input string are
@@ -1460,7 +1686,7 @@ uspoof_checkUnicodeString(const USpoofChecker *sc,
* @param sc The USpoofChecker
* @param id A identifier to be checked for possible security issues.
* @param checkResult An instance of USpoofCheckResult to be filled with
- * details about the identifier. Can be NULL.
+ * details about the identifier. Can be nullptr.
* @param status The error code, set if an error occurred while attempting to
* perform the check.
* Spoofing or security issues detected with the input string are
@@ -1510,11 +1736,42 @@ uspoof_areConfusableUnicodeString(const USpoofChecker *sc,
const icu::UnicodeString &s2,
UErrorCode *status);
+#ifndef U_HIDE_DRAFT_API
+/**
+ * A version of {@link uspoof_areBidiConfusable} accepting UnicodeStrings.
+ *
+ * @param sc The USpoofChecker
+ * @param direction The paragraph direction with which the identifiers are
+ * displayed. Must be either UBIDI_LTR or UBIDI_RTL.
+ * @param s1 The first of the two identifiers to be compared for
+ * confusability. The strings are in UTF-8 format.
+ * @param s2 The second of the two identifiers to be compared for
+ * confusability. The strings are in UTF-8 format.
+ * @param status The error code, set if an error occurred while attempting to
+ * perform the check.
+ * Confusability of the identifiers is not reported here,
+ * but through this function's return value.
+ * @return An integer value with bit(s) set corresponding to
+ * the type of confusability found, as defined by
+ * enum USpoofChecks. Zero is returned if the identifiers
+ * are not confusable.
+ *
+ * @draft ICU 74
+ *
+ * @see uspoof_areBidiConfusable
+ */
+U_CAPI uint32_t U_EXPORT2 uspoof_areBidiConfusableUnicodeString(const USpoofChecker *sc,
+ UBiDiDirection direction,
+ const icu::UnicodeString &s1,
+ const icu::UnicodeString &s2,
+ UErrorCode *status);
+#endif /* U_HIDE_DRAFT_API */
+
/**
* Get the "skeleton" for an identifier.
* Skeletons are a transformation of the input identifier;
* Two identifiers are confusable if their skeletons are identical.
- * See Unicode UAX #39 for additional information.
+ * See Unicode Technical Standard #39 for additional information.
*
* Using skeletons directly makes it possible to quickly check
* whether an identifier is confusable with any of some large
@@ -1540,6 +1797,36 @@ uspoof_getSkeletonUnicodeString(const USpoofChecker *sc,
icu::UnicodeString &dest,
UErrorCode *status);
+#ifndef U_HIDE_DRAFT_API
+/**
+ * Get the "bidiSkeleton" for an identifier and a direction.
+ * Skeletons are a transformation of the input identifier;
+ * Two identifiers are LTR-confusable if their LTR bidiSkeletons are identical;
+ * they are RTL-confusable if their RTL bidiSkeletons are identical.
+ * See Unicode Technical Standard #39 for additional information.
+ * https://www.unicode.org/reports/tr39/#Confusable_Detection.
+ *
+ * Using skeletons directly makes it possible to quickly check
+ * whether an identifier is confusable with any of some large
+ * set of existing identifiers, by creating an efficiently
+ * searchable collection of the skeletons.
+ *
+ * @param sc The USpoofChecker.
+ * @param direction The context direction with which the identifier will be
+ * displayed. Must be either UBIDI_LTR or UBIDI_RTL.
+ * @param id The input identifier whose bidiSkeleton will be computed.
+ * @param dest The output identifier, to receive the skeleton string.
+ * @param status The error code, set if an error occurred while attempting to
+ * perform the check.
+ * @return A reference to the destination (skeleton) string.
+ *
+ * @draft ICU 74
+ */
+U_I18N_API icu::UnicodeString &U_EXPORT2 uspoof_getBidiSkeletonUnicodeString(
+ const USpoofChecker *sc, UBiDiDirection direction, const icu::UnicodeString &id,
+ icu::UnicodeString &dest, UErrorCode *status);
+#endif /* U_HIDE_DRAFT_API */
+
/**
* Get the set of Candidate Characters for Inclusion in Identifiers, as defined
* in http://unicode.org/Public/security/latest/xidmodifications.txt
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unicode/vtzone.h b/Build/source/libs/icu/icu-src/source/i18n/unicode/vtzone.h
index 487810dd5ae..93f4ecb9395 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unicode/vtzone.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/unicode/vtzone.h
@@ -88,7 +88,7 @@ public:
* Create a <code>VTimeZone</code> instance by the time zone ID.
* @param ID The time zone ID, such as America/New_York
* @return A <code>VTimeZone</code> object initialized by the time zone ID,
- * or NULL when the ID is unknown.
+ * or nullptr when the ID is unknown.
* @stable ICU 3.8
*/
static VTimeZone* createVTimeZoneByID(const UnicodeString& ID);
@@ -109,7 +109,7 @@ public:
* @param vtzdata The string including VTIMEZONE data block
* @param status Output param to filled in with a success or an error.
* @return A <code>VTimeZone</code> initialized by the VTIMEZONE data or
- * NULL if failed to load the rule from the VTIMEZONE data.
+ * nullptr if failed to load the rule from the VTIMEZONE data.
* @stable ICU 3.8
*/
static VTimeZone* createVTimeZone(const UnicodeString& vtzdata, UErrorCode& status);
@@ -359,7 +359,7 @@ public:
/**
* Gets the <code>InitialTimeZoneRule</code> and the set of <code>TimeZoneRule</code>
* which represent time transitions for this time zone. On successful return,
- * the argument initial points to non-NULL <code>InitialTimeZoneRule</code> and
+ * the argument initial points to non-nullptr <code>InitialTimeZoneRule</code> and
* the array trsrules is filled with 0 or multiple <code>TimeZoneRule</code>
* instances up to the size specified by trscount. The results are referencing the
* rule instance held by this time zone instance. Therefore, after this time zone
diff --git a/Build/source/libs/icu/icu-src/source/i18n/units_complexconverter.cpp b/Build/source/libs/icu/icu-src/source/i18n/units_complexconverter.cpp
index 8c9c334f7e9..edbb6573ff1 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/units_complexconverter.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/units_complexconverter.cpp
@@ -164,12 +164,14 @@ MaybeStackVector<Measure> ComplexUnitsConverter::convert(double quantity,
if (i < n - 1) {
// If quantity is at the limits of double's precision from an
// integer value, we take that integer value.
- int64_t flooredQuantity = static_cast<int64_t>(floor(quantity * (1 + DBL_EPSILON)));
+ int64_t flooredQuantity;
if (uprv_isNaN(quantity)) {
// With clang on Linux: floor does not support NaN, resulting in
// a giant negative number. For now, we produce "0 feet, NaN
// inches". TODO(icu-units#131): revisit desired output.
flooredQuantity = 0;
+ } else {
+ flooredQuantity = static_cast<int64_t>(floor(quantity * (1 + DBL_EPSILON)));
}
intValues[i] = flooredQuantity;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/units_converter.cpp b/Build/source/libs/icu/icu-src/source/i18n/units_converter.cpp
index b89f4951210..6758c129e53 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/units_converter.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/units_converter.cpp
@@ -372,11 +372,11 @@ void U_I18N_API addSingleFactorConstant(StringPiece baseStr, int32_t power, Sign
factor.constantExponents[CONSTANT_FT2M] += 3 * power * signum;
} else if (baseStr == "in3_to_m3") {
factor.constantExponents[CONSTANT_FT2M] += 3 * power * signum;
- factor.factorDen *= 12 * 12 * 12;
+ factor.factorDen *= std::pow(12 * 12 * 12, power * signum);
} else if (baseStr == "gal_to_m3") {
- factor.factorNum *= 231;
factor.constantExponents[CONSTANT_FT2M] += 3 * power * signum;
- factor.factorDen *= 12 * 12 * 12;
+ factor.factorNum *= std::pow(231, power * signum);
+ factor.factorDen *= std::pow(12 * 12 * 12, power * signum);
} else if (baseStr == "gal_imp_to_m3") {
factor.constantExponents[CONSTANT_GAL_IMP2M3] += power * signum;
} else if (baseStr == "G") {
@@ -397,6 +397,14 @@ void U_I18N_API addSingleFactorConstant(StringPiece baseStr, int32_t power, Sign
factor.constantExponents[CONSTANT_SEC_PER_JULIAN_YEAR] += power * signum;
} else if (baseStr == "speed_of_light_meters_per_second") {
factor.constantExponents[CONSTANT_SPEED_OF_LIGHT_METERS_PER_SECOND] += power * signum;
+ } else if (baseStr == "sho_to_m3") {
+ factor.constantExponents[CONSTANT_SHO_TO_M3] += power * signum;
+ } else if (baseStr == "tsubo_to_m2") {
+ factor.constantExponents[CONSTANT_TSUBO_TO_M2] += power * signum;
+ } else if (baseStr == "shaku_to_m") {
+ factor.constantExponents[CONSTANT_SHAKU_TO_M] += power * signum;
+ } else if (baseStr == "AMU") {
+ factor.constantExponents[CONSTANT_AMU] += power * signum;
} else {
if (signum == Signum::NEGATIVE) {
factor.factorDen *= std::pow(strToDouble(baseStr, status), power);
@@ -535,7 +543,7 @@ void UnitsConverter::init(const ConversionRates &ratesInfo, UErrorCode &status)
loadConversionRate(conversionRate_, conversionRate_.source, conversionRate_.target, unitsState,
ratesInfo, status);
-
+
}
int32_t UnitsConverter::compareTwoUnits(const MeasureUnitImpl &firstUnit,
diff --git a/Build/source/libs/icu/icu-src/source/i18n/units_converter.h b/Build/source/libs/icu/icu-src/source/i18n/units_converter.h
index fd1d6ec4227..8dc40cd102c 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/units_converter.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/units_converter.h
@@ -33,6 +33,10 @@ enum Constants {
CONSTANT_METERS_PER_AU,
CONSTANT_SEC_PER_JULIAN_YEAR,
CONSTANT_SPEED_OF_LIGHT_METERS_PER_SECOND,
+ CONSTANT_SHO_TO_M3, // https://en.wikipedia.org/wiki/Japanese_units_of_measurement
+ CONSTANT_TSUBO_TO_M2, // https://en.wikipedia.org/wiki/Japanese_units_of_measurement
+ CONSTANT_SHAKU_TO_M, // https://en.wikipedia.org/wiki/Japanese_units_of_measurement
+ CONSTANT_AMU, // Atomic Mass Unit https://www.nist.gov/pml/special-publication-811/nist-guide-si-chapter-5-units-outside-si#table7
// Must be the last element.
CONSTANTS_COUNT
@@ -55,6 +59,10 @@ static const double constantsValues[CONSTANTS_COUNT] = {
149597870700, // CONSTANT_METERS_PER_AU
31557600, // CONSTANT_SEC_PER_JULIAN_YEAR
299792458, // CONSTANT_SPEED_OF_LIGHT_METERS_PER_SECOND
+ 2401.0 / (1331.0 * 1000.0),
+ 400.0 / 121.0,
+ 4.0 / 121.0,
+ 1.66053878283E-27, // CONSTANT_AMU
};
typedef enum Signum {
@@ -214,7 +222,7 @@ class U_I18N_API UnitsConverter : public UMemory {
/**
* Initialises the object.
- */
+ */
void init(const ConversionRates &ratesInfo, UErrorCode &status);
};
diff --git a/Build/source/libs/icu/icu-src/source/i18n/units_data.cpp b/Build/source/libs/icu/icu-src/source/i18n/units_data.cpp
index 1456af4d053..b1e069660f2 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/units_data.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/units_data.cpp
@@ -7,9 +7,11 @@
#include "bytesinkutil.h"
#include "cstring.h"
+#include "measunit_impl.h"
#include "number_decimalquantity.h"
#include "resource.h"
#include "uassert.h"
+#include "ulocimp.h"
#include "unicode/locid.h"
#include "unicode/unistr.h"
#include "unicode/ures.h"
@@ -78,6 +80,7 @@ class ConversionRateDataSink : public ResourceSink {
UnicodeString baseUnit = ICU_Utility::makeBogusString();
UnicodeString factor = ICU_Utility::makeBogusString();
UnicodeString offset = ICU_Utility::makeBogusString();
+ UnicodeString systems = ICU_Utility::makeBogusString();
for (int32_t i = 0; unitTable.getKeyAndValue(i, key, value); i++) {
if (uprv_strcmp(key, "target") == 0) {
baseUnit = value.getUnicodeString(status);
@@ -85,6 +88,8 @@ class ConversionRateDataSink : public ResourceSink {
factor = value.getUnicodeString(status);
} else if (uprv_strcmp(key, "offset") == 0) {
offset = value.getUnicodeString(status);
+ } else if (uprv_strcmp(key, "systems") == 0) {
+ systems = value.getUnicodeString(status);
}
}
if (U_FAILURE(status)) { return; }
@@ -103,6 +108,7 @@ class ConversionRateDataSink : public ResourceSink {
cr->sourceUnit.append(srcUnit, status);
cr->baseUnit.appendInvariantChars(baseUnit, status);
cr->factor.appendInvariantChars(factor, status);
+ cr->systems.appendInvariantChars(systems, status);
trimSpaces(cr->factor, status);
if (!offset.isBogus()) cr->offset.appendInvariantChars(offset, status);
}
@@ -205,11 +211,11 @@ class UnitPreferencesSink : public ResourceSink {
for (int32_t i = 0; unitPref.getKeyAndValue(i, key, value); ++i) {
if (uprv_strcmp(key, "unit") == 0) {
int32_t length;
- const UChar *u = value.getString(length, status);
+ const char16_t *u = value.getString(length, status);
up->unit.appendInvariantChars(u, length, status);
} else if (uprv_strcmp(key, "geq") == 0) {
int32_t length;
- const UChar *g = value.getString(length, status);
+ const char16_t *g = value.getString(length, status);
CharString geq;
geq.appendInvariantChars(g, length, status);
DecimalQuantity dq;
@@ -368,7 +374,7 @@ int32_t UnitPreferenceMetadata::compareTo(const UnitPreferenceMetadata &other, b
// TODO: this may be unnecessary. Fold into ConversionRates class? Or move to anonymous namespace?
void U_I18N_API getAllConversionRates(MaybeStackVector<ConversionRateInfo> &result, UErrorCode &status) {
- LocalUResourceBundlePointer unitsBundle(ures_openDirect(NULL, "units", &status));
+ LocalUResourceBundlePointer unitsBundle(ures_openDirect(nullptr, "units", &status));
ConversionRateDataSink sink(&result);
ures_getAllItemsWithFallback(unitsBundle.getAlias(), "convertUnits", sink, status);
}
@@ -384,7 +390,7 @@ const ConversionRateInfo *ConversionRates::extractConversionInfo(StringPiece sou
}
U_I18N_API UnitPreferences::UnitPreferences(UErrorCode &status) {
- LocalUResourceBundlePointer unitsBundle(ures_openDirect(NULL, "units", &status));
+ LocalUResourceBundlePointer unitsBundle(ures_openDirect(nullptr, "units", &status));
UnitPreferencesSink sink(&unitPrefs_, &metadata_);
ures_getAllItemsWithFallback(unitsBundle.getAlias(), "unitPreferenceData", sink, status);
}
@@ -409,14 +415,19 @@ MaybeStackVector<UnitPreference>
MaybeStackVector<UnitPreference> result;
// TODO: remove this once all the categories are allowed.
+ // WARNING: when this is removed please make sure to keep the "fahrenhe" => "fahrenheit" mapping
UErrorCode internalMuStatus = U_ZERO_ERROR;
if (category.compare("temperature") == 0) {
CharString localeUnitCharString = getKeyWordValue(locale, "mu", internalMuStatus);
if (U_SUCCESS(internalMuStatus)) {
+ // The value for -u-mu- is `fahrenhe`, but CLDR and everything else uses `fahrenheit`
+ if (localeUnitCharString == "fahrenhe") {
+ localeUnitCharString = CharString("fahrenheit", status);
+ }
// TODO: use the unit category as Java especially when all the categories are allowed..
- if (localeUnitCharString == "celsius" //
- || localeUnitCharString == "fahrenheit" //
- || localeUnitCharString == "kelvin" //
+ if (localeUnitCharString == "celsius"
+ || localeUnitCharString == "fahrenheit"
+ || localeUnitCharString == "kelvin"
) {
UnitPreference unitPref;
unitPref.unit.append(localeUnitCharString, status);
@@ -426,46 +437,16 @@ MaybeStackVector<UnitPreference>
}
}
- CharString region(locale.getCountry(), status);
-
+ char regionBuf[8];
+ ulocimp_getRegionForSupplementalData(locale.getName(), false, regionBuf, 8, &status);
+ CharString region(regionBuf, status);
+
// Check the locale system tag, e.g `ms=metric`.
UErrorCode internalMeasureTagStatus = U_ZERO_ERROR;
CharString localeSystem = getKeyWordValue(locale, "measure", internalMeasureTagStatus);
bool isLocaleSystem = false;
- if (U_SUCCESS(internalMeasureTagStatus)) {
- if (localeSystem == "metric") {
- region.clear();
- region.append("001", status);
- isLocaleSystem = true;
- } else if (localeSystem == "ussystem") {
- region.clear();
- region.append("US", status);
- isLocaleSystem = true;
- } else if (localeSystem == "uksystem") {
- region.clear();
- region.append("GB", status);
- isLocaleSystem = true;
- }
- }
-
- // Check the region tag, e.g. `rg=uszzz`.
- if (!isLocaleSystem) {
- UErrorCode internalRgTagStatus = U_ZERO_ERROR;
- CharString localeRegion = getKeyWordValue(locale, "rg", internalRgTagStatus);
- if (U_SUCCESS(internalRgTagStatus) && localeRegion.length() >= 3) {
- if (localeRegion == "default") {
- region.clear();
- region.append(localeRegion, status);
- } else if (localeRegion[0] >= '0' && localeRegion[0] <= '9') {
- region.clear();
- region.append(localeRegion.data(), 3, status);
- } else {
- // Take the first two character and capitalize them.
- region.clear();
- region.append(uprv_toupper(localeRegion[0]), status);
- region.append(uprv_toupper(localeRegion[1]), status);
- }
- }
+ if (U_SUCCESS(internalMeasureTagStatus) && (localeSystem == "metric" || localeSystem == "ussystem" || localeSystem == "uksystem")) {
+ isLocaleSystem = true;
}
int32_t idx =
@@ -476,6 +457,48 @@ MaybeStackVector<UnitPreference>
U_ASSERT(idx >= 0); // Failures should have been taken care of by `status`.
const UnitPreferenceMetadata *m = metadata_[idx];
+
+ if (isLocaleSystem) {
+ // if the locale ID specifies a measurment system, check if ALL of the units we got back
+ // are members of that system (or are "metric_adjacent", which we consider to match all
+ // the systems)
+ bool unitsMatchSystem = true;
+ ConversionRates rates(status);
+ for (int32_t i = 0; unitsMatchSystem && i < m->prefsCount; i++) {
+ const UnitPreference& unitPref = *(unitPrefs_[i + m->prefsOffset]);
+ MeasureUnitImpl measureUnit = MeasureUnitImpl::forIdentifier(unitPref.unit.data(), status);
+ for (int32_t j = 0; unitsMatchSystem && j < measureUnit.singleUnits.length(); j++) {
+ const SingleUnitImpl* singleUnit = measureUnit.singleUnits[j];
+ const ConversionRateInfo* rateInfo = rates.extractConversionInfo(singleUnit->getSimpleUnitID(), status);
+ CharString systems(rateInfo->systems, status);
+ if (!systems.contains("metric_adjacent")) { // "metric-adjacent" is considered to match all the locale systems
+ if (!systems.contains(localeSystem.data())) {
+ unitsMatchSystem = false;
+ }
+ }
+ }
+ }
+
+ // if any of the units we got back above don't match the mearurement system the locale ID asked for,
+ // throw out the region and just load the units for the base region for the requested measurement system
+ if (!unitsMatchSystem) {
+ region.clear();
+ if (localeSystem == "ussystem") {
+ region.append("US", status);
+ } else if (localeSystem == "uksystem") {
+ region.append("GB", status);
+ } else {
+ region.append("001", status);
+ }
+ idx = getPreferenceMetadataIndex(&metadata_, category, usage, region.toStringPiece(), status);
+ if (U_FAILURE(status)) {
+ return result;
+ }
+
+ m = metadata_[idx];
+ }
+ }
+
for (int32_t i = 0; i < m->prefsCount; i++) {
result.emplaceBackAndCheckErrorCode(status, *(unitPrefs_[i + m->prefsOffset]));
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/units_data.h b/Build/source/libs/icu/icu-src/source/i18n/units_data.h
index 118458ecca2..ad5033513cb 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/units_data.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/units_data.h
@@ -41,6 +41,7 @@ class U_I18N_API ConversionRateInfo : public UMemory {
CharString baseUnit;
CharString factor;
CharString offset;
+ CharString systems;
};
} // namespace units
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unum.cpp b/Build/source/libs/icu/icu-src/source/i18n/unum.cpp
index d2ba7ae3a2d..eb6c86252b7 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unum.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/unum.cpp
@@ -28,27 +28,29 @@
#include "unicode/dcfmtsym.h"
#include "unicode/curramt.h"
#include "unicode/localpointer.h"
+#include "unicode/measfmt.h"
#include "unicode/udisplaycontext.h"
#include "uassert.h"
#include "cpputils.h"
#include "cstring.h"
+#include "putilimp.h"
U_NAMESPACE_USE
U_CAPI UNumberFormat* U_EXPORT2
-unum_open( UNumberFormatStyle style,
- const UChar* pattern,
+unum_open( UNumberFormatStyle style,
+ const char16_t* pattern,
int32_t patternLength,
const char* locale,
UParseError* parseErr,
UErrorCode* status) {
if(U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
- NumberFormat *retVal = NULL;
+ NumberFormat *retVal = nullptr;
switch(style) {
case UNUM_DECIMAL:
@@ -60,7 +62,6 @@ unum_open( UNumberFormatStyle style,
case UNUM_CURRENCY_ACCOUNTING:
case UNUM_CASH_CURRENCY:
case UNUM_CURRENCY_STANDARD:
- case UNUM_NUMBERING_SYSTEM:
retVal = NumberFormat::createInstance(Locale(locale), style, *status);
break;
@@ -69,22 +70,22 @@ unum_open( UNumberFormatStyle style,
/* UnicodeString can handle the case when patternLength = -1. */
const UnicodeString pat(pattern, patternLength);
- if(parseErr==NULL){
+ if(parseErr==nullptr){
parseErr = &tErr;
}
DecimalFormatSymbols *syms = new DecimalFormatSymbols(Locale(locale), *status);
- if(syms == NULL) {
+ if(syms == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
if (U_FAILURE(*status)) {
delete syms;
- return NULL;
+ return nullptr;
}
retVal = new DecimalFormat(pat, syms, *parseErr, *status);
- if(retVal == NULL) {
+ if(retVal == nullptr) {
delete syms;
}
} break;
@@ -95,7 +96,7 @@ unum_open( UNumberFormatStyle style,
/* UnicodeString can handle the case when patternLength = -1. */
const UnicodeString pat(pattern, patternLength);
- if(parseErr==NULL){
+ if(parseErr==nullptr){
parseErr = &tErr;
}
@@ -113,6 +114,21 @@ unum_open( UNumberFormatStyle style,
case UNUM_DURATION:
retVal = new RuleBasedNumberFormat(URBNF_DURATION, Locale(locale), *status);
break;
+
+ case UNUM_NUMBERING_SYSTEM: {
+ // if the locale ID specifies a numbering system, go through NumberFormat::createInstance()
+ // to handle it properly (we have to specify UNUM_DEFAULT to get it to handle the numbering
+ // system, but we'll always get a RuleBasedNumberFormat back); otherwise, just go ahead and
+ // create a RuleBasedNumberFormat ourselves
+ UErrorCode localErr = U_ZERO_ERROR;
+ Locale localeObj(locale);
+ int32_t keywordLength = localeObj.getKeywordValue("numbers", nullptr, 0, localErr);
+ if (keywordLength > 0) {
+ retVal = NumberFormat::createInstance(localeObj, UNUM_DEFAULT, *status);
+ } else {
+ retVal = new RuleBasedNumberFormat(URBNF_NUMBERING_SYSTEM, localeObj, *status);
+ }
+ } break;
#endif
case UNUM_DECIMAL_COMPACT_SHORT:
@@ -125,16 +141,16 @@ unum_open( UNumberFormatStyle style,
default:
*status = U_UNSUPPORTED_ERROR;
- return NULL;
+ return nullptr;
}
- if(retVal == NULL && U_SUCCESS(*status)) {
+ if(retVal == nullptr && U_SUCCESS(*status)) {
*status = U_MEMORY_ALLOCATION_ERROR;
}
- if (U_FAILURE(*status) && retVal != NULL) {
+ if (U_FAILURE(*status) && retVal != nullptr) {
delete retVal;
- retVal = NULL;
+ retVal = nullptr;
}
return reinterpret_cast<UNumberFormat *>(retVal);
@@ -156,11 +172,11 @@ unum_clone(const UNumberFormat *fmt,
Format *res = 0;
const NumberFormat* nf = reinterpret_cast<const NumberFormat*>(fmt);
const DecimalFormat* df = dynamic_cast<const DecimalFormat*>(nf);
- if (df != NULL) {
+ if (df != nullptr) {
res = df->clone();
} else {
const RuleBasedNumberFormat* rbnf = dynamic_cast<const RuleBasedNumberFormat*>(nf);
- U_ASSERT(rbnf != NULL);
+ U_ASSERT(rbnf != nullptr);
res = rbnf->clone();
}
@@ -175,7 +191,7 @@ unum_clone(const UNumberFormat *fmt,
U_CAPI int32_t U_EXPORT2
unum_format( const UNumberFormat* fmt,
int32_t number,
- UChar* result,
+ char16_t* result,
int32_t resultLength,
UFieldPosition *pos,
UErrorCode* status)
@@ -186,7 +202,7 @@ unum_format( const UNumberFormat* fmt,
U_CAPI int32_t U_EXPORT2
unum_formatInt64(const UNumberFormat* fmt,
int64_t number,
- UChar* result,
+ char16_t* result,
int32_t resultLength,
UFieldPosition *pos,
UErrorCode* status)
@@ -195,8 +211,8 @@ unum_formatInt64(const UNumberFormat* fmt,
return -1;
UnicodeString res;
- if(!(result==NULL && resultLength==0)) {
- // NULL destination for pure preflighting: empty dummy string
+ if(!(result==nullptr && resultLength==0)) {
+ // nullptr destination for pure preflighting: empty dummy string
// otherwise, alias the destination buffer
res.setTo(result, 0, resultLength);
}
@@ -219,7 +235,7 @@ unum_formatInt64(const UNumberFormat* fmt,
U_CAPI int32_t U_EXPORT2
unum_formatDouble( const UNumberFormat* fmt,
double number,
- UChar* result,
+ char16_t* result,
int32_t resultLength,
UFieldPosition *pos, /* 0 if ignore */
UErrorCode* status)
@@ -228,8 +244,8 @@ unum_formatDouble( const UNumberFormat* fmt,
if(U_FAILURE(*status)) return -1;
UnicodeString res;
- if(!(result==NULL && resultLength==0)) {
- // NULL destination for pure preflighting: empty dummy string
+ if(!(result==nullptr && resultLength==0)) {
+ // nullptr destination for pure preflighting: empty dummy string
// otherwise, alias the destination buffer
res.setTo(result, 0, resultLength);
}
@@ -252,7 +268,7 @@ unum_formatDouble( const UNumberFormat* fmt,
U_CAPI int32_t U_EXPORT2
unum_formatDoubleForFields(const UNumberFormat* format,
double number,
- UChar* result,
+ char16_t* result,
int32_t resultLength,
UFieldPositionIterator* fpositer,
UErrorCode* status)
@@ -260,14 +276,14 @@ unum_formatDoubleForFields(const UNumberFormat* format,
if (U_FAILURE(*status))
return -1;
- if (result == NULL ? resultLength != 0 : resultLength < 0) {
+ if (result == nullptr ? resultLength != 0 : resultLength < 0) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return -1;
}
UnicodeString res;
- if (result != NULL) {
- // NULL destination for pure preflighting: empty dummy string
+ if (result != nullptr) {
+ // nullptr destination for pure preflighting: empty dummy string
// otherwise, alias the destination buffer
res.setTo(result, 0, resultLength);
}
@@ -281,7 +297,7 @@ U_CAPI int32_t U_EXPORT2
unum_formatDecimal(const UNumberFormat* fmt,
const char * number,
int32_t length,
- UChar* result,
+ char16_t* result,
int32_t resultLength,
UFieldPosition *pos, /* 0 if ignore */
UErrorCode* status) {
@@ -289,7 +305,7 @@ unum_formatDecimal(const UNumberFormat* fmt,
if(U_FAILURE(*status)) {
return -1;
}
- if ((result == NULL && resultLength != 0) || resultLength < 0) {
+ if ((result == nullptr && resultLength != 0) || resultLength < 0) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return -1;
}
@@ -324,16 +340,16 @@ unum_formatDecimal(const UNumberFormat* fmt,
U_CAPI int32_t U_EXPORT2
unum_formatDoubleCurrency(const UNumberFormat* fmt,
double number,
- UChar* currency,
- UChar* result,
+ char16_t* currency,
+ char16_t* result,
int32_t resultLength,
UFieldPosition* pos, /* ignored if 0 */
UErrorCode* status) {
if (U_FAILURE(*status)) return -1;
UnicodeString res;
- if (!(result==NULL && resultLength==0)) {
- // NULL destination for pure preflighting: empty dummy string
+ if (!(result==nullptr && resultLength==0)) {
+ // nullptr destination for pure preflighting: empty dummy string
// otherwise, alias the destination buffer
res.setTo(result, 0, resultLength);
}
@@ -344,7 +360,7 @@ unum_formatDoubleCurrency(const UNumberFormat* fmt,
}
CurrencyAmount *tempCurrAmnt = new CurrencyAmount(number, currency, *status);
// Check for null pointer.
- if (tempCurrAmnt == NULL) {
+ if (tempCurrAmnt == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
return -1;
}
@@ -362,7 +378,7 @@ unum_formatDoubleCurrency(const UNumberFormat* fmt,
static void
parseRes(Formattable& res,
const UNumberFormat* fmt,
- const UChar* text,
+ const char16_t* text,
int32_t textLength,
int32_t *parsePos /* 0 = start */,
UErrorCode *status)
@@ -390,7 +406,7 @@ parseRes(Formattable& res,
U_CAPI int32_t U_EXPORT2
unum_parse( const UNumberFormat* fmt,
- const UChar* text,
+ const char16_t* text,
int32_t textLength,
int32_t *parsePos /* 0 = start */,
UErrorCode *status)
@@ -402,7 +418,7 @@ unum_parse( const UNumberFormat* fmt,
U_CAPI int64_t U_EXPORT2
unum_parseInt64( const UNumberFormat* fmt,
- const UChar* text,
+ const char16_t* text,
int32_t textLength,
int32_t *parsePos /* 0 = start */,
UErrorCode *status)
@@ -414,7 +430,7 @@ unum_parseInt64( const UNumberFormat* fmt,
U_CAPI double U_EXPORT2
unum_parseDouble( const UNumberFormat* fmt,
- const UChar* text,
+ const char16_t* text,
int32_t textLength,
int32_t *parsePos /* 0 = start */,
UErrorCode *status)
@@ -426,7 +442,7 @@ unum_parseDouble( const UNumberFormat* fmt,
U_CAPI int32_t U_EXPORT2
unum_parseDecimal(const UNumberFormat* fmt,
- const UChar* text,
+ const char16_t* text,
int32_t textLength,
int32_t *parsePos /* 0 = start */,
char *outBuf,
@@ -436,7 +452,7 @@ unum_parseDecimal(const UNumberFormat* fmt,
if (U_FAILURE(*status)) {
return -1;
}
- if ((outBuf == NULL && outBufLength != 0) || outBufLength < 0) {
+ if ((outBuf == nullptr && outBufLength != 0) || outBufLength < 0) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return -1;
}
@@ -459,10 +475,10 @@ unum_parseDecimal(const UNumberFormat* fmt,
U_CAPI double U_EXPORT2
unum_parseDoubleCurrency(const UNumberFormat* fmt,
- const UChar* text,
+ const char16_t* text,
int32_t textLength,
int32_t* parsePos, /* 0 = start */
- UChar* currency,
+ char16_t* currency,
UErrorCode* status) {
double doubleVal = 0.0;
currency[0] = 0;
@@ -471,17 +487,17 @@ unum_parseDoubleCurrency(const UNumberFormat* fmt,
}
const UnicodeString src((UBool)(textLength == -1), text, textLength);
ParsePosition pp;
- if (parsePos != NULL) {
+ if (parsePos != nullptr) {
pp.setIndex(*parsePos);
}
*status = U_PARSE_ERROR; // assume failure, reset if succeed
LocalPointer<CurrencyAmount> currAmt(((const NumberFormat*)fmt)->parseCurrency(src, pp));
if (pp.getErrorIndex() != -1) {
- if (parsePos != NULL) {
+ if (parsePos != nullptr) {
*parsePos = pp.getErrorIndex();
}
} else {
- if (parsePos != NULL) {
+ if (parsePos != nullptr) {
*parsePos = pp.getIndex();
}
if (pp.getIndex() > 0) {
@@ -510,7 +526,7 @@ unum_hasAttribute(const UNumberFormat* fmt,
UNumberFormatAttribute attr)
{
const NumberFormat* nf = reinterpret_cast<const NumberFormat*>(fmt);
- bool isDecimalFormat = dynamic_cast<const DecimalFormat*>(nf) != NULL;
+ bool isDecimalFormat = dynamic_cast<const DecimalFormat*>(nf) != nullptr;
switch (attr) {
case UNUM_LENIENT_PARSE:
@@ -562,7 +578,7 @@ unum_getAttribute(const UNumberFormat* fmt,
// The remaining attributes are only supported for DecimalFormat
const DecimalFormat* df = dynamic_cast<const DecimalFormat*>(nf);
- if (df != NULL) {
+ if (df != nullptr) {
UErrorCode ignoredStatus = U_ZERO_ERROR;
return df->getAttribute(attr, ignoredStatus);
}
@@ -607,7 +623,7 @@ unum_setAttribute( UNumberFormat* fmt,
// The remaining attributes are only supported for DecimalFormat
DecimalFormat* df = dynamic_cast<DecimalFormat*>(nf);
- if (df != NULL) {
+ if (df != nullptr) {
UErrorCode ignoredStatus = U_ZERO_ERROR;
df->setAttribute(attr, newValue, ignoredStatus);
}
@@ -619,7 +635,7 @@ unum_getDoubleAttribute(const UNumberFormat* fmt,
{
const NumberFormat* nf = reinterpret_cast<const NumberFormat*>(fmt);
const DecimalFormat* df = dynamic_cast<const DecimalFormat*>(nf);
- if (df != NULL && attr == UNUM_ROUNDING_INCREMENT) {
+ if (df != nullptr && attr == UNUM_ROUNDING_INCREMENT) {
return df->getRoundingIncrement();
} else {
return -1.0;
@@ -633,7 +649,7 @@ unum_setDoubleAttribute( UNumberFormat* fmt,
{
NumberFormat* nf = reinterpret_cast<NumberFormat*>(fmt);
DecimalFormat* df = dynamic_cast<DecimalFormat*>(nf);
- if (df != NULL && attr == UNUM_ROUNDING_INCREMENT) {
+ if (df != nullptr && attr == UNUM_ROUNDING_INCREMENT) {
df->setRoundingIncrement(newValue);
}
}
@@ -641,7 +657,7 @@ unum_setDoubleAttribute( UNumberFormat* fmt,
U_CAPI int32_t U_EXPORT2
unum_getTextAttribute(const UNumberFormat* fmt,
UNumberFormatTextAttribute tag,
- UChar* result,
+ char16_t* result,
int32_t resultLength,
UErrorCode* status)
{
@@ -649,15 +665,16 @@ unum_getTextAttribute(const UNumberFormat* fmt,
return -1;
UnicodeString res;
- if(!(result==NULL && resultLength==0)) {
- // NULL destination for pure preflighting: empty dummy string
+ if(!(result==nullptr && resultLength==0)) {
+ // nullptr destination for pure preflighting: empty dummy string
// otherwise, alias the destination buffer
res.setTo(result, 0, resultLength);
}
const NumberFormat* nf = reinterpret_cast<const NumberFormat*>(fmt);
const DecimalFormat* df = dynamic_cast<const DecimalFormat*>(nf);
- if (df != NULL) {
+ const RuleBasedNumberFormat* rbnf = nullptr; // cast is below for performance
+ if (df != nullptr) {
switch(tag) {
case UNUM_POSITIVE_PREFIX:
df->getPositivePrefix(res);
@@ -687,21 +704,23 @@ unum_getTextAttribute(const UNumberFormat* fmt,
*status = U_UNSUPPORTED_ERROR;
return -1;
}
- } else {
- const RuleBasedNumberFormat* rbnf = dynamic_cast<const RuleBasedNumberFormat*>(nf);
- U_ASSERT(rbnf != NULL);
+ } else if ((rbnf = dynamic_cast<const RuleBasedNumberFormat*>(nf)) != nullptr) {
+ U_ASSERT(rbnf != nullptr);
if (tag == UNUM_DEFAULT_RULESET) {
res = rbnf->getDefaultRuleSetName();
} else if (tag == UNUM_PUBLIC_RULESETS) {
int32_t count = rbnf->getNumberOfRuleSetNames();
for (int i = 0; i < count; ++i) {
res += rbnf->getRuleSetName(i);
- res += (UChar)0x003b; // semicolon
+ res += (char16_t)0x003b; // semicolon
}
} else {
*status = U_UNSUPPORTED_ERROR;
return -1;
}
+ } else {
+ *status = U_UNSUPPORTED_ERROR;
+ return -1;
}
return res.extract(result, resultLength, *status);
@@ -710,7 +729,7 @@ unum_getTextAttribute(const UNumberFormat* fmt,
U_CAPI void U_EXPORT2
unum_setTextAttribute( UNumberFormat* fmt,
UNumberFormatTextAttribute tag,
- const UChar* newValue,
+ const char16_t* newValue,
int32_t newValueLength,
UErrorCode *status)
{
@@ -720,7 +739,7 @@ unum_setTextAttribute( UNumberFormat* fmt,
UnicodeString val(newValue, newValueLength);
NumberFormat* nf = reinterpret_cast<NumberFormat*>(fmt);
DecimalFormat* df = dynamic_cast<DecimalFormat*>(nf);
- if (df != NULL) {
+ if (df != nullptr) {
switch(tag) {
case UNUM_POSITIVE_PREFIX:
df->setPositivePrefix(val);
@@ -752,7 +771,7 @@ unum_setTextAttribute( UNumberFormat* fmt,
}
} else {
RuleBasedNumberFormat* rbnf = dynamic_cast<RuleBasedNumberFormat*>(nf);
- U_ASSERT(rbnf != NULL);
+ U_ASSERT(rbnf != nullptr);
if (tag == UNUM_DEFAULT_RULESET) {
rbnf->setDefaultRuleSet(val, *status);
} else {
@@ -764,7 +783,7 @@ unum_setTextAttribute( UNumberFormat* fmt,
U_CAPI int32_t U_EXPORT2
unum_toPattern( const UNumberFormat* fmt,
UBool isPatternLocalized,
- UChar* result,
+ char16_t* result,
int32_t resultLength,
UErrorCode* status)
{
@@ -772,23 +791,24 @@ unum_toPattern( const UNumberFormat* fmt,
return -1;
UnicodeString pat;
- if(!(result==NULL && resultLength==0)) {
- // NULL destination for pure preflighting: empty dummy string
+ if(!(result==nullptr && resultLength==0)) {
+ // nullptr destination for pure preflighting: empty dummy string
// otherwise, alias the destination buffer
pat.setTo(result, 0, resultLength);
}
const NumberFormat* nf = reinterpret_cast<const NumberFormat*>(fmt);
const DecimalFormat* df = dynamic_cast<const DecimalFormat*>(nf);
- if (df != NULL) {
+ const RuleBasedNumberFormat* rbnf = nullptr; // cast is below for performance
+ if (df != nullptr) {
if(isPatternLocalized)
df->toLocalizedPattern(pat);
else
df->toPattern(pat);
+ } else if ((rbnf = dynamic_cast<const RuleBasedNumberFormat*>(nf)) != nullptr) {
+ pat = rbnf->getRules();
} else {
- const RuleBasedNumberFormat* rbnf = dynamic_cast<const RuleBasedNumberFormat*>(nf);
- U_ASSERT(rbnf != NULL);
- pat = rbnf->getRules();
+ // leave `pat` empty
}
return pat.extract(result, resultLength, *status);
}
@@ -796,20 +816,19 @@ unum_toPattern( const UNumberFormat* fmt,
U_CAPI int32_t U_EXPORT2
unum_getSymbol(const UNumberFormat *fmt,
UNumberFormatSymbol symbol,
- UChar *buffer,
+ char16_t *buffer,
int32_t size,
- UErrorCode *status)
-{
- if(status==NULL || U_FAILURE(*status)) {
+ UErrorCode *status) UPRV_NO_SANITIZE_UNDEFINED {
+ if(status==nullptr || U_FAILURE(*status)) {
return 0;
}
- if(fmt==NULL || symbol< 0 || symbol>=UNUM_FORMAT_SYMBOL_COUNT) {
+ if(fmt==nullptr || symbol< 0 || symbol>=UNUM_FORMAT_SYMBOL_COUNT) {
*status=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
const NumberFormat *nf = reinterpret_cast<const NumberFormat *>(fmt);
const DecimalFormat *dcf = dynamic_cast<const DecimalFormat *>(nf);
- if (dcf == NULL) {
+ if (dcf == nullptr) {
*status = U_UNSUPPORTED_ERROR;
return 0;
}
@@ -823,20 +842,19 @@ unum_getSymbol(const UNumberFormat *fmt,
U_CAPI void U_EXPORT2
unum_setSymbol(UNumberFormat *fmt,
UNumberFormatSymbol symbol,
- const UChar *value,
+ const char16_t *value,
int32_t length,
- UErrorCode *status)
-{
- if(status==NULL || U_FAILURE(*status)) {
+ UErrorCode *status) UPRV_NO_SANITIZE_UNDEFINED {
+ if(status==nullptr || U_FAILURE(*status)) {
return;
}
- if(fmt==NULL || symbol< 0 || symbol>=UNUM_FORMAT_SYMBOL_COUNT || value==NULL || length<-1) {
+ if(fmt==nullptr || symbol< 0 || symbol>=UNUM_FORMAT_SYMBOL_COUNT || value==nullptr || length<-1) {
*status=U_ILLEGAL_ARGUMENT_ERROR;
return;
}
NumberFormat *nf = reinterpret_cast<NumberFormat *>(fmt);
DecimalFormat *dcf = dynamic_cast<DecimalFormat *>(nf);
- if (dcf == NULL) {
+ if (dcf == nullptr) {
*status = U_UNSUPPORTED_ERROR;
return;
}
@@ -850,7 +868,7 @@ unum_setSymbol(UNumberFormat *fmt,
U_CAPI void U_EXPORT2
unum_applyPattern( UNumberFormat *fmt,
UBool localized,
- const UChar *pattern,
+ const char16_t *pattern,
int32_t patternLength,
UParseError *parseError,
UErrorCode* status)
@@ -858,21 +876,21 @@ unum_applyPattern( UNumberFormat *fmt,
UErrorCode tStatus = U_ZERO_ERROR;
UParseError tParseError;
- if(parseError == NULL){
+ if(parseError == nullptr){
parseError = &tParseError;
}
- if(status==NULL){
+ if(status==nullptr){
status = &tStatus;
}
int32_t len = (patternLength == -1 ? u_strlen(pattern) : patternLength);
- const UnicodeString pat((UChar*)pattern, len, len);
+ const UnicodeString pat((char16_t*)pattern, len, len);
// Verify if the object passed is a DecimalFormat object
NumberFormat* nf = reinterpret_cast<NumberFormat*>(fmt);
DecimalFormat* df = dynamic_cast<DecimalFormat*>(nf);
- if (df != NULL) {
+ if (df != nullptr) {
if(localized) {
df->applyLocalizedPattern(pat,*parseError, *status);
} else {
@@ -889,11 +907,11 @@ unum_getLocaleByType(const UNumberFormat *fmt,
ULocDataLocaleType type,
UErrorCode* status)
{
- if (fmt == NULL) {
+ if (fmt == nullptr) {
if (U_SUCCESS(*status)) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
}
- return NULL;
+ return nullptr;
}
return ((const Format*)fmt)->getLocaleID(type, *status);
}
@@ -920,23 +938,23 @@ unum_getContext(const UNumberFormat *fmt, UDisplayContextType type, UErrorCode*
U_CAPI UFormattable * U_EXPORT2
unum_parseToUFormattable(const UNumberFormat* fmt,
UFormattable *result,
- const UChar* text,
+ const char16_t* text,
int32_t textLength,
int32_t* parsePos, /* 0 = start */
UErrorCode* status) {
- UFormattable *newFormattable = NULL;
+ UFormattable *newFormattable = nullptr;
if (U_FAILURE(*status)) return result;
- if (fmt == NULL || (text==NULL && textLength!=0)) {
+ if (fmt == nullptr || (text==nullptr && textLength!=0)) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return result;
}
- if (result == NULL) { // allocate if not allocated.
+ if (result == nullptr) { // allocate if not allocated.
newFormattable = result = ufmt_open(status);
}
parseRes(*(Formattable::fromUFormattable(result)), fmt, text, textLength, parsePos, status);
- if (U_FAILURE(*status) && newFormattable != NULL) {
+ if (U_FAILURE(*status) && newFormattable != nullptr) {
ufmt_close(newFormattable);
- result = NULL; // deallocate if there was a parse error
+ result = nullptr; // deallocate if there was a parse error
}
return result;
}
@@ -944,15 +962,15 @@ unum_parseToUFormattable(const UNumberFormat* fmt,
U_CAPI int32_t U_EXPORT2
unum_formatUFormattable(const UNumberFormat* fmt,
const UFormattable *number,
- UChar *result,
+ char16_t *result,
int32_t resultLength,
UFieldPosition *pos, /* ignored if 0 */
UErrorCode *status) {
if (U_FAILURE(*status)) {
return 0;
}
- if (fmt == NULL || number==NULL ||
- (result==NULL ? resultLength!=0 : resultLength<0)) {
+ if (fmt == nullptr || number==nullptr ||
+ (result==nullptr ? resultLength!=0 : resultLength<0)) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/unumsys.cpp b/Build/source/libs/icu/icu-src/source/i18n/unumsys.cpp
index 4a0d0fa3b6f..9a9fa12e2f4 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/unumsys.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/unumsys.cpp
@@ -31,7 +31,7 @@ unumsys_openByName(const char *name, UErrorCode *status)
{
// createInstanceByName does NOT return immediately if status indicates error
if (U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
return (UNumberingSystem*)NumberingSystem::createInstanceByName(name, *status);
}
@@ -73,7 +73,7 @@ unumsys_isAlgorithmic(const UNumberingSystem *unumsys)
}
U_CAPI int32_t U_EXPORT2
-unumsys_getDescription(const UNumberingSystem *unumsys, UChar *result,
+unumsys_getDescription(const UNumberingSystem *unumsys, char16_t *result,
int32_t resultLength, UErrorCode *status)
{
if (U_FAILURE(*status)) {
diff --git a/Build/source/libs/icu/icu-src/source/i18n/upluralrules.cpp b/Build/source/libs/icu/icu-src/source/i18n/upluralrules.cpp
index 73e59a75c4d..9c473128119 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/upluralrules.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/upluralrules.cpp
@@ -41,7 +41,7 @@ namespace {
UnicodeString select(const PluralRules &rules, const Formattable& obj, const NumberFormat& fmt, UErrorCode& status) {
if (U_SUCCESS(status)) {
const DecimalFormat *decFmt = dynamic_cast<const DecimalFormat *>(&fmt);
- if (decFmt != NULL) {
+ if (decFmt != nullptr) {
number::impl::DecimalQuantity dq;
decFmt->formatToDecimalQuantity(obj, dq, status);
if (U_SUCCESS(status)) {
@@ -80,13 +80,13 @@ uplrules_close(UPluralRules *uplrules)
U_CAPI int32_t U_EXPORT2
uplrules_select(const UPluralRules *uplrules,
double number,
- UChar *keyword, int32_t capacity,
+ char16_t *keyword, int32_t capacity,
UErrorCode *status)
{
if (U_FAILURE(*status)) {
return 0;
}
- if (keyword == NULL ? capacity != 0 : capacity < 0) {
+ if (keyword == nullptr ? capacity != 0 : capacity < 0) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -97,13 +97,13 @@ uplrules_select(const UPluralRules *uplrules,
U_CAPI int32_t U_EXPORT2
uplrules_selectFormatted(const UPluralRules *uplrules,
const UFormattedNumber* number,
- UChar *keyword, int32_t capacity,
+ char16_t *keyword, int32_t capacity,
UErrorCode *status)
{
if (U_FAILURE(*status)) {
return 0;
}
- if (keyword == NULL ? capacity != 0 : capacity < 0) {
+ if (keyword == nullptr ? capacity != 0 : capacity < 0) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -119,13 +119,13 @@ uplrules_selectFormatted(const UPluralRules *uplrules,
U_CAPI int32_t U_EXPORT2
uplrules_selectForRange(const UPluralRules *uplrules,
const UFormattedNumberRange* urange,
- UChar *keyword, int32_t capacity,
+ char16_t *keyword, int32_t capacity,
UErrorCode *status)
{
if (U_FAILURE(*status)) {
return 0;
}
- if (keyword == NULL ? capacity != 0 : capacity < 0) {
+ if (keyword == nullptr ? capacity != 0 : capacity < 0) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -139,7 +139,7 @@ U_CAPI int32_t U_EXPORT2
uplrules_selectWithFormat(const UPluralRules *uplrules,
double number,
const UNumberFormat *fmt,
- UChar *keyword, int32_t capacity,
+ char16_t *keyword, int32_t capacity,
UErrorCode *status)
{
if (U_FAILURE(*status)) {
@@ -147,7 +147,7 @@ uplrules_selectWithFormat(const UPluralRules *uplrules,
}
const PluralRules* plrules = reinterpret_cast<const PluralRules*>(uplrules);
const NumberFormat* nf = reinterpret_cast<const NumberFormat*>(fmt);
- if (plrules == NULL || nf == NULL || ((keyword == NULL)? capacity != 0 : capacity < 0)) {
+ if (plrules == nullptr || nf == nullptr || ((keyword == nullptr)? capacity != 0 : capacity < 0)) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -161,20 +161,20 @@ uplrules_getKeywords(const UPluralRules *uplrules,
UErrorCode *status)
{
if (U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
const PluralRules* plrules = reinterpret_cast<const PluralRules*>(uplrules);
- if (plrules == NULL) {
+ if (plrules == nullptr) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
StringEnumeration *senum = plrules->getKeywords(*status);
if (U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
- if (senum == NULL) {
+ if (senum == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
return uenum_openFromStringEnumeration(senum, status);
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/uregex.cpp b/Build/source/libs/icu/icu-src/source/i18n/uregex.cpp
index dd2ad2a81e8..2a520209fad 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/uregex.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/uregex.cpp
@@ -38,10 +38,10 @@ public:
int32_t fMagic;
RegexPattern *fPat;
u_atomic_int32_t *fPatRefCount;
- UChar *fPatString;
+ char16_t *fPatString;
int32_t fPatStringLen;
RegexMatcher *fMatcher;
- const UChar *fText; // Text from setText()
+ const char16_t *fText; // Text from setText()
int32_t fTextLength; // Length provided by user with setText(), which
// may be -1.
UBool fOwnsText;
@@ -51,25 +51,25 @@ static const int32_t REXP_MAGIC = 0x72657870; // "rexp" in ASCII
RegularExpression::RegularExpression() {
fMagic = REXP_MAGIC;
- fPat = NULL;
- fPatRefCount = NULL;
- fPatString = NULL;
+ fPat = nullptr;
+ fPatRefCount = nullptr;
+ fPatString = nullptr;
fPatStringLen = 0;
- fMatcher = NULL;
- fText = NULL;
+ fMatcher = nullptr;
+ fText = nullptr;
fTextLength = 0;
fOwnsText = false;
}
RegularExpression::~RegularExpression() {
delete fMatcher;
- fMatcher = NULL;
- if (fPatRefCount!=NULL && umtx_atomic_dec(fPatRefCount)==0) {
+ fMatcher = nullptr;
+ if (fPatRefCount!=nullptr && umtx_atomic_dec(fPatRefCount)==0) {
delete fPat;
uprv_free(fPatString);
uprv_free((void *)fPatRefCount);
}
- if (fOwnsText && fText!=NULL) {
+ if (fOwnsText && fText!=nullptr) {
uprv_free((void *)fText);
}
fMagic = 0;
@@ -88,12 +88,12 @@ static UBool validateRE(const RegularExpression *re, UBool requiresText, UErrorC
if (U_FAILURE(*status)) {
return false;
}
- if (re == NULL || re->fMagic != REXP_MAGIC) {
+ if (re == nullptr || re->fMagic != REXP_MAGIC) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return false;
}
// !!! Not sure how to update this with the new UText backing, which is stored in re->fMatcher anyway
- if (requiresText && re->fText == NULL && !re->fOwnsText) {
+ if (requiresText && re->fText == nullptr && !re->fOwnsText) {
*status = U_REGEX_INVALID_STATE;
return false;
}
@@ -106,18 +106,18 @@ static UBool validateRE(const RegularExpression *re, UBool requiresText, UErrorC
//
//----------------------------------------------------------------------------------------
U_CAPI URegularExpression * U_EXPORT2
-uregex_open( const UChar *pattern,
+uregex_open( const char16_t *pattern,
int32_t patternLength,
uint32_t flags,
UParseError *pe,
UErrorCode *status) {
if (U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
- if (pattern == NULL || patternLength < -1 || patternLength == 0) {
+ if (pattern == nullptr || patternLength < -1 || patternLength == 0) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
int32_t actualPatLen = patternLength;
if (actualPatLen == -1) {
@@ -126,13 +126,13 @@ uregex_open( const UChar *pattern,
RegularExpression *re = new RegularExpression;
u_atomic_int32_t *refC = (u_atomic_int32_t *)uprv_malloc(sizeof(int32_t));
- UChar *patBuf = (UChar *)uprv_malloc(sizeof(UChar)*(actualPatLen+1));
- if (re == NULL || refC == NULL || patBuf == NULL) {
+ char16_t *patBuf = (char16_t *)uprv_malloc(sizeof(char16_t)*(actualPatLen+1));
+ if (re == nullptr || refC == nullptr || patBuf == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
delete re;
uprv_free((void *)refC);
uprv_free(patBuf);
- return NULL;
+ return nullptr;
}
re->fPatRefCount = refC;
*re->fPatRefCount = 1;
@@ -153,7 +153,7 @@ uregex_open( const UChar *pattern,
//
// Compile the pattern
//
- if (pe != NULL) {
+ if (pe != nullptr) {
re->fPat = RegexPattern::compile(&patText, flags, *pe, *status);
} else {
re->fPat = RegexPattern::compile(&patText, flags, *status);
@@ -174,7 +174,7 @@ uregex_open( const UChar *pattern,
ErrorExit:
delete re;
- return NULL;
+ return nullptr;
}
@@ -190,33 +190,33 @@ uregex_openUText(UText *pattern,
UErrorCode *status) {
if (U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
- if (pattern == NULL) {
+ if (pattern == nullptr) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
int64_t patternNativeLength = utext_nativeLength(pattern);
if (patternNativeLength == 0) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
RegularExpression *re = new RegularExpression;
UErrorCode lengthStatus = U_ZERO_ERROR;
- int32_t pattern16Length = utext_extract(pattern, 0, patternNativeLength, NULL, 0, &lengthStatus);
+ int32_t pattern16Length = utext_extract(pattern, 0, patternNativeLength, nullptr, 0, &lengthStatus);
u_atomic_int32_t *refC = (u_atomic_int32_t *)uprv_malloc(sizeof(int32_t));
- UChar *patBuf = (UChar *)uprv_malloc(sizeof(UChar)*(pattern16Length+1));
- if (re == NULL || refC == NULL || patBuf == NULL) {
+ char16_t *patBuf = (char16_t *)uprv_malloc(sizeof(char16_t)*(pattern16Length+1));
+ if (re == nullptr || refC == nullptr || patBuf == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
delete re;
uprv_free((void *)refC);
uprv_free(patBuf);
- return NULL;
+ return nullptr;
}
re->fPatRefCount = refC;
*re->fPatRefCount = 1;
@@ -236,7 +236,7 @@ uregex_openUText(UText *pattern,
//
// Compile the pattern
//
- if (pe != NULL) {
+ if (pe != nullptr) {
re->fPat = RegexPattern::compile(&patText, flags, *pe, *status);
} else {
re->fPat = RegexPattern::compile(&patText, flags, *status);
@@ -257,7 +257,7 @@ uregex_openUText(UText *pattern,
ErrorExit:
delete re;
- return NULL;
+ return nullptr;
}
@@ -286,19 +286,19 @@ U_CAPI URegularExpression * U_EXPORT2
uregex_clone(const URegularExpression *source2, UErrorCode *status) {
RegularExpression *source = (RegularExpression*)source2;
if (validateRE(source, false, status) == false) {
- return NULL;
+ return nullptr;
}
RegularExpression *clone = new RegularExpression;
- if (clone == NULL) {
+ if (clone == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
clone->fMatcher = source->fPat->matcher(*status);
if (U_FAILURE(*status)) {
delete clone;
- return NULL;
+ return nullptr;
}
clone->fPat = source->fPat;
@@ -319,16 +319,16 @@ uregex_clone(const URegularExpression *source2, UErrorCode *status) {
// uregex_pattern
//
//------------------------------------------------------------------------------
-U_CAPI const UChar * U_EXPORT2
+U_CAPI const char16_t * U_EXPORT2
uregex_pattern(const URegularExpression *regexp2,
int32_t *patLength,
UErrorCode *status) {
RegularExpression *regexp = (RegularExpression*)regexp2;
if (validateRE(regexp, false, status) == false) {
- return NULL;
+ return nullptr;
}
- if (patLength != NULL) {
+ if (patLength != nullptr) {
*patLength = regexp->fPatStringLen;
}
return regexp->fPatString;
@@ -371,19 +371,19 @@ uregex_flags(const URegularExpression *regexp2, UErrorCode *status) {
//------------------------------------------------------------------------------
U_CAPI void U_EXPORT2
uregex_setText(URegularExpression *regexp2,
- const UChar *text,
+ const char16_t *text,
int32_t textLength,
UErrorCode *status) {
RegularExpression *regexp = (RegularExpression*)regexp2;
if (validateRE(regexp, false, status) == false) {
return;
}
- if (text == NULL || textLength < -1) {
+ if (text == nullptr || textLength < -1) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
- if (regexp->fOwnsText && regexp->fText != NULL) {
+ if (regexp->fOwnsText && regexp->fText != nullptr) {
uprv_free((void *)regexp->fText);
}
@@ -411,16 +411,16 @@ uregex_setUText(URegularExpression *regexp2,
if (validateRE(regexp, false, status) == false) {
return;
}
- if (text == NULL) {
+ if (text == nullptr) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
- if (regexp->fOwnsText && regexp->fText != NULL) {
+ if (regexp->fOwnsText && regexp->fText != nullptr) {
uprv_free((void *)regexp->fText);
}
- regexp->fText = NULL; // only fill it in on request
+ regexp->fText = nullptr; // only fill it in on request
regexp->fTextLength = -1;
regexp->fOwnsText = true;
regexp->fMatcher->reset(text);
@@ -433,16 +433,16 @@ uregex_setUText(URegularExpression *regexp2,
// uregex_getText
//
//------------------------------------------------------------------------------
-U_CAPI const UChar * U_EXPORT2
+U_CAPI const char16_t * U_EXPORT2
uregex_getText(URegularExpression *regexp2,
int32_t *textLength,
UErrorCode *status) {
RegularExpression *regexp = (RegularExpression*)regexp2;
if (validateRE(regexp, false, status) == false) {
- return NULL;
+ return nullptr;
}
- if (regexp->fText == NULL) {
+ if (regexp->fText == nullptr) {
// need to fill in the text
UText *inputText = regexp->fMatcher->inputText();
int64_t inputNativeLength = utext_nativeLength(inputText);
@@ -452,8 +452,8 @@ uregex_getText(URegularExpression *regexp2,
regexp->fOwnsText = false; // because the UText owns it
} else {
UErrorCode lengthStatus = U_ZERO_ERROR;
- regexp->fTextLength = utext_extract(inputText, 0, inputNativeLength, NULL, 0, &lengthStatus); // buffer overflow error
- UChar *inputChars = (UChar *)uprv_malloc(sizeof(UChar)*(regexp->fTextLength+1));
+ regexp->fTextLength = utext_extract(inputText, 0, inputNativeLength, nullptr, 0, &lengthStatus); // buffer overflow error
+ char16_t *inputChars = (char16_t *)uprv_malloc(sizeof(char16_t)*(regexp->fTextLength+1));
utext_extract(inputText, 0, inputNativeLength, inputChars, regexp->fTextLength+1, status);
regexp->fText = inputChars;
@@ -461,7 +461,7 @@ uregex_getText(URegularExpression *regexp2,
}
}
- if (textLength != NULL) {
+ if (textLength != nullptr) {
*textLength = regexp->fTextLength;
}
return regexp->fText;
@@ -634,7 +634,7 @@ uregex_groupCount(URegularExpression *regexp2,
//------------------------------------------------------------------------------
int32_t
uregex_groupNumberFromName(URegularExpression *regexp2,
- const UChar *groupName,
+ const char16_t *groupName,
int32_t nameLength,
UErrorCode *status) {
RegularExpression *regexp = (RegularExpression*)regexp2;
@@ -665,19 +665,19 @@ uregex_groupNumberFromCName(URegularExpression *regexp2,
U_CAPI int32_t U_EXPORT2
uregex_group(URegularExpression *regexp2,
int32_t groupNum,
- UChar *dest,
+ char16_t *dest,
int32_t destCapacity,
UErrorCode *status) {
RegularExpression *regexp = (RegularExpression*)regexp2;
if (validateRE(regexp, true, status) == false) {
return 0;
}
- if (destCapacity < 0 || (destCapacity > 0 && dest == NULL)) {
+ if (destCapacity < 0 || (destCapacity > 0 && dest == nullptr)) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
- if (destCapacity == 0 || regexp->fText != NULL) {
+ if (destCapacity == 0 || regexp->fText != nullptr) {
// If preflighting or if we already have the text as UChars,
// this is a little cheaper than extracting from the UText
@@ -741,7 +741,7 @@ uregex_groupUText(URegularExpression *regexp2,
RegularExpression *regexp = (RegularExpression*)regexp2;
if (validateRE(regexp, true, status) == false) {
UErrorCode emptyTextStatus = U_ZERO_ERROR;
- return (dest ? dest : utext_openUChars(NULL, NULL, 0, &emptyTextStatus));
+ return (dest ? dest : utext_openUChars(nullptr, nullptr, 0, &emptyTextStatus));
}
return regexp->fMatcher->group(groupNum, dest, *groupLength, *status);
@@ -1149,17 +1149,17 @@ uregex_getFindProgressCallback(const URegularExpression *regexp2,
//------------------------------------------------------------------------------
U_CAPI int32_t U_EXPORT2
uregex_replaceAll(URegularExpression *regexp2,
- const UChar *replacementText,
+ const char16_t *replacementText,
int32_t replacementLength,
- UChar *destBuf,
+ char16_t *destBuf,
int32_t destCapacity,
UErrorCode *status) {
RegularExpression *regexp = (RegularExpression*)regexp2;
if (validateRE(regexp, true, status) == false) {
return 0;
}
- if (replacementText == NULL || replacementLength < -1 ||
- (destBuf == NULL && destCapacity > 0) ||
+ if (replacementText == nullptr || replacementLength < -1 ||
+ (destBuf == nullptr && destCapacity > 0) ||
destCapacity < 0) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
@@ -1206,7 +1206,7 @@ uregex_replaceAllUText(URegularExpression *regexp2,
if (validateRE(regexp, true, status) == false) {
return 0;
}
- if (replacementText == NULL) {
+ if (replacementText == nullptr) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -1223,17 +1223,17 @@ uregex_replaceAllUText(URegularExpression *regexp2,
//------------------------------------------------------------------------------
U_CAPI int32_t U_EXPORT2
uregex_replaceFirst(URegularExpression *regexp2,
- const UChar *replacementText,
+ const char16_t *replacementText,
int32_t replacementLength,
- UChar *destBuf,
+ char16_t *destBuf,
int32_t destCapacity,
UErrorCode *status) {
RegularExpression *regexp = (RegularExpression*)regexp2;
if (validateRE(regexp, true, status) == false) {
return 0;
}
- if (replacementText == NULL || replacementLength < -1 ||
- (destBuf == NULL && destCapacity > 0) ||
+ if (replacementText == nullptr || replacementLength < -1 ||
+ (destBuf == nullptr && destCapacity > 0) ||
destCapacity < 0) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
@@ -1267,7 +1267,7 @@ uregex_replaceFirstUText(URegularExpression *regexp2,
if (validateRE(regexp, true, status) == false) {
return 0;
}
- if (replacementText == NULL) {
+ if (replacementText == nullptr) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -1291,22 +1291,22 @@ U_NAMESPACE_BEGIN
class RegexCImpl {
public:
inline static int32_t appendReplacement(RegularExpression *regexp,
- const UChar *replacementText,
+ const char16_t *replacementText,
int32_t replacementLength,
- UChar **destBuf,
+ char16_t **destBuf,
int32_t *destCapacity,
UErrorCode *status);
inline static int32_t appendTail(RegularExpression *regexp,
- UChar **destBuf,
+ char16_t **destBuf,
int32_t *destCapacity,
UErrorCode *status);
inline static int32_t split(RegularExpression *regexp,
- UChar *destBuf,
+ char16_t *destBuf,
int32_t destCapacity,
int32_t *requiredCapacity,
- UChar *destFields[],
+ char16_t *destFields[],
int32_t destFieldsCapacity,
UErrorCode *status);
};
@@ -1315,17 +1315,17 @@ U_NAMESPACE_END
-static const UChar BACKSLASH = 0x5c;
-static const UChar DOLLARSIGN = 0x24;
-static const UChar LEFTBRACKET = 0x7b;
-static const UChar RIGHTBRACKET = 0x7d;
+static const char16_t BACKSLASH = 0x5c;
+static const char16_t DOLLARSIGN = 0x24;
+static const char16_t LEFTBRACKET = 0x7b;
+static const char16_t RIGHTBRACKET = 0x7d;
//
// Move a character to an output buffer, with bounds checking on the index.
// Index advances even if capacity is exceeded, for preflight size computations.
// This little sequence is used a LOT.
//
-static inline void appendToBuf(UChar c, int32_t *idx, UChar *buf, int32_t bufCapacity) {
+static inline void appendToBuf(char16_t c, int32_t *idx, char16_t *buf, int32_t bufCapacity) {
if (*idx < bufCapacity) {
buf[*idx] = c;
}
@@ -1337,9 +1337,9 @@ static inline void appendToBuf(UChar c, int32_t *idx, UChar *buf, int32_t bufCap
// appendReplacement, the actual implementation.
//
int32_t RegexCImpl::appendReplacement(RegularExpression *regexp,
- const UChar *replacementText,
+ const char16_t *replacementText,
int32_t replacementLength,
- UChar **destBuf,
+ char16_t **destBuf,
int32_t *destCapacity,
UErrorCode *status) {
@@ -1347,7 +1347,7 @@ int32_t RegexCImpl::appendReplacement(RegularExpression *regexp,
// A series of appendReplacements, appendTail need to correctly preflight
// the buffer size when an overflow happens somewhere in the middle.
UBool pendingBufferOverflow = false;
- if (*status == U_BUFFER_OVERFLOW_ERROR && destCapacity != NULL && *destCapacity == 0) {
+ if (*status == U_BUFFER_OVERFLOW_ERROR && destCapacity != nullptr && *destCapacity == 0) {
pendingBufferOverflow = true;
*status = U_ZERO_ERROR;
}
@@ -1358,9 +1358,9 @@ int32_t RegexCImpl::appendReplacement(RegularExpression *regexp,
if (validateRE(regexp, true, status) == false) {
return 0;
}
- if (replacementText == NULL || replacementLength < -1 ||
- destCapacity == NULL || destBuf == NULL ||
- (*destBuf == NULL && *destCapacity > 0) ||
+ if (replacementText == nullptr || replacementLength < -1 ||
+ destCapacity == nullptr || destBuf == nullptr ||
+ (*destBuf == nullptr && *destCapacity > 0) ||
*destCapacity < 0) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
@@ -1372,7 +1372,7 @@ int32_t RegexCImpl::appendReplacement(RegularExpression *regexp,
return 0;
}
- UChar *dest = *destBuf;
+ char16_t *dest = *destBuf;
int32_t capacity = *destCapacity;
int32_t destIdx = 0;
int32_t i;
@@ -1385,7 +1385,7 @@ int32_t RegexCImpl::appendReplacement(RegularExpression *regexp,
}
// Copy input string from the end of previous match to start of current match
- if (regexp->fText != NULL) {
+ if (regexp->fText != nullptr) {
int32_t matchStart;
int32_t lastMatchEnd;
if (UTEXT_USES_U16(m->fInputText)) {
@@ -1394,9 +1394,9 @@ int32_t RegexCImpl::appendReplacement(RegularExpression *regexp,
} else {
// !!!: Would like a better way to do this!
UErrorCode tempStatus = U_ZERO_ERROR;
- lastMatchEnd = utext_extract(m->fInputText, 0, m->fLastMatchEnd, NULL, 0, &tempStatus);
+ lastMatchEnd = utext_extract(m->fInputText, 0, m->fLastMatchEnd, nullptr, 0, &tempStatus);
tempStatus = U_ZERO_ERROR;
- matchStart = lastMatchEnd + utext_extract(m->fInputText, m->fLastMatchEnd, m->fMatchStart, NULL, 0, &tempStatus);
+ matchStart = lastMatchEnd + utext_extract(m->fInputText, m->fLastMatchEnd, m->fMatchStart, nullptr, 0, &tempStatus);
}
for (i=lastMatchEnd; i<matchStart; i++) {
appendToBuf(regexp->fText[i], &destIdx, dest, capacity);
@@ -1404,7 +1404,7 @@ int32_t RegexCImpl::appendReplacement(RegularExpression *regexp,
} else {
UErrorCode possibleOverflowError = U_ZERO_ERROR; // ignore
destIdx += utext_extract(m->fInputText, m->fLastMatchEnd, m->fMatchStart,
- dest==NULL?NULL:&dest[destIdx], REMAINING_CAPACITY(destIdx, capacity),
+ dest==nullptr?nullptr:&dest[destIdx], REMAINING_CAPACITY(destIdx, capacity),
&possibleOverflowError);
}
U_ASSERT(destIdx >= 0);
@@ -1412,7 +1412,7 @@ int32_t RegexCImpl::appendReplacement(RegularExpression *regexp,
// scan the replacement text, looking for substitutions ($n) and \escapes.
int32_t replIdx = 0;
while (replIdx < replacementLength && U_SUCCESS(*status)) {
- UChar c = replacementText[replIdx];
+ char16_t c = replacementText[replIdx];
replIdx++;
if (c != DOLLARSIGN && c != BACKSLASH) {
// Common case, no substitution, no escaping,
@@ -1442,7 +1442,7 @@ int32_t RegexCImpl::appendReplacement(RegularExpression *regexp,
if (escapedChar != (UChar32)0xFFFFFFFF) {
if (escapedChar <= 0xffff) {
- appendToBuf((UChar)escapedChar, &destIdx, dest, capacity);
+ appendToBuf((char16_t)escapedChar, &destIdx, dest, capacity);
} else {
appendToBuf(U16_LEAD(escapedChar), &destIdx, dest, capacity);
appendToBuf(U16_TRAIL(escapedChar), &destIdx, dest, capacity);
@@ -1528,7 +1528,7 @@ int32_t RegexCImpl::appendReplacement(RegularExpression *regexp,
// Finally, append the capture group data to the destination.
if (U_SUCCESS(*status)) {
destIdx += uregex_group((URegularExpression*)regexp, groupNum,
- dest==NULL?NULL:&dest[destIdx], REMAINING_CAPACITY(destIdx, capacity), status);
+ dest==nullptr?nullptr:&dest[destIdx], REMAINING_CAPACITY(destIdx, capacity), status);
if (*status == U_BUFFER_OVERFLOW_ERROR) {
// Ignore buffer overflow when extracting the group. We need to
// continue on to get full size of the untruncated result. We will
@@ -1585,9 +1585,9 @@ int32_t RegexCImpl::appendReplacement(RegularExpression *regexp,
//
U_CAPI int32_t U_EXPORT2
uregex_appendReplacement(URegularExpression *regexp2,
- const UChar *replacementText,
+ const char16_t *replacementText,
int32_t replacementLength,
- UChar **destBuf,
+ char16_t **destBuf,
int32_t *destCapacity,
UErrorCode *status) {
@@ -1615,7 +1615,7 @@ uregex_appendReplacementUText(URegularExpression *regexp2,
//
//------------------------------------------------------------------------------
int32_t RegexCImpl::appendTail(RegularExpression *regexp,
- UChar **destBuf,
+ char16_t **destBuf,
int32_t *destCapacity,
UErrorCode *status)
{
@@ -1624,7 +1624,7 @@ int32_t RegexCImpl::appendTail(RegularExpression *regexp,
// A series of appendReplacements, appendTail need to correctly preflight
// the buffer size when an overflow happens somewhere in the middle.
UBool pendingBufferOverflow = false;
- if (*status == U_BUFFER_OVERFLOW_ERROR && destCapacity != NULL && *destCapacity == 0) {
+ if (*status == U_BUFFER_OVERFLOW_ERROR && destCapacity != nullptr && *destCapacity == 0) {
pendingBufferOverflow = true;
*status = U_ZERO_ERROR;
}
@@ -1633,8 +1633,8 @@ int32_t RegexCImpl::appendTail(RegularExpression *regexp,
return 0;
}
- if (destCapacity == NULL || destBuf == NULL ||
- (*destBuf == NULL && *destCapacity > 0) ||
+ if (destCapacity == nullptr || destBuf == nullptr ||
+ (*destBuf == nullptr && *destCapacity > 0) ||
*destCapacity < 0)
{
*status = U_ILLEGAL_ARGUMENT_ERROR;
@@ -1645,9 +1645,9 @@ int32_t RegexCImpl::appendTail(RegularExpression *regexp,
int32_t destIdx = 0;
int32_t destCap = *destCapacity;
- UChar *dest = *destBuf;
+ char16_t *dest = *destBuf;
- if (regexp->fText != NULL) {
+ if (regexp->fText != nullptr) {
int32_t srcIdx;
int64_t nativeIdx = (m->fMatch ? m->fMatchEnd : m->fLastMatchEnd);
if (nativeIdx == -1) {
@@ -1656,7 +1656,7 @@ int32_t RegexCImpl::appendTail(RegularExpression *regexp,
srcIdx = (int32_t)nativeIdx;
} else {
UErrorCode newStatus = U_ZERO_ERROR;
- srcIdx = utext_extract(m->fInputText, 0, nativeIdx, NULL, 0, &newStatus);
+ srcIdx = utext_extract(m->fInputText, 0, nativeIdx, nullptr, 0, &newStatus);
}
for (;;) {
@@ -1665,7 +1665,7 @@ int32_t RegexCImpl::appendTail(RegularExpression *regexp,
if (srcIdx == regexp->fTextLength) {
break;
}
- UChar c = regexp->fText[srcIdx];
+ char16_t c = regexp->fText[srcIdx];
if (c == 0 && regexp->fTextLength == -1) {
regexp->fTextLength = srcIdx;
break;
@@ -1723,7 +1723,7 @@ int32_t RegexCImpl::appendTail(RegularExpression *regexp,
if (destIdx < destCap) {
*destBuf += destIdx;
*destCapacity -= destIdx;
- } else if (*destBuf != NULL) {
+ } else if (*destBuf != nullptr) {
*destBuf += destCap;
*destCapacity = 0;
}
@@ -1741,7 +1741,7 @@ int32_t RegexCImpl::appendTail(RegularExpression *regexp,
//
U_CAPI int32_t U_EXPORT2
uregex_appendTail(URegularExpression *regexp2,
- UChar **destBuf,
+ char16_t **destBuf,
int32_t *destCapacity,
UErrorCode *status) {
RegularExpression *regexp = (RegularExpression*)regexp2;
@@ -1770,16 +1770,16 @@ uregex_appendTailUText(URegularExpression *regexp2,
//
//------------------------------------------------------------------------------
#if 0
-static void copyString(UChar *destBuffer, // Destination buffer.
+static void copyString(char16_t *destBuffer, // Destination buffer.
int32_t destCapacity, // Total capacity of dest buffer
int32_t *destIndex, // Index into dest buffer. Updated on return.
// Update not clipped to destCapacity.
- const UChar *srcPtr, // Pointer to source string
+ const char16_t *srcPtr, // Pointer to source string
int32_t srcLen) // Source string len.
{
int32_t si;
int32_t di = *destIndex;
- UChar c;
+ char16_t c;
for (si=0; si<srcLen; si++) {
c = srcPtr[si];
@@ -1805,10 +1805,10 @@ static void copyString(UChar *destBuffer, // Destination buffer.
//
//------------------------------------------------------------------------------
int32_t RegexCImpl::split(RegularExpression *regexp,
- UChar *destBuf,
+ char16_t *destBuf,
int32_t destCapacity,
int32_t *requiredCapacity,
- UChar *destFields[],
+ char16_t *destFields[],
int32_t destFieldsCapacity,
UErrorCode *status) {
//
@@ -1845,9 +1845,9 @@ int32_t RegexCImpl::split(RegularExpression *regexp,
destIdx = (int32_t)(destFields[i] - destFields[0]);
}
- destFields[i] = &destBuf[destIdx];
+ destFields[i] = (destBuf == nullptr) ? nullptr : &destBuf[destIdx];
destIdx += 1 + utext_extract(inputText, nextOutputStringStart, inputLen,
- &destBuf[destIdx], REMAINING_CAPACITY(destIdx, destCapacity), status);
+ destFields[i], REMAINING_CAPACITY(destIdx, destCapacity), status);
}
break;
}
@@ -1855,10 +1855,10 @@ int32_t RegexCImpl::split(RegularExpression *regexp,
if (regexp->fMatcher->find()) {
// We found another delimiter. Move everything from where we started looking
// up until the start of the delimiter into the next output string.
- destFields[i] = &destBuf[destIdx];
+ destFields[i] = (destBuf == nullptr) ? nullptr : &destBuf[destIdx];
destIdx += 1 + utext_extract(inputText, nextOutputStringStart, regexp->fMatcher->fMatchStart,
- &destBuf[destIdx], REMAINING_CAPACITY(destIdx, destCapacity), &tStatus);
+ destFields[i], REMAINING_CAPACITY(destIdx, destCapacity), &tStatus);
if (tStatus == U_BUFFER_OVERFLOW_ERROR) {
tStatus = U_ZERO_ERROR;
} else {
@@ -1914,9 +1914,9 @@ int32_t RegexCImpl::split(RegularExpression *regexp,
{
// We ran off the end of the input while looking for the next delimiter.
// All the remaining text goes into the current output string.
- destFields[i] = &destBuf[destIdx];
+ destFields[i] = (destBuf == nullptr) ? nullptr : &destBuf[destIdx];
destIdx += 1 + utext_extract(inputText, nextOutputStringStart, inputLen,
- &destBuf[destIdx], REMAINING_CAPACITY(destIdx, destCapacity), status);
+ destFields[i], REMAINING_CAPACITY(destIdx, destCapacity), status);
break;
}
}
@@ -1924,10 +1924,10 @@ int32_t RegexCImpl::split(RegularExpression *regexp,
// Zero out any unused portion of the destFields array
int j;
for (j=i+1; j<destFieldsCapacity; j++) {
- destFields[j] = NULL;
+ destFields[j] = nullptr;
}
- if (requiredCapacity != NULL) {
+ if (requiredCapacity != nullptr) {
*requiredCapacity = destIdx;
}
if (destIdx > destCapacity) {
@@ -1941,19 +1941,19 @@ int32_t RegexCImpl::split(RegularExpression *regexp,
//
U_CAPI int32_t U_EXPORT2
uregex_split(URegularExpression *regexp2,
- UChar *destBuf,
+ char16_t *destBuf,
int32_t destCapacity,
int32_t *requiredCapacity,
- UChar *destFields[],
+ char16_t *destFields[],
int32_t destFieldsCapacity,
UErrorCode *status) {
RegularExpression *regexp = (RegularExpression*)regexp2;
if (validateRE(regexp, true, status) == false) {
return 0;
}
- if ((destBuf == NULL && destCapacity > 0) ||
+ if ((destBuf == nullptr && destCapacity > 0) ||
destCapacity < 0 ||
- destFields == NULL ||
+ destFields == nullptr ||
destFieldsCapacity < 1 ) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/uregexc.cpp b/Build/source/libs/icu/icu-src/source/i18n/uregexc.cpp
index c7d3bcd2c74..8bdac191147 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/uregexc.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/uregexc.cpp
@@ -29,11 +29,11 @@ uregex_openC( const char *pattern,
UParseError *pe,
UErrorCode *status) {
if (U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
- if (pattern == NULL) {
+ if (pattern == nullptr) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
UnicodeString patString(pattern);
diff --git a/Build/source/libs/icu/icu-src/source/i18n/usearch.cpp b/Build/source/libs/icu/icu-src/source/i18n/usearch.cpp
index 0fecd709e74..6d9b60cef72 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/usearch.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/usearch.cpp
@@ -74,7 +74,7 @@ inline uint32_t getMask(UCollationStrength strength)
U_CDECL_BEGIN
static UBool U_CALLCONV
-usearch_cleanup(void) {
+usearch_cleanup() {
g_nfcImpl = nullptr;
return true;
}
@@ -106,10 +106,10 @@ inline void initializeFCD(UErrorCode *status)
* @return fcd value
*/
static
-uint16_t getFCD(const UChar *str, int32_t *offset,
+uint16_t getFCD(const char16_t *str, int32_t *offset,
int32_t strlength)
{
- const UChar *temp = str + *offset;
+ const char16_t *temp = str + *offset;
uint16_t result = g_nfcImpl->nextFCD16(temp, str + strlength);
*offset = (int32_t)(temp - str);
return result;
@@ -403,7 +403,7 @@ inline void initializePattern(UStringSearch *strsrch, UErrorCode *status)
if (U_FAILURE(*status)) { return; }
UPattern *pattern = &(strsrch->pattern);
- const UChar *patterntext = pattern->text;
+ const char16_t *patterntext = pattern->text;
int32_t length = pattern->textLength;
int32_t index = 0;
@@ -538,9 +538,9 @@ inline UBool checkIdentical(const UStringSearch *strsrch, int32_t start, int32_t
// constructors and destructor -------------------------------------------
-U_CAPI UStringSearch * U_EXPORT2 usearch_open(const UChar *pattern,
+U_CAPI UStringSearch * U_EXPORT2 usearch_open(const char16_t *pattern,
int32_t patternlength,
- const UChar *text,
+ const char16_t *text,
int32_t textlength,
const char *locale,
UBreakIterator *breakiter,
@@ -579,9 +579,9 @@ U_CAPI UStringSearch * U_EXPORT2 usearch_open(const UChar *pattern,
}
U_CAPI UStringSearch * U_EXPORT2 usearch_openFromCollator(
- const UChar *pattern,
+ const char16_t *pattern,
int32_t patternlength,
- const UChar *text,
+ const char16_t *text,
int32_t textlength,
const UCollator *collator,
UBreakIterator *breakiter,
@@ -819,11 +819,9 @@ U_CAPI USearchAttributeValue U_EXPORT2 usearch_getAttribute(
if (strsrch) {
switch (attribute) {
case USEARCH_OVERLAP :
- return (strsrch->search->isOverlap == true ? USEARCH_ON :
- USEARCH_OFF);
+ return (strsrch->search->isOverlap ? USEARCH_ON : USEARCH_OFF);
case USEARCH_CANONICAL_MATCH :
- return (strsrch->search->isCanonicalMatch == true ? USEARCH_ON :
- USEARCH_OFF);
+ return (strsrch->search->isCanonicalMatch ? USEARCH_ON : USEARCH_OFF);
case USEARCH_ELEMENT_COMPARISON :
{
int16_t value = strsrch->search->elementComparisonType;
@@ -851,7 +849,7 @@ U_CAPI int32_t U_EXPORT2 usearch_getMatchedStart(
U_CAPI int32_t U_EXPORT2 usearch_getMatchedText(const UStringSearch *strsrch,
- UChar *result,
+ char16_t *result,
int32_t resultCapacity,
UErrorCode *status)
{
@@ -876,7 +874,7 @@ U_CAPI int32_t U_EXPORT2 usearch_getMatchedText(const UStringSearch *strsrch,
}
if (copylength > 0) {
uprv_memcpy(result, strsrch->search->text + copyindex,
- copylength * sizeof(UChar));
+ copylength * sizeof(char16_t));
}
return u_terminateUChars(result, resultCapacity,
strsrch->search->matchedLength, status);
@@ -918,7 +916,7 @@ usearch_getBreakIterator(const UStringSearch *strsrch)
#endif
U_CAPI void U_EXPORT2 usearch_setText( UStringSearch *strsrch,
- const UChar *text,
+ const char16_t *text,
int32_t textlength,
UErrorCode *status)
{
@@ -950,7 +948,7 @@ U_CAPI void U_EXPORT2 usearch_setText( UStringSearch *strsrch,
}
}
-U_CAPI const UChar * U_EXPORT2 usearch_getText(const UStringSearch *strsrch,
+U_CAPI const char16_t * U_EXPORT2 usearch_getText(const UStringSearch *strsrch,
int32_t *length)
{
if (strsrch) {
@@ -1024,7 +1022,7 @@ U_CAPI UCollator * U_EXPORT2 usearch_getCollator(const UStringSearch *strsrch)
}
U_CAPI void U_EXPORT2 usearch_setPattern( UStringSearch *strsrch,
- const UChar *pattern,
+ const char16_t *pattern,
int32_t patternlength,
UErrorCode *status)
{
@@ -1047,7 +1045,7 @@ U_CAPI void U_EXPORT2 usearch_setPattern( UStringSearch *strsrch,
}
}
-U_CAPI const UChar* U_EXPORT2
+U_CAPI const char16_t* U_EXPORT2
usearch_getPattern(const UStringSearch *strsrch,
int32_t *length)
{
@@ -1249,7 +1247,7 @@ U_CAPI int32_t U_EXPORT2 usearch_previous(UStringSearch *strsrch,
}
int32_t matchedindex = search->matchedIndex;
- if (search->isForwardSearching == true) {
+ if (search->isForwardSearching) {
// switching direction.
// if matchedIndex == USEARCH_DONE, it means that either a
// setOffset has been called or that next ran off the text
@@ -1413,11 +1411,11 @@ CEIBuffer::CEIBuffer(UStringSearch *ss, UErrorCode *status) {
strSearch = ss;
bufSize = ss->pattern.pcesLength + CEBUFFER_EXTRA;
if (ss->search->elementComparisonType != 0) {
- const UChar * patText = ss->pattern.text;
+ const char16_t * patText = ss->pattern.text;
if (patText) {
- const UChar * patTextLimit = patText + ss->pattern.textLength;
+ const char16_t * patTextLimit = patText + ss->pattern.textLength;
while ( patText < patTextLimit ) {
- UChar c = *patText++;
+ char16_t c = *patText++;
if (MIGHT_BE_JAMO_L(c)) {
bufSize += MAX_TARGET_IGNORABLES_PER_PAT_JAMO_L;
} else {
@@ -1559,7 +1557,7 @@ static int32_t nextBoundaryAfter(UStringSearch *strsrch, int32_t startIndex, UEr
return startIndex;
}
#if 0
- const UChar *text = strsrch->search->text;
+ const char16_t *text = strsrch->search->text;
int32_t textLen = strsrch->search->textLength;
U_ASSERT(startIndex>=0);
@@ -1619,7 +1617,7 @@ static UBool isBreakBoundary(UStringSearch *strsrch, int32_t index, UErrorCode &
return true;
}
#if 0
- const UChar *text = strsrch->search->text;
+ const char16_t *text = strsrch->search->text;
int32_t textLen = strsrch->search->textLength;
U_ASSERT(index>=0);
diff --git a/Build/source/libs/icu/icu-src/source/i18n/uspoof.cpp b/Build/source/libs/icu/icu-src/source/i18n/uspoof.cpp
index f894dc44cac..47dac8418e4 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/uspoof.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/uspoof.cpp
@@ -15,6 +15,7 @@
*
* Unicode Spoof Detection
*/
+#include "unicode/ubidi.h"
#include "unicode/utypes.h"
#include "unicode/normalizer2.h"
#include "unicode/uspoof.h"
@@ -38,20 +39,20 @@ U_NAMESPACE_USE
//
// Static Objects used by the spoof impl, their thread safe initialization and their cleanup.
//
-static UnicodeSet *gInclusionSet = NULL;
-static UnicodeSet *gRecommendedSet = NULL;
-static const Normalizer2 *gNfdNormalizer = NULL;
+static UnicodeSet *gInclusionSet = nullptr;
+static UnicodeSet *gRecommendedSet = nullptr;
+static const Normalizer2 *gNfdNormalizer = nullptr;
static UInitOnce gSpoofInitStaticsOnce {};
namespace {
UBool U_CALLCONV
-uspoof_cleanup(void) {
+uspoof_cleanup() {
delete gInclusionSet;
- gInclusionSet = NULL;
+ gInclusionSet = nullptr;
delete gRecommendedSet;
- gRecommendedSet = NULL;
- gNfdNormalizer = NULL;
+ gRecommendedSet = nullptr;
+ gNfdNormalizer = nullptr;
gSpoofInitStaticsOnce.reset();
return true;
}
@@ -61,7 +62,7 @@ void U_CALLCONV initializeStatics(UErrorCode &status) {
u"['\\-.\\:\\u00B7\\u0375\\u058A\\u05F3\\u05F4\\u06FD\\u06FE\\u0F0B\\u2010"
u"\\u2019\\u2027\\u30A0\\u30FB]";
gInclusionSet = new UnicodeSet(UnicodeString(inclusionPat), status);
- if (gInclusionSet == NULL) {
+ if (gInclusionSet == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -141,11 +142,11 @@ void U_CALLCONV initializeStatics(UErrorCode &status) {
u"\\U0001DF00-\\U0001DF1E\\U0001DF25-\\U0001DF2A\\U0001E08F\\U0001E7E0-"
u"\\U0001E7E6\\U0001E7E8-\\U0001E7EB\\U0001E7ED\\U0001E7EE\\U0001E7F0-"
u"\\U0001E7FE\\U00020000-\\U0002A6DF\\U0002A700-\\U0002B739\\U0002B740-"
- u"\\U0002B81D\\U0002B820-\\U0002CEA1\\U0002CEB0-\\U0002EBE0\\U00030000-"
- u"\\U0003134A\\U00031350-\\U000323AF]";
+ u"\\U0002B81D\\U0002B820-\\U0002CEA1\\U0002CEB0-\\U0002EBE0\\U0002EBF0-"
+ u"\\U0002EE5D\\U00030000-\\U0003134A\\U00031350-\\U000323AF]";
gRecommendedSet = new UnicodeSet(UnicodeString(recommendedPat), status);
- if (gRecommendedSet == NULL) {
+ if (gRecommendedSet == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
delete gInclusionSet;
return;
@@ -165,16 +166,16 @@ U_CAPI USpoofChecker * U_EXPORT2
uspoof_open(UErrorCode *status) {
umtx_initOnce(gSpoofInitStaticsOnce, &initializeStatics, *status);
if (U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
SpoofImpl *si = new SpoofImpl(*status);
- if (si == NULL) {
+ if (si == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
if (U_FAILURE(*status)) {
delete si;
- return NULL;
+ return nullptr;
}
return si->asUSpoofChecker();
}
@@ -184,44 +185,44 @@ U_CAPI USpoofChecker * U_EXPORT2
uspoof_openFromSerialized(const void *data, int32_t length, int32_t *pActualLength,
UErrorCode *status) {
if (U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
- if (data == NULL) {
+ if (data == nullptr) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
umtx_initOnce(gSpoofInitStaticsOnce, &initializeStatics, *status);
if (U_FAILURE(*status))
{
- return NULL;
+ return nullptr;
}
SpoofData *sd = new SpoofData(data, length, *status);
- if (sd == NULL) {
+ if (sd == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
if (U_FAILURE(*status)) {
delete sd;
- return NULL;
+ return nullptr;
}
SpoofImpl *si = new SpoofImpl(sd, *status);
- if (si == NULL) {
+ if (si == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
delete sd; // explicit delete as the destructor for si won't be called.
- return NULL;
+ return nullptr;
}
if (U_FAILURE(*status)) {
delete si; // no delete for sd, as the si destructor will delete it.
- return NULL;
+ return nullptr;
}
- if (pActualLength != NULL) {
+ if (pActualLength != nullptr) {
*pActualLength = sd->size();
}
return si->asUSpoofChecker();
@@ -231,17 +232,17 @@ uspoof_openFromSerialized(const void *data, int32_t length, int32_t *pActualLeng
U_CAPI USpoofChecker * U_EXPORT2
uspoof_clone(const USpoofChecker *sc, UErrorCode *status) {
const SpoofImpl *src = SpoofImpl::validateThis(sc, *status);
- if (src == NULL) {
- return NULL;
+ if (src == nullptr) {
+ return nullptr;
}
SpoofImpl *result = new SpoofImpl(*src, *status); // copy constructor
- if (result == NULL) {
+ if (result == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
if (U_FAILURE(*status)) {
delete result;
- result = NULL;
+ result = nullptr;
}
return result->asUSpoofChecker();
}
@@ -258,7 +259,7 @@ uspoof_close(USpoofChecker *sc) {
U_CAPI void U_EXPORT2
uspoof_setChecks(USpoofChecker *sc, int32_t checks, UErrorCode *status) {
SpoofImpl *This = SpoofImpl::validateThis(sc, *status);
- if (This == NULL) {
+ if (This == nullptr) {
return;
}
@@ -276,7 +277,7 @@ uspoof_setChecks(USpoofChecker *sc, int32_t checks, UErrorCode *status) {
U_CAPI int32_t U_EXPORT2
uspoof_getChecks(const USpoofChecker *sc, UErrorCode *status) {
const SpoofImpl *This = SpoofImpl::validateThis(sc, *status);
- if (This == NULL) {
+ if (This == nullptr) {
return 0;
}
return This->fChecks;
@@ -286,7 +287,7 @@ U_CAPI void U_EXPORT2
uspoof_setRestrictionLevel(USpoofChecker *sc, URestrictionLevel restrictionLevel) {
UErrorCode status = U_ZERO_ERROR;
SpoofImpl *This = SpoofImpl::validateThis(sc, status);
- if (This != NULL) {
+ if (This != nullptr) {
This->fRestrictionLevel = restrictionLevel;
This->fChecks |= USPOOF_RESTRICTION_LEVEL;
}
@@ -296,7 +297,7 @@ U_CAPI URestrictionLevel U_EXPORT2
uspoof_getRestrictionLevel(const USpoofChecker *sc) {
UErrorCode status = U_ZERO_ERROR;
const SpoofImpl *This = SpoofImpl::validateThis(sc, status);
- if (This == NULL) {
+ if (This == nullptr) {
return USPOOF_UNRESTRICTIVE;
}
return This->fRestrictionLevel;
@@ -305,7 +306,7 @@ uspoof_getRestrictionLevel(const USpoofChecker *sc) {
U_CAPI void U_EXPORT2
uspoof_setAllowedLocales(USpoofChecker *sc, const char *localesList, UErrorCode *status) {
SpoofImpl *This = SpoofImpl::validateThis(sc, *status);
- if (This == NULL) {
+ if (This == nullptr) {
return;
}
This->setAllowedLocales(localesList, *status);
@@ -314,8 +315,8 @@ uspoof_setAllowedLocales(USpoofChecker *sc, const char *localesList, UErrorCode
U_CAPI const char * U_EXPORT2
uspoof_getAllowedLocales(USpoofChecker *sc, UErrorCode *status) {
SpoofImpl *This = SpoofImpl::validateThis(sc, *status);
- if (This == NULL) {
- return NULL;
+ if (This == nullptr) {
+ return nullptr;
}
return This->getAllowedLocales(*status);
}
@@ -330,8 +331,8 @@ uspoof_getAllowedChars(const USpoofChecker *sc, UErrorCode *status) {
U_CAPI const UnicodeSet * U_EXPORT2
uspoof_getAllowedUnicodeSet(const USpoofChecker *sc, UErrorCode *status) {
const SpoofImpl *This = SpoofImpl::validateThis(sc, *status);
- if (This == NULL) {
- return NULL;
+ if (This == nullptr) {
+ return nullptr;
}
return This->fAllowedCharsSet;
}
@@ -347,7 +348,7 @@ uspoof_setAllowedChars(USpoofChecker *sc, const USet *chars, UErrorCode *status)
U_CAPI void U_EXPORT2
uspoof_setAllowedUnicodeSet(USpoofChecker *sc, const UnicodeSet *chars, UErrorCode *status) {
SpoofImpl *This = SpoofImpl::validateThis(sc, *status);
- if (This == NULL) {
+ if (This == nullptr) {
return;
}
if (chars->isBogus()) {
@@ -355,7 +356,7 @@ uspoof_setAllowedUnicodeSet(USpoofChecker *sc, const UnicodeSet *chars, UErrorCo
return;
}
UnicodeSet *clonedSet = chars->clone();
- if (clonedSet == NULL || clonedSet->isBogus()) {
+ if (clonedSet == nullptr || clonedSet->isBogus()) {
*status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -368,28 +369,28 @@ uspoof_setAllowedUnicodeSet(USpoofChecker *sc, const UnicodeSet *chars, UErrorCo
U_CAPI int32_t U_EXPORT2
uspoof_check(const USpoofChecker *sc,
- const UChar *id, int32_t length,
+ const char16_t *id, int32_t length,
int32_t *position,
UErrorCode *status) {
// Backwards compatibility:
- if (position != NULL) {
+ if (position != nullptr) {
*position = 0;
}
// Delegate to uspoof_check2
- return uspoof_check2(sc, id, length, NULL, status);
+ return uspoof_check2(sc, id, length, nullptr, status);
}
U_CAPI int32_t U_EXPORT2
uspoof_check2(const USpoofChecker *sc,
- const UChar* id, int32_t length,
+ const char16_t* id, int32_t length,
USpoofCheckResult* checkResult,
UErrorCode *status) {
const SpoofImpl *This = SpoofImpl::validateThis(sc, *status);
- if (This == NULL) {
+ if (This == nullptr) {
return 0;
}
if (length < -1) {
@@ -409,12 +410,12 @@ uspoof_checkUTF8(const USpoofChecker *sc,
UErrorCode *status) {
// Backwards compatibility:
- if (position != NULL) {
+ if (position != nullptr) {
*position = 0;
}
// Delegate to uspoof_check2
- return uspoof_check2UTF8(sc, id, length, NULL, status);
+ return uspoof_check2UTF8(sc, id, length, nullptr, status);
}
@@ -435,8 +436,8 @@ uspoof_check2UTF8(const USpoofChecker *sc,
U_CAPI int32_t U_EXPORT2
uspoof_areConfusable(const USpoofChecker *sc,
- const UChar *id1, int32_t length1,
- const UChar *id2, int32_t length2,
+ const char16_t *id1, int32_t length1,
+ const char16_t *id2, int32_t length2,
UErrorCode *status) {
SpoofImpl::validateThis(sc, *status);
if (U_FAILURE(*status)) {
@@ -538,6 +539,90 @@ uspoof_areConfusableUnicodeString(const USpoofChecker *sc,
return result;
}
+U_CAPI uint32_t U_EXPORT2 uspoof_areBidiConfusable(const USpoofChecker *sc, UBiDiDirection direction,
+ const char16_t *id1, int32_t length1,
+ const char16_t *id2, int32_t length2,
+ UErrorCode *status) {
+ UnicodeString id1Str((length1 == -1), id1, length1); // Aliasing constructor
+ UnicodeString id2Str((length2 == -1), id2, length2); // Aliasing constructor
+ if (id1Str.isBogus() || id2Str.isBogus()) {
+ *status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
+ return uspoof_areBidiConfusableUnicodeString(sc, direction, id1Str, id2Str, status);
+}
+
+U_CAPI uint32_t U_EXPORT2 uspoof_areBidiConfusableUTF8(const USpoofChecker *sc, UBiDiDirection direction,
+ const char *id1, int32_t length1, const char *id2,
+ int32_t length2, UErrorCode *status) {
+ if (length1 < -1 || length2 < -1) {
+ *status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
+ UnicodeString id1Str = UnicodeString::fromUTF8(
+ StringPiece(id1, length1 >= 0 ? length1 : static_cast<int32_t>(uprv_strlen(id1))));
+ UnicodeString id2Str = UnicodeString::fromUTF8(
+ StringPiece(id2, length2 >= 0 ? length2 : static_cast<int32_t>(uprv_strlen(id2))));
+ return uspoof_areBidiConfusableUnicodeString(sc, direction, id1Str, id2Str, status);
+}
+
+U_CAPI uint32_t U_EXPORT2 uspoof_areBidiConfusableUnicodeString(const USpoofChecker *sc,
+ UBiDiDirection direction,
+ const icu::UnicodeString &id1,
+ const icu::UnicodeString &id2,
+ UErrorCode *status) {
+ const SpoofImpl *This = SpoofImpl::validateThis(sc, *status);
+ if (U_FAILURE(*status)) {
+ return 0;
+ }
+ //
+ // See section 4 of UTS 39 for the algorithm for checking whether two strings are confusable,
+ // and for definitions of the types (single, whole, mixed-script) of confusables.
+
+ // We only care about a few of the check flags. Ignore the others.
+ // If no tests relevant to this function have been specified, return an error.
+ // TODO: is this really the right thing to do? It's probably an error on the caller's part,
+ // but logically we would just return 0 (no error).
+ if ((This->fChecks & USPOOF_CONFUSABLE) == 0) {
+ *status = U_INVALID_STATE_ERROR;
+ return 0;
+ }
+
+ // Compute the skeletons and check for confusability.
+ UnicodeString id1Skeleton;
+ uspoof_getBidiSkeletonUnicodeString(sc, direction, id1, id1Skeleton, status);
+ UnicodeString id2Skeleton;
+ uspoof_getBidiSkeletonUnicodeString(sc, direction, id2, id2Skeleton, status);
+ if (U_FAILURE(*status)) {
+ return 0;
+ }
+ if (id1Skeleton != id2Skeleton) {
+ return 0;
+ }
+
+ // If we get here, the strings are confusable. Now we just need to set the flags for the appropriate
+ // classes of confusables according to UTS 39 section 4. Start by computing the resolved script sets
+ // of id1 and id2.
+ ScriptSet id1RSS;
+ This->getResolvedScriptSet(id1, id1RSS, *status);
+ ScriptSet id2RSS;
+ This->getResolvedScriptSet(id2, id2RSS, *status);
+
+ // Turn on all applicable flags
+ uint32_t result = 0;
+ if (id1RSS.intersects(id2RSS)) {
+ result |= USPOOF_SINGLE_SCRIPT_CONFUSABLE;
+ } else {
+ result |= USPOOF_MIXED_SCRIPT_CONFUSABLE;
+ if (!id1RSS.isEmpty() && !id2RSS.isEmpty()) {
+ result |= USPOOF_WHOLE_SCRIPT_CONFUSABLE;
+ }
+ }
+
+ // Turn off flags that the user doesn't want
+ return result & This->fChecks;
+}
+
U_CAPI int32_t U_EXPORT2
uspoof_checkUnicodeString(const USpoofChecker *sc,
@@ -546,19 +631,19 @@ uspoof_checkUnicodeString(const USpoofChecker *sc,
UErrorCode *status) {
// Backwards compatibility:
- if (position != NULL) {
+ if (position != nullptr) {
*position = 0;
}
// Delegate to uspoof_check2
- return uspoof_check2UnicodeString(sc, id, NULL, status);
+ return uspoof_check2UnicodeString(sc, id, nullptr, status);
}
namespace {
int32_t checkImpl(const SpoofImpl* This, const UnicodeString& id, CheckResult* checkResult, UErrorCode* status) {
- U_ASSERT(This != NULL);
- U_ASSERT(checkResult != NULL);
+ U_ASSERT(This != nullptr);
+ U_ASSERT(checkResult != nullptr);
checkResult->clear();
int32_t result = 0;
@@ -656,13 +741,13 @@ uspoof_check2UnicodeString(const USpoofChecker *sc,
USpoofCheckResult* checkResult,
UErrorCode *status) {
const SpoofImpl *This = SpoofImpl::validateThis(sc, *status);
- if (This == NULL) {
+ if (This == nullptr) {
return false;
}
- if (checkResult != NULL) {
+ if (checkResult != nullptr) {
CheckResult* ThisCheckResult = CheckResult::validateThis(checkResult, *status);
- if (ThisCheckResult == NULL) {
+ if (ThisCheckResult == nullptr) {
return false;
}
return checkImpl(This, id, ThisCheckResult, status);
@@ -677,15 +762,15 @@ uspoof_check2UnicodeString(const USpoofChecker *sc,
U_CAPI int32_t U_EXPORT2
uspoof_getSkeleton(const USpoofChecker *sc,
uint32_t type,
- const UChar *id, int32_t length,
- UChar *dest, int32_t destCapacity,
+ const char16_t *id, int32_t length,
+ char16_t *dest, int32_t destCapacity,
UErrorCode *status) {
SpoofImpl::validateThis(sc, *status);
if (U_FAILURE(*status)) {
return 0;
}
- if (length<-1 || destCapacity<0 || (destCapacity==0 && dest!=NULL)) {
+ if (length<-1 || destCapacity<0 || (destCapacity==0 && dest!=nullptr)) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -697,6 +782,60 @@ uspoof_getSkeleton(const USpoofChecker *sc,
return destStr.length();
}
+U_CAPI int32_t U_EXPORT2 uspoof_getBidiSkeleton(const USpoofChecker *sc, UBiDiDirection direction,
+ const UChar *id, int32_t length, UChar *dest,
+ int32_t destCapacity, UErrorCode *status) {
+ UnicodeString idStr((length == -1), id, length); // Aliasing constructor
+ if (idStr.isBogus()) {
+ *status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
+ UnicodeString destStr;
+ uspoof_getBidiSkeletonUnicodeString(sc, direction, idStr, destStr, status);
+ return destStr.extract(dest, destCapacity, *status);
+}
+
+
+
+U_I18N_API UnicodeString &U_EXPORT2 uspoof_getBidiSkeletonUnicodeString(const USpoofChecker *sc,
+ UBiDiDirection direction,
+ const UnicodeString &id,
+ UnicodeString &dest,
+ UErrorCode *status) {
+ dest.remove();
+ if (direction != UBIDI_LTR && direction != UBIDI_RTL) {
+ *status = U_ILLEGAL_ARGUMENT_ERROR;
+ return dest;
+ }
+ UBiDi *bidi = ubidi_open();
+ ubidi_setPara(bidi, id.getBuffer(), id.length(), direction,
+ /*embeddingLevels*/ nullptr, status);
+ if (U_FAILURE(*status)) {
+ ubidi_close(bidi);
+ return dest;
+ }
+ UnicodeString reordered;
+ int32_t const size = ubidi_getProcessedLength(bidi);
+ UChar* const reorderedBuffer = reordered.getBuffer(size);
+ if (reorderedBuffer == nullptr) {
+ *status = U_MEMORY_ALLOCATION_ERROR;
+ ubidi_close(bidi);
+ return dest;
+ }
+ ubidi_writeReordered(bidi, reorderedBuffer, size,
+ UBIDI_KEEP_BASE_COMBINING | UBIDI_DO_MIRRORING, status);
+ reordered.releaseBuffer(size);
+ ubidi_close(bidi);
+
+ if (U_FAILURE(*status)) {
+ return dest;
+ }
+
+ // The type parameter is deprecated since ICU 58; any number may be passed.
+ constexpr uint32_t deprecatedType = 58;
+ return uspoof_getSkeletonUnicodeString(sc, deprecatedType, reordered, dest, status);
+}
+
U_I18N_API UnicodeString & U_EXPORT2
@@ -721,30 +860,29 @@ uspoof_getSkeletonUnicodeString(const USpoofChecker *sc,
for (inputIndex=0; inputIndex < normalizedLen; ) {
UChar32 c = nfdId.char32At(inputIndex);
inputIndex += U16_LENGTH(c);
- This->fSpoofData->confusableLookup(c, skelStr);
+ if (!u_hasBinaryProperty(c, UCHAR_DEFAULT_IGNORABLE_CODE_POINT)) {
+ This->fSpoofData->confusableLookup(c, skelStr);
+ }
}
gNfdNormalizer->normalize(skelStr, dest, *status);
return dest;
}
-
-U_CAPI int32_t U_EXPORT2
-uspoof_getSkeletonUTF8(const USpoofChecker *sc,
- uint32_t type,
- const char *id, int32_t length,
- char *dest, int32_t destCapacity,
+U_CAPI int32_t U_EXPORT2 uspoof_getSkeletonUTF8(const USpoofChecker *sc, uint32_t type, const char *id,
+ int32_t length, char *dest, int32_t destCapacity,
UErrorCode *status) {
SpoofImpl::validateThis(sc, *status);
if (U_FAILURE(*status)) {
return 0;
}
- if (length<-1 || destCapacity<0 || (destCapacity==0 && dest!=NULL)) {
+ if (length<-1 || destCapacity<0 || (destCapacity==0 && dest!=nullptr)) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
- UnicodeString srcStr = UnicodeString::fromUTF8(StringPiece(id, length>=0 ? length : static_cast<int32_t>(uprv_strlen(id))));
+ UnicodeString srcStr = UnicodeString::fromUTF8(
+ StringPiece(id, length >= 0 ? length : static_cast<int32_t>(uprv_strlen(id))));
UnicodeString destStr;
uspoof_getSkeletonUnicodeString(sc, type, srcStr, destStr, status);
if (U_FAILURE(*status)) {
@@ -752,8 +890,28 @@ uspoof_getSkeletonUTF8(const USpoofChecker *sc,
}
int32_t lengthInUTF8 = 0;
- u_strToUTF8(dest, destCapacity, &lengthInUTF8,
- destStr.getBuffer(), destStr.length(), status);
+ u_strToUTF8(dest, destCapacity, &lengthInUTF8, destStr.getBuffer(), destStr.length(), status);
+ return lengthInUTF8;
+}
+
+U_CAPI int32_t U_EXPORT2 uspoof_getBidiSkeletonUTF8(const USpoofChecker *sc, UBiDiDirection direction,
+ const char *id, int32_t length, char *dest,
+ int32_t destCapacity, UErrorCode *status) {
+ if (length < -1) {
+ *status = U_ILLEGAL_ARGUMENT_ERROR;
+ return 0;
+ }
+
+ UnicodeString srcStr = UnicodeString::fromUTF8(
+ StringPiece(id, length >= 0 ? length : static_cast<int32_t>(uprv_strlen(id))));
+ UnicodeString destStr;
+ uspoof_getBidiSkeletonUnicodeString(sc, direction, srcStr, destStr, status);
+ if (U_FAILURE(*status)) {
+ return 0;
+ }
+
+ int32_t lengthInUTF8 = 0;
+ u_strToUTF8(dest, destCapacity, &lengthInUTF8, destStr.getBuffer(), destStr.length(), status);
return lengthInUTF8;
}
@@ -761,7 +919,7 @@ uspoof_getSkeletonUTF8(const USpoofChecker *sc,
U_CAPI int32_t U_EXPORT2
uspoof_serialize(USpoofChecker *sc,void *buf, int32_t capacity, UErrorCode *status) {
SpoofImpl *This = SpoofImpl::validateThis(sc, *status);
- if (This == NULL) {
+ if (This == nullptr) {
U_ASSERT(U_FAILURE(*status));
return 0;
}
@@ -800,9 +958,9 @@ uspoof_getRecommendedUnicodeSet(UErrorCode *status) {
U_CAPI USpoofCheckResult* U_EXPORT2
uspoof_openCheckResult(UErrorCode *status) {
CheckResult* checkResult = new CheckResult();
- if (checkResult == NULL) {
+ if (checkResult == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
return checkResult->asUSpoofCheckResult();
}
@@ -831,7 +989,7 @@ uspoof_getCheckResultRestrictionLevel(const USpoofCheckResult *checkResult, UErr
U_CAPI const USet* U_EXPORT2
uspoof_getCheckResultNumerics(const USpoofCheckResult *checkResult, UErrorCode *status) {
const CheckResult* This = CheckResult::validateThis(checkResult, *status);
- if (U_FAILURE(*status)) { return NULL; }
+ if (U_FAILURE(*status)) { return nullptr; }
return This->fNumerics.toUSet();
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/uspoof_build.cpp b/Build/source/libs/icu/icu-src/source/i18n/uspoof_build.cpp
index 192fb9a6885..098d272e196 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/uspoof_build.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/uspoof_build.cpp
@@ -53,16 +53,16 @@ uspoof_openFromSource(const char *confusables, int32_t confusablesLen,
int32_t *errorType, UParseError *pe, UErrorCode *status) {
uspoof_internalInitStatics(status);
if (U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
#if UCONFIG_NO_REGULAR_EXPRESSIONS
*status = U_UNSUPPORTED_ERROR;
- return NULL;
+ return nullptr;
#else
- if (errorType!=NULL) {
+ if (errorType!=nullptr) {
*errorType = 0;
}
- if (pe != NULL) {
+ if (pe != nullptr) {
pe->line = 0;
pe->offset = 0;
pe->preContext[0] = 0;
@@ -72,26 +72,26 @@ uspoof_openFromSource(const char *confusables, int32_t confusablesLen,
// Set up a shell of a spoof detector, with empty data.
SpoofData *newSpoofData = new SpoofData(*status);
- if (newSpoofData == NULL) {
+ if (newSpoofData == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
if (U_FAILURE(*status)) {
delete newSpoofData;
- return NULL;
+ return nullptr;
}
SpoofImpl *This = new SpoofImpl(newSpoofData, *status);
- if (This == NULL) {
+ if (This == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
delete newSpoofData; // explicit delete as the destructor for SpoofImpl won't be called.
- return NULL;
+ return nullptr;
}
if (U_FAILURE(*status)) {
delete This; // no delete for newSpoofData, as the SpoofImpl destructor will delete it.
- return NULL;
+ return nullptr;
}
// Compile the binary data from the source (text) format.
@@ -99,7 +99,7 @@ uspoof_openFromSource(const char *confusables, int32_t confusablesLen,
if (U_FAILURE(*status)) {
delete This;
- This = NULL;
+ This = nullptr;
}
return (USpoofChecker *)This;
#endif // UCONFIG_NO_REGULAR_EXPRESSIONS
diff --git a/Build/source/libs/icu/icu-src/source/i18n/uspoof_conf.cpp b/Build/source/libs/icu/icu-src/source/i18n/uspoof_conf.cpp
index 5ecc59c12a8..42dba1c0378 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/uspoof_conf.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/uspoof_conf.cpp
@@ -83,7 +83,7 @@ SPUStringPool::SPUStringPool(UErrorCode &status) : fVec(nullptr), fHash(nullptr)
fVec = vec.orphan();
fHash = uhash_open(uhash_hashUnicodeString, // key hash function
uhash_compareUnicodeString, // Key Comparator
- NULL, // Value Comparator
+ nullptr, // Value Comparator
&status);
}
@@ -153,43 +153,43 @@ SPUString *SPUStringPool::addString(UnicodeString *src, UErrorCode &status) {
ConfusabledataBuilder::ConfusabledataBuilder(SpoofImpl *spImpl, UErrorCode &status) :
fSpoofImpl(spImpl),
- fInput(NULL),
- fTable(NULL),
- fKeySet(NULL),
- fKeyVec(NULL),
- fValueVec(NULL),
- fStringTable(NULL),
- stringPool(NULL),
- fParseLine(NULL),
- fParseHexNum(NULL),
+ fInput(nullptr),
+ fTable(nullptr),
+ fKeySet(nullptr),
+ fKeyVec(nullptr),
+ fValueVec(nullptr),
+ fStringTable(nullptr),
+ stringPool(nullptr),
+ fParseLine(nullptr),
+ fParseHexNum(nullptr),
fLineNum(0)
{
if (U_FAILURE(status)) {
return;
}
- fTable = uhash_open(uhash_hashLong, uhash_compareLong, NULL, &status);
+ fTable = uhash_open(uhash_hashLong, uhash_compareLong, nullptr, &status);
fKeySet = new UnicodeSet();
- if (fKeySet == NULL) {
+ if (fKeySet == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
fKeyVec = new UVector(status);
- if (fKeyVec == NULL) {
+ if (fKeyVec == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
fValueVec = new UVector(status);
- if (fValueVec == NULL) {
+ if (fValueVec == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
stringPool = new SPUStringPool(status);
- if (stringPool == NULL) {
+ if (stringPool == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -217,7 +217,7 @@ void ConfusabledataBuilder::buildConfusableData(SpoofImpl * spImpl, const char *
}
ConfusabledataBuilder builder(spImpl, status);
builder.build(confusables, confusablesLen, status);
- if (U_FAILURE(status) && errorType != NULL) {
+ if (U_FAILURE(status) && errorType != nullptr) {
*errorType = USPOOF_SINGLE_SCRIPT_CONFUSABLE;
pe->line = builder.fLineNum;
}
@@ -227,22 +227,22 @@ void ConfusabledataBuilder::buildConfusableData(SpoofImpl * spImpl, const char *
void ConfusabledataBuilder::build(const char * confusables, int32_t confusablesLen,
UErrorCode &status) {
- // Convert the user input data from UTF-8 to UChar (UTF-16)
+ // Convert the user input data from UTF-8 to char16_t (UTF-16)
int32_t inputLen = 0;
if (U_FAILURE(status)) {
return;
}
- u_strFromUTF8(NULL, 0, &inputLen, confusables, confusablesLen, &status);
+ u_strFromUTF8(nullptr, 0, &inputLen, confusables, confusablesLen, &status);
if (status != U_BUFFER_OVERFLOW_ERROR) {
return;
}
status = U_ZERO_ERROR;
- fInput = static_cast<UChar *>(uprv_malloc((inputLen+1) * sizeof(UChar)));
- if (fInput == NULL) {
+ fInput = static_cast<char16_t *>(uprv_malloc((inputLen+1) * sizeof(char16_t)));
+ if (fInput == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
- u_strFromUTF8(fInput, inputLen+1, NULL, confusables, confusablesLen, &status);
+ u_strFromUTF8(fInput, inputLen+1, nullptr, confusables, confusablesLen, &status);
// Regular Expression to parse a line from Confusables.txt. The expression will match
@@ -263,12 +263,12 @@ void ConfusabledataBuilder::build(const char * confusables, int32_t confusablesL
"|^([ \\t]*(?:#.*?)?)$" // OR match empty lines or lines with only a #comment
"|^(.*?)$", -1, US_INV); // OR match any line, which catches illegal lines.
// TODO: Why are we using the regex C API here? C++ would just take UnicodeString...
- fParseLine = uregex_open(pattern.getBuffer(), pattern.length(), 0, NULL, &status);
+ fParseLine = uregex_open(pattern.getBuffer(), pattern.length(), 0, nullptr, &status);
// Regular expression for parsing a hex number out of a space-separated list of them.
// Capture group 1 gets the number, with spaces removed.
pattern = UNICODE_STRING_SIMPLE("\\s*([0-9A-F]+)");
- fParseHexNum = uregex_open(pattern.getBuffer(), pattern.length(), 0, NULL, &status);
+ fParseHexNum = uregex_open(pattern.getBuffer(), pattern.length(), 0, nullptr, &status);
// Zap any Byte Order Mark at the start of input. Changing it to a space is benign
// given the syntax of the input.
@@ -300,7 +300,7 @@ void ConfusabledataBuilder::build(const char * confusables, int32_t confusablesL
uregex_setText(fParseHexNum, &fInput[mapStringStart], mapStringLength, &status);
UnicodeString *mapString = new UnicodeString();
- if (mapString == NULL) {
+ if (mapString == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -370,7 +370,7 @@ void ConfusabledataBuilder::build(const char * confusables, int32_t confusablesL
for (UChar32 keyChar=fKeySet->getRangeStart(range);
keyChar <= fKeySet->getRangeEnd(range); keyChar++) {
SPUString *targetMapping = static_cast<SPUString *>(uhash_iget(fTable, keyChar));
- U_ASSERT(targetMapping != NULL);
+ U_ASSERT(targetMapping != nullptr);
// Set an error code if trying to consume a long string. Otherwise,
// codePointAndLengthToKey will abort on a U_ASSERT.
@@ -407,7 +407,7 @@ void ConfusabledataBuilder::build(const char * confusables, int32_t confusablesL
//
void ConfusabledataBuilder::outputData(UErrorCode &status) {
- U_ASSERT(fSpoofImpl->fSpoofData->fDataOwned == true);
+ U_ASSERT(fSpoofImpl->fSpoofData->fDataOwned);
// The Key Table
// While copying the keys to the runtime array,
@@ -459,8 +459,8 @@ void ConfusabledataBuilder::outputData(UErrorCode &status) {
uint32_t stringsLength = fStringTable->length();
// Reserve an extra space so the string will be nul-terminated. This is
// only a convenience, for when debugging; it is not needed otherwise.
- UChar *strings =
- static_cast<UChar *>(fSpoofImpl->fSpoofData->reserveSpace(stringsLength*sizeof(UChar)+2, status));
+ char16_t *strings =
+ static_cast<char16_t *>(fSpoofImpl->fSpoofData->reserveSpace(stringsLength*sizeof(char16_t)+2, status));
if (U_FAILURE(status)) {
return;
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/uspoof_conf.h b/Build/source/libs/icu/icu-src/source/i18n/uspoof_conf.h
index 1eeecdfd5e4..a5e3b9e109c 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/uspoof_conf.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/uspoof_conf.h
@@ -90,7 +90,7 @@ class SPUStringPool : public UMemory {
class ConfusabledataBuilder : public UMemory {
private:
SpoofImpl *fSpoofImpl;
- UChar *fInput;
+ char16_t *fInput;
UHashtable *fTable;
UnicodeSet *fKeySet; // A set of all keys (UChar32s) that go into the four mapping tables.
diff --git a/Build/source/libs/icu/icu-src/source/i18n/uspoof_impl.cpp b/Build/source/libs/icu/icu-src/source/i18n/uspoof_impl.cpp
index e50344c4696..7a6084a1096 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/uspoof_impl.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/uspoof_impl.cpp
@@ -53,9 +53,9 @@ SpoofImpl::SpoofImpl() {
void SpoofImpl::construct(UErrorCode& status) {
fChecks = USPOOF_ALL_CHECKS;
- fSpoofData = NULL;
- fAllowedCharsSet = NULL;
- fAllowedLocales = NULL;
+ fSpoofData = nullptr;
+ fAllowedCharsSet = nullptr;
+ fAllowedLocales = nullptr;
fRestrictionLevel = USPOOF_HIGHLY_RESTRICTIVE;
if (U_FAILURE(status)) { return; }
@@ -63,7 +63,7 @@ void SpoofImpl::construct(UErrorCode& status) {
UnicodeSet *allowedCharsSet = new UnicodeSet(0, 0x10ffff);
fAllowedCharsSet = allowedCharsSet;
fAllowedLocales = uprv_strdup("");
- if (fAllowedCharsSet == NULL || fAllowedLocales == NULL) {
+ if (fAllowedCharsSet == nullptr || fAllowedLocales == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -73,25 +73,25 @@ void SpoofImpl::construct(UErrorCode& status) {
// Copy Constructor, used by the user level clone() function.
SpoofImpl::SpoofImpl(const SpoofImpl &src, UErrorCode &status) :
- fChecks(USPOOF_ALL_CHECKS), fSpoofData(NULL), fAllowedCharsSet(NULL) ,
- fAllowedLocales(NULL) {
+ fChecks(USPOOF_ALL_CHECKS), fSpoofData(nullptr), fAllowedCharsSet(nullptr) ,
+ fAllowedLocales(nullptr) {
if (U_FAILURE(status)) {
return;
}
fChecks = src.fChecks;
- if (src.fSpoofData != NULL) {
+ if (src.fSpoofData != nullptr) {
fSpoofData = src.fSpoofData->addReference();
}
fAllowedCharsSet = src.fAllowedCharsSet->clone();
fAllowedLocales = uprv_strdup(src.fAllowedLocales);
- if (fAllowedCharsSet == NULL || fAllowedLocales == NULL) {
+ if (fAllowedCharsSet == nullptr || fAllowedLocales == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
}
fRestrictionLevel = src.fRestrictionLevel;
}
SpoofImpl::~SpoofImpl() {
- if (fSpoofData != NULL) {
+ if (fSpoofData != nullptr) {
fSpoofData->removeReference(); // Will delete if refCount goes to zero.
}
delete fAllowedCharsSet;
@@ -110,10 +110,10 @@ USpoofChecker *SpoofImpl::asUSpoofChecker() {
const SpoofImpl *SpoofImpl::validateThis(const USpoofChecker *sc, UErrorCode &status) {
auto* This = validate(sc, status);
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
- if (This->fSpoofData != NULL && !This->fSpoofData->validateDataVersion(status)) {
- return NULL;
+ if (This->fSpoofData != nullptr && !This->fSpoofData->validateDataVersion(status)) {
+ return nullptr;
}
return This;
}
@@ -126,16 +126,16 @@ SpoofImpl *SpoofImpl::validateThis(USpoofChecker *sc, UErrorCode &status) {
void SpoofImpl::setAllowedLocales(const char *localesList, UErrorCode &status) {
UnicodeSet allowedChars;
- UnicodeSet *tmpSet = NULL;
+ UnicodeSet *tmpSet = nullptr;
const char *locStart = localesList;
- const char *locEnd = NULL;
+ const char *locEnd = nullptr;
const char *localesListEnd = localesList + uprv_strlen(localesList);
int32_t localeListCount = 0; // Number of locales provided by caller.
// Loop runs once per locale from the localesList, a comma separated list of locales.
do {
locEnd = uprv_strchr(locStart, ',');
- if (locEnd == NULL) {
+ if (locEnd == nullptr) {
locEnd = localesListEnd;
}
while (*locStart == ' ') {
@@ -167,7 +167,7 @@ void SpoofImpl::setAllowedLocales(const char *localesList, UErrorCode &status) {
uprv_free((void *)fAllowedLocales);
fAllowedLocales = uprv_strdup("");
tmpSet = new UnicodeSet(0, 0x10ffff);
- if (fAllowedLocales == NULL || tmpSet == NULL) {
+ if (fAllowedLocales == nullptr || tmpSet == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -195,7 +195,7 @@ void SpoofImpl::setAllowedLocales(const char *localesList, UErrorCode &status) {
// Store the updated spoof checker state.
tmpSet = allowedChars.clone();
const char *tmpLocalesList = uprv_strdup(localesList);
- if (tmpSet == NULL || tmpLocalesList == NULL) {
+ if (tmpSet == nullptr || tmpLocalesList == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -405,11 +405,11 @@ bool SpoofImpl::isIllegalCombiningDotLeadCharacter(UChar32 cp) const {
// Convert a text format hex number. Utility function used by builder code. Static.
-// Input: UChar *string text. Output: a UChar32
+// Input: char16_t *string text. Output: a UChar32
// Input has been pre-checked, and will have no non-hex chars.
// The number must fall in the code point range of 0..0x10ffff
// Static Function.
-UChar32 SpoofImpl::ScanHex(const UChar *s, int32_t start, int32_t limit, UErrorCode &status) {
+UChar32 SpoofImpl::ScanHex(const char16_t *s, int32_t start, int32_t limit, UErrorCode &status) {
if (U_FAILURE(status)) {
return 0;
}
@@ -488,7 +488,7 @@ CheckResult::~CheckResult() {
UBool SpoofData::validateDataVersion(UErrorCode &status) const {
if (U_FAILURE(status) ||
- fRawData == NULL ||
+ fRawData == nullptr ||
fRawData->fMagic != USPOOF_MAGIC ||
fRawData->fFormatVersion[0] != USPOOF_CONFUSABLE_DATA_FORMAT_VERSION ||
fRawData->fFormatVersion[1] != 0 ||
@@ -515,7 +515,7 @@ spoofDataIsAcceptable(void *context,
pInfo->formatVersion[0] == USPOOF_CONFUSABLE_DATA_FORMAT_VERSION
) {
UVersionInfo *version = static_cast<UVersionInfo *>(context);
- if(version != NULL) {
+ if(version != nullptr) {
uprv_memcpy(version, pInfo->dataVersion, 4);
}
return true;
@@ -542,7 +542,7 @@ static UInitOnce gSpoofInitDefaultOnce {};
static SpoofData* gDefaultSpoofData;
static UBool U_CALLCONV
-uspoof_cleanupDefaultData(void) {
+uspoof_cleanupDefaultData() {
if (gDefaultSpoofData) {
// Will delete, assuming all user-level spoof checkers were closed.
gDefaultSpoofData->removeReference();
@@ -573,7 +573,7 @@ static void U_CALLCONV uspoof_loadDefaultData(UErrorCode& status) {
SpoofData* SpoofData::getDefault(UErrorCode& status) {
umtx_initOnce(gSpoofInitDefaultOnce, &uspoof_loadDefaultData, status);
- if (U_FAILURE(status)) { return NULL; }
+ if (U_FAILURE(status)) { return nullptr; }
gDefaultSpoofData->addReference();
return gDefaultSpoofData;
}
@@ -605,7 +605,7 @@ SpoofData::SpoofData(const void *data, int32_t length, UErrorCode &status)
status = U_INVALID_FORMAT_ERROR;
return;
}
- if (data == NULL) {
+ if (data == nullptr) {
status = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
@@ -636,7 +636,7 @@ SpoofData::SpoofData(UErrorCode &status) {
fRawData = static_cast<SpoofDataHeader *>(uprv_malloc(initialSize));
fMemLimit = initialSize;
- if (fRawData == NULL) {
+ if (fRawData == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -654,14 +654,14 @@ SpoofData::SpoofData(UErrorCode &status) {
// Should be updated if any new fields are added.
// Called by constructors to put things in a known initial state.
void SpoofData::reset() {
- fRawData = NULL;
+ fRawData = nullptr;
fDataOwned = false;
- fUDM = NULL;
+ fUDM = nullptr;
fMemLimit = 0;
fRefCount = 1;
- fCFUKeys = NULL;
- fCFUValues = NULL;
- fCFUStrings = NULL;
+ fCFUKeys = nullptr;
+ fCFUValues = nullptr;
+ fCFUStrings = nullptr;
}
@@ -673,7 +673,7 @@ void SpoofData::reset() {
// during the opening of a Spoof Checker from prebuilt data.
//
// The pointers for non-existent data sections (identified by an offset of 0)
-// are set to NULL.
+// are set to nullptr.
//
// Note: During building the data, adding each new data section
// reallocs the raw data area, which likely relocates it, which
@@ -681,9 +681,9 @@ void SpoofData::reset() {
// multiple calls to this function during building.
//
void SpoofData::initPtrs(UErrorCode &status) {
- fCFUKeys = NULL;
- fCFUValues = NULL;
- fCFUStrings = NULL;
+ fCFUKeys = nullptr;
+ fCFUValues = nullptr;
+ fCFUStrings = nullptr;
if (U_FAILURE(status)) {
return;
}
@@ -694,7 +694,7 @@ void SpoofData::initPtrs(UErrorCode &status) {
fCFUValues = (uint16_t *)((char *)fRawData + fRawData->fCFUStringIndex);
}
if (fRawData->fCFUStringTable != 0) {
- fCFUStrings = (UChar *)((char *)fRawData + fRawData->fCFUStringTable);
+ fCFUStrings = (char16_t *)((char *)fRawData + fRawData->fCFUStringTable);
}
}
@@ -703,11 +703,11 @@ SpoofData::~SpoofData() {
if (fDataOwned) {
uprv_free(fRawData);
}
- fRawData = NULL;
- if (fUDM != NULL) {
+ fRawData = nullptr;
+ if (fUDM != nullptr) {
udata_close(fUDM);
}
- fUDM = NULL;
+ fUDM = nullptr;
}
@@ -726,7 +726,7 @@ SpoofData *SpoofData::addReference() {
void *SpoofData::reserveSpace(int32_t numBytes, UErrorCode &status) {
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
if (!fDataOwned) {
UPRV_UNREACHABLE_EXIT;
@@ -806,7 +806,7 @@ int32_t SpoofData::appendValueTo(int32_t index, UnicodeString& dest) const {
// an index into the string table (for longer strings)
uint16_t value = fCFUValues[index];
if (stringLength == 1) {
- dest.append((UChar)value);
+ dest.append((char16_t)value);
} else {
dest.append(fCFUStrings + value, stringLength);
}
@@ -828,10 +828,10 @@ U_CAPI int32_t U_EXPORT2
uspoof_swap(const UDataSwapper *ds, const void *inData, int32_t length, void *outData,
UErrorCode *status) {
- if (status == NULL || U_FAILURE(*status)) {
+ if (status == nullptr || U_FAILURE(*status)) {
return 0;
}
- if(ds==NULL || inData==NULL || length<-1 || (length>0 && outData==NULL)) {
+ if(ds==nullptr || inData==nullptr || length<-1 || (length>0 && outData==nullptr)) {
*status=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/uspoof_impl.h b/Build/source/libs/icu/icu-src/source/i18n/uspoof_impl.h
index 68d7bedae1b..3bdaf76e299 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/uspoof_impl.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/uspoof_impl.h
@@ -91,10 +91,10 @@ public:
bool isIllegalCombiningDotLeadCharacter(UChar32 cp) const;
/** parse a hex number. Untility used by the builders. */
- static UChar32 ScanHex(const UChar *s, int32_t start, int32_t limit, UErrorCode &status);
+ static UChar32 ScanHex(const char16_t *s, int32_t start, int32_t limit, UErrorCode &status);
- static UClassID U_EXPORT2 getStaticClassID(void);
- virtual UClassID getDynamicClassID(void) const override;
+ static UClassID U_EXPORT2 getStaticClassID();
+ virtual UClassID getDynamicClassID() const override;
//
// Data Members
@@ -158,7 +158,7 @@ public:
//
// String Table:
// The strings table contains all of the value strings (those of length two or greater)
-// concatenated together into one long UChar (UTF-16) array.
+// concatenated together into one long char16_t (UTF-16) array.
//
// There is no nul character or other mark between adjacent strings.
//
@@ -277,7 +277,7 @@ class SpoofData: public UMemory {
SpoofDataHeader *fRawData; // Ptr to the raw memory-mapped data
UBool fDataOwned; // True if the raw data is owned, and needs
// to be deleted when refcount goes to zero.
- UDataMemory *fUDM; // If not NULL, our data came from a
+ UDataMemory *fUDM; // If not nullptr, our data came from a
// UDataMemory, which we must close when
// we are done.
@@ -287,7 +287,7 @@ class SpoofData: public UMemory {
// Confusable data
int32_t *fCFUKeys;
uint16_t *fCFUValues;
- UChar *fCFUStrings;
+ char16_t *fCFUStrings;
friend class ConfusabledataBuilder;
};
diff --git a/Build/source/libs/icu/icu-src/source/i18n/utf16collationiterator.cpp b/Build/source/libs/icu/icu-src/source/i18n/utf16collationiterator.cpp
index 912163a0a34..e04721f7d7d 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/utf16collationiterator.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/utf16collationiterator.cpp
@@ -28,11 +28,11 @@
U_NAMESPACE_BEGIN
UTF16CollationIterator::UTF16CollationIterator(const UTF16CollationIterator &other,
- const UChar *newText)
+ const char16_t *newText)
: CollationIterator(other),
start(newText),
pos(newText + (other.pos - other.start)),
- limit(other.limit == NULL ? NULL : newText + (other.limit - other.start)) {
+ limit(other.limit == nullptr ? nullptr : newText + (other.limit - other.start)) {
}
UTF16CollationIterator::~UTF16CollationIterator() {}
@@ -66,17 +66,17 @@ UTF16CollationIterator::handleNextCE32(UChar32 &c, UErrorCode & /*errorCode*/) {
return UTRIE2_GET32_FROM_U16_SINGLE_LEAD(trie, c);
}
-UChar
+char16_t
UTF16CollationIterator::handleGetTrailSurrogate() {
if(pos == limit) { return 0; }
- UChar trail;
+ char16_t trail;
if(U16_IS_TRAIL(trail = *pos)) { ++pos; }
return trail;
}
UBool
UTF16CollationIterator::foundNULTerminator() {
- if(limit == NULL) {
+ if(limit == nullptr) {
limit = --pos;
return true;
} else {
@@ -90,12 +90,12 @@ UTF16CollationIterator::nextCodePoint(UErrorCode & /*errorCode*/) {
return U_SENTINEL;
}
UChar32 c = *pos;
- if(c == 0 && limit == NULL) {
+ if(c == 0 && limit == nullptr) {
limit = pos;
return U_SENTINEL;
}
++pos;
- UChar trail;
+ char16_t trail;
if(U16_IS_LEAD(c) && pos != limit && U16_IS_TRAIL(trail = *pos)) {
++pos;
return U16_GET_SUPPLEMENTARY(c, trail);
@@ -110,7 +110,7 @@ UTF16CollationIterator::previousCodePoint(UErrorCode & /*errorCode*/) {
return U_SENTINEL;
}
UChar32 c = *--pos;
- UChar lead;
+ char16_t lead;
if(U16_IS_TRAIL(c) && pos != start && U16_IS_LEAD(lead = *(pos - 1))) {
--pos;
return U16_GET_SUPPLEMENTARY(lead, c);
@@ -123,7 +123,7 @@ void
UTF16CollationIterator::forwardNumCodePoints(int32_t num, UErrorCode & /*errorCode*/) {
while(num > 0 && pos != limit) {
UChar32 c = *pos;
- if(c == 0 && limit == NULL) {
+ if(c == 0 && limit == nullptr) {
limit = pos;
break;
}
@@ -149,19 +149,19 @@ UTF16CollationIterator::backwardNumCodePoints(int32_t num, UErrorCode & /*errorC
// FCDUTF16CollationIterator ----------------------------------------------- ***
FCDUTF16CollationIterator::FCDUTF16CollationIterator(const FCDUTF16CollationIterator &other,
- const UChar *newText)
+ const char16_t *newText)
: UTF16CollationIterator(other),
rawStart(newText),
segmentStart(newText + (other.segmentStart - other.rawStart)),
- segmentLimit(other.segmentLimit == NULL ? NULL : newText + (other.segmentLimit - other.rawStart)),
- rawLimit(other.rawLimit == NULL ? NULL : newText + (other.rawLimit - other.rawStart)),
+ segmentLimit(other.segmentLimit == nullptr ? nullptr : newText + (other.segmentLimit - other.rawStart)),
+ rawLimit(other.rawLimit == nullptr ? nullptr : newText + (other.rawLimit - other.rawStart)),
nfcImpl(other.nfcImpl),
normalized(other.normalized),
checkDir(other.checkDir) {
if(checkDir != 0 || other.start == other.segmentStart) {
start = newText + (other.start - other.rawStart);
pos = newText + (other.pos - other.rawStart);
- limit = other.limit == NULL ? NULL : newText + (other.limit - other.rawStart);
+ limit = other.limit == nullptr ? nullptr : newText + (other.limit - other.rawStart);
} else {
start = normalized.getBuffer();
pos = start + (other.pos - other.start);
@@ -239,7 +239,7 @@ FCDUTF16CollationIterator::handleNextCE32(UChar32 &c, UErrorCode &errorCode) {
UBool
FCDUTF16CollationIterator::foundNULTerminator() {
- if(limit == NULL) {
+ if(limit == nullptr) {
limit = rawLimit = --pos;
return true;
} else {
@@ -265,7 +265,7 @@ FCDUTF16CollationIterator::nextCodePoint(UErrorCode &errorCode) {
}
c = *pos++;
}
- } else if(c == 0 && limit == NULL) {
+ } else if(c == 0 && limit == nullptr) {
limit = rawLimit = --pos;
return U_SENTINEL;
}
@@ -277,7 +277,7 @@ FCDUTF16CollationIterator::nextCodePoint(UErrorCode &errorCode) {
switchToForward();
}
}
- UChar trail;
+ char16_t trail;
if(U16_IS_LEAD(c) && pos != limit && U16_IS_TRAIL(trail = *pos)) {
++pos;
return U16_GET_SUPPLEMENTARY(c, trail);
@@ -313,7 +313,7 @@ FCDUTF16CollationIterator::previousCodePoint(UErrorCode &errorCode) {
switchToBackward();
}
}
- UChar lead;
+ char16_t lead;
if(U16_IS_TRAIL(c) && pos != start && U16_IS_LEAD(lead = *(pos - 1))) {
--pos;
return U16_GET_SUPPLEMENTARY(lead, c);
@@ -375,11 +375,11 @@ FCDUTF16CollationIterator::nextSegment(UErrorCode &errorCode) {
if(U_FAILURE(errorCode)) { return false; }
U_ASSERT(checkDir > 0 && pos != limit);
// The input text [segmentStart..pos[ passes the FCD check.
- const UChar *p = pos;
+ const char16_t *p = pos;
uint8_t prevCC = 0;
for(;;) {
// Fetch the next character's fcd16 value.
- const UChar *q = p;
+ const char16_t *q = p;
uint16_t fcd16 = nfcImpl.nextFCD16(p, rawLimit);
uint8_t leadCC = (uint8_t)(fcd16 >> 8);
if(leadCC == 0 && q != pos) {
@@ -439,11 +439,11 @@ FCDUTF16CollationIterator::previousSegment(UErrorCode &errorCode) {
if(U_FAILURE(errorCode)) { return false; }
U_ASSERT(checkDir < 0 && pos != start);
// The input text [pos..segmentLimit[ passes the FCD check.
- const UChar *p = pos;
+ const char16_t *p = pos;
uint8_t nextCC = 0;
for(;;) {
// Fetch the previous character's fcd16 value.
- const UChar *q = p;
+ const char16_t *q = p;
uint16_t fcd16 = nfcImpl.previousFCD16(rawStart, p);
uint8_t trailCC = (uint8_t)fcd16;
if(trailCC == 0 && q != pos) {
@@ -475,7 +475,7 @@ FCDUTF16CollationIterator::previousSegment(UErrorCode &errorCode) {
}
UBool
-FCDUTF16CollationIterator::normalize(const UChar *from, const UChar *to, UErrorCode &errorCode) {
+FCDUTF16CollationIterator::normalize(const char16_t *from, const char16_t *to, UErrorCode &errorCode) {
// NFD without argument checking.
U_ASSERT(U_SUCCESS(errorCode));
nfcImpl.decompose(from, to, normalized, (int32_t)(to - from), errorCode);
diff --git a/Build/source/libs/icu/icu-src/source/i18n/utf16collationiterator.h b/Build/source/libs/icu/icu-src/source/i18n/utf16collationiterator.h
index 6db70511b0d..34634bf494a 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/utf16collationiterator.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/utf16collationiterator.h
@@ -34,11 +34,11 @@ U_NAMESPACE_BEGIN
class U_I18N_API UTF16CollationIterator : public CollationIterator {
public:
UTF16CollationIterator(const CollationData *d, UBool numeric,
- const UChar *s, const UChar *p, const UChar *lim)
+ const char16_t *s, const char16_t *p, const char16_t *lim)
: CollationIterator(d, numeric),
start(s), pos(p), limit(lim) {}
- UTF16CollationIterator(const UTF16CollationIterator &other, const UChar *newText);
+ UTF16CollationIterator(const UTF16CollationIterator &other, const char16_t *newText);
virtual ~UTF16CollationIterator();
@@ -48,7 +48,7 @@ public:
virtual int32_t getOffset() const override;
- void setText(const UChar *s, const UChar *lim) {
+ void setText(const char16_t *s, const char16_t *lim) {
reset();
start = pos = s;
limit = lim;
@@ -62,11 +62,11 @@ protected:
// Copy constructor only for subclasses which set the pointers.
UTF16CollationIterator(const UTF16CollationIterator &other)
: CollationIterator(other),
- start(NULL), pos(NULL), limit(NULL) {}
+ start(nullptr), pos(nullptr), limit(nullptr) {}
virtual uint32_t handleNextCE32(UChar32 &c, UErrorCode &errorCode) override;
- virtual UChar handleGetTrailSurrogate() override;
+ virtual char16_t handleGetTrailSurrogate() override;
virtual UBool foundNULTerminator() override;
@@ -75,8 +75,8 @@ protected:
virtual void backwardNumCodePoints(int32_t num, UErrorCode &errorCode) override;
// UTF-16 string pointers.
- // limit can be NULL for NUL-terminated strings.
- const UChar *start, *pos, *limit;
+ // limit can be nullptr for NUL-terminated strings.
+ const char16_t *start, *pos, *limit;
};
/**
@@ -85,13 +85,13 @@ protected:
class U_I18N_API FCDUTF16CollationIterator : public UTF16CollationIterator {
public:
FCDUTF16CollationIterator(const CollationData *data, UBool numeric,
- const UChar *s, const UChar *p, const UChar *lim)
+ const char16_t *s, const char16_t *p, const char16_t *lim)
: UTF16CollationIterator(data, numeric, s, p, lim),
- rawStart(s), segmentStart(p), segmentLimit(NULL), rawLimit(lim),
+ rawStart(s), segmentStart(p), segmentLimit(nullptr), rawLimit(lim),
nfcImpl(data->nfcImpl),
checkDir(1) {}
- FCDUTF16CollationIterator(const FCDUTF16CollationIterator &other, const UChar *newText);
+ FCDUTF16CollationIterator(const FCDUTF16CollationIterator &other, const char16_t *newText);
virtual ~FCDUTF16CollationIterator();
@@ -143,10 +143,10 @@ private:
*/
UBool previousSegment(UErrorCode &errorCode);
- UBool normalize(const UChar *from, const UChar *to, UErrorCode &errorCode);
+ UBool normalize(const char16_t *from, const char16_t *to, UErrorCode &errorCode);
// Text pointers: The input text is [rawStart, rawLimit[
- // where rawLimit can be NULL for NUL-terminated text.
+ // where rawLimit can be nullptr for NUL-terminated text.
//
// checkDir > 0:
//
@@ -168,11 +168,11 @@ private:
// or the current segment had to be normalized so that
// [segmentStart..segmentLimit[ turned into the normalized string,
// corresponding to normalized.getBuffer()==start<=pos<=limit==start+normalized.length().
- const UChar *rawStart;
- const UChar *segmentStart;
- const UChar *segmentLimit;
- // rawLimit==NULL for a NUL-terminated string.
- const UChar *rawLimit;
+ const char16_t *rawStart;
+ const char16_t *segmentStart;
+ const char16_t *segmentLimit;
+ // rawLimit==nullptr for a NUL-terminated string.
+ const char16_t *rawLimit;
const Normalizer2Impl &nfcImpl;
UnicodeString normalized;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/utf8collationiterator.cpp b/Build/source/libs/icu/icu-src/source/i18n/utf8collationiterator.cpp
index 5a6cf7fd1ba..ea7278afc6c 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/utf8collationiterator.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/utf8collationiterator.cpp
@@ -242,11 +242,11 @@ FCDUTF8CollationIterator::previousHasTccc() const {
return CollationFCD::hasTccc(c);
}
-UChar
+char16_t
FCDUTF8CollationIterator::handleGetTrailSurrogate() {
if(state != IN_NORMALIZED) { return 0; }
U_ASSERT(pos < normalized.length());
- UChar trail;
+ char16_t trail;
if(U16_IS_TRAIL(trail = normalized[pos])) { ++pos; }
return trail;
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/utf8collationiterator.h b/Build/source/libs/icu/icu-src/source/i18n/utf8collationiterator.h
index 09cfce4369f..13ca87846bc 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/utf8collationiterator.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/utf8collationiterator.h
@@ -98,7 +98,7 @@ public:
protected:
virtual uint32_t handleNextCE32(UChar32 &c, UErrorCode &errorCode) override;
- virtual UChar handleGetTrailSurrogate() override;
+ virtual char16_t handleGetTrailSurrogate() override;
virtual UBool foundNULTerminator() override;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/utmscale.cpp b/Build/source/libs/icu/icu-src/source/i18n/utmscale.cpp
index 7bf6eec331a..61df43e7782 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/utmscale.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/utmscale.cpp
@@ -39,7 +39,7 @@ static const int64_t timeScaleTable[UDTS_MAX_SCALE][UTSV_MAX_SCALE_VALUE] = {
U_CAPI int64_t U_EXPORT2
utmscale_getTimeScaleValue(UDateTimeScale timeScale, UTimeScaleValue value, UErrorCode *status)
{
- if (status == NULL || U_FAILURE(*status)) {
+ if (status == nullptr || U_FAILURE(*status)) {
return 0;
}
@@ -54,11 +54,10 @@ utmscale_getTimeScaleValue(UDateTimeScale timeScale, UTimeScaleValue value, UErr
}
U_CAPI int64_t U_EXPORT2
-utmscale_fromInt64(int64_t otherTime, UDateTimeScale timeScale, UErrorCode *status)
-{
+utmscale_fromInt64(int64_t otherTime, UDateTimeScale timeScale, UErrorCode *status) UPRV_NO_SANITIZE_UNDEFINED {
const int64_t *data;
- if (status == NULL || U_FAILURE(*status)) {
+ if (status == nullptr || U_FAILURE(*status)) {
return 0;
}
@@ -78,11 +77,10 @@ utmscale_fromInt64(int64_t otherTime, UDateTimeScale timeScale, UErrorCode *stat
}
U_CAPI int64_t U_EXPORT2
-utmscale_toInt64(int64_t universalTime, UDateTimeScale timeScale, UErrorCode *status)
-{
+utmscale_toInt64(int64_t universalTime, UDateTimeScale timeScale, UErrorCode *status) UPRV_NO_SANITIZE_UNDEFINED {
const int64_t *data;
- if (status == NULL || U_FAILURE(*status)) {
+ if (status == nullptr || U_FAILURE(*status)) {
return 0;
}
diff --git a/Build/source/libs/icu/icu-src/source/i18n/utrans.cpp b/Build/source/libs/icu/icu-src/source/i18n/utrans.cpp
index 1cbba81d658..390335f3342 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/utrans.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/utrans.cpp
@@ -28,7 +28,7 @@
#include "rbt.h"
// Following macro is to be followed by <return value>';' or just ';'
-#define utrans_ENTRY(s) if ((s)==NULL || U_FAILURE(*(s))) return
+#define utrans_ENTRY(s) if ((s)==nullptr || U_FAILURE(*(s))) return
/********************************************************************
* Replaceable-UReplaceableCallbacks glue
@@ -60,7 +60,7 @@ public:
virtual void copy(int32_t start, int32_t limit, int32_t dest) override;
- // virtual Replaceable *clone() const { return NULL; } same as default
+ // virtual Replaceable *clone() const { return nullptr; } same as default
/**
* ICU "poor man's RTTI", returns a UClassID for the actual class.
@@ -80,7 +80,7 @@ protected:
virtual int32_t getLength() const override;
- virtual UChar getCharAt(int32_t offset) const override;
+ virtual char16_t getCharAt(int32_t offset) const override;
virtual UChar32 getChar32At(int32_t offset) const override;
};
@@ -101,7 +101,7 @@ int32_t ReplaceableGlue::getLength() const {
return (*func->length)(rep);
}
-UChar ReplaceableGlue::getCharAt(int32_t offset) const {
+char16_t ReplaceableGlue::getCharAt(int32_t offset) const {
return (*func->charAt)(rep, offset);
}
@@ -132,36 +132,36 @@ U_NAMESPACE_END
U_NAMESPACE_USE
U_CAPI UTransliterator* U_EXPORT2
-utrans_openU(const UChar *id,
+utrans_openU(const char16_t *id,
int32_t idLength,
UTransDirection dir,
- const UChar *rules,
+ const char16_t *rules,
int32_t rulesLength,
UParseError *parseError,
UErrorCode *status) {
- if(status==NULL || U_FAILURE(*status)) {
- return NULL;
+ if(status==nullptr || U_FAILURE(*status)) {
+ return nullptr;
}
- if (id == NULL) {
+ if (id == nullptr) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
UParseError temp;
- if(parseError == NULL){
+ if(parseError == nullptr){
parseError = &temp;
}
UnicodeString ID(idLength<0, id, idLength); // r-o alias
- if(rules==NULL){
+ if(rules==nullptr){
- Transliterator *trans = NULL;
+ Transliterator *trans = nullptr;
trans = Transliterator::createInstance(ID, dir, *parseError, *status);
if(U_FAILURE(*status)){
- return NULL;
+ return nullptr;
}
return (UTransliterator*) trans;
}else{
@@ -169,10 +169,10 @@ utrans_openU(const UChar *id,
rules,
rulesLength); // r-o alias
- Transliterator *trans = NULL;
+ Transliterator *trans = nullptr;
trans = Transliterator::createFromRules(ID, ruleStr, dir, *parseError, *status);
if(U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
return (UTransliterator*) trans;
@@ -182,7 +182,7 @@ utrans_openU(const UChar *id,
U_CAPI UTransliterator* U_EXPORT2
utrans_open(const char* id,
UTransDirection dir,
- const UChar* rules, /* may be Null */
+ const char16_t* rules, /* may be Null */
int32_t rulesLength, /* -1 if null-terminated */
UParseError* parseError, /* may be Null */
UErrorCode* status) {
@@ -196,7 +196,7 @@ U_CAPI UTransliterator* U_EXPORT2
utrans_openInverse(const UTransliterator* trans,
UErrorCode* status) {
- utrans_ENTRY(status) NULL;
+ utrans_ENTRY(status) nullptr;
UTransliterator* result =
(UTransliterator*) ((Transliterator*) trans)->createInverse(*status);
@@ -208,15 +208,15 @@ U_CAPI UTransliterator* U_EXPORT2
utrans_clone(const UTransliterator* trans,
UErrorCode* status) {
- utrans_ENTRY(status) NULL;
+ utrans_ENTRY(status) nullptr;
- if (trans == NULL) {
+ if (trans == nullptr) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
Transliterator *t = ((Transliterator*) trans)->clone();
- if (t == NULL) {
+ if (t == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
}
return (UTransliterator*) t;
@@ -227,12 +227,12 @@ utrans_close(UTransliterator* trans) {
delete (Transliterator*) trans;
}
-U_CAPI const UChar * U_EXPORT2
+U_CAPI const char16_t * U_EXPORT2
utrans_getUnicodeID(const UTransliterator *trans,
int32_t *resultLength) {
// Transliterator keeps its ID NUL-terminated
const UnicodeString &ID=((Transliterator*) trans)->getID();
- if(resultLength!=NULL) {
+ if(resultLength!=nullptr) {
*resultLength=ID.length();
}
return ID.getBuffer();
@@ -254,7 +254,7 @@ utrans_register(UTransliterator* adoptedTrans,
}
U_CAPI void U_EXPORT2
-utrans_unregisterID(const UChar* id, int32_t idLength) {
+utrans_unregisterID(const char16_t* id, int32_t idLength) {
UnicodeString ID(idLength<0, id, idLength); // r-o alias
Transliterator::unregister(ID);
}
@@ -267,37 +267,37 @@ utrans_unregister(const char* id) {
U_CAPI void U_EXPORT2
utrans_setFilter(UTransliterator* trans,
- const UChar* filterPattern,
+ const char16_t* filterPattern,
int32_t filterPatternLen,
UErrorCode* status) {
utrans_ENTRY(status);
- UnicodeFilter* filter = NULL;
- if (filterPattern != NULL && *filterPattern != 0) {
+ UnicodeFilter* filter = nullptr;
+ if (filterPattern != nullptr && *filterPattern != 0) {
// Create read only alias of filterPattern:
UnicodeString pat(filterPatternLen < 0, filterPattern, filterPatternLen);
filter = new UnicodeSet(pat, *status);
- /* test for NULL */
- if (filter == NULL) {
+ /* test for nullptr */
+ if (filter == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
return;
}
if (U_FAILURE(*status)) {
delete filter;
- filter = NULL;
+ filter = nullptr;
}
}
((Transliterator*) trans)->adoptFilter(filter);
}
U_CAPI int32_t U_EXPORT2
-utrans_countAvailableIDs(void) {
+utrans_countAvailableIDs() {
return Transliterator::countAvailableIDs();
}
U_CAPI int32_t U_EXPORT2
utrans_getAvailableID(int32_t index,
- char* buf, // may be NULL
+ char* buf, // may be nullptr
int32_t bufCapacity) {
return Transliterator::getAvailableID(index).extract(0, 0x7fffffff, buf, bufCapacity, US_INV);
}
@@ -312,17 +312,17 @@ typedef struct UTransEnumeration {
U_CDECL_BEGIN
static int32_t U_CALLCONV
utrans_enum_count(UEnumeration *uenum, UErrorCode *pErrorCode) {
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return 0;
}
return ((UTransEnumeration *)uenum)->count;
}
-static const UChar* U_CALLCONV
+static const char16_t* U_CALLCONV
utrans_enum_unext(UEnumeration *uenum,
int32_t* resultLength,
UErrorCode *pErrorCode) {
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return 0;
}
@@ -331,22 +331,22 @@ utrans_enum_unext(UEnumeration *uenum,
if(index<ute->count) {
const UnicodeString &ID=Transliterator::getAvailableID(index);
ute->index=index+1;
- if(resultLength!=NULL) {
+ if(resultLength!=nullptr) {
*resultLength=ID.length();
}
// Transliterator keeps its ID NUL-terminated
return ID.getBuffer();
}
- if(resultLength!=NULL) {
+ if(resultLength!=nullptr) {
*resultLength=0;
}
- return NULL;
+ return nullptr;
}
static void U_CALLCONV
utrans_enum_reset(UEnumeration *uenum, UErrorCode *pErrorCode) {
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return;
}
@@ -362,8 +362,8 @@ utrans_enum_close(UEnumeration *uenum) {
U_CDECL_END
static const UEnumeration utransEnumeration={
- NULL,
- NULL,
+ nullptr,
+ nullptr,
utrans_enum_close,
utrans_enum_count,
utrans_enum_unext,
@@ -375,14 +375,14 @@ U_CAPI UEnumeration * U_EXPORT2
utrans_openIDs(UErrorCode *pErrorCode) {
UTransEnumeration *ute;
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
- return NULL;
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
+ return nullptr;
}
ute=(UTransEnumeration *)uprv_malloc(sizeof(UTransEnumeration));
- if(ute==NULL) {
+ if(ute==nullptr) {
*pErrorCode=U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
ute->uenum=utransEnumeration;
@@ -436,7 +436,7 @@ utrans_transIncremental(const UTransliterator* trans,
U_CAPI void U_EXPORT2
utrans_transUChars(const UTransliterator* trans,
- UChar* text,
+ char16_t* text,
int32_t* textLength,
int32_t textCapacity,
int32_t start,
@@ -450,7 +450,7 @@ utrans_transUChars(const UTransliterator* trans,
return;
}
- int32_t textLen = (textLength == NULL || *textLength < 0)
+ int32_t textLen = (textLength == nullptr || *textLength < 0)
? u_strlen(text) : *textLength;
// writeable alias: for this ct, len CANNOT be -1 (why?)
UnicodeString str(text, textLen, textCapacity);
@@ -458,16 +458,16 @@ utrans_transUChars(const UTransliterator* trans,
*limit = ((Transliterator*) trans)->transliterate(str, start, *limit);
// Copy the string buffer back to text (only if necessary)
- // and fill in *neededCapacity (if neededCapacity != NULL).
+ // and fill in *neededCapacity (if neededCapacity != nullptr).
textLen = str.extract(text, textCapacity, *status);
- if(textLength != NULL) {
+ if(textLength != nullptr) {
*textLength = textLen;
}
}
U_CAPI void U_EXPORT2
utrans_transIncrementalUChars(const UTransliterator* trans,
- UChar* text,
+ char16_t* text,
int32_t* textLength,
int32_t textCapacity,
UTransPosition* pos,
@@ -480,7 +480,7 @@ utrans_transIncrementalUChars(const UTransliterator* trans,
return;
}
- int32_t textLen = (textLength == NULL || *textLength < 0)
+ int32_t textLen = (textLength == nullptr || *textLength < 0)
? u_strlen(text) : *textLength;
// writeable alias: for this ct, len CANNOT be -1 (why?)
UnicodeString str(text, textLen, textCapacity);
@@ -488,9 +488,9 @@ utrans_transIncrementalUChars(const UTransliterator* trans,
((Transliterator*) trans)->transliterate(str, *pos, *status);
// Copy the string buffer back to text (only if necessary)
- // and fill in *neededCapacity (if neededCapacity != NULL).
+ // and fill in *neededCapacity (if neededCapacity != nullptr).
textLen = str.extract(text, textCapacity, *status);
- if(textLength != NULL) {
+ if(textLength != nullptr) {
*textLength = textLen;
}
}
@@ -498,10 +498,10 @@ utrans_transIncrementalUChars(const UTransliterator* trans,
U_CAPI int32_t U_EXPORT2
utrans_toRules( const UTransliterator* trans,
UBool escapeUnprintable,
- UChar* result, int32_t resultLength,
+ char16_t* result, int32_t resultLength,
UErrorCode* status) {
utrans_ENTRY(status) 0;
- if ( (result==NULL)? resultLength!=0: resultLength<0 ) {
+ if ( (result==nullptr)? resultLength!=0: resultLength<0 ) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -519,7 +519,7 @@ utrans_getSourceSet(const UTransliterator* trans,
UErrorCode* status) {
utrans_ENTRY(status) fillIn;
- if (fillIn == NULL) {
+ if (fillIn == nullptr) {
fillIn = uset_openEmpty();
}
if (ignoreFilter) {
diff --git a/Build/source/libs/icu/icu-src/source/i18n/vtzone.cpp b/Build/source/libs/icu/icu-src/source/i18n/vtzone.cpp
index bd81ee73e69..25af556aa22 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/vtzone.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/vtzone.cpp
@@ -25,41 +25,41 @@
U_NAMESPACE_BEGIN
// Smybol characters used by RFC2445 VTIMEZONE
-static const UChar COLON = 0x3A; /* : */
-static const UChar SEMICOLON = 0x3B; /* ; */
-static const UChar EQUALS_SIGN = 0x3D; /* = */
-static const UChar COMMA = 0x2C; /* , */
-static const UChar PLUS = 0x2B; /* + */
-static const UChar MINUS = 0x2D; /* - */
+static const char16_t COLON = 0x3A; /* : */
+static const char16_t SEMICOLON = 0x3B; /* ; */
+static const char16_t EQUALS_SIGN = 0x3D; /* = */
+static const char16_t COMMA = 0x2C; /* , */
+static const char16_t PLUS = 0x2B; /* + */
+static const char16_t MINUS = 0x2D; /* - */
// RFC2445 VTIMEZONE tokens
-static const UChar ICAL_BEGIN_VTIMEZONE[] = {0x42, 0x45, 0x47, 0x49, 0x4E, 0x3A, 0x56, 0x54, 0x49, 0x4D, 0x45, 0x5A, 0x4F, 0x4E, 0x45, 0}; /* "BEGIN:VTIMEZONE" */
-static const UChar ICAL_END_VTIMEZONE[] = {0x45, 0x4E, 0x44, 0x3A, 0x56, 0x54, 0x49, 0x4D, 0x45, 0x5A, 0x4F, 0x4E, 0x45, 0}; /* "END:VTIMEZONE" */
-static const UChar ICAL_BEGIN[] = {0x42, 0x45, 0x47, 0x49, 0x4E, 0}; /* "BEGIN" */
-static const UChar ICAL_END[] = {0x45, 0x4E, 0x44, 0}; /* "END" */
-static const UChar ICAL_VTIMEZONE[] = {0x56, 0x54, 0x49, 0x4D, 0x45, 0x5A, 0x4F, 0x4E, 0x45, 0}; /* "VTIMEZONE" */
-static const UChar ICAL_TZID[] = {0x54, 0x5A, 0x49, 0x44, 0}; /* "TZID" */
-static const UChar ICAL_STANDARD[] = {0x53, 0x54, 0x41, 0x4E, 0x44, 0x41, 0x52, 0x44, 0}; /* "STANDARD" */
-static const UChar ICAL_DAYLIGHT[] = {0x44, 0x41, 0x59, 0x4C, 0x49, 0x47, 0x48, 0x54, 0}; /* "DAYLIGHT" */
-static const UChar ICAL_DTSTART[] = {0x44, 0x54, 0x53, 0x54, 0x41, 0x52, 0x54, 0}; /* "DTSTART" */
-static const UChar ICAL_TZOFFSETFROM[] = {0x54, 0x5A, 0x4F, 0x46, 0x46, 0x53, 0x45, 0x54, 0x46, 0x52, 0x4F, 0x4D, 0}; /* "TZOFFSETFROM" */
-static const UChar ICAL_TZOFFSETTO[] = {0x54, 0x5A, 0x4F, 0x46, 0x46, 0x53, 0x45, 0x54, 0x54, 0x4F, 0}; /* "TZOFFSETTO" */
-static const UChar ICAL_RDATE[] = {0x52, 0x44, 0x41, 0x54, 0x45, 0}; /* "RDATE" */
-static const UChar ICAL_RRULE[] = {0x52, 0x52, 0x55, 0x4C, 0x45, 0}; /* "RRULE" */
-static const UChar ICAL_TZNAME[] = {0x54, 0x5A, 0x4E, 0x41, 0x4D, 0x45, 0}; /* "TZNAME" */
-static const UChar ICAL_TZURL[] = {0x54, 0x5A, 0x55, 0x52, 0x4C, 0}; /* "TZURL" */
-static const UChar ICAL_LASTMOD[] = {0x4C, 0x41, 0x53, 0x54, 0x2D, 0x4D, 0x4F, 0x44, 0x49, 0x46, 0x49, 0x45, 0x44, 0}; /* "LAST-MODIFIED" */
-
-static const UChar ICAL_FREQ[] = {0x46, 0x52, 0x45, 0x51, 0}; /* "FREQ" */
-static const UChar ICAL_UNTIL[] = {0x55, 0x4E, 0x54, 0x49, 0x4C, 0}; /* "UNTIL" */
-static const UChar ICAL_YEARLY[] = {0x59, 0x45, 0x41, 0x52, 0x4C, 0x59, 0}; /* "YEARLY" */
-static const UChar ICAL_BYMONTH[] = {0x42, 0x59, 0x4D, 0x4F, 0x4E, 0x54, 0x48, 0}; /* "BYMONTH" */
-static const UChar ICAL_BYDAY[] = {0x42, 0x59, 0x44, 0x41, 0x59, 0}; /* "BYDAY" */
-static const UChar ICAL_BYMONTHDAY[] = {0x42, 0x59, 0x4D, 0x4F, 0x4E, 0x54, 0x48, 0x44, 0x41, 0x59, 0}; /* "BYMONTHDAY" */
-
-static const UChar ICAL_NEWLINE[] = {0x0D, 0x0A, 0}; /* CRLF */
-
-static const UChar ICAL_DOW_NAMES[7][3] = {
+static const char16_t ICAL_BEGIN_VTIMEZONE[] = {0x42, 0x45, 0x47, 0x49, 0x4E, 0x3A, 0x56, 0x54, 0x49, 0x4D, 0x45, 0x5A, 0x4F, 0x4E, 0x45, 0}; /* "BEGIN:VTIMEZONE" */
+static const char16_t ICAL_END_VTIMEZONE[] = {0x45, 0x4E, 0x44, 0x3A, 0x56, 0x54, 0x49, 0x4D, 0x45, 0x5A, 0x4F, 0x4E, 0x45, 0}; /* "END:VTIMEZONE" */
+static const char16_t ICAL_BEGIN[] = {0x42, 0x45, 0x47, 0x49, 0x4E, 0}; /* "BEGIN" */
+static const char16_t ICAL_END[] = {0x45, 0x4E, 0x44, 0}; /* "END" */
+static const char16_t ICAL_VTIMEZONE[] = {0x56, 0x54, 0x49, 0x4D, 0x45, 0x5A, 0x4F, 0x4E, 0x45, 0}; /* "VTIMEZONE" */
+static const char16_t ICAL_TZID[] = {0x54, 0x5A, 0x49, 0x44, 0}; /* "TZID" */
+static const char16_t ICAL_STANDARD[] = {0x53, 0x54, 0x41, 0x4E, 0x44, 0x41, 0x52, 0x44, 0}; /* "STANDARD" */
+static const char16_t ICAL_DAYLIGHT[] = {0x44, 0x41, 0x59, 0x4C, 0x49, 0x47, 0x48, 0x54, 0}; /* "DAYLIGHT" */
+static const char16_t ICAL_DTSTART[] = {0x44, 0x54, 0x53, 0x54, 0x41, 0x52, 0x54, 0}; /* "DTSTART" */
+static const char16_t ICAL_TZOFFSETFROM[] = {0x54, 0x5A, 0x4F, 0x46, 0x46, 0x53, 0x45, 0x54, 0x46, 0x52, 0x4F, 0x4D, 0}; /* "TZOFFSETFROM" */
+static const char16_t ICAL_TZOFFSETTO[] = {0x54, 0x5A, 0x4F, 0x46, 0x46, 0x53, 0x45, 0x54, 0x54, 0x4F, 0}; /* "TZOFFSETTO" */
+static const char16_t ICAL_RDATE[] = {0x52, 0x44, 0x41, 0x54, 0x45, 0}; /* "RDATE" */
+static const char16_t ICAL_RRULE[] = {0x52, 0x52, 0x55, 0x4C, 0x45, 0}; /* "RRULE" */
+static const char16_t ICAL_TZNAME[] = {0x54, 0x5A, 0x4E, 0x41, 0x4D, 0x45, 0}; /* "TZNAME" */
+static const char16_t ICAL_TZURL[] = {0x54, 0x5A, 0x55, 0x52, 0x4C, 0}; /* "TZURL" */
+static const char16_t ICAL_LASTMOD[] = {0x4C, 0x41, 0x53, 0x54, 0x2D, 0x4D, 0x4F, 0x44, 0x49, 0x46, 0x49, 0x45, 0x44, 0}; /* "LAST-MODIFIED" */
+
+static const char16_t ICAL_FREQ[] = {0x46, 0x52, 0x45, 0x51, 0}; /* "FREQ" */
+static const char16_t ICAL_UNTIL[] = {0x55, 0x4E, 0x54, 0x49, 0x4C, 0}; /* "UNTIL" */
+static const char16_t ICAL_YEARLY[] = {0x59, 0x45, 0x41, 0x52, 0x4C, 0x59, 0}; /* "YEARLY" */
+static const char16_t ICAL_BYMONTH[] = {0x42, 0x59, 0x4D, 0x4F, 0x4E, 0x54, 0x48, 0}; /* "BYMONTH" */
+static const char16_t ICAL_BYDAY[] = {0x42, 0x59, 0x44, 0x41, 0x59, 0}; /* "BYDAY" */
+static const char16_t ICAL_BYMONTHDAY[] = {0x42, 0x59, 0x4D, 0x4F, 0x4E, 0x54, 0x48, 0x44, 0x41, 0x59, 0}; /* "BYMONTHDAY" */
+
+static const char16_t ICAL_NEWLINE[] = {0x0D, 0x0A, 0}; /* CRLF */
+
+static const char16_t ICAL_DOW_NAMES[7][3] = {
{0x53, 0x55, 0}, /* "SU" */
{0x4D, 0x4F, 0}, /* "MO" */
{0x54, 0x55, 0}, /* "TU" */
@@ -72,9 +72,9 @@ static const UChar ICAL_DOW_NAMES[7][3] = {
static const int32_t MONTHLENGTH[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
// ICU custom property
-static const UChar ICU_TZINFO_PROP[] = {0x58, 0x2D, 0x54, 0x5A, 0x49, 0x4E, 0x46, 0x4F, 0x3A, 0}; /* "X-TZINFO:" */
-static const UChar ICU_TZINFO_PARTIAL[] = {0x2F, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6C, 0x40, 0}; /* "/Partial@" */
-static const UChar ICU_TZINFO_SIMPLE[] = {0x2F, 0x53, 0x69, 0x6D, 0x70, 0x6C, 0x65, 0x40, 0}; /* "/Simple@" */
+static const char16_t ICU_TZINFO_PROP[] = {0x58, 0x2D, 0x54, 0x5A, 0x49, 0x4E, 0x46, 0x4F, 0x3A, 0}; /* "X-TZINFO:" */
+static const char16_t ICU_TZINFO_PARTIAL[] = {0x2F, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6C, 0x40, 0}; /* "/Partial@" */
+static const char16_t ICU_TZINFO_SIMPLE[] = {0x2F, 0x53, 0x69, 0x6D, 0x70, 0x6C, 0x65, 0x40, 0}; /* "/Simple@" */
/*
@@ -139,7 +139,7 @@ static UnicodeString& appendAsciiDigits(int32_t number, uint8_t length, UnicodeS
str.append(MINUS);
}
for (i = length - 1; i >= 0; i--) {
- str.append((UChar)(digits[i] + 0x0030));
+ str.append((char16_t)(digits[i] + 0x0030));
}
return str;
}
@@ -172,7 +172,7 @@ static UnicodeString& appendMillis(UDate date, UnicodeString& str) {
}
i--;
while (i >= 0) {
- str.append((UChar)(digits[i--] + 0x0030));
+ str.append((char16_t)(digits[i--] + 0x0030));
}
return str;
}
@@ -188,7 +188,7 @@ static UnicodeString& getDateTimeString(UDate time, UnicodeString& str) {
appendAsciiDigits(year, 4, str);
appendAsciiDigits(month + 1, 2, str);
appendAsciiDigits(dom, 2, str);
- str.append((UChar)0x0054 /*'T'*/);
+ str.append((char16_t)0x0054 /*'T'*/);
int32_t t = mid;
int32_t hour = t / U_MILLIS_PER_HOUR;
@@ -208,7 +208,7 @@ static UnicodeString& getDateTimeString(UDate time, UnicodeString& str) {
*/
static UnicodeString& getUTCDateTimeString(UDate time, UnicodeString& str) {
getDateTimeString(time, str);
- str.append((UChar)0x005A /*'Z'*/);
+ str.append((char16_t)0x005A /*'Z'*/);
return str;
}
@@ -295,7 +295,7 @@ static int32_t offsetStrToMillis(const UnicodeString& str, UErrorCode& status) {
break;
}
// sign
- UChar s = str.charAt(0);
+ char16_t s = str.charAt(0);
if (s == PLUS) {
sign = 1;
} else if (s == MINUS) {
@@ -885,9 +885,9 @@ public:
~VTZWriter();
void write(const UnicodeString& str);
- void write(UChar ch);
- void write(const UChar* str);
- //void write(const UChar* str, int32_t length);
+ void write(char16_t ch);
+ void write(const char16_t* str);
+ //void write(const char16_t* str, int32_t length);
private:
UnicodeString* out;
};
@@ -905,18 +905,18 @@ VTZWriter::write(const UnicodeString& str) {
}
void
-VTZWriter::write(UChar ch) {
+VTZWriter::write(char16_t ch) {
out->append(ch);
}
void
-VTZWriter::write(const UChar* str) {
+VTZWriter::write(const char16_t* str) {
out->append(str, -1);
}
/*
void
-VTZWriter::write(const UChar* str, int32_t length) {
+VTZWriter::write(const char16_t* str, int32_t length) {
out->append(str, length);
}
*/
@@ -926,7 +926,7 @@ public:
VTZReader(const UnicodeString& input);
~VTZReader();
- UChar read(void);
+ char16_t read();
private:
const UnicodeString* in;
int32_t index;
@@ -940,9 +940,9 @@ VTZReader::VTZReader(const UnicodeString& input) {
VTZReader::~VTZReader() {
}
-UChar
-VTZReader::read(void) {
- UChar ch = 0xFFFF;
+char16_t
+VTZReader::read() {
+ char16_t ch = 0xFFFF;
if (index < in->length()) {
ch = in->charAt(index);
}
@@ -1074,7 +1074,7 @@ VTimeZone::createVTimeZoneByID(const UnicodeString& ID) {
// Set ICU tzdata version
UErrorCode status = U_ZERO_ERROR;
UResourceBundle *bundle = nullptr;
- const UChar* versionStr = nullptr;
+ const char16_t* versionStr = nullptr;
int32_t len = 0;
bundle = ures_openDirect(nullptr, "zoneinfo64", &status);
versionStr = ures_getStringByKey(bundle, "TZVersion", &len, &status);
@@ -1105,7 +1105,7 @@ VTimeZone::createVTimeZoneFromBasicTimeZone(const BasicTimeZone& basic_time_zone
// Set ICU tzdata version
UResourceBundle *bundle = nullptr;
- const UChar* versionStr = nullptr;
+ const char16_t* versionStr = nullptr;
int32_t len = 0;
bundle = ures_openDirect(nullptr, "zoneinfo64", &status);
versionStr = ures_getStringByKey(bundle, "TZVersion", &len, &status);
@@ -1220,12 +1220,12 @@ VTimeZone::setRawOffset(int32_t offsetMillis) {
}
int32_t
-VTimeZone::getRawOffset(void) const {
+VTimeZone::getRawOffset() const {
return tz->getRawOffset();
}
UBool
-VTimeZone::useDaylightTime(void) const {
+VTimeZone::useDaylightTime() const {
return tz->useDaylightTime();
}
@@ -1275,7 +1275,7 @@ VTimeZone::load(VTZReader& reader, UErrorCode& status) {
UnicodeString line;
while (true) {
- UChar ch = reader.read();
+ char16_t ch = reader.read();
if (ch == 0xFFFF) {
// end of file
if (start && line.startsWith(ICAL_END_VTIMEZONE, -1)) {
@@ -1791,11 +1791,11 @@ VTimeZone::write(UDate start, VTZWriter& writer, UErrorCode& status) const {
return;
}
icutzprop->append(olsonzid);
- icutzprop->append((UChar)0x005B/*'['*/);
+ icutzprop->append((char16_t)0x005B/*'['*/);
icutzprop->append(icutzver);
icutzprop->append(ICU_TZINFO_PARTIAL, -1);
appendMillis(start, *icutzprop);
- icutzprop->append((UChar)0x005D/*']'*/);
+ icutzprop->append((char16_t)0x005D/*']'*/);
customProps.adoptElement(icutzprop, status);
if (U_FAILURE(status)) {
return;
@@ -1838,11 +1838,11 @@ VTimeZone::writeSimple(UDate time, VTZWriter& writer, UErrorCode& status) const
return;
}
icutzprop->append(olsonzid);
- icutzprop->append((UChar)0x005B/*'['*/);
+ icutzprop->append((char16_t)0x005B/*'['*/);
icutzprop->append(icutzver);
icutzprop->append(ICU_TZINFO_SIMPLE, -1);
appendMillis(time, *icutzprop);
- icutzprop->append((UChar)0x005D/*']'*/);
+ icutzprop->append((char16_t)0x005D/*']'*/);
customProps.adoptElement(icutzprop.orphan(), status);
}
writeZone(writer, rbtz, &customProps, status);
diff --git a/Build/source/libs/icu/icu-src/source/i18n/vzone.cpp b/Build/source/libs/icu/icu-src/source/i18n/vzone.cpp
index 7e3a5544fd5..5517e5144c0 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/vzone.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/vzone.cpp
@@ -26,13 +26,13 @@
U_NAMESPACE_USE
U_CAPI VZone* U_EXPORT2
-vzone_openID(const UChar* ID, int32_t idLength){
+vzone_openID(const char16_t* ID, int32_t idLength){
UnicodeString s(idLength==-1, ID, idLength);
return (VZone*) (VTimeZone::createVTimeZoneByID(s));
}
U_CAPI VZone* U_EXPORT2
-vzone_openData(const UChar* vtzdata, int32_t vtzdataLength, UErrorCode& status) {
+vzone_openData(const char16_t* vtzdata, int32_t vtzdataLength, UErrorCode& status) {
UnicodeString s(vtzdataLength==-1, vtzdata, vtzdataLength);
return (VZone*) (VTimeZone::createVTimeZone(s,status));
}
@@ -53,7 +53,7 @@ vzone_equals(const VZone* zone1, const VZone* zone2) {
}
U_CAPI UBool U_EXPORT2
-vzone_getTZURL(VZone* zone, UChar* & url, int32_t & urlLength) {
+vzone_getTZURL(VZone* zone, char16_t* & url, int32_t & urlLength) {
UnicodeString s;
UBool b = ((VTimeZone*)zone)->VTimeZone::getTZURL(s);
@@ -64,7 +64,7 @@ vzone_getTZURL(VZone* zone, UChar* & url, int32_t & urlLength) {
}
U_CAPI void U_EXPORT2
-vzone_setTZURL(VZone* zone, UChar* url, int32_t urlLength) {
+vzone_setTZURL(VZone* zone, char16_t* url, int32_t urlLength) {
UnicodeString s(urlLength==-1, url, urlLength);
((VTimeZone*)zone)->VTimeZone::setTZURL(s);
}
@@ -80,36 +80,36 @@ vzone_setLastModified(VZone* zone, UDate lastModified) {
}
U_CAPI void U_EXPORT2
-vzone_write(VZone* zone, UChar* & result, int32_t & resultLength, UErrorCode& status) {
+vzone_write(VZone* zone, char16_t* & result, int32_t & resultLength, UErrorCode& status) {
UnicodeString s;
((VTimeZone*)zone)->VTimeZone::write(s, status);
resultLength = s.length();
- result = (UChar*)uprv_malloc(resultLength);
+ result = (char16_t*)uprv_malloc(resultLength);
memcpy(result,s.getBuffer(),resultLength);
return;
}
U_CAPI void U_EXPORT2
-vzone_writeFromStart(VZone* zone, UDate start, UChar* & result, int32_t & resultLength, UErrorCode& status) {
+vzone_writeFromStart(VZone* zone, UDate start, char16_t* & result, int32_t & resultLength, UErrorCode& status) {
UnicodeString s;
((VTimeZone*)zone)->VTimeZone::write(start, s, status);
resultLength = s.length();
- result = (UChar*)uprv_malloc(resultLength);
+ result = (char16_t*)uprv_malloc(resultLength);
memcpy(result,s.getBuffer(),resultLength);
return;
}
U_CAPI void U_EXPORT2
-vzone_writeSimple(VZone* zone, UDate time, UChar* & result, int32_t & resultLength, UErrorCode& status) {
+vzone_writeSimple(VZone* zone, UDate time, char16_t* & result, int32_t & resultLength, UErrorCode& status) {
UnicodeString s;
((VTimeZone*)zone)->VTimeZone::writeSimple(time, s, status);
resultLength = s.length();
- result = (UChar*)uprv_malloc(resultLength);
+ result = (char16_t*)uprv_malloc(resultLength);
memcpy(result,s.getBuffer(),resultLength);
return;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/windtfmt.cpp b/Build/source/libs/icu/icu-src/source/i18n/windtfmt.cpp
index 4676fd0aa1c..6d705b299d7 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/windtfmt.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/windtfmt.cpp
@@ -30,7 +30,10 @@
#include "unicode/timezone.h"
#include "unicode/utmscale.h"
+#include "bytesinkutil.h"
+#include "charstr.h"
#include "cmemory.h"
+#include "ulocimp.h"
#include "uresimp.h"
#include "windtfmt.h"
#include "wintzimpl.h"
@@ -56,13 +59,13 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(Win32DateFormat)
UnicodeString* Win32DateFormat::getTimeDateFormat(const Calendar *cal, const Locale *locale, UErrorCode &status) const
{
- UnicodeString *result = NULL;
+ UnicodeString *result = nullptr;
const char *type = cal->getType();
const char *base = locale->getBaseName();
UResourceBundle *topBundle = ures_open((char *) 0, base, &status);
- UResourceBundle *calBundle = ures_getByKey(topBundle, "calendar", NULL, &status);
- UResourceBundle *typBundle = ures_getByKeyWithFallback(calBundle, type, NULL, &status);
- UResourceBundle *patBundle = ures_getByKeyWithFallback(typBundle, "DateTimePatterns", NULL, &status);
+ UResourceBundle *calBundle = ures_getByKey(topBundle, "calendar", nullptr, &status);
+ UResourceBundle *typBundle = ures_getByKeyWithFallback(calBundle, type, nullptr, &status);
+ UResourceBundle *patBundle = ures_getByKeyWithFallback(typBundle, "DateTimePatterns", nullptr, &status);
if (status == U_MISSING_RESOURCE_ERROR) {
status = U_ZERO_ERROR;
@@ -71,7 +74,7 @@ UnicodeString* Win32DateFormat::getTimeDateFormat(const Calendar *cal, const Loc
}
if (U_FAILURE(status)) {
- static const UChar defaultPattern[] = {0x007B, 0x0031, 0x007D, 0x0020, 0x007B, 0x0030, 0x007D, 0x0000}; // "{1} {0}"
+ static const char16_t defaultPattern[] = {0x007B, 0x0031, 0x007D, 0x0020, 0x007B, 0x0030, 0x007D, 0x0000}; // "{1} {0}"
return new UnicodeString(defaultPattern, UPRV_LENGTHOF(defaultPattern));
}
@@ -82,7 +85,7 @@ UnicodeString* Win32DateFormat::getTimeDateFormat(const Calendar *cal, const Loc
// Get proper date time format
glueIndex = (int32_t)(DateFormat::kDateTimeOffset + (fDateStyle - DateFormat::kDateOffset));
}
- const UChar *resStr = ures_getStringByIndex(patBundle, glueIndex, &resStrLen, &status);
+ const char16_t *resStr = ures_getStringByIndex(patBundle, glueIndex, &resStrLen, &status);
result = new UnicodeString(true, resStr, resStrLen);
@@ -99,10 +102,13 @@ UnicodeString* Win32DateFormat::getTimeDateFormat(const Calendar *cal, const Loc
static UErrorCode GetEquivalentWindowsLocaleName(const Locale& locale, UnicodeString** buffer)
{
UErrorCode status = U_ZERO_ERROR;
- char asciiBCP47Tag[LOCALE_NAME_MAX_LENGTH] = {};
// Convert from names like "en_CA" and "de_DE@collation=phonebook" to "en-CA" and "de-DE-u-co-phonebk".
- (void)uloc_toLanguageTag(locale.getName(), asciiBCP47Tag, UPRV_LENGTHOF(asciiBCP47Tag), false, &status);
+ CharString asciiBCP47Tag;
+ {
+ CharStringByteSink sink(&asciiBCP47Tag);
+ ulocimp_toLanguageTag(locale.getName(), sink, false, &status);
+ }
if (U_SUCCESS(status))
{
@@ -160,7 +166,7 @@ static UErrorCode GetEquivalentWindowsLocaleName(const Locale& locale, UnicodeSt
// TODO: Range-check timeStyle, dateStyle
Win32DateFormat::Win32DateFormat(DateFormat::EStyle timeStyle, DateFormat::EStyle dateStyle, const Locale &locale, UErrorCode &status)
- : DateFormat(), fDateTimeMsg(NULL), fTimeStyle(timeStyle), fDateStyle(dateStyle), fLocale(locale), fZoneID(), fWindowsLocaleName(nullptr)
+ : DateFormat(), fDateTimeMsg(nullptr), fTimeStyle(timeStyle), fDateStyle(dateStyle), fLocale(locale), fZoneID(), fWindowsLocaleName(nullptr)
{
if (U_SUCCESS(status)) {
GetEquivalentWindowsLocaleName(locale, &fWindowsLocaleName);
@@ -199,7 +205,7 @@ Win32DateFormat &Win32DateFormat::operator=(const Win32DateFormat &other)
// delete fCalendar;
- this->fDateTimeMsg = other.fDateTimeMsg == NULL ? NULL : new UnicodeString(*other.fDateTimeMsg);
+ this->fDateTimeMsg = other.fDateTimeMsg == nullptr ? nullptr : new UnicodeString(*other.fDateTimeMsg);
this->fTimeStyle = other.fTimeStyle;
this->fDateStyle = other.fDateStyle;
this->fLocale = other.fLocale;
@@ -209,7 +215,7 @@ Win32DateFormat &Win32DateFormat::operator=(const Win32DateFormat &other)
this->fTZI = NEW_ARRAY(TIME_ZONE_INFORMATION, 1);
*this->fTZI = *other.fTZI;
- this->fWindowsLocaleName = other.fWindowsLocaleName == NULL ? NULL : new UnicodeString(*other.fWindowsLocaleName);
+ this->fWindowsLocaleName = other.fWindowsLocaleName == nullptr ? nullptr : new UnicodeString(*other.fWindowsLocaleName);
return *this;
}
@@ -271,7 +277,7 @@ void Win32DateFormat::parse(const UnicodeString& /* text */, Calendar& /* cal */
void Win32DateFormat::adoptCalendar(Calendar *newCalendar)
{
- if (fCalendar == NULL || strcmp(fCalendar->getType(), newCalendar->getType()) != 0) {
+ if (fCalendar == nullptr || strcmp(fCalendar->getType(), newCalendar->getType()) != 0) {
UErrorCode status = U_ZERO_ERROR;
if (fDateStyle != DateFormat::kNone && fTimeStyle != DateFormat::kNone) {
@@ -317,19 +323,19 @@ void Win32DateFormat::formatDate(const SYSTEMTIME *st, UnicodeString &appendTo)
localeName = reinterpret_cast<const wchar_t*>(toOldUCharPtr(fWindowsLocaleName->getTerminatedBuffer()));
}
- result = GetDateFormatEx(localeName, dfFlags[fDateStyle - kDateOffset], st, NULL, buffer, STACK_BUFFER_SIZE, NULL);
+ result = GetDateFormatEx(localeName, dfFlags[fDateStyle - kDateOffset], st, nullptr, buffer, STACK_BUFFER_SIZE, nullptr);
if (result == 0) {
if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
- int newLength = GetDateFormatEx(localeName, dfFlags[fDateStyle - kDateOffset], st, NULL, NULL, 0, NULL);
+ int newLength = GetDateFormatEx(localeName, dfFlags[fDateStyle - kDateOffset], st, nullptr, nullptr, 0, nullptr);
buffer = NEW_ARRAY(wchar_t, newLength);
- GetDateFormatEx(localeName, dfFlags[fDateStyle - kDateOffset], st, NULL, buffer, newLength, NULL);
+ GetDateFormatEx(localeName, dfFlags[fDateStyle - kDateOffset], st, nullptr, buffer, newLength, nullptr);
}
}
- appendTo.append((const UChar *)buffer, (int32_t) wcslen(buffer));
+ appendTo.append((const char16_t *)buffer, (int32_t) wcslen(buffer));
if (buffer != stackBuffer) {
DELETE_ARRAY(buffer);
@@ -350,19 +356,19 @@ void Win32DateFormat::formatTime(const SYSTEMTIME *st, UnicodeString &appendTo)
localeName = reinterpret_cast<const wchar_t*>(toOldUCharPtr(fWindowsLocaleName->getTerminatedBuffer()));
}
- result = GetTimeFormatEx(localeName, tfFlags[fTimeStyle], st, NULL, buffer, STACK_BUFFER_SIZE);
+ result = GetTimeFormatEx(localeName, tfFlags[fTimeStyle], st, nullptr, buffer, STACK_BUFFER_SIZE);
if (result == 0) {
if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
- int newLength = GetTimeFormatEx(localeName, tfFlags[fTimeStyle], st, NULL, NULL, 0);
+ int newLength = GetTimeFormatEx(localeName, tfFlags[fTimeStyle], st, nullptr, nullptr, 0);
buffer = NEW_ARRAY(wchar_t, newLength);
- GetTimeFormatEx(localeName, tfFlags[fTimeStyle], st, NULL, buffer, newLength);
+ GetTimeFormatEx(localeName, tfFlags[fTimeStyle], st, nullptr, buffer, newLength);
}
}
- appendTo.append((const UChar *)buffer, (int32_t) wcslen(buffer));
+ appendTo.append((const char16_t *)buffer, (int32_t) wcslen(buffer));
if (buffer != stackBuffer) {
DELETE_ARRAY(buffer);
diff --git a/Build/source/libs/icu/icu-src/source/i18n/windtfmt.h b/Build/source/libs/icu/icu-src/source/i18n/windtfmt.h
index 7fe7f68f450..0c3f5427852 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/windtfmt.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/windtfmt.h
@@ -99,7 +99,7 @@ public:
* </pre>
* @return The class ID for all objects of this class.
*/
- U_I18N_API static UClassID U_EXPORT2 getStaticClassID(void);
+ U_I18N_API static UClassID U_EXPORT2 getStaticClassID();
/**
* Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This
@@ -111,7 +111,7 @@ public:
* given class have the same class ID. Objects of
* other classes have different class IDs.
*/
- virtual UClassID getDynamicClassID(void) const;
+ virtual UClassID getDynamicClassID() const;
private:
void formatDate(const SYSTEMTIME *st, UnicodeString &appendTo) const;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/winnmfmt.cpp b/Build/source/libs/icu/icu-src/source/i18n/winnmfmt.cpp
index 377d1af9bd2..bf0bd20095c 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/winnmfmt.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/winnmfmt.cpp
@@ -24,8 +24,11 @@
#include "unicode/locid.h"
#include "unicode/ustring.h"
+#include "bytesinkutil.h"
+#include "charstr.h"
#include "cmemory.h"
#include "uassert.h"
+#include "ulocimp.h"
#include "locmap.h"
#ifndef WIN32_LEAN_AND_MEAN
@@ -101,7 +104,7 @@ static void getNumberFormat(NUMBERFMTW *fmt, const wchar_t *windowsLocaleName)
static void freeNumberFormat(NUMBERFMTW *fmt)
{
- if (fmt != NULL) {
+ if (fmt != nullptr) {
DELETE_ARRAY(fmt->lpThousandSep);
DELETE_ARRAY(fmt->lpDecimalSep);
}
@@ -132,7 +135,7 @@ static void getCurrencyFormat(CURRENCYFMTW *fmt, const wchar_t *windowsLocaleNam
static void freeCurrencyFormat(CURRENCYFMTW *fmt)
{
- if (fmt != NULL) {
+ if (fmt != nullptr) {
DELETE_ARRAY(fmt->lpCurrencySymbol);
DELETE_ARRAY(fmt->lpThousandSep);
DELETE_ARRAY(fmt->lpDecimalSep);
@@ -144,10 +147,13 @@ static void freeCurrencyFormat(CURRENCYFMTW *fmt)
static UErrorCode GetEquivalentWindowsLocaleName(const Locale& locale, UnicodeString** buffer)
{
UErrorCode status = U_ZERO_ERROR;
- char asciiBCP47Tag[LOCALE_NAME_MAX_LENGTH] = {};
// Convert from names like "en_CA" and "de_DE@collation=phonebook" to "en-CA" and "de-DE-u-co-phonebk".
- (void) uloc_toLanguageTag(locale.getName(), asciiBCP47Tag, UPRV_LENGTHOF(asciiBCP47Tag), false, &status);
+ CharString asciiBCP47Tag;
+ {
+ CharStringByteSink sink(&asciiBCP47Tag);
+ ulocimp_toLanguageTag(locale.getName(), sink, false, &status);
+ }
if (U_SUCCESS(status))
{
@@ -204,7 +210,7 @@ static UErrorCode GetEquivalentWindowsLocaleName(const Locale& locale, UnicodeSt
}
Win32NumberFormat::Win32NumberFormat(const Locale &locale, UBool currency, UErrorCode &status)
- : NumberFormat(), fCurrency(currency), fFormatInfo(NULL), fFractionDigitsSet(false), fWindowsLocaleName(nullptr)
+ : NumberFormat(), fCurrency(currency), fFormatInfo(nullptr), fFractionDigitsSet(false), fWindowsLocaleName(nullptr)
{
if (!U_FAILURE(status)) {
fLCID = locale.getLCID();
@@ -246,7 +252,7 @@ Win32NumberFormat::Win32NumberFormat(const Locale &locale, UBool currency, UErro
Win32NumberFormat::Win32NumberFormat(const Win32NumberFormat &other)
: NumberFormat(other), fFormatInfo((FormatInfo*)uprv_malloc(sizeof(FormatInfo)))
{
- if (fFormatInfo != NULL) {
+ if (fFormatInfo != nullptr) {
uprv_memset(fFormatInfo, 0, sizeof(*fFormatInfo));
}
*this = other;
@@ -254,7 +260,7 @@ Win32NumberFormat::Win32NumberFormat(const Win32NumberFormat &other)
Win32NumberFormat::~Win32NumberFormat()
{
- if (fFormatInfo != NULL) {
+ if (fFormatInfo != nullptr) {
if (fCurrency) {
freeCurrencyFormat(&fFormatInfo->currency);
} else {
@@ -275,7 +281,7 @@ Win32NumberFormat &Win32NumberFormat::operator=(const Win32NumberFormat &other)
this->fLocale = other.fLocale;
this->fLCID = other.fLCID;
this->fFractionDigitsSet = other.fFractionDigitsSet;
- this->fWindowsLocaleName = other.fWindowsLocaleName == NULL ? NULL : new UnicodeString(*other.fWindowsLocaleName);
+ this->fWindowsLocaleName = other.fWindowsLocaleName == nullptr ? nullptr : new UnicodeString(*other.fWindowsLocaleName);
const wchar_t *localeName = nullptr;
@@ -344,7 +350,7 @@ UnicodeString &Win32NumberFormat::format(int32_t numDigits, UnicodeString &appen
nBuffer[0] = 0x0000;
- /* Due to the arguments causing a result to be <= 23 characters (+2 for NULL and minus),
+ /* Due to the arguments causing a result to be <= 23 characters (+2 for nullptr and minus),
we don't need to reallocate the buffer. */
va_start(args, fmt);
result = _vsnwprintf(nBuffer, STACK_BUFFER_SIZE, fmt, args);
@@ -360,7 +366,7 @@ UnicodeString &Win32NumberFormat::format(int32_t numDigits, UnicodeString &appen
newLength = _vscwprintf(fmt, args);
va_end(args);
- nBuffer = NEW_ARRAY(UChar, newLength + 1);
+ nBuffer = NEW_ARRAY(char16_t, newLength + 1);
va_start(args, fmt);
result = _vsnwprintf(nBuffer, newLength + 1, fmt, args);
@@ -412,7 +418,7 @@ UnicodeString &Win32NumberFormat::format(int32_t numDigits, UnicodeString &appen
DWORD lastError = GetLastError();
if (lastError == ERROR_INSUFFICIENT_BUFFER) {
- int newLength = GetCurrencyFormatEx(localeName, 0, nBuffer, &formatInfo.currency, NULL, 0);
+ int newLength = GetCurrencyFormatEx(localeName, 0, nBuffer, &formatInfo.currency, nullptr, 0);
buffer = NEW_ARRAY(wchar_t, newLength);
buffer[0] = 0x0000;
@@ -432,7 +438,7 @@ UnicodeString &Win32NumberFormat::format(int32_t numDigits, UnicodeString &appen
if (result == 0) {
if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
- int newLength = GetNumberFormatEx(localeName, 0, nBuffer, &formatInfo.number, NULL, 0);
+ int newLength = GetNumberFormatEx(localeName, 0, nBuffer, &formatInfo.number, nullptr, 0);
buffer = NEW_ARRAY(wchar_t, newLength);
buffer[0] = 0x0000;
@@ -441,7 +447,7 @@ UnicodeString &Win32NumberFormat::format(int32_t numDigits, UnicodeString &appen
}
}
- appendTo.append((UChar *)buffer, (int32_t) wcslen(buffer));
+ appendTo.append((char16_t *)buffer, (int32_t) wcslen(buffer));
if (buffer != stackBuffer) {
DELETE_ARRAY(buffer);
diff --git a/Build/source/libs/icu/icu-src/source/i18n/winnmfmt.h b/Build/source/libs/icu/icu-src/source/i18n/winnmfmt.h
index 99571d20138..1cf87f4d2c0 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/winnmfmt.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/winnmfmt.h
@@ -132,7 +132,7 @@ public:
* </pre>
* @return The class ID for all objects of this class.
*/
- U_I18N_API static UClassID U_EXPORT2 getStaticClassID(void);
+ U_I18N_API static UClassID U_EXPORT2 getStaticClassID();
/**
* Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This
@@ -144,7 +144,7 @@ public:
* given class have the same class ID. Objects of
* other classes have different class IDs.
*/
- virtual UClassID getDynamicClassID(void) const;
+ virtual UClassID getDynamicClassID() const;
private:
UnicodeString &format(int32_t numDigits, UnicodeString &appendTo, const wchar_t *format, ...) const;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/wintzimpl.cpp b/Build/source/libs/icu/icu-src/source/i18n/wintzimpl.cpp
index 5f70d091bec..8f2961f8f06 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/wintzimpl.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/wintzimpl.cpp
@@ -41,12 +41,12 @@ static UBool getSystemTimeInformation(TimeZone *tz, SYSTEMTIME &daylightDate, SY
UErrorCode status = U_ZERO_ERROR;
UBool result = true;
BasicTimeZone *btz = (BasicTimeZone*)tz; // we should check type
- InitialTimeZoneRule *initial = NULL;
- AnnualTimeZoneRule *std = NULL, *dst = NULL;
+ InitialTimeZoneRule *initial = nullptr;
+ AnnualTimeZoneRule *std = nullptr, *dst = nullptr;
btz->getSimpleRulesNear(uprv_getUTCtime(), initial, std, dst, status);
if (U_SUCCESS(status)) {
- if (std == NULL || dst == NULL) {
+ if (std == nullptr || dst == nullptr) {
bias = -1 * (initial->getRawOffset()/60000);
standardBias = 0;
daylightBias = 0;
@@ -117,12 +117,12 @@ static UBool getSystemTimeInformation(TimeZone *tz, SYSTEMTIME &daylightDate, SY
return result;
}
-static UBool getWindowsTimeZoneInfo(TIME_ZONE_INFORMATION *zoneInfo, const UChar *icuid, int32_t length) {
+static UBool getWindowsTimeZoneInfo(TIME_ZONE_INFORMATION *zoneInfo, const char16_t *icuid, int32_t length) {
UBool result = false;
UnicodeString id = UnicodeString(icuid, length);
TimeZone *tz = TimeZone::createTimeZone(id);
- if (tz != NULL) {
+ if (tz != nullptr) {
int32_t bias;
int32_t daylightBias;
int32_t standardBias;
@@ -149,7 +149,7 @@ static UBool getWindowsTimeZoneInfo(TIME_ZONE_INFORMATION *zoneInfo, const UChar
* information to put into zoneInfo. This includes bias and standard time date and daylight saving date.
*/
U_CAPI UBool U_EXPORT2
-uprv_getWindowsTimeZoneInfo(TIME_ZONE_INFORMATION *zoneInfo, const UChar *icuid, int32_t length)
+uprv_getWindowsTimeZoneInfo(TIME_ZONE_INFORMATION *zoneInfo, const char16_t *icuid, int32_t length)
{
if (getWindowsTimeZoneInfo(zoneInfo, icuid, length)) {
return true;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/zonemeta.cpp b/Build/source/libs/icu/icu-src/source/i18n/zonemeta.cpp
index 7cf3a5e1312..78d2391479f 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/zonemeta.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/zonemeta.cpp
@@ -33,21 +33,21 @@
static icu::UMutex gZoneMetaLock;
// CLDR Canonical ID mapping table
-static UHashtable *gCanonicalIDCache = NULL;
+static UHashtable *gCanonicalIDCache = nullptr;
static icu::UInitOnce gCanonicalIDCacheInitOnce {};
// Metazone mapping table
-static UHashtable *gOlsonToMeta = NULL;
+static UHashtable *gOlsonToMeta = nullptr;
static icu::UInitOnce gOlsonToMetaInitOnce {};
// Available metazone IDs vector and table
-static icu::UVector *gMetaZoneIDs = NULL;
-static UHashtable *gMetaZoneIDTable = NULL;
+static icu::UVector *gMetaZoneIDs = nullptr;
+static UHashtable *gMetaZoneIDTable = nullptr;
static icu::UInitOnce gMetaZoneIDsInitOnce {};
// Country info vectors
-static icu::UVector *gSingleZoneCountries = NULL;
-static icu::UVector *gMultiZonesCountries = NULL;
+static icu::UVector *gSingleZoneCountries = nullptr;
+static icu::UVector *gMultiZonesCountries = nullptr;
static icu::UInitOnce gCountryInfoVectorsInitOnce {};
U_CDECL_BEGIN
@@ -55,45 +55,45 @@ U_CDECL_BEGIN
/**
* Cleanup callback func
*/
-static UBool U_CALLCONV zoneMeta_cleanup(void)
+static UBool U_CALLCONV zoneMeta_cleanup()
{
- if (gCanonicalIDCache != NULL) {
+ if (gCanonicalIDCache != nullptr) {
uhash_close(gCanonicalIDCache);
- gCanonicalIDCache = NULL;
+ gCanonicalIDCache = nullptr;
}
gCanonicalIDCacheInitOnce.reset();
- if (gOlsonToMeta != NULL) {
+ if (gOlsonToMeta != nullptr) {
uhash_close(gOlsonToMeta);
- gOlsonToMeta = NULL;
+ gOlsonToMeta = nullptr;
}
gOlsonToMetaInitOnce.reset();
- if (gMetaZoneIDTable != NULL) {
+ if (gMetaZoneIDTable != nullptr) {
uhash_close(gMetaZoneIDTable);
- gMetaZoneIDTable = NULL;
+ gMetaZoneIDTable = nullptr;
}
// delete after closing gMetaZoneIDTable, because it holds
// value objects held by the hashtable
delete gMetaZoneIDs;
- gMetaZoneIDs = NULL;
+ gMetaZoneIDs = nullptr;
gMetaZoneIDsInitOnce.reset();
delete gSingleZoneCountries;
- gSingleZoneCountries = NULL;
+ gSingleZoneCountries = nullptr;
delete gMultiZonesCountries;
- gMultiZonesCountries = NULL;
+ gMultiZonesCountries = nullptr;
gCountryInfoVectorsInitOnce.reset();
return true;
}
/**
- * Deleter for UChar* string
+ * Deleter for char16_t* string
*/
static void U_CALLCONV
deleteUCharString(void *obj) {
- UChar *entry = (UChar*)obj;
+ char16_t *entry = (char16_t*)obj;
uprv_free(entry);
}
@@ -120,19 +120,20 @@ static const char gKeyTypeData[] = "keyTypeData";
static const char gTypeAliasTag[] = "typeAlias";
static const char gTypeMapTag[] = "typeMap";
static const char gTimezoneTag[] = "timezone";
+static const char gIanaMapTag[] = "ianaMap";
static const char gPrimaryZonesTag[] = "primaryZones";
static const char gWorldTag[] = "001";
-static const UChar gWorld[] = {0x30, 0x30, 0x31, 0x00}; // "001"
+static const char16_t gWorld[] = {0x30, 0x30, 0x31, 0x00}; // "001"
-static const UChar gDefaultFrom[] = {0x31, 0x39, 0x37, 0x30, 0x2D, 0x30, 0x31, 0x2D, 0x30, 0x31,
+static const char16_t gDefaultFrom[] = {0x31, 0x39, 0x37, 0x30, 0x2D, 0x30, 0x31, 0x2D, 0x30, 0x31,
0x20, 0x30, 0x30, 0x3A, 0x30, 0x30, 0x00}; // "1970-01-01 00:00"
-static const UChar gDefaultTo[] = {0x39, 0x39, 0x39, 0x39, 0x2D, 0x31, 0x32, 0x2D, 0x33, 0x31,
+static const char16_t gDefaultTo[] = {0x39, 0x39, 0x39, 0x39, 0x2D, 0x31, 0x32, 0x2D, 0x33, 0x31,
0x20, 0x32, 0x33, 0x3A, 0x35, 0x39, 0x00}; // "9999-12-31 23:59"
-static const UChar gCustomTzPrefix[] = {0x47, 0x4D, 0x54, 0}; // "GMT"
+static const char16_t gCustomTzPrefix[] = {0x47, 0x4D, 0x54, 0}; // "GMT"
#define ASCII_DIGIT(c) (((c)>=0x30 && (c)<=0x39) ? (c)-0x30 : -1)
@@ -141,7 +142,7 @@ static const UChar gCustomTzPrefix[] = {0x47, 0x4D, 0x54, 0}; // "GMT"
* The format used by CLDR metazone mapping is "yyyy-MM-dd HH:mm".
*/
static UDate
-parseDate (const UChar *text, UErrorCode &status) {
+parseDate (const char16_t *text, UErrorCode &status) {
if (U_FAILURE(status)) {
return 0;
}
@@ -212,56 +213,56 @@ parseDate (const UChar *text, UErrorCode &status) {
}
static void U_CALLCONV initCanonicalIDCache(UErrorCode &status) {
- gCanonicalIDCache = uhash_open(uhash_hashUChars, uhash_compareUChars, NULL, &status);
- if (gCanonicalIDCache == NULL) {
+ gCanonicalIDCache = uhash_open(uhash_hashUChars, uhash_compareUChars, nullptr, &status);
+ if (gCanonicalIDCache == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
}
if (U_FAILURE(status)) {
- gCanonicalIDCache = NULL;
+ gCanonicalIDCache = nullptr;
}
// No key/value deleters - keys/values are from a resource bundle
ucln_i18n_registerCleanup(UCLN_I18N_ZONEMETA, zoneMeta_cleanup);
}
-const UChar* U_EXPORT2
+const char16_t* U_EXPORT2
ZoneMeta::getCanonicalCLDRID(const UnicodeString &tzid, UErrorCode& status) {
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
if (tzid.isBogus() || tzid.length() > ZID_KEY_MAX) {
status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
// Checking the cached results
umtx_initOnce(gCanonicalIDCacheInitOnce, &initCanonicalIDCache, status);
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
- const UChar *canonicalID = NULL;
+ const char16_t *canonicalID = nullptr;
UErrorCode tmpStatus = U_ZERO_ERROR;
- UChar utzid[ZID_KEY_MAX + 1];
+ char16_t utzid[ZID_KEY_MAX + 1];
tzid.extract(utzid, ZID_KEY_MAX + 1, tmpStatus);
U_ASSERT(tmpStatus == U_ZERO_ERROR); // we checked the length of tzid already
if (!uprv_isInvariantUString(utzid, -1)) {
// All of known tz IDs are only containing ASCII invariant characters.
status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
// Check if it was already cached
umtx_lock(&gZoneMetaLock);
{
- canonicalID = (const UChar *)uhash_get(gCanonicalIDCache, utzid);
+ canonicalID = (const char16_t *)uhash_get(gCanonicalIDCache, utzid);
}
umtx_unlock(&gZoneMetaLock);
- if (canonicalID != NULL) {
+ if (canonicalID != nullptr) {
return canonicalID;
}
@@ -278,32 +279,32 @@ ZoneMeta::getCanonicalCLDRID(const UnicodeString &tzid, UErrorCode& status) {
}
}
- UResourceBundle *top = ures_openDirect(NULL, gKeyTypeData, &tmpStatus);
- UResourceBundle *rb = ures_getByKey(top, gTypeMapTag, NULL, &tmpStatus);
+ UResourceBundle *top = ures_openDirect(nullptr, gKeyTypeData, &tmpStatus);
+ UResourceBundle *rb = ures_getByKey(top, gTypeMapTag, nullptr, &tmpStatus);
ures_getByKey(rb, gTimezoneTag, rb, &tmpStatus);
ures_getByKey(rb, id, rb, &tmpStatus);
if (U_SUCCESS(tmpStatus)) {
// type entry (canonical) found
- // the input is the canonical ID. resolve to const UChar*
+ // the input is the canonical ID. resolve to const char16_t*
canonicalID = TimeZone::findID(tzid);
isInputCanonical = true;
}
- if (canonicalID == NULL) {
+ if (canonicalID == nullptr) {
// If a map element not found, then look for an alias
tmpStatus = U_ZERO_ERROR;
ures_getByKey(top, gTypeAliasTag, rb, &tmpStatus);
ures_getByKey(rb, gTimezoneTag, rb, &tmpStatus);
- const UChar *canonical = ures_getStringByKey(rb,id,NULL,&tmpStatus);
+ const char16_t *canonical = ures_getStringByKey(rb,id,nullptr,&tmpStatus);
if (U_SUCCESS(tmpStatus)) {
// canonical map found
canonicalID = canonical;
}
- if (canonicalID == NULL) {
+ if (canonicalID == nullptr) {
// Dereference the input ID using the tz data
- const UChar *derefer = TimeZone::dereferOlsonLink(tzid);
- if (derefer == NULL) {
+ const char16_t *derefer = TimeZone::dereferOlsonLink(tzid);
+ if (derefer == nullptr) {
status = U_ILLEGAL_ARGUMENT_ERROR;
} else {
int32_t len = u_strlen(derefer);
@@ -322,7 +323,7 @@ ZoneMeta::getCanonicalCLDRID(const UnicodeString &tzid, UErrorCode& status) {
// rb still points to the alias table, so we don't have to go looking
// for it.
tmpStatus = U_ZERO_ERROR;
- canonical = ures_getStringByKey(rb,id,NULL,&tmpStatus);
+ canonical = ures_getStringByKey(rb,id,nullptr,&tmpStatus);
if (U_SUCCESS(tmpStatus)) {
// canonical map for the dereferenced ID found
canonicalID = canonical;
@@ -337,26 +338,26 @@ ZoneMeta::getCanonicalCLDRID(const UnicodeString &tzid, UErrorCode& status) {
ures_close(top);
if (U_SUCCESS(status)) {
- U_ASSERT(canonicalID != NULL); // canocanilD must be non-NULL here
+ U_ASSERT(canonicalID != nullptr); // canocanilD must be non-nullptr here
// Put the resolved canonical ID to the cache
umtx_lock(&gZoneMetaLock);
{
- const UChar* idInCache = (const UChar *)uhash_get(gCanonicalIDCache, utzid);
- if (idInCache == NULL) {
- const UChar* key = ZoneMeta::findTimeZoneID(tzid);
- U_ASSERT(key != NULL);
- if (key != NULL) {
- idInCache = (const UChar *)uhash_put(gCanonicalIDCache, (void *)key, (void *)canonicalID, &status);
- U_ASSERT(idInCache == NULL);
+ const char16_t* idInCache = (const char16_t *)uhash_get(gCanonicalIDCache, utzid);
+ if (idInCache == nullptr) {
+ const char16_t* key = ZoneMeta::findTimeZoneID(tzid);
+ U_ASSERT(key != nullptr);
+ if (key != nullptr) {
+ idInCache = (const char16_t *)uhash_put(gCanonicalIDCache, (void *)key, (void *)canonicalID, &status);
+ U_ASSERT(idInCache == nullptr);
}
}
if (U_SUCCESS(status) && isInputCanonical) {
// Also put canonical ID itself into the cache if not exist
- const UChar *canonicalInCache = (const UChar*)uhash_get(gCanonicalIDCache, canonicalID);
- if (canonicalInCache == NULL) {
- canonicalInCache = (const UChar *)uhash_put(gCanonicalIDCache, (void *)canonicalID, (void *)canonicalID, &status);
- U_ASSERT(canonicalInCache == NULL);
+ const char16_t *canonicalInCache = (const char16_t*)uhash_get(gCanonicalIDCache, canonicalID);
+ if (canonicalInCache == nullptr) {
+ canonicalInCache = (const char16_t *)uhash_put(gCanonicalIDCache, (void *)canonicalID, (void *)canonicalID, &status);
+ U_ASSERT(canonicalInCache == nullptr);
}
}
}
@@ -368,8 +369,8 @@ ZoneMeta::getCanonicalCLDRID(const UnicodeString &tzid, UErrorCode& status) {
UnicodeString& U_EXPORT2
ZoneMeta::getCanonicalCLDRID(const UnicodeString &tzid, UnicodeString &systemID, UErrorCode& status) {
- const UChar *canonicalID = getCanonicalCLDRID(tzid, status);
- if (U_FAILURE(status) || canonicalID == NULL) {
+ const char16_t *canonicalID = getCanonicalCLDRID(tzid, status);
+ if (U_FAILURE(status) || canonicalID == nullptr) {
systemID.setToBogus();
return systemID;
}
@@ -377,9 +378,9 @@ ZoneMeta::getCanonicalCLDRID(const UnicodeString &tzid, UnicodeString &systemID,
return systemID;
}
-const UChar* U_EXPORT2
+const char16_t* U_EXPORT2
ZoneMeta::getCanonicalCLDRID(const TimeZone& tz) {
- if (dynamic_cast<const OlsonTimeZone *>(&tz) != NULL) {
+ if (dynamic_cast<const OlsonTimeZone *>(&tz) != nullptr) {
// short cut for OlsonTimeZone
const OlsonTimeZone *otz = (const OlsonTimeZone*)&tz;
return otz->getCanonicalID();
@@ -389,43 +390,72 @@ ZoneMeta::getCanonicalCLDRID(const TimeZone& tz) {
return getCanonicalCLDRID(tz.getID(tzID), status);
}
+UnicodeString& U_EXPORT2
+ZoneMeta::getIanaID(const UnicodeString& tzid, UnicodeString& ianaID, UErrorCode& status) {
+ // First, get CLDR canonical ID
+ const char16_t *canonicalID = getCanonicalCLDRID(tzid, status);
+ if (U_FAILURE(status) || canonicalID == nullptr) {
+ ianaID.setToBogus();
+ return ianaID;
+ }
+ // Find IANA mapping if any.
+ UErrorCode tmpStatus = U_ZERO_ERROR;
+ UnicodeString tmpKey(canonicalID);
+ tmpKey.findAndReplace(UnicodeString("/"), UnicodeString(":"));
+ char keyBuf[ZID_KEY_MAX + 1];
+ /* int32_t keyLen = */ tmpKey.extract(0, tmpKey.length(), keyBuf, sizeof(keyBuf), US_INV);
+
+ StackUResourceBundle r;
+ ures_openDirectFillIn(r.getAlias(), nullptr, gKeyTypeData, &tmpStatus);
+ ures_getByKey(r.getAlias(), gIanaMapTag, r.getAlias(), &tmpStatus);
+ ures_getByKey(r.getAlias(), gTimezoneTag, r.getAlias(), &tmpStatus);
+ int32_t tmpLen = 0;
+ const char16_t* tmpIana = ures_getStringByKey(r.getAlias(), keyBuf, &tmpLen, &tmpStatus);
+ if (U_SUCCESS(tmpStatus)) {
+ ianaID.setTo(true, tmpIana, -1);
+ } else {
+ ianaID.setTo(true, canonicalID, -1);
+ }
+ return ianaID;
+}
+
static void U_CALLCONV countryInfoVectorsInit(UErrorCode &status) {
// Create empty vectors
// No deleters for these UVectors, it's a reference to a resource bundle string.
- gSingleZoneCountries = new UVector(NULL, uhash_compareUChars, status);
- if (gSingleZoneCountries == NULL) {
+ gSingleZoneCountries = new UVector(nullptr, uhash_compareUChars, status);
+ if (gSingleZoneCountries == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
}
- gMultiZonesCountries = new UVector(NULL, uhash_compareUChars, status);
- if (gMultiZonesCountries == NULL) {
+ gMultiZonesCountries = new UVector(nullptr, uhash_compareUChars, status);
+ if (gMultiZonesCountries == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
}
if (U_FAILURE(status)) {
delete gSingleZoneCountries;
delete gMultiZonesCountries;
- gSingleZoneCountries = NULL;
- gMultiZonesCountries = NULL;
+ gSingleZoneCountries = nullptr;
+ gMultiZonesCountries = nullptr;
}
ucln_i18n_registerCleanup(UCLN_I18N_ZONEMETA, zoneMeta_cleanup);
}
UnicodeString& U_EXPORT2
-ZoneMeta::getCanonicalCountry(const UnicodeString &tzid, UnicodeString &country, UBool *isPrimary /* = NULL */) {
- if (isPrimary != NULL) {
+ZoneMeta::getCanonicalCountry(const UnicodeString &tzid, UnicodeString &country, UBool *isPrimary /* = nullptr */) {
+ if (isPrimary != nullptr) {
*isPrimary = false;
}
- const UChar *region = TimeZone::getRegion(tzid);
- if (region != NULL && u_strcmp(gWorld, region) != 0) {
+ const char16_t *region = TimeZone::getRegion(tzid);
+ if (region != nullptr && u_strcmp(gWorld, region) != 0) {
country.setTo(region, -1);
} else {
country.setToBogus();
return country;
}
- if (isPrimary != NULL) {
+ if (isPrimary != nullptr) {
char regionBuf[] = {0, 0, 0};
// Checking the cached results
@@ -455,7 +485,7 @@ ZoneMeta::getCanonicalCountry(const UnicodeString &tzid, UnicodeString &country,
u_UCharsToChars(region, regionBuf, 2);
- StringEnumeration *ids = TimeZone::createTimeZoneIDEnumeration(UCAL_ZONE_TYPE_CANONICAL_LOCATION, regionBuf, NULL, status);
+ StringEnumeration *ids = TimeZone::createTimeZoneIDEnumeration(UCAL_ZONE_TYPE_CANONICAL_LOCATION, regionBuf, nullptr, status);
int32_t idsLen = ids->count(status);
if (U_SUCCESS(status) && idsLen == 1) {
// only the single zone is available for the region
@@ -492,9 +522,9 @@ ZoneMeta::getCanonicalCountry(const UnicodeString &tzid, UnicodeString &country,
u_UCharsToChars(region, regionBuf, 2);
}
- UResourceBundle *rb = ures_openDirect(NULL, gMetaZones, &status);
+ UResourceBundle *rb = ures_openDirect(nullptr, gMetaZones, &status);
ures_getByKey(rb, gPrimaryZonesTag, rb, &status);
- const UChar *primaryZone = ures_getStringByKey(rb, regionBuf, &idLen, &status);
+ const char16_t *primaryZone = ures_getStringByKey(rb, regionBuf, &idLen, &status);
if (U_SUCCESS(status)) {
if (tzid.compare(primaryZone, idLen) == 0) {
*isPrimary = true;
@@ -518,7 +548,7 @@ UnicodeString& U_EXPORT2
ZoneMeta::getMetazoneID(const UnicodeString &tzid, UDate date, UnicodeString &result) {
UBool isSet = false;
const UVector *mappings = getMetazoneMappings(tzid);
- if (mappings != NULL) {
+ if (mappings != nullptr) {
for (int32_t i = 0; i < mappings->size(); i++) {
OlsonToMetaMappingEntry *mzm = (OlsonToMetaMappingEntry*)mappings->elementAt(i);
if (mzm->from <= date && mzm->to > date) {
@@ -535,11 +565,11 @@ ZoneMeta::getMetazoneID(const UnicodeString &tzid, UDate date, UnicodeString &re
}
static void U_CALLCONV olsonToMetaInit(UErrorCode &status) {
- U_ASSERT(gOlsonToMeta == NULL);
+ U_ASSERT(gOlsonToMeta == nullptr);
ucln_i18n_registerCleanup(UCLN_I18N_ZONEMETA, zoneMeta_cleanup);
- gOlsonToMeta = uhash_open(uhash_hashUChars, uhash_compareUChars, NULL, &status);
+ gOlsonToMeta = uhash_open(uhash_hashUChars, uhash_compareUChars, nullptr, &status);
if (U_FAILURE(status)) {
- gOlsonToMeta = NULL;
+ gOlsonToMeta = nullptr;
} else {
uhash_setKeyDeleter(gOlsonToMeta, deleteUCharString);
uhash_setValueDeleter(gOlsonToMeta, uprv_deleteUObject);
@@ -550,19 +580,19 @@ static void U_CALLCONV olsonToMetaInit(UErrorCode &status) {
const UVector* U_EXPORT2
ZoneMeta::getMetazoneMappings(const UnicodeString &tzid) {
UErrorCode status = U_ZERO_ERROR;
- UChar tzidUChars[ZID_KEY_MAX + 1];
+ char16_t tzidUChars[ZID_KEY_MAX + 1];
tzid.extract(tzidUChars, ZID_KEY_MAX + 1, status);
if (U_FAILURE(status) || status == U_STRING_NOT_TERMINATED_WARNING) {
- return NULL;
+ return nullptr;
}
umtx_initOnce(gOlsonToMetaInitOnce, &olsonToMetaInit, status);
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
// get the mapping from cache
- const UVector *result = NULL;
+ const UVector *result = nullptr;
umtx_lock(&gZoneMetaLock);
{
@@ -570,15 +600,15 @@ ZoneMeta::getMetazoneMappings(const UnicodeString &tzid) {
}
umtx_unlock(&gZoneMetaLock);
- if (result != NULL) {
+ if (result != nullptr) {
return result;
}
// miss the cache - create new one
UVector *tmpResult = createMetazoneMappings(tzid);
- if (tmpResult == NULL) {
+ if (tmpResult == nullptr) {
// not available
- return NULL;
+ return nullptr;
}
// put the new one into the cache
@@ -586,20 +616,20 @@ ZoneMeta::getMetazoneMappings(const UnicodeString &tzid) {
{
// make sure it's already created
result = (UVector*) uhash_get(gOlsonToMeta, tzidUChars);
- if (result == NULL) {
+ if (result == nullptr) {
// add the one just created
int32_t tzidLen = tzid.length() + 1;
- UChar *key = (UChar*)uprv_malloc(tzidLen * sizeof(UChar));
- if (key == NULL) {
- // memory allocation error.. just return NULL
- result = NULL;
+ char16_t *key = (char16_t*)uprv_malloc(tzidLen * sizeof(char16_t));
+ if (key == nullptr) {
+ // memory allocation error.. just return nullptr
+ result = nullptr;
delete tmpResult;
} else {
tzid.extract(key, tzidLen, status);
uhash_put(gOlsonToMeta, key, tmpResult, &status);
if (U_FAILURE(status)) {
// delete the mapping
- result = NULL;
+ result = nullptr;
delete tmpResult;
} else {
result = tmpResult;
@@ -621,7 +651,7 @@ ZoneMeta::createMetazoneMappings(const UnicodeString &tzid) {
UErrorCode status = U_ZERO_ERROR;
UnicodeString canonicalID;
- UResourceBundle *rb = ures_openDirect(NULL, gMetaZones, &status);
+ UResourceBundle *rb = ures_openDirect(nullptr, gMetaZones, &status);
ures_getByKey(rb, gMetazoneInfo, rb, &status);
getCanonicalCLDRID(tzid, canonicalID, status);
@@ -642,17 +672,17 @@ ZoneMeta::createMetazoneMappings(const UnicodeString &tzid) {
ures_getByKey(rb, tzKey, rb, &status);
if (U_SUCCESS(status)) {
- UResourceBundle *mz = NULL;
+ UResourceBundle *mz = nullptr;
while (ures_hasNext(rb)) {
mz = ures_getNextResource(rb, mz, &status);
- const UChar *mz_name = ures_getStringByIndex(mz, 0, NULL, &status);
- const UChar *mz_from = gDefaultFrom;
- const UChar *mz_to = gDefaultTo;
+ const char16_t *mz_name = ures_getStringByIndex(mz, 0, nullptr, &status);
+ const char16_t *mz_from = gDefaultFrom;
+ const char16_t *mz_to = gDefaultTo;
if (ures_getSize(mz) == 3) {
- mz_from = ures_getStringByIndex(mz, 1, NULL, &status);
- mz_to = ures_getStringByIndex(mz, 2, NULL, &status);
+ mz_from = ures_getStringByIndex(mz, 1, nullptr, &status);
+ mz_to = ures_getStringByIndex(mz, 2, nullptr, &status);
}
if(U_FAILURE(status)){
@@ -700,7 +730,7 @@ ZoneMeta::createMetazoneMappings(const UnicodeString &tzid) {
UnicodeString& U_EXPORT2
ZoneMeta::getZoneIdByMetazone(const UnicodeString &mzid, const UnicodeString &region, UnicodeString &result) {
UErrorCode status = U_ZERO_ERROR;
- const UChar *tzid = NULL;
+ const char16_t *tzid = nullptr;
int32_t tzidLen = 0;
char keyBuf[ZID_KEY_MAX + 1];
int32_t keyLen = 0;
@@ -713,7 +743,7 @@ ZoneMeta::getZoneIdByMetazone(const UnicodeString &mzid, const UnicodeString &re
keyLen = mzid.extract(0, mzid.length(), keyBuf, ZID_KEY_MAX + 1, US_INV);
keyBuf[keyLen] = 0;
- UResourceBundle *rb = ures_openDirect(NULL, gMetaZones, &status);
+ UResourceBundle *rb = ures_openDirect(nullptr, gMetaZones, &status);
ures_getByKey(rb, gMapTimezonesTag, rb, &status);
ures_getByKey(rb, keyBuf, rb, &status);
@@ -727,14 +757,14 @@ ZoneMeta::getZoneIdByMetazone(const UnicodeString &mzid, const UnicodeString &re
status = U_ZERO_ERROR;
}
}
- if (U_SUCCESS(status) && tzid == NULL) {
+ if (U_SUCCESS(status) && tzid == nullptr) {
// try "001"
tzid = ures_getStringByKey(rb, gWorldTag, &tzidLen, &status);
}
}
ures_close(rb);
- if (tzid == NULL) {
+ if (tzid == nullptr) {
result.setToBogus();
} else {
result.setTo(tzid, tzidLen);
@@ -744,30 +774,30 @@ ZoneMeta::getZoneIdByMetazone(const UnicodeString &mzid, const UnicodeString &re
}
static void U_CALLCONV initAvailableMetaZoneIDs () {
- U_ASSERT(gMetaZoneIDs == NULL);
- U_ASSERT(gMetaZoneIDTable == NULL);
+ U_ASSERT(gMetaZoneIDs == nullptr);
+ U_ASSERT(gMetaZoneIDTable == nullptr);
ucln_i18n_registerCleanup(UCLN_I18N_ZONEMETA, zoneMeta_cleanup);
UErrorCode status = U_ZERO_ERROR;
- gMetaZoneIDTable = uhash_open(uhash_hashUnicodeString, uhash_compareUnicodeString, NULL, &status);
- if (U_FAILURE(status) || gMetaZoneIDTable == NULL) {
- gMetaZoneIDTable = NULL;
+ gMetaZoneIDTable = uhash_open(uhash_hashUnicodeString, uhash_compareUnicodeString, nullptr, &status);
+ if (U_FAILURE(status) || gMetaZoneIDTable == nullptr) {
+ gMetaZoneIDTable = nullptr;
return;
}
uhash_setKeyDeleter(gMetaZoneIDTable, uprv_deleteUObject);
// No valueDeleter, because the vector maintain the value objects
- gMetaZoneIDs = new UVector(NULL, uhash_compareUChars, status);
- if (U_FAILURE(status) || gMetaZoneIDs == NULL) {
+ gMetaZoneIDs = new UVector(nullptr, uhash_compareUChars, status);
+ if (U_FAILURE(status) || gMetaZoneIDs == nullptr) {
delete gMetaZoneIDs;
- gMetaZoneIDs = NULL;
+ gMetaZoneIDs = nullptr;
uhash_close(gMetaZoneIDTable);
- gMetaZoneIDTable = NULL;
+ gMetaZoneIDTable = nullptr;
return;
}
gMetaZoneIDs->setDeleter(uprv_free);
- UResourceBundle *rb = ures_openDirect(NULL, gMetaZones, &status);
- UResourceBundle *bundle = ures_getByKey(rb, gMapTimezonesTag, NULL, &status);
+ UResourceBundle *rb = ures_openDirect(nullptr, gMetaZones, &status);
+ UResourceBundle *bundle = ures_getByKey(rb, gMapTimezonesTag, nullptr, &status);
StackUResourceBundle res;
while (U_SUCCESS(status) && ures_hasNext(bundle)) {
ures_getNextResource(bundle, res.getAlias(), &status);
@@ -776,7 +806,7 @@ static void U_CALLCONV initAvailableMetaZoneIDs () {
}
const char *mzID = ures_getKey(res.getAlias());
int32_t len = static_cast<int32_t>(uprv_strlen(mzID));
- LocalMemory<UChar> uMzID((UChar*)uprv_malloc(sizeof(UChar) * (len + 1)));
+ LocalMemory<char16_t> uMzID((char16_t*)uprv_malloc(sizeof(char16_t) * (len + 1)));
if (uMzID.isNull()) {
status = U_MEMORY_ALLOCATION_ERROR;
break;
@@ -787,7 +817,7 @@ static void U_CALLCONV initAvailableMetaZoneIDs () {
if (U_FAILURE(status)) {
break;
}
- if (uhash_get(gMetaZoneIDTable, usMzID.getAlias()) == NULL) {
+ if (uhash_get(gMetaZoneIDTable, usMzID.getAlias()) == nullptr) {
// Note: gMetaZoneIDTable adopts its keys, but not its values.
// gMetaZoneIDs adopts its values.
uhash_put(gMetaZoneIDTable, usMzID.orphan(), uMzID.getAlias(), &status);
@@ -800,8 +830,8 @@ static void U_CALLCONV initAvailableMetaZoneIDs () {
if (U_FAILURE(status)) {
uhash_close(gMetaZoneIDTable);
delete gMetaZoneIDs;
- gMetaZoneIDTable = NULL;
- gMetaZoneIDs = NULL;
+ gMetaZoneIDTable = nullptr;
+ gMetaZoneIDs = nullptr;
}
}
@@ -811,16 +841,16 @@ ZoneMeta::getAvailableMetazoneIDs() {
return gMetaZoneIDs;
}
-const UChar*
+const char16_t*
ZoneMeta::findMetaZoneID(const UnicodeString& mzid) {
umtx_initOnce(gMetaZoneIDsInitOnce, &initAvailableMetaZoneIDs);
- if (gMetaZoneIDTable == NULL) {
- return NULL;
+ if (gMetaZoneIDTable == nullptr) {
+ return nullptr;
}
- return (const UChar*)uhash_get(gMetaZoneIDTable, &mzid);
+ return (const char16_t*)uhash_get(gMetaZoneIDTable, &mzid);
}
-const UChar*
+const char16_t*
ZoneMeta::findTimeZoneID(const UnicodeString& tzid) {
return TimeZone::findID(tzid);
}
@@ -853,52 +883,52 @@ ZoneMeta::formatCustomID(uint8_t hour, uint8_t min, uint8_t sec, UBool negative,
id.setTo(gCustomTzPrefix, -1);
if (hour != 0 || min != 0) {
if (negative) {
- id.append((UChar)0x2D); // '-'
+ id.append((char16_t)0x2D); // '-'
} else {
- id.append((UChar)0x2B); // '+'
+ id.append((char16_t)0x2B); // '+'
}
// Always use US-ASCII digits
- id.append((UChar)(0x30 + (hour%100)/10));
- id.append((UChar)(0x30 + (hour%10)));
- id.append((UChar)0x3A); // ':'
- id.append((UChar)(0x30 + (min%100)/10));
- id.append((UChar)(0x30 + (min%10)));
+ id.append((char16_t)(0x30 + (hour%100)/10));
+ id.append((char16_t)(0x30 + (hour%10)));
+ id.append((char16_t)0x3A); // ':'
+ id.append((char16_t)(0x30 + (min%100)/10));
+ id.append((char16_t)(0x30 + (min%10)));
if (sec != 0) {
- id.append((UChar)0x3A); // ':'
- id.append((UChar)(0x30 + (sec%100)/10));
- id.append((UChar)(0x30 + (sec%10)));
+ id.append((char16_t)0x3A); // ':'
+ id.append((char16_t)(0x30 + (sec%100)/10));
+ id.append((char16_t)(0x30 + (sec%10)));
}
}
return id;
}
-const UChar*
+const char16_t*
ZoneMeta::getShortID(const TimeZone& tz) {
- const UChar* canonicalID = NULL;
- if (dynamic_cast<const OlsonTimeZone *>(&tz) != NULL) {
+ const char16_t* canonicalID = nullptr;
+ if (dynamic_cast<const OlsonTimeZone *>(&tz) != nullptr) {
// short cut for OlsonTimeZone
const OlsonTimeZone *otz = (const OlsonTimeZone*)&tz;
canonicalID = otz->getCanonicalID();
}
- if (canonicalID == NULL) {
- return NULL;
+ if (canonicalID == nullptr) {
+ return nullptr;
}
return getShortIDFromCanonical(canonicalID);
}
-const UChar*
+const char16_t*
ZoneMeta::getShortID(const UnicodeString& id) {
UErrorCode status = U_ZERO_ERROR;
- const UChar* canonicalID = ZoneMeta::getCanonicalCLDRID(id, status);
- if (U_FAILURE(status) || canonicalID == NULL) {
- return NULL;
+ const char16_t* canonicalID = ZoneMeta::getCanonicalCLDRID(id, status);
+ if (U_FAILURE(status) || canonicalID == nullptr) {
+ return nullptr;
}
return ZoneMeta::getShortIDFromCanonical(canonicalID);
}
-const UChar*
-ZoneMeta::getShortIDFromCanonical(const UChar* canonicalID) {
- const UChar* shortID = NULL;
+const char16_t*
+ZoneMeta::getShortIDFromCanonical(const char16_t* canonicalID) {
+ const char16_t* shortID = nullptr;
int32_t len = u_strlen(canonicalID);
char tzidKey[ZID_KEY_MAX + 1];
@@ -914,10 +944,10 @@ ZoneMeta::getShortIDFromCanonical(const UChar* canonicalID) {
}
UErrorCode status = U_ZERO_ERROR;
- UResourceBundle *rb = ures_openDirect(NULL, gKeyTypeData, &status);
+ UResourceBundle *rb = ures_openDirect(nullptr, gKeyTypeData, &status);
ures_getByKey(rb, gTypeMapTag, rb, &status);
ures_getByKey(rb, gTimezoneTag, rb, &status);
- shortID = ures_getStringByKey(rb, tzidKey, NULL, &status);
+ shortID = ures_getStringByKey(rb, tzidKey, nullptr, &status);
ures_close(rb);
return shortID;
diff --git a/Build/source/libs/icu/icu-src/source/i18n/zonemeta.h b/Build/source/libs/icu/icu-src/source/i18n/zonemeta.h
index 97c0e6057d7..dec0a65c3ce 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/zonemeta.h
+++ b/Build/source/libs/icu/icu-src/source/i18n/zonemeta.h
@@ -19,7 +19,7 @@
U_NAMESPACE_BEGIN
struct OlsonToMetaMappingEntry : public UMemory {
- const UChar *mzid; // const because it's a reference to a resource bundle string.
+ const char16_t *mzid; // const because it's a reference to a resource bundle string.
UDate from;
UDate to;
};
@@ -40,19 +40,30 @@ public:
/**
* Return the canonical id for this tzid defined by CLDR, which might be the id itself.
- * This overload method returns a persistent const UChar*, which is guaranteed to persist
+ * This overload method returns a persistent const char16_t*, which is guaranteed to persist
* (a pointer to a resource). If the given system tzid is not known, U_ILLEGAL_ARGUMENT_ERROR
* is set in the status.
* @param tzid Zone ID
* @param status Receives the status
* @return The canonical ID for the input time zone ID
*/
- static const UChar* U_EXPORT2 getCanonicalCLDRID(const UnicodeString &tzid, UErrorCode& status);
+ static const char16_t* U_EXPORT2 getCanonicalCLDRID(const UnicodeString &tzid, UErrorCode& status);
/*
* Convenient method returning CLDR canonical ID for the given time zone
*/
- static const UChar* U_EXPORT2 getCanonicalCLDRID(const TimeZone& tz);
+ static const char16_t* U_EXPORT2 getCanonicalCLDRID(const TimeZone& tz);
+
+ /**
+ * Returns primary IANA zone ID for the input zone ID, which might be the id itself.
+ * If the given system tzid is not known, U_ILLEGAL_ARGUMENT_ERROR is set in the status.
+ *
+ * @param tzid Zone ID
+ * @param ianaID Output IANA ID
+ * @param status Receives the status
+ * @return A primary IANA zone ID equivalent to the input zone ID.
+ */
+ static UnicodeString& U_EXPORT2 getIanaID(const UnicodeString& tzid, UnicodeString& ianaID, UErrorCode& status);
/**
* Return the canonical country code for this tzid. If we have none, or if the time zone
@@ -62,7 +73,7 @@ public:
* @param isPrimary [output] true if the zone is the primary zone for the country
* @return A reference to the result country
*/
- static UnicodeString& U_EXPORT2 getCanonicalCountry(const UnicodeString &tzid, UnicodeString &country, UBool *isPrimary = NULL);
+ static UnicodeString& U_EXPORT2 getCanonicalCountry(const UnicodeString &tzid, UnicodeString &country, UBool *isPrimary = nullptr);
/**
* Returns a CLDR metazone ID for the given Olson tzid and time.
@@ -78,16 +89,16 @@ public:
static const UVector* U_EXPORT2 getAvailableMetazoneIDs();
/**
- * Returns the pointer to the persistent time zone ID string, or NULL if the given tzid is not in the
+ * Returns the pointer to the persistent time zone ID string, or nullptr if the given tzid is not in the
* tz database. This method is useful when you maintain persistent zone IDs without duplication.
*/
- static const UChar* U_EXPORT2 findTimeZoneID(const UnicodeString& tzid);
+ static const char16_t* U_EXPORT2 findTimeZoneID(const UnicodeString& tzid);
/**
- * Returns the pointer to the persistent meta zone ID string, or NULL if the given mzid is not available.
+ * Returns the pointer to the persistent meta zone ID string, or nullptr if the given mzid is not available.
* This method is useful when you maintain persistent meta zone IDs without duplication.
*/
- static const UChar* U_EXPORT2 findMetaZoneID(const UnicodeString& mzid);
+ static const char16_t* U_EXPORT2 findMetaZoneID(const UnicodeString& mzid);
/**
* Creates a custom zone for the offset
@@ -102,7 +113,7 @@ public:
* @param tz the time zone
* @return the short ID of the time zone, or null if the short ID is not available.
*/
- static const UChar* U_EXPORT2 getShortID(const TimeZone& tz);
+ static const char16_t* U_EXPORT2 getShortID(const TimeZone& tz);
/**
* Returns the time zone's short ID (null terminated) for the zone ID.
@@ -110,13 +121,13 @@ public:
* @param tz the time zone ID
* @return the short ID of the time zone ID, or null if the short ID is not available.
*/
- static const UChar* U_EXPORT2 getShortID(const UnicodeString& id);
+ static const char16_t* U_EXPORT2 getShortID(const UnicodeString& id);
private:
ZoneMeta() = delete; // Prevent construction.
static UVector* createMetazoneMappings(const UnicodeString &tzid);
static UnicodeString& formatCustomID(uint8_t hour, uint8_t min, uint8_t sec, UBool negative, UnicodeString& id);
- static const UChar* getShortIDFromCanonical(const UChar* canonicalID);
+ static const char16_t* getShortIDFromCanonical(const char16_t* canonicalID);
};
U_NAMESPACE_END
diff --git a/Build/source/libs/icu/icu-src/source/i18n/zrule.cpp b/Build/source/libs/icu/icu-src/source/i18n/zrule.cpp
index bdf84965b5f..1ba0c9705e9 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/zrule.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/zrule.cpp
@@ -40,7 +40,7 @@ zrule_equals(const ZRule* rule1, const ZRule* rule2) {
}
U_CAPI void U_EXPORT2
-zrule_getName(ZRule* rule, UChar* name, int32_t nameLength) {
+zrule_getName(ZRule* rule, char16_t* name, int32_t nameLength) {
UnicodeString s(nameLength==-1, name, nameLength);
s = ((TimeZoneRule*)rule)->TimeZoneRule::getName(s);
nameLength = s.length();
@@ -68,7 +68,7 @@ zrule_isEquivalentTo(ZRule* rule1, ZRule* rule2) {
*********************************************************************/
U_CAPI IZRule* U_EXPORT2
-izrule_open(const UChar* name, int32_t nameLength, int32_t rawOffset, int32_t dstSavings) {
+izrule_open(const char16_t* name, int32_t nameLength, int32_t rawOffset, int32_t dstSavings) {
UnicodeString s(nameLength==-1, name, nameLength);
return (IZRule*) new InitialTimeZoneRule(s, rawOffset, dstSavings);
}
@@ -89,12 +89,12 @@ izrule_equals(const IZRule* rule1, const IZRule* rule2) {
}
U_CAPI void U_EXPORT2
-izrule_getName(IZRule* rule, UChar* & name, int32_t & nameLength) {
+izrule_getName(IZRule* rule, char16_t* & name, int32_t & nameLength) {
// UnicodeString s(nameLength==-1, name, nameLength);
UnicodeString s;
((InitialTimeZoneRule*)rule)->InitialTimeZoneRule::getName(s);
nameLength = s.length();
- name = (UChar*)uprv_malloc(nameLength);
+ name = (char16_t*)uprv_malloc(nameLength);
memcpy(name, s.getBuffer(), nameLength);
return;
}
diff --git a/Build/source/libs/icu/icu-src/source/io/locbund.cpp b/Build/source/libs/icu/icu-src/source/io/locbund.cpp
index 6c79b610180..3f6d6309ac0 100644
--- a/Build/source/libs/icu/icu-src/source/io/locbund.cpp
+++ b/Build/source/libs/icu/icu-src/source/io/locbund.cpp
@@ -35,11 +35,11 @@
static UNumberFormat *gPosixNumberFormat[ULOCALEBUNDLE_NUMBERFORMAT_COUNT];
U_CDECL_BEGIN
-static UBool U_CALLCONV locbund_cleanup(void) {
+static UBool U_CALLCONV locbund_cleanup() {
int32_t style;
for (style = 0; style < ULOCALEBUNDLE_NUMBERFORMAT_COUNT; style++) {
unum_close(gPosixNumberFormat[style]);
- gPosixNumberFormat[style] = NULL;
+ gPosixNumberFormat[style] = nullptr;
}
return true;
}
@@ -49,17 +49,17 @@ static inline UNumberFormat * copyInvariantFormatter(ULocaleBundle *result, UNum
U_NAMESPACE_USE
static UMutex gLock;
Mutex lock(&gLock);
- if (result->fNumberFormat[style-1] == NULL) {
- if (gPosixNumberFormat[style-1] == NULL) {
+ if (result->fNumberFormat[style-1] == nullptr) {
+ if (gPosixNumberFormat[style-1] == nullptr) {
UErrorCode status = U_ZERO_ERROR;
- UNumberFormat *formatAlias = unum_open(style, NULL, 0, "en_US_POSIX", NULL, &status);
+ UNumberFormat *formatAlias = unum_open(style, nullptr, 0, "en_US_POSIX", nullptr, &status);
if (U_SUCCESS(status)) {
gPosixNumberFormat[style-1] = formatAlias;
ucln_io_registerCleanup(UCLN_IO_LOCBUND, locbund_cleanup);
}
}
/* Copy the needed formatter. */
- if (gPosixNumberFormat[style-1] != NULL) {
+ if (gPosixNumberFormat[style-1] != nullptr) {
UErrorCode status = U_ZERO_ERROR;
result->fNumberFormat[style-1] = unum_clone(gPosixNumberFormat[style-1], &status);
}
@@ -75,7 +75,7 @@ u_locbund_init(ULocaleBundle *result, const char *loc)
if(result == 0)
return 0;
- if (loc == NULL) {
+ if (loc == nullptr) {
loc = uloc_getDefault();
}
@@ -124,11 +124,11 @@ u_locbund_clone(const ULocaleBundle *bundle)
if (result->fNumberFormat[styleIdx]) {
result->fNumberFormat[styleIdx] = unum_clone(bundle->fNumberFormat[styleIdx], &status);
if (U_FAILURE(status)) {
- result->fNumberFormat[styleIdx] = NULL;
+ result->fNumberFormat[styleIdx] = nullptr;
}
}
else {
- result->fNumberFormat[styleIdx] = NULL;
+ result->fNumberFormat[styleIdx] = nullptr;
}
}
result->fDateFormat = (bundle->fDateFormat == 0 ? 0 :
@@ -159,19 +159,19 @@ u_locbund_close(ULocaleBundle *bundle)
U_CAPI UNumberFormat *
u_locbund_getNumberFormat(ULocaleBundle *bundle, UNumberFormatStyle style)
{
- UNumberFormat *formatAlias = NULL;
+ UNumberFormat *formatAlias = nullptr;
if (style > UNUM_IGNORE) {
formatAlias = bundle->fNumberFormat[style-1];
- if (formatAlias == NULL) {
+ if (formatAlias == nullptr) {
if (bundle->isInvariantLocale) {
formatAlias = copyInvariantFormatter(bundle, style);
}
else {
UErrorCode status = U_ZERO_ERROR;
- formatAlias = unum_open(style, NULL, 0, bundle->fLocale, NULL, &status);
+ formatAlias = unum_open(style, nullptr, 0, bundle->fLocale, nullptr, &status);
if (U_FAILURE(status)) {
unum_close(formatAlias);
- formatAlias = NULL;
+ formatAlias = nullptr;
}
else {
bundle->fNumberFormat[style-1] = formatAlias;
diff --git a/Build/source/libs/icu/icu-src/source/io/sprintf.cpp b/Build/source/libs/icu/icu-src/source/io/sprintf.cpp
index ede31e91517..48d9bcc27c5 100644
--- a/Build/source/libs/icu/icu-src/source/io/sprintf.cpp
+++ b/Build/source/libs/icu/icu-src/source/io/sprintf.cpp
@@ -37,7 +37,7 @@
/* u_minstrncpy copies the minimum number of code units of (count or output->available) */
static int32_t
u_sprintf_write(void *context,
- const UChar *str,
+ const char16_t *str,
int32_t count)
{
u_localized_print_string *output = (u_localized_print_string *)context;
@@ -57,7 +57,7 @@ u_sprintf_write(void *context,
static int32_t
u_sprintf_pad_and_justify(void *context,
const u_printf_spec_info *info,
- const UChar *result,
+ const char16_t *result,
int32_t resultLen)
{
u_localized_print_string *output = (u_localized_print_string *)context;
@@ -112,7 +112,7 @@ u_sprintf_pad_and_justify(void *context,
}
U_CAPI int32_t U_EXPORT2
-u_sprintf(UChar *buffer,
+u_sprintf(char16_t *buffer,
const char *patternSpecification,
... )
{
@@ -127,8 +127,8 @@ u_sprintf(UChar *buffer,
}
U_CAPI int32_t U_EXPORT2
-u_sprintf_u(UChar *buffer,
- const UChar *patternSpecification,
+u_sprintf_u(char16_t *buffer,
+ const char16_t *patternSpecification,
... )
{
va_list ap;
@@ -142,7 +142,7 @@ u_sprintf_u(UChar *buffer,
}
U_CAPI int32_t U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
-u_vsprintf(UChar *buffer,
+u_vsprintf(char16_t *buffer,
const char *patternSpecification,
va_list ap)
{
@@ -150,7 +150,7 @@ u_vsprintf(UChar *buffer,
}
U_CAPI int32_t U_EXPORT2
-u_snprintf(UChar *buffer,
+u_snprintf(char16_t *buffer,
int32_t count,
const char *patternSpecification,
... )
@@ -166,9 +166,9 @@ u_snprintf(UChar *buffer,
}
U_CAPI int32_t U_EXPORT2
-u_snprintf_u(UChar *buffer,
+u_snprintf_u(char16_t *buffer,
int32_t count,
- const UChar *patternSpecification,
+ const char16_t *patternSpecification,
... )
{
va_list ap;
@@ -182,19 +182,19 @@ u_snprintf_u(UChar *buffer,
}
U_CAPI int32_t U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
-u_vsnprintf(UChar *buffer,
+u_vsnprintf(char16_t *buffer,
int32_t count,
const char *patternSpecification,
va_list ap)
{
int32_t written;
- UChar *pattern;
- UChar patBuffer[UFMT_DEFAULT_BUFFER_SIZE];
+ char16_t *pattern;
+ char16_t patBuffer[UFMT_DEFAULT_BUFFER_SIZE];
int32_t size = (int32_t)strlen(patternSpecification) + 1;
/* convert from the default codepage to Unicode */
if (size >= (int32_t)MAX_UCHAR_BUFFER_SIZE(patBuffer)) {
- pattern = (UChar *)uprv_malloc(size * sizeof(UChar));
+ pattern = (char16_t *)uprv_malloc(size * sizeof(char16_t));
if(pattern == 0) {
return 0;
}
@@ -216,8 +216,8 @@ u_vsnprintf(UChar *buffer,
}
U_CAPI int32_t U_EXPORT2
-u_vsprintf_u(UChar *buffer,
- const UChar *patternSpecification,
+u_vsprintf_u(char16_t *buffer,
+ const char16_t *patternSpecification,
va_list ap)
{
return u_vsnprintf_u(buffer, INT32_MAX, patternSpecification, ap);
@@ -229,9 +229,9 @@ static const u_printf_stream_handler g_sprintf_stream_handler = {
};
U_CAPI int32_t U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
-u_vsnprintf_u(UChar *buffer,
+u_vsnprintf_u(char16_t *buffer,
int32_t count,
- const UChar *patternSpecification,
+ const char16_t *patternSpecification,
va_list ap)
{
int32_t written = 0; /* haven't written anything yet */
diff --git a/Build/source/libs/icu/icu-src/source/io/sscanf.cpp b/Build/source/libs/icu/icu-src/source/io/sscanf.cpp
index 03c747c8614..8940127eb1e 100644
--- a/Build/source/libs/icu/icu-src/source/io/sscanf.cpp
+++ b/Build/source/libs/icu/icu-src/source/io/sscanf.cpp
@@ -33,7 +33,7 @@
U_CAPI int32_t U_EXPORT2
-u_sscanf(const UChar *buffer,
+u_sscanf(const char16_t *buffer,
const char *patternSpecification,
... )
{
@@ -48,8 +48,8 @@ u_sscanf(const UChar *buffer,
}
U_CAPI int32_t U_EXPORT2
-u_sscanf_u(const UChar *buffer,
- const UChar *patternSpecification,
+u_sscanf_u(const char16_t *buffer,
+ const char16_t *patternSpecification,
... )
{
va_list ap;
@@ -63,18 +63,18 @@ u_sscanf_u(const UChar *buffer,
}
U_CAPI int32_t U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
-u_vsscanf(const UChar *buffer,
+u_vsscanf(const char16_t *buffer,
const char *patternSpecification,
va_list ap)
{
int32_t converted;
- UChar *pattern;
- UChar patBuffer[UFMT_DEFAULT_BUFFER_SIZE];
+ char16_t *pattern;
+ char16_t patBuffer[UFMT_DEFAULT_BUFFER_SIZE];
int32_t size = (int32_t)uprv_strlen(patternSpecification) + 1;
/* convert from the default codepage to Unicode */
if (size >= (int32_t)MAX_UCHAR_BUFFER_SIZE(patBuffer)) {
- pattern = (UChar *)uprv_malloc(size * sizeof(UChar));
+ pattern = (char16_t *)uprv_malloc(size * sizeof(char16_t));
if(pattern == 0) {
return 0;
}
@@ -96,22 +96,22 @@ u_vsscanf(const UChar *buffer,
}
U_CAPI int32_t U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
-u_vsscanf_u(const UChar *buffer,
- const UChar *patternSpecification,
+u_vsscanf_u(const char16_t *buffer,
+ const char16_t *patternSpecification,
va_list ap)
{
int32_t converted;
UFILE inStr;
- inStr.fConverter = NULL;
- inStr.fFile = NULL;
+ inStr.fConverter = nullptr;
+ inStr.fFile = nullptr;
inStr.fOwnFile = false;
#if !UCONFIG_NO_TRANSLITERATION
- inStr.fTranslit = NULL;
+ inStr.fTranslit = nullptr;
#endif
inStr.fUCBuffer[0] = 0;
- inStr.str.fBuffer = (UChar *)buffer;
- inStr.str.fPos = (UChar *)buffer;
+ inStr.str.fBuffer = (char16_t *)buffer;
+ inStr.str.fPos = (char16_t *)buffer;
inStr.str.fLimit = buffer + u_strlen(buffer);
if(u_locbund_init(&inStr.str.fBundle, "en_US_POSIX") == 0) {
diff --git a/Build/source/libs/icu/icu-src/source/io/ucln_io.cpp b/Build/source/libs/icu/icu-src/source/io/ucln_io.cpp
index cf7d88be4c8..e2ddb358700 100644
--- a/Build/source/libs/icu/icu-src/source/io/ucln_io.cpp
+++ b/Build/source/libs/icu/icu-src/source/io/ucln_io.cpp
@@ -36,7 +36,7 @@ static const char copyright[] = U_COPYRIGHT_STRING;
static cleanupFunc *gCleanupFunctions[UCLN_IO_COUNT];
-static UBool U_CALLCONV io_cleanup(void)
+static UBool U_CALLCONV io_cleanup()
{
int32_t libType = UCLN_IO_START;
@@ -45,7 +45,7 @@ static UBool U_CALLCONV io_cleanup(void)
if (gCleanupFunctions[libType])
{
gCleanupFunctions[libType]();
- gCleanupFunctions[libType] = NULL;
+ gCleanupFunctions[libType] = nullptr;
}
}
#if !UCLN_NO_AUTO_CLEANUP && (defined(UCLN_AUTO_ATEXIT) || defined(UCLN_AUTO_LOCAL))
diff --git a/Build/source/libs/icu/icu-src/source/io/ufile.cpp b/Build/source/libs/icu/icu-src/source/io/ufile.cpp
index afd672faa0b..9e87e4058e3 100644
--- a/Build/source/libs/icu/icu-src/source/io/ufile.cpp
+++ b/Build/source/libs/icu/icu-src/source/io/ufile.cpp
@@ -68,11 +68,11 @@ finit_owner(FILE *f,
{
UErrorCode status = U_ZERO_ERROR;
UFILE *result;
- if(f == NULL) {
+ if(f == nullptr) {
return 0;
}
result = (UFILE*) uprv_malloc(sizeof(UFILE));
- if(result == NULL) {
+ if(result == nullptr) {
return 0;
}
@@ -94,10 +94,10 @@ finit_owner(FILE *f,
#endif
/* If the codepage is not "" use the ucnv_open default behavior */
- if(codepage == NULL || *codepage != '\0') {
+ if(codepage == nullptr || *codepage != '\0') {
result->fConverter = ucnv_open(codepage, &status);
}
- /* else result->fConverter is already memset'd to NULL. */
+ /* else result->fConverter is already memset'd to nullptr. */
if(U_SUCCESS(status)) {
result->fOwnFile = takeOwnership;
@@ -108,7 +108,7 @@ finit_owner(FILE *f,
#endif
/* DO NOT fclose here!!!!!! */
uprv_free(result);
- result = NULL;
+ result = nullptr;
}
return result;
@@ -168,7 +168,7 @@ u_fopen(const char *filename,
#endif
U_CAPI UFILE* U_EXPORT2
-u_fopen_u(const UChar *filename,
+u_fopen_u(const char16_t *filename,
const char *perm,
const char *locale,
const char *codepage)
@@ -196,14 +196,14 @@ u_fopen_u(const UChar *filename,
wchar_t wperm[40] = {};
size_t retVal;
mbstowcs_s(&retVal, wperm, UPRV_LENGTHOF(wperm), perm, _TRUNCATE);
- FILE *systemFile = _wfopen(reinterpret_cast<const wchar_t *>(filename), wperm); // may return NULL for long filename
+ FILE *systemFile = _wfopen(reinterpret_cast<const wchar_t *>(filename), wperm); // may return nullptr for long filename
if (systemFile) {
result = finit_owner(systemFile, locale, codepage, true);
}
if (!result && systemFile) {
/* Something bad happened.
Maybe the converter couldn't be opened.
- Bu do not fclose(systemFile) if systemFile is NULL. */
+ Bu do not fclose(systemFile) if systemFile is nullptr. */
fclose(systemFile);
}
}
@@ -216,20 +216,20 @@ u_fopen_u(const UChar *filename,
U_CAPI UFILE* U_EXPORT2
-u_fstropen(UChar *stringBuf,
+u_fstropen(char16_t *stringBuf,
int32_t capacity,
const char *locale)
{
UFILE *result;
if (capacity < 0) {
- return NULL;
+ return nullptr;
}
result = (UFILE*) uprv_malloc(sizeof(UFILE));
/* Null pointer test */
- if (result == NULL) {
- return NULL; /* Just get out. */
+ if (result == nullptr) {
+ return nullptr; /* Just get out. */
}
uprv_memset(result, 0, sizeof(UFILE));
result->str.fBuffer = stringBuf;
@@ -252,11 +252,11 @@ U_CAPI UBool U_EXPORT2
u_feof(UFILE *f)
{
UBool endOfBuffer;
- if (f == NULL) {
+ if (f == nullptr) {
return true;
}
endOfBuffer = (UBool)(f->str.fPos >= f->str.fLimit);
- if (f->fFile != NULL) {
+ if (f->fFile != nullptr) {
return endOfBuffer && feof(f->fFile);
}
return endOfBuffer;
@@ -339,7 +339,7 @@ U_CAPI const char* U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov
u_fgetcodepage(UFILE *file)
{
UErrorCode status = U_ZERO_ERROR;
- const char *codepage = NULL;
+ const char *codepage = nullptr;
if (file->fConverter) {
codepage = ucnv_getName(file->fConverter, &status);
diff --git a/Build/source/libs/icu/icu-src/source/io/ufmt_cmn.cpp b/Build/source/libs/icu/icu-src/source/io/ufmt_cmn.cpp
index 9c7bedf2be8..3d8f6413d8a 100644
--- a/Build/source/libs/icu/icu-src/source/io/ufmt_cmn.cpp
+++ b/Build/source/libs/icu/icu-src/source/io/ufmt_cmn.cpp
@@ -38,7 +38,7 @@
#define UPPERCASE_Z 0x005A
int
-ufmt_digitvalue(UChar c)
+ufmt_digitvalue(char16_t c)
{
if( ((c>=DIGIT_0)&&(c<=DIGIT_9)) ||
((c>=LOWERCASE_A)&&(c<=LOWERCASE_Z)) ||
@@ -53,7 +53,7 @@ ufmt_digitvalue(UChar c)
}
UBool
-ufmt_isdigit(UChar c,
+ufmt_isdigit(char16_t c,
int32_t radix)
{
int digitVal = ufmt_digitvalue(c);
@@ -65,7 +65,7 @@ ufmt_isdigit(UChar c,
#define TO_LC_DIGIT(a) a <= 9 ? (DIGIT_0 + a) : (0x0057 + a)
void
-ufmt_64tou(UChar *buffer,
+ufmt_64tou(char16_t *buffer,
int32_t *len,
uint64_t value,
uint8_t radix,
@@ -74,12 +74,12 @@ ufmt_64tou(UChar *buffer,
{
int32_t length = 0;
uint32_t digit;
- UChar *left, *right, temp;
+ char16_t *left, *right, temp;
do {
digit = (uint32_t)(value % radix);
value = value / radix;
- buffer[length++] = (UChar)(uselower ? TO_LC_DIGIT(digit)
+ buffer[length++] = (char16_t)(uselower ? TO_LC_DIGIT(digit)
: TO_UC_DIGIT(digit));
} while(value);
@@ -102,7 +102,7 @@ ufmt_64tou(UChar *buffer,
}
void
-ufmt_ptou(UChar *buffer,
+ufmt_ptou(char16_t *buffer,
int32_t *len,
void *value,
UBool uselower)
@@ -134,11 +134,11 @@ ufmt_ptou(UChar *buffer,
}
int64_t
-ufmt_uto64(const UChar *buffer,
+ufmt_uto64(const char16_t *buffer,
int32_t *len,
int8_t radix)
{
- const UChar *limit;
+ const char16_t *limit;
int32_t count;
uint64_t result;
@@ -165,7 +165,7 @@ ufmt_uto64(const UChar *buffer,
#define NIBBLE_PER_BYTE 2
void *
-ufmt_utop(const UChar *buffer,
+ufmt_utop(const char16_t *buffer,
int32_t *len)
{
int32_t count, resultIdx, incVal, offset;
@@ -178,7 +178,7 @@ ufmt_utop(const UChar *buffer,
/* initialize variables */
count = 0;
offset = 0;
- result.ptr = NULL;
+ result.ptr = nullptr;
/* Skip the leading zeros */
while(buffer[count] == DIGIT_0 || u_isspace(buffer[count])) {
@@ -223,11 +223,11 @@ ufmt_utop(const UChar *buffer,
return result.ptr;
}
-UChar*
+char16_t*
ufmt_defaultCPToUnicode(const char *s, int32_t sSize,
- UChar *target, int32_t tSize)
+ char16_t *target, int32_t tSize)
{
- UChar *alias;
+ char16_t *alias;
UErrorCode status = U_ZERO_ERROR;
UConverter *defConverter = u_getDefaultConverter(&status);
@@ -243,7 +243,7 @@ ufmt_defaultCPToUnicode(const char *s, int32_t sSize,
alias = target;
ucnv_toUnicode(defConverter, &alias, alias + tSize, &s, s + sSize - 1,
- NULL, true, &status);
+ nullptr, true, &status);
/* add the null terminator */
diff --git a/Build/source/libs/icu/icu-src/source/io/uprintf.cpp b/Build/source/libs/icu/icu-src/source/io/uprintf.cpp
index 5bbe59ed50e..7effa61993f 100644
--- a/Build/source/libs/icu/icu-src/source/io/uprintf.cpp
+++ b/Build/source/libs/icu/icu-src/source/io/uprintf.cpp
@@ -40,22 +40,22 @@
U_NAMESPACE_USE
-static UFILE *gStdOut = NULL;
+static UFILE *gStdOut = nullptr;
static UInitOnce gStdOutInitOnce {};
-static UBool U_CALLCONV uprintf_cleanup(void)
+static UBool U_CALLCONV uprintf_cleanup()
{
- if (gStdOut != NULL) {
+ if (gStdOut != nullptr) {
u_fclose(gStdOut);
- gStdOut = NULL;
+ gStdOut = nullptr;
}
gStdOutInitOnce.reset();
return true;
}
static void U_CALLCONV u_stdout_init() {
- U_ASSERT(gStdOut == NULL);
- gStdOut = u_finit(stdout, NULL, NULL);
+ U_ASSERT(gStdOut == nullptr);
+ gStdOut = u_finit(stdout, nullptr, nullptr);
ucln_io_registerCleanup(UCLN_IO_PRINTF, &uprintf_cleanup);
}
@@ -68,7 +68,7 @@ u_get_stdout()
static int32_t U_EXPORT2
u_printf_write(void *context,
- const UChar *str,
+ const char16_t *str,
int32_t count)
{
return u_file_write(str, count, (UFILE *)context);
@@ -77,7 +77,7 @@ u_printf_write(void *context,
static int32_t
u_printf_pad_and_justify(void *context,
const u_printf_spec_info *info,
- const UChar *result,
+ const char16_t *result,
int32_t resultLen)
{
UFILE *output = (UFILE *)context;
@@ -138,7 +138,7 @@ u_printf(const char *patternSpecification,
U_CAPI int32_t U_EXPORT2
u_fprintf_u( UFILE *f,
- const UChar *patternSpecification,
+ const char16_t *patternSpecification,
... )
{
va_list ap;
@@ -152,7 +152,7 @@ u_fprintf_u( UFILE *f,
}
U_CAPI int32_t U_EXPORT2
-u_printf_u(const UChar *patternSpecification,
+u_printf_u(const char16_t *patternSpecification,
...)
{
va_list ap;
@@ -169,13 +169,13 @@ u_vfprintf( UFILE *f,
va_list ap)
{
int32_t count;
- UChar *pattern;
- UChar buffer[UFMT_DEFAULT_BUFFER_SIZE];
+ char16_t *pattern;
+ char16_t buffer[UFMT_DEFAULT_BUFFER_SIZE];
size_t size = strlen(patternSpecification) + 1;
/* convert from the default codepage to Unicode */
if (size >= MAX_UCHAR_BUFFER_SIZE(buffer)) {
- pattern = (UChar *)uprv_malloc(size * sizeof(UChar));
+ pattern = (char16_t *)uprv_malloc(size * sizeof(char16_t));
if(pattern == 0) {
return 0;
}
@@ -203,13 +203,13 @@ static const u_printf_stream_handler g_stream_handler = {
U_CAPI int32_t U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
u_vfprintf_u( UFILE *f,
- const UChar *patternSpecification,
+ const char16_t *patternSpecification,
va_list ap)
{
int32_t written = 0; /* haven't written anything yet */
/* parse and print the whole format string */
- u_printf_parse(&g_stream_handler, patternSpecification, f, NULL, &f->str.fBundle, &written, ap);
+ u_printf_parse(&g_stream_handler, patternSpecification, f, nullptr, &f->str.fBundle, &written, ap);
/* return # of UChars written */
return written;
diff --git a/Build/source/libs/icu/icu-src/source/io/uprntf_p.cpp b/Build/source/libs/icu/icu-src/source/io/uprntf_p.cpp
index ba30fbcaf48..399d2dc7511 100644
--- a/Build/source/libs/icu/icu-src/source/io/uprntf_p.cpp
+++ b/Build/source/libs/icu/icu-src/source/io/uprntf_p.cpp
@@ -71,7 +71,7 @@
#define UFMT_USTRING {ufmt_ustring, u_printf_ustring_handler}
-#define UFMT_EMPTY {ufmt_empty, NULL}
+#define UFMT_EMPTY {ufmt_empty, nullptr}
/**
* A u_printf handler function.
@@ -115,15 +115,15 @@ typedef struct u_printf_spec {
#define UPRINTF_BUFFER_SIZE 1024
#define UPRINTF_SYMBOL_BUFFER_SIZE 8
-static const UChar gNullStr[] = {0x28, 0x6E, 0x75, 0x6C, 0x6C, 0x29, 0}; /* "(null)" */
-static const UChar gSpaceStr[] = {0x20, 0}; /* " " */
+static const char16_t gNullStr[] = {0x28, 0x6E, 0x75, 0x6C, 0x6C, 0x29, 0}; /* "(null)" */
+static const char16_t gSpaceStr[] = {0x20, 0}; /* " " */
/* Sets the sign of a format based on u_printf_spec_info */
/* TODO: Is setting the prefix symbol to a positive sign a good idea in all locales? */
static void
u_printf_set_sign(UNumberFormat *format,
const u_printf_spec_info *info,
- UChar *prefixBuffer,
+ char16_t *prefixBuffer,
int32_t *prefixBufLen,
UErrorCode *status)
{
@@ -139,7 +139,7 @@ u_printf_set_sign(UNumberFormat *format,
unum_setTextAttribute(format, UNUM_POSITIVE_PREFIX, gSpaceStr, 1, status);
}
else {
- UChar plusSymbol[UPRINTF_SYMBOL_BUFFER_SIZE];
+ char16_t plusSymbol[UPRINTF_SYMBOL_BUFFER_SIZE];
int32_t symbolLen;
symbolLen = unum_getSymbol(format,
@@ -162,7 +162,7 @@ u_printf_set_sign(UNumberFormat *format,
static void
u_printf_reset_sign(UNumberFormat *format,
const u_printf_spec_info *info,
- UChar *prefixBuffer,
+ char16_t *prefixBuffer,
int32_t *prefixBufLen,
UErrorCode *status)
{
@@ -187,7 +187,7 @@ u_printf_simple_percent_handler(const u_printf_stream_handler *handler,
(void)formatBundle;
(void)info;
(void)args;
- static const UChar PERCENT[] = { UP_PERCENT };
+ static const char16_t PERCENT[] = { UP_PERCENT };
/* put a single '%' onto the output */
return handler->write(context, PERCENT, 1);
@@ -202,8 +202,8 @@ u_printf_string_handler(const u_printf_stream_handler *handler,
const ufmt_args *args)
{
(void)formatBundle;
- UChar *s;
- UChar buffer[UFMT_DEFAULT_BUFFER_SIZE];
+ char16_t *s;
+ char16_t buffer[UFMT_DEFAULT_BUFFER_SIZE];
int32_t len, written;
int32_t argSize;
const char *arg = (const char*)(args[0].ptrValue);
@@ -213,9 +213,9 @@ u_printf_string_handler(const u_printf_stream_handler *handler,
argSize = (int32_t)strlen(arg) + 1;
if (argSize >= MAX_UCHAR_BUFFER_SIZE(buffer)) {
s = ufmt_defaultCPToUnicode(arg, argSize,
- (UChar *)uprv_malloc(MAX_UCHAR_BUFFER_NEEDED(argSize)),
+ (char16_t *)uprv_malloc(MAX_UCHAR_BUFFER_NEEDED(argSize)),
MAX_UCHAR_BUFFER_NEEDED(argSize));
- if(s == NULL) {
+ if(s == nullptr) {
return 0;
}
}
@@ -225,7 +225,7 @@ u_printf_string_handler(const u_printf_stream_handler *handler,
}
}
else {
- s = (UChar *)gNullStr;
+ s = (char16_t *)gNullStr;
}
len = u_strlen(s);
@@ -253,7 +253,7 @@ u_printf_char_handler(const u_printf_stream_handler *handler,
const ufmt_args *args)
{
(void)formatBundle;
- UChar s[U16_MAX_LENGTH+1];
+ char16_t s[U16_MAX_LENGTH+1];
int32_t len = 1, written;
unsigned char arg = (unsigned char)(args[0].int64Value);
@@ -283,8 +283,8 @@ u_printf_double_handler(const u_printf_stream_handler *handler,
{
double num = (double) (args[0].doubleValue);
UNumberFormat *format;
- UChar result[UPRINTF_BUFFER_SIZE];
- UChar prefixBuffer[UPRINTF_BUFFER_SIZE];
+ char16_t result[UPRINTF_BUFFER_SIZE];
+ char16_t prefixBuffer[UPRINTF_BUFFER_SIZE];
int32_t prefixBufferLen = sizeof(prefixBuffer);
int32_t minDecimalDigits;
int32_t maxDecimalDigits;
@@ -359,8 +359,8 @@ u_printf_integer_handler(const u_printf_stream_handler *handler,
{
int64_t num = args[0].int64Value;
UNumberFormat *format;
- UChar result[UPRINTF_BUFFER_SIZE];
- UChar prefixBuffer[UPRINTF_BUFFER_SIZE];
+ char16_t result[UPRINTF_BUFFER_SIZE];
+ char16_t prefixBuffer[UPRINTF_BUFFER_SIZE];
int32_t prefixBufferLen = sizeof(prefixBuffer);
int32_t minDigits = -1;
int32_t resultLen;
@@ -425,7 +425,7 @@ u_printf_hex_handler(const u_printf_stream_handler *handler,
{
(void)formatBundle;
int64_t num = args[0].int64Value;
- UChar result[UPRINTF_BUFFER_SIZE];
+ char16_t result[UPRINTF_BUFFER_SIZE];
int32_t len = UPRINTF_BUFFER_SIZE;
@@ -443,7 +443,7 @@ u_printf_hex_handler(const u_printf_stream_handler *handler,
/* convert to alt form, if desired */
if(num != 0 && info->fAlt && len < UPRINTF_BUFFER_SIZE - 2) {
/* shift the formatted string right by 2 chars */
- memmove(result + 2, result, len * sizeof(UChar));
+ memmove(result + 2, result, len * sizeof(char16_t));
result[0] = 0x0030;
result[1] = info->fSpec;
len += 2;
@@ -461,7 +461,7 @@ u_printf_octal_handler(const u_printf_stream_handler *handler,
{
(void)formatBundle;
int64_t num = args[0].int64Value;
- UChar result[UPRINTF_BUFFER_SIZE];
+ char16_t result[UPRINTF_BUFFER_SIZE];
int32_t len = UPRINTF_BUFFER_SIZE;
@@ -479,7 +479,7 @@ u_printf_octal_handler(const u_printf_stream_handler *handler,
/* convert to alt form, if desired */
if(info->fAlt && result[0] != 0x0030 && len < UPRINTF_BUFFER_SIZE - 1) {
/* shift the formatted string right by 1 char */
- memmove(result + 1, result, len * sizeof(UChar));
+ memmove(result + 1, result, len * sizeof(char16_t));
result[0] = 0x0030;
len += 1;
}
@@ -496,7 +496,7 @@ u_printf_uinteger_handler(const u_printf_stream_handler *handler,
{
int64_t num = args[0].int64Value;
UNumberFormat *format;
- UChar result[UPRINTF_BUFFER_SIZE];
+ char16_t result[UPRINTF_BUFFER_SIZE];
int32_t minDigits = -1;
int32_t resultLen;
UErrorCode status = U_ZERO_ERROR;
@@ -548,7 +548,7 @@ u_printf_pointer_handler(const u_printf_stream_handler *handler,
const ufmt_args *args)
{
(void)formatBundle;
- UChar result[UPRINTF_BUFFER_SIZE];
+ char16_t result[UPRINTF_BUFFER_SIZE];
int32_t len = UPRINTF_BUFFER_SIZE;
/* format the pointer in hex */
@@ -566,16 +566,16 @@ u_printf_scientific_handler(const u_printf_stream_handler *handler,
{
double num = (double) (args[0].doubleValue);
UNumberFormat *format;
- UChar result[UPRINTF_BUFFER_SIZE];
- UChar prefixBuffer[UPRINTF_BUFFER_SIZE];
+ char16_t result[UPRINTF_BUFFER_SIZE];
+ char16_t prefixBuffer[UPRINTF_BUFFER_SIZE];
int32_t prefixBufferLen = sizeof(prefixBuffer);
int32_t minDecimalDigits;
int32_t maxDecimalDigits;
UErrorCode status = U_ZERO_ERROR;
- UChar srcExpBuf[UPRINTF_SYMBOL_BUFFER_SIZE];
+ char16_t srcExpBuf[UPRINTF_SYMBOL_BUFFER_SIZE];
int32_t srcLen, expLen;
int32_t resultLen;
- UChar expBuf[UPRINTF_SYMBOL_BUFFER_SIZE];
+ char16_t expBuf[UPRINTF_SYMBOL_BUFFER_SIZE];
prefixBuffer[0] = 0;
@@ -599,7 +599,7 @@ u_printf_scientific_handler(const u_printf_stream_handler *handler,
&status);
/* Upper/lower case the e */
- if (info->fSpec == (UChar)0x65 /* e */) {
+ if (info->fSpec == (char16_t)0x65 /* e */) {
expLen = u_strToLower(expBuf, (int32_t)sizeof(expBuf),
srcExpBuf, srcLen,
formatBundle->fLocale,
@@ -625,7 +625,7 @@ u_printf_scientific_handler(const u_printf_stream_handler *handler,
/* set the appropriate flags and number of decimal digits on the formatter */
if(info->fPrecision != -1) {
/* set the # of decimal digits */
- if (info->fOrigSpec == (UChar)0x65 /* e */ || info->fOrigSpec == (UChar)0x45 /* E */) {
+ if (info->fOrigSpec == (char16_t)0x65 /* e */ || info->fOrigSpec == (char16_t)0x45 /* E */) {
unum_setAttribute(format, UNUM_FRACTION_DIGITS, info->fPrecision);
}
else {
@@ -686,8 +686,8 @@ u_printf_percent_handler(const u_printf_stream_handler *handler,
{
double num = (double) (args[0].doubleValue);
UNumberFormat *format;
- UChar result[UPRINTF_BUFFER_SIZE];
- UChar prefixBuffer[UPRINTF_BUFFER_SIZE];
+ char16_t result[UPRINTF_BUFFER_SIZE];
+ char16_t prefixBuffer[UPRINTF_BUFFER_SIZE];
int32_t prefixBufferLen = sizeof(prefixBuffer);
int32_t minDecimalDigits;
int32_t maxDecimalDigits;
@@ -761,10 +761,10 @@ u_printf_ustring_handler(const u_printf_stream_handler *handler,
{
(void)formatBundle;
int32_t len, written;
- const UChar *arg = (const UChar*)(args[0].ptrValue);
+ const char16_t *arg = (const char16_t*)(args[0].ptrValue);
/* allocate enough space for the buffer */
- if (arg == NULL) {
+ if (arg == nullptr) {
arg = gNullStr;
}
len = u_strlen(arg);
@@ -790,7 +790,7 @@ u_printf_uchar_handler(const u_printf_stream_handler *handler,
{
(void)formatBundle;
int32_t written = 0;
- UChar arg = (UChar)(args[0].int64Value);
+ char16_t arg = (char16_t)(args[0].int64Value);
/* width = minimum # of characters to write */
/* precision = maximum # of characters to write */
@@ -840,7 +840,7 @@ u_printf_scidbl_handler(const u_printf_stream_handler *handler,
else {
format = u_locbund_getNumberFormat(formatBundle, UNUM_DECIMAL);
/* Check for null pointer */
- if (format == NULL) {
+ if (format == nullptr) {
return 0;
}
maxSigDecimalDigits = unum_getAttribute(format, UNUM_MAX_SIGNIFICANT_DIGITS);
@@ -889,8 +889,8 @@ u_printf_spellout_handler(const u_printf_stream_handler *handler,
{
double num = (double) (args[0].doubleValue);
UNumberFormat *format;
- UChar result[UPRINTF_BUFFER_SIZE];
- UChar prefixBuffer[UPRINTF_BUFFER_SIZE];
+ char16_t result[UPRINTF_BUFFER_SIZE];
+ char16_t prefixBuffer[UPRINTF_BUFFER_SIZE];
int32_t prefixBufferLen = sizeof(prefixBuffer);
int32_t minDecimalDigits;
int32_t maxDecimalDigits;
@@ -1058,15 +1058,15 @@ static const u_printf_info g_u_printf_infos[UPRINTF_NUM_FMT_HANDLERS] = {
(s) == MOD_LOWERL || \
(s) == MOD_L
/* Returns an array of the parsed argument type given in the format string. */
-static ufmt_args* parseArguments(const UChar *alias, va_list ap, UErrorCode *status) {
- ufmt_args *arglist = NULL;
- ufmt_type_info *typelist = NULL;
- UBool *islonglong = NULL;
+static ufmt_args* parseArguments(const char16_t *alias, va_list ap, UErrorCode *status) {
+ ufmt_args *arglist = nullptr;
+ ufmt_type_info *typelist = nullptr;
+ UBool *islonglong = nullptr;
int32_t size = 0;
int32_t pos = 0;
- UChar type;
+ char16_t type;
uint16_t handlerNum;
- const UChar *aliasStart = alias;
+ const char16_t *aliasStart = alias;
/* get maximum number of arguments */
for(;;) {
@@ -1096,10 +1096,10 @@ static ufmt_args* parseArguments(const UChar *alias, va_list ap, UErrorCode *sta
/* if there is no '$', don't read anything */
if(*alias != SPEC_DOLLARSIGN) {
- return NULL;
+ return nullptr;
}
} else {
- return NULL;
+ return nullptr;
}
if (pos > size) {
@@ -1112,7 +1112,7 @@ static ufmt_args* parseArguments(const UChar *alias, va_list ap, UErrorCode *sta
islonglong = (UBool*)uprv_malloc(sizeof(UBool) * size);
arglist = (ufmt_args*)uprv_malloc(sizeof(ufmt_args) * size);
- /* If malloc failed, return NULL */
+ /* If malloc failed, return nullptr */
if (!typelist || !islonglong || !arglist) {
if (typelist) {
uprv_free(typelist);
@@ -1127,7 +1127,7 @@ static ufmt_args* parseArguments(const UChar *alias, va_list ap, UErrorCode *sta
}
*status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
/* reset alias back to the beginning */
@@ -1206,7 +1206,7 @@ static ufmt_args* parseArguments(const UChar *alias, va_list ap, UErrorCode *sta
break;
default:
/* else args is ignored */
- arglist[pos].ptrValue = NULL;
+ arglist[pos].ptrValue = nullptr;
break;
}
}
@@ -1220,7 +1220,7 @@ static ufmt_args* parseArguments(const UChar *alias, va_list ap, UErrorCode *sta
/* We parse the argument list in Unicode */
U_CFUNC int32_t
u_printf_parse(const u_printf_stream_handler *streamHandler,
- const UChar *fmt,
+ const char16_t *fmt,
void *context,
u_localized_print_string *locStringContext,
ULocaleBundle *formatBundle,
@@ -1234,12 +1234,12 @@ u_printf_parse(const u_printf_stream_handler *streamHandler,
u_printf_spec spec;
u_printf_spec_info *info = &(spec.fInfo);
- const UChar *alias = fmt;
- const UChar *backup;
- const UChar *lastAlias;
- const UChar *orgAlias = fmt;
+ const char16_t *alias = fmt;
+ const char16_t *backup;
+ const char16_t *lastAlias;
+ const char16_t *orgAlias = fmt;
/* parsed argument list */
- ufmt_args *arglist = NULL; /* initialized it to avoid compiler warnings */
+ ufmt_args *arglist = nullptr; /* initialized it to avoid compiler warnings */
UErrorCode status = U_ZERO_ERROR;
if (!locStringContext || locStringContext->available >= 0) {
/* get the parsed list of argument types */
@@ -1345,10 +1345,10 @@ u_printf_parse(const u_printf_stream_handler *streamHandler,
/* TODO test that all four are numbers */
/* first four characters are hex values for pad char */
- info->fPadChar = (UChar)ufmt_digitvalue(*alias++);
- info->fPadChar = (UChar)((info->fPadChar * 16) + ufmt_digitvalue(*alias++));
- info->fPadChar = (UChar)((info->fPadChar * 16) + ufmt_digitvalue(*alias++));
- info->fPadChar = (UChar)((info->fPadChar * 16) + ufmt_digitvalue(*alias++));
+ info->fPadChar = (char16_t)ufmt_digitvalue(*alias++);
+ info->fPadChar = (char16_t)((info->fPadChar * 16) + ufmt_digitvalue(*alias++));
+ info->fPadChar = (char16_t)((info->fPadChar * 16) + ufmt_digitvalue(*alias++));
+ info->fPadChar = (char16_t)((info->fPadChar * 16) + ufmt_digitvalue(*alias++));
/* final character is ignored */
alias++;
@@ -1542,7 +1542,7 @@ u_printf_parse(const u_printf_stream_handler *streamHandler,
break;
default:
/* else args is ignored */
- args.ptrValue = NULL;
+ args.ptrValue = nullptr;
break;
}
} else { /* no positional argument specified */
@@ -1575,7 +1575,7 @@ u_printf_parse(const u_printf_stream_handler *streamHandler,
break;
default:
/* else args is ignored */
- args.ptrValue = NULL;
+ args.ptrValue = nullptr;
break;
}
}
@@ -1596,7 +1596,7 @@ u_printf_parse(const u_printf_stream_handler *streamHandler,
}
}
/* delete parsed argument list */
- if (arglist != NULL) {
+ if (arglist != nullptr) {
uprv_free(arglist);
}
/* return # of characters in this format that have been parsed. */
diff --git a/Build/source/libs/icu/icu-src/source/io/uscanf.cpp b/Build/source/libs/icu/icu-src/source/io/uscanf.cpp
index ce2e47a5881..2d72ccf5150 100644
--- a/Build/source/libs/icu/icu-src/source/io/uscanf.cpp
+++ b/Build/source/libs/icu/icu-src/source/io/uscanf.cpp
@@ -50,7 +50,7 @@ u_fscanf(UFILE *f,
U_CAPI int32_t U_EXPORT2
u_fscanf_u(UFILE *f,
- const UChar *patternSpecification,
+ const char16_t *patternSpecification,
... )
{
va_list ap;
@@ -69,13 +69,13 @@ u_vfscanf(UFILE *f,
va_list ap)
{
int32_t converted;
- UChar *pattern;
- UChar patBuffer[UFMT_DEFAULT_BUFFER_SIZE];
+ char16_t *pattern;
+ char16_t patBuffer[UFMT_DEFAULT_BUFFER_SIZE];
int32_t size = (int32_t)uprv_strlen(patternSpecification) + 1;
/* convert from the default codepage to Unicode */
if (size >= MAX_UCHAR_BUFFER_SIZE(patBuffer)) {
- pattern = (UChar *)uprv_malloc(size * sizeof(UChar));
+ pattern = (char16_t *)uprv_malloc(size * sizeof(char16_t));
if(pattern == 0) {
return 0;
}
@@ -98,7 +98,7 @@ u_vfscanf(UFILE *f,
U_CAPI int32_t U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
u_vfscanf_u(UFILE *f,
- const UChar *patternSpecification,
+ const char16_t *patternSpecification,
va_list ap)
{
return u_scanf_parse(f, patternSpecification, ap);
diff --git a/Build/source/libs/icu/icu-src/source/io/uscanf_p.cpp b/Build/source/libs/icu/icu-src/source/io/uscanf_p.cpp
index 9b27e2ebf8d..0a41dfe07d2 100644
--- a/Build/source/libs/icu/icu-src/source/io/uscanf_p.cpp
+++ b/Build/source/libs/icu/icu-src/source/io/uscanf_p.cpp
@@ -83,16 +83,16 @@
typedef struct u_scanf_spec_info {
int32_t fWidth; /* Width */
- UChar fSpec; /* Format specification */
+ char16_t fSpec; /* Format specification */
- UChar fPadChar; /* Padding character */
+ char16_t fPadChar; /* Padding character */
UBool fSkipArg; /* true if arg should be skipped */
UBool fIsLongDouble; /* L flag */
UBool fIsShort; /* h flag */
UBool fIsLong; /* l flag */
UBool fIsLongLong; /* ll flag */
- UBool fIsString; /* true if this is a NULL-terminated string. */
+ UBool fIsString; /* true if this is a NUL-terminated string. */
} u_scanf_spec_info;
@@ -112,11 +112,11 @@ typedef struct u_scanf_spec {
* @return The number of characters contained in this specifier.
*/
static int32_t
-u_scanf_parse_spec (const UChar *fmt,
+u_scanf_parse_spec (const char16_t *fmt,
u_scanf_spec *spec)
{
- const UChar *s = fmt;
- const UChar *backup;
+ const char16_t *s = fmt;
+ const char16_t *backup;
u_scanf_spec_info *info = &(spec->fInfo);
/* initialize spec to default values */
@@ -175,10 +175,10 @@ u_scanf_parse_spec (const UChar *fmt,
case FLAG_PAREN:
/* first four characters are hex values for pad char */
- info->fPadChar = (UChar)ufmt_digitvalue(*s++);
- info->fPadChar = (UChar)((info->fPadChar * 16) + ufmt_digitvalue(*s++));
- info->fPadChar = (UChar)((info->fPadChar * 16) + ufmt_digitvalue(*s++));
- info->fPadChar = (UChar)((info->fPadChar * 16) + ufmt_digitvalue(*s++));
+ info->fPadChar = (char16_t)ufmt_digitvalue(*s++);
+ info->fPadChar = (char16_t)((info->fPadChar * 16) + ufmt_digitvalue(*s++));
+ info->fPadChar = (char16_t)((info->fPadChar * 16) + ufmt_digitvalue(*s++));
+ info->fPadChar = (char16_t)((info->fPadChar * 16) + ufmt_digitvalue(*s++));
/* final character is ignored */
s++;
@@ -277,7 +277,7 @@ u_scanf_parse_spec (const UChar *fmt,
#define UFMT_USTRING {ufmt_ustring, u_scanf_ustring_handler}
-#define UFMT_EMPTY {ufmt_empty, NULL}
+#define UFMT_EMPTY {ufmt_empty, nullptr}
/**
* A u_scanf handler function.
@@ -298,7 +298,7 @@ u_scanf_parse_spec (const UChar *fmt,
typedef int32_t (*u_scanf_handler) (UFILE *stream,
u_scanf_spec_info *info,
ufmt_args *args,
- const UChar *fmt,
+ const char16_t *fmt,
int32_t *fmtConsumed,
int32_t *argConverted);
@@ -316,14 +316,14 @@ typedef struct u_scanf_info {
static int32_t
u_scanf_skip_leading_ws(UFILE *input,
- UChar pad)
+ char16_t pad)
{
- UChar c;
+ char16_t c;
int32_t count = 0;
UBool isNotEOF;
/* skip all leading ws in the input */
- while( ((isNotEOF = ufile_getch(input, &c)) == true) && (c == pad || u_isWhitespace(c)) )
+ while( ((isNotEOF = ufile_getch(input, &c))==(UBool)true) && (c == pad || u_isWhitespace(c)) )
{
count++;
}
@@ -341,10 +341,10 @@ u_scanf_skip_leading_positive_sign(UFILE *input,
UNumberFormat *format,
UErrorCode *status)
{
- UChar c;
+ char16_t c;
int32_t count = 0;
UBool isNotEOF;
- UChar plusSymbol[USCANF_SYMBOL_BUFFER_SIZE];
+ char16_t plusSymbol[USCANF_SYMBOL_BUFFER_SIZE];
int32_t symbolLen;
UErrorCode localStatus = U_ZERO_ERROR;
@@ -357,7 +357,7 @@ u_scanf_skip_leading_positive_sign(UFILE *input,
if (U_SUCCESS(localStatus)) {
/* skip all leading ws in the input */
- while( ((isNotEOF = ufile_getch(input, &c)) == true) && (count < symbolLen && c == plusSymbol[count]) )
+ while( ((isNotEOF = ufile_getch(input, &c))==(UBool)true) && (count < symbolLen && c == plusSymbol[count]) )
{
count++;
}
@@ -376,7 +376,7 @@ static int32_t
u_scanf_simple_percent_handler(UFILE *input,
u_scanf_spec_info *info,
ufmt_args *args,
- const UChar *fmt,
+ const char16_t *fmt,
int32_t *fmtConsumed,
int32_t *argConverted)
{
@@ -397,7 +397,7 @@ static int32_t
u_scanf_count_handler(UFILE *input,
u_scanf_spec_info *info,
ufmt_args *args,
- const UChar *fmt,
+ const char16_t *fmt,
int32_t *fmtConsumed,
int32_t *argConverted)
{
@@ -425,7 +425,7 @@ static int32_t
u_scanf_double_handler(UFILE *input,
u_scanf_spec_info *info,
ufmt_args *args,
- const UChar *fmt,
+ const char16_t *fmt,
int32_t *fmtConsumed,
int32_t *argConverted)
{
@@ -493,7 +493,7 @@ static int32_t
u_scanf_scientific_handler(UFILE *input,
u_scanf_spec_info *info,
ufmt_args *args,
- const UChar *fmt,
+ const char16_t *fmt,
int32_t *fmtConsumed,
int32_t *argConverted)
{
@@ -506,9 +506,9 @@ u_scanf_scientific_handler(UFILE *input,
int32_t parsePos = 0;
int32_t skipped;
UErrorCode status = U_ZERO_ERROR;
- UChar srcExpBuf[UPRINTF_SYMBOL_BUFFER_SIZE];
+ char16_t srcExpBuf[UPRINTF_SYMBOL_BUFFER_SIZE];
int32_t srcLen, expLen;
- UChar expBuf[UPRINTF_SYMBOL_BUFFER_SIZE];
+ char16_t expBuf[UPRINTF_SYMBOL_BUFFER_SIZE];
/* skip all ws in the input */
@@ -540,7 +540,7 @@ u_scanf_scientific_handler(UFILE *input,
&status);
/* Upper/lower case the e */
- if (info->fSpec == (UChar)0x65 /* e */) {
+ if (info->fSpec == (char16_t)0x65 /* e */) {
expLen = u_strToLower(expBuf, (int32_t)sizeof(expBuf),
srcExpBuf, srcLen,
input->str.fBundle.fLocale,
@@ -593,7 +593,7 @@ static int32_t
u_scanf_scidbl_handler(UFILE *input,
u_scanf_spec_info *info,
ufmt_args *args,
- const UChar *fmt,
+ const char16_t *fmt,
int32_t *fmtConsumed,
int32_t *argConverted)
{
@@ -686,7 +686,7 @@ static int32_t
u_scanf_integer_handler(UFILE *input,
u_scanf_spec_info *info,
ufmt_args *args,
- const UChar *fmt,
+ const char16_t *fmt,
int32_t *fmtConsumed,
int32_t *argConverted)
{
@@ -763,7 +763,7 @@ static int32_t
u_scanf_uinteger_handler(UFILE *input,
u_scanf_spec_info *info,
ufmt_args *args,
- const UChar *fmt,
+ const char16_t *fmt,
int32_t *fmtConsumed,
int32_t *argConverted)
{
@@ -775,7 +775,7 @@ static int32_t
u_scanf_percent_handler(UFILE *input,
u_scanf_spec_info *info,
ufmt_args *args,
- const UChar *fmt,
+ const char16_t *fmt,
int32_t *fmtConsumed,
int32_t *argConverted)
{
@@ -835,14 +835,14 @@ static int32_t
u_scanf_string_handler(UFILE *input,
u_scanf_spec_info *info,
ufmt_args *args,
- const UChar *fmt,
+ const char16_t *fmt,
int32_t *fmtConsumed,
int32_t *argConverted)
{
(void)fmt;
(void)fmtConsumed;
- const UChar *source;
+ const char16_t *source;
UConverter *conv;
char *arg = (char*)(args[0].ptrValue);
char *alias = arg;
@@ -850,7 +850,7 @@ u_scanf_string_handler(UFILE *input,
UErrorCode status = U_ZERO_ERROR;
int32_t count;
int32_t skipped = 0;
- UChar c;
+ char16_t c;
UBool isNotEOF = false;
/* skip all ws in the input */
@@ -868,7 +868,7 @@ u_scanf_string_handler(UFILE *input,
return -1;
while( (info->fWidth == -1 || count < info->fWidth)
- && ((isNotEOF = ufile_getch(input, &c)) == true)
+ && ((isNotEOF = ufile_getch(input, &c))==(UBool)true)
&& (!info->fIsString || (c != info->fPadChar && !u_isWhitespace(c))))
{
@@ -885,7 +885,7 @@ u_scanf_string_handler(UFILE *input,
/* convert the character to the default codepage */
ucnv_fromUnicode(conv, &alias, limit, &source, source + 1,
- NULL, true, &status);
+ nullptr, true, &status);
if(U_FAILURE(status)) {
/* clean up */
@@ -921,7 +921,7 @@ static int32_t
u_scanf_char_handler(UFILE *input,
u_scanf_spec_info *info,
ufmt_args *args,
- const UChar *fmt,
+ const char16_t *fmt,
int32_t *fmtConsumed,
int32_t *argConverted)
{
@@ -936,18 +936,18 @@ static int32_t
u_scanf_ustring_handler(UFILE *input,
u_scanf_spec_info *info,
ufmt_args *args,
- const UChar *fmt,
+ const char16_t *fmt,
int32_t *fmtConsumed,
int32_t *argConverted)
{
(void)fmt;
(void)fmtConsumed;
- UChar *arg = (UChar*)(args[0].ptrValue);
- UChar *alias = arg;
+ char16_t *arg = (char16_t*)(args[0].ptrValue);
+ char16_t *alias = arg;
int32_t count;
int32_t skipped = 0;
- UChar c;
+ char16_t c;
UBool isNotEOF = false;
/* skip all ws in the input */
@@ -959,7 +959,7 @@ u_scanf_ustring_handler(UFILE *input,
count = 0;
while( (info->fWidth == -1 || count < info->fWidth)
- && ((isNotEOF = ufile_getch(input, &c)) == true)
+ && ((isNotEOF = ufile_getch(input, &c))==(UBool)true)
&& (!info->fIsString || (c != info->fPadChar && !u_isWhitespace(c))))
{
@@ -993,7 +993,7 @@ static int32_t
u_scanf_uchar_handler(UFILE *input,
u_scanf_spec_info *info,
ufmt_args *args,
- const UChar *fmt,
+ const char16_t *fmt,
int32_t *fmtConsumed,
int32_t *argConverted)
{
@@ -1008,7 +1008,7 @@ static int32_t
u_scanf_spellout_handler(UFILE *input,
u_scanf_spec_info *info,
ufmt_args *args,
- const UChar *fmt,
+ const char16_t *fmt,
int32_t *fmtConsumed,
int32_t *argConverted)
{
@@ -1070,7 +1070,7 @@ static int32_t
u_scanf_hex_handler(UFILE *input,
u_scanf_spec_info *info,
ufmt_args *args,
- const UChar *fmt,
+ const char16_t *fmt,
int32_t *fmtConsumed,
int32_t *argConverted)
{
@@ -1129,7 +1129,7 @@ static int32_t
u_scanf_octal_handler(UFILE *input,
u_scanf_spec_info *info,
ufmt_args *args,
- const UChar *fmt,
+ const char16_t *fmt,
int32_t *fmtConsumed,
int32_t *argConverted)
{
@@ -1179,7 +1179,7 @@ static int32_t
u_scanf_pointer_handler(UFILE *input,
u_scanf_spec_info *info,
ufmt_args *args,
- const UChar *fmt,
+ const char16_t *fmt,
int32_t *fmtConsumed,
int32_t *argConverted)
{
@@ -1230,7 +1230,7 @@ static int32_t
u_scanf_scanset_handler(UFILE *input,
u_scanf_spec_info *info,
ufmt_args *args,
- const UChar *fmt,
+ const char16_t *fmt,
int32_t *fmtConsumed,
int32_t *argConverted)
{
@@ -1238,7 +1238,7 @@ u_scanf_scanset_handler(UFILE *input,
UErrorCode status = U_ZERO_ERROR;
int32_t chLeft = INT32_MAX;
UChar32 c;
- UChar *alias = (UChar*) (args[0].ptrValue);
+ char16_t *alias = (char16_t*) (args[0].ptrValue);
UBool isNotEOF = false;
UBool readCharacter = false;
@@ -1262,7 +1262,7 @@ u_scanf_scanset_handler(UFILE *input,
/* grab characters one at a time and make sure they are in the scanset */
while(chLeft > 0) {
- if ( ((isNotEOF = ufile_getch32(input, &c)) == true) && uset_contains(scanset, c) ) {
+ if ( ((isNotEOF = ufile_getch32(input, &c))==(UBool)true) && uset_contains(scanset, c) ) {
readCharacter = true;
if (!info->fSkipArg) {
int32_t idx = 0;
@@ -1355,10 +1355,10 @@ static const u_scanf_info g_u_scanf_infos[USCANF_NUM_FMT_HANDLERS] = {
U_CFUNC int32_t
u_scanf_parse(UFILE *f,
- const UChar *patternSpecification,
+ const char16_t *patternSpecification,
va_list ap)
{
- const UChar *alias;
+ const char16_t *alias;
int32_t count, converted, argConsumed, cpConsumed;
uint16_t handlerNum;
@@ -1402,7 +1402,7 @@ u_scanf_parse(UFILE *f,
break;
}
else if(spec.fInfo.fSkipArg) {
- args.ptrValue = NULL;
+ args.ptrValue = nullptr;
}
else {
switch(info) {
@@ -1423,7 +1423,7 @@ u_scanf_parse(UFILE *f,
default:
/* else args is ignored */
- args.ptrValue = NULL;
+ args.ptrValue = nullptr;
break;
}
}
diff --git a/Build/source/libs/icu/icu-src/source/io/ustdio.cpp b/Build/source/libs/icu/icu-src/source/io/ustdio.cpp
index 502a7dc2105..4130f340442 100644
--- a/Build/source/libs/icu/icu-src/source/io/ustdio.cpp
+++ b/Build/source/libs/icu/icu-src/source/io/ustdio.cpp
@@ -43,11 +43,11 @@
/* TODO: is this correct for all codepages? Should we just use \n and let the converter handle it? */
#if U_PLATFORM_USES_ONLY_WIN32_API
-static const UChar DELIMITERS [] = { DELIM_CR, DELIM_LF, 0x0000 };
+static const char16_t DELIMITERS [] = { DELIM_CR, DELIM_LF, 0x0000 };
static const uint32_t DELIMITERS_LEN = 2;
/* TODO: Default newline writing should be detected based upon the converter being used. */
#else
-static const UChar DELIMITERS [] = { DELIM_LF, 0x0000 };
+static const char16_t DELIMITERS [] = { DELIM_LF, 0x0000 };
static const uint32_t DELIMITERS_LEN = 1;
#endif
@@ -67,7 +67,7 @@ U_CAPI UTransliterator* U_EXPORT2
u_fsettransliterator(UFILE *file, UFileDirection direction,
UTransliterator *adopt, UErrorCode *status)
{
- UTransliterator *old = NULL;
+ UTransliterator *old = nullptr;
if(U_FAILURE(*status))
{
@@ -87,21 +87,21 @@ u_fsettransliterator(UFILE *file, UFileDirection direction,
return adopt;
}
- if(adopt == NULL) /* they are clearing it */
+ if(adopt == nullptr) /* they are clearing it */
{
- if(file->fTranslit != NULL)
+ if(file->fTranslit != nullptr)
{
/* TODO: Check side */
old = file->fTranslit->translit;
uprv_free(file->fTranslit->buffer);
- file->fTranslit->buffer=NULL;
+ file->fTranslit->buffer=nullptr;
uprv_free(file->fTranslit);
- file->fTranslit=NULL;
+ file->fTranslit=nullptr;
}
}
else
{
- if(file->fTranslit == NULL)
+ if(file->fTranslit == nullptr)
{
file->fTranslit = (UFILETranslitBuffer*) uprv_malloc(sizeof(UFILETranslitBuffer));
if(!file->fTranslit)
@@ -112,7 +112,7 @@ u_fsettransliterator(UFILE *file, UFileDirection direction,
file->fTranslit->capacity = 0;
file->fTranslit->length = 0;
file->fTranslit->pos = 0;
- file->fTranslit->buffer = NULL;
+ file->fTranslit->buffer = nullptr;
}
else
{
@@ -126,7 +126,7 @@ u_fsettransliterator(UFILE *file, UFileDirection direction,
return old;
}
-static const UChar * u_file_translit(UFILE *f, const UChar *src, int32_t *count, UBool flush)
+static const char16_t * u_file_translit(UFILE *f, const char16_t *src, int32_t *count, UBool flush)
{
int32_t newlen;
int32_t junkCount = 0;
@@ -135,7 +135,7 @@ static const UChar * u_file_translit(UFILE *f, const UChar *src, int32_t *count,
UTransPosition pos;
UErrorCode status = U_ZERO_ERROR;
- if(count == NULL)
+ if(count == nullptr)
{
count = &junkCount;
}
@@ -150,7 +150,7 @@ static const UChar * u_file_translit(UFILE *f, const UChar *src, int32_t *count,
if(f->fTranslit->length > f->fTranslit->pos)
{
memmove(f->fTranslit->buffer, f->fTranslit->buffer + f->fTranslit->pos,
- (f->fTranslit->length - f->fTranslit->pos)*sizeof(UChar));
+ (f->fTranslit->length - f->fTranslit->pos)*sizeof(char16_t));
}
f->fTranslit->length -= f->fTranslit->pos; /* always */
f->fTranslit->pos = 0;
@@ -160,17 +160,17 @@ static const UChar * u_file_translit(UFILE *f, const UChar *src, int32_t *count,
if(newlen > f->fTranslit->capacity)
{
- if(f->fTranslit->buffer == NULL)
+ if(f->fTranslit->buffer == nullptr)
{
- f->fTranslit->buffer = (UChar*)uprv_malloc(newlen * sizeof(UChar));
+ f->fTranslit->buffer = (char16_t*)uprv_malloc(newlen * sizeof(char16_t));
}
else
{
- f->fTranslit->buffer = (UChar*)uprv_realloc(f->fTranslit->buffer, newlen * sizeof(UChar));
+ f->fTranslit->buffer = (char16_t*)uprv_realloc(f->fTranslit->buffer, newlen * sizeof(char16_t));
}
/* Check for malloc/realloc failure. */
- if (f->fTranslit->buffer == NULL) {
- return NULL;
+ if (f->fTranslit->buffer == nullptr) {
+ return nullptr;
}
f->fTranslit->capacity = newlen;
}
@@ -239,7 +239,7 @@ ufile_flush_translit(UFILE *f)
return;
#endif
- u_file_write_flush(NULL, 0, f, false, true);
+ u_file_write_flush(nullptr, 0, f, false, true);
}
@@ -250,7 +250,7 @@ ufile_flush_io(UFILE *f)
return; /* skip if no file */
}
- u_file_write_flush(NULL, 0, f, true, false);
+ u_file_write_flush(nullptr, 0, f, true, false);
}
@@ -274,7 +274,7 @@ ufile_close_translit(UFILE *f)
}
uprv_free(f->fTranslit);
- f->fTranslit = NULL;
+ f->fTranslit = nullptr;
#endif
}
@@ -282,7 +282,7 @@ ufile_close_translit(UFILE *f)
/* Input/output */
U_CAPI int32_t U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
-u_fputs(const UChar *s,
+u_fputs(const char16_t *s,
UFILE *f)
{
int32_t count = u_file_write(s, u_strlen(s), f);
@@ -294,7 +294,7 @@ U_CAPI UChar32 U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001
u_fputc(UChar32 uc,
UFILE *f)
{
- UChar buf[2];
+ char16_t buf[2];
int32_t idx = 0;
UBool isError = false;
@@ -307,7 +307,7 @@ u_fputc(UChar32 uc,
U_CFUNC int32_t U_EXPORT2
-u_file_write_flush(const UChar *chars,
+u_file_write_flush(const char16_t *chars,
int32_t count,
UFILE *f,
UBool flushIO,
@@ -315,9 +315,9 @@ u_file_write_flush(const UChar *chars,
{
/* Set up conversion parameters */
UErrorCode status = U_ZERO_ERROR;
- const UChar *mySource = chars;
- const UChar *mySourceBegin;
- const UChar *mySourceEnd;
+ const char16_t *mySource = chars;
+ const char16_t *mySourceBegin;
+ const char16_t *mySourceEnd;
char charBuffer[UFILE_CHARBUFFER_SIZE];
char *myTarget = charBuffer;
int32_t written = 0;
@@ -353,13 +353,13 @@ u_file_write_flush(const UChar *chars,
do {
mySourceBegin = mySource; /* beginning location for this loop */
status = U_ZERO_ERROR;
- if(f->fConverter != NULL) { /* We have a valid converter */
+ if(f->fConverter != nullptr) { /* We have a valid converter */
ucnv_fromUnicode(f->fConverter,
&myTarget,
charBuffer + UFILE_CHARBUFFER_SIZE,
&mySource,
mySourceEnd,
- NULL,
+ nullptr,
flushIO,
&status);
} else { /*weiv: do the invariant conversion */
@@ -392,7 +392,7 @@ u_file_write_flush(const UChar *chars,
}
U_CAPI int32_t U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
-u_file_write( const UChar *chars,
+u_file_write( const char16_t *chars,
int32_t count,
UFILE *f)
{
@@ -407,7 +407,7 @@ ufile_fill_uchar_buffer(UFILE *f)
UErrorCode status;
const char *mySource;
const char *mySourceEnd;
- UChar *myTarget;
+ char16_t *myTarget;
int32_t bufferSize;
int32_t maxCPBytes;
int32_t bytesRead;
@@ -416,7 +416,7 @@ ufile_fill_uchar_buffer(UFILE *f)
char charBuffer[UFILE_CHARBUFFER_SIZE];
u_localized_string *str;
- if (f->fFile == NULL) {
+ if (f->fFile == nullptr) {
/* There is nothing to do. It's a string. */
return;
}
@@ -437,9 +437,9 @@ ufile_fill_uchar_buffer(UFILE *f)
/* record how much buffer space is available */
availLength = UFILE_UCHARBUFFER_SIZE - dataSize;
- /* Determine the # of codepage bytes needed to fill our UChar buffer */
- /* weiv: if converter is NULL, we use invariant converter with charwidth = 1)*/
- maxCPBytes = availLength / (f->fConverter!=NULL?(2*ucnv_getMinCharSize(f->fConverter)):1);
+ /* Determine the # of codepage bytes needed to fill our char16_t buffer */
+ /* weiv: if converter is nullptr, we use invariant converter with charwidth = 1)*/
+ maxCPBytes = availLength / (f->fConverter!=nullptr?(2*ucnv_getMinCharSize(f->fConverter)):1);
/* Read in the data to convert */
if (f->fFileno == 0) {
@@ -462,14 +462,14 @@ ufile_fill_uchar_buffer(UFILE *f)
myTarget = f->fUCBuffer + dataSize;
bufferSize = UFILE_UCHARBUFFER_SIZE;
- if(f->fConverter != NULL) { /* We have a valid converter */
+ if(f->fConverter != nullptr) { /* We have a valid converter */
/* Perform the conversion */
ucnv_toUnicode(f->fConverter,
&myTarget,
f->fUCBuffer + bufferSize,
&mySource,
mySourceEnd,
- NULL,
+ nullptr,
(UBool)(feof(f->fFile) != 0),
&status);
@@ -483,22 +483,22 @@ ufile_fill_uchar_buffer(UFILE *f)
str->fLimit = myTarget;
}
-U_CAPI UChar* U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
-u_fgets(UChar *s,
+U_CAPI char16_t* U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
+u_fgets(char16_t *s,
int32_t n,
UFILE *f)
{
int32_t dataSize;
int32_t count;
- UChar *alias;
- const UChar *limit;
- UChar *sItr;
- UChar currDelim = 0;
+ char16_t *alias;
+ const char16_t *limit;
+ char16_t *sItr;
+ char16_t currDelim = 0;
u_localized_string *str;
if (n <= 0) {
/* Caller screwed up. We need to write the null terminatior. */
- return NULL;
+ return nullptr;
}
/* fill the buffer if needed */
@@ -515,7 +515,7 @@ u_fgets(UChar *s,
/* if 0 characters were left, return 0 */
if (dataSize == 0)
- return NULL;
+ return nullptr;
/* otherwise, iteratively fill the buffer and copy */
count = 0;
@@ -587,7 +587,7 @@ u_fgets(UChar *s,
}
U_CFUNC UBool U_EXPORT2
-ufile_getch(UFILE *f, UChar *ch)
+ufile_getch(UFILE *f, char16_t *ch)
{
UBool isValidChar = false;
@@ -610,10 +610,10 @@ ufile_getch(UFILE *f, UChar *ch)
return isValidChar;
}
-U_CAPI UChar U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
+U_CAPI char16_t U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
u_fgetc(UFILE *f)
{
- UChar ch;
+ char16_t ch;
ufile_getch(f, &ch);
return ch;
}
@@ -637,7 +637,7 @@ ufile_getch32(UFILE *f, UChar32 *c32)
*c32 = *(str->fPos)++;
if (U_IS_LEAD(*c32)) {
if (str->fPos < str->fLimit) {
- UChar c16 = *(str->fPos)++;
+ char16_t c16 = *(str->fPos)++;
*c32 = U16_GET_SUPPLEMENTARY(*c32, c16);
isValidChar = true;
}
@@ -693,7 +693,7 @@ u_fungetc(UChar32 ch,
}
U_CAPI int32_t U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
-u_file_read( UChar *chars,
+u_file_read( char16_t *chars,
int32_t count,
UFILE *f)
{
@@ -717,7 +717,7 @@ u_file_read( UChar *chars,
}
/* copy the current data in the buffer */
- memcpy(chars + read, str->fPos, dataSize * sizeof(UChar));
+ memcpy(chars + read, str->fPos, dataSize * sizeof(char16_t));
/* update number of items read */
read += dataSize;
diff --git a/Build/source/libs/icu/icu-src/source/io/ustream.cpp b/Build/source/libs/icu/icu-src/source/io/ustream.cpp
index af8b36965da..fd783b3b239 100644
--- a/Build/source/libs/icu/icu-src/source/io/ustream.cpp
+++ b/Build/source/libs/icu/icu-src/source/io/ustream.cpp
@@ -47,8 +47,8 @@ operator<<(STD_OSTREAM& stream, const UnicodeString& str)
// use the default converter to convert chunks of text
converter = u_getDefaultConverter(&errorCode);
if(U_SUCCESS(errorCode)) {
- const UChar *us = str.getBuffer();
- const UChar *uLimit = us + str.length();
+ const char16_t *us = str.getBuffer();
+ const char16_t *uLimit = us + str.length();
char *s, *sLimit = buffer + (sizeof(buffer) - 1);
do {
errorCode = U_ZERO_ERROR;
@@ -78,7 +78,7 @@ operator>>(STD_ISTREAM& stream, UnicodeString& str)
}
/* ipfx should eat whitespace when ios::skipws is set */
- UChar uBuffer[16];
+ char16_t uBuffer[16];
char buffer[16];
int32_t idx = 0;
UConverter *converter;
@@ -87,11 +87,11 @@ operator>>(STD_ISTREAM& stream, UnicodeString& str)
// use the default converter to convert chunks of text
converter = u_getDefaultConverter(&errorCode);
if(U_SUCCESS(errorCode)) {
- UChar *us = uBuffer;
- const UChar *uLimit = uBuffer + UPRV_LENGTHOF(uBuffer);
+ char16_t *us = uBuffer;
+ const char16_t *uLimit = uBuffer + UPRV_LENGTHOF(uBuffer);
const char *s, *sLimit;
char ch;
- UChar ch32;
+ char16_t ch32;
UBool initialWhitespace = true;
UBool continueReading = true;
diff --git a/Build/source/libs/icu/icu-src/source/layoutex/ParagraphLayout.cpp b/Build/source/libs/icu/icu-src/source/layoutex/ParagraphLayout.cpp
index 11257506699..1788b68e1d0 100644
--- a/Build/source/libs/icu/icu-src/source/layoutex/ParagraphLayout.cpp
+++ b/Build/source/libs/icu/icu-src/source/layoutex/ParagraphLayout.cpp
@@ -53,7 +53,7 @@ private:
};
StyleRuns::StyleRuns(const RunArray *styleRunArrays[], le_int32 styleCount)
- : fStyleCount(styleCount), fRunCount(0), fRunLimits(NULL), fStyleIndices(NULL)
+ : fStyleCount(styleCount), fRunCount(0), fRunLimits(nullptr), fStyleIndices(nullptr)
{
le_int32 maxRunCount = 0;
le_int32 style, run, runStyle;
@@ -112,19 +112,19 @@ StyleRuns::~StyleRuns()
fRunCount = 0;
LE_DELETE_ARRAY(fStyleIndices);
- fStyleIndices = NULL;
+ fStyleIndices = nullptr;
LE_DELETE_ARRAY(fRunLimits);
- fRunLimits = NULL;
+ fRunLimits = nullptr;
}
le_int32 StyleRuns::getRuns(le_int32 runLimits[], le_int32 styleIndices[])
{
- if (runLimits != NULL) {
+ if (runLimits != nullptr) {
LE_ARRAY_COPY(runLimits, fRunLimits, fRunCount);
}
- if (styleIndices != NULL) {
+ if (styleIndices != nullptr) {
LE_ARRAY_COPY(styleIndices, fStyleIndices, fRunCount * fStyleCount);
}
@@ -318,14 +318,14 @@ ParagraphLayout::ParagraphLayout(const LEUnicode chars[], le_int32 count,
UBiDiLevel paragraphLevel, le_bool vertical,
LEErrorCode &status)
: fChars(chars), fCharCount(count),
- fFontRuns(NULL), fLevelRuns(levelRuns), fScriptRuns(scriptRuns), fLocaleRuns(localeRuns),
- fVertical(vertical), fClientLevels(true), fClientScripts(true), fClientLocales(true), fEmbeddingLevels(NULL),
+ fFontRuns(nullptr), fLevelRuns(levelRuns), fScriptRuns(scriptRuns), fLocaleRuns(localeRuns),
+ fVertical(vertical), fClientLevels(true), fClientScripts(true), fClientLocales(true), fEmbeddingLevels(nullptr),
fAscent(0), fDescent(0), fLeading(0),
- fGlyphToCharMap(NULL), fCharToMinGlyphMap(NULL), fCharToMaxGlyphMap(NULL), fGlyphWidths(NULL), fGlyphCount(0),
- fParaBidi(NULL), fLineBidi(NULL),
- fStyleRunLimits(NULL), fStyleIndices(NULL), fStyleRunCount(0),
- fBreakIterator(NULL), fLineStart(-1), fLineEnd(0),
- /*fVisualRuns(NULL), fStyleRunInfo(NULL), fVisualRunCount(-1),
+ fGlyphToCharMap(nullptr), fCharToMinGlyphMap(nullptr), fCharToMaxGlyphMap(nullptr), fGlyphWidths(nullptr), fGlyphCount(0),
+ fParaBidi(nullptr), fLineBidi(nullptr),
+ fStyleRunLimits(nullptr), fStyleIndices(nullptr), fStyleRunCount(0),
+ fBreakIterator(nullptr), fLineStart(-1), fLineEnd(0),
+ /*fVisualRuns(nullptr), fStyleRunInfo(nullptr), fVisualRunCount(-1),
fFirstVisualRun(-1), fLastVisualRun(-1),*/ fVisualRunLastX(0), fVisualRunLastY(0)
{
@@ -341,11 +341,11 @@ ParagraphLayout::ParagraphLayout(const LEUnicode chars[], le_int32 count,
computeLevels(paragraphLevel);
- if (scriptRuns == NULL) {
+ if (scriptRuns == nullptr) {
computeScripts();
}
- if (localeRuns == NULL) {
+ if (localeRuns == nullptr) {
computeLocales();
}
@@ -363,11 +363,11 @@ ParagraphLayout::ParagraphLayout(const LEUnicode chars[], le_int32 count,
StyleRuns styleRuns(styleRunArrays, styleCount);
LEErrorCode layoutStatus = LE_NO_ERROR;
- fStyleRunCount = styleRuns.getRuns(NULL, NULL);
+ fStyleRunCount = styleRuns.getRuns(nullptr, nullptr);
fStyleRunLimits = LE_NEW_ARRAY(le_int32, fStyleRunCount);
fStyleIndices = LE_NEW_ARRAY(le_int32, fStyleRunCount * styleCount);
- if ((fStyleRunLimits == NULL) || (fStyleIndices == NULL)) {
+ if ((fStyleRunLimits == nullptr) || (fStyleIndices == nullptr)) {
status = LE_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -379,24 +379,24 @@ ParagraphLayout::ParagraphLayout(const LEUnicode chars[], le_int32 count,
le_int32 run, runStart;
fStyleRunInfo = LE_NEW_ARRAY(StyleRunInfo, fStyleRunCount);
- if (fStyleRunInfo == NULL) {
+ if (fStyleRunInfo == nullptr) {
status = LE_MEMORY_ALLOCATION_ERROR;
return;
}
else {
// initialize
for (run = 0; run < fStyleRunCount; run += 1) {
- fStyleRunInfo[run].font = NULL;
+ fStyleRunInfo[run].font = nullptr;
fStyleRunInfo[run].runBase = 0;
fStyleRunInfo[run].runLimit = 0;
fStyleRunInfo[run].script = (UScriptCode)0;
- fStyleRunInfo[run].locale = NULL;
+ fStyleRunInfo[run].locale = nullptr;
fStyleRunInfo[run].level = 0;
fStyleRunInfo[run].glyphBase = 0;
- fStyleRunInfo[run].engine = NULL;
+ fStyleRunInfo[run].engine = nullptr;
fStyleRunInfo[run].glyphCount = 0;
- fStyleRunInfo[run].glyphs = NULL;
- fStyleRunInfo[run].positions = NULL;
+ fStyleRunInfo[run].glyphs = nullptr;
+ fStyleRunInfo[run].positions = nullptr;
}
}
@@ -440,8 +440,8 @@ ParagraphLayout::ParagraphLayout(const LEUnicode chars[], le_int32 count,
fGlyphToCharMap = LE_NEW_ARRAY(le_int32, fGlyphCount + 1);
fCharToMinGlyphMap = LE_NEW_ARRAY(le_int32, fCharCount + 1);
fCharToMaxGlyphMap = LE_NEW_ARRAY(le_int32, fCharCount + 1);
- if ((fGlyphWidths == NULL) || (fGlyphToCharMap == NULL) ||
- (fCharToMinGlyphMap == NULL) || (fCharToMaxGlyphMap == NULL)) {
+ if ((fGlyphWidths == nullptr) || (fGlyphToCharMap == nullptr) ||
+ (fCharToMinGlyphMap == nullptr) || (fCharToMaxGlyphMap == nullptr)) {
status = LE_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -455,8 +455,8 @@ ParagraphLayout::ParagraphLayout(const LEUnicode chars[], le_int32 count,
fStyleRunInfo[run].glyphs = LE_NEW_ARRAY(LEGlyphID, glyphCount);
fStyleRunInfo[run].positions = LE_NEW_ARRAY(float, glyphCount * 2 + 2);
- if ((fStyleRunInfo[run].glyphs == NULL) ||
- (fStyleRunInfo[run].positions == NULL)) {
+ if ((fStyleRunInfo[run].glyphs == nullptr) ||
+ (fStyleRunInfo[run].positions == nullptr)) {
status = LE_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -491,7 +491,7 @@ ParagraphLayout::ParagraphLayout(const LEUnicode chars[], le_int32 count,
runStart = fStyleRunLimits[run];
delete engine;
- fStyleRunInfo[run].engine = NULL;
+ fStyleRunInfo[run].engine = nullptr;
}
fGlyphToCharMap[fGlyphCount] = fCharCount;
@@ -531,58 +531,58 @@ ParagraphLayout::~ParagraphLayout()
if (! fClientLevels) {
delete (ValueRuns *) fLevelRuns;
- fLevelRuns = NULL;
+ fLevelRuns = nullptr;
fClientLevels = true;
}
if (! fClientScripts) {
delete (ValueRuns *) fScriptRuns;
- fScriptRuns = NULL;
+ fScriptRuns = nullptr;
fClientScripts = true;
}
if (! fClientLocales) {
delete (LocaleRuns *) fLocaleRuns;
- fLocaleRuns = NULL;
+ fLocaleRuns = nullptr;
fClientLocales = true;
}
- if (fEmbeddingLevels != NULL) {
+ if (fEmbeddingLevels != nullptr) {
LE_DELETE_ARRAY(fEmbeddingLevels);
- fEmbeddingLevels = NULL;
+ fEmbeddingLevels = nullptr;
}
- if (fGlyphToCharMap != NULL) {
+ if (fGlyphToCharMap != nullptr) {
LE_DELETE_ARRAY(fGlyphToCharMap);
- fGlyphToCharMap = NULL;
+ fGlyphToCharMap = nullptr;
}
- if (fCharToMinGlyphMap != NULL) {
+ if (fCharToMinGlyphMap != nullptr) {
LE_DELETE_ARRAY(fCharToMinGlyphMap);
- fCharToMinGlyphMap = NULL;
+ fCharToMinGlyphMap = nullptr;
}
- if (fCharToMaxGlyphMap != NULL) {
+ if (fCharToMaxGlyphMap != nullptr) {
LE_DELETE_ARRAY(fCharToMaxGlyphMap);
- fCharToMaxGlyphMap = NULL;
+ fCharToMaxGlyphMap = nullptr;
}
- if (fGlyphWidths != NULL) {
+ if (fGlyphWidths != nullptr) {
LE_DELETE_ARRAY(fGlyphWidths);
- fGlyphWidths = NULL;
+ fGlyphWidths = nullptr;
}
- if (fParaBidi != NULL) {
+ if (fParaBidi != nullptr) {
ubidi_close(fParaBidi);
- fParaBidi = NULL;
+ fParaBidi = nullptr;
}
- if (fLineBidi != NULL) {
+ if (fLineBidi != nullptr) {
ubidi_close(fLineBidi);
- fLineBidi = NULL;
+ fLineBidi = nullptr;
}
if (fStyleRunCount > 0) {
@@ -595,21 +595,21 @@ ParagraphLayout::~ParagraphLayout()
LE_DELETE_ARRAY(fStyleRunInfo[run].glyphs);
LE_DELETE_ARRAY(fStyleRunInfo[run].positions);
- fStyleRunInfo[run].glyphs = NULL;
- fStyleRunInfo[run].positions = NULL;
+ fStyleRunInfo[run].glyphs = nullptr;
+ fStyleRunInfo[run].positions = nullptr;
}
LE_DELETE_ARRAY(fStyleRunInfo);
- fStyleRunLimits = NULL;
- fStyleIndices = NULL;
- fStyleRunInfo = NULL;
+ fStyleRunLimits = nullptr;
+ fStyleIndices = nullptr;
+ fStyleRunInfo = nullptr;
fStyleRunCount = 0;
}
- if (fBreakIterator != NULL) {
+ if (fBreakIterator != nullptr) {
delete fBreakIterator;
- fBreakIterator = NULL;
+ fBreakIterator = nullptr;
}
}
@@ -621,7 +621,7 @@ le_bool ParagraphLayout::isComplex(const LEUnicode chars[], le_int32 count)
UScriptRun *sr = uscript_openRun(chars, count, &scriptStatus);
le_bool result = false;
- while (uscript_nextRun(sr, NULL, NULL, &scriptCode)) {
+ while (uscript_nextRun(sr, nullptr, nullptr, &scriptCode)) {
if (isComplex(scriptCode)) {
result = true;
break;
@@ -667,7 +667,7 @@ le_bool ParagraphLayout::isDone() const
ParagraphLayout::Line *ParagraphLayout::nextLine(float width)
{
if (isDone()) {
- return NULL;
+ return nullptr;
}
fLineStart = fLineEnd;
@@ -710,7 +710,7 @@ void ParagraphLayout::computeLevels(UBiDiLevel paragraphLevel)
{
UErrorCode bidiStatus = U_ZERO_ERROR;
- if (fLevelRuns != NULL) {
+ if (fLevelRuns != nullptr) {
le_int32 ch;
le_int32 run;
@@ -729,7 +729,7 @@ void ParagraphLayout::computeLevels(UBiDiLevel paragraphLevel)
fParaBidi = ubidi_openSized(fCharCount, 0, &bidiStatus);
ubidi_setPara(fParaBidi, fChars, fCharCount, paragraphLevel, fEmbeddingLevels, &bidiStatus);
- if (fLevelRuns == NULL) {
+ if (fLevelRuns == nullptr) {
le_int32 levelRunCount = ubidi_countRuns(fParaBidi, &bidiStatus);
ValueRuns *levelRuns = new ValueRuns(levelRunCount);
@@ -757,7 +757,7 @@ void ParagraphLayout::computeScripts()
le_int32 limit;
UScriptCode script;
- while (uscript_nextRun(sr, NULL, &limit, &script)) {
+ while (uscript_nextRun(sr, nullptr, &limit, &script)) {
scriptRuns->add(script, limit);
}
@@ -787,7 +787,7 @@ void ParagraphLayout::computeSubFonts(const FontRuns *fontRuns, LEErrorCode &sta
const RunArray *styleRunArrays[] = {fontRuns, fScriptRuns};
le_int32 styleCount = sizeof styleRunArrays / sizeof styleRunArrays[0];
StyleRuns styleRuns(styleRunArrays, styleCount);
- le_int32 styleRunCount = styleRuns.getRuns(NULL, NULL);
+ le_int32 styleRunCount = styleRuns.getRuns(nullptr, nullptr);
le_int32 *styleRunLimits = LE_NEW_ARRAY(le_int32, styleRunCount);
le_int32 *styleIndices = LE_NEW_ARRAY(le_int32, styleRunCount * styleCount);
FontRuns *subFontRuns = new FontRuns(0);
@@ -950,7 +950,7 @@ le_int32 ParagraphLayout::getLanguageCode(const Locale *locale)
uprv_strcat(code, language);
- if ((uprv_strcmp(language, "zho") == 0) && country != NULL) {
+ if ((uprv_strcmp(language, "zho") == 0) && country != nullptr) {
uprv_strcat(code, "_");
uprv_strcat(code, country);
}
@@ -992,7 +992,7 @@ le_int32 ParagraphLayout::previousBreak(le_int32 charIndex)
}
// Create the BreakIterator if we don't already have one
- if (fBreakIterator == NULL) {
+ if (fBreakIterator == nullptr) {
Locale thai("th");
UCharCharacterIterator *iter = new UCharCharacterIterator(fChars, fCharCount);
UErrorCode status = U_ZERO_ERROR;
@@ -1018,7 +1018,7 @@ ParagraphLayout::Line *ParagraphLayout::computeVisualRuns()
fFirstVisualRun = getCharRun(fLineStart);
fLastVisualRun = getCharRun(fLineEnd - 1);
- if (fLineBidi == NULL) {
+ if (fLineBidi == nullptr) {
fLineBidi = ubidi_openSized(fCharCount, 0, &bidiStatus);
}
@@ -1201,7 +1201,7 @@ le_int32 ParagraphLayout::Line::getWidth() const
{
const VisualRun *lastRun = getVisualRun(fRunCount - 1);
- if (lastRun == NULL) {
+ if (lastRun == nullptr) {
return 0;
}
@@ -1214,7 +1214,7 @@ le_int32 ParagraphLayout::Line::getWidth() const
const ParagraphLayout::VisualRun *ParagraphLayout::Line::getVisualRun(le_int32 runIndex) const
{
if (runIndex < 0 || runIndex >= fRunCount) {
- return NULL;
+ return nullptr;
}
return fRuns[runIndex];
diff --git a/Build/source/libs/icu/icu-src/source/layoutex/RunArrays.cpp b/Build/source/libs/icu/icu-src/source/layoutex/RunArrays.cpp
index 20d020c4f01..30b40e53008 100644
--- a/Build/source/libs/icu/icu-src/source/layoutex/RunArrays.cpp
+++ b/Build/source/libs/icu/icu-src/source/layoutex/RunArrays.cpp
@@ -19,7 +19,7 @@ U_NAMESPACE_BEGIN
const char RunArray::fgClassID = 0;
RunArray::RunArray(le_int32 initialCapacity)
- : fClientArrays(false), fLimits(NULL), fCount(0), fCapacity(initialCapacity)
+ : fClientArrays(false), fLimits(nullptr), fCount(0), fCapacity(initialCapacity)
{
if (initialCapacity > 0) {
fLimits = LE_NEW_ARRAY(le_int32, fCapacity);
@@ -30,7 +30,7 @@ RunArray::~RunArray()
{
if (! fClientArrays) {
LE_DELETE_ARRAY(fLimits);
- fLimits = NULL;
+ fLimits = nullptr;
}
}
@@ -76,7 +76,7 @@ le_int32 RunArray::add(le_int32 limit)
const char FontRuns::fgClassID = 0;
FontRuns::FontRuns(le_int32 initialCapacity)
- : RunArray(initialCapacity), fFonts(NULL)
+ : RunArray(initialCapacity), fFonts(nullptr)
{
if (initialCapacity > 0) {
fFonts = LE_NEW_ARRAY(const LEFontInstance *, initialCapacity);
@@ -87,7 +87,7 @@ FontRuns::~FontRuns()
{
if (! fClientArrays) {
LE_DELETE_ARRAY(fFonts);
- fFonts = NULL;
+ fFonts = nullptr;
}
}
@@ -119,7 +119,7 @@ le_int32 FontRuns::add(const LEFontInstance *font, le_int32 limit)
const LEFontInstance *FontRuns::getFont(le_int32 run) const
{
if (run < 0 || run >= getCount()) {
- return NULL;
+ return nullptr;
}
return fFonts[run];
@@ -128,7 +128,7 @@ const LEFontInstance *FontRuns::getFont(le_int32 run) const
const char LocaleRuns::fgClassID = 0;
LocaleRuns::LocaleRuns(le_int32 initialCapacity)
- : RunArray(initialCapacity), fLocales(NULL)
+ : RunArray(initialCapacity), fLocales(nullptr)
{
if (initialCapacity > 0) {
fLocales = LE_NEW_ARRAY(const Locale *, initialCapacity);
@@ -139,7 +139,7 @@ LocaleRuns::~LocaleRuns()
{
if (! fClientArrays) {
LE_DELETE_ARRAY(fLocales);
- fLocales = NULL;
+ fLocales = nullptr;
}
}
@@ -171,7 +171,7 @@ le_int32 LocaleRuns::add(const Locale *locale, le_int32 limit)
const Locale *LocaleRuns::getLocale(le_int32 run) const
{
if (run < 0 || run >= getCount()) {
- return NULL;
+ return nullptr;
}
return fLocales[run];
@@ -180,7 +180,7 @@ const Locale *LocaleRuns::getLocale(le_int32 run) const
const char ValueRuns::fgClassID = 0;
ValueRuns::ValueRuns(le_int32 initialCapacity)
- : RunArray(initialCapacity), fValues(NULL)
+ : RunArray(initialCapacity), fValues(nullptr)
{
if (initialCapacity > 0) {
fValues = LE_NEW_ARRAY(le_int32, initialCapacity);
@@ -191,7 +191,7 @@ ValueRuns::~ValueRuns()
{
if (! fClientArrays) {
LE_DELETE_ARRAY(fValues);
- fValues = NULL;
+ fValues = nullptr;
}
}
diff --git a/Build/source/libs/icu/icu-src/source/layoutex/layout/ParagraphLayout.h b/Build/source/libs/icu/icu-src/source/layoutex/layout/ParagraphLayout.h
index b8a7aa3c17d..f6167ae3292 100644
--- a/Build/source/libs/icu/icu-src/source/layoutex/layout/ParagraphLayout.h
+++ b/Build/source/libs/icu/icu-src/source/layoutex/layout/ParagraphLayout.h
@@ -369,16 +369,16 @@ public:
* @param fontRuns a pointer to a <code>FontRuns</code> object representing the font runs.
*
* @param levelRuns is a pointer to a <code>ValueRuns</code> object representing the directional levels.
- * If this pointer in <code>NULL</code> the levels will be determined by running the Unicode
+ * If this pointer in <code>nullptr</code> the levels will be determined by running the Unicode
* Bidi algorithm.
*
* @param scriptRuns is a pointer to a <code>ValueRuns</code> object representing script runs.
- * If this pointer in <code>NULL</code> the script runs will be determined using the
+ * If this pointer in <code>nullptr</code> the script runs will be determined using the
* Unicode code points.
*
* @param localeRuns is a pointer to a <code>LocaleRuns</code> object representing locale runs.
* The <code>Locale</code> objects are used to determine the language of the text. If this
- * pointer is <code>NULL</code> the default locale will be used for all of the text.
+ * pointer is <code>nullptr</code> the default locale will be used for all of the text.
*
* @param paragraphLevel is the directionality of the paragraph, as in the UBiDi object.
*
@@ -529,7 +529,7 @@ public:
* rest of the paragraph will be returned.
*
* @return a <code>ParagraphLayout::Line</code> object which represents the line. The caller
- * is responsible for deleting the object. Returns <code>NULL</code> if there are no
+ * is responsible for deleting the object. Returns <code>nullptr</code> if there are no
* more lines in the paragraph.
*
* @see ParagraphLayout::Line
@@ -661,13 +661,13 @@ inline void ParagraphLayout::reflow()
}
inline ParagraphLayout::Line::Line()
- : UObject(), fAscent(0), fDescent(0), fLeading(0), fRunCount(0), fRunCapacity(0), fRuns(NULL)
+ : UObject(), fAscent(0), fDescent(0), fLeading(0), fRunCount(0), fRunCapacity(0), fRuns(nullptr)
{
// nothing else to do
}
inline ParagraphLayout::Line::Line(const Line & /*other*/)
- : UObject(), fAscent(0), fDescent(0), fLeading(0), fRunCount(0), fRunCapacity(0), fRuns(NULL)
+ : UObject(), fAscent(0), fDescent(0), fLeading(0), fRunCount(0), fRunCapacity(0), fRuns(nullptr)
{
// nothing else to do
}
@@ -723,13 +723,13 @@ inline le_int32 ParagraphLayout::VisualRun::getLeading() const
}
inline ParagraphLayout::VisualRun::VisualRun()
- : UObject(), fFont(NULL), fDirection(UBIDI_LTR), fGlyphCount(0), fGlyphs(NULL), fPositions(NULL), fGlyphToCharMap(NULL)
+ : UObject(), fFont(nullptr), fDirection(UBIDI_LTR), fGlyphCount(0), fGlyphs(nullptr), fPositions(nullptr), fGlyphToCharMap(nullptr)
{
// nothing
}
inline ParagraphLayout::VisualRun::VisualRun(const VisualRun &/*other*/)
- : UObject(), fFont(NULL), fDirection(UBIDI_LTR), fGlyphCount(0), fGlyphs(NULL), fPositions(NULL), fGlyphToCharMap(NULL)
+ : UObject(), fFont(nullptr), fDirection(UBIDI_LTR), fGlyphCount(0), fGlyphs(nullptr), fPositions(nullptr), fGlyphToCharMap(nullptr)
{
// nothing
}
diff --git a/Build/source/libs/icu/icu-src/source/layoutex/layout/RunArrays.h b/Build/source/libs/icu/icu-src/source/layoutex/layout/RunArrays.h
index 92dfc386a52..08e32826642 100644
--- a/Build/source/libs/icu/icu-src/source/layoutex/layout/RunArrays.h
+++ b/Build/source/libs/icu/icu-src/source/layoutex/layout/RunArrays.h
@@ -222,13 +222,13 @@ private:
};
inline RunArray::RunArray()
- : UObject(), fClientArrays(false), fLimits(NULL), fCount(0), fCapacity(0)
+ : UObject(), fClientArrays(false), fLimits(nullptr), fCount(0), fCapacity(0)
{
// nothing else to do...
}
inline RunArray::RunArray(const RunArray & /*other*/)
- : UObject(), fClientArrays(false), fLimits(NULL), fCount(0), fCapacity(0)
+ : UObject(), fClientArrays(false), fLimits(nullptr), fCount(0), fCapacity(0)
{
// nothing else to do...
}
@@ -383,13 +383,13 @@ private:
};
inline FontRuns::FontRuns()
- : RunArray(0), fFonts(NULL)
+ : RunArray(0), fFonts(nullptr)
{
// nothing else to do...
}
inline FontRuns::FontRuns(const FontRuns & /*other*/)
- : RunArray(0), fFonts(NULL)
+ : RunArray(0), fFonts(nullptr)
{
// nothing else to do...
}
@@ -523,13 +523,13 @@ private:
};
inline LocaleRuns::LocaleRuns()
- : RunArray(0), fLocales(NULL)
+ : RunArray(0), fLocales(nullptr)
{
// nothing else to do...
}
inline LocaleRuns::LocaleRuns(const LocaleRuns & /*other*/)
- : RunArray(0), fLocales(NULL)
+ : RunArray(0), fLocales(nullptr)
{
// nothing else to do...
}
@@ -657,13 +657,13 @@ private:
};
inline ValueRuns::ValueRuns()
- : RunArray(0), fValues(NULL)
+ : RunArray(0), fValues(nullptr)
{
// nothing else to do...
}
inline ValueRuns::ValueRuns(const ValueRuns & /*other*/)
- : RunArray(0), fValues(NULL)
+ : RunArray(0), fValues(nullptr)
{
// nothing else to do...
}
diff --git a/Build/source/libs/icu/icu-src/source/layoutex/playout.cpp b/Build/source/libs/icu/icu-src/source/layoutex/playout.cpp
index cebd4bb4add..08dac262301 100644
--- a/Build/source/libs/icu/icu-src/source/layoutex/playout.cpp
+++ b/Build/source/libs/icu/icu-src/source/layoutex/playout.cpp
@@ -62,7 +62,7 @@ pl_getParagraphLevel(pl_paragraph *paragraph)
{
ParagraphLayout *pl = (ParagraphLayout *) paragraph;
- if (pl == NULL) {
+ if (pl == nullptr) {
return 0;
}
@@ -74,7 +74,7 @@ pl_getTextDirection(pl_paragraph *paragraph)
{
ParagraphLayout *pl = (ParagraphLayout *) paragraph;
- if (pl == NULL) {
+ if (pl == nullptr) {
return UBIDI_LTR;
}
@@ -86,7 +86,7 @@ pl_getAscent(const pl_paragraph *paragraph)
{
ParagraphLayout *pl = (ParagraphLayout *) paragraph;
- if (pl == NULL) {
+ if (pl == nullptr) {
return 0;
}
@@ -98,7 +98,7 @@ pl_getDescent(const pl_paragraph *paragraph)
{
ParagraphLayout *pl = (ParagraphLayout *) paragraph;
- if (pl == NULL) {
+ if (pl == nullptr) {
return 0;
}
@@ -110,7 +110,7 @@ pl_getLeading(const pl_paragraph *paragraph)
{
ParagraphLayout *pl = (ParagraphLayout *) paragraph;
- if (pl == NULL) {
+ if (pl == nullptr) {
return 0;
}
@@ -122,7 +122,7 @@ pl_reflow(pl_paragraph *paragraph)
{
ParagraphLayout *pl = (ParagraphLayout *) paragraph;
- if (pl == NULL) {
+ if (pl == nullptr) {
return;
}
@@ -134,8 +134,8 @@ pl_nextLine(pl_paragraph *paragraph, float width)
{
ParagraphLayout *pl = (ParagraphLayout *) paragraph;
- if (pl == NULL) {
- return NULL;
+ if (pl == nullptr) {
+ return nullptr;
}
return (pl_line *) pl->nextLine(width);
@@ -154,7 +154,7 @@ pl_countLineRuns(const pl_line *line)
{
ParagraphLayout::Line *ll = (ParagraphLayout::Line *) line;
- if (ll == NULL) {
+ if (ll == nullptr) {
return 0;
}
@@ -166,7 +166,7 @@ pl_getLineAscent(const pl_line *line)
{
ParagraphLayout::Line *ll = (ParagraphLayout::Line *) line;
- if (ll == NULL) {
+ if (ll == nullptr) {
return 0;
}
@@ -178,7 +178,7 @@ pl_getLineDescent(const pl_line *line)
{
ParagraphLayout::Line *ll = (ParagraphLayout::Line *) line;
- if (ll == NULL) {
+ if (ll == nullptr) {
return 0;
}
@@ -190,7 +190,7 @@ pl_getLineLeading(const pl_line *line)
{
ParagraphLayout::Line *ll = (ParagraphLayout::Line *) line;
- if (ll == NULL) {
+ if (ll == nullptr) {
return 0;
}
@@ -202,7 +202,7 @@ pl_getLineWidth(const pl_line *line)
{
ParagraphLayout::Line *ll = (ParagraphLayout::Line *) line;
- if (ll == NULL) {
+ if (ll == nullptr) {
return 0;
}
@@ -214,7 +214,7 @@ pl_getLineVisualRun(const pl_line *line, le_int32 runIndex)
{
ParagraphLayout::Line *ll = (ParagraphLayout::Line *) line;
- if (ll == NULL) {
+ if (ll == nullptr) {
return 0;
}
@@ -226,8 +226,8 @@ pl_getVisualRunFont(const pl_visualRun *run)
{
ParagraphLayout::VisualRun *vr = (ParagraphLayout::VisualRun *) run;
- if (vr == NULL) {
- return NULL;
+ if (vr == nullptr) {
+ return nullptr;
}
return (const le_font *) vr->getFont();
@@ -238,7 +238,7 @@ pl_getVisualRunDirection(const pl_visualRun *run)
{
ParagraphLayout::VisualRun *vr = (ParagraphLayout::VisualRun *) run;
- if (vr == NULL) {
+ if (vr == nullptr) {
return UBIDI_LTR;
}
@@ -250,7 +250,7 @@ pl_getVisualRunGlyphCount(const pl_visualRun *run)
{
ParagraphLayout::VisualRun *vr = (ParagraphLayout::VisualRun *) run;
- if (vr == NULL) {
+ if (vr == nullptr) {
return -1;
}
@@ -262,8 +262,8 @@ pl_getVisualRunGlyphs(const pl_visualRun *run)
{
ParagraphLayout::VisualRun *vr = (ParagraphLayout::VisualRun *) run;
- if (vr == NULL) {
- return NULL;
+ if (vr == nullptr) {
+ return nullptr;
}
return vr->getGlyphs();
@@ -274,8 +274,8 @@ pl_getVisualRunPositions(const pl_visualRun *run)
{
ParagraphLayout::VisualRun *vr = (ParagraphLayout::VisualRun *) run;
- if (vr == NULL) {
- return NULL;
+ if (vr == nullptr) {
+ return nullptr;
}
return vr->getPositions();
@@ -286,8 +286,8 @@ pl_getVisualRunGlyphToCharMap(const pl_visualRun *run)
{
ParagraphLayout::VisualRun *vr = (ParagraphLayout::VisualRun *) run;
- if (vr == NULL) {
- return NULL;
+ if (vr == nullptr) {
+ return nullptr;
}
return vr->getGlyphToCharMap();
@@ -298,7 +298,7 @@ pl_getVisualRunAscent(const pl_visualRun *run)
{
ParagraphLayout::VisualRun *vr = (ParagraphLayout::VisualRun *) run;
- if (vr == NULL) {
+ if (vr == nullptr) {
return 0;
}
@@ -310,7 +310,7 @@ pl_getVisualRunDescent(const pl_visualRun *run)
{
ParagraphLayout::VisualRun *vr = (ParagraphLayout::VisualRun *) run;
- if (vr == NULL) {
+ if (vr == nullptr) {
return 0;
}
@@ -322,7 +322,7 @@ pl_getVisualRunLeading(const pl_visualRun *run)
{
ParagraphLayout::VisualRun *vr = (ParagraphLayout::VisualRun *) run;
- if (vr == NULL) {
+ if (vr == nullptr) {
return 0;
}
diff --git a/Build/source/libs/icu/icu-src/source/layoutex/plruns.cpp b/Build/source/libs/icu/icu-src/source/layoutex/plruns.cpp
index 282602364b8..e2796ad24d2 100644
--- a/Build/source/libs/icu/icu-src/source/layoutex/plruns.cpp
+++ b/Build/source/libs/icu/icu-src/source/layoutex/plruns.cpp
@@ -44,7 +44,7 @@ pl_getFontRunCount(const pl_fontRuns *fontRuns)
{
const FontRuns *fr = (const FontRuns *) fontRuns;
- if (fr == NULL) {
+ if (fr == nullptr) {
return -1;
}
@@ -56,7 +56,7 @@ pl_resetFontRuns(pl_fontRuns *fontRuns)
{
FontRuns *fr = (FontRuns *) fontRuns;
- if (fr != NULL) {
+ if (fr != nullptr) {
fr->reset();
}
}
@@ -66,7 +66,7 @@ pl_getFontRunLastLimit(const pl_fontRuns *fontRuns)
{
const FontRuns *fr = (const FontRuns *) fontRuns;
- if (fr == NULL) {
+ if (fr == nullptr) {
return -1;
}
@@ -79,7 +79,7 @@ pl_getFontRunLimit(const pl_fontRuns *fontRuns,
{
const FontRuns *fr = (const FontRuns *) fontRuns;
- if (fr == NULL) {
+ if (fr == nullptr) {
return -1;
}
@@ -92,8 +92,8 @@ pl_getFontRunFont(const pl_fontRuns *fontRuns,
{
const FontRuns *fr = (const FontRuns *) fontRuns;
- if (fr == NULL) {
- return NULL;
+ if (fr == nullptr) {
+ return nullptr;
}
return (const le_font *) fr->getFont(run);
@@ -106,7 +106,7 @@ pl_addFontRun(pl_fontRuns *fontRuns,
{
FontRuns *fr = (FontRuns *) fontRuns;
- if (fr == NULL) {
+ if (fr == nullptr) {
return -1;
}
@@ -140,7 +140,7 @@ pl_getValueRunCount(const pl_valueRuns *valueRuns)
{
const ValueRuns *vr = (const ValueRuns *) valueRuns;
- if (vr == NULL) {
+ if (vr == nullptr) {
return -1;
}
@@ -152,7 +152,7 @@ pl_resetValueRuns(pl_valueRuns *valueRuns)
{
ValueRuns *vr = (ValueRuns *) valueRuns;
- if (vr != NULL) {
+ if (vr != nullptr) {
vr->reset();
}
}
@@ -162,7 +162,7 @@ pl_getValueRunLastLimit(const pl_valueRuns *valueRuns)
{
const ValueRuns *vr = (const ValueRuns *) valueRuns;
- if (vr == NULL) {
+ if (vr == nullptr) {
return -1;
}
@@ -175,7 +175,7 @@ pl_getValueRunLimit(const pl_valueRuns *valueRuns,
{
const ValueRuns *vr = (const ValueRuns *) valueRuns;
- if (vr == NULL) {
+ if (vr == nullptr) {
return -1;
}
@@ -188,7 +188,7 @@ pl_getValueRunValue(const pl_valueRuns *valueRuns,
{
const ValueRuns *vr = (const ValueRuns *) valueRuns;
- if (vr == NULL) {
+ if (vr == nullptr) {
return -1;
}
@@ -202,7 +202,7 @@ pl_addValueRun(pl_valueRuns *valueRuns,
{
ValueRuns *vr = (ValueRuns *) valueRuns;
- if (vr == NULL) {
+ if (vr == nullptr) {
return -1;
}
@@ -316,13 +316,13 @@ private:
};
inline ULocRuns::ULocRuns()
- : LocaleRuns(0), fLocaleNames(NULL)
+ : LocaleRuns(0), fLocaleNames(nullptr)
{
// nothing else to do...
}
inline ULocRuns::ULocRuns(const ULocRuns & /*other*/)
- : LocaleRuns(0), fLocaleNames(NULL)
+ : LocaleRuns(0), fLocaleNames(nullptr)
{
// nothing else to do...
}
@@ -345,7 +345,7 @@ ULocRuns::ULocRuns(const char **locales, const le_int32 *limits, le_int32 count)
}
ULocRuns::ULocRuns(le_int32 initialCapacity)
- : LocaleRuns(initialCapacity), fLocaleNames(NULL)
+ : LocaleRuns(initialCapacity), fLocaleNames(nullptr)
{
if(initialCapacity > 0) {
fLocaleNames = LE_NEW_ARRAY(const char *, initialCapacity);
@@ -362,10 +362,10 @@ ULocRuns::~ULocRuns()
if (fClientArrays) {
LE_DELETE_ARRAY(fLocales);
- fLocales = NULL;
+ fLocales = nullptr;
} else {
LE_DELETE_ARRAY(fLocaleNames);
- fLocaleNames = NULL;
+ fLocaleNames = nullptr;
}
}
@@ -398,7 +398,7 @@ le_int32 ULocRuns::add(const char *locale, le_int32 limit)
const char *ULocRuns::getLocaleName(le_int32 run) const
{
if (run < 0 || run >= getCount()) {
- return NULL;
+ return nullptr;
}
return fLocaleNames[run];
@@ -433,7 +433,7 @@ pl_getLocaleRunCount(const pl_localeRuns *localeRuns)
{
const ULocRuns *lr = (const ULocRuns *) localeRuns;
- if (lr == NULL) {
+ if (lr == nullptr) {
return -1;
}
@@ -445,7 +445,7 @@ pl_resetLocaleRuns(pl_localeRuns *localeRuns)
{
ULocRuns *lr = (ULocRuns *) localeRuns;
- if (lr != NULL) {
+ if (lr != nullptr) {
lr->reset();
}
}
@@ -455,7 +455,7 @@ pl_getLocaleRunLastLimit(const pl_localeRuns *localeRuns)
{
const ULocRuns *lr = (const ULocRuns *) localeRuns;
- if (lr == NULL) {
+ if (lr == nullptr) {
return -1;
}
@@ -468,7 +468,7 @@ pl_getLocaleRunLimit(const pl_localeRuns *localeRuns,
{
const ULocRuns *lr = (const ULocRuns *) localeRuns;
- if (lr == NULL) {
+ if (lr == nullptr) {
return -1;
}
@@ -481,8 +481,8 @@ pl_getLocaleRunLocale(const pl_localeRuns *localeRuns,
{
const ULocRuns *lr = (const ULocRuns *) localeRuns;
- if (lr == NULL) {
- return NULL;
+ if (lr == nullptr) {
+ return nullptr;
}
return lr->getLocaleName(run);
@@ -495,7 +495,7 @@ pl_addLocaleRun(pl_localeRuns *localeRuns,
{
ULocRuns *lr = (ULocRuns *) localeRuns;
- if (lr == NULL) {
+ if (lr == nullptr) {
return -1;
}
diff --git a/Build/source/libs/icu/icu-src/source/python/icutools/databuilder/__main__.py b/Build/source/libs/icu/icu-src/source/python/icutools/databuilder/__main__.py
index a6a387d9ad2..2ff960f544d 100644
--- a/Build/source/libs/icu/icu-src/source/python/icutools/databuilder/__main__.py
+++ b/Build/source/libs/icu/icu-src/source/python/icutools/databuilder/__main__.py
@@ -271,7 +271,7 @@ def main(argv):
"IN_DIR": "$(srcdir)",
"INDEX_NAME": "res_index"
}
- makefile_env = ["ICUDATA_CHAR", "OUT_DIR", "TMP_DIR"]
+ makefile_env = ["ICUDATA_CHAR", "OUT_DIR", "TMP_DIR", "LIBRARY_DATA_DIR"]
common = {
key: "$(%s)" % key
for key in list(makefile_vars.keys()) + makefile_env
@@ -289,7 +289,8 @@ def main(argv):
"CWD_DIR": os.getcwd(),
"INDEX_NAME": "res_index",
# TODO: Pull this from configure script:
- "ICUDATA_CHAR": "l"
+ "ICUDATA_CHAR": "l",
+ "LIBRARY_DATA_DIR": os.path.join(args.out_dir, "build"),
}
# Automatically load BUILDRULES from the src_dir
diff --git a/Build/source/libs/icu/icu-src/source/python/icutools/databuilder/filtration.py b/Build/source/libs/icu/icu-src/source/python/icutools/databuilder/filtration.py
index 27d08b0a772..e9339a08955 100644
--- a/Build/source/libs/icu/icu-src/source/python/icutools/databuilder/filtration.py
+++ b/Build/source/libs/icu/icu-src/source/python/icutools/databuilder/filtration.py
@@ -273,8 +273,8 @@ def _preprocess_file_filters(requests, config, io):
default_filter_json = "exclude" if config.strategy == "additive" else "include"
for category in all_categories:
filter_json = default_filter_json
- # Special default for category "brkitr_lstm" as "exclude" for now.
- if "brkitr_lstm" == category:
+ # Special default for category "brkitr_lstm" and "brkitr_adaboost" as "exclude" for now.
+ if "brkitr_lstm" == category or "brkitr_adaboost" == category:
filter_json = "exclude"
# Figure out the correct filter to create for now.
if "featureFilters" in json_data and category in json_data["featureFilters"]:
diff --git a/Build/source/libs/icu/icu-src/source/runConfigureICU b/Build/source/libs/icu/icu-src/source/runConfigureICU
index 3f8576da695..00a56872979 100755
--- a/Build/source/libs/icu/icu-src/source/runConfigureICU
+++ b/Build/source/libs/icu/icu-src/source/runConfigureICU
@@ -54,7 +54,7 @@ The following names can be supplied as the argument for platform:
MacOSX Use the default compilers on MacOS X (Darwin)
MacOSX/GCC Use the GNU gcc/g++ compilers on MacOSX (Darwin)
MinGW Use the GNU gcc/g++ compilers on MinGW
- MSYS/MSVC Use the Microsoft Visual C++ computer on MSYS
+ MSYS/MSVC Use the Microsoft Visual C++ compiler on MSYS
QNX Use the QNX QCC compiler on QNX/Neutrino
Solaris Use the Sun cc/CC compilers on Solaris
Solaris/GCC Use the GNU gcc/g++ compilers on Solaris
diff --git a/Build/source/libs/icu/icu-src/source/samples/break/break.cpp b/Build/source/libs/icu/icu-src/source/samples/break/break.cpp
index 8678441220d..9df7cd4b27b 100644
--- a/Build/source/libs/icu/icu-src/source/samples/break/break.cpp
+++ b/Build/source/libs/icu/icu-src/source/samples/break/break.cpp
@@ -19,7 +19,7 @@
using namespace icu;
-U_CFUNC int c_main(void);
+U_CFUNC int c_main();
void printUnicodeString(const UnicodeString &s) {
char charBuf[1000];
@@ -96,7 +96,7 @@ void printAt(BreakIterator &boundary, int32_t pos )
}
/* Creating and using text boundaries */
-int main( void )
+int main()
{
puts("ICU Break Iterator Sample Program\n");
puts("C++ Break Iteration\n");
diff --git a/Build/source/libs/icu/icu-src/source/samples/case/case.cpp b/Build/source/libs/icu/icu-src/source/samples/case/case.cpp
index 0f8baff2f16..578e18436d1 100644
--- a/Build/source/libs/icu/icu-src/source/samples/case/case.cpp
+++ b/Build/source/libs/icu/icu-src/source/samples/case/case.cpp
@@ -28,17 +28,17 @@ void printUnicodeString(UFILE *out, const UnicodeString &s) {
}
-int main( void )
+int main()
{
UFILE *out;
UErrorCode status = U_ZERO_ERROR;
- out = u_finit(stdout, NULL, NULL);
+ out = u_finit(stdout, nullptr, nullptr);
if(!out) {
fprintf(stderr, "Could not initialize (finit()) over stdout! \n");
return 1;
}
ucnv_setFromUCallBack(u_fgetConverter(out), UCNV_FROM_U_CALLBACK_ESCAPE,
- NULL, NULL, NULL, &status);
+ nullptr, nullptr, nullptr, &status);
if(U_FAILURE(status)) {
u_fprintf(out, "Warning- couldn't set the substitute callback - err %s\n", u_errorName(status));
}
@@ -50,9 +50,9 @@ int main( void )
UnicodeString string("This is a test");
/* lowercase = "istanbul" */
- UChar lowercase[] = {0x69, 0x73, 0x74, 0x61, 0x6e, 0x62, 0x75, 0x6c, 0};
+ char16_t lowercase[] = {0x69, 0x73, 0x74, 0x61, 0x6e, 0x62, 0x75, 0x6c, 0};
/* uppercase = "LATIN CAPITAL I WITH DOT ABOVE STANBUL" */
- UChar uppercase[] = {0x0130, 0x53, 0x54, 0x41, 0x4e, 0x42, 0x55, 0x4C, 0};
+ char16_t uppercase[] = {0x0130, 0x53, 0x54, 0x41, 0x4e, 0x42, 0x55, 0x4C, 0};
UnicodeString upper(uppercase);
UnicodeString lower(lowercase);
diff --git a/Build/source/libs/icu/icu-src/source/samples/citer/citer.cpp b/Build/source/libs/icu/icu-src/source/samples/citer/citer.cpp
index f8193707144..d9a095f3f30 100644
--- a/Build/source/libs/icu/icu-src/source/samples/citer/citer.cpp
+++ b/Build/source/libs/icu/icu-src/source/samples/citer/citer.cpp
@@ -36,7 +36,7 @@ void printUnicodeString(const UnicodeString &s)
void printUChar(UChar32 ch)
{
if(ch < 127) {
- u_fprintf(out, "%C", (UChar) ch);
+ u_fprintf(out, "%C", (char16_t) ch);
} else if (ch == CharacterIterator::DONE) {
u_fprintf(out, "[CharacterIterator::DONE = 0xFFFF]");
} else {
@@ -56,7 +56,7 @@ void Test::TestUChariter() {
"to the aid of their country.";
UnicodeString testString(testChars,"");
- const UChar *testText = testString.getTerminatedBuffer();
+ const char16_t *testText = testString.getTerminatedBuffer();
UCharCharacterIterator iter(testText, u_strlen(testText));
UCharCharacterIterator* test2 = iter.clone();
@@ -80,7 +80,7 @@ void Test::TestUChariter() {
// Demonstrates seeking forward using the iterator.
u_fprintf(out, "Forward = ");
- UChar c = iter.first();
+ char16_t c = iter.first();
printUChar(c); // The first char
int32_t i = 0;
@@ -123,7 +123,7 @@ void Test::TestStringiter() {
"to the aid of their country.";
UnicodeString testString(testChars,"");
- const UChar *testText = testString.getTerminatedBuffer();
+ const char16_t *testText = testString.getTerminatedBuffer();
StringCharacterIterator iter(testText, u_strlen(testText));
StringCharacterIterator* test2 = iter.clone();
@@ -142,7 +142,7 @@ void Test::TestStringiter() {
u_fprintf(out, "Backwards: ");
- UChar c = iter.last();
+ char16_t c = iter.last();
int32_t i = iter.endIndex();
printUChar(c);
@@ -180,11 +180,11 @@ void Test::TestStringiter() {
}
/* Creating and using text boundaries */
-int main( void )
+int main()
{
UErrorCode status = U_ZERO_ERROR;
- out = u_finit(stdout, NULL, NULL);
+ out = u_finit(stdout, nullptr, nullptr);
u_fprintf(out, "ICU Iteration Sample Program (C++)\n\n");
diff --git a/Build/source/libs/icu/icu-src/source/samples/coll/coll.cpp b/Build/source/libs/icu/icu-src/source/samples/coll/coll.cpp
index 909412f5b67..c524c71aec6 100644
--- a/Build/source/libs/icu/icu-src/source/samples/coll/coll.cpp
+++ b/Build/source/libs/icu/icu-src/source/samples/coll/coll.cpp
@@ -142,8 +142,8 @@ UBool processOptions(int argc, const char **argv, OptSpec opts[])
*/
int strcmp()
{
- UChar source[100];
- UChar target[100];
+ char16_t source[100];
+ char16_t target[100];
u_unescape(opt_source, source, 100);
u_unescape(opt_target, target, 100);
UCollationResult result = ucol_strcoll(collator, source, -1, target, -1);
@@ -163,12 +163,12 @@ UBool processCollator()
{
// Set up an ICU collator
UErrorCode status = U_ZERO_ERROR;
- UChar rules[100];
+ char16_t rules[100];
if (opt_rules != 0) {
u_unescape(opt_rules, rules, 100);
collator = ucol_openRules(rules, -1, UCOL_OFF, UCOL_TERTIARY,
- NULL, &status);
+ nullptr, &status);
}
else {
collator = ucol_open(opt_locale, &status);
diff --git a/Build/source/libs/icu/icu-src/source/samples/datecal/cal.cpp b/Build/source/libs/icu/icu-src/source/samples/datecal/cal.cpp
index f8c0ef500bc..3af2fe1a3ba 100644
--- a/Build/source/libs/icu/icu-src/source/samples/datecal/cal.cpp
+++ b/Build/source/libs/icu/icu-src/source/samples/datecal/cal.cpp
@@ -62,7 +62,7 @@ void cpp_main()
/* Creating and using text boundaries */
-int main( void )
+int main()
{
puts("Date-Calendar sample program");
diff --git a/Build/source/libs/icu/icu-src/source/samples/datefmt/util.cpp b/Build/source/libs/icu/icu-src/source/samples/datefmt/util.cpp
index f7c2ade95ee..32d08eddd90 100644
--- a/Build/source/libs/icu/icu-src/source/samples/datefmt/util.cpp
+++ b/Build/source/libs/icu/icu-src/source/samples/datefmt/util.cpp
@@ -40,7 +40,7 @@ UnicodeString escape(const UnicodeString &source) {
UnicodeString target;
target += "\"";
for (i=0; i<source.length(); ++i) {
- UChar ch = source[i];
+ char16_t ch = source[i];
if (ch < 0x09 || (ch > 0x0A && ch < 0x20) || ch > 0x7E) {
target += "\\u";
appendHex(ch, 4, target);
diff --git a/Build/source/libs/icu/icu-src/source/samples/dtitvfmtsample/dtitvfmtsample.cpp b/Build/source/libs/icu/icu-src/source/samples/dtitvfmtsample/dtitvfmtsample.cpp
index 3644fe01687..912a849ce75 100644
--- a/Build/source/libs/icu/icu-src/source/samples/dtitvfmtsample/dtitvfmtsample.cpp
+++ b/Build/source/libs/icu/icu-src/source/samples/dtitvfmtsample/dtitvfmtsample.cpp
@@ -24,7 +24,7 @@ static void dtitvfmtPreDefined() {
u_printf("===============================================================================\n");
//! [dtitvfmtPreDefined]
- UFILE *out = u_finit(stdout, NULL, "UTF-8");
+ UFILE *out = u_finit(stdout, nullptr, "UTF-8");
UErrorCode status =U_ZERO_ERROR;
// create 3 Date Intervals
UnicodeString data[] = {
@@ -86,7 +86,7 @@ static void dtitvfmtCustomized() {
u_printf("\n");
u_printf("================================================================================\n");
//! [dtitvfmtCustomized]
- UFILE *out = u_finit(stdout, NULL, "UTF-8");
+ UFILE *out = u_finit(stdout, nullptr, "UTF-8");
UErrorCode status =U_ZERO_ERROR;
UnicodeString data[] = {
UnicodeString("2007-9-10 10:10:10"),
diff --git a/Build/source/libs/icu/icu-src/source/samples/dtptngsample/dtptngsample.cpp b/Build/source/libs/icu/icu-src/source/samples/dtptngsample/dtptngsample.cpp
index 1c39f9794f9..b55f31c50d8 100644
--- a/Build/source/libs/icu/icu-src/source/samples/dtptngsample/dtptngsample.cpp
+++ b/Build/source/libs/icu/icu-src/source/samples/dtptngsample/dtptngsample.cpp
@@ -41,7 +41,7 @@ static void getBestPatternExample() {
const char* filename = "sample.txt";
/* open a UTF-8 file for writing */
- UFILE* f = u_fopen(filename, "w", NULL,"UTF-8");
+ UFILE* f = u_fopen(filename, "w", nullptr,"UTF-8");
UnicodeString dateReturned;
UErrorCode status =U_ZERO_ERROR;
Calendar *cal = Calendar::createInstance(status);
@@ -121,7 +121,7 @@ static void replaceFieldTypesExample() {
u_printf(" Use replaceFieldTypes API to replace zone 'zzzz' with 'vvvv'\n");
u_printf("========================================================================\n");
//! [replaceFieldTypesExample]
- UFILE *out = u_finit(stdout, NULL, "UTF-8");
+ UFILE *out = u_finit(stdout, nullptr, "UTF-8");
UErrorCode status =U_ZERO_ERROR;
UnicodeString pattern,dateReturned;
Locale locale =Locale::getFrance();
diff --git a/Build/source/libs/icu/icu-src/source/samples/layout/FontMap.cpp b/Build/source/libs/icu/icu-src/source/samples/layout/FontMap.cpp
index 5bb32649c51..37ceb7eb1e1 100644
--- a/Build/source/libs/icu/icu-src/source/samples/layout/FontMap.cpp
+++ b/Build/source/libs/icu/icu-src/source/samples/layout/FontMap.cpp
@@ -32,8 +32,8 @@ FontMap::FontMap(const char *fileName, le_int16 pointSize, GUISupport *guiSuppor
/**/
for (i = 0; i < scriptCodeCount; i += 1) {
fFontIndices[i] = -1;
- fFontNames[i] = NULL;
- fFontInstances[i] = NULL;
+ fFontNames[i] = nullptr;
+ fFontInstances[i] = nullptr;
}
/**/
@@ -46,14 +46,14 @@ FontMap::FontMap(const char *fileName, le_int16 pointSize, GUISupport *guiSuppor
file = fopen(fileName, "r");
- if (file == NULL) {
+ if (file == nullptr) {
sprintf(errorMessage, "Could not open the font map file: %s.", fileName);
fGUISupport->postErrorMessage(errorMessage, "Font Map Error");
status = LE_FONT_FILE_NOT_FOUND_ERROR;
return;
}
- while (fgets(buffer, BUFFER_SIZE, file) != NULL) {
+ while (fgets(buffer, BUFFER_SIZE, file) != nullptr) {
UScriptCode scriptCode;
UErrorCode scriptStatus = U_ZERO_ERROR;
@@ -116,13 +116,13 @@ FontMap::~FontMap()
le_int32 font;
for (font = 0; font < fFontCount; font += 1) {
- if (fFontNames[font] != NULL) {
+ if (fFontNames[font] != nullptr) {
delete[] (char *) fFontNames[font];
}
}
for (font = 0; font < fFontCount; font += 1) {
- if (fFontInstances[font] != NULL) {
+ if (fFontInstances[font] != nullptr) {
delete fFontInstances[font];
}
}
@@ -199,12 +199,12 @@ char *FontMap::strip(char *s)
const LEFontInstance *FontMap::getScriptFont(le_int32 scriptCode, LEErrorCode &status)
{
if (LE_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
if (scriptCode <= -1 || scriptCode >= scriptCodeCount) {
status = LE_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
@@ -214,16 +214,16 @@ const LEFontInstance *FontMap::getScriptFont(le_int32 scriptCode, LEErrorCode &s
sprintf(errorMessage, "No font was set for script %s", uscript_getName((UScriptCode) scriptCode));
fGUISupport->postErrorMessage(errorMessage, "Font Map Error");
status = LE_FONT_FILE_NOT_FOUND_ERROR;
- return NULL;
+ return nullptr;
}
- if (fFontInstances[fontIndex] == NULL) {
+ if (fFontInstances[fontIndex] == nullptr) {
fFontInstances[fontIndex] = openFont(fFontNames[fontIndex], fPointSize, status);
if (LE_FAILURE(status)) {
sprintf(errorMessage, "Could not open font file %s", fFontNames[fontIndex]);
fGUISupport->postErrorMessage(errorMessage, "Font Map Error");
- return NULL;
+ return nullptr;
}
}
@@ -263,7 +263,7 @@ void FontMap::getMaxMetrics()
LEErrorCode status = LE_NO_ERROR;
le_int32 ascent, descent, leading;
- if (fFontInstances[i] == NULL) {
+ if (fFontInstances[i] == nullptr) {
fFontInstances[i] = openFont(fFontNames[i], fPointSize, status);
if (LE_FAILURE(status)) {
diff --git a/Build/source/libs/icu/icu-src/source/samples/layout/FontTableCache.cpp b/Build/source/libs/icu/icu-src/source/samples/layout/FontTableCache.cpp
index fcf9fe892fb..5429304137b 100644
--- a/Build/source/libs/icu/icu-src/source/samples/layout/FontTableCache.cpp
+++ b/Build/source/libs/icu/icu-src/source/samples/layout/FontTableCache.cpp
@@ -27,14 +27,14 @@ FontTableCache::FontTableCache()
{
fTableCache = LE_NEW_ARRAY(FontTableCacheEntry, fTableCacheSize);
- if (fTableCache == NULL) {
+ if (fTableCache == nullptr) {
fTableCacheSize = 0;
return;
}
for (int i = 0; i < fTableCacheSize; i += 1) {
fTableCache[i].tag = 0;
- fTableCache[i].table = NULL;
+ fTableCache[i].table = nullptr;
}
}
@@ -44,13 +44,13 @@ FontTableCache::~FontTableCache()
freeFontTable(fTableCache[i].table);
fTableCache[i].tag = 0;
- fTableCache[i].table = NULL;
+ fTableCache[i].table = nullptr;
}
fTableCacheCurr = 0;
LE_DELETE_ARRAY(fTableCache);
- fTableCache = NULL;
+ fTableCache = nullptr;
}
void FontTableCache::freeFontTable(const void *table) const
@@ -82,7 +82,7 @@ void FontTableCache::add(LETag tableTag, const void *table)
for (le_int32 i = fTableCacheSize; i < newSize; i += 1) {
fTableCache[i].tag = 0;
- fTableCache[i].table = NULL;
+ fTableCache[i].table = nullptr;
}
fTableCacheSize = newSize;
diff --git a/Build/source/libs/icu/icu-src/source/samples/layout/GDIFontInstance.cpp b/Build/source/libs/icu/icu-src/source/samples/layout/GDIFontInstance.cpp
index 8bd917730b8..97d3c6e78d3 100644
--- a/Build/source/libs/icu/icu-src/source/samples/layout/GDIFontInstance.cpp
+++ b/Build/source/libs/icu/icu-src/source/samples/layout/GDIFontInstance.cpp
@@ -28,7 +28,7 @@
#include "cmaps.h"
GDISurface::GDISurface(HDC theHDC)
- : fHdc(theHDC), fCurrentFont(NULL)
+ : fHdc(theHDC), fCurrentFont(nullptr)
{
// nothing else to do
}
@@ -41,7 +41,7 @@ GDISurface::~GDISurface()
void GDISurface::setHDC(HDC theHDC)
{
fHdc = theHDC;
- fCurrentFont = NULL;
+ fCurrentFont = nullptr;
}
void GDISurface::setFont(const GDIFontInstance *font)
@@ -108,9 +108,9 @@ void GDISurface::drawGlyphs(const LEFontInstance *font, const LEGlyphID *glyphs,
}
GDIFontInstance::GDIFontInstance(GDISurface *surface, TCHAR *faceName, le_int16 pointSize, LEErrorCode &status)
- : FontTableCache(), fSurface(surface), fFont(NULL),
+ : FontTableCache(), fSurface(surface), fFont(nullptr),
fPointSize(pointSize), fUnitsPerEM(0), fAscent(0), fDescent(0), fLeading(0),
- fDeviceScaleX(1), fDeviceScaleY(1), fMapper(NULL)
+ fDeviceScaleX(1), fDeviceScaleY(1), fMapper(nullptr)
{
LOGFONT lf;
FLOAT dpiX, dpiY;
@@ -125,9 +125,9 @@ GDIFontInstance::GDIFontInstance(GDISurface *surface, TCHAR *faceName, le_int16
SaveDC(hdc);
SetGraphicsMode(hdc, GM_ADVANCED);
- ModifyWorldTransform(hdc, NULL, MWT_IDENTITY);
- SetViewportOrgEx(hdc, 0, 0, NULL);
- SetWindowOrgEx(hdc, 0, 0, NULL);
+ ModifyWorldTransform(hdc, nullptr, MWT_IDENTITY);
+ SetViewportOrgEx(hdc, 0, 0, nullptr);
+ SetWindowOrgEx(hdc, 0, 0, nullptr);
dpiX = (FLOAT) GetDeviceCaps(hdc, LOGPIXELSX);
dpiY = (FLOAT) GetDeviceCaps(hdc, LOGPIXELSY);
@@ -159,7 +159,7 @@ GDIFontInstance::GDIFontInstance(GDISurface *surface, TCHAR *faceName, le_int16
fFont = CreateFontIndirect(&lf);
- if (fFont == NULL) {
+ if (fFont == nullptr) {
status = LE_FONT_FILE_NOT_FOUND_ERROR;
return;
}
@@ -193,9 +193,9 @@ restore:
}
GDIFontInstance::GDIFontInstance(GDISurface *surface, const char *faceName, le_int16 pointSize, LEErrorCode &status)
- : FontTableCache(), fSurface(surface), fFont(NULL),
+ : FontTableCache(), fSurface(surface), fFont(nullptr),
fPointSize(pointSize), fUnitsPerEM(0), fAscent(0), fDescent(0), fLeading(0),
- fDeviceScaleX(1), fDeviceScaleY(1), fMapper(NULL)
+ fDeviceScaleX(1), fDeviceScaleY(1), fMapper(nullptr)
{
LOGFONTA lf;
FLOAT dpiX, dpiY;
@@ -210,9 +210,9 @@ GDIFontInstance::GDIFontInstance(GDISurface *surface, const char *faceName, le_i
SaveDC(hdc);
SetGraphicsMode(hdc, GM_ADVANCED);
- ModifyWorldTransform(hdc, NULL, MWT_IDENTITY);
- SetViewportOrgEx(hdc, 0, 0, NULL);
- SetWindowOrgEx(hdc, 0, 0, NULL);
+ ModifyWorldTransform(hdc, nullptr, MWT_IDENTITY);
+ SetViewportOrgEx(hdc, 0, 0, nullptr);
+ SetWindowOrgEx(hdc, 0, 0, nullptr);
dpiX = (FLOAT) GetDeviceCaps(hdc, LOGPIXELSX);
dpiY = (FLOAT) GetDeviceCaps(hdc, LOGPIXELSY);
@@ -247,7 +247,7 @@ GDIFontInstance::GDIFontInstance(GDISurface *surface, const char *faceName, le_i
fFont = CreateFontIndirectA(&lf);
- if (fFont == NULL) {
+ if (fFont == nullptr) {
status = LE_FONT_FILE_NOT_FOUND_ERROR;
return;
}
@@ -262,13 +262,13 @@ GDIFontInstance::GDIFontInstance(GDISurface *surface, const char *faceName, le_i
fDescent = otm.otmTextMetrics.tmDescent;
fLeading = otm.otmTextMetrics.tmExternalLeading;
} else {
- const HEADTable *headTable = NULL;
- const HHEATable *hheaTable = NULL;
+ const HEADTable *headTable = nullptr;
+ const HHEATable *hheaTable = nullptr;
// read unitsPerEm from 'head' table
headTable = (const HEADTable *) readFontTable(LE_HEAD_TABLE_TAG);
- if (headTable == NULL) {
+ if (headTable == nullptr) {
status = LE_MISSING_FONT_TABLE_ERROR;
goto restore;
}
@@ -278,7 +278,7 @@ GDIFontInstance::GDIFontInstance(GDISurface *surface, const char *faceName, le_i
hheaTable = (HHEATable *) readFontTable(LE_HHEA_TABLE_TAG);
- if (hheaTable == NULL) {
+ if (hheaTable == nullptr) {
status = LE_MISSING_FONT_TABLE_ERROR;
goto restore;
}
@@ -311,13 +311,13 @@ GDIFontInstance::~GDIFontInstance()
delete[] fTableCache;
#endif
- if (fFont != NULL) {
+ if (fFont != nullptr) {
// FIXME: call RemoveObject first?
DeleteObject(fFont);
}
delete fMapper;
- fMapper = NULL;
+ fMapper = nullptr;
}
LEErrorCode GDIFontInstance::initMapper()
@@ -325,13 +325,13 @@ LEErrorCode GDIFontInstance::initMapper()
LETag cmapTag = LE_CMAP_TABLE_TAG;
const CMAPTable *cmap = (const CMAPTable *) readFontTable(cmapTag);
- if (cmap == NULL) {
+ if (cmap == nullptr) {
return LE_MISSING_FONT_TABLE_ERROR;
}
fMapper = CMAPMapper::createUnicodeMapper(cmap);
- if (fMapper == NULL) {
+ if (fMapper == nullptr) {
return LE_MISSING_FONT_TABLE_ERROR;
}
@@ -349,8 +349,8 @@ const void *GDIFontInstance::readFontTable(LETag tableTag) const
HDC hdc = fSurface->getHDC();
DWORD stag = SWAPL(tableTag);
- DWORD len = GetFontData(hdc, stag, 0, NULL, 0);
- void *result = NULL;
+ DWORD len = GetFontData(hdc, stag, 0, nullptr, 0);
+ void *result = nullptr;
if (len != GDI_ERROR) {
result = LE_NEW_ARRAY(char, len);
@@ -377,7 +377,7 @@ void GDIFontInstance::getGlyphAdvance(LEGlyphID glyph, LEPoint &advance) const
fSurface->setFont(this);
- result = GetGlyphOutline(hdc, glyph, GGO_GLYPH_INDEX | GGO_METRICS, &metrics, 0, NULL, &identity);
+ result = GetGlyphOutline(hdc, glyph, GGO_GLYPH_INDEX | GGO_METRICS, &metrics, 0, nullptr, &identity);
if (result == GDI_ERROR) {
return;
diff --git a/Build/source/libs/icu/icu-src/source/samples/layout/GDIFontMap.cpp b/Build/source/libs/icu/icu-src/source/samples/layout/GDIFontMap.cpp
index 19213b22b5b..3ecc9a66219 100644
--- a/Build/source/libs/icu/icu-src/source/samples/layout/GDIFontMap.cpp
+++ b/Build/source/libs/icu/icu-src/source/samples/layout/GDIFontMap.cpp
@@ -36,7 +36,7 @@ const LEFontInstance *GDIFontMap::openFont(const char *fontName, le_int16 pointS
if (LE_FAILURE(status)) {
delete result;
- result = NULL;
+ result = nullptr;
}
return result;
diff --git a/Build/source/libs/icu/icu-src/source/samples/layout/GDIGUISupport.cpp b/Build/source/libs/icu/icu-src/source/samples/layout/GDIGUISupport.cpp
index e314b8ae7fa..a0ad3846628 100644
--- a/Build/source/libs/icu/icu-src/source/samples/layout/GDIGUISupport.cpp
+++ b/Build/source/libs/icu/icu-src/source/samples/layout/GDIGUISupport.cpp
@@ -23,6 +23,6 @@
void GDIGUISupport::postErrorMessage(const char *message, const char *title)
{
- MessageBoxA(NULL, message, title, MB_ICONERROR);
+ MessageBoxA(nullptr, message, title, MB_ICONERROR);
}
diff --git a/Build/source/libs/icu/icu-src/source/samples/layout/GnomeFontInstance.cpp b/Build/source/libs/icu/icu-src/source/samples/layout/GnomeFontInstance.cpp
index 6f6a59ff3af..b8af64a4714 100644
--- a/Build/source/libs/icu/icu-src/source/samples/layout/GnomeFontInstance.cpp
+++ b/Build/source/libs/icu/icu-src/source/samples/layout/GnomeFontInstance.cpp
@@ -54,12 +54,12 @@ void GnomeSurface::drawGlyphs(const LEFontInstance *font, const LEGlyphID *glyph
GnomeFontInstance::GnomeFontInstance(FT_Library engine, const char *fontPathName, le_int16 pointSize, LEErrorCode &status)
: FontTableCache(), fPointSize(pointSize), fUnitsPerEM(0), fAscent(0), fDescent(0), fLeading(0),
- fDeviceScaleX(1), fDeviceScaleY(1), fMapper(NULL)
+ fDeviceScaleX(1), fDeviceScaleY(1), fMapper(nullptr)
{
FT_Error error;
- fFace = NULL;
- fCairoFace = NULL;
+ fFace = nullptr;
+ fCairoFace = nullptr;
error = FT_New_Face(engine, fontPathName, 0, &fFace);
@@ -97,7 +97,7 @@ GnomeFontInstance::~GnomeFontInstance()
{
cairo_font_face_destroy(fCairoFace);
- if (fFace != NULL) {
+ if (fFace != nullptr) {
FT_Done_Face(fFace);
}
}
@@ -107,13 +107,13 @@ LEErrorCode GnomeFontInstance::initMapper()
LETag cmapTag = LE_CMAP_TABLE_TAG;
const CMAPTable *cmap = (const CMAPTable *) readFontTable(cmapTag);
- if (cmap == NULL) {
+ if (cmap == nullptr) {
return LE_MISSING_FONT_TABLE_ERROR;
}
fMapper = CMAPMapper::createUnicodeMapper(cmap);
- if (fMapper == NULL) {
+ if (fMapper == nullptr) {
return LE_MISSING_FONT_TABLE_ERROR;
}
@@ -128,9 +128,9 @@ const void *GnomeFontInstance::getFontTable(LETag tableTag) const
const void *GnomeFontInstance::readFontTable(LETag tableTag) const
{
FT_ULong len = 0;
- FT_Byte *result = NULL;
+ FT_Byte *result = nullptr;
- FT_Load_Sfnt_Table(fFace, tableTag, 0, NULL, &len);
+ FT_Load_Sfnt_Table(fFace, tableTag, 0, nullptr, &len);
if (len > 0) {
result = LE_NEW_ARRAY(FT_Byte, len);
diff --git a/Build/source/libs/icu/icu-src/source/samples/layout/GnomeFontMap.cpp b/Build/source/libs/icu/icu-src/source/samples/layout/GnomeFontMap.cpp
index d85f28b9742..e7634b982fb 100644
--- a/Build/source/libs/icu/icu-src/source/samples/layout/GnomeFontMap.cpp
+++ b/Build/source/libs/icu/icu-src/source/samples/layout/GnomeFontMap.cpp
@@ -38,7 +38,7 @@ const LEFontInstance *GnomeFontMap::openFont(const char *fontName, le_int16 poin
if (LE_FAILURE(status)) {
delete result;
- result = NULL;
+ result = nullptr;
}
return result;
diff --git a/Build/source/libs/icu/icu-src/source/samples/layout/GnomeGUISupport.cpp b/Build/source/libs/icu/icu-src/source/samples/layout/GnomeGUISupport.cpp
index 21eb6fb6d2f..e008d05c926 100644
--- a/Build/source/libs/icu/icu-src/source/samples/layout/GnomeGUISupport.cpp
+++ b/Build/source/libs/icu/icu-src/source/samples/layout/GnomeGUISupport.cpp
@@ -31,7 +31,7 @@ void GnomeGUISupport::postErrorMessage(const char *message, const char *title)
gchar *s;
GtkWidget *error;
- s = g_strconcat(title, ":\n", message, NULL);
+ s = g_strconcat(title, ":\n", message, nullptr);
error = gnome_error_dialog(s);
gtk_widget_show(error);
g_free(s);
diff --git a/Build/source/libs/icu/icu-src/source/samples/layout/ScriptCompositeFontInstance.cpp b/Build/source/libs/icu/icu-src/source/samples/layout/ScriptCompositeFontInstance.cpp
index d511d1324a2..bdeb2e420eb 100644
--- a/Build/source/libs/icu/icu-src/source/samples/layout/ScriptCompositeFontInstance.cpp
+++ b/Build/source/libs/icu/icu-src/source/samples/layout/ScriptCompositeFontInstance.cpp
@@ -36,7 +36,7 @@ ScriptCompositeFontInstance::ScriptCompositeFontInstance(FontMap *fontMap)
ScriptCompositeFontInstance::~ScriptCompositeFontInstance()
{
delete fFontMap;
- fFontMap = NULL;
+ fFontMap = nullptr;
}
void ScriptCompositeFontInstance::getGlyphAdvance(LEGlyphID glyph, LEPoint &advance) const
@@ -69,18 +69,18 @@ le_bool ScriptCompositeFontInstance::getGlyphPoint(LEGlyphID glyph, le_int32 poi
const LEFontInstance *ScriptCompositeFontInstance::getSubFont(const LEUnicode chars[], le_int32 *offset, le_int32 limit, le_int32 script, LEErrorCode &success) const
{
if (LE_FAILURE(success)) {
- return NULL;
+ return nullptr;
}
- if (chars == NULL || *offset < 0 || limit < 0 || *offset >= limit || script < 0 || script >= scriptCodeCount) {
+ if (chars == nullptr || *offset < 0 || limit < 0 || *offset >= limit || script < 0 || script >= scriptCodeCount) {
success = LE_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
const LEFontInstance *result = fFontMap->getScriptFont(script, success);
if (LE_FAILURE(success)) {
- return NULL;
+ return nullptr;
}
*offset = limit;
diff --git a/Build/source/libs/icu/icu-src/source/samples/layout/ScriptCompositeFontInstance.h b/Build/source/libs/icu/icu-src/source/samples/layout/ScriptCompositeFontInstance.h
index 5b287a12afd..9e636cb3db5 100644
--- a/Build/source/libs/icu/icu-src/source/samples/layout/ScriptCompositeFontInstance.h
+++ b/Build/source/libs/icu/icu-src/source/samples/layout/ScriptCompositeFontInstance.h
@@ -71,7 +71,7 @@ public:
* was returned cannot render all of the text.
*
* @return an <code>LEFontInstance</code> for the sub font which can render the characters, or
- * <code>NULL</code> if there is an error.
+ * <code>nullptr</code> if there is an error.
*
* @see LEScripts.h
*/
@@ -133,7 +133,7 @@ private:
inline const void *ScriptCompositeFontInstance::getFontTable(LETag /*tableTag*/) const
{
- return NULL;
+ return nullptr;
}
// Can't get units per EM without knowing which sub-font, so
diff --git a/Build/source/libs/icu/icu-src/source/samples/layout/UnicodeReader.cpp b/Build/source/libs/icu/icu-src/source/samples/layout/UnicodeReader.cpp
index a7caa01fec6..172a22e440f 100644
--- a/Build/source/libs/icu/icu-src/source/samples/layout/UnicodeReader.cpp
+++ b/Build/source/libs/icu/icu-src/source/samples/layout/UnicodeReader.cpp
@@ -27,12 +27,12 @@
* Read the text from a file. The text must start with a Unicode Byte
* Order Mark (BOM) so that we know what order to read the bytes in.
*/
-const UChar *UnicodeReader::readFile(const char *fileName, GUISupport *guiSupport, int32_t &charCount)
+const char16_t *UnicodeReader::readFile(const char *fileName, GUISupport *guiSupport, int32_t &charCount)
{
FILE *f;
int32_t fileSize;
- UChar *charBuffer;
+ char16_t *charBuffer;
char *byteBuffer;
char startBytes[4] = {'\xA5', '\xA5', '\xA5', '\xA5'};
char errorMessage[128];
@@ -41,7 +41,7 @@ const UChar *UnicodeReader::readFile(const char *fileName, GUISupport *guiSuppor
f = fopen(fileName, "rb");
- if( f == NULL ) {
+ if( f == nullptr ) {
sprintf(errorMessage,"Couldn't open %s: %s \n", fileName, strerror(errno));
guiSupport->postErrorMessage(errorMessage, "Text File Error");
return 0;
@@ -108,7 +108,7 @@ const UChar *UnicodeReader::readFile(const char *fileName, GUISupport *guiSuppor
delete[] byteBuffer;
charCount = myText.length();
- charBuffer = LE_NEW_ARRAY(UChar, charCount + 1);
+ charBuffer = LE_NEW_ARRAY(char16_t, charCount + 1);
if(charBuffer == 0) {
sprintf(errorMessage,"Couldn't get memory for reading %s: %s \n", fileName, strerror(errno));
guiSupport->postErrorMessage(errorMessage, "Text File Error");
@@ -116,7 +116,7 @@ const UChar *UnicodeReader::readFile(const char *fileName, GUISupport *guiSuppor
}
myText.extract(0, myText.length(), charBuffer);
- charBuffer[charCount] = 0; // NULL terminate for easier reading in the debugger
+ charBuffer[charCount] = 0; // NUL terminate for easier reading in the debugger
return charBuffer;
}
diff --git a/Build/source/libs/icu/icu-src/source/samples/layout/UnicodeReader.h b/Build/source/libs/icu/icu-src/source/samples/layout/UnicodeReader.h
index 2d7c9cc2fe5..6868f403b77 100644
--- a/Build/source/libs/icu/icu-src/source/samples/layout/UnicodeReader.h
+++ b/Build/source/libs/icu/icu-src/source/samples/layout/UnicodeReader.h
@@ -29,7 +29,7 @@ public:
// nothing, too
}
- static const UChar *readFile(const char *fileName, GUISupport *guiSupport, int32_t &charCount);
+ static const char16_t *readFile(const char *fileName, GUISupport *guiSupport, int32_t &charCount);
};
#endif
diff --git a/Build/source/libs/icu/icu-src/source/samples/layout/cmaps.cpp b/Build/source/libs/icu/icu-src/source/samples/layout/cmaps.cpp
index d6f71ed7085..7f2576f82e7 100644
--- a/Build/source/libs/icu/icu-src/source/samples/layout/cmaps.cpp
+++ b/Build/source/libs/icu/icu-src/source/samples/layout/cmaps.cpp
@@ -66,7 +66,7 @@ CMAPMapper *CMAPMapper::createUnicodeMapper(const CMAPTable *cmap)
{
le_uint16 i;
le_uint16 nSubtables = SWAPW(cmap->numberSubtables);
- const CMAPEncodingSubtable *subtable = NULL;
+ const CMAPEncodingSubtable *subtable = nullptr;
le_uint32 offset1 = 0, offset10 = 0;
for (i = 0; i < nSubtables; i += 1) {
@@ -92,7 +92,7 @@ CMAPMapper *CMAPMapper::createUnicodeMapper(const CMAPTable *cmap)
} else if (offset1 != 0) {
subtable = (const CMAPEncodingSubtable *) ((const char *) cmap + offset1);
} else {
- return NULL;
+ return nullptr;
}
switch (SWAPW(subtable->format)) {
@@ -110,7 +110,7 @@ CMAPMapper *CMAPMapper::createUnicodeMapper(const CMAPTable *cmap)
break;
}
- return NULL;
+ return nullptr;
}
CMAPFormat4Mapper::CMAPFormat4Mapper(const CMAPTable *cmap, const CMAPFormat4Encoding *header)
diff --git a/Build/source/libs/icu/icu-src/source/samples/layout/gnomelayout.cpp b/Build/source/libs/icu/icu-src/source/samples/layout/gnomelayout.cpp
index 9944d3d4093..ea1e0d6529a 100644
--- a/Build/source/libs/icu/icu-src/source/samples/layout/gnomelayout.cpp
+++ b/Build/source/libs/icu/icu-src/source/samples/layout/gnomelayout.cpp
@@ -48,7 +48,7 @@ static GnomeGUISupport *guiSupport;
static GnomeFontMap *fontMap;
static ScriptCompositeFontInstance *font;
-static GSList *appList = NULL;
+static GSList *appList = nullptr;
GtkWidget *newSample(const gchar *fileName);
void closeSample(GtkWidget *sample);
@@ -56,10 +56,10 @@ void closeSample(GtkWidget *sample);
void showabout(GtkWidget */*widget*/, gpointer /*data*/)
{
GtkWidget *aboutBox;
- const gchar *documentedBy[] = {NULL};
+ const gchar *documentedBy[] = {nullptr};
const gchar *writtenBy[] = {
"Eric Mader",
- NULL
+ nullptr
};
aboutBox = gnome_about_new("Gnome Layout Sample",
@@ -69,7 +69,7 @@ void showabout(GtkWidget */*widget*/, gpointer /*data*/)
writtenBy,
documentedBy,
"",
- NULL);
+ nullptr);
gtk_widget_show(aboutBox);
}
@@ -82,7 +82,7 @@ void notimpl(GtkObject */*object*/, gpointer /*data*/)
gchar *prettyTitle(const gchar *path)
{
const gchar *name = g_basename(path);
- gchar *title = g_strconcat("Gnome Layout Sample - ", name, NULL);
+ gchar *title = g_strconcat("Gnome Layout Sample - ", name, nullptr);
return title;
}
@@ -99,11 +99,11 @@ void openOK(GtkObject */*object*/, gpointer data)
newPara = Paragraph::paragraphFactory(fileName, font, guiSupport);
- if (newPara != NULL) {
+ if (newPara != nullptr) {
gchar *title = prettyTitle(fileName);
GtkWidget *area = GTK_WIDGET(gtk_object_get_data(GTK_OBJECT(app), "area"));
- if (context->paragraph != NULL) {
+ if (context->paragraph != nullptr) {
delete context->paragraph;
}
@@ -139,7 +139,7 @@ void openfile(GtkObject */*object*/, gpointer data)
GTK_FILE_SELECTION(fileselection)->cancel_button;
gtk_signal_connect(GTK_OBJECT(fileselection), "destroy",
- GTK_SIGNAL_FUNC(gtk_main_quit), NULL);
+ GTK_SIGNAL_FUNC(gtk_main_quit), nullptr);
gtk_signal_connect(GTK_OBJECT(okButton), "clicked",
GTK_SIGNAL_FUNC(openOK), fileselection);
@@ -175,19 +175,19 @@ GnomeUIInfo fileMenu[] =
{
GNOMEUIINFO_MENU_NEW_ITEM((gchar *) "_New Sample",
(gchar *) "Create a new Gnome Layout Sample",
- newapp, NULL),
+ newapp, nullptr),
- GNOMEUIINFO_MENU_OPEN_ITEM(openfile, NULL),
+ GNOMEUIINFO_MENU_OPEN_ITEM(openfile, nullptr),
GNOMEUIINFO_SEPARATOR,
- GNOMEUIINFO_MENU_CLOSE_ITEM(closeapp, NULL),
- GNOMEUIINFO_MENU_EXIT_ITEM(shutdown, NULL),
+ GNOMEUIINFO_MENU_CLOSE_ITEM(closeapp, nullptr),
+ GNOMEUIINFO_MENU_EXIT_ITEM(shutdown, nullptr),
GNOMEUIINFO_END
};
GnomeUIInfo helpMenu[] =
{
// GNOMEUIINFO_HELP("gnomelayout"),
- GNOMEUIINFO_MENU_ABOUT_ITEM(showabout, NULL),
+ GNOMEUIINFO_MENU_ABOUT_ITEM(showabout, nullptr),
GNOMEUIINFO_END
};
@@ -208,7 +208,7 @@ gint eventDelete(GtkWidget *widget, GdkEvent */*event*/, gpointer /*data*/)
gint eventConfigure(GtkWidget */*widget*/, GdkEventConfigure *event, Context *context)
{
- if (context->paragraph != NULL) {
+ if (context->paragraph != nullptr) {
context->width = event->width;
context->height = event->height;
@@ -222,7 +222,7 @@ gint eventConfigure(GtkWidget */*widget*/, GdkEventConfigure *event, Context *co
gint eventExpose(GtkWidget *widget, GdkEvent */*event*/, Context *context)
{
- if (context->paragraph != NULL) {
+ if (context->paragraph != nullptr) {
gint maxLines = context->paragraph->getLineCount() - 1;
gint firstLine = 0, lastLine = context->height / context->paragraph->getLineHeight();
GnomeSurface surface(widget);
@@ -251,7 +251,7 @@ GtkWidget *newSample(const gchar *fileName)
gnome_app_create_menus_with_data(GNOME_APP(app), mainMenu, app);
gtk_signal_connect(GTK_OBJECT(app), "delete_event",
- GTK_SIGNAL_FUNC(eventDelete), NULL);
+ GTK_SIGNAL_FUNC(eventDelete), nullptr);
GtkWidget *area = gtk_drawing_area_new();
gtk_object_set_data(GTK_OBJECT(app), "area", area);
@@ -287,7 +287,7 @@ void closeSample(GtkWidget *app)
{
Context *context = (Context *) gtk_object_get_data(GTK_OBJECT(app), "context");
- if (context->paragraph != NULL) {
+ if (context->paragraph != nullptr) {
delete context->paragraph;
}
@@ -297,7 +297,7 @@ void closeSample(GtkWidget *app)
gtk_widget_destroy(app);
- if (appList == NULL) {
+ if (appList == nullptr) {
gtk_main_quit();
}
}
@@ -310,7 +310,7 @@ int main (int argc, char *argv[])
FT_Init_FreeType(&engine);
- gnome_init_with_popt_table("gnomelayout", "0.1", argc, argv, NULL, 0, &ptctx);
+ gnome_init_with_popt_table("gnomelayout", "0.1", argc, argv, nullptr, 0, &ptctx);
guiSupport = new GnomeGUISupport();
fontMap = new GnomeFontMap(engine, "FontMap.Gnome", 24, guiSupport, fontStatus);
@@ -321,14 +321,14 @@ int main (int argc, char *argv[])
return 1;
}
- const char *defaultArgs[] = {"Sample.txt", NULL};
+ const char *defaultArgs[] = {"Sample.txt", nullptr};
const char **args = poptGetArgs(ptctx);
- if (args == NULL) {
+ if (args == nullptr) {
args = defaultArgs;
}
- for (int i = 0; args[i] != NULL; i += 1) {
+ for (int i = 0; args[i] != nullptr; i += 1) {
app = newSample(args[i]);
gtk_widget_show_all(app);
diff --git a/Build/source/libs/icu/icu-src/source/samples/layout/layout.cpp b/Build/source/libs/icu/icu-src/source/samples/layout/layout.cpp
index da83630c2f5..fd576937971 100644
--- a/Build/source/libs/icu/icu-src/source/samples/layout/layout.cpp
+++ b/Build/source/libs/icu/icu-src/source/samples/layout/layout.cpp
@@ -57,7 +57,7 @@ void InitParagraph(HWND hwnd, Context *context)
{
SCROLLINFO si;
- if (context->paragraph != NULL) {
+ if (context->paragraph != nullptr) {
// FIXME: does it matter what we put in the ScrollInfo
// if the window's been minimized?
if (context->width > 0 && context->height > 0) {
@@ -86,30 +86,30 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine,
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = sizeof(LONG);
wndclass.hInstance = hInstance;
- wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
- wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
+ wndclass.hIcon = LoadIcon(nullptr, IDI_APPLICATION);
+ wndclass.hCursor = LoadCursor(nullptr, IDC_ARROW);
wndclass.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName = szAppName;
wndclass.lpszClassName = szAppName;
if (!RegisterClass(&wndclass)) {
- MessageBox(NULL, TEXT("This demo only runs on Windows 2000!"), szAppName, MB_ICONERROR);
+ MessageBox(nullptr, TEXT("This demo only runs on Windows 2000!"), szAppName, MB_ICONERROR);
return 0;
}
hAccel = LoadAccelerators(hInstance, szAppName);
- hwnd = CreateWindow(szAppName, NULL,
+ hwnd = CreateWindow(szAppName, nullptr,
WS_OVERLAPPEDWINDOW | WS_VSCROLL,
CW_USEDEFAULT, CW_USEDEFAULT,
600, 400,
- NULL, NULL, hInstance, NULL);
+ nullptr, nullptr, hInstance, nullptr);
ShowWindow(hwnd, iCmdShow);
UpdateWindow(hwnd);
- while (GetMessage(&msg, NULL, 0, 0)) {
+ while (GetMessage(&msg, nullptr, 0, 0)) {
if (!TranslateAccelerator(hwnd, hAccel, &msg)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
@@ -125,10 +125,10 @@ LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
HDC hdc;
Context *context;
static le_int32 windowCount = 0;
- static GDIFontMap *fontMap = NULL;
- static GDISurface *surface = NULL;
+ static GDIFontMap *fontMap = nullptr;
+ static GDISurface *surface = nullptr;
static GDIGUISupport *guiSupport = new GDIGUISupport();
- static ScriptCompositeFontInstance *font = NULL;
+ static ScriptCompositeFontInstance *font = nullptr;
switch (message) {
case WM_CREATE:
@@ -222,8 +222,8 @@ LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
context = (Context *) GetWindowLongPtr(hwnd, GWLP_USERDATA);
- if (context->paragraph != NULL && si.nPos != vertPos) {
- ScrollWindow(hwnd, 0, context->paragraph->getLineHeight() * (vertPos - si.nPos), NULL, NULL);
+ if (context->paragraph != nullptr && si.nPos != vertPos) {
+ ScrollWindow(hwnd, 0, context->paragraph->getLineHeight() * (vertPos - si.nPos), nullptr, nullptr);
UpdateWindow(hwnd);
}
@@ -247,7 +247,7 @@ LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
context = (Context *) GetWindowLongPtr(hwnd, GWLP_USERDATA);
- if (context->paragraph != NULL) {
+ if (context->paragraph != nullptr) {
surface->setHDC(hdc);
// NOTE: si.nPos + si.nPage may include a partial line at the bottom
@@ -273,24 +273,24 @@ LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
ofn.lStructSize = sizeof (OPENFILENAMEA);
ofn.hwndOwner = hwnd;
- ofn.hInstance = NULL;
+ ofn.hInstance = nullptr;
ofn.lpstrFilter = szFilter;
- ofn.lpstrCustomFilter = NULL;
+ ofn.lpstrCustomFilter = nullptr;
ofn.nMaxCustFilter = 0;
ofn.nFilterIndex = 0;
ofn.lpstrFile = szFileName;
ofn.nMaxFile = MAX_PATH;
ofn.lpstrFileTitle = szTitleName;
ofn.nMaxFileTitle = MAX_PATH;
- ofn.lpstrInitialDir = NULL;
- ofn.lpstrTitle = NULL;
+ ofn.lpstrInitialDir = nullptr;
+ ofn.lpstrTitle = nullptr;
ofn.Flags = OFN_HIDEREADONLY | OFN_PATHMUSTEXIST;
ofn.nFileOffset = 0;
ofn.nFileExtension = 0;
ofn.lpstrDefExt = "txt";
ofn.lCustData = 0L;
- ofn.lpfnHook = NULL;
- ofn.lpTemplateName = NULL;
+ ofn.lpfnHook = nullptr;
+ ofn.lpTemplateName = nullptr;
szFileName[0] = '\0';
@@ -300,17 +300,17 @@ LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
Paragraph *newParagraph = Paragraph::paragraphFactory(szFileName, font, guiSupport);
- if (newParagraph != NULL) {
+ if (newParagraph != nullptr) {
context = (Context *) GetWindowLongPtr(hwnd, GWLP_USERDATA);
- if (context->paragraph != NULL) {
+ if (context->paragraph != nullptr) {
delete context->paragraph;
}
context->paragraph = newParagraph;
InitParagraph(hwnd, context);
PrettyTitle(hwnd, szTitleName);
- InvalidateRect(hwnd, NULL, true);
+ InvalidateRect(hwnd, nullptr, true);
}
}
@@ -340,7 +340,7 @@ LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
context = (Context *) GetWindowLongPtr(hwnd, GWLP_USERDATA);
- if (context != NULL && context->paragraph != NULL) {
+ if (context != nullptr && context->paragraph != nullptr) {
delete context->paragraph;
}
diff --git a/Build/source/libs/icu/icu-src/source/samples/layout/paragraph.cpp b/Build/source/libs/icu/icu-src/source/samples/layout/paragraph.cpp
index 0559d246d2d..5bfc074f92d 100644
--- a/Build/source/libs/icu/icu-src/source/samples/layout/paragraph.cpp
+++ b/Build/source/libs/icu/icu-src/source/samples/layout/paragraph.cpp
@@ -80,8 +80,8 @@ static void subsetFontRuns(const FontRuns *fontRuns, le_int32 start, le_int32 li
}
Paragraph::Paragraph(const LEUnicode chars[], int32_t charCount, const FontRuns *fontRuns, LEErrorCode &status)
- : fParagraphLayout(NULL), fParagraphCount(0), fParagraphMax(PARA_GROW), fParagraphGrow(PARA_GROW),
- fLineCount(0), fLinesMax(LINE_GROW), fLinesGrow(LINE_GROW), fLines(NULL), fChars(NULL),
+ : fParagraphLayout(nullptr), fParagraphCount(0), fParagraphMax(PARA_GROW), fParagraphGrow(PARA_GROW),
+ fLineCount(0), fLinesMax(LINE_GROW), fLinesGrow(LINE_GROW), fLines(nullptr), fChars(nullptr),
fLineHeight(-1), fAscent(-1), fWidth(-1), fHeight(-1), fParagraphLevel(UBIDI_DEFAULT_LTR)
{
static const LEUnicode separators[] = {CH_LF, CH_CR, CH_LSEP, CH_PSEP, 0x0000};
@@ -94,7 +94,7 @@ Paragraph::Paragraph(const LEUnicode chars[], int32_t charCount, const FontRuns
le_int32 descent = 0;
le_int32 leading = 0;
- LocaleRuns *locales = NULL;
+ LocaleRuns *locales = nullptr;
FontRuns fr(0);
fLines = LE_NEW_ARRAY(const ParagraphLayout::Line *, fLinesMax);
@@ -109,16 +109,16 @@ Paragraph::Paragraph(const LEUnicode chars[], int32_t charCount, const FontRuns
while (*pStart != 0) {
LEUnicode *pEnd = u_strpbrk(pStart, separators);
le_int32 pAscent, pDescent, pLeading;
- ParagraphLayout *paragraphLayout = NULL;
+ ParagraphLayout *paragraphLayout = nullptr;
- if (pEnd == NULL) {
+ if (pEnd == nullptr) {
pEnd = &fChars[charCount];
}
if (pEnd != pStart) {
subsetFontRuns(fontRuns, pStart - fChars, pEnd - fChars, &fr);
- paragraphLayout = new ParagraphLayout(pStart, pEnd - pStart, &fr, NULL, NULL, locales, fParagraphLevel, false, status);
+ paragraphLayout = new ParagraphLayout(pStart, pEnd - pStart, &fr, nullptr, nullptr, locales, fParagraphLevel, false, status);
if (LE_FAILURE(status)) {
delete paragraphLayout;
@@ -213,13 +213,13 @@ void Paragraph::breakLines(le_int32 width, le_int32 height)
for (le_int32 p = 0; p < fParagraphCount; p += 1) {
ParagraphLayout *paragraphLayout = fParagraphLayout[p];
- if (paragraphLayout != NULL) {
+ if (paragraphLayout != nullptr) {
paragraphLayout->reflow();
- while ((line = paragraphLayout->nextLine(lineWidth)) != NULL) {
+ while ((line = paragraphLayout->nextLine(lineWidth)) != nullptr) {
addLine(line);
}
} else {
- addLine(NULL);
+ addLine(nullptr);
}
}
}
@@ -234,7 +234,7 @@ void Paragraph::draw(RenderingSurface *surface, le_int32 firstLine, le_int32 las
for (li = firstLine; li <= lastLine; li += 1) {
const ParagraphLayout::Line *line = fLines[li];
- if (line != NULL) {
+ if (line != nullptr) {
le_int32 runCount = line->countRuns();
le_int32 run;
@@ -264,11 +264,11 @@ Paragraph *Paragraph::paragraphFactory(const char *fileName, const LEFontInstanc
{
LEErrorCode status = LE_NO_ERROR;
le_int32 charCount;
- const UChar *text = UnicodeReader::readFile(fileName, guiSupport, charCount);
- Paragraph *result = NULL;
+ const char16_t *text = UnicodeReader::readFile(fileName, guiSupport, charCount);
+ Paragraph *result = nullptr;
- if (text == NULL) {
- return NULL;
+ if (text == nullptr) {
+ return nullptr;
}
FontRuns fontRuns(0);
@@ -279,7 +279,7 @@ Paragraph *Paragraph::paragraphFactory(const char *fileName, const LEFontInstanc
if (LE_FAILURE(status)) {
delete result;
- result = NULL;
+ result = nullptr;
}
LE_DELETE_ARRAY(text);
diff --git a/Build/source/libs/icu/icu-src/source/samples/layout/ucreader.cpp b/Build/source/libs/icu/icu-src/source/samples/layout/ucreader.cpp
index 3e38b5a28a3..fd0345c6b73 100644
--- a/Build/source/libs/icu/icu-src/source/samples/layout/ucreader.cpp
+++ b/Build/source/libs/icu/icu-src/source/samples/layout/ucreader.cpp
@@ -15,7 +15,7 @@
U_CDECL_BEGIN
-const UChar *uc_readFile(const char *fileName, gs_guiSupport *guiSupport, int32_t *charCount)
+const char16_t *uc_readFile(const char *fileName, gs_guiSupport *guiSupport, int32_t *charCount)
{
return UnicodeReader::readFile(fileName, (GUISupport *) guiSupport, *charCount);
}
diff --git a/Build/source/libs/icu/icu-src/source/samples/layout/ucreader.h b/Build/source/libs/icu/icu-src/source/samples/layout/ucreader.h
index b377eacdc8d..1f82ecc6193 100644
--- a/Build/source/libs/icu/icu-src/source/samples/layout/ucreader.h
+++ b/Build/source/libs/icu/icu-src/source/samples/layout/ucreader.h
@@ -15,7 +15,7 @@
U_CDECL_BEGIN
-const UChar *uc_readFile(const char *fileName, gs_guiSupport *guiSupport, int32_t *charCount);
+const char16_t *uc_readFile(const char *fileName, gs_guiSupport *guiSupport, int32_t *charCount);
U_CDECL_END
diff --git a/Build/source/libs/icu/icu-src/source/samples/legacy/legacy.cpp b/Build/source/libs/icu/icu-src/source/samples/legacy/legacy.cpp
index 679a18390dc..862080625e3 100644
--- a/Build/source/libs/icu/icu-src/source/samples/legacy/legacy.cpp
+++ b/Build/source/libs/icu/icu-src/source/samples/legacy/legacy.cpp
@@ -28,10 +28,10 @@
#include "unicode/utypes.h"
#include "unicode/ustring.h"
-extern "C" void test_current(UChar data[][5], uint32_t size, uint32_t maxLen, uint8_t keys[][32]);
-extern "C" void test_legacy(UChar data[][5], uint32_t size, uint32_t maxlen, uint8_t keys[][32]);
+extern "C" void test_current(char16_t data[][5], uint32_t size, uint32_t maxLen, uint8_t keys[][32]);
+extern "C" void test_legacy(char16_t data[][5], uint32_t size, uint32_t maxlen, uint8_t keys[][32]);
-void printZTUChar(const UChar *str) {
+void printZTUChar(const char16_t *str) {
while(*str != 0) {
if(*str > 0x1F && *str < 0x80) {
fprintf(stdout, "%c", (*str) & 0xFF);
@@ -42,7 +42,7 @@ void printZTUChar(const UChar *str) {
}
}
-void printArray(const char* const comment, const UChar UArray[][5], int32_t arraySize) {
+void printArray(const char* const comment, const char16_t UArray[][5], int32_t arraySize) {
fprintf (stdout, "%s\n", comment);
int32_t i = 0;
for(i = 0; i<arraySize; i++) {
@@ -54,7 +54,7 @@ void printArray(const char* const comment, const UChar UArray[][5], int32_t arra
void printKeys(const char *comment, uint8_t keys[][32], int32_t keySize) {
int32_t i = 0;
- uint8_t *currentKey = NULL;
+ uint8_t *currentKey = nullptr;
fprintf(stdout, "%s\n", comment);
for(i = 0; i<keySize; i++) {
currentKey = keys[i];
@@ -89,7 +89,7 @@ int main(int, const char * const *) {
};
#endif
- static UChar uTest[4][5];
+ static char16_t uTest[4][5];
static uint8_t keys[4][32];
diff --git a/Build/source/libs/icu/icu-src/source/samples/legacy/newcol.cpp b/Build/source/libs/icu/icu-src/source/samples/legacy/newcol.cpp
index 221348fd1cc..89dbfd51973 100644
--- a/Build/source/libs/icu/icu-src/source/samples/legacy/newcol.cpp
+++ b/Build/source/libs/icu/icu-src/source/samples/legacy/newcol.cpp
@@ -30,7 +30,7 @@
// Very simple example code - sticks a sortkey in the buffer
// Not much error checking
-int32_t getSortKey_current(const char *locale, const UChar *string, int32_t sLen, uint8_t *buffer, int32_t bLen) {
+int32_t getSortKey_current(const char *locale, const char16_t *string, int32_t sLen, uint8_t *buffer, int32_t bLen) {
UErrorCode status = U_ZERO_ERROR;
UCollator *coll = ucol_open(locale, &status);
if(U_FAILURE(status)) {
@@ -43,11 +43,11 @@ int32_t getSortKey_current(const char *locale, const UChar *string, int32_t sLen
// This one can be used for passing to qsort function
// Not thread safe or anything
-static UCollator *compareCollator = NULL;
+static UCollator *compareCollator = nullptr;
int compare_current(const void *string1, const void *string2) {
- if(compareCollator != NULL) {
- UCollationResult res = ucol_strcoll(compareCollator, (UChar *) string1, -1, (UChar *) string2, -1);
+ if(compareCollator != nullptr) {
+ UCollationResult res = ucol_strcoll(compareCollator, (char16_t *) string1, -1, (char16_t *) string2, -1);
if(res == UCOL_LESS) {
return -1;
} else if(res == UCOL_GREATER) {
@@ -65,13 +65,13 @@ void initCollator_current(const char *locale) {
compareCollator = ucol_open(locale, &status);
}
-void closeCollator_current(void) {
+void closeCollator_current() {
ucol_close(compareCollator);
- compareCollator = NULL;
+ compareCollator = nullptr;
}
-extern "C" void test_current(UChar data[][5], uint32_t size, uint32_t maxlen, uint8_t keys[][32]) {
+extern "C" void test_current(char16_t data[][5], uint32_t size, uint32_t maxlen, uint8_t keys[][32]) {
uint32_t i = 0;
int32_t keySize = 0;
UVersionInfo uvi;
@@ -87,7 +87,7 @@ extern "C" void test_current(UChar data[][5], uint32_t size, uint32_t maxlen, ui
fprintf(stderr, "Done sortkeys, doing qsort test\n");
initCollator_current("ja");
- qsort(data, size, maxlen*sizeof(UChar), compare_current);
+ qsort(data, size, maxlen*sizeof(char16_t), compare_current);
closeCollator_current();
fprintf(stderr, "Done current!\n");
diff --git a/Build/source/libs/icu/icu-src/source/samples/legacy/oldcol.cpp b/Build/source/libs/icu/icu-src/source/samples/legacy/oldcol.cpp
index cd3f731510e..01ad0b86fb7 100644
--- a/Build/source/libs/icu/icu-src/source/samples/legacy/oldcol.cpp
+++ b/Build/source/libs/icu/icu-src/source/samples/legacy/oldcol.cpp
@@ -31,7 +31,7 @@
// Very simple example code - sticks a sortkey in the buffer
// Not much error checking
-int32_t getSortKey_legacy(const char *locale, const UChar *string, int32_t sLen, uint8_t *buffer, int32_t bLen) {
+int32_t getSortKey_legacy(const char *locale, const char16_t *string, int32_t sLen, uint8_t *buffer, int32_t bLen) {
UErrorCode status = U_ZERO_ERROR;
UCollator *coll = ucol_open(locale, &status);
if(U_FAILURE(status)) {
@@ -44,11 +44,11 @@ int32_t getSortKey_legacy(const char *locale, const UChar *string, int32_t sLen,
// This one can be used for passing to qsort function
// Not thread safe or anything
-static UCollator *compareCollator = NULL;
+static UCollator *compareCollator = nullptr;
int compare_legacy(const void *string1, const void *string2) {
- if(compareCollator != NULL) {
- UCollationResult res = ucol_strcoll(compareCollator, (UChar *) string1, -1, (UChar *) string2, -1);
+ if(compareCollator != nullptr) {
+ UCollationResult res = ucol_strcoll(compareCollator, (char16_t *) string1, -1, (char16_t *) string2, -1);
if(res == UCOL_LESS) {
return -1;
} else if(res == UCOL_GREATER) {
@@ -74,20 +74,20 @@ void initCollator_legacy(const char *locale) {
}
}
-void closeCollator_legacy(void) {
- if(compareCollator != NULL)
+void closeCollator_legacy() {
+ if(compareCollator != nullptr)
{
ucol_close(compareCollator);
}
else
{
- fprintf(stderr, "closeCollator_legacy(): collator was already NULL!\n");
+ fprintf(stderr, "closeCollator_legacy(): collator was already nullptr!\n");
}
- compareCollator = NULL;
+ compareCollator = nullptr;
}
-extern "C" void test_legacy(UChar data[][5], uint32_t size, uint32_t maxlen, uint8_t keys[4][32]) {
+extern "C" void test_legacy(char16_t data[][5], uint32_t size, uint32_t maxlen, uint8_t keys[4][32]) {
uint32_t i = 0;
int32_t keySize = 0;
@@ -104,7 +104,7 @@ extern "C" void test_legacy(UChar data[][5], uint32_t size, uint32_t maxlen, uin
fprintf(stderr, "Done sortkeys, doing qsort test\n");
initCollator_legacy("ja");
- qsort(data, size, maxlen*sizeof(UChar), compare_legacy);
+ qsort(data, size, maxlen*sizeof(char16_t), compare_legacy);
closeCollator_legacy();
fprintf(stderr, "Done legacy!\n");
diff --git a/Build/source/libs/icu/icu-src/source/samples/msgfmt/util.cpp b/Build/source/libs/icu/icu-src/source/samples/msgfmt/util.cpp
index 8d5fdf3d960..72aa7445cb6 100644
--- a/Build/source/libs/icu/icu-src/source/samples/msgfmt/util.cpp
+++ b/Build/source/libs/icu/icu-src/source/samples/msgfmt/util.cpp
@@ -40,7 +40,7 @@ UnicodeString escape(const UnicodeString &source) {
UnicodeString target;
target += "\"";
for (i=0; i<source.length(); ++i) {
- UChar ch = source[i];
+ char16_t ch = source[i];
if (ch < 0x09 || (ch > 0x0A && ch < 0x20) || ch > 0x7E) {
target += "\\u";
appendHex(ch, 4, target);
diff --git a/Build/source/libs/icu/icu-src/source/samples/numfmt/main.cpp b/Build/source/libs/icu/icu-src/source/samples/numfmt/main.cpp
index 2534a9c0388..ad9df5e6589 100644
--- a/Build/source/libs/icu/icu-src/source/samples/numfmt/main.cpp
+++ b/Build/source/libs/icu/icu-src/source/samples/numfmt/main.cpp
@@ -107,7 +107,7 @@ setNumberFormatCurrency_2_4(NumberFormat &nf, const char *currency, UErrorCode &
if(U_FAILURE(errorCode)) {
return;
}
- if(currency==NULL || strlen(currency)!=3) {
+ if(currency==nullptr || strlen(currency)!=3) {
errorCode=U_ILLEGAL_ARGUMENT_ERROR;
return;
}
@@ -116,7 +116,7 @@ setNumberFormatCurrency_2_4(NumberFormat &nf, const char *currency, UErrorCode &
// necessary because we will cast to the DecimalFormat subclass to set
// the currency symbol
DecimalFormat *dnf=dynamic_cast<DecimalFormat *>(&nf);
- if(dnf==NULL) {
+ if(dnf==nullptr) {
errorCode=U_ILLEGAL_ARGUMENT_ERROR;
return;
}
@@ -145,7 +145,7 @@ setNumberFormatCurrency_2_4(NumberFormat &nf, const char *currency, UErrorCode &
double roundingIncrement;
// Unicode string with the desired currency display symbol or name
- UChar symbol[16];
+ char16_t symbol[16];
} currencyMap[]={
{ "USD", 2, 0.0, { 0x24, 0 } },
{ "GBP", 2, 0.0, { 0xa3, 0 } },
@@ -195,13 +195,13 @@ setNumberFormatCurrency_2_6(NumberFormat &nf, const char *currency, UErrorCode &
if(U_FAILURE(errorCode)) {
return;
}
- if(currency==NULL || strlen(currency)!=3) {
+ if(currency==nullptr || strlen(currency)!=3) {
errorCode=U_ILLEGAL_ARGUMENT_ERROR;
return;
}
// invariant-character conversion to UChars (see utypes.h and putil.h)
- UChar uCurrency[4];
+ char16_t uCurrency[4];
u_charsToUChars(currency, uCurrency, 4);
// set the currency
@@ -269,7 +269,7 @@ showCurrencyFormatting(UBool useICU26API) {
// output=formatted currency value
output.remove();
nf->format(12345678.93, output);
- output+=(UChar)0x0a; // '\n'
+ output+=(char16_t)0x0a; // '\n'
uprintf(output);
}
}
diff --git a/Build/source/libs/icu/icu-src/source/samples/numfmt/util.cpp b/Build/source/libs/icu/icu-src/source/samples/numfmt/util.cpp
index e67b6d20c41..7d9640d0317 100644
--- a/Build/source/libs/icu/icu-src/source/samples/numfmt/util.cpp
+++ b/Build/source/libs/icu/icu-src/source/samples/numfmt/util.cpp
@@ -44,7 +44,7 @@ static UnicodeString& appendHex(uint32_t number,
uint32_t digit;
while (digits > 0) {
digit = (number >> ((--digits) * 4)) & 0xF;
- target += (UChar)(digit < 10 ? 0x30 + digit : 0x41 - 10 + digit);
+ target += (char16_t)(digit < 10 ? 0x30 + digit : 0x41 - 10 + digit);
}
return target;
}
@@ -53,17 +53,17 @@ static UnicodeString& appendHex(uint32_t number,
UnicodeString escape(const UnicodeString &source) {
int32_t i;
UnicodeString target;
- target += (UChar)U_DQUOTE;
+ target += (char16_t)U_DQUOTE;
for (i=0; i<source.length(); ++i) {
- UChar ch = source[i];
+ char16_t ch = source[i];
if (ch < 0x09 || (ch > 0x0D && ch < 0x20) || ch > 0x7E) {
- (target += (UChar)U_BACKSLASH) += (UChar)U_SMALL_U;
+ (target += (char16_t)U_BACKSLASH) += (char16_t)U_SMALL_U;
appendHex(ch, 4, target);
} else {
target += ch;
}
}
- target += (UChar)U_DQUOTE;
+ target += (char16_t)U_DQUOTE;
return target;
}
@@ -110,19 +110,19 @@ UnicodeString formattableToString(const Formattable& f) {
return UnicodeString(buf, "");
}
case Formattable::kString:
- return UnicodeString((UChar)U_DQUOTE).append(f.getString()).append((UChar)U_DQUOTE);
+ return UnicodeString((char16_t)U_DQUOTE).append(f.getString()).append((char16_t)U_DQUOTE);
case Formattable::kArray:
{
int32_t i, count;
const Formattable* array = f.getArray(count);
- UnicodeString result((UChar)U_LEFT_SQUARE_BRACKET);
+ UnicodeString result((char16_t)U_LEFT_SQUARE_BRACKET);
for (i=0; i<count; ++i) {
if (i > 0) {
- (result += (UChar)U_COMMA) += (UChar)U_SPACE;
+ (result += (char16_t)U_COMMA) += (char16_t)U_SPACE;
}
result += formattableToString(array[i]);
}
- result += (UChar)U_RIGHT_SQUARE_BRACKET;
+ result += (char16_t)U_RIGHT_SQUARE_BRACKET;
return result;
}
default:
diff --git a/Build/source/libs/icu/icu-src/source/samples/strsrch/strsrch.cpp b/Build/source/libs/icu/icu-src/source/samples/strsrch/strsrch.cpp
index c275fef66f9..3c2e7eb0515 100644
--- a/Build/source/libs/icu/icu-src/source/samples/strsrch/strsrch.cpp
+++ b/Build/source/libs/icu/icu-src/source/samples/strsrch/strsrch.cpp
@@ -63,9 +63,9 @@ char const *opt_source = "International Components for Unicode";
char const *opt_pattern = "Unicode";
UCollator * collator = 0;
UStringSearch * search = 0;
-UChar rules[100];
-UChar source[100];
-UChar pattern[100];
+char16_t rules[100];
+char16_t source[100];
+char16_t pattern[100];
/**
* Definitions for the command line options
@@ -158,7 +158,7 @@ UBool processCollator()
if (opt_rules != 0) {
u_unescape(opt_rules, rules, 100);
collator = ucol_openRules(rules, -1, UCOL_OFF, UCOL_TERTIARY,
- NULL, &status);
+ nullptr, &status);
}
else {
collator = ucol_open(opt_locale, &status);
@@ -236,7 +236,7 @@ UBool processStringSearch()
u_unescape(opt_source, source, 100);
u_unescape(opt_pattern, pattern, 100);
UErrorCode status = U_ZERO_ERROR;
- search = usearch_openFromCollator(pattern, -1, source, -1, collator, NULL,
+ search = usearch_openFromCollator(pattern, -1, source, -1, collator, nullptr,
&status);
if (U_FAILURE(status)) {
return false;
diff --git a/Build/source/libs/icu/icu-src/source/samples/translit/answers/unaccent.cpp b/Build/source/libs/icu/icu-src/source/samples/translit/answers/unaccent.cpp
index de5dd47ff6c..d18c1868d55 100644
--- a/Build/source/libs/icu/icu-src/source/samples/translit/answers/unaccent.cpp
+++ b/Build/source/libs/icu/icu-src/source/samples/translit/answers/unaccent.cpp
@@ -26,7 +26,7 @@ UnaccentTransliterator::~UnaccentTransliterator() {
/**
* Remove accents from a character using Normalizer.
*/
-UChar UnaccentTransliterator::unaccent(UChar c) const {
+char16_t UnaccentTransliterator::unaccent(char16_t c) const {
UnicodeString str(c);
UErrorCode status = U_ZERO_ERROR;
UnaccentTransliterator* t = (UnaccentTransliterator*)this;
@@ -35,7 +35,7 @@ UChar UnaccentTransliterator::unaccent(UChar c) const {
if (U_FAILURE(status)) {
return c;
}
- return (UChar) t->normalizer.next();
+ return (char16_t) t->normalizer.next();
}
/**
@@ -46,8 +46,8 @@ void UnaccentTransliterator::handleTransliterate(Replaceable& text,
UBool incremental) const {
UnicodeString str("a");
while (index.start < index.limit) {
- UChar c = text.charAt(index.start);
- UChar d = unaccent(c);
+ char16_t c = text.charAt(index.start);
+ char16_t d = unaccent(c);
if (c != d) {
str.setCharAt(0, d);
text.handleReplaceBetween(index.start, index.start+1, str);
diff --git a/Build/source/libs/icu/icu-src/source/samples/translit/answers/unaccent.h b/Build/source/libs/icu/icu-src/source/samples/translit/answers/unaccent.h
index 12fc36866f7..a2cf7a340c8 100644
--- a/Build/source/libs/icu/icu-src/source/samples/translit/answers/unaccent.h
+++ b/Build/source/libs/icu/icu-src/source/samples/translit/answers/unaccent.h
@@ -39,7 +39,7 @@ class UnaccentTransliterator : public Transliterator {
/**
* Unaccent a single character using normalizer.
*/
- UChar unaccent(UChar c) const;
+ char16_t unaccent(char16_t c) const;
Normalizer normalizer;
};
diff --git a/Build/source/libs/icu/icu-src/source/samples/translit/unaccent.cpp b/Build/source/libs/icu/icu-src/source/samples/translit/unaccent.cpp
index 0a1ff273c5a..b191326a92a 100644
--- a/Build/source/libs/icu/icu-src/source/samples/translit/unaccent.cpp
+++ b/Build/source/libs/icu/icu-src/source/samples/translit/unaccent.cpp
@@ -29,7 +29,7 @@ UnaccentTransliterator::~UnaccentTransliterator() {
/**
* Remove accents from a character using Normalizer.
*/
-UChar UnaccentTransliterator::unaccent(UChar c) const {
+char16_t UnaccentTransliterator::unaccent(char16_t c) const {
UnicodeString str(c);
UErrorCode status = U_ZERO_ERROR;
UnaccentTransliterator* t = (UnaccentTransliterator*)this;
@@ -38,7 +38,7 @@ UChar UnaccentTransliterator::unaccent(UChar c) const {
if (U_FAILURE(status)) {
return c;
}
- return (UChar) t->normalizer.next();
+ return (char16_t) t->normalizer.next();
}
/**
@@ -49,8 +49,8 @@ void UnaccentTransliterator::handleTransliterate(Replaceable& text,
UBool incremental) const {
UnicodeString str("a");
while (index.start < index.limit) {
- UChar c = text.charAt(index.start);
- UChar d = unaccent(c);
+ char16_t c = text.charAt(index.start);
+ char16_t d = unaccent(c);
if (c != d) {
str.setCharAt(0, d);
text.handleReplaceBetween(index.start, index.start+1, str);
diff --git a/Build/source/libs/icu/icu-src/source/samples/translit/unaccent.h b/Build/source/libs/icu/icu-src/source/samples/translit/unaccent.h
index bb780394c99..aa27a56dd2a 100644
--- a/Build/source/libs/icu/icu-src/source/samples/translit/unaccent.h
+++ b/Build/source/libs/icu/icu-src/source/samples/translit/unaccent.h
@@ -41,7 +41,7 @@ class UnaccentTransliterator : public Transliterator {
/**
* Unaccent a single character using normalizer.
*/
- UChar unaccent(UChar c) const;
+ char16_t unaccent(char16_t c) const;
Normalizer normalizer;
@@ -58,7 +58,7 @@ public:
* @return The class ID for all objects of this class.
* @stable ICU 2.0
*/
- static inline UClassID getStaticClassID(void) { return (UClassID)&fgClassID; };
+ static inline UClassID getStaticClassID() { return (UClassID)&fgClassID; };
/**
* Returns a unique class ID <b>polymorphically</b>. This method
@@ -83,7 +83,7 @@ public:
* different class IDs.
* @stable ICU 2.0
*/
- virtual UClassID getDynamicClassID(void) const { return getStaticClassID(); };
+ virtual UClassID getDynamicClassID() const { return getStaticClassID(); };
private:
diff --git a/Build/source/libs/icu/icu-src/source/samples/translit/util.cpp b/Build/source/libs/icu/icu-src/source/samples/translit/util.cpp
index 9fa11b2f9ff..db2b4dbb63a 100644
--- a/Build/source/libs/icu/icu-src/source/samples/translit/util.cpp
+++ b/Build/source/libs/icu/icu-src/source/samples/translit/util.cpp
@@ -40,7 +40,7 @@ UnicodeString escape(const UnicodeString &source) {
UnicodeString target;
target += "\"";
for (i=0; i<source.length(); ++i) {
- UChar ch = source[i];
+ char16_t ch = source[i];
if (ch < 0x09 || (ch > 0x0A && ch < 0x20) || ch > 0x7E) {
target += "\\u";
appendHex(ch, 4, target);
diff --git a/Build/source/libs/icu/icu-src/source/samples/ucnv/convsamp.cpp b/Build/source/libs/icu/icu-src/source/samples/ucnv/convsamp.cpp
index 7347d054aec..45a6876180e 100644
--- a/Build/source/libs/icu/icu-src/source/samples/ucnv/convsamp.cpp
+++ b/Build/source/libs/icu/icu-src/source/samples/ucnv/convsamp.cpp
@@ -53,12 +53,12 @@
#define UPRV_LENGTHOF(array) (int32_t)(sizeof(array)/sizeof((array)[0]))
#endif
-static const UChar kNone[] = { 0x0000 };
+static const char16_t kNone[] = { 0x0000 };
#define U_ASSERT(x) { if(U_FAILURE(x)) {fflush(stdout);fflush(stderr); fprintf(stderr, #x " == %s\n", u_errorName(x)); assert(U_SUCCESS(x)); }}
-/* Print a UChar if possible, in seven characters. */
-void prettyPrintUChar(UChar c)
+/* Print a char16_t if possible, in seven characters. */
+void prettyPrintUChar(char16_t c)
{
if( (c <= 0x007F) &&
(isgraph(c)) ) {
@@ -95,7 +95,7 @@ void prettyPrintUChar(UChar c)
void printUChars(const char *name = "?",
- const UChar *uch = kNone,
+ const char16_t *uch = kNone,
int32_t len = -1 )
{
int32_t i;
@@ -162,7 +162,7 @@ void printUChar(UChar32 ch32)
printf("ch: U+%06X\n", ch32);
}
else {
- UChar ch = (UChar)ch32;
+ char16_t ch = (char16_t)ch32;
printUChars("C", &ch, 1);
}
}
@@ -171,7 +171,7 @@ void printUChar(UChar32 ch32)
Very simple C sample to convert the word 'Moscow' in Russian in Unicode,
followed by an exclamation mark (!) into the KOI8-R Russian code page.
- This example first creates a UChar String out of the Unicode chars.
+ This example first creates a char16_t String out of the Unicode chars.
targetSize must be set to the amount of space available in the target
buffer. After fromUChars is called,
@@ -206,7 +206,7 @@ UErrorCode convsample_02()
// **************************** START SAMPLE *******************
// "cat<cat>OK"
- UChar source[] = { 0x041C, 0x043E, 0x0441, 0x043A, 0x0432,
+ char16_t source[] = { 0x041C, 0x043E, 0x0441, 0x043A, 0x0432,
0x0430, 0x0021, 0x0000 };
char target[100];
UErrorCode status = U_ZERO_ERROR;
@@ -301,10 +301,10 @@ UErrorCode convsample_05()
char inBuf[BUFFERSIZE];
const char *source;
const char *sourceLimit;
- UChar *uBuf;
- UChar *target;
- UChar *targetLimit;
- UChar *p;
+ char16_t *uBuf;
+ char16_t *target;
+ char16_t *targetLimit;
+ char16_t *p;
int32_t uBufSize = 0;
UConverter *conv;
UErrorCode status = U_ZERO_ERROR;
@@ -324,8 +324,8 @@ UErrorCode convsample_05()
uBufSize = (BUFFERSIZE/ucnv_getMinCharSize(conv));
printf("input bytes %d / min chars %d = %d UChars\n",
BUFFERSIZE, ucnv_getMinCharSize(conv), uBufSize);
- uBuf = (UChar*)malloc(uBufSize * sizeof(UChar));
- assert(uBuf!=NULL);
+ uBuf = (char16_t*)malloc(uBufSize * sizeof(char16_t));
+ assert(uBuf!=nullptr);
// grab another buffer's worth
while((!feof(f)) &&
@@ -341,7 +341,7 @@ UErrorCode convsample_05()
targetLimit = uBuf + uBufSize;
ucnv_toUnicode(conv, &target, targetLimit,
- &source, sourceLimit, NULL,
+ &source, sourceLimit, nullptr,
feof(f)?true:false, /* pass 'flush' when eof */
/* is true (when no more data will come) */
&status);
@@ -501,7 +501,7 @@ UErrorCode convsample_06()
printf("% 5d U+%06X ", info[p].frequency, p);
if(p <= 0xFFFF)
{
- prettyPrintUChar((UChar)p);
+ prettyPrintUChar((char16_t)p);
}
printf("\n");
}
@@ -533,7 +533,7 @@ UErrorCode convsample_12()
// **************************** START SAMPLE *******************
char source[] = { 0x63, 0x61, 0x74, (char)0x94, 0x4C, (char)0x82, 0x6E, (char)0x82, 0x6A, 0x00 };
- UChar target[100];
+ char16_t target[100];
UErrorCode status = U_ZERO_ERROR;
UConverter *conv;
int32_t len;
@@ -575,7 +575,7 @@ UErrorCode convsample_13()
const char *source, *sourceLimit;
UChar32 target;
UErrorCode status = U_ZERO_ERROR;
- UConverter *conv = NULL;
+ UConverter *conv = nullptr;
int32_t srcCount=0;
int32_t dstCount=0;
@@ -620,14 +620,14 @@ UErrorCode convsample_13()
UBool convsample_20_didSubstitute(const char *source)
{
- UChar uchars[100];
+ char16_t uchars[100];
char bytes[100];
- UConverter *conv = NULL;
+ UConverter *conv = nullptr;
UErrorCode status = U_ZERO_ERROR;
uint32_t len, len2;
UBool flagVal;
- FromUFLAGContext * context = NULL;
+ FromUFLAGContext * context = nullptr;
printf("\n\n==============================================\n"
"Sample 20: C: Test for substitution using callbacks\n");
@@ -714,20 +714,20 @@ UErrorCode convsample_20()
UBool convsample_21_didSubstitute(const char *source)
{
- UChar uchars[100];
+ char16_t uchars[100];
char bytes[100];
- UConverter *conv = NULL, *cloneCnv = NULL;
+ UConverter *conv = nullptr, *cloneCnv = nullptr;
UErrorCode status = U_ZERO_ERROR;
uint32_t len, len2;
UBool flagVal = false;
UConverterFromUCallback junkCB;
- FromUFLAGContext *flagCtx = NULL,
- *cloneFlagCtx = NULL;
+ FromUFLAGContext *flagCtx = nullptr,
+ *cloneFlagCtx = nullptr;
- debugCBContext *debugCtx1 = NULL,
- *debugCtx2 = NULL,
- *cloneDebugCtx = NULL;
+ debugCBContext *debugCtx1 = nullptr,
+ *debugCtx2 = nullptr,
+ *cloneDebugCtx = nullptr;
printf("\n\n==============================================\n"
"Sample 21: C: Test for substitution w/ callbacks & clones \n");
@@ -775,7 +775,7 @@ UBool convsample_21_didSubstitute(const char *source)
flagCtx->subContext = debugCtx2;
debugCtx2->subCallback = UCNV_FROM_U_CALLBACK_SUBSTITUTE;
- debugCtx2->subContext = NULL;
+ debugCtx2->subContext = nullptr;
/* Set our special callback */
@@ -794,7 +794,7 @@ UBool convsample_21_didSubstitute(const char *source)
debugCtx1->subContext, flagCtx, debugCtx2, debugCtx2->subCallback);
#endif
- cloneCnv = ucnv_safeClone(conv, NULL, NULL, &status);
+ cloneCnv = ucnv_safeClone(conv, nullptr, nullptr, &status);
U_ASSERT(status);
@@ -810,21 +810,21 @@ UBool convsample_21_didSubstitute(const char *source)
U_ASSERT(status);
/* Now, we have to extract the context */
- cloneDebugCtx = NULL;
- cloneFlagCtx = NULL;
+ cloneDebugCtx = nullptr;
+ cloneFlagCtx = nullptr;
ucnv_getFromUCallBack(cloneCnv, &junkCB, (const void **)&cloneDebugCtx);
- if(cloneDebugCtx != NULL) {
+ if(cloneDebugCtx != nullptr) {
cloneFlagCtx = (FromUFLAGContext*) cloneDebugCtx -> subContext;
}
printf("Cloned converter chain: %p -> %p[debug1] -> %p[flag] -> %p[debug2] -> substitute\n",
- cloneCnv, cloneDebugCtx, cloneFlagCtx, cloneFlagCtx?cloneFlagCtx->subContext:NULL );
+ cloneCnv, cloneDebugCtx, cloneFlagCtx, cloneFlagCtx?cloneFlagCtx->subContext:nullptr );
len2 = ucnv_fromUChars(cloneCnv, bytes, 100, uchars, len, &status);
U_ASSERT(status);
- if(cloneFlagCtx != NULL) {
+ if(cloneFlagCtx != nullptr) {
flagVal = cloneFlagCtx->flag; /* it's about to go away when we close the cnv */
} else {
printf("** Warning, couldn't get the subcallback \n");
@@ -880,11 +880,11 @@ UErrorCode convsample_40()
char inBuf[BUFFERSIZE];
const char *source;
const char *sourceLimit;
- UChar *uBuf;
- UChar *target;
- UChar *targetLimit;
+ char16_t *uBuf;
+ char16_t *target;
+ char16_t *targetLimit;
int32_t uBufSize = 0;
- UConverter *conv = NULL;
+ UConverter *conv = nullptr;
UErrorCode status = U_ZERO_ERROR;
uint32_t inbytes=0, total=0;
@@ -910,8 +910,8 @@ UErrorCode convsample_40()
uBufSize = (BUFFERSIZE/ucnv_getMinCharSize(conv));
printf("input bytes %d / min chars %d = %d UChars\n",
BUFFERSIZE, ucnv_getMinCharSize(conv), uBufSize);
- uBuf = (UChar*)malloc(uBufSize * sizeof(UChar));
- assert(uBuf!=NULL);
+ uBuf = (char16_t*)malloc(uBufSize * sizeof(char16_t));
+ assert(uBuf!=nullptr);
// grab another buffer's worth
while((!feof(f)) &&
@@ -929,7 +929,7 @@ UErrorCode convsample_40()
targetLimit = uBuf + uBufSize;
ucnv_toUnicode( conv, &target, targetLimit,
- &source, sourceLimit, NULL,
+ &source, sourceLimit, nullptr,
feof(f)?true:false, /* pass 'flush' when eof */
/* is true (when no more data will come) */
&status);
@@ -981,15 +981,15 @@ UErrorCode convsample_46()
FILE *f;
FILE *out;
int32_t count;
- UChar inBuf[BUFFERSIZE];
- const UChar *source;
- const UChar *sourceLimit;
+ char16_t inBuf[BUFFERSIZE];
+ const char16_t *source;
+ const char16_t *sourceLimit;
char *buf;
char *target;
char *targetLimit;
int32_t bufSize = 0;
- UConverter *conv = NULL;
+ UConverter *conv = nullptr;
UErrorCode status = U_ZERO_ERROR;
uint32_t inchars=0, total=0;
@@ -1016,11 +1016,11 @@ UErrorCode convsample_46()
printf("input UChars[16] %d * max charsize %d = %d bytes output buffer\n",
BUFFERSIZE, ucnv_getMaxCharSize(conv), bufSize);
buf = (char*)malloc(bufSize * sizeof(char));
- assert(buf!=NULL);
+ assert(buf!=nullptr);
// grab another buffer's worth
while((!feof(f)) &&
- ((count=static_cast<int32_t>(fread(inBuf, sizeof(UChar), BUFFERSIZE , f))) > 0) )
+ ((count=static_cast<int32_t>(fread(inBuf, sizeof(char16_t), BUFFERSIZE , f))) > 0) )
{
inchars += count;
@@ -1034,7 +1034,7 @@ UErrorCode convsample_46()
targetLimit = buf + bufSize;
ucnv_fromUnicode( conv, &target, targetLimit,
- &source, sourceLimit, NULL,
+ &source, sourceLimit, nullptr,
feof(f)?true:false, /* pass 'flush' when eof */
/* is true (when no more data will come) */
&status);
@@ -1058,7 +1058,7 @@ UErrorCode convsample_46()
} while (source < sourceLimit); // while simply out of space
}
- printf("%d Uchars (%d bytes) in, %d chars out.\n", inchars, static_cast<int>(inchars * sizeof(UChar)), total);
+ printf("%d Uchars (%d bytes) in, %d chars out.\n", inchars, static_cast<int>(inchars * sizeof(char16_t)), total);
// ***************************** END SAMPLE ********************
ucnv_close(conv);
@@ -1083,18 +1083,18 @@ void convsample_50() {
char input[] = { '\xEF','\xBB', '\xBF','\x41','\x42','\x43' };
int32_t signatureLength = 0;
const char *encoding = ucnv_detectUnicodeSignature(input,sizeof(input),&signatureLength,&err);
- UConverter *conv = NULL;
- UChar output[100];
- UChar *target = output, *out;
+ UConverter *conv = nullptr;
+ char16_t output[100];
+ char16_t *target = output, *out;
const char *source = input;
- if(encoding!=NULL && U_SUCCESS(err)){
+ if(encoding!=nullptr && U_SUCCESS(err)){
// should signature be discarded ?
conv = ucnv_open(encoding, &err);
// do the conversion
ucnv_toUnicode(conv,
&target, output + UPRV_LENGTHOF(output),
&source, input + sizeof(input),
- NULL, true, &err);
+ nullptr, true, &err);
out = output;
if (discardSignature){
++out; // ignore initial U+FEFF
diff --git a/Build/source/libs/icu/icu-src/source/samples/ugrep/ugrep.cpp b/Build/source/libs/icu/icu-src/source/samples/ugrep/ugrep.cpp
index 6d7fce04924..ede3baec964 100644
--- a/Build/source/libs/icu/icu-src/source/samples/ugrep/ugrep.cpp
+++ b/Build/source/libs/icu/icu-src/source/samples/ugrep/ugrep.cpp
@@ -40,7 +40,7 @@ using namespace icu;
//
// The following variables contain parameters that may be set from the command line.
//
-const char *pattern = NULL; // The regular expression
+const char *pattern = nullptr; // The regular expression
int firstFileNum; // argv index of the first file name
UBool displayFileName = false;
UBool displayLineNum = false;
@@ -52,7 +52,7 @@ UBool displayLineNum = false;
const char *fileName;
int fileLen; // Length, in UTF-16 Code Units.
-UChar *ucharBuf = 0; // Buffer, holds converted file. (Simple minded program, always reads
+char16_t *ucharBuf = 0; // Buffer, holds converted file. (Simple minded program, always reads
// the whole file at once.
char *charBuf = 0; // Buffer, for original, unconverted file data.
@@ -313,7 +313,7 @@ void readFile(const char *name) {
u_errorName(status));
return;
}
- if(encoding!=NULL ){
+ if(encoding!=nullptr ){
charDataStart += signatureLength;
rawFileLen -= signatureLength;
}
@@ -329,11 +329,11 @@ void readFile(const char *name) {
}
//
- // Convert the file data to UChar.
+ // Convert the file data to char16_t.
// Preflight first to determine required buffer size.
//
uint32_t destCap = ucnv_toUChars(conv,
- NULL, // dest,
+ nullptr, // dest,
0, // destCapacity,
charDataStart,
rawFileLen,
@@ -344,7 +344,7 @@ void readFile(const char *name) {
};
status = U_ZERO_ERROR;
- ucharBuf = (UChar *)realloc(ucharBuf, (destCap+1) * sizeof(UChar));
+ ucharBuf = (char16_t *)realloc(ucharBuf, (destCap+1) * sizeof(char16_t));
ucnv_toUChars(conv,
ucharBuf, // dest,
destCap+1,
@@ -390,7 +390,7 @@ void nextLine(int startPos) {
if (lineEnd >= fileLen) {
return;
}
- UChar c = ucharBuf[lineEnd];
+ char16_t c = ucharBuf[lineEnd];
lineEnd++;
if (c == 0x0a || // Line Feed
c == 0x0c || // Form Feed
@@ -426,7 +426,7 @@ void printMatch() {
// If we haven't already created a converter for output, do it now.
if (outConverter == 0) {
- outConverter = ucnv_open(NULL, &status);
+ outConverter = ucnv_open(nullptr, &status);
if (U_FAILURE(status)) {
fprintf(stderr, "ugrep: Error opening default converter: \"%s\"\n",
u_errorName(status));
diff --git a/Build/source/libs/icu/icu-src/source/samples/ustring/ustring.cpp b/Build/source/libs/icu/icu-src/source/samples/ustring/ustring.cpp
index 35a8ec1bec6..519831605c0 100644
--- a/Build/source/libs/icu/icu-src/source/samples/ustring/ustring.cpp
+++ b/Build/source/libs/icu/icu-src/source/samples/ustring/ustring.cpp
@@ -43,10 +43,10 @@ using namespace icu;
// helper functions -------------------------------------------------------- ***
// default converter for the platform encoding
-static UConverter *cnv=NULL;
+static UConverter *cnv=nullptr;
static void
-printUString(const char *announce, const UChar *s, int32_t length) {
+printUString(const char *announce, const char16_t *s, int32_t length) {
static char out[200];
UChar32 c;
int32_t i;
@@ -113,7 +113,7 @@ printUnicodeString(const char *announce, const UnicodeString &s) {
static void
demo_utf_h_macros() {
- static UChar input[]={ 0x0061, 0xd800, 0xdc00, 0xdbff, 0xdfff, 0x0062 };
+ static char16_t input[]={ 0x0061, 0xd800, 0xdc00, 0xdbff, 0xdfff, 0x0062 };
UChar32 c;
int32_t i;
UBool isError;
@@ -158,10 +158,10 @@ demo_utf_h_macros() {
static void demo_C_Unicode_strings() {
printf("\n* demo_C_Unicode_strings() --------- ***\n\n");
- static const UChar text[]={ 0x41, 0x42, 0x43, 0 }; /* "ABC" */
- static const UChar appendText[]={ 0x61, 0x62, 0x63, 0 }; /* "abc" */
- static const UChar cmpText[]={ 0x61, 0x53, 0x73, 0x43, 0 }; /* "aSsC" */
- UChar buffer[32];
+ static const char16_t text[]={ 0x41, 0x42, 0x43, 0 }; /* "ABC" */
+ static const char16_t appendText[]={ 0x61, 0x62, 0x63, 0 }; /* "abc" */
+ static const char16_t cmpText[]={ 0x61, 0x53, 0x73, 0x43, 0 }; /* "aSsC" */
+ char16_t buffer[32];
int32_t compare;
int32_t length=u_strlen(text); /* length=3 */
@@ -200,13 +200,13 @@ static void demoCaseMapInC() {
* "<sharp s> <small lig. ffi>"
* "<small final sigma><small sigma><capital sigma>"
*/
- static const UChar input[]={
+ static const char16_t input[]={
0x61, 0x42, 0x3a3,
0x69, 0x49, 0x131, 0x130, 0x20,
0xdf, 0x20, 0xfb03,
0x3c2, 0x3c3, 0x3a3, 0
};
- UChar buffer[32];
+ char16_t buffer[32];
UErrorCode errorCode;
UChar32 c;
@@ -289,7 +289,7 @@ static void demoCaseMapInC() {
* has bit flag options instead, by design of the Unicode SpecialCasing.txt UCD file.
*
* Also, string titlecasing requires a BreakIterator to find starts of words.
- * The sample code here passes in a NULL pointer; u_strToTitle() will open and close a default
+ * The sample code here passes in a nullptr pointer; u_strToTitle() will open and close a default
* titlecasing BreakIterator automatically.
* For production code where many strings are titlecased it would be more efficient
* to open a BreakIterator externally and pass it in.
@@ -330,7 +330,7 @@ static void demoCaseMapInC() {
}
/* titlecase/English */
errorCode=U_ZERO_ERROR;
- length=u_strToTitle(buffer, UPRV_LENGTHOF(buffer), input, -1, NULL, "en", &errorCode);
+ length=u_strToTitle(buffer, UPRV_LENGTHOF(buffer), input, -1, nullptr, "en", &errorCode);
if(U_SUCCESS(errorCode)) {
printUString("full-titlecased/en: ", buffer, length);
} else {
@@ -338,7 +338,7 @@ static void demoCaseMapInC() {
}
/* titlecase/Turkish */
errorCode=U_ZERO_ERROR;
- length=u_strToTitle(buffer, UPRV_LENGTHOF(buffer), input, -1, NULL, "tr", &errorCode);
+ length=u_strToTitle(buffer, UPRV_LENGTHOF(buffer), input, -1, nullptr, "tr", &errorCode);
if(U_SUCCESS(errorCode)) {
printUString("full-titlecased/tr: ", buffer, length);
} else {
@@ -372,7 +372,7 @@ static void demoCaseMapInCPlusPlus() {
* "<sharp s> <small lig. ffi>"
* "<small final sigma><small sigma><capital sigma>"
*/
- static const UChar input[]={
+ static const char16_t input[]={
0x61, 0x42, 0x3a3,
0x69, 0x49, 0x131, 0x130, 0x20,
0xdf, 0x20, 0xfb03,
@@ -402,9 +402,9 @@ static void demoCaseMapInCPlusPlus() {
/* uppercase/Turkish */
printUnicodeString("full-uppercased/tr: ", (t=s).toUpper(tr));
/* titlecase/English */
- printUnicodeString("full-titlecased/en: ", (t=s).toTitle(NULL, en));
+ printUnicodeString("full-titlecased/en: ", (t=s).toTitle(nullptr, en));
/* titlecase/Turkish */
- printUnicodeString("full-titlecased/tr: ", (t=s).toTitle(NULL, tr));
+ printUnicodeString("full-titlecased/tr: ", (t=s).toTitle(nullptr, tr));
/* case-folde/default */
printUnicodeString("full-case-folded/default: ", (t=s).foldCase(U_FOLD_CASE_DEFAULT));
/* case-folde/Turkic */
@@ -413,10 +413,10 @@ static void demoCaseMapInCPlusPlus() {
// sample code for UnicodeString storage models ----------------------------- ***
-static const UChar readonly[]={
+static const char16_t readonly[]={
0x61, 0x31, 0x20ac
};
-static UChar writeable[]={
+static char16_t writeable[]={
0x62, 0x32, 0xdbc0, 0xdc01 // includes a surrogate pair for a supplementary code point
};
static char out[100];
@@ -454,7 +454,7 @@ demoUnicodeStringStorage() {
two=one;
printf("length of longer string copy: %d\n", two.length());
- // * UnicodeString using readonly-alias to a const UChar array
+ // * UnicodeString using readonly-alias to a const char16_t array
// construct a string that aliases a readonly buffer
UnicodeString three(false, readonly, UPRV_LENGTHOF(readonly));
printUnicodeString("readonly-alias string: ", three);
@@ -480,7 +480,7 @@ demoUnicodeStringStorage() {
printf("verify that a regular copy of a readonly alias uses a different buffer pointer: %d (should be 0)\n",
one.getBuffer()==two.getBuffer());
- // * UnicodeString using writeable-alias to a non-const UChar array
+ // * UnicodeString using writeable-alias to a non-const char16_t array
UnicodeString four(writeable, UPRV_LENGTHOF(writeable), UPRV_LENGTHOF(writeable));
printUnicodeString("writeable-alias string: ", four);
// a modification writes through to the buffer
@@ -501,7 +501,7 @@ demoUnicodeStringStorage() {
one.setTo(writeable, UPRV_LENGTHOF(writeable), UPRV_LENGTHOF(writeable));
// grow the string - it will not fit into the backing buffer any more
// and will get copied before modification
- one.append((UChar)0x40);
+ one.append((char16_t)0x40);
// shrink it back so it would fit
one.truncate(one.length()-1);
// we still operate on the copy
@@ -538,9 +538,9 @@ demoUnicodeStringInit() {
UnicodeString invariantOnly=UNICODE_STRING("such characters are safe 123 %-.", 32);
/*
- * In C, we need two macros: one to declare the UChar[] array, and
+ * In C, we need two macros: one to declare the char16_t[] array, and
* one to populate it; the second one is a noop on platforms where
- * wchar_t is compatible with UChar and ASCII-based.
+ * wchar_t is compatible with char16_t and ASCII-based.
* The length of the string literal must be counted for both macros.
*/
/* declare the invString array for the string */
@@ -552,15 +552,15 @@ demoUnicodeStringInit() {
printf("C and C++ Unicode strings are equal: %d\n", invariantOnly==UnicodeString(true, invString, 32));
/*
- * convert between char * and UChar * strings that
+ * convert between char * and char16_t * strings that
* contain only invariant characters
*/
static const char *cs1="such characters are safe 123 %-.";
- static UChar us1[40];
+ static char16_t us1[40];
static char cs2[40];
u_charsToUChars(cs1, us1, 33); /* include the terminating NUL */
u_UCharsToChars(us1, cs2, 33);
- printf("char * -> UChar * -> char * with only "
+ printf("char * -> char16_t * -> char * with only "
"invariant characters: \"%s\"\n",
cs2);
@@ -575,9 +575,9 @@ demoUnicodeStringInit() {
/*
* C: convert and unescape a char * string with only invariant
- * characters to fill a UChar * string
+ * characters to fill a char16_t * string
*/
- UChar buffer[200];
+ char16_t buffer[200];
int32_t length;
length=u_unescape(
"Sch\\u00f6nes Auto: \\u20ac 11240.\\fPrivates Zeichen: \\U00102345\\n",
@@ -597,13 +597,13 @@ main(int argc, const char *argv[]) {
// This will currently affect only the printUString() function, see the code above.
// printUnicodeString() could use this, too, by changing to an extract() overload
// that takes a UConverter argument.
- cnv=ucnv_open(NULL, &errorCode);
+ cnv=ucnv_open(nullptr, &errorCode);
if(U_FAILURE(errorCode)) {
fprintf(stderr, "error %s opening the default converter\n", u_errorName(errorCode));
return errorCode;
}
- ucnv_setFromUCallBack(cnv, UCNV_FROM_U_CALLBACK_ESCAPE, UCNV_ESCAPE_C, NULL, NULL, &errorCode);
+ ucnv_setFromUCallBack(cnv, UCNV_FROM_U_CALLBACK_ESCAPE, UCNV_ESCAPE_C, nullptr, nullptr, &errorCode);
if(U_FAILURE(errorCode)) {
fprintf(stderr, "error %s setting the escape callback in the default converter\n", u_errorName(errorCode));
ucnv_close(cnv);
diff --git a/Build/source/libs/icu/icu-src/source/stubdata/stubdata.cpp b/Build/source/libs/icu/icu-src/source/stubdata/stubdata.cpp
index 3f336612426..0fa2b170ebc 100644
--- a/Build/source/libs/icu/icu-src/source/stubdata/stubdata.cpp
+++ b/Build/source/libs/icu/icu-src/source/stubdata/stubdata.cpp
@@ -6,7 +6,7 @@
* Corporation and others. All Rights Reserved.
*
*******************************************************************************
-* file name: stubdata.c
+* file name: stubdata.cpp
*
* Define initialized data that will build into a valid, but empty
* ICU data library. Used to bootstrap the ICU build, which has these
@@ -17,12 +17,11 @@
*
* The stub data library (for which this file is the source) is sufficient
* for running the data building tools.
-*
*/
#include "stubdata.h"
-extern "C" U_EXPORT const ICU_Data_Header U_ICUDATA_ENTRY_POINT = {
+extern "C" U_EXPORT const ICU_Data_Header U_ICUDATA_ENTRY_POINT alignas(16) = {
32, /* headerSize */
0xda, /* magic1, (see struct MappedData in udata.c) */
0x27, /* magic2 */
@@ -37,22 +36,17 @@ extern "C" U_EXPORT const ICU_Data_Header U_ICUDATA_ENTRY_POINT = {
#endif
U_CHARSET_FAMILY,
- sizeof(UChar),
+ sizeof(char16_t),
0, /* reserved */
- { /* data format identifier */
- 0x54, 0x6f, 0x43, 0x50}, /* "ToCP" */
- {1, 0, 0, 0}, /* format version major, minor, milli, micro */
- {0, 0, 0, 0} /* dataVersion */
+ {0x54, 0x6f, 0x43, 0x50}, /* data format identifier: "ToCP" */
+ {1, 0, 0, 0}, /* format version major, minor, milli, micro */
+ {0, 0, 0, 0} /* dataVersion */
},
- {0,0,0,0,0,0,0,0}, /* Padding[8] */
+ { 's', 't', 'u', 'b', 'd', 'a', 't', 'a' }, /* Padding[8] */
0, /* count */
0, /* Reserved */
{ /* TOC structure */
-/* { */
- 0 , 0 , 0, 0 /* name and data entries. Count says there are none, */
+ 0 , 0 /* name and data entries. Count says there are none, */
/* but put one in just in case. */
-/* } */
}
};
-
-
diff --git a/Build/source/libs/icu/icu-src/source/stubdata/stubdata.h b/Build/source/libs/icu/icu-src/source/stubdata/stubdata.h
index 9879f40164e..429a647102b 100644
--- a/Build/source/libs/icu/icu-src/source/stubdata/stubdata.h
+++ b/Build/source/libs/icu/icu-src/source/stubdata/stubdata.h
@@ -8,7 +8,7 @@
*******************************************************************************
* file name: stubdata.h
*
-* This header file is intended to be internal and only included in the
+* This header file is intended to be internal and only included in the
* accompanying implementation file. This file declares a single entry
* point for visibility of tools like TAPI.
*
@@ -21,7 +21,6 @@
*
* The stub data library (for which this file is the source) is sufficient
* for running the data building tools.
-*
*/
#ifndef __STUBDATA_H__
@@ -31,7 +30,7 @@
#include "unicode/udata.h"
#include "unicode/uversion.h"
-typedef struct {
+typedef struct alignas(16) {
uint16_t headerSize;
uint8_t magic1, magic2;
UDataInfo info;
@@ -43,7 +42,7 @@ typedef struct {
const void *const data;
} toc[1];
*/
- int fakeNameAndData[4]; /* TODO: Change this header type from */
+ uint64_t fakeNameAndData[2]; /* TODO: Change this header type from */
/* pointerTOC to OffsetTOC. */
} ICU_Data_Header;
diff --git a/Build/source/libs/icu/icu-src/source/test/cintltst/Makefile.in b/Build/source/libs/icu/icu-src/source/test/cintltst/Makefile.in
index 34f8ea2acdd..552a105bd90 100644
--- a/Build/source/libs/icu/icu-src/source/test/cintltst/Makefile.in
+++ b/Build/source/libs/icu/icu-src/source/test/cintltst/Makefile.in
@@ -36,13 +36,18 @@ BUILDDIR := $(BUILDDIR:TEST\\CINTLTST/../../=)
# we define ICU_UNICODE_VERSION so we can test it
CPPFLAGS += -I$(top_srcdir)/common -I$(top_srcdir)/i18n -I$(top_srcdir)/tools/ctestfw -I$(top_srcdir)/tools/toolutil
+ifdef QNX_TARGET
+DEFS += -D'ICU_UNICODE_VERSION="$(UNICODE_VERSION)"' -D'ICU_VERSION="@VERSION@"' -D'ICUDATA_NAME="$(ICUDATA_PLATFORM_NAME)"' -D'U_TOPSRCDIR="/var/icu_tests"' -D'U_TOPBUILDDIR="/var/icu_tests/"'
+else
DEFS += -D'ICU_UNICODE_VERSION="$(UNICODE_VERSION)"' -D'ICU_VERSION="@VERSION@"' -D'ICUDATA_NAME="$(ICUDATA_PLATFORM_NAME)"' -D'U_TOPSRCDIR="$(top_srcdir)/"' -D'U_TOPBUILDDIR="$(BUILDDIR)"'
+endif
LIBS = $(LIBCTESTFW) $(LIBICUI18N) $(LIBICUTOOLUTIL) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
OBJECTS = callcoll.o calltest.o capitst.o cbiapts.o cbkittst.o \
ccaltst.o ucnvseltst.o cctest.o ccapitst.o ccolltst.o encoll.o cconvtst.o ccurrtst.o \
cdateintervalformattest.o cdattst.o cdetst.o cdtdptst.o cdtrgtst.o cestst.o cfintst.o \
cformtst.o cfrtst.o cg7coll.o chashtst.o cintltst.o citertst.o cjaptst.o cloctst.o \
+ulocaletst.o ulocbuildertst.o \
cmsccoll.o cmsgtst.o cpluralrulestest.o cposxtst.o cldrtest.o \
cnmdptst.o cnormtst.o cnumtst.o crelativedateformattest.o crestst.o creststn.o cturtst.o \
cucdapi.o cucdtst.o custrtst.o cstrcase.o cutiltst.o nucnvtst.o nccbtst.o bocu1tst.o \
diff --git a/Build/source/libs/icu/icu-src/source/test/cintltst/capitst.c b/Build/source/libs/icu/icu-src/source/test/cintltst/capitst.c
index e5568d32d53..5d76ea0548a 100644
--- a/Build/source/libs/icu/icu-src/source/test/cintltst/capitst.c
+++ b/Build/source/libs/icu/icu-src/source/test/cintltst/capitst.c
@@ -48,16 +48,16 @@ static char* U_EXPORT2 ucol_sortKeyToString(const UCollator *coll, const uint8_t
uint8_t b;
if (position + 1 < len)
- position += sprintf(buffer + position, "[");
+ position += snprintf(buffer + position, len-position, "[");
while ((b = *sortkey++) != 0) {
if (b == 1 && position + 5 < len) {
- position += sprintf(buffer + position, "%02X . ", b);
+ position += snprintf(buffer + position, len-position, "%02X . ", b);
} else if (b != 1 && position + 3 < len) {
- position += sprintf(buffer + position, "%02X ", b);
+ position += snprintf(buffer + position, len-position, "%02X ", b);
}
}
if (position + 3 < len)
- position += sprintf(buffer + position, "%02X]", b);
+ position += snprintf(buffer + position, len-position, "%02X]", b);
return buffer;
}
@@ -1282,8 +1282,8 @@ void TestSortKey()
for(i=0;i<sortklen;i++)
{
- sprintf(junk2+strlen(junk2), "%02X ",(int)( 0xFF & sortk2[i]));
- sprintf(junk3+strlen(junk3), "%02X ",(int)( 0xFF & sortk3[i]));
+ snprintf(junk2+strlen(junk2), sizeof(junk2)-strlen(junk2), "%02X ",(int)( 0xFF & sortk2[i]));
+ snprintf(junk3+strlen(junk3), sizeof(junk3)-strlen(junk3), "%02X ",(int)( 0xFF & sortk3[i]));
}
log_verbose("%s\n", junk2);
diff --git a/Build/source/libs/icu/icu-src/source/test/cintltst/cbiditst.c b/Build/source/libs/icu/icu-src/source/test/cintltst/cbiditst.c
index 3eb570925f1..ce4c1ce57f2 100644
--- a/Build/source/libs/icu/icu-src/source/test/cintltst/cbiditst.c
+++ b/Build/source/libs/icu/icu-src/source/test/cintltst/cbiditst.c
@@ -23,7 +23,7 @@
#include "cbiditst.h"
#include "cstring.h"
#include <stdbool.h>
-/* the following include is needed for sprintf */
+/* the following include is needed for snprintf */
#include <stdio.h>
#define MAXLEN MAX_STRING_LENGTH
@@ -1041,7 +1041,7 @@ testReorderArabicMathSymbols(void) {
static void
doTest(UBiDi *pBiDi, int testNumber, const BiDiTestData *test, int32_t lineStart, UBool countRunsFirst) {
- const uint8_t *dirProps=test->text+lineStart;
+ const uint8_t *dirProps= (test->text == NULL) ? NULL : test->text+lineStart;
const UBiDiLevel *levels=test->levels;
const uint8_t *visualMap=test->visualMap;
int32_t i, len=ubidi_getLength(pBiDi), logicalIndex, runCount = 0;
@@ -4489,7 +4489,7 @@ testStreaming(void) {
mismatch |= (UBool)(j >= nPortions ||
processedLen != testData[i].portionLens[levelIndex][j]);
- sprintf(processedLenStr + j * 4, "%4d", processedLen);
+ snprintf(processedLenStr + j * 4, sizeof(processedLenStr) - j * 4, "%4d", processedLen);
srcLen -= processedLen, pSrc += processedLen;
}
diff --git a/Build/source/libs/icu/icu-src/source/test/cintltst/ccaltst.c b/Build/source/libs/icu/icu-src/source/test/cintltst/ccaltst.c
index bba1f307c0a..0744ba14abf 100644
--- a/Build/source/libs/icu/icu-src/source/test/cintltst/ccaltst.c
+++ b/Build/source/libs/icu/icu-src/source/test/cintltst/ccaltst.c
@@ -44,6 +44,8 @@ void TestJpnCalAddSetNextEra(void);
void TestUcalOpenBufferRead(void);
void TestGetTimeZoneOffsetFromLocal(void);
+void TestFWWithISO8601(void);
+
void addCalTest(TestNode** root);
void addCalTest(TestNode** root)
@@ -68,6 +70,8 @@ void addCalTest(TestNode** root)
addTest(root, &TestJpnCalAddSetNextEra, "tsformat/ccaltst/TestJpnCalAddSetNextEra");
addTest(root, &TestUcalOpenBufferRead, "tsformat/ccaltst/TestUcalOpenBufferRead");
addTest(root, &TestGetTimeZoneOffsetFromLocal, "tsformat/ccaltst/TestGetTimeZoneOffsetFromLocal");
+ addTest(root, &TestFWWithISO8601, "tsformat/ccaltst/TestFWWithISO8601");
+ addTest(root, &TestGetIanaTimeZoneID, "tstformat/ccaltst/TestGetIanaTimeZoneID");
}
/* "GMT" */
@@ -97,7 +101,10 @@ static const UCalGetTypeTest ucalGetTypeTests[] = {
{ "fr_CH", UCAL_DEFAULT, "gregorian" },
{ "fr_SA", UCAL_DEFAULT, "islamic-umalqura" },
{ "fr_CH@rg=sazzzz", UCAL_DEFAULT, "islamic-umalqura" },
+ { "fr_CH@rg=sa14", UCAL_DEFAULT, "islamic-umalqura" },
{ "fr_CH@calendar=japanese;rg=sazzzz", UCAL_DEFAULT, "japanese" },
+ { "fr_CH@rg=twcyi", UCAL_DEFAULT, "gregorian" }, // test for ICU-22364
+ { "fr_CH@rg=ugw", UCAL_DEFAULT, "gregorian" }, // test for ICU-22364
{ "fr_TH@rg=SA", UCAL_DEFAULT, "buddhist" }, /* ignore malformed rg tag */
{ "th@rg=SA", UCAL_DEFAULT, "buddhist" }, /* ignore malformed rg tag */
{ "", UCAL_GREGORIAN, "gregorian" },
@@ -1568,6 +1575,24 @@ void TestGregorianChange() {
}
}
ucal_close(cal);
+ /* Test ucal_setGregorianChange() on a iso8601 calendar and it should work
+ * as Gregorian. */
+ errorCode = U_ZERO_ERROR;
+ cal = ucal_open(utc, -1, "en@calendar=iso8601", UCAL_TRADITIONAL, &errorCode);
+ if(U_FAILURE(errorCode)) {
+ log_data_err("ucal_open(UTC) failed: %s - (Are you missing data?)\n", u_errorName(errorCode));
+ return;
+ }
+ ucal_setGregorianChange(cal, -365 * (dayMillis * (UDate)1), &errorCode);
+ if(U_FAILURE(errorCode)) {
+ log_err("ucal_setGregorianChange(1969) failed: %s\n", u_errorName(errorCode));
+ } else {
+ date = ucal_getGregorianChange(cal, &errorCode);
+ if(U_FAILURE(errorCode) || date != -365 * (dayMillis * (UDate)1)) {
+ log_err("ucal_getGregorianChange() failed: %s, date = %f\n", u_errorName(errorCode), date);
+ }
+ }
+ ucal_close(cal);
/* Test ucal_setGregorianChange() on a non-Gregorian calendar where it should fail. */
errorCode = U_ZERO_ERROR;
@@ -1591,7 +1616,7 @@ void TestGregorianChange() {
}
static void TestGetKeywordValuesForLocale() {
-#define PREFERRED_SIZE 16
+#define PREFERRED_SIZE 26
#define MAX_NUMBER_OF_KEYWORDS 5
const char *PREFERRED[PREFERRED_SIZE][MAX_NUMBER_OF_KEYWORDS+1] = {
{ "root", "gregorian", NULL, NULL, NULL, NULL },
@@ -1610,8 +1635,20 @@ static void TestGetKeywordValuesForLocale() {
{ "zh_TW", "gregorian", "roc", "chinese", NULL, NULL },
{ "ar_IR", "persian", "gregorian", "islamic", "islamic-civil", "islamic-tbla" },
{ "th@rg=SAZZZZ", "islamic-umalqura", "gregorian", "islamic", "islamic-rgsa", NULL },
+
+ // tests for ICU-22364
+ { "zh_CN@rg=TW", "gregorian", "chinese", NULL, NULL, NULL }, // invalid subdivision code
+ { "zh_CN@rg=TWzzzz", "gregorian", "roc", "chinese", NULL, NULL }, // whole region
+ { "zh_TW@rg=TWxxxx", "gregorian", "roc", "chinese", NULL, NULL }, // invalid subdivision code (ignored)
+ { "zh_TW@rg=ARa", "gregorian", NULL, NULL, NULL, NULL }, // single-letter subdivision code
+ { "zh_TW@rg=AT1", "gregorian", NULL, NULL, NULL, NULL }, // single-digit subdivision code
+ { "zh_TW@rg=USca", "gregorian", NULL, NULL, NULL, NULL }, // two-letter subdivision code
+ { "zh_TW@rg=IT53", "gregorian", NULL, NULL, NULL, NULL }, // two-digit subdivision code
+ { "zh_TW@rg=AUnsw", "gregorian", NULL, NULL, NULL, NULL }, // three-letter subdivision code
+ { "zh_TW@rg=EE130", "gregorian", NULL, NULL, NULL, NULL }, // three-digit subdivision code
+ { "zh_TW@rg=417zzzz", "gregorian", NULL, NULL, NULL, NULL }, // three-digit region code
};
- const int32_t EXPECTED_SIZE[PREFERRED_SIZE] = { 1, 1, 1, 1, 2, 2, 2, 5, 5, 2, 2, 2, 1, 3, 5, 4 };
+ const int32_t EXPECTED_SIZE[PREFERRED_SIZE] = { 1, 1, 1, 1, 2, 2, 2, 5, 5, 2, 2, 2, 1, 3, 5, 4, 2, 3, 3, 1, 1, 1, 1, 1, 1, 1 };
UErrorCode status = U_ZERO_ERROR;
int32_t i, size, j;
UEnumeration *all, *pref;
@@ -1691,7 +1728,7 @@ static void TestGetKeywordValuesForLocale() {
/*
* Weekend tests, ported from
- * icu4j/trunk/main/tests/core/src/com/ibm/icu/dev/test/calendar/IBMCalendarTest.java
+ * icu4j/main/core/src/test/java/com/ibm/icu/dev/test/calendar/IBMCalendarTest.java
* and extended a bit. Notes below from IBMCalendarTest.java ...
* This test tests for specific locale data. This is probably okay
* as far as US data is concerned, but if the Arabic/Yemen data
@@ -2776,4 +2813,82 @@ TestGetTimeZoneOffsetFromLocal() {
ucal_close(cal);
}
+void
+TestFWWithISO8601() {
+ /* UCAL_SUNDAY is 1, UCAL_MONDAY is 2, ..., UCAL_SATURDAY is 7 */
+ const char* LOCALES[] = {
+ "",
+ "en-u-ca-iso8601-fw-sun",
+ "en-u-ca-iso8601-fw-mon",
+ "en-u-ca-iso8601-fw-tue",
+ "en-u-ca-iso8601-fw-wed",
+ "en-u-ca-iso8601-fw-thu",
+ "en-u-ca-iso8601-fw-fri",
+ "en-u-ca-iso8601-fw-sat",
+ };
+ for (int32_t i = UCAL_SUNDAY; i <= UCAL_SATURDAY; i++) {
+ const char* locale = LOCALES[i];
+ UErrorCode status = U_ZERO_ERROR;
+ UCalendar* cal = ucal_open(0, 0, locale, UCAL_TRADITIONAL, &status);
+ if(U_FAILURE(status)){
+ log_data_err("FAIL: error in ucal_open caldef : %s\n - (Are you missing data?)", u_errorName(status));
+ }
+ int32_t actual = ucal_getAttribute(cal, UCAL_FIRST_DAY_OF_WEEK);
+ if (i != actual) {
+ log_err("ERROR: ucal_getAttribute(\"%s\", UCAL_FIRST_DAY_OF_WEEK) should be %d but get %d\n",
+ locale, i, actual);
+ }
+ ucal_close(cal);
+ }
+}
+
+void
+TestGetIanaTimeZoneID() {
+ const UChar* UNKNOWN = u"Etc/Unknown";
+ typedef struct {
+ const UChar* id;
+ const UChar* expected;
+ } IanaTimeZoneIDTestData;
+
+ const IanaTimeZoneIDTestData TESTDATA[] = {
+ {u"", UNKNOWN},
+ {0, UNKNOWN},
+ {UNKNOWN, UNKNOWN},
+ {u"America/New_York", u"America/New_York"},
+ {u"Asia/Calcutta", u"Asia/Kolkata"},
+ {u"Europe/Kiev", u"Europe/Kyiv"},
+ {u"Europe/Zaporozhye", u"Europe/Kyiv"},
+ {u"Etc/GMT-1", u"Etc/GMT-1"},
+ {u"Etc/GMT+20", UNKNOWN},
+ {u"PST8PDT", u"PST8PDT"},
+ {u"GMT-08:00", UNKNOWN},
+ {0, 0}
+ };
+
+ for (int32_t i = 0; TESTDATA[i].expected != 0; i++) {
+ UErrorCode sts = U_ZERO_ERROR;
+ UChar ianaID[128];
+ int32_t ianaLen = 0;
+
+ ianaLen = ucal_getIanaTimeZoneID(TESTDATA[i].id, -1, ianaID, sizeof(ianaID), &sts);
+
+ if (u_strcmp(TESTDATA[i].expected, UNKNOWN) == 0) {
+ if (sts != U_ILLEGAL_ARGUMENT_ERROR) {
+ log_err("Expected U_ILLEGAL_ERROR: TESTDATA[%d]", i);
+ }
+ } else {
+ if (u_strlen(TESTDATA[i].expected) != ianaLen || u_strncmp(TESTDATA[i].expected, ianaID, ianaLen) != 0) {
+ log_err("Error: TESTDATA[%d]", i);
+ }
+ // Calling ucal_getIanaTimeZoneID with an IANA ID should return the same
+ UChar ianaID2[128];
+ int32_t ianaLen2 = 0;
+ ianaLen2 = ucal_getIanaTimeZoneID(ianaID, ianaLen, ianaID2, sizeof(ianaID2), &sts);
+ if (U_FAILURE(sts) || ianaLen != ianaLen2 || u_strncmp(ianaID, ianaID2, ianaLen) != 0) {
+ log_err("Error: IANA ID for IANA ID %s", ianaID);
+ }
+ }
+ }
+}
+
#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/Build/source/libs/icu/icu-src/source/test/cintltst/ccaltst.h b/Build/source/libs/icu/icu-src/source/test/cintltst/ccaltst.h
index 7f36b050419..14060ff5357 100644
--- a/Build/source/libs/icu/icu-src/source/test/cintltst/ccaltst.h
+++ b/Build/source/libs/icu/icu-src/source/test/cintltst/ccaltst.h
@@ -72,6 +72,10 @@
* Test ambiguous wall time
*/
static void TestAmbiguousWallTime(void);
+ /**
+ * Test ucal_getIanaTimeZoneID()
+ */
+ static void TestGetIanaTimeZoneID(void);
/*Internal functions used*/
/**
diff --git a/Build/source/libs/icu/icu-src/source/test/cintltst/ccolltst.c b/Build/source/libs/icu/icu-src/source/test/cintltst/ccolltst.c
index b42dfd7d215..7ae2e277e7e 100644
--- a/Build/source/libs/icu/icu-src/source/test/cintltst/ccolltst.c
+++ b/Build/source/libs/icu/icu-src/source/test/cintltst/ccolltst.c
@@ -56,14 +56,14 @@ void addCollTest(TestNode** root)
/*Internal functions used*/
-static char* dumpSk(uint8_t *sourceKey, char *sk) {
+static char* dumpSk(uint8_t *sourceKey, char *sk, size_t n) {
uint32_t kLen = (uint32_t)strlen((const char *)sourceKey);
uint32_t i = 0;
*sk = 0;
for(i = 0; i<kLen; i++) {
- sprintf(sk+2*i, "%02X", sourceKey[i]);
+ snprintf(sk+2*i, n-2*i, "%02X", sourceKey[i]);
}
return sk;
}
@@ -125,8 +125,8 @@ void reportCResult( const UChar source[], const UChar target[],
if(keyResult != expectedResult || keyResult != compareResult)
{
char sk[10000];
- log_verbose("SortKey1: %s\n", dumpSk(sourceKey, sk));
- log_verbose("SortKey2: %s\n", dumpSk(targetKey, sk));
+ log_verbose("SortKey1: %s\n", dumpSk(sourceKey, sk, sizeof(sk)));
+ log_verbose("SortKey2: %s\n", dumpSk(targetKey, sk, sizeof(sk)));
}
}
diff --git a/Build/source/libs/icu/icu-src/source/test/cintltst/ccurrtst.c b/Build/source/libs/icu/icu-src/source/test/cintltst/ccurrtst.c
index aa6f6447114..f2111f4e228 100644
--- a/Build/source/libs/icu/icu-src/source/test/cintltst/ccurrtst.c
+++ b/Build/source/libs/icu/icu-src/source/test/cintltst/ccurrtst.c
@@ -63,7 +63,8 @@ void currTest()
{ 0x20A4, 0x0000}, /*20A4; L; [14 50, 03, 03] # [0838.0020.0002] # LIRA SIGN*/
{ 0x20A5, 0x0000}, /*20A5; L; [14 52, 03, 03] # [0839.0020.0002] # MILL SIGN*/
{ 0x20A6, 0x0000}, /*20A6; L; [14 54, 03, 03] # [083A.0020.0002] # NAIRA SIGN*/
- { 0x20A7, 0x0000}, /*20A7; L; [14 56, 03, 03] # [083B.0020.0002] # PESETA SIGN*/
+ // Unicode 15.1: ₧ now sorts like "Pts", no longer as a stand-alone symbol.
+ // { 0x20A7, 0x0000}, /*20A7; L; [14 56, 03, 03] # [083B.0020.0002] # PESETA SIGN*/
{ 0x20A9, 0x0000}, /*20A9; L; [14 58, 03, 03] # [083C.0020.0002] # WON SIGN*/
{ 0xFFE6, 0x0000}, /*FFE6; L; [14 58, 03, 05] # [083C.0020.0003] # FULLWIDTH WON SIGN*/
{ 0x20AA, 0x0000}, /*20AA; L; [14 5A, 03, 03] # [083D.0020.0002] # NEW SHEQEL SIGN*/
diff --git a/Build/source/libs/icu/icu-src/source/test/cintltst/cdateintervalformattest.c b/Build/source/libs/icu/icu-src/source/test/cintltst/cdateintervalformattest.c
index dfecd38114c..4c535830aa3 100644
--- a/Build/source/libs/icu/icu-src/source/test/cintltst/cdateintervalformattest.c
+++ b/Build/source/libs/icu/icu-src/source/test/cintltst/cdateintervalformattest.c
@@ -71,17 +71,17 @@ static const DateIntervalFormatTestItem testItems[] = {
{ "de", "Hm", CAP_NONE, tzUSPacific, Date201009270800, Date201009270800 + 12.0*_HOUR, u"08:00\u201320:00 Uhr" },
{ "de", "Hm", CAP_NONE, tzUSPacific, Date201009270800, Date201009270800 + 31.0*_DAY, u"27.9.2010, 08:00\u2009\u2013\u200928.10.2010, 08:00" },
{ "ja", "MMMd", CAP_NONE, tzUSPacific, Date201009270800, Date201009270800 + 1.0*_DAY, u"9月27日~28日" },
- { "cs", "MMMEd", CAP_NONE, tzUSPacific, Date201009270800, Date201009270800 + 60.0*_DAY, u"po 27. 9. \u2013 pá 26. 11." },
+ { "cs", "MMMEd", CAP_NONE, tzUSPacific, Date201009270800, Date201009270800 + 60.0*_DAY, u"po 27. 9.\u2009\u2013\u2009pá 26. 11." },
{ "cs", "yMMMM", CAP_NONE, tzUSPacific, Date201009270800, Date201009270800 + 60.0*_DAY, u"září\u2013listopad 2010" },
{ "cs", "yMMMM", CAP_NONE, tzUSPacific, Date201009270800, Date201009270800 + 1.0*_DAY, u"září 2010" },
#if !UCONFIG_NO_BREAK_ITERATION
- { "cs", "MMMEd", CAP_BEGIN, tzUSPacific, Date201009270800, Date201009270800 + 60.0*_DAY, u"Po 27. 9. \u2013 pá 26. 11." },
+ { "cs", "MMMEd", CAP_BEGIN, tzUSPacific, Date201009270800, Date201009270800 + 60.0*_DAY, u"Po 27. 9.\u2009\u2013\u2009pá 26. 11." },
{ "cs", "yMMMM", CAP_BEGIN, tzUSPacific, Date201009270800, Date201009270800 + 60.0*_DAY, u"Září\u2013listopad 2010" },
{ "cs", "yMMMM", CAP_BEGIN, tzUSPacific, Date201009270800, Date201009270800 + 1.0*_DAY, u"Září 2010" },
- { "cs", "MMMEd", CAP_LIST, tzUSPacific, Date201009270800, Date201009270800 + 60.0*_DAY, u"Po 27. 9. \u2013 pá 26. 11." },
+ { "cs", "MMMEd", CAP_LIST, tzUSPacific, Date201009270800, Date201009270800 + 60.0*_DAY, u"Po 27. 9.\u2009\u2013\u2009pá 26. 11." },
{ "cs", "yMMMM", CAP_LIST, tzUSPacific, Date201009270800, Date201009270800 + 60.0*_DAY, u"Září\u2013listopad 2010" },
{ "cs", "yMMMM", CAP_LIST, tzUSPacific, Date201009270800, Date201009270800 + 1.0*_DAY, u"Září 2010" },
- { "cs", "MMMEd", CAP_ALONE, tzUSPacific, Date201009270800, Date201009270800 + 60.0*_DAY, u"po 27. 9. \u2013 pá 26. 11." },
+ { "cs", "MMMEd", CAP_ALONE, tzUSPacific, Date201009270800, Date201009270800 + 60.0*_DAY, u"po 27. 9.\u2009\u2013\u2009pá 26. 11." },
#endif
{ "cs", "yMMMM", CAP_ALONE, tzUSPacific, Date201009270800, Date201009270800 + 60.0*_DAY, u"září\u2013listopad 2010" },
{ "cs", "yMMMM", CAP_ALONE, tzUSPacific, Date201009270800, Date201009270800 + 1.0*_DAY, u"září 2010" },
diff --git a/Build/source/libs/icu/icu-src/source/test/cintltst/cdattst.c b/Build/source/libs/icu/icu-src/source/test/cintltst/cdattst.c
index fcc56e386d0..c390f1e4ad6 100644
--- a/Build/source/libs/icu/icu-src/source/test/cintltst/cdattst.c
+++ b/Build/source/libs/icu/icu-src/source/test/cintltst/cdattst.c
@@ -31,10 +31,12 @@
#include "cintltst.h"
#include "cdattst.h"
#include "cformtst.h"
+#include "cstring.h"
#include "cmemory.h"
#include <math.h>
#include <stdbool.h>
+#include <stdio.h> // for sprintf()
static void TestExtremeDates(void);
static void TestAllLocales(void);
@@ -47,6 +49,8 @@ static void TestForceGannenNumbering(void);
static void TestMapDateToCalFields(void);
static void TestNarrowQuarters(void);
static void TestExtraneousCharacters(void);
+static void TestParseTooStrict(void);
+static void TestHourCycle(void);
void addDateForTest(TestNode** root);
@@ -70,6 +74,8 @@ void addDateForTest(TestNode** root)
TESTCASE(TestMapDateToCalFields);
TESTCASE(TestNarrowQuarters);
TESTCASE(TestExtraneousCharacters);
+ TESTCASE(TestParseTooStrict);
+ TESTCASE(TestHourCycle);
}
/* Testing the DateFormat API */
static void TestDateFormat()
@@ -696,7 +702,7 @@ static void TestSymbols()
VerifygetSymbols(def, UDAT_QUARTERS, 3, "4th quarter");
VerifygetSymbols(fr, UDAT_SHORT_QUARTERS, 1, "T2");
VerifygetSymbols(def, UDAT_SHORT_QUARTERS, 2, "Q3");
- VerifygetSymbols(esMX, UDAT_STANDALONE_NARROW_QUARTERS, 1, "2T");
+ VerifygetSymbols(esMX, UDAT_STANDALONE_NARROW_QUARTERS, 1, "2");
VerifygetSymbols(def, UDAT_NARROW_QUARTERS, 2, "3");
VerifygetSymbols(zhChiCal, UDAT_CYCLIC_YEARS_ABBREVIATED, 0, "\\u7532\\u5B50");
VerifygetSymbols(zhChiCal, UDAT_CYCLIC_YEARS_NARROW, 59, "\\u7678\\u4EA5");
@@ -1057,8 +1063,8 @@ static void TestCalendarDateParse() {
FAIL:
udat_close(simpleDateFormat);
- udat_close(tempCal);
- udat_close(calendar);
+ ucal_close(tempCal);
+ ucal_close(calendar);
}
@@ -1967,15 +1973,15 @@ static void TestNarrowQuarters(void) {
u"en_US", u"QQQQ y", u"1st quarter 1970",
u"en_US", u"QQQ y", u"Q1 1970",
u"en_US", u"QQQQQ y", u"1 1970",
- u"es_MX", u"QQQQ y", u"1.er trimestre 1970",
+ u"es_MX", u"QQQQ y", u"1.º trimestre 1970",
u"es_MX", u"QQQ y", u"T1 1970",
u"es_MX", u"QQQQQ y", u"1 1970",
u"en_US", u"qqqq", u"1st quarter",
u"en_US", u"qqq", u"Q1",
u"en_US", u"qqqqq", u"1",
- u"es_MX", u"qqqq", u"1.er trimestre",
+ u"es_MX", u"qqqq", u"1.º trimestre",
u"es_MX", u"qqq", u"T1",
- u"es_MX", u"qqqqq", u"1T",
+ u"es_MX", u"qqqqq", u"1",
};
UErrorCode err = U_ZERO_ERROR;
@@ -2040,4 +2046,87 @@ static void TestExtraneousCharacters(void) {
ucal_close(cal);
}
+static void TestParseTooStrict(void) {
+ UErrorCode status = U_ZERO_ERROR;
+ const char* locale = "en_US";
+ UDateFormat* df = udat_open(UDAT_PATTERN, UDAT_PATTERN, locale, u"UTC", -1, u"MM/dd/yyyy", -1, &status);
+ if (U_FAILURE(status)) {
+ log_data_err("udat_open locale %s pattern MM/dd/yyyy: %s\n", locale, u_errorName(status));
+ return;
+ }
+ UCalendar* cal = ucal_open(u"UTC", -1, locale, UCAL_GREGORIAN, &status);
+ if (U_FAILURE(status)) {
+ log_data_err("ucal_open locale %s: %s\n", locale, u_errorName(status));
+ udat_close(df);
+ return;
+ }
+ ucal_clear(cal);
+ int32_t ppos = 0;
+ udat_setLenient(df, false);
+ udat_parseCalendar(df, cal, u"1/1/2023", -1, &ppos, &status);
+ if (U_FAILURE(status)) {
+ log_err("udat_parseCalendar locale %s, 1/1/2023: %s\n", locale, u_errorName(status));
+ } else if (ppos != 8) {
+ log_err("udat_parseCalendar locale %s, 1/1/2023: ppos expect 8, get %d\n", locale, ppos);
+ } else {
+ UDate parsedDate = ucal_getMillis(cal, &status);
+ if (U_FAILURE(status)) {
+ log_err("ucal_getMillis: %s\n", u_errorName(status));
+ } else if (parsedDate < 1672531200000.0 || parsedDate >= 1672617600000.0) { // check for day stating at UTC 2023-01-01 00:00
+ log_err("udat_parseCalendar locale %s, 1/1/2023: parsed UDate %.0f out of range\n", locale, parsedDate);
+ }
+ }
+
+ ucal_close(cal);
+ udat_close(df);
+}
+
+static void TestHourCycle(void) {
+ static const UDate date = -845601267742; // March 16, 1943 at 3:45 PM
+ const UChar* testCases[] = {
+ // test some locales for which we have data
+ u"en_US", u"Tuesday, March 16, 1943 at 3:45:32 PM",
+ u"en_CA", u"Tuesday, March 16, 1943 at 3:45:32 p.m.",
+ u"en_GB", u"Tuesday 16 March 1943 at 15:45:32",
+ u"en_AU", u"Tuesday 16 March 1943 at 3:45:32 pm",
+ // test a couple locales for which we don't have specific locale files (we should still get the correct hour cycle)
+ u"en_CO", u"Tuesday, March 16, 1943 at 3:45:32 PM",
+ u"en_MX", u"Tuesday, March 16, 1943 at 3:45:32 PM",
+ // test that the rg subtag does the right thing
+ u"en_US@rg=GBzzzz", u"Tuesday, March 16, 1943 at 15:45:32",
+ u"en_US@rg=CAzzzz", u"Tuesday, March 16, 1943 at 3:45:32 PM",
+ u"en_CA@rg=USzzzz", u"Tuesday, March 16, 1943 at 3:45:32 p.m.",
+ u"en_GB@rg=USzzzz", u"Tuesday 16 March 1943 at 3:45:32 pm",
+ u"en_GB@rg=CAzzzz", u"Tuesday 16 March 1943 at 3:45:32 pm",
+ u"en_GB@rg=AUzzzz", u"Tuesday 16 March 1943 at 3:45:32 pm",
+ // test that the hc ("hours") subtag does the right thing
+ u"en_US@hours=h23", u"Tuesday, March 16, 1943 at 15:45:32",
+ u"en_GB@hours=h12", u"Tuesday 16 March 1943 at 3:45:32 pm",
+ // test that the rg and hc subtags do the right thing when used together
+ u"en_US@rg=GBzzzz;hours=h12", u"Tuesday, March 16, 1943 at 3:45:32 PM",
+ u"en_GB@rg=USzzzz;hours=h23", u"Tuesday 16 March 1943 at 15:45:32",
+ };
+
+ for (int32_t i = 0; i < UPRV_LENGTHOF(testCases); i += 2) {
+ char errorMessage[200];
+ char* locale = austrdup(testCases[i]);
+
+ UErrorCode err = U_ZERO_ERROR;
+ sprintf(errorMessage, "Error creating formatter for %s", locale);
+ if (assertSuccess(errorMessage, &err)) {
+ UDateFormat* df = udat_open(UDAT_MEDIUM, UDAT_FULL, austrdup(testCases[i]), u"America/Los_Angeles", -1, NULL, 0, &err);
+ sprintf(errorMessage, "Error formatting value for %s", locale);
+ if (assertSuccess(errorMessage, &err)) {
+ UChar result[100];
+ udat_format(df, date, result, 100, NULL, &err);
+
+ sprintf(errorMessage, "Wrong result for %s", locale);
+ assertUEquals(errorMessage, testCases[i + 1], result);
+
+ udat_close(df);
+ }
+ }
+ }
+}
+
#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/Build/source/libs/icu/icu-src/source/test/cintltst/cdtrgtst.c b/Build/source/libs/icu/icu-src/source/test/cintltst/cdtrgtst.c
index dc45fa2902a..5ee21e294ab 100644
--- a/Build/source/libs/icu/icu-src/source/test/cintltst/cdtrgtst.c
+++ b/Build/source/libs/icu/icu-src/source/test/cintltst/cdtrgtst.c
@@ -26,8 +26,10 @@
#include "unicode/uloc.h"
#include "unicode/udat.h"
#include "unicode/ucal.h"
+#include "unicode/uchar.h"
#include "unicode/unum.h"
#include "unicode/ustring.h"
+#include "unicode/utf16.h"
#include "cintltst.h"
#include "cdtrgtst.h"
#include "cmemory.h"
@@ -190,8 +192,12 @@ void Test4056591()
log_err("myFormatit failed!\n");
}
else if(u_strcmp(gotdate, expdate) !=0){
- log_err("set2DigitYearStart broken for %s \n got: %s, expected: %s\n", austrdup(s),
- austrdup(gotdate), austrdup(expdate) );
+ if (strcmp("gregorian", ucal_getType(udat_getCalendar(def), &status)) == 0) {
+ // Only report error if the calendar is gregorian because the
+ // expectation is only for gregorian.
+ log_err("set2DigitYearStart broken for %s \n got: %s, expected: %s\n", austrdup(s),
+ austrdup(gotdate), austrdup(expdate) );
+ }
}
}
@@ -241,6 +247,30 @@ void Test4059917()
free(myDate);
}
+UBool EqualIgnoreNumberingSystem(UChar* a, UChar* b);
+// This function return true if the sting contains the same value or the
+// numerical values are the same if we ignore the numbering system.
+UBool EqualIgnoreNumberingSystem(UChar* a, UChar* b) {
+ // len1 and len2 may not be the same if one of them are numeric outside BMP.
+ int32_t len1 = u_strlen(a);
+ int32_t len2 = u_strlen(b);
+ UChar32 ch1, ch2;
+ int32_t idx1, idx2;
+ idx1=idx2=0;
+ // U16_NEXT will increment idx1 and idx2 inside the loop.
+ while (idx1 < len1 && idx2 < len2) {
+ U16_NEXT(a, idx1, len1, ch1);
+ U16_NEXT(b, idx2, len2, ch2);
+ if (ch1 != ch2) {
+ int32_t digit1 = u_charDigitValue(ch1);
+ int32_t digit2 = u_charDigitValue(ch2);
+ if (digit1 < 0 || digit1 != digit2) { return false; }
+ }
+ }
+ // only return true if both reach end of the string.
+ return idx1 == len1 && idx2 == len2;
+}
+
void aux917( UDateFormat *fmt, UChar* str)
{
int32_t resultlength, resultlengthneeded;
@@ -266,7 +296,14 @@ void aux917( UDateFormat *fmt, UChar* str)
status = U_ZERO_ERROR;
formatted = myFormatit(fmt, d1);
if( u_strcmp(formatted,str)!=0) {
- log_err("Fail: Want %s Got: %s\n", austrdup(str), austrdup(formatted) );
+ // We may get non-ASCII result back for some locale such as ne_NP
+ // which use numbering systems other than latn
+ if (strcmp("gregorian", ucal_getType(udat_getCalendar(fmt), &status)) != 0) {
+ log_verbose("Skipping Test4059917 when the default date time format is not using gregorian calendar.");
+
+ } else if (!EqualIgnoreNumberingSystem(formatted,str)) {
+ log_err("Fail: Want %s Got: %s\n", austrdup(str), austrdup(formatted) );
+ }
}
free(pat);
}
diff --git a/Build/source/libs/icu/icu-src/source/test/cintltst/cintltst.c b/Build/source/libs/icu/icu-src/source/test/cintltst/cintltst.c
index 86e3b000a8d..7afdb60af5f 100644
--- a/Build/source/libs/icu/icu-src/source/test/cintltst/cintltst.c
+++ b/Build/source/libs/icu/icu-src/source/test/cintltst/cintltst.c
@@ -380,7 +380,10 @@ const char *ctest_dataOutDir()
*/
#if defined (U_TOPBUILDDIR)
{
- dataOutDir = U_TOPBUILDDIR "data"U_FILE_SEP_STRING"out"U_FILE_SEP_STRING;
+ dataOutDir = U_TOPBUILDDIR
+ "data" U_FILE_SEP_STRING
+ "out" U_FILE_SEP_STRING
+ "build" U_FILE_SEP_STRING;
}
#else
diff --git a/Build/source/libs/icu/icu-src/source/test/cintltst/cintltst.vcxproj b/Build/source/libs/icu/icu-src/source/test/cintltst/cintltst.vcxproj
index 251d4fde6bb..0183f3bf032 100644
--- a/Build/source/libs/icu/icu-src/source/test/cintltst/cintltst.vcxproj
+++ b/Build/source/libs/icu/icu-src/source/test/cintltst/cintltst.vcxproj
@@ -127,6 +127,8 @@
<ClCompile Include="utmstest.c" />
<ClCompile Include="cldrtest.c" />
<ClCompile Include="cloctst.c" />
+ <ClCompile Include="ulocaletst.c" />
+ <ClCompile Include="ulocbuildertst.c" />
<ClCompile Include="cposxtst.c" />
<ClCompile Include="crelativedateformattest.c" />
<ClCompile Include="crestst.c" />
diff --git a/Build/source/libs/icu/icu-src/source/test/cintltst/cintltst.vcxproj.filters b/Build/source/libs/icu/icu-src/source/test/cintltst/cintltst.vcxproj.filters
index d39436d4451..3628b095643 100644
--- a/Build/source/libs/icu/icu-src/source/test/cintltst/cintltst.vcxproj.filters
+++ b/Build/source/libs/icu/icu-src/source/test/cintltst/cintltst.vcxproj.filters
@@ -234,6 +234,12 @@
<ClCompile Include="cloctst.c">
<Filter>locales &amp; resources</Filter>
</ClCompile>
+ <ClCompile Include="ulocaletst.c">
+ <Filter>locales &amp; resources</Filter>
+ </ClCompile>
+ <ClCompile Include="ulocbuildertst.c">
+ <Filter>locales &amp; resources</Filter>
+ </ClCompile>
<ClCompile Include="cposxtst.c">
<Filter>locales &amp; resources</Filter>
</ClCompile>
diff --git a/Build/source/libs/icu/icu-src/source/test/cintltst/cldrtest.c b/Build/source/libs/icu/icu-src/source/test/cintltst/cldrtest.c
index 9bd36e208bd..77a2a51584c 100644
--- a/Build/source/libs/icu/icu-src/source/test/cintltst/cldrtest.c
+++ b/Build/source/libs/icu/icu-src/source/test/cintltst/cldrtest.c
@@ -1012,6 +1012,10 @@ static void VerifyTranslation(void) {
log_knownIssue("cldrbug:15355", "ks_Deva day names use chars not in exemplars")) {
end = 0;
}
+ if (uprv_strncmp(currLoc,"kxv",3) == 0 && // Unnecessarily also skips kxv_Orya/kxv_Telu, that is ok for now
+ log_knownIssue("CLDR-17203", "Some day names in kxv(_Deva)? use chars not in exemplars")) {
+ end = 0;
+ }
for (idx = 0; idx < end; idx++) {
const UChar *fromBundleStr = ures_getStringByIndex(resArray, idx, &langSize, &errorCode);
@@ -1049,6 +1053,10 @@ static void VerifyTranslation(void) {
log_knownIssue("cldrbug:15355", "ks_Deva month names use chars not in exemplars")) {
end = 0;
}
+ if (uprv_strncmp(currLoc,"kxv",3) == 0 && // Unnecessarily also skips kxv_Orya/kxv_Telu, that is ok for now
+ log_knownIssue("CLDR-17203", "Some month names in kxv(_Deva)? use chars not in exemplars")) {
+ end = 0;
+ }
for (idx = 0; idx < end; idx++) {
const UChar *fromBundleStr = ures_getStringByIndex(resArray, idx, &langSize, &errorCode);
@@ -1359,6 +1367,14 @@ static void TestCoverage(void){
}
}
+ // ICU-22149: Cover this code path even if the lang bundle is not present
+ UErrorCode localStatus = U_ZERO_ERROR;
+ UChar pattern[20];
+ ulocdata_getLocaleDisplayPattern(uld, pattern, 20, &localStatus);
+ if (U_FAILURE(localStatus) && localStatus != U_MISSING_RESOURCE_ERROR) {
+ log_err("ulocdata_getLocaleDisplayPattern coverage error %s", u_errorName(localStatus));
+ }
+
sub = ulocdata_getNoSubstitute(uld);
ulocdata_setNoSubstitute(uld,sub);
ulocdata_close(uld);
diff --git a/Build/source/libs/icu/icu-src/source/test/cintltst/cloctst.c b/Build/source/libs/icu/icu-src/source/test/cintltst/cloctst.c
index e4f333cdb1a..9490431cd8a 100644
--- a/Build/source/libs/icu/icu-src/source/test/cintltst/cloctst.c
+++ b/Build/source/libs/icu/icu-src/source/test/cintltst/cloctst.c
@@ -604,7 +604,7 @@ static void TestSimpleResourceInfo() {
log_err(" ISO-3 Country code mismatch: %s versus %s\n", austrdup(expected),
austrdup(dataTable[CTRY3][i]));
}
- sprintf(temp2, "%x", (int)uloc_getLCID(testLocale));
+ snprintf(temp2, sizeof(temp2), "%x", (int)uloc_getLCID(testLocale));
if (strcmp(temp2, rawData2[LCID][i]) != 0) {
log_err("LCID mismatch: %s versus %s\n", temp2 , rawData2[LCID][i]);
}
@@ -2508,6 +2508,10 @@ static void TestCanonicalization21749StackUseAfterScope(void)
input, u_errorName(status));
return;
}
+
+ // ICU-22475 test that we don't free an internal buffer twice.
+ status = U_ZERO_ERROR;
+ uloc_canonicalize("ti-defaultgR-lS-z-UK-0P", buffer, UPRV_LENGTHOF(buffer), &status);
}
static void TestDisplayKeywords(void)
@@ -4181,7 +4185,7 @@ const char* const full_data[][3] = {
"pa_PK"
}, {
"pap",
- "pap_Latn_AW",
+ "pap_Latn_CW",
"pap"
}, {
"pau",
@@ -4605,8 +4609,8 @@ const char* const full_data[][3] = {
"am"
}, {
"und_Ethi_ER",
- "am_Ethi_ER",
- "am_ER"
+ "ti_Ethi_ER",
+ "ti_ER"
}, {
"und_FI",
"fi_Latn_FI",
@@ -5337,8 +5341,8 @@ const char* const full_data[][3] = {
"zh_HK"
}, {
"und_AQ",
- "_Latn_AQ",
- "_AQ"
+ "en_Latn_AQ",
+ "en_AQ"
}, {
"und_Zzzz",
"en_Latn_US",
@@ -5361,8 +5365,8 @@ const char* const full_data[][3] = {
"zh_HK"
}, {
"und_Zzzz_AQ",
- "_Latn_AQ",
- "_AQ"
+ "en_Latn_AQ",
+ "en_AQ"
}, {
"und_Latn",
"en_Latn_US",
@@ -5381,12 +5385,12 @@ const char* const full_data[][3] = {
"trv"
}, {
"und_Latn_HK",
- "zh_Latn_HK",
- "zh_Latn_HK"
+ "en_Latn_HK",
+ "en_HK"
}, {
"und_Latn_AQ",
- "_Latn_AQ",
- "_AQ"
+ "en_Latn_AQ",
+ "en_AQ"
}, {
"und_Hans",
"zh_Hans_CN",
@@ -5457,8 +5461,8 @@ const char* const full_data[][3] = {
"zh_Moon_HK"
}, {
"und_Moon_AQ",
- "_Moon_AQ",
- "_Moon_AQ"
+ "en_Moon_AQ",
+ "en_Moon_AQ"
}, {
"es",
"es_Latn_ES",
@@ -6886,6 +6890,10 @@ static void TestIsRightToLeft() {
if(uloc_isRightToLeft("root") || !uloc_isRightToLeft("EN-HEBR")) {
log_err("uloc_isRightToLeft() failed");
}
+ // ICU-22466 Make sure no crash when locale is bogus
+ uloc_isRightToLeft(
+ "uF-Vd_u-VaapoPos-u1-Pos-u1-Pos-u1-Pos-u1-oPos-u1-Pufu1-PuosPos-u1-Pos-u1-Pos-u1-Pzghu1-Pos-u1-PoP-u1@osus-u1");
+ uloc_isRightToLeft("-Xa");
}
typedef struct {
@@ -7043,13 +7051,50 @@ static const UldnItem yi_StdMidLong[] = { // https://unicode-org.atlassian.net/b
{ "ji", TEST_ULOC_LANGUAGE, u"ייִדיש" },
};
+static const UldnItem zh_DiaMidLong[] = {
+ // zh and zh_Hant both have dialect names for the following in ICU 73
+ { "ar_001", TEST_ULDN_LOCALE, u"现代标准阿拉伯语" },
+ { "nl_BE", TEST_ULDN_LOCALE, u"弗拉芒语" },
+ { "ro_MD", TEST_ULDN_LOCALE, u"摩尔多瓦语" },
+ // zh has dialect names for the following in ICU 73
+ { "en_AU", TEST_ULDN_LOCALE, u"澳大利亚英语" },
+ { "en_CA", TEST_ULDN_LOCALE, u"加拿大英语" },
+ { "en_GB", TEST_ULDN_LOCALE, u"英国英语" },
+ { "en_US", TEST_ULDN_LOCALE, u"美国英语" },
+ { "es_419", TEST_ULDN_LOCALE, u"拉ä¸ç¾Žæ´²è¥¿ç­ç‰™è¯­" },
+ { "es_ES", TEST_ULDN_LOCALE, u"欧洲西ç­ç‰™è¯­" },
+ { "es_MX", TEST_ULDN_LOCALE, u"墨西哥西ç­ç‰™è¯­" },
+ { "fr_CA", TEST_ULDN_LOCALE, u"加拿大法语" },
+ { "fr_CH", TEST_ULDN_LOCALE, u"瑞士法语" },
+};
+
+static const UldnItem zh_Hant_DiaMidLong[] = {
+ // zh and zh_Hant both have dialect names for the following in ICU 73
+ { "ar_001", TEST_ULDN_LOCALE, u"ç¾ä»£æ¨™æº–阿拉伯文" },
+ { "nl_BE", TEST_ULDN_LOCALE, u"法蘭德斯文" },
+ { "ro_MD", TEST_ULDN_LOCALE, u"摩爾多瓦文" },
+ // zh_Hant no dialect names for the following in ICU-73,
+ // use standard name
+ { "en_AU", TEST_ULDN_LOCALE, u"英文(澳洲)" },
+ { "en_CA", TEST_ULDN_LOCALE, u"英文(加拿大)" },
+ { "en_GB", TEST_ULDN_LOCALE, u"英文(英國)" },
+ { "en_US", TEST_ULDN_LOCALE, u"英文(美國)" },
+ { "es_419", TEST_ULDN_LOCALE, u"西ç­ç‰™æ–‡ï¼ˆæ‹‰ä¸ç¾Žæ´²ï¼‰" },
+ { "es_ES", TEST_ULDN_LOCALE, u"西ç­ç‰™æ–‡ï¼ˆè¥¿ç­ç‰™ï¼‰" },
+ { "es_MX", TEST_ULDN_LOCALE, u"西ç­ç‰™æ–‡ï¼ˆå¢¨è¥¿å“¥ï¼‰" },
+ { "fr_CA", TEST_ULDN_LOCALE, u"法文(加拿大)" },
+ { "fr_CH", TEST_ULDN_LOCALE, u"法文(瑞士)" },
+};
+
static const UldnLocAndOpts uldnLocAndOpts[] = {
- { "en", optStdMidLong, en_StdMidLong, UPRV_LENGTHOF(en_StdMidLong) },
- { "en", optStdMidShrt, en_StdMidShrt, UPRV_LENGTHOF(en_StdMidShrt) },
- { "en", optDiaMidLong, en_DiaMidLong, UPRV_LENGTHOF(en_DiaMidLong) },
- { "en", optDiaMidShrt, en_DiaMidShrt, UPRV_LENGTHOF(en_DiaMidShrt) },
- { "ro", optStdMidLong, ro_StdMidLong, UPRV_LENGTHOF(ro_StdMidLong) },
- { "yi", optStdMidLong, yi_StdMidLong, UPRV_LENGTHOF(yi_StdMidLong) },
+ { "en", optStdMidLong, en_StdMidLong, UPRV_LENGTHOF(en_StdMidLong) },
+ { "en", optStdMidShrt, en_StdMidShrt, UPRV_LENGTHOF(en_StdMidShrt) },
+ { "en", optDiaMidLong, en_DiaMidLong, UPRV_LENGTHOF(en_DiaMidLong) },
+ { "en", optDiaMidShrt, en_DiaMidShrt, UPRV_LENGTHOF(en_DiaMidShrt) },
+ { "ro", optStdMidLong, ro_StdMidLong, UPRV_LENGTHOF(ro_StdMidLong) },
+ { "yi", optStdMidLong, yi_StdMidLong, UPRV_LENGTHOF(yi_StdMidLong) },
+ { "zh", optDiaMidLong, zh_DiaMidLong, UPRV_LENGTHOF(zh_DiaMidLong) },
+ { "zh_Hant", optDiaMidLong, zh_Hant_DiaMidLong, UPRV_LENGTHOF(zh_Hant_DiaMidLong) },
{ NULL, NULL, NULL, 0 }
};
@@ -7219,6 +7264,10 @@ static void TestCDefaultLocale() {
log_verbose("Skipping TestCDefaultLocale test, as the LANG variable is not set.");
return;
}
+ if (getenv("LC_ALL") != NULL) {
+ log_verbose("Skipping TestCDefaultLocale test, as the LC_ALL variable is set.");
+ return;
+ }
if ((strcmp(env_var, "C") == 0 || strcmp(env_var, "C.UTF-8") == 0) && strcmp(defaultLocale, "en_US_POSIX") != 0) {
log_err("The default locale for LANG=%s should be en_US_POSIX, not %s\n", env_var, defaultLocale);
}
diff --git a/Build/source/libs/icu/icu-src/source/test/cintltst/cnormtst.c b/Build/source/libs/icu/icu-src/source/test/cintltst/cnormtst.c
index 7d9fea6ae81..24946e2eb62 100644
--- a/Build/source/libs/icu/icu-src/source/test/cintltst/cnormtst.c
+++ b/Build/source/libs/icu/icu-src/source/test/cintltst/cnormtst.c
@@ -1048,7 +1048,7 @@ _testIter(const UChar *src, int32_t srcLength,
UBool neededToNormalize, expectNeeded;
errorCode=U_ZERO_ERROR;
- outLimit=out+outLength;
+ outLimit= (out == NULL) ? NULL : out+outLength;
if(forward) {
expect=out;
i=index=0;
@@ -1699,6 +1699,20 @@ TestGetEasyToUseInstance() {
log_err("unorm2_getNFKCCasefoldInstance() did not return an NFKC_Casefold instance (normalized length=%d; %s)\n",
(int)length, u_errorName(errorCode));
}
+
+ errorCode=U_ZERO_ERROR;
+ n2=unorm2_getNFKCSimpleCasefoldInstance(&errorCode);
+ if(U_FAILURE(errorCode)) {
+ log_err_status(errorCode,
+ "unorm2_getNFKCSimpleCasefoldInstance() failed: %s\n",
+ u_errorName(errorCode));
+ return;
+ }
+ length=unorm2_normalize(n2, in, UPRV_LENGTHOF(in), out, UPRV_LENGTHOF(out), &errorCode);
+ if(U_FAILURE(errorCode) || length!=2 || out[0]!=0x20 || out[1]!=0x1e09) {
+ log_err("unorm2_getNFKCCasefoldInstance() did not return an NFKC_Casefold instance (normalized length=%d; %s)\n",
+ (int)length, u_errorName(errorCode));
+ }
}
static void
diff --git a/Build/source/libs/icu/icu-src/source/test/cintltst/cnumtst.c b/Build/source/libs/icu/icu-src/source/test/cintltst/cnumtst.c
index 6448760f2c6..17bfbde3c40 100644
--- a/Build/source/libs/icu/icu-src/source/test/cintltst/cnumtst.c
+++ b/Build/source/libs/icu/icu-src/source/test/cintltst/cnumtst.c
@@ -44,7 +44,7 @@
static const char *tagAssert(const char *f, int32_t l, const char *msg) {
static char _fileline[1000];
- sprintf(_fileline, "%s:%d: ASSERT_TRUE(%s)", f, l, msg);
+ snprintf(_fileline, sizeof(_fileline), "%s:%d: ASSERT_TRUE(%s)", f, l, msg);
return _fileline;
}
@@ -78,7 +78,9 @@ static void TestSciNotationMaxFracCap(void);
static void TestMinIntMinFracZero(void);
static void Test21479_ExactCurrency(void);
static void Test22088_Ethiopic(void);
+static void TestChangingRuleset(void);
static void TestParseWithEmptyCurr(void);
+static void TestDuration(void);
#define TESTCASE(x) addTest(root, &x, "tsformat/cnumtst/" #x)
@@ -122,7 +124,9 @@ void addNumForTest(TestNode** root)
TESTCASE(TestMinIntMinFracZero);
TESTCASE(Test21479_ExactCurrency);
TESTCASE(Test22088_Ethiopic);
+ TESTCASE(TestChangingRuleset);
TESTCASE(TestParseWithEmptyCurr);
+ TESTCASE(TestDuration);
}
/* test Parse int 64 */
@@ -1731,7 +1735,7 @@ static void TestRBNFFormat() {
UParseError perr;
UChar pat[1024];
UChar tempUChars[512];
- UNumberFormat *formats[5];
+ UNumberFormat *formats[4];
int COUNT = UPRV_LENGTHOF(formats);
int i;
@@ -1763,13 +1767,6 @@ static void TestRBNFFormat() {
}
status = U_ZERO_ERROR;
- formats[3] = unum_open(UNUM_DURATION, NULL, 0, "en_US", &perr, &status);
- if (U_FAILURE(status)) {
- log_err_status(status, "unable to open duration %s\n", u_errorName(status));
- return;
- }
-
- status = U_ZERO_ERROR;
u_uastrcpy(pat,
"%standard:\n"
"-x: minus >>;\n"
@@ -1807,7 +1804,7 @@ static void TestRBNFFormat() {
"100,000,000: some huge number;\n");
/* This is to get around some compiler warnings about char * string length. */
u_strcat(pat, tempUChars);
- formats[4] = unum_open(UNUM_PATTERN_RULEBASED, pat, -1, "en_US", &perr, &status);
+ formats[3] = unum_open(UNUM_PATTERN_RULEBASED, pat, -1, "en_US", &perr, &status);
if (U_FAILURE(status)) {
log_err_status(status, "unable to open rulebased pattern -> %s\n", u_errorName(status));
}
@@ -3611,29 +3608,83 @@ static void Test21479_ExactCurrency(void) {
}
static void Test22088_Ethiopic(void) {
- UErrorCode err = U_ZERO_ERROR;
- UNumberFormat* nf1 = unum_open(UNUM_DEFAULT, NULL, 0, "am_ET@numbers=ethi", NULL, &err);
- UNumberFormat* nf2 = unum_open(UNUM_NUMBERING_SYSTEM, NULL, 0, "am_ET@numbers=ethi", NULL, &err);
- UNumberFormat* nf3 = unum_open(UNUM_NUMBERING_SYSTEM, NULL, 0, "en_US", NULL, &err);
+ const struct TestCase {
+ const char* localeID;
+ UNumberFormatStyle style;
+ const UChar* expectedResult;
+ } testCases[] = {
+ { "am_ET@numbers=ethi", UNUM_DEFAULT, u"á»á³á«" },
+ { "am_ET@numbers=ethi", UNUM_NUMBERING_SYSTEM, u"á»á³á«" },
+ { "am_ET@numbers=traditional", UNUM_DEFAULT, u"á»á³á«" },
+ { "am_ET@numbers=traditional", UNUM_NUMBERING_SYSTEM, u"á»á³á«" },
+ { "am_ET", UNUM_NUMBERING_SYSTEM, u"123" }, // make sure default for Ethiopic still works
+ { "en_US", UNUM_NUMBERING_SYSTEM, u"123" }, // make sure non-algorithmic default still works
+ { "ar_SA", UNUM_NUMBERING_SYSTEM, u"١٢٣" }, // make sure non-algorithmic default still works
+ // NOTE: There are NO locales in ICU 72 whose default numbering system is algorithmic!
+ };
+ for (int32_t i = 0; i < UPRV_LENGTHOF(testCases); i++) {
+ char errorMessage[200];
+ UErrorCode err = U_ZERO_ERROR;
+ UNumberFormat* nf = unum_open(testCases[i].style, NULL, 0, testCases[i].localeID, NULL, &err);
+
+ snprintf(errorMessage, 200, "Creation of number formatter for %s failed", testCases[i].localeID);
+ if (assertSuccess(errorMessage, &err)) {
+ UChar result[200];
+
+ unum_formatDouble(nf, 123, result, 200, NULL, &err);
+ snprintf(errorMessage, 200, "Formatting of number for %s failed", testCases[i].localeID);
+ if (assertSuccess(errorMessage, &err)) {
+ snprintf(errorMessage, 200, "Wrong result for %s", testCases[i].localeID);
+ assertUEquals(errorMessage, testCases[i].expectedResult, result);
+ }
+ }
+ unum_close(nf);
+ }
+}
+
+static void TestChangingRuleset(void) {
+ const struct TestCase {
+ const char* localeID;
+ const UChar* rulesetName;
+ const UChar* expectedResult;
+ } testCases[] = {
+ { "en_US", NULL, u"123" },
+ { "en_US", u"%roman-upper", u"CXXIII" },
+ { "en_US", u"%ethiopic", u"á»á³á«" },
+ { "en_US@numbers=roman", NULL, u"CXXIII" },
+ { "en_US@numbers=ethi", NULL, u"á»á³á«" },
+ { "am_ET", NULL, u"123" },
+ { "am_ET", u"%ethiopic", u"á»á³á«" },
+ { "am_ET@numbers=ethi", NULL, u"á»á³á«" },
+ };
- if (assertSuccess("Creation of number formatters failed", &err)) {
- UChar result[200];
-
- unum_formatDouble(nf1, 123, result, 200, NULL, &err);
- assertSuccess("Formatting of number failed", &err);
- assertUEquals("Wrong result with UNUM_DEFAULT", u"á»á³á«", result);
-
- unum_formatDouble(nf2, 123, result, 200, NULL, &err);
- assertSuccess("Formatting of number failed", &err);
- assertUEquals("Wrong result with UNUM_NUMBERING_SYSTEM", u"á»á³á«", result);
+ for (int32_t i = 0; i < UPRV_LENGTHOF(testCases); i++) {
+ char errorMessage[200];
+ const char* rulesetNameString = (testCases[i].rulesetName != NULL) ? austrdup(testCases[i].rulesetName) : "NULL";
+ UErrorCode err = U_ZERO_ERROR;
+ UNumberFormat* nf = unum_open(UNUM_NUMBERING_SYSTEM, NULL, 0, testCases[i].localeID, NULL, &err);
- unum_formatDouble(nf3, 123, result, 200, NULL, &err);
- assertSuccess("Formatting of number failed", &err);
- assertUEquals("Wrong result with UNUM_NUMBERING_SYSTEM and English", u"123", result);
+ snprintf(errorMessage, 200, "Creating of number formatter for %s failed", testCases[i].localeID);
+ if (assertSuccess(errorMessage, &err)) {
+ if (testCases[i].rulesetName != NULL) {
+ unum_setTextAttribute(nf, UNUM_DEFAULT_RULESET, testCases[i].rulesetName, -1, &err);
+ snprintf(errorMessage, 200, "Changing formatter for %s's default ruleset to %s failed", testCases[i].localeID, rulesetNameString);
+ assertSuccess(errorMessage, &err);
+ }
+
+ if (U_SUCCESS(err)) {
+ UChar result[200];
+
+ unum_formatDouble(nf, 123, result, 200, NULL, &err);
+ snprintf(errorMessage, 200, "Formatting of number with %s/%s failed", testCases[i].localeID, rulesetNameString);
+ if (assertSuccess(errorMessage, &err)) {
+ snprintf(errorMessage, 200, "Wrong result for %s/%s", testCases[i].localeID, rulesetNameString);
+ assertUEquals(errorMessage, testCases[i].expectedResult, result);
+ }
+ }
+ }
+ unum_close(nf);
}
- unum_close(nf1);
- unum_close(nf2);
- unum_close(nf3);
}
static void TestParseWithEmptyCurr(void) {
@@ -3779,4 +3830,27 @@ static void TestParseWithEmptyCurr(void) {
}
}
+static void TestDuration(void) {
+ // NOTE: at the moment, UNUM_DURATION is still backed by a set of RBNF rules, which don't handle
+ // showing fractional seconds. This test should be updated or replaced
+ // when https://unicode-org.atlassian.net/browse/ICU-22487 is fixed.
+ double values[] = { 34, 34.5, 1234, 1234.2, 1234.7, 1235, 8434, 8434.5 };
+ const UChar* expectedResults[] = { u"34 sec.", u"34 sec.", u"20:34", u"20:34", u"20:35", u"20:35", u"2:20:34", u"2:20:34" };
+
+ UErrorCode err = U_ZERO_ERROR;
+ UNumberFormat* nf = unum_open(UNUM_DURATION, NULL, 0, "en_US", NULL, &err);
+
+ if (assertSuccess("Failed to create duration formatter", &err)) {
+ UChar actualResult[200];
+
+ for (int32_t i = 0; i < UPRV_LENGTHOF(values); i++) {
+ unum_formatDouble(nf, values[i], actualResult, 200, NULL, &err);
+ if (assertSuccess("Error formatting duration", &err)) {
+ assertUEquals("Wrong formatting result", expectedResults[i], actualResult);
+ }
+ }
+ unum_close(nf);
+ }
+}
+
#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/Build/source/libs/icu/icu-src/source/test/cintltst/crestst.c b/Build/source/libs/icu/icu-src/source/test/cintltst/crestst.c
index 299a51090c6..2ccd2fc98eb 100644
--- a/Build/source/libs/icu/icu-src/source/test/cintltst/crestst.c
+++ b/Build/source/libs/icu/icu-src/source/test/cintltst/crestst.c
@@ -26,7 +26,7 @@
#include "filestrm.h"
#include <stdbool.h>
#include <stdlib.h>
-#include <stdio.h> // for sprintf()
+#include <stdio.h> // for snprintf()
#define RESTEST_HEAP_CHECK 0
@@ -1093,13 +1093,13 @@ static void TestAlgorithmicParentFallback(void) {
UResourceBundle* regularRB = ures_open(NULL, testLocale, &err);
char errorMessage[200];
- sprintf(errorMessage, "Error %s opening resource bundle for locale %s and URES_OPEN_LOCALE_DEFAULT_ROOT", u_errorName(err), testLocale);
+ snprintf(errorMessage, sizeof(errorMessage), "Error %s opening resource bundle for locale %s and URES_OPEN_LOCALE_DEFAULT_ROOT", u_errorName(err), testLocale);
if (assertSuccess(errorMessage, &err)) {
const char* resourceLocale = ures_getLocaleByType(regularRB, ULOC_ACTUAL_LOCALE, &err);
- sprintf(errorMessage, "Error %s getting resource locale for locale %s and URES_OPEN_LOCALE_DEFAULT_ROOT", u_errorName(err), testLocale);
+ snprintf(errorMessage, sizeof(errorMessage), "Error %s getting resource locale for locale %s and URES_OPEN_LOCALE_DEFAULT_ROOT", u_errorName(err), testLocale);
if (assertSuccess(errorMessage, &err)) {
- sprintf(errorMessage, "Mismatch for locale %s and URES_OPEN_LOCALE_DEFAULT_ROOT", testLocale);
+ snprintf(errorMessage, sizeof(errorMessage), "Mismatch for locale %s and URES_OPEN_LOCALE_DEFAULT_ROOT", testLocale);
if (uprv_strcmp(regularExpected, "root") == 0) {
assertEquals(errorMessage, defaultLocaleID, resourceLocale);
} else {
@@ -1112,13 +1112,13 @@ static void TestAlgorithmicParentFallback(void) {
err = U_ZERO_ERROR;
UResourceBundle* noDefaultRB = ures_openNoDefault(NULL, testLocale, &err);
- sprintf(errorMessage, "Error %s opening resource bundle for locale %s and URES_OPEN_LOCALE_ROOT", u_errorName(err), testLocale);
+ snprintf(errorMessage, sizeof(errorMessage), "Error %s opening resource bundle for locale %s and URES_OPEN_LOCALE_ROOT", u_errorName(err), testLocale);
if (assertSuccess(errorMessage, &err)) {
const char* resourceLocale = ures_getLocaleByType(noDefaultRB, ULOC_ACTUAL_LOCALE, &err);
- sprintf(errorMessage, "Error %s getting resource locale for locale %s and URES_OPEN_LOCALE_ROOT", u_errorName(err), testLocale);
+ snprintf(errorMessage, sizeof(errorMessage), "Error %s getting resource locale for locale %s and URES_OPEN_LOCALE_ROOT", u_errorName(err), testLocale);
if (assertSuccess(errorMessage, &err)) {
- sprintf(errorMessage, "Mismatch for locale %s and URES_OPEN_LOCALE_ROOT", testLocale);
+ snprintf(errorMessage, sizeof(errorMessage), "Mismatch for locale %s and URES_OPEN_LOCALE_ROOT", testLocale);
assertEquals(errorMessage, noDefaultExpected, resourceLocale);
}
}
diff --git a/Build/source/libs/icu/icu-src/source/test/cintltst/creststn.c b/Build/source/libs/icu/icu-src/source/test/cintltst/creststn.c
index 133430c1855..3d2e085835c 100644
--- a/Build/source/libs/icu/icu-src/source/test/cintltst/creststn.c
+++ b/Build/source/libs/icu/icu-src/source/test/cintltst/creststn.c
@@ -1,7 +1,7 @@
// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html
/********************************************************************
- * COPYRIGHT:
+ * COPYRIGHT:
* Copyright (c) 1997-2016, International Business Machines Corporation and
* others. All Rights Reserved.
********************************************************************/
@@ -62,7 +62,7 @@ randul()
initialized = true;
}
/* Assume rand has at least 12 bits of precision */
-
+
for (i=0; i<(int32_t)sizeof(l); ++i)
((char*)&l)[i] = (char)((rand() & 0x0FF0) >> 4);
return l;
@@ -166,16 +166,16 @@ typedef enum E_Where E_Where;
} \
} UPRV_BLOCK_MACRO_END
/*#define CONFIRM_ErrorCode(actual,expected) if ((expected)==(actual)) { record_pass(); } else { record_fail(); log_err("%s returned %s instead of %s\n", action, myErrorName(actual), myErrorName(expected)); } */
-static void
-CONFIRM_ErrorCode(UErrorCode actual,UErrorCode expected)
+static void
+CONFIRM_ErrorCode(UErrorCode actual,UErrorCode expected)
{
- if ((expected)==(actual))
- {
- record_pass();
- } else {
- record_fail();
+ if ((expected)==(actual))
+ {
+ record_pass();
+ } else {
+ record_fail();
/*log_err("%s returned %s instead of %s\n", action, myErrorName(actual), myErrorName(expected)); */
- log_err("returned %s instead of %s\n", myErrorName(actual), myErrorName(expected));
+ log_err("returned %s instead of %s\n", myErrorName(actual), myErrorName(expected));
}
}
@@ -224,7 +224,7 @@ static void TestCLDRVersion(void);
void addNEWResourceBundleTest(TestNode** root)
{
addTest(root, &TestErrorCodes, "tsutil/creststn/TestErrorCodes");
-#if !UCONFIG_NO_FILE_IO && !UCONFIG_NO_LEGACY_CONVERSION
+#if !UCONFIG_NO_FILE_IO && !UCONFIG_NO_LEGACY_CONVERSION
addTest(root, &TestEmptyBundle, "tsutil/creststn/TestEmptyBundle");
addTest(root, &TestConstruction1, "tsutil/creststn/TestConstruction1");
addTest(root, &TestResourceBundles, "tsutil/creststn/TestResourceBundles");
@@ -235,8 +235,8 @@ void addNEWResourceBundleTest(TestNode** root)
addTest(root, &TestErrorConditions, "tsutil/creststn/TestErrorConditions");
addTest(root, &TestDecodedBundle, "tsutil/creststn/TestDecodedBundle");
addTest(root, &TestResourceLevelAliasing, "tsutil/creststn/TestResourceLevelAliasing");
- addTest(root, &TestDirectAccess, "tsutil/creststn/TestDirectAccess");
- addTest(root, &TestTicket9804, "tsutil/creststn/TestTicket9804");
+ addTest(root, &TestDirectAccess, "tsutil/creststn/TestDirectAccess");
+ addTest(root, &TestTicket9804, "tsutil/creststn/TestTicket9804");
addTest(root, &TestXPath, "tsutil/creststn/TestXPath");
addTest(root, &TestCLDRStyleAliases, "tsutil/creststn/TestCLDRStyleAliases");
addTest(root, &TestFallbackCodes, "tsutil/creststn/TestFallbackCodes");
@@ -248,7 +248,7 @@ void addNEWResourceBundleTest(TestNode** root)
addTest(root, &TestGetVersion, "tsutil/creststn/TestGetVersion");
addTest(root, &TestGetVersionColl, "tsutil/creststn/TestGetVersionColl");
addTest(root, &TestAliasConflict, "tsutil/creststn/TestAliasConflict");
- addTest(root, &TestGetKeywordValues, "tsutil/creststn/TestGetKeywordValues");
+ addTest(root, &TestGetKeywordValues, "tsutil/creststn/TestGetKeywordValues");
addTest(root, &TestGetFunctionalEquivalent,"tsutil/creststn/TestGetFunctionalEquivalent");
addTest(root, &TestJB3763, "tsutil/creststn/TestJB3763");
}
@@ -323,7 +323,7 @@ static void TestErrorCodes(void) {
#if !UCONFIG_NO_COLLATION
/** Now, with the collation bundle **/
-
+
/* first bundle should return fallback warning */
r = ures_open(U_ICUDATA_COLL, "sr_YU_VOJVODINA", &status);
checkStatus(__LINE__, U_USING_FALLBACK_WARNING, status);
@@ -376,12 +376,12 @@ static void TestAliasConflict(void) {
he = ures_open(NULL, "he", &status);
iw = ures_open(NULL, "iw", &status);
- if(U_FAILURE(status)) {
+ if(U_FAILURE(status)) {
log_err_status(status, "Failed to get resource with %s\n", myErrorName(status));
}
ures_close(iw);
result = ures_getStringByKey(he, "ExemplarCharacters", &resultLen, &status);
- if(U_FAILURE(status) || result == NULL) {
+ if(U_FAILURE(status) || result == NULL) {
log_err_status(status, "Failed to get resource ExemplarCharacters with %s\n", myErrorName(status));
}
ures_close(he);
@@ -390,7 +390,7 @@ static void TestAliasConflict(void) {
for(i = 0; i < size; i++) {
status = U_ZERO_ERROR;
norway = ures_open(NULL, norwayNames[i], &status);
- if(U_FAILURE(status)) {
+ if(U_FAILURE(status)) {
log_err_status(status, "Failed to get resource with %s for %s\n", myErrorName(status), norwayNames[i]);
continue;
}
@@ -404,10 +404,10 @@ static void TestAliasConflict(void) {
}
static void TestDecodedBundle(){
-
+
UErrorCode error = U_ZERO_ERROR;
-
- UResourceBundle* resB;
+
+ UResourceBundle* resB;
const UChar* srcFromRes;
int32_t len;
@@ -634,14 +634,14 @@ static void TestNewTypes() {
"\\\\u206A-\\\\u206F \\\\uFEFF \\\\uFFF9-\\uFFFC \\U0001D173-\\U0001D17A \\U000F0000-\\U000FFFFD "
"\\U00100000-\\U0010FFFD \\uFDD0-\\uFDEF \\uFFFE-\\uFFFF \\U0001FFFE-\\U0001FFFF \\U0002FFFE-\\U0002FFFF "
);
- strcat(pattern,
+ strcat(pattern,
"\\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 \\uD800-\\uDFFF \\\\uFFF9 \\\\uFFFA \\\\uFFFB "
"\\uFFFC \\uFFFD \\u2FF0-\\u2FFB \\u0340 \\u0341 \\\\u200E \\\\u200F \\\\u202A \\\\u202B \\\\u202C "
);
- strcat(pattern,
+ strcat(pattern,
"\\\\u202D \\\\u202E \\\\u206A \\\\u206B \\\\u206C \\\\u206D \\\\u206E \\\\u206F \\U000E0001 \\U000E0020-\\U000E007F "
"]"
);
@@ -714,7 +714,7 @@ static void TestNewTypes() {
log_err("Could not get testincludeUTF resource from testtypes bundle. Error: %s\n",u_errorName(status));
}else{
/* open the file */
- const char* cp = NULL;
+ const char* cp = NULL;
UCHARBUF* ucbuf = ucbuf_open(testDataFileName,&cp,false,false,&status);
len = 0;
if(U_SUCCESS(status)){
@@ -801,7 +801,7 @@ static void TestEmptyTypes() {
log_data_err("Could not load testdata.dat %s \n",myErrorName(status));
return;
}
-
+
theBundle = ures_open(testdatapath, "testtypes", &status);
CONFIRM_ErrorCode(status, U_ZERO_ERROR);
@@ -930,7 +930,7 @@ static void TestEmptyBundle(){
UErrorCode status = U_ZERO_ERROR;
const char* testdatapath=NULL;
UResourceBundle *resb=0, *dResB=0;
-
+
testdatapath=loadTestData(&status);
if(U_FAILURE(status))
{
@@ -942,8 +942,8 @@ static void TestEmptyBundle(){
if(U_SUCCESS(status)){
dResB = ures_getByKey(resb,"test",dResB,&status);
if(status!= U_MISSING_RESOURCE_ERROR){
- log_err("Did not get the expected error from an empty resource bundle. Expected : %s Got: %s\n",
- u_errorName(U_MISSING_RESOURCE_ERROR),u_errorName(status));
+ log_err("Did not get the expected error from an empty resource bundle. Expected : %s Got: %s\n",
+ u_errorName(U_MISSING_RESOURCE_ERROR),u_errorName(status));
}
}
ures_close(dResB);
@@ -951,7 +951,7 @@ static void TestEmptyBundle(){
}
static void TestBinaryCollationData(){
-#if !UCONFIG_NO_COLLATION
+#if !UCONFIG_NO_COLLATION
UErrorCode status=U_ZERO_ERROR;
const char* locale="te";
const char* testdatapath;
@@ -983,7 +983,7 @@ static void TestBinaryCollationData(){
if(U_SUCCESS(status)){
CONFIRM_ErrorCode(status, U_ZERO_ERROR);
CONFIRM_INT_EQ(ures_getType(coll), URES_TABLE);
- binColl=ures_getByKey(coll, "%%CollationBin", binColl, &status);
+ binColl=ures_getByKey(coll, "%%CollationBin", binColl, &status);
if(U_SUCCESS(status)){
CONFIRM_ErrorCode(status, U_ZERO_ERROR);
CONFIRM_INT_EQ(ures_getType(binColl), URES_BINARY);
@@ -1020,9 +1020,9 @@ static void TestAPI() {
UResourceBundle *teRes = NULL;
UResourceBundle *teFillin=NULL;
UResourceBundle *teFillin2=NULL;
-
+
log_verbose("Testing ures_openU()......\n");
-
+
testdatapath=loadTestData(&status);
if(U_FAILURE(status))
{
@@ -1088,7 +1088,7 @@ static void TestAPI() {
log_err("ERROR: calling getNextString where index out of bounds should return U_INDEX_OUTOFBOUNDS_ERROR, Got : %s\n",
myErrorName(status));
}
- ures_resetIterator(teRes);
+ ures_resetIterator(teRes);
/*Test ures_getNextResource() where resource is table*/
status=U_ZERO_ERROR;
#if (U_CHARSET_FAMILY == U_ASCII_FAMILY)
@@ -1184,8 +1184,8 @@ static void TestErrorConditions(){
UResourceBundle *teFillin2=NULL;
uint8_t *binResult = NULL;
int32_t resultLen;
-
-
+
+
testdatapath = loadTestData(&status);
if(U_FAILURE(status))
{
@@ -1195,7 +1195,7 @@ static void TestErrorConditions(){
len = (int32_t)strlen(testdatapath);
utestdatapath = (UChar*) malloc(sizeof(UChar) *(len+10));
u_uastrcpy(utestdatapath, testdatapath);
-
+
/*Test ures_openU with status != U_ZERO_ERROR*/
log_verbose("Testing ures_openU() with status != U_ZERO_ERROR.....\n");
status=U_ILLEGAL_ARGUMENT_ERROR;
@@ -1246,17 +1246,17 @@ static void TestErrorConditions(){
}
/*Test ures_getType() with UResourceBundle = NULL should return URES_NONE==-1*/
status=U_ZERO_ERROR;
- if(ures_getType(NULL) != URES_NONE){
+ if(ures_getType(NULL) != URES_NONE){
log_err("ERROR: ures_getType() should return URES_NONE when UResourceBundle=NULL. Got =%d\n", ures_getType(NULL));
}
/*Test ures_getKey() with UResourceBundle = NULL*/
status=U_ZERO_ERROR;
- if(ures_getKey(NULL) != NULL){
+ if(ures_getKey(NULL) != NULL){
log_err("ERROR: ures_getKey() should return NULL when UResourceBundle=NULL. Got =%d\n", ures_getKey(NULL));
}
/*Test ures_hasNext() with UResourceBundle = NULL*/
status=U_ZERO_ERROR;
- if(ures_hasNext(NULL) != false){
+ if(ures_hasNext(NULL) != false){
log_err("ERROR: ures_hasNext() should return false when UResourceBundle=NULL. Got =%d\n", ures_hasNext(NULL));
}
/*Test ures_get() with UResourceBundle = NULL*/
@@ -1264,47 +1264,47 @@ static void TestErrorConditions(){
if(ures_getStringByKey(NULL, "string_only_in_te", &resultLen, &status) != NULL && status != U_ILLEGAL_ARGUMENT_ERROR){
log_err("ERROR: ures_get is supposed to fail when UResourceBundle = NULL. Expected: errorCode = U_ILLEGAL_ARGUMENT_ERROR, Got: errorCode=%s\n",
myErrorName(status));
- }
+ }
/*Test ures_getByKey() with UResourceBundle = NULL*/
status=U_ZERO_ERROR;
teFillin=ures_getByKey(NULL, "string_only_in_te", teFillin, &status);
if( teFillin != NULL && status != U_ILLEGAL_ARGUMENT_ERROR){
log_err("ERROR: ures_getByKey is supposed to fail when UResourceBundle = NULL. Expected: errorCode = U_ILLEGAL_ARGUMENT_ERROR, Got: errorCode=%s\n",
myErrorName(status));
- }
+ }
/*Test ures_getByKey() with status != U_ZERO_ERROR*/
teFillin=ures_getByKey(NULL, "string_only_in_te", teFillin, &status);
if(teFillin != NULL ){
log_err("ERROR: ures_getByKey is supposed to fail when errorCode != U_ZERO_ERROR\n");
- }
+ }
/*Test ures_getStringByKey() with UResourceBundle = NULL*/
status=U_ZERO_ERROR;
if(ures_getStringByKey(NULL, "string_only_in_te", &len, &status) != NULL && status != U_ILLEGAL_ARGUMENT_ERROR){
log_err("ERROR: ures_getStringByKey is supposed to fail when UResourceBundle = NULL. Expected: errorCode = U_ILLEGAL_ARGUMENT_ERROR, Got: errorCode=%s\n",
myErrorName(status));
- }
+ }
/*Test ures_getStringByKey() with status != U_ZERO_ERROR*/
if(ures_getStringByKey(teRes, "string_only_in_te", &len, &status) != NULL){
log_err("ERROR: ures_getStringByKey is supposed to fail when status != U_ZERO_ERROR. Expected: errorCode = U_ILLEGAL_ARGUMENT_ERROR, Got: errorCode=%s\n",
myErrorName(status));
- }
+ }
/*Test ures_getString() with UResourceBundle = NULL*/
status=U_ZERO_ERROR;
if(ures_getString(NULL, &len, &status) != NULL && status != U_ILLEGAL_ARGUMENT_ERROR){
log_err("ERROR: ures_getString is supposed to fail when UResourceBundle = NULL. Expected: errorCode = U_ILLEGAL_ARGUMENT_ERROR, Got: errorCode=%s\n",
myErrorName(status));
- }
+ }
/*Test ures_getString() with status != U_ZERO_ERROR*/
if(ures_getString(teRes, &len, &status) != NULL){
log_err("ERROR: ures_getString is supposed to fail when status != U_ZERO_ERROR. Expected: errorCode = U_ILLEGAL_ARGUMENT_ERROR, Got: errorCode=%s\n",
myErrorName(status));
- }
+ }
/*Test ures_getBinary() with UResourceBundle = NULL*/
status=U_ZERO_ERROR;
if(ures_getBinary(NULL, &len, &status) != NULL && status != U_ILLEGAL_ARGUMENT_ERROR){
log_err("ERROR: ures_getBinary is supposed to fail when UResourceBundle = NULL. Expected: errorCode = U_ILLEGAL_ARGUMENT_ERROR, Got: errorCode=%s\n",
myErrorName(status));
- }
+ }
/*Test ures_getBinary(0 status != U_ILLEGAL_ARGUMENT_ERROR*/
status=U_ZERO_ERROR;
coll = ures_getByKey(teRes, "collations", coll, &status);
@@ -1316,7 +1316,7 @@ static void TestErrorConditions(){
if(binResult != NULL){
log_err("ERROR: ures_getBinary() with status != U_ZERO_ERROR is supposed to fail\n");
}
-
+
/*Test ures_getNextResource() with status != U_ZERO_ERROR*/
teFillin=ures_getNextResource(teRes, teFillin, &status);
if(teFillin != NULL){
@@ -1326,7 +1326,7 @@ static void TestErrorConditions(){
status=U_ZERO_ERROR;
teFillin=ures_getNextResource(NULL, teFillin, &status);
if(teFillin != NULL || status != U_ILLEGAL_ARGUMENT_ERROR){
- log_err("ERROR: ures_getNextResource() with UResourceBundle = NULL is supposed to fail. Expected : U_IILEGAL_ARGUMENT_ERROR, Got : %s\n",
+ log_err("ERROR: ures_getNextResource() with UResourceBundle = NULL is supposed to fail. Expected : U_IILEGAL_ARGUMENT_ERROR, Got : %s\n",
myErrorName(status));
}
/*Test ures_getNextString with errorCode != U_ZERO_ERROR*/
@@ -1361,7 +1361,7 @@ static void TestErrorConditions(){
if(status != U_ILLEGAL_ARGUMENT_ERROR){
log_err("ERROR: ures_getByIndex() with UResourceBundle=NULL is supposed to fail\n Expected: U_ILLEGAL_ARGUMENT_ERROR, Got: %s\n",
myErrorName(status));
- }
+ }
/*Test ures_getStringByIndex with errorCode != U_ZERO_ERROR*/
status=U_ZERO_ERROR;
teFillin=ures_getByKey(teRes, "array_only_in_te", teFillin, &status);
@@ -1376,21 +1376,21 @@ static void TestErrorConditions(){
if(value != NULL || status != U_ILLEGAL_ARGUMENT_ERROR){
log_err("ERROR: ures_getStringByIndex() with UResourceBundle=NULL is supposed to fail\n Expected: U_ILLEGAL_ARGUMENT_ERROR, Got: %s\n",
myErrorName(status));
- }
+ }
/*Test ures_getStringByIndex with UResourceBundle = NULL */
status=U_ZERO_ERROR;
value=(UChar*)ures_getStringByIndex(teFillin, 9999, &len, &status);
if(value != NULL || status != U_MISSING_RESOURCE_ERROR){
log_err("ERROR: ures_getStringByIndex() with index that is too big is supposed to fail\n Expected: U_MISSING_RESOURCE_ERROR, Got: %s\n",
myErrorName(status));
- }
+ }
/*Test ures_getInt() where UResourceBundle = NULL */
status=U_ZERO_ERROR;
if(ures_getInt(NULL, &status) != -1 && status != U_ILLEGAL_ARGUMENT_ERROR){
log_err("ERROR: ures_getInt() with UResourceBundle = NULL should fail. Expected: U_IILEGAL_ARGUMENT_ERROR, Got: %s\n",
myErrorName(status));
}
- /*Test ures_getInt() where status != U_ZERO_ERROR */
+ /*Test ures_getInt() where status != U_ZERO_ERROR */
if(ures_getInt(teRes, &status) != -1){
log_err("ERROR: ures_getInt() with errorCode != U_ZERO_ERROR should fail\n");
}
@@ -1401,7 +1401,7 @@ static void TestErrorConditions(){
ures_close(binColl);
ures_close(teRes);
free(utestdatapath);
-
+
}
@@ -1410,11 +1410,11 @@ static void TestGetVersion(){
UVersionInfo maxVersionArray = {0x50, 0xff, 0xcf, 0xcf};
UVersionInfo versionArray;
UErrorCode status= U_ZERO_ERROR;
- UResourceBundle* resB = NULL;
+ UResourceBundle* resB = NULL;
int i=0, j = 0;
int locCount = uloc_countAvailable();
const char *locName = "root";
-
+
log_verbose("The ures_getVersion tests begin : \n");
for(j = -1; j < locCount; j++) {
@@ -1433,7 +1433,7 @@ static void TestGetVersion(){
if (versionArray[i] < minVersionArray[i] ||
versionArray[i] > maxVersionArray[i])
{
- log_err("Testing ures_getVersion(%-5s) - unexpected result: %d.%d.%d.%d\n",
+ log_err("Testing ures_getVersion(%-5s) - unexpected result: %d.%d.%d.%d\n",
locName, versionArray[0], versionArray[1], versionArray[2], versionArray[3]);
break;
}
@@ -1449,7 +1449,7 @@ static void TestGetVersionColl(){
UVersionInfo maxVersionArray = {0x50, 0x80, 0xcf, 0xcf};
UVersionInfo versionArray;
UErrorCode status= U_ZERO_ERROR;
- UResourceBundle* resB = NULL;
+ UResourceBundle* resB = NULL;
UEnumeration *locs= NULL;
int i=0;
const char *locName = "root";
@@ -1488,7 +1488,7 @@ static void TestGetVersionColl(){
if (versionArray[i] < minVersionArray[i] ||
versionArray[i] > maxVersionArray[i])
{
- log_err("Testing ures_getVersion(%-5s) - unexpected result: %d.%d.%d.%d\n",
+ log_err("Testing ures_getVersion(%-5s) - unexpected result: %d.%d.%d.%d\n",
locName, versionArray[0], versionArray[1], versionArray[2], versionArray[3]);
break;
}
@@ -1575,7 +1575,7 @@ static void TestConstruction1()
log_data_err("Could not load testdata.dat %s \n",myErrorName(status));
return;
}
-
+
log_verbose("Testing ures_open()......\n");
empty = ures_open(testdatapath, "testempty", &status);
@@ -1715,7 +1715,7 @@ static UBool testTag(const char* frag,
expected_resource_status = U_USING_FALLBACK_WARNING;
log_verbose("%s[%d]::%s: in<%d:%s> inherits<%d:%s>. actual_bundle=%s\n",
- param[i].name,
+ param[i].name,
i,
frag,
j,
@@ -1860,7 +1860,7 @@ static UBool testTag(const char* frag,
}
- /*--------------2dArray------------------------------------------------- */
+ /*--------------2dArray------------------------------------------------- */
strcpy(tag,"array_2d_");
strcat(tag,frag);
@@ -1977,7 +1977,7 @@ static UBool testTag(const char* frag,
CONFIRM_INT_EQ(bundleType, URES_TABLE);
tag_count=ures_getSize(tags);
- CONFIRM_INT_GE((int32_t)tag_count, (int32_t)0);
+ CONFIRM_INT_GE((int32_t)tag_count, (int32_t)0);
for(idx=0; idx <tag_count; idx++){
UResourceBundle *tagelement=NULL;
@@ -2156,7 +2156,7 @@ static void TestFallback()
subResource = ures_getByKey(fr_FR, "layout", NULL, &status);
if(status != U_USING_DEFAULT_WARNING)
{
- log_data_err("Expected U_USING_DEFAULT_ERROR when trying to get layout from fr_FR, got %s\n",
+ log_data_err("Expected U_USING_DEFAULT_ERROR when trying to get layout from fr_FR, got %s\n",
u_errorName(status));
}
@@ -2167,10 +2167,10 @@ static void TestFallback()
junk = tres_getString(fr_FR, -1, "ExemplarCharacters", &resultLen, &status);
if(status != U_USING_FALLBACK_WARNING)
{
- log_data_err("Expected U_USING_FALLBACK_ERROR when trying to get ExemplarCharacters from fr_FR, got %d\n",
+ log_data_err("Expected U_USING_FALLBACK_ERROR when trying to get ExemplarCharacters from fr_FR, got %d\n",
status);
}
-
+
status = U_ZERO_ERROR;
ures_close(fr_FR);
@@ -2181,7 +2181,7 @@ static void TestFallback()
UResourceBundle* myResB = ures_open(NULL,"no_NO_NY",&err);
UResourceBundle* resLocID = ures_getByKey(myResB, "Version", NULL, &err);
const UChar* version = NULL;
- static const UChar versionStr[] = u"42"; // 42 in nn_NO or in a parent bundle/root
+ static const UChar versionStr[] = u"44.1"; // 44.1 in nn_NO or in a parent bundle/root
if(U_FAILURE(err)) {
log_data_err("Expected success when trying to test no_NO_NY aliased to nn_NO for Version "
@@ -2222,7 +2222,7 @@ static void TestFallback()
static void TestResourceLevelAliasing(void) {
UErrorCode status = U_ZERO_ERROR;
UResourceBundle *aliasB = NULL, *tb = NULL;
- UResourceBundle *en = NULL, *uk = NULL, *testtypes = NULL;
+ UResourceBundle *en = NULL, *uk = NULL, *testtypes = NULL;
const char* testdatapath = NULL;
const UChar *string = NULL, *sequence = NULL;
/*const uint8_t *binary = NULL, *binSequence = NULL;*/
@@ -2236,7 +2236,7 @@ static void TestResourceLevelAliasing(void) {
log_data_err("Could not load testdata.dat %s \n",myErrorName(status));
return;
}
-
+
aliasB = ures_open(testdatapath, "testaliases", &status);
if(U_FAILURE(status))
@@ -2273,22 +2273,22 @@ static void TestResourceLevelAliasing(void) {
if((uk == NULL) || U_FAILURE(status)) {
log_err_status(status, "Couldn't findResource('ja/calendar/gregorian/DateTimePatterns/2') err %s\n", u_errorName(status));
goto cleanup;
- }
-
+ }
+
sequence = tres_getString(uk, -1, NULL, &seqLen, &status);
-
+
tb = ures_getByKey(aliasB, "referencingalias", tb, &status);
string = tres_getString(tb, -1, NULL, &strLen, &status);
-
+
if(seqLen != strLen || u_strncmp(sequence, string, seqLen) != 0) {
log_err("Referencing alias didn't get the right string (1)\n");
}
-
+
string = tres_getString(aliasB, -1, "referencingalias", &strLen, &status);
if(seqLen != strLen || u_strncmp(sequence, string, seqLen) != 0) {
log_err("Referencing alias didn't get the right string (2)\n");
}
-
+
checkStatus(__LINE__, U_ZERO_ERROR, status);
tb = ures_getByKey(aliasB, "DateTimePatterns", tb, &status);
checkStatus(__LINE__, U_ZERO_ERROR, status);
@@ -2296,7 +2296,7 @@ static void TestResourceLevelAliasing(void) {
checkStatus(__LINE__, U_ZERO_ERROR, status);
string = tres_getString(tb, -1, NULL, &strLen, &status);
checkStatus(__LINE__, U_ZERO_ERROR, status);
-
+
if(U_FAILURE(status)) {
log_err("%s trying to get string via separate getters\n", u_errorName(status));
} else if(seqLen != strLen || u_strncmp(sequence, string, seqLen) != 0) {
@@ -2309,18 +2309,18 @@ static void TestResourceLevelAliasing(void) {
s = buffer;
uk = ures_findSubResource(testtypes, s, uk, &status);
sequence = tres_getString(uk, -1, NULL, &seqLen, &status);
-
+
tb = ures_getByKey(aliasB, "simplealias", tb, &status);
string = tres_getString(tb, -1, NULL, &strLen, &status);
-
+
if(U_FAILURE(status) || seqLen != strLen || u_strncmp(sequence, string, seqLen) != 0) {
log_err("Referencing alias didn't get the right string (4)\n");
}
-
+
/* test indexed aliasing */
-
+
en = ures_findResource("/ICUDATA-zone/en/zoneStrings/3/0", en, &status);
-
+
if(status != U_MISSING_RESOURCE_ERROR) {
log_err("Index lookup in a table resource didn't get U_MISSING_RESOURCE_ERROR!\n");
}
@@ -2334,7 +2334,7 @@ static void TestResourceLevelAliasing(void) {
"KeyAlias2PDT",
"KeyAlias3LosAngeles"
};
-
+
const char* strings[] = {
"America/Los_Angeles",
"Pacific Standard Time",
@@ -2362,7 +2362,7 @@ static void TestResourceLevelAliasing(void) {
}
}
for(i = 0; i < UPRV_LENGTHOF(strings); i++) {
- result = tres_getString(tb, i, NULL, &resultLen, &status);
+ result = tres_getString(tb, i, NULL, &resultLen, &status);
if(U_FAILURE(status)){
log_err("(2) Fetching the resource with key %s failed. Error: %s\n", keys[i], u_errorName(status));
continue;
@@ -2432,7 +2432,7 @@ static void TestDirectAccess(void) {
UErrorCode status = U_ZERO_ERROR;
UResourceBundle *t = NULL, *t2 = NULL;
const char* key = NULL;
-
+
char buffer[100];
char *s;
/*const char* testdatapath=loadTestData(&status);
@@ -2440,7 +2440,7 @@ static void TestDirectAccess(void) {
log_err("Could not load testdata.dat %s \n",myErrorName(status));
return;
}*/
-
+
t = ures_findResource("/testdata/te/zoneStrings/3/2", t, &status);
if(U_FAILURE(status)) {
log_data_err("Couldn't access indexed resource, error %s\n", u_errorName(status));
@@ -2461,7 +2461,7 @@ static void TestDirectAccess(void) {
log_err("Got a strange key, expected NULL, got %s\n", key);
}
}
-
+
t = ures_findResource("ja/ExemplarCharacters", t, &status);
if(U_FAILURE(status)) {
log_data_err("Couldn't access keyed resource, error %s\n", u_errorName(status));
@@ -2472,14 +2472,14 @@ static void TestDirectAccess(void) {
log_err("Got a strange key, expected 'ExemplarCharacters', got %s\n", key);
}
}
-
+
t2 = ures_open(U_ICUDATA_LANG, "sr", &status);
if(U_FAILURE(status)) {
log_err_status(status, "Couldn't open 'sr' resource bundle, error %s\n", u_errorName(status));
log_data_err("No 'sr', no test - you have bigger problems than testing direct access. "
"You probably have no data! Aborting this test\n");
}
-
+
if(U_SUCCESS(status)) {
strcpy(buffer, "Languages/hr");
s = buffer;
@@ -2654,14 +2654,14 @@ static void TestGetFunctionalEquivalentOf(const char *path, const char *resName,
resName, keyword, inLocale,
&gotAvail, truncate, &status);
if(U_FAILURE(status) || (len <= 0)) {
- log_err_status(status, "FAIL: got len %d, err %s on #%d: %c\t%s\t%s\n",
+ log_err_status(status, "FAIL: got len %d, err %s on #%d: %c\t%s\t%s\n",
len, u_errorName(status),
i/3,expectAvail?'t':'f', inLocale, expectLocale);
} else {
log_verbose("got: %c %s\n", expectAvail?'t':'f',equivLocale);
if((gotAvail != expectAvail) || strcmp(equivLocale, expectLocale)) {
- log_err("FAIL: got avail=%c, loc=%s but expected #%d: %c\t%s\t-> loc=%s\n",
+ log_err("FAIL: got avail=%c, loc=%s but expected #%d: %c\t%s\t-> loc=%s\n",
gotAvail?'t':'f', equivLocale,
i/3,
expectAvail?'t':'f', inLocale, expectLocale);
@@ -2710,6 +2710,31 @@ static void TestGetFunctionalEquivalent(void) {
"t", "nl@collation=stroke", "root",
"f", "nl_NL@collation=stroke", "root",
"f", "nl_NL_EEXT@collation=stroke", "root",
+ /* Additions to test aliased locales */
+ "f", "yue_HK", "zh@collation=stroke",
+ "f", "yue_Hant", "zh@collation=stroke",
+ "f", "yue_Hant_HK", "zh@collation=stroke",
+ "f", "yue@collation=stroke", "zh@collation=stroke",
+ "f", "yue@collation=pinyin", "zh",
+ "f", "yue_CN", "zh",
+ "f", "yue_Hans", "zh",
+ "f", "yue_Hans_CN", "zh",
+ "f", "yue_Hans@collation=pinyin", "zh",
+ "f", "yue_Hans@collation=stroke", "zh@collation=stroke",
+ "f", "mo", "mo",
+ "t", "no", "no",
+ "t", "nb", "no",
+ "t", "nn", "no",
+ "f", "ars", "ar",
+ /* Additions to test locales without resources */
+ "f", "en_CN", "root",
+ "f", "zh_Hant_CN", "zh@collation=stroke",
+ "f", "zh_Hant_US", "zh@collation=stroke",
+ "f", "zh_Hans_US", "zh",
+ "f", "yue_TW", "zh@collation=stroke",
+ "f", "yue_US", "zh@collation=stroke",
+ "f", "ja_CN", "ja",
+ "f", "ja_US", "ja",
NULL
};
#endif /* !UCONFIG_NO_COLLATION */
@@ -2738,7 +2763,7 @@ static void TestGetFunctionalEquivalent(void) {
UBool gotAvail = false;
len = ures_getFunctionalEquivalent(equivLocale, 255, U_ICUDATA_COLL,
- "calendar", "calendar", "ar_EG@calendar=islamic",
+ "calendar", "calendar", "ar_EG@calendar=islamic",
&gotAvail, false, &status);
(void)len; /* Suppress set but not used warning. */
@@ -2759,14 +2784,14 @@ static void TestXPath(void) {
const UChar* result = NULL;
const UChar expResult[] = { 0x0063, 0x006F, 0x0072, 0x0072, 0x0065, 0x0063, 0x0074, 0x0000 }; /* "correct" */
/*const UChar expResult[] = { 0x0074, 0x0065, 0x0069, 0x006E, 0x0064, 0x0065, 0x0073, 0x0074, 0x0000 }; *//*teindest*/
-
+
const char *testdatapath=loadTestData(&status);
if(U_FAILURE(status))
{
log_data_err("Could not load testdata.dat %s \n",myErrorName(status));
return;
}
-
+
log_verbose("Testing ures_open()......\n");
rb = ures_open(testdatapath, "te_IN", &status);
@@ -2843,12 +2868,12 @@ static void TestCLDRStyleAliases(void) {
resource[0]='a';
resource[1]='0'+i;
resource[2]=0;
- /* instead of sprintf(resource, "a%i", i); */
+ /* instead of snprintf(resource, "a%i", i); */
a = ures_getByKeyWithFallback(alias, resource, a, &status);
result = tres_getString(a, -1, NULL, &len, &status);
u_charsToUChars(expects[i], expected, (int32_t)strlen(expects[i])+1);
if(U_FAILURE(status) || !result || u_strcmp(result, expected)) {
- log_err("CLDR style aliases failed resource with name \"%s\" resource, exp %s, got %S (%s)\n", resource, expects[i], result, myErrorName(status));
+ log_err("CLDR style aliases failed resource with name \"%s\" resource, exp %s, got %S (%s)\n", resource, expects[i], result, myErrorName(status));
status = U_ZERO_ERROR;
}
}
@@ -3085,7 +3110,7 @@ static void TestCLDRVersion(void) {
log_info("ulocdata_getCLDRVersion() returned: '%s'\n", tmp);
}
-
+
/* setup from resource bundle */
{
UResourceBundle *res;
@@ -3115,12 +3140,12 @@ static void TestCLDRVersion(void) {
u_versionToString(testExpect,tmp);
- log_verbose("(data) ExpectCLDRVersionAtLeast { %s }\n", tmp);
+ log_verbose("(data) ExpectCLDRVersionAtLeast { %s }\n", tmp);
if(memcmp(cldrVersion, testExpect, sizeof(UVersionInfo)) < 0) {
log_data_err("CLDR version is too old, expect at least %s.", tmp);
}
u_versionToString(testCurrent,tmp);
- log_verbose("(data) CurrentCLDRVersion { %s }\n", tmp);
+ log_verbose("(data) CurrentCLDRVersion { %s }\n", tmp);
switch(memcmp(cldrVersion, testCurrent, sizeof(UVersionInfo))) {
case 0: break; /* OK- current. */
case -1: log_info("CLDR version is behind 'current' (for testdata/root.txt) %s. Some things may fail.\n", tmp); break;
diff --git a/Build/source/libs/icu/icu-src/source/test/cintltst/cucdapi.c b/Build/source/libs/icu/icu-src/source/test/cintltst/cucdapi.c
index fb78f08e506..4f998601766 100644
--- a/Build/source/libs/icu/icu-src/source/test/cintltst/cucdapi.c
+++ b/Build/source/libs/icu/icu-src/source/test/cintltst/cucdapi.c
@@ -73,7 +73,9 @@ void TestUScriptCodeAPI(){
"asfdasd", "5464", "12235",
/* test the last index */
"zyyy", "YI",
- NULL
+ /* test other cases that are ambiguous (script alias vs language tag) */
+ "han", "mro", "nko", "old-hungarian", "new-tai-lue",
+ NULL
};
UScriptCode expected[] ={
/* locales should return */
@@ -95,7 +97,10 @@ void TestUScriptCodeAPI(){
USCRIPT_TAGBANWA, USCRIPT_ARABIC,
/* bogus names should return invalid code */
USCRIPT_INVALID_CODE, USCRIPT_INVALID_CODE, USCRIPT_INVALID_CODE,
+ /* test the last index */
USCRIPT_COMMON, USCRIPT_YI,
+ /* test other cases that are ambiguous (script alias vs language tag) */
+ USCRIPT_HAN, USCRIPT_MRO, USCRIPT_NKO, USCRIPT_OLD_HUNGARIAN, USCRIPT_NEW_TAI_LUE,
};
UErrorCode err = U_ZERO_ERROR;
diff --git a/Build/source/libs/icu/icu-src/source/test/cintltst/cucdtst.c b/Build/source/libs/icu/icu-src/source/test/cintltst/cucdtst.c
index f8af66d16a4..e50c6924c72 100644
--- a/Build/source/libs/icu/icu-src/source/test/cintltst/cucdtst.c
+++ b/Build/source/libs/icu/icu-src/source/test/cintltst/cucdtst.c
@@ -895,10 +895,10 @@ static void TestIdentifier()
const UChar32 sampleNonJavaIDStart[] = {0x0020, 0x2030, 0x0082};
const UChar32 sampleJavaIDPart[] = {0x005f, 0x0032, 0x0045};
const UChar32 sampleNonJavaIDPart[] = {0x2030, 0x2020, 0x0020};
- const UChar32 sampleUnicodeIDStart[] = {0x0250, 0x00e2, 0x0061};
- const UChar32 sampleNonUnicodeIDStart[] = {0x2000, 0x000a, 0x2019};
- const UChar32 sampleUnicodeIDPart[] = {0x005f, 0x0032, 0x0045};
- const UChar32 sampleNonUnicodeIDPart[] = {0x2030, 0x00a3, 0x0020};
+ const UChar32 sampleUnicodeIDStart[] = {0x0250, 0x00e2, 0x0061, 0x1885, 0x212e, 0x309b};
+ const UChar32 sampleNonUnicodeIDStart[] = {0x2000, 0x000a, 0x2019, 0x2e2f};
+ const UChar32 sampleUnicodeIDPart[] = {0x005f, 0x0032, 0x0045, 0x1886, 0x212e, 0x309c};
+ const UChar32 sampleNonUnicodeIDPart[] = {0x2030, 0x00a3, 0x0020, 0x2019, 0x2e2f};
const UChar32 sampleIDIgnore[] = {0x0006, 0x0010, 0x206b, 0x85};
const UChar32 sampleNonIDIgnore[] = {0x0075, 0x00a3, 0x0061};
@@ -3022,8 +3022,8 @@ TestNumericProperties(void) {
{ 0x4e07, U_NT_NUMERIC, 10000. },
{ 0x12432, U_NT_NUMERIC, 216000. },
{ 0x12433, U_NT_NUMERIC, 432000. },
+ { 0x5146, U_NT_NUMERIC, 1000000. },
{ 0x4ebf, U_NT_NUMERIC, 100000000. },
- { 0x5146, U_NT_NUMERIC, 1000000000000. },
{ -1, U_NT_NONE, U_NO_NUMERIC_VALUE },
{ 0x61, U_NT_NONE, U_NO_NUMERIC_VALUE },
{ 0x3000, U_NT_NONE, U_NO_NUMERIC_VALUE },
diff --git a/Build/source/libs/icu/icu-src/source/test/cintltst/cutiltst.c b/Build/source/libs/icu/icu-src/source/test/cintltst/cutiltst.c
index 5f43c48ad28..20b65c8f767 100644
--- a/Build/source/libs/icu/icu-src/source/test/cintltst/cutiltst.c
+++ b/Build/source/libs/icu/icu-src/source/test/cintltst/cutiltst.c
@@ -17,6 +17,8 @@
#include "cintltst.h"
void addLocaleTest(TestNode**);
+void addULocaleTest(TestNode**);
+void addLocaleBuilderTest(TestNode**);
void addCLDRTest(TestNode**);
void addUnicodeTest(TestNode**);
void addUStringTest(TestNode**);
@@ -41,6 +43,8 @@ void addUtility(TestNode** root)
addTrie2Test(root);
addUCPTrieTest(root);
addLocaleTest(root);
+ addLocaleBuilderTest(root);
+ addULocaleTest(root);
addCLDRTest(root);
addUnicodeTest(root);
addUStringTest(root);
diff --git a/Build/source/libs/icu/icu-src/source/test/cintltst/nccbtst.c b/Build/source/libs/icu/icu-src/source/test/cintltst/nccbtst.c
index 88a1b2f223b..0f5817f70d0 100644
--- a/Build/source/libs/icu/icu-src/source/test/cintltst/nccbtst.c
+++ b/Build/source/libs/icu/icu-src/source/test/cintltst/nccbtst.c
@@ -77,7 +77,7 @@ static void printUSeqErr(const UChar* a, int len)
static void setNuConvTestName(const char *codepage, const char *direction)
{
- sprintf(gNuConvTestName, "[testing %s %s Unicode, InputBufSiz=%d, OutputBufSiz=%d]",
+ snprintf(gNuConvTestName, sizeof(gNuConvTestName), "[testing %s %s Unicode, InputBufSiz=%d, OutputBufSiz=%d]",
codepage,
direction,
(int)gInBufferSize,
@@ -2755,8 +2755,8 @@ UBool testConvertFromUnicode(const UChar *source, int sourceLen, const uint8_t
offset_str[0] = 0;
for(p = junkout;p<targ;p++)
{
- sprintf(junk + strlen(junk), "0x%02x, ", (0xFF) & (unsigned int)*p);
- sprintf(offset_str + strlen(offset_str), "0x%02x, ", (0xFF) & (unsigned int)junokout[p-junkout]);
+ snprintf(junk + strlen(junk), sizeof(junk)-strlen(junk), "0x%02x, ", (0xFF) & (unsigned int)*p);
+ snprintf(offset_str + strlen(offset_str), sizeof(offset_str) - strlen(offset_str), "0x%02x, ", (0xFF) & (unsigned int)junokout[p-junkout]);
}
log_verbose(junk);
@@ -2951,8 +2951,8 @@ UBool testConvertToUnicode( const uint8_t *source, int sourcelen, const UChar *e
for(p = junkout;p<targ;p++)
{
- sprintf(junk + strlen(junk), "0x%04x, ", (0xFFFF) & (unsigned int)*p);
- sprintf(offset_str + strlen(offset_str), "0x%04x, ", (0xFFFF) & (unsigned int)junokout[p-junkout]);
+ snprintf(junk + strlen(junk), sizeof(junk)-strlen(junk), "0x%04x, ", (0xFFFF) & (unsigned int)*p);
+ snprintf(offset_str + strlen(offset_str), sizeof(offset_str)-strlen(offset_str), "0x%04x, ", (0xFFFF) & (unsigned int)junokout[p-junkout]);
}
log_verbose(junk);
@@ -3129,8 +3129,8 @@ UBool testConvertFromUnicodeWithContext(const UChar *source, int sourceLen, con
offset_str[0] = 0;
for(p = junkout;p<targ;p++)
{
- sprintf(junk + strlen(junk), "0x%02x, ", (0xFF) & (unsigned int)*p);
- sprintf(offset_str + strlen(offset_str), "0x%02x, ", (0xFF) & (unsigned int)junokout[p-junkout]);
+ snprintf(junk + strlen(junk), sizeof(junk)-strlen(junk), "0x%02x, ", (0xFF) & (unsigned int)*p);
+ snprintf(offset_str + strlen(offset_str), sizeof(offset_str)-strlen(offset_str), "0x%02x, ", (0xFF) & (unsigned int)junokout[p-junkout]);
}
log_verbose(junk);
@@ -3308,8 +3308,8 @@ UBool testConvertToUnicodeWithContext( const uint8_t *source, int sourcelen, con
for(p = junkout;p<targ;p++)
{
- sprintf(junk + strlen(junk), "0x%04x, ", (0xFFFF) & (unsigned int)*p);
- sprintf(offset_str + strlen(offset_str), "0x%04x, ", (0xFFFF) & (unsigned int)junokout[p-junkout]);
+ snprintf(junk + strlen(junk), sizeof(junk)-strlen(junk), "0x%04x, ", (0xFFFF) & (unsigned int)*p);
+ snprintf(offset_str + strlen(offset_str), sizeof(offset_str)-strlen(offset_str), "0x%04x, ", (0xFFFF) & (unsigned int)junokout[p-junkout]);
}
log_verbose(junk);
diff --git a/Build/source/libs/icu/icu-src/source/test/cintltst/ncnvfbts.c b/Build/source/libs/icu/icu-src/source/test/cintltst/ncnvfbts.c
index a986f68f62a..1aded8e4eaf 100644
--- a/Build/source/libs/icu/icu-src/source/test/cintltst/ncnvfbts.c
+++ b/Build/source/libs/icu/icu-src/source/test/cintltst/ncnvfbts.c
@@ -121,7 +121,7 @@ void addTestConverterFallBack(TestNode** root)
static void setNuConvTestName(const char *codepage, const char *direction)
{
- sprintf(gNuConvTestName, "[Testing %s %s Unicode, InputBufSiz=%d, OutputBufSiz=%d]",
+ snprintf(gNuConvTestName, sizeof(gNuConvTestName), "[Testing %s %s Unicode, InputBufSiz=%d, OutputBufSiz=%d]",
codepage,
direction,
(int)gInBufferSize,
@@ -236,8 +236,8 @@ static UBool testConvertFromUnicode(const UChar *source, int sourceLen, const u
offset_str[0] = 0;
for(p = junkout;p<targ;p++)
{
- sprintf(junk + uprv_strlen(junk), "0x%02x, ", (0xFF) & (unsigned int)*p);
- sprintf(offset_str + strlen(offset_str), "0x%02x, ", (0xFF) & (unsigned int)junokout[p-junkout]);
+ snprintf(junk + uprv_strlen(junk), sizeof(junk)-uprv_strlen(junk), "0x%02x, ", (0xFF) & (unsigned int)*p);
+ snprintf(offset_str + strlen(offset_str), sizeof(offset_str)-strlen(offset_str), "0x%02x, ", (0xFF) & (unsigned int)junokout[p-junkout]);
}
log_verbose(junk);
@@ -398,8 +398,8 @@ static UBool testConvertToUnicode( const uint8_t *source, int sourcelen, const U
for(p = junkout;p<targ;p++)
{
- sprintf(junk + strlen(junk), "0x%04x, ", (0xFFFF) & (unsigned int)*p);
- sprintf(offset_str + strlen(offset_str), "0x%04x, ", (0xFFFF) & (unsigned int)junokout[p-junkout]);
+ snprintf(junk + strlen(junk), sizeof(junk)-strlen(junk), "0x%04x, ", (0xFFFF) & (unsigned int)*p);
+ snprintf(offset_str + strlen(offset_str), sizeof(offset_str)-strlen(offset_str), "0x%04x, ", (0xFFFF) & (unsigned int)junokout[p-junkout]);
}
log_verbose(junk);
diff --git a/Build/source/libs/icu/icu-src/source/test/cintltst/ncnvtst.c b/Build/source/libs/icu/icu-src/source/test/cintltst/ncnvtst.c
index 3d41b0f56d4..0f84b86fe2b 100644
--- a/Build/source/libs/icu/icu-src/source/test/cintltst/ncnvtst.c
+++ b/Build/source/libs/icu/icu-src/source/test/cintltst/ncnvtst.c
@@ -56,7 +56,7 @@ static UBool testConvertToU( const uint8_t *source, int sourcelen, const UChar *
static void setNuConvTestName(const char *codepage, const char *direction)
{
- sprintf(gNuConvTestName, "[Testing %s %s Unicode, InputBufSiz=%d, OutputBufSiz=%d]",
+ snprintf(gNuConvTestName, sizeof(gNuConvTestName), "[Testing %s %s Unicode, InputBufSiz=%d, OutputBufSiz=%d]",
codepage,
direction,
(int)gInBufferSize,
@@ -1290,8 +1290,8 @@ static UBool testConvertFromU( const UChar *source, int sourceLen, const uint8_
offset_str[0] = 0;
for(ptr = junkout;ptr<targ;ptr++)
{
- sprintf(junk + strlen(junk), "0x%02x, ", (0xFF) & (unsigned int)*ptr);
- sprintf(offset_str + strlen(offset_str), "0x%02x, ", (0xFF) & (unsigned int)junokout[ptr-junkout]);
+ snprintf(junk + strlen(junk), sizeof(junk)-strlen(junk), "0x%02x, ", (0xFF) & (unsigned int)*ptr);
+ snprintf(offset_str + strlen(offset_str), sizeof(offset_str)-strlen(offset_str), "0x%02x, ", (0xFF) & (unsigned int)junokout[ptr-junkout]);
}
log_verbose(junk);
@@ -1467,8 +1467,8 @@ static UBool testConvertToU( const uint8_t *source, int sourcelen, const UChar *
for(ptr = junkout;ptr<targ;ptr++)
{
- sprintf(junk + strlen(junk), "0x%04x, ", (0xFFFF) & (unsigned int)*ptr);
- sprintf(offset_str + strlen(offset_str), "0x%04x, ", (0xFFFF) & (unsigned int)junokout[ptr-junkout]);
+ snprintf(junk + strlen(junk), sizeof(junk)-strlen(junk), "0x%04x, ", (0xFFFF) & (unsigned int)*ptr);
+ snprintf(offset_str + strlen(offset_str), sizeof(offset_str)-strlen(offset_str), "0x%04x, ", (0xFFFF) & (unsigned int)junokout[ptr-junkout]);
}
log_verbose(junk);
diff --git a/Build/source/libs/icu/icu-src/source/test/cintltst/nucnvtst.c b/Build/source/libs/icu/icu-src/source/test/cintltst/nucnvtst.c
index d1b55c4480e..9bf835bcbcc 100644
--- a/Build/source/libs/icu/icu-src/source/test/cintltst/nucnvtst.c
+++ b/Build/source/libs/icu/icu-src/source/test/cintltst/nucnvtst.c
@@ -344,7 +344,7 @@ void addTestNewConvert(TestNode** root)
static void setNuConvTestName(const char *codepage, const char *direction)
{
- sprintf(gNuConvTestName, "[Testing %s %s Unicode, InputBufSiz=%d, OutputBufSiz=%d]",
+ snprintf(gNuConvTestName, sizeof(gNuConvTestName), "[Testing %s %s Unicode, InputBufSiz=%d, OutputBufSiz=%d]",
codepage,
direction,
(int)gInBufferSize,
@@ -456,8 +456,8 @@ static ETestConvertResult testConvertFromU( const UChar *source, int sourceLen,
junk[0] = 0;
offset_str[0] = 0;
for(ptr = junkout;ptr<targ;ptr++) {
- sprintf(junk + strlen(junk), "0x%02x, ", (int)(0xFF & *ptr));
- sprintf(offset_str + strlen(offset_str), "0x%02x, ", (int)(0xFF & junokout[ptr-junkout]));
+ snprintf(junk + strlen(junk), sizeof(junk)-strlen(junk), "0x%02x, ", (int)(0xFF & *ptr));
+ snprintf(offset_str + strlen(offset_str), sizeof(offset_str)-strlen(offset_str), "0x%02x, ", (int)(0xFF & junokout[ptr-junkout]));
}
log_verbose(junk);
@@ -619,8 +619,8 @@ static ETestConvertResult testConvertToU( const uint8_t *source, int sourcelen,
for(ptr = junkout;ptr<targ;ptr++)
{
- sprintf(junk + strlen(junk), "0x%04x, ", (0xFFFF) & (unsigned int)*ptr);
- sprintf(offset_str + strlen(offset_str), "0x%04x, ", (0xFFFF) & (unsigned int)junokout[ptr-junkout]);
+ snprintf(junk + strlen(junk), sizeof(junk)-strlen(junk), "0x%04x, ", (0xFFFF) & (unsigned int)*ptr);
+ snprintf(offset_str + strlen(offset_str), sizeof(offset_str)-strlen(offset_str), "0x%04x, ", (0xFFFF) & (unsigned int)junokout[ptr-junkout]);
}
log_verbose(junk);
diff --git a/Build/source/libs/icu/icu-src/source/test/cintltst/putiltst.c b/Build/source/libs/icu/icu-src/source/test/cintltst/putiltst.c
index 805e76bc0d6..ee19b5804b8 100644
--- a/Build/source/libs/icu/icu-src/source/test/cintltst/putiltst.c
+++ b/Build/source/libs/icu/icu-src/source/test/cintltst/putiltst.c
@@ -503,7 +503,7 @@ static const char * dump_binline(uint8_t *bytes) {
static char buf[512];
int32_t i;
for(i=0;i<13;i++) {
- sprintf(buf+(i*3), "%02x ", bytes[i]);
+ snprintf(buf+(i*3), sizeof(buf)-(i*3), "%02x ", bytes[i]);
}
return buf;
}
diff --git a/Build/source/libs/icu/icu-src/source/test/cintltst/spooftest.c b/Build/source/libs/icu/icu-src/source/test/cintltst/spooftest.c
index 4243a1eb7c2..64562bcbc47 100644
--- a/Build/source/libs/icu/icu-src/source/test/cintltst/spooftest.c
+++ b/Build/source/libs/icu/icu-src/source/test/cintltst/spooftest.c
@@ -546,6 +546,26 @@ static void TestUSpoofCAPI(void) {
TEST_TEARDOWN;
/*
+ * uspoof_areBidiConfusable()
+ */
+ TEST_SETUP
+ int32_t checkResults;
+
+ checkResults = uspoof_areBidiConfusable(sc, UBIDI_LTR, scLatin, -1, scMixed, -1, &status);
+ TEST_ASSERT_SUCCESS(status);
+ TEST_ASSERT_EQ(USPOOF_MIXED_SCRIPT_CONFUSABLE, checkResults);
+
+ checkResults = uspoof_areBidiConfusable(sc, UBIDI_LTR, goodGreek, -1, scLatin, -1, &status);
+ TEST_ASSERT_SUCCESS(status);
+ TEST_ASSERT_EQ(0, checkResults);
+
+ checkResults = uspoof_areBidiConfusable(sc, UBIDI_LTR, lll_Latin_a, -1, lll_Latin_b, -1, &status);
+ TEST_ASSERT_SUCCESS(status);
+ TEST_ASSERT_EQ(USPOOF_SINGLE_SCRIPT_CONFUSABLE, checkResults);
+
+ TEST_TEARDOWN;
+
+ /*
* areConfusableUTF8
*/
TEST_SETUP
@@ -577,6 +597,38 @@ static void TestUSpoofCAPI(void) {
TEST_TEARDOWN;
+ /*
+ * areBidiConfusableUTF8
+ */
+ TEST_SETUP
+ int32_t checkResults;
+ char s1[200];
+ char s2[200];
+
+
+ u_strToUTF8(s1, sizeof(s1), NULL, scLatin, -1, &status);
+ u_strToUTF8(s2, sizeof(s2), NULL, scMixed, -1, &status);
+ TEST_ASSERT_SUCCESS(status);
+ checkResults = uspoof_areBidiConfusableUTF8(sc, UBIDI_LTR, s1, -1, s2, -1, &status);
+ TEST_ASSERT_SUCCESS(status);
+ TEST_ASSERT_EQ(USPOOF_MIXED_SCRIPT_CONFUSABLE, checkResults);
+
+ u_strToUTF8(s1, sizeof(s1), NULL, goodGreek, -1, &status);
+ u_strToUTF8(s2, sizeof(s2), NULL, scLatin, -1, &status);
+ TEST_ASSERT_SUCCESS(status);
+ checkResults = uspoof_areBidiConfusableUTF8(sc, UBIDI_LTR, s1, -1, s2, -1, &status);
+ TEST_ASSERT_SUCCESS(status);
+ TEST_ASSERT_EQ(0, checkResults);
+
+ u_strToUTF8(s1, sizeof(s1), NULL, lll_Latin_a, -1, &status);
+ u_strToUTF8(s2, sizeof(s2), NULL, lll_Latin_b, -1, &status);
+ TEST_ASSERT_SUCCESS(status);
+ checkResults = uspoof_areBidiConfusableUTF8(sc, UBIDI_LTR, s1, -1, s2, -1, &status);
+ TEST_ASSERT_SUCCESS(status);
+ TEST_ASSERT_EQ(USPOOF_SINGLE_SCRIPT_CONFUSABLE, checkResults);
+
+ TEST_TEARDOWN;
+
/*
* getSkeleton
@@ -602,6 +654,31 @@ static void TestUSpoofCAPI(void) {
TEST_TEARDOWN;
+
+ /*
+ * getBidiSkeleton
+ */
+
+ TEST_SETUP
+ UChar dest[100];
+ int32_t skelLength;
+
+ skelLength = uspoof_getBidiSkeleton(sc, UBIDI_LTR, lll_Latin_a, -1, dest, UPRV_LENGTHOF(dest), &status);
+ TEST_ASSERT_SUCCESS(status);
+ TEST_ASSERT_EQ(0, u_strcmp(lll_Skel, dest));
+ TEST_ASSERT_EQ(u_strlen(lll_Skel), skelLength);
+
+ skelLength = uspoof_getBidiSkeletonUTF8(sc, UBIDI_LTR, goodLatinUTF8, -1, (char *)dest,
+ UPRV_LENGTHOF(dest), &status);
+ TEST_ASSERT_SUCCESS(status);
+
+ skelLength = uspoof_getBidiSkeleton(sc, UBIDI_LTR, lll_Latin_a, -1, NULL, 0, &status);
+ TEST_ASSERT_EQ(U_BUFFER_OVERFLOW_ERROR, status);
+ TEST_ASSERT_EQ(3, skelLength);
+ status = U_ZERO_ERROR;
+
+ TEST_TEARDOWN;
+
/*
* get Inclusion and Recommended sets
*/
diff --git a/Build/source/libs/icu/icu-src/source/test/cintltst/sprpdata.c b/Build/source/libs/icu/icu-src/source/test/cintltst/sprpdata.c
index 4bbdc5fab6b..62388796ef1 100644
--- a/Build/source/libs/icu/icu-src/source/test/cintltst/sprpdata.c
+++ b/Build/source/libs/icu/icu-src/source/test/cintltst/sprpdata.c
@@ -141,8 +141,8 @@ getValues(uint32_t result, int32_t* value, UBool* isIndex){
}
if((result>>2) == _SPREP_MAX_INDEX_VALUE){
type = USPREP_DELETE;
- isIndex =false;
- value = 0;
+ *isIndex = false;
+ *value = 0;
}
}
return type;
diff --git a/Build/source/libs/icu/icu-src/source/test/cintltst/tracetst.c b/Build/source/libs/icu/icu-src/source/test/cintltst/tracetst.c
index 87d417f8fe8..9e43b7d003c 100644
--- a/Build/source/libs/icu/icu-src/source/test/cintltst/tracetst.c
+++ b/Build/source/libs/icu/icu-src/source/test/cintltst/tracetst.c
@@ -227,17 +227,17 @@ static void TestTraceAPI() {
/* verify that set/get of tracing functions returns what was set. */
- {
+ if (originalTContext != NULL) {
UTraceEntry *e;
UTraceExit *x;
UTraceData *d;
const void *context;
const void *newContext = (const char *)originalTContext + 1;
-
+
TEST_ASSERT(originalTEntryFunc != testTraceEntry);
TEST_ASSERT(originalTExitFunc != testTraceExit);
TEST_ASSERT(originalTDataFunc != testTraceData);
-
+
utrace_setFunctions(newContext, testTraceEntry, testTraceExit, testTraceData);
utrace_getFunctions(&context, &e, &x, &d);
TEST_ASSERT(e == testTraceEntry);
@@ -288,9 +288,15 @@ static void TestTraceAPI() {
TEST_ASSERT(U_SUCCESS(status));
pseudo_ucnv_close(cnv);
#endif
- TEST_ASSERT(gTraceEntryCount > 0);
- TEST_ASSERT(gTraceExitCount > 0);
- TEST_ASSERT(gTraceDataCount > 0);
+ if (originalTContext == NULL) {
+ TEST_ASSERT(gTraceEntryCount == 0);
+ TEST_ASSERT(gTraceExitCount == 0);
+ TEST_ASSERT(gTraceDataCount == 0);
+ } else {
+ TEST_ASSERT(gTraceEntryCount > 0);
+ TEST_ASSERT(gTraceExitCount > 0);
+ TEST_ASSERT(gTraceDataCount > 0);
+ }
TEST_ASSERT(gFnNameError == false);
TEST_ASSERT(gFnFormatError == false);
}
diff --git a/Build/source/libs/icu/icu-src/source/test/cintltst/ucptrietest.c b/Build/source/libs/icu/icu-src/source/test/cintltst/ucptrietest.c
index b2c41ed34f8..1a75a3a2f0d 100644
--- a/Build/source/libs/icu/icu-src/source/test/cintltst/ucptrietest.c
+++ b/Build/source/libs/icu/icu-src/source/test/cintltst/ucptrietest.c
@@ -125,7 +125,7 @@ testTrieGetRanges(const char *testName, const UCPTrie *trie, const UMutableCPTri
// No need to go from each iteration start to the very end.
int32_t innerLoopCount;
- sprintf(name, "%s/%s(%s) min=U+%04lx", typeName, optionName, testName, (long)start);
+ snprintf(name, sizeof(name), "%s/%s(%s) min=U+%04lx", typeName, optionName, testName, (long)start);
// Skip over special values and low ranges.
for (i = 0; i < countCheckRanges && checkRanges[i].limit <= start; ++i) {}
@@ -718,7 +718,7 @@ trieTestGolden(const char *testName,
const char *testdatapath = loadSourceTestData(&status);
char goldendatapath[512];
// note: snprintf always writes a NUL terminator.
- snprintf(goldendatapath, 512, "%scodepointtrie%s%s.toml",
+ snprintf(goldendatapath, sizeof(goldendatapath), "%scodepointtrie%s%s.toml",
testdatapath, U_FILE_SEP_STRING, testName);
// Write the data into a tmpfile (memstream is not portable)
diff --git a/Build/source/libs/icu/icu-src/source/test/cintltst/udatatst.c b/Build/source/libs/icu/icu-src/source/test/cintltst/udatatst.c
index b10d886c1b3..dc3e8463e58 100644
--- a/Build/source/libs/icu/icu-src/source/test/cintltst/udatatst.c
+++ b/Build/source/libs/icu/icu-src/source/test/cintltst/udatatst.c
@@ -1157,7 +1157,7 @@ static void TestICUDataName()
}
/* Only major number is needed. */
- sprintf(expectDataName, "%s%d%c",
+ snprintf(expectDataName, sizeof(expectDataName), "%s%d%c",
"icudt",
(int)icuVersion[0],
typeChar);
@@ -1333,7 +1333,7 @@ static const struct {
/* EUC-TW (3-byte) conversion table file without extension */
{"ibm-964_P110-1999", "cnv", ucnv_swap},
/* GB 18030 (4-byte) conversion table file without extension */
- {"gb18030", "cnv", ucnv_swap},
+ {"gb18030-2022", "cnv", ucnv_swap},
/* MBCS conversion table file with extension */
{"*test4x", "cnv", ucnv_swap},
/*
@@ -1626,7 +1626,7 @@ TestSwapCase(UDataMemory *pData, const char *name,
static void U_CALLCONV
printErrorToString(void *context, const char *fmt, va_list args) {
- vsprintf((char *)context, fmt, args);
+ vsnprintf((char *)context, 100, fmt, args);
}
#if !UCONFIG_NO_FILE_IO && !UCONFIG_NO_LEGACY_CONVERSION
diff --git a/Build/source/libs/icu/icu-src/source/test/cintltst/ulocaletst.c b/Build/source/libs/icu/icu-src/source/test/cintltst/ulocaletst.c
new file mode 100644
index 00000000000..6d3fae84c72
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/cintltst/ulocaletst.c
@@ -0,0 +1,285 @@
+// © 2023 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/ctest.h"
+#include "unicode/uloc.h"
+#include "unicode/ulocale.h"
+#include "cintltst.h"
+#include "cmemory.h"
+#include "cstring.h"
+
+#define WHERE __FILE__ ":" XLINE(__LINE__) " "
+#define XLINE(s) LINE(s)
+#define LINE(s) #s
+
+#define TESTCASE(name) addTest(root, &name, "tsutil/ulocaletst/" #name)
+
+enum {
+ LANGUAGE = 0,
+ SCRIPT,
+ REGION,
+ VAR,
+ NAME,
+ BASENAME,
+};
+static const char* const rawData[][6] = {
+ { "en", "", "US", "", "en_US", "en_US"},
+ { "fr", "", "FR", "", "fr_FR", "fr_FR"},
+ { "ca", "", "ES", "", "ca_ES", "ca_ES"},
+ { "el", "", "GR", "", "el_GR", "el_GR"},
+ { "no", "", "NO", "NY", "no_NO_NY", "no_NO_NY"},
+ { "it", "", "", "", "it", "it"},
+ { "xx", "", "YY", "", "xx_YY", "xx_YY"},
+ { "zh", "Hans", "CN", "", "zh_Hans_CN", "zh_Hans_CN"},
+ { "zh", "Hans", "CN", "", "zh_Hans_CN", "zh_Hans_CN"},
+ { "x-klingon", "Latn", "ZX", "", "x-klingon_Latn_ZX.utf32be@special", "x-klingon_Latn_ZX.utf32be@special"},
+};
+
+static void TestBasicGetters() {
+ for (int32_t i = 0; i < UPRV_LENGTHOF(rawData); i++) {
+ UErrorCode status = U_ZERO_ERROR;
+ ULocale* l = ulocale_openForLocaleID(rawData[i][NAME], -1, &status);
+ if (assertSuccess(WHERE "ulocale_openForLocaleID()", &status)) {
+ assertEquals(WHERE "ulocale_getLanguage()", rawData[i][LANGUAGE], ulocale_getLanguage(l));
+ assertEquals(WHERE "ulocale_getScript()", rawData[i][SCRIPT], ulocale_getScript(l));
+ assertEquals(WHERE "ulocale_getRegion()", rawData[i][REGION], ulocale_getRegion(l));
+ assertEquals(WHERE "ulocale_getVariant()", rawData[i][VAR], ulocale_getVariant(l));
+ assertEquals(WHERE "ulocale_getLocaleID()", rawData[i][NAME], ulocale_getLocaleID(l));
+ assertEquals(WHERE "ulocale_getBaseName()", rawData[i][BASENAME], ulocale_getBaseName(l));
+ ulocale_close(l);
+ }
+ }
+}
+
+static void VerifyMatch(const char* localeID, const char* tag) {
+ UErrorCode status = U_ZERO_ERROR;
+ ULocale* fromID = ulocale_openForLocaleID(localeID, -1, &status);
+ if (assertSuccess(WHERE "ulocale_openForLocaleID()", &status)) {
+ ULocale* fromTag = ulocale_openForLanguageTag(tag, -1, &status);
+ if (assertSuccess(WHERE "ulocale_openForLanguageTag()", &status)) {
+ assertEquals(tag, ulocale_getLocaleID(fromID), ulocale_getLocaleID(fromTag));
+ ulocale_close(fromTag);
+ }
+ ulocale_close(fromID);
+ }
+}
+
+static void TestForLanguageTag() {
+ VerifyMatch("en_US", "en-US");
+ VerifyMatch("en_GB_OXENDICT", "en-GB-oed");
+ VerifyMatch("af@calendar=coptic;t=ar-i0-handwrit;x=foo", "af-t-ar-i0-handwrit-u-ca-coptic-x-foo");
+ VerifyMatch("en_GB", "en-GB");
+ VerifyMatch("en_GB@1=abc-efg;a=xyz", "en-GB-1-abc-efg-a-xyz"); // ext
+ VerifyMatch("sl__1994_BISKE_ROZAJ", "sl-rozaj-biske-1994"); // var
+
+ UErrorCode status = U_ZERO_ERROR;
+ ULocale* result_ill = ulocale_openForLanguageTag("!", -1, &status);
+ assertIntEquals("!", U_ILLEGAL_ARGUMENT_ERROR, status);
+ assertPtrEquals("!", NULL, result_ill);
+ ulocale_close(result_ill);
+
+ VerifyMatch("", NULL);
+
+ // ICU-21433
+ VerifyMatch("__1994_BISKE_ROZAJ", "und-1994-biske-rozaj");
+ VerifyMatch("de__1994_BISKE_ROZAJ", "de-1994-biske-rozaj");
+ VerifyMatch("@x=private", "und-x-private");
+ VerifyMatch("de__1994_BISKE_ROZAJ@x=private", "de-1994-biske-rozaj-x-private");
+ VerifyMatch("__1994_BISKE_ROZAJ@x=private", "und-1994-biske-rozaj-x-private");
+}
+
+static void TestGetKeywords() {
+ UErrorCode status = U_ZERO_ERROR;
+ ULocale* l = ulocale_openForLocaleID("de@calendar=buddhist;collation=phonebook", -1, &status);
+ if (assertSuccess(WHERE "ulocale_openForLocaleID()", &status)) {
+ UEnumeration* en = ulocale_getKeywords(l, &status);
+ if (assertSuccess(WHERE "ulocale_getKeywords()", &status)) {
+ assertIntEquals("uenum_count()", 2, uenum_count(en, &status));
+ bool hasCalendar = false;
+ bool hasCollation = false;
+ const char* key = NULL;
+ while ((key = uenum_next(en, NULL, &status)) != NULL) {
+ if (uprv_strcmp(key, "calendar") == 0) {
+ hasCalendar = true;
+ } else if (uprv_strcmp(key, "collation") == 0) {
+ hasCollation = true;
+ }
+ }
+ assertTrue(
+ WHERE "ulocale_getKeywords() should return UEnumeration that has \"calendar\"",
+ hasCalendar);
+ assertTrue(
+ WHERE "ulocale_getKeywords() should return UEnumeration that has \"collation\"",
+ hasCollation);
+ uenum_close(en);
+ }
+ ulocale_close(l);
+ }
+}
+
+static void TestGetKeywordsEmpty() {
+ UErrorCode status = U_ZERO_ERROR;
+ ULocale* l = ulocale_openForLocaleID("de", -1, &status);
+ if (assertSuccess(WHERE "ulocale_openForLocaleID()", &status)) {
+ UEnumeration* en = ulocale_getKeywords(l, &status);
+ if (assertSuccess(WHERE "ulocale_getKeywords()", &status)) {
+ assertPtrEquals(WHERE "ulocale_getKeyword()", NULL, en);
+ uenum_close(en);
+ }
+ ulocale_close(l);
+ }
+}
+
+static void TestGetKeywordsWithPrivateUse() {
+ UErrorCode status = U_ZERO_ERROR;
+ ULocale* l = ulocale_openForLanguageTag("en-US-u-ca-gregory-x-foo", -1, &status);
+ if (assertSuccess(WHERE "ulocale_openForLanguageTag()", &status)) {
+ UEnumeration* en = ulocale_getKeywords(l, &status);
+ if (assertSuccess(WHERE "ulocale_getKeywords()", &status)) {
+ assertIntEquals("uenum_count()", 2, uenum_count(en, &status));
+ bool hasCalendar = false;
+ bool hasX = false;
+ const char* key = NULL;
+ while ((key = uenum_next(en, NULL, &status)) != NULL) {
+ if (uprv_strcmp(key, "calendar") == 0) {
+ hasCalendar = true;
+ } else if (uprv_strcmp(key, "x") == 0) {
+ hasX = true;
+ }
+ }
+ assertTrue(WHERE "ulocale_getKeywords() should return UEnumeration that has \"calendar\"",
+ hasCalendar);
+ assertTrue(WHERE "ulocale_getKeywords() should return UEnumeration that has \"x\"",
+ hasX);
+ uenum_close(en);
+ }
+ ulocale_close(l);
+ }
+}
+
+static void TestGetUnicodeKeywords() {
+ UErrorCode status = U_ZERO_ERROR;
+ ULocale* l = ulocale_openForLocaleID("de@calendar=buddhist;collation=phonebook", -1, &status);
+ if (assertSuccess(WHERE "ulocale_openForLocaleID()", &status)) {
+ UEnumeration* en = ulocale_getUnicodeKeywords(l, &status);
+ if (assertSuccess(WHERE "ulocale_getUnicodeKeywords()", &status)) {
+ assertIntEquals("uenum_count()", 2, uenum_count(en, &status));
+ bool hasCa = false;
+ bool hasCo = false;
+ const char* key = NULL;
+ while ((key = uenum_next(en, NULL, &status)) != NULL) {
+ if (uprv_strcmp(key, "ca") == 0) {
+ hasCa = true;
+ } else if (uprv_strcmp(key, "co") == 0) {
+ hasCo = true;
+ }
+ }
+ assertTrue(
+ WHERE "ulocale_getUnicodeKeywords() should return UEnumeration that has \"ca\"",
+ hasCa);
+ assertTrue(
+ WHERE "ulocale_getUnicodeKeywords() should return UEnumeration that has \"co\"",
+ hasCo);
+ uenum_close(en);
+ }
+ ulocale_close(l);
+ }
+}
+
+static void TestGetUnicodeKeywordsEmpty() {
+ UErrorCode status = U_ZERO_ERROR;
+ ULocale* l = ulocale_openForLocaleID("de", -1, &status);
+ if (assertSuccess(WHERE "ulocale_openForLocaleID()", &status)) {
+ UEnumeration* en = ulocale_getUnicodeKeywords(l, &status);
+ if (assertSuccess(WHERE "ulocale_getUnicodeKeywords()", &status)) {
+ assertPtrEquals("ulocale_getUnicodeKeyword()", NULL, en);
+ uenum_close(en);
+ }
+ ulocale_close(l);
+ }
+}
+
+static void TestGetUnicodeKeywordsWithPrivateUse() {
+ UErrorCode status = U_ZERO_ERROR;
+ ULocale* l = ulocale_openForLanguageTag("en-US-u-ca-gregory-x-foo", -1, &status);
+ if (assertSuccess(WHERE "ulocale_openForLanguageTag()", &status)) {
+ UEnumeration* en = ulocale_getUnicodeKeywords(l, &status);
+ if (assertSuccess(WHERE "ulocale_getUnicodeKeywords()", &status)) {
+ int32_t count = uenum_count(en, &status);
+ if (count != 1) {
+ log_knownIssue("ICU-22457", "uenum_count() should be 1 but get %d\n", count);
+ }
+ const char* key = uenum_next(en, NULL, &status);
+ if (assertSuccess(WHERE "uenum_next()", &status)) {
+ assertEquals(WHERE "ulocale_getUnicodeKeywords() should return UEnumeration that has \"ca\"",
+ "ca", key);
+ }
+ uenum_close(en);
+ }
+ ulocale_close(l);
+ }
+}
+
+static void TestGetKeywordValue() {
+ UErrorCode status = U_ZERO_ERROR;
+ ULocale* l = ulocale_openForLanguageTag("fa-u-nu-thai", -1, &status);
+ if (assertSuccess(WHERE "ulocale_openForLanguageTag()", &status)) {
+ char buffer[ULOC_FULLNAME_CAPACITY];
+ ulocale_getKeywordValue(l, "numbers", -1, buffer, ULOC_FULLNAME_CAPACITY, &status);
+ if (assertSuccess(WHERE "ulocale_getKeywordValue()", &status)) {
+ assertEquals(WHERE "ulocale_getKeywordValue(\"numbers\")", "thai", buffer);
+ }
+
+ ulocale_getKeywordValue(l, "calendar", -1, buffer, ULOC_FULLNAME_CAPACITY, &status);
+ if (assertSuccess(WHERE "ulocale_getKeywordValue()", &status)) {
+ assertEquals(WHERE "ulocale_getKeywordValue(\"calendar\")", "", buffer);
+ }
+ ulocale_getKeywordValue(l, "collation", -1, buffer, ULOC_FULLNAME_CAPACITY, &status);
+ if (assertSuccess(WHERE "ulocale_getKeywordValue()", &status)) {
+ assertEquals(WHERE "ulocale_getKeywordValue(\"collation\")", "", buffer);
+ }
+ ulocale_close(l);
+ }
+}
+
+static void TestGetUnicodeKeywordValue() {
+ UErrorCode status = U_ZERO_ERROR;
+ ULocale* l = ulocale_openForLanguageTag("fa-u-nu-thai", -1, &status);
+ if (assertSuccess(WHERE "ulocale_openForLanguageTag()", &status)) {
+ char buffer[ULOC_FULLNAME_CAPACITY];
+ ulocale_getUnicodeKeywordValue(l, "nu", -1, buffer, ULOC_FULLNAME_CAPACITY, &status);
+ if (assertSuccess(WHERE "ulocale_getUnicodeKeywordValue()", &status)) {
+ assertEquals(WHERE "ulocale_getUnicodeKeywordValue(\"nu\")", "thai", buffer);
+ }
+
+ ulocale_getUnicodeKeywordValue(l, "ca", -1, buffer, ULOC_FULLNAME_CAPACITY, &status);
+ if (U_FAILURE(status) || buffer[0] != '\0') {
+ log_knownIssue(
+ "ICU-22459",
+ WHERE "ulocale_getUnicodeKeywordValue(\"fa-u-nu-thai\", \"ca\") should not return error and should return empty string.");
+ }
+ ulocale_getUnicodeKeywordValue(l, "co", -1, buffer, ULOC_FULLNAME_CAPACITY, &status);
+ if (U_FAILURE(status) || buffer[0] != '\0') {
+ log_knownIssue(
+ "ICU-22459",
+ WHERE "ulocale_getUnicodeKeywordValue(\"fa-u-nu-thai\", \"co\") should not return error and should return empty string.");
+ }
+ ulocale_close(l);
+ }
+}
+
+void addULocaleTest(TestNode** root);
+void addULocaleTest(TestNode** root)
+{
+ TESTCASE(TestBasicGetters);
+ TESTCASE(TestForLanguageTag);
+ TESTCASE(TestGetKeywords);
+ TESTCASE(TestGetKeywordsEmpty);
+ TESTCASE(TestGetKeywordsWithPrivateUse);
+ TESTCASE(TestGetUnicodeKeywords);
+ TESTCASE(TestGetUnicodeKeywordsEmpty);
+ TESTCASE(TestGetUnicodeKeywordsWithPrivateUse);
+ TESTCASE(TestGetKeywordValue);
+ TESTCASE(TestGetUnicodeKeywordValue);
+}
+
diff --git a/Build/source/libs/icu/icu-src/source/test/cintltst/ulocbuildertst.c b/Build/source/libs/icu/icu-src/source/test/cintltst/ulocbuildertst.c
new file mode 100644
index 00000000000..af811277b4b
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/cintltst/ulocbuildertst.c
@@ -0,0 +1,1796 @@
+// © 2023 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "cintltst.h"
+#include "cstring.h"
+#include "unicode/uloc.h"
+#include "unicode/ulocbuilder.h"
+#include "unicode/ulocale.h"
+
+#define WHERE __FILE__ ":" XLINE(__LINE__) " "
+#define XLINE(s) LINE(s)
+#define LINE(s) #s
+
+#ifndef UPRV_LENGTHOF
+#define UPRV_LENGTHOF(array) (int32_t)(sizeof(array)/sizeof((array)[0]))
+#endif
+void addLocaleBuilderTest(TestNode** root);
+
+static void Verify(ULocaleBuilder* bld, const char* expected, const char* msg) {
+ UErrorCode status = U_ZERO_ERROR;
+ UErrorCode copyStatus = U_ZERO_ERROR;
+ UErrorCode errorStatus = U_ILLEGAL_ARGUMENT_ERROR;
+ if (ulocbld_copyErrorTo(bld, &copyStatus)) {
+ log_err(msg, u_errorName(copyStatus));
+ }
+ if (!ulocbld_copyErrorTo(bld, &errorStatus)) {
+ log_err("Should always get the previous error and return false");
+ }
+ char tag[ULOC_FULLNAME_CAPACITY];
+ ulocbld_buildLanguageTag(bld, tag, ULOC_FULLNAME_CAPACITY, &status);
+
+ if (U_FAILURE(status)) {
+ log_err(msg, u_errorName(status));
+ }
+ if (status != copyStatus) {
+ log_err(msg, u_errorName(status));
+ }
+ if (strcmp(tag, expected) != 0) {
+ log_err("should get \"%s\", but got \"%s\"\n", expected, tag);
+ }
+}
+
+static void TestLocaleBuilder() {
+
+ // The following test data are copy from
+ // icu4j/main/core/src/test/java/com/ibm/icu/dev/test/util/LocaleBuilderTest.java
+ // "L": +1 = language
+ // "S": +1 = script
+ // "R": +1 = region
+ // "V": +1 = variant
+ // "K": +1 = Unicode locale key / +2 = Unicode locale type
+ // "A": +1 = Unicode locale attribute
+ // "E": +1 = extension letter / +2 = extension value
+ // "P": +1 = private use
+ // "U": +1 = ULocale
+ // "B": +1 = BCP47 language tag
+ // "C": Clear all
+ // "N": Clear extensions
+ // "D": +1 = Unicode locale attribute to be removed
+ // "X": indicates an exception must be thrown
+ // "T": +1 = expected language tag / +2 = expected locale string
+ const char* TESTCASES[][14] = {
+ {"L", "en", "R", "us", "T", "en-US", "en_US"},
+ {"L", "en", "R", "CA", "L", NULL, "T", "und-CA", "_CA"},
+ {"L", "en", "R", "CA", "L", "", "T", "und-CA", "_CA"},
+ {"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", "it", "R", NULL, "T", "it", "it"},
+ {"R", "123", "L", "it", "R", "", "T", "it", "it"},
+ {"R", "123", "L", "en", "T", "en-123", "en_123"},
+ {"S", "LATN", "L", "DE", "T", "de-Latn", "de_Latn"},
+ {"L", "De", "S", "latn", "R", "de", "S", "", "T", "de-DE", "de_DE"},
+ {"L", "De", "S", "Arab", "R", "de", "S", NULL, "T", "de-DE", "de_DE"},
+ {"S", "latin", "X"},
+ {"V", "1234", "L", "en", "T", "en-1234", "en__1234"},
+ {"V", "1234", "L", "en", "V", "5678", "T", "en-5678", "en__5678"},
+ {"V", "1234", "L", "en", "V", NULL, "T", "en", "en"},
+ {"V", "1234", "L", "en", "V", "", "T", "en", "en"},
+ {"V", "123", "X"},
+ {"U", "en_US", "T", "en-US", "en_US"},
+ {"U", "en_US_WIN", "X"},
+ {"B", "fr-FR-1606nict-u-ca-gregory-x-test", "T",
+ "fr-FR-1606nict-u-ca-gregory-x-test",
+ "fr_FR_1606NICT@calendar=gregorian;x=test"},
+ {"B", "ab-cde-fghij", "T", "cde-fghij", "cde__FGHIJ"},
+ {"B", "und-CA", "T", "und-CA", "_CA"},
+ // Blocked by ICU-20327
+ // {"B", "en-US-x-test-lvariant-var", "T", "en-US-x-test-lvariant-var",
+ // "en_US_VAR@x=test"},
+ {"B", "en-US-VAR", "X"},
+ {"U", "ja_JP@calendar=japanese;currency=JPY", "L", "ko", "T",
+ "ko-JP-u-ca-japanese-cu-jpy", "ko_JP@calendar=japanese;currency=JPY"},
+ {"U", "ja_JP@calendar=japanese;currency=JPY", "K", "ca", NULL, "T",
+ "ja-JP-u-cu-jpy", "ja_JP@currency=JPY"},
+ {"U", "ja_JP@calendar=japanese;currency=JPY", "E", "u",
+ "attr1-ca-gregory", "T", "ja-JP-u-attr1-ca-gregory",
+ "ja_JP@attribute=attr1;calendar=gregorian"},
+ {"U", "en@colnumeric=yes", "K", "kn", "true", "T", "en-u-kn",
+ "en@colnumeric=yes"},
+ {"L", "th", "R", "th", "K", "nu", "thai", "T", "th-TH-u-nu-thai",
+ "th_TH@numbers=thai"},
+ {"U", "zh_Hans", "R", "sg", "K", "ca", "badcalendar", "X"},
+ {"U", "zh_Hans", "R", "sg", "K", "cal", "gregory", "X"},
+ {"E", "z", "ExtZ", "L", "en", "T", "en-z-extz", "en@z=extz"},
+ {"E", "z", "ExtZ", "L", "en", "E", "z", "", "T", "en", "en"},
+ {"E", "z", "ExtZ", "L", "en", "E", "z", NULL, "T", "en", "en"},
+ {"E", "a", "x", "X"},
+ {"E", "a", "abc_def", "T", "und-a-abc-def", "@a=abc-def"},
+ // Design limitation - typeless u extension keyword 0a below is interpreted as a boolean value true/yes.
+ // With the legacy keyword syntax, "yes" is used for such boolean value instead of "true".
+ // However, once the legacy keyword is translated back to BCP 47 u extension, key "0a" is unknown,
+ // so "yes" is preserved - not mapped to "true". We could change the code to automatically transform
+ // key = alphanum alpha
+ {"L", "en", "E", "u", "bbb-aaa-0a", "T", "en-u-aaa-bbb-0a",
+ "en@0a=yes;attribute=aaa-bbb"},
+ {"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-ks-level1",
+ "de@collation=phonebook;colnormalization=yes;colstrength=primary"},
+ {"L", "en", "R", "US", "K", "ca", "gregory", "T", "en-US-u-ca-gregory",
+ "en_US@calendar=gregorian"},
+ {"L", "en", "R", "US", "K", "cal", "gregory", "X"},
+ {"L", "en", "R", "US", "K", "ca", "gregorian", "X"},
+ {"L", "en", "R", "US", "K", "kn", "true", "T", "en-US-u-kn",
+ "en_US@colnumeric=yes"},
+ {"B", "de-DE-u-co-phonebk", "C", "L", "pt", "T", "pt", "pt"},
+ {"B", "ja-jp-u-ca-japanese", "N", "T", "ja-JP", "ja_JP"},
+ {"B", "es-u-def-abc-co-trad", "A", "hij", "D", "def", "T",
+ "es-u-abc-hij-co-trad", "es@attribute=abc-hij;collation=traditional"},
+ {"B", "es-u-def-abc-co-trad", "A", "hij", "D", "def", "D", "def", "T",
+ "es-u-abc-hij-co-trad", "es@attribute=abc-hij;collation=traditional"},
+ {"L", "en", "A", "aa", "X"},
+ {"B", "fr-u-attr1-cu-eur", "D", "attribute1", "X"},
+ };
+ UErrorCode status = U_ZERO_ERROR;
+ ULocaleBuilder* bld = ulocbld_open();
+ char tag[ULOC_FULLNAME_CAPACITY];
+ char locale[ULOC_FULLNAME_CAPACITY];
+ for (int tidx = 0; tidx < UPRV_LENGTHOF(TESTCASES); tidx++) {
+ char actions[1000];
+ actions[0] = '\0';
+ for (int p = 0; p < UPRV_LENGTHOF(TESTCASES[tidx]); p++) {
+ if (TESTCASES[tidx][p] == NULL) {
+ strcpy(actions, " (nullptr)");
+ break;
+ }
+ if (p > 0) strcpy(actions, " ");
+ strcpy(actions, TESTCASES[tidx][p]);
+ }
+ int i = 0;
+ const char* method;
+ status = U_ZERO_ERROR;
+ ulocbld_clear(bld);
+ while (true) {
+ status = U_ZERO_ERROR;
+ UErrorCode copyStatus = U_ZERO_ERROR;
+ method = TESTCASES[tidx][i++];
+ if (strcmp("L", method) == 0) {
+ ulocbld_setLanguage(bld, TESTCASES[tidx][i++], -1);
+ ulocbld_copyErrorTo(bld, &copyStatus);
+ ulocbld_buildLocaleID(bld, locale, ULOC_FULLNAME_CAPACITY, &status);
+ } else if (strcmp("S", method) == 0) {
+ ulocbld_setScript(bld, TESTCASES[tidx][i++], -1);
+ ulocbld_copyErrorTo(bld, &copyStatus);
+ ulocbld_buildLocaleID(bld, locale, ULOC_FULLNAME_CAPACITY, &status);
+ } else if (strcmp("R", method) == 0) {
+ ulocbld_setRegion(bld, TESTCASES[tidx][i++], -1);
+ ulocbld_copyErrorTo(bld, &copyStatus);
+ ulocbld_buildLocaleID(bld, locale, ULOC_FULLNAME_CAPACITY, &status);
+ } else if (strcmp("V", method) == 0) {
+ ulocbld_setVariant(bld, TESTCASES[tidx][i++], -1);
+ ulocbld_copyErrorTo(bld, &copyStatus);
+ ulocbld_buildLocaleID(bld, locale, ULOC_FULLNAME_CAPACITY, &status);
+ } else if (strcmp("K", method) == 0) {
+ const char* key = TESTCASES[tidx][i++];
+ const char* type = TESTCASES[tidx][i++];
+ ulocbld_setUnicodeLocaleKeyword(bld, key, -1, type, -1);
+ ulocbld_copyErrorTo(bld, &copyStatus);
+ ulocbld_buildLocaleID(bld, locale, ULOC_FULLNAME_CAPACITY, &status);
+ } else if (strcmp("A", method) == 0) {
+ ulocbld_addUnicodeLocaleAttribute(bld, TESTCASES[tidx][i++], -1);
+ ulocbld_copyErrorTo(bld, &copyStatus);
+ ulocbld_buildLocaleID(bld, locale, ULOC_FULLNAME_CAPACITY, &status);
+ } else if (strcmp("E", method) == 0) {
+ const char* key = TESTCASES[tidx][i++];
+ const char* value = TESTCASES[tidx][i++];
+ ulocbld_setExtension(bld, key[0], value, -1);
+ ulocbld_copyErrorTo(bld, &copyStatus);
+ ulocbld_buildLocaleID(bld, locale, ULOC_FULLNAME_CAPACITY, &status);
+ } else if (strcmp("P", method) == 0) {
+ ulocbld_setExtension(bld, 'x', TESTCASES[tidx][i++], -1);
+ ulocbld_copyErrorTo(bld, &copyStatus);
+ ulocbld_buildLocaleID(bld, locale, ULOC_FULLNAME_CAPACITY, &status);
+ } else if (strcmp("U", method) == 0) {
+ ulocbld_setLocale(bld, TESTCASES[tidx][i++], -1);
+ ulocbld_copyErrorTo(bld, &copyStatus);
+ ulocbld_buildLocaleID(bld, locale, ULOC_FULLNAME_CAPACITY, &status);
+ } else if (strcmp("B", method) == 0) {
+ ulocbld_setLanguageTag(bld, TESTCASES[tidx][i++], -1);
+ ulocbld_copyErrorTo(bld, &copyStatus);
+ ulocbld_buildLocaleID(bld, locale, ULOC_FULLNAME_CAPACITY, &status);
+ }
+ // clear / remove
+ else if (strcmp("C", method) == 0) {
+ ulocbld_clear(bld);
+ ulocbld_copyErrorTo(bld, &copyStatus);
+ ulocbld_buildLocaleID(bld, locale, ULOC_FULLNAME_CAPACITY, &status);
+ } else if (strcmp("N", method) == 0) {
+ ulocbld_clearExtensions(bld);
+ ulocbld_copyErrorTo(bld, &copyStatus);
+ ulocbld_buildLocaleID(bld, locale, ULOC_FULLNAME_CAPACITY, &status);
+ } else if (strcmp("D", method) == 0) {
+ ulocbld_removeUnicodeLocaleAttribute(bld, TESTCASES[tidx][i++], -1);
+ ulocbld_copyErrorTo(bld, &copyStatus);
+ ulocbld_buildLocaleID(bld, locale, ULOC_FULLNAME_CAPACITY, &status);
+ }
+ // result
+ else if (strcmp("X", method) == 0) {
+ if (U_SUCCESS(status)) {
+ log_err("FAIL: No error return - test case: %s", actions);
+ }
+ } else if (strcmp("T", method) == 0) {
+ status = U_ZERO_ERROR;
+ ulocbld_buildLocaleID(bld, locale, ULOC_FULLNAME_CAPACITY, &status);
+ if (status != copyStatus) {
+ log_err("copyErrorTo not matching");
+ }
+ if (U_FAILURE(status) ||
+ strcmp(locale, TESTCASES[tidx][i + 1]) != 0) {
+ log_err("FAIL: Wrong locale ID - %s %s %s", locale,
+ " for test case: ", actions);
+ }
+ ulocbld_buildLanguageTag(bld, tag, ULOC_FULLNAME_CAPACITY, &status);
+ if (U_FAILURE(status) || strcmp(tag, TESTCASES[tidx][i]) != 0) {
+ log_err("FAIL: Wrong language tag - %s %s %s", tag,
+ " for test case: ", actions);
+ }
+ break;
+ } else {
+ // Unknown test method
+ log_err("Unknown test case method: There is an error in the test case data.");
+ break;
+ }
+ if (status != copyStatus) {
+ log_err("copyErrorTo not matching");
+ }
+ if (U_FAILURE(status)) {
+ if (strcmp("X", TESTCASES[tidx][i]) == 0) {
+ // This failure is expected
+ break;
+ } else {
+ log_err("FAIL: U_ILLEGAL_ARGUMENT_ERROR at offset %d %s %s", i,
+ " in test case: ", actions);
+ break;
+ }
+ }
+ if (strcmp("T", method) == 0) {
+ break;
+ }
+ } // while(true)
+ } // for TESTCASES
+ ulocbld_close(bld);
+}
+
+static void TestLocaleBuilderBasic() {
+ ULocaleBuilder* bld = ulocbld_open();
+ ulocbld_setLanguage(bld, "zh", -1);
+ Verify(bld, "zh", "ulocbld_setLanguage('zh') got Error: %s\n");
+ ulocbld_setScript(bld, "Hant", -1);
+ Verify(bld, "zh-Hant", "ulocbld_setScript('Hant') got Error: %s\n");
+
+ ulocbld_setRegion(bld, "SG", -1);
+ Verify(bld, "zh-Hant-SG", "ulocbld_setRegion('SG') got Error: %s\n");
+
+ ulocbld_setRegion(bld, "HK", -1);
+ ulocbld_setScript(bld, "Hans", -1);
+
+ Verify(bld, "zh-Hans-HK",
+ "ulocbld_setRegion('HK') and ulocbld_setScript('Hans') got Error: %s\n");
+
+ ulocbld_setVariant(bld, "revised###", 7);
+ Verify(bld, "zh-Hans-HK-revised",
+ "ulocbld_setVariant('revised') got Error: %s\n");
+
+ ulocbld_setUnicodeLocaleKeyword(bld, "nu", -1, "thai###", 4);
+ Verify(bld, "zh-Hans-HK-revised-u-nu-thai",
+ "ulocbld_setUnicodeLocaleKeyword('nu', 'thai'') got Error: %s\n");
+
+ ulocbld_setUnicodeLocaleKeyword(bld, "co###", 2, "pinyin", -1);
+ Verify(bld, "zh-Hans-HK-revised-u-co-pinyin-nu-thai",
+ "ulocbld_setUnicodeLocaleKeyword('co', 'pinyin'') got Error: %s\n");
+
+ ulocbld_setUnicodeLocaleKeyword(bld, "nu", -1, "latn###", 4);
+ Verify(bld, "zh-Hans-HK-revised-u-co-pinyin-nu-latn",
+ "ulocbld_setUnicodeLocaleKeyword('nu', 'latn'') got Error: %s\n");
+
+ ulocbld_setUnicodeLocaleKeyword(bld, "nu", -1, "latn", -1);
+ ulocbld_setUnicodeLocaleKeyword(bld, "nu", -1, NULL, 0);
+ Verify(bld, "zh-Hans-HK-revised-u-co-pinyin",
+ "ulocbld_setUnicodeLocaleKeyword('nu', ''') got Error: %s\n");
+
+
+ ulocbld_setUnicodeLocaleKeyword(bld, "co", -1, NULL, 0);
+ Verify(bld, "zh-Hans-HK-revised",
+ "ulocbld_setUnicodeLocaleKeyword('nu', NULL) got Error: %s\n");
+
+ ulocbld_setScript(bld, "", -1);
+ Verify(bld, "zh-HK-revised",
+ "ulocbld_setScript('') got Error: %s\n");
+
+ ulocbld_setVariant(bld, "", -1);
+ Verify(bld, "zh-HK",
+ "ulocbld_setVariant('') got Error: %s\n");
+
+ ulocbld_setRegion(bld, "", -1);
+ Verify(bld, "zh",
+ "ulocbld_setRegion('') got Error: %s\n");
+
+ ulocbld_close(bld);
+}
+
+static void TestLocaleBuilderBasicWithExtensionsOnDefaultLocale() {
+ // Change the default locale to one with extension tags.
+ UErrorCode status = U_ZERO_ERROR;
+ char originalDefault[ULOC_FULLNAME_CAPACITY];
+ strcpy(originalDefault, uloc_getDefault());
+ uloc_setDefault("en-US-u-hc-h12", &status);
+ if (U_FAILURE(status)) {
+ log_err("ERROR: Could not change the default locale");
+ return;
+ }
+
+ // Invoke the basic test now that the default locale has been changed.
+ TestLocaleBuilderBasic();
+
+ uloc_setDefault(originalDefault, &status);
+ if (U_FAILURE(status)) {
+ log_err("ERROR: Could not restore the default locale");
+ }
+}
+
+static void TestSetLanguageWellFormed() {
+ // http://www.unicode.org/reports/tr35/tr35.html#unicode_language_subtag
+ // unicode_language_subtag = alpha{2,3} | alpha{5,8};
+ // ICUTC decided also support alpha{4}
+ static const char* wellFormedLanguages[] = {
+ "",
+
+ // alpha{2}
+ "en",
+ "NE",
+ "eN",
+ "Ne",
+
+ // alpha{3}
+ "aNe",
+ "zzz",
+ "AAA",
+
+ // alpha{4}
+ "ABCD",
+ "abcd",
+
+ // alpha{5}
+ "efgij",
+ "AbCAD",
+ "ZAASD",
+
+ // alpha{6}
+ "efgijk",
+ "AADGFE",
+ "AkDfFz",
+
+ // alpha{7}
+ "asdfads",
+ "ADSFADF",
+ "piSFkDk",
+
+ // alpha{8}
+ "oieradfz",
+ "IADSFJKR",
+ "kkDSFJkR",
+ };
+ for(int32_t i=0;i<UPRV_LENGTHOF(wellFormedLanguages);i++) {
+ const char* lang = wellFormedLanguages[i];
+ UErrorCode status = U_ZERO_ERROR;
+ ULocaleBuilder* bld = ulocbld_open();
+ ulocbld_setLanguage(bld, lang, -1);
+ char buffer[ULOC_FULLNAME_CAPACITY];
+ ulocbld_buildLocaleID(bld, buffer, ULOC_FULLNAME_CAPACITY, &status);
+ if (U_FAILURE(status)) {
+ log_err("setLanguage(\"%s\") got Error: %s\n",
+ lang, u_errorName(status));
+ }
+ ulocbld_close(bld);
+ }
+}
+
+static void TestSetLanguageIllFormed() {
+ static const char* illFormed[] = {
+ "a",
+ "z",
+ "A",
+ "F",
+ "2",
+ "0",
+ "9",
+ "{",
+ ".",
+ "[",
+ "]",
+ "\\",
+
+ "e1",
+ "N2",
+ "3N",
+ "4e",
+ "e:",
+ "43",
+ "a9",
+
+ "aN0",
+ "z1z",
+ "2zz",
+ "3A3",
+ "456",
+ "af)",
+
+ // Per 2019-01-23 ICUTC, we still accept 4alpha as tlang. see ICU-20321.
+ // "latn",
+ // "Arab",
+ // "LATN",
+
+ "e)gij",
+ "Ab3AD",
+ "ZAAS8",
+
+ "efgi[]",
+ "AA9GFE",
+ "7kD3Fz",
+ "as8fads",
+ "0DSFADF",
+ "'iSFkDk",
+
+ "oieradf+",
+ "IADSFJK-",
+ "kkDSFJk0",
+
+ // alpha{9}
+ "oieradfab",
+ "IADSFJKDE",
+ "kkDSFJkzf",
+ };
+ for(int32_t i=0;i<UPRV_LENGTHOF(illFormed);i++) {
+ const char* ill = illFormed[i];
+ UErrorCode status = U_ZERO_ERROR;
+ ULocaleBuilder* bld = ulocbld_open();
+ ulocbld_setLanguage(bld, ill, -1);
+ char buffer[ULOC_FULLNAME_CAPACITY];
+ ulocbld_buildLocaleID(bld, buffer, ULOC_FULLNAME_CAPACITY, &status);
+ if (status != U_ILLEGAL_ARGUMENT_ERROR) {
+ log_err("setLanguage(\"%s\") should fail but has no Error\n", ill);
+ }
+ ulocbld_close(bld);
+ }
+}
+
+static void TestSetScriptWellFormed() {
+ // http://www.unicode.org/reports/tr35/tr35.html#unicode_script_subtag
+ // unicode_script_subtag = alpha{4} ;
+ static const char* wellFormedScripts[] = {
+ "",
+
+ "Latn",
+ "latn",
+ "lATN",
+ "laTN",
+ "arBN",
+ "ARbn",
+ "adsf",
+ "aADF",
+ "BSVS",
+ "LATn",
+ };
+ for(int32_t i=0;i<UPRV_LENGTHOF(wellFormedScripts);i++) {
+ const char* script = wellFormedScripts[i];
+ UErrorCode status = U_ZERO_ERROR;
+ ULocaleBuilder* bld = ulocbld_open();
+ ulocbld_setScript(bld, script, -1);
+ char buffer[ULOC_FULLNAME_CAPACITY];
+ ulocbld_buildLocaleID(bld, buffer, ULOC_FULLNAME_CAPACITY, &status);
+ if (U_FAILURE(status)) {
+ log_err("setScript(\"%s\") got Error: %s\n",
+ script, u_errorName(status));
+ }
+ ulocbld_close(bld);
+ }
+}
+static void TestSetScriptIllFormed() {
+ static const char* illFormed[] = {
+ "a",
+ "z",
+ "A",
+ "F",
+ "2",
+ "0",
+ "9",
+ "{",
+ ".",
+ "[",
+ "]",
+ "\\",
+
+ "e1",
+ "N2",
+ "3N",
+ "4e",
+ "e:",
+ "43",
+ "a9",
+
+ "aN0",
+ "z1z",
+ "2zz",
+ "3A3",
+ "456",
+ "af)",
+
+ "0atn",
+ "l1tn",
+ "lA2N",
+ "la4N",
+ "arB5",
+ "1234",
+
+ "e)gij",
+ "Ab3AD",
+ "ZAAS8",
+
+ "efgi[]",
+ "AA9GFE",
+ "7kD3Fz",
+
+ "as8fads",
+ "0DSFADF",
+ "'iSFkDk",
+
+ "oieradf+",
+ "IADSFJK-",
+ "kkDSFJk0",
+
+ // alpha{9}
+ "oieradfab",
+ "IADSFJKDE",
+ "kkDSFJkzf",
+ };
+ for(int32_t i=0;i<UPRV_LENGTHOF(illFormed);i++) {
+ const char* ill = illFormed[i];
+ UErrorCode status = U_ZERO_ERROR;
+ ULocaleBuilder* bld = ulocbld_open();
+ ulocbld_setScript(bld, ill, -1);
+ char buffer[ULOC_FULLNAME_CAPACITY];
+ ulocbld_buildLocaleID(bld, buffer, ULOC_FULLNAME_CAPACITY, &status);
+ if (status != U_ILLEGAL_ARGUMENT_ERROR) {
+ log_err("setScript(\"%s\") should fail but has no Error\n", ill);
+ }
+ ulocbld_close(bld);
+ }
+}
+
+static void TestSetRegionWellFormed() {
+ // http://www.unicode.org/reports/tr35/tr35.html#unicode_region_subtag
+ // unicode_region_subtag = (alpha{2} | digit{3})
+ static const char* wellFormedRegions[] = {
+ "",
+
+ // alpha{2}
+ "en",
+ "NE",
+ "eN",
+ "Ne",
+
+ // digit{3}
+ "000",
+ "999",
+ "123",
+ "987"
+ };
+ for(int32_t i=0;i<UPRV_LENGTHOF(wellFormedRegions);i++) {
+ const char* region = wellFormedRegions[i];
+ UErrorCode status = U_ZERO_ERROR;
+ ULocaleBuilder* bld = ulocbld_open();
+ ulocbld_setRegion(bld, region, -1);
+ char buffer[ULOC_FULLNAME_CAPACITY];
+ ulocbld_buildLocaleID(bld, buffer, ULOC_FULLNAME_CAPACITY, &status);
+ if (U_FAILURE(status)) {
+ log_err("setRegion(\"%s\") got Error: %s\n",
+ region, u_errorName(status));
+ }
+ ulocbld_close(bld);
+ }
+}
+
+static void TestSetRegionIllFormed() {
+ static const char* illFormed[] = {
+ "a",
+ "z",
+ "A",
+ "F",
+ "2",
+ "0",
+ "9",
+ "{",
+ ".",
+ "[",
+ "]",
+ "\\",
+
+ "e1",
+ "N2",
+ "3N",
+ "4e",
+ "e:",
+ "43",
+ "a9",
+
+ "aN0",
+ "z1z",
+ "2zz",
+ "3A3",
+ "4.6",
+ "af)",
+
+ "0atn",
+ "l1tn",
+ "lA2N",
+ "la4N",
+ "arB5",
+ "1234",
+
+ "e)gij",
+ "Ab3AD",
+ "ZAAS8",
+
+ "efgi[]",
+ "AA9GFE",
+ "7kD3Fz",
+
+ "as8fads",
+ "0DSFADF",
+ "'iSFkDk",
+
+ "oieradf+",
+ "IADSFJK-",
+ "kkDSFJk0",
+
+ // alpha{9}
+ "oieradfab",
+ "IADSFJKDE",
+ "kkDSFJkzf",
+ };
+ for(int32_t i=0;i<UPRV_LENGTHOF(illFormed);i++) {
+ const char* ill = illFormed[i];
+ UErrorCode status = U_ZERO_ERROR;
+ ULocaleBuilder* bld = ulocbld_open();
+ ulocbld_setRegion(bld, ill, -1);
+ char buffer[ULOC_FULLNAME_CAPACITY];
+ ulocbld_buildLocaleID(bld, buffer, ULOC_FULLNAME_CAPACITY, &status);
+ if (status != U_ILLEGAL_ARGUMENT_ERROR) {
+ log_err("setRegion(\"%s\") should fail but has no Error\n", ill);
+ }
+ ulocbld_close(bld);
+ }
+}
+
+static void TestSetVariantWellFormed() {
+ // http://www.unicode.org/reports/tr35/tr35.html#unicode_variant_subtag
+ // (sep unicode_variant_subtag)*
+ // unicode_variant_subtag = (alphanum{5,8} | digit alphanum{3}) ;
+ static const char* wellFormedVariants[] = {
+ "",
+
+ // alphanum{5}
+ "efgij",
+ "AbCAD",
+ "ZAASD",
+ "0AASD",
+ "A1CAD",
+ "ef2ij",
+ "ads3X",
+ "owqF4",
+
+ // alphanum{6}
+ "efgijk",
+ "AADGFE",
+ "AkDfFz",
+ "0ADGFE",
+ "A9DfFz",
+ "AADG7E",
+
+ // alphanum{7}
+ "asdfads",
+ "ADSFADF",
+ "piSFkDk",
+ "a0dfads",
+ "ADSF3DF",
+ "piSFkD9",
+
+ // alphanum{8}
+ "oieradfz",
+ "IADSFJKR",
+ "kkDSFJkR",
+ "0ADSFJKR",
+ "12345679",
+
+ // digit alphanum{3}
+ "0123",
+ "1abc",
+ "20EF",
+ "30EF",
+ "8A03",
+ "3Ax3",
+ "9Axy",
+
+ // (sep unicode_variant_subtag)*
+ "0123-4567",
+ "0ab3-ABCDE",
+ "9ax3-xByD9",
+ "9ax3-xByD9-adfk934a",
+
+ "0123_4567",
+ "0ab3_ABCDE",
+ "9ax3_xByD9",
+ "9ax3_xByD9_adfk934a",
+
+ "9ax3-xByD9_adfk934a",
+ "9ax3_xByD9-adfk934a",
+ };
+ for(int32_t i=0;i<UPRV_LENGTHOF(wellFormedVariants);i++) {
+ const char* variant = wellFormedVariants[i];
+ UErrorCode status = U_ZERO_ERROR;
+ ULocaleBuilder* bld = ulocbld_open();
+ ulocbld_setVariant(bld, variant, -1);
+ char buffer[ULOC_FULLNAME_CAPACITY];
+ ulocbld_buildLocaleID(bld, buffer, ULOC_FULLNAME_CAPACITY, &status);
+ if (U_FAILURE(status)) {
+ log_err("setVariant(\"%s\") got Error: %s\n",
+ variant, u_errorName(status));
+ }
+ ulocbld_close(bld);
+ }
+}
+
+static void TestSetVariantIllFormed() {
+ static const char* illFormed[] = {
+ "a",
+ "z",
+ "A",
+ "F",
+ "2",
+ "0",
+ "9",
+ "{",
+ ".",
+ "[",
+ "]",
+ "\\",
+
+ "e1",
+ "N2",
+ "3N",
+ "4e",
+ "e:",
+ "43",
+ "a9",
+ "en",
+ "NE",
+ "eN",
+ "Ne",
+
+ "aNe",
+ "zzz",
+ "AAA",
+ "aN0",
+ "z1z",
+ "2zz",
+ "3A3",
+ "4.6",
+ "af)",
+ "345",
+ "923",
+
+ "Latn",
+ "latn",
+ "lATN",
+ "laTN",
+ "arBN",
+ "ARbn",
+ "adsf",
+ "aADF",
+ "BSVS",
+ "LATn",
+ "l1tn",
+ "lA2N",
+ "la4N",
+ "arB5",
+ "abc3",
+ "A3BC",
+
+ "e)gij",
+ "A+3AD",
+ "ZAA=8",
+
+ "efgi[]",
+ "AA9]FE",
+ "7k[3Fz",
+
+ "as8f/ds",
+ "0DSFAD{",
+ "'iSFkDk",
+
+ "oieradf+",
+ "IADSFJK-",
+ "k}DSFJk0",
+
+ // alpha{9}
+ "oieradfab",
+ "IADSFJKDE",
+ "kkDSFJkzf",
+ "123456789",
+
+ "-0123",
+ "-0123-4567",
+ "0123-4567-",
+ "-123-4567",
+ "_0123",
+ "_0123_4567",
+ "0123_4567_",
+ "_123_4567",
+
+ "-abcde-figjk",
+ "abcde-figjk-",
+ "-abcde-figjk-",
+ "_abcde_figjk",
+ "abcde_figjk_",
+ "_abcde_figjk_",
+ };
+ for(int32_t i=0;i<UPRV_LENGTHOF(illFormed);i++) {
+ const char* ill = illFormed[i];
+ UErrorCode status = U_ZERO_ERROR;
+ ULocaleBuilder* bld = ulocbld_open();
+ ulocbld_setVariant(bld, ill, -1);
+ char buffer[ULOC_FULLNAME_CAPACITY];
+ ulocbld_buildLocaleID(bld, buffer, ULOC_FULLNAME_CAPACITY, &status);
+ if (status != U_ILLEGAL_ARGUMENT_ERROR) {
+ log_err("setVariant(\"%s\") should fail but has no Error\n", ill);
+ }
+ ulocbld_close(bld);
+ }
+}
+
+static void TestSetUnicodeLocaleKeywordWellFormed() {
+ // http://www.unicode.org/reports/tr35/tr35.html#unicode_locale_extensions
+ // keyword = key (sep type)? ;
+ // key = alphanum alpha ;
+ // type = alphanum{3,8} (sep alphanum{3,8})* ;
+ static const char* wellFormed_key_value[] = {
+ "aa", "123",
+ "3b", "zyzbcdef",
+ "0Z", "1ZB30zk9-abc",
+ "cZ", "2ck30zfZ-adsf023-234kcZ",
+ "ZZ", "Lant",
+ "ko", "",
+ };
+ for (int i = 0; i < UPRV_LENGTHOF(wellFormed_key_value); i += 2) {
+ UErrorCode status = U_ZERO_ERROR;
+ ULocaleBuilder* bld = ulocbld_open();
+ ulocbld_setUnicodeLocaleKeyword(bld, wellFormed_key_value[i], -1,
+ wellFormed_key_value[i + 1], -1);
+ char buffer[ULOC_FULLNAME_CAPACITY];
+ ulocbld_buildLocaleID(bld, buffer, ULOC_FULLNAME_CAPACITY, &status);
+ if (U_FAILURE(status)) {
+ log_err("setUnicodeLocaleKeyword(\"%s\", \"%s\") got Error: %s\n",
+ wellFormed_key_value[i],
+ wellFormed_key_value[i + 1],
+ u_errorName(status));
+ }
+ ulocbld_close(bld);
+ }
+}
+
+static void TestSetUnicodeLocaleKeywordIllFormedKey() {
+ static const char* illFormed[] = {
+ "34",
+ "ab-cde",
+ "123",
+ "b3",
+ "zyzabcdef",
+ "Z0",
+ };
+ for (int i = 0; i < UPRV_LENGTHOF(illFormed); i++) {
+ const char* ill = illFormed[i];
+ UErrorCode status = U_ZERO_ERROR;
+ ULocaleBuilder* bld = ulocbld_open();
+ ulocbld_setUnicodeLocaleKeyword(bld, ill, -1, "abc", 3);
+ char buffer[ULOC_FULLNAME_CAPACITY];
+ ulocbld_buildLocaleID(bld, buffer, ULOC_FULLNAME_CAPACITY, &status);
+ if (status != U_ILLEGAL_ARGUMENT_ERROR) {
+ log_err("setUnicodeLocaleKeyword(\"%s\", \"abc\") should fail but has no Error\n",
+ ill);
+ }
+ ulocbld_close(bld);
+ }
+}
+
+static void TestSetUnicodeLocaleKeywordIllFormedValue() {
+ static const char* illFormed[] = {
+ "34",
+ "ab-",
+ "-cd",
+ "-ef-",
+ "zyzabcdef",
+ "ab-abc",
+ "1ZB30zfk9-abc",
+ "2ck30zfk9-adsf023-234kcZ",
+ };
+ ULocaleBuilder* bld = ulocbld_open();
+ for (int i = 0; i < UPRV_LENGTHOF(illFormed); i++) {
+ const char* ill = illFormed[i];
+ ulocbld_clear(bld);
+ UErrorCode status = U_ZERO_ERROR;
+ ulocbld_setUnicodeLocaleKeyword(bld, "ab", 2, ill, -1);
+ char buffer[ULOC_FULLNAME_CAPACITY];
+ ulocbld_buildLocaleID(bld, buffer, ULOC_FULLNAME_CAPACITY, &status);
+ if (status != U_ILLEGAL_ARGUMENT_ERROR) {
+ log_err("setUnicodeLocaleKeyword(\"ab\", \"%s\") should fail but has no Error\n",
+ ill);
+ }
+ }
+ ulocbld_close(bld);
+}
+
+static void TestAddRemoveUnicodeLocaleAttribute() {
+ ULocaleBuilder* bld = ulocbld_open();
+ ulocbld_setLanguage(bld, "fr", -1);
+ ulocbld_addUnicodeLocaleAttribute(bld, "abc", -1);
+ ulocbld_addUnicodeLocaleAttribute(bld, "aBc", -1);
+ ulocbld_addUnicodeLocaleAttribute(bld, "EFG123", 3);
+ ulocbld_addUnicodeLocaleAttribute(bld, "efghi###", 5);
+ ulocbld_addUnicodeLocaleAttribute(bld, "efgh", -1);
+ ulocbld_addUnicodeLocaleAttribute(bld, "efGhi", -1);
+ ulocbld_addUnicodeLocaleAttribute(bld, "EFg", -1);
+ ulocbld_addUnicodeLocaleAttribute(bld, "hijk", -1);
+ ulocbld_addUnicodeLocaleAttribute(bld, "EFG", -1);
+ ulocbld_addUnicodeLocaleAttribute(bld, "HiJK", -1);
+ ulocbld_addUnicodeLocaleAttribute(bld, "aBc", -1);
+ UErrorCode status = U_ZERO_ERROR;
+ char locale[ULOC_FULLNAME_CAPACITY];
+ ulocbld_buildLocaleID(bld, locale, ULOC_FULLNAME_CAPACITY, &status);
+ if (U_FAILURE(status)) {
+ log_err("addUnicodeLocaleAttribute() got Error: %s\n",
+ u_errorName(status));
+ }
+ char languageTag[ULOC_FULLNAME_CAPACITY];
+ ulocbld_buildLanguageTag(bld, languageTag, ULOC_FULLNAME_CAPACITY, &status);
+ const char* expected = "fr-u-abc-efg-efgh-efghi-hijk";
+ if (U_FAILURE(status) || strcmp(languageTag, expected) != 0) {
+ log_err("Should get \"%s\" but get \"%s\"\n", expected, languageTag);
+ }
+
+ // remove "efgh" in the middle with different casing.
+ ulocbld_removeUnicodeLocaleAttribute(bld, "eFgH", -1);
+ ulocbld_buildLanguageTag(bld, languageTag, ULOC_FULLNAME_CAPACITY, &status);
+ expected = "fr-u-abc-efg-efghi-hijk";
+ if (U_FAILURE(status) || strcmp(languageTag, expected) != 0) {
+ log_err("removeUnicodeLocaleAttribute() got Error: %s\n",
+ u_errorName(status));
+ log_err("Should get \"%s\" but get \"%s\"\n", expected, languageTag);
+ }
+
+ // remove non-existing attributes.
+ ulocbld_removeUnicodeLocaleAttribute(bld, "efgh", -1);
+ ulocbld_buildLanguageTag(bld, languageTag, ULOC_FULLNAME_CAPACITY, &status);
+ if (U_FAILURE(status) || strcmp(languageTag, expected) != 0) {
+ log_err("removeUnicodeLocaleAttribute() got Error: %s\n",
+ u_errorName(status));
+ log_err("Should get \"%s\" but get \"%s\"\n", expected, languageTag);
+ }
+
+ // remove "abc" in the beginning with different casing.
+ ulocbld_removeUnicodeLocaleAttribute(bld, "ABC", -1);
+ ulocbld_buildLanguageTag(bld, languageTag, ULOC_FULLNAME_CAPACITY, &status);
+ expected = "fr-u-efg-efghi-hijk";
+ if (U_FAILURE(status) || strcmp(languageTag, expected) != 0) {
+ log_err("removeUnicodeLocaleAttribute() got Error: %s\n",
+ u_errorName(status));
+ log_err("Should get \"%s\" but get \"%s\"\n", expected, languageTag);
+ }
+
+ // remove non-existing substring in the end.
+ ulocbld_removeUnicodeLocaleAttribute(bld, "hij", -1);
+ ulocbld_buildLanguageTag(bld, languageTag, ULOC_FULLNAME_CAPACITY, &status);
+ if (U_FAILURE(status) || strcmp(languageTag, expected) != 0) {
+ log_err("removeUnicodeLocaleAttribute() got Error: %s\n",
+ u_errorName(status));
+ log_err("Should get \"%s\" but get \"%s\"\n", expected, languageTag);
+ }
+
+ // remove "hijk" in the end with different casing.
+ ulocbld_removeUnicodeLocaleAttribute(bld, "hIJK", -1);
+ ulocbld_buildLanguageTag(bld, languageTag, ULOC_FULLNAME_CAPACITY, &status);
+ expected = "fr-u-efg-efghi";
+ if (U_FAILURE(status) || strcmp(languageTag, expected) != 0) {
+ log_err("removeUnicodeLocaleAttribute() got Error: %s\n",
+ u_errorName(status));
+ log_err("Should get \"%s\" but get \"%s\"\n", expected, languageTag);
+ }
+
+ // remove "efghi" in the end with different casing.
+ ulocbld_removeUnicodeLocaleAttribute(bld, "EFGhi", -1);
+ ulocbld_buildLanguageTag(bld, languageTag, ULOC_FULLNAME_CAPACITY, &status);
+ expected = "fr-u-efg";
+ if (U_FAILURE(status) || strcmp(languageTag, expected) != 0) {
+ log_err("removeUnicodeLocaleAttribute() got Error: %s\n",
+ u_errorName(status));
+ log_err("Should get \"%s\" but get \"%s\"\n", expected, languageTag);
+ }
+
+ // remove "efg" in as the only one, with different casing.
+ ulocbld_removeUnicodeLocaleAttribute(bld, "EFG", -1);
+ ulocbld_buildLanguageTag(bld, languageTag, ULOC_FULLNAME_CAPACITY, &status);
+ expected = "fr";
+ if (U_FAILURE(status) || strcmp(languageTag, expected) != 0) {
+ log_err("removeUnicodeLocaleAttribute() got Error: %s\n",
+ u_errorName(status));
+ log_err("Should get \"%s\" but get \"%s\"\n", expected, languageTag);
+ }
+ ulocbld_close(bld);
+}
+
+static void TestAddRemoveUnicodeLocaleAttributeWellFormed() {
+ // http://www.unicode.org/reports/tr35/tr35.html#unicode_locale_extensions
+ // attribute = alphanum{3,8} ;
+ static const char* wellFormedAttributes[] = {
+ // alphanum{3}
+ "AbC",
+ "ZAA",
+ "0AA",
+ "x3A",
+ "xa8",
+
+ // alphanum{4}
+ "AbCA",
+ "ZASD",
+ "0ASD",
+ "A3a4",
+ "zK90",
+
+ // alphanum{5}
+ "efgij",
+ "AbCAD",
+ "ZAASD",
+ "0AASD",
+ "A1CAD",
+ "ef2ij",
+ "ads3X",
+ "owqF4",
+
+ // alphanum{6}
+ "efgijk",
+ "AADGFE",
+ "AkDfFz",
+ "0ADGFE",
+ "A9DfFz",
+ "AADG7E",
+
+ // alphanum{7}
+ "asdfads",
+ "ADSFADF",
+ "piSFkDk",
+ "a0dfads",
+ "ADSF3DF",
+ "piSFkD9",
+
+ // alphanum{8}
+ "oieradfz",
+ "IADSFJKR",
+ "kkDSFJkR",
+ };
+ ULocaleBuilder* bld = ulocbld_open();
+ for (int i = 0; i < UPRV_LENGTHOF(wellFormedAttributes); i++) {
+ if (i % 5 == 0) {
+ ulocbld_clear(bld);
+ }
+ ulocbld_addUnicodeLocaleAttribute(bld, wellFormedAttributes[i], -1);
+ UErrorCode status = U_ZERO_ERROR;
+ if (ulocbld_copyErrorTo(bld, &status)) {
+ log_err("addUnicodeLocaleAttribute(\"%s\") got Error: %s\n",
+ wellFormedAttributes[i], u_errorName(status));
+ }
+ if (i > 2) {
+ ulocbld_removeUnicodeLocaleAttribute(bld, wellFormedAttributes[i - 1], -1);
+ if (ulocbld_copyErrorTo(bld, &status)) {
+ log_err("removeUnicodeLocaleAttribute(\"%s\") got Error: %s\n",
+ wellFormedAttributes[i - 1], u_errorName(status));
+ }
+ ulocbld_removeUnicodeLocaleAttribute(bld, wellFormedAttributes[i - 3], -1);
+ if (ulocbld_copyErrorTo(bld, &status)) {
+ log_err("removeUnicodeLocaleAttribute(\"%s\") got Error: %s\n",
+ wellFormedAttributes[i - 3], u_errorName(status));
+ }
+ }
+ }
+ ulocbld_close(bld);
+}
+
+static void TestAddUnicodeLocaleAttributeIllFormed() {
+ static const char* illFormed[] = {
+ "aa",
+ "34",
+ "ab-",
+ "-cd",
+ "-ef-",
+ "zyzabcdef",
+ "123456789",
+ "ab-abc",
+ "1ZB30zfk9-abc",
+ "2ck30zfk9-adsf023-234kcZ",
+ };
+ for (int i = 0; i < UPRV_LENGTHOF(illFormed); i++) {
+ const char* ill = illFormed[i];
+ UErrorCode status = U_ZERO_ERROR;
+ ULocaleBuilder* bld = ulocbld_open();
+ ulocbld_addUnicodeLocaleAttribute(bld, ill, -1);
+ char buffer[ULOC_FULLNAME_CAPACITY];
+ ulocbld_buildLocaleID(bld, buffer, ULOC_FULLNAME_CAPACITY, &status);
+ if (status != U_ILLEGAL_ARGUMENT_ERROR) {
+ log_err("addUnicodeLocaleAttribute(\"%s\") should fail but has no Error\n",
+ ill);
+ }
+ ulocbld_close(bld);
+ }
+}
+
+static void TestSetExtensionU() {
+ ULocaleBuilder* bld = ulocbld_open();
+ ulocbld_setLanguage(bld, "zhABC", 2);
+ Verify(bld, "zh",
+ "ulocbld_setLanguage(\"zh\") got Error: %s\n");
+
+ ulocbld_setExtension(bld, 'u', "co-stroke", -1);
+ Verify(bld, "zh-u-co-stroke",
+ "ulocbld_setExtension('u', \"co-stroke\") got Error: %s\n");
+
+ ulocbld_setExtension(bld, 'U', "ca-islamicABCDE", 10);
+ Verify(bld, "zh-u-ca-islamic",
+ "ulocbld_setExtension('U', \"zh-u-ca-islamic\") got Error: %s\n");
+
+ ulocbld_setExtension(bld, 'u', "ca-chinese", 10);
+ Verify(bld, "zh-u-ca-chinese",
+ "ulocbld_setExtension('u', \"ca-chinese\") got Error: %s\n");
+
+ ulocbld_setExtension(bld, 'U', "co-pinyin1234", 9);
+ Verify(bld, "zh-u-co-pinyin",
+ "ulocbld_setExtension('U', \"co-pinyin\") got Error: %s\n");
+
+ ulocbld_setRegion(bld, "TW123", 2);
+ Verify(bld, "zh-TW-u-co-pinyin",
+ "ulocbld_setRegion(\"TW\") got Error: %s\n");
+
+ ulocbld_setExtension(bld, 'U', "", 0);
+ Verify(bld, "zh-TW",
+ "ulocbld_setExtension('U', \"\") got Error: %s\n");
+
+ ulocbld_setExtension(bld, 'u', "abc-defg-kr-face", -1);
+ Verify(bld, "zh-TW-u-abc-defg-kr-face",
+ "ulocbld_setExtension('u', \"abc-defg-kr-face\") got Error: %s\n");
+
+ ulocbld_setExtension(bld, 'U', "ca-japanese", -1);
+ Verify(bld, "zh-TW-u-ca-japanese",
+ "ulocbld_setExtension('U', \"ca-japanese\") got Error: %s\n");
+
+ ulocbld_close(bld);
+}
+
+static void TestSetExtensionValidateUWellFormed() {
+ static const char* wellFormedExtensions[] = {
+ // keyword
+ // keyword = key (sep type)? ;
+ // key = alphanum alpha ;
+ // type = alphanum{3,8} (sep alphanum{3,8})* ;
+ "3A",
+ "ZA",
+ "az-abc",
+ "zz-123",
+ "7z-12345678",
+ "kb-A234567Z",
+ // (sep keyword)+
+ "1z-ZZ",
+ "2z-ZZ-123",
+ "3z-ZZ-123-cd",
+ "0z-ZZ-123-cd-efghijkl",
+ // attribute
+ "abc",
+ "456",
+ "87654321",
+ "ZABADFSD",
+ // (sep attribute)+
+ "abc-ZABADFSD",
+ "123-ZABADFSD",
+ "K2K-12345678",
+ "K2K-12345678-zzz",
+ // (sep attribute)+ (sep keyword)*
+ "K2K-12345678-zz",
+ "K2K-12345678-zz-0z",
+ "K2K-12345678-9z-AZ-abc",
+ "K2K-12345678-zz-9A-234",
+ "K2K-12345678-zk0-abc-efg-zz-9k-234",
+ };
+ for (int i = 0; i < UPRV_LENGTHOF(wellFormedExtensions); i++) {
+ const char* extension = wellFormedExtensions[i];
+ UErrorCode status = U_ZERO_ERROR;
+ ULocaleBuilder* bld = ulocbld_open();
+ ulocbld_setExtension(bld, 'u', extension, -1);
+ char buffer[ULOC_FULLNAME_CAPACITY];
+ ulocbld_buildLocaleID(bld, buffer, ULOC_FULLNAME_CAPACITY, &status);
+ if (U_FAILURE(status)) {
+ log_err("setExtension('u', \"%s\") got Error: %s\n",
+ extension, u_errorName(status));
+ }
+ ulocbld_close(bld);
+ }
+}
+
+static void TestSetExtensionValidateUIllFormed() {
+ static const char* illFormed[] = {
+ // bad key
+ "-",
+ "-ab",
+ "ab-",
+ "abc-",
+ "-abc",
+ "0",
+ "a",
+ "A0",
+ "z9",
+ "09",
+ "90",
+ // bad keyword
+ "AB-A0",
+ "AB-efg-A0",
+ "xy-123456789",
+ "AB-Aa-",
+ "AB-Aac-",
+ // bad attribute
+ "abcdefghi",
+ "abcdefgh-",
+ "abcdefgh-abcdefghi",
+ "abcdefgh-1",
+ "abcdefgh-a",
+ "abcdefgh-a2345678z",
+ };
+ for (int i = 0; i < UPRV_LENGTHOF(illFormed); i++) {
+ const char* ill = illFormed[i];
+ UErrorCode status = U_ZERO_ERROR;
+ ULocaleBuilder* bld = ulocbld_open();
+ ulocbld_setExtension(bld, 'u', ill, -1);
+ char buffer[ULOC_FULLNAME_CAPACITY];
+ ulocbld_buildLocaleID(bld, buffer, ULOC_FULLNAME_CAPACITY, &status);
+ if (status != U_ILLEGAL_ARGUMENT_ERROR) {
+ log_err("setExtension('u', \"%s\") should fail but has no Error\n",
+ ill);
+ }
+ ulocbld_close(bld);
+ }
+}
+
+static void TestSetExtensionT() {
+ ULocaleBuilder* bld = ulocbld_open();
+ ulocbld_setLanguage(bld, "fr", 2);
+ Verify(bld, "fr",
+ "ulocbld_setLanguage(\"fr\") got Error: %s\n");
+
+ ulocbld_setExtension(bld, 'T', "zh", -1);
+ Verify(bld, "fr-t-zh",
+ "ulocbld_setExtension('T', \"zh\") got Error: %s\n");
+
+ ulocbld_setExtension(bld, 't', "zh-Hant-TW-1234-A9-123-456ABCDE", -1);
+ Verify(bld, "fr-t-zh-hant-tw-1234-a9-123-456abcde",
+ "ulocbld_setExtension('t', \"zh-Hant-TW-1234-A9-123-456ABCDE\") got Error: %s\n");
+
+ ulocbld_setExtension(bld, 'T', "a9-123", -1);
+ Verify(bld, "fr-t-a9-123",
+ "ulocbld_setExtension('T', \"a9-123\") got Error: %s\n");
+
+ ulocbld_setRegion(bld, "MX###", 2);
+ Verify(bld, "fr-MX-t-a9-123",
+ "ulocbld_setRegion(\"MX\") got Error: %s\n");
+
+ ulocbld_setScript(bld, "Hans##", 4);
+ Verify(bld, "fr-Hans-MX-t-a9-123",
+ "ulocbld_setScript(\"Hans\") got Error: %s\n");
+
+ ulocbld_setVariant(bld, "9abc-abcde1234", 10 );
+ Verify(bld, "fr-Hans-MX-9abc-abcde-t-a9-123",
+ "ulocbld_setVariant(\"9abc-abcde\") got Error: %s\n");
+
+ ulocbld_setExtension(bld, 'T', "", 0);
+ Verify(bld, "fr-Hans-MX-9abc-abcde",
+ "ulocbld_setExtension('T', \"\") got Error: %s\n");
+
+ ulocbld_close(bld);
+}
+
+static void TestSetExtensionValidateTWellFormed() {
+ // ((sep tlang (sep tfield)*) | (sep tfield)+)
+ static const char* wellFormedExtensions[] = {
+ // tlang
+ // tlang = unicode_language_subtag (sep unicode_script_subtag)?
+ // (sep unicode_region_subtag)? (sep unicode_variant_subtag)* ;
+ // unicode_language_subtag
+ "en",
+ "abc",
+ "abcde",
+ "ABCDEFGH",
+ // unicode_language_subtag sep unicode_script_subtag
+ "en-latn",
+ "abc-arab",
+ "ABCDEFGH-Thai",
+ // unicode_language_subtag sep unicode_script_subtag sep unicode_region_subtag
+ "en-latn-ME",
+ "abc-arab-RU",
+ "ABCDEFGH-Thai-TH",
+ "en-latn-409",
+ "abc-arab-123",
+ "ABCDEFGH-Thai-456",
+ // unicode_language_subtag sep unicode_region_subtag
+ "en-ME",
+ "abc-RU",
+ "ABCDEFGH-TH",
+ "en-409",
+ "abc-123",
+ "ABCDEFGH-456",
+ // unicode_language_subtag sep unicode_script_subtag sep unicode_region_subtag
+ // sep (sep unicode_variant_subtag)*
+ "en-latn-ME-abcde",
+ "abc-arab-RU-3abc-abcdef",
+ "ABCDEFGH-Thai-TH-ADSFS-9xyz-abcdef",
+ "en-latn-409-xafsa",
+ "abc-arab-123-ADASDF",
+ "ABCDEFGH-Thai-456-9sdf-ADASFAS",
+ // (sep tfield)+
+ "A0-abcde",
+ "z9-abcde123",
+ "z9-abcde123-a1-abcde",
+ // tlang (sep tfield)*
+ "fr-A0-abcde",
+ "fr-FR-A0-abcde",
+ "fr-123-z9-abcde123-a1-abcde",
+ "fr-Latn-FR-z9-abcde123-a1-abcde",
+ "gab-Thai-TH-abcde-z9-abcde123-a1-abcde",
+ "gab-Thai-TH-0bde-z9-abcde123-a1-abcde",
+ };
+ ULocaleBuilder* bld = ulocbld_open();
+ for (int i = 0; i < UPRV_LENGTHOF(wellFormedExtensions); i++) {
+ ulocbld_clear(bld);
+ const char* extension = wellFormedExtensions[i];
+ ulocbld_setExtension(bld, 't', extension, -1);
+ UErrorCode status = U_ZERO_ERROR;
+ if (ulocbld_copyErrorTo(bld, &status)) {
+ log_err("ulocbld_setExtension('t', \"%s\") got Error: %s\n",
+ extension, u_errorName(status));
+ }
+ }
+ ulocbld_close(bld);
+}
+
+static void TestSetExtensionValidateTIllFormed() {
+ static const char* illFormed[] = {
+ "a",
+ "a-",
+ "0",
+ "9-",
+ "-9",
+ "-z",
+ "Latn",
+ "Latn-",
+ "en-",
+ "nob-",
+ "-z9",
+ "a3",
+ "a3-",
+ "3a",
+ "0z-",
+ "en-123-a1",
+ "en-TH-a1",
+ "gab-TH-a1",
+ "gab-Thai-a1",
+ "gab-Thai-TH-a1",
+ "gab-Thai-TH-0bde-a1",
+ "gab-Thai-TH-0bde-3b",
+ "gab-Thai-TH-0bde-z9-a1",
+ "gab-Thai-TH-0bde-z9-3b",
+ "gab-Thai-TH-0bde-z9-abcde123-3b",
+ "gab-Thai-TH-0bde-z9-abcde123-ab",
+ "gab-Thai-TH-0bde-z9-abcde123-ab",
+ "gab-Thai-TH-0bde-z9-abcde123-a1",
+ "gab-Thai-TH-0bde-z9-abcde123-a1-",
+ "gab-Thai-TH-0bde-z9-abcde123-a1-a",
+ "gab-Thai-TH-0bde-z9-abcde123-a1-ab",
+ // ICU-21408
+ "root",
+ };
+ ULocaleBuilder* bld = ulocbld_open();
+ for (int i = 0; i < UPRV_LENGTHOF(illFormed); i++) {
+ ulocbld_clear(bld);
+ const char* ill = illFormed[i];
+ UErrorCode status = U_ZERO_ERROR;
+ ulocbld_setExtension(bld, 't', ill, -1);
+ if (!ulocbld_copyErrorTo(bld, &status) || status != U_ILLEGAL_ARGUMENT_ERROR) {
+ log_err("setExtension('t', \"%s\") should fail but has no Error\n",
+ ill);
+ }
+ }
+ ulocbld_close(bld);
+}
+
+static void TestSetExtensionPU() {
+ ULocaleBuilder* bld = ulocbld_open();
+ ulocbld_setLanguage(bld, "ar123", 2);
+ Verify(bld, "ar",
+ "ulocbld_setLanguage(\"ar\") got Error: %s\n");
+
+ ulocbld_setExtension(bld, 'X', "a-b-c-d-e12345", 9);
+ Verify(bld, "ar-x-a-b-c-d-e",
+ "ulocbld_setExtension('X', \"a-b-c-d-e\") got Error: %s\n");
+
+ ulocbld_setExtension(bld, 'x', "0-1-2-3", -1);
+ Verify(bld, "ar-x-0-1-2-3",
+ "ulocbld_setExtension('x', \"0-1-2-3\") got Error: %s\n");
+
+ ulocbld_setExtension(bld, 'X', "0-12345678-x-x", -1);
+ Verify(bld, "ar-x-0-12345678-x-x",
+ "ulocbld_setExtension('x', \"ar-x-0-12345678-x-x\") got Error: %s\n");
+
+ ulocbld_setRegion(bld, "TH123", 2);
+ Verify(bld, "ar-TH-x-0-12345678-x-x",
+ "ulocbld_setRegion(\"TH\") got Error: %s\n");
+
+ ulocbld_setExtension(bld, 'X', "", -1);
+ Verify(bld, "ar-TH",
+ "ulocbld_setExtension(\"X\") got Error: %s\n");
+ ulocbld_close(bld);
+}
+
+static void TestSetExtensionValidatePUWellFormed() {
+ // ((sep tlang (sep tfield)*) | (sep tfield)+)
+ static const char* wellFormedExtensions[] = {
+ "a", // Short subtag
+ "z", // Short subtag
+ "0", // Short subtag, digit
+ "9", // Short subtag, digit
+ "a-0", // Two short subtag, alpha and digit
+ "9-z", // Two short subtag, digit and alpha
+ "ab",
+ "abc",
+ "abcefghi", // Long subtag
+ "87654321",
+ "01",
+ "234",
+ "0a-ab-87654321", // Three subtags
+ "87654321-ab-00-3A", // Four subtabs
+ "a-9-87654321", // Three subtags with short and long subtags
+ "87654321-ab-0-3A",
+ };
+ ULocaleBuilder* bld = ulocbld_open();
+ for (int i = 0; i < UPRV_LENGTHOF(wellFormedExtensions); i++) {
+ ulocbld_clear(bld);
+ const char* extension = wellFormedExtensions[i];
+ UErrorCode status = U_ZERO_ERROR;
+ ulocbld_setExtension(bld, 'x', extension, -1);
+ if (ulocbld_copyErrorTo(bld, &status) || U_FAILURE(status)) {
+ log_err("setExtension('x', \"%s\") got Error: %s\n",
+ extension, u_errorName(status));
+ }
+ }
+ ulocbld_close(bld);
+}
+
+static void TestSetExtensionValidatePUIllFormed() {
+ static const char* illFormed[] = {
+ "123456789", // Too long
+ "abcdefghi", // Too long
+ "ab-123456789", // Second subtag too long
+ "abcdefghi-12", // First subtag too long
+ "a-ab-987654321", // Third subtag too long
+ "987654321-a-0-3", // First subtag too long
+ };
+ ULocaleBuilder* bld = ulocbld_open();
+ for (int i = 0; i < UPRV_LENGTHOF(illFormed); i++) {
+ const char* ill = illFormed[i];
+ ulocbld_clear(bld);
+ ulocbld_setExtension(bld, 'x', ill, -1);
+ UErrorCode status = U_ZERO_ERROR;
+ if (!ulocbld_copyErrorTo(bld, &status) ||status != U_ILLEGAL_ARGUMENT_ERROR) {
+ log_err("ulocbld_setExtension('x', \"%s\") should fail but has no Error\n",
+ ill);
+ }
+ }
+ ulocbld_close(bld);
+}
+
+static void TestSetExtensionOthers() {
+ ULocaleBuilder* bld = ulocbld_open();
+ ulocbld_setLanguage(bld, "fr", -1);
+ Verify(bld, "fr",
+ "ulocbld_setLanguage(\"fr\") got Error: %s\n");
+
+ ulocbld_setExtension(bld, 'Z', "ab1234", 2);
+ Verify(bld, "fr-z-ab",
+ "ulocbld_setExtension('Z', \"ab\") got Error: %s\n");
+
+ ulocbld_setExtension(bld, '0', "xyz12345-abcdefg", -1);
+ Verify(bld, "fr-0-xyz12345-abcdefg-z-ab",
+ "ulocbld_setExtension('0', \"xyz12345-abcdefg\") got Error: %s\n");
+
+ ulocbld_setExtension(bld, 'a', "01-12345678-ABcdef", -1);
+ Verify(bld, "fr-0-xyz12345-abcdefg-a-01-12345678-abcdef-z-ab",
+ "ulocbld_setExtension('a', \"01-12345678-ABcdef\") got Error: %s\n");
+
+ ulocbld_setRegion(bld, "TH1234", 2);
+ Verify(bld, "fr-TH-0-xyz12345-abcdefg-a-01-12345678-abcdef-z-ab",
+ "ulocbld_setRegion(\"TH\") got Error: %s\n");
+
+ ulocbld_setScript(bld, "Arab", -1);
+ Verify(bld, "fr-Arab-TH-0-xyz12345-abcdefg-a-01-12345678-abcdef-z-ab",
+ "ulocbld_setRegion(\"Arab\") got Error: %s\n");
+
+ ulocbld_setExtension(bld, 'A', "97", 2);
+ Verify(bld, "fr-Arab-TH-0-xyz12345-abcdefg-a-97-z-ab",
+ "ulocbld_setExtension('a', \"97\") got Error: %s\n");
+
+ ulocbld_setExtension(bld, 'a', "", 0);
+ Verify(bld, "fr-Arab-TH-0-xyz12345-abcdefg-z-ab",
+ "ulocbld_setExtension('a', \"\") got Error: %s\n");
+
+ ulocbld_setExtension(bld, '0', "", -1);
+ Verify(bld, "fr-Arab-TH-z-ab",
+ "ulocbld_setExtension('0', \"\") got Error: %s\n");
+ ulocbld_close(bld);
+}
+
+static void TestSetExtensionValidateOthersWellFormed() {
+ static const char* wellFormedExtensions[] = {
+ "ab",
+ "abc",
+ "abcefghi",
+ "01",
+ "234",
+ "87654321",
+ "0a-ab-87654321",
+ "87654321-ab-00-3A",
+ };
+
+ const char * aToZ = "abcdefghijklmnopqrstuvwxyz";
+ const int32_t aToZLen = strlen(aToZ);
+ ULocaleBuilder* bld = ulocbld_open();
+ for (int i = 0; i < UPRV_LENGTHOF(wellFormedExtensions); i++) {
+ const char* extension = wellFormedExtensions[i];
+ ulocbld_clear(bld);
+ char ch = aToZ[i];
+ i = (i + 1) % aToZLen;
+ UErrorCode status = U_ZERO_ERROR;
+ ulocbld_setExtension(bld, ch, extension, -1);
+ if (ulocbld_copyErrorTo(bld, &status) || U_FAILURE(status)) {
+ log_err("ulocbld_setExtension('%c', \"%s\") got Error: %s\n",
+ ch, extension, u_errorName(status));
+ }
+ }
+
+ const char* someChars =
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789`~!@#$%^&*()-_=+;:,.<>?";
+ const int32_t someCharsLen = strlen(someChars);
+ for (int32_t i = 0; i < someCharsLen; i++) {
+ char ch = someChars[i];
+ UErrorCode status = U_ZERO_ERROR;
+ ulocbld_clear(bld);
+ ulocbld_setExtension(bld, ch, wellFormedExtensions[ch % UPRV_LENGTHOF(wellFormedExtensions)], -1);
+ if (uprv_isASCIILetter(ch) || ('0' <= ch && ch <= '9')) {
+ if (ch != 't' && ch != 'T' && ch != 'u' && ch != 'U' && ch != 'x' && ch != 'X') {
+ if (ulocbld_copyErrorTo(bld, &status) || U_FAILURE(status)) {
+ log_err("setExtension('%c', \"%s\") got Error: %s\n",
+ ch, wellFormedExtensions[ch % UPRV_LENGTHOF(wellFormedExtensions)], u_errorName(status));
+ }
+ }
+ } else {
+ if (!ulocbld_copyErrorTo(bld, &status) || status != U_ILLEGAL_ARGUMENT_ERROR) {
+ log_err("setExtension('%c', \"%s\") should fail but has no Error\n",
+ ch, wellFormedExtensions[ch % UPRV_LENGTHOF(wellFormedExtensions)]);
+ }
+ }
+
+ }
+ ulocbld_close(bld);
+}
+
+static void TestSetExtensionValidateOthersIllFormed() {
+ static const char* illFormed[] = {
+ "0", // Too short
+ "a", // Too short
+ "123456789", // Too long
+ "abcdefghi", // Too long
+ "ab-123456789", // Second subtag too long
+ "abcdefghi-12", // First subtag too long
+ "a-ab-87654321", // Third subtag too long
+ "87654321-a-0-3", // First subtag too long
+ };
+ const char * aToZ = "abcdefghijklmnopqrstuvwxyz";
+ const int32_t aToZLen = strlen(aToZ);
+ ULocaleBuilder* bld = ulocbld_open();
+ for (int i = 0; i < UPRV_LENGTHOF(illFormed); i++) {
+ const char* ill = illFormed[i];
+ char ch = aToZ[i];
+ ulocbld_clear(bld);
+ i = (i + 1) % aToZLen;
+ UErrorCode status = U_ZERO_ERROR;
+ ulocbld_setExtension(bld, ch, ill, -1);
+ if (!ulocbld_copyErrorTo(bld, &status) || status != U_ILLEGAL_ARGUMENT_ERROR) {
+ log_err("setExtension('%c', \"%s\") should fail but has no Error\n",
+ ch, ill);
+ }
+ }
+ ulocbld_close(bld);
+}
+
+static void TestSetLocale() {
+ ULocaleBuilder* bld1 = ulocbld_open();
+ ULocaleBuilder* bld2 = ulocbld_open();
+ UErrorCode status = U_ZERO_ERROR;
+
+ ulocbld_setLanguage(bld1, "en", -1);
+ ulocbld_setScript(bld1, "Latn", -1);
+ ulocbld_setRegion(bld1, "MX", -1);
+ ulocbld_setVariant(bld1, "3456-abcde", -1);
+ ulocbld_addUnicodeLocaleAttribute(bld1, "456", -1);
+ ulocbld_addUnicodeLocaleAttribute(bld1, "123", -1);
+ ulocbld_setUnicodeLocaleKeyword(bld1, "nu", -1, "thai", -1);
+ ulocbld_setUnicodeLocaleKeyword(bld1, "co", -1, "stroke", -1);
+ ulocbld_setUnicodeLocaleKeyword(bld1, "ca", -1, "chinese", -1);
+ char locale1[ULOC_FULLNAME_CAPACITY];
+ ulocbld_buildLocaleID(bld1, locale1, ULOC_FULLNAME_CAPACITY, &status);
+
+ if (U_FAILURE(status)) {
+ log_err("build got Error: %s\n", u_errorName(status));
+ }
+ ulocbld_setLocale(bld2, locale1, -1);
+ char locale2[ULOC_FULLNAME_CAPACITY];
+ ulocbld_buildLocaleID(bld2, locale2, ULOC_FULLNAME_CAPACITY, &status);
+ if (U_FAILURE(status)) {
+ log_err("build got Error: %s\n", u_errorName(status));
+ }
+ if (strcmp(locale1, locale2) != 0) {
+ log_err("Two locales should be the same, but one is '%s' and the other is '%s'",
+ locale1, locale2);
+ }
+ ulocbld_close(bld1);
+ ulocbld_close(bld2);
+}
+
+static void TestBuildULocale() {
+ ULocaleBuilder* bld1 = ulocbld_open();
+ UErrorCode status = U_ZERO_ERROR;
+
+ ulocbld_setLanguage(bld1, "fr", -1);
+ ULocale* fr = ulocbld_buildULocale(bld1, &status);
+ if (assertSuccess(WHERE "ulocbld_buildULocale()", &status)) {
+ assertEquals(WHERE "ulocale_getLanguage()", "fr", ulocale_getLanguage(fr));
+ }
+
+ ulocbld_setLanguage(bld1, "ar", -1);
+ ulocbld_setScript(bld1, "Arab", -1);
+ ulocbld_setRegion(bld1, "EG", -1);
+ ulocbld_setVariant(bld1, "3456-abcde", -1);
+ ulocbld_setUnicodeLocaleKeyword(bld1, "nu", -1, "thai", -1);
+ ulocbld_setUnicodeLocaleKeyword(bld1, "co", -1, "stroke", -1);
+ ulocbld_setUnicodeLocaleKeyword(bld1, "ca", -1, "chinese", -1);
+ ULocale* l = ulocbld_buildULocale(bld1, &status);
+
+ if (assertSuccess(WHERE "ulocbld_buildULocale()", &status)) {
+ assertEquals(WHERE "ulocale_getLanguage()", "ar", ulocale_getLanguage(l));
+ assertEquals(WHERE "ulocale_getScript()", "Arab", ulocale_getScript(l));
+ assertEquals(WHERE "ulocale_getRegion()", "EG", ulocale_getRegion(l));
+ assertEquals(WHERE "ulocale_getVariant()", "3456_ABCDE", ulocale_getVariant(l));
+ char buf[ULOC_FULLNAME_CAPACITY];
+ assertIntEquals(WHERE "ulocale_getUnicodeKeywordValue(\"nu\")", 4,
+ ulocale_getUnicodeKeywordValue(l, "nu", -1, buf, ULOC_FULLNAME_CAPACITY, &status));
+ if (assertSuccess(WHERE "ulocale_getUnicodeKeywordValue(\"nu\")", &status)) {
+ assertEquals(WHERE "ulocale_getUnicodeKeywordValue(\"nu\")", "thai", buf);
+ }
+
+ status = U_ZERO_ERROR;
+ assertIntEquals(WHERE "ulocale_getUnicodeKeywordValue(\"co\")", 6,
+ ulocale_getUnicodeKeywordValue(l, "co", -1, buf, ULOC_FULLNAME_CAPACITY, &status));
+ if (assertSuccess(WHERE "ulocale_getUnicodeKeywordValue(\"co\")", &status)) {
+ assertEquals(WHERE "ulocale_getUnicodeKeywordValue(\"co\")", "stroke", buf);
+ }
+
+ status = U_ZERO_ERROR;
+ assertIntEquals(WHERE "ulocale_getUnicodeKeywordValue(\"ca\")", 7,
+ ulocale_getUnicodeKeywordValue(l, "ca", -1, buf, ULOC_FULLNAME_CAPACITY, &status));
+ if (assertSuccess(WHERE "ulocale_getUnicodeKeywordValue(\"ca\")", &status)) {
+ assertEquals(WHERE "ulocale_getUnicodeKeywordValue(\"ca\")", "chinese", buf);
+ }
+ ulocale_close(l);
+ }
+ ulocbld_adoptULocale(bld1, fr);
+ char buf[ULOC_FULLNAME_CAPACITY];
+ ulocbld_buildLocaleID(bld1, buf, ULOC_FULLNAME_CAPACITY, &status);
+ if (assertSuccess(WHERE "ulocbld_buildULocale()", &status)) {
+ assertEquals(WHERE "ulocbld_buildULocale()", "fr", buf);
+ }
+ ulocbld_close(bld1);
+}
+
+
+static void TestPosixCases() {
+ UErrorCode status = U_ZERO_ERROR;
+ ULocaleBuilder* bld = ulocbld_open();
+ ulocbld_setLanguage(bld, "en", -1);
+ ulocbld_setRegion(bld, "MX", -1);
+ ulocbld_setScript(bld, "Arab", -1);
+ ulocbld_setUnicodeLocaleKeyword(bld, "nu", -1, "Thai", -1);
+ ulocbld_setExtension(bld, 'x', "1", -1);
+ // All of above should be cleared by the setLocale call.
+ const char* posix = "en_US_POSIX";
+ ulocbld_setLocale(bld, posix, -1);
+ char locale[ULOC_FULLNAME_CAPACITY];
+ ulocbld_buildLocaleID(bld, locale, ULOC_FULLNAME_CAPACITY, &status);
+ if (U_FAILURE(status)) {
+ log_err("build got Error: %s\n", u_errorName(status));
+ }
+ if (strcmp(posix, locale) != 0) {
+ log_err("The result locale should be the set as the setLocale %s but got %s\n",
+ posix, locale);
+ }
+ ulocbld_close(bld);
+}
+
+#define TESTCASE(name) addTest(root, &name, "tsutil/ulocbuildertst/" #name)
+void addLocaleBuilderTest(TestNode** root)
+{
+ TESTCASE(TestLocaleBuilder);
+ TESTCASE(TestLocaleBuilderBasic);
+ TESTCASE(TestLocaleBuilderBasicWithExtensionsOnDefaultLocale);
+ TESTCASE(TestSetLanguageWellFormed);
+ TESTCASE(TestSetLanguageIllFormed);
+ TESTCASE(TestSetScriptWellFormed);
+ TESTCASE(TestSetScriptIllFormed);
+ TESTCASE(TestSetRegionWellFormed);
+ TESTCASE(TestSetRegionIllFormed);
+ TESTCASE(TestSetVariantWellFormed);
+ TESTCASE(TestSetVariantIllFormed);
+ TESTCASE(TestSetUnicodeLocaleKeywordWellFormed);
+ TESTCASE(TestSetUnicodeLocaleKeywordIllFormedKey);
+ TESTCASE(TestSetUnicodeLocaleKeywordIllFormedValue);
+ TESTCASE(TestAddRemoveUnicodeLocaleAttribute);
+ TESTCASE(TestAddRemoveUnicodeLocaleAttributeWellFormed);
+ TESTCASE(TestAddUnicodeLocaleAttributeIllFormed);
+ TESTCASE(TestSetExtensionU);
+ TESTCASE(TestSetExtensionValidateUWellFormed);
+ TESTCASE(TestSetExtensionValidateUIllFormed);
+ TESTCASE(TestSetExtensionT);
+ TESTCASE(TestSetExtensionValidateTWellFormed);
+ TESTCASE(TestSetExtensionValidateTIllFormed);
+ TESTCASE(TestSetExtensionPU);
+ TESTCASE(TestSetExtensionValidatePUWellFormed);
+ TESTCASE(TestSetExtensionValidatePUIllFormed);
+ TESTCASE(TestSetExtensionOthers);
+ TESTCASE(TestSetExtensionValidateOthersWellFormed);
+ TESTCASE(TestSetExtensionValidateOthersIllFormed);
+ TESTCASE(TestSetLocale);
+ TESTCASE(TestBuildULocale);
+ TESTCASE(TestPosixCases);
+}
diff --git a/Build/source/libs/icu/icu-src/source/test/cintltst/unumberformattertst.c b/Build/source/libs/icu/icu-src/source/test/cintltst/unumberformattertst.c
index 3079dcf302d..93f039f8162 100644
--- a/Build/source/libs/icu/icu-src/source/test/cintltst/unumberformattertst.c
+++ b/Build/source/libs/icu/icu-src/source/test/cintltst/unumberformattertst.c
@@ -12,6 +12,7 @@
#include <stdbool.h>
#include <stdio.h>
#include "unicode/unumberformatter.h"
+#include "unicode/usimplenumberformatter.h"
#include "unicode/umisc.h"
#include "unicode/unum.h"
#include "unicode/ustring.h"
@@ -25,6 +26,10 @@ static void TestSkeletonFormatToFields(void);
static void TestExampleCode(void);
+static void TestSimpleNumberFormatterExample(void);
+
+static void TestSimpleNumberFormatterFull(void);
+
static void TestFormattedValue(void);
static void TestSkeletonParseError(void);
@@ -45,6 +50,8 @@ void addUNumberFormatterTest(TestNode** root) {
TESTCASE(TestSkeletonFormatToString);
TESTCASE(TestSkeletonFormatToFields);
TESTCASE(TestExampleCode);
+ TESTCASE(TestSimpleNumberFormatterExample);
+ TESTCASE(TestSimpleNumberFormatterFull);
TESTCASE(TestFormattedValue);
TESTCASE(TestSkeletonParseError);
TESTCASE(TestToDecimalNumber);
@@ -212,6 +219,60 @@ static void TestExampleCode() {
}
+static void TestSimpleNumberFormatterExample() {
+ // This is the example in usimplenumberformatter.h
+ UErrorCode ec = U_ZERO_ERROR;
+ USimpleNumberFormatter* uformatter = usnumf_openForLocale("bn", &ec);
+ USimpleNumber* unumber = usnum_openForInt64(1000007, &ec);
+ UFormattedNumber* uresult = unumf_openResult(&ec);
+ usnumf_format(uformatter, unumber, uresult, &ec);
+ int32_t len;
+ const UChar* str = ufmtval_getString(unumf_resultAsValue(uresult, &ec), &len, &ec);
+ if (assertSuccess("Formatting end-to-end 1", &ec)) {
+ assertUEquals("Should produce a result in Bangla digits", u"১০,০০,০০৭", str);
+ }
+
+ // Cleanup:
+ unumf_closeResult(uresult);
+ usnum_close(unumber);
+ usnumf_close(uformatter);
+}
+
+
+static void TestSimpleNumberFormatterFull() {
+ UErrorCode ec = U_ZERO_ERROR;
+ USimpleNumberFormatter* uformatter = usnumf_openForLocaleAndGroupingStrategy("de-CH", UNUM_GROUPING_ON_ALIGNED, &ec);
+ UFormattedNumber* uresult = unumf_openResult(&ec);
+
+ usnumf_formatInt64(uformatter, 4321, uresult, &ec);
+ int32_t len;
+ const UChar* str = str = ufmtval_getString(unumf_resultAsValue(uresult, &ec), &len, &ec);
+ if (assertSuccess("Formatting end-to-end 2", &ec)) {
+ assertUEquals("Should produce a result with Swiss symbols", u"4’321", str);
+ }
+
+ USimpleNumber* unumber = usnum_openForInt64(1000007, &ec);
+ usnum_setToInt64(unumber, 98765, &ec);
+ usnum_multiplyByPowerOfTen(unumber, -2, &ec);
+ usnum_roundTo(unumber, -1, UNUM_ROUND_HALFDOWN, &ec);
+ usnum_setMinimumIntegerDigits(unumber, 4, &ec);
+ usnum_setMinimumFractionDigits(unumber, 3, &ec);
+ usnum_truncateStart(unumber, 1, &ec);
+ usnum_setSign(unumber, UNUM_SIMPLE_NUMBER_PLUS_SIGN, &ec);
+
+ usnumf_format(uformatter, unumber, uresult, &ec);
+ str = ufmtval_getString(unumf_resultAsValue(uresult, &ec), &len, &ec);
+ if (assertSuccess("Formatting end-to-end 3", &ec)) {
+ assertUEquals("Should produce a result with mutated number", u"+0’007.600", str);
+ }
+
+ // Cleanup:
+ unumf_closeResult(uresult);
+ usnum_close(unumber);
+ usnumf_close(uformatter);
+}
+
+
static void TestFormattedValue() {
UErrorCode ec = U_ZERO_ERROR;
UNumberFormatter* uformatter = unumf_openForSkeletonAndLocale(
@@ -357,7 +418,7 @@ static void TestPerUnitInArabic() {
for(int32_t i=0; i < UPRV_LENGTHOF(simpleMeasureUnits); ++i) {
for(int32_t j=0; j < UPRV_LENGTHOF(simpleMeasureUnits); ++j) {
status = U_ZERO_ERROR;
- sprintf(buffer, "measure-unit/%s per-measure-unit/%s",
+ snprintf(buffer, sizeof(buffer), "measure-unit/%s per-measure-unit/%s",
simpleMeasureUnits[i], simpleMeasureUnits[j]);
int32_t outputlen = 0;
u_strFromUTF8(ubuffer, BUFFER_LEN, &outputlen, buffer, (int32_t)strlen(buffer), &status);
diff --git a/Build/source/libs/icu/icu-src/source/test/cintltst/usrchtst.c b/Build/source/libs/icu/icu-src/source/test/cintltst/usrchtst.c
index 73906f733ca..8c3496a186e 100644
--- a/Build/source/libs/icu/icu-src/source/test/cintltst/usrchtst.c
+++ b/Build/source/libs/icu/icu-src/source/test/cintltst/usrchtst.c
@@ -148,7 +148,7 @@ static char *toCharString(const UChar* unichars)
*temp ++ = (char)ch;
}
else {
- sprintf(temp, "\\u%04x", ch);
+ snprintf(temp, sizeof(result) - (temp-result), "\\u%04x", ch);
temp += 6; /* \uxxxx */
}
}
diff --git a/Build/source/libs/icu/icu-src/source/test/cintltst/utransts.c b/Build/source/libs/icu/icu-src/source/test/cintltst/utransts.c
index ecd3c365e0c..118625f31a3 100644
--- a/Build/source/libs/icu/icu-src/source/test/cintltst/utransts.c
+++ b/Build/source/libs/icu/icu-src/source/test/cintltst/utransts.c
@@ -586,7 +586,7 @@ static void TestExtractBetween() {
static const UChar transSimpleID[] = { 0x79,0x6F,0x2D,0x79,0x6F,0x5F,0x42,0x4A,0 }; /* "yo-yo_BJ" */
static const char* transSimpleCName = "yo-yo_BJ";
-enum { kUBufMax = 256 };
+enum { kUBufMax = 512 };
static void TestGetRulesAndSourceSet() {
UErrorCode status = U_ZERO_ERROR;
UTransliterator *utrans = utrans_openU(transSimpleID, -1, UTRANS_FORWARD, NULL, 0, NULL, &status);
@@ -656,7 +656,7 @@ static const TransIDSourceTarg dataVarCompItems[] = {
"\\uFF33\\uFF41\\uFF4D\\uFF50\\uFF4C\\uFF45\\u3000\\uFF54\\uFF45\\uFF58\\uFF54\\uFF0C\\u3000\\u30B5\\u30F3\\u30D7\\u30EB\\u30C6\\u30AD\\u30B9\\u30C8\\uFF0E" },
{ "Han-Latin/Names; Latin-Bopomofo",
"\\u4E07\\u4FDF\\u919C\\u5974\\u3001\\u533A\\u695A\\u826F\\u3001\\u4EFB\\u70E8\\u3001\\u5CB3\\u98DB",
- "\\u3107\\u311B\\u02CB \\u3111\\u3127\\u02CA \\u3114\\u3121\\u02C7 \\u310B\\u3128\\u02CA\\u3001 \\u3121 \\u3114\\u3128\\u02C7 \\u310C\\u3127\\u3124\\u02CA\\u3001 \\u3116\\u3123\\u02CA \\u3127\\u311D\\u02CB\\u3001 \\u3129\\u311D\\u02CB \\u3108\\u311F" },
+ "\\u3107\\u311B\\u02CB \\u3111\\u3127\\u02CA \\u3114\\u3121\\u02C7 \\u310B\\u3128\\u02CA, \\u3121 \\u3114\\u3128\\u02C7 \\u310C\\u3127\\u3124\\u02CA, \\u3116\\u3123\\u02CA \\u3127\\u311D\\u02CB, \\u3129\\u311D\\u02CB \\u3108\\u311F" },
{ "Greek-Latin",
"\\u1F08 \\u1FBC \\u1F89 \\u1FEC",
"A \\u0100I H\\u0100I RH" },
@@ -671,7 +671,7 @@ static const TransIDSourceTarg dataVarCompItems[] = {
{ NULL, NULL, NULL }
};
-enum { kBBufMax = 384 };
+enum { kBBufMax = 1024 };
static void TestDataVariantsCompounds() {
const TransIDSourceTarg* itemsPtr;
for (itemsPtr = dataVarCompItems; itemsPtr->transID != NULL; itemsPtr++) {
@@ -694,8 +694,8 @@ static void TestDataVariantsCompounds() {
int32_t expectLen = u_unescape(itemsPtr->targetText, expect, kUBufMax);
if (textLen != expectLen || u_strncmp(text, expect, textLen) != 0) {
char btext[kBBufMax], bexpect[kBBufMax];
- u_austrncpy(btext, text, textLen);
- u_austrncpy(bexpect, expect, expectLen);
+ u_austrncpy(btext, text, kUBufMax);
+ u_austrncpy(bexpect, expect, kUBufMax);
log_err("FAIL: utrans_transUChars(%s),\n expect %s\n get %s\n", itemsPtr->transID, bexpect, btext);
}
}
diff --git a/Build/source/libs/icu/icu-src/source/test/depstest/dependencies.txt b/Build/source/libs/icu/icu-src/source/test/depstest/dependencies.txt
index d0cb8a80a22..1486b779f76 100644
--- a/Build/source/libs/icu/icu-src/source/test/depstest/dependencies.txt
+++ b/Build/source/libs/icu/icu-src/source/test/depstest/dependencies.txt
@@ -22,7 +22,7 @@ system_symbols:
exp_and_tanhf
stdlib_qsort
system_locale
- stdio_input stdio_output file_io readlink_function dir_io mmap_functions dlfcn
+ stdio_input stdio_output file_io dir_io mmap_functions dlfcn
# C++
cplusplus iostream
std_mutex
@@ -48,6 +48,9 @@ group: std_mutex
std::condition_variable::~condition_variable()
std::condition_variable_any::condition_variable_any()
std::condition_variable_any::~condition_variable_any()
+ pthread_once
+ pthread_mutex_lock
+ pthread_mutex_unlock
group: ubsan
# UBSan=UndefinedBehaviorSanitizer, clang -fsanitize=bounds
@@ -107,11 +110,8 @@ group: file_io
# Additional symbols in an optimized build.
__xstat
-group: readlink_function
- readlink # putil.cpp uprv_tzname() calls this in a hack to get the time zone name
-
group: dir_io
- opendir closedir readdir # for a hack to get the time zone name
+ opendir closedir readdir readlink realpath # for a hack to get the time zone name
group: mmap_functions # for memory-mapped data loading
mmap munmap
@@ -145,6 +145,7 @@ group: iostream
"std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)"
std::ios_base::Init::Init()
std::ios_base::Init::~Init()
+ std::ios_base_library_init()
std::istream::get()
std::istream::putback(char)
# Additional symbols in an optimized build.
@@ -211,7 +212,7 @@ group: breakiterator
brkiter.o brkeng.o ubrk.o
rbbi.o rbbinode.o rbbiscan.o rbbisetb.o rbbistbl.o rbbitblb.o
rbbidata.o rbbirb.o rbbi_cache.o
- dictionarydata.o dictbe.o lstmbe.o
+ dictionarydata.o dictbe.o lstmbe.o mlbe.o
# BreakIterator::makeInstance() factory implementation makes for circular dependency
# between BreakIterator base and FilteredBreakIteratorBuilder.
filteredbrk.o
@@ -348,7 +349,7 @@ group: uniset_core
group: icu_utility_with_props
util_props.o
deps
- icu_utility uchar ucase
+ icu_utility uchar ucase uprops
group: icu_utility
util.o
@@ -650,17 +651,21 @@ group: resourcebundle
locbased.o
loclikely.o
localebuilder.o
+ ulocale.o
+ ulocbuilder.o
+ loclikelysubtags.o
deps
udata ucol_swp
sort stringenumeration uhash uvector
uscript_props propname
bytesinkutil
errorcode
+ lsr
group: localematcher
localematcher.o
deps
- resourcebundle localeprioritylist loclikelysubtags locdistance lsr
+ resourcebundle localeprioritylist locdistance
group: localeprioritylist
localeprioritylist.o
@@ -670,12 +675,7 @@ group: localeprioritylist
group: locdistance
locdistance.o
deps
- loclikelysubtags
-
-group: loclikelysubtags
- loclikelysubtags.o
- deps
- lsr resourcebundle
+ resourcebundle
group: lsr
lsr.o
@@ -866,7 +866,7 @@ group: platform
PIC system_misc system_debug malloc_functions ubsan
c_strings c_string_formatting
floating_point system_locale
- stdio_input readlink_function dir_io
+ stdio_input dir_io
dlfcn # Move related code into icuplug.c?
cplusplus
std_mutex
@@ -915,7 +915,7 @@ group: charset_detector
group: spoof_detection
uspoof.o uspoof_build.o uspoof_conf.o uspoof_impl.o scriptset.o
deps
- uniset_props regex unorm uscript
+ uniset_props regex unorm uscript ubidi
group: alphabetic_index
alphaindex.o
@@ -1007,6 +1007,9 @@ group: numberformatter
number_scientific.o
currpinf.o
numrange_fluent.o numrange_impl.o
+ # NOTE: This could go into its own dependency block, but it would require
+ # refactoring more of the dependencies (e.g. removing class methods).
+ number_simple.o
deps
decnumber double_conversion formattable units unitsformatter
listformatter number_representation number_output
@@ -1078,7 +1081,7 @@ group: formatting
measfmt.o quantityformatter.o
# dateformat
astro.o buddhcal.o calendar.o cecal.o chnsecal.o coptccal.o dangical.o ethpccal.o
- gregocal.o gregoimp.o hebrwcal.o indiancal.o islamcal.o japancal.o persncal.o taiwncal.o
+ gregocal.o gregoimp.o hebrwcal.o indiancal.o islamcal.o iso8601cal.o japancal.o persncal.o taiwncal.o
erarules.o # mostly for Japanese eras
ucal.o
basictz.o olsontz.o rbtz.o simpletz.o timezone.o tzrule.o tztrans.o
diff --git a/Build/source/libs/icu/icu-src/source/test/fuzzer/Makefile.in b/Build/source/libs/icu/icu-src/source/test/fuzzer/Makefile.in
index 259e6b0a7a1..28edbcb4963 100644
--- a/Build/source/libs/icu/icu-src/source/test/fuzzer/Makefile.in
+++ b/Build/source/libs/icu/icu-src/source/test/fuzzer/Makefile.in
@@ -33,7 +33,7 @@ CPPFLAGS += -I$(srcdir) -I$(top_srcdir)/common -I$(top_srcdir)/i18n -I$(top_srcd
DEFS += -D'U_TOPSRCDIR="$(top_srcdir)/"' -D'U_TOPBUILDDIR="$(BUILDDIR)"'
LIBS = $(LIBCTESTFW) $(LIBICUTOOLUTIL) $(LIBICUIO) $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
-FUZZER_TARGETS = break_iterator_fuzzer collator_compare_fuzzer collator_rulebased_fuzzer converter_fuzzer locale_fuzzer number_format_fuzzer ucasemap_fuzzer uloc_canonicalize_fuzzer uloc_for_language_tag_fuzzer uloc_get_name_fuzzer uloc_is_right_to_left_fuzzer uloc_open_keywords_fuzzer unicode_string_codepage_create_fuzzer uregex_open_fuzzer
+FUZZER_TARGETS = break_iterator_fuzzer calendar_fuzzer collator_compare_fuzzer collator_rulebased_fuzzer converter_fuzzer date_format_fuzzer list_format_fuzzer locale_fuzzer locale_morph_fuzzer number_format_fuzzer relative_date_time_formatter_fuzzer ucasemap_fuzzer uloc_canonicalize_fuzzer uloc_for_language_tag_fuzzer uloc_get_name_fuzzer uloc_is_right_to_left_fuzzer uloc_open_keywords_fuzzer unicode_string_codepage_create_fuzzer uregex_open_fuzzer
OBJECTS = $(FUZZER_TARGETS:%=%.o)
OBJECTS += fuzzer_driver.o locale_util.o
diff --git a/Build/source/libs/icu/icu-src/source/test/fuzzer/calendar_fuzzer.cpp b/Build/source/libs/icu/icu-src/source/test/fuzzer/calendar_fuzzer.cpp
new file mode 100644
index 00000000000..c6071fdd411
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/fuzzer/calendar_fuzzer.cpp
@@ -0,0 +1,132 @@
+// © 2023 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+// Fuzzer for ICU Calendar.
+
+#include <cstring>
+
+#include "fuzzer_utils.h"
+
+#include "unicode/calendar.h"
+#include "unicode/localebuilder.h"
+#include "unicode/locid.h"
+
+icu::TimeZone* CreateRandomTimeZone(uint16_t rnd) {
+ icu::Locale und("und");
+ UErrorCode status = U_ZERO_ERROR;
+ std::unique_ptr<icu::StringEnumeration> enumeration(
+ icu::TimeZone::createEnumeration(status));
+ if (U_SUCCESS(status)) {
+ int32_t count = enumeration->count(status);
+ if (U_SUCCESS(status)) {
+ int32_t i = rnd % count;
+ const icu::UnicodeString* id = nullptr;
+ do {
+ id = enumeration->snext(status);
+ } while (U_SUCCESS(status) && --i > 0);
+ if (U_SUCCESS(status)) {
+ return icu::TimeZone::createTimeZone(*id);
+ }
+ }
+ }
+ return icu::TimeZone::getGMT()->clone();
+}
+const char* GetRandomCalendarType(uint8_t rnd) {
+ icu::Locale und("und");
+ UErrorCode status = U_ZERO_ERROR;
+ std::unique_ptr<icu::StringEnumeration> enumeration(
+ icu::Calendar::getKeywordValuesForLocale("calendar", und, false, status));
+ const char* type = "";
+ if (U_SUCCESS(status)) {
+ int32_t count = enumeration->count(status);
+ if (U_SUCCESS(status)) {
+ int32_t i = rnd % count;
+ do {
+ type = enumeration->next(nullptr, status);
+ } while (U_SUCCESS(status) && --i > 0);
+ }
+ }
+ type = uloc_toUnicodeLocaleType("ca", type);
+ return type;
+}
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
+ uint16_t rnd;
+ if (size < 2*sizeof(rnd) + 1) return 0;
+ icu::StringPiece fuzzData(reinterpret_cast<const char *>(data), size);
+ // Byte 0 and 1 randomly select a TimeZone
+ std::memcpy(&rnd, fuzzData.data(), sizeof(rnd));
+ fuzzData.remove_prefix(sizeof(rnd));
+ std::unique_ptr<icu::TimeZone> timeZone(CreateRandomTimeZone(rnd));
+
+ // Byte 1 and 2 randomly select a Locale
+ std::memcpy(&rnd, fuzzData.data(), sizeof(rnd));
+ fuzzData.remove_prefix(sizeof(rnd));
+ icu::Locale locale = GetRandomLocale(rnd);
+
+ // Byte 4 randomly select a Calendar type
+ const char* type = GetRandomCalendarType(*fuzzData.data());
+ fuzzData.remove_prefix(1);
+
+ UErrorCode status = U_ZERO_ERROR;
+ icu::LocaleBuilder bld;
+ bld.setLocale(locale);
+ bld.setUnicodeLocaleKeyword("ca", type);
+ locale = bld.build(status);
+ if (U_FAILURE(status)) return 0;
+ std::unique_ptr<icu::Calendar> cal(
+ icu::Calendar::createInstance(*timeZone, locale, status));
+ if (U_FAILURE(status)) return 0;
+ cal->clear();
+
+ int32_t amount;
+ double time;
+ while (fuzzData.length() > 2 + static_cast<int32_t>(sizeof(time))) {
+ UCalendarDateFields field = static_cast<UCalendarDateFields>(
+ (*fuzzData.data()) % UCAL_FIELD_COUNT);
+ fuzzData.remove_prefix(1);
+
+ uint8_t command = *fuzzData.data();
+ fuzzData.remove_prefix(1);
+
+ std::memcpy(&time, fuzzData.data(), sizeof(time));
+ std::memcpy(&amount, fuzzData.data(), sizeof(amount));
+ fuzzData.remove_prefix(sizeof(time));
+
+ status = U_ZERO_ERROR;
+ switch (command % 7) {
+ case 0:
+ printf("setTime(%f)\n", time);
+ cal->setTime(time, status);
+ break;
+ case 1:
+ printf("getTime()\n");
+ cal->getTime(status);
+ break;
+ case 2:
+ printf("set(%d, %d)\n", field, amount);
+ cal->set(field, amount);
+ break;
+ case 3:
+ printf("add(%d, %d)\n", field, amount);
+ cal->add(field, amount, status);
+ break;
+ case 4:
+ printf("roll(%d, %d)\n", field, amount);
+ cal->roll(field, amount, status);
+ break;
+ case 5:
+ printf("fieldDifference(%f, %d)\n", time, field);
+ cal->fieldDifference(time, field, status);
+ break;
+ case 6:
+ printf("get(%d)\n", field);
+ cal->get(field, status);
+ break;
+ default:
+ break;
+ }
+ }
+
+ return EXIT_SUCCESS;
+}
diff --git a/Build/source/libs/icu/icu-src/source/test/fuzzer/collator_compare_fuzzer.cpp b/Build/source/libs/icu/icu-src/source/test/fuzzer/collator_compare_fuzzer.cpp
index 87b2ea98c2c..3eb9cf025f7 100644
--- a/Build/source/libs/icu/icu-src/source/test/fuzzer/collator_compare_fuzzer.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/fuzzer/collator_compare_fuzzer.cpp
@@ -1,6 +1,7 @@
// © 2019 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html
+#include <array>
#include <cstring>
#include "fuzzer_utils.h"
@@ -10,23 +11,45 @@
IcuEnvironment* env = new IcuEnvironment();
+static const std::array<icu::Collator::ECollationStrength, 5> kStrength = {
+ icu::Collator::PRIMARY,
+ icu::Collator::SECONDARY,
+ icu::Collator::TERTIARY,
+ icu::Collator::QUATERNARY,
+ icu::Collator::IDENTICAL
+};
+
extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
UErrorCode status = U_ZERO_ERROR;
- if (size < 2)
+ uint16_t rnd16;
+
+ if (size < 2 + sizeof(rnd16))
return 0;
+ std::memcpy(&rnd16, data, sizeof(rnd16));
+ size -= sizeof(rnd16);
+ data += sizeof(rnd16);
+ icu::Collator::ECollationStrength strength = kStrength[rnd16 % kStrength.size()];
+ const icu::Locale& locale = GetRandomLocale(rnd16 / kStrength.size());
+
+ // Limit the comparison size to 4096 to avoid unnecessary timeout
+ if (size > 4096) {
+ size = 4096;
+ }
std::unique_ptr<char16_t> compbuff1(new char16_t[size/4]);
std::memcpy(compbuff1.get(), data, (size/4)*2);
data = data + size/2;
std::unique_ptr<char16_t> compbuff2(new char16_t[size/4]);
std::memcpy(compbuff2.get(), data, (size/4)*2);
+
icu::LocalPointer<icu::Collator> fuzzCollator(
- icu::Collator::createInstance(icu::Locale::getUS(), status), status);
+ icu::Collator::createInstance(locale, status), status);
if (U_FAILURE(status))
return 0;
- fuzzCollator->setStrength(icu::Collator::TERTIARY);
+
+ fuzzCollator->setStrength(strength);
fuzzCollator->compare(compbuff1.get(), size/4,
compbuff2.get(), size/4);
diff --git a/Build/source/libs/icu/icu-src/source/test/fuzzer/collator_compare_fuzzer_seed_corpus.txt b/Build/source/libs/icu/icu-src/source/test/fuzzer/collator_compare_fuzzer_seed_corpus.txt
new file mode 100644
index 00000000000..bdc6416a7a4
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/fuzzer/collator_compare_fuzzer_seed_corpus.txt
Binary files differ
diff --git a/Build/source/libs/icu/icu-src/source/test/fuzzer/date_format_fuzzer.cpp b/Build/source/libs/icu/icu-src/source/test/fuzzer/date_format_fuzzer.cpp
new file mode 100644
index 00000000000..bdcfad3f83c
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/fuzzer/date_format_fuzzer.cpp
@@ -0,0 +1,87 @@
+// © 2023 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+// Fuzzer for ICU Calendar.
+
+#include <cstring>
+
+#include "fuzzer_utils.h"
+
+#include "unicode/datefmt.h"
+#include "unicode/locid.h"
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
+ uint16_t rnd;
+ uint8_t rnd2;
+ UDate date;
+ icu::DateFormat::EStyle styles[] = {
+ icu::DateFormat::EStyle::kNone,
+ icu::DateFormat::EStyle::kFull,
+ icu::DateFormat::EStyle::kLong,
+ icu::DateFormat::EStyle::kMedium,
+ icu::DateFormat::EStyle::kShort,
+ icu::DateFormat::EStyle::kDateOffset,
+ icu::DateFormat::EStyle::kDateTime,
+ icu::DateFormat::EStyle::kDateTimeOffset,
+ icu::DateFormat::EStyle::kRelative,
+ icu::DateFormat::EStyle::kFullRelative,
+ icu::DateFormat::EStyle::kLongRelative,
+ icu::DateFormat::EStyle::kMediumRelative,
+ icu::DateFormat::EStyle::kShortRelative,
+ };
+ int32_t numStyles = sizeof(styles) / sizeof(icu::DateFormat::EStyle);
+
+ icu::DateFormat::EStyle dateStyle;
+ icu::DateFormat::EStyle timeStyle;
+ if (size < sizeof(rnd) + sizeof(date) + 2*sizeof(rnd2) +
+ sizeof(dateStyle) + sizeof(timeStyle) ) {
+ return 0;
+ }
+ icu::StringPiece fuzzData(reinterpret_cast<const char *>(data), size);
+
+ std::memcpy(&rnd, fuzzData.data(), sizeof(rnd));
+ fuzzData.remove_prefix(sizeof(rnd));
+ icu::Locale locale = GetRandomLocale(rnd);
+
+ std::memcpy(&dateStyle, fuzzData.data(), sizeof(dateStyle));
+ fuzzData.remove_prefix(sizeof(dateStyle));
+ std::memcpy(&timeStyle, fuzzData.data(), sizeof(timeStyle));
+ fuzzData.remove_prefix(sizeof(timeStyle));
+
+ std::memcpy(&rnd2, fuzzData.data(), sizeof(rnd2));
+ icu::DateFormat::EStyle dateStyle2 = styles[rnd2 % numStyles];
+ fuzzData.remove_prefix(sizeof(rnd2));
+
+ std::memcpy(&rnd2, fuzzData.data(), sizeof(rnd2));
+ icu::DateFormat::EStyle timeStyle2 = styles[rnd2 % numStyles];
+ fuzzData.remove_prefix(sizeof(rnd2));
+
+ std::memcpy(&date, fuzzData.data(), sizeof(date));
+ fuzzData.remove_prefix(sizeof(date));
+
+ std::unique_ptr<icu::DateFormat> df(
+ icu::DateFormat::createDateTimeInstance(dateStyle, timeStyle, locale));
+ icu::UnicodeString appendTo;
+ df->format(date, appendTo);
+
+ df.reset(
+ icu::DateFormat::createDateTimeInstance(dateStyle2, timeStyle2, locale));
+ appendTo.remove();
+ df->format(date, appendTo);
+ icu::UnicodeString skeleton = icu::UnicodeString::fromUTF8(fuzzData);
+
+ UErrorCode status = U_ZERO_ERROR;
+ appendTo.remove();
+ df.reset(icu::DateFormat::createInstanceForSkeleton(skeleton, status));
+ if (U_SUCCESS(status)) {
+ df->format(date, appendTo);
+ }
+
+ status = U_ZERO_ERROR;
+ appendTo.remove();
+ df.reset(icu::DateFormat::createInstanceForSkeleton(skeleton, locale, status));
+ if (U_SUCCESS(status)) {
+ df->format(date, appendTo);
+ }
+ return EXIT_SUCCESS;
+}
diff --git a/Build/source/libs/icu/icu-src/source/test/fuzzer/list_format_fuzzer.cpp b/Build/source/libs/icu/icu-src/source/test/fuzzer/list_format_fuzzer.cpp
new file mode 100644
index 00000000000..e6b5de3d049
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/fuzzer/list_format_fuzzer.cpp
@@ -0,0 +1,69 @@
+// © 2023 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+// Fuzzer for ICU Calendar.
+
+#include <cstring>
+
+#include "fuzzer_utils.h"
+
+#include "unicode/listformatter.h"
+#include "unicode/locid.h"
+
+
+void TestFormat(icu::ListFormatter* listFormat, const icu::UnicodeString* items) {
+ for (size_t i = 0; i <= 4; i++) {
+ icu::UnicodeString appendTo;
+ UErrorCode status = U_ZERO_ERROR;
+ listFormat->format(items, i, appendTo, status);
+ status = U_ZERO_ERROR;
+ icu::FormattedList formatted = listFormat->formatStringsToValue(items, i, status);
+ }
+}
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
+ uint16_t rnd;
+ UListFormatterType type;
+ UListFormatterWidth width;
+ if (size < sizeof(rnd) + sizeof(type) + sizeof(width)) return 0;
+ icu::StringPiece fuzzData(reinterpret_cast<const char *>(data), size);
+
+ std::memcpy(&rnd, fuzzData.data(), sizeof(rnd));
+ icu::Locale locale = GetRandomLocale(rnd);
+ fuzzData.remove_prefix(sizeof(rnd));
+
+ std::memcpy(&type, fuzzData.data(), sizeof(type));
+ fuzzData.remove_prefix(sizeof(type));
+ std::memcpy(&width, fuzzData.data(), sizeof(width));
+ fuzzData.remove_prefix(sizeof(width));
+
+ size_t len = fuzzData.size() / sizeof(char16_t);
+ icu::UnicodeString text(false, reinterpret_cast<const char16_t*>(fuzzData.data()), len);
+ const icu::UnicodeString items[] = { text, text, text, text };
+
+ UErrorCode status = U_ZERO_ERROR;
+ std::unique_ptr<icu::ListFormatter> listFormat(
+ icu::ListFormatter::createInstance(locale, status));
+ if (U_SUCCESS(status)) {
+ TestFormat(listFormat.get(), items);
+ }
+
+ status = U_ZERO_ERROR;
+ listFormat.reset(
+ icu::ListFormatter::createInstance(locale, type, width, status));
+ if (U_SUCCESS(status)) {
+ TestFormat(listFormat.get(), items);
+ }
+
+ status = U_ZERO_ERROR;
+ type = static_cast<UListFormatterType>(
+ static_cast<int>(type) % (static_cast<int>(ULISTFMT_TYPE_UNITS) + 1));
+ width = static_cast<UListFormatterWidth>(
+ static_cast<int>(width) % (static_cast<int>(ULISTFMT_WIDTH_NARROW) + 1));
+ listFormat.reset(
+ icu::ListFormatter::createInstance(locale, type, width, status));
+ if (U_SUCCESS(status)) {
+ TestFormat(listFormat.get(), items);
+ }
+
+ return EXIT_SUCCESS;
+}
diff --git a/Build/source/libs/icu/icu-src/source/test/fuzzer/locale_morph_fuzzer.cpp b/Build/source/libs/icu/icu-src/source/test/fuzzer/locale_morph_fuzzer.cpp
new file mode 100644
index 00000000000..e3d2b7dc342
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/fuzzer/locale_morph_fuzzer.cpp
@@ -0,0 +1,109 @@
+// © 2019 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+// Fuzzer for ICU Locales.
+
+#include <algorithm>
+#include <cstddef>
+#include <cstdint>
+#include <cstdlib>
+#include <set>
+#include <string>
+#include <vector>
+
+#include "unicode/locid.h"
+#include "unicode/localpointer.h"
+#include "unicode/stringpiece.h"
+
+#include "locale_util.h"
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
+ if (size < 1) return 0;
+ icu::StringPiece fuzzData(reinterpret_cast<const char *>(data), size);
+ uint8_t rnd = *fuzzData.data();
+ fuzzData.remove_prefix(1);
+ const std::string input = MakeZeroTerminatedInput(
+ (const uint8_t*)(fuzzData.data()), fuzzData.length());
+
+ icu::Locale locale(input.c_str());
+ UErrorCode status = U_ZERO_ERROR;
+ switch(rnd % 8) {
+ case 0:
+ locale.addLikelySubtags(status);
+ break;
+ case 1:
+ locale.minimizeSubtags(status);
+ break;
+ case 2:
+ locale.canonicalize(status);
+ break;
+ case 3:
+ {
+ icu::LocalPointer<icu::StringEnumeration> senum(
+ locale.createKeywords(status), status);
+ while (U_SUCCESS(status) &&
+ (senum->next(nullptr, status)) != nullptr) {
+ // noop
+ }
+ }
+ break;
+ case 4:
+ {
+ icu::LocalPointer<icu::StringEnumeration> senum(
+ locale.createUnicodeKeywords(status), status);
+ while (U_SUCCESS(status) &&
+ (senum->next(nullptr, status)) != nullptr) {
+ // noop
+ }
+ }
+ break;
+ case 5:
+ {
+ char buf[256];
+ icu::CheckedArrayByteSink sink(buf, rnd);
+ locale.toLanguageTag(sink, status);
+ }
+ break;
+ case 6:
+ {
+ std::set<std::string> keys;
+ locale.getKeywords<std::string>(
+ std::insert_iterator<decltype(keys)>(keys, keys.begin()),
+ status);
+ if (U_SUCCESS(status)) {
+ char buf[256];
+ icu::CheckedArrayByteSink sink(buf, rnd);
+ for (std::set<std::string>::iterator it=keys.begin();
+ it!=keys.end();
+ ++it) {
+ locale.getKeywordValue(
+ icu::StringPiece(it->c_str(), it->length()), sink,
+ status);
+ }
+ }
+ }
+ break;
+ case 7:
+ {
+ std::set<std::string> keys;
+ locale.getUnicodeKeywords<std::string>(
+ std::insert_iterator<decltype(keys)>(keys, keys.begin()),
+ status);
+ if (U_SUCCESS(status)) {
+ char buf[256];
+ icu::CheckedArrayByteSink sink(buf, rnd);
+ for (std::set<std::string>::iterator it=keys.begin();
+ it!=keys.end();
+ ++it) {
+ locale.getUnicodeKeywordValue(
+ icu::StringPiece(it->c_str(), it->length()), sink,
+ status);
+ }
+ }
+ }
+ break;
+ default:
+ break;
+ }
+ return EXIT_SUCCESS;
+}
diff --git a/Build/source/libs/icu/icu-src/source/test/fuzzer/locale_morph_fuzzer_seed_corpus.txt b/Build/source/libs/icu/icu-src/source/test/fuzzer/locale_morph_fuzzer_seed_corpus.txt
new file mode 100644
index 00000000000..544a4064502
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/fuzzer/locale_morph_fuzzer_seed_corpus.txt
@@ -0,0 +1,30 @@
+1sr-Cyrl-RS
+2zz-UND
+3de_DE
+4De_dE
+5en-US-u-islamcal
+6zh-CN-a-myext-x-private
+7en-a-myext-b-another
+8de-419-DE
+9a-DE
+0ar-a-aaa-b-bbb-a-ccc
+asl-rozaj
+bsl-rozaj-biske
+cde-CH-1901
+dsl-IT-nedis
+ehy-Latn-IT-arevela
+faz-Arab-x-AZE-derbend
+gCompletely bad text for locale, even includes spaces and interpunction.!?
+hfr-u-nu-arabext
+ide-u-nu-beng-nu-bali-nu-khmr
+jfil-u-ca-buddhist
+kzh-Hant-CN-u-nu-arabext-ca-islamicc
+lja-u-ca-japanese
+mhr-HR-u-ca-roc
+n1234
+oAAAAaaaaaaaVVVV_-=+
+pja%-x-%e3
+qyq-U-98x-M85E-9pE-85Y-8xU985YE-89xxUy-xEyq-U85Y-8xE8-q5Y-8xU-9xE
+rUN-u-jTKMwi-a0q-aeae-KaG-aab-2aG2-36C-2uzeal-STqROK-U36-366-U86-83S-c3SZEC-SCG-1366-SG66-KMi-a0ae-qae-KaG-aab-1a3
+ssr-sr-u-z2r-4su-nms-5rsu-mns-6um-s5su-msu-ins1-7rzx-ianu-ssd-ss5r-d0r-U22su-n5sx-lvar-5su-ssu-nax-lvarUd-uimxE-112
+tHR-u-roc85Y-4xU-d0r-U22x-lvariant-ims-0d0U22-js17zr-rsm-u56su-csu-ins1-ins17Rz-zax-ianu-ssd-d0U22-js1-7rzrsm-u56su-csu-ins1-ins17Rz-z
diff --git a/Build/source/libs/icu/icu-src/source/test/fuzzer/locale_util.h b/Build/source/libs/icu/icu-src/source/test/fuzzer/locale_util.h
index 09848ff4a37..85594454f87 100644
--- a/Build/source/libs/icu/icu-src/source/test/fuzzer/locale_util.h
+++ b/Build/source/libs/icu/icu-src/source/test/fuzzer/locale_util.h
@@ -4,6 +4,7 @@
#ifndef I18N_ICU_FUZZ_LOCALE_UTIL_H_
#define I18N_ICU_FUZZ_LOCALE_UTIL_H_
+#include <cstdint>
#include <string>
// Takes uint8_t data from fuzzer, and makes a zero terminated string.
diff --git a/Build/source/libs/icu/icu-src/source/test/fuzzer/relative_date_time_formatter_fuzzer.cpp b/Build/source/libs/icu/icu-src/source/test/fuzzer/relative_date_time_formatter_fuzzer.cpp
new file mode 100644
index 00000000000..007d350f2c9
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/fuzzer/relative_date_time_formatter_fuzzer.cpp
@@ -0,0 +1,99 @@
+// © 2023 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+// Fuzzer for ICU RelativeDateTimeFormatter.
+
+#include <cstring>
+
+#include "fuzzer_utils.h"
+
+#include "unicode/reldatefmt.h"
+#include "unicode/locid.h"
+
+const UDisplayContext validCapitalizations[] = {
+ UDISPCTX_CAPITALIZATION_NONE,
+ UDISPCTX_CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE,
+ UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE,
+ UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU,
+ UDISPCTX_CAPITALIZATION_FOR_STANDALONE
+};
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
+ uint16_t rnd;
+ UDateRelativeDateTimeFormatterStyle style;
+ UDisplayContext context;
+ if (size < sizeof(rnd) + sizeof(style) + sizeof(context) ) return 0;
+ icu::StringPiece fuzzData(reinterpret_cast<const char *>(data), size);
+
+ std::memcpy(&rnd, fuzzData.data(), sizeof(rnd));
+ icu::Locale locale = GetRandomLocale(rnd);
+ fuzzData.remove_prefix(sizeof(rnd));
+
+ std::memcpy(&style, fuzzData.data(), sizeof(style));
+ fuzzData.remove_prefix(sizeof(style));
+
+ std::memcpy(&context, fuzzData.data(), sizeof(context));
+ fuzzData.remove_prefix(sizeof(context));
+
+ UErrorCode status = U_ZERO_ERROR;
+ // Test all range of style and context
+ std::unique_ptr<icu::RelativeDateTimeFormatter> formatter(
+ new icu::RelativeDateTimeFormatter(
+ locale, nullptr, style, context, status));
+ status = U_ZERO_ERROR;
+
+ // Then we test with only valid style and context
+ style = static_cast<UDateRelativeDateTimeFormatterStyle>(
+ static_cast<int>(style) % UDAT_STYLE_COUNT);
+ context = validCapitalizations[
+ static_cast<int>(context) %
+ (sizeof(validCapitalizations) / sizeof(UDisplayContext))];
+ formatter.reset(new icu::RelativeDateTimeFormatter(
+ locale, nullptr, style, context, status));
+
+ if (U_SUCCESS(status)) {
+ URelativeDateTimeUnit unit;
+ UDateAbsoluteUnit aunit;
+ UDateDirection dir;
+ double number;
+ while (fuzzData.length() >
+ static_cast<int>(sizeof(unit) + sizeof(number))) {
+ // unit and aunit share the same bytes.
+ std::memcpy(&unit, fuzzData.data(), sizeof(unit));
+ std::memcpy(&aunit, fuzzData.data(), sizeof(aunit));
+ fuzzData.remove_prefix(sizeof(unit));
+
+ // number and dir share the same bytes.
+ std::memcpy(&number, fuzzData.data(), sizeof(number));
+ std::memcpy(&dir, fuzzData.data(), sizeof(dir));
+ fuzzData.remove_prefix(sizeof(number));
+
+ // Test with any values for unit, aunit and dir
+ status = U_ZERO_ERROR;
+ icu::FormattedRelativeDateTime formatted =
+ formatter->formatNumericToValue(number, unit, status);
+ status = U_ZERO_ERROR;
+ formatted = formatter->formatToValue(number, unit, status);
+
+ status = U_ZERO_ERROR;
+ formatted = formatter->formatToValue(dir, aunit, status);
+
+ // Test with valid values for unit and aunit
+ unit = static_cast<URelativeDateTimeUnit>(
+ static_cast<int>(unit) % UDAT_REL_UNIT_COUNT);
+ aunit = static_cast<UDateAbsoluteUnit>(
+ static_cast<int>(aunit) % UDAT_ABSOLUTE_UNIT_COUNT);
+ dir = static_cast<UDateDirection>(
+ static_cast<int>(dir) % UDAT_DIRECTION_COUNT);
+
+ status = U_ZERO_ERROR;
+ formatted = formatter->formatNumericToValue(number, unit, status);
+ status = U_ZERO_ERROR;
+ formatted = formatter->formatToValue(number, unit, status);
+ status = U_ZERO_ERROR;
+ formatted = formatter->formatToValue(dir, aunit, status);
+ }
+ }
+
+ return EXIT_SUCCESS;
+}
diff --git a/Build/source/libs/icu/icu-src/source/test/fuzzer/uregex_open_fuzzer.cpp b/Build/source/libs/icu/icu-src/source/test/fuzzer/uregex_open_fuzzer.cpp
index 4cf4ceaf4be..ca03cc3b290 100644
--- a/Build/source/libs/icu/icu-src/source/test/fuzzer/uregex_open_fuzzer.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/fuzzer/uregex_open_fuzzer.cpp
@@ -15,8 +15,8 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
UParseError pe = { 0 };
UErrorCode status = U_ZERO_ERROR;
- URegularExpression* re = uregex_open(reinterpret_cast<const UChar*>(data),
- static_cast<int>(size) / sizeof(UChar),
+ URegularExpression* re = uregex_open(reinterpret_cast<const char16_t*>(data),
+ static_cast<int>(size) / sizeof(char16_t),
0, &pe, &status);
if (re)
diff --git a/Build/source/libs/icu/icu-src/source/test/hdrtst/testtagsguards.sh b/Build/source/libs/icu/icu-src/source/test/hdrtst/testtagsguards.sh
index a432538a058..19d6c341d85 100755
--- a/Build/source/libs/icu/icu-src/source/test/hdrtst/testtagsguards.sh
+++ b/Build/source/libs/icu/icu-src/source/test/hdrtst/testtagsguards.sh
@@ -45,7 +45,7 @@ for file in source/common/unicode/*.h source/i18n/unicode/*.h source/io/unicode/
GUARD=DEPRECATED
echo " @$TAG"
$CXX $INCL -C -E -DU_HIDE_${GUARD}_API=1 -DU_FORCE_HIDE_${GUARD}_API=1 $DEF -o $TMPDIR/ht-$base-$TAG.i $TMPDIR/ht-$base.cpp
- if grep "@$TAG" -C 5 $TMPDIR/ht-$base-$TAG.i; then
+ if grep "@$TAG\b.*\bICU\b" -C 5 $TMPDIR/ht-$base-$TAG.i; then
echo "*** error: @$TAG not hidden in $TMPDIR/ht-$base-$TAG.i"
exit 1
fi
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/Makefile.in b/Build/source/libs/icu/icu-src/source/test/intltest/Makefile.in
index c4b5f6097bf..af3493def5c 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/Makefile.in
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/Makefile.in
@@ -36,7 +36,11 @@ BUILDDIR := $(BUILDDIR:TEST\\INTLTEST/../../=)
CPPFLAGS += -I$(srcdir) -I$(top_srcdir)/common -I$(top_srcdir)/i18n -I$(top_srcdir)/tools/toolutil -I$(top_srcdir)/tools/ctestfw
CPPFLAGS += -DUNISTR_FROM_CHAR_EXPLICIT= -DUNISTR_FROM_STRING_EXPLICIT= -DUCHAR_TYPE=char16_t
+ifdef QNX_TARGET
+DEFS += -D'U_TOPSRCDIR="/var/icu_tests"' -D'U_TOPBUILDDIR="/var/icu_tests/"'
+else
DEFS += -D'U_TOPSRCDIR="$(top_srcdir)/"' -D'U_TOPBUILDDIR="$(BUILDDIR)"'
+endif
LIBS = $(LIBCTESTFW) $(LIBICUI18N) $(LIBICUUC) $(LIBICUTOOLUTIL) $(DEFAULT_LIBS) $(LIB_M) $(LIB_THREAD)
OBJECTS = aliastst.o allcoll.o apicoll.o astrotst.o callimts.o calregts.o caltest.o \
@@ -69,7 +73,8 @@ string_segment_test.o \
numbertest_parse.o numbertest_doubleconversion.o numbertest_skeletons.o \
static_unisets_test.o numfmtdatadriventest.o numbertest_range.o erarulestest.o \
formattedvaluetest.o formatted_string_builder_test.o numbertest_permutation.o \
-units_data_test.o units_router_test.o units_test.o displayoptions_test.o
+units_data_test.o units_router_test.o units_test.o displayoptions_test.o \
+numbertest_simple.o uchar_type_build_test.o
DEPS = $(OBJECTS:.o=.d)
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/aliastst.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/aliastst.cpp
index 34ec09aff1f..6a055ebbbe7 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/aliastst.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/aliastst.cpp
@@ -177,10 +177,10 @@ void LocaleAliasTest::TestULocale() {
}
LocaleAliasTest::LocaleAliasTest(){
UErrorCode status = U_ZERO_ERROR;
- resIndex = ures_open(NULL,"res_index", &status);
+ resIndex = ures_open(nullptr,"res_index", &status);
if(U_FAILURE(status)){
errln("Could not open res_index.res. Exiting. Error: %s\n", u_errorName(status));
- resIndex=NULL;
+ resIndex=nullptr;
}
defLocale = Locale::getDefault();
Locale::setDefault(Locale::getUS(), status);
@@ -195,7 +195,7 @@ LocaleAliasTest::~LocaleAliasTest(){
}
}
UBool LocaleAliasTest::isLocaleAvailable(const char* loc){
- if(resIndex==NULL){
+ if(resIndex==nullptr){
return false;
}
UErrorCode status = U_ZERO_ERROR;
@@ -250,13 +250,13 @@ void LocaleAliasTest::TestUResourceBundle() {
}
logln("\nold locale:%s new locale:%s",oldLoc.getName(),newLoc.getName());
- ResourceBundle* rb1 = NULL;
- ResourceBundle* rb2 = NULL;
+ ResourceBundle* rb1 = nullptr;
+ ResourceBundle* rb2 = nullptr;
const char* testdatapath=loadTestData(status);
- UnicodeString us1("NULL");
- UnicodeString us2("NULL");
+ UnicodeString us1("nullptr");
+ UnicodeString us2("nullptr");
rb1 = new ResourceBundle(testdatapath, oldLoc, status);
if (U_FAILURE(U_ZERO_ERROR)) {
@@ -278,10 +278,10 @@ void LocaleAliasTest::TestUResourceBundle() {
log(" new:");
logln(us2);
- if (rb1!=NULL) {
+ if (rb1!=nullptr) {
delete rb1;
}
- if (rb2!=NULL) {
+ if (rb2!=nullptr) {
delete rb2;
}
}
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/aliastst.h b/Build/source/libs/icu/icu-src/source/test/intltest/aliastst.h
index 62eedd212fa..100c5bbce45 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/aliastst.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/aliastst.h
@@ -20,7 +20,7 @@ public:
void TestULocale();
void TestUResourceBundle();
void TestDisplayName();
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
LocaleAliasTest();
virtual ~LocaleAliasTest();
private:
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/allcoll.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/allcoll.cpp
index 85041d11eab..6221965cfc3 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/allcoll.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/allcoll.cpp
@@ -32,7 +32,7 @@ CollationDummyTest::CollationDummyTest()
UErrorCode status = U_ZERO_ERROR;
UnicodeString ruleset("& C < ch, cH, Ch, CH & Five, 5 & Four, 4 & one, 1 & Ampersand; '&' & Two, 2 ");
- if (myCollation != NULL)
+ if (myCollation != nullptr)
{
delete myCollation;
}
@@ -153,7 +153,7 @@ void CollationDummyTest::TestIdentical()
}
}
-void CollationDummyTest::TestJB581(void)
+void CollationDummyTest::TestJB581()
{
UErrorCode status = U_ZERO_ERROR;
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/allcoll.h b/Build/source/libs/icu/icu-src/source/test/intltest/allcoll.h
index a5ae4b920b3..ce200178992 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/allcoll.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/allcoll.h
@@ -30,7 +30,7 @@ public:
CollationDummyTest();
virtual ~CollationDummyTest();
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* /*par = NULL */) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* /*par = nullptr */) override;
// perform test with strength PRIMARY
void TestPrimary(/* char* par */);
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/alphaindextst.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/alphaindextst.cpp
index cd69a3e7ee5..f993f59daea 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/alphaindextst.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/alphaindextst.cpp
@@ -9,9 +9,9 @@
// file: alphaindextst.cpp
// Alphabetic Index Tests.
//
-// Note: please... no character literals cast to UChars.. use (UChar)0xZZZZ
+// Note: please... no character literals cast to UChars.. use (char16_t)0xZZZZ
-#include <stdio.h> // for sprintf
+#include <stdio.h> // for snprintf
#include "intltest.h"
#include "alphaindextst.h"
@@ -34,9 +34,9 @@ namespace {
UnicodeString joinLabelsAndAppend(AlphabeticIndex::ImmutableIndex &index, UnicodeString &dest) {
int32_t oldLength = dest.length();
const AlphabeticIndex::Bucket *bucket;
- for (int32_t i = 0; (bucket = index.getBucket(i)) != NULL; ++i) {
+ for (int32_t i = 0; (bucket = index.getBucket(i)) != nullptr; ++i) {
if (dest.length() > oldLength) {
- dest.append((UChar)0x3A); // ':'
+ dest.append((char16_t)0x3A); // ':'
}
dest.append(bucket->getLabel());
}
@@ -233,10 +233,10 @@ void AlphabeticIndexTest::APITest() {
TEST_CHECK_STATUS;
}
- index->addRecord(adam, NULL, status);
- index->addRecord(baker, NULL, status);
- index->addRecord(charlie, NULL, status);
- index->addRecord(chad, NULL, status);
+ index->addRecord(adam, nullptr, status);
+ index->addRecord(baker, nullptr, status);
+ index->addRecord(charlie, nullptr, status);
+ index->addRecord(chad, nullptr, status);
TEST_CHECK_STATUS;
int itemCount = 0;
index->resetBucketIterator(status);
@@ -284,7 +284,7 @@ void AlphabeticIndexTest::APITest() {
} else if (i <= 26) {
// Labels A - Z for English locale
TEST_ASSERT(type == U_ALPHAINDEX_NORMAL);
- UnicodeString expectedLabel((UChar)(0x40 + i));
+ UnicodeString expectedLabel((char16_t)(0x40 + i));
TEST_ASSERT(expectedLabel == label);
} else if (i == 27) {
TEST_ASSERT(type == U_ALPHAINDEX_OVERFLOW);
@@ -386,7 +386,7 @@ void AlphabeticIndexTest::ManyLocalesTest() {
// std::string ss;
// std::cout << ":" << label.toUTF8String(ss);
const AlphabeticIndex::Bucket *bucket = immIndex->getBucket(bucketIndex);
- TEST_ASSERT(bucket != NULL);
+ TEST_ASSERT(bucket != nullptr);
assertEquals("bucket label vs. immutable: locale=" + UnicodeString(localeName) +
" index=" + bucketIndex,
label, bucket->getLabel());
@@ -398,8 +398,8 @@ void AlphabeticIndexTest::ManyLocalesTest() {
// std::cout << ":" << std::endl;
TEST_ASSERT(immIndex->getBucketCount() == bucketIndex);
- TEST_ASSERT(immIndex->getBucket(-1) == NULL);
- TEST_ASSERT(immIndex->getBucket(bucketIndex) == NULL);
+ TEST_ASSERT(immIndex->getBucket(-1) == nullptr);
+ TEST_ASSERT(immIndex->getBucket(bucketIndex) == nullptr);
}
}
@@ -432,7 +432,7 @@ static const char *pinyinTestData[] = {
"x", "\\u5915", "\\u5438", "\\u6bbe", //
"y", "\\u4e2b", "\\u82bd", "\\u8574", //
"z", "\\u5e00", "\\u707d", "\\u5c0a",
- NULL
+ nullptr
};
void AlphabeticIndexTest::HackPinyinTest() {
@@ -442,7 +442,7 @@ void AlphabeticIndexTest::HackPinyinTest() {
UnicodeString names[UPRV_LENGTHOF(pinyinTestData)];
int32_t nameCount;
- for (nameCount=0; pinyinTestData[nameCount] != NULL; nameCount++) {
+ for (nameCount=0; pinyinTestData[nameCount] != nullptr; nameCount++) {
names[nameCount] = UnicodeString(pinyinTestData[nameCount], -1, UnicodeString::kInvariant).unescape();
aindex.addRecord(names[nameCount], &names[nameCount], status);
TEST_CHECK_STATUS;
@@ -557,7 +557,7 @@ void AlphabeticIndexTest::TestIndexCharactersList() {
void AlphabeticIndexTest::TestHaniFirst() {
UErrorCode status = U_ZERO_ERROR;
LocalPointer<RuleBasedCollator> coll(
- static_cast<RuleBasedCollator *>(Collator::createInstance(Locale::getRoot(), status)));
+ dynamic_cast<RuleBasedCollator *>(Collator::createInstance(Locale::getRoot(), status)));
if (U_FAILURE(status)) {
dataerrln("Failed Collator::createInstance call - %s", u_errorName(status));
@@ -571,23 +571,23 @@ void AlphabeticIndexTest::TestHaniFirst() {
assertEquals("getBucketCount()", 1, index.getBucketCount(status)); // ... (underflow only)
index.addLabels(Locale::getEnglish(), status);
assertEquals("getBucketCount()", 28, index.getBucketCount(status)); // ... A-Z ...
- int32_t bucketIndex = index.getBucketIndex(UnicodeString((UChar)0x897f), status);
+ int32_t bucketIndex = index.getBucketIndex(UnicodeString((char16_t)0x897f), status);
assertEquals("getBucketIndex(U+897F)", 0, bucketIndex); // underflow bucket
bucketIndex = index.getBucketIndex("i", status);
assertEquals("getBucketIndex(i)", 9, bucketIndex);
- bucketIndex = index.getBucketIndex(UnicodeString((UChar)0x03B1), status);
+ bucketIndex = index.getBucketIndex(UnicodeString((char16_t)0x03B1), status);
assertEquals("getBucketIndex(Greek alpha)", 27, bucketIndex);
// U+50005 is an unassigned code point which sorts at the end, independent of the Hani group.
bucketIndex = index.getBucketIndex(UnicodeString((UChar32)0x50005), status);
assertEquals("getBucketIndex(U+50005)", 27, bucketIndex);
- bucketIndex = index.getBucketIndex(UnicodeString((UChar)0xFFFF), status);
+ bucketIndex = index.getBucketIndex(UnicodeString((char16_t)0xFFFF), status);
assertEquals("getBucketIndex(U+FFFF)", 27, bucketIndex);
}
void AlphabeticIndexTest::TestPinyinFirst() {
UErrorCode status = U_ZERO_ERROR;
LocalPointer<RuleBasedCollator> coll(
- static_cast<RuleBasedCollator *>(Collator::createInstance(Locale::getChinese(), status)));
+ dynamic_cast<RuleBasedCollator *>(Collator::createInstance(Locale::getChinese(), status)));
if (U_FAILURE(status)) {
dataerrln("Failed Collator::createInstance call - %s", u_errorName(status));
return;
@@ -600,16 +600,16 @@ void AlphabeticIndexTest::TestPinyinFirst() {
assertEquals("getBucketCount()", 28, index.getBucketCount(status)); // ... A-Z ...
index.addLabels(Locale::getChinese(), status);
assertEquals("getBucketCount()", 28, index.getBucketCount(status)); // ... A-Z ...
- int32_t bucketIndex = index.getBucketIndex(UnicodeString((UChar)0x897f), status);
- assertEquals("getBucketIndex(U+897F)", (int32_t)((UChar)0x0058/*X*/ - (UChar)0x0041/*A*/ + 1), bucketIndex);
+ int32_t bucketIndex = index.getBucketIndex(UnicodeString((char16_t)0x897f), status);
+ assertEquals("getBucketIndex(U+897F)", (int32_t)((char16_t)0x0058/*X*/ - (char16_t)0x0041/*A*/ + 1), bucketIndex);
bucketIndex = index.getBucketIndex("i", status);
assertEquals("getBucketIndex(i)", 9, bucketIndex);
- bucketIndex = index.getBucketIndex(UnicodeString((UChar)0x03B1), status);
+ bucketIndex = index.getBucketIndex(UnicodeString((char16_t)0x03B1), status);
assertEquals("getBucketIndex(Greek alpha)", (int32_t)27, bucketIndex);
// U+50005 is an unassigned code point which sorts at the end, independent of the Hani group.
bucketIndex = index.getBucketIndex(UnicodeString((UChar32)0x50005), status);
assertEquals("getBucketIndex(U+50005)", 27, bucketIndex);
- bucketIndex = index.getBucketIndex(UnicodeString((UChar)0xFFFF), status);
+ bucketIndex = index.getBucketIndex(UnicodeString((char16_t)0xFFFF), status);
assertEquals("getBucketIndex(U+FFFF)", 27, bucketIndex);
}
@@ -647,11 +647,11 @@ void AlphabeticIndexTest::TestSchSt() {
UnicodeString name = UnicodeString(testCase.name).unescape();
UnicodeString label = UnicodeString(testCase.bucketLabel).unescape();
char msg[100];
- sprintf(msg, "getBucketIndex(%s)", testCase.name);
+ snprintf(msg, sizeof(msg), "getBucketIndex(%s)", testCase.name);
assertEquals(msg, testCase.bucketIndex, index.getBucketIndex(name, status));
- sprintf(msg, "immutable getBucketIndex(%s)", testCase.name);
+ snprintf(msg, sizeof(msg), "immutable getBucketIndex(%s)", testCase.name);
assertEquals(msg, testCase.bucketIndex, immIndex->getBucketIndex(name, status));
- sprintf(msg, "immutable bucket label (%s)", testCase.name);
+ snprintf(msg, sizeof(msg), "immutable bucket label (%s)", testCase.name);
assertEquals(msg, label, immIndex->getBucket(testCase.bucketIndex)->getLabel());
}
}
@@ -659,13 +659,13 @@ void AlphabeticIndexTest::TestSchSt() {
void AlphabeticIndexTest::TestNoLabels() {
UErrorCode status = U_ZERO_ERROR;
LocalPointer<RuleBasedCollator> coll(
- static_cast<RuleBasedCollator *>(Collator::createInstance(Locale::getRoot(), status)));
+ dynamic_cast<RuleBasedCollator *>(Collator::createInstance(Locale::getRoot(), status)));
TEST_CHECK_STATUS;
AlphabeticIndex index(coll.orphan(), status);
TEST_CHECK_STATUS;
- index.addRecord(UnicodeString((UChar)0x897f), NULL, status);
- index.addRecord("i", NULL, status);
- index.addRecord(UnicodeString((UChar)0x03B1), NULL, status);
+ index.addRecord(UnicodeString((char16_t)0x897f), nullptr, status);
+ index.addRecord("i", nullptr, status);
+ index.addRecord(UnicodeString((char16_t)0x03B1), nullptr, status);
assertEquals("getBucketCount()", 1, index.getBucketCount(status)); // ...
TEST_ASSERT(index.nextBucket(status));
assertEquals("underflow label type", (int32_t)U_ALPHAINDEX_UNDERFLOW, index.getBucketLabelType());
@@ -675,16 +675,16 @@ void AlphabeticIndexTest::TestNoLabels() {
void AlphabeticIndexTest::TestChineseZhuyin() {
UErrorCode status = U_ZERO_ERROR;
char loc[100];
- uloc_forLanguageTag("zh-u-co-zhuyin", loc, UPRV_LENGTHOF(loc), NULL, &status);
+ uloc_forLanguageTag("zh-u-co-zhuyin", loc, UPRV_LENGTHOF(loc), nullptr, &status);
AlphabeticIndex index(loc, status);
LocalPointer<AlphabeticIndex::ImmutableIndex> immIndex(index.buildImmutableIndex(status));
TEST_CHECK_STATUS;
assertEquals("getBucketCount()", 38, immIndex->getBucketCount());
- assertEquals("label 1", UnicodeString((UChar)0x3105), immIndex->getBucket(1)->getLabel());
- assertEquals("label 2", UnicodeString((UChar)0x3106), immIndex->getBucket(2)->getLabel());
- assertEquals("label 3", UnicodeString((UChar)0x3107), immIndex->getBucket(3)->getLabel());
- assertEquals("label 4", UnicodeString((UChar)0x3108), immIndex->getBucket(4)->getLabel());
- assertEquals("label 5", UnicodeString((UChar)0x3109), immIndex->getBucket(5)->getLabel());
+ assertEquals("label 1", UnicodeString((char16_t)0x3105), immIndex->getBucket(1)->getLabel());
+ assertEquals("label 2", UnicodeString((char16_t)0x3106), immIndex->getBucket(2)->getLabel());
+ assertEquals("label 3", UnicodeString((char16_t)0x3107), immIndex->getBucket(3)->getLabel());
+ assertEquals("label 4", UnicodeString((char16_t)0x3108), immIndex->getBucket(4)->getLabel());
+ assertEquals("label 5", UnicodeString((char16_t)0x3109), immIndex->getBucket(5)->getLabel());
}
void AlphabeticIndexTest::TestJapaneseKanji() {
@@ -698,7 +698,7 @@ void AlphabeticIndexTest::TestJapaneseKanji() {
int32_t overflowIndex = immIndex->getBucketCount() - 1;
for(int32_t i = 0; i < UPRV_LENGTHOF(kanji); ++i) {
char msg[40];
- sprintf(msg, "kanji[%d]=U+%04lX in overflow bucket", (int)i, (long)kanji[i]);
+ snprintf(msg, sizeof(msg), "kanji[%d]=U+%04lX in overflow bucket", (int)i, (long)kanji[i]);
assertEquals(msg, overflowIndex, immIndex->getBucketIndex(UnicodeString(kanji[i]), status));
TEST_CHECK_STATUS;
}
@@ -726,10 +726,10 @@ void AlphabeticIndexTest::TestChineseUnihan() {
logln("Chinese/unihan has %d buckets/labels", bucketCount);
}
// bucketIndex = radical number, adjusted for simplified radicals in lower buckets.
- int32_t bucketIndex = index.getBucketIndex(UnicodeString((UChar)0x4e5d), status);
+ int32_t bucketIndex = index.getBucketIndex(UnicodeString((char16_t)0x4e5d), status);
assertEquals("getBucketIndex(U+4E5D)", 5, bucketIndex);
// radical 100, and there is a 90' since Unicode 8
- bucketIndex = index.getBucketIndex(UnicodeString((UChar)0x7527), status);
+ bucketIndex = index.getBucketIndex(UnicodeString((char16_t)0x7527), status);
assertEquals("getBucketIndex(U+7527)", 101, bucketIndex);
}
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/alphaindextst.h b/Build/source/libs/icu/icu-src/source/test/intltest/alphaindextst.h
index 66c7087b2ad..3bd230fdd54 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/alphaindextst.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/alphaindextst.h
@@ -21,7 +21,7 @@ public:
AlphabeticIndexTest();
virtual ~AlphabeticIndexTest();
- virtual void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ virtual void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
virtual void APITest();
virtual void ManyLocalesTest();
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/apicoll.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/apicoll.cpp
index 6d8f5429e0a..e35b763c56a 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/apicoll.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/apicoll.cpp
@@ -156,8 +156,8 @@ CollationAPITest::TestProperty(/* char* par */)
doAssert((name == UnicodeString("English (United States)")), "getDisplayName failed if this is an English machine");
#endif
delete col; col = 0;
- RuleBasedCollator *rcol = (RuleBasedCollator *)Collator::createInstance("da_DK",
- success);
+ RuleBasedCollator *rcol = dynamic_cast<RuleBasedCollator*>(Collator::createInstance("da_DK",
+ success));
if (U_FAILURE(success)) {
errcheckln(success, "Collator::createInstance(\"da_DK\") failed - %s", u_errorName(success));
return;
@@ -201,7 +201,7 @@ CollationAPITest::TestProperty(/* char* par */)
return;
}
- doAssert(((RuleBasedCollator *)junk)->getRules().isEmpty(),
+ doAssert((dynamic_cast<RuleBasedCollator*>(junk))->getRules().isEmpty(),
"The root collation should be returned for an unsupported language.");
Collator *frCol = Collator::createInstance(Locale::getCanadaFrench(), success);
if (U_FAILURE(success))
@@ -240,7 +240,7 @@ void CollationAPITest::TestKeywordValues() {
assertTrue("expect at least one collation tailoring for English", kwEnum->count(errorCode) > 0);
const char *kw;
UBool hasStandard = false;
- while ((kw = kwEnum->next(NULL, errorCode)) != NULL) {
+ while ((kw = kwEnum->next(nullptr, errorCode)) != nullptr) {
if (strcmp(kw, "standard") == 0) {
hasStandard = true;
}
@@ -278,7 +278,7 @@ CollationAPITest::TestRuleBasedColl()
status = U_ZERO_ERROR;
Locale locale("aa", "AA");
- col3 = (RuleBasedCollator *)Collator::createInstance(locale, status);
+ col3 = dynamic_cast<RuleBasedCollator*>(Collator::createInstance(locale, status));
if (U_FAILURE(status)) {
errln("Fallback Collator creation failed.: %s\n");
return;
@@ -289,7 +289,7 @@ CollationAPITest::TestRuleBasedColl()
delete col3;
status = U_ZERO_ERROR;
- col3 = (RuleBasedCollator *)Collator::createInstance(status);
+ col3 = dynamic_cast<RuleBasedCollator*>(Collator::createInstance(status));
if (U_FAILURE(status)) {
errln("Default Collator creation failed.: %s\n");
return;
@@ -338,7 +338,7 @@ CollationAPITest::TestRules()
UErrorCode status = U_ZERO_ERROR;
UnicodeString rules;
- coll = (RuleBasedCollator *)Collator::createInstance(Locale::getEnglish(), status);
+ coll = dynamic_cast<RuleBasedCollator*>(Collator::createInstance(Locale::getEnglish(), status));
if (U_FAILURE(status)) {
errcheckln(status, "English Collator creation failed. - %s", u_errorName(status));
return;
@@ -522,7 +522,7 @@ CollationAPITest::TestCollationKey(/* char* par */)
doAssert(!sortkNone.isBogus() && length == 0,
"Default-constructed collation key should be empty");
CollationKey sortkEmpty;
- col->getCollationKey(NULL, 0, sortkEmpty, key1Status);
+ col->getCollationKey(nullptr, 0, sortkEmpty, key1Status);
// key gets reset here
const uint8_t* byteArrayEmpty = sortkEmpty.getByteArray(length);
doAssert(sortkEmpty.isBogus() == false && length == 3 &&
@@ -536,7 +536,7 @@ CollationAPITest::TestCollationKey(/* char* par */)
CollationKey sortkIgnorable;
// Most control codes and CGJ are completely ignorable.
// A string with only completely ignorables must compare equal to an empty string.
- col->getCollationKey(UnicodeString((UChar)1).append((UChar)0x34f), sortkIgnorable, key1Status);
+ col->getCollationKey(UnicodeString((char16_t)1).append((char16_t)0x34f), sortkIgnorable, key1Status);
sortkIgnorable.getByteArray(length);
doAssert(!sortkIgnorable.isBogus() && length == 3,
"Completely ignorable string should return a collation key with empty levels");
@@ -545,7 +545,7 @@ CollationAPITest::TestCollationKey(/* char* par */)
// bogus key returned here
key1Status = U_ILLEGAL_ARGUMENT_ERROR;
- col->getCollationKey(NULL, 0, sortk1, key1Status);
+ col->getCollationKey(nullptr, 0, sortk1, key1Status);
doAssert(sortk1.isBogus() && (sortk1.getByteArray(length), length) == 0,
"Error code should return bogus collation key");
@@ -646,14 +646,14 @@ CollationAPITest::TestElemIter(/* char* par */)
UnicodeString testString1("XFILE What subset of all possible test cases has the highest probability of detecting the most errors?");
UnicodeString 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)->createCollationElementIterator(testString1);
+ CollationElementIterator *iterator1 = (dynamic_cast<RuleBasedCollator*>(col))->createCollationElementIterator(testString1);
CharacterIterator *chariter=new StringCharacterIterator(testString1);
- CollationElementIterator *coliter=((RuleBasedCollator*)col)->createCollationElementIterator(*chariter);
+ CollationElementIterator *coliter = (dynamic_cast<RuleBasedCollator*>(col))->createCollationElementIterator(*chariter);
// copy ctor
- CollationElementIterator *iterator2 = ((RuleBasedCollator*)col)->createCollationElementIterator(testString1);
- CollationElementIterator *iterator3 = ((RuleBasedCollator*)col)->createCollationElementIterator(testString2);
+ CollationElementIterator *iterator2 = (dynamic_cast<RuleBasedCollator*>(col))->createCollationElementIterator(testString1);
+ CollationElementIterator *iterator3 = (dynamic_cast<RuleBasedCollator*>(col))->createCollationElementIterator(testString2);
int32_t offset = iterator1->getOffset();
if (offset != 0) {
@@ -792,7 +792,7 @@ CollationAPITest::TestElemIter(/* char* par */)
//test error values
success=U_UNSUPPORTED_ERROR;
- Collator *colerror=NULL;
+ Collator *colerror=nullptr;
colerror=Collator::createInstance(Locale::getEnglish(), success);
if (colerror != 0 || success == U_ZERO_ERROR){
errln("Error: createInstance(UErrorCode != U_ZERO_ERROR) should just return and not create an instance\n");
@@ -861,13 +861,13 @@ CollationAPITest::TestOperators(/* char* par */)
doAssert((*col3 == *col5), "Cloned collation objects not equal");
doAssert((*col4 != *col5), "Two cloned collations compared equal");
- const UnicodeString& defRules = ((RuleBasedCollator*)col3)->getRules();
+ const UnicodeString& defRules = (dynamic_cast<RuleBasedCollator*>(col3))->getRules();
RuleBasedCollator* col6 = new RuleBasedCollator(defRules, success);
if (U_FAILURE(success)) {
errln("Creating default collation with rules failed.");
return;
}
- doAssert((((RuleBasedCollator*)col3)->getRules() == col6->getRules()), "Default collator getRules failed");
+ doAssert(((dynamic_cast<RuleBasedCollator*>(col3))->getRules() == col6->getRules()), "Default collator getRules failed");
success = U_ZERO_ERROR;
RuleBasedCollator *col7 = new RuleBasedCollator(ruleset2, Collator::TERTIARY, success);
@@ -922,13 +922,13 @@ CollationAPITest::TestDuplicate(/* char* par */)
return;
}
doAssert((*col1 != *col3), "Cloned object is equal to some dummy");
- *col3 = *((RuleBasedCollator*)col1);
+ *col3 = *(dynamic_cast<RuleBasedCollator*>(col1));
doAssert((*col1 == *col3), "Copied object is not equal to the original");
UCollationResult res;
- UnicodeString first((UChar)0x0061);
- UnicodeString second((UChar)0x0062);
- UnicodeString copiedEnglishRules(((RuleBasedCollator*)col1)->getRules());
+ UnicodeString first((char16_t)0x0061);
+ UnicodeString second((char16_t)0x0062);
+ UnicodeString copiedEnglishRules((dynamic_cast<RuleBasedCollator*>(col1))->getRules());
delete col1;
@@ -937,9 +937,9 @@ CollationAPITest::TestDuplicate(/* char* par */)
if(res != UCOL_LESS) {
errln("a should be less then b after tailoring");
}
- if (((RuleBasedCollator*)col2)->getRules() != copiedEnglishRules) {
+ if ((dynamic_cast<RuleBasedCollator*>(col2))->getRules() != copiedEnglishRules) {
errln(UnicodeString("English rule difference. ")
- + copiedEnglishRules + UnicodeString("\ngetRules=") + ((RuleBasedCollator*)col2)->getRules());
+ + copiedEnglishRules + UnicodeString("\ngetRules=") + (dynamic_cast<RuleBasedCollator*>(col2))->getRules());
}
res = col3->compare(first, second, status);
if(res != UCOL_LESS) {
@@ -987,9 +987,9 @@ CollationAPITest::TestCompare(/* char* par */)
doAssert((col->greaterOrEqual(test1, test2) ), "Result should be \"Abcda\" == \"abcda\"");
// Test different APIs
- const UChar* t1 = test1.getBuffer();
+ const char16_t* t1 = test1.getBuffer();
int32_t t1Len = test1.length();
- const UChar* t2 = test2.getBuffer();
+ const char16_t* t2 = test2.getBuffer();
int32_t t2Len = test2.length();
doAssert((col->compare(test1, test2) == Collator::EQUAL), "Problem");
@@ -1030,7 +1030,7 @@ CollationAPITest::TestGetAll(/* char* par */)
+ UnicodeString(list[i].getDisplayName(dispName)));
}
- if (count1 == 0 || list == NULL) {
+ if (count1 == 0 || list == nullptr) {
dataerrln("getAvailableLocales(int&) returned an empty list");
}
@@ -1040,12 +1040,12 @@ CollationAPITest::TestGetAll(/* char* par */)
const char *locCStr;
count2 = 0;
- if (localeEnum == NULL) {
- dataerrln("getAvailableLocales() returned NULL");
+ if (localeEnum == nullptr) {
+ dataerrln("getAvailableLocales() returned nullptr");
return;
}
- while ((locStr = localeEnum->snext(status)) != NULL)
+ while ((locStr = localeEnum->snext(status)) != nullptr)
{
logln(UnicodeString("Locale name is: ") + *locStr);
count2++;
@@ -1058,7 +1058,7 @@ CollationAPITest::TestGetAll(/* char* par */)
count1 = 0;
StringEnumeration* localeEnum2 = localeEnum->clone();
localeEnum2->reset(status);
- while ((locCStr = localeEnum2->next(NULL, status)) != NULL)
+ while ((locCStr = localeEnum2->next(nullptr, status)) != nullptr)
{
logln(UnicodeString("Locale name is: ") + UnicodeString(locCStr));
count1++;
@@ -1096,7 +1096,7 @@ void CollationAPITest::TestSortKey()
/* Need to use identical strength */
col->setAttribute(UCOL_STRENGTH, UCOL_IDENTICAL, status);
- UChar test1[6] = {0x41, 0x62, 0x63, 0x64, 0x61, 0},
+ char16_t test1[6] = {0x41, 0x62, 0x63, 0x64, 0x61, 0},
test2[6] = {0x61, 0x62, 0x63, 0x64, 0x61, 0},
test3[6] = {0x61, 0x62, 0x63, 0x64, 0x61, 0};
@@ -1242,7 +1242,7 @@ void CollationAPITest::TestSortKeyOverflow() {
return;
}
col->setAttribute(UCOL_STRENGTH, UCOL_PRIMARY, errorCode);
- UChar i_and_phi[] = { 0x438, 0x3c6 }; // Cyrillic small i & Greek small phi.
+ char16_t i_and_phi[] = { 0x438, 0x3c6 }; // Cyrillic small i & Greek small phi.
// The sort key should be 6 bytes:
// 2 bytes for the Cyrillic i, 1 byte for the primary-compression terminator,
// 2 bytes for the Greek phi, and 1 byte for the NUL terminator.
@@ -1280,14 +1280,14 @@ void CollationAPITest::TestSortKeyOverflow() {
}
// Insert an 'a' to match ++prefixLength.
- s.insert(prefixLength, (UChar)0x61);
+ s.insert(prefixLength, (char16_t)0x61);
}
}
void CollationAPITest::TestMaxExpansion()
{
UErrorCode status = U_ZERO_ERROR;
- UChar ch = 0;
+ char16_t ch = 0;
UChar32 unassigned = 0xEFFFD;
uint32_t sorder = 0;
uint32_t temporder = 0;
@@ -1531,7 +1531,7 @@ void CollationAPITest::TestAttribute()
void CollationAPITest::TestVariableTopSetting() {
UErrorCode status = U_ZERO_ERROR;
- UChar vt[256] = { 0 };
+ char16_t vt[256] = { 0 };
// Use the root collator, not the default collator.
// This test fails with en_US_POSIX which tailors the dollar sign after 'A'.
@@ -1564,8 +1564,8 @@ void CollationAPITest::TestVariableTopSetting() {
errln("setVariableTop(dollar sign) != following getVariableTop()");
}
- UnicodeString dollar((UChar)0x24);
- UnicodeString euro((UChar)0x20AC);
+ UnicodeString dollar((char16_t)0x24);
+ UnicodeString euro((char16_t)0x20AC);
uint32_t newVarTop2 = coll->setVariableTop(euro, status);
assertEquals("setVariableTop(Euro sign) == following getVariableTop()",
(int64_t)newVarTop2, (int64_t)coll->getVariableTop(status));
@@ -1575,7 +1575,7 @@ void CollationAPITest::TestVariableTopSetting() {
coll->setAttribute(UCOL_ALTERNATE_HANDLING, UCOL_SHIFTED, status);
assertEquals("empty==dollar", (int32_t)UCOL_EQUAL, (int32_t)coll->compare(UnicodeString(), dollar));
assertEquals("empty==euro", (int32_t)UCOL_EQUAL, (int32_t)coll->compare(UnicodeString(), euro));
- assertEquals("dollar<zero", (int32_t)UCOL_LESS, (int32_t)coll->compare(dollar, UnicodeString((UChar)0x30)));
+ assertEquals("dollar<zero", (int32_t)UCOL_LESS, (int32_t)coll->compare(dollar, UnicodeString((char16_t)0x30)));
coll->setVariableTop(oldVarTop, status);
@@ -1610,15 +1610,15 @@ void CollationAPITest::TestMaxVariable() {
}
coll->setAttribute(UCOL_ALTERNATE_HANDLING, UCOL_SHIFTED, errorCode);
- assertEquals("empty==dollar", (int32_t)UCOL_EQUAL, (int32_t)coll->compare(UnicodeString(), UnicodeString((UChar)0x24)));
- assertEquals("empty==euro", (int32_t)UCOL_EQUAL, (int32_t)coll->compare(UnicodeString(), UnicodeString((UChar)0x20AC)));
- assertEquals("dollar<zero", (int32_t)UCOL_LESS, (int32_t)coll->compare(UnicodeString((UChar)0x24), UnicodeString((UChar)0x30)));
+ assertEquals("empty==dollar", (int32_t)UCOL_EQUAL, (int32_t)coll->compare(UnicodeString(), UnicodeString((char16_t)0x24)));
+ assertEquals("empty==euro", (int32_t)UCOL_EQUAL, (int32_t)coll->compare(UnicodeString(), UnicodeString((char16_t)0x20AC)));
+ assertEquals("dollar<zero", (int32_t)UCOL_LESS, (int32_t)coll->compare(UnicodeString((char16_t)0x24), UnicodeString((char16_t)0x30)));
}
void CollationAPITest::TestGetLocale() {
UErrorCode status = U_ZERO_ERROR;
const char *rules = "&a<x<y<z";
- UChar rlz[256] = {0};
+ char16_t rlz[256] = {0};
Collator *coll = Collator::createInstance("root", status);
if(U_FAILURE(status)) {
@@ -1748,7 +1748,7 @@ void CollationAPITest::TestGetLocale() {
- /* collator instantiated from rules should have all three locales NULL */
+ /* collator instantiated from rules should have all three locales nullptr */
coll = new RuleBasedCollator(rlz, status);
locale = coll->getLocale(ULOC_REQUESTED_LOCALE, status);
if(U_SUCCESS(status) && !locale.isBogus()) {
@@ -1781,7 +1781,7 @@ compare_teststruct(const void *string1, const void *string2) {
U_CDECL_END
-void CollationAPITest::TestBounds(void) {
+void CollationAPITest::TestBounds() {
UErrorCode status = U_ZERO_ERROR;
Collator *coll = Collator::createInstance(Locale("sh"), status);
@@ -1792,7 +1792,7 @@ void CollationAPITest::TestBounds(void) {
}
uint8_t sortkey[512], lower[512], upper[512];
- UChar buffer[512];
+ char16_t buffer[512];
static const char * const test[] = {
"John Smith",
@@ -1932,7 +1932,7 @@ void CollationAPITest::TestGetTailoredSet()
UErrorCode status = U_ZERO_ERROR;
UnicodeString buff;
- UnicodeSet *set = NULL;
+ UnicodeSet *set = nullptr;
for(i = 0; i < UPRV_LENGTHOF(setTest); i++) {
buff = UnicodeString(setTest[i].rules, -1, US_INV).unescape();
@@ -1963,7 +1963,7 @@ void CollationAPITest::TestUClassID()
}
UErrorCode status = U_ZERO_ERROR;
RuleBasedCollator *coll
- = (RuleBasedCollator *)Collator::createInstance(status);
+ = dynamic_cast<RuleBasedCollator*>(Collator::createInstance(status));
if(U_FAILURE(status)) {
delete coll;
errcheckln(status, "Collator creation failed with %s", u_errorName(status));
@@ -2011,29 +2011,29 @@ public:
const UnicodeString& target,
int32_t length,
UErrorCode& status) const override;
- virtual UCollationResult compare(const UChar* source,
+ virtual UCollationResult compare(const char16_t* source,
int32_t sourceLength,
- const UChar* target,
+ const char16_t* target,
int32_t targetLength,
UErrorCode& status) const override;
virtual CollationKey& getCollationKey(const UnicodeString& source,
CollationKey& key,
UErrorCode& status) const override;
- virtual CollationKey& getCollationKey(const UChar*source,
+ virtual CollationKey& getCollationKey(const char16_t*source,
int32_t sourceLength,
CollationKey& key,
UErrorCode& status) const override;
- virtual int32_t hashCode(void) const override;
+ virtual int32_t hashCode() const override;
virtual Locale getLocale(ULocDataLocaleType type, UErrorCode& status) const override;
- virtual ECollationStrength getStrength(void) const override;
+ virtual ECollationStrength getStrength() const override;
virtual void setStrength(ECollationStrength newStrength) override;
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
virtual void getVersion(UVersionInfo info) const override;
virtual void setAttribute(UColAttribute attr, UColAttributeValue value,
UErrorCode &status) override;
virtual UColAttributeValue getAttribute(UColAttribute attr,
UErrorCode &status) const override;
- virtual uint32_t setVariableTop(const UChar *varTop, int32_t len,
+ virtual uint32_t setVariableTop(const char16_t *varTop, int32_t len,
UErrorCode &status) override;
virtual uint32_t setVariableTop(const UnicodeString &varTop,
UErrorCode &status) override;
@@ -2042,7 +2042,7 @@ public:
virtual int32_t getSortKey(const UnicodeString& source,
uint8_t* result,
int32_t resultLength) const override;
- virtual int32_t getSortKey(const UChar*source, int32_t sourceLength,
+ virtual int32_t getSortKey(const char16_t*source, int32_t sourceLength,
uint8_t*result, int32_t resultLength) const override;
virtual UnicodeSet *getTailoredSet(UErrorCode &status) const override;
virtual bool operator==(const Collator& other) const override;
@@ -2093,9 +2093,9 @@ UCollationResult TestCollator::compare(const UnicodeString& source,
}
}
-UCollationResult TestCollator::compare(const UChar* source,
+UCollationResult TestCollator::compare(const char16_t* source,
int32_t sourceLength,
- const UChar* target,
+ const char16_t* target,
int32_t targetLength,
UErrorCode& status) const
{
@@ -2110,14 +2110,14 @@ CollationKey& TestCollator::getCollationKey(const UnicodeString& source,
{
char temp[100];
int length = 100;
- length = source.extract(temp, length, NULL, status);
+ length = source.extract(temp, length, nullptr, status);
temp[length] = 0;
CollationKey tempkey((uint8_t*)temp, length);
key = tempkey;
return key;
}
-CollationKey& TestCollator::getCollationKey(const UChar*source,
+CollationKey& TestCollator::getCollationKey(const char16_t*source,
int32_t sourceLength,
CollationKey& key,
UErrorCode& status) const
@@ -2131,13 +2131,13 @@ int32_t TestCollator::getSortKey(const UnicodeString& source, uint8_t* result,
int32_t resultLength) const
{
UErrorCode status = U_ZERO_ERROR;
- int32_t length = source.extract((char *)result, resultLength, NULL,
+ int32_t length = source.extract((char *)result, resultLength, nullptr,
status);
result[length] = 0;
return length;
}
-int32_t TestCollator::getSortKey(const UChar*source, int32_t sourceLength,
+int32_t TestCollator::getSortKey(const char16_t*source, int32_t sourceLength,
uint8_t*result, int32_t resultLength) const
{
UnicodeString str(source, sourceLength);
@@ -2155,7 +2155,7 @@ Locale TestCollator::getLocale(ULocDataLocaleType type, UErrorCode& status) cons
if (U_FAILURE(status)) {
(void)type;
}
- return NULL;
+ return nullptr;
}
Collator::ECollationStrength TestCollator::getStrength() const
@@ -2169,7 +2169,7 @@ void TestCollator::setStrength(Collator::ECollationStrength newStrength)
(void)newStrength;
}
-UClassID TestCollator::getDynamicClassID(void) const
+UClassID TestCollator::getDynamicClassID() const
{
return 0;
}
@@ -2195,7 +2195,7 @@ UColAttributeValue TestCollator::getAttribute(UColAttribute attr,
return UCOL_DEFAULT;
}
-uint32_t TestCollator::setVariableTop(const UChar *varTop, int32_t len,
+uint32_t TestCollator::setVariableTop(const char16_t *varTop, int32_t len,
UErrorCode &status)
{
// api not used, this is to make the compiler happy
@@ -2263,7 +2263,7 @@ void CollationAPITest::TestSubclass()
col1.getCollationKey(abc, key, status);
int32_t length = 0;
const char* bytes = (const char *)key.getByteArray(length);
- UnicodeString keyarray(bytes, length, NULL, status);
+ UnicodeString keyarray(bytes, length, nullptr, status);
if (abc != keyarray) {
errln("TestCollator collationkey API is returning wrong values");
}
@@ -2299,13 +2299,13 @@ void CollationAPITest::TestSubclass()
}
}
-void CollationAPITest::TestNULLCharTailoring()
+void CollationAPITest::TestNullptrCharTailoring()
{
UErrorCode status = U_ZERO_ERROR;
- UChar buf[256] = {0};
+ char16_t buf[256] = {0};
int32_t len = u_unescape("&a < '\\u0000'", buf, 256);
- UnicodeString first((UChar)0x0061);
- UnicodeString second((UChar)0);
+ UnicodeString first((char16_t)0x0061);
+ UnicodeString second((char16_t)0);
RuleBasedCollator *coll = new RuleBasedCollator(UnicodeString(buf, len), status);
if(U_FAILURE(status)) {
delete coll;
@@ -2314,7 +2314,7 @@ void CollationAPITest::TestNULLCharTailoring()
}
UCollationResult res = coll->compare(first, second, status);
if(res != UCOL_LESS) {
- errln("a should be less then NULL after tailoring");
+ errln("a should be less then nullptr after tailoring");
}
delete coll;
}
@@ -2322,7 +2322,7 @@ void CollationAPITest::TestNULLCharTailoring()
void CollationAPITest::TestClone() {
logln("\ninit c0");
UErrorCode status = U_ZERO_ERROR;
- RuleBasedCollator* c0 = (RuleBasedCollator*)Collator::createInstance(status);
+ RuleBasedCollator* c0 = dynamic_cast<RuleBasedCollator*>(Collator::createInstance(status));
if (U_FAILURE(status)) {
errcheckln(status, "Collator::CreateInstance(status) failed with %s", u_errorName(status));
@@ -2333,7 +2333,7 @@ void CollationAPITest::TestClone() {
dump("c0", c0, status);
logln("\ninit c1");
- RuleBasedCollator* c1 = (RuleBasedCollator*)Collator::createInstance(status);
+ RuleBasedCollator* c1 = dynamic_cast<RuleBasedCollator*>(Collator::createInstance(status));
c1->setStrength(Collator::TERTIARY);
UColAttributeValue val = c1->getAttribute(UCOL_CASE_FIRST, status);
if(val == UCOL_LOWER_FIRST){
@@ -2376,12 +2376,12 @@ void CollationAPITest::TestCloneBinary() {
}
RuleBasedCollator *rbRoot = dynamic_cast<RuleBasedCollator *>(root.getAlias());
RuleBasedCollator *rbc = dynamic_cast<RuleBasedCollator *>(coll.getAlias());
- if(rbRoot == NULL || rbc == NULL) {
+ if(rbRoot == nullptr || rbc == nullptr) {
infoln("root or de@collation=phonebook is not a RuleBasedCollator");
return;
}
rbc->setAttribute(UCOL_STRENGTH, UCOL_PRIMARY, errorCode);
- UnicodeString uUmlaut((UChar)0xfc);
+ UnicodeString uUmlaut((char16_t)0xfc);
UnicodeString ue = UNICODE_STRING_SIMPLE("ue");
assertEquals("rbc/primary: u-umlaut==ue", (int32_t)UCOL_EQUAL, rbc->compare(uUmlaut, ue, errorCode));
uint8_t bin[25000];
@@ -2554,7 +2554,7 @@ void CollationAPITest::runIndexedTest( int32_t index, UBool exec, const char* &n
TESTCASE_AUTO(TestGetTailoredSet);
TESTCASE_AUTO(TestUClassID);
TESTCASE_AUTO(TestSubclass);
- TESTCASE_AUTO(TestNULLCharTailoring);
+ TESTCASE_AUTO(TestNullptrCharTailoring);
TESTCASE_AUTO(TestClone);
TESTCASE_AUTO(TestCloneBinary);
TESTCASE_AUTO(TestIterNumeric);
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/apicoll.h b/Build/source/libs/icu/icu-src/source/test/intltest/apicoll.h
index c97c49056f2..36796c83092 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/apicoll.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/apicoll.h
@@ -23,7 +23,7 @@
class CollationAPITest: public IntlTestCollator {
public:
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* /*par = NULL */) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* /*par = nullptr */) override;
void doAssert(UBool condition, const char *message);
/**
@@ -165,9 +165,9 @@ public:
void TestUClassID();
/**
- * Test NULL
+ * Test nullptr
*/
- void TestNULLCharTailoring();
+ void TestNullptrCharTailoring();
void TestClone();
void TestCloneBinary();
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/astrotst.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/astrotst.cpp
index 88406d082b0..847dce65a33 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/astrotst.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/astrotst.cpp
@@ -23,7 +23,7 @@
#define CASE(id,test) case id: name = #test; if (exec) { logln(#test "---"); logln((UnicodeString)""); test(); } break
-AstroTest::AstroTest(): astro(NULL), gc(NULL) {
+AstroTest::AstroTest(): astro(nullptr), gc(nullptr) {
}
void AstroTest::runIndexedTest( int32_t index, UBool exec, const char* &name, char* /*par*/ )
@@ -55,7 +55,7 @@ void AstroTest::runIndexedTest( int32_t index, UBool exec, const char* &name, ch
void AstroTest::initAstro(UErrorCode &status) {
if(U_FAILURE(status)) return;
- if((astro != NULL) || (gc != NULL)) {
+ if((astro != nullptr) || (gc != nullptr)) {
dataerrln("Err: initAstro() called twice!");
closeAstro(status);
if(U_SUCCESS(status)) {
@@ -70,17 +70,17 @@ void AstroTest::initAstro(UErrorCode &status) {
}
void AstroTest::closeAstro(UErrorCode &/*status*/) {
- if(astro != NULL) {
+ if(astro != nullptr) {
delete astro;
- astro = NULL;
+ astro = nullptr;
}
- if(gc != NULL) {
+ if(gc != nullptr) {
delete gc;
- gc = NULL;
+ gc = nullptr;
}
}
-void AstroTest::TestSolarLongitude(void) {
+void AstroTest::TestSolarLongitude() {
UErrorCode status = U_ZERO_ERROR;
initAstro(status);
ASSERT_OK(status);
@@ -111,7 +111,7 @@ void AstroTest::TestSolarLongitude(void) {
-void AstroTest::TestLunarPosition(void) {
+void AstroTest::TestLunarPosition() {
UErrorCode status = U_ZERO_ERROR;
initAstro(status);
ASSERT_OK(status);
@@ -136,7 +136,7 @@ void AstroTest::TestLunarPosition(void) {
-void AstroTest::TestCoordinates(void) {
+void AstroTest::TestCoordinates() {
UErrorCode status = U_ZERO_ERROR;
initAstro(status);
ASSERT_OK(status);
@@ -150,7 +150,7 @@ void AstroTest::TestCoordinates(void) {
-void AstroTest::TestCoverage(void) {
+void AstroTest::TestCoverage() {
UErrorCode status = U_ZERO_ERROR;
initAstro(status);
ASSERT_OK(status);
@@ -212,7 +212,7 @@ void AstroTest::TestCoverage(void) {
-void AstroTest::TestSunriseTimes(void) {
+void AstroTest::TestSunriseTimes() {
UErrorCode status = U_ZERO_ERROR;
initAstro(status);
ASSERT_OK(status);
@@ -370,7 +370,7 @@ void AstroTest::TestSunriseTimes(void) {
-void AstroTest::TestBasics(void) {
+void AstroTest::TestBasics() {
UErrorCode status = U_ZERO_ERROR;
initAstro(status);
if (U_FAILURE(status)) {
@@ -433,7 +433,7 @@ void AstroTest::TestBasics(void) {
}
-void AstroTest::TestMoonAge(void){
+void AstroTest::TestMoonAge(){
UErrorCode status = U_ZERO_ERROR;
initAstro(status);
ASSERT_OK(status);
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/astrotst.h b/Build/source/libs/icu/icu-src/source/test/intltest/astrotst.h
index 5d014392337..236c16fd88a 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/astrotst.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/astrotst.h
@@ -26,19 +26,19 @@ public:
public:
AstroTest();
- void TestSolarLongitude(void);
+ void TestSolarLongitude();
- void TestLunarPosition(void);
+ void TestLunarPosition();
- void TestCoordinates(void);
+ void TestCoordinates();
- void TestCoverage(void);
+ void TestCoverage();
- void TestSunriseTimes(void);
+ void TestSunriseTimes();
- void TestBasics(void);
+ void TestBasics();
- void TestMoonAge(void);
+ void TestMoonAge();
private:
void initAstro(UErrorCode&);
void closeAstro(UErrorCode&);
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/bidiconf.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/bidiconf.cpp
index 648cc42d55e..07c3f458b70 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/bidiconf.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/bidiconf.cpp
@@ -36,7 +36,7 @@ public:
directionBits(0), lineNumber(0), levelsCount(0), orderingCount(0),
errorCount(0) {}
- void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=NULL) override;
+ void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=nullptr) override;
void TestBidiTest();
void TestBidiCharacterTest();
@@ -119,7 +119,7 @@ UBool BiDiConformanceTest::parseOrdering(const char *start) {
return true;
}
-static const UChar charFromBiDiClass[U_CHAR_DIRECTION_COUNT]={
+static const char16_t charFromBiDiClass[U_CHAR_DIRECTION_COUNT]={
0x6c, // 'l' for L
0x52, // 'R' for R
0x33, // '3' for EN
@@ -273,8 +273,8 @@ void BiDiConformanceTest::TestBidiTest() {
return;
}
LocalUBiDiPointer ubidi(ubidi_open());
- ubidi_setClassCallback(ubidi.getAlias(), biDiConfUBiDiClassCallback, NULL,
- NULL, NULL, errorCode);
+ ubidi_setClassCallback(ubidi.getAlias(), biDiConfUBiDiClassCallback, nullptr,
+ nullptr, nullptr, errorCode);
if(errorCode.errIfFailureAndReset("ubidi_setClassCallback()")) {
return;
}
@@ -284,11 +284,11 @@ void BiDiConformanceTest::TestBidiTest() {
errorCount=0;
// paraLevelName must be initialized in case the first non-comment line is in error
paraLevelName="N/A";
- while(errorCount<10 && fgets(line, (int)sizeof(line), bidiTestFile.getAlias())!=NULL) {
+ while(errorCount<10 && fgets(line, (int)sizeof(line), bidiTestFile.getAlias())!=nullptr) {
++lineNumber;
// Remove trailing comments and whitespace.
char *commentStart=strchr(line, '#');
- if(commentStart!=NULL) {
+ if(commentStart!=nullptr) {
*commentStart=0;
}
u_rtrim(line);
@@ -331,7 +331,7 @@ void BiDiConformanceTest::TestBidiTest() {
for(int i=0; i<=3; ++i) {
if(bitset&(1<<i)) {
ubidi_setPara(ubidi.getAlias(), inputString.getBuffer(), inputString.length(),
- paraLevels[i], NULL, errorCode);
+ paraLevels[i], nullptr, errorCode);
const UBiDiLevel *actualLevels=ubidi_getLevels(ubidi.getAlias(), errorCode);
if(errorCode.errIfFailureAndReset("ubidi_setPara() or ubidi_getLevels()")) {
errln("Input line %d: %s", (int)lineNumber, line);
@@ -446,13 +446,13 @@ void BiDiConformanceTest::TestBidiCharacterTest() {
levelsCount=0;
orderingCount=0;
errorCount=0;
- while(errorCount<20 && fgets(line, (int)sizeof(line), bidiTestFile.getAlias())!=NULL) {
+ while(errorCount<20 && fgets(line, (int)sizeof(line), bidiTestFile.getAlias())!=nullptr) {
++lineNumber;
paraLevelName="N/A";
inputString="N/A";
// Remove trailing comments and whitespace.
char *commentStart=strchr(line, '#');
- if(commentStart!=NULL) {
+ if(commentStart!=nullptr) {
*commentStart=0;
}
u_rtrim(line);
@@ -461,8 +461,8 @@ void BiDiConformanceTest::TestBidiCharacterTest() {
continue; // Skip empty and comment-only lines.
}
// Parse the code point string in field 0.
- UChar *buffer=inputString.getBuffer(200);
- int32_t length=u_parseString(start, buffer, inputString.getCapacity(), NULL, errorCode);
+ char16_t *buffer=inputString.getBuffer(200);
+ int32_t length=u_parseString(start, buffer, inputString.getCapacity(), nullptr, errorCode);
if(errorCode.errIfFailureAndReset("Invalid string in field 0")) {
errln("Input line %d: %s", (int)lineNumber, line);
inputString.remove();
@@ -470,7 +470,7 @@ void BiDiConformanceTest::TestBidiCharacterTest() {
}
inputString.releaseBuffer(length);
start=strchr(start, ';');
- if(start==NULL) {
+ if(start==nullptr) {
errorCount++;
errln("\nError on line %d: Missing ; separator on line: %s", (int)lineNumber, line);
continue;
@@ -497,7 +497,7 @@ void BiDiConformanceTest::TestBidiCharacterTest() {
}
else if(paraDirection<0 && -paraDirection<=(UBIDI_MAX_EXPLICIT_LEVEL+1)) {
paraLevel=(UBiDiLevel)(-paraDirection);
- sprintf(levelNameString, "%d", (int)paraLevel);
+ snprintf(levelNameString, sizeof(levelNameString), "%d", (int)paraLevel);
paraLevelName=levelNameString;
}
if(end<=start || (!U_IS_INV_WHITESPACE(*end) && *end!=';' && *end!=0) ||
@@ -540,7 +540,7 @@ void BiDiConformanceTest::TestBidiCharacterTest() {
orderingCount=-1;
ubidi_setPara(ubidi.getAlias(), inputString.getBuffer(), inputString.length(),
- paraLevel, NULL, errorCode);
+ paraLevel, nullptr, errorCode);
const UBiDiLevel *actualLevels=ubidi_getLevels(ubidi.getAlias(), errorCode);
if(errorCode.errIfFailureAndReset("ubidi_setPara() or ubidi_getLevels()")) {
errln("Input line %d: %s", (int)lineNumber, line);
@@ -562,7 +562,7 @@ void BiDiConformanceTest::TestBidiCharacterTest() {
}
}
-static UChar printLevel(UBiDiLevel level) {
+static char16_t printLevel(UBiDiLevel level) {
if(level<UBIDI_DEFAULT_LTR) {
return 0x30+level;
} else {
@@ -607,11 +607,11 @@ UBool BiDiConformanceTest::checkLevels(const UBiDiLevel actualLevels[], int32_t
UnicodeString els("Expected levels: ");
int32_t i;
for(i=0; i<levelsCount; ++i) {
- els.append((UChar)0x20).append(printLevel(levels[i]));
+ els.append((char16_t)0x20).append(printLevel(levels[i]));
}
UnicodeString als("Actual levels: ");
for(i=0; i<actualCount; ++i) {
- als.append((UChar)0x20).append(printLevel(actualLevels[i]));
+ als.append((char16_t)0x20).append(printLevel(actualLevels[i]));
}
errln(els);
errln(als);
@@ -659,13 +659,13 @@ UBool BiDiConformanceTest::checkOrdering(UBiDi *ubidi) {
printErrorLine();
UnicodeString eord("Expected ordering: ");
for(i=0; i<orderingCount; ++i) {
- eord.append((UChar)0x20).append((UChar)(0x30+ordering[i]));
+ eord.append((char16_t)0x20).append((char16_t)(0x30+ordering[i]));
}
UnicodeString aord("Actual ordering: ");
for(i=0; i<resultLength; ++i) {
int32_t logicalIndex=ubidi_getLogicalIndex(ubidi, i, errorCode);
if(levels[logicalIndex]<UBIDI_DEFAULT_LTR) {
- aord.append((UChar)0x20).append((UChar)(0x30+logicalIndex));
+ aord.append((char16_t)0x20).append((char16_t)(0x30+logicalIndex));
}
}
errln(eord);
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/bytestrietest.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/bytestrietest.cpp
index 44f916a34e8..923eb6a4b59 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/bytestrietest.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/bytestrietest.cpp
@@ -34,7 +34,7 @@ public:
BytesTrieTest();
virtual ~BytesTrieTest();
- void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=NULL) override;
+ void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=nullptr) override;
void TestBuilder();
void TestEmpty();
void Test_a();
@@ -78,7 +78,7 @@ extern IntlTest *createBytesTrieTest() {
return new BytesTrieTest();
}
-BytesTrieTest::BytesTrieTest() : builder_(NULL) {
+BytesTrieTest::BytesTrieTest() : builder_(nullptr) {
IcuTestErrorCode errorCode(*this, "BytesTrieTest()");
builder_=new BytesTrieBuilder(errorCode);
}
@@ -594,7 +594,7 @@ void BytesTrieTest::TestIteratorFromBytes() {
void BytesTrieTest::TestFailedIterator() {
UErrorCode failure = U_ILLEGAL_ARGUMENT_ERROR;
- BytesTrie::Iterator iter(NULL, 0, failure);
+ BytesTrie::Iterator iter(nullptr, 0, failure);
StringPiece sp = iter.getString();
if (!sp.empty()) {
errln("failed iterator returned garbage data");
@@ -636,7 +636,7 @@ void BytesTrieTest::TestDelta() {
const uint8_t *start = (const uint8_t *)intBytes0;
const uint8_t *pos = BytesTrie::jumpByDelta(start);
assertEquals(UnicodeString(u"roundtrip for delta ") + delta,
- delta, (int32_t)(pos - start) - length0);
+ delta, (size_t)(pos - start) - length0);
}
}
@@ -696,7 +696,7 @@ BytesTrie *BytesTrieTest::buildTrie(const StringAndValue data[], int32_t dataLen
errln("builder.buildStringPiece() before & after build() returned same array");
}
if(errorCode.isFailure()) {
- return NULL;
+ return nullptr;
}
// Tries from either build() method should be identical but
// BytesTrie does not implement equals().
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/calcasts.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/calcasts.cpp
index 7bb9521cd93..9c125d9af5a 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/calcasts.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/calcasts.cpp
@@ -170,13 +170,13 @@ void CalendarCaseTest::IslamicCivil()
c->setLenient(true);
doTestCases(tests, c);
- static const UChar expectedUChars[] = {
+ static const char16_t expectedUChars[] = {
0x0627, 0x0644, 0x062e, 0x0645, 0x064a, 0x0633, 0x060c, 0x0020, 0x0662, 0x0662, 0x0020,
0x0634, 0x0648, 0x0627, 0x0644, 0x0020, 0x0661, 0x0663, 0x0668, 0x0669, 0x0020, 0x0647, 0x0640, 0
};
UnicodeString result;
DateFormat *fmt = DateFormat::createDateInstance(DateFormat::kFull, Locale("ar_JO@calendar=islamic-civil"));
- if (fmt == NULL) {
+ if (fmt == nullptr) {
dataerrln("Error calling DateFormat::createDateInstance");
delete c;
return;
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/callimts.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/callimts.cpp
index 3c1f1da3be8..bfb946db4ef 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/callimts.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/callimts.cpp
@@ -109,7 +109,7 @@ CalendarLimitTest::TestCalendarExtremeLimit()
return;
}
fmt->adoptCalendar(cal);
- ((SimpleDateFormat*) fmt)->applyPattern("HH:mm:ss.SSS Z, EEEE, MMMM d, yyyy G");
+ (dynamic_cast<SimpleDateFormat*>(fmt))->applyPattern("HH:mm:ss.SSS Z, EEEE, MMMM d, yyyy G");
// This test used to test the algorithmic limits of the dates that
@@ -191,7 +191,7 @@ struct {
} // anonymous name space
void
-CalendarLimitTest::TestLimits(void) {
+CalendarLimitTest::TestLimits() {
gTestCaseIterator.reset();
ThreadPool<CalendarLimitTest> threads(this, threadCount, &CalendarLimitTest::TestLimitsThread);
@@ -301,7 +301,7 @@ CalendarLimitTest::doTheoreticalLimitsTest(Calendar& cal, UBool leapMonth) {
void
CalendarLimitTest::doLimitsTest(Calendar& cal, UDate startDate, int32_t endTime) {
int32_t testTime = quick ? ( endTime / 40 ) : endTime;
- doLimitsTest(cal, NULL /*default fields*/, startDate, testTime);
+ doLimitsTest(cal, nullptr /*default fields*/, startDate, testTime);
}
void
@@ -347,7 +347,7 @@ CalendarLimitTest::doLimitsTest(Calendar& cal,
}
logln((UnicodeString)"Start: " + startDate);
- if (fieldsToTest == NULL) {
+ if (fieldsToTest == nullptr) {
fieldsToTest = FIELDS;
}
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/callimts.h b/Build/source/libs/icu/icu-src/source/test/intltest/callimts.h
index 82c50828c32..3557a73ef42 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/callimts.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/callimts.h
@@ -35,9 +35,9 @@ public: // package
public:
// test behaviour and error reporting at boundaries of defined range
- virtual void TestCalendarExtremeLimit(void);
+ virtual void TestCalendarExtremeLimit();
- void TestLimits(void);
+ void TestLimits();
void TestLimitsThread(int32_t threadNumber);
private:
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/calregts.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/calregts.cpp
index 7fff12b7271..da458413e90 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/calregts.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/calregts.cpp
@@ -99,6 +99,7 @@ CalendarRegressionTest::runIndexedTest( int32_t index, UBool exec, const char* &
CASE(55,Test13745);
CASE(56,TestUTCWrongAMPM22023);
CASE(57,TestAsiaManilaAfterSetGregorianChange22043);
+ CASE(58,TestRespectUExtensionFw);
default: name = ""; break;
}
}
@@ -143,7 +144,7 @@ void
CalendarRegressionTest::test4100311()
{
UErrorCode status = U_ZERO_ERROR;
- GregorianCalendar *cal = (GregorianCalendar*)Calendar::createInstance(status);
+ GregorianCalendar *cal = dynamic_cast<GregorianCalendar*>(Calendar::createInstance(status));
if(U_FAILURE(status)) {
dataerrln("Error creating Calendar: %s", u_errorName(status));
delete cal;
@@ -619,7 +620,7 @@ void CalendarRegressionTest::dowTest(UBool lenient)
if(cal->getActualMinimum(Calendar::DAY_OF_WEEK) != min) {
errln("FAIL: actual minimum (Calendar::DAY_OF_WEEK) differs from minimum");
}
- if(((Calendar*)cal)->getActualMinimum(UCAL_DAY_OF_WEEK, status) != min) {
+ if(cal->getActualMinimum(UCAL_DAY_OF_WEEK, status) != min) {
errln("FAIL: actual minimum (UCAL_DAY_OF_WEEK, status) differs from minimum");
}
// NOTE: This function does not exist! jitterbug #3016
@@ -970,7 +971,7 @@ void CalendarRegressionTest::test4096539()
void CalendarRegressionTest::test41003112()
{
UErrorCode status = U_ZERO_ERROR;
- GregorianCalendar *cal = (GregorianCalendar*)Calendar::createInstance(status);
+ GregorianCalendar *cal = dynamic_cast<GregorianCalendar*>(Calendar::createInstance(status));
if(U_FAILURE(status)) {
dataerrln("Error creating calendar: %s", u_errorName(status));
delete cal;
@@ -994,7 +995,7 @@ void CalendarRegressionTest::test4103271()
SimpleDateFormat sdf(status);
int32_t numYears=40, startYear=1997, numDays=15;
UnicodeString output, testDesc, str, str2;
- GregorianCalendar *testCal = (GregorianCalendar*)Calendar::createInstance(status);
+ GregorianCalendar *testCal = dynamic_cast<GregorianCalendar*>(Calendar::createInstance(status));
if(U_FAILURE(status)) {
dataerrln("Error creating calendar: %s", u_errorName(status));
delete testCal;
@@ -1458,7 +1459,7 @@ void CalendarRegressionTest::test4118384()
void CalendarRegressionTest::test4125881()
{
UErrorCode status = U_ZERO_ERROR;
- LocalPointer<GregorianCalendar> cal((GregorianCalendar*) Calendar::createInstance(status), status);
+ LocalPointer<GregorianCalendar> cal(dynamic_cast<GregorianCalendar*>(Calendar::createInstance(status)), status);
if(U_FAILURE(status)) {
dataerrln("Error creating calendar %s", u_errorName(status));
return;
@@ -1487,7 +1488,7 @@ void CalendarRegressionTest::test4125881()
*/
void CalendarRegressionTest::test4125892() {
UErrorCode status = U_ZERO_ERROR;
- LocalPointer<GregorianCalendar> cal((GregorianCalendar*) Calendar::createInstance(status), status);
+ LocalPointer<GregorianCalendar> cal(dynamic_cast<GregorianCalendar*>(Calendar::createInstance(status)), status);
if(U_FAILURE(status)) {
dataerrln("Error creating calendar %s", u_errorName(status));
return;
@@ -2041,7 +2042,7 @@ void CalendarRegressionTest::Test4197699() {
int32_t DATA_length = UPRV_LENGTHOF(DATA);
UnicodeString str;
- DateFormat& dfmt = *(DateFormat*)&fmt;
+ DateFormat& dfmt = *dynamic_cast<DateFormat*>(&fmt);
for (int32_t i=0; i<DATA_length; ) {
cal.clear();
cal.set(DATA[i], DATA[i+1], DATA[i+2]);
@@ -2297,7 +2298,7 @@ void CalendarRegressionTest::TestJ81() {
/**
* Test fieldDifference().
*/
-void CalendarRegressionTest::TestJ438(void) {
+void CalendarRegressionTest::TestJ438() {
UErrorCode ec = U_ZERO_ERROR;
int32_t DATA[] = {
2000, UCAL_JANUARY, 20, 2010, UCAL_JUNE, 15,
@@ -2406,7 +2407,7 @@ void CalendarRegressionTest::TestT5555()
UErrorCode ec = U_ZERO_ERROR;
Calendar *cal = Calendar::createInstance(ec);
- if (cal == NULL || U_FAILURE(ec)) {
+ if (cal == nullptr || U_FAILURE(ec)) {
dataerrln("FAIL: Calendar::createInstance(): %s", u_errorName(ec));
delete cal;
return;
@@ -2473,13 +2474,13 @@ typedef struct {
static const CoptEthCalLocale copEthCalLocales[] = {
{ "en@calendar=coptic", 0 },
{ "en@calendar=ethiopic", 276 },
- { NULL, 0 } // terminator
+ { nullptr, 0 } // terminator
};
void CalendarRegressionTest::TestT6745()
{
const CoptEthCalLocale * testLocalePtr;
- for ( testLocalePtr = copEthCalLocales; testLocalePtr->locale != NULL; ++testLocalePtr) {
+ for ( testLocalePtr = copEthCalLocales; testLocalePtr->locale != nullptr; ++testLocalePtr) {
UErrorCode status = U_ZERO_ERROR;
Calendar *cal = Calendar::createInstance(Locale(testLocalePtr->locale), status);
if ( U_FAILURE(status) ) {
@@ -2518,7 +2519,7 @@ void CalendarRegressionTest::TestT6745()
void CalendarRegressionTest::TestLeapFieldDifference() {
UErrorCode ec = U_ZERO_ERROR;
Calendar* cal = Calendar::createInstance(ec);
- if (cal == NULL || U_FAILURE(ec)) {
+ if (cal == nullptr || U_FAILURE(ec)) {
dataerrln("FAIL: Calendar::createInstance(): %s", u_errorName(ec));
delete cal;
return;
@@ -2697,22 +2698,22 @@ void CalendarRegressionTest::TestTimeZoneTransitionAdd() {
UnicodeString buf1, buf2;
- const UChar* id;
- while ((id = tz->unext(NULL, ec)) != NULL && U_SUCCESS(ec)) {
+ const char16_t* id;
+ while ((id = tz->unext(nullptr, ec)) != nullptr && U_SUCCESS(ec)) {
if (U_FAILURE(ec)) {
errln("FAIL: StringEnumeration::unext");
break;
}
TimeZone *t = TimeZone::createTimeZone(id);
- if (t == NULL) {
+ if (t == nullptr) {
errln("FAIL: TimeZone::createTimeZone");
break;
}
dateFormat.setTimeZone(*t);
Calendar *cal = Calendar::createInstance(t, locale, ec);
- if (cal == NULL || U_FAILURE(ec)) {
+ if (cal == nullptr || U_FAILURE(ec)) {
errln("FAIL: Calendar::createTimeZone");
delete cal;
break;
@@ -2771,7 +2772,7 @@ CalendarRegressionTest::makeDate(int32_t y, int32_t m, int32_t d,
return result;
}
-void CalendarRegressionTest::TestDeprecates(void)
+void CalendarRegressionTest::TestDeprecates()
{
UErrorCode status = U_ZERO_ERROR;
Calendar *c1 = Calendar::createInstance("ja_JP@calendar=japanese",status);
@@ -2867,10 +2868,10 @@ void CalendarRegressionTest::TestDeprecates(void)
}
-void CalendarRegressionTest::TestT8057(void) {
+void CalendarRegressionTest::TestT8057() {
// Set the calendar to the last day in a leap year
UErrorCode status = U_ZERO_ERROR;
- GregorianCalendar *cal = (GregorianCalendar*)Calendar::createInstance(status);
+ GregorianCalendar *cal = dynamic_cast<GregorianCalendar*>(Calendar::createInstance(status));
if(U_FAILURE(status)) {
errln("Error creating Calendar: %s", u_errorName(status));
delete cal;
@@ -2906,7 +2907,7 @@ void CalendarRegressionTest::TestT8057(void) {
// Test case for ticket#8596.
// Setting an year followed by getActualMaximum(Calendar.WEEK_OF_YEAR)
// may result wrong maximum week.
-void CalendarRegressionTest::TestT8596(void) {
+void CalendarRegressionTest::TestT8596() {
UErrorCode status = U_ZERO_ERROR;
GregorianCalendar *gc = new GregorianCalendar(*TimeZone::getGMT(), status);
@@ -2948,7 +2949,7 @@ void CalendarRegressionTest::TestT8596(void) {
// Test case for ticket 9452
// Calendar addition fall onto the missing date - 2011-12-30 in Samoa
-void CalendarRegressionTest::TestT9452(void) {
+void CalendarRegressionTest::TestT9452() {
UErrorCode status = U_ZERO_ERROR;
GregorianCalendar cal(TimeZone::createTimeZone("Pacific/Apia"), status);
failure(status, "initializing GregorianCalendar");
@@ -2993,7 +2994,7 @@ void CalendarRegressionTest::TestT9452(void) {
/**
* @bug ticket 11632
*/
-void CalendarRegressionTest::TestT11632(void) {
+void CalendarRegressionTest::TestT11632() {
UErrorCode status = U_ZERO_ERROR;
GregorianCalendar cal(TimeZone::createTimeZone("Pacific/Apia"), status);
if(U_FAILURE(status)) {
@@ -3033,7 +3034,7 @@ void CalendarRegressionTest::TestT11632(void) {
/**
* @bug ticket 13454
*/
-void CalendarRegressionTest::TestPersianCalOverflow(void) {
+void CalendarRegressionTest::TestPersianCalOverflow() {
const char* localeID = "bs_Cyrl@calendar=persian";
UErrorCode status = U_ZERO_ERROR;
Calendar* cal = Calendar::createInstance(Locale(localeID), status);
@@ -3063,7 +3064,7 @@ void CalendarRegressionTest::TestPersianCalOverflow(void) {
/**
* @bug tickets 12661, 13538
*/
-void CalendarRegressionTest::TestIslamicCalOverflow(void) {
+void CalendarRegressionTest::TestIslamicCalOverflow() {
const char* localeID = "ar@calendar=islamic-civil";
UErrorCode status = U_ZERO_ERROR;
Calendar* cal = Calendar::createInstance(Locale(localeID), status);
@@ -3182,7 +3183,7 @@ void CalendarRegressionTest::VerifyGetStayInBound(double time) {
}
}
-void CalendarRegressionTest::TestUTCWrongAMPM22023(void) {
+void CalendarRegressionTest::TestUTCWrongAMPM22023() {
VerifyGetStayInBound(-1);
VerifyGetStayInBound(0);
VerifyGetStayInBound(-1e-8);
@@ -3202,7 +3203,7 @@ void CalendarRegressionTest::VerifyNoAssertWithSetGregorianChange(const char* ti
if (cal->getDynamicClassID() ==
GregorianCalendar::getStaticClassID()) {
GregorianCalendar* gc =
- static_cast<GregorianCalendar*>(cal.get());
+ dynamic_cast<GregorianCalendar*>(cal.get());
// The beginning of ECMAScript time, namely -(2**53)
const double start_of_time = -9007199254740992;
gc->setGregorianChange(start_of_time, status);
@@ -3210,7 +3211,7 @@ void CalendarRegressionTest::VerifyNoAssertWithSetGregorianChange(const char* ti
cal->get(UCAL_YEAR, status);
}
-void CalendarRegressionTest::TestAsiaManilaAfterSetGregorianChange22043(void) {
+void CalendarRegressionTest::TestAsiaManilaAfterSetGregorianChange22043() {
VerifyNoAssertWithSetGregorianChange("Asia/Malina");
UErrorCode status = U_ZERO_ERROR;
std::unique_ptr<StringEnumeration> ids(TimeZone::createEnumeration(status));
@@ -3224,7 +3225,7 @@ void CalendarRegressionTest::TestAsiaManilaAfterSetGregorianChange22043(void) {
}
}
-void CalendarRegressionTest::TestWeekOfYear13548(void) {
+void CalendarRegressionTest::TestWeekOfYear13548() {
int32_t year = 2000;
UErrorCode status = U_ZERO_ERROR;
LocalPointer<Calendar> cal(Calendar::createInstance(status));
@@ -3240,4 +3241,40 @@ void CalendarRegressionTest::TestWeekOfYear13548(void) {
}
}
+void CalendarRegressionTest::TestRespectUExtensionFw() { // ICU-22226
+ static const char* LOCALE_IDS[] = {
+ "en-US",
+ "en-US-u-fw-xyz",
+ "en-US-u-fw-sun",
+ "en-US-u-fw-mon",
+ "en-US-u-fw-thu",
+ "en-US-u-fw-sat"
+ };
+ static const UCalendarDaysOfWeek EXPECTED_VAL[] = {
+ UCAL_SUNDAY,
+ UCAL_SUNDAY,
+ UCAL_SUNDAY,
+ UCAL_MONDAY,
+ UCAL_THURSDAY,
+ UCAL_SATURDAY
+ };
+
+ int32_t EXPECTED_VAL_count = UPRV_LENGTHOF(EXPECTED_VAL);
+ assertEquals("The number of locales should be equal to the number of expected results.",
+ EXPECTED_VAL_count, UPRV_LENGTHOF(LOCALE_IDS));
+
+ for (int32_t i=0; i<EXPECTED_VAL_count; ++i) {
+ UErrorCode status = U_ZERO_ERROR;
+ const char * localeId = LOCALE_IDS[i];
+ UCalendarDaysOfWeek expected = EXPECTED_VAL[i];
+
+ Locale locale = Locale::forLanguageTag(localeId, status);
+ LocalPointer<Calendar> cal(Calendar::createInstance(locale, status));
+ UCalendarDaysOfWeek actual = cal->getFirstDayOfWeek(status);
+ failure(status, "Calendar::getFirstDayOfWeek(status)");
+
+ assertEquals((UnicodeString)"Calendar.getFirstDayOfWeek() ignores the 'fw' extension u in '"
+ + localeId + "' locale", expected, actual);
+ }
+}
#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/calregts.h b/Build/source/libs/icu/icu-src/source/test/intltest/calregts.h
index da815fb448e..0dab3c2bebc 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/calregts.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/calregts.h
@@ -25,66 +25,67 @@ class CalendarRegressionTest: public IntlTest {
// IntlTest override
void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par ) override;
public:
- void test4100311(void);
- void test4074758(void);
- void test4028518(void);
- void test4031502(void) ;
- void test4035301(void) ;
- void test4040996(void) ;
- void test4051765(void) ;
- void test4059654(void) ;
- void test4061476(void) ;
- void test4070502(void) ;
- void test4071197(void) ;
- void test4071385(void) ;
- void test4073929(void) ;
- void test4083167(void) ;
- void test4086724(void) ;
- void test4092362(void) ;
- void test4095407(void) ;
- void test4096231(void) ;
- void test4096539(void) ;
- void test41003112(void) ;
- void test4103271(void) ;
- void test4106136(void) ;
- void test4108764(void) ;
- void test4114578(void) ;
- void test4118384(void) ;
- void test4125881(void) ;
- void test4125892(void) ;
- void test4141665(void) ;
- void test4142933(void) ;
- void test4145158(void) ;
- void test4145983(void) ;
- void test4147269(void) ;
+ void test4100311();
+ void test4074758();
+ void test4028518();
+ void test4031502() ;
+ void test4035301() ;
+ void test4040996() ;
+ void test4051765() ;
+ void test4059654() ;
+ void test4061476() ;
+ void test4070502() ;
+ void test4071197() ;
+ void test4071385() ;
+ void test4073929() ;
+ void test4083167() ;
+ void test4086724() ;
+ void test4092362() ;
+ void test4095407() ;
+ void test4096231() ;
+ void test4096539() ;
+ void test41003112() ;
+ void test4103271() ;
+ void test4106136() ;
+ void test4108764() ;
+ void test4114578() ;
+ void test4118384() ;
+ void test4125881() ;
+ void test4125892() ;
+ void test4141665() ;
+ void test4142933() ;
+ void test4145158() ;
+ void test4145983() ;
+ void test4147269() ;
- void Test4149677(void) ;
- void Test4162587(void) ;
- void Test4165343(void) ;
- void Test4166109(void) ;
- void Test4167060(void) ;
- void Test4197699(void);
- void TestJ81(void);
- void TestJ438(void);
- void TestT5555(void);
- void TestT6745(void);
- void TestT8057(void);
- void TestLeapFieldDifference(void);
- void TestMalaysianInstance(void);
- void TestWeekShift(void);
- void TestTimeZoneTransitionAdd(void);
- void TestDeprecates(void);
- void TestT8596(void);
- void Test9019(void);
- void TestT9452(void);
- void TestT11632(void);
- void TestPersianCalOverflow(void);
- void TestIslamicCalOverflow(void);
- void TestWeekOfYear13548(void);
- void TestUTCWrongAMPM22023(void);
- void TestAsiaManilaAfterSetGregorianChange22043(void);
+ void Test4149677() ;
+ void Test4162587() ;
+ void Test4165343() ;
+ void Test4166109() ;
+ void Test4167060() ;
+ void Test4197699();
+ void TestJ81();
+ void TestJ438();
+ void TestT5555();
+ void TestT6745();
+ void TestT8057();
+ void TestLeapFieldDifference();
+ void TestMalaysianInstance();
+ void TestWeekShift();
+ void TestTimeZoneTransitionAdd();
+ void TestDeprecates();
+ void TestT8596();
+ void Test9019();
+ void TestT9452();
+ void TestT11632();
+ void TestPersianCalOverflow();
+ void TestIslamicCalOverflow();
+ void TestWeekOfYear13548();
+ void TestUTCWrongAMPM22023();
+ void TestAsiaManilaAfterSetGregorianChange22043();
- void Test13745(void);
+ void Test13745();
+ void TestRespectUExtensionFw();
void printdate(GregorianCalendar *cal, const char *string);
void dowTest(UBool lenient) ;
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/caltest.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/caltest.cpp
index 9fc46ef1d4c..73476293f7d 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/caltest.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/caltest.cpp
@@ -21,6 +21,10 @@
#include "unicode/ustring.h"
#include "cstring.h"
#include "unicode/localpointer.h"
+#include "chnsecal.h"
+#include "intltest.h"
+#include "coptccal.h"
+#include "ethpccal.h"
#include "islamcal.h"
#define mkcstr(U) u_austrcpy(calloc(8, u_strlen(U) + 1), U)
@@ -86,275 +90,107 @@ UnicodeString CalendarTest::calToStr(const Calendar & cal)
void CalendarTest::runIndexedTest( int32_t index, UBool exec, const char* &name, char* /*par*/ )
{
if (exec) logln("TestSuite TestCalendar");
- switch (index) {
- case 0:
- name = "TestDOW943";
- if (exec) {
- logln("TestDOW943---"); logln("");
- TestDOW943();
- }
- break;
- case 1:
- name = "TestClonesUnique908";
- if (exec) {
- logln("TestClonesUnique908---"); logln("");
- TestClonesUnique908();
- }
- break;
- case 2:
- name = "TestGregorianChange768";
- if (exec) {
- logln("TestGregorianChange768---"); logln("");
- TestGregorianChange768();
- }
- break;
- case 3:
- name = "TestDisambiguation765";
- if (exec) {
- logln("TestDisambiguation765---"); logln("");
- TestDisambiguation765();
- }
- break;
- case 4:
- name = "TestGMTvsLocal4064654";
- if (exec) {
- logln("TestGMTvsLocal4064654---"); logln("");
- TestGMTvsLocal4064654();
- }
- break;
- case 5:
- name = "TestAddSetOrder621";
- if (exec) {
- logln("TestAddSetOrder621---"); logln("");
- TestAddSetOrder621();
- }
- break;
- case 6:
- name = "TestAdd520";
- if (exec) {
- logln("TestAdd520---"); logln("");
- TestAdd520();
- }
- break;
- case 7:
- name = "TestFieldSet4781";
- if (exec) {
- logln("TestFieldSet4781---"); logln("");
- TestFieldSet4781();
- }
- break;
- case 8:
- name = "TestSerialize337";
- if (exec) {
- logln("TestSerialize337---"); logln("");
- // TestSerialize337();
- }
- break;
- case 9:
- name = "TestSecondsZero121";
- if (exec) {
- logln("TestSecondsZero121---"); logln("");
- TestSecondsZero121();
- }
- break;
- case 10:
- name = "TestAddSetGet0610";
- if (exec) {
- logln("TestAddSetGet0610---"); logln("");
- TestAddSetGet0610();
- }
- break;
- case 11:
- name = "TestFields060";
- if (exec) {
- logln("TestFields060---"); logln("");
- TestFields060();
- }
- break;
- case 12:
- name = "TestEpochStartFields";
- if (exec) {
- logln("TestEpochStartFields---"); logln("");
- TestEpochStartFields();
- }
- break;
- case 13:
- name = "TestDOWProgression";
- if (exec) {
- logln("TestDOWProgression---"); logln("");
- TestDOWProgression();
- }
- break;
- case 14:
- name = "TestGenericAPI";
- if (exec) {
- logln("TestGenericAPI---"); logln("");
- TestGenericAPI();
- }
- break;
- case 15:
- name = "TestAddRollExtensive";
- if (exec) {
- logln("TestAddRollExtensive---"); logln("");
- TestAddRollExtensive();
- }
- break;
- case 16:
- name = "TestDOW_LOCALandYEAR_WOY";
- if (exec) {
- logln("TestDOW_LOCALandYEAR_WOY---"); logln("");
- TestDOW_LOCALandYEAR_WOY();
- }
- break;
- case 17:
- name = "TestWOY";
- if (exec) {
- logln("TestWOY---"); logln("");
- TestWOY();
- }
- break;
- case 18:
- name = "TestRog";
- if (exec) {
- logln("TestRog---"); logln("");
- TestRog();
- }
- break;
- case 19:
- name = "TestYWOY";
- if (exec) {
- logln("TestYWOY---"); logln("");
- TestYWOY();
- }
- break;
- case 20:
- name = "TestJD";
- if(exec) {
- logln("TestJD---"); logln("");
- TestJD();
- }
- break;
- case 21:
- name = "TestDebug";
- if(exec) {
- logln("TestDebug---"); logln("");
- TestDebug();
- }
- break;
- case 22:
- name = "Test6703";
- if(exec) {
- logln("Test6703---"); logln("");
- Test6703();
- }
- break;
- case 23:
- name = "Test3785";
- if(exec) {
- logln("Test3785---"); logln("");
- Test3785();
- }
- break;
- case 24:
- name = "Test1624";
- if(exec) {
- logln("Test1624---"); logln("");
- Test1624();
- }
- break;
- case 25:
- name = "TestTimeStamp";
- if(exec) {
- logln("TestTimeStamp---"); logln("");
- TestTimeStamp();
- }
- break;
- case 26:
- name = "TestISO8601";
- if(exec) {
- logln("TestISO8601---"); logln("");
- TestISO8601();
- }
- break;
- case 27:
- name = "TestAmbiguousWallTimeAPIs";
- if(exec) {
- logln("TestAmbiguousWallTimeAPIs---"); logln("");
- TestAmbiguousWallTimeAPIs();
- }
- break;
- case 28:
- name = "TestRepeatedWallTime";
- if(exec) {
- logln("TestRepeatedWallTime---"); logln("");
- TestRepeatedWallTime();
- }
- break;
- case 29:
- name = "TestSkippedWallTime";
- if(exec) {
- logln("TestSkippedWallTime---"); logln("");
- TestSkippedWallTime();
- }
- break;
- case 30:
- name = "TestCloneLocale";
- if(exec) {
- logln("TestCloneLocale---"); logln("");
- TestCloneLocale();
- }
- break;
- case 31:
- name = "TestIslamicUmAlQura";
- if(exec) {
- logln("TestIslamicUmAlQura---"); logln("");
- TestIslamicUmAlQura();
- }
- break;
- case 32:
- name = "TestIslamicTabularDates";
- if(exec) {
- logln("TestIslamicTabularDates---"); logln("");
- TestIslamicTabularDates();
- }
- break;
- case 33:
- name = "TestHebrewMonthValidation";
- if(exec) {
- logln("TestHebrewMonthValidation---"); logln("");
- TestHebrewMonthValidation();
- }
- break;
- case 34:
- name = "TestWeekData";
- if(exec) {
- logln("TestWeekData---"); logln("");
- TestWeekData();
- }
- break;
- case 35:
- name = "TestAddAcrossZoneTransition";
- if(exec) {
- logln("TestAddAcrossZoneTransition---"); logln("");
- TestAddAcrossZoneTransition();
- }
- break;
- case 36:
- name = "TestChineseCalendarMapping";
- if(exec) {
- logln("TestChineseCalendarMapping---"); logln("");
- TestChineseCalendarMapping();
- }
- break;
- case 37:
- name = "TestTimeZoneInLocale";
- if(exec) {
- logln("TestTimeZoneInLocale---"); logln("");
- TestTimeZoneInLocale();
- }
- break;
- default: name = ""; break;
- }
+
+ TESTCASE_AUTO_BEGIN;
+ TESTCASE_AUTO(TestDOW943);
+ TESTCASE_AUTO(TestClonesUnique908);
+ TESTCASE_AUTO(TestGregorianChange768);
+ TESTCASE_AUTO(TestDisambiguation765);
+ TESTCASE_AUTO(TestGMTvsLocal4064654);
+ TESTCASE_AUTO(TestAddSetOrder621);
+ TESTCASE_AUTO(TestAdd520);
+ TESTCASE_AUTO(TestFieldSet4781);
+ // TESTCASE_AUTO(TestSerialize337);
+ TESTCASE_AUTO(TestSecondsZero121);
+ TESTCASE_AUTO(TestAddSetGet0610);
+ TESTCASE_AUTO(TestFields060);
+ TESTCASE_AUTO(TestEpochStartFields);
+ TESTCASE_AUTO(TestDOWProgression);
+ TESTCASE_AUTO(TestGenericAPI);
+ TESTCASE_AUTO(TestAddRollExtensive);
+ TESTCASE_AUTO(TestDOW_LOCALandYEAR_WOY);
+ TESTCASE_AUTO(TestWOY);
+ TESTCASE_AUTO(TestRog);
+ TESTCASE_AUTO(TestYWOY);
+ TESTCASE_AUTO(TestJD);
+ TESTCASE_AUTO(TestDebug);
+ TESTCASE_AUTO(Test6703);
+ TESTCASE_AUTO(Test3785);
+ TESTCASE_AUTO(Test1624);
+ TESTCASE_AUTO(TestTimeStamp);
+ TESTCASE_AUTO(TestISO8601);
+ TESTCASE_AUTO(TestAmbiguousWallTimeAPIs);
+ TESTCASE_AUTO(TestRepeatedWallTime);
+ TESTCASE_AUTO(TestSkippedWallTime);
+ TESTCASE_AUTO(TestCloneLocale);
+ TESTCASE_AUTO(TestIslamicUmAlQura);
+ TESTCASE_AUTO(TestIslamicTabularDates);
+ TESTCASE_AUTO(TestHebrewMonthValidation);
+ TESTCASE_AUTO(TestWeekData);
+ TESTCASE_AUTO(TestAddAcrossZoneTransition);
+ TESTCASE_AUTO(TestChineseCalendarMapping);
+ TESTCASE_AUTO(TestTimeZoneInLocale);
+ TESTCASE_AUTO(TestBasicConversionISO8601);
+ TESTCASE_AUTO(TestBasicConversionJapanese);
+ TESTCASE_AUTO(TestBasicConversionBuddhist);
+ TESTCASE_AUTO(TestBasicConversionTaiwan);
+ TESTCASE_AUTO(TestBasicConversionPersian);
+ TESTCASE_AUTO(TestBasicConversionIslamic);
+ TESTCASE_AUTO(TestBasicConversionIslamicTBLA);
+ TESTCASE_AUTO(TestBasicConversionIslamicCivil);
+ TESTCASE_AUTO(TestBasicConversionIslamicRGSA);
+ TESTCASE_AUTO(TestBasicConversionIslamicUmalqura);
+ TESTCASE_AUTO(TestBasicConversionHebrew);
+ TESTCASE_AUTO(TestBasicConversionChinese);
+ TESTCASE_AUTO(TestBasicConversionDangi);
+ TESTCASE_AUTO(TestBasicConversionIndian);
+ TESTCASE_AUTO(TestBasicConversionCoptic);
+ TESTCASE_AUTO(TestBasicConversionEthiopic);
+ TESTCASE_AUTO(TestBasicConversionEthiopicAmeteAlem);
+ TESTCASE_AUTO(TestGregorianCalendarInTemporalLeapYear);
+ TESTCASE_AUTO(TestChineseCalendarInTemporalLeapYear);
+ TESTCASE_AUTO(TestDangiCalendarInTemporalLeapYear);
+ TESTCASE_AUTO(TestHebrewCalendarInTemporalLeapYear);
+ TESTCASE_AUTO(TestIslamicCalendarInTemporalLeapYear);
+ TESTCASE_AUTO(TestIslamicCivilCalendarInTemporalLeapYear);
+ TESTCASE_AUTO(TestIslamicUmalquraCalendarInTemporalLeapYear);
+ TESTCASE_AUTO(TestIslamicRGSACalendarInTemporalLeapYear);
+ TESTCASE_AUTO(TestIslamicTBLACalendarInTemporalLeapYear);
+ TESTCASE_AUTO(TestPersianCalendarInTemporalLeapYear);
+ TESTCASE_AUTO(TestIndianCalendarInTemporalLeapYear);
+ TESTCASE_AUTO(TestTaiwanCalendarInTemporalLeapYear);
+ TESTCASE_AUTO(TestJapaneseCalendarInTemporalLeapYear);
+ TESTCASE_AUTO(TestBuddhistCalendarInTemporalLeapYear);
+ TESTCASE_AUTO(TestCopticCalendarInTemporalLeapYear);
+ TESTCASE_AUTO(TestEthiopicCalendarInTemporalLeapYear);
+ TESTCASE_AUTO(TestEthiopicAmeteAlemCalendarInTemporalLeapYear);
+ TESTCASE_AUTO(TestChineseCalendarGetTemporalMonthCode);
+ TESTCASE_AUTO(TestDangiCalendarGetTemporalMonthCode);
+ TESTCASE_AUTO(TestHebrewCalendarGetTemporalMonthCode);
+ TESTCASE_AUTO(TestCopticCalendarGetTemporalMonthCode);
+ TESTCASE_AUTO(TestEthiopicCalendarGetTemporalMonthCode);
+ TESTCASE_AUTO(TestEthiopicAmeteAlemCalendarGetTemporalMonthCode);
+ TESTCASE_AUTO(TestGregorianCalendarSetTemporalMonthCode);
+ TESTCASE_AUTO(TestChineseCalendarSetTemporalMonthCode);
+ TESTCASE_AUTO(TestHebrewCalendarSetTemporalMonthCode);
+ TESTCASE_AUTO(TestCopticCalendarSetTemporalMonthCode);
+ TESTCASE_AUTO(TestEthiopicCalendarSetTemporalMonthCode);
+ TESTCASE_AUTO(TestMostCalendarsOrdinalMonthSet);
+ TESTCASE_AUTO(TestChineseCalendarOrdinalMonthSet);
+ TESTCASE_AUTO(TestDangiCalendarOrdinalMonthSet);
+ TESTCASE_AUTO(TestHebrewCalendarOrdinalMonthSet);
+ TESTCASE_AUTO(TestCalendarAddOrdinalMonth);
+ TESTCASE_AUTO(TestCalendarRollOrdinalMonth);
+ TESTCASE_AUTO(TestLimitsOrdinalMonth);
+ TESTCASE_AUTO(TestActualLimitsOrdinalMonth);
+ TESTCASE_AUTO(TestChineseCalendarMonthInSpecialYear);
+ TESTCASE_AUTO(TestClearMonth);
+
+ TESTCASE_AUTO(TestFWWithISO8601);
+ TESTCASE_AUTO(TestDangiOverflowIsLeapMonthBetween22507);
+ TESTCASE_AUTO(TestRollWeekOfYear);
+
+ TESTCASE_AUTO_END;
}
// ---------------------------------------------------------------------------------
@@ -616,10 +452,10 @@ CalendarTest::TestGenericAPI()
if (failure(status, "Calendar::createInstance #6")) {
return;
}else {
- ((Calendar *)cal)->roll(UCAL_HOUR, (int32_t)100, status);
- ((Calendar *)cal)->clear(UCAL_HOUR);
+ cal->roll(UCAL_HOUR, (int32_t)100, status);
+ cal->clear(UCAL_HOUR);
#if !UCONFIG_NO_SERVICE
- URegistryKey key = cal->registerFactory(NULL, status);
+ URegistryKey key = cal->registerFactory(nullptr, status);
cal->unregister(key, status);
#endif
}
@@ -641,8 +477,8 @@ CalendarTest::TestGenericAPI()
UBool containsHebrew = false;
const char *charValue;
int32_t valueLength;
- while ((charValue = values->next(&valueLength, status)) != NULL) {
- if (valueLength == 6 && strcmp(charValue, "hebrew") == 0) {
+ while ((charValue = values->next(&valueLength, status)) != nullptr) {
+ if (valueLength == 6 && uprv_strcmp(charValue, "hebrew") == 0) {
containsHebrew = true;
}
}
@@ -653,8 +489,8 @@ CalendarTest::TestGenericAPI()
values->reset(status);
containsHebrew = false;
UnicodeString hebrew = UNICODE_STRING_SIMPLE("hebrew");
- const UChar *ucharValue;
- while ((ucharValue = values->unext(&valueLength, status)) != NULL) {
+ const char16_t *ucharValue;
+ while ((ucharValue = values->unext(&valueLength, status)) != nullptr) {
UnicodeString value(false, ucharValue, valueLength);
if (value == hebrew) {
containsHebrew = true;
@@ -667,7 +503,7 @@ CalendarTest::TestGenericAPI()
values->reset(status);
containsHebrew = false;
const UnicodeString *stringValue;
- while ((stringValue = values->snext(status)) != NULL) {
+ while ((stringValue = values->snext(status)) != nullptr) {
if (*stringValue == hebrew) {
containsHebrew = true;
}
@@ -1771,7 +1607,7 @@ CalendarTest::marchByDelta(Calendar* cal, int32_t delta)
} \
} UPRV_BLOCK_MACRO_END
-void CalendarTest::TestWOY(void) {
+void CalendarTest::TestWOY() {
/*
FDW = Mon, MDFW = 4:
Sun Dec 26 1999, WOY 51
@@ -2139,11 +1975,11 @@ void CalendarTest::TestDebug()
logln("Testing count+1:");
}
const char *name = udbg_enumName((UDebugEnumType)t,i);
- if(name==NULL) {
+ if(name==nullptr) {
if(i==count || t>UDBG_HIGHEST_CONTIGUOUS_ENUM ) {
logln(" null name - expected.\n");
} else {
- errln("FAIL: udbg_enumName(%d,%d) returned NULL", t, i);
+ errln("FAIL: udbg_enumName(%d,%d) returned nullptr", t, i);
}
name = "(null)";
}
@@ -2181,7 +2017,7 @@ const char *CalendarTest::testLocaleID(int32_t i)
case 12: return "hu_HU@calendar=buddhist";
case 13: return "hu_HU@calendar=islamic";
case 14: return "en_US@calendar=japanese";
- default: return NULL;
+ default: return nullptr;
}
}
@@ -2190,7 +2026,7 @@ int32_t CalendarTest::testLocaleCount()
static int32_t gLocaleCount = -1;
if(gLocaleCount < 0) {
int32_t i;
- for(i=0;testLocaleID(i) != NULL;i++) {
+ for(i=0;testLocaleID(i) != nullptr;i++) {
// do nothing
}
gLocaleCount = i;
@@ -2204,7 +2040,7 @@ static UDate doMinDateOfCalendar(Calendar* adopt, UBool &isGregorian, UErrorCode
adopt->clear();
adopt->set(UCAL_EXTENDED_YEAR, adopt->getActualMinimum(UCAL_EXTENDED_YEAR, status));
UDate ret = adopt->getTime(status);
- isGregorian = dynamic_cast<GregorianCalendar*>(adopt) != NULL;
+ isGregorian = dynamic_cast<GregorianCalendar*>(adopt) != nullptr;
delete adopt;
return ret;
}
@@ -2252,18 +2088,18 @@ void CalendarTest::Test3785()
UnicodeString exp2 = UNICODE_STRING_SIMPLE("Mon 1 Rajab 1433 AH, 01:47:04");
LocalUDateFormatPointer df(udat_open(UDAT_NONE, UDAT_NONE, "en@calendar=islamic", uzone.getTerminatedBuffer(),
- uzone.length(), NULL, 0, &status));
+ uzone.length(), nullptr, 0, &status));
if (df.isNull() || U_FAILURE(status)) return;
- UChar upattern[64];
+ char16_t upattern[64];
u_uastrcpy(upattern, "EEE d MMMM y G, HH:mm:ss");
udat_applyPattern(df.getAlias(), false, upattern, u_strlen(upattern));
- UChar ubuffer[1024];
+ char16_t ubuffer[1024];
UDate ud0 = 1337557623000.0;
status = U_ZERO_ERROR;
- udat_format(df.getAlias(), ud0, ubuffer, 1024, NULL, &status);
+ udat_format(df.getAlias(), ud0, ubuffer, 1024, nullptr, &status);
if (U_FAILURE(status)) {
errln("Error formatting date 1\n");
return;
@@ -2277,7 +2113,7 @@ void CalendarTest::Test3785()
ud0 += 1000.0; // add one second
status = U_ZERO_ERROR;
- udat_format(df.getAlias(), ud0, ubuffer, 1024, NULL, &status);
+ udat_format(df.getAlias(), ud0, ubuffer, 1024, nullptr, &status);
if (U_FAILURE(status)) {
errln("Error formatting date 2\n");
return;
@@ -2369,7 +2205,7 @@ void CalendarTest::TestISO8601() {
"en_US@calendar=Iso8601",
"th_TH@calendar=iso8601",
"ar_EG@calendar=iso8601",
- NULL
+ nullptr
};
int32_t TEST_DATA[][3] = {
@@ -2383,15 +2219,15 @@ void CalendarTest::TestISO8601() {
{0, 0, 0},
};
- for (int i = 0; TEST_LOCALES[i] != NULL; i++) {
+ for (int i = 0; TEST_LOCALES[i] != nullptr; i++) {
UErrorCode status = U_ZERO_ERROR;
Calendar *cal = Calendar::createInstance(TEST_LOCALES[i], status);
if (U_FAILURE(status)) {
errln("Error: Failed to create a calendar for locale: %s", TEST_LOCALES[i]);
continue;
}
- if (uprv_strcmp(cal->getType(), "gregorian") != 0) {
- errln("Error: Gregorian calendar is not used for locale: %s", TEST_LOCALES[i]);
+ if (uprv_strcmp(cal->getType(), "iso8601") != 0) {
+ errln("Error: iso8601 calendar is not used for locale: %s", TEST_LOCALES[i]);
continue;
}
for (int j = 0; TEST_DATA[j][0] != 0; j++) {
@@ -2413,7 +2249,7 @@ void CalendarTest::TestISO8601() {
}
void
-CalendarTest::TestAmbiguousWallTimeAPIs(void) {
+CalendarTest::TestAmbiguousWallTimeAPIs() {
UErrorCode status = U_ZERO_ERROR;
Calendar* cal = Calendar::createInstance(status);
if (U_FAILURE(status)) {
@@ -2513,7 +2349,7 @@ CalFields::setTo(Calendar& cal) const {
char*
CalFields::toString(char* buf, int32_t len) const {
char local[32];
- sprintf(local, "%04d-%02d-%02d %02d:%02d:%02d.%03d", year, month, day, hour, min, sec, ms);
+ snprintf(local, sizeof(local), "%04d-%02d-%02d %02d:%02d:%02d.%03d", year, month, day, hour, min, sec, ms);
uprv_strncpy(buf, local, len - 1);
buf[len - 1] = 0;
return buf;
@@ -2571,10 +2407,10 @@ static const RepeatedWallTimeTestData RPDATA[] =
{"Australia/Lord_Howe", CalFields(2011,4,3,2,0,0), CalFields(2011,4,2,15,30,0), CalFields(2011,4,2,15,30,0)},
{"Australia/Lord_Howe", CalFields(2011,4,3,2,0,1), CalFields(2011,4,2,15,30,1), CalFields(2011,4,2,15,30,1)},
- {NULL, CalFields(0,0,0,0,0,0), CalFields(0,0,0,0,0,0), CalFields(0,0,0,0,0,0)}
+ {nullptr, CalFields(0,0,0,0,0,0), CalFields(0,0,0,0,0,0), CalFields(0,0,0,0,0,0)}
};
-void CalendarTest::TestRepeatedWallTime(void) {
+void CalendarTest::TestRepeatedWallTime() {
UErrorCode status = U_ZERO_ERROR;
GregorianCalendar calGMT((const TimeZone&)*TimeZone::getGMT(), status);
GregorianCalendar calDefault(status);
@@ -2589,7 +2425,7 @@ void CalendarTest::TestRepeatedWallTime(void) {
calLast.setRepeatedWallTimeOption(UCAL_WALLTIME_LAST);
calFirst.setRepeatedWallTimeOption(UCAL_WALLTIME_FIRST);
- for (int32_t i = 0; RPDATA[i].tzid != NULL; i++) {
+ for (int32_t i = 0; RPDATA[i].tzid != nullptr; i++) {
char buf[32];
TimeZone *tz = TimeZone::createTimeZone(RPDATA[i].tzid);
@@ -2669,11 +2505,11 @@ static SkippedWallTimeTestData SKDATA[] =
{"Pacific/Apia", CalFields(2011,12,30,23,59,59), false, CalFields(2011,12,31,9,59,59), CalFields(2011,12,30,9,59,59), CalFields(2011,12,30,10,0,0)},
{"Pacific/Apia", CalFields(2011,12,31,0,0,0), true, CalFields(2011,12,30,10,0,0), CalFields(2011,12,30,10,0,0), CalFields(2011,12,30,10,0,0)},
- {NULL, CalFields(0,0,0,0,0,0), true, CalFields(0,0,0,0,0,0), CalFields(0,0,0,0,0,0), CalFields(0,0,0,0,0,0)}
+ {nullptr, CalFields(0,0,0,0,0,0), true, CalFields(0,0,0,0,0,0), CalFields(0,0,0,0,0,0), CalFields(0,0,0,0,0,0)}
};
-void CalendarTest::TestSkippedWallTime(void) {
+void CalendarTest::TestSkippedWallTime() {
UErrorCode status = U_ZERO_ERROR;
GregorianCalendar calGMT((const TimeZone&)*TimeZone::getGMT(), status);
GregorianCalendar calDefault(status);
@@ -2690,7 +2526,7 @@ void CalendarTest::TestSkippedWallTime(void) {
calFirst.setSkippedWallTimeOption(UCAL_WALLTIME_FIRST);
calNextAvail.setSkippedWallTimeOption(UCAL_WALLTIME_NEXT_VALID);
- for (int32_t i = 0; SKDATA[i].tzid != NULL; i++) {
+ for (int32_t i = 0; SKDATA[i].tzid != nullptr; i++) {
UDate d;
char buf[32];
TimeZone *tz = TimeZone::createTimeZone(SKDATA[i].tzid);
@@ -2799,7 +2635,7 @@ void CalendarTest::TestSkippedWallTime(void) {
}
}
-void CalendarTest::TestCloneLocale(void) {
+void CalendarTest::TestCloneLocale() {
UErrorCode status = U_ZERO_ERROR;
LocalPointer<Calendar> cal(Calendar::createInstance(TimeZone::getGMT()->clone(),
Locale::createFromName("en"), status));
@@ -2814,7 +2650,7 @@ void CalendarTest::TestCloneLocale(void) {
TEST_CHECK_STATUS;
}
-void CalendarTest::TestTimeZoneInLocale(void) {
+void CalendarTest::TestTimeZoneInLocale() {
const char *tests[][3] = {
{ "en-u-tz-usden", "America/Denver", "gregorian" },
{ "es-u-tz-usden", "America/Denver", "gregorian" },
@@ -2833,8 +2669,8 @@ void CalendarTest::TestTimeZoneInLocale(void) {
{ "my-u-ca-islamic-umalqura-tz-kzala", "Asia/Almaty", "islamic-umalqura" },
{ "lo-u-ca-islamic-tbla-tz-bmbda", "Atlantic/Bermuda", "islamic-tbla" },
{ "km-u-ca-islamic-civil-tz-aqplm", "Antarctica/Palmer", "islamic-civil" },
- { "kk-u-ca-islamic-rgsa-tz-usanc", "America/Anchorage", "islamic" },
- { "ar-u-ca-iso8601-tz-bjptn", "Africa/Porto-Novo", "gregorian" },
+ { "kk-u-ca-islamic-rgsa-tz-usanc", "America/Anchorage", "islamic-rgsa" },
+ { "ar-u-ca-iso8601-tz-bjptn", "Africa/Porto-Novo", "iso8601" },
{ "he-u-ca-japanese-tz-tzdar", "Africa/Dar_es_Salaam", "japanese" },
{ "bs-u-ca-persian-tz-etadd", "Africa/Addis_Ababa", "persian" },
{ "it-u-ca-roc-tz-aruaq", "America/Argentina/San_Juan", "roc" },
@@ -2859,6 +2695,286 @@ void CalendarTest::TestTimeZoneInLocale(void) {
}
}
+void CalendarTest::AsssertCalendarFieldValue(
+ Calendar* cal, double time, const char* type,
+ int32_t era, int32_t year, int32_t month, int32_t week_of_year,
+ int32_t week_of_month, int32_t date, int32_t day_of_year, int32_t day_of_week,
+ int32_t day_of_week_in_month, int32_t am_pm, int32_t hour, int32_t hour_of_day,
+ int32_t minute, int32_t second, int32_t millisecond, int32_t zone_offset,
+ int32_t dst_offset, int32_t year_woy, int32_t dow_local, int32_t extended_year,
+ int32_t julian_day, int32_t milliseconds_in_day, int32_t is_leap_month) {
+
+ UErrorCode status = U_ZERO_ERROR;
+ cal->setTime(time, status);
+ assertEquals("getType", type, cal->getType());
+
+ assertEquals("UCAL_ERA", era, cal->get(UCAL_ERA, status));
+ assertEquals("UCAL_YEAR", year, cal->get(UCAL_YEAR, status));
+ assertEquals("UCAL_MONTH", month, cal->get(UCAL_MONTH, status));
+ assertEquals("UCAL_WEEK_OF_YEAR", week_of_year, cal->get(UCAL_WEEK_OF_YEAR, status));
+ assertEquals("UCAL_WEEK_OF_MONTH", week_of_month, cal->get(UCAL_WEEK_OF_MONTH, status));
+ assertEquals("UCAL_DATE", date, cal->get(UCAL_DATE, status));
+ assertEquals("UCAL_DAY_OF_YEAR", day_of_year, cal->get(UCAL_DAY_OF_YEAR, status));
+ assertEquals("UCAL_DAY_OF_WEEK", day_of_week, cal->get(UCAL_DAY_OF_WEEK, status));
+ assertEquals("UCAL_DAY_OF_WEEK_IN_MONTH", day_of_week_in_month, cal->get(UCAL_DAY_OF_WEEK_IN_MONTH, status));
+ assertEquals("UCAL_AM_PM", am_pm, cal->get(UCAL_AM_PM, status));
+ assertEquals("UCAL_HOUR", hour, cal->get(UCAL_HOUR, status));
+ assertEquals("UCAL_HOUR_OF_DAY", hour_of_day, cal->get(UCAL_HOUR_OF_DAY, status));
+ assertEquals("UCAL_MINUTE", minute, cal->get(UCAL_MINUTE, status));
+ assertEquals("UCAL_SECOND", second, cal->get(UCAL_SECOND, status));
+ assertEquals("UCAL_MILLISECOND", millisecond, cal->get(UCAL_MILLISECOND, status));
+ assertEquals("UCAL_ZONE_OFFSET", zone_offset, cal->get(UCAL_ZONE_OFFSET, status));
+ assertEquals("UCAL_DST_OFFSET", dst_offset, cal->get(UCAL_DST_OFFSET, status));
+ assertEquals("UCAL_YEAR_WOY", year_woy, cal->get(UCAL_YEAR_WOY, status));
+ assertEquals("UCAL_DOW_LOCAL", dow_local, cal->get(UCAL_DOW_LOCAL, status));
+ assertEquals("UCAL_EXTENDED_YEAR", extended_year, cal->get(UCAL_EXTENDED_YEAR, status));
+ assertEquals("UCAL_JULIAN_DAY", julian_day, cal->get(UCAL_JULIAN_DAY, status));
+ assertEquals("UCAL_MILLISECONDS_IN_DAY", milliseconds_in_day, cal->get(UCAL_MILLISECONDS_IN_DAY, status));
+ assertEquals("UCAL_IS_LEAP_MONTH", is_leap_month, cal->get(UCAL_IS_LEAP_MONTH, status));
+}
+
+static constexpr double test_time = 1667277891323; // Nov 1, 2022 4:44:51 GMT
+
+void CalendarTest::TestBasicConversionGregorian() {
+ UErrorCode status = U_ZERO_ERROR;
+ LocalPointer<Calendar> cal(icu::Calendar::createInstance(
+ *TimeZone::getGMT(), Locale("en@calendar=gregorian"), status));
+ if (U_FAILURE(status)) {
+ errln("Fail: Cannot get Gregorian calendar");
+ return;
+ }
+ AsssertCalendarFieldValue(
+ cal.getAlias(), test_time, "gregorian",
+ 1, 2022, 10, 45, 1, 1, 305, 3, 1, 0, 4, 4, 44, 51,
+ 323, 0, 0, 2022, 3, 2022, 2459885, 17091323, 0);
+}
+void CalendarTest::TestBasicConversionISO8601() {
+ UErrorCode status = U_ZERO_ERROR;
+ LocalPointer<Calendar> cal(icu::Calendar::createInstance(
+ *TimeZone::getGMT(), Locale("en@calendar=iso8601"), status));
+ if (U_FAILURE(status)) {
+ errln("Fail: Cannot get ISO8601 calendar");
+ return;
+ }
+ AsssertCalendarFieldValue(
+ cal.getAlias(), test_time, "iso8601",
+ 1, 2022, 10, 44, 1, 1, 305, 3, 1, 0, 4, 4, 44, 51,
+ 323, 0, 0, 2022, 2, 2022, 2459885, 17091323, 0);
+}
+void CalendarTest::TestBasicConversionJapanese() {
+ UErrorCode status = U_ZERO_ERROR;
+ LocalPointer<Calendar> cal(icu::Calendar::createInstance(
+ *TimeZone::getGMT(), Locale("en@calendar=japanese"), status));
+ if (U_FAILURE(status)) {
+ errln("Fail: Cannot get Japanese calendar");
+ return;
+ }
+ AsssertCalendarFieldValue(
+ cal.getAlias(), test_time, "japanese",
+ 236, 4, 10, 45, 1, 1, 305, 3, 1, 0, 4, 4, 44, 51,
+ 323, 0, 0, 2022, 3, 2022, 2459885, 17091323, 0);
+}
+void CalendarTest::TestBasicConversionBuddhist() {
+ UErrorCode status = U_ZERO_ERROR;
+ LocalPointer<Calendar> cal(icu::Calendar::createInstance(
+ *TimeZone::getGMT(), Locale("en@calendar=buddhist"), status));
+ if (U_FAILURE(status)) {
+ errln("Fail: Cannot get Buddhist calendar");
+ return;
+ }
+ AsssertCalendarFieldValue(
+ cal.getAlias(), test_time, "buddhist",
+ 0, 2565, 10, 45, 1, 1, 305, 3, 1, 0, 4, 4, 44, 51,
+ 323, 0, 0, 2022, 3, 2022, 2459885, 17091323, 0);
+}
+void CalendarTest::TestBasicConversionTaiwan() {
+ UErrorCode status = U_ZERO_ERROR;
+ LocalPointer<Calendar> cal(icu::Calendar::createInstance(
+ *TimeZone::getGMT(), Locale("en@calendar=roc"), status));
+ if (U_FAILURE(status)) {
+ errln("Fail: Cannot get Taiwan calendar");
+ return;
+ }
+ AsssertCalendarFieldValue(
+ cal.getAlias(), test_time, "roc",
+ 1, 111, 10, 45, 1, 1, 305, 3, 1, 0, 4, 4, 44, 51,
+ 323, 0, 0, 2022, 3, 2022, 2459885, 17091323, 0);
+
+}
+void CalendarTest::TestBasicConversionPersian() {
+ UErrorCode status = U_ZERO_ERROR;
+ LocalPointer<Calendar> cal(icu::Calendar::createInstance(
+ *TimeZone::getGMT(), Locale("en@calendar=persian"), status));
+ if (U_FAILURE(status)) {
+ errln("Fail: Cannot get Persian calendar");
+ return;
+ }
+ AsssertCalendarFieldValue(
+ cal.getAlias(), test_time, "persian",
+ 0, 1401, 7, 33, 2, 10, 226, 3, 2, 0, 4, 4, 44, 51,
+ 323, 0, 0, 1401, 3, 1401, 2459885, 17091323, 0);
+}
+void CalendarTest::TestBasicConversionIslamic() {
+ UErrorCode status = U_ZERO_ERROR;
+ LocalPointer<Calendar> cal(icu::Calendar::createInstance(
+ *TimeZone::getGMT(), Locale("en@calendar=islamic"), status));
+ if (U_FAILURE(status)) {
+ errln("Fail: Cannot get Islamic calendar");
+ return;
+ }
+ AsssertCalendarFieldValue(
+ cal.getAlias(), test_time, "islamic",
+ 0, 1444, 3, 15, 2, 7, 96, 3, 1, 0, 4, 4, 44, 51,
+ 323, 0, 0, 1444, 3, 1444, 2459885, 17091323, 0);
+}
+void CalendarTest::TestBasicConversionIslamicTBLA() {
+ UErrorCode status = U_ZERO_ERROR;
+ LocalPointer<Calendar> cal(icu::Calendar::createInstance(
+ *TimeZone::getGMT(), Locale("en@calendar=islamic-tbla"), status));
+ if (U_FAILURE(status)) {
+ errln("Fail: Cannot get IslamicTBLA calendar");
+ return;
+ }
+ AsssertCalendarFieldValue(
+ cal.getAlias(), test_time, "islamic-tbla",
+ 0, 1444, 3, 15, 2, 7, 96, 3, 1, 0, 4, 4, 44, 51,
+ 323, 0, 0, 1444, 3, 1444, 2459885, 17091323, 0);
+
+}
+void CalendarTest::TestBasicConversionIslamicCivil() {
+ UErrorCode status = U_ZERO_ERROR;
+ LocalPointer<Calendar> cal(icu::Calendar::createInstance(
+ *TimeZone::getGMT(), Locale("en@calendar=islamic-civil"), status));
+ if (U_FAILURE(status)) {
+ errln("Fail: Cannot get IslamicCivil calendar");
+ return;
+ }
+ AsssertCalendarFieldValue(
+ cal.getAlias(), test_time, "islamic-civil",
+ 0, 1444, 3, 15, 2, 6, 95, 3, 1, 0, 4, 4, 44, 51,
+ 323, 0, 0, 1444, 3, 1444, 2459885, 17091323, 0);
+
+}
+void CalendarTest::TestBasicConversionIslamicRGSA() {
+ UErrorCode status = U_ZERO_ERROR;
+ LocalPointer<Calendar> cal(icu::Calendar::createInstance(
+ *TimeZone::getGMT(), Locale("en@calendar=islamic-rgsa"), status));
+ if (U_FAILURE(status)) {
+ errln("Fail: Cannot get IslamicRGSA calendar");
+ return;
+ }
+ AsssertCalendarFieldValue(
+ cal.getAlias(), test_time, "islamic-rgsa",
+ 0, 1444, 3, 15, 2, 7, 96, 3, 1, 0, 4, 4, 44, 51,
+ 323, 0, 0, 1444, 3, 1444, 2459885, 17091323, 0);
+
+}
+void CalendarTest::TestBasicConversionIslamicUmalqura() {
+ UErrorCode status = U_ZERO_ERROR;
+ LocalPointer<Calendar> cal(icu::Calendar::createInstance(
+ *TimeZone::getGMT(), Locale("en@calendar=islamic-umalqura"), status));
+ if (U_FAILURE(status)) {
+ errln("Fail: Cannot get IslamicUmalqura calendar");
+ return;
+ }
+ AsssertCalendarFieldValue(
+ cal.getAlias(), test_time, "islamic-umalqura",
+ 0, 1444, 3, 15, 2, 7, 95, 3, 1, 0, 4, 4, 44, 51,
+ 323, 0, 0, 1444, 3, 1444, 2459885, 17091323, 0);
+}
+void CalendarTest::TestBasicConversionHebrew() {
+ UErrorCode status = U_ZERO_ERROR;
+ LocalPointer<Calendar> cal(icu::Calendar::createInstance(
+ *TimeZone::getGMT(), Locale("en@calendar=hebrew"), status));
+ if (U_FAILURE(status)) {
+ errln("Fail: Cannot get Hebrew calendar");
+ return;
+ }
+ AsssertCalendarFieldValue(
+ cal.getAlias(), test_time, "hebrew",
+ 0, 5783, 1, 6, 2, 7, 37, 3, 1, 0, 4, 4, 44, 51,
+ 323, 0, 0, 5783, 3, 5783, 2459885, 17091323, 0);
+}
+void CalendarTest::TestBasicConversionChinese() {
+ UErrorCode status = U_ZERO_ERROR;
+ LocalPointer<Calendar> cal(icu::Calendar::createInstance(
+ *TimeZone::getGMT(), Locale("en@calendar=chinese"), status));
+ if (U_FAILURE(status)) {
+ errln("Fail: Cannot get Chinese calendar");
+ return;
+ }
+ AsssertCalendarFieldValue(
+ cal.getAlias(), test_time, "chinese",
+ 78, 39, 9, 40, 2, 8, 274, 3, 2, 0, 4, 4, 44, 51,
+ 323, 0, 0, 4659, 3, 4659, 2459885, 17091323, 0);
+}
+void CalendarTest::TestBasicConversionDangi() {
+ UErrorCode status = U_ZERO_ERROR;
+ LocalPointer<Calendar> cal(icu::Calendar::createInstance(
+ *TimeZone::getGMT(), Locale("en@calendar=dangi"), status));
+ if (U_FAILURE(status)) {
+ errln("Fail: Cannot get Dangi calendar");
+ return;
+ }
+ AsssertCalendarFieldValue(
+ cal.getAlias(), test_time, "dangi",
+ 78, 39, 9, 40, 2, 8, 274, 3, 2, 0, 4, 4, 44, 51,
+ 323, 0, 0, 4355, 3, 4355, 2459885, 17091323, 0);
+}
+void CalendarTest::TestBasicConversionIndian() {
+ UErrorCode status = U_ZERO_ERROR;
+ LocalPointer<Calendar> cal(icu::Calendar::createInstance(
+ *TimeZone::getGMT(), Locale("en@calendar=indian"), status));
+ if (U_FAILURE(status)) {
+ errln("Fail: Cannot get Indian calendar");
+ return;
+ }
+ AsssertCalendarFieldValue(
+ cal.getAlias(), test_time, "indian",
+ 0, 1944, 7, 33, 2, 10, 225, 3, 2, 0, 4, 4, 44, 51,
+ 323, 0, 0, 1944, 3, 1944, 2459885, 17091323, 0);
+}
+void CalendarTest::TestBasicConversionCoptic() {
+ UErrorCode status = U_ZERO_ERROR;
+ LocalPointer<Calendar> cal(icu::Calendar::createInstance(
+ *TimeZone::getGMT(), Locale("en@calendar=coptic"), status));
+ if (U_FAILURE(status)) {
+ errln("Fail: Cannot get Coptic calendar");
+ return;
+ }
+ AsssertCalendarFieldValue(
+ cal.getAlias(), test_time, "coptic",
+ 1, 1739, 1, 8, 4, 22, 52, 3, 4, 0, 4, 4, 44, 51,
+ 323, 0, 0, 1739, 3, 1739, 2459885, 17091323, 0);
+}
+void CalendarTest::TestBasicConversionEthiopic() {
+ UErrorCode status = U_ZERO_ERROR;
+ LocalPointer<Calendar> cal(icu::Calendar::createInstance(
+ *TimeZone::getGMT(), Locale("en@calendar=ethiopic"), status));
+ if (U_FAILURE(status)) {
+ errln("Fail: Cannot get Ethiopic calendar");
+ return;
+ }
+ AsssertCalendarFieldValue(
+ cal.getAlias(), test_time, "ethiopic",
+ 1, 2015, 1, 8, 4, 22, 52, 3, 4, 0, 4, 4, 44, 51,
+ 323, 0, 0, 2015, 3, 2015, 2459885, 17091323, 0);
+}
+void CalendarTest::TestBasicConversionEthiopicAmeteAlem() {
+ UErrorCode status = U_ZERO_ERROR;
+ LocalPointer<Calendar> cal(icu::Calendar::createInstance(
+ *TimeZone::getGMT(), Locale("en@calendar=ethiopic-amete-alem"), status));
+ if (U_FAILURE(status)) {
+ errln("Fail: Cannot get EthiopicAmeteAlem calendar");
+ return;
+ }
+ AsssertCalendarFieldValue(
+ cal.getAlias(), test_time, "ethiopic-amete-alem",
+ 0, 7515, 1, 8, 4, 22, 52, 3, 4, 0, 4, 4, 44, 51,
+ 323, 0, 0, 2015, 3, 2015, 2459885, 17091323, 0);
+}
+
+
void CalendarTest::setAndTestCalendar(Calendar* cal, int32_t initMonth, int32_t initDay, int32_t initYear, UErrorCode& status) {
cal->clear();
cal->setLenient(false);
@@ -3309,7 +3425,7 @@ static const GregoUmmAlQuraMap guMappings[] = {
{ 0, 0, 0, 0, 0, 0 }, // terminator
};
-static const UChar zoneSA[] = {0x41,0x73,0x69,0x61,0x2F,0x52,0x69,0x79,0x61,0x64,0x68,0}; // "Asia/Riyadh"
+static const char16_t zoneSA[] = {0x41,0x73,0x69,0x61,0x2F,0x52,0x69,0x79,0x61,0x64,0x68,0}; // "Asia/Riyadh"
void CalendarTest::TestIslamicUmAlQura() {
@@ -3317,11 +3433,11 @@ void CalendarTest::TestIslamicUmAlQura() {
Locale umalquraLoc("ar_SA@calendar=islamic-umalqura");
Locale gregoLoc("ar_SA@calendar=gregorian");
TimeZone* tzSA = TimeZone::createTimeZone(UnicodeString(true, zoneSA, -1));
- Calendar* tstCal = Calendar::createInstance(*((const TimeZone *)tzSA), umalquraLoc, status);
- Calendar* gregCal = Calendar::createInstance(*((const TimeZone *)tzSA), gregoLoc, status);
+ Calendar* tstCal = Calendar::createInstance(*tzSA, umalquraLoc, status);
+ Calendar* gregCal = Calendar::createInstance(*tzSA, gregoLoc, status);
- IslamicCalendar* iCal = (IslamicCalendar*)tstCal;
- if(strcmp(iCal->getType(), "islamic-umalqura") != 0) {
+ IslamicCalendar* iCal = dynamic_cast<IslamicCalendar*>(tstCal);
+ if(uprv_strcmp(iCal->getType(), "islamic-umalqura") != 0) {
errln("wrong type of calendar created - %s", iCal->getType());
}
@@ -3672,7 +3788,7 @@ static const TestAddAcrossZoneTransitionData AAZTDATA[] =
{"Australia/Lord_Howe", CalFields(2013,10,5,2,15,0,0), 1, UCAL_WALLTIME_NEXT_VALID,
CalFields(2013,10,6,2,30,0,0)},
- {NULL, CalFields(0,0,0,0,0,0,0), 0, UCAL_WALLTIME_LAST, CalFields(0,0,0,0,0,0,0)}
+ {nullptr, CalFields(0,0,0,0,0,0,0), 0, UCAL_WALLTIME_LAST, CalFields(0,0,0,0,0,0,0)}
};
void CalendarTest::TestAddAcrossZoneTransition() {
@@ -3776,6 +3892,1666 @@ void CalendarTest::TestChineseCalendarMapping() {
}
}
+void CalendarTest::TestClearMonth() {
+ UErrorCode status = U_ZERO_ERROR;
+ LocalPointer<Calendar> cal(Calendar::createInstance(Locale::getRoot(), status));
+ if (failure(status, "construct Calendar")) return;
+ cal->set(2023, UCAL_JUNE, 29);
+ assertEquals("Calendar::get(UCAL_MONTH)", UCAL_JUNE, cal->get(UCAL_MONTH, status));
+ if (failure(status, "Calendar::get(UCAL_MONTH)")) return;
+ cal->clear(UCAL_MONTH);
+ assertEquals("Calendar::isSet(UCAL_MONTH) after clear(UCAL_MONTH)", false, !!cal->isSet(UCAL_MONTH));
+ assertEquals("Calendar::get(UCAL_MONTH after clear(UCAL_MONTH))", UCAL_JANUARY, !!cal->get(UCAL_MONTH, status));
+ if (failure(status, "Calendar::get(UCAL_MONTH)")) return;
+
+ cal->set(UCAL_ORDINAL_MONTH, 7);
+ assertEquals("Calendar::get(UCAL_MONTH) after set(UCAL_ORDINAL_MONTH, 7)", UCAL_AUGUST, cal->get(UCAL_MONTH, status));
+ if (failure(status, "Calendar::get(UCAL_MONTH) after set(UCAL_ORDINAL_MONTH, 7)")) return;
+ assertEquals("Calendar::get(UCAL_ORDINAL_MONTH) after set(UCAL_ORDINAL_MONTH, 7)", 7, cal->get(UCAL_ORDINAL_MONTH, status));
+ if (failure(status, "Calendar::get(UCAL_ORDINAL_MONTH) after set(UCAL_ORDINAL_MONTH, 7)")) return;
+
+ cal->clear(UCAL_ORDINAL_MONTH);
+ assertEquals("Calendar::isSet(UCAL_ORDINAL_MONTH) after clear(UCAL_ORDINAL_MONTH)", false, !!cal->isSet(UCAL_ORDINAL_MONTH));
+ assertEquals("Calendar::get(UCAL_MONTH) after clear(UCAL_ORDINAL_MONTH)", UCAL_JANUARY, cal->get(UCAL_MONTH, status));
+ if (failure(status, "Calendar::get(UCAL_MONTH) after clear(UCAL_ORDINAL_MONTH)")) return;
+ assertEquals("Calendar::get(UCAL_ORDINAL_MONTH) after clear(UCAL_ORDINAL_MONTH)", 0, cal->get(UCAL_ORDINAL_MONTH, status));
+ if (failure(status, "Calendar::get(UCAL_ORDINAL_MONTH) after clear(UCAL_ORDINAL_MONTH)")) return;
+
+}
+
+void CalendarTest::TestGregorianCalendarInTemporalLeapYear() {
+ // test from year 1800 to 2500
+ UErrorCode status = U_ZERO_ERROR;
+ GregorianCalendar gc(status);
+ if (failure(status, "construct GregorianCalendar")) return;
+ for (int32_t year = 1900; year < 2400; ++year) {
+ gc.set(year, UCAL_MARCH, 7);
+ assertEquals("Calendar::inTemporalLeapYear",
+ gc.isLeapYear(year) == true, gc.inTemporalLeapYear(status) == true);
+ if (failure(status, "inTemporalLeapYear")) return;
+ }
+}
+
+void CalendarTest::RunChineseCalendarInTemporalLeapYearTest(Calendar* cal) {
+ UErrorCode status = U_ZERO_ERROR;
+ GregorianCalendar gc(status);
+ if (failure(status, "construct GregorianCalendar")) return;
+ LocalPointer<Calendar> leapTest(cal->clone());
+ // Start our test from 1900, Jan 1.
+ // Check every 29 days in exhausted mode.
+ int32_t incrementDays = 29;
+ int32_t startYear = 1900;
+ int32_t stopYear = 2400;
+
+ if (quick) {
+ incrementDays = 317;
+ stopYear = 2100;
+ }
+ int32_t yearForHasLeapMonth = -1;
+ bool hasLeapMonth = false;
+ for (gc.set(startYear, UCAL_JANUARY, 1);
+ gc.get(UCAL_YEAR, status) <= stopYear;
+ gc.add(UCAL_DATE, incrementDays, status)) {
+ cal->setTime(gc.getTime(status), status);
+ if (failure(status, "add/get/set/getTime/setTime incorrect")) return;
+
+ int32_t cal_year = cal->get(UCAL_EXTENDED_YEAR, status);
+ if (yearForHasLeapMonth != cal_year) {
+ leapTest->set(UCAL_EXTENDED_YEAR, cal_year);
+ leapTest->set(UCAL_MONTH, 0);
+ leapTest->set(UCAL_DATE, 1);
+ // seek any leap month
+ // check any leap month in the next 12 months.
+ for (hasLeapMonth = false;
+ (!hasLeapMonth) && cal_year == leapTest->get(UCAL_EXTENDED_YEAR, status);
+ leapTest->add(UCAL_MONTH, 1, status)) {
+ hasLeapMonth = leapTest->get(UCAL_IS_LEAP_MONTH, status) != 0;
+ }
+ yearForHasLeapMonth = cal_year;
+ }
+ if (failure(status, "error while figure out expectation")) return;
+
+ bool actualInLeap = cal->inTemporalLeapYear(status);
+ if (failure(status, "inTemporalLeapYear")) return;
+ if (hasLeapMonth != actualInLeap) {
+ logln("Gregorian y=%d m=%d d=%d => cal y=%d m=%s%d d=%d expected:%s actual:%s\n",
+ gc.get(UCAL_YEAR, status),
+ gc.get(UCAL_MONTH, status),
+ gc.get(UCAL_DATE, status),
+ cal->get(UCAL_EXTENDED_YEAR, status),
+ cal->get(UCAL_IS_LEAP_MONTH, status) == 1 ? "L" : "",
+ cal->get(UCAL_MONTH, status),
+ cal->get(UCAL_DAY_OF_MONTH, status),
+ hasLeapMonth ? "true" : "false",
+ actualInLeap ? "true" : "false");
+ }
+ assertEquals("inTemporalLeapYear", hasLeapMonth, actualInLeap);
+ }
+}
+
+void CalendarTest::TestChineseCalendarInTemporalLeapYear() {
+ UErrorCode status = U_ZERO_ERROR;
+ Locale l(Locale::getRoot());
+ l.setKeywordValue("calendar", "chinese", status);
+ LocalPointer<Calendar> cal(Calendar::createInstance(l, status));
+ if (failure(status, "construct ChineseCalendar")) return;
+ RunChineseCalendarInTemporalLeapYearTest(cal.getAlias());
+}
+
+void CalendarTest::TestDangiCalendarInTemporalLeapYear() {
+ UErrorCode status = U_ZERO_ERROR;
+ Locale l(Locale::getRoot());
+ l.setKeywordValue("calendar", "dangi", status);
+ LocalPointer<Calendar> cal(Calendar::createInstance(l, status));
+ if (failure(status, "construct DangiCalendar")) return;
+ RunChineseCalendarInTemporalLeapYearTest(cal.getAlias());
+}
+
+void CalendarTest::TestHebrewCalendarInTemporalLeapYear() {
+ UErrorCode status = U_ZERO_ERROR;
+ GregorianCalendar gc(status);
+ Locale l(Locale::getRoot());
+ l.setKeywordValue("calendar", "hebrew", status);
+ LocalPointer<Calendar> cal(Calendar::createInstance(l, status));
+ LocalPointer<Calendar> leapTest(Calendar::createInstance(l, status));
+ if (failure(status, "construct HebrewCalendar")) return;
+ // Start our test from 1900, Jan 1.
+ // Check every 29 days in exhausted mode.
+ int32_t incrementDays = 29;
+ int32_t startYear = 1900;
+ int32_t stopYear = 2400;
+
+ if (quick) {
+ incrementDays = 317;
+ stopYear = 2100;
+ }
+ int32_t yearForHasLeapMonth = -1;
+ bool hasLeapMonth = false;
+ for (gc.set(startYear, UCAL_JANUARY, 1);
+ gc.get(UCAL_YEAR, status) <= stopYear;
+ gc.add(UCAL_DATE, incrementDays, status)) {
+ cal->setTime(gc.getTime(status), status);
+ if (failure(status, "add/get/set/getTime/setTime incorrect")) return;
+
+ int32_t cal_year = cal->get(UCAL_EXTENDED_YEAR, status);
+ if (yearForHasLeapMonth != cal_year) {
+ leapTest->set(UCAL_EXTENDED_YEAR, cal_year);
+ leapTest->set(UCAL_MONTH, 0);
+ leapTest->set(UCAL_DATE, 1);
+ // If 10 months after TISHRI is TAMUZ, then it is a leap year.
+ leapTest->add(UCAL_MONTH, 10, status);
+ hasLeapMonth = leapTest->get(UCAL_MONTH, status) == icu::HebrewCalendar::TAMUZ;
+ yearForHasLeapMonth = cal_year;
+ }
+ bool actualInLeap = cal->inTemporalLeapYear(status);
+ if (failure(status, "inTemporalLeapYear")) return;
+ if (hasLeapMonth != actualInLeap) {
+ logln("Gregorian y=%d m=%d d=7 => cal y=%d m=%d d=%d expected:%s actual:%s\n",
+ gc.get(UCAL_YEAR, status),
+ gc.get(UCAL_MONTH, status),
+ cal->get(UCAL_EXTENDED_YEAR, status),
+ cal->get(UCAL_MONTH, status),
+ cal->get(UCAL_DAY_OF_MONTH, status),
+ hasLeapMonth ? "true" : "false",
+ actualInLeap ? "true" : "false");
+ }
+ assertEquals("inTemporalLeapYear", hasLeapMonth, actualInLeap);
+ }
+}
+
+void CalendarTest::RunIslamicCalendarInTemporalLeapYearTest(Calendar* cal) {
+ UErrorCode status = U_ZERO_ERROR;
+ GregorianCalendar gc(status);
+ if (failure(status, "construct GregorianCalendar")) return;
+ // Start our test from 1900, Jan 1.
+ // Check every 29 days in exhausted mode.
+ int32_t incrementDays = 29;
+ int32_t startYear = 1900;
+ int32_t stopYear = 2400;
+
+ if (quick) {
+ incrementDays = 317;
+ stopYear = 2100;
+ }
+ int32_t yearForHasLeapMonth = -1;
+ bool hasLeapMonth = false;
+ for (gc.set(startYear, UCAL_JANUARY, 1);
+ gc.get(UCAL_YEAR, status) <= stopYear;
+ gc.add(UCAL_DATE, incrementDays, status)) {
+ cal->setTime(gc.getTime(status), status);
+ if (failure(status, "set/getTime/setTime incorrect")) return;
+ int32_t cal_year = cal->get(UCAL_EXTENDED_YEAR, status);
+ if (yearForHasLeapMonth != cal_year) {
+ // If that year has exactly 355 days, it is a leap year.
+ hasLeapMonth = cal->getActualMaximum(UCAL_DAY_OF_YEAR, status) == 355;
+ yearForHasLeapMonth = cal_year;
+ }
+
+ bool actualInLeap = cal->inTemporalLeapYear(status);
+ if (failure(status, "inTemporalLeapYear")) return;
+ if (hasLeapMonth != actualInLeap) {
+ logln("Gregorian y=%d m=%d d=%d => cal y=%d m=%s%d d=%d expected:%s actual:%s\n",
+ gc.get(UCAL_EXTENDED_YEAR, status),
+ gc.get(UCAL_MONTH, status),
+ gc.get(UCAL_DAY_OF_MONTH, status),
+ cal->get(UCAL_EXTENDED_YEAR, status),
+ cal->get(UCAL_IS_LEAP_MONTH, status) == 1 ? "L" : "",
+ cal->get(UCAL_MONTH, status),
+ cal->get(UCAL_DAY_OF_MONTH, status),
+ hasLeapMonth ? "true" : "false",
+ actualInLeap ? "true" : "false");
+ }
+ assertEquals("inTemporalLeapYear", hasLeapMonth, actualInLeap);
+ }
+}
+
+void CalendarTest::TestIslamicCalendarInTemporalLeapYear() {
+ UErrorCode status = U_ZERO_ERROR;
+ Locale l(Locale::getRoot());
+ l.setKeywordValue("calendar", "islamic", status);
+ LocalPointer<Calendar> cal(Calendar::createInstance(l, status));
+ if (failure(status, "construct IslamicCalendar")) return;
+ RunIslamicCalendarInTemporalLeapYearTest(cal.getAlias());
+}
+
+void CalendarTest::TestIslamicCivilCalendarInTemporalLeapYear() {
+ UErrorCode status = U_ZERO_ERROR;
+ Locale l(Locale::getRoot());
+ l.setKeywordValue("calendar", "islamic-civil", status);
+ LocalPointer<Calendar> cal(Calendar::createInstance(l, status));
+ if (failure(status, "construct IslamicCivilCalendar")) return;
+ RunIslamicCalendarInTemporalLeapYearTest(cal.getAlias());
+}
+
+void CalendarTest::TestIslamicUmalquraCalendarInTemporalLeapYear() {
+ UErrorCode status = U_ZERO_ERROR;
+ Locale l(Locale::getRoot());
+ l.setKeywordValue("calendar", "islamic-umalqura", status);
+ LocalPointer<Calendar> cal(Calendar::createInstance(l, status));
+ if (failure(status, "construct IslamicUmalquraCalendar")) return;
+ RunIslamicCalendarInTemporalLeapYearTest(cal.getAlias());
+}
+
+void CalendarTest::TestIslamicRGSACalendarInTemporalLeapYear() {
+ UErrorCode status = U_ZERO_ERROR;
+ Locale l(Locale::getRoot());
+ l.setKeywordValue("calendar", "islamic-rgsa", status);
+ LocalPointer<Calendar> cal(Calendar::createInstance(l, status));
+ if (failure(status, "construct IslamicRGSACalendar")) return;
+ RunIslamicCalendarInTemporalLeapYearTest(cal.getAlias());
+}
+
+void CalendarTest::TestIslamicTBLACalendarInTemporalLeapYear() {
+ UErrorCode status = U_ZERO_ERROR;
+ Locale l(Locale::getRoot());
+ l.setKeywordValue("calendar", "islamic-tbla", status);
+ LocalPointer<Calendar> cal(Calendar::createInstance(l, status));
+ if (failure(status, "construct IslamicTBLACalendar")) return;
+ RunIslamicCalendarInTemporalLeapYearTest(cal.getAlias());
+}
+
+void CalendarTest::Run366DaysIsLeapYearCalendarInTemporalLeapYearTest(Calendar* cal) {
+ UErrorCode status = U_ZERO_ERROR;
+ GregorianCalendar gc(status);
+ if (failure(status, "construct GregorianCalendar")) return;
+ // Start our test from 1900, Jan 1.
+ // Check every 29 days in exhausted mode.
+ int32_t incrementDays = 29;
+ int32_t startYear = 1900;
+ int32_t stopYear = 2400;
+
+ if (quick) {
+ incrementDays = 317;
+ stopYear = 2100;
+ }
+ int32_t yearForHasLeapMonth = -1;
+ bool hasLeapMonth = false;
+ for (gc.set(startYear, UCAL_JANUARY, 1);
+ gc.get(UCAL_YEAR, status) <= stopYear;
+ gc.add(UCAL_DATE, incrementDays, status)) {
+ cal->setTime(gc.getTime(status), status);
+ if (failure(status, "set/getTime/setTime incorrect")) return;
+ int32_t cal_year = cal->get(UCAL_EXTENDED_YEAR, status);
+ if (yearForHasLeapMonth != cal_year) {
+ // If that year has exactly 355 days, it is a leap year.
+ hasLeapMonth = cal->getActualMaximum(UCAL_DAY_OF_YEAR, status) == 366;
+ if (failure(status, "getActualMaximum incorrect")) return;
+ yearForHasLeapMonth = cal_year;
+ }
+ bool actualInLeap = cal->inTemporalLeapYear(status);
+ if (failure(status, "inTemporalLeapYear")) return;
+ if (hasLeapMonth != actualInLeap) {
+ logln("Gregorian y=%d m=%d d=%d => cal y=%d m=%s%d d=%d expected:%s actual:%s\n",
+ gc.get(UCAL_EXTENDED_YEAR, status),
+ gc.get(UCAL_MONTH, status),
+ gc.get(UCAL_DAY_OF_MONTH, status),
+ cal->get(UCAL_EXTENDED_YEAR, status),
+ cal->get(UCAL_IS_LEAP_MONTH, status) == 1 ? "L" : "",
+ cal->get(UCAL_MONTH, status),
+ cal->get(UCAL_DAY_OF_MONTH, status),
+ hasLeapMonth ? "true" : "false",
+ actualInLeap ? "true" : "false");
+ }
+ assertEquals("inTemporalLeapYear", hasLeapMonth, actualInLeap);
+ }
+}
+
+void CalendarTest::TestTaiwanCalendarInTemporalLeapYear() {
+ UErrorCode status = U_ZERO_ERROR;
+ Locale l(Locale::getRoot());
+ l.setKeywordValue("calendar", "roc", status);
+ LocalPointer<Calendar> cal(Calendar::createInstance(l, status));
+ if (failure(status, "construct TaiwanCalendar")) return;
+ Run366DaysIsLeapYearCalendarInTemporalLeapYearTest(cal.getAlias());
+}
+
+void CalendarTest::TestJapaneseCalendarInTemporalLeapYear() {
+ UErrorCode status = U_ZERO_ERROR;
+ Locale l(Locale::getRoot());
+ l.setKeywordValue("calendar", "japanese", status);
+ LocalPointer<Calendar> cal(Calendar::createInstance(l, status));
+ if (failure(status, "construct JapaneseCalendar")) return;
+ Run366DaysIsLeapYearCalendarInTemporalLeapYearTest(cal.getAlias());
+}
+
+void CalendarTest::TestBuddhistCalendarInTemporalLeapYear() {
+ UErrorCode status = U_ZERO_ERROR;
+ Locale l(Locale::getRoot());
+ l.setKeywordValue("calendar", "buddhist", status);
+ LocalPointer<Calendar> cal(Calendar::createInstance(l, status));
+ if (failure(status, "construct BuddhistCalendar")) return;
+ Run366DaysIsLeapYearCalendarInTemporalLeapYearTest(cal.getAlias());
+}
+
+void CalendarTest::TestPersianCalendarInTemporalLeapYear() {
+ UErrorCode status = U_ZERO_ERROR;
+ Locale l(Locale::getRoot());
+ l.setKeywordValue("calendar", "persian", status);
+ LocalPointer<Calendar> cal(Calendar::createInstance(l, status));
+ if (failure(status, "construct PersianCalendar")) return;
+ Run366DaysIsLeapYearCalendarInTemporalLeapYearTest(cal.getAlias());
+}
+
+void CalendarTest::TestIndianCalendarInTemporalLeapYear() {
+ UErrorCode status = U_ZERO_ERROR;
+ Locale l(Locale::getRoot());
+ l.setKeywordValue("calendar", "indian", status);
+ LocalPointer<Calendar> cal(Calendar::createInstance(l, status));
+ if (failure(status, "construct IndianCalendar")) return;
+ Run366DaysIsLeapYearCalendarInTemporalLeapYearTest(cal.getAlias());
+}
+
+void CalendarTest::TestCopticCalendarInTemporalLeapYear() {
+ UErrorCode status = U_ZERO_ERROR;
+ Locale l(Locale::getRoot());
+ l.setKeywordValue("calendar", "coptic", status);
+ LocalPointer<Calendar> cal(Calendar::createInstance(l, status));
+ if (failure(status, "construct CopticCalendar")) return;
+ Run366DaysIsLeapYearCalendarInTemporalLeapYearTest(cal.getAlias());
+}
+
+void CalendarTest::TestEthiopicCalendarInTemporalLeapYear() {
+ UErrorCode status = U_ZERO_ERROR;
+ Locale l(Locale::getRoot());
+ l.setKeywordValue("calendar", "ethiopic", status);
+ LocalPointer<Calendar> cal(Calendar::createInstance(l, status));
+ if (failure(status, "construct EthiopicCalendar")) return;
+ Run366DaysIsLeapYearCalendarInTemporalLeapYearTest(cal.getAlias());
+}
+
+void CalendarTest::TestEthiopicAmeteAlemCalendarInTemporalLeapYear() {
+ UErrorCode status = U_ZERO_ERROR;
+ Locale l(Locale::getRoot());
+ l.setKeywordValue("calendar", "ethiopic-amete-alem", status);
+ LocalPointer<Calendar> cal(Calendar::createInstance(l, status));
+ if (failure(status, "construct EthiopicAmeteAlemCalendar")) return;
+ Run366DaysIsLeapYearCalendarInTemporalLeapYearTest(cal.getAlias());
+}
+
+std::string monthCode(int32_t month, bool leap) {
+ std::string code("M");
+ if (month < 10) {
+ code += "0";
+ code += ('0' + month);
+ } else {
+ code += "1";
+ code += ('0' + (month % 10));
+ }
+ if (leap) {
+ code += "L";
+ }
+ return code;
+}
+std::string hebrewMonthCode(int32_t icuMonth) {
+ if (icuMonth == icu::HebrewCalendar::ADAR_1) {
+ return monthCode(icuMonth, true);
+ }
+ return monthCode(icuMonth < icu::HebrewCalendar::ADAR_1 ? icuMonth+1 : icuMonth, false);
+}
+
+void CalendarTest::RunChineseCalendarGetTemporalMonthCode(Calendar* cal) {
+ UErrorCode status = U_ZERO_ERROR;
+ GregorianCalendar gc(status);
+ if (failure(status, "construct GregorianCalendar")) return;
+ // Start our test from 1900, Jan 1.
+ // Check every 29 days in exhausted mode.
+ int32_t incrementDays = 29;
+ int32_t startYear = 1900;
+ int32_t stopYear = 2400;
+
+ if (quick) {
+ incrementDays = 317;
+ startYear = 1950;
+ stopYear = 2050;
+ }
+ for (gc.set(startYear, UCAL_JANUARY, 1);
+ gc.get(UCAL_YEAR, status) <= stopYear;
+ gc.add(UCAL_DATE, incrementDays, status)) {
+ cal->setTime(gc.getTime(status), status);
+ if (failure(status, "set/getTime/setTime incorrect")) return;
+ int32_t cal_month = cal->get(UCAL_MONTH, status);
+ std::string expected = monthCode(
+ cal_month + 1, cal->get(UCAL_IS_LEAP_MONTH, status) != 0);
+ assertEquals("getTemporalMonthCode", expected.c_str(), cal->getTemporalMonthCode(status));
+ if (failure(status, "getTemporalMonthCode")) return;
+ }
+}
+
+void CalendarTest::TestChineseCalendarGetTemporalMonthCode() {
+ UErrorCode status = U_ZERO_ERROR;
+ Locale l(Locale::getRoot());
+ l.setKeywordValue("calendar", "chinese", status);
+ LocalPointer<Calendar> cal(Calendar::createInstance(l, status));
+ if (failure(status, "construct ChineseCalendar")) return;
+ RunChineseCalendarGetTemporalMonthCode(cal.getAlias());
+}
+
+void CalendarTest::TestDangiCalendarGetTemporalMonthCode() {
+ UErrorCode status = U_ZERO_ERROR;
+ Locale l(Locale::getRoot());
+ l.setKeywordValue("calendar", "dangi", status);
+ LocalPointer<Calendar> cal(Calendar::createInstance(l, status));
+ if (failure(status, "construct DangiCalendar")) return;
+ RunChineseCalendarGetTemporalMonthCode(cal.getAlias());
+}
+
+void CalendarTest::TestHebrewCalendarGetTemporalMonthCode() {
+ UErrorCode status = U_ZERO_ERROR;
+ Locale l(Locale::getRoot());
+ l.setKeywordValue("calendar", "hebrew", status);
+ LocalPointer<Calendar> cal(Calendar::createInstance(l, status));
+ GregorianCalendar gc(status);
+ if (failure(status, "construct Calendar")) return;
+ // Start our test from 1900, Jan 1.
+ // Check every 29 days in exhausted mode.
+ int32_t incrementDays = 29;
+ int32_t startYear = 1900;
+ int32_t stopYear = 2400;
+
+ if (quick) {
+ incrementDays = 317;
+ stopYear = 2100;
+ }
+ for (gc.set(startYear, UCAL_JANUARY, 1);
+ gc.get(UCAL_YEAR, status) <= stopYear;
+ gc.add(UCAL_DATE, incrementDays, status)) {
+ cal->setTime(gc.getTime(status), status);
+ if (failure(status, "set/getTime/setTime incorrect")) return;
+ std::string expected = hebrewMonthCode(cal->get(UCAL_MONTH, status));
+ if (failure(status, "get failed")) return;
+ assertEquals("getTemporalMonthCode", expected.c_str(), cal->getTemporalMonthCode(status));
+ if (failure(status, "getTemporalMonthCode")) return;
+ }
+}
+
+void CalendarTest::RunCECalendarGetTemporalMonthCode(Calendar* cal) {
+ UErrorCode status = U_ZERO_ERROR;
+ GregorianCalendar gc(status);
+ if (failure(status, "construct Calendar")) return;
+ // Start testing from 1900
+ gc.set(1900, UCAL_JANUARY, 1);
+ cal->setTime(gc.getTime(status), status);
+ int32_t year = cal->get(UCAL_YEAR, status);
+ for (int32_t m = 0; m < 13; m++) {
+ std::string expected = monthCode(m+1, false);
+ for (int32_t y = year; y < year + 500 ; y++) {
+ cal->set(y, m, 1);
+ assertEquals("getTemporalMonthCode", expected.c_str(), cal->getTemporalMonthCode(status));
+ if (failure(status, "getTemporalMonthCode")) continue;
+ }
+ }
+
+}
+
+void CalendarTest::TestCopticCalendarGetTemporalMonthCode() {
+ UErrorCode status = U_ZERO_ERROR;
+ Locale l(Locale::getRoot());
+ l.setKeywordValue("calendar", "coptic", status);
+ LocalPointer<Calendar> cal(Calendar::createInstance(l, status));
+ if (failure(status, "construct CopticCalendar")) return;
+ RunCECalendarGetTemporalMonthCode(cal.getAlias());
+}
+
+void CalendarTest::TestEthiopicCalendarGetTemporalMonthCode() {
+ UErrorCode status = U_ZERO_ERROR;
+ Locale l(Locale::getRoot());
+ l.setKeywordValue("calendar", "ethiopic", status);
+ LocalPointer<Calendar> cal(Calendar::createInstance(l, status));
+ if (failure(status, "construct EthiopicCalendar")) return;
+ RunCECalendarGetTemporalMonthCode(cal.getAlias());
+}
+
+void CalendarTest::TestEthiopicAmeteAlemCalendarGetTemporalMonthCode() {
+ UErrorCode status = U_ZERO_ERROR;
+ Locale l(Locale::getRoot());
+ l.setKeywordValue("calendar", "ethiopic-amete-alem", status);
+ LocalPointer<Calendar> cal(Calendar::createInstance(l, status));
+ if (failure(status, "construct EthiopicAmeteAlemCalendar")) return;
+ RunCECalendarGetTemporalMonthCode(cal.getAlias());
+}
+
+void CalendarTest::TestGregorianCalendarSetTemporalMonthCode() {
+
+ struct TestCase {
+ int32_t gYear;
+ int32_t gMonth;
+ int32_t gDate;
+ const char* monthCode;
+ int32_t ordinalMonth;
+ } cases[] = {
+ { 1911, UCAL_JANUARY, 31, "M01", 0 },
+ { 1970, UCAL_FEBRUARY, 22, "M02", 1 },
+ { 543, UCAL_MARCH, 3, "M03", 2 },
+ { 2340, UCAL_APRIL, 21, "M04", 3 },
+ { 1234, UCAL_MAY, 21, "M05", 4 },
+ { 1931, UCAL_JUNE, 17, "M06", 5 },
+ { 2000, UCAL_JULY, 1, "M07", 6 },
+ { 2033, UCAL_AUGUST, 3, "M08", 7 },
+ { 2013, UCAL_SEPTEMBER, 9, "M09", 8 },
+ { 1849, UCAL_OCTOBER, 31, "M10", 9 },
+ { 1433, UCAL_NOVEMBER, 30, "M11", 10 },
+ { 2022, UCAL_DECEMBER, 25, "M12", 11 },
+ };
+ UErrorCode status = U_ZERO_ERROR;
+ GregorianCalendar gc1(status);
+ GregorianCalendar gc2(status);
+ if (failure(status, "construct GregorianCalendar")) return;
+ for (auto& cas : cases) {
+ gc1.clear();
+ gc2.clear();
+ gc1.set(cas.gYear, cas.gMonth, cas.gDate);
+
+ gc2.set(UCAL_YEAR, cas.gYear);
+ gc2.setTemporalMonthCode(cas.monthCode, status);
+ gc2.set(UCAL_DATE, cas.gDate);
+ if (failure(status, "set/setTemporalMonthCode")) return;
+
+ assertTrue("by set and setTemporalMonthCode()", gc1.equals(gc2, status));
+ const char* actualMonthCode1 = gc1.getTemporalMonthCode(status);
+ const char* actualMonthCode2 = gc2.getTemporalMonthCode(status);
+ if (failure(status, "getTemporalMonthCode")) continue;
+ assertEquals("getTemporalMonthCode()", 0,
+ uprv_strcmp(actualMonthCode1, actualMonthCode2));
+ assertEquals("getTemporalMonthCode()", 0,
+ uprv_strcmp(cas.monthCode, actualMonthCode2));
+ assertEquals("ordinalMonth", cas.ordinalMonth, gc2.get(UCAL_ORDINAL_MONTH, status));
+ assertEquals("ordinalMonth", gc1.get(UCAL_ORDINAL_MONTH, status),
+ gc2.get(UCAL_ORDINAL_MONTH, status));
+ }
+}
+
+void CalendarTest::TestChineseCalendarSetTemporalMonthCode() {
+ UErrorCode status = U_ZERO_ERROR;
+ Locale l(Locale::getRoot());
+ l.setKeywordValue("calendar", "chinese", status);
+ LocalPointer<Calendar> cc1(Calendar::createInstance(l, status));
+ if (failure(status, "construct ChineseCalendar")) return;
+ LocalPointer<Calendar> cc2(cc1->clone());
+
+ struct TestCase {
+ int32_t gYear;
+ int32_t gMonth;
+ int32_t gDate;
+ int32_t cYear;
+ int32_t cMonth;
+ int32_t cDate;
+ const char* cMonthCode;
+ bool cLeapMonth;
+ int32_t cOrdinalMonth;
+ } cases[] = {
+ // https://www.hko.gov.hk/tc/gts/time/calendar/pdf/files/2022.pdf
+ { 2022, UCAL_DECEMBER, 15, 4659, UCAL_NOVEMBER, 22, "M11", false, 10},
+ // M01L is very hard to find. Cannot find a year has M01L in these several
+ // centuries.
+ // M02L https://www.hko.gov.hk/tc/gts/time/calendar/pdf/files/2004.pdf
+ { 2004, UCAL_MARCH, 20, 4641, UCAL_FEBRUARY, 30, "M02", false, 1},
+ { 2004, UCAL_MARCH, 21, 4641, UCAL_FEBRUARY, 1, "M02L", true, 2},
+ { 2004, UCAL_APRIL, 18, 4641, UCAL_FEBRUARY, 29, "M02L", true, 2},
+ { 2004, UCAL_APRIL, 19, 4641, UCAL_MARCH, 1, "M03", false, 3},
+ // M03L https://www.hko.gov.hk/tc/gts/time/calendar/pdf/files/1995.pdf
+ { 1955, UCAL_APRIL, 21, 4592, UCAL_MARCH, 29, "M03", false, 2},
+ { 1955, UCAL_APRIL, 22, 4592, UCAL_MARCH, 1, "M03L", true, 3},
+ { 1955, UCAL_MAY, 21, 4592, UCAL_MARCH, 30, "M03L", true, 3},
+ { 1955, UCAL_MAY, 22, 4592, UCAL_APRIL, 1, "M04", false, 4},
+ // M12 https://www.hko.gov.hk/tc/gts/time/calendar/pdf/files/1996.pdf
+ { 1956, UCAL_FEBRUARY, 11, 4592, UCAL_DECEMBER, 30, "M12", false, 12},
+ // M04L https://www.hko.gov.hk/tc/gts/time/calendar/pdf/files/2001.pdf
+ { 2001, UCAL_MAY, 22, 4638, UCAL_APRIL, 30, "M04", false, 3},
+ { 2001, UCAL_MAY, 23, 4638, UCAL_APRIL, 1, "M04L", true, 4},
+ { 2001, UCAL_JUNE, 20, 4638, UCAL_APRIL, 29, "M04L", true, 4},
+ { 2001, UCAL_JUNE, 21, 4638, UCAL_MAY, 1, "M05", false, 5},
+ // M05L https://www.hko.gov.hk/tc/gts/time/calendar/pdf/files/2009.pdf
+ { 2009, UCAL_JUNE, 22, 4646, UCAL_MAY, 30, "M05", false, 4},
+ { 2009, UCAL_JUNE, 23, 4646, UCAL_MAY, 1, "M05L", true, 5},
+ { 2009, UCAL_JULY, 21, 4646, UCAL_MAY, 29, "M05L", true, 5},
+ { 2009, UCAL_JULY, 22, 4646, UCAL_JUNE, 1, "M06", false, 6},
+ // M06L https://www.hko.gov.hk/tc/gts/time/calendar/pdf/files/2017.pdf
+ { 2017, UCAL_JULY, 22, 4654, UCAL_JUNE, 29, "M06", false, 5},
+ { 2017, UCAL_JULY, 23, 4654, UCAL_JUNE, 1, "M06L", true, 6},
+ { 2017, UCAL_AUGUST, 21, 4654, UCAL_JUNE, 30, "M06L", true, 6},
+ { 2017, UCAL_AUGUST, 22, 4654, UCAL_JULY, 1, "M07", false, 7},
+ // M07L https://www.hko.gov.hk/tc/gts/time/calendar/pdf/files/2006.pdf
+ { 2006, UCAL_AUGUST, 23, 4643, UCAL_JULY, 30, "M07", false, 6},
+ { 2006, UCAL_AUGUST, 24, 4643, UCAL_JULY, 1, "M07L", true, 7},
+ { 2006, UCAL_SEPTEMBER, 21, 4643, UCAL_JULY, 29, "M07L", true, 7},
+ { 2006, UCAL_SEPTEMBER, 22, 4643, UCAL_AUGUST, 1, "M08", false, 8},
+ // M08L https://www.hko.gov.hk/tc/gts/time/calendar/pdf/files/1995.pdf
+ { 1995, UCAL_SEPTEMBER, 24, 4632, UCAL_AUGUST, 30, "M08", false, 7},
+ { 1995, UCAL_SEPTEMBER, 25, 4632, UCAL_AUGUST, 1, "M08L", true, 8},
+ { 1995, UCAL_OCTOBER, 23, 4632, UCAL_AUGUST, 29, "M08L", true, 8},
+ { 1995, UCAL_OCTOBER, 24, 4632, UCAL_SEPTEMBER, 1, "M09", false, 9},
+ // M09L https://www.hko.gov.hk/tc/gts/time/calendar/pdf/files/2014.pdf
+ { 2014, UCAL_OCTOBER, 23, 4651, UCAL_SEPTEMBER, 30, "M09", false, 8},
+ { 2014, UCAL_OCTOBER, 24, 4651, UCAL_SEPTEMBER, 1, "M09L", true, 9},
+ { 2014, UCAL_NOVEMBER, 21, 4651, UCAL_SEPTEMBER, 29, "M09L", true, 9},
+ { 2014, UCAL_NOVEMBER, 22, 4651, UCAL_OCTOBER, 1, "M10", false, 10},
+ // M10L https://www.hko.gov.hk/tc/gts/time/calendar/pdf/files/1984.pdf
+ { 1984, UCAL_NOVEMBER, 22, 4621, UCAL_OCTOBER, 30, "M10", false, 9},
+ { 1984, UCAL_NOVEMBER, 23, 4621, UCAL_OCTOBER, 1, "M10L", true, 10},
+ { 1984, UCAL_DECEMBER, 21, 4621, UCAL_OCTOBER, 29, "M10L", true, 10},
+ { 1984, UCAL_DECEMBER, 22, 4621, UCAL_NOVEMBER, 1, "M11", false, 11},
+ // M11L https://www.hko.gov.hk/tc/gts/time/calendar/pdf/files/2033.pdf
+ // https://www.hko.gov.hk/tc/gts/time/calendar/pdf/files/2034.pdf
+ { 2033, UCAL_DECEMBER, 21, 4670, UCAL_NOVEMBER, 30, "M11", false, 10},
+ { 2033, UCAL_DECEMBER, 22, 4670, UCAL_NOVEMBER, 1, "M11L", true, 11},
+ { 2034, UCAL_JANUARY, 19, 4670, UCAL_NOVEMBER, 29, "M11L", true, 11},
+ { 2034, UCAL_JANUARY, 20, 4670, UCAL_DECEMBER, 1, "M12", false, 12},
+ // M12L is very hard to find. Cannot find a year has M01L in these several
+ // centuries.
+ };
+ GregorianCalendar gc1(status);
+ if (failure(status, "construct Calendar")) return;
+ for (auto& cas : cases) {
+ gc1.clear();
+ cc1->clear();
+ cc2->clear();
+ gc1.set(cas.gYear, cas.gMonth, cas.gDate);
+ cc1->setTime(gc1.getTime(status), status);
+
+ cc2->set(UCAL_EXTENDED_YEAR, cas.cYear);
+ cc2->setTemporalMonthCode(cas.cMonthCode, status);
+ cc2->set(UCAL_DATE, cas.cDate);
+
+ assertEquals("year", cas.cYear, cc1->get(UCAL_EXTENDED_YEAR, status));
+ assertEquals("month", cas.cMonth, cc1->get(UCAL_MONTH, status));
+ assertEquals("date", cas.cDate, cc1->get(UCAL_DATE, status));
+ assertEquals("is_leap_month", cas.cLeapMonth ? 1 : 0, cc1->get(UCAL_IS_LEAP_MONTH, status));
+ assertEquals("getTemporalMonthCode()", 0,
+ uprv_strcmp(cas.cMonthCode, cc1->getTemporalMonthCode(status)));
+ if (failure(status, "getTemporalMonthCode")) continue;
+ assertEquals("ordinalMonth", cas.cOrdinalMonth, cc1->get(UCAL_ORDINAL_MONTH, status));
+ if (! cc2->equals(*cc1, status)) {
+ printf("g=%f %f vs %f. diff = %f %d/%d%s/%d vs %d/%d%s/%d\n",
+ gc1.getTime(status), cc1->getTime(status), cc2->getTime(status),
+ cc1->getTime(status) - cc2->getTime(status),
+ cc1->get(UCAL_EXTENDED_YEAR, status),
+ cc1->get(UCAL_MONTH, status)+1,
+ cc1->get(UCAL_IS_LEAP_MONTH, status) == 0 ? "" : "L",
+ cc1->get(UCAL_DATE, status),
+ cc2->get(UCAL_EXTENDED_YEAR, status),
+ cc2->get(UCAL_MONTH, status)+1,
+ cc2->get(UCAL_IS_LEAP_MONTH, status) == 0 ? "" : "L",
+ cc2->get(UCAL_DATE, status));
+ }
+ assertTrue("by set() and setTemporalMonthCode()", cc2->equals(*cc1, status));
+ }
+}
+
+void CalendarTest::TestHebrewCalendarSetTemporalMonthCode() {
+ UErrorCode status = U_ZERO_ERROR;
+ Locale l(Locale::getRoot());
+ l.setKeywordValue("calendar", "hebrew", status);
+ LocalPointer<Calendar> cc1(Calendar::createInstance(l, status));
+ if (failure(status, "construct HebrewCalendar")) return;
+ LocalPointer<Calendar> cc2(cc1->clone());
+
+ struct TestCase {
+ int32_t gYear;
+ int32_t gMonth;
+ int32_t gDate;
+ int32_t cYear;
+ int32_t cMonth;
+ int32_t cDate;
+ const char* cMonthCode;
+ int32_t cOrdinalMonth;
+ } cases[] = {
+ { 2022, UCAL_JANUARY, 11, 5782, icu::HebrewCalendar::SHEVAT, 9, "M05", 4},
+ { 2022, UCAL_FEBRUARY, 12, 5782, icu::HebrewCalendar::ADAR_1, 11, "M05L", 5},
+ { 2022, UCAL_MARCH, 13, 5782, icu::HebrewCalendar::ADAR, 10, "M06", 6},
+ { 2022, UCAL_APRIL, 14, 5782, icu::HebrewCalendar::NISAN, 13, "M07", 7},
+ { 2022, UCAL_MAY, 15, 5782, icu::HebrewCalendar::IYAR, 14, "M08", 8},
+ { 2022, UCAL_JUNE, 16, 5782, icu::HebrewCalendar::SIVAN, 17, "M09", 9},
+ { 2022, UCAL_JULY, 17, 5782, icu::HebrewCalendar::TAMUZ, 18, "M10", 10},
+ { 2022, UCAL_AUGUST, 18, 5782, icu::HebrewCalendar::AV, 21, "M11", 11},
+ { 2022, UCAL_SEPTEMBER, 19, 5782, icu::HebrewCalendar::ELUL, 23, "M12", 12},
+ { 2022, UCAL_OCTOBER, 20, 5783, icu::HebrewCalendar::TISHRI, 25, "M01", 0},
+ { 2022, UCAL_NOVEMBER, 21, 5783, icu::HebrewCalendar::HESHVAN, 27, "M02", 1},
+ { 2022, UCAL_DECEMBER, 22, 5783, icu::HebrewCalendar::KISLEV, 28, "M03", 2},
+ { 2023, UCAL_JANUARY, 20, 5783, icu::HebrewCalendar::TEVET, 27, "M04", 3},
+ };
+ GregorianCalendar gc1(status);
+ if (failure(status, "construct Calendar")) return;
+ for (auto& cas : cases) {
+ gc1.clear();
+ cc1->clear();
+ cc2->clear();
+ gc1.set(cas.gYear, cas.gMonth, cas.gDate);
+ cc1->setTime(gc1.getTime(status), status);
+
+ cc2->set(UCAL_EXTENDED_YEAR, cas.cYear);
+ cc2->setTemporalMonthCode(cas.cMonthCode, status);
+ cc2->set(UCAL_DATE, cas.cDate);
+
+ assertEquals("year", cas.cYear, cc1->get(UCAL_EXTENDED_YEAR, status));
+ assertEquals("month", cas.cMonth, cc1->get(UCAL_MONTH, status));
+ assertEquals("date", cas.cDate, cc1->get(UCAL_DATE, status));
+ assertEquals("getTemporalMonthCode()", 0,
+ uprv_strcmp(cas.cMonthCode, cc1->getTemporalMonthCode(status)));
+ if (failure(status, "getTemporalMonthCode")) continue;
+ if (! cc2->equals(*cc1, status)) {
+ printf("g=%f %f vs %f. diff = %f %d/%d/%d vs %d/%d/%d\n",
+ gc1.getTime(status), cc1->getTime(status), cc2->getTime(status),
+ cc1->getTime(status) - cc2->getTime(status),
+ cc1->get(UCAL_EXTENDED_YEAR, status),
+ cc1->get(UCAL_MONTH, status)+1,
+ cc1->get(UCAL_DATE, status),
+ cc2->get(UCAL_EXTENDED_YEAR, status),
+ cc2->get(UCAL_MONTH, status)+1,
+ cc2->get(UCAL_DATE, status));
+ }
+ assertTrue("by set() and setTemporalMonthCode()", cc2->equals(*cc1, status));
+ assertEquals("ordinalMonth", cas.cOrdinalMonth, cc1->get(UCAL_ORDINAL_MONTH, status));
+ assertEquals("ordinalMonth", cas.cOrdinalMonth, cc2->get(UCAL_ORDINAL_MONTH, status));
+ }
+}
+
+void CalendarTest::TestCopticCalendarSetTemporalMonthCode() {
+ UErrorCode status = U_ZERO_ERROR;
+ Locale l(Locale::getRoot());
+ l.setKeywordValue("calendar", "coptic", status);
+ LocalPointer<Calendar> cc1(Calendar::createInstance(l, status));
+ if (failure(status, "construct CopticCalendar")) return;
+ LocalPointer<Calendar> cc2(cc1->clone());
+
+ struct TestCase {
+ int32_t gYear;
+ int32_t gMonth;
+ int32_t gDate;
+ int32_t cYear;
+ int32_t cMonth;
+ int32_t cDate;
+ const char* cMonthCode;
+ int32_t cOrdinalMonth;
+ } cases[] = {
+ { 1900, UCAL_JANUARY, 1, 1616, icu::CopticCalendar::KIAHK, 23, "M04", 3},
+ { 1900, UCAL_SEPTEMBER, 6, 1616, icu::CopticCalendar::NASIE, 1, "M13", 12},
+ { 1900, UCAL_SEPTEMBER, 10, 1616, icu::CopticCalendar::NASIE, 5, "M13", 12},
+ { 1900, UCAL_SEPTEMBER, 11, 1617, icu::CopticCalendar::TOUT, 1, "M01", 0},
+
+ { 2022, UCAL_JANUARY, 11, 1738, icu::CopticCalendar::TOBA, 3, "M05", 4},
+ { 2022, UCAL_FEBRUARY, 12, 1738, icu::CopticCalendar::AMSHIR, 5, "M06", 5},
+ { 2022, UCAL_MARCH, 13, 1738, icu::CopticCalendar::BARAMHAT, 4, "M07", 6},
+ { 2022, UCAL_APRIL, 14, 1738, icu::CopticCalendar::BARAMOUDA, 6, "M08", 7},
+ { 2022, UCAL_MAY, 15, 1738, icu::CopticCalendar::BASHANS, 7, "M09", 8},
+ { 2022, UCAL_JUNE, 16, 1738, icu::CopticCalendar::PAONA, 9, "M10", 9},
+ { 2022, UCAL_JULY, 17, 1738, icu::CopticCalendar::EPEP, 10, "M11", 10},
+ { 2022, UCAL_AUGUST, 18, 1738, icu::CopticCalendar::MESRA, 12, "M12", 11},
+ { 2022, UCAL_SEPTEMBER, 6, 1738, icu::CopticCalendar::NASIE, 1, "M13", 12},
+ { 2022, UCAL_SEPTEMBER, 10, 1738, icu::CopticCalendar::NASIE, 5, "M13", 12},
+ { 2022, UCAL_SEPTEMBER, 11, 1739, icu::CopticCalendar::TOUT, 1, "M01", 0},
+ { 2022, UCAL_SEPTEMBER, 19, 1739, icu::CopticCalendar::TOUT, 9, "M01", 0},
+ { 2022, UCAL_OCTOBER, 20, 1739, icu::CopticCalendar::BABA, 10, "M02", 1},
+ { 2022, UCAL_NOVEMBER, 21, 1739, icu::CopticCalendar::HATOR, 12, "M03", 2},
+ { 2022, UCAL_DECEMBER, 22, 1739, icu::CopticCalendar::KIAHK, 13, "M04", 3},
+
+ { 2023, UCAL_JANUARY, 1, 1739, icu::CopticCalendar::KIAHK, 23, "M04", 3},
+ { 2023, UCAL_SEPTEMBER, 6, 1739, icu::CopticCalendar::NASIE, 1, "M13", 12},
+ { 2023, UCAL_SEPTEMBER, 11, 1739, icu::CopticCalendar::NASIE, 6, "M13", 12},
+ { 2023, UCAL_SEPTEMBER, 12, 1740, icu::CopticCalendar::TOUT, 1, "M01", 0},
+
+ { 2030, UCAL_JANUARY, 1, 1746, icu::CopticCalendar::KIAHK, 23, "M04", 3},
+ { 2030, UCAL_SEPTEMBER, 6, 1746, icu::CopticCalendar::NASIE, 1, "M13", 12},
+ { 2030, UCAL_SEPTEMBER, 10, 1746, icu::CopticCalendar::NASIE, 5, "M13", 12},
+ { 2030, UCAL_SEPTEMBER, 11, 1747, icu::CopticCalendar::TOUT, 1, "M01", 0},
+ };
+ GregorianCalendar gc1(status);
+ if (failure(status, "construct Calendar")) return;
+ for (auto& cas : cases) {
+ gc1.clear();
+ cc1->clear();
+ cc2->clear();
+ gc1.set(cas.gYear, cas.gMonth, cas.gDate);
+ cc1->setTime(gc1.getTime(status), status);
+
+ cc2->set(UCAL_EXTENDED_YEAR, cas.cYear);
+ cc2->setTemporalMonthCode(cas.cMonthCode, status);
+ cc2->set(UCAL_DATE, cas.cDate);
+
+ assertEquals("year", cas.cYear, cc1->get(UCAL_EXTENDED_YEAR, status));
+ assertEquals("month", cas.cMonth, cc1->get(UCAL_MONTH, status));
+ assertEquals("date", cas.cDate, cc1->get(UCAL_DATE, status));
+ assertEquals("getTemporalMonthCode()", 0,
+ uprv_strcmp(cas.cMonthCode, cc1->getTemporalMonthCode(status)));
+ if (failure(status, "getTemporalMonthCode")) continue;
+ assertTrue("by set() and setTemporalMonthCode()", cc2->equals(*cc1, status));
+ if (! cc2->equals(*cc1, status)) {
+ printf("g=%f %f vs %f. diff = %f %d/%d/%d vs %d/%d/%d\n",
+ gc1.getTime(status), cc1->getTime(status), cc2->getTime(status),
+ cc1->getTime(status) - cc2->getTime(status),
+ cc1->get(UCAL_EXTENDED_YEAR, status),
+ cc1->get(UCAL_MONTH, status)+1,
+ cc1->get(UCAL_DATE, status),
+ cc2->get(UCAL_EXTENDED_YEAR, status),
+ cc2->get(UCAL_MONTH, status)+1,
+ cc2->get(UCAL_DATE, status));
+ }
+ assertEquals("ordinalMonth", cas.cOrdinalMonth, cc1->get(UCAL_ORDINAL_MONTH, status));
+ assertEquals("ordinalMonth", cas.cOrdinalMonth, cc2->get(UCAL_ORDINAL_MONTH, status));
+ }
+}
+
+void CalendarTest::TestEthiopicCalendarSetTemporalMonthCode() {
+ UErrorCode status = U_ZERO_ERROR;
+ Locale l(Locale::getRoot());
+ l.setKeywordValue("calendar", "ethiopic", status);
+ LocalPointer<Calendar> cc1(Calendar::createInstance(l, status));
+ if (failure(status, "construct EthiopicCalendar")) return;
+ LocalPointer<Calendar> cc2(cc1->clone());
+
+ struct TestCase {
+ int32_t gYear;
+ int32_t gMonth;
+ int32_t gDate;
+ int32_t cYear;
+ int32_t cMonth;
+ int32_t cDate;
+ const char* cMonthCode;
+ int32_t cOrdinalMonth;
+ } cases[] = {
+ { 1900, UCAL_JANUARY, 1, 1892, icu::EthiopicCalendar::TAHSAS, 23, "M04", 3},
+ { 1900, UCAL_SEPTEMBER, 6, 1892, icu::EthiopicCalendar::PAGUMEN, 1, "M13", 12},
+ { 1900, UCAL_SEPTEMBER, 10, 1892, icu::EthiopicCalendar::PAGUMEN, 5, "M13", 12},
+ { 1900, UCAL_SEPTEMBER, 11, 1893, icu::EthiopicCalendar::MESKEREM, 1, "M01", 0},
+
+ { 2022, UCAL_JANUARY, 11, 2014, icu::EthiopicCalendar::TER, 3, "M05", 4},
+ { 2022, UCAL_FEBRUARY, 12, 2014, icu::EthiopicCalendar::YEKATIT, 5, "M06", 5},
+ { 2022, UCAL_MARCH, 13, 2014, icu::EthiopicCalendar::MEGABIT, 4, "M07", 6},
+ { 2022, UCAL_APRIL, 14, 2014, icu::EthiopicCalendar::MIAZIA, 6, "M08", 7},
+ { 2022, UCAL_MAY, 15, 2014, icu::EthiopicCalendar::GENBOT, 7, "M09", 8},
+ { 2022, UCAL_JUNE, 16, 2014, icu::EthiopicCalendar::SENE, 9, "M10", 9},
+ { 2022, UCAL_JULY, 17, 2014, icu::EthiopicCalendar::HAMLE, 10, "M11", 10},
+ { 2022, UCAL_AUGUST, 18, 2014, icu::EthiopicCalendar::NEHASSE, 12, "M12", 11},
+ { 2022, UCAL_SEPTEMBER, 6, 2014, icu::EthiopicCalendar::PAGUMEN, 1, "M13", 12},
+ { 2022, UCAL_SEPTEMBER, 10, 2014, icu::EthiopicCalendar::PAGUMEN, 5, "M13", 12},
+ { 2022, UCAL_SEPTEMBER, 11, 2015, icu::EthiopicCalendar::MESKEREM, 1, "M01", 0},
+ { 2022, UCAL_SEPTEMBER, 19, 2015, icu::EthiopicCalendar::MESKEREM, 9, "M01", 0},
+ { 2022, UCAL_OCTOBER, 20, 2015, icu::EthiopicCalendar::TEKEMT, 10, "M02", 1},
+ { 2022, UCAL_NOVEMBER, 21, 2015, icu::EthiopicCalendar::HEDAR, 12, "M03", 2},
+ { 2022, UCAL_DECEMBER, 22, 2015, icu::EthiopicCalendar::TAHSAS, 13, "M04", 3},
+
+ { 2023, UCAL_JANUARY, 1, 2015, icu::EthiopicCalendar::TAHSAS, 23, "M04", 3},
+ { 2023, UCAL_SEPTEMBER, 6, 2015, icu::EthiopicCalendar::PAGUMEN, 1, "M13", 12},
+ { 2023, UCAL_SEPTEMBER, 11, 2015, icu::EthiopicCalendar::PAGUMEN, 6, "M13", 12},
+ { 2023, UCAL_SEPTEMBER, 12, 2016, icu::EthiopicCalendar::MESKEREM, 1, "M01", 0},
+
+ { 2030, UCAL_JANUARY, 1, 2022, icu::EthiopicCalendar::TAHSAS, 23, "M04", 3},
+ { 2030, UCAL_SEPTEMBER, 6, 2022, icu::EthiopicCalendar::PAGUMEN, 1, "M13", 12},
+ { 2030, UCAL_SEPTEMBER, 10, 2022, icu::EthiopicCalendar::PAGUMEN, 5, "M13", 12},
+ { 2030, UCAL_SEPTEMBER, 11, 2023, icu::EthiopicCalendar::MESKEREM, 1, "M01", 0},
+ };
+ GregorianCalendar gc1(status);
+ if (failure(status, "construct Calendar")) return;
+ for (auto& cas : cases) {
+ gc1.clear();
+ cc1->clear();
+ cc2->clear();
+ gc1.set(cas.gYear, cas.gMonth, cas.gDate);
+ cc1->setTime(gc1.getTime(status), status);
+
+ cc2->set(UCAL_EXTENDED_YEAR, cas.cYear);
+ cc2->setTemporalMonthCode(cas.cMonthCode, status);
+ cc2->set(UCAL_DATE, cas.cDate);
+
+ assertEquals("year", cas.cYear, cc1->get(UCAL_EXTENDED_YEAR, status));
+ assertEquals("month", cas.cMonth, cc1->get(UCAL_MONTH, status));
+ assertEquals("date", cas.cDate, cc1->get(UCAL_DATE, status));
+ assertEquals("getTemporalMonthCode()", 0,
+ uprv_strcmp(cas.cMonthCode, cc1->getTemporalMonthCode(status)));
+ if (failure(status, "getTemporalMonthCode")) continue;
+ if (! cc2->equals(*cc1, status)) {
+ printf("g=%f %f vs %f. diff = %f %d/%d/%d vs %d/%d/%d\n",
+ gc1.getTime(status), cc1->getTime(status), cc2->getTime(status),
+ cc1->getTime(status) - cc2->getTime(status),
+ cc1->get(UCAL_EXTENDED_YEAR, status),
+ cc1->get(UCAL_MONTH, status)+1,
+ cc1->get(UCAL_DATE, status),
+ cc2->get(UCAL_EXTENDED_YEAR, status),
+ cc2->get(UCAL_MONTH, status)+1,
+ cc2->get(UCAL_DATE, status));
+ }
+ assertTrue("by set() and setTemporalMonthCode()", cc2->equals(*cc1, status));
+ assertEquals("ordinalMonth", cas.cOrdinalMonth, cc1->get(UCAL_ORDINAL_MONTH, status));
+ assertEquals("ordinalMonth", cas.cOrdinalMonth, cc2->get(UCAL_ORDINAL_MONTH, status));
+ }
+}
+
+void VerifyMonth(CalendarTest* test, const char* message, Calendar* cc, int32_t expectedMonth,
+ int32_t expectedOrdinalMonth, bool expectedLeapMonth,
+ const char* expectedMonthCode) {
+ UErrorCode status = U_ZERO_ERROR;
+ std::string buf(message);
+ buf.append(" get(UCAL_MONTH)");
+ test->assertEquals(buf.c_str(), expectedMonth, cc->get(UCAL_MONTH, status));
+ buf = message;
+ buf.append(" get(UCAL_ORDINAL_MONTH)");
+ test->assertEquals(buf.c_str(), expectedOrdinalMonth, cc->get(UCAL_ORDINAL_MONTH, status));
+ buf = message;
+ buf.append(" get(UCAL_IS_LEAP_MONTH)");
+ test->assertEquals(buf.c_str(), expectedLeapMonth ? 1 : 0, cc->get(UCAL_IS_LEAP_MONTH, status));
+ buf = message;
+ buf.append(" getTemporalMonthCode()");
+ test->assertTrue(buf.c_str(), uprv_strcmp(cc->getTemporalMonthCode(status), expectedMonthCode) == 0);
+}
+
+void CalendarTest::TestMostCalendarsOrdinalMonthSet() {
+ UErrorCode status = U_ZERO_ERROR;
+ Locale l(Locale::getRoot());
+ std::unique_ptr<icu::StringEnumeration> enumeration(
+ Calendar::getKeywordValuesForLocale("calendar", l, false, status));
+ for (const char* name = enumeration->next(nullptr, status);
+ U_SUCCESS(status) && name != nullptr;
+ name = enumeration->next(nullptr, status)) {
+
+ // Test these three calendars differently.
+ if (uprv_strcmp(name, "chinese") == 0) continue;
+ if (uprv_strcmp(name, "dangi") == 0) continue;
+ if (uprv_strcmp(name, "hebrew") == 0) continue;
+
+ l.setKeywordValue("calendar", name, status);
+ LocalPointer<Calendar> cc1(Calendar::createInstance(l, status));
+ if (failure(status, "Construct Calendar")) return;
+
+ LocalPointer<Calendar> cc2(cc1->clone());
+ LocalPointer<Calendar> cc3(cc1->clone());
+
+ cc1->set(UCAL_EXTENDED_YEAR, 2134);
+ cc2->set(UCAL_EXTENDED_YEAR, 2134);
+ cc3->set(UCAL_EXTENDED_YEAR, 2134);
+ cc1->set(UCAL_MONTH, 5);
+ cc2->set(UCAL_ORDINAL_MONTH, 5);
+ cc3->setTemporalMonthCode("M06", status);
+ if (failure(status, "setTemporalMonthCode failure")) return;
+ cc1->set(UCAL_DATE, 23);
+ cc2->set(UCAL_DATE, 23);
+ cc3->set(UCAL_DATE, 23);
+ assertTrue("M06 cc2==cc1 set month by UCAL_MONTH and UCAL_UCAL_ORDINAL_MONTH", cc2->equals(*cc1, status));
+ assertTrue("M06 cc2==cc3 set month by UCAL_MONTH and setTemporalMonthCode", cc2->equals(*cc3, status));
+ if (failure(status, "equals failure")) return;
+ VerifyMonth(this, "cc1", cc1.getAlias(), 5, 5, false, "M06");
+ VerifyMonth(this, "cc2", cc2.getAlias(), 5, 5, false, "M06");
+ VerifyMonth(this, "cc3", cc3.getAlias(), 5, 5, false, "M06");
+
+ cc1->set(UCAL_ORDINAL_MONTH, 6);
+ cc2->setTemporalMonthCode("M07", status);
+ if (failure(status, "setTemporalMonthCode failure")) return;
+ cc3->set(UCAL_MONTH, 6);
+ assertTrue("M07 cc2==cc1 set month by UCAL_MONTH and UCAL_UCAL_ORDINAL_MONTH", cc2->equals(*cc1, status));
+ assertTrue("M07 cc2==cc3 set month by UCAL_MONTH and setTemporalMonthCode", cc2->equals(*cc3, status));
+ if (failure(status, "equals failure")) return;
+ VerifyMonth(this, "cc1", cc1.getAlias(), 6, 6, false, "M07");
+ VerifyMonth(this, "cc2", cc2.getAlias(), 6, 6, false, "M07");
+ VerifyMonth(this, "cc3", cc3.getAlias(), 6, 6, false, "M07");
+
+ cc1->setTemporalMonthCode("M08", status);
+ if (failure(status, "setTemporalMonthCode failure")) return;
+ cc2->set(UCAL_MONTH, 7);
+ cc3->set(UCAL_ORDINAL_MONTH, 7);
+ assertTrue("M08 cc2==cc1 set month by UCAL_MONTH and UCAL_UCAL_ORDINAL_MONTH", cc2->equals(*cc1, status));
+ assertTrue("M08 cc2==cc3 set month by UCAL_MONTH and setTemporalMonthCode", cc2->equals(*cc3, status));
+ if (failure(status, "equals failure")) return;
+ VerifyMonth(this, "cc1", cc1.getAlias(), 7, 7, false, "M08");
+ VerifyMonth(this, "cc2", cc2.getAlias(), 7, 7, false, "M08");
+ VerifyMonth(this, "cc3", cc3.getAlias(), 7, 7, false, "M08");
+
+ cc1->set(UCAL_DATE, 3);
+ // For "M13", do not return error for these three calendars.
+ if ((uprv_strcmp(name, "coptic") == 0) ||
+ (uprv_strcmp(name, "ethiopic") == 0) ||
+ (uprv_strcmp(name, "ethiopic-amete-alem") == 0)) {
+
+ cc1->setTemporalMonthCode("M13", status);
+ assertEquals("setTemporalMonthCode(\"M13\")", U_ZERO_ERROR, status);
+ assertEquals("get(UCAL_MONTH) after setTemporalMonthCode(\"M13\")",
+ 12, cc1->get(UCAL_MONTH, status));
+ assertEquals("get(UCAL_ORDINAL_MONTH) after setTemporalMonthCode(\"M13\")",
+ 12, cc1->get(UCAL_ORDINAL_MONTH, status));
+ assertEquals("get", U_ZERO_ERROR, status);
+ } else {
+ cc1->setTemporalMonthCode("M13", status);
+ assertEquals("setTemporalMonthCode(\"M13\")", U_ILLEGAL_ARGUMENT_ERROR, status);
+ }
+ status = U_ZERO_ERROR;
+
+ // Out of bound monthCodes should return error.
+ // These are not valid for calendar do not have a leap month
+ const char* kInvalidMonthCodes[] = {
+ "M00", "M14", "M01L", "M02L", "M03L", "M04L", "M05L", "M06L", "M07L",
+ "M08L", "M09L", "M10L", "M11L", "M12L"};
+ for (auto& cas : kInvalidMonthCodes) {
+ cc1->setTemporalMonthCode(cas, status);
+ assertEquals("setTemporalMonthCode(\"M13\")", U_ILLEGAL_ARGUMENT_ERROR, status);
+ status = U_ZERO_ERROR;
+ }
+
+ }
+}
+
+void CalendarTest::TestChineseCalendarOrdinalMonthSet() {
+ UErrorCode status = U_ZERO_ERROR;
+ Locale l(Locale::getRoot());
+ l.setKeywordValue("calendar", "chinese", status);
+ LocalPointer<Calendar> cc1(Calendar::createInstance(l, status));
+ if (failure(status, "Construct Calendar")) return;
+
+ LocalPointer<Calendar> cc2(cc1->clone());
+ LocalPointer<Calendar> cc3(cc1->clone());
+
+ constexpr int32_t notLeapYear = 4591;
+ constexpr int32_t leapMarchYear = 4592;
+
+ cc1->set(UCAL_EXTENDED_YEAR, leapMarchYear);
+ cc2->set(UCAL_EXTENDED_YEAR, leapMarchYear);
+ cc3->set(UCAL_EXTENDED_YEAR, leapMarchYear);
+
+ cc1->set(UCAL_MONTH, UCAL_MARCH); cc1->set(UCAL_IS_LEAP_MONTH, 1);
+ cc2->set(UCAL_ORDINAL_MONTH, 3);
+ cc3->setTemporalMonthCode("M03L", status);
+ if (failure(status, "setTemporalMonthCode failure")) return;
+ cc1->set(UCAL_DATE, 1);
+ cc2->set(UCAL_DATE, 1);
+ cc3->set(UCAL_DATE, 1);
+ assertTrue("4592 M03L cc2==cc1 set month by UCAL_MONTH and UCAL_UCAL_ORDINAL_MONTH", cc2->equals(*cc1, status));
+ assertTrue("4592 M03L cc2==cc3 set month by UCAL_MONTH and setTemporalMonthCode", cc2->equals(*cc3, status));
+ if (failure(status, "equals failure")) return;
+ VerifyMonth(this, "4592 M03L cc1", cc1.getAlias(), UCAL_MARCH, 3, true, "M03L");
+ VerifyMonth(this, "4592 M03L cc2", cc2.getAlias(), UCAL_MARCH, 3, true, "M03L");
+ VerifyMonth(this, "4592 M03L cc3", cc3.getAlias(), UCAL_MARCH, 3, true, "M03L");
+
+ cc1->set(UCAL_EXTENDED_YEAR, notLeapYear);
+ cc2->set(UCAL_EXTENDED_YEAR, notLeapYear);
+ cc3->set(UCAL_EXTENDED_YEAR, notLeapYear);
+ cc1->set(UCAL_ORDINAL_MONTH, 5);
+ cc2->setTemporalMonthCode("M06", status);
+ if (failure(status, "setTemporalMonthCode failure")) return;
+ cc3->set(UCAL_MONTH, UCAL_JUNE); cc3->set(UCAL_IS_LEAP_MONTH, 0);
+ assertTrue("4591 M06 cc2==cc1 set month by UCAL_MONTH and UCAL_UCAL_ORDINAL_MONTH", cc2->equals(*cc1, status));
+ assertTrue("4591 M06 cc2==cc3 set month by UCAL_MONTH and setTemporalMonthCode", cc2->equals(*cc3, status));
+ if (failure(status, "equals failure")) return;
+ VerifyMonth(this, "4591 M06 cc1", cc1.getAlias(), UCAL_JUNE, 5, false, "M06");
+ VerifyMonth(this, "4591 M06 cc2", cc2.getAlias(), UCAL_JUNE, 5, false, "M06");
+ VerifyMonth(this, "4591 M06 cc3", cc3.getAlias(), UCAL_JUNE, 5, false, "M06");
+
+ cc1->set(UCAL_EXTENDED_YEAR, leapMarchYear);
+ cc2->set(UCAL_EXTENDED_YEAR, leapMarchYear);
+ cc3->set(UCAL_EXTENDED_YEAR, leapMarchYear);
+ cc1->setTemporalMonthCode("M04", status);
+ if (failure(status, "setTemporalMonthCode failure")) return;
+ cc2->set(UCAL_MONTH, UCAL_APRIL); cc2->set(UCAL_IS_LEAP_MONTH, 0);
+ cc3->set(UCAL_ORDINAL_MONTH, 4);
+ assertTrue("4592 M04 cc2==cc1 set month by UCAL_MONTH and UCAL_UCAL_ORDINAL_MONTH", cc2->equals(*cc1, status));
+ assertTrue("4592 M04 cc2==cc3 set month by UCAL_MONTH and setTemporalMonthCode", cc2->equals(*cc3, status));
+ if (failure(status, "equals failure")) return;
+ // 4592 has leap March so April is the 5th month in that year.
+ VerifyMonth(this, "4592 M04 cc1", cc1.getAlias(), UCAL_APRIL, 4, false, "M04");
+ VerifyMonth(this, "4592 M04 cc2", cc2.getAlias(), UCAL_APRIL, 4, false, "M04");
+ VerifyMonth(this, "4592 M04 cc3", cc3.getAlias(), UCAL_APRIL, 4, false, "M04");
+
+ cc1->set(UCAL_EXTENDED_YEAR, notLeapYear);
+ cc2->set(UCAL_EXTENDED_YEAR, notLeapYear);
+ cc3->set(UCAL_EXTENDED_YEAR, notLeapYear);
+ assertTrue("4591 M04 no leap month before cc2==cc1 set month by UCAL_MONTH and UCAL_UCAL_ORDINAL_MONTH", cc2->equals(*cc1, status));
+ assertTrue("4591 M04 no leap month before cc2==cc3 set month by UCAL_MONTH and setTemporalMonthCode", cc2->equals(*cc3, status));
+ if (failure(status, "equals failure")) return;
+ // 4592 has no leap month before April so April is the 4th month in that year.
+ VerifyMonth(this, "4591 M04 cc1", cc1.getAlias(), UCAL_APRIL, 3, false, "M04");
+ VerifyMonth(this, "4591 M04 cc2", cc2.getAlias(), UCAL_APRIL, 3, false, "M04");
+ VerifyMonth(this, "4591 M04 cc3", cc3.getAlias(), UCAL_APRIL, 3, false, "M04");
+
+ // Out of bound monthCodes should return error.
+ // These are not valid for calendar do not have a leap month
+ UErrorCode expectedStatus = U_ILLEGAL_ARGUMENT_ERROR;
+ const char* kInvalidMonthCodes[] = { "M00", "M13", "M14" };
+
+
+ for (auto& cas : kInvalidMonthCodes) {
+ cc1->setTemporalMonthCode(cas, status);
+ if (status != expectedStatus) {
+ errln("setTemporalMonthCode(%s) should return U_ILLEGAL_ARGUMENT_ERROR", cas);
+ }
+ status = U_ZERO_ERROR;
+ }
+}
+
+void CalendarTest::TestDangiCalendarOrdinalMonthSet() {
+ UErrorCode status = U_ZERO_ERROR;
+ Locale l(Locale::getRoot());
+ const char* name = "dangi";
+ l.setKeywordValue("calendar", name, status);
+ LocalPointer<Calendar> cc1(Calendar::createInstance(l, status));
+ if (failure(status, "Construct Calendar")) return;
+
+ LocalPointer<Calendar> cc2(cc1->clone());
+ LocalPointer<Calendar> cc3(cc1->clone());
+
+ constexpr int32_t notLeapYear = 4287;
+ constexpr int32_t leapMarchYear = 4288;
+
+ cc1->set(UCAL_EXTENDED_YEAR, leapMarchYear);
+ cc2->set(UCAL_EXTENDED_YEAR, leapMarchYear);
+ cc3->set(UCAL_EXTENDED_YEAR, leapMarchYear);
+
+ cc1->set(UCAL_MONTH, UCAL_MARCH); cc1->set(UCAL_IS_LEAP_MONTH, 1);
+ cc2->set(UCAL_ORDINAL_MONTH, 3);
+ cc3->setTemporalMonthCode("M03L", status);
+ if (failure(status, "setTemporalMonthCode failure")) return;
+ cc1->set(UCAL_DATE, 1);
+ cc2->set(UCAL_DATE, 1);
+ cc3->set(UCAL_DATE, 1);
+ assertTrue("4288 M03L cc2==cc1 set month by UCAL_MONTH and UCAL_UCAL_ORDINAL_MONTH", cc2->equals(*cc1, status));
+ assertTrue("4288 M03L cc2==cc3 set month by UCAL_MONTH and setTemporalMonthCode", cc2->equals(*cc3, status));
+ if (failure(status, "equals failure")) return;
+ VerifyMonth(this, "4288 M03L cc1", cc1.getAlias(), UCAL_MARCH, 3, true, "M03L");
+ VerifyMonth(this, "4288 M03L cc2", cc2.getAlias(), UCAL_MARCH, 3, true, "M03L");
+ VerifyMonth(this, "4288 M03L cc3", cc3.getAlias(), UCAL_MARCH, 3, true, "M03L");
+
+ cc1->set(UCAL_EXTENDED_YEAR, notLeapYear);
+ cc2->set(UCAL_EXTENDED_YEAR, notLeapYear);
+ cc3->set(UCAL_EXTENDED_YEAR, notLeapYear);
+ cc1->set(UCAL_ORDINAL_MONTH, 5);
+ cc2->setTemporalMonthCode("M06", status);
+ if (failure(status, "setTemporalMonthCode failure")) return;
+ cc3->set(UCAL_MONTH, UCAL_JUNE); cc3->set(UCAL_IS_LEAP_MONTH, 0);
+ assertTrue("4287 M06 cc2==cc1 set month by UCAL_MONTH and UCAL_UCAL_ORDINAL_MONTH", cc2->equals(*cc1, status));
+ assertTrue("4287 M06 cc2==cc3 set month by UCAL_MONTH and setTemporalMonthCode", cc2->equals(*cc3, status));
+ if (failure(status, "equals failure")) return;
+ VerifyMonth(this, "4287 M06 cc1", cc1.getAlias(), UCAL_JUNE, 5, false, "M06");
+ VerifyMonth(this, "4287 M06 cc2", cc2.getAlias(), UCAL_JUNE, 5, false, "M06");
+ VerifyMonth(this, "4287 M06 cc3", cc3.getAlias(), UCAL_JUNE, 5, false, "M06");
+
+ cc1->set(UCAL_EXTENDED_YEAR, leapMarchYear);
+ cc2->set(UCAL_EXTENDED_YEAR, leapMarchYear);
+ cc3->set(UCAL_EXTENDED_YEAR, leapMarchYear);
+ cc1->setTemporalMonthCode("M04", status);
+ if (failure(status, "setTemporalMonthCode failure")) return;
+ cc2->set(UCAL_MONTH, UCAL_APRIL); cc2->set(UCAL_IS_LEAP_MONTH, 0);
+ cc3->set(UCAL_ORDINAL_MONTH, 4);
+ assertTrue("4288 M04 cc2==cc1 set month by UCAL_MONTH and UCAL_UCAL_ORDINAL_MONTH", cc2->equals(*cc1, status));
+ assertTrue("4288 M04 cc2==cc3 set month by UCAL_MONTH and setTemporalMonthCode", cc2->equals(*cc3, status));
+ if (failure(status, "equals failure")) return;
+ // 4592 has leap March so April is the 5th month in that year.
+ VerifyMonth(this, "4288 M04 cc1", cc1.getAlias(), UCAL_APRIL, 4, false, "M04");
+ VerifyMonth(this, "4288 M04 cc2", cc2.getAlias(), UCAL_APRIL, 4, false, "M04");
+ VerifyMonth(this, "4288 M04 cc3", cc3.getAlias(), UCAL_APRIL, 4, false, "M04");
+
+ cc1->set(UCAL_EXTENDED_YEAR, notLeapYear);
+ cc2->set(UCAL_EXTENDED_YEAR, notLeapYear);
+ cc3->set(UCAL_EXTENDED_YEAR, notLeapYear);
+ assertTrue("4287 M04 no leap month before cc2==cc1 set month by UCAL_MONTH and UCAL_UCAL_ORDINAL_MONTH", cc2->equals(*cc1, status));
+ assertTrue("4287 M04 no leap month before cc2==cc3 set month by UCAL_MONTH and setTemporalMonthCode", cc2->equals(*cc3, status));
+ if (failure(status, "equals failure")) return;
+ // 4592 has no leap month before April so April is the 4th month in that year.
+ VerifyMonth(this, "4287 M04 cc1", cc1.getAlias(), UCAL_APRIL, 3, false, "M04");
+ VerifyMonth(this, "4287 M04 cc2", cc2.getAlias(), UCAL_APRIL, 3, false, "M04");
+ VerifyMonth(this, "4287 M04 cc3", cc3.getAlias(), UCAL_APRIL, 3, false, "M04");
+
+ // Out of bound monthCodes should return error.
+ // These are not valid for calendar do not have a leap month
+ UErrorCode expectedStatus = U_ILLEGAL_ARGUMENT_ERROR;
+ const char* kInvalidMonthCodes[] = { "M00", "M13", "M14" };
+
+ for (auto& cas : kInvalidMonthCodes) {
+ cc1->setTemporalMonthCode(cas, status);
+ if (status != expectedStatus) {
+ errln("setTemporalMonthCode(%s) should return U_ILLEGAL_ARGUMENT_ERROR", cas);
+ }
+ status = U_ZERO_ERROR;
+ }
+}
+
+void CalendarTest::TestHebrewCalendarOrdinalMonthSet() {
+ UErrorCode status = U_ZERO_ERROR;
+ Locale l(Locale::getRoot());
+ l.setKeywordValue("calendar", "hebrew", status);
+ LocalPointer<Calendar> cc1(Calendar::createInstance(l, status));
+ if (failure(status, "Construct Calendar")) return;
+
+ LocalPointer<Calendar> cc2(cc1->clone());
+ LocalPointer<Calendar> cc3(cc1->clone());
+
+ // 5782 is leap year, 5781 is NOT.
+ cc1->set(UCAL_EXTENDED_YEAR, 5782);
+ cc2->set(UCAL_EXTENDED_YEAR, 5782);
+ cc3->set(UCAL_EXTENDED_YEAR, 5782);
+ cc1->set(UCAL_MONTH, icu::HebrewCalendar::ADAR_1);
+ cc2->set(UCAL_ORDINAL_MONTH, 5);
+ cc3->setTemporalMonthCode("M05L", status);
+ if (failure(status, "setTemporalMonthCode failure")) return;
+ cc1->set(UCAL_DATE, 1);
+ cc2->set(UCAL_DATE, 1);
+ cc3->set(UCAL_DATE, 1);
+ assertTrue("5782 M05L cc2==cc1 set month by UCAL_MONTH and UCAL_UCAL_ORDINAL_MONTH", cc2->equals(*cc1, status));
+ assertTrue("5782 M05L cc2==cc3 set month by UCAL_MONTH and setTemporalMonthCode", cc2->equals(*cc3, status));
+ if (failure(status, "equals failure")) return;
+ VerifyMonth(this, "cc1", cc1.getAlias(), icu::HebrewCalendar::ADAR_1, 5, false, "M05L");
+ VerifyMonth(this, "cc2", cc2.getAlias(), icu::HebrewCalendar::ADAR_1, 5, false, "M05L");
+ VerifyMonth(this, "cc3", cc3.getAlias(), icu::HebrewCalendar::ADAR_1, 5, false, "M05L");
+
+ cc1->set(UCAL_ORDINAL_MONTH, 4);
+ cc2->setTemporalMonthCode("M05", status);
+ if (failure(status, "setTemporalMonthCode failure")) return;
+ cc3->set(UCAL_MONTH, icu::HebrewCalendar::SHEVAT);
+ assertTrue("5782 M05 cc2==cc1 set month by UCAL_MONTH and UCAL_UCAL_ORDINAL_MONTH", cc2->equals(*cc1, status));
+ assertTrue("5782 M05 cc2==cc3 set month by UCAL_MONTH and setTemporalMonthCode", cc2->equals(*cc3, status));
+ if (failure(status, "equals failure")) return;
+ VerifyMonth(this, "cc1", cc1.getAlias(), icu::HebrewCalendar::SHEVAT, 4, false, "M05");
+ VerifyMonth(this, "cc2", cc2.getAlias(), icu::HebrewCalendar::SHEVAT, 4, false, "M05");
+ VerifyMonth(this, "cc3", cc3.getAlias(), icu::HebrewCalendar::SHEVAT, 4, false, "M05");
+
+ cc1->set(UCAL_EXTENDED_YEAR, 5781);
+ cc2->set(UCAL_EXTENDED_YEAR, 5781);
+ cc3->set(UCAL_EXTENDED_YEAR, 5781);
+ cc1->setTemporalMonthCode("M06", status);
+ if (failure(status, "setTemporalMonthCode failure")) return;
+ cc2->set(UCAL_MONTH, icu::HebrewCalendar::ADAR);
+ cc3->set(UCAL_ORDINAL_MONTH, 5);
+ assertTrue("5781 M06 cc2==cc1 set month by UCAL_MONTH and UCAL_UCAL_ORDINAL_MONTH", cc2->equals(*cc1, status));
+ assertTrue("5781 M06 cc2==cc3 set month by UCAL_MONTH and setTemporalMonthCode", cc2->equals(*cc3, status));
+ if (failure(status, "equals failure")) return;
+ VerifyMonth(this, "cc1", cc1.getAlias(), icu::HebrewCalendar::ADAR, 5, false, "M06");
+ VerifyMonth(this, "cc2", cc2.getAlias(), icu::HebrewCalendar::ADAR, 5, false, "M06");
+ VerifyMonth(this, "cc3", cc3.getAlias(), icu::HebrewCalendar::ADAR, 5, false, "M06");
+
+ cc1->set(UCAL_EXTENDED_YEAR, 5782);
+ cc2->set(UCAL_EXTENDED_YEAR, 5782);
+ cc3->set(UCAL_EXTENDED_YEAR, 5782);
+ assertTrue("5782 M06 cc2==cc1 set month by UCAL_MONTH and UCAL_UCAL_ORDINAL_MONTH", cc2->equals(*cc1, status));
+ assertTrue("5782 M06 cc2==cc3 set month by UCAL_MONTH and setTemporalMonthCode", cc2->equals(*cc3, status));
+ if (failure(status, "equals failure")) return;
+ VerifyMonth(this, "cc1", cc1.getAlias(), icu::HebrewCalendar::ADAR, 6, false, "M06");
+ VerifyMonth(this, "cc2", cc2.getAlias(), icu::HebrewCalendar::ADAR, 6, false, "M06");
+ VerifyMonth(this, "cc3", cc3.getAlias(), icu::HebrewCalendar::ADAR, 6, false, "M06");
+
+ cc1->set(UCAL_ORDINAL_MONTH, 7);
+ cc2->setTemporalMonthCode("M07", status);
+ if (failure(status, "setTemporalMonthCode failure")) return;
+ cc3->set(UCAL_MONTH, icu::HebrewCalendar::NISAN);
+ assertTrue("5782 M07 cc2==cc1 set month by UCAL_MONTH and UCAL_UCAL_ORDINAL_MONTH", cc2->equals(*cc1, status));
+ assertTrue("5782 M07 cc2==cc3 set month by UCAL_MONTH and setTemporalMonthCode", cc2->equals(*cc3, status));
+ if (failure(status, "equals failure")) return;
+ VerifyMonth(this, "cc1", cc1.getAlias(), icu::HebrewCalendar::NISAN, 7, false, "M07");
+ VerifyMonth(this, "cc2", cc2.getAlias(), icu::HebrewCalendar::NISAN, 7, false, "M07");
+ VerifyMonth(this, "cc3", cc3.getAlias(), icu::HebrewCalendar::NISAN, 7, false, "M07");
+
+ // Out of bound monthCodes should return error.
+ // These are not valid for calendar do not have a leap month
+ UErrorCode expectedStatus = U_ILLEGAL_ARGUMENT_ERROR;
+ const char* kInvalidMonthCodes[] = { "M00", "M13", "M14",
+ "M01L", "M02L", "M03L", "M04L",
+ /* M05L could be legal */
+ "M06L", "M07L", "M08L", "M09L", "M10L", "M11L", "M12L",
+ };
+
+ for (auto& cas : kInvalidMonthCodes) {
+ cc1->setTemporalMonthCode(cas, status);
+ if (status != expectedStatus) {
+ errln("setTemporalMonthCode(%s) should return U_ILLEGAL_ARGUMENT_ERROR", cas);
+ }
+ status = U_ZERO_ERROR;
+ }
+}
+
+void CalendarTest::TestCalendarAddOrdinalMonth() {
+ UErrorCode status = U_ZERO_ERROR;
+ GregorianCalendar gc(status);
+ gc.set(2022, UCAL_DECEMBER, 16);
+ Locale l(Locale::getRoot());
+ std::unique_ptr<icu::StringEnumeration> enumeration(
+ Calendar::getKeywordValuesForLocale("calendar", l, false, status));
+ for (const char* name = enumeration->next(nullptr, status);
+ U_SUCCESS(status) && name != nullptr;
+ name = enumeration->next(nullptr, status)) {
+
+ l.setKeywordValue("calendar", name, status);
+ LocalPointer<Calendar> cc1(Calendar::createInstance(l, status));
+ if (failure(status, "Construct Calendar")) return;
+
+ cc1->setTime(gc.getTime(status), status);
+ LocalPointer<Calendar> cc2(cc1->clone());
+
+ for (int i = 0; i < 8; i++) {
+ for (int j = 1; j < 8; j++) {
+ cc1->add(UCAL_MONTH, j, status);
+ cc2->add(UCAL_ORDINAL_MONTH, j, status);
+ if (failure(status, "add j")) return;
+ assertTrue("two add produce the same result", cc2->equals(*cc1, status));
+ }
+ for (int j = 1; j < 8; j++) {
+ cc1->add(UCAL_MONTH, -j, status);
+ cc2->add(UCAL_ORDINAL_MONTH, -j, status);
+ if (failure(status, "add -j")) return;
+ assertTrue("two add produce the same result", cc2->equals(*cc1, status));
+ }
+ }
+ }
+}
+
+void CalendarTest::TestCalendarRollOrdinalMonth() {
+ UErrorCode status = U_ZERO_ERROR;
+ GregorianCalendar gc(status);
+ gc.set(2022, UCAL_DECEMBER, 16);
+ Locale l(Locale::getRoot());
+ std::unique_ptr<icu::StringEnumeration> enumeration(
+ Calendar::getKeywordValuesForLocale("calendar", l, false, status));
+ for (const char* name = enumeration->next(nullptr, status);
+ U_SUCCESS(status) && name != nullptr;
+ name = enumeration->next(nullptr, status)) {
+
+ l.setKeywordValue("calendar", name, status);
+ LocalPointer<Calendar> cc1(Calendar::createInstance(l, status));
+ if (failure(status, "Construct Calendar")) return;
+
+ cc1->setTime(gc.getTime(status), status);
+ LocalPointer<Calendar> cc2(cc1->clone());
+
+ for (int i = 0; i < 8; i++) {
+ for (int j = 1; j < 8; j++) {
+ cc1->roll(UCAL_MONTH, j, status);
+ cc2->roll(UCAL_ORDINAL_MONTH, j, status);
+ if (failure(status, "roll j")) return;
+ assertTrue("two add produce the same result", cc2->equals(*cc1, status));
+ }
+ for (int j = 1; j < 8; j++) {
+ cc1->roll(UCAL_MONTH, -j, status);
+ cc2->roll(UCAL_ORDINAL_MONTH, -j, status);
+ if (failure(status, "roll -j")) return;
+ assertTrue("two add produce the same result", cc2->equals(*cc1, status));
+ }
+ for (int j = 1; j < 3; j++) {
+ cc1->roll(UCAL_MONTH, true, status);
+ cc2->roll(UCAL_ORDINAL_MONTH, true, status);
+ if (failure(status, "roll true")) return;
+ assertTrue("two add produce the same result", cc2->equals(*cc1, status));
+ }
+ for (int j = 1; j < 3; j++) {
+ cc1->roll(UCAL_MONTH, false, status);
+ cc2->roll(UCAL_ORDINAL_MONTH, false, status);
+ if (failure(status, "roll false")) return;
+ assertTrue("two add produce the same result", cc2->equals(*cc1, status));
+ }
+ }
+ }
+}
+
+void CalendarTest::TestLimitsOrdinalMonth() {
+ UErrorCode status = U_ZERO_ERROR;
+ GregorianCalendar gc(status);
+ gc.set(2022, UCAL_DECEMBER, 16);
+ Locale l(Locale::getRoot());
+ std::unique_ptr<icu::StringEnumeration> enumeration(
+ Calendar::getKeywordValuesForLocale("calendar", l, false, status));
+
+ struct Expectation {
+ const char* calendar;
+ int32_t min;
+ int32_t max;
+ int32_t greatestMin;
+ int32_t leastMax;
+ } kExpectations[] = {
+ { "gregorian", 0, 11, 0, 11 },
+ { "japanese", 0, 11, 0, 11 },
+ { "buddhist", 0, 11, 0, 11 },
+ { "roc", 0, 11, 0, 11 },
+ { "persian", 0, 11, 0, 11 },
+ { "islamic-civil", 0, 11, 0, 11 },
+ { "islamic", 0, 11, 0, 11 },
+ { "hebrew", 0, 12, 0, 11 },
+ { "chinese", 0, 12, 0, 11 },
+ { "indian", 0, 11, 0, 11 },
+ { "coptic", 0, 12, 0, 12 },
+ { "ethiopic", 0, 12, 0, 12 },
+ { "ethiopic-amete-alem", 0, 12, 0, 12 },
+ { "iso8601", 0, 11, 0, 11 },
+ { "dangi", 0, 12, 0, 11 },
+ { "islamic-umalqura", 0, 11, 0, 11 },
+ { "islamic-tbla", 0, 11, 0, 11 },
+ { "islamic-rgsa", 0, 11, 0, 11 },
+ };
+
+ for (const char* name = enumeration->next(nullptr, status);
+ U_SUCCESS(status) && name != nullptr;
+ name = enumeration->next(nullptr, status)) {
+ l.setKeywordValue("calendar", name, status);
+ LocalPointer<Calendar> cc1(Calendar::createInstance(l, status));
+ if (failure(status, "Construct Calendar")) return;
+ bool found = false;
+ for (auto& exp : kExpectations) {
+ if (uprv_strcmp(exp.calendar, name) == 0) {
+ found = true;
+ assertEquals("getMinimum(UCAL_ORDINAL_MONTH)",
+ exp.min, cc1->getMinimum(UCAL_ORDINAL_MONTH));
+ assertEquals("getMaximum(UCAL_ORDINAL_MONTH)",
+ exp.max, cc1->getMaximum(UCAL_ORDINAL_MONTH));
+ assertEquals("getMinimum(UCAL_ORDINAL_MONTH)",
+ exp.greatestMin, cc1->getGreatestMinimum(UCAL_ORDINAL_MONTH));
+ assertEquals("getMinimum(UCAL_ORDINAL_MONTH)",
+ exp.leastMax, cc1->getLeastMaximum(UCAL_ORDINAL_MONTH));
+ break;
+ }
+ }
+ if (!found) {
+ errln("Cannot find expectation");
+ }
+ }
+}
+
+void CalendarTest::TestActualLimitsOrdinalMonth() {
+ UErrorCode status = U_ZERO_ERROR;
+ GregorianCalendar gc(status);
+ gc.set(2022, UCAL_DECEMBER, 16);
+ Locale l(Locale::getRoot());
+ std::unique_ptr<icu::StringEnumeration> enumeration(
+ Calendar::getKeywordValuesForLocale("calendar", l, false, status));
+
+ struct TestCases {
+ const char* calendar;
+ int32_t extended_year;
+ int32_t actualMinOrdinalMonth;
+ int32_t actualMaxOrdinalMonth;
+ } cases[] = {
+ { "gregorian", 2021, 0, 11 },
+ { "gregorian", 2022, 0, 11 },
+ { "gregorian", 2023, 0, 11 },
+ { "japanese", 2021, 0, 11 },
+ { "japanese", 2022, 0, 11 },
+ { "japanese", 2023, 0, 11 },
+ { "buddhist", 2021, 0, 11 },
+ { "buddhist", 2022, 0, 11 },
+ { "buddhist", 2023, 0, 11 },
+ { "roc", 2021, 0, 11 },
+ { "roc", 2022, 0, 11 },
+ { "roc", 2023, 0, 11 },
+ { "persian", 1400, 0, 11 },
+ { "persian", 1401, 0, 11 },
+ { "persian", 1402, 0, 11 },
+ { "hebrew", 5782, 0, 12 },
+ { "hebrew", 5783, 0, 11 },
+ { "hebrew", 5789, 0, 11 },
+ { "hebrew", 5790, 0, 12 },
+ { "chinese", 4645, 0, 11 },
+ { "chinese", 4646, 0, 12 },
+ { "chinese", 4647, 0, 11 },
+ { "dangi", 4645 + 304, 0, 11 },
+ { "dangi", 4646 + 304, 0, 12 },
+ { "dangi", 4647 + 304, 0, 11 },
+ { "indian", 1944, 0, 11 },
+ { "indian", 1945, 0, 11 },
+ { "indian", 1946, 0, 11 },
+ { "coptic", 1737, 0, 12 },
+ { "coptic", 1738, 0, 12 },
+ { "coptic", 1739, 0, 12 },
+ { "ethiopic", 2013, 0, 12 },
+ { "ethiopic", 2014, 0, 12 },
+ { "ethiopic", 2015, 0, 12 },
+ { "ethiopic-amete-alem", 2014, 0, 12 },
+ { "ethiopic-amete-alem", 2015, 0, 12 },
+ { "ethiopic-amete-alem", 2016, 0, 12 },
+ { "iso8601", 2022, 0, 11 },
+ { "islamic-civil", 1443, 0, 11 },
+ { "islamic-civil", 1444, 0, 11 },
+ { "islamic-civil", 1445, 0, 11 },
+ { "islamic", 1443, 0, 11 },
+ { "islamic", 1444, 0, 11 },
+ { "islamic", 1445, 0, 11 },
+ { "islamic-umalqura", 1443, 0, 11 },
+ { "islamic-umalqura", 1444, 0, 11 },
+ { "islamic-umalqura", 1445, 0, 11 },
+ { "islamic-tbla", 1443, 0, 11 },
+ { "islamic-tbla", 1444, 0, 11 },
+ { "islamic-tbla", 1445, 0, 11 },
+ { "islamic-rgsa", 1443, 0, 11 },
+ { "islamic-rgsa", 1444, 0, 11 },
+ { "islamic-rgsa", 1445, 0, 11 },
+ };
+
+ for (auto& cas : cases) {
+ l.setKeywordValue("calendar", cas.calendar, status);
+ LocalPointer<Calendar> cc1(Calendar::createInstance(l, status));
+ if (failure(status, "Construct Calendar")) return;
+ cc1->set(UCAL_EXTENDED_YEAR, cas.extended_year);
+ cc1->set(UCAL_ORDINAL_MONTH, 0);
+ cc1->set(UCAL_DATE, 1);
+ assertEquals("getActualMinimum(UCAL_ORDINAL_MONTH)",
+ cas.actualMinOrdinalMonth, cc1->getActualMinimum(UCAL_ORDINAL_MONTH, status));
+ assertEquals("getActualMaximum(UCAL_ORDINAL_MONTH)",
+ cas.actualMaxOrdinalMonth, cc1->getActualMaximum(UCAL_ORDINAL_MONTH, status));
+ }
+}
+
+// The Lunar year which majorty part fall into 1889 and the early part of 1890
+// should have no leap months, but currently ICU calculate and show there is
+// a Leap month after the 12th month and before the first month of the Chinese
+// Calendar which overlapping most of the 1890 year in Gregorian.
+//
+// We use the value from
+// https://ytliu0.github.io/ChineseCalendar/table_period.html?period=qing
+// and https://ytliu0.github.io/ChineseCalendar/index_chinese.html
+// as the expected value. The same results were given by many several other
+// sites not just his one.
+//
+// There should be a Leap month after the 2nd month of the Chinese Calendar year
+// mostly overlapping with 1890 and should have no leap month in the Chinese
+// Calendar year mostly overlapping with 1889.
+void CalendarTest::TestChineseCalendarMonthInSpecialYear() {
+ UErrorCode status = U_ZERO_ERROR;
+ GregorianCalendar gc(status);
+ ChineseCalendar cal(Locale::getRoot(), status);
+ if (failure(status, "Constructor failed")) return;
+ struct TestCase {
+ int32_t gyear;
+ int32_t gmonth;
+ int32_t gdate;
+ int32_t cmonth; // 0-based month number: 1st month = 0, 2nd month = 1.
+ int32_t cdate;
+ bool cleapmonth;
+ } cases[] = {
+ // Gregorian Chinese Calendar
+ // First some recent date
+ // From https://www.hko.gov.hk/tc/gts/time/calendar/pdf/files/2022.pdf
+ { 2022, UCAL_DECEMBER, 15, 11-1, 22, false},
+ // ^-- m-1 to convert to 0-based month from 1-based.
+ // From https://www.hko.gov.hk/tc/gts/time/calendar/pdf/files/2023.pdf
+ { 2023, UCAL_MARCH, 21, 2-1, 30, false},
+ { 2023, UCAL_MARCH, 22, 2-1, 1, true},
+ // We know there are some problematic year, especially those involved
+ // the rare cases of M11L and M12L.
+ // Check 1890 and 2033.
+ //
+ // 2033 has M11L
+ // From https://www.hko.gov.hk/tc/gts/time/calendar/pdf/files/2033.pdf
+ { 2033, UCAL_DECEMBER, 21, 11-1, 30, false},
+ { 2033, UCAL_DECEMBER, 22, 11-1, 1, true},
+ // Here are the date we get from multiple external sources
+ // https://ytliu0.github.io/ChineseCalendar/index_chinese.html
+ // https://ytliu0.github.io/ChineseCalendar/table_period.html?period=qing
+ // There should have no leap 12th month in the year mostly overlapping
+ // 1889 but should have a leap 2th month in the year mostly overlapping
+ // with 1890.
+ { 1890, UCAL_JANUARY, 1, 12-1, 11, false},
+ { 1890, UCAL_JANUARY, 20, 12-1, 30, false},
+ { 1890, UCAL_JANUARY, 21, 1-1, 1, false},
+ { 1890, UCAL_FEBRUARY, 1, 1-1, 12, false},
+ { 1890, UCAL_FEBRUARY, 19, 2-1, 1, false},
+ { 1890, UCAL_MARCH, 1, 2-1, 11, false},
+ { 1890, UCAL_MARCH, 21, 2-1, 1, true},
+ { 1890, UCAL_APRIL, 1, 2-1, 12, true},
+ { 1890, UCAL_APRIL, 18, 2-1, 29, true},
+ { 1890, UCAL_APRIL, 19, 3-1, 1, false},
+ { 1890, UCAL_APRIL, 20, 3-1, 2, false},
+ };
+ for (auto& cas : cases) {
+ gc.set(cas.gyear, cas.gmonth, cas.gdate);
+ cal.setTime(gc.getTime(status), status);
+ if (failure(status, "getTime/setTime failed")) return;
+ int32_t actual_month = cal.get(UCAL_MONTH, status);
+ int32_t actual_date = cal.get(UCAL_DATE, status);
+ int32_t actual_in_leap_month = cal.get(UCAL_IS_LEAP_MONTH, status);
+ if (failure(status, "get failed")) return;
+ if (cas.cmonth != actual_month ||
+ cas.cdate != actual_date ||
+ cas.cleapmonth != (actual_in_leap_month != 0)) {
+ if (cas.gyear == 1890 &&
+ logKnownIssue("ICU-22230", "Problem between 1890/1/21 and 1890/4/18")) {
+ continue;
+ }
+ errln("Fail: Gregorian(%d/%d/%d) should be Chinese %d%s/%d but got %d%s/%d",
+ cas.gyear, cas.gmonth+1, cas.gdate,
+ cas.cmonth+1, cas.cleapmonth ? "L" : "" , cas.cdate,
+ actual_month+1, ((actual_in_leap_month != 0) ? "L" : ""), actual_date );
+ }
+ }
+}
+
+// Test the stack will not overflow with dangi calendar during "roll".
+void CalendarTest::TestDangiOverflowIsLeapMonthBetween22507() {
+ Locale locale("en@calendar=dangi");
+ UErrorCode status = U_ZERO_ERROR;
+ LocalPointer<Calendar> cal(Calendar::createInstance(
+ *TimeZone::getGMT(), locale, status));
+ cal->clear();
+ status = U_ZERO_ERROR;
+ cal->add(UCAL_MONTH, 1242972234, status);
+ status = U_ZERO_ERROR;
+ cal->roll(UCAL_MONTH, 1249790538, status);
+ status = U_ZERO_ERROR;
+ // Without the fix, the stack will overflow during this roll().
+ cal->roll(UCAL_MONTH, 1246382666, status);
+}
+
+void CalendarTest::TestFWWithISO8601() {
+ // ICU UCAL_SUNDAY is 1, UCAL_MONDAY is 2, ... UCAL_SATURDAY is 7.
+ const char *locales[] = {
+ "",
+ "en-u-ca-iso8601-fw-sun",
+ "en-u-ca-iso8601-fw-mon",
+ "en-u-ca-iso8601-fw-tue",
+ "en-u-ca-iso8601-fw-wed",
+ "en-u-ca-iso8601-fw-thu",
+ "en-u-ca-iso8601-fw-fri",
+ "en-u-ca-iso8601-fw-sat"
+ };
+ for (int i = UCAL_SUNDAY; i <= UCAL_SATURDAY; i++) {
+ UErrorCode status = U_ZERO_ERROR;
+ const char* locale = locales[i];
+ LocalPointer<Calendar> cal(
+ Calendar::createInstance(
+ Locale(locale), status), status);
+ if (failure(status, "Constructor failed")) continue;
+ std::string msg("Calendar::createInstance(\"");
+ msg = msg + locale + "\")->getFirstDayOfWeek()";
+ assertEquals(msg.c_str(), i, cal->getFirstDayOfWeek());
+ }
+}
+void CalendarTest::TestRollWeekOfYear() {
+ UErrorCode status = U_ZERO_ERROR;
+ Locale l("zh_TW@calendar=chinese");
+ LocalPointer<Calendar> cal(Calendar::createInstance(l, status), status);
+ cal->set(UCAL_EXTENDED_YEAR, -1107626);
+ cal->set(UCAL_MONTH, UCAL_JANUARY);
+ cal->set(UCAL_DATE, 1);
+ cal->roll(UCAL_WEEK_OF_YEAR, 0x7fffff, status);
+ U_ASSERT(U_SUCCESS(status));
+ cal->roll(UCAL_WEEK_OF_YEAR, 1, status);
+}
#endif /* #if !UCONFIG_NO_FORMATTING */
//eof
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/caltest.h b/Build/source/libs/icu/icu-src/source/test/intltest/caltest.h
index 7f14c89b151..23ef779408f 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/caltest.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/caltest.h
@@ -25,12 +25,12 @@ public:
* This test confirms the correct behavior of add when incrementing
* through subsequent days.
*/
- virtual void TestRog(void);
+ virtual void TestRog();
/**
* Test the handling of the day of the week, checking for correctness and
* for correct minimum and maximum values.
*/
- virtual void TestDOW943(void);
+ virtual void TestDOW943();
/**
* test subroutine use by TestDOW943
*/
@@ -38,23 +38,25 @@ public:
/**
* Confirm that cloned Calendar objects do not inadvertently share substructures.
*/
- virtual void TestClonesUnique908(void);
+ virtual void TestClonesUnique908();
/**
* Confirm that the Gregorian cutoff value works as advertised.
*/
- virtual void TestGregorianChange768(void);
+ virtual void TestGregorianChange768();
/**
* Confirm the functioning of the field disambiguation algorithm.
*/
- virtual void TestDisambiguation765(void);
+ virtual void TestDisambiguation765();
/**
* Test various API methods for API completeness.
*/
- virtual void TestGenericAPI(void); // New to C++ -- needs to be back ported to Java
+ virtual void TestGenericAPI(); // New to C++ -- needs to be back ported to Java
- virtual void TestWOY(void);
+ virtual void TestWOY();
- virtual void TestDebug(void);
+ virtual void TestDebug();
+
+ virtual void TestClearMonth();
public: // package
/**
@@ -70,7 +72,7 @@ public:
/**
* Confirm that the offset between local time and GMT behaves as expected.
*/
- virtual void TestGMTvsLocal4064654(void);
+ virtual void TestGMTvsLocal4064654();
public: // package
/**
@@ -83,15 +85,15 @@ public:
* The operations of adding and setting should not exhibit pathological
* dependence on the order of operations. This test checks for this.
*/
- virtual void TestAddSetOrder621(void);
+ virtual void TestAddSetOrder621();
/**
* Confirm that adding to various fields works.
*/
- virtual void TestAdd520(void);
+ virtual void TestAdd520();
/**
* Execute and test adding and rolling in GregorianCalendar extensively.
*/
- virtual void TestAddRollExtensive(void);
+ virtual void TestAddRollExtensive();
public: // package
// internal utility routine for checking date
@@ -108,7 +110,7 @@ public:
* Test that setting of fields works. In particular, make sure that all instances
* of GregorianCalendar don't share a static instance of the fields array.
*/
- virtual void TestFieldSet4781(void);
+ virtual void TestFieldSet4781();
/* virtual void TestSerialize337();
public: // package
@@ -121,13 +123,13 @@ public:
* Verify that the seconds of a Calendar can be zeroed out through the
* expected sequence of operations.
*/
- virtual void TestSecondsZero121(void);
+ virtual void TestSecondsZero121();
/**
* Verify that a specific sequence of adding and setting works as expected;
* it should not vary depending on when and whether the get method is
* called.
*/
- virtual void TestAddSetGet0610(void);
+ virtual void TestAddSetGet0610();
public: // package
// internal routine for checking date
@@ -137,7 +139,7 @@ public:
/**
* Verify that various fields on a known date are set correctly.
*/
- virtual void TestFields060(void);
+ virtual void TestFields060();
public: // package
static int32_t EXPECTED_FIELDS[];
@@ -148,7 +150,7 @@ public:
* Verify that various fields on a known date are set correctly. In this
* case, the start of the epoch (January 1 1970).
*/
- virtual void TestEpochStartFields(void);
+ virtual void TestEpochStartFields();
public: // package
static int32_t EPOCH_FIELDS[];
@@ -158,11 +160,11 @@ public:
* Test that the days of the week progress properly when add is called repeatedly
* for increments of 24 days.
*/
- virtual void TestDOWProgression(void);
+ virtual void TestDOWProgression();
/**
* Test newly added fields - DOW_LOCAL and YEAR_WOY
*/
- virtual void TestDOW_LOCALandYEAR_WOY(void);
+ virtual void TestDOW_LOCALandYEAR_WOY();
// test subroutine used by TestDOW_LOCALandYEAR_WOY
virtual void doYEAR_WOYLoop(Calendar *cal,
SimpleDateFormat *sdf, int32_t times, UErrorCode& status);
@@ -171,8 +173,8 @@ public:
int times, UCalendarDateFields field, UCalendarDateFields field2,
UErrorCode& errorCode);
- void TestYWOY(void);
- void TestJD(void);
+ void TestYWOY();
+ void TestJD();
void yearAddTest(Calendar& cal, UErrorCode& status);
@@ -218,33 +220,33 @@ public: // package
// internal - for other test use
public:
- void Test6703(void);
- void Test3785(void);
- void Test1624(void);
- void TestIslamicUmAlQura(void);
- void TestIslamicTabularDates(void);
+ void Test6703();
+ void Test3785();
+ void Test1624();
+ void TestIslamicUmAlQura();
+ void TestIslamicTabularDates();
/**
* Test the time stamp array recalculation during heavy Calendar usage
*/
- void TestTimeStamp(void);
+ void TestTimeStamp();
/**
* Test the ISO8601 calendar type
*/
- void TestISO8601(void);
+ void TestISO8601();
/**
* Test cases for [set|get][Repeated|Skipped]WallTimeOption
*/
- void TestAmbiguousWallTimeAPIs(void);
- void TestRepeatedWallTime(void);
- void TestSkippedWallTime(void);
+ void TestAmbiguousWallTimeAPIs();
+ void TestRepeatedWallTime();
+ void TestSkippedWallTime();
- void TestCloneLocale(void);
+ void TestCloneLocale();
- void TestTimeZoneInLocale(void);
+ void TestTimeZoneInLocale();
- void TestHebrewMonthValidation(void);
+ void TestHebrewMonthValidation();
/*
* utility methods for TestIslamicUmAlQura
@@ -252,11 +254,91 @@ public: // package
void setAndTestCalendar(Calendar* cal, int32_t initMonth, int32_t initDay, int32_t initYear, UErrorCode& status);
void setAndTestWholeYear(Calendar* cal, int32_t startYear, UErrorCode& status);
- void TestWeekData(void);
-
- void TestAddAcrossZoneTransition(void);
-
- void TestChineseCalendarMapping(void);
+ void TestWeekData();
+
+ void TestAddAcrossZoneTransition();
+
+ void TestChineseCalendarMapping();
+
+ void TestBasicConversionGregorian();
+ void TestBasicConversionISO8601();
+ void TestBasicConversionJapanese();
+ void TestBasicConversionBuddhist();
+ void TestBasicConversionTaiwan();
+ void TestBasicConversionPersian();
+ void TestBasicConversionIslamic();
+ void TestBasicConversionIslamicTBLA();
+ void TestBasicConversionIslamicCivil();
+ void TestBasicConversionIslamicRGSA();
+ void TestBasicConversionIslamicUmalqura();
+ void TestBasicConversionHebrew();
+ void TestBasicConversionChinese();
+ void TestBasicConversionDangi();
+ void TestBasicConversionIndian();
+ void TestBasicConversionCoptic();
+ void TestBasicConversionEthiopic();
+ void TestBasicConversionEthiopicAmeteAlem();
+
+ void AsssertCalendarFieldValue(
+ Calendar* cal, double time, const char* type,
+ int32_t era, int32_t year, int32_t month, int32_t week_of_year,
+ int32_t week_of_month, int32_t date, int32_t day_of_year, int32_t day_of_week,
+ int32_t day_of_week_in_month, int32_t am_pm, int32_t hour, int32_t hour_of_day,
+ int32_t minute, int32_t second, int32_t millisecond, int32_t zone_offset,
+ int32_t dst_offset, int32_t year_woy, int32_t dow_local, int32_t extended_year,
+ int32_t julian_day, int32_t milliseconds_in_day, int32_t is_leap_month);
+
+ void TestChineseCalendarMonthInSpecialYear();
+ void TestGregorianCalendarInTemporalLeapYear();
+ void TestChineseCalendarInTemporalLeapYear();
+ void TestDangiCalendarInTemporalLeapYear();
+ void TestHebrewCalendarInTemporalLeapYear();
+ void TestIslamicCalendarInTemporalLeapYear();
+ void TestIslamicCivilCalendarInTemporalLeapYear();
+ void TestIslamicUmalquraCalendarInTemporalLeapYear();
+ void TestIslamicRGSACalendarInTemporalLeapYear();
+ void TestIslamicTBLACalendarInTemporalLeapYear();
+ void TestPersianCalendarInTemporalLeapYear();
+ void TestIndianCalendarInTemporalLeapYear();
+ void TestTaiwanCalendarInTemporalLeapYear();
+ void TestJapaneseCalendarInTemporalLeapYear();
+ void TestBuddhistCalendarInTemporalLeapYear();
+ void TestCopticCalendarInTemporalLeapYear();
+ void TestEthiopicCalendarInTemporalLeapYear();
+ void TestEthiopicAmeteAlemCalendarInTemporalLeapYear();
+
+ void TestChineseCalendarGetTemporalMonthCode();
+ void TestDangiCalendarGetTemporalMonthCode();
+ void TestHebrewCalendarGetTemporalMonthCode();
+ void TestCopticCalendarGetTemporalMonthCode();
+ void TestEthiopicCalendarGetTemporalMonthCode();
+ void TestEthiopicAmeteAlemCalendarGetTemporalMonthCode();
+
+ void TestGregorianCalendarSetTemporalMonthCode();
+ void TestChineseCalendarSetTemporalMonthCode();
+ void TestHebrewCalendarSetTemporalMonthCode();
+ void TestCopticCalendarSetTemporalMonthCode();
+ void TestEthiopicCalendarSetTemporalMonthCode();
+
+ void TestMostCalendarsOrdinalMonthSet();
+ void TestChineseCalendarOrdinalMonthSet();
+ void TestDangiCalendarOrdinalMonthSet();
+ void TestHebrewCalendarOrdinalMonthSet();
+
+ void TestCalendarAddOrdinalMonth();
+ void TestCalendarRollOrdinalMonth();
+ void TestLimitsOrdinalMonth();
+ void TestActualLimitsOrdinalMonth();
+ void TestDangiOverflowIsLeapMonthBetween22507();
+
+ void TestFWWithISO8601();
+ void TestRollWeekOfYear();
+
+ void RunChineseCalendarInTemporalLeapYearTest(Calendar* cal);
+ void RunIslamicCalendarInTemporalLeapYearTest(Calendar* cal);
+ void Run366DaysIsLeapYearCalendarInTemporalLeapYearTest(Calendar* cal);
+ void RunChineseCalendarGetTemporalMonthCode(Calendar* cal);
+ void RunCECalendarGetTemporalMonthCode(Calendar* cal);
};
#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/caltztst.h b/Build/source/libs/icu/icu-src/source/test/intltest/caltztst.h
index c4f31e1d65f..5192ffbd996 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/caltztst.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/caltztst.h
@@ -54,10 +54,10 @@ protected:
// the 'get()' functions are not static because they can call errln().
// they are effectively static otherwise.
- DateFormat* getDateFormat(void);
+ DateFormat* getDateFormat();
static void releaseDateFormat(DateFormat *f);
- Calendar* getCalendar(void);
+ Calendar* getCalendar();
static void releaseCalendar(Calendar *c);
};
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/canittst.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/canittst.cpp
index 20f63774ec7..41fafb2aa0f 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/canittst.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/canittst.cpp
@@ -53,17 +53,17 @@ static UnicodeString str(const char *input)
CanonicalIteratorTest::CanonicalIteratorTest() :
-nameTrans(NULL), hexTrans(NULL)
+nameTrans(nullptr), hexTrans(nullptr)
{
}
CanonicalIteratorTest::~CanonicalIteratorTest()
{
#if !UCONFIG_NO_TRANSLITERATION
- if(nameTrans != NULL) {
+ if(nameTrans != nullptr) {
delete(nameTrans);
}
- if(hexTrans != NULL) {
+ if(hexTrans != nullptr) {
delete(hexTrans);
}
#endif
@@ -224,14 +224,14 @@ UnicodeString CanonicalIteratorTest::getReadable(const UnicodeString &s) {
// set up for readable display
#if !UCONFIG_NO_TRANSLITERATION
if(verbose) {
- if (nameTrans == NULL)
+ if (nameTrans == nullptr)
nameTrans = Transliterator::createInstance("[^\\ -\\u007F] name", UTRANS_FORWARD, status);
UnicodeString sName = s;
nameTrans->transliterate(sName);
result += sName;
result += ";";
}
- if (hexTrans == NULL)
+ if (hexTrans == nullptr)
hexTrans = Transliterator::createInstance("[^\\ -\\u007F] hex", UTRANS_FORWARD, status);
#endif
UnicodeString sHex = s;
@@ -248,8 +248,8 @@ UnicodeString CanonicalIteratorTest::getReadable(const UnicodeString &s) {
U_CFUNC int U_CALLCONV
compareUnicodeStrings(const void *s1, const void *s2) {
- UnicodeString **st1 = (UnicodeString **)s1;
- UnicodeString **st2 = (UnicodeString **)s2;
+ UnicodeString **st1 = static_cast<UnicodeString **>(const_cast<void*>(s1));
+ UnicodeString **st2 = static_cast<UnicodeString **>(const_cast<void*>(s2));
return (*st1)->compare(**st2);
}
@@ -263,14 +263,14 @@ UnicodeString CanonicalIteratorTest::collectionToString(Hashtable *col) {
UnicodeString **resArray = new UnicodeString*[col->count()];
int32_t i = 0;
- const UHashElement *ne = NULL;
+ const UHashElement *ne = nullptr;
int32_t el = UHASH_FIRST;
//Iterator it = basic.iterator();
ne = col->nextElement(el);
//while (it.hasNext())
- while (ne != NULL) {
+ while (ne != nullptr) {
//String item = (String) it.next();
- UnicodeString *item = (UnicodeString *)(ne->value.pointer);
+ UnicodeString *item = static_cast<UnicodeString *>(ne->value.pointer);
resArray[i++] = item;
ne = col->nextElement(el);
}
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/canittst.h b/Build/source/libs/icu/icu-src/source/test/intltest/canittst.h
index a8b893e5b6b..704b876c394 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/canittst.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/canittst.h
@@ -38,10 +38,10 @@ public:
CanonicalIteratorTest();
virtual ~CanonicalIteratorTest();
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
- void TestCanonicalIterator(void);
- void TestExhaustive(void);
+ void TestCanonicalIterator();
+ void TestExhaustive();
void TestBasic();
void TestAPI();
UnicodeString collectionToString(Hashtable *col);
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/citrtest.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/citrtest.cpp
index 0ae4fce71b7..5ca90dd337d 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/citrtest.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/citrtest.cpp
@@ -46,10 +46,10 @@ public:
virtual void getText(UnicodeString& result) override {
text.extract(0,text.length(),result);
}
- static UClassID getStaticClassID(void){
+ static UClassID getStaticClassID(){
return (UClassID)(&fgClassID);
}
- virtual UClassID getDynamicClassID(void) const override {
+ virtual UClassID getDynamicClassID() const override {
return getStaticClassID();
}
@@ -57,26 +57,26 @@ public:
return true;
}
- virtual SCharacterIterator* clone(void) const override {
- return NULL;
+ virtual SCharacterIterator* clone() const override {
+ return nullptr;
}
- virtual int32_t hashCode(void) const override {
+ virtual int32_t hashCode() const override {
return DONE;
}
- virtual UChar nextPostInc(void) override { return text.charAt(pos++);}
- virtual UChar32 next32PostInc(void) override {return text.char32At(pos++);}
+ virtual char16_t nextPostInc() override { return text.charAt(pos++);}
+ virtual UChar32 next32PostInc() override {return text.char32At(pos++);}
virtual UBool hasNext() override { return true;}
- virtual UChar first() override {return DONE;}
+ virtual char16_t first() override {return DONE;}
virtual UChar32 first32() override {return DONE;}
- virtual UChar last() override {return DONE;}
+ virtual char16_t last() override {return DONE;}
virtual UChar32 last32() override {return DONE;}
- virtual UChar setIndex(int32_t /*pos*/) override {return DONE;}
+ virtual char16_t setIndex(int32_t /*pos*/) override {return DONE;}
virtual UChar32 setIndex32(int32_t /*pos*/) override {return DONE;}
- virtual UChar current() const override {return DONE;}
+ virtual char16_t current() const override {return DONE;}
virtual UChar32 current32() const override {return DONE;}
- virtual UChar next() override {return DONE;}
+ virtual char16_t next() override {return DONE;}
virtual UChar32 next32() override {return DONE;}
- virtual UChar previous() override {return DONE;}
+ virtual char16_t previous() override {return DONE;}
virtual UChar32 previous32() override {return DONE;}
virtual int32_t move(int32_t delta,CharacterIterator::EOrigin origin) override {
switch(origin) {
@@ -241,7 +241,7 @@ void CharIterTest::TestConstructionAndEquality() {
if (*test1 != *test2 || *test1 == *test5)
errln("setIndex() failed");
- *((StringCharacterIterator*)test1) = *((StringCharacterIterator*)test3);
+ *(test1) = *(dynamic_cast<StringCharacterIterator*>(test3));
if (*test1 != *test3 || *test1 == *test5)
errln("operator= failed");
@@ -378,7 +378,7 @@ void CharIterTest::TestConstructionAndEqualityUChariter() {
void CharIterTest::TestIteration() {
UnicodeString text("Now is the time for all good men to come to the aid of their country.");
- UChar c;
+ char16_t c;
int32_t i;
{
StringCharacterIterator iter(text, 5);
@@ -550,7 +550,7 @@ void CharIterTest::TestIteration() {
//Tests for new API for utf-16 support
void CharIterTest::TestIterationUChar32() {
- UChar textChars[]={ 0x0061, 0x0062, 0xd841, 0xdc02, 0x20ac, 0xd7ff, 0xd842, 0xdc06, 0xd801, 0xdc00, 0x0061, 0x0000};
+ char16_t textChars[]={ 0x0061, 0x0062, 0xd841, 0xdc02, 0x20ac, 0xd7ff, 0xd842, 0xdc06, 0xd801, 0xdc00, 0x0061, 0x0000};
UnicodeString text(textChars);
UChar32 c;
int32_t i;
@@ -947,13 +947,13 @@ void CharIterTest::TestUCharIterator() {
/* Testing function coverage on bad input */
UErrorCode status = U_ZERO_ERROR;
- uiter_setString(&sIter, NULL, 1);
+ uiter_setString(&sIter, nullptr, 1);
uiter_setState(&sIter, 1, &status);
if (status != U_UNSUPPORTED_ERROR) {
errln("error: uiter_setState returned %s instead of U_UNSUPPORTED_ERROR", u_errorName(status));
}
status = U_ZERO_ERROR;
- uiter_setState(NULL, 1, &status);
+ uiter_setState(nullptr, 1, &status);
if (status != U_ILLEGAL_ARGUMENT_ERROR) {
errln("error: uiter_setState returned %s instead of U_ILLEGAL_ARGUMENT_ERROR", u_errorName(status));
}
@@ -976,7 +976,7 @@ public:
}
// useful stuff, mostly dummy but testing coverage and subclassability
- virtual UChar nextPostInc() override {
+ virtual char16_t nextPostInc() override {
if(pos<UPRV_LENGTHOF(s)) {
return s[pos++];
} else {
@@ -998,7 +998,7 @@ public:
return pos<UPRV_LENGTHOF(s);
}
- virtual UChar first() override {
+ virtual char16_t first() override {
pos=0;
return s[0];
}
@@ -1011,7 +1011,7 @@ public:
return c;
}
- virtual UChar setIndex(int32_t position) override {
+ virtual char16_t setIndex(int32_t position) override {
if(0<=position && position<=UPRV_LENGTHOF(s)) {
pos=position;
if(pos<UPRV_LENGTHOF(s)) {
@@ -1033,7 +1033,7 @@ public:
return DONE;
}
- virtual UChar current() const override {
+ virtual char16_t current() const override {
if(pos<UPRV_LENGTHOF(s)) {
return s[pos];
} else {
@@ -1051,7 +1051,7 @@ public:
}
}
- virtual UChar next() override {
+ virtual char16_t next() override {
if(pos<UPRV_LENGTHOF(s) && ++pos<UPRV_LENGTHOF(s)) {
return s[pos];
} else {
@@ -1093,10 +1093,10 @@ public:
}
virtual CharacterIterator *clone() const override {
- return NULL;
+ return nullptr;
}
- virtual UChar last() override {
+ virtual char16_t last() override {
return 0;
}
@@ -1104,7 +1104,7 @@ public:
return 0;
}
- virtual UChar previous() override {
+ virtual char16_t previous() override {
return 0;
}
@@ -1131,7 +1131,7 @@ public:
private:
// dummy string data
- UChar s[4];
+ char16_t s[4];
static const char fgClassID;
};
@@ -1152,10 +1152,10 @@ public:
}
private:
- static const UChar u[3];
+ static const char16_t u[3];
};
-const UChar SubUCharCharIter::u[3]={ 0x61, 0x62, 0x63 };
+const char16_t SubUCharCharIter::u[3]={ 0x61, 0x62, 0x63 };
void CharIterTest::TestCharIteratorSubClasses() {
SubCharIter *p;
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/citrtest.h b/Build/source/libs/icu/icu-src/source/test/intltest/citrtest.h
index 9c4f3bf23d7..24c1cdebd7c 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/citrtest.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/citrtest.h
@@ -19,24 +19,24 @@ class CharIterTest: public IntlTest {
public:
CharIterTest();
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
/**
* Test Constructors and operators ==, != and a few other methods
**/
- void TestConstructionAndEquality(void);
+ void TestConstructionAndEquality();
/**
* Test Constructors and operators ==, != and a few other methods for UChariter
**/
- void TestConstructionAndEqualityUChariter(void);
+ void TestConstructionAndEqualityUChariter();
/**
* test the iteration functionality in different ways
**/
- void TestIteration(void);
+ void TestIteration();
/**
* test the iteration functionality in different ways with unicodestring of UChar32's
**/
- void TestIterationUChar32(void);
+ void TestIterationUChar32();
void TestUCharIterator();
void TestUCharIterator(UCharIterator *iter, CharacterIterator &ci, const char *moves, const char *which);
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/collationtest.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/collationtest.cpp
index 671086e8ac4..4439dc2f7e1 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/collationtest.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/collationtest.cpp
@@ -58,15 +58,15 @@ class CodePointIterator;
class CollationTest : public IntlTest {
public:
CollationTest()
- : fcd(NULL), nfd(NULL),
+ : fcd(nullptr), nfd(nullptr),
fileLineNumber(0),
- coll(NULL) {}
+ coll(nullptr) {}
~CollationTest() {
delete coll;
}
- void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=NULL) override;
+ void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=nullptr) override;
void TestMinMax();
void TestImplicits();
@@ -80,6 +80,7 @@ public:
void TestDataDriven();
void TestLongLocale();
void TestBuilderContextsOverflow();
+ void TestHang22414();
private:
void checkFCD(const char *name, CollationIterator &ci, CodePointIterator &cpi);
@@ -91,9 +92,9 @@ private:
static UnicodeString printCollationKey(const CollationKey &key);
// Helpers & fields for data-driven test.
- static UBool isCROrLF(UChar c) { return c == 0xa || c == 0xd; }
- static UBool isSpace(UChar c) { return c == 9 || c == 0x20 || c == 0x3000; }
- static UBool isSectionStarter(UChar c) { return c == 0x25 || c == 0x2a || c == 0x40; } // %*@
+ static UBool isCROrLF(char16_t c) { return c == 0xa || c == 0xd; }
+ static UBool isSpace(char16_t c) { return c == 9 || c == 0x20 || c == 0x3000; }
+ static UBool isSectionStarter(char16_t c) { return c == 0x25 || c == 0x2a || c == 0x40; } // %*@
int32_t skipSpaces(int32_t i) {
while(isSpace(fileLine[i])) { ++i; }
return i;
@@ -110,13 +111,13 @@ private:
UBool needsNormalization(const UnicodeString &s, UErrorCode &errorCode) const;
- UBool getSortKeyParts(const UChar *s, int32_t length,
+ UBool getSortKeyParts(const char16_t *s, int32_t length,
CharString &dest, int32_t partSize,
IcuTestErrorCode &errorCode);
UBool getCollationKey(const char *norm, const UnicodeString &line,
- const UChar *s, int32_t length,
+ const char16_t *s, int32_t length,
CollationKey &key, IcuTestErrorCode &errorCode);
- UBool getMergedCollationKey(const UChar *s, int32_t length,
+ UBool getMergedCollationKey(const char16_t *s, int32_t length,
CollationKey &key, IcuTestErrorCode &errorCode);
UBool checkCompareTwo(const char *norm, const UnicodeString &prevFileLine,
const UnicodeString &prevString, const UnicodeString &s,
@@ -152,6 +153,7 @@ void CollationTest::runIndexedTest(int32_t index, UBool exec, const char *&name,
TESTCASE_AUTO(TestDataDriven);
TESTCASE_AUTO(TestLongLocale);
TESTCASE_AUTO(TestBuilderContextsOverflow);
+ TESTCASE_AUTO(TestHang22414);
TESTCASE_AUTO_END;
}
@@ -164,12 +166,12 @@ void CollationTest::TestMinMax() {
return;
}
RuleBasedCollator *rbc = dynamic_cast<RuleBasedCollator *>(coll);
- if(rbc == NULL) {
+ if(rbc == nullptr) {
errln("the root collator is not a RuleBasedCollator");
return;
}
- static const UChar s[2] = { 0xfffe, 0xffff };
+ static const char16_t s[2] = { 0xfffe, 0xffff };
UVector64 ces(errorCode);
rbc->internalGetCEs(UnicodeString(false, s, 2), ces, errorCode);
errorCode.assertSuccess();
@@ -200,7 +202,7 @@ void CollationTest::TestImplicits() {
// Implicit primary weights should be assigned for the following sets,
// and sort in ascending order by set and then code point.
- // See http://www.unicode.org/reports/tr10/#Implicit_Weights
+ // See https://www.unicode.org/reports/tr10/#Implicit_Weights
// core Han Unified Ideographs
UnicodeSet coreHan("[\\p{unified_ideograph}&"
@@ -219,9 +221,21 @@ void CollationTest::TestImplicits() {
// the Unihan radical-stroke order.
// The tests should pass either way, so we only test the order of a small set of Han characters
// whose radical-stroke order is the same as their code point order.
+ //
+ // When the radical-stroke data (kRSUnicode) for one of these characters changes
+ // such that it no longer sorts in code point order,
+ // then we need to remove it from this set.
+ // (These changes are easiest to see in the change history of the Unicode Tools file
+ // unicodetools/data/ucd/dev/Unihan/kRSUnicode.txt.)
+ // For example, in Unicode 15.1, U+503B has a kRSUnicode value of 9.9
+ // while the neighboring characters still have 9.8. We remove the out-of-order U+503B.
+ //
+ // FYI: The Unicode Tools program GenerateUnihanCollators prints something like
+ // hanInCPOrder = [一-世丘-丫中-丼举-么乊-ä¹ ä¹£-äº...é¼¢-齡齣-é¾é¾‘-é¾¥]
+ // number of original-Unihan characters out of order: 318
UnicodeSet someHanInCPOrder(
- "[\\u4E00-\\u4E16\\u4E18-\\u4E2B\\u4E2D-\\u4E3C\\u4E3E-\\u4E48"
- "\\u4E4A-\\u4E60\\u4E63-\\u4E8F\\u4E91-\\u4F63\\u4F65-\\u50F1\\u50F3-\\u50F6]",
+ u"[\u4E00-\u4E16\u4E18-\u4E2B\u4E2D-\u4E3C\u4E3E-\u4E48"
+ u"\u4E4A-\u4E60\u4E63-\u4E8F\u4E91-\u4F63\u4F65-\u503A\u503C-\u50F1\u50F3-\u50F6]",
errorCode);
UnicodeSet inOrder(someHanInCPOrder);
inOrder.addAll(unassigned).freeze();
@@ -229,10 +243,12 @@ void CollationTest::TestImplicits() {
return;
}
const UnicodeSet *sets[] = { &coreHan, &otherHan, &unassigned };
+ const char *const setNames[] = { "core Han", "Han extensions", "unassigned" };
UChar32 prev = 0;
uint32_t prevPrimary = 0;
- UTF16CollationIterator ci(cd, false, NULL, NULL, NULL);
+ UTF16CollationIterator ci(cd, false, nullptr, nullptr, nullptr);
for(int32_t i = 0; i < UPRV_LENGTHOF(sets); ++i) {
+ const char *setName = setNames[i];
LocalPointer<UnicodeSetIterator> iter(new UnicodeSetIterator(*sets[i]));
while(iter->next()) {
UChar32 c = iter->getCodepoint();
@@ -244,18 +260,19 @@ void CollationTest::TestImplicits() {
return;
}
if(ce == Collation::NO_CE || ce2 != Collation::NO_CE) {
- errln("CollationIterator.nextCE(U+%04lx) did not yield exactly one CE", (long)c);
+ errln("%s: CollationIterator.nextCE(U+%04lx) did not yield exactly one CE",
+ setName, (long)c);
continue;
}
if((ce & 0xffffffff) != Collation::COMMON_SEC_AND_TER_CE) {
- errln("CollationIterator.nextCE(U+%04lx) has non-common sec/ter weights: %08lx",
- (long)c, (long)(ce & 0xffffffff));
+ errln("%s: CollationIterator.nextCE(U+%04lx) has non-common sec/ter weights: %08lx",
+ setName, (long)c, (long)(ce & 0xffffffff));
continue;
}
uint32_t primary = (uint32_t)(ce >> 32);
if(!(primary > prevPrimary) && inOrder.contains(c) && inOrder.contains(prev)) {
- errln("CE(U+%04lx)=%04lx.. not greater than CE(U+%04lx)=%04lx..",
- (long)c, (long)primary, (long)prev, (long)prevPrimary);
+ errln("%s: CE(U+%04lx)=%04lx.. not greater than CE(U+%04lx)=%04lx..",
+ setName, (long)c, (long)primary, (long)prev, (long)prevPrimary);
}
prev = c;
prevPrimary = primary;
@@ -270,10 +287,10 @@ void CollationTest::TestNulTerminated() {
return;
}
- static const UChar s[] = { 0x61, 0x62, 0x61, 0x62, 0 };
+ static const char16_t s[] = { 0x61, 0x62, 0x61, 0x62, 0 };
UTF16CollationIterator ci1(data, false, s, s, s + 2);
- UTF16CollationIterator ci2(data, false, s + 2, s + 2, NULL);
+ UTF16CollationIterator ci2(data, false, s + 2, s + 2, nullptr);
for(int32_t i = 0;; ++i) {
int64_t ce1 = ci1.nextCE(errorCode);
int64_t ce2 = ci2.nextCE(errorCode);
@@ -450,7 +467,7 @@ void CollationTest::TestFCD() {
}
// Input string, not FCD, NUL-terminated.
- static const UChar s[] = {
+ static const char16_t s[] = {
0x308, 0xe1, 0x62, 0x301, 0x327, 0x430, 0x62,
U16_LEAD(0x1D15F), U16_TRAIL(0x1D15F), // MUSICAL SYMBOL QUARTER NOTE=1D158 1D165, ccc=0, 216
0x327, 0x308, // ccc=202, 230
@@ -477,7 +494,7 @@ void CollationTest::TestFCD() {
0x4e00, 0xf71, 0xf80
};
- FCDUTF16CollationIterator u16ci(data, false, s, s, NULL);
+ FCDUTF16CollationIterator u16ci(data, false, s, s, nullptr);
if(errorCode.errIfFailureAndReset("FCDUTF16CollationIterator constructor")) {
return;
}
@@ -872,7 +889,7 @@ void CollationTest::TestTailoredElements() {
}
CollationRootElements rootElements(root->rootElements, root->rootElementsLength);
- UHashtable *prevLocales = uhash_open(uhash_hashChars, uhash_compareChars, NULL, errorCode);
+ UHashtable *prevLocales = uhash_open(uhash_hashChars, uhash_compareChars, nullptr, errorCode);
if(errorCode.errIfFailureAndReset("failed to create a hash table")) {
return;
}
@@ -892,7 +909,7 @@ void CollationTest::TestTailoredElements() {
Collator::getKeywordValuesForLocale("collation", locale, false, errorCode));
errorCode.assertSuccess();
const char *type; // first: default type
- while((type = types->next(NULL, errorCode)) != NULL) {
+ while((type = types->next(nullptr, errorCode)) != nullptr) {
if(strncmp(type, "private-", 8) == 0) {
errln("Collator::getKeywordValuesForLocale(%s) returns private collation keyword: %s",
localeID, type);
@@ -914,7 +931,7 @@ void CollationTest::TestTailoredElements() {
logln("TestTailoredElements(): requested %s -> actual %s",
localeWithType.getName(), actual.getName());
RuleBasedCollator *rbc = dynamic_cast<RuleBasedCollator *>(coll.getAlias());
- if(rbc == NULL) {
+ if(rbc == nullptr) {
continue;
}
// Note: It would be better to get tailored strings such that we can
@@ -943,19 +960,19 @@ void CollationTest::TestTailoredElements() {
}
}
}
- } while((localeID = locales->next(NULL, errorCode)) != NULL);
+ } while((localeID = locales->next(nullptr, errorCode)) != nullptr);
uhash_close(prevLocales);
}
UnicodeString CollationTest::printSortKey(const uint8_t *p, int32_t length) {
UnicodeString s;
for(int32_t i = 0; i < length; ++i) {
- if(i > 0) { s.append((UChar)0x20); }
+ if(i > 0) { s.append((char16_t)0x20); }
uint8_t b = p[i];
if(b == 0) {
- s.append((UChar)0x2e); // period
+ s.append((char16_t)0x2e); // period
} else if(b == 1) {
- s.append((UChar)0x7c); // vertical bar
+ s.append((char16_t)0x7c); // vertical bar
} else {
appendHex(b, 2, s);
}
@@ -972,15 +989,15 @@ UnicodeString CollationTest::printCollationKey(const CollationKey &key) {
UBool CollationTest::readNonEmptyLine(UCHARBUF *f, IcuTestErrorCode &errorCode) {
for(;;) {
int32_t lineLength;
- const UChar *line = ucbuf_readline(f, &lineLength, errorCode);
- if(line == NULL || errorCode.isFailure()) {
+ const char16_t *line = ucbuf_readline(f, &lineLength, errorCode);
+ if(line == nullptr || errorCode.isFailure()) {
fileLine.remove();
return false;
}
++fileLineNumber;
// Strip trailing CR/LF, comments, and spaces.
- const UChar *comment = u_memchr(line, 0x23, lineLength); // '#'
- if(comment != NULL) {
+ const char16_t *comment = u_memchr(line, 0x23, lineLength); // '#'
+ if(comment != nullptr) {
lineLength = (int32_t)(comment - line);
} else {
while(lineLength > 0 && isCROrLF(line[lineLength - 1])) { --lineLength; }
@@ -999,7 +1016,7 @@ void CollationTest::parseString(int32_t &start, UnicodeString &prefix, UnicodeSt
int32_t length = fileLine.length();
int32_t i;
for(i = start; i < length && !isSpace(fileLine[i]); ++i) {}
- int32_t pipeIndex = fileLine.indexOf((UChar)0x7c, start, i - start); // '|'
+ int32_t pipeIndex = fileLine.indexOf((char16_t)0x7c, start, i - start); // '|'
if(pipeIndex >= 0) {
prefix = fileLine.tempSubStringBetween(start, pipeIndex).unescape();
if(prefix.isEmpty()) {
@@ -1026,7 +1043,7 @@ Collation::Level CollationTest::parseRelationAndString(UnicodeString &s, IcuTest
Collation::Level relation;
int32_t start;
if(fileLine[0] == 0x3c) { // <
- UChar second = fileLine[1];
+ char16_t second = fileLine[1];
start = 2;
switch(second) {
case 0x31: // <1
@@ -1118,7 +1135,7 @@ void CollationTest::parseAndSetAttribute(IcuTestErrorCode &errorCode) {
// Parse attributes even if the Collator could not be created,
// in order to report syntax errors.
int32_t start = skipSpaces(1);
- int32_t equalPos = fileLine.indexOf((UChar)0x3d);
+ int32_t equalPos = fileLine.indexOf((char16_t)0x3d);
if(equalPos < 0) {
if(fileLine.compare(start, 7, UNICODE_STRING("reorder", 7)) == 0) {
parseAndSetReorderCodes(start + 7, errorCode);
@@ -1148,7 +1165,7 @@ void CollationTest::parseAndSetAttribute(IcuTestErrorCode &errorCode) {
errorCode.set(U_PARSE_ERROR);
return;
}
- if(coll != NULL) {
+ if(coll != nullptr) {
coll->setMaxVariable(max, errorCode);
if(errorCode.isFailure()) {
errln("setMaxVariable() failed on line %d: %s",
@@ -1189,7 +1206,7 @@ void CollationTest::parseAndSetAttribute(IcuTestErrorCode &errorCode) {
}
}
- if(coll != NULL) {
+ if(coll != nullptr) {
coll->setAttribute(attr, value, errorCode);
if(errorCode.isFailure()) {
errln("illegal attribute=value combination on line %d: %s",
@@ -1223,7 +1240,7 @@ void CollationTest::parseAndSetReorderCodes(int32_t start, IcuTestErrorCode &err
reorderCodes.addElement(code, errorCode);
start = limit;
}
- if(coll != NULL) {
+ if(coll != nullptr) {
coll->setReorderCodes(reorderCodes.getBuffer(), reorderCodes.size(), errorCode);
if(errorCode.isFailure()) {
errln("setReorderCodes() failed on line %d: %s",
@@ -1247,7 +1264,7 @@ void CollationTest::buildTailoring(UCHARBUF *f, IcuTestErrorCode &errorCode) {
UnicodeString reason;
delete coll;
coll = new RuleBasedCollator(rules, parseError, reason, errorCode);
- if(coll == NULL) {
+ if(coll == nullptr) {
errln("unable to allocate a new collator");
errorCode.set(U_MEMORY_ALLOCATION_ERROR);
return;
@@ -1261,7 +1278,7 @@ void CollationTest::buildTailoring(UCHARBUF *f, IcuTestErrorCode &errorCode) {
parseError.preContext + "(!)" + parseError.postContext + "...");
}
delete coll;
- coll = NULL;
+ coll = nullptr;
errorCode.reset();
} else {
assertEquals("no error reason when RuleBasedCollator(rules) succeeds",
@@ -1282,10 +1299,10 @@ void CollationTest::setRootCollator(IcuTestErrorCode &errorCode) {
void CollationTest::setLocaleCollator(IcuTestErrorCode &errorCode) {
if(errorCode.isFailure()) { return; }
delete coll;
- coll = NULL;
- int32_t at = fileLine.indexOf((UChar)0x40, 9); // @ is not invariant
+ coll = nullptr;
+ int32_t at = fileLine.indexOf((char16_t)0x40, 9); // @ is not invariant
if(at >= 0) {
- fileLine.setCharAt(at, (UChar)0x2a); // *
+ fileLine.setCharAt(at, (char16_t)0x2a); // *
}
CharString localeID;
localeID.appendInvariantChars(fileLine.tempSubString(9), errorCode);
@@ -1307,7 +1324,7 @@ void CollationTest::setLocaleCollator(IcuTestErrorCode &errorCode) {
locale.getName(), (int)fileLineNumber);
infoln(fileLine);
delete coll;
- coll = NULL;
+ coll = nullptr;
errorCode.reset();
}
}
@@ -1319,16 +1336,16 @@ UBool CollationTest::needsNormalization(const UnicodeString &s, UErrorCode &erro
// those composites must be decomposed.
// Check if s contains 0F71 immediately followed by 0F73 or 0F75 or 0F81.
int32_t index = 0;
- while((index = s.indexOf((UChar)0xf71, index)) >= 0) {
+ while((index = s.indexOf((char16_t)0xf71, index)) >= 0) {
if(++index < s.length()) {
- UChar c = s[index];
+ char16_t c = s[index];
if(c == 0xf73 || c == 0xf75 || c == 0xf81) { return true; }
}
}
return false;
}
-UBool CollationTest::getSortKeyParts(const UChar *s, int32_t length,
+UBool CollationTest::getSortKeyParts(const char16_t *s, int32_t length,
CharString &dest, int32_t partSize,
IcuTestErrorCode &errorCode) {
if(errorCode.isFailure()) { return false; }
@@ -1352,7 +1369,7 @@ UBool CollationTest::getSortKeyParts(const UChar *s, int32_t length,
}
UBool CollationTest::getCollationKey(const char *norm, const UnicodeString &line,
- const UChar *s, int32_t length,
+ const char16_t *s, int32_t length,
CollationKey &key, IcuTestErrorCode &errorCode) {
if(errorCode.isFailure()) { return false; }
coll->getCollationKey(s, length, key, errorCode);
@@ -1435,7 +1452,7 @@ UBool CollationTest::getCollationKey(const char *norm, const UnicodeString &line
* Leaves key unchanged if s does not contain U+FFFE.
* @return true if the key was successfully changed
*/
-UBool CollationTest::getMergedCollationKey(const UChar *s, int32_t length,
+UBool CollationTest::getMergedCollationKey(const char16_t *s, int32_t length,
CollationKey &key, IcuTestErrorCode &errorCode) {
if(errorCode.isFailure()) { return false; }
LocalMemory<uint8_t> mergedKey;
@@ -1475,7 +1492,7 @@ UBool CollationTest::getMergedCollationKey(const UChar *s, int32_t length,
}
dest = mergedKey.allocateInsteadAndReset(mergedKeyCapacity);
}
- U_ASSERT(dest != NULL || mergedKeyCapacity == 0);
+ U_ASSERT(dest != nullptr || mergedKeyCapacity == 0);
if(key1Length == 0) {
// key2 is the sort key for the first segment.
uprv_memcpy(dest, key2Bytes, key2Length);
@@ -1506,7 +1523,7 @@ const UnicodeString &surrogatesToFFFD(const UnicodeString &s, UnicodeString &buf
if(buffer.length() < i) {
buffer.append(s, buffer.length(), i - buffer.length());
}
- buffer.append((UChar)0xfffd);
+ buffer.append((char16_t)0xfffd);
}
i += U16_LENGTH(c);
}
@@ -1582,7 +1599,7 @@ UBool CollationTest::checkCompareTwo(const char *norm, const UnicodeString &prev
return false;
}
// Test NUL-termination if the strings do not contain NUL characters.
- UBool containNUL = prevString.indexOf((UChar)0) >= 0 || s.indexOf((UChar)0) >= 0;
+ UBool containNUL = prevString.indexOf((char16_t)0) >= 0 || s.indexOf((char16_t)0) >= 0;
if(!containNUL) {
order = coll->compare(prevString.getBuffer(), -1, s.getBuffer(), -1, errorCode);
if(order != expectedOrder || errorCode.isFailure()) {
@@ -1770,7 +1787,7 @@ void CollationTest::checkCompareStrings(UCHARBUF *f, IcuTestErrorCode &errorCode
errorCode.reset();
break;
}
- if(coll == NULL) {
+ if(coll == nullptr) {
// We were unable to create the Collator but continue with tests.
// Ignore test data for this Collator.
// The next Collator creation might work.
@@ -1864,6 +1881,22 @@ void CollationTest::TestLongLocale() {
LocalPointer<Collator> coll(Collator::createInstance(longLocale, errorCode));
}
+void CollationTest::TestHang22414() {
+ IcuTestErrorCode errorCode(*this, "TestHang22414");
+ const char* cases[] = {
+ "en", // just make sure the code work.
+ // The following hang before fixing ICU-22414
+ "sr-Latn-TH-t-su-BM-u-co-private-unihan-x-lvariant-zxsuhc-vss-vjf-0-kn-"
+ "uaktmtca-uce66u-vtcb1ik-ubsuuuk8-u3iucls-ue38925l-vau30i-u6uccttg-"
+ "u1iuylik-u-ueein-zzzz",
+ };
+ for(int32_t i = 0; i < UPRV_LENGTHOF(cases); i ++) {
+ icu::Locale l = icu::Locale::forLanguageTag(cases[i], errorCode);
+ // Make sure the following won't hang.
+ LocalPointer<Collator> coll(Collator::createInstance(l, errorCode));
+ errorCode.reset();
+ }
+}
void CollationTest::TestBuilderContextsOverflow() {
IcuTestErrorCode errorCode(*this, "TestBuilderContextsOverflow");
// ICU-20715: Bad memory access in what looks like a bogus CharsTrie after
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/colldata.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/colldata.cpp
index 3841e7b3ed1..d989d4f4200 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/colldata.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/colldata.cpp
@@ -40,7 +40,7 @@
#define ARRAY_COPY(dst, src, count) uprv_memcpy((void *) (dst), (void *) (src), (size_t)(count) * sizeof (src)[0])
CEList::CEList(UCollator *coll, const UnicodeString &string, UErrorCode &status)
- : ces(NULL), listMax(CELIST_BUFFER_SIZE), listSize(0)
+ : ces(nullptr), listMax(CELIST_BUFFER_SIZE), listSize(0)
{
UCollationElements *elems = ucol_openElements(coll, string.getBuffer(), string.length(), &status);
UCollationStrength strength = ucol_getStrength(coll);
@@ -114,7 +114,7 @@ void CEList::add(uint32_t ce, UErrorCode &status)
int32_t newMax = listMax + CELIST_BUFFER_SIZE;
uint32_t *newCEs = NEW_ARRAY(uint32_t, newMax);
- if (newCEs == NULL) {
+ if (newCEs == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -148,7 +148,7 @@ uint32_t &CEList::operator[](int32_t index) const
UBool CEList::matchesAt(int32_t offset, const CEList *other) const
{
- if (other == NULL || listSize - offset < other->size()) {
+ if (other == nullptr || listSize - offset < other->size()) {
return false;
}
@@ -167,7 +167,7 @@ int32_t CEList::size() const
}
StringList::StringList(UErrorCode &status)
- : strings(NULL), listMax(STRING_LIST_BUFFER_SIZE), listSize(0)
+ : strings(nullptr), listMax(STRING_LIST_BUFFER_SIZE), listSize(0)
{
if (U_FAILURE(status)) {
return;
@@ -175,7 +175,7 @@ StringList::StringList(UErrorCode &status)
strings = new UnicodeString [listMax];
- if (strings == NULL) {
+ if (strings == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -194,7 +194,7 @@ void StringList::add(const UnicodeString *string, UErrorCode &status)
if (listSize >= listMax) {
int32_t newMax = listMax + STRING_LIST_BUFFER_SIZE;
UnicodeString *newStrings = new UnicodeString[newMax];
- if (newStrings == NULL) {
+ if (newStrings == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -212,7 +212,7 @@ void StringList::add(const UnicodeString *string, UErrorCode &status)
strings[listSize++].append(*string);
}
-void StringList::add(const UChar *chars, int32_t count, UErrorCode &status)
+void StringList::add(const char16_t *chars, int32_t count, UErrorCode &status)
{
const UnicodeString string(chars, count);
@@ -225,7 +225,7 @@ const UnicodeString *StringList::get(int32_t index) const
return &strings[index];
}
- return NULL;
+ return nullptr;
}
int32_t StringList::size() const
@@ -238,7 +238,7 @@ U_CDECL_BEGIN
static void U_CALLCONV
deleteStringList(void *obj)
{
- StringList *strings = (StringList *) obj;
+ StringList *strings = static_cast<StringList *>(obj);
delete strings;
}
@@ -259,7 +259,7 @@ private:
};
CEToStringsMap::CEToStringsMap(UErrorCode &status)
- : map(NULL)
+ : map(nullptr)
{
if (U_FAILURE(status)) {
return;
@@ -285,10 +285,10 @@ void CEToStringsMap::put(uint32_t ce, UnicodeString *string, UErrorCode &status)
{
StringList *strings = getStringList(ce);
- if (strings == NULL) {
+ if (strings == nullptr) {
strings = new StringList(status);
- if (strings == NULL || U_FAILURE(status)) {
+ if (strings == nullptr || U_FAILURE(status)) {
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -301,7 +301,7 @@ void CEToStringsMap::put(uint32_t ce, UnicodeString *string, UErrorCode &status)
StringList *CEToStringsMap::getStringList(uint32_t ce) const
{
- return (StringList *) uhash_iget(map, ce);
+ return static_cast<StringList *>(uhash_iget(map, ce));
}
void CEToStringsMap::putStringList(uint32_t ce, StringList *stringList, UErrorCode &status)
@@ -312,7 +312,7 @@ void CEToStringsMap::putStringList(uint32_t ce, StringList *stringList, UErrorCo
#define CLONE_COLLATOR
CollData::CollData(UCollator *collator, UErrorCode &status)
- : coll(NULL), ceToCharsStartingWith(NULL)
+ : coll(nullptr), ceToCharsStartingWith(nullptr)
{
// [:c:] == [[:cn:][:cc:][:co:][:cf:][:cs:]]
// i.e. other, control, private use, format, surrogate
@@ -341,7 +341,7 @@ CollData::CollData(UCollator *collator, UErrorCode &status)
}
#ifdef CLONE_COLLATOR
- coll = ucol_safeClone(collator, NULL, NULL, &status);
+ coll = ucol_safeClone(collator, nullptr, nullptr, &status);
if (U_FAILURE(status)) {
goto bail;
@@ -359,7 +359,7 @@ CollData::CollData(UCollator *collator, UErrorCode &status)
itemCount = uset_getItemCount(charsToTest);
for(int32_t item = 0; item < itemCount; item += 1) {
UChar32 start = 0, end = 0;
- UChar buffer[16];
+ char16_t buffer[16];
int32_t len = uset_getItem(charsToTest, item, &start, &end,
buffer, 16, &status);
@@ -367,7 +367,7 @@ CollData::CollData(UCollator *collator, UErrorCode &status)
for (UChar32 ch = start; ch <= end; ch += 1) {
UnicodeString *st = new UnicodeString(ch);
- if (st == NULL) {
+ if (st == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
break;
}
@@ -382,7 +382,7 @@ CollData::CollData(UCollator *collator, UErrorCode &status)
} else if (len > 0) {
UnicodeString *st = new UnicodeString(buffer, len);
- if (st == NULL) {
+ if (st == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
break;
}
@@ -427,7 +427,7 @@ bail:
// and there are also more Jamo T at U+D7CB..U+D7FB.
// Maybe use [:HST=T:] and look for the end of the last range?
// Maybe use script boundary mappings instead of this code??
- UChar jamoRanges[] = {Hangul::JAMO_L_BASE, Hangul::JAMO_V_BASE, Hangul::JAMO_T_BASE + 1, 0x11FF};
+ char16_t jamoRanges[] = {Hangul::JAMO_L_BASE, Hangul::JAMO_V_BASE, Hangul::JAMO_T_BASE + 1, 0x11FF};
UnicodeString jamoString(false, jamoRanges, UPRV_LENGTHOF(jamoRanges));
CEList hanList(coll, hanString, status);
CEList jamoList(coll, jamoString, status);
@@ -491,7 +491,7 @@ const CEList *CollData::getCEList(const UnicodeString *string) const
if (U_FAILURE(status)) {
delete list;
- list = NULL;
+ list = nullptr;
}
return list;
@@ -516,7 +516,7 @@ int32_t CollData::minLengthInChars(const CEList *ceList, int32_t offset, int32_t
int32_t shortestLength = INT32_MAX;
const StringList *strings = ceToCharsStartingWith->getStringList(ce);
- if (strings != NULL) {
+ if (strings != nullptr) {
int32_t stringCount = strings->size();
for (int32_t s = 0; s < stringCount; s += 1) {
@@ -526,11 +526,11 @@ int32_t CollData::minLengthInChars(const CEList *ceList, int32_t offset, int32_t
if (U_FAILURE(status)) {
delete ceList2;
- ceList2 = NULL;
+ ceList2 = nullptr;
}
if (ceList->matchesAt(offset, ceList2)) {
- U_ASSERT(ceList2 != NULL);
+ U_ASSERT(ceList2 != nullptr);
int32_t clength = ceList2->size();
int32_t slength = string->length();
int32_t roffset = offset + clength;
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/colldata.h b/Build/source/libs/icu/icu-src/source/test/intltest/colldata.h
index c31fa436587..1d3c0277490 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/colldata.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/colldata.h
@@ -158,14 +158,14 @@ public:
* @param count - the number of code points in the array
* @param status - will be set if any errors occur.
*/
- void add(const UChar *chars, int32_t count, UErrorCode &status);
+ void add(const char16_t *chars, int32_t count, UErrorCode &status);
/**
* Get a particular string from the list.
*
* @param index - the index of the string
*
- * @return a pointer to the <code>UnicodeString</code> or <code>NULL</code>
+ * @return a pointer to the <code>UnicodeString</code> or <code>nullptr</code>
* if <code>index</code> is out of bounds.
*/
const UnicodeString *get(int32_t index) const;
@@ -236,7 +236,7 @@ public:
* @param ce - the CE
*
* return a <code>StringList</code> object containing all
- * the strings, or <code>NULL</code> if there are
+ * the strings, or <code>nullptr</code> if there are
* no such strings.
*/
const StringList *getStringList(int32_t ce) const;
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/compactdecimalformattest.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/compactdecimalformattest.cpp
index eddc45daa32..3a4b1343a90 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/compactdecimalformattest.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/compactdecimalformattest.cpp
@@ -254,7 +254,7 @@ private:
void CheckLocale(
const Locale& locale, UNumberCompactStyle style,
const ExpectedResult* expectedResults, int32_t expectedResultLength);
- void CheckLocaleWithCurrency(const Locale& locale, UNumberCompactStyle style, const UChar* currency,
+ void CheckLocaleWithCurrency(const Locale& locale, UNumberCompactStyle style, const char16_t* currency,
const ExpectedResult* expectedResults, int32_t expectedResultLength);
void CheckExpectedResult(
const CompactDecimalFormat* cdf, const ExpectedResult* expectedResult,
@@ -494,7 +494,7 @@ void CompactDecimalFormatTest::TestBug12975() {
if (assertSuccess("", status, true, __FILE__, __LINE__)) {
UnicodeString resultCdf;
cdf->format(12000, resultCdf);
- LocalPointer<DecimalFormat> df((DecimalFormat*) DecimalFormat::createInstance(locale, status));
+ LocalPointer<DecimalFormat> df(dynamic_cast<DecimalFormat*>(DecimalFormat::createInstance(locale, status)));
UnicodeString resultDefault;
df->format(12000, resultDefault);
assertEquals("CompactDecimalFormat should use default pattern when compact pattern is unavailable",
@@ -513,14 +513,14 @@ void CompactDecimalFormatTest::CheckLocale(const Locale& locale, UNumberCompactS
return;
}
char description[256];
- sprintf(description,"%s - %s", locale.getName(), StyleStr(style));
+ snprintf(description, sizeof(description), "%s - %s", locale.getName(), StyleStr(style));
for (int32_t i = 0; i < expectedResultLength; i++) {
CheckExpectedResult(cdf.getAlias(), &expectedResults[i], description);
}
}
void CompactDecimalFormatTest::CheckLocaleWithCurrency(const Locale& locale, UNumberCompactStyle style,
- const UChar* currency,
+ const char16_t* currency,
const ExpectedResult* expectedResults,
int32_t expectedResultLength) {
UErrorCode status = U_ZERO_ERROR;
@@ -532,7 +532,7 @@ void CompactDecimalFormatTest::CheckLocaleWithCurrency(const Locale& locale, UNu
cdf->setCurrency(currency, status);
assertSuccess("Failed to set currency", status);
char description[256];
- sprintf(description,"%s - %s", locale.getName(), StyleStr(style));
+ snprintf(description, sizeof(description), "%s - %s", locale.getName(), StyleStr(style));
for (int32_t i = 0; i < expectedResultLength; i++) {
CheckExpectedResult(cdf.getAlias(), &expectedResults[i], description);
}
@@ -555,7 +555,7 @@ CompactDecimalFormat*
CompactDecimalFormatTest::createCDFInstance(const Locale& locale, UNumberCompactStyle style, UErrorCode& status) {
CompactDecimalFormat* result = CompactDecimalFormat::createInstance(locale, style, status);
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
// All tests are written for two significant digits, so we explicitly set here
// in case default significant digits change.
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/convtest.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/convtest.cpp
index 5ca063485a2..9c2fef3b8a3 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/convtest.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/convtest.cpp
@@ -56,7 +56,7 @@ enum {
ConversionTest::ConversionTest() {
UErrorCode errorCode=U_ZERO_ERROR;
utf8Cnv=ucnv_open("UTF-8", &errorCode);
- ucnv_setToUCallBack(utf8Cnv, UCNV_TO_U_CALLBACK_STOP, NULL, NULL, NULL, &errorCode);
+ ucnv_setToUCallBack(utf8Cnv, UCNV_TO_U_CALLBACK_STOP, nullptr, nullptr, nullptr, &errorCode);
if(U_FAILURE(errorCode)) {
errln("unable to open UTF-8 converter");
}
@@ -126,7 +126,7 @@ ConversionTest::TestToUnicode() {
offsetsLength=0;
cc.offsets=testCase->getIntVector(offsetsLength, "offsets", errorCode);
if(offsetsLength==0) {
- cc.offsets=NULL;
+ cc.offsets=nullptr;
} else if(offsetsLength!=unicode.length()) {
errln("toUnicode[%d] unicode[%d] and offsets[%d] must have the same length",
i, unicode.length(), offsetsLength);
@@ -168,12 +168,12 @@ ConversionTest::TestToUnicode() {
callback=UCNV_TO_U_CALLBACK_ESCAPE;
break;
default:
- callback=NULL;
+ callback=nullptr;
break;
}
- option=callback==NULL ? cbopt : cbopt+1;
+ option=callback==nullptr ? cbopt : cbopt+1;
if(*option==0) {
- option=NULL;
+ option=nullptr;
}
cc.invalidChars=testCase->getBinary(cc.invalidLength, "invalidChars", errorCode);
@@ -208,7 +208,7 @@ ConversionTest::TestFromUnicode() {
TestDataModule *dataModule;
TestData *testData;
const DataMap *testCase;
- const UChar *p;
+ const char16_t *p;
UErrorCode errorCode;
int32_t i, length;
@@ -239,7 +239,7 @@ ConversionTest::TestFromUnicode() {
offsetsLength=0;
cc.offsets=testCase->getIntVector(offsetsLength, "offsets", errorCode);
if(offsetsLength==0) {
- cc.offsets=NULL;
+ cc.offsets=nullptr;
} else if(offsetsLength!=cc.bytesLength) {
errln("fromUnicode[%d] bytes[%d] and offsets[%d] must have the same length",
i, cc.bytesLength, offsetsLength);
@@ -263,7 +263,7 @@ ConversionTest::TestFromUnicode() {
s=testCase->getString("callback", errorCode);
cc.setSub=0; // default: no subchar
- if((index=s.indexOf((UChar)0))>0) {
+ if((index=s.indexOf((char16_t)0))>0) {
// read NUL-separated subchar first, if any
// copy the subchar from Latin-1 characters
// start after the NUL
@@ -286,7 +286,7 @@ ConversionTest::TestFromUnicode() {
// remove the NUL and subchar from s
s.truncate(index);
- } else if((index=s.indexOf((UChar)0x3d))>0) /* '=' */ {
+ } else if((index=s.indexOf((char16_t)0x3d))>0) /* '=' */ {
// read a substitution string, separated by an equal sign
p=s.getBuffer()+index+1;
length=s.length()-(index+1);
@@ -319,12 +319,12 @@ ConversionTest::TestFromUnicode() {
callback=UCNV_FROM_U_CALLBACK_ESCAPE;
break;
default:
- callback=NULL;
+ callback=nullptr;
break;
}
- option=callback==NULL ? cbopt : cbopt+1;
+ option=callback==nullptr ? cbopt : cbopt+1;
if(*option==0) {
- option=NULL;
+ option=nullptr;
}
invalidUChars=testCase->getString("invalidUChars", errorCode);
@@ -349,7 +349,7 @@ ConversionTest::TestFromUnicode() {
}
}
-static const UChar ellipsis[]={ 0x2e, 0x2e, 0x2e };
+static const char16_t ellipsis[]={ 0x2e, 0x2e, 0x2e };
void
ConversionTest::TestGetUnicodeSet() {
@@ -401,7 +401,7 @@ ConversionTest::TestGetUnicodeSet() {
mapnotSet.clear();
pos.setIndex(0);
- mapSet.applyPattern(map, pos, 0, NULL, errorCode);
+ mapSet.applyPattern(map, pos, 0, nullptr, errorCode);
if(U_FAILURE(errorCode) || pos.getIndex()!=map.length()) {
errln("error creating the map set for conversion/getUnicodeSet test case %d - %s\n"
" error index %d index %d U+%04x",
@@ -411,7 +411,7 @@ ConversionTest::TestGetUnicodeSet() {
}
pos.setIndex(0);
- mapnotSet.applyPattern(mapnot, pos, 0, NULL, errorCode);
+ mapnotSet.applyPattern(mapnot, pos, 0, nullptr, errorCode);
if(U_FAILURE(errorCode) || pos.getIndex()!=mapnot.length()) {
errln("error creating the mapnot set for conversion/getUnicodeSet test case %d - %s\n"
" error index %d index %d U+%04x",
@@ -476,13 +476,13 @@ U_CDECL_BEGIN
static void U_CALLCONV
getUnicodeSetCallback(const void *context,
UConverterFromUnicodeArgs * /*fromUArgs*/,
- const UChar* /*codeUnits*/,
+ const char16_t* /*codeUnits*/,
int32_t /*length*/,
UChar32 codePoint,
UConverterCallbackReason reason,
UErrorCode *pErrorCode) {
if(reason<=UCNV_IRREGULAR) {
- ((UnicodeSet *)context)->remove(codePoint); // the converter cannot convert this code point
+ static_cast<UnicodeSet *>(const_cast<void*>(context))->remove(codePoint); // the converter cannot convert this code point
*pErrorCode=U_ZERO_ERROR; // skip
} // else ignore the reset, close and clone calls.
}
@@ -500,35 +500,35 @@ ConversionTest::TestGetUnicodeSet2() {
cpLimit=0x110000;
s0Length=0x10000+0x200000; // BMP + surrogate pairs
}
- UChar *s0=new UChar[s0Length];
- if(s0==NULL) {
+ char16_t *s0=new char16_t[s0Length];
+ if(s0==nullptr) {
return;
}
- UChar *s=s0;
+ char16_t *s=s0;
UChar32 c;
- UChar c2;
+ char16_t c2;
// low BMP
for(c=0; c<=0xd7ff; ++c) {
- *s++=(UChar)c;
+ *s++=(char16_t)c;
}
// trail surrogates
for(c=0xdc00; c<=0xdfff; ++c) {
- *s++=(UChar)c;
+ *s++=(char16_t)c;
}
// lead surrogates
// (after trails so that there is not even one surrogate pair in between)
for(c=0xd800; c<=0xdbff; ++c) {
- *s++=(UChar)c;
+ *s++=(char16_t)c;
}
// high BMP
for(c=0xe000; c<=0xffff; ++c) {
- *s++=(UChar)c;
+ *s++=(char16_t)c;
}
// supplementary code points = surrogate pairs
if(cpLimit==0x110000) {
for(c=0xd800; c<=0xdbff; ++c) {
for(c2=0xdc00; c2<=0xdfff; ++c2) {
- *s++=(UChar)c;
+ *s++=(char16_t)c;
*s++=c2;
}
}
@@ -562,7 +562,7 @@ ConversionTest::TestGetUnicodeSet2() {
continue;
}
UnicodeSet expected;
- ucnv_setFromUCallBack(cnv.getAlias(), getUnicodeSetCallback, &expected, NULL, NULL, &errorCode);
+ ucnv_setFromUCallBack(cnv.getAlias(), getUnicodeSetCallback, &expected, nullptr, nullptr, &errorCode);
if(U_FAILURE(errorCode)) {
errln("failed to set the callback on converter %s - %s", cnvNames[i], u_errorName(errorCode));
continue;
@@ -578,7 +578,7 @@ ConversionTest::TestGetUnicodeSet2() {
do {
char *t=buffer;
flush=(UBool)(s==s0+s0Length);
- ucnv_fromUnicode(cnv.getAlias(), &t, buffer+sizeof(buffer), (const UChar **)&s, s0+s0Length, NULL, flush, &errorCode);
+ ucnv_fromUnicode(cnv.getAlias(), &t, buffer+sizeof(buffer), (const char16_t **)&s, s0+s0Length, nullptr, flush, &errorCode);
if(U_FAILURE(errorCode)) {
if(errorCode==U_BUFFER_OVERFLOW_ERROR) {
errorCode=U_ZERO_ERROR;
@@ -679,7 +679,7 @@ ConversionTest::TestDefaultIgnorableCallback() {
}
// set callback for the converter
- ucnv_setFromUCallBack(cnv.getAlias(), UCNV_FROM_U_CALLBACK_SUBSTITUTE, NULL, NULL, NULL, &status);
+ ucnv_setFromUCallBack(cnv.getAlias(), UCNV_FROM_U_CALLBACK_SUBSTITUTE, nullptr, nullptr, nullptr, &status);
UChar32 input[1];
char output[10];
@@ -729,10 +729,10 @@ ConversionTest::TestUTF8ToUTF8Overflow() {
char result[20];
char *target = result;
const char *targetLimit = result + sizeof(result);
- UChar buffer16[20];
- UChar *pivotSource = buffer16;
- UChar *pivotTarget = buffer16;
- const UChar *pivotLimit = buffer16 + UPRV_LENGTHOF(buffer16);
+ char16_t buffer16[20];
+ char16_t *pivotSource = buffer16;
+ char16_t *pivotTarget = buffer16;
+ const char16_t *pivotLimit = buffer16 + UPRV_LENGTHOF(buffer16);
int32_t length;
// Convert with insufficient target capacity.
@@ -866,10 +866,10 @@ ConversionTest::TestUTF8ToUTF8Streaming() {
char* target = result;
const char* targetLimit = result + targetLen;
- UChar buffer16[20];
- UChar* pivotSource = buffer16;
- UChar* pivotTarget = buffer16;
- const UChar* pivotLimit = buffer16 + UPRV_LENGTHOF(buffer16);
+ char16_t buffer16[20];
+ char16_t* pivotSource = buffer16;
+ char16_t* pivotTarget = buffer16;
+ const char16_t* pivotLimit = buffer16 + UPRV_LENGTHOF(buffer16);
int32_t length;
ucnv_convertEx(cnv2.getAlias(), cnv1.getAlias(),
@@ -902,11 +902,11 @@ ConversionTest::TestUTF8ToUTF8Streaming() {
UConverter *
ConversionTest::cnv_open(const char *name, UErrorCode &errorCode) {
- if(name!=NULL && *name=='+') {
+ if(name!=nullptr && *name=='+') {
// Converter names that start with '+' are ignored in ICU4J tests.
++name;
}
- if(name!=NULL && *name=='*') {
+ if(name!=nullptr && *name=='*') {
/* loadTestData(): set the data directory */
return ucnv_openPackage(loadTestData(errorCode), name+1, &errorCode);
} else {
@@ -944,7 +944,7 @@ printBytes(const uint8_t *bytes, int32_t length, char *out) {
}
static char *
-printUnicode(const UChar *unicode, int32_t length, char *out) {
+printUnicode(const char16_t *unicode, int32_t length, char *out) {
UChar32 c;
int32_t i;
@@ -973,7 +973,7 @@ static char *
printOffsets(const int32_t *offsets, int32_t length, char *out) {
int32_t i, o, d;
- if(offsets==NULL) {
+ if(offsets==nullptr) {
length=0;
}
@@ -1006,12 +1006,12 @@ printOffsets(const int32_t *offsets, int32_t length, char *out) {
static int32_t
stepToUnicode(ConversionCase &cc, UConverter *cnv,
- UChar *result, int32_t resultCapacity,
+ char16_t *result, int32_t resultCapacity,
int32_t *resultOffsets, /* also resultCapacity */
int32_t step,
UErrorCode *pErrorCode) {
const char *source, *sourceLimit, *bytesLimit;
- UChar *target, *targetLimit, *resultLimit;
+ char16_t *target, *targetLimit, *resultLimit;
UBool flush;
source=(const char *)cc.bytes;
@@ -1037,7 +1037,7 @@ stepToUnicode(ConversionCase &cc, UConverter *cnv,
flush=false;
// output offsets only for bulk conversion
- resultOffsets=NULL;
+ resultOffsets=nullptr;
}
for(;;) {
@@ -1126,7 +1126,7 @@ stepToUnicode(ConversionCase &cc, UConverter *cnv,
break;
}
if(c<=0xffff) {
- *target++=(UChar)c;
+ *target++=(char16_t)c;
} else {
*target++=U16_LEAD(c);
if(target==resultLimit) {
@@ -1141,7 +1141,7 @@ stepToUnicode(ConversionCase &cc, UConverter *cnv,
++step;
}
} else /* step is even */ {
- // allow only one UChar output
+ // allow only one char16_t output
targetLimit=target<resultLimit ? target+1 : resultLimit;
// as with ucnv_getNextUChar(), we always flush (if we go to bytesLimit)
@@ -1158,7 +1158,7 @@ stepToUnicode(ConversionCase &cc, UConverter *cnv,
ucnv_toUnicode(cnv,
&target, targetLimit,
&source, sourceLimit,
- NULL, (UBool)(sourceLimit==bytesLimit), pErrorCode);
+ nullptr, (UBool)(sourceLimit==bytesLimit), pErrorCode);
// check pointers and errors
if(*pErrorCode==U_BUFFER_OVERFLOW_ERROR) {
@@ -1208,8 +1208,8 @@ ConversionTest::ToUnicodeCase(ConversionCase &cc, UConverterToUCallback callback
}
// set the callback
- if(callback!=NULL) {
- ucnv_setToUCallBack(cnv.getAlias(), callback, option, NULL, NULL, errorCode);
+ if(callback!=nullptr) {
+ ucnv_setToUCallBack(cnv.getAlias(), callback, option, nullptr, nullptr, errorCode);
if(U_FAILURE(errorCode)) {
errln("toUnicode[%d](%s cb=\"%s\" fb=%d flush=%d) ucnv_setToUCallBack() failed - %s",
cc.caseNr, cc.charset, cc.cbopt, cc.fallbacks, cc.finalFlush, u_errorName(errorCode));
@@ -1218,7 +1218,7 @@ ConversionTest::ToUnicodeCase(ConversionCase &cc, UConverterToUCallback callback
}
int32_t resultOffsets[256];
- UChar result[256];
+ char16_t result[256];
int32_t resultLength;
UBool ok;
@@ -1250,7 +1250,7 @@ ConversionTest::ToUnicodeCase(ConversionCase &cc, UConverterToUCallback callback
}
if(step!=0) {
// bulk test is first, then offsets are not checked any more
- cc.offsets=NULL;
+ cc.offsets=nullptr;
}
else {
for (int32_t i = 0; i < UPRV_LENGTHOF(resultOffsets); i++) {
@@ -1263,23 +1263,23 @@ ConversionTest::ToUnicodeCase(ConversionCase &cc, UConverterToUCallback callback
errorCode.reset();
resultLength=stepToUnicode(cc, cnv.getAlias(),
result, UPRV_LENGTHOF(result),
- step==0 ? resultOffsets : NULL,
+ step==0 ? resultOffsets : nullptr,
step, errorCode);
ok=checkToUnicode(
cc, cnv.getAlias(), steps[i].name,
result, resultLength,
- cc.offsets!=NULL ? resultOffsets : NULL,
+ cc.offsets!=nullptr ? resultOffsets : nullptr,
errorCode);
if(errorCode.isFailure() || !cc.finalFlush) {
// reset if an error occurred or we did not flush
// otherwise do nothing to make sure that flushing resets
ucnv_resetToUnicode(cnv.getAlias());
}
- if (cc.offsets != NULL && resultOffsets[resultLength] != -1) {
+ if (cc.offsets != nullptr && resultOffsets[resultLength] != -1) {
errln("toUnicode[%d](%s) Conversion wrote too much to offsets at index %d",
cc.caseNr, cc.charset, resultLength);
}
- if (result[resultLength] != (UChar)-1) {
+ if (result[resultLength] != (char16_t)-1) {
errln("toUnicode[%d](%s) Conversion wrote too much to result at index %d",
cc.caseNr, cc.charset, resultLength);
}
@@ -1298,7 +1298,7 @@ ConversionTest::ToUnicodeCase(ConversionCase &cc, UConverterToUCallback callback
ok=checkToUnicode(
cc, cnv.getAlias(), "toUChars",
result, resultLength,
- NULL,
+ nullptr,
errorCode);
if(!ok) {
break;
@@ -1308,7 +1308,7 @@ ConversionTest::ToUnicodeCase(ConversionCase &cc, UConverterToUCallback callback
// keep the correct result for simple checking
errorCode.reset();
resultLength=ucnv_toUChars(cnv.getAlias(),
- NULL, 0,
+ nullptr, 0,
(const char *)cc.bytes, cc.bytesLength,
errorCode);
if(errorCode.get()==U_STRING_NOT_TERMINATED_WARNING || errorCode.get()==U_BUFFER_OVERFLOW_ERROR) {
@@ -1317,7 +1317,7 @@ ConversionTest::ToUnicodeCase(ConversionCase &cc, UConverterToUCallback callback
ok=checkToUnicode(
cc, cnv.getAlias(), "preflight toUChars",
result, resultLength,
- NULL,
+ nullptr,
errorCode);
break;
}
@@ -1328,7 +1328,7 @@ ConversionTest::ToUnicodeCase(ConversionCase &cc, UConverterToUCallback callback
UBool
ConversionTest::checkToUnicode(ConversionCase &cc, UConverter *cnv, const char *name,
- const UChar *result, int32_t resultLength,
+ const char16_t *result, int32_t resultLength,
const int32_t *resultOffsets,
UErrorCode resultErrorCode) {
char resultInvalidChars[8];
@@ -1337,8 +1337,8 @@ ConversionTest::checkToUnicode(ConversionCase &cc, UConverter *cnv, const char *
const char *msg;
- // reset the message; NULL will mean "ok"
- msg=NULL;
+ // reset the message; nullptr will mean "ok"
+ msg=nullptr;
errorCode=U_ZERO_ERROR;
resultInvalidLength=sizeof(resultInvalidChars);
@@ -1354,7 +1354,7 @@ ConversionTest::checkToUnicode(ConversionCase &cc, UConverter *cnv, const char *
msg="wrong result length";
} else if(0!=u_memcmp(cc.unicode, result, cc.unicodeLength)) {
msg="wrong result string";
- } else if(cc.offsets!=NULL && 0!=memcmp(cc.offsets, resultOffsets, cc.unicodeLength*sizeof(*cc.offsets))) {
+ } else if(cc.offsets!=nullptr && 0!=memcmp(cc.offsets, resultOffsets, cc.unicodeLength*sizeof(*cc.offsets))) {
msg="wrong offsets";
} else if(cc.outErrorCode!=resultErrorCode) {
msg="wrong error code";
@@ -1364,7 +1364,7 @@ ConversionTest::checkToUnicode(ConversionCase &cc, UConverter *cnv, const char *
msg="wrong last invalid input";
}
- if(msg==NULL) {
+ if(msg==nullptr) {
return true;
} else {
char buffer[2000]; // one buffer for all strings
@@ -1417,8 +1417,8 @@ stepFromUTF8(ConversionCase &cc,
int32_t step,
UErrorCode *pErrorCode) {
const char *source, *sourceLimit, *utf8Limit;
- UChar pivotBuffer[32];
- UChar *pivotSource, *pivotTarget, *pivotLimit;
+ char16_t pivotBuffer[32];
+ char16_t *pivotSource, *pivotTarget, *pivotLimit;
char *target, *targetLimit, *resultLimit;
UBool flush;
@@ -1522,7 +1522,7 @@ stepFromUnicode(ConversionCase &cc, UConverter *cnv,
int32_t *resultOffsets, /* also resultCapacity */
int32_t step,
UErrorCode *pErrorCode) {
- const UChar *source, *sourceLimit, *unicodeLimit;
+ const char16_t *source, *sourceLimit, *unicodeLimit;
char *target, *targetLimit, *resultLimit;
UBool flush;
@@ -1548,7 +1548,7 @@ stepFromUnicode(ConversionCase &cc, UConverter *cnv,
flush=false;
// output offsets only for bulk conversion
- resultOffsets=NULL;
+ resultOffsets=nullptr;
}
for(;;) {
@@ -1619,8 +1619,8 @@ ConversionTest::FromUnicodeCase(ConversionCase &cc, UConverterFromUCallback call
ucnv_resetToUnicode(utf8Cnv);
// set the callback
- if(callback!=NULL) {
- ucnv_setFromUCallBack(cnv, callback, option, NULL, NULL, &errorCode);
+ if(callback!=nullptr) {
+ ucnv_setFromUCallBack(cnv, callback, option, nullptr, nullptr, &errorCode);
if(U_FAILURE(errorCode)) {
errln("fromUnicode[%d](%s cb=\"%s\" fb=%d flush=%d) ucnv_setFromUCallBack() failed - %s",
cc.caseNr, cc.charset, cc.cbopt, cc.fallbacks, cc.finalFlush, u_errorName(errorCode));
@@ -1696,12 +1696,12 @@ ConversionTest::FromUnicodeCase(ConversionCase &cc, UConverterFromUCallback call
errorCode=U_ZERO_ERROR;
resultLength=stepFromUnicode(cc, cnv,
result, UPRV_LENGTHOF(result),
- step==0 ? resultOffsets : NULL,
+ step==0 ? resultOffsets : nullptr,
step, &errorCode);
ok=checkFromUnicode(
cc, cnv, steps[i].name,
(uint8_t *)result, resultLength,
- cc.offsets!=NULL ? resultOffsets : NULL,
+ cc.offsets!=nullptr ? resultOffsets : nullptr,
errorCode);
if(U_FAILURE(errorCode) || !cc.finalFlush) {
// reset if an error occurred or we did not flush
@@ -1718,7 +1718,7 @@ ConversionTest::FromUnicodeCase(ConversionCase &cc, UConverterFromUCallback call
}
// bulk test is first, then offsets are not checked any more
- cc.offsets=NULL;
+ cc.offsets=nullptr;
// test direct conversion from UTF-8
if(cc.utf8Length>=0) {
@@ -1729,7 +1729,7 @@ ConversionTest::FromUnicodeCase(ConversionCase &cc, UConverterFromUCallback call
ok=checkFromUnicode(
cc, cnv, steps[i].utf8Name,
(uint8_t *)result, resultLength,
- NULL,
+ nullptr,
errorCode);
if(U_FAILURE(errorCode) || !cc.finalFlush) {
// reset if an error occurred or we did not flush
@@ -1753,7 +1753,7 @@ ConversionTest::FromUnicodeCase(ConversionCase &cc, UConverterFromUCallback call
ok=checkFromUnicode(
cc, cnv, "fromUChars",
(uint8_t *)result, resultLength,
- NULL,
+ nullptr,
errorCode);
if(!ok) {
break;
@@ -1763,7 +1763,7 @@ ConversionTest::FromUnicodeCase(ConversionCase &cc, UConverterFromUCallback call
// keep the correct result for simple checking
errorCode=U_ZERO_ERROR;
resultLength=ucnv_fromUChars(cnv,
- NULL, 0,
+ nullptr, 0,
cc.unicode, cc.unicodeLength,
&errorCode);
if(errorCode==U_STRING_NOT_TERMINATED_WARNING || errorCode==U_BUFFER_OVERFLOW_ERROR) {
@@ -1772,7 +1772,7 @@ ConversionTest::FromUnicodeCase(ConversionCase &cc, UConverterFromUCallback call
ok=checkFromUnicode(
cc, cnv, "preflight fromUChars",
(uint8_t *)result, resultLength,
- NULL,
+ nullptr,
errorCode);
break;
}
@@ -1786,14 +1786,14 @@ ConversionTest::checkFromUnicode(ConversionCase &cc, UConverter *cnv, const char
const uint8_t *result, int32_t resultLength,
const int32_t *resultOffsets,
UErrorCode resultErrorCode) {
- UChar resultInvalidUChars[8];
+ char16_t resultInvalidUChars[8];
int8_t resultInvalidLength;
UErrorCode errorCode;
const char *msg;
- // reset the message; NULL will mean "ok"
- msg=NULL;
+ // reset the message; nullptr will mean "ok"
+ msg=nullptr;
errorCode=U_ZERO_ERROR;
resultInvalidLength=UPRV_LENGTHOF(resultInvalidUChars);
@@ -1809,7 +1809,7 @@ ConversionTest::checkFromUnicode(ConversionCase &cc, UConverter *cnv, const char
msg="wrong result length";
} else if(0!=memcmp(cc.bytes, result, cc.bytesLength)) {
msg="wrong result string";
- } else if(cc.offsets!=NULL && 0!=memcmp(cc.offsets, resultOffsets, cc.bytesLength*sizeof(*cc.offsets))) {
+ } else if(cc.offsets!=nullptr && 0!=memcmp(cc.offsets, resultOffsets, cc.bytesLength*sizeof(*cc.offsets))) {
msg="wrong offsets";
} else if(cc.outErrorCode!=resultErrorCode) {
msg="wrong error code";
@@ -1819,7 +1819,7 @@ ConversionTest::checkFromUnicode(ConversionCase &cc, UConverter *cnv, const char
msg="wrong last invalid input";
}
- if(msg==NULL) {
+ if(msg==nullptr) {
return true;
} else {
char buffer[2000]; // one buffer for all strings
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/convtest.h b/Build/source/libs/icu/icu-src/source/test/intltest/convtest.h
index 9fb0d9af297..3e01f3f24d2 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/convtest.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/convtest.h
@@ -32,14 +32,14 @@ struct ConversionCase {
/* setup */
int32_t caseNr;
const char *charset, *cbopt, *name;
- UChar subString[16];
+ char16_t subString[16];
char subchar[8];
int8_t setSub;
/* input and expected output */
const uint8_t *bytes;
int32_t bytesLength;
- const UChar *unicode;
+ const char16_t *unicode;
int32_t unicodeLength;
const int32_t *offsets;
@@ -52,12 +52,12 @@ struct ConversionCase {
UBool fallbacks;
UErrorCode outErrorCode;
const uint8_t *invalidChars;
- const UChar *invalidUChars;
+ const char16_t *invalidUChars;
int32_t invalidLength;
/* actual output */
uint8_t resultBytes[200];
- UChar resultUnicode[200];
+ char16_t resultUnicode[200];
int32_t resultOffsets[200];
int32_t resultLength;
@@ -88,7 +88,7 @@ private:
UBool
checkToUnicode(ConversionCase &cc, UConverter *cnv, const char *name,
- const UChar *result, int32_t resultLength,
+ const char16_t *result, int32_t resultLength,
const int32_t *resultOffsets,
UErrorCode resultErrorCode);
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/cpdtrtst.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/cpdtrtst.cpp
index d0d7bd62a04..700cff68a50 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/cpdtrtst.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/cpdtrtst.cpp
@@ -100,10 +100,10 @@ void CompoundTransliteratorTest::TestConstruction(){
{
/*Test Jitterbug 914 */
UErrorCode err = U_ZERO_ERROR;
- CompoundTransliterator cpdTrans(UnicodeString("Latin-Hangul"),UTRANS_REVERSE,NULL,parseError,err);
+ CompoundTransliterator cpdTrans(UnicodeString("Latin-Hangul"),UTRANS_REVERSE,nullptr,parseError,err);
UnicodeString newID =cpdTrans.getID();
if(newID!=UnicodeString("Hangul-Latin")){
- errln(UnicodeString("Test for Jitterbug 914 for cpdTrans(UnicodeString(\"Latin-Hangul\"),UTRANS_REVERSE,NULL,err) failed"));
+ errln(UnicodeString("Test for Jitterbug 914 for cpdTrans(UnicodeString(\"Latin-Hangul\"),UTRANS_REVERSE,nullptr,err) failed"));
}
}
delete t1;
@@ -194,7 +194,7 @@ void CompoundTransliteratorTest::TestGetCount(){
UParseError parseError;
CompoundTransliterator *ct1=new CompoundTransliterator("Halfwidth-Fullwidth;Fullwidth-Halfwidth", parseError, status);
CompoundTransliterator *ct2=new CompoundTransliterator("Any-Hex;Hex-Any;Cyrillic-Latin;Latin-Cyrillic", parseError, status);
- CompoundTransliterator *ct3=(CompoundTransliterator*)ct1;
+ CompoundTransliterator *ct3=ct1;
if (U_FAILURE(status)) {
dataerrln("FAILED: CompoundTransliterator constructor failed - %s", u_errorName(status));
return;
@@ -216,7 +216,7 @@ void CompoundTransliteratorTest::TestGetCount(){
/* Quick test getTargetSet(), only test that it doesn't die. TODO: a better test. */
UnicodeSet ts;
- UnicodeSet *retUS = NULL;
+ UnicodeSet *retUS = nullptr;
retUS = &ct1->getTargetSet(ts);
if (retUS != &ts || ts.size() == 0) {
errln("CompoundTransliterator::getTargetSet() failed.\n");
@@ -224,7 +224,7 @@ void CompoundTransliteratorTest::TestGetCount(){
/* Quick test getSourceSet(), only test that it doesn't die. TODO: a better test. */
UnicodeSet ss;
- retUS = NULL;
+ retUS = nullptr;
retUS = &ct1->getSourceSet(ss);
if (retUS != &ss || ss.size() == 0) {
errln("CompoundTransliterator::getSourceSet() failed.\n");
@@ -297,7 +297,7 @@ void CompoundTransliteratorTest::TestGetSetAdoptTransliterator(){
}*/
logln("Testing adoptTransliterator() API of CompoundTransliterator");
UnicodeString ID3("Latin-Katakana");
- Transliterator **transarray2=(Transliterator **)uprv_malloc(sizeof(Transliterator*)*1);
+ Transliterator **transarray2=static_cast<Transliterator **>(uprv_malloc(sizeof(Transliterator*)*1));
transarray2[0] = Transliterator::createInstance(ID3,UTRANS_FORWARD,parseError,status);
if (transarray2[0] != 0) {
ct1->adoptTransliterators(transarray2, 1);
@@ -320,7 +320,7 @@ void CompoundTransliteratorTest::TestGetSetAdoptTransliterator(){
/**
* Splits a UnicodeString
*/
-UnicodeString* CompoundTransliteratorTest::split(const UnicodeString& str, UChar seperator, int32_t& count) {
+UnicodeString* CompoundTransliteratorTest::split(const UnicodeString& str, char16_t seperator, int32_t& count) {
//get the count
int32_t i;
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/cpdtrtst.h b/Build/source/libs/icu/icu-src/source/test/intltest/cpdtrtst.h
index dd0a0a0fd63..72fe89a840f 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/cpdtrtst.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/cpdtrtst.h
@@ -29,18 +29,18 @@
*/
class CompoundTransliteratorTest : public IntlTest {
public:
- void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par=NULL) override;
+ void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par=nullptr) override;
/*Tests the constructors */
- void TestConstruction(void);
+ void TestConstruction();
/*Tests the function clone, and operator==()*/
- void TestCloneEqual(void);
+ void TestCloneEqual();
/*Tests the function getCount()*/
- void TestGetCount(void);
+ void TestGetCount();
/*Tests the function getTransliterator() and setTransliterators() and adoptTransliterators()*/
- void TestGetSetAdoptTransliterator(void);
+ void TestGetSetAdoptTransliterator();
/*Tests the function handleTransliterate()*/
- void TestTransliterate(void);
+ void TestTransliterate();
//======================================================================
// Support methods
@@ -49,7 +49,7 @@ public:
/**
* Splits a UnicodeString
*/
- UnicodeString* split(const UnicodeString& str, UChar seperator, int32_t& count);
+ UnicodeString* split(const UnicodeString& str, char16_t seperator, int32_t& count);
void expect(const CompoundTransliterator& t,
const UnicodeString& source,
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/csdetest.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/csdetest.cpp
index dc5e7a8699b..229c5cb0253 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/csdetest.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/csdetest.cpp
@@ -118,7 +118,7 @@ void CharsetDetectionTest::runIndexedTest( int32_t index, UBool exec, const char
}
}
-static UnicodeString *split(const UnicodeString &src, UChar ch, int32_t &splits)
+static UnicodeString *split(const UnicodeString &src, char16_t ch, int32_t &splits)
{
int32_t offset = -1;
@@ -146,9 +146,9 @@ static UnicodeString *split(const UnicodeString &src, UChar ch, int32_t &splits)
static char *extractBytes(const UnicodeString &source, const char *codepage, int32_t &length)
{
int32_t sLength = source.length();
- char *bytes = NULL;
+ char *bytes = nullptr;
- length = source.extract(0, sLength, NULL, codepage);
+ length = source.extract(0, sLength, nullptr, codepage);
if (length > 0) {
bytes = new char[length + 1];
@@ -190,7 +190,7 @@ void CharsetDetectionTest::checkEncoding(const UnicodeString &testString, const
UnicodeString name(ucsdet_getName(matches[0], &status));
UnicodeString lang(ucsdet_getLanguage(matches[0], &status));
- UChar *decoded = NULL;
+ char16_t *decoded = nullptr;
int32_t dLength = 0;
if (matchCount == 0) {
@@ -218,7 +218,7 @@ void CharsetDetectionTest::checkEncoding(const UnicodeString &testString, const
return;
}
- decoded = new UChar[testLength];
+ decoded = new char16_t[testLength];
dLength = ucsdet_getUChars(matches[0], decoded, testLength, &status);
if (testString.compare(decoded, dLength) != 0) {
@@ -244,7 +244,7 @@ const char *CharsetDetectionTest::getPath(char buffer[2048], const char *filenam
if (U_FAILURE(status)) {
errln("ERROR: getPath() failed - %s", u_errorName(status));
- return NULL;
+ return nullptr;
}
strcpy(buffer, testDataDirectory);
@@ -267,7 +267,7 @@ void CharsetDetectionTest::ConstructionTest()
int32_t length;
const char *name = uenum_next(e.getAlias(), &length, status);
- if(name == NULL || length <= 0) {
+ if(name == nullptr || length <= 0) {
errln("ucsdet_getAllDetectableCharsets() returned a null or empty name!");
}
@@ -283,15 +283,15 @@ void CharsetDetectionTest::ConstructionTest()
};
LocalUEnumerationPointer eActive(ucsdet_getDetectableCharsets(csd.getAlias(), status));
- const char *activeName = NULL;
+ const char *activeName = nullptr;
- while ((activeName = uenum_next(eActive.getAlias(), NULL, status))) {
+ while ((activeName = uenum_next(eActive.getAlias(), nullptr, status))) {
// the charset must be included in all list
UBool found = false;
- const char *name = NULL;
+ const char *name = nullptr;
uenum_reset(e.getAlias(), status);
- while ((name = uenum_next(e.getAlias(), NULL, status))) {
+ while ((name = uenum_next(e.getAlias(), nullptr, status))) {
if (strcmp(activeName, name) == 0) {
found = true;
break;
@@ -328,12 +328,12 @@ void CharsetDetectionTest::UTF8Test()
char *bytes = extractBytes(s, "UTF-8", byteLength);
UCharsetDetector *csd = ucsdet_open(&status);
const UCharsetMatch *match;
- UChar *detected = new UChar[sLength];
+ char16_t *detected = new char16_t[sLength];
ucsdet_setText(csd, bytes, byteLength, &status);
match = ucsdet_detect(csd, &status);
- if (match == NULL) {
+ if (match == nullptr) {
errln("Detection failure for UTF-8: got no matches.");
goto bail;
}
@@ -356,7 +356,7 @@ void CharsetDetectionTest::UTF16Test()
{
UErrorCode status = U_ZERO_ERROR;
/* Notice the BOM on the start of this string */
- UChar chars[] = {
+ char16_t chars[] = {
0xFEFF, 0x0623, 0x0648, 0x0631, 0x0648, 0x0628, 0x0627, 0x002C,
0x0020, 0x0628, 0x0631, 0x0645, 0x062c, 0x064a, 0x0627, 0x062a,
0x0020, 0x0627, 0x0644, 0x062d, 0x0627, 0x0633, 0x0648, 0x0628,
@@ -374,7 +374,7 @@ void CharsetDetectionTest::UTF16Test()
ucsdet_setText(csd.getAlias(), beBytes.get(), beLength, &status);
match = ucsdet_detect(csd.getAlias(), &status);
- if (match == NULL) {
+ if (match == nullptr) {
errln("Encoding detection failure for UTF-16BE: got no matches.");
} else {
@@ -391,7 +391,7 @@ void CharsetDetectionTest::UTF16Test()
ucsdet_setText(csd.getAlias(), leBytes.get(), leLength, &status);
match = ucsdet_detect(csd.getAlias(), &status);
- if (match == NULL) {
+ if (match == nullptr) {
errln("Encoding detection failure for UTF-16LE: got no matches.");
return;
}
@@ -429,19 +429,19 @@ void CharsetDetectionTest::InputFilterTest()
ucsdet_setText(csd, bytes, byteLength, &status);
match = ucsdet_detect(csd, &status);
- if (match == NULL) {
+ if (match == nullptr) {
errln("Turning on the input filter resulted in no matches.");
goto turn_off;
}
name = ucsdet_getName(match, &status);
- if (name == NULL || strcmp(name, "ISO-8859-1") != 0) {
+ if (name == nullptr || strcmp(name, "ISO-8859-1") != 0) {
errln("Turning on the input filter resulted in %s rather than ISO-8859-1.", name);
} else {
lang = ucsdet_getLanguage(match, &status);
- if (lang == NULL || strcmp(lang, "fr") != 0) {
+ if (lang == nullptr || strcmp(lang, "fr") != 0) {
errln("Input filter did not strip markup!");
}
}
@@ -451,19 +451,19 @@ turn_off:
ucsdet_setText(csd, bytes, byteLength, &status);
match = ucsdet_detect(csd, &status);
- if (match == NULL) {
+ if (match == nullptr) {
errln("Turning off the input filter resulted in no matches.");
goto bail;
}
name = ucsdet_getName(match, &status);
- if (name == NULL || strcmp(name, "ISO-8859-1") != 0) {
+ if (name == nullptr || strcmp(name, "ISO-8859-1") != 0) {
errln("Turning off the input filter resulted in %s rather than ISO-8859-1.", name);
} else {
lang = ucsdet_getLanguage(match, &status);
- if (lang == NULL || strcmp(lang, "en") != 0) {
+ if (lang == nullptr || strcmp(lang, "en") != 0) {
errln("Unfiltered input did not detect as English!");
}
}
@@ -490,7 +490,7 @@ void CharsetDetectionTest::C1BytesTest()
ucsdet_setText(csd, bWindows, lWindows, &status);
match = ucsdet_detect(csd, &status);
- if (match == NULL) {
+ if (match == nullptr) {
errcheckln(status, "English test with C1 bytes got no matches. - %s", u_errorName(status));
goto bail;
}
@@ -504,7 +504,7 @@ void CharsetDetectionTest::C1BytesTest()
ucsdet_setText(csd, bISO, lISO, &status);
match = ucsdet_detect(csd, &status);
- if (match == NULL) {
+ if (match == nullptr) {
errln("English text without C1 bytes got no matches.");
goto bail;
}
@@ -530,7 +530,7 @@ void CharsetDetectionTest::DetectionTest()
char path[2048];
const char *testFilePath = getPath(path, "csdetest.xml");
- if (testFilePath == NULL) {
+ if (testFilePath == nullptr) {
return; /* Couldn't get path: error message already output. */
}
@@ -550,7 +550,7 @@ void CharsetDetectionTest::DetectionTest()
const UXMLElement *testCase;
int32_t tc = 0;
- while((testCase = root->nextChildElement(tc)) != NULL) {
+ while((testCase = root->nextChildElement(tc)) != nullptr) {
if (testCase->getTagName().compare(test_case) == 0) {
const UnicodeString *id = testCase->getAttribute(id_attr);
const UnicodeString *encodings = testCase->getAttribute(enc_attr);
@@ -576,7 +576,7 @@ void CharsetDetectionTest::IBM424Test()
#if !UCONFIG_ONLY_HTML_CONVERSION
UErrorCode status = U_ZERO_ERROR;
- static const UChar chars[] = {
+ static const char16_t chars[] = {
0x05D4, 0x05E4, 0x05E8, 0x05E7, 0x05DC, 0x05D9, 0x05D8, 0x0020, 0x05D4, 0x05E6, 0x05D1, 0x05D0, 0x05D9, 0x0020, 0x05D4, 0x05E8,
0x05D0, 0x05E9, 0x05D9, 0x002C, 0x0020, 0x05EA, 0x05EA, 0x0020, 0x05D0, 0x05DC, 0x05D5, 0x05E3, 0x0020, 0x05D0, 0x05D1, 0x05D9,
0x05D7, 0x05D9, 0x0020, 0x05DE, 0x05E0, 0x05D3, 0x05DC, 0x05D1, 0x05DC, 0x05D9, 0x05D8, 0x002C, 0x0020, 0x05D4, 0x05D5, 0x05E8,
@@ -596,7 +596,7 @@ void CharsetDetectionTest::IBM424Test()
0x05EA, 0x05DE, 0x05DC, 0x05D9, 0x05DC, 0x0020, 0x05D4, 0x05E2, 0x05D3, 0x05D5, 0x05D9, 0x05D5, 0x05EA, 0x0000
};
- static const UChar chars_reverse[] = {
+ static const char16_t chars_reverse[] = {
0x05EA, 0x05D5, 0x05D9, 0x05D5, 0x05D3, 0x05E2, 0x05D4, 0x0020, 0x05DC, 0x05D9, 0x05DC, 0x05DE, 0x05EA,
0x05D1, 0x0020, 0x05DF, 0x05D9, 0x05D9, 0x05E2, 0x05E9, 0x0020, 0x05E8, 0x05D7, 0x05D0, 0x05DC, 0x0020, 0x05D5, 0x05EA, 0x05D8,
0x05DC, 0x05D7, 0x05D4, 0x0020, 0x05EA, 0x05D0, 0x0020, 0x05DC, 0x05D1, 0x05D9, 0x05E7, 0x0020, 0x05D8, 0x05D9, 0x05DC, 0x05D1,
@@ -639,7 +639,7 @@ void CharsetDetectionTest::IBM424Test()
ucsdet_setText(csd, bytes, bLength, &status);
match = ucsdet_detect(csd, &status);
- if (match == NULL) {
+ if (match == nullptr) {
errcheckln(status, "Encoding detection failure for IBM424_rtl: got no matches. - %s", u_errorName(status));
goto bail;
}
@@ -652,7 +652,7 @@ void CharsetDetectionTest::IBM424Test()
ucsdet_setText(csd, bytes_r, brLength, &status);
match = ucsdet_detect(csd, &status);
- if (match == NULL) {
+ if (match == nullptr) {
errln("Encoding detection failure for IBM424_ltr: got no matches.");
goto bail;
}
@@ -674,7 +674,7 @@ void CharsetDetectionTest::IBM420Test()
#if !UCONFIG_ONLY_HTML_CONVERSION
UErrorCode status = U_ZERO_ERROR;
- static const UChar chars[] = {
+ static const char16_t chars[] = {
0x0648, 0x064F, 0x0636, 0x0639, 0x062A, 0x0020, 0x0648, 0x0646, 0x064F, 0x0641, 0x0630, 0x062A, 0x0020, 0x0628, 0x0631, 0x0627,
0x0645, 0x062C, 0x0020, 0x062A, 0x0623, 0x0645, 0x064A, 0x0646, 0x0020, 0x0639, 0x062F, 0x064A, 0x062F, 0x0629, 0x0020, 0x0641,
0x064A, 0x0020, 0x0645, 0x0624, 0x0633, 0x0633, 0x0629, 0x0020, 0x0627, 0x0644, 0x062A, 0x0623, 0x0645, 0x064A, 0x0646, 0x0020,
@@ -690,7 +690,7 @@ void CharsetDetectionTest::IBM420Test()
0x062F, 0x064A, 0x0629, 0x0020, 0x0648, 0x0627, 0x0644, 0x0627, 0x062C, 0x062A, 0x0645, 0x0627, 0x0639, 0x064A, 0x0629, 0x002E,
0x0000
};
- static const UChar chars_reverse[] = {
+ static const char16_t chars_reverse[] = {
0x002E, 0x0629, 0x064A, 0x0639, 0x0627, 0x0645, 0x062A, 0x062C, 0x0627, 0x0644, 0x0627, 0x0648, 0x0020, 0x0629, 0x064A, 0x062F,
0x0627, 0x0635, 0x062A, 0x0642, 0x0627, 0x0644, 0x0627, 0x0020, 0x0631, 0x0637, 0x0627, 0x062E, 0x0645, 0x0644, 0x0627, 0x0020,
0x0647, 0x062C, 0x0648, 0x0628, 0x0020, 0x0644, 0x064A, 0x0626, 0x0627, 0x0631, 0x0633, 0x0627, 0x0020, 0x0629, 0x0644, 0x0648,
@@ -729,7 +729,7 @@ void CharsetDetectionTest::IBM420Test()
ucsdet_setText(csd, bytes, bLength, &status);
match = ucsdet_detect(csd, &status);
- if (match == NULL) {
+ if (match == nullptr) {
errcheckln(status, "Encoding detection failure for IBM420_rtl: got no matches. - %s", u_errorName(status));
goto bail;
}
@@ -742,7 +742,7 @@ void CharsetDetectionTest::IBM420Test()
ucsdet_setText(csd, bytes_r, brLength, &status);
match = ucsdet_detect(csd, &status);
- if (match == NULL) {
+ if (match == nullptr) {
errln("Encoding detection failure for IBM420_ltr: got no matches.\n");
goto bail;
}
@@ -856,7 +856,7 @@ void CharsetDetectionTest::Ticket21823Test() {
ucsdet_setText(csd, str.data(), str.length(), &status);
const UCharsetMatch* match = ucsdet_detect(csd, &status);
- if (match == NULL) {
+ if (match == nullptr) {
TEST_ASSERT(U_FAILURE(status));
}
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/csdetest.h b/Build/source/libs/icu/icu-src/source/test/intltest/csdetest.h
index 8893b88e591..c831dc05491 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/csdetest.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/csdetest.h
@@ -21,7 +21,7 @@ public:
CharsetDetectionTest();
virtual ~CharsetDetectionTest();
- virtual void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ virtual void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
virtual void ConstructionTest();
virtual void UTF8Test();
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/currcoll.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/currcoll.cpp
index d82ec91b476..f898422a8a0 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/currcoll.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/currcoll.cpp
@@ -44,7 +44,7 @@ CollationCurrencyTest::~CollationCurrencyTest()
void CollationCurrencyTest::currencyTest(/*char *par*/)
{
// All the currency symbols, in collation order
- static const UChar currency[][2] =
+ static const char16_t currency[][2] =
{
{ 0x00A4, 0x0000}, /*00A4; L; [14 36, 03, 03] # [082B.0020.0002] # CURRENCY SIGN*/
{ 0x00A2, 0x0000}, /*00A2; L; [14 38, 03, 03] # [082C.0020.0002] # CENT SIGN*/
@@ -67,7 +67,8 @@ void CollationCurrencyTest::currencyTest(/*char *par*/)
{ 0x20A4, 0x0000}, /*20A4; L; [14 50, 03, 03] # [0838.0020.0002] # LIRA SIGN*/
{ 0x20A5, 0x0000}, /*20A5; L; [14 52, 03, 03] # [0839.0020.0002] # MILL SIGN*/
{ 0x20A6, 0x0000}, /*20A6; L; [14 54, 03, 03] # [083A.0020.0002] # NAIRA SIGN*/
- { 0x20A7, 0x0000}, /*20A7; L; [14 56, 03, 03] # [083B.0020.0002] # PESETA SIGN*/
+ // Unicode 15.1: ₧ now sorts like "Pts", no longer as a stand-alone symbol.
+ // { 0x20A7, 0x0000}, /*20A7; L; [14 56, 03, 03] # [083B.0020.0002] # PESETA SIGN*/
{ 0x20A9, 0x0000}, /*20A9; L; [14 58, 03, 03] # [083C.0020.0002] # WON SIGN*/
{ 0xFFE6, 0x0000}, /*FFE6; L; [14 58, 03, 05] # [083C.0020.0003] # FULLWIDTH WON SIGN*/
{ 0x20AA, 0x0000}, /*20AA; L; [14 5A, 03, 03] # [083D.0020.0002] # NEW SHEQEL SIGN*/
@@ -82,7 +83,7 @@ void CollationCurrencyTest::currencyTest(/*char *par*/)
uint32_t i, j;
UErrorCode status = U_ZERO_ERROR;
Collator::EComparisonResult expectedResult = Collator::EQUAL;
- RuleBasedCollator *c = (RuleBasedCollator *)Collator::createInstance("en_US", status);
+ RuleBasedCollator *c = dynamic_cast<RuleBasedCollator*>(Collator::createInstance("en_US", status));
if (U_FAILURE(status))
{
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/currcoll.h b/Build/source/libs/icu/icu-src/source/test/intltest/currcoll.h
index 3527e939f0b..505bc2ea98a 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/currcoll.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/currcoll.h
@@ -31,7 +31,7 @@ public:
CollationCurrencyTest();
virtual ~CollationCurrencyTest();
- void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par = NULL) override;
+ void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par = nullptr) override;
void currencyTest(/*char *par*/);
};
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/dadrcal.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/dadrcal.cpp
index 6ac6630767f..75f1e4353ea 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/dadrcal.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/dadrcal.cpp
@@ -40,11 +40,11 @@ DataDrivenCalendarTest::~DataDrivenCalendarTest() {
void DataDrivenCalendarTest::runIndexedTest(int32_t index, UBool exec,
const char* &name, char* /*par */) {
- if (driver != NULL) {
+ if (driver != nullptr) {
if (exec) {
// logln("Begin ");
}
- const DataMap *info= NULL;
+ const DataMap *info= nullptr;
UErrorCode status= U_ZERO_ERROR;
TestData *testData = driver->createTestData(index, status);
if (U_SUCCESS(status)) {
@@ -78,7 +78,7 @@ void DataDrivenCalendarTest::testOps(TestData *testData,
UDate fromDate = 0; // TODO
UDate toDate = 0;
- const DataMap *currentCase= NULL;
+ const DataMap *currentCase= nullptr;
char toCalLoc[256] = "";
// TODO: static strings?
@@ -98,12 +98,12 @@ void DataDrivenCalendarTest::testOps(TestData *testData,
int n = 0;
while (testData->nextCase(currentCase, status)) {
++n;
- Calendar *toCalendar= NULL;
- Calendar *fromCalendar= NULL;
+ Calendar *toCalendar= nullptr;
+ Calendar *fromCalendar= nullptr;
// load parameters
char theCase[200];
- sprintf(theCase, "[case %d]", n);
+ snprintf(theCase, sizeof(theCase), "[case %d]", n);
UnicodeString caseString(theCase, "");
// build to calendar
// Headers { "locale","from","operation","params","to" }
@@ -367,7 +367,7 @@ void DataDrivenCalendarTest::testConvert(TestData *testData,
const DataMap *settings, UBool forward) {
UErrorCode status = U_ZERO_ERROR;
LocalPointer<Calendar> toCalendar;
- const DataMap *currentCase= NULL;
+ const DataMap *currentCase= nullptr;
char toCalLoc[256] = "";
char fromCalLoc[256] = "";
// build to calendar
@@ -445,12 +445,12 @@ void DataDrivenCalendarTest::testConvert(TestData *testData,
}
void DataDrivenCalendarTest::processTest(TestData *testData) {
- //Calendar *cal= NULL;
- //const UChar *arguments= NULL;
+ //Calendar *cal= nullptr;
+ //const char16_t *arguments= nullptr;
//int32_t argLen = 0;
char testType[256] = "";
- const DataMap *settings= NULL;
- //const UChar *type= NULL;
+ const DataMap *settings= nullptr;
+ //const char16_t *type= nullptr;
UErrorCode status = U_ZERO_ERROR;
UnicodeString testSetting;
int n = 0;
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/dadrcal.h b/Build/source/libs/icu/icu-src/source/test/intltest/dadrcal.h
index 5589603a657..d8b83c00823 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/dadrcal.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/dadrcal.h
@@ -31,7 +31,7 @@ class CalendarFieldsSet;
class DataDrivenCalendarTest : public IntlTest {
void runIndexedTest(int32_t index, UBool exec, const char* &name,
- char* par = NULL) override;
+ char* par = nullptr) override;
public:
DataDrivenCalendarTest();
virtual ~DataDrivenCalendarTest();
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/dadrfmt.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/dadrfmt.cpp
index e59e45997aa..e782169dd3d 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/dadrfmt.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/dadrfmt.cpp
@@ -42,11 +42,11 @@ DataDrivenFormatTest::~DataDrivenFormatTest() {
void DataDrivenFormatTest::runIndexedTest(int32_t index, UBool exec,
const char* &name, char* /*par */) {
- if (driver != NULL) {
+ if (driver != nullptr) {
if (exec) {
// logln("Begin ");
}
- const DataMap *info= NULL;
+ const DataMap *info= nullptr;
UErrorCode status= U_ZERO_ERROR;
TestData *testData = driver->createTestData(index, status);
if (U_SUCCESS(status)) {
@@ -108,7 +108,7 @@ void DataDrivenFormatTest::testConvertDate(TestData *testData,
return;
}
- const DataMap *currentCase= NULL;
+ const DataMap *currentCase= nullptr;
// Start the processing
int n = 0;
while (testData->nextCase(currentCase, status)) {
@@ -126,7 +126,7 @@ void DataDrivenFormatTest::testConvertDate(TestData *testData,
++n;
char theCase[200];
- sprintf(theCase, "case %d:", n);
+ snprintf(theCase, sizeof(theCase), "case %d:", n);
UnicodeString caseString(theCase, "");
// load params
@@ -156,7 +156,7 @@ void DataDrivenFormatTest::testConvertDate(TestData *testData,
continue;
}
- DateFormat *format = NULL;
+ DateFormat *format = nullptr;
// Process: 'locale'
locale.extract(0, locale.length(), calLoc, (const char*)0); // default codepage. Invariant codepage doesn't have '@'!
@@ -175,7 +175,7 @@ void DataDrivenFormatTest::testConvertDate(TestData *testData,
continue;
}
format = DateFormat::createDateTimeInstance((DateFormat::EStyle)styleSet.getDateStyle(), (DateFormat::EStyle)styleSet.getTimeStyle(), loc);
- if(format == NULL ) {
+ if(format == nullptr ) {
errln("case %d: could not create SimpleDateFormat from styles.", n);
continue;
}
@@ -327,12 +327,12 @@ void DataDrivenFormatTest::testConvertDate(TestData *testData,
}
void DataDrivenFormatTest::processTest(TestData *testData) {
- //Format *cal= NULL;
- //const UChar *arguments= NULL;
+ //Format *cal= nullptr;
+ //const char16_t *arguments= nullptr;
//int32_t argLen = 0;
char testType[256] = "";
- const DataMap *settings= NULL;
- //const UChar *type= NULL;
+ const DataMap *settings= nullptr;
+ //const char16_t *type= nullptr;
UErrorCode status = U_ZERO_ERROR;
UnicodeString testSetting;
int n = 0;
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/dadrfmt.h b/Build/source/libs/icu/icu-src/source/test/intltest/dadrfmt.h
index 7d3fc1909ea..e8d8cfd00f9 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/dadrfmt.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/dadrfmt.h
@@ -31,7 +31,7 @@ class DataMap;
class DataDrivenFormatTest : public IntlTest {
void runIndexedTest(int32_t index, UBool exec, const char* &name,
- char* par = NULL) override;
+ char* par = nullptr) override;
public:
DataDrivenFormatTest();
virtual ~DataDrivenFormatTest();
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/datadrivennumberformattestsuite.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/datadrivennumberformattestsuite.cpp
index 25e351eacde..353b0478239 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/datadrivennumberformattestsuite.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/datadrivennumberformattestsuite.cpp
@@ -15,8 +15,8 @@
#include "unicode/localpointer.h"
#include "ustrfmt.h"
-static UBool isCROrLF(UChar c) { return c == 0xa || c == 0xd; }
-static UBool isSpace(UChar c) { return c == 9 || c == 0x20 || c == 0x3000; }
+static UBool isCROrLF(char16_t c) { return c == 0xa || c == 0xd; }
+static UBool isSpace(char16_t c) { return c == 9 || c == 0x20 || c == 0x3000; }
void DataDrivenNumberFormatTestSuite::run(const char *fileName, UBool runAllTests) {
fFileLineNumber = 0;
@@ -119,7 +119,7 @@ DataDrivenNumberFormatTestSuite::~DataDrivenNumberFormatTestSuite() {
}
UBool DataDrivenNumberFormatTestSuite::breaksC() {
- return (NFTT_GET_FIELD(fTuple, breaks, "").toUpper().indexOf((UChar)0x43) != -1);
+ return (NFTT_GET_FIELD(fTuple, breaks, "").toUpper().indexOf((char16_t)0x43) != -1);
}
void DataDrivenNumberFormatTestSuite::setTupleField(UErrorCode &status) {
@@ -146,12 +146,12 @@ int32_t
DataDrivenNumberFormatTestSuite::splitBy(
UnicodeString *columnValues,
int32_t columnValuesCount,
- UChar delimiter) {
+ char16_t delimiter) {
int32_t colIdx = 0;
int32_t colStart = 0;
int32_t len = fFileLine.length();
for (int32_t idx = 0; colIdx < columnValuesCount - 1 && idx < len; ++idx) {
- UChar ch = fFileLine.charAt(idx);
+ char16_t ch = fFileLine.charAt(idx);
if (ch == delimiter) {
columnValues[colIdx++] =
fFileLine.tempSubString(colStart, idx - colStart);
@@ -175,7 +175,7 @@ void DataDrivenNumberFormatTestSuite::showError(const char *message) {
}
void DataDrivenNumberFormatTestSuite::showFailure(const UnicodeString &message) {
- UChar lineStr[20];
+ char16_t lineStr[20];
uprv_itou(
lineStr, UPRV_LENGTHOF(lineStr), (uint32_t) fFileLineNumber, 10, 1);
UnicodeString fullMessage("line ");
@@ -187,8 +187,8 @@ void DataDrivenNumberFormatTestSuite::showFailure(const UnicodeString &message)
UBool DataDrivenNumberFormatTestSuite::readLine(
UCHARBUF *f, UErrorCode &status) {
int32_t lineLength;
- const UChar *line = ucbuf_readline(f, &lineLength, &status);
- if(line == NULL || U_FAILURE(status)) {
+ const char16_t *line = ucbuf_readline(f, &lineLength, &status);
+ if(line == nullptr || U_FAILURE(status)) {
if (U_FAILURE(status)) {
errln("Error reading line from file.");
}
@@ -269,7 +269,7 @@ UBool DataDrivenNumberFormatTestSuite::isFormatPass(
UObject *DataDrivenNumberFormatTestSuite::newFormatter(
UErrorCode & /*status*/) {
- return NULL;
+ return nullptr;
}
UBool DataDrivenNumberFormatTestSuite::isToPatternPass(
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/datadrivennumberformattestsuite.h b/Build/source/libs/icu/icu-src/source/test/intltest/datadrivennumberformattestsuite.h
index b2b1281932e..ad92df18371 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/datadrivennumberformattestsuite.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/datadrivennumberformattestsuite.h
@@ -30,7 +30,7 @@ class DataDrivenNumberFormatTestSuite : public IntlTest {
public:
DataDrivenNumberFormatTestSuite() {
for (int32_t i = 0; i < UPRV_LENGTHOF(fPreviousFormatters); ++i) {
- fPreviousFormatters[i] = NULL;
+ fPreviousFormatters[i] = nullptr;
}
}
@@ -129,7 +129,7 @@ class DataDrivenNumberFormatTestSuite : public IntlTest {
int32_t splitBy(
UnicodeString *columnValues,
int32_t columnValueCount,
- UChar delimiter);
+ char16_t delimiter);
void showError(const char *message);
void showFailure(const UnicodeString &message);
void showLineInfo();
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/dcfmapts.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/dcfmapts.cpp
index db97c7fe778..488ef79f252 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/dcfmapts.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/dcfmapts.cpp
@@ -653,7 +653,7 @@ void IntlTestDecimalFormatAPI::TestScale()
auto lhs = (expect); \
auto rhs = (actual); \
char tmp[200]; \
- sprintf(tmp, "(%g==%g)", (double)lhs, (double)rhs); \
+ snprintf(tmp, sizeof(tmp), "(%g==%g)", (double)lhs, (double)rhs); \
assertTrue(tmp, (lhs==rhs), false, true, __FILE__, __LINE__); \
} UPRV_BLOCK_MACRO_END
@@ -1379,12 +1379,16 @@ void IntlTestDecimalFormatAPI::testInvalidObject() {
(int64_t) nullptr, (int64_t) lnf);
// Should not crash when chaining to error code enabled methods on the LNF
+#if !defined(__clang__)
+// ubsan does not like the following. I have not yet find a good way to do run
+// time check of ubsan, so I just skip the following test on clang for now
lnf->formatInt(1, status);
lnf->formatDouble(1.0, status);
lnf->formatDecimal("1", status);
lnf->toFormat(status);
lnf->toSkeleton(status);
lnf->copyErrorTo(status);
+#endif
}
}
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/dcfmapts.h b/Build/source/libs/icu/icu-src/source/test/intltest/dcfmapts.h
index 71595ed4ee1..634cad7d5c0 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/dcfmapts.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/dcfmapts.h
@@ -19,7 +19,7 @@
class IntlTestDecimalFormatAPI: public IntlTest {
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
public:
/**
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/dcfmtest.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/dcfmtest.cpp
index 9c114240395..f6d6dc1a6b9 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/dcfmtest.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/dcfmtest.cpp
@@ -213,12 +213,12 @@ void DecimalFormatTest::DataDrivenTests() {
// Open and read the test data file.
//
srcPath=getPath(tdd, "dcfmtest.txt");
- if(srcPath==NULL) {
+ if(srcPath==nullptr) {
return; /* something went wrong, error already output */
}
int32_t len;
- UChar *testData = ReadAndConvertFile(srcPath, len, "utf-8", status);
+ char16_t *testData = ReadAndConvertFile(srcPath, len, "utf-8", status);
if (U_FAILURE(status)) {
return; /* something went wrong, error already output */
}
@@ -239,7 +239,7 @@ void DecimalFormatTest::DataDrivenTests() {
RegexMatcher formatLineMat(UnicodeString(
"(?i)\\s*format\\s+"
"(\\S+)\\s+" // Capture group 1: pattern
- "(ceiling|floor|down|up|halfeven|halfdown|halfup|default|unnecessary)\\s+" // Capture group 2: Rounding Mode
+ "([a-z]+)\\s+" // Capture group 2: Rounding Mode
"\"([^\"]*)\"\\s+" // Capture group 3: input
"\"([^\"]*)\"" // Capture group 4: expected output
"\\s*(?:#.*)?"), // Trailing comment
@@ -435,6 +435,12 @@ void DecimalFormatTest::execFormatTest(int32_t lineNum,
// don't set any value.
} else if (round=="unnecessary") {
fmtr.setRoundingMode(DecimalFormat::kRoundUnnecessary);
+ } else if (round=="halfodd") {
+ fmtr.setRoundingMode(DecimalFormat::kRoundHalfOdd);
+ } else if (round=="halfceiling") {
+ fmtr.setRoundingMode(DecimalFormat::kRoundHalfCeiling);
+ } else if (round=="halffloor") {
+ fmtr.setRoundingMode(DecimalFormat::kRoundHalfFloor);
} else {
fmtr.setRoundingMode(DecimalFormat::kRoundFloor);
errln("file dcfmtest.txt, line %d: Bad rounding mode \"%s\"",
@@ -451,12 +457,12 @@ void DecimalFormatTest::execFormatTest(int32_t lineNum,
typeStr = "Formattable";
Formattable fmtbl;
fmtbl.setDecimalNumber(spInput, status);
- fmtr.format(fmtbl, result, NULL, status);
+ fmtr.format(fmtbl, result, nullptr, status);
}
break;
case kStringPiece:
typeStr = "StringPiece";
- fmtr.format(spInput, result, NULL, status);
+ fmtr.format(spInput, result, nullptr, status);
break;
}
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/dcfmtest.h b/Build/source/libs/icu/icu-src/source/test/intltest/dcfmtest.h
index 60d57a30aee..be19251f22a 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/dcfmtest.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/dcfmtest.h
@@ -29,7 +29,7 @@ public:
DecimalFormatTest();
virtual ~DecimalFormatTest();
- virtual void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ virtual void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
// The following are test functions that are visible from the intltest test framework.
virtual void DataDrivenTests();
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/decoll.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/decoll.cpp
index b76eb77fb74..93b969e988b 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/decoll.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/decoll.cpp
@@ -43,7 +43,7 @@ CollationGermanTest::CollationGermanTest()
errcheckln(status, __FILE__ "failed to create! err " + UnicodeString(u_errorName(status)));
/* if it wasn't already: */
delete myCollation;
- myCollation = NULL;
+ myCollation = nullptr;
}
}
@@ -52,7 +52,7 @@ CollationGermanTest::~CollationGermanTest()
delete myCollation;
}
-const UChar CollationGermanTest::testSourceCases[][CollationGermanTest::MAX_TOKEN_LEN] =
+const char16_t CollationGermanTest::testSourceCases[][CollationGermanTest::MAX_TOKEN_LEN] =
{
{0x47, 0x72, 0x00F6, 0x00DF, 0x65, 0},
{0x61, 0x62, 0x63, 0},
@@ -68,7 +68,7 @@ const UChar CollationGermanTest::testSourceCases[][CollationGermanTest::MAX_TOKE
{0x53, 0x74, 0x72, 0x61, 0x00DF, 0x65, 0}
};
-const UChar CollationGermanTest::testTargetCases[][CollationGermanTest::MAX_TOKEN_LEN] =
+const char16_t CollationGermanTest::testTargetCases[][CollationGermanTest::MAX_TOKEN_LEN] =
{
{0x47, 0x72, 0x6f, 0x73, 0x73, 0x69, 0x73, 0x74, 0},
{0x61, 0x0308, 0x62, 0x63, 0},
@@ -104,7 +104,7 @@ const Collator::EComparisonResult CollationGermanTest::results[][2] =
void CollationGermanTest::TestTertiary(/* char* par */)
{
- if(myCollation == NULL ) {
+ if(myCollation == nullptr ) {
dataerrln("decoll: cannot start test, collator is null\n");
return;
}
@@ -120,7 +120,7 @@ void CollationGermanTest::TestTertiary(/* char* par */)
}
void CollationGermanTest::TestPrimary(/* char* par */)
{
- if(myCollation == NULL ) {
+ if(myCollation == nullptr ) {
dataerrln("decoll: cannot start test, collator is null\n");
return;
}
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/decoll.h b/Build/source/libs/icu/icu-src/source/test/intltest/decoll.h
index ee7e2afae05..5459c9b14f3 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/decoll.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/decoll.h
@@ -28,7 +28,7 @@ public:
CollationGermanTest();
virtual ~CollationGermanTest();
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
// perform test with strength PRIMARY
void TestPrimary(/* char* par */);
@@ -40,8 +40,8 @@ public:
void TestTertiary(/* char* par */);
private:
- static const UChar testSourceCases[][MAX_TOKEN_LEN];
- static const UChar testTargetCases[][MAX_TOKEN_LEN];
+ static const char16_t testSourceCases[][MAX_TOKEN_LEN];
+ static const char16_t testTargetCases[][MAX_TOKEN_LEN];
static const Collator::EComparisonResult results[][2];
Collator *myCollation;
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/dtfmapts.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/dtfmapts.cpp
index 361c35c5bae..d95f6a3217c 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/dtfmapts.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/dtfmapts.cpp
@@ -69,7 +69,7 @@ void IntlTestDateFormatAPI::runIndexedTest( int32_t index, UBool exec, const cha
/**
* Add better code coverage.
*/
-void IntlTestDateFormatAPI::TestCoverage(void)
+void IntlTestDateFormatAPI::TestCoverage()
{
const char *LOCALES[] = {
"zh_CN@calendar=chinese",
@@ -81,7 +81,7 @@ void IntlTestDateFormatAPI::TestCoverage(void)
for (int32_t i = 0; i < numOfLocales; i++) {
DateFormat *df = DateFormat::createDateTimeInstance(DateFormat::kMedium, DateFormat::kMedium, Locale(LOCALES[i]));
- if (df == NULL){
+ if (df == nullptr){
dataerrln("Error creating DateFormat instances.");
return;
}
@@ -91,7 +91,7 @@ void IntlTestDateFormatAPI::TestCoverage(void)
/**
* Test that the equals method works correctly.
*/
-void IntlTestDateFormatAPI::TestEquals(void)
+void IntlTestDateFormatAPI::TestEquals()
{
UErrorCode status = U_ZERO_ERROR;
// Create two objects at different system times
@@ -100,7 +100,7 @@ void IntlTestDateFormatAPI::TestEquals(void)
while (Calendar::getNow() == start) ; // Wait for time to change
DateFormat *b = DateFormat::createInstance();
- if (a == NULL || b == NULL){
+ if (a == nullptr || b == nullptr){
dataerrln("Error calling DateFormat::createInstance()");
delete a;
delete b;
@@ -111,7 +111,7 @@ void IntlTestDateFormatAPI::TestEquals(void)
errln("FAIL: DateFormat objects created at different times are unequal.");
SimpleDateFormat *sdtfmt = dynamic_cast<SimpleDateFormat *>(b);
- if (sdtfmt != NULL)
+ if (sdtfmt != nullptr)
{
double ONE_YEAR = 365*24*60*60*1000.0;
sdtfmt->set2DigitYearStart(start + 50*ONE_YEAR, status);
@@ -141,12 +141,12 @@ void IntlTestDateFormatAPI::testAPI(/* char* par */)
DateFormat *it = DateFormat::createDateInstance(DateFormat::MEDIUM, Locale::getItalian());
DateFormat *de = DateFormat::createDateTimeInstance(DateFormat::LONG, DateFormat::LONG, Locale::getGerman());
- if (def == NULL || fr == NULL || it == NULL || de == NULL){
+ if (def == nullptr || fr == nullptr || it == nullptr || de == nullptr){
dataerrln("Error creating DateFormat instances.");
}
// ======= Test equality
-if (fr != NULL && def != NULL)
+if (fr != nullptr && def != nullptr)
{
logln("Testing equality operator");
@@ -156,7 +156,7 @@ if (fr != NULL && def != NULL)
}
// ======= Test various format() methods
-if (fr != NULL && it != NULL && de != NULL)
+if (fr != nullptr && it != nullptr && de != nullptr)
{
logln("Testing various format() methods");
@@ -181,7 +181,7 @@ if (fr != NULL && it != NULL && de != NULL)
}
// ======= Test parse()
-if (def != NULL)
+if (def != nullptr)
{
logln("Testing parse()");
@@ -208,7 +208,7 @@ if (def != NULL)
}
// ======= Test getters and setters
-if (fr != NULL && it != NULL && de != NULL)
+if (fr != nullptr && it != nullptr && de != nullptr)
{
logln("Testing getters and setters");
@@ -277,7 +277,7 @@ if (fr != NULL && it != NULL && de != NULL)
* the DateFormat API test.
*/
void
-IntlTestDateFormatAPI::TestNameHiding(void) {
+IntlTestDateFormatAPI::TestNameHiding() {
// N.B.: This test passes if it COMPILES, since it's a test of
// compile-time name hiding.
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/dtfmapts.h b/Build/source/libs/icu/icu-src/source/test/intltest/dtfmapts.h
index 3ded5df2ff3..c863468ad41 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/dtfmapts.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/dtfmapts.h
@@ -22,7 +22,7 @@
* verifies that it works on a basic level.
*/
class IntlTestDateFormatAPI: public IntlTest {
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
private:
/**
@@ -32,17 +32,17 @@ private:
/**
* Test that the equals method works correctly.
*/
- void TestEquals(void);
+ void TestEquals();
/**
* Test that no parse or format methods are hidden.
*/
- void TestNameHiding(void);
+ void TestNameHiding();
/**
* Add better code coverage.
*/
- void TestCoverage(void);
+ void TestCoverage();
};
#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/dtfmrgts.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/dtfmrgts.cpp
index 70e7a94d20f..6aa601e0855 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/dtfmrgts.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/dtfmrgts.cpp
@@ -73,19 +73,19 @@ DateFormatRegressionTest::runIndexedTest( int32_t index, UBool exec, const char*
/**
* @bug 4029195
*/
-void DateFormatRegressionTest::Test4029195(void)
+void DateFormatRegressionTest::Test4029195()
{
UErrorCode status = U_ZERO_ERROR;
UDate today = Calendar::getNow();
logln((UnicodeString) "today: " + today);
- SimpleDateFormat *sdf = (SimpleDateFormat*) DateFormat::createDateInstance();
+ SimpleDateFormat *sdf = dynamic_cast<SimpleDateFormat*>(DateFormat::createDateInstance());
if (failure(status, "SimpleDateFormat::createDateInstance")) {
return;
}
UnicodeString pat;
- if(sdf == NULL){
+ if(sdf == nullptr){
dataerrln("Error calling DateFormat::createDateTimeInstance");
return;
}
@@ -129,12 +129,12 @@ void DateFormatRegressionTest::Test4029195(void)
/**
* @bug 4052408
*/
-void DateFormatRegressionTest::Test4052408(void)
+void DateFormatRegressionTest::Test4052408()
{
DateFormat *fmt = DateFormat::createDateTimeInstance(DateFormat::SHORT,
DateFormat::SHORT, Locale::getUS());
- if (fmt == NULL) {
+ if (fmt == nullptr) {
dataerrln("Error calling DateFormat::createDateTimeInstance");
return;
}
@@ -230,7 +230,7 @@ void DateFormatRegressionTest::Test4052408(void)
* @bug 4056591
* Verify the function of the [s|g]et2DigitYearStart() API.
*/
-void DateFormatRegressionTest::Test4056591(void)
+void DateFormatRegressionTest::Test4056591()
{
UErrorCode status = U_ZERO_ERROR;
@@ -287,7 +287,7 @@ void DateFormatRegressionTest::Test4056591(void)
/**
* @bug 4059917
*/
-void DateFormatRegressionTest::Test4059917(void)
+void DateFormatRegressionTest::Test4059917()
{
UErrorCode status = U_ZERO_ERROR;
@@ -337,7 +337,7 @@ void DateFormatRegressionTest::aux917( SimpleDateFormat *fmt, UnicodeString& str
/**
* @bug 4060212
*/
-void DateFormatRegressionTest::Test4060212(void)
+void DateFormatRegressionTest::Test4060212()
{
UnicodeString dateString = "1995-040.05:01:29";
@@ -386,7 +386,7 @@ void DateFormatRegressionTest::Test4060212(void)
/**
* @bug 4061287
*/
-void DateFormatRegressionTest::Test4061287(void)
+void DateFormatRegressionTest::Test4061287()
{
UErrorCode status = U_ZERO_ERROR;
@@ -422,7 +422,7 @@ void DateFormatRegressionTest::Test4061287(void)
/**
* @bug 4065240
*/
-void DateFormatRegressionTest::Test4065240(void)
+void DateFormatRegressionTest::Test4065240()
{
UDate curDate;
DateFormat *shortdate, *fulldate;
@@ -440,13 +440,13 @@ void DateFormatRegressionTest::Test4065240(void)
TimeZone::adoptDefault(TimeZone::createTimeZone("EST"));
curDate = date(98, 0, 1);
shortdate = DateFormat::createDateInstance(DateFormat::SHORT);
- if (shortdate == NULL){
+ if (shortdate == nullptr){
dataerrln("Error calling DateFormat::createDateInstance");
return;
}
fulldate = DateFormat::createDateTimeInstance(DateFormat::LONG, DateFormat::LONG);
- if (fulldate == NULL){
+ if (fulldate == nullptr){
dataerrln("Error calling DateFormat::createDateTimeInstance");
return;
}
@@ -466,7 +466,7 @@ void DateFormatRegressionTest::Test4065240(void)
// Check to see if the resource is present; if not, we can't test
ResourceBundle *bundle = new ResourceBundle(
- NULL, *curLocale, status);
+ nullptr, *curLocale, status);
failure(status, "new ResourceBundle");
//(UnicodeString) "java.text.resources.DateFormatZoneData", curLocale);
@@ -505,12 +505,12 @@ void DateFormatRegressionTest::Test4065240(void)
/**
* @bug 4071441
*/
-void DateFormatRegressionTest::Test4071441(void)
+void DateFormatRegressionTest::Test4071441()
{
DateFormat *fmtA = DateFormat::createInstance();
DateFormat *fmtB = DateFormat::createInstance();
- if (fmtA == NULL || fmtB == NULL){
+ if (fmtA == nullptr || fmtB == nullptr){
dataerrln("Error calling DateFormat::createInstance");
delete fmtA;
delete fmtB;
@@ -518,8 +518,8 @@ void DateFormatRegressionTest::Test4071441(void)
}
// {sfb} Is it OK to cast away const here?
- Calendar *calA = (Calendar*) fmtA->getCalendar();
- Calendar *calB = (Calendar*) fmtB->getCalendar();
+ Calendar *calA = const_cast<Calendar*>(fmtA->getCalendar());
+ Calendar *calB = const_cast<Calendar*>(fmtB->getCalendar());
if(!calA || !calB) {
errln("Couldn't get proper calendars, exiting");
delete fmtA;
@@ -564,7 +564,7 @@ void DateFormatRegressionTest::Test4071441(void)
/**
* @bug 4073003
*/
-void DateFormatRegressionTest::Test4073003(void)
+void DateFormatRegressionTest::Test4073003()
{
//try {
UErrorCode ec = U_ZERO_ERROR;
@@ -600,7 +600,7 @@ void DateFormatRegressionTest::Test4073003(void)
/**
* @bug 4089106
*/
-void DateFormatRegressionTest::Test4089106(void)
+void DateFormatRegressionTest::Test4089106()
{
TimeZone *def = TimeZone::createDefault();
//try {
@@ -635,7 +635,7 @@ void DateFormatRegressionTest::Test4089106(void)
// {sfb} not applicable in C++??
-void DateFormatRegressionTest::Test4100302(void)
+void DateFormatRegressionTest::Test4100302()
{
/* Locale locales [] = {
Locale::CANADA,
@@ -704,7 +704,7 @@ void DateFormatRegressionTest::Test4100302(void)
/**
* @bug 4101483
*/
-void DateFormatRegressionTest::Test4101483(void)
+void DateFormatRegressionTest::Test4101483()
{
UErrorCode status = U_ZERO_ERROR;
SimpleDateFormat sdf(UnicodeString("z"), Locale::getUS(), status);
@@ -731,7 +731,7 @@ void DateFormatRegressionTest::Test4101483(void)
* NT; it would actually have failed on any non-US locale. Now it should
* work on all locales.
*/
-void DateFormatRegressionTest::Test4103340(void)
+void DateFormatRegressionTest::Test4103340()
{
UErrorCode status = U_ZERO_ERROR;
@@ -757,7 +757,7 @@ void DateFormatRegressionTest::Test4103340(void)
/**
* @bug 4103341
*/
-void DateFormatRegressionTest::Test4103341(void)
+void DateFormatRegressionTest::Test4103341()
{
LocalPointer<TimeZone> saveZone(TimeZone::createDefault());
if (!saveZone.isValid()) {
@@ -781,7 +781,7 @@ void DateFormatRegressionTest::Test4103341(void)
/**
* @bug 4104136
*/
-void DateFormatRegressionTest::Test4104136(void)
+void DateFormatRegressionTest::Test4104136()
{
UErrorCode status = U_ZERO_ERROR;
SimpleDateFormat *sdf = new SimpleDateFormat(status);
@@ -845,7 +845,7 @@ void DateFormatRegressionTest::Test4104136(void)
* StringIndexOutOfBoundsException during the second parse. However,
* this is not seen.
*/
-void DateFormatRegressionTest::Test4104522(void)
+void DateFormatRegressionTest::Test4104522()
{
UErrorCode status = U_ZERO_ERROR;
@@ -880,7 +880,7 @@ void DateFormatRegressionTest::Test4104522(void)
/**
* @bug 4106807
*/
-void DateFormatRegressionTest::Test4106807(void)
+void DateFormatRegressionTest::Test4106807()
{
UDate dt;
DateFormat *df = DateFormat::createDateTimeInstance();
@@ -973,7 +973,7 @@ void DateFormatRegressionTest::Test4106807(void)
*/
// {sfb} what to do with this one ??
-void DateFormatRegressionTest::Test4108407(void)
+void DateFormatRegressionTest::Test4108407()
{
/*long l = System.currentTimeMillis();
logln("user.timezone = " + System.getProperty("user.timezone", "?"));
@@ -992,7 +992,7 @@ void DateFormatRegressionTest::Test4108407(void)
* @bug 4134203
* SimpleDateFormat won't parse "GMT"
*/
-void DateFormatRegressionTest::Test4134203(void)
+void DateFormatRegressionTest::Test4134203()
{
UErrorCode status = U_ZERO_ERROR;
UnicodeString dateFormat = "MM/dd/yy HH:mm:ss zzz";
@@ -1011,7 +1011,7 @@ void DateFormatRegressionTest::Test4134203(void)
* @bug 4151631
* SimpleDateFormat incorrect handling of 2 single quotes in format()
*/
-void DateFormatRegressionTest::Test4151631(void)
+void DateFormatRegressionTest::Test4151631()
{
UnicodeString pattern = "'TO_DATE('''dd'-'MM'-'yyyy HH:mm:ss''' , ''DD-MM-YYYY HH:MI:SS'')'";
logln("pattern=" + pattern);
@@ -1034,7 +1034,7 @@ void DateFormatRegressionTest::Test4151631(void)
* 'z' at end of date format throws index exception in SimpleDateFormat
* CANNOT REPRODUCE THIS BUG ON 1.2FCS
*/
-void DateFormatRegressionTest::Test4151706(void)
+void DateFormatRegressionTest::Test4151706()
{
UnicodeString dateString("Thursday, 31-Dec-98 23:00:00 GMT");
UErrorCode status = U_ZERO_ERROR;
@@ -1060,7 +1060,7 @@ void DateFormatRegressionTest::Test4151706(void)
* of some other bug that has been fixed.
*/
void
-DateFormatRegressionTest::Test4162071(void)
+DateFormatRegressionTest::Test4162071()
{
UnicodeString dateString("Thu, 30-Jul-1999 11:51:14 GMT");
UnicodeString format("EEE', 'dd-MMM-yyyy HH:mm:ss z"); // RFC 822/1123
@@ -1088,7 +1088,7 @@ DateFormatRegressionTest::Test4162071(void)
/**
* DateFormat shouldn't parse year "-1" as a two-digit year (e.g., "-1" -> 1999).
*/
-void DateFormatRegressionTest::Test4182066(void) {
+void DateFormatRegressionTest::Test4182066() {
UErrorCode status = U_ZERO_ERROR;
SimpleDateFormat fmt("MM/dd/yy", Locale::getUS(), status);
SimpleDateFormat dispFmt("MMM dd yyyy GG", Locale::getUS(), status);
@@ -1140,7 +1140,7 @@ void DateFormatRegressionTest::Test4182066(void) {
actStr.append("null");
} else {
// Yuck: See j25
- ((DateFormat*)&dispFmt)->format(actual, actStr);
+ (dynamic_cast<DateFormat*>(&dispFmt))->format(actual, actStr);
}
if (expected == actual) {
@@ -1151,7 +1151,7 @@ void DateFormatRegressionTest::Test4182066(void) {
expStr.append("null");
} else {
// Yuck: See j25
- ((DateFormat*)&dispFmt)->format(expected, expStr);
+ (dynamic_cast<DateFormat*>(&dispFmt))->format(expected, expStr);
}
out.append("FAIL: " + str + " => " + actStr
+ ", expected " + expStr + "\n");
@@ -1170,18 +1170,18 @@ void DateFormatRegressionTest::Test4182066(void) {
* DateFormat cannot parse Feb 29 2000 when setLenient(false)
*/
void
-DateFormatRegressionTest::Test4210209(void) {
+DateFormatRegressionTest::Test4210209() {
UErrorCode status = U_ZERO_ERROR;
UnicodeString pattern("MMM d, yyyy");
SimpleDateFormat sfmt(pattern, Locale::getUS(), status);
SimpleDateFormat sdisp("MMM dd yyyy GG", Locale::getUS(), status);
- DateFormat& fmt = *(DateFormat*)&sfmt; // Yuck: See j25
- DateFormat& disp = *(DateFormat*)&sdisp; // Yuck: See j25
+ DateFormat& fmt = *dynamic_cast<DateFormat*>(&sfmt); // Yuck: See j25
+ DateFormat& disp = *dynamic_cast<DateFormat*>(&sdisp); // Yuck: See j25
if (U_FAILURE(status)) {
dataerrln("Couldn't create SimpleDateFormat - %s", u_errorName(status));
return;
}
- Calendar* calx = (Calendar*)fmt.getCalendar(); // cast away const!
+ Calendar* calx = const_cast<Calendar*>(fmt.getCalendar()); // cast away const!
calx->setLenient(false);
UDate d = date(2000-1900, UCAL_FEBRUARY, 29);
UnicodeString s, ss;
@@ -1216,14 +1216,14 @@ DateFormatRegressionTest::Test4210209(void) {
}
}
-void DateFormatRegressionTest::Test714(void)
+void DateFormatRegressionTest::Test714()
{
//try {
UDate d(978103543000.);
DateFormat *fmt = DateFormat::createDateTimeInstance(DateFormat::NONE,
DateFormat::MEDIUM,
Locale::getUS());
- if (fmt == NULL) {
+ if (fmt == nullptr) {
dataerrln("Error calling DateFormat::createDateTimeInstance");
return;
}
@@ -1274,11 +1274,11 @@ public:
wom(xwom),
dow(xdow),
data(xdata,""),
- normalized((xnormalized==NULL)?xdata:xnormalized,"")
+ normalized((xnormalized==nullptr)?xdata:xnormalized,"")
{ }
};
-void DateFormatRegressionTest::Test1684(void)
+void DateFormatRegressionTest::Test1684()
{
// 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
@@ -1288,21 +1288,21 @@ void DateFormatRegressionTest::Test1684(void)
// 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
Test1684Data *tests[] = {
- new Test1684Data(2001, 8, 6, 2001,8,2,UCAL_MONDAY, "2001 08 02 Mon", NULL),
- new Test1684Data(2001, 8, 7, 2001,8,2,UCAL_TUESDAY, "2001 08 02 Tue", NULL),
- new Test1684Data(2001, 8, 5,/*12,*/ 2001,8,2,UCAL_SUNDAY, "2001 08 02 Sun", NULL),
+ new Test1684Data(2001, 8, 6, 2001,8,2,UCAL_MONDAY, "2001 08 02 Mon", nullptr),
+ new Test1684Data(2001, 8, 7, 2001,8,2,UCAL_TUESDAY, "2001 08 02 Tue", nullptr),
+ new Test1684Data(2001, 8, 5,/*12,*/ 2001,8,2,UCAL_SUNDAY, "2001 08 02 Sun", nullptr),
new Test1684Data(2001, 8,6, /*7, 30,*/ 2001,7,6,UCAL_MONDAY, "2001 07 06 Mon", "2001 08 02 Mon"),
new Test1684Data(2001, 8,7, /*7, 31,*/ 2001,7,6,UCAL_TUESDAY, "2001 07 06 Tue", "2001 08 02 Tue"),
new Test1684Data(2001, 8, 5, 2001,7,6,UCAL_SUNDAY, "2001 07 06 Sun", "2001 08 02 Sun"),
new Test1684Data(2001, 7, 30, 2001,8,1,UCAL_MONDAY, "2001 08 01 Mon", "2001 07 05 Mon"),
new Test1684Data(2001, 7, 31, 2001,8,1,UCAL_TUESDAY, "2001 08 01 Tue", "2001 07 05 Tue"),
new Test1684Data(2001, 7,29, /*8, 5,*/ 2001,8,1,UCAL_SUNDAY, "2001 08 01 Sun", "2001 07 05 Sun"),
- new Test1684Data(2001, 12, 31, 2001,12,6,UCAL_MONDAY, "2001 12 06 Mon", NULL),
- new Test1684Data(2002, 1, 1, 2002,1,1,UCAL_TUESDAY, "2002 01 01 Tue", NULL),
- new Test1684Data(2002, 1, 2, 2002,1,1,UCAL_WEDNESDAY, "2002 01 01 Wed", NULL),
- new Test1684Data(2002, 1, 3, 2002,1,1,UCAL_THURSDAY, "2002 01 01 Thu", NULL),
- new Test1684Data(2002, 1, 4, 2002,1,1,UCAL_FRIDAY, "2002 01 01 Fri", NULL),
- new Test1684Data(2002, 1, 5, 2002,1,1,UCAL_SATURDAY, "2002 01 01 Sat", NULL),
+ new Test1684Data(2001, 12, 31, 2001,12,6,UCAL_MONDAY, "2001 12 06 Mon", nullptr),
+ new Test1684Data(2002, 1, 1, 2002,1,1,UCAL_TUESDAY, "2002 01 01 Tue", nullptr),
+ new Test1684Data(2002, 1, 2, 2002,1,1,UCAL_WEDNESDAY, "2002 01 01 Wed", nullptr),
+ new Test1684Data(2002, 1, 3, 2002,1,1,UCAL_THURSDAY, "2002 01 01 Thu", nullptr),
+ new Test1684Data(2002, 1, 4, 2002,1,1,UCAL_FRIDAY, "2002 01 01 Fri", nullptr),
+ new Test1684Data(2002, 1, 5, 2002,1,1,UCAL_SATURDAY, "2002 01 01 Sat", nullptr),
new Test1684Data(2001,12,30, /*2002, 1, 6,*/ 2002,1,1,UCAL_SUNDAY, "2002 01 01 Sun", "2001 12 06 Sun")
};
@@ -1416,7 +1416,7 @@ void DateFormatRegressionTest::Test1684(void)
delete sdf;
}
-void DateFormatRegressionTest::Test5554(void)
+void DateFormatRegressionTest::Test5554()
{
UErrorCode status = U_ZERO_ERROR;
UnicodeString pattern("Z","");
@@ -1446,7 +1446,7 @@ void DateFormatRegressionTest::Test5554(void)
delete sdf;
}
-void DateFormatRegressionTest::Test9237(void)
+void DateFormatRegressionTest::Test9237()
{
UErrorCode status = U_ZERO_ERROR;
UnicodeString pattern("VVVV");
@@ -1480,7 +1480,7 @@ void DateFormatRegressionTest::Test9237(void)
}
}
-void DateFormatRegressionTest::TestParsing(void) {
+void DateFormatRegressionTest::TestParsing() {
UErrorCode status = U_ZERO_ERROR;
UnicodeString pattern("EEE-WW-MMMM-yyyy");
UnicodeString text("mon-02-march-2011");
@@ -1493,7 +1493,7 @@ void DateFormatRegressionTest::TestParsing(void) {
}
Calendar *cal = new GregorianCalendar(status);
- if (cal == NULL || U_FAILURE(status)) {
+ if (cal == nullptr || U_FAILURE(status)) {
errln("Unable to create calendar - %s", u_errorName(status));
return;
}
@@ -1508,7 +1508,7 @@ void DateFormatRegressionTest::TestParsing(void) {
delete cal;
}
-void DateFormatRegressionTest::Test12902_yWithGregoCalInThaiLoc(void) {
+void DateFormatRegressionTest::Test12902_yWithGregoCalInThaiLoc() {
UErrorCode status = U_ZERO_ERROR;
UDate testDate = 43200000.0; // 1970-Jan-01 12:00 GMT
const char* skeleton = "y";
@@ -1557,7 +1557,7 @@ void DateFormatRegressionTest::Test12902_yWithGregoCalInThaiLoc(void) {
}
}
-void DateFormatRegressionTest::TestT10334(void) {
+void DateFormatRegressionTest::TestT10334() {
UErrorCode status = U_ZERO_ERROR;
UnicodeString pattern("'--: 'EEE-WW-MMMM-yyyy");
UnicodeString text("--mon-02-march-2011");
@@ -1628,7 +1628,7 @@ typedef struct {
} TestDateFormatLeniencyItem;
-void DateFormatRegressionTest::TestT10619(void) {
+void DateFormatRegressionTest::TestT10619() {
const UDate july022008 = 1215000001979.0;
const TestDateFormatLeniencyItem items[] = {
//locale leniency parse String pattern expected result
@@ -1641,7 +1641,7 @@ void DateFormatRegressionTest::TestT10619(void) {
{ "en", true, UnicodeString("6 Jan 08 2008"), UnicodeString("eee MMM dd yyyy"), UnicodeString("Sat Jan 08 2008") },
{ "en", false, UnicodeString("6 Jan 09 2008"), UnicodeString("eee MMM dd yyyy"), UnicodeString("") },
// terminator
- { NULL, true, UnicodeString(""), UnicodeString(""), UnicodeString("") }
+ { nullptr, true, UnicodeString(""), UnicodeString(""), UnicodeString("") }
};
UErrorCode status = U_ZERO_ERROR;
Calendar* cal = Calendar::createInstance(status);
@@ -1650,7 +1650,7 @@ void DateFormatRegressionTest::TestT10619(void) {
} else {
cal->setTime(july022008, status);
const TestDateFormatLeniencyItem * itemPtr;
- for (itemPtr = items; itemPtr->locale != NULL; itemPtr++ ) {
+ for (itemPtr = items; itemPtr->locale != nullptr; itemPtr++ ) {
Locale locale = Locale::createFromName(itemPtr->locale);
status = U_ZERO_ERROR;
@@ -1690,7 +1690,7 @@ typedef struct {
int initialParsePos;
} T10855Data;
-void DateFormatRegressionTest::TestT10855(void) {
+void DateFormatRegressionTest::TestT10855() {
// NOTE: these should NOT parse
const T10855Data items[] = {
//parse String pattern initial parse pos
@@ -1734,7 +1734,7 @@ void DateFormatRegressionTest::TestT10855(void) {
}
}
-void DateFormatRegressionTest::TestT10906(void) {
+void DateFormatRegressionTest::TestT10906() {
UErrorCode status = U_ZERO_ERROR;
UnicodeString pattern = "MM-dd-yyyy";
@@ -1749,7 +1749,7 @@ void DateFormatRegressionTest::TestT10906(void) {
}
}
-void DateFormatRegressionTest::TestT13380(void) {
+void DateFormatRegressionTest::TestT13380() {
UErrorCode errorCode = U_ZERO_ERROR;
LocalPointer<DateFormat> enFmt(DateFormat::createDateInstance(DateFormat::kShort, Locale("en")), errorCode);
if (U_FAILURE(errorCode)) {
@@ -1763,7 +1763,7 @@ void DateFormatRegressionTest::TestT13380(void) {
}
}
-void DateFormatRegressionTest::TestT10858(void) {
+void DateFormatRegressionTest::TestT10858() {
// test for assignment operator on instances with the same locale but different TimeZoneFormat
UErrorCode status = U_ZERO_ERROR;
UnicodeString pattern("VVVV");
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/dtfmrgts.h b/Build/source/libs/icu/icu-src/source/test/intltest/dtfmrgts.h
index 050cdd9ba60..3f25f863740 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/dtfmrgts.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/dtfmrgts.h
@@ -25,43 +25,43 @@ class DateFormatRegressionTest: public CalendarTimeZoneTest {
void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par ) override;
public:
- void Test4029195(void);
- void Test4052408(void);
- void Test4056591(void);
- void Test4059917(void);
+ void Test4029195();
+ void Test4052408();
+ void Test4056591();
+ void Test4059917();
void aux917( SimpleDateFormat *fmt, UnicodeString& str );
- void Test4060212(void);
- void Test4061287(void);
- void Test4065240(void);
- void Test4071441(void);
- void Test4073003(void);
- void Test4089106(void);
- void Test4100302(void);
- void Test4101483(void);
- void Test4103340(void);
- void Test4103341(void);
- void Test4104136(void);
- void Test4104522(void);
- void Test4106807(void);
- void Test4108407(void);
- void Test4134203(void);
- void Test4151631(void);
- void Test4151706(void);
- void Test4162071(void);
- void Test4182066(void);
- void Test4210209(void);
- void Test714(void);
- void Test1684(void);
- void Test5554(void);
- void Test9237(void);
- void TestParsing(void);
- void Test12902_yWithGregoCalInThaiLoc(void);
- void TestT10334(void);
- void TestT10619(void);
- void TestT10855(void);
- void TestT10858(void);
- void TestT10906(void);
- void TestT13380(void);
+ void Test4060212();
+ void Test4061287();
+ void Test4065240();
+ void Test4071441();
+ void Test4073003();
+ void Test4089106();
+ void Test4100302();
+ void Test4101483();
+ void Test4103340();
+ void Test4103341();
+ void Test4104136();
+ void Test4104522();
+ void Test4106807();
+ void Test4108407();
+ void Test4134203();
+ void Test4151631();
+ void Test4151706();
+ void Test4162071();
+ void Test4182066();
+ void Test4210209();
+ void Test714();
+ void Test1684();
+ void Test5554();
+ void Test9237();
+ void TestParsing();
+ void Test12902_yWithGregoCalInThaiLoc();
+ void TestT10334();
+ void TestT10619();
+ void TestT10855();
+ void TestT10858();
+ void TestT10906();
+ void TestT13380();
};
#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/dtfmtrtts.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/dtfmtrtts.cpp
index 26726650f87..0da9c04d18b 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/dtfmtrtts.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/dtfmtrtts.cpp
@@ -238,7 +238,7 @@ void DateFormatRoundTripTest::test(const Locale& loc)
if(TEST_TABLE[itable++]) {
logln("Testing style " + UnicodeString(styleName((DateFormat::EStyle)style)));
DateFormat *df = DateFormat::createDateInstance((DateFormat::EStyle)style, loc);
- if(df == NULL) {
+ if(df == nullptr) {
errln(UnicodeString("Could not DF::createDateInstance ") + UnicodeString(styleName((DateFormat::EStyle)style)) + " Locale: " + loc.getDisplayName(temp));
} else {
test(df, loc);
@@ -251,7 +251,7 @@ void DateFormatRoundTripTest::test(const Locale& loc)
if (TEST_TABLE[itable++]) {
logln("Testing style " + UnicodeString(styleName((DateFormat::EStyle)style)));
DateFormat *df = DateFormat::createTimeInstance((DateFormat::EStyle)style, loc);
- if(df == NULL) {
+ if(df == nullptr) {
errln(UnicodeString("Could not DF::createTimeInstance ") + UnicodeString(styleName((DateFormat::EStyle)style)) + " Locale: " + loc.getDisplayName(temp));
} else {
test(df, loc, true);
@@ -265,7 +265,7 @@ void DateFormatRoundTripTest::test(const Locale& loc)
if(TEST_TABLE[itable++]) {
logln("Testing dstyle" + UnicodeString(styleName((DateFormat::EStyle)dstyle)) + ", tstyle" + UnicodeString(styleName((DateFormat::EStyle)tstyle)) );
DateFormat *df = DateFormat::createDateTimeInstance((DateFormat::EStyle)dstyle, (DateFormat::EStyle)tstyle, loc);
- if(df == NULL) {
+ if(df == nullptr) {
dataerrln(UnicodeString("Could not DF::createDateTimeInstance ") + UnicodeString(styleName((DateFormat::EStyle)dstyle)) + ", tstyle" + UnicodeString(styleName((DateFormat::EStyle)tstyle)) + "Locale: " + loc.getDisplayName(temp));
} else {
test(df, loc);
@@ -286,7 +286,7 @@ void DateFormatRoundTripTest::test(DateFormat *fmt, const Locale &origLocale, UB
UBool isGregorian = false;
UErrorCode minStatus = U_ZERO_ERROR;
- if(fmt->getCalendar() == NULL) {
+ if(fmt->getCalendar() == nullptr) {
errln((UnicodeString)"DateFormatRoundTripTest::test, DateFormat getCalendar() returns null for " + origLocale.getName());
return;
}
@@ -297,7 +297,7 @@ void DateFormatRoundTripTest::test(DateFormat *fmt, const Locale &origLocale, UB
}
//logln(UnicodeString("Min date is ") + fullFormat(minDate) + " for " + origLocale.getName());
- pat = ((SimpleDateFormat*)fmt)->toPattern(pat);
+ pat = dynamic_cast<SimpleDateFormat*>(fmt)->toPattern(pat);
// NOTE TO MAINTAINER
// This indexOf check into the pattern needs to be refined to ignore
@@ -557,7 +557,7 @@ UnicodeString& DateFormatRoundTripTest::escape(const UnicodeString& src, Unicode
} else {
dst += UnicodeString("[");
char buf [12];
- sprintf(buf, "%#04x", c);
+ snprintf(buf, sizeof(buf), "%#04x", c);
dst += UnicodeString(buf);
dst += UnicodeString("]");
}
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/dtfmtrtts.h b/Build/source/libs/icu/icu-src/source/test/intltest/dtfmtrtts.h
index 987ee9fe0f9..d1d960ce853 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/dtfmtrtts.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/dtfmtrtts.h
@@ -31,13 +31,13 @@ public:
DateFormatRoundTripTest();
virtual ~DateFormatRoundTripTest();
- void TestDateFormatRoundTrip(void);
- void TestCentury(void);
+ void TestDateFormatRoundTrip();
+ void TestCentury();
void test(const Locale& loc);
void test(DateFormat *fmt, const Locale &origLocale, UBool timeOnly = false );
int32_t getField(UDate d, int32_t f);
UnicodeString& escape(const UnicodeString& src, UnicodeString& dst);
- UDate generateDate(void);
+ UDate generateDate();
UDate generateDate(UDate minDate);
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/dtfmttst.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/dtfmttst.cpp
index 317ae437ba2..1e03ffb9ed6 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/dtfmttst.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/dtfmttst.cpp
@@ -20,10 +20,11 @@
#include "unicode/simpletz.h"
#include "unicode/strenum.h"
#include "unicode/dtfmtsym.h"
+#include "unicode/ustring.h"
#include "cmemory.h"
#include "cstring.h"
#include "caltest.h" // for fieldName
-#include <stdio.h> // for sprintf
+#include "charstr.h"
#if U_PLATFORM_USES_ONLY_WIN32_API
#include "windttst.h"
@@ -131,6 +132,9 @@ void DateFormatTest::runIndexedTest( int32_t index, UBool exec, const char* &nam
TESTCASE_AUTO(TestAdoptCalendarLeak);
TESTCASE_AUTO(Test20741_ABFields);
TESTCASE_AUTO(Test22023_UTCWithMinusZero);
+ TESTCASE_AUTO(TestNumericFieldStrictParse);
+ TESTCASE_AUTO(TestHourCycle);
+ TESTCASE_AUTO(TestHCInLocale);
TESTCASE_AUTO_END;
}
@@ -140,7 +144,7 @@ void DateFormatTest::TestPatterns() {
const char *actualPattern;
const char *expectedPattern;
const char *localeID;
- const UChar *expectedLocalPattern;
+ const char16_t *expectedLocalPattern;
} EXPECTED[] = {
{UDAT_YEAR, "y", "en",u"y"},
@@ -268,7 +272,7 @@ void DateFormatTest::TestWallyWedel()
StringEnumeration* ids = TimeZone::createEnumeration(status);
if (U_FAILURE(status)) {
dataerrln("Unable to create TimeZone enumeration.");
- if (sdf != NULL) {
+ if (sdf != nullptr) {
delete sdf;
}
return;
@@ -362,7 +366,7 @@ DateFormatTest::TestEquals()
{
DateFormat* fmtA = DateFormat::createDateTimeInstance(DateFormat::MEDIUM, DateFormat::FULL);
DateFormat* fmtB = DateFormat::createDateTimeInstance(DateFormat::MEDIUM, DateFormat::FULL);
- if ( fmtA == NULL || fmtB == NULL){
+ if ( fmtA == nullptr || fmtB == nullptr){
dataerrln("Error calling DateFormat::createDateTimeInstance");
delete fmtA;
delete fmtB;
@@ -383,7 +387,7 @@ DateFormatTest::TestEquals()
* Test the parsing of 2-digit years.
*/
void
-DateFormatTest::TestTwoDigitYearDSTParse(void)
+DateFormatTest::TestTwoDigitYearDSTParse()
{
UErrorCode status = U_ZERO_ERROR;
SimpleDateFormat fullFmt((UnicodeString)"EEE MMM dd HH:mm:ss.SSS zzz yyyy G", status);
@@ -420,7 +424,7 @@ DateFormatTest::TestTwoDigitYearDSTParse(void)
// -------------------------------------
-UChar toHexString(int32_t i) { return (UChar)(i + (i < 10 ? 0x30 : (0x41 - 10))); }
+char16_t toHexString(int32_t i) { return (char16_t)(i + (i < 10 ? 0x30 : (0x41 - 10))); }
UnicodeString&
DateFormatTest::escape(UnicodeString& s)
@@ -428,10 +432,10 @@ DateFormatTest::escape(UnicodeString& s)
UnicodeString buf;
for (int32_t i=0; i<s.length(); ++i)
{
- UChar c = s[(int32_t)i];
- if (c <= (UChar)0x7F) buf += c;
+ char16_t c = s[(int32_t)i];
+ if (c <= (char16_t)0x7F) buf += c;
else {
- buf += (UChar)0x5c; buf += (UChar)0x55;
+ buf += (char16_t)0x5c; buf += (char16_t)0x55;
buf += toHexString((c & 0xF000) >> 12);
buf += toHexString((c & 0x0F00) >> 8);
buf += toHexString((c & 0x00F0) >> 4);
@@ -533,7 +537,7 @@ void DateFormatTest::TestFieldPosition() {
dateFormats[1] = DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFull, Locale::getFrance());
// Make the pattern "G y M d..."
buf.remove().append(PATTERN_CHARS);
- for (j=buf.length()-1; j>=0; --j) buf.insert(j, (UChar)32/*' '*/);
+ for (j=buf.length()-1; j>=0; --j) buf.insert(j, (char16_t)32/*' '*/);
dateFormats[2] = new SimpleDateFormat(buf, Locale::getUS(), ec);
// Make the pattern "GGGG yyyy MMMM dddd..."
for (j=buf.length()-1; j>=0; j-=2) {
@@ -600,7 +604,7 @@ void DateFormatTest::TestFieldPosition() {
DateFormat* df = dateFormats[j];
df->setTimeZone(*PT);
SimpleDateFormat* sdtfmt = dynamic_cast<SimpleDateFormat*>(df);
- if (sdtfmt != NULL) {
+ if (sdtfmt != nullptr) {
logln(" Pattern = " + sdtfmt->toPattern(buf.remove()));
} else {
logln(" Pattern = ? (not a SimpleDateFormat)");
@@ -614,8 +618,8 @@ void DateFormatTest::TestFieldPosition() {
df->format(aug13, buf, pos);
UnicodeString field;
buf.extractBetween(pos.getBeginIndex(), pos.getEndIndex(), field);
- assertEquals((UnicodeString)"field #" + i + " " + DATEFORMAT_FIELD_NAMES[i],
- ctou(EXPECTED[exp]), field);
+ assertEquals((UnicodeString)"localeidx #" + j + " field #" + i + " " +
+ DATEFORMAT_FIELD_NAMES[i], ctou(EXPECTED[exp]), field);
}
// test FieldPositionIterator API
@@ -631,8 +635,8 @@ void DateFormatTest::TestFieldPosition() {
int32_t i = fp.getField();
UnicodeString field;
buf.extractBetween(fp.getBeginIndex(), fp.getEndIndex(), field);
- assertEquals((UnicodeString)"field #" + i + " " + DATEFORMAT_FIELD_NAMES[i],
- ctou(EXPECTED[expBase + i]), field);
+ assertEquals((UnicodeString)"localeidx #" + j + " field #" + i + " " +
+ DATEFORMAT_FIELD_NAMES[i], ctou(EXPECTED[expBase + i]), field);
}
}
@@ -642,7 +646,7 @@ void DateFormatTest::TestFieldPosition() {
// test null posIter
buf.remove();
UErrorCode status = U_ZERO_ERROR;
- dateFormats[0]->format(aug13, buf, NULL, status);
+ dateFormats[0]->format(aug13, buf, nullptr, status);
// if we didn't crash, we succeeded.
for (i=0; i<COUNT; ++i) {
@@ -715,7 +719,7 @@ DateFormatTest::tryPat994(SimpleDateFormat* format, const char* pat, const char*
else
{
UnicodeString f;
- ((DateFormat*)format)->format(date, f);
+ (dynamic_cast<DateFormat*>(format))->format(date, f);
logln(UnicodeString(" parse(") + str + ") -> " + dateToString(date));
logln((UnicodeString)" format -> " + f);
if (expected == null ||
@@ -753,12 +757,12 @@ DateFormatTest::TestRunTogetherPattern985()
return;
}
UDate date1 = Calendar::getNow();
- ((DateFormat*)formatter)->format(date1, now);
+ (dynamic_cast<DateFormat*>(formatter))->format(date1, now);
logln(now);
ParsePosition pos(0);
UDate date2 = formatter->parse(now, pos);
if (date2 == 0) then = UnicodeString("Parse stopped at ") + pos.getIndex();
- else ((DateFormat*)formatter)->format(date2, then);
+ else (dynamic_cast<DateFormat*>(formatter))->format(date2, then);
logln(then);
if (!(date2 == date1)) errln((UnicodeString)"FAIL");
delete formatter;
@@ -803,7 +807,7 @@ DateFormatTest::testIt917(SimpleDateFormat* fmt, UnicodeString& str, UDate expec
logln((UnicodeString)"pattern=" + fmt->toPattern(pattern) + " string=" + str);
Formattable o;
//try {
- ((Format*)fmt)->parseObject(str, o, status);
+ dynamic_cast<Format*>(fmt)->parseObject(str, o, status);
//}
if (U_FAILURE(status)) return;
//catch(ParseException e) {
@@ -812,7 +816,8 @@ DateFormatTest::testIt917(SimpleDateFormat* fmt, UnicodeString& str, UDate expec
//}
logln((UnicodeString)"Parsed object: " + dateToString(o.getDate()));
if (!(o.getDate() == expected)) errln((UnicodeString)"FAIL: Expected " + dateToString(expected));
- UnicodeString formatted; ((Format*)fmt)->format(o, formatted, status);
+ UnicodeString formatted;
+ fmt->format(o, formatted, status);
logln((UnicodeString)"Formatted string: " + formatted);
if (!(formatted == str)) errln((UnicodeString)"FAIL: Expected " + str);
if (U_FAILURE(status)) errln((UnicodeString)"FAIL: UErrorCode received during test: " + (int32_t)status);
@@ -829,13 +834,13 @@ DateFormatTest::TestCzechMonths459()
{
UErrorCode status = U_ZERO_ERROR;
DateFormat* fmt = DateFormat::createDateInstance(DateFormat::FULL, Locale("cs", "", ""));
- if (fmt == NULL){
+ if (fmt == nullptr){
dataerrln("Error calling DateFormat::createDateInstance()");
return;
}
UnicodeString pattern;
- logln((UnicodeString)"Pattern " + ((SimpleDateFormat*) fmt)->toPattern(pattern));
+ logln((UnicodeString)"Pattern " + (dynamic_cast<SimpleDateFormat*>(fmt))->toPattern(pattern));
UDate june = date(97, UCAL_JUNE, 15);
UDate july = date(97, UCAL_JULY, 15);
UnicodeString juneStr; fmt->format(june, juneStr);
@@ -911,8 +916,8 @@ DateFormatTest::TestDayOfYearPattern195()
int32_t year,month,day,hour,min,sec; dateToFields(today,year,month,day,hour,min,sec);
UDate expected = date(year, month, day);
logln((UnicodeString)"Test Date: " + dateToString(today));
- SimpleDateFormat* sdf = (SimpleDateFormat*)DateFormat::createDateInstance();
- if (sdf == NULL){
+ SimpleDateFormat* sdf = dynamic_cast<SimpleDateFormat*>(DateFormat::createDateInstance());
+ if (sdf == nullptr){
dataerrln("Error calling DateFormat::createDateInstance()");
return;
}
@@ -931,13 +936,13 @@ DateFormatTest::tryPattern(SimpleDateFormat& sdf, UDate d, const char* pattern,
if (pattern != 0) sdf.applyPattern(pattern);
UnicodeString thePat;
logln((UnicodeString)"pattern: " + sdf.toPattern(thePat));
- UnicodeString formatResult; (*(DateFormat*)&sdf).format(d, formatResult);
+ UnicodeString formatResult; (*dynamic_cast<DateFormat*>(&sdf)).format(d, formatResult);
logln((UnicodeString)" format -> " + formatResult);
// try {
UDate d2 = sdf.parse(formatResult, status);
logln((UnicodeString)" parse(" + formatResult + ") -> " + dateToString(d2));
if (d2 != expected) errln((UnicodeString)"FAIL: Expected " + dateToString(expected));
- UnicodeString format2; (*(DateFormat*)&sdf).format(d2, format2);
+ UnicodeString format2; (*dynamic_cast<DateFormat*>(&sdf)).format(d2, format2);
logln((UnicodeString)" format -> " + format2);
if (!(formatResult == format2)) errln((UnicodeString)"FAIL: Round trip drift");
//}
@@ -963,7 +968,7 @@ DateFormatTest::TestQuotePattern161()
return;
}
UDate currentTime_1 = date(97, UCAL_AUGUST, 13, 10, 42, 28);
- UnicodeString dateString; ((DateFormat*)formatter)->format(currentTime_1, dateString);
+ UnicodeString dateString; (dynamic_cast<DateFormat*>(formatter))->format(currentTime_1, dateString);
UnicodeString exp("08/13/1997 at 10:42:28 AM ");
logln((UnicodeString)"format(" + dateToString(currentTime_1) + ") = " + dateString);
if (0 != dateString.compareBetween(0, exp.length(), exp, 0, exp.length())) errln((UnicodeString)"FAIL: Expected " + exp);
@@ -989,7 +994,7 @@ DateFormatTest::TestBadInput135()
};
int32_t strings_length = UPRV_LENGTHOF(strings);
DateFormat *longFmt = DateFormat::createDateTimeInstance(DateFormat::LONG, DateFormat::MEDIUM, Locale::getEnglish());
- if(longFmt==NULL) {
+ if(longFmt==nullptr) {
dataerrln("could not create date time instance");
return;
}
@@ -1001,7 +1006,7 @@ DateFormatTest::TestBadInput135()
for (int32_t k = 0; k < looks_length;++k) {
DateFormat::EStyle timeLook = looks[k];
DateFormat *df = DateFormat::createDateTimeInstance(dateLook, timeLook);
- if (df == NULL){
+ if (df == nullptr){
dataerrln("Error calling DateFormat::createDateTimeInstance()");
continue;
}
@@ -1017,7 +1022,7 @@ DateFormatTest::TestBadInput135()
UnicodeString format;
UnicodeString pattern;
SimpleDateFormat* sdtfmt = dynamic_cast<SimpleDateFormat*>(df);
- if (sdtfmt != NULL) {
+ if (sdtfmt != nullptr) {
sdtfmt->toPattern(pattern);
}
longFmt->format(when, format);
@@ -1145,7 +1150,7 @@ DateFormatTest::TestBadInput135a()
}
else {
UnicodeString result;
- ((DateFormat*)dateParse)->format(date, result);
+ (dynamic_cast<DateFormat*>(dateParse))->format(date, result);
logln((UnicodeString)"Parsed \"" + s + "\" using \"" + dateParse->toPattern(thePat) + "\" to: " + result);
if (expected == 0)
errln((UnicodeString)"FAIL: Expected parse failure, got " + result);
@@ -1196,7 +1201,7 @@ DateFormatTest::parse2DigitYear(DateFormat& fmt, const char* str, UDate expected
//try {
UDate d = fmt.parse(str, status);
UnicodeString thePat;
- logln(UnicodeString("Parsing \"") + str + "\" with " + ((SimpleDateFormat*)&fmt)->toPattern(thePat) +
+ logln(UnicodeString("Parsing \"") + str + "\" with " + (dynamic_cast<SimpleDateFormat*>(&fmt))->toPattern(thePat) +
" => " + dateToString(d));
if (d != expected) errln((UnicodeString)"FAIL: Expected " + expected);
//}
@@ -1335,7 +1340,7 @@ DateFormatTest::TestLocaleDateFormat() // Bug 495
UnicodeString expectedUS ( u"Monday, September 15, 1997 at 12:00:00\u202FAM Pacific Daylight Time", -1 );
logln((UnicodeString)"Date set to : " + dateToString(testDate));
UnicodeString out;
- if (dfUS == NULL || dfFrench == NULL){
+ if (dfUS == nullptr || dfFrench == nullptr){
dataerrln("Error calling DateFormat::createDateTimeInstance)");
delete dfUS;
delete dfFrench;
@@ -1369,7 +1374,7 @@ DateFormatTest::TestFormattingLocaleTimeSeparator()
DateFormat::SHORT, Locale("ar", "EG")));
const LocalPointer<DateFormat> dfLatn(DateFormat::createTimeInstance(
- DateFormat::SHORT, Locale("ar", "EG", NULL, "numbers=latn")));
+ DateFormat::SHORT, Locale("ar", "EG", nullptr, "numbers=latn")));
if (dfLatn.isNull() || dfArab.isNull()) {
dataerrln("Error calling DateFormat::createTimeInstance()");
@@ -1408,14 +1413,14 @@ void DateFormatTest::TestDateFormatCalendar() {
/* Create a formatter for date fields. */
date = DateFormat::createDateInstance(DateFormat::kShort, Locale::getUS());
- if (date == NULL) {
+ if (date == nullptr) {
dataerrln("FAIL: createDateInstance failed");
goto FAIL;
}
/* Create a formatter for time fields. */
time = DateFormat::createTimeInstance(DateFormat::kShort, Locale::getUS());
- if (time == NULL) {
+ if (time == nullptr) {
errln("FAIL: createTimeInstance failed");
goto FAIL;
}
@@ -1423,14 +1428,14 @@ void DateFormatTest::TestDateFormatCalendar() {
/* Create a full format for output */
full = DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFull,
Locale::getUS());
- if (full == NULL) {
+ if (full == nullptr) {
errln("FAIL: createInstance failed");
goto FAIL;
}
/* Create a calendar */
cal = Calendar::createInstance(Locale::getUS(), ec);
- if (cal == NULL || U_FAILURE(ec)) {
+ if (cal == nullptr || U_FAILURE(ec)) {
errln((UnicodeString)"FAIL: Calendar::createInstance failed with " +
u_errorName(ec));
goto FAIL;
@@ -1486,38 +1491,38 @@ void DateFormatTest::TestSpaceParsing() {
const char* DATA[] = {
"yyyy MM dd HH:mm:ss",
- // pattern, input, expected parse or NULL if expect parse failure
+ // pattern, input, expected parse or nullptr if expect parse failure
"MMMM d yy", " 04 05 06", "2006 04 05 00:00:00",
- NULL, "04 05 06", "2006 04 05 00:00:00",
+ nullptr, "04 05 06", "2006 04 05 00:00:00",
"MM d yy", " 04 05 06", "2006 04 05 00:00:00",
- NULL, "04 05 06", "2006 04 05 00:00:00",
- NULL, "04/05/06", "2006 04 05 00:00:00",
- NULL, "04-05-06", "2006 04 05 00:00:00",
- NULL, "04.05.06", "2006 04 05 00:00:00",
- NULL, "04 / 05 / 06", "2006 04 05 00:00:00",
- NULL, "Apr / 05/ 06", "2006 04 05 00:00:00",
- NULL, "Apr-05-06", "2006 04 05 00:00:00",
- NULL, "Apr 05, 2006", "2006 04 05 00:00:00",
+ nullptr, "04 05 06", "2006 04 05 00:00:00",
+ nullptr, "04/05/06", "2006 04 05 00:00:00",
+ nullptr, "04-05-06", "2006 04 05 00:00:00",
+ nullptr, "04.05.06", "2006 04 05 00:00:00",
+ nullptr, "04 / 05 / 06", "2006 04 05 00:00:00",
+ nullptr, "Apr / 05/ 06", "2006 04 05 00:00:00",
+ nullptr, "Apr-05-06", "2006 04 05 00:00:00",
+ nullptr, "Apr 05, 2006", "2006 04 05 00:00:00",
"MMMM d yy", " Apr 05 06", "2006 04 05 00:00:00",
- NULL, "Apr 05 06", "2006 04 05 00:00:00",
- NULL, "Apr05 06", "2006 04 05 00:00:00",
+ nullptr, "Apr 05 06", "2006 04 05 00:00:00",
+ nullptr, "Apr05 06", "2006 04 05 00:00:00",
"hh:mm:ss a", "12:34:56 PM", "1970 01 01 12:34:56",
- NULL, "12:34:56PM", "1970 01 01 12:34:56",
- NULL, "12.34.56PM", "1970 01 01 12:34:56",
- NULL, "12 : 34 : 56 PM", "1970 01 01 12:34:56",
+ nullptr, "12:34:56PM", "1970 01 01 12:34:56",
+ nullptr, "12.34.56PM", "1970 01 01 12:34:56",
+ nullptr, "12 : 34 : 56 PM", "1970 01 01 12:34:56",
"MM d yy 'at' hh:mm:ss a", "04/05/06 12:34:56 PM", "2006 04 05 12:34:56",
"MMMM dd yyyy hh:mm a", "September 27, 1964 21:56 PM", "1964 09 28 09:56:00",
- NULL, "November 4, 2008 0:13 AM", "2008 11 04 00:13:00",
+ nullptr, "November 4, 2008 0:13 AM", "2008 11 04 00:13:00",
"HH'h'mm'min'ss's'", "12h34min56s", "1970 01 01 12:34:56",
- NULL, "12h34mi56s", "1970 01 01 12:34:56",
- NULL, "12h34m56s", "1970 01 01 12:34:56",
- NULL, "12:34:56", "1970 01 01 12:34:56"
+ nullptr, "12h34mi56s", "1970 01 01 12:34:56",
+ nullptr, "12h34m56s", "1970 01 01 12:34:56",
+ nullptr, "12:34:56", "1970 01 01 12:34:56"
};
const int32_t DATA_len = UPRV_LENGTHOF(DATA);
@@ -1531,13 +1536,13 @@ void DateFormatTest::TestExactCountFormat() {
const char* DATA[] = {
"yyyy MM dd HH:mm:ss",
- // pattern, input, expected parse or NULL if expect parse failure
+ // pattern, input, expected parse or nullptr 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,
+ nullptr, "12345", "1970 01 01 01:23:45",
+ nullptr, "1234", nullptr,
+ nullptr, "00-05", nullptr,
+ nullptr, "12-34", nullptr,
+ nullptr, "00+05", nullptr,
"ahhmm", "PM730", "1970 01 01 19:30:00",
};
const int32_t DATA_len = UPRV_LENGTHOF(DATA);
@@ -1556,7 +1561,7 @@ void DateFormatTest::TestWhiteSpaceParsing() {
// 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",
+ nullptr, " 04 01 03 ", "2003 04 01",
};
const int32_t DATA_len = UPRV_LENGTHOF(DATA);
@@ -1911,12 +1916,12 @@ void DateFormatTest::TestQuarters()
const char *ES_MX_DATA[] = {
"yyyy MM dd",
- "QQQQ y", "fp", "1970 01 01", "1.er trimestre 1970", "1970 01 01",
+ "QQQQ y", "fp", "1970 01 01", "1.\\u00BA trimestre 1970", "1970 01 01",
"QQQ y", "fp", "1970 01 01", "T1 1970", "1970 01 01",
"QQQQQ y", "fp", "1970 01 01", "1 1970", "1970 01 01",
- "qqqq", "fp", "1970 01 01", "1.er trimestre", "1970 01 01",
+ "qqqq", "fp", "1970 01 01", "1.\\u00BA trimestre", "1970 01 01",
"qqq", "fp", "1970 01 01", "T1", "1970 01 01",
- "qqqqq", "fp", "1970 01 01", "1T", "1970 01 01",
+ "qqqqq", "fp", "1970 01 01", "1", "1970 01 01",
};
expect(EN_DATA, UPRV_LENGTHOF(EN_DATA), Locale("en", "", ""));
@@ -1931,11 +1936,11 @@ void DateFormatTest::TestQuarters()
*
* followed by test cases, each of which is 3 array elements:
*
- * [i] = pattern, or NULL to reuse prior pattern
+ * [i] = pattern, or nullptr 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.
+ * If expect parse failure, then [i+2] should be nullptr.
*/
void DateFormatTest::expectParse(const char** data, int32_t data_length,
const Locale& loc) {
@@ -1952,14 +1957,14 @@ void DateFormatTest::expectParse(const char** data, int32_t data_length,
return;
}
- const char* currentPat = NULL;
+ const char* currentPat = nullptr;
while (i<data_length) {
const char* pattern = data[i++];
const char* input = data[i++];
const char* expected = data[i++];
ec = U_ZERO_ERROR;
- if (pattern != NULL) {
+ if (pattern != nullptr) {
fmt.applyPattern(pattern);
currentPat = pattern;
}
@@ -1975,7 +1980,7 @@ void DateFormatTest::expectParse(const char** data, int32_t data_length,
UErrorCode ec2 = U_ZERO_ERROR;
UDate exp = FAIL;
UnicodeString expstr(FAIL_STR);
- if (expected != NULL) {
+ if (expected != nullptr) {
expstr = expected;
exp = ref.parse(expstr, ec2);
if (U_FAILURE(ec2)) {
@@ -2039,7 +2044,7 @@ void DateFormatTest::expect(const char** data, int32_t data_length,
UnicodeString currentPat;
while (i<data_length) {
const char* pattern = data[i++];
- if (pattern != NULL) {
+ if (pattern != nullptr) {
fmt.applyPattern(pattern);
currentPat = pattern;
}
@@ -2052,7 +2057,7 @@ void DateFormatTest::expect(const char** data, int32_t data_length,
const char* string = data[i++];
UDate date = ref.parse(ctou(datestr), ec);
if (!assertSuccess("parse", ec)) return;
- assertEquals((UnicodeString)"\"" + currentPat + "\".format(" + datestr + ")",
+ assertEquals((UnicodeString)"loc " + ctou(loc.getName()) + " \"" + currentPat + "\".format(" + datestr + ")",
ctou(string),
fmt.format(date, str.remove()));
// 'p'
@@ -2061,7 +2066,7 @@ void DateFormatTest::expect(const char** data, int32_t data_length,
if (!assertSuccess("parse", ec)) return;
UDate parsedate = fmt.parse(ctou(string), ec);
if (assertSuccess((UnicodeString)"\"" + currentPat + "\".parse(" + string + ")", ec)) {
- assertEquals((UnicodeString)"\"" + currentPat + "\".parse(" + string + ")",
+ assertEquals((UnicodeString)"loc " + ctou(loc.getName()) + " \"" + currentPat + "\".parse(" + string + ")",
univ.format(date, str.remove()),
univ.format(parsedate, str2.remove()));
}
@@ -2075,13 +2080,13 @@ void DateFormatTest::expect(const char** data, int32_t data_length,
if (!assertSuccess("parse", ec)) return;
UDate parsedate = fmt.parse(ctou(string), ec);
if (assertSuccess((UnicodeString)"\"" + currentPat + "\".parse(" + string + ")", ec)) {
- assertEquals((UnicodeString)"\"" + currentPat + "\".parse(" + string + ")",
+ assertEquals((UnicodeString)"loc " + ctou(loc.getName()) + " \"" + currentPat + "\".parse(" + string + ")",
univ.format(date, str.remove()),
univ.format(parsedate, str2.remove()));
}
// 'f'
string = data[i++];
- assertEquals((UnicodeString)"\"" + currentPat + "\".format(" + datestr + ")",
+ assertEquals((UnicodeString)"loc " + ctou(loc.getName()) + " \"" + currentPat + "\".format(" + datestr + ")",
ctou(string),
fmt.format(date, str.remove()));
}
@@ -2091,13 +2096,13 @@ void DateFormatTest::expect(const char** data, int32_t data_length,
const char* string = data[i++];
UDate date = ref.parse(ctou(datestr), ec);
if (!assertSuccess("parse", ec)) return;
- assertEquals((UnicodeString)"\"" + currentPat + "\".format(" + datestr + ")",
+ assertEquals((UnicodeString)"loc " + ctou(loc.getName()) + " \"" + currentPat + "\".format(" + datestr + ")",
ctou(string),
fmt.format(date, str.remove()));
UDate parsedate = fmt.parse(string, ec);
if (assertSuccess((UnicodeString)"\"" + currentPat + "\".parse(" + string + ")", ec)) {
- assertEquals((UnicodeString)"\"" + currentPat + "\".parse(" + string + ")",
+ assertEquals((UnicodeString)"loc " + ctou(loc.getName()) + " \"" + currentPat + "\".parse(" + string + ")",
univ.format(date, str.remove()),
univ.format(parsedate, str2.remove()));
}
@@ -2144,7 +2149,7 @@ void DateFormatTest::expectFormat(const char** data, int32_t data_length,
while (i<data_length) {
const char* pattern = data[i++];
- if (pattern != NULL) {
+ if (pattern != nullptr) {
fmt.applyPattern(pattern);
currentPat = pattern;
}
@@ -2153,7 +2158,7 @@ void DateFormatTest::expectFormat(const char** data, int32_t data_length,
const char* string = data[i++];
UDate date = ref.parse(ctou(datestr), ec);
if (!assertSuccess("parse", ec)) return;
- assertEquals((UnicodeString)"\"" + currentPat + "\".format(" + datestr + ")",
+ assertEquals((UnicodeString)"loc " + ctou(loc.getName()) + " \"" + currentPat + "\".format(" + datestr + ")",
ctou(string),
fmt.format(date, str.remove()));
}
@@ -2343,7 +2348,7 @@ void DateFormatTest::TestGenericTimeZoneOrder() {
expect(XDATA, XDATA_length, en);
}
-void DateFormatTest::TestZTimeZoneParsing(void) {
+void DateFormatTest::TestZTimeZoneParsing() {
UErrorCode status = U_ZERO_ERROR;
const Locale en("en");
UnicodeString test;
@@ -2388,7 +2393,7 @@ void DateFormatTest::TestZTimeZoneParsing(void) {
}
}
-void DateFormatTest::TestHost(void)
+void DateFormatTest::TestHost()
{
#if U_PLATFORM_USES_ONLY_WIN32_API
Win32DateTimeTest::testLocales(this);
@@ -2401,7 +2406,7 @@ void DateFormatTest::TestRelative(int daysdelta,
const Locale& loc,
const char *expectChars) {
char banner[25];
- sprintf(banner, "%d", daysdelta);
+ snprintf(banner, sizeof(banner), "%d", daysdelta);
UnicodeString bannerStr(banner, "");
UErrorCode status = U_ZERO_ERROR;
@@ -2411,29 +2416,29 @@ void DateFormatTest::TestRelative(int daysdelta,
Locale en("en");
DateFormat *fullrelative = DateFormat::createDateInstance(DateFormat::kFullRelative, loc);
- if (fullrelative == NULL) {
- dataerrln("DateFormat::createDateInstance(DateFormat::kFullRelative, %s) returned NULL", loc.getName());
+ if (fullrelative == nullptr) {
+ dataerrln("DateFormat::createDateInstance(DateFormat::kFullRelative, %s) returned nullptr", loc.getName());
return;
}
DateFormat *full = DateFormat::createDateInstance(DateFormat::kFull , loc);
- if (full == NULL) {
- errln("DateFormat::createDateInstance(DateFormat::kFull, %s) returned NULL", loc.getName());
+ if (full == nullptr) {
+ errln("DateFormat::createDateInstance(DateFormat::kFull, %s) returned nullptr", loc.getName());
return;
}
DateFormat *en_full = DateFormat::createDateInstance(DateFormat::kFull, en);
- if (en_full == NULL) {
- errln("DateFormat::createDateInstance(DateFormat::kFull, en) returned NULL");
+ if (en_full == nullptr) {
+ errln("DateFormat::createDateInstance(DateFormat::kFull, en) returned nullptr");
return;
}
DateFormat *en_fulltime = DateFormat::createDateTimeInstance(DateFormat::kFull,DateFormat::kFull,en);
- if (en_fulltime == NULL) {
- errln("DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFull, en) returned NULL");
+ if (en_fulltime == nullptr) {
+ errln("DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFull, en) returned nullptr");
return;
}
@@ -2452,7 +2457,7 @@ void DateFormatTest::TestRelative(int daysdelta,
ASSERT_OK(status);
// calculate the expected string
- if(expectChars != NULL) {
+ if(expectChars != nullptr) {
expect = expectChars;
} else {
full->format(*c, expect, pos); // expected = normal full
@@ -2492,21 +2497,21 @@ void DateFormatTest::TestRelative(int daysdelta,
}
-void DateFormatTest::TestRelative(void)
+void DateFormatTest::TestRelative()
{
Locale en("en");
TestRelative( 0, en, "today");
TestRelative(-1, en, "yesterday");
TestRelative( 1, en, "tomorrow");
- TestRelative( 2, en, NULL);
- TestRelative( -2, en, NULL);
- TestRelative( 3, en, NULL);
- TestRelative( -3, en, NULL);
- TestRelative( 300, en, NULL);
- TestRelative( -300, en, NULL);
+ TestRelative( 2, en, nullptr);
+ TestRelative( -2, en, nullptr);
+ TestRelative( 3, en, nullptr);
+ TestRelative( -3, en, nullptr);
+ TestRelative( 300, en, nullptr);
+ TestRelative( -300, en, nullptr);
}
-void DateFormatTest::TestRelativeClone(void)
+void DateFormatTest::TestRelativeClone()
{
/*
Verify that a cloned formatter gives the same results
@@ -2516,7 +2521,7 @@ void DateFormatTest::TestRelativeClone(void)
Locale loc("en");
UDate now = Calendar::getNow();
DateFormat *full = DateFormat::createDateInstance(DateFormat::kFullRelative, loc);
- if (full == NULL) {
+ if (full == nullptr) {
dataerrln("FAIL: Can't create Relative date instance");
return;
}
@@ -2524,7 +2529,7 @@ void DateFormatTest::TestRelativeClone(void)
full->format(now, result1, status);
Format *fullClone = full->clone();
delete full;
- full = NULL;
+ full = nullptr;
UnicodeString result2;
fullClone->format(now, result2, status);
@@ -2535,7 +2540,7 @@ void DateFormatTest::TestRelativeClone(void)
delete fullClone;
}
-void DateFormatTest::TestHostClone(void)
+void DateFormatTest::TestHostClone()
{
/*
Verify that a cloned formatter gives the same results
@@ -2546,7 +2551,7 @@ void DateFormatTest::TestHostClone(void)
Locale loc("en_US@compat=host");
UDate now = Calendar::getNow();
DateFormat *full = DateFormat::createDateInstance(DateFormat::kFull, loc);
- if (full == NULL) {
+ if (full == nullptr) {
dataerrln("FAIL: Can't create host date instance");
return;
}
@@ -2554,7 +2559,7 @@ void DateFormatTest::TestHostClone(void)
full->format(now, result1, status);
Format *fullClone = full->clone();
delete full;
- full = NULL;
+ full = nullptr;
UnicodeString result2;
fullClone->format(now, result2, status);
@@ -2565,7 +2570,7 @@ void DateFormatTest::TestHostClone(void)
delete fullClone;
}
-void DateFormatTest::TestHebrewClone(void)
+void DateFormatTest::TestHebrewClone()
{
/*
Verify that a cloned formatter gives the same results
@@ -2585,7 +2590,7 @@ void DateFormatTest::TestHebrewClone(void)
LocalPointer<Format> fmtClone(fmt->clone());
// free fmt to be sure that fmtClone is independent of fmt.
- fmt.adoptInstead(NULL);
+ fmt.adoptInstead(nullptr);
UnicodeString result2;
fmtClone->format(now, result2, status);
@@ -2598,11 +2603,11 @@ void DateFormatTest::TestHebrewClone(void)
static UBool getActualAndValidLocales(
const Format &fmt, Locale &valid, Locale &actual) {
const SimpleDateFormat* dat = dynamic_cast<const SimpleDateFormat*>(&fmt);
- if (dat == NULL) {
+ if (dat == nullptr) {
return false;
}
const DateFormatSymbols *sym = dat->getDateFormatSymbols();
- if (sym == NULL) {
+ if (sym == nullptr) {
return false;
}
UErrorCode status = U_ZERO_ERROR;
@@ -2611,7 +2616,7 @@ static UBool getActualAndValidLocales(
return U_SUCCESS(status);
}
-void DateFormatTest::TestDateFormatSymbolsClone(void)
+void DateFormatTest::TestDateFormatSymbolsClone()
{
/*
Verify that a cloned formatter gives the same results
@@ -2633,7 +2638,7 @@ void DateFormatTest::TestDateFormatSymbolsClone(void)
LocalPointer<Format> fmtClone(fmt->clone());
// Free fmt to be sure that fmtClone is really independent of fmt.
- fmt.adoptInstead(NULL);
+ fmt.adoptInstead(nullptr);
Locale valid2;
Locale actual2;
if (!getActualAndValidLocales(*fmtClone, valid2, actual2)) {
@@ -3417,7 +3422,7 @@ void DateFormatTest::TestTimeZoneDisplayName()
{ "en_HK", "Europe/Paris", "2004-01-15T00:00:00Z", "z", "GMT+1", "+1:00"},
{ "en_HK", "Europe/Paris", "2004-07-15T00:00:00Z", "z", "GMT+2", "+2:00"},
- { NULL, NULL, NULL, NULL, NULL, NULL },
+ { nullptr, nullptr, nullptr, nullptr, nullptr, nullptr },
};
UErrorCode status = U_ZERO_ERROR;
@@ -3477,8 +3482,8 @@ void DateFormatTest::TestTimeZoneInLocale()
{ "my-u-ca-islamic-umalqura-tz-kzala", "Asia/Almaty", "islamic-umalqura" },
{ "lo-u-ca-islamic-tbla-tz-bmbda", "Atlantic/Bermuda", "islamic-tbla" },
{ "km-u-ca-islamic-civil-tz-aqplm", "Antarctica/Palmer", "islamic-civil" },
- { "kk-u-ca-islamic-rgsa-tz-usanc", "America/Anchorage", "islamic" },
- { "ar-u-ca-iso8601-tz-bjptn", "Africa/Porto-Novo", "gregorian" },
+ { "kk-u-ca-islamic-rgsa-tz-usanc", "America/Anchorage", "islamic-rgsa" },
+ { "ar-u-ca-iso8601-tz-bjptn", "Africa/Porto-Novo", "iso8601" },
{ "he-u-ca-japanese-tz-tzdar", "Africa/Dar_es_Salaam", "japanese" },
{ "bs-u-ca-persian-tz-etadd", "Africa/Addis_Ababa", "persian" },
{ "it-u-ca-roc-tz-aruaq", "America/Argentina/San_Juan", "roc" },
@@ -3533,7 +3538,7 @@ void DateFormatTest::TestTimeZoneInLocale()
}
}
-void DateFormatTest::TestRoundtripWithCalendar(void) {
+void DateFormatTest::TestRoundtripWithCalendar() {
UErrorCode status = U_ZERO_ERROR;
TimeZone *tz = TimeZone::createTimeZone("Europe/Paris");
@@ -3545,11 +3550,11 @@ void DateFormatTest::TestRoundtripWithCalendar(void) {
// Calendar::createInstance(*tz, Locale("und@calendar=hebrew"), status),
Calendar::createInstance(*tz, Locale("und@calendar=islamic"), status),
Calendar::createInstance(*tz, Locale("und@calendar=japanese"), status),
- NULL
+ nullptr
};
if (U_FAILURE(status)) {
dataerrln("Failed to initialize calendars: %s", u_errorName(status));
- for (int i = 0; calendars[i] != NULL; i++) {
+ for (int i = 0; calendars[i] != nullptr; i++) {
delete calendars[i];
}
return;
@@ -3565,7 +3570,7 @@ void DateFormatTest::TestRoundtripWithCalendar(void) {
// DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFull, Locale("he_IL@calendar=hebrew")),
DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFull, Locale("ar_EG@calendar=islamic")),
// DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFull, Locale("ja_JP@calendar=japanese")),
- NULL
+ nullptr
};
UDate d = Calendar::getNow();
@@ -3573,7 +3578,7 @@ void DateFormatTest::TestRoundtripWithCalendar(void) {
FieldPosition fpos;
ParsePosition ppos;
- for (int i = 0; formatters[i] != NULL; i++) {
+ for (int i = 0; formatters[i] != nullptr; i++) {
buf.remove();
fpos.setBeginIndex(0);
fpos.setEndIndex(0);
@@ -3584,7 +3589,7 @@ void DateFormatTest::TestRoundtripWithCalendar(void) {
formatters[i]->format(*calendars[i], buf, fpos);
UnicodeString refStr(buf);
- for (int j = 0; calendars[j] != NULL; j++) {
+ for (int j = 0; calendars[j] != nullptr; j++) {
if (j == i) {
continue;
}
@@ -3614,7 +3619,7 @@ void DateFormatTest::TestRoundtripWithCalendar(void) {
// used by the formatter
formatters[i]->parse(refStr, *calendars[i], ppos);
- for (int j = 0; calendars[j] != NULL; j++) {
+ for (int j = 0; calendars[j] != nullptr; j++) {
if (j == i) {
continue;
}
@@ -3647,22 +3652,22 @@ void DateFormatTest::TestRoundtripWithCalendar(void) {
delete tz;
delete gmt;
- for (int i = 0; calendars[i] != NULL; i++) {
+ for (int i = 0; calendars[i] != nullptr; i++) {
delete calendars[i];
}
- for (int i = 0; formatters[i] != NULL; i++) {
+ for (int i = 0; formatters[i] != nullptr; i++) {
delete formatters[i];
}
}
/*
-void DateFormatTest::TestRelativeError(void)
+void DateFormatTest::TestRelativeError()
{
UErrorCode status;
Locale en("en");
DateFormat *en_reltime_reldate = DateFormat::createDateTimeInstance(DateFormat::kFullRelative,DateFormat::kFullRelative,en);
- if(en_reltime_reldate == NULL) {
+ if(en_reltime_reldate == nullptr) {
logln("PASS: rel date/rel time failed");
} else {
errln("FAIL: rel date/rel time created, should have failed.");
@@ -3670,13 +3675,13 @@ void DateFormatTest::TestRelativeError(void)
}
}
-void DateFormatTest::TestRelativeOther(void)
+void DateFormatTest::TestRelativeOther()
{
logln("Nothing in this test. When we get more data from CLDR, put in some tests of -2, +2, etc. ");
}
*/
-void DateFormatTest::Test6338(void)
+void DateFormatTest::Test6338()
{
UErrorCode status = U_ZERO_ERROR;
@@ -3771,7 +3776,7 @@ void DateFormatTest::Test6338(void)
}
-void DateFormatTest::Test6726(void)
+void DateFormatTest::Test6726()
{
// status
// UErrorCode status = U_ZERO_ERROR;
@@ -3785,9 +3790,9 @@ void DateFormatTest::Test6726(void)
DateFormat* fmtl = DateFormat::createDateTimeInstance(DateFormat::LONG, DateFormat::FULL, loc);
DateFormat* fmtm = DateFormat::createDateTimeInstance(DateFormat::MEDIUM, DateFormat::FULL, loc);
DateFormat* fmts = DateFormat::createDateTimeInstance(DateFormat::SHORT, DateFormat::FULL, loc);
- if (fmtf == NULL || fmtl == NULL || fmtm == NULL || fmts == NULL) {
- dataerrln("Unable to create DateFormat. got NULL.");
- /* It may not be true that if one is NULL all is NULL. Just to be safe. */
+ if (fmtf == nullptr || fmtl == nullptr || fmtm == nullptr || fmts == nullptr) {
+ dataerrln("Unable to create DateFormat. got nullptr.");
+ /* It may not be true that if one is nullptr all is nullptr. Just to be safe. */
delete fmtf;
delete fmtl;
delete fmtm;
@@ -3802,11 +3807,11 @@ void DateFormatTest::Test6726(void)
logln("strm.charAt(10)=%04X wanted 0x20\n", strm.charAt(10));
- if (strm.charAt(10) != UChar(0x0020)) {
+ if (strm.charAt(10) != char16_t(0x0020)) {
errln((UnicodeString)"FAIL: Improper formatted date: " + strm );
}
logln("strs.charAt(10)=%04X wanted 0x20\n", strs.charAt(8));
- if (strs.charAt(10) != UChar(0x0020)) {
+ if (strs.charAt(10) != char16_t(0x0020)) {
errln((UnicodeString)"FAIL: Improper formatted date: " + strs);
}
@@ -3877,8 +3882,8 @@ void DateFormatTest::Test6880() {
}
DateFormat *fmt = DateFormat::createTimeInstance(DateFormat::kFull, Locale("zh"));
- if (fmt == NULL) {
- dataerrln("Unable to create DateFormat. Got NULL.");
+ if (fmt == nullptr) {
+ dataerrln("Unable to create DateFormat. Got nullptr.");
return;
}
fmt->adoptTimeZone(tz);
@@ -3937,10 +3942,10 @@ void DateFormatTest::TestNumberAsStringParsing()
{ "ko", true, false, CharsToUnicodeString("y\\uB144 M\\uC6D4 d\\uC77C"), CharsToUnicodeString("2009\\uB144 7\\uC6D4 14\\uC77C") },
{ "ko", false, false, CharsToUnicodeString("y\\uB144 MMM d\\uC77C"), CharsToUnicodeString("2009\\uB144 7\\uC6D4 14\\uC77C") },
{ "ko", true, false, CharsToUnicodeString("y\\uB144 MMM d\\uC77C"), CharsToUnicodeString("2009\\uB144 7\\uC6D4 14\\uC77C") }, // #8820 fixes test failure
- { NULL, false, false, UnicodeString(""), UnicodeString("") }
+ { nullptr, false, false, UnicodeString(""), UnicodeString("") }
};
const NumAsStringItem * itemPtr;
- for (itemPtr = items; itemPtr->localeStr != NULL; itemPtr++ ) {
+ for (itemPtr = items; itemPtr->localeStr != nullptr; itemPtr++ ) {
Locale locale = Locale::createFromName(itemPtr->localeStr);
UErrorCode status = U_ZERO_ERROR;
SimpleDateFormat formatter(itemPtr->datePattern, locale, status);
@@ -3989,7 +3994,7 @@ void DateFormatTest::TestISOEra() {
SimpleDateFormat *fmt1 = new SimpleDateFormat(UnicodeString("GGG yyyy-MM-dd'T'HH:mm:ss'Z"), status);
failure(status, "new SimpleDateFormat", true);
if (status == U_MISSING_RESOURCE_ERROR) {
- if (fmt1 != NULL) {
+ if (fmt1 != nullptr) {
delete fmt1;
}
return;
@@ -4187,7 +4192,7 @@ void DateFormatTest::TestMonthPatterns()
CharsToUnicodeString("29. 4. 2."),
CharsToUnicodeString("29. 5. 1.") } },
// terminator
- { NULL, 0, { UnicodeString(""), UnicodeString(""), UnicodeString("") } }
+ { nullptr, 0, { UnicodeString(""), UnicodeString(""), UnicodeString("") } }
};
//. style: -1 -2 -3 -4
@@ -4198,12 +4203,12 @@ void DateFormatTest::TestMonthPatterns()
Calendar * rootChineseCalendar = Calendar::createInstance(rootChineseCalLocale, status);
if (U_SUCCESS(status)) {
const MonthPatternItem * itemPtr;
- for (itemPtr = items; itemPtr->locale != NULL; itemPtr++ ) {
+ for (itemPtr = items; itemPtr->locale != nullptr; itemPtr++ ) {
Locale locale = Locale::createFromName(itemPtr->locale);
DateFormat * dmft = (itemPtr->style >= 0)?
DateFormat::createDateInstance((DateFormat::EStyle)itemPtr->style, locale):
new SimpleDateFormat(customPatterns[-itemPtr->style - 1], locale, status);
- if ( dmft != NULL ) {
+ if ( dmft != nullptr ) {
if (U_SUCCESS(status)) {
const ChineseCalTestDate * datePtr = dates;
int32_t idate;
@@ -4280,7 +4285,7 @@ void DateFormatTest::TestContext()
{ "cs", UnicodeString("LLLL y"), UDISPCTX_CAPITALIZATION_FOR_STANDALONE, CharsToUnicodeString("\\u010Dervenec 2008") },
#endif
// terminator
- { NULL, UnicodeString(""), (UDisplayContext)0, UnicodeString("") }
+ { nullptr, UnicodeString(""), (UDisplayContext)0, UnicodeString("") }
};
UErrorCode status = U_ZERO_ERROR;
Calendar* cal = Calendar::createInstance(status);
@@ -4289,7 +4294,7 @@ void DateFormatTest::TestContext()
} else {
cal->setTime(july022008, status);
const TestContextItem * itemPtr;
- for (itemPtr = items; itemPtr->locale != NULL; itemPtr++ ) {
+ for (itemPtr = items; itemPtr->locale != nullptr; itemPtr++ ) {
Locale locale = Locale::createFromName(itemPtr->locale);
status = U_ZERO_ERROR;
SimpleDateFormat * sdmft = new SimpleDateFormat(itemPtr->pattern, locale, status);
@@ -4381,10 +4386,10 @@ void DateFormatTest::TestNonGregoFmtParse()
{ "ja@calendar=japanese", DateFormat::kNone, CharsToUnicodeString("r(Gy)\\u5E74M\\u6708d\\u65E5"), cafti_ja_japanese_custGy },
{ "ja@calendar=japanese", DateFormat::kNone, CharsToUnicodeString("r\\u5E74M\\u6708d\\u65E5"), cafti_ja_japanese_custNoGy },
{ "en@calendar=islamic", DateFormat::kNone, UnicodeString("d MMM y G, r"), cafti_en_islamic_cust },
- { NULL, DateFormat::kNone, UnicodeString(""), NULL } // terminator
+ { nullptr, DateFormat::kNone, UnicodeString(""), nullptr } // terminator
};
const TestNonGregoItem * itemPtr;
- for (itemPtr = items; itemPtr->locale != NULL; itemPtr++) {
+ for (itemPtr = items; itemPtr->locale != nullptr; itemPtr++) {
Locale locale = Locale::createFromName(itemPtr->locale);
LocalPointer<DateFormat> dfmt;
UErrorCode status = U_ZERO_ERROR;
@@ -4453,14 +4458,14 @@ void DateFormatTest::TestFormatsWithNumberSystems()
const UDate date = 1451556000000.0; // for UTC: grego 31-Dec-2015 10 AM, hebrew 19 tevet 5776, chinese yi-wei 11mo 21day
const TestFmtWithNumSysItem items[] = {
{ "haw@calendar=gregorian", DateFormat::kShort, UnicodeString("d/M/yy"), UnicodeString("31/xii/15") },
- { "he@calendar=hebrew", DateFormat::kLong, CharsToUnicodeString("d \\u05D1MMMM y"), CharsToUnicodeString("\\u05D9\\u05F4\\u05D8 \\u05D1\\u05D8\\u05D1\\u05EA \\u05EA\\u05E9\\u05E2\\u05F4\\u05D5") },
+ { "he@calendar=hebrew", DateFormat::kLong, CharsToUnicodeString("d \\u05D1MMMM y"), CharsToUnicodeString("\\u05D9\\u05F4\\u05D8 \\u05D1\\u05D8\\u05D1\\u05EA \\u05EA\\u05E9\\u05E2\\u05F4\\u05D5") },
{ "zh@calendar=chinese", DateFormat::kLong, CharsToUnicodeString("rU\\u5E74MMMd"), CharsToUnicodeString("2015\\u4E59\\u672A\\u5E74\\u5341\\u4E00\\u6708\\u5EFF\\u4E00") },
{ "zh_Hant@calendar=chinese", DateFormat::kLong, CharsToUnicodeString("rU\\u5E74MMMd"), CharsToUnicodeString("2015\\u4E59\\u672A\\u5E74\\u51AC\\u6708\\u5EFF\\u4E00") },
{ "ja@calendar=chinese", DateFormat::kLong, CharsToUnicodeString("U\\u5E74MMMd\\u65E5"), CharsToUnicodeString("\\u4E59\\u672A\\u5E74\\u5341\\u4E00\\u6708\\u4E8C\\u4E00\\u65E5") },
- { NULL, DateFormat::kNone, UnicodeString(""), UnicodeString("") },
+ { nullptr, DateFormat::kNone, UnicodeString(""), UnicodeString("") },
};
const TestFmtWithNumSysItem * itemPtr;
- for (itemPtr = items; itemPtr->localeID != NULL; itemPtr++) {
+ for (itemPtr = items; itemPtr->localeID != nullptr; itemPtr++) {
char bExpected[kBBufMax];
char bResult[kBBufMax];
UErrorCode status = U_ZERO_ERROR;
@@ -4475,13 +4480,13 @@ void DateFormatTest::TestFormatsWithNumberSystems()
dataerrln("Calendar::setTime fails for locale %s, date %.1f, status %s", itemPtr->localeID, date, u_errorName(status));
continue;
}
- LocalPointer<SimpleDateFormat> sdfmt(static_cast<SimpleDateFormat *>(DateFormat::createDateInstance(itemPtr->style, locale)));
+ LocalPointer<SimpleDateFormat> sdfmt(dynamic_cast<SimpleDateFormat *>(DateFormat::createDateInstance(itemPtr->style, locale)));
if (sdfmt.isNull()) {
dataerrln("DateFormat::createDateInstance fails for locale %s", itemPtr->localeID);
continue;
}
UnicodeString getFormat;
- sdfmt->format(*(cal.getAlias()), getFormat, NULL, status);
+ sdfmt->format(*(cal.getAlias()), getFormat, nullptr, status);
if (U_FAILURE(status)) {
errln("DateFormat::format fails for locale %s, status %s", itemPtr->localeID, u_errorName(status));
continue;
@@ -4558,7 +4563,7 @@ UBool DateFormatTest::showParse(DateFormat &format, const UnicodeString &formatt
UDate parsed = format.parse(formattedString, parsePosition);
UBool ok = TEST_DATE == parsed && parsePosition.getIndex() == formattedString.length();
UnicodeString pattern;
- static_cast<SimpleDateFormat &>(format).toPattern(pattern);
+ dynamic_cast<SimpleDateFormat &>(format).toPattern(pattern);
if (ok) {
logln(pattern + " parsed: " + formattedString);
} else {
@@ -4589,7 +4594,7 @@ void DateFormatTest::TestDateFormatLeniency() {
{ "en", true, UnicodeString("2008-Jan--02"), UnicodeString("yyyy-MMM' -- 'dd"), UnicodeString("2008-Jan -- 02") },
{ "en", false, UnicodeString("2008-Jan--02"), UnicodeString("yyyy-MMM' -- 'dd"), UnicodeString("") },
// terminator
- { NULL, true, UnicodeString(""), UnicodeString(""), UnicodeString("") }
+ { nullptr, true, UnicodeString(""), UnicodeString(""), UnicodeString("") }
};
UErrorCode status = U_ZERO_ERROR;
LocalPointer<Calendar> cal(Calendar::createInstance(status));
@@ -4600,7 +4605,7 @@ void DateFormatTest::TestDateFormatLeniency() {
cal->setTime(july022008, status);
const TestDateFormatLeniencyItem * itemPtr;
LocalPointer<SimpleDateFormat> sdmft;
- for (itemPtr = items; itemPtr->locale != NULL; itemPtr++ ) {
+ for (itemPtr = items; itemPtr->locale != nullptr; itemPtr++ ) {
Locale locale = Locale::createFromName(itemPtr->locale);
status = U_ZERO_ERROR;
@@ -4698,14 +4703,14 @@ void DateFormatTest::TestParseMultiPatternMatch() {
}
const TestMultiPatternMatchItem * itemPtr;
DateFormat* sdmft = DateFormat::createDateInstance();
- if (sdmft == NULL) {
+ if (sdmft == nullptr) {
dataerrln(UnicodeString("FAIL: Unable to create DateFormat"));
return;
}
for (itemPtr = items; itemPtr->parseString != "--end--"; itemPtr++ ) {
status = U_ZERO_ERROR;
ParsePosition pos(0);
- ((SimpleDateFormat*) sdmft)->applyPattern(itemPtr->pattern);
+ (dynamic_cast<SimpleDateFormat*>(sdmft))->applyPattern(itemPtr->pattern);
if (U_FAILURE(status)) {
dataerrln("Unable to create SimpleDateFormat - %s", u_errorName(status));
continue;
@@ -4743,7 +4748,7 @@ void DateFormatTest::TestParseLeniencyAPIs() {
UErrorCode status = U_ZERO_ERROR;
LocalPointer<DateFormat> dateFormat(DateFormat::createDateInstance());
DateFormat *fmt = dateFormat.getAlias();
- if (fmt == NULL) {
+ if (fmt == nullptr) {
dataerrln("Failed calling dateFormat.getAlias()");
return;
}
@@ -4808,7 +4813,7 @@ void DateFormatTest::TestNumberFormatOverride() {
fmt->adoptNumberFormat(fields, check_nf, status);
assertSuccess("adoptNumberFormat check_nf", status);
- const NumberFormat* get_nf = fmt->getNumberFormatForField((UChar)0x004D /*'M'*/);
+ const NumberFormat* get_nf = fmt->getNumberFormatForField((char16_t)0x004D /*'M'*/);
if (get_nf != check_nf) errln("FAIL: getter and setter do not work");
}
NumberFormat* check_nf = NumberFormat::createInstance(Locale("en_US"), status);
@@ -4869,6 +4874,13 @@ void DateFormatTest::TestNumberFormatOverride() {
if (result != expected)
errln("FAIL: Expected " + expected + " get: " + result);
+
+ // Ensure that adopted formats are handled correctly after copy constructing
+ SimpleDateFormat fmtCopy = *fmt;
+ result.remove();
+ fmtCopy.format(test_date,result, pos);
+ if (result != expected)
+ errln("FAIL: Expected " + expected + " after copy constructing get: " + result);
}
}
@@ -4998,7 +5010,7 @@ void DateFormatTest::TestPatternFromSkeleton() {
static const struct {
const Locale& locale;
const char* const skeleton;
- const UChar* const pattern;
+ const char16_t* const pattern;
} TESTDATA[] = {
// Ticket #11985
{Locale::getEnglish(), "jjmm", u"h:mm\u202Fa"},
@@ -5046,7 +5058,7 @@ void DateFormatTest::TestPatternFromSkeleton() {
return;
}
UnicodeString pattern;
- static_cast<const SimpleDateFormat*>(fmt.getAlias())->toPattern(pattern);
+ dynamic_cast<const SimpleDateFormat*>(fmt.getAlias())->toPattern(pattern);
assertEquals("Format pattern", TESTDATA[i].pattern, pattern);
}
}
@@ -5743,6 +5755,172 @@ void DateFormatTest::Test22023_UTCWithMinusZero() {
ASSERT_OK(status);
}
+void DateFormatTest::TestNumericFieldStrictParse() {
+ static const struct {
+ const char* localeID;
+ const char16_t* const pattern;
+ const char16_t* const text;
+ int32_t pos; // final parsed position
+ UCalendarDateFields field1;
+ int32_t value1;
+ UCalendarDateFields field2;
+ int32_t value2;
+ } TESTDATA[] = {
+ // Ticket #22337
+ {"en_US", u"MM/dd/yyyy", u"1/1/2023", 8, UCAL_MONTH, UCAL_JANUARY, UCAL_DAY_OF_MONTH, 1},
+ // Ticket #22259
+ {"en_US", u"dd-MM-uuuu", u"1-01-2023", 9, UCAL_MONTH, UCAL_JANUARY, UCAL_DAY_OF_MONTH, 1},
+ {"en_US", u"dd-MM-uuuu", u"01-01-223", 9, UCAL_DAY_OF_MONTH, 1, UCAL_EXTENDED_YEAR, 223},
+ };
+ for (size_t i = 0; i < UPRV_LENGTHOF(TESTDATA); i++) {
+ UErrorCode status = U_ZERO_ERROR;
+ char pbuf[64];
+ char tbuf[64];
+
+ Locale locale = Locale::createFromName(TESTDATA[i].localeID);
+ LocalPointer<SimpleDateFormat> sdfmt(new SimpleDateFormat(UnicodeString(TESTDATA[i].pattern), locale, status));
+ if (U_FAILURE(status)) {
+ u_austrncpy(pbuf, TESTDATA[i].pattern, sizeof(pbuf));
+ dataerrln("Fail in new SimpleDateFormat locale %s pattern %s: %s",
+ TESTDATA[i].localeID, pbuf, u_errorName(status));
+ continue;
+ }
+ LocalPointer<Calendar> cal(Calendar::createInstance(*TimeZone::getGMT(), locale, status));
+ if (U_FAILURE(status)) {
+ dataerrln("Fail in Calendar::createInstance locale %s: %s",
+ TESTDATA[i].localeID, u_errorName(status));
+ continue;
+ }
+ cal->clear();
+ //cal->set(2023, 0, 1);
+ ParsePosition ppos(0);
+ sdfmt->setLenient(false);
+ sdfmt->parse(UnicodeString(TESTDATA[i].text), *cal, ppos);
+
+ u_austrncpy(pbuf, TESTDATA[i].pattern, sizeof(pbuf));
+ u_austrncpy(tbuf, TESTDATA[i].text, sizeof(tbuf));
+ if (ppos.getIndex() != TESTDATA[i].pos) {
+ errln("SimpleDateFormat::parse locale %s pattern %s: expected pos %d, got %d, errIndex %d",
+ TESTDATA[i].localeID, pbuf, TESTDATA[i].pos, ppos.getIndex(), ppos.getErrorIndex());
+ continue;
+ }
+ if (TESTDATA[i].field1 < UCAL_FIELD_COUNT) {
+ int32_t value = cal->get(TESTDATA[i].field1, status);
+ if (U_FAILURE(status)) {
+ errln("Calendar::get locale %s pattern %s field %d: %s",
+ TESTDATA[i].localeID, pbuf, TESTDATA[i].field1, u_errorName(status));
+ } else if (value != TESTDATA[i].value1) {
+ errln("Calendar::get locale %s pattern %s field %d: expected value %d, got %d",
+ TESTDATA[i].localeID, pbuf, TESTDATA[i].field1, TESTDATA[i].value1, value);
+ }
+ }
+ status = U_ZERO_ERROR;
+ if (TESTDATA[i].field2 < UCAL_FIELD_COUNT) {
+ int32_t value = cal->get(TESTDATA[i].field2, status);
+ if (U_FAILURE(status)) {
+ errln("Calendar::get locale %s pattern %s field %d: %s",
+ TESTDATA[i].localeID, pbuf, TESTDATA[i].field2, u_errorName(status));
+ } else if (value != TESTDATA[i].value2) {
+ errln("Calendar::get locale %s pattern %s field %d: expected value %d, got %d",
+ TESTDATA[i].localeID, pbuf, TESTDATA[i].field2, TESTDATA[i].value2, value);
+ }
+ }
+ }
+}
+
+void DateFormatTest::TestHourCycle() {
+ static const UDate date = -845601267742; // March 16, 1943 at 3:45 PM
+
+ static const struct {
+ const char* languageTag;
+ UnicodeString expectedResult;
+ } TEST_CASES[] = {
+ // test some locales for which we have data
+ { "en-us", u"Tuesday, March 16, 1943 at 3:45:32 PM" },
+ { "en-ca", u"Tuesday, March 16, 1943 at 3:45:32 p.m." },
+ { "en-gb", u"Tuesday 16 March 1943 at 15:45:32" },
+ { "en-au", u"Tuesday 16 March 1943 at 3:45:32 pm" },
+ // test a couple locales for which we don't have specific locale files (we should still get the correct hour cycle)
+ { "en-co", u"Tuesday, March 16, 1943 at 3:45:32 PM" },
+ { "en-mx", u"Tuesday, March 16, 1943 at 3:45:32 PM" },
+ // test that the rg subtag does the right thing
+ { "en-us-u-rg-gbzzzz", u"Tuesday, March 16, 1943 at 15:45:32" },
+ { "en-us-u-rg-cazzzz", u"Tuesday, March 16, 1943 at 3:45:32 PM" },
+ { "en-ca-u-rg-uszzzz", u"Tuesday, March 16, 1943 at 3:45:32 p.m." },
+ { "en-gb-u-rg-uszzzz", u"Tuesday 16 March 1943 at 3:45:32 pm" },
+ { "en-gb-u-rg-cazzzz", u"Tuesday 16 March 1943 at 3:45:32 pm" },
+ { "en-gb-u-rg-auzzzz", u"Tuesday 16 March 1943 at 3:45:32 pm" },
+ // test that the hc ("hours") subtag does the right thing
+ { "en-us-u-hc-h23", u"Tuesday, March 16, 1943 at 15:45:32" },
+ { "en-gb-u-hc-h12", u"Tuesday 16 March 1943 at 3:45:32 pm" },
+ // test that the rg and hc subtags do the right thing when used together
+ { "en-us-u-rg-gbzzzz-hc-h12", u"Tuesday, March 16, 1943 at 3:45:32 PM" },
+ { "en-gb-u-rg-uszzzz-hc-h23", u"Tuesday 16 March 1943 at 15:45:32" },
+ };
+
+ for (int32_t i = 0; i < UPRV_LENGTHOF(TEST_CASES); i++) {
+ UErrorCode err = U_ZERO_ERROR;
+ Locale locale = Locale::forLanguageTag(TEST_CASES[i].languageTag, err);
+ LocalPointer<DateFormat> df(DateFormat::createDateTimeInstance(DateFormat::FULL, DateFormat::MEDIUM, locale));
+ df->adoptTimeZone(TimeZone::createTimeZone(u"America/Los_Angeles"));
+
+ UnicodeString actualResult;
+ FieldPosition fp;
+ df->format(date, actualResult, fp);
+
+ err = U_ZERO_ERROR; // throw away result from Locale::forLangageTag()-- if that fails, it's a coding errir in this test
+ CharString errorMessage;
+ errorMessage.append("Wrong result for ", err);
+ errorMessage.append(TEST_CASES[i].languageTag, err);
+ assertEquals(errorMessage.data(), TEST_CASES[i].expectedResult, actualResult);
+ }
+}
+
+void DateFormatTest::TestHCInLocale() {
+ IcuTestErrorCode status(*this, "TestHCInLocale");
+ LocalPointer<Calendar> midnight(Calendar::createInstance(status));
+ midnight->set(2020, 0, 1, 0, 0);
+
+ LocalPointer<Calendar> noon(Calendar::createInstance(status));
+ noon->set(2020, 0, 1, 12, 0);
+
+ bool expected[][3] = {
+ // midnightContains12 midnightContains24 noonContains12
+ { false, false, false}, // "en-u-hc-h11"
+ { true, false, true}, // "en-u-hc-h12"
+ { false, false, true}, // "en-u-hc-h23"
+ { false, true, true}, // "en-u-hc-h24"
+ };
+ Locale locales[] = {"en-u-hc-h11", "en-u-hc-h12", "en-u-hc-h23", "en-u-hc-h24"};
+ int i = 0;
+ for (Locale locale : locales) {
+ for (DateFormat::EStyle style : {DateFormat::kFull, DateFormat::kLong, DateFormat::kMedium, DateFormat::kShort}) {
+ LocalPointer<DateFormat> timeFormat(DateFormat::createTimeInstance(style, locale));
+ LocalPointer<DateFormat> dateTimeFormat(DateFormat::createDateTimeInstance(style, style, locale));
+ UnicodeString actualMidnightTime, actualMidnightDateTime, actualNoonTime, actualNoonDateTime;
+ actualMidnightTime = timeFormat->format(*midnight, actualMidnightTime, nullptr, status);
+ actualNoonTime = timeFormat->format(*noon, actualNoonTime, nullptr, status);
+ actualMidnightDateTime = dateTimeFormat->format(*midnight, actualMidnightDateTime, nullptr, status);
+ actualNoonDateTime = dateTimeFormat->format(*noon, actualNoonDateTime, nullptr, status);
+
+ bool midnightContains12 = expected[i][0];
+ bool midnightContains24 = expected[i][1];
+ bool noonContains12 = expected[i][2];
+
+ assertEquals("Midnight contains '12:'?", midnightContains12, actualMidnightTime.indexOf("12:") >= 0);
+ assertEquals("Midnight contains '12:'?", midnightContains12, actualMidnightDateTime.indexOf("12:") >= 0);
+
+ assertEquals("Midnight contains '24:'?", midnightContains24, actualMidnightTime.indexOf("24:") >= 0);
+ assertEquals("Midnight contains '24:'?", midnightContains24, actualMidnightDateTime.indexOf("24:") >= 0);
+
+ assertEquals("Noon contains '12:'?", noonContains12, actualNoonTime.indexOf("12:") >= 0);
+ assertEquals("Noon contains '12:'?", noonContains12, actualNoonDateTime.indexOf("12:") >= 0);
+
+ }
+ i++;
+ }
+}
+
#endif /* #if !UCONFIG_NO_FORMATTING */
//eof
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/dtfmttst.h b/Build/source/libs/icu/icu-src/source/test/intltest/dtfmttst.h
index f5e07697745..cafa7cdae90 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/dtfmttst.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/dtfmttst.h
@@ -33,15 +33,15 @@ public:
* "Test written by Wally Wedel and emailed to me."
* Test handling of timezone offsets
**/
- virtual void TestWallyWedel(void);
+ virtual void TestWallyWedel();
/**
* Test operator==
*/
- virtual void TestEquals(void);
+ virtual void TestEquals();
/**
* Test the parsing of 2-digit years.
*/
- virtual void TestTwoDigitYearDSTParse(void);
+ virtual void TestTwoDigitYearDSTParse();
public: // package
// internal utility routine (generates escape sequences for characters)
@@ -51,7 +51,7 @@ public:
/**
* Verify that returned field position indices are correct.
*/
- void TestFieldPosition(void);
+ void TestFieldPosition();
void TestGeneral();
@@ -65,7 +65,7 @@ public:
* correctly. In some instances, this means not being parsed at all, and
* returning an appropriate error.
*/
- virtual void TestPartialParse994(void);
+ virtual void TestPartialParse994();
public: // package
// internal test subroutine, used by TestPartialParse994
@@ -76,12 +76,12 @@ public:
* Verify the behavior of patterns in which digits for different fields run together
* without intervening separators.
*/
- virtual void TestRunTogetherPattern985(void);
+ virtual void TestRunTogetherPattern985();
/**
* Verify the behavior of patterns in which digits for different fields run together
* without intervening separators.
*/
- virtual void TestRunTogetherPattern917(void);
+ virtual void TestRunTogetherPattern917();
public: // package
// internal test subroutine, used by TestRunTogetherPattern917
@@ -92,15 +92,15 @@ public:
* Verify the handling of Czech June and July, which have the unique attribute that
* one is a proper prefix substring of the other.
*/
- virtual void TestCzechMonths459(void);
+ virtual void TestCzechMonths459();
/**
* Test the handling of 'D' in patterns.
*/
- virtual void TestLetterDPattern212(void);
+ virtual void TestLetterDPattern212();
/**
* Test the day of year pattern.
*/
- virtual void TestDayOfYearPattern195(void);
+ virtual void TestDayOfYearPattern195();
public: // package
// interl test subroutine, used by TestDayOfYearPattern195
@@ -110,11 +110,11 @@ public:
/**
* Test the handling of single quotes in patterns.
*/
- virtual void TestQuotePattern161(void);
+ virtual void TestQuotePattern161();
/**
* Verify the correct behavior when handling invalid input strings.
*/
- virtual void TestBadInput135(void);
+ virtual void TestBadInput135();
public:
/**
@@ -122,11 +122,11 @@ public:
* array of patterns, with known results. The results are encoded after
* the input strings in each row.
*/
- virtual void TestBadInput135a(void);
+ virtual void TestBadInput135a();
/**
* Test the parsing of two-digit years.
*/
- virtual void TestTwoDigitYear(void);
+ virtual void TestTwoDigitYear();
public: // package
// internal test subroutine, used by TestTwoDigitYear
@@ -136,107 +136,107 @@ public:
/**
* Test the formatting of time zones.
*/
- virtual void TestDateFormatZone061(void);
+ virtual void TestDateFormatZone061();
/**
* Further test the formatting of time zones.
*/
- virtual void TestDateFormatZone146(void);
+ virtual void TestDateFormatZone146();
- void TestTimeZoneStringsAPI(void);
+ void TestTimeZoneStringsAPI();
- void TestGMTParsing(void);
+ void TestGMTParsing();
public: // package
/**
* Test the formatting of dates in different locales.
*/
- virtual void TestLocaleDateFormat(void);
+ virtual void TestLocaleDateFormat();
- virtual void TestFormattingLocaleTimeSeparator(void);
+ virtual void TestFormattingLocaleTimeSeparator();
- virtual void TestDateFormatCalendar(void);
+ virtual void TestDateFormatCalendar();
- virtual void TestSpaceParsing(void);
+ virtual void TestSpaceParsing();
- void TestExactCountFormat(void);
+ void TestExactCountFormat();
- void TestWhiteSpaceParsing(void);
+ void TestWhiteSpaceParsing();
- void TestInvalidPattern(void);
+ void TestInvalidPattern();
- void TestGreekMay(void);
+ void TestGreekMay();
- void TestGenericTime(void);
+ void TestGenericTime();
- void TestGenericTimeZoneOrder(void);
+ void TestGenericTimeZoneOrder();
- void Test6338(void);
+ void Test6338();
- void Test6726(void);
+ void Test6726();
- void Test6880(void);
+ void Test6880();
- void TestISOEra(void);
+ void TestISOEra();
- void TestFormalChineseDate(void);
+ void TestFormalChineseDate();
- void TestStandAloneGMTParse(void);
+ void TestStandAloneGMTParse();
- void TestParsePosition(void);
+ void TestParsePosition();
- void TestMonthPatterns(void);
+ void TestMonthPatterns();
- void TestContext(void);
+ void TestContext();
- void TestNonGregoFmtParse(void);
+ void TestNonGregoFmtParse();
- void TestFormatsWithNumberSystems(void);
+ void TestFormatsWithNumberSystems();
public:
/**
* Test host-specific formatting.
*/
- void TestHost(void);
+ void TestHost();
public:
/**
* Test patterns added in CLDR 1.4, CLDR 23
*/
- void TestEras(void);
+ void TestEras();
- void TestNarrowNames(void);
+ void TestNarrowNames();
- void TestShortDays(void);
+ void TestShortDays();
- void TestStandAloneDays(void);
+ void TestStandAloneDays();
- void TestStandAloneMonths(void);
+ void TestStandAloneMonths();
- void TestQuarters(void);
+ void TestQuarters();
- void TestZTimeZoneParsing(void);
+ void TestZTimeZoneParsing();
- void TestRelativeClone(void);
+ void TestRelativeClone();
- void TestHostClone(void);
+ void TestHostClone();
- void TestHebrewClone(void);
+ void TestHebrewClone();
- void TestDateFormatSymbolsClone(void);
+ void TestDateFormatSymbolsClone();
- void TestTimeZoneDisplayName(void);
+ void TestTimeZoneDisplayName();
- void TestTimeZoneInLocale(void);
+ void TestTimeZoneInLocale();
- void TestRoundtripWithCalendar(void);
+ void TestRoundtripWithCalendar();
public:
/***
* Test Relative Dates
*/
- void TestRelative(void);
-/* void TestRelativeError(void);
- void TestRelativeOther(void);
+ void TestRelative();
+/* void TestRelativeError();
+ void TestRelativeOther();
*/
void TestDotAndAtLeniency();
@@ -267,6 +267,9 @@ public:
void TestAdoptCalendarLeak();
void Test20741_ABFields();
void Test22023_UTCWithMinusZero();
+ void TestNumericFieldStrictParse();
+ void TestHourCycle();
+ void TestHCInLocale();
private:
UBool showParse(DateFormat &format, const UnicodeString &formattedString);
@@ -275,7 +278,7 @@ public:
/**
* Test parsing a number as a string
*/
- void TestNumberAsStringParsing(void);
+ void TestNumberAsStringParsing();
private:
void TestRelative(int daysdelta,
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/dtifmtts.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/dtifmtts.cpp
index 3fc2af1235a..9989d6ff5d2 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/dtifmtts.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/dtifmtts.cpp
@@ -66,6 +66,8 @@ void DateIntervalFormatTest::runIndexedTest( int32_t index, UBool exec, const ch
TESTCASE_AUTO(testTicket21222ROCEraDiff);
TESTCASE_AUTO(testTicket21222JapaneseEraDiff);
TESTCASE_AUTO(testTicket21939);
+ TESTCASE_AUTO(testTicket20710_FieldIdentity);
+ TESTCASE_AUTO(testTicket20710_IntervalIdentity);
TESTCASE_AUTO_END;
}
@@ -327,7 +329,7 @@ void DateIntervalFormatTest::testAPI() {
Formattable fmttable;
status = U_ZERO_ERROR;
// TODO: why do I need cast?
- ((Format*)dtitvfmt)->parseObject(res, fmttable, status);
+ (dynamic_cast<Format*>(dtitvfmt))->parseObject(res, fmttable, status);
if ( status != U_INVALID_FORMAT_ERROR ) {
dataerrln("ERROR: parse should set U_INVALID_FORMAT_ERROR - exiting");
return;
@@ -855,7 +857,7 @@ void DateIntervalFormatTest::testFormat() {
"zh", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "dM", "11/10 \\u2013 11/20",
- "zh", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "My", "2007\\u5E7411\\u6708",
+ "zh", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "My", "2007/11",
"zh", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "EdM", "11/10\\u5468\\u516d\\u81f311/20\\u5468\\u4e8c",
@@ -876,15 +878,15 @@ void DateIntervalFormatTest::testFormat() {
"zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "hm", "\\u4e0a\\u534810:00\\u81f3\\u4e0b\\u53482:10",
- "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "hmz", "GMT-8 \\u4e0a\\u534810:00\\u81f3\\u4e0b\\u53482:10",
+ "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "hmz", "GMT-8\\u4e0a\\u534810:00\\u81f3\\u4e0b\\u53482:10",
"zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "h", "\\u4e0a\\u534810\\u65F6\\u81f3\\u4e0b\\u53482\\u65f6",
- "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "hv", "\\u6D1B\\u6749\\u77F6\\u65F6\\u95F4 \\u4E0A\\u534810\\u65F6\\u81F3\\u4E0B\\u53482\\u65F6",
+ "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 14:10:10", "hv", "\\u6D1B\\u6749\\u77F6\\u65F6\\u95F4\\u4E0A\\u534810\\u65F6\\u81F3\\u4E0B\\u53482\\u65F6",
"zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "hm", "\\u4e0a\\u534810:00\\u81f310:20",
- "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "hmv", "\\u6D1B\\u6749\\u77F6\\u65F6\\u95F4 \\u4E0A\\u534810:00\\u81F310:20",
+ "zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "hmv", "\\u6D1B\\u6749\\u77F6\\u65F6\\u95F4\\u4E0A\\u534810:00\\u81F310:20",
"zh", "CE 2007 01 10 10:00:10", "CE 2007 01 10 10:20:10", "hz", "GMT-8\\u4e0a\\u534810\\u65f6",
@@ -928,12 +930,12 @@ void DateIntervalFormatTest::testFormat() {
"de", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "EEEEdMMM", "Mittwoch, 10. Okt.\\u2009\\u2013\\u2009Samstag, 10. Nov.",
- "de", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "dM", "10.10. \\u2013 10.11.",
+ "de", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "dM", "10.10.\\u2009\\u2013\\u200910.11.",
"de", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "My", "10/2007\\u2009\\u2013\\u200911/2007",
- "de", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "d", "10.10. \\u2013 10.11.",
+ "de", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "d", "10.10.\\u2009\\u2013\\u200910.11.",
"de", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "y", "2007",
@@ -944,16 +946,16 @@ void DateIntervalFormatTest::testFormat() {
"de", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "hms", "10.10.2007, 10:10:10\\u202FAM\\u2009\\u2013\\u200910.11.2007, 10:10:10\\u202FAM",
"de", "CE 2007 10 10 10:10:10", "CE 2007 11 10 10:10:10", "Hms", "10.10.2007, 10:10:10\\u2009\\u2013\\u200910.11.2007, 10:10:10",
- "de", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "EEEEdMMMy", "Samstag, 10. \\u2013 Dienstag, 20. Nov. 2007",
+ "de", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "EEEEdMMMy", "Samstag, 10.\\u2009\\u2013\\u2009Dienstag, 20. Nov. 2007",
"de", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "dMMMy", "10.\\u201320. Nov. 2007",
"de", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "MMMy", "Nov. 2007",
- "de", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "EEEEdMMM", "Samstag, 10. \\u2013 Dienstag, 20. Nov.",
+ "de", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "EEEEdMMM", "Samstag, 10.\\u2009\\u2013\\u2009Dienstag, 20. Nov.",
- "de", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "EdMy", "Sa., 10. \\u2013 Di., 20.11.2007",
+ "de", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "EdMy", "Sa., 10.\\u2009\\u2013\\u2009Di., 20.11.2007",
"de", "CE 2007 11 10 10:10:10", "CE 2007 11 20 10:10:10", "dM", "10.\\u201320.11.",
@@ -1331,21 +1333,21 @@ void DateIntervalFormatTest::testContext() {
const char * skeleton;
UDisplayContext context;
const UDate deltaDate;
- const UChar* expectResult;
+ const char16_t* expectResult;
} DateIntervalContextItem;
static const DateIntervalContextItem testItems[] = {
- { "cs", "MMMEd", CAP_NONE, 60.0*_DAY, u"po 27. 9. – pá 26. 11." },
+ { "cs", "MMMEd", CAP_NONE, 60.0*_DAY, u"po 27. 9.\u2009–\u2009pá 26. 11." },
{ "cs", "yMMMM", CAP_NONE, 60.0*_DAY, u"září–listopad 2010" },
{ "cs", "yMMMM", CAP_NONE, 1.0*_DAY, u"září 2010" },
#if !UCONFIG_NO_BREAK_ITERATION
- { "cs", "MMMEd", CAP_BEGIN, 60.0*_DAY, u"Po 27. 9. – pá 26. 11." },
+ { "cs", "MMMEd", CAP_BEGIN, 60.0*_DAY, u"Po 27. 9.\u2009–\u2009pá 26. 11." },
{ "cs", "yMMMM", CAP_BEGIN, 60.0*_DAY, u"Září–listopad 2010" },
{ "cs", "yMMMM", CAP_BEGIN, 1.0*_DAY, u"Září 2010" },
- { "cs", "MMMEd", CAP_LIST, 60.0*_DAY, u"Po 27. 9. – pá 26. 11." },
+ { "cs", "MMMEd", CAP_LIST, 60.0*_DAY, u"Po 27. 9.\u2009–\u2009pá 26. 11." },
{ "cs", "yMMMM", CAP_LIST, 60.0*_DAY, u"Září–listopad 2010" },
{ "cs", "yMMMM", CAP_LIST, 1.0*_DAY, u"Září 2010" },
#endif
- { "cs", "MMMEd", CAP_ALONE, 60.0*_DAY, u"po 27. 9. – pá 26. 11." },
+ { "cs", "MMMEd", CAP_ALONE, 60.0*_DAY, u"po 27. 9.\u2009–\u2009pá 26. 11." },
{ "cs", "yMMMM", CAP_ALONE, 60.0*_DAY, u"září–listopad 2010" },
{ "cs", "yMMMM", CAP_ALONE, 1.0*_DAY, u"září 2010" },
{ nullptr, nullptr, CAP_NONE, 0, nullptr }
@@ -1539,7 +1541,7 @@ void DateIntervalFormatTest::expectUserDII(const char** data,
char mesg[1000];
PRINTMESG("interval format using user defined DateIntervalInfo\n");
str.extract(0, str.length(), result, "UTF-8");
- sprintf(mesg, "interval date: %s\n", result);
+ snprintf(mesg, sizeof(mesg), "interval date: %s\n", result);
PRINTMESG(mesg);
#endif
delete dtitvfmt;
@@ -1662,7 +1664,7 @@ void DateIntervalFormatTest::stress(const char** data, int32_t data_length,
#ifdef DTIFMTTS_DEBUG
char result[1000];
char mesg[1000];
- sprintf(mesg, "locale: %s\n", locName);
+ snprintf(mesg, sizeof(mesg), "locale: %s\n", locName);
PRINTMESG(mesg);
#endif
@@ -1672,7 +1674,7 @@ void DateIntervalFormatTest::stress(const char** data, int32_t data_length,
const char* datestr = data[i++];
const char* datestr_2 = data[i++];
#ifdef DTIFMTTS_DEBUG
- sprintf(mesg, "original date: %s - %s\n", datestr, datestr_2);
+ snprintf(mesg, sizeof(mesg), "original date: %s - %s\n", datestr, datestr_2);
PRINTMESG(mesg)
#endif
UDate date = ref.parse(ctou(datestr), ec);
@@ -1706,10 +1708,10 @@ void DateIntervalFormatTest::stress(const char** data, int32_t data_length,
if (!assertSuccess("format", ec)) return;
#ifdef DTIFMTTS_DEBUG
oneSkeleton.extract(0, oneSkeleton.length(), result, "UTF-8");
- sprintf(mesg, "interval by skeleton: %s\n", result);
+ snprintf(mesg, sizeof(mesg), "interval by skeleton: %s\n", result);
PRINTMESG(mesg)
str.extract(0, str.length(), result, "UTF-8");
- sprintf(mesg, "interval date: %s\n", result);
+ snprintf(mesg, sizeof(mesg), "interval date: %s\n", result);
PRINTMESG(mesg)
#endif
delete dtitvfmt;
@@ -1733,7 +1735,7 @@ void DateIntervalFormatTest::stress(const char** data, int32_t data_length,
#ifdef DTIFMTTS_DEBUG
PRINTMESG("interval format using user defined DateIntervalInfo\n");
str.extract(0, str.length(), result, "UTF-8");
- sprintf(mesg, "interval date: %s\n", result);
+ snprintf(mesg, sizeof(mesg), "interval date: %s\n", result);
PRINTMESG(mesg)
#endif
} else {
@@ -1775,16 +1777,16 @@ void DateIntervalFormatTest::testTicket11985() {
return;
}
UnicodeString pattern;
- static_cast<const SimpleDateFormat*>(fmt->getDateFormat())->toPattern(pattern);
+ dynamic_cast<const SimpleDateFormat*>(fmt->getDateFormat())->toPattern(pattern);
assertEquals("Format pattern", u"h:mm\u202Fa", pattern);
}
// Ticket 11669 - thread safety of DateIntervalFormat::format(). This test failed before
// the implementation was fixed.
-static const DateIntervalFormat *gIntervalFormatter = NULL; // The Formatter to be used concurrently by test threads.
-static const DateInterval *gInterval = NULL; // The date interval to be formatted concurrently.
-static const UnicodeString *gExpectedResult = NULL;
+static const DateIntervalFormat *gIntervalFormatter = nullptr; // The Formatter to be used concurrently by test threads.
+static const DateInterval *gInterval = nullptr; // The date interval to be formatted concurrently.
+static const UnicodeString *gExpectedResult = nullptr;
void DateIntervalFormatTest::threadFunc11669(int32_t threadNum) {
(void)threadNum;
@@ -1834,9 +1836,9 @@ void DateIntervalFormatTest::testTicket11669() {
threads.start();
threads.join();
- gInterval = NULL; // Don't leave dangling pointers lying around. Not strictly necessary.
- gIntervalFormatter = NULL;
- gExpectedResult = NULL;
+ gInterval = nullptr; // Don't leave dangling pointers lying around. Not strictly necessary.
+ gIntervalFormatter = nullptr;
+ gExpectedResult = nullptr;
}
@@ -2159,7 +2161,8 @@ void DateIntervalFormatTest::testTicket20707() {
calendar->setTime(UDate(1563235200000), status);
dtifmt->format(*calendar, *calendar, result, fposition, status);
- assertEquals("Formatted result", expected[i][j++], result);
+ const char* localeID = locale.getName();
+ assertEquals(localeID, expected[i][j++], result);
}
i++;
}
@@ -2385,4 +2388,79 @@ void DateIntervalFormatTest::testTicket21939() {
}
}
+void DateIntervalFormatTest::testTicket20710_FieldIdentity() {
+ IcuTestErrorCode status(*this, "testTicket20710_FieldIdentity");
+ LocalPointer<DateIntervalFormat> dtifmt(DateIntervalFormat::createInstance("eeeeMMMddyyhhmma", "de-CH", status));
+ LocalPointer<Calendar> calendar1(Calendar::createInstance(TimeZone::createTimeZone(u"CET"), status));
+ calendar1->setTime(UDate(1563235200000), status);
+ LocalPointer<Calendar> calendar2(Calendar::createInstance(TimeZone::createTimeZone(u"CET"), status));
+ calendar2->setTime(UDate(1564235200000), status);
+
+ {
+ auto fv = dtifmt->formatToValue(*calendar1, *calendar2, status);
+ ConstrainedFieldPosition cfp;
+ cfp.constrainCategory(UFIELD_CATEGORY_DATE_INTERVAL_SPAN);
+ assertTrue("Span field should be in non-identity formats", fv.nextPosition(cfp, status));
+ }
+ {
+ auto fv = dtifmt->formatToValue(*calendar1, *calendar1, status);
+ ConstrainedFieldPosition cfp;
+ cfp.constrainCategory(UFIELD_CATEGORY_DATE_INTERVAL_SPAN);
+ assertFalse("Span field should not be in identity formats", fv.nextPosition(cfp, status));
+ }
+}
+
+void DateIntervalFormatTest::testTicket20710_IntervalIdentity() {
+ IcuTestErrorCode status(*this, "testTicket20710_IntervalIdentity");
+
+ const char16_t timeZone[] = u"PST";
+ int32_t count = 0;
+ const Locale* locales = Locale::getAvailableLocales(count);
+ const UnicodeString skeletons[] = {
+ u"EEEEMMMMdyhmmssazzzz",
+ u"EEEEMMMMdyhhmmssazzzz",
+ u"EEEEMMMMddyyyyhhmmssvvvva",
+ u"EEEEMMMMddhmszza",
+ u"EEMMMMddyyhhzza",
+ u"eeeeMMMddyyhhmma",
+ u"MMddyyyyhhmmazzzz",
+ u"hhmmazzzz",
+ u"hmmssazzzz",
+ u"hhmmsszzzz",
+ u"MMddyyyyhhmmzzzz"
+ };
+
+ Locale quickLocales[] = {
+ {"en"}, {"es"}, {"sr"}, {"zh"}
+ };
+ if (quick) {
+ locales = quickLocales;
+ count = UPRV_LENGTHOF(quickLocales);
+ }
+
+ for (int32_t i = 0; i < count; i++) {
+ const Locale locale = locales[i];
+ LocalPointer<DateTimePatternGenerator> gen(DateTimePatternGenerator::createInstance(locale, status));
+ LocalPointer<Calendar> calendar(Calendar::createInstance(TimeZone::createTimeZone(timeZone), status));
+ calendar->setTime(UDate(1563235200000), status);
+ for (auto skeleton : skeletons) {
+ LocalPointer<DateIntervalFormat> dtifmt(DateIntervalFormat::createInstance(skeleton, locale, status));
+
+ FieldPosition fposition;
+ UnicodeString resultIntervalFormat;
+ dtifmt->format(*calendar, *calendar, resultIntervalFormat, fposition, status);
+
+ UnicodeString pattern = gen->getBestPattern(skeleton, status);
+ SimpleDateFormat dateFormat(pattern, locale, status);
+
+ FieldPositionIterator fpositer;
+ UnicodeString resultDateFormat;
+
+ dateFormat.format(*calendar, resultDateFormat, &fpositer, status);
+ assertEquals("DateIntervalFormat should fall back to DateFormat in the identity format", resultDateFormat, resultIntervalFormat);
+ }
+ }
+
+}
+
#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/dtifmtts.h b/Build/source/libs/icu/icu-src/source/test/intltest/dtifmtts.h
index bced7292ed0..8b3a033a9aa 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/dtifmtts.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/dtifmtts.h
@@ -25,7 +25,7 @@ U_NAMESPACE_END
* Test basic functionality of various API functions
**/
class DateIntervalFormatTest: public IntlTestWithFieldPosition {
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
public:
/**
@@ -90,6 +90,8 @@ public:
void testTicket21222JapaneseEraDiff();
void testTicket21939();
+ void testTicket20710_FieldIdentity();
+ void testTicket20710_IntervalIdentity();
private:
/**
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/dtptngts.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/dtptngts.cpp
index 6c5acef2348..f780271bdec 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/dtptngts.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/dtptngts.cpp
@@ -140,7 +140,7 @@ void IntlTestDateTimePatternGeneratorAPI::testAPI(/*char *par*/)
UnicodeString patternResults_de_DE[] = {
// de_DE // 2 de_DE
- UnicodeString("01/1999"), // 00: yM
+ UnicodeString("1/1999"), // 00: yM
UnicodeString("Jan. 1999"), // 01: yMMM
UnicodeString("13.1.1999"), // 02: yMd
UnicodeString("13. Jan. 1999"), // 03: yMMMd
@@ -245,7 +245,7 @@ void IntlTestDateTimePatternGeneratorAPI::testAPI(/*char *par*/)
UnicodeString patternResults_zh_Hans_CN[] = {
// zh_Hans_CN // 7 zh_Hans_CN
- CharsToUnicodeString("1999\\u5E741\\u6708"), // 00: yM -> y\u5E74M\u6708
+ CharsToUnicodeString("1999/1"), // 00: yM
CharsToUnicodeString("1999\\u5E741\\u6708"), // 01: yMMM -> yyyy\u5E74MMM (fixed expected result per ticket:6626:)
CharsToUnicodeString("1999/1/13"), // 02: yMd
CharsToUnicodeString("1999\\u5E741\\u670813\\u65E5"), // 03: yMMMd -> yyyy\u5E74MMMd\u65E5 (fixed expected result per ticket:6626:)
@@ -506,7 +506,7 @@ void IntlTestDateTimePatternGeneratorAPI::testAPI(/*char *par*/)
return;
}
TimeZone *zone = TimeZone::createTimeZone(UnicodeString("ECT"));
- if (zone==NULL) {
+ if (zone==nullptr) {
dataerrln("ERROR: Could not create TimeZone ECT");
delete gen;
delete format;
@@ -539,8 +539,8 @@ void IntlTestDateTimePatternGeneratorAPI::testAPI(/*char *par*/)
delete format;
// get a pattern and modify it
- format = (SimpleDateFormat *)DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFull,
- deLocale);
+ format = dynamic_cast<SimpleDateFormat*>(DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFull,
+ deLocale));
format->setTimeZone(*zone);
UnicodeString pattern;
pattern = format->toPattern(pattern);
@@ -746,13 +746,13 @@ void IntlTestDateTimePatternGeneratorAPI::testAPI(/*char *par*/)
return;
}
TimeZone *enZone = TimeZone::createTimeZone(UnicodeString("ECT/GMT"));
- if (enZone==NULL) {
+ if (enZone==nullptr) {
dataerrln("ERROR: Could not create TimeZone ECT");
delete patGen;
return;
}
- SimpleDateFormat *enFormat = (SimpleDateFormat *)DateFormat::createDateTimeInstance(DateFormat::kFull,
- DateFormat::kFull, Locale::getEnglish());
+ SimpleDateFormat *enFormat = dynamic_cast<SimpleDateFormat*>(DateFormat::createDateTimeInstance(DateFormat::kFull,
+ DateFormat::kFull, Locale::getEnglish()));
enFormat->setTimeZone(*enZone);
while (patternTests2[dataIndex].length() > 0) {
logln(patternTests2[dataIndex]);
@@ -782,12 +782,12 @@ void IntlTestDateTimePatternGeneratorAPI::testAPI(/*char *par*/)
dataerrln("ERROR: Could not create DateTimePatternGenerator (Locale::getFrench()) - exiting");
return;
}
- UChar newChar;
+ char16_t newChar;
for (i=0; i<10; ++i) {
UnicodeString randomSkeleton;
int32_t len = rand() % 20;
for (int32_t j=0; j<len; ++j ) {
- while ((newChar = (UChar)(rand()%0x7f))>=(UChar)0x20) {
+ while ((newChar = (char16_t)(rand()%0x7f))>=(char16_t)0x20) {
randomSkeleton += newChar;
}
}
@@ -824,13 +824,13 @@ void IntlTestDateTimePatternGeneratorAPI::testAPI(/*char *par*/)
testPattern=test->getBestPattern(UnicodeString("MMMMdd"), status);
conflictingStatus = test->addPattern(UnicodeString("HH:mm"), true, conflictingPattern, status);
conflictingStatus = test->addPattern(UnicodeString("MMMMMdd"), true, conflictingPattern, status); //duplicate pattern
- StringEnumeration *output=NULL;
+ StringEnumeration *output=nullptr;
output = test->getRedundants(status);
expectedResult=UnicodeString("MMMMd");
- if (output != NULL) {
+ if (output != nullptr) {
output->reset(status);
const UnicodeString *dupPattern=output->snext(status);
- if ( (dupPattern==NULL) || (*dupPattern != expectedResult) ) {
+ if ( (dupPattern==nullptr) || (*dupPattern != expectedResult) ) {
errln("ERROR: Fail in getRedundants !\n");
}
}
@@ -844,7 +844,7 @@ void IntlTestDateTimePatternGeneratorAPI::testAPI(/*char *par*/)
ptrSkeletonEnum->reset(status);
count=ptrSkeletonEnum->count(status);
for (i=0; i<count; ++i) {
- ptrSkeleton = (UnicodeString *)ptrSkeletonEnum->snext(status);
+ ptrSkeleton = const_cast<UnicodeString *>(ptrSkeletonEnum->snext(status));
returnPattern = test->getPatternForSkeleton(*ptrSkeleton);
if ( returnPattern != testSkeletonsResults[i] ) {
errln(UnicodeString("ERROR: Unexpected result from getSkeletons and getPatternForSkeleton\nGot: ") + returnPattern
@@ -858,7 +858,7 @@ void IntlTestDateTimePatternGeneratorAPI::testAPI(/*char *par*/)
}
count=ptrBaseSkeletonEnum->count(status);
for (i=0; i<count; ++i) {
- ptrSkeleton = (UnicodeString *)ptrBaseSkeletonEnum->snext(status);
+ ptrSkeleton = const_cast<UnicodeString *>(ptrBaseSkeletonEnum->snext(status));
if ( *ptrSkeleton != testBaseSkeletonsResults[i] ) {
errln("ERROR: Unexpected result from getBaseSkeletons() !\n");
}
@@ -920,7 +920,7 @@ void IntlTestDateTimePatternGeneratorAPI::testAPI(/*char *par*/)
typedef struct DTPtnGenOptionsData {
const char *locale;
const char *skel;
- const UChar *expectedPattern;
+ const char16_t *expectedPattern;
UDateTimePatternMatchOptions options;
} DTPtnGenOptionsData;
void IntlTestDateTimePatternGeneratorAPI::testOptions(/*char *par*/)
@@ -1018,7 +1018,7 @@ void IntlTestDateTimePatternGeneratorAPI::testAllFieldPatterns(/*char *par*/)
"en",
"en@calendar=japanese",
"en@calendar=chinese",
- NULL // terminator
+ nullptr // terminator
};
AllFieldsTestItem testData[] = {
//pat fieldLengths generated pattern must
@@ -1077,7 +1077,7 @@ void IntlTestDateTimePatternGeneratorAPI::testAllFieldPatterns(/*char *par*/)
const char ** localeNamesPtr = localeNames;
const char * localeName;
- while ( (localeName = *localeNamesPtr++) != NULL) {
+ while ( (localeName = *localeNamesPtr++) != nullptr) {
UErrorCode status = U_ZERO_ERROR;
Locale locale = Locale::createFromName(localeName);
DateTimePatternGenerator * dtpg = DateTimePatternGenerator::createInstance(locale, status);
@@ -1112,7 +1112,7 @@ void IntlTestDateTimePatternGeneratorAPI::testAllFieldPatterns(/*char *par*/)
int32_t patIndx, patLen = pattern.length();
UBool inQuoted = false;
for (patIndx = 0; patIndx < patLen; patIndx++) {
- UChar c = pattern.charAt(patIndx);
+ char16_t c = pattern.charAt(patIndx);
if (c == 0x27) {
inQuoted = !inQuoted;
} else if (!inQuoted && c <= 0x007A && c >= 0x0041) {
@@ -1188,7 +1188,7 @@ void IntlTestDateTimePatternGeneratorAPI::testC() {
for (int32_t i = 0; i < numTests; ++i) {
DateTimePatternGenerator *gen = DateTimePatternGenerator::createInstance(
Locale::forLanguageTag(tests[i][0], status), status);
- if (gen == NULL) {
+ if (gen == nullptr) {
dataerrln("FAIL: DateTimePatternGenerator::createInstance failed for %s", tests[i][0]);
return;
}
@@ -1316,7 +1316,7 @@ void IntlTestDateTimePatternGeneratorAPI::testGetFieldDisplayNames() {
if (U_FAILURE(status)) {
dataerrln("FAIL: DateTimePatternGenerator::createInstance failed for locale %s", testDataPtr->locale);
} else {
- UChar expName[kFieldDisplayNameMax+1];
+ char16_t expName[kFieldDisplayNameMax+1];
u_unescape(testDataPtr->expected, expName, kFieldDisplayNameMax);
expName[kFieldDisplayNameMax] = 0; // ensure 0 termination
UnicodeString getName = dtpg->getFieldDisplayName(testDataPtr->field, testDataPtr->width);
@@ -1329,7 +1329,7 @@ void IntlTestDateTimePatternGeneratorAPI::testGetFieldDisplayNames() {
}
}
-static const UChar timeCycleChars[] = { (UChar)0x0048, (UChar)0x0068, (UChar)0x004B, (UChar)0x006B, (UChar)0 };
+static const char16_t timeCycleChars[] = { (char16_t)0x0048, (char16_t)0x0068, (char16_t)0x004B, (char16_t)0x006B, (char16_t)0 };
void IntlTestDateTimePatternGeneratorAPI::testJjMapping() {
UErrorCode status = U_ZERO_ERROR;
@@ -1373,7 +1373,7 @@ void IntlTestDateTimePatternGeneratorAPI::testJjMapping() {
continue;
}
const SimpleDateFormat* sdfmt;
- if ((sdfmt = dynamic_cast<const SimpleDateFormat*>(reinterpret_cast<const DateFormat*>(dfmt.getAlias()))) == NULL) {
+ if ((sdfmt = dynamic_cast<const SimpleDateFormat*>(reinterpret_cast<const DateFormat*>(dfmt.getAlias()))) == nullptr) {
continue;
}
UnicodeString shortPattern;
@@ -1384,14 +1384,17 @@ void IntlTestDateTimePatternGeneratorAPI::testJjMapping() {
continue;
}
// Now check that shortPattern and jPattern use the same hour cycle
+ if ((uprv_strncmp(localeID, "csw", 3) == 0 || uprv_strncmp(localeID, "kxv_", 4) == 0) && logKnownIssue("CLDR-17199", "Need timeFormats with h for csw, kxv_Xxxx")) {
+ continue;
+ }
UnicodeString jPatSkeleton = DateTimePatternGenerator::staticGetSkeleton(jPattern, status);
UnicodeString shortPatSkeleton = DateTimePatternGenerator::staticGetSkeleton(shortPattern, status);
if (U_FAILURE(status)) {
errln("FAIL: DateTimePatternGenerator::staticGetSkeleton locale %s: %s", localeID, u_errorName(status));
continue;
}
- const UChar* charPtr = timeCycleChars;
- for (; *charPtr != (UChar)0; charPtr++) {
+ const char16_t* charPtr = timeCycleChars;
+ for (; *charPtr != (char16_t)0; charPtr++) {
if (jPatSkeleton.indexOf(*charPtr) >= 0) {
if (shortPatSkeleton.indexOf(*charPtr) < 0) {
char jcBuf[2], spBuf[32], jpBuf[32];
@@ -1522,7 +1525,7 @@ void IntlTestDateTimePatternGeneratorAPI::test_jConsistencyOddLocales() { // ICU
"xz-ZX", // unknown language with unknown country
"ars", "wuu" // aliased locales
};
- static const UChar* skeleton = u"jm";
+ static const char16_t* skeleton = u"jm";
for (const char* localeID: localeIDs) {
UErrorCode status = U_ZERO_ERROR;
Locale locale(localeID);
@@ -1566,7 +1569,7 @@ void IntlTestDateTimePatternGeneratorAPI::testBestPattern() {
const struct TestCase {
const char* localeID;
const char* skeleton;
- const UChar* expectedPattern;
+ const char16_t* expectedPattern;
} testCases[] = {
// ICU-21650: (See the "week day" section of https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table
// for a full explanation of why this is the desired behavior)
@@ -1599,6 +1602,8 @@ void IntlTestDateTimePatternGeneratorAPI::testBestPattern() {
{ "en_GB@calendar=coptic", "yMd", u"dd/MM/y GGGGG" },
{ "en_GB@calendar=japanese", "yMd", u"dd/MM/y GGGGG" },
{ "en_GB@calendar=buddhist", "yMd", u"dd/MM/y GGGGG" },
+ // ICU-22757: Not inheriting availableFormats patterns from root
+ { "sv_SE", "yMd", u"y-MM-dd" },
// ICU-20992: Bad patterns for missing fields
{ "ckb_IR", "mmSSS", u"mm:ss\u066bSSS" },
{ "ckb_IR", "BSSS", u"SSS \u251c'Dayperiod': B\u2524" },
@@ -1615,7 +1620,7 @@ void IntlTestDateTimePatternGeneratorAPI::testBestPattern() {
LocalPointer<DateFormat> df(DateFormat::createDateInstance(DateFormat::kFull, testCases[i].localeID));
SimpleDateFormat* sdf = dynamic_cast<SimpleDateFormat*>(df.getAlias());
- if (sdf != NULL) {
+ if (sdf != nullptr) {
sdf->toPattern(actualPattern);
}
}
@@ -1764,7 +1769,7 @@ void IntlTestDateTimePatternGeneratorAPI::testDateTimePatterns() {
void IntlTestDateTimePatternGeneratorAPI::testRegionOverride() {
const struct TestCase {
const char* locale;
- const UChar* expectedPattern;
+ const char16_t* expectedPattern;
UDateFormatHourCycle expectedHourCycle;
} testCases[] = {
{ "en_US", u"h:mm\u202fa", UDAT_HOUR_CYCLE_12 },
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/dtptngts.h b/Build/source/libs/icu/icu-src/source/test/intltest/dtptngts.h
index 30083f1b8b5..61699865ed8 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/dtptngts.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/dtptngts.h
@@ -21,7 +21,7 @@
* Test basic functionality of various API functions
**/
class IntlTestDateTimePatternGeneratorAPI : public IntlTest {
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
private:
/**
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/encoll.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/encoll.cpp
index fd913bf4524..97845a32b67 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/encoll.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/encoll.cpp
@@ -29,108 +29,108 @@ CollationEnglishTest::~CollationEnglishTest()
delete myCollation;
}
-static const UChar testSourceCases[][CollationEnglishTest::MAX_TOKEN_LEN] = {
- {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, 0},
- {(UChar)0x0062 /* 'b' */, (UChar)0x006C /* 'l' */, (UChar)0x0061 /* 'a' */, (UChar)0x0063 /* 'c' */, (UChar)0x006B /* 'k' */, (UChar)0x002D /* '-' */, (UChar)0x0062 /* 'b' */, (UChar)0x0069 /* 'i' */, (UChar)0x0072 /* 'r' */, (UChar)0x0064 /* 'd' */, 0},
- {(UChar)0x0062 /* 'b' */, (UChar)0x006C /* 'l' */, (UChar)0x0061 /* 'a' */, (UChar)0x0063 /* 'c' */, (UChar)0x006B /* 'k' */, (UChar)0x0020 /* ' ' */, (UChar)0x0062 /* 'b' */, (UChar)0x0069 /* 'i' */, (UChar)0x0072 /* 'r' */, (UChar)0x0064 /* 'd' */, 0},
- {(UChar)0x0062 /* 'b' */, (UChar)0x006C /* 'l' */, (UChar)0x0061 /* 'a' */, (UChar)0x0063 /* 'c' */, (UChar)0x006B /* 'k' */, (UChar)0x002D /* '-' */, (UChar)0x0062 /* 'b' */, (UChar)0x0069 /* 'i' */, (UChar)0x0072 /* 'r' */, (UChar)0x0064 /* 'd' */, 0},
- {(UChar)0x0048 /* 'H' */, (UChar)0x0065 /* 'e' */, (UChar)0x006C /* 'l' */, (UChar)0x006C /* 'l' */, (UChar)0x006F /* 'o' */, 0},
- {(UChar)0x0041 /* 'A' */, (UChar)0x0042 /* 'B' */, (UChar)0x0043 /* 'C' */, 0},
- {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
- {(UChar)0x0062 /* 'b' */, (UChar)0x006C /* 'l' */, (UChar)0x0061 /* 'a' */, (UChar)0x0063 /* 'c' */, (UChar)0x006B /* 'k' */, (UChar)0x0062 /* 'b' */, (UChar)0x0069 /* 'i' */, (UChar)0x0072 /* 'r' */, (UChar)0x0064 /* 'd' */, 0},
- {(UChar)0x0062 /* 'b' */, (UChar)0x006C /* 'l' */, (UChar)0x0061 /* 'a' */, (UChar)0x0063 /* 'c' */, (UChar)0x006B /* 'k' */, (UChar)0x002D /* '-' */, (UChar)0x0062 /* 'b' */, (UChar)0x0069 /* 'i' */, (UChar)0x0072 /* 'r' */, (UChar)0x0064 /* 'd' */, 0},
- {(UChar)0x0062 /* 'b' */, (UChar)0x006C /* 'l' */, (UChar)0x0061 /* 'a' */, (UChar)0x0063 /* 'c' */, (UChar)0x006B /* 'k' */, (UChar)0x002D /* '-' */, (UChar)0x0062 /* 'b' */, (UChar)0x0069 /* 'i' */, (UChar)0x0072 /* 'r' */, (UChar)0x0064 /* 'd' */, 0},
- {(UChar)0x0070 /* 'p' */, 0x00EA, (UChar)0x0063 /* 'c' */, (UChar)0x0068 /* 'h' */, (UChar)0x0065 /* 'e' */, 0},
- {(UChar)0x0070 /* 'p' */, 0x00E9, (UChar)0x0063 /* 'c' */, (UChar)0x0068 /* 'h' */, 0x00E9, 0},
- {0x00C4, (UChar)0x0042 /* 'B' */, 0x0308, (UChar)0x0043 /* 'C' */, 0x0308, 0},
- {(UChar)0x0061 /* 'a' */, 0x0308, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
- {(UChar)0x0070 /* 'p' */, 0x00E9, (UChar)0x0063 /* 'c' */, (UChar)0x0068 /* 'h' */, (UChar)0x0065 /* 'e' */, (UChar)0x0072 /* 'r' */, 0},
- {(UChar)0x0072 /* 'r' */, (UChar)0x006F /* 'o' */, (UChar)0x006C /* 'l' */, (UChar)0x0065 /* 'e' */, (UChar)0x0073 /* 's' */, 0},
- {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
- {(UChar)0x0041 /* 'A' */, 0},
- {(UChar)0x0041 /* 'A' */, 0},
- {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, 0},
- {(UChar)0x0074 /* 't' */, (UChar)0x0063 /* 'c' */, (UChar)0x006F /* 'o' */, (UChar)0x006D /* 'm' */, (UChar)0x0070 /* 'p' */, (UChar)0x0061 /* 'a' */, (UChar)0x0072 /* 'r' */, (UChar)0x0065 /* 'e' */, (UChar)0x0070 /* 'p' */, (UChar)0x006C /* 'l' */, (UChar)0x0061 /* 'a' */, (UChar)0x0069 /* 'i' */, (UChar)0x006E /* 'n' */, 0},
- {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, 0},
- {(UChar)0x0061 /* 'a' */, (UChar)0x0023 /* '#' */, (UChar)0x0062 /* 'b' */, 0},
- {(UChar)0x0061 /* 'a' */, (UChar)0x0023 /* '#' */, (UChar)0x0062 /* 'b' */, 0},
- {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
- {(UChar)0x0041 /* 'A' */, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, (UChar)0x0064 /* 'd' */, (UChar)0x0061 /* 'a' */, 0},
- {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, (UChar)0x0064 /* 'd' */, (UChar)0x0061 /* 'a' */, 0},
- {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, (UChar)0x0064 /* 'd' */, (UChar)0x0061 /* 'a' */, 0},
- {0x00E6, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, (UChar)0x0064 /* 'd' */, (UChar)0x0061 /* 'a' */, 0},
- {0x00E4, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, (UChar)0x0064 /* 'd' */, (UChar)0x0061 /* 'a' */, 0},
- {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
- {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
- {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
- {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
- {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
- {(UChar)0x0061 /* 'a' */, (UChar)0x0063 /* 'c' */, (UChar)0x0048 /* 'H' */, (UChar)0x0063 /* 'c' */, 0},
- {(UChar)0x0061 /* 'a' */, 0x0308, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
- {(UChar)0x0074 /* 't' */, (UChar)0x0068 /* 'h' */, (UChar)0x0069 /* 'i' */, 0x0302, (UChar)0x0073 /* 's' */, 0},
- {(UChar)0x0070 /* 'p' */, 0x00EA, (UChar)0x0063 /* 'c' */, (UChar)0x0068 /* 'h' */, (UChar)0x0065 /* 'e' */},
- {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
- {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
- {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
- {(UChar)0x0061 /* 'a' */, 0x00E6, (UChar)0x0063 /* 'c' */, 0},
- {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
- {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
- {(UChar)0x0061 /* 'a' */, 0x00E6, (UChar)0x0063 /* 'c' */, 0},
- {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
- {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
- {(UChar)0x0070 /* 'p' */, 0x00E9, (UChar)0x0063 /* 'c' */, (UChar)0x0068 /* 'h' */, 0x00E9, 0} // 49
+static const char16_t testSourceCases[][CollationEnglishTest::MAX_TOKEN_LEN] = {
+ {(char16_t)0x0061 /* 'a' */, (char16_t)0x0062 /* 'b' */, 0},
+ {(char16_t)0x0062 /* 'b' */, (char16_t)0x006C /* 'l' */, (char16_t)0x0061 /* 'a' */, (char16_t)0x0063 /* 'c' */, (char16_t)0x006B /* 'k' */, (char16_t)0x002D /* '-' */, (char16_t)0x0062 /* 'b' */, (char16_t)0x0069 /* 'i' */, (char16_t)0x0072 /* 'r' */, (char16_t)0x0064 /* 'd' */, 0},
+ {(char16_t)0x0062 /* 'b' */, (char16_t)0x006C /* 'l' */, (char16_t)0x0061 /* 'a' */, (char16_t)0x0063 /* 'c' */, (char16_t)0x006B /* 'k' */, (char16_t)0x0020 /* ' ' */, (char16_t)0x0062 /* 'b' */, (char16_t)0x0069 /* 'i' */, (char16_t)0x0072 /* 'r' */, (char16_t)0x0064 /* 'd' */, 0},
+ {(char16_t)0x0062 /* 'b' */, (char16_t)0x006C /* 'l' */, (char16_t)0x0061 /* 'a' */, (char16_t)0x0063 /* 'c' */, (char16_t)0x006B /* 'k' */, (char16_t)0x002D /* '-' */, (char16_t)0x0062 /* 'b' */, (char16_t)0x0069 /* 'i' */, (char16_t)0x0072 /* 'r' */, (char16_t)0x0064 /* 'd' */, 0},
+ {(char16_t)0x0048 /* 'H' */, (char16_t)0x0065 /* 'e' */, (char16_t)0x006C /* 'l' */, (char16_t)0x006C /* 'l' */, (char16_t)0x006F /* 'o' */, 0},
+ {(char16_t)0x0041 /* 'A' */, (char16_t)0x0042 /* 'B' */, (char16_t)0x0043 /* 'C' */, 0},
+ {(char16_t)0x0061 /* 'a' */, (char16_t)0x0062 /* 'b' */, (char16_t)0x0063 /* 'c' */, 0},
+ {(char16_t)0x0062 /* 'b' */, (char16_t)0x006C /* 'l' */, (char16_t)0x0061 /* 'a' */, (char16_t)0x0063 /* 'c' */, (char16_t)0x006B /* 'k' */, (char16_t)0x0062 /* 'b' */, (char16_t)0x0069 /* 'i' */, (char16_t)0x0072 /* 'r' */, (char16_t)0x0064 /* 'd' */, 0},
+ {(char16_t)0x0062 /* 'b' */, (char16_t)0x006C /* 'l' */, (char16_t)0x0061 /* 'a' */, (char16_t)0x0063 /* 'c' */, (char16_t)0x006B /* 'k' */, (char16_t)0x002D /* '-' */, (char16_t)0x0062 /* 'b' */, (char16_t)0x0069 /* 'i' */, (char16_t)0x0072 /* 'r' */, (char16_t)0x0064 /* 'd' */, 0},
+ {(char16_t)0x0062 /* 'b' */, (char16_t)0x006C /* 'l' */, (char16_t)0x0061 /* 'a' */, (char16_t)0x0063 /* 'c' */, (char16_t)0x006B /* 'k' */, (char16_t)0x002D /* '-' */, (char16_t)0x0062 /* 'b' */, (char16_t)0x0069 /* 'i' */, (char16_t)0x0072 /* 'r' */, (char16_t)0x0064 /* 'd' */, 0},
+ {(char16_t)0x0070 /* 'p' */, 0x00EA, (char16_t)0x0063 /* 'c' */, (char16_t)0x0068 /* 'h' */, (char16_t)0x0065 /* 'e' */, 0},
+ {(char16_t)0x0070 /* 'p' */, 0x00E9, (char16_t)0x0063 /* 'c' */, (char16_t)0x0068 /* 'h' */, 0x00E9, 0},
+ {0x00C4, (char16_t)0x0042 /* 'B' */, 0x0308, (char16_t)0x0043 /* 'C' */, 0x0308, 0},
+ {(char16_t)0x0061 /* 'a' */, 0x0308, (char16_t)0x0062 /* 'b' */, (char16_t)0x0063 /* 'c' */, 0},
+ {(char16_t)0x0070 /* 'p' */, 0x00E9, (char16_t)0x0063 /* 'c' */, (char16_t)0x0068 /* 'h' */, (char16_t)0x0065 /* 'e' */, (char16_t)0x0072 /* 'r' */, 0},
+ {(char16_t)0x0072 /* 'r' */, (char16_t)0x006F /* 'o' */, (char16_t)0x006C /* 'l' */, (char16_t)0x0065 /* 'e' */, (char16_t)0x0073 /* 's' */, 0},
+ {(char16_t)0x0061 /* 'a' */, (char16_t)0x0062 /* 'b' */, (char16_t)0x0063 /* 'c' */, 0},
+ {(char16_t)0x0041 /* 'A' */, 0},
+ {(char16_t)0x0041 /* 'A' */, 0},
+ {(char16_t)0x0061 /* 'a' */, (char16_t)0x0062 /* 'b' */, 0},
+ {(char16_t)0x0074 /* 't' */, (char16_t)0x0063 /* 'c' */, (char16_t)0x006F /* 'o' */, (char16_t)0x006D /* 'm' */, (char16_t)0x0070 /* 'p' */, (char16_t)0x0061 /* 'a' */, (char16_t)0x0072 /* 'r' */, (char16_t)0x0065 /* 'e' */, (char16_t)0x0070 /* 'p' */, (char16_t)0x006C /* 'l' */, (char16_t)0x0061 /* 'a' */, (char16_t)0x0069 /* 'i' */, (char16_t)0x006E /* 'n' */, 0},
+ {(char16_t)0x0061 /* 'a' */, (char16_t)0x0062 /* 'b' */, 0},
+ {(char16_t)0x0061 /* 'a' */, (char16_t)0x0023 /* '#' */, (char16_t)0x0062 /* 'b' */, 0},
+ {(char16_t)0x0061 /* 'a' */, (char16_t)0x0023 /* '#' */, (char16_t)0x0062 /* 'b' */, 0},
+ {(char16_t)0x0061 /* 'a' */, (char16_t)0x0062 /* 'b' */, (char16_t)0x0063 /* 'c' */, 0},
+ {(char16_t)0x0041 /* 'A' */, (char16_t)0x0062 /* 'b' */, (char16_t)0x0063 /* 'c' */, (char16_t)0x0064 /* 'd' */, (char16_t)0x0061 /* 'a' */, 0},
+ {(char16_t)0x0061 /* 'a' */, (char16_t)0x0062 /* 'b' */, (char16_t)0x0063 /* 'c' */, (char16_t)0x0064 /* 'd' */, (char16_t)0x0061 /* 'a' */, 0},
+ {(char16_t)0x0061 /* 'a' */, (char16_t)0x0062 /* 'b' */, (char16_t)0x0063 /* 'c' */, (char16_t)0x0064 /* 'd' */, (char16_t)0x0061 /* 'a' */, 0},
+ {0x00E6, (char16_t)0x0062 /* 'b' */, (char16_t)0x0063 /* 'c' */, (char16_t)0x0064 /* 'd' */, (char16_t)0x0061 /* 'a' */, 0},
+ {0x00E4, (char16_t)0x0062 /* 'b' */, (char16_t)0x0063 /* 'c' */, (char16_t)0x0064 /* 'd' */, (char16_t)0x0061 /* 'a' */, 0},
+ {(char16_t)0x0061 /* 'a' */, (char16_t)0x0062 /* 'b' */, (char16_t)0x0063 /* 'c' */, 0},
+ {(char16_t)0x0061 /* 'a' */, (char16_t)0x0062 /* 'b' */, (char16_t)0x0063 /* 'c' */, 0},
+ {(char16_t)0x0061 /* 'a' */, (char16_t)0x0062 /* 'b' */, (char16_t)0x0063 /* 'c' */, 0},
+ {(char16_t)0x0061 /* 'a' */, (char16_t)0x0062 /* 'b' */, (char16_t)0x0063 /* 'c' */, 0},
+ {(char16_t)0x0061 /* 'a' */, (char16_t)0x0062 /* 'b' */, (char16_t)0x0063 /* 'c' */, 0},
+ {(char16_t)0x0061 /* 'a' */, (char16_t)0x0063 /* 'c' */, (char16_t)0x0048 /* 'H' */, (char16_t)0x0063 /* 'c' */, 0},
+ {(char16_t)0x0061 /* 'a' */, 0x0308, (char16_t)0x0062 /* 'b' */, (char16_t)0x0063 /* 'c' */, 0},
+ {(char16_t)0x0074 /* 't' */, (char16_t)0x0068 /* 'h' */, (char16_t)0x0069 /* 'i' */, 0x0302, (char16_t)0x0073 /* 's' */, 0},
+ {(char16_t)0x0070 /* 'p' */, 0x00EA, (char16_t)0x0063 /* 'c' */, (char16_t)0x0068 /* 'h' */, (char16_t)0x0065 /* 'e' */},
+ {(char16_t)0x0061 /* 'a' */, (char16_t)0x0062 /* 'b' */, (char16_t)0x0063 /* 'c' */, 0},
+ {(char16_t)0x0061 /* 'a' */, (char16_t)0x0062 /* 'b' */, (char16_t)0x0063 /* 'c' */, 0},
+ {(char16_t)0x0061 /* 'a' */, (char16_t)0x0062 /* 'b' */, (char16_t)0x0063 /* 'c' */, 0},
+ {(char16_t)0x0061 /* 'a' */, 0x00E6, (char16_t)0x0063 /* 'c' */, 0},
+ {(char16_t)0x0061 /* 'a' */, (char16_t)0x0062 /* 'b' */, (char16_t)0x0063 /* 'c' */, 0},
+ {(char16_t)0x0061 /* 'a' */, (char16_t)0x0062 /* 'b' */, (char16_t)0x0063 /* 'c' */, 0},
+ {(char16_t)0x0061 /* 'a' */, 0x00E6, (char16_t)0x0063 /* 'c' */, 0},
+ {(char16_t)0x0061 /* 'a' */, (char16_t)0x0062 /* 'b' */, (char16_t)0x0063 /* 'c' */, 0},
+ {(char16_t)0x0061 /* 'a' */, (char16_t)0x0062 /* 'b' */, (char16_t)0x0063 /* 'c' */, 0},
+ {(char16_t)0x0070 /* 'p' */, 0x00E9, (char16_t)0x0063 /* 'c' */, (char16_t)0x0068 /* 'h' */, 0x00E9, 0} // 49
};
-static const UChar testTargetCases[][CollationEnglishTest::MAX_TOKEN_LEN] = {
- {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
- {(UChar)0x0062 /* 'b' */, (UChar)0x006C /* 'l' */, (UChar)0x0061 /* 'a' */, (UChar)0x0063 /* 'c' */, (UChar)0x006B /* 'k' */, (UChar)0x0062 /* 'b' */, (UChar)0x0069 /* 'i' */, (UChar)0x0072 /* 'r' */, (UChar)0x0064 /* 'd' */, 0},
- {(UChar)0x0062 /* 'b' */, (UChar)0x006C /* 'l' */, (UChar)0x0061 /* 'a' */, (UChar)0x0063 /* 'c' */, (UChar)0x006B /* 'k' */, (UChar)0x002D /* '-' */, (UChar)0x0062 /* 'b' */, (UChar)0x0069 /* 'i' */, (UChar)0x0072 /* 'r' */, (UChar)0x0064 /* 'd' */, 0},
- {(UChar)0x0062 /* 'b' */, (UChar)0x006C /* 'l' */, (UChar)0x0061 /* 'a' */, (UChar)0x0063 /* 'c' */, (UChar)0x006B /* 'k' */, 0},
- {(UChar)0x0068 /* 'h' */, (UChar)0x0065 /* 'e' */, (UChar)0x006C /* 'l' */, (UChar)0x006C /* 'l' */, (UChar)0x006F /* 'o' */, 0},
- {(UChar)0x0041 /* 'A' */, (UChar)0x0042 /* 'B' */, (UChar)0x0043 /* 'C' */, 0},
- {(UChar)0x0041 /* 'A' */, (UChar)0x0042 /* 'B' */, (UChar)0x0043 /* 'C' */, 0},
- {(UChar)0x0062 /* 'b' */, (UChar)0x006C /* 'l' */, (UChar)0x0061 /* 'a' */, (UChar)0x0063 /* 'c' */, (UChar)0x006B /* 'k' */, (UChar)0x0062 /* 'b' */, (UChar)0x0069 /* 'i' */, (UChar)0x0072 /* 'r' */, (UChar)0x0064 /* 'd' */, (UChar)0x0073 /* 's' */, 0},
- {(UChar)0x0062 /* 'b' */, (UChar)0x006C /* 'l' */, (UChar)0x0061 /* 'a' */, (UChar)0x0063 /* 'c' */, (UChar)0x006B /* 'k' */, (UChar)0x0062 /* 'b' */, (UChar)0x0069 /* 'i' */, (UChar)0x0072 /* 'r' */, (UChar)0x0064 /* 'd' */, (UChar)0x0073 /* 's' */, 0},
- {(UChar)0x0062 /* 'b' */, (UChar)0x006C /* 'l' */, (UChar)0x0061 /* 'a' */, (UChar)0x0063 /* 'c' */, (UChar)0x006B /* 'k' */, (UChar)0x0062 /* 'b' */, (UChar)0x0069 /* 'i' */, (UChar)0x0072 /* 'r' */, (UChar)0x0064 /* 'd' */, 0},
- {(UChar)0x0070 /* 'p' */, 0x00E9, (UChar)0x0063 /* 'c' */, (UChar)0x0068 /* 'h' */, 0x00E9, 0},
- {(UChar)0x0070 /* 'p' */, 0x00E9, (UChar)0x0063 /* 'c' */, (UChar)0x0068 /* 'h' */, (UChar)0x0065 /* 'e' */, (UChar)0x0072 /* 'r' */, 0},
- {0x00C4, (UChar)0x0042 /* 'B' */, 0x0308, (UChar)0x0043 /* 'C' */, 0x0308, 0},
- {(UChar)0x0041 /* 'A' */, 0x0308, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
- {(UChar)0x0070 /* 'p' */, 0x00E9, (UChar)0x0063 /* 'c' */, (UChar)0x0068 /* 'h' */, (UChar)0x0065 /* 'e' */, 0},
- {(UChar)0x0072 /* 'r' */, (UChar)0x006F /* 'o' */, 0x0302, (UChar)0x006C /* 'l' */, (UChar)0x0065 /* 'e' */, 0},
- {(UChar)0x0041 /* 'A' */, 0x00E1, (UChar)0x0063 /* 'c' */, (UChar)0x0064 /* 'd' */, 0},
- {(UChar)0x0041 /* 'A' */, 0x00E1, (UChar)0x0063 /* 'c' */, (UChar)0x0064 /* 'd' */, 0},
- {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
- {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
- {(UChar)0x0054 /* 'T' */, (UChar)0x0043 /* 'C' */, (UChar)0x006F /* 'o' */, (UChar)0x006D /* 'm' */, (UChar)0x0070 /* 'p' */, (UChar)0x0061 /* 'a' */, (UChar)0x0072 /* 'r' */, (UChar)0x0065 /* 'e' */, (UChar)0x0050 /* 'P' */, (UChar)0x006C /* 'l' */, (UChar)0x0061 /* 'a' */, (UChar)0x0069 /* 'i' */, (UChar)0x006E /* 'n' */, 0},
- {(UChar)0x0061 /* 'a' */, (UChar)0x0042 /* 'B' */, (UChar)0x0063 /* 'c' */, 0},
- {(UChar)0x0061 /* 'a' */, (UChar)0x0023 /* '#' */, (UChar)0x0042 /* 'B' */, 0},
- {(UChar)0x0061 /* 'a' */, (UChar)0x0026 /* '&' */, (UChar)0x0062 /* 'b' */, 0},
- {(UChar)0x0061 /* 'a' */, (UChar)0x0023 /* '#' */, (UChar)0x0063 /* 'c' */, 0},
- {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, (UChar)0x0064 /* 'd' */, (UChar)0x0061 /* 'a' */, 0},
- {0x00C4, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, (UChar)0x0064 /* 'd' */, (UChar)0x0061 /* 'a' */, 0},
- {0x00E4, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, (UChar)0x0064 /* 'd' */, (UChar)0x0061 /* 'a' */, 0},
- {0x00C4, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, (UChar)0x0064 /* 'd' */, (UChar)0x0061 /* 'a' */, 0},
- {0x00C4, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, (UChar)0x0064 /* 'd' */, (UChar)0x0061 /* 'a' */, 0},
- {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0023 /* '#' */, (UChar)0x0063 /* 'c' */, 0},
- {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
- {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x003D /* '=' */, (UChar)0x0063 /* 'c' */, 0},
- {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0064 /* 'd' */, 0},
- {0x00E4, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
- {(UChar)0x0061 /* 'a' */, (UChar)0x0043 /* 'C' */, (UChar)0x0048 /* 'H' */, (UChar)0x0063 /* 'c' */, 0},
- {0x00E4, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
- {(UChar)0x0074 /* 't' */, (UChar)0x0068 /* 'h' */, 0x00EE, (UChar)0x0073 /* 's' */, 0},
- {(UChar)0x0070 /* 'p' */, 0x00E9, (UChar)0x0063 /* 'c' */, (UChar)0x0068 /* 'h' */, 0x00E9, 0},
- {(UChar)0x0061 /* 'a' */, (UChar)0x0042 /* 'B' */, (UChar)0x0043 /* 'C' */, 0},
- {(UChar)0x0061 /* 'a' */, (UChar)0x0062 /* 'b' */, (UChar)0x0064 /* 'd' */, 0},
- {0x00E4, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
- {(UChar)0x0061 /* 'a' */, 0x00C6, (UChar)0x0063 /* 'c' */, 0},
- {(UChar)0x0061 /* 'a' */, (UChar)0x0042 /* 'B' */, (UChar)0x0064 /* 'd' */, 0},
- {0x00E4, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
- {(UChar)0x0061 /* 'a' */, 0x00C6, (UChar)0x0063 /* 'c' */, 0},
- {(UChar)0x0061 /* 'a' */, (UChar)0x0042 /* 'B' */, (UChar)0x0064 /* 'd' */, 0},
- {0x00E4, (UChar)0x0062 /* 'b' */, (UChar)0x0063 /* 'c' */, 0},
- {(UChar)0x0070 /* 'p' */, 0x00EA, (UChar)0x0063 /* 'c' */, (UChar)0x0068 /* 'h' */, (UChar)0x0065 /* 'e' */, 0} // 49
+static const char16_t testTargetCases[][CollationEnglishTest::MAX_TOKEN_LEN] = {
+ {(char16_t)0x0061 /* 'a' */, (char16_t)0x0062 /* 'b' */, (char16_t)0x0063 /* 'c' */, 0},
+ {(char16_t)0x0062 /* 'b' */, (char16_t)0x006C /* 'l' */, (char16_t)0x0061 /* 'a' */, (char16_t)0x0063 /* 'c' */, (char16_t)0x006B /* 'k' */, (char16_t)0x0062 /* 'b' */, (char16_t)0x0069 /* 'i' */, (char16_t)0x0072 /* 'r' */, (char16_t)0x0064 /* 'd' */, 0},
+ {(char16_t)0x0062 /* 'b' */, (char16_t)0x006C /* 'l' */, (char16_t)0x0061 /* 'a' */, (char16_t)0x0063 /* 'c' */, (char16_t)0x006B /* 'k' */, (char16_t)0x002D /* '-' */, (char16_t)0x0062 /* 'b' */, (char16_t)0x0069 /* 'i' */, (char16_t)0x0072 /* 'r' */, (char16_t)0x0064 /* 'd' */, 0},
+ {(char16_t)0x0062 /* 'b' */, (char16_t)0x006C /* 'l' */, (char16_t)0x0061 /* 'a' */, (char16_t)0x0063 /* 'c' */, (char16_t)0x006B /* 'k' */, 0},
+ {(char16_t)0x0068 /* 'h' */, (char16_t)0x0065 /* 'e' */, (char16_t)0x006C /* 'l' */, (char16_t)0x006C /* 'l' */, (char16_t)0x006F /* 'o' */, 0},
+ {(char16_t)0x0041 /* 'A' */, (char16_t)0x0042 /* 'B' */, (char16_t)0x0043 /* 'C' */, 0},
+ {(char16_t)0x0041 /* 'A' */, (char16_t)0x0042 /* 'B' */, (char16_t)0x0043 /* 'C' */, 0},
+ {(char16_t)0x0062 /* 'b' */, (char16_t)0x006C /* 'l' */, (char16_t)0x0061 /* 'a' */, (char16_t)0x0063 /* 'c' */, (char16_t)0x006B /* 'k' */, (char16_t)0x0062 /* 'b' */, (char16_t)0x0069 /* 'i' */, (char16_t)0x0072 /* 'r' */, (char16_t)0x0064 /* 'd' */, (char16_t)0x0073 /* 's' */, 0},
+ {(char16_t)0x0062 /* 'b' */, (char16_t)0x006C /* 'l' */, (char16_t)0x0061 /* 'a' */, (char16_t)0x0063 /* 'c' */, (char16_t)0x006B /* 'k' */, (char16_t)0x0062 /* 'b' */, (char16_t)0x0069 /* 'i' */, (char16_t)0x0072 /* 'r' */, (char16_t)0x0064 /* 'd' */, (char16_t)0x0073 /* 's' */, 0},
+ {(char16_t)0x0062 /* 'b' */, (char16_t)0x006C /* 'l' */, (char16_t)0x0061 /* 'a' */, (char16_t)0x0063 /* 'c' */, (char16_t)0x006B /* 'k' */, (char16_t)0x0062 /* 'b' */, (char16_t)0x0069 /* 'i' */, (char16_t)0x0072 /* 'r' */, (char16_t)0x0064 /* 'd' */, 0},
+ {(char16_t)0x0070 /* 'p' */, 0x00E9, (char16_t)0x0063 /* 'c' */, (char16_t)0x0068 /* 'h' */, 0x00E9, 0},
+ {(char16_t)0x0070 /* 'p' */, 0x00E9, (char16_t)0x0063 /* 'c' */, (char16_t)0x0068 /* 'h' */, (char16_t)0x0065 /* 'e' */, (char16_t)0x0072 /* 'r' */, 0},
+ {0x00C4, (char16_t)0x0042 /* 'B' */, 0x0308, (char16_t)0x0043 /* 'C' */, 0x0308, 0},
+ {(char16_t)0x0041 /* 'A' */, 0x0308, (char16_t)0x0062 /* 'b' */, (char16_t)0x0063 /* 'c' */, 0},
+ {(char16_t)0x0070 /* 'p' */, 0x00E9, (char16_t)0x0063 /* 'c' */, (char16_t)0x0068 /* 'h' */, (char16_t)0x0065 /* 'e' */, 0},
+ {(char16_t)0x0072 /* 'r' */, (char16_t)0x006F /* 'o' */, 0x0302, (char16_t)0x006C /* 'l' */, (char16_t)0x0065 /* 'e' */, 0},
+ {(char16_t)0x0041 /* 'A' */, 0x00E1, (char16_t)0x0063 /* 'c' */, (char16_t)0x0064 /* 'd' */, 0},
+ {(char16_t)0x0041 /* 'A' */, 0x00E1, (char16_t)0x0063 /* 'c' */, (char16_t)0x0064 /* 'd' */, 0},
+ {(char16_t)0x0061 /* 'a' */, (char16_t)0x0062 /* 'b' */, (char16_t)0x0063 /* 'c' */, 0},
+ {(char16_t)0x0061 /* 'a' */, (char16_t)0x0062 /* 'b' */, (char16_t)0x0063 /* 'c' */, 0},
+ {(char16_t)0x0054 /* 'T' */, (char16_t)0x0043 /* 'C' */, (char16_t)0x006F /* 'o' */, (char16_t)0x006D /* 'm' */, (char16_t)0x0070 /* 'p' */, (char16_t)0x0061 /* 'a' */, (char16_t)0x0072 /* 'r' */, (char16_t)0x0065 /* 'e' */, (char16_t)0x0050 /* 'P' */, (char16_t)0x006C /* 'l' */, (char16_t)0x0061 /* 'a' */, (char16_t)0x0069 /* 'i' */, (char16_t)0x006E /* 'n' */, 0},
+ {(char16_t)0x0061 /* 'a' */, (char16_t)0x0042 /* 'B' */, (char16_t)0x0063 /* 'c' */, 0},
+ {(char16_t)0x0061 /* 'a' */, (char16_t)0x0023 /* '#' */, (char16_t)0x0042 /* 'B' */, 0},
+ {(char16_t)0x0061 /* 'a' */, (char16_t)0x0026 /* '&' */, (char16_t)0x0062 /* 'b' */, 0},
+ {(char16_t)0x0061 /* 'a' */, (char16_t)0x0023 /* '#' */, (char16_t)0x0063 /* 'c' */, 0},
+ {(char16_t)0x0061 /* 'a' */, (char16_t)0x0062 /* 'b' */, (char16_t)0x0063 /* 'c' */, (char16_t)0x0064 /* 'd' */, (char16_t)0x0061 /* 'a' */, 0},
+ {0x00C4, (char16_t)0x0062 /* 'b' */, (char16_t)0x0063 /* 'c' */, (char16_t)0x0064 /* 'd' */, (char16_t)0x0061 /* 'a' */, 0},
+ {0x00E4, (char16_t)0x0062 /* 'b' */, (char16_t)0x0063 /* 'c' */, (char16_t)0x0064 /* 'd' */, (char16_t)0x0061 /* 'a' */, 0},
+ {0x00C4, (char16_t)0x0062 /* 'b' */, (char16_t)0x0063 /* 'c' */, (char16_t)0x0064 /* 'd' */, (char16_t)0x0061 /* 'a' */, 0},
+ {0x00C4, (char16_t)0x0062 /* 'b' */, (char16_t)0x0063 /* 'c' */, (char16_t)0x0064 /* 'd' */, (char16_t)0x0061 /* 'a' */, 0},
+ {(char16_t)0x0061 /* 'a' */, (char16_t)0x0062 /* 'b' */, (char16_t)0x0023 /* '#' */, (char16_t)0x0063 /* 'c' */, 0},
+ {(char16_t)0x0061 /* 'a' */, (char16_t)0x0062 /* 'b' */, (char16_t)0x0063 /* 'c' */, 0},
+ {(char16_t)0x0061 /* 'a' */, (char16_t)0x0062 /* 'b' */, (char16_t)0x003D /* '=' */, (char16_t)0x0063 /* 'c' */, 0},
+ {(char16_t)0x0061 /* 'a' */, (char16_t)0x0062 /* 'b' */, (char16_t)0x0064 /* 'd' */, 0},
+ {0x00E4, (char16_t)0x0062 /* 'b' */, (char16_t)0x0063 /* 'c' */, 0},
+ {(char16_t)0x0061 /* 'a' */, (char16_t)0x0043 /* 'C' */, (char16_t)0x0048 /* 'H' */, (char16_t)0x0063 /* 'c' */, 0},
+ {0x00E4, (char16_t)0x0062 /* 'b' */, (char16_t)0x0063 /* 'c' */, 0},
+ {(char16_t)0x0074 /* 't' */, (char16_t)0x0068 /* 'h' */, 0x00EE, (char16_t)0x0073 /* 's' */, 0},
+ {(char16_t)0x0070 /* 'p' */, 0x00E9, (char16_t)0x0063 /* 'c' */, (char16_t)0x0068 /* 'h' */, 0x00E9, 0},
+ {(char16_t)0x0061 /* 'a' */, (char16_t)0x0042 /* 'B' */, (char16_t)0x0043 /* 'C' */, 0},
+ {(char16_t)0x0061 /* 'a' */, (char16_t)0x0062 /* 'b' */, (char16_t)0x0064 /* 'd' */, 0},
+ {0x00E4, (char16_t)0x0062 /* 'b' */, (char16_t)0x0063 /* 'c' */, 0},
+ {(char16_t)0x0061 /* 'a' */, 0x00C6, (char16_t)0x0063 /* 'c' */, 0},
+ {(char16_t)0x0061 /* 'a' */, (char16_t)0x0042 /* 'B' */, (char16_t)0x0064 /* 'd' */, 0},
+ {0x00E4, (char16_t)0x0062 /* 'b' */, (char16_t)0x0063 /* 'c' */, 0},
+ {(char16_t)0x0061 /* 'a' */, 0x00C6, (char16_t)0x0063 /* 'c' */, 0},
+ {(char16_t)0x0061 /* 'a' */, (char16_t)0x0042 /* 'B' */, (char16_t)0x0064 /* 'd' */, 0},
+ {0x00E4, (char16_t)0x0062 /* 'b' */, (char16_t)0x0063 /* 'c' */, 0},
+ {(char16_t)0x0070 /* 'p' */, 0x00EA, (char16_t)0x0063 /* 'c' */, (char16_t)0x0068 /* 'h' */, (char16_t)0x0065 /* 'e' */, 0} // 49
};
static const Collator::EComparisonResult results[] = {
@@ -189,7 +189,7 @@ static const Collator::EComparisonResult results[] = {
Collator::LESS // 49
};
-static const UChar testBugs[][CollationEnglishTest::MAX_TOKEN_LEN] = {
+static const char16_t testBugs[][CollationEnglishTest::MAX_TOKEN_LEN] = {
{0x61, 0},
{0x41, 0},
{0x65, 0},
@@ -204,7 +204,7 @@ static const UChar testBugs[][CollationEnglishTest::MAX_TOKEN_LEN] = {
// 0x0300 is grave, 0x0301 is acute
// the order of elements in this array must be different than the order in CollationFrenchTest
-static const UChar testAcute[][CollationEnglishTest::MAX_TOKEN_LEN] = {
+static const char16_t testAcute[][CollationEnglishTest::MAX_TOKEN_LEN] = {
{0x65, 0x65, 0},
{0x65, 0x65, 0x0301, 0},
{0x65, 0x65, 0x0301, 0x0300, 0},
@@ -232,15 +232,15 @@ static const UChar testAcute[][CollationEnglishTest::MAX_TOKEN_LEN] = {
{0x65, 0x0300, 0x0301, 0x65, 0x0300, 0x0301, 0}
};
-static const UChar testMore[][CollationEnglishTest::MAX_TOKEN_LEN] = {
- {(UChar)0x0061 /* 'a' */, (UChar)0x0065 /* 'e' */, 0},
+static const char16_t testMore[][CollationEnglishTest::MAX_TOKEN_LEN] = {
+ {(char16_t)0x0061 /* 'a' */, (char16_t)0x0065 /* 'e' */, 0},
{ 0x00E6, 0},
{ 0x00C6, 0},
- {(UChar)0x0061 /* 'a' */, (UChar)0x0066 /* 'f' */, 0},
- {(UChar)0x006F /* 'o' */, (UChar)0x0065 /* 'e' */, 0},
+ {(char16_t)0x0061 /* 'a' */, (char16_t)0x0066 /* 'f' */, 0},
+ {(char16_t)0x006F /* 'o' */, (char16_t)0x0065 /* 'e' */, 0},
{ 0x0153, 0},
{ 0x0152, 0},
- {(UChar)0x006F /* 'o' */, (UChar)0x0066 /* 'f' */, 0},
+ {(char16_t)0x006F /* 'o' */, (char16_t)0x0066 /* 'f' */, 0},
};
void CollationEnglishTest::TestTertiary(/* char* par */)
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/encoll.h b/Build/source/libs/icu/icu-src/source/test/intltest/encoll.h
index 0b4d3f495ae..9ad96c1035d 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/encoll.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/encoll.h
@@ -30,7 +30,7 @@ public:
CollationEnglishTest();
virtual ~CollationEnglishTest();
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
// performs test with strength PRIMARY
void TestPrimary(/* char* par */);
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/erarulestest.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/erarulestest.cpp
index 1cd4d719659..6bed4033429 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/erarulestest.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/erarulestest.cpp
@@ -44,10 +44,10 @@ void EraRulesTest::testAPIs() {
"persian",
"roc",
//"unknown",
- NULL
+ nullptr
};
- for (int32_t i = 0; calTypes[i] != NULL; i++) {
+ for (int32_t i = 0; calTypes[i] != nullptr; i++) {
UErrorCode status = U_ZERO_ERROR;
const char *calId = calTypes[i];
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/erarulestest.h b/Build/source/libs/icu/icu-src/source/test/intltest/erarulestest.h
index f8eb7c24277..05436883b47 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/erarulestest.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/erarulestest.h
@@ -12,7 +12,7 @@
class EraRulesTest : public IntlTest {
public:
- void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par = NULL) override;
+ void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par = nullptr) override;
private:
void testAPIs();
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/escoll.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/escoll.cpp
index cea658a3386..45afc6a08f2 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/escoll.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/escoll.cpp
@@ -45,7 +45,7 @@ CollationSpanishTest::~CollationSpanishTest()
delete myCollation;
}
-const UChar CollationSpanishTest::testSourceCases[][CollationSpanishTest::MAX_TOKEN_LEN] = {
+const char16_t CollationSpanishTest::testSourceCases[][CollationSpanishTest::MAX_TOKEN_LEN] = {
{0x61, 0x6c, 0x69, 0x61, 0x73, 0},
{0x45, 0x6c, 0x6c, 0x69, 0x6f, 0x74, 0},
{0x48, 0x65, 0x6c, 0x6c, 0x6f, 0},
@@ -57,7 +57,7 @@ const UChar CollationSpanishTest::testSourceCases[][CollationSpanishTest::MAX_TO
{0x48, 0x65, 0x6c, 0x6c, 0x6f, 0},
};
-const UChar CollationSpanishTest::testTargetCases[][CollationSpanishTest::MAX_TOKEN_LEN] = {
+const char16_t CollationSpanishTest::testTargetCases[][CollationSpanishTest::MAX_TOKEN_LEN] = {
{0x61, 0x6c, 0x6c, 0x69, 0x61, 0x73, 0},
{0x45, 0x6d, 0x69, 0x6f, 0x74, 0},
{0x68, 0x65, 0x6c, 0x6c, 0x4f, 0},
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/escoll.h b/Build/source/libs/icu/icu-src/source/test/intltest/escoll.h
index b2885636aa9..60d8b95a471 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/escoll.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/escoll.h
@@ -30,7 +30,7 @@ public:
CollationSpanishTest();
virtual ~CollationSpanishTest();
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
// performs tests with strength PRIMARY
void TestPrimary(/* char* par */);
@@ -39,8 +39,8 @@ public:
void TestTertiary(/* char* par */);
private:
- static const UChar testSourceCases[][MAX_TOKEN_LEN];
- static const UChar testTargetCases[][MAX_TOKEN_LEN];
+ static const char16_t testSourceCases[][MAX_TOKEN_LEN];
+ static const char16_t testTargetCases[][MAX_TOKEN_LEN];
static const Collator::EComparisonResult results[];
Collator *myCollation;
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/ficoll.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/ficoll.cpp
index bdea267b6de..1cd3bcf2fa0 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/ficoll.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/ficoll.cpp
@@ -43,7 +43,7 @@ CollationFinnishTest::~CollationFinnishTest()
delete myCollation;
}
-const UChar CollationFinnishTest::testSourceCases[][CollationFinnishTest::MAX_TOKEN_LEN] = {
+const char16_t CollationFinnishTest::testSourceCases[][CollationFinnishTest::MAX_TOKEN_LEN] = {
{0x77, 0x61, 0x74, 0}, // "wat"
{0x76, 0x61, 0x74, 0}, // "vat"
{0x61, 0x00FC, 0x62, 0x65, 0x63, 0x6b, 0},
@@ -51,7 +51,7 @@ const UChar CollationFinnishTest::testSourceCases[][CollationFinnishTest::MAX_TO
{0x77, 0x61, 0x74, 0} // "wat"
};
-const UChar CollationFinnishTest::testTargetCases[][CollationFinnishTest::MAX_TOKEN_LEN] = {
+const char16_t CollationFinnishTest::testTargetCases[][CollationFinnishTest::MAX_TOKEN_LEN] = {
{0x76, 0x61, 0x74, 0}, // "vat"
{0x77, 0x61, 0x79, 0},
{0x61, 0x78, 0x62, 0x65, 0x63, 0x6b, 0},
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/ficoll.h b/Build/source/libs/icu/icu-src/source/test/intltest/ficoll.h
index 1346e45b21b..ab00cd7e5b5 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/ficoll.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/ficoll.h
@@ -29,7 +29,7 @@ public:
CollationFinnishTest();
virtual ~CollationFinnishTest();
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
// perform tests with strength PRIMARY
void TestPrimary(/* char* par */);
@@ -38,8 +38,8 @@ public:
void TestTertiary(/* char* par */);
private:
- static const UChar testSourceCases[][MAX_TOKEN_LEN];
- static const UChar testTargetCases[][MAX_TOKEN_LEN];
+ static const char16_t testSourceCases[][MAX_TOKEN_LEN];
+ static const char16_t testTargetCases[][MAX_TOKEN_LEN];
static const Collator::EComparisonResult results[];
Collator *myCollation;
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/fldset.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/fldset.cpp
index 4486e3a1f1a..8352da2fde5 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/fldset.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/fldset.cpp
@@ -67,7 +67,7 @@ UnicodeString FieldsSet::diffFrom(const FieldsSet& other, UErrorCode& status) co
return str;
}
-static UnicodeString *split(const UnicodeString &src, UChar ch, int32_t &splits)
+static UnicodeString *split(const UnicodeString &src, char16_t ch, int32_t &splits)
{
int32_t offset = -1;
@@ -116,7 +116,7 @@ int32_t FieldsSet::parseFrom(const UnicodeString& str, const
if(U_FAILURE(status)) {
char ch[256];
- const UChar *u = kv[0].getBuffer();
+ const char16_t *u = kv[0].getBuffer();
int32_t len = kv[0].length();
u_UCharsToChars(u, ch, len);
ch[len] = 0; /* include terminating \0 */
@@ -131,7 +131,7 @@ int32_t FieldsSet::parseFrom(const UnicodeString& str, const
if(U_FAILURE(status)) {
char ch[256];
- const UChar *u = kv[1].getBuffer();
+ const char16_t *u = kv[1].getBuffer();
int32_t len = kv[1].length();
u_UCharsToChars(u, ch, len);
ch[len] = 0; /* include terminating \0 */
@@ -210,7 +210,7 @@ void FieldsSet::parseValueDefault(const FieldsSet* inheritFrom, int32_t field, c
int32_t value = -1;
if(substr.length()==0) { // inherit requested
// inherit
- if((inheritFrom == NULL) || !inheritFrom->isSet((UCalendarDateFields)field)) {
+ if((inheritFrom == nullptr) || !inheritFrom->isSet((UCalendarDateFields)field)) {
// couldn't inherit from field
it_errln(UnicodeString("Parse Failed: Couldn't inherit field ") + field + UnicodeString(" [") + UnicodeString(udbg_enumName(fEnum, field)) + UnicodeString("]"));
status = U_ILLEGAL_ARGUMENT_ERROR;
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/fldset.h b/Build/source/libs/icu/icu-src/source/test/intltest/fldset.h
index 49d14791b3a..1cdddb76ba3 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/fldset.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/fldset.h
@@ -66,7 +66,7 @@ class FieldsSet {
* @return the number of valid parsed fields on success, or a negative number on failure.
*/
int32_t parseFrom(const U_NAMESPACE_QUALIFIER UnicodeString& str, UErrorCode& status) {
- return parseFrom(str,NULL,status);
+ return parseFrom(str,nullptr,status);
}
/**
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/frcoll.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/frcoll.cpp
index d427d191c55..76655c24dd9 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/frcoll.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/frcoll.cpp
@@ -35,7 +35,7 @@ CollationFrenchTest::CollationFrenchTest()
errcheckln(status, __FILE__ "failed to create! err " + UnicodeString(u_errorName(status)));
/* if it wasn't already: */
delete myCollation;
- myCollation = NULL;
+ myCollation = nullptr;
}
}
@@ -44,7 +44,7 @@ CollationFrenchTest::~CollationFrenchTest()
delete myCollation;
}
-const UChar CollationFrenchTest::testSourceCases[][CollationFrenchTest::MAX_TOKEN_LEN] =
+const char16_t CollationFrenchTest::testSourceCases[][CollationFrenchTest::MAX_TOKEN_LEN] =
{
{0x0061/*'a'*/, 0x0062/*'b'*/, 0x0063/*'c'*/, 0x0000},
{0x0043/*'C'*/, 0x004f/*'O'*/, 0x0054/*'T'*/, 0x0045/*'E'*/, 0x0000},
@@ -60,7 +60,7 @@ const UChar CollationFrenchTest::testSourceCases[][CollationFrenchTest::MAX_TOKE
{0x0101, 0x0000}
};
-const UChar CollationFrenchTest::testTargetCases[][CollationFrenchTest::MAX_TOKEN_LEN] =
+const char16_t CollationFrenchTest::testTargetCases[][CollationFrenchTest::MAX_TOKEN_LEN] =
{
{0x0041/*'A'*/, 0x0042/*'B'*/, 0x0043/*'C'*/, 0x0000},
{0x0063/*'c'*/, 0x00f4, 0x0074/*'t'*/, 0x0065/*'e'*/, 0x0000},
@@ -94,7 +94,7 @@ const Collator::EComparisonResult CollationFrenchTest::results[] =
// 0x0300 is grave, 0x0301 is acute
// the order of elements in this array must be different than the order in CollationEnglishTest
-const UChar CollationFrenchTest::testAcute[][CollationFrenchTest::MAX_TOKEN_LEN] =
+const char16_t CollationFrenchTest::testAcute[][CollationFrenchTest::MAX_TOKEN_LEN] =
{
/*00*/ {0x0065/*'e'*/, 0x0065/*'e'*/, 0x0000},
/*01*/ {0x0065/*'e'*/, 0x0301, 0x0065/*'e'*/, 0x0000},
@@ -123,7 +123,7 @@ const UChar CollationFrenchTest::testAcute[][CollationFrenchTest::MAX_TOKEN_LEN]
/*18*/ {0x0065/*'e'*/, 0x0301, 0x0300, 0x0065/*'e'*/, 0x0301, 0x0300, 0x0000}
};
-const UChar CollationFrenchTest::testBugs[][CollationFrenchTest::MAX_TOKEN_LEN] =
+const char16_t CollationFrenchTest::testBugs[][CollationFrenchTest::MAX_TOKEN_LEN] =
{
{0x0061/*'a'*/, 0x000},
{0x0041/*'A'*/, 0x000},
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/frcoll.h b/Build/source/libs/icu/icu-src/source/test/intltest/frcoll.h
index 3299b991353..a55deb6d537 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/frcoll.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/frcoll.h
@@ -28,7 +28,7 @@ public:
CollationFrenchTest();
virtual ~CollationFrenchTest();
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
// perform tests with strength SECONDARY
void TestSecondary(/* char* par */);
@@ -40,11 +40,11 @@ public:
void TestExtra(/* char* par */);
private:
- static const UChar testSourceCases[][MAX_TOKEN_LEN];
- static const UChar testTargetCases[][MAX_TOKEN_LEN];
- static const UChar testBugs[][MAX_TOKEN_LEN];
+ static const char16_t testSourceCases[][MAX_TOKEN_LEN];
+ static const char16_t testTargetCases[][MAX_TOKEN_LEN];
+ static const char16_t testBugs[][MAX_TOKEN_LEN];
static const Collator::EComparisonResult results[];
- static const UChar testAcute[][MAX_TOKEN_LEN];
+ static const char16_t testAcute[][MAX_TOKEN_LEN];
Collator *myCollation;
};
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/g7coll.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/g7coll.cpp
index 93af4afa0a8..8ef4fd7188c 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/g7coll.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/g7coll.cpp
@@ -18,7 +18,7 @@
#include "sfwdchit.h"
#include "cmemory.h"
-static const UChar testCases[][G7CollationTest::MAX_TOKEN_LEN] = {
+static const char16_t testCases[][G7CollationTest::MAX_TOKEN_LEN] = {
{ 0x0062 /*'b'*/, 0x006c /*'l'*/, 0x0061 /*'a'*/, 0x0062 /*'c'*/, 0x006b /*'k'*/,
0x0062 /*'b'*/, 0x0069 /*'i'*/, 0x0072 /*'r'*/, 0x0064 /*'d'*/, 0x0073 /*'s'*/, 0x0000}, /* 9 */
{ 0x0050 /*'P'*/, 0x0061 /*'a'*/, 0x0074/*'t'*/, 0x0000}, /* 1 */
@@ -111,7 +111,7 @@ void G7CollationTest::TestG7Locales(/* char* par */)
continue;
}
- const UnicodeString &rules = ((RuleBasedCollator*)myCollation.getAlias())->getRules();
+ const UnicodeString &rules = (dynamic_cast<RuleBasedCollator*>(myCollation.getAlias()))->getRules();
if (rules.isEmpty() &&
(locale == Locale::getCanadaFrench() || locale == Locale::getJapanese())) {
dataerrln("%s Collator missing rule string", locale.getName());
@@ -156,7 +156,7 @@ void G7CollationTest::TestDemo1(/* char* par */)
errcheckln(status, "Couldn't instantiate collator. Error: %s", u_errorName(status));
return;
}
- const UnicodeString baseRules = ((RuleBasedCollator*)col)->getRules();
+ const UnicodeString baseRules = (dynamic_cast<RuleBasedCollator*>(col))->getRules();
UnicodeString newRules(" & Z < p, P");
newRules.insert(0, baseRules);
RuleBasedCollator *myCollation = new RuleBasedCollator(newRules, status);
@@ -190,7 +190,7 @@ void G7CollationTest::TestDemo2(/* char* par */)
errcheckln(status, "Couldn't instantiate collator. Error: %s", u_errorName(status));
return;
}
- const UnicodeString baseRules = ((RuleBasedCollator*)col)->getRules();
+ const UnicodeString baseRules = (dynamic_cast<RuleBasedCollator*>(col))->getRules();
UnicodeString newRules("& C < ch , cH, Ch, CH");
newRules.insert(0, baseRules);
RuleBasedCollator *myCollation = new RuleBasedCollator(newRules, status);
@@ -224,7 +224,7 @@ void G7CollationTest::TestDemo3(/* char* par */)
delete col;
return;
}
- const UnicodeString baseRules = ((RuleBasedCollator*)col)->getRules();
+ const UnicodeString baseRules = (dynamic_cast<RuleBasedCollator*>(col))->getRules();
UnicodeString newRules = "& Question'-'mark ; '?' & Hash'-'mark ; '#' & Ampersand ; '&'";
newRules.insert(0, baseRules);
RuleBasedCollator *myCollation = new RuleBasedCollator(newRules, status);
@@ -259,7 +259,7 @@ void G7CollationTest::TestDemo4(/* char* par */)
return;
}
- const UnicodeString baseRules = ((RuleBasedCollator*)col)->getRules();
+ const UnicodeString baseRules = (dynamic_cast<RuleBasedCollator*>(col))->getRules();
UnicodeString newRules = " & aa ; a'-' & ee ; e'-' & ii ; i'-' & oo ; o'-' & uu ; u'-' ";
newRules.insert(0, baseRules);
RuleBasedCollator *myCollation = new RuleBasedCollator(newRules, status);
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/g7coll.h b/Build/source/libs/icu/icu-src/source/test/intltest/g7coll.h
index ade87247aee..b45a455e7aa 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/g7coll.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/g7coll.h
@@ -52,7 +52,7 @@ public:
G7CollationTest() {}
virtual ~G7CollationTest();
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
// perform test for G7 locales
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/genderinfotest.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/genderinfotest.cpp
index d62debbead2..8178fdefa03 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/genderinfotest.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/genderinfotest.cpp
@@ -55,7 +55,7 @@ void GenderInfoTest::runIndexedTest(int32_t index, UBool exec, const char *&name
}
void GenderInfoTest::TestGetListGender() {
- check(UGENDER_OTHER, UGENDER_OTHER, UGENDER_OTHER, NULL, 0);
+ check(UGENDER_OTHER, UGENDER_OTHER, UGENDER_OTHER, nullptr, 0);
check(UGENDER_FEMALE, UGENDER_FEMALE, UGENDER_FEMALE, kSingleFemale, UPRV_LENGTHOF(kSingleFemale));
check(UGENDER_MALE, UGENDER_MALE, UGENDER_MALE, kSingleMale, UPRV_LENGTHOF(kSingleMale));
check(UGENDER_OTHER, UGENDER_OTHER, UGENDER_OTHER, kSingleOther, UPRV_LENGTHOF(kSingleOther));
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/icusvtst.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/icusvtst.cpp
index 60b2f2eeddb..e8363966b37 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/icusvtst.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/icusvtst.cpp
@@ -89,7 +89,7 @@ class Integer : public UObject {
virtual bool operator==(const UObject& other) const
{
return typeid(*this) == typeid(other) &&
- _val == ((Integer&)other)._val;
+ _val == (dynamic_cast<Integer&>(const_cast<UObject&>(other)))._val;
}
public:
@@ -114,20 +114,20 @@ const char Integer::fgClassID = '\0';
class TestIntegerService : public ICUService {
public:
ICUServiceKey* createKey(const UnicodeString* id, UErrorCode& status) const override {
- return LocaleKey::createWithCanonicalFallback(id, NULL, status); // no fallback locale
+ return LocaleKey::createWithCanonicalFallback(id, nullptr, status); // no fallback locale
}
virtual ICUServiceFactory* createSimpleFactory(UObject* obj, const UnicodeString& id, UBool visible, UErrorCode& status) override
{
Integer* i;
- if (U_SUCCESS(status) && obj && (i = dynamic_cast<Integer*>(obj)) != NULL) {
+ if (U_SUCCESS(status) && obj && (i = dynamic_cast<Integer*>(obj)) != nullptr) {
return new SimpleFactory(i, id, visible);
}
- return NULL;
+ return nullptr;
}
virtual UObject* cloneInstance(UObject* instance) const override {
- return instance ? new Integer(*(Integer*)instance) : NULL;
+ return instance ? new Integer(*dynamic_cast<Integer*>(instance)) : nullptr;
}
};
@@ -157,21 +157,21 @@ char* /*par*/)
UnicodeString append(UnicodeString& result, const UObject* obj)
{
char buffer[128];
- if (obj == NULL) {
- result.append("NULL");
+ if (obj == nullptr) {
+ result.append("nullptr");
} else {
const UnicodeString* s;
const Locale* loc;
const Integer* i;
- if ((s = dynamic_cast<const UnicodeString*>(obj)) != NULL) {
+ if ((s = dynamic_cast<const UnicodeString*>(obj)) != nullptr) {
result.append(*s);
- } else if ((loc = dynamic_cast<const Locale*>(obj)) != NULL) {
+ } else if ((loc = dynamic_cast<const Locale*>(obj)) != nullptr) {
result.append(loc->getName());
- } else if ((i = dynamic_cast<const Integer*>(obj)) != NULL) {
- sprintf(buffer, "%d", (int)i->_val);
+ } else if ((i = dynamic_cast<const Integer*>(obj)) != nullptr) {
+ snprintf(buffer, sizeof(buffer), "%d", (int)i->_val);
result.append(buffer);
} else {
- sprintf(buffer, "%p", (const void*)obj);
+ snprintf(buffer, sizeof(buffer), "%p", (const void*)obj);
result.append(buffer);
}
}
@@ -203,9 +203,9 @@ ICUServiceTest::confirmBoolean(const UnicodeString& message, UBool val)
void
ICUServiceTest::confirmEqual(const UnicodeString& message, const UObject* lhs, const UObject* rhs)
{
- UBool equ = (lhs == NULL)
- ? (rhs == NULL)
- : (rhs != NULL && lhs->operator==(*rhs));
+ UBool equ = (lhs == nullptr)
+ ? (rhs == nullptr)
+ : (rhs != nullptr && lhs->operator==(*rhs));
UnicodeString temp;
lrmsg(temp, message, lhs, rhs);
@@ -220,9 +220,9 @@ ICUServiceTest::confirmEqual(const UnicodeString& message, const UObject* lhs, c
void
ICUServiceTest::confirmEqual(const UnicodeString& message, const Integer* lhs, const Integer* rhs)
{
- UBool equ = (lhs == NULL)
- ? (rhs == NULL)
- : (rhs != NULL && lhs->operator==(*rhs));
+ UBool equ = (lhs == nullptr)
+ ? (rhs == nullptr)
+ : (rhs != nullptr && lhs->operator==(*rhs));
UnicodeString temp;
lrmsg(temp, message, lhs, rhs);
@@ -237,9 +237,9 @@ ICUServiceTest::confirmEqual(const UnicodeString& message, const Integer* lhs, c
void
ICUServiceTest::confirmEqual(const UnicodeString& message, const UnicodeString* lhs, const UnicodeString* rhs)
{
- UBool equ = (lhs == NULL)
- ? (rhs == NULL)
- : (rhs != NULL && lhs->operator==(*rhs));
+ UBool equ = (lhs == nullptr)
+ ? (rhs == nullptr)
+ : (rhs != nullptr && lhs->operator==(*rhs));
UnicodeString temp;
lrmsg(temp, message, lhs, rhs);
@@ -254,9 +254,9 @@ ICUServiceTest::confirmEqual(const UnicodeString& message, const UnicodeString*
void
ICUServiceTest::confirmEqual(const UnicodeString& message, const Locale* lhs, const Locale* rhs)
{
- UBool equ = (lhs == NULL)
- ? (rhs == NULL)
- : (rhs != NULL && lhs->operator==(*rhs));
+ UBool equ = (lhs == nullptr)
+ ? (rhs == nullptr)
+ : (rhs != nullptr && lhs->operator==(*rhs));
UnicodeString temp;
lrmsg(temp, message, lhs, rhs);
@@ -315,11 +315,11 @@ void
ICUServiceTest::msgstr(const UnicodeString& message, UObject* obj, UBool err)
{
if (obj) {
- UnicodeString* str = (UnicodeString*)obj;
+ UnicodeString* str = dynamic_cast<UnicodeString*>(obj);
logln(message + *str);
delete str;
} else if (err) {
- errln("Error " + message + "string is NULL");
+ errln("Error " + message + "string is nullptr");
}
}
@@ -337,7 +337,7 @@ ICUServiceTest::testAPI_One()
service.registerInstance(singleton0, "en_US", status);
{
UErrorCode status = U_ZERO_ERROR;
- Integer* result = (Integer*)service.get("en_US_FOO", status);
+ Integer* result = dynamic_cast<Integer*>(service.get("en_US_FOO", status));
confirmEqual("1) en_US_FOO -> en_US", result, singleton0);
delete result;
}
@@ -349,7 +349,7 @@ ICUServiceTest::testAPI_One()
service.registerInstance(singleton1, "en_US_FOO", status);
{
UErrorCode status = U_ZERO_ERROR;
- Integer* result = (Integer*)service.get("en_US_FOO", status);
+ Integer* result = dynamic_cast<Integer*>(service.get("en_US_FOO", status));
confirmEqual("2) en_US_FOO -> en_US_FOO", result, singleton1);
delete result;
}
@@ -357,7 +357,7 @@ ICUServiceTest::testAPI_One()
// search for an object that falls back to the first registered locale
{
UErrorCode status = U_ZERO_ERROR;
- Integer* result = (Integer*)service.get("en_US_BAR", status);
+ Integer* result = dynamic_cast<Integer*>(service.get("en_US_BAR", status));
confirmEqual("3) en_US_BAR -> en_US", result, singleton0);
delete result;
}
@@ -379,7 +379,7 @@ ICUServiceTest::testAPI_One()
// search for en_US should still find en_US object
{
UErrorCode status = U_ZERO_ERROR;
- Integer* result = (Integer*)service.get("en_US_BAR", status);
+ Integer* result = dynamic_cast<Integer*>(service.get("en_US_BAR", status));
confirmEqual("6) en_US_BAR -> en_US", result, singleton0);
delete result;
}
@@ -394,7 +394,7 @@ ICUServiceTest::testAPI_One()
// should get data from that new factory
{
UErrorCode status = U_ZERO_ERROR;
- Integer* result = (Integer*)service.get("en_US_BAR", status);
+ Integer* result = dynamic_cast<Integer*>(service.get("en_US_BAR", status));
confirmEqual("10) en_US_BAR -> (3)", result, singleton3);
delete result;
}
@@ -411,7 +411,7 @@ ICUServiceTest::testAPI_One()
// should get original data again after remove factory
{
UErrorCode status = U_ZERO_ERROR;
- Integer* result = (Integer*)service.get("en_US_BAR", status);
+ Integer* result = dynamic_cast<Integer*>(service.get("en_US_BAR", status));
confirmEqual("12) en_US_BAR -> (3)", result, singleton0);
delete result;
}
@@ -419,8 +419,8 @@ ICUServiceTest::testAPI_One()
// shouldn't find unregistered ids
{
UErrorCode status = U_ZERO_ERROR;
- Integer* result = (Integer*)service.get("foo", status);
- confirmIdentical("13) foo -> null", result, NULL);
+ Integer* result = dynamic_cast<Integer*>(service.get("foo", status));
+ confirmIdentical("13) foo -> null", result, nullptr);
delete result;
}
@@ -428,7 +428,7 @@ ICUServiceTest::testAPI_One()
{
UnicodeString resultID;
UErrorCode status = U_ZERO_ERROR;
- Integer* result = (Integer*)service.get("EN_us_fOo", &resultID, status);
+ Integer* result = dynamic_cast<Integer*>(service.get("EN_us_fOo", &resultID, status));
confirmEqual("14a) find-non-canonical", result, singleton1);
confirmStringsEqual("14b) find non-canonical", resultID, "en_US_FOO");
delete result;
@@ -440,7 +440,7 @@ ICUServiceTest::testAPI_One()
{
UnicodeString resultID;
UErrorCode status = U_ZERO_ERROR;
- Integer* result = (Integer*)service.get("En_Ca_DuDe", &resultID, status);
+ Integer* result = dynamic_cast<Integer*>(service.get("En_Ca_DuDe", &resultID, status));
confirmEqual("15a) find-non-canonical", result, singleton4);
confirmStringsEqual("15b) register non-canonical", resultID, "en_CA_DUDE");
delete result;
@@ -453,7 +453,7 @@ ICUServiceTest::testAPI_One()
service.registerInstance(singleton5, "en_US_BAR", false, status);
{
UErrorCode status = U_ZERO_ERROR;
- Integer* result = (Integer*)service.get("en_US_BAR", status);
+ Integer* result = dynamic_cast<Integer*>(service.get("en_US_BAR", status));
confirmEqual("17) get invisible", result, singleton5);
delete result;
}
@@ -484,34 +484,34 @@ public:
// have to implement cloneInstance. Otherwise we could just tell the service
// what the object type is when we create it, and the default implementation
// could handle everything for us. Phooey.
- if (obj && dynamic_cast<UnicodeString*>(obj) != NULL) {
+ if (obj && dynamic_cast<UnicodeString*>(obj) != nullptr) {
return ICUService::createSimpleFactory(obj, id, visible, status);
}
- return NULL;
+ return nullptr;
}
virtual UObject* cloneInstance(UObject* instance) const override {
- return instance ? new UnicodeString(*(UnicodeString*)instance) : NULL;
+ return instance ? new UnicodeString(*dynamic_cast<UnicodeString*>(instance)) : nullptr;
}
};
class TestStringService : public ICUService {
public:
ICUServiceKey* createKey(const UnicodeString* id, UErrorCode& status) const override {
- return LocaleKey::createWithCanonicalFallback(id, NULL, status); // no fallback locale
+ return LocaleKey::createWithCanonicalFallback(id, nullptr, status); // no fallback locale
}
virtual ICUServiceFactory* createSimpleFactory(UObject* obj, const UnicodeString& id, UBool visible, UErrorCode& /* status */) override
{
UnicodeString* s;
- if (obj && (s = dynamic_cast<UnicodeString*>(obj)) != NULL) {
+ if (obj && (s = dynamic_cast<UnicodeString*>(obj)) != nullptr) {
return new SimpleFactory(s, id, visible);
}
- return NULL;
+ return nullptr;
}
virtual UObject* cloneInstance(UObject* instance) const override {
- return instance ? new UnicodeString(*(UnicodeString*)instance) : NULL;
+ return instance ? new UnicodeString(*dynamic_cast<UnicodeString*>(instance)) : nullptr;
}
};
@@ -567,7 +567,7 @@ class TestMultipleKeyStringFactory : public ICUServiceFactory {
UObject* create(const ICUServiceKey& key, const ICUService* /* service */, UErrorCode& status) const override {
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
UnicodeString temp;
key.currentID(temp);
@@ -578,13 +578,13 @@ class TestMultipleKeyStringFactory : public ICUServiceFactory {
} else {
status = _status;
}
- return NULL;
+ return nullptr;
}
void updateVisibleIDs(Hashtable& result, UErrorCode& status) const override {
if (U_SUCCESS(_status)) {
for (int32_t i = 0; i < _ids.size(); ++i) {
- result.put(*(UnicodeString*)_ids[i], (void*)this, status);
+ result.put(*static_cast<UnicodeString*>(_ids[i]), (void*)this, status);
}
}
}
@@ -593,7 +593,7 @@ class TestMultipleKeyStringFactory : public ICUServiceFactory {
if (U_SUCCESS(_status) && _ids.contains((void*)&id)) {
char buffer[128];
UErrorCode status = U_ZERO_ERROR;
- int32_t len = id.extract(buffer, sizeof(buffer), NULL, status);
+ int32_t len = id.extract(buffer, sizeof(buffer), nullptr, status);
if (U_SUCCESS(status)) {
if (len == sizeof(buffer)) {
--len;
@@ -633,7 +633,7 @@ ICUServiceTest::testAPI_Two()
{
UErrorCode status = U_ZERO_ERROR;
const UnicodeString en_US = "en_US";
- UnicodeString* result = (UnicodeString*)service.get(en_US, status);
+ UnicodeString* result = dynamic_cast<UnicodeString*>(service.get(en_US, status));
confirmEqual("21) locale", result, &en_US);
delete result;
}
@@ -643,7 +643,7 @@ ICUServiceTest::testAPI_Two()
UErrorCode status = U_ZERO_ERROR;
const UnicodeString en_US_BAR = "en_US_BAR";
UnicodeString resultID;
- UnicodeString* result = (UnicodeString*)service.get("EN_us_bar", &resultID, status);
+ UnicodeString* result = dynamic_cast<UnicodeString*>(service.get("EN_us_bar", &resultID, status));
confirmEqual("22) locale", &resultID, &en_US_BAR);
delete result;
}
@@ -653,7 +653,7 @@ ICUServiceTest::testAPI_Two()
service.registerInstance(singleton0, "en_US_BAR", status);
{
UErrorCode status = U_ZERO_ERROR;
- UnicodeString* result = (UnicodeString*)service.get("en_US_BAR", status);
+ UnicodeString* result = dynamic_cast<UnicodeString*>(service.get("en_US_BAR", status));
confirmEqual("23) override super", result, singleton0);
delete result;
}
@@ -662,8 +662,8 @@ ICUServiceTest::testAPI_Two()
service.reset();
{
UErrorCode status = U_ZERO_ERROR;
- UnicodeString* result = (UnicodeString*)service.get("en_US", status);
- confirmIdentical("24) empty", result, NULL);
+ UnicodeString* result = dynamic_cast<UnicodeString*>(service.get("en_US", status));
+ confirmIdentical("24) empty", result, nullptr);
}
// create a custom multiple key factory
@@ -686,8 +686,8 @@ ICUServiceTest::testAPI_Two()
UVector ids(uprv_deleteUObject, uhash_compareUnicodeString, 0, status);
service.getVisibleIDs(ids, status);
for (int i = 0; i < ids.size(); ++i) {
- const UnicodeString* id = (const UnicodeString*)ids[i];
- UnicodeString* result = (UnicodeString*)service.get(*id, status);
+ const UnicodeString* id = static_cast<const UnicodeString*>(const_cast<const void*>(ids[i]));
+ UnicodeString* result = dynamic_cast<UnicodeString*>(service.get(*id, status));
if (result) {
logln(" " + *id + " --> " + *result);
delete result;
@@ -705,7 +705,7 @@ ICUServiceTest::testAPI_Two()
UVector names(status);
service.getDisplayNames(names, status);
for (int i = 0; i < names.size(); ++i) {
- const StringPair* pair = (const StringPair*)names[i];
+ const StringPair* pair = static_cast<const StringPair*>(names[i]);
logln(" " + pair->displayName + " --> " + pair->id);
}
confirmIdentical("26) display names", names.size(), 4);
@@ -745,7 +745,7 @@ ICUServiceTest::testAPI_Two()
UVector names(status);
service.getDisplayNames(names, Locale("es"), status);
for (int i = 0; i < names.size(); ++i) {
- const StringPair* pair = (const StringPair*)names[i];
+ const StringPair* pair = static_cast<const StringPair*>(names[i]);
logln(" " + pair->displayName + " --> " + pair->id);
}
confirmIdentical("29) display names", names.size(), 7);
@@ -757,8 +757,8 @@ ICUServiceTest::testAPI_Two()
UErrorCode status = U_ZERO_ERROR;
UnicodeString actualID;
UnicodeString id = "en_us_surfer_gal";
- UnicodeString* gal = (UnicodeString*)service.get(id, &actualID, status);
- if (gal != NULL) {
+ UnicodeString* gal = dynamic_cast<UnicodeString*>(service.get(id, &actualID, status));
+ if (gal != nullptr) {
UnicodeString displayName;
logln("actual id: " + actualID);
service.getDisplayName(actualID, displayName, Locale::getEnglish());
@@ -780,8 +780,8 @@ ICUServiceTest::testAPI_Two()
UErrorCode status = U_ZERO_ERROR;
UnicodeString actualID;
UnicodeString id = "en_US_SURFER_BOZO";
- UnicodeString* bozo = (UnicodeString*)service.get(id, &actualID, status);
- if (bozo != NULL) {
+ UnicodeString* bozo = dynamic_cast<UnicodeString*>(service.get(id, &actualID, status));
+ if (bozo != nullptr) {
UnicodeString displayName;
service.getDisplayName(actualID, displayName, Locale::getEnglish());
logln("found actual: " + *bozo + " with display name: " + displayName);
@@ -807,7 +807,7 @@ ICUServiceTest::testAPI_Two()
UVector ids(uprv_deleteUObject, uhash_compareUnicodeString, 0, status);
service.getVisibleIDs(ids, status);
for (int i = 0; i < ids.size(); ++i) {
- const UnicodeString* id = (const UnicodeString*)ids[i];
+ const UnicodeString* id = static_cast<const UnicodeString*>(const_cast<const void*>(ids[i]));
msgstr(*id + "? ", service.get(*id, status));
}
@@ -826,16 +826,16 @@ class CalifornioLanguageFactory : public ICUResourceBundleFactory
static const char* valley; // = californio ## "_VALLEY";
static const char* surfer; // = californio ## "_SURFER";
static const char* geek; // = californio ## "_GEEK";
- static Hashtable* supportedIDs; // = NULL;
+ static Hashtable* supportedIDs; // = nullptr;
- static void cleanup(void) {
+ static void cleanup() {
delete supportedIDs;
- supportedIDs = NULL;
+ supportedIDs = nullptr;
}
const Hashtable* getSupportedIDs(UErrorCode& status) const override
{
- if (supportedIDs == NULL) {
+ if (supportedIDs == nullptr) {
Hashtable* table = new Hashtable();
table->put(UnicodeString(californio), (void*)table, status);
table->put(UnicodeString(valley), (void*)table, status);
@@ -887,7 +887,7 @@ const char* CalifornioLanguageFactory::californio = "en_US_CA";
const char* CalifornioLanguageFactory::valley = "en_US_CA_VALLEY";
const char* CalifornioLanguageFactory::surfer = "en_US_CA_SURFER";
const char* CalifornioLanguageFactory::geek = "en_US_CA_GEEK";
-Hashtable* CalifornioLanguageFactory::supportedIDs = NULL;
+Hashtable* CalifornioLanguageFactory::supportedIDs = nullptr;
void
ICUServiceTest::testRBF()
@@ -904,7 +904,7 @@ ICUServiceTest::testRBF()
service.getVisibleIDs(ids, status);
logln("all visible ids:");
for (int i = 0; i < ids.size(); ++i) {
- const UnicodeString* id = (const UnicodeString*)ids[i];
+ const UnicodeString* id = static_cast<const UnicodeString*>(const_cast<const void*>(ids[i]));
logln(*id);
}
}
@@ -917,7 +917,7 @@ ICUServiceTest::testRBF()
service.getDisplayNames(names, Locale::getGermany(), status);
logln("service display names for de_DE");
for (int i = 0; i < names.size(); ++i) {
- const StringPair* pair = (const StringPair*)names[i];
+ const StringPair* pair = static_cast<const StringPair*>(names[i]);
logln(" " + pair->displayName + " --> " + pair->id);
}
}
@@ -942,7 +942,7 @@ ICUServiceTest::testRBF()
UVector names(status);
service.getDisplayNames(names, idNames[i], status);
for (int i = 0; i < names.size(); ++i) {
- const StringPair* pair = (const StringPair*)names[i];
+ const StringPair* pair = static_cast<const StringPair*>(names[i]);
logln(" " + pair->displayName + " --> " + pair->id);
}
}
@@ -986,7 +986,7 @@ ICUServiceTest::testNotification()
logln("registering bar... ");
ls.registerInstance(new UnicodeString("Bar"), "en_BAR", status);
logln("getting foo...");
- UnicodeString* result = (UnicodeString*)ls.get("en_FOO", status);
+ UnicodeString* result = dynamic_cast<UnicodeString*>(ls.get("en_FOO", status));
logln(*result);
delete result;
@@ -1031,7 +1031,7 @@ public void serviceChanged(ICUService s) {
class TestStringLocaleService : public ICULocaleService {
public:
virtual UObject* cloneInstance(UObject* instance) const override {
- return instance ? new UnicodeString(*(UnicodeString*)instance) : NULL;
+ return instance ? new UnicodeString(*dynamic_cast<UnicodeString*>(instance)) : nullptr;
}
};
@@ -1053,21 +1053,21 @@ void ICUServiceTest::testLocale() {
{
UErrorCode status = U_ZERO_ERROR;
- UnicodeString* target = (UnicodeString*)service.get("de_US", status);
+ UnicodeString* target = dynamic_cast<UnicodeString*>(service.get("de_US", status));
confirmEqual("test de_US", german, target);
delete target;
}
{
UErrorCode status = U_ZERO_ERROR;
- UnicodeString* target = (UnicodeString*)service.get("de_US", LocaleKey::KIND_ANY, status);
+ UnicodeString* target = dynamic_cast<UnicodeString*>(service.get("de_US", LocaleKey::KIND_ANY, status));
confirmEqual("test de_US 2", german, target);
delete target;
}
{
UErrorCode status = U_ZERO_ERROR;
- UnicodeString* target = (UnicodeString*)service.get("de_US", 1234, status);
+ UnicodeString* target = dynamic_cast<UnicodeString*>(service.get("de_US", 1234, status));
confirmEqual("test de_US 3", german, target);
delete target;
}
@@ -1075,7 +1075,7 @@ void ICUServiceTest::testLocale() {
{
UErrorCode status = U_ZERO_ERROR;
Locale actualReturn;
- UnicodeString* target = (UnicodeString*)service.get("de_US", &actualReturn, status);
+ UnicodeString* target = dynamic_cast<UnicodeString*>(service.get("de_US", &actualReturn, status));
confirmEqual("test de_US 5", german, target);
confirmEqual("test de_US 6", &actualReturn, &Locale::getGerman());
delete target;
@@ -1084,7 +1084,7 @@ void ICUServiceTest::testLocale() {
{
UErrorCode status = U_ZERO_ERROR;
Locale actualReturn;
- UnicodeString* target = (UnicodeString*)service.get("de_US", LocaleKey::KIND_ANY, &actualReturn, status);
+ UnicodeString* target = dynamic_cast<UnicodeString*>(service.get("de_US", LocaleKey::KIND_ANY, &actualReturn, status));
confirmEqual("test de_US 7", &actualReturn, &Locale::getGerman());
delete target;
}
@@ -1092,7 +1092,7 @@ void ICUServiceTest::testLocale() {
{
UErrorCode status = U_ZERO_ERROR;
Locale actualReturn;
- UnicodeString* target = (UnicodeString*)service.get("de_US", 1234, &actualReturn, status);
+ UnicodeString* target = dynamic_cast<UnicodeString*>(service.get("de_US", 1234, &actualReturn, status));
confirmEqual("test de_US 8", german, target);
confirmEqual("test de_US 9", &actualReturn, &Locale::getGerman());
delete target;
@@ -1106,21 +1106,21 @@ void ICUServiceTest::testLocale() {
{
UErrorCode status = U_ZERO_ERROR;
- UnicodeString* target = (UnicodeString*)service.get("de_US", 1, status);
+ UnicodeString* target = dynamic_cast<UnicodeString*>(service.get("de_US", 1, status));
confirmEqual("test de_US kind 1", one, target);
delete target;
}
{
UErrorCode status = U_ZERO_ERROR;
- UnicodeString* target = (UnicodeString*)service.get("de_US", 2, status);
+ UnicodeString* target = dynamic_cast<UnicodeString*>(service.get("de_US", 2, status));
confirmEqual("test de_US kind 2", two, target);
delete target;
}
{
UErrorCode status = U_ZERO_ERROR;
- UnicodeString* target = (UnicodeString*)service.get("de_US", status);
+ UnicodeString* target = dynamic_cast<UnicodeString*>(service.get("de_US", status));
confirmEqual("test de_US kind 3", german, target);
delete target;
}
@@ -1130,7 +1130,7 @@ void ICUServiceTest::testLocale() {
UnicodeString english = "en";
Locale localeResult;
UnicodeString result;
- LocaleKey* lkey = LocaleKey::createWithCanonicalFallback(&english, NULL, 1234, status);
+ LocaleKey* lkey = LocaleKey::createWithCanonicalFallback(&english, nullptr, 1234, status);
logln("lkey prefix: " + lkey->prefix(result));
result.remove();
logln("lkey descriptor: " + lkey->currentDescriptor(result));
@@ -1150,7 +1150,7 @@ void ICUServiceTest::testLocale() {
{
UErrorCode status = U_ZERO_ERROR;
- UnicodeString* target = (UnicodeString*)service.get("za_PPP", status);
+ UnicodeString* target = dynamic_cast<UnicodeString*>(service.get("za_PPP", status));
confirmEqual("test zappp", root, target);
delete target;
}
@@ -1159,7 +1159,7 @@ void ICUServiceTest::testLocale() {
Locale::setDefault(Locale::getJapanese(), status);
{
UErrorCode status = U_ZERO_ERROR;
- UnicodeString* target = (UnicodeString*)service.get("za_PPP", status);
+ UnicodeString* target = dynamic_cast<UnicodeString*>(service.get("za_PPP", status));
confirmEqual("test with ja locale", japanese, target);
delete target;
}
@@ -1170,7 +1170,7 @@ void ICUServiceTest::testLocale() {
service.getVisibleIDs(ids, status);
logln("all visible ids:");
for (int i = 0; i < ids.size(); ++i) {
- const UnicodeString* id = (const UnicodeString*)ids[i];
+ const UnicodeString* id = static_cast<const UnicodeString*>(const_cast<const void*>(ids[i]));
logln(*id);
}
}
@@ -1182,14 +1182,14 @@ void ICUServiceTest::testLocale() {
service.getVisibleIDs(ids, status);
logln("all visible ids:");
for (int i = 0; i < ids.size(); ++i) {
- const UnicodeString* id = (const UnicodeString*)ids[i];
+ const UnicodeString* id = static_cast<const UnicodeString*>(const_cast<const void*>(ids[i]));
logln(*id);
}
}
{
UErrorCode status = U_ZERO_ERROR;
- UnicodeString* target = (UnicodeString*)service.get("za_PPP", status);
+ UnicodeString* target = dynamic_cast<UnicodeString*>(service.get("za_PPP", status));
confirmEqual("test with en locale", root, target);
delete target;
}
@@ -1202,7 +1202,7 @@ void ICUServiceTest::testLocale() {
logln("locales: ");
{
const char* p;
- while ((p = locales->next(NULL, status))) {
+ while ((p = locales->next(nullptr, status))) {
logln(p);
}
}
@@ -1217,7 +1217,7 @@ void ICUServiceTest::testLocale() {
class WrapFactory : public ICUServiceFactory {
public:
static const UnicodeString& getGreetingID() {
- if (greetingID == NULL) {
+ if (greetingID == nullptr) {
greetingID = new UnicodeString("greeting");
}
return *greetingID;
@@ -1225,14 +1225,14 @@ class WrapFactory : public ICUServiceFactory {
static void cleanup() {
delete greetingID;
- greetingID = NULL;
+ greetingID = nullptr;
}
UObject* create(const ICUServiceKey& key, const ICUService* service, UErrorCode& status) const override {
if (U_SUCCESS(status)) {
UnicodeString temp;
if (key.currentID(temp).compare(getGreetingID()) == 0) {
- UnicodeString* previous = (UnicodeString*)service->getKey((ICUServiceKey&)key, NULL, this, status);
+ UnicodeString* previous = dynamic_cast<UnicodeString*>(service->getKey(const_cast<ICUServiceKey&>(key), nullptr, this, status));
if (previous) {
previous->insert(0, "A different greeting: \"");
previous->append("\"");
@@ -1240,7 +1240,7 @@ class WrapFactory : public ICUServiceFactory {
}
}
}
- return NULL;
+ return nullptr;
}
void updateVisibleIDs(Hashtable& result, UErrorCode& status) const override {
@@ -1272,7 +1272,7 @@ class WrapFactory : public ICUServiceFactory {
static UnicodeString* greetingID;
};
-UnicodeString* WrapFactory::greetingID = NULL;
+UnicodeString* WrapFactory::greetingID = nullptr;
const char WrapFactory::fgClassID = '\0';
void
@@ -1286,7 +1286,7 @@ ICUServiceTest::testWrapFactory()
{
UErrorCode status = U_ZERO_ERROR;
- UnicodeString* result = (UnicodeString*)service.get(greetingID, status);
+ UnicodeString* result = dynamic_cast<UnicodeString*>(service.get(greetingID, status));
if (result) {
logln("test one: " + *result);
delete result;
@@ -1296,7 +1296,7 @@ ICUServiceTest::testWrapFactory()
service.registerFactory(new WrapFactory(), status);
{
UErrorCode status = U_ZERO_ERROR;
- UnicodeString* result = (UnicodeString*)service.get(greetingID, status);
+ UnicodeString* result = dynamic_cast<UnicodeString*>(service.get(greetingID, status));
UnicodeString target = "A different greeting: \"Hello There\"";
confirmEqual("wrap test: ", result, &target);
delete result;
@@ -1342,7 +1342,7 @@ void ICUServiceTest::testCoverage()
service.registerFactory(sf, status);
{
- UnicodeString* result = (UnicodeString*)service.get("object", status);
+ UnicodeString* result = dynamic_cast<UnicodeString*>(service.get("object", status));
if (result) {
logln("object is: " + *result);
delete result;
@@ -1361,7 +1361,7 @@ void ICUServiceTest::testCoverage()
TestStringSimpleKeyService service;
service.registerInstance(howdy, "Greetings", status);
{
- UnicodeString* result = (UnicodeString*)service.get("Greetings", status);
+ UnicodeString* result = dynamic_cast<UnicodeString*>(service.get("Greetings", status));
if (result) {
logln("object is: " + *result);
delete result;
@@ -1416,7 +1416,7 @@ void ICUServiceTest::testCoverage()
LKFSubclass lkf(true); // empty
Hashtable table;
- UObject *obj = lkf.create(*key, NULL, status);
+ UObject *obj = lkf.create(*key, nullptr, status);
logln("obj: " + UnicodeString(obj ? "obj" : "null"));
logln(lkf.getDisplayName("en_US", Locale::getDefault(), result));
lkf.updateVisibleIDs(table, status);
@@ -1426,7 +1426,7 @@ void ICUServiceTest::testCoverage()
}
LKFSubclass invisibleLKF(false);
- obj = lkf.create(*key, NULL, status);
+ obj = lkf.create(*key, nullptr, status);
logln("obj: " + UnicodeString(obj ? "obj" : "null"));
logln(invisibleLKF.getDisplayName("en_US", Locale::getDefault(), result.remove()));
invisibleLKF.updateVisibleIDs(table, status);
@@ -1459,8 +1459,8 @@ void ICUServiceTest::testCoverage()
// ResourceBundleFactory
key = LocaleKey::createWithCanonicalFallback(&primary, &fallback, status);
ICUResourceBundleFactory rbf;
- UObject* icurb = rbf.create(*key, NULL, status);
- if (icurb != NULL) {
+ UObject* icurb = rbf.create(*key, nullptr, status);
+ if (icurb != nullptr) {
logln("got resource bundle for key");
delete icurb;
}
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/icusvtst.h b/Build/source/libs/icu/icu-src/source/test/intltest/icusvtst.h
index 09c46484cbb..f651b35fa0c 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/icusvtst.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/icusvtst.h
@@ -26,15 +26,15 @@ class ICUServiceTest : public IntlTest
ICUServiceTest();
virtual ~ICUServiceTest();
- void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par = NULL) override;
+ void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par = nullptr) override;
- void testAPI_One(void);
- void testAPI_Two(void);
- void testRBF(void);
- void testNotification(void);
- void testLocale(void);
- void testWrapFactory(void);
- void testCoverage(void);
+ void testAPI_One();
+ void testAPI_Two();
+ void testRBF();
+ void testNotification();
+ void testLocale();
+ void testWrapFactory();
+ void testCoverage();
private:
UnicodeString& lrmsg(UnicodeString& result, const UnicodeString& message, const UObject* lhs, const UObject* rhs) const;
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/idnaconf.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/idnaconf.cpp
index 69c6cb4cf89..40184482f81 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/idnaconf.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/idnaconf.cpp
@@ -26,24 +26,24 @@
#include "idnaconf.h"
#include "charstr.h"
-static const UChar C_TAG[] = {0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0}; // =====
-static const UChar C_NAMEZONE[] = {0x6E, 0x61, 0x6D, 0x65, 0x7A, 0x6F, 0x6E, 0x65, 0}; // namezone
-static const UChar C_NAMEBASE[] = {0x6E, 0x61, 0x6D, 0x65, 0x62, 0x61, 0x73, 0x65, 0}; // namebase
+static const char16_t C_TAG[] = {0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0}; // =====
+static const char16_t C_NAMEZONE[] = {0x6E, 0x61, 0x6D, 0x65, 0x7A, 0x6F, 0x6E, 0x65, 0}; // namezone
+static const char16_t C_NAMEBASE[] = {0x6E, 0x61, 0x6D, 0x65, 0x62, 0x61, 0x73, 0x65, 0}; // namebase
-static const UChar C_TYPE[] = {0x74, 0x79, 0x70, 0x65, 0}; // type
-static const UChar C_TOASCII[] = {0x74, 0x6F, 0x61, 0x73, 0x63, 0x69, 0x69, 0}; // toascii
-static const UChar C_TOUNICODE[] = {0x74, 0x6F, 0x75, 0x6E, 0x69, 0x63, 0x6F, 0x64, 0x65, 0}; // tounicode
+static const char16_t C_TYPE[] = {0x74, 0x79, 0x70, 0x65, 0}; // type
+static const char16_t C_TOASCII[] = {0x74, 0x6F, 0x61, 0x73, 0x63, 0x69, 0x69, 0}; // toascii
+static const char16_t C_TOUNICODE[] = {0x74, 0x6F, 0x75, 0x6E, 0x69, 0x63, 0x6F, 0x64, 0x65, 0}; // tounicode
-static const UChar C_PASSFAIL[] = {0x70, 0x61, 0x73, 0x73, 0x66, 0x61, 0x69, 0x6C, 0}; // passfail
-static const UChar C_PASS[] = {0x70, 0x61, 0x73, 0x73, 0}; // pass
-static const UChar C_FAIL[] = {0x66, 0x61, 0x69, 0x6C, 0}; // fail
+static const char16_t C_PASSFAIL[] = {0x70, 0x61, 0x73, 0x73, 0x66, 0x61, 0x69, 0x6C, 0}; // passfail
+static const char16_t C_PASS[] = {0x70, 0x61, 0x73, 0x73, 0}; // pass
+static const char16_t C_FAIL[] = {0x66, 0x61, 0x69, 0x6C, 0}; // fail
-static const UChar C_DESC[] = {0x64, 0x65, 0x73, 0x63, 0}; // desc
-static const UChar C_USESTD3ASCIIRULES[] = {0x55, 0x73, 0x65, 0x53, 0x54, 0x44,
+static const char16_t C_DESC[] = {0x64, 0x65, 0x73, 0x63, 0}; // desc
+static const char16_t C_USESTD3ASCIIRULES[] = {0x55, 0x73, 0x65, 0x53, 0x54, 0x44,
0x33, 0x41, 0x53, 0x43, 0x49, 0x49, 0x52, 0x75, 0x6C, 0x65, 0x73, 0}; // UseSTD3ASCIIRules
IdnaConfTest::IdnaConfTest(){
- base = NULL;
+ base = nullptr;
len = 0;
curOffset = 0;
@@ -58,9 +58,9 @@ IdnaConfTest::~IdnaConfTest(){
#if !UCONFIG_NO_IDNA
int IdnaConfTest::isNewlineMark(){
- static const UChar LF = 0x0a;
- static const UChar CR = 0x0d;
- UChar c = base[curOffset];
+ static const char16_t LF = 0x0a;
+ static const char16_t CR = 0x0d;
+ char16_t c = base[curOffset];
// CR LF
if ( c == CR && curOffset + 1 < len && base[curOffset + 1] == LF){
return 2;
@@ -84,7 +84,7 @@ int IdnaConfTest::isNewlineMark(){
UBool IdnaConfTest::ReadOneLine(UnicodeString& buf){
if ( !(curOffset < len) ) return false; // stream end
- static const UChar BACKSLASH = 0x5c;
+ static const char16_t BACKSLASH = 0x5c;
buf.remove();
int t = 0;
while (curOffset < len){
@@ -92,7 +92,7 @@ UBool IdnaConfTest::ReadOneLine(UnicodeString& buf){
curOffset += t;
break;
}
- UChar c = base[curOffset];
+ char16_t c = base[curOffset];
if (c == BACKSLASH && curOffset < len -1){ // escaped new line mark
if ((t = isNewlineMark())){
curOffset += 1 + t; // BACKSLAH and NewlineMark
@@ -116,9 +116,9 @@ UBool IdnaConfTest::ReadOneLine(UnicodeString& buf){
* and, of course, will shift tail elements.
*/
void IdnaConfTest::ExplainCodePointTag(UnicodeString& buf){
- buf.append((UChar)0); // add a terminal NULL
- UChar* bufBase = buf.getBuffer(buf.length());
- UChar* p = bufBase;
+ buf.append((char16_t)0); // add a terminal NUL
+ char16_t* bufBase = buf.getBuffer(buf.length());
+ char16_t* p = bufBase;
while (*p != 0){
if ( *p != 0x3C){ // <
*bufBase++ = *p++;
@@ -153,18 +153,18 @@ void IdnaConfTest::Call(){
errln("Incomplete record");
} else {
UErrorCode status = U_ZERO_ERROR;
- UChar result[200] = {0,}; // simple life
- const UChar *p = namebase.getTerminatedBuffer();
+ char16_t result[200] = {0,}; // simple life
+ const char16_t *p = namebase.getTerminatedBuffer();
const int p_len = namebase.length();
if (type == 0 && option == 0){
- uidna_IDNToASCII(p, p_len, result, 200, UIDNA_USE_STD3_RULES, NULL, &status);
+ uidna_IDNToASCII(p, p_len, result, 200, UIDNA_USE_STD3_RULES, nullptr, &status);
} else if (type == 0 && option == 1){
- uidna_IDNToASCII(p, p_len, result, 200, UIDNA_ALLOW_UNASSIGNED, NULL, &status);
+ uidna_IDNToASCII(p, p_len, result, 200, UIDNA_ALLOW_UNASSIGNED, nullptr, &status);
} else if (type == 1 && option == 0){
- uidna_IDNToUnicode(p, p_len, result, 200, UIDNA_USE_STD3_RULES, NULL, &status);
+ uidna_IDNToUnicode(p, p_len, result, 200, UIDNA_USE_STD3_RULES, nullptr, &status);
} else if (type == 1 && option == 1){
- uidna_IDNToUnicode(p, p_len, result, 200, UIDNA_ALLOW_UNASSIGNED, NULL, &status);
+ uidna_IDNToUnicode(p, p_len, result, 200, UIDNA_ALLOW_UNASSIGNED, nullptr, &status);
}
if (passfail == 0){
if (U_FAILURE(status)){
@@ -204,7 +204,7 @@ void IdnaConfTest::Call(){
return;
}
-void IdnaConfTest::Test(void){
+void IdnaConfTest::Test(){
UErrorCode status = U_ZERO_ERROR;
//
// Open and read the test data file.
@@ -239,7 +239,7 @@ void IdnaConfTest::Test(void){
Call();
} else {
// explain key:value
- int p = s.indexOf((UChar)0x3A); // :
+ int p = s.indexOf((char16_t)0x3A); // :
key.setTo(s,0,p).trim();
value.setTo(s,p+1).trim();
if (key.compare(C_TYPE, -1) == 0){
@@ -260,7 +260,7 @@ void IdnaConfTest::Test(void){
} else {
option = 0;
}
- id.setTo(value, 0, value.indexOf((UChar)0x20)); // space
+ id.setTo(value, 0, value.indexOf((char16_t)0x20)); // space
} else if (key.compare(C_NAMEZONE, -1) == 0){
ExplainCodePointTag(value);
namezone.setTo(value);
@@ -275,7 +275,7 @@ void IdnaConfTest::Test(void){
Call(); // for last record
}
#else
-void IdnaConfTest::Test(void)
+void IdnaConfTest::Test()
{
// test nothing...
}
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/idnaconf.h b/Build/source/libs/icu/icu-src/source/test/intltest/idnaconf.h
index 3c940ac1c52..35a3cad7d1f 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/idnaconf.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/idnaconf.h
@@ -21,14 +21,14 @@
class IdnaConfTest: public IntlTest {
public:
- void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par=NULL) override;
+ void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par=nullptr) override;
IdnaConfTest();
virtual ~IdnaConfTest();
private:
- void Test(void);
+ void Test();
// for test file handling
- UChar* base;
+ char16_t* base;
int len ;
int curOffset;
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/idnaref.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/idnaref.cpp
index c06a0ee2400..061705cb3e8 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/idnaref.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/idnaref.cpp
@@ -30,7 +30,7 @@
#include "unicode/ustring.h"
/* it is official IDNA ACE Prefix is "xn--" */
-static const UChar ACE_PREFIX[] ={ 0x0078,0x006E,0x002d,0x002d } ;
+static const char16_t ACE_PREFIX[] ={ 0x0078,0x006E,0x002d,0x002d } ;
#define ACE_PREFIX_LENGTH 4
#define MAX_LABEL_LENGTH 63
@@ -46,7 +46,7 @@ static const UChar ACE_PREFIX[] ={ 0x0078,0x006E,0x002d,0x002d } ;
inline static UBool
-startsWithPrefix(const UChar* src , int32_t srcLength){
+startsWithPrefix(const char16_t* src , int32_t srcLength){
UBool startsWithPrefix = true;
if(srcLength < ACE_PREFIX_LENGTH){
@@ -61,8 +61,8 @@ startsWithPrefix(const UChar* src , int32_t srcLength){
return startsWithPrefix;
}
-inline static UChar
-toASCIILower(UChar ch){
+inline static char16_t
+toASCIILower(char16_t ch){
if(CAPITAL_A <= ch && ch <= CAPITAL_Z){
return ch + LOWER_CASE_DELTA;
}
@@ -70,12 +70,12 @@ toASCIILower(UChar ch){
}
inline static int32_t
-compareCaseInsensitiveASCII(const UChar* s1, int32_t s1Len,
- const UChar* s2, int32_t s2Len){
+compareCaseInsensitiveASCII(const char16_t* s1, int32_t s1Len,
+ const char16_t* s2, int32_t s2Len){
if(s1Len != s2Len){
return (s1Len > s2Len) ? s1Len : s2Len;
}
- UChar c1,c2;
+ char16_t c1,c2;
int32_t rc;
for(int32_t i =0;/* no condition */;i++) {
@@ -113,14 +113,14 @@ static UErrorCode getError(enum punycode_status status){
}
}
-static inline int32_t convertASCIIToUChars(const char* src,UChar* dest, int32_t length){
+static inline int32_t convertASCIIToUChars(const char* src,char16_t* dest, int32_t length){
int i;
for(i=0;i<length;i++){
dest[i] = src[i];
}
return i;
}
-static inline int32_t convertUCharsToASCII(const UChar* src,char* dest, int32_t length){
+static inline int32_t convertUCharsToASCII(const char16_t* src,char* dest, int32_t length){
int i;
for(i=0;i<length;i++){
dest[i] = (char)src[i];
@@ -128,8 +128,8 @@ static inline int32_t convertUCharsToASCII(const UChar* src,char* dest, int32_t
return i;
}
// wrapper around the reference Punycode implementation
-static int32_t convertToPuny(const UChar* src, int32_t srcLength,
- UChar* dest, int32_t destCapacity,
+static int32_t convertToPuny(const char16_t* src, int32_t srcLength,
+ char16_t* dest, int32_t destCapacity,
UErrorCode& status){
uint32_t b1Stack[MAX_LABEL_BUFFER_SIZE];
int32_t b1Len = 0, b1Capacity = MAX_LABEL_BUFFER_SIZE;
@@ -138,14 +138,14 @@ static int32_t convertToPuny(const UChar* src, int32_t srcLength,
char* b2 = b2Stack;
int32_t b2Len =MAX_LABEL_BUFFER_SIZE ;
punycode_status error;
- unsigned char* caseFlags = NULL;
+ unsigned char* caseFlags = nullptr;
u_strToUTF32((UChar32*)b1,b1Capacity,&b1Len,src,srcLength,&status);
if(status == U_BUFFER_OVERFLOW_ERROR){
// redo processing of string
/* we do not have enough room so grow the buffer*/
b1 = (uint32_t*) uprv_malloc(b1Len * sizeof(uint32_t));
- if(b1==NULL){
+ if(b1==nullptr){
status = U_MEMORY_ALLOCATION_ERROR;
goto CLEANUP;
}
@@ -166,7 +166,7 @@ static int32_t convertToPuny(const UChar* src, int32_t srcLength,
if(status == U_BUFFER_OVERFLOW_ERROR){
/* we do not have enough room so grow the buffer*/
b2 = (char*) uprv_malloc( b2Len * sizeof(char));
- if(b2==NULL){
+ if(b2==nullptr){
status = U_MEMORY_ALLOCATION_ERROR;
goto CLEANUP;
}
@@ -209,8 +209,8 @@ static NamePrepTransform* getInstance(UErrorCode& status){
}
-static int32_t convertFromPuny( const UChar* src, int32_t srcLength,
- UChar* dest, int32_t destCapacity,
+static int32_t convertFromPuny( const char16_t* src, int32_t srcLength,
+ char16_t* dest, int32_t destCapacity,
UErrorCode& status){
char b1Stack[MAX_LABEL_BUFFER_SIZE];
char* b1 = b1Stack;
@@ -221,12 +221,12 @@ static int32_t convertFromPuny( const UChar* src, int32_t srcLength,
uint32_t b2Stack[MAX_LABEL_BUFFER_SIZE];
uint32_t* b2 = b2Stack;
int32_t b2Len =MAX_LABEL_BUFFER_SIZE;
- unsigned char* caseFlags = NULL; //(unsigned char*) uprv_malloc(srcLength * sizeof(unsigned char*));
+ unsigned char* caseFlags = nullptr; //(unsigned char*) uprv_malloc(srcLength * sizeof(unsigned char*));
punycode_status error = punycode_decode(srcLength,b1,(uint32_t*)&b2Len,b2,caseFlags);
status = getError(error);
if(status == U_BUFFER_OVERFLOW_ERROR){
b2 = (uint32_t*) uprv_malloc(b2Len * sizeof(uint32_t));
- if(b2 == NULL){
+ if(b2 == nullptr){
status = U_MEMORY_ALLOCATION_ERROR;
goto CLEANUP;
}
@@ -254,22 +254,22 @@ CLEANUP:
U_CFUNC int32_t U_EXPORT2
-idnaref_toASCII(const UChar* src, int32_t srcLength,
- UChar* dest, int32_t destCapacity,
+idnaref_toASCII(const char16_t* src, int32_t srcLength,
+ char16_t* dest, int32_t destCapacity,
int32_t options,
UParseError* parseError,
UErrorCode* status){
- if(status == NULL || U_FAILURE(*status)){
+ if(status == nullptr || U_FAILURE(*status)){
return 0;
}
- if((src == NULL) || (srcLength < -1) || (destCapacity<0) || (!dest && destCapacity > 0)){
+ if((src == nullptr) || (srcLength < -1) || (destCapacity<0) || (!dest && destCapacity > 0)){
*status = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
- UChar b1Stack[MAX_LABEL_BUFFER_SIZE], b2Stack[MAX_LABEL_BUFFER_SIZE];
+ char16_t b1Stack[MAX_LABEL_BUFFER_SIZE], b2Stack[MAX_LABEL_BUFFER_SIZE];
//initialize pointers to stack buffers
- UChar *b1 = b1Stack, *b2 = b2Stack;
+ char16_t *b1 = b1Stack, *b2 = b2Stack;
int32_t b1Len=0, b2Len=0,
b1Capacity = MAX_LABEL_BUFFER_SIZE,
b2Capacity = MAX_LABEL_BUFFER_SIZE ,
@@ -279,7 +279,7 @@ idnaref_toASCII(const UChar* src, int32_t srcLength,
UBool allowUnassigned = (UBool)((options & IDNAREF_ALLOW_UNASSIGNED) != 0);
UBool useSTD3ASCIIRules = (UBool)((options & IDNAREF_USE_STD3_RULES) != 0);
- UBool* caseFlags = NULL;
+ UBool* caseFlags = nullptr;
// assume the source contains all ascii codepoints
UBool srcIsASCII = true;
@@ -311,8 +311,8 @@ idnaref_toASCII(const UChar* src, int32_t srcLength,
if(*status == U_BUFFER_OVERFLOW_ERROR){
// redo processing of string
/* we do not have enough room so grow the buffer*/
- b1 = (UChar*) uprv_malloc(b1Len * U_SIZEOF_UCHAR);
- if(b1==NULL){
+ b1 = (char16_t*) uprv_malloc(b1Len * U_SIZEOF_UCHAR);
+ if(b1==nullptr){
*status = U_MEMORY_ALLOCATION_ERROR;
goto CLEANUP;
}
@@ -370,8 +370,8 @@ idnaref_toASCII(const UChar* src, int32_t srcLength,
if(*status == U_BUFFER_OVERFLOW_ERROR){
// redo processing of string
/* we do not have enough room so grow the buffer*/
- b2 = (UChar*) uprv_malloc(b2Len * U_SIZEOF_UCHAR);
- if(b2 == NULL){
+ b2 = (char16_t*) uprv_malloc(b2Len * U_SIZEOF_UCHAR);
+ if(b2 == nullptr){
*status = U_MEMORY_ALLOCATION_ERROR;
goto CLEANUP;
}
@@ -423,26 +423,26 @@ CLEANUP:
U_CFUNC int32_t U_EXPORT2
-idnaref_toUnicode(const UChar* src, int32_t srcLength,
- UChar* dest, int32_t destCapacity,
+idnaref_toUnicode(const char16_t* src, int32_t srcLength,
+ char16_t* dest, int32_t destCapacity,
int32_t options,
UParseError* parseError,
UErrorCode* status){
- if(status == NULL || U_FAILURE(*status)){
+ if(status == nullptr || U_FAILURE(*status)){
return 0;
}
- if((src == NULL) || (srcLength < -1) || (destCapacity<0) || (!dest && destCapacity > 0)){
+ if((src == nullptr) || (srcLength < -1) || (destCapacity<0) || (!dest && destCapacity > 0)){
*status = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
- UChar b1Stack[MAX_LABEL_BUFFER_SIZE], b2Stack[MAX_LABEL_BUFFER_SIZE], b3Stack[MAX_LABEL_BUFFER_SIZE];
+ char16_t b1Stack[MAX_LABEL_BUFFER_SIZE], b2Stack[MAX_LABEL_BUFFER_SIZE], b3Stack[MAX_LABEL_BUFFER_SIZE];
//initialize pointers to stack buffers
- UChar *b1 = b1Stack, *b2 = b2Stack, *b1Prime=NULL, *b3=b3Stack;
+ char16_t *b1 = b1Stack, *b2 = b2Stack, *b1Prime=nullptr, *b3=b3Stack;
int32_t b1Len, b2Len, b1PrimeLen, b3Len,
b1Capacity = MAX_LABEL_BUFFER_SIZE,
b2Capacity = MAX_LABEL_BUFFER_SIZE,
@@ -452,7 +452,7 @@ idnaref_toUnicode(const UChar* src, int32_t srcLength,
NamePrepTransform* prep = getInstance(*status);
b1Len = 0;
- UBool* caseFlags = NULL;
+ UBool* caseFlags = nullptr;
//get the options
UBool allowUnassigned = (UBool)((options & IDNAREF_ALLOW_UNASSIGNED) != 0);
@@ -500,8 +500,8 @@ idnaref_toUnicode(const UChar* src, int32_t srcLength,
if(*status == U_BUFFER_OVERFLOW_ERROR){
// redo processing of string
/* we do not have enough room so grow the buffer*/
- b1 = (UChar*) uprv_malloc(b1Len * U_SIZEOF_UCHAR);
- if(b1==NULL){
+ b1 = (char16_t*) uprv_malloc(b1Len * U_SIZEOF_UCHAR);
+ if(b1==nullptr){
*status = U_MEMORY_ALLOCATION_ERROR;
goto CLEANUP;
}
@@ -521,8 +521,8 @@ idnaref_toUnicode(const UChar* src, int32_t srcLength,
u_memmove(b1, src, srcLength);
}else{
/* we do not have enough room so grow the buffer*/
- b1 = (UChar*) uprv_malloc(srcLength * U_SIZEOF_UCHAR);
- if(b1==NULL){
+ b1 = (char16_t*) uprv_malloc(srcLength * U_SIZEOF_UCHAR);
+ if(b1==nullptr){
*status = U_MEMORY_ALLOCATION_ERROR;
goto CLEANUP;
}
@@ -544,8 +544,8 @@ idnaref_toUnicode(const UChar* src, int32_t srcLength,
if(*status == U_BUFFER_OVERFLOW_ERROR){
// redo processing of string
/* we do not have enough room so grow the buffer*/
- b2 = (UChar*) uprv_malloc(b2Len * U_SIZEOF_UCHAR);
- if(b2==NULL){
+ b2 = (char16_t*) uprv_malloc(b2Len * U_SIZEOF_UCHAR);
+ if(b2==nullptr){
*status = U_MEMORY_ALLOCATION_ERROR;
goto CLEANUP;
}
@@ -563,8 +563,8 @@ idnaref_toUnicode(const UChar* src, int32_t srcLength,
if(*status == U_BUFFER_OVERFLOW_ERROR){
// redo processing of string
/* we do not have enough room so grow the buffer*/
- b3 = (UChar*) uprv_malloc(b3Len * U_SIZEOF_UCHAR);
- if(b3==NULL){
+ b3 = (char16_t*) uprv_malloc(b3Len * U_SIZEOF_UCHAR);
+ if(b3==nullptr){
*status = U_MEMORY_ALLOCATION_ERROR;
goto CLEANUP;
}
@@ -652,8 +652,8 @@ CLEANUP:
static int32_t
-getNextSeparator(UChar *src,int32_t srcLength,NamePrepTransform* prep,
- UChar **limit,
+getNextSeparator(char16_t *src,int32_t srcLength,NamePrepTransform* prep,
+ char16_t **limit,
UBool *done,
UErrorCode *status){
if(srcLength == -1){
@@ -688,16 +688,16 @@ getNextSeparator(UChar *src,int32_t srcLength,NamePrepTransform* prep,
}
U_CFUNC int32_t U_EXPORT2
-idnaref_IDNToASCII( const UChar* src, int32_t srcLength,
- UChar* dest, int32_t destCapacity,
+idnaref_IDNToASCII( const char16_t* src, int32_t srcLength,
+ char16_t* dest, int32_t destCapacity,
int32_t options,
UParseError* parseError,
UErrorCode* status){
- if(status == NULL || U_FAILURE(*status)){
+ if(status == nullptr || U_FAILURE(*status)){
return 0;
}
- if((src == NULL) || (srcLength < -1) || (destCapacity<0) || (!dest && destCapacity > 0)){
+ if((src == nullptr) || (srcLength < -1) || (destCapacity<0) || (!dest && destCapacity > 0)){
*status = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -708,11 +708,11 @@ idnaref_IDNToASCII( const UChar* src, int32_t srcLength,
NamePrepTransform* prep = getInstance(*status);
//initialize pointers to stack buffers
- UChar b1Stack[MAX_LABEL_BUFFER_SIZE];
- UChar *b1 = b1Stack;
+ char16_t b1Stack[MAX_LABEL_BUFFER_SIZE];
+ char16_t *b1 = b1Stack;
int32_t b1Len, labelLen;
- UChar* delimiter = (UChar*)src;
- UChar* labelStart = (UChar*)src;
+ char16_t* delimiter = (char16_t*)src;
+ char16_t* labelStart = (char16_t*)src;
int32_t remainingLen = srcLength;
int32_t b1Capacity = MAX_LABEL_BUFFER_SIZE;
@@ -743,8 +743,8 @@ idnaref_IDNToASCII( const UChar* src, int32_t srcLength,
if(*status == U_BUFFER_OVERFLOW_ERROR){
// redo processing of string
/* we do not have enough room so grow the buffer*/
- b1 = (UChar*) uprv_malloc(b1Len * U_SIZEOF_UCHAR);
- if(b1==NULL){
+ b1 = (char16_t*) uprv_malloc(b1Len * U_SIZEOF_UCHAR);
+ if(b1==nullptr){
*status = U_MEMORY_ALLOCATION_ERROR;
goto CLEANUP;
}
@@ -793,8 +793,8 @@ idnaref_IDNToASCII( const UChar* src, int32_t srcLength,
if(*status == U_BUFFER_OVERFLOW_ERROR){
// redo processing of string
/* we do not have enough room so grow the buffer*/
- b1 = (UChar*) uprv_malloc(b1Len * U_SIZEOF_UCHAR);
- if(b1==NULL){
+ b1 = (char16_t*) uprv_malloc(b1Len * U_SIZEOF_UCHAR);
+ if(b1==nullptr){
*status = U_MEMORY_ALLOCATION_ERROR;
goto CLEANUP;
}
@@ -843,16 +843,16 @@ CLEANUP:
}
U_CFUNC int32_t U_EXPORT2
-idnaref_IDNToUnicode( const UChar* src, int32_t srcLength,
- UChar* dest, int32_t destCapacity,
+idnaref_IDNToUnicode( const char16_t* src, int32_t srcLength,
+ char16_t* dest, int32_t destCapacity,
int32_t options,
UParseError* parseError,
UErrorCode* status){
- if(status == NULL || U_FAILURE(*status)){
+ if(status == nullptr || U_FAILURE(*status)){
return 0;
}
- if((src == NULL) || (srcLength < -1) || (destCapacity<0) || (!dest && destCapacity > 0)){
+ if((src == nullptr) || (srcLength < -1) || (destCapacity<0) || (!dest && destCapacity > 0)){
*status = U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -864,11 +864,11 @@ idnaref_IDNToUnicode( const UChar* src, int32_t srcLength,
NamePrepTransform* prep = getInstance(*status);
//initialize pointers to stack buffers
- UChar b1Stack[MAX_LABEL_BUFFER_SIZE];
- UChar *b1 = b1Stack;
+ char16_t b1Stack[MAX_LABEL_BUFFER_SIZE];
+ char16_t *b1 = b1Stack;
int32_t b1Len, labelLen;
- UChar* delimiter = (UChar*)src;
- UChar* labelStart = (UChar*)src;
+ char16_t* delimiter = (char16_t*)src;
+ char16_t* labelStart = (char16_t*)src;
int32_t remainingLen = srcLength;
int32_t b1Capacity = MAX_LABEL_BUFFER_SIZE;
@@ -898,8 +898,8 @@ idnaref_IDNToUnicode( const UChar* src, int32_t srcLength,
if(*status == U_BUFFER_OVERFLOW_ERROR){
// redo processing of string
/* we do not have enough room so grow the buffer*/
- b1 = (UChar*) uprv_malloc(b1Len * U_SIZEOF_UCHAR);
- if(b1==NULL){
+ b1 = (char16_t*) uprv_malloc(b1Len * U_SIZEOF_UCHAR);
+ if(b1==nullptr){
*status = U_MEMORY_ALLOCATION_ERROR;
goto CLEANUP;
}
@@ -950,8 +950,8 @@ idnaref_IDNToUnicode( const UChar* src, int32_t srcLength,
if(*status == U_BUFFER_OVERFLOW_ERROR){
// redo processing of string
/* we do not have enough room so grow the buffer*/
- b1 = (UChar*) uprv_malloc(b1Len * U_SIZEOF_UCHAR);
- if(b1==NULL){
+ b1 = (char16_t*) uprv_malloc(b1Len * U_SIZEOF_UCHAR);
+ if(b1==nullptr){
*status = U_MEMORY_ALLOCATION_ERROR;
goto CLEANUP;
}
@@ -999,17 +999,17 @@ CLEANUP:
}
U_CFUNC int32_t U_EXPORT2
-idnaref_compare( const UChar *s1, int32_t length1,
- const UChar *s2, int32_t length2,
+idnaref_compare( const char16_t *s1, int32_t length1,
+ const char16_t *s2, int32_t length2,
int32_t options,
UErrorCode* status){
- if(status == NULL || U_FAILURE(*status)){
+ if(status == nullptr || U_FAILURE(*status)){
return -1;
}
- UChar b1Stack[MAX_IDN_BUFFER_SIZE], b2Stack[MAX_IDN_BUFFER_SIZE];
- UChar *b1 = b1Stack, *b2 = b2Stack;
+ char16_t b1Stack[MAX_IDN_BUFFER_SIZE], b2Stack[MAX_IDN_BUFFER_SIZE];
+ char16_t *b1 = b1Stack, *b2 = b2Stack;
int32_t b1Len, b2Len, b1Capacity = MAX_IDN_BUFFER_SIZE, b2Capacity = MAX_IDN_BUFFER_SIZE;
int32_t result = -1;
@@ -1019,8 +1019,8 @@ idnaref_compare( const UChar *s1, int32_t length1,
if(*status == U_BUFFER_OVERFLOW_ERROR){
// redo processing of string
/* we do not have enough room so grow the buffer*/
- b1 = (UChar*) uprv_malloc(b1Len * U_SIZEOF_UCHAR);
- if(b1==NULL){
+ b1 = (char16_t*) uprv_malloc(b1Len * U_SIZEOF_UCHAR);
+ if(b1==nullptr){
*status = U_MEMORY_ALLOCATION_ERROR;
goto CLEANUP;
}
@@ -1035,8 +1035,8 @@ idnaref_compare( const UChar *s1, int32_t length1,
if(*status == U_BUFFER_OVERFLOW_ERROR){
// redo processing of string
/* we do not have enough room so grow the buffer*/
- b2 = (UChar*) uprv_malloc(b2Len * U_SIZEOF_UCHAR);
- if(b2==NULL){
+ b2 = (char16_t*) uprv_malloc(b2Len * U_SIZEOF_UCHAR);
+ if(b2==nullptr){
*status = U_MEMORY_ALLOCATION_ERROR;
goto CLEANUP;
}
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/incaltst.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/incaltst.cpp
index 250b61c7ac0..4be0af09ed2 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/incaltst.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/incaltst.cpp
@@ -36,13 +36,13 @@ static UnicodeString escape( const UnicodeString&src)
UnicodeString dst;
dst.remove();
for (int32_t i = 0; i < src.length(); ++i) {
- UChar c = src[i];
+ char16_t c = src[i];
if(c < 0x0080)
dst += c;
else {
dst += UnicodeString("[");
char buf [8];
- sprintf(buf, "%#x", c);
+ snprintf(buf, sizeof(buf), "%#x", c);
dst += UnicodeString(buf);
dst += UnicodeString("]");
}
@@ -119,7 +119,7 @@ void IntlCalendarTest::runIndexedTest( int32_t index, UBool exec, const char* &n
void
IntlCalendarTest::TestTypes()
{
- Calendar *c = NULL;
+ Calendar *c = nullptr;
UErrorCode status = U_ZERO_ERROR;
int j;
const char *locs [40] = { "en_US_VALLEYGIRL",
@@ -134,7 +134,7 @@ IntlCalendarTest::TestTypes()
"th", // th's default region is TH and buddhist is used as default for TH
"en_TH", // Default calendar for any locales with region TH is buddhist
"en-TH-u-ca-gregory",
- NULL };
+ nullptr };
const char *types[40] = { "gregorian",
"japanese",
"gregorian",
@@ -147,7 +147,7 @@ IntlCalendarTest::TestTypes()
"buddhist",
"buddhist",
"gregorian",
- NULL };
+ nullptr };
for(j=0;locs[j];j++) {
logln(UnicodeString("Creating calendar of locale ") + locs[j]);
@@ -987,8 +987,8 @@ void IntlCalendarTest::TestConsistencyEthiopicAmeteAlem() {
checkConsistency("en@calendar=ethiopic-amete-alem");
}
void IntlCalendarTest::checkConsistency(const char* locale) {
- // Check 2.5 years in quick mode and 8000 years in exhaustive mode.
- int32_t numOfDaysToTest = static_cast<int32_t>((quick ? 2.5 : 8000) * 365);
+ // Check 2.5 years in quick mode and 6000 years in exhaustive mode.
+ int32_t numOfDaysToTest = static_cast<int32_t>((quick ? 2.5 : 6000) * 365);
constexpr int32_t msInADay = 1000*60*60*24;
std::string msg("TestConsistency");
IcuTestErrorCode status(*this, (msg + locale).c_str());
@@ -999,6 +999,10 @@ void IntlCalendarTest::checkConsistency(const char* locale) {
if (status.errIfFailureAndReset("Cannot create calendar %s", locale)) {
return;
}
+ const char* type = base->getType();
+ // Do not ignore in quick mode
+ bool ignoreOrdinaryMonth12Bug = (!quick) && (strcmp("chinese", type) == 0 || strcmp("dangi", type) == 0);
+ bool ignoreICU22258 = (!quick) && (strcmp("dangi", type) == 0);
UDate test = Calendar::getNow();
base->setTimeZone(*(TimeZone::getGMT()));
int32_t j;
@@ -1085,18 +1089,37 @@ void IntlCalendarTest::checkConsistency(const char* locale) {
return;
}
if (test != result) {
+ if (ignoreOrdinaryMonth12Bug &&
+ base->get(UCAL_ORDINAL_MONTH, status) == 12) {
+ logKnownIssue("ICU-22230", "Problem December in Leap Year");
+ status.reset();
+ continue;
+ }
+ int32_t year = base->get(UCAL_YEAR, status);
+ int32_t month = base->get(UCAL_MONTH, status) + 1;
+ int32_t date = base->get(UCAL_DATE, status);
+ if (ignoreICU22258 && (year == 4 || year == 34) && month == 12 && date == 30) {
+ logKnownIssue("ICU-22258",
+ "Dangi Problem in 1988/2/17=>4/12/30 and 1958/2/18=>34/12/30");
+ status.reset();
+ continue;
+ }
+
errln((UnicodeString)"Round trip conversion produces different "
"time from " + test + " to " + result + " delta: " +
(result - test) +
" Gregorian(e=" + g->get(UCAL_ERA, status) + " " +
g->get(UCAL_YEAR, status) + "/" +
(g->get(UCAL_MONTH, status) + 1) + "/" +
- g->get(UCAL_DATE, status) + ") ");
+ g->get(UCAL_DATE, status) + ") \n" +
+ " Calendar[" + base->getType() +
+ "](e=" + base->get(UCAL_ERA, status) + " " +
+ year + "/" + month + "/" + date +
+ ") ordinalMonth=" +
+ base->get(UCAL_ORDINAL_MONTH, status));
status.errIfFailureAndReset();
- return;
}
}
- status.errIfFailureAndReset();
}
void IntlCalendarTest::simpleTest(const Locale& loc, const UnicodeString& expect, UDate expectDate, UErrorCode& status)
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/incaltst.h b/Build/source/libs/icu/icu-src/source/test/intltest/incaltst.h
index 876fb9e3a99..a29f7b316bf 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/incaltst.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/incaltst.h
@@ -22,44 +22,44 @@ public:
// IntlTest override
void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par ) override;
public:
- void TestTypes(void);
+ void TestTypes();
- void TestGregorian(void);
+ void TestGregorian();
- void TestBuddhist(void);
- void TestBuddhistFormat(void);
- void TestBug21043Indian(void);
- void TestBug21044Hebrew(void);
- void TestBug21045Islamic(void);
- void TestBug21046IslamicUmalqura(void);
+ void TestBuddhist();
+ void TestBuddhistFormat();
+ void TestBug21043Indian();
+ void TestBug21044Hebrew();
+ void TestBug21045Islamic();
+ void TestBug21046IslamicUmalqura();
- void TestTaiwan(void);
+ void TestTaiwan();
- void TestJapanese(void);
- void TestJapaneseFormat(void);
- void TestJapanese3860(void);
- void TestForceGannenNumbering(void);
+ void TestJapanese();
+ void TestJapaneseFormat();
+ void TestJapanese3860();
+ void TestForceGannenNumbering();
- void TestPersian(void);
- void TestPersianFormat(void);
+ void TestPersian();
+ void TestPersianFormat();
- void TestConsistencyGregorian(void);
- void TestConsistencyCoptic(void);
- void TestConsistencyEthiopic(void);
- void TestConsistencyROC(void);
- void TestConsistencyChinese(void);
- void TestConsistencyDangi(void);
- void TestConsistencyBuddhist(void);
- void TestConsistencyEthiopicAmeteAlem(void);
- void TestConsistencyHebrew(void);
- void TestConsistencyIndian(void);
- void TestConsistencyIslamic(void);
- void TestConsistencyIslamicCivil(void);
- void TestConsistencyIslamicRGSA(void);
- void TestConsistencyIslamicTBLA(void);
- void TestConsistencyIslamicUmalqura(void);
- void TestConsistencyPersian(void);
- void TestConsistencyJapanese(void);
+ void TestConsistencyGregorian();
+ void TestConsistencyCoptic();
+ void TestConsistencyEthiopic();
+ void TestConsistencyROC();
+ void TestConsistencyChinese();
+ void TestConsistencyDangi();
+ void TestConsistencyBuddhist();
+ void TestConsistencyEthiopicAmeteAlem();
+ void TestConsistencyHebrew();
+ void TestConsistencyIndian();
+ void TestConsistencyIslamic();
+ void TestConsistencyIslamicCivil();
+ void TestConsistencyIslamicRGSA();
+ void TestConsistencyIslamicTBLA();
+ void TestConsistencyIslamicUmalqura();
+ void TestConsistencyPersian();
+ void TestConsistencyJapanese();
protected:
// Test a Gregorian-Like calendar
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/intltest.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/intltest.cpp
index 3686e7fd547..e831fd0dfcd 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/intltest.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/intltest.cpp
@@ -54,11 +54,11 @@
#endif
-static char* _testDataPath=NULL;
+static char* _testDataPath=nullptr;
// Static list of errors found
static UnicodeString errorList;
-static void *knownList = NULL; // known issues
+static void *knownList = nullptr; // known issues
static UBool noKnownIssues = false; // if true, don't emit known issues
//-----------------------------------------------------------------------------
@@ -67,7 +67,7 @@ static UBool noKnownIssues = false; // if true, don't emit known issues
// [LIU] Just to get things working
UnicodeString
-UCharToUnicodeString(UChar c)
+UCharToUnicodeString(char16_t c)
{ return UnicodeString(c); }
// [rtg] Just to get things working
@@ -78,7 +78,7 @@ operator+(const UnicodeString& left,
char buffer[64]; // nos changed from 10 to 64
char danger = 'p'; // guard against overrunning the buffer (rtg)
- sprintf(buffer, "%ld", num);
+ snprintf(buffer, sizeof(buffer), "%ld", num);
assert(danger == 'p');
return left + buffer;
@@ -91,7 +91,7 @@ operator+(const UnicodeString& left,
char buffer[64]; // nos changed from 10 to 64
char danger = 'p'; // guard against overrunning the buffer (rtg)
- sprintf(buffer, "%lu", num);
+ snprintf(buffer, sizeof(buffer), "%lu", num);
assert(danger == 'p');
return left + buffer;
@@ -104,9 +104,9 @@ Int64ToUnicodeString(int64_t num)
char danger = 'p'; // guard against overrunning the buffer (rtg)
#if defined(_MSC_VER)
- sprintf(buffer, "%I64d", num);
+ snprintf(buffer, sizeof(buffer), "%I64d", num);
#else
- sprintf(buffer, "%lld", (long long)num);
+ snprintf(buffer, sizeof(buffer), "%lld", (long long)num);
#endif
assert(danger == 'p');
@@ -119,7 +119,7 @@ DoubleToUnicodeString(double num)
char buffer[64]; // nos changed from 10 to 64
char danger = 'p'; // guard against overrunning the buffer (rtg)
- sprintf(buffer, "%1.14e", num);
+ snprintf(buffer, sizeof(buffer), "%1.14e", num);
assert(danger == 'p');
return buffer;
@@ -137,7 +137,7 @@ operator+(const UnicodeString& left,
// 53*log(2)/log(10) = 15.95
// so there is no need to show more than 16 digits. [alan]
- sprintf(buffer, "%.17g", num);
+ snprintf(buffer, sizeof(buffer), "%.17g", num);
assert(danger == 'p');
return left + buffer;
@@ -203,7 +203,7 @@ UnicodeString _toString(const Formattable& f) {
break;
case Formattable::kObject: {
const CurrencyAmount* c = dynamic_cast<const CurrencyAmount*>(f.getObject());
- if (c != NULL) {
+ if (c != nullptr) {
s = _toString(c->getNumber()) + " " + UnicodeString(c->getISOCurrency());
} else {
s = UnicodeString("Unknown UObject");
@@ -222,9 +222,9 @@ UnicodeString _toString(const Formattable& f) {
* + char* ambiguous. - liu
*/
UnicodeString toString(const Formattable& f) {
- UnicodeString s((UChar)91/*[*/);
+ UnicodeString s((char16_t)91/*[*/);
s.append(_toString(f));
- s.append((UChar)0x5d/*]*/);
+ s.append((char16_t)0x5d/*]*/);
return s;
}
@@ -271,7 +271,7 @@ IntlTest::appendHex(uint32_t number,
int32_t digits,
UnicodeString& target)
{
- static const UChar digitString[] = {
+ static const char16_t digitString[] = {
0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39,
0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0
}; /* "0123456789ABCDEF" */
@@ -385,7 +385,7 @@ IntlTest::prettify(const UnicodeString &source, UBool parseBackslash)
// Delete a backslash.
int32_t backslashCount = 0;
for (int32_t j=target.length()-1; j>=0; --j) {
- if (target.charAt(j) == (UChar)92) {
+ if (target.charAt(j) == (char16_t)92) {
++backslashCount;
} else {
break;
@@ -426,7 +426,7 @@ IntlTest::prettify(const UnicodeString &source, UBool parseBackslash)
void IntlTest::setICU_DATA() {
const char *original_ICU_DATA = getenv("ICU_DATA");
- if (original_ICU_DATA != NULL && *original_ICU_DATA != 0) {
+ if (original_ICU_DATA != nullptr && *original_ICU_DATA != 0) {
/* If the user set ICU_DATA, don't second-guess the person. */
return;
}
@@ -441,7 +441,10 @@ void IntlTest::setICU_DATA() {
#if defined (U_TOPBUILDDIR)
{
- static char env_string[] = U_TOPBUILDDIR "data" U_FILE_SEP_STRING "out" U_FILE_SEP_STRING;
+ static char env_string[] = U_TOPBUILDDIR
+ "data" U_FILE_SEP_STRING
+ "out" U_FILE_SEP_STRING
+ "build" U_FILE_SEP_STRING;
u_setDataDirectory(env_string);
return;
}
@@ -463,12 +466,12 @@ void IntlTest::setICU_DATA() {
/* Only Windows should end up here, so looking for '\' is safe. */
for (i=1; i<=3; i++) {
pBackSlash = strrchr(p, U_FILE_SEP_CHAR);
- if (pBackSlash != NULL) {
+ if (pBackSlash != nullptr) {
*pBackSlash = 0; /* Truncate the string at the '\' */
}
}
- if (pBackSlash != NULL) {
+ if (pBackSlash != nullptr) {
/* We found and truncated three names from the path.
* Now append "source\data" and set the environment
*/
@@ -495,7 +498,7 @@ void IntlTest::setICU_DATA() {
static const int32_t indentLevel_offset = 3;
static const char delim = '/';
-IntlTest* IntlTest::gTest = NULL;
+IntlTest* IntlTest::gTest = nullptr;
static int32_t execCount = 0;
@@ -511,7 +514,7 @@ void it_logln( UnicodeString message )
IntlTest::gTest->logln( message );
}
-void it_logln( void )
+void it_logln()
{
if (IntlTest::gTest)
IntlTest::gTest->logln();
@@ -529,7 +532,7 @@ void it_infoln( UnicodeString message )
IntlTest::gTest->infoln( message );
}
-void it_infoln( void )
+void it_infoln()
{
if (IntlTest::gTest)
IntlTest::gTest->infoln();
@@ -567,8 +570,8 @@ void it_dataerrln( UnicodeString message )
IntlTest::IntlTest()
{
- caller = NULL;
- testPath = NULL;
+ caller = nullptr;
+ testPath = nullptr;
LL_linestart = true;
errorCount = 0;
dataErrorCount = 0;
@@ -676,12 +679,12 @@ int32_t IntlTest::setThreadCount( int32_t count )
return rval;
}
-int32_t IntlTest::getErrors( void )
+int32_t IntlTest::getErrors()
{
return errorCount;
}
-int32_t IntlTest::getDataErrors( void )
+int32_t IntlTest::getDataErrors()
{
return dataErrorCount;
}
@@ -689,11 +692,11 @@ int32_t IntlTest::getDataErrors( void )
UBool IntlTest::runTest( char* name, char* par, char *baseName )
{
UBool rval;
- char* pos = NULL;
+ char* pos = nullptr;
- char* baseNameBuffer = NULL;
+ char* baseNameBuffer = nullptr;
- if(baseName == NULL) {
+ if(baseName == nullptr) {
baseNameBuffer = (char*)malloc(1024);
baseName=baseNameBuffer;
strcpy(baseName, "/");
@@ -705,11 +708,11 @@ UBool IntlTest::runTest( char* name, char* par, char *baseName )
testPath = pos+1; // store subpath for calling subtest
*pos = 0; // split into two strings
}else{
- testPath = NULL;
+ testPath = nullptr;
}
if (!name || (name[0] == 0) || (strcmp(name, "*") == 0)) {
- rval = runTestLoop( NULL, par, baseName );
+ rval = runTestLoop( nullptr, par, baseName );
}else if (strcmp( name, "LIST" ) == 0) {
this->usage();
@@ -721,7 +724,7 @@ UBool IntlTest::runTest( char* name, char* par, char *baseName )
if (pos)
*pos = delim; // restore original value at pos
- if(baseNameBuffer!=NULL) {
+ if(baseNameBuffer!=nullptr) {
free(baseNameBuffer);
}
return rval;
@@ -751,7 +754,7 @@ UBool IntlTest::runTestLoop( char* testname, char* par, char *baseName )
UBool rval = false;
UBool lastTestFailed;
- if(baseName == NULL) {
+ if(baseName == nullptr) {
printf("ERROR: baseName can't be null.\n");
return false;
} else {
@@ -781,7 +784,7 @@ UBool IntlTest::runTestLoop( char* testname, char* par, char *baseName )
lastErrorCount = errorCount;
execCount++;
char msg[256];
- sprintf(msg, "%s {", name);
+ snprintf(msg, sizeof(msg), "%s {", name);
LL_message(msg, true);
UDate timeStart = uprv_getRawUTCtime();
strcpy(saveBaseLoc,name);
@@ -795,7 +798,7 @@ UBool IntlTest::runTestLoop( char* testname, char* par, char *baseName )
rval = true; // at least one test has been called
char secs[256];
if(!no_time) {
- sprintf(secs, "%f", (timeStop-timeStart)/1000.0);
+ snprintf(secs, sizeof(secs), "%f", (timeStop-timeStart)/1000.0);
} else {
secs[0]=0;
}
@@ -804,17 +807,17 @@ UBool IntlTest::runTestLoop( char* testname, char* par, char *baseName )
strcpy(saveBaseLoc,name);
- ctest_xml_testcase(baseName, name, secs, (lastErrorCount!=errorCount)?"err":NULL);
+ ctest_xml_testcase(baseName, name, secs, (lastErrorCount!=errorCount)?"err":nullptr);
saveBaseLoc[0]=0; /* reset path */
if (lastErrorCount == errorCount) {
- sprintf( msg, " } OK: %s ", name );
+ snprintf( msg, sizeof(msg), " } OK: %s ", name );
if(!no_time) str_timeDelta(msg+strlen(msg),timeStop-timeStart);
lastTestFailed = false;
}else{
- sprintf(msg, " } ERRORS (%li) in %s", (long)(errorCount-lastErrorCount), name);
+ snprintf(msg, sizeof(msg), " } ERRORS (%li) in %s", (long)(errorCount-lastErrorCount), name);
if(!no_time) str_timeDelta(msg+strlen(msg),timeStop-timeStart);
for(int i=0;i<LL_indentlevel;i++) {
@@ -865,7 +868,7 @@ void IntlTest::logln( const UnicodeString &message )
}
}
-void IntlTest::logln( void )
+void IntlTest::logln()
{
if( verbose ) {
LL_message( "", true );
@@ -889,19 +892,19 @@ void IntlTest::infoln( const UnicodeString &message )
LL_message( message, true );
}
-void IntlTest::infoln( void )
+void IntlTest::infoln()
{
LL_message( "", true );
}
-int32_t IntlTest::IncErrorCount( void )
+int32_t IntlTest::IncErrorCount()
{
errorCount++;
if (caller) caller->IncErrorCount();
return errorCount;
}
-int32_t IntlTest::IncDataErrorCount( void )
+int32_t IntlTest::IncDataErrorCount()
{
dataErrorCount++;
if (caller) caller->IncDataErrorCount();
@@ -964,18 +967,18 @@ void IntlTest::errcheckln(UErrorCode status, const UnicodeString &message ) {
}
}
-/* convenience functions that include sprintf formatting */
+/* convenience functions that include snprintf formatting */
void IntlTest::log(const char *fmt, ...)
{
char buffer[4000];
va_list ap;
va_start(ap, fmt);
- /* sprintf it just to make sure that the information is valid */
- vsprintf(buffer, fmt, ap);
+ /* snprintf it just to make sure that the information is valid */
+ vsnprintf(buffer, sizeof(buffer), fmt, ap);
va_end(ap);
if( verbose ) {
- log(UnicodeString(buffer, (const char *)NULL));
+ log(UnicodeString(buffer, (const char *)nullptr));
}
}
@@ -985,11 +988,11 @@ void IntlTest::logln(const char *fmt, ...)
va_list ap;
va_start(ap, fmt);
- /* sprintf it just to make sure that the information is valid */
- vsprintf(buffer, fmt, ap);
+ /* snprintf it just to make sure that the information is valid */
+ vsnprintf(buffer, sizeof(buffer), fmt, ap);
va_end(ap);
if( verbose ) {
- logln(UnicodeString(buffer, (const char *)NULL));
+ logln(UnicodeString(buffer, (const char *)nullptr));
}
}
@@ -999,10 +1002,10 @@ UBool IntlTest::logKnownIssue(const char *ticket, const char *fmt, ...)
va_list ap;
va_start(ap, fmt);
- /* sprintf it just to make sure that the information is valid */
- vsprintf(buffer, fmt, ap);
+ /* snprintf it just to make sure that the information is valid */
+ vsnprintf(buffer, sizeof(buffer), fmt, ap);
va_end(ap);
- return logKnownIssue(ticket, UnicodeString(buffer, (const char *)NULL));
+ return logKnownIssue(ticket, UnicodeString(buffer, (const char *)nullptr));
}
UBool IntlTest::logKnownIssue(const char *ticket) {
@@ -1030,17 +1033,17 @@ UBool IntlTest::logKnownIssue(const char *ticket, const UnicodeString &msg) {
return true;
}
-/* convenience functions that include sprintf formatting */
+/* convenience functions that include snprintf formatting */
void IntlTest::info(const char *fmt, ...)
{
char buffer[4000];
va_list ap;
va_start(ap, fmt);
- /* sprintf it just to make sure that the information is valid */
- vsprintf(buffer, fmt, ap);
+ /* snprintf it just to make sure that the information is valid */
+ vsnprintf(buffer, sizeof(buffer), fmt, ap);
va_end(ap);
- info(UnicodeString(buffer, (const char *)NULL));
+ info(UnicodeString(buffer, (const char *)nullptr));
}
void IntlTest::infoln(const char *fmt, ...)
@@ -1049,10 +1052,10 @@ void IntlTest::infoln(const char *fmt, ...)
va_list ap;
va_start(ap, fmt);
- /* sprintf it just to make sure that the information is valid */
- vsprintf(buffer, fmt, ap);
+ /* snprintf it just to make sure that the information is valid */
+ vsnprintf(buffer, sizeof(buffer), fmt, ap);
va_end(ap);
- infoln(UnicodeString(buffer, (const char *)NULL));
+ infoln(UnicodeString(buffer, (const char *)nullptr));
}
void IntlTest::err(const char *fmt, ...)
@@ -1061,9 +1064,9 @@ void IntlTest::err(const char *fmt, ...)
va_list ap;
va_start(ap, fmt);
- vsprintf(buffer, fmt, ap);
+ vsnprintf(buffer, sizeof(buffer), fmt, ap);
va_end(ap);
- err(UnicodeString(buffer, (const char *)NULL));
+ err(UnicodeString(buffer, (const char *)nullptr));
}
void IntlTest::errln(const char *fmt, ...)
@@ -1072,9 +1075,9 @@ void IntlTest::errln(const char *fmt, ...)
va_list ap;
va_start(ap, fmt);
- vsprintf(buffer, fmt, ap);
+ vsnprintf(buffer, sizeof(buffer), fmt, ap);
va_end(ap);
- errln(UnicodeString(buffer, (const char *)NULL));
+ errln(UnicodeString(buffer, (const char *)nullptr));
}
void IntlTest::dataerrln(const char *fmt, ...)
@@ -1083,9 +1086,9 @@ void IntlTest::dataerrln(const char *fmt, ...)
va_list ap;
va_start(ap, fmt);
- vsprintf(buffer, fmt, ap);
+ vsnprintf(buffer, sizeof(buffer), fmt, ap);
va_end(ap);
- dataerrln(UnicodeString(buffer, (const char *)NULL));
+ dataerrln(UnicodeString(buffer, (const char *)nullptr));
}
void IntlTest::errcheckln(UErrorCode status, const char *fmt, ...)
@@ -1094,13 +1097,13 @@ void IntlTest::errcheckln(UErrorCode status, const char *fmt, ...)
va_list ap;
va_start(ap, fmt);
- vsprintf(buffer, fmt, ap);
+ vsnprintf(buffer, sizeof(buffer), fmt, ap);
va_end(ap);
if (status == U_FILE_ACCESS_ERROR || status == U_MISSING_RESOURCE_ERROR) {
- dataerrln(UnicodeString(buffer, (const char *)NULL));
+ dataerrln(UnicodeString(buffer, (const char *)nullptr));
} else {
- errln(UnicodeString(buffer, (const char *)NULL));
+ errln(UnicodeString(buffer, (const char *)nullptr));
}
}
@@ -1111,7 +1114,7 @@ void IntlTest::printErrors()
UBool IntlTest::printKnownIssues()
{
- if(knownList != NULL) {
+ if(knownList != nullptr) {
udbg_knownIssue_print(knownList);
udbg_knownIssue_close(knownList);
return true;
@@ -1132,7 +1135,7 @@ void IntlTest::LL_message( UnicodeString message, UBool newline )
// string that starts with a LineFeed character and continues
// with spaces according to the current indentation
- static const UChar indentUChars[] = {
+ static const char16_t indentUChars[] = {
'\n',
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
@@ -1158,7 +1161,7 @@ void IntlTest::LL_message( UnicodeString message, UBool newline )
}
// replace each LineFeed by the indentation string
- message.findAndReplace(UnicodeString((UChar)'\n'), indent);
+ message.findAndReplace(UnicodeString((char16_t)'\n'), indent);
// stream out the message
length = message.extract(0, message.length(), buffer, sizeof(buffer));
@@ -1180,14 +1183,14 @@ void IntlTest::LL_message( UnicodeString message, UBool newline )
/**
* Print a usage message for this test class.
*/
-void IntlTest::usage( void )
+void IntlTest::usage()
{
UBool save_verbose = setVerbose( true );
logln("Test names:");
logln("-----------");
int32_t index = 0;
- const char* name = NULL;
+ const char* name = nullptr;
do{
this->runIndexedTest( index, false, name );
if (!name) break;
@@ -1233,13 +1236,13 @@ main(int argc, char* argv[])
UBool name = false;
UBool leaks = false;
UBool utf8 = false;
- const char *summary_file = NULL;
+ const char *summary_file = nullptr;
UBool warnOnMissingData = false;
UBool writeGoldenData = false;
UBool defaultDataFound = false;
int32_t threadCount = 12;
UErrorCode errorCode = U_ZERO_ERROR;
- UConverter *cnv = NULL;
+ UConverter *cnv = nullptr;
const char *warnOrErr = "Failure";
UDate startTime, endTime;
int32_t diffTime;
@@ -1497,7 +1500,7 @@ main(int argc, char* argv[])
if (all) {
major.runTest();
if (leaks) {
- major.run_phase2( NULL, NULL );
+ major.run_phase2( nullptr, nullptr );
}
}else{
for (int i = 1; i < argc; ++i) {
@@ -1506,7 +1509,7 @@ main(int argc, char* argv[])
fprintf(stdout, "\n=== Handling test: %s: ===\n", name);
char baseName[1024];
- sprintf(baseName, "/%s/", name);
+ snprintf(baseName, sizeof(baseName), "/%s/", name);
char* parameter = strchr( name, '@' );
if (parameter) {
@@ -1559,9 +1562,9 @@ main(int argc, char* argv[])
fprintf(stdout, "Errors in total: %ld.\n", (long)major.getErrors());
major.printErrors();
- if(summary_file != NULL) {
+ if(summary_file != nullptr) {
FILE *summf = fopen(summary_file, "w");
- if( summf != NULL) {
+ if( summf != nullptr) {
char buf[10000];
int32_t length = errorList.extract(0, errorList.length(), buf, sizeof(buf));
fwrite(buf, sizeof(*buf), length, (FILE*)summf);
@@ -1606,10 +1609,10 @@ main(int argc, char* argv[])
}
const char* IntlTest::loadTestData(UErrorCode& err){
- if ( _testDataPath == NULL){
- const char* directory=NULL;
- UResourceBundle* test =NULL;
- char* tdpath=NULL;
+ if ( _testDataPath == nullptr){
+ const char* directory=nullptr;
+ UResourceBundle* test =nullptr;
+ char* tdpath=nullptr;
const char* tdrelativepath;
#if defined (U_TOPBUILDDIR)
@@ -1622,7 +1625,7 @@ const char* IntlTest::loadTestData(UErrorCode& err){
tdpath = (char*) malloc(sizeof(char) *(( strlen(directory) * strlen(tdrelativepath)) + 100));
- if (tdpath == NULL) {
+ if (tdpath == nullptr) {
err = U_MEMORY_ALLOCATION_ERROR;
it_dataerrln((UnicodeString) "Could not allocate memory for _testDataPath " + u_errorName(err));
return "";
@@ -1658,7 +1661,7 @@ const char* IntlTest::getTestDataPath(UErrorCode& err) {
* Note: this function is parallel with C loadSourceTestData in cintltst.c
*/
const char *IntlTest::getSourceTestData(UErrorCode& /*err*/) {
- const char *srcDataDir = NULL;
+ const char *srcDataDir = nullptr;
#ifdef U_TOPSRCDIR
srcDataDir = U_TOPSRCDIR U_FILE_SEP_STRING"test" U_FILE_SEP_STRING "testdata" U_FILE_SEP_STRING;
#else
@@ -1684,7 +1687,7 @@ char *IntlTest::getUnidataPath(char path[]) {
strcpy(path, pathToDataDirectory());
strcat(path, "unidata" U_FILE_SEP_STRING "UnicodeData.txt");
FILE *f = fopen(path, "r");
- if(f != NULL) {
+ if(f != nullptr) {
fclose(f);
*(strchr(path, 0) - kUnicodeDataTxtLength) = 0; // Remove the basename.
return path;
@@ -1701,7 +1704,7 @@ char *IntlTest::getUnidataPath(char path[]) {
it_errln(UnicodeString(
"unable to find path to source/data/unidata/ and loadTestData() failed: ") +
u_errorName(errorCode));
- return NULL;
+ return nullptr;
}
strcpy(path, testDataPath);
strcat(path, U_FILE_SEP_STRING ".." U_FILE_SEP_STRING ".."
@@ -1711,21 +1714,21 @@ char *IntlTest::getUnidataPath(char path[]) {
strcat(path, U_FILE_SEP_STRING);
strcat(path, "unidata" U_FILE_SEP_STRING "UnicodeData.txt");
f = fopen(path, "r");
- if(f != NULL) {
+ if(f != nullptr) {
fclose(f);
*(strchr(path, 0) - kUnicodeDataTxtLength) = 0; // Remove the basename.
return path;
}
- return NULL;
+ return nullptr;
}
-const char* IntlTest::fgDataDir = NULL;
+const char* IntlTest::fgDataDir = nullptr;
/* returns the path to icu/source/data */
const char * IntlTest::pathToDataDirectory()
{
- if(fgDataDir != NULL) {
+ if(fgDataDir != nullptr) {
return fgDataDir;
}
@@ -1757,12 +1760,12 @@ const char * IntlTest::pathToDataDirectory()
/* Only Windows should end up here, so looking for '\' is safe. */
for (i=1; i<=3; i++) {
pBackSlash = strrchr(p, U_FILE_SEP_CHAR);
- if (pBackSlash != NULL) {
+ if (pBackSlash != nullptr) {
*pBackSlash = 0; /* Truncate the string at the '\' */
}
}
- if (pBackSlash != NULL) {
+ if (pBackSlash != nullptr) {
/* We found and truncated three names from the path.
* Now append "source\data" and set the environment
*/
@@ -1877,18 +1880,18 @@ uint32_t IntlTest::icu_rand::getSeed() {
-static inline UChar toHex(int32_t i) {
- return (UChar)(i + (i < 10 ? 0x30 : (0x41 - 10)));
+static inline char16_t toHex(int32_t i) {
+ return (char16_t)(i + (i < 10 ? 0x30 : (0x41 - 10)));
}
static UnicodeString& escape(const UnicodeString& s, UnicodeString& result) {
for (int32_t i=0; i<s.length(); ++i) {
- UChar c = s[i];
- if (c <= (UChar)0x7F) {
+ char16_t c = s[i];
+ if (c <= (char16_t)0x7F) {
result += c;
} else {
- result += (UChar)0x5c;
- result += (UChar)0x75;
+ result += (char16_t)0x5c;
+ result += (char16_t)0x75;
result += toHex((c >> 12) & 0xF);
result += toHex((c >> 8) & 0xF);
result += toHex((c >> 4) & 0xF);
@@ -1901,7 +1904,7 @@ static UnicodeString& escape(const UnicodeString& s, UnicodeString& result) {
#define VERBOSE_ASSERTIONS
UBool IntlTest::assertTrue(const char* message, UBool condition, UBool quiet, UBool possibleDataError, const char *file, int line) {
- if (file != NULL) {
+ if (file != nullptr) {
if (!condition) {
if (possibleDataError) {
dataerrln("%s:%d: FAIL: assertTrue() failed: %s", file, line, message);
@@ -1940,7 +1943,7 @@ UBool IntlTest::assertFalse(const char* message, UBool condition, UBool quiet, U
}
UBool IntlTest::assertSuccess(const char* message, UErrorCode ec, UBool possibleDataError, const char *file, int line) {
- if( file==NULL ) {
+ if( file==nullptr ) {
file = ""; // prevent failure if no file given
}
if (U_FAILURE(ec)) {
@@ -2311,7 +2314,7 @@ void IntlTest::setProperty(const char* propline) {
}
const char* IntlTest::getProperty(const char* prop) {
- const char* val = NULL;
+ const char* val = nullptr;
for (int32_t i = 0; i < numProps; i++) {
int32_t plen = static_cast<int32_t>(uprv_strlen(prop));
if ((int32_t)uprv_strlen(proplines[i]) > plen + 1
@@ -2327,7 +2330,7 @@ const char* IntlTest::getProperty(const char* prop) {
//-------------------------------------------------------------------------------
//
// ReadAndConvertFile Read a text data file, convert it to UChars, and
-// return the data in one big UChar * buffer, which the caller must delete.
+// return the data in one big char16_t * buffer, which the caller must delete.
//
// parameters:
// fileName: the name of the file, with no directory part. The test data directory
@@ -2335,20 +2338,20 @@ const char* IntlTest::getProperty(const char* prop) {
// ulen an out parameter, receives the actual length (in UChars) of the file data.
// encoding The file encoding. If the file contains a BOM, that will override the encoding
// specified here. The BOM, if it exists, will be stripped from the returned data.
-// Pass NULL for the system default encoding.
+// Pass nullptr for the system default encoding.
// status
// returns:
-// The file data, converted to UChar.
+// The file data, converted to char16_t.
// The caller must delete this when done with
// delete [] theBuffer;
//
//
//--------------------------------------------------------------------------------
-UChar *IntlTest::ReadAndConvertFile(const char *fileName, int &ulen, const char *encoding, UErrorCode &status) {
- UChar *retPtr = NULL;
- char *fileBuf = NULL;
- UConverter* conv = NULL;
- FILE *f = NULL;
+char16_t *IntlTest::ReadAndConvertFile(const char *fileName, int &ulen, const char *encoding, UErrorCode &status) {
+ char16_t *retPtr = nullptr;
+ char *fileBuf = nullptr;
+ UConverter* conv = nullptr;
+ FILE *f = nullptr;
ulen = 0;
if (U_FAILURE(status)) {
@@ -2362,7 +2365,7 @@ UChar *IntlTest::ReadAndConvertFile(const char *fileName, int &ulen, const char
if (f == 0) {
dataerrln("Error opening test data file %s\n", fileName);
status = U_FILE_ACCESS_ERROR;
- return NULL;
+ return nullptr;
}
//
// Read it in
@@ -2390,7 +2393,7 @@ UChar *IntlTest::ReadAndConvertFile(const char *fileName, int &ulen, const char
fileBufC = fileBuf;
bomEncoding = ucnv_detectUnicodeSignature(
fileBuf, fileSize, &signatureLength, &status);
- if(bomEncoding!=NULL ){
+ if(bomEncoding!=nullptr ){
fileBufC += signatureLength;
fileSize -= signatureLength;
encoding = bomEncoding;
@@ -2405,11 +2408,11 @@ UChar *IntlTest::ReadAndConvertFile(const char *fileName, int &ulen, const char
}
//
- // Convert the rules to UChar.
+ // Convert the rules to char16_t.
// Preflight first to determine required buffer size.
//
ulen = ucnv_toUChars(conv,
- NULL, // dest,
+ nullptr, // dest,
0, // destCapacity,
fileBufC,
fileSize,
@@ -2418,7 +2421,7 @@ UChar *IntlTest::ReadAndConvertFile(const char *fileName, int &ulen, const char
// Buffer Overflow is expected from the preflight operation.
status = U_ZERO_ERROR;
- retPtr = new UChar[ulen+1];
+ retPtr = new char16_t[ulen+1];
ucnv_toUChars(conv,
retPtr, // dest,
ulen+1,
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/intltest.h b/Build/source/libs/icu/icu-src/source/test/intltest/intltest.h
index 31bbe1f13d8..32f468e3fa7 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/intltest.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/intltest.h
@@ -32,7 +32,7 @@ U_NAMESPACE_USE
//-----------------------------------------------------------------------------
//convenience classes to ease porting code that uses the Java
//string-concatenation operator (moved from findword test by rtg)
-UnicodeString UCharToUnicodeString(UChar c);
+UnicodeString UCharToUnicodeString(char16_t c);
UnicodeString Int64ToUnicodeString(int64_t num);
UnicodeString DoubleToUnicodeString(double num);
//UnicodeString operator+(const UnicodeString& left, int64_t num); // Some compilers don't allow this because of the long type.
@@ -142,7 +142,7 @@ public:
IntlTest();
// TestLog has a virtual destructor.
- virtual UBool runTest( char* name = NULL, char* par = NULL, char *baseName = NULL); // not to be overridden
+ virtual UBool runTest( char* name = nullptr, char* par = nullptr, char *baseName = nullptr); // not to be overridden
virtual UBool setVerbose( UBool verbose = true );
virtual UBool setNoErrMsg( UBool no_err_msg = true );
@@ -153,8 +153,8 @@ public:
virtual UBool setWriteGoldenData( UBool write_golden_data = true );
virtual int32_t setThreadCount( int32_t count = 1);
- virtual int32_t getErrors( void );
- virtual int32_t getDataErrors (void );
+ virtual int32_t getErrors();
+ virtual int32_t getDataErrors();
virtual void setCaller( IntlTest* callingTest ); // for internal use only
virtual void setPath( char* path ); // for internal use only
@@ -163,7 +163,7 @@ public:
virtual void logln( const UnicodeString &message ) override;
- virtual void logln( void );
+ virtual void logln();
/**
* Logs that an issue is known. Can be called multiple times.
@@ -201,9 +201,9 @@ public:
virtual void infoln( const UnicodeString &message );
- virtual void infoln( void );
+ virtual void infoln();
- virtual void err(void);
+ virtual void err();
virtual void err( const UnicodeString &message );
@@ -239,7 +239,7 @@ public:
// print known issues. return true if there were any.
UBool printKnownIssues();
- virtual void usage( void ) ;
+ virtual void usage() ;
/**
* Returns a uniform random value x, with 0.0 <= x < 1.0. Use
@@ -287,13 +287,13 @@ public:
virtual const char* getProperty(const char* prop);
/* JUnit-like assertions. Each returns true if it succeeds. */
- UBool assertTrue(const char* message, UBool condition, UBool quiet=false, UBool possibleDataError=false, const char *file=NULL, int line=0);
+ UBool assertTrue(const char* message, UBool condition, UBool quiet=false, UBool possibleDataError=false, const char *file=nullptr, int line=0);
UBool assertFalse(const char* message, UBool condition, UBool quiet=false, UBool possibleDataError=false);
/**
* @param possibleDataError - if true, use dataerrln instead of errcheckln on failure
* @return true on success, false on failure.
*/
- UBool assertSuccess(const char* message, UErrorCode ec, UBool possibleDataError=false, const char *file=NULL, int line=0);
+ UBool assertSuccess(const char* message, UErrorCode ec, UBool possibleDataError=false, const char *file=nullptr, int line=0);
UBool assertEquals(const char* message, const UnicodeString& expected,
const UnicodeString& actual, UBool possibleDataError=false);
UBool assertEquals(const char* message, const char* expected, const char* actual);
@@ -357,13 +357,13 @@ public:
const std::vector<std::string>& expected, const std::vector<std::string>& actual);
UBool assertNotEquals(const UnicodeString& message, int32_t expectedNot, int32_t actual);
- virtual void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ); // override !
+ virtual void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ); // override !
virtual UBool runTestLoop( char* testname, char* par, char *baseName );
- virtual int32_t IncErrorCount( void );
+ virtual int32_t IncErrorCount();
- virtual int32_t IncDataErrorCount( void );
+ virtual int32_t IncDataErrorCount();
virtual UBool callTest( IntlTest& testToBeCalled, char* par );
@@ -421,7 +421,7 @@ public:
virtual const char* getTestDataPath(UErrorCode& err) override;
static const char* getSourceTestData(UErrorCode& err);
static char *getUnidataPath(char path[]);
- UChar *ReadAndConvertFile(const char *fileName, int &ulen, const char *encoding, UErrorCode &status);
+ char16_t *ReadAndConvertFile(const char *fileName, int &ulen, const char *encoding, UErrorCode &status);
// static members
@@ -433,11 +433,11 @@ public:
void it_log( UnicodeString message );
void it_logln( UnicodeString message );
-void it_logln( void );
+void it_logln();
void it_info( UnicodeString message );
void it_infoln( UnicodeString message );
-void it_infoln( void );
-void it_err(void);
+void it_infoln();
+void it_err();
void it_err( UnicodeString message );
void it_errln( UnicodeString message );
void it_dataerr( UnicodeString message );
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/intltest.vcxproj b/Build/source/libs/icu/icu-src/source/test/intltest/intltest.vcxproj
index dd3cc6f1cbc..71ce1254038 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/intltest.vcxproj
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/intltest.vcxproj
@@ -177,6 +177,7 @@
<ClCompile Include="numbertest_doubleconversion.cpp" />
<ClCompile Include="numbertest_skeletons.cpp" />
<ClCompile Include="numbertest_range.cpp" />
+ <ClCompile Include="numbertest_simple.cpp" />
<ClCompile Include="numbertest_permutation.cpp" />
<ClCompile Include="numfmtst.cpp" />
<ClCompile Include="numfmtdatadriventest.cpp" />
@@ -290,6 +291,7 @@
<ClCompile Include="units_data_test.cpp" />
<ClCompile Include="units_router_test.cpp" />
<ClCompile Include="units_test.cpp" />
+ <ClCompile Include="uchar_type_build_test.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="colldata.h" />
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/intltest.vcxproj.filters b/Build/source/libs/icu/icu-src/source/test/intltest/intltest.vcxproj.filters
index ebf3c7ec2aa..5d8777c5aaf 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/intltest.vcxproj.filters
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/intltest.vcxproj.filters
@@ -298,6 +298,9 @@
<ClCompile Include="numbertest_range.cpp">
<Filter>formatting</Filter>
</ClCompile>
+ <ClCompile Include="numbertest_simple.cpp">
+ <Filter>formatting</Filter>
+ </ClCompile>
<ClCompile Include="numbertest_permutation.cpp">
<Filter>formatting</Filter>
</ClCompile>
@@ -565,6 +568,9 @@
<ClCompile Include="units_test.cpp">
<Filter>formatting</Filter>
</ClCompile>
+ <ClCompile Include="uchar_type_build_test.cpp">
+ <Filter>configuration</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="itrbbi.h">
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/itercoll.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/itercoll.cpp
index 207be63ac27..7a349bda76a 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/itercoll.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/itercoll.cpp
@@ -26,7 +26,7 @@ CollationIteratorTest::CollationIteratorTest()
: test1("What subset of all possible test cases?", ""),
test2("has the highest probability of detecting", "")
{
- en_us = (RuleBasedCollator *)Collator::createInstance(Locale::getUS(), status);
+ en_us = dynamic_cast<RuleBasedCollator*>(Collator::createInstance(Locale::getUS(), status));
if(U_FAILURE(status)) {
delete en_us;
en_us = 0;
@@ -48,7 +48,7 @@ CollationIteratorTest::~CollationIteratorTest()
void CollationIteratorTest::TestUnicodeChar()
{
CollationElementIterator *iter;
- UChar codepoint;
+ char16_t codepoint;
UnicodeString source;
for (codepoint = 1; codepoint < 0xFFFE;)
@@ -92,11 +92,11 @@ void CollationIteratorTest::TestPrevious(/* char* par */)
// Test with a contracting character sequence
UnicodeString source;
- RuleBasedCollator *c1 = NULL;
+ RuleBasedCollator *c1 = nullptr;
c1 = new RuleBasedCollator(
(UnicodeString)"&a,A < b,B < c,C, d,D < z,Z < ch,cH,Ch,CH", status);
- if (c1 == NULL || U_FAILURE(status))
+ if (c1 == nullptr || U_FAILURE(status))
{
errln("Couldn't create a RuleBasedCollator with a contracting sequence.");
delete c1;
@@ -110,10 +110,10 @@ void CollationIteratorTest::TestPrevious(/* char* par */)
delete c1;
// Test with an expanding character sequence
- RuleBasedCollator *c2 = NULL;
+ RuleBasedCollator *c2 = nullptr;
c2 = new RuleBasedCollator((UnicodeString)"&a < b < c/abd < d", status);
- if (c2 == NULL || U_FAILURE(status))
+ if (c2 == nullptr || U_FAILURE(status))
{
errln("Couldn't create a RuleBasedCollator with an expanding sequence.");
delete c2;
@@ -127,10 +127,10 @@ void CollationIteratorTest::TestPrevious(/* char* par */)
delete c2;
// Now try both
- RuleBasedCollator *c3 = NULL;
+ RuleBasedCollator *c3 = nullptr;
c3 = new RuleBasedCollator((UnicodeString)"&a < b < c/aba < d < z < ch", status);
- if (c3 == NULL || U_FAILURE(status))
+ if (c3 == nullptr || U_FAILURE(status))
{
errln("Couldn't create a RuleBasedCollator with both an expanding and a contracting sequence.");
delete c3;
@@ -150,7 +150,7 @@ void CollationIteratorTest::TestPrevious(/* char* par */)
if(U_FAILURE(status)){
errln("Couldn't create a collator");
}
- iter = ((RuleBasedCollator*)c4)->createCollationElementIterator(source);
+ iter = (dynamic_cast<RuleBasedCollator*>(c4))->createCollationElementIterator(source);
backAndForth(*iter);
delete iter;
delete c4;
@@ -158,7 +158,7 @@ void CollationIteratorTest::TestPrevious(/* char* par */)
source= CharsToUnicodeString("\\u0061\\u30CF\\u3099\\u30FC");
Collator *c5 = Collator::createInstance(Locale("ja", "JP", ""), status);
- iter = ((RuleBasedCollator*)c5)->createCollationElementIterator(source);
+ iter = (dynamic_cast<RuleBasedCollator*>(c5))->createCollationElementIterator(source);
if(U_FAILURE(status)){
errln("Couldn't create Japanese collator\n");
}
@@ -332,7 +332,7 @@ void CollationIteratorTest::TestSetText(/* char* par */)
|| iter1->next(status) != (int32_t)CollationElementIterator::NULLORDER) {
errln("Empty string should have no CEs.");
}
- ((StringCharacterIterator *)chariter)->setText(empty);
+ (dynamic_cast<StringCharacterIterator*>(chariter))->setText(empty);
iter1->setText(*chariter, status);
if (U_FAILURE(status)
|| iter1->next(status) != (int32_t)CollationElementIterator::NULLORDER) {
@@ -351,7 +351,7 @@ void CollationIteratorTest::TestMaxExpansion(/* char* par */)
UErrorCode status = U_ZERO_ERROR;
UnicodeString rule("&a < ab < c/aba < d < z < ch");
RuleBasedCollator *coll = new RuleBasedCollator(rule, status);
- UChar ch = 0;
+ char16_t ch = 0;
UnicodeString str(ch);
CollationElementIterator *iter = coll->createCollationElementIterator(str);
@@ -392,7 +392,7 @@ void CollationIteratorTest::TestClearBuffers(/* char* par */)
UErrorCode status = U_ZERO_ERROR;
RuleBasedCollator *c = new RuleBasedCollator((UnicodeString)"&a < b < c & ab = d", status);
- if (c == NULL || U_FAILURE(status))
+ if (c == nullptr || U_FAILURE(status))
{
errln("Couldn't create a RuleBasedCollator.");
delete c;
@@ -459,9 +459,9 @@ void CollationIteratorTest::TestAssignment()
{
UErrorCode status = U_ZERO_ERROR;
RuleBasedCollator *coll =
- (RuleBasedCollator *)Collator::createInstance(status);
+ dynamic_cast<RuleBasedCollator*>(Collator::createInstance(status));
- if (coll == NULL || U_FAILURE(status))
+ if (coll == nullptr || U_FAILURE(status))
{
errln("Couldn't create a default collator.");
return;
@@ -488,22 +488,23 @@ void CollationIteratorTest::TestAssignment()
CollationElementIterator *iter4
= coll->createCollationElementIterator(source);
CollationElementIterator iter5(*iter4);
+ int32_t order4, order5;
if (*iter4 != iter5) {
errln("collation iterator assignment does not produce the same elements");
}
- iter4->next(status);
+ order4 = iter4->next(status);
if (U_FAILURE(status) || *iter4 == iter5) {
errln("collation iterator not equal");
}
- iter5.next(status);
+ order5 = iter5.next(status);
if (U_FAILURE(status) || *iter4 != iter5) {
errln("collation iterator equal");
}
- iter4->next(status);
+ order4 = iter4->next(status);
if (U_FAILURE(status) || *iter4 == iter5) {
errln("collation iterator not equal");
}
- iter5.next(status);
+ order5 = iter5.next(status);
if (U_FAILURE(status) || *iter4 != iter5) {
errln("collation iterator equal");
}
@@ -511,21 +512,24 @@ void CollationIteratorTest::TestAssignment()
if (*iter4 != iter6) {
errln("collation iterator equal");
}
- iter4->next(status);
+ order4 = iter4->next(status);
if (U_FAILURE(status) || *iter4 == iter5) {
errln("collation iterator not equal");
}
- iter5.next(status);
+ order5 = iter5.next(status);
if (U_FAILURE(status) || *iter4 != iter5) {
errln("collation iterator equal");
}
- iter4->next(status);
- if (U_FAILURE(status) || *iter4 == iter5) {
- errln("collation iterator not equal");
- }
- iter5.next(status);
- if (U_FAILURE(status) || *iter4 != iter5) {
- errln("collation iterator equal");
+ if (!(order4 == CollationElementIterator::NULLORDER &&
+ order5 == CollationElementIterator::NULLORDER)) {
+ order4 = iter4->next(status);
+ if (U_FAILURE(status) || *iter4 == iter5) {
+ errln("collation iterator not equal");
+ }
+ order5 = iter5.next(status);
+ if (U_FAILURE(status) || *iter4 != iter5) {
+ errln("collation iterator equal");
+ }
}
delete iter1;
delete iter4;
@@ -539,8 +543,8 @@ void CollationIteratorTest::TestConstructors()
{
UErrorCode status = U_ZERO_ERROR;
RuleBasedCollator *coll =
- (RuleBasedCollator *)Collator::createInstance(status);
- if (coll == NULL || U_FAILURE(status))
+ dynamic_cast<RuleBasedCollator*>(Collator::createInstance(status));
+ if (coll == nullptr || U_FAILURE(status))
{
errln("Couldn't create a default collator.");
return;
@@ -596,8 +600,8 @@ void CollationIteratorTest::TestStrengthOrder()
UErrorCode status = U_ZERO_ERROR;
RuleBasedCollator *coll =
- (RuleBasedCollator *)Collator::createInstance(status);
- if (coll == NULL || U_FAILURE(status))
+ dynamic_cast<RuleBasedCollator*>(Collator::createInstance(status));
+ if (coll == nullptr || U_FAILURE(status))
{
errln("Couldn't create a default collator.");
return;
@@ -607,7 +611,7 @@ void CollationIteratorTest::TestStrengthOrder()
CollationElementIterator *iter =
coll->createCollationElementIterator(test1);
- if (iter == NULL) {
+ if (iter == nullptr) {
errln("Couldn't create a collation element iterator from default collator");
return;
}
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/itercoll.h b/Build/source/libs/icu/icu-src/source/test/intltest/itercoll.h
index fc28c72e7dc..87a573c33d7 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/itercoll.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/itercoll.h
@@ -33,7 +33,7 @@ public:
CollationIteratorTest();
virtual ~CollationIteratorTest();
- void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par = NULL) override;
+ void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par = nullptr) override;
/**
* Test that results from CollationElementIterator.next is equivalent to
@@ -93,7 +93,7 @@ private:
struct ExpansionRecord
{
- UChar character;
+ char16_t character;
int32_t count;
};
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/itformat.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/itformat.cpp
index 08f725adc14..5c67d189bea 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/itformat.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/itformat.cpp
@@ -94,7 +94,7 @@ extern IntlTest *createDisplayOptionsTest();
void IntlTestFormat::runIndexedTest( int32_t index, UBool exec, const char* &name, char* par )
{
// for all format tests, always set default Locale and TimeZone to ENGLISH and PST.
- TimeZone* saveDefaultTimeZone = NULL;
+ TimeZone* saveDefaultTimeZone = nullptr;
Locale saveDefaultLocale = Locale::getDefault();
if (exec) {
saveDefaultTimeZone = TimeZone::createDefault();
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/itformat.h b/Build/source/libs/icu/icu-src/source/test/intltest/itformat.h
index 49056d38fb9..2c7a65a2633 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/itformat.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/itformat.h
@@ -22,7 +22,7 @@
class IntlTestFormat: public IntlTest {
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
};
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/itmajor.h b/Build/source/libs/icu/icu-src/source/test/intltest/itmajor.h
index f712e277384..2c34b84b83d 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/itmajor.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/itmajor.h
@@ -18,11 +18,11 @@
class MajorTestLevel: public IntlTest {
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
};
class IntlTestNormalize: public IntlTest {
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
};
#endif
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/itrbbi.h b/Build/source/libs/icu/icu-src/source/test/intltest/itrbbi.h
index a7ae7de8ff1..6a79f0ee8df 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/itrbbi.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/itrbbi.h
@@ -25,7 +25,7 @@
class IntlTestRBBI: public IntlTest {
public:
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
};
#endif /* #if !UCONFIG_NO_BREAK_ITERATION && !UCONFIG_NO_REGULAR_EXPRESSIONS */
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/itrbnf.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/itrbnf.cpp
index 3db1350ae0c..3a2383bcd05 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/itrbnf.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/itrbnf.cpp
@@ -93,7 +93,7 @@ void IntlTestRBNF::runIndexedTest(int32_t index, UBool exec, const char* &name,
void IntlTestRBNF::TestHebrewFraction() {
// this is the expected output for 123.45, with no '<' in it.
- UChar text1[] = {
+ char16_t text1[] = {
0x05de, 0x05d0, 0x05d4, 0x0020,
0x05e2, 0x05e9, 0x05e8, 0x05d9, 0x05dd, 0x0020,
0x05d5, 0x05e9, 0x05dc, 0x05d5, 0x05e9, 0x0020,
@@ -101,7 +101,7 @@ void IntlTestRBNF::TestHebrewFraction() {
0x05d0, 0x05e8, 0x05d1, 0x05e2, 0x0020,
0x05d7, 0x05de, 0x05e9, 0x0000,
};
- UChar text2[] = {
+ char16_t text2[] = {
0x05DE, 0x05D0, 0x05D4, 0x0020,
0x05E2, 0x05E9, 0x05E8, 0x05D9, 0x05DD, 0x0020,
0x05D5, 0x05E9, 0x05DC, 0x05D5, 0x05E9, 0x0020,
@@ -169,7 +169,7 @@ IntlTestRBNF::TestAPI() {
{
logln("Testing Clone");
RuleBasedNumberFormat* rbnfClone = formatter->clone();
- if(rbnfClone != NULL) {
+ if(rbnfClone != nullptr) {
if(!(*rbnfClone == *formatter)) {
errln("Clone should be semantically equivalent to the original!");
}
@@ -198,18 +198,18 @@ IntlTestRBNF::TestAPI() {
} else {
int32_t ruleLen = 0;
int32_t len = 0;
- LocalUResourceBundlePointer rbnfRules(ures_getByKey(en.getAlias(), "RBNFRules", NULL, &status));
- LocalUResourceBundlePointer ruleSets(ures_getByKey(rbnfRules.getAlias(), "SpelloutRules", NULL, &status));
+ LocalUResourceBundlePointer rbnfRules(ures_getByKey(en.getAlias(), "RBNFRules", nullptr, &status));
+ LocalUResourceBundlePointer ruleSets(ures_getByKey(rbnfRules.getAlias(), "SpelloutRules", nullptr, &status));
UnicodeString desc;
while (ures_hasNext(ruleSets.getAlias())) {
- const UChar* currentString = ures_getNextString(ruleSets.getAlias(), &len, NULL, &status);
+ const char16_t* currentString = ures_getNextString(ruleSets.getAlias(), &len, nullptr, &status);
ruleLen += len;
desc.append(currentString);
}
- const UChar *spelloutRules = desc.getTerminatedBuffer();
+ const char16_t *spelloutRules = desc.getTerminatedBuffer();
- if(U_FAILURE(status) || ruleLen == 0 || spelloutRules == NULL) {
+ if(U_FAILURE(status) || ruleLen == 0 || spelloutRules == nullptr) {
errln("Unable to access the rules string!");
} else {
UParseError perror;
@@ -415,7 +415,7 @@ void IntlTestRBNF::TestMultiplePluralRules() {
{ "2.2", "two plurality two tenth" },
{ "0.01", "one 1hundredth" },
{ "0.02", "two hundredth" },
- { NULL, NULL }
+ { nullptr, nullptr }
};
doTest(&formatter, testData, true);
}
@@ -457,14 +457,14 @@ void IntlTestRBNF::TestFractionalRuleSet()
int len = fracRules.length();
int change = 2;
for (int i = 0; i < len; ++i) {
- UChar ch = fracRules.charAt(i);
+ char16_t ch = fracRules.charAt(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) {
- fracRules.setCharAt(i, (UChar)0x200e);
+ fracRules.setCharAt(i, (char16_t)0x200e);
}
} else {
if (change == 1) {
@@ -503,7 +503,7 @@ void IntlTestRBNF::TestFractionalRuleSet()
{ ".4444", "4/9" },
{ ".5555", "5/9" },
{ "1.2856", "1 2/7" },
- { NULL, NULL }
+ { nullptr, nullptr }
};
doTest(&formatter, testData, false); // exact values aren't parsable from fractions
}
@@ -1099,12 +1099,12 @@ void IntlTestRBNF::TestLLong()
#endif
// u_atoll
- const UChar uempty[] = { 0 };
- const UChar uzero[] = { 0x30, 0 };
- const UChar uneg_one[] = { 0x2d, 0x31, 0 };
- const UChar uneg_12345[] = { 0x2d, 0x31, 0x32, 0x33, 0x34, 0x35, 0 };
- const UChar ubig1[] = { 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x30, 0 };
- const UChar ubig2[] = { 0x66, 0x46, 0x66, 0x46, 0x66, 0x46, 0x66, 0x46, 0x66, 0x46, 0x66, 0x46, 0x66, 0x46, 0x66, 0x46, 0 };
+ const char16_t uempty[] = { 0 };
+ const char16_t uzero[] = { 0x30, 0 };
+ const char16_t uneg_one[] = { 0x2d, 0x31, 0 };
+ const char16_t uneg_12345[] = { 0x2d, 0x31, 0x32, 0x33, 0x34, 0x35, 0 };
+ const char16_t ubig1[] = { 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x30, 0 };
+ const char16_t ubig2[] = { 0x66, 0x46, 0x66, 0x46, 0x66, 0x46, 0x66, 0x46, 0x66, 0x46, 0x66, 0x46, 0x66, 0x46, 0x66, 0x46, 0 };
LLAssert(llong::utoll(uempty) == llong(0, 0));
LLAssert(llong::utoll(uzero) == llong(0, 0));
LLAssert(llong::utoll(uneg_one) == llong(0xffffffff, 0xffffffff));
@@ -1127,7 +1127,7 @@ void IntlTestRBNF::TestLLong()
logln("Testing u_lltoa");
// u_lltoa
{
- UChar buf[64];
+ char16_t buf[64];
LLAssert((llong(0, 0).lltou(buf, (uint32_t)sizeof(buf)) == 1) && (u_strcmp(buf, uzero) == 0));
LLAssert((llong(0xffffffff, 0xffffffff).lltou(buf, (uint32_t)sizeof(buf)) == 2) && (u_strcmp(buf, uneg_one) == 0));
LLAssert(((-llong(0, 12345)).lltou(buf, (uint32_t)sizeof(buf)) == 6) && (u_strcmp(buf, uneg_12345) == 0));
@@ -1168,7 +1168,7 @@ IntlTestRBNF::TestEnglishSpellout()
{ "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" },
- { NULL, NULL}
+ { nullptr, nullptr}
};
doTest(formatter, testData, true);
@@ -1182,7 +1182,7 @@ IntlTestRBNF::TestEnglishSpellout()
{ "2 thousand six HUNDRED fifty-7", "2,657" },
{ "fifteen hundred and zero", "1,500" },
{ "FOurhundred thiRTY six", "436" },
- { NULL, NULL}
+ { nullptr, nullptr}
};
doLenientParseTest(formatter, lpTestData);
#endif
@@ -1218,7 +1218,7 @@ IntlTestRBNF::TestOrdinalAbbreviations()
{ "102", "102nd" },
{ "312", "312th" },
{ "12,345", "12,345th" },
- { NULL, NULL}
+ { nullptr, nullptr}
};
doTest(formatter, testData, false);
@@ -1248,16 +1248,23 @@ IntlTestRBNF::TestDurations()
// { "3,600", "1:00:00" },
{ "3,740", "1:02:20" },
{ "10,293", "2:51:33" },
- { NULL, NULL}
+ { nullptr, nullptr}
};
-
doTest(formatter, testData, true);
+ static const char* const fractionalTestData[][2] = {
+ { "1234", "20:34" },
+ { "1234.2", "20:34" },
+ { "1234.7", "20:35" },
+ { nullptr, nullptr }
+ };
+ doTest(formatter, fractionalTestData, false);
+
#if !UCONFIG_NO_COLLATION
formatter->setLenient(true);
static const char* lpTestData[][2] = {
{ "2-51-33", "10,293" },
- { NULL, NULL}
+ { nullptr, nullptr}
};
doLenientParseTest(formatter, lpTestData);
#endif
@@ -1297,7 +1304,7 @@ IntlTestRBNF::TestSpanishSpellout()
{ "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" },
- { NULL, NULL}
+ { nullptr, nullptr}
};
doTest(formatter, testData, true);
@@ -1342,7 +1349,7 @@ IntlTestRBNF::TestFrenchSpellout()
{ "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" },
- { NULL, NULL}
+ { nullptr, nullptr}
};
doTest(formatter, testData, true);
@@ -1352,7 +1359,7 @@ IntlTestRBNF::TestFrenchSpellout()
static const char* lpTestData[][2] = {
{ "trente-et-un", "31" },
{ "un cent quatre vingt dix huit", "198" },
- { NULL, NULL}
+ { nullptr, nullptr}
};
doLenientParseTest(formatter, lpTestData);
#endif
@@ -1387,7 +1394,7 @@ static const char* const swissFrenchTestData[][2] = {
{ "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" },
- { NULL, NULL}
+ { nullptr, nullptr}
};
void
@@ -1435,7 +1442,7 @@ static const char* const belgianFrenchTestData[][2] = {
{ "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" },
- { NULL, NULL}
+ { nullptr, nullptr}
};
@@ -1489,7 +1496,7 @@ IntlTestRBNF::TestItalianSpellout()
{ "15,943", "quindici\\u00ADmila\\u00ADnove\\u00ADcento\\u00ADquaranta\\u00ADtr\\u00E9" },
{ "-36", "meno trenta\\u00ADsei" },
{ "234.567", "due\\u00ADcento\\u00ADtrenta\\u00ADquattro virgola cinque sei sette" },
- { NULL, NULL}
+ { nullptr, nullptr}
};
doTest(formatter, testData, true);
@@ -1528,7 +1535,7 @@ IntlTestRBNF::TestPortugueseSpellout()
{ "15,943", "quinze mil novecentos e quarenta e tr\\u00EAs" },
{ "-36", "menos trinta e seis" },
{ "234.567", "duzentos e trinta e quatro v\\u00EDrgula cinco seis sete" },
- { NULL, NULL}
+ { nullptr, nullptr}
};
doTest(formatter, testData, true);
@@ -1563,7 +1570,7 @@ IntlTestRBNF::TestGermanSpellout()
{ "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\\u00ADsechs\\u00ADhundert\\u00ADacht\\u00ADund\\u00ADsiebzig" },
- { NULL, NULL}
+ { nullptr, nullptr}
};
doTest(formatter, testData, true);
@@ -1572,7 +1579,7 @@ IntlTestRBNF::TestGermanSpellout()
formatter->setLenient(true);
static const char* lpTestData[][2] = {
{ "ein Tausend sechs Hundert fuenfunddreissig", "1,635" },
- { NULL, NULL}
+ { nullptr, nullptr}
};
doLenientParseTest(formatter, lpTestData);
#endif
@@ -1598,7 +1605,7 @@ IntlTestRBNF::TestThaiSpellout()
{ "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" },
- { NULL, NULL}
+ { nullptr, nullptr}
};
doTest(formatter, testData, true);
@@ -1629,7 +1636,7 @@ IntlTestRBNF::TestNorwegianSpellout()
{ "1,100", "tusen hundre" },
{ "6.789", "seks komma sju \\u00E5tte ni" },
{ "-5.678", "minus fem komma seks sju \\u00E5tte" },
- { NULL, NULL }
+ { nullptr, nullptr }
};
doTest(noFormatter, testDataDefault, true);
doTest(nbFormatter, testDataDefault, true);
@@ -1668,7 +1675,7 @@ IntlTestRBNF::TestSwedishSpellout()
{ "12,345,678", "tolv miljoner tre\\u00adhundra\\u00adfyrtio\\u00adfem\\u00adtusen sex\\u00adhundra\\u00adsjuttio\\u00ad\\u00e5tta" },
{ "123,456.789", "ett\\u00adhundra\\u00adtjugo\\u00adtre\\u00adtusen fyra\\u00adhundra\\u00adfemtio\\u00adsex komma sju \\u00e5tta nio" },
{ "-12,345.678", "minus tolv\\u00adtusen tre\\u00adhundra\\u00adfyrtio\\u00adfem komma sex sju \\u00e5tta" },
- { NULL, NULL }
+ { nullptr, nullptr }
};
doTest(formatter, testDataDefault, true);
@@ -1678,7 +1685,7 @@ IntlTestRBNF::TestSwedishSpellout()
{ "1,101", "et\\u00adtusen ett\\u00adhundra\\u00adett" },
{ "10,001", "tio\\u00adtusen ett" },
{ "21,001", "tjugo\\u00adet\\u00adtusen ett" },
- { NULL, NULL }
+ { nullptr, nullptr }
};
formatter->setDefaultRuleSet("%spellout-cardinal-neuter", status);
@@ -1699,7 +1706,7 @@ IntlTestRBNF::TestSwedishSpellout()
{ "1,234", "tolv\\u00adhundra\\u00adtrettio\\u00adfyra" },
{ "2,001", "tjugo\\u00adhundra\\u00adett" },
{ "10,001", "tio\\u00adtusen ett" },
- { NULL, NULL }
+ { nullptr, nullptr }
};
status = U_ZERO_ERROR;
@@ -1758,7 +1765,7 @@ IntlTestRBNF::TestSmallValues()
{ "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" },
- { NULL, NULL }
+ { nullptr, nullptr }
};
doTest(formatter, testDataDefault, true);
@@ -1768,7 +1775,7 @@ IntlTestRBNF::TestSmallValues()
}
void
-IntlTestRBNF::TestLocalizations(void)
+IntlTestRBNF::TestLocalizations()
{
int i;
UnicodeString rules("%main:0:no;1:some;100:a lot;1000:tons;\n"
@@ -1786,7 +1793,7 @@ IntlTestRBNF::TestLocalizations(void)
{ "5", "yah, some" },
{ "423", "plenty" },
{ "12345", "more'n you'll ever need" },
- { NULL, NULL }
+ { nullptr, nullptr }
};
doTest(&formatter, testData, false);
}
@@ -1798,7 +1805,7 @@ IntlTestRBNF::TestLocalizations(void)
{ "5", "some" },
{ "423", "a lot" },
{ "12345", "tons" },
- { NULL, NULL }
+ { nullptr, nullptr }
};
RuleBasedNumberFormat formatter0(rules, loc, perror, status);
if (U_FAILURE(status)) {
@@ -2003,7 +2010,7 @@ IntlTestRBNF::TestAllLocales()
}
void
-IntlTestRBNF::TestMultiplierSubstitution(void) {
+IntlTestRBNF::TestMultiplierSubstitution() {
UnicodeString rules("=#,##0=;1,000,000: <##0.###< million;");
UErrorCode status = U_ZERO_ERROR;
UParseError parse_error;
@@ -2091,7 +2098,7 @@ void IntlTestRBNF::TestPluralRules() {
{ "22", "22nd" },
{ "23", "23rd" },
{ "24", "24th" },
- { NULL, NULL }
+ { nullptr, nullptr }
};
doTest(&enFormatter, enTestData, true);
@@ -2152,7 +2159,7 @@ void IntlTestRBNF::TestPluralRules() {
{ "21,000", "twenty-one thousand" },
{ "22,000", "twenty-two thousands" },
{ "25,001", "twenty-five thousandss one" },
- { NULL, NULL }
+ { nullptr, nullptr }
};
if (U_FAILURE(status)) {
@@ -2184,7 +2191,7 @@ void IntlTestRBNF::TestInfinityNaN() {
{"\\u221E", "infinite"},
{"-\\u221E", "minus infinite"},
{"NaN", "not a number"},
- { NULL, NULL }
+ { nullptr, nullptr }
};
if (U_FAILURE(status)) {
dataerrln("Unable to create RuleBasedNumberFormat - " + UnicodeString(u_errorName(status)));
@@ -2207,7 +2214,7 @@ void IntlTestRBNF::TestInfinityNaN() {
{"\\u221E", "\\u221E"},
{"-\\u221E", "-\\u221E"},
{"NaN", "NaN"},
- { NULL, NULL }
+ { nullptr, nullptr }
};
doTest(&enFormatter2, enDefaultTestData, true);
@@ -2237,7 +2244,7 @@ void IntlTestRBNF::TestVariableDecimalPoint() {
{"1.1", "one point one"},
{"1.23", "one point two three"},
{"0.4", "xpoint four"},
- { NULL, NULL }
+ { nullptr, nullptr }
};
if (U_FAILURE(status)) {
dataerrln("Unable to create RuleBasedNumberFormat - " + UnicodeString(u_errorName(status)));
@@ -2252,7 +2259,7 @@ void IntlTestRBNF::TestVariableDecimalPoint() {
{"1.1", "one comma one"},
{"1.23", "one comma two three"},
{"0.4", "xcomma four"},
- { NULL, NULL }
+ { nullptr, nullptr }
};
doTest(&enFormatter, enTestCommaData, true);
}
@@ -2280,7 +2287,7 @@ void IntlTestRBNF::TestLargeNumbers() {
{"9223372036854775806", "9,223,372,036,854,775,806"}, // Maximum 64-bit precision - 1
{"9223372036854775807", "9,223,372,036,854,775,807"}, // Maximum 64-bit precision
{"9223372036854775808", "9,223,372,036,854,775,808"}, // We've gone beyond 64-bit precision. This can only be represented with BigDecimal.
- { NULL, NULL }
+ { nullptr, nullptr }
};
doTest(&rbnf, enTestFullData, false);
}
@@ -2315,7 +2322,7 @@ void IntlTestRBNF::TestCompactDecimalFormatStyle() {
{"10000000000000000", "10.00 Q"}, // Number doesn't precisely fit into a double
{"9223372036854775807", "9223.00 Q"}, // Maximum 64-bit precision
{"9223372036854775808", "9,223,372,036,854,775,808"}, // We've gone beyond 64-bit precision. This can only be represented with BigDecimal.
- { NULL, NULL }
+ { nullptr, nullptr }
};
doTest(&rbnf, enTestFullData, false);
}
@@ -2323,7 +2330,7 @@ void IntlTestRBNF::TestCompactDecimalFormatStyle() {
void IntlTestRBNF::TestParseFailure() {
UErrorCode status = U_ZERO_ERROR;
RuleBasedNumberFormat rbnf(URBNF_SPELLOUT, Locale::getJapanese(), status);
- static const UChar* testData[] = {
+ static const char16_t* testData[] = {
u"・・・・・・・・・・・・・・・・・・・・・・・・"
};
if (assertSuccess("", status, true, __FILE__, __LINE__)) {
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/itrbnfp.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/itrbnfp.cpp
index 62e97fa8bff..4e224488e21 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/itrbnfp.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/itrbnfp.cpp
@@ -98,7 +98,7 @@ IntlTestRBNFParse::TestParse() {
"===",
"=foo=",
- NULL,
+ nullptr,
};
// these rules would throw exceptions when formatting, if we could throw exceptions
@@ -107,14 +107,14 @@ IntlTestRBNFParse::TestParse() {
"11: << x", // formatting a multiple of 10 causes rollback rule to fail
"%%foo: 0 foo; 10: =%%bar=; %%bar: 0: bar; 10: =%%foo=;",
- NULL,
+ nullptr,
};
// none of these rules should crash the formatter
const char** allrules[] = {
okrules,
exceptrules,
- NULL,
+ nullptr,
};
for (int j = 0; allrules[j]; ++j) {
@@ -149,8 +149,8 @@ IntlTestRBNFParse::testfmt(RuleBasedNumberFormat* formatter, double val, UErrorC
UnicodeString us;
formatter->format((const Formattable)val, us, status);
if (U_SUCCESS(status)) {
- us.insert(0, (UChar)'"');
- us.append((UChar)'"');
+ us.insert(0, (char16_t)'"');
+ us.append((char16_t)'"');
logln(us);
} else {
logln("error: could not format %g, returned status: %d", val, status);
@@ -162,8 +162,8 @@ IntlTestRBNFParse::testfmt(RuleBasedNumberFormat* formatter, int val, UErrorCode
UnicodeString us;
formatter->format((const Formattable)(int32_t)val, us, status);
if (U_SUCCESS(status)) {
- us.insert(0, (UChar)'"');
- us.append((UChar)'"');
+ us.insert(0, (char16_t)'"');
+ us.append((char16_t)'"');
logln(us);
} else {
logln("error: could not format %d, returned status: %d", val, status);
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/itrbnfrt.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/itrbnfrt.cpp
index d038f4f60d1..3087ae08423 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/itrbnfrt.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/itrbnfrt.cpp
@@ -283,7 +283,7 @@ RbnfRoundTripTest::doTest(const RuleBasedNumberFormat* formatter,
double increment = 1;
for (double i = lowLimit; i <= highLimit; i += increment) {
if (count % 1000 == 0) {
- sprintf(buf, "%.12g", i);
+ snprintf(buf, sizeof(buf), "%.12g", i);
logln(buf);
}
@@ -300,7 +300,7 @@ RbnfRoundTripTest::doTest(const RuleBasedNumberFormat* formatter,
Formattable parseResult;
formatter->parse(formatResult, parseResult, status);
if (U_FAILURE(status)) {
- sprintf(buf, "Round-trip status failure: %.12g, status: %d", i, status);
+ snprintf(buf, sizeof(buf), "Round-trip status failure: %.12g, status: %d", i, status);
errln(buf);
return;
} else {
@@ -309,7 +309,7 @@ RbnfRoundTripTest::doTest(const RuleBasedNumberFormat* formatter,
(double)parseResult.getLong();
if (rt != i) {
- sprintf(buf, "Round-trip failed: %.12g -> %.12g", i, rt);
+ snprintf(buf, sizeof(buf), "Round-trip failed: %.12g -> %.12g", i, rt);
errln(buf);
return;
}
@@ -327,7 +327,7 @@ RbnfRoundTripTest::doTest(const RuleBasedNumberFormat* formatter,
Formattable parseResult;
formatter->parse(formatResult, parseResult, status);
if (U_FAILURE(status)) {
- sprintf(buf, "Round-trip status failure: %.12g, status: %d", d, status);
+ snprintf(buf, sizeof(buf), "Round-trip status failure: %.12g, status: %d", d, status);
errln(buf);
return;
} else {
@@ -337,10 +337,10 @@ RbnfRoundTripTest::doTest(const RuleBasedNumberFormat* formatter,
if (rt != d) {
UnicodeString msg;
- sprintf(buf, "Round-trip failed: %.12g -> ", d);
+ snprintf(buf, sizeof(buf), "Round-trip failed: %.12g -> ", d);
msg.append(buf);
msg.append(formatResult);
- sprintf(buf, " -> %.12g", rt);
+ snprintf(buf, sizeof(buf), " -> %.12g", rt);
msg.append(buf);
errln(msg);
return;
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/itspoof.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/itspoof.cpp
index e7f3aa54b45..e68d9b3c313 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/itspoof.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/itspoof.cpp
@@ -95,6 +95,7 @@ void IntlTestSpoof::runIndexedTest( int32_t index, UBool exec, const char* &name
TESTCASE_AUTO_BEGIN;
TESTCASE_AUTO(testSpoofAPI);
TESTCASE_AUTO(testSkeleton);
+ TESTCASE_AUTO(testBidiSkeleton);
TESTCASE_AUTO(testAreConfusable);
TESTCASE_AUTO(testInvisible);
TESTCASE_AUTO(testConfData);
@@ -140,12 +141,27 @@ void IntlTestSpoof::testSpoofAPI() {
TEST_ASSERT(UnicodeString("lllOO") == dest);
TEST_ASSERT(&dest == &retStr);
TEST_TEARDOWN;
+
+ TEST_SETUP
+ // Example from UTS #55, Section 5.1.3 https://www.unicode.org/reports/tr55/#General-Security-Profile
+ // of a minimal pair with a ZWNJ in Persian.
+ const UnicodeString behrooz(u"بهروز");
+ const UnicodeString update(u"به‌روز");
+ // These strings differ only by a ZWNJ.
+ TEST_ASSERT(UnicodeString(update).findAndReplace(u"\u200C", u"") == behrooz);
+ int32_t checkResults = uspoof_areConfusableUnicodeString(sc, behrooz, update, &status);
+ TEST_ASSERT_SUCCESS(status);
+ TEST_ASSERT_EQ(USPOOF_SINGLE_SCRIPT_CONFUSABLE, checkResults);
+ TEST_TEARDOWN;
}
+#define CHECK_SKELETON(type, input, expected) \
+ UPRV_BLOCK_MACRO_BEGIN { checkSkeleton(sc, type, input, expected, __LINE__); } \
+ UPRV_BLOCK_MACRO_END
-#define CHECK_SKELETON(type, input, expected) UPRV_BLOCK_MACRO_BEGIN { \
- checkSkeleton(sc, type, input, expected, __LINE__); \
-} UPRV_BLOCK_MACRO_END
+#define CHECK_BIDI_SKELETON(type, input, expected) \
+ UPRV_BLOCK_MACRO_BEGIN { checkBidiSkeleton(sc, type, input, expected, __LINE__); } \
+ UPRV_BLOCK_MACRO_END
// testSkeleton. Spot check a number of confusable skeleton substitutions from the
@@ -215,6 +231,15 @@ void IntlTestSpoof::testSkeleton() {
TEST_TEARDOWN;
}
+void IntlTestSpoof::testBidiSkeleton() {
+ TEST_SETUP
+ CHECK_BIDI_SKELETON(u"A1<שׂ", UBIDI_LTR, u"Al<ש\u0307");
+ CHECK_BIDI_SKELETON(u"Αשֺ>1", UBIDI_LTR, u"Al<ש\u0307");
+ CHECK_BIDI_SKELETON(u"A1<שׂ", UBIDI_RTL, u"ש\u0307>Al");
+ CHECK_BIDI_SKELETON(u"Αשֺ>1", UBIDI_RTL, u"l<ש\u0307A");
+ TEST_TEARDOWN;
+}
+
//
// Run a single confusable skeleton transformation test case.
@@ -240,6 +265,31 @@ void IntlTestSpoof::checkSkeleton(const USpoofChecker *sc, uint32_t type,
}
}
+//
+// Run a single confusable bidiSkeleton transformation test case.
+//
+void IntlTestSpoof::checkBidiSkeleton(const USpoofChecker *sc, const UnicodeString &input,
+ UBiDiDirection direction, const UnicodeString &expected,
+ int32_t lineNum) {
+ UnicodeString uInput = input.unescape();
+ UnicodeString uExpected = expected.unescape();
+
+ UErrorCode status = U_ZERO_ERROR;
+ UnicodeString actual;
+ uspoof_getBidiSkeletonUnicodeString(sc, direction, uInput, actual, &status);
+ if (U_FAILURE(status)) {
+ errln("File %s, Line %d, Test case from line %d, status is %s", __FILE__, __LINE__, lineNum,
+ u_errorName(status));
+ return;
+ }
+ if (uExpected != actual) {
+ errln("File %s, Line %d, Test case from line %d, Actual and Expected skeletons differ.",
+ __FILE__, __LINE__, lineNum);
+ errln(UnicodeString(" Actual Skeleton: \"") + actual + UnicodeString("\"\n") +
+ UnicodeString(" Expected Skeleton: \"") + uExpected + UnicodeString("\""));
+ }
+}
+
void IntlTestSpoof::testAreConfusable() {
TEST_SETUP
UnicodeString s1("A long string that will overflow stack buffers. A long string that will overflow stack buffers. "
@@ -253,6 +303,20 @@ void IntlTestSpoof::testAreConfusable() {
TEST_TEARDOWN;
}
+void IntlTestSpoof::testAreBidiConfusable() {
+ TEST_SETUP
+ const UnicodeString jHyphen2(u"J-2");
+ // The following string has RLMs around the 2–, flipping it; it uses an
+ // EN DASH instead of the HYPHEN-MINUS above.
+ const UnicodeString j2Dash(u"J\u200F2\u2013\u200F");
+ TEST_ASSERT(j2Dash == u"Jâ€2–â€");
+ int32_t result = uspoof_areBidiConfusableUnicodeString(sc, UBIDI_LTR, jHyphen2, j2Dash, &status);
+ TEST_ASSERT_SUCCESS(status);
+ TEST_ASSERT_EQ(USPOOF_SINGLE_SCRIPT_CONFUSABLE, result);
+
+ TEST_TEARDOWN;
+}
+
void IntlTestSpoof::testInvisible() {
TEST_SETUP
UnicodeString s = UnicodeString("abcd\\u0301ef").unescape();
@@ -293,7 +357,7 @@ static UnicodeString parseHex(const UnicodeString &in) {
UnicodeString result;
UChar32 cc = 0;
for (int32_t i=0; i<in.length(); i++) {
- UChar c = in.charAt(i);
+ char16_t c = in.charAt(i);
if (c == 0x20) { // Space
if (cc > 0) {
result.append(cc);
@@ -328,10 +392,10 @@ static void appendHexUChar(UnicodeString &dest, UChar32 c) {
int hexDigit = (c>>bitNum) & 0x0f;
if (hexDigit != 0 || doZeroes) {
doZeroes = true;
- dest.append((UChar)(hexDigit<=9? hexDigit + 0x30: hexDigit -10 + 0x41));
+ dest.append((char16_t)(hexDigit<=9? hexDigit + 0x30: hexDigit -10 + 0x41));
}
}
- dest.append((UChar)0x20);
+ dest.append((char16_t)0x20);
}
U_DEFINE_LOCAL_OPEN_POINTER(LocalStdioFilePointer, FILE, fclose);
@@ -341,7 +405,7 @@ U_DEFINE_LOCAL_OPEN_POINTER(LocalStdioFilePointer, FILE, fclose);
//
void IntlTestSpoof::testConfData() {
char buffer[2000];
- if (getUnidataPath(buffer) == NULL) {
+ if (getUnidataPath(buffer) == nullptr) {
errln("Skipping test spoof/testConfData. Unable to find path to source/data/unidata/.");
return;
}
@@ -384,6 +448,13 @@ void IntlTestSpoof::testConfData() {
continue;
}
+ if (u_hasBinaryProperty(from.char32At(0), UCHAR_DEFAULT_IGNORABLE_CODE_POINT)) {
+ // The source character is a default ignorable code point.
+ // Skip this case; the second step in obtaining a skeleton is to remove DIs,
+ // so the mapping in this line of confusables.txt will never be applied.
+ continue;
+ }
+
UnicodeString rawExpected = parseHex(parseLine.group(2, status));
UnicodeString expected;
Normalizer::decompose(rawExpected, false /*NFD*/, 0, expected, status);
@@ -596,14 +667,14 @@ void IntlTestSpoof::testRestrictionLevel() {
uspoof_setAllowedChars(sc, allowedChars.toUSet(), &status);
uspoof_setRestrictionLevel(sc, levelSetInSpoofChecker);
uspoof_setChecks(sc, USPOOF_RESTRICTION_LEVEL, &status);
- int32_t actualValue = uspoof_checkUnicodeString(sc, testString, NULL, &status);
+ int32_t actualValue = uspoof_checkUnicodeString(sc, testString, nullptr, &status);
// we want to fail if the text is (say) MODERATE and the testLevel is ASCII
int32_t expectedValue = 0;
if (expectedLevel > levelSetInSpoofChecker) {
expectedValue |= USPOOF_RESTRICTION_LEVEL;
}
- sprintf(msgBuffer, "testNum = %d, levelIndex = %d, expected = %#x, actual = %#x",
+ snprintf(msgBuffer, sizeof(msgBuffer), "testNum = %d, levelIndex = %d, expected = %#x, actual = %#x",
testNum, levelIndex, expectedValue, actualValue);
TEST_ASSERT_MSG(expectedValue == actualValue, msgBuffer);
TEST_ASSERT_SUCCESS(status);
@@ -613,7 +684,7 @@ void IntlTestSpoof::testRestrictionLevel() {
uspoof_setAllowedChars(sc, allowedChars.toUSet(), &status);
uspoof_setRestrictionLevel(sc, levelSetInSpoofChecker);
uspoof_setChecks(sc, USPOOF_AUX_INFO | USPOOF_RESTRICTION_LEVEL, &status);
- int32_t result = uspoof_checkUnicodeString(sc, testString, NULL, &status);
+ int32_t result = uspoof_checkUnicodeString(sc, testString, nullptr, &status);
TEST_ASSERT_SUCCESS(status);
if (U_SUCCESS(status)) {
TEST_ASSERT_EQ(expectedLevel, result & USPOOF_RESTRICTION_LEVEL_MASK);
@@ -647,7 +718,7 @@ void IntlTestSpoof::testMixedNumbers() {
UErrorCode status = U_ZERO_ERROR;
for (int32_t testNum=0; testNum < UPRV_LENGTHOF(tests); testNum++) {
char msgBuf[100];
- sprintf(msgBuf, "testNum = %d ", testNum);
+ snprintf(msgBuf, sizeof(msgBuf), "testNum = %d ", testNum);
Test &test = tests[testNum];
status = U_ZERO_ERROR;
@@ -692,7 +763,7 @@ void IntlTestSpoof::testBug12825() {
TEST_ASSERT_SUCCESS(status);
uspoof_setChecks(sc.getAlias(), USPOOF_ALL_CHECKS | USPOOF_AUX_INFO, &status);
TEST_ASSERT_SUCCESS(status);
- uspoof_checkUnicodeString(sc.getAlias(), UnicodeString("\\u30FB").unescape(), NULL, &status);
+ uspoof_checkUnicodeString(sc.getAlias(), UnicodeString("\\u30FB").unescape(), nullptr, &status);
TEST_ASSERT_SUCCESS(status);
}
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/itspoof.h b/Build/source/libs/icu/icu-src/source/test/intltest/itspoof.h
index 7eca31bb729..07f2a112bdb 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/itspoof.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/itspoof.h
@@ -22,7 +22,7 @@
class IntlTestSpoof: public IntlTest {
public:
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
// Test the USpoofDetector API functions that require C++
// The pure C part of the API, which is most of it, is tested in cintltst
@@ -30,8 +30,12 @@ public:
void testSkeleton();
+ void testBidiSkeleton();
+
void testAreConfusable();
+ void testAreBidiConfusable();
+
void testInvisible();
void testConfData();
@@ -56,9 +60,11 @@ public:
void testCombiningDot();
- // Internal function to run a single skeleton test case.
- void checkSkeleton(const USpoofChecker *sc, uint32_t flags,
- const char *input, const char *expected, int32_t lineNum);
+ // Internal functions to run a single skeleton test case.
+ void checkSkeleton(const USpoofChecker *sc, uint32_t flags, const char *input, const char *expected,
+ int32_t lineNum);
+ void checkBidiSkeleton(const USpoofChecker *sc, const UnicodeString &input, UBiDiDirection direction,
+ const UnicodeString &expected, int32_t lineNum);
};
#endif // !UCONFIG_NO_REGULAR_EXPRESSIONS && !UCONFIG_NO_NORMALIZATION && !UCONFIG_NO_FILE_IO
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/ittrans.h b/Build/source/libs/icu/icu-src/source/test/intltest/ittrans.h
index 0f9aeaa8e5f..08aeab23cc9 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/ittrans.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/ittrans.h
@@ -25,7 +25,7 @@
class IntlTestTransliterator: public IntlTest {
public:
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
};
#endif /* #if !UCONFIG_NO_TRANSLITERATION */
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/itutil.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/itutil.cpp
index 641abf194a3..a89c83f0243 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/itutil.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/itutil.cpp
@@ -202,7 +202,7 @@ void ErrorCodeTest::TestSubclass() {
class IcuTestErrorCodeTestHelper : public IntlTest {
public:
- void errln( const UnicodeString &message ) U_OVERRIDE {
+ void errln( const UnicodeString &message ) override {
test->assertFalse("Already saw an error", seenError);
seenError = true;
test->assertEquals("Message for Error", expectedErrln, message);
@@ -211,7 +211,7 @@ class IcuTestErrorCodeTestHelper : public IntlTest {
}
}
- void dataerrln( const UnicodeString &message ) U_OVERRIDE {
+ void dataerrln( const UnicodeString &message ) override {
test->assertFalse("Already saw an error", seenError);
seenError = true;
test->assertEquals("Message for Error", expectedErrln, message);
@@ -312,7 +312,7 @@ class LocalPointerTest : public IntlTest {
public:
LocalPointerTest() {}
- void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=NULL) override;
+ void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=nullptr) override;
void TestLocalPointer();
void TestLocalPointerMoveSwap();
@@ -353,8 +353,8 @@ void LocalPointerTest::TestLocalPointer() {
// constructor
LocalPointer<UnicodeString> s(new UnicodeString((UChar32)0x50005));
// isNULL(), isValid(), operator==(), operator!=()
- if(s.isNull() || !s.isValid() || s==NULL || !(s!=NULL)) {
- errln("LocalPointer constructor or NULL test failure");
+ if(s.isNull() || !s.isValid() || s==nullptr || !(s!=nullptr)) {
+ errln("LocalPointer constructor or nullptr test failure");
return;
}
// getAlias(), operator->, operator*
@@ -362,12 +362,12 @@ void LocalPointerTest::TestLocalPointer() {
errln("LocalPointer access failure");
}
// adoptInstead(), orphan()
- s.adoptInstead(new UnicodeString((UChar)0xfffc));
+ s.adoptInstead(new UnicodeString((char16_t)0xfffc));
if(s->length()!=1) {
errln("LocalPointer adoptInstead(U+FFFC) failure");
}
UnicodeString *orphan=s.orphan();
- if(orphan==NULL || orphan->length()!=1 || s.isValid() || s!=NULL) {
+ if(orphan==nullptr || orphan->length()!=1 || s.isValid() || s!=nullptr) {
errln("LocalPointer orphan() failure");
}
delete orphan;
@@ -376,7 +376,7 @@ void LocalPointerTest::TestLocalPointer() {
errln("LocalPointer adoptInstead(empty) failure");
}
- // LocalPointer(p, errorCode) sets U_MEMORY_ALLOCATION_ERROR if p==NULL.
+ // LocalPointer(p, errorCode) sets U_MEMORY_ALLOCATION_ERROR if p==nullptr.
UErrorCode errorCode = U_ZERO_ERROR;
LocalPointer<CharString> csx(new CharString("some chars", errorCode), errorCode);
if(csx.isNull() && U_SUCCESS(errorCode)) {
@@ -397,19 +397,19 @@ void LocalPointerTest::TestLocalPointer() {
return;
}
errorCode = U_ZERO_ERROR;
- csx.adoptInsteadAndCheckErrorCode(NULL, errorCode);
+ csx.adoptInsteadAndCheckErrorCode(nullptr, errorCode);
if(errorCode != U_MEMORY_ALLOCATION_ERROR) {
- errln("adoptInsteadAndCheckErrorCode(NULL, errorCode) did not set U_MEMORY_ALLOCATION_ERROR");
+ errln("adoptInsteadAndCheckErrorCode(nullptr, errorCode) did not set U_MEMORY_ALLOCATION_ERROR");
return;
}
if(csx.isValid()) {
- errln("adoptInsteadAndCheckErrorCode(NULL, errorCode) kept the object");
+ errln("adoptInsteadAndCheckErrorCode(nullptr, errorCode) kept the object");
return;
}
errorCode = U_ZERO_ERROR;
- LocalPointer<CharString> null(NULL, errorCode);
+ LocalPointer<CharString> null(nullptr, errorCode);
if(errorCode != U_MEMORY_ALLOCATION_ERROR) {
- errln("LocalPointer(NULL, errorCode) did not set U_MEMORY_ALLOCATION_ERROR");
+ errln("LocalPointer(nullptr, errorCode) did not set U_MEMORY_ALLOCATION_ERROR");
return;
}
@@ -423,8 +423,8 @@ void moveFrom(T &dest, T &src) {
}
void LocalPointerTest::TestLocalPointerMoveSwap() {
- UnicodeString *p1 = new UnicodeString((UChar)0x61);
- UnicodeString *p2 = new UnicodeString((UChar)0x62);
+ UnicodeString *p1 = new UnicodeString((char16_t)0x61);
+ UnicodeString *p2 = new UnicodeString((char16_t)0x62);
LocalPointer<UnicodeString> s1(p1);
LocalPointer<UnicodeString> s2(p2);
s1.swap(s2);
@@ -475,19 +475,19 @@ void LocalPointerTest::TestLocalArray() {
// constructor
LocalArray<UnicodeString> a(new UnicodeString[2]);
// operator[]()
- a[0].append((UChar)0x61);
+ a[0].append((char16_t)0x61);
a[1].append((UChar32)0x60006);
if(a[0].length()!=1 || a[1].length()!=2) {
errln("LocalArray access failure");
}
// adoptInstead()
a.adoptInstead(new UnicodeString[4]);
- a[3].append((UChar)0x62).append((UChar)0x63).reverse();
+ a[3].append((char16_t)0x62).append((char16_t)0x63).reverse();
if(a[3].length()!=2 || a[3][1]!=0x62) {
errln("LocalArray adoptInstead() failure");
}
- // LocalArray(p, errorCode) sets U_MEMORY_ALLOCATION_ERROR if p==NULL.
+ // LocalArray(p, errorCode) sets U_MEMORY_ALLOCATION_ERROR if p==nullptr.
UErrorCode errorCode = U_ZERO_ERROR;
LocalArray<UnicodeString> ua(new UnicodeString[3], errorCode);
if(ua.isNull() && U_SUCCESS(errorCode)) {
@@ -509,19 +509,19 @@ void LocalPointerTest::TestLocalArray() {
return;
}
errorCode = U_ZERO_ERROR;
- ua.adoptInsteadAndCheckErrorCode(NULL, errorCode);
+ ua.adoptInsteadAndCheckErrorCode(nullptr, errorCode);
if(errorCode != U_MEMORY_ALLOCATION_ERROR) {
- errln("adoptInsteadAndCheckErrorCode(NULL, errorCode) did not set U_MEMORY_ALLOCATION_ERROR");
+ errln("adoptInsteadAndCheckErrorCode(nullptr, errorCode) did not set U_MEMORY_ALLOCATION_ERROR");
return;
}
if(ua.isValid()) {
- errln("adoptInsteadAndCheckErrorCode(NULL, errorCode) kept the array");
+ errln("adoptInsteadAndCheckErrorCode(nullptr, errorCode) kept the array");
return;
}
errorCode = U_ZERO_ERROR;
- LocalArray<UnicodeString> null(NULL, errorCode);
+ LocalArray<UnicodeString> null(nullptr, errorCode);
if(errorCode != U_MEMORY_ALLOCATION_ERROR) {
- errln("LocalArray(NULL, errorCode) did not set U_MEMORY_ALLOCATION_ERROR");
+ errln("LocalArray(nullptr, errorCode) did not set U_MEMORY_ALLOCATION_ERROR");
return;
}
@@ -593,7 +593,7 @@ void LocalPointerTest::TestLocalXyzPointer() {
static const char *const encoding="ISO-8859-1";
LocalUConverterSelectorPointer sel(
- ucnvsel_open(&encoding, 1, NULL, UCNV_ROUNDTRIP_SET, errorCode));
+ ucnvsel_open(&encoding, 1, nullptr, UCNV_ROUNDTRIP_SET, errorCode));
if(errorCode.errIfFailureAndReset("ucnvsel_open()")) {
return;
}
@@ -603,7 +603,7 @@ void LocalPointerTest::TestLocalXyzPointer() {
}
#if !UCONFIG_NO_FORMATTING
- LocalUCalendarPointer cal(ucal_open(NULL, 0, "root", UCAL_GREGORIAN, errorCode));
+ LocalUCalendarPointer cal(ucal_open(nullptr, 0, "root", UCAL_GREGORIAN, errorCode));
if(errorCode.errDataIfFailureAndReset("ucal_open()")) {
return;
}
@@ -632,7 +632,7 @@ void LocalPointerTest::TestLocalXyzPointer() {
UnicodeString hello=UNICODE_STRING_SIMPLE("Hello {0}!");
LocalUMessageFormatPointer msg(
- umsg_open(hello.getBuffer(), hello.length(), "root", NULL, errorCode));
+ umsg_open(hello.getBuffer(), hello.length(), "root", nullptr, errorCode));
if(errorCode.errIfFailureAndReset("umsg_open()")) {
return;
}
@@ -669,7 +669,7 @@ void LocalPointerTest::TestLocalXyzPointer() {
#if !UCONFIG_NO_REGULAR_EXPRESSIONS
UnicodeString pattern=UNICODE_STRING_SIMPLE("abc|xy+z");
LocalURegularExpressionPointer regex(
- uregex_open(pattern.getBuffer(), pattern.length(), 0, NULL, errorCode));
+ uregex_open(pattern.getBuffer(), pattern.length(), 0, nullptr, errorCode));
if(errorCode.errIfFailureAndReset("uregex_open()")) {
return;
}
@@ -682,7 +682,7 @@ void LocalPointerTest::TestLocalXyzPointer() {
#if !UCONFIG_NO_TRANSLITERATION
UnicodeString id=UNICODE_STRING_SIMPLE("Grek-Latn");
LocalUTransliteratorPointer trans(
- utrans_openU(id.getBuffer(), id.length(), UTRANS_FORWARD, NULL, 0, NULL, errorCode));
+ utrans_openU(id.getBuffer(), id.length(), UTRANS_FORWARD, nullptr, 0, nullptr, errorCode));
if(errorCode.errIfFailureAndReset("utrans_open()")) {
return;
}
@@ -745,38 +745,38 @@ void LocalPointerTest::TestLocalXyzPointerMoveSwap() {
#endif /* !UCONFIG_NO_NORMALIZATION */
}
-// Try LocalXyzPointer types with NULL pointers.
+// Try LocalXyzPointer types with nullptr pointers.
void LocalPointerTest::TestLocalXyzPointerNull() {
{
IcuTestErrorCode errorCode(*this, "TestLocalXyzPointerNull/LocalUConverterSelectorPointer");
static const char *const encoding="ISO-8859-1";
LocalUConverterSelectorPointer null;
LocalUConverterSelectorPointer sel(
- ucnvsel_open(&encoding, 1, NULL, UCNV_ROUNDTRIP_SET, errorCode));
- sel.adoptInstead(NULL);
+ ucnvsel_open(&encoding, 1, nullptr, UCNV_ROUNDTRIP_SET, errorCode));
+ sel.adoptInstead(nullptr);
}
#if !UCONFIG_NO_FORMATTING
{
IcuTestErrorCode errorCode(*this, "TestLocalXyzPointerNull/LocalUCalendarPointer");
LocalUCalendarPointer null;
- LocalUCalendarPointer cal(ucal_open(NULL, 0, "root", UCAL_GREGORIAN, errorCode));
+ LocalUCalendarPointer cal(ucal_open(nullptr, 0, "root", UCAL_GREGORIAN, errorCode));
if(!errorCode.errDataIfFailureAndReset("ucal_open()")) {
- cal.adoptInstead(NULL);
+ cal.adoptInstead(nullptr);
}
}
{
IcuTestErrorCode errorCode(*this, "TestLocalXyzPointerNull/LocalUDateTimePatternGeneratorPointer");
LocalUDateTimePatternGeneratorPointer null;
LocalUDateTimePatternGeneratorPointer patgen(udatpg_open("root", errorCode));
- patgen.adoptInstead(NULL);
+ patgen.adoptInstead(nullptr);
}
{
IcuTestErrorCode errorCode(*this, "TestLocalXyzPointerNull/LocalUMessageFormatPointer");
UnicodeString hello=UNICODE_STRING_SIMPLE("Hello {0}!");
LocalUMessageFormatPointer null;
LocalUMessageFormatPointer msg(
- umsg_open(hello.getBuffer(), hello.length(), "root", NULL, errorCode));
- msg.adoptInstead(NULL);
+ umsg_open(hello.getBuffer(), hello.length(), "root", nullptr, errorCode));
+ msg.adoptInstead(nullptr);
}
#endif /* !UCONFIG_NO_FORMATTING */
@@ -786,9 +786,9 @@ void LocalPointerTest::TestLocalXyzPointerNull() {
UnicodeString pattern=UNICODE_STRING_SIMPLE("abc|xy+z");
LocalURegularExpressionPointer null;
LocalURegularExpressionPointer regex(
- uregex_open(pattern.getBuffer(), pattern.length(), 0, NULL, errorCode));
+ uregex_open(pattern.getBuffer(), pattern.length(), 0, nullptr, errorCode));
if(!errorCode.errDataIfFailureAndReset("urege_open()")) {
- regex.adoptInstead(NULL);
+ regex.adoptInstead(nullptr);
}
}
#endif /* !UCONFIG_NO_REGULAR_EXPRESSIONS */
@@ -799,9 +799,9 @@ void LocalPointerTest::TestLocalXyzPointerNull() {
UnicodeString id=UNICODE_STRING_SIMPLE("Grek-Latn");
LocalUTransliteratorPointer null;
LocalUTransliteratorPointer trans(
- utrans_openU(id.getBuffer(), id.length(), UTRANS_FORWARD, NULL, 0, NULL, errorCode));
+ utrans_openU(id.getBuffer(), id.length(), UTRANS_FORWARD, nullptr, 0, nullptr, errorCode));
if(!errorCode.errDataIfFailureAndReset("utrans_openU()")) {
- trans.adoptInstead(NULL);
+ trans.adoptInstead(nullptr);
}
}
#endif /* !UCONFIG_NO_TRANSLITERATION */
@@ -831,7 +831,7 @@ void LocalPointerTest::TestLocalXyzStdUniquePtr() {
class EnumSetTest : public IntlTest {
public:
EnumSetTest() {}
- virtual void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=NULL) override;
+ virtual void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=nullptr) override;
void TestEnumSet();
};
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/itutil.h b/Build/source/libs/icu/icu-src/source/test/intltest/itutil.h
index 3968a140ac7..86c5615c907 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/itutil.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/itutil.h
@@ -17,12 +17,12 @@
class IntlTestUtilities: public IntlTest {
public:
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
};
class ErrorCodeTest: public IntlTest {
public:
- void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par = NULL) override;
+ void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par = nullptr) override;
void TestErrorCode();
void TestSubclass();
void TestIcuTestErrorCode();
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/jacoll.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/jacoll.cpp
index a701aeda4f8..affdf4f6612 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/jacoll.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/jacoll.cpp
@@ -27,7 +27,7 @@ CollationKanaTest::CollationKanaTest()
errcheckln(status, __FILE__ "failed to create! err " + UnicodeString(u_errorName(status)));
/* if it wasn't already: */
delete myCollation;
- myCollation = NULL;
+ myCollation = nullptr;
return;
}
}
@@ -37,7 +37,7 @@ CollationKanaTest::~CollationKanaTest()
delete myCollation;
}
-const UChar CollationKanaTest::testSourceCases[][CollationKanaTest::MAX_TOKEN_LEN] = {
+const char16_t CollationKanaTest::testSourceCases[][CollationKanaTest::MAX_TOKEN_LEN] = {
{0xff9E, 0x0000},
{0x3042, 0x0000},
{0x30A2, 0x0000},
@@ -46,7 +46,7 @@ const UChar CollationKanaTest::testSourceCases[][CollationKanaTest::MAX_TOKEN_LE
{0x30A2, 0x30FC, 0x30C8, 0x0000} /* 6 */
};
-const UChar CollationKanaTest::testTargetCases[][CollationKanaTest::MAX_TOKEN_LEN] = {
+const char16_t CollationKanaTest::testTargetCases[][CollationKanaTest::MAX_TOKEN_LEN] = {
{0xFF9F, 0x0000},
{0x30A2, 0x0000},
{0x3042, 0x3042, 0x0000},
@@ -64,35 +64,35 @@ const Collator::EComparisonResult CollationKanaTest::results[] = {
Collator::LESS, //Collator::GREATER /* Prolonged sound mark sorts BEFORE equivalent vowel (ICU 2.0)*//* 6 */
};
-const UChar CollationKanaTest::testBaseCases[][CollationKanaTest::MAX_TOKEN_LEN] = {
+const char16_t CollationKanaTest::testBaseCases[][CollationKanaTest::MAX_TOKEN_LEN] = {
{0x30AB, 0x0000},
{0x30AB, 0x30AD, 0x0000},
{0x30AD, 0x0000},
{0x30AD, 0x30AD, 0x0000}
};
-const UChar CollationKanaTest::testPlainDakutenHandakutenCases[][CollationKanaTest::MAX_TOKEN_LEN] = {
+const char16_t CollationKanaTest::testPlainDakutenHandakutenCases[][CollationKanaTest::MAX_TOKEN_LEN] = {
{0x30CF, 0x30AB, 0x0000},
{0x30D0, 0x30AB, 0x0000},
{0x30CF, 0x30AD, 0x0000},
{0x30D0, 0x30AD, 0x0000}
};
-const UChar CollationKanaTest::testSmallLargeCases[][CollationKanaTest::MAX_TOKEN_LEN] = {
+const char16_t CollationKanaTest::testSmallLargeCases[][CollationKanaTest::MAX_TOKEN_LEN] = {
{0x30C3, 0x30CF, 0x0000},
{0x30C4, 0x30CF, 0x0000},
{0x30C3, 0x30D0, 0x0000},
{0x30C4, 0x30D0, 0x0000}
};
-const UChar CollationKanaTest::testKatakanaHiraganaCases[][CollationKanaTest::MAX_TOKEN_LEN] = {
+const char16_t CollationKanaTest::testKatakanaHiraganaCases[][CollationKanaTest::MAX_TOKEN_LEN] = {
{0x3042, 0x30C3, 0x0000},
{0x30A2, 0x30C3, 0x0000},
{0x3042, 0x30C4, 0x0000},
{0x30A2, 0x30C4, 0x0000}
};
-const UChar CollationKanaTest::testChooonKigooCases[][CollationKanaTest::MAX_TOKEN_LEN] = {
+const char16_t CollationKanaTest::testChooonKigooCases[][CollationKanaTest::MAX_TOKEN_LEN] = {
/*0*/ {0x30AB, 0x30FC, 0x3042, 0x0000},
/*1*/ {0x30AB, 0x30FC, 0x30A2, 0x0000},
/*2*/ {0x30AB, 0x30A4, 0x3042, 0x0000},
@@ -127,7 +127,7 @@ void CollationKanaTest::TestBase()
}
/* Testing plain, Daku-ten, Handaku-ten letters */
-void CollationKanaTest::TestPlainDakutenHandakuten(void)
+void CollationKanaTest::TestPlainDakutenHandakuten()
{
int32_t i;
myCollation->setStrength(Collator::SECONDARY);
@@ -139,7 +139,7 @@ void CollationKanaTest::TestPlainDakutenHandakuten(void)
/*
* Test Small, Large letters
*/
-void CollationKanaTest::TestSmallLarge(void)
+void CollationKanaTest::TestSmallLarge()
{
int32_t i;
UErrorCode status = U_ZERO_ERROR;
@@ -152,7 +152,7 @@ void CollationKanaTest::TestSmallLarge(void)
/*
* Test Katakana, Hiragana letters
*/
-void CollationKanaTest::TestKatakanaHiragana(void)
+void CollationKanaTest::TestKatakanaHiragana()
{
int32_t i;
UErrorCode status = U_ZERO_ERROR;
@@ -167,7 +167,7 @@ void CollationKanaTest::TestKatakanaHiragana(void)
/*
* Test Choo-on kigoo
*/
-void CollationKanaTest::TestChooonKigoo(void)
+void CollationKanaTest::TestChooonKigoo()
{
int32_t i;
UErrorCode status = U_ZERO_ERROR;
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/jacoll.h b/Build/source/libs/icu/icu-src/source/test/intltest/jacoll.h
index e1aca114f5c..755c545f1f0 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/jacoll.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/jacoll.h
@@ -29,7 +29,7 @@ public:
CollationKanaTest();
virtual ~CollationKanaTest();
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
// performs test with strength TERIARY
void TestTertiary(/* char* par */);
@@ -50,14 +50,14 @@ public:
void TestChooonKigoo();
private:
- static const UChar testSourceCases[][MAX_TOKEN_LEN];
- static const UChar testTargetCases[][MAX_TOKEN_LEN];
+ static const char16_t testSourceCases[][MAX_TOKEN_LEN];
+ static const char16_t testTargetCases[][MAX_TOKEN_LEN];
static const Collator::EComparisonResult results[];
- static const UChar testBaseCases[][MAX_TOKEN_LEN];
- static const UChar testPlainDakutenHandakutenCases[][MAX_TOKEN_LEN];
- static const UChar testSmallLargeCases[][MAX_TOKEN_LEN];
- static const UChar testKatakanaHiraganaCases[][MAX_TOKEN_LEN];
- static const UChar testChooonKigooCases[][MAX_TOKEN_LEN];
+ static const char16_t testBaseCases[][MAX_TOKEN_LEN];
+ static const char16_t testPlainDakutenHandakutenCases[][MAX_TOKEN_LEN];
+ static const char16_t testSmallLargeCases[][MAX_TOKEN_LEN];
+ static const char16_t testKatakanaHiraganaCases[][MAX_TOKEN_LEN];
+ static const char16_t testChooonKigooCases[][MAX_TOKEN_LEN];
Collator *myCollation;
};
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/jamotest.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/jamotest.cpp
index 63925ab3143..b3f8c0f1d3d 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/jamotest.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/jamotest.cpp
@@ -34,7 +34,7 @@ JamoTest::JamoTest()
if (U_FAILURE(status)) {
delete NAME_JAMO;
- NAME_JAMO = NULL;
+ NAME_JAMO = nullptr;
}
status = U_ZERO_ERROR;
JAMO_NAME = Transliterator::createFromRules("Jamo-Name",
@@ -42,7 +42,7 @@ JamoTest::JamoTest()
UTRANS_REVERSE, parseError, status);
if (U_FAILURE(status)) {
delete JAMO_NAME;
- JAMO_NAME = NULL;
+ JAMO_NAME = nullptr;
}
}
@@ -90,40 +90,40 @@ JamoTest::TestJamo() {
// 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.
+ // value of L2 is L1, then L2 is nullptr.
// 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,
+ "gach", "(Gi)(A)(Cf)", nullptr,
+ "geumhui", "(Gi)(EU)(Mf)(Hi)(YI)", nullptr,
+ "choe", "(Ci)(OE)", nullptr,
+ "wo", "(IEUNG)(WEO)", nullptr,
"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,
+ "gaga", "(Gi)(A)(Gi)(A)", nullptr,
+ "gag-a", "(Gi)(A)(Gf)(IEUNG)(A)", nullptr,
+ "gak-ka", "(Gi)(A)(Kf)(Ki)(A)", nullptr,
+ "gakka", "(Gi)(A)(GGi)(A)", nullptr,
+ "gakk-a", "(Gi)(A)(GGf)(IEUNG)(A)", nullptr,
+ "gakkka", "(Gi)(A)(GGf)(Ki)(A)", nullptr,
+ "gak-kka", "(Gi)(A)(Kf)(GGi)(A)", nullptr,
+
+ "bab", "(Bi)(A)(Bf)", nullptr,
"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,
+ "kabsa", "(Ki)(A)(Bf)(Si)(A)", nullptr,
+ "kabska", "(Ki)(A)(BS)(Ki)(A)", nullptr,
"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,
+ "agga", "(IEUNG)(A)(Gf)(Gi)(A)", nullptr,
+ "la", "(R)(A)", nullptr,
"bs", "(Bi)(EU)(Sf)", "beus",
"kalgga", "(Ki)(A)(L)(Gi)(EU)(Gi)(A)", "kalgeuga",
@@ -136,7 +136,7 @@ JamoTest::TestJamo() {
int32_t i;
for (i=0; i<CASE_length; i+=3) {
UnicodeString jamo = nameToJamo(CASE[i+1]);
- if (CASE[i+2] == NULL) {
+ if (CASE[i+2] == nullptr) {
expect(*latinJamo, CASE[i], jamo, *jamoLatin);
} else {
// Handle case where round-trip is expected to fail
@@ -153,13 +153,13 @@ JamoTest::TestJamo() {
* Test various step-at-a-time transformation of hangul to jamo to
* latin and back.
*/
-void JamoTest::TestPiecemeal(void) {
- UnicodeString hangul; hangul.append((UChar)0xBC0F);
+void JamoTest::TestPiecemeal() {
+ UnicodeString hangul; hangul.append((char16_t)0xBC0F);
UnicodeString jamo = nameToJamo("(Mi)(I)(Cf)");
UnicodeString latin("mic");
UnicodeString latin2("mich");
- Transliterator *t = NULL;
+ Transliterator *t = nullptr;
UErrorCode status = U_ZERO_ERROR;
t = Transliterator::createInstance("NFD", UTRANS_FORWARD, status); // was Hangul-Jamo
@@ -379,13 +379,13 @@ JamoTest::TestRealText() {
if (latinJamo == 0 || jamoHangul == 0 || U_FAILURE(status)) {
delete latinJamo;
delete jamoHangul;
- dataerrln("FAIL: createInstance returned NULL - %s", u_errorName(status));
+ dataerrln("FAIL: createInstance returned nullptr - %s", u_errorName(status));
return;
}
Transliterator* jamoLatin = latinJamo->createInverse(status);
Transliterator* hangulJamo = jamoHangul->createInverse(status);
if (jamoLatin == 0 || hangulJamo == 0) {
- errln("FAIL: createInverse returned NULL");
+ errln("FAIL: createInverse returned nullptr");
delete latinJamo;
delete jamoLatin;
delete jamoHangul;
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/jamotest.h b/Build/source/libs/icu/icu-src/source/test/intltest/jamotest.h
index 5fab2d125b1..14da2f1b0bf 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/jamotest.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/jamotest.h
@@ -31,13 +31,13 @@ public:
virtual ~JamoTest();
private:
void runIndexedTest(int32_t index, UBool exec, const char* &name,
- char* par=NULL) override;
+ char* par=nullptr) override;
- void TestJamo(void);
+ void TestJamo();
- void TestRealText(void);
+ void TestRealText();
- void TestPiecemeal(void);
+ void TestPiecemeal();
//======================================================================
// Support methods
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/lcukocol.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/lcukocol.cpp
index 8cbf299103a..7123e8c29a8 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/lcukocol.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/lcukocol.cpp
@@ -50,12 +50,12 @@ LotusCollationKoreanTest::~LotusCollationKoreanTest()
delete myCollation;
}
-const UChar LotusCollationKoreanTest::testSourceCases[][LotusCollationKoreanTest::MAX_TOKEN_LEN] = {
+const char16_t LotusCollationKoreanTest::testSourceCases[][LotusCollationKoreanTest::MAX_TOKEN_LEN] = {
{0xac00, 0}
};
-const UChar LotusCollationKoreanTest::testTargetCases[][LotusCollationKoreanTest::MAX_TOKEN_LEN] = {
+const char16_t LotusCollationKoreanTest::testTargetCases[][LotusCollationKoreanTest::MAX_TOKEN_LEN] = {
{0xac01, 0}
};
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/lcukocol.h b/Build/source/libs/icu/icu-src/source/test/intltest/lcukocol.h
index 658c1eea55d..1399b03b039 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/lcukocol.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/lcukocol.h
@@ -24,14 +24,14 @@ public:
LotusCollationKoreanTest();
virtual ~LotusCollationKoreanTest();
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
// performs test with strength TERIARY
void TestTertiary(/* char* par */);
private:
- static const UChar testSourceCases[][MAX_TOKEN_LEN];
- static const UChar testTargetCases[][MAX_TOKEN_LEN];
+ static const char16_t testSourceCases[][MAX_TOKEN_LEN];
+ static const char16_t testTargetCases[][MAX_TOKEN_LEN];
static const Collator::EComparisonResult results[];
Collator *myCollation;
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/listformattertest.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/listformattertest.cpp
index e98980cfb2b..1564e54c19e 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/listformattertest.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/listformattertest.cpp
@@ -84,7 +84,7 @@ void ListFormatterTest::ExpectPositions(
int32_t start = cfp.getStart();
int32_t limit = cfp.getLimit();
char buf[128];
- sprintf(buf, "%24s %3d %3d %3d", attrString(id), id, start, limit);
+ snprintf(buf, sizeof(buf), "%24s %3d %3d %3d", attrString(id), id, start, limit);
logln(buf);
for (int i = 0; i < tupleCount; ++i) {
if (found[i]) {
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/localebuildertest.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/localebuildertest.cpp
index 5623dd1e37c..fa706db728f 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/localebuildertest.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/localebuildertest.cpp
@@ -83,7 +83,7 @@ void LocaleBuilderTest::Verify(LocaleBuilder& bld, const char* expected, const c
void LocaleBuilderTest::TestLocaleBuilder() {
// The following test data are copy from
- // icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/LocaleBuilderTest.java
+ // icu4j/main/core/src/test/java/com/ibm/icu/dev/test/util/LocaleBuilderTest.java
// "L": +1 = language
// "S": +1 = script
// "R": +1 = region
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/localebuildertest.h b/Build/source/libs/icu/icu-src/source/test/intltest/localebuildertest.h
index b8f0b9951bd..124ffa4e28a 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/localebuildertest.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/localebuildertest.h
@@ -13,39 +13,39 @@ class LocaleBuilderTest: public IntlTest {
LocaleBuilderTest();
virtual ~LocaleBuilderTest();
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
- void TestAddRemoveUnicodeLocaleAttribute(void);
- void TestAddRemoveUnicodeLocaleAttributeWellFormed(void);
- void TestAddUnicodeLocaleAttributeIllFormed(void);
- void TestLocaleBuilder(void);
- void TestLocaleBuilderBasic(void);
- void TestLocaleBuilderBasicWithExtensionsOnDefaultLocale(void);
- void TestPosixCases(void);
- void TestSetExtensionOthers(void);
- void TestSetExtensionPU(void);
- void TestSetExtensionT(void);
- void TestSetExtensionU(void);
- void TestSetExtensionValidateOthersIllFormed(void);
- void TestSetExtensionValidateOthersWellFormed(void);
- void TestSetExtensionValidatePUIllFormed(void);
- void TestSetExtensionValidatePUWellFormed(void);
- void TestSetExtensionValidateTIllFormed(void);
- void TestSetExtensionValidateTWellFormed(void);
- void TestSetExtensionValidateUIllFormed(void);
- void TestSetExtensionValidateUWellFormed(void);
- void TestSetLanguageIllFormed(void);
- void TestSetLanguageWellFormed(void);
- void TestSetLocale(void);
- void TestSetRegionIllFormed(void);
- void TestSetRegionWellFormed(void);
- void TestSetScriptIllFormed(void);
- void TestSetScriptWellFormed(void);
- void TestSetUnicodeLocaleKeywordIllFormedKey(void);
- void TestSetUnicodeLocaleKeywordIllFormedValue(void);
- void TestSetUnicodeLocaleKeywordWellFormed(void);
- void TestSetVariantIllFormed(void);
- void TestSetVariantWellFormed(void);
+ void TestAddRemoveUnicodeLocaleAttribute();
+ void TestAddRemoveUnicodeLocaleAttributeWellFormed();
+ void TestAddUnicodeLocaleAttributeIllFormed();
+ void TestLocaleBuilder();
+ void TestLocaleBuilderBasic();
+ void TestLocaleBuilderBasicWithExtensionsOnDefaultLocale();
+ void TestPosixCases();
+ void TestSetExtensionOthers();
+ void TestSetExtensionPU();
+ void TestSetExtensionT();
+ void TestSetExtensionU();
+ void TestSetExtensionValidateOthersIllFormed();
+ void TestSetExtensionValidateOthersWellFormed();
+ void TestSetExtensionValidatePUIllFormed();
+ void TestSetExtensionValidatePUWellFormed();
+ void TestSetExtensionValidateTIllFormed();
+ void TestSetExtensionValidateTWellFormed();
+ void TestSetExtensionValidateUIllFormed();
+ void TestSetExtensionValidateUWellFormed();
+ void TestSetLanguageIllFormed();
+ void TestSetLanguageWellFormed();
+ void TestSetLocale();
+ void TestSetRegionIllFormed();
+ void TestSetRegionWellFormed();
+ void TestSetScriptIllFormed();
+ void TestSetScriptWellFormed();
+ void TestSetUnicodeLocaleKeywordIllFormedKey();
+ void TestSetUnicodeLocaleKeywordIllFormedValue();
+ void TestSetUnicodeLocaleKeywordWellFormed();
+ void TestSetVariantIllFormed();
+ void TestSetVariantWellFormed();
private:
void Verify(LocaleBuilder& bld, const char* expected, const char* msg);
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/localematchertest.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/localematchertest.cpp
index 07382efbf0b..c9ce207059e 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/localematchertest.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/localematchertest.cpp
@@ -51,7 +51,7 @@ class LocaleMatcherTest : public IntlTest {
public:
LocaleMatcherTest() {}
- void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=NULL) override;
+ void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=nullptr) override;
void testEmpty();
void testCopyErrorTo();
@@ -651,7 +651,7 @@ void LocaleMatcherTest::testDataDriven() {
return;
}
int32_t lineLength;
- const UChar *p;
+ const char16_t *p;
UnicodeString line;
TestCase test;
int32_t numPassed = 0;
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/locnmtst.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/locnmtst.cpp
index 811988b5ac5..846017c9b24 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/locnmtst.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/locnmtst.cpp
@@ -161,7 +161,7 @@ void LocaleDisplayNamesTest::TestPrivateUse() {
void LocaleDisplayNamesTest::TestUldnOpen() {
UErrorCode status = U_ZERO_ERROR;
const int32_t kMaxResultSize = 150; // long enough
- UChar result[150];
+ char16_t result[150];
ULocaleDisplayNames *ldn = uldn_open(Locale::getGermany().getName(), ULDN_STANDARD_NAMES, &status);
int32_t len = uldn_localeDisplayName(ldn, "de_DE", result, kMaxResultSize, &status);
uldn_close(ldn);
@@ -170,11 +170,11 @@ void LocaleDisplayNamesTest::TestUldnOpen() {
UnicodeString str(result, len, kMaxResultSize);
test_assert_equal("Deutsch (Deutschland)", str);
- // make sure that NULL gives us the default locale as usual
- ldn = uldn_open(NULL, ULDN_STANDARD_NAMES, &status);
+ // make sure that nullptr gives us the default locale as usual
+ ldn = uldn_open(nullptr, ULDN_STANDARD_NAMES, &status);
const char *locale = uldn_getLocale(ldn);
if(0 != uprv_strcmp(uloc_getDefault(), locale)) {
- errln("uldn_getLocale(uldn_open(NULL))=%s != default locale %s\n", locale, uloc_getDefault());
+ errln("uldn_getLocale(uldn_open(nullptr))=%s != default locale %s\n", locale, uloc_getDefault());
}
uldn_close(ldn);
test_assert(U_SUCCESS(status));
@@ -183,7 +183,7 @@ void LocaleDisplayNamesTest::TestUldnOpen() {
void LocaleDisplayNamesTest::TestUldnOpenDialect() {
UErrorCode status = U_ZERO_ERROR;
const int32_t kMaxResultSize = 150; // long enough
- UChar result[150];
+ char16_t result[150];
ULocaleDisplayNames *ldn = uldn_open(Locale::getUS().getName(), ULDN_DIALECT_NAMES, &status);
int32_t len = uldn_localeDisplayName(ldn, "en_GB", result, kMaxResultSize, &status);
uldn_close(ldn);
@@ -196,7 +196,7 @@ void LocaleDisplayNamesTest::TestUldnOpenDialect() {
void LocaleDisplayNamesTest::TestUldnWithGarbage() {
UErrorCode status = U_ZERO_ERROR;
const int32_t kMaxResultSize = 150; // long enough
- UChar result[150];
+ char16_t result[150];
ULocaleDisplayNames *ldn = uldn_open(Locale::getUS().getName(), ULDN_DIALECT_NAMES, &status);
int32_t len = uldn_localeDisplayName(ldn, "english (United States) [w", result, kMaxResultSize, &status);
uldn_close(ldn);
@@ -206,7 +206,7 @@ void LocaleDisplayNamesTest::TestUldnWithGarbage() {
void LocaleDisplayNamesTest::TestUldnWithKeywordsAndEverything() {
UErrorCode status = U_ZERO_ERROR;
const int32_t kMaxResultSize = 150; // long enough
- UChar result[150];
+ char16_t result[150];
const char *locname = "en_Hant_US_VALLEY@calendar=gregorian;collation=phonebook";
const char *target = "English (Traditional, United States, VALLEY, "
"Gregorian Calendar, Phonebook Sort Order)";
@@ -222,7 +222,7 @@ void LocaleDisplayNamesTest::TestUldnWithKeywordsAndEverything() {
void LocaleDisplayNamesTest::TestUldnComponents() {
UErrorCode status = U_ZERO_ERROR;
const int32_t kMaxResultSize = 150; // long enough
- UChar result[150];
+ char16_t result[150];
ULocaleDisplayNames *ldn = uldn_open(Locale::getGermany().getName(), ULDN_STANDARD_NAMES, &status);
test_assert(U_SUCCESS(status));
@@ -287,7 +287,7 @@ typedef struct {
UDisplayContext capitalization;
UDisplayContext displayLength;
const char * localeToBeNamed;
- const UChar * result;
+ const char16_t * result;
} LocNameDispContextItem;
static char en[] = "en";
@@ -295,27 +295,27 @@ static char en_cabud[] = "en@calendar=buddhist";
static char en_GB[] = "en_GB";
static char uz_Latn[] = "uz_Latn";
-static UChar daFor_en[] = {0x65,0x6E,0x67,0x65,0x6C,0x73,0x6B,0}; //"engelsk"
-static UChar daFor_en_cabud[] = {0x65,0x6E,0x67,0x65,0x6C,0x73,0x6B,0x20,0x28,0x62,0x75,0x64,0x64,0x68,0x69,0x73,0x74,0x69,0x73,0x6B,0x20,
+static char16_t daFor_en[] = {0x65,0x6E,0x67,0x65,0x6C,0x73,0x6B,0}; //"engelsk"
+static char16_t daFor_en_cabud[] = {0x65,0x6E,0x67,0x65,0x6C,0x73,0x6B,0x20,0x28,0x62,0x75,0x64,0x64,0x68,0x69,0x73,0x74,0x69,0x73,0x6B,0x20,
0x6B,0x61,0x6C,0x65,0x6E,0x64,0x65,0x72,0x29,0}; //"engelsk (buddhistisk kalender)"
-static UChar daFor_en_GB[] = {0x65,0x6E,0x67,0x65,0x6C,0x73,0x6B,0x20,0x28,0x53,0x74,0x6F,0x72,0x62,0x72,0x69,0x74,0x61,0x6E,0x6E,0x69,0x65,0x6E,0x29,0}; //"engelsk (Storbritannien)"
-static UChar daFor_en_GB_D[] = {0x62,0x72,0x69,0x74,0x69,0x73,0x6B,0x20,0x65,0x6E,0x67,0x65,0x6C,0x73,0x6B,0}; //"britisk engelsk"
-static UChar esFor_en[] = {0x69,0x6E,0x67,0x6C,0xE9,0x73,0}; //"ingles" with acute on the e
-static UChar esFor_en_GB[] = {0x69,0x6E,0x67,0x6C,0xE9,0x73,0x20,0x28,0x52,0x65,0x69,0x6E,0x6F,0x20,0x55,0x6E,0x69,0x64,0x6F,0x29,0}; //"ingles (Reino Unido)" ...
-static UChar esFor_en_GB_S[] = {0x69,0x6E,0x67,0x6C,0xE9,0x73,0x20,0x28,0x52,0x55,0x29,0}; //"ingles (RU)" ...
-static UChar esFor_en_GB_D[] = {0x69,0x6E,0x67,0x6C,0xE9,0x73,0x20,0x62,0x72,0x69,0x74,0xE1,0x6E,0x69,0x63,0x6F,0}; //"ingles britanico" with acute on the e, a
-static UChar ruFor_uz_Latn[] = {0x0443,0x0437,0x0431,0x0435,0x043A,0x0441,0x043A,0x0438,0x0439,0x20,0x28,0x043B,0x0430,0x0442,0x0438,0x043D,0x0438,0x0446,0x0430,0x29,0}; // all lowercase
+static char16_t daFor_en_GB[] = {0x65,0x6E,0x67,0x65,0x6C,0x73,0x6B,0x20,0x28,0x53,0x74,0x6F,0x72,0x62,0x72,0x69,0x74,0x61,0x6E,0x6E,0x69,0x65,0x6E,0x29,0}; //"engelsk (Storbritannien)"
+static char16_t daFor_en_GB_D[] = {0x62,0x72,0x69,0x74,0x69,0x73,0x6B,0x20,0x65,0x6E,0x67,0x65,0x6C,0x73,0x6B,0}; //"britisk engelsk"
+static char16_t esFor_en[] = {0x69,0x6E,0x67,0x6C,0xE9,0x73,0}; //"ingles" with acute on the e
+static char16_t esFor_en_GB[] = {0x69,0x6E,0x67,0x6C,0xE9,0x73,0x20,0x28,0x52,0x65,0x69,0x6E,0x6F,0x20,0x55,0x6E,0x69,0x64,0x6F,0x29,0}; //"ingles (Reino Unido)" ...
+static char16_t esFor_en_GB_S[] = {0x69,0x6E,0x67,0x6C,0xE9,0x73,0x20,0x28,0x52,0x55,0x29,0}; //"ingles (RU)" ...
+static char16_t esFor_en_GB_D[] = {0x69,0x6E,0x67,0x6C,0xE9,0x73,0x20,0x62,0x72,0x69,0x74,0xE1,0x6E,0x69,0x63,0x6F,0}; //"ingles britanico" with acute on the e, a
+static char16_t ruFor_uz_Latn[] = {0x0443,0x0437,0x0431,0x0435,0x043A,0x0441,0x043A,0x0438,0x0439,0x20,0x28,0x043B,0x0430,0x0442,0x0438,0x043D,0x0438,0x0446,0x0430,0x29,0}; // all lowercase
#if !UCONFIG_NO_BREAK_ITERATION
-static UChar daFor_en_T[] = {0x45,0x6E,0x67,0x65,0x6C,0x73,0x6B,0}; //"Engelsk"
-static UChar daFor_en_cabudT[]= {0x45,0x6E,0x67,0x65,0x6C,0x73,0x6B,0x20,0x28,0x62,0x75,0x64,0x64,0x68,0x69,0x73,0x74,0x69,0x73,0x6B,0x20,
+static char16_t daFor_en_T[] = {0x45,0x6E,0x67,0x65,0x6C,0x73,0x6B,0}; //"Engelsk"
+static char16_t daFor_en_cabudT[]= {0x45,0x6E,0x67,0x65,0x6C,0x73,0x6B,0x20,0x28,0x62,0x75,0x64,0x64,0x68,0x69,0x73,0x74,0x69,0x73,0x6B,0x20,
0x6B,0x61,0x6C,0x65,0x6E,0x64,0x65,0x72,0x29,0}; //"Engelsk (buddhistisk kalender)"
-static UChar daFor_en_GB_T[] = {0x45,0x6E,0x67,0x65,0x6C,0x73,0x6B,0x20,0x28,0x53,0x74,0x6F,0x72,0x62,0x72,0x69,0x74,0x61,0x6E,0x6E,0x69,0x65,0x6E,0x29,0}; //"Engelsk (Storbritannien)"
-static UChar daFor_en_GB_DT[] = {0x42,0x72,0x69,0x74,0x69,0x73,0x6B,0x20,0x65,0x6E,0x67,0x65,0x6C,0x73,0x6B,0}; //"Britisk engelsk"
-static UChar esFor_en_T[] = {0x49,0x6E,0x67,0x6C,0xE9,0x73,0}; //"Ingles" with acute on the e
-static UChar esFor_en_GB_T[] = {0x49,0x6E,0x67,0x6C,0xE9,0x73,0x20,0x28,0x52,0x65,0x69,0x6E,0x6F,0x20,0x55,0x6E,0x69,0x64,0x6F,0x29,0}; //"Ingles (Reino Unido)" ...
-static UChar esFor_en_GB_ST[] = {0x49,0x6E,0x67,0x6C,0xE9,0x73,0x20,0x28,0x52,0x55,0x29,0}; //"Ingles (RU)" ...
-static UChar esFor_en_GB_DT[] = {0x49,0x6E,0x67,0x6C,0xE9,0x73,0x20,0x62,0x72,0x69,0x74,0xE1,0x6E,0x69,0x63,0x6F,0}; //"Ingles britanico" with acute on the e, a
-static UChar ruFor_uz_Latn_T[]= {0x0423,0x0437,0x0431,0x0435,0x043A,0x0441,0x043A,0x0438,0x0439,0x20,0x28,0x043B,0x0430,0x0442,0x0438,0x043D,0x0438,0x0446,0x0430,0x29,0}; // first char upper
+static char16_t daFor_en_GB_T[] = {0x45,0x6E,0x67,0x65,0x6C,0x73,0x6B,0x20,0x28,0x53,0x74,0x6F,0x72,0x62,0x72,0x69,0x74,0x61,0x6E,0x6E,0x69,0x65,0x6E,0x29,0}; //"Engelsk (Storbritannien)"
+static char16_t daFor_en_GB_DT[] = {0x42,0x72,0x69,0x74,0x69,0x73,0x6B,0x20,0x65,0x6E,0x67,0x65,0x6C,0x73,0x6B,0}; //"Britisk engelsk"
+static char16_t esFor_en_T[] = {0x49,0x6E,0x67,0x6C,0xE9,0x73,0}; //"Ingles" with acute on the e
+static char16_t esFor_en_GB_T[] = {0x49,0x6E,0x67,0x6C,0xE9,0x73,0x20,0x28,0x52,0x65,0x69,0x6E,0x6F,0x20,0x55,0x6E,0x69,0x64,0x6F,0x29,0}; //"Ingles (Reino Unido)" ...
+static char16_t esFor_en_GB_ST[] = {0x49,0x6E,0x67,0x6C,0xE9,0x73,0x20,0x28,0x52,0x55,0x29,0}; //"Ingles (RU)" ...
+static char16_t esFor_en_GB_DT[] = {0x49,0x6E,0x67,0x6C,0xE9,0x73,0x20,0x62,0x72,0x69,0x74,0xE1,0x6E,0x69,0x63,0x6F,0}; //"Ingles britanico" with acute on the e, a
+static char16_t ruFor_uz_Latn_T[]= {0x0423,0x0437,0x0431,0x0435,0x043A,0x0441,0x043A,0x0438,0x0439,0x20,0x28,0x043B,0x0430,0x0442,0x0438,0x043D,0x0438,0x0446,0x0430,0x29,0}; // first char upper
#endif /* #if !UCONFIG_NO_BREAK_ITERATION */
static const LocNameDispContextItem ctxtItems[] = {
@@ -363,12 +363,12 @@ static const LocNameDispContextItem ctxtItems[] = {
{ "es", UDISPCTX_DIALECT_NAMES, UDISPCTX_CAPITALIZATION_FOR_STANDALONE, UDISPCTX_LENGTH_FULL, en_GB, esFor_en_GB_DT },
{ "ru", UDISPCTX_STANDARD_NAMES, UDISPCTX_CAPITALIZATION_FOR_STANDALONE, UDISPCTX_LENGTH_FULL, uz_Latn, ruFor_uz_Latn_T },
#endif /* #if !UCONFIG_NO_BREAK_ITERATION */
- { NULL, (UDisplayContext)0, (UDisplayContext)0, (UDisplayContext)0, NULL, NULL }
+ { nullptr, (UDisplayContext)0, (UDisplayContext)0, (UDisplayContext)0, nullptr, nullptr }
};
void LocaleDisplayNamesTest::TestUldnDisplayContext() {
const LocNameDispContextItem * ctxtItemPtr;
- for (ctxtItemPtr = ctxtItems; ctxtItemPtr->displayLocale != NULL; ctxtItemPtr++) {
+ for (ctxtItemPtr = ctxtItems; ctxtItemPtr->displayLocale != nullptr; ctxtItemPtr++) {
UDisplayContext contexts[3] = {ctxtItemPtr->dialectHandling, ctxtItemPtr->capitalization, ctxtItemPtr->displayLength};
UErrorCode status = U_ZERO_ERROR;
ULocaleDisplayNames * uldn = uldn_openForContext(ctxtItemPtr->displayLocale, contexts, 3, &status);
@@ -388,7 +388,7 @@ void LocaleDisplayNamesTest::TestUldnDisplayContext() {
displayLength != ctxtItemPtr->displayLength) {
errln("FAIL: uldn_getContext retrieved incorrect dialectHandling, capitalization, or displayLength");
} else {
- UChar nameBuf[ULOC_FULLNAME_CAPACITY];
+ char16_t nameBuf[ULOC_FULLNAME_CAPACITY];
int32_t len = uldn_localeDisplayName(uldn, ctxtItemPtr->localeToBeNamed, nameBuf, ULOC_FULLNAME_CAPACITY, &status);
if (U_FAILURE(status)) {
dataerrln(UnicodeString("FAIL: uldn_localeDisplayName status: ") + u_errorName(status));
@@ -424,7 +424,7 @@ void LocaleDisplayNamesTest::TestRootEtc() {
void LocaleDisplayNamesTest::TestNumericRegionID() {
UErrorCode err = U_ZERO_ERROR;
ULocaleDisplayNames* ldn = uldn_open("es_MX", ULDN_STANDARD_NAMES, &err);
- UChar displayName[200];
+ char16_t displayName[200];
uldn_regionDisplayName(ldn, "019", displayName, 200, &err);
test_assert(U_SUCCESS(err));
test_assert_equal(UnicodeString(u"América"), UnicodeString(displayName));
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/locnmtst.h b/Build/source/libs/icu/icu-src/source/test/intltest/locnmtst.h
index f8cefb6e37a..ab6867d0e4c 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/locnmtst.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/locnmtst.h
@@ -17,28 +17,28 @@ public:
LocaleDisplayNamesTest();
virtual ~LocaleDisplayNamesTest();
- void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par = NULL) override;
+ void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par = nullptr) override;
#if !UCONFIG_NO_FORMATTING
/**
* Test methods to set and get data fields
**/
- void TestCreate(void);
- void TestCreateDialect(void);
- void TestWithKeywordsAndEverything(void);
- void TestUldnOpen(void);
- void TestUldnOpenDialect(void);
- void TestUldnWithKeywordsAndEverything(void);
- void TestUldnComponents(void);
- void TestRootEtc(void);
- void TestCurrencyKeyword(void);
- void TestUnknownCurrencyKeyword(void);
- void TestUntranslatedKeywords(void);
- void TestPrivateUse(void);
- void TestUldnDisplayContext(void);
- void TestUldnWithGarbage(void);
- void TestSubstituteHandling(void);
- void TestNumericRegionID(void);
+ void TestCreate();
+ void TestCreateDialect();
+ void TestWithKeywordsAndEverything();
+ void TestUldnOpen();
+ void TestUldnOpenDialect();
+ void TestUldnWithKeywordsAndEverything();
+ void TestUldnComponents();
+ void TestRootEtc();
+ void TestCurrencyKeyword();
+ void TestUnknownCurrencyKeyword();
+ void TestUntranslatedKeywords();
+ void TestPrivateUse();
+ void TestUldnDisplayContext();
+ void TestUldnWithGarbage();
+ void TestSubstituteHandling();
+ void TestNumericRegionID();
void VerifySubstitute(LocaleDisplayNames* ldn);
void VerifyNoSubstitute(LocaleDisplayNames* ldn);
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/loctest.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/loctest.cpp
index db3401b073a..889abebb0b8 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/loctest.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/loctest.cpp
@@ -11,6 +11,7 @@
#include <iterator>
#include <set>
#include <utility>
+#include <cctype>
#include "loctest.h"
#include "unicode/localebuilder.h"
@@ -180,7 +181,7 @@ static const char* const rawData[33][8] = {
} UPRV_BLOCK_MACRO_END
LocaleTest::LocaleTest()
-: dataTable(NULL)
+: dataTable(nullptr)
{
setUpDataTable();
}
@@ -234,6 +235,7 @@ void LocaleTest::runIndexedTest( int32_t index, UBool exec, const char* &name, c
TESTCASE_AUTO(TestAddLikelySubtags);
TESTCASE_AUTO(TestMinimizeSubtags);
TESTCASE_AUTO(TestAddLikelyAndMinimizeSubtags);
+ TESTCASE_AUTO(TestDataDrivenLikelySubtags);
TESTCASE_AUTO(TestKeywordVariants);
TESTCASE_AUTO(TestCreateUnicodeKeywords);
TESTCASE_AUTO(TestKeywordVariantParsing);
@@ -371,8 +373,8 @@ void LocaleTest::TestBasicGetters() {
if (temp != UnicodeString("") )
errln("Variant code mismatch: " + temp + " versus \"\"");
- if (Locale::getDefault() != Locale::createFromName(NULL))
- errln("Locale::getDefault() == Locale::createFromName(NULL)");
+ if (Locale::getDefault() != Locale::createFromName(nullptr))
+ errln("Locale::getDefault() == Locale::createFromName(nullptr)");
/*----------*/
// NOTE: There used to be a special test for locale names that had language or
@@ -490,7 +492,7 @@ void LocaleTest::TestSimpleResourceInfo() {
errln(" ISO-3 country code mismatch: " + temp
+ " versus " + dataTable[CTRY3][i]);
- sprintf(temp2, "%x", (int)testLocale.getLCID());
+ snprintf(temp2, sizeof(temp2), "%x", (int)testLocale.getLCID());
if (UnicodeString(temp2) != dataTable[LCID][i])
errln((UnicodeString)" LCID mismatch: " + temp2 + " versus "
+ dataTable[LCID][i]);
@@ -927,8 +929,8 @@ LocaleTest::TestGetLangsAndCountries()
;
/* TODO: Change this test to be more like the cloctst version? */
- if (testCount != 595)
- errln("Expected getISOLanguages() to return 595 languages; it returned %d", testCount);
+ if (testCount != 601)
+ errln("Expected getISOLanguages() to return 601 languages; it returned %d", testCount);
else {
for (i = 0; i < 15; i++) {
int32_t j;
@@ -958,8 +960,8 @@ LocaleTest::TestGetLangsAndCountries()
for(testCount=0;test[testCount];testCount++)
;
- if (testCount != 253){
- errln("Expected getISOCountries to return 253 countries; it returned %d", testCount);
+ if (testCount != 254){
+ errln("Expected getISOCountries to return 254 countries; it returned %d", testCount);
}else {
for (i = 0; i < spot2Len; i++) {
int32_t j;
@@ -1192,8 +1194,8 @@ void
LocaleTest::TestThaiCurrencyFormat()
{
UErrorCode status = U_ZERO_ERROR;
- DecimalFormat *thaiCurrency = (DecimalFormat*)NumberFormat::createCurrencyInstance(
- Locale("th", "TH"), status);
+ DecimalFormat *thaiCurrency = dynamic_cast<DecimalFormat*>(NumberFormat::createCurrencyInstance(
+ Locale("th", "TH"), status));
UnicodeString posPrefix(u"\u0E3F");
UnicodeString temp;
@@ -1226,7 +1228,7 @@ LocaleTest::TestThaiCurrencyFormat()
void
LocaleTest::TestEuroSupport()
{
- UChar euro = 0x20ac;
+ char16_t euro = 0x20ac;
const UnicodeString EURO_CURRENCY(&euro, 1, 1); // Look for this UnicodeString in formatted Euro currency
const char* localeArr[] = {
"ca_ES",
@@ -1250,7 +1252,7 @@ LocaleTest::TestEuroSupport()
"nl_BE",
"nl_NL",
"pt_PT",
- NULL
+ nullptr
};
const char** locales = localeArr;
@@ -1258,7 +1260,7 @@ LocaleTest::TestEuroSupport()
UnicodeString temp;
- for (;*locales!=NULL;locales++) {
+ for (;*locales!=nullptr;locales++) {
Locale loc (*locales);
UnicodeString temp;
NumberFormat *nf = NumberFormat::createCurrencyInstance(loc, status);
@@ -1287,8 +1289,8 @@ LocaleTest::TestEuroSupport()
delete nf;
}
- UnicodeString dollarStr("USD", ""), euroStr("EUR", ""), genericStr((UChar)0x00a4), resultStr;
- UChar tmp[4];
+ UnicodeString dollarStr("USD", ""), euroStr("EUR", ""), genericStr((char16_t)0x00a4), resultStr;
+ char16_t tmp[4];
status = U_ZERO_ERROR;
ucurr_forLocale("en_US", tmp, 4, &status);
@@ -1313,7 +1315,7 @@ LocaleTest::TestEuroSupport()
}
int32_t invalidLen = ucurr_forLocale("en_QQ", tmp, 4, &status);
if (invalidLen || U_SUCCESS(status)) {
- errln("Fail: en_QQ didn't return NULL");
+ errln("Fail: en_QQ didn't return nullptr");
}
// The currency keyword value is as long as the destination buffer.
@@ -1405,15 +1407,17 @@ LocaleTest::Test4139940()
df_full.format(mydate, str, pos);
// Make sure that o circumflex (\u00F4) is NOT there, and
// o double acute (\u0151) IS.
- UChar ocf = 0x00f4;
- UChar oda = 0x0151;
+ char16_t ocf = 0x00f4;
+ char16_t oda = 0x0151;
+
if (str.indexOf(oda) < 0 || str.indexOf(ocf) >= 0) {
- /* If the default locale is "th" this test will fail because of the buddhist calendar. */
- if (strcmp(Locale::getDefault().getLanguage(), "th") != 0) {
+ /* If the default calendar of the default locale is not "gregorian" this test will fail. */
+ LocalPointer<Calendar> defaultCalendar(Calendar::createInstance(status));
+ if (strcmp(defaultCalendar->getType(), "gregorian") == 0) {
errln("Fail: Monday in Hungarian is wrong - oda's index is %d and ocf's is %d",
str.indexOf(oda), str.indexOf(ocf));
} else {
- logln(UnicodeString("An error is produce in buddhist calendar."));
+ logln(UnicodeString("An error is produce in non Gregorian calendar."));
}
logln(UnicodeString("String is: ") + str );
}
@@ -1471,7 +1475,7 @@ LocaleTest::Test4147315()
const char *result = locale.getISO3Country();
// Change to conform to C api usage
- if((result==NULL)||(result[0] != 0))
+ if((result==nullptr)||(result[0] != 0))
errln("ERROR: getISO3Country() returns: " + UnicodeString(result,"") +
" for locale '" + (temp=locale.getName()) + "' rather than exception" );
}
@@ -1492,7 +1496,7 @@ LocaleTest::Test4147317()
const char *result = locale.getISO3Language();
// Change to conform to C api usage
- if((result==NULL)||(result[0] != 0))
+ if((result==nullptr)||(result[0] != 0))
errln("ERROR: getISO3Language() returns: " + UnicodeString(result,"") +
" for locale '" + (temp=locale.getName()) + "' rather than exception" );
}
@@ -1710,21 +1714,26 @@ LocaleTest::TestAddLikelyAndMinimizeSubtags() {
const char* const remove;
} full_data[] = {
{
+ "und",
+ "en_Latn_US",
+ "en"
+ },
+ {
"und_AQ",
- "_Latn_AQ",
- "_AQ"
+ "en_Latn_AQ",
+ "en_AQ"
}, {
"und_Zzzz_AQ",
- "_Latn_AQ",
- "_AQ"
+ "en_Latn_AQ",
+ "en_AQ"
}, {
"und_Latn_AQ",
- "_Latn_AQ",
- "_AQ"
+ "en_Latn_AQ",
+ "en_AQ"
}, {
"und_Moon_AQ",
- "_Moon_AQ",
- "_Moon_AQ"
+ "en_Moon_AQ",
+ "en_Moon_AQ"
}, {
"aa",
"aa_Latn_ET",
@@ -2095,7 +2104,7 @@ LocaleTest::TestAddLikelyAndMinimizeSubtags() {
"pa_PK"
}, {
"pap",
- "pap_Latn_AW",
+ "pap_Latn_CW",
"pap"
}, {
"pau",
@@ -2515,8 +2524,8 @@ LocaleTest::TestAddLikelyAndMinimizeSubtags() {
"am"
}, {
"und_Ethi_ER",
- "am_Ethi_ER",
- "am_ER"
+ "ti_Ethi_ER",
+ "ti_ER"
}, {
"und_FI",
"fi_Latn_FI",
@@ -3247,8 +3256,8 @@ LocaleTest::TestAddLikelyAndMinimizeSubtags() {
"zh_HK"
}, {
"und_AQ",
- "_Latn_AQ",
- "_AQ"
+ "en_Latn_AQ",
+ "en_AQ"
}, {
"und_Zzzz",
"en_Latn_US",
@@ -3271,8 +3280,8 @@ LocaleTest::TestAddLikelyAndMinimizeSubtags() {
"zh_HK"
}, {
"und_Zzzz_AQ",
- "_Latn_AQ",
- "_AQ"
+ "en_Latn_AQ",
+ "en_AQ"
}, {
"und_Latn",
"en_Latn_US",
@@ -3291,12 +3300,12 @@ LocaleTest::TestAddLikelyAndMinimizeSubtags() {
"trv"
}, {
"und_Latn_HK",
- "zh_Latn_HK",
- "zh_Latn_HK"
+ "en_Latn_HK",
+ "en_HK"
}, {
"und_Latn_AQ",
- "_Latn_AQ",
- "_AQ"
+ "en_Latn_AQ",
+ "en_AQ"
}, {
"und_Hans",
"zh_Hans_CN",
@@ -3367,8 +3376,8 @@ LocaleTest::TestAddLikelyAndMinimizeSubtags() {
"zh_Moon_HK"
}, {
"und_Moon_AQ",
- "_Moon_AQ",
- "_Moon_AQ"
+ "en_Moon_AQ",
+ "en_Moon_AQ"
}, {
"es",
"es_Latn_ES",
@@ -3792,7 +3801,7 @@ LocaleTest::TestAddLikelyAndMinimizeSubtags() {
}, {
"aae_Latn_IT",
"aae_Latn_IT",
- "aae_Latn_IT"
+ "aae"
}, {
"aae_Thai_CO",
"aae_Thai_CO",
@@ -3800,7 +3809,7 @@ LocaleTest::TestAddLikelyAndMinimizeSubtags() {
}, {
"und_CW",
"pap_Latn_CW",
- "pap_CW"
+ "pap"
}, {
"zh_Hant",
"zh_Hant_TW",
@@ -3823,8 +3832,8 @@ LocaleTest::TestAddLikelyAndMinimizeSubtags() {
"es_419"
}, {
"und_150",
- "ru_Cyrl_RU",
- "ru"
+ "en_Latn_150",
+ "en_150"
}, {
"und_AT",
"de_Latn_AT",
@@ -3863,9 +3872,8 @@ LocaleTest::TestAddLikelyAndMinimizeSubtags() {
}
}
-
void
-LocaleTest::TestKeywordVariants(void) {
+LocaleTest::TestKeywordVariants() {
static const struct {
const char *localeID;
const char *expectedLocaleID;
@@ -3897,10 +3905,10 @@ LocaleTest::TestKeywordVariants(void) {
UErrorCode status = U_ZERO_ERROR;
int32_t i = 0, j = 0;
- const char *result = NULL;
+ const char *result = nullptr;
StringEnumeration *keywords;
int32_t keyCount = 0;
- const char *keyword = NULL;
+ const char *keyword = nullptr;
const UnicodeString *keywordString;
int32_t keywordLen = 0;
@@ -3921,14 +3929,14 @@ LocaleTest::TestKeywordVariants(void) {
if(keyCount) {
for(j = 0;;) {
if((j&1)==0) {
- if((keyword = keywords->next(&keywordLen, status)) == NULL) {
+ if((keyword = keywords->next(&keywordLen, status)) == nullptr) {
break;
}
if(strcmp(keyword, testCases[i].expectedKeywords[j]) != 0) {
err("Expected to get keyword value %s, got %s\n", testCases[i].expectedKeywords[j], keyword);
}
} else {
- if((keywordString = keywords->snext(status)) == NULL) {
+ if((keywordString = keywords->snext(status)) == nullptr) {
break;
}
if(*keywordString != UnicodeString(testCases[i].expectedKeywords[j], "")) {
@@ -3940,7 +3948,7 @@ LocaleTest::TestKeywordVariants(void) {
if(j == keyCount / 2) {
// replace keywords with a clone of itself
StringEnumeration *k2 = keywords->clone();
- if(k2 == NULL || keyCount != k2->count(status)) {
+ if(k2 == nullptr || keyCount != k2->count(status)) {
errln("KeywordEnumeration.clone() failed");
} else {
delete keywords;
@@ -3950,7 +3958,7 @@ LocaleTest::TestKeywordVariants(void) {
}
keywords->reset(status); // Make sure that reset works.
for(j = 0;;) {
- if((keyword = keywords->next(&keywordLen, status)) == NULL) {
+ if((keyword = keywords->next(&keywordLen, status)) == nullptr) {
break;
}
if(strcmp(keyword, testCases[i].expectedKeywords[j]) != 0) {
@@ -3973,7 +3981,7 @@ LocaleTest::TestKeywordVariants(void) {
void
-LocaleTest::TestCreateUnicodeKeywords(void) {
+LocaleTest::TestCreateUnicodeKeywords() {
IcuTestErrorCode status(*this, "TestCreateUnicodeKeywords()");
static const Locale l("de@calendar=buddhist;collation=phonebook");
@@ -3981,6 +3989,8 @@ LocaleTest::TestCreateUnicodeKeywords(void) {
LocalPointer<StringEnumeration> keys(l.createUnicodeKeywords(status));
status.errIfFailureAndReset("\"%s\"", l.getName());
+ assertEquals("count", 2, keys->count(status));
+
const char* key;
int32_t resultLength;
@@ -4029,7 +4039,7 @@ LocaleTest::TestCreateUnicodeKeywords(void) {
void
-LocaleTest::TestKeywordVariantParsing(void) {
+LocaleTest::TestKeywordVariantParsing() {
static const struct {
const char *localeID;
const char *keyword;
@@ -4060,7 +4070,7 @@ LocaleTest::TestKeywordVariantParsing(void) {
}
void
-LocaleTest::TestCreateKeywordSet(void) {
+LocaleTest::TestCreateKeywordSet() {
IcuTestErrorCode status(*this, "TestCreateKeywordSet()");
static const Locale l("de@calendar=buddhist;collation=phonebook");
@@ -4079,7 +4089,7 @@ LocaleTest::TestCreateKeywordSet(void) {
}
void
-LocaleTest::TestCreateKeywordSetEmpty(void) {
+LocaleTest::TestCreateKeywordSetEmpty() {
IcuTestErrorCode status(*this, "TestCreateKeywordSetEmpty()");
static const Locale l("de");
@@ -4094,7 +4104,7 @@ LocaleTest::TestCreateKeywordSetEmpty(void) {
}
void
-LocaleTest::TestCreateKeywordSetWithPrivateUse(void) {
+LocaleTest::TestCreateKeywordSetWithPrivateUse() {
IcuTestErrorCode status(*this, "TestCreateKeywordSetWithPrivateUse()");
static const char tag[] = "en-US-u-ca-gregory-x-foo";
@@ -4115,7 +4125,7 @@ LocaleTest::TestCreateKeywordSetWithPrivateUse(void) {
}
void
-LocaleTest::TestCreateUnicodeKeywordSet(void) {
+LocaleTest::TestCreateUnicodeKeywordSet() {
IcuTestErrorCode status(*this, "TestCreateUnicodeKeywordSet()");
static const Locale l("de@calendar=buddhist;collation=phonebook");
@@ -4131,10 +4141,15 @@ LocaleTest::TestCreateUnicodeKeywordSet(void) {
result.find("ca") != result.end());
assertTrue("set::find(\"co\")",
result.find("co") != result.end());
+
+ LocalPointer<StringEnumeration> se(l.createUnicodeKeywords(status), status);
+ status.errIfFailureAndReset("\"%s\" createUnicodeKeywords()", l.getName());
+ assertEquals("count()", 2, se->count(status));
+ status.errIfFailureAndReset("\"%s\" count()", l.getName());
}
void
-LocaleTest::TestCreateUnicodeKeywordSetEmpty(void) {
+LocaleTest::TestCreateUnicodeKeywordSetEmpty() {
IcuTestErrorCode status(*this, "TestCreateUnicodeKeywordSetEmpty()");
static const Locale l("de");
@@ -4146,10 +4161,14 @@ LocaleTest::TestCreateUnicodeKeywordSetEmpty(void) {
status.errIfFailureAndReset("\"%s\"", l.getName());
assertEquals("set::size()", 0, static_cast<int32_t>(result.size()));
+
+ LocalPointer<StringEnumeration> se(l.createUnicodeKeywords(status), status);
+ assertTrue("createUnicodeKeywords", se.isNull());
+ status.expectErrorAndReset(U_MEMORY_ALLOCATION_ERROR);
}
void
-LocaleTest::TestCreateUnicodeKeywordSetWithPrivateUse(void) {
+LocaleTest::TestCreateUnicodeKeywordSetWithPrivateUse() {
IcuTestErrorCode status(*this, "TestCreateUnicodeKeywordSetWithPrivateUse()");
static const char tag[] = "en-US-u-ca-gregory-x-foo";
@@ -4166,10 +4185,16 @@ LocaleTest::TestCreateUnicodeKeywordSetWithPrivateUse(void) {
result.find("x") == result.end());
assertTrue("getUnicodeKeywords set::find(\"foo\")",
result.find("foo") == result.end());
+ assertEquals("set::size()", 1, static_cast<int32_t>(result.size()));
+
+ LocalPointer<StringEnumeration> se(l.createUnicodeKeywords(status), status);
+ status.errIfFailureAndReset("\"%s\" createUnicodeKeywords()", l.getName());
+ assertEquals("count()", 1, se->count(status));
+ status.errIfFailureAndReset("\"%s\" count()", l.getName());
}
void
-LocaleTest::TestGetKeywordValueStdString(void) {
+LocaleTest::TestGetKeywordValueStdString() {
IcuTestErrorCode status(*this, "TestGetKeywordValueStdString()");
static const char tag[] = "fa-u-nu-latn";
@@ -4185,7 +4210,7 @@ LocaleTest::TestGetKeywordValueStdString(void) {
}
void
-LocaleTest::TestGetUnicodeKeywordValueStdString(void) {
+LocaleTest::TestGetUnicodeKeywordValueStdString() {
IcuTestErrorCode status(*this, "TestGetUnicodeKeywordValueStdString()");
static const char keyword[] = "co";
@@ -4199,7 +4224,7 @@ LocaleTest::TestGetUnicodeKeywordValueStdString(void) {
}
void
-LocaleTest::TestSetKeywordValue(void) {
+LocaleTest::TestSetKeywordValue() {
static const struct {
const char *keyword;
const char *value;
@@ -4252,7 +4277,7 @@ LocaleTest::TestSetKeywordValue(void) {
}
void
-LocaleTest::TestSetKeywordValueStringPiece(void) {
+LocaleTest::TestSetKeywordValueStringPiece() {
IcuTestErrorCode status(*this, "TestSetKeywordValueStringPiece()");
Locale l(Locale::getGerman());
@@ -4264,7 +4289,7 @@ LocaleTest::TestSetKeywordValueStringPiece(void) {
}
void
-LocaleTest::TestSetUnicodeKeywordValueStringPiece(void) {
+LocaleTest::TestSetUnicodeKeywordValueStringPiece() {
IcuTestErrorCode status(*this, "TestSetUnicodeKeywordValueStringPiece()");
Locale l(Locale::getGerman());
@@ -4299,7 +4324,7 @@ LocaleTest::TestSetUnicodeKeywordValueStringPiece(void) {
}
void
-LocaleTest::TestGetBaseName(void) {
+LocaleTest::TestGetBaseName() {
static const struct {
const char *localeID;
const char *baseName;
@@ -4389,7 +4414,7 @@ void LocaleTest::_checklocs(const char* label,
}
}
-void LocaleTest::TestGetLocale(void) {
+void LocaleTest::TestGetLocale() {
#if !UCONFIG_NO_SERVICE
const char *req;
Locale valid, actual, reqLoc;
@@ -4431,7 +4456,7 @@ void LocaleTest::TestGetLocale(void) {
dataerrln("FAIL: NumberFormat::createInstance failed - %s", u_errorName(ec));
} else {
DecimalFormat* dec = dynamic_cast<DecimalFormat*>(nf);
- if (dec == NULL) {
+ if (dec == nullptr) {
errln("FAIL: NumberFormat::createInstance does not return a DecimalFormat");
return;
}
@@ -4444,8 +4469,8 @@ void LocaleTest::TestGetLocale(void) {
}
const DecimalFormatSymbols* sym = dec->getDecimalFormatSymbols();
- if (sym == NULL) {
- errln("FAIL: getDecimalFormatSymbols returned NULL");
+ if (sym == nullptr) {
+ errln("FAIL: getDecimalFormatSymbols returned nullptr");
return;
}
valid = sym->getLocale(ULOC_VALID_LOCALE, ec);
@@ -4472,7 +4497,7 @@ void LocaleTest::TestGetLocale(void) {
dataerrln("Error calling DateFormat::createDateInstance()");
} else {
SimpleDateFormat* dat = dynamic_cast<SimpleDateFormat*>(df);
- if (dat == NULL) {
+ if (dat == nullptr) {
errln("FAIL: DateFormat::createInstance does not return a SimpleDateFormat");
return;
}
@@ -4485,8 +4510,8 @@ void LocaleTest::TestGetLocale(void) {
}
const DateFormatSymbols* sym = dat->getDateFormatSymbols();
- if (sym == NULL) {
- errln("FAIL: getDateFormatSymbols returned NULL");
+ if (sym == nullptr) {
+ errln("FAIL: getDateFormatSymbols returned nullptr");
return;
}
valid = sym->getLocale(ULOC_VALID_LOCALE, ec);
@@ -4571,7 +4596,7 @@ void LocaleTest::TestGetLocale(void) {
{
UErrorCode ec = U_ZERO_ERROR; // give each resource type its own error code
- checkRegisteredCollators(NULL); // Don't expect any extras
+ checkRegisteredCollators(nullptr); // Don't expect any extras
req = "hi_IN_BHOPAL";
reqLoc = Locale::createFromName(req);
@@ -4634,7 +4659,7 @@ void LocaleTest::TestGetLocale(void) {
}
delete coll;
- checkRegisteredCollators(NULL); // extra should be gone again
+ checkRegisteredCollators(nullptr); // extra should be gone again
}
#endif
#endif
@@ -4645,9 +4670,9 @@ void LocaleTest::TestGetLocale(void) {
* Compare Collator::getAvailableLocales(int) [ "old", returning an array ]
* with Collator::getAvailableLocales() [ "new", returning a StringEnumeration ]
* These should be identical (check their API docs) EXCEPT that
- * if expectExtra is non-NULL, it will be in the "new" array but not "old".
+ * if expectExtra is non-nullptr, it will be in the "new" array but not "old".
* Does not return any status but calls errln on error.
- * @param expectExtra an extra locale, will be in "new" but not "old". Or NULL.
+ * @param expectExtra an extra locale, will be in "new" but not "old". Or nullptr.
*/
void LocaleTest::checkRegisteredCollators(const char *expectExtra) {
UErrorCode status = U_ZERO_ERROR;
@@ -4660,15 +4685,15 @@ void LocaleTest::checkRegisteredCollators(const char *expectExtra) {
// the 'old' list (non enumeration)
const Locale* oldList = Collator::getAvailableLocales(count1);
- if(oldList == NULL) {
- dataerrln("Error: Collator::getAvailableLocales(count) returned NULL");
+ if(oldList == nullptr) {
+ dataerrln("Error: Collator::getAvailableLocales(count) returned nullptr");
return;
}
// the 'new' list (enumeration)
LocalPointer<StringEnumeration> newEnum(Collator::getAvailableLocales());
if(newEnum.isNull()) {
- errln("Error: collator::getAvailableLocales() returned NULL");
+ errln("Error: collator::getAvailableLocales() returned nullptr");
return;
}
@@ -4685,7 +4710,7 @@ void LocaleTest::checkRegisteredCollators(const char *expectExtra) {
oldList[i].getName());
return;
}
- if(expectExtra != NULL && !strcmp(expectExtra, oldList[i].getName())) {
+ if(expectExtra != nullptr && !strcmp(expectExtra, oldList[i].getName())) {
errln("Inexplicably, Collator::getAvailableCollators(count) had registered collator %s. This shouldn't happen, so I am going to consider it an error.\n", expectExtra);
}
}
@@ -4696,14 +4721,14 @@ void LocaleTest::checkRegisteredCollators(const char *expectExtra) {
while((locStr = newEnum->snext(status)) && U_SUCCESS(status)) {
count2++;
- if(expectExtra != NULL && expectStr == *locStr) {
+ if(expectExtra != nullptr && expectStr == *locStr) {
foundExpected = true;
logln(UnicodeString("Found expected registered collator: ","") + expectStr);
}
(void)foundExpected; // Hush unused variable compiler warning.
if( oldHash.geti(*locStr) == 0 ) {
- if(expectExtra != NULL && expectStr==*locStr) {
+ if(expectExtra != nullptr && expectStr==*locStr) {
logln(UnicodeString("As expected, Collator::getAvailableLocales(count) is missing registered collator ") + expectStr);
} else {
errln(UnicodeString("Error: Collator::getAvailableLocales(count) is missing: ","")
@@ -4724,7 +4749,7 @@ void LocaleTest::checkRegisteredCollators(const char *expectExtra) {
}
int32_t expectCount2 = count1;
- if(expectExtra != NULL) {
+ if(expectExtra != nullptr) {
expectCount2 ++; // if an extra item registered, bump the expect count
}
@@ -4734,7 +4759,7 @@ void LocaleTest::checkRegisteredCollators(const char *expectExtra) {
-void LocaleTest::TestVariantWithOutCountry(void) {
+void LocaleTest::TestVariantWithOutCountry() {
Locale loc("en","","POSIX");
if (0 != strcmp(loc.getVariant(), "POSIX")) {
errln("FAIL: en__POSIX didn't get parsed correctly - name is %s - expected %s got %s", loc.getName(), "POSIX", loc.getVariant());
@@ -4775,7 +4800,7 @@ static Locale _canonicalize(int32_t selector, /* 0==createFromName, 1==createCan
}
}
-void LocaleTest::TestCanonicalization(void)
+void LocaleTest::TestCanonicalization()
{
static const struct {
const char *localeID; /* input */
@@ -4896,7 +4921,7 @@ void LocaleTest::TestCanonicalization(void)
}
}
-void LocaleTest::TestCanonicalize(void)
+void LocaleTest::TestCanonicalize()
{
static const struct {
const char *localeID; /* input */
@@ -5053,12 +5078,12 @@ void LocaleTest::TestCanonicalize(void)
}
}
-void LocaleTest::TestCurrencyByDate(void)
+void LocaleTest::TestCurrencyByDate()
{
#if !UCONFIG_NO_FORMATTING
UErrorCode status = U_ZERO_ERROR;
UDate date = uprv_getUTCtime();
- UChar TMP[4] = {0, 0, 0, 0};
+ char16_t TMP[4] = {0, 0, 0, 0};
int32_t index = 0;
int32_t resLen = 0;
UnicodeString tempStr, resultStr;
@@ -5072,7 +5097,7 @@ void LocaleTest::TestCurrencyByDate(void)
}
resLen = ucurr_forLocaleAndDate("eo_AM", date, index, TMP, 4, &status);
if (resLen != 0) {
- errcheckln(status, "FAIL: eo_AM didn't return NULL - %s", u_errorName(status));
+ errcheckln(status, "FAIL: eo_AM didn't return nullptr - %s", u_errorName(status));
}
status = U_ZERO_ERROR;
@@ -5213,20 +5238,20 @@ void LocaleTest::TestCurrencyByDate(void)
}
resLen = ucurr_forLocaleAndDate("eo_UA", date, index, TMP, 4, &status);
if (resLen != 0) {
- errcheckln(status, "FAIL: eo_UA didn't return NULL - %s", u_errorName(status));
+ errcheckln(status, "FAIL: eo_UA didn't return nullptr - %s", u_errorName(status));
}
status = U_ZERO_ERROR;
// Test index bounds
resLen = ucurr_forLocaleAndDate("eo_UA", date, 100, TMP, 4, &status);
if (resLen != 0) {
- errcheckln(status, "FAIL: eo_UA didn't return NULL - %s", u_errorName(status));
+ errcheckln(status, "FAIL: eo_UA didn't return nullptr - %s", u_errorName(status));
}
status = U_ZERO_ERROR;
resLen = ucurr_forLocaleAndDate("eo_UA", date, 0, TMP, 4, &status);
if (resLen != 0) {
- errcheckln(status, "FAIL: eo_UA didn't return NULL - %s", u_errorName(status));
+ errcheckln(status, "FAIL: eo_UA didn't return nullptr - %s", u_errorName(status));
}
status = U_ZERO_ERROR;
@@ -5239,12 +5264,12 @@ void LocaleTest::TestCurrencyByDate(void)
status = U_ZERO_ERROR;
resLen = ucurr_forLocaleAndDate("eo_QQ", date, 1, TMP, 4, &status);
if (resLen != 0) {
- errcheckln(status, "FAIL: eo_QQ didn't return NULL - %s", u_errorName(status));
+ errcheckln(status, "FAIL: eo_QQ didn't return nullptr - %s", u_errorName(status));
}
status = U_ZERO_ERROR;
resLen = ucurr_forLocaleAndDate("eo_QQ", date, 0, TMP, 4, &status);
if (resLen != 0) {
- errcheckln(status, "FAIL: eo_QQ didn't return NULL - %s", u_errorName(status));
+ errcheckln(status, "FAIL: eo_QQ didn't return nullptr - %s", u_errorName(status));
}
status = U_ZERO_ERROR;
@@ -5321,7 +5346,7 @@ void LocaleTest::TestCurrencyByDate(void)
}
resLen = ucurr_forLocaleAndDate("eo_AO", date, 1, TMP, 4, &status);
if (resLen != 0) {
- errcheckln(status, "FAIL: eo_AO didn't return NULL - %s", u_errorName(status));
+ errcheckln(status, "FAIL: eo_AO didn't return nullptr - %s", u_errorName(status));
}
status = U_ZERO_ERROR;
@@ -5349,10 +5374,10 @@ void LocaleTest::TestCurrencyByDate(void)
status = U_ZERO_ERROR; // reset
date = uprv_getUTCtime();
- UChar USD[4];
+ char16_t USD[4];
ucurr_forLocaleAndDate("en_US", date, 1, USD, 4, &status);
- UChar YEN[4];
+ char16_t YEN[4];
ucurr_forLocaleAndDate("ja_JP", date, 1, YEN, 4, &status);
ucurr_forLocaleAndDate("en_US", date, 1, TMP, 4, &status);
@@ -5367,7 +5392,7 @@ void LocaleTest::TestCurrencyByDate(void)
#endif
}
-void LocaleTest::TestGetVariantWithKeywords(void)
+void LocaleTest::TestGetVariantWithKeywords()
{
Locale l("en_US_VALLEY@foo=value");
const char *variant = l.getVariant();
@@ -5502,7 +5527,7 @@ void LocaleTest::TestLocaleCanonicalizationFromFile()
char testPath[400];
char line[256];
strcpy(testPath, sourceTestDataPath);
- strcat(testPath, "localeCanonicalization.txt");
+ strcat(testPath, "cldr/localeIdentifiers/localeCanonicalization.txt");
LocalStdioFilePointer testFile(fopen(testPath, "r"));
if(testFile.isNull()) {
errln("unable to open %s", testPath);
@@ -5510,7 +5535,7 @@ void LocaleTest::TestLocaleCanonicalizationFromFile()
}
// Format:
// <source locale identifier> ; <expected canonicalized locale identifier>
- while (fgets(line, (int)sizeof(line), testFile.getAlias())!=NULL) {
+ while (fgets(line, (int)sizeof(line), testFile.getAlias())!=nullptr) {
if (line[0] == '#') {
// ignore any lines start with #
continue;
@@ -5544,6 +5569,168 @@ void LocaleTest::TestLocaleCanonicalizationFromFile()
}
}
+std::string trim(const std::string &s) {
+ auto start = s.begin();
+ while (start != s.end() && std::isspace(*start)) {
+ start++;
+ }
+
+ auto end = s.end();
+ do {
+ end--;
+ } while (std::distance(start, end) > 0 && std::isspace(*end));
+
+ return std::string(start, end + 1);
+}
+
+// A testing helper class which favorScript when minimizeSubtags.
+class FavorScriptLocale : public Locale {
+public:
+ FavorScriptLocale(const Locale& l) :Locale(l) { }
+ void minimizeSubtags(UErrorCode& status) {
+ Locale::minimizeSubtags(true, status);
+ }
+};
+
+bool isKnownSourceForCLDR17099(const std::string& s) {
+ if (s.compare("qaa-Cyrl-CH") == 0) {
+ return true;
+ }
+
+ return false;
+}
+
+void U_CALLCONV
+testLikelySubtagsLineFn(void *context,
+ char *fields[][2], int32_t fieldCount,
+ UErrorCode *pErrorCode) {
+ if (U_FAILURE(*pErrorCode)) {
+ return;
+ }
+ (void)fieldCount;
+ LocaleTest* THIS = (LocaleTest*)context;
+ std::string source(trim(std::string(fields[0][0], fields[0][1]-fields[0][0])));
+ if (isKnownSourceForCLDR17099(source) && THIS->logKnownIssue("CLDR-17099", "likelySubtags.txt wrong for qaa-Cyrl-CH")) {
+ return;
+ }
+ std::string addLikely(trim(std::string(fields[1][0], fields[1][1]-fields[1][0])));
+ std::string removeFavorScript(trim(std::string(fields[2][0], fields[2][1]-fields[2][0])));
+ if (removeFavorScript.length() == 0) {
+ removeFavorScript = addLikely;
+ }
+ std::string removeFavorRegion(trim(std::string(fields[3][0], fields[3][1]-fields[3][0])));
+
+ if (removeFavorRegion.length() == 0) {
+ removeFavorRegion = removeFavorScript;
+ }
+ Locale l = Locale::forLanguageTag(source, *pErrorCode);
+ if (U_FAILURE(*pErrorCode)) {
+ THIS->errln("forLanguageTag(%s) return error %x %s", source.c_str(),
+ *pErrorCode, u_errorName(*pErrorCode));
+ *pErrorCode = U_ZERO_ERROR;
+ return;
+ }
+
+ Locale actualMax(l);
+ actualMax.addLikelySubtags(*pErrorCode);
+ if (addLikely == "FAIL") {
+ if (uprv_strcmp(l.getName(), actualMax.getName()) != 0) {
+ THIS->errln("addLikelySubtags('%s') return should return the same but return '%s'",
+ l.getName(), actualMax.getName());
+ }
+ } else {
+ std::string max = actualMax.toLanguageTag<std::string>(*pErrorCode);
+ if (U_FAILURE(*pErrorCode)) {
+ THIS->errln("toLanguageTag(%s) return error %x %s", actualMax.getName(),
+ *pErrorCode, u_errorName(*pErrorCode));
+ *pErrorCode = U_ZERO_ERROR;
+ } else {
+ if (max != addLikely) {
+ THIS->errln("addLikelySubtags('%s') should return '%s' but got '%s'",
+ source.c_str(), addLikely.c_str(), max.c_str());
+ }
+ }
+ }
+
+ Locale actualMin(l);
+ actualMin.minimizeSubtags(*pErrorCode);
+ if (removeFavorRegion == "FAIL") {
+ if (uprv_strcmp(l.getName(), actualMin.getName()) != 0) {
+ THIS->errln("minimizeSubtags('%s') return should return the same but return '%s'",
+ l.getName(), actualMin.getName());
+ }
+ } else {
+ std::string min = actualMin.toLanguageTag<std::string>(*pErrorCode);
+ if (U_FAILURE(*pErrorCode)) {
+ THIS->errln("toLanguageTag(%s) return error %x %s", actualMin.getName(),
+ *pErrorCode, u_errorName(*pErrorCode));
+ *pErrorCode = U_ZERO_ERROR;
+ } else {
+ if (min != removeFavorRegion) {
+ THIS->errln("minimizeSubtags('%s') should return '%s' but got '%s'",
+ source.c_str(), removeFavorRegion.c_str(), min.c_str());
+ }
+ }
+ }
+
+ FavorScriptLocale actualMinFavorScript(l);
+ actualMinFavorScript.minimizeSubtags(*pErrorCode);
+ if (removeFavorScript == "FAIL") {
+ if (uprv_strcmp(l.getName(), actualMinFavorScript.getName()) != 0) {
+ THIS->errln("minimizeSubtags('%s') return should return the same but return '%s'",
+ l.getName(), actualMinFavorScript.getName());
+ }
+ } else {
+ std::string min = actualMinFavorScript.toLanguageTag<std::string>(*pErrorCode);
+ if (U_FAILURE(*pErrorCode)) {
+ THIS->errln("toLanguageTag(%s) favor script return error %x %s", actualMinFavorScript.getName(),
+ *pErrorCode, u_errorName(*pErrorCode));
+ *pErrorCode = U_ZERO_ERROR;
+ } else {
+ if (min != removeFavorScript) {
+ THIS->errln("minimizeSubtags('%s') favor script should return '%s' but got '%s'",
+ source.c_str(), removeFavorScript.c_str(), min.c_str());
+ }
+ }
+ }
+}
+
+void
+LocaleTest::TestDataDrivenLikelySubtags() {
+ if (quick) {
+ // This test is too slow to run. Only run in -e mode.
+ return;
+ }
+ IcuTestErrorCode errorCode(*this, "TestDataDrivenLikelySubtags()");
+ const char* name = "cldr/localeIdentifiers/likelySubtags.txt";
+ const char *sourceTestDataPath = getSourceTestData(errorCode);
+ if (errorCode.errIfFailureAndReset("unable to find the source/test/testdata "
+ "folder (getSourceTestData())")) {
+ return;
+ }
+ CharString path(sourceTestDataPath, errorCode);
+ path.appendPathPart(name, errorCode);
+ LocalStdioFilePointer testFile(fopen(path.data(), "r"));
+ if (testFile.isNull()) {
+ errln("unable to open %s", path.data());
+ return;
+ }
+
+ // Columns (c1, c2,...) are separated by semicolons.
+ // Leading and trailing spaces and tabs in each column are ignored.
+ // Comments are indicated with hash marks.
+ const int32_t kNumFields = 4;
+ char *fields[kNumFields][2];
+
+ u_parseDelimitedFile(path.data(), ';', fields, kNumFields, testLikelySubtagsLineFn,
+ this, errorCode);
+ if (errorCode.errIfFailureAndReset("error parsing %s", name)) {
+ return;
+ }
+}
+
+
+
void LocaleTest::TestKnownCanonicalizedListCorrect()
{
IcuTestErrorCode status(*this, "TestKnownCanonicalizedListCorrect");
@@ -5687,7 +5874,7 @@ void LocaleTest::TestForLanguageTagLegacyTagBug21676() {
"i-enochian-1nochian-129-515VNTR-64863775-X3il6-110Y101-29-515VNTR-"
"64863775-153zu-u-Y4-H0-t6-X3-u6-110Y101-X");
std::string input(tag);
- input += "EXTRA MEMORY AFTER NON-NULL TERMINATED STRING";
+ input += "EXTRA MEMORY AFTER NON-nullptr TERMINATED STRING";
StringPiece stringp(input.c_str(), tag.length());
std::string name = Locale::forLanguageTag(stringp, status).getName();
std::string expected(
@@ -5771,6 +5958,10 @@ void LocaleTest::TestToLanguageTag() {
{"und-Latn-x-private", "und-Latn-x-private"},
{"und-1994-biske-rozaj", "und-1994-biske-rozaj"},
{"und-1994-biske-rozaj-x-private", "und-1994-biske-rozaj-x-private"},
+ // ICU-22497
+ {"-ins0-ins17Rz-yqyq-UWLF-uRyq-UWLF-uRRyq-UWLF-uR-UWLF-uRns0-ins17Rz-yq-UWLF-uRyq-UWLF-uRRyq-LF-uRyq-UWLF-uRRyq-UWLF-uRq-UWLF-uRyq-UWLF-uRRyq-UWLF-uR", ""},
+ // ICU-22504
+ {"@attribute=zzo9zzzzzzzs0zzzzzzzzzz55555555555555555555500000000000000000000fffffffffffffffffffffffffzzzzz2mfPAK", ""},
};
int32_t i;
for (i=0; i < UPRV_LENGTHOF(testCases); i++) {
@@ -5784,6 +5975,12 @@ void LocaleTest::TestToLanguageTag() {
tag.c_str(),
u_errorName(status));
}
+ // Test ICU-22497
+ status = U_ZERO_ERROR;
+ icu::Locale locale(otag.c_str());
+ char buf[245];
+ icu::CheckedArrayByteSink sink(buf, sizeof(buf));
+ locale.toLanguageTag(sink, status);
}
}
@@ -6624,7 +6821,7 @@ void LocaleTest::TestSierraLeoneCurrency21997() {
// Test will fail once SLE is declared legal.
// CLDR 42: Now check that currency of Sierra Leone is SLE (which is legal tender)
UnicodeString sllStr("SLE", ""), resultStr;
- UChar tmp[4];
+ char16_t tmp[4];
UErrorCode status = U_ZERO_ERROR;
ucurr_forLocale("en_SL", tmp, 4, &status);
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/loctest.h b/Build/source/libs/icu/icu-src/source/test/intltest/loctest.h
index 2a8ed56760d..80e03e95983 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/loctest.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/loctest.h
@@ -17,107 +17,107 @@ public:
LocaleTest();
virtual ~LocaleTest();
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
/**
* Test methods to set and get data fields
**/
- void TestBasicGetters(void);
+ void TestBasicGetters();
/**
* Test methods to set and get data fields
**/
- void TestParallelAPIValues(void);
+ void TestParallelAPIValues();
/**
* Use Locale to access Resource file data and compare against expected values
**/
- void TestSimpleResourceInfo(void);
+ void TestSimpleResourceInfo();
/**
* Use Locale to access Resource file display names and compare against expected values
**/
- void TestDisplayNames(void);
+ void TestDisplayNames();
/**
* Test methods for basic object behaviour
**/
- void TestSimpleObjectStuff(void);
+ void TestSimpleObjectStuff();
/**
* Test methods for POSIX parsing behavior
**/
- void TestPOSIXParsing(void);
+ void TestPOSIXParsing();
/**
* Test Locale::getAvailableLocales
**/
- void TestGetAvailableLocales(void);
+ void TestGetAvailableLocales();
/**
* Test methods to set and access a custom data directory
**/
- void TestDataDirectory(void);
+ void TestDataDirectory();
- void TestISO3Fallback(void);
- void TestGetLangsAndCountries(void);
- void TestSimpleDisplayNames(void);
- void TestUninstalledISO3Names(void);
- void TestAtypicalLocales(void);
+ void TestISO3Fallback();
+ void TestGetLangsAndCountries();
+ void TestSimpleDisplayNames();
+ void TestUninstalledISO3Names();
+ void TestAtypicalLocales();
#if !UCONFIG_NO_FORMATTING
- void TestThaiCurrencyFormat(void);
- void TestEuroSupport(void);
+ void TestThaiCurrencyFormat();
+ void TestEuroSupport();
#endif
- void TestToString(void);
+ void TestToString();
#if !UCONFIG_NO_FORMATTING
- void Test4139940(void);
- void Test4143951(void);
+ void Test4139940();
+ void Test4143951();
#endif
- void Test4147315(void);
- void Test4147317(void);
- void Test4147552(void);
+ void Test4147315();
+ void Test4147317();
+ void Test4147552();
void Test20639_DeprecatesISO3Language();
- void TestVariantParsing(void);
+ void TestVariantParsing();
/* Test getting keyword enumeration */
- void TestKeywordVariants(void);
- void TestCreateUnicodeKeywords(void);
+ void TestKeywordVariants();
+ void TestCreateUnicodeKeywords();
/* Test getting keyword values */
- void TestKeywordVariantParsing(void);
- void TestCreateKeywordSet(void);
- void TestCreateKeywordSetEmpty(void);
- void TestCreateKeywordSetWithPrivateUse(void);
- void TestCreateUnicodeKeywordSet(void);
- void TestCreateUnicodeKeywordSetEmpty(void);
- void TestCreateUnicodeKeywordSetWithPrivateUse(void);
- void TestGetKeywordValueStdString(void);
- void TestGetUnicodeKeywordValueStdString(void);
+ void TestKeywordVariantParsing();
+ void TestCreateKeywordSet();
+ void TestCreateKeywordSetEmpty();
+ void TestCreateKeywordSetWithPrivateUse();
+ void TestCreateUnicodeKeywordSet();
+ void TestCreateUnicodeKeywordSetEmpty();
+ void TestCreateUnicodeKeywordSetWithPrivateUse();
+ void TestGetKeywordValueStdString();
+ void TestGetUnicodeKeywordValueStdString();
/* Test setting keyword values */
- void TestSetKeywordValue(void);
- void TestSetKeywordValueStringPiece(void);
- void TestSetUnicodeKeywordValueStringPiece(void);
+ void TestSetKeywordValue();
+ void TestSetKeywordValueStringPiece();
+ void TestSetUnicodeKeywordValueStringPiece();
/* Test getting the locale base name */
- void TestGetBaseName(void);
+ void TestGetBaseName();
#if !UCONFIG_NO_FORMATTING
- void Test4105828(void) ;
+ void Test4105828() ;
#endif
- void TestSetIsBogus(void);
+ void TestSetIsBogus();
- void TestGetLocale(void);
+ void TestGetLocale();
- void TestVariantWithOutCountry(void);
+ void TestVariantWithOutCountry();
- void TestCanonicalization(void);
+ void TestCanonicalization();
- void TestCanonicalize(void);
+ void TestCanonicalize();
#if !UCONFIG_NO_FORMATTING
static UDate date(int32_t y, int32_t m, int32_t d, int32_t hr = 0, int32_t min = 0, int32_t sec = 0);
#endif
- void TestCurrencyByDate(void);
+ void TestCurrencyByDate();
- void TestGetVariantWithKeywords(void);
+ void TestGetVariantWithKeywords();
void TestIsRightToLeft();
void TestBug11421();
void TestBug13277();
@@ -131,6 +131,7 @@ public:
void TestAddLikelySubtags();
void TestMinimizeSubtags();
void TestAddLikelyAndMinimizeSubtags();
+ void TestDataDrivenLikelySubtags();
void TestForLanguageTag();
void TestForLanguageTagLegacyTagBug21676();
@@ -177,7 +178,7 @@ private:
/**
* additional initialization for datatables storing expected values
**/
- void setUpDataTable(void);
+ void setUpDataTable();
UnicodeString** dataTable;
@@ -234,6 +235,6 @@ private:
* Check on registered collators.
* @param expectExtra if non-null, the locale ID of an 'extra' locale that is registered.
*/
- void checkRegisteredCollators(const char *expectExtra = NULL);
+ void checkRegisteredCollators(const char *expectExtra = nullptr);
#endif
};
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/lstmbetst.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/lstmbetst.cpp
index 39bc6174b8b..d1f28223b3c 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/lstmbetst.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/lstmbetst.cpp
@@ -42,7 +42,7 @@ void LSTMBETest::runIndexedTest( int32_t index, UBool exec, const char* &name, c
//--------------------------------------------------------------------------------------
LSTMBETest::LSTMBETest() {
- fTestParams = NULL;
+ fTestParams = nullptr;
}
@@ -73,7 +73,7 @@ UScriptCode getScriptFromModelName(const std::string& modelName) {
// the model. Since by default the LSTM models are not included, all the tested
// models need to be included under source/test/testdata.
-void LSTMBETest::runTestFromFile(const char* filename) {
+void LSTMBETest::runTestFromFile(const char* filename, const char* locale) {
UErrorCode status = U_ZERO_ERROR;
LocalPointer<const LanguageBreakEngine> engine;
// Open and read the test data file.
@@ -82,7 +82,7 @@ void LSTMBETest::runTestFromFile(const char* filename) {
testFileName.append(filename, -1, status);
int len;
- UChar *testFile = ReadAndConvertFile(testFileName.data(), len, "UTF-8", status);
+ char16_t *testFile = ReadAndConvertFile(testFileName.data(), len, "UTF-8", status);
if (U_FAILURE(status)) {
errln("%s:%d Error %s opening test file %s", __FILE__, __LINE__, u_errorName(status), filename);
return;
@@ -123,7 +123,7 @@ void LSTMBETest::runTestFromFile(const char* filename) {
caseNum++;
bool canHandleAllChars = true;
for (int32_t i = 0; i < value.length(); i++) {
- if (!engine->handles(value.charAt(i))) {
+ if (!engine->handles(value.charAt(i), locale)) {
errln(UnicodeString("Test Case#") + caseNum + " contains char '" +
UnicodeString(value.charAt(i)) +
"' cannot be handled by the engine in offset " + i + "\n" + line);
@@ -200,15 +200,15 @@ void LSTMBETest::runTestFromFile(const char* filename) {
}
void LSTMBETest::TestThaiGraphclust() {
- runTestFromFile("Thai_graphclust_model4_heavy_Test.txt");
+ runTestFromFile("Thai_graphclust_model4_heavy_Test.txt", "th");
}
void LSTMBETest::TestThaiCodepoints() {
- runTestFromFile("Thai_codepoints_exclusive_model5_heavy_Test.txt");
+ runTestFromFile("Thai_codepoints_exclusive_model5_heavy_Test.txt", "th");
}
void LSTMBETest::TestBurmeseGraphclust() {
- runTestFromFile("Burmese_graphclust_model5_heavy_Test.txt");
+ runTestFromFile("Burmese_graphclust_model5_heavy_Test.txt", "my");
}
const LanguageBreakEngine* LSTMBETest::createEngineFromTestData(
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/lstmbetst.h b/Build/source/libs/icu/icu-src/source/test/intltest/lstmbetst.h
index dd675ceae68..0bc00578e66 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/lstmbetst.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/lstmbetst.h
@@ -30,7 +30,7 @@ public:
LSTMBETest();
virtual ~LSTMBETest();
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
void TestThaiGraphclust();
void TestThaiCodepoints();
@@ -40,7 +40,7 @@ public:
private:
const LanguageBreakEngine* createEngineFromTestData(const char* model, UScriptCode script, UErrorCode& status);
- void runTestFromFile(const char* filename);
+ void runTestFromFile(const char* filename, const char* locale);
void runTestWithLargeMemory(const char* model, UScriptCode script);
// Test parameters, from the test framework and test invocation.
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/measfmttest.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/measfmttest.cpp
index 9f8b5b0203a..25e227f980d 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/measfmttest.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/measfmttest.cpp
@@ -60,6 +60,8 @@ private:
void TestCompatible69();
void TestCompatible70();
void TestCompatible72();
+ void TestCompatible73();
+ void TestCompatible74();
void TestGetAvailable();
void TestExamplesInDocs();
void TestFormatPeriodEn();
@@ -97,6 +99,7 @@ private:
void Test21060_AddressSanitizerProblem();
void Test21223_FrenchDuration();
void TestInternalMeasureUnitImpl();
+ void TestMeasureEquality();
void verifyFormat(
const char *description,
@@ -195,6 +198,8 @@ void MeasureFormatTest::runIndexedTest(
TESTCASE_AUTO(TestCompatible69);
TESTCASE_AUTO(TestCompatible70);
TESTCASE_AUTO(TestCompatible72);
+ TESTCASE_AUTO(TestCompatible73);
+ TESTCASE_AUTO(TestCompatible74);
TESTCASE_AUTO(TestGetAvailable);
TESTCASE_AUTO(TestExamplesInDocs);
TESTCASE_AUTO(TestFormatPeriodEn);
@@ -232,6 +237,7 @@ void MeasureFormatTest::runIndexedTest(
TESTCASE_AUTO(Test21060_AddressSanitizerProblem);
TESTCASE_AUTO(Test21223_FrenchDuration);
TESTCASE_AUTO(TestInternalMeasureUnitImpl);
+ TESTCASE_AUTO(TestMeasureEquality);
TESTCASE_AUTO_END;
}
@@ -3452,6 +3458,778 @@ void MeasureFormatTest::TestCompatible72() {
assertSuccess("", status);
}
+void MeasureFormatTest::TestCompatible73() {
+ UErrorCode status = U_ZERO_ERROR;
+ LocalPointer<MeasureUnit> measureUnit;
+ MeasureUnit measureUnitValue;
+ measureUnit.adoptInstead(MeasureUnit::createGForce(status));
+ measureUnitValue = MeasureUnit::getGForce();
+ measureUnit.adoptInstead(MeasureUnit::createMeterPerSecondSquared(status));
+ measureUnitValue = MeasureUnit::getMeterPerSecondSquared();
+ measureUnit.adoptInstead(MeasureUnit::createArcMinute(status));
+ measureUnitValue = MeasureUnit::getArcMinute();
+ measureUnit.adoptInstead(MeasureUnit::createArcSecond(status));
+ measureUnitValue = MeasureUnit::getArcSecond();
+ measureUnit.adoptInstead(MeasureUnit::createDegree(status));
+ measureUnitValue = MeasureUnit::getDegree();
+ measureUnit.adoptInstead(MeasureUnit::createRadian(status));
+ measureUnitValue = MeasureUnit::getRadian();
+ measureUnit.adoptInstead(MeasureUnit::createRevolutionAngle(status));
+ measureUnitValue = MeasureUnit::getRevolutionAngle();
+ measureUnit.adoptInstead(MeasureUnit::createAcre(status));
+ measureUnitValue = MeasureUnit::getAcre();
+ measureUnit.adoptInstead(MeasureUnit::createDunam(status));
+ measureUnitValue = MeasureUnit::getDunam();
+ measureUnit.adoptInstead(MeasureUnit::createHectare(status));
+ measureUnitValue = MeasureUnit::getHectare();
+ measureUnit.adoptInstead(MeasureUnit::createSquareCentimeter(status));
+ measureUnitValue = MeasureUnit::getSquareCentimeter();
+ measureUnit.adoptInstead(MeasureUnit::createSquareFoot(status));
+ measureUnitValue = MeasureUnit::getSquareFoot();
+ measureUnit.adoptInstead(MeasureUnit::createSquareInch(status));
+ measureUnitValue = MeasureUnit::getSquareInch();
+ measureUnit.adoptInstead(MeasureUnit::createSquareKilometer(status));
+ measureUnitValue = MeasureUnit::getSquareKilometer();
+ measureUnit.adoptInstead(MeasureUnit::createSquareMeter(status));
+ measureUnitValue = MeasureUnit::getSquareMeter();
+ measureUnit.adoptInstead(MeasureUnit::createSquareMile(status));
+ measureUnitValue = MeasureUnit::getSquareMile();
+ measureUnit.adoptInstead(MeasureUnit::createSquareYard(status));
+ measureUnitValue = MeasureUnit::getSquareYard();
+ measureUnit.adoptInstead(MeasureUnit::createItem(status));
+ measureUnitValue = MeasureUnit::getItem();
+ measureUnit.adoptInstead(MeasureUnit::createKarat(status));
+ measureUnitValue = MeasureUnit::getKarat();
+ measureUnit.adoptInstead(MeasureUnit::createMilligramOfglucosePerDeciliter(status));
+ measureUnitValue = MeasureUnit::getMilligramOfglucosePerDeciliter();
+ measureUnit.adoptInstead(MeasureUnit::createMilligramPerDeciliter(status));
+ measureUnitValue = MeasureUnit::getMilligramPerDeciliter();
+ measureUnit.adoptInstead(MeasureUnit::createMillimolePerLiter(status));
+ measureUnitValue = MeasureUnit::getMillimolePerLiter();
+ measureUnit.adoptInstead(MeasureUnit::createMole(status));
+ measureUnitValue = MeasureUnit::getMole();
+ measureUnit.adoptInstead(MeasureUnit::createPercent(status));
+ measureUnitValue = MeasureUnit::getPercent();
+ measureUnit.adoptInstead(MeasureUnit::createPermille(status));
+ measureUnitValue = MeasureUnit::getPermille();
+ measureUnit.adoptInstead(MeasureUnit::createPartPerMillion(status));
+ measureUnitValue = MeasureUnit::getPartPerMillion();
+ measureUnit.adoptInstead(MeasureUnit::createPermyriad(status));
+ measureUnitValue = MeasureUnit::getPermyriad();
+ measureUnit.adoptInstead(MeasureUnit::createLiterPer100Kilometers(status));
+ measureUnitValue = MeasureUnit::getLiterPer100Kilometers();
+ measureUnit.adoptInstead(MeasureUnit::createLiterPerKilometer(status));
+ measureUnitValue = MeasureUnit::getLiterPerKilometer();
+ measureUnit.adoptInstead(MeasureUnit::createMilePerGallon(status));
+ measureUnitValue = MeasureUnit::getMilePerGallon();
+ measureUnit.adoptInstead(MeasureUnit::createMilePerGallonImperial(status));
+ measureUnitValue = MeasureUnit::getMilePerGallonImperial();
+ measureUnit.adoptInstead(MeasureUnit::createBit(status));
+ measureUnitValue = MeasureUnit::getBit();
+ measureUnit.adoptInstead(MeasureUnit::createByte(status));
+ measureUnitValue = MeasureUnit::getByte();
+ measureUnit.adoptInstead(MeasureUnit::createGigabit(status));
+ measureUnitValue = MeasureUnit::getGigabit();
+ measureUnit.adoptInstead(MeasureUnit::createGigabyte(status));
+ measureUnitValue = MeasureUnit::getGigabyte();
+ measureUnit.adoptInstead(MeasureUnit::createKilobit(status));
+ measureUnitValue = MeasureUnit::getKilobit();
+ measureUnit.adoptInstead(MeasureUnit::createKilobyte(status));
+ measureUnitValue = MeasureUnit::getKilobyte();
+ measureUnit.adoptInstead(MeasureUnit::createMegabit(status));
+ measureUnitValue = MeasureUnit::getMegabit();
+ measureUnit.adoptInstead(MeasureUnit::createMegabyte(status));
+ measureUnitValue = MeasureUnit::getMegabyte();
+ measureUnit.adoptInstead(MeasureUnit::createPetabyte(status));
+ measureUnitValue = MeasureUnit::getPetabyte();
+ measureUnit.adoptInstead(MeasureUnit::createTerabit(status));
+ measureUnitValue = MeasureUnit::getTerabit();
+ measureUnit.adoptInstead(MeasureUnit::createTerabyte(status));
+ measureUnitValue = MeasureUnit::getTerabyte();
+ measureUnit.adoptInstead(MeasureUnit::createCentury(status));
+ measureUnitValue = MeasureUnit::getCentury();
+ measureUnit.adoptInstead(MeasureUnit::createDay(status));
+ measureUnitValue = MeasureUnit::getDay();
+ measureUnit.adoptInstead(MeasureUnit::createDayPerson(status));
+ measureUnitValue = MeasureUnit::getDayPerson();
+ measureUnit.adoptInstead(MeasureUnit::createDecade(status));
+ measureUnitValue = MeasureUnit::getDecade();
+ measureUnit.adoptInstead(MeasureUnit::createHour(status));
+ measureUnitValue = MeasureUnit::getHour();
+ measureUnit.adoptInstead(MeasureUnit::createMicrosecond(status));
+ measureUnitValue = MeasureUnit::getMicrosecond();
+ measureUnit.adoptInstead(MeasureUnit::createMillisecond(status));
+ measureUnitValue = MeasureUnit::getMillisecond();
+ measureUnit.adoptInstead(MeasureUnit::createMinute(status));
+ measureUnitValue = MeasureUnit::getMinute();
+ measureUnit.adoptInstead(MeasureUnit::createMonth(status));
+ measureUnitValue = MeasureUnit::getMonth();
+ measureUnit.adoptInstead(MeasureUnit::createMonthPerson(status));
+ measureUnitValue = MeasureUnit::getMonthPerson();
+ measureUnit.adoptInstead(MeasureUnit::createNanosecond(status));
+ measureUnitValue = MeasureUnit::getNanosecond();
+ measureUnit.adoptInstead(MeasureUnit::createQuarter(status));
+ measureUnitValue = MeasureUnit::getQuarter();
+ measureUnit.adoptInstead(MeasureUnit::createSecond(status));
+ measureUnitValue = MeasureUnit::getSecond();
+ measureUnit.adoptInstead(MeasureUnit::createWeek(status));
+ measureUnitValue = MeasureUnit::getWeek();
+ measureUnit.adoptInstead(MeasureUnit::createWeekPerson(status));
+ measureUnitValue = MeasureUnit::getWeekPerson();
+ measureUnit.adoptInstead(MeasureUnit::createYear(status));
+ measureUnitValue = MeasureUnit::getYear();
+ measureUnit.adoptInstead(MeasureUnit::createYearPerson(status));
+ measureUnitValue = MeasureUnit::getYearPerson();
+ measureUnit.adoptInstead(MeasureUnit::createAmpere(status));
+ measureUnitValue = MeasureUnit::getAmpere();
+ measureUnit.adoptInstead(MeasureUnit::createMilliampere(status));
+ measureUnitValue = MeasureUnit::getMilliampere();
+ measureUnit.adoptInstead(MeasureUnit::createOhm(status));
+ measureUnitValue = MeasureUnit::getOhm();
+ measureUnit.adoptInstead(MeasureUnit::createVolt(status));
+ measureUnitValue = MeasureUnit::getVolt();
+ measureUnit.adoptInstead(MeasureUnit::createBritishThermalUnit(status));
+ measureUnitValue = MeasureUnit::getBritishThermalUnit();
+ measureUnit.adoptInstead(MeasureUnit::createCalorie(status));
+ measureUnitValue = MeasureUnit::getCalorie();
+ measureUnit.adoptInstead(MeasureUnit::createElectronvolt(status));
+ measureUnitValue = MeasureUnit::getElectronvolt();
+ measureUnit.adoptInstead(MeasureUnit::createFoodcalorie(status));
+ measureUnitValue = MeasureUnit::getFoodcalorie();
+ measureUnit.adoptInstead(MeasureUnit::createJoule(status));
+ measureUnitValue = MeasureUnit::getJoule();
+ measureUnit.adoptInstead(MeasureUnit::createKilocalorie(status));
+ measureUnitValue = MeasureUnit::getKilocalorie();
+ measureUnit.adoptInstead(MeasureUnit::createKilojoule(status));
+ measureUnitValue = MeasureUnit::getKilojoule();
+ measureUnit.adoptInstead(MeasureUnit::createKilowattHour(status));
+ measureUnitValue = MeasureUnit::getKilowattHour();
+ measureUnit.adoptInstead(MeasureUnit::createThermUs(status));
+ measureUnitValue = MeasureUnit::getThermUs();
+ measureUnit.adoptInstead(MeasureUnit::createKilowattHourPer100Kilometer(status));
+ measureUnitValue = MeasureUnit::getKilowattHourPer100Kilometer();
+ measureUnit.adoptInstead(MeasureUnit::createNewton(status));
+ measureUnitValue = MeasureUnit::getNewton();
+ measureUnit.adoptInstead(MeasureUnit::createPoundForce(status));
+ measureUnitValue = MeasureUnit::getPoundForce();
+ measureUnit.adoptInstead(MeasureUnit::createGigahertz(status));
+ measureUnitValue = MeasureUnit::getGigahertz();
+ measureUnit.adoptInstead(MeasureUnit::createHertz(status));
+ measureUnitValue = MeasureUnit::getHertz();
+ measureUnit.adoptInstead(MeasureUnit::createKilohertz(status));
+ measureUnitValue = MeasureUnit::getKilohertz();
+ measureUnit.adoptInstead(MeasureUnit::createMegahertz(status));
+ measureUnitValue = MeasureUnit::getMegahertz();
+ measureUnit.adoptInstead(MeasureUnit::createDot(status));
+ measureUnitValue = MeasureUnit::getDot();
+ measureUnit.adoptInstead(MeasureUnit::createDotPerCentimeter(status));
+ measureUnitValue = MeasureUnit::getDotPerCentimeter();
+ measureUnit.adoptInstead(MeasureUnit::createDotPerInch(status));
+ measureUnitValue = MeasureUnit::getDotPerInch();
+ measureUnit.adoptInstead(MeasureUnit::createEm(status));
+ measureUnitValue = MeasureUnit::getEm();
+ measureUnit.adoptInstead(MeasureUnit::createMegapixel(status));
+ measureUnitValue = MeasureUnit::getMegapixel();
+ measureUnit.adoptInstead(MeasureUnit::createPixel(status));
+ measureUnitValue = MeasureUnit::getPixel();
+ measureUnit.adoptInstead(MeasureUnit::createPixelPerCentimeter(status));
+ measureUnitValue = MeasureUnit::getPixelPerCentimeter();
+ measureUnit.adoptInstead(MeasureUnit::createPixelPerInch(status));
+ measureUnitValue = MeasureUnit::getPixelPerInch();
+ measureUnit.adoptInstead(MeasureUnit::createAstronomicalUnit(status));
+ measureUnitValue = MeasureUnit::getAstronomicalUnit();
+ measureUnit.adoptInstead(MeasureUnit::createCentimeter(status));
+ measureUnitValue = MeasureUnit::getCentimeter();
+ measureUnit.adoptInstead(MeasureUnit::createDecimeter(status));
+ measureUnitValue = MeasureUnit::getDecimeter();
+ measureUnit.adoptInstead(MeasureUnit::createEarthRadius(status));
+ measureUnitValue = MeasureUnit::getEarthRadius();
+ measureUnit.adoptInstead(MeasureUnit::createFathom(status));
+ measureUnitValue = MeasureUnit::getFathom();
+ measureUnit.adoptInstead(MeasureUnit::createFoot(status));
+ measureUnitValue = MeasureUnit::getFoot();
+ measureUnit.adoptInstead(MeasureUnit::createFurlong(status));
+ measureUnitValue = MeasureUnit::getFurlong();
+ measureUnit.adoptInstead(MeasureUnit::createInch(status));
+ measureUnitValue = MeasureUnit::getInch();
+ measureUnit.adoptInstead(MeasureUnit::createKilometer(status));
+ measureUnitValue = MeasureUnit::getKilometer();
+ measureUnit.adoptInstead(MeasureUnit::createLightYear(status));
+ measureUnitValue = MeasureUnit::getLightYear();
+ measureUnit.adoptInstead(MeasureUnit::createMeter(status));
+ measureUnitValue = MeasureUnit::getMeter();
+ measureUnit.adoptInstead(MeasureUnit::createMicrometer(status));
+ measureUnitValue = MeasureUnit::getMicrometer();
+ measureUnit.adoptInstead(MeasureUnit::createMile(status));
+ measureUnitValue = MeasureUnit::getMile();
+ measureUnit.adoptInstead(MeasureUnit::createMileScandinavian(status));
+ measureUnitValue = MeasureUnit::getMileScandinavian();
+ measureUnit.adoptInstead(MeasureUnit::createMillimeter(status));
+ measureUnitValue = MeasureUnit::getMillimeter();
+ measureUnit.adoptInstead(MeasureUnit::createNanometer(status));
+ measureUnitValue = MeasureUnit::getNanometer();
+ measureUnit.adoptInstead(MeasureUnit::createNauticalMile(status));
+ measureUnitValue = MeasureUnit::getNauticalMile();
+ measureUnit.adoptInstead(MeasureUnit::createParsec(status));
+ measureUnitValue = MeasureUnit::getParsec();
+ measureUnit.adoptInstead(MeasureUnit::createPicometer(status));
+ measureUnitValue = MeasureUnit::getPicometer();
+ measureUnit.adoptInstead(MeasureUnit::createPoint(status));
+ measureUnitValue = MeasureUnit::getPoint();
+ measureUnit.adoptInstead(MeasureUnit::createSolarRadius(status));
+ measureUnitValue = MeasureUnit::getSolarRadius();
+ measureUnit.adoptInstead(MeasureUnit::createYard(status));
+ measureUnitValue = MeasureUnit::getYard();
+ measureUnit.adoptInstead(MeasureUnit::createCandela(status));
+ measureUnitValue = MeasureUnit::getCandela();
+ measureUnit.adoptInstead(MeasureUnit::createLumen(status));
+ measureUnitValue = MeasureUnit::getLumen();
+ measureUnit.adoptInstead(MeasureUnit::createLux(status));
+ measureUnitValue = MeasureUnit::getLux();
+ measureUnit.adoptInstead(MeasureUnit::createSolarLuminosity(status));
+ measureUnitValue = MeasureUnit::getSolarLuminosity();
+ measureUnit.adoptInstead(MeasureUnit::createCarat(status));
+ measureUnitValue = MeasureUnit::getCarat();
+ measureUnit.adoptInstead(MeasureUnit::createDalton(status));
+ measureUnitValue = MeasureUnit::getDalton();
+ measureUnit.adoptInstead(MeasureUnit::createEarthMass(status));
+ measureUnitValue = MeasureUnit::getEarthMass();
+ measureUnit.adoptInstead(MeasureUnit::createGrain(status));
+ measureUnitValue = MeasureUnit::getGrain();
+ measureUnit.adoptInstead(MeasureUnit::createGram(status));
+ measureUnitValue = MeasureUnit::getGram();
+ measureUnit.adoptInstead(MeasureUnit::createKilogram(status));
+ measureUnitValue = MeasureUnit::getKilogram();
+ measureUnit.adoptInstead(MeasureUnit::createMicrogram(status));
+ measureUnitValue = MeasureUnit::getMicrogram();
+ measureUnit.adoptInstead(MeasureUnit::createMilligram(status));
+ measureUnitValue = MeasureUnit::getMilligram();
+ measureUnit.adoptInstead(MeasureUnit::createOunce(status));
+ measureUnitValue = MeasureUnit::getOunce();
+ measureUnit.adoptInstead(MeasureUnit::createOunceTroy(status));
+ measureUnitValue = MeasureUnit::getOunceTroy();
+ measureUnit.adoptInstead(MeasureUnit::createPound(status));
+ measureUnitValue = MeasureUnit::getPound();
+ measureUnit.adoptInstead(MeasureUnit::createSolarMass(status));
+ measureUnitValue = MeasureUnit::getSolarMass();
+ measureUnit.adoptInstead(MeasureUnit::createStone(status));
+ measureUnitValue = MeasureUnit::getStone();
+ measureUnit.adoptInstead(MeasureUnit::createTon(status));
+ measureUnitValue = MeasureUnit::getTon();
+ measureUnit.adoptInstead(MeasureUnit::createTonne(status));
+ measureUnitValue = MeasureUnit::getTonne();
+ measureUnit.adoptInstead(MeasureUnit::createGigawatt(status));
+ measureUnitValue = MeasureUnit::getGigawatt();
+ measureUnit.adoptInstead(MeasureUnit::createHorsepower(status));
+ measureUnitValue = MeasureUnit::getHorsepower();
+ measureUnit.adoptInstead(MeasureUnit::createKilowatt(status));
+ measureUnitValue = MeasureUnit::getKilowatt();
+ measureUnit.adoptInstead(MeasureUnit::createMegawatt(status));
+ measureUnitValue = MeasureUnit::getMegawatt();
+ measureUnit.adoptInstead(MeasureUnit::createMilliwatt(status));
+ measureUnitValue = MeasureUnit::getMilliwatt();
+ measureUnit.adoptInstead(MeasureUnit::createWatt(status));
+ measureUnitValue = MeasureUnit::getWatt();
+ measureUnit.adoptInstead(MeasureUnit::createAtmosphere(status));
+ measureUnitValue = MeasureUnit::getAtmosphere();
+ measureUnit.adoptInstead(MeasureUnit::createBar(status));
+ measureUnitValue = MeasureUnit::getBar();
+ measureUnit.adoptInstead(MeasureUnit::createHectopascal(status));
+ measureUnitValue = MeasureUnit::getHectopascal();
+ measureUnit.adoptInstead(MeasureUnit::createInchHg(status));
+ measureUnitValue = MeasureUnit::getInchHg();
+ measureUnit.adoptInstead(MeasureUnit::createKilopascal(status));
+ measureUnitValue = MeasureUnit::getKilopascal();
+ measureUnit.adoptInstead(MeasureUnit::createMegapascal(status));
+ measureUnitValue = MeasureUnit::getMegapascal();
+ measureUnit.adoptInstead(MeasureUnit::createMillibar(status));
+ measureUnitValue = MeasureUnit::getMillibar();
+ measureUnit.adoptInstead(MeasureUnit::createMillimeterOfMercury(status));
+ measureUnitValue = MeasureUnit::getMillimeterOfMercury();
+ measureUnit.adoptInstead(MeasureUnit::createPascal(status));
+ measureUnitValue = MeasureUnit::getPascal();
+ measureUnit.adoptInstead(MeasureUnit::createPoundPerSquareInch(status));
+ measureUnitValue = MeasureUnit::getPoundPerSquareInch();
+ measureUnit.adoptInstead(MeasureUnit::createBeaufort(status));
+ measureUnitValue = MeasureUnit::getBeaufort();
+ measureUnit.adoptInstead(MeasureUnit::createKilometerPerHour(status));
+ measureUnitValue = MeasureUnit::getKilometerPerHour();
+ measureUnit.adoptInstead(MeasureUnit::createKnot(status));
+ measureUnitValue = MeasureUnit::getKnot();
+ measureUnit.adoptInstead(MeasureUnit::createMeterPerSecond(status));
+ measureUnitValue = MeasureUnit::getMeterPerSecond();
+ measureUnit.adoptInstead(MeasureUnit::createMilePerHour(status));
+ measureUnitValue = MeasureUnit::getMilePerHour();
+ measureUnit.adoptInstead(MeasureUnit::createCelsius(status));
+ measureUnitValue = MeasureUnit::getCelsius();
+ measureUnit.adoptInstead(MeasureUnit::createFahrenheit(status));
+ measureUnitValue = MeasureUnit::getFahrenheit();
+ measureUnit.adoptInstead(MeasureUnit::createGenericTemperature(status));
+ measureUnitValue = MeasureUnit::getGenericTemperature();
+ measureUnit.adoptInstead(MeasureUnit::createKelvin(status));
+ measureUnitValue = MeasureUnit::getKelvin();
+ measureUnit.adoptInstead(MeasureUnit::createNewtonMeter(status));
+ measureUnitValue = MeasureUnit::getNewtonMeter();
+ measureUnit.adoptInstead(MeasureUnit::createPoundFoot(status));
+ measureUnitValue = MeasureUnit::getPoundFoot();
+ measureUnit.adoptInstead(MeasureUnit::createAcreFoot(status));
+ measureUnitValue = MeasureUnit::getAcreFoot();
+ measureUnit.adoptInstead(MeasureUnit::createBarrel(status));
+ measureUnitValue = MeasureUnit::getBarrel();
+ measureUnit.adoptInstead(MeasureUnit::createBushel(status));
+ measureUnitValue = MeasureUnit::getBushel();
+ measureUnit.adoptInstead(MeasureUnit::createCentiliter(status));
+ measureUnitValue = MeasureUnit::getCentiliter();
+ measureUnit.adoptInstead(MeasureUnit::createCubicCentimeter(status));
+ measureUnitValue = MeasureUnit::getCubicCentimeter();
+ measureUnit.adoptInstead(MeasureUnit::createCubicFoot(status));
+ measureUnitValue = MeasureUnit::getCubicFoot();
+ measureUnit.adoptInstead(MeasureUnit::createCubicInch(status));
+ measureUnitValue = MeasureUnit::getCubicInch();
+ measureUnit.adoptInstead(MeasureUnit::createCubicKilometer(status));
+ measureUnitValue = MeasureUnit::getCubicKilometer();
+ measureUnit.adoptInstead(MeasureUnit::createCubicMeter(status));
+ measureUnitValue = MeasureUnit::getCubicMeter();
+ measureUnit.adoptInstead(MeasureUnit::createCubicMile(status));
+ measureUnitValue = MeasureUnit::getCubicMile();
+ measureUnit.adoptInstead(MeasureUnit::createCubicYard(status));
+ measureUnitValue = MeasureUnit::getCubicYard();
+ measureUnit.adoptInstead(MeasureUnit::createCup(status));
+ measureUnitValue = MeasureUnit::getCup();
+ measureUnit.adoptInstead(MeasureUnit::createCupMetric(status));
+ measureUnitValue = MeasureUnit::getCupMetric();
+ measureUnit.adoptInstead(MeasureUnit::createDeciliter(status));
+ measureUnitValue = MeasureUnit::getDeciliter();
+ measureUnit.adoptInstead(MeasureUnit::createDessertSpoon(status));
+ measureUnitValue = MeasureUnit::getDessertSpoon();
+ measureUnit.adoptInstead(MeasureUnit::createDessertSpoonImperial(status));
+ measureUnitValue = MeasureUnit::getDessertSpoonImperial();
+ measureUnit.adoptInstead(MeasureUnit::createDram(status));
+ measureUnitValue = MeasureUnit::getDram();
+ measureUnit.adoptInstead(MeasureUnit::createDrop(status));
+ measureUnitValue = MeasureUnit::getDrop();
+ measureUnit.adoptInstead(MeasureUnit::createFluidOunce(status));
+ measureUnitValue = MeasureUnit::getFluidOunce();
+ measureUnit.adoptInstead(MeasureUnit::createFluidOunceImperial(status));
+ measureUnitValue = MeasureUnit::getFluidOunceImperial();
+ measureUnit.adoptInstead(MeasureUnit::createGallon(status));
+ measureUnitValue = MeasureUnit::getGallon();
+ measureUnit.adoptInstead(MeasureUnit::createGallonImperial(status));
+ measureUnitValue = MeasureUnit::getGallonImperial();
+ measureUnit.adoptInstead(MeasureUnit::createHectoliter(status));
+ measureUnitValue = MeasureUnit::getHectoliter();
+ measureUnit.adoptInstead(MeasureUnit::createJigger(status));
+ measureUnitValue = MeasureUnit::getJigger();
+ measureUnit.adoptInstead(MeasureUnit::createLiter(status));
+ measureUnitValue = MeasureUnit::getLiter();
+ measureUnit.adoptInstead(MeasureUnit::createMegaliter(status));
+ measureUnitValue = MeasureUnit::getMegaliter();
+ measureUnit.adoptInstead(MeasureUnit::createMilliliter(status));
+ measureUnitValue = MeasureUnit::getMilliliter();
+ measureUnit.adoptInstead(MeasureUnit::createPinch(status));
+ measureUnitValue = MeasureUnit::getPinch();
+ measureUnit.adoptInstead(MeasureUnit::createPint(status));
+ measureUnitValue = MeasureUnit::getPint();
+ measureUnit.adoptInstead(MeasureUnit::createPintMetric(status));
+ measureUnitValue = MeasureUnit::getPintMetric();
+ measureUnit.adoptInstead(MeasureUnit::createQuart(status));
+ measureUnitValue = MeasureUnit::getQuart();
+ measureUnit.adoptInstead(MeasureUnit::createQuartImperial(status));
+ measureUnitValue = MeasureUnit::getQuartImperial();
+ measureUnit.adoptInstead(MeasureUnit::createTablespoon(status));
+ measureUnitValue = MeasureUnit::getTablespoon();
+ measureUnit.adoptInstead(MeasureUnit::createTeaspoon(status));
+ measureUnitValue = MeasureUnit::getTeaspoon();
+ assertSuccess("", status);
+}
+
+void MeasureFormatTest::TestCompatible74() {
+ UErrorCode status = U_ZERO_ERROR;
+ LocalPointer<MeasureUnit> measureUnit;
+ MeasureUnit measureUnitValue;
+ measureUnit.adoptInstead(MeasureUnit::createGForce(status));
+ measureUnitValue = MeasureUnit::getGForce();
+ measureUnit.adoptInstead(MeasureUnit::createMeterPerSecondSquared(status));
+ measureUnitValue = MeasureUnit::getMeterPerSecondSquared();
+ measureUnit.adoptInstead(MeasureUnit::createArcMinute(status));
+ measureUnitValue = MeasureUnit::getArcMinute();
+ measureUnit.adoptInstead(MeasureUnit::createArcSecond(status));
+ measureUnitValue = MeasureUnit::getArcSecond();
+ measureUnit.adoptInstead(MeasureUnit::createDegree(status));
+ measureUnitValue = MeasureUnit::getDegree();
+ measureUnit.adoptInstead(MeasureUnit::createRadian(status));
+ measureUnitValue = MeasureUnit::getRadian();
+ measureUnit.adoptInstead(MeasureUnit::createRevolutionAngle(status));
+ measureUnitValue = MeasureUnit::getRevolutionAngle();
+ measureUnit.adoptInstead(MeasureUnit::createAcre(status));
+ measureUnitValue = MeasureUnit::getAcre();
+ measureUnit.adoptInstead(MeasureUnit::createDunam(status));
+ measureUnitValue = MeasureUnit::getDunam();
+ measureUnit.adoptInstead(MeasureUnit::createHectare(status));
+ measureUnitValue = MeasureUnit::getHectare();
+ measureUnit.adoptInstead(MeasureUnit::createSquareCentimeter(status));
+ measureUnitValue = MeasureUnit::getSquareCentimeter();
+ measureUnit.adoptInstead(MeasureUnit::createSquareFoot(status));
+ measureUnitValue = MeasureUnit::getSquareFoot();
+ measureUnit.adoptInstead(MeasureUnit::createSquareInch(status));
+ measureUnitValue = MeasureUnit::getSquareInch();
+ measureUnit.adoptInstead(MeasureUnit::createSquareKilometer(status));
+ measureUnitValue = MeasureUnit::getSquareKilometer();
+ measureUnit.adoptInstead(MeasureUnit::createSquareMeter(status));
+ measureUnitValue = MeasureUnit::getSquareMeter();
+ measureUnit.adoptInstead(MeasureUnit::createSquareMile(status));
+ measureUnitValue = MeasureUnit::getSquareMile();
+ measureUnit.adoptInstead(MeasureUnit::createSquareYard(status));
+ measureUnitValue = MeasureUnit::getSquareYard();
+ measureUnit.adoptInstead(MeasureUnit::createItem(status));
+ measureUnitValue = MeasureUnit::getItem();
+ measureUnit.adoptInstead(MeasureUnit::createKarat(status));
+ measureUnitValue = MeasureUnit::getKarat();
+ measureUnit.adoptInstead(MeasureUnit::createMilligramOfglucosePerDeciliter(status));
+ measureUnitValue = MeasureUnit::getMilligramOfglucosePerDeciliter();
+ measureUnit.adoptInstead(MeasureUnit::createMilligramPerDeciliter(status));
+ measureUnitValue = MeasureUnit::getMilligramPerDeciliter();
+ measureUnit.adoptInstead(MeasureUnit::createMillimolePerLiter(status));
+ measureUnitValue = MeasureUnit::getMillimolePerLiter();
+ measureUnit.adoptInstead(MeasureUnit::createMole(status));
+ measureUnitValue = MeasureUnit::getMole();
+ measureUnit.adoptInstead(MeasureUnit::createPercent(status));
+ measureUnitValue = MeasureUnit::getPercent();
+ measureUnit.adoptInstead(MeasureUnit::createPermille(status));
+ measureUnitValue = MeasureUnit::getPermille();
+ measureUnit.adoptInstead(MeasureUnit::createPartPerMillion(status));
+ measureUnitValue = MeasureUnit::getPartPerMillion();
+ measureUnit.adoptInstead(MeasureUnit::createPermyriad(status));
+ measureUnitValue = MeasureUnit::getPermyriad();
+ measureUnit.adoptInstead(MeasureUnit::createLiterPer100Kilometers(status));
+ measureUnitValue = MeasureUnit::getLiterPer100Kilometers();
+ measureUnit.adoptInstead(MeasureUnit::createLiterPerKilometer(status));
+ measureUnitValue = MeasureUnit::getLiterPerKilometer();
+ measureUnit.adoptInstead(MeasureUnit::createMilePerGallon(status));
+ measureUnitValue = MeasureUnit::getMilePerGallon();
+ measureUnit.adoptInstead(MeasureUnit::createMilePerGallonImperial(status));
+ measureUnitValue = MeasureUnit::getMilePerGallonImperial();
+ measureUnit.adoptInstead(MeasureUnit::createBit(status));
+ measureUnitValue = MeasureUnit::getBit();
+ measureUnit.adoptInstead(MeasureUnit::createByte(status));
+ measureUnitValue = MeasureUnit::getByte();
+ measureUnit.adoptInstead(MeasureUnit::createGigabit(status));
+ measureUnitValue = MeasureUnit::getGigabit();
+ measureUnit.adoptInstead(MeasureUnit::createGigabyte(status));
+ measureUnitValue = MeasureUnit::getGigabyte();
+ measureUnit.adoptInstead(MeasureUnit::createKilobit(status));
+ measureUnitValue = MeasureUnit::getKilobit();
+ measureUnit.adoptInstead(MeasureUnit::createKilobyte(status));
+ measureUnitValue = MeasureUnit::getKilobyte();
+ measureUnit.adoptInstead(MeasureUnit::createMegabit(status));
+ measureUnitValue = MeasureUnit::getMegabit();
+ measureUnit.adoptInstead(MeasureUnit::createMegabyte(status));
+ measureUnitValue = MeasureUnit::getMegabyte();
+ measureUnit.adoptInstead(MeasureUnit::createPetabyte(status));
+ measureUnitValue = MeasureUnit::getPetabyte();
+ measureUnit.adoptInstead(MeasureUnit::createTerabit(status));
+ measureUnitValue = MeasureUnit::getTerabit();
+ measureUnit.adoptInstead(MeasureUnit::createTerabyte(status));
+ measureUnitValue = MeasureUnit::getTerabyte();
+ measureUnit.adoptInstead(MeasureUnit::createCentury(status));
+ measureUnitValue = MeasureUnit::getCentury();
+ measureUnit.adoptInstead(MeasureUnit::createDay(status));
+ measureUnitValue = MeasureUnit::getDay();
+ measureUnit.adoptInstead(MeasureUnit::createDayPerson(status));
+ measureUnitValue = MeasureUnit::getDayPerson();
+ measureUnit.adoptInstead(MeasureUnit::createDecade(status));
+ measureUnitValue = MeasureUnit::getDecade();
+ measureUnit.adoptInstead(MeasureUnit::createHour(status));
+ measureUnitValue = MeasureUnit::getHour();
+ measureUnit.adoptInstead(MeasureUnit::createMicrosecond(status));
+ measureUnitValue = MeasureUnit::getMicrosecond();
+ measureUnit.adoptInstead(MeasureUnit::createMillisecond(status));
+ measureUnitValue = MeasureUnit::getMillisecond();
+ measureUnit.adoptInstead(MeasureUnit::createMinute(status));
+ measureUnitValue = MeasureUnit::getMinute();
+ measureUnit.adoptInstead(MeasureUnit::createMonth(status));
+ measureUnitValue = MeasureUnit::getMonth();
+ measureUnit.adoptInstead(MeasureUnit::createMonthPerson(status));
+ measureUnitValue = MeasureUnit::getMonthPerson();
+ measureUnit.adoptInstead(MeasureUnit::createNanosecond(status));
+ measureUnitValue = MeasureUnit::getNanosecond();
+ measureUnit.adoptInstead(MeasureUnit::createQuarter(status));
+ measureUnitValue = MeasureUnit::getQuarter();
+ measureUnit.adoptInstead(MeasureUnit::createSecond(status));
+ measureUnitValue = MeasureUnit::getSecond();
+ measureUnit.adoptInstead(MeasureUnit::createWeek(status));
+ measureUnitValue = MeasureUnit::getWeek();
+ measureUnit.adoptInstead(MeasureUnit::createWeekPerson(status));
+ measureUnitValue = MeasureUnit::getWeekPerson();
+ measureUnit.adoptInstead(MeasureUnit::createYear(status));
+ measureUnitValue = MeasureUnit::getYear();
+ measureUnit.adoptInstead(MeasureUnit::createYearPerson(status));
+ measureUnitValue = MeasureUnit::getYearPerson();
+ measureUnit.adoptInstead(MeasureUnit::createAmpere(status));
+ measureUnitValue = MeasureUnit::getAmpere();
+ measureUnit.adoptInstead(MeasureUnit::createMilliampere(status));
+ measureUnitValue = MeasureUnit::getMilliampere();
+ measureUnit.adoptInstead(MeasureUnit::createOhm(status));
+ measureUnitValue = MeasureUnit::getOhm();
+ measureUnit.adoptInstead(MeasureUnit::createVolt(status));
+ measureUnitValue = MeasureUnit::getVolt();
+ measureUnit.adoptInstead(MeasureUnit::createBritishThermalUnit(status));
+ measureUnitValue = MeasureUnit::getBritishThermalUnit();
+ measureUnit.adoptInstead(MeasureUnit::createCalorie(status));
+ measureUnitValue = MeasureUnit::getCalorie();
+ measureUnit.adoptInstead(MeasureUnit::createElectronvolt(status));
+ measureUnitValue = MeasureUnit::getElectronvolt();
+ measureUnit.adoptInstead(MeasureUnit::createFoodcalorie(status));
+ measureUnitValue = MeasureUnit::getFoodcalorie();
+ measureUnit.adoptInstead(MeasureUnit::createJoule(status));
+ measureUnitValue = MeasureUnit::getJoule();
+ measureUnit.adoptInstead(MeasureUnit::createKilocalorie(status));
+ measureUnitValue = MeasureUnit::getKilocalorie();
+ measureUnit.adoptInstead(MeasureUnit::createKilojoule(status));
+ measureUnitValue = MeasureUnit::getKilojoule();
+ measureUnit.adoptInstead(MeasureUnit::createKilowattHour(status));
+ measureUnitValue = MeasureUnit::getKilowattHour();
+ measureUnit.adoptInstead(MeasureUnit::createThermUs(status));
+ measureUnitValue = MeasureUnit::getThermUs();
+ measureUnit.adoptInstead(MeasureUnit::createKilowattHourPer100Kilometer(status));
+ measureUnitValue = MeasureUnit::getKilowattHourPer100Kilometer();
+ measureUnit.adoptInstead(MeasureUnit::createNewton(status));
+ measureUnitValue = MeasureUnit::getNewton();
+ measureUnit.adoptInstead(MeasureUnit::createPoundForce(status));
+ measureUnitValue = MeasureUnit::getPoundForce();
+ measureUnit.adoptInstead(MeasureUnit::createGigahertz(status));
+ measureUnitValue = MeasureUnit::getGigahertz();
+ measureUnit.adoptInstead(MeasureUnit::createHertz(status));
+ measureUnitValue = MeasureUnit::getHertz();
+ measureUnit.adoptInstead(MeasureUnit::createKilohertz(status));
+ measureUnitValue = MeasureUnit::getKilohertz();
+ measureUnit.adoptInstead(MeasureUnit::createMegahertz(status));
+ measureUnitValue = MeasureUnit::getMegahertz();
+ measureUnit.adoptInstead(MeasureUnit::createDot(status));
+ measureUnitValue = MeasureUnit::getDot();
+ measureUnit.adoptInstead(MeasureUnit::createDotPerCentimeter(status));
+ measureUnitValue = MeasureUnit::getDotPerCentimeter();
+ measureUnit.adoptInstead(MeasureUnit::createDotPerInch(status));
+ measureUnitValue = MeasureUnit::getDotPerInch();
+ measureUnit.adoptInstead(MeasureUnit::createEm(status));
+ measureUnitValue = MeasureUnit::getEm();
+ measureUnit.adoptInstead(MeasureUnit::createMegapixel(status));
+ measureUnitValue = MeasureUnit::getMegapixel();
+ measureUnit.adoptInstead(MeasureUnit::createPixel(status));
+ measureUnitValue = MeasureUnit::getPixel();
+ measureUnit.adoptInstead(MeasureUnit::createPixelPerCentimeter(status));
+ measureUnitValue = MeasureUnit::getPixelPerCentimeter();
+ measureUnit.adoptInstead(MeasureUnit::createPixelPerInch(status));
+ measureUnitValue = MeasureUnit::getPixelPerInch();
+ measureUnit.adoptInstead(MeasureUnit::createAstronomicalUnit(status));
+ measureUnitValue = MeasureUnit::getAstronomicalUnit();
+ measureUnit.adoptInstead(MeasureUnit::createCentimeter(status));
+ measureUnitValue = MeasureUnit::getCentimeter();
+ measureUnit.adoptInstead(MeasureUnit::createDecimeter(status));
+ measureUnitValue = MeasureUnit::getDecimeter();
+ measureUnit.adoptInstead(MeasureUnit::createEarthRadius(status));
+ measureUnitValue = MeasureUnit::getEarthRadius();
+ measureUnit.adoptInstead(MeasureUnit::createFathom(status));
+ measureUnitValue = MeasureUnit::getFathom();
+ measureUnit.adoptInstead(MeasureUnit::createFoot(status));
+ measureUnitValue = MeasureUnit::getFoot();
+ measureUnit.adoptInstead(MeasureUnit::createFurlong(status));
+ measureUnitValue = MeasureUnit::getFurlong();
+ measureUnit.adoptInstead(MeasureUnit::createInch(status));
+ measureUnitValue = MeasureUnit::getInch();
+ measureUnit.adoptInstead(MeasureUnit::createKilometer(status));
+ measureUnitValue = MeasureUnit::getKilometer();
+ measureUnit.adoptInstead(MeasureUnit::createLightYear(status));
+ measureUnitValue = MeasureUnit::getLightYear();
+ measureUnit.adoptInstead(MeasureUnit::createMeter(status));
+ measureUnitValue = MeasureUnit::getMeter();
+ measureUnit.adoptInstead(MeasureUnit::createMicrometer(status));
+ measureUnitValue = MeasureUnit::getMicrometer();
+ measureUnit.adoptInstead(MeasureUnit::createMile(status));
+ measureUnitValue = MeasureUnit::getMile();
+ measureUnit.adoptInstead(MeasureUnit::createMileScandinavian(status));
+ measureUnitValue = MeasureUnit::getMileScandinavian();
+ measureUnit.adoptInstead(MeasureUnit::createMillimeter(status));
+ measureUnitValue = MeasureUnit::getMillimeter();
+ measureUnit.adoptInstead(MeasureUnit::createNanometer(status));
+ measureUnitValue = MeasureUnit::getNanometer();
+ measureUnit.adoptInstead(MeasureUnit::createNauticalMile(status));
+ measureUnitValue = MeasureUnit::getNauticalMile();
+ measureUnit.adoptInstead(MeasureUnit::createParsec(status));
+ measureUnitValue = MeasureUnit::getParsec();
+ measureUnit.adoptInstead(MeasureUnit::createPicometer(status));
+ measureUnitValue = MeasureUnit::getPicometer();
+ measureUnit.adoptInstead(MeasureUnit::createPoint(status));
+ measureUnitValue = MeasureUnit::getPoint();
+ measureUnit.adoptInstead(MeasureUnit::createSolarRadius(status));
+ measureUnitValue = MeasureUnit::getSolarRadius();
+ measureUnit.adoptInstead(MeasureUnit::createYard(status));
+ measureUnitValue = MeasureUnit::getYard();
+ measureUnit.adoptInstead(MeasureUnit::createCandela(status));
+ measureUnitValue = MeasureUnit::getCandela();
+ measureUnit.adoptInstead(MeasureUnit::createLumen(status));
+ measureUnitValue = MeasureUnit::getLumen();
+ measureUnit.adoptInstead(MeasureUnit::createLux(status));
+ measureUnitValue = MeasureUnit::getLux();
+ measureUnit.adoptInstead(MeasureUnit::createSolarLuminosity(status));
+ measureUnitValue = MeasureUnit::getSolarLuminosity();
+ measureUnit.adoptInstead(MeasureUnit::createCarat(status));
+ measureUnitValue = MeasureUnit::getCarat();
+ measureUnit.adoptInstead(MeasureUnit::createDalton(status));
+ measureUnitValue = MeasureUnit::getDalton();
+ measureUnit.adoptInstead(MeasureUnit::createEarthMass(status));
+ measureUnitValue = MeasureUnit::getEarthMass();
+ measureUnit.adoptInstead(MeasureUnit::createGrain(status));
+ measureUnitValue = MeasureUnit::getGrain();
+ measureUnit.adoptInstead(MeasureUnit::createGram(status));
+ measureUnitValue = MeasureUnit::getGram();
+ measureUnit.adoptInstead(MeasureUnit::createKilogram(status));
+ measureUnitValue = MeasureUnit::getKilogram();
+ measureUnit.adoptInstead(MeasureUnit::createMicrogram(status));
+ measureUnitValue = MeasureUnit::getMicrogram();
+ measureUnit.adoptInstead(MeasureUnit::createMilligram(status));
+ measureUnitValue = MeasureUnit::getMilligram();
+ measureUnit.adoptInstead(MeasureUnit::createOunce(status));
+ measureUnitValue = MeasureUnit::getOunce();
+ measureUnit.adoptInstead(MeasureUnit::createOunceTroy(status));
+ measureUnitValue = MeasureUnit::getOunceTroy();
+ measureUnit.adoptInstead(MeasureUnit::createPound(status));
+ measureUnitValue = MeasureUnit::getPound();
+ measureUnit.adoptInstead(MeasureUnit::createSolarMass(status));
+ measureUnitValue = MeasureUnit::getSolarMass();
+ measureUnit.adoptInstead(MeasureUnit::createStone(status));
+ measureUnitValue = MeasureUnit::getStone();
+ measureUnit.adoptInstead(MeasureUnit::createTon(status));
+ measureUnitValue = MeasureUnit::getTon();
+ measureUnit.adoptInstead(MeasureUnit::createTonne(status));
+ measureUnitValue = MeasureUnit::getTonne();
+ measureUnit.adoptInstead(MeasureUnit::createGigawatt(status));
+ measureUnitValue = MeasureUnit::getGigawatt();
+ measureUnit.adoptInstead(MeasureUnit::createHorsepower(status));
+ measureUnitValue = MeasureUnit::getHorsepower();
+ measureUnit.adoptInstead(MeasureUnit::createKilowatt(status));
+ measureUnitValue = MeasureUnit::getKilowatt();
+ measureUnit.adoptInstead(MeasureUnit::createMegawatt(status));
+ measureUnitValue = MeasureUnit::getMegawatt();
+ measureUnit.adoptInstead(MeasureUnit::createMilliwatt(status));
+ measureUnitValue = MeasureUnit::getMilliwatt();
+ measureUnit.adoptInstead(MeasureUnit::createWatt(status));
+ measureUnitValue = MeasureUnit::getWatt();
+ measureUnit.adoptInstead(MeasureUnit::createAtmosphere(status));
+ measureUnitValue = MeasureUnit::getAtmosphere();
+ measureUnit.adoptInstead(MeasureUnit::createBar(status));
+ measureUnitValue = MeasureUnit::getBar();
+ measureUnit.adoptInstead(MeasureUnit::createGasolineEnergyDensity(status));
+ measureUnitValue = MeasureUnit::getGasolineEnergyDensity();
+ measureUnit.adoptInstead(MeasureUnit::createHectopascal(status));
+ measureUnitValue = MeasureUnit::getHectopascal();
+ measureUnit.adoptInstead(MeasureUnit::createInchHg(status));
+ measureUnitValue = MeasureUnit::getInchHg();
+ measureUnit.adoptInstead(MeasureUnit::createKilopascal(status));
+ measureUnitValue = MeasureUnit::getKilopascal();
+ measureUnit.adoptInstead(MeasureUnit::createMegapascal(status));
+ measureUnitValue = MeasureUnit::getMegapascal();
+ measureUnit.adoptInstead(MeasureUnit::createMillibar(status));
+ measureUnitValue = MeasureUnit::getMillibar();
+ measureUnit.adoptInstead(MeasureUnit::createMillimeterOfMercury(status));
+ measureUnitValue = MeasureUnit::getMillimeterOfMercury();
+ measureUnit.adoptInstead(MeasureUnit::createPascal(status));
+ measureUnitValue = MeasureUnit::getPascal();
+ measureUnit.adoptInstead(MeasureUnit::createPoundPerSquareInch(status));
+ measureUnitValue = MeasureUnit::getPoundPerSquareInch();
+ measureUnit.adoptInstead(MeasureUnit::createBeaufort(status));
+ measureUnitValue = MeasureUnit::getBeaufort();
+ measureUnit.adoptInstead(MeasureUnit::createKilometerPerHour(status));
+ measureUnitValue = MeasureUnit::getKilometerPerHour();
+ measureUnit.adoptInstead(MeasureUnit::createKnot(status));
+ measureUnitValue = MeasureUnit::getKnot();
+ measureUnit.adoptInstead(MeasureUnit::createMeterPerSecond(status));
+ measureUnitValue = MeasureUnit::getMeterPerSecond();
+ measureUnit.adoptInstead(MeasureUnit::createMilePerHour(status));
+ measureUnitValue = MeasureUnit::getMilePerHour();
+ measureUnit.adoptInstead(MeasureUnit::createCelsius(status));
+ measureUnitValue = MeasureUnit::getCelsius();
+ measureUnit.adoptInstead(MeasureUnit::createFahrenheit(status));
+ measureUnitValue = MeasureUnit::getFahrenheit();
+ measureUnit.adoptInstead(MeasureUnit::createGenericTemperature(status));
+ measureUnitValue = MeasureUnit::getGenericTemperature();
+ measureUnit.adoptInstead(MeasureUnit::createKelvin(status));
+ measureUnitValue = MeasureUnit::getKelvin();
+ measureUnit.adoptInstead(MeasureUnit::createNewtonMeter(status));
+ measureUnitValue = MeasureUnit::getNewtonMeter();
+ measureUnit.adoptInstead(MeasureUnit::createPoundFoot(status));
+ measureUnitValue = MeasureUnit::getPoundFoot();
+ measureUnit.adoptInstead(MeasureUnit::createAcreFoot(status));
+ measureUnitValue = MeasureUnit::getAcreFoot();
+ measureUnit.adoptInstead(MeasureUnit::createBarrel(status));
+ measureUnitValue = MeasureUnit::getBarrel();
+ measureUnit.adoptInstead(MeasureUnit::createBushel(status));
+ measureUnitValue = MeasureUnit::getBushel();
+ measureUnit.adoptInstead(MeasureUnit::createCentiliter(status));
+ measureUnitValue = MeasureUnit::getCentiliter();
+ measureUnit.adoptInstead(MeasureUnit::createCubicCentimeter(status));
+ measureUnitValue = MeasureUnit::getCubicCentimeter();
+ measureUnit.adoptInstead(MeasureUnit::createCubicFoot(status));
+ measureUnitValue = MeasureUnit::getCubicFoot();
+ measureUnit.adoptInstead(MeasureUnit::createCubicInch(status));
+ measureUnitValue = MeasureUnit::getCubicInch();
+ measureUnit.adoptInstead(MeasureUnit::createCubicKilometer(status));
+ measureUnitValue = MeasureUnit::getCubicKilometer();
+ measureUnit.adoptInstead(MeasureUnit::createCubicMeter(status));
+ measureUnitValue = MeasureUnit::getCubicMeter();
+ measureUnit.adoptInstead(MeasureUnit::createCubicMile(status));
+ measureUnitValue = MeasureUnit::getCubicMile();
+ measureUnit.adoptInstead(MeasureUnit::createCubicYard(status));
+ measureUnitValue = MeasureUnit::getCubicYard();
+ measureUnit.adoptInstead(MeasureUnit::createCup(status));
+ measureUnitValue = MeasureUnit::getCup();
+ measureUnit.adoptInstead(MeasureUnit::createCupMetric(status));
+ measureUnitValue = MeasureUnit::getCupMetric();
+ measureUnit.adoptInstead(MeasureUnit::createDeciliter(status));
+ measureUnitValue = MeasureUnit::getDeciliter();
+ measureUnit.adoptInstead(MeasureUnit::createDessertSpoon(status));
+ measureUnitValue = MeasureUnit::getDessertSpoon();
+ measureUnit.adoptInstead(MeasureUnit::createDessertSpoonImperial(status));
+ measureUnitValue = MeasureUnit::getDessertSpoonImperial();
+ measureUnit.adoptInstead(MeasureUnit::createDram(status));
+ measureUnitValue = MeasureUnit::getDram();
+ measureUnit.adoptInstead(MeasureUnit::createDrop(status));
+ measureUnitValue = MeasureUnit::getDrop();
+ measureUnit.adoptInstead(MeasureUnit::createFluidOunce(status));
+ measureUnitValue = MeasureUnit::getFluidOunce();
+ measureUnit.adoptInstead(MeasureUnit::createFluidOunceImperial(status));
+ measureUnitValue = MeasureUnit::getFluidOunceImperial();
+ measureUnit.adoptInstead(MeasureUnit::createGallon(status));
+ measureUnitValue = MeasureUnit::getGallon();
+ measureUnit.adoptInstead(MeasureUnit::createGallonImperial(status));
+ measureUnitValue = MeasureUnit::getGallonImperial();
+ measureUnit.adoptInstead(MeasureUnit::createHectoliter(status));
+ measureUnitValue = MeasureUnit::getHectoliter();
+ measureUnit.adoptInstead(MeasureUnit::createJigger(status));
+ measureUnitValue = MeasureUnit::getJigger();
+ measureUnit.adoptInstead(MeasureUnit::createLiter(status));
+ measureUnitValue = MeasureUnit::getLiter();
+ measureUnit.adoptInstead(MeasureUnit::createMegaliter(status));
+ measureUnitValue = MeasureUnit::getMegaliter();
+ measureUnit.adoptInstead(MeasureUnit::createMilliliter(status));
+ measureUnitValue = MeasureUnit::getMilliliter();
+ measureUnit.adoptInstead(MeasureUnit::createPinch(status));
+ measureUnitValue = MeasureUnit::getPinch();
+ measureUnit.adoptInstead(MeasureUnit::createPint(status));
+ measureUnitValue = MeasureUnit::getPint();
+ measureUnit.adoptInstead(MeasureUnit::createPintMetric(status));
+ measureUnitValue = MeasureUnit::getPintMetric();
+ measureUnit.adoptInstead(MeasureUnit::createQuart(status));
+ measureUnitValue = MeasureUnit::getQuart();
+ measureUnit.adoptInstead(MeasureUnit::createQuartImperial(status));
+ measureUnitValue = MeasureUnit::getQuartImperial();
+ measureUnit.adoptInstead(MeasureUnit::createTablespoon(status));
+ measureUnitValue = MeasureUnit::getTablespoon();
+ measureUnit.adoptInstead(MeasureUnit::createTeaspoon(status));
+ measureUnitValue = MeasureUnit::getTeaspoon();
+ assertSuccess("", status);
+}
+
void MeasureFormatTest::TestBasic() {
UErrorCode status = U_ZERO_ERROR;
MeasureUnit *ptr1 = MeasureUnit::createArcMinute(status);
@@ -3486,7 +4264,7 @@ void MeasureFormatTest::TestBasic() {
}
void MeasureFormatTest::TestGetAvailable() {
- MeasureUnit *units = NULL;
+ MeasureUnit *units = nullptr;
UErrorCode status = U_ZERO_ERROR;
int32_t totalCount = MeasureUnit::getAvailable(units, 0, status);
while (status == U_BUFFER_OVERFLOW_ERROR) {
@@ -3513,13 +4291,13 @@ void MeasureFormatTest::TestGetAvailable() {
if (types->count(status) < 10) {
errln("Expect at least 10 distinct unit types.");
}
- units = NULL;
+ units = nullptr;
int32_t unitCapacity = 0;
int32_t unitCountSum = 0;
for (
- const char* type = types->next(NULL, status);
- type != NULL;
- type = types->next(NULL, status)) {
+ const char* type = types->next(nullptr, status);
+ type != nullptr;
+ type = types->next(nullptr, status)) {
int32_t unitCount = MeasureUnit::getAvailable(type, units, unitCapacity, status);
while (status == U_BUFFER_OVERFLOW_ERROR) {
status = U_ZERO_ERROR;
@@ -3928,7 +4706,7 @@ void MeasureFormatTest::Test10219FractionalPlurals() {
for (int j = 0; j < UPRV_LENGTHOF(values); j++) {
for (int i = 0; i < UPRV_LENGTHOF(expected[j]); i++) {
DecimalFormat *df =
- (DecimalFormat *) NumberFormat::createInstance(en, status);
+ dynamic_cast<DecimalFormat *>(NumberFormat::createInstance(en, status));
if (U_FAILURE(status)) {
dataerrln("Error creating Number format - %s", u_errorName(status));
return;
@@ -4086,7 +4864,7 @@ void MeasureFormatTest::TestFormatSingleArg() {
void MeasureFormatTest::TestFormatMeasuresZeroArg() {
UErrorCode status = U_ZERO_ERROR;
MeasureFormat fmt("en", UMEASFMT_WIDTH_WIDE, status);
- verifyFormat("TestFormatMeasuresZeroArg", fmt, NULL, 0, "");
+ verifyFormat("TestFormatMeasuresZeroArg", fmt, nullptr, 0, "");
}
void MeasureFormatTest::TestSimplePer() {
@@ -4359,7 +5137,7 @@ void MeasureFormatTest::TestGram() {
}
void MeasureFormatTest::TestCurrencies() {
- UChar USD[4] = {};
+ char16_t USD[4] = {};
u_uastrcpy(USD, "USD");
UErrorCode status = U_ZERO_ERROR;
CurrencyUnit USD_unit(USD, status);
@@ -5020,7 +5798,8 @@ void MeasureFormatTest::TestParseBuiltIns() {
// Prove that all built-in units are parseable, except "generic" temperature:
MeasureUnit parsed = MeasureUnit::forIdentifier(unit.getIdentifier(), status);
- if (unit == MeasureUnit::getGenericTemperature()) {
+ if (unit == MeasureUnit::getGenericTemperature() ||
+ (unit == MeasureUnit::getBeaufort() && logKnownIssue("CLDR-16327", "beaufort currently not convertible"))) {
status.expectErrorAndReset(U_ILLEGAL_ARGUMENT_ERROR);
} else {
status.assertSuccess();
@@ -5451,6 +6230,43 @@ void MeasureFormatTest::TestInternalMeasureUnitImpl() {
std::move(m2m).build(status).getIdentifier());
}
+void MeasureFormatTest::TestMeasureEquality() {
+ IcuTestErrorCode errorCode(*this, "TestMeasureEquality");
+ Measure measures[] = {
+ { 1., MeasureUnit::createLiter(errorCode), errorCode },
+ { 1., MeasureUnit::createLiter(errorCode), errorCode },
+ { 2., MeasureUnit::createLiter(errorCode), errorCode },
+ { 1., MeasureUnit::createGram(errorCode), errorCode }
+ };
+ static const char *const names[] = { "1 liter", "another liter", "2 liters", "1 gram" };
+
+ // Verify that C++20 -Wambiguous-reversed-operator isn't triggered.
+ assertTrue("Equal", measures[0] == measures[1]);
+ assertTrue("Not Equal", measures[2] != measures[3]);
+
+ for (int32_t i = 0; i < UPRV_LENGTHOF(measures); ++i) {
+ for (int32_t j = 0; j < UPRV_LENGTHOF(measures); ++j) {
+ const Measure &a = measures[i];
+ const UObject &b = measures[j]; // UObject for "other"
+ std::string eq = std::string(names[i]) + std::string(" == ") + std::string(names[j]);
+ std::string ne = std::string(names[i]) + std::string(" != ") + std::string(names[j]);
+ // 1l = 1l
+ bool expectedEquals = i == j || (i <= 1 && j <= 1);
+ assertEquals(eq.c_str(), expectedEquals, a == b);
+ assertEquals(ne.c_str(), !expectedEquals, a != b);
+ }
+ }
+
+ UnicodeString s(u"?");
+ for (int32_t i = 0; i < UPRV_LENGTHOF(measures); ++i) {
+ const Measure &a = measures[i];
+ std::string eq = std::string(names[i]) + std::string(" == UnicodeString");
+ std::string ne = std::string(names[i]) + std::string(" != UnicodeString");
+ assertEquals(eq.c_str(), false, a == s);
+ assertEquals(ne.c_str(), true, a != s);
+ }
+}
+
void MeasureFormatTest::verifyFieldPosition(
const char *description,
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/miscdtfm.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/miscdtfm.cpp
index 4fc2460251d..535db88c778 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/miscdtfm.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/miscdtfm.cpp
@@ -290,7 +290,7 @@ void
DateFormatMiscTests::test4117335()
{
//UnicodeString bc = "\u7d00\u5143\u524d";
- UChar bcC [] = {
+ char16_t bcC [] = {
0x7D00,
0x5143,
0x524D
@@ -298,21 +298,21 @@ DateFormatMiscTests::test4117335()
UnicodeString bc(bcC, 3, 3);
//UnicodeString ad = "\u897f\u66a6";
- UChar adC [] = {
+ char16_t adC [] = {
0x897F,
0x66A6
};
UnicodeString ad(adC, 2, 2);
//UnicodeString jstLong = "\u65e5\u672c\u6a19\u6e96\u6642";
- UChar jstLongC [] = {
+ char16_t jstLongC [] = {
0x65e5,
0x672c,
0x6a19,
0x6e96,
0x6642
};
- UChar jdtLongC [] = {0x65E5, 0x672C, 0x590F, 0x6642, 0x9593};
+ char16_t jdtLongC [] = {0x65E5, 0x672C, 0x590F, 0x6642, 0x9593};
UnicodeString jstLong(jstLongC, 5, 5);
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/miscdtfm.h b/Build/source/libs/icu/icu-src/source/test/intltest/miscdtfm.h
index 8eaefed561a..afb1916fc23 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/miscdtfm.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/miscdtfm.h
@@ -24,9 +24,9 @@ class DateFormatMiscTests : public IntlTest {
void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par ) override;
public:
- void test4097450(void);
- void test4099975(void);
- void test4117335(void);
+ void test4097450();
+ void test4099975();
+ void test4117335();
protected:
UBool failure(UErrorCode status, const char* msg);
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/mnkytst.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/mnkytst.cpp
index 9c47aa3d843..ef926392c23 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/mnkytst.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/mnkytst.cpp
@@ -78,7 +78,7 @@ void CollationMonkeyTest::TestCollationKey(/* char* par */)
return;
}
- srand( (unsigned)time( NULL ) );
+ srand( (unsigned)time( nullptr ) );
int32_t s = checkValue(rand() % source.length());
int32_t t = checkValue(rand() % source.length());
int32_t slen = checkValue((rand() - source.length()) % source.length());
@@ -153,7 +153,7 @@ CollationMonkeyTest::TestCompare(/* char* par */)
/* Seed the random-number generator with current time so that
* the numbers will be different every time we run.
*/
- srand( (unsigned)time( NULL ) );
+ srand( (unsigned)time( nullptr ) );
int32_t s = checkValue(rand() % source.length());
int32_t t = checkValue(rand() % source.length());
int32_t slen = checkValue((rand() - source.length()) % source.length());
@@ -206,12 +206,12 @@ CollationMonkeyTest::TestCompare(/* char* par */)
}
}
void CollationMonkeyTest::TestRules(/* char* par */){
- UChar testSourceCases[][10] = {
+ char16_t testSourceCases[][10] = {
{0x0061, 0x0062, 0x007a, 0},
{0x0061, 0x0062, 0x007a, 0},
};
- UChar testTargetCases[][10] = {
+ char16_t testTargetCases[][10] = {
{0x0061, 0x0062, 0x00e4, 0},
{0x0061, 0x0062, 0x0061, 0x0308, 0},
};
@@ -220,9 +220,9 @@ void CollationMonkeyTest::TestRules(/* char* par */){
logln("Demo Test 1 : Create a new table collation with rules \"& z < 0x00e4\"");
UErrorCode status = U_ZERO_ERROR;
Collator *col = Collator::createInstance("en_US", status);
- const UnicodeString baseRules = ((RuleBasedCollator*)col)->getRules();
+ const UnicodeString baseRules = (dynamic_cast<RuleBasedCollator*>(col))->getRules();
UnicodeString newRules(" & z < ");
- newRules.append((UChar)0x00e4);
+ newRules.append((char16_t)0x00e4);
newRules.insert(0, baseRules);
RuleBasedCollator *myCollation = new RuleBasedCollator(newRules, status);
if (U_FAILURE(status)) {
@@ -237,7 +237,7 @@ void CollationMonkeyTest::TestRules(/* char* par */){
logln("Demo Test 2 : Create a new table collation with rules \"& z < a 0x0308\"");
newRules.remove();
newRules.append(" & z < a");
- newRules.append((UChar)0x0308);
+ newRules.append((char16_t)0x0308);
newRules.insert(0, baseRules);
myCollation = new RuleBasedCollator(newRules, status);
if (U_FAILURE(status)) {
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/mnkytst.h b/Build/source/libs/icu/icu-src/source/test/intltest/mnkytst.h
index 2730bce0010..2eb5e044640 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/mnkytst.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/mnkytst.h
@@ -30,7 +30,7 @@ public:
CollationMonkeyTest();
virtual ~CollationMonkeyTest();
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
// utility function used in tests, returns absolute value
int32_t checkValue(int32_t value);
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/msfmrgts.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/msfmrgts.cpp
index 067c1238228..fa3337eaa54 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/msfmrgts.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/msfmrgts.cpp
@@ -114,15 +114,15 @@ void MessageFormatRegressionTest::Test4074764() {
failure(status, "messageFormatter->applyPattern");
// {sfb} how much does this apply in C++?
- // do we want to verify that the Formattable* array is not NULL,
+ // do we want to verify that the Formattable* array is not nullptr,
// or is that the user's responsibility?
// additionally, what should be the item count?
// for bug testing purposes, assume that something was set to
- // NULL by mistake, and that the length should be non-zero
+ // nullptr by mistake, and that the length should be non-zero
- //tempBuffer = messageFormatter->format(NULL, 1, tempBuffer, FieldPosition(FieldPosition::DONT_CARE), status);
+ //tempBuffer = messageFormatter->format(nullptr, 1, tempBuffer, FieldPosition(FieldPosition::DONT_CARE), status);
tempBuffer.remove();
- tempBuffer = messageFormatter->format(NULL, 0, tempBuffer, pos, status);
+ tempBuffer = messageFormatter->format(nullptr, 0, tempBuffer, pos, status);
if( tempBuffer != "Message without param" || failure(status, "messageFormat->format"))
errln("MessageFormat with no param test failed.");
@@ -205,7 +205,7 @@ void MessageFormatRegressionTest::Test4031438()
ParsePosition pp(0);
int32_t count = 0;
Formattable *objs = messageFormatter->parse(tempBuffer, pp, count);
- //if(objs[7/*params.length*/] != NULL)
+ //if(objs[7/*params.length*/] != nullptr)
// errln("Parse failed with more than expected arguments");
NumberFormat *fmt = 0;
@@ -243,7 +243,7 @@ void MessageFormatRegressionTest::Test4031438()
}
}
- //if (objs[i] != NULL && objs[i].getString(temp1) != params[i].getString(temp2)) {
+ //if (objs[i] != nullptr && objs[i].getString(temp1) != params[i].getString(temp2)) {
if (temp != temp1) {
errln("Parse failed on object " + objs[i].getString(temp1) + " at index : " + i);
}
@@ -344,7 +344,7 @@ void MessageFormatRegressionTest::Test4104976()
failure(status, "new ChoiceFormat");
//try {
log("Compares to null is always false, returned : ");
- logln(cf == NULL ? "true" : "false");
+ logln(cf == nullptr ? "true" : "false");
/*} catch (Exception foo) {
errln("ChoiceFormat.equals(null) throws exception.");
}*/
@@ -368,7 +368,7 @@ void MessageFormatRegressionTest::Test4106659()
UnicodeString formats [] = {
"one", "two"
};
- ChoiceFormat *cf = NULL;
+ ChoiceFormat *cf = nullptr;
//try {
// cf = new ChoiceFormat(limits, formats, 3);
//} catch (Exception foo) {
@@ -496,7 +496,7 @@ void MessageFormatRegressionTest::Test4116444()
Formattable *array = mf->parse(UnicodeString(""), pp, count);
logln("pattern: \"" + pattern + "\"");
log(" parsedObjects: ");
- if (array != NULL) {
+ if (array != nullptr) {
log("{");
for (int j = 0; j < count; j++) {
//if (array[j] != null)
@@ -533,9 +533,9 @@ void MessageFormatRegressionTest::Test4114739()
MessageFormat *mf = new MessageFormat("<{0}>", status);
failure(status, "new MessageFormat");
- Formattable *objs1 = NULL;
+ Formattable *objs1 = nullptr;
//Formattable objs2 [] = {};
- //Formattable *objs3 [] = {NULL};
+ //Formattable *objs3 [] = {nullptr};
//try {
UnicodeString pat;
UnicodeString res;
@@ -640,9 +640,9 @@ void MessageFormatRegressionTest::Test4094906()
{
UErrorCode status = U_ZERO_ERROR;
UnicodeString pattern("-");
- pattern += (UChar) 0x221E;
+ pattern += (char16_t) 0x221E;
pattern += "<are negative|0<are no or fraction|1#is one|1<is 1+|";
- pattern += (UChar) 0x221E;
+ pattern += (char16_t) 0x221E;
pattern += "<are many.";
ChoiceFormat *fmt = new ChoiceFormat(pattern, status);
@@ -717,7 +717,7 @@ void MessageFormatRegressionTest::Test4118592()
UnicodeString pat;
logln(UnicodeString("") + i + ". pattern :\"" + mf->toPattern(pat) + "\"");
log(" \"" + formatted + "\" parsed as ");
- if (objs == NULL)
+ if (objs == nullptr)
logln(" null");
else {
UnicodeString temp;
@@ -771,7 +771,7 @@ void MessageFormatRegressionTest::Test4118594()
pp.setIndex(0);
Formattable *newobjs = mf->parse(result, pp, count1);
// newobjs now equals {new Double(3.1)}
- if (newobjs == NULL) {
+ if (newobjs == nullptr) {
dataerrln("Error calling MessageFormat::parse");
} else {
if (newobjs[0].getDouble() != 3.1)
@@ -844,7 +844,7 @@ void MessageFormatRegressionTest::Test4120552()
int32_t count = 0;
Formattable *objs = mf->parse(texts[i], pp, count);
log(" text for parsing: \"" + texts[i] + "\"");
- if (objs == NULL) {
+ if (objs == nullptr) {
logln(" (incorrectly formatted string)");
if (pp.getErrorIndex() == -1)
errln(UnicodeString("Incorrect error index: ") + pp.getErrorIndex());
@@ -977,7 +977,7 @@ void MessageFormatRegressionTest::Test4112104()
failure(status, "new MessageFormat");
//try {
// This should NOT throw an exception
- if (format == NULL) {
+ if (format == nullptr) {
// It also should return false
errln("MessageFormat.equals(null) returns false");
}
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/msfmrgts.h b/Build/source/libs/icu/icu-src/source/test/intltest/msfmrgts.h
index 72ea6f5ba44..ec4ed7c126d 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/msfmrgts.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/msfmrgts.h
@@ -24,29 +24,29 @@ class MessageFormatRegressionTest: public IntlTest {
void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par ) override;
public:
- void Test4074764(void);
- void Test4058973(void);
- void Test4031438(void);
- void Test4052223(void);
- void Test4104976(void);
- void Test4106659(void);
- void Test4106660(void);
- void Test4111739(void);
- void Test4114743(void);
- void Test4116444(void);
- void Test4114739(void);
- void Test4113018(void);
- void Test4106661(void);
- void Test4094906(void);
- void Test4118592(void);
- void Test4118594(void);
- void Test4105380(void);
- void Test4120552(void);
- void Test4142938(void);
- void TestChoicePatternQuote(void);
- void Test4112104(void);
- void TestICU12584(void);
- void TestAPI(void);
+ void Test4074764();
+ void Test4058973();
+ void Test4031438();
+ void Test4052223();
+ void Test4104976();
+ void Test4106659();
+ void Test4106660();
+ void Test4111739();
+ void Test4114743();
+ void Test4116444();
+ void Test4114739();
+ void Test4113018();
+ void Test4106661();
+ void Test4094906();
+ void Test4118592();
+ void Test4118594();
+ void Test4105380();
+ void Test4120552();
+ void Test4142938();
+ void TestChoicePatternQuote();
+ void Test4112104();
+ void TestICU12584();
+ void TestAPI();
protected:
UBool failure(UErrorCode status, const char* msg, UBool possibleDataError=false);
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/nmfmapts.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/nmfmapts.cpp
index a8b8f649e7f..77e56ffd37e 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/nmfmapts.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/nmfmapts.cpp
@@ -102,7 +102,7 @@ void IntlTestNumberFormatAPI::testAPI(/* char* par */)
}
// ======= Test equality
-if (per_fr != NULL && cur_fr != NULL)
+if (per_fr != nullptr && cur_fr != nullptr)
{
logln("Testing equality operator");
@@ -112,7 +112,7 @@ if (per_fr != NULL && cur_fr != NULL)
}
// ======= Test various format() methods
-if (cur_fr != NULL)
+if (cur_fr != nullptr)
{
logln("Testing various format() methods");
@@ -152,7 +152,7 @@ if (cur_fr != NULL)
}
// ======= Test parse()
-if (fr != NULL)
+if (fr != nullptr)
{
logln("Testing parse()");
@@ -184,7 +184,7 @@ if (fr != NULL)
}
// ======= Test getters and setters
-if (fr != NULL && def != NULL)
+if (fr != nullptr && def != nullptr)
{
logln("Testing getters and setters");
@@ -276,7 +276,7 @@ public:
if (formatType == UNUM_CURRENCY) {
return currencyStyle->clone();
}
- return NULL;
+ return nullptr;
}
virtual inline UClassID getDynamicClassID() const override
@@ -312,8 +312,8 @@ IntlTestNumberFormatAPI::testRegistration()
LocalPointer<StringEnumeration> locs(NumberFormat::getAvailableLocales());
- LocalUNumberFormatPointer uf3(unum_open(UNUM_CURRENCY, NULL, 0, SRC_LOC.getName(), NULL, &status));
- LocalUNumberFormatPointer uf4(unum_open(UNUM_DEFAULT, NULL, 0, SRC_LOC.getName(), NULL, &status));
+ LocalUNumberFormatPointer uf3(unum_open(UNUM_CURRENCY, nullptr, 0, SRC_LOC.getName(), nullptr, &status));
+ LocalUNumberFormatPointer uf4(unum_open(UNUM_DEFAULT, nullptr, 0, SRC_LOC.getName(), nullptr, &status));
const UnicodeString* res;
for (res = locs->snext(status); res; res = locs->snext(status)) {
@@ -322,7 +322,7 @@ IntlTestNumberFormatAPI::testRegistration()
NumberFormat::unregister(key, status); // restore for other tests
LocalPointer<NumberFormat> f5(NumberFormat::createCurrencyInstance(SRC_LOC, status));
- LocalUNumberFormatPointer uf5(unum_open(UNUM_CURRENCY, NULL, 0, SRC_LOC.getName(), NULL, &status));
+ LocalUNumberFormatPointer uf5(unum_open(UNUM_CURRENCY, nullptr, 0, SRC_LOC.getName(), nullptr, &status));
if (U_FAILURE(status)) {
dataerrln("Error creating instances.");
@@ -330,9 +330,9 @@ IntlTestNumberFormatAPI::testRegistration()
} else {
float n = 1234.567f;
UnicodeString res0, res1, res2, res3, res4, res5;
- UChar ures3[50];
- UChar ures4[50];
- UChar ures5[50];
+ char16_t ures3[50];
+ char16_t ures4[50];
+ char16_t ures5[50];
f0->format(n, res0);
f1->format(n, res1);
@@ -341,9 +341,9 @@ IntlTestNumberFormatAPI::testRegistration()
f4->format(n, res4);
f5->format(n, res5);
- unum_formatDouble(uf3.getAlias(), n, ures3, 50, NULL, &status);
- unum_formatDouble(uf4.getAlias(), n, ures4, 50, NULL, &status);
- unum_formatDouble(uf5.getAlias(), n, ures5, 50, NULL, &status);
+ unum_formatDouble(uf3.getAlias(), n, ures3, 50, nullptr, &status);
+ unum_formatDouble(uf4.getAlias(), n, ures4, 50, nullptr, &status);
+ unum_formatDouble(uf5.getAlias(), n, ures5, 50, nullptr, &status);
logln((UnicodeString)"f0 swap int: " + res0);
logln((UnicodeString)"f1 src int: " + res1);
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/nmfmapts.h b/Build/source/libs/icu/icu-src/source/test/intltest/nmfmapts.h
index be0f051b3d9..5928427cd03 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/nmfmapts.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/nmfmapts.h
@@ -20,7 +20,7 @@
* This test executes basic functionality checks of various API functions
**/
class IntlTestNumberFormatAPI: public IntlTest {
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
private:
/**
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/nmfmtrt.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/nmfmtrt.cpp
index 8133f4a34d4..6111ad25e25 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/nmfmtrt.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/nmfmtrt.cpp
@@ -19,7 +19,7 @@
#include "cstring.h"
#include <float.h>
-#include <stdio.h> // for sprintf
+#include <stdio.h> // for snprintf
#include <stdlib.h>
// *****************************************************************************
@@ -92,7 +92,7 @@ NumberFormatRoundTripTest::start()
UErrorCode status = U_ZERO_ERROR;
- NumberFormat *fmt = NULL;
+ NumberFormat *fmt = nullptr;
logln("Default Locale");
@@ -186,7 +186,7 @@ NumberFormatRoundTripTest::test(NumberFormat *fmt)
// the double will stay in range.
//if(fmt->getMultipler() == 1)
DecimalFormat *df = dynamic_cast<DecimalFormat *>(fmt);
- if(df != NULL)
+ if(df != nullptr)
{
#if !(U_PF_OS390 <= U_PLATFORM && U_PLATFORM <= U_PF_OS400)
/* DBL_MAX/2 is here because randomDouble does a *2 in the math */
@@ -234,7 +234,7 @@ NumberFormatRoundTripTest::test(NumberFormat *fmt, const Formattable& value)
{
fmt->setMaximumFractionDigits(999);
DecimalFormat *df = dynamic_cast<DecimalFormat *>(fmt);
- if(df != NULL) {
+ if(df != nullptr) {
df->setRoundingIncrement(0.0);
}
UErrorCode status = U_ZERO_ERROR;
@@ -358,7 +358,7 @@ NumberFormatRoundTripTest::escape(UnicodeString& s)
} else {
s += "+U";
char temp[16];
- sprintf(temp, "%4X", c); // might not work
+ snprintf(temp, sizeof(temp), "%4X", c); // might not work
s += temp;
}
}
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/nmfmtrt.h b/Build/source/libs/icu/icu-src/source/test/intltest/nmfmtrt.h
index 6585693eb13..0f7e17f059b 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/nmfmtrt.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/nmfmtrt.h
@@ -35,7 +35,7 @@ public:
static double min_numeric_error;
- void start(void);
+ void start();
void test(NumberFormat *fmt);
void test(NumberFormat *fmt, double value);
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/normconf.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/normconf.cpp
index e2ddc0d49ea..8de551480bf 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/normconf.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/normconf.cpp
@@ -75,12 +75,12 @@ NormalizerConformanceTest::openNormalizationTestFile(const char *filename) {
// look inside ICU_DATA first
folder=pathToDataDirectory();
- if(folder!=NULL) {
+ if(folder!=nullptr) {
strcpy(unidataPath, folder);
strcat(unidataPath, "unidata" U_FILE_SEP_STRING);
strcat(unidataPath, filename);
input=T_FileStream_open(unidataPath, "rb");
- if(input!=NULL) {
+ if(input!=nullptr) {
return input;
}
}
@@ -95,7 +95,7 @@ NormalizerConformanceTest::openNormalizationTestFile(const char *filename) {
U_FILE_SEP_STRING "data" U_FILE_SEP_STRING "unidata" U_FILE_SEP_STRING);
strcat(unidataPath, filename);
input=T_FileStream_open(unidataPath, "rb");
- if(input!=NULL) {
+ if(input!=nullptr) {
return input;
}
}
@@ -108,7 +108,7 @@ NormalizerConformanceTest::openNormalizationTestFile(const char *filename) {
strcat(unidataPath, U_FILE_SEP_STRING);
strcat(unidataPath, filename);
input=T_FileStream_open(unidataPath, "rb");
- if(input!=NULL) {
+ if(input!=nullptr) {
return input;
}
}
@@ -121,7 +121,7 @@ NormalizerConformanceTest::openNormalizationTestFile(const char *filename) {
strcat(unidataPath, U_FILE_SEP_STRING ".." U_FILE_SEP_STRING ".." U_FILE_SEP_STRING);
strcat(unidataPath, filename);
input=T_FileStream_open(unidataPath, "rb");
- if(input!=NULL) {
+ if(input!=nullptr) {
return input;
}
}
@@ -131,20 +131,20 @@ NormalizerConformanceTest::openNormalizationTestFile(const char *filename) {
strcpy(unidataPath, U_TOPSRCDIR U_FILE_SEP_STRING "data" U_FILE_SEP_STRING "unidata" U_FILE_SEP_STRING);
strcat(unidataPath, filename);
input=T_FileStream_open(unidataPath, "rb");
- if(input!=NULL) {
+ if(input!=nullptr) {
return input;
}
strcpy(unidataPath, U_TOPSRCDIR U_FILE_SEP_STRING "test" U_FILE_SEP_STRING "testdata" U_FILE_SEP_STRING);
strcat(unidataPath, filename);
input=T_FileStream_open(unidataPath, "rb");
- if(input!=NULL) {
+ if(input!=nullptr) {
return input;
}
#endif
dataerrln("Failed to open %s", filename);
- return NULL;
+ return nullptr;
}
/**
@@ -168,7 +168,7 @@ void NormalizerConformanceTest::TestConformance(FileStream *input, int32_t optio
int32_t failCount = 0;
UChar32 c;
- if(input==NULL) {
+ if(input==nullptr) {
return;
}
@@ -256,7 +256,7 @@ void NormalizerConformanceTest::TestConformance(FileStream *input, int32_t optio
}
fields[0]=fields[1]=fields[2]=fields[3]=fields[4].setTo(c);
- sprintf(lineBuf, "not mentioned code point U+%04lx", (long)c);
+ snprintf(lineBuf, sizeof(lineBuf), "not mentioned code point U+%04lx", (long)c);
if (checkConformance(fields, lineBuf, options, status)) {
++passCount;
@@ -598,7 +598,7 @@ UBool NormalizerConformanceTest::assertEqual(const char *op, const char *op2,
UBool NormalizerConformanceTest::hexsplit(const char *s, char delimiter,
UnicodeString output[], int32_t outputLength) {
const char *t = s;
- char *end = NULL;
+ char *end = nullptr;
UChar32 c;
int32_t i;
for (i=0; i<outputLength; ++i) {
@@ -649,7 +649,7 @@ UBool NormalizerConformanceTest::hexsplit(const char *s, char delimiter,
// Specific tests for debugging. These are generally failures taken from
// the conformance file, but culled out to make debugging easier.
-void NormalizerConformanceTest::TestCase6(void) {
+void NormalizerConformanceTest::TestCase6() {
_testOneLine("0385;0385;00A8 0301;0020 0308 0301;0020 0308 0301;");
}
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/normconf.h b/Build/source/libs/icu/icu-src/source/test/intltest/normconf.h
index 8fc12909e25..a4f90b5ca14 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/normconf.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/normconf.h
@@ -28,7 +28,7 @@ class NormalizerConformanceTest : public IntlTest {
NormalizerConformanceTest();
virtual ~NormalizerConformanceTest();
- void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par=NULL) override;
+ void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par=nullptr) override;
/**
* Test the conformance of Normalizer to
@@ -40,7 +40,7 @@ class NormalizerConformanceTest : public IntlTest {
// Specific tests for debugging. These are generally failures taken from
// the conformance file, but culled out to make debugging easier.
- void TestCase6(void);
+ void TestCase6();
private:
FileStream *openNormalizationTestFile(const char *filename);
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/nptrans.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/nptrans.cpp
index ac158f25c26..0e9e4ceac0c 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/nptrans.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/nptrans.cpp
@@ -40,7 +40,7 @@ NamePrepTransform* NamePrepTransform::createInstance(UParseError& parseError, UE
NamePrepTransform* transform = new NamePrepTransform(parseError, status);
if(U_FAILURE(status)){
delete transform;
- return NULL;
+ return nullptr;
}
return transform;
}
@@ -63,9 +63,9 @@ NamePrepTransform::NamePrepTransform(UParseError& parseError, UErrorCode& status
if(lbundle.isValid() && U_SUCCESS(status)){
// create the mapping transliterator
int32_t ruleLen = 0;
- const UChar* ruleUChar = ures_getStringByKey(lbundle.getAlias(), "MapNFKC",&ruleLen, &status);
+ const char16_t* ruleUChar = ures_getStringByKey(lbundle.getAlias(), "MapNFKC",&ruleLen, &status);
int32_t mapRuleLen = 0;
- const UChar *mapRuleUChar = ures_getStringByKey(lbundle.getAlias(), "MapNoNormalization", &mapRuleLen, &status);
+ const char16_t *mapRuleUChar = ures_getStringByKey(lbundle.getAlias(), "MapNoNormalization", &mapRuleLen, &status);
UnicodeString rule(mapRuleUChar, mapRuleLen);
rule.append(ruleUChar, ruleLen);
@@ -77,7 +77,7 @@ NamePrepTransform::NamePrepTransform(UParseError& parseError, UErrorCode& status
//create the unassigned set
int32_t patternLen =0;
- const UChar* pattern = ures_getStringByKey(lbundle.getAlias(),"UnassignedSet",&patternLen, &status);
+ const char16_t* pattern = ures_getStringByKey(lbundle.getAlias(),"UnassignedSet",&patternLen, &status);
unassigned.applyPattern(UnicodeString(pattern, patternLen), status);
//create prohibited set
@@ -91,7 +91,7 @@ NamePrepTransform::NamePrepTransform(UParseError& parseError, UErrorCode& status
}
if(U_SUCCESS(status)){
- if(prohibited.contains((UChar) 0x644)){
+ if(prohibited.contains((char16_t) 0x644)){
printf("The string contains 0x644 ... !!\n");
}
UnicodeString temp;
@@ -127,16 +127,16 @@ UBool NamePrepTransform::isProhibited(UChar32 ch){
NamePrepTransform::~NamePrepTransform(){
delete mapping;
- mapping = NULL;
+ mapping = nullptr;
//close the bundle
ures_close(bundle);
- bundle = NULL;
+ bundle = nullptr;
}
-int32_t NamePrepTransform::map(const UChar* src, int32_t srcLength,
- UChar* dest, int32_t destCapacity,
+int32_t NamePrepTransform::map(const char16_t* src, int32_t srcLength,
+ char16_t* dest, int32_t destCapacity,
UBool allowUnassigned,
UParseError* /*parseError*/,
UErrorCode& status ){
@@ -145,7 +145,7 @@ int32_t NamePrepTransform::map(const UChar* src, int32_t srcLength,
return 0;
}
//check arguments
- if(src==NULL || srcLength<-1 || (dest==NULL && destCapacity!=0)) {
+ if(src==nullptr || srcLength<-1 || (dest==nullptr && destCapacity!=0)) {
status=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -155,7 +155,7 @@ int32_t NamePrepTransform::map(const UChar* src, int32_t srcLength,
// transliteration also performs NFKC
mapping->transliterate(rsource);
- const UChar* buffer = rsource.getBuffer();
+ const char16_t* buffer = rsource.getBuffer();
int32_t bufLen = rsource.length();
// check if unassigned
if(allowUnassigned == false){
@@ -180,8 +180,8 @@ int32_t NamePrepTransform::map(const UChar* src, int32_t srcLength,
#define MAX_BUFFER_SIZE 300
-int32_t NamePrepTransform::process( const UChar* src, int32_t srcLength,
- UChar* dest, int32_t destCapacity,
+int32_t NamePrepTransform::process( const char16_t* src, int32_t srcLength,
+ char16_t* dest, int32_t destCapacity,
UBool allowUnassigned,
UParseError* parseError,
UErrorCode& status ){
@@ -191,13 +191,13 @@ int32_t NamePrepTransform::process( const UChar* src, int32_t srcLength,
}
//check arguments
- if(src==NULL || srcLength<-1 || (dest==NULL && destCapacity!=0)) {
+ if(src==nullptr || srcLength<-1 || (dest==nullptr && destCapacity!=0)) {
status=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
UnicodeString b1String;
- UChar *b1 = b1String.getBuffer(MAX_BUFFER_SIZE);
+ char16_t *b1 = b1String.getBuffer(MAX_BUFFER_SIZE);
int32_t b1Len;
int32_t b1Index = 0;
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/nptrans.h b/Build/source/libs/icu/icu-src/source/test/intltest/nptrans.h
index 88c15ed3b1e..75ac403705a 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/nptrans.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/nptrans.h
@@ -70,7 +70,7 @@ public :
* that that a character be mapped to nothing, mapped to one
* other character or to a string of other characters.
*
- * @param src Pointer to UChar buffer containing a single label
+ * @param src Pointer to char16_t buffer containing a single label
* @param srcLength Number of characters in the source label
* @param dest Pointer to the destination buffer to receive the output
* @param destCapacity The capacity of destination array
@@ -81,8 +81,8 @@ public :
* Must fulfill U_SUCCESS before the function call.
* @return The number of UChars in the destination buffer
*/
- int32_t map(const UChar* src, int32_t srcLength,
- UChar* dest, int32_t destCapacity,
+ int32_t map(const char16_t* src, int32_t srcLength,
+ char16_t* dest, int32_t destCapacity,
UBool allowUnassigned,
UParseError* parseError,
UErrorCode& status );
@@ -91,7 +91,7 @@ public :
* Prepare the input stream with for use. This operation maps, normalizes(NFKC),
* checks for prohited and BiDi characters in the order defined by RFC 3454
*
- * @param src Pointer to UChar buffer containing a single label
+ * @param src Pointer to char16_t buffer containing a single label
* @param srcLength Number of characters in the source label
* @param dest Pointer to the destination buffer to receive the output
* @param destCapacity The capacity of destination array
@@ -102,8 +102,8 @@ public :
* Must fulfill U_SUCCESS before the function call.
* @return The number of UChars in the destination buffer
*/
- int32_t process(const UChar* src, int32_t srcLength,
- UChar* dest, int32_t destCapacity,
+ int32_t process(const char16_t* src, int32_t srcLength,
+ char16_t* dest, int32_t destCapacity,
UBool allowUnassigned,
UParseError* parseError,
UErrorCode& status );
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/numberformattesttuple.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/numberformattesttuple.cpp
index 0cf50b4a065..4cacedcb3c8 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/numberformattesttuple.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/numberformattesttuple.cpp
@@ -39,7 +39,10 @@ static Numberformattesttuple_EnumConversion gRoundingEnum[] = {
{"halfEven", DecimalFormat::kRoundHalfEven},
{"halfDown", DecimalFormat::kRoundHalfDown},
{"halfUp", DecimalFormat::kRoundHalfUp},
- {"unnecessary", DecimalFormat::kRoundUnnecessary}};
+ {"unnecessary", DecimalFormat::kRoundUnnecessary},
+ {"halfOdd", DecimalFormat::kRoundHalfOdd},
+ {"halfCeiling", DecimalFormat::kRoundHalfCeiling},
+ {"halfFloor", DecimalFormat::kRoundHalfFloor}};
static Numberformattesttuple_EnumConversion gCurrencyUsageEnum[] = {
{"standard", UCURR_USAGE_STANDARD},
@@ -148,7 +151,7 @@ static void strToInt(
}
int64_t value = 0;
for (int32_t i = start; i < len; ++i) {
- UChar ch = str[i];
+ char16_t ch = str[i];
if (ch < 0x30 || ch > 0x39) {
status = U_ILLEGAL_ARGUMENT_ERROR;
return;
@@ -161,12 +164,12 @@ static void strToInt(
static void intToStr(
const void *intPtr, UnicodeString &appendTo) {
- UChar buffer[20];
+ char16_t buffer[20];
// int64_t such that all int32_t values can be negated
int64_t xSigned = *static_cast<const int32_t *>(intPtr);
uint32_t x;
if (xSigned < 0) {
- appendTo.append((UChar)0x2D);
+ appendTo.append((char16_t)0x2D);
x = static_cast<uint32_t>(-xSigned);
} else {
x = static_cast<uint32_t>(xSigned);
@@ -192,7 +195,7 @@ static void doubleToStr(
const void *doublePtr, UnicodeString &appendTo) {
char buffer[256];
double x = *static_cast<const double *>(doublePtr);
- sprintf(buffer, "%f", x);
+ snprintf(buffer, sizeof(buffer), "%f", x);
appendTo.append(buffer);
}
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/numbertest.h b/Build/source/libs/icu/icu-src/source/test/intltest/numbertest.h
index f1d3b50a2a4..1ad8b28da75 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/numbertest.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/numbertest.h
@@ -103,6 +103,7 @@ class NumberFormatterApiTest : public IntlTestWithFieldPosition {
void toDecimalNumber();
void microPropsInternals();
void formatUnitsAliases();
+ void testIssue22378();
void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = 0) override;
@@ -185,7 +186,7 @@ class NumberFormatterApiTest : public IntlTestWithFieldPosition {
const char *locale;
const char *unitDisplayCase;
double value;
- const UChar *expected;
+ const char16_t *expected;
};
void runUnitInflectionsTestCases(UnlocalizedNumberFormatter unf,
@@ -301,6 +302,7 @@ class NumberSkeletonTest : public IntlTest {
void wildcardCharacters();
void perUnitInArabic();
void perUnitToSkeleton();
+ void measurementSystemOverride();
void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = 0) override;
@@ -365,6 +367,18 @@ class NumberRangeFormatterTest : public IntlTestWithFieldPosition {
const char16_t* expected);
};
+class SimpleNumberFormatterTest : public IntlTestWithFieldPosition {
+ public:
+ void testBasic();
+ void testWithOptions();
+ void testSymbols();
+ void testSign();
+ void testCopyMove();
+ void testCAPI();
+
+ void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = 0) override;
+};
+
class NumberPermutationTest : public IntlTest {
public:
void testPermutations();
@@ -403,7 +417,8 @@ class NumberTest : public IntlTest {
TESTCLASS(7, NumberParserTest);
TESTCLASS(8, NumberSkeletonTest);
TESTCLASS(9, NumberRangeFormatterTest);
- TESTCLASS(10, NumberPermutationTest);
+ TESTCLASS(10, SimpleNumberFormatterTest);
+ TESTCLASS(11, NumberPermutationTest);
default: name = ""; break; // needed to end loop
}
}
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/numbertest_affixutils.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/numbertest_affixutils.cpp
index 5851a9fbdaa..63359d33939 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/numbertest_affixutils.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/numbertest_affixutils.cpp
@@ -18,7 +18,7 @@ class DefaultSymbolProvider : public SymbolProvider {
public:
DefaultSymbolProvider(UErrorCode &status) : fSymbols(Locale("ar_SA"), status) {}
- UnicodeString getSymbol(AffixPatternType type) const U_OVERRIDE {
+ UnicodeString getSymbol(AffixPatternType type) const override {
switch (type) {
case TYPE_MINUS_SIGN:
return u"−";
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/numbertest_api.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/numbertest_api.cpp
index 18ceb194f39..4146247ff29 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/numbertest_api.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/numbertest_api.cpp
@@ -133,6 +133,7 @@ void NumberFormatterApiTest::runIndexedTest(int32_t index, UBool exec, const cha
TESTCASE_AUTO(toDecimalNumber);
TESTCASE_AUTO(microPropsInternals);
TESTCASE_AUTO(formatUnitsAliases);
+ TESTCASE_AUTO(testIssue22378);
TESTCASE_AUTO_END;
}
@@ -1219,7 +1220,7 @@ void NumberFormatterApiTest::unitArbitraryMeasureUnits() {
.unit(MeasureUnit::forIdentifier("nanogram-per-picobarrel", status)),
Locale("en-ZA"),
2.4,
- u"2,4 ng/pbbl");
+ u"2.4 ng/pbbl");
assertFormatSingle(
u"Prefix in the denominator: nanogram-per-picobarrel unit-width-full-name",
@@ -1230,7 +1231,7 @@ void NumberFormatterApiTest::unitArbitraryMeasureUnits() {
.unitWidth(UNUM_UNIT_WIDTH_FULL_NAME),
Locale("en-ZA"),
2.4,
- u"2,4 nanograms per picobarrel");
+ u"2.4 nanograms per picobarrel");
// Valid MeasureUnit, but unformattable, because we only have patterns for
// pow2 and pow3 at this time:
@@ -1252,7 +1253,7 @@ void NumberFormatterApiTest::unitArbitraryMeasureUnits() {
.unitWidth(UNUM_UNIT_WIDTH_FULL_NAME),
Locale("en-ZA"),
2.4,
- u"2,4 kibijoule-feet per cubic gigafurlong-square second");
+ u"2.4 kibijoule-feet per cubic gigafurlong-square second");
assertFormatSingle(
u"kibijoule-foot-per-cubic-gigafurlong-square-second unit-width-full-name",
@@ -1279,7 +1280,7 @@ void NumberFormatterApiTest::unitArbitraryMeasureUnits() {
.unitWidth(UNUM_UNIT_WIDTH_FULL_NAME),
Locale("en-ZA"),
2.4,
- u"2,4 kilowatt-hours per 100 kilometres");
+ u"2.4 kilowatt-hours per 100 kilometres");
}
// TODO: merge these tests into numbertest_skeletons.cpp instead of here:
@@ -1471,11 +1472,11 @@ void NumberFormatterApiTest::unitUsage() {
u"unit/meter usage/road",
unloc_formatter,
Locale("en-ZA"),
- u"87\u00A0650 km",
- u"8\u00A0765 km",
+ u"87,650 km",
+ u"8,765 km",
u"876 km", // 6.5 rounds down, 7.5 rounds up.
u"88 km",
- u"8,8 km",
+ u"8.8 km",
u"900 m",
u"90 m",
u"9 m",
@@ -1662,14 +1663,14 @@ void NumberFormatterApiTest::unitUsage() {
.precision(Precision::minMaxSignificantDigits(1, 4))
.unitWidth(UNumberUnitWidth::UNUM_UNIT_WIDTH_FULL_NAME),
Locale("en-ZA"),
- u"8,765E1 square kilometres",
- u"8,765E0 square kilometres",
- u"8,765E1 hectares",
- u"8,765E0 hectares",
- u"8,765E3 square metres",
- u"8,765E2 square metres",
- u"8,765E1 square metres",
- u"8,765E0 square metres",
+ u"8.765E1 square kilometres",
+ u"8.765E0 square kilometres",
+ u"8.765E1 hectares",
+ u"8.765E0 hectares",
+ u"8.765E3 square metres",
+ u"8.765E2 square metres",
+ u"8.765E1 square metres",
+ u"8.765E0 square metres",
u"0E0 square centimetres");
assertFormatSingle(
@@ -2038,7 +2039,7 @@ void NumberFormatterApiTest::unitUsageSkeletons() {
.precision(Precision::maxSignificantDigits(4)),
Locale("en-ZA"),
321.45, // 0.45 rounds down, 0.55 rounds up.
- u"3,214E2 m");
+ u"3.214E2 m");
assertFormatSingle(
u"Scientific notation with Usage: possible when using a reasonable Precision",
@@ -2051,7 +2052,7 @@ void NumberFormatterApiTest::unitUsageSkeletons() {
.unitWidth(UNumberUnitWidth::UNUM_UNIT_WIDTH_FULL_NAME),
Locale("en-ZA"),
1e20,
- u"1,5E28 kilometres");
+ u"1.5E28 kilometres");
status.assertSuccess();
}
@@ -2310,7 +2311,7 @@ void NumberFormatterApiTest::runUnitInflectionsTestCases(UnlocalizedNumberFormat
continue;
};
UnicodeString skelString = UnicodeString("unit/") + t.unitIdentifier + u" " + skeleton;
- const UChar *skel;
+ const char16_t *skel;
if (t.unitDisplayCase == nullptr || t.unitDisplayCase[0] == 0) {
unf = unf.unit(mu).unitDisplayCase("");
skel = skelString.getTerminatedBuffer();
@@ -2337,7 +2338,7 @@ void NumberFormatterApiTest::runUnitInflectionsTestCases(UnlocalizedNumberFormat
};
UnicodeString skelString = UnicodeString("unit/") + t.unitIdentifier + u" " + skeleton;
- const UChar *skel;
+ const char16_t *skel;
auto displayOptionsBuilder = DisplayOptions::builder();
if (t.unitDisplayCase == nullptr || t.unitDisplayCase[0] == 0) {
auto displayoptions = displayOptionsBuilder.build();
@@ -2365,7 +2366,7 @@ void NumberFormatterApiTest::unitInflections() {
IcuTestErrorCode status(*this, "unitInflections");
UnlocalizedNumberFormatter unf;
- const UChar *skeleton;
+ const char16_t *skeleton;
{
// Simple inflected form test - test case based on the example in CLDR's
// grammaticalFeatures.xml
@@ -2995,7 +2996,7 @@ void NumberFormatterApiTest::unitLocaleTags() {
nullptr, "celsius", 0.0, "0 degrees Celsius"},
{"Test the locale with mu = fahrenheit and with usage", "en-US-u-mu-fahrenheit", "celsius", 0,
"default", "fahrenheit", 32.0, "32 degrees Fahrenheit"},
- {u"Test the locale with rg = UKOI and with usage", "en-US-u-rg-ukoizzzz", "fahrenheit", 0,
+ {u"Test the locale with rg = UKOI and with usage", "en-US-u-rg-ukoi", "fahrenheit", 0,
"default", "celsius", -18.0, u"-18 degrees Celsius"},
// Test the priorities
@@ -6003,7 +6004,7 @@ void NumberFormatterApiTest::microPropsInternals() {
MicroProps copyConstructed(mp);
MicroProps copyAssigned;
int64_t *resizeResult = mp.mixedMeasures.resize(4, 4);
- assertTrue("Resize success", resizeResult != NULL);
+ assertTrue("Resize success", resizeResult != nullptr);
copyAssigned = mp;
assertTrue("MicroProps success status", U_SUCCESS(mp.mixedMeasures.status));
@@ -6051,6 +6052,63 @@ void NumberFormatterApiTest::formatUnitsAliases() {
}
}
+void NumberFormatterApiTest::testIssue22378() {
+ IcuTestErrorCode status(*this, "testIssue22378");
+
+ // I checked the results before the fix and everything works the same except
+ // "fr-FR-u-mu-fahrenhe" and "fr_FR@mu=fahrenhe"
+ struct TestCase {
+ const std::string localeId;
+ const UnicodeString expectedFormat;
+ } testCases[]{
+ {"en-US", u"73\u00B0F"},
+ {"en-US-u-mu-fahrenhe", u"73\u00B0F"},
+ // Unlike ULocale, forLanguageTag fails wih U_ILLEGAL_ARGUMENT_ERROR
+ // because fahrenheit is not valid value for -u-mu-
+ // {"en-US-u-mu-fahrenheit", u"73\u00B0F"},
+ {"en-US-u-mu-celsius", u"23\u00B0C"},
+ {"en-US-u-mu-badvalue", u"73\u00B0F"},
+ {"en_US@mu=fahrenhe", u"73\u00B0F"},
+ {"en_US@mu=fahrenheit", u"73\u00B0F"},
+ {"en_US@mu=celsius", u"23\u00B0C"},
+ {"en_US@mu=badvalue", u"73\u00B0F"},
+
+ {"fr-FR", u"23\u202F\u00B0C"},
+ {"fr-FR-u-mu-fahrenhe", u"73\u202F\u00B0F"},
+ // Unlike ULocale, forLanguageTag fails wih U_ILLEGAL_ARGUMENT_ERROR
+ // because fahrenheit is not valid value for -u-mu-
+ // {"fr-FR-u-mu-fahrenheit", u"23\u202F\u00B0C"},
+ {"fr-FR-u-mu-celsius", u"23\u202F\u00B0C"},
+ {"fr-FR-u-mu-badvalue", u"23\u202F\u00B0C"},
+ {"fr_FR@mu=fahrenhe", u"73\u202F\u00B0F"},
+ {"fr_FR@mu=fahrenheit", u"73\u202F\u00B0F"},
+ {"fr_FR@mu=celsius", u"23\u202F\u00B0C"},
+ {"fr_FR@mu=badvalue", u"23\u202F\u00B0C"},
+ };
+
+ UnlocalizedNumberFormatter formatter = NumberFormatter::with()
+ .usage("weather")
+ .unit(MeasureUnit::getCelsius());
+ double value = 23.0;
+
+ for (const auto &testCase : testCases) {
+ std::string localeId = testCase.localeId;
+ const Locale locale = (localeId.find("@") != std::string::npos)
+ ? Locale(localeId.c_str())
+ : Locale::forLanguageTag(localeId, status);
+ UnicodeString actualFormat = formatter.locale(locale)
+ .formatDouble(value, status)
+ .toString(status);
+ assertEquals(u"-u-mu- honored (" + UnicodeString(localeId.c_str()) + u")",
+ testCase.expectedFormat, actualFormat);
+ }
+
+ UnicodeString result = formatter.locale("en-US").formatDouble(value, status).getOutputUnit(status).getIdentifier();
+ assertEquals("Testing default -u-mu- for en-US", MeasureUnit::getFahrenheit().getIdentifier(), result);
+ result = formatter.locale("fr-FR").formatDouble(value, status).getOutputUnit(status).getIdentifier();
+ assertEquals("Testing default -u-mu- for fr-FR", MeasureUnit::getCelsius().getIdentifier(), result);
+}
+
/* For skeleton comparisons: this checks the toSkeleton output for `f` and for
* `conciseSkeleton` against the normalized version of `uskeleton` - this does
* not round-trip uskeleton itself.
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/numbertest_permutation.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/numbertest_permutation.cpp
index 5ca838bd6a3..587e79c4242 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/numbertest_permutation.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/numbertest_permutation.cpp
@@ -73,9 +73,9 @@ static const double kNumbersToTest[]{0, 91827.3645, -0.22222};
* numberpermutationtest.txt
* To regenerate that file, run intltest with the -e and -G options.
* On Linux, from icu4c/source:
- * make -j8 tests && (cd test/intltest && LD_LIBRARY_PATH=../../lib:../../tools/ctestfw ./intltest -e -G format/NumberTest/NumberPermutationTest)
+ * make -j -l2.5 tests && (cd test/intltest && LD_LIBRARY_PATH=../../lib:../../tools/ctestfw ./intltest -e -G format/NumberTest/NumberPermutationTest)
* After re-generating the file, copy it into icu4j:
- * cp test/testdata/numberpermutationtest.txt ../../icu4j/main/tests/core/src/com/ibm/icu/dev/data/numberpermutationtest.txt
+ * cp test/testdata/numberpermutationtest.txt ../../icu4j/main/core/src/test/resources/com/ibm/icu/dev/data/numberpermutationtest.txt
*/
void NumberPermutationTest::testPermutations() {
IcuTestErrorCode status(*this, "testPermutations");
@@ -171,7 +171,7 @@ outerEnd:
int32_t lineNumber = 1;
int32_t lineLength;
for (const auto& actualLine : resultLines) {
- const UChar* lineBuf = ucbuf_readline(f.getAlias(), &lineLength, status);
+ const char16_t* lineBuf = ucbuf_readline(f.getAlias(), &lineLength, status);
if (lineBuf == nullptr) {
errln("More lines generated than are in the data file!");
break;
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/numbertest_simple.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/numbertest_simple.cpp
new file mode 100644
index 00000000000..dd5c26ccff4
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/numbertest_simple.cpp
@@ -0,0 +1,230 @@
+// © 2018 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_FORMATTING
+
+#include <cmath>
+
+#include "numbertest.h"
+#include "unicode/simplenumberformatter.h"
+
+
+void SimpleNumberFormatterTest::runIndexedTest(int32_t index, UBool exec, const char*& name, char*) {
+ if (exec) {
+ logln("TestSuite SimpleNumberFormatterTest: ");
+ }
+ TESTCASE_AUTO_BEGIN;
+ TESTCASE_AUTO(testBasic);
+ TESTCASE_AUTO(testWithOptions);
+ TESTCASE_AUTO(testSymbols);
+ TESTCASE_AUTO(testSign);
+ TESTCASE_AUTO(testCopyMove);
+ TESTCASE_AUTO(testCAPI);
+ TESTCASE_AUTO_END;
+}
+
+void SimpleNumberFormatterTest::testBasic() {
+ IcuTestErrorCode status(*this, "testBasic");
+
+ SimpleNumberFormatter snf = SimpleNumberFormatter::forLocale("de-CH", status);
+ FormattedNumber result = snf.formatInt64(-1000007, status);
+
+ static const UFieldPosition expectedFieldPositions[] = {
+ // field, begin index, end index
+ {UNUM_SIGN_FIELD, 0, 1},
+ {UNUM_GROUPING_SEPARATOR_FIELD, 2, 3},
+ {UNUM_GROUPING_SEPARATOR_FIELD, 6, 7},
+ {UNUM_INTEGER_FIELD, 1, 10},
+ };
+ checkFormattedValue(
+ u"testBasic",
+ result,
+ u"-1’000’007",
+ UFIELD_CATEGORY_NUMBER,
+ expectedFieldPositions,
+ UPRV_LENGTHOF(expectedFieldPositions));
+}
+
+void SimpleNumberFormatterTest::testWithOptions() {
+ IcuTestErrorCode status(*this, "testWithOptions");
+
+ SimpleNumber num = SimpleNumber::forInt64(1250000, status);
+ num.setMinimumIntegerDigits(6, status);
+ num.setMinimumFractionDigits(2, status);
+ num.multiplyByPowerOfTen(-2, status);
+ num.roundTo(3, UNUM_ROUND_HALFUP, status);
+ num.truncateStart(4, status);
+ SimpleNumberFormatter snf = SimpleNumberFormatter::forLocale("bn", status);
+ FormattedNumber result = snf.format(std::move(num), status);
+
+ static const UFieldPosition expectedFieldPositions[] = {
+ // field, begin index, end index
+ {UNUM_GROUPING_SEPARATOR_FIELD, 1, 2},
+ {UNUM_GROUPING_SEPARATOR_FIELD, 4, 5},
+ {UNUM_INTEGER_FIELD, 0, 8},
+ {UNUM_DECIMAL_SEPARATOR_FIELD, 8, 9},
+ {UNUM_FRACTION_FIELD, 9, 11},
+ };
+ checkFormattedValue(
+ u"testWithOptions",
+ result,
+ u"০,০৩,০০০.০০",
+ UFIELD_CATEGORY_NUMBER,
+ expectedFieldPositions,
+ UPRV_LENGTHOF(expectedFieldPositions));
+}
+
+void SimpleNumberFormatterTest::testSymbols() {
+ IcuTestErrorCode status(*this, "testSymbols");
+
+ LocalPointer<DecimalFormatSymbols> symbols(new DecimalFormatSymbols("bn", status), status);
+ SimpleNumberFormatter snf = SimpleNumberFormatter::forLocaleAndSymbolsAndGroupingStrategy(
+ "en-US",
+ *symbols,
+ UNUM_GROUPING_ON_ALIGNED,
+ status
+ );
+ auto result = snf.formatInt64(987654321, status);
+
+ assertEquals("bn symbols with en-US pattern",
+ u"৯৮৭,৬৫৪,৩২১",
+ result.toTempString(status));
+}
+
+void SimpleNumberFormatterTest::testSign() {
+ IcuTestErrorCode status(*this, "testSign");
+
+ SimpleNumberFormatter snf = SimpleNumberFormatter::forLocale("und", status);
+
+ struct TestCase {
+ int64_t input;
+ USimpleNumberSign sign;
+ const char16_t* expected;
+ } cases[] = {
+ { 1, UNUM_SIMPLE_NUMBER_NO_SIGN, u"1" },
+ { 1, UNUM_SIMPLE_NUMBER_PLUS_SIGN, u"+1" },
+ { 1, UNUM_SIMPLE_NUMBER_MINUS_SIGN, u"-1" },
+ { 0, UNUM_SIMPLE_NUMBER_NO_SIGN, u"0" },
+ { 0, UNUM_SIMPLE_NUMBER_PLUS_SIGN, u"+0" },
+ { 0, UNUM_SIMPLE_NUMBER_MINUS_SIGN, u"-0" },
+ { -1, UNUM_SIMPLE_NUMBER_NO_SIGN, u"1" },
+ { -1, UNUM_SIMPLE_NUMBER_PLUS_SIGN, u"+1" },
+ { -1, UNUM_SIMPLE_NUMBER_MINUS_SIGN, u"-1" },
+ };
+ for (auto& cas : cases) {
+ SimpleNumber num = SimpleNumber::forInt64(cas.input, status);
+ num.setSign(cas.sign, status);
+ auto result = snf.format(std::move(num), status);
+ assertEquals("", cas.expected, result.toTempString(status));
+ }
+}
+
+void SimpleNumberFormatterTest::testCopyMove() {
+ IcuTestErrorCode status(*this, "testCopyMove");
+
+ SimpleNumberFormatter snf0 = SimpleNumberFormatter::forLocale("und", status);
+
+ SimpleNumber sn0 = SimpleNumber::forInt64(55, status);
+ SimpleNumber sn1 = std::move(sn0);
+
+ snf0.format(std::move(sn0), status);
+ status.expectErrorAndReset(U_ILLEGAL_ARGUMENT_ERROR, "Use of moved number");
+
+ assertEquals("Move number constructor",
+ u"55",
+ snf0.format(std::move(sn1), status).toTempString(status));
+
+ SimpleNumber sn2;
+ snf0.format(std::move(sn2), status);
+ status.expectErrorAndReset(U_ILLEGAL_ARGUMENT_ERROR, "Default constructed number");
+
+ sn0 = SimpleNumber::forInt64(44, status);
+
+ assertEquals("Move number assignment",
+ u"44",
+ snf0.format(std::move(sn0), status).toTempString(status));
+
+ SimpleNumberFormatter snf1 = std::move(snf0);
+
+ snf0.format(SimpleNumber::forInt64(22, status), status);
+ status.expectErrorAndReset(U_INVALID_STATE_ERROR, "Use of moved formatter");
+
+ assertEquals("Move formatter constructor",
+ u"33",
+ snf1.format(SimpleNumber::forInt64(33, status), status).toTempString(status));
+
+ SimpleNumberFormatter snf2;
+ snf2.format(SimpleNumber::forInt64(22, status), status);
+ status.expectErrorAndReset(U_INVALID_STATE_ERROR, "Default constructed formatter");
+
+ snf0 = std::move(snf1);
+
+ assertEquals("Move formatter assignment",
+ u"22",
+ snf0.format(SimpleNumber::forInt64(22, status), status).toTempString(status));
+
+ snf0 = SimpleNumberFormatter::forLocale("de", status);
+ sn0 = SimpleNumber::forInt64(22, status);
+ sn0 = SimpleNumber::forInt64(11, status);
+
+ assertEquals("Move assignment with nonempty fields",
+ u"11",
+ snf0.format(std::move(sn0), status).toTempString(status));
+}
+
+void SimpleNumberFormatterTest::testCAPI() {
+ IcuTestErrorCode status(*this, "testCAPI");
+
+ LocalUSimpleNumberFormatterPointer uformatter(usnumf_openForLocale("de-CH", status));
+ LocalUFormattedNumberPointer uresult(unumf_openResult(status));
+ usnumf_formatInt64(uformatter.getAlias(), 55, uresult.getAlias(), status);
+ assertEquals("",
+ u"55",
+ ufmtval_getString(unumf_resultAsValue(uresult.getAlias(), status), nullptr, status));
+
+ LocalUSimpleNumberPointer unumber(usnum_openForInt64(44, status));
+ usnumf_format(uformatter.getAlias(), unumber.getAlias(), uresult.getAlias(), status);
+ assertEquals("",
+ u"44",
+ ufmtval_getString(unumf_resultAsValue(uresult.getAlias(), status), nullptr, status));
+
+ // Can't re-use a number without setting it again
+ usnumf_format(uformatter.getAlias(), unumber.getAlias(), uresult.getAlias(), status);
+ status.expectErrorAndReset(U_ILLEGAL_ARGUMENT_ERROR);
+ usnum_multiplyByPowerOfTen(unumber.getAlias(), 0, status);
+ status.expectErrorAndReset(U_INVALID_STATE_ERROR);
+
+ usnum_setToInt64(unumber.getAlias(), 2335, status);
+ usnum_multiplyByPowerOfTen(unumber.getAlias(), -2, status);
+ usnum_roundTo(unumber.getAlias(), -1, UNUM_ROUND_HALFEVEN, status);
+ usnum_truncateStart(unumber.getAlias(), 1, status);
+ usnum_setMinimumFractionDigits(unumber.getAlias(), 3, status);
+ usnum_setMinimumIntegerDigits(unumber.getAlias(), 3, status);
+ usnumf_format(uformatter.getAlias(), unumber.getAlias(), uresult.getAlias(), status);
+ assertEquals("",
+ u"003.400",
+ ufmtval_getString(unumf_resultAsValue(uresult.getAlias(), status), nullptr, status));
+
+ // Setting twice should overwrite the first value
+ usnum_setToInt64(unumber.getAlias(), 1111, status);
+ usnum_setToInt64(unumber.getAlias(), 2222, status);
+ usnumf_format(uformatter.getAlias(), unumber.getAlias(), uresult.getAlias(), status);
+ assertEquals("",
+ u"2’222",
+ ufmtval_getString(unumf_resultAsValue(uresult.getAlias(), status), nullptr, status));
+
+ {
+ // This is the exact example in usimplenumberformatter.h
+ LocalUSimpleNumberFormatterPointer uformatter(usnumf_openForLocale("de-CH", status));
+ LocalUFormattedNumberPointer uresult(unumf_openResult(status));
+ usnumf_formatInt64(uformatter.getAlias(), 55, uresult.getAlias(), status);
+ assertEquals("",
+ u"55",
+ ufmtval_getString(unumf_resultAsValue(uresult.getAlias(), status), nullptr, status));
+ }
+}
+
+
+#endif
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/numbertest_skeletons.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/numbertest_skeletons.cpp
index f09fb60c8c6..1d9259b3d50 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/numbertest_skeletons.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/numbertest_skeletons.cpp
@@ -32,6 +32,7 @@ void NumberSkeletonTest::runIndexedTest(int32_t index, UBool exec, const char*&
TESTCASE_AUTO(wildcardCharacters);
TESTCASE_AUTO(perUnitInArabic);
TESTCASE_AUTO(perUnitToSkeleton);
+ TESTCASE_AUTO(measurementSystemOverride);
TESTCASE_AUTO_END;
}
@@ -507,4 +508,53 @@ void NumberSkeletonTest::perUnitToSkeleton() {
}
}
+void NumberSkeletonTest::measurementSystemOverride() {
+ // NOTE TO REVIEWERS: When the appropriate changes are made on the CLDR side, do we want to keep this
+ // test or rely on additions the CLDR project makes to unitPreferencesTest.txt? --rtg 8/29/23
+ IcuTestErrorCode status(*this, "measurementSystemOverride");
+ struct TestCase {
+ const char* locale;
+ const char16_t* skeleton;
+ const char16_t* expectedResult;
+ } testCases[] = {
+ // Norway uses m/s for wind speed and should with or without the "ms-metric" subtag in the locale,
+ // but it uses km/h for other speeds. France uses km/h for all speeds. And in both places, if
+ // you say "ms-ussystem", you should get mph. In the US, we use mph for all speeds, but should
+ // use km/h if the locale has "ms-metric" in it.
+ { "nn_NO", u"unit/kilometer-per-hour usage/wind", u"0,34 m/s" },
+ { "nn_NO@measure=metric", u"unit/kilometer-per-hour usage/wind", u"0,34 m/s" },
+ { "nn_NO@measure=ussystem", u"unit/kilometer-per-hour usage/wind", u"0,76 mile/t" },
+ { "fr_FR", u"unit/kilometer-per-hour usage/wind", u"1,2\u202Fkm/h" },
+ { "fr_FR@measure=metric", u"unit/kilometer-per-hour usage/wind", u"1,2\u202Fkm/h" },
+ { "fr_FR@measure=ussystem", u"unit/kilometer-per-hour usage/wind", u"0,76\u202Fmi/h" },
+ { "en_US", u"unit/kilometer-per-hour usage/wind", u"0.76 mph" },
+ { "en_US@measure=metric", u"unit/kilometer-per-hour usage/wind", u"1.2 km/h" },
+ { "en_US@measure=ussystem", u"unit/kilometer-per-hour usage/wind", u"0.76 mph" },
+
+ { "nn_NO", u"unit/kilometer-per-hour usage/default", u"1,2 km/t" },
+ { "nn_NO@measure=metric", u"unit/kilometer-per-hour usage/default", u"1,2 km/t" },
+ { "nn_NO@measure=ussystem", u"unit/kilometer-per-hour usage/default", u"0,76 mile/t" },
+ { "fr_FR", u"unit/kilometer-per-hour usage/default", u"1,2\u202Fkm/h" },
+ { "fr_FR@measure=metric", u"unit/kilometer-per-hour usage/default", u"1,2\u202Fkm/h" },
+ { "fr_FR@measure=ussystem", u"unit/kilometer-per-hour usage/default", u"0,76\u202Fmi/h" },
+ { "en_US", u"unit/kilometer-per-hour usage/default", u"0.76 mph" },
+ { "en_US@measure=metric", u"unit/kilometer-per-hour usage/default", u"1.2 km/h" },
+ { "en_US@measure=ussystem", u"unit/kilometer-per-hour usage/default", u"0.76 mph" },
+ };
+
+ for (const auto& testCase : testCases) {
+ UErrorCode err = U_ZERO_ERROR;
+ LocalizedNumberFormatter nf = NumberFormatter::forSkeleton(testCase.skeleton, err).locale(testCase.locale);
+ UnicodeString actualResult = nf.formatDouble(1.23, err).toString(err);
+
+ UnicodeString errorMessage = ": ";
+ errorMessage += testCase.locale;
+ errorMessage += "/";
+ errorMessage += testCase.skeleton;
+ if (assertSuccess(u"Formatting error" + errorMessage, err)) {
+ assertEquals(u"Wrong result" + errorMessage, testCase.expectedResult, actualResult);
+ }
+ }
+}
+
#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/numfmtdatadriventest.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/numfmtdatadriventest.cpp
index e520c28cc33..a2c7f11cf99 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/numfmtdatadriventest.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/numfmtdatadriventest.cpp
@@ -83,7 +83,7 @@ static void adjustDecimalFormat(const NumberFormatTestTuple& tuple, DecimalForma
if (tuple.currencyFlag) {
UErrorCode status = U_ZERO_ERROR;
UnicodeString currency(tuple.currency);
- const UChar* terminatedCurrency = currency.getTerminatedBuffer();
+ const char16_t* terminatedCurrency = currency.getTerminatedBuffer();
fmt.setCurrency(terminatedCurrency, status);
if (U_FAILURE(status)) {
appendErrorMessage.append("Error setting currency.");
@@ -194,12 +194,12 @@ static void adjustDecimalFormat(const NumberFormatTestTuple& tuple, DecimalForma
static DecimalFormat*
newDecimalFormat(const Locale& locale, const UnicodeString& pattern, UErrorCode& status) {
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
LocalPointer<DecimalFormatSymbols> symbols(
new DecimalFormatSymbols(locale, status), status);
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
UParseError perror;
LocalPointer<DecimalFormat> result(
@@ -209,14 +209,14 @@ newDecimalFormat(const Locale& locale, const UnicodeString& pattern, UErrorCode&
symbols.orphan();
}
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
return result.orphan();
}
static DecimalFormat* newDecimalFormat(const NumberFormatTestTuple& tuple, UErrorCode& status) {
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
Locale en("en");
return newDecimalFormat(NFTT_GET_FIELD(tuple, locale, en),
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/numfmtspectest.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/numfmtspectest.cpp
index 12fd9c09af1..70d95289b3f 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/numfmtspectest.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/numfmtspectest.cpp
@@ -22,7 +22,7 @@
#include "unicode/dtfmtsym.h"
#include "uassert.h"
-static const UChar kJPY[] = {0x4A, 0x50, 0x59};
+static const char16_t kJPY[] = {0x4A, 0x50, 0x59};
static void fixNonBreakingSpace(UnicodeString &str) {
for (int32_t i = 0; i < str.length(); ++i) {
@@ -39,7 +39,7 @@ static NumberFormat *nfWithPattern(const char *pattern) {
DecimalFormat *result = new DecimalFormat(
upattern, new DecimalFormatSymbols("fr", status), status);
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
return result;
@@ -101,7 +101,7 @@ void NumberFormatSpecificationTest::TestBasicPatterns() {
void NumberFormatSpecificationTest::TestNfSetters() {
LocalPointer<NumberFormat> nf(nfWithPattern("#,##0.##"));
- if (nf == NULL) {
+ if (nf == nullptr) {
dataerrln("Error creating NumberFormat");
return;
}
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/numfmtst.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/numfmtst.cpp
index bdcce79c50c..4686b1a876b 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/numfmtst.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/numfmtst.cpp
@@ -68,13 +68,13 @@ using icu::number::impl::DecimalQuantity;
using namespace icu::number;
//#define NUMFMTST_CACHE_DEBUG 1
-#include "stdio.h" /* for sprintf */
+#include "stdio.h" /* for snprintf */
// #include "iostream" // for cout
//#define NUMFMTST_DEBUG 1
-static const UChar EUR[] = {69,85,82,0}; // "EUR"
-static const UChar ISO_CURRENCY_USD[] = {0x55, 0x53, 0x44, 0}; // "USD"
+static const char16_t EUR[] = {69,85,82,0}; // "EUR"
+static const char16_t ISO_CURRENCY_USD[] = {0x55, 0x53, 0x44, 0}; // "USD"
// *****************************************************************************
@@ -260,7 +260,7 @@ void NumberFormatTest::runIndexedTest( int32_t index, UBool exec, const char* &n
// Test API (increase code coverage)
void
-NumberFormatTest::TestAPI(void)
+NumberFormatTest::TestAPI()
{
logln("Test API");
UErrorCode status = U_ZERO_ERROR;
@@ -268,7 +268,7 @@ NumberFormatTest::TestAPI(void)
if(U_FAILURE(status)) {
dataerrln("unable to create format object - %s", u_errorName(status));
}
- if(test != NULL) {
+ if(test != nullptr) {
test->setMinimumIntegerDigits(10);
test->setMaximumIntegerDigits(1);
@@ -315,7 +315,7 @@ public:
return appendTo;
}
virtual UnicodeString& format(int32_t ,UnicodeString& appendTo,FieldPosition& ) const override {
- return appendTo.append((UChar)0x0033);
+ return appendTo.append((char16_t)0x0033);
}
virtual UnicodeString& format(int64_t number,UnicodeString& appendTo,FieldPosition& pos) const override {
return NumberFormat::format(number, appendTo, pos);
@@ -329,15 +329,15 @@ public:
virtual void parse( const UnicodeString& ,
Formattable& ,
UErrorCode& ) const override {}
- virtual UClassID getDynamicClassID(void) const override {
+ virtual UClassID getDynamicClassID() const override {
static char classID = 0;
return (UClassID)&classID;
}
- virtual StubNumberFormat* clone() const override {return NULL;}
+ virtual StubNumberFormat* clone() const override {return nullptr;}
};
void
-NumberFormatTest::TestCoverage(void){
+NumberFormatTest::TestCoverage(){
StubNumberFormat stub;
UnicodeString agent("agent");
FieldPosition pos;
@@ -401,7 +401,7 @@ void NumberFormatTest::TestLocalizedPatternSymbolCoverage() {
// Test various patterns
void
-NumberFormatTest::TestPatterns(void)
+NumberFormatTest::TestPatterns()
{
UErrorCode status = U_ZERO_ERROR;
DecimalFormatSymbols sym(Locale::getUS(), status);
@@ -421,7 +421,7 @@ NumberFormatTest::TestPatterns(void)
errln((UnicodeString)"FAIL: Pattern " + pat[i] + " should transmute to " + newpat[i] +
"; " + newp + " seen instead");
- UnicodeString s; (*(NumberFormat*)&fmt).format((int32_t)0, s);
+ UnicodeString s; (*dynamic_cast<NumberFormat*>(&fmt)).format((int32_t)0, s);
if (!(s == num[i]))
{
errln((UnicodeString)"FAIL: Pattern " + pat[i] + " should format zero as " + num[i] +
@@ -457,7 +457,7 @@ icu_2_4::DigitList::operator!= 0 0 1 icuuc24d.dll digitlst.h Doug
*/
/*
void
-NumberFormatTest::TestDigitList(void)
+NumberFormatTest::TestDigitList()
{
// API coverage for DigitList
DigitList list1;
@@ -478,7 +478,7 @@ NumberFormatTest::TestDigitList(void)
// Test exponential pattern
void
-NumberFormatTest::TestExponential(void)
+NumberFormatTest::TestExponential()
{
UErrorCode status = U_ZERO_ERROR;
DecimalFormatSymbols sym(Locale::getUS(), status);
@@ -576,7 +576,7 @@ NumberFormatTest::TestExponential(void)
int32_t v;
for (v=0; v<val_length; ++v)
{
- UnicodeString s; (*(NumberFormat*)&fmt).format(val[v], s);
+ UnicodeString s; (*dynamic_cast<NumberFormat*>(&fmt)).format(val[v], s);
logln((UnicodeString)" " + val[v] + " -format-> " + s);
if (s != valFormat[v+ival])
errln((UnicodeString)"FAIL: Expected " + valFormat[v+ival]);
@@ -625,7 +625,7 @@ NumberFormatTest::TestExponential(void)
for (v=0; v<lval_length; ++v)
{
UnicodeString s;
- (*(NumberFormat*)&fmt).format(lval[v], s);
+ (*dynamic_cast<NumberFormat*>(&fmt)).format(lval[v], s);
logln((UnicodeString)" " + lval[v] + "L -format-> " + s);
if (s != lvalFormat[v+ilval])
errln((UnicodeString)"ERROR: Expected " + lvalFormat[v+ilval] + " Got: " + s);
@@ -660,7 +660,7 @@ void
NumberFormatTest::TestScientific2() {
// jb 2552
UErrorCode status = U_ZERO_ERROR;
- DecimalFormat* fmt = (DecimalFormat*)NumberFormat::createCurrencyInstance("en_US", status);
+ DecimalFormat* fmt = dynamic_cast<DecimalFormat*>(NumberFormat::createCurrencyInstance("en_US", status));
if (U_SUCCESS(status)) {
double num = 12.34;
expect(*fmt, num, "$12.34");
@@ -796,7 +796,7 @@ NumberFormatTest::TestInt64() {
// Test the handling of quotes
void
-NumberFormatTest::TestQuotes(void)
+NumberFormatTest::TestQuotes()
{
UErrorCode status = U_ZERO_ERROR;
UnicodeString *pat;
@@ -809,7 +809,7 @@ NumberFormatTest::TestQuotes(void)
pat = new UnicodeString("a'fo''o'b#");
DecimalFormat *fmt = new DecimalFormat(*pat, *sym, status);
UnicodeString s;
- ((NumberFormat*)fmt)->format((int32_t)123, s);
+ (dynamic_cast<NumberFormat*>(fmt))->format((int32_t)123, s);
logln((UnicodeString)"Pattern \"" + *pat + "\"");
logln((UnicodeString)" Format 123 -> " + escape(s));
if (!(s=="afo'ob123"))
@@ -821,7 +821,7 @@ NumberFormatTest::TestQuotes(void)
pat = new UnicodeString("a''b#");
fmt = new DecimalFormat(*pat, *sym, status);
- ((NumberFormat*)fmt)->format((int32_t)123, s);
+ (dynamic_cast<NumberFormat*>(fmt))->format((int32_t)123, s);
logln((UnicodeString)"Pattern \"" + *pat + "\"");
logln((UnicodeString)" Format 123 -> " + escape(s));
if (!(s=="a'b123"))
@@ -835,12 +835,12 @@ NumberFormatTest::TestQuotes(void)
* Test the handling of the currency symbol in patterns.
*/
void
-NumberFormatTest::TestCurrencySign(void)
+NumberFormatTest::TestCurrencySign()
{
UErrorCode status = U_ZERO_ERROR;
DecimalFormatSymbols* sym = new DecimalFormatSymbols(Locale::getUS(), status);
UnicodeString pat;
- UChar currency = 0x00A4;
+ char16_t currency = 0x00A4;
if (U_FAILURE(status)) {
errcheckln(status, "Fail to create DecimalFormatSymbols - %s", u_errorName(status));
delete sym;
@@ -850,13 +850,13 @@ NumberFormatTest::TestCurrencySign(void)
pat.append(currency).append("#,##0.00;-").
append(currency).append("#,##0.00");
DecimalFormat *fmt = new DecimalFormat(pat, *sym, status);
- UnicodeString s; ((NumberFormat*)fmt)->format(1234.56, s);
+ UnicodeString s; (dynamic_cast<NumberFormat*>(fmt))->format(1234.56, s);
pat.truncate(0);
logln((UnicodeString)"Pattern \"" + fmt->toPattern(pat) + "\"");
logln((UnicodeString)" Format " + 1234.56 + " -> " + escape(s));
if (s != "$1,234.56") dataerrln((UnicodeString)"FAIL: Expected $1,234.56");
s.truncate(0);
- ((NumberFormat*)fmt)->format(- 1234.56, s);
+ (dynamic_cast<NumberFormat*>(fmt))->format(- 1234.56, s);
logln((UnicodeString)" Format " + (-1234.56) + " -> " + escape(s));
if (s != "-$1,234.56") dataerrln((UnicodeString)"FAIL: Expected -$1,234.56");
delete fmt;
@@ -868,12 +868,12 @@ NumberFormatTest::TestCurrencySign(void)
append(" -#,##0.00");
fmt = new DecimalFormat(pat, *sym, status);
s.truncate(0);
- ((NumberFormat*)fmt)->format(1234.56, s);
+ (dynamic_cast<NumberFormat*>(fmt))->format(1234.56, s);
logln((UnicodeString)"Pattern \"" + fmt->toPattern(pat) + "\"");
logln((UnicodeString)" Format " + 1234.56 + " -> " + escape(s));
if (s != "USD 1,234.56") dataerrln((UnicodeString)"FAIL: Expected USD 1,234.56");
s.truncate(0);
- ((NumberFormat*)fmt)->format(-1234.56, s);
+ (dynamic_cast<NumberFormat*>(fmt))->format(-1234.56, s);
logln((UnicodeString)" Format " + (-1234.56) + " -> " + escape(s));
if (s != "USD -1,234.56") dataerrln((UnicodeString)"FAIL: Expected USD -1,234.56");
delete fmt;
@@ -883,7 +883,7 @@ NumberFormatTest::TestCurrencySign(void)
// -------------------------------------
-static UChar toHexString(int32_t i) { return (UChar)(i + (i < 10 ? 0x30 : (0x41 - 10))); }
+static char16_t toHexString(int32_t i) { return (char16_t)(i + (i < 10 ? 0x30 : (0x41 - 10))); }
UnicodeString&
NumberFormatTest::escape(UnicodeString& s)
@@ -891,10 +891,10 @@ NumberFormatTest::escape(UnicodeString& s)
UnicodeString buf;
for (int32_t i=0; i<s.length(); ++i)
{
- UChar c = s[(int32_t)i];
- if (c <= (UChar)0x7F) buf += c;
+ char16_t c = s[(int32_t)i];
+ if (c <= (char16_t)0x7F) buf += c;
else {
- buf += (UChar)0x5c; buf += (UChar)0x55;
+ buf += (char16_t)0x5c; buf += (char16_t)0x55;
buf += toHexString((c & 0xF000) >> 12);
buf += toHexString((c & 0x0F00) >> 8);
buf += toHexString((c & 0x00F0) >> 4);
@@ -925,7 +925,7 @@ static const char* testCases[][2]= {
* Test localized currency patterns.
*/
void
-NumberFormatTest::TestCurrency(void)
+NumberFormatTest::TestCurrency()
{
UErrorCode status = U_ZERO_ERROR;
NumberFormat* currencyFmt = NumberFormat::createCurrencyInstance(Locale::getCanadaFrench(), status);
@@ -1050,7 +1050,7 @@ void NumberFormatTest::TestCurrencyObject() {
* Do rudimentary testing of parsing.
*/
void
-NumberFormatTest::TestParse(void)
+NumberFormatTest::TestParse()
{
UErrorCode status = U_ZERO_ERROR;
UnicodeString arg("0");
@@ -1138,13 +1138,13 @@ static const char *strictFailureTestCases[] = {
* Test lenient parsing.
*/
void
-NumberFormatTest::TestLenientParse(void)
+NumberFormatTest::TestLenientParse()
{
UErrorCode status = U_ZERO_ERROR;
DecimalFormat *format = new DecimalFormat("(#,##0)", status);
Formattable n;
- if (format == NULL || U_FAILURE(status)) {
+ if (format == nullptr || U_FAILURE(status)) {
dataerrln("Unable to create DecimalFormat (#,##0) - %s", u_errorName(status));
} else {
format->setLenient(true);
@@ -1169,7 +1169,7 @@ NumberFormatTest::TestLenientParse(void)
NumberFormat *mFormat = NumberFormat::createInstance(sv_SE, UNUM_DECIMAL, status);
- if (mFormat == NULL || U_FAILURE(status)) {
+ if (mFormat == nullptr || U_FAILURE(status)) {
dataerrln("Unable to create NumberFormat (sv_SE, UNUM_DECIMAL) - %s", u_errorName(status));
} else {
mFormat->setLenient(true);
@@ -1190,7 +1190,7 @@ NumberFormatTest::TestLenientParse(void)
mFormat = NumberFormat::createInstance(en_US, UNUM_DECIMAL, status);
- if (mFormat == NULL || U_FAILURE(status)) {
+ if (mFormat == nullptr || U_FAILURE(status)) {
dataerrln("Unable to create NumberFormat (en_US, UNUM_DECIMAL) - %s", u_errorName(status));
} else {
mFormat->setLenient(true);
@@ -1211,7 +1211,7 @@ NumberFormatTest::TestLenientParse(void)
NumberFormat *cFormat = NumberFormat::createInstance(en_US, UNUM_CURRENCY, status);
- if (cFormat == NULL || U_FAILURE(status)) {
+ if (cFormat == nullptr || U_FAILURE(status)) {
dataerrln("Unable to create NumberFormat (en_US, UNUM_CURRENCY) - %s", u_errorName(status));
} else {
cFormat->setLenient(true);
@@ -1248,7 +1248,7 @@ NumberFormatTest::TestLenientParse(void)
NumberFormat *pFormat = NumberFormat::createPercentInstance(en_US, status);
- if (pFormat == NULL || U_FAILURE(status)) {
+ if (pFormat == nullptr || U_FAILURE(status)) {
dataerrln("Unable to create NumberFormat::createPercentInstance (en_US) - %s", u_errorName(status));
} else {
pFormat->setLenient(true);
@@ -1289,7 +1289,7 @@ NumberFormatTest::TestLenientParse(void)
// lenient parse.
NumberFormat *nFormat = NumberFormat::createInstance(en_US, status);
- if (nFormat == NULL || U_FAILURE(status)) {
+ if (nFormat == nullptr || U_FAILURE(status)) {
dataerrln("Unable to create NumberFormat (en_US) - %s", u_errorName(status));
} else {
// first, make sure that they fail with a strict parse
@@ -1333,7 +1333,7 @@ NumberFormatTest::TestLenientParse(void)
* Test proper rounding by the format method.
*/
void
-NumberFormatTest::TestRounding487(void)
+NumberFormatTest::TestRounding487()
{
UErrorCode status = U_ZERO_ERROR;
NumberFormat *nf = NumberFormat::createInstance(status);
@@ -1356,7 +1356,7 @@ NumberFormatTest::TestRounding487(void)
/**
* Test the functioning of the secondary grouping value.
*/
-void NumberFormatTest::TestSecondaryGrouping(void) {
+void NumberFormatTest::TestSecondaryGrouping() {
UErrorCode status = U_ZERO_ERROR;
DecimalFormatSymbols US(Locale::getUS(), status);
CHECK(status, "DecimalFormatSymbols ct");
@@ -1415,7 +1415,7 @@ void NumberFormatTest::TestSecondaryGrouping(void) {
}
}
-void NumberFormatTest::TestWhiteSpaceParsing(void) {
+void NumberFormatTest::TestWhiteSpaceParsing() {
UErrorCode ec = U_ZERO_ERROR;
DecimalFormatSymbols US(Locale::getUS(), ec);
DecimalFormat fmt("a b#0c ", US, ec);
@@ -1467,7 +1467,7 @@ NumberFormatTest::roundingTest(NumberFormat& nf, double x, int32_t maxFractionDi
/**
* Upgrade to alphaWorks
*/
-void NumberFormatTest::TestExponent(void) {
+void NumberFormatTest::TestExponent() {
UErrorCode status = U_ZERO_ERROR;
DecimalFormatSymbols US(Locale::getUS(), status);
CHECK(status, "DecimalFormatSymbols constructor");
@@ -1484,7 +1484,7 @@ void NumberFormatTest::TestExponent(void) {
/**
* Upgrade to alphaWorks
*/
-void NumberFormatTest::TestScientific(void) {
+void NumberFormatTest::TestScientific() {
UErrorCode status = U_ZERO_ERROR;
DecimalFormatSymbols US(Locale::getUS(), status);
CHECK(status, "DecimalFormatSymbols constructor");
@@ -1664,7 +1664,7 @@ void NumberFormatTest::TestScientific(void) {
/**
* Upgrade to alphaWorks
*/
-void NumberFormatTest::TestPad(void) {
+void NumberFormatTest::TestPad() {
UErrorCode status = U_ZERO_ERROR;
DecimalFormatSymbols US(Locale::getUS(), status);
CHECK(status, "DecimalFormatSymbols constructor");
@@ -1767,10 +1767,10 @@ void NumberFormatTest::TestPad(void) {
/* fmt.setPadCharacter((UnicodeString)"^^^");
expectPad(fmt, "*^^^#", DecimalFormat::kPadBeforePrefix, 3, (UnicodeString)"^^^");
padString.remove();
- padString.append((UChar)0x0061);
- padString.append((UChar)0x0302);
+ padString.append((char16_t)0x0061);
+ padString.append((char16_t)0x0302);
fmt.setPadCharacter(padString);
- UChar patternChars[]={0x002a, 0x0061, 0x0302, 0x0061, 0x0302, 0x0023, 0x0000};
+ char16_t patternChars[]={0x002a, 0x0061, 0x0302, 0x0061, 0x0302, 0x0023, 0x0000};
UnicodeString pattern(patternChars);
expectPad(fmt, pattern , DecimalFormat::kPadBeforePrefix, 4, padString);
*/
@@ -1780,7 +1780,7 @@ void NumberFormatTest::TestPad(void) {
/**
* Upgrade to alphaWorks
*/
-void NumberFormatTest::TestPatterns2(void) {
+void NumberFormatTest::TestPatterns2() {
UErrorCode status = U_ZERO_ERROR;
DecimalFormatSymbols US(Locale::getUS(), status);
CHECK(status, "DecimalFormatSymbols constructor");
@@ -1788,7 +1788,7 @@ void NumberFormatTest::TestPatterns2(void) {
DecimalFormat fmt("#", US, status);
CHECK(status, "DecimalFormat constructor");
- UChar hat = 0x005E; /*^*/
+ char16_t hat = 0x005E; /*^*/
expectPad(fmt, "*^#", DecimalFormat::kPadBeforePrefix, 1, hat);
expectPad(fmt, "$*^#", DecimalFormat::kPadAfterPrefix, 2, hat);
@@ -1797,11 +1797,11 @@ void NumberFormatTest::TestPatterns2(void) {
expectPad(fmt, "$*^$#", ILLEGAL);
expectPad(fmt, "#$*^$", ILLEGAL);
expectPad(fmt, "'pre'#,##0*x'post'", DecimalFormat::kPadBeforeSuffix,
- 12, (UChar)0x0078 /*x*/);
+ 12, (char16_t)0x0078 /*x*/);
expectPad(fmt, "''#0*x", DecimalFormat::kPadBeforeSuffix,
- 3, (UChar)0x0078 /*x*/);
+ 3, (char16_t)0x0078 /*x*/);
expectPad(fmt, "'I''ll'*a###.##", DecimalFormat::kPadAfterPrefix,
- 10, (UChar)0x0061 /*a*/);
+ 10, (char16_t)0x0061 /*a*/);
fmt.applyPattern("AA#,##0.00ZZ", status);
CHECK(status, "applyPattern");
@@ -1841,7 +1841,7 @@ void NumberFormatTest::TestPatterns2(void) {
expectPat(fmt, "AA*^#####,##0.00ZZ");
}
-void NumberFormatTest::TestSurrogateSupport(void) {
+void NumberFormatTest::TestSurrogateSupport() {
UErrorCode status = U_ZERO_ERROR;
DecimalFormatSymbols custom(Locale::getUS(), status);
CHECK(status, "DecimalFormatSymbols constructor");
@@ -1891,7 +1891,7 @@ void NumberFormatTest::TestSurrogateSupport(void) {
expect2(new DecimalFormat("##0.000", custom, status),
1.25, expStr, status);
- custom.setSymbol(DecimalFormatSymbols::kZeroDigitSymbol, (UChar)0x30);
+ custom.setSymbol(DecimalFormatSymbols::kZeroDigitSymbol, (char16_t)0x30);
custom.setSymbol(DecimalFormatSymbols::kCurrencySymbol, "units of money");
custom.setSymbol(DecimalFormatSymbols::kMonetarySeparatorSymbol, "money separator");
patternStr = UNICODE_STRING_SIMPLE("0.00 \\u00A4' in your bank account'");
@@ -1910,7 +1910,7 @@ void NumberFormatTest::TestSurrogateSupport(void) {
int32_t(-20), expStr, status);
}
-void NumberFormatTest::TestCurrencyPatterns(void) {
+void NumberFormatTest::TestCurrencyPatterns() {
int32_t i, locCount;
const Locale* locs = NumberFormat::getAvailableLocales(locCount);
for (i=0; i<locCount; ++i) {
@@ -1935,7 +1935,7 @@ void NumberFormatTest::TestCurrencyPatterns(void) {
// Make sure EURO currency formats have exactly 2 fraction digits
DecimalFormat* df = dynamic_cast<DecimalFormat*>(nf);
- if (df != NULL) {
+ if (df != nullptr) {
if (u_strcmp(EUR, df->getCurrency()) == 0) {
if (min != 2 || max != 2) {
UnicodeString a;
@@ -1952,14 +1952,14 @@ void NumberFormatTest::TestCurrencyPatterns(void) {
}
}
-void NumberFormatTest::TestRegCurrency(void) {
+void NumberFormatTest::TestRegCurrency() {
#if !UCONFIG_NO_SERVICE
UErrorCode status = U_ZERO_ERROR;
- UChar USD[4];
+ char16_t USD[4];
ucurr_forLocale("en_US", USD, 4, &status);
- UChar YEN[4];
+ char16_t YEN[4];
ucurr_forLocale("ja_JP", YEN, 4, &status);
- UChar TMP[4];
+ char16_t TMP[4];
if(U_FAILURE(status)) {
errcheckln(status, "Unable to get currency for locale, error %s", u_errorName(status));
@@ -1997,14 +1997,14 @@ void NumberFormatTest::TestRegCurrency(void) {
#endif
}
-void NumberFormatTest::TestCurrencyNames(void) {
+void NumberFormatTest::TestCurrencyNames() {
// Do a basic check of getName()
// USD { "US$", "US Dollar" } // 04/04/1792-
UErrorCode ec = U_ZERO_ERROR;
- static const UChar USD[] = {0x55, 0x53, 0x44, 0}; /*USD*/
- static const UChar USX[] = {0x55, 0x53, 0x58, 0}; /*USX*/
- static const UChar CAD[] = {0x43, 0x41, 0x44, 0}; /*CAD*/
- static const UChar ITL[] = {0x49, 0x54, 0x4C, 0}; /*ITL*/
+ static const char16_t USD[] = {0x55, 0x53, 0x44, 0}; /*USD*/
+ static const char16_t USX[] = {0x55, 0x53, 0x58, 0}; /*USX*/
+ static const char16_t CAD[] = {0x43, 0x41, 0x44, 0}; /*CAD*/
+ static const char16_t ITL[] = {0x49, 0x54, 0x4C, 0}; /*ITL*/
UBool isChoiceFormat;
int32_t len;
const UBool possibleDataError = true;
@@ -2138,30 +2138,30 @@ void NumberFormatTest::TestCurrencyVariants(){
{"en-US", u"CDF", u"CDF", u"CDF", u"CDF", u"CDF", U_USING_FALLBACK_WARNING}, // narrow: fallback to short
{"sw-CD", u"CDF", u"FC", u"FC", u"FC", u"FC", U_USING_FALLBACK_WARNING}, // narrow: fallback to short
{"en-US", u"GEL", u"GEL", u"₾", u"GEL", u"GEL", U_USING_DEFAULT_WARNING}, // narrow: fallback to root
- {"ka-GE", u"GEL", u"₾", u"₾", u"₾", u"₾", U_USING_FALLBACK_WARNING}, // narrow: fallback to ka
- {"ka", u"GEL", u"₾", u"₾", u"₾", u"₾", U_ZERO_ERROR}, // no fallback on narrow
- {"zh-TW", u"TWD", u"$", u"$", u"NT$", u"$", U_USING_FALLBACK_WARNING}, // narrow: fallback to short
- {"ccp", u"TRY", u"TRY", u"₺", u"TRY", u"TL", U_ZERO_ERROR}, // no fallback on variant
+ {"ka-GE", u"GEL", u"₾", u"₾", u"₾", u"₾", U_USING_DEFAULT_WARNING}, // narrow: fallback to ka
+ {"ka", u"GEL", u"₾", u"₾", u"₾", u"₾", U_USING_DEFAULT_WARNING}, // narrow fallback to short
+ {"zh-TW", u"TWD", u"$", u"$", u"NT$", u"$", U_USING_DEFAULT_WARNING}, // narrow: fallback to short
+ {"ccp", u"TRY", u"TRY", u"₺", u"TRY", u"TL", U_USING_DEFAULT_WARNING}, // everything fallback to root
};
for (const auto& cas : cases) {
status.setScope(cas.isoCode);
UBool choiceFormatIgnored;
int32_t lengthIgnored;
- const UChar* actualShort = ucurr_getName(
+ const char16_t* actualShort = ucurr_getName(
cas.isoCode,
cas.locale,
UCURR_SYMBOL_NAME,
&choiceFormatIgnored,
&lengthIgnored,
status);
- const UChar* actualFormal = ucurr_getName(
+ const char16_t* actualFormal = ucurr_getName(
cas.isoCode,
cas.locale,
UCURR_FORMAL_SYMBOL_NAME,
&choiceFormatIgnored,
&lengthIgnored,
status);
- const UChar* actualVarant = ucurr_getName(
+ const char16_t* actualVarant = ucurr_getName(
cas.isoCode,
cas.locale,
UCURR_VARIANT_SYMBOL_NAME,
@@ -2169,7 +2169,7 @@ void NumberFormatTest::TestCurrencyVariants(){
&lengthIgnored,
status);
status.errIfFailureAndReset();
- const UChar* actualNarrow = ucurr_getName(
+ const char16_t* actualNarrow = ucurr_getName(
cas.isoCode,
cas.locale,
UCURR_NARROW_SYMBOL_NAME,
@@ -2188,26 +2188,26 @@ void NumberFormatTest::TestCurrencyVariants(){
}
}
-void NumberFormatTest::TestCurrencyUnit(void){
+void NumberFormatTest::TestCurrencyUnit(){
UErrorCode ec = U_ZERO_ERROR;
- static const UChar USD[] = u"USD";
+ static const char16_t USD[] = u"USD";
static const char USD8[] = "USD";
- static const UChar BAD[] = u"???";
- static const UChar BAD2[] = u"??A";
- static const UChar XXX[] = u"XXX";
+ static const char16_t BAD[] = u"???";
+ static const char16_t BAD2[] = u"??A";
+ static const char16_t XXX[] = u"XXX";
static const char XXX8[] = "XXX";
- static const UChar XYZ[] = u"XYZ";
+ static const char16_t XYZ[] = u"XYZ";
static const char XYZ8[] = "XYZ";
- static const UChar INV[] = u"{$%";
+ static const char16_t INV[] = u"{$%";
static const char INV8[] = "{$%";
- static const UChar ZZZ[] = u"zz";
+ static const char16_t ZZZ[] = u"zz";
static const char ZZZ8[] = "zz";
- static const UChar JPY[] = u"JPY";
+ static const char16_t JPY[] = u"JPY";
static const char JPY8[] = "JPY";
- static const UChar jpy[] = u"jpy";
+ static const char16_t jpy[] = u"jpy";
static const char jpy8[] = "jpy";
- UChar* EUR = (UChar*) malloc(6);
+ char16_t* EUR = (char16_t*) malloc(6);
EUR[0] = u'E';
EUR[1] = u'U';
EUR[2] = u'R';
@@ -2348,9 +2348,9 @@ void NumberFormatTest::TestCurrencyUnit(void){
free(EUR8);
}
-void NumberFormatTest::TestCurrencyAmount(void){
+void NumberFormatTest::TestCurrencyAmount(){
UErrorCode ec = U_ZERO_ERROR;
- static const UChar USD[] = {85, 83, 68, 0}; /*USD*/
+ static const char16_t USD[] = {85, 83, 68, 0}; /*USD*/
CurrencyAmount ca(9, USD, ec);
assertSuccess("CurrencyAmount", ec);
@@ -2371,7 +2371,7 @@ void NumberFormatTest::TestCurrencyAmount(void){
delete ca3;
}
-void NumberFormatTest::TestSymbolsWithBadLocale(void) {
+void NumberFormatTest::TestSymbolsWithBadLocale() {
Locale locDefault;
static const char *badLocales[] = {
// length < ULOC_FULLNAME_CAPACITY
@@ -2387,9 +2387,9 @@ void NumberFormatTest::TestSymbolsWithBadLocale(void) {
Locale locBad(localeName);
assertTrue(WHERE, !locBad.isBogus());
UErrorCode status = U_ZERO_ERROR;
- UnicodeString intlCurrencySymbol((UChar)0xa4);
+ UnicodeString intlCurrencySymbol((char16_t)0xa4);
- intlCurrencySymbol.append((UChar)0xa4);
+ intlCurrencySymbol.append((char16_t)0xa4);
logln("Current locale is %s", Locale::getDefault().getName());
Locale::setDefault(locBad, status);
@@ -2424,7 +2424,7 @@ void NumberFormatTest::TestSymbolsWithBadLocale(void) {
* behave the same, except for memory ownership semantics. (No
* version of this test on Java, since Java has only one method.)
*/
-void NumberFormatTest::TestAdoptDecimalFormatSymbols(void) {
+void NumberFormatTest::TestAdoptDecimalFormatSymbols() {
UErrorCode ec = U_ZERO_ERROR;
DecimalFormatSymbols *sym = new DecimalFormatSymbols(Locale::getUS(), ec);
if (U_FAILURE(ec)) {
@@ -2433,7 +2433,7 @@ void NumberFormatTest::TestAdoptDecimalFormatSymbols(void) {
return;
}
UnicodeString pat(" #,##0.00");
- pat.insert(0, (UChar)0x00A4);
+ pat.insert(0, (char16_t)0x00A4);
DecimalFormat fmt(pat, sym, ec);
if (U_FAILURE(ec)) {
errln("Fail: DecimalFormat constructor");
@@ -2584,7 +2584,7 @@ static int32_t keywordIndex(const UnicodeString& tok) {
*/
static void parseCurrencyAmount(const UnicodeString& str,
const NumberFormat& fmt,
- UChar delim,
+ char16_t delim,
Formattable& result,
UErrorCode& ec) {
UnicodeString num, cur;
@@ -2710,7 +2710,7 @@ void NumberFormatTest::TestCases() {
if (!tokens.next(tok, ec)) goto error;
continue;
}
- } else if (mfmt == NULL) {
+ } else if (mfmt == nullptr) {
errln("FAIL: " + where + "Loc \"" + mloc + "\": skip case using previous locale, no valid MeasureFormat");
if (!tokens.next(tok, ec)) goto error;
if (!tokens.next(tok, ec)) goto error;
@@ -2720,14 +2720,14 @@ void NumberFormatTest::TestCases() {
// fpc: <loc or '-'> <curr.amt> <exp. string> <exp. curr.amt>
if (!tokens.next(currAmt, ec)) goto error;
if (!tokens.next(str, ec)) goto error;
- parseCurrencyAmount(currAmt, *ref, (UChar)0x2F/*'/'*/, n, ec);
+ parseCurrencyAmount(currAmt, *ref, (char16_t)0x2F/*'/'*/, n, ec);
if (assertSuccess("parseCurrencyAmount", ec)) {
assertEquals(where + "getCurrencyFormat(" + mloc + ").format(" + currAmt + ")",
str, mfmt->format(n, out.remove(), ec));
assertSuccess("format", ec);
}
if (!tokens.next(currAmt, ec)) goto error;
- parseCurrencyAmount(currAmt, *ref, (UChar)0x2F/*'/'*/, n, ec);
+ parseCurrencyAmount(currAmt, *ref, (char16_t)0x2F/*'/'*/, n, ec);
if (assertSuccess("parseCurrencyAmount", ec)) {
Formattable m;
@@ -2855,7 +2855,7 @@ void NumberFormatTest::expect2(NumberFormat& fmt, const Formattable& n, const Un
void NumberFormatTest::expect2(NumberFormat* fmt, const Formattable& n,
const UnicodeString& exp,
UErrorCode status) {
- if (fmt == NULL || U_FAILURE(status)) {
+ if (fmt == nullptr || U_FAILURE(status)) {
dataerrln("FAIL: NumberFormat constructor");
} else {
expect2(*fmt, n, exp);
@@ -2872,7 +2872,7 @@ void NumberFormatTest::expect(NumberFormat& fmt, const UnicodeString& str, const
return;
}
UnicodeString pat;
- ((DecimalFormat*) &fmt)->toPattern(pat);
+ (dynamic_cast<DecimalFormat*>(&fmt))->toPattern(pat);
if (equalValue(num, n)) {
logln(UnicodeString("Ok \"") + str + "\" x " +
pat + " = " +
@@ -2945,7 +2945,7 @@ void NumberFormatTest::expect(NumberFormat& fmt, const Formattable& n,
fmt.format(n, saw, pos, status);
CHECK(status, "NumberFormat::format");
UnicodeString pat;
- ((DecimalFormat*) &fmt)->toPattern(pat);
+ (dynamic_cast<DecimalFormat*>(&fmt))->toPattern(pat);
if (saw == exp) {
logln(UnicodeString("Ok ") + toString(n) + " x " +
escape(pat) + " = \"" +
@@ -2978,7 +2978,7 @@ void NumberFormatTest::expect(NumberFormat& fmt, const Formattable& n,
void NumberFormatTest::expect(NumberFormat* fmt, const Formattable& n,
const UnicodeString& exp, UBool rt,
UErrorCode status) {
- if (fmt == NULL || U_FAILURE(status)) {
+ if (fmt == nullptr || U_FAILURE(status)) {
dataerrln("FAIL: NumberFormat constructor");
} else {
expect(*fmt, n, exp, rt);
@@ -2989,9 +2989,9 @@ void NumberFormatTest::expect(NumberFormat* fmt, const Formattable& n,
void NumberFormatTest::expectCurrency(NumberFormat& nf, const Locale& locale,
double value, const UnicodeString& string) {
UErrorCode ec = U_ZERO_ERROR;
- DecimalFormat& fmt = * (DecimalFormat*) &nf;
- const UChar DEFAULT_CURR[] = {45/*-*/,0};
- UChar curr[4];
+ DecimalFormat& fmt = * dynamic_cast<DecimalFormat*>(&nf);
+ const char16_t DEFAULT_CURR[] = {45/*-*/,0};
+ char16_t curr[4];
u_strcpy(curr, DEFAULT_CURR);
if (*locale.getLanguage() != 0) {
ucurr_forLocale(locale.getName(), curr, 4, &ec);
@@ -3042,7 +3042,7 @@ void NumberFormatTest::expectPad(DecimalFormat& fmt, const UnicodeString& pat,
expectPad(fmt, pat, pos, 0, (UnicodeString)"");
}
void NumberFormatTest::expectPad(DecimalFormat& fmt, const UnicodeString& pat,
- int32_t pos, int32_t width, UChar pad) {
+ int32_t pos, int32_t width, char16_t pad) {
expectPad(fmt, pat, pos, width, UnicodeString(pad));
}
void NumberFormatTest::expectPad(DecimalFormat& fmt, const UnicodeString& pat,
@@ -3076,8 +3076,8 @@ void NumberFormatTest::expectPad(DecimalFormat& fmt, const UnicodeString& pat,
// This test is flaky b/c the symbols for CNY and JPY are equivalent in this locale - FIXME
void NumberFormatTest::TestCompatibleCurrencies() {
/*
- static const UChar JPY[] = {0x4A, 0x50, 0x59, 0};
- static const UChar CNY[] = {0x43, 0x4E, 0x59, 0};
+ static const char16_t JPY[] = {0x4A, 0x50, 0x59, 0};
+ static const char16_t CNY[] = {0x43, 0x4E, 0x59, 0};
UErrorCode status = U_ZERO_ERROR;
LocalPointer<NumberFormat> fmt(
NumberFormat::createCurrencyInstance(Locale::getUS(), status));
@@ -3112,7 +3112,7 @@ void NumberFormatTest::TestCompatibleCurrencies() {
*/
}
-void NumberFormatTest::expectParseCurrency(const NumberFormat &fmt, const UChar* currency, double amount, const char *text) {
+void NumberFormatTest::expectParseCurrency(const NumberFormat &fmt, const char16_t* currency, double amount, const char *text) {
ParsePosition ppos;
UnicodeString utext = ctou(text);
LocalPointer<CurrencyAmount> currencyAmount(fmt.parseCurrency(utext, ppos));
@@ -3123,7 +3123,7 @@ void NumberFormatTest::expectParseCurrency(const NumberFormat &fmt, const UChar*
UErrorCode status = U_ZERO_ERROR;
char theInfo[100];
- sprintf(theInfo, "For locale %s, string \"%s\", currency ",
+ snprintf(theInfo, sizeof(theInfo), "For locale %s, string \"%s\", currency ",
fmt.getLocale(ULOC_ACTUAL_LOCALE, status).getBaseName(),
text);
u_austrcpy(theInfo+uprv_strlen(theInfo), currency);
@@ -3212,7 +3212,7 @@ void NumberFormatTest::TestHostClone()
Locale loc("en_US@compat=host");
UDate now = Calendar::getNow();
NumberFormat *full = NumberFormat::createInstance(loc, status);
- if (full == NULL || U_FAILURE(status)) {
+ if (full == nullptr || U_FAILURE(status)) {
dataerrln("FAIL: Can't create NumberFormat date instance - %s", u_errorName(status));
return;
}
@@ -3220,7 +3220,7 @@ void NumberFormatTest::TestHostClone()
full->format(now, result1, status);
Format *fullClone = full->clone();
delete full;
- full = NULL;
+ full = nullptr;
UnicodeString result2;
fullClone->format(now, result2, status);
@@ -3240,7 +3240,7 @@ void NumberFormatTest::TestCurrencyFormat()
MeasureFormat *cloneObj;
UnicodeString str;
Formattable toFormat, result;
- static const UChar ISO_CODE[4] = {0x0047, 0x0042, 0x0050, 0};
+ static const char16_t ISO_CODE[4] = {0x0047, 0x0042, 0x0050, 0};
Locale saveDefaultLocale = Locale::getDefault();
Locale::setDefault( Locale::getUK(), status );
@@ -3256,7 +3256,7 @@ void NumberFormatTest::TestCurrencyFormat()
return;
}
cloneObj = measureObj->clone();
- if (cloneObj == NULL) {
+ if (cloneObj == nullptr) {
errln("Clone doesn't work");
return;
}
@@ -3286,15 +3286,15 @@ void NumberFormatTest::TestCurrencyFormat()
delete cloneObj;
status = U_USELESS_COLLATOR_ERROR;
- if (MeasureFormat::createCurrencyFormat(status) != NULL) {
- errln("createCurrencyFormat should have returned NULL.");
+ if (MeasureFormat::createCurrencyFormat(status) != nullptr) {
+ errln("createCurrencyFormat should have returned nullptr.");
}
}
/* Port of ICU4J rounding test. */
void NumberFormatTest::TestRounding() {
UErrorCode status = U_ZERO_ERROR;
- DecimalFormat *df = (DecimalFormat*)NumberFormat::createCurrencyInstance(Locale::getEnglish(), status);
+ DecimalFormat *df = dynamic_cast<DecimalFormat*>(NumberFormat::createCurrencyInstance(Locale::getEnglish(), status));
if (U_FAILURE(status)) {
dataerrln("Unable to create decimal formatter. - %s", u_errorName(status));
@@ -3332,7 +3332,7 @@ void NumberFormatTest::TestRoundingPattern() {
int32_t numOfTests = UPRV_LENGTHOF(tests);
UnicodeString result;
- DecimalFormat *df = (DecimalFormat*)NumberFormat::createCurrencyInstance(Locale::getEnglish(), status);
+ DecimalFormat *df = dynamic_cast<DecimalFormat*>(NumberFormat::createCurrencyInstance(Locale::getEnglish(), status));
if (U_FAILURE(status)) {
dataerrln("Unable to create decimal formatter. - %s", u_errorName(status));
return;
@@ -3550,13 +3550,13 @@ void NumberFormatTest::TestNumberingSystems() {
{ "zh_TW@numbers=native", 1234.567, false, "\\u4e00,\\u4e8c\\u4e09\\u56db.\\u4e94\\u516d\\u4e03" },
{ "zh_TW@numbers=traditional", 1234.567, true, "\\u4E00\\u5343\\u4E8C\\u767E\\u4E09\\u5341\\u56DB\\u9EDE\\u4E94\\u516D\\u4E03" },
{ "zh_TW@numbers=finance", 1234.567, true, "\\u58F9\\u4EDF\\u8CB3\\u4F70\\u53C3\\u62FE\\u8086\\u9EDE\\u4F0D\\u9678\\u67D2" },
- { NULL, 0, false, NULL }
+ { nullptr, 0, false, nullptr }
};
UErrorCode ec;
const TestNumberingSystemItem *item;
- for (item = DATA; item->localeName != NULL; item++) {
+ for (item = DATA; item->localeName != nullptr; item++) {
ec = U_ZERO_ERROR;
Locale loc = Locale::createFromName(item->localeName);
@@ -3594,16 +3594,16 @@ void NumberFormatTest::TestNumberingSystems() {
dataerrln("FAIL: NumberingSystem::createInstance(ec); - %s", u_errorName(ec));
}
- if ( ns != NULL ) {
+ if ( ns != nullptr ) {
ns->getDynamicClassID();
ns->getStaticClassID();
} else {
- errln("FAIL: getInstance() returned NULL.");
+ errln("FAIL: getInstance() returned nullptr.");
}
NumberingSystem *ns1 = new NumberingSystem(*ns);
- if (ns1 == NULL) {
- errln("FAIL: NumberSystem copy constructor returned NULL.");
+ if (ns1 == nullptr) {
+ errln("FAIL: NumberSystem copy constructor returned nullptr.");
}
delete ns1;
@@ -3632,9 +3632,9 @@ NumberFormatTest::TestMultiCurrencySign() {
{"zh_CN", "\\u00A4#,##0.00;(\\u00A4#,##0.00)", "1", "\\u00A51.00", "CNY\\u00A01.00", "\\u4EBA\\u6C11\\u5E01\\u00A01.00"}
};
- const UChar doubleCurrencySign[] = {0xA4, 0xA4, 0};
+ const char16_t doubleCurrencySign[] = {0xA4, 0xA4, 0};
UnicodeString doubleCurrencyStr(doubleCurrencySign);
- const UChar tripleCurrencySign[] = {0xA4, 0xA4, 0xA4, 0};
+ const char16_t tripleCurrencySign[] = {0xA4, 0xA4, 0xA4, 0};
UnicodeString tripleCurrencyStr(tripleCurrencySign);
for (uint32_t i=0; i<UPRV_LENGTHOF(DATA); ++i) {
@@ -3662,7 +3662,7 @@ NumberFormatTest::TestMultiCurrencySign() {
continue;
}
UnicodeString s;
- ((NumberFormat*) fmt)->format(numberToBeFormat, s);
+ (dynamic_cast<NumberFormat*>(fmt))->format(numberToBeFormat, s);
// DATA[i][3] is the currency format result using a
// single currency sign.
// DATA[i][4] is the currency format result using
@@ -3717,7 +3717,7 @@ NumberFormatTest::TestCurrencyFormatForMixParsing() {
"US dollars1,234.56",
// "1,234.56 US dollars" // Fails in 62 because currency format is not compatible with pattern.
};
- const CurrencyAmount* curramt = NULL;
+ const CurrencyAmount* curramt = nullptr;
for (uint32_t i = 0; i < UPRV_LENGTHOF(formats); ++i) {
UnicodeString stringToBeParsed = ctou(formats[i]);
logln(UnicodeString("stringToBeParsed: ") + stringToBeParsed);
@@ -3727,7 +3727,7 @@ NumberFormatTest::TestCurrencyFormatForMixParsing() {
if (U_FAILURE(status)) {
errln("FAIL: measure format parsing: '%s' ec: %s", formats[i], u_errorName(status));
} else if (result.getType() != Formattable::kObject ||
- (curramt = dynamic_cast<const CurrencyAmount*>(result.getObject())) == NULL ||
+ (curramt = dynamic_cast<const CurrencyAmount*>(result.getObject())) == nullptr ||
curramt->getNumber().getDouble() != 1234.56 ||
UnicodeString(curramt->getISOCurrency()).compare(ISO_CURRENCY_USD)
) {
@@ -3788,7 +3788,7 @@ NumberFormatTest::TestDecimalFormatCurrencyParse() {
return;
}
UnicodeString pat;
- UChar currency = 0x00A4;
+ char16_t 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, sym, status);
@@ -3876,7 +3876,7 @@ NumberFormatTest::TestCurrencyIsoPluralFormat() {
dataerrln((UnicodeString)"can not create instance, locale:" + localeString + ", style: " + k + " - " + u_errorName(status));
continue;
}
- UChar currencyCode[4];
+ char16_t currencyCode[4];
u_charsToUChars(currencyISOCode, currencyCode, 4);
numFmt->setCurrency(currencyCode, status);
if (U_FAILURE(status)) {
@@ -3991,7 +3991,7 @@ for (;;) {
dataerrln((UnicodeString)"can not create instance, locale:" + localeString + ", style: " + k + " - " + u_errorName(status));
continue;
}
- UChar currencyCode[4];
+ char16_t currencyCode[4];
u_charsToUChars(currencyISOCode, currencyCode, 4);
numFmt->setCurrency(currencyCode, status);
if (U_FAILURE(status)) {
@@ -6619,7 +6619,7 @@ NumberFormatTest::TestParseCurrencyInUCurr() {
UnicodeString formatted = ctou(WRONG_DATA[i]);
UErrorCode status = U_ZERO_ERROR;
NumberFormat* numFmt = NumberFormat::createInstance(locale, UNUM_CURRENCY, status);
- if (numFmt != NULL && U_SUCCESS(status)) {
+ if (numFmt != nullptr && U_SUCCESS(status)) {
ParsePosition parsePos;
LocalPointer<CurrencyAmount> currAmt(numFmt->parseCurrency(formatted, parsePos));
if (parsePos.getIndex() > 0) {
@@ -6662,7 +6662,7 @@ void NumberFormatTest::expectPositions(FieldPositionIterator& iter, int32_t *val
// is there a logln using printf?
char buf[128];
- sprintf(buf, "%24s %3d %3d %3d", attrString(id), id, start, limit);
+ snprintf(buf, sizeof(buf), "%24s %3d %3d %3d", attrString(id), id, start, limit);
logln(buf);
for (int i = 0; i < tupleCount; ++i) {
@@ -6706,7 +6706,7 @@ void NumberFormatTest::TestFieldPositionIterator() {
FieldPositionIterator iter2;
FieldPosition pos;
- DecimalFormat *decFmt = (DecimalFormat *) NumberFormat::createInstance(status);
+ DecimalFormat *decFmt = dynamic_cast<DecimalFormat *>(NumberFormat::createInstance(status));
if (failure(status, "NumberFormat::createInstance", true)) return;
double num = 1234.56;
@@ -6727,7 +6727,7 @@ void NumberFormatTest::TestFieldPositionIterator() {
// should format ok with no iterator
str2.remove();
- decFmt->format(num, str2, NULL, status);
+ decFmt->format(num, str2, nullptr, status);
assertEquals("null fpiter", str1, str2);
delete decFmt;
@@ -6736,7 +6736,7 @@ void NumberFormatTest::TestFieldPositionIterator() {
void NumberFormatTest::TestFormatAttributes() {
Locale locale("en_US");
UErrorCode status = U_ZERO_ERROR;
- DecimalFormat *decFmt = (DecimalFormat *) NumberFormat::createInstance(locale, UNUM_CURRENCY, status);
+ DecimalFormat *decFmt = dynamic_cast<DecimalFormat *>(NumberFormat::createInstance(locale, UNUM_CURRENCY, status));
if (failure(status, "NumberFormat::createInstance", true)) return;
double val = 12345.67;
@@ -6769,7 +6769,7 @@ void NumberFormatTest::TestFormatAttributes() {
}
delete decFmt;
- decFmt = (DecimalFormat *) NumberFormat::createInstance(locale, UNUM_SCIENTIFIC, status);
+ decFmt = dynamic_cast<DecimalFormat *>(NumberFormat::createInstance(locale, UNUM_SCIENTIFIC, status));
val = -0.0000123;
{
int32_t expected[] = {
@@ -6892,12 +6892,12 @@ void NumberFormatTest::TestDecimal() {
{
UErrorCode status = U_ZERO_ERROR;
NumberFormat *fmtr = NumberFormat::createInstance(Locale::getUS(), UNUM_DECIMAL, status);
- if (U_FAILURE(status) || fmtr == NULL) {
+ if (U_FAILURE(status) || fmtr == nullptr) {
dataerrln("Unable to create NumberFormat");
} else {
UnicodeString formattedResult;
StringPiece num("244444444444444444444444444444444444446.4");
- fmtr->format(num, formattedResult, NULL, status);
+ fmtr->format(num, formattedResult, nullptr, status);
ASSERT_SUCCESS(status);
ASSERT_EQUALS("244,444,444,444,444,444,444,444,444,444,444,444,446.4", formattedResult);
//std::string ss; std::cout << formattedResult.toUTF8String(ss);
@@ -6910,7 +6910,7 @@ void NumberFormatTest::TestDecimal() {
// a critical interface that must work.
UErrorCode status = U_ZERO_ERROR;
NumberFormat *fmtr = NumberFormat::createInstance(Locale::getUS(), UNUM_DECIMAL, status);
- if (U_FAILURE(status) || fmtr == NULL) {
+ if (U_FAILURE(status) || fmtr == nullptr) {
dataerrln("Unable to create NumberFormat");
} else {
UnicodeString formattedResult;
@@ -6918,7 +6918,7 @@ void NumberFormatTest::TestDecimal() {
StringPiece num("123.4566666666666666666666666666666666621E+40");
dl.setToDecNumber(num, status);
ASSERT_SUCCESS(status);
- fmtr->format(dl, formattedResult, NULL, status);
+ fmtr->format(dl, formattedResult, nullptr, status);
ASSERT_SUCCESS(status);
ASSERT_EQUALS("1,234,566,666,666,666,666,666,666,666,666,666,666,621,000", formattedResult);
@@ -6941,7 +6941,7 @@ void NumberFormatTest::TestDecimal() {
// Check a parse with a formatter with a multiplier.
UErrorCode status = U_ZERO_ERROR;
NumberFormat *fmtr = NumberFormat::createInstance(Locale::getUS(), UNUM_PERCENT, status);
- if (U_FAILURE(status) || fmtr == NULL) {
+ if (U_FAILURE(status) || fmtr == nullptr) {
dataerrln("Unable to create NumberFormat");
} else {
UnicodeString input = "1.84%";
@@ -6963,7 +6963,7 @@ void NumberFormatTest::TestDecimal() {
// Check that a parse returns a decimal number with full accuracy
UErrorCode status = U_ZERO_ERROR;
NumberFormat *fmtr = NumberFormat::createInstance(Locale::getUS(), UNUM_DECIMAL, status);
- if (U_FAILURE(status) || fmtr == NULL) {
+ if (U_FAILURE(status) || fmtr == nullptr) {
dataerrln("Unable to create NumberFormat");
} else {
UnicodeString input = "1.002200044400088880000070000";
@@ -6987,7 +6987,7 @@ void NumberFormatTest::TestCurrencyFractionDigits() {
// Create currenct instance
NumberFormat* fmt = NumberFormat::createCurrencyInstance("ja_JP", status);
- if (U_FAILURE(status) || fmt == NULL) {
+ if (U_FAILURE(status) || fmt == nullptr) {
dataerrln("Unable to create NumberFormat");
} else {
fmt->format(value, text1);
@@ -7129,7 +7129,7 @@ void NumberFormatTest::TestAvailableNumberingSystems() {
}
void
-NumberFormatTest::Test9087(void)
+NumberFormatTest::Test9087()
{
U_STRING_DECL(pattern,"#",1);
U_STRING_INIT(pattern,"#",1);
@@ -7140,9 +7140,9 @@ NumberFormatTest::Test9087(void)
U_STRING_DECL(nanstr,"NAN",3);
U_STRING_INIT(nanstr,"NAN",3);
- UChar outputbuf[50] = {0};
+ char16_t outputbuf[50] = {0};
UErrorCode status = U_ZERO_ERROR;
- UNumberFormat* fmt = unum_open(UNUM_PATTERN_DECIMAL,pattern,1,NULL,NULL,&status);
+ UNumberFormat* fmt = unum_open(UNUM_PATTERN_DECIMAL,pattern,1,nullptr,nullptr,&status);
if ( U_FAILURE(status) ) {
dataerrln("FAIL: error in unum_open() - %s", u_errorName(status));
return;
@@ -7284,7 +7284,7 @@ void NumberFormatTest::TestFormatFastpaths() {
}
-void NumberFormatTest::TestFormattableSize(void) {
+void NumberFormatTest::TestFormattableSize() {
if(sizeof(Formattable) > 112) {
errln("Error: sizeof(Formattable)=%d, 112=%d\n",
sizeof(Formattable), 112);
@@ -7302,8 +7302,8 @@ UBool NumberFormatTest::testFormattableAsUFormattable(const char *file, int line
UFormattable *u = f.toUFormattable();
logln();
- if (u == NULL) {
- errln("%s:%d: Error: f.toUFormattable() retuned NULL.");
+ if (u == nullptr) {
+ errln("%s:%d: Error: f.toUFormattable() retuned nullptr.");
return false;
}
logln("%s:%d: comparing Formattable with UFormattable", file, line);
@@ -7338,10 +7338,10 @@ UBool NumberFormatTest::testFormattableAsUFormattable(const char *file, int line
UnicodeString str;
f.getString(str);
int32_t len;
- const UChar* uch = ufmt_getUChars(u, &len, &valueStatus);
+ const char16_t* uch = ufmt_getUChars(u, &len, &valueStatus);
if(U_SUCCESS(valueStatus)) {
UnicodeString str2(uch, len);
- assertTrue("UChar* NULL-terminated", uch[len]==0);
+ assertTrue("char16_t* NUL-terminated", uch[len]==0);
exactMatch = (str == str2);
}
triedExact = true;
@@ -7451,7 +7451,7 @@ UBool NumberFormatTest::testFormattableAsUFormattable(const char *file, int line
return exactMatch || !triedExact;
}
-void NumberFormatTest::TestUFormattable(void) {
+void NumberFormatTest::TestUFormattable() {
{
// test that a default formattable is equal to Formattable()
UErrorCode status = U_ZERO_ERROR;
@@ -7521,7 +7521,7 @@ void NumberFormatTest::TestUFormattable(void) {
}
}
-void NumberFormatTest::TestSignificantDigits(void) {
+void NumberFormatTest::TestSignificantDigits() {
double input[] = {
0, 0,
0.1, -0.1,
@@ -7555,7 +7555,7 @@ void NumberFormatTest::TestSignificantDigits(void) {
UErrorCode status = U_ZERO_ERROR;
Locale locale("en_US");
- LocalPointer<DecimalFormat> numberFormat(static_cast<DecimalFormat*>(
+ LocalPointer<DecimalFormat> numberFormat(dynamic_cast<DecimalFormat*>(
NumberFormat::createInstance(locale, status)));
CHECK_DATA(status,"NumberFormat::createInstance");
@@ -7608,7 +7608,7 @@ void NumberFormatTest::TestSignificantDigits(void) {
void NumberFormatTest::TestShowZero() {
UErrorCode status = U_ZERO_ERROR;
Locale locale("en_US");
- LocalPointer<DecimalFormat> numberFormat(static_cast<DecimalFormat*>(
+ LocalPointer<DecimalFormat> numberFormat(dynamic_cast<DecimalFormat*>(
NumberFormat::createInstance(locale, status)));
CHECK_DATA(status, "NumberFormat::createInstance");
@@ -7625,7 +7625,7 @@ void NumberFormatTest::TestShowZero() {
void NumberFormatTest::TestBug9936() {
UErrorCode status = U_ZERO_ERROR;
Locale locale("en_US");
- LocalPointer<DecimalFormat> numberFormat(static_cast<DecimalFormat*>(
+ LocalPointer<DecimalFormat> numberFormat(dynamic_cast<DecimalFormat*>(
NumberFormat::createInstance(locale, status)));
if (U_FAILURE(status)) {
dataerrln("File %s, Line %d: status = %s.\n", __FILE__, __LINE__, u_errorName(status));
@@ -7660,7 +7660,7 @@ void NumberFormatTest::TestBug9936() {
void NumberFormatTest::TestParseNegativeWithFaLocale() {
UErrorCode status = U_ZERO_ERROR;
- DecimalFormat *test = (DecimalFormat *) NumberFormat::createInstance("fa", status);
+ DecimalFormat *test = dynamic_cast<DecimalFormat *>(NumberFormat::createInstance("fa", status));
CHECK_DATA(status, "NumberFormat::createInstance");
test->setLenient(true);
Formattable af;
@@ -7676,7 +7676,7 @@ void NumberFormatTest::TestParseNegativeWithFaLocale() {
void NumberFormatTest::TestParseNegativeWithAlternateMinusSign() {
UErrorCode status = U_ZERO_ERROR;
- DecimalFormat *test = (DecimalFormat *) NumberFormat::createInstance("en", status);
+ DecimalFormat *test = dynamic_cast<DecimalFormat *>( NumberFormat::createInstance("en", status));
CHECK_DATA(status, "NumberFormat::createInstance");
test->setLenient(true);
Formattable af;
@@ -7700,7 +7700,7 @@ void NumberFormatTest::TestCustomCurrencySignAndSeparator() {
custom.setSymbol(DecimalFormatSymbols::kMonetarySeparatorSymbol, ":");
UnicodeString pat(" #,##0.00");
- pat.insert(0, (UChar)0x00A4);
+ pat.insert(0, (char16_t)0x00A4);
DecimalFormat fmt(pat, custom, status);
CHECK(status, "DecimalFormat constructor");
@@ -7795,11 +7795,11 @@ void NumberFormatTest::TestParseSignsAndMarks() {
{ "ps", true, CharsToUnicodeString("-\\u200E\\u06F6\\u06F7"), -67 },
{ "ps", true, CharsToUnicodeString("-\\u200E \\u06F6\\u06F7"), -67 },
// terminator
- { NULL, 0, UnicodeString(""), 0 },
+ { nullptr, 0, UnicodeString(""), 0 },
};
const SignsAndMarksItem * itemPtr;
- for (itemPtr = items; itemPtr->locale != NULL; itemPtr++ ) {
+ for (itemPtr = items; itemPtr->locale != nullptr; itemPtr++ ) {
UErrorCode status = U_ZERO_ERROR;
NumberFormat *numfmt = NumberFormat::createInstance(Locale(itemPtr->locale), status);
if (U_SUCCESS(status)) {
@@ -7841,7 +7841,7 @@ void NumberFormatTest::Test10419RoundingWith0FractionDigits() {
{ DecimalFormat::kRoundUp, 1.5, "2"},
};
UErrorCode status = U_ZERO_ERROR;
- LocalPointer<DecimalFormat> decfmt((DecimalFormat *) NumberFormat::createInstance(Locale("en_US"), status));
+ LocalPointer<DecimalFormat> decfmt(dynamic_cast<DecimalFormat *>( NumberFormat::createInstance(Locale("en_US"), status)));
if (U_FAILURE(status)) {
dataerrln("Failure creating DecimalFormat %s", u_errorName(status));
return;
@@ -8099,9 +8099,9 @@ void NumberFormatTest::TestAccountingCurrency() {
expect(NumberFormat::createInstance("de_DE", style, status),
(Formattable)(double)-23456.7, UnicodeString("-23.456,70\\u00A0\\u20AC").unescape(), true, status);
expect(NumberFormat::createInstance("en_ID", style, status),
- (Formattable)(double)0, UnicodeString("IDR\\u00A00.00").unescape(), true, status);
+ (Formattable)(double)0, UnicodeString("Rp\\u00A00,00").unescape(), true, status);
expect(NumberFormat::createInstance("en_ID", style, status),
- (Formattable)(double)-0.2, UnicodeString("(IDR\\u00A00.20)").unescape(), true, status);
+ (Formattable)(double)-0.2, UnicodeString("(Rp\\u00A00,20)").unescape(), true, status);
expect(NumberFormat::createInstance("sh_ME", style, status),
(Formattable)(double)0, UnicodeString("0,00\\u00A0\\u20AC").unescape(), true, status);
expect(NumberFormat::createInstance("sh_ME", style, status),
@@ -8185,7 +8185,7 @@ void NumberFormatTest::TestCurrencyUsage() {
for(int i=0; i<2; i++){
status = U_ZERO_ERROR;
if(i == 0){
- fmt = (DecimalFormat *) NumberFormat::createInstance(enUS_ISK, UNUM_CURRENCY, status);
+ fmt = dynamic_cast<DecimalFormat *>( NumberFormat::createInstance(enUS_ISK, UNUM_CURRENCY, status));
if (assertSuccess("en_US@currency=ISK/CURRENCY", status, true) == false) {
continue;
}
@@ -8200,7 +8200,7 @@ void NumberFormatTest::TestCurrencyUsage() {
fmt->setCurrencyUsage(UCURR_USAGE_CASH, &status);
}else{
- fmt = (DecimalFormat *) NumberFormat::createInstance(enUS_ISK, UNUM_CASH_CURRENCY, status);
+ fmt = dynamic_cast<DecimalFormat *>( NumberFormat::createInstance(enUS_ISK, UNUM_CASH_CURRENCY, status));
if (assertSuccess("en_US@currency=ISK/CASH", status, true) == false) {
continue;
}
@@ -8222,7 +8222,7 @@ void NumberFormatTest::TestCurrencyUsage() {
for(int i=0; i<2; i++){
status = U_ZERO_ERROR;
if(i == 0){
- fmt = (DecimalFormat *) NumberFormat::createInstance(enUS_CAD, UNUM_CURRENCY, status);
+ fmt = dynamic_cast<DecimalFormat *>( NumberFormat::createInstance(enUS_CAD, UNUM_CURRENCY, status));
if (assertSuccess("en_US@currency=CAD/CURRENCY", status, true) == false) {
continue;
}
@@ -8232,7 +8232,7 @@ void NumberFormatTest::TestCurrencyUsage() {
assertEquals("Test Currency Usage 3", u"CA$123.57", original_rounding);
fmt->setCurrencyUsage(UCURR_USAGE_CASH, &status);
}else{
- fmt = (DecimalFormat *) NumberFormat::createInstance(enUS_CAD, UNUM_CASH_CURRENCY, status);
+ fmt = dynamic_cast<DecimalFormat *>( NumberFormat::createInstance(enUS_CAD, UNUM_CASH_CURRENCY, status));
if (assertSuccess("en_US@currency=CAD/CASH", status, true) == false) {
continue;
}
@@ -8246,17 +8246,17 @@ void NumberFormatTest::TestCurrencyUsage() {
// Test the currency change
// 1st time for getter/setter, 2nd time for factory method
- const UChar CUR_PKR[] = {0x50, 0x4B, 0x52, 0};
+ const char16_t CUR_PKR[] = {0x50, 0x4B, 0x52, 0};
for(int i=0; i<2; i++){
status = U_ZERO_ERROR;
if(i == 0){
- fmt = (DecimalFormat *) NumberFormat::createInstance(enUS_CAD, UNUM_CURRENCY, status);
+ fmt = dynamic_cast<DecimalFormat *>( NumberFormat::createInstance(enUS_CAD, UNUM_CURRENCY, status));
if (assertSuccess("en_US@currency=CAD/CURRENCY", status, true) == false) {
continue;
}
fmt->setCurrencyUsage(UCURR_USAGE_CASH, &status);
}else{
- fmt = (DecimalFormat *) NumberFormat::createInstance(enUS_CAD, UNUM_CASH_CURRENCY, status);
+ fmt = dynamic_cast<DecimalFormat *>( NumberFormat::createInstance(enUS_CAD, UNUM_CASH_CURRENCY, status));
if (assertSuccess("en_US@currency=CAD/CASH", status, true) == false) {
continue;
}
@@ -8291,7 +8291,7 @@ void NumberFormatTest::TestCurrencyUsage() {
void NumberFormatTest::TestDoubleLimit11439() {
char buf[50];
for (int64_t num = MAX_INT64_IN_DOUBLE-10; num<=MAX_INT64_IN_DOUBLE; num++) {
- sprintf(buf, "%lld", (long long)num);
+ snprintf(buf, sizeof(buf), "%lld", (long long)num);
double fNum = 0.0;
sscanf(buf, "%lf", &fNum);
int64_t rtNum = static_cast<int64_t>(fNum);
@@ -8301,7 +8301,7 @@ void NumberFormatTest::TestDoubleLimit11439() {
}
}
for (int64_t num = -MAX_INT64_IN_DOUBLE+10; num>=-MAX_INT64_IN_DOUBLE; num--) {
- sprintf(buf, "%lld", (long long)num);
+ snprintf(buf, sizeof(buf), "%lld", (long long)num);
double fNum = 0.0;
sscanf(buf, "%lf", &fNum);
int64_t rtNum = static_cast<int64_t>(fNum);
@@ -8445,7 +8445,7 @@ void NumberFormatTest::TestFractionalDigitsForCurrency() {
dataerrln("Error creating NumberFormat - %s", u_errorName(status));
return;
}
- UChar JPY[] = {0x4A, 0x50, 0x59, 0x0};
+ char16_t JPY[] = {0x4A, 0x50, 0x59, 0x0};
fmt->setCurrency(JPY, status);
if (!assertSuccess("", status)) {
return;
@@ -8463,7 +8463,7 @@ void NumberFormatTest::TestFormatCurrencyPlural() {
return;
}
UnicodeString formattedNum;
- fmt->format(11234.567, formattedNum, NULL, status);
+ fmt->format(11234.567, formattedNum, nullptr, status);
assertEquals("", "11,234.57 US dollars", formattedNum);
delete fmt;
}
@@ -8562,7 +8562,7 @@ void NumberFormatTest::Test11739_ParseLongCurrency() {
IcuTestErrorCode status(*this, "Test11739_ParseLongCurrency");
LocalPointer<NumberFormat> nf(NumberFormat::createCurrencyInstance("sr_BA", status));
if (status.errDataIfFailureAndReset()) { return; }
- ((DecimalFormat*) nf.getAlias())->applyPattern(u"#,##0.0 ¤¤¤", status);
+ (dynamic_cast<DecimalFormat*>(nf.getAlias()))->applyPattern(u"#,##0.0 ¤¤¤", status);
ParsePosition ppos(0);
LocalPointer<CurrencyAmount> result(nf->parseCurrency(u"1.500 амерички долар", ppos));
assertEquals("Should parse to 1500 USD", -1, ppos.getErrorIndex());
@@ -8602,14 +8602,14 @@ void NumberFormatTest::Test13737_ParseScientificStrict() {
void NumberFormatTest::Test11376_getAndSetPositivePrefix() {
{
- const UChar USD[] = {0x55, 0x53, 0x44, 0x0};
+ const char16_t USD[] = {0x55, 0x53, 0x44, 0x0};
UErrorCode status = U_ZERO_ERROR;
LocalPointer<NumberFormat> fmt(
NumberFormat::createCurrencyInstance("en", status));
if (!assertSuccess("", status)) {
return;
}
- DecimalFormat *dfmt = (DecimalFormat *) fmt.getAlias();
+ DecimalFormat *dfmt = dynamic_cast<DecimalFormat *>( fmt.getAlias());
dfmt->setCurrency(USD);
UnicodeString result;
@@ -8622,14 +8622,14 @@ void NumberFormatTest::Test11376_getAndSetPositivePrefix() {
assertSuccess("", status);
}
{
- const UChar USD[] = {0x55, 0x53, 0x44, 0x0};
+ const char16_t USD[] = {0x55, 0x53, 0x44, 0x0};
UErrorCode status = U_ZERO_ERROR;
LocalPointer<NumberFormat> fmt(
NumberFormat::createInstance("en", UNUM_CURRENCY_PLURAL, status));
if (!assertSuccess("", status)) {
return;
}
- DecimalFormat *dfmt = (DecimalFormat *) fmt.getAlias();
+ DecimalFormat *dfmt = dynamic_cast<DecimalFormat *>( fmt.getAlias());
UnicodeString result;
assertEquals("", u" (unknown currency)", dfmt->getPositiveSuffix(result));
dfmt->setCurrency(USD);
@@ -8731,7 +8731,7 @@ void NumberFormatTest::Test11649_toPatternWithMultiCurrency() {
if (!assertSuccess("", status)) {
return;
}
- static UChar USD[] = {0x55, 0x53, 0x44, 0x0};
+ static char16_t USD[] = {0x55, 0x53, 0x44, 0x0};
fmt.setCurrency(USD);
UnicodeString appendTo;
@@ -8778,7 +8778,7 @@ void NumberFormatTest::Test13391_chakmaParsing() {
dataerrln("%s %d Chakma df is null", __FILE__, __LINE__);
return;
}
- const UChar* expected = u"\U00011137\U00011138,\U00011139\U0001113A\U0001113B";
+ const char16_t* expected = u"\U00011137\U00011138,\U00011139\U0001113A\U0001113B";
UnicodeString actual;
df->format(12345, actual, status);
assertSuccess("Should not fail when formatting in ccp", status);
@@ -8789,9 +8789,9 @@ void NumberFormatTest::Test13391_chakmaParsing() {
assertSuccess("Should not fail when parsing in ccp", status);
assertEquals("Should parse to 12345 in ccp", 12345, result);
- const UChar* expectedScientific = u"\U00011137.\U00011139E\U00011138";
+ const char16_t* expectedScientific = u"\U00011137.\U00011139E\U00011138";
UnicodeString actualScientific;
- df.adoptInstead(static_cast<DecimalFormat*>(
+ df.adoptInstead(dynamic_cast<DecimalFormat*>(
NumberFormat::createScientificInstance(Locale("ccp"), status)));
df->format(130, actualScientific, status);
assertSuccess("Should not fail when formatting scientific in ccp", status);
@@ -8882,8 +8882,8 @@ void NumberFormatTest::Test11318_DoubleConversion() {
void NumberFormatTest::TestParsePercentRegression() {
IcuTestErrorCode status(*this, "TestParsePercentRegression");
- LocalPointer<DecimalFormat> df1((DecimalFormat*) NumberFormat::createInstance("en", status), status);
- LocalPointer<DecimalFormat> df2((DecimalFormat*) NumberFormat::createPercentInstance("en", status), status);
+ LocalPointer<DecimalFormat> df1(dynamic_cast<DecimalFormat*>( NumberFormat::createInstance("en", status)), status);
+ LocalPointer<DecimalFormat> df2(dynamic_cast<DecimalFormat*>( NumberFormat::createPercentInstance("en", status)), status);
if (status.isFailure()) {return; }
df1->setLenient(true);
df2->setLenient(true);
@@ -9229,7 +9229,7 @@ void NumberFormatTest::Test10354() {
void NumberFormatTest::Test11645_ApplyPatternEquality() {
IcuTestErrorCode status(*this, "Test11645_ApplyPatternEquality");
const char16_t* pattern = u"#,##0.0#";
- LocalPointer<DecimalFormat> fmt((DecimalFormat*) NumberFormat::createInstance(status), status);
+ LocalPointer<DecimalFormat> fmt(dynamic_cast<DecimalFormat*>(NumberFormat::createInstance(status)), status);
if (!assertSuccess("", status, true, __FILE__, __LINE__)) { return; }
fmt->applyPattern(pattern, status);
LocalPointer<DecimalFormat> fmtCopy;
@@ -9274,10 +9274,10 @@ void NumberFormatTest::Test11645_ApplyPatternEquality() {
void NumberFormatTest::Test12567() {
IcuTestErrorCode errorCode(*this, "Test12567");
// Ticket #12567: DecimalFormat.equals() may not be symmetric
- LocalPointer<DecimalFormat> df1((DecimalFormat *)
- NumberFormat::createInstance(Locale::getUS(), UNUM_CURRENCY, errorCode));
- LocalPointer<DecimalFormat> df2((DecimalFormat *)
- NumberFormat::createInstance(Locale::getUS(), UNUM_DECIMAL, errorCode));
+ LocalPointer<DecimalFormat> df1(dynamic_cast<DecimalFormat *>(
+ NumberFormat::createInstance(Locale::getUS(), UNUM_CURRENCY, errorCode)));
+ LocalPointer<DecimalFormat> df2(dynamic_cast<DecimalFormat *>(
+ NumberFormat::createInstance(Locale::getUS(), UNUM_DECIMAL, errorCode)));
if (!assertSuccess("", errorCode, true, __FILE__, __LINE__)) { return; }
// NOTE: CurrencyPluralInfo equality not tested in C++ because its operator== is not defined.
df1->applyPattern(u"0.00", errorCode);
@@ -9381,7 +9381,7 @@ void NumberFormatTest::Test11649_DecFmtCurrencies() {
pattern = pattern.unescape();
DecimalFormat fmt(pattern, status);
if (!assertSuccess("", status, true, __FILE__, __LINE__)) { return; }
- static const UChar USD[] = u"USD";
+ static const char16_t USD[] = u"USD";
fmt.setCurrency(USD);
UnicodeString appendTo;
@@ -9399,7 +9399,7 @@ void NumberFormatTest::Test11649_DecFmtCurrencies() {
void NumberFormatTest::Test13148_ParseGroupingSeparators() {
IcuTestErrorCode status(*this, "Test13148");
LocalPointer<DecimalFormat> fmt(
- (DecimalFormat*)NumberFormat::createInstance("en-ZA", status), status);
+ dynamic_cast<DecimalFormat*>(NumberFormat::createInstance("en-ZA", status)), status);
if (!assertSuccess("", status, true, __FILE__, __LINE__)) { return; }
DecimalFormatSymbols symbols = *fmt->getDecimalFormatSymbols();
@@ -9707,7 +9707,7 @@ void NumberFormatTest::Test13850_EmptyStringCurrency() {
void NumberFormatTest::Test20348_CurrencyPrefixOverride() {
IcuTestErrorCode status(*this, "Test20348_CurrencyPrefixOverride");
- LocalPointer<DecimalFormat> fmt(static_cast<DecimalFormat*>(
+ LocalPointer<DecimalFormat> fmt(dynamic_cast<DecimalFormat*>(
NumberFormat::createCurrencyInstance("en", status)));
if (status.errIfFailureAndReset()) { return; }
UnicodeString result;
@@ -9718,7 +9718,7 @@ void NumberFormatTest::Test20348_CurrencyPrefixOverride() {
assertEquals("Initial suffix",
u"-¤", fmt->getNegativePrefix(result.remove()));
assertEquals("Initial format",
- u"\u00A4100.00", fmt->format(100, result.remove(), NULL, status));
+ u"\u00A4100.00", fmt->format(100, result.remove(), nullptr, status));
fmt->setPositivePrefix(u"$");
assertEquals("Set positive prefix pattern",
@@ -9728,7 +9728,7 @@ void NumberFormatTest::Test20348_CurrencyPrefixOverride() {
assertEquals("Set positive prefix suffix",
u"-¤", fmt->getNegativePrefix(result.remove()));
assertEquals("Set positive prefix format",
- u"$100.00", fmt->format(100, result.remove(), NULL, status));
+ u"$100.00", fmt->format(100, result.remove(), nullptr, status));
fmt->setNegativePrefix(u"-$");
assertEquals("Set negative prefix pattern",
@@ -9738,12 +9738,12 @@ void NumberFormatTest::Test20348_CurrencyPrefixOverride() {
assertEquals("Set negative prefix suffix",
u"-$", fmt->getNegativePrefix(result.remove()));
assertEquals("Set negative prefix format",
- u"$100.00", fmt->format(100, result.remove(), NULL, status));
+ u"$100.00", fmt->format(100, result.remove(), nullptr, status));
}
void NumberFormatTest::Test20956_MonetarySymbolGetters() {
IcuTestErrorCode status(*this, "Test20956_MonetarySymbolGetters");
- LocalPointer<DecimalFormat> decimalFormat(static_cast<DecimalFormat*>(
+ LocalPointer<DecimalFormat> decimalFormat(dynamic_cast<DecimalFormat*>(
NumberFormat::createCurrencyInstance("et", status)));
if (status.errDataIfFailureAndReset()) {
return;
@@ -9775,7 +9775,7 @@ void NumberFormatTest::Test20956_MonetarySymbolGetters() {
void NumberFormatTest::Test20358_GroupingInPattern() {
IcuTestErrorCode status(*this, "Test20358_GroupingInPattern");
- LocalPointer<DecimalFormat> fmt(static_cast<DecimalFormat*>(
+ LocalPointer<DecimalFormat> fmt(dynamic_cast<DecimalFormat*>(
NumberFormat::createInstance("en", status)));
if (status.errIfFailureAndReset()) { return; }
UnicodeString result;
@@ -9784,7 +9784,7 @@ void NumberFormatTest::Test20358_GroupingInPattern() {
assertTrue("Initial grouping",
fmt->isGroupingUsed());
assertEquals("Initial format",
- u"54,321", fmt->format(54321, result.remove(), NULL, status));
+ u"54,321", fmt->format(54321, result.remove(), nullptr, status));
fmt->setGroupingUsed(false);
assertEquals("Set grouping false",
@@ -9792,7 +9792,7 @@ void NumberFormatTest::Test20358_GroupingInPattern() {
assertFalse("Set grouping false grouping",
fmt->isGroupingUsed());
assertEquals("Set grouping false format",
- u"54321", fmt->format(54321, result.remove(), NULL, status));
+ u"54321", fmt->format(54321, result.remove(), nullptr, status));
fmt->setGroupingUsed(true);
assertEquals("Set grouping true",
@@ -9800,7 +9800,7 @@ void NumberFormatTest::Test20358_GroupingInPattern() {
assertTrue("Set grouping true grouping",
fmt->isGroupingUsed());
assertEquals("Set grouping true format",
- u"54,321", fmt->format(54321, result.remove(), NULL, status));
+ u"54,321", fmt->format(54321, result.remove(), nullptr, status));
}
void NumberFormatTest::Test13731_DefaultCurrency() {
@@ -9890,7 +9890,7 @@ void NumberFormatTest::Test13734_StrictFlexibleWhitespace() {
void NumberFormatTest::Test20961_CurrencyPluralPattern() {
IcuTestErrorCode status(*this, "Test20961_CurrencyPluralPattern");
{
- LocalPointer<DecimalFormat> decimalFormat(static_cast<DecimalFormat*>(
+ LocalPointer<DecimalFormat> decimalFormat(dynamic_cast<DecimalFormat*>(
NumberFormat::createInstance("en-US", UNUM_CURRENCY_PLURAL, status)));
if (status.errDataIfFailureAndReset()) {
return;
@@ -9934,7 +9934,7 @@ void NumberFormatTest::Test21134_ToNumberFormatter() {
}
{
// Case 3: currency plural info (different code path)
- LocalPointer<DecimalFormat> inner(static_cast<DecimalFormat*>(
+ LocalPointer<DecimalFormat> inner(dynamic_cast<DecimalFormat*>(
DecimalFormat::createInstance("en-US", UNUM_CURRENCY_PLURAL, status)));
if (auto ptr = inner->toNumberFormatter(status)) {
// Copy constructor
@@ -10133,7 +10133,7 @@ void NumberFormatTest::Test21556_CurrencyAsDecimal() {
{
LocalPointer<NumberFormat> nf(NumberFormat::createCurrencyInstance("en-GB", status));
- DecimalFormat* df = static_cast<DecimalFormat*>(nf.getAlias());
+ DecimalFormat* df = dynamic_cast<DecimalFormat*>(nf.getAlias());
df->applyPattern(u"a0¤00b", status);
UnicodeString result;
FieldPosition fp(UNUM_CURRENCY_FIELD);
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/numfmtst.h b/Build/source/libs/icu/icu-src/source/test/intltest/numfmtst.h
index 5b20204e174..4cb0f01e6a0 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/numfmtst.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/numfmtst.h
@@ -72,117 +72,117 @@ class NumberFormatTest: public CalendarTimeZoneTest {
/**
* Test APIs (to increase code coverage)
*/
- void TestAPI(void);
+ void TestAPI();
- void TestCoverage(void);
+ void TestCoverage();
void TestLocalizedPatternSymbolCoverage();
/**
* Test the handling of quotes
**/
- void TestQuotes(void);
+ void TestQuotes();
/**
* Test patterns with exponential representation
**/
- void TestExponential(void);
+ void TestExponential();
/**
* Test handling of patterns with currency symbols
**/
- void TestCurrencySign(void);
+ void TestCurrencySign();
/**
* Test different format patterns
**/
- void TestPatterns(void);
+ void TestPatterns();
/**
* API coverage for DigitList
**/
- //void TestDigitList(void);
+ //void TestDigitList();
- void Test20186_SpacesAroundSemicolon(void);
+ void Test20186_SpacesAroundSemicolon();
/**
* Test localized currency patterns.
*/
- void TestCurrency(void);
+ void TestCurrency();
/**
* Test the Currency object handling, new as of ICU 2.2.
*/
- void TestCurrencyObject(void);
+ void TestCurrencyObject();
- void TestCurrencyPatterns(void);
+ void TestCurrencyPatterns();
/**
* Do rudimentary testing of parsing.
*/
- void TestParse(void);
+ void TestParse();
/**
* Test proper rounding by the format method.
*/
- void TestRounding487(void);
+ void TestRounding487();
// New tests for alphaWorks upgrade
- void TestExponent(void);
+ void TestExponent();
- void TestScientific(void);
+ void TestScientific();
- void TestScientific2(void);
+ void TestScientific2();
- void TestScientificGrouping(void);
+ void TestScientificGrouping();
- void TestInt64(void);
+ void TestInt64();
- void TestSurrogateSupport(void);
+ void TestSurrogateSupport();
/**
* Test the functioning of the secondary grouping value.
*/
- void TestSecondaryGrouping(void);
+ void TestSecondaryGrouping();
- void TestWhiteSpaceParsing(void);
+ void TestWhiteSpaceParsing();
- void TestComplexCurrency(void);
+ void TestComplexCurrency();
- void TestPad(void);
- void TestPatterns2(void);
+ void TestPad();
+ void TestPatterns2();
/**
* Test currency registration.
*/
- void TestRegCurrency(void);
+ void TestRegCurrency();
- void TestCurrencyNames(void);
+ void TestCurrencyNames();
- void TestCurrencyVariants(void);
+ void TestCurrencyVariants();
- void TestCurrencyAmount(void);
+ void TestCurrencyAmount();
- void TestCurrencyUnit(void);
+ void TestCurrencyUnit();
- void TestSymbolsWithBadLocale(void);
+ void TestSymbolsWithBadLocale();
- void TestAdoptDecimalFormatSymbols(void);
+ void TestAdoptDecimalFormatSymbols();
- void TestPerMill(void);
+ void TestPerMill();
- void TestIllegalPatterns(void);
+ void TestIllegalPatterns();
- void TestCases(void);
+ void TestCases();
- void TestJB3832(void);
+ void TestJB3832();
- void TestHost(void);
+ void TestHost();
- void TestHostClone(void);
+ void TestHostClone();
- void TestCurrencyFormat(void);
+ void TestCurrencyFormat();
/* Port of ICU4J rounding test. */
- void TestRounding(void);
+ void TestRounding();
- void TestRoundingPattern(void);
+ void TestRoundingPattern();
- void TestNonpositiveMultiplier(void);
+ void TestNonpositiveMultiplier();
void TestNumberingSystems();
@@ -313,7 +313,7 @@ class NumberFormatTest: public CalendarTimeZoneTest {
private:
UBool testFormattableAsUFormattable(const char *file, int line, Formattable &f);
- void expectParseCurrency(const NumberFormat &fmt, const UChar* currency, double amount, const char *text);
+ void expectParseCurrency(const NumberFormat &fmt, const char16_t* currency, double amount, const char *text);
static UBool equalValue(const Formattable& a, const Formattable& b);
@@ -373,10 +373,10 @@ class NumberFormatTest: public CalendarTimeZoneTest {
double value, const UnicodeString& string);
void expectPad(DecimalFormat& fmt, const UnicodeString& pat,
- int32_t pos, int32_t width, UChar pad);
+ int32_t pos, int32_t width, char16_t pad);
void expectPad(DecimalFormat& fmt, const char *pat,
- int32_t pos, int32_t width, UChar pad) {
+ int32_t pos, int32_t width, char16_t pad) {
expectPad(fmt, UnicodeString(pat, ""), pos, width, pad);
}
@@ -399,7 +399,7 @@ class NumberFormatTest: public CalendarTimeZoneTest {
void expectPad(DecimalFormat& fmt, const char *pat,
int32_t pos) {
- expectPad(fmt, pat, pos, 0, (UChar)0);
+ expectPad(fmt, pat, pos, 0, (char16_t)0);
}
void expect_rbnf(NumberFormat& fmt, const UnicodeString& str, const Formattable& n);
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/numrgts.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/numrgts.cpp
index 16ef75ed228..1e4c352d0b6 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/numrgts.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/numrgts.cpp
@@ -31,7 +31,7 @@ class MyNumberFormatTest : public NumberFormat
{
public:
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
virtual UnicodeString& format( double number,
UnicodeString& toAppendTo,
@@ -79,7 +79,7 @@ public:
NumberFormat::parse(text, result, status);
}
virtual MyNumberFormatTest* clone() const override
- { return NULL; }
+ { return nullptr; }
virtual UnicodeString& format(int32_t,
UnicodeString& foo,
@@ -247,11 +247,11 @@ inline UnicodeString str(const char *input)
* NumberFormat.equals comparing with null should always return false.
*/
// {sfb} kind of silly in C++, just checking for new success
-void NumberFormatRegressionTest::Test4075713(void)
+void NumberFormatRegressionTest::Test4075713()
{
//try {
MyNumberFormatTest *tmp = new MyNumberFormatTest();
- if(tmp != NULL)
+ if(tmp != nullptr)
logln("NumberFormat.equals passed");
/*} catch (NullPointerException e) {
errln("(new MyNumberFormatTest()).equals(null) throws unexpected exception");
@@ -264,7 +264,7 @@ void NumberFormatRegressionTest::Test4075713(void)
* NumberFormat.equals comparing two obj equal even the setGroupingUsed
* flag is different.
*/
-void NumberFormatRegressionTest::Test4074620(void)
+void NumberFormatRegressionTest::Test4074620()
{
MyNumberFormatTest *nf1 = new MyNumberFormatTest();
@@ -287,7 +287,7 @@ void NumberFormatRegressionTest::Test4074620(void)
* DecimalFormat.format() incorrectly uses maxFractionDigits setting.
*/
-void NumberFormatRegressionTest::Test4088161 (void)
+void NumberFormatRegressionTest::Test4088161()
{
UErrorCode status = U_ZERO_ERROR;
DecimalFormat *df = new DecimalFormat(status);
@@ -317,7 +317,7 @@ void NumberFormatRegressionTest::Test4088161 (void)
* DecimalFormatSymbols should be cloned in the ctor DecimalFormat.
* DecimalFormat(String, DecimalFormatSymbols).
*/
-void NumberFormatRegressionTest::Test4087245 (void)
+void NumberFormatRegressionTest::Test4087245()
{
UErrorCode status = U_ZERO_ERROR;
DecimalFormatSymbols *symbols = new DecimalFormatSymbols(status);
@@ -334,7 +334,7 @@ void NumberFormatRegressionTest::Test4087245 (void)
FieldPosition pos(FieldPosition::DONT_CARE);
logln(UnicodeString("format(") + n + ") = " +
df->format(n, buf1, pos));
- symbols->setSymbol(DecimalFormatSymbols::kDecimalSeparatorSymbol, UnicodeString((UChar)0x70)); // change value of field
+ symbols->setSymbol(DecimalFormatSymbols::kDecimalSeparatorSymbol, UnicodeString((char16_t)0x70)); // change value of field
logln(UnicodeString("format(") + n + ") = " +
df->format(n, buf2, pos));
if(buf1 != buf2)
@@ -347,7 +347,7 @@ void NumberFormatRegressionTest::Test4087245 (void)
/* @bug 4087535
* DecimalFormat.format() incorrectly formats 0.0
*/
-void NumberFormatRegressionTest::Test4087535 (void)
+void NumberFormatRegressionTest::Test4087535()
{
UErrorCode status = U_ZERO_ERROR;
DecimalFormat *df = new DecimalFormat(status);
@@ -375,7 +375,7 @@ void NumberFormatRegressionTest::Test4087535 (void)
* DecimalFormat.format fails when groupingSize is set to 0.
*/
// {sfb} how do I tell if this worked? --> FieldPosition doesn't change ??
-void NumberFormatRegressionTest::Test4088503 (void)
+void NumberFormatRegressionTest::Test4088503()
{
UErrorCode status = U_ZERO_ERROR;
DecimalFormat *df = new DecimalFormat(status);
@@ -399,7 +399,7 @@ void NumberFormatRegressionTest::Test4088503 (void)
/* @bug 4066646
* NumberFormat.getCurrencyInstance is wrong.
*/
-void NumberFormatRegressionTest::Test4066646 (void)
+void NumberFormatRegressionTest::Test4066646()
{
assignFloatValue(2.04f);
assignFloatValue(2.03f);
@@ -439,7 +439,7 @@ NumberFormatRegressionTest::assignFloatValue(float returnfloat)
/* @bug 4059870
* DecimalFormat throws exception when parsing "0"
*/
-void NumberFormatRegressionTest::Test4059870(void)
+void NumberFormatRegressionTest::Test4059870()
{
UErrorCode status = U_ZERO_ERROR;
DecimalFormat *format = new DecimalFormat("00", status);
@@ -462,13 +462,13 @@ void NumberFormatRegressionTest::Test4059870(void)
* comparing with null.
*/
// {sfb} this is silly in C++
-void NumberFormatRegressionTest::Test4083018 (void)
+void NumberFormatRegressionTest::Test4083018()
{
UErrorCode status = U_ZERO_ERROR;
DecimalFormatSymbols *dfs = new DecimalFormatSymbols(status);
failure(status, "new DecimalFormatSymbols", Locale::getUS());
//try {
- if (dfs != NULL)
+ if (dfs != nullptr)
logln("Test Passed!");
else
errln("Test for bug 4083018 failed");
@@ -482,7 +482,7 @@ void NumberFormatRegressionTest::Test4083018 (void)
/* @bug 4071492
* DecimalFormat does not round up correctly.
*/
-void NumberFormatRegressionTest::Test4071492 (void)
+void NumberFormatRegressionTest::Test4071492()
{
double x = 0.00159999;
UErrorCode status = U_ZERO_ERROR;
@@ -507,7 +507,7 @@ void NumberFormatRegressionTest::Test4071492 (void)
* A space as a group separator for localized pattern causes
* wrong format. WorkAround : use non-breaking space.
*/
-void NumberFormatRegressionTest::Test4086575(void)
+void NumberFormatRegressionTest::Test4086575()
{
UErrorCode status = U_ZERO_ERROR;
NumberFormat *nf1 = NumberFormat::createInstance(Locale::getFrance(), status);
@@ -523,7 +523,7 @@ void NumberFormatRegressionTest::Test4086575(void)
// C++ workaround to make sure cast works
DecimalFormat *nf = dynamic_cast<DecimalFormat *>(nf1);
- if(nf == NULL) {
+ if(nf == nullptr) {
errln("NumberFormat::createInstance returned incorrect type.");
return;
}
@@ -548,7 +548,7 @@ void NumberFormatRegressionTest::Test4086575(void)
logln("...applyLocalizedPattern # ###,00;(# ###,00) ");
// nbsp = \u00a0
//nf->applyLocalizedPattern("#\u00a0###,00;(#\u00a0###,00)");
- UChar patChars[] = {
+ char16_t patChars[] = {
0x23, 0x202f, 0x23, 0x23, 0x23, 0x2c, 0x30, 0x30, 0x3b,
0x28, 0x23, 0x202f, 0x23, 0x23, 0x23, 0x2c, 0x30, 0x30, 0x29
};
@@ -560,7 +560,7 @@ void NumberFormatRegressionTest::Test4086575(void)
UnicodeString buffer;
buffer = nf->format((int32_t)1234, buffer, pos);
//if (buffer != UnicodeString("1\u00a0234,00"))
- UChar c[] = {
+ char16_t c[] = {
0x31, 0x202f, 0x32, 0x33, 0x34, 0x2c, 0x30, 0x30
};
UnicodeString cc(c, 8, 8);
@@ -569,7 +569,7 @@ void NumberFormatRegressionTest::Test4086575(void)
buffer.remove();
buffer = nf->format((int32_t)-1234, buffer, pos);
- UChar c1[] = {
+ char16_t c1[] = {
0x28, 0x31, 0x202f, 0x32, 0x33, 0x34, 0x2c, 0x30, 0x30, 0x29
};
UnicodeString cc1(c1, 10, 10);
@@ -587,7 +587,7 @@ void NumberFormatRegressionTest::Test4086575(void)
*/
// {sfb} slightly converted into a round-trip test, since in C++
// there is no Double.toString()
-void NumberFormatRegressionTest::Test4068693(void)
+void NumberFormatRegressionTest::Test4068693()
{
logln("----- Test Application -----");
ParsePosition pos(0);
@@ -620,7 +620,7 @@ void NumberFormatRegressionTest::Test4068693(void)
* object.
*/
// {sfb} doesn't apply in C++
-void NumberFormatRegressionTest::Test4069754(void)
+void NumberFormatRegressionTest::Test4069754()
{
/* try {
myformat it = new myformat();
@@ -645,7 +645,7 @@ void NumberFormatRegressionTest::Test4069754(void)
/* @bug 4087251
* DecimalFormat.applyPattern(String) allows illegal patterns
*/
-void NumberFormatRegressionTest::Test4087251 (void)
+void NumberFormatRegressionTest::Test4087251()
{
UErrorCode status = U_ZERO_ERROR;
DecimalFormat *df = new DecimalFormat(status);
@@ -682,9 +682,9 @@ void NumberFormatRegressionTest::Test4087251 (void)
/* @bug 4090489
* DecimalFormat.format() loses precision
*/
-void NumberFormatRegressionTest::Test4090489 (void)
+void NumberFormatRegressionTest::Test4090489()
{
-// {sfb} sprintf doesn't correctly handle the double, so there is nothing
+// {sfb} snprintf doesn't correctly handle the double, so there is nothing
// that NumberFormat can do. For some reason, it does not format the last 1.
/* UErrorCode status = U_ZERO_ERROR;
@@ -709,7 +709,7 @@ void NumberFormatRegressionTest::Test4090489 (void)
/* @bug 4090504
* DecimalFormat.format() loses precision
*/
-void NumberFormatRegressionTest::Test4090504 (void)
+void NumberFormatRegressionTest::Test4090504()
{
double d = 1;
logln(UnicodeString("d = ") + d);
@@ -740,7 +740,7 @@ void NumberFormatRegressionTest::Test4090504 (void)
/* @bug 4095713
* DecimalFormat.parse(String str, ParsePosition pp) loses precision
*/
-void NumberFormatRegressionTest::Test4095713 (void)
+void NumberFormatRegressionTest::Test4095713()
{
UErrorCode status = U_ZERO_ERROR;
DecimalFormat *df = new DecimalFormat(status);
@@ -767,7 +767,7 @@ void NumberFormatRegressionTest::Test4095713 (void)
* DecimalFormat.parse() fails when multiplier is not set to 1
*/
// {sfb} not sure what to do with this one
-void NumberFormatRegressionTest::Test4092561 (void)
+void NumberFormatRegressionTest::Test4092561()
{
UErrorCode status = U_ZERO_ERROR;
DecimalFormat *df = new DecimalFormat(status);
@@ -778,7 +778,7 @@ void NumberFormatRegressionTest::Test4092561 (void)
}
failure(status, "new DecimalFormat");
- // {sfb} going to cheat here and use sprintf ??
+ // {sfb} going to cheat here and use snprintf ??
/*UnicodeString str = Long.toString(Long.MIN_VALUE);
logln("Long.MIN_VALUE : " + df.parse(str, new ParsePosition(0)).toString());
@@ -793,7 +793,7 @@ void NumberFormatRegressionTest::Test4092561 (void)
/* @bug 4092480
* DecimalFormat: Negative format ignored.
*/
-void NumberFormatRegressionTest::Test4092480 (void)
+void NumberFormatRegressionTest::Test4092480()
{
UErrorCode status = U_ZERO_ERROR;
DecimalFormat *dfFoo = new DecimalFormat(UnicodeString("000"), status);
@@ -847,7 +847,7 @@ void NumberFormatRegressionTest::Test4092480 (void)
* never contain the monetary separator! Decimal separator in pattern is
* interpreted as monetary separator if currency symbol is seen!
*/
-void NumberFormatRegressionTest::Test4087244 (void) {
+void NumberFormatRegressionTest::Test4087244() {
UErrorCode status = U_ZERO_ERROR;
char loc[256] = {0};
@@ -859,7 +859,7 @@ void NumberFormatRegressionTest::Test4087244 (void) {
return;
}
DecimalFormat *df = dynamic_cast<DecimalFormat *>(nf.getAlias());
- if(df == NULL) {
+ if(df == nullptr) {
errln("expected DecimalFormat!");
return;
}
@@ -891,7 +891,7 @@ void NumberFormatRegressionTest::Test4087244 (void) {
/* @bug 4070798
* Number format data rounding errors for locale FR
*/
-void NumberFormatRegressionTest::Test4070798 (void)
+void NumberFormatRegressionTest::Test4070798()
{
NumberFormat *formatter;
UnicodeString tempString;
@@ -901,13 +901,13 @@ void NumberFormatRegressionTest::Test4070798 (void)
String expectedCurrency = "5\u202f789,98\u00a0F";
String expectedPercent = "-578\u202f998%";
*/
- UChar chars1 [] = {
+ char16_t chars1 [] = {
0x2d, 0x35, 0x202f, 0x37, 0x38, 0x39, 0x2c, 0x39, 0x38, 0x38
};
- UChar chars2 [] = {
+ char16_t chars2 [] = {
0x35, 0x202f, 0x37, 0x38, 0x39, 0x2c, 0x39, 0x39, 0x00a0, 0x46
};
- UChar chars3 [] = {
+ char16_t chars3 [] = {
0x2d, 0x35, 0x37, 0x38, 0x202f, 0x39, 0x39, 0x39, 0x00a0, 0x25
};
UnicodeString expectedDefault(chars1, 10, 10);
@@ -969,7 +969,7 @@ void NumberFormatRegressionTest::Test4070798 (void)
/* @bug 4071005
* Data rounding errors for French (Canada) locale
*/
-void NumberFormatRegressionTest::Test4071005 (void)
+void NumberFormatRegressionTest::Test4071005()
{
NumberFormat *formatter;
UnicodeString tempString;
@@ -978,13 +978,13 @@ void NumberFormatRegressionTest::Test4071005 (void)
String expectedCurrency = "5\u00a0789,98\u00a0$";
String expectedPercent = "-578\u00a0998%";
*/
- UChar chars1 [] = {
+ char16_t chars1 [] = {
0x2d, 0x35, 0x00a0, 0x37, 0x38, 0x39, 0x2c, 0x39, 0x38, 0x38
};
- UChar chars2 [] = {
+ char16_t chars2 [] = {
0x35, 0x00a0, 0x37, 0x38, 0x39, 0x2c, 0x39, 0x39, 0x00a0, 0x24
};
- UChar chars3 [] = {
+ char16_t chars3 [] = {
0x2d, 0x35, 0x37, 0x38, 0x00a0, 0x39, 0x39, 0x39, 0x00a0, 0x25
};
UnicodeString expectedDefault(chars1, 10, 10);
@@ -1002,7 +1002,7 @@ void NumberFormatRegressionTest::Test4071005 (void)
if (tempString == expectedDefault) {
logln ("Bug 4071005 default test passed.");
} else {
- errln(UnicodeString("Failed:") +
+ errln(UnicodeString("Failed: fr_CA") +
" Expected " + expectedDefault +
" Received " + tempString );
}
@@ -1016,7 +1016,7 @@ void NumberFormatRegressionTest::Test4071005 (void)
if (tempString == expectedCurrency) {
logln ("Bug 4071005 currency test passed.");
} else {
- errln(UnicodeString("Failed:") +
+ errln(UnicodeString("Failed: fr_CA") +
" Expected " + expectedCurrency +
" Received " + tempString );
}
@@ -1030,7 +1030,7 @@ void NumberFormatRegressionTest::Test4071005 (void)
if (tempString == expectedPercent) {
logln ("Bug 4071005 percentage test passed.");
} else {
- errln(UnicodeString("Failed:") +
+ errln(UnicodeString("Failed: fr_CA") +
" Expected " + expectedPercent +
" Received " + tempString );
}
@@ -1041,7 +1041,7 @@ void NumberFormatRegressionTest::Test4071005 (void)
/* @bug 4071014
* Data rounding errors for German (Germany) locale
*/
-void NumberFormatRegressionTest::Test4071014 (void)
+void NumberFormatRegressionTest::Test4071014()
{
NumberFormat *formatter;
UnicodeString tempString;
@@ -1109,7 +1109,7 @@ void NumberFormatRegressionTest::Test4071014 (void)
/* @bug 4071859
* Data rounding errors for Italian locale number formats
*/
-void NumberFormatRegressionTest::Test4071859 (void)
+void NumberFormatRegressionTest::Test4071859()
{
NumberFormat *formatter;
UnicodeString tempString;
@@ -1174,7 +1174,7 @@ void NumberFormatRegressionTest::Test4071859 (void)
/* @bug 4071859
* Test rounding for nearest even.
*/
-void NumberFormatRegressionTest::Test4093610(void)
+void NumberFormatRegressionTest::Test4093610()
{
UErrorCode status = U_ZERO_ERROR;
DecimalFormat df("#0.#", status);
@@ -1214,7 +1214,7 @@ void NumberFormatRegressionTest::roundingTest(DecimalFormat *df, double x, Unico
/* @bug 4098741
* Tests the setMaximumFractionDigits limit.
*/
-void NumberFormatRegressionTest::Test4098741(void)
+void NumberFormatRegressionTest::Test4098741()
{
//try {
UErrorCode status = U_ZERO_ERROR;
@@ -1238,7 +1238,7 @@ void NumberFormatRegressionTest::Test4098741(void)
* Fix comment : HShih A31 Part1 will not be fixed and javadoc needs to be updated.
* Part2 has been fixed.
*/
-void NumberFormatRegressionTest::Test4074454(void)
+void NumberFormatRegressionTest::Test4074454()
{
//try {
UErrorCode status = U_ZERO_ERROR;
@@ -1283,7 +1283,7 @@ void NumberFormatRegressionTest::Test4074454(void)
* Otherwise, an IllegalArgumentException will be thrown when formatting
* "January 35". See GregorianCalendar class javadoc for more details.
*/
-void NumberFormatRegressionTest::Test4099404(void)
+void NumberFormatRegressionTest::Test4099404()
{
//try {
UErrorCode status = U_ZERO_ERROR;
@@ -1308,7 +1308,7 @@ void NumberFormatRegressionTest::Test4099404(void)
/* @bug 4101481
* DecimalFormat.applyPattern doesn't set minimum integer digits
*/
-void NumberFormatRegressionTest::Test4101481(void)
+void NumberFormatRegressionTest::Test4101481()
{
UErrorCode status = U_ZERO_ERROR;
DecimalFormat *sdf = new DecimalFormat(UnicodeString("#,##0"), status);
@@ -1325,7 +1325,7 @@ void NumberFormatRegressionTest::Test4101481(void)
/* @bug 4052223 (API addition request A27)
* Tests ParsePosition.setErrorPosition() and ParsePosition.getErrorPosition().
*/
-void NumberFormatRegressionTest::Test4052223(void)
+void NumberFormatRegressionTest::Test4052223()
{
//try {
UErrorCode status = U_ZERO_ERROR;
@@ -1348,7 +1348,7 @@ void NumberFormatRegressionTest::Test4052223(void)
/* @bug 4061302
* API tests for API addition request A9.
*/
-void NumberFormatRegressionTest::Test4061302(void)
+void NumberFormatRegressionTest::Test4061302()
{
UErrorCode status = U_ZERO_ERROR;
DecimalFormatSymbols *fmt = new DecimalFormatSymbols(status);
@@ -1370,13 +1370,13 @@ void NumberFormatRegressionTest::Test4061302(void)
logln((UnicodeString)"Before set ==> Currency : " + currency +(UnicodeString)" Intl Currency : " + intlCurrency + (UnicodeString)" Monetary Decimal Separator : " + monDecSeparatorStr);
fmt->setSymbol(DecimalFormatSymbols::kCurrencySymbol, UnicodeString("XYZ"));
fmt->setSymbol(DecimalFormatSymbols::kIntlCurrencySymbol, UnicodeString("ABC"));
- fmt->setSymbol(DecimalFormatSymbols::kMonetarySeparatorSymbol, UnicodeString((UChar)0x002A/*'*'*/));
+ fmt->setSymbol(DecimalFormatSymbols::kMonetarySeparatorSymbol, UnicodeString((char16_t)0x002A/*'*'*/));
currency = fmt->getSymbol(DecimalFormatSymbols::kCurrencySymbol);
intlCurrency = fmt->getSymbol(DecimalFormatSymbols::kIntlCurrencySymbol);
monDecSeparator = fmt->getSymbol(DecimalFormatSymbols::kMonetarySeparatorSymbol);
if (currency != UnicodeString("XYZ") ||
intlCurrency != UnicodeString("ABC") ||
- monDecSeparator != UnicodeString((UChar)0x002A/*'*'*/)) {
+ monDecSeparator != UnicodeString((char16_t)0x002A/*'*'*/)) {
errln("setCurrencySymbols failed.");
}
monDecSeparatorStr.remove();
@@ -1389,7 +1389,7 @@ void NumberFormatRegressionTest::Test4061302(void)
* API tests for API addition request A23. FieldPosition.getBeginIndex and
* FieldPosition.getEndIndex.
*/
-void NumberFormatRegressionTest::Test4062486(void)
+void NumberFormatRegressionTest::Test4062486()
{
UErrorCode status = U_ZERO_ERROR;
DecimalFormat *fmt = new DecimalFormat(UnicodeString("#,##0.00"), status);
@@ -1414,7 +1414,7 @@ void NumberFormatRegressionTest::Test4062486(void)
/* @bug 4108738
* DecimalFormat.parse incorrectly works with a group separator.
*/
-void NumberFormatRegressionTest::Test4108738(void)
+void NumberFormatRegressionTest::Test4108738()
{
UErrorCode status = U_ZERO_ERROR;
DecimalFormatSymbols *syms = new DecimalFormatSymbols(Locale::getUS(), status);
@@ -1455,7 +1455,7 @@ void NumberFormatRegressionTest::Test4108738(void)
/* @bug 4106658
* DecimalFormat.format() incorrectly formats negative doubles.
*/
-void NumberFormatRegressionTest::Test4106658(void)
+void NumberFormatRegressionTest::Test4106658()
{
UErrorCode status = U_ZERO_ERROR;
DecimalFormat *df = new DecimalFormat(status); // Corrected; see 4147706
@@ -1491,7 +1491,7 @@ void NumberFormatRegressionTest::Test4106658(void)
/* @bug 4106662
* DecimalFormat.parse returns 0 if string parameter is incorrect.
*/
-void NumberFormatRegressionTest::Test4106662(void)
+void NumberFormatRegressionTest::Test4106662()
{
UErrorCode status = U_ZERO_ERROR;
DecimalFormat *df = new DecimalFormat(status);
@@ -1525,7 +1525,7 @@ void NumberFormatRegressionTest::Test4106662(void)
/* @bug 4114639 (duplicate of 4106662)
* NumberFormat.parse doesn't return null
*/
-void NumberFormatRegressionTest::Test4114639(void)
+void NumberFormatRegressionTest::Test4114639()
{
UErrorCode status = U_ZERO_ERROR;
NumberFormat *format = NumberFormat::createInstance(status);
@@ -1550,7 +1550,7 @@ void NumberFormatRegressionTest::Test4114639(void)
* a double only MAY only have 52 bits of precision.
* DecimalFormat.format(long n) fails if n * multiplier > MAX_LONG.
*/
-void NumberFormatRegressionTest::Test4106664(void)
+void NumberFormatRegressionTest::Test4106664()
{
UErrorCode status = U_ZERO_ERROR;
DecimalFormat *df = new DecimalFormat(status);
@@ -1575,7 +1575,7 @@ void NumberFormatRegressionTest::Test4106664(void)
df->format(n, temp, pos));
char buf [128];
- sprintf(buf, "%g", bigN);
+ snprintf(buf, sizeof(buf), "%g", bigN);
//logln("expected: " + bigN.toString());
logln(UnicodeString("expected: ") + buf);
@@ -1584,7 +1584,7 @@ void NumberFormatRegressionTest::Test4106664(void)
/* @bug 4106667 (duplicate of 4106658)
* DecimalFormat.format incorrectly formats -0.0.
*/
-void NumberFormatRegressionTest::Test4106667(void)
+void NumberFormatRegressionTest::Test4106667()
{
UErrorCode status = U_ZERO_ERROR;
DecimalFormat *df = new DecimalFormat(status);
@@ -1594,7 +1594,7 @@ void NumberFormatRegressionTest::Test4106667(void)
return;
}
failure(status, "new DecimalFormat");
- UChar foo [] = { 0x002B };
+ char16_t foo [] = { 0x002B };
UnicodeString bar(foo, 1, 1);
volatile double d = 0.0; // volatile to prevent code optimization
UnicodeString temp;
@@ -1624,7 +1624,7 @@ void NumberFormatRegressionTest::Test4106667(void)
# define MAX_INT_DIGITS 128
#endif
-void NumberFormatRegressionTest::Test4110936(void)
+void NumberFormatRegressionTest::Test4110936()
{
UErrorCode status = U_ZERO_ERROR;
NumberFormat *nf = NumberFormat::createInstance(status);
@@ -1650,7 +1650,7 @@ void NumberFormatRegressionTest::Test4110936(void)
* 2) Make sure we get the same results using the generic symbol or a
* hard-coded one.
*/
-void NumberFormatRegressionTest::Test4122840(void)
+void NumberFormatRegressionTest::Test4122840()
{
int32_t count = 0;
const Locale *locales = Locale::getAvailableLocales(count);
@@ -1658,7 +1658,7 @@ void NumberFormatRegressionTest::Test4122840(void)
for (int i = 0; i < count; i++) {
UErrorCode status = U_ZERO_ERROR;
ResourceBundle *rb = new ResourceBundle(
- NULL/*"java.text.resources.LocaleElements"*/,
+ nullptr/*"java.text.resources.LocaleElements"*/,
locales[i], status);
failure(status, "new ResourceBundle");
ResourceBundle numPat = rb->getWithFallback("NumberElements", status);
@@ -1677,7 +1677,7 @@ void NumberFormatRegressionTest::Test4122840(void)
UnicodeString pattern = numPat.getString(status);
failure(status, "rb->getString()");
- UChar fo[] = { 0x00A4 };
+ char16_t fo[] = { 0x00A4 };
UnicodeString foo(fo, 1, 1);
//if (pattern.indexOf("\u00A4") == -1 ) {
@@ -1708,7 +1708,7 @@ void NumberFormatRegressionTest::Test4122840(void)
// pattern. We have to skip locales where the currency symbol
// contains decimal separators, because that confuses things
//
- UChar ba[] = { 0x002E/*'.'*/ };
+ char16_t ba[] = { 0x002E/*'.'*/ };
UnicodeString bar(ba, 1, 1);
if (symbols->getSymbol(DecimalFormatSymbols::kCurrencySymbol).indexOf(bar) == -1) {
@@ -1736,7 +1736,7 @@ void NumberFormatRegressionTest::Test4122840(void)
failure(status, "new DecimalFormat");
// Get the currency (if there is one) so we can set the rounding and fraction
- const UChar *currency = fmt1->getCurrency();
+ const char16_t *currency = fmt1->getCurrency();
if (*currency != 0) {
double rounding = ucurr_getRoundingIncrement(currency, &status);
int32_t frac = ucurr_getDefaultFractionDigits(currency, &status);
@@ -1770,7 +1770,7 @@ void NumberFormatRegressionTest::Test4122840(void)
/* @bug 4125885
* DecimalFormat.format() delivers wrong string.
*/
-void NumberFormatRegressionTest::Test4125885(void)
+void NumberFormatRegressionTest::Test4125885()
{
UErrorCode status = U_ZERO_ERROR;
double rate = 12.34;
@@ -1805,7 +1805,7 @@ void NumberFormatRegressionTest::Test4125885(void)
* @bug 4134034
* DecimalFormat produces extra zeros when formatting numbers.
*/
-void NumberFormatRegressionTest::Test4134034(void)
+void NumberFormatRegressionTest::Test4134034()
{
UErrorCode status = U_ZERO_ERROR;
DecimalFormat *nf = new DecimalFormat("##,###,###.00", status);
@@ -1854,7 +1854,7 @@ void NumberFormatRegressionTest::Test4134034(void)
* Value 1.2 Format #0.0# Result '1.2'
* Value 1.2 Format #0.00 Result '1.20'
*/
-void NumberFormatRegressionTest::Test4134300(void) {
+void NumberFormatRegressionTest::Test4134300() {
UnicodeString DATA [] = {
// Pattern Expected string
UnicodeString("#.00"), UnicodeString("1.20"),
@@ -1888,7 +1888,7 @@ void NumberFormatRegressionTest::Test4134300(void) {
* @bug 4140009
* Empty pattern produces double negative prefix.
*/
-void NumberFormatRegressionTest::Test4140009(void)
+void NumberFormatRegressionTest::Test4140009()
{
UErrorCode status = U_ZERO_ERROR;
LocalPointer<DecimalFormatSymbols> syms(new DecimalFormatSymbols(Locale::getEnglish(), status), status);
@@ -1915,7 +1915,7 @@ void NumberFormatRegressionTest::Test4140009(void)
* BigDecimal numbers get their fractions truncated by NumberFormat.
*/
// {sfb} not pertinent in C++ ??
-void NumberFormatRegressionTest::Test4141750(void) {
+void NumberFormatRegressionTest::Test4141750() {
/*try {
UnicodeString str("12345.67");
BigDecimal bd = new BigDecimal(str);
@@ -1942,13 +1942,13 @@ void NumberFormatRegressionTest::Test4145457() {
return;
}
DecimalFormat *nf = dynamic_cast<DecimalFormat *>(nff);
- if(nf == NULL) {
+ if(nf == nullptr) {
errln("DecimalFormat needed to continue");
return;
}
- DecimalFormatSymbols *sym = (DecimalFormatSymbols*) nf->getDecimalFormatSymbols();
- sym->setSymbol(DecimalFormatSymbols::kDecimalSeparatorSymbol, (UChar)/*'\''*/0x0027);
+ DecimalFormatSymbols *sym = const_cast<DecimalFormatSymbols*>(nf->getDecimalFormatSymbols());
+ sym->setSymbol(DecimalFormatSymbols::kDecimalSeparatorSymbol, (char16_t)/*'\''*/0x0027);
nf->setDecimalFormatSymbols(*sym);
double pi = 3.14159;
@@ -2013,7 +2013,7 @@ void NumberFormatRegressionTest::Test4145457() {
*
* ICU 62: minInt is always at least one, and the getter should reflect that!
*/
-void NumberFormatRegressionTest::Test4147295(void)
+void NumberFormatRegressionTest::Test4147295()
{
UErrorCode status = U_ZERO_ERROR;
DecimalFormat *sdf = new DecimalFormat(status);
@@ -2040,7 +2040,7 @@ void NumberFormatRegressionTest::Test4147295(void)
* DecimalFormat formats -0.0 as +0.0
* See also older related bug 4106658, 4106667
*/
-void NumberFormatRegressionTest::Test4147706(void)
+void NumberFormatRegressionTest::Test4147706()
{
UErrorCode status = U_ZERO_ERROR;
DecimalFormat *df = new DecimalFormat("#,##0.0##", status);
@@ -2093,9 +2093,9 @@ public String Now()
*/
// TODO: make this test actually test something
void
-NumberFormatRegressionTest::Test4162198(void)
+NumberFormatRegressionTest::Test4162198()
{
- // for some reason, DBL_MAX will not round trip. (bug in sprintf/atof)
+ // for some reason, DBL_MAX will not round trip. (bug in snprintf/atof)
double dbl = INT32_MAX * 1000.0;
UErrorCode status = U_ZERO_ERROR;
NumberFormat *f = NumberFormat::createInstance(status);
@@ -2137,7 +2137,7 @@ NumberFormatRegressionTest::Test4162198(void)
* NumberFormat does not parse negative zero.
*/
void
-NumberFormatRegressionTest::Test4162852(void)
+NumberFormatRegressionTest::Test4162852()
{
UErrorCode status = U_ZERO_ERROR;
for(int32_t i=0; i < 2; ++i) {
@@ -2177,7 +2177,7 @@ static double _u_abs(double a) { return a<0?-a:a; }
* @bug 4167494
* NumberFormat truncates data
*/
-void NumberFormatRegressionTest::Test4167494(void) {
+void NumberFormatRegressionTest::Test4167494() {
UErrorCode status = U_ZERO_ERROR;
NumberFormat *fmt = NumberFormat::createInstance(Locale::getUS(), status);
if (failure(status, "NumberFormat::createInstance", true)){
@@ -2213,7 +2213,7 @@ void NumberFormatRegressionTest::Test4167494(void) {
* @bug 4170798
* DecimalFormat.parse() fails when ParseIntegerOnly set to true
*/
-void NumberFormatRegressionTest::Test4170798(void) {
+void NumberFormatRegressionTest::Test4170798() {
IcuTestErrorCode status(*this, "Test4170798");
LocalPointer<DecimalFormat> df(dynamic_cast<DecimalFormat*>(
NumberFormat::createInstance(Locale::getUS(), status)), status);
@@ -2245,7 +2245,7 @@ void NumberFormatRegressionTest::Test4170798(void) {
* May 17 1999 sync up - liu
* toPattern only puts the first grouping separator in.
*/
-void NumberFormatRegressionTest::Test4176114(void) {
+void NumberFormatRegressionTest::Test4176114() {
const char* DATA[] = {
"00", "00",
"000", "000", // No grouping
@@ -2278,7 +2278,7 @@ void NumberFormatRegressionTest::Test4176114(void) {
* @bug 4179818
* DecimalFormat is incorrectly rounding numbers like 1.2501 to 1.2
*/
-void NumberFormatRegressionTest::Test4179818(void) {
+void NumberFormatRegressionTest::Test4179818() {
const char* DATA[] = {
// Input Pattern Expected output
"1.2511", "#.#", "1.3",
@@ -2322,7 +2322,7 @@ void NumberFormatRegressionTest::Test4179818(void) {
* symbol, percent, and permille. This is filed as bugs 4212072 and
* 4212073.
*/
-void NumberFormatRegressionTest::Test4212072(void) {
+void NumberFormatRegressionTest::Test4212072() {
UErrorCode status = U_ZERO_ERROR;
DecimalFormatSymbols sym(Locale::getUS(), status);
@@ -2335,7 +2335,7 @@ void NumberFormatRegressionTest::Test4212072(void) {
UnicodeString s;
FieldPosition pos;
- sym.setSymbol(DecimalFormatSymbols::kMinusSignSymbol, (UChar)0x5e);
+ sym.setSymbol(DecimalFormatSymbols::kMinusSignSymbol, (char16_t)0x5e);
fmt.setDecimalFormatSymbols(sym);
s.remove();
if (fmt.format((int32_t)-1, s, pos) != UNICODE_STRING("^1", 2)) {
@@ -2343,15 +2343,15 @@ void NumberFormatRegressionTest::Test4212072(void) {
", exp ^1");
}
s.remove();
- if (fmt.getNegativePrefix(s) != UnicodeString((UChar)0x5e)) {
+ if (fmt.getNegativePrefix(s) != UnicodeString((char16_t)0x5e)) {
errln(UnicodeString("FAIL: (minus=^).getNegativePrefix -> ") +
s + ", exp ^");
}
- sym.setSymbol(DecimalFormatSymbols::kMinusSignSymbol, (UChar)0x2d);
+ sym.setSymbol(DecimalFormatSymbols::kMinusSignSymbol, (char16_t)0x2d);
fmt.applyPattern(UnicodeString("#%"), status);
failure(status, "applyPattern percent");
- sym.setSymbol(DecimalFormatSymbols::kPercentSymbol, (UChar)0x5e);
+ sym.setSymbol(DecimalFormatSymbols::kPercentSymbol, (char16_t)0x5e);
fmt.setDecimalFormatSymbols(sym);
s.remove();
if (fmt.format(0.25, s, pos) != UNICODE_STRING("25^", 3)) {
@@ -2359,15 +2359,15 @@ void NumberFormatRegressionTest::Test4212072(void) {
", exp 25^");
}
s.remove();
- if (fmt.getPositiveSuffix(s) != UnicodeString((UChar)0x5e)) {
+ if (fmt.getPositiveSuffix(s) != UnicodeString((char16_t)0x5e)) {
errln(UnicodeString("FAIL: (percent=^).getPositiveSuffix -> ") +
s + ", exp ^");
}
- sym.setSymbol(DecimalFormatSymbols::kPercentSymbol, (UChar)0x25);
+ sym.setSymbol(DecimalFormatSymbols::kPercentSymbol, (char16_t)0x25);
fmt.applyPattern(str("#\\u2030"), status);
failure(status, "applyPattern permill");
- sym.setSymbol(DecimalFormatSymbols::kPerMillSymbol, (UChar)0x5e);
+ sym.setSymbol(DecimalFormatSymbols::kPerMillSymbol, (char16_t)0x5e);
fmt.setDecimalFormatSymbols(sym);
s.remove();
if (fmt.format(0.25, s, pos) != UNICODE_STRING("250^", 4)) {
@@ -2375,11 +2375,11 @@ void NumberFormatRegressionTest::Test4212072(void) {
", exp 250^");
}
s.remove();
- if (fmt.getPositiveSuffix(s) != UnicodeString((UChar)0x5e)) {
+ if (fmt.getPositiveSuffix(s) != UnicodeString((char16_t)0x5e)) {
errln(UnicodeString("FAIL: (permill=^).getPositiveSuffix -> ") +
s + ", exp ^");
}
- sym.setSymbol(DecimalFormatSymbols::kPerMillSymbol, (UChar)0x2030);
+ sym.setSymbol(DecimalFormatSymbols::kPerMillSymbol, (char16_t)0x2030);
fmt.applyPattern(str("\\u00A4#.00"), status);
failure(status, "applyPattern currency");
@@ -2443,7 +2443,7 @@ void NumberFormatRegressionTest::Test4212072(void) {
if (U_FAILURE(status)) {
continue;
}
- DecimalFormat *df = (DecimalFormat*) nf;
+ DecimalFormat *df = dynamic_cast<DecimalFormat*>(nf);
// Test toPattern/applyPattern round trip
UnicodeString pat;
@@ -2455,11 +2455,13 @@ void NumberFormatRegressionTest::Test4212072(void) {
UnicodeString("Construct DecimalFormat(") + pat + ")")) {
continue;
}
- if (*df != f2) {
- UnicodeString l, p;
+ UnicodeString f2Pat;
+ f2.toPattern(f2Pat);
+ if (pat != f2Pat) {
+ UnicodeString l;
errln(UnicodeString("FAIL: ") + type[j] + avail[i].getDisplayName(l) +
" -> \"" + pat +
- "\" -> \"" + f2.toPattern(p) + "\"");
+ "\" -> \"" + f2Pat + "\"");
} else {
UnicodeString l, p;
logln(UnicodeString("PASS: ") + type[j] + avail[i].getDisplayName(l) +
@@ -2488,11 +2490,11 @@ void NumberFormatRegressionTest::Test4212072(void) {
continue;
}
- if (*df != f2) {
- UnicodeString l, p;
+ if (pat != f2Pat) {
+ UnicodeString l;
errln(UnicodeString("FAIL: ") + type[j] + avail[i].getDisplayName(l) +
" -> localized \"" + pat +
- "\" -> \"" + f2.toPattern(p) + "\"");
+ "\" -> \"" + f2Pat + "\"");
}
delete nf;
@@ -2507,9 +2509,9 @@ void NumberFormatRegressionTest::Test4212072(void) {
* May 17 1999 sync up - liu
* DecimalFormat.parse() fails for mulipliers 2^n.
*/
-void NumberFormatRegressionTest::Test4216742(void) {
+void NumberFormatRegressionTest::Test4216742() {
UErrorCode status = U_ZERO_ERROR;
- DecimalFormat *fmt = (DecimalFormat*) NumberFormat::createInstance(Locale::getUS(), status);
+ DecimalFormat *fmt = dynamic_cast<DecimalFormat*>(NumberFormat::createInstance(Locale::getUS(), status));
if (failure(status, "createInstance", Locale::getUS(), true)){
delete fmt;
return;
@@ -2546,7 +2548,7 @@ void NumberFormatRegressionTest::Test4216742(void) {
* DecimalFormat formats 1.001 to "1.00" instead of "1" with 2 fraction
* digits.
*/
-void NumberFormatRegressionTest::Test4217661(void) {
+void NumberFormatRegressionTest::Test4217661() {
const double D[] = { 0.001, 1.001, 0.006, 1.006 };
const char* S[] = { "0", "1", "0.01", "1.01" };
int D_length = UPRV_LENGTHOF(D);
@@ -2570,7 +2572,7 @@ void NumberFormatRegressionTest::Test4217661(void) {
/**
* alphaWorks upgrade
*/
-void NumberFormatRegressionTest::Test4161100(void) {
+void NumberFormatRegressionTest::Test4161100() {
UErrorCode status = U_ZERO_ERROR;
NumberFormat *nf = NumberFormat::createInstance(Locale::getUS(), status);
if (failure(status, "createInstance", Locale::getUS(), true)){
@@ -2584,7 +2586,7 @@ void NumberFormatRegressionTest::Test4161100(void) {
nf->format(a, s);
UnicodeString pat;
logln(UnicodeString() + a + " x " +
- ((DecimalFormat*) nf)->toPattern(pat) + " = " + s);
+ (dynamic_cast<DecimalFormat*>(nf))->toPattern(pat) + " = " + s);
if (s != UnicodeString("-0.1")) {
errln("FAIL");
}
@@ -2595,7 +2597,7 @@ void NumberFormatRegressionTest::Test4161100(void) {
* June 16 1999 sync up - liu
* Formatting .5 rounds to "1" instead of "0". (Regression in 1.2.2 RC1)
*/
-void NumberFormatRegressionTest::Test4243011(void) {
+void NumberFormatRegressionTest::Test4243011() {
UErrorCode status = U_ZERO_ERROR;
DecimalFormatSymbols sym(Locale::getUS(), status);
failure(status, "DecimalFormatSymbols ct", Locale::getUS());
@@ -2626,7 +2628,7 @@ void NumberFormatRegressionTest::Test4243011(void) {
* format(0.0) gives "0.1" if preceded by parse("99.99").
* (Regression in 1.2.2 RC1)
*/
-void NumberFormatRegressionTest::Test4243108(void) {
+void NumberFormatRegressionTest::Test4243108() {
UErrorCode status = U_ZERO_ERROR;
DecimalFormatSymbols sym(Locale::getUS(), status);
failure(status, "DecimalFormatSymbols ct", Locale::getUS());
@@ -2674,7 +2676,7 @@ void NumberFormatRegressionTest::Test4243108(void) {
* DateFormat should call setIntegerParseOnly(true) on adopted
* NumberFormat objects.
*/
-void NumberFormatRegressionTest::TestJ691(void) {
+void NumberFormatRegressionTest::TestJ691() {
UErrorCode status = U_ZERO_ERROR;
Locale loc("fr", "CH");
@@ -2747,7 +2749,7 @@ void NumberFormatRegressionTest::TestJ691(void) {
} UPRV_BLOCK_MACRO_END
#define TEST_ASSERT_EQUALS(x,y) UPRV_BLOCK_MACRO_BEGIN { \
char _msg[1000]; \
- int32_t len = sprintf (_msg,"File %s, line %d: " #x "==" #y, __FILE__, __LINE__); \
+ int32_t len = snprintf (_msg, sizeof(_msg), "File %s, line %d: " #x "==" #y, __FILE__, __LINE__); \
(void)len; \
U_ASSERT(len < (int32_t) sizeof(_msg)); \
assertEquals((const char*) _msg, x,y); \
@@ -2756,10 +2758,10 @@ void NumberFormatRegressionTest::TestJ691(void) {
// Ticket 8199: Parse failure for numbers in the range of 1E10 - 1E18
-void NumberFormatRegressionTest::Test8199(void) {
+void NumberFormatRegressionTest::Test8199() {
UErrorCode status = U_ZERO_ERROR;
NumberFormat *nf = NumberFormat::createInstance(Locale::getEnglish(), status);
- if (nf == NULL) {
+ if (nf == nullptr) {
dataerrln("Fail: NumberFormat::createInstance(Locale::getEnglish(), status)");
return;
}
@@ -2876,7 +2878,7 @@ void NumberFormatRegressionTest::Test8199(void) {
delete nf;
}
-void NumberFormatRegressionTest::Test9109(void) {
+void NumberFormatRegressionTest::Test9109() {
UErrorCode status = U_ZERO_ERROR;
Formattable val;
ParsePosition pos;
@@ -2902,7 +2904,7 @@ void NumberFormatRegressionTest::Test9109(void) {
}
-void NumberFormatRegressionTest::Test9780(void) {
+void NumberFormatRegressionTest::Test9780() {
UErrorCode status = U_ZERO_ERROR;
NumberFormat *nf = NumberFormat::createInstance(Locale::getUS(), status);
if (failure(status, "NumberFormat::createInstance", true)){
@@ -2910,7 +2912,7 @@ void NumberFormatRegressionTest::Test9780(void) {
return;
}
DecimalFormat *df = dynamic_cast<DecimalFormat *>(nf);
- if(df == NULL) {
+ if(df == nullptr) {
errln("DecimalFormat needed to continue");
return;
}
@@ -2942,28 +2944,28 @@ void NumberFormatRegressionTest::Test9780(void) {
}
-void NumberFormatRegressionTest::Test9677(void) {
- static const UChar pattern[] = { 0x23,0x23,0x23,0x23,0x2E,0x23,0x23,0x23,0x23,0 }; // "####.####"
- static const UChar positivePrefix[] = { 0x40,0 }; // "@"
- static const UChar negativePrefix[] = { 0x6E,0 }; // "n"
- static const UChar text[] = { 0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0 }; // 123456789
- static const UChar text2[] = { 0x6E, 0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0 }; // n123456789
+void NumberFormatRegressionTest::Test9677() {
+ static const char16_t pattern[] = { 0x23,0x23,0x23,0x23,0x2E,0x23,0x23,0x23,0x23,0 }; // "####.####"
+ static const char16_t positivePrefix[] = { 0x40,0 }; // "@"
+ static const char16_t negativePrefix[] = { 0x6E,0 }; // "n"
+ static const char16_t text[] = { 0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0 }; // 123456789
+ static const char16_t text2[] = { 0x6E, 0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0 }; // n123456789
UErrorCode status = U_ZERO_ERROR;
- LocalUNumberFormatPointer f(unum_open(UNUM_DEFAULT, NULL, 0, "en_US", NULL, &status));
+ LocalUNumberFormatPointer f(unum_open(UNUM_DEFAULT, nullptr, 0, "en_US", nullptr, &status));
if (U_FAILURE(status)) {
dataerrln("Failure opening unum_open");
return;
}
if (U_SUCCESS(status)) {
- unum_applyPattern(f.getAlias(), false, pattern, -1, NULL, &status);
+ unum_applyPattern(f.getAlias(), false, pattern, -1, nullptr, &status);
unum_setTextAttribute(f.getAlias(), UNUM_POSITIVE_PREFIX, positivePrefix, -1, &status);
assertSuccess("setting attributes", status);
}
if(U_SUCCESS(status)) {
- int32_t n = unum_parse(f.getAlias(), text, -1, NULL, &status);
+ int32_t n = unum_parse(f.getAlias(), text, -1, nullptr, &status);
logln("unum_parse status %s, result %d\n", u_errorName(status), n);
if(U_FAILURE(status)) {
@@ -2975,13 +2977,13 @@ void NumberFormatRegressionTest::Test9677(void) {
}
if (U_SUCCESS(status)) {
- unum_setTextAttribute(f.getAlias(), UNUM_POSITIVE_PREFIX, NULL, 0, &status);
+ unum_setTextAttribute(f.getAlias(), UNUM_POSITIVE_PREFIX, nullptr, 0, &status);
assertSuccess("setting attributes", status);
logln("removed positive prefix");
}
if(U_SUCCESS(status)) {
- int32_t n = unum_parse(f.getAlias(), text, -1, NULL, &status);
+ int32_t n = unum_parse(f.getAlias(), text, -1, nullptr, &status);
logln("unum_parse status %s, result %d\n", u_errorName(status), n);
if(U_FAILURE(status)) {
@@ -2997,7 +2999,7 @@ void NumberFormatRegressionTest::Test9677(void) {
}
if(U_SUCCESS(status)) {
- int32_t n = unum_parse(f.getAlias(), text2, -1, NULL, &status);
+ int32_t n = unum_parse(f.getAlias(), text2, -1, nullptr, &status);
logln("unum_parse status %s, result %d\n", u_errorName(status), n);
if(U_FAILURE(status)) {
@@ -3015,7 +3017,7 @@ void NumberFormatRegressionTest::Test9677(void) {
}
if(U_SUCCESS(status)) {
- int32_t n = unum_parse(f.getAlias(), text2, -1, NULL, &status);
+ int32_t n = unum_parse(f.getAlias(), text2, -1, nullptr, &status);
logln("unum_parse status %s, result %d\n", u_errorName(status), n);
if(U_FAILURE(status)) {
@@ -3031,7 +3033,7 @@ void NumberFormatRegressionTest::Test9677(void) {
}
}
-void NumberFormatRegressionTest::Test10361(void) {
+void NumberFormatRegressionTest::Test10361() {
// DecimalFormat/NumberFormat were artificially limiting the number of digits,
// preventing formatting of big decimals.
UErrorCode status = U_ZERO_ERROR;
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/numrgts.h b/Build/source/libs/icu/icu-src/source/test/intltest/numrgts.h
index 0c5b574d052..aee9543dca1 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/numrgts.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/numrgts.h
@@ -27,76 +27,76 @@ class NumberFormatRegressionTest: public IntlTest {
void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par ) override;
public:
- void Test4075713(void);
- void Test4074620(void) ;
- void Test4088161 (void);
- void Test4087245 (void);
- void Test4087535 (void);
- void Test4088503 (void);
- void Test4066646 (void);
+ void Test4075713();
+ void Test4074620() ;
+ void Test4088161();
+ void Test4087245();
+ void Test4087535();
+ void Test4088503();
+ void Test4066646();
float assignFloatValue(float returnfloat);
- void Test4059870(void);
- void Test4083018 (void);
- void Test4071492 (void);
- void Test4086575(void);
- void Test4068693(void);
- void Test4069754(void);
- void Test4087251 (void);
- void Test4090489 (void);
- void Test4090504 (void);
- void Test4095713 (void);
- void Test4092561 (void);
- void Test4092480 (void);
- void Test4087244 (void);
- void Test4070798 (void);
- void Test4071005 (void);
- void Test4071014 (void);
- void Test4071859 (void);
- void Test4093610(void);
+ void Test4059870();
+ void Test4083018();
+ void Test4071492();
+ void Test4086575();
+ void Test4068693();
+ void Test4069754();
+ void Test4087251();
+ void Test4090489();
+ void Test4090504();
+ void Test4095713();
+ void Test4092561();
+ void Test4092480();
+ void Test4087244();
+ void Test4070798();
+ void Test4071005();
+ void Test4071014();
+ void Test4071859();
+ void Test4093610();
void roundingTest(DecimalFormat *df, double x, UnicodeString& expected);
- void Test4098741(void);
- void Test4074454(void);
- void Test4099404(void);
- void Test4101481(void);
- void Test4052223(void);
- void Test4061302(void);
- void Test4062486(void);
- void Test4108738(void);
- void Test4106658(void);
- void Test4106662(void);
- void Test4114639(void);
- void Test4106664(void);
- void Test4106667(void);
- void Test4110936(void);
- void Test4122840(void);
- void Test4125885(void);
- void Test4134034(void);
- void Test4134300(void);
- void Test4140009(void);
- void Test4141750(void);
- void Test4145457(void);
- void Test4147295(void);
- void Test4147706(void);
+ void Test4098741();
+ void Test4074454();
+ void Test4099404();
+ void Test4101481();
+ void Test4052223();
+ void Test4061302();
+ void Test4062486();
+ void Test4108738();
+ void Test4106658();
+ void Test4106662();
+ void Test4114639();
+ void Test4106664();
+ void Test4106667();
+ void Test4110936();
+ void Test4122840();
+ void Test4125885();
+ void Test4134034();
+ void Test4134300();
+ void Test4140009();
+ void Test4141750();
+ void Test4145457();
+ void Test4147295();
+ void Test4147706();
- void Test4162198(void);
- void Test4162852(void);
+ void Test4162198();
+ void Test4162852();
- void Test4167494(void);
- void Test4170798(void);
- void Test4176114(void);
- void Test4179818(void);
- void Test4212072(void);
- void Test4216742(void);
- void Test4217661(void);
- void Test4161100(void);
- void Test4243011(void);
- void Test4243108(void);
- void TestJ691(void);
- void Test8199(void);
- void Test9109(void);
- void Test9780(void);
- void Test9677(void);
- void Test10361(void);
+ void Test4167494();
+ void Test4170798();
+ void Test4176114();
+ void Test4179818();
+ void Test4212072();
+ void Test4216742();
+ void Test4217661();
+ void Test4161100();
+ void Test4243011();
+ void Test4243108();
+ void TestJ691();
+ void Test8199();
+ void Test9109();
+ void Test9780();
+ void Test9677();
+ void Test10361();
protected:
UBool failure(UErrorCode status, const UnicodeString& msg, UBool possibleDataError=false);
UBool failure(UErrorCode status, const UnicodeString& msg, const char *l, UBool possibleDataError=false);
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/pluralmaptest.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/pluralmaptest.cpp
index d1d2b5ef2b4..91bdc00f848 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/pluralmaptest.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/pluralmaptest.cpp
@@ -78,8 +78,8 @@ void PluralMapTest::TestToCategory() {
}
void PluralMapTest::TestGetCategoryName() {
- assertTrue("", PluralMapBase::getCategoryName(PluralMapBase::NONE) == NULL);
- assertTrue("", PluralMapBase::getCategoryName(PluralMapBase::CATEGORY_COUNT) == NULL);
+ assertTrue("", PluralMapBase::getCategoryName(PluralMapBase::NONE) == nullptr);
+ assertTrue("", PluralMapBase::getCategoryName(PluralMapBase::CATEGORY_COUNT) == nullptr);
assertEquals("", "other", PluralMapBase::getCategoryName(PluralMapBase::OTHER));
assertEquals("", "zero", PluralMapBase::getCategoryName(PluralMapBase::ZERO));
assertEquals("", "one", PluralMapBase::getCategoryName(PluralMapBase::ONE));
@@ -126,7 +126,7 @@ void PluralMapTest::TestIterate() {
assertEquals("", (int32_t)PluralMapBase::FEW, index);
current = map.next(index);
assertEquals("", (int32_t)PluralMapBase::CATEGORY_COUNT, index);
- assertTrue("", current == NULL);
+ assertTrue("", current == nullptr);
PluralMapForPluralMapTest map2;
index = PluralMapBase::NONE;
@@ -135,7 +135,7 @@ void PluralMapTest::TestIterate() {
assertEquals("", (int32_t)PluralMapBase::OTHER, index);
current = map2.next(index);
assertEquals("", (int32_t)PluralMapBase::CATEGORY_COUNT, index);
- assertTrue("", current == NULL);
+ assertTrue("", current == nullptr);
}
void PluralMapTest::TestEqual() {
@@ -169,7 +169,7 @@ void PluralMapTest::TestCopyAndAssign() {
addVariant(PluralMapBase::FEW, "picklefew", control);
{
PluralMapForPluralMapTest *rhs = new PluralMapForPluralMapTest();
- if (rhs == NULL) {
+ if (rhs == nullptr) {
errln("Memory allocation error.");
return;
}
@@ -182,7 +182,7 @@ void PluralMapTest::TestCopyAndAssign() {
}
{
PluralMapForPluralMapTest *rhs = new PluralMapForPluralMapTest();
- if (rhs == NULL) {
+ if (rhs == nullptr) {
errln("Memory allocation error.");
return;
}
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/plurfmts.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/plurfmts.cpp
index 6124c2f4c5e..0805c301237 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/plurfmts.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/plurfmts.cpp
@@ -82,8 +82,8 @@ void PluralFormatTest::pluralFormatBasicTest(/*char *par*/)
for (int32_t i=0; i< 8; ++i) {
if (U_SUCCESS(status[i])) {
- numberFormatTest(plFmt[i], numFmt, 1, 12, NULL, NULL, false, &message);
- numberFormatTest(plFmt[i], numFmt, 100, 112, NULL, NULL, false, &message);
+ numberFormatTest(plFmt[i], numFmt, 1, 12, nullptr, nullptr, false, &message);
+ numberFormatTest(plFmt[i], numFmt, 100, 112, nullptr, nullptr, false, &message);
}
else {
dataerrln("ERROR: PluralFormat constructor failed!");
@@ -98,7 +98,7 @@ void PluralFormatTest::pluralFormatBasicTest(/*char *par*/)
plFmt[1]= new PluralFormat(locale, status[1]);
if ( U_SUCCESS(status[0]) && U_SUCCESS(status[1]) ) {
*plFmt[1] = *plFmt[0];
- if (plFmt[1]!=NULL) {
+ if (plFmt[1]!=nullptr) {
if ( *plFmt[1] != *plFmt[0] ) {
errln("ERROR: clone plural format test failed!");
}
@@ -113,7 +113,7 @@ void PluralFormatTest::pluralFormatBasicTest(/*char *par*/)
plFmt[0]= new PluralFormat(locale, status[0]);
if ( U_SUCCESS(status[0]) ) {
*plFmt[1] = *plFmt[0];
- if (plFmt[1]!=NULL) {
+ if (plFmt[1]!=nullptr) {
if ( *plFmt[1] != *plFmt[0] ) {
errln("ERROR: assignment operator test failed!");
}
@@ -126,7 +126,7 @@ void PluralFormatTest::pluralFormatBasicTest(/*char *par*/)
if ( U_SUCCESS(status[1]) ) {
plFmt[2] = plFmt[1]->clone();
- if (plFmt[1]!=NULL) {
+ if (plFmt[1]!=nullptr) {
if ( *plFmt[1] != *plFmt[2] ) {
errln("ERROR: clone function test failed!");
}
@@ -240,8 +240,8 @@ void PluralFormatTest::pluralFormatUnitTest(/*char *par*/)
errln("ERROR: PluralFormat failed to apply pattern- "+patternTestData[i]);
continue;
}
- numberFormatTest(&plFmt, numFmt.getAlias(), 1, 10, (UnicodeString *)&patternOddTestResult[i],
- (UnicodeString *)&patternEvenTestResult[i], overwrite[i], &message);
+ numberFormatTest(&plFmt, numFmt.getAlias(), 1, 10, dynamic_cast<UnicodeString *>(&patternOddTestResult[i]),
+ dynamic_cast<UnicodeString *>(&patternEvenTestResult[i]), overwrite[i], &message);
}
// ======= Test set locale
@@ -266,7 +266,7 @@ void PluralFormatTest::pluralFormatUnitTest(/*char *par*/)
if (U_FAILURE(status)) {
dataerrln("ERROR: Could not create NumberFormat instance with English locale ");
}
- numberFormatTest(&pluralFmt, numFmt.getAlias(), 5, 5, NULL, NULL, false, &message);
+ numberFormatTest(&pluralFmt, numFmt.getAlias(), 5, 5, nullptr, nullptr, false, &message);
pluralFmt.applyPattern(UNICODE_STRING_SIMPLE("odd__{odd} other{even}"), status);
if (pluralFmt.format((int32_t)1, status) != UNICODE_STRING_SIMPLE("even")) {
errln("SetLocale should reset rules but did not.");
@@ -535,7 +535,7 @@ PluralFormatTest::pluralFormatLocaleTest(/*char *par*/)
}
void
-PluralFormatTest::pluralFormatExtendedTest(void) {
+PluralFormatTest::pluralFormatExtendedTest() {
const char *targets[] = {
"There are no widgets.",
"There is one widget.",
@@ -558,7 +558,7 @@ PluralFormatTest::pluralFormatExtendedTest(void) {
UErrorCode status = U_ZERO_ERROR;
UnicodeString fmtString(fmt, -1, US_INV);
PluralFormat pf(Locale::getEnglish(), fmtString, status);
- MessageFormat mf(UNICODE_STRING_SIMPLE("{0,plural,").append(fmtString).append((UChar)0x7d /* '}' */),
+ MessageFormat mf(UNICODE_STRING_SIMPLE("{0,plural,").append(fmtString).append((char16_t)0x7d /* '}' */),
Locale::getEnglish(), status);
Formattable args;
FieldPosition ignore;
@@ -599,7 +599,7 @@ PluralFormatTest::pluralFormatExtendedTest(void) {
}
void
-PluralFormatTest::pluralFormatExtendedParseTest(void) {
+PluralFormatTest::pluralFormatExtendedParseTest() {
const char *failures[] = {
"offset:1..0 =0 {Foo}",
"offset:1.0 {Foo}",
@@ -620,7 +620,7 @@ PluralFormatTest::pluralFormatExtendedParseTest(void) {
}
void
-PluralFormatTest::ordinalFormatTest(void) {
+PluralFormatTest::ordinalFormatTest() {
IcuTestErrorCode errorCode(*this, "ordinalFormatTest");
UnicodeString pattern("one{#st file}two{#nd file}few{#rd file}other{#th file}");
PluralFormat pf(Locale::getEnglish(), UPLURAL_TYPE_ORDINAL, pattern, errorCode);
@@ -689,7 +689,7 @@ PluralFormatTest::numberFormatTest(PluralFormat* plFmt,
UnicodeString *message) {
UErrorCode status = U_ZERO_ERROR;
- if ( (plFmt==NULL) || (numFmt==NULL) ) {
+ if ( (plFmt==nullptr) || (numFmt==nullptr) ) {
dataerrln("ERROR: Could not create PluralFormat or NumberFormat - exiting");
return;
}
@@ -699,7 +699,7 @@ PluralFormatTest::numberFormatTest(PluralFormat* plFmt,
numResult.remove();
numResult = numFmt->format(i, numResult);
plResult = plFmt->format(i, status);
- if ((numOddAppendStr!= NULL)&&(numEvenAppendStr!=NULL)) {
+ if ((numOddAppendStr!= nullptr)&&(numEvenAppendStr!=nullptr)) {
if (overwrite) {
if (i&1) {
numResult = *numOddAppendStr;
@@ -721,7 +721,7 @@ PluralFormatTest::numberFormatTest(PluralFormat* plFmt,
assertSuccess(*message + " in numberFormatTest", status);
}
if (numResult!=plResult) {
- if ( message == NULL ) {
+ if ( message == nullptr ) {
errln("ERROR: Unexpected plural format - got:"+plResult+ UnicodeString(" expecting:")+numResult);
}
else {
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/plurfmts.h b/Build/source/libs/icu/icu-src/source/test/intltest/plurfmts.h
index 38c52579cbf..bb2a11a66aa 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/plurfmts.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/plurfmts.h
@@ -22,7 +22,7 @@
* Test basic functionality of various API functions
**/
class PluralFormatTest : public IntlTest {
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
private:
/**
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/plurults.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/plurults.cpp
index bc566e484dc..664b27f4bb7 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/plurults.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/plurults.cpp
@@ -80,7 +80,7 @@ class US {
char *buf;
public:
US(const UnicodeString &us) {
- int32_t bufLen = us.extract((int32_t)0, us.length(), (char *)NULL, (uint32_t)0) + 1;
+ int32_t bufLen = us.extract((int32_t)0, us.length(), (char *)nullptr, (uint32_t)0) + 1;
buf = (char *)uprv_malloc(bufLen);
us.extract(0, us.length(), buf, bufLen); }
const char *cstr() {return buf;}
@@ -158,7 +158,7 @@ void PluralRulesTest::testAPI(/*char *par*/)
// ======= Test clone, assignment operator && == operator.
LocalPointer<PluralRules> dupRule(defRule.clone());
- if (dupRule==NULL) {
+ if (dupRule==nullptr) {
errln("ERROR: clone plural rules test failed!");
return;
} else {
@@ -167,7 +167,7 @@ void PluralRulesTest::testAPI(/*char *par*/)
}
}
*dupRule = *newEnPlural;
- if (dupRule!=NULL) {
+ if (dupRule!=nullptr) {
if ( *dupRule != *newEnPlural ) {
errln("ERROR: clone plural rules test failed!");
}
@@ -334,7 +334,7 @@ UBool testEquality(const PluralRules &test) {
PluralRules* rules[MAX_EQ_COL];
for (int32_t j=0; j<MAX_EQ_COL; ++j) {
- rules[j]=NULL;
+ rules[j]=nullptr;
}
int32_t totalRules=0;
while((totalRules<MAX_EQ_COL) && (testEquRules[i][totalRules].length()>0) ) {
@@ -354,7 +354,7 @@ UBool testEquality(const PluralRules &test) {
}
for (int32_t j=0; j<MAX_EQ_COL; ++j) {
- if (rules[j]!=NULL) {
+ if (rules[j]!=nullptr) {
delete rules[j];
}
}
@@ -425,7 +425,7 @@ void PluralRulesTest::testGetSamples() {
break;
}
const UnicodeString* keyword;
- while (NULL != (keyword = keywords->snext(status))) {
+ while (nullptr != (keyword = keywords->snext(status))) {
int32_t count = rules->getSamples(*keyword, values, UPRV_LENGTHOF(values), status);
if (U_FAILURE(status)) {
errln(UnicodeString(u"getSamples() failed for locale ") +
@@ -489,7 +489,7 @@ void PluralRulesTest::testGetDecimalQuantitySamples() {
break;
}
const UnicodeString* keyword;
- while (NULL != (keyword = keywords->snext(status))) {
+ while (nullptr != (keyword = keywords->snext(status))) {
int32_t count = rules->getSamples(*keyword, values, UPRV_LENGTHOF(values), status);
if (U_FAILURE(status)) {
errln(UnicodeString(u"getSamples() failed for locale ") +
@@ -777,10 +777,10 @@ PluralRulesTest::testGetAllKeywordValues() {
"a: n mod 3 is 0 and n within 0..5", "a: 0,3",
"a: n mod 3 is 0 and n within 0..6", "a: null", // similarly with mod, we don't catch...
"a: n mod 3 is 0 and n in 3..12", "a: 3,6,9,12",
- NULL
+ nullptr
};
- for (int i = 0; data[i] != NULL; i += 2) {
+ for (int i = 0; data[i] != nullptr; i += 2) {
UErrorCode status = U_ZERO_ERROR;
UnicodeString ruleDescription(data[i], -1, US_INV);
const char* result = data[i+1];
@@ -788,7 +788,7 @@ PluralRulesTest::testGetAllKeywordValues() {
logln("[%d] %s", i >> 1, data[i]);
PluralRules *p = PluralRules::createRules(ruleDescription, status);
- if (p == NULL || U_FAILURE(status)) {
+ if (p == nullptr || U_FAILURE(status)) {
errln("file %s, line %d: could not create rules from '%s'\n"
" ErrorCode: %s\n",
__FILE__, __LINE__, data[i], u_errorName(status));
@@ -1157,8 +1157,8 @@ void PluralRulesTest::checkSelect(const LocalPointer<PluralRules> &rules, UError
return;
}
- if (rules == NULL) {
- errln("file %s, line %d: rules pointer is NULL", __FILE__, line);
+ if (rules == nullptr) {
+ errln("file %s, line %d: rules pointer is nullptr", __FILE__, line);
return;
}
@@ -1180,7 +1180,7 @@ void PluralRulesTest::checkSelect(const LocalPointer<PluralRules> &rules, UError
}
double numDbl = dl.toDouble();
const char *decimalPoint = strchr(num, '.');
- int fractionDigitCount = decimalPoint == NULL ? 0 : static_cast<int>((num + strlen(num) - 1) - decimalPoint);
+ int fractionDigitCount = decimalPoint == nullptr ? 0 : static_cast<int>((num + strlen(num) - 1) - decimalPoint);
int fractionDigits = fractionDigitCount == 0 ? 0 : atoi(decimalPoint + 1);
FixedDecimal ni(numDbl, fractionDigitCount, fractionDigits);
@@ -1433,12 +1433,12 @@ void PluralRulesTest::testAvailableLocales() {
StringEnumeration *localesEnum = PluralRules::getAvailableLocales(status);
int localeCount = 0;
for (;;) {
- const char *locale = localesEnum->next(NULL, status);
+ const char *locale = localesEnum->next(nullptr, status);
if (U_FAILURE(status)) {
dataerrln("file %s, line %d: Error status = %s", __FILE__, __LINE__, u_errorName(status));
return;
}
- if (locale == NULL) {
+ if (locale == nullptr) {
break;
}
localeCount++;
@@ -1451,7 +1451,7 @@ void PluralRulesTest::testAvailableLocales() {
// Reset the iterator, verify that we get the same count.
localesEnum->reset(status);
int32_t localeCount2 = 0;
- while (localesEnum->next(NULL, status) != NULL) {
+ while (localesEnum->next(nullptr, status) != nullptr) {
if (U_FAILURE(status)) {
errln("file %s, line %d: Error status = %s", __FILE__, __LINE__, u_errorName(status));
break;
@@ -1467,13 +1467,13 @@ void PluralRulesTest::testAvailableLocales() {
localesEnum->reset(status);
for (;;) {
status = U_ZERO_ERROR;
- const char *localeName = localesEnum->next(NULL, status);
+ const char *localeName = localesEnum->next(nullptr, status);
if (U_FAILURE(status)) {
errln("file %s, line %d: Error status = %s, locale = %s",
__FILE__, __LINE__, u_errorName(status), localeName);
return;
}
- if (localeName == NULL) {
+ if (localeName == nullptr) {
break;
}
Locale locale = Locale::createFromName(localeName);
@@ -1483,7 +1483,7 @@ void PluralRulesTest::testAvailableLocales() {
__FILE__, __LINE__, u_errorName(status), localeName);
continue;
}
- if (pr == NULL) {
+ if (pr == nullptr) {
errln("file %s, line %d: Null plural rules for locale %s", __FILE__, __LINE__, localeName);
continue;
}
@@ -1532,8 +1532,8 @@ void PluralRulesTest::testParseErrors() {
if (U_SUCCESS(status)) {
errln("file %s, line %d, expected failure with \"%s\".", __FILE__, __LINE__, rules);
}
- if (pr != NULL) {
- errln("file %s, line %d, expected NULL. Rules: \"%s\"", __FILE__, __LINE__, rules);
+ if (pr != nullptr) {
+ errln("file %s, line %d, expected nullptr. Rules: \"%s\"", __FILE__, __LINE__, rules);
}
}
return;
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/plurults.h b/Build/source/libs/icu/icu-src/source/test/intltest/plurults.h
index f02a484ccd3..98ea9574bea 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/plurults.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/plurults.h
@@ -22,7 +22,7 @@
* Test basic functionality of various API functions
**/
class PluralRulesTest : public IntlTest {
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
private:
/**
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/pptest.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/pptest.cpp
index a085f1bcbf1..53a7b6b237a 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/pptest.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/pptest.cpp
@@ -185,7 +185,7 @@ void ParsePositionTest::TestFieldPosition_example()
}
DecimalFormat *fmt = dynamic_cast<DecimalFormat *>(nf);
- if(fmt == NULL) {
+ if(fmt == nullptr) {
errln("NumberFormat::createInstance returned unexpected class type");
return;
}
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/pptest.h b/Build/source/libs/icu/icu-src/source/test/intltest/pptest.h
index 6785c2d89ae..396009450fd 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/pptest.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/pptest.h
@@ -24,10 +24,10 @@ class ParsePositionTest: public IntlTest {
void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par ) override;
public:
- void TestParsePosition(void);
- void TestFieldPosition(void);
- void TestFieldPosition_example(void);
- void Test4109023(void);
+ void TestParsePosition();
+ void TestFieldPosition();
+ void TestFieldPosition_example();
+ void Test4109023();
protected:
UBool failure(UErrorCode status, const char* msg, UBool possibleDataError=false);
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/rbbiapts.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/rbbiapts.cpp
index 0c28e80d47b..d6d1a890d49 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/rbbiapts.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/rbbiapts.cpp
@@ -27,7 +27,7 @@
#include "cmemory.h"
#if !UCONFIG_NO_BREAK_ITERATION
#include "unicode/filteredbrk.h"
-#include <stdio.h> // for sprintf
+#include <stdio.h> // for snprintf
#endif
/**
* API Test the RuleBasedBreakIterator class
@@ -50,10 +50,10 @@ void RBBIAPITest::TestCloneEquals()
{
UErrorCode status=U_ZERO_ERROR;
- RuleBasedBreakIterator* bi1 = (RuleBasedBreakIterator*)RuleBasedBreakIterator::createCharacterInstance(Locale::getDefault(), status);
- RuleBasedBreakIterator* biequal = (RuleBasedBreakIterator*)RuleBasedBreakIterator::createCharacterInstance(Locale::getDefault(), status);
- RuleBasedBreakIterator* bi3 = (RuleBasedBreakIterator*)RuleBasedBreakIterator::createCharacterInstance(Locale::getDefault(), status);
- RuleBasedBreakIterator* bi2 = (RuleBasedBreakIterator*)RuleBasedBreakIterator::createWordInstance(Locale::getDefault(), status);
+ RuleBasedBreakIterator* bi1 = dynamic_cast<RuleBasedBreakIterator*>(RuleBasedBreakIterator::createCharacterInstance(Locale::getDefault(), status));
+ RuleBasedBreakIterator* biequal = dynamic_cast<RuleBasedBreakIterator*>(RuleBasedBreakIterator::createCharacterInstance(Locale::getDefault(), status));
+ RuleBasedBreakIterator* bi3 = dynamic_cast<RuleBasedBreakIterator*>(RuleBasedBreakIterator::createCharacterInstance(Locale::getDefault(), status));
+ RuleBasedBreakIterator* bi2 = dynamic_cast<RuleBasedBreakIterator*>(RuleBasedBreakIterator::createWordInstance(Locale::getDefault(), status));
if(U_FAILURE(status)){
errcheckln(status, "Fail : in construction - %s", u_errorName(status));
return;
@@ -88,7 +88,7 @@ void RBBIAPITest::TestCloneEquals()
// source and dest iterator produce the same next() after assignment.
// deleting one doesn't disable the other.
logln("Testing assignment");
- RuleBasedBreakIterator *bix = (RuleBasedBreakIterator *)BreakIterator::createLineInstance(Locale::getDefault(), status);
+ RuleBasedBreakIterator *bix = dynamic_cast<RuleBasedBreakIterator *>(BreakIterator::createLineInstance(Locale::getDefault(), status));
if(U_FAILURE(status)){
errcheckln(status, "Fail : in construction - %s", u_errorName(status));
return;
@@ -190,9 +190,9 @@ void RBBIAPITest::TestgetRules()
UErrorCode status=U_ZERO_ERROR;
LocalPointer<RuleBasedBreakIterator> bi1(
- (RuleBasedBreakIterator*)RuleBasedBreakIterator::createCharacterInstance(Locale::getDefault(), status), status);
+ dynamic_cast<RuleBasedBreakIterator*>(RuleBasedBreakIterator::createCharacterInstance(Locale::getDefault(), status)), status);
LocalPointer<RuleBasedBreakIterator> bi2(
- (RuleBasedBreakIterator*)RuleBasedBreakIterator::createWordInstance(Locale::getDefault(), status), status);
+ dynamic_cast<RuleBasedBreakIterator*>(RuleBasedBreakIterator::createWordInstance(Locale::getDefault(), status)), status);
if(U_FAILURE(status)){
errcheckln(status, "%s:%d, FAIL: in construction - %s", __FILE__, __LINE__, u_errorName(status));
return;
@@ -220,9 +220,9 @@ void RBBIAPITest::TestgetRules()
void RBBIAPITest::TestHashCode()
{
UErrorCode status=U_ZERO_ERROR;
- RuleBasedBreakIterator* bi1 = (RuleBasedBreakIterator*)RuleBasedBreakIterator::createCharacterInstance(Locale::getDefault(), status);
- RuleBasedBreakIterator* bi3 = (RuleBasedBreakIterator*)RuleBasedBreakIterator::createCharacterInstance(Locale::getDefault(), status);
- RuleBasedBreakIterator* bi2 = (RuleBasedBreakIterator*)RuleBasedBreakIterator::createWordInstance(Locale::getDefault(), status);
+ RuleBasedBreakIterator* bi1 = dynamic_cast<RuleBasedBreakIterator*>(RuleBasedBreakIterator::createCharacterInstance(Locale::getDefault(), status));
+ RuleBasedBreakIterator* bi3 = dynamic_cast<RuleBasedBreakIterator*>(RuleBasedBreakIterator::createCharacterInstance(Locale::getDefault(), status));
+ RuleBasedBreakIterator* bi2 = dynamic_cast<RuleBasedBreakIterator*>(RuleBasedBreakIterator::createWordInstance(Locale::getDefault(), status));
if(U_FAILURE(status)){
errcheckln(status, "Fail : in construction - %s", u_errorName(status));
delete bi1;
@@ -262,8 +262,8 @@ void RBBIAPITest::TestGetSetAdoptText()
IcuTestErrorCode status(*this, "TestGetSetAdoptText");
UnicodeString str1="first string.";
UnicodeString str2="Second string.";
- LocalPointer<RuleBasedBreakIterator> charIter1((RuleBasedBreakIterator*)RuleBasedBreakIterator::createCharacterInstance(Locale::getDefault(), status));
- LocalPointer<RuleBasedBreakIterator> wordIter1((RuleBasedBreakIterator*)RuleBasedBreakIterator::createWordInstance(Locale::getDefault(), status));
+ LocalPointer<RuleBasedBreakIterator> charIter1(dynamic_cast<RuleBasedBreakIterator*>(RuleBasedBreakIterator::createCharacterInstance(Locale::getDefault(), status)));
+ LocalPointer<RuleBasedBreakIterator> wordIter1(dynamic_cast<RuleBasedBreakIterator*>(RuleBasedBreakIterator::createWordInstance(Locale::getDefault(), status)));
if(status.isFailure()){
errcheckln(status, "Fail : in construction - %s", status.errorName());
return;
@@ -330,7 +330,7 @@ void RBBIAPITest::TestGetSetAdoptText()
// 012345678901
status.reset();
- LocalUTextPointer ut(utext_openUTF8(NULL, s1, -1, status));
+ LocalUTextPointer ut(utext_openUTF8(nullptr, s1, -1, status));
wordIter1->setText(ut.getAlias(), status);
TEST_ASSERT_SUCCESS(status);
@@ -347,7 +347,7 @@ void RBBIAPITest::TestGetSetAdoptText()
TEST_ASSERT(pos==UBRK_DONE);
status.reset();
- LocalUTextPointer ut2(utext_openUTF8(NULL, s2, -1, status));
+ LocalUTextPointer ut2(utext_openUTF8(nullptr, s2, -1, status));
TEST_ASSERT_SUCCESS(status);
wordIter1->setText(ut2.getAlias(), status);
TEST_ASSERT_SUCCESS(status);
@@ -372,7 +372,7 @@ void RBBIAPITest::TestGetSetAdoptText()
status.reset();
UnicodeString sEmpty;
- LocalUTextPointer gut2(utext_openUnicodeString(NULL, &sEmpty, status));
+ LocalUTextPointer gut2(utext_openUnicodeString(nullptr, &sEmpty, status));
wordIter1->getUText(gut2.getAlias(), status);
TEST_ASSERT_SUCCESS(status);
status.reset();
@@ -385,43 +385,43 @@ void RBBIAPITest::TestIteration()
// Testing for correct operation of the break rules happens elsewhere.
UErrorCode status=U_ZERO_ERROR;
- RuleBasedBreakIterator* bi = (RuleBasedBreakIterator*)RuleBasedBreakIterator::createCharacterInstance(Locale::getDefault(), status);
- if (U_FAILURE(status) || bi == NULL) {
+ RuleBasedBreakIterator* bi = dynamic_cast<RuleBasedBreakIterator*>(RuleBasedBreakIterator::createCharacterInstance(Locale::getDefault(), status));
+ if (U_FAILURE(status) || bi == nullptr) {
errcheckln(status, "Failure creating character break iterator. Status = %s", u_errorName(status));
}
delete bi;
status=U_ZERO_ERROR;
- bi = (RuleBasedBreakIterator*)RuleBasedBreakIterator::createWordInstance(Locale::getDefault(), status);
- if (U_FAILURE(status) || bi == NULL) {
+ bi = dynamic_cast<RuleBasedBreakIterator*>(RuleBasedBreakIterator::createWordInstance(Locale::getDefault(), status));
+ if (U_FAILURE(status) || bi == nullptr) {
errcheckln(status, "Failure creating Word break iterator. Status = %s", u_errorName(status));
}
delete bi;
status=U_ZERO_ERROR;
- bi = (RuleBasedBreakIterator*)RuleBasedBreakIterator::createLineInstance(Locale::getDefault(), status);
- if (U_FAILURE(status) || bi == NULL) {
+ bi = dynamic_cast<RuleBasedBreakIterator*>(RuleBasedBreakIterator::createLineInstance(Locale::getDefault(), status));
+ if (U_FAILURE(status) || bi == nullptr) {
errcheckln(status, "Failure creating Line break iterator. Status = %s", u_errorName(status));
}
delete bi;
status=U_ZERO_ERROR;
- bi = (RuleBasedBreakIterator*)RuleBasedBreakIterator::createSentenceInstance(Locale::getDefault(), status);
- if (U_FAILURE(status) || bi == NULL) {
+ bi = dynamic_cast<RuleBasedBreakIterator*>(RuleBasedBreakIterator::createSentenceInstance(Locale::getDefault(), status));
+ if (U_FAILURE(status) || bi == nullptr) {
errcheckln(status, "Failure creating Sentence break iterator. Status = %s", u_errorName(status));
}
delete bi;
status=U_ZERO_ERROR;
- bi = (RuleBasedBreakIterator*)RuleBasedBreakIterator::createTitleInstance(Locale::getDefault(), status);
- if (U_FAILURE(status) || bi == NULL) {
+ bi = dynamic_cast<RuleBasedBreakIterator*>(RuleBasedBreakIterator::createTitleInstance(Locale::getDefault(), status));
+ if (U_FAILURE(status) || bi == nullptr) {
errcheckln(status, "Failure creating Title break iterator. Status = %s", u_errorName(status));
}
delete bi;
status=U_ZERO_ERROR;
- bi = (RuleBasedBreakIterator*)RuleBasedBreakIterator::createCharacterInstance(Locale::getDefault(), status);
- if (U_FAILURE(status) || bi == NULL) {
+ bi = dynamic_cast<RuleBasedBreakIterator*>(RuleBasedBreakIterator::createCharacterInstance(Locale::getDefault(), status));
+ if (U_FAILURE(status) || bi == nullptr) {
errcheckln(status, "Failure creating character break iterator. Status = %s", u_errorName(status));
return; // Skip the rest of these tests.
}
@@ -651,7 +651,7 @@ void RBBIAPITest::TestQuoteGrouping() {
// Test word break rule status constants.
//
void RBBIAPITest::TestRuleStatus() {
- UChar str[30];
+ char16_t str[30];
//no longer test Han or hiragana breaking here: ruleStatusVec would return nothing
// changed UBRK_WORD_KANA to UBRK_WORD_IDEO
u_unescape("plain word 123.45 \\u30a1\\u30a2 ",
@@ -1030,7 +1030,7 @@ void RBBIAPITest::RoundtripRule(const char *dataFile) {
parseError.offset = 0;
LocalUDataMemoryPointer data(udata_open(U_ICUDATA_BRKITR, "brk", dataFile, &status));
uint32_t length;
- const char *builtSource;
+ UnicodeString builtSource;
const uint8_t *rbbiRules;
const uint8_t *builtRules;
@@ -1040,12 +1040,13 @@ void RBBIAPITest::RoundtripRule(const char *dataFile) {
}
builtRules = (const uint8_t *)udata_getMemory(data.getAlias());
- builtSource = (const char *)(builtRules + ((RBBIDataHeader*)builtRules)->fRuleSource);
+ builtSource = UnicodeString::fromUTF8(
+ (const char *)(builtRules + ((RBBIDataHeader *)builtRules)->fRuleSource));
LocalPointer<RuleBasedBreakIterator> brkItr (new RuleBasedBreakIterator(builtSource, parseError, status));
if (U_FAILURE(status)) {
errln("%s:%d createRuleBasedBreakIterator: ICU Error \"%s\" at line %d, column %d\n",
__FILE__, __LINE__, u_errorName(status), parseError.line, parseError.offset);
- errln(UnicodeString(builtSource));
+ errln(builtSource);
return;
}
rbbiRules = brkItr->getBinaryRules(length);
@@ -1078,8 +1079,8 @@ void RBBIAPITest::TestGetBinaryRules() {
return;
}
RuleBasedBreakIterator *rbbi = dynamic_cast<RuleBasedBreakIterator *>(bi.getAlias());
- if (rbbi == NULL) {
- dataerrln("FAIL: RuleBasedBreakIterator is NULL");
+ if (rbbi == nullptr) {
+ dataerrln("FAIL: RuleBasedBreakIterator is nullptr");
return;
}
@@ -1096,7 +1097,7 @@ void RBBIAPITest::TestGetBinaryRules() {
uint32_t ruleLength;
const uint8_t *binRules = rbbi->getBinaryRules(ruleLength);
TEST_ASSERT(ruleLength > 0);
- TEST_ASSERT(binRules != NULL);
+ TEST_ASSERT(binRules != nullptr);
// Clone the binary rules, and create a break iterator from that.
// The break iterator does not adopt the rules; we must delete when we are finished with the iterator.
@@ -1125,12 +1126,12 @@ void RBBIAPITest::TestRefreshInputText() {
* runs BreakIterator::next() repeatedly, moving the text in the middle of the sequence.
* The right set of boundaries should still be found.
*/
- UChar testStr[] = {0x20, 0x41, 0x20, 0x42, 0x20, 0x43, 0x20, 0x44, 0x0}; /* = " A B C D" */
- UChar movedStr[] = {0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0};
+ char16_t testStr[] = {0x20, 0x41, 0x20, 0x42, 0x20, 0x43, 0x20, 0x44, 0x0}; /* = " A B C D" */
+ char16_t movedStr[] = {0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0};
UErrorCode status = U_ZERO_ERROR;
UText ut1 = UTEXT_INITIALIZER;
UText ut2 = UTEXT_INITIALIZER;
- RuleBasedBreakIterator *bi = (RuleBasedBreakIterator *)BreakIterator::createLineInstance(Locale::getEnglish(), status);
+ RuleBasedBreakIterator *bi = dynamic_cast<RuleBasedBreakIterator *>(BreakIterator::createLineInstance(Locale::getEnglish(), status));
TEST_ASSERT_SUCCESS(status);
utext_openUChars(&ut1, testStr, -1, &status);
@@ -1168,7 +1169,7 @@ void RBBIAPITest::TestRefreshInputText() {
#if !UCONFIG_NO_BREAK_ITERATION && !UCONFIG_NO_FILTERED_BREAK_ITERATION
static void prtbrks(BreakIterator* brk, const UnicodeString &ustr, IntlTest &it) {
- static const UChar PILCROW=0x00B6, CHSTR=0x3010, CHEND=0x3011; // lenticular brackets
+ static const char16_t PILCROW=0x00B6, CHSTR=0x3010, CHEND=0x3011; // lenticular brackets
it.logln(UnicodeString("String:'")+ustr+UnicodeString("'"));
int32_t *pos = new int32_t[ustr.length()];
@@ -1184,22 +1185,22 @@ static void prtbrks(BreakIterator* brk, const UnicodeString &ustr, IntlTest &it)
}
}
UnicodeString out;
- out.append((UChar)CHSTR);
+ out.append((char16_t)CHSTR);
int32_t prev = 0;
for(int32_t i=0;i<posCount;i++) {
int32_t n=pos[i];
out.append(ustr.tempSubString(prev,n-prev));
- out.append((UChar)PILCROW);
+ out.append((char16_t)PILCROW);
prev=n;
}
out.append(ustr.tempSubString(prev,ustr.length()-prev));
- out.append((UChar)CHEND);
+ out.append((char16_t)CHEND);
it.logln(out);
out.remove();
for(int32_t i=0;i<posCount;i++) {
char tmp[100];
- sprintf(tmp,"%d ",pos[i]);
+ snprintf(tmp, sizeof(tmp), "%d ",pos[i]);
out.append(UnicodeString(tmp));
}
it.logln(out);
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/rbbiapts.h b/Build/source/libs/icu/icu-src/source/test/intltest/rbbiapts.h
index 27cacca8fde..d65a2bc5219 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/rbbiapts.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/rbbiapts.h
@@ -29,11 +29,11 @@ class RBBIAPITest: public IntlTest {
public:
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
/**
* Tests Constructor behaviour of RuleBasedBreakIterator
**/
- // void TestConstruction(void);
+ // void TestConstruction();
/**
* Tests clone() and equals() methods of RuleBasedBreakIterator
**/
@@ -53,23 +53,23 @@ public:
/**
* Testing the iteration methods of RuleBasedBreakIterator
**/
- void TestIteration(void);
+ void TestIteration();
- void TestFilteredBreakIteratorBuilder(void);
+ void TestFilteredBreakIteratorBuilder();
/**
* Tests creating RuleBasedBreakIterator from rules strings.
**/
- void TestBuilder(void);
+ void TestBuilder();
- void TestRoundtripRules(void);
+ void TestRoundtripRules();
void RoundtripRule(const char *dataFile);
/**
* Test getting and using binary (compiled) rules.
**/
- void TestGetBinaryRules(void);
+ void TestGetBinaryRules();
/**
* Tests grouping effect of 'single quotes' in rules.
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/rbbimonkeytest.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/rbbimonkeytest.cpp
index c5648442977..cd8436ac30f 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/rbbimonkeytest.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/rbbimonkeytest.cpp
@@ -61,7 +61,7 @@ BreakRules::BreakRules(RBBIMonkeyImpl *monkeyImpl, UErrorCode &status) :
fMonkeyImpl(monkeyImpl), fBreakRules(status), fType(UBRK_COUNT) {
fCharClasses.adoptInstead(uhash_open(uhash_hashUnicodeString,
uhash_compareUnicodeString,
- NULL, // value comparator.
+ nullptr, // value comparator.
&status));
if (U_FAILURE(status)) {
return;
@@ -135,7 +135,7 @@ CharClass *BreakRules::addCharClass(const UnicodeString &name, const UnicodeStri
printf("epandedDef: %s\n", CStr(expandedDef)());
}
- LocalPointer<UnicodeSet> s(new UnicodeSet(expandedDef, USET_IGNORE_SPACE, NULL, status), status);
+ LocalPointer<UnicodeSet> s(new UnicodeSet(expandedDef, USET_IGNORE_SPACE, nullptr, status), status);
if (U_FAILURE(status)) {
IntlTest::gTest->errln("%s:%d: error %s creating UnicodeSet %s\n Expanded set definition: %s",
__FILE__, __LINE__, u_errorName(status), CStr(name)(), CStr(expandedDef)());
@@ -147,7 +147,7 @@ CharClass *BreakRules::addCharClass(const UnicodeString &name, const UnicodeStri
cclass, // Value, owned by hash table.
&status));
- if (previousClass != NULL) {
+ if (previousClass != nullptr) {
// Duplicate class def.
// These are legitimate, they are adjustments of an existing class.
// TODO: will need to keep the old around when we handle tailorings.
@@ -195,11 +195,11 @@ void BreakRules::addRule(const UnicodeString &name, const UnicodeString &definit
// Replace the divide sign (\u00f7) with a regular expression named capture.
// When running the rules, a match that includes this group means we found a break position.
- int32_t dividePos = thisRule->fExpandedRule.indexOf((UChar)0x00f7);
+ int32_t dividePos = thisRule->fExpandedRule.indexOf((char16_t)0x00f7);
if (dividePos >= 0) {
thisRule->fExpandedRule.replace(dividePos, 1, UnicodeString("(?<BreakPosition>)"));
}
- if (thisRule->fExpandedRule.indexOf((UChar)0x00f7) != -1) {
+ if (thisRule->fExpandedRule.indexOf((char16_t)0x00f7) != -1) {
status = U_ILLEGAL_ARGUMENT_ERROR; // TODO: produce a good error message.
}
@@ -207,7 +207,7 @@ void BreakRules::addRule(const UnicodeString &name, const UnicodeString &definit
// Regular expression set expressions don't accept this. Substitute with [^\u0000-\U0010ffff], which
// also matches nothing.
- static const UChar emptySet[] = {(UChar)0x5b, (UChar)0x5d, 0};
+ static const char16_t emptySet[] = {(char16_t)0x5b, (char16_t)0x5d, 0};
int32_t where = 0;
while ((where = thisRule->fExpandedRule.indexOf(emptySet, 2, 0)) >= 0) {
thisRule->fExpandedRule.replace(where, 2, UnicodeString("[^\\u0000-\\U0010ffff]"));
@@ -256,9 +256,9 @@ bool BreakRules::setKeywordParameter(const UnicodeString &keyword, const Unicode
RuleBasedBreakIterator *BreakRules::createICUBreakIterator(UErrorCode &status) {
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
- RuleBasedBreakIterator *bi = NULL;
+ RuleBasedBreakIterator *bi = nullptr;
switch(fType) {
case UBRK_CHARACTER:
bi = dynamic_cast<RuleBasedBreakIterator *>(BreakIterator::createCharacterInstance(fLocale, status));
@@ -291,8 +291,8 @@ void BreakRules::compileRules(UCHARBUF *rules, UErrorCode &status) {
return;
}
int32_t lineLength = 0;
- const UChar *lineBuf = ucbuf_readline(rules, &lineLength, &status);
- if (lineBuf == NULL) {
+ const char16_t *lineBuf = ucbuf_readline(rules, &lineLength, &status);
+ if (lineBuf == nullptr) {
break;
}
UnicodeString line(lineBuf, lineLength);
@@ -345,8 +345,8 @@ void BreakRules::compileRules(UCHARBUF *rules, UErrorCode &status) {
UnicodeSet otherSet((UChar32)0, 0x10ffff);
int32_t pos = UHASH_FIRST;
- const UHashElement *el = NULL;
- while ((el = uhash_nextElement(fCharClasses.getAlias(), &pos)) != NULL) {
+ const UHashElement *el = nullptr;
+ while ((el = uhash_nextElement(fCharClasses.getAlias(), &pos)) != nullptr) {
const UnicodeString *ccName = static_cast<const UnicodeString *>(el->key.pointer);
CharClass *cclass = static_cast<CharClass *>(el->value.pointer);
// printf(" Adding %s\n", CStr(*ccName)());
@@ -383,7 +383,7 @@ const CharClass *BreakRules::getClassForChar(UChar32 c, int32_t *iter) const {
return cc;
}
}
- return NULL;
+ return nullptr;
}
//---------------------------------------------------------------------------------------
@@ -446,14 +446,14 @@ void MonkeyTestData::set(BreakRules *rules, IntlTest::icu_rand &rand, UErrorCode
// Apply reference rules to find the expected breaks.
- fExpectedBreaks.setCharAt(0, (UChar)1); // Force an expected break before the start of the text.
+ fExpectedBreaks.setCharAt(0, (char16_t)1); // Force an expected break before the start of the text.
// ICU always reports a break there.
// The reference rules do not have a means to do so.
int32_t strIdx = 0;
bool initialMatch = true; // True at start of text, and immediately after each boundary,
// for control over rule chaining.
while (strIdx < fString.length()) {
- BreakRule *matchingRule = NULL;
+ BreakRule *matchingRule = nullptr;
UBool hasBreak = false;
int32_t ruleNum = 0;
int32_t matchStart = 0;
@@ -482,7 +482,7 @@ void MonkeyTestData::set(BreakRules *rules, IntlTest::icu_rand &rand, UErrorCode
}
}
}
- if (matchingRule == NULL) {
+ if (matchingRule == nullptr) {
// No reference rule matched. This is an error in the rules that should never happen.
IntlTest::gTest->errln("%s:%d Trouble with monkey test reference rules at position %d. ",
__FILE__, __LINE__, strIdx);
@@ -501,9 +501,9 @@ void MonkeyTestData::set(BreakRules *rules, IntlTest::icu_rand &rand, UErrorCode
// Record which rule matched over the length of the match.
for (int i = matchStart; i < matchEnd; i++) {
if (fRuleForPosition.charAt(i) == 0) {
- fRuleForPosition.setCharAt(i, (UChar)ruleNum);
+ fRuleForPosition.setCharAt(i, (char16_t)ruleNum);
} else {
- f2ndRuleForPos.setCharAt(i, (UChar)ruleNum);
+ f2ndRuleForPos.setCharAt(i, (char16_t)ruleNum);
}
}
@@ -520,7 +520,7 @@ void MonkeyTestData::set(BreakRules *rules, IntlTest::icu_rand &rand, UErrorCode
status = U_INVALID_FORMAT_ERROR;
break;
}
- fExpectedBreaks.setCharAt(breakPos, (UChar)1);
+ fExpectedBreaks.setCharAt(breakPos, (char16_t)1);
// printf("recording break at %d\n", breakPos);
// For the next iteration, pick up applying rules immediately after the break,
// which may differ from end of the match. The matching rule may have included
@@ -556,7 +556,7 @@ void MonkeyTestData::clearActualBreaks() {
// Actual Breaks length is one longer than the data string length, allowing
// for breaks before the first and after the last character in the data.
for (int32_t i=0; i<=fString.length(); i++) {
- fActualBreaks.append((UChar)0);
+ fActualBreaks.append((char16_t)0);
}
}
@@ -908,11 +908,11 @@ void RBBIMonkeyTest::testMonkey() {
const char *tests[] = {"grapheme.txt", "word.txt", "line.txt", "line_cj.txt", "sentence.txt", "line_normal.txt",
"line_normal_cj.txt", "line_loose.txt", "line_loose_cj.txt", "word_POSIX.txt",
- NULL };
+ nullptr };
CharString testNameFromParams;
if (getStringParam("rules", params, testNameFromParams, status)) {
tests[0] = testNameFromParams.data();
- tests[1] = NULL;
+ tests[1] = nullptr;
}
int64_t loopCount = quick? 100 : 5000;
@@ -945,7 +945,7 @@ void RBBIMonkeyTest::testMonkey() {
// Each set of break rules to be tested is run in a separate thread.
// Each thread/set of rules gets a separate RBBIMonkeyImpl object.
int32_t i;
- for (i=0; tests[i] != NULL; ++i) {
+ for (i=0; tests[i] != nullptr; ++i) {
logln("beginning testing of %s", tests[i]);
LocalPointer<RBBIMonkeyImpl> test(new RBBIMonkeyImpl(status));
if (U_FAILURE(status)) {
@@ -984,7 +984,7 @@ UBool RBBIMonkeyTest::getIntParam(UnicodeString name, UnicodeString &params, in
// The param exists. Convert the string to an int.
CharString str;
str.append(CStr(m.group(1, status))(), -1, status);
- val = strtol(str.data(), NULL, 10);
+ val = strtol(str.data(), nullptr, 10);
// Delete this parameter from the params string.
m.reset();
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/rbbimonkeytest.h b/Build/source/libs/icu/icu-src/source/test/intltest/rbbimonkeytest.h
index 1f2609018c9..2dd99065461 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/rbbimonkeytest.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/rbbimonkeytest.h
@@ -56,7 +56,7 @@ class RBBIMonkeyTest: public IntlTest {
RBBIMonkeyTest();
virtual ~RBBIMonkeyTest();
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
void testMonkey();
@@ -116,7 +116,7 @@ class BreakRules: public UObject {
void compileRules(UCHARBUF *rules, UErrorCode &status);
- const CharClass *getClassForChar(UChar32 c, int32_t *iter=NULL) const;
+ const CharClass *getClassForChar(UChar32 c, int32_t *iter=nullptr) const;
RBBIMonkeyImpl *fMonkeyImpl; // Pointer back to the owning MonkeyImpl instance.
@@ -217,7 +217,7 @@ class RBBIMonkeyImpl: public UObject {
RBBIMonkeyImpl *fMonkeyImpl;
public:
RBBIMonkeyThread(RBBIMonkeyImpl *impl) : fMonkeyImpl(impl) {}
- void run() U_OVERRIDE { fMonkeyImpl->runTest(); }
+ void run() override { fMonkeyImpl->runTest(); }
};
private:
void openBreakRules(const char *fileName, UErrorCode &status);
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/rbbitst.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/rbbitst.cpp
index 8272dfd4222..2afe4b3912d 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/rbbitst.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/rbbitst.cpp
@@ -15,6 +15,7 @@
#if !UCONFIG_NO_BREAK_ITERATION
#include <algorithm>
+#include <set>
#include <sstream>
#include <stdio.h>
#include <stdlib.h>
@@ -42,6 +43,7 @@
#include "charstr.h"
#include "cmemory.h"
#include "cstr.h"
+#include "cstring.h"
#include "intltest.h"
#include "lstmbe.h"
#include "rbbitst.h"
@@ -140,6 +142,8 @@ void RBBITest::runIndexedTest( int32_t index, UBool exec, const char* &name, cha
TESTCASE_AUTO(TestLSTMThai);
TESTCASE_AUTO(TestLSTMBurmese);
TESTCASE_AUTO(TestRandomAccess);
+ TESTCASE_AUTO(TestExternalBreakEngineWithFakeTaiLe);
+ TESTCASE_AUTO(TestExternalBreakEngineWithFakeYue);
#if U_ENABLE_TRACING
TESTCASE_AUTO(TestTraceCreateCharacter);
@@ -168,7 +172,7 @@ void RBBITest::runIndexedTest( int32_t index, UBool exec, const char* &name, cha
//--------------------------------------------------------------------------------------
RBBITest::RBBITest() {
- fTestParams = NULL;
+ fTestParams = nullptr;
}
@@ -216,8 +220,8 @@ static void printStringBreaks(UText *tstr, int expected[], int expectedCount) {
static void printStringBreaks(const UnicodeString &ustr, int expected[], int expectedCount) {
UErrorCode status = U_ZERO_ERROR;
- UText *tstr = NULL;
- tstr = utext_openConstUnicodeString(NULL, &ustr, &status);
+ UText *tstr = nullptr;
+ tstr = utext_openConstUnicodeString(nullptr, &ustr, &status);
if (U_FAILURE(status)) {
printf("printStringBreaks, utext_openConstUnicodeString() returns %s\n", u_errorName(status));
return;
@@ -231,12 +235,12 @@ void RBBITest::TestBug3818() {
UErrorCode status = U_ZERO_ERROR;
// Four Thai words...
- static const UChar thaiWordData[] = { 0x0E43,0x0E2B,0x0E0D,0x0E48, 0x0E43,0x0E2B,0x0E0D,0x0E48,
+ static const char16_t thaiWordData[] = { 0x0E43,0x0E2B,0x0E0D,0x0E48, 0x0E43,0x0E2B,0x0E0D,0x0E48,
0x0E43,0x0E2B,0x0E0D,0x0E48, 0x0E43,0x0E2B,0x0E0D,0x0E48, 0 };
UnicodeString thaiStr(thaiWordData);
BreakIterator* bi = BreakIterator::createWordInstance(Locale("th"), status);
- if (U_FAILURE(status) || bi == NULL) {
+ if (U_FAILURE(status) || bi == nullptr) {
errcheckln(status, "Fail at file %s, line %d, status = %s", __FILE__, __LINE__, u_errorName(status));
return;
}
@@ -365,8 +369,8 @@ void RBBITest::TestBug5775() {
return;
}
// Check for status first for better handling of no data errors.
- TEST_ASSERT(bi != NULL);
- if (bi == NULL) {
+ TEST_ASSERT(bi != nullptr);
+ if (bi == nullptr) {
return;
}
@@ -405,11 +409,11 @@ struct TestParams {
CharString utf8String; // UTF-8 form of text to break.
TestParams(UErrorCode &status) : dataToBreak() {
- bi = NULL;
+ bi = nullptr;
expectedBreaks = new UVector32(status);
srcLine = new UVector32(status);
srcCol = new UVector32(status);
- textToBreak = NULL;
+ textToBreak = nullptr;
textMap = new UVector32(status);
}
@@ -438,9 +442,9 @@ static void CharStringAppend(CharString &dest, const UnicodeString &src, UErrorC
return;
}
int32_t utf8Length;
- u_strToUTF8WithSub(NULL, 0, &utf8Length, // Output Buffer, NULL for preflight.
+ u_strToUTF8WithSub(nullptr, 0, &utf8Length, // Output Buffer, nullptr for preflight.
src.getBuffer(), src.length(), // UTF-16 data
- 0xfffd, NULL, // Substitution char, number of subs.
+ 0xfffd, nullptr, // Substitution char, number of subs.
&status);
if (U_FAILURE(status) && status != U_BUFFER_OVERFLOW_ERROR) {
return;
@@ -448,9 +452,9 @@ static void CharStringAppend(CharString &dest, const UnicodeString &src, UErrorC
status = U_ZERO_ERROR;
int32_t capacity;
char *buffer = dest.getAppendBuffer(utf8Length, utf8Length, capacity, status);
- u_strToUTF8WithSub(buffer, utf8Length, NULL,
+ u_strToUTF8WithSub(buffer, utf8Length, nullptr,
src.getBuffer(), src.length(),
- 0xfffd, NULL, &status);
+ 0xfffd, nullptr, &status);
dest.append(buffer, utf8Length, status);
}
@@ -554,7 +558,7 @@ void RBBITest::executeTest(TestParams *t, UErrorCode &status) {
return;
}
- if (t->bi == NULL) {
+ if (t->bi == nullptr) {
return;
}
@@ -751,7 +755,7 @@ void RBBITest::TestExtended() {
testFileName.append("rbbitst.txt", -1, status);
int len;
- UChar *testFile = ReadAndConvertFile(testFileName.data(), len, "UTF-8", status);
+ char16_t *testFile = ReadAndConvertFile(testFileName.data(), len, "UTF-8", status);
if (U_FAILURE(status)) {
errln("%s:%d Error %s opening file rbbitst.txt", __FILE__, __LINE__, u_errorName(status));
return;
@@ -787,7 +791,7 @@ void RBBITest::TestExtended() {
for (charIdx = 0; charIdx < len; ) {
status = U_ZERO_ERROR;
- UChar c = testString.charAt(charIdx);
+ char16_t c = testString.charAt(charIdx);
charIdx++;
if (c == u'\r' && charIdx<len && testString.charAt(charIdx) == u'\n') {
// treat CRLF as a unit
@@ -835,9 +839,28 @@ void RBBITest::TestExtended() {
delete tp.bi;
tp.bi = BreakIterator::createLineInstance(locale, status);
skipTest = false;
+#if UCONFIG_USE_ML_PHRASE_BREAKING
+ if(uprv_strcmp(locale.getName(), "ja@lw=phrase") == 0) {
+ // skip <line> test cases of JP's phrase breaking when ML is enabled.
+ skipTest = true;
+ }
+#endif
charIdx += 5;
break;
}
+ if (testString.compare(charIdx-1, 8, u"<lineML>") == 0) {
+ delete tp.bi;
+ tp.bi = BreakIterator::createLineInstance(locale, status);
+ skipTest = false;
+#if !UCONFIG_USE_ML_PHRASE_BREAKING
+ if(uprv_strcmp(locale.getName(), "ja@lw=phrase") == 0) {
+ // skip <lineML> test cases of JP's phrase breaking when ML is disabled.
+ skipTest = true;
+ }
+#endif
+ charIdx += 7;
+ break;
+ }
if (testString.compare(charIdx-1, 6, u"<sent>") == 0) {
delete tp.bi;
tp.bi = BreakIterator::createSentenceInstance(locale, status);
@@ -1186,28 +1209,28 @@ void RBBITest::TestUnicodeFiles() {
RuleBasedBreakIterator *bi;
UErrorCode status = U_ZERO_ERROR;
- bi = (RuleBasedBreakIterator *)BreakIterator::createCharacterInstance(Locale::getEnglish(), status);
+ bi = dynamic_cast<RuleBasedBreakIterator*>(BreakIterator::createCharacterInstance(Locale::getEnglish(), status));
TEST_ASSERT_SUCCESS(status);
if (U_SUCCESS(status)) {
runUnicodeTestData("GraphemeBreakTest.txt", bi);
}
delete bi;
- bi = (RuleBasedBreakIterator *)BreakIterator::createWordInstance(Locale::getEnglish(), status);
+ bi = dynamic_cast<RuleBasedBreakIterator*>(BreakIterator::createWordInstance(Locale::getEnglish(), status));
TEST_ASSERT_SUCCESS(status);
if (U_SUCCESS(status)) {
runUnicodeTestData("WordBreakTest.txt", bi);
}
delete bi;
- bi = (RuleBasedBreakIterator *)BreakIterator::createSentenceInstance(Locale::getEnglish(), status);
+ bi = dynamic_cast<RuleBasedBreakIterator*>(BreakIterator::createSentenceInstance(Locale::getEnglish(), status));
TEST_ASSERT_SUCCESS(status);
if (U_SUCCESS(status)) {
runUnicodeTestData("SentenceBreakTest.txt", bi);
}
delete bi;
- bi = (RuleBasedBreakIterator *)BreakIterator::createLineInstance(Locale::getEnglish(), status);
+ bi = dynamic_cast<RuleBasedBreakIterator*>(BreakIterator::createLineInstance(Locale::getEnglish(), status));
TEST_ASSERT_SUCCESS(status);
if (U_SUCCESS(status)) {
runUnicodeTestData("LineBreakTest.txt", bi);
@@ -1230,7 +1253,7 @@ UBool RBBITest::testCaseIsKnownIssue(const UnicodeString &testCase, const char *
static struct TestCase {
const char *fTicketNum;
const char *fFileName;
- const UChar *fString;
+ const char16_t *fString;
} badTestCases[] = {
{"10666", "GraphemeBreakTest.txt", u"\u0020\u0020\u0033"}, // Fake example, for illustration.
// The following tests were originally for
@@ -1296,7 +1319,7 @@ void RBBITest::runUnicodeTestData(const char *fileName, RuleBasedBreakIterator *
//
const char *testDataDirectory = IntlTest::getSourceTestData(status);
char testFileName[1000];
- if (testDataDirectory == NULL || strlen(testDataDirectory) >= sizeof(testFileName)) {
+ if (testDataDirectory == nullptr || strlen(testDataDirectory) >= sizeof(testFileName)) {
dataerrln("Can't open test data. Path too long.");
return;
}
@@ -1306,12 +1329,12 @@ void RBBITest::runUnicodeTestData(const char *fileName, RuleBasedBreakIterator *
logln("Opening data file %s\n", fileName);
int len;
- UChar *testFile = ReadAndConvertFile(testFileName, len, "UTF-8", status);
+ char16_t *testFile = ReadAndConvertFile(testFileName, len, "UTF-8", status);
if (status != U_FILE_ACCESS_ERROR) {
TEST_ASSERT_SUCCESS(status);
- TEST_ASSERT(testFile != NULL);
+ TEST_ASSERT(testFile != nullptr);
}
- if (U_FAILURE(status) || testFile == NULL) {
+ if (U_FAILURE(status) || testFile == nullptr) {
return; /* something went wrong, error already output */
}
UnicodeString testFileAsString(true, testFile, len);
@@ -1365,7 +1388,7 @@ void RBBITest::runUnicodeTestData(const char *fileName, RuleBasedBreakIterator *
if (length<=8) {
char buf[10];
hexNumber.extract (0, length, buf, sizeof(buf), US_INV);
- UChar32 c = (UChar32)strtol(buf, NULL, 16);
+ UChar32 c = (UChar32)strtol(buf, nullptr, 16);
if (c<=0x10ffff) {
testString.append(c);
} else {
@@ -1433,21 +1456,29 @@ void RBBITest::checkUnicodeTestCase(const char *testFileName, int lineNumber,
pos = bi->first();
pos = bi->next();
+ bool error = false;
+ std::set<int32_t> actualBreaks;
+ std::set<int32_t> expectedBreaks;
while (pos != BreakIterator::DONE) {
+ actualBreaks.insert(pos);
if (expectedI >= breakPositions->size()) {
errln("Test file \"%s\", line %d, unexpected break found at position %d",
testFileName, lineNumber, pos);
+ error = true;
break;
}
expectedPos = breakPositions->elementAti(expectedI);
+ expectedBreaks.insert(expectedPos);
if (pos < expectedPos) {
- errln("Test file \"%s\", line %d, unexpected break found at position %d",
- testFileName, lineNumber, pos);
+ errln("Test file \"%s\", line %d, unexpected break found at position %d", testFileName,
+ lineNumber, pos);
+ error = true;
break;
}
if (pos > expectedPos) {
errln("Test file \"%s\", line %d, failed to find expected break at position %d",
- testFileName, lineNumber, expectedPos);
+ testFileName, lineNumber, expectedPos);
+ error = true;
break;
}
pos = bi->next();
@@ -1455,8 +1486,32 @@ void RBBITest::checkUnicodeTestCase(const char *testFileName, int lineNumber,
}
if (pos==BreakIterator::DONE && expectedI<breakPositions->size()) {
- errln("Test file \"%s\", line %d, failed to find expected break at position %d",
- testFileName, lineNumber, breakPositions->elementAti(expectedI));
+ errln("Test file \"%s\", line %d, failed to find expected break at position %d", testFileName,
+ lineNumber, breakPositions->elementAti(expectedI));
+ error = true;
+ }
+
+ if (error) {
+ for (; pos != BreakIterator::DONE; pos = bi->next()) {
+ actualBreaks.insert(pos);
+ }
+ for (; expectedI < breakPositions->size(); ++expectedI) {
+ expectedBreaks.insert(breakPositions->elementAti(expectedI));
+ }
+ UnicodeString expected;
+ UnicodeString actual;
+ for (int32_t i = 0; i < testString.length();) {
+ const UChar32 c = testString.char32At(i);
+ i += U16_LENGTH(c);
+ expected += expectedBreaks.count(i) == 1 ? u"÷" : u"×";
+ actual += actualBreaks.count(i) == 1 ? u"÷" : u"×";
+ expected += c;
+ actual += c;
+ }
+ expected += expectedBreaks.count(testString.length()) == 1 ? u"÷" : u"×";
+ actual += actualBreaks.count(testString.length()) == 1 ? u"÷" : u"×";
+ errln("Expected : " + expected);
+ errln("Actual : " + actual);
}
}
@@ -1542,7 +1597,7 @@ std::string RBBIMonkeyKind::getAppliedRule(int32_t position){
std::string RBBIMonkeyKind::classNameFromCodepoint(const UChar32 c) {
// Simply iterate through charClasses to find character's class
for (int aClassNum = 0; aClassNum < charClasses()->size(); aClassNum++) {
- UnicodeSet *classSet = (UnicodeSet *)charClasses()->elementAt(aClassNum);
+ UnicodeSet *classSet = static_cast<UnicodeSet *>(charClasses()->elementAt(aClassNum));
if (classSet->contains(c)) {
return classNames[aClassNum];
}
@@ -1621,7 +1676,7 @@ private:
RBBICharMonkey::RBBICharMonkey() {
UErrorCode status = U_ZERO_ERROR;
- fText = NULL;
+ fText = nullptr;
fCRLFSet = new UnicodeSet(UNICODE_STRING_SIMPLE("[\\r\\n]"), status);
fControlSet = new UnicodeSet(UNICODE_STRING_SIMPLE("[[\\p{Grapheme_Cluster_Break = Control}]]"), status);
@@ -1803,7 +1858,7 @@ int32_t RBBICharMonkey::next(int32_t prevPos) {
pi = fText->moveIndex32(pi, -1);
}
if (sawVirama && fLinkingConsonantSet->contains(fText->char32At(pi))) {
- setAppliedRule(p2, "GB9.3 LinkingConsonant ExtCccZwj* Virama ExtCccZwj* × LinkingConsonant");
+ setAppliedRule(p2, "GB9.3 LinkingConsonant ExtCccZwj* Virama ExtCccZwj* x LinkingConsonant");
continue;
}
}
@@ -1917,7 +1972,7 @@ RBBIWordMonkey::RBBIWordMonkey()
fKatakanaSet = new UnicodeSet(u"[\\p{Word_Break = Katakana}]", status);
fRegionalIndicatorSet = new UnicodeSet(u"[\\p{Word_Break = Regional_Indicator}]", status);
fHebrew_LetterSet = new UnicodeSet(u"[\\p{Word_Break = Hebrew_Letter}]", status);
- fALetterSet = new UnicodeSet(u"[\\p{Word_Break = ALetter} @]", status);
+ fALetterSet = new UnicodeSet(u"[\\p{Word_Break = ALetter}]", status);
fSingle_QuoteSet = new UnicodeSet(u"[\\p{Word_Break = Single_Quote}]", status);
fDouble_QuoteSet = new UnicodeSet(u"[\\p{Word_Break = Double_Quote}]", status);
fMidNumLetSet = new UnicodeSet(u"[\\p{Word_Break = MidNumLet}]", status);
@@ -2637,6 +2692,13 @@ private:
UnicodeSet *fOP30;
UnicodeSet *fCP30;
UnicodeSet *fExtPictUnassigned;
+ UnicodeSet *fAK;
+ UnicodeSet *fAP;
+ UnicodeSet *fAS;
+ UnicodeSet *fVF;
+ UnicodeSet *fVI;
+ UnicodeSet *fPi;
+ UnicodeSet *fPf;
BreakIterator *fCharBI;
const UnicodeString *fText;
@@ -2645,11 +2707,11 @@ private:
RBBILineMonkey::RBBILineMonkey() :
RBBIMonkeyKind(),
- fSets(NULL),
+ fSets(nullptr),
- fCharBI(NULL),
- fText(NULL),
- fNumberMatcher(NULL)
+ fCharBI(nullptr),
+ fText(nullptr),
+ fNumberMatcher(nullptr)
{
if (U_FAILURE(deferredStatus)) {
@@ -2707,6 +2769,15 @@ RBBILineMonkey::RBBILineMonkey() :
fCP30 = new UnicodeSet(u"[\\p{Line_break=CP}-[\\p{ea=F}\\p{ea=W}\\p{ea=H}]]", status);
fExtPictUnassigned = new UnicodeSet(u"[\\p{Extended_Pictographic}&\\p{Cn}]", status);
+ fAK = new UnicodeSet(uR"([\p{Line_Break=AK}])", status);
+ fAP = new UnicodeSet(uR"([\p{Line_Break=AP}])", status);
+ fAS = new UnicodeSet(uR"([\p{Line_Break=AS}])", status);
+ fVF = new UnicodeSet(uR"([\p{Line_Break=VF}])", status);
+ fVI = new UnicodeSet(uR"([\p{Line_Break=VI}])", status);
+
+ fPi = new UnicodeSet(uR"([\p{Pi}])", status);
+ fPf = new UnicodeSet(uR"([\p{Pf}])", status);
+
if (U_FAILURE(status)) {
deferredStatus = status;
return;
@@ -2766,18 +2837,24 @@ RBBILineMonkey::RBBILineMonkey() :
fSets->addElement(fOP30, status); classNames.push_back("fOP30");
fSets->addElement(fCP30, status); classNames.push_back("fCP30");
fSets->addElement(fExtPictUnassigned, status); classNames.push_back("fExtPictUnassigned");
+ fSets->addElement(fAK, status); classNames.push_back("fAK");
+ fSets->addElement(fAP, status); classNames.push_back("fAP");
+ fSets->addElement(fAS, status); classNames.push_back("fAS");
+ fSets->addElement(fVF, status); classNames.push_back("fVF");
+ fSets->addElement(fVI, status); classNames.push_back("fVI");
- const char *rules =
- "((\\p{Line_Break=PR}|\\p{Line_Break=PO})(\\p{Line_Break=CM}|\\u200d)*)?"
- "((\\p{Line_Break=OP}|\\p{Line_Break=HY})(\\p{Line_Break=CM}|\\u200d)*)?"
- "((\\p{Line_Break=IS})(\\p{Line_Break=CM}|\\u200d)*)?"
- "\\p{Line_Break=NU}(\\p{Line_Break=CM}|\\u200d)*"
- "((\\p{Line_Break=NU}|\\p{Line_Break=IS}|\\p{Line_Break=SY})(\\p{Line_Break=CM}|\\u200d)*)*"
- "((\\p{Line_Break=CL}|\\p{Line_Break=CP})(\\p{Line_Break=CM}|\\u200d)*)?"
- "((\\p{Line_Break=PR}|\\p{Line_Break=PO})(\\p{Line_Break=CM}|\\u200d)*)?";
- fNumberMatcher = new RegexMatcher(
- UnicodeString(rules, -1, US_INV), 0, status);
+ UnicodeString CMx {uR"([[\p{Line_Break=CM}]\u200d])"};
+ UnicodeString rules;
+ rules = rules + u"((\\p{Line_Break=PR}|\\p{Line_Break=PO})(" + CMx + u")*)?"
+ + u"((\\p{Line_Break=OP}|\\p{Line_Break=HY})(" + CMx + u")*)?"
+ + u"((\\p{Line_Break=IS})(" + CMx + u")*)?"
+ + u"\\p{Line_Break=NU}(" + CMx + u")*"
+ + u"((\\p{Line_Break=NU}|\\p{Line_Break=IS}|\\p{Line_Break=SY})(" + CMx + u")*)*"
+ + u"((\\p{Line_Break=CL}|\\p{Line_Break=CP})(" + CMx + u")*)?"
+ + u"((\\p{Line_Break=PR}|\\p{Line_Break=PO})(" + CMx + u")*)?";
+
+ fNumberMatcher = new RegexMatcher(rules, 0, status);
fCharBI = BreakIterator::createCharacterInstance(Locale::getEnglish(), status);
@@ -3069,39 +3146,72 @@ int32_t RBBILineMonkey::next(int32_t startPos) {
continue;
}
-
- if (nextPos < fText->length()) {
- // note: UnicodeString::char32At(length) returns ffff, not distinguishable
- // from a legit ffff character. So test length separately.
- UChar32 nextChar = fText->char32At(nextPos);
- if (fSP->contains(prevChar) && fIS->contains(thisChar) && fNU->contains(nextChar)) {
- setAppliedRule(pos, "LB 14a Break before an IS that begins a number and follows a space");
- break;
+ // Same as LB 14, scan backward for
+ // (sot | BK | CR | LF | NL | OP CM*| QU CM* | GL CM* | SP) [\p{Pi}&QU] CM* SP*.
+ tPos = prevPos;
+ // SP* (with the aforementioned Twist).
+ if (fSP->contains(prevChar)) {
+ while (tPos > 0 && fSP->contains(fText->char32At(tPos))) {
+ tPos = fText->moveIndex32(tPos, -1);
}
}
-
-
- if (fIS->contains(thisChar)) {
- setAppliedRule(pos, "LB 14b Do not break before numeric separators, even after spaces.");
- continue;
+ // CM*.
+ while (tPos > 0 && fCM->contains(fText->char32At(tPos))) {
+ tPos = fText->moveIndex32(tPos, -1);
}
-
-
- if (fOP->contains(thisChar)) {
- // Scan backwards from prevChar to see if it is preceded by QU CM* SP*
- int tPos = prevPos;
- while (tPos>0 && fSP->contains(fText->char32At(tPos))) {
+ // [\p{Pi}&QU].
+ if (fPi->contains(fText->char32At(tPos)) && fQU->contains(fText->char32At(tPos))) {
+ if (tPos == 0) {
+ setAppliedRule(pos, "LB 15a sot [\\p{Pi}&QU] SP* x");
+ continue;
+ } else {
tPos = fText->moveIndex32(tPos, -1);
+ if (fBK->contains(fText->char32At(tPos)) || fCR->contains(fText->char32At(tPos)) ||
+ fLF->contains(fText->char32At(tPos)) || fNL->contains(fText->char32At(tPos)) ||
+ fSP->contains(fText->char32At(tPos)) || fZW->contains(fText->char32At(tPos))) {
+ setAppliedRule(pos, "LB 15a (BK | CR | LF | NL | SP | ZW) [\\p{Pi}&QU] SP* x");
+ continue;
+ }
}
- while (tPos>0 && fCM->contains(fText->char32At(tPos))) {
+ // CM*.
+ while (tPos > 0 && fCM->contains(fText->char32At(tPos))) {
tPos = fText->moveIndex32(tPos, -1);
}
- if (fQU->contains(fText->char32At(tPos))) {
- setAppliedRule(pos, "LB 15 QU SP* x OP");
+ if (fOP->contains(fText->char32At(tPos)) || fQU->contains(fText->char32At(tPos)) ||
+ fGL->contains(fText->char32At(tPos))) {
+ setAppliedRule(pos, "LB 15a (OP | QU | GL) [\\p{Pi}&QU] SP* x");
continue;
}
}
+ if (fPf->contains(thisChar) && fQU->contains(thisChar)) {
+ UChar32 nextChar = fText->char32At(nextPos);
+ if (nextPos == fText->length() || fSP->contains(nextChar) || fGL->contains(nextChar) ||
+ fWJ->contains(nextChar) || fCL->contains(nextChar) || fQU->contains(nextChar) ||
+ fCP->contains(nextChar) || fEX->contains(nextChar) || fIS->contains(nextChar) ||
+ fSY->contains(nextChar) || fBK->contains(nextChar) || fCR->contains(nextChar) ||
+ fLF->contains(nextChar) || fNL->contains(nextChar) || fZW->contains(nextChar)) {
+ setAppliedRule(pos, "LB 15b x [\\p{Pf}&QU] ( SP | GL | WJ | CL | QU | CP | EX | IS | SY "
+ "| BK | CR | LF | NL | ZW | eot)");
+ continue;
+ }
+ }
+
+ if (nextPos < fText->length()) {
+ // note: UnicodeString::char32At(length) returns ffff, not distinguishable
+ // from a legit ffff noncharacter. So test length separately.
+ UChar32 nextChar = fText->char32At(nextPos);
+ if (fSP->contains(prevChar) && fIS->contains(thisChar) && fNU->contains(nextChar)) {
+ setAppliedRule(pos,
+ "LB 15c Break before an IS that begins a number and follows a space");
+ break;
+ }
+ }
+
+ if (fIS->contains(thisChar)) {
+ setAppliedRule(pos, "LB 15d Do not break before numeric separators, even after spaces.");
+ continue;
+ }
// Scan backwards for SP* CM* (CL | CP)
if (fNS->contains(thisChar)) {
@@ -3263,15 +3373,45 @@ int32_t RBBILineMonkey::next(int32_t startPos) {
}
-
if ((fAL->contains(prevChar) || fHL->contains(prevChar)) && (fAL->contains(thisChar) || fHL->contains(thisChar))) {
setAppliedRule(pos, "LB 28 Do not break between alphabetics (\"at\").");
continue;
}
- if (fIS->contains(prevChar) && (fAL->contains(thisChar) || fHL->contains(thisChar))) {
- setAppliedRule(pos, "LB 29 Do not break between numeric punctuation and alphabetics (\"e.g.\").");
- continue;
+ if (fAP->contains(prevChar) &&
+ (fAK->contains(thisChar) || thisChar == U'◌' || fAS->contains(thisChar))) {
+ setAppliedRule(pos, "LB 28a.1 AP x (AK | ◌ | AS)");
+ continue;
+ }
+
+ if ((fAK->contains(prevChar) || prevChar == U'◌' || fAS->contains(prevChar)) &&
+ (fVF->contains(thisChar) || fVI->contains(thisChar))) {
+ setAppliedRule(pos, "LB 28a.2 (AK | ◌ | AS) x (VF | VI)");
+ continue;
+ }
+
+ if ((fAK->contains(prevCharX2) || prevCharX2 == U'◌' || fAS->contains(prevCharX2)) &&
+ fVI->contains(prevChar) &&
+ (fAK->contains(thisChar) || thisChar == U'◌')) {
+ setAppliedRule(pos, "LB 28a.3 (AK | ◌ | AS) VI x (AK | ◌)");
+ continue;
+ }
+
+ if (nextPos < fText->length()) {
+ // note: UnicodeString::char32At(length) returns ffff, not distinguishable
+ // from a legit ffff noncharacter. So test length separately.
+ UChar32 nextChar = fText->char32At(nextPos);
+ if ((fAK->contains(prevChar) || prevChar == U'◌' || fAS->contains(prevChar)) &&
+ (fAK->contains(thisChar) || thisChar == U'◌' || fAS->contains(thisChar)) &&
+ fVF->contains(nextChar)) {
+ setAppliedRule(pos, "LB 28a.4 (AK | ◌ | AS) x (AK | ◌ | AS) VF");
+ continue;
+ }
+ }
+
+ if (fIS->contains(prevChar) && (fAL->contains(thisChar) || fHL->contains(thisChar))) {
+ setAppliedRule(pos, "LB 29 Do not break between numeric punctuation and alphabetics (\"e.g.\").");
+ continue;
}
// (AL | NU) x OP
@@ -3287,7 +3427,7 @@ int32_t RBBILineMonkey::next(int32_t startPos) {
// RI x RI
if (fRI->contains(prevCharX2) && fRI->contains(prevChar) && fRI->contains(thisChar)) {
- setAppliedRule(pos, "LB30a RI RI ÷ RI");
+ setAppliedRule(pos, "LB30a RI RI : RI");
break;
}
if (fRI->contains(prevChar) && fRI->contains(thisChar)) {
@@ -3295,7 +3435,7 @@ int32_t RBBILineMonkey::next(int32_t startPos) {
// Over-write the trailing one (thisChar) to prevent it from forming another pair with a
// following RI. This is a hack.
thisChar = -1;
- setAppliedRule(pos, "LB30a RI RI ÷ RI");
+ setAppliedRule(pos, "LB30a RI RI : RI");
continue;
}
@@ -3306,7 +3446,7 @@ int32_t RBBILineMonkey::next(int32_t startPos) {
}
if (fExtPictUnassigned->contains(prevChar) && fEM->contains(thisChar)) {
- setAppliedRule(pos, "LB30b [\\p{Extended_Pictographic}&\\p{Cn}] × EM");
+ setAppliedRule(pos, "LB30b [\\p{Extended_Pictographic}&\\p{Cn}] x EM");
continue;
}
@@ -3372,6 +3512,13 @@ RBBILineMonkey::~RBBILineMonkey() {
delete fOP30;
delete fCP30;
delete fExtPictUnassigned;
+ delete fAK;
+ delete fAP;
+ delete fAS;
+ delete fVF;
+ delete fVI;
+ delete fPi;
+ delete fPf;
delete fCharBI;
delete fNumberMatcher;
@@ -3409,7 +3556,7 @@ static int32_t getIntParam(UnicodeString name, UnicodeString &params, int32_t d
paramLength = (int32_t)(sizeof(valString)-2);
}
params.extract(m.start(1, status), paramLength, valString, sizeof(valString));
- val = strtol(valString, NULL, 10);
+ val = strtol(valString, nullptr, 10);
// Delete this parameter from the params string.
m.reset();
@@ -3497,7 +3644,7 @@ static void testBreakBoundPreceding(RBBITest *test, UnicodeString ustr,
}
#endif
-void RBBITest::TestWordBreaks(void)
+void RBBITest::TestWordBreaks()
{
#if !UCONFIG_NO_REGULAR_EXPRESSIONS
@@ -3575,7 +3722,7 @@ void RBBITest::TestWordBreaks(void)
#endif
}
-void RBBITest::TestWordBoundary(void)
+void RBBITest::TestWordBoundary()
{
// <data><>\u1d4a\u206e<?>\u0603\U0001d7ff<>\u2019<></data>
Locale locale("en");
@@ -3587,7 +3734,7 @@ void RBBITest::TestWordBoundary(void)
__FILE__, __LINE__, u_errorName(status));
return;
}
- UChar str[50];
+ char16_t str[50];
static const char *strlist[] =
{
"\\u200e\\U000e0072\\u0a4b\\U000e003f\\ufd2b\\u2027\\u002e\\u002e",
@@ -3661,14 +3808,14 @@ void RBBITest::TestWordBoundary(void)
}
}
-void RBBITest::TestLineBreaks(void)
+void RBBITest::TestLineBreaks()
{
#if !UCONFIG_NO_REGULAR_EXPRESSIONS
Locale locale("en");
UErrorCode status = U_ZERO_ERROR;
BreakIterator *bi = BreakIterator::createLineInstance(locale, status);
const int32_t STRSIZE = 50;
- UChar str[STRSIZE];
+ char16_t str[STRSIZE];
static const char *strlist[] =
{
"\\u300f\\ufdfc\\ub798\\u2011\\u2011\\u0020\\u0b43\\u002d\\ubeec\\ufffc",
@@ -3753,13 +3900,13 @@ void RBBITest::TestLineBreaks(void)
#endif
}
-void RBBITest::TestSentBreaks(void)
+void RBBITest::TestSentBreaks()
{
#if !UCONFIG_NO_REGULAR_EXPRESSIONS
Locale locale("en");
UErrorCode status = U_ZERO_ERROR;
BreakIterator *bi = BreakIterator::createSentenceInstance(locale, status);
- UChar str[200];
+ char16_t str[200];
static const char *strlist[] =
{
"Now\ris\nthe\r\ntime\n\rfor\r\r",
@@ -3857,7 +4004,7 @@ void RBBITest::TestMonkey() {
// Each option is stripped out of the option string as it is processed.
// All options have been checked. The option string should have been completely emptied..
char buf[100];
- p.extract(buf, sizeof(buf), NULL, status);
+ p.extract(buf, sizeof(buf), nullptr, status);
buf[sizeof(buf)-1] = 0;
errln("Unrecognized or extra parameter: %s\n", buf);
return;
@@ -3973,8 +4120,8 @@ void RBBITest::RunMonkey(BreakIterator *bi, RBBIMonkeyKind &mk, const char *name
// Verify that the character classes all have at least one member.
for (i=0; i<numCharClasses; i++) {
- UnicodeSet *s = (UnicodeSet *)chClasses->elementAt(i);
- if (s == NULL || s->size() == 0) {
+ UnicodeSet *s = static_cast<UnicodeSet *>(chClasses->elementAt(i));
+ if (s == nullptr || s->size() == 0) {
errln("Character Class #%d is null or of zero size.", i);
return;
}
@@ -4037,7 +4184,7 @@ void RBBITest::RunMonkey(BreakIterator *bi, RBBIMonkeyKind &mk, const char *name
memset(forwardBreaks, 0, sizeof(forwardBreaks));
if (useUText) {
UErrorCode status = U_ZERO_ERROR;
- UText *testUText = utext_openReplaceable(NULL, &testText, &status);
+ UText *testUText = utext_openReplaceable(nullptr, &testText, &status);
// testUText = utext_openUnicodeString(testUText, &testText, &status);
bi->setText(testUText, status);
TEST_ASSERT_SUCCESS(status);
@@ -4122,8 +4269,8 @@ void RBBITest::RunMonkey(BreakIterator *bi, RBBIMonkeyKind &mk, const char *name
// Compare the expected and actual results.
for (i=0; i<=testText.length(); i++) {
- const char *errorType = NULL;
- const char* currentBreakData = NULL;
+ const char *errorType = nullptr;
+ const char* currentBreakData = nullptr;
if (forwardBreaks[i] != expectedBreaks[i]) {
errorType = "next()";
currentBreakData = forwardBreaks;
@@ -4141,7 +4288,7 @@ void RBBITest::RunMonkey(BreakIterator *bi, RBBIMonkeyKind &mk, const char *name
currentBreakData = precedingBreaks;
}
- if (errorType != NULL) {
+ if (errorType != nullptr) {
// 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.
@@ -4186,7 +4333,7 @@ void RBBITest::RunMonkey(BreakIterator *bi, RBBIMonkeyKind &mk, const char *name
"Break found but not expected"),
name, i, seed);
- for (ci=startContext; (ci = testText.moveIndex32(ci, 1));) {
+ for (ci = startContext;; (ci = testText.moveIndex32(ci, 1))) {
UChar32 c;
c = testText.char32At(ci);
@@ -4201,7 +4348,7 @@ void RBBITest::RunMonkey(BreakIterator *bi, RBBIMonkeyKind &mk, const char *name
if (c >= 0x10000) {
format = "\\U%08x";
}
- sprintf(hexCodePoint, format.c_str(), c);
+ snprintf(hexCodePoint, sizeof(hexCodePoint), format.c_str(), c);
// Get the class name and character name for the character.
char cName[200];
@@ -4209,7 +4356,7 @@ void RBBITest::RunMonkey(BreakIterator *bi, RBBIMonkeyKind &mk, const char *name
u_charName(c, U_EXTENDED_CHAR_NAME, cName, sizeof(cName), &status);
char buffer[200];
- auto ret = snprintf(buffer, UPRV_LENGTHOF(buffer),
+ auto ret = snprintf(buffer, sizeof(buffer),
"%4s %3i : %1s %1s %10s %-*s %-40s %-40s",
currentLineFlag.c_str(),
ci,
@@ -4246,7 +4393,7 @@ void RBBITest::RunMonkey(BreakIterator *bi, RBBIMonkeyKind &mk, const char *name
// which is to just keep it from crashing. Correct word boundaries
// await a proper fix to the dictionary code.
//
-void RBBITest::TestBug5532(void) {
+void RBBITest::TestBug5532() {
// Text includes a mixture of Thai and Latin.
const unsigned char utf8Data[] = {
0xE0u, 0xB8u, 0x82u, 0xE0u, 0xB8u, 0xB2u, 0xE0u, 0xB8u, 0xA2u, 0xE0u,
@@ -4286,7 +4433,7 @@ void RBBITest::TestBug5532(void) {
}
-void RBBITest::TestBug9983(void) {
+void RBBITest::TestBug9983() {
UnicodeString text = UnicodeString("\\u002A" // * Other
"\\uFF65" // Other
"\\u309C" // Katakana
@@ -4296,10 +4443,10 @@ void RBBITest::TestBug9983(void) {
"\\u0000").unescape();
UErrorCode status = U_ZERO_ERROR;
- LocalPointer<RuleBasedBreakIterator> brkiter(static_cast<RuleBasedBreakIterator *>(
+ LocalPointer<RuleBasedBreakIterator> brkiter(dynamic_cast<RuleBasedBreakIterator *>(
BreakIterator::createWordInstance(Locale::getRoot(), status)));
TEST_ASSERT_SUCCESS(status);
- LocalPointer<RuleBasedBreakIterator> brkiterPOSIX(static_cast<RuleBasedBreakIterator *>(
+ LocalPointer<RuleBasedBreakIterator> brkiterPOSIX(dynamic_cast<RuleBasedBreakIterator *>(
BreakIterator::createWordInstance(Locale::createFromName("en_US_POSIX"), status)));
TEST_ASSERT_SUCCESS(status);
if (U_FAILURE(status)) {
@@ -4370,9 +4517,9 @@ void RBBITest::TestBug12797() {
void RBBITest::TestBug12918() {
// This test triggers an assertion failure in dictbe.cpp
- const UChar *crasherString = u"\u3325\u4a16";
+ const char16_t *crasherString = u"\u3325\u4a16";
UErrorCode status = U_ZERO_ERROR;
- UBreakIterator* iter = ubrk_open(UBRK_WORD, NULL, crasherString, -1, &status);
+ UBreakIterator* iter = ubrk_open(UBRK_WORD, nullptr, crasherString, -1, &status);
if (U_FAILURE(status)) {
dataerrln("%s:%d status = %s", __FILE__, __LINE__, u_errorName(status));
return;
@@ -4425,8 +4572,8 @@ void RBBITest::TestEmoji() {
logln("Opening data file %s\n", testFileName.data());
int len;
- UChar *testFile = ReadAndConvertFile(testFileName.data(), len, "UTF-8", status);
- if (U_FAILURE(status) || testFile == NULL) {
+ char16_t *testFile = ReadAndConvertFile(testFileName.data(), len, "UTF-8", status);
+ if (U_FAILURE(status) || testFile == nullptr) {
errln("%s:%s %s while opening emoji-test.txt", __FILE__, __LINE__, u_errorName(status));
return;
}
@@ -4459,7 +4606,7 @@ void RBBITest::TestEmoji() {
}
CharString hex8;
hex8.appendInvariantChars(hex, status);
- UChar32 c = (UChar32)strtol(hex8.data(), NULL, 16);
+ UChar32 c = (UChar32)strtol(hex8.data(), nullptr, 16);
if (c<=0x10ffff) {
testString.append(c);
} else {
@@ -4501,8 +4648,8 @@ void RBBITest::TestEmoji() {
void RBBITest::TestBug12519() {
UErrorCode status = U_ZERO_ERROR;
- LocalPointer<RuleBasedBreakIterator> biEn((RuleBasedBreakIterator *)BreakIterator::createWordInstance(Locale::getEnglish(), status));
- LocalPointer<RuleBasedBreakIterator> biFr((RuleBasedBreakIterator *)BreakIterator::createWordInstance(Locale::getFrance(), status));
+ LocalPointer<RuleBasedBreakIterator> biEn(dynamic_cast<RuleBasedBreakIterator*>(BreakIterator::createWordInstance(Locale::getEnglish(), status)));
+ LocalPointer<RuleBasedBreakIterator> biFr(dynamic_cast<RuleBasedBreakIterator*>(BreakIterator::createWordInstance(Locale::getFrance(), status)));
if (!assertSuccess(WHERE, status)) {
dataerrln("%s %d status = %s", __FILE__, __LINE__, u_errorName(status));
return;
@@ -4520,7 +4667,7 @@ void RBBITest::TestBug12519() {
assertTrue(WHERE, *biFr == *cloneFr);
assertTrue(WHERE, Locale::getFrench() == cloneFr->getLocale(ULOC_VALID_LOCALE, status));
- LocalPointer<RuleBasedBreakIterator>biDe((RuleBasedBreakIterator *)BreakIterator::createLineInstance(Locale::getGerman(), status));
+ LocalPointer<RuleBasedBreakIterator>biDe(dynamic_cast<RuleBasedBreakIterator*>(BreakIterator::createLineInstance(Locale::getGerman(), status)));
UnicodeString text("Hallo Welt");
biDe->setText(text);
assertTrue(WHERE "before assignment of \"biDe = biFr\", they should be different, but are equal.", *biFr != *biDe);
@@ -4550,7 +4697,7 @@ void RBBITest::TestTableRedundancies() {
UErrorCode status = U_ZERO_ERROR;
LocalPointer<RuleBasedBreakIterator> bi (
- (RuleBasedBreakIterator *)BreakIterator::createLineInstance(Locale::getEnglish(), status));
+ dynamic_cast<RuleBasedBreakIterator*>(BreakIterator::createLineInstance(Locale::getEnglish(), status)));
assertSuccess(WHERE, status);
if (U_FAILURE(status)) return;
@@ -4566,7 +4713,7 @@ void RBBITest::TestTableRedundancies() {
for (int32_t column = 0; column < numCharClasses; column++) {
UnicodeString s;
for (int32_t r = 1; r < (int32_t)fwtbl->fNumStates; r++) {
- RBBIStateTableRow *row = (RBBIStateTableRow *) (fwtbl->fTableData + (fwtbl->fRowLen * r));
+ RBBIStateTableRow *row = reinterpret_cast<RBBIStateTableRow *>(const_cast<char*>(fwtbl->fTableData + (fwtbl->fRowLen * r)));
s.append(in8Bits ? row->r8.fNextState[column] : row->r16.fNextState[column]);
}
columns.push_back(s);
@@ -4587,7 +4734,7 @@ void RBBITest::TestTableRedundancies() {
std::vector<UnicodeString> rows;
for (int32_t r=0; r < (int32_t)fwtbl->fNumStates; r++) {
UnicodeString s;
- RBBIStateTableRow *row = (RBBIStateTableRow *) (fwtbl->fTableData + (fwtbl->fRowLen * r));
+ RBBIStateTableRow *row = reinterpret_cast<RBBIStateTableRow *>(const_cast<char*>((fwtbl->fTableData + (fwtbl->fRowLen * r))));
if (in8Bits) {
s.append(row->r8.fAccepting);
s.append(row->r8.fLookAhead);
@@ -4621,7 +4768,7 @@ void RBBITest::TestTableRedundancies() {
void RBBITest::TestBug13447() {
UErrorCode status = U_ZERO_ERROR;
LocalPointer<RuleBasedBreakIterator> bi(
- (RuleBasedBreakIterator *)BreakIterator::createWordInstance(Locale::getEnglish(), status));
+ dynamic_cast<RuleBasedBreakIterator*>(BreakIterator::createWordInstance(Locale::getEnglish(), status)));
assertSuccess(WHERE, status);
if (U_FAILURE(status)) return;
UnicodeString data(u"1234");
@@ -4645,20 +4792,20 @@ void RBBITest::TestBug13447() {
void RBBITest::TestReverse() {
UErrorCode status = U_ZERO_ERROR;
- TestReverse(std::unique_ptr<RuleBasedBreakIterator>((RuleBasedBreakIterator *)
- BreakIterator::createCharacterInstance(Locale::getEnglish(), status)));
+ TestReverse(std::unique_ptr<RuleBasedBreakIterator>(dynamic_cast<RuleBasedBreakIterator*>(
+ BreakIterator::createCharacterInstance(Locale::getEnglish(), status))));
assertSuccess(WHERE, status, true);
status = U_ZERO_ERROR;
- TestReverse(std::unique_ptr<RuleBasedBreakIterator>((RuleBasedBreakIterator *)
- BreakIterator::createWordInstance(Locale::getEnglish(), status)));
+ TestReverse(std::unique_ptr<RuleBasedBreakIterator>(dynamic_cast<RuleBasedBreakIterator*>(
+ BreakIterator::createWordInstance(Locale::getEnglish(), status))));
assertSuccess(WHERE, status, true);
status = U_ZERO_ERROR;
- TestReverse(std::unique_ptr<RuleBasedBreakIterator>((RuleBasedBreakIterator *)
- BreakIterator::createLineInstance(Locale::getEnglish(), status)));
+ TestReverse(std::unique_ptr<RuleBasedBreakIterator>(dynamic_cast<RuleBasedBreakIterator*>(
+ BreakIterator::createLineInstance(Locale::getEnglish(), status))));
assertSuccess(WHERE, status, true);
status = U_ZERO_ERROR;
- TestReverse(std::unique_ptr<RuleBasedBreakIterator>((RuleBasedBreakIterator *)
- BreakIterator::createSentenceInstance(Locale::getEnglish(), status)));
+ TestReverse(std::unique_ptr<RuleBasedBreakIterator>(dynamic_cast<RuleBasedBreakIterator*>(
+ BreakIterator::createSentenceInstance(Locale::getEnglish(), status))));
assertSuccess(WHERE, status, true);
}
@@ -4723,8 +4870,8 @@ void RBBITest::TestReverse(std::unique_ptr<RuleBasedBreakIterator>bi) {
void RBBITest::TestBug13692() {
UErrorCode status = U_ZERO_ERROR;
- LocalPointer<RuleBasedBreakIterator> bi ((RuleBasedBreakIterator *)
- BreakIterator::createWordInstance(Locale::getEnglish(), status), status);
+ LocalPointer<RuleBasedBreakIterator> bi (dynamic_cast<RuleBasedBreakIterator*>(
+ BreakIterator::createWordInstance(Locale::getEnglish(), status)), status);
if (!assertSuccess(WHERE, status, true)) {
return;
}
@@ -4756,10 +4903,10 @@ void RBBITest::TestProperties() {
// For putting in fragments of other tests that can be invoked
// for tracing without a lot of unwanted extra stuff happening.
//
-void RBBITest::TestDebug(void) {
+void RBBITest::TestDebug() {
UErrorCode status = U_ZERO_ERROR;
- LocalPointer<RuleBasedBreakIterator> bi ((RuleBasedBreakIterator *)
- BreakIterator::createCharacterInstance(Locale::getEnglish(), status), status);
+ LocalPointer<RuleBasedBreakIterator> bi (dynamic_cast<RuleBasedBreakIterator*>(
+ BreakIterator::createCharacterInstance(Locale::getEnglish(), status)), status);
if (!assertSuccess(WHERE, status, true)) {
return;
}
@@ -4800,7 +4947,7 @@ void RBBITest::TestDebugRules() {
path.appendPathPart("rules", status);
path.appendPathPart("line.txt", status);
int len;
- std::unique_ptr<UChar []> testFile(ReadAndConvertFile(path.data(), len, "UTF-8", status));
+ std::unique_ptr<char16_t []> testFile(ReadAndConvertFile(path.data(), len, "UTF-8", status));
if (!assertSuccess(WHERE, status)) {
return;
}
@@ -4824,13 +4971,13 @@ void RBBITest::testTrieStateTable(int32_t numChar, bool expectedTrieWidthIn8Bits
int32_t expectedStateRowBits = expectedStateRowIn8Bits ? RBBI_8BITS_ROWS : 0;
// Text are duplicate characters from U+4E00 to U+4FFF
UnicodeString text;
- for (UChar c = 0x4e00; c < 0x5000; c++) {
+ for (char16_t c = 0x4e00; c < 0x5000; c++) {
text.append(c).append(c);
}
// Generate rule which will caused length+4 character classes and
// length+3 states
UnicodeString rules(u"!!quoted_literals_only;");
- for (UChar c = 0x4e00; c < 0x4e00 + numChar; c++) {
+ for (char16_t c = 0x4e00; c < 0x4e00 + numChar; c++) {
rules.append(u'\'').append(c).append(c).append(u"';");
}
rules.append(u".;");
@@ -4946,7 +5093,7 @@ void RBBITest::TestTable_8_16_Bits() {
// and as test data to check matching behavior. A break rule consisting of the first 120
// characters of testStr will match the first 120 chars of the full-length testStr.
UnicodeString testStr;
- for (UChar c=0x3000; c<0x3200; ++c) {
+ for (char16_t c=0x3000; c<0x3200; ++c) {
testStr.append(c);
}
@@ -5112,7 +5259,7 @@ void SetupTestTrace() {
utrace_setLevel(UTRACE_INFO);
}
-void RBBITest::TestTraceCreateCharacter(void) {
+void RBBITest::TestTraceCreateCharacter() {
SetupTestTrace();
IcuTestErrorCode status(*this, "TestTraceCreateCharacter");
LocalPointer<BreakIterator> brkitr(
@@ -5121,7 +5268,7 @@ void RBBITest::TestTraceCreateCharacter(void) {
assertTestTraceResult(UTRACE_UBRK_CREATE_CHARACTER, nullptr);
}
-void RBBITest::TestTraceCreateTitle(void) {
+void RBBITest::TestTraceCreateTitle() {
SetupTestTrace();
IcuTestErrorCode status(*this, "TestTraceCreateTitle");
LocalPointer<BreakIterator> brkitr(
@@ -5130,7 +5277,7 @@ void RBBITest::TestTraceCreateTitle(void) {
assertTestTraceResult(UTRACE_UBRK_CREATE_TITLE, nullptr);
}
-void RBBITest::TestTraceCreateSentence(void) {
+void RBBITest::TestTraceCreateSentence() {
SetupTestTrace();
IcuTestErrorCode status(*this, "TestTraceCreateSentence");
LocalPointer<BreakIterator> brkitr(
@@ -5139,7 +5286,7 @@ void RBBITest::TestTraceCreateSentence(void) {
assertTestTraceResult(UTRACE_UBRK_CREATE_SENTENCE, nullptr);
}
-void RBBITest::TestTraceCreateWord(void) {
+void RBBITest::TestTraceCreateWord() {
SetupTestTrace();
IcuTestErrorCode status(*this, "TestTraceCreateWord");
LocalPointer<BreakIterator> brkitr(
@@ -5148,7 +5295,7 @@ void RBBITest::TestTraceCreateWord(void) {
assertTestTraceResult(UTRACE_UBRK_CREATE_WORD, nullptr);
}
-void RBBITest::TestTraceCreateLine(void) {
+void RBBITest::TestTraceCreateLine() {
SetupTestTrace();
IcuTestErrorCode status(*this, "TestTraceCreateLine");
LocalPointer<BreakIterator> brkitr(
@@ -5157,7 +5304,7 @@ void RBBITest::TestTraceCreateLine(void) {
assertTestTraceResult(UTRACE_UBRK_CREATE_LINE, "line");
}
-void RBBITest::TestTraceCreateLineStrict(void) {
+void RBBITest::TestTraceCreateLineStrict() {
SetupTestTrace();
IcuTestErrorCode status(*this, "TestTraceCreateLineStrict");
LocalPointer<BreakIterator> brkitr(
@@ -5166,7 +5313,7 @@ void RBBITest::TestTraceCreateLineStrict(void) {
assertTestTraceResult(UTRACE_UBRK_CREATE_LINE, "line_strict");
}
-void RBBITest::TestTraceCreateLineNormal(void) {
+void RBBITest::TestTraceCreateLineNormal() {
SetupTestTrace();
IcuTestErrorCode status(*this, "TestTraceCreateLineNormal");
LocalPointer<BreakIterator> brkitr(
@@ -5175,7 +5322,7 @@ void RBBITest::TestTraceCreateLineNormal(void) {
assertTestTraceResult(UTRACE_UBRK_CREATE_LINE, "line_normal");
}
-void RBBITest::TestTraceCreateLineLoose(void) {
+void RBBITest::TestTraceCreateLineLoose() {
SetupTestTrace();
IcuTestErrorCode status(*this, "TestTraceCreateLineLoose");
LocalPointer<BreakIterator> brkitr(
@@ -5184,7 +5331,7 @@ void RBBITest::TestTraceCreateLineLoose(void) {
assertTestTraceResult(UTRACE_UBRK_CREATE_LINE, "line_loose");
}
-void RBBITest::TestTraceCreateLineLoosePhrase(void) {
+void RBBITest::TestTraceCreateLineLoosePhrase() {
SetupTestTrace();
IcuTestErrorCode status(*this, "TestTraceCreateLineLoosePhrase");
LocalPointer<BreakIterator> brkitr(
@@ -5193,7 +5340,7 @@ void RBBITest::TestTraceCreateLineLoosePhrase(void) {
assertTestTraceResult(UTRACE_UBRK_CREATE_LINE, "line_loose_phrase");
}
-void RBBITest::TestTraceCreateLineNormalPhrase(void) {
+void RBBITest::TestTraceCreateLineNormalPhrase() {
SetupTestTrace();
IcuTestErrorCode status(*this, "TestTraceCreateLineNormalPhrase");
LocalPointer<BreakIterator> brkitr(
@@ -5202,7 +5349,7 @@ void RBBITest::TestTraceCreateLineNormalPhrase(void) {
assertTestTraceResult(UTRACE_UBRK_CREATE_LINE, "line_normal_phrase");
}
-void RBBITest::TestTraceCreateLineStrictPhrase(void) {
+void RBBITest::TestTraceCreateLineStrictPhrase() {
SetupTestTrace();
IcuTestErrorCode status(*this, "TestTraceCreateLineStrictPhrase");
LocalPointer<BreakIterator> brkitr(
@@ -5211,7 +5358,7 @@ void RBBITest::TestTraceCreateLineStrictPhrase(void) {
assertTestTraceResult(UTRACE_UBRK_CREATE_LINE, "line_strict_phrase");
}
-void RBBITest::TestTraceCreateLinePhrase(void) {
+void RBBITest::TestTraceCreateLinePhrase() {
SetupTestTrace();
IcuTestErrorCode status(*this, "TestTraceCreateLinePhrase");
LocalPointer<BreakIterator> brkitr(
@@ -5220,7 +5367,7 @@ void RBBITest::TestTraceCreateLinePhrase(void) {
assertTestTraceResult(UTRACE_UBRK_CREATE_LINE, "line_phrase");
}
-void RBBITest::TestTraceCreateBreakEngine(void) {
+void RBBITest::TestTraceCreateBreakEngine() {
rbbi_cleanup();
SetupTestTrace();
IcuTestErrorCode status(*this, "TestTraceCreateBreakEngine");
@@ -5231,7 +5378,7 @@ void RBBITest::TestTraceCreateBreakEngine(void) {
// To word break the following text, BreakIterator will create 5 dictionary
// break engine internally.
- brkitr->setText(
+ UnicodeString text(
u"test "
u"測試 " // Hani
u"សាកល្បង " // Khmr
@@ -5240,6 +5387,7 @@ void RBBITest::TestTraceCreateBreakEngine(void) {
u"ทดสอบ " // Thai
u"test "
);
+ brkitr->setText(text);
// Loop through all the text.
while (brkitr->next() > 0) ;
@@ -5334,7 +5482,7 @@ void RBBITest::runLSTMTestFromFile(const char* filename, UScriptCode script) {
testFileName.append(filename, -1, status);
int len;
- UChar *testFile = ReadAndConvertFile(testFileName.data(), len, "UTF-8", status);
+ char16_t *testFile = ReadAndConvertFile(testFileName.data(), len, "UTF-8", status);
if (U_FAILURE(status)) {
errln("%s:%d Error %s opening test file %s", __FILE__, __LINE__, u_errorName(status), filename);
return;
@@ -5474,7 +5622,7 @@ void RBBITest::TestRandomAccess() {
UErrorCode status = U_ZERO_ERROR;
LocalPointer<RuleBasedBreakIterator> bi(
- (RuleBasedBreakIterator *)BreakIterator::createLineInstance(Locale::getEnglish(), status),
+ dynamic_cast<RuleBasedBreakIterator*>(BreakIterator::createLineInstance(Locale::getEnglish(), status)),
status);
if (!assertSuccess(WHERE, status)) { return; };
@@ -5521,4 +5669,192 @@ void RBBITest::TestRandomAccess() {
}
}
+// A Fake Tai Le break engine which handle Unicode Tai Le (Tale) block
+// https://unicode.org/charts/PDF/U1950.pdf
+// U+1950 - U+197F and always break after Tone letters (U+1970-U+1974)
+class FakeTaiLeBreakEngine : public ExternalBreakEngine {
+ public:
+ FakeTaiLeBreakEngine() : block(0x1950, 0x197f), tones(0x1970, 0x1974) {
+ }
+ virtual ~FakeTaiLeBreakEngine() {
+ }
+ virtual bool isFor(UChar32 c, const char* /* locale */) const override {
+ // We implmement this for any locale, not return false for some langauge
+ // here.
+ return handles(c);
+ }
+ virtual bool handles(UChar32 c) const override {
+ return block.contains(c);
+ }
+ virtual int32_t fillBreaks(UText* text, int32_t start, int32_t end,
+ int32_t* foundBreaks, int32_t foundBreaksCapacity,
+ UErrorCode& status) const override {
+ if (U_FAILURE(status)) return 0;
+ int32_t i = 0;
+ // Save the state of the utext
+ int64_t savedIndex = utext_getNativeIndex(text);
+ if (savedIndex != start) {
+ utext_setNativeIndex(text, start);
+ }
+ int32_t current;
+ while((current = (int32_t)utext_getNativeIndex(text)) < end) {
+ UChar32 c = utext_current32(text);
+ // Break after tone marks as a fake break point.
+ if (tones.contains(c)) {
+ if (i >= foundBreaksCapacity) {
+ status = U_BUFFER_OVERFLOW_ERROR;
+ utext_setNativeIndex(text, savedIndex);
+ return i;
+ }
+ foundBreaks[i++] = current;
+ }
+ UTEXT_NEXT32(text);
+ }
+ // Restore the utext
+ if (savedIndex != current) {
+ utext_setNativeIndex(text, savedIndex);
+ }
+ return i;
+ }
+
+ private:
+ UnicodeSet block;
+ UnicodeSet tones;
+};
+
+// A Fake Yue Break Engine which handle CJK Unified Ideographs
+// block (U+4E00-U+9FFF) when locale start with 'yue' and break
+// after every character.
+class FakeYueBreakEngine : public ExternalBreakEngine {
+ public:
+ FakeYueBreakEngine() : block(0x4e00, 0x9FFF) {
+ }
+ virtual ~FakeYueBreakEngine() {
+ }
+ virtual bool isFor(UChar32 c, const char* locale) const override {
+ // We implmement this for any locale starts with "yue" such as
+ // "yue", "yue-CN", "yue-Hant-CN", etc.
+ return handles(c) && uprv_strncmp("yue", locale, 3) == 0;
+ }
+ virtual bool handles(UChar32 c) const override {
+ return block.contains(c);
+ }
+ virtual int32_t fillBreaks(UText* text, int32_t start, int32_t end,
+ int32_t* foundBreaks, int32_t foundBreaksCapacity,
+ UErrorCode& status) const override {
+ (void)text;
+ if (U_FAILURE(status)) return 0;
+ int32_t i = 0;
+ int32_t current = start;
+ while (current++ < end) {
+ // A fake word segmentation by breaking every two Unicode.
+ if ((current - start) % 2 == 0) {
+ if (i >= foundBreaksCapacity) {
+ status = U_BUFFER_OVERFLOW_ERROR;
+ return i;
+ }
+ foundBreaks[i++] = current;
+ }
+ }
+ return i;
+ }
+
+ private:
+ UnicodeSet block;
+};
+
+void RBBITest::TestExternalBreakEngineWithFakeYue() {
+ UErrorCode status = U_ZERO_ERROR;
+ UnicodeString text(u"a bc def一兩年å‰ä½¢çœŸä¿‚å””é¾æ„畀我影相i jk lmn");
+
+ std::vector<int32_t> actual1;
+ {
+ LocalPointer<BreakIterator> bi1(
+ BreakIterator::createWordInstance(Locale::getRoot(), status),
+ status);
+ bi1->setText(text);
+ assertTrue(WHERE "BreakIterator::createWordInstance( root )",
+ U_SUCCESS(status));
+
+ do {
+ actual1.push_back(bi1->current());
+ } while(bi1->next() != BreakIterator::DONE);
+ }
+
+ std::vector<int32_t> expected1({{ 0, 1, 2, 4, 5, 8, 10, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 27, 30}});
+ assertTrue("root break Yue as Chinese", expected1 == actual1);
+
+ status = U_ZERO_ERROR;
+ RuleBasedBreakIterator::registerExternalBreakEngine(
+ new FakeYueBreakEngine(), status);
+ assertTrue(WHERE "registerExternalBreakEngine w FakeYueBreakEngine",
+ U_SUCCESS(status));
+
+ std::vector<int32_t> actual2;
+ {
+ status = U_ZERO_ERROR;
+ LocalPointer<BreakIterator> bi2(
+ BreakIterator::createWordInstance(Locale("yue"), status), status);
+ assertTrue(WHERE "BreakIterator::createWordInstance( yue )",
+ U_SUCCESS(status));
+ bi2->setText(text);
+ do {
+ actual2.push_back(bi2->current());
+ } while(bi2->next() != BreakIterator::DONE);
+ }
+ std::vector<int32_t> expected2({{ 0, 1, 2, 4, 5, 8, 10, 12, 14, 16, 18, 20,
+ 22, 23, 24, 26, 27, 30}});
+ assertTrue(WHERE "break Yue by Fake external breaker",
+ expected2 == actual2);
+}
+
+void RBBITest::TestExternalBreakEngineWithFakeTaiLe() {
+ UErrorCode status = U_ZERO_ERROR;
+ UnicodeString text(
+ u"a bc defᥛᥫᥒᥰᥖᥭᥰᥞá¥á¥°á¥™á¥¥á¥¢á¥›á¥«á¥’ᥰᥑᥩᥢᥲᥔᥣá¥á¥´á¥“ᥬᥖᥩᥢᥲᥛᥣá¥á¥±á¥™á¥á¥±á¥™á¥¤á¥±á¥“ᥣᥒᥛᥣᥰᥓᥧ"
+ u"ᥰᥘᥩᥰᥗᥪᥒᥴᥛᥣᥰᥘᥬᥰá¥á¥£á¥±á¥˜á¥’ᥱᥔᥣᥛᥴᥘᥫᥢi jk lmn");
+
+ std::vector<int32_t> actual1;
+ {
+ LocalPointer<BreakIterator> bi1(
+ BreakIterator::createLineInstance(Locale::getRoot(), status),
+ status);
+ bi1->setText(text);
+ assertTrue(WHERE "BreakIterator::createLineInstance( root )",
+ U_SUCCESS(status));
+
+ do {
+ actual1.push_back(bi1->current());
+ } while(bi1->next() != BreakIterator::DONE);
+ }
+
+ std::vector<int32_t> expected1({{
+ 0, 2, 5, 86, 89, 92 }});
+ assertTrue(WHERE "root break Tai Le", expected1 == actual1);
+
+ RuleBasedBreakIterator::registerExternalBreakEngine(
+ new FakeTaiLeBreakEngine(), status);
+ assertTrue(WHERE "registerExternalBreakEngine w FakeTaiLeBreakEngine",
+ U_SUCCESS(status));
+
+ std::vector<int32_t> actual2;
+ {
+ status = U_ZERO_ERROR;
+ LocalPointer<BreakIterator> bi2(
+ BreakIterator::createLineInstance(Locale("tdd"), status), status);
+ assertTrue(WHERE "BreakIterator::createLineInstance( tdd )",
+ U_SUCCESS(status));
+ bi2->setText(text);
+ do {
+ actual2.push_back(bi2->current());
+ } while(bi2->next() != BreakIterator::DONE);
+ }
+ std::vector<int32_t> expected2({{
+ 0, 2, 5, 11, 14, 17, 24, 28, 32, 38, 42, 45, 48, 54, 57, 60, 64, 67,
+ 70, 73, 76, 80, 86, 89, 92}});
+ assertTrue("break Tai Le by Fake external breaker",
+ expected2 == actual2);
+}
+
#endif // #if !UCONFIG_NO_BREAK_ITERATION
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/rbbitst.h b/Build/source/libs/icu/icu-src/source/test/intltest/rbbitst.h
index 436fd8325b6..537a537863a 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/rbbitst.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/rbbitst.h
@@ -42,7 +42,7 @@ public:
RBBITest();
virtual ~RBBITest();
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
void TestGetAvailableLocales();
void TestGetDisplayName();
@@ -96,6 +96,8 @@ public:
void TestLSTMThai();
void TestLSTMBurmese();
void TestRandomAccess();
+ void TestExternalBreakEngineWithFakeTaiLe();
+ void TestExternalBreakEngineWithFakeYue();
#if U_ENABLE_TRACING
void TestTraceCreateCharacter();
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/regcoll.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/regcoll.cpp
index 9bd47d229f3..3f07bb1aeec 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/regcoll.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/regcoll.cpp
@@ -24,7 +24,7 @@ CollationRegressionTest::CollationRegressionTest()
{
UErrorCode status = U_ZERO_ERROR;
- en_us = (RuleBasedCollator *)Collator::createInstance(Locale::getUS(), status);
+ en_us = dynamic_cast<RuleBasedCollator*>(Collator::createInstance(Locale::getUS(), status));
if(U_FAILURE(status)) {
delete en_us;
en_us = 0;
@@ -51,7 +51,7 @@ void CollationRegressionTest::Test4048446(/* char* par */)
CollationElementIterator *i2 = en_us->createCollationElementIterator(test1);
UErrorCode status = U_ZERO_ERROR;
- if (i1 == NULL|| i2 == NULL)
+ if (i1 == nullptr|| i2 == nullptr)
{
errln("Could not create CollationElementIterator's");
delete i1;
@@ -90,14 +90,14 @@ void CollationRegressionTest::Test4051866(/* char* par */)
rules += "&n < o ";
rules += "& oe ,o";
- rules += (UChar)0x3080;
+ rules += (char16_t)0x3080;
rules += "& oe ,";
- rules += (UChar)0x1530;
+ rules += (char16_t)0x1530;
rules += " ,O";
rules += "& OE ,O";
- rules += (UChar)0x3080;
+ rules += (char16_t)0x3080;
rules += "& OE ,";
- rules += (UChar)0x1520;
+ rules += (char16_t)0x1520;
rules += "< p ,P";
// Build a collator containing expanding characters
@@ -140,7 +140,7 @@ void CollationRegressionTest::Test4053636(/* char* par */)
//
void CollationRegressionTest::Test4054238(/* char* par */)
{
- const UChar chars3[] = {0x61, 0x00FC, 0x62, 0x65, 0x63, 0x6b, 0x20, 0x47, 0x72, 0x00F6, 0x00DF, 0x65, 0x20, 0x4c, 0x00FC, 0x62, 0x63, 0x6b, 0};
+ const char16_t chars3[] = {0x61, 0x00FC, 0x62, 0x65, 0x63, 0x6b, 0x20, 0x47, 0x72, 0x00F6, 0x00DF, 0x65, 0x20, 0x4c, 0x00FC, 0x62, 0x63, 0x6b, 0};
const UnicodeString test3(chars3);
RuleBasedCollator *c = en_us->clone();
@@ -174,7 +174,7 @@ void CollationRegressionTest::Test4054734(/* char* par */)
};
*/
- static const UChar decomp[][CollationRegressionTest::MAX_TOKEN_LEN] =
+ static const char16_t decomp[][CollationRegressionTest::MAX_TOKEN_LEN] =
{
{0x0001, 0}, {0x3c, 0}, {0x0002, 0},
{0x0001, 0}, {0x3d, 0}, {0x0001, 0},
@@ -206,7 +206,7 @@ void CollationRegressionTest::Test4054736(/* char* par */)
c->setStrength(Collator::SECONDARY);
c->setAttribute(UCOL_NORMALIZATION_MODE, UCOL_ON, status);
- static const UChar tests[][CollationRegressionTest::MAX_TOKEN_LEN] =
+ static const char16_t tests[][CollationRegressionTest::MAX_TOKEN_LEN] =
{
{0xFB4F, 0}, {0x3d, 0}, {0x05D0, 0x05DC} // Alef-Lamed vs. Alef, Lamed
};
@@ -236,11 +236,11 @@ void CollationRegressionTest::Test4058613(/* char* par */)
return;
}
- Collator *c = NULL;
+ Collator *c = nullptr;
c = Collator::createInstance("en_US", status);
- if (c == NULL || U_FAILURE(status))
+ if (c == nullptr || U_FAILURE(status))
{
errln("Could not create a Korean collator");
Locale::setDefault(oldDefault, status);
@@ -269,12 +269,12 @@ void CollationRegressionTest::Test4059820(/* char* par */)
{
UErrorCode status = U_ZERO_ERROR;
- RuleBasedCollator *c = NULL;
+ RuleBasedCollator *c = nullptr;
UnicodeString rules = "&9 < a < b , c/a < d < z";
c = new RuleBasedCollator(rules, status);
- if (c == NULL || U_FAILURE(status))
+ if (c == nullptr || U_FAILURE(status))
{
errln("Failure building a collator.");
delete c;
@@ -300,16 +300,16 @@ void CollationRegressionTest::Test4060154(/* char* par */)
rules += "&f < g, G < h, H < i, I < j, J";
rules += " & H < ";
- rules += (UChar)0x0131;
+ rules += (char16_t)0x0131;
rules += ", ";
- rules += (UChar)0x0130;
+ rules += (char16_t)0x0130;
rules += ", i, I";
- RuleBasedCollator *c = NULL;
+ RuleBasedCollator *c = nullptr;
c = new RuleBasedCollator(rules, status);
- if (c == NULL || U_FAILURE(status))
+ if (c == nullptr || U_FAILURE(status))
{
errln("failure building collator.");
delete c;
@@ -329,7 +329,7 @@ void CollationRegressionTest::Test4060154(/* char* par */)
};
*/
- static const UChar tertiary[][CollationRegressionTest::MAX_TOKEN_LEN] =
+ static const char16_t tertiary[][CollationRegressionTest::MAX_TOKEN_LEN] =
{
{0x41, 0}, {0x3c, 0}, {0x42, 0},
{0x48, 0}, {0x3c, 0}, {0x0131, 0},
@@ -348,7 +348,7 @@ void CollationRegressionTest::Test4060154(/* char* par */)
"\u0131", "=", "\u0130",
};
*/
- static const UChar secondary[][CollationRegressionTest::MAX_TOKEN_LEN] =
+ static const char16_t secondary[][CollationRegressionTest::MAX_TOKEN_LEN] =
{
{0x48, 0}, {0x3c, 0}, {0x49, 0},
{0x0131, 0}, {0x3d, 0}, {0x0130, 0}
@@ -368,11 +368,11 @@ void CollationRegressionTest::Test4062418(/* char* par */)
{
UErrorCode status = U_ZERO_ERROR;
- RuleBasedCollator *c = NULL;
+ RuleBasedCollator *c = nullptr;
- c = (RuleBasedCollator *) Collator::createInstance(Locale::getCanadaFrench(), status);
+ c = dynamic_cast<RuleBasedCollator*>(Collator::createInstance(Locale::getCanadaFrench(), status));
- if (c == NULL || U_FAILURE(status))
+ if (c == nullptr || U_FAILURE(status))
{
errln("Failed to create collator for Locale::getCanadaFrench()");
delete c;
@@ -386,7 +386,7 @@ void CollationRegressionTest::Test4062418(/* char* par */)
"p\u00eache", "<", "p\u00e9ch\u00e9", // Comparing accents from end, p\u00e9ch\u00e9 is greater
};
*/
- static const UChar tests[][CollationRegressionTest::MAX_TOKEN_LEN] =
+ static const char16_t tests[][CollationRegressionTest::MAX_TOKEN_LEN] =
{
{0x70, 0x00EA, 0x63, 0x68, 0x65, 0}, {0x3c, 0}, {0x70, 0x00E9, 0x63, 0x68, 0x00E9, 0}
};
@@ -416,8 +416,8 @@ void CollationRegressionTest::Test4065540(/* char* par */)
//
void CollationRegressionTest::Test4066189(/* char* par */)
{
- static const UChar chars1[] = {0x1EB1, 0};
- static const UChar chars2[] = {0x61, 0x0306, 0x0300, 0};
+ static const char16_t chars1[] = {0x1EB1, 0};
+ static const char16_t chars2[] = {0x61, 0x0306, 0x0300, 0};
const UnicodeString test1(chars1);
const UnicodeString test2(chars2);
UErrorCode status = U_ZERO_ERROR;
@@ -448,11 +448,11 @@ void CollationRegressionTest::Test4066189(/* char* par */)
void CollationRegressionTest::Test4066696(/* char* par */)
{
UErrorCode status = U_ZERO_ERROR;
- RuleBasedCollator *c = NULL;
+ RuleBasedCollator *c = nullptr;
- c = (RuleBasedCollator *)Collator::createInstance(Locale::getCanadaFrench(), status);
+ c = dynamic_cast<RuleBasedCollator*>(Collator::createInstance(Locale::getCanadaFrench(), status));
- if (c == NULL || U_FAILURE(status))
+ if (c == nullptr || U_FAILURE(status))
{
errln("Failure creating collator for Locale::getCanadaFrench()");
delete c;
@@ -474,7 +474,7 @@ void CollationRegressionTest::Test4066696(/* char* par */)
*/
- static const UChar tests[][CollationRegressionTest::MAX_TOKEN_LEN] =
+ static const char16_t tests[][CollationRegressionTest::MAX_TOKEN_LEN] =
{
{0x00E0, 0}, {0x3e, 0}, {0x01FA, 0}
};
@@ -492,8 +492,8 @@ void CollationRegressionTest::Test4076676(/* char* par */)
{
// These combining characters are all in the same class, so they should not
// be reordered, and they should compare as unequal.
- static const UChar s1[] = {0x41, 0x0301, 0x0302, 0x0300, 0};
- static const UChar s2[] = {0x41, 0x0302, 0x0300, 0x0301, 0};
+ static const char16_t s1[] = {0x41, 0x0301, 0x0302, 0x0300, 0};
+ static const char16_t s2[] = {0x41, 0x0302, 0x0300, 0x0301, 0};
RuleBasedCollator *c = en_us->clone();
c->setStrength(Collator::TERTIARY);
@@ -508,18 +508,18 @@ void CollationRegressionTest::Test4076676(/* char* par */)
// @bug 4079231
//
-// RuleBasedCollator::operator==(NULL) throws NullPointerException
+// RuleBasedCollator::operator==(nullptr) throws NullPointerException
//
void CollationRegressionTest::Test4079231(/* char* par */)
{
// I don't think there's any way to write this test
// in C++. The following is equivalent to the Java,
- // but doesn't compile 'cause NULL can't be converted
+ // but doesn't compile 'cause nullptr can't be converted
// to Collator&
//
- // if (en_us->operator==(NULL))
+ // if (en_us->operator==(nullptr))
// {
- // errln("en_us->operator==(NULL) returned true");
+ // errln("en_us->operator==(nullptr) returned true");
// }
/*
@@ -543,7 +543,7 @@ void CollationRegressionTest::Test4078588(/* char *par */)
UErrorCode status = U_ZERO_ERROR;
RuleBasedCollator *rbc = new RuleBasedCollator("&9 < a < bb", status);
- if (rbc == NULL || U_FAILURE(status))
+ if (rbc == nullptr || U_FAILURE(status))
{
errln("Failed to create RuleBasedCollator.");
delete rbc;
@@ -569,8 +569,8 @@ void CollationRegressionTest::Test4081866(/* char* par */)
{
// These combining characters are all in different classes,
// so they should be reordered and the strings should compare as equal.
- static const UChar s1[] = {0x41, 0x0300, 0x0316, 0x0327, 0x0315, 0};
- static const UChar s2[] = {0x41, 0x0327, 0x0316, 0x0315, 0x0300, 0};
+ static const char16_t s1[] = {0x41, 0x0300, 0x0316, 0x0327, 0x0315, 0};
+ static const char16_t s2[] = {0x41, 0x0327, 0x0316, 0x0315, 0x0300, 0};
UErrorCode status = U_ZERO_ERROR;
RuleBasedCollator *c = en_us->clone();
@@ -597,11 +597,11 @@ void CollationRegressionTest::Test4087241(/* char* par */)
{
UErrorCode status = U_ZERO_ERROR;
Locale da_DK("da", "DK");
- RuleBasedCollator *c = NULL;
+ RuleBasedCollator *c = nullptr;
- c = (RuleBasedCollator *) Collator::createInstance(da_DK, status);
+ c = dynamic_cast<RuleBasedCollator*>(Collator::createInstance(da_DK, status));
- if (c == NULL || U_FAILURE(status))
+ if (c == nullptr || U_FAILURE(status))
{
errln("Failed to create collator for da_DK locale");
delete c;
@@ -610,7 +610,7 @@ void CollationRegressionTest::Test4087241(/* char* par */)
c->setStrength(Collator::SECONDARY);
- static const UChar tests[][CollationRegressionTest::MAX_TOKEN_LEN] =
+ static const char16_t tests[][CollationRegressionTest::MAX_TOKEN_LEN] =
{
{0x7a, 0}, {0x3c, 0}, {0x00E6, 0}, // z < ae
{0x61, 0x0308, 0}, {0x3c, 0}, {0x61, 0x030A, 0}, // a-umlaut < a-ring
@@ -631,7 +631,7 @@ void CollationRegressionTest::Test4087243(/* char* par */)
RuleBasedCollator *c = en_us->clone();
c->setStrength(Collator::TERTIARY);
- static const UChar tests[][CollationRegressionTest::MAX_TOKEN_LEN] =
+ static const char16_t tests[][CollationRegressionTest::MAX_TOKEN_LEN] =
{
{0x31, 0x32, 0x33, 0}, {0x3d, 0}, {0x31, 0x32, 0x33, 0x0001, 0} // 1 2 3 = 1 2 3 ctrl-A
};
@@ -650,11 +650,11 @@ void CollationRegressionTest::Test4092260(/* char* par */)
{
UErrorCode status = U_ZERO_ERROR;
Locale el("el", "");
- Collator *c = NULL;
+ Collator *c = nullptr;
c = Collator::createInstance(el, status);
- if (c == NULL || U_FAILURE(status))
+ if (c == nullptr || U_FAILURE(status))
{
errln("Failed to create collator for el locale.");
delete c;
@@ -664,7 +664,7 @@ void CollationRegressionTest::Test4092260(/* char* par */)
// These now have tertiary differences in UCA
c->setAttribute(UCOL_STRENGTH, UCOL_SECONDARY, status);
- static const UChar tests[][CollationRegressionTest::MAX_TOKEN_LEN] =
+ static const char16_t tests[][CollationRegressionTest::MAX_TOKEN_LEN] =
{
{0x00B5, 0}, {0x3d, 0}, {0x03BC, 0}
};
@@ -682,7 +682,7 @@ void CollationRegressionTest::Test4095316(/* char* par */)
Locale el_GR("el", "GR");
Collator *c = Collator::createInstance(el_GR, status);
- if (c == NULL || U_FAILURE(status))
+ if (c == nullptr || U_FAILURE(status))
{
errln("Failed to create collator for el_GR locale");
delete c;
@@ -692,7 +692,7 @@ void CollationRegressionTest::Test4095316(/* char* par */)
//c->setStrength(Collator::TERTIARY);
c->setAttribute(UCOL_STRENGTH, UCOL_SECONDARY, status);
- static const UChar tests[][CollationRegressionTest::MAX_TOKEN_LEN] =
+ static const char16_t tests[][CollationRegressionTest::MAX_TOKEN_LEN] =
{
{0x03D4, 0}, {0x3d, 0}, {0x03AB, 0}
};
@@ -707,13 +707,13 @@ void CollationRegressionTest::Test4095316(/* char* par */)
void CollationRegressionTest::Test4101940(/* char* par */)
{
UErrorCode status = U_ZERO_ERROR;
- RuleBasedCollator *c = NULL;
+ RuleBasedCollator *c = nullptr;
UnicodeString rules = "&9 < a < b";
UnicodeString nothing = "";
c = new RuleBasedCollator(rules, status);
- if (c == NULL || U_FAILURE(status))
+ if (c == nullptr || U_FAILURE(status))
{
errln("Failed to create RuleBasedCollator");
delete c;
@@ -741,7 +741,7 @@ void CollationRegressionTest::Test4103436(/* char* par */)
RuleBasedCollator *c = en_us->clone();
c->setStrength(Collator::TERTIARY);
- static const UChar tests[][CollationRegressionTest::MAX_TOKEN_LEN] =
+ static const char16_t tests[][CollationRegressionTest::MAX_TOKEN_LEN] =
{
{0x66, 0x69, 0x6c, 0x65, 0}, {0x3c, 0}, {0x66, 0x69, 0x6c, 0x65, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0},
{0x66, 0x69, 0x6c, 0x65, 0}, {0x3c, 0}, {0x66, 0x69, 0x6c, 0x65, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0}
@@ -767,7 +767,7 @@ void CollationRegressionTest::Test4114076(/* char* par */)
// into Jamo, but Jamo characters should not be decomposed into
// conjoining Jamo
//
- static const UChar test1[][CollationRegressionTest::MAX_TOKEN_LEN] =
+ static const char16_t test1[][CollationRegressionTest::MAX_TOKEN_LEN] =
{
{0xd4db, 0}, {0x3d, 0}, {0x1111, 0x1171, 0x11b6, 0}
};
@@ -784,7 +784,7 @@ void CollationRegressionTest::Test4114076(/* char* par */)
//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- static const char16_t test2[][CollationRegressionTest::MAX_TOKEN_LEN] =
//obsolete- {
//obsolete- {0xd4db, 0}, {0x3d, 0}, {0x1111, 0x116e, 0x1175, 0x11af, 0x11c2, 0}
//obsolete- };
@@ -803,18 +803,18 @@ void CollationRegressionTest::Test4114076(/* char* par */)
void CollationRegressionTest::Test4124632(/* char* par */)
{
UErrorCode status = U_ZERO_ERROR;
- Collator *coll = NULL;
+ Collator *coll = nullptr;
coll = Collator::createInstance(Locale::getJapan(), status);
- if (coll == NULL || U_FAILURE(status))
+ if (coll == nullptr || U_FAILURE(status))
{
errln("Failed to create collator for Locale::JAPAN");
delete coll;
return;
}
- static const UChar test[] = {0x41, 0x0308, 0x62, 0x63, 0};
+ static const char16_t test[] = {0x41, 0x0308, 0x62, 0x63, 0};
CollationKey key;
coll->getCollationKey(test, key, status);
@@ -835,19 +835,19 @@ void CollationRegressionTest::Test4132736(/* char* par */)
{
UErrorCode status = U_ZERO_ERROR;
- Collator *c = NULL;
+ Collator *c = nullptr;
c = Collator::createInstance(Locale::getCanadaFrench(), status);
c->setStrength(Collator::TERTIARY);
- if (c == NULL || U_FAILURE(status))
+ if (c == nullptr || U_FAILURE(status))
{
errln("Failed to create a collator for Locale::getCanadaFrench()");
delete c;
return;
}
- static const UChar test1[][CollationRegressionTest::MAX_TOKEN_LEN] =
+ static const char16_t test1[][CollationRegressionTest::MAX_TOKEN_LEN] =
{
{0x65, 0x0300, 0x65, 0x0301, 0}, {0x3c, 0}, {0x65, 0x0301, 0x65, 0x0300, 0},
{0x65, 0x0300, 0x0301, 0}, {0x3c, 0}, {0x65, 0x0301, 0x0300, 0}
@@ -864,7 +864,7 @@ void CollationRegressionTest::Test4132736(/* char* par */)
//
void CollationRegressionTest::Test4133509(/* char* par */)
{
- static const UChar test1[][CollationRegressionTest::MAX_TOKEN_LEN] =
+ static const char16_t test1[][CollationRegressionTest::MAX_TOKEN_LEN] =
{
{0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0}, {0x3c, 0}, {0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0},
{0x47, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0}, {0x3c, 0}, {0x47, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0},
@@ -887,7 +887,7 @@ void CollationRegressionTest::Test4114077(/* char* par */)
RuleBasedCollator *c = en_us->clone();
c->setStrength(Collator::TERTIARY);
- static const UChar test1[][CollationRegressionTest::MAX_TOKEN_LEN] =
+ static const char16_t test1[][CollationRegressionTest::MAX_TOKEN_LEN] =
{
{0x00C0, 0}, {0x3d, 0}, {0x41, 0x0300, 0}, // Should be equivalent
{0x70, 0x00ea, 0x63, 0x68, 0x65, 0}, {0x3e, 0}, {0x70, 0x00e9, 0x63, 0x68, 0x00e9, 0},
@@ -900,7 +900,7 @@ void CollationRegressionTest::Test4114077(/* char* par */)
c->setAttribute(UCOL_NORMALIZATION_MODE, UCOL_OFF, status);
compareArray(*c, test1, UPRV_LENGTHOF(test1));
- static const UChar test2[][CollationRegressionTest::MAX_TOKEN_LEN] =
+ static const char16_t test2[][CollationRegressionTest::MAX_TOKEN_LEN] =
{
{0x41, 0x0300, 0x0316, 0}, {0x3d, 0}, {0x41, 0x0316, 0x0300, 0} // Reordering --> equal
};
@@ -928,12 +928,12 @@ void CollationRegressionTest::Test4141640(/* char* par */)
for (i = 0; i < localeCount; i += 1)
{
- Collator *c = NULL;
+ Collator *c = nullptr;
status = U_ZERO_ERROR;
c = Collator::createInstance(locales[i], status);
- if (c == NULL || U_FAILURE(status))
+ if (c == nullptr || U_FAILURE(status))
{
UnicodeString msg, localeName;
@@ -961,11 +961,11 @@ void CollationRegressionTest::Test4139572(/* char* par */)
// create spanish locale and collator
UErrorCode status = U_ZERO_ERROR;
Locale l("es", "es");
- Collator *col = NULL;
+ Collator *col = nullptr;
col = Collator::createInstance(l, status);
- if (col == NULL || U_FAILURE(status))
+ if (col == nullptr || U_FAILURE(status))
{
errln("Failed to create a collator for es_es locale.");
delete col;
@@ -1086,7 +1086,7 @@ void CollationRegressionTest::Test4179216() {
// Ticket 7189
//
// nextSortKeyPart incorrect for EO_S1 collation
-static int32_t calcKeyIncremental(UCollator *coll, const UChar* text, int32_t len, uint8_t *keyBuf, int32_t /*keyBufLen*/, UErrorCode& status) {
+static int32_t calcKeyIncremental(UCollator *coll, const char16_t* text, int32_t len, uint8_t *keyBuf, int32_t /*keyBufLen*/, UErrorCode& status) {
UCharIterator uiter;
uint32_t state[2] = { 0, 0 };
int32_t keyLen;
@@ -1112,7 +1112,7 @@ void CollationRegressionTest::TestT7189() {
UCollator *coll;
uint32_t i;
- static const UChar text1[][CollationRegressionTest::MAX_TOKEN_LEN] = {
+ static const char16_t text1[][CollationRegressionTest::MAX_TOKEN_LEN] = {
// "Achter De Hoven"
{ 0x41, 0x63, 0x68, 0x74, 0x65, 0x72, 0x20, 0x44, 0x65, 0x20, 0x48, 0x6F, 0x76, 0x65, 0x6E, 0x00 },
// "ABC"
@@ -1121,7 +1121,7 @@ void CollationRegressionTest::TestT7189() {
{ 0x48, 0x45, 0x4C, 0x4C, 0x4F, 0x20, 0x77, 0x6F, 0x72, 0x6C, 0x64, 0x21, 0x00 }
};
- static const UChar text2[][CollationRegressionTest::MAX_TOKEN_LEN] = {
+ static const char16_t text2[][CollationRegressionTest::MAX_TOKEN_LEN] = {
// "Achter de Hoven"
{ 0x41, 0x63, 0x68, 0x74, 0x65, 0x72, 0x20, 0x64, 0x65, 0x20, 0x48, 0x6F, 0x76, 0x65, 0x6E, 0x00 },
// "abc"
@@ -1131,7 +1131,7 @@ void CollationRegressionTest::TestT7189() {
};
// Open the collator
- coll = ucol_openFromShortString("EO_S1", false, NULL, &status);
+ coll = ucol_openFromShortString("EO_S1", false, nullptr, &status);
if (U_FAILURE(status)) {
errln("Failed to create a collator for short string EO_S1");
return;
@@ -1191,18 +1191,18 @@ void CollationRegressionTest::TestCaseFirstCompression() {
void CollationRegressionTest::caseFirstCompressionSub(Collator *col, UnicodeString opt) {
const int32_t maxLength = 50;
- UChar str1[maxLength];
- UChar str2[maxLength];
+ char16_t str1[maxLength];
+ char16_t str2[maxLength];
CollationKey key1, key2;
for (int32_t len = 1; len <= maxLength; len++) {
int32_t i = 0;
for (; i < len - 1; i++) {
- str1[i] = str2[i] = (UChar)0x61; // 'a'
+ str1[i] = str2[i] = (char16_t)0x61; // 'a'
}
- str1[i] = (UChar)0x41; // 'A'
- str2[i] = (UChar)0x61; // 'a'
+ str1[i] = (char16_t)0x41; // 'A'
+ str2[i] = (char16_t)0x61; // 'a'
UErrorCode status = U_ZERO_ERROR;
col->getCollationKey(str1, len, key1, status);
@@ -1226,7 +1226,7 @@ void CollationRegressionTest::TestTrailingComment() {
// Check that the rule parser handles a comment without terminating end-of-line.
IcuTestErrorCode errorCode(*this, "TestTrailingComment");
RuleBasedCollator coll(UNICODE_STRING_SIMPLE("&c<b#comment1\n<a#comment2"), errorCode);
- UnicodeString a((UChar)0x61), b((UChar)0x62), c((UChar)0x63);
+ UnicodeString a((char16_t)0x61), b((char16_t)0x62), c((char16_t)0x63);
assertTrue("c<b", coll.compare(c, b) < 0);
assertTrue("b<a", coll.compare(b, a) < 0);
}
@@ -1249,8 +1249,40 @@ void CollationRegressionTest::TestBeforeWithTooStrongAfter() {
}
}
+void CollationRegressionTest::TestICU22517() {
+ IcuTestErrorCode errorCode(*this, "TestICU22517");
+ char16_t data[] = u"&a=bì«Šì«Šì«Šì«Šì«Šì«Šì«Šì«Š";
+ icu::UnicodeString rule(true, data, -1);
+ int length = quick ? rule.length()-2 : rule.length();
+ for (int i = 4; i <= length; i++) {
+ UErrorCode status = U_ZERO_ERROR;
+ icu::LocalPointer<icu::RuleBasedCollator> col1(
+ new icu::RuleBasedCollator(rule.tempSubString(0, i), status));
+ }
+}
+
+void CollationRegressionTest::TestICU22277() {
+ IcuTestErrorCode errorCode(*this, "TestICU22277");
+ UErrorCode status = U_ZERO_ERROR;
+
+ Collator* c = Collator::createInstance("JA-u-Co-priVatE-KANa", status);
+ if(c != nullptr || U_SUCCESS(status)) {
+ errcheckln(status, "Collator should have failed with MemorySanitizer: use-of-uninitialized-value error - %s",
+ u_errorName(status));
+ delete c;
+ return;
+ }
+ c = Collator::createInstance("hE-U-cO-pRIVate-UNihan", status);
+ if(c != nullptr || U_SUCCESS(status)) {
+ errcheckln(status, "Collator should have failed with MemorySanitizer: use-of-uninitialized-value error - %s",
+ u_errorName(status));
+ delete c;
+ return;
+ }
+}
+
void CollationRegressionTest::compareArray(Collator &c,
- const UChar tests[][CollationRegressionTest::MAX_TOKEN_LEN],
+ const char16_t tests[][CollationRegressionTest::MAX_TOKEN_LEN],
int32_t testCount)
{
int32_t i;
@@ -1346,7 +1378,7 @@ void CollationRegressionTest::runIndexedTest(int32_t index, UBool exec, const ch
logln("Collation Regression Tests: ");
}
- if(en_us == NULL) {
+ if(en_us == nullptr) {
dataerrln("Class collator not instantiated");
name = "";
return;
@@ -1387,6 +1419,8 @@ void CollationRegressionTest::runIndexedTest(int32_t index, UBool exec, const ch
TESTCASE_AUTO(TestCaseFirstCompression);
TESTCASE_AUTO(TestTrailingComment);
TESTCASE_AUTO(TestBeforeWithTooStrongAfter);
+ TESTCASE_AUTO(TestICU22277);
+ TESTCASE_AUTO(TestICU22517);
TESTCASE_AUTO_END;
}
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/regcoll.h b/Build/source/libs/icu/icu-src/source/test/intltest/regcoll.h
index 85226a9e62a..76ba733c795 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/regcoll.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/regcoll.h
@@ -32,7 +32,7 @@ public:
CollationRegressionTest();
virtual ~CollationRegressionTest();
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
// @bug 4048446
//
@@ -237,12 +237,17 @@ public:
void TestTrailingComment();
void TestBeforeWithTooStrongAfter();
+ // Test use-of-uninitialized-value
+ void TestICU22277();
+
+ void TestICU22517();
+
private:
//------------------------------------------------------------------------
// Internal utilities
//
void compareArray(Collator &c,
- const UChar tests[][CollationRegressionTest::MAX_TOKEN_LEN],
+ const char16_t tests[][CollationRegressionTest::MAX_TOKEN_LEN],
int32_t testCount);
void assertEqual(CollationElementIterator &i1, CollationElementIterator &i2);
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/regextst.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/regextst.cpp
index cb8565d9339..1489617f998 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/regextst.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/regextst.cpp
@@ -134,7 +134,7 @@ static void utextToPrintable(char *buf, int32_t bufLen, UText *text) {
*bufPtr = c;
} else {
#if 0
- sprintf(bufPtr,"U+%04X", c);
+ snprintf(bufPtr, bufLen - (bufPtr-buf), "U+%04X", c);
bufPtr+= strlen(bufPtr)-1;
#else
*bufPtr = '%';
@@ -169,8 +169,8 @@ const char* RegexTest::extractToAssertBuf(const UnicodeString& message) {
if(ASSERT_BUF[0]==0) {
ASSERT_BUF[0]=0;
for(int32_t i=0;i<buf.length();i++) {
- UChar ch = buf[i];
- sprintf(ASSERT_BUF+strlen(ASSERT_BUF),"\\u%02x",ch);
+ char16_t ch = buf[i];
+ snprintf(ASSERT_BUF+strlen(ASSERT_BUF), sizeof(ASSERT_BUF) - strlen(ASSERT_BUF), "\\u%02x",ch);
}
}
}
@@ -328,7 +328,7 @@ static UText* regextst_openUTF8FromInvariant(UText *ut, const char *inv, int64_t
fprintf(stderr, "%s:%d Error: INV_BUFSIZ #defined to be %d but needs to be at least %d.\n",
__FILE__, __LINE__, INV_BUFSIZ, (inv_next+length+1));
*status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
unsigned char *buf = (unsigned char*)inv_buf+inv_next;
@@ -368,8 +368,8 @@ UBool RegexTest::doRegexLMTest(const char *pat, const char *text, UBool looking,
const UnicodeString inputText(text, -1, US_INV);
UErrorCode status = U_ZERO_ERROR;
UParseError pe;
- RegexPattern *REPattern = NULL;
- RegexMatcher *REMatcher = NULL;
+ RegexPattern *REPattern = nullptr;
+ RegexMatcher *REMatcher = nullptr;
UBool retVal = true;
UnicodeString patString(pat, -1, US_INV);
@@ -427,12 +427,12 @@ UBool RegexTest::doRegexLMTest(const char *pat, const char *text, UBool looking,
UBool RegexTest::doRegexLMTestUTF8(const char *pat, const char *text, UBool looking, UBool match, int32_t line) {
UText pattern = UTEXT_INITIALIZER;
int32_t inputUTF8Length;
- char *textChars = NULL;
+ char *textChars = nullptr;
UText inputText = UTEXT_INITIALIZER;
UErrorCode status = U_ZERO_ERROR;
UParseError pe;
- RegexPattern *REPattern = NULL;
- RegexMatcher *REMatcher = NULL;
+ RegexPattern *REPattern = nullptr;
+ RegexMatcher *REMatcher = nullptr;
UBool retVal = true;
regextst_openUTF8FromInvariant(&pattern, pat, -1, &status);
@@ -446,9 +446,9 @@ UBool RegexTest::doRegexLMTestUTF8(const char *pat, const char *text, UBool look
UnicodeString inputString(text, -1, US_INV);
UnicodeString unEscapedInput = inputString.unescape();
LocalUConverterPointer UTF8Converter(ucnv_open("UTF8", &status));
- ucnv_setFromUCallBack(UTF8Converter.getAlias(), UCNV_FROM_U_CALLBACK_STOP, NULL, NULL, NULL, &status);
+ ucnv_setFromUCallBack(UTF8Converter.getAlias(), UCNV_FROM_U_CALLBACK_STOP, nullptr, nullptr, nullptr, &status);
- inputUTF8Length = unEscapedInput.extract(NULL, 0, UTF8Converter.getAlias(), status);
+ inputUTF8Length = unEscapedInput.extract(nullptr, 0, UTF8Converter.getAlias(), status);
if (U_FAILURE(status) && status != U_BUFFER_OVERFLOW_ERROR) {
// UTF-8 does not allow unpaired surrogates, so this could actually happen
logln("RegexTest unable to convert input to UTF8 at line %d. Status = %s\n", line, u_errorName(status));
@@ -521,7 +521,7 @@ void RegexTest::regex_err(const char *pat, int32_t errLine, int32_t errCol,
UErrorCode status = U_ZERO_ERROR;
UParseError pe;
- RegexPattern *callerPattern = NULL;
+ RegexPattern *callerPattern = nullptr;
//
// Compile the caller's pattern
@@ -1203,7 +1203,7 @@ void RegexTest::API_Match() {
//
- // Compilation error on reset with UChar *
+ // Compilation error on reset with char16_t *
// These were a hazard that people were stumbling over with runtime errors.
// Changed them to compiler errors by adding private methods that more closely
// matched the incorrect use of the functions.
@@ -1211,7 +1211,7 @@ void RegexTest::API_Match() {
#if 0
{
UErrorCode status = U_ZERO_ERROR;
- UChar ucharString[20];
+ char16_t ucharString[20];
RegexMatcher m(".", 0, status);
m.reset(ucharString); // should not compile.
@@ -1802,12 +1802,12 @@ void RegexTest::API_Pattern() {
pat1 = RegexPattern::compile("(Hello, world)*", pe, status);
REGEX_CHECK_STATUS;
REGEX_ASSERT(pat1->getDynamicClassID() == RegexPattern::getStaticClassID());
- REGEX_ASSERT(pat1->getDynamicClassID() != NULL);
+ REGEX_ASSERT(pat1->getDynamicClassID() != nullptr);
UnicodeString Hello("Hello, world.");
RegexMatcher *m = pat1->matcher(Hello, status);
REGEX_ASSERT(pat1->getDynamicClassID() != m->getDynamicClassID());
REGEX_ASSERT(m->getDynamicClassID() == RegexMatcher::getStaticClassID());
- REGEX_ASSERT(m->getDynamicClassID() != NULL);
+ REGEX_ASSERT(m->getDynamicClassID() != nullptr);
delete m;
delete pat1;
@@ -1852,7 +1852,7 @@ void RegexTest::API_Match_UTF8() {
REGEX_VERBOSE_TEXT(&input1);
regextst_openUTF8FromInvariant(&input2, "not abc", -1, &status);
REGEX_VERBOSE_TEXT(&input2);
- utext_openUChars(&empty, NULL, 0, &status);
+ utext_openUChars(&empty, nullptr, 0, &status);
int32_t input1Len = static_cast<int32_t>(strlen("abcdef this is a test")); /* TODO: why not nativelen (input1) ? */
int32_t input2Len = static_cast<int32_t>(strlen("not abc"));
@@ -2030,7 +2030,7 @@ void RegexTest::API_Match_UTF8() {
//const char str_0123456789[] = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x00 }; /* 0123456789 */
// Test shallow-clone API
int64_t group_len;
- result = matcher->group((UText *)NULL, group_len, status);
+ result = matcher->group(nullptr, group_len, status);
REGEX_CHECK_STATUS;
REGEX_ASSERT_UTEXT_UTF8(str_0123456789, result);
utext_close(result);
@@ -2043,7 +2043,7 @@ void RegexTest::API_Match_UTF8() {
utext_openUnicodeString(&destText, &dest, &status);
int64_t length;
- result = matcher->group(0, NULL, length, status);
+ result = matcher->group(0, nullptr, length, status);
REGEX_CHECK_STATUS;
REGEX_ASSERT_UTEXT_UTF8(str_0123456789, result);
utext_close(result);
@@ -2055,7 +2055,7 @@ void RegexTest::API_Match_UTF8() {
REGEX_ASSERT_UTEXT_INVARIANT("0123456789", result);
// Capture Group 1 == "234567"
- result = matcher->group(1, NULL, length, status);
+ result = matcher->group(1, nullptr, length, status);
REGEX_CHECK_STATUS;
REGEX_ASSERT(utext_getNativeIndex(result) == 2);
REGEX_ASSERT(length == 6);
@@ -2071,7 +2071,7 @@ void RegexTest::API_Match_UTF8() {
utext_close(result);
// Capture Group 2 == "45"
- result = matcher->group(2, NULL, length, status);
+ result = matcher->group(2, nullptr, length, status);
REGEX_CHECK_STATUS;
REGEX_ASSERT(utext_getNativeIndex(result) == 4);
REGEX_ASSERT(length == 2);
@@ -2087,7 +2087,7 @@ void RegexTest::API_Match_UTF8() {
utext_close(result);
// Capture Group 3 == "89"
- result = matcher->group(3, NULL, length, status);
+ result = matcher->group(3, nullptr, length, status);
REGEX_CHECK_STATUS;
REGEX_ASSERT(utext_getNativeIndex(result) == 8);
REGEX_ASSERT(length == 2);
@@ -2450,7 +2450,7 @@ void RegexTest::API_Replace_UTF8() {
const char str_yz[] = { 0x79, 0x7a, 0x00 }; /* yz */
utext_openUTF8(&replText, str_yz, -1, &status);
REGEX_VERBOSE_TEXT(&replText);
- result = matcher->replaceFirst(&replText, NULL, status);
+ result = matcher->replaceFirst(&replText, nullptr, status);
REGEX_CHECK_STATUS;
const char str_yzabcabc[] = { 0x2e, 0x79, 0x7a, 0x2e, 0x2e, 0x61, 0x62, 0x63, 0x2e, 0x2e, 0x2e, 0x61, 0x62, 0x63, 0x2e, 0x2e, 0x00 }; /* .yz..abc...abc.. */
REGEX_ASSERT_UTEXT_UTF8(str_yzabcabc, result);
@@ -2460,13 +2460,13 @@ void RegexTest::API_Replace_UTF8() {
REGEX_ASSERT(result == &destText);
REGEX_ASSERT_UTEXT_UTF8(str_yzabcabc, result);
- result = matcher->replaceAll(&replText, NULL, status);
+ result = matcher->replaceAll(&replText, nullptr, status);
REGEX_CHECK_STATUS;
const char str_yzyzyz[] = { 0x2e, 0x79, 0x7a, 0x2e, 0x2e, 0x79, 0x7a, 0x2e, 0x2e, 0x2e, 0x79, 0x7a, 0x2e, 0x2e, 0x00 }; /* .yz..yz...yz.. */
REGEX_ASSERT_UTEXT_UTF8(str_yzyzyz, result);
utext_close(result);
- utext_replace(&destText, 0, utext_nativeLength(&destText), NULL, 0, &status);
+ utext_replace(&destText, 0, utext_nativeLength(&destText), nullptr, 0, &status);
result = matcher->replaceAll(&replText, &destText, status);
REGEX_CHECK_STATUS;
REGEX_ASSERT(result == &destText);
@@ -2479,7 +2479,7 @@ void RegexTest::API_Replace_UTF8() {
utext_openUTF8(&dataText, str_abxabxabx, -1, &status);
matcher->reset(&dataText);
- result = matcher->replaceFirst(&replText, NULL, status);
+ result = matcher->replaceFirst(&replText, nullptr, status);
REGEX_CHECK_STATUS;
REGEX_ASSERT_UTEXT_UTF8(str_abxabxabx, result);
utext_close(result);
@@ -2488,11 +2488,11 @@ void RegexTest::API_Replace_UTF8() {
REGEX_ASSERT(result == &destText);
REGEX_ASSERT_UTEXT_UTF8(str_abxabxabx, result);
- result = matcher->replaceAll(&replText, NULL, status);
+ result = matcher->replaceAll(&replText, nullptr, status);
REGEX_CHECK_STATUS;
REGEX_ASSERT_UTEXT_UTF8(str_abxabxabx, result);
utext_close(result);
- utext_replace(&destText, 0, utext_nativeLength(&destText), NULL, 0, &status);
+ utext_replace(&destText, 0, utext_nativeLength(&destText), nullptr, 0, &status);
result = matcher->replaceAll(&replText, &destText, status);
REGEX_CHECK_STATUS;
REGEX_ASSERT(result == &destText);
@@ -2501,10 +2501,10 @@ void RegexTest::API_Replace_UTF8() {
//
// Empty source string
//
- utext_openUTF8(&dataText, NULL, 0, &status);
+ utext_openUTF8(&dataText, nullptr, 0, &status);
matcher->reset(&dataText);
- result = matcher->replaceFirst(&replText, NULL, status);
+ result = matcher->replaceFirst(&replText, nullptr, status);
REGEX_CHECK_STATUS;
REGEX_ASSERT_UTEXT_UTF8("", result);
utext_close(result);
@@ -2513,7 +2513,7 @@ void RegexTest::API_Replace_UTF8() {
REGEX_ASSERT(result == &destText);
REGEX_ASSERT_UTEXT_UTF8("", result);
- result = matcher->replaceAll(&replText, NULL, status);
+ result = matcher->replaceAll(&replText, nullptr, status);
REGEX_CHECK_STATUS;
REGEX_ASSERT_UTEXT_UTF8("", result);
utext_close(result);
@@ -2528,8 +2528,8 @@ void RegexTest::API_Replace_UTF8() {
utext_openUTF8(&dataText, data, -1, &status); // ".abc..abc...abc.."
matcher->reset(&dataText);
- utext_openUTF8(&replText, NULL, 0, &status);
- result = matcher->replaceFirst(&replText, NULL, status);
+ utext_openUTF8(&replText, nullptr, 0, &status);
+ result = matcher->replaceFirst(&replText, nullptr, status);
REGEX_CHECK_STATUS;
const char str_abcabc[] = { 0x2e, 0x2e, 0x2e, 0x61, 0x62, 0x63, 0x2e, 0x2e, 0x2e, 0x61, 0x62, 0x63, 0x2e, 0x2e, 0x00 }; /* ...abc...abc.. */
REGEX_ASSERT_UTEXT_UTF8(str_abcabc, result);
@@ -2539,12 +2539,12 @@ void RegexTest::API_Replace_UTF8() {
REGEX_ASSERT(result == &destText);
REGEX_ASSERT_UTEXT_UTF8(str_abcabc, result);
- result = matcher->replaceAll(&replText, NULL, status);
+ result = matcher->replaceAll(&replText, nullptr, status);
REGEX_CHECK_STATUS;
const char str_dots[] = { 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x00 }; /* ........ */
REGEX_ASSERT_UTEXT_UTF8(str_dots, result);
utext_close(result);
- utext_replace(&destText, 0, utext_nativeLength(&destText), NULL, 0, &status);
+ utext_replace(&destText, 0, utext_nativeLength(&destText), nullptr, 0, &status);
result = matcher->replaceAll(&replText, &destText, status);
REGEX_CHECK_STATUS;
REGEX_ASSERT(result == &destText);
@@ -2559,21 +2559,21 @@ void RegexTest::API_Replace_UTF8() {
const char str_xyz[] = { 0x78, 0x79, 0x7a, 0x00 }; /* xyz */
utext_openUTF8(&replText, str_xyz, -1, &status);
- result = matcher->replaceFirst(&replText, NULL, status);
+ result = matcher->replaceFirst(&replText, nullptr, status);
REGEX_CHECK_STATUS;
REGEX_ASSERT_UTEXT_UTF8(str_xyz, result);
utext_close(result);
- utext_replace(&destText, 0, utext_nativeLength(&destText), NULL, 0, &status);
+ utext_replace(&destText, 0, utext_nativeLength(&destText), nullptr, 0, &status);
result = matcher->replaceFirst(&replText, &destText, status);
REGEX_CHECK_STATUS;
REGEX_ASSERT(result == &destText);
REGEX_ASSERT_UTEXT_UTF8(str_xyz, result);
- result = matcher->replaceAll(&replText, NULL, status);
+ result = matcher->replaceAll(&replText, nullptr, status);
REGEX_CHECK_STATUS;
REGEX_ASSERT_UTEXT_UTF8(str_xyz, result);
utext_close(result);
- utext_replace(&destText, 0, utext_nativeLength(&destText), NULL, 0, &status);
+ utext_replace(&destText, 0, utext_nativeLength(&destText), nullptr, 0, &status);
result = matcher->replaceAll(&replText, &destText, status);
REGEX_CHECK_STATUS;
REGEX_ASSERT(result == &destText);
@@ -2594,12 +2594,12 @@ void RegexTest::API_Replace_UTF8() {
const char str_11[] = { 0x24, 0x31, 0x24, 0x31, 0x00 }; /* $1$1 */
utext_openUTF8(&replText, str_11, -1, &status);
- result = matcher2->replaceFirst(&replText, NULL, status);
+ result = matcher2->replaceFirst(&replText, nullptr, status);
REGEX_CHECK_STATUS;
const char str_bcbcdefg[] = { 0x62, 0x63, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x00 }; /* bcbcdefg */
REGEX_ASSERT_UTEXT_UTF8(str_bcbcdefg, result);
utext_close(result);
- utext_replace(&destText, 0, utext_nativeLength(&destText), NULL, 0, &status);
+ utext_replace(&destText, 0, utext_nativeLength(&destText), nullptr, 0, &status);
result = matcher2->replaceFirst(&replText, &destText, status);
REGEX_CHECK_STATUS;
REGEX_ASSERT(result == &destText);
@@ -2608,12 +2608,12 @@ void RegexTest::API_Replace_UTF8() {
const char str_v[24] = { 0x54, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x5c, 0x24, 0x31, 0x20, 0x69, 0x73, 0x20, 0x24, 0x31, 0x2e, 0x00 }; /* The value of \$1 is $1. */
utext_openUTF8(&replText, str_v, -1, &status);
REGEX_VERBOSE_TEXT(&replText);
- result = matcher2->replaceFirst(&replText, NULL, status);
+ result = matcher2->replaceFirst(&replText, nullptr, status);
REGEX_CHECK_STATUS;
const char str_Thevalueof1isbcdefg[] = { 0x54, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x24, 0x31, 0x20, 0x69, 0x73, 0x20, 0x62, 0x63, 0x2e, 0x64, 0x65, 0x66, 0x67, 0x00 }; /* The value of $1 is bc.defg */
REGEX_ASSERT_UTEXT_UTF8(str_Thevalueof1isbcdefg, result);
utext_close(result);
- utext_replace(&destText, 0, utext_nativeLength(&destText), NULL, 0, &status);
+ utext_replace(&destText, 0, utext_nativeLength(&destText), nullptr, 0, &status);
result = matcher2->replaceFirst(&replText, &destText, status);
REGEX_CHECK_STATUS;
REGEX_ASSERT(result == &destText);
@@ -2623,12 +2623,12 @@ void RegexTest::API_Replace_UTF8() {
0x66, 0x2c, 0x20, 0x6e, 0x6f, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x20, 0x6e, 0x75, 0x6d, 0x62,
0x65, 0x72, 0x20, 0x5c, 0x24, 0x5c, 0x24, 0x5c, 0x24, 0x00 }; /* \$ by itself, no group number \$\$\$ */
utext_openUTF8(&replText, str_byitselfnogroupnumber, -1, &status);
- result = matcher2->replaceFirst(&replText, NULL, status);
+ result = matcher2->replaceFirst(&replText, nullptr, status);
REGEX_CHECK_STATUS;
const char str_byitselfnogroupnumberdefg[] = { 0x24, 0x20, 0x62, 0x79, 0x20, 0x69, 0x74, 0x73, 0x65, 0x6c, 0x66, 0x2c, 0x20, 0x6e, 0x6f, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x24, 0x24, 0x24, 0x64, 0x65, 0x66, 0x67, 0x00 }; /* $ by itself, no group number $$$defg */
REGEX_ASSERT_UTEXT_UTF8(str_byitselfnogroupnumberdefg, result);
utext_close(result);
- utext_replace(&destText, 0, utext_nativeLength(&destText), NULL, 0, &status);
+ utext_replace(&destText, 0, utext_nativeLength(&destText), nullptr, 0, &status);
result = matcher2->replaceFirst(&replText, &destText, status);
REGEX_CHECK_STATUS;
REGEX_ASSERT(result == &destText);
@@ -2643,22 +2643,22 @@ void RegexTest::API_Replace_UTF8() {
supplDigitChars[25] = 0x8F;
utext_openUTF8(&replText, (char *)supplDigitChars, -1, &status);
- result = matcher2->replaceFirst(&replText, NULL, status);
+ result = matcher2->replaceFirst(&replText, nullptr, status);
REGEX_CHECK_STATUS;
const char str_SupplementalDigit1bcdefg[] = { 0x53, 0x75, 0x70, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x20, 0x44, 0x69, 0x67, 0x69, 0x74, 0x20, 0x31, 0x20, 0x62, 0x63, 0x2e, 0x64, 0x65, 0x66, 0x67, 0x00 }; /* Supplemental Digit 1 bc.defg */
REGEX_ASSERT_UTEXT_UTF8(str_SupplementalDigit1bcdefg, result);
utext_close(result);
- utext_replace(&destText, 0, utext_nativeLength(&destText), NULL, 0, &status);
+ utext_replace(&destText, 0, utext_nativeLength(&destText), nullptr, 0, &status);
result = matcher2->replaceFirst(&replText, &destText, status);
REGEX_CHECK_STATUS;
REGEX_ASSERT(result == &destText);
REGEX_ASSERT_UTEXT_UTF8(str_SupplementalDigit1bcdefg, result);
const char str_badcapturegroupnumber5[] = { 0x62, 0x61, 0x64, 0x20, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x24, 0x35, 0x2e, 0x2e, 0x2e, 0x00 }; /* bad capture group number $5..." */
utext_openUTF8(&replText, str_badcapturegroupnumber5, -1, &status);
- REGEX_ASSERT_FAIL((result = matcher2->replaceFirst(&replText, NULL, status)), U_INDEX_OUTOFBOUNDS_ERROR);
+ REGEX_ASSERT_FAIL((result = matcher2->replaceFirst(&replText, nullptr, status)), U_INDEX_OUTOFBOUNDS_ERROR);
// REGEX_ASSERT_UTEXT_UTF8("abcdefg", result);
utext_close(result);
- utext_replace(&destText, 0, utext_nativeLength(&destText), NULL, 0, &status);
+ utext_replace(&destText, 0, utext_nativeLength(&destText), nullptr, 0, &status);
REGEX_ASSERT_FAIL((result = matcher2->replaceFirst(&replText, &destText, status)), U_INDEX_OUTOFBOUNDS_ERROR);
REGEX_ASSERT(result == &destText);
// REGEX_ASSERT_UTEXT_UTF8("abcdefg", result);
@@ -2673,12 +2673,12 @@ void RegexTest::API_Replace_UTF8() {
utext_openUTF8(&replText, str_u0043, -1, &status);
matcher->reset(&dataText);
- result = matcher->replaceAll(&replText, NULL, status);
+ result = matcher->replaceAll(&replText, nullptr, status);
REGEX_CHECK_STATUS;
const char str_C1C2C3[] = { 0x2d, 0x2d, 0x43, 0x2d, 0x2d, 0x20, 0x31, 0x20, 0x2d, 0x2d, 0x43, 0x2d, 0x2d, 0x20, 0x32, 0x20, 0x2d, 0x2d, 0x43, 0x2d, 0x2d, 0x20, 0x33, 0x00 }; /* --C-- 1 --C-- 2 --C-- 3 */
REGEX_ASSERT_UTEXT_UTF8(str_C1C2C3, result);
utext_close(result);
- utext_replace(&destText, 0, utext_nativeLength(&destText), NULL, 0, &status);
+ utext_replace(&destText, 0, utext_nativeLength(&destText), nullptr, 0, &status);
result = matcher->replaceAll(&replText, &destText, status);
REGEX_CHECK_STATUS;
REGEX_ASSERT(result == &destText);
@@ -2698,11 +2698,11 @@ void RegexTest::API_Replace_UTF8() {
expected[4] = 0x80;
expected[5] = 0x80;
- result = matcher->replaceAll(&replText, NULL, status);
+ result = matcher->replaceAll(&replText, nullptr, status);
REGEX_CHECK_STATUS;
REGEX_ASSERT_UTEXT_UTF8((char *)expected, result);
utext_close(result);
- utext_replace(&destText, 0, utext_nativeLength(&destText), NULL, 0, &status);
+ utext_replace(&destText, 0, utext_nativeLength(&destText), nullptr, 0, &status);
result = matcher->replaceAll(&replText, &destText, status);
REGEX_CHECK_STATUS;
REGEX_ASSERT(result == &destText);
@@ -3094,10 +3094,10 @@ void RegexTest::API_Pattern_UTF8() {
status = U_ZERO_ERROR;
RegexMatcher matcher(UnicodeString("(:)"), 0, status);
UnicodeString stringToSplit("first:second:third");
- UText *textToSplit = utext_openUnicodeString(NULL, &stringToSplit, &status);
+ UText *textToSplit = utext_openUnicodeString(nullptr, &stringToSplit, &status);
REGEX_CHECK_STATUS;
- UText *splits[10] = {NULL};
+ UText *splits[10] = {nullptr};
int32_t numFields = matcher.split(textToSplit, splits, UPRV_LENGTHOF(splits), status);
REGEX_CHECK_STATUS;
REGEX_ASSERT(numFields == 5);
@@ -3106,12 +3106,12 @@ void RegexTest::API_Pattern_UTF8() {
REGEX_ASSERT_UTEXT_INVARIANT("second", splits[2]);
REGEX_ASSERT_UTEXT_INVARIANT(":", splits[3]);
REGEX_ASSERT_UTEXT_INVARIANT("third", splits[4]);
- REGEX_ASSERT(splits[5] == NULL);
+ REGEX_ASSERT(splits[5] == nullptr);
for (int i=0; i<UPRV_LENGTHOF(splits); i++) {
if (splits[i]) {
utext_close(splits[i]);
- splits[i] = NULL;
+ splits[i] = nullptr;
}
}
utext_close(textToSplit);
@@ -3152,7 +3152,7 @@ RegexTest::getPath(char buffer[2048], const char *filename) {
const char *testDataDirectory = IntlTest::getSourceTestData(status);
if (U_FAILURE(status)) {
errln("ERROR: loadTestData() failed - %s", u_errorName(status));
- return NULL;
+ return nullptr;
}
strcpy(buffer, testDataDirectory);
@@ -3170,12 +3170,12 @@ void RegexTest::Extended() {
// Open and read the test data file.
//
srcPath=getPath(tdd, "regextst.txt");
- if(srcPath==NULL) {
+ if(srcPath==nullptr) {
return; /* something went wrong, error already output */
}
int32_t len;
- UChar *testData = ReadAndConvertFile(srcPath, len, "utf-8", status);
+ char16_t *testData = ReadAndConvertFile(srcPath, len, "utf-8", status);
if (U_FAILURE(status)) {
return; /* something went wrong, error already output */
}
@@ -3347,17 +3347,17 @@ void RegexTest::regex_find(const UnicodeString &pattern,
UnicodeString deTaggedInput;
int32_t patternUTF8Length, inputUTF8Length;
- char *patternChars = NULL, *inputChars = NULL;
+ char *patternChars = nullptr, *inputChars = nullptr;
UText patternText = UTEXT_INITIALIZER;
UText inputText = UTEXT_INITIALIZER;
- UConverter *UTF8Converter = NULL;
+ UConverter *UTF8Converter = nullptr;
UErrorCode status = U_ZERO_ERROR;
UParseError pe;
- RegexPattern *parsePat = NULL;
- RegexMatcher *parseMatcher = NULL;
- RegexPattern *callerPattern = NULL, *UTF8Pattern = NULL;
- RegexMatcher *matcher = NULL, *UTF8Matcher = NULL;
+ RegexPattern *parsePat = nullptr;
+ RegexMatcher *parseMatcher = nullptr;
+ RegexPattern *callerPattern = nullptr, *UTF8Pattern = nullptr;
+ RegexMatcher *matcher = nullptr, *UTF8Matcher = nullptr;
UVector groupStarts(status);
UVector groupEnds(status);
UVector groupStartsUTF8(status);
@@ -3378,26 +3378,26 @@ void RegexTest::regex_find(const UnicodeString &pattern,
// Compile the caller's pattern
//
uint32_t bflags = 0;
- if (flags.indexOf((UChar)0x69) >= 0) { // 'i' flag
+ if (flags.indexOf((char16_t)0x69) >= 0) { // 'i' flag
bflags |= UREGEX_CASE_INSENSITIVE;
}
- if (flags.indexOf((UChar)0x78) >= 0) { // 'x' flag
+ if (flags.indexOf((char16_t)0x78) >= 0) { // 'x' flag
bflags |= UREGEX_COMMENTS;
}
- if (flags.indexOf((UChar)0x73) >= 0) { // 's' flag
+ if (flags.indexOf((char16_t)0x73) >= 0) { // 's' flag
bflags |= UREGEX_DOTALL;
}
- if (flags.indexOf((UChar)0x6d) >= 0) { // 'm' flag
+ if (flags.indexOf((char16_t)0x6d) >= 0) { // 'm' flag
bflags |= UREGEX_MULTILINE;
}
- if (flags.indexOf((UChar)0x65) >= 0) { // 'e' flag
+ if (flags.indexOf((char16_t)0x65) >= 0) { // 'e' flag
bflags |= UREGEX_ERROR_ON_UNKNOWN_ESCAPES;
}
- if (flags.indexOf((UChar)0x44) >= 0) { // 'D' flag
+ if (flags.indexOf((char16_t)0x44) >= 0) { // 'D' flag
bflags |= UREGEX_UNIX_LINES;
}
- if (flags.indexOf((UChar)0x51) >= 0) { // 'Q' flag
+ if (flags.indexOf((char16_t)0x51) >= 0) { // 'Q' flag
bflags |= UREGEX_LITERAL;
}
@@ -3407,13 +3407,13 @@ void RegexTest::regex_find(const UnicodeString &pattern,
#if UCONFIG_NO_BREAK_ITERATION==1
// 'v' test flag means that the test pattern should not compile if ICU was configured
// to not include break iteration. RBBI is needed for Unicode word boundaries.
- if (flags.indexOf((UChar)0x76) >= 0 /*'v'*/ && status == U_UNSUPPORTED_ERROR) {
+ if (flags.indexOf((char16_t)0x76) >= 0 /*'v'*/ && status == U_UNSUPPORTED_ERROR) {
goto cleanupAndReturn;
}
#endif
- if (flags.indexOf((UChar)0x45) >= 0) { // flags contain 'E'
+ if (flags.indexOf((char16_t)0x45) >= 0) { // flags contain 'E'
// Expected pattern compilation error.
- if (flags.indexOf((UChar)0x64) >= 0) { // flags contain 'd'
+ if (flags.indexOf((char16_t)0x64) >= 0) { // flags contain 'd'
logln("Pattern Compile returns \"%s\"", u_errorName(status));
}
goto cleanupAndReturn;
@@ -3425,9 +3425,9 @@ void RegexTest::regex_find(const UnicodeString &pattern,
}
UTF8Converter = ucnv_open("UTF8", &status);
- ucnv_setFromUCallBack(UTF8Converter, UCNV_FROM_U_CALLBACK_STOP, NULL, NULL, NULL, &status);
+ ucnv_setFromUCallBack(UTF8Converter, UCNV_FROM_U_CALLBACK_STOP, nullptr, nullptr, nullptr, &status);
- patternUTF8Length = pattern.extract(NULL, 0, UTF8Converter, status);
+ patternUTF8Length = pattern.extract(nullptr, 0, UTF8Converter, status);
status = U_ZERO_ERROR; // buffer overflow
patternChars = new char[patternUTF8Length+1];
pattern.extract(patternChars, patternUTF8Length+1, UTF8Converter, status);
@@ -3440,13 +3440,13 @@ void RegexTest::regex_find(const UnicodeString &pattern,
#if UCONFIG_NO_BREAK_ITERATION==1
// 'v' test flag means that the test pattern should not compile if ICU was configured
// to not include break iteration. RBBI is needed for Unicode word boundaries.
- if (flags.indexOf((UChar)0x76) >= 0 /*'v'*/ && status == U_UNSUPPORTED_ERROR) {
+ if (flags.indexOf((char16_t)0x76) >= 0 /*'v'*/ && status == U_UNSUPPORTED_ERROR) {
goto cleanupAndReturn;
}
#endif
- if (flags.indexOf((UChar)0x45) >= 0) { // flags contain 'E'
+ if (flags.indexOf((char16_t)0x45) >= 0) { // flags contain 'E'
// Expected pattern compilation error.
- if (flags.indexOf((UChar)0x64) >= 0) { // flags contain 'd'
+ if (flags.indexOf((char16_t)0x64) >= 0) { // flags contain 'd'
logln("Pattern Compile returns \"%s\" (UTF8)", u_errorName(status));
}
goto cleanupAndReturn;
@@ -3458,17 +3458,17 @@ void RegexTest::regex_find(const UnicodeString &pattern,
}
}
- if (UTF8Pattern == NULL) {
+ if (UTF8Pattern == nullptr) {
// UTF-8 does not allow unpaired surrogates, so this could actually happen without being a failure of the engine
logln("Unable to create UTF-8 pattern, skipping UTF-8 tests for %s:%d", srcPath, line);
status = U_ZERO_ERROR;
}
- if (flags.indexOf((UChar)0x64) >= 0) { // 'd' flag
+ if (flags.indexOf((char16_t)0x64) >= 0) { // 'd' flag
callerPattern->dumpPattern();
}
- if (flags.indexOf((UChar)0x45) >= 0) { // 'E' flag
+ if (flags.indexOf((char16_t)0x45) >= 0) { // 'E' flag
errln("%s, Line %d: Expected, but did not get, a pattern compilation error.", srcPath, line);
goto cleanupAndReturn;
}
@@ -3479,7 +3479,7 @@ void RegexTest::regex_find(const UnicodeString &pattern,
//
numFinds = 1;
for (i=2; i<=9; i++) {
- if (flags.indexOf((UChar)(0x30 + i)) >= 0) { // digit flag
+ if (flags.indexOf((char16_t)(0x30 + i)) >= 0) { // digit flag
if (numFinds != 1) {
errln("Line %d: more than one digit flag. Scanning %d.", line, i);
goto cleanupAndReturn;
@@ -3489,10 +3489,10 @@ void RegexTest::regex_find(const UnicodeString &pattern,
}
// 'M' flag. Use matches() instead of find()
- if (flags.indexOf((UChar)0x4d) >= 0) {
+ if (flags.indexOf((char16_t)0x4d) >= 0) {
useMatchesFunc = true;
}
- if (flags.indexOf((UChar)0x4c) >= 0) {
+ if (flags.indexOf((char16_t)0x4c) >= 0) {
useLookingAtFunc = true;
}
@@ -3548,12 +3548,12 @@ void RegexTest::regex_find(const UnicodeString &pattern,
//
matcher = callerPattern->matcher(deTaggedInput, status);
REGEX_CHECK_STATUS_L(line);
- if (flags.indexOf((UChar)0x74) >= 0) { // 't' trace flag
+ if (flags.indexOf((char16_t)0x74) >= 0) { // 't' trace flag
matcher->setTrace(true);
}
- if (UTF8Pattern != NULL) {
- inputUTF8Length = deTaggedInput.extract(NULL, 0, UTF8Converter, status);
+ if (UTF8Pattern != nullptr) {
+ inputUTF8Length = deTaggedInput.extract(nullptr, 0, UTF8Converter, status);
status = U_ZERO_ERROR; // buffer overflow
inputChars = new char[inputUTF8Length+1];
deTaggedInput.extract(inputChars, inputUTF8Length+1, UTF8Converter, status);
@@ -3564,7 +3564,7 @@ void RegexTest::regex_find(const UnicodeString &pattern,
REGEX_CHECK_STATUS_L(line);
}
- if (UTF8Matcher == NULL) {
+ if (UTF8Matcher == nullptr) {
// UTF-8 does not allow unpaired surrogates, so this could actually happen without being a failure of the engine
logln("Unable to create UTF-8 matcher, skipping UTF-8 tests for %s:%d", srcPath, line);
status = U_ZERO_ERROR;
@@ -3574,8 +3574,8 @@ void RegexTest::regex_find(const UnicodeString &pattern,
//
// Generate native indices for UTF8 versions of region and capture group info
//
- if (UTF8Matcher != NULL) {
- if (flags.indexOf((UChar)0x74) >= 0) { // 't' trace flag
+ if (UTF8Matcher != nullptr) {
+ if (flags.indexOf((char16_t)0x74) >= 0) { // 't' trace flag
UTF8Matcher->setTrace(true);
}
if (regionStart>=0) (void) utextOffsetToNative(&inputText, regionStart, regionStartUTF8);
@@ -3613,20 +3613,20 @@ void RegexTest::regex_find(const UnicodeString &pattern,
if (regionStart>=0) {
matcher->region(regionStart, regionEnd, status);
REGEX_CHECK_STATUS_L(line);
- if (UTF8Matcher != NULL) {
+ if (UTF8Matcher != nullptr) {
UTF8Matcher->region(regionStartUTF8, regionEndUTF8, status);
REGEX_CHECK_STATUS_L(line);
}
}
- if (flags.indexOf((UChar)0x61) >= 0) { // 'a' anchoring bounds flag
+ if (flags.indexOf((char16_t)0x61) >= 0) { // 'a' anchoring bounds flag
matcher->useAnchoringBounds(false);
- if (UTF8Matcher != NULL) {
+ if (UTF8Matcher != nullptr) {
UTF8Matcher->useAnchoringBounds(false);
}
}
- if (flags.indexOf((UChar)0x62) >= 0) { // 'b' transparent bounds flag
+ if (flags.indexOf((char16_t)0x62) >= 0) { // 'b' transparent bounds flag
matcher->useTransparentBounds(true);
- if (UTF8Matcher != NULL) {
+ if (UTF8Matcher != nullptr) {
UTF8Matcher->useTransparentBounds(true);
}
}
@@ -3641,17 +3641,17 @@ void RegexTest::regex_find(const UnicodeString &pattern,
for (i=0; i<numFinds; i++) {
if (useMatchesFunc) {
isMatch = matcher->matches(status);
- if (UTF8Matcher != NULL) {
+ if (UTF8Matcher != nullptr) {
isUTF8Match = UTF8Matcher->matches(status);
}
} else if (useLookingAtFunc) {
isMatch = matcher->lookingAt(status);
- if (UTF8Matcher != NULL) {
+ if (UTF8Matcher != nullptr) {
isUTF8Match = UTF8Matcher->lookingAt(status);
}
} else {
isMatch = matcher->find();
- if (UTF8Matcher != NULL) {
+ if (UTF8Matcher != nullptr) {
isUTF8Match = UTF8Matcher->find();
}
}
@@ -3676,7 +3676,7 @@ void RegexTest::regex_find(const UnicodeString &pattern,
dataerrln("Error at line %d: Match expected, but none found.", line);
failed = true;
goto cleanupAndReturn;
- } else if (UTF8Matcher != NULL && isUTF8Match == false && groupStarts.size() != 0) {
+ } else if (UTF8Matcher != nullptr && isUTF8Match == false && groupStarts.size() != 0) {
errln("Error at line %d: Match expected, but none found. (UTF8)", line);
failed = true;
goto cleanupAndReturn;
@@ -3690,7 +3690,7 @@ void RegexTest::regex_find(const UnicodeString &pattern,
failed = true;
}
- if (flags.indexOf((UChar)0x47 /*G*/) >= 0) {
+ if (flags.indexOf((char16_t)0x47 /*G*/) >= 0) {
// Only check for match / no match. Don't check capture groups.
goto cleanupAndReturn;
}
@@ -3704,7 +3704,7 @@ void RegexTest::regex_find(const UnicodeString &pattern,
line, i, expectedStart, matcher->start(i, status));
failed = true;
goto cleanupAndReturn; // Good chance of subsequent bogus errors. Stop now.
- } else if (UTF8Matcher != NULL && UTF8Matcher->start(i, status) != expectedStartUTF8) {
+ } else if (UTF8Matcher != nullptr && UTF8Matcher->start(i, status) != expectedStartUTF8) {
errln("Error at line %d: incorrect start position for group %d. Expected %d, got %d (UTF8)",
line, i, expectedStartUTF8, UTF8Matcher->start(i, status));
failed = true;
@@ -3719,7 +3719,7 @@ void RegexTest::regex_find(const UnicodeString &pattern,
failed = true;
// Error on end position; keep going; real error is probably yet to come as group
// end positions work from end of the input data towards the front.
- } else if (UTF8Matcher != NULL && UTF8Matcher->end(i, status) != expectedEndUTF8) {
+ } else if (UTF8Matcher != nullptr && UTF8Matcher->end(i, status) != expectedEndUTF8) {
errln("Error at line %d: incorrect end position for group %d. Expected %d, got %d (UTF8)",
line, i, expectedEndUTF8, UTF8Matcher->end(i, status));
failed = true;
@@ -3732,47 +3732,47 @@ void RegexTest::regex_find(const UnicodeString &pattern,
line, groupStarts.size()-1, matcher->groupCount());
failed = true;
}
- else if (UTF8Matcher != NULL && UTF8Matcher->groupCount()+1 < groupStarts.size()) {
+ else if (UTF8Matcher != nullptr && UTF8Matcher->groupCount()+1 < groupStarts.size()) {
errln("Error at line %d: Expected %d capture groups, found %d. (UTF8)",
line, groupStarts.size()-1, UTF8Matcher->groupCount());
failed = true;
}
- if ((flags.indexOf((UChar)0x59) >= 0) && // 'Y' flag: RequireEnd() == false
+ if ((flags.indexOf((char16_t)0x59) >= 0) && // 'Y' flag: RequireEnd() == false
matcher->requireEnd() == true) {
errln("Error at line %d: requireEnd() returned true. Expected false", line);
failed = true;
- } else if (UTF8Matcher != NULL && (flags.indexOf((UChar)0x59) >= 0) && // 'Y' flag: RequireEnd() == false
+ } else if (UTF8Matcher != nullptr && (flags.indexOf((char16_t)0x59) >= 0) && // 'Y' flag: RequireEnd() == false
UTF8Matcher->requireEnd() == true) {
errln("Error at line %d: requireEnd() returned true. Expected false (UTF8)", line);
failed = true;
}
- if ((flags.indexOf((UChar)0x79) >= 0) && // 'y' flag: RequireEnd() == true
+ if ((flags.indexOf((char16_t)0x79) >= 0) && // 'y' flag: RequireEnd() == true
matcher->requireEnd() == false) {
errln("Error at line %d: requireEnd() returned false. Expected true", line);
failed = true;
- } else if (UTF8Matcher != NULL && (flags.indexOf((UChar)0x79) >= 0) && // 'Y' flag: RequireEnd() == false
+ } else if (UTF8Matcher != nullptr && (flags.indexOf((char16_t)0x79) >= 0) && // 'Y' flag: RequireEnd() == false
UTF8Matcher->requireEnd() == false) {
errln("Error at line %d: requireEnd() returned false. Expected true (UTF8)", line);
failed = true;
}
- if ((flags.indexOf((UChar)0x5A) >= 0) && // 'Z' flag: hitEnd() == false
+ if ((flags.indexOf((char16_t)0x5A) >= 0) && // 'Z' flag: hitEnd() == false
matcher->hitEnd() == true) {
errln("Error at line %d: hitEnd() returned true. Expected false", line);
failed = true;
- } else if (UTF8Matcher != NULL && (flags.indexOf((UChar)0x5A) >= 0) && // 'Z' flag: hitEnd() == false
+ } else if (UTF8Matcher != nullptr && (flags.indexOf((char16_t)0x5A) >= 0) && // 'Z' flag: hitEnd() == false
UTF8Matcher->hitEnd() == true) {
errln("Error at line %d: hitEnd() returned true. Expected false (UTF8)", line);
failed = true;
}
- if ((flags.indexOf((UChar)0x7A) >= 0) && // 'z' flag: hitEnd() == true
+ if ((flags.indexOf((char16_t)0x7A) >= 0) && // 'z' flag: hitEnd() == true
matcher->hitEnd() == false) {
errln("Error at line %d: hitEnd() returned false. Expected true", line);
failed = true;
- } else if (UTF8Matcher != NULL && (flags.indexOf((UChar)0x7A) >= 0) && // 'z' flag: hitEnd() == true
+ } else if (UTF8Matcher != nullptr && (flags.indexOf((char16_t)0x7A) >= 0) && // 'z' flag: hitEnd() == true
UTF8Matcher->hitEnd() == false) {
errln("Error at line %d: hitEnd() returned false. Expected true (UTF8)", line);
failed = true;
@@ -3919,12 +3919,12 @@ void RegexTest::PerlTests() {
// Open and read the test data file.
//
srcPath=getPath(tdd, "re_tests.txt");
- if(srcPath==NULL) {
+ if(srcPath==nullptr) {
return; /* something went wrong, error already output */
}
int32_t len;
- UChar *testData = ReadAndConvertFile(srcPath, len, "iso-8859-1", status);
+ char16_t *testData = ReadAndConvertFile(srcPath, len, "iso-8859-1", status);
if (U_FAILURE(status)) {
return; /* something went wrong, error already output */
}
@@ -4016,11 +4016,11 @@ void RegexTest::PerlTests() {
return;
}
int32_t flags = 0;
- const UChar UChar_c = 0x63; // Char constants for the flag letters.
- const UChar UChar_i = 0x69; // (Damn the lack of Unicode support in C)
- const UChar UChar_m = 0x6d;
- const UChar UChar_x = 0x78;
- const UChar UChar_y = 0x79;
+ const char16_t UChar_c = 0x63; // Char constants for the flag letters.
+ const char16_t UChar_i = 0x69; // (Damn the lack of Unicode support in C)
+ const char16_t UChar_m = 0x6d;
+ const char16_t UChar_x = 0x78;
+ const char16_t UChar_y = 0x79;
if (flagStr.indexOf(UChar_i) != -1) {
flags |= UREGEX_CASE_INSENSITIVE;
}
@@ -4195,7 +4195,7 @@ void RegexTest::PerlTests() {
if (perlExpr.length() > 1) {
perlExpr.remove(0, 1); // Remove the '\', but only if not last char.
}
- UChar c = perlExpr.charAt(0);
+ char16_t c = perlExpr.charAt(0);
switch (c) {
case 'n': c = '\n'; break;
// add any other escape sequences that show up in the test expected results.
@@ -4276,26 +4276,26 @@ void RegexTest::PerlTestsUTF8() {
UParseError pe;
LocalUConverterPointer UTF8Converter(ucnv_open("UTF-8", &status));
UText patternText = UTEXT_INITIALIZER;
- char *patternChars = NULL;
+ char *patternChars = nullptr;
int32_t patternLength;
int32_t patternCapacity = 0;
UText inputText = UTEXT_INITIALIZER;
- char *inputChars = NULL;
+ char *inputChars = nullptr;
int32_t inputLength;
int32_t inputCapacity = 0;
- ucnv_setFromUCallBack(UTF8Converter.getAlias(), UCNV_FROM_U_CALLBACK_STOP, NULL, NULL, NULL, &status);
+ ucnv_setFromUCallBack(UTF8Converter.getAlias(), UCNV_FROM_U_CALLBACK_STOP, nullptr, nullptr, nullptr, &status);
//
// Open and read the test data file.
//
srcPath=getPath(tdd, "re_tests.txt");
- if(srcPath==NULL) {
+ if(srcPath==nullptr) {
return; /* something went wrong, error already output */
}
int32_t len;
- UChar *testData = ReadAndConvertFile(srcPath, len, "iso-8859-1", status);
+ char16_t *testData = ReadAndConvertFile(srcPath, len, "iso-8859-1", status);
if (U_FAILURE(status)) {
return; /* something went wrong, error already output */
}
@@ -4387,11 +4387,11 @@ void RegexTest::PerlTestsUTF8() {
return;
}
int32_t flags = 0;
- const UChar UChar_c = 0x63; // Char constants for the flag letters.
- const UChar UChar_i = 0x69; // (Damn the lack of Unicode support in C)
- const UChar UChar_m = 0x6d;
- const UChar UChar_x = 0x78;
- const UChar UChar_y = 0x79;
+ const char16_t UChar_c = 0x63; // Char constants for the flag letters.
+ const char16_t UChar_i = 0x69; // (Damn the lack of Unicode support in C)
+ const char16_t UChar_m = 0x6d;
+ const char16_t UChar_x = 0x78;
+ const char16_t UChar_y = 0x79;
if (flagStr.indexOf(UChar_i) != -1) {
flags |= UREGEX_CASE_INSENSITIVE;
}
@@ -4585,7 +4585,7 @@ void RegexTest::PerlTestsUTF8() {
if (perlExpr.length() > 1) {
perlExpr.remove(0, 1); // Remove the '\', but only if not last char.
}
- UChar c = perlExpr.charAt(0);
+ char16_t c = perlExpr.charAt(0);
switch (c) {
case 'n': c = '\n'; break;
// add any other escape sequences that show up in the test expected results.
@@ -4697,7 +4697,7 @@ struct callBackContext {
U_CDECL_BEGIN
static UBool U_CALLCONV
testCallBackFn(const void *context, int32_t steps) {
- callBackContext *info = (callBackContext *)context;
+ callBackContext *info = static_cast<callBackContext *>(const_cast<void*>(context));
if (info->lastSteps+1 != steps) {
info->test->errln("incorrect steps in callback. Expected %d, got %d\n", info->lastSteps+1, steps);
}
@@ -4721,8 +4721,8 @@ void RegexTest::Callbacks() {
REGEX_CHECK_STATUS;
matcher.getMatchCallback(returnedFn, returnedContext, status);
REGEX_CHECK_STATUS;
- REGEX_ASSERT(returnedFn == NULL);
- REGEX_ASSERT(returnedContext == NULL);
+ REGEX_ASSERT(returnedFn == nullptr);
+ REGEX_ASSERT(returnedContext == nullptr);
}
{
@@ -4825,8 +4825,8 @@ void RegexTest::FindProgressCallbacks() {
REGEX_CHECK_STATUS;
matcher.getFindProgressCallback(returnedFn, returnedContext, status);
REGEX_CHECK_STATUS;
- REGEX_ASSERT(returnedFn == NULL);
- REGEX_ASSERT(returnedContext == NULL);
+ REGEX_ASSERT(returnedFn == nullptr);
+ REGEX_ASSERT(returnedContext == nullptr);
}
{
@@ -4916,7 +4916,7 @@ void RegexTest::PreAllocatedUTextCAPI () {
{
UText text1 = UTEXT_INITIALIZER;
UText text2 = UTEXT_INITIALIZER;
- UChar text2Chars[20];
+ char16_t text2Chars[20];
UText *resultText;
status = U_ZERO_ERROR;
@@ -4926,7 +4926,7 @@ void RegexTest::PreAllocatedUTextCAPI () {
utext_openUChars(&text2, text2Chars, -1, &status);
regextst_openUTF8FromInvariant(&patternText, "abc*d", -1, &status);
- re = uregex_openUText(&patternText, 0, NULL, &status);
+ re = uregex_openUText(&patternText, 0, nullptr, &status);
/* First set a UText */
uregex_setUText(re, &text1, &status);
@@ -4944,7 +4944,7 @@ void RegexTest::PreAllocatedUTextCAPI () {
utext_setNativeIndex(&text1, 0);
REGEX_ASSERT(testUTextEqual(resultText, &text1));
- /* Then set a UChar * */
+ /* Then set a char16_t * */
uregex_setText(re, text2Chars, 7, &status);
resultText = uregex_getUText(re, &bufferText, &status);
REGEX_CHECK_STATUS;
@@ -4962,7 +4962,7 @@ void RegexTest::PreAllocatedUTextCAPI () {
* group()
*/
{
- UChar text1[80];
+ char16_t text1[80];
UText *actual;
UBool result;
int64_t length = 0;
@@ -4972,7 +4972,7 @@ void RegexTest::PreAllocatedUTextCAPI () {
// 0 1 2 3 4
status = U_ZERO_ERROR;
- re = uregex_openC("abc(.*?)def", 0, NULL, &status);
+ re = uregex_openC("abc(.*?)def", 0, nullptr, &status);
REGEX_CHECK_STATUS;
uregex_setText(re, text1, -1, &status);
@@ -5010,8 +5010,8 @@ void RegexTest::PreAllocatedUTextCAPI () {
* replaceFirst()
*/
{
- UChar text1[80];
- UChar text2[80];
+ char16_t text1[80];
+ char16_t text2[80];
UText replText = UTEXT_INITIALIZER;
UText *result;
status = U_ZERO_ERROR;
@@ -5022,13 +5022,13 @@ void RegexTest::PreAllocatedUTextCAPI () {
u_uastrncpy(text2, "No match here.", UPRV_LENGTHOF(text2)/2);
regextst_openUTF8FromInvariant(&replText, "<$1>", -1, &status);
- re = uregex_openC("x(.*?)x", 0, NULL, &status);
+ re = uregex_openC("x(.*?)x", 0, nullptr, &status);
REGEX_CHECK_STATUS;
/* Normal case, with match */
uregex_setText(re, text1, -1, &status);
REGEX_CHECK_STATUS;
- utext_replace(&bufferText, 0, utext_nativeLength(&bufferText), NULL, 0, &status);
+ utext_replace(&bufferText, 0, utext_nativeLength(&bufferText), nullptr, 0, &status);
REGEX_CHECK_STATUS;
result = uregex_replaceFirstUText(re, &replText, &bufferText, &status);
REGEX_CHECK_STATUS;
@@ -5037,7 +5037,7 @@ void RegexTest::PreAllocatedUTextCAPI () {
/* No match. Text should copy to output with no changes. */
uregex_setText(re, text2, -1, &status);
- utext_replace(&bufferText, 0, utext_nativeLength(&bufferText), NULL, 0, &status);
+ utext_replace(&bufferText, 0, utext_nativeLength(&bufferText), nullptr, 0, &status);
result = uregex_replaceFirstUText(re, &replText, &bufferText, &status);
REGEX_CHECK_STATUS;
REGEX_ASSERT(result == &bufferText);
@@ -5046,7 +5046,7 @@ void RegexTest::PreAllocatedUTextCAPI () {
/* Unicode escapes */
uregex_setText(re, text1, -1, &status);
regextst_openUTF8FromInvariant(&replText, "\\\\\\u0041$1\\U00000042\\$\\a", -1, &status);
- utext_replace(&bufferText, 0, utext_nativeLength(&bufferText), NULL, 0, &status);
+ utext_replace(&bufferText, 0, utext_nativeLength(&bufferText), nullptr, 0, &status);
result = uregex_replaceFirstUText(re, &replText, &bufferText, &status);
REGEX_CHECK_STATUS;
REGEX_ASSERT(result == &bufferText);
@@ -5061,8 +5061,8 @@ void RegexTest::PreAllocatedUTextCAPI () {
* replaceAll()
*/
{
- UChar text1[80];
- UChar text2[80];
+ char16_t text1[80];
+ char16_t text2[80];
UText replText = UTEXT_INITIALIZER;
UText *result;
@@ -5071,12 +5071,12 @@ void RegexTest::PreAllocatedUTextCAPI () {
u_uastrncpy(text2, "No match here.", sizeof(text2)/2);
regextst_openUTF8FromInvariant(&replText, "<$1>", -1, &status);
- re = uregex_openC("x(.*?)x", 0, NULL, &status);
+ re = uregex_openC("x(.*?)x", 0, nullptr, &status);
REGEX_CHECK_STATUS;
/* Normal case, with match */
uregex_setText(re, text1, -1, &status);
- utext_replace(&bufferText, 0, utext_nativeLength(&bufferText), NULL, 0, &status);
+ utext_replace(&bufferText, 0, utext_nativeLength(&bufferText), nullptr, 0, &status);
result = uregex_replaceAllUText(re, &replText, &bufferText, &status);
REGEX_CHECK_STATUS;
REGEX_ASSERT(result == &bufferText);
@@ -5084,7 +5084,7 @@ void RegexTest::PreAllocatedUTextCAPI () {
/* No match. Text should copy to output with no changes. */
uregex_setText(re, text2, -1, &status);
- utext_replace(&bufferText, 0, utext_nativeLength(&bufferText), NULL, 0, &status);
+ utext_replace(&bufferText, 0, utext_nativeLength(&bufferText), nullptr, 0, &status);
result = uregex_replaceAllUText(re, &replText, &bufferText, &status);
REGEX_CHECK_STATUS;
REGEX_ASSERT(result == &bufferText);
@@ -5136,7 +5136,7 @@ void RegexTest::NamedCapture() {
// After copying a pattern, named capture should still work in the copy.
RegexPattern *copiedPat = new RegexPattern(*pat);
REGEX_ASSERT(*copiedPat == *pat);
- delete pat; pat = NULL; // Delete original, copy should have no references back to it.
+ delete pat; pat = nullptr; // Delete original, copy should have no references back to it.
group = copiedPat->groupNumberFromName("five", -1, status);
REGEX_CHECK_STATUS;
@@ -5234,13 +5234,13 @@ void RegexTest::NamedCapture() {
// TODO: factor out the test data.
status = U_ZERO_ERROR;
- URegularExpression *re = uregex_openC("..(?<one>m)(.)(.)", 0, NULL, &status);
+ URegularExpression *re = uregex_openC("..(?<one>m)(.)(.)", 0, nullptr, &status);
REGEX_CHECK_STATUS;
text = UnicodeString("abcmxyz");
uregex_setText(re, text.getBuffer(), text.length(), &status);
REGEX_CHECK_STATUS;
- UChar resultBuf[100];
+ char16_t resultBuf[100];
int32_t resultLength;
UnicodeString repl;
@@ -5346,14 +5346,14 @@ void RegexTest::NamedCaptureLimits() {
int32_t nn;
for (nn=1; nn<goodLimit; nn++) {
- sprintf(nnbuf, "(?<nn%d>)", nn);
+ snprintf(nnbuf, sizeof(nnbuf), "(?<nn%d>)", nn);
pattern.append(UnicodeString(nnbuf, -1, US_INV));
}
UErrorCode status = U_ZERO_ERROR;
RegexPattern *pat = RegexPattern::compile(pattern, 0, status);
REGEX_CHECK_STATUS;
for (nn=1; nn<goodLimit; nn++) {
- sprintf(nnbuf, "nn%d", nn);
+ snprintf(nnbuf, sizeof(nnbuf), "nn%d", nn);
int32_t groupNum = pat->groupNumberFromName(nnbuf, -1, status);
REGEX_ASSERT(nn == groupNum);
if (nn != groupNum) {
@@ -5364,7 +5364,7 @@ void RegexTest::NamedCaptureLimits() {
pattern.remove();
for (nn=1; nn<failLimit; nn++) {
- sprintf(nnbuf, "(?<nn%d>)", nn);
+ snprintf(nnbuf, sizeof(nnbuf), "(?<nn%d>)", nn);
pattern.append(UnicodeString(nnbuf, -1, US_INV));
}
status = U_ZERO_ERROR;
@@ -5385,8 +5385,8 @@ void RegexTest::Bug7651() {
// It will cause a segfault if RegexMatcher tries to use fSmallData instead of malloc'ing the memory needed (see init2) for the pattern operator stack allocation.
UnicodeString pattern2("((https?\\:\\/\\/|www\\.)\\S+(?<![\\!\\),\\.:;\\]\\u0080-\\uFFFF])|(?<![A-Za-z0-9_])[\\@\\uff20][A-Za-z0-9_]+(?:\\/[\\w\\-]+)?|(?<![A-Za-z0-9])[\\#\\uff03][A-Za-z0-9_][A-Za-z0-9_\\u00c0-\\u00d6\\u00c8-\\u00f6\\u00f8-\\u00ff]*|\\$[A-Za-z]+)");
UnicodeString s("#ff @abcd This is test");
- RegexPattern *REPattern = NULL;
- RegexMatcher *REMatcher = NULL;
+ RegexPattern *REPattern = nullptr;
+ RegexMatcher *REMatcher = nullptr;
UErrorCode status = U_ZERO_ERROR;
UParseError pe;
@@ -5505,12 +5505,12 @@ void RegexTest::Bug10459() {
UnicodeString patternString("(txt)");
UnicodeString txtString("txt");
- UText *utext_pat = utext_openUnicodeString(NULL, &patternString, &status);
+ UText *utext_pat = utext_openUnicodeString(nullptr, &patternString, &status);
REGEX_CHECK_STATUS;
- UText *utext_txt = utext_openUnicodeString(NULL, &txtString, &status);
+ UText *utext_txt = utext_openUnicodeString(nullptr, &txtString, &status);
REGEX_CHECK_STATUS;
- URegularExpression *icu_re = uregex_openUText(utext_pat, 0, NULL, &status);
+ URegularExpression *icu_re = uregex_openUText(utext_pat, 0, nullptr, &status);
REGEX_CHECK_STATUS;
uregex_setUText(icu_re, utext_txt, &status);
@@ -5520,7 +5520,7 @@ void RegexTest::Bug10459() {
// was causing a segfault. Only for Regular Expressions created from UText.
// It should set an U_REGEX_INVALID_STATE.
- UChar buf[100];
+ char16_t buf[100];
int32_t len = uregex_group(icu_re, 0, buf, UPRV_LENGTHOF(buf), &status);
REGEX_ASSERT(status == U_REGEX_INVALID_STATE);
REGEX_ASSERT(len == 0);
@@ -5586,9 +5586,9 @@ void RegexTest::TestCase11049(const char *pattern, const char *data, UBool expec
LocalPointer<RegexPattern> compiledPat(RegexPattern::compile(patternString, 0, status));
UnicodeString dataString = UnicodeString(data).unescape();
- UChar *exactBuffer = new UChar[dataString.length()];
+ char16_t *exactBuffer = new char16_t[dataString.length()];
dataString.extract(exactBuffer, dataString.length(), status);
- UText *ut = utext_openUChars(NULL, exactBuffer, dataString.length(), &status);
+ UText *ut = utext_openUChars(nullptr, exactBuffer, dataString.length(), &status);
LocalPointer<RegexMatcher> matcher(compiledPat->matcher(status));
REGEX_CHECK_STATUS;
@@ -5604,7 +5604,7 @@ void RegexTest::TestCase11049(const char *pattern, const char *data, UBool expec
// Size of the original char * data (invariant charset) will be <= than the equivalent UTF-8
// because string.unescape() will only shrink it.
char * utf8Buffer = new char[uprv_strlen(data)+1];
- u_strToUTF8(utf8Buffer, static_cast<int32_t>(uprv_strlen(data)+1), NULL, dataString.getBuffer(), dataString.length(), &status);
+ u_strToUTF8(utf8Buffer, static_cast<int32_t>(uprv_strlen(data)+1), nullptr, dataString.getBuffer(), dataString.length(), &status);
REGEX_CHECK_STATUS;
ut = utext_openUTF8(ut, utf8Buffer, -1, &status);
REGEX_CHECK_STATUS;
@@ -5671,13 +5671,13 @@ void RegexTest::TestBug11480() {
// indistinguishable from a group with a zero length match.)
UErrorCode status = U_ZERO_ERROR;
- URegularExpression *re = uregex_openC("(A)|(B)", 0, NULL, &status);
+ URegularExpression *re = uregex_openC("(A)|(B)", 0, nullptr, &status);
REGEX_CHECK_STATUS;
UnicodeString text = UNICODE_STRING_SIMPLE("A");
uregex_setText(re, text.getBuffer(), text.length(), &status);
REGEX_CHECK_STATUS;
REGEX_ASSERT(uregex_lookingAt(re, 0, &status));
- UChar buf[10] = {(UChar)13, (UChar)13, (UChar)13, (UChar)13};
+ char16_t buf[10] = {(char16_t)13, (char16_t)13, (char16_t)13, (char16_t)13};
int32_t length = uregex_group(re, 2, buf+1, UPRV_LENGTHOF(buf)-1, &status);
REGEX_ASSERT(length == 0);
REGEX_ASSERT(buf[0] == 13);
@@ -5734,7 +5734,7 @@ void RegexTest::TestBug12884() {
"carácter, sin importar la plataforma, sin importar el programa,"
"sin importar el idioma.");
status = U_ZERO_ERROR;
- LocalUTextPointer ut(utext_openUTF8(NULL, text8.data(), text8.length(), &status));
+ LocalUTextPointer ut(utext_openUTF8(nullptr, text8.data(), text8.length(), &status));
REGEX_CHECK_STATUS;
m.reset(ut.getAlias());
m.find(status);
@@ -5751,15 +5751,15 @@ void RegexTest::TestBug12884() {
// The failure is seen when running this test with Clang's Address Sanitizer.
void RegexTest::TestBug13631() {
- const UChar *pats[] = { u"(?<!^)",
+ const char16_t *pats[] = { u"(?<!^)",
u"(?<=^)",
nullptr
};
- for (const UChar **pat=pats; *pat; ++pat) {
+ for (const char16_t **pat=pats; *pat; ++pat) {
UErrorCode status = U_ZERO_ERROR;
UnicodeString upat(*pat);
RegexMatcher matcher(upat, 0, status);
- const UChar s =u'a';
+ const char16_t s =u'a';
UText *ut = utext_openUChars(nullptr, &s, 1, &status);
REGEX_CHECK_STATUS;
matcher.reset(ut);
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/regextst.h b/Build/source/libs/icu/icu-src/source/test/intltest/regextst.h
index d11e447b62b..5cb38cfb123 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/regextst.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/regextst.h
@@ -24,7 +24,7 @@ public:
RegexTest();
virtual ~RegexTest();
- virtual void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ virtual void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
// The following are test functions that are visible from the intltest test framework.
virtual void API_Match();
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/regiontst.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/regiontst.cpp
index bfb5810e7e3..685cc73cba3 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/regiontst.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/regiontst.cpp
@@ -30,18 +30,18 @@ typedef struct KnownRegion {
static KnownRegion knownRegions[] = {
// Code, Num, Parent, Type, Containing Continent
{ "TP" , 626, "035", URGN_TERRITORY, "142" },
- { "001", 1, NULL , URGN_WORLD, NULL },
- { "002", 2, "001", URGN_CONTINENT, NULL },
- { "003", 3, NULL, URGN_GROUPING, NULL },
+ { "001", 1, nullptr , URGN_WORLD, nullptr },
+ { "002", 2, "001", URGN_CONTINENT, nullptr },
+ { "003", 3, nullptr, URGN_GROUPING, nullptr },
{ "005", 5, "019", URGN_SUBCONTINENT, "019" },
- { "009", 9, "001", URGN_CONTINENT, NULL},
+ { "009", 9, "001", URGN_CONTINENT, nullptr},
{ "011", 11, "002", URGN_SUBCONTINENT, "002" },
{ "013", 13, "019", URGN_SUBCONTINENT, "019" },
{ "014", 14, "002", URGN_SUBCONTINENT, "002" },
{ "015", 15, "002", URGN_SUBCONTINENT, "002" },
{ "017", 17, "002", URGN_SUBCONTINENT, "002" },
{ "018", 18, "002", URGN_SUBCONTINENT, "002" },
- { "019", 19, "001", URGN_CONTINENT, NULL },
+ { "019", 19, "001", URGN_CONTINENT, nullptr },
{ "021", 21, "019", URGN_SUBCONTINENT, "019" },
{ "029", 29, "019", URGN_SUBCONTINENT, "019" },
{ "030", 30, "142", URGN_SUBCONTINENT, "142" },
@@ -52,14 +52,14 @@ static KnownRegion knownRegions[] = {
{ "054", 54, "009", URGN_SUBCONTINENT, "009" },
{ "057", 57, "009", URGN_SUBCONTINENT, "009" },
{ "061", 61, "009", URGN_SUBCONTINENT, "009" },
- { "142", 142, "001", URGN_CONTINENT, NULL },
+ { "142", 142, "001", URGN_CONTINENT, nullptr },
{ "143", 143, "142", URGN_SUBCONTINENT, "142" },
{ "145", 145, "142", URGN_SUBCONTINENT, "142" },
- { "150", 150, "001", URGN_CONTINENT, NULL },
+ { "150", 150, "001", URGN_CONTINENT, nullptr },
{ "151", 151, "150", URGN_SUBCONTINENT, "150" },
{ "154", 154, "150", URGN_SUBCONTINENT, "150" },
{ "155", 155, "150", URGN_SUBCONTINENT, "150" },
- { "419", 419, NULL, URGN_GROUPING , NULL},
+ { "419", 419, nullptr, URGN_GROUPING , nullptr},
{ "AC" , -1, "QO" , URGN_TERRITORY, "009" },
{ "AD" , 20, "039", URGN_TERRITORY, "150" },
{ "AE" , 784, "145", URGN_TERRITORY, "142" },
@@ -68,7 +68,7 @@ static KnownRegion knownRegions[] = {
{ "AI" , 660, "029", URGN_TERRITORY, "019" },
{ "AL" , 8, "039", URGN_TERRITORY, "150" },
{ "AM" , 51, "145", URGN_TERRITORY, "142" },
- { "AN" , 530, NULL, URGN_DEPRECATED, NULL },
+ { "AN" , 530, nullptr, URGN_DEPRECATED, nullptr },
{ "AO" , 24, "017", URGN_TERRITORY, "002" },
{ "AQ" , 10, "QO" , URGN_TERRITORY, "009" },
{ "AR" , 32, "005", URGN_TERRITORY, "019" },
@@ -136,7 +136,7 @@ static KnownRegion knownRegions[] = {
{ "ER" , 232, "014", URGN_TERRITORY, "002" },
{ "ES" , 724, "039", URGN_TERRITORY, "150" },
{ "ET" , 231, "014", URGN_TERRITORY, "002" },
- { "EU" , 967, NULL, URGN_GROUPING, NULL },
+ { "EU" , 967, nullptr, URGN_GROUPING, nullptr },
{ "FI" , 246, "154", URGN_TERRITORY, "150" },
{ "FJ" , 242, "054", URGN_TERRITORY, "009" },
{ "FK" , 238, "005", URGN_TERRITORY, "019" },
@@ -239,7 +239,7 @@ static KnownRegion knownRegions[] = {
{ "NO" , 578, "154", URGN_TERRITORY, "150" },
{ "NP" , 524, "034", URGN_TERRITORY, "142" },
{ "NR" , 520, "057", URGN_TERRITORY, "009" },
- { "NT" , 536, NULL , URGN_DEPRECATED, NULL },
+ { "NT" , 536, nullptr , URGN_DEPRECATED, nullptr },
{ "NU" , 570, "061", URGN_TERRITORY, "009" },
{ "NZ" , 554, "053", URGN_TERRITORY, "009" },
{ "OM" , 512, "145", URGN_TERRITORY, "142" },
@@ -259,7 +259,7 @@ static KnownRegion knownRegions[] = {
{ "PY" , 600, "005", URGN_TERRITORY, "019" },
{ "QA" , 634, "145", URGN_TERRITORY, "142" },
{ "QO" , 961, "009", URGN_SUBCONTINENT, "009" },
- { "QU" , 967, NULL, URGN_GROUPING, NULL },
+ { "QU" , 967, nullptr, URGN_GROUPING, nullptr },
{ "RE" , 638, "014", URGN_TERRITORY, "002" },
{ "RO" , 642, "151", URGN_TERRITORY, "150" },
{ "RS" , 688, "039", URGN_TERRITORY, "150" },
@@ -282,7 +282,7 @@ static KnownRegion knownRegions[] = {
{ "SR" , 740, "005", URGN_TERRITORY, "019" },
{ "SS" , 728, "014", URGN_TERRITORY, "002" },
{ "ST" , 678, "017", URGN_TERRITORY, "002" },
- { "SU" , 810, NULL , URGN_DEPRECATED , NULL},
+ { "SU" , 810, nullptr , URGN_DEPRECATED , nullptr},
{ "SV" , 222, "013", URGN_TERRITORY, "019" },
{ "SX" , 534, "029", URGN_TERRITORY, "019" },
{ "SY" , 760, "145", URGN_TERRITORY, "142" },
@@ -327,7 +327,7 @@ static KnownRegion knownRegions[] = {
{ "ZM" , 894, "014", URGN_TERRITORY, "002" },
{ "ZR" , 180, "017", URGN_TERRITORY, "002" },
{ "ZW" , 716, "014", URGN_TERRITORY, "002" },
- { "ZZ" , 999, NULL , URGN_UNKNOWN, NULL }
+ { "ZZ" , 999, nullptr , URGN_UNKNOWN, nullptr }
};
// *****************************************************************************
@@ -414,9 +414,9 @@ void RegionTest::TestGetInstanceString() {
UErrorCode status = U_ZERO_ERROR;
- const Region *r = Region::getInstance((const char *)NULL,status);
+ const Region *r = Region::getInstance((const char *)nullptr,status);
if ( status != U_ILLEGAL_ARGUMENT_ERROR ) {
- errcheckln(status, "Calling Region::getInstance(NULL) should have triggered an U_ILLEGAL_ARGUMENT_ERROR, but didn't. - %s", u_errorName(status));
+ errcheckln(status, "Calling Region::getInstance(nullptr) should have triggered an U_ILLEGAL_ARGUMENT_ERROR, but didn't. - %s", u_errorName(status));
}
status = U_ZERO_ERROR;
@@ -436,7 +436,7 @@ void RegionTest::TestGetInstanceString() {
id = r->getRegionCode();
type = r->getType();
} else {
- id = "NULL";
+ id = "nullptr";
type = URGN_UNKNOWN;
}
if ( uprv_strcmp(id,data.expectedID)) {
@@ -480,7 +480,7 @@ void RegionTest::TestGetInstanceInt() {
id = r->getRegionCode();
type = r->getType();
} else {
- id = "NULL";
+ id = "nullptr";
type = URGN_UNKNOWN;
}
if ( uprv_strcmp(data.expectedID,id)) {
@@ -508,12 +508,12 @@ void RegionTest::TestGetContainedRegions() {
continue;
}
for ( int32_t i = 0 ; i < containedRegions->count(status); i++ ) {
- const char *crID = containedRegions->next(NULL,status);
+ const char *crID = containedRegions->next(nullptr,status);
const Region *cr = Region::getInstance(crID,status);
- const Region *containingRegion = cr ? cr->getContainingRegion() : NULL;
+ const Region *containingRegion = cr ? cr->getContainingRegion() : nullptr;
if ( !containingRegion || *containingRegion != *r ) {
errln("Region: %s contains region %s. Expected containing region of this region to be the original region, but got %s",
- r->getRegionCode(),cr->getRegionCode(),containingRegion?containingRegion->getRegionCode():"NULL");
+ r->getRegionCode(),cr->getRegionCode(),containingRegion?containingRegion->getRegionCode():"nullptr");
}
}
delete containedRegions;
@@ -539,12 +539,12 @@ void RegionTest::TestGetContainedRegionsWithType() {
continue;
}
for ( int32_t j = 0 ; j < containedRegions->count(status); j++ ) {
- const char *crID = containedRegions->next(NULL,status);
+ const char *crID = containedRegions->next(nullptr,status);
const Region *cr = Region::getInstance(crID,status);
- const Region *containingRegion = cr ? cr->getContainingRegion(URGN_CONTINENT) : NULL;
+ const Region *containingRegion = cr ? cr->getContainingRegion(URGN_CONTINENT) : nullptr;
if ( !containingRegion || *containingRegion != *r ) {
errln("Continent: %s contains territory %s. Expected containing continent of this region to be the original region, but got %s",
- r->getRegionCode(),cr->getRegionCode(),containingRegion?containingRegion->getRegionCode():"NULL");
+ r->getRegionCode(),cr->getRegionCode(),containingRegion?containingRegion->getRegionCode():"nullptr");
}
}
delete containedRegions;
@@ -561,15 +561,15 @@ void RegionTest::TestGetContainingRegion() {
const Region *r = Region::getInstance(rd.code,status);
if (r) {
const Region *c = r->getContainingRegion();
- if (rd.parent == NULL) {
+ if (rd.parent == nullptr) {
if ( c ) {
- errln("Containing region for %s should have been NULL. Got: %s",r->getRegionCode(),c->getRegionCode());
+ errln("Containing region for %s should have been nullptr. Got: %s",r->getRegionCode(),c->getRegionCode());
}
} else {
const Region *p = Region::getInstance(rd.parent,status);
if ( !c || *p != *c ) {
errln("Expected containing continent of region %s to be %s. Got: %s",
- r->getRegionCode(),p?p->getRegionCode():"NULL",c?c->getRegionCode():"NULL" );
+ r->getRegionCode(),p?p->getRegionCode():"nullptr",c?c->getRegionCode():"nullptr" );
}
}
} else {
@@ -586,15 +586,15 @@ void RegionTest::TestGetContainingRegionWithType() {
const Region *r = Region::getInstance(rd.code,status);
if (r) {
const Region *c = r->getContainingRegion(URGN_CONTINENT);
- if (rd.containingContinent == NULL) {
- if ( c != NULL) {
- errln("Containing continent for %s should have been NULL. Got: %s",r->getRegionCode(), c->getRegionCode());
+ if (rd.containingContinent == nullptr) {
+ if ( c != nullptr) {
+ errln("Containing continent for %s should have been nullptr. Got: %s",r->getRegionCode(), c->getRegionCode());
}
} else {
const Region *p = Region::getInstance(rd.containingContinent,status);
if ( *p != *c ) {
errln("Expected containing continent of region %s to be %s. Got: %s",
- r->getRegionCode(),p?p->getRegionCode():"NULL",c?c->getRegionCode():"NULL" );
+ r->getRegionCode(),p?p->getRegionCode():"nullptr",c?c->getRegionCode():"nullptr" );
}
}
} else {
@@ -606,12 +606,12 @@ void RegionTest::TestGetContainingRegionWithType() {
void RegionTest::TestGetPreferredValues() {
static const char *testData[6][17] = {
// Input ID, Expected Preferred Values...
- { "AN", "CW", "SX", "BQ", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }, // Netherlands Antilles
- { "CS", "RS", "ME", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }, // Serbia & Montenegro
- { "FQ", "AQ", "TF", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }, // French Southern and Antarctic Territories
- { "NT", "IQ", "SA", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }, // Neutral Zone
- { "PC", "FM", "MH", "MP", "PW", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, }, // Pacific Islands Trust Territory
- { "SU", "RU", "AM", "AZ", "BY", "EE", "GE", "KZ", "KG", "LV", "LT", "MD", "TJ", "TM", "UA", "UZ" , NULL}, // Soviet Union
+ { "AN", "CW", "SX", "BQ", nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr }, // Netherlands Antilles
+ { "CS", "RS", "ME", nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr }, // Serbia & Montenegro
+ { "FQ", "AQ", "TF", nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr }, // French Southern and Antarctic Territories
+ { "NT", "IQ", "SA", nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr }, // Neutral Zone
+ { "PC", "FM", "MH", "MP", "PW", nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, }, // Pacific Islands Trust Territory
+ { "SU", "RU", "AM", "AZ", "BY", "EE", "GE", "KZ", "KG", "LV", "LT", "MD", "TJ", "TM", "UA", "UZ" , nullptr}, // Soviet Union
};
for ( int32_t i = 0 ; i < 6 ; i++ ) {
@@ -627,7 +627,7 @@ void RegionTest::TestGetPreferredValues() {
for ( int i = 1 ; data[i] ; i++ ) {
UBool found = false;
preferredValues->reset(status);
- while ( const char *check = preferredValues->next(NULL,status) ) {
+ while ( const char *check = preferredValues->next(nullptr,status) ) {
if ( !uprv_strcmp(check,data[i]) ) {
found = true;
break;
@@ -691,20 +691,20 @@ void RegionTest::TestAvailableTerritories() {
if ( i > 0 ) {
uprv_strcat(availableTerritoriesString," ");
}
- uprv_strcat(availableTerritoriesString,availableTerritories->next(NULL,status));
+ uprv_strcat(availableTerritoriesString,availableTerritories->next(nullptr,status));
}
} else {
- uprv_strcpy(availableTerritoriesString,"NULL");
+ uprv_strcpy(availableTerritoriesString,"nullptr");
}
if ( containedInWorld ) {
for (int32_t i = 0 ; i < containedInWorld->count(status) ; i++ ) {
if ( i > 0 ) {
uprv_strcat(containedInWorldString," ");
}
- uprv_strcat(containedInWorldString,containedInWorld->next(NULL,status));
+ uprv_strcat(containedInWorldString,containedInWorld->next(nullptr,status));
}
} else {
- uprv_strcpy(containedInWorldString,"NULL");
+ uprv_strcpy(containedInWorldString,"nullptr");
}
errln("Available territories and all territories contained in world should be the same set.\nAvailable = %s\nContained in World = %s",
availableTerritoriesString,containedInWorldString);
@@ -713,10 +713,10 @@ void RegionTest::TestAvailableTerritories() {
delete containedInWorld;
}
-void RegionTest::TestNoContainedRegions(void) {
+void RegionTest::TestNoContainedRegions() {
UErrorCode status = U_ZERO_ERROR;
const Region *region = Region::getInstance("BM",status);
- if (U_FAILURE(status) || region == NULL) {
+ if (U_FAILURE(status) || region == nullptr) {
dataerrln("Fail called to Region::getInstance(\"BM\", status) - %s", u_errorName(status));
return;
}
@@ -725,8 +725,8 @@ void RegionTest::TestNoContainedRegions(void) {
errln("%s->getContainedRegions(status) failed: %s", region->getRegionCode(), u_errorName(status));
return;
}
- const char *emptyStr = containedRegions->next(NULL, status);
- if (U_FAILURE(status)||(emptyStr!=NULL)) {
+ const char *emptyStr = containedRegions->next(nullptr, status);
+ if (U_FAILURE(status)||(emptyStr!=nullptr)) {
errln("Error, 'BM' should have no subregions, but returned str=%p, err=%s\n", emptyStr, u_errorName(status));
} else {
logln("Success - BM has no subregions\n");
@@ -734,7 +734,7 @@ void RegionTest::TestNoContainedRegions(void) {
delete containedRegions;
}
-void RegionTest::TestGroupingChildren(void) {
+void RegionTest::TestGroupingChildren() {
const char* testGroupings[] = {
"003", "021,013,029",
"419", "013,029,005",
@@ -753,11 +753,11 @@ void RegionTest::TestGroupingChildren(void) {
int32_t numActualChildren = actualChildren->count(err);
int32_t numExpectedChildren = 0;
const char* expectedChildStart = expectedChildren;
- const char* expectedChildEnd = NULL;
- const char* actualChild = NULL;
- while ((actualChild = actualChildren->next(NULL, err)) != NULL && *expectedChildStart != '\0') {
+ const char* expectedChildEnd = nullptr;
+ const char* actualChild = nullptr;
+ while ((actualChild = actualChildren->next(nullptr, err)) != nullptr && *expectedChildStart != '\0') {
expectedChildEnd = uprv_strchr(expectedChildStart, ',');
- if (expectedChildEnd == NULL) {
+ if (expectedChildEnd == nullptr) {
expectedChildEnd = expectedChildStart + uprv_strlen(expectedChildStart);
}
if (uprv_strlen(actualChild) != size_t(expectedChildEnd - expectedChildStart) || uprv_strncmp(actualChild, expectedChildStart, expectedChildEnd - expectedChildStart) != 0) {
@@ -766,7 +766,7 @@ void RegionTest::TestGroupingChildren(void) {
expectedChildStart = (*expectedChildEnd != '\0') ? expectedChildEnd + 1 : expectedChildEnd;
++numExpectedChildren;
}
- while (expectedChildEnd != NULL && *expectedChildEnd != '\0') {
+ while (expectedChildEnd != nullptr && *expectedChildEnd != '\0') {
expectedChildEnd = uprv_strchr(expectedChildEnd + 1, ',');
++numExpectedChildren;
}
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/regiontst.h b/Build/source/libs/icu/icu-src/source/test/intltest/regiontst.h
index a517fc99726..f5bd5eed1c3 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/regiontst.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/regiontst.h
@@ -27,18 +27,18 @@ public:
RegionTest();
virtual ~RegionTest();
- void TestKnownRegions(void);
- void TestGetInstanceString(void);
- void TestGetInstanceInt(void);
- void TestGetContainedRegions(void);
- void TestGetContainedRegionsWithType(void);
- void TestGetContainingRegion(void);
- void TestGetContainingRegionWithType(void);
- void TestGetPreferredValues(void);
- void TestContains(void);
- void TestAvailableTerritories(void);
- void TestNoContainedRegions(void);
- void TestGroupingChildren(void);
+ void TestKnownRegions();
+ void TestGetInstanceString();
+ void TestGetInstanceInt();
+ void TestGetContainedRegions();
+ void TestGetContainedRegionsWithType();
+ void TestGetContainingRegion();
+ void TestGetContainingRegionWithType();
+ void TestGetPreferredValues();
+ void TestContains();
+ void TestAvailableTerritories();
+ void TestNoContainedRegions();
+ void TestGroupingChildren();
private:
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/reldatefmttest.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/reldatefmttest.cpp
index c7c079cbc90..43d084fe29c 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/reldatefmttest.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/reldatefmttest.cpp
@@ -917,7 +917,7 @@ private:
const RelativeDateTimeFormatter& fmt,
UDateDirection direction,
UDateAbsoluteUnit unit);
- void TestSidewaysDataLoading(void);
+ void TestSidewaysDataLoading();
};
void RelativeDateTimeFormatterTest::runIndexedTest(
@@ -961,12 +961,12 @@ void RelativeDateTimeFormatterTest::TestEnglishCaps() {
UErrorCode status = U_ZERO_ERROR;
RelativeDateTimeFormatter fmt(
"en",
- NULL,
+ nullptr,
UDAT_STYLE_LONG,
UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE,
status);
if (U_FAILURE(status)) {
- dataerrln("Failed call to RelativeDateTimeFormatter(\"en\", NULL, UDAT_STYLE_LONG, UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE, status); : %s", u_errorName(status));
+ dataerrln("Failed call to RelativeDateTimeFormatter(\"en\", nullptr, UDAT_STYLE_LONG, UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE, status); : %s", u_errorName(status));
return;
}
RelativeDateTimeFormatter fmt3(status);
@@ -1002,7 +1002,7 @@ void RelativeDateTimeFormatterTest::TestEnglishNoQuantityCaps() {
UErrorCode status = U_ZERO_ERROR;
RelativeDateTimeFormatter fmt(
"en",
- NULL,
+ nullptr,
UDAT_STYLE_LONG,
UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE,
status);
@@ -1095,12 +1095,12 @@ void RelativeDateTimeFormatterTest::TestGetters() {
UErrorCode status = U_ZERO_ERROR;
RelativeDateTimeFormatter fmt(
"en",
- NULL,
+ nullptr,
UDAT_STYLE_NARROW,
UDISPCTX_CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE,
status);
if (U_FAILURE(status)) {
- dataerrln("Failed call to RelativeDateTimeFormatter(\"en\", NULL, UDAT_STYLE_NARROW, UDISPCTX_CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE, status);) : %s", u_errorName(status));
+ dataerrln("Failed call to RelativeDateTimeFormatter(\"en\", nullptr, UDAT_STYLE_NARROW, UDISPCTX_CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE, status);) : %s", u_errorName(status));
return;
}
RelativeDateTimeFormatter fmt3(status);
@@ -1138,7 +1138,7 @@ void RelativeDateTimeFormatterTest::TestCombineDateAndTime() {
void RelativeDateTimeFormatterTest::TestBadDisplayContext() {
UErrorCode status = U_ZERO_ERROR;
RelativeDateTimeFormatter fmt(
- "en", NULL, UDAT_STYLE_LONG, UDISPCTX_STANDARD_NAMES, status);
+ "en", nullptr, UDAT_STYLE_LONG, UDISPCTX_STANDARD_NAMES, status);
if (status != U_ILLEGAL_ARGUMENT_ERROR) {
errln("Expected U_ILLEGAL_ARGUMENT_ERROR, got %s", u_errorName(status));
}
@@ -1181,7 +1181,7 @@ void RelativeDateTimeFormatterTest::RunTest(
int32_t expectedResultLength) {
UErrorCode status = U_ZERO_ERROR;
RelativeDateTimeFormatter fmt(
- locale, NULL, style, UDISPCTX_CAPITALIZATION_NONE, status);
+ locale, nullptr, style, UDISPCTX_CAPITALIZATION_NONE, status);
if (U_FAILURE(status)) {
dataerrln("Unable to create format object - %s", u_errorName(status));
return;
@@ -1209,7 +1209,7 @@ void RelativeDateTimeFormatterTest::RunTest(
int32_t expectedResultLength) {
UErrorCode status = U_ZERO_ERROR;
RelativeDateTimeFormatter fmt(
- locale, NULL, style, UDISPCTX_CAPITALIZATION_NONE, status);
+ locale, nullptr, style, UDISPCTX_CAPITALIZATION_NONE, status);
if (U_FAILURE(status)) {
dataerrln("Unable to create format object - %s", u_errorName(status));
return;
@@ -1258,8 +1258,8 @@ void RelativeDateTimeFormatterTest::CheckExpectedResult(
UnicodeString expected(expectedResult.expected, -1, US_INV);
expected = expected.unescape();
char buffer[256];
- sprintf(
- buffer,
+ snprintf(
+ buffer, sizeof(buffer),
"%s, %f, %s, %s",
description,
expectedResult.value,
@@ -1287,8 +1287,8 @@ void RelativeDateTimeFormatterTest::CheckExpectedResult(
UnicodeString expected(expectedResult.expected, -1, US_INV);
expected = expected.unescape();
char buffer[256];
- sprintf(
- buffer,
+ snprintf(
+ buffer, sizeof(buffer),
"%s, %f, %s",
description,
expectedResult.value,
@@ -1310,8 +1310,8 @@ void RelativeDateTimeFormatterTest::CheckExpectedResult(
UnicodeString expected(expectedResult.expected, -1, US_INV);
expected = expected.unescape();
char buffer[256];
- sprintf(
- buffer,
+ snprintf(
+ buffer, sizeof(buffer),
"%s, %s, %s",
description,
DirectionStr(expectedResult.direction),
@@ -1348,13 +1348,13 @@ void RelativeDateTimeFormatterTest::VerifyIllegalArgument(
}
/* Add tests to check "sideways" data loading. */
-void RelativeDateTimeFormatterTest::TestSidewaysDataLoading(void) {
+void RelativeDateTimeFormatterTest::TestSidewaysDataLoading() {
UErrorCode status = U_ZERO_ERROR;
UnicodeString actual;
UnicodeString expected;
Locale enGbLocale("en_GB");
- RelativeDateTimeFormatter fmt(enGbLocale, NULL, UDAT_STYLE_NARROW,
+ RelativeDateTimeFormatter fmt(enGbLocale, nullptr, UDAT_STYLE_NARROW,
UDISPCTX_CAPITALIZATION_NONE, status);
if (U_FAILURE(status)) {
dataerrln("Unable to create RelativeDateTimeFormatter - %s", u_errorName(status));
@@ -1380,7 +1380,7 @@ void RelativeDateTimeFormatterTest::TestSidewaysDataLoading(void) {
assertEquals("next year: ", expected, actual);
// Testing the SHORT style
- RelativeDateTimeFormatter fmtshort(enGbLocale, NULL, UDAT_STYLE_SHORT,
+ RelativeDateTimeFormatter fmtshort(enGbLocale, nullptr, UDAT_STYLE_SHORT,
UDISPCTX_CAPITALIZATION_NONE, status);
expected = "now";
fmtshort.format(0.0, UDAT_DIRECTION_NEXT, UDAT_RELATIVE_SECONDS, actual.remove(), status);
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/reptest.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/reptest.cpp
index 4b3ab481aac..f306b86dc84 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/reptest.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/reptest.cpp
@@ -42,9 +42,9 @@ class TestReplaceable : public Replaceable {
UnicodeString chars;
UnicodeString styles;
- static const UChar NO_STYLE;
+ static const char16_t NO_STYLE;
- static const UChar NO_STYLE_MARK;
+ static const char16_t NO_STYLE_MARK;
/**
* The address of this static class variable serves as this class's ID
@@ -64,7 +64,7 @@ public:
if (text.charAt(i) == NO_STYLE_MARK) {
s.append(NO_STYLE);
} else {
- s.append((UChar)(i + 0x0031));
+ s.append((char16_t)(i + 0x0031));
}
}
}
@@ -75,7 +75,7 @@ public:
return new TestReplaceable(chars, styles);
}
- ~TestReplaceable(void) {}
+ ~TestReplaceable() {}
UnicodeString getStyles() {
return styles;
@@ -112,7 +112,7 @@ protected:
return chars.length();
}
- virtual UChar getCharAt(int32_t offset) const override {
+ virtual char16_t getCharAt(int32_t offset) const override {
return chars.charAt(offset);
}
@@ -121,7 +121,7 @@ protected:
}
void fixStyles(int32_t start, int32_t limit, int32_t newLen) {
- UChar newStyle = NO_STYLE;
+ char16_t newStyle = NO_STYLE;
if (start != limit && styles.charAt(start) != NO_STYLE) {
newStyle = styles.charAt(start);
} else if (start > 0 && getCharAt(start-1) != NO_STYLE_MARK) {
@@ -161,9 +161,9 @@ protected:
const char TestReplaceable::fgClassID=0;
-const UChar TestReplaceable::NO_STYLE = 0x005F;
+const char16_t TestReplaceable::NO_STYLE = 0x005F;
-const UChar TestReplaceable::NO_STYLE_MARK = 0xFFFF;
+const char16_t TestReplaceable::NO_STYLE_MARK = 0xFFFF;
void
ReplaceableTest::runIndexedTest(int32_t index, UBool exec,
@@ -183,7 +183,7 @@ public:
return 0;
}
- virtual UChar getCharAt(int32_t /*offset*/) const override {
+ virtual char16_t getCharAt(int32_t /*offset*/) const override {
return 0xffff;
}
@@ -212,8 +212,8 @@ private:
const char NoopReplaceable::fgClassID=0;
-void ReplaceableTest::TestReplaceableClass(void) {
- UChar rawTestArray[][6] = {
+void ReplaceableTest::TestReplaceableClass() {
+ char16_t rawTestArray[][6] = {
{0x0041, 0x0042, 0x0043, 0x0044, 0x0000, 0x0000}, // ABCD
{0x0061, 0x0062, 0x0063, 0x0064, 0x00DF, 0x0000}, // abcd\u00DF
{0x0061, 0x0042, 0x0043, 0x0044, 0x0000, 0x0000}, // aBCD
@@ -244,8 +244,8 @@ void ReplaceableTest::TestReplaceableClass(void) {
// improve API/code coverage
NoopReplaceable noop;
Replaceable *p;
- if((p=noop.clone())!=NULL) {
- errln("Replaceable::clone() does not return NULL");
+ if((p=noop.clone())!=nullptr) {
+ errln("Replaceable::clone() does not return nullptr");
delete p;
}
@@ -257,16 +257,16 @@ void ReplaceableTest::TestReplaceableClass(void) {
// UMemory/UObject/Replaceable assignment operators
NoopReplaceable noop2;
noop2=noop;
- if((p=noop2.clone())!=NULL) {
- errln("noop2.Replaceable::clone() does not return NULL");
+ if((p=noop2.clone())!=nullptr) {
+ errln("noop2.Replaceable::clone() does not return nullptr");
delete p;
}
// try to call the compiler-provided
// UMemory/UObject/Replaceable copy constructors
NoopReplaceable noop3(noop);
- if((p=noop3.clone())!=NULL) {
- errln("noop3.Replaceable::clone() does not return NULL");
+ if((p=noop3.clone())!=nullptr) {
+ errln("noop3.Replaceable::clone() does not return nullptr");
delete p;
}
}
@@ -290,7 +290,7 @@ void ReplaceableTest::check(const UnicodeString& transliteratorName,
// test clone()
TestReplaceable *tr2 = tr->clone();
- if(tr2 != NULL) {
+ if(tr2 != nullptr) {
delete tr;
tr = tr2;
}
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/reptest.h b/Build/source/libs/icu/icu-src/source/test/intltest/reptest.h
index 097eaaa402f..d4c37d0bffe 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/reptest.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/reptest.h
@@ -30,10 +30,10 @@
*/
class ReplaceableTest : public IntlTest {
public:
- void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par=NULL) override;
+ void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par=nullptr) override;
/*Tests the Replaceable class according to the API documentation. */
- void TestReplaceableClass(void);
+ void TestReplaceableClass();
private:
void check( const UnicodeString& transliteratorName,
const UnicodeString& test,
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/restest.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/restest.cpp
index f11015b71c8..455c6939546 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/restest.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/restest.cpp
@@ -15,14 +15,21 @@
#include "unicode/resbund.h"
#include "restest.h"
+#include "uresimp.h"
+#include "ureslocs.h"
+
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <limits.h>
+#include <map>
+#include <set>
+#include <string>
+
//***************************************************************************************
-static const UChar kErrorUChars[] = { 0x45, 0x52, 0x52, 0x4f, 0x52, 0 };
+static const char16_t kErrorUChars[] = { 0x45, 0x52, 0x52, 0x4f, 0x52, 0 };
static const int32_t kErrorLength = 5;
//***************************************************************************************
@@ -126,12 +133,12 @@ param[] =
// "IN" means inherits
// "NE" or "ne" means "does not exist"
- { "root", NULL, U_ZERO_ERROR, e_Root, { true, false, false }, { true, false, false } },
- { "te", NULL, U_ZERO_ERROR, e_te, { false, true, false }, { true, true, false } },
- { "te_IN", NULL, U_ZERO_ERROR, e_te_IN, { false, false, true }, { true, true, true } },
- { "te_NE", NULL, U_USING_FALLBACK_WARNING, e_te, { false, true, false }, { true, true, false } },
- { "te_IN_NE", NULL, U_USING_FALLBACK_WARNING, e_te_IN, { false, false, true }, { true, true, true } },
- { "ne", NULL, U_USING_DEFAULT_WARNING, e_Root, { true, false, false }, { true, false, false } }
+ { "root", nullptr, U_ZERO_ERROR, e_Root, { true, false, false }, { true, false, false } },
+ { "te", nullptr, U_ZERO_ERROR, e_te, { false, true, false }, { true, true, false } },
+ { "te_IN", nullptr, U_ZERO_ERROR, e_te_IN, { false, false, true }, { true, true, true } },
+ { "te_NE", nullptr, U_USING_FALLBACK_WARNING, e_te, { false, true, false }, { true, true, false } },
+ { "te_IN_NE", nullptr, U_USING_FALLBACK_WARNING, e_te_IN, { false, false, true }, { true, true, true } },
+ { "ne", nullptr, U_USING_DEFAULT_WARNING, e_Root, { true, false, false }, { true, false, false } }
};
static const int32_t bundles_count = UPRV_LENGTHOF(param);
@@ -148,7 +155,7 @@ randul()
static UBool initialized = false;
if (!initialized)
{
- srand((unsigned)time(NULL));
+ srand((unsigned)time(nullptr));
initialized = true;
}
// Assume rand has at least 12 bits of precision
@@ -184,7 +191,7 @@ ResourceBundleTest::ResourceBundleTest()
: pass(0),
fail(0)
{
- if (param[5].locale == NULL) {
+ if (param[5].locale == nullptr) {
param[0].locale = new Locale("root");
param[1].locale = new Locale("te");
param[2].locale = new Locale("te", "IN");
@@ -200,7 +207,7 @@ ResourceBundleTest::~ResourceBundleTest()
int idx;
for (idx = 0; idx < UPRV_LENGTHOF(param); idx++) {
delete param[idx].locale;
- param[idx].locale = NULL;
+ param[idx].locale = nullptr;
}
}
}
@@ -219,6 +226,8 @@ void ResourceBundleTest::runIndexedTest( int32_t index, UBool exec, const char*
#endif
case 4: name = "TestExemplar"; if (exec) TestExemplar(); break;
+ case 5: name = "TestPersonUnits"; if (exec) TestPersonUnits(); break;
+ case 6: name = "TestZuluFields"; if (exec) TestZuluFields(); break;
default: name = ""; break; //needed to end loop
}
}
@@ -520,10 +529,10 @@ ResourceBundleTest::TestExemplar(){
UErrorCode status = U_ZERO_ERROR;
for(;locIndex<locCount;locIndex++){
const char* locale = uloc_getAvailable(locIndex);
- UResourceBundle *resb =ures_open(NULL,locale,&status);
+ UResourceBundle *resb =ures_open(nullptr,locale,&status);
if(U_SUCCESS(status) && status!=U_USING_FALLBACK_WARNING && status!=U_USING_DEFAULT_WARNING){
int32_t len=0;
- const UChar* strSet = ures_getStringByKey(resb,"ExemplarCharacters",&len,&status);
+ const char16_t* strSet = ures_getStringByKey(resb,"ExemplarCharacters",&len,&status);
UnicodeSet set(strSet,status);
if(U_FAILURE(status)){
errln("Could not construct UnicodeSet from pattern for ExemplarCharacters in locale : %s. Error: %s",locale,u_errorName(status));
@@ -538,7 +547,7 @@ ResourceBundleTest::TestExemplar(){
}
void
-ResourceBundleTest::TestGetSize(void)
+ResourceBundleTest::TestGetSize()
{
const struct {
const char* key;
@@ -595,7 +604,7 @@ ResourceBundleTest::TestGetSize(void)
}
void
-ResourceBundleTest::TestGetLocaleByType(void)
+ResourceBundleTest::TestGetLocaleByType()
{
const struct {
const char *requestedLocale;
@@ -655,3 +664,158 @@ ResourceBundleTest::TestGetLocaleByType(void)
}
}
}
+
+void
+ResourceBundleTest::TestPersonUnits() {
+ // Test for ICU-21877: ICUResourceBundle.getAllChildrenWithFallback() doesn't return all of the children of the resource
+ // that's passed into it. If you have to follow an alias to get some of the children, we get the resources in the
+ // bundle we're aliasing to, and its children, but things that the bundle we're aliasing to inherits from its parent
+ // don't show up.
+ // This example is from the en_CA resource in the "unit" tree: The four test cases below show what we get when we call
+ // getStringWithFallback():
+ // - units/duration/day-person/other doesn't exist in either en_CA or en, so we fall back on root.
+ // - root/units aliases over to LOCALE/unitsShort.
+ // - unitsShort/duration/day-person/other also doesn't exist in either en_CA or en, so we fall back to root again.
+ // - root/unitsShort/duration/day-person aliases over to LOCALE/unitsShort/duration/day.
+ // - unitsShort/duration/day/other also doesn't exist in en_CA, so we fallback to en.
+ // - en/unitsShort/duration/day/other DOES exist and has "{0} days", so we return that.
+ // It's the same basic story for week-person, month-person, and year-person, except that:
+ // - unitsShort/duration/day doesn't exist at all in en_CA
+ // - unitsShort/duration/week DOES exist in en_CA, but only contains "per", so we inherit "other" from en
+ // - unitsShort/duration/month/other DOES exist in en_CA (it overrides "{0} mths" with "{0} mos")
+ // - unitsShort/duration/year DOES exist in en_CA, but only contains "per", so we inherit "other" from en
+ UErrorCode err = U_ZERO_ERROR;
+ LocalUResourceBundlePointer en_ca(ures_open(U_ICUDATA_UNIT, "en_CA", &err));
+
+ if (!assertSuccess("Failed to load en_CA resource in units tree", err)) {
+ return;
+ }
+ assertEquals("Wrong result for units/duration/day-person/other", u"{0} days", ures_getStringByKeyWithFallback(en_ca.getAlias(), "units/duration/day-person/other", nullptr, &err));
+ assertEquals("Wrong result for units/duration/week-person/other", u"{0} wks", ures_getStringByKeyWithFallback(en_ca.getAlias(), "units/duration/week-person/other", nullptr, &err));
+ assertEquals("Wrong result for units/duration/month-person/other", u"{0} mos", ures_getStringByKeyWithFallback(en_ca.getAlias(), "units/duration/month-person/other", nullptr, &err));
+ assertEquals("Wrong result for units/duration/year-person/other", u"{0} yrs", ures_getStringByKeyWithFallback(en_ca.getAlias(), "units/duration/year-person/other", nullptr, &err));
+
+ // getAllChildrenWithFallback() wasn't bringing all of those things back, however. When en_CA/units/year-person
+ // aliased over to en_CA/unitsShort/year, the sink would only be called on en_CA/unitsShort/year, which means it'd
+ // only see en_CA/unitsShort/year/per, because "per" was the only thing contained in en_CA/unitsShort/year. But
+ // en_CA/unitsShort/year should be inheriting "dnam", "one", and "other" from en/unitsShort/year.
+ // getAllChildrenWithFallback() had to be modified to walk the parent chain and call the sink again with
+ // en/unitsShort/year and root/unitsShort/year.
+ struct TestPersonUnitsSink : public ResourceSink {
+ typedef std::set<std::string> FoundKeysType;
+ typedef std::map<std::string, FoundKeysType > FoundResourcesType;
+ FoundResourcesType foundResources;
+ IntlTest& owningTestCase;
+
+ TestPersonUnitsSink(IntlTest& owningTestCase) : owningTestCase(owningTestCase) {}
+
+ virtual void put(const char *key, ResourceValue &value, UBool /*noFallback*/,
+ UErrorCode &errorCode) override {
+ if (value.getType() != URES_TABLE) {
+ owningTestCase.errln("%s is not a table!", key);
+ return;
+ }
+
+ FoundKeysType& foundKeys(foundResources[key]);
+
+ ResourceTable childTable = value.getTable(errorCode);
+ if (owningTestCase.assertSuccess("value.getTable() didn't work", errorCode)) {
+ const char* childKey;
+ for (int32_t i = 0; i < childTable.getSize(); i++) {
+ childTable.getKeyAndValue(i, childKey, value);
+ foundKeys.insert(childKey);
+ }
+ }
+ }
+ };
+
+ TestPersonUnitsSink sink(*this);
+ ures_getAllChildrenWithFallback(en_ca.getAlias(), "units/duration", sink, err);
+
+ if (assertSuccess("ures_getAllChildrenWithFallback() failed", err)) {
+ for (auto foundResourcesEntry : sink.foundResources) {
+ std::string foundResourcesKey = foundResourcesEntry.first;
+ if (foundResourcesKey.rfind("-person") == std::string::npos) {
+ continue;
+ }
+
+ TestPersonUnitsSink::FoundKeysType foundKeys = foundResourcesEntry.second;
+ if (foundKeys.find("dnam") == foundKeys.end()) {
+ errln("%s doesn't contain 'dnam'!", foundResourcesKey.c_str());
+ }
+ if (foundKeys.find("one") == foundKeys.end()) {
+ errln("%s doesn't contain 'one'!", foundResourcesKey.c_str());
+ }
+ if (foundKeys.find("other") == foundKeys.end()) {
+ errln("%s doesn't contain 'other'!", foundResourcesKey.c_str());
+ }
+ if (foundKeys.find("per") == foundKeys.end()) {
+ errln("%s doesn't contain 'per'!", foundResourcesKey.c_str());
+ }
+ }
+ }
+}
+
+void
+ResourceBundleTest::TestZuluFields() {
+ // Test for ICU-21877: Similar to the above test, except that here we're bringing back the wrong values.
+ // In some resources under the "locales" tree, some resources under "fields" would either have no display
+ // names or bring back the _wrong_ display names. The underlying cause was the same as in TestPersonUnits()
+ // above, except that there were two levels of indirection: At the root level, *-narrow aliased to *-short,
+ // which in turn aliased to *. If (say) day-narrow and day-short both didn't have "dn" resources, you could
+ // iterate over fields/day-short and find the "dn" resource that should have been inherited over from
+ // fields/day, but if you iterated over fields/day-narrow, you WOULDN'T get back the "dn" resource from
+ // fields/day (or, with my original fix for ICU-21877, you'd get back the wrong value). This test verifies
+ // that the double indirection works correctly.
+ UErrorCode err = U_ZERO_ERROR;
+ LocalUResourceBundlePointer zu(ures_open(nullptr, "zu", &err));
+
+ if (!assertSuccess("Failed to load zu resource in locales tree", err)) {
+ return;
+ }
+ assertEquals("Wrong getStringWithFallback() result for fields/day/dn", u"Usuku", ures_getStringByKeyWithFallback(zu.getAlias(), "fields/day/dn", nullptr, &err));
+ assertEquals("Wrong getStringWithFallback() result for fields/day-short/dn", u"Usuku", ures_getStringByKeyWithFallback(zu.getAlias(), "fields/day-short/dn", nullptr, &err));
+ assertEquals("Wrong getStringWithFallback() result for fields/day-narrow/dn", u"Usuku", ures_getStringByKeyWithFallback(zu.getAlias(), "fields/day-narrow/dn", nullptr, &err));
+
+ assertEquals("Wrong getStringWithFallback() result for fields/month/dn", u"Inyanga", ures_getStringByKeyWithFallback(zu.getAlias(), "fields/month/dn", nullptr, &err));
+ assertEquals("Wrong getStringWithFallback() result for fields/month-short/dn", u"Inyanga", ures_getStringByKeyWithFallback(zu.getAlias(), "fields/month-short/dn", nullptr, &err));
+ assertEquals("Wrong getStringWithFallback() result for fields/month-narrow/dn", u"Inyanga", ures_getStringByKeyWithFallback(zu.getAlias(), "fields/month-narrow/dn", nullptr, &err));
+
+ struct TestZuluFieldsSink : public ResourceSink {
+ typedef std::map<std::string, const UChar* > FoundResourcesType;
+ FoundResourcesType foundResources;
+ IntlTest& owningTestCase;
+
+ TestZuluFieldsSink(IntlTest& owningTestCase) : owningTestCase(owningTestCase) {}
+
+ virtual void put(const char *key, ResourceValue &value, UBool /*noFallback*/,
+ UErrorCode &errorCode) override {
+ if (value.getType() != URES_TABLE) {
+ owningTestCase.errln("%s is not a table!", key);
+ return;
+ }
+
+ ResourceTable childTable = value.getTable(errorCode);
+ if (owningTestCase.assertSuccess("value.getTable() didn't work", errorCode)) {
+ if (childTable.findValue("dn", value)) {
+ int32_t dummyLength;
+ if (foundResources.find(key) == foundResources.end()) {
+ foundResources.insert(std::make_pair(key, value.getString(dummyLength, errorCode)));
+ }
+ }
+ }
+ }
+ };
+
+ TestZuluFieldsSink sink(*this);
+ ures_getAllChildrenWithFallback(zu.getAlias(), "fields", sink, err);
+
+ if (assertSuccess("ures_getAllChildrenWithFallback() failed", err)) {
+ assertEquals("Wrong getAllChildrenWithFallback() result for fields/day/dn", u"Usuku", sink.foundResources["day"]);
+ assertEquals("Wrong getAllChildrenWithFallback() result for fields/day-short/dn", u"Usuku", sink.foundResources["day-short"]);
+ assertEquals("Wrong getAllChildrenWithFallback() result for fields/day-narrow/dn", u"Usuku", sink.foundResources["day-narrow"]);
+ assertEquals("Wrong getAllChildrenWithFallback() result for fields/month/dn", u"Inyanga", sink.foundResources["month"]);
+ assertEquals("Wrong getAllChildrenWithFallback() result for fields/month-short/dn", u"Inyanga", sink.foundResources["month-short"]);
+ assertEquals("Wrong getAllChildrenWithFallback() result for fields/month-narrow/dn", u"Inyanga", sink.foundResources["month-narrow"]);
+ }
+}
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/restest.h b/Build/source/libs/icu/icu-src/source/test/intltest/restest.h
index b6f5934fa9e..395dc2e3474 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/restest.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/restest.h
@@ -19,21 +19,24 @@ public:
ResourceBundleTest();
virtual ~ResourceBundleTest();
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
/**
* Perform several extensive tests using the subtest routine testTag
**/
- void TestResourceBundles(void);
+ void TestResourceBundles();
/**
* Test construction of ResourceBundle accessing a custom test resource-file
**/
- void TestConstruction(void);
+ void TestConstruction();
- void TestExemplar(void);
+ void TestExemplar();
- void TestGetSize(void);
- void TestGetLocaleByType(void);
+ void TestGetSize();
+ void TestGetLocaleByType();
+
+ void TestPersonUnits();
+ void TestZuluFields();
private:
/**
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/restsnew.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/restsnew.cpp
index b85e291786e..7556692136b 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/restsnew.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/restsnew.cpp
@@ -55,7 +55,7 @@ void NewResourceBundleTest::runIndexedTest( int32_t index, UBool exec, const cha
//***************************************************************************************
-static const UChar kErrorUChars[] = { 0x45, 0x52, 0x52, 0x4f, 0x52, 0 };
+static const char16_t kErrorUChars[] = { 0x45, 0x52, 0x52, 0x4f, 0x52, 0 };
static const int32_t kErrorLength = 5;
static const int32_t kERROR_COUNT = -1234567;
@@ -186,7 +186,7 @@ randul()
static UBool initialized = false;
if (!initialized)
{
- srand((unsigned)time(NULL));
+ srand((unsigned)time(nullptr));
initialized = true;
}
// Assume rand has at least 12 bits of precision
@@ -222,7 +222,7 @@ NewResourceBundleTest::NewResourceBundleTest()
: pass(0),
fail(0)
{
- if (param[5].locale == NULL) {
+ if (param[5].locale == nullptr) {
param[0].locale = new Locale("root");
param[1].locale = new Locale("te");
param[2].locale = new Locale("te", "IN");
@@ -238,7 +238,7 @@ NewResourceBundleTest::~NewResourceBundleTest()
int idx;
for (idx = 0; idx < UPRV_LENGTHOF(param); idx++) {
delete param[idx].locale;
- param[idx].locale = NULL;
+ param[idx].locale = nullptr;
}
}
}
@@ -513,7 +513,7 @@ NewResourceBundleTest::TestOtherAPI(){
logln("Testing ResourceBundle(UErrorCode)\n");
ResourceBundle defaultresource(err);
- ResourceBundle explicitdefaultresource(NULL, Locale::getDefault(), err);
+ ResourceBundle explicitdefaultresource(nullptr, Locale::getDefault(), err);
if(U_FAILURE(err)){
errcheckln(err, "Construction of default resourcebundle failed - %s", u_errorName(err));
return;
@@ -567,7 +567,7 @@ NewResourceBundleTest::TestOtherAPI(){
logln("Testing C like UnicodeString APIs\n");
- UResourceBundle *testCAPI = NULL, *bundle = NULL, *rowbundle = NULL, *temp = NULL;
+ UResourceBundle *testCAPI = nullptr, *bundle = nullptr, *rowbundle = nullptr, *temp = nullptr;
err = U_ZERO_ERROR;
const char* data[]={
"string_in_Root_te_te_IN", "1",
@@ -598,7 +598,7 @@ NewResourceBundleTest::TestOtherAPI(){
err=U_ZERO_ERROR;
bundle = ures_getByKey(testCAPI, data[i], bundle, &err);
if(!U_FAILURE(err)){
- const char* key = NULL;
+ const char* key = nullptr;
action = "te_IN";
action +=".getKey()";
@@ -654,7 +654,7 @@ NewResourceBundleTest::TestOtherAPI(){
assertTrue("ures_getUnicodeString(failure).isBogus()",
ures_getUnicodeString(testCAPI, &failure).isBogus());
assertTrue("ures_getNextUnicodeString(failure).isBogus()",
- ures_getNextUnicodeString(testCAPI, NULL, &failure).isBogus());
+ ures_getNextUnicodeString(testCAPI, nullptr, &failure).isBogus());
assertTrue("ures_getUnicodeStringByIndex(failure).isBogus()",
ures_getUnicodeStringByIndex(testCAPI, 999, &failure).isBogus());
assertTrue("ures_getUnicodeStringByKey(failure).isBogus()",
@@ -986,7 +986,7 @@ NewResourceBundleTest::testTag(const char* frag,
for(index=0; index <tag_count; index++){
ResourceBundle tagelement=tags.get(index, status);
- const char *tkey=NULL;
+ const char *tkey=nullptr;
UnicodeString value=tagelement.getNextString(&tkey, status);
UnicodeString key(tkey);
logln("tag = " + key + ", value = " + value );
@@ -1072,14 +1072,14 @@ NewResourceBundleTest::TestNewTypes() {
char action[256];
const char* testdatapath;
UErrorCode status = U_ZERO_ERROR;
- uint8_t *binResult = NULL;
+ uint8_t *binResult = nullptr;
int32_t len = 0;
int32_t i = 0;
int32_t intResult = 0;
uint32_t uintResult = 0;
- UChar expected[] = { 'a','b','c','\0','d','e','f' };
+ char16_t expected[] = { 'a','b','c','\0','d','e','f' };
const char* expect ="tab:\t cr:\r ff:\f newline:\n backslash:\\\\ quote=\\\' doubleQuote=\\\" singlequoutes=''";
- UChar uExpect[200];
+ char16_t uExpect[200];
testdatapath=loadTestData(status);
@@ -1222,7 +1222,7 @@ void
NewResourceBundleTest::TestGetByFallback() {
UErrorCode status = U_ZERO_ERROR;
- ResourceBundle heRes(NULL, "he", status);
+ ResourceBundle heRes(nullptr, "he", status);
heRes.getWithFallback("calendar", status).getWithFallback("islamic-civil", status).getWithFallback("DateTime", status);
if(U_SUCCESS(status)) {
@@ -1236,7 +1236,7 @@ NewResourceBundleTest::TestGetByFallback() {
}
status = U_ZERO_ERROR;
- ResourceBundle rootRes(NULL, "root", status);
+ ResourceBundle rootRes(nullptr, "root", status);
rootRes.getWithFallback("calendar", status).getWithFallback("islamic-civil", status).getWithFallback("DateTime", status);
if(U_SUCCESS(status)) {
errln("Root's Islamic-civil's DateTime resource exists. How did it get here?\n");
@@ -1430,7 +1430,7 @@ void NewResourceBundleTest::TestIntervalAliasFallbacks() {
for (int lidx = 0; lidx < UPRV_LENGTHOF(locales); lidx++) {
UErrorCode status = U_ZERO_ERROR;
- UResourceBundle *rb = ures_open(NULL, locales[lidx], &status);
+ UResourceBundle *rb = ures_open(nullptr, locales[lidx], &status);
if (U_FAILURE(status)) {
errln("Cannot open bundle for locale %s", locales[lidx]);
break;
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/restsnew.h b/Build/source/libs/icu/icu-src/source/test/intltest/restsnew.h
index e4eed1971b8..db2da177a2d 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/restsnew.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/restsnew.h
@@ -19,31 +19,31 @@ public:
NewResourceBundleTest();
virtual ~NewResourceBundleTest();
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
/**
* Perform several extensive tests using the subtest routine testTag
**/
- void TestResourceBundles(void);
+ void TestResourceBundles();
/**
* Test construction of ResourceBundle accessing a custom test resource-file
**/
- void TestConstruction(void);
+ void TestConstruction();
- void TestIteration(void);
+ void TestIteration();
- void TestOtherAPI(void);
+ void TestOtherAPI();
- void TestNewTypes(void);
+ void TestNewTypes();
- void TestGetByFallback(void);
+ void TestGetByFallback();
- void TestFilter(void);
+ void TestFilter();
- void TestIntervalAliasFallbacks(void);
+ void TestIntervalAliasFallbacks();
#if U_ENABLE_TRACING
- void TestTrace(void);
+ void TestTrace();
#endif
void TestOpenDirectFillIn();
@@ -61,8 +61,8 @@ private:
**/
UBool testTag(const char* frag, UBool in_Root, UBool in_te, UBool in_te_IN);
- void record_pass(void);
- void record_fail(void);
+ void record_pass();
+ void record_fail();
int32_t pass;
int32_t fail;
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/scientificnumberformattertest.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/scientificnumberformattertest.cpp
index bacbfba7884..76cf60a96da 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/scientificnumberformattertest.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/scientificnumberformattertest.cpp
@@ -117,7 +117,7 @@ void ScientificNumberFormatterTest::TestFarsi() {
void ScientificNumberFormatterTest::TestPlusSignInExponentMarkup() {
UErrorCode status = U_ZERO_ERROR;
- LocalPointer<DecimalFormat> decfmt((DecimalFormat *) NumberFormat::createScientificInstance("en", status));
+ LocalPointer<DecimalFormat> decfmt(dynamic_cast<DecimalFormat*>(NumberFormat::createScientificInstance("en", status)));
if (U_FAILURE(status)) {
dataerrln("Failed call NumberFormat::createScientificInstance(\"en\", status) - %s", u_errorName(status));
return;
@@ -144,7 +144,7 @@ void ScientificNumberFormatterTest::TestPlusSignInExponentMarkup() {
void ScientificNumberFormatterTest::TestPlusSignInExponentSuperscript() {
UErrorCode status = U_ZERO_ERROR;
- LocalPointer<DecimalFormat> decfmt((DecimalFormat *) NumberFormat::createScientificInstance("en", status));
+ LocalPointer<DecimalFormat> decfmt(dynamic_cast<DecimalFormat*>(NumberFormat::createScientificInstance("en", status)));
if (U_FAILURE(status)) {
dataerrln("Failed call NumberFormat::createScientificInstance(\"en\", status) - %s", u_errorName(status));
return;
@@ -171,7 +171,7 @@ void ScientificNumberFormatterTest::TestPlusSignInExponentSuperscript() {
void ScientificNumberFormatterTest::TestFixedDecimalMarkup() {
UErrorCode status = U_ZERO_ERROR;
- LocalPointer<DecimalFormat> decfmt((DecimalFormat *) NumberFormat::createInstance("en", status));
+ LocalPointer<DecimalFormat> decfmt(dynamic_cast<DecimalFormat*>(NumberFormat::createInstance("en", status)));
if (assertSuccess("NumberFormat::createInstance", status, true) == false) {
return;
}
@@ -193,7 +193,7 @@ void ScientificNumberFormatterTest::TestFixedDecimalMarkup() {
void ScientificNumberFormatterTest::TestFixedDecimalSuperscript() {
UErrorCode status = U_ZERO_ERROR;
- LocalPointer<DecimalFormat> decfmt((DecimalFormat *) NumberFormat::createInstance("en", status));
+ LocalPointer<DecimalFormat> decfmt(dynamic_cast<DecimalFormat*>(NumberFormat::createInstance("en", status)));
if (assertSuccess("NumberFormat::createInstance", status, true) == false) {
return;
}
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/sdtfmtts.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/sdtfmtts.cpp
index d7d61e2d87b..eda12f6b9dc 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/sdtfmtts.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/sdtfmtts.cpp
@@ -273,9 +273,9 @@ void IntlTestSimpleDateFormatAPI::testAPI(/*char *par*/)
}
// ====== Test ticket 11295 getNumberFormatForField returns wild pointer
- if (object.getNumberFormatForField('N') != NULL) {
+ if (object.getNumberFormatForField('N') != nullptr) {
errln("N is not a valid field, "
- "getNumberFormatForField should return NULL");
+ "getNumberFormatForField should return nullptr");
}
}
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/sdtfmtts.h b/Build/source/libs/icu/icu-src/source/test/intltest/sdtfmtts.h
index 6a6533bae8f..65cdacebb36 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/sdtfmtts.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/sdtfmtts.h
@@ -19,7 +19,7 @@
* Test basic functionality of various API functions
**/
class IntlTestSimpleDateFormatAPI : public IntlTest {
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
private:
/**
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/selfmts.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/selfmts.cpp
index c14ca83acd4..c0a1283d911 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/selfmts.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/selfmts.cpp
@@ -130,7 +130,7 @@ void SelectFormatTest::selectFormatUnitTest(/*char *par*/)
assertEquals("should use first occurrence of the 'other' keyword", "bar", format_result);
delete selFmt;
- selFmt = NULL;
+ selFmt = nullptr;
logln("SelectFormat Unit Test : Creating format object for Testing applying various patterns");
status = U_ZERO_ERROR;
@@ -185,7 +185,7 @@ void SelectFormatTest::selectFormatUnitTest(/*char *par*/)
};
delete selFmt;
- selFmt = NULL;
+ selFmt = nullptr;
selFmt = new SelectFormat( SIMPLE_PATTERN , status);
for (int32_t i = 0; i < UPRV_LENGTHOF(keywords); i++ ){
@@ -209,7 +209,7 @@ void SelectFormatTest::selectFormatAPITest(/*char *par*/)
const UnicodeString SIMPLE_PATTERN(SIMPLE_PATTERN_STRING); /* Don't static init this! */
int numOfConstructors =3;
UErrorCode status[3];
- SelectFormat* selFmt[3] = { NULL, NULL, NULL };
+ SelectFormat* selFmt[3] = { nullptr, nullptr, nullptr };
// ========= Test constructors
logln("SelectFormat API test: Testing SelectFormat constructors ...");
@@ -236,12 +236,12 @@ void SelectFormatTest::selectFormatAPITest(/*char *par*/)
logln("SelectFormat API test: Testing clone and == operator ...");
if ( U_SUCCESS(status[0]) ) {
selFmt[1] = selFmt[0]->clone();
- if (selFmt[1]!=NULL) {
+ if (selFmt[1]!=nullptr) {
if ( *selFmt[1] != *selFmt[0] ) {
errln("ERROR: SelectFormat API test clone test failed!");
}
} else {
- errln("ERROR: SelectFormat API test clone test failed with NULL!");
+ errln("ERROR: SelectFormat API test clone test failed with nullptr!");
return;
}
} else {
@@ -254,7 +254,7 @@ void SelectFormatTest::selectFormatAPITest(/*char *par*/)
selFmt[2]= new SelectFormat(SIMPLE_PATTERN, status[2]);
if ( U_SUCCESS(status[2]) ) {
*selFmt[1] = *selFmt[2];
- if (selFmt[1]!=NULL) {
+ if (selFmt[1]!=nullptr) {
if ( (*selFmt[1] != *selFmt[2]) ) {
errln("ERROR: SelectFormat API test assignment operator test failed!");
}
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/selfmts.h b/Build/source/libs/icu/icu-src/source/test/intltest/selfmts.h
index 9ad94c6d99a..a4086aff96c 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/selfmts.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/selfmts.h
@@ -22,7 +22,7 @@
* Test basic functionality of various API functions
**/
class SelectFormatTest : public IntlTest {
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
private:
/**
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/sfwdchit.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/sfwdchit.cpp
index 22975b4826c..2731b6d0e11 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/sfwdchit.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/sfwdchit.cpp
@@ -28,8 +28,8 @@ SimpleFwdCharIterator::SimpleFwdCharIterator(const UnicodeString& s) {
fHashCode = kInvalidHashCode;
fLen = s.length();
- fStart = new UChar[fLen];
- if(fStart == NULL) {
+ fStart = new char16_t[fLen];
+ if(fStart == nullptr) {
fBogus = true;
} else {
fEnd = fStart+fLen;
@@ -41,15 +41,15 @@ SimpleFwdCharIterator::SimpleFwdCharIterator(const UnicodeString& s) {
}
#endif
-SimpleFwdCharIterator::SimpleFwdCharIterator(UChar *s, int32_t len, UBool adopt) {
+SimpleFwdCharIterator::SimpleFwdCharIterator(char16_t *s, int32_t len, UBool adopt) {
fHashCode = kInvalidHashCode;
fLen = len==-1 ? u_strlen(s) : len;
if(adopt == false) {
- fStart = new UChar[fLen];
- if(fStart == NULL) {
+ fStart = new char16_t[fLen];
+ if(fStart == nullptr) {
fBogus = true;
} else {
uprv_memcpy(fStart, s, fLen);
@@ -91,7 +91,7 @@ bool SimpleFwdCharIterator::operator==(const ForwardCharacterIterator& that) con
}
#endif
-int32_t SimpleFwdCharIterator::hashCode(void) const {
+int32_t SimpleFwdCharIterator::hashCode() const {
if (fHashCode == kInvalidHashCode)
{
UHashTok key;
@@ -101,11 +101,11 @@ int32_t SimpleFwdCharIterator::hashCode(void) const {
return fHashCode;
}
-UClassID SimpleFwdCharIterator::getDynamicClassID(void) const {
- return NULL;
+UClassID SimpleFwdCharIterator::getDynamicClassID() const {
+ return nullptr;
}
-UChar SimpleFwdCharIterator::nextPostInc(void) {
+char16_t SimpleFwdCharIterator::nextPostInc() {
if(fCurrent == fEnd) {
return ForwardCharacterIterator::DONE;
} else {
@@ -113,7 +113,7 @@ UChar SimpleFwdCharIterator::nextPostInc(void) {
}
}
-UChar32 SimpleFwdCharIterator::next32PostInc(void) {
+UChar32 SimpleFwdCharIterator::next32PostInc() {
return ForwardCharacterIterator::DONE;
}
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/sfwdchit.h b/Build/source/libs/icu/icu-src/source/test/intltest/sfwdchit.h
index 9d9831e2592..8ff93c82629 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/sfwdchit.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/sfwdchit.h
@@ -15,7 +15,7 @@
class SimpleFwdCharIterator : public ForwardCharacterIterator {
public:
// not used -- SimpleFwdCharIterator(const UnicodeString& s);
- SimpleFwdCharIterator(UChar *s, int32_t len, UBool adopt = false);
+ SimpleFwdCharIterator(char16_t *s, int32_t len, UBool adopt = false);
virtual ~SimpleFwdCharIterator();
@@ -28,14 +28,14 @@ public:
/**
* Generates a hash code for this iterator.
*/
- virtual int32_t hashCode(void) const override;
+ virtual int32_t hashCode() const override;
/**
* Returns a UClassID for this ForwardCharacterIterator ("poor man's
* RTTI").<P> Despite the fact that this function is public,
* DO NOT CONSIDER IT PART OF CHARACTERITERATOR'S API!
*/
- virtual UClassID getDynamicClassID(void) const override;
+ virtual UClassID getDynamicClassID() const override;
/**
* Gets the current code unit for returning and advances to the next code unit
@@ -43,7 +43,7 @@ public:
* (toward endIndex()). If there are
* no more code units to return, returns DONE.
*/
- virtual UChar nextPostInc(void) override;
+ virtual char16_t nextPostInc() override;
/**
* Gets the current code point for returning and advances to the next code point
@@ -51,7 +51,7 @@ public:
* (toward endIndex()). If there are
* no more code points to return, returns DONE.
*/
- virtual UChar32 next32PostInc(void) override;
+ virtual UChar32 next32PostInc() override;
/**
* Returns false if there are no more code units or code points
@@ -70,7 +70,7 @@ private:
static const int32_t kInvalidHashCode;
static const int32_t kEmptyHashCode;
- UChar *fStart, *fEnd, *fCurrent;
+ char16_t *fStart, *fEnd, *fCurrent;
int32_t fLen;
UBool fBogus;
int32_t fHashCode;
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/simpleformattertest.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/simpleformattertest.cpp
index 32f453cba81..6e14887e946 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/simpleformattertest.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/simpleformattertest.cpp
@@ -78,12 +78,12 @@ void SimpleFormatterTest::TestNoArguments() {
assertEquals(
"formatAndAppend",
"This doesn't have templates {0}",
- fmt.formatAndAppend(NULL, 0, appendTo, offsets, 1, status));
+ fmt.formatAndAppend(nullptr, 0, appendTo, offsets, 1, status));
assertEquals("formatAndAppend offsets[0]", -1, offsets[0]);
assertEquals(
"formatAndReplace",
"This doesn't have templates {0}",
- fmt.formatAndReplace(NULL, 0, appendTo, NULL, 0, status));
+ fmt.formatAndReplace(nullptr, 0, appendTo, nullptr, 0, status));
assertSuccess("Status", status);
}
@@ -138,12 +138,12 @@ void SimpleFormatterTest::TestBigArgument() {
assertEquals("{20} count", 21, fmt.getArgumentLimit());
UnicodeString b("b");
UnicodeString *values[] = {
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+ nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr,
+ nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr,
&b
};
UnicodeString result;
- assertEquals("{20}=b", "abc", fmt.formatAndAppend(values, 21, result, NULL, 0, status));
+ assertEquals("{20}=b", "abc", fmt.formatAndAppend(values, 21, result, nullptr, 0, status));
assertSuccess("Status", status);
}
@@ -203,7 +203,7 @@ void SimpleFormatterTest::TestManyArguments() {
params,
UPRV_LENGTHOF(params),
appendTo,
- NULL,
+ nullptr,
0,
status));
@@ -217,7 +217,7 @@ void SimpleFormatterTest::TestManyArguments() {
params,
UPRV_LENGTHOF(params),
appendTo,
- NULL,
+ nullptr,
0,
status));
r.applyPattern("{0} meter", status);
@@ -259,14 +259,14 @@ void SimpleFormatterTest::TestTooFewArgumentValues() {
status = U_ZERO_ERROR;
fmt.formatAndAppend(
- params, UPRV_LENGTHOF(params), appendTo, NULL, 0, status);
+ params, UPRV_LENGTHOF(params), appendTo, nullptr, 0, status);
if (status != U_ILLEGAL_ARGUMENT_ERROR) {
errln("Expected U_ILLEGAL_ARGUMENT_ERROR");
}
status = U_ZERO_ERROR;
fmt.formatAndReplace(
- params, UPRV_LENGTHOF(params), appendTo, NULL, 0, status);
+ params, UPRV_LENGTHOF(params), appendTo, nullptr, 0, status);
if (status != U_ILLEGAL_ARGUMENT_ERROR) {
errln("Expected U_ILLEGAL_ARGUMENT_ERROR");
}
@@ -279,25 +279,25 @@ void SimpleFormatterTest::TestBadArguments() {
// These succeed
fmt.formatAndAppend(
- NULL, 0, appendTo, NULL, 0, status);
+ nullptr, 0, appendTo, nullptr, 0, status);
fmt.formatAndReplace(
- NULL, 0, appendTo, NULL, 0, status);
+ nullptr, 0, appendTo, nullptr, 0, status);
assertSuccess("", status);
status = U_ZERO_ERROR;
// fails
fmt.formatAndAppend(
- NULL, 1, appendTo, NULL, 0, status);
+ nullptr, 1, appendTo, nullptr, 0, status);
if (status != U_ILLEGAL_ARGUMENT_ERROR) {
- errln("Expected U_ILLEGAL_ARGUMENT_ERROR: formatAndAppend() values=NULL but length=1");
+ errln("Expected U_ILLEGAL_ARGUMENT_ERROR: formatAndAppend() values=nullptr but length=1");
}
status = U_ZERO_ERROR;
// fails
fmt.formatAndAppend(
- NULL, 0, appendTo, NULL, 1, status);
+ nullptr, 0, appendTo, nullptr, 1, status);
if (status != U_ILLEGAL_ARGUMENT_ERROR) {
- errln("Expected U_ILLEGAL_ARGUMENT_ERROR: formatAndAppend() offsets=NULL but length=1");
+ errln("Expected U_ILLEGAL_ARGUMENT_ERROR: formatAndAppend() offsets=nullptr but length=1");
}
status = U_ZERO_ERROR;
@@ -305,7 +305,7 @@ void SimpleFormatterTest::TestBadArguments() {
SimpleFormatter fmt2("Arguments {0} and {1}", status);
UnicodeString frog("frog");
const UnicodeString *params[] = { &appendTo, &frog };
- fmt2.formatAndAppend(params, 2, appendTo, NULL, 0, status);
+ fmt2.formatAndAppend(params, 2, appendTo, nullptr, 0, status);
if (status != U_ILLEGAL_ARGUMENT_ERROR) {
errln("Expected U_ILLEGAL_ARGUMENT_ERROR: formatAndAppend() value=appendTo");
}
@@ -314,17 +314,17 @@ void SimpleFormatterTest::TestBadArguments() {
// fails
fmt.formatAndReplace(
- NULL, 1, appendTo, NULL, 0, status);
+ nullptr, 1, appendTo, nullptr, 0, status);
if (status != U_ILLEGAL_ARGUMENT_ERROR) {
- errln("Expected U_ILLEGAL_ARGUMENT_ERROR: formatAndReplace() values=NULL but length=1");
+ errln("Expected U_ILLEGAL_ARGUMENT_ERROR: formatAndReplace() values=nullptr but length=1");
}
status = U_ZERO_ERROR;
// fails
fmt.formatAndReplace(
- NULL, 0, appendTo, NULL, 1, status);
+ nullptr, 0, appendTo, nullptr, 1, status);
if (status != U_ILLEGAL_ARGUMENT_ERROR) {
- errln("Expected U_ILLEGAL_ARGUMENT_ERROR: formatAndReplace() offsets=NULL but length=1");
+ errln("Expected U_ILLEGAL_ARGUMENT_ERROR: formatAndReplace() offsets=nullptr but length=1");
}
}
@@ -485,7 +485,7 @@ void SimpleFormatterTest::TestFormatReplaceOptimizationNoOffsets() {
params,
UPRV_LENGTHOF(params),
result,
- NULL,
+ nullptr,
0,
status));
assertSuccess("Status", status);
@@ -504,7 +504,7 @@ void SimpleFormatterTest::TestFormatReplaceNoOptimizationNoOffsets() {
params,
UPRV_LENGTHOF(params),
result,
- NULL,
+ nullptr,
0,
status));
assertSuccess("Status", status);
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/simplethread.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/simplethread.cpp
index 8f7c48aca35..ff04276a310 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/simplethread.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/simplethread.cpp
@@ -44,16 +44,16 @@ class ThreadPoolThread: public SimpleThread {
ThreadPoolBase::ThreadPoolBase(IntlTest *test, int32_t howMany) :
- fIntlTest(test), fNumThreads(howMany), fThreads(NULL) {
+ fIntlTest(test), fNumThreads(howMany), fThreads(nullptr) {
fThreads = new SimpleThread *[fNumThreads];
- if (fThreads == NULL) {
+ if (fThreads == nullptr) {
fIntlTest->errln("%s:%d memory allocation failure.", __FILE__, __LINE__);
return;
}
for (int i=0; i<fNumThreads; i++) {
fThreads[i] = new ThreadPoolThread(this, i);
- if (fThreads[i] == NULL) {
+ if (fThreads[i] == nullptr) {
fIntlTest->errln("%s:%d memory allocation failure.", __FILE__, __LINE__);
}
}
@@ -79,9 +79,9 @@ ThreadPoolBase::~ThreadPoolBase() {
if (fThreads) {
for (int i=0; i<fNumThreads; i++) {
delete fThreads[i];
- fThreads[i] = NULL;
+ fThreads[i] = nullptr;
}
delete[] fThreads;
- fThreads = NULL;
+ fThreads = nullptr;
}
}
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/srchtest.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/srchtest.cpp
index a5e6f4898c4..1d9ac49ff35 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/srchtest.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/srchtest.cpp
@@ -42,16 +42,16 @@
StringSearchTest::StringSearchTest()
#if !UCONFIG_NO_BREAK_ITERATION
:
- m_en_wordbreaker_(NULL), m_en_characterbreaker_(NULL)
+ m_en_wordbreaker_(nullptr), m_en_characterbreaker_(nullptr)
#endif
{
#if !UCONFIG_NO_BREAK_ITERATION
UErrorCode status = U_ZERO_ERROR;
- m_en_us_ = (RuleBasedCollator *)Collator::createInstance("en_US", status);
- m_fr_fr_ = (RuleBasedCollator *)Collator::createInstance("fr_FR", status);
- m_de_ = (RuleBasedCollator *)Collator::createInstance("de_DE", status);
- m_es_ = (RuleBasedCollator *)Collator::createInstance("es_ES", status);
+ m_en_us_ = dynamic_cast<RuleBasedCollator*>(Collator::createInstance("en_US", status));
+ m_fr_fr_ = dynamic_cast<RuleBasedCollator*>(Collator::createInstance("fr_FR", status));
+ m_de_ = dynamic_cast<RuleBasedCollator*>(Collator::createInstance("de_DE", status));
+ m_es_ = dynamic_cast<RuleBasedCollator*>(Collator::createInstance("es_ES", status));
if(U_FAILURE(status)) {
delete m_en_us_;
delete m_fr_fr_;
@@ -67,15 +67,15 @@ StringSearchTest::StringSearchTest()
UnicodeString rules;
- rules.setTo(((RuleBasedCollator *)m_de_)->getRules());
- UChar extrarules[128];
+ rules.setTo(m_de_->getRules());
+ char16_t extrarules[128];
u_unescape(EXTRACOLLATIONRULE, extrarules, 128);
rules.append(extrarules, u_strlen(extrarules));
delete m_de_;
m_de_ = new RuleBasedCollator(rules, status);
- rules.setTo(((RuleBasedCollator *)m_es_)->getRules());
+ rules.setTo(m_es_->getRules());
rules.append(extrarules, u_strlen(extrarules));
delete m_es_;
@@ -112,9 +112,9 @@ void StringSearchTest::runIndexedTest(int32_t index, UBool exec,
{
#if !UCONFIG_NO_BREAK_ITERATION
UBool areBroken = false;
- if (m_en_us_ == NULL && m_fr_fr_ == NULL && m_de_ == NULL &&
- m_es_ == NULL && m_en_wordbreaker_ == NULL &&
- m_en_characterbreaker_ == NULL && exec) {
+ if (m_en_us_ == nullptr && m_fr_fr_ == nullptr && m_de_ == nullptr &&
+ m_es_ == nullptr && m_en_wordbreaker_ == nullptr &&
+ m_en_characterbreaker_ == nullptr && exec) {
areBroken = true;
}
@@ -182,7 +182,7 @@ void StringSearchTest::runIndexedTest(int32_t index, UBool exec,
RuleBasedCollator * StringSearchTest::getCollator(const char *collator)
{
- if (collator == NULL) {
+ if (collator == nullptr) {
return m_en_us_;
}
if (strcmp(collator, "fr") == 0) {
@@ -202,10 +202,10 @@ RuleBasedCollator * StringSearchTest::getCollator(const char *collator)
BreakIterator * StringSearchTest::getBreakIterator(const char *breaker)
{
#if UCONFIG_NO_BREAK_ITERATION
- return NULL;
+ return nullptr;
#else
- if (breaker == NULL) {
- return NULL;
+ if (breaker == nullptr) {
+ return nullptr;
}
if (strcmp(breaker, "wordbreaker") == 0) {
return m_en_wordbreaker_;
@@ -224,12 +224,12 @@ char * StringSearchTest::toCharString(const UnicodeString &text)
int length = text.length();
for (; count < length; count ++) {
- UChar ch = text[count];
+ char16_t ch = text[count];
if (ch >= 0x20 && ch <= 0x7e) {
result[index ++] = (char)ch;
}
else {
- sprintf(result+index, "\\u%04x", ch);
+ snprintf(result+index, sizeof(result)-index, "\\u%04x", ch);
index += 6; /* \uxxxx */
}
}
@@ -467,7 +467,7 @@ UBool StringSearchTest::assertEqual(const SearchData *search)
Collator *collator = getCollator(search->collator);
BreakIterator *breaker = getBreakIterator(search->breaker);
StringSearch *strsrch, *strsrch2;
- UChar temp[128];
+ char16_t temp[128];
#if UCONFIG_NO_BREAK_ITERATION
if(search->breaker) {
@@ -482,12 +482,12 @@ UBool StringSearchTest::assertEqual(const SearchData *search)
pattern.setTo(temp);
#if !UCONFIG_NO_BREAK_ITERATION
- if (breaker != NULL) {
+ if (breaker != nullptr) {
breaker->setText(text);
}
#endif
collator->setStrength(getECollationStrength(search->strength));
- strsrch = new StringSearch(pattern, text, (RuleBasedCollator *)collator,
+ strsrch = new StringSearch(pattern, text, dynamic_cast<RuleBasedCollator*>(collator),
breaker, status);
if (U_FAILURE(status)) {
errln("Error opening string search %s", u_errorName(status));
@@ -524,7 +524,7 @@ UBool StringSearchTest::assertCanonicalEqual(const SearchData *search)
Collator *collator = getCollator(search->collator);
BreakIterator *breaker = getBreakIterator(search->breaker);
StringSearch *strsrch;
- UChar temp[128];
+ char16_t temp[128];
UBool result = true;
#if UCONFIG_NO_BREAK_ITERATION
@@ -541,13 +541,13 @@ UBool StringSearchTest::assertCanonicalEqual(const SearchData *search)
pattern.setTo(temp);
#if !UCONFIG_NO_BREAK_ITERATION
- if (breaker != NULL) {
+ if (breaker != nullptr) {
breaker->setText(text);
}
#endif
collator->setStrength(getECollationStrength(search->strength));
collator->setAttribute(UCOL_NORMALIZATION_MODE, UCOL_ON, status);
- strsrch = new StringSearch(pattern, text, (RuleBasedCollator *)collator,
+ strsrch = new StringSearch(pattern, text, dynamic_cast<RuleBasedCollator*>(collator),
breaker, status);
strsrch->setAttribute(USEARCH_CANONICAL_MATCH, USEARCH_ON, status);
if (U_FAILURE(status)) {
@@ -577,7 +577,7 @@ UBool StringSearchTest::assertEqualWithAttribute(const SearchData *search,
Collator *collator = getCollator(search->collator);
BreakIterator *breaker = getBreakIterator(search->breaker);
StringSearch *strsrch;
- UChar temp[128];
+ char16_t temp[128];
#if UCONFIG_NO_BREAK_ITERATION
@@ -594,12 +594,12 @@ UBool StringSearchTest::assertEqualWithAttribute(const SearchData *search,
pattern.setTo(temp);
#if !UCONFIG_NO_BREAK_ITERATION
- if (breaker != NULL) {
+ if (breaker != nullptr) {
breaker->setText(text);
}
#endif
collator->setStrength(getECollationStrength(search->strength));
- strsrch = new StringSearch(pattern, text, (RuleBasedCollator *)collator,
+ strsrch = new StringSearch(pattern, text, dynamic_cast<RuleBasedCollator*>(collator),
breaker, status);
strsrch->setAttribute(USEARCH_CANONICAL_MATCH, canonical, status);
strsrch->setAttribute(USEARCH_OVERLAP, overlap, status);
@@ -630,23 +630,23 @@ void StringSearchTest::TestOpenClose()
StringCharacterIterator chariter(text);
/* testing null arguments */
- result = new StringSearch(pattern, text, NULL, NULL, status);
+ result = new StringSearch(pattern, text, nullptr, nullptr, status);
if (U_SUCCESS(status)) {
- errln("Error: NULL arguments should produce an error");
+ errln("Error: nullptr arguments should produce an error");
}
delete result;
chariter.setText(text);
status = U_ZERO_ERROR;
- result = new StringSearch(pattern, chariter, NULL, NULL, status);
+ result = new StringSearch(pattern, chariter, nullptr, nullptr, status);
if (U_SUCCESS(status)) {
- errln("Error: NULL arguments should produce an error");
+ errln("Error: nullptr arguments should produce an error");
}
delete result;
// No-op: text.append(0, 0x1); -- what was intended here?
status = U_ZERO_ERROR;
- result = new StringSearch(pattern, text, NULL, NULL, status);
+ result = new StringSearch(pattern, text, nullptr, nullptr, status);
if (U_SUCCESS(status)) {
errln("Error: Empty pattern should produce an error");
}
@@ -654,7 +654,7 @@ void StringSearchTest::TestOpenClose()
chariter.setText(text);
status = U_ZERO_ERROR;
- result = new StringSearch(pattern, chariter, NULL, NULL, status);
+ result = new StringSearch(pattern, chariter, nullptr, nullptr, status);
if (U_SUCCESS(status)) {
errln("Error: Empty pattern should produce an error");
}
@@ -663,7 +663,7 @@ void StringSearchTest::TestOpenClose()
text.remove();
pattern.append(temp);
status = U_ZERO_ERROR;
- result = new StringSearch(pattern, text, NULL, NULL, status);
+ result = new StringSearch(pattern, text, nullptr, nullptr, status);
if (U_SUCCESS(status)) {
errln("Error: Empty text should produce an error");
}
@@ -671,7 +671,7 @@ void StringSearchTest::TestOpenClose()
chariter.setText(text);
status = U_ZERO_ERROR;
- result = new StringSearch(pattern, chariter, NULL, NULL, status);
+ result = new StringSearch(pattern, chariter, nullptr, nullptr, status);
if (U_SUCCESS(status)) {
errln("Error: Empty text should produce an error");
}
@@ -679,45 +679,45 @@ void StringSearchTest::TestOpenClose()
text.append(temp);
status = U_ZERO_ERROR;
- result = new StringSearch(pattern, text, NULL, NULL, status);
+ result = new StringSearch(pattern, text, nullptr, nullptr, status);
if (U_SUCCESS(status)) {
- errln("Error: NULL arguments should produce an error");
+ errln("Error: nullptr arguments should produce an error");
}
delete result;
chariter.setText(text);
status = U_ZERO_ERROR;
- result = new StringSearch(pattern, chariter, NULL, NULL, status);
+ result = new StringSearch(pattern, chariter, nullptr, nullptr, status);
if (U_SUCCESS(status)) {
- errln("Error: NULL arguments should produce an error");
+ errln("Error: nullptr arguments should produce an error");
}
delete result;
status = U_ZERO_ERROR;
- result = new StringSearch(pattern, text, m_en_us_, NULL, status);
+ result = new StringSearch(pattern, text, m_en_us_, nullptr, status);
if (U_FAILURE(status)) {
- errln("Error: NULL break iterator is valid for opening search");
+ errln("Error: nullptr break iterator is valid for opening search");
}
delete result;
status = U_ZERO_ERROR;
- result = new StringSearch(pattern, chariter, m_en_us_, NULL, status);
+ result = new StringSearch(pattern, chariter, m_en_us_, nullptr, status);
if (U_FAILURE(status)) {
- errln("Error: NULL break iterator is valid for opening search");
+ errln("Error: nullptr break iterator is valid for opening search");
}
delete result;
status = U_ZERO_ERROR;
- result = new StringSearch(pattern, text, Locale::getEnglish(), NULL, status);
- if (U_FAILURE(status) || result == NULL) {
- errln("Error: NULL break iterator is valid for opening search");
+ result = new StringSearch(pattern, text, Locale::getEnglish(), nullptr, status);
+ if (U_FAILURE(status) || result == nullptr) {
+ errln("Error: nullptr break iterator is valid for opening search");
}
delete result;
status = U_ZERO_ERROR;
- result = new StringSearch(pattern, chariter, Locale::getEnglish(), NULL, status);
+ result = new StringSearch(pattern, chariter, Locale::getEnglish(), nullptr, status);
if (U_FAILURE(status)) {
- errln("Error: NULL break iterator is valid for opening search");
+ errln("Error: nullptr break iterator is valid for opening search");
}
delete result;
@@ -729,7 +729,7 @@ void StringSearchTest::TestOpenClose()
delete result;
status = U_ZERO_ERROR;
- result = new StringSearch(pattern, chariter, m_en_us_, NULL, status);
+ result = new StringSearch(pattern, chariter, m_en_us_, nullptr, status);
if (U_FAILURE(status)) {
errln("Error: Break iterator is valid for opening search");
}
@@ -751,7 +751,7 @@ void StringSearchTest::TestInitialization()
text.append(temp);
text.append(temp);
text.append(temp);
- result = new StringSearch(pattern, text, m_en_us_, NULL, status);
+ result = new StringSearch(pattern, text, m_en_us_, nullptr, status);
if (U_FAILURE(status)) {
errln("Error opening search %s", u_errorName(status));
}
@@ -786,7 +786,7 @@ void StringSearchTest::TestInitialization()
for (count = 0; count < 512; count ++) {
pattern.append(temp);
}
- result = new StringSearch(pattern, text, m_en_us_, NULL, status);
+ result = new StringSearch(pattern, text, m_en_us_, nullptr, status);
if (*result != *result) {
errln("Error: string search object expected to match itself");
}
@@ -814,7 +814,7 @@ void StringSearchTest::TestInitialization()
void StringSearchTest::TestBasic()
{
int count = 0;
- while (BASIC[count].text != NULL) {
+ while (BASIC[count].text != nullptr) {
//printf("count %d", count);
if (!assertEqual(&BASIC[count])) {
infoln("Error at test number %d", count);
@@ -832,14 +832,14 @@ void StringSearchTest::TestNormExact()
errln("Error setting collation normalization %s",
u_errorName(status));
}
- while (BASIC[count].text != NULL) {
+ while (BASIC[count].text != nullptr) {
if (!assertEqual(&BASIC[count])) {
infoln("Error at test number %d", count);
}
count ++;
}
count = 0;
- while (NORMEXACT[count].text != NULL) {
+ while (NORMEXACT[count].text != nullptr) {
if (!assertEqual(&NORMEXACT[count])) {
infoln("Error at test number %d", count);
}
@@ -847,7 +847,7 @@ void StringSearchTest::TestNormExact()
}
m_en_us_->setAttribute(UCOL_NORMALIZATION_MODE, UCOL_OFF, status);
count = 0;
- while (NONNORMEXACT[count].text != NULL) {
+ while (NONNORMEXACT[count].text != nullptr) {
if (!assertEqual(&NONNORMEXACT[count])) {
infoln("Error at test number %d", count);
}
@@ -858,7 +858,7 @@ void StringSearchTest::TestNormExact()
void StringSearchTest::TestStrength()
{
int count = 0;
- while (STRENGTH[count].text != NULL) {
+ while (STRENGTH[count].text != nullptr) {
if (!assertEqual(&STRENGTH[count])) {
infoln("Error at test number %d", count);
}
@@ -870,7 +870,7 @@ void StringSearchTest::TestStrength()
void StringSearchTest::TestBreakIterator()
{
- UChar temp[128];
+ char16_t temp[128];
u_unescape(BREAKITERATOREXACT[0].text, temp, 128);
UnicodeString text;
text.setTo(temp, u_strlen(temp));
@@ -879,14 +879,14 @@ void StringSearchTest::TestBreakIterator()
pattern.setTo(temp, u_strlen(temp));
UErrorCode status = U_ZERO_ERROR;
- StringSearch *strsrch = new StringSearch(pattern, text, m_en_us_, NULL,
+ StringSearch *strsrch = new StringSearch(pattern, text, m_en_us_, nullptr,
status);
if (U_FAILURE(status)) {
errln("Error opening string search %s", u_errorName(status));
}
- strsrch->setBreakIterator(NULL, status);
- if (U_FAILURE(status) || strsrch->getBreakIterator() != NULL) {
+ strsrch->setBreakIterator(nullptr, status);
+ if (U_FAILURE(status) || strsrch->getBreakIterator() != nullptr) {
errln("Error usearch_getBreakIterator returned wrong object");
}
@@ -916,7 +916,7 @@ void StringSearchTest::TestBreakIterator()
text.setTo(temp, u_strlen(temp));
u_unescape(search->pattern, temp, 128);
pattern.setTo(temp, u_strlen(temp));
- if (breaker != NULL) {
+ if (breaker != nullptr) {
breaker->setText(text);
}
collator->setStrength(getECollationStrength(search->strength));
@@ -925,7 +925,7 @@ void StringSearchTest::TestBreakIterator()
if (U_FAILURE(status) ||
strsrch->getBreakIterator() != breaker) {
errln("Error setting break iterator");
- if (strsrch != NULL) {
+ if (strsrch != nullptr) {
delete strsrch;
}
}
@@ -935,7 +935,7 @@ void StringSearchTest::TestBreakIterator()
}
search = &(BREAKITERATOREXACT[count + 1]);
breaker = getBreakIterator(search->breaker);
- if (breaker != NULL) {
+ if (breaker != nullptr) {
breaker->setText(text);
}
strsrch->setBreakIterator(breaker, status);
@@ -952,7 +952,7 @@ void StringSearchTest::TestBreakIterator()
count += 2;
}
count = 0;
- while (BREAKITERATOREXACT[count].text != NULL) {
+ while (BREAKITERATOREXACT[count].text != nullptr) {
if (!assertEqual(&BREAKITERATOREXACT[count])) {
infoln("Error at test number %d", count);
}
@@ -971,7 +971,7 @@ void StringSearchTest::TestVariable()
errln("Error setting collation alternate attribute %s",
u_errorName(status));
}
- while (VARIABLE[count].text != NULL) {
+ while (VARIABLE[count].text != nullptr) {
logln("variable %d", count);
if (!assertEqual(&VARIABLE[count])) {
infoln("Error at test number %d", count);
@@ -985,7 +985,7 @@ void StringSearchTest::TestVariable()
void StringSearchTest::TestOverlap()
{
int count = 0;
- while (OVERLAP[count].text != NULL) {
+ while (OVERLAP[count].text != nullptr) {
if (!assertEqualWithAttribute(&OVERLAP[count], USEARCH_OFF,
USEARCH_ON)) {
errln("Error at overlap test number %d", count);
@@ -993,7 +993,7 @@ void StringSearchTest::TestOverlap()
count ++;
}
count = 0;
- while (NONOVERLAP[count].text != NULL) {
+ while (NONOVERLAP[count].text != nullptr) {
if (!assertEqual(&NONOVERLAP[count])) {
errln("Error at non overlap test number %d", count);
}
@@ -1003,7 +1003,7 @@ void StringSearchTest::TestOverlap()
count = 0;
while (count < 1) {
const SearchData *search = &(OVERLAP[count]);
- UChar temp[128];
+ char16_t temp[128];
u_unescape(search->text, temp, 128);
UnicodeString text;
text.setTo(temp, u_strlen(temp));
@@ -1014,7 +1014,7 @@ void StringSearchTest::TestOverlap()
RuleBasedCollator *collator = getCollator(search->collator);
UErrorCode status = U_ZERO_ERROR;
StringSearch *strsrch = new StringSearch(pattern, text,
- collator, NULL,
+ collator, nullptr,
status);
strsrch->setAttribute(USEARCH_OVERLAP, USEARCH_ON, status);
@@ -1047,7 +1047,7 @@ void StringSearchTest::TestOverlap()
void StringSearchTest::TestCollator()
{
// test collator that thinks "o" and "p" are the same thing
- UChar temp[128];
+ char16_t temp[128];
u_unescape(COLLATOR[0].text, temp, 128);
UnicodeString text;
text.setTo(temp, u_strlen(temp));
@@ -1056,7 +1056,7 @@ void StringSearchTest::TestCollator()
pattern.setTo(temp, u_strlen(temp));
UErrorCode status = U_ZERO_ERROR;
- StringSearch *strsrch = new StringSearch(pattern, text, m_en_us_, NULL,
+ StringSearch *strsrch = new StringSearch(pattern, text, m_en_us_, nullptr,
status);
if (U_FAILURE(status)) {
errln("Error opening string search %s", u_errorName(status));
@@ -1111,7 +1111,7 @@ void StringSearchTest::TestCollator()
void StringSearchTest::TestPattern()
{
- UChar temp[512];
+ char16_t temp[512];
int templength;
u_unescape(PATTERN[0].text, temp, 512);
UnicodeString text;
@@ -1122,13 +1122,13 @@ void StringSearchTest::TestPattern()
m_en_us_->setStrength(getECollationStrength(PATTERN[0].strength));
UErrorCode status = U_ZERO_ERROR;
- StringSearch *strsrch = new StringSearch(pattern, text, m_en_us_, NULL,
+ StringSearch *strsrch = new StringSearch(pattern, text, m_en_us_, nullptr,
status);
if (U_FAILURE(status)) {
errln("Error opening string search %s", u_errorName(status));
m_en_us_->setStrength(getECollationStrength(UCOL_TERTIARY));
- if (strsrch != NULL) {
+ if (strsrch != nullptr) {
delete strsrch;
}
return;
@@ -1138,7 +1138,7 @@ void StringSearchTest::TestPattern()
}
if (!assertEqualWithStringSearch(strsrch, &PATTERN[0])) {
m_en_us_->setStrength(getECollationStrength(UCOL_TERTIARY));
- if (strsrch != NULL) {
+ if (strsrch != nullptr) {
delete strsrch;
}
return;
@@ -1150,7 +1150,7 @@ void StringSearchTest::TestPattern()
if (pattern != strsrch->getPattern()) {
errln("Error setting pattern");
m_en_us_->setStrength(getECollationStrength(UCOL_TERTIARY));
- if (strsrch != NULL) {
+ if (strsrch != nullptr) {
delete strsrch;
}
return;
@@ -1161,7 +1161,7 @@ void StringSearchTest::TestPattern()
}
if (!assertEqualWithStringSearch(strsrch, &PATTERN[1])) {
m_en_us_->setStrength(getECollationStrength(UCOL_TERTIARY));
- if (strsrch != NULL) {
+ if (strsrch != nullptr) {
delete strsrch;
}
return;
@@ -1173,7 +1173,7 @@ void StringSearchTest::TestPattern()
if (pattern != strsrch->getPattern()) {
errln("Error setting pattern");
m_en_us_->setStrength(getECollationStrength(UCOL_TERTIARY));
- if (strsrch != NULL) {
+ if (strsrch != nullptr) {
delete strsrch;
}
return;
@@ -1184,7 +1184,7 @@ void StringSearchTest::TestPattern()
}
if (!assertEqualWithStringSearch(strsrch, &PATTERN[0])) {
m_en_us_->setStrength(getECollationStrength(UCOL_TERTIARY));
- if (strsrch != NULL) {
+ if (strsrch != nullptr) {
delete strsrch;
}
return;
@@ -1200,14 +1200,14 @@ void StringSearchTest::TestPattern()
errln("Error setting pattern with size 512, %s", u_errorName(status));
}
m_en_us_->setStrength(getECollationStrength(UCOL_TERTIARY));
- if (strsrch != NULL) {
+ if (strsrch != nullptr) {
delete strsrch;
}
}
void StringSearchTest::TestText()
{
- UChar temp[128];
+ char16_t temp[128];
u_unescape(TEXT[0].text, temp, 128);
UnicodeString text;
text.setTo(temp, u_strlen(temp));
@@ -1216,7 +1216,7 @@ void StringSearchTest::TestText()
pattern.setTo(temp, u_strlen(temp));
UErrorCode status = U_ZERO_ERROR;
- StringSearch *strsrch = new StringSearch(pattern, text, m_en_us_, NULL,
+ StringSearch *strsrch = new StringSearch(pattern, text, m_en_us_, nullptr,
status);
if (U_FAILURE(status)) {
errln("Error opening string search %s", u_errorName(status));
@@ -1267,7 +1267,7 @@ void StringSearchTest::TestText()
void StringSearchTest::TestCompositeBoundaries()
{
int count = 0;
- while (COMPOSITEBOUNDARIES[count].text != NULL) {
+ while (COMPOSITEBOUNDARIES[count].text != nullptr) {
logln("composite %d", count);
if (!assertEqual(&COMPOSITEBOUNDARIES[count])) {
errln("Error at test number %d", count);
@@ -1282,7 +1282,7 @@ void StringSearchTest::TestGetSetOffset()
UnicodeString pattern("1234567890123456");
UnicodeString text("12345678901234567890123456789012");
StringSearch *strsrch = new StringSearch(pattern, text, m_en_us_,
- NULL, status);
+ nullptr, status);
/* testing out of bounds error */
strsrch->setOffset(-1, status);
if (U_SUCCESS(status)) {
@@ -1293,10 +1293,10 @@ void StringSearchTest::TestGetSetOffset()
errln("Error expecting set offset error");
}
int index = 0;
- while (BASIC[index].text != NULL) {
+ while (BASIC[index].text != nullptr) {
UErrorCode status = U_ZERO_ERROR;
SearchData search = BASIC[index ++];
- UChar temp[128];
+ char16_t temp[128];
u_unescape(search.text, temp, 128);
text.setTo(temp, u_strlen(temp));
@@ -1358,7 +1358,7 @@ void StringSearchTest::TestGetSetAttribute()
UErrorCode status = U_ZERO_ERROR;
UnicodeString pattern("pattern");
UnicodeString text("text");
- StringSearch *strsrch = new StringSearch(pattern, text, m_en_us_, NULL,
+ StringSearch *strsrch = new StringSearch(pattern, text, m_en_us_, nullptr,
status);
if (U_FAILURE(status)) {
errln("Error opening search %s", u_errorName(status));
@@ -1417,7 +1417,7 @@ void StringSearchTest::TestGetSetAttribute()
void StringSearchTest::TestGetMatch()
{
- UChar temp[128];
+ char16_t temp[128];
SearchData search = MATCH[0];
u_unescape(search.text, temp, 128);
UnicodeString text;
@@ -1427,11 +1427,11 @@ void StringSearchTest::TestGetMatch()
pattern.setTo(temp, u_strlen(temp));
UErrorCode status = U_ZERO_ERROR;
- StringSearch *strsrch = new StringSearch(pattern, text, m_en_us_, NULL,
+ StringSearch *strsrch = new StringSearch(pattern, text, m_en_us_, nullptr,
status);
if (U_FAILURE(status)) {
errln("Error opening string search %s", u_errorName(status));
- if (strsrch != NULL) {
+ if (strsrch != nullptr) {
delete strsrch;
}
return;
@@ -1479,9 +1479,9 @@ void StringSearchTest::TestGetMatch()
void StringSearchTest::TestSetMatch()
{
int count = 0;
- while (MATCH[count].text != NULL) {
+ while (MATCH[count].text != nullptr) {
SearchData search = MATCH[count];
- UChar temp[128];
+ char16_t temp[128];
UErrorCode status = U_ZERO_ERROR;
u_unescape(search.text, temp, 128);
UnicodeString text;
@@ -1491,10 +1491,10 @@ void StringSearchTest::TestSetMatch()
pattern.setTo(temp, u_strlen(temp));
StringSearch *strsrch = new StringSearch(pattern, text, m_en_us_,
- NULL, status);
+ nullptr, status);
if (U_FAILURE(status)) {
errln("Error opening string search %s", u_errorName(status));
- if (strsrch != NULL) {
+ if (strsrch != nullptr) {
delete strsrch;
}
return;
@@ -1550,11 +1550,11 @@ void StringSearchTest::TestReset()
UErrorCode status = U_ZERO_ERROR;
UnicodeString text("fish fish");
UnicodeString pattern("s");
- StringSearch *strsrch = new StringSearch(pattern, text, m_en_us_, NULL,
+ StringSearch *strsrch = new StringSearch(pattern, text, m_en_us_, nullptr,
status);
if (U_FAILURE(status)) {
errln("Error opening string search %s", u_errorName(status));
- if (strsrch != NULL) {
+ if (strsrch != nullptr) {
delete strsrch;
}
return;
@@ -1585,7 +1585,7 @@ void StringSearchTest::TestReset()
void StringSearchTest::TestSupplementary()
{
int count = 0;
- while (SUPPLEMENTARY[count].text != NULL) {
+ while (SUPPLEMENTARY[count].text != nullptr) {
if (!assertEqual(&SUPPLEMENTARY[count])) {
errln("Error at test number %d", count);
}
@@ -1595,7 +1595,7 @@ void StringSearchTest::TestSupplementary()
void StringSearchTest::TestContraction()
{
- UChar temp[128];
+ char16_t temp[128];
UErrorCode status = U_ZERO_ERROR;
u_unescape(CONTRACTIONRULE, temp, 128);
@@ -1608,14 +1608,14 @@ void StringSearchTest::TestContraction()
}
UnicodeString text("text");
UnicodeString pattern("pattern");
- StringSearch *strsrch = new StringSearch(pattern, text, collator, NULL,
+ StringSearch *strsrch = new StringSearch(pattern, text, collator, nullptr,
status);
if (U_FAILURE(status)) {
errln("Error opening string search %s", u_errorName(status));
}
int count = 0;
- while (CONTRACTION[count].text != NULL) {
+ while (CONTRACTION[count].text != nullptr) {
u_unescape(CONTRACTION[count].text, temp, 128);
text.setTo(temp, u_strlen(temp));
u_unescape(CONTRACTION[count].pattern, temp, 128);
@@ -1633,7 +1633,7 @@ void StringSearchTest::TestContraction()
void StringSearchTest::TestIgnorable()
{
- UChar temp[128];
+ char16_t temp[128];
u_unescape(IGNORABLERULE, temp, 128);
UnicodeString rules;
rules.setTo(temp, u_strlen(temp));
@@ -1648,7 +1648,7 @@ void StringSearchTest::TestIgnorable()
}
UnicodeString pattern("pattern");
UnicodeString text("text");
- StringSearch *strsrch = new StringSearch(pattern, text, collator, NULL,
+ StringSearch *strsrch = new StringSearch(pattern, text, collator, nullptr,
status);
if (U_FAILURE(status)) {
errln("Error opening string search %s", u_errorName(status));
@@ -1656,7 +1656,7 @@ void StringSearchTest::TestIgnorable()
return;
}
- while (IGNORABLE[count].text != NULL) {
+ while (IGNORABLE[count].text != nullptr) {
u_unescape(IGNORABLE[count].text, temp, 128);
text.setTo(temp, u_strlen(temp));
u_unescape(IGNORABLE[count].pattern, temp, 128);
@@ -1674,11 +1674,11 @@ void StringSearchTest::TestIgnorable()
void StringSearchTest::TestDiacriticMatch()
{
- UChar temp[128];
+ char16_t temp[128];
UErrorCode status = U_ZERO_ERROR;
int count = 0;
- RuleBasedCollator* coll = NULL;
- StringSearch *strsrch = NULL;
+ RuleBasedCollator* coll = nullptr;
+ StringSearch *strsrch = nullptr;
UnicodeString pattern("pattern");
UnicodeString text("text");
@@ -1686,7 +1686,7 @@ void StringSearchTest::TestDiacriticMatch()
const SearchData *search;
search = &(DIACRITICMATCH[count]);
- while (search->text != NULL) {
+ while (search->text != nullptr) {
coll = getCollator(search->collator);
coll->setStrength(getECollationStrength(search->strength));
strsrch = new StringSearch(pattern, text, coll, getBreakIterator(search->breaker), status);
@@ -1712,7 +1712,7 @@ void StringSearchTest::TestDiacriticMatch()
void StringSearchTest::TestCanonical()
{
int count = 0;
- while (BASICCANONICAL[count].text != NULL) {
+ while (BASICCANONICAL[count].text != nullptr) {
if (!assertCanonicalEqual(&BASICCANONICAL[count])) {
errln("Error at test number %d", count);
}
@@ -1725,7 +1725,7 @@ void StringSearchTest::TestNormCanonical()
UErrorCode status = U_ZERO_ERROR;
m_en_us_->setAttribute(UCOL_NORMALIZATION_MODE, UCOL_ON, status);
int count = 0;
- while (NORMCANONICAL[count].text != NULL) {
+ while (NORMCANONICAL[count].text != nullptr) {
if (!assertCanonicalEqual(&NORMCANONICAL[count])) {
errln("Error at test number %d", count);
}
@@ -1737,7 +1737,7 @@ void StringSearchTest::TestNormCanonical()
void StringSearchTest::TestStrengthCanonical()
{
int count = 0;
- while (STRENGTHCANONICAL[count].text != NULL) {
+ while (STRENGTHCANONICAL[count].text != nullptr) {
if (!assertCanonicalEqual(&STRENGTHCANONICAL[count])) {
errln("Error at test number %d", count);
}
@@ -1754,7 +1754,7 @@ void StringSearchTest::TestBreakIteratorCanonical()
while (count < 4) {
// special purposes for tests numbers 0-3
- UChar temp[128];
+ char16_t temp[128];
const SearchData *search = &(BREAKITERATORCANONICAL[count]);
u_unescape(search->text, temp, 128);
@@ -1787,7 +1787,7 @@ void StringSearchTest::TestBreakIteratorCanonical()
}
search = &(BREAKITERATOREXACT[count + 1]);
breaker = getBreakIterator(search->breaker);
- if (breaker == NULL) {
+ if (breaker == nullptr) {
errln("Error creating BreakIterator");
return;
}
@@ -1808,7 +1808,7 @@ void StringSearchTest::TestBreakIteratorCanonical()
count += 2;
}
count = 0;
- while (BREAKITERATORCANONICAL[count].text != NULL) {
+ while (BREAKITERATORCANONICAL[count].text != nullptr) {
if (!assertEqual(&BREAKITERATORCANONICAL[count])) {
errln("Error at test number %d", count);
return;
@@ -1828,7 +1828,7 @@ void StringSearchTest::TestVariableCanonical()
errln("Error setting collation alternate attribute %s",
u_errorName(status));
}
- while (VARIABLE[count].text != NULL) {
+ while (VARIABLE[count].text != nullptr) {
logln("variable %d", count);
if (!assertCanonicalEqual(&VARIABLE[count])) {
errln("Error at test number %d", count);
@@ -1842,7 +1842,7 @@ void StringSearchTest::TestVariableCanonical()
void StringSearchTest::TestOverlapCanonical()
{
int count = 0;
- while (OVERLAPCANONICAL[count].text != NULL) {
+ while (OVERLAPCANONICAL[count].text != nullptr) {
if (!assertEqualWithAttribute(&OVERLAPCANONICAL[count], USEARCH_ON,
USEARCH_ON)) {
errln("Error at overlap test number %d", count);
@@ -1850,7 +1850,7 @@ void StringSearchTest::TestOverlapCanonical()
count ++;
}
count = 0;
- while (NONOVERLAP[count].text != NULL) {
+ while (NONOVERLAP[count].text != nullptr) {
if (!assertCanonicalEqual(&NONOVERLAPCANONICAL[count])) {
errln("Error at non overlap test number %d", count);
}
@@ -1859,7 +1859,7 @@ void StringSearchTest::TestOverlapCanonical()
count = 0;
while (count < 1) {
- UChar temp[128];
+ char16_t temp[128];
const SearchData *search = &(OVERLAPCANONICAL[count]);
UErrorCode status = U_ZERO_ERROR;
@@ -1871,7 +1871,7 @@ void StringSearchTest::TestOverlapCanonical()
pattern.setTo(temp, u_strlen(temp));
RuleBasedCollator *collator = getCollator(search->collator);
StringSearch *strsrch = new StringSearch(pattern, text, collator,
- NULL, status);
+ nullptr, status);
strsrch->setAttribute(USEARCH_CANONICAL_MATCH, USEARCH_ON, status);
strsrch->setAttribute(USEARCH_OVERLAP, USEARCH_ON, status);
if (U_FAILURE(status) ||
@@ -1902,7 +1902,7 @@ void StringSearchTest::TestOverlapCanonical()
void StringSearchTest::TestCollatorCanonical()
{
/* test collator that thinks "o" and "p" are the same thing */
- UChar temp[128];
+ char16_t temp[128];
u_unescape(COLLATORCANONICAL[0].text, temp, 128);
UnicodeString text;
text.setTo(temp, u_strlen(temp));
@@ -1912,7 +1912,7 @@ void StringSearchTest::TestCollatorCanonical()
UErrorCode status = U_ZERO_ERROR;
StringSearch *strsrch = new StringSearch(pattern, text, m_en_us_,
- NULL, status);
+ nullptr, status);
strsrch->setAttribute(USEARCH_CANONICAL_MATCH, USEARCH_ON, status);
if (U_FAILURE(status)) {
errln("Error opening string search %s", u_errorName(status));
@@ -1941,7 +1941,7 @@ void StringSearchTest::TestCollatorCanonical()
strsrch->setAttribute(USEARCH_CANONICAL_MATCH, USEARCH_ON, status);
if (!assertEqualWithStringSearch(strsrch, &COLLATORCANONICAL[1])) {
delete strsrch;
- if (tailored != NULL) {
+ if (tailored != nullptr) {
delete tailored;
}
@@ -1956,7 +1956,7 @@ void StringSearchTest::TestCollatorCanonical()
if (!assertEqualWithStringSearch(strsrch, &COLLATORCANONICAL[0])) {
}
delete strsrch;
- if (tailored != NULL) {
+ if (tailored != nullptr) {
delete tailored;
}
}
@@ -1964,7 +1964,7 @@ void StringSearchTest::TestCollatorCanonical()
void StringSearchTest::TestPatternCanonical()
{
- UChar temp[128];
+ char16_t temp[128];
u_unescape(PATTERNCANONICAL[0].text, temp, 128);
UnicodeString text;
@@ -1977,7 +1977,7 @@ void StringSearchTest::TestPatternCanonical()
getECollationStrength(PATTERNCANONICAL[0].strength));
UErrorCode status = U_ZERO_ERROR;
- StringSearch *strsrch = new StringSearch(pattern, text, m_en_us_, NULL,
+ StringSearch *strsrch = new StringSearch(pattern, text, m_en_us_, nullptr,
status);
strsrch->setAttribute(USEARCH_CANONICAL_MATCH, USEARCH_ON, status);
if (U_FAILURE(status)) {
@@ -2024,14 +2024,14 @@ void StringSearchTest::TestPatternCanonical()
}
ENDTESTPATTERN:
m_en_us_->setStrength(getECollationStrength(UCOL_TERTIARY));
- if (strsrch != NULL) {
+ if (strsrch != nullptr) {
delete strsrch;
}
}
void StringSearchTest::TestTextCanonical()
{
- UChar temp[128];
+ char16_t temp[128];
u_unescape(TEXTCANONICAL[0].text, temp, 128);
UnicodeString text;
text.setTo(temp, u_strlen(temp));
@@ -2040,7 +2040,7 @@ void StringSearchTest::TestTextCanonical()
pattern.setTo(temp, u_strlen(temp));
UErrorCode status = U_ZERO_ERROR;
- StringSearch *strsrch = new StringSearch(pattern, text, m_en_us_, NULL,
+ StringSearch *strsrch = new StringSearch(pattern, text, m_en_us_, nullptr,
status);
strsrch->setAttribute(USEARCH_CANONICAL_MATCH, USEARCH_ON, status);
@@ -2083,7 +2083,7 @@ void StringSearchTest::TestTextCanonical()
goto ENDTESTPATTERN;
}
ENDTESTPATTERN:
- if (strsrch != NULL) {
+ if (strsrch != nullptr) {
delete strsrch;
}
}
@@ -2091,7 +2091,7 @@ ENDTESTPATTERN:
void StringSearchTest::TestCompositeBoundariesCanonical()
{
int count = 0;
- while (COMPOSITEBOUNDARIESCANONICAL[count].text != NULL) {
+ while (COMPOSITEBOUNDARIESCANONICAL[count].text != nullptr) {
logln("composite %d", count);
if (!assertCanonicalEqual(&COMPOSITEBOUNDARIESCANONICAL[count])) {
errln("Error at test number %d", count);
@@ -2106,7 +2106,7 @@ void StringSearchTest::TestGetSetOffsetCanonical()
UErrorCode status = U_ZERO_ERROR;
UnicodeString text("text");
UnicodeString pattern("pattern");
- StringSearch *strsrch = new StringSearch(pattern, text, m_en_us_, NULL,
+ StringSearch *strsrch = new StringSearch(pattern, text, m_en_us_, nullptr,
status);
Collator *collator = strsrch->getCollator();
@@ -2123,10 +2123,10 @@ void StringSearchTest::TestGetSetOffsetCanonical()
errln("Error expecting set offset error");
}
int index = 0;
- UChar temp[128];
- while (BASICCANONICAL[index].text != NULL) {
+ char16_t temp[128];
+ while (BASICCANONICAL[index].text != nullptr) {
SearchData search = BASICCANONICAL[index ++];
- if (BASICCANONICAL[index].text == NULL) {
+ if (BASICCANONICAL[index].text == nullptr) {
/* skip the last one */
break;
}
@@ -2189,7 +2189,7 @@ bail:
void StringSearchTest::TestSupplementaryCanonical()
{
int count = 0;
- while (SUPPLEMENTARYCANONICAL[count].text != NULL) {
+ while (SUPPLEMENTARYCANONICAL[count].text != nullptr) {
if (!assertCanonicalEqual(&SUPPLEMENTARYCANONICAL[count])) {
errln("Error at test number %d", count);
}
@@ -2199,7 +2199,7 @@ void StringSearchTest::TestSupplementaryCanonical()
void StringSearchTest::TestContractionCanonical()
{
- UChar temp[128];
+ char16_t temp[128];
u_unescape(CONTRACTIONRULE, temp, 128);
UnicodeString rules;
@@ -2213,7 +2213,7 @@ void StringSearchTest::TestContractionCanonical()
}
UnicodeString text("text");
UnicodeString pattern("pattern");
- StringSearch *strsrch = new StringSearch(pattern, text, collator, NULL,
+ StringSearch *strsrch = new StringSearch(pattern, text, collator, nullptr,
status);
strsrch->setAttribute(USEARCH_CANONICAL_MATCH, USEARCH_ON, status);
if (U_FAILURE(status)) {
@@ -2221,7 +2221,7 @@ void StringSearchTest::TestContractionCanonical()
}
int count = 0;
- while (CONTRACTIONCANONICAL[count].text != NULL) {
+ while (CONTRACTIONCANONICAL[count].text != nullptr) {
u_unescape(CONTRACTIONCANONICAL[count].text, temp, 128);
text.setTo(temp, u_strlen(temp));
u_unescape(CONTRACTIONCANONICAL[count].pattern, temp, 128);
@@ -2247,7 +2247,7 @@ void StringSearchTest::TestUClassID()
UErrorCode status = U_ZERO_ERROR;
UnicodeString text("text");
UnicodeString pattern("pattern");
- StringSearch *strsrch = new StringSearch(pattern, text, m_en_us_, NULL,
+ StringSearch *strsrch = new StringSearch(pattern, text, m_en_us_, nullptr,
status);
id = *((char *)strsrch->getDynamicClassID());
if (id != 0) {
@@ -2405,7 +2405,7 @@ void StringSearchTest::TestSubclass()
{
UnicodeString text("abc abcd abc");
UnicodeString pattern("abc");
- TestSearch search(text, NULL, pattern);
+ TestSearch search(text, nullptr, pattern);
TestSearch search2(search);
int expected[] = {0, 4, 9};
UErrorCode status = U_ZERO_ERROR;
@@ -2453,8 +2453,8 @@ class StubSearchIterator:public SearchIterator{
public:
StubSearchIterator(){}
virtual void setOffset(int32_t , UErrorCode &) override {}
- virtual int32_t getOffset(void) const override {return 0;}
- virtual SearchIterator* safeClone(void) const override {return NULL;}
+ virtual int32_t getOffset() const override {return 0;}
+ virtual SearchIterator* safeClone() const override {return nullptr;}
virtual int32_t handleNext(int32_t , UErrorCode &) override {return 0;}
virtual int32_t handlePrev(int32_t , UErrorCode &) override {return 0;}
virtual UClassID getDynamicClassID() const override {
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/srchtest.h b/Build/source/libs/icu/icu-src/source/test/intltest/srchtest.h
index 6a14e004cd1..504b2210635 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/srchtest.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/srchtest.h
@@ -28,7 +28,7 @@ public:
virtual ~StringSearchTest();
void runIndexedTest(int32_t index, UBool exec, const char* &name,
- char* par = NULL) override;
+ char* par = nullptr) override;
#if !UCONFIG_NO_BREAK_ITERATION
private:
RuleBasedCollator *m_en_us_;
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/ssearch.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/ssearch.cpp
index 4fba808f2ec..d951f3d52db 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/ssearch.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/ssearch.cpp
@@ -28,7 +28,7 @@
#include "ssearch.h"
#include "xmlparser.h"
-#include <stdio.h> // for sprintf
+#include <stdio.h> // for snprintf
char testId[100];
@@ -112,7 +112,7 @@ const char *SSearchTest::getPath(char buffer[2048], const char *filename) {
if (U_FAILURE(status) || strlen(testDataDirectory) + strlen(filename) + 1 >= PATH_BUFFER_SIZE) {
errln("ERROR: getPath() failed - %s", u_errorName(status));
- return NULL;
+ return nullptr;
}
strcpy(buffer, testDataDirectory);
@@ -128,7 +128,7 @@ void SSearchTest::searchTest()
char path[PATH_BUFFER_SIZE];
const char *testFilePath = getPath(path, "ssearch.xml");
- if (testFilePath == NULL) {
+ if (testFilePath == nullptr) {
return; /* Couldn't get path: error message already output. */
}
@@ -141,7 +141,7 @@ void SSearchTest::searchTest()
}
const UnicodeString *debugTestCase = root->getAttribute("debug");
- if (debugTestCase != NULL) {
+ if (debugTestCase != nullptr) {
// setenv("USEARCH_DEBUG", "1", 1);
}
@@ -149,7 +149,7 @@ void SSearchTest::searchTest()
const UXMLElement *testCase;
int32_t tc = 0;
- while((testCase = root->nextChildElement(tc)) != NULL) {
+ while((testCase = root->nextChildElement(tc)) != nullptr) {
if (testCase->getTagName().compare("test-case") != 0) {
errln("ssearch, unrecognized XML Element in test file");
@@ -157,12 +157,12 @@ void SSearchTest::searchTest()
}
const UnicodeString *id = testCase->getAttribute("id");
*testId = 0;
- if (id != NULL) {
+ if (id != nullptr) {
id->extract(0, id->length(), testId, sizeof(testId), US_INV);
}
// If debugging test case has been specified and this is not it, skip to next.
- if (id!=NULL && debugTestCase!=NULL && *id != *debugTestCase) {
+ if (id!=nullptr && debugTestCase!=nullptr && *id != *debugTestCase) {
continue;
}
//
@@ -171,7 +171,7 @@ void SSearchTest::searchTest()
//
const UnicodeString *strength = testCase->getAttribute("strength");
UColAttributeValue collatorStrength = UCOL_PRIMARY;
- if (strength==NULL) { collatorStrength = UCOL_TERTIARY;}
+ if (strength==nullptr) { collatorStrength = UCOL_TERTIARY;}
else if (*strength=="PRIMARY") { collatorStrength = UCOL_PRIMARY;}
else if (*strength=="SECONDARY") { collatorStrength = UCOL_SECONDARY;}
else if (*strength=="TERTIARY") { collatorStrength = UCOL_TERTIARY;}
@@ -191,8 +191,8 @@ void SSearchTest::searchTest()
//
UColAttributeValue normalize = UCOL_OFF;
const UnicodeString *norm = testCase->getAttribute("norm");
- TEST_ASSERT (norm==NULL || *norm=="ON" || *norm=="OFF");
- if (norm!=NULL && *norm=="ON") {
+ TEST_ASSERT (norm==nullptr || *norm=="ON" || *norm=="OFF");
+ if (norm!=nullptr && *norm=="ON") {
normalize = UCOL_ON;
}
@@ -201,18 +201,18 @@ void SSearchTest::searchTest()
//
UColAttributeValue alternateHandling = UCOL_NON_IGNORABLE;
const UnicodeString *alt = testCase->getAttribute("alternate_handling");
- TEST_ASSERT (alt == NULL || *alt == "SHIFTED" || *alt == "NON_IGNORABLE");
- if (alt != NULL && *alt == "SHIFTED") {
+ TEST_ASSERT (alt == nullptr || *alt == "SHIFTED" || *alt == "NON_IGNORABLE");
+ if (alt != nullptr && *alt == "SHIFTED") {
alternateHandling = UCOL_SHIFTED;
}
const UnicodeString defLocale("en");
char clocale[100];
const UnicodeString *locale = testCase->getAttribute("locale");
- if (locale == NULL || locale->length()==0) {
+ if (locale == nullptr || locale->length()==0) {
locale = &defLocale;
}
- locale->extract(0, locale->length(), clocale, sizeof(clocale), NULL);
+ locale->extract(0, locale->length(), clocale, sizeof(clocale), nullptr);
UnicodeString text;
@@ -224,8 +224,8 @@ void SSearchTest::searchTest()
int32_t nodeCount = 0;
n = testCase->getChildElement("pattern");
- TEST_ASSERT(n != NULL);
- if (n==NULL) {
+ TEST_ASSERT(n != nullptr);
+ if (n==nullptr) {
continue;
}
text = n->getText(false);
@@ -234,7 +234,7 @@ void SSearchTest::searchTest()
nodeCount++;
n = testCase->getChildElement("pre");
- if (n!=NULL) {
+ if (n!=nullptr) {
text = n->getText(false);
text = text.unescape();
target.append(text);
@@ -242,7 +242,7 @@ void SSearchTest::searchTest()
}
n = testCase->getChildElement("m");
- if (n!=NULL) {
+ if (n!=nullptr) {
expectedMatchStart = target.length();
text = n->getText(false);
text = text.unescape();
@@ -252,7 +252,7 @@ void SSearchTest::searchTest()
}
n = testCase->getChildElement("post");
- if (n!=NULL) {
+ if (n!=nullptr) {
text = n->getText(false);
text = text.unescape();
target.append(text);
@@ -273,7 +273,7 @@ void SSearchTest::searchTest()
LocalUStringSearchPointer uss(usearch_openFromCollator(pattern.getBuffer(), pattern.length(),
target.getBuffer(), target.length(),
collator.getAlias(),
- NULL, // the break iterator
+ nullptr, // the break iterator
&status));
TEST_ASSERT_SUCCESS(status);
@@ -311,7 +311,7 @@ void SSearchTest::searchTest()
uss.adoptInstead(usearch_openFromCollator(pattern.getBuffer(), pattern.length(),
target.getBuffer(), target.length(),
collator.getAlias(),
- NULL,
+ nullptr,
&status));
//
@@ -345,13 +345,13 @@ public:
OrderList(UCollator *coll, const UnicodeString &string, int32_t stringOffset = 0);
~OrderList();
- int32_t size(void) const;
+ int32_t size() const;
void add(int32_t order, int32_t low, int32_t high);
const Order *get(int32_t index) const;
int32_t getLowOffset(int32_t index) const;
int32_t getHighOffset(int32_t index) const;
int32_t getOrder(int32_t index) const;
- void reverse(void);
+ void reverse();
UBool compare(const OrderList &other) const;
UBool matchesAt(int32_t offset, const OrderList &other) const;
@@ -362,13 +362,13 @@ private:
};
OrderList::OrderList()
- : list(NULL), listMax(16), listSize(0)
+ : list(nullptr), listMax(16), listSize(0)
{
list = new Order[listMax];
}
OrderList::OrderList(UCollator *coll, const UnicodeString &string, int32_t stringOffset)
- : list(NULL), listMax(16), listSize(0)
+ : list(nullptr), listMax(16), listSize(0)
{
UErrorCode status = U_ZERO_ERROR;
UCollationElements *elems = ucol_openElements(coll, string.getBuffer(), string.length(), &status);
@@ -435,7 +435,7 @@ void OrderList::add(int32_t order, int32_t low, int32_t high)
const Order *OrderList::get(int32_t index) const
{
if (index >= listSize) {
- return NULL;
+ return nullptr;
}
return &list[index];
@@ -445,7 +445,7 @@ int32_t OrderList::getLowOffset(int32_t index) const
{
const Order *order = get(index);
- if (order != NULL) {
+ if (order != nullptr) {
return order->lowOffset;
}
@@ -456,7 +456,7 @@ int32_t OrderList::getHighOffset(int32_t index) const
{
const Order *order = get(index);
- if (order != NULL) {
+ if (order != nullptr) {
return order->highOffset;
}
@@ -467,7 +467,7 @@ int32_t OrderList::getOrder(int32_t index) const
{
const Order *order = get(index);
- if (order != NULL) {
+ if (order != nullptr) {
return order->order;
}
@@ -524,7 +524,7 @@ UBool OrderList::matchesAt(int32_t offset, const OrderList &other) const
return true;
}
-static char *printOffsets(char *buffer, OrderList &list)
+static char *printOffsets(char *buffer, size_t n, OrderList &list)
{
int32_t size = list.size();
char *s = buffer;
@@ -533,16 +533,16 @@ static char *printOffsets(char *buffer, OrderList &list)
const Order *order = list.get(i);
if (i != 0) {
- s += sprintf(s, ", ");
+ s += snprintf(s, n, ", ");
}
- s += sprintf(s, "(%d, %d)", order->lowOffset, order->highOffset);
+ s += snprintf(s, n, "(%d, %d)", order->lowOffset, order->highOffset);
}
return buffer;
}
-static char *printOrders(char *buffer, OrderList &list)
+static char *printOrders(char *buffer, size_t n, OrderList &list)
{
int32_t size = list.size();
char *s = buffer;
@@ -551,10 +551,10 @@ static char *printOrders(char *buffer, OrderList &list)
const Order *order = list.get(i);
if (i != 0) {
- s += sprintf(s, ", ");
+ s += snprintf(s, n, ", ");
}
- s += sprintf(s, "%8.8X", order->order);
+ s += snprintf(s, n, "%8.8X", order->order);
}
return buffer;
@@ -626,7 +626,7 @@ void SSearchTest::offsetTest()
int32_t testCount = UPRV_LENGTHOF(test);
UErrorCode status = U_ZERO_ERROR;
- RuleBasedCollator *col = (RuleBasedCollator *) Collator::createInstance(Locale::getEnglish(), status);
+ RuleBasedCollator *col = dynamic_cast<RuleBasedCollator*>(Collator::createInstance(Locale::getEnglish(), status));
if (U_FAILURE(status)) {
errcheckln(status, "Failed to create collator in offsetTest! - %s", u_errorName(status));
return;
@@ -673,20 +673,20 @@ void SSearchTest::offsetTest()
if (forwardList.compare(backwardList)) {
logln("Works with \"%s\"", test[i]);
- logln("Forward offsets: [%s]", printOffsets(buffer, forwardList));
-// logln("Backward offsets: [%s]", printOffsets(buffer, backwardList));
+ logln("Forward offsets: [%s]", printOffsets(buffer, sizeof(buffer), forwardList));
+// logln("Backward offsets: [%s]", printOffsets(buffer, sizeof(buffer), backwardList));
- logln("Forward CEs: [%s]", printOrders(buffer, forwardList));
-// logln("Backward CEs: [%s]", printOrders(buffer, backwardList));
+ logln("Forward CEs: [%s]", printOrders(buffer, sizeof(buffer), forwardList));
+// logln("Backward CEs: [%s]", printOrders(buffer, sizeof(buffer), backwardList));
logln();
} else {
errln("Fails with \"%s\"", test[i]);
- infoln("Forward offsets: [%s]", printOffsets(buffer, forwardList));
- infoln("Backward offsets: [%s]", printOffsets(buffer, backwardList));
+ infoln("Forward offsets: [%s]", printOffsets(buffer, sizeof(buffer), forwardList));
+ infoln("Backward offsets: [%s]", printOffsets(buffer, sizeof(buffer), backwardList));
- infoln("Forward CEs: [%s]", printOrders(buffer, forwardList));
- infoln("Backward CEs: [%s]", printOrders(buffer, backwardList));
+ infoln("Forward CEs: [%s]", printOrders(buffer, sizeof(buffer), forwardList));
+ infoln("Backward CEs: [%s]", printOrders(buffer, sizeof(buffer), backwardList));
infoln();
}
@@ -711,9 +711,9 @@ static UnicodeString &escape(const UnicodeString &string, UnicodeString &buffer)
char cbuffer[12];
if (ch <= 0xFFFFL) {
- sprintf(cbuffer, "\\u%4.4X", ch);
+ snprintf(cbuffer, sizeof(cbuffer), "\\u%4.4X", ch);
} else {
- sprintf(cbuffer, "\\U%8.8X", ch);
+ snprintf(cbuffer, sizeof(cbuffer), "\\U%8.8X", ch);
}
buffer.append(cbuffer);
@@ -731,7 +731,7 @@ static UnicodeString &escape(const UnicodeString &string, UnicodeString &buffer)
void SSearchTest::sharpSTest()
{
UErrorCode status = U_ZERO_ERROR;
- UCollator *coll = NULL;
+ UCollator *coll = nullptr;
UnicodeString lp = "fuss";
UnicodeString sp = "fu\\u00DF";
UnicodeString targets[] = {"fu\\u00DF", "fu\\u00DFball", "1fu\\u00DFball", "12fu\\u00DFball", "123fu\\u00DFball", "1234fu\\u00DFball",
@@ -739,7 +739,7 @@ void SSearchTest::sharpSTest()
"fuss", "ffuss", "fufuss", "fusfuss", "1fuss", "12fuss", "123fuss", "1234fuss", "fu\\u00DF", "1fu\\u00DF", "12fu\\u00DF", "123fu\\u00DF", "1234fu\\u00DF"};
int32_t start = -1, end = -1;
- coll = ucol_openFromShortString("LEN_S1", false, NULL, &status);
+ coll = ucol_openFromShortString("LEN_S1", false, nullptr, &status);
TEST_ASSERT_SUCCESS(status);
UnicodeString lpUnescaped = lp.unescape();
@@ -748,13 +748,13 @@ void SSearchTest::sharpSTest()
LocalUStringSearchPointer ussLong(usearch_openFromCollator(lpUnescaped.getBuffer(), lpUnescaped.length(),
lpUnescaped.getBuffer(), lpUnescaped.length(), // actual test data will be set later
coll,
- NULL, // the break iterator
+ nullptr, // the break iterator
&status));
LocalUStringSearchPointer ussShort(usearch_openFromCollator(spUnescaped.getBuffer(), spUnescaped.length(),
spUnescaped.getBuffer(), spUnescaped.length(), // actual test data will be set later
coll,
- NULL, // the break iterator
+ nullptr, // the break iterator
&status));
TEST_ASSERT_SUCCESS(status);
@@ -788,19 +788,19 @@ void SSearchTest::sharpSTest()
void SSearchTest::goodSuffixTest()
{
UErrorCode status = U_ZERO_ERROR;
- UCollator *coll = NULL;
+ UCollator *coll = nullptr;
UnicodeString pat = /*"gcagagag"*/ "fxeld";
UnicodeString target = /*"gcatcgcagagagtatacagtacg"*/ "cloveldfxeld";
int32_t start = -1, end = -1;
UBool bFound;
- coll = ucol_open(NULL, &status);
+ coll = ucol_open(nullptr, &status);
TEST_ASSERT_SUCCESS(status);
LocalUStringSearchPointer ss(usearch_openFromCollator(pat.getBuffer(), pat.length(),
target.getBuffer(), target.length(),
coll,
- NULL, // the break iterator
+ nullptr, // the break iterator
&status));
TEST_ASSERT_SUCCESS(status);
@@ -934,7 +934,7 @@ const char *cPattern = "maketh houndes ete hem";
LocalUStringSearchPointer uss(usearch_openFromCollator(uPattern.getBuffer(), uPattern.length(),
target.getBuffer(), target.length(),
collator.getAlias(),
- NULL, // the break iterator
+ nullptr, // the break iterator
&status));
TEST_ASSERT_SUCCESS(status);
@@ -944,7 +944,7 @@ const char *cPattern = "maketh houndes ete hem";
// Find the match position usgin strstr
const char *pm = strstr(longishText, cPattern);
- TEST_ASSERT_M(pm!=NULL, "No pattern match with strstr");
+ TEST_ASSERT_M(pm!=nullptr, "No pattern match with strstr");
int32_t refMatchPos = (int32_t)(pm - longishText);
int32_t icuMatchPos;
int32_t icuMatchEnd;
@@ -1077,7 +1077,7 @@ void StringSetMonkey::append(UnicodeString &testCase, UnicodeString &alternate)
int32_t itemCount = uset_getItemCount(set), len = 0;
int32_t index = m_rand() % itemCount;
UChar32 rangeStart = 0, rangeEnd = 0;
- UChar buffer[16];
+ char16_t buffer[16];
UErrorCode err = U_ZERO_ERROR;
len = uset_getItem(set, index, &rangeStart, &rangeEnd, buffer, 16, &err);
@@ -1117,7 +1117,7 @@ UnicodeString &StringSetMonkey::generateAlternative(const UnicodeString &testCas
int32_t ce = ceList.get(offset);
const StringList *strings = collData->getStringList(ce);
- if (strings == NULL) {
+ if (strings == nullptr) {
return alternate.append(testCase);
}
@@ -1125,8 +1125,8 @@ UnicodeString &StringSetMonkey::generateAlternative(const UnicodeString &testCas
int32_t tries = 0;
// find random string that generates the same CEList
- const CEList *ceList2 = NULL;
- const UnicodeString *string = NULL;
+ const CEList *ceList2 = nullptr;
+ const UnicodeString *string = nullptr;
UBool matches = false;
do {
@@ -1294,7 +1294,7 @@ static int32_t getIntParam(UnicodeString name, UnicodeString &params, int32_t d
}
params.extract(m.start(1, status), paramLength, valString, sizeof(valString));
- val = uprv_strtol(valString, NULL, 10);
+ val = uprv_strtol(valString, nullptr, 10);
// Delete this parameter from the params string.
m.reset();
@@ -1322,7 +1322,7 @@ int32_t SSearchTest::monkeyTestCase(UCollator *coll, const UnicodeString &testCa
LocalUStringSearchPointer uss(usearch_openFromCollator(pattern.getBuffer(), pattern.length(),
testCase.getBuffer(), testCase.length(),
coll,
- NULL, // the break iterator
+ nullptr, // the break iterator
&status));
// **** TODO: find *all* matches, not just first one ****
@@ -1365,8 +1365,8 @@ void SSearchTest::monkeyTest(char *params)
{
// ook!
UErrorCode status = U_ZERO_ERROR;
- //UCollator *coll = ucol_open(NULL, &status);
- UCollator *coll = ucol_openFromShortString("S1", false, NULL, &status);
+ //UCollator *coll = ucol_open(nullptr, &status);
+ UCollator *coll = ucol_openFromShortString("S1", false, nullptr, &status);
if (U_FAILURE(status)) {
errcheckln(status, "Failed to create collator in MonkeyTest! - %s", u_errorName(status));
@@ -1412,7 +1412,7 @@ void SSearchTest::monkeyTest(char *params)
int32_t firstStrength = 0;
int32_t lastStrength = strengthCount - 1; //*/ 0;
- if (params != NULL) {
+ if (params != nullptr) {
#if !UCONFIG_NO_REGULAR_EXPRESSIONS
UnicodeString p(params);
@@ -1438,7 +1438,7 @@ void SSearchTest::monkeyTest(char *params)
// Each option is stripped out of the option string as it is processed.
// All options have been checked. The option string should have been completely emptied..
char buf[100];
- p.extract(buf, sizeof(buf), NULL, status);
+ p.extract(buf, sizeof(buf), nullptr, status);
buf[sizeof(buf)-1] = 0;
errln("Unrecognized or extra parameter: %s\n", buf);
return;
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/ssearch.h b/Build/source/libs/icu/icu-src/source/test/intltest/ssearch.h
index bb252915805..9a9390824b8 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/ssearch.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/ssearch.h
@@ -29,7 +29,7 @@ public:
SSearchTest();
virtual ~SSearchTest();
- virtual void runIndexedTest(int32_t index, UBool exec, const char* &name, char* params = NULL ) override;
+ virtual void runIndexedTest(int32_t index, UBool exec, const char* &name, char* params = nullptr ) override;
#if !UCONFIG_NO_BREAK_ITERATION
virtual void searchTest();
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/static_unisets_test.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/static_unisets_test.cpp
index 94021e3fbdf..16aa6ef4aaf 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/static_unisets_test.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/static_unisets_test.cpp
@@ -73,6 +73,7 @@ void StaticUnicodeSetsTest::testSetCoverage() {
const Locale* allAvailableLocales = Locale::getAvailableLocales(localeCount);
for (int32_t i = 0; i < localeCount; i++) {
Locale locale = allAvailableLocales[i];
+ const char* locName = locale.getName();
DecimalFormatSymbols dfs(locale, status);
UnicodeString localeName;
locale.getDisplayName(localeName);
@@ -81,7 +82,10 @@ void StaticUnicodeSetsTest::testSetCoverage() {
#define ASSERT_IN_SET(name, foo) assertInSet(localeName, UnicodeString("" #name ""), name, foo)
ASSERT_IN_SET(decimals, dfs.getConstSymbol(DecimalFormatSymbols::kDecimalSeparatorSymbol));
- ASSERT_IN_SET(grouping, dfs.getConstSymbol(DecimalFormatSymbols::kGroupingSeparatorSymbol));
+ if (locName==nullptr || uprv_strncmp(locName,"nqo",3) != 0 ||
+ !logKnownIssue("CLDR-17023", "Number symbols and/or parseLenients messed up for N’Ko")) {
+ ASSERT_IN_SET(grouping, dfs.getConstSymbol(DecimalFormatSymbols::kGroupingSeparatorSymbol));
+ }
ASSERT_IN_SET(plusSign, dfs.getConstSymbol(DecimalFormatSymbols::kPlusSignSymbol));
ASSERT_IN_SET(minusSign, dfs.getConstSymbol(DecimalFormatSymbols::kMinusSignSymbol));
ASSERT_IN_SET(percent, dfs.getConstSymbol(DecimalFormatSymbols::kPercentSymbol));
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/strcase.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/strcase.cpp
index a8f2caf99d7..d17e94b1895 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/strcase.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/strcase.cpp
@@ -26,6 +26,7 @@
#include "unicode/ures.h"
#include "unicode/uloc.h"
#include "unicode/locid.h"
+#include "unicode/normalizer2.h"
#include "unicode/ubrk.h"
#include "unicode/unistr.h"
#include "unicode/ucasemap.h"
@@ -74,6 +75,8 @@ public:
private:
void assertGreekUpper(const char16_t *s, const char16_t *expected);
+ void assertGreekUpperNormalized(const UnicodeString &s16, const UnicodeString &expected16,
+ const char *form);
Locale GREEK_LOCALE_;
};
@@ -125,21 +128,21 @@ StringCaseTest::runIndexedTest(int32_t index, UBool exec, const char *&name, cha
void
StringCaseTest::TestCaseConversion()
{
- static const UChar uppercaseGreek[] =
+ static const char16_t uppercaseGreek[] =
{ 0x399, 0x395, 0x3a3, 0x3a5, 0x3a3, 0x20, 0x03a7, 0x3a1, 0x399, 0x3a3, 0x3a4,
0x39f, 0x3a3, 0 };
// "IESUS CHRISTOS"
- static const UChar lowercaseGreek[] =
+ static const char16_t lowercaseGreek[] =
{ 0x3b9, 0x3b5, 0x3c3, 0x3c5, 0x3c2, 0x20, 0x03c7, 0x3c1, 0x3b9, 0x3c3, 0x3c4,
0x3bf, 0x3c2, 0 };
// "iesus christos"
- static const UChar lowercaseTurkish[] =
+ static const char16_t lowercaseTurkish[] =
{ 0x69, 0x73, 0x74, 0x61, 0x6e, 0x62, 0x75, 0x6c, 0x2c, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x63, 0x6f,
0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x0131, 0x6e, 0x6f, 0x70, 0x6c, 0x65, 0x21, 0 };
- static const UChar uppercaseTurkish[] =
+ static const char16_t uppercaseTurkish[] =
{ 0x54, 0x4f, 0x50, 0x4b, 0x41, 0x50, 0x49, 0x20, 0x50, 0x41, 0x4c, 0x41, 0x43, 0x45, 0x2c, 0x20,
0x0130, 0x53, 0x54, 0x41, 0x4e, 0x42, 0x55, 0x4c, 0 };
@@ -200,7 +203,7 @@ StringCaseTest::TestCaseConversion()
// more string case mapping tests with the new implementation
{
- static const UChar
+ static const char16_t
beforeLower[]= { 0x61, 0x42, 0x49, 0x3a3, 0xdf, 0x3a3, 0x2f, 0xd93f, 0xdfff },
lowerRoot[]= { 0x61, 0x62, 0x69, 0x3c3, 0xdf, 0x3c2, 0x2f, 0xd93f, 0xdfff },
@@ -440,7 +443,7 @@ StringCaseTest::TestCasingImpl(const UnicodeString &input,
#if !UCONFIG_NO_BREAK_ITERATION
case TEST_TITLE:
name="toTitle";
- result.toTitle((BreakIterator *)iter, locale, options);
+ result.toTitle(static_cast<BreakIterator *>(iter), locale, options);
break;
#endif
case TEST_FOLD:
@@ -458,7 +461,7 @@ StringCaseTest::TestCasingImpl(const UnicodeString &input,
#if !UCONFIG_NO_BREAK_ITERATION
if(whichCase==TEST_TITLE && options==0) {
result=input;
- result.toTitle((BreakIterator *)iter, locale);
+ result.toTitle(static_cast<BreakIterator *>(iter), locale);
if(result!=output) {
dataerrln("error: UnicodeString.toTitle(options=0) got a wrong result for a test case from casing.res");
}
@@ -468,14 +471,14 @@ StringCaseTest::TestCasingImpl(const UnicodeString &input,
// UTF-8
char utf8In[100], utf8Out[100];
int32_t utf8InLength, utf8OutLength, resultLength;
- UChar *buffer;
+ char16_t *buffer;
IcuTestErrorCode errorCode(*this, "TestCasingImpl");
LocalUCaseMapPointer csm(ucasemap_open(localeID, options, errorCode));
#if !UCONFIG_NO_BREAK_ITERATION
- if(iter!=NULL) {
+ if(iter!=nullptr) {
// Clone the break iterator so that the UCaseMap can safely adopt it.
- UBreakIterator *clone=ubrk_safeClone((UBreakIterator *)iter, NULL, NULL, errorCode);
+ UBreakIterator *clone=ubrk_safeClone(static_cast<UBreakIterator *>(iter), nullptr, nullptr, errorCode);
ucasemap_setBreakIterator(csm.getAlias(), clone, errorCode);
}
#endif
@@ -549,7 +552,7 @@ StringCaseTest::TestCasing() {
errln("TestCasing failed to createTestData(%s) - %s", dataNames[whichCase], u_errorName(status));
break;
}
- const DataMap *myCase = NULL;
+ const DataMap *myCase = nullptr;
while(casingTest->nextCase(myCase, status)) {
input = myCase->getString("Input", status);
output = myCase->getString("Output", status);
@@ -563,26 +566,26 @@ StringCaseTest::TestCasing() {
if(whichCase==TEST_TITLE) {
type = myCase->getInt("Type", status);
if(type>=0) {
- iter.adoptInstead(ubrk_open((UBreakIteratorType)type, cLocaleID, NULL, 0, &status));
+ iter.adoptInstead(ubrk_open((UBreakIteratorType)type, cLocaleID, nullptr, 0, &status));
} else if(type==-2) {
// Open a trivial break iterator that only delivers { 0, length }
// or even just { 0 } as boundaries.
- static const UChar rules[] = { 0x2e, 0x2a, 0x3b }; // ".*;"
+ static const char16_t rules[] = { 0x2e, 0x2a, 0x3b }; // ".*;"
UParseError parseError;
- iter.adoptInstead(ubrk_openRules(rules, UPRV_LENGTHOF(rules), NULL, 0, &parseError, &status));
+ iter.adoptInstead(ubrk_openRules(rules, UPRV_LENGTHOF(rules), nullptr, 0, &parseError, &status));
}
}
#endif
options = 0;
if(whichCase==TEST_TITLE || whichCase==TEST_FOLD) {
optionsString = myCase->getString("Options", status);
- if(optionsString.indexOf((UChar)0x54)>=0) { // T
+ if(optionsString.indexOf((char16_t)0x54)>=0) { // T
options|=U_FOLD_CASE_EXCLUDE_SPECIAL_I;
}
- if(optionsString.indexOf((UChar)0x4c)>=0) { // L
+ if(optionsString.indexOf((char16_t)0x4c)>=0) { // L
options|=U_TITLECASE_NO_LOWERCASE;
}
- if(optionsString.indexOf((UChar)0x41)>=0) { // A
+ if(optionsString.indexOf((char16_t)0x41)>=0) { // A
options|=U_TITLECASE_NO_BREAK_ADJUSTMENT;
}
}
@@ -598,7 +601,7 @@ StringCaseTest::TestCasing() {
}
#if !UCONFIG_NO_BREAK_ITERATION
- iter.adoptInstead(NULL);
+ iter.adoptInstead(nullptr);
#endif
}
}
@@ -608,9 +611,9 @@ StringCaseTest::TestCasing() {
// more tests for API coverage
status=U_ZERO_ERROR;
input=UNICODE_STRING_SIMPLE("sTrA\\u00dfE").unescape();
- (result=input).toTitle(NULL);
+ (result=input).toTitle(nullptr);
if(result!=UNICODE_STRING_SIMPLE("Stra\\u00dfe").unescape()) {
- dataerrln("UnicodeString::toTitle(NULL) failed.");
+ dataerrln("UnicodeString::toTitle(nullptr) failed.");
}
#endif
}
@@ -806,16 +809,27 @@ StringCaseTest::TestFullCaseFoldingIterator() {
}
}
-void
-StringCaseTest::assertGreekUpper(const char16_t *s, const char16_t *expected) {
- UnicodeString s16(s);
- UnicodeString expected16(expected);
- UnicodeString msg = UnicodeString("UnicodeString::toUpper/Greek(\"") + s16 + "\")";
+void StringCaseTest::assertGreekUpper(const char16_t *s, const char16_t *expected) {
+ UErrorCode errorCode = U_ZERO_ERROR;
+#if UCONFIG_NO_NORMALIZATION
+ assertGreekUpperNormalized(s, expected, "No normalization");
+#else
+ const Normalizer2 &nfc = *Normalizer2::getNFCInstance(errorCode);
+ const Normalizer2 &nfd = *Normalizer2::getNFDInstance(errorCode);
+ assertGreekUpperNormalized(nfc.normalize(s, errorCode), nfc.normalize(expected, errorCode), "NFC");
+ assertGreekUpperNormalized(nfd.normalize(s, errorCode), nfd.normalize(expected, errorCode), "NFD");
+#endif
+}
+
+void StringCaseTest::assertGreekUpperNormalized(const UnicodeString &s16,
+ const UnicodeString &expected16,
+ const char *form) {
+ UnicodeString msg = UnicodeString("UnicodeString::toUpper/Greek(\"") + s16 + "\" [" + form + "])";
UnicodeString result16(s16);
result16.toUpper(GREEK_LOCALE_);
assertEquals(msg, expected16, result16);
- msg = UnicodeString("u_strToUpper/Greek(\"") + s16 + "\") cap=";
+ msg = UnicodeString("u_strToUpper/Greek(\"") + s16 + "\" [" + form + "]) cap=";
int32_t length = expected16.length();
int32_t capacities[] = {
// Keep in sync with the UTF-8 capacities near the bottom of this function.
@@ -823,7 +837,7 @@ StringCaseTest::assertGreekUpper(const char16_t *s, const char16_t *expected) {
};
for (int32_t i = 0; i < UPRV_LENGTHOF(capacities); ++i) {
int32_t cap = capacities[i];
- UChar *dest16 = result16.getBuffer(expected16.length() + 1);
+ char16_t *dest16 = result16.getBuffer(expected16.length() + 1);
u_memset(dest16, 0x55AA, result16.getCapacity());
UErrorCode errorCode = U_ZERO_ERROR;
length = u_strToUpper(dest16, cap, s16.getBuffer(), s16.length(), "el", &errorCode);
@@ -849,7 +863,7 @@ StringCaseTest::assertGreekUpper(const char16_t *s, const char16_t *expected) {
assertSuccess("ucasemap_open", errorCode);
std::string s8;
s16.toUTF8String(s8);
- msg = UnicodeString("ucasemap_utf8ToUpper/Greek(\"") + s16 + "\")";
+ msg = UnicodeString("ucasemap_utf8ToUpper/Greek(\"") + s16 + "\" [" + form + "])";
char dest8[1000];
length = ucasemap_utf8ToUpper(csm.getAlias(), dest8, UPRV_LENGTHOF(dest8),
s8.data(), static_cast<int32_t>(s8.length()), &errorCode);
@@ -901,22 +915,27 @@ StringCaseTest::TestGreekUpper() {
assertGreekUpper(u"ΰ, ΤηÏÏŽ, Μάιος", u"Ϋ, ΤΗΡΩ, ΜΑΪΟΣ");
assertGreekUpper(u"άυλος", u"ΑΫΛΟΣ");
assertGreekUpper(u"ΑΫΛΟΣ", u"ΑΫΛΟΣ");
- assertGreekUpper(u"Άκλιτα Ïήματα ή άκλιτες μετοχές", u"ΑΚΛΙΤΑ ΡΗΜΑΤΑ Î—Ì Î‘ÎšÎ›Î™Î¤Î•Î£ ΜΕΤΟΧΕΣ");
+ assertGreekUpper(u"Άκλιτα Ïήματα ή άκλιτες μετοχές", u"ΑΚΛΙΤΑ ΡΗΜΑΤΑ Ή ΑΚΛΙΤΕΣ ΜΕΤΟΧΕΣ");
// http://www.unicode.org/udhr/d/udhr_ell_monotonic.html
assertGreekUpper(u"Επειδή η αναγνώÏιση της αξιοπÏέπειας", u"ΕΠΕΙΔΗ Η ΑÎΑΓÎΩΡΙΣΗ ΤΗΣ ΑΞΙΟΠΡΕΠΕΙΑΣ");
- assertGreekUpper(u"Î½Î¿Î¼Î¹ÎºÎ¿Ï Î® διεθνοÏÏ‚", u"ÎΟΜΙΚΟΥ Î—Ì Î”Î™Î•Î˜ÎΟΥΣ");
+ assertGreekUpper(u"Î½Î¿Î¼Î¹ÎºÎ¿Ï Î® διεθνοÏÏ‚", u"ÎΟΜΙΚΟΥ Ή ΔΙΕΘÎΟΥΣ");
// http://unicode.org/udhr/d/udhr_ell_polytonic.html
assertGreekUpper(u"Ἐπειδὴ ἡ ἀναγνώÏιση", u"ΕΠΕΙΔΗ Η ΑÎΑΓÎΩΡΙΣΗ");
- assertGreekUpper(u"νομικοῦ á¼¢ διεθνοῦς", u"ÎΟΜΙΚΟΥ Î—Ì Î”Î™Î•Î˜ÎΟΥΣ");
+ assertGreekUpper(u"νομικοῦ á¼¢ διεθνοῦς", u"ÎΟΜΙΚΟΥ Ή ΔΙΕΘÎΟΥΣ");
// From Google bug report
assertGreekUpper(u"Îέο, ΔημιουÏγία", u"ÎΕΟ, ΔΗΜΙΟΥΡΓΙΑ");
// http://crbug.com/234797
assertGreekUpper(u"Ελάτε να φάτε τα καλÏτεÏα παϊδάκια!", u"ΕΛΑΤΕ ÎΑ ΦΑΤΕ ΤΑ ΚΑΛΥΤΕΡΑ ΠΑΪΔΑΚΙΑ!");
assertGreekUpper(u"ΜαÎου, Ï„Ïόλεϊ", u"ΜΑΪΟΥ, ΤΡΟΛΕΪ");
- assertGreekUpper(u"Το ένα ή το άλλο.", u"ΤΟ ΕÎΑ Î—Ì Î¤ÎŸ ΑΛΛΟ.");
+ assertGreekUpper(u"Το ένα ή το άλλο.", u"ΤΟ ΕÎΑ Ή ΤΟ ΑΛΛΟ.");
// http://multilingualtypesetting.co.uk/blog/greek-typesetting-tips/
assertGreekUpper(u"Ïωμέικα", u"ΡΩΜΕΪΚΑ");
- assertGreekUpper(u"ή.", u"ΗÌ.");
+ assertGreekUpper(u"ή.", u"Ή.");
+
+ // The ὑπογεγÏαμμέναι become Ι as in default case conversion, but they are
+ // specially handled by the implementation.
+ assertGreekUpper(u"ᾠδή, -ήν, -ῆς, -ῇ", u"ΩΙΔΗ, -ΗÎ, -ΗΣ, -ΗΙ");
+ assertGreekUpper(u"á¾Î´Î·Ï‚", u"ΑΙΔΗΣ");
}
void StringCaseTest::TestArmenian() {
@@ -951,8 +970,8 @@ StringCaseTest::TestLongUpper() {
int32_t length = 0x40000004; // more than 1G UChars
UnicodeString s(length, (UChar32)0x390, length);
UnicodeString result;
- UChar *dest = result.getBuffer(length + 1);
- if (s.isBogus() || dest == NULL) {
+ char16_t *dest = result.getBuffer(length + 1);
+ if (s.isBogus() || dest == nullptr) {
logln("Out of memory, unable to run this test on this machine.");
return;
}
@@ -1023,7 +1042,7 @@ void StringCaseTest::TestBufferOverflow() {
UnicodeString data("hello world");
int32_t result;
#if !UCONFIG_NO_BREAK_ITERATION
- result = ucasemap_toTitle(csm.getAlias(), NULL, 0, data.getBuffer(), data.length(), errorCode);
+ result = ucasemap_toTitle(csm.getAlias(), nullptr, 0, data.getBuffer(), data.length(), errorCode);
if (errorCode.get() != U_BUFFER_OVERFLOW_ERROR || result != data.length()) {
errln("%s:%d ucasemap_toTitle(\"hello world\") failed: "
"expected (U_BUFFER_OVERFLOW_ERROR, %d), got (%s, %d)",
@@ -1035,7 +1054,7 @@ void StringCaseTest::TestBufferOverflow() {
std::string data_utf8;
data.toUTF8String(data_utf8);
#if !UCONFIG_NO_BREAK_ITERATION
- result = ucasemap_utf8ToTitle(csm.getAlias(), NULL, 0, data_utf8.c_str(), static_cast<int32_t>(data_utf8.length()), errorCode);
+ result = ucasemap_utf8ToTitle(csm.getAlias(), nullptr, 0, data_utf8.c_str(), static_cast<int32_t>(data_utf8.length()), errorCode);
if (errorCode.get() != U_BUFFER_OVERFLOW_ERROR || result != (int32_t)data_utf8.length()) {
errln("%s:%d ucasemap_toTitle(\"hello world\") failed: "
"expected (U_BUFFER_OVERFLOW_ERROR, %d), got (%s, %d)",
@@ -1354,7 +1373,7 @@ void StringCaseTest::TestMergeEdits() {
void StringCaseTest::TestCaseMapWithEdits() {
IcuTestErrorCode errorCode(*this, "TestCaseMapWithEdits");
- UChar dest[20];
+ char16_t dest[20];
Edits edits;
int32_t length = CaseMap::toLower("tr", U_OMIT_UNCHANGED_TEXT,
@@ -1526,7 +1545,7 @@ void StringCaseTest::TestCaseMapToString() {
// It is a bit of a misnomer until we have CaseMap API that writes to
// a UnicodeString, at which point we should change this code here.
IcuTestErrorCode errorCode(*this, "TestCaseMapToString");
- UChar dest[20];
+ char16_t dest[20];
// Omit unchanged text.
int32_t length = CaseMap::toLower("tr", U_OMIT_UNCHANGED_TEXT,
@@ -1628,7 +1647,7 @@ void StringCaseTest::TestLongUnicodeString() {
// Code coverage for UnicodeString case mapping code handling
// long strings or many changes in a string.
UnicodeString s(true,
- (const UChar *)
+ (const char16_t *)
u"aaaaaaaaaabbbbbbbbbbccccccccccddddddddddeeeeeeeeeeF"
u"aaaaaaaaaabbbbbbbbbbccccccccccddddddddddeeeeeeeeeeF"
u"aaaaaaaaaabbbbbbbbbbccccccccccddddddddddeeeeeeeeeeF"
@@ -1636,7 +1655,7 @@ void StringCaseTest::TestLongUnicodeString() {
u"aaaaaaaaaabbbbbbbbbbccccccccccddddddddddeeeeeeeeeeF"
u"aaaaaaaaaabbbbbbbbbbccccccccccddddddddddeeeeeeeeeeF", 6 * 51);
UnicodeString expected(true,
- (const UChar *)
+ (const char16_t *)
u"AAAAAAAAAABBBBBBBBBBCCCCCCCCCCDDDDDDDDDDEEEEEEEEEEF"
u"AAAAAAAAAABBBBBBBBBBCCCCCCCCCCDDDDDDDDDDEEEEEEEEEEF"
u"AAAAAAAAAABBBBBBBBBBCCCCCCCCCCDDDDDDDDDDEEEEEEEEEEF"
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/strtest.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/strtest.cpp
index 91d0d4d967c..dff7bc40974 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/strtest.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/strtest.cpp
@@ -38,7 +38,7 @@
StringTest::~StringTest() {}
-void StringTest::TestEndian(void) {
+void StringTest::TestEndian() {
union {
uint8_t byte;
uint16_t word;
@@ -49,7 +49,7 @@ void StringTest::TestEndian(void) {
}
}
-void StringTest::TestSizeofTypes(void) {
+void StringTest::TestSizeofTypes() {
if(U_SIZEOF_WCHAR_T!=sizeof(wchar_t)) {
errln("TestSizeofWCharT: U_SIZEOF_WCHAR_T!=sizeof(wchar_t) - U_SIZEOF_WCHAR_T needs to be fixed in platform.h");
}
@@ -78,8 +78,8 @@ void StringTest::TestSizeofTypes(void) {
if(2!=sizeof(uint16_t)) {
errln("2!=sizeof(uint16_t)");
}
- if(2!=sizeof(UChar)) {
- errln("2!=sizeof(UChar)");
+ if(2!=sizeof(char16_t)) {
+ errln("2!=sizeof(char16_t)");
}
if(1!=sizeof(int8_t)) {
errln("1!=sizeof(int8_t)");
@@ -92,7 +92,7 @@ void StringTest::TestSizeofTypes(void) {
}
}
-void StringTest::TestCharsetFamily(void) {
+void StringTest::TestCharsetFamily() {
unsigned char c='A';
if( (U_CHARSET_FAMILY==U_ASCII_FAMILY && c!=0x41) ||
(U_CHARSET_FAMILY==U_EBCDIC_FAMILY && c!=0xc1)
@@ -265,13 +265,13 @@ void
StringTest::TestStringPiece() {
// Default constructor.
StringPiece empty;
- if(!empty.empty() || empty.data()!=NULL || empty.length()!=0 || empty.size()!=0) {
+ if(!empty.empty() || empty.data()!=nullptr || empty.length()!=0 || empty.size()!=0) {
errln("StringPiece() failed");
}
- // Construct from NULL const char * pointer.
+ // Construct from nullptr const char * pointer.
StringPiece null((const char *)nullptr);
- if(!null.empty() || null.data()!=NULL || null.length()!=0 || null.size()!=0) {
- errln("StringPiece(NULL) failed");
+ if(!null.empty() || null.data()!=nullptr || null.length()!=0 || null.size()!=0) {
+ errln("StringPiece(nullptr) failed");
}
// Construct from const char * pointer.
static const char *abc_chars="abc";
@@ -359,7 +359,7 @@ StringTest::TestStringPiece() {
// clear()
sp=abcd;
sp.clear();
- if(!sp.empty() || sp.data()!=NULL || sp.length()!=0 || sp.size()!=0) {
+ if(!sp.empty() || sp.data()!=nullptr || sp.length()!=0 || sp.size()!=0) {
errln("abcd.clear() failed");
}
// remove_prefix()
@@ -604,13 +604,13 @@ StringTest::TestByteSink() {
char scratch[20];
int32_t capacity = -1;
char *dest = sink.GetAppendBuffer(0, 50, scratch, (int32_t)sizeof(scratch), &capacity);
- if(dest != NULL || capacity != 0) {
- errln("ByteSink.GetAppendBuffer(min_capacity<1) did not properly return NULL[0]");
+ if(dest != nullptr || capacity != 0) {
+ errln("ByteSink.GetAppendBuffer(min_capacity<1) did not properly return nullptr[0]");
return;
}
dest = sink.GetAppendBuffer(10, 50, scratch, 9, &capacity);
- if(dest != NULL || capacity != 0) {
- errln("ByteSink.GetAppendBuffer(scratch_capacity<min_capacity) did not properly return NULL[0]");
+ if(dest != nullptr || capacity != 0) {
+ errln("ByteSink.GetAppendBuffer(scratch_capacity<min_capacity) did not properly return nullptr[0]");
return;
}
dest = sink.GetAppendBuffer(5, 50, scratch, (int32_t)sizeof(scratch), &capacity);
@@ -635,13 +635,13 @@ StringTest::TestCheckedArrayByteSink() {
char scratch[10];
int32_t capacity = -1;
char *dest = sink.GetAppendBuffer(0, 50, scratch, (int32_t)sizeof(scratch), &capacity);
- if(dest != NULL || capacity != 0) {
- errln("CheckedArrayByteSink.GetAppendBuffer(min_capacity<1) did not properly return NULL[0]");
+ if(dest != nullptr || capacity != 0) {
+ errln("CheckedArrayByteSink.GetAppendBuffer(min_capacity<1) did not properly return nullptr[0]");
return;
}
dest = sink.GetAppendBuffer(10, 50, scratch, 9, &capacity);
- if(dest != NULL || capacity != 0) {
- errln("CheckedArrayByteSink.GetAppendBuffer(scratch_capacity<min_capacity) did not properly return NULL[0]");
+ if(dest != nullptr || capacity != 0) {
+ errln("CheckedArrayByteSink.GetAppendBuffer(scratch_capacity<min_capacity) did not properly return nullptr[0]");
return;
}
dest = sink.GetAppendBuffer(10, 50, scratch, (int32_t)sizeof(scratch), &capacity);
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/strtest.h b/Build/source/libs/icu/icu-src/source/test/intltest/strtest.h
index fa022268010..05fc9cf66d3 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/strtest.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/strtest.h
@@ -30,7 +30,7 @@ public:
StringTest() {}
virtual ~StringTest();
- void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=NULL) override;
+ void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=nullptr) override;
private:
void TestEndian();
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/svccoll.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/svccoll.cpp
index c0e14572273..61a04136217 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/svccoll.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/svccoll.cpp
@@ -54,7 +54,7 @@ void CollationServiceTest::TestRegister()
Collator *clone = frcol->clone();
URegistryKey key = Collator::registerInstance(frcol, US, status);
// frcol has been adopted. We must not use it any more, nor rely on its attributes.
- frcol = NULL;
+ frcol = nullptr;
Collator* ncol = Collator::createInstance(US_FOO, status);
if (*clone != *ncol) {
@@ -77,7 +77,7 @@ void CollationServiceTest::TestRegister()
if (loc != US) {
errln(UnicodeString("actual locale for en_US_FOO is not en_US but ") + loc.getName());
}
- delete ncol; ncol = NULL;
+ delete ncol; ncol = nullptr;
if (!Collator::unregister(key, status)) {
errln("failed to unregister french collator");
@@ -87,7 +87,7 @@ void CollationServiceTest::TestRegister()
if (*uscol != *ncol) {
errln("collator after unregister does not match original");
}
- delete ncol; ncol = NULL;
+ delete ncol; ncol = nullptr;
}
// recreate frcol
@@ -102,7 +102,7 @@ void CollationServiceTest::TestRegister()
Collator* fucol = Collator::createInstance(fu_FU, status);
Collator *clone = frcol->clone();
URegistryKey key = Collator::registerInstance(frcol, fu_FU, status);
- frcol = NULL; // frcol has been adopted.
+ frcol = nullptr; // frcol has been adopted.
Collator* ncol = Collator::createInstance(fu_FU_FOO, status);
if (*clone != *ncol) {
errln("register of fr collator for fu_FU failed");
@@ -114,7 +114,7 @@ void CollationServiceTest::TestRegister()
UBool found = false;
const UnicodeString* locStr, *ls2;
for (locStr = localeEnum->snext(status);
- !found && locStr != NULL;
+ !found && locStr != nullptr;
locStr = localeEnum->snext(status)) {
//
if (locName == *locStr) {
@@ -122,14 +122,14 @@ void CollationServiceTest::TestRegister()
}
}
- StringEnumeration *le2 = NULL;
+ StringEnumeration *le2 = nullptr;
localeEnum->reset(status);
int32_t i, count;
count = localeEnum->count(status);
for(i = 0; i < count; ++i) {
if(i == count / 2) {
le2 = localeEnum->clone();
- if(le2 == NULL || count != le2->count(status)) {
+ if(le2 == nullptr || count != le2->count(status)) {
errln("ServiceEnumeration.clone() failed");
break;
}
@@ -155,7 +155,7 @@ void CollationServiceTest::TestRegister()
UnicodeString displayName;
Collator::getDisplayName(fu_FU, displayName);
/* The locale display pattern for the locale ja, ko, and zh are different. */
- const UChar zh_fuFU_Array[] = { 0x0066, 0x0075, 0xff08, 0x0046, 0x0055, 0xff09, 0 };
+ const char16_t zh_fuFU_Array[] = { 0x0066, 0x0075, 0xff08, 0x0046, 0x0055, 0xff09, 0 };
const UnicodeString zh_fuFU(zh_fuFU_Array);
const Locale& defaultLocale = Locale::getDefault();
if (displayName != "fu (FU)" &&
@@ -192,7 +192,7 @@ void CollationServiceTest::TestRegister()
if (nloc != fu_FU) {
errln(UnicodeString("asked for nloc valid locale after close and got") + nloc.getName());
}
- delete ncol; ncol = NULL;
+ delete ncol; ncol = nullptr;
if (fufu.isValid()) {
const char* nlocstr = ucol_getLocaleByType(fufu.getAlias(), ULOC_VALID_LOCALE, &status);
@@ -205,9 +205,9 @@ void CollationServiceTest::TestRegister()
if (*fucol != *ncol) {
errln("collator after unregister does not match original fu_FU");
}
- delete uscol; uscol = NULL;
- delete ncol; ncol = NULL;
- delete fucol; fucol = NULL;
+ delete uscol; uscol = nullptr;
+ delete ncol; ncol = nullptr;
+ delete fucol; fucol = nullptr;
}
#endif
}
@@ -241,7 +241,7 @@ CollatorInfo::~CollatorInfo() {
UnicodeString&
CollatorInfo::getDisplayName(const Locale& displayLocale, UnicodeString& name) const {
if (displayNames) {
- UnicodeString* val = (UnicodeString*)displayNames->get(displayLocale.getName());
+ UnicodeString* val = static_cast<UnicodeString*>(displayNames->get(displayLocale.getName()));
if (val) {
name = *val;
return name;
@@ -264,14 +264,14 @@ class TestFactory : public CollatorFactory {
return *p;
}
}
- return NULL;
+ return nullptr;
}
public:
TestFactory(CollatorInfo** _info)
: info(_info)
, count(0)
- , ids(NULL)
+ , ids(nullptr)
{
CollatorInfo** p;
for (p = info; *p; ++p) {}
@@ -291,7 +291,7 @@ public:
if (ci) {
return ci->collator->clone();
}
- return NULL;
+ return nullptr;
}
virtual UnicodeString& getDisplayName(const Locale& objectLocale,
@@ -314,7 +314,7 @@ public:
if (!ids) {
status = U_MEMORY_ALLOCATION_ERROR;
_count = 0;
- return NULL;
+ return nullptr;
}
for (int i = 0; i < count; ++i) {
@@ -325,7 +325,7 @@ public:
_count = count;
return ids;
}
- return NULL;
+ return nullptr;
}
virtual inline UClassID getDynamicClassID() const override {
@@ -343,7 +343,7 @@ private:
char TestFactory::gClassID = 0;
#endif
-void CollationServiceTest::TestRegisterFactory(void)
+void CollationServiceTest::TestRegisterFactory()
{
#if !UCONFIG_NO_SERVICE
int32_t n1, n2, n3;
@@ -381,10 +381,10 @@ void CollationServiceTest::TestRegisterFactory(void)
return;
}
- info[0] = new CollatorInfo(Locale::getUS(), frcol, NULL);
- info[1] = new CollatorInfo(Locale::getFrance(), gecol, NULL);
+ info[0] = new CollatorInfo(Locale::getUS(), frcol, nullptr);
+ info[1] = new CollatorInfo(Locale::getFrance(), gecol, nullptr);
info[2] = new CollatorInfo(fu_FU, jpcol, fuFUNames);
- info[3] = NULL;
+ info[3] = nullptr;
TestFactory* factory = new TestFactory(info);
if (!factory) {
@@ -407,7 +407,7 @@ void CollationServiceTest::TestRegisterFactory(void)
if (*frcol != *ncol) {
errln("frcoll for en_US failed");
}
- delete ncol; ncol = NULL;
+ delete ncol; ncol = nullptr;
ncol = Collator::createInstance(fu_FU_FOO, status);
if (*jpcol != *ncol) {
@@ -425,14 +425,14 @@ void CollationServiceTest::TestRegisterFactory(void)
if (loc != fu_FU) {
errln(UnicodeString("valid locale for fu_FU_FOO is not fu_FU but ") + loc.getName());
}
- delete ncol; ncol = NULL;
+ delete ncol; ncol = nullptr;
UnicodeString locName = fu_FU.getName();
StringEnumeration* localeEnum = Collator::getAvailableLocales();
UBool found = false;
const UnicodeString* locStr;
for (locStr = localeEnum->snext(status);
- !found && locStr != NULL;
+ !found && locStr != nullptr;
locStr = localeEnum->snext(status))
{
if (locName == *locStr) {
@@ -479,7 +479,7 @@ void CollationServiceTest::TestRegisterFactory(void)
/**
* Iterate through the given iterator, checking to see that all the strings
* in the expected array are present.
- * @param expected array of strings we expect to see, or NULL
+ * @param expected array of strings we expect to see, or nullptr
* @param expectedCount number of elements of expected, or 0
*/
int32_t CollationServiceTest::checkStringEnumeration(const char* msg,
@@ -494,7 +494,7 @@ int32_t CollationServiceTest::checkStringEnumeration(const char* msg,
int32_t seenMask = 0;
for (;; ++i) {
const UnicodeString* s = iter.snext(ec);
- if (!assertSuccess("snext", ec) || s == NULL)
+ if (!assertSuccess("snext", ec) || s == nullptr)
break;
if (i != 0)
buf.append(UNICODE_STRING_SIMPLE(", "));
@@ -502,7 +502,7 @@ int32_t CollationServiceTest::checkStringEnumeration(const char* msg,
// check expected list
for (int32_t j=0, bit=1; j<expectedCount; ++j, bit<<=1) {
if ((seenMask&bit)==0) {
- UnicodeString exp(expected[j], (char*)NULL);
+ UnicodeString exp(expected[j], (char*)nullptr);
if (*s == exp) {
seenMask |= bit;
logln((UnicodeString)"Ok: \"" + exp + "\" seen");
@@ -519,8 +519,8 @@ int32_t CollationServiceTest::checkStringEnumeration(const char* msg,
assertTrue("count verified", i==n);
iter.reset(ec);
for (;; ++idxAfterReset) {
- const UChar *s = iter.unext(NULL, ec);
- if (!assertSuccess("unext", ec) || s == NULL)
+ const char16_t *s = iter.unext(nullptr, ec);
+ if (!assertSuccess("unext", ec) || s == nullptr)
break;
if (idxAfterReset != 0)
buffAfterReset.append(UNICODE_STRING_SIMPLE(", "));
@@ -546,8 +546,8 @@ int32_t CollationServiceTest::checkStringEnumeration(const char* msg,
#if !UCONFIG_NO_SERVICE
int32_t CollationServiceTest::checkAvailable(const char* msg) {
StringEnumeration *iter = Collator::getAvailableLocales();
- if (!assertTrue("getAvailableLocales != NULL", iter!=NULL)) return -1;
- int32_t n = checkStringEnumeration(msg, *iter, NULL, 0);
+ if (!assertTrue("getAvailableLocales != nullptr", iter!=nullptr)) return -1;
+ int32_t n = checkStringEnumeration(msg, *iter, nullptr, 0);
delete iter;
return n;
}
@@ -569,13 +569,13 @@ static const int32_t KWVAL_COUNT = UPRV_LENGTHOF(KWVAL);
void CollationServiceTest::TestSeparateTree() {
UErrorCode ec = U_ZERO_ERROR;
StringEnumeration *iter = Collator::getKeywords(ec);
- if (!assertTrue("getKeywords != NULL", iter!=NULL)) return;
+ if (!assertTrue("getKeywords != nullptr", iter!=nullptr)) return;
if (!assertSuccess("getKeywords", ec)) return;
checkStringEnumeration("getKeywords", *iter, KW, KW_COUNT);
delete iter;
iter = Collator::getKeywordValues(KW[0], ec);
- if (!assertTrue("getKeywordValues != NULL", iter!=NULL, false, true)) return;
+ if (!assertTrue("getKeywordValues != nullptr", iter!=nullptr, false, true)) return;
if (!assertSuccess("getKeywordValues", ec)) return;
checkStringEnumeration("getKeywordValues", *iter, KWVAL, KWVAL_COUNT);
delete iter;
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/svccoll.h b/Build/source/libs/icu/icu-src/source/test/intltest/svccoll.h
index 893cff99852..35e93c1e6bc 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/svccoll.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/svccoll.h
@@ -24,10 +24,10 @@ class StringEnumeration;
class CollationServiceTest: public IntlTest {
public:
- void runIndexedTest(int32_t index, UBool exec, const char* &name, char* /*par = NULL */) override;
+ void runIndexedTest(int32_t index, UBool exec, const char* &name, char* /*par = nullptr */) override;
- void TestRegister(void);
- void TestRegisterFactory(void);
+ void TestRegister();
+ void TestRegisterFactory();
void TestSeparateTree();
private:
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/tchcfmt.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/tchcfmt.cpp
index b0ca3583b22..3ec41b619d2 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/tchcfmt.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/tchcfmt.cpp
@@ -32,7 +32,7 @@ void TestChoiceFormat::runIndexedTest(int32_t index, UBool exec,
}
}
-static UBool chkstatus( UErrorCode &status, const char* msg = NULL )
+static UBool chkstatus( UErrorCode &status, const char* msg = nullptr )
{
UBool ok = U_SUCCESS(status);
if (!ok) it_errln( msg );
@@ -40,7 +40,7 @@ static UBool chkstatus( UErrorCode &status, const char* msg = NULL )
}
void
-TestChoiceFormat::TestSimpleExample( void )
+TestChoiceFormat::TestSimpleExample()
{
double limits[] = {1,2,3,4,5,6,7};
UnicodeString monthNames[] = {"Sun","Mon","Tue","Wed","Thur","Fri","Sat"};
@@ -86,15 +86,15 @@ TestChoiceFormat::TestSimpleExample( void )
int32_t count=0;
const double *gotLimits=form->getLimits(count);
#if 1 // ICU 4.8 deprecates and disables the ChoiceFormat getters.
- if(count != 0 || gotLimits != NULL) {
+ if(count != 0 || gotLimits != nullptr) {
errln("getLimits() returns something, should be disabled");
}
const UnicodeString *gotFormats=form->getFormats(count);
- if(count != 0 || gotFormats != NULL) {
+ if(count != 0 || gotFormats != nullptr) {
errln("getFormats() returns something, should be disabled");
}
const UBool *gotClosures=form->getClosures(count);
- if(count != 0 || gotClosures != NULL) {
+ if(count != 0 || gotClosures != nullptr) {
errln("getClosures() returns something, should be disabled");
}
#else
@@ -123,7 +123,7 @@ TestChoiceFormat::TestSimpleExample( void )
}
void
-TestChoiceFormat::TestComplexExample( void )
+TestChoiceFormat::TestComplexExample()
{
UErrorCode status = U_ZERO_ERROR;
const double filelimits[] = {-1, 0,1,2};
@@ -148,7 +148,7 @@ TestChoiceFormat::TestComplexExample( void )
return;
}
- //const Format* testFormats[] = { fileform, NULL, filenumform };
+ //const Format* testFormats[] = { fileform, nullptr, filenumform };
//pattform->setFormats( testFormats, 3 );
MessageFormat* pattform = new MessageFormat("There {0} on {1}", status );
@@ -456,7 +456,7 @@ TestChoiceFormat::TestComplexExample( void )
/**
* Test new closure API
*/
-void TestChoiceFormat::TestClosures(void) {
+void TestChoiceFormat::TestClosures() {
// Construct open, half-open, half-open (the other way), and closed
// intervals. Do this both using arrays and using a pattern.
@@ -603,7 +603,7 @@ void TestChoiceFormat::_testPattern(const char* pattern,
/**
* Test applyPattern
*/
-void TestChoiceFormat::TestPatterns(void) {
+void TestChoiceFormat::TestPatterns() {
// Try a pattern that isolates a single value. Create
// three ranges: [-Inf,1.0) [1.0,1.0] (1.0,+Inf]
_testPattern("0.0#a|1.0#b|1.0<c", true,
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/tchcfmt.h b/Build/source/libs/icu/icu-src/source/test/intltest/tchcfmt.h
index 775b22b47c9..1e7dfae2c7c 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/tchcfmt.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/tchcfmt.h
@@ -25,24 +25,24 @@ class TestChoiceFormat: public IntlTest {
/**
* tests basic functionality in a simple example
**/
- void TestSimpleExample(void);
+ void TestSimpleExample();
/**
* tests functionality in a more complex example,
* and extensive API functionality.
* See verbose message output statements for specifically tested API
**/
- void TestComplexExample(void);
+ void TestComplexExample();
/**
* Test new closure API
*/
- void TestClosures(void);
+ void TestClosures();
/**
* Test applyPattern
*/
- void TestPatterns(void);
- void TestChoiceFormatToPatternOverflow(void);
+ void TestPatterns();
+ void TestChoiceFormatToPatternOverflow();
void _testPattern(const char* pattern,
UBool isValid,
@@ -52,7 +52,7 @@ class TestChoiceFormat: public IntlTest {
/**
* runs tests in local functions:
**/
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
};
#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/testidn.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/testidn.cpp
index db90db8c357..56854db106a 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/testidn.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/testidn.cpp
@@ -61,14 +61,14 @@ compareFlagsForRange(uint32_t start, uint32_t end,UStringPrepType option);
static void
testAllCodepoints(TestIDNA& test);
-static TestIDNA* pTestIDNA =NULL;
+static TestIDNA* pTestIDNA =nullptr;
static const char* fileNames[] = {
"rfc3491.txt"
};
-static const UTrie *idnTrie = NULL;
-static const int32_t *indexes = NULL;
-static const uint16_t *mappingData = NULL;
+static const UTrie *idnTrie = nullptr;
+static const int32_t *indexes = nullptr;
+static const uint16_t *mappingData = nullptr;
/* -------------------------------------------------------------------------- */
/* file definitions */
@@ -78,9 +78,9 @@ static const uint16_t *mappingData = NULL;
extern int
testData(TestIDNA& test) {
- char *basename=NULL;
+ char *basename=nullptr;
UErrorCode errorCode=U_ZERO_ERROR;
- char *saveBasename =NULL;
+ char *saveBasename =nullptr;
LocalUStringPrepProfilePointer profile(usprep_openByType(USPREP_RFC3491_NAMEPREP, &errorCode));
if(U_FAILURE(errorCode)){
@@ -100,7 +100,7 @@ testData(TestIDNA& test) {
pTestIDNA = &test;
/* prepare the filename beginning with the source dir */
- if(uprv_strchr(srcDir,U_FILE_SEP_CHAR) == NULL){
+ if(uprv_strchr(srcDir,U_FILE_SEP_CHAR) == nullptr){
filename[0] = 0x2E;
filename[1] = U_FILE_SEP_CHAR;
uprv_strcpy(filename+2,srcDir);
@@ -135,7 +135,7 @@ testData(TestIDNA& test) {
testAllCodepoints(test);
- pTestIDNA = NULL;
+ pTestIDNA = nullptr;
free(filename);
return errorCode;
}
@@ -168,21 +168,21 @@ strprepProfileLineFn(void * /*context*/,
typeName = fields[2][0];
map = fields[1][0];
- if(uprv_strstr(typeName, usprepTypeNames[USPREP_UNASSIGNED])!=NULL){
+ if(uprv_strstr(typeName, usprepTypeNames[USPREP_UNASSIGNED])!=nullptr){
u_parseCodePointRange(s, &rangeStart,&rangeEnd, pErrorCode);
/* store the range */
compareFlagsForRange(rangeStart,rangeEnd,USPREP_UNASSIGNED);
- }else if(uprv_strstr(typeName, usprepTypeNames[USPREP_PROHIBITED])!=NULL){
+ }else if(uprv_strstr(typeName, usprepTypeNames[USPREP_PROHIBITED])!=nullptr){
u_parseCodePointRange(s, &rangeStart,&rangeEnd, pErrorCode);
/* store the range */
compareFlagsForRange(rangeStart,rangeEnd,USPREP_PROHIBITED);
- }else if(uprv_strstr(typeName, usprepTypeNames[USPREP_MAP])!=NULL){
+ }else if(uprv_strstr(typeName, usprepTypeNames[USPREP_MAP])!=nullptr){
/* get the character code, field 0 */
code=(uint32_t)uprv_strtoul(s, &end, 16);
@@ -204,7 +204,7 @@ static void
parseMappings(const char *filename,UBool reportError, TestIDNA& test, UErrorCode *pErrorCode) {
char *fields[3][2];
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return;
}
@@ -265,7 +265,7 @@ static void
testAllCodepoints(TestIDNA& test){
/*
{
- UChar str[19] = {
+ char16_t str[19] = {
0xC138, 0xACC4, 0xC758, 0xBAA8, 0xB4E0, 0xC0AC, 0xB78C, 0xB4E4, 0xC774,
0x070F,//prohibited
0xD55C, 0xAD6D, 0xC5B4, 0xB97C, 0xC774, 0xD574, 0xD55C, 0xB2E4, 0xBA74
@@ -277,7 +277,7 @@ testAllCodepoints(TestIDNA& test){
punycode_status error;
u_strToUTF32((UChar32*)in,19,&inLength,str,19,&status);
- error= punycode_encode(inLength, in, NULL, (uint32_t*)&outLength, output);
+ error= punycode_encode(inLength, in, nullptr, (uint32_t*)&outLength, output);
printf(output);
}
@@ -385,8 +385,8 @@ compareMapping(uint32_t codepoint, uint32_t* mapping,int32_t mapLength,
pTestIDNA->errln("Did not get the expected result. Expected: 0x%04X Got: 0x%04X \n", mapping[i], mappingData[index+i]);
}
}else{
- UChar lead = U16_LEAD(mapping[i]);
- UChar trail = U16_TRAIL(mapping[i]);
+ char16_t lead = U16_LEAD(mapping[i]);
+ char16_t trail = U16_TRAIL(mapping[i]);
if(mappingData[index+i] != lead ||
mappingData[index+i+1] != trail){
pTestIDNA->errln( "Did not get the expected result. Expected: 0x%04X 0x%04X Got: 0x%04X 0x%04X", lead, trail, mappingData[index+i], mappingData[index+i+1]);
@@ -411,7 +411,7 @@ compareFlagsForRange(uint32_t start, uint32_t end,
int32_t value=0;
/*
// supplementary code point
- UChar __lead16=U16_LEAD(0x2323E);
+ char16_t __lead16=U16_LEAD(0x2323E);
int32_t __offset;
// get data for lead surrogate
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/testidna.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/testidna.cpp
index 882e3e6f159..30a462c46c1 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/testidna.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/testidna.cpp
@@ -36,7 +36,7 @@
#include "unicode/putil.h"
#include "idnaconf.h"
-static const UChar unicodeIn[][41] ={
+static const char16_t unicodeIn[][41] ={
{
0x0644, 0x064A, 0x0647, 0x0645, 0x0627, 0x0628, 0x062A, 0x0643, 0x0644,
0x0645, 0x0648, 0x0634, 0x0639, 0x0631, 0x0628, 0x064A, 0x061F, 0x0000
@@ -240,7 +240,7 @@ typedef struct ErrorCases ErrorCases;
static const struct ErrorCases{
- UChar unicode[100];
+ char16_t unicode[100];
const char *ascii;
UErrorCode expected;
UBool useSTD3ASCIIRules;
@@ -405,7 +405,7 @@ static const struct ErrorCases{
},
{
{0},
- NULL,
+ nullptr,
U_ILLEGAL_ARGUMENT_ERROR,
true, true, false
}
@@ -416,21 +416,21 @@ static const struct ErrorCases{
#define MAX_DEST_SIZE 300
-void TestIDNA::debug(const UChar* src, int32_t srcLength, int32_t options){
+void TestIDNA::debug(const char16_t* src, int32_t srcLength, int32_t options){
UParseError parseError;
UErrorCode transStatus = U_ZERO_ERROR;
UErrorCode prepStatus = U_ZERO_ERROR;
NamePrepTransform* trans = NamePrepTransform::createInstance(parseError,transStatus);
int32_t prepOptions = (((options & UIDNA_ALLOW_UNASSIGNED) != 0) ? USPREP_ALLOW_UNASSIGNED: 0);
LocalUStringPrepProfilePointer prep(usprep_openByType(USPREP_RFC3491_NAMEPREP,&prepStatus));
- UChar *transOut=NULL, *prepOut=NULL;
+ char16_t *transOut=nullptr, *prepOut=nullptr;
int32_t transOutLength=0, prepOutLength=0;
transOutLength = trans->process(src,srcLength,transOut, 0, prepOptions>0, &parseError, transStatus);
if( transStatus == U_BUFFER_OVERFLOW_ERROR){
transStatus = U_ZERO_ERROR;
- transOut = (UChar*) malloc(U_SIZEOF_UCHAR * transOutLength);
+ transOut = (char16_t*) malloc(U_SIZEOF_UCHAR * transOutLength);
transOutLength = trans->process(src,srcLength,transOut, transOutLength, prepOptions>0, &parseError, transStatus);
}
@@ -438,7 +438,7 @@ void TestIDNA::debug(const UChar* src, int32_t srcLength, int32_t options){
if( prepStatus == U_BUFFER_OVERFLOW_ERROR){
prepStatus = U_ZERO_ERROR;
- prepOut = (UChar*) malloc(U_SIZEOF_UCHAR * prepOutLength);
+ prepOut = (char16_t*) malloc(U_SIZEOF_UCHAR * prepOutLength);
prepOutLength = usprep_prepare(prep.getAlias(), src, srcLength, prepOut, prepOutLength, prepOptions, &parseError, &prepStatus);
}
@@ -451,28 +451,28 @@ void TestIDNA::debug(const UChar* src, int32_t srcLength, int32_t options){
delete trans;
}
-void TestIDNA::testAPI(const UChar* src, const UChar* expected, const char* testName,
+void TestIDNA::testAPI(const char16_t* src, const char16_t* expected, const char* testName,
UBool useSTD3ASCIIRules,UErrorCode expectedStatus,
UBool doCompare, UBool testUnassigned, TestFunc func, UBool testSTD3ASCIIRules){
UErrorCode status = U_ZERO_ERROR;
- UChar destStack[MAX_DEST_SIZE];
+ char16_t destStack[MAX_DEST_SIZE];
int32_t destLen = 0;
- UChar* dest = NULL;
- int32_t expectedLen = (expected != NULL) ? u_strlen(expected) : 0;
+ char16_t* dest = nullptr;
+ int32_t expectedLen = (expected != nullptr) ? u_strlen(expected) : 0;
int32_t options = (useSTD3ASCIIRules == true) ? UIDNA_USE_STD3_RULES : UIDNA_DEFAULT;
UParseError parseError;
int32_t tSrcLen = 0;
- UChar* tSrc = NULL;
+ char16_t* tSrc = nullptr;
- if(src != NULL){
+ if(src != nullptr){
tSrcLen = u_strlen(src);
- tSrc =(UChar*) malloc( U_SIZEOF_UCHAR * tSrcLen );
+ tSrc =(char16_t*) malloc( U_SIZEOF_UCHAR * tSrcLen );
memcpy(tSrc,src,tSrcLen * U_SIZEOF_UCHAR);
}
// test null-terminated source and return value of number of UChars required
- destLen = func(src,-1,NULL,0,options, &parseError , &status);
+ destLen = func(src,-1,nullptr,0,options, &parseError , &status);
if (status == U_FILE_ACCESS_ERROR) {
dataerrln("U_FILE_ACCESS_ERROR. Skipping the remainder of this test.");
return;
@@ -506,7 +506,7 @@ void TestIDNA::testAPI(const UChar* src, const UChar* expected, const char* test
}
if(testUnassigned ){
status = U_ZERO_ERROR;
- destLen = func(src,-1,NULL,0,options | UIDNA_ALLOW_UNASSIGNED, &parseError, &status);
+ destLen = func(src,-1,nullptr,0,options | UIDNA_ALLOW_UNASSIGNED, &parseError, &status);
if(status == U_BUFFER_OVERFLOW_ERROR){
status = U_ZERO_ERROR; // reset error code
if(destLen+1 < MAX_DEST_SIZE){
@@ -541,7 +541,7 @@ void TestIDNA::testAPI(const UChar* src, const UChar* expected, const char* test
status = U_ZERO_ERROR;
// test source with lengthand return value of number of UChars required
- destLen = func(tSrc, tSrcLen, NULL,0,options, &parseError, &status);
+ destLen = func(tSrc, tSrcLen, nullptr,0,options, &parseError, &status);
if(status == U_BUFFER_OVERFLOW_ERROR){
status = U_ZERO_ERROR; // reset error code
if(destLen+1 < MAX_DEST_SIZE){
@@ -567,7 +567,7 @@ void TestIDNA::testAPI(const UChar* src, const UChar* expected, const char* test
if(testUnassigned){
status = U_ZERO_ERROR;
- destLen = func(tSrc,tSrcLen,NULL,0,options | UIDNA_ALLOW_UNASSIGNED, &parseError, &status);
+ destLen = func(tSrc,tSrcLen,nullptr,0,options | UIDNA_ALLOW_UNASSIGNED, &parseError, &status);
if(status == U_BUFFER_OVERFLOW_ERROR){
status = U_ZERO_ERROR; // reset error code
@@ -595,7 +595,7 @@ void TestIDNA::testAPI(const UChar* src, const UChar* expected, const char* test
status = U_ZERO_ERROR;
if(testSTD3ASCIIRules==true){
- destLen = func(src,-1,NULL,0,options | UIDNA_USE_STD3_RULES, &parseError, &status);
+ destLen = func(src,-1,nullptr,0,options | UIDNA_USE_STD3_RULES, &parseError, &status);
if(status == U_BUFFER_OVERFLOW_ERROR){
status = U_ZERO_ERROR; // reset error code
if(destLen+1 < MAX_DEST_SIZE){
@@ -623,7 +623,7 @@ void TestIDNA::testAPI(const UChar* src, const UChar* expected, const char* test
status = U_ZERO_ERROR;
- destLen = func(tSrc,tSrcLen,NULL,0,options | UIDNA_USE_STD3_RULES, &parseError, &status);
+ destLen = func(tSrc,tSrcLen,nullptr,0,options | UIDNA_USE_STD3_RULES, &parseError, &status);
if(status == U_BUFFER_OVERFLOW_ERROR){
status = U_ZERO_ERROR; // reset error code
@@ -651,8 +651,8 @@ void TestIDNA::testAPI(const UChar* src, const UChar* expected, const char* test
free(tSrc);
}
-void TestIDNA::testCompare(const UChar* s1, int32_t s1Len,
- const UChar* s2, int32_t s2Len,
+void TestIDNA::testCompare(const char16_t* s1, int32_t s1Len,
+ const char16_t* s2, int32_t s2Len,
const char* testName, CompareFunc func,
UBool isEqual){
@@ -700,7 +700,7 @@ void TestIDNA::testCompare(const UChar* s1, int32_t s1Len,
void TestIDNA::testToASCII(const char* testName, TestFunc func){
int32_t i;
- UChar buf[MAX_DEST_SIZE];
+ char16_t buf[MAX_DEST_SIZE];
for(i=0;i< UPRV_LENGTHOF(unicodeIn); i++){
u_charsToUChars(asciiIn[i],buf, (int32_t)(strlen(asciiIn[i])+1));
@@ -712,7 +712,7 @@ void TestIDNA::testToASCII(const char* testName, TestFunc func){
void TestIDNA::testToUnicode(const char* testName, TestFunc func){
int32_t i;
- UChar buf[MAX_DEST_SIZE];
+ char16_t buf[MAX_DEST_SIZE];
for(i=0;i< UPRV_LENGTHOF(asciiIn); i++){
u_charsToUChars(asciiIn[i],buf, (int32_t)(strlen(asciiIn[i])+1));
@@ -723,8 +723,8 @@ void TestIDNA::testToUnicode(const char* testName, TestFunc func){
void TestIDNA::testIDNToUnicode(const char* testName, TestFunc func){
int32_t i;
- UChar buf[MAX_DEST_SIZE];
- UChar expected[MAX_DEST_SIZE];
+ char16_t buf[MAX_DEST_SIZE];
+ char16_t expected[MAX_DEST_SIZE];
UErrorCode status = U_ZERO_ERROR;
int32_t bufLen = 0;
UParseError parseError;
@@ -749,8 +749,8 @@ void TestIDNA::testIDNToUnicode(const char* testName, TestFunc func){
void TestIDNA::testIDNToASCII(const char* testName, TestFunc func){
int32_t i;
- UChar buf[MAX_DEST_SIZE];
- UChar expected[MAX_DEST_SIZE];
+ char16_t buf[MAX_DEST_SIZE];
+ char16_t expected[MAX_DEST_SIZE];
UErrorCode status = U_ZERO_ERROR;
int32_t bufLen = 0;
UParseError parseError;
@@ -777,27 +777,27 @@ void TestIDNA::testCompare(const char* testName, CompareFunc func){
int32_t i;
- UChar www[] = {0x0057, 0x0057, 0x0057, 0x002E, 0x0000};
- UChar com[] = {0x002E, 0x0043, 0x004F, 0x004D, 0x0000};
- UChar buf[MAX_DEST_SIZE]={0x0057, 0x0057, 0x0057, 0x002E, 0x0000};
+ char16_t www[] = {0x0057, 0x0057, 0x0057, 0x002E, 0x0000};
+ char16_t com[] = {0x002E, 0x0043, 0x004F, 0x004D, 0x0000};
+ char16_t buf[MAX_DEST_SIZE]={0x0057, 0x0057, 0x0057, 0x002E, 0x0000};
UnicodeString source(www), uni0(www),uni1(www), ascii0(www), ascii1(www);
uni0.append(unicodeIn[0]);
uni0.append(com);
- uni0.append((UChar)0x0000);
+ uni0.append((char16_t)0x0000);
uni1.append(unicodeIn[1]);
uni1.append(com);
- uni1.append((UChar)0x0000);
+ uni1.append((char16_t)0x0000);
ascii0.append(asciiIn[0]);
ascii0.append(com);
- ascii0.append((UChar)0x0000);
+ ascii0.append((char16_t)0x0000);
ascii1.append(asciiIn[1]);
ascii1.append(com);
- ascii1.append((UChar)0x0000);
+ ascii1.append((char16_t)0x0000);
for(i=0;i< UPRV_LENGTHOF(unicodeIn); i++){
@@ -809,9 +809,9 @@ void TestIDNA::testCompare(const char* testName, CompareFunc func){
source.truncate(4);
source.append(unicodeIn[i]);
source.append(com);
- source.append((UChar)0x0000);
+ source.append((char16_t)0x0000);
// a) compare it with itself
- const UChar* src = source.getBuffer();
+ const char16_t* src = source.getBuffer();
int32_t srcLen = u_strlen(src); //subtract null
testCompare(src,srcLen,src,srcLen,testName, func, true);
@@ -838,8 +838,8 @@ void TestIDNA::testCompare(const char* testName, CompareFunc func){
#if 0
static int32_t
-getNextSeperator(UChar *src,int32_t srcLength,
- UChar **limit){
+getNextSeperator(char16_t *src,int32_t srcLength,
+ char16_t **limit){
if(srcLength == -1){
int32_t i;
for(i=0 ; ;i++){
@@ -875,10 +875,10 @@ getNextSeperator(UChar *src,int32_t srcLength,
void printPunycodeOutput(){
- UChar dest[MAX_DEST_SIZE];
+ char16_t dest[MAX_DEST_SIZE];
int32_t destCapacity=MAX_DEST_SIZE;
- UChar* start;
- UChar* limit;
+ char16_t* start;
+ char16_t* limit;
int32_t labelLen=0;
UBool caseFlags[MAX_DEST_SIZE];
@@ -905,13 +905,13 @@ void printPunycodeOutput(){
void TestIDNA::testErrorCases(const char* IDNToASCIIName, TestFunc IDNToASCII,
const char* IDNToUnicodeName, TestFunc IDNToUnicode){
- UChar buf[MAX_DEST_SIZE];
+ char16_t buf[MAX_DEST_SIZE];
int32_t bufLen=0;
for(int32_t i=0;i< UPRV_LENGTHOF(errorCases);i++){
ErrorCases errorCase = errorCases[i];
- UChar* src =NULL;
- if(errorCase.ascii != NULL){
+ char16_t* src =nullptr;
+ if(errorCase.ascii != nullptr){
bufLen = (int32_t)strlen(errorCase.ascii);
u_charsToUChars(errorCase.ascii,buf, bufLen+1);
}else{
@@ -932,7 +932,7 @@ void TestIDNA::testErrorCases(const char* IDNToASCIIName, TestFunc IDNToASCII,
errorCase.expected, false,true, IDNToASCII);
}
if(errorCase.testToUnicode ==true){
- testAPI((src==NULL)? NULL : buf,src,
+ testAPI((src==nullptr)? nullptr : buf,src,
IDNToUnicodeName, errorCase.useSTD3ASCIIRules,
errorCase.expected, true, true, IDNToUnicode);
}
@@ -945,15 +945,15 @@ void TestIDNA::testConformance(const char* toASCIIName, TestFunc toASCII,
const char* IDNToASCIIName, TestFunc IDNToASCII,
const char* IDNToUnicodeName, TestFunc IDNToUnicode,
const char* toUnicodeName, TestFunc toUnicode){
- UChar src[MAX_DEST_SIZE];
+ char16_t src[MAX_DEST_SIZE];
int32_t srcLen=0;
- UChar expected[MAX_DEST_SIZE];
+ char16_t expected[MAX_DEST_SIZE];
int32_t expectedLen = 0;
for(int32_t i=0;i< UPRV_LENGTHOF(conformanceTestCases);i++){
const char* utf8Chars1 = conformanceTestCases[i].in;
int32_t utf8Chars1Len = (int32_t)strlen(utf8Chars1);
const char* utf8Chars2 = conformanceTestCases[i].out;
- int32_t utf8Chars2Len = (utf8Chars2 == NULL) ? 0 : (int32_t)strlen(utf8Chars2);
+ int32_t utf8Chars2Len = (utf8Chars2 == nullptr) ? 0 : (int32_t)strlen(utf8Chars2);
UErrorCode status = U_ZERO_ERROR;
u_strFromUTF8(src,MAX_DEST_SIZE,&srcLen,utf8Chars1,utf8Chars1Len,&status);
@@ -961,7 +961,7 @@ void TestIDNA::testConformance(const char* toASCIIName, TestFunc toASCII,
errln(UnicodeString("Conversion of UTF8 source in conformanceTestCases[") + i +UnicodeString( "].in ( ")+prettify(utf8Chars1) +UnicodeString(" ) failed. Error: ")+ UnicodeString(u_errorName(status)));
continue;
}
- if(utf8Chars2 != NULL){
+ if(utf8Chars2 != nullptr){
u_strFromUTF8(expected,MAX_DEST_SIZE,&expectedLen,utf8Chars2,utf8Chars2Len, &status);
if(U_FAILURE(status)){
errln(UnicodeString("Conversion of UTF8 source in conformanceTestCases[") + i +UnicodeString( "].in ( ")+prettify(utf8Chars1) +UnicodeString(" ) failed. Error: ")+ UnicodeString(u_errorName(status)));
@@ -998,11 +998,11 @@ void TestIDNA::testConformance(const char* toASCIIName, TestFunc toASCII,
*/
// test and ascertain
// func(func(func(src))) == func(src)
-void TestIDNA::testChaining(const UChar* src,int32_t numIterations,const char* testName,
+void TestIDNA::testChaining(const char16_t* src,int32_t numIterations,const char* testName,
UBool useSTD3ASCIIRules, UBool caseInsensitive, TestFunc func){
- UChar even[MAX_DEST_SIZE];
- UChar odd[MAX_DEST_SIZE];
- UChar expected[MAX_DEST_SIZE];
+ char16_t even[MAX_DEST_SIZE];
+ char16_t odd[MAX_DEST_SIZE];
+ char16_t expected[MAX_DEST_SIZE];
int32_t i=0,evenLen=0,oddLen=0,expectedLen=0;
UErrorCode status = U_ZERO_ERROR;
int32_t srcLen = u_strlen(src);
@@ -1158,7 +1158,7 @@ void TestIDNA::testChaining(const UChar* src,int32_t numIterations,const char* t
void TestIDNA::testChaining(const char* toASCIIName, TestFunc toASCII,
const char* toUnicodeName, TestFunc toUnicode){
int32_t i;
- UChar buf[MAX_DEST_SIZE];
+ char16_t buf[MAX_DEST_SIZE];
for(i=0;i< UPRV_LENGTHOF(asciiIn); i++){
u_charsToUChars(asciiIn[i],buf, (int32_t)(strlen(asciiIn[i])+1));
@@ -1176,27 +1176,27 @@ void TestIDNA::testRootLabelSeparator(const char* testName, CompareFunc func,
int32_t i;
- UChar www[] = {0x0057, 0x0057, 0x0057, 0x002E, 0x0000};
- UChar com[] = {0x002E, 0x0043, 0x004F, 0x004D, 0x002E, /* root label separator */0x0000};
- UChar buf[MAX_DEST_SIZE]={0x0057, 0x0057, 0x0057, 0x002E, 0x0000};
+ char16_t www[] = {0x0057, 0x0057, 0x0057, 0x002E, 0x0000};
+ char16_t com[] = {0x002E, 0x0043, 0x004F, 0x004D, 0x002E, /* root label separator */0x0000};
+ char16_t buf[MAX_DEST_SIZE]={0x0057, 0x0057, 0x0057, 0x002E, 0x0000};
UnicodeString source(www), uni0(www),uni1(www), ascii0(www), ascii1(www);
uni0.append(unicodeIn[0]);
uni0.append(com);
- uni0.append((UChar)0x0000);
+ uni0.append((char16_t)0x0000);
uni1.append(unicodeIn[1]);
uni1.append(com);
- uni1.append((UChar)0x0000);
+ uni1.append((char16_t)0x0000);
ascii0.append(asciiIn[0]);
ascii0.append(com);
- ascii0.append((UChar)0x0000);
+ ascii0.append((char16_t)0x0000);
ascii1.append(asciiIn[1]);
ascii1.append(com);
- ascii1.append((UChar)0x0000);
+ ascii1.append((char16_t)0x0000);
for(i=0;i< UPRV_LENGTHOF(unicodeIn); i++){
@@ -1208,9 +1208,9 @@ void TestIDNA::testRootLabelSeparator(const char* testName, CompareFunc func,
source.truncate(4);
source.append(unicodeIn[i]);
source.append(com);
- source.append((UChar)0x0000);
+ source.append((char16_t)0x0000);
- const UChar* src = source.getBuffer();
+ const char16_t* src = source.getBuffer();
int32_t srcLen = u_strlen(src); //subtract null
// b) compare it with asciiIn equivalent
@@ -1335,7 +1335,7 @@ randul()
static UBool initialized = false;
if (!initialized)
{
- srand((unsigned)time(NULL));
+ srand((unsigned)time(nullptr));
initialized = true;
}
// Assume rand has at least 12 bits of precision
@@ -1381,8 +1381,8 @@ UnicodeString TestIDNA::testCompareReferenceImpl(UnicodeString& src,
TestFunc uIDNA, const char* uIDNAName,
int32_t options){
- const UChar* srcUChars = src.getBuffer();
- UChar exp[MAX_DEST_SIZE]={0};
+ const char16_t* srcUChars = src.getBuffer();
+ char16_t exp[MAX_DEST_SIZE]={0};
int32_t expCap = MAX_DEST_SIZE, expLen=0;
UErrorCode expStatus = U_ZERO_ERROR;
UParseError parseError;
@@ -1394,7 +1394,7 @@ UnicodeString TestIDNA::testCompareReferenceImpl(UnicodeString& src,
expLen = refIDNA(srcUChars, src.length()-1, exp, expCap,
options, &parseError, &expStatus);
- UChar got[MAX_DEST_SIZE]={0};
+ char16_t got[MAX_DEST_SIZE]={0};
int32_t gotCap = MAX_DEST_SIZE, gotLen=0;
UErrorCode gotStatus = U_ZERO_ERROR;
@@ -1433,9 +1433,9 @@ UnicodeString TestIDNA::testCompareReferenceImpl(UnicodeString& src,
return UnicodeString("");
}
-void TestIDNA::testCompareReferenceImpl(const UChar* src, int32_t srcLen){
+void TestIDNA::testCompareReferenceImpl(const char16_t* src, int32_t srcLen){
UnicodeString label(src,srcLen);
- label.append((UChar)0x0000);
+ label.append((char16_t)0x0000);
//test idnaref_toASCII and idnare
UnicodeString asciiLabel = testCompareReferenceImpl(label,
@@ -1456,7 +1456,7 @@ void TestIDNA::testCompareReferenceImpl(const UChar* src, int32_t srcLen){
UIDNA_USE_STD3_RULES | UIDNA_ALLOW_UNASSIGNED);
if(asciiLabel.length()!=0){
- asciiLabel.append((UChar)0x0000);
+ asciiLabel.append((char16_t)0x0000);
// test toUnciode
testCompareReferenceImpl(asciiLabel,
@@ -1497,8 +1497,8 @@ void TestIDNA::TestIDNAMonkeyTest(){
for(i=0; i<loopCount; i++){
source.truncate(0);
getTestSource(source);
- source.append((UChar)0x0000);
- const UChar* src = source.getBuffer();
+ source.append((char16_t)0x0000);
+ const char16_t* src = source.getBuffer();
testCompareReferenceImpl(src,source.length()-1);
testCompareReferenceImpl(src,source.length()-1);
}
@@ -1508,8 +1508,8 @@ void TestIDNA::TestIDNAMonkeyTest(){
source.truncate(0);
source.append( UnicodeString(failures[i], -1, US_INV) );
source = source.unescape();
- source.append((UChar)0x0000);
- const UChar *src = source.getBuffer();
+ source.append((char16_t)0x0000);
+ const char16_t *src = source.getBuffer();
testCompareReferenceImpl(src,source.length()-1);
//debug(source.getBuffer(),source.length(),UIDNA_ALLOW_UNASSIGNED);
}
@@ -1525,7 +1525,7 @@ void TestIDNA::TestIDNAMonkeyTest(){
UnicodeString expected("\\u043f\\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\\u0000", -1, US_INV);
expected = expected.unescape();
UnicodeString ascii("xn--b1abfaaepdrnnbgefbadotcwatmq2g4l");
- ascii.append((UChar)0x0000);
+ ascii.append((char16_t)0x0000);
testAPI(source.getBuffer(),ascii.getBuffer(), "uidna_toASCII", false, U_ZERO_ERROR, true, true, uidna_toASCII);
testAPI(source.getBuffer(),ascii.getBuffer(), "idnaref_toASCII", false, U_ZERO_ERROR, true, true, idnaref_toASCII);
@@ -1537,7 +1537,7 @@ void TestIDNA::TestIDNAMonkeyTest(){
void TestIDNA::TestCompareReferenceImpl(){
- UChar src [2] = {0,0};
+ char16_t src [2] = {0,0};
int32_t srcLen = 0;
// data even OK?
@@ -1563,7 +1563,7 @@ void TestIDNA::TestCompareReferenceImpl(){
src[1] = U16_TRAIL(i);
srcLen =2;
} else {
- src[0] = (UChar)i;
+ src[0] = (char16_t)i;
src[1] = 0;
srcLen = 1;
}
@@ -1600,16 +1600,16 @@ void TestIDNA::TestDataFile(){
TestIDNA::~TestIDNA(){
delete gPrep;
- gPrep = NULL;
+ gPrep = nullptr;
}
NamePrepTransform* TestIDNA::getInstance(UErrorCode& status){
- if(gPrep == NULL){
+ if(gPrep == nullptr){
UParseError parseError;
gPrep = NamePrepTransform::createInstance(parseError, status);
- if(gPrep == NULL){
+ if(gPrep == nullptr){
//status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
}
return gPrep;
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/testidna.h b/Build/source/libs/icu/icu-src/source/test/intltest/testidna.h
index 91e7c0bf99c..023681f94fd 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/testidna.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/testidna.h
@@ -29,13 +29,13 @@
U_CDECL_BEGIN
typedef int32_t
-(U_EXPORT2 *TestFunc) ( const UChar *src, int32_t srcLength,
- UChar *dest, int32_t destCapacity,
+(U_EXPORT2 *TestFunc) ( const char16_t *src, int32_t srcLength,
+ char16_t *dest, int32_t destCapacity,
int32_t options, UParseError *parseError,
UErrorCode *status);
typedef int32_t
-(U_EXPORT2 *CompareFunc) (const UChar *s1, int32_t s1Len,
- const UChar *s2, int32_t s2Len,
+(U_EXPORT2 *CompareFunc) (const char16_t *s1, int32_t s1Len,
+ const char16_t *s2, int32_t s2Len,
int32_t options,
UErrorCode *status);
@@ -52,7 +52,7 @@ class NamePrepTransform;
*/
class TestIDNA : public IntlTest {
public:
- void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par=NULL) override;
+ void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par=nullptr) override;
void TestDataFile();
void TestToASCII();
void TestToUnicode();
@@ -79,28 +79,28 @@ private:
void testCompare(const char* testName, CompareFunc func);
void testChaining(const char* toASCIIName, TestFunc toASCII,
const char* toUnicodeName, TestFunc toUnicode);
- void debug(const UChar* src, int32_t srcLength, int32_t options);
+ void debug(const char16_t* src, int32_t srcLength, int32_t options);
// main testing functions
- void testAPI(const UChar *src, const UChar *expected, const char *testName,
+ void testAPI(const char16_t *src, const char16_t *expected, const char *testName,
UBool useSTD3ASCIIRules, UErrorCode expectedStatus,
UBool doCompare, UBool testUnassigned, TestFunc func, UBool testSTD3ASCIIRules=true);
- void testCompare(const UChar* s1, int32_t s1Len,
- const UChar* s2, int32_t s2Len,
+ void testCompare(const char16_t* s1, int32_t s1Len,
+ const char16_t* s2, int32_t s2Len,
const char* testName, CompareFunc func,
UBool isEqual);
void testErrorCases(const char* IDNToASCIIName, TestFunc IDNToASCII,
const char* IDNToUnicodeName, TestFunc IDNToUnicode);
- void testChaining(const UChar* src,int32_t numIterations,const char* testName,
+ void testChaining(const char16_t* src,int32_t numIterations,const char* testName,
UBool useSTD3ASCIIRules, UBool caseInsensitive, TestFunc func);
void testRootLabelSeparator(const char* testName, CompareFunc func,
const char* IDNToASCIIName, TestFunc IDNToASCII,
const char* IDNToUnicodeName, TestFunc IDNToUnicode);
- void testCompareReferenceImpl(const UChar* src, int32_t srcLen);
+ void testCompareReferenceImpl(const char16_t* src, int32_t srcLen);
UnicodeString testCompareReferenceImpl(UnicodeString& src,
TestFunc refIDNA, const char* refIDNAName,
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/testutil.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/testutil.cpp
index 5c5eeef0fb4..ee4785d4fab 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/testutil.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/testutil.cpp
@@ -20,7 +20,7 @@
#include "testutil.h"
#include "intltest.h"
-static const UChar HEX[] = u"0123456789ABCDEF";
+static const char16_t HEX[] = u"0123456789ABCDEF";
UnicodeString &TestUtility::appendHex(UnicodeString &buf, UChar32 ch) {
if (ch >= 0x10000) {
@@ -46,7 +46,7 @@ UnicodeString TestUtility::hex(const UnicodeString& s) {
return hex(s, u',');
}
-UnicodeString TestUtility::hex(const UnicodeString& s, UChar sep) {
+UnicodeString TestUtility::hex(const UnicodeString& s, char16_t sep) {
UnicodeString result;
if (s.isEmpty()) return result;
UChar32 c;
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/testutil.h b/Build/source/libs/icu/icu-src/source/test/intltest/testutil.h
index 6d997a78f42..72bfc600b5e 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/testutil.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/testutil.h
@@ -33,7 +33,7 @@ public:
static UnicodeString hex(const UnicodeString& s);
- static UnicodeString hex(const UnicodeString& s, UChar sep);
+ static UnicodeString hex(const UnicodeString& s, char16_t sep);
static UnicodeString hex(const uint8_t* bytes, int32_t len);
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/tfsmalls.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/tfsmalls.cpp
index 6401d90be78..dae2287ad23 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/tfsmalls.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/tfsmalls.cpp
@@ -21,14 +21,14 @@
#include "unicode/fieldpos.h"
#include "unicode/fmtable.h"
-/*static UBool chkstatus( UErrorCode &status, char* msg = NULL )
+/*static UBool chkstatus( UErrorCode &status, char* msg = nullptr )
{
UBool ok = (status == U_ZERO_ERROR);
if (!ok) it_errln( msg );
return ok;
}*/
-void test_ParsePosition( void )
+void test_ParsePosition()
{
ParsePosition* pp1 = new ParsePosition();
if (pp1 && (pp1->getIndex() == 0)) {
@@ -78,7 +78,7 @@ void test_ParsePosition( void )
#include "unicode/decimfmt.h"
-void test_FieldPosition_example( void )
+void test_FieldPosition_example()
{
//***** no error detection yet !!!!!!!
//***** this test is for compiler checks and visual verification only.
@@ -87,7 +87,7 @@ void test_FieldPosition_example( void )
int32_t dNumSize = UPRV_LENGTHOF(doubleNum);
UErrorCode status = U_ZERO_ERROR;
- DecimalFormat* fmt = (DecimalFormat*) NumberFormat::createInstance(status);
+ DecimalFormat* fmt = dynamic_cast<DecimalFormat*>(NumberFormat::createInstance(status));
if (U_FAILURE(status)) {
it_dataerrln("NumberFormat::createInstance() error");
return;
@@ -115,7 +115,7 @@ void test_FieldPosition_example( void )
}
-void test_FieldPosition( void )
+void test_FieldPosition()
{
FieldPosition fp( 7 );
@@ -161,7 +161,7 @@ void test_FieldPosition( void )
}
-void test_Formattable( void )
+void test_Formattable()
{
UErrorCode status = U_ZERO_ERROR;
Formattable* ftp = new Formattable();
@@ -294,7 +294,7 @@ void test_Formattable( void )
res_array = fta.getArray(res_cnt, status = U_ZERO_ERROR);
if (status == U_INVALID_FORMAT_ERROR){
- if (res_cnt == 0 && res_array == NULL){
+ if (res_cnt == 0 && res_array == nullptr){
it_logln("FT getArray with status tested on non array");
} else {
it_errln("*** FT getArray with status return values are not consistent");
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/tfsmalls.h b/Build/source/libs/icu/icu-src/source/test/intltest/tfsmalls.h
index 518c684bab5..a93ffcacc0b 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/tfsmalls.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/tfsmalls.h
@@ -23,7 +23,7 @@ class TestFormatSmallClasses: public IntlTest {
* FieldPosition in test_FieldPosition(),
* Formattable in test_Formattable().
**/
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
};
#endif
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/thcoll.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/thcoll.cpp
index dd02e59d20e..8beceb108a3 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/thcoll.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/thcoll.cpp
@@ -77,7 +77,7 @@ void CollationThaiTest::runIndexedTest(int32_t index, UBool exec, const char* &n
* gets the same results when comparing lines one to another
* using regular and iterative comparison.
*/
-void CollationThaiTest::TestNamesList(void) {
+void CollationThaiTest::TestNamesList() {
if (coll == 0) {
errln("Error: could not construct Thai collator");
return;
@@ -124,7 +124,7 @@ void CollationThaiTest::TestNamesList(void) {
* sorted order, and confirm that the collator compares each line as
* preceding the following line.
*/
-void CollationThaiTest::TestDictionary(void) {
+void CollationThaiTest::TestDictionary() {
if (coll == 0) {
errln("Error: could not construct Thai collator");
return;
@@ -203,7 +203,7 @@ void CollationThaiTest::TestDictionary(void) {
* Odd corner conditions taken from "How to Sort Thai Without Rewriting Sort",
* by Doug Cooper, http://seasrc.th.net/paper/thaisort.zip
*/
-void CollationThaiTest::TestCornerCases(void) {
+void CollationThaiTest::TestCornerCases() {
const char* TESTS[] = {
// Shorter words precede longer
"\\u0e01", "<", "\\u0e01\\u0e01",
@@ -340,19 +340,19 @@ UnicodeString& CollationThaiTest::parseChars(UnicodeString& result,
return result = CharsToUnicodeString(chars);
}
-UCollator *thaiColl = NULL;
+UCollator *thaiColl = nullptr;
U_CDECL_BEGIN
static int U_CALLCONV
StrCmp(const void *p1, const void *p2) {
- return ucol_strcoll(thaiColl, *(UChar **) p1, -1, *(UChar **)p2, -1);
+ return ucol_strcoll(thaiColl, *(char16_t **) p1, -1, *(char16_t **)p2, -1);
}
U_CDECL_END
#define LINES 6
-void CollationThaiTest::TestInvalidThai(void) {
+void CollationThaiTest::TestInvalidThai() {
const char *tests[LINES] = {
"\\u0E44\\u0E01\\u0E44\\u0E01",
"\\u0E44\\u0E01\\u0E01\\u0E44",
@@ -362,9 +362,9 @@ void CollationThaiTest::TestInvalidThai(void) {
"\\u0E01\\u0E44\\u0E44\\u0E01",
};
- UChar strings[LINES][20];
+ char16_t strings[LINES][20];
- UChar *toSort[LINES];
+ char16_t *toSort[LINES];
int32_t i = 0, j = 0, len = 0;
@@ -377,7 +377,7 @@ void CollationThaiTest::TestInvalidThai(void) {
return;
}
- CollationElementIterator* c = ((RuleBasedCollator *)coll)->createCollationElementIterator( iteratorText );
+ CollationElementIterator* c = (dynamic_cast<RuleBasedCollator*>(coll))->createCollationElementIterator( iteratorText );
for(i = 0; i < UPRV_LENGTHOF(tests); i++) {
len = u_unescape(tests[i], strings[i], 20);
@@ -385,7 +385,7 @@ void CollationThaiTest::TestInvalidThai(void) {
toSort[i] = strings[i];
}
- qsort (toSort, LINES, sizeof (UChar *), StrCmp);
+ qsort (toSort, LINES, sizeof (char16_t *), StrCmp);
for (i=0; i < LINES; i++)
{
@@ -407,7 +407,7 @@ void CollationThaiTest::TestInvalidThai(void) {
delete c;
}
-void CollationThaiTest::TestReordering(void) {
+void CollationThaiTest::TestReordering() {
// Until UCA 4.1, the collation code swapped Thai/Lao prevowels with the following consonants,
// resulting in consonant+prevowel == prevowel+consonant.
// From UCA 5.0 on, there are order-reversing contractions for prevowel+consonant.
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/thcoll.h b/Build/source/libs/icu/icu-src/source/test/intltest/thcoll.h
index aaba12a9b57..544913b9f47 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/thcoll.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/thcoll.h
@@ -27,7 +27,7 @@ public:
CollationThaiTest();
virtual ~CollationThaiTest();
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
private:
@@ -36,30 +36,30 @@ private:
* sorted order, and confirm that the collator compares each line as
* preceding the following line.
*/
- void TestDictionary(void);
+ void TestDictionary();
/**
* Odd corner conditions taken from "How to Sort Thai Without Rewriting Sort",
* by Doug Cooper, http://seasrc.th.net/paper/thaisort.zip
*/
- void TestCornerCases(void);
+ void TestCornerCases();
/**
* Read the external names list, and confirms that the collator
* gets the same results when comparing lines one to another
* using regular and iterative comparison.
*/
- void TestNamesList(void);
+ void TestNamesList();
/**
* test that invalid Thai sorts properly
*/
- void TestInvalidThai(void);
+ void TestInvalidThai();
/**
* test that reording is done properly
*/
- void TestReordering(void);
+ void TestReordering();
private:
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/tmsgfmt.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/tmsgfmt.cpp
index 6d4e47b54fb..467b5532879 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/tmsgfmt.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/tmsgfmt.cpp
@@ -139,7 +139,7 @@ void TestMessageFormat::testBug3()
logln(locale[i].getDisplayName(buffer));
UErrorCode success = U_ZERO_ERROR;
// form = (DecimalFormat*)NumberFormat::createCurrencyInstance(locale[i], success);
- form = (DecimalFormat*)NumberFormat::createInstance(locale[i], success);
+ form = dynamic_cast<DecimalFormat*>(NumberFormat::createInstance(locale[i], success));
if (U_FAILURE(success)) {
errln("Err: Number Format ");
logln("Number format creation failed.");
@@ -226,7 +226,7 @@ operator<<( IntlTest& stream,
break;
case Formattable::kDouble :
char convert[20];
- sprintf( convert, "%lf", obj.getDouble() );
+ snprintf( convert, sizeof(convert), "%lf", obj.getDouble() );
stream << convert << "D";
break;
case Formattable::kLong :
@@ -995,14 +995,14 @@ void TestMessageFormat::testSetLocale()
// Just use unlocalized currency symbol.
//UnicodeString compareStrEng = "At <time> on Aug 8, 1997, you made a deposit of $456.83.";
UnicodeString compareStrEng = "At <time> on Aug 8, 1997, you made a deposit of ";
- compareStrEng += (UChar) 0x00a4;
+ compareStrEng += (char16_t) 0x00a4;
compareStrEng += "456.83.";
// {sfb} to get DM, would need Locale::GERMANY, not Locale::GERMAN
// Just use unlocalized currency symbol.
//UnicodeString compareStrGer = "At <time> on 08.08.1997, you made a deposit of 456,83 DM.";
UnicodeString compareStrGer = "At <time> on 08.08.1997, you made a deposit of ";
compareStrGer += "456,83";
- compareStrGer += (UChar) 0x00a0;
+ compareStrGer += (char16_t) 0x00a0;
compareStrGer += "XXX.";
MessageFormat msg( formatStr, err);
@@ -1229,13 +1229,13 @@ void TestMessageFormat::testAdopt()
for (i = 0; i < count; i++) {
a = formats[i];
b = formatsCmp[i];
- if ((a != NULL) && (b != NULL)) {
+ if ((a != nullptr) && (b != nullptr)) {
if (*a != *b) {
errln("a != b");
return;
}
- }else if ((a != NULL) || (b != NULL)) {
- errln("(a != NULL) || (b != NULL)");
+ }else if ((a != nullptr) || (b != nullptr)) {
+ errln("(a != nullptr) || (b != nullptr)");
return;
}
}
@@ -1253,7 +1253,7 @@ void TestMessageFormat::testAdopt()
for (i = 0; i < count; i++) {
a = formatsChg[i];
b = formatsCmp[i];
- if ((a != NULL) && (b != NULL)) {
+ if ((a != nullptr) && (b != nullptr)) {
if (*a == *b) {
logln("formatsChg == formatsCmp at index %d", i);
diff = false;
@@ -1286,14 +1286,14 @@ void TestMessageFormat::testAdopt()
for (i = 0; i < countAct; i++) {
a = formatsAct[i];
b = formatsCmp[i];
- if ((a != NULL) && (b != NULL)) {
+ if ((a != nullptr) && (b != nullptr)) {
if (*a != *b) {
logln("formatsAct != formatsCmp at index %d", i);
errln("a != b");
return;
}
- }else if ((a != NULL) || (b != NULL)) {
- errln("(a != NULL) || (b != NULL)");
+ }else if ((a != nullptr) || (b != nullptr)) {
+ errln("(a != nullptr) || (b != nullptr)");
return;
}
}
@@ -1310,8 +1310,8 @@ void TestMessageFormat::testAdopt()
}
for (i = 0; i < countCmp; i++) {
- if (formatsCmp[i] == NULL) {
- formatsToAdopt[i] = NULL;
+ if (formatsCmp[i] == nullptr) {
+ formatsToAdopt[i] = nullptr;
}else{
formatsToAdopt[i] = formatsCmp[i]->clone();
if (!formatsToAdopt[i]) {
@@ -1336,13 +1336,13 @@ void TestMessageFormat::testAdopt()
for (i = 0; i < countAct; i++) {
a = formatsAct[i];
b = formatsCmp[i];
- if ((a != NULL) && (b != NULL)) {
+ if ((a != nullptr) && (b != nullptr)) {
if (*a != *b) {
errln("a != b");
return;
}
- }else if ((a != NULL) || (b != NULL)) {
- errln("(a != NULL) || (b != NULL)");
+ }else if ((a != nullptr) || (b != nullptr)) {
+ errln("(a != nullptr) || (b != nullptr)");
return;
}
}
@@ -1359,8 +1359,8 @@ void TestMessageFormat::testAdopt()
}
for (i = 0; i < countCmp; i++) {
- if (formatsCmp[i] == NULL) {
- formatsToAdopt[i] = NULL;
+ if (formatsCmp[i] == nullptr) {
+ formatsToAdopt[i] = nullptr;
}else{
formatsToAdopt[i] = formatsCmp[i]->clone();
if (!formatsToAdopt[i]) {
@@ -1388,13 +1388,13 @@ void TestMessageFormat::testAdopt()
for (i = 0; i < countAct; i++) {
a = formatsAct[i];
b = formatsCmp[i];
- if ((a != NULL) && (b != NULL)) {
+ if ((a != nullptr) && (b != nullptr)) {
if (*a != *b) {
errln("a != b");
return;
}
- }else if ((a != NULL) || (b != NULL)) {
- errln("(a != NULL) || (b != NULL)");
+ }else if ((a != nullptr) || (b != nullptr)) {
+ errln("(a != nullptr) || (b != nullptr)");
return;
}
}
@@ -1418,32 +1418,32 @@ static void _testCopyConstructor2()
const Formattable fargs( d, Formattable::kIsDate );
MessageFormat* fmt1 = new MessageFormat( formatStr, status );
- MessageFormat* fmt2 = NULL;
- MessageFormat* fmt3 = NULL;
- MessageFormat* fmt4 = NULL;
+ MessageFormat* fmt2 = nullptr;
+ MessageFormat* fmt3 = nullptr;
+ MessageFormat* fmt4 = nullptr;
- if (fmt1 == NULL) {
- it_err("testCopyConstructor2: (fmt1 != NULL)");
+ if (fmt1 == nullptr) {
+ it_err("testCopyConstructor2: (fmt1 != nullptr)");
goto cleanup;
}
fmt2 = new MessageFormat( *fmt1 );
result = fmt1->format( &fargs, 1, resultStr, fp, status );
- if (fmt2 == NULL) {
- it_err("testCopyConstructor2: (fmt2 != NULL)");
+ if (fmt2 == nullptr) {
+ it_err("testCopyConstructor2: (fmt2 != nullptr)");
goto cleanup;
}
fmt3 = fmt1->clone();
fmt4 = fmt2->clone();
- if (fmt3 == NULL) {
- it_err("testCopyConstructor2: (fmt3 != NULL)");
+ if (fmt3 == nullptr) {
+ it_err("testCopyConstructor2: (fmt3 != nullptr)");
goto cleanup;
}
- if (fmt4 == NULL) {
- it_err("testCopyConstructor2: (fmt4 != NULL)");
+ if (fmt4 == nullptr) {
+ it_err("testCopyConstructor2: (fmt4 != nullptr)");
goto cleanup;
}
@@ -1518,7 +1518,7 @@ void TestMessageFormat::TestUnlimitedArgsAndSubformats() {
}
// test RBNF extensions to message format
-void TestMessageFormat::TestRBNF(void) {
+void TestMessageFormat::TestRBNF() {
// WARNING: this depends on the RBNF formats for en_US
Locale locale("en", "US", "");
@@ -1621,10 +1621,10 @@ void TestMessageFormat::TestApostropheMode() {
UErrorCode status = U_ZERO_ERROR;
assertEquals("DOUBLE_OPTIONAL failure",
desired,
- GetPatternAndSkipSyntax(ado_mp->parse(ado_pattern, NULL, status)));
+ GetPatternAndSkipSyntax(ado_mp->parse(ado_pattern, nullptr, status)));
UnicodeString& adr_pattern = tuples[i + 2].isEmpty() ? ado_pattern : tuples[i + 2];
assertEquals("DOUBLE_REQUIRED failure", desired,
- GetPatternAndSkipSyntax(adr_mp->parse(adr_pattern, NULL, status)));
+ GetPatternAndSkipSyntax(adr_mp->parse(adr_pattern, nullptr, status)));
}
delete adr_mp;
delete ado_mp;
@@ -1639,13 +1639,13 @@ void TestMessageFormat::TestCompatibleApostrophe() {
UErrorCode ec = U_ZERO_ERROR;
MessageFormat compMsg("", Locale::getUS(), ec);
- compMsg.applyPattern(pattern, UMSGPAT_APOS_DOUBLE_REQUIRED, NULL, ec);
+ compMsg.applyPattern(pattern, UMSGPAT_APOS_DOUBLE_REQUIRED, nullptr, ec);
if (compMsg.getApostropheMode() != UMSGPAT_APOS_DOUBLE_REQUIRED) {
errln("wrong value from compMsg.getApostropheMode().");
}
MessageFormat icuMsg("", Locale::getUS(), ec);
- icuMsg.applyPattern(pattern, UMSGPAT_APOS_DOUBLE_OPTIONAL, NULL, ec);
+ icuMsg.applyPattern(pattern, UMSGPAT_APOS_DOUBLE_OPTIONAL, nullptr, ec);
if (icuMsg.getApostropheMode() != UMSGPAT_APOS_DOUBLE_OPTIONAL) {
errln("wrong value from icuMsg.getApostropheMode().");
}
@@ -1693,7 +1693,7 @@ void TestMessageFormat::TestCompatibleApostrophe() {
*/
}
-void TestMessageFormat::testAutoQuoteApostrophe(void) {
+void TestMessageFormat::testAutoQuoteApostrophe() {
const char* patterns[] = { // pattern, expected pattern
"'", "''",
"''", "''",
@@ -1724,17 +1724,17 @@ void TestMessageFormat::testAutoQuoteApostrophe(void) {
if (len >= BUF2_LEN) {
buf2[BUF2_LEN-1] = 0;
}
- sprintf(buf, "[%2d] test \"%s\": target (\"%s\") != result (\"%s\")\n", i/2, patterns[i], patterns[i+1], buf2);
+ snprintf(buf, sizeof(buf), "[%2d] test \"%s\": target (\"%s\") != result (\"%s\")\n", i/2, patterns[i], patterns[i+1], buf2);
errln(buf);
}
}
}
-void TestMessageFormat::testCoverage(void) {
+void TestMessageFormat::testCoverage() {
UErrorCode status = U_ZERO_ERROR;
UnicodeString testformat("{argument, plural, one{C''est # fichier} other {Ce sont # fichiers}} dans la liste.");
MessageFormat *msgfmt = new MessageFormat(testformat, Locale("fr"), status);
- if (msgfmt == NULL || U_FAILURE(status)) {
+ if (msgfmt == nullptr || U_FAILURE(status)) {
dataerrln("FAIL: Unable to create MessageFormat.: %s", u_errorName(status));
return;
}
@@ -1750,7 +1750,7 @@ void TestMessageFormat::testCoverage(void) {
msgfmt->setFormat("set", cf, status);
StringEnumeration *en = msgfmt->getFormatNames(status);
- if (en == NULL || U_FAILURE(status)) {
+ if (en == nullptr || U_FAILURE(status)) {
errln("FAIL: Unable to get format names enumeration.");
} else {
int32_t count = 0;
@@ -1778,7 +1778,7 @@ void TestMessageFormat::testCoverage(void) {
delete msgfmt;
msgfmt = new MessageFormat("'", status);
- if (msgfmt == NULL || U_FAILURE(status)) {
+ if (msgfmt == nullptr || U_FAILURE(status)) {
errln("FAIL: Unable to create MessageFormat.");
return;
}
@@ -1814,7 +1814,7 @@ void TestMessageFormat::testGetFormatNames() {
}
const UnicodeString *name;
name = names->snext(errorCode);
- if (name == NULL || errorCode.isFailure()) {
+ if (name == nullptr || errorCode.isFailure()) {
errln("msgfmt.getFormatNames()[0] failed: %s", errorCode.errorName());
errorCode.reset();
return;
@@ -1823,7 +1823,7 @@ void TestMessageFormat::testGetFormatNames() {
return;
}
name = names->snext(errorCode);
- if (name == NULL || errorCode.isFailure()) {
+ if (name == nullptr || errorCode.isFailure()) {
errln("msgfmt.getFormatNames()[1] failed: %s", errorCode.errorName());
errorCode.reset();
return;
@@ -1832,7 +1832,7 @@ void TestMessageFormat::testGetFormatNames() {
return;
}
name = names->snext(errorCode);
- if (name == NULL || errorCode.isFailure()) {
+ if (name == nullptr || errorCode.isFailure()) {
errln("msgfmt.getFormatNames()[2] failed: %s", errorCode.errorName());
errorCode.reset();
return;
@@ -1841,8 +1841,8 @@ void TestMessageFormat::testGetFormatNames() {
return;
}
name = names->snext(errorCode);
- if (name != NULL) {
- errln(UnicodeString("msgfmt.getFormatNames()[3] should be NULL but is: ") + *name);
+ if (name != nullptr) {
+ errln(UnicodeString("msgfmt.getFormatNames()[3] should be nullptr but is: ") + *name);
return;
}
}
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/tmsgfmt.h b/Build/source/libs/icu/icu-src/source/test/intltest/tmsgfmt.h
index 500560c5c2a..efc59c64ac6 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/tmsgfmt.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/tmsgfmt.h
@@ -22,28 +22,28 @@
*/
class TestMessageFormat: public IntlTest {
public:
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
/**
* regression test for a specific bug regarding ChoiceFormat boundaries
**/
- void testBug1(void);
+ void testBug1();
/**
* regression test for a specific bug regarding MessageFormat using ChoiceFormat
**/
- void testBug2(void);
+ void testBug2();
/**
* regression test for a specific bug involving NumberFormat and Locales
**/
- void testBug3(void);
+ void testBug3();
/**
* test MessageFormat with various given patterns
**/
- void PatternTest(void);
+ void PatternTest();
/**
* test MesageFormat formatting functionality in a simple example
**/
- void sample(void);
+ void sample();
/**
* tests the static MessageFormat::format method
@@ -103,18 +103,18 @@ public:
* In addition to the methods their name suggests,
* they often test other methods as well.
**/
- void testCopyConstructor(void);
- void testCopyConstructor2(void);
- void testAssignment(void);
- void testClone(void);
- void testEquals(void);
- void testNotEquals(void);
- void testSetLocale(void);
- void testFormat(void);
- void testParse(void);
- void testAdopt(void);
- void TestTurkishCasing(void);
- void testAutoQuoteApostrophe(void);
+ void testCopyConstructor();
+ void testCopyConstructor2();
+ void testAssignment();
+ void testClone();
+ void testEquals();
+ void testNotEquals();
+ void testSetLocale();
+ void testFormat();
+ void testParse();
+ void testAdopt();
+ void TestTurkishCasing();
+ void testAutoQuoteApostrophe();
void testCoverage();
void testGetFormatNames();
void TestTrimArgumentName();
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/tokiter.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/tokiter.cpp
index a98b833ef08..2aafd63046e 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/tokiter.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/tokiter.cpp
@@ -69,8 +69,8 @@ UBool TokenIterator::nextToken(UnicodeString& token, UErrorCode& ec) {
if (pos == line.length()) {
return false;
}
- UChar c = line.charAt(pos++);
- UChar quote = 0;
+ char16_t c = line.charAt(pos++);
+ char16_t quote = 0;
switch (c) {
case 34/*'"'*/:
case 39/*'\\'*/:
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/transapi.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/transapi.cpp
index 828b774b3ec..e098e47ebba 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/transapi.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/transapi.cpp
@@ -358,7 +358,7 @@ void TransliteratorAPITest::TestTransliterate2(){
status = U_ZERO_ERROR;
callEverything(t, __LINE__);
delete t;
- t = NULL;
+ t = nullptr;
}
status = U_ZERO_ERROR;
@@ -509,15 +509,15 @@ void TransliteratorAPITest::TestKeyboardTransliterator1(){
s="";
status=U_ZERO_ERROR;
index.contextStart = index.contextLimit = index.start = index.limit = 0;
- logln("Testing transliterate(Replaceable, int32_t, UChar, UErrorCode)");
+ logln("Testing transliterate(Replaceable, int32_t, char16_t, UErrorCode)");
for(i=10; i<UPRV_LENGTHOF(Data); i=i+2){
UnicodeString log;
if (Data[i+0] != "") {
log = s + " + " + Data[i+0] + " -> ";
- UChar c=Data[i+0].charAt(0);
+ char16_t c=Data[i+0].charAt(0);
t->transliterate(s, index, c, status);
if(U_FAILURE(status)) {
- errln("FAIL: " + t->getID()+ ".transliterate(Replaceable, int32_t[], UChar, UErrorCode)-->" + (UnicodeString)u_errorName(status));
+ errln("FAIL: " + t->getID()+ ".transliterate(Replaceable, int32_t[], char16_t, UErrorCode)-->" + (UnicodeString)u_errorName(status));
continue;
}
} else {
@@ -653,13 +653,13 @@ void TransliteratorAPITest::TestRegisterUnregister(){
UErrorCode status=U_ZERO_ERROR;
/* Make sure it doesn't exist */
- if (Transliterator::createInstance("TestA-TestB", UTRANS_FORWARD, status) != NULL) {
+ if (Transliterator::createInstance("TestA-TestB", UTRANS_FORWARD, status) != nullptr) {
errln("FAIL: TestA-TestB already registered\n");
return;
}
/* Check inverse too
if (Transliterator::createInstance("TestA-TestB",
- (UTransDirection)UTRANS_REVERSE) != NULL) {
+ (UTransDirection)UTRANS_REVERSE) != nullptr) {
errln("FAIL: TestA-TestB inverse already registered\n");
return;
}
@@ -677,7 +677,7 @@ void TransliteratorAPITest::TestRegisterUnregister(){
/* Now check again -- should exist now*/
Transliterator *s = Transliterator::createInstance("TestA-TestB", UTRANS_FORWARD, status);
- if (s == NULL) {
+ if (s == nullptr) {
errln("FAIL: TestA-TestB not registered\n");
return;
}
@@ -688,7 +688,7 @@ void TransliteratorAPITest::TestRegisterUnregister(){
/* Check inverse too
s = Transliterator::createInstance("TestA-TestB",
(UTransDirection)UTRANS_REVERSE);
- if (s == NULL) {
+ if (s == nullptr) {
errln("FAIL: TestA-TestB inverse not registered\n");
return;
}
@@ -698,7 +698,7 @@ void TransliteratorAPITest::TestRegisterUnregister(){
/*unregister the instance*/
Transliterator::unregister("TestA-TestB");
/* now Make sure it doesn't exist */
- if (Transliterator::createInstance("TestA-TestB", UTRANS_FORWARD, status) != NULL) {
+ if (Transliterator::createInstance("TestA-TestB", UTRANS_FORWARD, status) != nullptr) {
errln("FAIL: TestA-TestB isn't unregistered\n");
return;
}
@@ -788,7 +788,7 @@ void TransliteratorAPITest::TestGetAdoptFilter(){
return;
}
const UnicodeFilter *u=t->getFilter();
- if(u != NULL){
+ if(u != nullptr){
errln("FAIL: getFilter failed. Didn't return null when the transliterator used no filtering");
delete t;
return;
@@ -807,8 +807,8 @@ void TransliteratorAPITest::TestGetAdoptFilter(){
doTest(message, got, exp);
logln("Testing round trip");
- t->adoptFilter((UnicodeFilter*)u);
- if(t->getFilter() == NULL)
+ t->adoptFilter(const_cast<UnicodeFilter*>(u));
+ if(t->getFilter() == nullptr)
logln("OK: adoptFilter and getFilter round trip worked");
else
errln("FAIL: adoptFilter or getFilter round trip failed");
@@ -889,13 +889,13 @@ void TransliteratorAPITest::displayOutput(const UnicodeString& got, const Unicod
got.extractBetween(index.limit, index.contextLimit, d);
got.extractBetween(index.contextLimit, got.length(), e);
log.append(a).
- append((UChar)0x7b/*{*/).
+ append((char16_t)0x7b/*{*/).
append(b).
- append((UChar)0x7c/*|*/).
+ append((char16_t)0x7c/*|*/).
append(c).
- append((UChar)0x7c).
+ append((char16_t)0x7c).
append(d).
- append((UChar)0x7d/*}*/).
+ append((char16_t)0x7d/*}*/).
append(e);
if (got == expected)
logln("OK:" + prettify(log));
@@ -927,7 +927,7 @@ void TransliteratorAPITest::doTest(const UnicodeString& message, const UnicodeSt
void TransliteratorAPITest::callEverything(const Transliterator *tr, int line) {
Transliterator *clonedTR = tr->clone();
- CEASSERT(clonedTR != NULL);
+ CEASSERT(clonedTR != nullptr);
int32_t maxcl = tr->getMaximumContextLength();
CEASSERT(clonedTR->getMaximumContextLength() == maxcl);
@@ -940,8 +940,8 @@ void TransliteratorAPITest::callEverything(const Transliterator *tr, int line) {
const UnicodeFilter *filter = tr->getFilter();
const UnicodeFilter *clonedFilter = clonedTR->getFilter();
- if (filter == NULL || clonedFilter == NULL) {
- // If one filter is NULL they better both be NULL.
+ if (filter == nullptr || clonedFilter == nullptr) {
+ // If one filter is nullptr they better both be nullptr.
CEASSERT(filter == clonedFilter);
} else {
CEASSERT(filter != clonedFilter);
@@ -975,19 +975,19 @@ void TransliteratorAPITest::callEverything(const Transliterator *tr, int line) {
static const int MyUnicodeFunctorTestClassID = 0;
class MyUnicodeFunctorTestClass : public UnicodeFunctor {
public:
- virtual UnicodeFunctor* clone() const override {return NULL;}
- static UClassID getStaticClassID(void) {return (UClassID)&MyUnicodeFunctorTestClassID;}
- virtual UClassID getDynamicClassID(void) const override {return getStaticClassID();}
+ virtual UnicodeFunctor* clone() const override {return nullptr;}
+ static UClassID getStaticClassID() {return (UClassID)&MyUnicodeFunctorTestClassID;}
+ virtual UClassID getDynamicClassID() const override {return getStaticClassID();}
virtual void setData(const TransliterationRuleData*) override {}
};
void TransliteratorAPITest::TestUnicodeFunctor() {
MyUnicodeFunctorTestClass myClass;
- if (myClass.toMatcher() != NULL) {
- errln("FAIL: UnicodeFunctor::toMatcher did not return NULL");
+ if (myClass.toMatcher() != nullptr) {
+ errln("FAIL: UnicodeFunctor::toMatcher did not return nullptr");
}
- if (myClass.toReplacer() != NULL) {
- errln("FAIL: UnicodeFunctor::toReplacer did not return NULL");
+ if (myClass.toReplacer() != nullptr) {
+ errln("FAIL: UnicodeFunctor::toReplacer did not return nullptr");
}
}
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/transapi.h b/Build/source/libs/icu/icu-src/source/test/intltest/transapi.h
index 9d8ff97496d..9c1f1899ba0 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/transapi.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/transapi.h
@@ -26,42 +26,42 @@
*/
class TransliteratorAPITest : public IntlTest {
public:
- void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par=NULL) override;
+ void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par=nullptr) override;
/*Tests the function getDisplayName() */
- void TestGetDisplayName(void);
+ void TestGetDisplayName();
- void TestgetID(void);
+ void TestgetID();
- void TestgetInverse(void);
+ void TestgetInverse();
- void TestClone(void);
+ void TestClone();
- void TestTransliterate1(void);
+ void TestTransliterate1();
- void TestTransliterate2(void);
+ void TestTransliterate2();
- void TestTransliterate3(void);
+ void TestTransliterate3();
- void TestSimpleKeyboardTransliterator(void);
+ void TestSimpleKeyboardTransliterator();
- void TestKeyboardTransliterator1(void);
+ void TestKeyboardTransliterator1();
- void TestKeyboardTransliterator2(void);
+ void TestKeyboardTransliterator2();
- void TestKeyboardTransliterator3(void);
+ void TestKeyboardTransliterator3();
- void TestGetAdoptFilter(void);
+ void TestGetAdoptFilter();
- void TestNullTransliterator(void);
+ void TestNullTransliterator();
- void TestRegisterUnregister(void);
+ void TestRegisterUnregister();
- void TestLatinDevanagari(void);
+ void TestLatinDevanagari();
- void TestDevanagariLatinRT(void);
+ void TestDevanagariLatinRT();
- void TestUnicodeFunctor(void);
+ void TestUnicodeFunctor();
/*Internal functions used*/
void doTest(const UnicodeString& , const UnicodeString& , const UnicodeString& );
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/transrt.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/transrt.cpp
index f6e95fe9db1..6f9200ea4b0 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/transrt.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/transrt.cpp
@@ -129,7 +129,7 @@ public:
LegalJamo() {}
virtual ~LegalJamo() {}
virtual UBool is(const UnicodeString& sourceString) const override;
- int getType(UChar c) const;
+ int getType(char16_t c) const;
};
UBool LegalJamo::is(const UnicodeString& sourceString) const {
@@ -156,7 +156,7 @@ UBool LegalJamo::is(const UnicodeString& sourceString) const {
return true;
}
-int LegalJamo::getType(UChar c) const {
+int LegalJamo::getType(char16_t c) const {
if (0x1100 <= c && c <= 0x1112)
return 0;
else if (0x1161 <= c && c <= 0x1175)
@@ -174,9 +174,9 @@ public:
virtual UBool is(const UnicodeString& sourceString) const override;
- static UBool isVowel(UChar c);
+ static UBool isVowel(char16_t c);
- static UBool isRho(UChar c);
+ static UBool isRho(char16_t c);
};
UBool LegalGreek::is(const UnicodeString& sourceString) const {
@@ -192,7 +192,7 @@ UBool LegalGreek::is(const UnicodeString& sourceString) const {
// return false;
// }
for (int32_t i = 0; i < decomp.length(); ++i) {
- UChar c = decomp.charAt(i);
+ char16_t c = decomp.charAt(i);
// exclude all the accents
if (c == 0x0313 || c == 0x0314 || c == 0x0300 || c == 0x0302
|| c == 0x0342 || c == 0x0345
@@ -211,7 +211,7 @@ UBool LegalGreek::is(const UnicodeString& sourceString) const {
int32_t breathingCount = 0;
int32_t letterCount = 0;
for (int32_t i = 0; i < decomp.length(); ++i) {
- UChar c = decomp.charAt(i);
+ char16_t c = decomp.charAt(i);
if (u_isalpha(c)) {
++letterCount;
if (noLetterYet) {
@@ -232,7 +232,7 @@ UBool LegalGreek::is(const UnicodeString& sourceString) const {
return breathingCount == 0;
}
-UBool LegalGreek::isVowel(UChar c) {
+UBool LegalGreek::isVowel(char16_t c) {
switch (c) {
case 0x03B1:
case 0x03B5:
@@ -253,7 +253,7 @@ UBool LegalGreek::isVowel(UChar c) {
return false;
}
-UBool LegalGreek::isRho(UChar c) {
+UBool LegalGreek::isRho(char16_t c) {
switch (c) {
case 0x03C1:
case 0x03A1:
@@ -494,7 +494,7 @@ void RTTest::test(const UnicodeString& sourceRangeVal,
this->toTarget.addAll(okAnyway);
this->roundtripExclusionsSet.clear();
- if (roundtripExclusions != NULL && strlen(roundtripExclusions) > 0) {
+ if (roundtripExclusions != nullptr && strlen(roundtripExclusions) > 0) {
this->roundtripExclusionsSet.applyPattern(UnicodeString(roundtripExclusions, -1, US_INV), status);
if (U_FAILURE(status)) {
parent->errln("FAIL: UnicodeSet::applyPattern(%s)", roundtripExclusions);
@@ -513,12 +513,12 @@ void RTTest::test(const UnicodeString& sourceRangeVal,
if (errorCount > 0) {
char str[100];
- int32_t length = transliteratorID.extract(str, 100, NULL, status);
+ int32_t length = transliteratorID.extract(str, 100, nullptr, status);
str[length] = 0;
parent->errln("FAIL: %s errors: %d %s", str, errorCount, (errorCount > errorLimit ? " (at least!)" : " ")); // + ", see " + logFileName);
} else {
char str[100];
- int32_t length = transliteratorID.extract(str, 100, NULL, status);
+ int32_t length = transliteratorID.extract(str, 100, nullptr, status);
str[length] = 0;
parent->logln("%s ok", str);
}
@@ -527,7 +527,7 @@ void RTTest::test(const UnicodeString& sourceRangeVal,
UBool RTTest::checkIrrelevants(Transliterator *t,
const UnicodeString& irrelevants) {
for (int i = 0; i < irrelevants.length(); ++i) {
- UChar c = irrelevants.charAt(i);
+ char16_t c = irrelevants.charAt(i);
UnicodeString srcStr(c);
UnicodeString targ = srcStr;
t->transliterate(targ);
@@ -544,18 +544,18 @@ void RTTest::test2(UBool quickRt, int32_t density) {
TransliteratorPointer sourceToTarget(
Transliterator::createInstance(transliteratorID, UTRANS_FORWARD, parseError,
status));
- if ((Transliterator *)sourceToTarget == NULL) {
+ if (sourceToTarget == nullptr) {
parent->dataerrln("FAIL: createInstance(" + transliteratorID +
- ") returned NULL. Error: " + u_errorName(status)
+ ") returned nullptr. Error: " + u_errorName(status)
+ "\n\tpreContext : " + prettify(parseError.preContext)
+ "\n\tpostContext : " + prettify(parseError.postContext));
return;
}
TransliteratorPointer targetToSource(sourceToTarget->createInverse(status));
- if ((Transliterator *)targetToSource == NULL) {
+ if (targetToSource == nullptr) {
parent->errln("FAIL: " + transliteratorID +
- ".createInverse() returned NULL. Error:" + u_errorName(status)
+ ".createInverse() returned nullptr. Error:" + u_errorName(status)
+ "\n\tpreContext : " + prettify(parseError.preContext)
+ "\n\tpostContext : " + prettify(parseError.postContext));
return;
@@ -994,7 +994,7 @@ void TransliteratorRoundTripTest::TestJamo() {
t.test(UnicodeString("[a-zA-Z]", ""),
UnicodeString("[\\u1100-\\u1112 \\u1161-\\u1175 \\u11A8-\\u11C2]",
""),
- NULL, this, quick, legal);
+ nullptr, this, quick, legal);
delete legal;
}
@@ -1004,7 +1004,7 @@ void TransliteratorRoundTripTest::TestHangul() {
if (quick) t.setPairLimit(1000);
t.test(UnicodeString("[a-zA-Z]", ""),
UnicodeString("[\\uAC00-\\uD7A4]", ""),
- NULL, this, quick, legal, 1);
+ nullptr, this, quick, legal, 1);
delete legal;
}
@@ -1212,8 +1212,8 @@ UBool LegalHebrew::is(const UnicodeString& sourceString)const{
if (sourceString.length() == 0) return true;
// don't worry about surrogates.
for (int i = 0; i < sourceString.length(); ++i) {
- UChar ch = sourceString.charAt(i);
- UChar next = i+1 == sourceString.length() ? 0x0000 : sourceString.charAt(i);
+ char16_t ch = sourceString.charAt(i);
+ char16_t next = i+1 == sourceString.length() ? 0x0000 : sourceString.charAt(i);
if (FINAL.contains(ch)) {
if (LETTER.contains(next)) return false;
} else if (NON_FINAL.contains(ch)) {
@@ -1244,7 +1244,7 @@ void TransliteratorRoundTripTest::TestCyrillic() {
Legal *legal = new Legal();
test.test(UnicodeString("[a-zA-Z\\u0110\\u0111\\u02BA\\u02B9]", ""),
- UnicodeString("[[\\u0400-\\u045F] & [:Age=3.2:]]", ""), NULL, this, quick,
+ UnicodeString("[[\\u0400-\\u045F] & [:Age=3.2:]]", ""), nullptr, this, quick,
legal);
delete legal;
@@ -1329,7 +1329,7 @@ void TransliteratorRoundTripTest::TestDevanagariLatin() {
UErrorCode status = U_ZERO_ERROR;
UParseError parseError;
TransliteratorPointer t1(Transliterator::createInstance("[\\u0964-\\u0965\\u0981-\\u0983\\u0985-\\u098C\\u098F-\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC\\u09BE-\\u09C4\\u09C7-\\u09C8\\u09CB-\\u09CD\\u09D7\\u09DC-\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09FA];NFD;Bengali-InterIndic;InterIndic-Gujarati;NFC;",UTRANS_FORWARD, parseError, status));
- if((Transliterator *)t1 != NULL){
+ if(t1 != nullptr){
TransliteratorPointer t2(t1->createInverse(status));
if(U_FAILURE(status)){
errln("FAIL: could not create the Inverse:-( \n");
@@ -1587,13 +1587,13 @@ static const char * const interIndicArray[] = {
"[\\u0BF0\\u0BF1\\u0BF2]" /*roundtrip exclusions*/,
"Latin-Telugu",latinForIndic, "[:Telugu:]",
- NULL /*roundtrip exclusions*/,
+ nullptr /*roundtrip exclusions*/,
"Latin-Kannada",latinForIndic, "[:Kannada:]",
- NULL /*roundtrip exclusions*/,
+ nullptr /*roundtrip exclusions*/,
"Latin-Malayalam",latinForIndic, "[:Malayalam:]",
- NULL /*roundtrip exclusions*/
+ nullptr /*roundtrip exclusions*/
};
void TransliteratorRoundTripTest::TestDebug(const char* name,const char fromSet[],
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/transrt.h b/Build/source/libs/icu/icu-src/source/test/intltest/transrt.h
index 26444c0d5bc..66d88c7f784 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/transrt.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/transrt.h
@@ -26,22 +26,22 @@
class TransliteratorRoundTripTest : public IntlTest {
void runIndexedTest(int32_t index, UBool exec, const char* &name,
- char* par=NULL) override;
-
- void TestKana(void);
- void TestHiragana(void);
- void TestKatakana(void);
- void TestJamo(void);
- void TestHangul(void);
- void TestHan(void);
- void TestGreek(void);
- void TestGreekUNGEGN(void);
- void Testel(void);
- void TestCyrillic(void);
- void TestDevanagariLatin(void);
- void TestInterIndic(void);
- void TestHebrew(void);
- void TestArabic(void);
+ char* par=nullptr) override;
+
+ void TestKana();
+ void TestHiragana();
+ void TestKatakana();
+ void TestJamo();
+ void TestHangul();
+ void TestHan();
+ void TestGreek();
+ void TestGreekUNGEGN();
+ void Testel();
+ void TestCyrillic();
+ void TestDevanagariLatin();
+ void TestInterIndic();
+ void TestHebrew();
+ void TestArabic();
void TestDebug(const char* name,const char fromSet[],
const char* toSet,const char* exclusions);
};
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/transtst.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/transtst.cpp
index 4a2f2177f86..33341ac1e18 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/transtst.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/transtst.cpp
@@ -91,10 +91,10 @@ The Management
// Define character constants thusly to be EBCDIC-friendly
enum {
- LEFT_BRACE=((UChar)0x007B), /*{*/
- PIPE =((UChar)0x007C), /*|*/
- ZERO =((UChar)0x0030), /*0*/
- UPPER_A =((UChar)0x0041) /*A*/
+ LEFT_BRACE=((char16_t)0x007B), /*{*/
+ PIPE =((char16_t)0x007C), /*|*/
+ ZERO =((char16_t)0x0030), /*0*/
+ UPPER_A =((char16_t)0x0041) /*A*/
};
TransliteratorTest::TransliteratorTest()
@@ -212,7 +212,7 @@ void TransliteratorTest::TestInstantiation() {
UErrorCode ec = U_ZERO_ERROR;
StringEnumeration* avail = Transliterator::getAvailableIDs(ec);
assertSuccess("getAvailableIDs()", ec);
- assertTrue("getAvailableIDs()!=NULL", avail!=NULL);
+ assertTrue("getAvailableIDs()!=nullptr", avail!=nullptr);
int32_t n = Transliterator::countAvailableIDs();
assertTrue("getAvailableIDs().count()==countAvailableIDs()",
avail->count(ec) == n);
@@ -221,7 +221,7 @@ void TransliteratorTest::TestInstantiation() {
for (int32_t i=0; i<n; ++i) {
const UnicodeString& id = *avail->snext(ec);
if (!assertSuccess("snext()", ec) ||
- !assertTrue("snext()!=NULL", (&id)!=NULL, true)) {
+ !assertTrue("snext()!=nullptr", (&id)!=nullptr, true)) {
break;
}
UnicodeString id2 = Transliterator::getAvailableID(i);
@@ -284,7 +284,7 @@ void TransliteratorTest::TestInstantiation() {
delete t;
}
}
- assertTrue("snext()==NULL", avail->snext(ec)==NULL);
+ assertTrue("snext()==nullptr", avail->snext(ec)==nullptr);
assertSuccess("snext()", ec);
delete avail;
@@ -301,7 +301,7 @@ void TransliteratorTest::TestInstantiation() {
}
}
-void TransliteratorTest::TestSimpleRules(void) {
+void TransliteratorTest::TestSimpleRules() {
/* Example: rules 1. ab>x|y
* 2. yc>z
*
@@ -339,7 +339,7 @@ void TransliteratorTest::TestSimpleRules(void) {
UParseError parseError;
Transliterator *t = Transliterator::createFromRules(
"<ID>",
- UnicodeString("$dummy=").append((UChar)0xE100) +
+ UnicodeString("$dummy=").append((char16_t)0xE100) +
UnicodeString(";"
"$vowel=[aeiouAEIOU];"
"$lu=[:Lu:];"
@@ -361,7 +361,7 @@ void TransliteratorTest::TestSimpleRules(void) {
/**
* Test inline set syntax and set variable syntax.
*/
-void TransliteratorTest::TestInlineSet(void) {
+void TransliteratorTest::TestInlineSet() {
expect("{ [:Ll:] } x > y; [:Ll:] > z;", "aAbxq", "zAyzz");
expect("a[0-9]b > qrs", "1a7b9", "1qrs9");
@@ -384,7 +384,7 @@ void TransliteratorTest::TestInlineSet(void) {
* F' != I. However, if we are careful about the input, we will
* get the expected results.
*/
-void TransliteratorTest::TestRuleBasedInverse(void) {
+void TransliteratorTest::TestRuleBasedInverse() {
UnicodeString RULES =
UnicodeString("abc>zyx;") +
"ab>yz;" +
@@ -436,7 +436,7 @@ void TransliteratorTest::TestRuleBasedInverse(void) {
/**
* Basic test of keyboard.
*/
-void TransliteratorTest::TestKeyboard(void) {
+void TransliteratorTest::TestKeyboard() {
UParseError parseError;
UErrorCode status = U_ZERO_ERROR;
Transliterator *t = Transliterator::createFromRules("<ID>",
@@ -468,7 +468,7 @@ void TransliteratorTest::TestKeyboard(void) {
/**
* Basic test of keyboard with cursor.
*/
-void TransliteratorTest::TestKeyboard2(void) {
+void TransliteratorTest::TestKeyboard2() {
UParseError parseError;
UErrorCode status = U_ZERO_ERROR;
Transliterator *t = Transliterator::createFromRules("<ID>",
@@ -503,7 +503,7 @@ void TransliteratorTest::TestKeyboard2(void) {
/**
* Test keyboard transliteration with back-replacement.
*/
-void TransliteratorTest::TestKeyboard3(void) {
+void TransliteratorTest::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.
@@ -556,9 +556,9 @@ void TransliteratorTest::keyboardAux(const Transliterator& t,
s.extractBetween(index.contextStart, index.start, b);
s.extractBetween(index.start, s.length(), c);
log.append(a).
- append((UChar)LEFT_BRACE).
+ append((char16_t)LEFT_BRACE).
append(b).
- append((UChar)PIPE).
+ append((char16_t)PIPE).
append(c);
if (s == DATA[i+1] && U_SUCCESS(status)) {
logln(log);
@@ -568,7 +568,7 @@ void TransliteratorTest::keyboardAux(const Transliterator& t,
}
}
-void TransliteratorTest::TestArabic(void) {
+void TransliteratorTest::TestArabic() {
// Test disabled for 2.0 until new Arabic transliterator can be written.
// /*
// const char* DATA[] = {
@@ -581,7 +581,7 @@ void TransliteratorTest::TestArabic(void) {
// };
// */
//
-// UChar ar_raw[] = {
+// char16_t ar_raw[] = {
// 0x062a, 0x062a, 0x0645, 0x062a, 0x0639, 0x0020, 0x0627,
// 0x0644, 0x0644, 0x063a, 0x0629, 0x0020, 0x0627, 0x0644,
// 0x0639, 0x0631, 0x0628, 0x0628, 0x064a, 0x0629, 0x0020,
@@ -605,7 +605,7 @@ void TransliteratorTest::TestArabic(void) {
* Compose the Kana transliterator forward and reverse and try
* some strings that should come out unchanged.
*/
-void TransliteratorTest::TestCompoundKana(void) {
+void TransliteratorTest::TestCompoundKana() {
UParseError parseError;
UErrorCode status = U_ZERO_ERROR;
Transliterator* t = Transliterator::createInstance("Latin-Hiragana;Hiragana-Latin", UTRANS_FORWARD, parseError, status);
@@ -620,7 +620,7 @@ void TransliteratorTest::TestCompoundKana(void) {
/**
* Compose the hex transliterators forward and reverse.
*/
-void TransliteratorTest::TestCompoundHex(void) {
+void TransliteratorTest::TestCompoundHex() {
UParseError parseError;
UErrorCode status = U_ZERO_ERROR;
Transliterator* a = Transliterator::createInstance("Any-Hex", UTRANS_FORWARD, parseError, status);
@@ -662,7 +662,7 @@ class TestFilter : public UnicodeFilter {
return new TestFilter(*this);
}
virtual UBool contains(UChar32 c) const override {
- return c != (UChar)0x0063 /*c*/;
+ return c != (char16_t)0x0063 /*c*/;
}
// Stubs
virtual UnicodeString& toPattern(UnicodeString& result,
@@ -680,7 +680,7 @@ public:
/**
* Do some basic tests of filtering.
*/
-void TransliteratorTest::TestFiltering(void) {
+void TransliteratorTest::TestFiltering() {
UParseError parseError;
UErrorCode status = U_ZERO_ERROR;
Transliterator* hex = Transliterator::createInstance("Any-Hex", UTRANS_FORWARD, parseError, status);
@@ -700,7 +700,7 @@ void TransliteratorTest::TestFiltering(void) {
// ICU4C ONLY. Do not find Transliterator.orphanFilter() in ICU4J.
UnicodeFilter *f = hex->orphanFilter();
- if (f == NULL){
+ if (f == nullptr){
errln("FAIL: orphanFilter() should get a UnicodeFilter");
} else {
delete f;
@@ -711,7 +711,7 @@ void TransliteratorTest::TestFiltering(void) {
/**
* Test anchors
*/
-void TransliteratorTest::TestAnchors(void) {
+void TransliteratorTest::TestAnchors() {
expect(UnicodeString("^a > 0; a$ > 2 ; a > 1;", ""),
"aaa",
"012");
@@ -740,12 +740,12 @@ void TransliteratorTest::TestAnchors(void) {
/**
* Test pattern quoting and escape mechanisms.
*/
-void TransliteratorTest::TestPatternQuoting(void) {
+void TransliteratorTest::TestPatternQuoting() {
// Array of 3n items
// Each item is <rules>, <input>, <expected output>
const UnicodeString DATA[] = {
- UnicodeString(UChar(0x4E01)) + ">'[male adult]'",
- UnicodeString(UChar(0x4E01)),
+ UnicodeString(char16_t(0x4E01)) + ">'[male adult]'",
+ UnicodeString(char16_t(0x4E01)),
"[male adult]"
};
@@ -766,23 +766,23 @@ void TransliteratorTest::TestPatternQuoting(void) {
/**
* Regression test for bugs found in Greek transliteration.
*/
-void TransliteratorTest::TestJ277(void) {
+void TransliteratorTest::TestJ277() {
UErrorCode status = U_ZERO_ERROR;
UParseError parseError;
Transliterator *gl = Transliterator::createInstance("Greek-Latin; NFD; [:M:]Remove; NFC", UTRANS_FORWARD, parseError, status);
- if (gl == NULL) {
- dataerrln("FAIL: createInstance(Greek-Latin) returned NULL - %s", u_errorName(status));
+ if (gl == nullptr) {
+ dataerrln("FAIL: createInstance(Greek-Latin) returned nullptr - %s", u_errorName(status));
return;
}
- UChar sigma = 0x3C3;
- UChar upsilon = 0x3C5;
- UChar nu = 0x3BD;
-// UChar PHI = 0x3A6;
- UChar alpha = 0x3B1;
-// UChar omega = 0x3C9;
-// UChar omicron = 0x3BF;
-// UChar epsilon = 0x3B5;
+ char16_t sigma = 0x3C3;
+ char16_t upsilon = 0x3C5;
+ char16_t nu = 0x3BD;
+// char16_t PHI = 0x3A6;
+ char16_t alpha = 0x3B1;
+// char16_t omega = 0x3C9;
+// char16_t omicron = 0x3BF;
+// char16_t epsilon = 0x3B5;
// sigma upsilon nu -> syn
UnicodeString syn;
@@ -812,7 +812,7 @@ void TransliteratorTest::TestJ277(void) {
expect(*mini, syn, "syn");
expect(*mini, sayn, "saun");
delete mini;
- mini = NULL;
+ mini = nullptr;
#if !UCONFIG_NO_FORMATTING
// Transliterate the Greek locale data
@@ -848,7 +848,7 @@ void TransliteratorTest::TestJ277(void) {
/**
* Prefix, suffix support in hex transliterators
*/
-void TransliteratorTest::TestJ243(void) {
+void TransliteratorTest::TestJ243() {
UErrorCode ec = U_ZERO_ERROR;
// Test default Hex-Any, which should handle
@@ -875,7 +875,7 @@ void TransliteratorTest::TestJ243(void) {
/**
* Parsers need better syntax error messages.
*/
-void TransliteratorTest::TestJ329(void) {
+void TransliteratorTest::TestJ329() {
struct { UBool containsErrors; const char* rule; } DATA[] = {
{ false, "a > b; c > d" },
@@ -912,7 +912,7 @@ void TransliteratorTest::TestJ329(void) {
/**
* Test segments and segment references.
*/
-void TransliteratorTest::TestSegments(void) {
+void TransliteratorTest::TestSegments() {
// Array of 3n items
// Each item is <rules>, <input>, <expected output>
UnicodeString DATA[] = {
@@ -944,7 +944,7 @@ void TransliteratorTest::TestSegments(void) {
/**
* Test cursor positioning outside of the key
*/
-void TransliteratorTest::TestCursorOffset(void) {
+void TransliteratorTest::TestCursorOffset() {
// Array of 3n items
// Each item is <rules>, <input>, <expected output>
UnicodeString DATA[] = {
@@ -977,7 +977,7 @@ void TransliteratorTest::TestCursorOffset(void) {
* Test zero length and > 1 char length variable values. Test
* use of variable refs in UnicodeSets.
*/
-void TransliteratorTest::TestArbitraryVariableValues(void) {
+void TransliteratorTest::TestArbitraryVariableValues() {
// Array of 3n items
// Each item is <rules>, <input>, <expected output>
UnicodeString DATA[] = {
@@ -1018,7 +1018,7 @@ void TransliteratorTest::TestArbitraryVariableValues(void) {
* Confirm that the contextStart, contextLimit, start, and limit
* behave correctly. J474.
*/
-void TransliteratorTest::TestPositionHandling(void) {
+void TransliteratorTest::TestPositionHandling() {
// Array of 3n items
// Each item is <rules>, <input>, <expected output>
const char* DATA[] = {
@@ -1078,7 +1078,7 @@ void TransliteratorTest::TestPositionHandling(void) {
/**
* Test the Hiragana-Katakana transliterator.
*/
-void TransliteratorTest::TestHiraganaKatakana(void) {
+void TransliteratorTest::TestHiraganaKatakana() {
UParseError parseError;
UErrorCode status = U_ZERO_ERROR;
Transliterator* hk = Transliterator::createInstance("Hiragana-Katakana", UTRANS_FORWARD, parseError, status);
@@ -1126,7 +1126,7 @@ void TransliteratorTest::TestHiraganaKatakana(void) {
/**
* Test cloning / copy constructor of RBT.
*/
-void TransliteratorTest::TestCopyJ476(void) {
+void TransliteratorTest::TestCopyJ476() {
// The real test here is what happens when the destructors are
// called. So we let one object get destructed, and check to
// see that its copy still works.
@@ -1152,13 +1152,13 @@ void TransliteratorTest::TestCopyJ476(void) {
* Test inter-Indic transliterators. These are composed.
* ICU4C Jitterbug 483.
*/
-void TransliteratorTest::TestInterIndic(void) {
+void TransliteratorTest::TestInterIndic() {
UnicodeString ID("Devanagari-Gujarati", "");
UErrorCode status = U_ZERO_ERROR;
UParseError parseError;
Transliterator* dg = Transliterator::createInstance(ID, UTRANS_FORWARD, parseError, status);
if (dg == 0) {
- dataerrln("FAIL: createInstance(" + ID + ") returned NULL - " + u_errorName(status));
+ dataerrln("FAIL: createInstance(" + ID + ") returned nullptr - " + u_errorName(status));
return;
}
UnicodeString id = dg->getID();
@@ -1174,7 +1174,7 @@ void TransliteratorTest::TestInterIndic(void) {
/**
* Test filter syntax in IDs. (J918)
*/
-void TransliteratorTest::TestFilterIDs(void) {
+void TransliteratorTest::TestFilterIDs() {
// Array of 3n strings:
// <id>, <inverse id>, <input>, <expected output>
const char* DATA[] = {
@@ -1204,7 +1204,7 @@ void TransliteratorTest::TestFilterIDs(void) {
UErrorCode status = U_ZERO_ERROR;
Transliterator *t = Transliterator::createInstance(ID, UTRANS_FORWARD, parseError, status);
if (t == 0) {
- errln("FAIL: createInstance(" + ID + ") returned NULL");
+ errln("FAIL: createInstance(" + ID + ") returned nullptr");
return;
}
expect(*t, data2, data3);
@@ -1218,7 +1218,7 @@ void TransliteratorTest::TestFilterIDs(void) {
// Check the inverse
Transliterator *u = t->createInverse(status);
if (u == 0) {
- errln("FAIL: " + ID + ".createInverse() returned NULL");
+ errln("FAIL: " + ID + ".createInverse() returned nullptr");
} else if (u->getID() != uID) {
errln("FAIL: " + ID + ".createInverse().getID() => " +
u->getID() + ", expected " + uID);
@@ -1232,7 +1232,7 @@ void TransliteratorTest::TestFilterIDs(void) {
/**
* Test the case mapping transliterators.
*/
-void TransliteratorTest::TestCaseMap(void) {
+void TransliteratorTest::TestCaseMap() {
UParseError parseError;
UErrorCode status = U_ZERO_ERROR;
Transliterator* toUpper =
@@ -1242,7 +1242,7 @@ void TransliteratorTest::TestCaseMap(void) {
Transliterator* toTitle =
Transliterator::createInstance("Any-Title[^xyzXYZ]", UTRANS_FORWARD, parseError, status);
if (toUpper==0 || toLower==0 || toTitle==0) {
- errln("FAIL: createInstance returned NULL");
+ errln("FAIL: createInstance returned nullptr");
delete toUpper;
delete toLower;
delete toTitle;
@@ -1264,7 +1264,7 @@ void TransliteratorTest::TestCaseMap(void) {
/**
* Test the name mapping transliterators.
*/
-void TransliteratorTest::TestNameMap(void) {
+void TransliteratorTest::TestNameMap() {
UParseError parseError;
UErrorCode status = U_ZERO_ERROR;
Transliterator* uni2name =
@@ -1272,7 +1272,7 @@ void TransliteratorTest::TestNameMap(void) {
Transliterator* name2uni =
Transliterator::createInstance("Name-Any", UTRANS_FORWARD, parseError, status);
if (uni2name==0 || name2uni==0) {
- errln("FAIL: createInstance returned NULL");
+ errln("FAIL: createInstance returned nullptr");
delete uni2name;
delete name2uni;
return;
@@ -1291,7 +1291,7 @@ void TransliteratorTest::TestNameMap(void) {
Transliterator* t =
Transliterator::createInstance("Any-Name;Name-Any", UTRANS_FORWARD, parseError, status);
if (t==0) {
- errln("FAIL: createInstance returned NULL");
+ errln("FAIL: createInstance returned nullptr");
delete t;
return;
}
@@ -1305,17 +1305,17 @@ void TransliteratorTest::TestNameMap(void) {
/**
* Test liberalized ID syntax. 1006c
*/
-void TransliteratorTest::TestLiberalizedID(void) {
- // Some test cases have an expected getID() value of NULL. This
+void TransliteratorTest::TestLiberalizedID() {
+ // Some test cases have an expected getID() value of nullptr. 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]
const char* DATA[] = {
- "latin-greek", NULL /*"Latin-Greek"*/, "case insensitivity",
+ "latin-greek", nullptr /*"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",
+ " null ; latin-greek ", nullptr /*"Null;Latin-Greek"*/, "compound whitespace",
};
const int32_t DATA_length = UPRV_LENGTHOF(DATA);
UParseError parseError;
@@ -1331,7 +1331,7 @@ void TransliteratorTest::TestLiberalizedID(void) {
exp = UnicodeString(DATA[i+1], "");
}
// Don't worry about getID() if the expected char*
- // is NULL -- see above.
+ // is nullptr -- see above.
if (exp.length() == 0 || exp == t->getID()) {
logln(UnicodeString("Ok: ") + DATA[i+2] +
" create ID \"" + DATA[i] + "\" => \"" +
@@ -1364,7 +1364,7 @@ void TransliteratorTest::TestCreateInstance(){
"InvalidSource-InvalidTarget;Hex-Any", FORWARD, "",
"InvalidSource-InvalidTarget;Hex-Any", REVERSE, "",
- NULL
+ nullptr
};
for (int32_t i=0; DATA[i]; i+=3) {
@@ -1590,7 +1590,7 @@ void TransliteratorTest::TestBasicTransliteratorEvenWithoutData() {
/**
* Test compound RBT rules.
*/
-void TransliteratorTest::TestCompoundRBT(void) {
+void TransliteratorTest::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.
@@ -1703,7 +1703,7 @@ void TransliteratorTest::TestCompoundRBT(void) {
* touch 'A' in the original". But because an intermediate result
* happens to go through "A", the Greek Alpha gets hung up.
*/
-void TransliteratorTest::TestCompoundFilter(void) {
+void TransliteratorTest::TestCompoundFilter() {
UParseError parseError;
UErrorCode status = U_ZERO_ERROR;
Transliterator *t = Transliterator::createInstance
@@ -1726,7 +1726,7 @@ void TransliteratorTest::TestCompoundFilter(void) {
delete t;
}
-void TransliteratorTest::TestRemove(void) {
+void TransliteratorTest::TestRemove() {
UParseError parseError;
UErrorCode status = U_ZERO_ERROR;
Transliterator *t = Transliterator::createInstance("Remove[abc]", UTRANS_FORWARD, parseError, status);
@@ -1746,7 +1746,7 @@ void TransliteratorTest::TestRemove(void) {
delete t2;
}
-void TransliteratorTest::TestToRules(void) {
+void TransliteratorTest::TestToRules() {
const char* RBT = "rbt";
const char* SET = "set";
static const char* DATA[] = {
@@ -2026,7 +2026,7 @@ class TestTrans : public Transliterator {
public:
TestTrans(const UnicodeString& id) : Transliterator(id, 0) {
}
- virtual TestTrans* clone(void) const override {
+ virtual TestTrans* clone() const override {
return new TestTrans(getID());
}
virtual void handleTransliterate(Replaceable& /*text*/, UTransPosition& offsets,
@@ -2042,8 +2042,9 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(TestTrans)
/**
* Test Source-Target/Variant.
*/
-void TransliteratorTest::TestSTV(void) {
+void TransliteratorTest::TestSTV() {
int32_t ns = Transliterator::countAvailableSources();
+ logln((UnicodeString)"countAvailableSources at start: " + ns);
if (ns < 0 || ns > 255) {
errln((UnicodeString)"FAIL: Bad source count: " + ns);
return;
@@ -2090,7 +2091,7 @@ void TransliteratorTest::TestSTV(void) {
// Test registration
const char* IDS[] = { "Fieruwer", "Seoridf-Sweorie", "Oewoir-Oweri/Vsie" };
const char* FULL_IDS[] = { "Any-Fieruwer", "Seoridf-Sweorie", "Oewoir-Oweri/Vsie" };
- const char* SOURCES[] = { NULL, "Seoridf", "Oewoir" };
+ const char* SOURCES[] = { nullptr, "Seoridf", "Oewoir" };
for (i=0; i<3; ++i) {
Transliterator *t = new TestTrans(IDS[i]);
if (t == 0) {
@@ -2105,7 +2106,7 @@ void TransliteratorTest::TestSTV(void) {
Transliterator::registerInstance(t);
UErrorCode status = U_ZERO_ERROR;
t = Transliterator::createInstance(IDS[i], UTRANS_FORWARD, status);
- if (t == NULL) {
+ if (t == nullptr) {
errln((UnicodeString)"FAIL: Registration/creation failed for ID " +
IDS[i]);
} else {
@@ -2115,7 +2116,7 @@ void TransliteratorTest::TestSTV(void) {
}
Transliterator::unregister(IDS[i]);
t = Transliterator::createInstance(IDS[i], UTRANS_FORWARD, status);
- if (t != NULL) {
+ if (t != nullptr) {
errln((UnicodeString)"FAIL: Unregistration failed for ID " +
IDS[i]);
delete t;
@@ -2124,6 +2125,7 @@ void TransliteratorTest::TestSTV(void) {
// Make sure getAvailable API reflects removal
int32_t n = Transliterator::countAvailableIDs();
+ logln((UnicodeString)"countAvailableIDs at end: " + n);
for (i=0; i<n; ++i) {
UnicodeString id = Transliterator::getAvailableID(i);
for (j=0; j<3; ++j) {
@@ -2133,6 +2135,7 @@ void TransliteratorTest::TestSTV(void) {
}
}
n = Transliterator::countAvailableTargets("Any");
+ logln((UnicodeString)"countAvailableTargets(\"Any\") at end: " + n);
for (i=0; i<n; ++i) {
UnicodeString t;
Transliterator::getAvailableTarget(i, "Any", t);
@@ -2141,13 +2144,16 @@ void TransliteratorTest::TestSTV(void) {
}
}
n = Transliterator::countAvailableSources();
+ logln((UnicodeString)"countAvailableSources at end: " + n);
for (i=0; i<n; ++i) {
UnicodeString s;
Transliterator::getAvailableSource(i, s);
for (j=0; j<3; ++j) {
- if (SOURCES[j] == NULL) continue;
+ if (SOURCES[j] == nullptr) continue;
if (s.caseCompare(SOURCES[j],0)==0) {
- errln((UnicodeString)"FAIL: unregister(" + s + "-*) failed");
+ if (j!=2 || !logKnownIssue("21911", "ICU4C cannot create inverse of (or unregister) Any-Xxxx/Variant transform created from both-direction transform")) {
+ errln((UnicodeString)"FAIL: unregister(" + s + "-*) failed");
+ }
}
}
}
@@ -2156,7 +2162,7 @@ void TransliteratorTest::TestSTV(void) {
/**
* Test inverse of Greek-Latin; Title()
*/
-void TransliteratorTest::TestCompoundInverse(void) {
+void TransliteratorTest::TestCompoundInverse() {
UParseError parseError;
UErrorCode status = U_ZERO_ERROR;
Transliterator *t = Transliterator::createInstance
@@ -2185,7 +2191,7 @@ void TransliteratorTest::TestNFDChainRBT() {
Transliterator* t = Transliterator::createFromRules(
"TEST", "::NFD; aa > Q; a > q;",
UTRANS_FORWARD, pe, ec);
- if (t == NULL || U_FAILURE(ec)) {
+ if (t == nullptr || U_FAILURE(ec)) {
dataerrln("FAIL: Transliterator::createFromRules failed with %s", u_errorName(ec));
return;
}
@@ -2389,7 +2395,7 @@ void TransliteratorTest::TestEmptyContext() {
/**
* Test compound filter ID syntax
*/
-void TransliteratorTest::TestCompoundFilterID(void) {
+void TransliteratorTest::TestCompoundFilterID() {
static const char* DATA[] = {
// Col. 1 = ID or rule set (latter must start with #)
@@ -2399,26 +2405,26 @@ void TransliteratorTest::TestCompoundFilterID(void) {
// Col. 3 = source string
// Col. 4 = exp result
- "[abc]; [abc]", NULL, NULL, NULL, // multiple filters
- "Latin-Greek; [abc];", NULL, NULL, NULL, // misplaced filter
+ "[abc]; [abc]", nullptr, nullptr, nullptr, // multiple filters
+ "Latin-Greek; [abc];", nullptr, nullptr, nullptr, // 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",
- NULL,
+ nullptr,
};
for (int32_t i=0; DATA[i]; i+=4) {
UnicodeString id = CharsToUnicodeString(DATA[i]);
- UTransDirection direction = (DATA[i+1] != NULL && DATA[i+1][0] == 'R') ?
+ UTransDirection direction = (DATA[i+1] != nullptr && DATA[i+1][0] == 'R') ?
UTRANS_REVERSE : UTRANS_FORWARD;
UnicodeString source;
UnicodeString exp;
- if (DATA[i+2] != NULL) {
+ if (DATA[i+2] != nullptr) {
source = CharsToUnicodeString(DATA[i+2]);
exp = CharsToUnicodeString(DATA[i+3]);
}
- UBool expOk = (DATA[i+1] != NULL);
+ UBool expOk = (DATA[i+1] != nullptr);
LocalPointer<Transliterator> t;
UParseError pe;
UErrorCode ec = U_ZERO_ERROR;
@@ -2433,7 +2439,7 @@ void TransliteratorTest::TestCompoundFilterID(void) {
transID = t->getID();
}
else {
- transID = UnicodeString("NULL", "");
+ transID = UnicodeString("nullptr", "");
}
if (ok == expOk) {
logln((UnicodeString)"Ok: " + id + " => " + transID + ", " +
@@ -2543,7 +2549,7 @@ void TransliteratorTest::TestNewEngine() {
* Test quantified segment behavior. We want:
* ([abc])+ > x $1 x; applied to "cba" produces "xax"
*/
-void TransliteratorTest::TestQuantifiedSegment(void) {
+void TransliteratorTest::TestQuantifiedSegment() {
// The normal case
expect("([abc]+) > x $1 x;", "cba", "xcbax");
@@ -2945,16 +2951,16 @@ void TransliteratorTest::TestGurmukhiDevanagari(){
expected= expected.unescape();
while(vIter.next()){
- src.setCharAt(0,(UChar) vIter.getCodepoint());
- expected.setCharAt(0,(UChar) (vIter.getCodepoint()+0x0100));
+ src.setCharAt(0,(char16_t) vIter.getCodepoint());
+ expected.setCharAt(0,(char16_t) (vIter.getCodepoint()+0x0100));
expect(*trans,src,expected);
}
expected.setCharAt(1,0x0A70);
while(nvIter.next()){
//src.setCharAt(0,(char) nvIter.codepoint);
- src.setCharAt(0,(UChar)nvIter.getCodepoint());
- expected.setCharAt(0,(UChar) (nvIter.getCodepoint()+0x0100));
+ src.setCharAt(0,(char16_t)nvIter.getCodepoint());
+ expected.setCharAt(0,(char16_t) (nvIter.getCodepoint()+0x0100));
expect(*trans,src,expected);
}
delete trans;
@@ -2962,7 +2968,7 @@ void TransliteratorTest::TestGurmukhiDevanagari(){
/**
* Test instantiation from a locale.
*/
-void TransliteratorTest::TestLocaleInstantiation(void) {
+void TransliteratorTest::TestLocaleInstantiation() {
UParseError pe;
UErrorCode ec = U_ZERO_ERROR;
Transliterator *t = Transliterator::createInstance("ru_RU-Latin", UTRANS_FORWARD, pe, ec);
@@ -2987,7 +2993,7 @@ void TransliteratorTest::TestLocaleInstantiation(void) {
/**
* Test title case handling of accent (should ignore accents)
*/
-void TransliteratorTest::TestTitleAccents(void) {
+void TransliteratorTest::TestTitleAccents() {
UParseError pe;
UErrorCode ec = U_ZERO_ERROR;
Transliterator *t = Transliterator::createInstance("Title", UTRANS_FORWARD, pe, ec);
@@ -3043,7 +3049,7 @@ void TransliteratorTest::TestParseError() {
delete t;
if (U_FAILURE(ec)) {
UnicodeString err(pe.preContext);
- err.append((UChar)124/*|*/).append(pe.postContext);
+ err.append((char16_t)124/*|*/).append(pe.postContext);
if (err.indexOf("d << b") >= 0) {
logln("Ok: " + err);
} else {
@@ -3081,7 +3087,7 @@ void TransliteratorTest::TestOutputSet() {
delete t;
if (U_FAILURE(ec)) {
UnicodeString err(pe.preContext);
- err.append((UChar)124/*|*/).append(pe.postContext);
+ err.append((char16_t)124/*|*/).append(pe.postContext);
logln("Ok: " + err);
return;
}
@@ -3100,7 +3106,7 @@ void TransliteratorTest::TestVariableRange() {
delete t;
if (U_FAILURE(ec)) {
UnicodeString err(pe.preContext);
- err.append((UChar)124/*|*/).append(pe.postContext);
+ err.append((char16_t)124/*|*/).append(pe.postContext);
logln("Ok: " + err);
return;
}
@@ -3118,7 +3124,7 @@ void TransliteratorTest::TestInvalidPostContext() {
delete t;
if (U_FAILURE(ec)) {
UnicodeString err(pe.preContext);
- err.append((UChar)124/*|*/).append(pe.postContext);
+ err.append((char16_t)124/*|*/).append(pe.postContext);
if (err.indexOf("a}b{c") >= 0) {
logln("Ok: " + err);
} else {
@@ -3134,24 +3140,24 @@ void TransliteratorTest::TestInvalidPostContext() {
*/
void TransliteratorTest::TestIDForms() {
const char* DATA[] = {
- "NFC", NULL, "NFD",
- "nfd", NULL, "NFC", // make sure case is ignored
- "Any-NFKD", NULL, "Any-NFKC",
- "Null", NULL, "Null",
+ "NFC", nullptr, "NFD",
+ "nfd", nullptr, "NFC", // make sure case is ignored
+ "Any-NFKD", nullptr, "Any-NFKC",
+ "Null", nullptr, "Null",
"-nfkc", "nfkc", "NFKD",
"-nfkc/", "nfkc", "NFKD",
- "Latin-Greek/UNGEGN", NULL, "Greek-Latin/UNGEGN",
+ "Latin-Greek/UNGEGN", nullptr, "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,
+ "Source-", nullptr, nullptr,
+ "Source/Variant-", nullptr, nullptr,
+ "Source-/Variant", nullptr, nullptr,
+ "/Variant", nullptr, nullptr,
+ "/Variant-", nullptr, nullptr,
+ "-/Variant", nullptr, nullptr,
+ "-/", nullptr, nullptr,
+ "-", nullptr, nullptr,
+ "/", nullptr, nullptr,
};
const int32_t DATA_length = UPRV_LENGTHOF(DATA);
@@ -3159,8 +3165,8 @@ void TransliteratorTest::TestIDForms() {
const char* ID = DATA[i];
const char* expID = DATA[i+1];
const char* expInvID = DATA[i+2];
- UBool expValid = (expInvID != NULL);
- if (expID == NULL) {
+ UBool expValid = (expInvID != nullptr);
+ if (expID == nullptr) {
expID = ID;
}
UParseError pe;
@@ -3196,10 +3202,10 @@ void TransliteratorTest::TestIDForms() {
}
}
-static const UChar SPACE[] = {32,0};
-static const UChar NEWLINE[] = {10,0};
-static const UChar RETURN[] = {13,0};
-static const UChar EMPTY[] = {0};
+static const char16_t SPACE[] = {32,0};
+static const char16_t NEWLINE[] = {10,0};
+static const char16_t RETURN[] = {13,0};
+static const char16_t EMPTY[] = {0};
void TransliteratorTest::checkRules(const UnicodeString& label, Transliterator& t2,
const UnicodeString& testRulesForward) {
@@ -3399,7 +3405,7 @@ void TransliteratorTest::TestDisplayName() {
#endif
}
-void TransliteratorTest::TestSpecialCases(void) {
+void TransliteratorTest::TestSpecialCases() {
const UnicodeString registerRules[] = {
"Any-Dev1", "x > X; y > Y;",
"Any-Dev2", "XY > Z",
@@ -3523,28 +3529,28 @@ void TransliteratorTest::TestSpecialCases(void) {
}
}
-char* Char32ToEscapedChars(UChar32 ch, char* buffer) {
+char* Char32ToEscapedChars(UChar32 ch, char* buffer, size_t n) {
if (ch <= 0xFFFF) {
- sprintf(buffer, "\\u%04x", (int)ch);
+ snprintf(buffer, n, "\\u%04x", (int)ch);
} else {
- sprintf(buffer, "\\U%08x", (int)ch);
+ snprintf(buffer, n, "\\U%08x", (int)ch);
}
return buffer;
}
-void TransliteratorTest::TestSurrogateCasing (void) {
+void TransliteratorTest::TestSurrogateCasing() {
// check that casing handles surrogates
// titlecase is currently defective
char buffer[20];
- UChar buffer2[20];
+ char16_t buffer2[20];
UChar32 dee;
U16_GET(DESERET_dee,0, 0, DESERET_dee.length(), dee);
UnicodeString DEE(u_totitle(dee));
if (DEE != DESERET_DEE) {
err("Fails titlecase of surrogates");
- err(Char32ToEscapedChars(dee, buffer));
+ err(Char32ToEscapedChars(dee, buffer, sizeof(buffer)));
err(", ");
- errln(Char32ToEscapedChars(DEE.char32At(0), buffer));
+ errln(Char32ToEscapedChars(DEE.char32At(0), buffer, sizeof(buffer)));
}
UnicodeString deeDEETest=DESERET_dee + DESERET_DEE;
@@ -3552,13 +3558,13 @@ void TransliteratorTest::TestSurrogateCasing (void) {
UnicodeString DEEDEETest = DESERET_DEE + DESERET_DEE;
UErrorCode status= U_ZERO_ERROR;
- u_strToUpper(buffer2, 20, deeDEETest.getBuffer(), deeDEETest.length(), NULL, &status);
+ u_strToUpper(buffer2, 20, deeDEETest.getBuffer(), deeDEETest.length(), nullptr, &status);
if (U_FAILURE(status) || (UnicodeString(buffer2)!= DEEDEETest)) {
errln("Fails: Can't uppercase surrogates.");
}
status= U_ZERO_ERROR;
- u_strToLower(buffer2, 20, deeDEETest.getBuffer(), deeDEETest.length(), NULL, &status);
+ u_strToLower(buffer2, 20, deeDEETest.getBuffer(), deeDEETest.length(), nullptr, &status);
if (U_FAILURE(status) || (UnicodeString(buffer2)!= deedeeTest)) {
errln("Fails: Can't lowercase surrogates.");
}
@@ -3593,7 +3599,7 @@ static UnicodeString _findMatch(const UnicodeString& source,
// Check to see that incremental gets at least part way through a reasonable string.
-void TransliteratorTest::TestIncrementalProgress(void) {
+void TransliteratorTest::TestIncrementalProgress() {
UErrorCode ec = U_ZERO_ERROR;
UnicodeString latinTest = "The Quick Brown Fox.";
UnicodeString devaTest;
@@ -3655,6 +3661,7 @@ void TransliteratorTest::TestIncrementalProgress(void) {
// 2. Any-*/BGN
// 2a. Any-*/BGN_1981
// 3. Any-*/MNS
+ // 3a. Any-*/Geminate[d]
//
// 4. If UCONFIG_NO_BREAK_ITERATION is on, Latin-Thai is also not expected to work.
//
@@ -3672,7 +3679,8 @@ void TransliteratorTest::TestIncrementalProgress(void) {
//
if ( id.compare((UnicodeString)"Devanagari-Arabic/") != 0
&& !(id.startsWith((UnicodeString)"Any-") &&
- (id.endsWith((UnicodeString)"/BGN") || id.endsWith((UnicodeString)"/BGN_1981") || id.endsWith((UnicodeString)"/MNS"))
+ (id.endsWith((UnicodeString)"/BGN") || id.endsWith((UnicodeString)"/BGN_1981") || id.endsWith((UnicodeString)"/MNS") ||
+ id.endsWith((UnicodeString)"/Geminate") || id.endsWith((UnicodeString)"/Geminated"))
)
#if UCONFIG_NO_BREAK_ITERATION
&& id.compare((UnicodeString)"Latin-Thai/") != 0
@@ -3746,7 +3754,7 @@ void TransliteratorTest::TestFunction() {
UParseError pe;
UErrorCode ec = U_ZERO_ERROR;
Transliterator *t = Transliterator::createFromRules("Test", rule, UTRANS_FORWARD, pe, ec);
- if (t == NULL) {
+ if (t == nullptr) {
dataerrln("FAIL: createFromRules failed - %s", u_errorName(ec));
return;
}
@@ -3766,7 +3774,7 @@ void TransliteratorTest::TestFunction() {
delete t;
}
-void TransliteratorTest::TestInvalidBackRef(void) {
+void TransliteratorTest::TestInvalidBackRef() {
UnicodeString rule = ". > $1;";
UnicodeString rule2 =CharsToUnicodeString("(.) <> &hex/unicode($1) &name($1); . > $1; [{}] >\\u0020;");
UParseError pe;
@@ -3774,13 +3782,13 @@ void TransliteratorTest::TestInvalidBackRef(void) {
Transliterator *t = Transliterator::createFromRules("Test", rule, UTRANS_FORWARD, pe, ec);
Transliterator *t2 = Transliterator::createFromRules("Test2", rule2, UTRANS_FORWARD, pe, ec);
- if (t != NULL) {
- errln("FAIL: createFromRules should have returned NULL");
+ if (t != nullptr) {
+ errln("FAIL: createFromRules should have returned nullptr");
delete t;
}
- if (t2 != NULL) {
- errln("FAIL: createFromRules should have returned NULL");
+ if (t2 != nullptr) {
+ errln("FAIL: createFromRules should have returned nullptr");
delete t2;
}
@@ -3803,7 +3811,7 @@ void TransliteratorTest::TestMulticharStringSet() {
UParseError pe;
UErrorCode ec = U_ZERO_ERROR;
Transliterator* t = Transliterator::createFromRules("Test", rule, UTRANS_FORWARD, pe, ec);
- if (t == NULL || U_FAILURE(ec)) {
+ if (t == nullptr || U_FAILURE(ec)) {
delete t;
errln("FAIL: createFromRules failed");
return;
@@ -3822,7 +3830,7 @@ void TransliteratorTest::TestMulticharStringSet() {
" q [t {st} {rst}] { e > p;" ;
t = Transliterator::createFromRules("Test", rule, UTRANS_FORWARD, pe, ec);
- if (t == NULL || U_FAILURE(ec)) {
+ if (t == nullptr || U_FAILURE(ec)) {
delete t;
errln("FAIL: createFromRules failed");
return;
@@ -3851,7 +3859,7 @@ static void _TUFReg(const UnicodeString& ID, Transliterator* t, int32_t n) {
}
static void _TUFUnreg(int32_t n) {
- if (_TUFF[n] != NULL) {
+ if (_TUFF[n] != nullptr) {
Transliterator::unregister(*_TUFID[n]);
delete _TUFF[n];
delete _TUFID[n];
@@ -3874,14 +3882,14 @@ void TransliteratorTest::TestUserFunction() {
// Setup our factory
int32_t i;
for (i=0; i<4; ++i) {
- _TUFF[i] = NULL;
+ _TUFF[i] = nullptr;
}
// There's no need to register inverses if we don't use them
t = Transliterator::createFromRules("gif",
UNICODE_STRING_SIMPLE("'\\'u(..)(..) > '<img src=\"http://www.unicode.org/gifs/24/' $1 '/U' $1$2 '.gif\">';"),
UTRANS_FORWARD, pe, ec);
- if (t == NULL || U_FAILURE(ec)) {
+ if (t == nullptr || U_FAILURE(ec)) {
dataerrln((UnicodeString)"FAIL: createFromRules gif " + u_errorName(ec));
return;
}
@@ -3890,7 +3898,7 @@ void TransliteratorTest::TestUserFunction() {
t = Transliterator::createFromRules("RemoveCurly",
UNICODE_STRING_SIMPLE("[\\{\\}] > ; '\\N' > ;"),
UTRANS_FORWARD, pe, ec);
- if (t == NULL || U_FAILURE(ec)) {
+ if (t == nullptr || U_FAILURE(ec)) {
errln((UnicodeString)"FAIL: createFromRules RemoveCurly " + u_errorName(ec));
goto FAIL;
}
@@ -3901,14 +3909,14 @@ void TransliteratorTest::TestUserFunction() {
t = Transliterator::createFromRules("hex2",
"(.) > &hex($1);",
UTRANS_FORWARD, pe, ec);
- if (t == NULL || U_FAILURE(ec)) {
+ if (t == nullptr || U_FAILURE(ec)) {
errln("FAIL: createFromRules");
goto FAIL;
}
logln("Registering");
_TUFReg("Any-hex2", t, 2);
t = Transliterator::createInstance("Any-hex2", UTRANS_FORWARD, ec);
- if (t == NULL || U_FAILURE(ec)) {
+ if (t == nullptr || U_FAILURE(ec)) {
errln((UnicodeString)"FAIL: createInstance Any-hex2 " + u_errorName(ec));
goto FAIL;
}
@@ -3919,14 +3927,14 @@ void TransliteratorTest::TestUserFunction() {
t = Transliterator::createFromRules("gif2",
"(.) > &Gif(&Hex2($1));",
UTRANS_FORWARD, pe, ec);
- if (t == NULL || U_FAILURE(ec)) {
+ if (t == nullptr || U_FAILURE(ec)) {
errln((UnicodeString)"FAIL: createFromRules gif2 " + u_errorName(ec));
goto FAIL;
}
logln("Registering");
_TUFReg("Any-gif2", t, 3);
t = Transliterator::createInstance("Any-gif2", UTRANS_FORWARD, ec);
- if (t == NULL || U_FAILURE(ec)) {
+ if (t == nullptr || U_FAILURE(ec)) {
errln((UnicodeString)"FAIL: createInstance Any-gif2 " + u_errorName(ec));
goto FAIL;
}
@@ -3938,7 +3946,7 @@ void TransliteratorTest::TestUserFunction() {
t = Transliterator::createFromRules("test",
"(.) > &Hex($1) ' ' &RemoveCurly(&Name($1)) ' ';",
UTRANS_FORWARD, pe, ec);
- if (t == NULL || U_FAILURE(ec)) {
+ if (t == nullptr || U_FAILURE(ec)) {
errln((UnicodeString)"FAIL: createFromRules test " + u_errorName(ec));
goto FAIL;
}
@@ -3955,13 +3963,13 @@ void TransliteratorTest::TestUserFunction() {
/**
* Test the Any-X transliterators.
*/
-void TransliteratorTest::TestAnyX(void) {
+void TransliteratorTest::TestAnyX() {
UParseError parseError;
UErrorCode status = U_ZERO_ERROR;
Transliterator* anyLatin =
Transliterator::createInstance("Any-Latin", UTRANS_FORWARD, parseError, status);
if (anyLatin==0) {
- dataerrln("FAIL: createInstance returned NULL - %s", u_errorName(status));
+ dataerrln("FAIL: createInstance returned nullptr - %s", u_errorName(status));
delete anyLatin;
return;
}
@@ -3976,7 +3984,7 @@ void TransliteratorTest::TestAnyX(void) {
/**
* Test Any-X transliterators with sample letters from all scripts.
*/
-void TransliteratorTest::TestAny(void) {
+void TransliteratorTest::TestAny() {
UErrorCode status = U_ZERO_ERROR;
// Note: there is a lot of implicit construction of UnicodeStrings from (char *) in
// function call parameters going on in this test.
@@ -3990,7 +3998,7 @@ void TransliteratorTest::TestAny(void) {
UnicodeString testString;
for (int32_t i = 0; i < USCRIPT_CODE_LIMIT; i++) {
const char *scriptName = uscript_getShortName((UScriptCode)i);
- if (scriptName == NULL) {
+ if (scriptName == nullptr) {
errln("Failure: file %s, line %d: Script Code %d is invalid, ", __FILE__, __LINE__, i);
return;
}
@@ -4125,7 +4133,7 @@ void TransliteratorTest::TestAllCodepoints(){
}
const char* myId = uscript_getName(code);
if(!myId) {
- dataerrln("Valid script code returned NULL name. Check your data!");
+ dataerrln("Valid script code returned nullptr name. Check your data!");
return;
}
uprv_strcpy(id,myId);
@@ -4141,14 +4149,14 @@ void TransliteratorTest::TestAllCodepoints(){
if(uprv_strcmp(newId,oldId)!=0){
Transliterator* t = Transliterator::createInstance(newId,UTRANS_FORWARD,pe,status);
- if(t==NULL || U_FAILURE(status)){
+ if(t==nullptr || U_FAILURE(status)){
dataerrln((UnicodeString)"FAIL: Could not create " + id + " - " + u_errorName(status));
}
delete t;
}
if(uprv_strcmp(newAbbrId,oldAbbrId)!=0){
Transliterator* t = Transliterator::createInstance(newAbbrId,UTRANS_FORWARD,pe,status);
- if(t==NULL || U_FAILURE(status)){
+ if(t==nullptr || U_FAILURE(status)){
dataerrln((UnicodeString)"FAIL: Could not create " + id + " - " + u_errorName(status));
}
delete t;
@@ -4624,14 +4632,14 @@ void TransliteratorTest::TestRuleStripping() {
#
\uE001>\u0C01; # SIGN
*/
- static const UChar rule[] = {
+ static const char16_t rule[] = {
0x0023,0x0020,0x000D,0x000A,
0xE001,0x003E,0x0C01,0x003B,0x0020,0x0023,0x0020,0x0053,0x0049,0x0047,0x004E,0
};
- static const UChar expectedRule[] = {
+ static const char16_t expectedRule[] = {
0xE001,0x003E,0x0C01,0x003B,0
};
- UChar result[UPRV_LENGTHOF(rule)];
+ char16_t result[UPRV_LENGTHOF(rule)];
UErrorCode status = U_ZERO_ERROR;
int32_t len = utrans_stripRules(rule, UPRV_LENGTHOF(rule), result, &status);
if (len != u_strlen(expectedRule)) {
@@ -4645,7 +4653,7 @@ void TransliteratorTest::TestRuleStripping() {
/**
* Test the Halfwidth-Fullwidth transliterator (ticket 6281).
*/
-void TransliteratorTest::TestHalfwidthFullwidth(void) {
+void TransliteratorTest::TestHalfwidthFullwidth() {
UParseError parseError;
UErrorCode status = U_ZERO_ERROR;
Transliterator* hf = Transliterator::createInstance("Halfwidth-Fullwidth", UTRANS_FORWARD, parseError, status);
@@ -4695,7 +4703,7 @@ void TransliteratorTest::TestHalfwidthFullwidth(void) {
* TODO: confirm that the expected results are correct.
* For now, test just confirms that C++ and Java give identical results.
*/
-void TransliteratorTest::TestThai(void) {
+void TransliteratorTest::TestThai() {
#if !UCONFIG_NO_BREAK_ITERATION
// The expectations in this test heavily depends on the Thai dictionary.
// Therefore, we skip this test under the LSTM configuration.
@@ -4921,9 +4929,9 @@ UnicodeString& TransliteratorTest::formatInput(UnicodeString &appendTo,
input.extractBetween(pos.start, pos.limit, c);
input.extractBetween(pos.limit, pos.contextLimit, d);
input.extractBetween(pos.contextLimit, input.length(), e);
- appendTo.append(a).append((UChar)123/*{*/).append(b).
- append((UChar)PIPE).append(c).append((UChar)PIPE).append(d).
- append((UChar)125/*}*/).append(e);
+ appendTo.append(a).append((char16_t)123/*{*/).append(b).
+ append((char16_t)PIPE).append(c).append((char16_t)PIPE).append(d).
+ append((char16_t)125/*}*/).append(e);
} else {
appendTo.append((UnicodeString)"INVALID UTransPosition {cs=" +
pos.contextStart + ", s=" + pos.start + ", l=" +
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/transtst.h b/Build/source/libs/icu/icu-src/source/test/intltest/transtst.h
index 2f35e4b0cda..606bd93086e 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/transtst.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/transtst.h
@@ -31,17 +31,17 @@ public:
private:
void runIndexedTest(int32_t index, UBool exec, const char* &name,
- char* par=NULL) override;
+ char* par=nullptr) override;
- void TestInstantiation(void);
+ void TestInstantiation();
- void TestSimpleRules(void);
+ void TestSimpleRules();
- void TestInlineSet(void);
+ void TestInlineSet();
- void TestAnchors(void);
+ void TestAnchors();
- void TestPatternQuoting(void);
+ void TestPatternQuoting();
/**
* Create some inverses and confirm that they work. We have to be
@@ -51,325 +51,325 @@ private:
* F' != I. However, if we are careful about the input, we will
* get the expected results.
*/
- void TestRuleBasedInverse(void);
+ void TestRuleBasedInverse();
/**
* Basic test of keyboard.
*/
- void TestKeyboard(void);
+ void TestKeyboard();
/**
* Basic test of keyboard with cursor.
*/
- void TestKeyboard2(void);
+ void TestKeyboard2();
/**
* Test keyboard transliteration with back-replacement.
*/
- void TestKeyboard3(void);
+ void TestKeyboard3();
void keyboardAux(const Transliterator& t,
const char* DATA[], int32_t DATA_length);
- void TestArabic(void);
+ void TestArabic();
/**
* Compose the Kana transliterator forward and reverse and try
* some strings that should come out unchanged.
*/
- void TestCompoundKana(void);
+ void TestCompoundKana();
/**
* Compose the hex transliterators forward and reverse.
*/
- void TestCompoundHex(void);
+ void TestCompoundHex();
/**
* Do some basic tests of filtering.
*/
- void TestFiltering(void);
+ void TestFiltering();
/**
* Regression test for bugs found in Greek transliteration.
*/
- void TestJ277(void);
+ void TestJ277();
/**
* Prefix, suffix support in hex transliterators.
*/
- void TestJ243(void);
+ void TestJ243();
/**
* Parsers need better syntax error messages.
*/
- void TestJ329(void);
+ void TestJ329();
/**
* Test segments and segment references.
*/
- void TestSegments(void);
+ void TestSegments();
/**
* Test cursor positioning outside of the key
*/
- void TestCursorOffset(void);
+ void TestCursorOffset();
/**
* Test zero length and > 1 char length variable values. Test
* use of variable refs in UnicodeSets.
*/
- void TestArbitraryVariableValues(void);
+ void TestArbitraryVariableValues();
/**
* Confirm that the contextStart, contextLimit, start, and limit
* behave correctly. J474.
*/
- void TestPositionHandling(void);
+ void TestPositionHandling();
/**
* Test the Hiragana-Katakana transliterator.
*/
- void TestHiraganaKatakana(void);
+ void TestHiraganaKatakana();
/**
* Test cloning / copy constructor of RBT.
*/
- void TestCopyJ476(void);
+ void TestCopyJ476();
/**
* Test inter-Indic transliterators. These are composed.
* ICU4C Jitterbug 483.
*/
- void TestInterIndic(void);
+ void TestInterIndic();
/**
* Test filter syntax in IDs. (J918)
*/
- void TestFilterIDs(void);
+ void TestFilterIDs();
/**
* Test the case mapping transliterators.
*/
- void TestCaseMap(void);
+ void TestCaseMap();
/**
* Test the name mapping transliterators.
*/
- void TestNameMap(void);
+ void TestNameMap();
/**
* Test liberalized ID syntax. 1006c
*/
- void TestLiberalizedID(void);
+ void TestLiberalizedID();
/**
* Test Jitterbug 912
*/
- void TestCreateInstance(void);
+ void TestCreateInstance();
- void TestNormalizationTransliterator(void);
+ void TestNormalizationTransliterator();
- void TestCompoundRBT(void);
+ void TestCompoundRBT();
- void TestCompoundFilter(void);
+ void TestCompoundFilter();
- void TestRemove(void);
+ void TestRemove();
- void TestToRules(void);
+ void TestToRules();
- void TestContext(void);
+ void TestContext();
- void TestSupplemental(void);
+ void TestSupplemental();
- void TestQuantifier(void);
+ void TestQuantifier();
/**
* Test Source-Target/Variant.
*/
- void TestSTV(void);
+ void TestSTV();
- void TestCompoundInverse(void);
+ void TestCompoundInverse();
- void TestNFDChainRBT(void);
+ void TestNFDChainRBT();
/**
* Inverse of "Null" should be "Null". (J21)
*/
- void TestNullInverse(void);
+ void TestNullInverse();
/**
* Check ID of inverse of alias. (J22)
*/
- void TestAliasInverseID(void);
+ void TestAliasInverseID();
/**
* Test IDs of inverses of compound transliterators. (J20)
*/
- void TestCompoundInverseID(void);
+ void TestCompoundInverseID();
/**
* Test undefined variable.
*/
- void TestUndefinedVariable(void);
+ void TestUndefinedVariable();
/**
* Test empty context.
*/
- void TestEmptyContext(void);
+ void TestEmptyContext();
/**
* Test compound filter ID syntax
*/
- void TestCompoundFilterID(void);
+ void TestCompoundFilterID();
/**
* Test new property set syntax
*/
- void TestPropertySet(void);
+ void TestPropertySet();
/**
* Test various failure points of the new 2.0 engine.
*/
- void TestNewEngine(void);
+ void TestNewEngine();
/**
* Test quantified segment behavior. We want:
* ([abc])+ > x $1 x; applied to "cba" produces "xax"
*/
- void TestQuantifiedSegment(void);
+ void TestQuantifiedSegment();
/* Devanagari-Latin rules Test */
- void TestDevanagariLatinRT(void);
+ void TestDevanagariLatinRT();
/* Telugu-Latin rules Test */
- void TestTeluguLatinRT(void);
+ void TestTeluguLatinRT();
/* Gujarati-Latin rules Test */
- void TestGujaratiLatinRT(void);
+ void TestGujaratiLatinRT();
/* Sanskrit-Latin rules Test */
- void TestSanskritLatinRT(void);
+ void TestSanskritLatinRT();
/* Test Compound Indic-Latin transliterators*/
- void TestCompoundLatinRT(void);
+ void TestCompoundLatinRT();
/* Test bindi and tippi for Gurmukhi */
- void TestGurmukhiDevanagari(void);
+ void TestGurmukhiDevanagari();
/**
* Test instantiation from a locale.
*/
- void TestLocaleInstantiation(void);
+ void TestLocaleInstantiation();
/**
* Test title case handling of accent (should ignore accents)
*/
- void TestTitleAccents(void);
+ void TestTitleAccents();
/**
* Basic test of a locale resource based rule.
*/
- void TestLocaleResource(void);
+ void TestLocaleResource();
/**
* Make sure parse errors reference the right line.
*/
- void TestParseError(void);
+ void TestParseError();
/**
* Make sure sets on output are disallowed.
*/
- void TestOutputSet(void);
+ void TestOutputSet();
/**
* Test the use variable range pragma, making sure that use of
* variable range characters is detected and flagged as an error.
*/
- void TestVariableRange(void);
+ void TestVariableRange();
/**
* Test invalid post context error handling
*/
- void TestInvalidPostContext(void);
+ void TestInvalidPostContext();
/**
* Test ID form variants
*/
- void TestIDForms(void);
+ void TestIDForms();
/**
* Mark's toRules test.
*/
- void TestToRulesMark(void);
+ void TestToRulesMark();
/**
* Test Escape and Unescape transliterators.
*/
- void TestEscape(void);
+ void TestEscape();
- void TestAnchorMasking(void);
+ void TestAnchorMasking();
/**
* Make sure display names of variants look reasonable.
*/
- void TestDisplayName(void);
+ void TestDisplayName();
/**
* Check to see if case mapping works correctly.
*/
- void TestSpecialCases(void);
+ void TestSpecialCases();
/**
* Check to see that incremental gets at least part way through a reasonable string.
*/
- void TestIncrementalProgress(void);
+ void TestIncrementalProgress();
/**
* Check that casing handles surrogates.
*/
- void TestSurrogateCasing (void);
+ void TestSurrogateCasing();
- void TestFunction(void);
+ void TestFunction();
- void TestInvalidBackRef(void);
+ void TestInvalidBackRef();
- void TestMulticharStringSet(void);
+ void TestMulticharStringSet();
- void TestUserFunction(void);
+ void TestUserFunction();
- void TestAnyX(void);
+ void TestAnyX();
- void TestAny(void);
+ void TestAny();
- void TestSourceTargetSet(void);
+ void TestSourceTargetSet();
- void TestPatternWhiteSpace(void);
+ void TestPatternWhiteSpace();
- void TestAllCodepoints(void);
+ void TestAllCodepoints();
- void TestBoilerplate(void);
+ void TestBoilerplate();
- void TestAlternateSyntax(void);
+ void TestAlternateSyntax();
- void TestRuleStripping(void);
+ void TestRuleStripping();
- void TestHalfwidthFullwidth(void);
+ void TestHalfwidthFullwidth();
- void TestThai(void);
+ void TestThai();
/**
* Tests the multiple-pass syntax
*/
- void TestBeginEnd(void);
+ void TestBeginEnd();
/**
* Tests that toRules() works right with the multiple-pass syntax
*/
- void TestBeginEndToRules(void);
+ void TestBeginEndToRules();
/**
* Tests the registerAlias() function
*/
- void TestRegisterAlias(void);
+ void TestRegisterAlias();
- void TestBasicTransliteratorEvenWithoutData(void);
+ void TestBasicTransliteratorEvenWithoutData();
//======================================================================
// Support methods
//======================================================================
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/trcoll.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/trcoll.cpp
index a5d3a358307..8b24cc3e168 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/trcoll.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/trcoll.cpp
@@ -29,7 +29,7 @@ CollationTurkishTest::~CollationTurkishTest()
delete myCollation;
}
-const UChar CollationTurkishTest::testSourceCases[][CollationTurkishTest::MAX_TOKEN_LEN] = {
+const char16_t CollationTurkishTest::testSourceCases[][CollationTurkishTest::MAX_TOKEN_LEN] = {
{0x73, 0x0327, 0},
{0x76, 0x00E4, 0x74, 0},
{0x6f, 0x6c, 0x64, 0},
@@ -43,7 +43,7 @@ const UChar CollationTurkishTest::testSourceCases[][CollationTurkishTest::MAX_TO
{0x69, 0x64, 0x65, 0x61, 0}
};
-const UChar CollationTurkishTest::testTargetCases[][CollationTurkishTest::MAX_TOKEN_LEN] = {
+const char16_t CollationTurkishTest::testTargetCases[][CollationTurkishTest::MAX_TOKEN_LEN] = {
{0x75, 0x0308, 0},
{0x76, 0x62, 0x74, 0},
{0x00D6, 0x61, 0x79, 0},
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/trcoll.h b/Build/source/libs/icu/icu-src/source/test/intltest/trcoll.h
index 594f8510f40..75c1fb57346 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/trcoll.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/trcoll.h
@@ -29,7 +29,7 @@ public:
CollationTurkishTest();
virtual ~CollationTurkishTest();
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
// perform tests for turkish locale with strength PRIMARY
void TestPrimary(/* char* par */);
@@ -39,8 +39,8 @@ public:
private:
// static constants
- static const UChar testSourceCases[][MAX_TOKEN_LEN];
- static const UChar testTargetCases[][MAX_TOKEN_LEN];
+ static const char16_t testSourceCases[][MAX_TOKEN_LEN];
+ static const char16_t testTargetCases[][MAX_TOKEN_LEN];
static const Collator::EComparisonResult results[];
Collator *myCollation;
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/trnserr.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/trnserr.cpp
index 50cd8662ddd..d3bf770b0eb 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/trnserr.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/trnserr.cpp
@@ -153,7 +153,7 @@ void TransliteratorErrorTest::TestTransliteratorErrors() {
}
status = U_ZERO_ERROR;
Transliterator* t4 = Transliterator::createFromRules(newID, bogusRules, UTRANS_FORWARD, parseError, status);
- if (t4 != NULL || U_SUCCESS(status)) {
+ if (t4 != nullptr || U_SUCCESS(status)) {
errln("FAIL: The rules is malformed but error was not reported.");
if (parseError.offset != -1) {
errln("FAIL: The parse error offset isn't set correctly when fails.");
@@ -189,14 +189,14 @@ void TransliteratorErrorTest::TestUnicodeSetErrors() {
//void TransliteratorErrorTest::TestUniToHexErrors() {
// UErrorCode status = U_ZERO_ERROR;
-// Transliterator *t = new UnicodeToHexTransliterator("", true, NULL, status);
+// Transliterator *t = new UnicodeToHexTransliterator("", true, nullptr, status);
// if (U_SUCCESS(status)) {
// errln("FAIL: Created a UnicodeToHexTransliterator with an empty pattern.");
// }
// delete t;
//
// status = U_ZERO_ERROR;
-// t = new UnicodeToHexTransliterator("\\x", true, NULL, status);
+// t = new UnicodeToHexTransliterator("\\x", true, nullptr, status);
// if (U_SUCCESS(status)) {
// errln("FAIL: Created a UnicodeToHexTransliterator with a bad pattern.");
// }
@@ -241,13 +241,13 @@ void TransliteratorErrorTest::TestRBTErrors() {
//void TransliteratorErrorTest::TestHexToUniErrors() {
// UErrorCode status = U_ZERO_ERROR;
-// Transliterator *t = new HexToUnicodeTransliterator("", NULL, status);
+// Transliterator *t = new HexToUnicodeTransliterator("", nullptr, status);
// if (U_FAILURE(status)) {
// errln("FAIL: Could not create a HexToUnicodeTransliterator with an empty pattern.");
// }
// delete t;
// status = U_ZERO_ERROR;
-// t = new HexToUnicodeTransliterator("\\x", NULL, status);
+// t = new HexToUnicodeTransliterator("\\x", nullptr, status);
// if (U_SUCCESS(status)) {
// errln("FAIL: Created a HexToUnicodeTransliterator with a bad pattern.");
// }
@@ -277,8 +277,8 @@ public:
void TransliteratorErrorTest::TestCoverage() {
StubTransliterator stub;
- if (stub.clone() != NULL){
- errln("FAIL: default Transliterator::clone() should return NULL");
+ if (stub.clone() != nullptr){
+ errln("FAIL: default Transliterator::clone() should return nullptr");
}
}
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/trnserr.h b/Build/source/libs/icu/icu-src/source/test/intltest/trnserr.h
index eade7503bcc..91ec091c8da 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/trnserr.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/trnserr.h
@@ -32,22 +32,22 @@
*/
class TransliteratorErrorTest : public IntlTest {
public:
- void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par=NULL) override;
+ void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par=nullptr) override;
/*Tests the returned error codes on all the APIs according to the API documentation. */
- void TestTransliteratorErrors(void);
+ void TestTransliteratorErrors();
- void TestUnicodeSetErrors(void);
+ void TestUnicodeSetErrors();
- //void TestUniToHexErrors(void);
+ //void TestUniToHexErrors();
- void TestRBTErrors(void);
+ void TestRBTErrors();
- //void TestHexToUniErrors(void);
+ //void TestHexToUniErrors();
// JitterBug 4452, for coverage. The reason to put this method here is
// this class is comparable smaller than other Transliterator*Test classes
- void TestCoverage(void);
+ void TestCoverage();
};
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/tscoll.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/tscoll.cpp
index b13f30ae6d2..ccd59ac6064 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/tscoll.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/tscoll.cpp
@@ -91,7 +91,7 @@ void IntlTestCollator::runIndexedTest( int32_t index, UBool exec, const char* &n
}
UCollationResult
-IntlTestCollator::compareUsingPartials(UCollator *coll, const UChar source[], int32_t sLen, const UChar target[], int32_t tLen, int32_t pieceSize, UErrorCode &status) {
+IntlTestCollator::compareUsingPartials(UCollator *coll, const char16_t source[], int32_t sLen, const char16_t target[], int32_t tLen, int32_t pieceSize, UErrorCode &status) {
int32_t partialSKResult = 0;
uint8_t sBuf[512], tBuf[512];
UCharIterator sIter, tIter;
@@ -146,8 +146,8 @@ IntlTestCollator::doTestVariant(Collator* col, const UnicodeString &source, cons
UColAttributeValue norm = ucol_getAttribute(myCollation, UCOL_NORMALIZATION_MODE, &status);
int32_t sLen = source.length(), tLen = target.length();
- const UChar* src = source.getBuffer();
- const UChar* trg = target.getBuffer();
+ const char16_t* src = source.getBuffer();
+ const char16_t* trg = target.getBuffer();
UCollationResult compareResultIter = (UCollationResult)result;
{
@@ -238,7 +238,7 @@ IntlTestCollator::doTestVariant(Collator* col, const UnicodeString &source, cons
}
void
-IntlTestCollator::doTest(Collator* col, const UChar *source, const UChar *target, Collator::EComparisonResult result) {
+IntlTestCollator::doTest(Collator* col, const char16_t *source, const char16_t *target, Collator::EComparisonResult result) {
doTest(col, UnicodeString(source), UnicodeString(target), result);
}
@@ -254,7 +254,7 @@ IntlTestCollator::doTest(Collator* col, const UnicodeString &source, const Unico
}
UErrorCode status = U_ZERO_ERROR;
- LocalPointer<CollationElementIterator> c(((RuleBasedCollator *)col)->createCollationElementIterator(source));
+ LocalPointer<CollationElementIterator> c((dynamic_cast<RuleBasedCollator *>(col))->createCollationElementIterator(source));
logln("Testing iterating source: "+source);
backAndForth(*c);
c->setText(target, status);
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/tscoll.h b/Build/source/libs/icu/icu-src/source/test/intltest/tscoll.h
index fe883194c72..add918e7868 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/tscoll.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/tscoll.h
@@ -23,7 +23,7 @@
class IntlTestCollator: public IntlTest {
- void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
protected:
struct Order
{
@@ -32,7 +32,7 @@ protected:
};
// These two should probably go down in IntlTest
- void doTest(Collator* col, const UChar *source, const UChar *target, Collator::EComparisonResult result);
+ void doTest(Collator* col, const char16_t *source, const char16_t *target, Collator::EComparisonResult result);
void doTest(Collator* col, const UnicodeString &source, const UnicodeString &target, Collator::EComparisonResult result);
void doTestVariant(Collator* col, const UnicodeString &source, const UnicodeString &target, Collator::EComparisonResult result);
@@ -51,7 +51,7 @@ protected:
* returned by calls to next on the specified iterator
*/
Order *getOrders(CollationElementIterator &iter, int32_t &orderLength);
- UCollationResult compareUsingPartials(UCollator *coll, const UChar source[], int32_t sLen, const UChar target[], int32_t tLen, int32_t pieceSize, UErrorCode &status);
+ UCollationResult compareUsingPartials(UCollator *coll, const char16_t source[], int32_t sLen, const char16_t target[], int32_t tLen, int32_t pieceSize, UErrorCode &status);
};
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/tsdate.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/tsdate.cpp
index 1522cf38ec3..37ba1e79b2f 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/tsdate.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/tsdate.cpp
@@ -140,7 +140,7 @@ void
IntlTestDateFormat::describeTest()
{
// Assume it's a SimpleDateFormat and get some info
- SimpleDateFormat *s = (SimpleDateFormat*)fFormat;
+ SimpleDateFormat *s = dynamic_cast<SimpleDateFormat*>(fFormat);
UnicodeString str;
logln(fTestName + " Pattern " + s->toPattern(str));
}
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/tsdate.h b/Build/source/libs/icu/icu-src/source/test/intltest/tsdate.h
index 350d1cd9345..e346b168cab 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/tsdate.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/tsdate.h
@@ -21,7 +21,7 @@
* Performs some tests in many variations on DateFormat
**/
class IntlTestDateFormat: public IntlTest {
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
private:
@@ -49,11 +49,11 @@ private:
/**
* return a random number
**/
- double randDouble(void);
+ double randDouble();
/**
* generate description for verbose test output
**/
- void describeTest(void);
+ void describeTest();
DateFormat *fFormat;
UnicodeString fTestName;
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/tsdcfmsy.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/tsdcfmsy.cpp
index 957a1ced25d..fe1d129b9fa 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/tsdcfmsy.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/tsdcfmsy.cpp
@@ -238,7 +238,7 @@ void IntlTestDecimalFormatSymbols::testLastResortData() {
"", lastResort->getSymbol(DecimalFormatSymbols::kMonetaryGroupingSeparatorSymbol));
lastResort->setSymbol(DecimalFormatSymbols::kMonetaryGroupingSeparatorSymbol, ",");
assertEquals("last-resort NaN",
- UnicodeString((UChar)0xfffd), lastResort->getSymbol(DecimalFormatSymbols::kNaNSymbol));
+ UnicodeString((char16_t)0xfffd), lastResort->getSymbol(DecimalFormatSymbols::kNaNSymbol));
lastResort->setSymbol(DecimalFormatSymbols::kNaNSymbol, "NaN");
// Check that now all of the symbols match root.
for(int32_t i = 0; i < DecimalFormatSymbols::kFormatSymbolCount; ++i) {
@@ -253,9 +253,9 @@ void IntlTestDecimalFormatSymbols::testLastResortData() {
void IntlTestDecimalFormatSymbols::testDigitSymbols() {
// This test does more in ICU4J than in ICU4C right now.
// In ICU4C, it is basically just a test for codePointZero and getConstDigitSymbol.
- UChar defZero = u'0';
+ char16_t defZero = u'0';
UChar32 osmanyaZero = U'\U000104A0';
- static const UChar* osmanyaDigitStrings[] = {
+ static const char16_t* osmanyaDigitStrings[] = {
u"\U000104A0", u"\U000104A1", u"\U000104A2", u"\U000104A3", u"\U000104A4",
u"\U000104A5", u"\U000104A6", u"\U000104A7", u"\U000104A8", u"\U000104A9"
};
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/tsdcfmsy.h b/Build/source/libs/icu/icu-src/source/test/intltest/tsdcfmsy.h
index 79eccfc0f36..71753baf7b5 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/tsdcfmsy.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/tsdcfmsy.h
@@ -20,7 +20,7 @@
* Tests for DecimalFormatSymbols
**/
class IntlTestDecimalFormatSymbols: public IntlTest {
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
private:
/**
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/tsdtfmsy.h b/Build/source/libs/icu/icu-src/source/test/intltest/tsdtfmsy.h
index 2be4e33ec0b..6d01b805c26 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/tsdtfmsy.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/tsdtfmsy.h
@@ -19,7 +19,7 @@
* Tests for DateFormatSymbols
**/
class IntlTestDateFormatSymbols: public IntlTest {
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
private:
/**
@@ -29,12 +29,12 @@ private:
/**
* Test getMonths.
*/
- void TestGetMonths(void);
- void TestGetMonths2(void);
+ void TestGetMonths();
+ void TestGetMonths2();
- void TestGetWeekdays2(void);
- void TestGetEraNames(void);
- void TestGetSetSpecificItems(void);
+ void TestGetWeekdays2();
+ void TestGetEraNames();
+ void TestGetSetSpecificItems();
UBool UnicodeStringsArePrefixes(int32_t count, int32_t prefixLen, const UnicodeString *prefixArray, const UnicodeString *baseArray);
};
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/tsmthred.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/tsmthred.cpp
index 7cff70051b9..7a03227ed2c 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/tsmthred.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/tsmthred.cpp
@@ -166,11 +166,11 @@ private:
};
-void TestArabicShapeThreads::doTailTest(void) {
- static const UChar src[] = { 0x0020, 0x0633, 0 };
- static const UChar dst_old[] = { 0xFEB1, 0x200B,0 };
- static const UChar dst_new[] = { 0xFEB1, 0xFE73,0 };
- UChar dst[3] = { 0x0000, 0x0000,0 };
+void TestArabicShapeThreads::doTailTest() {
+ static const char16_t src[] = { 0x0020, 0x0633, 0 };
+ static const char16_t dst_old[] = { 0xFEB1, 0x200B,0 };
+ static const char16_t dst_new[] = { 0xFEB1, 0xFE73,0 };
+ char16_t dst[3] = { 0x0000, 0x0000,0 };
int32_t length;
UErrorCode status;
@@ -337,24 +337,24 @@ class ThreadSafeFormatSharedData {
UnicodeString fBBDStr;
};
-const ThreadSafeFormatSharedData *gSharedData = NULL;
+const ThreadSafeFormatSharedData *gSharedData = nullptr;
ThreadSafeFormatSharedData::ThreadSafeFormatSharedData(UErrorCode &status) {
fFormat.adoptInstead(NumberFormat::createCurrencyInstance(Locale::getUS(), status));
- static const UChar *kYDD = u"YDD";
- static const UChar *kBBD = u"BBD";
+ static const char16_t *kYDD = u"YDD";
+ static const char16_t *kBBD = u"BBD";
fYDDThing.adoptObject(new CurrencyAmount(123.456, kYDD, status));
fBBDThing.adoptObject(new CurrencyAmount(987.654, kBBD, status));
if (U_FAILURE(status)) {
return;
}
- fFormat->format(fYDDThing, fYDDStr, NULL, status);
- fFormat->format(fBBDThing, fBBDStr, NULL, status);
+ fFormat->format(fYDDThing, fYDDStr, nullptr, status);
+ fFormat->format(fBBDThing, fBBDStr, nullptr, status);
gSharedData = this;
}
ThreadSafeFormatSharedData::~ThreadSafeFormatSharedData() {
- gSharedData = NULL;
+ gSharedData = nullptr;
}
/**
@@ -378,7 +378,7 @@ ThreadSafeFormat::ThreadSafeFormat(UErrorCode &status) {
fFormat.adoptInstead(NumberFormat::createCurrencyInstance(Locale::getUS(), status));
}
-static const UChar *kUSD = u"USD";
+static const char16_t *kUSD = u"USD";
UBool ThreadSafeFormat::doStuff(int32_t offset, UnicodeString &appendErr, UErrorCode &status) const {
UBool okay = true;
@@ -401,16 +401,16 @@ UBool ThreadSafeFormat::doStuff(int32_t offset, UnicodeString &appendErr, UError
okay = false;
}
UnicodeString str;
- const UnicodeString *o=NULL;
+ const UnicodeString *o=nullptr;
Formattable f;
- const NumberFormat *nf = NULL; // only operate on it as const.
+ const NumberFormat *nf = nullptr; // only operate on it as const.
switch(offset%4) {
case 0: f = gSharedData->fYDDThing; o = &gSharedData->fYDDStr; nf = gSharedData->fFormat.getAlias(); break;
case 1: f = gSharedData->fBBDThing; o = &gSharedData->fBBDStr; nf = gSharedData->fFormat.getAlias(); break;
case 2: f = gSharedData->fYDDThing; o = &gSharedData->fYDDStr; nf = fFormat.getAlias(); break;
case 3: f = gSharedData->fBBDThing; o = &gSharedData->fBBDStr; nf = fFormat.getAlias(); break;
}
- nf->format(f, str, NULL, status);
+ nf->format(f, str, nullptr, status);
if(*o != str) {
appendErr.append(showDifference(*o, str));
@@ -423,7 +423,7 @@ UBool U_CALLCONV isAcceptable(void *, const char *, const char *, const UDataInf
return true;
}
-//static UMTX debugMutex = NULL;
+//static UMTX debugMutex = nullptr;
//static UMTX gDebugMutex;
@@ -439,7 +439,7 @@ public:
: SimpleThread(),
fNum(0),
fTraceInfo(0),
- fTSF(NULL),
+ fTSF(nullptr),
fOffset(0)
// the locale to use
{
@@ -478,8 +478,8 @@ public:
int m;
for (m=0; m<4000; m++) {
status = U_ZERO_ERROR;
- UResourceBundle *res = NULL;
- const char *localeName = NULL;
+ UResourceBundle *res = nullptr;
+ const char *localeName = nullptr;
Locale loc = Locale::getEnglish();
@@ -488,7 +488,7 @@ public:
// ResourceBundle bund = ResourceBundle(0, loc, status);
//umtx_lock(&gDebugMutex);
- res = ures_open(NULL, localeName, &status);
+ res = ures_open(nullptr, localeName, &status);
//umtx_unlock(&gDebugMutex);
//umtx_lock(&gDebugMutex);
@@ -707,7 +707,7 @@ void MultithreadTest::TestThreadedIntl()
#define kCollatorThreadPatience kCollatorThreadThreads*30
struct Line {
- UChar buff[25];
+ char16_t buff[25];
int32_t buflen;
} ;
@@ -726,8 +726,8 @@ private:
UBool isAtLeastUCA62;
public:
CollatorThreadTest() : SimpleThread(),
- coll(NULL),
- lines(NULL),
+ coll(nullptr),
+ lines(nullptr),
noLines(0),
isAtLeastUCA62(true)
{
@@ -741,7 +741,7 @@ public:
}
virtual void run() override {
uint8_t sk1[1024], sk2[1024];
- uint8_t *oldSk = NULL, *newSk = sk1;
+ uint8_t *oldSk = nullptr, *newSk = sk1;
int32_t oldLen = 0;
int32_t prev = 0;
int32_t i = 0;
@@ -751,7 +751,7 @@ public:
int32_t resLen = coll->getSortKey(lines[i].buff, lines[i].buflen, newSk, 1024);
- if(oldSk != NULL) {
+ if(oldSk != nullptr) {
int32_t skres = strcmp((char *)oldSk, (char *)newSk);
int32_t cmpres = coll->compare(lines[prev].buff, lines[prev].buflen, lines[i].buff, lines[i].buflen);
int32_t cmpres2 = coll->compare(lines[i].buff, lines[i].buflen, lines[prev].buff, lines[prev].buflen);
@@ -795,7 +795,7 @@ void MultithreadTest::TestCollators()
{
UErrorCode status = U_ZERO_ERROR;
- FILE *testFile = NULL;
+ FILE *testFile = nullptr;
char testDataPath[1024];
strcpy(testDataPath, IntlTest::getSourceTestData(status));
if (U_FAILURE(status)) {
@@ -853,10 +853,10 @@ void MultithreadTest::TestCollators()
memset(lines.getAlias(), 0, sizeof(Line)*200000);
int32_t lineNum = 0;
- UChar bufferU[1024];
+ char16_t bufferU[1024];
uint32_t first = 0;
- while (fgets(buffer, 1024, testFile) != NULL) {
+ while (fgets(buffer, 1024, testFile) != nullptr) {
if(*buffer == 0 || buffer[0] == '#') {
// Store empty and comment lines so that errors are reported
// for the real test file lines.
@@ -970,7 +970,7 @@ public:
};
-const UnicodeString *StringThreadTest2::gSharedString = NULL;
+const UnicodeString *StringThreadTest2::gSharedString = nullptr;
// ** The actual test function.
@@ -998,7 +998,7 @@ void MultithreadTest::TestString()
}
delete StringThreadTest2::gSharedString;
- StringThreadTest2::gSharedString = NULL;
+ StringThreadTest2::gSharedString = nullptr;
}
@@ -1010,7 +1010,7 @@ void MultithreadTest::TestString()
//
#if !UCONFIG_NO_TRANSLITERATION
-Transliterator *gSharedTranslit = NULL;
+Transliterator *gSharedTranslit = nullptr;
class TxThread: public SimpleThread {
public:
TxThread() {}
@@ -1043,7 +1043,7 @@ void MultithreadTest::TestAnyTranslit() {
for (i=0; i<UPRV_LENGTHOF(threads); i++) {
threads[i].join();
}
- gSharedTranslit = NULL;
+ gSharedTranslit = nullptr;
#endif // !UCONFIG_NO_TRANSLITERATION
}
@@ -1072,7 +1072,7 @@ static const int32_t CACHE_LOAD = 3;
class UCTMultiThreadItem : public SharedObject {
public:
char *value;
- UCTMultiThreadItem(const char *x) : value(NULL) {
+ UCTMultiThreadItem(const char *x) : value(nullptr) {
value = uprv_strdup(x);
}
virtual ~UCTMultiThreadItem() {
@@ -1088,11 +1088,11 @@ static std::condition_variable *gCTConditionVar = nullptr;
template<> U_EXPORT
const UCTMultiThreadItem *LocaleCacheKey<UCTMultiThreadItem>::createObject(
const void *context, UErrorCode &status) const {
- const UnifiedCache *cacheContext = (const UnifiedCache *) context;
+ const UnifiedCache *cacheContext = static_cast<const UnifiedCache*>(context);
if (uprv_strcmp(fLoc.getLanguage(), fLoc.getName()) != 0) {
- const UCTMultiThreadItem *result = NULL;
- if (cacheContext == NULL) {
+ const UCTMultiThreadItem *result = nullptr;
+ if (cacheContext == nullptr) {
UnifiedCache::getByLocale(fLoc.getLanguage(), result, status);
return result;
}
@@ -1120,7 +1120,7 @@ const UCTMultiThreadItem *LocaleCacheKey<UCTMultiThreadItem>::createObject(
const UCTMultiThreadItem *result =
new UCTMultiThreadItem(fLoc.getLanguage());
- if (result == NULL) {
+ if (result == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
} else {
result->addRef();
@@ -1157,7 +1157,7 @@ class UnifiedCacheThread: public SimpleThread {
void UnifiedCacheThread::exerciseByLocale(const Locale &locale) {
UErrorCode status = U_ZERO_ERROR;
- const UCTMultiThreadItem *origItem = NULL;
+ const UCTMultiThreadItem *origItem = nullptr;
fCache->get(
LocaleCacheKey<UCTMultiThreadItem>(locale), fCache, origItem, status);
U_ASSERT(U_SUCCESS(status));
@@ -1166,11 +1166,11 @@ void UnifiedCacheThread::exerciseByLocale(const Locale &locale) {
// Fetch the same item again many times. We should always get the same
// pointer since this client is already holding onto it
for (int32_t i = 0; i < 1000; ++i) {
- const UCTMultiThreadItem *item = NULL;
+ const UCTMultiThreadItem *item = nullptr;
fCache->get(
LocaleCacheKey<UCTMultiThreadItem>(locale), fCache, item, status);
IntlTest::gTest->assertTrue(WHERE, item == origItem);
- if (item != NULL) {
+ if (item != nullptr) {
item->removeRef();
}
}
@@ -1299,8 +1299,8 @@ void MultithreadTest::TestBreakTranslit() {
}
delete gSharedTransliterator;
- gTranslitInput = NULL;
- gTranslitExpected = NULL;
+ gTranslitInput = nullptr;
+ gTranslitExpected = nullptr;
}
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/tsmthred.h b/Build/source/libs/icu/icu-src/source/test/intltest/tsmthred.h
index 7ac502a0389..ef9888382f0 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/tsmthred.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/tsmthred.h
@@ -24,25 +24,25 @@ public:
MultithreadTest();
virtual ~MultithreadTest();
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
/**
* test that threads even work
**/
- void TestThreads(void);
+ void TestThreads();
/**
* test that arabic shaping can work in threads
**/
- void TestArabicShapingThreads(void);
+ void TestArabicShapingThreads();
#if !UCONFIG_NO_FORMATTING
/**
* test that intl functions work in a multithreaded context
**/
- void TestThreadedIntl(void);
+ void TestThreadedIntl();
#endif
- void TestCollators(void);
+ void TestCollators();
void TestString();
void TestAnyTranslit();
void TestUnifiedCache();
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/tsnmfmt.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/tsnmfmt.cpp
index 845206f266e..eee7b099f80 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/tsnmfmt.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/tsnmfmt.cpp
@@ -178,7 +178,7 @@ IntlTestNumberFormat::testFormat(/* char* par */)
UnicodeString str;
// Assume it's a DecimalFormat and get some info
- DecimalFormat *s = (DecimalFormat*)fFormat;
+ DecimalFormat *s = dynamic_cast<DecimalFormat*>(fFormat);
logln((UnicodeString)" Pattern " + s->toPattern(str));
#if U_PF_OS390 <= U_PLATFORM && U_PLATFORM <= U_PF_OS400
@@ -422,7 +422,7 @@ void IntlTestNumberFormat::monsterTest(/* char* par */)
const char *SEP = "============================================================\n";
int32_t count;
const Locale* allLocales = NumberFormat::getAvailableLocales(count);
- Locale* locales = (Locale*)allLocales;
+ Locale* locales = const_cast<Locale*>(allLocales);
Locale quickLocales[6];
if (allLocales && count)
{
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/tsnmfmt.h b/Build/source/libs/icu/icu-src/source/test/intltest/tsnmfmt.h
index 6b567b4a08d..f545cfdb6a0 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/tsnmfmt.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/tsnmfmt.h
@@ -24,7 +24,7 @@
* NumberFormat.
*/
class IntlTestNumberFormat: public IntlTest {
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
private:
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/tsputil.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/tsputil.cpp
index b566c850eaf..8d4c41b6f0d 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/tsputil.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/tsputil.cpp
@@ -218,7 +218,7 @@ PUtilTest::maxMinTest(double a, double b, double exp, UBool max)
// NaN is weird- comparisons with NaN _always_ return false, with the
// exception of !=, which _always_ returns true
void
-PUtilTest::testNaN(void)
+PUtilTest::testNaN()
{
logln("NaN tests may show that the expected NaN!=NaN etc. is not true on some");
logln("platforms; however, ICU does not rely on them because it defines");
@@ -238,7 +238,7 @@ PUtilTest::testNaN(void)
//==============================
void
-PUtilTest::testPositiveInfinity(void)
+PUtilTest::testPositiveInfinity()
{
double pinf = uprv_getInfinity();
double ninf = -uprv_getInfinity();
@@ -276,7 +276,7 @@ PUtilTest::testPositiveInfinity(void)
//==============================
void
-PUtilTest::testNegativeInfinity(void)
+PUtilTest::testNegativeInfinity()
{
double pinf = uprv_getInfinity();
double ninf = -uprv_getInfinity();
@@ -318,7 +318,7 @@ PUtilTest::testNegativeInfinity(void)
// -0.0 < 0.0 == false
// generating -0.0 must be done at runtime. compiler apparently ignores sign?
void
-PUtilTest::testZero(void)
+PUtilTest::testZero()
{
// volatile is used to fake out the compiler optimizer. We really want to divide by 0.
volatile double pzero = 0.0;
@@ -367,7 +367,7 @@ PUtilTest::testZero(void)
//==============================
void
-PUtilTest::testIsNaN(void)
+PUtilTest::testIsNaN()
{
double pinf = uprv_getInfinity();
double ninf = -uprv_getInfinity();
@@ -394,7 +394,7 @@ PUtilTest::testIsNaN(void)
//==============================
void
-PUtilTest::NaNGT(void)
+PUtilTest::NaNGT()
{
double pinf = uprv_getInfinity();
double ninf = -uprv_getInfinity();
@@ -421,7 +421,7 @@ PUtilTest::NaNGT(void)
//==============================
void
-PUtilTest::NaNLT(void)
+PUtilTest::NaNLT()
{
double pinf = uprv_getInfinity();
double ninf = -uprv_getInfinity();
@@ -448,7 +448,7 @@ PUtilTest::NaNLT(void)
//==============================
void
-PUtilTest::NaNGTE(void)
+PUtilTest::NaNGTE()
{
double pinf = uprv_getInfinity();
double ninf = -uprv_getInfinity();
@@ -475,7 +475,7 @@ PUtilTest::NaNGTE(void)
//==============================
void
-PUtilTest::NaNLTE(void)
+PUtilTest::NaNLTE()
{
double pinf = uprv_getInfinity();
double ninf = -uprv_getInfinity();
@@ -502,7 +502,7 @@ PUtilTest::NaNLTE(void)
//==============================
void
-PUtilTest::NaNE(void)
+PUtilTest::NaNE()
{
double pinf = uprv_getInfinity();
double ninf = -uprv_getInfinity();
@@ -529,7 +529,7 @@ PUtilTest::NaNE(void)
//==============================
void
-PUtilTest::NaNNE(void)
+PUtilTest::NaNNE()
{
double pinf = uprv_getInfinity();
double ninf = -uprv_getInfinity();
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/tsputil.h b/Build/source/libs/icu/icu-src/source/test/intltest/tsputil.h
index c0fddcf0da9..c41d4fb0b86 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/tsputil.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/tsputil.h
@@ -20,27 +20,27 @@ class PUtilTest : public IntlTest {
void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par ) override;
public:
-// void testIEEEremainder(void);
- void testMaxMin(void);
+// void testIEEEremainder();
+ void testMaxMin();
private:
// void remainderTest(double x, double y, double exp);
void maxMinTest(double a, double b, double exp, UBool max);
// the actual tests; methods return the number of errors
- void testNaN(void);
- void testPositiveInfinity(void);
- void testNegativeInfinity(void);
- void testZero(void);
+ void testNaN();
+ void testPositiveInfinity();
+ void testNegativeInfinity();
+ void testZero();
// subtests of testNaN
- void testIsNaN(void);
- void NaNGT(void);
- void NaNLT(void);
- void NaNGTE(void);
- void NaNLTE(void);
- void NaNE(void);
- void NaNNE(void);
+ void testIsNaN();
+ void NaNGT();
+ void NaNLT();
+ void NaNGTE();
+ void NaNLTE();
+ void NaNE();
+ void NaNNE();
};
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/tstnorm.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/tstnorm.cpp
index 912861cb95c..ce72e69810a 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/tstnorm.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/tstnorm.cpp
@@ -62,6 +62,7 @@ void BasicNormalizerTest::runIndexedTest(int32_t index, UBool exec,
TESTCASE_AUTO(TestNormalizeIllFormedText);
TESTCASE_AUTO(TestComposeJamoTBase);
TESTCASE_AUTO(TestComposeBoundaryAfter);
+ TESTCASE_AUTO(TestNFKC_SCF);
TESTCASE_AUTO_END;
}
@@ -271,7 +272,7 @@ void BasicNormalizerTest::TestHangulDecomp()
/**
* The Tibetan vowel sign AA, 0f71, was messed up prior to Unicode version 2.1.9.
*/
-void BasicNormalizerTest::TestTibetan(void) {
+void BasicNormalizerTest::TestTibetan() {
UnicodeString decomp[1][3];
decomp[0][0] = str("\\u0f77");
decomp[0][1] = str("\\u0f77");
@@ -292,7 +293,7 @@ void BasicNormalizerTest::TestTibetan(void) {
* Make sure characters in the CompositionExclusion.txt list do not get
* composed to.
*/
-void BasicNormalizerTest::TestCompositionExclusion(void) {
+void BasicNormalizerTest::TestCompositionExclusion() {
// 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
@@ -344,7 +345,7 @@ void BasicNormalizerTest::TestCompositionExclusion(void) {
* map to the same canonical class, which is not the case, in
* reality.
*/
-void BasicNormalizerTest::TestZeroIndex(void) {
+void BasicNormalizerTest::TestZeroIndex() {
const char* DATA[] = {
// Expect col1 x COMPOSE_COMPAT => col2
// Expect col2 x DECOMP => col3
@@ -392,7 +393,7 @@ void BasicNormalizerTest::TestZeroIndex(void) {
/**
* Run a few specific cases that are failing for Verisign.
*/
-void BasicNormalizerTest::TestVerisign(void) {
+void BasicNormalizerTest::TestVerisign() {
/*
> Their input:
> 05B8 05B9 05B1 0591 05C3 05B0 05AC 059F
@@ -487,7 +488,7 @@ void BasicNormalizerTest::TestVerisign(void) {
// Internal utilities
//
-UnicodeString BasicNormalizerTest::hex(UChar ch) {
+UnicodeString BasicNormalizerTest::hex(char16_t ch) {
UnicodeString result;
return appendHex(ch, 4, result);
}
@@ -495,7 +496,7 @@ UnicodeString BasicNormalizerTest::hex(UChar ch) {
UnicodeString BasicNormalizerTest::hex(const UnicodeString& s) {
UnicodeString result;
for (int i = 0; i < s.length(); ++i) {
- if (i != 0) result += (UChar)0x2c/*,*/;
+ if (i != 0) result += (char16_t)0x2c/*,*/;
appendHex(s[i], 4, result);
}
return result;
@@ -628,7 +629,7 @@ private:
};
void
-BasicNormalizerTest::TestPreviousNext(const UChar *src, int32_t srcLength,
+BasicNormalizerTest::TestPreviousNext(const char16_t *src, int32_t srcLength,
const UChar32 *expect, int32_t expectLength,
const int32_t *expectIndex, // its length=expectLength+1
int32_t srcMiddle, int32_t expectMiddle,
@@ -718,7 +719,7 @@ BasicNormalizerTest::TestPreviousNext(const UChar *src, int32_t srcLength,
void
BasicNormalizerTest::TestPreviousNext() {
// src and expect strings
- static const UChar src[]={
+ static const char16_t src[]={
U16_LEAD(0x2f999), U16_TRAIL(0x2f999),
U16_LEAD(0x1d15f), U16_TRAIL(0x1d15f),
0xc4,
@@ -741,7 +742,7 @@ BasicNormalizerTest::TestPreviousNext() {
};
// src and expect strings for regression test for j2911
- static const UChar src_j2911[]={
+ static const char16_t src_j2911[]={
U16_LEAD(0x2f999), U16_TRAIL(0x2f999),
0xdd00, 0xd900, // unpaired surrogates - regression test for j2911
0xc4,
@@ -1134,7 +1135,7 @@ BasicNormalizerTest::TestCompare() {
}
// test cases with i and I to make sure Turkic works
- static const UChar iI[]={ 0x49, 0x69, 0x130, 0x131 };
+ static const char16_t iI[]={ 0x49, 0x69, 0x130, 0x131 };
UnicodeSet iSet, set;
UnicodeString s1, s2;
@@ -1873,4 +1874,20 @@ BasicNormalizerTest::TestComposeBoundaryAfter() {
assertFalse("U+FB2C boundary-after", nfkc->hasBoundaryAfter(0xFB2C));
}
+void
+BasicNormalizerTest::TestNFKC_SCF() {
+ IcuTestErrorCode errorCode(*this, "TestNFKC_SCF");
+ const Normalizer2 *nfkc_scf = Normalizer2::getNFKCSimpleCasefoldInstance(errorCode);
+ if(errorCode.errDataIfFailureAndReset(
+ "Normalizer2::getNFKCSimpleCasefoldInstance() call failed")) {
+ return;
+ }
+ // Uses only Simple_Casefolding mappings.
+ UnicodeString s(u"aA\u0308 ßẞ \u1F80\u1F88");
+ UnicodeString expected(u"aä ßß \u1F80\u1F80");
+ UnicodeString result = nfkc_scf->normalize(s, errorCode);
+ assertSuccess("nfkc_scf", errorCode.get());
+ assertEquals("nfkc_scf", expected, result);
+}
+
#endif /* #if !UCONFIG_NO_NORMALIZATION */
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/tstnorm.h b/Build/source/libs/icu/icu-src/source/test/intltest/tstnorm.h
index a35ccd28920..04f78006de4 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/tstnorm.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/tstnorm.h
@@ -25,23 +25,23 @@ public:
BasicNormalizerTest();
virtual ~BasicNormalizerTest();
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
-
- void TestHangulCompose(void);
- void TestHangulDecomp(void);
- void TestPrevious(void);
- void TestDecomp(void);
- void TestCompatDecomp(void);
- void TestCanonCompose(void);
- void TestCompatCompose(void);
- void TestTibetan(void);
- void TestCompositionExclusion(void);
- void TestZeroIndex(void);
- void TestVerisign(void);
- void TestPreviousNext(void);
- void TestNormalizerAPI(void);
- void TestConcatenate(void);
- void TestCompare(void);
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
+
+ void TestHangulCompose();
+ void TestHangulDecomp();
+ void TestPrevious();
+ void TestDecomp();
+ void TestCompatDecomp();
+ void TestCanonCompose();
+ void TestCompatCompose();
+ void TestTibetan();
+ void TestCompositionExclusion();
+ void TestZeroIndex();
+ void TestVerisign();
+ void TestPreviousNext();
+ void TestNormalizerAPI();
+ void TestConcatenate();
+ void TestCompare();
void FindFoldFCDExceptions();
void TestSkippable();
void TestCustomComp();
@@ -54,6 +54,7 @@ public:
void TestNormalizeIllFormedText();
void TestComposeJamoTBase();
void TestComposeBoundaryAfter();
+ void TestNFKC_SCF();
private:
UnicodeString canonTests[24][3];
@@ -61,7 +62,7 @@ private:
UnicodeString hangulCanon[2][3];
void
- TestPreviousNext(const UChar *src, int32_t srcLength,
+ TestPreviousNext(const char16_t *src, int32_t srcLength,
const UChar32 *expext, int32_t expectLength,
const int32_t *expectIndex, // its length=expectLength+1
int32_t srcMiddle, int32_t expectMiddle,
@@ -86,7 +87,7 @@ private:
Normalizer* result,
const UnicodeString& errPrefix);
- static UnicodeString hex(UChar ch);
+ static UnicodeString hex(char16_t ch);
static UnicodeString hex(const UnicodeString& str);
void checkLowMappingToEmpty(const Normalizer2 &n2);
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/tstnrapi.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/tstnrapi.cpp
index e661c1ed861..1bda5817584 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/tstnrapi.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/tstnrapi.cpp
@@ -58,7 +58,7 @@ BasicNormalizerTest::TestNormalizerAPI() {
// test compose() and decompose()
UnicodeString tel, nfkc, nfkd;
tel=UnicodeString(1, (UChar32)0x2121, 10);
- tel.insert(1, (UChar)0x301);
+ tel.insert(1, (char16_t)0x301);
UErrorCode errorCode=U_ZERO_ERROR;
Normalizer::compose(tel, true, 0, nfkc, errorCode);
@@ -95,7 +95,7 @@ BasicNormalizerTest::TestNormalizerAPI() {
}
}
- // test setText(UChar *), getUMode() and setMode()
+ // test setText(char16_t *), getUMode() and setMode()
errorCode=U_ZERO_ERROR;
copy.setText(s.getBuffer()+1, s.length()-1, errorCode);
copy.setMode(UNORM_NFD);
@@ -103,19 +103,19 @@ BasicNormalizerTest::TestNormalizerAPI() {
errln("error in Normalizer::setMode() or Normalizer::getUMode()");
}
if(copy.next()!=0x308 || copy.next()!=0x1100) {
- dataerrln("error in Normalizer::setText(UChar *) or Normalizer::setMode()");
+ dataerrln("error in Normalizer::setText(char16_t *) or Normalizer::setMode()");
}
- // test setText(UChar *, length=-1)
+ // test setText(char16_t *, length=-1)
errorCode=U_ZERO_ERROR;
// NUL-terminate s
- s.append((UChar)0); // append NUL
+ s.append((char16_t)0); // append NUL
s.truncate(s.length()-1); // undo length change
copy.setText(s.getBuffer()+1, -1, errorCode);
if(copy.endIndex()!=s.length()-1) {
- errln("error in Normalizer::setText(UChar *, -1)");
+ errln("error in Normalizer::setText(char16_t *, -1)");
}
// test setOption() and getOption()
@@ -143,7 +143,7 @@ BasicNormalizerTest::TestNormalizerAPI() {
}
// test that the same string can be used as source and destination
- s.setTo((UChar)0xe4);
+ s.setTo((char16_t)0xe4);
Normalizer::normalize(s, UNORM_NFD, 0, s, status);
if(s.charAt(1)!=0x308) {
dataerrln("error in Normalizer::normalize(UNORM_NFD, self)");
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/tufmtts.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/tufmtts.cpp
index 8ce314b7e5f..347f43a7c02 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/tufmtts.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/tufmtts.cpp
@@ -134,7 +134,7 @@ void TimeUnitTest::testBasic() {
UnicodeString formatted;
Formattable formattable;
formattable.adoptObject(source);
- formatted = ((Format*)formats[style])->format(formattable, formatted, status);
+ formatted = (dynamic_cast<Format*>(formats[style]))->format(formattable, formatted, status);
if (!assertSuccess("format()", status)) return;
#ifdef TUFMTTS_DEBUG
char formatResult[1000];
@@ -142,16 +142,16 @@ void TimeUnitTest::testBasic() {
std::cout << "format result: " << formatResult << "\n";
#endif
Formattable result;
- ((Format*)formats[style])->parseObject(formatted, result, status);
+ (dynamic_cast<Format*>(formats[style]))->parseObject(formatted, result, status);
if (!assertSuccess("parseObject()", status)) return;
- if (!tmaEqual(*((TimeUnitAmount *)result.getObject()), *((TimeUnitAmount *) formattable.getObject()))) {
+ if (!tmaEqual(*(dynamic_cast<const TimeUnitAmount*>(result.getObject())), *(dynamic_cast<const TimeUnitAmount*>(formattable.getObject())))) {
dataerrln("No round trip: ");
}
// other style parsing
Formattable result_1;
- ((Format*)formats[1-style])->parseObject(formatted, result_1, status);
+ (dynamic_cast<Format*>(formats[1-style]))->parseObject(formatted, result_1, status);
if (!assertSuccess("parseObject()", status)) return;
- if (!tmaEqual(*((TimeUnitAmount *)result_1.getObject()), *((TimeUnitAmount *) formattable.getObject()))) {
+ if (!tmaEqual(*(dynamic_cast<const TimeUnitAmount*>(result_1.getObject())), *(dynamic_cast<const TimeUnitAmount*>(formattable.getObject())))) {
dataerrln("No round trip: ");
}
}
@@ -312,28 +312,28 @@ void TimeUnitTest::testGreekWithFallback() {
UTimeUnitFormatStyle styles[] = {UTMUTFMT_FULL_STYLE, UTMUTFMT_ABBREVIATED_STYLE};
const int numbers[] = {1, 7};
- const UChar oneSecond[] = {0x0031, 0x0020, 0x03b4, 0x03b5, 0x03c5, 0x03c4, 0x03b5, 0x03c1, 0x03cc, 0x03bb, 0x03b5, 0x03c0, 0x03c4, 0x03bf, 0};
- const UChar oneSecondShort[] = {0x0031, 0x0020, 0x03b4, 0x03b5, 0x03c5, 0x03c4, 0x002e, 0};
- const UChar oneMinute[] = {0x0031, 0x0020, 0x03bb, 0x03b5, 0x03c0, 0x03c4, 0x03cc, 0};
- const UChar oneMinuteShort[] = {0x0031, 0x0020, 0x03bb, 0x002e, 0};
- const UChar oneHour[] = {0x0031, 0x0020, 0x03ce, 0x03c1, 0x03b1, 0};
- const UChar oneHourShort[] = {0x0031, 0x0020, 0x03ce, 0x002e, 0};
- const UChar oneDay[] = {0x0031, 0x0020, 0x03b7, 0x03bc, 0x03ad, 0x03c1, 0x03b1, 0};
- const UChar oneMonth[] = {0x0031, 0x0020, 0x03bc, 0x03ae, 0x03bd, 0x03b1, 0x03c2, 0};
- const UChar oneMonthShort[] = {0x0031, 0x0020, 0x03bc, 0x03ae, 0x03bd, 0x002e, 0};
- const UChar oneYear[] = {0x0031, 0x0020, 0x03ad, 0x03c4, 0x03bf, 0x03c2, 0};
- const UChar oneYearShort[] = {0x0031, 0x0020, 0x03ad, 0x03c4, 0x002e, 0};
- const UChar sevenSeconds[] = {0x0037, 0x0020, 0x03b4, 0x03b5, 0x03c5, 0x03c4, 0x03b5, 0x03c1, 0x03cc, 0x03bb, 0x03b5, 0x03c0, 0x03c4, 0x03b1, 0};
- const UChar sevenSecondsShort[] = {0x0037, 0x0020, 0x03b4, 0x03b5, 0x03c5, 0x03c4, 0x002e, 0};
- const UChar sevenMinutes[] = {0x0037, 0x0020, 0x03bb, 0x03b5, 0x03c0, 0x03c4, 0x03ac, 0};
- const UChar sevenMinutesShort[] = {0x0037, 0x0020, 0x03bb, 0x002e, 0};
- const UChar sevenHours[] = {0x0037, 0x0020, 0x03ce, 0x03c1, 0x03b5, 0x03c2, 0};
- const UChar sevenHoursShort[] = {0x0037, 0x0020, 0x03ce, 0x002e, 0};
- const UChar sevenDays[] = {0x0037, 0x0020, 0x03b7, 0x03bc, 0x03ad, 0x03c1, 0x03b5, 0x03c2, 0};
- const UChar sevenMonths[] = {0x0037, 0x0020, 0x03bc, 0x03ae, 0x03bd, 0x03b5, 0x3c2, 0};
- const UChar sevenMonthsShort[] = {0x0037, 0x0020, 0x03bc, 0x03ae, 0x03bd, 0x002e, 0};
- const UChar sevenYears[] = {0x0037, 0x0020, 0x03ad, 0x03c4, 0x03b7, 0};
- const UChar sevenYearsShort[] = {0x0037, 0x0020, 0x03ad, 0x03c4, 0x002e, 0};
+ const char16_t oneSecond[] = {0x0031, 0x0020, 0x03b4, 0x03b5, 0x03c5, 0x03c4, 0x03b5, 0x03c1, 0x03cc, 0x03bb, 0x03b5, 0x03c0, 0x03c4, 0x03bf, 0};
+ const char16_t oneSecondShort[] = {0x0031, 0x0020, 0x03b4, 0x03b5, 0x03c5, 0x03c4, 0x002e, 0};
+ const char16_t oneMinute[] = {0x0031, 0x0020, 0x03bb, 0x03b5, 0x03c0, 0x03c4, 0x03cc, 0};
+ const char16_t oneMinuteShort[] = {0x0031, 0x0020, 0x03bb, 0x002e, 0};
+ const char16_t oneHour[] = {0x0031, 0x0020, 0x03ce, 0x03c1, 0x03b1, 0};
+ const char16_t oneHourShort[] = {0x0031, 0x0020, 0x03ce, 0x002e, 0};
+ const char16_t oneDay[] = {0x0031, 0x0020, 0x03b7, 0x03bc, 0x03ad, 0x03c1, 0x03b1, 0};
+ const char16_t oneMonth[] = {0x0031, 0x0020, 0x03bc, 0x03ae, 0x03bd, 0x03b1, 0x03c2, 0};
+ const char16_t oneMonthShort[] = {0x0031, 0x0020, 0x03bc, 0x03ae, 0x03bd, 0x002e, 0};
+ const char16_t oneYear[] = {0x0031, 0x0020, 0x03ad, 0x03c4, 0x03bf, 0x03c2, 0};
+ const char16_t oneYearShort[] = {0x0031, 0x0020, 0x03ad, 0x03c4, 0x002e, 0};
+ const char16_t sevenSeconds[] = {0x0037, 0x0020, 0x03b4, 0x03b5, 0x03c5, 0x03c4, 0x03b5, 0x03c1, 0x03cc, 0x03bb, 0x03b5, 0x03c0, 0x03c4, 0x03b1, 0};
+ const char16_t sevenSecondsShort[] = {0x0037, 0x0020, 0x03b4, 0x03b5, 0x03c5, 0x03c4, 0x002e, 0};
+ const char16_t sevenMinutes[] = {0x0037, 0x0020, 0x03bb, 0x03b5, 0x03c0, 0x03c4, 0x03ac, 0};
+ const char16_t sevenMinutesShort[] = {0x0037, 0x0020, 0x03bb, 0x002e, 0};
+ const char16_t sevenHours[] = {0x0037, 0x0020, 0x03ce, 0x03c1, 0x03b5, 0x03c2, 0};
+ const char16_t sevenHoursShort[] = {0x0037, 0x0020, 0x03ce, 0x002e, 0};
+ const char16_t sevenDays[] = {0x0037, 0x0020, 0x03b7, 0x03bc, 0x03ad, 0x03c1, 0x03b5, 0x03c2, 0};
+ const char16_t sevenMonths[] = {0x0037, 0x0020, 0x03bc, 0x03ae, 0x03bd, 0x03b5, 0x3c2, 0};
+ const char16_t sevenMonthsShort[] = {0x0037, 0x0020, 0x03bc, 0x03ae, 0x03bd, 0x002e, 0};
+ const char16_t sevenYears[] = {0x0037, 0x0020, 0x03ad, 0x03c4, 0x03b7, 0};
+ const char16_t sevenYearsShort[] = {0x0037, 0x0020, 0x03ad, 0x03c4, 0x002e, 0};
const UnicodeString oneSecondStr(oneSecond);
const UnicodeString oneSecondShortStr(oneSecondShort);
@@ -410,7 +410,7 @@ void TimeUnitTest::testGreekWithFallback() {
UnicodeString str;
fmt.adoptObject(tamt.orphan());
- str = ((Format *)tfmt.getAlias())->format(fmt, str, status);
+ str = (dynamic_cast<Format*>(tfmt.getAlias()))->format(fmt, str, status);
if (!assertSuccess("formatting relative time failed", status)) {
#ifdef TUFMTTS_DEBUG
std::cout << "Failed to format" << "\n";
@@ -469,7 +469,7 @@ void TimeUnitTest::test10219Plurals() {
dataerrln("generating TimeUnitFormat Object failed: %s", u_errorName(status));
return;
}
- LocalPointer<DecimalFormat> nf((DecimalFormat *) NumberFormat::createInstance(usLocale, status));
+ LocalPointer<DecimalFormat> nf(dynamic_cast<DecimalFormat*>(NumberFormat::createInstance(usLocale, status)));
if (U_FAILURE(status)) {
dataerrln("generating NumberFormat Object failed: %s", u_errorName(status));
return;
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/tzbdtest.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/tzbdtest.cpp
index bce8ff4ab9f..0e5636375b8 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/tzbdtest.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/tzbdtest.cpp
@@ -300,7 +300,7 @@ TimeZoneBoundaryTest::TestBoundaries()
TimeZone* save = TimeZone::createDefault();
TimeZone::setDefault(*pst);
- if (tempcal != NULL) {
+ if (tempcal != nullptr) {
// DST changeover for PST is 4/6/1997 at 2 hours past midnight
// at 238978.0 epoch hours.
tempcal->clear();
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/tzbdtest.h b/Build/source/libs/icu/icu-src/source/test/intltest/tzbdtest.h
index 549cdecf25e..c9046804790 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/tzbdtest.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/tzbdtest.h
@@ -59,7 +59,7 @@ public: // package
* Test the behavior of SimpleTimeZone at the transition into and out of DST.
* Use a binary search to find boundaries.
*/
- virtual void TestBoundaries(void);
+ virtual void TestBoundaries();
/**
* internal subroutine used by TestNewRules
@@ -69,7 +69,7 @@ public: // package
/**
* Test the handling of the "new" rules; that is, rules other than nth Day of week.
*/
- virtual void TestNewRules(void);
+ virtual void TestNewRules();
/**
* Find boundaries by stepping.
@@ -80,7 +80,7 @@ public: // package
* Test the behavior of SimpleTimeZone at the transition into and out of DST.
* Use a stepwise march to find boundaries.
*/
- virtual void TestStepwise(void);
+ virtual void TestStepwise();
void verifyMapping(Calendar& cal, int year, int month, int dom, int hour,
double epochHours) ;
private:
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/tzfmttst.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/tzfmttst.cpp
index 2fd11b1562e..db79fc8a3d8 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/tzfmttst.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/tzfmttst.cpp
@@ -55,11 +55,11 @@ static const char* PATTERNS[] = {
"VVVV"
};
-static const UChar ETC_UNKNOWN[] = {0x45, 0x74, 0x63, 0x2F, 0x55, 0x6E, 0x6B, 0x6E, 0x6F, 0x77, 0x6E, 0};
+static const char16_t ETC_UNKNOWN[] = {0x45, 0x74, 0x63, 0x2F, 0x55, 0x6E, 0x6B, 0x6E, 0x6F, 0x77, 0x6E, 0};
-static const UChar ETC_SLASH[] = { 0x45, 0x74, 0x63, 0x2F, 0 }; // "Etc/"
-static const UChar SYSTEMV_SLASH[] = { 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x56, 0x2F, 0 }; // "SystemV/
-static const UChar RIYADH8[] = { 0x52, 0x69, 0x79, 0x61, 0x64, 0x68, 0x38, 0 }; // "Riyadh8"
+static const char16_t ETC_SLASH[] = { 0x45, 0x74, 0x63, 0x2F, 0 }; // "Etc/"
+static const char16_t SYSTEMV_SLASH[] = { 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x56, 0x2F, 0 }; // "SystemV/
+static const char16_t RIYADH8[] = { 0x52, 0x69, 0x79, 0x61, 0x64, 0x68, 0x38, 0 }; // "Riyadh8"
static UBool contains(const char** list, const char* str) {
for (int32_t i = 0; list[i]; i++) {
@@ -92,7 +92,7 @@ TimeZoneFormatTest::runIndexedTest( int32_t index, UBool exec, const char* &name
}
void
-TimeZoneFormatTest::TestTimeZoneRoundTrip(void) {
+TimeZoneFormatTest::TestTimeZoneRoundTrip() {
UErrorCode status = U_ZERO_ERROR;
SimpleTimeZone unknownZone(-31415, ETC_UNKNOWN);
@@ -275,8 +275,8 @@ TimeZoneFormatTest::TestTimeZoneRoundTrip(void) {
status = U_ZERO_ERROR;
} else if (outtzid != canonical) {
// Canonical ID did not match - check the rules
- if (!((BasicTimeZone*)&outtz)->hasEquivalentTransitions((BasicTimeZone&)*tz, low, high, true, status)) {
- if (canonical.indexOf((UChar)0x27 /*'/'*/) == -1) {
+ if (!(dynamic_cast<const BasicTimeZone*>(&outtz))->hasEquivalentTransitions(dynamic_cast<BasicTimeZone&>(*tz), low, high, true, status)) {
+ if (canonical.indexOf((char16_t)0x27 /*'/'*/) == -1) {
// Exceptional cases, such as CET, EET, MET and WET
logln((UnicodeString)"Canonical round trip failed (as expected); tz=" + *tzid
+ ", locale=" + LOCALES[locidx].getName() + ", pattern=" + PATTERNS[patidx]
@@ -334,7 +334,8 @@ TimeZoneFormatTest::TestTimeZoneRoundTrip(void) {
}
} else {
// Specific or generic: raw offset must be preserved.
- if (inRaw != outRaw) {
+ if (inRaw != outRaw && !(uprv_strncmp(LOCALES[locidx].getName(),"ku",2)==0 && tzid->compare(u"America/Miquelon",16)==0
+ && logKnownIssue("CLDR-17024", "TestTimeZoneRoundTrip exhaustive fail with tz=America/Miquelon, locale=ku"))) {
errln((UnicodeString)"Raw offset round trip failed; tz=" + *tzid
+ ", locale=" + LOCALES[locidx].getName() + ", pattern=" + PATTERNS[patidx]
+ ", time=" + DATES[datidx] + ", str=" + tzstr
@@ -365,18 +366,18 @@ static UBool isSpecialTimeRoundTripCase(const char* loc,
const char* pattern;
UDate time;
} EXCLUSIONS[] = {
- {NULL, "Asia/Chita", "zzzz", 1414252800000.0},
- {NULL, "Asia/Chita", "vvvv", 1414252800000.0},
- {NULL, "Asia/Srednekolymsk", "zzzz", 1414241999999.0},
- {NULL, "Asia/Srednekolymsk", "vvvv", 1414241999999.0},
- {NULL, NULL, NULL, U_DATE_MIN}
+ {nullptr, "Asia/Chita", "zzzz", 1414252800000.0},
+ {nullptr, "Asia/Chita", "vvvv", 1414252800000.0},
+ {nullptr, "Asia/Srednekolymsk", "zzzz", 1414241999999.0},
+ {nullptr, "Asia/Srednekolymsk", "vvvv", 1414241999999.0},
+ {nullptr, nullptr, nullptr, U_DATE_MIN}
};
UBool isExcluded = false;
- for (int32_t i = 0; EXCLUSIONS[i].id != NULL; i++) {
- if (EXCLUSIONS[i].loc == NULL || uprv_strcmp(loc, EXCLUSIONS[i].loc) == 0) {
+ for (int32_t i = 0; EXCLUSIONS[i].id != nullptr; i++) {
+ if (EXCLUSIONS[i].loc == nullptr || uprv_strcmp(loc, EXCLUSIONS[i].loc) == 0) {
if (id.compare(EXCLUSIONS[i].id) == 0) {
- if (EXCLUSIONS[i].pattern == NULL || uprv_strcmp(pattern, EXCLUSIONS[i].pattern) == 0) {
+ if (EXCLUSIONS[i].pattern == nullptr || uprv_strcmp(pattern, EXCLUSIONS[i].pattern) == 0) {
if (EXCLUSIONS[i].time == U_DATE_MIN || EXCLUSIONS[i].time == time) {
isExcluded = true;
}
@@ -410,7 +411,7 @@ struct LocaleData {
UDate END_TIME;
int32_t numDone;
- LocaleData() : localeIndex(0), patternIndex(0), testCounts(0), locales(NULL),
+ LocaleData() : localeIndex(0), patternIndex(0), testCounts(0), locales(nullptr),
nLocales(0), START_TIME(0), END_TIME(0), numDone(0) {
for (int i=0; i<UPRV_LENGTHOF(times); i++) {
times[i] = 0;
@@ -446,10 +447,10 @@ struct LocaleData {
}
};
-static LocaleData *gLocaleData = NULL;
+static LocaleData *gLocaleData = nullptr;
void
-TimeZoneFormatTest::TestTimeRoundTrip(void) {
+TimeZoneFormatTest::TestTimeRoundTrip() {
UErrorCode status = U_ZERO_ERROR;
LocalPointer <Calendar> cal(Calendar::createInstance(TimeZone::createTimeZone((UnicodeString) "UTC"), status));
if (U_FAILURE(status)) {
@@ -552,7 +553,7 @@ void TimeZoneFormatTest::RunTimeRoundTripTests(int32_t threadNumber) {
UBool expectedRoundTrip[4];
int32_t testLen = 0;
- StringEnumeration *tzids = TimeZone::createTimeZoneIDEnumeration(UCAL_ZONE_TYPE_CANONICAL, NULL, NULL, status);
+ StringEnumeration *tzids = TimeZone::createTimeZoneIDEnumeration(UCAL_ZONE_TYPE_CANONICAL, nullptr, nullptr, status);
if (U_FAILURE(status)) {
if (status == U_MISSING_RESOURCE_ERROR) {
// This error is generally caused by data not being present.
@@ -593,15 +594,15 @@ void TimeZoneFormatTest::RunTimeRoundTripTests(int32_t threadNumber) {
// Some zones do not have short ID assigned, such as Asia/Riyadh87.
// The time roundtrip will fail for such zones with pattern "V" (short zone ID).
// This is expected behavior.
- const UChar* shortZoneID = ZoneMeta::getShortID(*tzid);
- if (shortZoneID == NULL) {
+ const char16_t* shortZoneID = ZoneMeta::getShortID(*tzid);
+ if (shortZoneID == nullptr) {
continue;
}
} else if (uprv_strcmp(PATTERNS[patidx], "VVV") == 0) {
// Some zones are not associated with any region, such as Etc/GMT+8.
// The time roundtrip will fail for such zone with pattern "VVV" (exemplar location).
// This is expected behavior.
- if (tzid->indexOf((UChar)0x2F) < 0 || tzid->indexOf(ETC_SLASH, -1, 0) >= 0
+ if (tzid->indexOf((char16_t)0x2F) < 0 || tzid->indexOf(ETC_SLASH, -1, 0) >= 0
|| tzid->indexOf(SYSTEMV_SLASH, -1, 0) >= 0 || tzid->indexOf(RIYADH8, -1, 0) >= 0) {
continue;
}
@@ -613,7 +614,7 @@ void TimeZoneFormatTest::RunTimeRoundTripTests(int32_t threadNumber) {
continue;
}
- BasicTimeZone *tz = (BasicTimeZone*) TimeZone::createTimeZone(*tzid);
+ BasicTimeZone *tz = dynamic_cast<BasicTimeZone*>(TimeZone::createTimeZone(*tzid));
sdf->setTimeZone(*tz);
UDate t = gLocaleData->START_TIME;
@@ -718,7 +719,7 @@ void TimeZoneFormatTest::RunTimeRoundTripTests(int32_t threadNumber) {
}
void
-TimeZoneFormatTest::TestAdoptDefaultThreadSafe(void) {
+TimeZoneFormatTest::TestAdoptDefaultThreadSafe() {
ThreadPool<TimeZoneFormatTest> threads(this, threadCount, &TimeZoneFormatTest::RunAdoptDefaultThreadSafeTests);
threads.start(); // Start all threads.
threads.join(); // Wait for all threads to finish.
@@ -771,7 +772,7 @@ typedef struct {
} ParseTestData;
void
-TimeZoneFormatTest::TestParse(void) {
+TimeZoneFormatTest::TestParse() {
const ParseTestData DATA[] = {
// text inPos locale style
// parseOptions expected outPos timeType
@@ -821,7 +822,7 @@ TimeZoneFormatTest::TestParse(void) {
UTZFMT_PARSE_OPTION_NONE, "America/New_York", 3, UTZFMT_TIME_TYPE_DAYLIGHT},
{"EST", 0, "en_US", UTZFMT_STYLE_SPECIFIC_LONG,
- UTZFMT_PARSE_OPTION_NONE, NULL, 0, UTZFMT_TIME_TYPE_UNKNOWN},
+ UTZFMT_PARSE_OPTION_NONE, nullptr, 0, UTZFMT_TIME_TYPE_UNKNOWN},
{"EST", 0, "en_US", UTZFMT_STYLE_SPECIFIC_LONG,
UTZFMT_PARSE_OPTION_ALL_STYLES, "America/New_York", 3, UTZFMT_TIME_TYPE_STANDARD},
@@ -833,7 +834,7 @@ TimeZoneFormatTest::TestParse(void) {
UTZFMT_PARSE_OPTION_NONE, "America/Chicago", 3, UTZFMT_TIME_TYPE_STANDARD},
{"CST", 0, "en_GB", UTZFMT_STYLE_SPECIFIC_SHORT,
- UTZFMT_PARSE_OPTION_NONE, NULL, 0, UTZFMT_TIME_TYPE_UNKNOWN},
+ UTZFMT_PARSE_OPTION_NONE, nullptr, 0, UTZFMT_TIME_TYPE_UNKNOWN},
{"CST", 0, "en_GB", UTZFMT_STYLE_SPECIFIC_SHORT,
UTZFMT_PARSE_OPTION_TZ_DATABASE_ABBREVIATIONS, "America/Chicago", 3, UTZFMT_TIME_TYPE_STANDARD},
@@ -851,16 +852,16 @@ TimeZoneFormatTest::TestParse(void) {
UTZFMT_PARSE_OPTION_TZ_DATABASE_ABBREVIATIONS, "Asia/Riyadh", 3, UTZFMT_TIME_TYPE_STANDARD},
{"AQTST", 0, "en", UTZFMT_STYLE_SPECIFIC_LONG,
- UTZFMT_PARSE_OPTION_NONE, NULL, 0, UTZFMT_TIME_TYPE_UNKNOWN},
+ UTZFMT_PARSE_OPTION_NONE, nullptr, 0, UTZFMT_TIME_TYPE_UNKNOWN},
{"AQTST", 0, "en", UTZFMT_STYLE_SPECIFIC_LONG,
- UTZFMT_PARSE_OPTION_ALL_STYLES, NULL, 0, UTZFMT_TIME_TYPE_UNKNOWN},
+ UTZFMT_PARSE_OPTION_ALL_STYLES, nullptr, 0, UTZFMT_TIME_TYPE_UNKNOWN},
{"AQTST", 0, "en", UTZFMT_STYLE_SPECIFIC_LONG,
UTZFMT_PARSE_OPTION_ALL_STYLES | UTZFMT_PARSE_OPTION_TZ_DATABASE_ABBREVIATIONS, "Asia/Aqtobe", 5, UTZFMT_TIME_TYPE_DAYLIGHT},
- {NULL, 0, NULL, UTZFMT_STYLE_GENERIC_LOCATION,
- UTZFMT_PARSE_OPTION_NONE, NULL, 0, UTZFMT_TIME_TYPE_UNKNOWN}
+ {nullptr, 0, nullptr, UTZFMT_STYLE_GENERIC_LOCATION,
+ UTZFMT_PARSE_OPTION_NONE, nullptr, 0, UTZFMT_TIME_TYPE_UNKNOWN}
};
for (int32_t i = 0; DATA[i].text; i++) {
@@ -898,7 +899,7 @@ TimeZoneFormatTest::TestParse(void) {
}
void
-TimeZoneFormatTest::TestISOFormat(void) {
+TimeZoneFormatTest::TestISOFormat() {
const int32_t OFFSET[] = {
0, // 0
999, // 0.999s
@@ -1035,7 +1036,7 @@ TimeZoneFormatTest::TestISOFormat(void) {
dataerrln("Fail new Calendar: %s", u_errorName(status));
return;
}
- for (int32_t i = 0; ISO_STR[i][0] != NULL; i++) {
+ for (int32_t i = 0; ISO_STR[i][0] != nullptr; i++) {
for (int32_t j = 0; PATTERN[j] != 0; j++) {
if (ISO_STR[i][j] == 0) {
continue;
@@ -1073,7 +1074,7 @@ typedef struct {
} FormatTestData;
void
-TimeZoneFormatTest::TestFormat(void) {
+TimeZoneFormatTest::TestFormat() {
UDate dateJan = 1358208000000.0; // 2013-01-15T00:00:00Z
UDate dateJul = 1373846400000.0; // 2013-07-15T00:00:00Z
@@ -1172,7 +1173,7 @@ TimeZoneFormatTest::TestFormat(void) {
}
void
-TimeZoneFormatTest::TestFormatTZDBNames(void) {
+TimeZoneFormatTest::TestFormatTZDBNames() {
UDate dateJan = 1358208000000.0; // 2013-01-15T00:00:00Z
UDate dateJul = 1373846400000.0; // 2013-07-15T00:00:00Z
@@ -1269,7 +1270,7 @@ TimeZoneFormatTest::TestFormatTZDBNames(void) {
}
void
-TimeZoneFormatTest::TestFormatCustomZone(void) {
+TimeZoneFormatTest::TestFormatCustomZone() {
struct {
const char* id;
int32_t offset;
@@ -1300,13 +1301,13 @@ TimeZoneFormatTest::TestFormatCustomZone(void) {
UnicodeString tzstr;
UnicodeString expected = UnicodeString(TESTDATA[i].expected, -1, US_INV).unescape();
- tzfmt->format(UTZFMT_STYLE_SPECIFIC_LONG, tz, now, tzstr, NULL);
+ tzfmt->format(UTZFMT_STYLE_SPECIFIC_LONG, tz, now, tzstr, nullptr);
assertEquals(UnicodeString("Format result for ") + tzid, expected, tzstr);
}
}
void
-TimeZoneFormatTest::TestFormatTZDBNamesAllZoneCoverage(void) {
+TimeZoneFormatTest::TestFormatTZDBNamesAllZoneCoverage() {
UErrorCode status = U_ZERO_ERROR;
LocalPointer<StringEnumeration> tzids(TimeZone::createEnumeration(status));
if (U_FAILURE(status)) {
@@ -1353,7 +1354,7 @@ TimeZoneFormatTest::TestFormatTZDBNamesAllZoneCoverage(void) {
// using SimpleDateFormat initialized with different regional locales - US and Belize.
// Belize did not observe DST from 1968 to 1973, 1975 to 1982, and 1985 and later.
void
-TimeZoneFormatTest::TestCentralTime(void) {
+TimeZoneFormatTest::TestCentralTime() {
UnicodeString pattern(u"y-MM-dd HH:mm:ss zzzz");
UnicodeString testInputs[] = {
// 1970-01-01 - Chicago:STD/Belize:STD
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/tzfmttst.h b/Build/source/libs/icu/icu-src/source/test/intltest/tzfmttst.h
index 9909841d8ce..8bbf5bc2b56 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/tzfmttst.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/tzfmttst.h
@@ -21,16 +21,16 @@ class TimeZoneFormatTest : public IntlTest {
// IntlTest override
void runIndexedTest(int32_t index, UBool exec, const char*& name, char* par) override;
- void TestTimeZoneRoundTrip(void);
- void TestTimeRoundTrip(void);
- void TestParse(void);
- void TestISOFormat(void);
- void TestFormat(void);
- void TestFormatTZDBNames(void);
- void TestFormatCustomZone(void);
- void TestFormatTZDBNamesAllZoneCoverage(void);
- void TestAdoptDefaultThreadSafe(void);
- void TestCentralTime(void);
+ void TestTimeZoneRoundTrip();
+ void TestTimeRoundTrip();
+ void TestParse();
+ void TestISOFormat();
+ void TestFormat();
+ void TestFormatTZDBNames();
+ void TestFormatCustomZone();
+ void TestFormatTZDBNamesAllZoneCoverage();
+ void TestAdoptDefaultThreadSafe();
+ void TestCentralTime();
void RunTimeRoundTripTests(int32_t threadNumber);
void RunAdoptDefaultThreadSafeTests(int32_t threadNumber);
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/tzoffloc.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/tzoffloc.cpp
index b28a0c5bb18..8990e3cba31 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/tzoffloc.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/tzoffloc.cpp
@@ -131,7 +131,7 @@ TimeZoneOffsetLocalTest::TestGetOffsetAroundTransition() {
// Set up TimeZone objects - OlsonTimeZone, SimpleTimeZone and RuleBasedTimeZone
BasicTimeZone *TESTZONES[NUM_TIMEZONES];
- TESTZONES[0] = (BasicTimeZone*)TimeZone::createTimeZone("America/Los_Angeles");
+ TESTZONES[0] = dynamic_cast<BasicTimeZone*>(TimeZone::createTimeZone("America/Los_Angeles"));
TESTZONES[1] = new SimpleTimeZone(-8*HOUR, "Simple Pacific Time",
UCAL_APRIL, 1, UCAL_SUNDAY, 2*HOUR,
UCAL_OCTOBER, -1, UCAL_SUNDAY, 2*HOUR, status);
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/tzoffloc.h b/Build/source/libs/icu/icu-src/source/test/intltest/tzoffloc.h
index ded9fcf7c28..b68c94f65a7 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/tzoffloc.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/tzoffloc.h
@@ -20,7 +20,7 @@ class TimeZoneOffsetLocalTest : public IntlTest {
// IntlTest override
void runIndexedTest(int32_t index, UBool exec, const char*& name, char* par) override;
- void TestGetOffsetAroundTransition(void);
+ void TestGetOffsetAroundTransition();
};
#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/tzregts.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/tzregts.cpp
index 745bc265c9d..95fc1b55bc5 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/tzregts.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/tzregts.cpp
@@ -316,7 +316,7 @@ void TimeZoneRegressionTest:: Test4096952() {
*/
void TimeZoneRegressionTest:: Test4109314() {
UErrorCode status = U_ZERO_ERROR;
- GregorianCalendar *testCal = (GregorianCalendar*)Calendar::createInstance(status);
+ GregorianCalendar *testCal = dynamic_cast<GregorianCalendar*>(Calendar::createInstance(status));
if(U_FAILURE(status)) {
dataerrln("Error creating calendar %s", u_errorName(status));
delete testCal;
@@ -911,7 +911,7 @@ TimeZoneRegressionTest::Test4162593()
}
for(int32_t j = 0; j < 3; j++) {
- TimeZone *tz = (TimeZone*)DATA_TZ[j];
+ TimeZone *tz = DATA_TZ[j];
TimeZone::setDefault(*tz);
fmt->setTimeZone(*tz);
@@ -1159,7 +1159,7 @@ TimeZoneRegressionTest::TestJDK12API()
* SimpleTimeZone allows invalid DOM values.
*/
void TimeZoneRegressionTest::Test4184229() {
- SimpleTimeZone* zone = NULL;
+ SimpleTimeZone* zone = nullptr;
UErrorCode status = U_ZERO_ERROR;
zone = new SimpleTimeZone(0, "A", 0, -1, 0, 0, 0, 0, 0, 0, status);
if(U_SUCCESS(status)){
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/tzregts.h b/Build/source/libs/icu/icu-src/source/test/intltest/tzregts.h
index 505e8c9d44b..27228b530f4 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/tzregts.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/tzregts.h
@@ -29,27 +29,27 @@ class TimeZoneRegressionTest: public IntlTest {
void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par ) override;
public:
- void Test4052967(void);
- void Test4073209(void);
- void Test4073215(void);
- void Test4084933(void);
- void Test4096952(void);
- void Test4109314(void);
- void Test4126678(void);
- void Test4151406(void);
- void Test4151429(void);
- void Test4154537(void);
- void Test4154542(void);
- void Test4154650(void);
- void Test4154525(void);
- void Test4162593(void);
- void Test4176686(void);
- void TestJ186(void);
- void TestJ449(void);
- void TestJDK12API(void);
- void Test4184229(void);
+ void Test4052967();
+ void Test4073209();
+ void Test4073215();
+ void Test4084933();
+ void Test4096952();
+ void Test4109314();
+ void Test4126678();
+ void Test4151406();
+ void Test4151429();
+ void Test4154537();
+ void Test4154542();
+ void Test4154650();
+ void Test4154525();
+ void Test4162593();
+ void Test4176686();
+ void TestJ186();
+ void TestJ449();
+ void TestJDK12API();
+ void Test4184229();
UBool checkCalendar314(GregorianCalendar *testCal, TimeZone *testTZ);
- void TestNegativeDaylightSaving(void);
+ void TestNegativeDaylightSaving();
protected:
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/tzrulets.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/tzrulets.cpp
index d539dbb9162..14ce88bcdca 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/tzrulets.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/tzrulets.cpp
@@ -86,31 +86,31 @@ TestZIDEnumeration::TestZIDEnumeration(UBool all)
tzenum = TimeZone::createEnumeration(status);
len = tzenum->count(status);
} else {
- tzenum = NULL;
+ tzenum = nullptr;
len = UPRV_LENGTHOF(TESTZIDS);
}
}
TestZIDEnumeration::~TestZIDEnumeration() {
- if (tzenum != NULL) {
+ if (tzenum != nullptr) {
delete tzenum;
}
}
const UnicodeString*
TestZIDEnumeration::snext(UErrorCode& status) {
- if (tzenum != NULL) {
+ if (tzenum != nullptr) {
return tzenum->snext(status);
} else if (U_SUCCESS(status) && idx < len) {
unistr = UnicodeString(TESTZIDS[idx++], "");
return &unistr;
}
- return NULL;
+ return nullptr;
}
void
TestZIDEnumeration::reset(UErrorCode& status) {
- if (tzenum != NULL) {
+ if (tzenum != nullptr) {
tzenum->reset(status);
} else {
idx = 0;
@@ -150,7 +150,7 @@ void TimeZoneRuleTest::runIndexedTest( int32_t index, UBool exec, const char* &n
* Compare SimpleTimeZone with equivalent RBTZ
*/
void
-TimeZoneRuleTest::TestSimpleRuleBasedTimeZone(void) {
+TimeZoneRuleTest::TestSimpleRuleBasedTimeZone() {
UErrorCode status = U_ZERO_ERROR;
SimpleTimeZone stz(-1*HOUR, "TestSTZ",
UCAL_SEPTEMBER, -30, -UCAL_SATURDAY, 1*HOUR, SimpleTimeZone::WALL_TIME,
@@ -424,11 +424,11 @@ TimeZoneRuleTest::TestSimpleRuleBasedTimeZone(void) {
* equivalent rules in a certain time range
*/
void
-TimeZoneRuleTest::TestHistoricalRuleBasedTimeZone(void) {
+TimeZoneRuleTest::TestHistoricalRuleBasedTimeZone() {
UErrorCode status = U_ZERO_ERROR;
// Compare to America/New_York with equivalent RBTZ
- BasicTimeZone *ny = (BasicTimeZone*)TimeZone::createTimeZone("America/New_York");
+ BasicTimeZone *ny = dynamic_cast<BasicTimeZone*>(TimeZone::createTimeZone("America/New_York"));
//RBTZ
InitialTimeZoneRule *ir = new InitialTimeZoneRule("EST", -5*HOUR, 0);
@@ -597,7 +597,7 @@ TimeZoneRuleTest::TestHistoricalRuleBasedTimeZone(void) {
* are actual time transitions.
*/
void
-TimeZoneRuleTest::TestOlsonTransition(void) {
+TimeZoneRuleTest::TestOlsonTransition() {
const int32_t TESTYEARS[][2] = {
{1895, 1905}, // including int32 minimum second
@@ -610,14 +610,14 @@ TimeZoneRuleTest::TestOlsonTransition(void) {
TestZIDEnumeration tzenum(!quick);
while (true) {
const UnicodeString *tzid = tzenum.snext(status);
- if (tzid == NULL) {
+ if (tzid == nullptr) {
break;
}
if (U_FAILURE(status)) {
errln("FAIL: error returned while enumerating timezone IDs.");
break;
}
- BasicTimeZone *tz = (BasicTimeZone*)TimeZone::createTimeZone(*tzid);
+ BasicTimeZone *tz = dynamic_cast<BasicTimeZone*>(TimeZone::createTimeZone(*tzid));
for (int32_t i = 0; TESTYEARS[i][0] != 0 || TESTYEARS[i][1] != 0; i++) {
UDate lo = getUTCMillis(TESTYEARS[i][0], UCAL_JANUARY, 1);
UDate hi = getUTCMillis(TESTYEARS[i][1], UCAL_JANUARY, 1);
@@ -632,7 +632,7 @@ TimeZoneRuleTest::TestOlsonTransition(void) {
* transitions.
*/
void
-TimeZoneRuleTest::TestRBTZTransition(void) {
+TimeZoneRuleTest::TestRBTZTransition() {
const int32_t STARTYEARS[] = {
1900,
1960,
@@ -645,14 +645,14 @@ TimeZoneRuleTest::TestRBTZTransition(void) {
TestZIDEnumeration tzenum(!quick);
while (true) {
const UnicodeString *tzid = tzenum.snext(status);
- if (tzid == NULL) {
+ if (tzid == nullptr) {
break;
}
if (U_FAILURE(status)) {
errln("FAIL: error returned while enumerating timezone IDs.");
break;
}
- BasicTimeZone *tz = (BasicTimeZone*)TimeZone::createTimeZone(*tzid);
+ BasicTimeZone *tz = dynamic_cast<BasicTimeZone*>(TimeZone::createTimeZone(*tzid));
int32_t ruleCount = tz->countTransitionRules(status);
const InitialTimeZoneRule *initial;
@@ -697,13 +697,13 @@ TimeZoneRuleTest::TestRBTZTransition(void) {
}
void
-TimeZoneRuleTest::TestHasEquivalentTransitions(void) {
+TimeZoneRuleTest::TestHasEquivalentTransitions() {
// America/New_York and America/Indiana/Indianapolis are equivalent
// since 2006
UErrorCode status = U_ZERO_ERROR;
- BasicTimeZone *newyork = (BasicTimeZone*)TimeZone::createTimeZone("America/New_York");
- BasicTimeZone *indianapolis = (BasicTimeZone*)TimeZone::createTimeZone("America/Indiana/Indianapolis");
- BasicTimeZone *gmt_5 = (BasicTimeZone*)TimeZone::createTimeZone("Etc/GMT+5");
+ BasicTimeZone *newyork = dynamic_cast<BasicTimeZone*>(TimeZone::createTimeZone("America/New_York"));
+ BasicTimeZone *indianapolis = dynamic_cast<BasicTimeZone*>(TimeZone::createTimeZone("America/Indiana/Indianapolis"));
+ BasicTimeZone *gmt_5 = dynamic_cast<BasicTimeZone*>(TimeZone::createTimeZone("Etc/GMT+5"));
UDate jan1_1971 = getUTCMillis(1971, UCAL_JANUARY, 1);
UDate jan1_2005 = getUTCMillis(2005, UCAL_JANUARY, 1);
@@ -754,7 +754,7 @@ TimeZoneRuleTest::TestHasEquivalentTransitions(void) {
// America/New_York and America/Los_Angeles has same DST start rules, but
// raw offsets are different
- BasicTimeZone *losangeles = (BasicTimeZone*)TimeZone::createTimeZone("America/Los_Angeles");
+ BasicTimeZone *losangeles = dynamic_cast<BasicTimeZone*>(TimeZone::createTimeZone("America/Los_Angeles"));
if (newyork->hasEquivalentTransitions(*losangeles, jan1_2006, jan1_2011, true, status)) {
dataerrln("FAIL: New_York is not equivalent to Los Angeles, but returned true");
}
@@ -774,7 +774,7 @@ TimeZoneRuleTest::TestHasEquivalentTransitions(void) {
* VTimeZone from the VTIMEZONE data, then compare transitions
*/
void
-TimeZoneRuleTest::TestVTimeZoneRoundTrip(void) {
+TimeZoneRuleTest::TestVTimeZoneRoundTrip() {
UDate startTime = getUTCMillis(1850, UCAL_JANUARY, 1);
UDate endTime = getUTCMillis(2050, UCAL_JANUARY, 1);
@@ -782,18 +782,18 @@ TimeZoneRuleTest::TestVTimeZoneRoundTrip(void) {
TestZIDEnumeration tzenum(!quick);
while (true) {
const UnicodeString *tzid = tzenum.snext(status);
- if (tzid == NULL) {
+ if (tzid == nullptr) {
break;
}
if (U_FAILURE(status)) {
errln("FAIL: error returned while enumerating timezone IDs.");
break;
}
- BasicTimeZone *tz = (BasicTimeZone*)TimeZone::createTimeZone(*tzid);
+ BasicTimeZone *tz = dynamic_cast<BasicTimeZone*>(TimeZone::createTimeZone(*tzid));
VTimeZone *vtz_org = VTimeZone::createVTimeZoneByID(*tzid);
vtz_org->setTZURL("http://source.icu-project.org/timezone");
vtz_org->setLastModified(Calendar::getNow());
- VTimeZone *vtz_new = NULL;
+ VTimeZone *vtz_new = nullptr;
UnicodeString vtzdata;
// Write out VTIMEZONE data
vtz_org->write(vtzdata, status);
@@ -854,9 +854,9 @@ TimeZoneRuleTest::TestVTimeZoneRoundTrip(void) {
}
}
}
- if (vtz_new != NULL) {
+ if (vtz_new != nullptr) {
delete vtz_new;
- vtz_new = NULL;
+ vtz_new = nullptr;
}
}
delete tz;
@@ -869,7 +869,7 @@ TimeZoneRuleTest::TestVTimeZoneRoundTrip(void) {
* create a new VTimeZone from the VTIMEZONE data, then compare transitions
*/
void
-TimeZoneRuleTest::TestVTimeZoneRoundTripPartial(void) {
+TimeZoneRuleTest::TestVTimeZoneRoundTripPartial() {
const int32_t STARTYEARS[] = {
1900,
1950,
@@ -882,16 +882,16 @@ TimeZoneRuleTest::TestVTimeZoneRoundTripPartial(void) {
TestZIDEnumeration tzenum(!quick);
while (true) {
const UnicodeString *tzid = tzenum.snext(status);
- if (tzid == NULL) {
+ if (tzid == nullptr) {
break;
}
if (U_FAILURE(status)) {
errln("FAIL: error returned while enumerating timezone IDs.");
break;
}
- BasicTimeZone *tz = (BasicTimeZone*)TimeZone::createTimeZone(*tzid);
+ BasicTimeZone *tz = dynamic_cast<BasicTimeZone*>(TimeZone::createTimeZone(*tzid));
VTimeZone *vtz_org = VTimeZone::createVTimeZoneByID(*tzid);
- VTimeZone *vtz_new = NULL;
+ VTimeZone *vtz_new = nullptr;
UnicodeString vtzdata;
for (int32_t i = 0; STARTYEARS[i] != 0; i++) {
@@ -946,9 +946,9 @@ TimeZoneRuleTest::TestVTimeZoneRoundTripPartial(void) {
}
}
}
- if (vtz_new != NULL) {
+ if (vtz_new != nullptr) {
delete vtz_new;
- vtz_new = NULL;
+ vtz_new = nullptr;
}
}
delete tz;
@@ -962,7 +962,7 @@ TimeZoneRuleTest::TestVTimeZoneRoundTripPartial(void) {
* and DST savings are same in these two time zones.
*/
void
-TimeZoneRuleTest::TestVTimeZoneSimpleWrite(void) {
+TimeZoneRuleTest::TestVTimeZoneSimpleWrite() {
const int32_t TESTDATES[][3] = {
{2006, UCAL_JANUARY, 1},
{2006, UCAL_MARCH, 15},
@@ -978,7 +978,7 @@ TimeZoneRuleTest::TestVTimeZoneSimpleWrite(void) {
TestZIDEnumeration tzenum(!quick);
while (true) {
const UnicodeString *tzid = tzenum.snext(status);
- if (tzid == NULL) {
+ if (tzid == nullptr) {
break;
}
if (U_FAILURE(status)) {
@@ -986,7 +986,7 @@ TimeZoneRuleTest::TestVTimeZoneSimpleWrite(void) {
break;
}
VTimeZone *vtz_org = VTimeZone::createVTimeZoneByID(*tzid);
- VTimeZone *vtz_new = NULL;
+ VTimeZone *vtz_new = nullptr;
UnicodeString vtzdata;
for (int32_t i = 0; TESTDATES[i][0] != 0; i++) {
@@ -1018,9 +1018,9 @@ TimeZoneRuleTest::TestVTimeZoneSimpleWrite(void) {
}
}
}
- if (vtz_new != NULL) {
+ if (vtz_new != nullptr) {
delete vtz_new;
- vtz_new = NULL;
+ vtz_new = nullptr;
}
}
delete vtz_org;
@@ -1032,7 +1032,7 @@ TimeZoneRuleTest::TestVTimeZoneSimpleWrite(void) {
* LAST-MODIFIED, create a new VTimeZone from the VTIMEZONE data to see if the headers are preserved.
*/
void
-TimeZoneRuleTest::TestVTimeZoneHeaderProps(void) {
+TimeZoneRuleTest::TestVTimeZoneHeaderProps() {
const UnicodeString TESTURL1("http://source.icu-project.org");
const UnicodeString TESTURL2("http://www.ibm.com");
@@ -1047,7 +1047,7 @@ TimeZoneRuleTest::TestVTimeZoneHeaderProps(void) {
// Roundtrip conversion
UnicodeString vtzdata;
vtz->write(vtzdata, status);
- VTimeZone *newvtz1 = NULL;
+ VTimeZone *newvtz1 = nullptr;
if (U_FAILURE(status)) {
errln("FAIL: error returned while writing VTIMEZONE data 1");
return;
@@ -1103,7 +1103,7 @@ TimeZoneRuleTest::TestVTimeZoneHeaderProps(void) {
* the expected format.
*/
void
-TimeZoneRuleTest::TestGetSimpleRules(void) {
+TimeZoneRuleTest::TestGetSimpleRules() {
UDate testTimes[] = {
getUTCMillis(1970, UCAL_JANUARY, 1),
getUTCMillis(2000, UCAL_MARCH, 31),
@@ -1118,29 +1118,29 @@ TimeZoneRuleTest::TestGetSimpleRules(void) {
for (int32_t i = 0; i < numTimes ; i++) {
while (true) {
const UnicodeString *tzid = tzenum.snext(status);
- if (tzid == NULL) {
+ if (tzid == nullptr) {
break;
}
if (U_FAILURE(status)) {
errln("FAIL: error returned while enumerating timezone IDs.");
break;
}
- BasicTimeZone *tz = (BasicTimeZone*)TimeZone::createTimeZone(*tzid);
- initial = NULL;
- std = dst = NULL;
+ BasicTimeZone *tz = dynamic_cast<BasicTimeZone*>(TimeZone::createTimeZone(*tzid));
+ initial = nullptr;
+ std = dst = nullptr;
tz->getSimpleRulesNear(testTimes[i], initial, std, dst, status);
if (U_FAILURE(status)) {
errln("FAIL: getSimpleRules failed.");
break;
}
- if (initial == NULL) {
- errln("FAIL: initial rule must not be NULL");
+ if (initial == nullptr) {
+ errln("FAIL: initial rule must not be nullptr");
break;
- } else if (!((std == NULL && dst == NULL) || (std != NULL && dst != NULL))) {
+ } else if (!((std == nullptr && dst == nullptr) || (std != nullptr && dst != nullptr))) {
errln("FAIL: invalid std/dst pair.");
break;
}
- if (std != NULL) {
+ if (std != nullptr) {
const DateTimeRule *dtr = std->getRule();
if (dtr->getDateRuleType() != DateTimeRule::DOW) {
errln("FAIL: simple std rull must use DateTimeRule::DOW as date rule.");
@@ -1162,7 +1162,7 @@ TimeZoneRuleTest::TestGetSimpleRules(void) {
}
// Create an RBTZ from the rules and compare the offsets at the date
RuleBasedTimeZone *rbtz = new RuleBasedTimeZone(*tzid, initial);
- if (std != NULL) {
+ if (std != nullptr) {
rbtz->addTransitionRule(std, status);
if (U_FAILURE(status)) {
errln("FAIL: couldn't add std rule.");
@@ -1199,7 +1199,7 @@ TimeZoneRuleTest::TestGetSimpleRules(void) {
* API coverage tests for TimeZoneRule
*/
void
-TimeZoneRuleTest::TestTimeZoneRuleCoverage(void) {
+TimeZoneRuleTest::TestTimeZoneRuleCoverage() {
UDate time1 = getUTCMillis(2005, UCAL_JULY, 4);
UDate time2 = getUTCMillis(2015, UCAL_JULY, 4);
UDate time3 = getUTCMillis(1950, UCAL_JULY, 4);
@@ -1510,7 +1510,7 @@ TimeZoneRuleTest::TestTimeZoneRuleCoverage(void) {
* API coverage test for BasicTimeZone APIs in SimpleTimeZone
*/
void
-TimeZoneRuleTest::TestSimpleTimeZoneCoverage(void) {
+TimeZoneRuleTest::TestSimpleTimeZoneCoverage() {
UDate time1 = getUTCMillis(1990, UCAL_JUNE, 1);
UDate time2 = getUTCMillis(2000, UCAL_JUNE, 1);
@@ -1518,7 +1518,7 @@ TimeZoneRuleTest::TestSimpleTimeZoneCoverage(void) {
UBool avail1, avail2;
UErrorCode status = U_ZERO_ERROR;
const TimeZoneRule *trrules[2];
- const InitialTimeZoneRule *ir = NULL;
+ const InitialTimeZoneRule *ir = nullptr;
int32_t numTzRules;
// BasicTimeZone API implementation in SimpleTimeZone
@@ -1548,7 +1548,7 @@ TimeZoneRuleTest::TestSimpleTimeZoneCoverage(void) {
if (numTzRules != 0) {
errln("FAIL: Incorrect transition rule count");
}
- if (ir == NULL || ir->getRawOffset() != stz1->getRawOffset()) {
+ if (ir == nullptr || ir->getRawOffset() != stz1->getRawOffset()) {
errln("FAIL: Bad initial time zone rule");
}
@@ -1577,8 +1577,8 @@ TimeZoneRuleTest::TestSimpleTimeZoneCoverage(void) {
}
numTzRules = 2;
- trrules[0] = NULL;
- trrules[1] = NULL;
+ trrules[0] = nullptr;
+ trrules[1] = nullptr;
stz1->getTimeZoneRules(ir, trrules, numTzRules, status);
if (U_FAILURE(status)) {
errln("FAIL: getTimeZoneRules failed");
@@ -1586,13 +1586,13 @@ TimeZoneRuleTest::TestSimpleTimeZoneCoverage(void) {
if (numTzRules != 2) {
errln("FAIL: Incorrect transition rule count");
}
- if (ir == NULL || ir->getRawOffset() != stz1->getRawOffset()) {
+ if (ir == nullptr || ir->getRawOffset() != stz1->getRawOffset()) {
errln("FAIL: Bad initial time zone rule");
}
- if (trrules[0] == NULL || trrules[0]->getRawOffset() != stz1->getRawOffset()) {
+ if (trrules[0] == nullptr || trrules[0]->getRawOffset() != stz1->getRawOffset()) {
errln("FAIL: Bad transition rule 0");
}
- if (trrules[1] == NULL || trrules[1]->getRawOffset() != stz1->getRawOffset()) {
+ if (trrules[1] == nullptr || trrules[1]->getRawOffset() != stz1->getRawOffset()) {
errln("FAIL: Bad transition rule 1");
}
@@ -1614,11 +1614,11 @@ TimeZoneRuleTest::TestSimpleTimeZoneCoverage(void) {
* API coverage test for VTimeZone
*/
void
-TimeZoneRuleTest::TestVTimeZoneCoverage(void) {
+TimeZoneRuleTest::TestVTimeZoneCoverage() {
UErrorCode status = U_ZERO_ERROR;
UnicodeString TZID("Europe/Moscow");
- BasicTimeZone *otz = (BasicTimeZone*)TimeZone::createTimeZone(TZID);
+ BasicTimeZone *otz = dynamic_cast<BasicTimeZone*>(TimeZone::createTimeZone(TZID));
VTimeZone *vtz = VTimeZone::createVTimeZoneByID(TZID);
// getOffset(era, year, month, day, dayOfWeek, milliseconds, ec)
@@ -1771,7 +1771,7 @@ TimeZoneRuleTest::TestVTimeZoneCoverage(void) {
// Creation from BasicTimeZone
//
status = U_ZERO_ERROR;
- VTimeZone *vtzFromBasic = NULL;
+ VTimeZone *vtzFromBasic = nullptr;
SimpleTimeZone *simpleTZ = new SimpleTimeZone(28800000, "Asia/Singapore");
simpleTZ->setStartYear(1970);
simpleTZ->setStartRule(0, // month
@@ -1784,7 +1784,7 @@ TimeZoneRuleTest::TestVTimeZoneCoverage(void) {
goto end_basic_tz_test;
}
vtzFromBasic = VTimeZone::createVTimeZoneFromBasicTimeZone(*simpleTZ, status);
- if (U_FAILURE(status) || vtzFromBasic == NULL) {
+ if (U_FAILURE(status) || vtzFromBasic == nullptr) {
dataerrln("File %s, line %d, failed with status = %s", __FILE__, __LINE__, u_errorName(status));
goto end_basic_tz_test;
}
@@ -1822,13 +1822,13 @@ end_basic_tz_test:
void
-TimeZoneRuleTest::TestVTimeZoneParse(void) {
+TimeZoneRuleTest::TestVTimeZoneParse() {
UErrorCode status = U_ZERO_ERROR;
// Trying to create VTimeZone from empty data
UnicodeString emptyData;
VTimeZone *empty = VTimeZone::createVTimeZone(emptyData, status);
- if (U_SUCCESS(status) || empty != NULL) {
+ if (U_SUCCESS(status) || empty != nullptr) {
delete empty;
errln("FAIL: Non-null VTimeZone is returned for empty VTIMEZONE data");
}
@@ -1836,7 +1836,7 @@ TimeZoneRuleTest::TestVTimeZoneParse(void) {
// Create VTimeZone for Asia/Tokyo
UnicodeString asiaTokyoID("Asia/Tokyo");
- static const UChar asiaTokyo[] = {
+ static const char16_t asiaTokyo[] = {
/* "BEGIN:VTIMEZONE\x0D\x0A" */
0x42,0x45,0x47,0x49,0x4E,0x3A,0x56,0x54,0x49,0x4D,0x45,0x5A,0x4F,0x4E,0x45,0x0D,0x0A,
/* "TZID:Asia\x0D\x0A" */
@@ -1862,7 +1862,7 @@ TimeZoneRuleTest::TestVTimeZoneParse(void) {
0
};
VTimeZone *tokyo = VTimeZone::createVTimeZone(asiaTokyo, status);
- if (U_FAILURE(status) || tokyo == NULL) {
+ if (U_FAILURE(status) || tokyo == nullptr) {
errln("FAIL: Failed to create a VTimeZone tokyo");
} else {
// Check ID
@@ -1884,7 +1884,7 @@ TimeZoneRuleTest::TestVTimeZoneParse(void) {
delete tokyo;
// Create VTimeZone from VTIMEZONE data
- static const UChar fooData[] = {
+ static const char16_t fooData[] = {
/* "BEGIN:VCALENDAR\x0D\x0A" */
0x42,0x45,0x47,0x49,0x4E,0x3A,0x56,0x43,0x41,0x4C,0x45,0x4E,0x44,0x41,0x52,0x0D,0x0A,
/* "BEGIN:VTIMEZONE\x0D\x0A" */
@@ -1927,7 +1927,7 @@ TimeZoneRuleTest::TestVTimeZoneParse(void) {
};
VTimeZone *foo = VTimeZone::createVTimeZone(fooData, status);
- if (U_FAILURE(status) || foo == NULL) {
+ if (U_FAILURE(status) || foo == nullptr) {
errln("FAIL: Failed to create a VTimeZone foo");
} else {
// Write VTIMEZONE data
@@ -1942,9 +1942,9 @@ TimeZoneRuleTest::TestVTimeZoneParse(void) {
}
void
-TimeZoneRuleTest::TestT6216(void) {
+TimeZoneRuleTest::TestT6216() {
// Test case in #6216
- static const UChar tokyoTZ[] = {
+ static const char16_t tokyoTZ[] = {
/* "BEGIN:VCALENDAR\r\n" */
0x42,0x45,0x47,0x49,0x4e,0x3a,0x56,0x43,0x41,0x4c,0x45,0x4e,0x44,0x41,0x52,0x0d,0x0a,
/* "VERSION:2.0\r\n" */
@@ -1976,7 +1976,7 @@ TimeZoneRuleTest::TestT6216(void) {
0
};
// Single final rule, overlapping with another
- static const UChar finalOverlap[] = {
+ static const char16_t finalOverlap[] = {
/* "BEGIN:VCALENDAR\r\n" */
0x42,0x45,0x47,0x49,0x4e,0x3a,0x56,0x43,0x41,0x4c,0x45,0x4e,0x44,0x41,0x52,0x0d,0x0a,
/* "BEGIN:VTIMEZONE\r\n" */
@@ -2018,7 +2018,7 @@ TimeZoneRuleTest::TestT6216(void) {
0
};
// Single final rule, no overlapping with another
- static const UChar finalNonOverlap[] = {
+ static const char16_t finalNonOverlap[] = {
/* "BEGIN:VCALENDAR\r\n" */
0x42,0x45,0x47,0x49,0x4e,0x3a,0x56,0x43,0x41,0x4c,0x45,0x4e,0x44,0x41,0x52,0x0d,0x0a,
/* "BEGIN:VTIMEZONE\r\n" */
@@ -2148,7 +2148,7 @@ TimeZoneRuleTest::TestT6216(void) {
}
void
-TimeZoneRuleTest::TestT6669(void) {
+TimeZoneRuleTest::TestT6669() {
UErrorCode status = U_ZERO_ERROR;
SimpleTimeZone stz(0, "CustomID", UCAL_JANUARY, 1, UCAL_SUNDAY, 0, UCAL_JULY, 1, UCAL_SUNDAY, 0, status);
if (U_FAILURE(status)) {
@@ -2179,11 +2179,11 @@ TimeZoneRuleTest::TestT6669(void) {
}
void
-TimeZoneRuleTest::TestVTimeZoneWrapper(void) {
+TimeZoneRuleTest::TestVTimeZoneWrapper() {
#if 0
// local variables
UBool b;
- UChar * data = NULL;
+ char16_t * data = nullptr;
int32_t length = 0;
int32_t i;
UDate result;
@@ -2191,7 +2191,7 @@ TimeZoneRuleTest::TestVTimeZoneWrapper(void) {
UErrorCode status;
const char *name = "Test Initial";
- UChar uname[20];
+ char16_t uname[20];
UClassID cid1;
UClassID cid2;
@@ -2254,9 +2254,9 @@ TimeZoneRuleTest::TestVTimeZoneWrapper(void) {
cid2 = ztrans_getDynamicClassID(zt2);
// test vzone
- v1 = vzone_openID((UChar*)"America/Chicago", sizeof("America/Chicago"));
+ v1 = vzone_openID((char16_t*)"America/Chicago", sizeof("America/Chicago"));
v2 = vzone_clone(v1);
- //v2 = vzone_openData(const UChar* vtzdata, int32_t vtzdataLength, UErrorCode& status);
+ //v2 = vzone_openData(const char16_t* vtzdata, int32_t vtzdataLength, UErrorCode& status);
// test equality
b = vzone_equals(v1, v2);
@@ -2617,7 +2617,7 @@ static UBool hasEquivalentTransitions(/*const*/ BasicTimeZone& tz1, /*const*/Bas
// Test case for ticket#8943
// RuleBasedTimeZone#getOffsets throws NPE
void
-TimeZoneRuleTest::TestT8943(void) {
+TimeZoneRuleTest::TestT8943() {
UErrorCode status = U_ZERO_ERROR;
UnicodeString id("Ekaterinburg Time");
UnicodeString stdName("Ekaterinburg Standard Time");
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/tzrulets.h b/Build/source/libs/icu/icu-src/source/test/intltest/tzrulets.h
index 9c394df74b5..183f4e008fe 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/tzrulets.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/tzrulets.h
@@ -22,24 +22,24 @@ class TimeZoneRuleTest : public CalendarTimeZoneTest {
// IntlTest override
void runIndexedTest(int32_t index, UBool exec, const char*& name, char* par) override;
public:
- void TestSimpleRuleBasedTimeZone(void);
- void TestHistoricalRuleBasedTimeZone(void);
- void TestOlsonTransition(void);
- void TestRBTZTransition(void);
- void TestHasEquivalentTransitions(void);
- void TestVTimeZoneRoundTrip(void);
- void TestVTimeZoneRoundTripPartial(void);
- void TestVTimeZoneSimpleWrite(void);
- void TestVTimeZoneHeaderProps(void);
- void TestGetSimpleRules(void);
- void TestTimeZoneRuleCoverage(void);
- void TestSimpleTimeZoneCoverage(void);
- void TestVTimeZoneCoverage(void);
- void TestVTimeZoneParse(void);
- void TestT6216(void);
- void TestT6669(void);
- void TestVTimeZoneWrapper(void);
- void TestT8943(void);
+ void TestSimpleRuleBasedTimeZone();
+ void TestHistoricalRuleBasedTimeZone();
+ void TestOlsonTransition();
+ void TestRBTZTransition();
+ void TestHasEquivalentTransitions();
+ void TestVTimeZoneRoundTrip();
+ void TestVTimeZoneRoundTripPartial();
+ void TestVTimeZoneSimpleWrite();
+ void TestVTimeZoneHeaderProps();
+ void TestGetSimpleRules();
+ void TestTimeZoneRuleCoverage();
+ void TestSimpleTimeZoneCoverage();
+ void TestVTimeZoneCoverage();
+ void TestVTimeZoneParse();
+ void TestT6216();
+ void TestT6669();
+ void TestVTimeZoneWrapper();
+ void TestT8943();
private:
void verifyTransitions(BasicTimeZone& icutz, UDate start, UDate end);
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/tztest.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/tztest.cpp
index 127e251abe4..fc9793a8e66 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/tztest.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/tztest.cpp
@@ -17,6 +17,7 @@
#include "unicode/localpointer.h"
#include "unicode/resbund.h"
#include "unicode/strenum.h"
+#include "unicode/ustring.h"
#include "unicode/uversion.h"
#include "tztest.h"
#include "cmemory.h"
@@ -78,6 +79,8 @@ void TimeZoneTest::runIndexedTest( int32_t index, UBool exec, const char* &name,
TESTCASE_AUTO(TestGetIDForWindowsID);
TESTCASE_AUTO(TestCasablancaNameAndOffset22041);
TESTCASE_AUTO(TestRawOffsetAndOffsetConsistency22041);
+ TESTCASE_AUTO(TestGetIanaID);
+ TESTCASE_AUTO(TestGMTMinus24ICU22526);
TESTCASE_AUTO_END;
}
@@ -110,7 +113,7 @@ TimeZoneTest::TestGenericAPI()
SimpleTimeZone copy(*zone);
if (!(copy == *zone)) errln("FAIL: copy constructor or operator== failed");
- copy = *(SimpleTimeZone*)zoneclone;
+ copy = *dynamic_cast<SimpleTimeZone*>(zoneclone);
if (!(copy == *zoneclone)) errln("FAIL: assignment operator or operator== failed");
TimeZone* saveDefault = TimeZone::createDefault();
@@ -147,7 +150,17 @@ TimeZoneTest::TestGenericAPI()
/* Host time zone's offset should match the offset returned by uprv_timezone() */
if (hostZoneRawOffset != tzoffset * (-1000)) {
- errln("FAIL: detectHostTimeZone()'s raw offset != host timezone's offset");
+ UnicodeString id;
+ hostZone->getID(id);
+ // Known issues in ICU-22274 we have issues in time zone
+ // Africa/Casablanca Europe/Dublin America/Godthab America/Nuuk
+ if (id == u"Africa/Casablanca" || id == u"Europe/Dublin" ||
+ id == u"America/Godthab" || id == u"America/Nuuk" ||
+ id == u"Africa/El_Aaiun") {
+ logKnownIssue( "ICU-22274", "detectHostTimeZone()'s raw offset != host timezone's offset in TimeZone " + id);
+ } else {
+ errln("FAIL: detectHostTimeZone()'s raw offset != host timezone's offset");
+ }
}
delete hostZone;
@@ -433,7 +446,7 @@ TimeZoneTest::TestGetAvailableIDs913()
int32_t s_length;
StringEnumeration* s = TimeZone::createEnumeration(ec);
LocalPointer<StringEnumeration> tmp1(TimeZone::createEnumeration(), ec);
- if (U_FAILURE(ec) || s == NULL) {
+ if (U_FAILURE(ec) || s == nullptr) {
dataerrln("Unable to create TimeZone enumeration");
return;
}
@@ -446,13 +459,13 @@ TimeZoneTest::TestGetAvailableIDs913()
if ((i & 1) == 0) {
buf += *s->snext(ec);
} else {
- buf += UnicodeString(s->next(NULL, ec), "");
+ buf += UnicodeString(s->next(nullptr, ec), "");
}
if((i % 5) == 4) {
// replace s with a clone of itself
StringEnumeration *s2 = s->clone();
- if(s2 == NULL || s_length != s2->count(ec)) {
+ if(s2 == nullptr || s_length != s2->count(ec)) {
errln("TimezoneEnumeration.clone() failed");
} else {
delete s;
@@ -566,46 +579,46 @@ TimeZoneTest::TestGetAvailableIDsNew()
char region[4] = {0};
int32_t zoneCount;
- any = canonical = canonicalLoc = any_US = canonical_US = canonicalLoc_US = any_W5 = any_CA_W5 = any_US_E14 = NULL;
+ any = canonical = canonicalLoc = any_US = canonical_US = canonicalLoc_US = any_W5 = any_CA_W5 = any_US_E14 = nullptr;
- any = TimeZone::createTimeZoneIDEnumeration(UCAL_ZONE_TYPE_ANY, NULL, NULL, ec);
+ any = TimeZone::createTimeZoneIDEnumeration(UCAL_ZONE_TYPE_ANY, nullptr, nullptr, ec);
if (U_FAILURE(ec)) {
dataerrln("Failed to create enumeration for ANY");
goto cleanup;
}
- canonical = TimeZone::createTimeZoneIDEnumeration(UCAL_ZONE_TYPE_CANONICAL, NULL, NULL, ec);
+ canonical = TimeZone::createTimeZoneIDEnumeration(UCAL_ZONE_TYPE_CANONICAL, nullptr, nullptr, ec);
if (U_FAILURE(ec)) {
errln("Failed to create enumeration for CANONICAL");
goto cleanup;
}
- canonicalLoc = TimeZone::createTimeZoneIDEnumeration(UCAL_ZONE_TYPE_CANONICAL_LOCATION, NULL, NULL, ec);
+ canonicalLoc = TimeZone::createTimeZoneIDEnumeration(UCAL_ZONE_TYPE_CANONICAL_LOCATION, nullptr, nullptr, ec);
if (U_FAILURE(ec)) {
errln("Failed to create enumeration for CANONICALLOC");
goto cleanup;
}
- any_US = TimeZone::createTimeZoneIDEnumeration(UCAL_ZONE_TYPE_ANY, "US", NULL, ec);
+ any_US = TimeZone::createTimeZoneIDEnumeration(UCAL_ZONE_TYPE_ANY, "US", nullptr, ec);
if (U_FAILURE(ec)) {
errln("Failed to create enumeration for ANY_US");
goto cleanup;
}
- canonical_US = TimeZone::createTimeZoneIDEnumeration(UCAL_ZONE_TYPE_CANONICAL, "US", NULL, ec);
+ canonical_US = TimeZone::createTimeZoneIDEnumeration(UCAL_ZONE_TYPE_CANONICAL, "US", nullptr, ec);
if (U_FAILURE(ec)) {
errln("Failed to create enumeration for CANONICAL_US");
goto cleanup;
}
- canonicalLoc_US = TimeZone::createTimeZoneIDEnumeration(UCAL_ZONE_TYPE_CANONICAL_LOCATION, "US", NULL, ec);
+ canonicalLoc_US = TimeZone::createTimeZoneIDEnumeration(UCAL_ZONE_TYPE_CANONICAL_LOCATION, "US", nullptr, ec);
if (U_FAILURE(ec)) {
errln("Failed to create enumeration for CANONICALLOC_US");
goto cleanup;
}
rawOffset = (-5)*60*60*1000;
- any_W5 = TimeZone::createTimeZoneIDEnumeration(UCAL_ZONE_TYPE_ANY, NULL, &rawOffset, ec);
+ any_W5 = TimeZone::createTimeZoneIDEnumeration(UCAL_ZONE_TYPE_ANY, nullptr, &rawOffset, ec);
if (U_FAILURE(ec)) {
errln("Failed to create enumeration for ANY_W5");
goto cleanup;
@@ -639,10 +652,10 @@ TimeZoneTest::TestGetAvailableIDsNew()
// And ID in any set, but not in canonical set must not be a canonical ID
any->reset(ec);
- while ((id1 = any->snext(ec)) != NULL) {
+ while ((id1 = any->snext(ec)) != nullptr) {
UBool found = false;
canonical->reset(ec);
- while ((id2 = canonical->snext(ec)) != NULL) {
+ while ((id2 = canonical->snext(ec)) != nullptr) {
if (*id1 == *id2) {
found = true;
break;
@@ -671,7 +684,7 @@ TimeZoneTest::TestGetAvailableIDsNew()
// canonical set must contains only canonical IDs
canonical->reset(ec);
- while ((id1 = canonical->snext(ec)) != NULL) {
+ while ((id1 = canonical->snext(ec)) != nullptr) {
TimeZone::getCanonicalID(*id1, canonicalID, isSystemID, ec);
if (U_FAILURE(ec)) {
break;
@@ -690,7 +703,7 @@ TimeZoneTest::TestGetAvailableIDsNew()
// canonicalLoc set must contain only canonical location IDs
canonicalLoc->reset(ec);
- while ((id1 = canonicalLoc->snext(ec)) != NULL) {
+ while ((id1 = canonicalLoc->snext(ec)) != nullptr) {
TimeZone::getRegion(*id1, region, sizeof(region), ec);
if (U_FAILURE(ec)) {
break;
@@ -706,7 +719,7 @@ TimeZoneTest::TestGetAvailableIDsNew()
// any_US must contain only US zones
any_US->reset(ec);
- while ((id1 = any_US->snext(ec)) != NULL) {
+ while ((id1 = any_US->snext(ec)) != nullptr) {
TimeZone::getRegion(*id1, region, sizeof(region), ec);
if (U_FAILURE(ec)) {
break;
@@ -722,7 +735,7 @@ TimeZoneTest::TestGetAvailableIDsNew()
// any_W5 must contain only GMT-05:00 zones
any_W5->reset(ec);
- while ((id1 = any_W5->snext(ec)) != NULL) {
+ while ((id1 = any_W5->snext(ec)) != nullptr) {
TimeZone *tz = TimeZone::createTimeZone(*id1);
if (tz->getRawOffset() != (-5)*60*60*1000) {
errln((UnicodeString)"FAIL: ANY_W5 contains a zone whose offset is not -05:00: " + *id1);
@@ -764,10 +777,10 @@ TimeZoneTest::checkContainsAll(StringEnumeration *s1, const char *name1,
s2->reset(ec);
- while ((id2 = s2->snext(ec)) != NULL) {
+ while ((id2 = s2->snext(ec)) != nullptr) {
UBool found = false;
s1->reset(ec);
- while ((id1 = s1->snext(ec)) != NULL) {
+ while ((id1 = s1->snext(ec)) != nullptr) {
if (*id1 == *id2) {
found = true;
break;
@@ -947,7 +960,7 @@ void TimeZoneTest::TestShortZoneIDs()
(usesDaylight?"true":"false") +
" but it should be " +
((kReferenceList[i].daylight)?"true":"false"));
- } else {
+ } else if (!(itsID==UnicodeString(u"ART",-1) && logKnownIssue("ICU-22436", "Wrong DST status for time zone ART"))) {
dataerrln("FAIL: Time Zone " + itsID + " use daylight is " +
(usesDaylight?"true":"false") +
" but it should be " +
@@ -1059,7 +1072,7 @@ void TimeZoneTest::TestShortZoneIDs()
*/
UnicodeString& TimeZoneTest::formatOffset(int32_t offset, UnicodeString &rv) {
rv.remove();
- UChar sign = 0x002B;
+ char16_t sign = 0x002B;
if (offset < 0) {
sign = 0x002D;
offset = -offset;
@@ -1070,30 +1083,30 @@ UnicodeString& TimeZoneTest::formatOffset(int32_t offset, UnicodeString &rv) {
int32_t m = offset % 60;
int32_t h = offset / 60;
- rv += (UChar)(sign);
+ rv += (char16_t)(sign);
if (h >= 10) {
- rv += (UChar)(0x0030 + (h/10));
+ rv += (char16_t)(0x0030 + (h/10));
} else {
- rv += (UChar)0x0030;
+ rv += (char16_t)0x0030;
}
- rv += (UChar)(0x0030 + (h%10));
+ rv += (char16_t)(0x0030 + (h%10));
- rv += (UChar)0x003A; /* ':' */
+ rv += (char16_t)0x003A; /* ':' */
if (m >= 10) {
- rv += (UChar)(0x0030 + (m/10));
+ rv += (char16_t)(0x0030 + (m/10));
} else {
- rv += (UChar)0x0030;
+ rv += (char16_t)0x0030;
}
- rv += (UChar)(0x0030 + (m%10));
+ rv += (char16_t)(0x0030 + (m%10));
if (s) {
- rv += (UChar)0x003A; /* ':' */
+ rv += (char16_t)0x003A; /* ':' */
if (s >= 10) {
- rv += (UChar)(0x0030 + (s/10));
+ rv += (char16_t)(0x0030 + (s/10));
} else {
- rv += (UChar)0x0030;
+ rv += (char16_t)0x0030;
}
- rv += (UChar)(0x0030 + (s%10));
+ rv += (char16_t)(0x0030 + (s%10));
}
return rv;
}
@@ -1104,7 +1117,7 @@ UnicodeString& TimeZoneTest::formatOffset(int32_t offset, UnicodeString &rv) {
*/
UnicodeString& TimeZoneTest::formatTZID(int32_t offset, UnicodeString &rv) {
rv.remove();
- UChar sign = 0x002B;
+ char16_t sign = 0x002B;
if (offset < 0) {
sign = 0x002D;
offset = -offset;
@@ -1116,29 +1129,29 @@ UnicodeString& TimeZoneTest::formatTZID(int32_t offset, UnicodeString &rv) {
int32_t h = offset / 60;
rv += "GMT";
- rv += (UChar)(sign);
+ rv += (char16_t)(sign);
if (h >= 10) {
- rv += (UChar)(0x0030 + (h/10));
+ rv += (char16_t)(0x0030 + (h/10));
} else {
- rv += (UChar)0x0030;
+ rv += (char16_t)0x0030;
}
- rv += (UChar)(0x0030 + (h%10));
- rv += (UChar)0x003A;
+ rv += (char16_t)(0x0030 + (h%10));
+ rv += (char16_t)0x003A;
if (m >= 10) {
- rv += (UChar)(0x0030 + (m/10));
+ rv += (char16_t)(0x0030 + (m/10));
} else {
- rv += (UChar)0x0030;
+ rv += (char16_t)0x0030;
}
- rv += (UChar)(0x0030 + (m%10));
+ rv += (char16_t)(0x0030 + (m%10));
if (s) {
- rv += (UChar)0x003A;
+ rv += (char16_t)0x003A;
if (s >= 10) {
- rv += (UChar)(0x0030 + (s/10));
+ rv += (char16_t)(0x0030 + (s/10));
} else {
- rv += (UChar)0x0030;
+ rv += (char16_t)0x0030;
}
- rv += (UChar)(0x0030 + (s%10));
+ rv += (char16_t)(0x0030 + (s%10));
}
return rv;
}
@@ -1382,7 +1395,7 @@ TimeZoneTest::TestAliasedNames()
int32_t i, j, k, loc;
UnicodeString fromName, toName;
- TimeZone *from = NULL, *to = NULL;
+ TimeZone *from = nullptr, *to = nullptr;
for(i = 0; i < UPRV_LENGTHOF(kData); i++) {
from = TimeZone::createTimeZone(kData[i].from);
to = TimeZone::createTimeZone(kData[i].to);
@@ -1538,12 +1551,12 @@ TimeZoneTest::TestDisplayName()
// *** REVISIT SRL how in the world do I check this? looks java specific.
// Now be smart -- check to see if zh resource is even present.
// If not, we expect the en fallback behavior.
- ResourceBundle enRB(NULL,
+ ResourceBundle enRB(nullptr,
Locale::getEnglish(), status);
if(U_FAILURE(status))
dataerrln("Couldn't get ResourceBundle for en - %s", u_errorName(status));
- ResourceBundle mtRB(NULL,
+ ResourceBundle mtRB(nullptr,
mt_MT, status);
//if(U_FAILURE(status))
// errln("Couldn't get ResourceBundle for mt_MT");
@@ -1804,13 +1817,13 @@ void TimeZoneTest::TestCountries() {
}
for(i=0;i<n;++i){
const UnicodeString* id1 = s1->snext(ec);
- if(id1==NULL || U_FAILURE(ec)){
+ if(id1==nullptr || U_FAILURE(ec)){
errln("Failed to fetch next from TimeZone enumeration. Length returned : %i Current Index: %i", n,i);
}
TimeZone* tz1 = TimeZone::createTimeZone(*id1);
for(int j=0; j<n;++j){
const UnicodeString* id2 = s2->snext(ec);
- if(id2==NULL || U_FAILURE(ec)){
+ if(id2==nullptr || U_FAILURE(ec)){
errln("Failed to fetch next from TimeZone enumeration. Length returned : %i Current Index: %i", n,i);
}
TimeZone* tz2 = TimeZone::createTimeZone(*id2);
@@ -2104,7 +2117,10 @@ void TimeZoneTest::TestCanonicalID() {
{"America/Montreal", "America/Toronto"},
{"America/Montserrat", "America/Puerto_Rico"},
{"America/Nassau", "America/Toronto"},
+ {"America/Nipigon", "America/Toronto"},
+ {"America/Pangnirtung", "America/Iqaluit"},
{"America/Port_of_Spain", "America/Puerto_Rico"},
+ {"America/Rainy_River", "America/Winnipeg"},
{"America/Santa_Isabel", "America/Tijuana"},
{"America/Shiprock", "America/Denver"},
{"America/St_Barthelemy", "America/Puerto_Rico"},
@@ -2112,8 +2128,10 @@ void TimeZoneTest::TestCanonicalID() {
{"America/St_Lucia", "America/Puerto_Rico"},
{"America/St_Thomas", "America/Puerto_Rico"},
{"America/St_Vincent", "America/Puerto_Rico"},
+ {"America/Thunder_Bay", "America/Toronto"},
{"America/Tortola", "America/Puerto_Rico"},
{"America/Virgin", "America/Puerto_Rico"},
+ {"America/Yellowknife", "America/Edmonton"},
{"Antarctica/DumontDUrville", "Pacific/Port_Moresby"},
{"Antarctica/South_Pole", "Antarctica/McMurdo"},
{"Antarctica/Syowa", "Asia/Riyadh"},
@@ -2353,7 +2371,7 @@ static struct {
{"Europe/London", "en", true, TimeZone::SHORT, "GMT+1" /*"BST"*/},
{"Europe/London", "en", true, TimeZone::LONG, "British Summer Time"},
- {NULL, NULL, false, TimeZone::SHORT, NULL} // NULL values terminate list
+ {nullptr, nullptr, false, TimeZone::SHORT, nullptr} // nullptr values terminate list
};
void TimeZoneTest::TestDisplayNamesMeta() {
@@ -2362,7 +2380,7 @@ void TimeZoneTest::TestDisplayNamesMeta() {
if (failure(status, "GregorianCalendar", true)) return;
UBool sawAnError = false;
- for (int testNum = 0; zoneDisplayTestData[testNum].zoneName != NULL; testNum++) {
+ for (int testNum = 0; zoneDisplayTestData[testNum].zoneName != nullptr; testNum++) {
Locale locale = Locale::createFromName(zoneDisplayTestData[testNum].localeName);
TimeZone *zone = TimeZone::createTimeZone(zoneDisplayTestData[testNum].zoneName);
UnicodeString displayName;
@@ -2373,7 +2391,7 @@ void TimeZoneTest::TestDisplayNamesMeta() {
if (displayName != zoneDisplayTestData[testNum].expectedDisplayName) {
char name[100];
UErrorCode status = U_ZERO_ERROR;
- displayName.extract(name, 100, NULL, status);
+ displayName.extract(name, 100, nullptr, status);
if (isDevelopmentBuild) {
sawAnError = true;
dataerrln("Incorrect time zone display name. zone = \"%s\",\n"
@@ -2513,7 +2531,7 @@ void TimeZoneTest::TestGetGMT() {
assertFalse("getGMT() uses DST", gmt->useDaylightTime());
}
-void TimeZoneTest::TestGetWindowsID(void) {
+void TimeZoneTest::TestGetWindowsID() {
static const struct {
const char *id;
const char *winid;
@@ -2542,7 +2560,7 @@ void TimeZoneTest::TestGetWindowsID(void) {
}
}
-void TimeZoneTest::TestGetIDForWindowsID(void) {
+void TimeZoneTest::TestGetIDForWindowsID() {
static const struct {
const char *winid;
const char *region;
@@ -2571,7 +2589,7 @@ void TimeZoneTest::TestGetIDForWindowsID(void) {
}
}
-void TimeZoneTest::TestCasablancaNameAndOffset22041(void) {
+void TimeZoneTest::TestCasablancaNameAndOffset22041() {
std::unique_ptr<TimeZone> zone(TimeZone::createTimeZone("Africa/Casablanca"));
UnicodeString standardName, summerName;
zone->getDisplayName(false, TimeZone::LONG, Locale::getEnglish(), standardName);
@@ -2587,7 +2605,7 @@ void TimeZoneTest::TestCasablancaNameAndOffset22041(void) {
zone->getRawOffset(), raw);
}
-void TimeZoneTest::TestRawOffsetAndOffsetConsistency22041(void) {
+void TimeZoneTest::TestRawOffsetAndOffsetConsistency22041() {
UErrorCode status = U_ZERO_ERROR;
LocalPointer<StringEnumeration> s(TimeZone::createEnumeration(status));
if (U_FAILURE(status)) {
@@ -2608,4 +2626,52 @@ void TimeZoneTest::TestRawOffsetAndOffsetConsistency22041(void) {
zone->getRawOffset(), raw);
}
}
+
+void TimeZoneTest::TestGetIanaID() {
+ const char16_t* UNKNOWN = u"Etc/Unknown";
+ static const struct {
+ const char16_t* id;
+ const char16_t* expected;
+ } TESTDATA[] = {
+ {u"", UNKNOWN},
+ {0, UNKNOWN},
+ {UNKNOWN, UNKNOWN},
+ {u"America/New_York", u"America/New_York"},
+ {u"Asia/Calcutta", u"Asia/Kolkata"},
+ {u"Europe/Kiev", u"Europe/Kyiv"},
+ {u"Europe/Zaporozhye", u"Europe/Kyiv"},
+ {u"Etc/GMT-1", u"Etc/GMT-1"},
+ {u"Etc/GMT+20", UNKNOWN},
+ {u"PST8PDT", u"PST8PDT"},
+ {u"GMT-08:00", UNKNOWN},
+ {0, 0}
+ };
+
+ for (int32_t i = 0; TESTDATA[i].expected != 0; i++) {
+ UErrorCode sts = U_ZERO_ERROR;
+ UnicodeString inputID(TESTDATA[i].id);
+ UnicodeString ianaID;
+
+ TimeZone::getIanaID(inputID, ianaID, sts);
+ if (u_strcmp(TESTDATA[i].expected, UNKNOWN) == 0) {
+ assertEquals(inputID + " should fail", (int32_t)U_ILLEGAL_ARGUMENT_ERROR, sts);
+ assertTrue(inputID + " should set bogus", ianaID.isBogus());
+ } else {
+ assertEquals(inputID, UnicodeString(TESTDATA[i].expected), ianaID);
+ // Calling getIanaID with an IANA ID should return the same
+ UnicodeString ianaID2;
+ TimeZone::getIanaID(ianaID, ianaID2, sts);
+ assertEquals(ianaID, ianaID, ianaID2);
+ }
+ }
+}
+
+void TimeZoneTest::TestGMTMinus24ICU22526() {
+ UErrorCode status = U_ZERO_ERROR;
+ LocalPointer<TimeZone> tz(TimeZone::createTimeZone("GMT-23:59"), status);
+ U_ASSERT(U_SUCCESS(status));
+ GregorianCalendar gc(tz.orphan(), status);
+ gc.setTime(123456789, status);
+ gc.get(UCAL_MONTH, status);
+}
#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/tztest.h b/Build/source/libs/icu/icu-src/source/test/intltest/tztest.h
index 893aad65588..fa51d628a8c 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/tztest.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/tztest.h
@@ -29,26 +29,26 @@ public:
/**
* Test the offset of the PRT timezone.
*/
- virtual void TestPRTOffset(void);
+ virtual void TestPRTOffset();
/**
* Regress a specific bug with a sequence of API calls.
*/
- virtual void TestVariousAPI518(void);
+ virtual void TestVariousAPI518();
/**
* Test the call which retrieves the available IDs.
*/
- virtual void TestGetAvailableIDs913(void);
+ virtual void TestGetAvailableIDs913();
- virtual void TestGetAvailableIDsNew(void);
+ virtual void TestGetAvailableIDsNew();
/**
* Generic API testing for API coverage.
*/
- virtual void TestGenericAPI(void);
+ virtual void TestGenericAPI();
/**
* Test the setStartRule/setEndRule API calls.
*/
- virtual void TestRuleAPI(void);
+ virtual void TestRuleAPI();
void findTransition(const TimeZone& tz,
UDate min, UDate max);
@@ -64,47 +64,50 @@ public:
/**
* Test short zone IDs for compliance
*/
- virtual void TestShortZoneIDs(void);
+ virtual void TestShortZoneIDs();
/**
* Test parsing custom zones
*/
- virtual void TestCustomParse(void);
+ virtual void TestCustomParse();
/**
* Test new getDisplayName() API
*/
- virtual void TestDisplayName(void);
+ virtual void TestDisplayName();
- void TestDSTSavings(void);
- void TestAlternateRules(void);
+ void TestDSTSavings();
+ void TestAlternateRules();
- void TestCountries(void);
+ void TestCountries();
- void TestHistorical(void);
+ void TestHistorical();
- void TestEquivalentIDs(void);
+ void TestEquivalentIDs();
- void TestAliasedNames(void);
+ void TestAliasedNames();
- void TestFractionalDST(void);
+ void TestFractionalDST();
- void TestFebruary(void);
+ void TestFebruary();
void TestCanonicalIDAPI();
- void TestCanonicalID(void);
+ void TestCanonicalID();
virtual void TestDisplayNamesMeta();
- void TestGetRegion(void);
+ void TestGetRegion();
void TestGetUnknown();
void TestGetGMT();
- void TestGetWindowsID(void);
- void TestGetIDForWindowsID(void);
- void TestCasablancaNameAndOffset22041(void);
- void TestRawOffsetAndOffsetConsistency22041(void);
+ void TestGetWindowsID();
+ void TestGetIDForWindowsID();
+ void TestCasablancaNameAndOffset22041();
+ void TestRawOffsetAndOffsetConsistency22041();
+ void TestGMTMinus24ICU22526();
+
+ void TestGetIanaID();
static const UDate INTERVAL;
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/ucaconf.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/ucaconf.cpp
index 331079585bf..845b153f35c 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/ucaconf.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/ucaconf.cpp
@@ -25,11 +25,11 @@
#include "uparse.h"
UCAConformanceTest::UCAConformanceTest() :
-rbUCA(NULL),
-testFile(NULL),
+rbUCA(nullptr),
+testFile(nullptr),
status(U_ZERO_ERROR)
{
- UCA = (RuleBasedCollator *)Collator::createInstance(Locale::getRoot(), status);
+ UCA = dynamic_cast<RuleBasedCollator*>(Collator::createInstance(Locale::getRoot(), status));
if(U_FAILURE(status)) {
dataerrln("Error - UCAConformanceTest: Unable to open UCA collator! - %s", u_errorName(status));
}
@@ -156,7 +156,7 @@ static const uint32_t IS_SHIFTED = 1;
static const uint32_t FROM_RULES = 2;
static UBool
-skipLineBecauseOfBug(const UChar *s, int32_t length, uint32_t flags) {
+skipLineBecauseOfBug(const char16_t *s, int32_t length, uint32_t flags) {
// Add temporary exceptions here if there are ICU bugs, until we can fix them.
// For examples see the ICU 52 version of this file.
(void)s;
@@ -184,24 +184,24 @@ void UCAConformanceTest::testConformance(const Collator *coll)
}
logln("-prop:ucaconfnosortkeys=1 turns off getSortKey() in UCAConformanceTest");
- UBool withSortKeys = getProperty("ucaconfnosortkeys") == NULL;
+ UBool withSortKeys = getProperty("ucaconfnosortkeys") == nullptr;
int32_t line = 0;
- UChar b1[1024], b2[1024];
- UChar *buffer = b1, *oldB = NULL;
+ char16_t b1[1024], b2[1024];
+ char16_t *buffer = b1, *oldB = nullptr;
char lineB1[1024], lineB2[1024];
char *lineB = lineB1, *oldLineB = lineB2;
uint8_t sk1[1024], sk2[1024];
- uint8_t *oldSk = NULL, *newSk = sk1;
+ uint8_t *oldSk = nullptr, *newSk = sk1;
int32_t oldLen = 0;
int32_t oldBlen = 0;
uint32_t first = 0;
- while (fgets(lineB, 1024, testFile) != NULL) {
+ while (fgets(lineB, 1024, testFile) != nullptr) {
// remove trailing whitespace
u_rtrim(lineB);
@@ -224,7 +224,7 @@ void UCAConformanceTest::testConformance(const Collator *coll)
int32_t resLen = withSortKeys ? coll->getSortKey(buffer, buflen, newSk, 1024) : 0;
- if(oldSk != NULL) {
+ if(oldSk != nullptr) {
UBool ok=true;
int32_t skres = withSortKeys ? strcmp((char *)oldSk, (char *)newSk) : 0;
int32_t cmpres = coll->compare(oldB, oldBlen, buffer, buflen, status);
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/ucaconf.h b/Build/source/libs/icu/icu-src/source/test/intltest/ucaconf.h
index 0b45bca28e6..96e666d99ca 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/ucaconf.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/ucaconf.h
@@ -29,7 +29,7 @@ public:
UCAConformanceTest();
virtual ~UCAConformanceTest();
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* /*par = NULL */) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* /*par = nullptr */) override;
void TestTableNonIgnorable(/* par */);
void TestTableShifted(/* par */);
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/ucdtest.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/ucdtest.cpp
index a02011b77d9..a63b86e2164 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/ucdtest.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/ucdtest.cpp
@@ -30,7 +30,9 @@ static const char *ignorePropNames[]={
"Expands_On_NFC",
"Expands_On_NFKD",
"Expands_On_NFKC",
- "NFKC_CF"
+ "InCB",
+ "NFKC_CF",
+ "NFKC_SCF"
};
UnicodeTest::UnicodeTest()
@@ -39,7 +41,7 @@ UnicodeTest::UnicodeTest()
unknownPropertyNames=new U_NAMESPACE_QUALIFIER Hashtable(errorCode);
if(U_FAILURE(errorCode)) {
delete unknownPropertyNames;
- unknownPropertyNames=NULL;
+ unknownPropertyNames=nullptr;
}
// Ignore some property names altogether.
for(int32_t i=0; i<UPRV_LENGTHOF(ignorePropNames); ++i) {
@@ -75,6 +77,9 @@ void UnicodeTest::runIndexedTest( int32_t index, UBool exec, const char* &name,
TESTCASE_AUTO(TestBinaryCharacterProperties);
TESTCASE_AUTO(TestIntCharacterProperties);
#endif
+ TESTCASE_AUTO(TestPropertyNames);
+ TESTCASE_AUTO(TestIDSUnaryOperator);
+ TESTCASE_AUTO(TestIDCompatMath);
TESTCASE_AUTO_END;
}
@@ -93,7 +98,7 @@ getTokenIndex(const char *const tokens[], int32_t countTokens, const char *s) {
s=u_skipWhitespace(s);
for(i=0; i<countTokens; ++i) {
t=tokens[i];
- if(t!=NULL) {
+ if(t!=nullptr) {
for(j=0;; ++j) {
if(t[j]!=0) {
if(s[j]!=t[j]) {
@@ -172,7 +177,7 @@ derivedPropsLineFn(void *context,
char *fields[][2], int32_t /* fieldCount */,
UErrorCode *pErrorCode)
{
- UnicodeTest *me=(UnicodeTest *)context;
+ UnicodeTest *me=static_cast<UnicodeTest*>(context);
uint32_t start, end;
int32_t i;
@@ -187,7 +192,7 @@ derivedPropsLineFn(void *context,
if(i<0) {
UnicodeString propName(fields[1][0], (int32_t)(fields[1][1]-fields[1][0]));
propName.trim();
- if(me->unknownPropertyNames->find(propName)==NULL) {
+ if(me->unknownPropertyNames->find(propName)==nullptr) {
UErrorCode errorCode=U_ZERO_ERROR;
me->unknownPropertyNames->puti(propName, 1, errorCode);
me->errln("UnicodeTest warning: unknown property name '%s' in DerivedCoreProperties.txt or DerivedNormalizationProps.txt\n", fields[1][0]);
@@ -212,7 +217,7 @@ void UnicodeTest::TestAdditionalProperties() {
}
char path[500];
- if(getUnidataPath(path) == NULL) {
+ if(getUnidataPath(path) == nullptr) {
errln("unable to find path to source/data/unidata/");
return;
}
@@ -351,7 +356,7 @@ void UnicodeTest::TestConsistency() {
UnicodeSet set1, set2;
if (nfcImpl->getCanonStartSet(0x49, set1)) {
/* enumerate all characters that are plausible to be latin letters */
- for(UChar start=0xa0; start<0x2000; ++start) {
+ for(char16_t start=0xa0; start<0x2000; ++start) {
UnicodeString decomp=nfd->normalize(UnicodeString(start), errorCode);
if(decomp.length()>1 && decomp[0]==0x49) {
set2.add(start);
@@ -548,11 +553,11 @@ void UnicodeTest::TestEmojiProperties() {
namespace {
-UBool hbp(const UChar *s, int32_t length, UProperty which) {
+UBool hbp(const char16_t *s, int32_t length, UProperty which) {
return u_stringHasBinaryProperty(s, length, which);
}
-UBool hbp(const UChar *s, UProperty which) {
+UBool hbp(const char16_t *s, UProperty which) {
return u_stringHasBinaryProperty(s, -1, which);
}
@@ -776,7 +781,7 @@ void UnicodeTest::TestDefaultScriptExtensions() {
assertEquals("U+3012 num scx[0]", USCRIPT_COMMON, scx[0]);
}
-void UnicodeTest::TestInvalidCodePointFolding(void) {
+void UnicodeTest::TestInvalidCodePointFolding() {
// Test behavior when an invalid code point is passed to u_foldCase
static const UChar32 invalidCodePoints[] = {
0xD800, // lead surrogate
@@ -868,3 +873,154 @@ void UnicodeTest::TestIntCharacterProperties() {
}
#endif
}
+
+namespace {
+
+const char *getPropName(UProperty property, int32_t nameChoice) UPRV_NO_SANITIZE_UNDEFINED {
+ const char *name = u_getPropertyName(property, (UPropertyNameChoice)nameChoice);
+ return name != nullptr ? name : "null";
+}
+
+const char *getValueName(UProperty property, int32_t value, int32_t nameChoice)
+ UPRV_NO_SANITIZE_UNDEFINED {
+ const char *name = u_getPropertyValueName(property, value, (UPropertyNameChoice)nameChoice);
+ return name != nullptr ? name : "null";
+}
+
+} // namespace
+
+void UnicodeTest::TestPropertyNames() {
+ IcuTestErrorCode errorCode(*this, "TestPropertyNames()");
+ // Test names of certain properties & values.
+ // The UPropertyNameChoice is really an integer with only a couple of named constants.
+ UProperty prop = UCHAR_WHITE_SPACE;
+ constexpr int32_t SHORT = U_SHORT_PROPERTY_NAME;
+ constexpr int32_t LONG = U_LONG_PROPERTY_NAME;
+ assertEquals("White_Space: index -1", "null", getPropName(prop, -1));
+ assertEquals("White_Space: short", "WSpace", getPropName(prop, SHORT));
+ assertEquals("White_Space: long", "White_Space", getPropName(prop, LONG));
+ assertEquals("White_Space: index 2", "space", getPropName(prop, 2));
+ assertEquals("White_Space: index 3", "null", getPropName(prop, 3));
+
+ prop = UCHAR_SIMPLE_CASE_FOLDING;
+ assertEquals("Simple_Case_Folding: index -1", "null", getPropName(prop, -1));
+ assertEquals("Simple_Case_Folding: short", "scf", getPropName(prop, SHORT));
+ assertEquals("Simple_Case_Folding: long", "Simple_Case_Folding", getPropName(prop, LONG));
+ assertEquals("Simple_Case_Folding: index 2", "sfc", getPropName(prop, 2));
+ assertEquals("Simple_Case_Folding: index 3", "null", getPropName(prop, 3));
+
+ prop = UCHAR_CASED;
+ assertEquals("Cased=Y: index -1", "null", getValueName(prop, 1, -1));
+ assertEquals("Cased=Y: short", "Y", getValueName(prop, 1, SHORT));
+ assertEquals("Cased=Y: long", "Yes", getValueName(prop, 1, LONG));
+ assertEquals("Cased=Y: index 2", "T", getValueName(prop, 1, 2));
+ assertEquals("Cased=Y: index 3", "True", getValueName(prop, 1, 3));
+ assertEquals("Cased=Y: index 4", "null", getValueName(prop, 1, 4));
+
+ prop = UCHAR_DECOMPOSITION_TYPE;
+ int32_t value = U_DT_NOBREAK;
+ assertEquals("dt=Nb: index -1", "null", getValueName(prop, value, -1));
+ assertEquals("dt=Nb: short", "Nb", getValueName(prop, value, SHORT));
+ assertEquals("dt=Nb: long", "Nobreak", getValueName(prop, value, LONG));
+ assertEquals("dt=Nb: index 2", "nb", getValueName(prop, value, 2));
+ assertEquals("dt=Nb: index 3", "null", getValueName(prop, value, 3));
+
+ // Canonical_Combining_Class:
+ // The UCD inserts the numeric values in the second filed of its PropertyValueAliases.txt lines.
+ // In ICU, we don't treat these as names,
+ // they are just the numeric values returned by u_getCombiningClass().
+ // We return the real short and long names for the usual choice constants.
+ prop = UCHAR_CANONICAL_COMBINING_CLASS;
+ assertEquals("ccc=230: index -1", "null", getValueName(prop, 230, -1));
+ assertEquals("ccc=230: short", "A", getValueName(prop, 230, SHORT));
+ assertEquals("ccc=230: long", "Above", getValueName(prop, 230, LONG));
+ assertEquals("ccc=230: index 2", "null", getValueName(prop, 230, 2));
+
+ prop = UCHAR_GENERAL_CATEGORY;
+ value = U_DECIMAL_DIGIT_NUMBER;
+ assertEquals("gc=Nd: index -1", "null", getValueName(prop, value, -1));
+ assertEquals("gc=Nd: short", "Nd", getValueName(prop, value, SHORT));
+ assertEquals("gc=Nd: long", "Decimal_Number", getValueName(prop, value, LONG));
+ assertEquals("gc=Nd: index 2", "digit", getValueName(prop, value, 2));
+ assertEquals("gc=Nd: index 3", "null", getValueName(prop, value, 3));
+
+ prop = UCHAR_GENERAL_CATEGORY_MASK;
+ value = U_GC_P_MASK;
+ assertEquals("gc=P mask: index -1", "null", getValueName(prop, value, -1));
+ assertEquals("gc=P mask: short", "P", getValueName(prop, value, SHORT));
+ assertEquals("gc=P mask: long", "Punctuation", getValueName(prop, value, LONG));
+ assertEquals("gc=P mask: index 2", "punct", getValueName(prop, value, 2));
+ assertEquals("gc=P mask: index 3", "null", getValueName(prop, value, 3));
+}
+
+void UnicodeTest::TestIDSUnaryOperator() {
+ IcuTestErrorCode errorCode(*this, "TestIDSUnaryOperator()");
+ // New in Unicode 15.1 for just two characters.
+ assertFalse("U+2FFC IDSU", u_hasBinaryProperty(0x2ffc, UCHAR_IDS_UNARY_OPERATOR));
+ assertFalse("U+2FFD IDSU", u_hasBinaryProperty(0x2ffd, UCHAR_IDS_UNARY_OPERATOR));
+ assertTrue("U+2FFE IDSU", u_hasBinaryProperty(0x2ffe, UCHAR_IDS_UNARY_OPERATOR));
+ assertTrue("U+2FFF IDSU", u_hasBinaryProperty(0x2fff, UCHAR_IDS_UNARY_OPERATOR));
+ assertFalse("U+3000 IDSU", u_hasBinaryProperty(0x3000, UCHAR_IDS_UNARY_OPERATOR));
+ assertFalse("U+3001 IDSU", u_hasBinaryProperty(0x3001, UCHAR_IDS_UNARY_OPERATOR));
+
+ // Property name works and gets the correct set.
+ UnicodeSet idsu(u"[:IDS_Unary_Operator:]", errorCode);
+ assertEquals("IDSU set number of characters", 2, idsu.size());
+ assertFalse("idsu.contains(U+2FFD)", idsu.contains(0x2ffd));
+ assertTrue("idsu.contains(U+2FFE)", idsu.contains(0x2ffe));
+ assertTrue("idsu.contains(U+2FFF)", idsu.contains(0x2fff));
+ assertFalse("idsu.contains(U+3000)", idsu.contains(0x3000));
+}
+
+namespace {
+
+bool isMathStart(UChar32 c) {
+ return u_hasBinaryProperty(c, UCHAR_ID_COMPAT_MATH_START);
+}
+
+bool isMathContinue(UChar32 c) {
+ return u_hasBinaryProperty(c, UCHAR_ID_COMPAT_MATH_CONTINUE);
+}
+
+} // namespace
+
+void UnicodeTest::TestIDCompatMath() {
+ IcuTestErrorCode errorCode(*this, "TestIDCompatMath()");
+ assertFalse("U+00B1 UCHAR_ID_COMPAT_MATH_CONTINUE", isMathContinue(0xb1));
+ assertTrue("U+00B2 UCHAR_ID_COMPAT_MATH_CONTINUE", isMathContinue(0xb2));
+ assertTrue("U+00B3 UCHAR_ID_COMPAT_MATH_CONTINUE", isMathContinue(0xb3));
+ assertFalse("U+00B4 UCHAR_ID_COMPAT_MATH_CONTINUE", isMathContinue(0xb4));
+ assertFalse("U+207F UCHAR_ID_COMPAT_MATH_CONTINUE", isMathContinue(0x207f));
+ assertTrue("U+2080 UCHAR_ID_COMPAT_MATH_CONTINUE", isMathContinue(0x2080));
+ assertTrue("U+208E UCHAR_ID_COMPAT_MATH_CONTINUE", isMathContinue(0x208e));
+ assertFalse("U+208F UCHAR_ID_COMPAT_MATH_CONTINUE", isMathContinue(0x208f));
+ assertFalse("U+2201 UCHAR_ID_COMPAT_MATH_CONTINUE", isMathContinue(0x2201));
+ assertTrue("U+2202 UCHAR_ID_COMPAT_MATH_CONTINUE", isMathContinue(0x2202));
+ assertTrue("U+1D6C1 UCHAR_ID_COMPAT_MATH_CONTINUE", isMathContinue(0x1D6C1));
+ assertTrue("U+1D7C3 UCHAR_ID_COMPAT_MATH_CONTINUE", isMathContinue(0x1D7C3));
+ assertFalse("U+1D7C4 UCHAR_ID_COMPAT_MATH_CONTINUE", isMathContinue(0x1D7C4));
+
+ assertFalse("U+00B2 UCHAR_ID_COMPAT_MATH_START", isMathStart(0xb2));
+ assertFalse("U+2080 UCHAR_ID_COMPAT_MATH_START", isMathStart(0x2080));
+ assertFalse("U+2201 UCHAR_ID_COMPAT_MATH_START", isMathStart(0x2201));
+ assertTrue("U+2202 UCHAR_ID_COMPAT_MATH_START", isMathStart(0x2202));
+ assertTrue("U+1D6C1 UCHAR_ID_COMPAT_MATH_START", isMathStart(0x1D6C1));
+ assertTrue("U+1D7C3 UCHAR_ID_COMPAT_MATH_START", isMathStart(0x1D7C3));
+ assertFalse("U+1D7C4 UCHAR_ID_COMPAT_MATH_START", isMathStart(0x1D7C4));
+
+ // Property names work and get the correct sets.
+ UnicodeSet idcmStart(u"[:ID_Compat_Math_Start:]", errorCode);
+ UnicodeSet idcmContinue(u"[:ID_Compat_Math_Continue:]", errorCode);
+ assertEquals("ID_Compat_Math_Start set number of characters", 13, idcmStart.size());
+ assertEquals("ID_Compat_Math_Continue set number of characters", 43, idcmContinue.size());
+ assertTrue("ID_Compat_Math_Start is a subset of ID_Compat_Math_Continue",
+ idcmContinue.containsAll(idcmStart));
+ assertFalse("idcmContinue.contains(U+207F)", idcmContinue.contains(0x207f));
+ assertTrue("idcmContinue.contains(U+2080)", idcmContinue.contains(0x2080));
+ assertTrue("idcmContinue.contains(U+208E)", idcmContinue.contains(0x208e));
+ assertFalse("idcmContinue.contains(U+208F)", idcmContinue.contains(0x208f));
+ assertFalse("idcmStart.contains(U+2201)", idcmStart.contains(0x2201));
+ assertTrue("idcmStart.contains(U+2202)", idcmStart.contains(0x2202));
+ assertTrue("idcmStart.contains(U+1D7C3)", idcmStart.contains(0x1D7C3));
+ assertFalse("idcmStart.contains(U+1D7C4)", idcmStart.contains(0x1D7C4));
+}
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/ucdtest.h b/Build/source/libs/icu/icu-src/source/test/intltest/ucdtest.h
index 18ae255ae2e..6c83744c058 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/ucdtest.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/ucdtest.h
@@ -31,8 +31,8 @@ class UnicodeTest: public IntlTest {
public:
UnicodeTest();
virtual ~UnicodeTest();
-
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
void TestAdditionalProperties();
void TestBinaryValues();
@@ -49,6 +49,9 @@ public:
void TestInvalidCodePointFolding();
void TestBinaryCharacterProperties();
void TestIntCharacterProperties();
+ void TestPropertyNames();
+ void TestIDSUnaryOperator();
+ void TestIDCompatMath();
private:
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/uchar_type_build_test.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/uchar_type_build_test.cpp
new file mode 100644
index 00000000000..ca9335441a3
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/uchar_type_build_test.cpp
@@ -0,0 +1,7 @@
+// © 2023 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html#License
+
+// ICU-22356 Test that client code can be built with UCHAR_TYPE redefined.
+#undef UCHAR_TYPE
+#define UCHAR_TYPE uint16_t
+#include "unicode/ures.h"
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/ucharstrietest.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/ucharstrietest.cpp
index c026c0204ae..de6fd39f234 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/ucharstrietest.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/ucharstrietest.cpp
@@ -37,7 +37,7 @@ public:
UCharsTrieTest();
virtual ~UCharsTrieTest();
- void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=NULL) override;
+ void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=nullptr) override;
void TestBuilder();
void TestEmpty();
void Test_a();
@@ -84,7 +84,7 @@ extern IntlTest *createUCharsTrieTest() {
return new UCharsTrieTest();
}
-UCharsTrieTest::UCharsTrieTest() : builder_(NULL) {
+UCharsTrieTest::UCharsTrieTest() : builder_(nullptr) {
IcuTestErrorCode errorCode(*this, "UCharsTrieTest()");
builder_=new UCharsTrieBuilder(errorCode);
}
@@ -343,12 +343,12 @@ class Generator {
public:
Generator() : value(4711), num(0) {}
void next() {
- UChar c;
+ char16_t c;
s.truncate(0);
- s.append(c=(UChar)(value>>16));
- s.append((UChar)(value>>4));
+ s.append(c=(char16_t)(value>>16));
+ s.append((char16_t)(value>>4));
if(value&1) {
- s.append((UChar)value);
+ s.append((char16_t)value);
}
set.add(c);
value+=((value>>5)&0x7ff)*3+1;
@@ -807,7 +807,7 @@ UCharsTrie *UCharsTrieTest::buildTrie(const StringAndValue data[], int32_t dataL
errln("builder.buildUnicodeString() before & after build() returned same array");
}
if(errorCode.isFailure()) {
- return NULL;
+ return nullptr;
}
// Tries from either build() method should be identical but
// UCharsTrie does not implement equals().
@@ -925,7 +925,7 @@ void UCharsTrieTest::checkNext(UCharsTrie &trie,
}
if((result==USTRINGTRIE_INTERMEDIATE_VALUE)!=nextContinues) {
errln("(trie.current()==USTRINGTRIE_INTERMEDIATE_VALUE) contradicts "
- "(trie.next(some UChar)!=USTRINGTRIE_NO_MATCH) after end of %s", data[i].s);
+ "(trie.next(some char16_t)!=USTRINGTRIE_NO_MATCH) after end of %s", data[i].s);
}
trie.reset();
}
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/unifiedcachetest.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/unifiedcachetest.cpp
index cb98a66bba9..6e5352fc6de 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/unifiedcachetest.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/unifiedcachetest.cpp
@@ -18,7 +18,7 @@
class UCTItem : public SharedObject {
public:
char *value;
- UCTItem(const char *x) : value(NULL) {
+ UCTItem(const char *x) : value(nullptr) {
value = uprv_strdup(x);
}
virtual ~UCTItem() {
@@ -34,20 +34,20 @@ U_NAMESPACE_BEGIN
template<> U_EXPORT
const UCTItem *LocaleCacheKey<UCTItem>::createObject(
const void *context, UErrorCode &status) const {
- const UnifiedCache *cacheContext = (const UnifiedCache *) context;
+ const UnifiedCache *cacheContext = static_cast<const UnifiedCache *>(context);
if (uprv_strcmp(fLoc.getName(), "zh") == 0) {
status = U_MISSING_RESOURCE_ERROR;
- return NULL;
+ return nullptr;
}
if (uprv_strcmp(fLoc.getLanguage(), fLoc.getName()) != 0) {
- const UCTItem *item = NULL;
- if (cacheContext == NULL) {
+ const UCTItem *item = nullptr;
+ if (cacheContext == nullptr) {
UnifiedCache::getByLocale(fLoc.getLanguage(), item, status);
} else {
cacheContext->get(LocaleCacheKey<UCTItem>(fLoc.getLanguage()), item, status);
}
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
return item;
}
@@ -59,7 +59,7 @@ const UCTItem *LocaleCacheKey<UCTItem>::createObject(
template<> U_EXPORT
const UCTItem2 *LocaleCacheKey<UCTItem2>::createObject(
const void * /*unused*/, UErrorCode & /*status*/) const {
- return NULL;
+ return nullptr;
}
U_NAMESPACE_END
@@ -129,8 +129,8 @@ void UnifiedCacheTest::TestEvictionPolicy() {
"1", "2", "3", "4", "5", "6", "7", "8", "9", "10",
"11", "12", "13", "14", "15", "16", "17", "18", "19", "20"};
- const UCTItem *usedReferences[] = {NULL, NULL, NULL, NULL, NULL};
- const UCTItem *unusedReference = NULL;
+ const UCTItem *usedReferences[] = {nullptr, nullptr, nullptr, nullptr, nullptr};
+ const UCTItem *unusedReference = nullptr;
// Add 5 in-use entries
for (int32_t i = 0; i < UPRV_LENGTHOF(usedReferences); i++) {
@@ -195,11 +195,11 @@ void UnifiedCacheTest::TestBounded() {
// We first add 5 key-value pairs with two distinct values, "en" and "fr"
// keeping all those references.
- const UCTItem *en = NULL;
- const UCTItem *enGb = NULL;
- const UCTItem *enUs = NULL;
- const UCTItem *fr = NULL;
- const UCTItem *frFr = NULL;
+ const UCTItem *en = nullptr;
+ const UCTItem *enGb = nullptr;
+ const UCTItem *enUs = nullptr;
+ const UCTItem *fr = nullptr;
+ const UCTItem *frFr = nullptr;
cache.get(LocaleCacheKey<UCTItem>("en_US"), &cache, enUs, status);
cache.get(LocaleCacheKey<UCTItem>("en"), &cache, en, status);
assertEquals("T1", 1, cache.unusedCount());
@@ -216,7 +216,7 @@ void UnifiedCacheTest::TestBounded() {
// the last one. At the end of this, we will hold references to one
// additional distinct value, so we will have references to 3 distinct
// values.
- const UCTItem *throwAway = NULL;
+ const UCTItem *throwAway = nullptr;
cache.get(LocaleCacheKey<UCTItem>("zn_AA"), &cache, throwAway, status);
cache.get(LocaleCacheKey<UCTItem>("sr_AA"), &cache, throwAway, status);
cache.get(LocaleCacheKey<UCTItem>("de_AU"), &cache, throwAway, status);
@@ -264,8 +264,8 @@ void UnifiedCacheTest::TestBounded() {
// Now we hold a references to two more distinct values. Cache size
// should grow to 8.
- const UCTItem *es = NULL;
- const UCTItem *ru = NULL;
+ const UCTItem *es = nullptr;
+ const UCTItem *ru = nullptr;
cache.get(LocaleCacheKey<UCTItem>("es"), &cache, es, status);
cache.get(LocaleCacheKey<UCTItem>("ru"), &cache, ru, status);
assertEquals("T14", 3, cache.unusedCount());
@@ -300,12 +300,12 @@ void UnifiedCacheTest::TestBasic() {
assertSuccess("", status);
cache->flush();
int32_t baseCount = cache->keyCount();
- const UCTItem *en = NULL;
- const UCTItem *enGb = NULL;
- const UCTItem *enGb2 = NULL;
- const UCTItem *enUs = NULL;
- const UCTItem *fr = NULL;
- const UCTItem *frFr = NULL;
+ const UCTItem *en = nullptr;
+ const UCTItem *enGb = nullptr;
+ const UCTItem *enGb2 = nullptr;
+ const UCTItem *enUs = nullptr;
+ const UCTItem *fr = nullptr;
+ const UCTItem *frFr = nullptr;
cache->get(LocaleCacheKey<UCTItem>("en"), en, status);
cache->get(LocaleCacheKey<UCTItem>("en_US"), enUs, status);
cache->get(LocaleCacheKey<UCTItem>("en_GB"), enGb, status);
@@ -355,9 +355,9 @@ void UnifiedCacheTest::TestError() {
assertSuccess("", status);
cache->flush();
int32_t baseCount = cache->keyCount();
- const UCTItem *zh = NULL;
- const UCTItem *zhTw = NULL;
- const UCTItem *zhHk = NULL;
+ const UCTItem *zh = nullptr;
+ const UCTItem *zhTw = nullptr;
+ const UCTItem *zhHk = nullptr;
status = U_ZERO_ERROR;
cache->get(LocaleCacheKey<UCTItem>("zh"), zh, status);
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/units_data_test.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/units_data_test.cpp
index 19deda84fa7..6b785865a79 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/units_data_test.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/units_data_test.cpp
@@ -19,7 +19,7 @@ class UnitsDataTest : public IntlTest {
public:
UnitsDataTest() {}
- void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = NULL) override;
+ void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = nullptr) override;
void testGetUnitCategory();
// This is a sanity check that only exists in ICU4C.
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/units_router_test.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/units_router_test.cpp
index 6cffc2d6ce4..43b63db3c99 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/units_router_test.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/units_router_test.cpp
@@ -14,7 +14,7 @@ class UnitsRouterTest : public IntlTest {
public:
UnitsRouterTest() {}
- void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = NULL) override;
+ void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = nullptr) override;
void testBasic();
};
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/units_test.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/units_test.cpp
index 931453c0561..e321c6f0cb5 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/units_test.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/units_test.cpp
@@ -41,7 +41,7 @@ class UnitsTest : public IntlTest {
public:
UnitsTest() {}
- void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = NULL) override;
+ void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = nullptr) override;
void testUnitConstantFreshness();
void testExtractConvertibility();
@@ -75,13 +75,13 @@ void UnitsTest::runIndexedTest(int32_t index, UBool exec, const char *&name, cha
// units.txt.
void UnitsTest::testUnitConstantFreshness() {
IcuTestErrorCode status(*this, "testUnitConstantFreshness");
- LocalUResourceBundlePointer unitsBundle(ures_openDirect(NULL, "units", status));
+ LocalUResourceBundlePointer unitsBundle(ures_openDirect(nullptr, "units", status));
LocalUResourceBundlePointer unitConstants(
- ures_getByKey(unitsBundle.getAlias(), "unitConstants", NULL, status));
+ ures_getByKey(unitsBundle.getAlias(), "unitConstants", nullptr, status));
while (ures_hasNext(unitConstants.getAlias())) {
int32_t len;
- const char *constant = NULL;
+ const char *constant = nullptr;
ures_getNextString(unitConstants.getAlias(), &len, &constant, status);
Factor factor;
@@ -439,7 +439,7 @@ void unitsTestDataLineFn(void *context, char *fields[][2], int32_t fieldCount, U
if (U_FAILURE(*pErrorCode)) {
return;
}
- UnitsTestContext *ctx = (UnitsTestContext *)context;
+ UnitsTestContext *ctx = static_cast<UnitsTestContext *>(context);
UnitsTest *unitsTest = ctx->unitsTest;
(void)fieldCount; // unused UParseLineFn variable
IcuTestErrorCode status(*unitsTest, "unitsTestDatalineFn");
@@ -450,7 +450,7 @@ void unitsTestDataLineFn(void *context, char *fields[][2], int32_t fieldCount, U
StringPiece commentConversionFormula = trimField(fields[3]);
StringPiece utf8Expected = trimField(fields[4]);
- UNumberFormat *nf = unum_open(UNUM_DEFAULT, NULL, -1, "en_US", NULL, status);
+ UNumberFormat *nf = unum_open(UNUM_DEFAULT, nullptr, -1, "en_US", nullptr, status);
if (status.errIfFailureAndReset("unum_open failed")) {
return;
}
@@ -902,7 +902,7 @@ void checkOutput(UnitsTest *unitsTest, const char *msg, ExpectedOutput expected,
void unitPreferencesTestDataLineFn(void *context, char *fields[][2], int32_t fieldCount,
UErrorCode *pErrorCode) {
if (U_FAILURE(*pErrorCode)) return;
- UnitsTest *unitsTest = (UnitsTest *)context;
+ UnitsTest *unitsTest = static_cast<UnitsTest *>(context);
IcuTestErrorCode status(*unitsTest, "unitPreferencesTestDatalineFn");
if (!unitsTest->assertTrue(u"unitPreferencesTestDataLineFn expects 9 fields for simple and 11 "
@@ -1028,23 +1028,23 @@ void parsePreferencesTests(const char *filename, char delimiter, char *fields[][
return;
}
- if (fields == NULL || lineFn == NULL || maxFieldCount <= 0) {
+ if (fields == nullptr || lineFn == nullptr || maxFieldCount <= 0) {
*pErrorCode = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
- if (filename == NULL || *filename == 0 || (*filename == '-' && filename[1] == 0)) {
- filename = NULL;
+ if (filename == nullptr || *filename == 0 || (*filename == '-' && filename[1] == 0)) {
+ filename = nullptr;
file = T_FileStream_stdin();
} else {
file = T_FileStream_open(filename, "r");
}
- if (file == NULL) {
+ if (file == nullptr) {
*pErrorCode = U_FILE_ACCESS_ERROR;
return;
}
- while (T_FileStream_readLine(file, line, sizeof(line)) != NULL) {
+ while (T_FileStream_readLine(file, line, sizeof(line)) != nullptr) {
/* remove trailing newline characters */
u_rtrim(line);
@@ -1058,7 +1058,7 @@ void parsePreferencesTests(const char *filename, char delimiter, char *fields[][
/* remove in-line comments */
limit = uprv_strchr(start, '#');
- if (limit != NULL) {
+ if (limit != nullptr) {
/* get white space before the pound sign */
while (limit > start && U_IS_INV_WHITESPACE(*(limit - 1))) {
--limit;
@@ -1105,7 +1105,7 @@ void parsePreferencesTests(const char *filename, char delimiter, char *fields[][
}
}
- if (filename != NULL) {
+ if (filename != nullptr) {
T_FileStream_close(file);
}
}
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/uobjtest.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/uobjtest.cpp
index d83bf68f145..bb0e69da8e3 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/uobjtest.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/uobjtest.cpp
@@ -86,10 +86,10 @@
#define TESTCLASSID_DEFAULT(c) \
delete testClass(new c, #c, "new " #c , c::getStaticClassID())
#define TESTCLASSID_ABSTRACT(c) \
- testClass(NULL, #c, NULL, c::getStaticClassID())
+ testClass(nullptr, #c, nullptr, c::getStaticClassID())
#define TESTCLASSID_FACTORY_HIDDEN(c, f) UPRV_BLOCK_MACRO_BEGIN { \
UObject *objVar = f; \
- delete testClass(objVar, #c, #f, objVar!=NULL? objVar->getDynamicClassID(): NULL); \
+ delete testClass(objVar, #c, #f, objVar!=nullptr? objVar->getDynamicClassID(): nullptr); \
if(U_FAILURE(status)) { \
dataerrln(UnicodeString(#c " - " #f " - got err status ") + UnicodeString(u_errorName(status))); \
status = U_ZERO_ERROR; \
@@ -109,11 +109,11 @@ UObject *UObjectTest::testClass(UObject *obj,
{
uint32_t i;
UnicodeString what = UnicodeString(className) + " * x= " + UnicodeString(factory?factory:" ABSTRACT ") + "; ";
- UClassID dynamicID = NULL;
+ UClassID dynamicID = nullptr;
if(ids_count >= MAX_CLASS_ID) {
char count[100];
- sprintf(count, " (currently %d) ", MAX_CLASS_ID);
+ snprintf(count, sizeof(count), " (currently %d) ", MAX_CLASS_ID);
errln("FAIL: Fatal: Ran out of IDs! Increase MAX_CLASS_ID." + UnicodeString(count) + what);
return obj;
}
@@ -124,22 +124,22 @@ UObject *UObjectTest::testClass(UObject *obj,
{
char tmp[500];
- sprintf(tmp, " [static=%p, dynamic=%p] ", staticID, dynamicID);
+ snprintf(tmp, sizeof(tmp), " [static=%p, dynamic=%p] ", staticID, dynamicID);
logln(what + tmp);
}
- if(staticID == NULL) {
- dataerrln("FAIL: staticID == NULL! " + what);
+ if(staticID == nullptr) {
+ dataerrln("FAIL: staticID == nullptr! " + what);
}
- if(factory != NULL) { /* NULL factory means: abstract */
+ if(factory != nullptr) { /* nullptr factory means: abstract */
if(!obj) {
- dataerrln( "FAIL: ==NULL! " + what);
+ dataerrln( "FAIL: ==nullptr! " + what);
return obj;
}
- if(dynamicID == NULL) {
- errln("FAIL: dynamicID == NULL!" + what);
+ if(dynamicID == nullptr) {
+ errln("FAIL: dynamicID == nullptr!" + what);
}
if(dynamicID != staticID) {
@@ -148,7 +148,7 @@ UObject *UObjectTest::testClass(UObject *obj,
}
// Bail out if static ID is null. Error message was already printed.
- if(staticID == NULL) {
+ if(staticID == nullptr) {
return obj;
}
@@ -175,25 +175,25 @@ UObject *UObjectTest::testClass(UObject *obj,
UObject *UObjectTest::testClassNoClassID(UObject *obj, const char *className, const char *factory)
{
if (!obj) {
- return NULL;
+ return nullptr;
}
UnicodeString what = UnicodeString(className) + " * x= " + UnicodeString(factory?factory:" ABSTRACT ") + "; ";
UClassID dynamicID = obj->getDynamicClassID();
{
char tmp[500];
- sprintf(tmp, " [dynamic=%p] ", dynamicID);
+ snprintf(tmp, sizeof(tmp), " [dynamic=%p] ", dynamicID);
logln(what + tmp);
}
- if(factory != NULL) { /* NULL factory means: abstract */
+ if(factory != nullptr) { /* nullptr factory means: abstract */
if(!obj) {
- dataerrln( "FAIL: ==NULL! " + what);
+ dataerrln( "FAIL: ==nullptr! " + what);
return obj;
}
- if(dynamicID != NULL) {
- errln("FAIL: dynamicID != NULL! for non-poor-man's-RTTI " + what);
+ if(dynamicID != nullptr) {
+ errln("FAIL: dynamicID != nullptr! for non-poor-man's-RTTI " + what);
}
}
@@ -320,7 +320,7 @@ public:
// Appendable is abstract; we define a subclass to verify that there is no "poor man's RTTI".
class DummyAppendable : public Appendable {
public:
- virtual UBool appendCodeUnit(UChar /*c*/) override { return true; }
+ virtual UBool appendCodeUnit(char16_t /*c*/) override { return true; }
};
void UObjectTest::testIDs()
@@ -338,9 +338,10 @@ void UObjectTest::testIDs()
#if !UCONFIG_NO_NORMALIZATION
UnicodeString emptyString;
TESTCLASSID_CTOR(Normalizer, (emptyString, UNORM_NONE));
- const Normalizer2 *noNormalizer2 = NULL;
+ const Normalizer2* nfc_singleton = Normalizer2::getNFCInstance(status);
UnicodeSet emptySet;
- TESTCLASSID_NONE_CTOR(FilteredNormalizer2, (*noNormalizer2, emptySet));
+ TESTCLASSID_NONE_CTOR(FilteredNormalizer2, (*nfc_singleton, emptySet));
+
TESTCLASSID_FACTORY(CanonicalIterator, new CanonicalIterator(UnicodeString("abc"), status));
#endif
#if !UCONFIG_NO_IDNA
@@ -373,7 +374,7 @@ void UObjectTest::testIDs()
TESTCLASSID_FACTORY(MeasureUnit, MeasureUnit::createMeter(status));
TESTCLASSID_FACTORY(TimeUnit, TimeUnit::createInstance(TimeUnit::UTIMEUNIT_YEAR, status));
- static const UChar SMALL_STR[] = u"QQQ";
+ static const char16_t SMALL_STR[] = u"QQQ";
TESTCLASSID_CTOR(CurrencyAmount, (1.0, SMALL_STR, status));
TESTCLASSID_CTOR(CurrencyUnit, (SMALL_STR, status));
@@ -425,8 +426,8 @@ void UObjectTest::testIDs()
TESTCLASSID_FACTORY_HIDDEN(TransliteratorRegistry::Enumeration, Transliterator::getAvailableIDs(status));
#if UOBJTEST_TEST_INTERNALS
- TESTCLASSID_CTOR(Quantifier, (NULL, 0, 0));
- TESTCLASSID_CTOR(FunctionReplacer, (NULL,NULL));
+ TESTCLASSID_CTOR(Quantifier, (nullptr, 0, 0));
+ TESTCLASSID_CTOR(FunctionReplacer, (nullptr,nullptr));
TESTCLASSID_CTOR(StringMatcher, (UnicodeString("x"), 0,0,0,TransliterationRuleData(status)));
TESTCLASSID_CTOR(StringReplacer,(UnicodeString(),new TransliterationRuleData(status)));
#endif
@@ -475,14 +476,14 @@ void UObjectTest::testIDs()
TESTCLASSID_CTOR(UVector32, (status));
#if !UCONFIG_NO_SERVICE
- TESTCLASSID_CTOR(SimpleFactory, (NULL, UnicodeString("foo")));
+ TESTCLASSID_CTOR(SimpleFactory, (nullptr, UnicodeString("foo")));
TESTCLASSID_DEFAULT(EventListener);
TESTCLASSID_DEFAULT(ICUResourceBundleFactory);
//TESTCLASSID_DEFAULT(Key); // does not exist?
UnicodeString baz("baz");
UnicodeString bat("bat");
TESTCLASSID_FACTORY(LocaleKey, LocaleKey::createWithCanonicalFallback(&baz, &bat, LocaleKey::KIND_ANY, status));
- TESTCLASSID_CTOR(SimpleLocaleKeyFactory, (NULL, UnicodeString("bar"), 8, 12) );
+ TESTCLASSID_CTOR(SimpleLocaleKeyFactory, (nullptr, UnicodeString("bar"), 8, 12) );
TESTCLASSID_CTOR(TestLocaleKeyFactory, (42)); // Test replacement for LocaleKeyFactory
//#if UOBJTEST_TEST_INTERNALS
// TESTCLASSID_CTOR(LocaleKeyFactory, (42));
@@ -497,7 +498,7 @@ void UObjectTest::testIDs()
int i;
for(i=0;i<ids_count;i++) {
char junk[800];
- sprintf(junk, " %4d:\t%p\t%s\t%s\n",
+ snprintf(junk, sizeof(junk), " %4d:\t%p\t%s\t%s\n",
i, ids[i], ids_class[i], ids_factory[i]);
logln(UnicodeString(junk));
}
@@ -572,7 +573,7 @@ void UObjectTest::TestMFCCompatibility() {
#if U_HAVE_DEBUG_LOCATION_NEW
/* Make sure that it compiles with MFC's debuggable new usage. */
UnicodeString *str = new(__FILE__, __LINE__) UnicodeString();
- str->append((UChar)0x0040); // Is it usable?
+ str->append((char16_t)0x0040); // Is it usable?
if(str->charAt(0) != 0x0040) {
errln("debug new doesn't work.");
}
@@ -588,11 +589,11 @@ void UObjectTest::TestCompilerRTTI() {
dataerrln("NumberFormat::createInstance(de) failed - %s", u_errorName(errorCode));
return;
}
- if (dynamic_cast<DecimalFormat *>(nf) == NULL || dynamic_cast<ChoiceFormat *>(nf) != NULL) {
+ if (dynamic_cast<DecimalFormat *>(nf) == nullptr || dynamic_cast<ChoiceFormat *>(nf) != nullptr) {
errln("dynamic_cast<>(NumberFormat) failed");
}
UnicodeSet emptySet;
- if (&typeid(*nf) == NULL || typeid(*nf) == typeid(UObject) || typeid(*nf) == typeid(Format) ||
+ if (&typeid(*nf) == nullptr || typeid(*nf) == typeid(UObject) || typeid(*nf) == typeid(Format) ||
typeid(*nf) != typeid(DecimalFormat) || typeid(*nf) == typeid(ChoiceFormat) ||
typeid(*nf) == typeid(emptySet)
) {
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/uobjtest.h b/Build/source/libs/icu/icu-src/source/test/intltest/uobjtest.h
index b9863393d69..4c9589b68a7 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/uobjtest.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/uobjtest.h
@@ -30,7 +30,7 @@ private:
/**
* @param obj The UObject to be tested
* @param className The name of the class being tested
- * @param factory String version of obj, for exanple "new UFoo(1,3,4)". NULL if object is abstract.
+ * @param factory String version of obj, for exanple "new UFoo(1,3,4)". nullptr if object is abstract.
* @param staticID The result of class :: getStaticClassID
* @return Returns obj, suitable for deletion
*/
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/usettest.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/usettest.cpp
index 84f355f837e..b7bf21e436c 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/usettest.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/usettest.cpp
@@ -14,6 +14,7 @@
#include <stdio.h>
#include <string.h>
+#include <unordered_map>
#include "unicode/utypes.h"
#include "usettest.h"
#include "unicode/ucnv.h"
@@ -48,11 +49,11 @@ UnicodeString operator+(const UnicodeString& left, const UnicodeSet& set) {
return left + UnicodeSetTest::escape(pat);
}
-UnicodeSetTest::UnicodeSetTest() : utf8Cnv(NULL) {
+UnicodeSetTest::UnicodeSetTest() : utf8Cnv(nullptr) {
}
UConverter *UnicodeSetTest::openUTF8Converter() {
- if(utf8Cnv==NULL) {
+ if(utf8Cnv==nullptr) {
UErrorCode errorCode=U_ZERO_ERROR;
utf8Cnv=ucnv_open("UTF-8", &errorCode);
}
@@ -85,6 +86,8 @@ UnicodeSetTest::runIndexedTest(int32_t index, UBool exec,
TESTCASE_AUTO(TestStrings);
TESTCASE_AUTO(Testj2268);
TESTCASE_AUTO(TestCloseOver);
+ TESTCASE_AUTO(TestCloseOverSimpleCaseFolding);
+ TESTCASE_AUTO(TestCloseOverLargeSets);
TESTCASE_AUTO(TestEscapePattern);
TESTCASE_AUTO(TestInvalidCodePoint);
TESTCASE_AUTO(TestSymbolTable);
@@ -131,10 +134,10 @@ void UnicodeSetTest::TestToPattern() {
"[[:latin:]&[:greek:]]",
"[[:latin:]-[:greek:]]",
"[:nonspacing mark:]",
- NULL
+ nullptr
};
- for (int32_t j=0; OTHER_TOPATTERN_TESTS[j]!=NULL; ++j) {
+ for (int32_t j=0; OTHER_TOPATTERN_TESTS[j]!=nullptr; ++j) {
ec = U_ZERO_ERROR;
UnicodeSet s(OTHER_TOPATTERN_TESTS[j], ec);
if (U_FAILURE(ec)) {
@@ -171,32 +174,32 @@ void UnicodeSetTest::TestToPattern() {
// statements (except for the last) to goto's.
for (;;) {
if (U_FAILURE(ec)) break;
- const char* exp1[] = {"aa", "ab", NOT, "ac", NULL};
+ const char* exp1[] = {"aa", "ab", NOT, "ac", nullptr};
expectToPattern(*s, "[a-z{aa}{ab}]", exp1);
s->add("ac");
- const char* exp2[] = {"aa", "ab", "ac", NOT, "xy", NULL};
+ const char* exp2[] = {"aa", "ab", "ac", NOT, "xy", nullptr};
expectToPattern(*s, "[a-z{aa}{ab}{ac}]", exp2);
s->applyPattern(u"[a-z {\\{l} {r\\}}]", ec);
if (U_FAILURE(ec)) break;
- const char* exp3[] = {"{l", "r}", NOT, "xy", NULL};
+ const char* exp3[] = {"{l", "r}", NOT, "xy", nullptr};
expectToPattern(*s, u"[a-z{r\\}}{\\{l}]", exp3);
s->add("[]");
- const char* exp4[] = {"{l", "r}", "[]", NOT, "xy", NULL};
+ const char* exp4[] = {"{l", "r}", "[]", NOT, "xy", nullptr};
expectToPattern(*s, u"[a-z{\\[\\]}{r\\}}{\\{l}]", exp4);
s->applyPattern(u"[a-z {\\u4E01\\u4E02}{\\n\\r}]", ec);
if (U_FAILURE(ec)) break;
- const char* exp5[] = {"\\u4E01\\u4E02", "\n\r", NULL};
+ const char* exp5[] = {"\\u4E01\\u4E02", "\n\r", nullptr};
expectToPattern(*s, u"[a-z{\\u000A\\u000D}{\\u4E01\\u4E02}]", exp5);
// j2189
s->clear();
s->add(UnicodeString("abc", ""));
s->add(UnicodeString("abc", ""));
- const char* exp6[] = {"abc", NOT, "ab", NULL};
+ const char* exp6[] = {"abc", NOT, "ab", nullptr};
expectToPattern(*s, "[{abc}]", exp6);
break;
@@ -209,7 +212,7 @@ void UnicodeSetTest::TestToPattern() {
// JB#3400: For 2 character ranges prefer [ab] to [a-b]
UnicodeSet s;
s.add(u'a', u'b');
- expectToPattern(s, "[ab]", NULL);
+ expectToPattern(s, "[ab]", nullptr);
}
UBool UnicodeSetTest::toPatternAux(UChar32 start, UChar32 end) {
@@ -267,7 +270,7 @@ UBool UnicodeSetTest::checkPat(const UnicodeString& source,
}
void
-UnicodeSetTest::TestPatterns(void) {
+UnicodeSetTest::TestPatterns() {
UnicodeSet set;
expectPattern(set, UnicodeString("[[a-m]&[d-z]&[k-y]]", ""), "km");
expectPattern(set, UnicodeString("[[a-z]-[m-y]-[d-r]]", ""), "aczz");
@@ -279,12 +282,12 @@ UnicodeSetTest::TestPatterns(void) {
// Throw in a test of complement
set.complement();
UnicodeString exp;
- exp.append((UChar)0x0000).append("aeeoouu").append((UChar)(u'z'+1)).append((UChar)0xFFFF);
+ exp.append((char16_t)0x0000).append("aeeoouu").append((char16_t)(u'z'+1)).append((char16_t)0xFFFF);
expectPairs(set, exp);
}
void
-UnicodeSetTest::TestCategories(void) {
+UnicodeSetTest::TestCategories() {
UErrorCode status = U_ZERO_ERROR;
const char* pat = " [:Lu:] "; // Whitespace ok outside [:..:]
UnicodeSet set(pat, status);
@@ -302,7 +305,7 @@ UnicodeSetTest::TestCategories(void) {
set.applyPattern("[:L:]", status);
if (U_FAILURE(status)) { errln("FAIL"); return; }
for (i=0; i<0x200; ++i) {
- UBool l = u_isalpha((UChar)i);
+ UBool l = u_isalpha((char16_t)i);
if (l != set.contains(i)) {
errln((UnicodeString)"FAIL: L contains " + (unsigned short)i + " = " +
set.contains(i));
@@ -313,7 +316,7 @@ UnicodeSetTest::TestCategories(void) {
set.applyPattern("[:Lu:]", status);
if (U_FAILURE(status)) { errln("FAIL"); return; }
for (i=0; i<0x200; ++i) {
- UBool lu = (u_charType((UChar)i) == U_UPPERCASE_LETTER);
+ UBool lu = (u_charType((char16_t)i) == U_UPPERCASE_LETTER);
if (lu != set.contains(i)) {
errln((UnicodeString)"FAIL: Lu contains " + (unsigned short)i + " = " +
set.contains(i));
@@ -322,7 +325,7 @@ UnicodeSetTest::TestCategories(void) {
}
}
void
-UnicodeSetTest::TestCloneEqualHash(void) {
+UnicodeSetTest::TestCloneEqualHash() {
UErrorCode status = U_ZERO_ERROR;
// set1 and set2 used to be built with the obsolete constructor taking
// UCharCategory values; replaced with pattern constructors
@@ -393,7 +396,7 @@ UnicodeSetTest::TestCloneEqualHash(void) {
}
void
-UnicodeSetTest::TestAddRemove(void) {
+UnicodeSetTest::TestAddRemove() {
UnicodeSet set; // Construct empty set
doAssert(set.isEmpty() == true, "set should be empty");
doAssert(set.size() == 0, "size should be 0");
@@ -641,7 +644,7 @@ void UnicodeSetTest::TestAPI() {
//UnicodeSet::retain(long)
//UnicodeSet::retainAll(class UnicodeString const &)
//UnicodeSet::serialize(unsigned short *,long,enum UErrorCode &)
- //UnicodeSetIterator::getString(void)
+ //UnicodeSetIterator::getString()
set.clear();
set.complement("ab");
exp.applyPattern("[{ab}]", status);
@@ -878,7 +881,7 @@ void UnicodeSetTest::TestStrings() {
&((new UnicodeSet('a','z'))->add('A', 'Z').retain('M','m').complement('X')),
new UnicodeSet("[[a-zA-Z]&[M-m]-[X]]", ec),
- NULL
+ nullptr
};
if (U_FAILURE(ec)) {
@@ -887,7 +890,7 @@ void UnicodeSetTest::TestStrings() {
assertFalse("[a-c].hasStrings()", testList[0]->hasStrings());
assertTrue("[{ll}{ch}a-z].hasStrings()", testList[2]->hasStrings());
- for (int32_t i = 0; testList[i] != NULL; i+=2) {
+ for (int32_t i = 0; testList[i] != nullptr; i+=2) {
if (U_SUCCESS(ec)) {
UnicodeString pat0, pat1;
testList[i]->toPattern(pat0, true);
@@ -1243,27 +1246,38 @@ void UnicodeSetTest::TestIndexOf() {
* Test closure API.
*/
void UnicodeSetTest::TestCloseOver() {
- UErrorCode ec = U_ZERO_ERROR;
-
- char CASE[] = {(char)USET_CASE_INSENSITIVE};
- char CASE_MAPPINGS[] = {(char)USET_ADD_CASE_MAPPINGS};
- const char* DATA[] = {
+ static constexpr char CASE[] = {(char)USET_CASE_INSENSITIVE};
+ static constexpr char CASE_MAPPINGS[] = {(char)USET_ADD_CASE_MAPPINGS};
+ static constexpr char SIMPLE_CASE_INSENSITIVE[] = {(char)USET_SIMPLE_CASE_INSENSITIVE};
+ static const char* 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
+ SIMPLE_CASE_INSENSITIVE,
+ "[aq\\u00DF{Bc}{bC}{Fi}]",
+ "[aAqQ\\u00DF\\u1E9E{bc}{fi}]",
+
CASE,
"[\\u01F1]", // 'DZ'
"[\\u01F1\\u01F2\\u01F3]",
+ SIMPLE_CASE_INSENSITIVE,
+ "[\\u01F1]", // 'DZ'
+ "[\\u01F1\\u01F2\\u01F3]",
+
CASE,
"[\\u1FB4]",
"[\\u1FB4{\\u03AC\\u03B9}]",
+ SIMPLE_CASE_INSENSITIVE,
+ "[\\u1FB4]",
+ "[\\u1FB4]",
+
CASE,
"[{F\\uFB01}]",
- "[\\uFB03{ffi}]",
+ "[\\uFB03{ffi}]",
CASE, // make sure binary search finds limits
"[a\\uFF3A]",
@@ -1271,6 +1285,10 @@ void UnicodeSetTest::TestCloseOver() {
CASE,
"[a-z]","[A-Za-z\\u017F\\u212A]",
+
+ SIMPLE_CASE_INSENSITIVE,
+ "[a-z]","[A-Za-z\\u017F\\u212A]",
+
CASE,
"[abc]","[A-Ca-c]",
CASE,
@@ -1311,21 +1329,23 @@ void UnicodeSetTest::TestCloseOver() {
CASE_MAPPINGS,
"[\\u01F1]", // 'DZ'
"[\\u01F1\\u01F2\\u01F3]",
-
+
CASE_MAPPINGS,
"[a-z]",
"[A-Za-z]",
- NULL
+ nullptr
};
UnicodeSet s;
UnicodeSet t;
UnicodeString buf;
- for (int32_t i=0; DATA[i]!=NULL; i+=3) {
+ for (int32_t i=0; DATA[i]!=nullptr; i+=3) {
int32_t selector = DATA[i][0];
UnicodeString pat(DATA[i+1], -1, US_INV);
UnicodeString exp(DATA[i+2], -1, US_INV);
+
+ UErrorCode ec = U_ZERO_ERROR;
s.applyPattern(pat, ec);
s.closeOver(selector);
t.applyPattern(exp, ec);
@@ -1341,81 +1361,21 @@ void UnicodeSetTest::TestCloseOver() {
}
}
-#if 0
- /*
- * Unused test code.
- * This was used to compare the old implementation (using USET_CASE)
- * with the new one (using 0x100 temporarily)
- * while transitioning from hardcoded case closure tables in uniset.cpp
- * (moved to uniset_props.cpp) to building the data by gencase into ucase.icu.
- * and using ucase.c functions for closure.
- * See Jitterbug 3432 RFE: Move uniset.cpp data to a data file
- *
- * Note: The old and new implementation never fully matched because
- * the old implementation turned out to not map U+0130 and U+0131 correctly
- * (dotted I and dotless i) and because the old implementation's data tables
- * were outdated compared to Unicode 4.0.1 at the time of the change to the
- * new implementation. (So sigmas and some other characters were not handled
- * according to the newer Unicode version.)
- */
- UnicodeSet sens("[:case_sensitive:]", ec), sens2, s2;
- UnicodeSetIterator si(sens);
- UnicodeString str, buf2;
- const UnicodeString *pStr;
- UChar32 c;
- while(si.next()) {
- if(!si.isString()) {
- c=si.getCodepoint();
- s.clear();
- s.add(c);
-
- str.setTo(c);
- str.foldCase();
- sens2.add(str);
-
- t=s;
- s.closeOver(USET_CASE);
- t.closeOver(0x100);
- if(s!=t) {
- errln("FAIL: closeOver(U+%04x) differs: ", c);
- errln((UnicodeString)"old "+s.toPattern(buf, true)+" new: "+t.toPattern(buf2, true));
- }
- }
- }
- // remove all code points
- // should contain all full case folding mapping strings
- sens2.remove(0, 0x10ffff);
- si.reset(sens2);
- while(si.next()) {
- if(si.isString()) {
- pStr=&si.getString();
- s.clear();
- s.add(*pStr);
- t=s2=s;
- s.closeOver(USET_CASE);
- t.closeOver(0x100);
- if(s!=t) {
- errln((UnicodeString)"FAIL: closeOver("+s2.toPattern(buf, true)+") differs: ");
- errln((UnicodeString)"old "+s.toPattern(buf, true)+" new: "+t.toPattern(buf2, true));
- }
- }
- }
-#endif
-
// Test the pattern API
- s.applyPattern("[abc]", USET_CASE_INSENSITIVE, NULL, ec);
+ UErrorCode ec = U_ZERO_ERROR;
+ s.applyPattern("[abc]", USET_CASE_INSENSITIVE, nullptr, ec);
if (U_FAILURE(ec)) {
errln("FAIL: applyPattern failed");
} else {
expectContainment(s, "abcABC", "defDEF");
}
- UnicodeSet v("[^abc]", USET_CASE_INSENSITIVE, NULL, ec);
+ UnicodeSet v("[^abc]", USET_CASE_INSENSITIVE, nullptr, ec);
if (U_FAILURE(ec)) {
errln("FAIL: constructor failed");
} else {
expectContainment(v, "defDEF", "abcABC");
}
- UnicodeSet cm("[abck]", USET_ADD_CASE_MAPPINGS, NULL, ec);
+ UnicodeSet cm("[abck]", USET_ADD_CASE_MAPPINGS, nullptr, ec);
if (U_FAILURE(ec)) {
errln("FAIL: construct w/case mappings failed");
} else {
@@ -1423,6 +1383,123 @@ void UnicodeSetTest::TestCloseOver() {
}
}
+namespace {
+
+void addIfAbsent(const std::unordered_multimap<UChar32, UChar32> &closure, UChar32 c, UChar32 t,
+ std::unordered_multimap<UChar32, UChar32> &additions) {
+ for (auto it = closure.find(c);; ++it) {
+ if (it == closure.end() || it->first != c) {
+ // absent
+ additions.insert({c, t});
+ break;
+ } else if (it->second == t) {
+ // present
+ break;
+ }
+ }
+}
+
+} // namespace
+
+void UnicodeSetTest::TestCloseOverSimpleCaseFolding() {
+ IcuTestErrorCode errorCode(*this, "TestCloseOverSimpleCaseFolding");
+ const UnicodeSet *sensitive =
+ UnicodeSet::fromUSet(u_getBinaryPropertySet(UCHAR_CASE_SENSITIVE, errorCode));
+ if (errorCode.errIfFailureAndReset("u_getBinaryPropertySet(UCHAR_CASE_SENSITIVE) failed")) {
+ return;
+ }
+ // Compute the scf=Simple_Case_Folding closure:
+ // For each scf(c)=t, start with mappings c->t and t->c.
+ std::unordered_multimap<UChar32, UChar32> closure;
+ UnicodeSetIterator iter(*sensitive);
+ while (iter.next()) {
+ UChar32 c = iter.getCodepoint();
+ UChar32 scfChar = u_foldCase(c, U_FOLD_CASE_DEFAULT);
+ if (scfChar != c) {
+ closure.insert({c, scfChar});
+ closure.insert({scfChar, c});
+ }
+ }
+ // Complete the closure: Add mappings of mappings.
+ for (;;) {
+ std::unordered_multimap<UChar32, UChar32> additions;
+ // for each mapping c->t
+ for (auto mapping : closure) {
+ UChar32 c = mapping.first;
+ UChar32 t = mapping.second;
+ // enumerate each t->u
+ for (auto it = closure.find(t); it != closure.end() && it->first == t; ++it) {
+ UChar32 u = it->second;
+ if (u != c) {
+ addIfAbsent(closure, c, u, additions);
+ addIfAbsent(closure, u, c, additions);
+ }
+ }
+ }
+ if (additions.empty()) {
+ break; // The closure is complete.
+ }
+ closure.insert(additions.begin(), additions.end());
+ }
+ // Compare closeOver(USET_SIMPLE_CASE_INSENSITIVE) with an unoptimized implementation.
+ // Here we focus on single code points as input.
+ // Other examples, including strings, are tested in TestCloseOver().
+ int32_t errors = 0;
+ iter.reset();
+ UnicodeSet set, expected;
+ while (iter.next()) {
+ UChar32 c = iter.getCodepoint();
+ // closeOver()
+ set.clear().add(c);
+ set.closeOver(USET_SIMPLE_CASE_INSENSITIVE);
+ // From-first-principles implementation.
+ expected.clear().add(c);
+ for (auto it = closure.find(c); it != closure.end() && it->first == c; ++it) {
+ expected.add(it->second);
+ }
+ // compare
+ if (!checkEqual(expected, set, "closeOver() vs. test impl")) {
+ errln(" c=U+%04X", c);
+ if (++errors == 10) {
+ break;
+ }
+ }
+ }
+}
+
+void UnicodeSetTest::TestCloseOverLargeSets() {
+ IcuTestErrorCode errorCode(*this, "TestCloseOverLargeSets");
+ // Check that an optimization for large sets does not change the result.
+
+ // Most code points except ones that are boring for case mappings.
+ UnicodeSet manyCp(u"[^[:C:][:Ideographic:][:Hang:]]", errorCode);
+ // Main Unihan block.
+ constexpr UChar32 LARGE_START = 0x4E00;
+ constexpr UChar32 LARGE_END = 0x9FFF;
+
+ static constexpr int32_t OPTIONS[] = {
+ USET_CASE_INSENSITIVE, USET_ADD_CASE_MAPPINGS, USET_SIMPLE_CASE_INSENSITIVE
+ };
+ UnicodeSet input, small, large;
+ for (int32_t option : OPTIONS) {
+ UnicodeSetIterator iter(manyCp);
+ while (iter.next()) {
+ UChar32 c = iter.getCodepoint();
+ input.clear().add(c);
+ small = input;
+ small.closeOver(option);
+ large = input;
+ large.add(LARGE_START, LARGE_END);
+ large.closeOver(option);
+ large.remove(LARGE_START, LARGE_END);
+ if (!checkEqual(small, large, "small != large")) {
+ errln(" option=%d c=U+%04X", option, c);
+ break;
+ }
+ }
+ }
+}
+
void UnicodeSetTest::TestEscapePattern() {
const char pattern[] =
"[\\uFEFF \\u200A-\\u200E \\U0001D173-\\U0001D17A \\U000F0000-\\U000FFFFD ]";
@@ -1464,7 +1541,7 @@ void UnicodeSetTest::TestEscapePattern() {
for (int32_t i=0; i<set.getRangeCount(); ++i) {
UnicodeString str("Range ");
- str.append((UChar)(u'0' + i))
+ str.append((char16_t)(u'0' + i))
.append(": ")
.append((UChar32)set.getRangeStart(i))
.append(" - ")
@@ -1635,14 +1712,14 @@ public:
* SymbolTable API
*/
virtual const UnicodeString* lookup(const UnicodeString& s) const override {
- return (const UnicodeString*) contents.get(s);
+ return static_cast<const UnicodeString*>(contents.get(s));
}
/**
* SymbolTable API
*/
virtual const UnicodeFunctor* lookupMatcher(UChar32 /*ch*/) const override {
- return NULL;
+ return nullptr;
}
/**
@@ -1654,7 +1731,7 @@ public:
int32_t i = start;
UnicodeString result;
while (i < limit) {
- UChar c = text.charAt(i);
+ char16_t c = text.charAt(i);
if ((i==start && !u_isIDStart(c)) || !u_isIDPart(c)) {
break;
}
@@ -1674,13 +1751,13 @@ void UnicodeSetTest::TestSymbolTable() {
// is terminated by null:
// var, value, var, value,..., input pat., exp. output pat., null
const char* 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,
- NULL
+ "us", "a-z", "[0-1$us]", "[0-1a-z]", nullptr,
+ "us", "[a-z]", "[0-1$us]", "[0-1[a-z]]", nullptr,
+ "us", "\\[a\\-z\\]", "[0-1$us]", "[-01\\[\\]az]", nullptr,
+ nullptr
};
- for (int32_t i=0; DATA[i]!=NULL; ++i) {
+ for (int32_t i=0; DATA[i]!=nullptr; ++i) {
UErrorCode ec = U_ZERO_ERROR;
TokenSymbolTable sym(ec);
if (U_FAILURE(ec)) {
@@ -1689,7 +1766,7 @@ void UnicodeSetTest::TestSymbolTable() {
}
// Set up variables
- while (DATA[i+2] != NULL) {
+ while (DATA[i+2] != nullptr) {
sym.add(UnicodeString(DATA[i], -1, US_INV), UnicodeString(DATA[i+1], -1, US_INV), ec);
if (U_FAILURE(ec)) {
errln("FAIL: couldn't add to TokenSymbolTable");
@@ -1932,7 +2009,7 @@ UnicodeString UnicodeSetTest::getPairs(const UnicodeSet& set) {
end = 0xFFFF;
i = set.getRangeCount(); // Should be unnecessary
}
- pairs.append((UChar)start).append((UChar)end);
+ pairs.append((char16_t)start).append((char16_t)end);
}
return pairs;
}
@@ -2182,11 +2259,11 @@ void UnicodeSetTest::expectToPattern(const UnicodeSet& set,
errln((UnicodeString)"FAIL: toPattern() => \"" + pat + "\", expected \"" + expPat + "\"");
return;
}
- if (expStrings == NULL) {
+ if (expStrings == nullptr) {
return;
}
UBool in = true;
- for (int32_t i=0; expStrings[i] != NULL; ++i) {
+ for (int32_t i=0; expStrings[i] != nullptr; ++i) {
if (expStrings[i] == NOT) { // sic; pointer comparison
in = false;
continue;
@@ -2205,7 +2282,7 @@ void UnicodeSetTest::expectToPattern(const UnicodeSet& set,
}
}
-static UChar toHexString(int32_t i) { return (UChar)(i + (i < 10 ? u'0' : (u'A' - 10))); }
+static char16_t toHexString(int32_t i) { return (char16_t)(i + (i < 10 ? u'0' : (u'A' - 10))); }
void
UnicodeSetTest::doAssert(UBool condition, const char *message)
@@ -2334,8 +2411,8 @@ void UnicodeSetTest::TestFreezable() {
ParsePosition pos;
frozen.
applyPattern(wsPattern, errorCode).
- applyPattern(wsPattern, USET_IGNORE_SPACE, NULL, errorCode).
- applyPattern(wsPattern, pos, USET_IGNORE_SPACE, NULL, errorCode).
+ applyPattern(wsPattern, USET_IGNORE_SPACE, nullptr, errorCode).
+ applyPattern(wsPattern, pos, USET_IGNORE_SPACE, nullptr, errorCode).
applyIntPropertyValue(UCHAR_CANONICAL_COMBINING_CLASS, 230, errorCode).
applyPropertyAlias(u"Assigned", UnicodeString(), errorCode);
if(frozen!=idSet || !(frozen==idSet)) {
@@ -2387,7 +2464,7 @@ void UnicodeSetTest::TestFreezable() {
// Append the UTF-8 version of the string to t and return the appended UTF-8 length.
static int32_t
-appendUTF8(const UChar *s, int32_t length, char *t, int32_t capacity) {
+appendUTF8(const char16_t *s, int32_t length, char *t, int32_t capacity) {
UErrorCode errorCode=U_ZERO_ERROR;
int32_t length8=0;
u_strToUTF8(t, capacity, &length8, s, length, &errorCode);
@@ -2474,7 +2551,7 @@ public:
if(nextStringIndex<fSet.stringsLength) {
return fSet.strings[nextStringIndex++];
} else {
- return NULL;
+ return nullptr;
}
}
@@ -2486,7 +2563,7 @@ public:
return s8;
} else {
length=0;
- return NULL;
+ return nullptr;
}
}
@@ -2500,7 +2577,7 @@ private:
// at code point boundaries.
// That is, each edge of a match must not be in the middle of a surrogate pair.
static inline UBool
-matches16CPB(const UChar *s, int32_t start, int32_t limit, const UnicodeString &t) {
+matches16CPB(const char16_t *s, int32_t start, int32_t limit, const UnicodeString &t) {
s+=start;
limit-=start;
int32_t length=t.length();
@@ -2510,7 +2587,7 @@ matches16CPB(const UChar *s, int32_t start, int32_t limit, const UnicodeString &
}
// Implement span() with contains() for comparison.
-static int32_t containsSpanUTF16(const UnicodeSetWithStrings &set, const UChar *s, int32_t length,
+static int32_t containsSpanUTF16(const UnicodeSetWithStrings &set, const char16_t *s, int32_t length,
USetSpanCondition spanCondition) {
const UnicodeSet &realSet(set.getSet());
if(!set.hasStrings()) {
@@ -2538,7 +2615,7 @@ static int32_t containsSpanUTF16(const UnicodeSetWithStrings &set, const UChar *
}
const UnicodeString *str;
iter.reset();
- while((str=iter.nextString())!=NULL) {
+ while((str=iter.nextString())!=nullptr) {
if(str->length()<=(length-start) && matches16CPB(s, start, length, *str)) {
// spanNeedsStrings=true;
return start;
@@ -2558,7 +2635,7 @@ static int32_t containsSpanUTF16(const UnicodeSetWithStrings &set, const UChar *
}
const UnicodeString *str;
iter.reset();
- while((str=iter.nextString())!=NULL) {
+ while((str=iter.nextString())!=nullptr) {
if(str->length()<=(length-start) && matches16CPB(s, start, length, *str)) {
// spanNeedsStrings=true;
int32_t matchLimit=start+str->length();
@@ -2608,7 +2685,7 @@ static int32_t containsSpanUTF16(const UnicodeSetWithStrings &set, const UChar *
}
}
-static int32_t containsSpanBackUTF16(const UnicodeSetWithStrings &set, const UChar *s, int32_t length,
+static int32_t containsSpanBackUTF16(const UnicodeSetWithStrings &set, const char16_t *s, int32_t length,
USetSpanCondition spanCondition) {
if(length==0) {
return 0;
@@ -2639,7 +2716,7 @@ static int32_t containsSpanBackUTF16(const UnicodeSetWithStrings &set, const UCh
}
const UnicodeString *str;
iter.reset();
- while((str=iter.nextString())!=NULL) {
+ while((str=iter.nextString())!=nullptr) {
if(str->length()<=prev && matches16CPB(s, prev-str->length(), length0, *str)) {
// spanNeedsStrings=true;
return prev;
@@ -2658,7 +2735,7 @@ static int32_t containsSpanBackUTF16(const UnicodeSetWithStrings &set, const UCh
}
const UnicodeString *str;
iter.reset();
- while((str=iter.nextString())!=NULL) {
+ while((str=iter.nextString())!=nullptr) {
if(str->length()<=prev && matches16CPB(s, prev-str->length(), length0, *str)) {
// spanNeedsStrings=true;
int32_t matchStart=prev-str->length();
@@ -2736,7 +2813,7 @@ static int32_t containsSpanUTF8(const UnicodeSetWithStrings &set, const char *s,
const char *s8;
int32_t length8;
iter.reset();
- while((s8=iter.nextUTF8(length8))!=NULL) {
+ while((s8=iter.nextUTF8(length8))!=nullptr) {
if(length8!=0 && length8<=(length-start) && 0==memcmp(s+start, s8, length8)) {
// spanNeedsStrings=true;
return start;
@@ -2757,7 +2834,7 @@ static int32_t containsSpanUTF8(const UnicodeSetWithStrings &set, const char *s,
const char *s8;
int32_t length8;
iter.reset();
- while((s8=iter.nextUTF8(length8))!=NULL) {
+ while((s8=iter.nextUTF8(length8))!=nullptr) {
if(length8!=0 && length8<=(length-start) && 0==memcmp(s+start, s8, length8)) {
// spanNeedsStrings=true;
int32_t matchLimit=start+length8;
@@ -2839,7 +2916,7 @@ static int32_t containsSpanBackUTF8(const UnicodeSetWithStrings &set, const char
const char *s8;
int32_t length8;
iter.reset();
- while((s8=iter.nextUTF8(length8))!=NULL) {
+ while((s8=iter.nextUTF8(length8))!=nullptr) {
if(length8!=0 && length8<=prev && 0==memcmp(s+prev-length8, s8, length8)) {
// spanNeedsStrings=true;
return prev;
@@ -2859,7 +2936,7 @@ static int32_t containsSpanBackUTF8(const UnicodeSetWithStrings &set, const char
const char *s8;
int32_t length8;
iter.reset();
- while((s8=iter.nextUTF8(length8))!=NULL) {
+ while((s8=iter.nextUTF8(length8))!=nullptr) {
if(length8!=0 && length8<=prev && 0==memcmp(s+prev-length8, s8, length8)) {
// spanNeedsStrings=true;
int32_t matchStart=prev-length8;
@@ -2934,7 +3011,7 @@ static inline USetSpanCondition invertSpanCondition(USetSpanCondition spanCondit
}
static inline int32_t slen(const void *s, UBool isUTF16) {
- return isUTF16 ? u_strlen((const UChar *)s) : static_cast<int32_t>(strlen((const char *)s));
+ return isUTF16 ? u_strlen((const char16_t *)s) : static_cast<int32_t>(strlen((const char *)s));
}
/*
@@ -3034,7 +3111,7 @@ static int32_t getSpans(const UnicodeSetWithStrings &set, UBool isComplement,
length=slen(s, isUTF16);
}
for(;;) {
- start+= isUTF16 ? containsSpanUTF16(set, (const UChar *)s+start, length-start, spanCondition) :
+ start+= isUTF16 ? containsSpanUTF16(set, (const char16_t *)s+start, length-start, spanCondition) :
containsSpanUTF8(set, (const char *)s+start, length-start, spanCondition);
if(count<limitsCapacity) {
limits[count]=start;
@@ -3050,14 +3127,14 @@ static int32_t getSpans(const UnicodeSetWithStrings &set, UBool isComplement,
case 3:
start=0;
for(;;) {
- start+= isUTF16 ? realSet.span((const UChar *)s+start, length>=0 ? length-start : length, spanCondition) :
+ start+= isUTF16 ? realSet.span((const char16_t *)s+start, length>=0 ? length-start : length, spanCondition) :
realSet.spanUTF8((const char *)s+start, length>=0 ? length-start : length, spanCondition);
if(count<limitsCapacity) {
limits[count]=start;
}
++count;
if(length>=0 ? start>=length :
- isUTF16 ? ((const UChar *)s)[start]==0 :
+ isUTF16 ? ((const char16_t *)s)[start]==0 :
((const char *)s)[start]==0
) {
break;
@@ -3075,7 +3152,7 @@ static int32_t getSpans(const UnicodeSetWithStrings &set, UBool isComplement,
if(count<=limitsCapacity) {
limits[limitsCapacity-count]=length;
}
- length= isUTF16 ? containsSpanBackUTF16(set, (const UChar *)s, length, spanCondition) :
+ length= isUTF16 ? containsSpanBackUTF16(set, (const char16_t *)s, length, spanCondition) :
containsSpanBackUTF8(set, (const char *)s, length, spanCondition);
if(length==0 && spanCondition==firstSpanCondition) {
break;
@@ -3096,7 +3173,7 @@ static int32_t getSpans(const UnicodeSetWithStrings &set, UBool isComplement,
// Note: Length<0 is tested only for the first spanBack().
// If we wanted to keep length<0 for all spanBack()s, we would have to
// temporarily modify the string by placing a NUL where the previous spanBack() stopped.
- length= isUTF16 ? realSet.spanBack((const UChar *)s, length, spanCondition) :
+ length= isUTF16 ? realSet.spanBack((const char16_t *)s, length, spanCondition) :
realSet.spanBackUTF8((const char *)s, length, spanCondition);
if(length==0 && spanCondition==firstSpanCondition) {
break;
@@ -3204,7 +3281,7 @@ void UnicodeSetTest::testSpan(const UnicodeSetWithStrings *sets[4],
// Compare span() with containsAll()/containsNone(),
// but only if we have expectLimits[] from the uncomplemented set.
if(isUTF16 && (whichSpans&SPAN_SET)!=0) {
- const UChar *s16=(const UChar *)s;
+ const char16_t *s16=(const char16_t *)s;
UnicodeString string;
int32_t prev=0, limit, length;
for(i=0; i<expectCount; ++i) {
@@ -3251,8 +3328,8 @@ void UnicodeSetTest::testSpan(const UnicodeSetWithStrings *sets[4],
testSpan(sets, s, length, isUTF16, whichSpans, expectLimits, expectCount, testName, index);
}
-UBool stringContainsUnpairedSurrogate(const UChar *s, int32_t length) {
- UChar c, c2;
+UBool stringContainsUnpairedSurrogate(const char16_t *s, int32_t length) {
+ char16_t c, c2;
if(length>=0) {
while(length>0) {
@@ -3282,7 +3359,7 @@ UBool stringContainsUnpairedSurrogate(const UChar *s, int32_t length) {
// Testing UTF-16 and UTF-8 together requires that surrogate code points
// have the same contains(c) value as U+FFFD.
void UnicodeSetTest::testSpanBothUTFs(const UnicodeSetWithStrings *sets[4],
- const UChar *s16, int32_t length16,
+ const char16_t *s16, int32_t length16,
uint32_t whichSpans,
const char *testName, int32_t index) {
int32_t expectLimits[500];
@@ -3301,7 +3378,7 @@ void UnicodeSetTest::testSpanBothUTFs(const UnicodeSetWithStrings *sets[4],
uint8_t s8[3000];
int32_t offsets[3000];
- const UChar *s16Limit=s16+length16;
+ const char16_t *s16Limit=s16+length16;
char *t=(char *)s8;
char *tLimit=t+sizeof(s8);
int32_t *o=offsets;
@@ -3368,7 +3445,7 @@ void UnicodeSetTest::testSpanContents(const UnicodeSetWithStrings *sets[4], uint
sets[0]->getSet().containsNone(0xd800, 0xdfff)) ||
sets[0]->hasStringsWithSurrogates());
- UChar s[1000];
+ char16_t s[1000];
int32_t length=0;
uint32_t localWhichSpans;
@@ -3393,7 +3470,7 @@ void UnicodeSetTest::testSpanContents(const UnicodeSetWithStrings *sets[4], uint
// Test with a particular, interesting string.
// Specify length and try NUL-termination.
void UnicodeSetTest::testSpanUTF16String(const UnicodeSetWithStrings *sets[4], uint32_t whichSpans, const char *testName) {
- static const UChar s[]={
+ static const char16_t s[]={
0x61, 0x62, 0x20, // Latin, space
0x3b1, 0x3b2, 0x3b3, // Greek
0xd900, // lead surrogate
@@ -3702,8 +3779,8 @@ void UnicodeSetTest::TestSpan() {
uint32_t whichSpans[96]={ SPAN_ALL };
int32_t whichSpansCount=1;
- UnicodeSet *sets[SET_COUNT]={ NULL };
- const UnicodeSetWithStrings *sets_with_str[SET_COUNT]={ NULL };
+ UnicodeSet *sets[SET_COUNT]={ nullptr };
+ const UnicodeSetWithStrings *sets_with_str[SET_COUNT]={ nullptr };
char testName[1024];
char *testNameLimit=testName;
@@ -3792,7 +3869,8 @@ void UnicodeSetTest::TestSpan() {
strcpy(testNameLimit, "bad_string");
for(j=0; j<whichSpansCount; ++j) {
if(whichSpansCount>1) {
- sprintf(testNameLimit+10 /* strlen("bad_string") */,
+ snprintf(testNameLimit+10 /* strlen("bad_string") */,
+ sizeof(testName) - (testNameLimit+10-testName),
"%%0x%3x",
whichSpans[j]);
}
@@ -3803,7 +3881,8 @@ void UnicodeSetTest::TestSpan() {
strcpy(testNameLimit, "contents");
for(j=0; j<whichSpansCount; ++j) {
if(whichSpansCount>1) {
- sprintf(testNameLimit+8 /* strlen("contents") */,
+ snprintf(testNameLimit+8 /* strlen("contents") */,
+ sizeof(testName) - (testNameLimit+8-testName),
"%%0x%3x",
whichSpans[j]);
}
@@ -3814,7 +3893,8 @@ void UnicodeSetTest::TestSpan() {
strcpy(testNameLimit, "test_string");
for(j=0; j<whichSpansCount; ++j) {
if(whichSpansCount>1) {
- sprintf(testNameLimit+11 /* strlen("test_string") */,
+ snprintf(testNameLimit+11 /* strlen("test_string") */,
+ sizeof(testName) - (testNameLimit+11-testName),
"%%0x%3x",
whichSpans[j]);
}
@@ -3861,7 +3941,7 @@ void UnicodeSetTest::TestStringSpan() {
}
string16=u"byayaxya";
- const UChar *s16=string16.getBuffer();
+ const char16_t *s16=string16.getBuffer();
int32_t length16=string16.length();
(void)length16; // Suppress set but not used warning.
if( set.span(s16, 8, USET_SPAN_NOT_CONTAINED)!=4 ||
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/usettest.h b/Build/source/libs/icu/icu-src/source/test/intltest/usettest.h
index d5f1f37208b..138ca3ee6fe 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/usettest.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/usettest.h
@@ -34,7 +34,7 @@ public:
~UnicodeSetTest();
private:
- void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par=NULL) override;
+ void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par=nullptr) override;
void Testj2268();
@@ -44,42 +44,44 @@ private:
*/
void TestToPattern();
- void TestPatterns(void);
- void TestCategories(void);
- void TestAddRemove(void);
- void TestCloneEqualHash(void);
+ void TestPatterns();
+ void TestCategories();
+ void TestAddRemove();
+ void TestCloneEqualHash();
/**
* Make sure minimal representation is maintained.
*/
- void TestMinimalRep(void);
+ void TestMinimalRep();
- void TestAPI(void);
+ void TestAPI();
- void TestIteration(void);
+ void TestIteration();
- void TestStrings(void);
+ void TestStrings();
- void TestScriptSet(void);
+ void TestScriptSet();
/**
* Test the [:Latin:] syntax.
*/
- void TestPropertySet(void);
+ void TestPropertySet();
- void TestClone(void);
+ void TestClone();
- void TestIndexOf(void);
+ void TestIndexOf();
- void TestExhaustive(void);
+ void TestExhaustive();
- void TestCloseOver(void);
+ void TestCloseOver();
+ void TestCloseOverSimpleCaseFolding();
+ void TestCloseOverLargeSets();
- void TestEscapePattern(void);
+ void TestEscapePattern();
- void TestInvalidCodePoint(void);
+ void TestInvalidCodePoint();
- void TestSymbolTable(void);
+ void TestSymbolTable();
void TestSurrogate();
@@ -188,7 +190,7 @@ private:
uint32_t whichSpans,
const char *testName, int32_t index);
void testSpanBothUTFs(const UnicodeSetWithStrings *sets[4],
- const UChar *s16, int32_t length16,
+ const char16_t *s16, int32_t length16,
uint32_t whichSpans,
const char *testName, int32_t index);
void testSpanContents(const UnicodeSetWithStrings *sets[4], uint32_t whichSpans, const char *testName);
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/ustrtest.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/ustrtest.cpp
index a4da8e04665..26c51b9c23a 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/ustrtest.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/ustrtest.cpp
@@ -100,7 +100,7 @@ UnicodeStringTest::TestBasicManipulation()
if (test1 != expectedValue)
errln("replace() failed: expected \"" + expectedValue + "\"\n,got \"" + test1 + "\"");
- UChar temp[80];
+ char16_t temp[80];
test1.extract(0, 15, temp);
UnicodeString test2(temp, 15);
@@ -200,7 +200,7 @@ UnicodeStringTest::TestBasicManipulation()
errln("UnicodeString(codepageData, dataLength, codepage) does not work with dataLength==-1");
}
- UChar buffer[10]={ 0x61, 0x62, 0x20ac, 0xd900, 0xdc05, 0, 0x62, 0xffff, 0xdbff, 0xdfff };
+ char16_t buffer[10]={ 0x61, 0x62, 0x20ac, 0xd900, 0xdc05, 0, 0x62, 0xffff, 0xdbff, 0xdfff };
UnicodeString s, t(buffer, -1, UPRV_LENGTHOF(buffer));
if(s.setTo(buffer, -1, UPRV_LENGTHOF(buffer)).length()!=u_strlen(buffer)) {
@@ -211,10 +211,10 @@ UnicodeStringTest::TestBasicManipulation()
}
if(0!=s.caseCompare(buffer, -1, U_FOLD_CASE_DEFAULT)) {
- errln("UnicodeString.caseCompare(const UChar *, length, options) does not work with length==-1");
+ errln("UnicodeString.caseCompare(const char16_t *, length, options) does not work with length==-1");
}
if(0!=s.caseCompare(0, s.length(), buffer, U_FOLD_CASE_DEFAULT)) {
- errln("UnicodeString.caseCompare(start, _length, const UChar *, options) does not work");
+ errln("UnicodeString.caseCompare(start, _length, const char16_t *, options) does not work");
}
buffer[u_strlen(buffer)]=0xe4;
@@ -242,7 +242,7 @@ UnicodeStringTest::TestBasicManipulation()
{
// Test the hardcoded-UTF-8 UnicodeString optimizations.
static const uint8_t utf8[]={ 0x61, 0xC3, 0xA4, 0xC3, 0x9F, 0xE4, 0xB8, 0x80, 0 };
- static const UChar utf16[]={ 0x61, 0xE4, 0xDF, 0x4E00 };
+ static const char16_t utf16[]={ 0x61, 0xE4, 0xDF, 0x4E00 };
UnicodeString from8a = UnicodeString((const char *)utf8);
UnicodeString from8b = UnicodeString((const char *)utf8, (int32_t)sizeof(utf8)-1);
UnicodeString from16(false, utf16, UPRV_LENGTHOF(utf16));
@@ -270,10 +270,10 @@ UnicodeStringTest::TestCompare()
UnicodeString test3("this is a test of the emergency broadcast system");
UnicodeString test4("never say, \"this is a test\"!!");
- UnicodeString test5((UChar)0x5000);
- UnicodeString test6((UChar)0x5100);
+ UnicodeString test5((char16_t)0x5000);
+ UnicodeString test6((char16_t)0x5100);
- UChar uniChars[] = { 0x74, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73,
+ char16_t uniChars[] = { 0x74, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73,
0x20, 0x61, 0x20, 0x74, 0x65, 0x73, 0x74, 0 };
char chars[] = "this is a test";
@@ -303,17 +303,17 @@ UnicodeStringTest::TestCompare()
test3.compare(0, 18, test1) <=0 )
errln("compare(offset, length, UnicodeString) fails");
- // test compare(UChar*)
+ // test compare(char16_t*)
if (test2.compare(uniChars) != 0 || test3.compare(uniChars) <= 0 || test4.compare(uniChars) >= 0)
- errln("compare(UChar*) failed");
+ errln("compare(char16_t*) failed");
// test compare(char*)
if (test2.compare(chars) != 0 || test3.compare(chars) <= 0 || test4.compare(chars) >= 0)
errln("compare(char*) failed");
- // test compare(UChar*, length)
+ // test compare(char16_t*, length)
if (test1.compare(uniChars, 4) <= 0 || test1.compare(uniChars, 4) <= 0)
- errln("compare(UChar*, length) failed");
+ errln("compare(char16_t*, length) failed");
// test compare(thisOffset, thisLength, that, thatOffset, thatLength)
if (test1.compare(0, 14, test2, 0, 14) != 0
@@ -352,7 +352,7 @@ UnicodeStringTest::TestCompare()
/* test compareCodePointOrder() */
{
/* these strings are in ascending order */
- static const UChar strings[][4]={
+ static const char16_t strings[][4]={
{ 0x61, 0 }, /* U+0061 */
{ 0x20ac, 0xd801, 0 }, /* U+20ac U+d801 */
{ 0x20ac, 0xd800, 0xdc00, 0 }, /* U+20ac U+10000 */
@@ -380,7 +380,7 @@ UnicodeStringTest::TestCompare()
/* test caseCompare() */
{
- static const UChar
+ static const char16_t
_mixed[]= { 0x61, 0x42, 0x131, 0x3a3, 0xdf, 0x130, 0x49, 0xfb03, 0xd93f, 0xdfff, 0 },
_otherDefault[]= { 0x41, 0x62, 0x131, 0x3c3, 0x73, 0x53, 0x69, 0x307, 0x69, 0x46, 0x66, 0x49, 0xd93f, 0xdfff, 0 },
_otherExcludeSpecialI[]={ 0x41, 0x62, 0x131, 0x3c3, 0x53, 0x73, 0x69, 0x131, 0x66, 0x46, 0x69, 0xd93f, 0xdfff, 0 },
@@ -428,36 +428,36 @@ UnicodeStringTest::TestCompare()
}
// test that srcLength=-1 is handled in functions that
- // take input const UChar */int32_t srcLength (j785)
+ // take input const char16_t */int32_t srcLength (j785)
{
- static const UChar u[]={ 0x61, 0x308, 0x62, 0 };
+ static const char16_t u[]={ 0x61, 0x308, 0x62, 0 };
UnicodeString s=UNICODE_STRING("a\\u0308b", 8).unescape();
if(s.compare(u, -1)!=0 || s.compare(0, 999, u, 0, -1)!=0) {
- errln("error UnicodeString::compare(..., const UChar *, srcLength=-1) does not work");
+ errln("error UnicodeString::compare(..., const char16_t *, srcLength=-1) does not work");
}
if(s.compareCodePointOrder(u, -1)!=0 || s.compareCodePointOrder(0, 999, u, 0, -1)!=0) {
- errln("error UnicodeString::compareCodePointOrder(..., const UChar *, srcLength=-1, ...) does not work");
+ errln("error UnicodeString::compareCodePointOrder(..., const char16_t *, srcLength=-1, ...) does not work");
}
if(s.caseCompare(u, -1, U_FOLD_CASE_DEFAULT)!=0 || s.caseCompare(0, 999, u, 0, -1, U_FOLD_CASE_DEFAULT)!=0) {
- errln("error UnicodeString::caseCompare(..., const UChar *, srcLength=-1, ...) does not work");
+ errln("error UnicodeString::caseCompare(..., const char16_t *, srcLength=-1, ...) does not work");
}
if(s.indexOf(u, 1, -1, 0, 999)!=1 || s.indexOf(u+1, -1, 0, 999)!=1 || s.indexOf(u+1, -1, 0)!=1) {
- errln("error UnicodeString::indexOf(const UChar *, srcLength=-1, ...) does not work");
+ errln("error UnicodeString::indexOf(const char16_t *, srcLength=-1, ...) does not work");
}
if(s.lastIndexOf(u, 1, -1, 0, 999)!=1 || s.lastIndexOf(u+1, -1, 0, 999)!=1 || s.lastIndexOf(u+1, -1, 0)!=1) {
- errln("error UnicodeString::lastIndexOf(const UChar *, srcLength=-1, ...) does not work");
+ errln("error UnicodeString::lastIndexOf(const char16_t *, srcLength=-1, ...) does not work");
}
UnicodeString s2, s3;
s2.replace(0, 0, u+1, -1);
s3.replace(0, 0, u, 1, -1);
if(s.compare(1, 999, s2)!=0 || s2!=s3) {
- errln("error UnicodeString::replace(..., const UChar *, srcLength=-1, ...) does not work");
+ errln("error UnicodeString::replace(..., const char16_t *, srcLength=-1, ...) does not work");
}
}
}
@@ -467,7 +467,7 @@ UnicodeStringTest::TestExtract()
{
UnicodeString test1("Now is the time for all good men to come to the aid of their country.", "");
UnicodeString test2;
- UChar test3[13] = {1, 2, 3, 4, 5, 6, 7, 8, 8, 10, 11, 12, 13};
+ char16_t test3[13] = {1, 2, 3, 4, 5, 6, 7, 8, 8, 10, 11, 12, 13};
char test4[13] = {1, 2, 3, 4, 5, 6, 7, 8, 8, 10, 11, 12, 13};
UnicodeString test5;
char test6[13] = {1, 2, 3, 4, 5, 6, 7, 8, 8, 10, 11, 12, 13};
@@ -495,8 +495,8 @@ UnicodeStringTest::TestExtract()
// convert test4 back to Unicode for comparison
UnicodeString test4b(test4, 12);
- if (test1.extract(11, 12, (char *)NULL) != 12) {
- errln("UnicodeString.extract(NULL) failed to return the correct size of destination buffer.");
+ if (test1.extract(11, 12, (char *)nullptr) != 12) {
+ errln("UnicodeString.extract(nullptr) failed to return the correct size of destination buffer.");
}
if (test1.extract(11, -1, test6) != 0) {
errln("UnicodeString.extract(-1) failed to stop reading the string.");
@@ -508,7 +508,7 @@ UnicodeStringTest::TestExtract()
break;
}
if (test1.charAt((int32_t)(11 + i)) != test3[i]) {
- errln(UnicodeString("extracting into an array of UChar failed at position ") + i);
+ errln(UnicodeString("extracting into an array of char16_t failed at position ") + i);
break;
}
if (((char)test1.charAt((int32_t)(11 + i))) != test4b.charAt(i)) {
@@ -522,8 +522,8 @@ UnicodeStringTest::TestExtract()
}
// test preflighting and overflows with invariant conversion
- if (test1.extract(0, 10, (char *)NULL, "") != 10) {
- errln("UnicodeString.extract(0, 10, (char *)NULL, \"\") != 10");
+ if (test1.extract(0, 10, (char *)nullptr, "") != 10) {
+ errln("UnicodeString.extract(0, 10, (char *)nullptr, \"\") != 10");
}
test4[2] = (char)0xff;
@@ -537,7 +537,7 @@ UnicodeStringTest::TestExtract()
{
// test new, NUL-terminating extract() function
UnicodeString s("terminate", "");
- UChar dest[20]={
+ char16_t dest[20]={
0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5,
0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5
};
@@ -545,9 +545,9 @@ UnicodeStringTest::TestExtract()
int32_t length;
errorCode=U_ZERO_ERROR;
- length=s.extract((UChar *)NULL, 0, errorCode);
+ length=s.extract((char16_t *)nullptr, 0, errorCode);
if(errorCode!=U_BUFFER_OVERFLOW_ERROR || length!=s.length()) {
- errln("UnicodeString.extract(NULL, 0)==%d (%s) expected %d (U_BUFFER_OVERFLOW_ERROR)", length, s.length(), u_errorName(errorCode));
+ errln("UnicodeString.extract(nullptr, 0)==%d (%s) expected %d (U_BUFFER_OVERFLOW_ERROR)", length, s.length(), u_errorName(errorCode));
}
errorCode=U_ZERO_ERROR;
@@ -594,10 +594,10 @@ UnicodeStringTest::TestExtract()
if(U_SUCCESS(errorCode)) {
// test preflighting
- if( (length=s.extract(NULL, 0, cnv, errorCode))!=13 ||
+ if( (length=s.extract(nullptr, 0, cnv, errorCode))!=13 ||
errorCode!=U_BUFFER_OVERFLOW_ERROR
) {
- errln("UnicodeString::extract(NULL, UConverter) preflighting failed (length=%ld, %s)",
+ errln("UnicodeString::extract(nullptr, UConverter) preflighting failed (length=%ld, %s)",
length, u_errorName(errorCode));
}
errorCode=U_ZERO_ERROR;
@@ -610,11 +610,11 @@ UnicodeStringTest::TestExtract()
// try error cases
errorCode=U_ZERO_ERROR;
- if( s.extract(NULL, 2, cnv, errorCode)==13 || U_SUCCESS(errorCode)) {
+ if( s.extract(nullptr, 2, cnv, errorCode)==13 || U_SUCCESS(errorCode)) {
errln("UnicodeString::extract(UConverter) succeeded with an illegal destination");
}
errorCode=U_ILLEGAL_ARGUMENT_ERROR;
- if( s.extract(NULL, 0, cnv, errorCode)==13 || U_SUCCESS(errorCode)) {
+ if( s.extract(nullptr, 0, cnv, errorCode)==13 || U_SUCCESS(errorCode)) {
errln("UnicodeString::extract(UConverter) succeeded with a previous error code");
}
errorCode=U_ZERO_ERROR;
@@ -655,7 +655,7 @@ UnicodeStringTest::TestRemoveReplace()
{
UnicodeString test1("The rain in Spain stays mainly on the plain");
UnicodeString test2("eat SPAMburgers!");
- UChar test3[] = { 0x53, 0x50, 0x41, 0x4d, 0x4d, 0 };
+ char16_t test3[] = { 0x53, 0x50, 0x41, 0x4d, 0x4d, 0 };
char test4[] = "SPAM";
UnicodeString& test5 = test1;
@@ -700,10 +700,10 @@ UnicodeStringTest::TestSearching()
{
UnicodeString test1("test test ttest tetest testesteststt");
UnicodeString test2("test");
- UChar testChar = 0x74;
+ char16_t testChar = 0x74;
UChar32 testChar32 = 0x20402;
- UChar testData[]={
+ char16_t testData[]={
// 0 1 2 3 4 5 6 7
0xd841, 0xdc02, 0x0071, 0xdc02, 0xd841, 0x0071, 0xd841, 0xdc02,
@@ -862,7 +862,7 @@ UnicodeStringTest::TestSearching()
if(test3.indexOf((UChar32)0xd841) != 4 || test3.indexOf((UChar32)0xdc02) != 3) {
errln("error: UnicodeString::indexOf(UChar32 surrogate) finds a partial supplementary code point");
}
- if( UnicodeString(test3, 0, 17).lastIndexOf((UChar)0xd841, 0) != 4 ||
+ if( UnicodeString(test3, 0, 17).lastIndexOf((char16_t)0xd841, 0) != 4 ||
UnicodeString(test3, 0, 17).lastIndexOf((UChar32)0xd841, 2) != 4 ||
test3.lastIndexOf((UChar32)0xd841, 0, 17) != 4 || test3.lastIndexOf((UChar32)0xdc02, 0, 17) != 16
) {
@@ -980,8 +980,8 @@ UnicodeStringTest::TestPrefixAndSuffix()
void
UnicodeStringTest::TestStartsWithAndEndsWithNulTerminated() {
UnicodeString test("abcde");
- const UChar ab[] = { 0x61, 0x62, 0 };
- const UChar de[] = { 0x64, 0x65, 0 };
+ const char16_t ab[] = { 0x61, 0x62, 0 };
+ const char16_t de[] = { 0x64, 0x65, 0 };
assertTrue("abcde.startsWith(ab, -1)", test.startsWith(ab, -1));
assertTrue("abcde.startsWith(ab, 0, -1)", test.startsWith(ab, 0, -1));
assertTrue("abcde.endsWith(de, -1)", test.endsWith(de, -1));
@@ -1049,12 +1049,12 @@ UnicodeStringTest::TestMiscellaneous()
// test getBuffer(minCapacity) and releaseBuffer()
test1=UnicodeString(); // make sure that it starts with its stackBuffer
- UChar *p=test1.getBuffer(20);
+ char16_t *p=test1.getBuffer(20);
if(test1.getCapacity()<20) {
errln("UnicodeString::getBuffer(20).getCapacity()<20");
}
- test1.append((UChar)7); // must not be able to modify the string here
+ test1.append((char16_t)7); // must not be able to modify the string here
test1.setCharAt(3, 7);
test1.reverse();
if( test1.length()!=0 ||
@@ -1068,7 +1068,7 @@ UnicodeStringTest::TestMiscellaneous()
p[1]=2;
p[2]=3;
test1.releaseBuffer(3);
- test1.append((UChar)4);
+ test1.append((char16_t)4);
if(test1.length()!=4 || test1.charAt(0)!=1 || test1.charAt(1)!=2 || test1.charAt(2)!=3 || test1.charAt(3)!=4) {
errln("UnicodeString::releaseBuffer(newLength) does not properly reallow access to the UnicodeString");
@@ -1081,7 +1081,7 @@ UnicodeStringTest::TestMiscellaneous()
}
// test getBuffer(const)
- const UChar *q=test1.getBuffer(), *r=test1.getBuffer();
+ const char16_t *q=test1.getBuffer(), *r=test1.getBuffer();
if( test1.length()!=4 ||
q[0]!=1 || q[1]!=2 || q[2]!=3 || q[3]!=4 ||
r[0]!=1 || r[1]!=2 || r[2]!=3 || r[3]!=4
@@ -1099,7 +1099,7 @@ UnicodeStringTest::TestMiscellaneous()
// test releaseBuffer() with a non-NUL-terminated buffer
p=test1.getBuffer(256);
for(int32_t i=0; i<test1.getCapacity(); ++i) {
- p[i]=(UChar)1; // fill the buffer with all non-NUL code units
+ p[i]=(char16_t)1; // fill the buffer with all non-NUL code units
}
test1.releaseBuffer(); // implicit -1
if(test1.length()!=test1.getCapacity() || test1.charAt(1)!=1 || test1.charAt(100)!=1 || test1.charAt(test1.getCapacity()-1)!=1) {
@@ -1114,7 +1114,7 @@ UnicodeStringTest::TestMiscellaneous()
errln("getTerminatedBuffer()[length]!=0");
}
- const UChar u[]={ 5, 6, 7, 8, 0 };
+ const char16_t u[]={ 5, 6, 7, 8, 0 };
test1.setTo(false, u, 3);
q=test1.getTerminatedBuffer();
if(q==u || q[0]!=5 || q[1]!=6 || q[2]!=7 || q[3]!=0) {
@@ -1131,20 +1131,20 @@ UnicodeStringTest::TestMiscellaneous()
// as u" lila", offset by 3 code units
test1=UnicodeString(true, u"la", 2);
test1.append(UnicodeString(true, u" lila", 5).getTerminatedBuffer(), 0, -1);
- assertEquals("UnicodeString::append(const UChar *, start, length) failed",
+ assertEquals("UnicodeString::append(const char16_t *, start, length) failed",
u"la lila", test1);
test1.insert(3, UnicodeString(true, u"dudum ", 6), 0, INT32_MAX);
assertEquals("UnicodeString::insert(start, const UniStr &, start, length) failed",
u"la dudum lila", test1);
- static const UChar ucs[]={ 0x68, 0x6d, 0x20, 0 };
+ static const char16_t ucs[]={ 0x68, 0x6d, 0x20, 0 };
test1.insert(9, ucs, -1);
- assertEquals("UnicodeString::insert(start, const UChar *, length) failed",
+ assertEquals("UnicodeString::insert(start, const char16_t *, length) failed",
u"la dudum hm lila", test1);
- test1.replace(9, 2, (UChar)0x2b);
- assertEquals("UnicodeString::replace(start, length, UChar) failed",
+ test1.replace(9, 2, (char16_t)0x2b);
+ assertEquals("UnicodeString::replace(start, length, char16_t) failed",
u"la dudum + lila", test1);
if(test1.hasMetaData() || UnicodeString().hasMetaData()) {
@@ -1187,9 +1187,9 @@ UnicodeStringTest::TestMiscellaneous()
void
UnicodeStringTest::TestStackAllocation()
{
- UChar testString[] ={
+ char16_t testString[] ={
0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x63, 0x72, 0x61, 0x7a, 0x79, 0x20, 0x74, 0x65, 0x73, 0x74, 0x2e, 0 };
- UChar guardWord = 0x4DED;
+ char16_t guardWord = 0x4DED;
UnicodeString* test = 0;
test = new UnicodeString(testString);
@@ -1209,13 +1209,13 @@ UnicodeStringTest::TestStackAllocation()
// explicitly, since we can't overload operator delete
delete test;
- UChar workingBuffer[] = {
+ char16_t workingBuffer[] = {
0x4e, 0x6f, 0x77, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20,
0x66, 0x6f, 0x72, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x6d, 0x65, 0x6e, 0x20, 0x74, 0x6f, 0x20,
0x63, 0x6f, 0x6d, 0x65, 0xffff, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- UChar guardWord2 = 0x4DED;
+ char16_t guardWord2 = 0x4DED;
test = new UnicodeString(workingBuffer, 35, 100);
if (*test != "Now is the time for all men to come")
@@ -1280,11 +1280,11 @@ UnicodeStringTest::TestStackAllocation()
delete test;
test=new UnicodeString();
- UChar buffer[]={0x0061, 0x0062, 0x20ac, 0x0043, 0x0042, 0x0000};
+ char16_t buffer[]={0x0061, 0x0062, 0x20ac, 0x0043, 0x0042, 0x0000};
test->setTo(buffer, 4, 10);
if(test->length() !=4 || test->charAt(0) != 0x0061 || test->charAt(1) != 0x0062 ||
test->charAt(2) != 0x20ac || test->charAt(3) != 0x0043){
- errln((UnicodeString)"UnicodeString.setTo(UChar*, length, capacity) does not work correctly\n" + prettify(*test));
+ errln((UnicodeString)"UnicodeString.setTo(char16_t*, length, capacity) does not work correctly\n" + prettify(*test));
}
delete test;
@@ -1323,17 +1323,17 @@ UnicodeStringTest::TestStackAllocation()
/**
* Test the unescape() function.
*/
-void UnicodeStringTest::TestUnescape(void) {
+void UnicodeStringTest::TestUnescape() {
UnicodeString IN("abc\\u4567 \\n\\r \\U00101234xyz\\x1\\x{5289}\\x1b", -1, US_INV);
UnicodeString OUT("abc");
- OUT.append((UChar)0x4567);
+ OUT.append((char16_t)0x4567);
OUT.append(" ");
- OUT.append((UChar)0xA);
- OUT.append((UChar)0xD);
+ OUT.append((char16_t)0xA);
+ OUT.append((char16_t)0xD);
OUT.append(" ");
OUT.append((UChar32)0x00101234);
OUT.append("xyz");
- OUT.append((UChar32)1).append((UChar32)0x5289).append((UChar)0x1b);
+ OUT.append((UChar32)1).append((UChar32)0x5289).append((char16_t)0x1b);
UnicodeString result = IN.unescape();
if (result != OUT) {
errln("FAIL: " + prettify(IN) + ".unescape() -> " +
@@ -1372,7 +1372,7 @@ UnicodeStringTest::_testUnicodeStringHasMoreChar32Than(const UnicodeString &s, i
}
void
-UnicodeStringTest::TestCountChar32(void) {
+UnicodeStringTest::TestCountChar32() {
{
UnicodeString s=UNICODE_STRING("\\U0002f999\\U0001d15f\\u00c4\\u1ed0", 32).unescape();
@@ -1389,7 +1389,7 @@ UnicodeStringTest::TestCountChar32(void) {
}
// NUL-terminate the string buffer and test u_countChar32(length=-1)
- const UChar *buffer=s.getTerminatedBuffer();
+ const char16_t *buffer=s.getTerminatedBuffer();
if(
u_countChar32(buffer, -1)!=4 ||
u_countChar32(buffer+1, -1)!=4 ||
@@ -1403,13 +1403,13 @@ UnicodeStringTest::TestCountChar32(void) {
}
// test u_countChar32() with bad input
- if(u_countChar32(NULL, 5)!=0 || u_countChar32(buffer, -2)!=0) {
+ if(u_countChar32(nullptr, 5)!=0 || u_countChar32(buffer, -2)!=0) {
errln("u_countChar32(bad input) failed (returned non-zero counts)");
}
}
/* test data and variables for hasMoreChar32Than() */
- static const UChar str[]={
+ static const char16_t str[]={
0x61, 0x62, 0xd800, 0xdc00,
0xd801, 0xdc01, 0x63, 0xd802,
0x64, 0xdc03, 0x65, 0x66,
@@ -1457,7 +1457,7 @@ UnicodeStringTest::TestBogus() {
errln("A string returned true for isBogus()!");
}
- // NULL pointers are treated like empty strings
+ // nullptr pointers are treated like empty strings
// use other illegal arguments to make a bogus string
test3.setTo(false, test1.getBuffer(), -2);
if(!test3.isBogus()) {
@@ -1484,13 +1484,13 @@ UnicodeStringTest::TestBogus() {
// verify that non-assignment modifications fail and do not revive a bogus string
test3.setToBogus();
- test3.append((UChar)0x61);
+ test3.append((char16_t)0x61);
if(!test3.isBogus() || test3.getBuffer()!=0) {
errln("bogus.append('a') worked but must not");
}
test3.setToBogus();
- test3.findAndReplace(UnicodeString((UChar)0x61), test2);
+ test3.findAndReplace(UnicodeString((char16_t)0x61), test2);
if(!test3.isBogus() || test3.getBuffer()!=0) {
errln("bogus.findAndReplace() worked but must not");
}
@@ -1545,12 +1545,12 @@ UnicodeStringTest::TestBogus() {
test3.setToBogus();
if(!test3.isBogus() || test3.setTo(test1.getBuffer(), test1.length()).isBogus() || test3!=test1) {
- errln("bogus.setTo(const UChar *, len) failed");
+ errln("bogus.setTo(const char16_t *, len) failed");
}
test3.setToBogus();
- if(!test3.isBogus() || test3.setTo((UChar)0x2028).isBogus() || test3!=UnicodeString((UChar)0x2028)) {
- errln("bogus.setTo(UChar) failed");
+ if(!test3.isBogus() || test3.setTo((char16_t)0x2028).isBogus() || test3!=UnicodeString((char16_t)0x2028)) {
+ errln("bogus.setTo(char16_t) failed");
}
test3.setToBogus();
@@ -1566,7 +1566,7 @@ UnicodeStringTest::TestBogus() {
// writable alias to another string's buffer: very bad idea, just convenient for this test
test3.setToBogus();
if(!test3.isBogus() ||
- test3.setTo(const_cast<UChar *>(test1.getBuffer()),
+ test3.setTo(const_cast<char16_t *>(test1.getBuffer()),
test1.length(), test1.getCapacity()).isBogus() ||
test3!=test1) {
errln("bogus.setTo(writable alias) failed");
@@ -1603,7 +1603,7 @@ UnicodeStringTest::TestBogus() {
errln("bogus.setTo((UChar32)-1) failed");
}
- static const UChar nul=0;
+ static const char16_t nul=0;
test3.setToBogus();
if(!test3.isBogus() || test3.setTo(&nul, 0).isBogus() || !test3.isEmpty()) {
@@ -1620,7 +1620,7 @@ UnicodeStringTest::TestBogus() {
errln("normal=bogus failed to make the left string bogus");
}
- // test that NULL primitive input string values are treated like
+ // test that nullptr primitive input string values are treated like
// empty strings, not errors (bogus)
test2.setTo((UChar32)0x10005);
if(test2.insert(1, nullptr, 1).length()!=2) {
@@ -1629,19 +1629,19 @@ UnicodeStringTest::TestBogus() {
UErrorCode errorCode=U_ZERO_ERROR;
UnicodeString
- test4((const UChar *)NULL),
- test5(true, (const UChar *)NULL, 1),
- test6((UChar *)NULL, 5, 5),
- test7((const char *)NULL, 3, NULL, errorCode);
+ test4((const char16_t *)nullptr),
+ test5(true, (const char16_t *)nullptr, 1),
+ test6((char16_t *)nullptr, 5, 5),
+ test7((const char *)nullptr, 3, nullptr, errorCode);
if(test4.isBogus() || test5.isBogus() || test6.isBogus() || test7.isBogus()) {
- errln("a constructor set to bogus for a NULL input string, should be empty");
+ errln("a constructor set to bogus for a nullptr input string, should be empty");
}
- test4.setTo(NULL, 3);
- test5.setTo(true, (const UChar *)NULL, 1);
- test6.setTo((UChar *)NULL, 5, 5);
+ test4.setTo(nullptr, 3);
+ test5.setTo(true, (const char16_t *)nullptr, 1);
+ test6.setTo((char16_t *)nullptr, 5, 5);
if(test4.isBogus() || test5.isBogus() || test6.isBogus()) {
- errln("a setTo() set to bogus for a NULL input string, should be empty");
+ errln("a setTo() set to bogus for a nullptr input string, should be empty");
}
// test that bogus==bogus<any
@@ -1692,7 +1692,7 @@ public:
return &unistr;
}
- return NULL;
+ return nullptr;
}
virtual void reset(UErrorCode& /*status*/) override {
@@ -1721,7 +1721,7 @@ UnicodeStringTest::TestStringEnumeration() {
int32_t i, length;
UErrorCode status;
- const UChar *pu;
+ const char16_t *pu;
const char *pc;
// test the next() default implementation and ensureCharsCapacity()
@@ -1729,13 +1729,13 @@ UnicodeStringTest::TestStringEnumeration() {
status=U_ZERO_ERROR;
pc=ten.next(&length, status);
s=UnicodeString(testEnumStrings[i], "");
- if(U_FAILURE(status) || pc==NULL || length!=s.length() || UnicodeString(pc, length, "")!=s) {
+ if(U_FAILURE(status) || pc==nullptr || length!=s.length() || UnicodeString(pc, length, "")!=s) {
errln("StringEnumeration.next(%d) failed", i);
}
}
status=U_ZERO_ERROR;
- if(ten.next(&length, status)!=NULL) {
- errln("StringEnumeration.next(done)!=NULL");
+ if(ten.next(&length, status)!=nullptr) {
+ errln("StringEnumeration.next(done)!=nullptr");
}
// test the unext() default implementation
@@ -1744,18 +1744,18 @@ UnicodeStringTest::TestStringEnumeration() {
status=U_ZERO_ERROR;
pu=ten.unext(&length, status);
s=UnicodeString(testEnumStrings[i], "");
- if(U_FAILURE(status) || pu==NULL || length!=s.length() || UnicodeString(true, pu, length)!=s) {
+ if(U_FAILURE(status) || pu==nullptr || length!=s.length() || UnicodeString(true, pu, length)!=s) {
errln("StringEnumeration.unext(%d) failed", i);
}
}
status=U_ZERO_ERROR;
- if(ten.unext(&length, status)!=NULL) {
- errln("StringEnumeration.unext(done)!=NULL");
+ if(ten.unext(&length, status)!=nullptr) {
+ errln("StringEnumeration.unext(done)!=nullptr");
}
- // test that the default clone() implementation works, and returns NULL
- if(ten.clone()!=NULL) {
- errln("StringEnumeration.clone()!=NULL");
+ // test that the default clone() implementation works, and returns nullptr
+ if(ten.clone()!=nullptr) {
+ errln("StringEnumeration.clone()!=nullptr");
}
// test that uenum_openFromStringEnumeration() works
@@ -1763,7 +1763,7 @@ UnicodeStringTest::TestStringEnumeration() {
StringEnumeration *newTen = new TestEnumeration;
status=U_ZERO_ERROR;
UEnumeration *uten = uenum_openFromStringEnumeration(newTen, &status);
- if (uten==NULL || U_FAILURE(status)) {
+ if (uten==nullptr || U_FAILURE(status)) {
errln("fail at file %s, line %d, UErrorCode is %s\n", __FILE__, __LINE__, u_errorName(status));
return;
}
@@ -1772,13 +1772,13 @@ UnicodeStringTest::TestStringEnumeration() {
for(i=0; i<UPRV_LENGTHOF(testEnumStrings); ++i) {
status=U_ZERO_ERROR;
pc=uenum_next(uten, &length, &status);
- if(U_FAILURE(status) || pc==NULL || strcmp(pc, testEnumStrings[i]) != 0) {
+ if(U_FAILURE(status) || pc==nullptr || strcmp(pc, testEnumStrings[i]) != 0) {
errln("File %s, line %d, StringEnumeration.next(%d) failed", __FILE__, __LINE__, i);
}
}
status=U_ZERO_ERROR;
- if(uenum_next(uten, &length, &status)!=NULL) {
- errln("File %s, line %d, uenum_next(done)!=NULL");
+ if(uenum_next(uten, &length, &status)!=nullptr) {
+ errln("File %s, line %d, uenum_next(done)!=nullptr");
}
// test the uenum_unext()
@@ -1787,13 +1787,13 @@ UnicodeStringTest::TestStringEnumeration() {
status=U_ZERO_ERROR;
pu=uenum_unext(uten, &length, &status);
s=UnicodeString(testEnumStrings[i], "");
- if(U_FAILURE(status) || pu==NULL || length!=s.length() || UnicodeString(true, pu, length)!=s) {
+ if(U_FAILURE(status) || pu==nullptr || length!=s.length() || UnicodeString(true, pu, length)!=s) {
errln("File %s, Line %d, uenum_unext(%d) failed", __FILE__, __LINE__, i);
}
}
status=U_ZERO_ERROR;
- if(uenum_unext(uten, &length, &status)!=NULL) {
- errln("File %s, Line %d, uenum_unext(done)!=NULL" __FILE__, __LINE__);
+ if(uenum_unext(uten, &length, &status)!=nullptr) {
+ errln("File %s, Line %d, uenum_unext(done)!=nullptr" __FILE__, __LINE__);
}
uenum_close(uten);
@@ -1810,7 +1810,7 @@ namespace bogus {
public:
enum EInvariant { kInvariant };
UnicodeString() : i(1) {}
- UnicodeString(UBool /*isTerminated*/, const UChar * /*text*/, int32_t textLength) : i(textLength) {(void)i;}
+ UnicodeString(UBool /*isTerminated*/, const char16_t * /*text*/, int32_t textLength) : i(textLength) {(void)i;}
UnicodeString(const char * /*src*/, int32_t length, enum EInvariant /*inv*/
) : i(length) {}
private:
@@ -1844,7 +1844,7 @@ UnicodeStringTest::TestUTF32() {
0x41, 0xd900, 0x61, 0xdc00, -1, 0x110000, 0x5a, 0x50000, 0x7a,
0x10000, 0x20000, 0xe0000, 0x10ffff
};
- static const UChar expected_utf16[] = {
+ static const char16_t expected_utf16[] = {
0x41, 0xfffd, 0x61, 0xfffd, 0xfffd, 0xfffd, 0x5a, 0xd900, 0xdc00, 0x7a,
0xd800, 0xdc00, 0xd840, 0xdc00, 0xdb40, 0xdc00, 0xdbff, 0xdfff
};
@@ -1854,7 +1854,7 @@ UnicodeStringTest::TestUTF32() {
errln("UnicodeString::fromUTF32() did not create the expected string.");
}
- static const UChar utf16[] = {
+ static const char16_t utf16[] = {
0x41, 0xd900, 0x61, 0xdc00, 0x5a, 0xd900, 0xdc00, 0x7a, 0xd800, 0xdc00, 0xdbff, 0xdfff
};
static const UChar32 expected_utf32[] = {
@@ -1898,7 +1898,7 @@ UnicodeStringTest::TestUTF8() {
0xf0, 0x90, 0x80, 0x80, 0xf0, 0xa0, 0x80, 0x80,
0xf3, 0xa0, 0x80, 0x80, 0xf4, 0x8f, 0xbf, 0xbf
};
- static const UChar expected_utf16[] = {
+ static const char16_t expected_utf16[] = {
0x41, 0xfffd, 0xfffd, 0xfffd,
0x61, 0xfffd, 0xfffd, 0xfffd,
0xfffd, 0xfffd, 0xfffd, 0xfffd,0x5a,
@@ -1918,7 +1918,7 @@ UnicodeStringTest::TestUTF8() {
errln("UnicodeString::fromUTF8(std::string) did not create the expected string.");
}
- static const UChar utf16[] = {
+ static const char16_t utf16[] = {
0x41, 0xd900, 0x61, 0xdc00, 0x5a, 0xd900, 0xdc00, 0x7a, 0xd800, 0xdc00, 0xdbff, 0xdfff
};
static const uint8_t expected_utf8[] = {
@@ -1949,13 +1949,13 @@ UnicodeStringTest::TestUTF8() {
}
// Test if this compiler supports Return Value Optimization of unnamed temporary objects.
-static UnicodeString wrapUChars(const UChar *uchars) {
+static UnicodeString wrapUChars(const char16_t *uchars) {
return UnicodeString(true, uchars, -1);
}
void
UnicodeStringTest::TestReadOnlyAlias() {
- UChar uchars[]={ 0x61, 0x62, 0 };
+ char16_t uchars[]={ 0x61, 0x62, 0 };
UnicodeString alias(true, uchars, 2);
if(alias.length()!=2 || alias.getBuffer()!=uchars || alias.getTerminatedBuffer()!=uchars) {
errln("UnicodeString read-only-aliasing constructor does not behave as expected.");
@@ -2017,7 +2017,7 @@ UnicodeStringTest::TestReadOnlyAlias() {
errln("UnicodeString.setTo(read-only-alias).retainBetween(6, 30) did not preserve aliasing as expected.");
}
- UChar abc[]={ 0x61, 0x62, 0x63, 0 };
+ char16_t abc[]={ 0x61, 0x62, 0x63, 0 };
UBool hasRVO= wrapUChars(abc).getBuffer()==abc;
UnicodeString temp;
@@ -2055,8 +2055,8 @@ UnicodeStringTest::TestReadOnlyAlias() {
void
UnicodeStringTest::doTestAppendable(UnicodeString &dest, Appendable &app) {
- static const UChar cde[3]={ 0x63, 0x64, 0x65 };
- static const UChar fg[3]={ 0x66, 0x67, 0 };
+ static const char16_t cde[3]={ 0x63, 0x64, 0x65 };
+ static const char16_t fg[3]={ 0x66, 0x67, 0 };
if(!app.reserveAppendCapacity(12)) {
errln("Appendable.reserve(12) failed");
}
@@ -2065,26 +2065,26 @@ UnicodeStringTest::doTestAppendable(UnicodeString &dest, Appendable &app) {
app.appendCodePoint(0x50000);
app.appendString(cde, 3);
app.appendString(fg, -1);
- UChar scratch[3];
+ char16_t scratch[3];
int32_t capacity=-1;
- UChar *buffer=app.getAppendBuffer(3, 3, scratch, 3, &capacity);
+ char16_t *buffer=app.getAppendBuffer(3, 3, scratch, 3, &capacity);
if(capacity<3) {
errln("Appendable.getAppendBuffer(min=3) returned capacity=%d<3", (int)capacity);
return;
}
- static const UChar hij[3]={ 0x68, 0x69, 0x6a };
+ static const char16_t hij[3]={ 0x68, 0x69, 0x6a };
u_memcpy(buffer, hij, 3);
app.appendString(buffer, 3);
if(dest!=UNICODE_STRING_SIMPLE("ab\\U00050000cdefghij").unescape()) {
errln("Appendable.append(...) failed");
}
buffer=app.getAppendBuffer(0, 3, scratch, 3, &capacity);
- if(buffer!=NULL || capacity!=0) {
+ if(buffer!=nullptr || capacity!=0) {
errln("Appendable.getAppendBuffer(min=0) failed");
}
capacity=1;
buffer=app.getAppendBuffer(3, 3, scratch, 2, &capacity);
- if(buffer!=NULL || capacity!=0) {
+ if(buffer!=nullptr || capacity!=0) {
errln("Appendable.getAppendBuffer(scratch<min) failed");
}
}
@@ -2092,7 +2092,7 @@ UnicodeStringTest::doTestAppendable(UnicodeString &dest, Appendable &app) {
class SimpleAppendable : public Appendable {
public:
explicit SimpleAppendable(UnicodeString &dest) : str(dest) {}
- virtual UBool appendCodeUnit(UChar c) override { str.append(c); return true; }
+ virtual UBool appendCodeUnit(char16_t c) override { str.append(c); return true; }
SimpleAppendable &reset() { str.remove(); return *this; }
private:
UnicodeString &str;
@@ -2132,16 +2132,16 @@ UnicodeStringTest::TestSizeofUnicodeString() {
// is available for internal storage of UChars.
int32_t expectedStackBufferLength=((int32_t)UNISTR_OBJECT_SIZE-sizeof(void *)-2)/U_SIZEOF_UCHAR;
UnicodeString s;
- const UChar *emptyBuffer=s.getBuffer();
+ const char16_t *emptyBuffer=s.getBuffer();
for(int32_t i=0; i<expectedStackBufferLength; ++i) {
- s.append((UChar)0x2e);
+ s.append((char16_t)0x2e);
}
- const UChar *fullBuffer=s.getBuffer();
+ const char16_t *fullBuffer=s.getBuffer();
if(fullBuffer!=emptyBuffer) {
errln("unexpected reallocation when filling with assumed stack buffer size of %d",
expectedStackBufferLength);
}
- const UChar *terminatedBuffer=s.getTerminatedBuffer();
+ const char16_t *terminatedBuffer=s.getTerminatedBuffer();
if(terminatedBuffer==emptyBuffer) {
errln("unexpected keeping stack buffer when overfilling assumed stack buffer size of %d",
expectedStackBufferLength);
@@ -2155,11 +2155,11 @@ void moveFrom(UnicodeString &dest, UnicodeString &src) {
void
UnicodeStringTest::TestMoveSwap() {
- static const UChar abc[3] = { 0x61, 0x62, 0x63 }; // "abc"
+ static const char16_t abc[3] = { 0x61, 0x62, 0x63 }; // "abc"
UnicodeString s1(false, abc, UPRV_LENGTHOF(abc)); // read-only alias
UnicodeString s2(100, 0x7a, 100); // 100 * 'z' should be on the heap
UnicodeString s3("defg", 4, US_INV); // in stack buffer
- const UChar *p = s2.getBuffer();
+ const char16_t *p = s2.getBuffer();
s1.swap(s2);
if(s1.getBuffer() != p || s1.length() != 100 || s2.getBuffer() != abc || s2.length() != 3) {
errln("UnicodeString.swap() did not swap");
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/ustrtest.h b/Build/source/libs/icu/icu-src/source/test/intltest/ustrtest.h
index 34cdeac4fd7..088b71399d1 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/ustrtest.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/ustrtest.h
@@ -27,57 +27,57 @@ public:
UnicodeStringTest() {}
virtual ~UnicodeStringTest();
- void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
/**
* Test some basic methods (insert, remove, replace, ...)
**/
- void TestBasicManipulation(void);
+ void TestBasicManipulation();
/**
* Test the methods for comparison
**/
- void TestCompare(void);
+ void TestCompare();
/**
* Test the methods for extracting
**/
- void TestExtract(void);
+ void TestExtract();
/**
* More extensively test methods for removing and replacing
**/
- void TestRemoveReplace(void);
+ void TestRemoveReplace();
/**
* Test language specific case conversions
**/
- void TestSearching(void);
+ void TestSearching();
/**
* Test methods for padding, trimmimg and truncating
**/
- void TestSpacePadding(void);
+ void TestSpacePadding();
/**
* Test methods startsWith and endsWith
**/
- void TestPrefixAndSuffix(void);
+ void TestPrefixAndSuffix();
void TestStartsWithAndEndsWithNulTerminated();
/**
* Test method findAndReplace
**/
- void TestFindAndReplace(void);
+ void TestFindAndReplace();
/**
* Test method reverse
**/
- void TestReverse(void);
+ void TestReverse();
/**
* Test a few miscellaneous methods (isBogus, hashCode,...)
**/
- void TestMiscellaneous(void);
+ void TestMiscellaneous();
/**
* Test the functionality of allocating UnicodeStrings on the stack
**/
- void TestStackAllocation(void);
+ void TestStackAllocation();
/**
* Test the unescape() function.
*/
- void TestUnescape(void);
+ void TestUnescape();
void _testUnicodeStringHasMoreChar32Than(const UnicodeString &s, int32_t start, int32_t length, int32_t number);
void TestCountChar32();
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/uts46test.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/uts46test.cpp
index 555ef453127..6f6c699d53c 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/uts46test.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/uts46test.cpp
@@ -34,10 +34,10 @@
class UTS46Test : public IntlTest {
public:
- UTS46Test() : trans(NULL), nontrans(NULL) {}
+ UTS46Test() : trans(nullptr), nontrans(nullptr) {}
virtual ~UTS46Test();
- void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=NULL) override;
+ void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=nullptr) override;
void TestAPI();
void TestNotSTD3();
void TestInvalidPunycodeDigits();
@@ -67,7 +67,7 @@ UTS46Test::~UTS46Test() {
void UTS46Test::runIndexedTest(int32_t index, UBool exec, const char *&name, char * /*par*/) {
if(exec) {
logln("TestSuite UTS46Test: ");
- if(trans==NULL) {
+ if(trans==nullptr) {
IcuTestErrorCode errorCode(*this, "init/createUTS46Instance()");
uint32_t commonOptions=
UIDNA_USE_STD3_RULES|UIDNA_CHECK_BIDI|
@@ -102,7 +102,7 @@ const uint32_t severeErrors=
UIDNA_ERROR_INVALID_ACE_LABEL;
static UBool isASCII(const UnicodeString &str) {
- const UChar *s=str.getBuffer();
+ const char16_t *s=str.getBuffer();
int32_t length=str.length();
for(int32_t i=0; i<length; ++i) {
if(s[i]>=0x80) {
@@ -167,9 +167,9 @@ void UTS46Test::TestAPI() {
char buffer[100];
TestCheckedArrayByteSink sink(buffer, UPRV_LENGTHOF(buffer));
errorCode=U_ZERO_ERROR;
- nontrans->labelToUnicodeUTF8(StringPiece((const char *)NULL, 5), sink, info, errorCode);
+ nontrans->labelToUnicodeUTF8(StringPiece((const char *)nullptr, 5), sink, info, errorCode);
if(errorCode!=U_ILLEGAL_ARGUMENT_ERROR || sink.NumberOfBytesWritten()!=0) {
- errln("N.labelToUnicodeUTF8(StringPiece(NULL, 5)) did not set illegal-argument-error ",
+ errln("N.labelToUnicodeUTF8(StringPiece(nullptr, 5)) did not set illegal-argument-error ",
"or did output something - %s",
u_errorName(errorCode));
}
@@ -242,14 +242,6 @@ void UTS46Test::TestNotSTD3() {
if(result!=input || info.getErrors()!=UIDNA_ERROR_BIDI) {
errln("notSTD3.nameToASCII(ASCII-with-space.alef.edu) failed");
}
- // Characters that are canonically equivalent to sequences with non-LDH ASCII.
- input=UNICODE_STRING_SIMPLE("a\\u2260b\\u226Ec\\u226Fd").unescape();
- not3->nameToUnicode(input, result, info, errorCode);
- if(result!=input || info.hasErrors()) {
- prettify(result).extract(0, 0x7fffffff, buffer, UPRV_LENGTHOF(buffer));
- errln("notSTD3.nameToUnicode(equiv to non-LDH ASCII) unexpected errors %04lx string %s",
- (long)info.getErrors(), buffer);
- }
}
void UTS46Test::TestInvalidPunycodeDigits() {
@@ -418,10 +410,6 @@ static const TestCase testCases[]={
{ "\\u65E5\\u672C\\u8A9E\\u3002\\uFF2A\\uFF30", "B", // Japanese with fullwidth ".jp"
"\\u65E5\\u672C\\u8A9E.jp", 0 },
{ "\\u2615", "B", "\\u2615", 0 }, // Unicode 4.0 HOT BEVERAGE
- // some characters are disallowed because they are canonically equivalent
- // to sequences with non-LDH ASCII
- { "a\\u2260b\\u226Ec\\u226Fd", "B",
- "a\\uFFFDb\\uFFFDc\\uFFFDd", UIDNA_ERROR_DISALLOWED },
// many deviation characters, test the special mapping code
{ "1.a\\u00DF\\u200C\\u200Db\\u200C\\u200Dc\\u00DF\\u00DF\\u00DF\\u00DFd"
"\\u03C2\\u03C3\\u00DF\\u00DF\\u00DF\\u00DF\\u00DF\\u00DF\\u00DF\\u00DFe"
@@ -852,7 +840,7 @@ void UTS46Test::TestSomeCases() {
) {
continue;
}
- if(aN.indexOf((UChar)0x2e)<0) {
+ if(aN.indexOf((char16_t)0x2e)<0) {
if(aN!=aNL || aNInfo.getErrors()!=aNLInfo.getErrors()) {
prettify(aN).extract(0, 0x7fffffff, buffer, UPRV_LENGTHOF(buffer));
prettify(aNL).extract(0, 0x7fffffff, buffer2, UPRV_LENGTHOF(buffer2));
@@ -868,7 +856,7 @@ void UTS46Test::TestSomeCases() {
continue;
}
}
- if(aT.indexOf((UChar)0x2e)<0) {
+ if(aT.indexOf((char16_t)0x2e)<0) {
if(aT!=aTL || aTInfo.getErrors()!=aTLInfo.getErrors()) {
prettify(aT).extract(0, 0x7fffffff, buffer, UPRV_LENGTHOF(buffer));
prettify(aTL).extract(0, 0x7fffffff, buffer2, UPRV_LENGTHOF(buffer2));
@@ -884,7 +872,7 @@ void UTS46Test::TestSomeCases() {
continue;
}
}
- if(uN.indexOf((UChar)0x2e)<0) {
+ if(uN.indexOf((char16_t)0x2e)<0) {
if(uN!=uNL || uNInfo.getErrors()!=uNLInfo.getErrors()) {
prettify(uN).extract(0, 0x7fffffff, buffer, UPRV_LENGTHOF(buffer));
prettify(uNL).extract(0, 0x7fffffff, buffer2, UPRV_LENGTHOF(buffer2));
@@ -900,7 +888,7 @@ void UTS46Test::TestSomeCases() {
continue;
}
}
- if(uT.indexOf((UChar)0x2e)<0) {
+ if(uT.indexOf((char16_t)0x2e)<0) {
if(uT!=uTL || uTInfo.getErrors()!=uTLInfo.getErrors()) {
prettify(uT).extract(0, 0x7fffffff, buffer, UPRV_LENGTHOF(buffer));
prettify(uTL).extract(0, 0x7fffffff, buffer2, UPRV_LENGTHOF(buffer2));
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/utxttest.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/utxttest.cpp
index d0e5ffb571d..21ea2c29839 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/utxttest.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/utxttest.cpp
@@ -65,6 +65,7 @@ UTextTest::runIndexedTest(int32_t index, UBool exec,
TESTCASE_AUTO(Ticket10983);
TESTCASE_AUTO(Ticket12130);
TESTCASE_AUTO(Ticket13344);
+ TESTCASE_AUTO(AccessChangesChunkSize);
TESTCASE_AUTO_END;
}
@@ -104,9 +105,9 @@ void UTextTest::TextTest() {
for (j=0; j<i; j++) {
if (j+0x30 == 0x5c) {
// backslash. Needs to be escaped
- s.append((UChar)0x5c);
+ s.append((char16_t)0x5c);
}
- s.append(UChar(j+0x30));
+ s.append(char16_t(j+0x30));
}
TestString(s);
}
@@ -115,7 +116,7 @@ void UTextTest::TextTest() {
// looking for glitches at buffer boundaries
for (i=1; i<60; i++) {
s.truncate(0);
- s.append((UChar)0x41);
+ s.append((char16_t)0x41);
for (j=0; j<i; j++) {
s.append(UChar32(j+0x11000));
}
@@ -167,7 +168,7 @@ void UTextTest::TestString(const UnicodeString &s) {
UChar32 c;
int32_t cpCount = 0;
UErrorCode status = U_ZERO_ERROR;
- UText *ut = NULL;
+ UText *ut = nullptr;
int32_t saLen;
UnicodeString sa = s.unescape();
@@ -188,23 +189,23 @@ void UTextTest::TestString(const UnicodeString &s) {
cpMap[j].nativeIdx = i; // position following the last char in utf-16 string.
- // UChar * test, null terminated
+ // char16_t * test, null terminated
status = U_ZERO_ERROR;
- UChar *buf = new UChar[saLen+1];
+ char16_t *buf = new char16_t[saLen+1];
sa.extract(buf, saLen+1, status);
TEST_SUCCESS(status);
- ut = utext_openUChars(NULL, buf, -1, &status);
+ ut = utext_openUChars(nullptr, buf, -1, &status);
TEST_SUCCESS(status);
TestAccess(sa, ut, cpCount, cpMap);
utext_close(ut);
delete [] buf;
- // UChar * test, with length
+ // char16_t * test, with length
status = U_ZERO_ERROR;
- buf = new UChar[saLen+1];
+ buf = new char16_t[saLen+1];
sa.extract(buf, saLen+1, status);
TEST_SUCCESS(status);
- ut = utext_openUChars(NULL, buf, saLen, &status);
+ ut = utext_openUChars(nullptr, buf, saLen, &status);
TEST_SUCCESS(status);
TestAccess(sa, ut, cpCount, cpMap);
utext_close(ut);
@@ -213,7 +214,7 @@ void UTextTest::TestString(const UnicodeString &s) {
// UnicodeString test
status = U_ZERO_ERROR;
- ut = utext_openUnicodeString(NULL, &sa, &status);
+ ut = utext_openUnicodeString(nullptr, &sa, &status);
TEST_SUCCESS(status);
TestAccess(sa, ut, cpCount, cpMap);
TestCMR(sa, ut, cpCount, cpMap, cpMap);
@@ -222,7 +223,7 @@ void UTextTest::TestString(const UnicodeString &s) {
// Const UnicodeString test
status = U_ZERO_ERROR;
- ut = utext_openConstUnicodeString(NULL, &sa, &status);
+ ut = utext_openConstUnicodeString(nullptr, &sa, &status);
TEST_SUCCESS(status);
TestAccess(sa, ut, cpCount, cpMap);
utext_close(ut);
@@ -230,7 +231,7 @@ void UTextTest::TestString(const UnicodeString &s) {
// Replaceable test. (UnicodeString inherits Replaceable)
status = U_ZERO_ERROR;
- ut = utext_openReplaceable(NULL, &sa, &status);
+ ut = utext_openReplaceable(nullptr, &sa, &status);
TEST_SUCCESS(status);
TestAccess(sa, ut, cpCount, cpMap);
TestCMR(sa, ut, cpCount, cpMap, cpMap);
@@ -238,10 +239,10 @@ void UTextTest::TestString(const UnicodeString &s) {
// Character Iterator Tests
status = U_ZERO_ERROR;
- const UChar *cbuf = sa.getBuffer();
+ const char16_t *cbuf = sa.getBuffer();
CharacterIterator *ci = new UCharCharacterIterator(cbuf, saLen, status);
TEST_SUCCESS(status);
- ut = utext_openCharacterIterator(NULL, ci, &status);
+ ut = utext_openCharacterIterator(nullptr, ci, &status);
TEST_SUCCESS(status);
TestAccess(sa, ut, cpCount, cpMap);
utext_close(ut);
@@ -251,7 +252,7 @@ void UTextTest::TestString(const UnicodeString &s) {
// Fragmented UnicodeString (Chunk size of one)
//
status = U_ZERO_ERROR;
- ut = openFragmentedUnicodeString(NULL, &sa, &status);
+ ut = openFragmentedUnicodeString(nullptr, &sa, &status);
TEST_SUCCESS(status);
TestAccess(sa, ut, cpCount, cpMap);
utext_close(ut);
@@ -261,7 +262,7 @@ void UTextTest::TestString(const UnicodeString &s) {
//
// Convert the test string from UnicodeString to (char *) in utf-8 format
- int32_t u8Len = sa.extract(0, sa.length(), NULL, 0, "utf-8");
+ int32_t u8Len = sa.extract(0, sa.length(), nullptr, 0, "utf-8");
char *u8String = new char[u8Len + 1];
sa.extract(0, sa.length(), u8String, u8Len+1, "utf-8");
@@ -277,7 +278,7 @@ void UTextTest::TestString(const UnicodeString &s) {
// Do the test itself
status = U_ZERO_ERROR;
- ut = utext_openUTF8(NULL, u8String, -1, &status);
+ ut = utext_openUTF8(nullptr, u8String, -1, &status);
TEST_SUCCESS(status);
TestAccess(sa, ut, cpCount, u8Map);
utext_close(ut);
@@ -411,7 +412,7 @@ void UTextTest::TestCopyMove(const UnicodeString &us, UText *ut, UBool move,
int32_t u16Start, int32_t u16Limit, int32_t u16Dest)
{
UErrorCode status = U_ZERO_ERROR;
- UText *targetUT = NULL;
+ UText *targetUT = nullptr;
gTestNum++;
gFailed = false;
@@ -419,7 +420,7 @@ void UTextTest::TestCopyMove(const UnicodeString &us, UText *ut, UBool move,
// clone the UText. The test will be run in the cloned copy
// so that we don't alter the original.
//
- targetUT = utext_clone(NULL, ut, true, false, &status);
+ targetUT = utext_clone(nullptr, ut, true, false, &status);
TEST_SUCCESS(status);
UnicodeString targetUS(us); // And copy the reference string.
@@ -489,7 +490,7 @@ void UTextTest::TestReplace(
const UnicodeString &repStr) // The replacement string
{
UErrorCode status = U_ZERO_ERROR;
- UText *targetUT = NULL;
+ UText *targetUT = nullptr;
gTestNum++;
gFailed = false;
@@ -497,7 +498,7 @@ void UTextTest::TestReplace(
// clone the target UText. The test will be run in the cloned copy
// so that we don't alter the original.
//
- targetUT = utext_clone(NULL, ut, true, false, &status);
+ targetUT = utext_clone(nullptr, ut, true, false, &status);
TEST_SUCCESS(status);
UnicodeString targetUS(us); // And copy the reference string.
@@ -510,7 +511,7 @@ void UTextTest::TestReplace(
//
// Do the replace on the UText under test
//
- const UChar *rs = repStr.getBuffer();
+ const char16_t *rs = repStr.getBuffer();
int32_t rsLen = repStr.length();
int32_t actualDelta = utext_replace(targetUT, nativeStart, nativeLimit, rs, rsLen, &status);
int32_t expectedDelta = repStr.length() - (nativeLimit - nativeStart);
@@ -560,7 +561,7 @@ void UTextTest::TestAccess(const UnicodeString &us, UText *ut, int cpCount, m *c
// Re-run tests on a shallow clone.
utext_setNativeIndex(ut, 0);
UErrorCode status = U_ZERO_ERROR;
- UText *shallowClone = utext_clone(NULL, ut, false /*deep*/, false /*readOnly*/, &status);
+ UText *shallowClone = utext_clone(nullptr, ut, false /*deep*/, false /*readOnly*/, &status);
TEST_SUCCESS(status);
TestAccessNoClone(us, shallowClone, cpCount, cpMap);
@@ -571,7 +572,7 @@ void UTextTest::TestAccess(const UnicodeString &us, UText *ut, int cpCount, m *c
//
status = U_ZERO_ERROR;
utext_setNativeIndex(shallowClone, 0);
- UText *deepClone = utext_clone(NULL, shallowClone, true, false, &status);
+ UText *deepClone = utext_clone(nullptr, shallowClone, true, false, &status);
utext_close(shallowClone);
if (status != U_UNSUPPORTED_ERROR) {
TEST_SUCCESS(status);
@@ -799,7 +800,7 @@ void UTextTest::TestAccessNoClone(const UnicodeString &us, UText *ut, int cpCoun
// Extract
//
int bufSize = us.length() + 10;
- UChar *buf = new UChar[bufSize];
+ char16_t *buf = new char16_t[bufSize];
status = U_ZERO_ERROR;
expectedLen = us.length();
len = utext_extract(ut, 0, utlen, buf, bufSize, &status);
@@ -809,7 +810,7 @@ void UTextTest::TestAccessNoClone(const UnicodeString &us, UText *ut, int cpCoun
TEST_ASSERT(compareResult == 0);
status = U_ZERO_ERROR;
- len = utext_extract(ut, 0, utlen, NULL, 0, &status);
+ len = utext_extract(ut, 0, utlen, nullptr, 0, &status);
if (utlen == 0) {
TEST_ASSERT(status == U_STRING_NOT_TERMINATED_WARNING);
} else {
@@ -851,7 +852,7 @@ void UTextTest::ErrorTest()
UText ut;
memset(&ut, 0, sizeof(UText));
utext_close(&ut);
- utext_close(NULL);
+ utext_close(nullptr);
}
// Double-close of a UText. Shouldn't blow up. UText should still be usable.
@@ -881,7 +882,7 @@ void UTextTest::ErrorTest()
UText ut = UTEXT_INITIALIZER;
UText *utp;
UnicodeString s1("Hello, World");
- UChar s2[] = {(UChar)0x41, (UChar)0x42, (UChar)0};
+ char16_t s2[] = {(char16_t)0x41, (char16_t)0x42, (char16_t)0};
const char *s3 = "\x66\x67\x68";
utp = utext_openUnicodeString(&ut, &s1, &status);
@@ -914,19 +915,19 @@ void UTextTest::ErrorTest()
UErrorCode status = U_ZERO_ERROR;
UText ut = UTEXT_INITIALIZER;
- utext_openUChars(&ut, NULL, 5, &status);
+ utext_openUChars(&ut, nullptr, 5, &status);
TEST_ASSERT(status == U_ILLEGAL_ARGUMENT_ERROR);
status = U_ZERO_ERROR;
- utext_openUChars(&ut, NULL, -1, &status);
+ utext_openUChars(&ut, nullptr, -1, &status);
TEST_ASSERT(status == U_ILLEGAL_ARGUMENT_ERROR);
status = U_ZERO_ERROR;
- utext_openUTF8(&ut, NULL, 4, &status);
+ utext_openUTF8(&ut, nullptr, 4, &status);
TEST_ASSERT(status == U_ILLEGAL_ARGUMENT_ERROR);
status = U_ZERO_ERROR;
- utext_openUTF8(&ut, NULL, -1, &status);
+ utext_openUTF8(&ut, nullptr, -1, &status);
TEST_ASSERT(status == U_ILLEGAL_ARGUMENT_ERROR);
}
@@ -936,11 +937,11 @@ void UTextTest::ErrorTest()
//
{
UErrorCode status = U_ZERO_ERROR;
- UText *ut = NULL;
+ UText *ut = nullptr;
const char *badUTF8 = "\x41\x81\x42\xf0\x81\x81\x43";
UChar32 c;
- ut = utext_openUTF8(NULL, badUTF8, -1, &status);
+ ut = utext_openUTF8(nullptr, badUTF8, -1, &status);
TEST_SUCCESS(status);
c = utext_char32At(ut, 1);
TEST_ASSERT(c == 0xfffd);
@@ -951,7 +952,7 @@ void UTextTest::ErrorTest()
c = utext_char32At(ut, 6);
TEST_ASSERT(c == 0x43);
- UChar buf[10];
+ char16_t buf[10];
int n = utext_extract(ut, 0, 9, buf, 10, &status);
TEST_SUCCESS(status);
TEST_ASSERT(n==7);
@@ -975,17 +976,17 @@ void UTextTest::ErrorTest()
UnicodeString sa("Hello, this is a string");
UBool isExpensive;
- UChar sb[100];
+ char16_t sb[100];
memset(sb, 0x20, sizeof(sb));
sb[99] = 0;
- UText *uta = utext_openUnicodeString(NULL, &sa, &status);
+ UText *uta = utext_openUnicodeString(nullptr, &sa, &status);
TEST_SUCCESS(status);
isExpensive = utext_isLengthExpensive(uta);
TEST_ASSERT(isExpensive == false);
utext_close(uta);
- UText *utb = utext_openUChars(NULL, sb, -1, &status);
+ UText *utb = utext_openUChars(nullptr, sb, -1, &status);
TEST_SUCCESS(status);
isExpensive = utext_isLengthExpensive(utb);
TEST_ASSERT(isExpensive == true);
@@ -1013,7 +1014,7 @@ void UTextTest::ErrorTest()
UErrorCode status = U_ZERO_ERROR;
- UText *ut = utext_openUTF8(NULL, u8str, -1, &status);
+ UText *ut = utext_openUTF8(nullptr, u8str, -1, &status);
TEST_SUCCESS(status);
// Check setIndex
@@ -1056,7 +1057,7 @@ void UTextTest::ErrorTest()
// Extract from i to i+1, which may be zero or one code points,
// depending on whether the indices straddle a cp boundary.
for (i=0; i<startMapLimit; i++) {
- UChar buf[3];
+ char16_t buf[3];
status = U_ZERO_ERROR;
int32_t extractedLen = utext_extract(ut, i, i+1, buf, 3, &status);
TEST_SUCCESS(status);
@@ -1086,7 +1087,7 @@ void UTextTest::ErrorTest()
u16str = u16str.unescape();
UErrorCode status = U_ZERO_ERROR;
- UText *ut = utext_openUnicodeString(NULL, &u16str, &status);
+ UText *ut = utext_openUnicodeString(nullptr, &u16str, &status);
TEST_SUCCESS(status);
int32_t startMapLimit = UPRV_LENGTHOF(startMap);
@@ -1125,7 +1126,7 @@ void UTextTest::ErrorTest()
// Extract from i to i+1, which may be zero or one code points,
// depending on whether the indices straddle a cp boundary.
for (i=0; i<startMapLimit; i++) {
- UChar buf[3];
+ char16_t buf[3];
status = U_ZERO_ERROR;
int32_t extractedLen = utext_extract(ut, i, i+1, buf, 3, &status);
TEST_SUCCESS(status);
@@ -1154,7 +1155,7 @@ void UTextTest::ErrorTest()
u16str = u16str.unescape();
UErrorCode status = U_ZERO_ERROR;
- UText *ut = utext_openReplaceable(NULL, &u16str, &status);
+ UText *ut = utext_openReplaceable(nullptr, &u16str, &status);
TEST_SUCCESS(status);
int32_t startMapLimit = UPRV_LENGTHOF(startMap);
@@ -1193,7 +1194,7 @@ void UTextTest::ErrorTest()
// Extract from i to i+1, which may be zero or one code points,
// depending on whether the indices straddle a cp boundary.
for (i=0; i<startMapLimit; i++) {
- UChar buf[3];
+ char16_t buf[3];
status = U_ZERO_ERROR;
int32_t extractedLen = utext_extract(ut, i, i+1, buf, 3, &status);
TEST_SUCCESS(status);
@@ -1217,11 +1218,11 @@ void UTextTest::FreezeTest() {
UnicodeString ustr("Hello, World.");
const char u8str[] = {char(0x31), (char)0x32, (char)0x33, 0};
- const UChar u16str[] = {(UChar)0x31, (UChar)0x32, (UChar)0x44, 0};
+ const char16_t u16str[] = {(char16_t)0x31, (char16_t)0x32, (char16_t)0x44, 0};
UErrorCode status = U_ZERO_ERROR;
- UText *ut = NULL;
- UText *ut2 = NULL;
+ UText *ut = nullptr;
+ UText *ut2 = nullptr;
ut = utext_openUTF8(ut, u8str, -1, &status);
TEST_SUCCESS(status);
@@ -1264,7 +1265,7 @@ void UTextTest::FreezeTest() {
TEST_ASSERT(status == U_NO_WRITE_PERMISSION);
status = U_ZERO_ERROR;
- ut = utext_openConstUnicodeString(ut, (const UnicodeString *)&ustr, &status);
+ ut = utext_openConstUnicodeString(ut, &ustr, &status);
TEST_SUCCESS(status);
writable = utext_isWritable(ut);
TEST_ASSERT(writable == false);
@@ -1311,8 +1312,8 @@ void UTextTest::FreezeTest() {
U_CDECL_BEGIN
static UBool U_CALLCONV
fragTextAccess(UText *ut, int64_t index, UBool forward) {
- const UnicodeString *us = (const UnicodeString *)ut->context;
- UChar c;
+ const UnicodeString *us = static_cast<const UnicodeString *>(ut->context);
+ char16_t c;
int32_t length = us->length();
if (forward && index>=0 && index<length) {
c = us->charAt((int32_t)index);
@@ -1356,13 +1357,13 @@ static UTextFuncs fragmentFuncs;
UText *
cloneFragmentedUnicodeString(UText *dest, const UText *src, UBool deep, UErrorCode *status) {
if (U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
if (deep) {
*status = U_UNSUPPORTED_ERROR;
- return NULL;
+ return nullptr;
}
- dest = utext_openUnicodeString(dest, (UnicodeString *)src->context, status);
+ dest = utext_openUnicodeString(dest, static_cast<UnicodeString *>(const_cast<void*>(src->context)), status);
utext_setNativeIndex(dest, utext_getNativeIndex(src));
return dest;
}
@@ -1384,7 +1385,7 @@ openFragmentedUnicodeString(UText *ut, UnicodeString *s, UErrorCode *status) {
fragmentFuncs.clone = cloneFragmentedUnicodeString;
ut->pFuncs = &fragmentFuncs;
- ut->chunkContents = (UChar *)&ut->b;
+ ut->chunkContents = (char16_t *)&ut->b;
ut->pFuncs->access(ut, 0, true);
return ut;
}
@@ -1410,7 +1411,7 @@ void UTextTest::Ticket5560() {
UText ut2 = UTEXT_INITIALIZER;
utext_openUTF8(&ut1, s1, -1, &status);
- UChar c = utext_next32(&ut1);
+ char16_t c = utext_next32(&ut1);
TEST_ASSERT(c == 0x41); // c == 'A'
utext_clone(&ut2, &ut1, true, false, &status);
@@ -1435,12 +1436,12 @@ void UTextTest::Ticket5560() {
//
void UTextTest::Ticket6847() {
const int STRLEN = 90;
- UChar s[STRLEN+1];
+ char16_t s[STRLEN+1];
u_memset(s, 0x41, STRLEN);
s[STRLEN] = 0;
UErrorCode status = U_ZERO_ERROR;
- UText *ut = utext_openUChars(NULL, s, -1, &status);
+ UText *ut = utext_openUChars(nullptr, s, -1, &status);
utext_setNativeIndex(ut, 0);
int32_t count = 0;
@@ -1469,11 +1470,11 @@ void UTextTest::Ticket10562() {
UErrorCode status = U_ZERO_ERROR;
const char *utf8_string = "\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41";
- UText *utf8Text = utext_openUTF8(NULL, utf8_string, -1, &status);
+ UText *utf8Text = utext_openUTF8(nullptr, utf8_string, -1, &status);
TEST_SUCCESS(status);
- UText *deepClone = utext_clone(NULL, utf8Text, true, false, &status);
+ UText *deepClone = utext_clone(nullptr, utf8Text, true, false, &status);
TEST_SUCCESS(status);
- UText *shallowClone = utext_clone(NULL, deepClone, false, false, &status);
+ UText *shallowClone = utext_clone(nullptr, deepClone, false, false, &status);
TEST_SUCCESS(status);
utext_close(shallowClone);
utext_close(deepClone);
@@ -1481,11 +1482,11 @@ void UTextTest::Ticket10562() {
status = U_ZERO_ERROR;
UnicodeString usString("Hello, World.");
- UText *usText = utext_openUnicodeString(NULL, &usString, &status);
+ UText *usText = utext_openUnicodeString(nullptr, &usString, &status);
TEST_SUCCESS(status);
- UText *usDeepClone = utext_clone(NULL, usText, true, false, &status);
+ UText *usDeepClone = utext_clone(nullptr, usText, true, false, &status);
TEST_SUCCESS(status);
- UText *usShallowClone = utext_clone(NULL, usDeepClone, false, false, &status);
+ UText *usShallowClone = utext_clone(nullptr, usDeepClone, false, false, &status);
TEST_SUCCESS(status);
utext_close(usShallowClone);
utext_close(usDeepClone);
@@ -1498,18 +1499,18 @@ void UTextTest::Ticket10983() {
UErrorCode status = U_ZERO_ERROR;
UnicodeString s("Hello, World");
- UText *ut = utext_openConstUnicodeString(NULL, &s, &status);
+ UText *ut = utext_openConstUnicodeString(nullptr, &s, &status);
TEST_SUCCESS(status);
status = U_INVALID_STATE_ERROR;
- UText *cloned = utext_clone(NULL, ut, true, true, &status);
- TEST_ASSERT(cloned == NULL);
+ UText *cloned = utext_clone(nullptr, ut, true, true, &status);
+ TEST_ASSERT(cloned == nullptr);
TEST_ASSERT(status == U_INVALID_STATE_ERROR);
utext_close(ut);
}
-// Ticket 12130 - extract on a UText wrapping a null terminated UChar * string
+// Ticket 12130 - extract on a UText wrapping a null terminated char16_t * string
// leaves the iteration position set incorrectly when the
// actual string length is not yet known.
//
@@ -1528,10 +1529,10 @@ void UTextTest::Ticket12130() {
"symbols in common use.";
UnicodeString str(text8);
- const UChar *ustr = str.getTerminatedBuffer();
+ const char16_t *ustr = str.getTerminatedBuffer();
UText ut = UTEXT_INITIALIZER;
utext_openUChars(&ut, ustr, -1, &status);
- UChar extractBuffer[50];
+ char16_t extractBuffer[50];
for (int32_t startIdx = 0; startIdx<str.length(); ++startIdx) {
int32_t endIdx = startIdx + 20;
@@ -1591,7 +1592,7 @@ void UTextTest::Ticket12130() {
void UTextTest::Ticket13344() {
UErrorCode status = U_ZERO_ERROR;
const char16_t *str = u"abc\U0010abcd xyz";
- LocalUTextPointer ut(utext_openUChars(NULL, str, -1, &status));
+ LocalUTextPointer ut(utext_openUChars(nullptr, str, -1, &status));
assertSuccess("UTextTest::Ticket13344-status", status);
UTEXT_SETNATIVEINDEX(ut.getAlias(), 3);
@@ -1609,3 +1610,395 @@ void UTextTest::Ticket13344() {
assertEquals("UTextTest::Ticket13344-bmp-2", (int64_t)5, utext_getNativeIndex(ut.getAlias()));
}
+// ICU-21653 UText does not handle access callback that changes chunk size
+
+static const char16_t testAccessText[] = { // text with surrogates at chunk boundaries
+ 0xDC00,0xe001,0xe002,0xD83D,0xDE00,0xe005,0xe006,0xe007, 0xe008,0xe009,0xe00a,0xD83D,0xDE00,0xe00d,0xe00e,0xe00f, // 000-015, unpaired trail at 0
+ 0xE010,0xe011,0xe012,0xD83D,0xDE00,0xe015,0xe016,0xe017, 0xe018,0xe019,0xe01a,0xD83D,0xDE00,0xe01d,0xe01e,0xD800, // 016-031, paired lead at 31 with
+ 0xDC01,0xe021,0xe022,0xD83D,0xDE00,0xe025,0xe026,0xe027, 0xe028,0xe029,0xe02a,0xD83D,0xDE00,0xe02d,0xe02e,0xe02f, // 032-047, paired trail at 32
+ 0xe030,0xe031,0xe032,0xD83D,0xDE00,0xe035,0xe036,0xe037, 0xe038,0xe039,0xe03a,0xD83D,0xDE00,0xe03d,0xe03e,0xe03f, // 048-063
+ 0xDC02,0xe041,0xe042,0xD83D,0xDE00,0xe045,0xe046,0xe047, 0xe048,0xe049,0xe04a,0xD83D,0xDE00,0xe04d,0xe04e,0xe04f, // 064-079, unpaired trail at 64
+ 0xe050,0xe051,0xe052,0xD83D,0xDE00,0xe055,0xe056,0xe057, 0xe058,0xe059,0xe05a,0xD83D,0xDE00,0xe05d,0xe05e,0xD801, // 080-095, unpaired lead at 95
+ 0xe060,0xe061,0xe062,0xD83D,0xDE00,0xe065,0xe066,0xe067, 0xe068,0xe069,0xe06a,0xD83D,0xDE00,0xe06d,0xe06e,0xe06f, // 096-111
+ 0xE070,0xe071,0xe072,0xD83D,0xDE00,0xe075,0xe076,0xe077, 0xe078,0xe079,0xe07a,0xD83D,0xDE00,0xe07d,0xe07e,0xD802, // 112-127, unpaired lead at 127
+};
+
+static const UChar32 testAccess32Text[] = { // same as above in UTF32
+ 0xDC00,0xe001,0xe002,0x1F600,0xe005,0xe006,0xe007, 0xe008,0xe009,0xe00a,0x1F600,0xe00d,0xe00e,0xe00f, // 000-013, unpaired trail at 0
+ 0xE010,0xe011,0xe012,0x1F600,0xe015,0xe016,0xe017, 0xe018,0xe019,0xe01a,0x1F600,0xe01d,0xe01e,0x10001, // 014-027, nonBMP at 27, will split in chunks
+ 0xe021,0xe022,0x1F600,0xe025,0xe026,0xe027, 0xe028,0xe029,0xe02a,0x1F600,0xe02d,0xe02e,0xe02f, // 028-040
+ 0xe030,0xe031,0xe032,0x1F600,0xe035,0xe036,0xe037, 0xe038,0xe039,0xe03a,0x1F600,0xe03d,0xe03e,0xe03f, // 041-054
+ 0xDC02,0xe041,0xe042,0x1F600,0xe045,0xe046,0xe047, 0xe048,0xe049,0xe04a,0x1F600,0xe04d,0xe04e,0xe04f, // 055-068, unpaired trail at 55
+ 0xe050,0xe051,0xe052,0x1F600,0xe055,0xe056,0xe057, 0xe058,0xe059,0xe05a,0x1F600,0xe05d,0xe05e,0xD801, // 069-082, unpaired lead at 82
+ 0xe060,0xe061,0xe062,0x1F600,0xe065,0xe066,0xe067, 0xe068,0xe069,0xe06a,0x1F600,0xe06d,0xe06e,0xe06f, // 083-096
+ 0xE070,0xe071,0xe072,0x1F600,0xe075,0xe076,0xe077, 0xe078,0xe079,0xe07a,0x1F600,0xe07d,0xe07e,0xD802, // 097-110, unpaired lead at 110
+};
+
+enum {
+ kTestAccessSmallChunkSize = 8,
+ kTestAccessLargeChunkSize = 32,
+ kTextAccessGapSize = 2
+};
+
+typedef struct {
+ int64_t nativeOffset;
+ UChar32 expectChar;
+} OffsetAndChar;
+
+static const OffsetAndChar testAccessEntries[] = { // sequence of offsets to test with expected UChar32
+ // random access
+ { 127, 0xD802 },
+ { 16, 0xE010 },
+ { 95, 0xD801 },
+ { 31, 0x10001 },
+ { 112, 0xE070 },
+ { 0, 0xDC00 },
+ { 64, 0xDC02 },
+ { 32, 0x10001 },
+ // sequential access
+ { 0, 0xDC00 },
+ { 16, 0xE010 },
+ { 31, 0x10001 },
+ { 32, 0x10001 },
+ { 64, 0xDC02 },
+ { 95, 0xD801 },
+ { 112, 0xE070 },
+ { 127, 0xD802 },
+};
+
+static const OffsetAndChar testAccess32Entries[] = { // sequence of offsets to test with expected UChar32
+ // random access
+ { 110, 0xD802 }, // 0 *
+ { 14, 0xE010 }, // 1
+ { 82, 0xD801 }, // 2 *
+ { 27, 0x10001 }, // 3 *
+ { 97, 0xE070 }, // 4
+ { 0, 0xDC00 }, // 5
+ { 55, 0xDC02 }, // 6
+ // sequential access
+ { 0, 0xDC00 }, // 7
+ { 14, 0xE010 }, // 8
+ { 27, 0x10001 }, // 9 *
+ { 55, 0xDC02 }, // 10
+ { 97, 0xE070 }, // 11
+ { 82, 0xD801 }, // 12 *
+ { 110, 0xD802 }, // 13 *
+};
+// modified UTextAccess function for char16_t string; a cross between
+// UText ucstrTextAccess and a function that modifies chunk size
+// 1. assumes native length is known and in ut->a
+// 2. assumes that most fields may be 0 or nullptr, will fill out if index not in range
+// 3. Will designate buffer of size kTestAccessSmallChunkSize or kTestAccessLargeChunkSize
+// depending on kTextAccessGapSize
+static UBool
+ustrTextAccessModChunks(UText *ut, int64_t index, UBool forward) {
+ const char16_t *str = (const char16_t *)ut->context;
+ int64_t length = ut->a;
+
+ // pin the requested index to the bounds of the string
+ if (index < 0) {
+ index = 0;
+ } else if (index > length) {
+ index = length;
+ }
+ if (forward) {
+ if (index < ut->chunkNativeLimit && index >= ut->chunkNativeStart) {
+ /* Already inside the buffer. Set the new offset. */
+ ut->chunkOffset = (int32_t)(index - ut->chunkNativeStart);
+ return true;
+ }
+ if (index >= length && ut->chunkNativeLimit == length) {
+ /* Off the end of the buffer, but we can't get it. */
+ ut->chunkOffset = ut->chunkLength;
+ return false;
+ }
+ }
+ else {
+ if (index <= ut->chunkNativeLimit && index > ut->chunkNativeStart) {
+ /* Already inside the buffer. Set the new offset. */
+ ut->chunkOffset = (int32_t)(index - ut->chunkNativeStart);
+ return true;
+ }
+ if (index == 0 && ut->chunkNativeStart == 0) {
+ /* Already at the beginning; can't go any farther */
+ ut->chunkOffset = 0;
+ return false;
+ }
+ }
+ /* It's not inside the buffer. Start over from scratch. */
+ // Assume large chunk size for first access
+ int32_t chunkSize = kTestAccessLargeChunkSize;
+ if (ut->chunkContents != nullptr && ut->chunkLength != 0) {
+ // Subsequent access, set chunk size depending on gap (smaller chunk for large gap => random access)
+ int64_t gap = forward ? (index-ut->chunkNativeLimit) : (ut->chunkNativeStart-index);
+ if (gap < 0) {
+ gap = -gap;
+ }
+ chunkSize = (gap > kTextAccessGapSize)? kTestAccessSmallChunkSize: kTestAccessLargeChunkSize;
+ }
+ ut->chunkLength = chunkSize;
+ ut->chunkOffset = index % chunkSize;
+ if (!forward && ut->chunkOffset == 0 && index >= chunkSize) {
+ ut->chunkOffset = chunkSize;
+ }
+ ut->chunkNativeStart = index - ut->chunkOffset;
+ ut->chunkNativeLimit = ut->chunkNativeStart + ut->chunkLength;
+ ut->chunkContents = str + ut->chunkNativeStart;
+ ut->nativeIndexingLimit = ut->chunkLength;
+ return true;
+}
+
+// For testing UTF32 access (no native index does not match chunk offset/index
+
+/**
+ * @return the length, in the native units of the original text string.
+ */
+// 1. assumes native length is known and in ut->a
+static int64_t
+u32NativeLength(UText *ut) {
+ return ut->a;
+}
+
+/**
+ * Map from the current char16_t offset within the current text chunk to
+ * the corresponding native index in the original source text.
+ * @return Absolute (native) index corresponding to chunkOffset in the current chunk.
+ * The returned native index should always be to a code point boundary.
+ */
+// 1. assumes native length is known and in ut->a
+// 2. assumes that pointer to offset map is in
+static int64_t
+u32MapOffsetToNative(const UText *ut) {
+ const int64_t* offsetMap = (const int64_t*)ut->p;
+ int64_t u16Offset = offsetMap[ut->chunkNativeStart] + ut->chunkOffset;
+ int64_t index = ut->a;
+ while (u16Offset < offsetMap[index]) {
+ index--;
+ }
+ return index;
+}
+
+/**
+ * Map from a native index to a char16_t offset within a text chunk.
+ * Behavior is undefined if the native index does not fall within the
+ * current chunk.
+ * @param nativeIndex Absolute (native) text index, chunk->start<=index<=chunk->limit.
+ * @return Chunk-relative UTF-16 offset corresponding to the specified native
+ * index.
+ */
+static int32_t
+u32MapNativeIndexToUTF16(const UText *ut, int64_t index) {
+ const int64_t* offsetMap = (const int64_t*)ut->p;
+ if (index <= ut->chunkNativeStart) {
+ return 0;
+ } else if (index >= ut->chunkNativeLimit) {
+ return ut->chunkLength;
+ }
+ return (offsetMap[index] - offsetMap[ut->chunkNativeStart]);
+}
+
+static void
+u32Close(UText *ut) {
+ uprv_free((void*)ut->p);
+}
+
+static UBool
+u32Access(UText *ut, int64_t index, UBool forward) {
+ int64_t length = ut->a;
+ const int64_t* offsetMap = (const int64_t*)ut->p;
+ const char16_t *u16 = (const char16_t *)ut->q;
+
+ // pin the requested index to the bounds of the string
+ if (index < 0) {
+ index = 0;
+ } else if (index > length) {
+ index = length;
+ }
+ if (forward) {
+ if (index < ut->chunkNativeLimit && index >= ut->chunkNativeStart) {
+ /* Already inside the buffer. Set the new offset. */
+ ut->chunkOffset = (int32_t)(index - ut->chunkNativeStart);
+ return true;
+ }
+ if (index >= length && ut->chunkNativeLimit == length) {
+ /* Off the end of the buffer, but we can't get it. */
+ ut->chunkOffset = ut->chunkLength;
+ return false;
+ }
+ }
+ else {
+ if (index <= ut->chunkNativeLimit && index > ut->chunkNativeStart) {
+ /* Already inside the buffer. Set the new offset. */
+ ut->chunkOffset = (int32_t)(index - ut->chunkNativeStart);
+ return true;
+ }
+ if (index == 0 && ut->chunkNativeStart == 0) {
+ /* Already at the beginning; can't go any farther */
+ ut->chunkOffset = 0;
+ return false;
+ }
+ }
+ /* It's not inside the buffer. Start over from scratch. */
+ // Assume large chunk size for first access
+ int32_t chunkSize = kTestAccessLargeChunkSize;
+ if (ut->chunkContents != nullptr && ut->chunkLength != 0) {
+ // Subsequent access, set chunk size depending on gap (smaller chunk for large gap => random access)
+ int64_t gap = forward ? (index-ut->chunkNativeLimit) : (ut->chunkNativeStart-index);
+ if (gap < 0) {
+ gap = -gap;
+ }
+ chunkSize = (gap > kTextAccessGapSize)? kTestAccessSmallChunkSize: kTestAccessLargeChunkSize;
+ }
+ int64_t u16Offset = offsetMap[index]; // guaranteed to be on code point boundary
+ int64_t u16ChunkTryStart = (u16Offset/chunkSize) * chunkSize;
+ int64_t u16ChunkTryEnd = u16ChunkTryStart + chunkSize;
+ if (!forward && u16ChunkTryStart==u16Offset && u16ChunkTryStart>0) {
+ u16ChunkTryEnd = u16ChunkTryStart;
+ u16ChunkTryStart -= chunkSize;
+ }
+ int64_t nativeIndexEnd = length;
+ while (u16ChunkTryEnd < offsetMap[nativeIndexEnd]) {
+ nativeIndexEnd--;
+ }
+ int64_t nativeIndexStart = nativeIndexEnd;
+ while (u16ChunkTryStart < offsetMap[nativeIndexStart]) {
+ nativeIndexStart--;
+ }
+ if (forward && nativeIndexEnd < length && u16Offset >= offsetMap[nativeIndexEnd]) {
+ // oops we need to be in the following chunk
+ nativeIndexStart = nativeIndexEnd;
+ u16ChunkTryEnd = ((offsetMap[nativeIndexStart + 1] + chunkSize)/chunkSize) * chunkSize;
+ nativeIndexEnd = length;
+ while (u16ChunkTryEnd < offsetMap[nativeIndexEnd]) {
+ nativeIndexEnd--;
+ }
+ }
+ ut->chunkNativeStart = nativeIndexStart;
+ ut->chunkNativeLimit = nativeIndexEnd;
+ ut->chunkLength = offsetMap[nativeIndexEnd] - offsetMap[nativeIndexStart];
+ ut->chunkOffset = u16Offset - offsetMap[nativeIndexStart];
+ ut->chunkContents = u16 + offsetMap[nativeIndexStart];
+ ut->nativeIndexingLimit = 0 ;
+ return true;
+}
+
+static const struct UTextFuncs u32Funcs =
+{
+ sizeof(UTextFuncs),
+ 0, 0, 0, // Reserved alignment padding
+ nullptr, // Clone
+ u32NativeLength,
+ u32Access,
+ nullptr, // Extract
+ nullptr, // Replace
+ nullptr, // Copy
+ u32MapOffsetToNative,
+ u32MapNativeIndexToUTF16,
+ u32Close,
+ nullptr, // spare 1
+ nullptr, // spare 2
+ nullptr, // spare 3
+};
+
+// A hack, this takes a pointer to both the UTF32 and UTF16 versions of the text
+static UText *
+utext_openUChar32s(UText *ut, const UChar32 *s, int64_t length, const char16_t *q, UErrorCode *status) {
+ if (U_FAILURE(*status)) {
+ return nullptr;
+ }
+ if (s==nullptr || length < 0) {
+ *status = U_ILLEGAL_ARGUMENT_ERROR;
+ return nullptr;
+ }
+ ut = utext_setup(ut, 0, status);
+ if (U_SUCCESS(*status)) {
+ int64_t* offsetMap = (int64_t*)uprv_malloc((length+1)*sizeof(int64_t));
+ if (offsetMap == nullptr) {
+ *status = U_MEMORY_ALLOCATION_ERROR;
+ return nullptr;
+ }
+ ut->pFuncs = &u32Funcs;
+ ut->context = s;
+ ut->providerProperties = 0;
+ ut->a = length;
+ ut->chunkContents = nullptr;
+ ut->chunkNativeStart = 0;
+ ut->chunkNativeLimit = 0;
+ ut->chunkLength = 0;
+ ut->chunkOffset = 0;
+ ut->nativeIndexingLimit = 0;
+ ut->p = offsetMap;
+ ut->q = q;
+ int64_t u16Offset = 0;
+ *offsetMap++ = 0;
+ while (length-- > 0) {
+ u16Offset += (*s++ < 0x10000)? 1: 2;
+ *offsetMap++ = u16Offset;
+ }
+ }
+ return ut;
+}
+
+
+
+void UTextTest::AccessChangesChunkSize() {
+ UErrorCode status = U_ZERO_ERROR;
+ UText ut = UTEXT_INITIALIZER;
+ utext_openUChars(&ut, testAccessText, UPRV_LENGTHOF(testAccessText), &status);
+ if (U_FAILURE(status)) {
+ errln("utext_openUChars failed: %s", u_errorName(status));
+ return;
+ }
+ // now reset many ut fields for this test
+ ut.providerProperties = 0; // especially need to clear UTEXT_PROVIDER_STABLE_CHUNKS
+ ut.chunkNativeLimit = 0;
+ ut.nativeIndexingLimit = 0;
+ ut.chunkNativeStart = 0;
+ ut.chunkOffset = 0;
+ ut.chunkLength = 0;
+ ut.chunkContents = nullptr;
+ UTextFuncs textFuncs = *ut.pFuncs;
+ textFuncs.access = ustrTextAccessModChunks; // custom access that changes chunk size
+ ut.pFuncs = &textFuncs;
+
+ // do test
+ const OffsetAndChar *testEntryPtr = testAccessEntries;
+ int32_t testCount = UPRV_LENGTHOF(testAccessEntries);
+ for (; testCount-- > 0; testEntryPtr++) {
+ utext_setNativeIndex(&ut, testEntryPtr->nativeOffset);
+ int64_t beforeOffset = utext_getNativeIndex(&ut);
+ UChar32 uchar = utext_current32(&ut);
+ int64_t afterOffset = utext_getNativeIndex(&ut);
+ if (uchar != testEntryPtr->expectChar || afterOffset != beforeOffset) {
+ errln("utext_current32 unexpected behavior for u16, test case %lld: expected char %04X at offset %lld, got %04X at %lld;\n"
+ "chunkNativeStart %lld chunkNativeLimit %lld nativeIndexingLimit %d chunkLength %d chunkOffset %d",
+ (int64_t)(testEntryPtr-testAccessEntries), testEntryPtr->expectChar, beforeOffset, uchar, afterOffset,
+ ut.chunkNativeStart, ut.chunkNativeLimit, ut.nativeIndexingLimit, ut.chunkLength, ut.chunkOffset);
+ }
+ }
+ utext_close(&ut);
+
+ ut = UTEXT_INITIALIZER;
+ utext_openUChar32s(&ut, testAccess32Text, UPRV_LENGTHOF(testAccess32Text), testAccessText, &status);
+ if (U_FAILURE(status)) {
+ errln("utext_openUChar32s failed: %s", u_errorName(status));
+ return;
+ }
+ // do test
+ testEntryPtr = testAccess32Entries;
+ testCount = UPRV_LENGTHOF(testAccess32Entries);
+ for (; testCount-- > 0; testEntryPtr++) {
+ utext_setNativeIndex(&ut, testEntryPtr->nativeOffset);
+ int64_t beforeOffset = utext_getNativeIndex(&ut);
+ UChar32 uchar = utext_current32(&ut);
+ int64_t afterOffset = utext_getNativeIndex(&ut);
+ if (uchar != testEntryPtr->expectChar || afterOffset != beforeOffset) {
+ errln("utext_current32 unexpected behavior for u32, test case %lld: expected char %04X at offset %lld, got %04X at %lld;\n"
+ "chunkNativeStart %lld chunkNativeLimit %lld nativeIndexingLimit %d chunkLength %d chunkOffset %d",
+ (int64_t)(testEntryPtr-testAccess32Entries), testEntryPtr->expectChar, beforeOffset, uchar, afterOffset,
+ ut.chunkNativeStart, ut.chunkNativeLimit, ut.nativeIndexingLimit, ut.chunkLength, ut.chunkOffset);
+ }
+ }
+ utext_close(&ut);
+}
+
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/utxttest.h b/Build/source/libs/icu/icu-src/source/test/intltest/utxttest.h
index 710cd6fab11..88bafc3f715 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/utxttest.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/utxttest.h
@@ -29,7 +29,7 @@ public:
UTextTest();
virtual ~UTextTest();
- void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par=NULL) override;
+ void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par=nullptr) override;
void TextTest();
void ErrorTest();
void FreezeTest();
@@ -39,6 +39,7 @@ public:
void Ticket10983();
void Ticket12130();
void Ticket13344();
+ void AccessChangesChunkSize();
private:
struct m { // Map between native indices & code points.
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/uvectest.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/uvectest.cpp
index 058da1808eb..abefbf538f5 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/uvectest.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/uvectest.cpp
@@ -155,12 +155,12 @@ void UVectorTest::UStack_API() {
delete a;
status = U_ZERO_ERROR;
- a = new UStack(NULL, NULL, 2000, status);
+ a = new UStack(nullptr, nullptr, 2000, status);
TEST_CHECK_STATUS(status);
delete a;
status = U_ZERO_ERROR;
- a = new UStack(NULL, UVectorTest_compareCstrings, status);
+ a = new UStack(nullptr, UVectorTest_compareCstrings, status);
TEST_ASSERT(a->empty());
a->push((void*)"abc", status);
TEST_ASSERT(!a->empty());
@@ -190,12 +190,12 @@ void UVectorTest::Hashtable_API() {
UErrorCode status = U_ZERO_ERROR;
Hashtable *a = new Hashtable(status);
TEST_ASSERT((a->puti("a", 1, status) == 0));
- TEST_ASSERT((a->find("a") != NULL));
- TEST_ASSERT((a->find("b") == NULL));
+ TEST_ASSERT((a->find("a") != nullptr));
+ TEST_ASSERT((a->find("b") == nullptr));
TEST_ASSERT((a->puti("b", 2, status) == 0));
- TEST_ASSERT((a->find("b") != NULL));
+ TEST_ASSERT((a->find("b") != nullptr));
TEST_ASSERT((a->removei("a") == 1));
- TEST_ASSERT((a->find("a") == NULL));
+ TEST_ASSERT((a->find("a") == nullptr));
/* verify that setValueComparator works */
Hashtable b(status);
@@ -210,9 +210,9 @@ void UVectorTest::Hashtable_API() {
/* verify that setKeyComparator works */
TEST_ASSERT((a->puti("a", 1, status) == 0));
- TEST_ASSERT((a->find("a") != NULL));
+ TEST_ASSERT((a->find("a") != nullptr));
a->setKeyComparator(neverTRUE);
- TEST_ASSERT((a->find("a") == NULL));
+ TEST_ASSERT((a->find("a") == nullptr));
delete a;
}
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/uvectest.h b/Build/source/libs/icu/icu-src/source/test/intltest/uvectest.h
index 9ca81358d2a..80c7ec61cb8 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/uvectest.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/uvectest.h
@@ -24,7 +24,7 @@ public:
UVectorTest();
virtual ~UVectorTest();
- virtual void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ virtual void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
// The following are test functions that are visible from the intltest test framework.
void UVector_API();
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/v32test.h b/Build/source/libs/icu/icu-src/source/test/intltest/v32test.h
index 44226fa8cf4..6de44f63ccb 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/v32test.h
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/v32test.h
@@ -24,7 +24,7 @@ public:
UVector32Test();
virtual ~UVector32Test();
- virtual void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par = NULL ) override;
+ virtual void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par = nullptr ) override;
// The following are test functions that are visible from the intltest test framework.
virtual void UVector32_API();
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/windttst.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/windttst.cpp
index b6ab7fc9f45..295ea0a7988 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/windttst.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/windttst.cpp
@@ -119,8 +119,8 @@ void Win32DateTimeTest::testLocales(DateFormatTest *log)
DWORD value = 0;
int32_t calType = 0;
- // NULL localeID means ICU didn't recognize this locale
- if (lcidRecords[i].localeID == NULL) {
+ // nullptr localeID means ICU didn't recognize this locale
+ if (lcidRecords[i].localeID == nullptr) {
continue;
}
@@ -153,8 +153,8 @@ void Win32DateTimeTest::testLocales(DateFormatTest *log)
Locale ulocale(localeID);
int32_t wdLength, wtLength;
- wdLength = GetDateFormatW(lcidRecords[i].lcid, DATE_LONGDATE, &winNow, NULL, wdBuffer, UPRV_LENGTHOF(wdBuffer));
- wtLength = GetTimeFormatW(lcidRecords[i].lcid, 0, &winNow, NULL, wtBuffer, UPRV_LENGTHOF(wtBuffer));
+ wdLength = GetDateFormatW(lcidRecords[i].lcid, DATE_LONGDATE, &winNow, nullptr, wdBuffer, UPRV_LENGTHOF(wdBuffer));
+ wtLength = GetTimeFormatW(lcidRecords[i].lcid, 0, &winNow, nullptr, wtBuffer, UPRV_LENGTHOF(wtBuffer));
if (uprv_strchr(localeID, '@')) {
uprv_strcat(localeID, ";");
@@ -173,33 +173,33 @@ void Win32DateTimeTest::testLocales(DateFormatTest *log)
wdf->format(icuNow, udBuffer);
wtf->format(icuNow, utBuffer);
- if (ubBuffer.indexOf((const UChar *)wdBuffer, wdLength - 1, 0) < 0) {
+ if (ubBuffer.indexOf((const char16_t *)wdBuffer, wdLength - 1, 0) < 0) {
UnicodeString baseName(wlocale.getBaseName());
- UnicodeString expected((const UChar *)wdBuffer);
+ UnicodeString expected((const char16_t *)wdBuffer);
log->errln("DateTime format error for locale " + baseName + ": expected date \"" + expected +
"\" got \"" + ubBuffer + "\"");
}
- if (ubBuffer.indexOf((const UChar *)wtBuffer, wtLength - 1, 0) < 0) {
+ if (ubBuffer.indexOf((const char16_t *)wtBuffer, wtLength - 1, 0) < 0) {
UnicodeString baseName(wlocale.getBaseName());
- UnicodeString expected((const UChar *)wtBuffer);
+ UnicodeString expected((const char16_t *)wtBuffer);
log->errln("DateTime format error for locale " + baseName + ": expected time \"" + expected +
"\" got \"" + ubBuffer + "\"");
}
- if (udBuffer.compare((const UChar *)wdBuffer) != 0) {
+ if (udBuffer.compare((const char16_t *)wdBuffer) != 0) {
UnicodeString baseName(wlocale.getBaseName());
- UnicodeString expected((const UChar *)wdBuffer);
+ UnicodeString expected((const char16_t *)wdBuffer);
log->errln("Date format error for locale " + baseName + ": expected \"" + expected +
"\" got \"" + udBuffer + "\"");
}
- if (utBuffer.compare((const UChar *)wtBuffer) != 0) {
+ if (utBuffer.compare((const char16_t *)wtBuffer) != 0) {
UnicodeString baseName(wlocale.getBaseName());
- UnicodeString expected((const UChar *)wtBuffer);
+ UnicodeString expected((const char16_t *)wtBuffer);
log->errln("Time format error for locale " + baseName + ": expected \"" + expected +
"\" got \"" + utBuffer + "\"");
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/winnmtst.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/winnmtst.cpp
index bf6a86afae3..5524fcfa57c 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/winnmtst.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/winnmtst.cpp
@@ -62,13 +62,13 @@ static UBool initialized = false;
/**
* Return a random int64_t where U_INT64_MIN <= ran <= U_INT64_MAX.
*/
-static uint64_t randomInt64(void)
+static uint64_t randomInt64()
{
int64_t ran = 0;
int32_t i;
if (!initialized) {
- srand((unsigned)time(NULL));
+ srand((unsigned)time(nullptr));
initialized = true;
}
@@ -83,12 +83,12 @@ static uint64_t randomInt64(void)
/**
* Return a random double where U_DOUBLE_MIN <= ran <= U_DOUBLE_MAX.
*/
-static double randomDouble(void)
+static double randomDouble()
{
double ran = 0;
if (!initialized) {
- srand((unsigned)time(NULL));
+ srand((unsigned)time(nullptr));
initialized = true;
}
#if 0
@@ -116,13 +116,13 @@ static double randomDouble(void)
/**
* Return a random int32_t where U_INT32_MIN <= ran <= U_INT32_MAX.
*/
-static uint32_t randomInt32(void)
+static uint32_t randomInt32()
{
int32_t ran = 0;
int32_t i;
if (!initialized) {
- srand((unsigned)time(NULL));
+ srand((unsigned)time(nullptr));
initialized = true;
}
@@ -143,7 +143,7 @@ static UnicodeString &getWindowsFormat(int32_t lcid, UBool currency, UnicodeStri
nBuffer[0] = 0x0000;
- /* Due to the arguments causing a result to be <= 23 characters (+2 for NULL and minus),
+ /* Due to the arguments causing a result to be <= 23 characters (+2 for nullptr and minus),
we don't need to reallocate the buffer. */
va_start(args, fmt);
result = _vsnwprintf(nBuffer, STACK_BUFFER_SIZE, fmt, args);
@@ -159,7 +159,7 @@ static UnicodeString &getWindowsFormat(int32_t lcid, UBool currency, UnicodeStri
newLength = _vscwprintf(fmt, args);
va_end(args);
- nBuffer = NEW_ARRAY(UChar, newLength + 1);
+ nBuffer = NEW_ARRAY(char16_t, newLength + 1);
va_start(args, fmt);
result = _vsnwprintf(nBuffer, newLength + 1, fmt, args);
@@ -189,36 +189,36 @@ static UnicodeString &getWindowsFormat(int32_t lcid, UBool currency, UnicodeStri
buffer[0] = 0x0000;
if (currency) {
- result = GetCurrencyFormatW(lcid, 0, nBuffer, NULL, buffer, STACK_BUFFER_SIZE);
+ result = GetCurrencyFormatW(lcid, 0, nBuffer, nullptr, buffer, STACK_BUFFER_SIZE);
if (result == 0) {
DWORD lastError = GetLastError();
if (lastError == ERROR_INSUFFICIENT_BUFFER) {
- int newLength = GetCurrencyFormatW(lcid, 0, nBuffer, NULL, NULL, 0);
+ int newLength = GetCurrencyFormatW(lcid, 0, nBuffer, nullptr, nullptr, 0);
buffer = NEW_ARRAY(wchar_t, newLength);
buffer[0] = 0x0000;
- GetCurrencyFormatW(lcid, 0, nBuffer, NULL, buffer, newLength);
+ GetCurrencyFormatW(lcid, 0, nBuffer, nullptr, buffer, newLength);
}
}
} else {
- result = GetNumberFormatW(lcid, 0, nBuffer, NULL, buffer, STACK_BUFFER_SIZE);
+ result = GetNumberFormatW(lcid, 0, nBuffer, nullptr, buffer, STACK_BUFFER_SIZE);
if (result == 0) {
DWORD lastError = GetLastError();
if (lastError == ERROR_INSUFFICIENT_BUFFER) {
- int newLength = GetNumberFormatW(lcid, 0, nBuffer, NULL, NULL, 0);
+ int newLength = GetNumberFormatW(lcid, 0, nBuffer, nullptr, nullptr, 0);
buffer = NEW_ARRAY(wchar_t, newLength);
buffer[0] = 0x0000;
- GetNumberFormatW(lcid, 0, nBuffer, NULL, buffer, newLength);
+ GetNumberFormatW(lcid, 0, nBuffer, nullptr, buffer, newLength);
}
}
}
- appendTo.append((const UChar *)buffer, (int32_t) wcslen(buffer));
+ appendTo.append((const char16_t *)buffer, (int32_t) wcslen(buffer));
if (buffer != stackBuffer) {
DELETE_ARRAY(buffer);
@@ -281,8 +281,8 @@ void Win32NumberTest::testLocales(NumberFormatTest *log)
UErrorCode status = U_ZERO_ERROR;
char localeID[128];
- // NULL localeID means ICU didn't recognize the lcid
- if (lcidRecords[i].localeID == NULL) {
+ // nullptr localeID means ICU didn't recognize the lcid
+ if (lcidRecords[i].localeID == nullptr) {
continue;
}
@@ -319,7 +319,7 @@ void Win32NumberTest::testLocales(NumberFormatTest *log)
testLocale(lcidRecords[i].localeID, lcidRecords[i].lcid, wcf, true, log);
#if 0
- char *old_locale = strdup(setlocale(LC_ALL, NULL));
+ char *old_locale = strdup(setlocale(LC_ALL, nullptr));
setlocale(LC_ALL, "German");
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/winutil.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/winutil.cpp
index c3e9135b308..41a7b9006d6 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/winutil.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/winutil.cpp
@@ -32,7 +32,7 @@
# include <stdio.h>
# include <string.h>
-static Win32Utilities::LCIDRecord *lcidRecords = NULL;
+static Win32Utilities::LCIDRecord *lcidRecords = nullptr;
static int32_t lcidCount = 0;
static int32_t lcidMax = 0;
@@ -63,7 +63,7 @@ BOOL CALLBACK EnumLocalesProc(LPSTR lpLocaleString)
memcpy(lcidRecords[lcidCount].localeID, localeID, localeIDLen);
lcidRecords[lcidCount].localeID[localeIDLen] = 0;
} else {
- lcidRecords[lcidCount].localeID = NULL;
+ lcidRecords[lcidCount].localeID = nullptr;
}
lcidCount += 1;
@@ -82,7 +82,7 @@ Win32Utilities::LCIDRecord *Win32Utilities::getLocales(int32_t &localeCount)
result = lcidRecords;
lcidCount = lcidMax = 0;
- lcidRecords = NULL;
+ lcidRecords = nullptr;
return result;
}
diff --git a/Build/source/libs/icu/icu-src/source/test/iotest/Makefile.in b/Build/source/libs/icu/icu-src/source/test/iotest/Makefile.in
index 9d2b94c17e4..16c510fc71b 100644
--- a/Build/source/libs/icu/icu-src/source/test/iotest/Makefile.in
+++ b/Build/source/libs/icu/icu-src/source/test/iotest/Makefile.in
@@ -36,7 +36,11 @@ BUILDDIR := $(BUILDDIR:TEST\\IOTEST/../../=)
CPPFLAGS += -I$(srcdir) -I$(top_srcdir)/common -I$(top_srcdir)/i18n -I$(top_srcdir)/tools/ctestfw -I$(top_srcdir)/io
CPPFLAGS += -DUNISTR_FROM_CHAR_EXPLICIT= -DUNISTR_FROM_STRING_EXPLICIT=
+ifdef QNX_TARGET
+DEFS += -D'U_TOPSRCDIR="/var/icu_tests"' -D'U_TOPBUILDDIR="/var/icu_tests/"'
+else
DEFS += -D'U_TOPSRCDIR="$(top_srcdir)/"' -D'U_TOPBUILDDIR="$(BUILDDIR)"'
+endif
LIBS = $(LIBCTESTFW) $(LIBICUTOOLUTIL) $(LIBICUIO) $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
OBJECTS = iotest.o stream.o strtst.o filetst.o trnstst.o
diff --git a/Build/source/libs/icu/icu-src/source/test/iotest/iotest.cpp b/Build/source/libs/icu/icu-src/source/test/iotest/iotest.cpp
index 5ee56fc9ada..1495dd0039d 100644
--- a/Build/source/libs/icu/icu-src/source/test/iotest/iotest.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/iotest/iotest.cpp
@@ -39,34 +39,34 @@ public:
static void cleanUp() {
if (fgTestDataPath) {
free(fgTestDataPath);
- fgTestDataPath = NULL;
+ fgTestDataPath = nullptr;
}
}
virtual void errln( const UnicodeString &message ) override {
char buffer[4000];
message.extract(0, message.length(), buffer, sizeof(buffer));
- buffer[3999] = 0; /* NULL terminate */
+ buffer[3999] = 0; /* NUL terminate */
log_err(buffer);
}
virtual void logln( const UnicodeString &message ) override {
char buffer[4000];
message.extract(0, message.length(), buffer, sizeof(buffer));
- buffer[3999] = 0; /* NULL terminate */
+ buffer[3999] = 0; /* NUL terminate */
log_info(buffer);
}
virtual void dataerrln( const UnicodeString &message ) override {
char buffer[4000];
message.extract(0, message.length(), buffer, sizeof(buffer));
- buffer[3999] = 0; /* NULL terminate */
+ buffer[3999] = 0; /* NUL terminate */
log_data_err(buffer);
}
- static const char * pathToDataDirectory(void)
+ static const char * pathToDataDirectory()
{
- if(fgDataDir != NULL) {
+ if(fgDataDir != nullptr) {
return fgDataDir;
}
@@ -98,12 +98,12 @@ public:
/* Only Windows should end up here, so looking for '\' is safe. */
for (i=1; i<=3; i++) {
pBackSlash = strrchr(p, U_FILE_SEP_CHAR);
- if (pBackSlash != NULL) {
+ if (pBackSlash != nullptr) {
*pBackSlash = 0; /* Truncate the string at the '\' */
}
}
- if (pBackSlash != NULL) {
+ if (pBackSlash != nullptr) {
/* We found and truncated three names from the path.
* Now append "source\data" and set the environment
*/
@@ -129,10 +129,10 @@ public:
}
static const char* loadTestData(UErrorCode& err){
- if( fgTestDataPath == NULL){
- const char* directory=NULL;
- UResourceBundle* test =NULL;
- char* tdpath=NULL;
+ if( fgTestDataPath == nullptr){
+ const char* directory=nullptr;
+ UResourceBundle* test =nullptr;
+ char* tdpath=nullptr;
const char* tdrelativepath;
#if defined (U_TOPBUILDDIR)
@@ -171,12 +171,12 @@ public:
}
};
-const char* DataDrivenLogger::fgDataDir = NULL;
-char* DataDrivenLogger::fgTestDataPath = NULL;
+const char* DataDrivenLogger::fgDataDir = nullptr;
+char* DataDrivenLogger::fgTestDataPath = nullptr;
#if !UCONFIG_NO_FORMATTING && !UCONFIG_NO_FILE_IO
static int64_t
-uto64(const UChar *buffer)
+uto64(const char16_t *buffer)
{
uint64_t result = 0;
/* iterate through buffer */
@@ -184,7 +184,7 @@ uto64(const UChar *buffer)
/* read the next digit */
result *= 16u;
if (!u_isxdigit(*buffer)) {
- log_err("\\u%04X is not a valid hex digit for this test\n", (UChar)*buffer);
+ log_err("\\u%04X is not a valid hex digit for this test\n", (char16_t)*buffer);
}
result += *buffer - 0x0030 - (*buffer >= 0x0041 ? (*buffer >= 0x0061 ? 39 : 7) : 0);
buffer++;
@@ -194,7 +194,7 @@ uto64(const UChar *buffer)
#endif
U_CDECL_BEGIN
-static void U_CALLCONV DataDrivenPrintf(void)
+static void U_CALLCONV DataDrivenPrintf()
{
#if !UCONFIG_NO_FORMATTING && !UCONFIG_NO_FILE_IO
UErrorCode errorCode;
@@ -202,14 +202,14 @@ static void U_CALLCONV DataDrivenPrintf(void)
TestData *testData;
const DataMap *testCase;
DataDrivenLogger logger;
- UChar uBuffer[512];
+ char16_t uBuffer[512];
char cBuffer[512];
char cFormat[sizeof(cBuffer)];
char cExpected[sizeof(cBuffer)];
UnicodeString tempStr;
- UChar format[512];
- UChar expectedResult[512];
- UChar argument[512];
+ char16_t format[512];
+ char16_t expectedResult[512];
+ char16_t argument[512];
int32_t i;
int8_t i8;
int16_t i16;
@@ -287,7 +287,7 @@ static void U_CALLCONV DataDrivenPrintf(void)
uBufferLenReturned = u_sprintf_u(uBuffer, format, cBuffer);
uFileBufferLenReturned = u_fprintf_u(testFile.getAlias(), format, cBuffer);
break;
- case 0x53: // 'S' UChar *
+ case 0x53: // 'S' char16_t *
uBufferLenReturned = u_sprintf_u(uBuffer, format, argument);
uFileBufferLenReturned = u_fprintf_u(testFile.getAlias(), format, argument);
break;
@@ -360,7 +360,7 @@ static void U_CALLCONV DataDrivenPrintf(void)
U_CDECL_END
U_CDECL_BEGIN
-static void U_CALLCONV ScanfMultipleIntegers(void)
+static void U_CALLCONV ScanfMultipleIntegers()
{
#if !UCONFIG_NO_FORMATTING && !UCONFIG_NO_FILE_IO
UnicodeString input = UNICODE_STRING("[1.2.3]", 7);
@@ -397,7 +397,7 @@ static void U_CALLCONV ScanfMultipleIntegers(void)
U_CDECL_END
U_CDECL_BEGIN
-static void U_CALLCONV DataDrivenScanf(void)
+static void U_CALLCONV DataDrivenScanf()
{
#if !UCONFIG_NO_FORMATTING && !UCONFIG_NO_FILE_IO
UErrorCode errorCode;
@@ -405,13 +405,13 @@ static void U_CALLCONV DataDrivenScanf(void)
TestData *testData;
const DataMap *testCase;
DataDrivenLogger logger;
- UChar uBuffer[512];
+ char16_t uBuffer[512];
char cBuffer[512];
char cExpected[sizeof(cBuffer)];
UnicodeString tempStr;
- UChar format[512];
- UChar expectedResult[512];
- UChar argument[512];
+ char16_t format[512];
+ char16_t expectedResult[512];
+ char16_t argument[512];
int32_t i;
int8_t i8, expected8;
int16_t i16, expected16;
@@ -520,13 +520,13 @@ static void U_CALLCONV DataDrivenScanf(void)
log_err("error in scanf char * string. Got \"%s\" Expected \"%s\". Test case = %d\n", cBuffer, cExpected, i);
}
break;
- case 0x53: // 'S' UChar *
+ case 0x53: // 'S' char16_t *
uBufferLenReturned = u_sscanf_u(argument, format, uBuffer);
//uFileBufferLenReturned = u_fscanf_u(testFile, format, argument);
if (u_strcmp(uBuffer, expectedResult) != 0) {
u_austrcpy(cExpected, format);
u_austrcpy(cBuffer, uBuffer);
- log_err("error in scanf UChar * string %s Got: \"%s\". Test case = %d\n", cExpected, cBuffer, i);
+ log_err("error in scanf char16_t * string %s Got: \"%s\". Test case = %d\n", cExpected, cBuffer, i);
}
break;
default:
@@ -599,7 +599,7 @@ static void U_CALLCONV DataDrivenScanf(void)
U_CDECL_END
U_CDECL_BEGIN
-static void U_CALLCONV DataDrivenPrintfPrecision(void)
+static void U_CALLCONV DataDrivenPrintfPrecision()
{
#if !UCONFIG_NO_FORMATTING && !UCONFIG_NO_FILE_IO
UErrorCode errorCode;
@@ -607,14 +607,14 @@ static void U_CALLCONV DataDrivenPrintfPrecision(void)
TestData *testData;
const DataMap *testCase;
DataDrivenLogger logger;
- UChar uBuffer[512];
+ char16_t uBuffer[512];
char cBuffer[512];
char cFormat[sizeof(cBuffer)];
char cExpected[sizeof(cBuffer)];
UnicodeString tempStr;
- UChar format[512];
- UChar expectedResult[512];
- UChar argument[512];
+ char16_t format[512];
+ char16_t expectedResult[512];
+ char16_t argument[512];
int32_t precision;
int32_t i;
int8_t i8;
@@ -678,7 +678,7 @@ static void U_CALLCONV DataDrivenPrintfPrecision(void)
u_austrncpy(cBuffer, uBuffer, sizeof(cBuffer));
uBufferLenReturned = u_sprintf_u(uBuffer, format, precision, cBuffer);
break;
- case 0x53: // 'S' UChar *
+ case 0x53: // 'S' char16_t *
uBufferLenReturned = u_sprintf_u(uBuffer, format, precision, argument);
break;
default:
@@ -742,7 +742,7 @@ static void addAllTests(TestNode** root) {
/* returns the path to icu/source/data/out */
static const char *ctest_dataOutDir()
{
- static const char *dataOutDir = NULL;
+ static const char *dataOutDir = nullptr;
if(dataOutDir) {
return dataOutDir;
@@ -776,12 +776,12 @@ static const char *ctest_dataOutDir()
/* Only Windows should end up here, so looking for '\' is safe. */
for (i=1; i<=3; i++) {
pBackSlash = strrchr(p, U_FILE_SEP_CHAR);
- if (pBackSlash != NULL) {
+ if (pBackSlash != nullptr) {
*pBackSlash = 0; /* Truncate the string at the '\' */
}
}
- if (pBackSlash != NULL) {
+ if (pBackSlash != nullptr) {
/* We found and truncated three names from the path.
* Now append "source\data" and set the environment
*/
@@ -819,7 +819,7 @@ static void ctest_setICU_DATA() {
/* No location for the data dir was identifiable.
* Add other fallbacks for the test data location here if the need arises
*/
- if (getenv("ICU_DATA") == NULL) {
+ if (getenv("ICU_DATA") == nullptr) {
/* If ICU_DATA isn't set, set it to the usual location */
u_setDataDirectory(ctest_dataOutDir());
}
@@ -847,7 +847,7 @@ U_CDECL_END
int main(int argc, char* argv[])
{
int32_t nerrors = 0;
- TestNode *root = NULL;
+ TestNode *root = nullptr;
UErrorCode errorCode = U_ZERO_ERROR;
UDate startTime, endTime;
int32_t diffTime;
diff --git a/Build/source/libs/icu/icu-src/source/test/iotest/stream.cpp b/Build/source/libs/icu/icu-src/source/test/iotest/stream.cpp
index 0ffc6239063..1b6303f1ee3 100644
--- a/Build/source/libs/icu/icu-src/source/test/iotest/stream.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/iotest/stream.cpp
@@ -38,21 +38,21 @@ using namespace std;
U_CDECL_BEGIN
#if U_PLATFORM_USES_ONLY_WIN32_API
-const UChar NEW_LINE[] = {0x0d,0x0a,0};
+const char16_t NEW_LINE[] = {0x0d,0x0a,0};
const char C_NEW_LINE[] = {0x0d,0x0a,0};
#define UTF8_NEW_LINE "\x0d\x0a"
#else
-const UChar NEW_LINE[] = {0x0a,0};
+const char16_t NEW_LINE[] = {0x0a,0};
const char C_NEW_LINE[] = {'\n',0};
#define UTF8_NEW_LINE "\x0a"
#endif
U_CDECL_END
U_CDECL_BEGIN
-static void U_CALLCONV TestStream(void)
+static void U_CALLCONV TestStream()
{
- const UChar thisMu[] = { 0x74, 0x48, 0x69, 0x73, 0x3BC, 0};
- const UChar mu[] = { 0x6D, 0x75, 0};
+ const char16_t thisMu[] = { 0x74, 0x48, 0x69, 0x73, 0x3BC, 0};
+ const char16_t mu[] = { 0x6D, 0x75, 0};
UnicodeString str1 = UNICODE_STRING_SIMPLE("str1");
UnicodeString str2 = UNICODE_STRING_SIMPLE(" <<");
UnicodeString str3 = UNICODE_STRING_SIMPLE("2");
@@ -152,7 +152,7 @@ static void U_CALLCONV TestStream(void)
memset(testLargeStreamBuf, 0, sizeof(testLargeStreamBuf));
ostrstream outLargeStream(testLargeStreamBuf, sizeof(testLargeStreamBuf));
#endif
- UChar large_array[200];
+ char16_t large_array[200];
int32_t large_array_length = UPRV_LENGTHOF(large_array);
for (int32_t i = 0; i < large_array_length; i++) {
large_array[i] = 0x41;
@@ -219,7 +219,7 @@ void
testString(
UnicodeString& str,
const char* testString,
- const UChar* expectedString,
+ const char16_t* expectedString,
int32_t expectedStatus)
{
#ifdef USE_SSTREAM
@@ -248,7 +248,7 @@ testString(
}
-static void U_CALLCONV TestStreamEOF(void)
+static void U_CALLCONV TestStreamEOF()
{
UnicodeString dest;
fstream fs(STANDARD_TEST_FILE, fstream::in | fstream::out | fstream::trunc);
diff --git a/Build/source/libs/icu/icu-src/source/test/letest/FontObject.cpp b/Build/source/libs/icu/icu-src/source/test/letest/FontObject.cpp
index 459a1a33caa..54dabf856dc 100644
--- a/Build/source/libs/icu/icu-src/source/test/letest/FontObject.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/letest/FontObject.cpp
@@ -14,14 +14,14 @@
#include "LESwaps.h"
FontObject::FontObject(char *fileName)
- : directory(NULL), numTables(0), searchRange(0),entrySelector(0),
- cmapTable(NULL), cmSegCount(0), cmSearchRange(0), cmEntrySelector(0),
- cmEndCodes(NULL), cmStartCodes(NULL), cmIdDelta(0), cmIdRangeOffset(0),
- headTable(NULL), hmtxTable(NULL), numGlyphs(0), numOfLongHorMetrics(0), file(NULL)
+ : directory(nullptr), numTables(0), searchRange(0),entrySelector(0),
+ cmapTable(nullptr), cmSegCount(0), cmSearchRange(0), cmEntrySelector(0),
+ cmEndCodes(nullptr), cmStartCodes(nullptr), cmIdDelta(0), cmIdRangeOffset(0),
+ headTable(nullptr), hmtxTable(nullptr), numGlyphs(0), numOfLongHorMetrics(0), file(nullptr)
{
file = fopen(fileName, "rb");
- if (file == NULL) {
+ if (file == nullptr) {
printf("?? Couldn't open %s", fileName);
return;
}
@@ -80,16 +80,16 @@ DirectoryEntry *FontObject::findTable(LETag tag)
return &directory->tableDirectory[table];
}
- return NULL;
+ return nullptr;
}
void *FontObject::readTable(LETag tag, le_uint32 *length)
{
DirectoryEntry *entry = findTable(tag);
- if (entry == NULL) {
+ if (entry == nullptr) {
*length = 0;
- return NULL;
+ return nullptr;
}
*length = SWAPL(entry->length);
@@ -106,13 +106,13 @@ CMAPEncodingSubtable *FontObject::findCMAP(le_uint16 platformID, le_uint16 platf
{
LETag cmapTag = 0x636D6170; // 'cmap'
- if (cmapTable == NULL) {
+ if (cmapTable == nullptr) {
le_uint32 length;
cmapTable = (CMAPTable *) readTable(cmapTag, &length);
}
- if (cmapTable != NULL) {
+ if (cmapTable != nullptr) {
le_uint16 i;
le_uint16 nSubtables = SWAPW(cmapTable->numberSubtables);
@@ -127,7 +127,7 @@ CMAPEncodingSubtable *FontObject::findCMAP(le_uint16 platformID, le_uint16 platf
}
}
- return NULL;
+ return nullptr;
}
void FontObject::initUnicodeCMAP()
@@ -196,7 +196,7 @@ LEGlyphID FontObject::unicodeToGlyph(LEUnicode32 unicode32)
le_uint16 FontObject::getUnitsPerEM()
{
- if (headTable == NULL) {
+ if (headTable == nullptr) {
LETag headTag = 0x68656164; // 'head'
le_uint32 length;
@@ -208,7 +208,7 @@ le_uint16 FontObject::getUnitsPerEM()
le_uint16 FontObject::getGlyphAdvance(LEGlyphID glyph)
{
- if (hmtxTable == NULL) {
+ if (hmtxTable == nullptr) {
LETag maxpTag = 0x6D617870; // 'maxp'
LETag hheaTag = 0x68686561; // 'hhea'
LETag hmtxTag = 0x686D7478; // 'hmtx'
diff --git a/Build/source/libs/icu/icu-src/source/test/letest/FontTableCache.cpp b/Build/source/libs/icu/icu-src/source/test/letest/FontTableCache.cpp
index 03c273f3b87..ddd054a086a 100644
--- a/Build/source/libs/icu/icu-src/source/test/letest/FontTableCache.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/letest/FontTableCache.cpp
@@ -27,14 +27,14 @@ FontTableCache::FontTableCache()
{
fTableCache = LE_NEW_ARRAY(FontTableCacheEntry, fTableCacheSize);
- if (fTableCache == NULL) {
+ if (fTableCache == nullptr) {
fTableCacheSize = 0;
return;
}
for (int i = 0; i < fTableCacheSize; i += 1) {
fTableCache[i].tag = 0;
- fTableCache[i].table = NULL;
+ fTableCache[i].table = nullptr;
fTableCache[i].length = 0;
}
}
@@ -45,7 +45,7 @@ FontTableCache::~FontTableCache()
LE_DELETE_ARRAY(fTableCache[i].table);
fTableCache[i].tag = 0;
- fTableCache[i].table = NULL;
+ fTableCache[i].table = nullptr;
fTableCache[i].length = 0;
}
@@ -84,7 +84,7 @@ void FontTableCache::add(LETag tableTag, const void *table, size_t length)
for (le_int32 i = fTableCacheSize; i < newSize; i += 1) {
fTableCache[i].tag = 0;
- fTableCache[i].table = NULL;
+ fTableCache[i].table = nullptr;
fTableCache[i].length = 0;
}
diff --git a/Build/source/libs/icu/icu-src/source/test/letest/PortableFontInstance.cpp b/Build/source/libs/icu/icu-src/source/test/letest/PortableFontInstance.cpp
index 7743fd68c6c..e5faad7238d 100644
--- a/Build/source/libs/icu/icu-src/source/test/letest/PortableFontInstance.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/letest/PortableFontInstance.cpp
@@ -79,8 +79,8 @@ le_int8 PortableFontInstance::highBit(le_int32 value)
}
PortableFontInstance::PortableFontInstance(const char *fileName, float pointSize, LEErrorCode &status)
- : fFile(NULL), fPointSize(pointSize), fUnitsPerEM(0), fFontChecksum(0), fAscent(0), fDescent(0), fLeading(0),
- fDirectory(NULL), fNAMETable(NULL), fNameCount(0), fNameStringOffset(0), fCMAPMapper(NULL), fHMTXTable(NULL), fNumGlyphs(0), fNumLongHorMetrics(0)
+ : fFile(nullptr), fPointSize(pointSize), fUnitsPerEM(0), fFontChecksum(0), fAscent(0), fDescent(0), fLeading(0),
+ fDirectory(nullptr), fNAMETable(nullptr), fNameCount(0), fNameStringOffset(0), fCMAPMapper(nullptr), fHMTXTable(nullptr), fNumGlyphs(0), fNumLongHorMetrics(0)
{
if (LE_FAILURE(status)) {
return;
@@ -90,7 +90,7 @@ PortableFontInstance::PortableFontInstance(const char *fileName, float pointSize
fFile = fopen(fileName, "rb");
//printf("Open Font: %s\n", fileName);
- if (fFile == NULL) {
+ if (fFile == nullptr) {
printf("%s:%d: %s: FNF\n", __FILE__, __LINE__, fileName);
status = LE_FONT_FILE_NOT_FOUND_ERROR;
return;
@@ -105,14 +105,14 @@ PortableFontInstance::PortableFontInstance(const char *fileName, float pointSize
le_int32 dirSize = sizeof tempDir + ((SWAPW(tempDir.numTables) - ANY_NUMBER) * sizeof(DirectoryEntry));
const LETag headTag = LE_HEAD_TABLE_TAG;
const LETag hheaTag = LE_HHEA_TABLE_TAG;
- const HEADTable *headTable = NULL;
- const HHEATable *hheaTable = NULL;
-// const NAMETable *nameTable = NULL;
+ const HEADTable *headTable = nullptr;
+ const HHEATable *hheaTable = nullptr;
+// const NAMETable *nameTable = nullptr;
le_uint16 numTables = 0;
fDirectory = (const SFNTDirectory *) LE_NEW_ARRAY(char, dirSize);
- if (fDirectory == NULL) {
+ if (fDirectory == nullptr) {
printf("%s:%d: %s: malloc err\n", __FILE__, __LINE__, fileName);
status = LE_MEMORY_ALLOCATION_ERROR;
goto error_exit;
@@ -132,7 +132,7 @@ PortableFontInstance::PortableFontInstance(const char *fileName, float pointSize
// read unitsPerEm from 'head' table
headTable = (const HEADTable *) readFontTable(headTag);
- if (headTable == NULL) {
+ if (headTable == nullptr) {
status = LE_MISSING_FONT_TABLE_ERROR;
printf("%s:%d: %s: missing head table\n", __FILE__, __LINE__, fileName);
goto error_exit;
@@ -144,14 +144,14 @@ PortableFontInstance::PortableFontInstance(const char *fileName, float pointSize
//nameTable = (NAMETable *) readFontTable(nameTag);
- //if (nameTable == NULL) {
+ //if (nameTable == nullptr) {
// status = LE_MISSING_FONT_TABLE_ERROR;
// goto error_exit;
//}
//fFontVersionString = findName(nameTable, NAME_VERSION_STRING, PLATFORM_MACINTOSH, MACINTOSH_ROMAN, MACINTOSH_ENGLISH);
- //if (fFontVersionString == NULL) {
+ //if (fFontVersionString == nullptr) {
// status = LE_MISSING_FONT_TABLE_ERROR;
// goto error_exit;
//}
@@ -160,7 +160,7 @@ PortableFontInstance::PortableFontInstance(const char *fileName, float pointSize
hheaTable = (HHEATable *) readFontTable(hheaTag);
- if (hheaTable == NULL) {
+ if (hheaTable == nullptr) {
printf("%s:%d: %s: missing hhea table\n", __FILE__, __LINE__, fileName);
status = LE_MISSING_FONT_TABLE_ERROR;
goto error_exit;
@@ -176,7 +176,7 @@ PortableFontInstance::PortableFontInstance(const char *fileName, float pointSize
fCMAPMapper = findUnicodeMapper();
- if (fCMAPMapper == NULL) {
+ if (fCMAPMapper == nullptr) {
printf("%s:%d: %s: can't load cmap\n", __FILE__, __LINE__, fileName);
status = LE_MISSING_FONT_TABLE_ERROR;
goto error_exit;
@@ -186,13 +186,13 @@ PortableFontInstance::PortableFontInstance(const char *fileName, float pointSize
error_exit:
fclose(fFile);
- fFile = NULL;
+ fFile = nullptr;
return;
}
PortableFontInstance::~PortableFontInstance()
{
- if (fFile != NULL) {
+ if (fFile != nullptr) {
fclose(fFile);
freeFontTable(fHMTXTable);
@@ -206,7 +206,7 @@ PortableFontInstance::~PortableFontInstance()
const DirectoryEntry *PortableFontInstance::findTable(LETag tag) const
{
- if (fDirectory != NULL) {
+ if (fDirectory != nullptr) {
le_uint16 table = 0;
le_uint16 probe = fDirPower;
@@ -227,23 +227,23 @@ const DirectoryEntry *PortableFontInstance::findTable(LETag tag) const
}
}
- return NULL;
+ return nullptr;
}
const void *PortableFontInstance::readTable(LETag tag, le_uint32 *length) const
{
const DirectoryEntry *entry = findTable(tag);
- if (entry == NULL) {
+ if (entry == nullptr) {
*length = 0;
- return NULL;
+ return nullptr;
}
*length = SWAPL(entry->length);
void *table = LE_NEW_ARRAY(char, *length);
- if (table != NULL) {
+ if (table != nullptr) {
fseek(fFile, SWAPL(entry->offset), SEEK_SET);
size_t numRead = fread(table, sizeof(char), *length, fFile);
(void)numRead;
@@ -273,8 +273,8 @@ CMAPMapper *PortableFontInstance::findUnicodeMapper()
LETag cmapTag = LE_CMAP_TABLE_TAG;
const CMAPTable *cmap = (CMAPTable *) readFontTable(cmapTag);
- if (cmap == NULL) {
- return NULL;
+ if (cmap == nullptr) {
+ return nullptr;
}
return CMAPMapper::createUnicodeMapper(cmap);
@@ -282,13 +282,13 @@ CMAPMapper *PortableFontInstance::findUnicodeMapper()
const char *PortableFontInstance::getNameString(le_uint16 nameID, le_uint16 platformID, le_uint16 encodingID, le_uint16 languageID) const
{
- if (fNAMETable == NULL) {
+ if (fNAMETable == nullptr) {
LETag nameTag = LE_NAME_TABLE_TAG;
PortableFontInstance *realThis = (PortableFontInstance *) this;
realThis->fNAMETable = (const NAMETable *) readFontTable(nameTag);
- if (realThis->fNAMETable != NULL) {
+ if (realThis->fNAMETable != nullptr) {
realThis->fNameCount = SWAPW(realThis->fNAMETable->count);
realThis->fNameStringOffset = SWAPW(realThis->fNAMETable->stringOffset);
}
@@ -310,18 +310,18 @@ const char *PortableFontInstance::getNameString(le_uint16 nameID, le_uint16 plat
}
}
- return NULL;
+ return nullptr;
}
const LEUnicode16 *PortableFontInstance::getUnicodeNameString(le_uint16 nameID, le_uint16 platformID, le_uint16 encodingID, le_uint16 languageID) const
{
- if (fNAMETable == NULL) {
+ if (fNAMETable == nullptr) {
LETag nameTag = LE_NAME_TABLE_TAG;
PortableFontInstance *realThis = (PortableFontInstance *) this;
realThis->fNAMETable = (const NAMETable *) readFontTable(nameTag);
- if (realThis->fNAMETable != NULL) {
+ if (realThis->fNAMETable != nullptr) {
realThis->fNameCount = SWAPW(realThis->fNAMETable->count);
realThis->fNameStringOffset = SWAPW(realThis->fNAMETable->stringOffset);
}
@@ -346,7 +346,7 @@ const LEUnicode16 *PortableFontInstance::getUnicodeNameString(le_uint16 nameID,
}
}
- return NULL;
+ return nullptr;
}
void PortableFontInstance::deleteNameString(const char *name) const
@@ -363,13 +363,13 @@ void PortableFontInstance::getGlyphAdvance(LEGlyphID glyph, LEPoint &advance) co
{
TTGlyphID ttGlyph = (TTGlyphID) LE_GET_GLYPH(glyph);
- if (fHMTXTable == NULL) {
+ if (fHMTXTable == nullptr) {
LETag maxpTag = LE_MAXP_TABLE_TAG;
LETag hmtxTag = LE_HMTX_TABLE_TAG;
const MAXPTable *maxpTable = (MAXPTable *) readFontTable(maxpTag);
PortableFontInstance *realThis = (PortableFontInstance *) this;
- if (maxpTable != NULL) {
+ if (maxpTable != nullptr) {
realThis->fNumGlyphs = SWAPW(maxpTable->numGlyphs);
freeFontTable(maxpTable);
}
@@ -379,7 +379,7 @@ void PortableFontInstance::getGlyphAdvance(LEGlyphID glyph, LEPoint &advance) co
le_uint16 index = ttGlyph;
- if (ttGlyph >= fNumGlyphs || fHMTXTable == NULL) {
+ if (ttGlyph >= fNumGlyphs || fHMTXTable == nullptr) {
advance.fX = advance.fY = 0;
return;
}
diff --git a/Build/source/libs/icu/icu-src/source/test/letest/SimpleFontInstance.cpp b/Build/source/libs/icu/icu-src/source/test/letest/SimpleFontInstance.cpp
index e387b083dc4..e707e5809d8 100644
--- a/Build/source/libs/icu/icu-src/source/test/letest/SimpleFontInstance.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/letest/SimpleFontInstance.cpp
@@ -55,7 +55,7 @@ const void *SimpleFontInstance::getFontTable(LETag tableTag, size_t &length) con
return CanonShaping::glyphDefinitionTable;
}
#endif
- return NULL;
+ return nullptr;
}
void SimpleFontInstance::getGlyphAdvance(LEGlyphID glyph, LEPoint &advance) const
diff --git a/Build/source/libs/icu/icu-src/source/test/letest/cmaps.cpp b/Build/source/libs/icu/icu-src/source/test/letest/cmaps.cpp
index cb385042f8f..3c7ecfabd57 100644
--- a/Build/source/libs/icu/icu-src/source/test/letest/cmaps.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/letest/cmaps.cpp
@@ -57,7 +57,7 @@ CMAPMapper *CMAPMapper::createUnicodeMapper(const CMAPTable *cmap)
{
le_uint16 i;
le_uint16 nSubtables = SWAPW(cmap->numberSubtables);
- const CMAPEncodingSubtable *subtable = NULL;
+ const CMAPEncodingSubtable *subtable = nullptr;
le_bool found = false;
le_uint16 foundPlatformID = 0xFFFF;
le_uint16 foundPlatformSpecificID = 0xFFFF;
@@ -128,7 +128,7 @@ CMAPMapper *CMAPMapper::createUnicodeMapper(const CMAPTable *cmap)
(void)foundPlatformSpecificID;
} else {
printf("%s:%d: could not find subtable.\n", __FILE__, __LINE__);
- return NULL;
+ return nullptr;
}
le_uint16 tableFormat = SWAPW(subtable->format);
@@ -150,7 +150,7 @@ CMAPMapper *CMAPMapper::createUnicodeMapper(const CMAPTable *cmap)
}
printf("%s:%d: Unknown format %x.\n", __FILE__, __LINE__, (SWAPW(subtable->format)));
- return NULL;
+ return nullptr;
}
CMAPFormat4Mapper::CMAPFormat4Mapper(const CMAPTable *cmap, const CMAPFormat4Encoding *header)
diff --git a/Build/source/libs/icu/icu-src/source/test/letest/gendata.cpp b/Build/source/libs/icu/icu-src/source/test/letest/gendata.cpp
index 0f4cf1a5904..bd170aea847 100644
--- a/Build/source/libs/icu/icu-src/source/test/letest/gendata.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/letest/gendata.cpp
@@ -49,14 +49,14 @@ struct TestInput
/* Returns the path to icu/source/test/testdata/ */
const char *getSourceTestData() {
- const char *srcDataDir = NULL;
+ const char *srcDataDir = nullptr;
#ifdef U_TOPSRCDIR
srcDataDir = U_TOPSRCDIR U_FILE_SEP_STRING "test" U_FILE_SEP_STRING "testdata" U_FILE_SEP_STRING;
#else
srcDataDir = ".."U_FILE_SEP_STRING".."U_FILE_SEP_STRING"test"U_FILE_SEP_STRING"testdata"U_FILE_SEP_STRING;
FILE *f = fopen(".."U_FILE_SEP_STRING".."U_FILE_SEP_STRING"test"U_FILE_SEP_STRING"testdata"U_FILE_SEP_STRING"rbbitst.txt", "r");
- if (f != NULL) {
+ if (f != nullptr) {
/* We're in icu/source/test/letest/ */
fclose(f);
} else {
@@ -109,7 +109,7 @@ void dumpLongs(FILE *file, const char *tag, le_int32 *longs, le_int32 count) {
bufp = 0;
}
- bufp += sprintf(&lineBuffer[bufp], "0x%8.8X, ", longs[i]);
+ bufp += snprintf(&lineBuffer[bufp], sizeof(lineBuffer) - bufp, "0x%8.8X, ", longs[i]);
}
if (bufp != 0) {
@@ -132,7 +132,7 @@ void dumpFloats(FILE *file, const char *tag, float *floats, le_int32 count) {
bufp = 0;
}
- bufp += sprintf(&lineBuffer[bufp], "%f, ", floats[i]);
+ bufp += snprintf(&lineBuffer[bufp], sizeof(lineBuffer) - bufp, "%f, ", floats[i]);
}
if (bufp != 0) {
@@ -151,7 +151,7 @@ int main(int argc, char *argv[])
if(argc>2) {
gendataFile = argv[2];
}
- time_t now = time(NULL);
+ time_t now = time(nullptr);
struct tm *local = localtime(&now);
const char *tmFormat = "%m/%d/%Y %I:%M:%S %p %Z";
char tmString[64];
@@ -162,7 +162,7 @@ int main(int argc, char *argv[])
UXMLParser *parser = UXMLParser::createParser(status);
UXMLElement *root = parser->parseFile(gendataFile, status);
- if (root == NULL) {
+ if (root == nullptr) {
printf("Error: Could not open %s\n", gendataFile);
delete parser;
return -1;
@@ -188,14 +188,14 @@ int main(int argc, char *argv[])
const UXMLElement *testCase;
int32_t tc = 0;
- while((testCase = root->nextChildElement(tc)) != NULL) {
+ while((testCase = root->nextChildElement(tc)) != nullptr) {
if (testCase->getTagName().compare(test_case) == 0) {
char *id = getCString(testCase->getAttribute(id_attr));
char *script = getCString(testCase->getAttribute(script_attr));
char *lang = getCString(testCase->getAttribute(lang_attr));
++count;
printf("\n ID %s\n", id);
- LEFontInstance *font = NULL;
+ LEFontInstance *font = nullptr;
const UXMLElement *element;
int32_t ec = 0;
int32_t charCount = 0;
@@ -205,10 +205,10 @@ int main(int argc, char *argv[])
UnicodeString text;
int32_t glyphCount = 0;
LEErrorCode leStatus = LE_NO_ERROR;
- LayoutEngine *engine = NULL;
- LEGlyphID *glyphs = NULL;
- le_int32 *indices = NULL;
- float *positions = NULL;
+ LayoutEngine *engine = nullptr;
+ LEGlyphID *glyphs = nullptr;
+ le_int32 *indices = nullptr;
+ float *positions = nullptr;
uscript_getCode(script, &scriptCode, 1, &status);
if (LE_FAILURE(status)) {
@@ -216,7 +216,7 @@ int main(int argc, char *argv[])
goto free_c_strings;
}
- if (lang != NULL) {
+ if (lang != nullptr) {
languageCode = getLanguageCode(lang);
if (languageCode < 0) {
@@ -229,13 +229,13 @@ int main(int argc, char *argv[])
fprintf(outputFile, " <test-case id=\"%s\" script=\"%s\">\n", id, script);
}
- while((element = testCase->nextChildElement(ec)) != NULL) {
+ while((element = testCase->nextChildElement(ec)) != nullptr) {
UnicodeString tag = element->getTagName();
// TODO: make sure that each element is only used once.
if (tag.compare(test_font) == 0) {
char *fontName = getCString(element->getAttribute(name_attr));
- const char *version = NULL;
+ const char *version = nullptr;
char buf[2048];
PortableFontInstance *pfi = new PortableFontInstance(getPath(buf,fontName), 12, leStatus);
@@ -251,13 +251,13 @@ int main(int argc, char *argv[])
// The standard recommends that the Macintosh Roman/English name string be present, but
// if it's not, try the Microsoft Unicode/English string.
- if (version == NULL) {
+ if (version == nullptr) {
const LEUnicode16 *uversion = pfi->getUnicodeNameString(NAME_VERSION_STRING, PLATFORM_MICROSOFT, MICROSOFT_UNICODE_BMP, MICROSOFT_ENGLISH);
- if (uversion != NULL) {
+ if (uversion != nullptr) {
char uversion_utf8[300];
UErrorCode status2 = U_ZERO_ERROR;
- u_strToUTF8(uversion_utf8, 300, NULL, uversion, -1, &status2);
+ u_strToUTF8(uversion_utf8, 300, nullptr, uversion, -1, &status2);
if(U_FAILURE(status2)) {
uversion_utf8[0]=0;
}
@@ -281,7 +281,7 @@ int main(int argc, char *argv[])
font = pfi;
} else if (tag.compare(test_text) == 0) {
- char *utf8 = NULL;
+ char *utf8 = nullptr;
text = element->getText(true);
charCount = text.length();
@@ -299,7 +299,7 @@ int main(int argc, char *argv[])
}
}
- if (font == NULL) {
+ if (font == nullptr) {
LEErrorCode fontStatus = LE_NO_ERROR;
font = new SimpleFontInstance(12, fontStatus);
diff --git a/Build/source/libs/icu/icu-src/source/test/letest/letest.cpp b/Build/source/libs/icu/icu-src/source/test/letest/letest.cpp
index d8b780ea55a..2bbd9ada66c 100644
--- a/Build/source/libs/icu/icu-src/source/test/letest/letest.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/letest/letest.cpp
@@ -46,21 +46,21 @@ U_NAMESPACE_USE
U_CDECL_BEGIN
-static void U_CALLCONV ScriptTest(void)
+static void U_CALLCONV ScriptTest()
{
if ((int)scriptCodeCount != (int)USCRIPT_CODE_LIMIT) {
log_err("ScriptCodes::scriptCodeCount = %d, but UScriptCode::USCRIPT_CODE_LIMIT = %d\n", scriptCodeCount, USCRIPT_CODE_LIMIT);
}
}
-static void U_CALLCONV ParamTest(void)
+static void U_CALLCONV ParamTest()
{
LEErrorCode status = LE_NO_ERROR;
SimpleFontInstance *font = new SimpleFontInstance(12, status);
LayoutEngine *engine = LayoutEngine::layoutEngineFactory(font, arabScriptCode, -1, status);
- LEGlyphID *glyphs = NULL;
- le_int32 *indices = NULL;
- float *positions = NULL;
+ LEGlyphID *glyphs = nullptr;
+ le_int32 *indices = nullptr;
+ float *positions = nullptr;
le_int32 glyphCount = 0;
glyphCount = engine->getGlyphCount();
@@ -72,10 +72,10 @@ static void U_CALLCONV ParamTest(void)
indices = NEW_ARRAY(le_int32, glyphCount + 10);
positions = NEW_ARRAY(float, glyphCount + 10);
- engine->getGlyphs(NULL, status);
+ engine->getGlyphs(nullptr, status);
if (status != LE_ILLEGAL_ARGUMENT_ERROR) {
- log_err("Calling getGlyphs(NULL, status) did not return LE_ILLEGAL_ARGUMENT_ERROR.\n");
+ log_err("Calling getGlyphs(nullptr, status) did not return LE_ILLEGAL_ARGUMENT_ERROR.\n");
}
status = LE_NO_ERROR;
@@ -86,10 +86,10 @@ static void U_CALLCONV ParamTest(void)
}
status = LE_NO_ERROR;
- engine->getGlyphs(NULL, 0xFF000000L, status);
+ engine->getGlyphs(nullptr, 0xFF000000L, status);
if (status != LE_ILLEGAL_ARGUMENT_ERROR) {
- log_err("Calling getGlyphs(NULL, 0xFF000000L, status) did not return LE_ILLEGAL_ARGUMENT_ERROR.\n");
+ log_err("Calling getGlyphs(nullptr, 0xFF000000L, status) did not return LE_ILLEGAL_ARGUMENT_ERROR.\n");
}
status = LE_NO_ERROR;
@@ -100,10 +100,10 @@ static void U_CALLCONV ParamTest(void)
}
status = LE_NO_ERROR;
- engine->getCharIndices(NULL, status);
+ engine->getCharIndices(nullptr, status);
if (status != LE_ILLEGAL_ARGUMENT_ERROR) {
- log_err("Calling getCharIndices(NULL, status) did not return LE_ILLEGAL_ARGUMENT_ERROR.\n");
+ log_err("Calling getCharIndices(nullptr, status) did not return LE_ILLEGAL_ARGUMENT_ERROR.\n");
}
status = LE_NO_ERROR;
@@ -114,10 +114,10 @@ static void U_CALLCONV ParamTest(void)
}
status = LE_NO_ERROR;
- engine->getCharIndices(NULL, 1024, status);
+ engine->getCharIndices(nullptr, 1024, status);
if (status != LE_ILLEGAL_ARGUMENT_ERROR) {
- log_err("Calling getCharIndices(NULL, 1024, status) did not return LE_ILLEGAL_ARGUMENT_ERROR.\n");
+ log_err("Calling getCharIndices(nullptr, 1024, status) did not return LE_ILLEGAL_ARGUMENT_ERROR.\n");
}
status = LE_NO_ERROR;
@@ -128,10 +128,10 @@ static void U_CALLCONV ParamTest(void)
}
status = LE_NO_ERROR;
- engine->getGlyphPositions(NULL, status);
+ engine->getGlyphPositions(nullptr, status);
if (status != LE_ILLEGAL_ARGUMENT_ERROR) {
- log_err("Calling getGlyphPositions(NULL, status) did not return LE_ILLEGAL_ARGUMENT_ERROR.\n");
+ log_err("Calling getGlyphPositions(nullptr, status) did not return LE_ILLEGAL_ARGUMENT_ERROR.\n");
}
status = LE_NO_ERROR;
@@ -146,10 +146,10 @@ static void U_CALLCONV ParamTest(void)
DELETE_ARRAY(glyphs);
status = LE_NO_ERROR;
- glyphCount = engine->layoutChars(NULL, 0, 0, 0, false, 0.0, 0.0, status);
+ glyphCount = engine->layoutChars(nullptr, 0, 0, 0, false, 0.0, 0.0, status);
if (status != LE_ILLEGAL_ARGUMENT_ERROR) {
- log_err("Calling layoutChars(NULL, 0, 0, 0, false, 0.0, 0.0, status) did not fail w/ LE_ILLEGAL_ARGUMENT_ERROR.\n");
+ log_err("Calling layoutChars(nullptr, 0, 0, 0, false, 0.0, 0.0, status) did not fail w/ LE_ILLEGAL_ARGUMENT_ERROR.\n");
}
LEUnicode chars[] = {
@@ -216,11 +216,11 @@ bail:
U_CDECL_END
U_CDECL_BEGIN
-static void U_CALLCONV FactoryTest(void)
+static void U_CALLCONV FactoryTest()
{
LEErrorCode status = LE_NO_ERROR;
SimpleFontInstance *font = new SimpleFontInstance(12, status);
- LayoutEngine *engine = NULL;
+ LayoutEngine *engine = nullptr;
for(le_int32 scriptCode = 0; scriptCode < scriptCodeCount; scriptCode += 1) {
status = LE_NO_ERROR;
@@ -238,7 +238,7 @@ static void U_CALLCONV FactoryTest(void)
U_CDECL_END
U_CDECL_BEGIN
-static void U_CALLCONV AccessTest(void)
+static void U_CALLCONV AccessTest()
{
LEErrorCode status = LE_NO_ERROR;
SimpleFontInstance *font = new SimpleFontInstance(12, status);
@@ -387,18 +387,18 @@ static void checkFontVersion(PortableFontInstance *fontInstance, const char *tes
if (fontChecksum != testChecksum) {
const char *fontVersionString = fontInstance->getNameString(NAME_VERSION_STRING,
PLATFORM_MACINTOSH, MACINTOSH_ROMAN, MACINTOSH_ENGLISH);
- const LEUnicode *uFontVersionString = NULL;
+ const LEUnicode *uFontVersionString = nullptr;
// The standard recommends that the Macintosh Roman/English name string be present, but
// if it's not, try the Microsoft Unicode/English string.
- if (fontVersionString == NULL) {
+ if (fontVersionString == nullptr) {
uFontVersionString = fontInstance->getUnicodeNameString(NAME_VERSION_STRING,
PLATFORM_MICROSOFT, MICROSOFT_UNICODE_BMP, MICROSOFT_ENGLISH);
}
log_info("Test %s: this may not be the same font used to generate the test data.\n", testID);
- if (uFontVersionString != NULL) {
+ if (uFontVersionString != nullptr) {
log_info("Your font's version string is \"%S\"\n", uFontVersionString);
fontInstance->deleteNameString(uFontVersionString);
} else {
@@ -413,14 +413,14 @@ static void checkFontVersion(PortableFontInstance *fontInstance, const char *tes
/* Returns the path to icu/source/test/testdata/ */
const char *getSourceTestData() {
- const char *srcDataDir = NULL;
+ const char *srcDataDir = nullptr;
#ifdef U_TOPSRCDIR
srcDataDir = U_TOPSRCDIR U_FILE_SEP_STRING "test" U_FILE_SEP_STRING "testdata" U_FILE_SEP_STRING;
#else
srcDataDir = ".." U_FILE_SEP_STRING ".." U_FILE_SEP_STRING "test" U_FILE_SEP_STRING "testdata" U_FILE_SEP_STRING;
FILE *f = fopen(".." U_FILE_SEP_STRING ".." U_FILE_SEP_STRING "test" U_FILE_SEP_STRING "testdata" U_FILE_SEP_STRING "rbbitst.txt", "r");
- if (f != NULL) {
+ if (f != nullptr) {
/* We're in icu/source/test/letest/ */
fclose(f);
} else {
@@ -550,7 +550,7 @@ LEFontInstance *openFont(const char *fontName, const char *checksum, const char
if (LE_FAILURE(fontStatus)) {
log_info("Test %s: can't open font %s - test skipped.\n", testID, fontName);
delete font;
- return NULL;
+ return nullptr;
} else {
le_uint32 cksum = 0;
@@ -563,7 +563,7 @@ LEFontInstance *openFont(const char *fontName, const char *checksum, const char
}
U_CDECL_BEGIN
-static void U_CALLCONV DataDrivenTest(void)
+static void U_CALLCONV DataDrivenTest()
{
#if !UCONFIG_NO_REGULAR_EXPRESSIONS
UErrorCode status = U_ZERO_ERROR;
@@ -573,7 +573,7 @@ static void U_CALLCONV DataDrivenTest(void)
UXMLParser *parser = UXMLParser::createParser(status);
UXMLElement *root = parser->parseFile(testFilePath, status);
- if (root == NULL) {
+ if (root == nullptr) {
log_err("Could not open the test data file: %s\n", testFilePath);
delete parser;
return;
@@ -599,12 +599,12 @@ static void U_CALLCONV DataDrivenTest(void)
const UXMLElement *testCase;
int32_t tc = 0;
- while((testCase = root->nextChildElement(tc)) != NULL) {
+ while((testCase = root->nextChildElement(tc)) != nullptr) {
if (testCase->getTagName().compare(test_case) == 0) {
char *id = getCString(testCase->getAttribute(id_attr));
char *script = getCString(testCase->getAttribute(script_attr));
char *lang = getCString(testCase->getAttribute(lang_attr));
- LEFontInstance *font = NULL;
+ LEFontInstance *font = nullptr;
const UXMLElement *element;
int32_t ec = 0;
int32_t charCount = 0;
@@ -613,10 +613,10 @@ static void U_CALLCONV DataDrivenTest(void)
le_int32 languageCode = -1;
UnicodeString text, glyphs, indices, positions;
int32_t glyphCount = 0, indexCount = 0, positionCount = 0;
- TestResult expected = {0, NULL, NULL, NULL};
- TestResult actual = {0, NULL, NULL, NULL};
+ TestResult expected = {0, nullptr, nullptr, nullptr};
+ TestResult actual = {0, nullptr, nullptr, nullptr};
LEErrorCode success = LE_NO_ERROR;
- LayoutEngine *engine = NULL;
+ LayoutEngine *engine = nullptr;
uscript_getCode(script, &scriptCode, 1, &status);
if (LE_FAILURE(status)) {
@@ -624,7 +624,7 @@ static void U_CALLCONV DataDrivenTest(void)
goto free_c_strings;
}
- if (lang != NULL) {
+ if (lang != nullptr) {
languageCode = getLanguageCode(lang);
if (languageCode < 0) {
@@ -633,7 +633,7 @@ static void U_CALLCONV DataDrivenTest(void)
}
}
- while((element = testCase->nextChildElement(ec)) != NULL) {
+ while((element = testCase->nextChildElement(ec)) != nullptr) {
UnicodeString tag = element->getTagName();
// TODO: make sure that each element is only used once.
@@ -647,7 +647,7 @@ static void U_CALLCONV DataDrivenTest(void)
freeCString(fontVer);
freeCString(fontName);
- if (font == NULL) {
+ if (font == nullptr) {
// warning message already displayed...
goto free_c_strings;
}
@@ -671,7 +671,7 @@ static void U_CALLCONV DataDrivenTest(void)
// TODO: make sure that the font, test-text, result-glyphs, result-indices and result-positions
// have all been provided
- if (font == NULL) {
+ if (font == nullptr) {
LEErrorCode fontStatus = LE_NO_ERROR;
font = new SimpleFontInstance(12, fontStatus);
@@ -749,7 +749,7 @@ U_CDECL_BEGIN
* we expect them to be. Really, it would be a good idea to make a whole test suite
* for ParagraphLayout.
*/
-static void U_CALLCONV GlyphToCharTest(void)
+static void U_CALLCONV GlyphToCharTest()
{
#if !UCONFIG_NO_BREAK_ITERATION
LEErrorCode status = LE_NO_ERROR;
@@ -885,14 +885,14 @@ static void U_CALLCONV GlyphToCharTest(void)
fontRuns.add(font, charCount);
- paragraphLayout = new ParagraphLayout(chars, charCount, &fontRuns, NULL, NULL, NULL, 0, false, status);
+ paragraphLayout = new ParagraphLayout(chars, charCount, &fontRuns, nullptr, nullptr, nullptr, 0, false, status);
if (LE_FAILURE(status)) {
goto close_font;
}
paragraphLayout->reflow();
- while ((line = paragraphLayout->nextLine(lineWidth)) != NULL) {
+ while ((line = paragraphLayout->nextLine(lineWidth)) != nullptr) {
le_int32 runCount = line->countRuns();
for(le_int32 run = 0; run < runCount; run += 1) {
@@ -983,7 +983,7 @@ static void addAllTests(TestNode **root)
/* returns the path to icu/source/data/out */
static const char *ctest_dataOutDir()
{
- static const char *dataOutDir = NULL;
+ static const char *dataOutDir = nullptr;
if(dataOutDir) {
return dataOutDir;
@@ -1017,12 +1017,12 @@ static const char *ctest_dataOutDir()
/* Only Windows should end up here, so looking for '\' is safe. */
for (i=1; i<=3; i++) {
pBackSlash = strrchr(p, U_FILE_SEP_CHAR);
- if (pBackSlash != NULL) {
+ if (pBackSlash != nullptr) {
*pBackSlash = 0; /* Truncate the string at the '\' */
}
}
- if (pBackSlash != NULL) {
+ if (pBackSlash != nullptr) {
/* We found and truncated three names from the path.
* Now append "source\data" and set the environment
*/
@@ -1060,7 +1060,7 @@ static void ctest_setICU_DATA() {
/* No location for the data dir was identifiable.
* Add other fallbacks for the test data location here if the need arises
*/
- if (getenv("ICU_DATA") == NULL) {
+ if (getenv("ICU_DATA") == nullptr) {
/* If ICU_DATA isn't set, set it to the usual location */
u_setDataDirectory(ctest_dataOutDir());
}
@@ -1069,14 +1069,14 @@ static void ctest_setICU_DATA() {
int main(int argc, char* argv[])
{
int32_t nerrors = 0;
- TestNode *root = NULL;
+ TestNode *root = nullptr;
UErrorCode errorCode = U_ZERO_ERROR;
UDate startTime, endTime;
int32_t diffTime;
startTime = uprv_getUTCtime();
- if (!initArgs(argc, argv, NULL, NULL)) {
+ if (!initArgs(argc, argv, nullptr, nullptr)) {
/* Error already displayed. */
return -1;
}
@@ -1099,7 +1099,7 @@ int main(int argc, char* argv[])
u_cleanup();
errorCode = U_ZERO_ERROR;
- if (!initArgs(argc, argv, NULL, NULL)) {
+ if (!initArgs(argc, argv, nullptr, nullptr)) {
/* Error already displayed. */
return -1;
}
diff --git a/Build/source/libs/icu/icu-src/source/test/letest/letsutil.cpp b/Build/source/libs/icu/icu-src/source/test/letest/letsutil.cpp
index 1726b4e5770..2f6fbc4adde 100644
--- a/Build/source/libs/icu/icu-src/source/test/letest/letsutil.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/letest/letsutil.cpp
@@ -33,12 +33,12 @@ U_NAMESPACE_USE
char *getCString(const UnicodeString *uString)
{
- if (uString == NULL) {
- return NULL;
+ if (uString == nullptr) {
+ return nullptr;
}
le_int32 uLength = uString->length();
- le_int32 cLength = uString->extract(0, uLength, NULL, 0, US_INV);
+ le_int32 cLength = uString->extract(0, uLength, nullptr, 0, US_INV);
char *cString = NEW_ARRAY(char, cLength + 1);
uString->extract(0, uLength, cString, cLength, US_INV);
@@ -49,8 +49,8 @@ char *getCString(const UnicodeString *uString)
char *getCString(const LEUnicode16 *uChars)
{
- if (uChars == NULL) {
- return NULL;
+ if (uChars == nullptr) {
+ return nullptr;
}
const UnicodeString ustring(uChars);
@@ -60,12 +60,12 @@ char *getCString(const LEUnicode16 *uChars)
char *getUTF8String(const UnicodeString *uString)
{
- if (uString == NULL) {
- return NULL;
+ if (uString == nullptr) {
+ return nullptr;
}
le_int32 uLength = uString->length();
- le_int32 cLength = uString->extract(0, uLength, NULL, 0, "UTF-8");
+ le_int32 cLength = uString->extract(0, uLength, nullptr, 0, "UTF-8");
char *cString = NEW_ARRAY(char, cLength + 1);
uString->extract(0, uLength, cString, cLength, "UTF-8");
@@ -88,7 +88,7 @@ le_bool getRTL(const UnicodeString &text)
le_int32 limit = -1;
UBiDi *ubidi = ubidi_openSized(charCount, 0, &status);
- ubidi_setPara(ubidi, text.getBuffer(), charCount, UBIDI_DEFAULT_LTR, NULL, &status);
+ ubidi_setPara(ubidi, text.getBuffer(), charCount, UBIDI_DEFAULT_LTR, nullptr, &status);
// TODO: Should check that there's only a single logical run...
ubidi_getLogicalRun(ubidi, 0, &limit, &level);
diff --git a/Build/source/libs/icu/icu-src/source/test/letest/xmlreader.cpp b/Build/source/libs/icu/icu-src/source/test/letest/xmlreader.cpp
index eb469792a46..5d4acc8c2f0 100644
--- a/Build/source/libs/icu/icu-src/source/test/letest/xmlreader.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/letest/xmlreader.cpp
@@ -139,7 +139,7 @@ void readTestFile(const char *testFilePath, TestCaseCallback callback)
UXMLParser *parser = UXMLParser::createParser(status);
UXMLElement *root = parser->parseFile(testFilePath, status);
- if (root == NULL) {
+ if (root == nullptr) {
log_err("Could not open the test data file: %s\n", testFilePath);
delete parser;
return;
@@ -165,14 +165,14 @@ void readTestFile(const char *testFilePath, TestCaseCallback callback)
const UXMLElement *testCase;
int32_t tc = 0;
- while((testCase = root->nextChildElement(tc)) != NULL) {
+ while((testCase = root->nextChildElement(tc)) != nullptr) {
if (testCase->getTagName().compare(test_case) == 0) {
char *id = getCString(testCase->getAttribute(id_attr));
char *script = getCString(testCase->getAttribute(script_attr));
char *lang = getCString(testCase->getAttribute(lang_attr));
- char *fontName = NULL;
- char *fontVer = NULL;
- char *fontCksum = NULL;
+ char *fontName = nullptr;
+ char *fontVer = nullptr;
+ char *fontCksum = nullptr;
const UXMLElement *element;
int32_t ec = 0;
int32_t charCount = 0;
@@ -181,7 +181,7 @@ void readTestFile(const char *testFilePath, TestCaseCallback callback)
le_int32 languageCode = -1;
UnicodeString text, glyphs, indices, positions;
int32_t glyphCount = 0, indexCount = 0, positionCount = 0;
- TestResult expected = {0, NULL, NULL, NULL};
+ TestResult expected = {0, nullptr, nullptr, nullptr};
uscript_getCode(script, &scriptCode, 1, &status);
if (LE_FAILURE(status)) {
@@ -189,7 +189,7 @@ void readTestFile(const char *testFilePath, TestCaseCallback callback)
goto free_c_strings;
}
- if (lang != NULL) {
+ if (lang != nullptr) {
languageCode = getLanguageCode(lang);
if (languageCode < 0) {
@@ -198,7 +198,7 @@ void readTestFile(const char *testFilePath, TestCaseCallback callback)
}
}
- while((element = testCase->nextChildElement(ec)) != NULL) {
+ while((element = testCase->nextChildElement(ec)) != nullptr) {
UnicodeString tag = element->getTagName();
// TODO: make sure that each element is only used once.
diff --git a/Build/source/libs/icu/icu-src/source/test/perf/DateFmtPerf/DateFmtPerf.cpp b/Build/source/libs/icu/icu-src/source/test/perf/DateFmtPerf/DateFmtPerf.cpp
index 9385b84210a..ffd8c0d0635 100644
--- a/Build/source/libs/icu/icu-src/source/test/perf/DateFmtPerf/DateFmtPerf.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/perf/DateFmtPerf/DateFmtPerf.cpp
@@ -21,7 +21,7 @@ using namespace std;
DateFormatPerfTest::DateFormatPerfTest(int32_t argc, const char* argv[], UErrorCode& status)
: UPerfTest(argc,argv,status) {
- if (locale == NULL){
+ if (locale == nullptr){
locale = "en_US"; // set default locale
}
}
@@ -64,9 +64,9 @@ UPerfFunction* DateFormatPerfTest::runIndexedTest(int32_t index, UBool exec,cons
default:
name = "";
- return NULL;
+ return nullptr;
}
- return NULL;
+ return nullptr;
}
diff --git a/Build/source/libs/icu/icu-src/source/test/perf/DateFmtPerf/DateFmtPerf.h b/Build/source/libs/icu/icu-src/source/test/perf/DateFmtPerf/DateFmtPerf.h
index 0dd6ec9f21b..397064d241d 100644
--- a/Build/source/libs/icu/icu-src/source/test/perf/DateFmtPerf/DateFmtPerf.h
+++ b/Build/source/libs/icu/icu-src/source/test/perf/DateFmtPerf/DateFmtPerf.h
@@ -47,7 +47,7 @@ using namespace std;
#else
#define _UNICODE
typedef int DWORD;
-inline int FoldStringW(DWORD dwMapFlags, const UChar* lpSrcStr,int cchSrc, UChar* lpDestStr,int cchDest);
+inline int FoldStringW(DWORD dwMapFlags, const char16_t* lpSrcStr,int cchSrc, char16_t* lpDestStr,int cchDest);
#endif
class BreakItFunction : public UPerfFunction
@@ -637,19 +637,19 @@ public:
return UnicodeString(buf, "");
}
case Formattable::kString:
- return UnicodeString((UChar)U_DQUOTE).append(f.getString()).append((UChar)U_DQUOTE);
+ return UnicodeString((char16_t)U_DQUOTE).append(f.getString()).append((char16_t)U_DQUOTE);
case Formattable::kArray:
{
int32_t i, count;
const Formattable* array = f.getArray(count);
- UnicodeString result((UChar)U_LEFT_SQUARE_BRACKET);
+ UnicodeString result((char16_t)U_LEFT_SQUARE_BRACKET);
for (i=0; i<count; ++i) {
if (i > 0) {
- (result += (UChar)U_COMMA) += (UChar)U_SPACE;
+ (result += (char16_t)U_COMMA) += (char16_t)U_SPACE;
}
result += formattableToString(array[i]);
}
- result += (UChar)U_RIGHT_SQUARE_BRACKET;
+ result += (char16_t)U_RIGHT_SQUARE_BRACKET;
return result;
}
default:
diff --git a/Build/source/libs/icu/icu-src/source/test/perf/charperf/charperf.cpp b/Build/source/libs/icu/icu-src/source/test/perf/charperf/charperf.cpp
index 78231d890ad..aa10aa3fc5a 100644
--- a/Build/source/libs/icu/icu-src/source/test/perf/charperf/charperf.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/perf/charperf/charperf.cpp
@@ -122,9 +122,9 @@ UPerfFunction* CharPerformanceTest::runIndexedTest(int32_t index, UBool exec,
TESTCASE(21, TestStdLibIsWhiteSpace);
default:
name = "";
- return NULL;
+ return nullptr;
}
- return NULL;
+ return nullptr;
}
UPerfFunction* CharPerformanceTest::TestIsAlpha()
diff --git a/Build/source/libs/icu/icu-src/source/test/perf/charperf/charperf.h b/Build/source/libs/icu/icu-src/source/test/perf/charperf/charperf.h
index bb93c072ab2..d9d652a7a09 100644
--- a/Build/source/libs/icu/icu-src/source/test/perf/charperf/charperf.h
+++ b/Build/source/libs/icu/icu-src/source/test/perf/charperf/charperf.h
@@ -91,7 +91,7 @@ public:
~CharPerformanceTest();
virtual UPerfFunction* runIndexedTest(int32_t index, UBool exec,
const char *&name,
- char *par = NULL);
+ char *par = nullptr);
UPerfFunction* TestIsAlpha();
UPerfFunction* TestIsUpper();
UPerfFunction* TestIsLower();
diff --git a/Build/source/libs/icu/icu-src/source/test/perf/collationperf/collperf.cpp b/Build/source/libs/icu/icu-src/source/test/perf/collationperf/collperf.cpp
index 50ec9540394..530ae434372 100644
--- a/Build/source/libs/icu/icu-src/source/test/perf/collationperf/collperf.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/perf/collationperf/collperf.cpp
@@ -85,7 +85,7 @@ const char gUsageString[] =
// Stubs for Windows API functions when building on UNIXes.
//
typedef int DWORD;
-inline int CompareStringW(DWORD, DWORD, UChar *, int, UChar *, int) {return 0;}
+inline int CompareStringW(DWORD, DWORD, char16_t *, int, char16_t *, int) {return 0;}
#include <sys/time.h>
unsigned long timeGetTime() {
struct timeval t;
@@ -94,7 +94,7 @@ unsigned long timeGetTime() {
val += t.tv_usec / 1000;
return val;
}
-inline int LCMapStringW(DWORD, DWORD, UChar *, int, UChar *, int) {return 0;}
+inline int LCMapStringW(DWORD, DWORD, char16_t *, int, char16_t *, int) {return 0;}
const int LCMAP_SORTKEY = 0;
#define MAKELCID(a,b) 0
const int SORT_DEFAULT = 0;
@@ -194,7 +194,7 @@ OptSpec opts[] = {
// one of these structs.
//
struct Line {
- UChar *name;
+ char16_t *name;
int len;
char *winSortKey;
char *icuSortKey;
@@ -393,7 +393,7 @@ void doKeyGen()
for (iLoop=0; iLoop < opt_iLoopCount; iLoop++) {
LCMapStringW(gWinLCID, LCMAP_SORTKEY,
gFileLines[line].name, len,
- (UChar *)gFileLines[line].winSortKey, 5000); // TODO something with length.
+ (char16_t *)gFileLines[line].winSortKey, 5000); // TODO something with length.
}
}
}
@@ -487,7 +487,7 @@ void doBinarySearch()
if (opt_strcmp || opt_strcmpCPO)
{
unsigned long startTime = timeGetTime();
- typedef int32_t (U_EXPORT2 *PF)(const UChar *, const UChar *);
+ typedef int32_t (U_EXPORT2 *PF)(const char16_t *, const char16_t *);
PF pf = u_strcmp;
if (opt_strcmpCPO) {pf = u_strcmpCodePointOrder;}
//if (opt_strcmp && opt_win) {pf = (PF)wcscmp;} // Damn the difference between int32_t and int
@@ -835,8 +835,8 @@ void doForwardIterTest(UBool haslen) {
}
printf("performance test on strings from file -----------\n");
- UChar dummytext[] = {0, 0};
- UCollationElements *iter = ucol_openElements(gCol, NULL, 0, &error);
+ char16_t dummytext[] = {0, 0};
+ UCollationElements *iter = ucol_openElements(gCol, nullptr, 0, &error);
ucol_setText(iter, dummytext, 1, &error);
gCount = 0;
@@ -844,7 +844,7 @@ void doForwardIterTest(UBool haslen) {
while (count < opt_loopCount) {
int linecount = 0;
while (linecount < gNumFileLines) {
- UChar *str = gFileLines[linecount].name;
+ char16_t *str = gFileLines[linecount].name;
int strlen = haslen?gFileLines[linecount].len:-1;
ucol_setText(iter, str, strlen, &error);
while (ucol_next(iter, &error) != UCOL_NULLORDER) {
@@ -864,7 +864,7 @@ void doForwardIterTest(UBool haslen) {
while (count < opt_loopCount) {
int linecount = 0;
while (linecount < gNumFileLines) {
- UChar *str = gFileLines[linecount].name;
+ char16_t *str = gFileLines[linecount].name;
int strlen = haslen?gFileLines[linecount].len:-1;
ucol_setText(iter, str, strlen, &error);
linecount ++;
@@ -883,7 +883,7 @@ void doForwardIterTest(UBool haslen) {
printf("performance test on skipped-5 concatenated strings from file -----------\n");
- UChar *str;
+ char16_t *str;
int strlen = 0;
// appending all the strings
int linecount = 0;
@@ -892,7 +892,7 @@ void doForwardIterTest(UBool haslen) {
u_strlen(gFileLines[linecount].name);
linecount ++;
}
- str = (UChar *)malloc(sizeof(UChar) * strlen);
+ str = (char16_t *)malloc(sizeof(char16_t) * strlen);
int strindex = 0;
linecount = 0;
while (strindex < strlen) {
@@ -900,7 +900,7 @@ void doForwardIterTest(UBool haslen) {
len += haslen?gFileLines[linecount].len:
u_strlen(gFileLines[linecount].name);
memcpy(str + strindex, gFileLines[linecount].name,
- sizeof(UChar) * len);
+ sizeof(char16_t) * len);
strindex += len;
linecount ++;
}
@@ -998,8 +998,8 @@ void doBackwardIterTest(UBool haslen) {
printf("performance test on strings from file -----------\n");
- UCollationElements *iter = ucol_openElements(gCol, NULL, 0, &error);
- UChar dummytext[] = {0, 0};
+ UCollationElements *iter = ucol_openElements(gCol, nullptr, 0, &error);
+ char16_t dummytext[] = {0, 0};
ucol_setText(iter, dummytext, 1, &error);
gCount = 0;
@@ -1007,7 +1007,7 @@ void doBackwardIterTest(UBool haslen) {
while (count < opt_loopCount) {
int linecount = 0;
while (linecount < gNumFileLines) {
- UChar *str = gFileLines[linecount].name;
+ char16_t *str = gFileLines[linecount].name;
int strlen = haslen?gFileLines[linecount].len:-1;
ucol_setText(iter, str, strlen, &error);
while (ucol_previous(iter, &error) != UCOL_NULLORDER) {
@@ -1028,7 +1028,7 @@ void doBackwardIterTest(UBool haslen) {
while (count < opt_loopCount) {
int linecount = 0;
while (linecount < gNumFileLines) {
- UChar *str = gFileLines[linecount].name;
+ char16_t *str = gFileLines[linecount].name;
int strlen = haslen?gFileLines[linecount].len:-1;
ucol_setText(iter, str, strlen, &error);
linecount ++;
@@ -1047,7 +1047,7 @@ void doBackwardIterTest(UBool haslen) {
printf("performance test on skipped-5 concatenated strings from file -----------\n");
- UChar *str;
+ char16_t *str;
int strlen = 0;
// appending all the strings
int linecount = 0;
@@ -1056,7 +1056,7 @@ void doBackwardIterTest(UBool haslen) {
u_strlen(gFileLines[linecount].name);
linecount ++;
}
- str = (UChar *)malloc(sizeof(UChar) * strlen);
+ str = (char16_t *)malloc(sizeof(char16_t) * strlen);
int strindex = 0;
linecount = 0;
while (strindex < strlen) {
@@ -1064,7 +1064,7 @@ void doBackwardIterTest(UBool haslen) {
len += haslen?gFileLines[linecount].len:
u_strlen(gFileLines[linecount].name);
memcpy(str + strindex, gFileLines[linecount].name,
- sizeof(UChar) * len);
+ sizeof(char16_t) * len);
strindex += len;
linecount ++;
}
@@ -1211,7 +1211,7 @@ class UCharFile {
public:
UCharFile(const char *fileName);
~UCharFile();
- UChar get();
+ char16_t get();
UBool eof() {return fEof;};
UBool error() {return fError;};
@@ -1223,7 +1223,7 @@ private:
const char *fName;
UBool fEof;
UBool fError;
- UChar fPending2ndSurrogate;
+ char16_t fPending2ndSurrogate;
enum {UTF16LE, UTF16BE, UTF8} fEncoding;
};
@@ -1234,7 +1234,7 @@ UCharFile::UCharFile(const char * fileName) {
fName = fileName;
fFile = fopen(fName, "rb");
fPending2ndSurrogate = 0;
- if (fFile == NULL) {
+ if (fFile == nullptr) {
fprintf(stderr, "Can not open file \"%s\"\n", opt_fName);
fError = true;
return;
@@ -1268,8 +1268,8 @@ UCharFile::~UCharFile() {
-UChar UCharFile::get() {
- UChar c;
+char16_t UCharFile::get() {
+ char16_t c;
switch (fEncoding) {
case UTF16LE:
{
@@ -1303,7 +1303,7 @@ UChar UCharFile::get() {
break;
}
- int ch = fgetc(fFile); // Note: c and ch are separate cause eof test doesn't work on UChar type.
+ int ch = fgetc(fFile); // Note: c and ch are separate cause eof test doesn't work on char16_t type.
if (ch == EOF) {
c = 0;
fEof = true;
@@ -1344,13 +1344,13 @@ UChar UCharFile::get() {
i = 0;
uint32_t cp;
U8_NEXT_UNSAFE(bytes, i, cp);
- c = (UChar)cp;
+ c = (char16_t)cp;
if (cp >= 0x10000) {
// The code point needs to be broken up into a utf-16 surrogate pair.
// Process first half this time through the main loop, and
// remember the other half for the next time through.
- UChar utf16Buf[3];
+ char16_t utf16Buf[3];
i = 0;
UTF16_APPEND_CHAR_UNSAFE(utf16Buf, i, cp);
fPending2ndSurrogate = utf16Buf[1];
@@ -1379,8 +1379,8 @@ UCollator *openRulesCollator() {
}
int bufLen = 10000;
- UChar *buf = (UChar *)malloc(bufLen * sizeof(UChar));
- UChar *tmp;
+ char16_t *buf = (char16_t *)malloc(bufLen * sizeof(char16_t));
+ char16_t *tmp;
int i = 0;
for(;;) {
@@ -1395,8 +1395,8 @@ UCollator *openRulesCollator() {
if (i >= bufLen) {
tmp = buf;
bufLen += 10000;
- buf = (UChar *)realloc(buf, bufLen);
- if (buf == NULL) {
+ buf = (char16_t *)realloc(buf, bufLen);
+ if (buf == nullptr) {
free(tmp);
return 0;
}
@@ -1406,7 +1406,7 @@ UCollator *openRulesCollator() {
UErrorCode status = U_ZERO_ERROR;
UCollator *coll = ucol_openRules(buf, u_strlen(buf), UCOL_OFF,
- UCOL_DEFAULT_STRENGTH, NULL, &status);
+ UCOL_DEFAULT_STRENGTH, nullptr, &status);
if (U_FAILURE(status)) {
fprintf(stderr, "ICU ucol_openRules() open failed.: %d\n", status);
return 0;
@@ -1546,7 +1546,7 @@ int main(int argc, const char** argv) {
const int MAXLINES = 100000;
gFileLines = new Line[MAXLINES];
- UChar buf[1024];
+ char16_t buf[1024];
int column = 0;
// Read the file, split into lines, and save in memory.
@@ -1554,7 +1554,7 @@ int main(int argc, const char** argv) {
// (The number of bytes read from file per loop iteration depends on external encoding.)
for (;;) {
- UChar c = f.get();
+ char16_t c = f.get();
if (f.error()){
exit(-1);
}
@@ -1570,9 +1570,9 @@ int main(int argc, const char** argv) {
if (f.eof() || c == 0x0a || c==0x2028) { // Unipad inserts 2028 line separators!
buf[column++] = 0;
if (column > 1) {
- gFileLines[gNumFileLines].name = new UChar[column];
+ gFileLines[gNumFileLines].name = new char16_t[column];
gFileLines[gNumFileLines].len = column-1;
- memcpy(gFileLines[gNumFileLines].name, buf, column * sizeof(UChar));
+ memcpy(gFileLines[gNumFileLines].name, buf, column * sizeof(char16_t));
gNumFileLines++;
column = 0;
if (gNumFileLines >= MAXLINES) {
@@ -1636,7 +1636,7 @@ int main(int argc, const char** argv) {
t=LCMapStringW(gWinLCID, LCMAP_SORTKEY, gFileLines[line].name, -1, buf, sizeof(buf));
gFileLines[line].winSortKey = new char[t];
if (t > (int32_t)sizeof(buf)) {
- t = LCMapStringW(gWinLCID, LCMAP_SORTKEY, gFileLines[line].name, -1, (UChar *)(gFileLines[line].winSortKey), t);
+ t = LCMapStringW(gWinLCID, LCMAP_SORTKEY, gFileLines[line].name, -1, (char16_t *)(gFileLines[line].winSortKey), t);
}
else
{
@@ -1669,7 +1669,7 @@ int main(int argc, const char** argv) {
int i;
for (line=0; line<gNumFileLines; line++) {
for (i=0;;i++) {
- UChar c = gFileLines[line].name[i];
+ char16_t c = gFileLines[line].name[i];
if (c == 0)
break;
if (c < 0x20 || c > 0x7e) {
diff --git a/Build/source/libs/icu/icu-src/source/test/perf/collperf/collperf.cpp b/Build/source/libs/icu/icu-src/source/test/perf/collperf/collperf.cpp
index ae8e00c1bfb..cceb58dd967 100644
--- a/Build/source/libs/icu/icu-src/source/test/perf/collperf/collperf.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/perf/collperf/collperf.cpp
@@ -40,11 +40,11 @@ struct CompactArrays{\
UNIT * data; /*the real space to hold strings*/ \
\
~CompactArrays(){free(index);free(data);} \
- CompactArrays():data(NULL), index(NULL), count(0){ \
+ CompactArrays():data(nullptr), index(nullptr), count(0){ \
index = (int32_t *) realloc(index, sizeof(int32_t)); \
index[0] = 0; \
} \
- void append_one(int32_t theLen){ /*include terminal NULL*/ \
+ void append_one(int32_t theLen){ /*include terminal NUL*/ \
count++; \
index = (int32_t *) realloc(index, sizeof(int32_t) * (count + 1)); \
index[count] = index[count - 1] + theLen; \
@@ -52,15 +52,15 @@ struct CompactArrays{\
} \
UNIT * last(){return data + index[count - 1];} \
UNIT * dataOf(int32_t i){return data + index[i];} \
- int32_t lengthOf(int i){return index[i+1] - index[i] - 1; } /*exclude terminating NULL*/ \
+ int32_t lengthOf(int i){return index[i+1] - index[i] - 1; } /*exclude terminating NUL*/ \
};
-//typedef CompactArrays<UChar> CA_uchar;
+//typedef CompactArrays<char16_t> CA_uchar;
//typedef CompactArrays<char> CA_char;
//typedef CompactArrays<uint8_t> CA_uint8;
//typedef CompactArrays<WCHAR> CA_win_wchar;
-COMPATCT_ARRAY(CA_uchar, UChar)
+COMPATCT_ARRAY(CA_uchar, char16_t)
COMPATCT_ARRAY(CA_char, char)
COMPATCT_ARRAY(CA_uint8, uint8_t)
COMPATCT_ARRAY(CA_win_wchar, WCHAR)
@@ -70,7 +70,7 @@ struct DataIndex {
static DWORD win_langid; // for qsort callback function
static UCollator * col; // for qsort callback function
uint8_t * icu_key;
- UChar * icu_data;
+ char16_t * icu_data;
int32_t icu_data_len;
char* posix_key;
char* posix_data;
@@ -147,8 +147,8 @@ public:
CmdIter(UErrorCode & status, UCollator * col, int32_t count, CA_uchar *data, Func fn, int32_t,int32_t)
:count(count), data(data), fn(fn){
exec_count = 0;
- UChar dummytext[] = {0, 0};
- iter = ucol_openElements(col, NULL, 0, &status);
+ char16_t dummytext[] = {0, 0};
+ iter = ucol_openElements(col, nullptr, 0, &status);
ucol_setText(iter, dummytext, 1, &status);
}
~CmdIter(){
@@ -188,7 +188,7 @@ public:
class CmdIterAll : public UPerfFunction {
typedef void (CmdIterAll::* Func)(UErrorCode* status);
int32_t count;
- UChar * data;
+ char16_t * data;
Func fn;
UCollationElements *iter;
int32_t exec_count;
@@ -199,7 +199,7 @@ public:
~CmdIterAll(){
ucol_closeElements(iter);
}
- CmdIterAll(UErrorCode & status, UCollator * col, int32_t count, UChar * data, CALL call,int32_t,int32_t)
+ CmdIterAll(UErrorCode & status, UCollator * col, int32_t count, char16_t * data, CALL call,int32_t,int32_t)
:count(count),data(data)
{
exec_count = 0;
@@ -495,7 +495,7 @@ public:
UCollator * col;
DWORD win_langid;
- UChar * icu_data_all;
+ char16_t * icu_data_all;
int32_t icu_data_all_len;
int32_t count;
@@ -539,25 +539,25 @@ public:
}
CollPerfTest(int32_t argc, const char* argv[], UErrorCode& status):UPerfTest(argc, argv, status){
- col = NULL;
- icu_data_all = NULL;
- icu_data = NULL;
- icu_key = NULL;
- posix_data = NULL;
- posix_key = NULL;
- win_data =NULL;
- win_key = NULL;
-
- rnd_index = NULL;
- ord_win_data= NULL;
- ord_win_key= NULL;
- ord_posix_data= NULL;
- ord_posix_key= NULL;
- ord_icu_data= NULL;
- ord_icu_key= NULL;
- ord_win_wcscmp = NULL;
- ord_icu_strcmp = NULL;
- ord_icu_cmpcpo = NULL;
+ col = nullptr;
+ icu_data_all = nullptr;
+ icu_data = nullptr;
+ icu_key = nullptr;
+ posix_data = nullptr;
+ posix_key = nullptr;
+ win_data =nullptr;
+ win_key = nullptr;
+
+ rnd_index = nullptr;
+ ord_win_data= nullptr;
+ ord_win_key= nullptr;
+ ord_posix_data= nullptr;
+ ord_posix_key= nullptr;
+ ord_icu_data= nullptr;
+ ord_icu_key= nullptr;
+ ord_win_wcscmp = nullptr;
+ ord_icu_strcmp = nullptr;
+ ord_icu_cmpcpo = nullptr;
if (U_FAILURE(status)){
return;
@@ -588,7 +588,7 @@ public:
return;
}
- if (locale == NULL){
+ if (locale == nullptr){
locale = "en_US"; // set default locale
}
@@ -673,18 +673,18 @@ public:
UPerfFunction * t = new classname(status,arg1, arg2, arg3, arg4, arg5, arg6);\
if (U_FAILURE(status)) {\
delete t;\
- return NULL;\
+ return nullptr;\
} else {\
return t;\
}\
} else {\
- return NULL;\
+ return nullptr;\
}\
}\
temp++\
- virtual UPerfFunction* runIndexedTest( /*[in]*/int32_t index, /*[in]*/UBool exec, /*[out]*/const char* &name, /*[in]*/ char* par = NULL ){
+ virtual UPerfFunction* runIndexedTest( /*[in]*/int32_t index, /*[in]*/UBool exec, /*[out]*/const char* &name, /*[in]*/ char* par = nullptr ){
int temp = 0;
#define TEST_KEYGEN(testname, func)\
@@ -741,7 +741,7 @@ public:
TEST_BIN(TestWin_BinarySearch_wcscmp, win_wcscmp);
name="";
- return NULL;
+ return nullptr;
}
@@ -753,11 +753,11 @@ public:
icu_data = new CA_uchar();
// Following code is borrowed from UPerfTest::getLines();
- const UChar* line=NULL;
+ const char16_t* line=nullptr;
int32_t len =0;
for (;;) {
line = ucbuf_readline(ucharBuf,&len,&status);
- if(line == NULL || U_FAILURE(status)){break;}
+ if(line == nullptr || U_FAILURE(status)){break;}
// Refer to the source code of ucbuf_readline()
// 1. 'len' includs the line terminal symbols
@@ -768,8 +768,8 @@ public:
continue; //skip empty line
} else {
icu_data->append_one(len);
- memcpy(icu_data->last(), line, len * sizeof(UChar));
- icu_data->last()[len -1] = NULL;
+ memcpy(icu_data->last(), line, len * sizeof(char16_t));
+ icu_data->last()[len -1] = 0;
}
}
if(U_FAILURE(status)) return;
@@ -780,11 +780,11 @@ public:
count = icu_data->count;
- icu_data_all_len = icu_data->index[count]; // includes all NULLs
- icu_data_all_len -= count; // excludes all NULLs
- icu_data_all_len += 1; // the terminal NULL
- icu_data_all = new UChar[icu_data_all_len];
- icu_data_all[icu_data_all_len - 1] = 0; //the terminal NULL
+ icu_data_all_len = icu_data->index[count]; // includes all NULs
+ icu_data_all_len -= count; // excludes all NULs
+ icu_data_all_len += 1; // the terminal NUL
+ icu_data_all = new char16_t[icu_data_all_len];
+ icu_data_all[icu_data_all_len - 1] = 0; //the terminal NUL
icu_key = new CA_uint8;
win_data = new CA_win_wchar;
@@ -796,38 +796,38 @@ public:
DataIndex::col = col;
- UChar * p = icu_data_all;
+ char16_t * p = icu_data_all;
int32_t s;
int32_t t;
for (int i=0; i < count; i++) {
// ICU all data
- s = sizeof(UChar) * icu_data->lengthOf(i);
+ s = sizeof(char16_t) * icu_data->lengthOf(i);
memcpy(p, icu_data->dataOf(i), s);
p += icu_data->lengthOf(i);
// ICU data
// ICU key
- s = ucol_getSortKey(col, icu_data->dataOf(i), -1,NULL, 0);
+ s = ucol_getSortKey(col, icu_data->dataOf(i), -1,nullptr, 0);
icu_key->append_one(s);
t = ucol_getSortKey(col, icu_data->dataOf(i), -1,icu_key->last(), s);
if (t != s) {status = U_INVALID_FORMAT_ERROR;return;}
// POSIX data
- s = ucnv_fromUChars(conv,NULL, 0, icu_data->dataOf(i), icu_data->lengthOf(i), &status);
+ s = ucnv_fromUChars(conv,nullptr, 0, icu_data->dataOf(i), icu_data->lengthOf(i), &status);
if (status == U_BUFFER_OVERFLOW_ERROR || status == U_ZERO_ERROR){
status = U_ZERO_ERROR;
} else {
return;
}
- posix_data->append_one(s + 1); // plus terminal NULL
+ posix_data->append_one(s + 1); // plus terminal NUL
t = ucnv_fromUChars(conv,posix_data->last(), s, icu_data->dataOf(i), icu_data->lengthOf(i), &status);
if (U_FAILURE(status)) return;
if ( t != s){status = U_INVALID_FORMAT_ERROR;return;}
posix_data->last()[s] = 0;
// POSIX key
- s = strxfrm(NULL, posix_data->dataOf(i), 0);
+ s = strxfrm(nullptr, posix_data->dataOf(i), 0);
if (s == INT_MAX){status = U_INVALID_FORMAT_ERROR;return;}
posix_key->append_one(s);
t = strxfrm(posix_key->last(), posix_data->dataOf(i), s);
@@ -835,12 +835,12 @@ public:
#if U_PLATFORM_HAS_WIN32_API
// Win data
- s = icu_data->lengthOf(i) + 1; // plus terminal NULL
+ s = icu_data->lengthOf(i) + 1; // plus terminal NUL
win_data->append_one(s);
memcpy(win_data->last(), icu_data->dataOf(i), sizeof(WCHAR) * s);
// Win key
- s = LCMapStringW(win_langid, LCMAP_SORTKEY, win_data->dataOf(i), win_data->lengthOf(i), NULL,0);
+ s = LCMapStringW(win_langid, LCMAP_SORTKEY, win_data->dataOf(i), win_data->lengthOf(i), nullptr,0);
if (s == 0) {status = U_INVALID_FORMAT_ERROR;return;}
win_key->append_one(s);
t = LCMapStringW(win_langid, LCMAP_SORTKEY, win_data->dataOf(i), win_data->lengthOf(i), (WCHAR *)(win_key->last()),s);
diff --git a/Build/source/libs/icu/icu-src/source/test/perf/collperf2/collperf2.cpp b/Build/source/libs/icu/icu-src/source/test/perf/collperf2/collperf2.cpp
index 1f80b371613..e0a367189f8 100644
--- a/Build/source/libs/icu/icu-src/source/test/perf/collperf2/collperf2.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/perf/collperf2/collperf2.cpp
@@ -30,11 +30,11 @@ struct CompactArrays{\
UNIT * data; /*the real space to hold strings*/ \
\
~CompactArrays(){free(index);free(data);} \
- CompactArrays() : count(0), index(NULL), data(NULL) { \
+ CompactArrays() : count(0), index(nullptr), data(nullptr) { \
index = (int32_t *) realloc(index, sizeof(int32_t)); \
index[0] = 0; \
} \
- void append_one(int32_t theLen){ /*include terminal NULL*/ \
+ void append_one(int32_t theLen){ /*include terminal NUL*/ \
count++; \
index = (int32_t *) realloc(index, sizeof(int32_t) * (count + 1)); \
index[count] = index[count - 1] + theLen; \
@@ -42,10 +42,10 @@ struct CompactArrays{\
} \
UNIT * last(){return data + index[count - 1];} \
const UNIT * dataOf(int32_t i) const {return data + index[i];} \
- int32_t lengthOf(int i) const {return index[i+1] - index[i] - 1; } /*exclude terminating NULL*/ \
+ int32_t lengthOf(int i) const {return index[i+1] - index[i] - 1; } /*exclude terminating NUL*/ \
};
-COMPACT_ARRAY(CA_uchar, UChar)
+COMPACT_ARRAY(CA_uchar, char16_t)
COMPACT_ARRAY(CA_char, char)
#define MAX_TEST_STRINGS_FOR_PERMUTING 1000
@@ -746,7 +746,7 @@ long CppGetCollationKey::getOperationsPerIteration() {
namespace {
struct CollatorAndCounter {
- CollatorAndCounter(const Collator& coll) : coll(coll), ucoll(NULL), counter(0) {}
+ CollatorAndCounter(const Collator& coll) : coll(coll), ucoll(nullptr), counter(0) {}
CollatorAndCounter(const Collator& coll, const UCollator *ucoll)
: coll(coll), ucoll(ucoll), counter(0) {}
const Collator& coll;
@@ -1046,7 +1046,7 @@ public:
CollPerf2Test(int32_t argc, const char *argv[], UErrorCode &status);
~CollPerf2Test();
virtual UPerfFunction* runIndexedTest(
- int32_t index, UBool exec, const char *&name, char *par = NULL);
+ int32_t index, UBool exec, const char *&name, char *par = nullptr);
private:
UCollator* coll;
@@ -1130,23 +1130,23 @@ private:
CollPerf2Test::CollPerf2Test(int32_t argc, const char *argv[], UErrorCode &status) :
UPerfTest(argc, argv, status),
- coll(NULL),
- collObj(NULL),
+ coll(nullptr),
+ collObj(nullptr),
count(0),
- data16(NULL),
- data8(NULL),
- modData16(NULL),
- modData8(NULL),
- sortedData16(NULL),
- sortedData8(NULL),
- randomData16(NULL),
- randomData8(NULL)
+ data16(nullptr),
+ data8(nullptr),
+ modData16(nullptr),
+ modData8(nullptr),
+ sortedData16(nullptr),
+ sortedData8(nullptr),
+ randomData16(nullptr),
+ randomData8(nullptr)
{
if (U_FAILURE(status)) {
return;
}
- if (locale == NULL){
+ if (locale == nullptr){
locale = "root";
}
@@ -1175,17 +1175,17 @@ CollPerf2Test::~CollPerf2Test()
const CA_uchar* CollPerf2Test::getData16(UErrorCode &status)
{
- if (U_FAILURE(status)) return NULL;
+ if (U_FAILURE(status)) return nullptr;
if (data16) return data16;
CA_uchar* d16 = new CA_uchar();
- const UChar *line = NULL;
+ const char16_t *line = nullptr;
int32_t len = 0;
int32_t numData = 0;
for (;;) {
line = ucbuf_readline(ucharBuf, &len, &status);
- if (line == NULL || U_FAILURE(status)) break;
+ if (line == nullptr || U_FAILURE(status)) break;
// Refer to the source code of ucbuf_readline()
// 1. 'len' includes the line terminal symbols
@@ -1196,7 +1196,7 @@ const CA_uchar* CollPerf2Test::getData16(UErrorCode &status)
continue; // skip empty/comment line
} else {
d16->append_one(len);
- UChar *p = d16->last();
+ char16_t *p = d16->last();
u_memcpy(p, line, len - 1); // exclude the CR
p[len - 1] = 0; // NUL-terminate
@@ -1216,36 +1216,36 @@ const CA_uchar* CollPerf2Test::getData16(UErrorCode &status)
const CA_char* CollPerf2Test::getData8(UErrorCode &status)
{
- if (U_FAILURE(status)) return NULL;
+ if (U_FAILURE(status)) return nullptr;
if (data8) return data8;
return data8 = getData8FromData16(getData16(status), status);
}
const CA_uchar* CollPerf2Test::getModData16(UErrorCode &status)
{
- if (U_FAILURE(status)) return NULL;
+ if (U_FAILURE(status)) return nullptr;
if (modData16) return modData16;
const CA_uchar* d16 = getData16(status);
- if (U_FAILURE(status)) return NULL;
+ if (U_FAILURE(status)) return nullptr;
CA_uchar* modData16 = new CA_uchar();
for (int32_t i = 0; i < d16->count; i++) {
- const UChar *s = d16->dataOf(i);
- int32_t len = d16->lengthOf(i) + 1; // including NULL terminator
+ const char16_t *s = d16->dataOf(i);
+ int32_t len = d16->lengthOf(i) + 1; // including NUL terminator
modData16->append_one(len);
u_memcpy(modData16->last(), s, len);
// replacing the last character with a different character
- UChar *lastChar = &modData16->last()[len -2];
+ char16_t *lastChar = &modData16->last()[len -2];
for (int32_t j = i + 1; j != i; j++) {
if (j >= d16->count) {
j = 0;
}
- const UChar *s1 = d16->dataOf(j);
- UChar lastChar1 = s1[d16->lengthOf(j) - 1];
+ const char16_t *s1 = d16->dataOf(j);
+ char16_t lastChar1 = s1[d16->lengthOf(j) - 1];
if (*lastChar != lastChar1) {
*lastChar = lastChar1;
break;
@@ -1258,7 +1258,7 @@ const CA_uchar* CollPerf2Test::getModData16(UErrorCode &status)
const CA_char* CollPerf2Test::getModData8(UErrorCode &status)
{
- if (U_FAILURE(status)) return NULL;
+ if (U_FAILURE(status)) return nullptr;
if (modData8) return modData8;
return modData8 = getData8FromData16(getModData16(status), status);
}
@@ -1296,7 +1296,7 @@ U16HashComparator(const void* context, const void* left, const void* right) {
} // namespace
const CA_uchar* CollPerf2Test::getSortedData16(UErrorCode &status) {
- if (U_FAILURE(status)) return NULL;
+ if (U_FAILURE(status)) return nullptr;
if (sortedData16) return sortedData16;
ArrayAndColl ac(getData16(status), *collObj);
@@ -1304,13 +1304,13 @@ const CA_uchar* CollPerf2Test::getSortedData16(UErrorCode &status) {
}
const CA_char* CollPerf2Test::getSortedData8(UErrorCode &status) {
- if (U_FAILURE(status)) return NULL;
+ if (U_FAILURE(status)) return nullptr;
if (sortedData8) return sortedData8;
return sortedData8 = getData8FromData16(getSortedData16(status), status);
}
const CA_uchar* CollPerf2Test::getRandomData16(UErrorCode &status) {
- if (U_FAILURE(status)) return NULL;
+ if (U_FAILURE(status)) return nullptr;
if (randomData16) return randomData16;
// Sort the strings by their hash codes, which should be a reasonably pseudo-random order.
@@ -1319,7 +1319,7 @@ const CA_uchar* CollPerf2Test::getRandomData16(UErrorCode &status) {
}
const CA_char* CollPerf2Test::getRandomData8(UErrorCode &status) {
- if (U_FAILURE(status)) return NULL;
+ if (U_FAILURE(status)) return nullptr;
if (randomData8) return randomData8;
return randomData8 = getData8FromData16(getRandomData16(status), status);
}
@@ -1327,22 +1327,22 @@ const CA_char* CollPerf2Test::getRandomData8(UErrorCode &status) {
CA_uchar* CollPerf2Test::sortData16(const CA_uchar* d16,
UComparator *cmp, const void *context,
UErrorCode &status) {
- if (U_FAILURE(status)) return NULL;
+ if (U_FAILURE(status)) return nullptr;
LocalArray<int32_t> indexes(new int32_t[d16->count]);
for (int32_t i = 0; i < d16->count; ++i) {
indexes[i] = i;
}
uprv_sortArray(indexes.getAlias(), d16->count, 4, cmp, context, true, &status);
- if (U_FAILURE(status)) return NULL;
+ if (U_FAILURE(status)) return nullptr;
// Copy the strings in sorted order into a new array.
LocalPointer<CA_uchar> newD16(new CA_uchar());
for (int32_t i = 0; i < d16->count; i++) {
int32_t j = indexes[i];
- const UChar* s = d16->dataOf(j);
+ const char16_t* s = d16->dataOf(j);
int32_t len = d16->lengthOf(j);
- int32_t capacity = len + 1; // including NULL terminator
+ int32_t capacity = len + 1; // including NUL terminator
newD16->append_one(capacity);
u_memcpy(newD16->last(), s, capacity);
}
@@ -1350,44 +1350,44 @@ CA_uchar* CollPerf2Test::sortData16(const CA_uchar* d16,
if (U_SUCCESS(status)) {
return newD16.orphan();
} else {
- return NULL;
+ return nullptr;
}
}
CA_char* CollPerf2Test::getData8FromData16(const CA_uchar* d16, UErrorCode &status) {
- if (U_FAILURE(status)) return NULL;
+ if (U_FAILURE(status)) return nullptr;
// UTF-16 -> UTF-8 conversion
LocalPointer<CA_char> d8(new CA_char());
for (int32_t i = 0; i < d16->count; i++) {
- const UChar *s16 = d16->dataOf(i);
+ const char16_t *s16 = d16->dataOf(i);
int32_t length16 = d16->lengthOf(i);
// get length in UTF-8
int32_t length8;
- u_strToUTF8(NULL, 0, &length8, s16, length16, &status);
+ u_strToUTF8(nullptr, 0, &length8, s16, length16, &status);
if (status == U_BUFFER_OVERFLOW_ERROR || status == U_ZERO_ERROR){
status = U_ZERO_ERROR;
} else {
break;
}
- int32_t capacity8 = length8 + 1; // plus terminal NULL
+ int32_t capacity8 = length8 + 1; // plus terminal NUL
d8->append_one(capacity8);
// convert to UTF-8
- u_strToUTF8(d8->last(), capacity8, NULL, s16, length16, &status);
+ u_strToUTF8(d8->last(), capacity8, nullptr, s16, length16, &status);
if (U_FAILURE(status)) break;
}
if (U_SUCCESS(status)) {
return d8.orphan();
} else {
- return NULL;
+ return nullptr;
}
}
UPerfFunction*
-CollPerf2Test::runIndexedTest(int32_t index, UBool exec, const char *&name, char *par /*= NULL*/)
+CollPerf2Test::runIndexedTest(int32_t index, UBool exec, const char *&name, char *par /*= nullptr*/)
{
(void)par;
TESTCASE_AUTO_BEGIN;
@@ -1435,7 +1435,7 @@ CollPerf2Test::runIndexedTest(int32_t index, UBool exec, const char *&name, char
TESTCASE_AUTO(TestStringPieceBinSearchC);
TESTCASE_AUTO_END;
- return NULL;
+ return nullptr;
}
@@ -1446,7 +1446,7 @@ UPerfFunction* CollPerf2Test::TestStrcoll()
Strcoll *testCase = new Strcoll(coll, getData16(status), true /* useLen */);
if (U_FAILURE(status)) {
delete testCase;
- return NULL;
+ return nullptr;
}
return testCase;
}
@@ -1457,7 +1457,7 @@ UPerfFunction* CollPerf2Test::TestStrcollNull()
Strcoll *testCase = new Strcoll(coll, getData16(status), false /* useLen */);
if (U_FAILURE(status)) {
delete testCase;
- return NULL;
+ return nullptr;
}
return testCase;
}
@@ -1468,7 +1468,7 @@ UPerfFunction* CollPerf2Test::TestStrcollSimilar()
Strcoll_2 *testCase = new Strcoll_2(coll, getData16(status), getModData16(status), true /* useLen */);
if (U_FAILURE(status)) {
delete testCase;
- return NULL;
+ return nullptr;
}
return testCase;
}
@@ -1479,7 +1479,7 @@ UPerfFunction* CollPerf2Test::TestStrcollUTF8()
StrcollUTF8 *testCase = new StrcollUTF8(coll, getData8(status), true /* useLen */);
if (U_FAILURE(status)) {
delete testCase;
- return NULL;
+ return nullptr;
}
return testCase;
}
@@ -1490,7 +1490,7 @@ UPerfFunction* CollPerf2Test::TestStrcollUTF8Null()
StrcollUTF8 *testCase = new StrcollUTF8(coll, getData8(status),false /* useLen */);
if (U_FAILURE(status)) {
delete testCase;
- return NULL;
+ return nullptr;
}
return testCase;
}
@@ -1501,7 +1501,7 @@ UPerfFunction* CollPerf2Test::TestStrcollUTF8Similar()
StrcollUTF8_2 *testCase = new StrcollUTF8_2(coll, getData8(status), getModData8(status), true /* useLen */);
if (U_FAILURE(status)) {
delete testCase;
- return NULL;
+ return nullptr;
}
return testCase;
}
@@ -1512,7 +1512,7 @@ UPerfFunction* CollPerf2Test::TestGetSortKey()
GetSortKey *testCase = new GetSortKey(coll, getData16(status), true /* useLen */);
if (U_FAILURE(status)) {
delete testCase;
- return NULL;
+ return nullptr;
}
return testCase;
}
@@ -1523,7 +1523,7 @@ UPerfFunction* CollPerf2Test::TestGetSortKeyNull()
GetSortKey *testCase = new GetSortKey(coll, getData16(status), false /* useLen */);
if (U_FAILURE(status)) {
delete testCase;
- return NULL;
+ return nullptr;
}
return testCase;
}
@@ -1534,7 +1534,7 @@ UPerfFunction* CollPerf2Test::TestNextSortKeyPart_4All()
NextSortKeyPart *testCase = new NextSortKeyPart(coll, getData16(status), 4 /* bufSize */);
if (U_FAILURE(status)) {
delete testCase;
- return NULL;
+ return nullptr;
}
return testCase;
}
@@ -1545,7 +1545,7 @@ UPerfFunction* CollPerf2Test::TestNextSortKeyPart_4x4()
NextSortKeyPart *testCase = new NextSortKeyPart(coll, getData16(status), 4 /* bufSize */, 4 /* maxIteration */);
if (U_FAILURE(status)) {
delete testCase;
- return NULL;
+ return nullptr;
}
return testCase;
}
@@ -1556,7 +1556,7 @@ UPerfFunction* CollPerf2Test::TestNextSortKeyPart_4x8()
NextSortKeyPart *testCase = new NextSortKeyPart(coll, getData16(status), 4 /* bufSize */, 8 /* maxIteration */);
if (U_FAILURE(status)) {
delete testCase;
- return NULL;
+ return nullptr;
}
return testCase;
}
@@ -1567,7 +1567,7 @@ UPerfFunction* CollPerf2Test::TestNextSortKeyPart_32All()
NextSortKeyPart *testCase = new NextSortKeyPart(coll, getData16(status), 32 /* bufSize */);
if (U_FAILURE(status)) {
delete testCase;
- return NULL;
+ return nullptr;
}
return testCase;
}
@@ -1578,7 +1578,7 @@ UPerfFunction* CollPerf2Test::TestNextSortKeyPart_32x2()
NextSortKeyPart *testCase = new NextSortKeyPart(coll, getData16(status), 32 /* bufSize */, 2 /* maxIteration */);
if (U_FAILURE(status)) {
delete testCase;
- return NULL;
+ return nullptr;
}
return testCase;
}
@@ -1589,7 +1589,7 @@ UPerfFunction* CollPerf2Test::TestNextSortKeyPartUTF8_4All()
NextSortKeyPartUTF8 *testCase = new NextSortKeyPartUTF8(coll, getData8(status), 4 /* bufSize */);
if (U_FAILURE(status)) {
delete testCase;
- return NULL;
+ return nullptr;
}
return testCase;
}
@@ -1600,7 +1600,7 @@ UPerfFunction* CollPerf2Test::TestNextSortKeyPartUTF8_4x4()
NextSortKeyPartUTF8 *testCase = new NextSortKeyPartUTF8(coll, getData8(status), 4 /* bufSize */, 4 /* maxIteration */);
if (U_FAILURE(status)) {
delete testCase;
- return NULL;
+ return nullptr;
}
return testCase;
}
@@ -1611,7 +1611,7 @@ UPerfFunction* CollPerf2Test::TestNextSortKeyPartUTF8_4x8()
NextSortKeyPartUTF8 *testCase = new NextSortKeyPartUTF8(coll, getData8(status), 4 /* bufSize */, 8 /* maxIteration */);
if (U_FAILURE(status)) {
delete testCase;
- return NULL;
+ return nullptr;
}
return testCase;
}
@@ -1622,7 +1622,7 @@ UPerfFunction* CollPerf2Test::TestNextSortKeyPartUTF8_32All()
NextSortKeyPartUTF8 *testCase = new NextSortKeyPartUTF8(coll, getData8(status), 32 /* bufSize */);
if (U_FAILURE(status)) {
delete testCase;
- return NULL;
+ return nullptr;
}
return testCase;
}
@@ -1633,7 +1633,7 @@ UPerfFunction* CollPerf2Test::TestNextSortKeyPartUTF8_32x2()
NextSortKeyPartUTF8 *testCase = new NextSortKeyPartUTF8(coll, getData8(status), 32 /* bufSize */, 2 /* maxIteration */);
if (U_FAILURE(status)) {
delete testCase;
- return NULL;
+ return nullptr;
}
return testCase;
}
@@ -1644,7 +1644,7 @@ UPerfFunction* CollPerf2Test::TestCppCompare()
CppCompare *testCase = new CppCompare(collObj, getData16(status), true /* useLen */);
if (U_FAILURE(status)) {
delete testCase;
- return NULL;
+ return nullptr;
}
return testCase;
}
@@ -1655,7 +1655,7 @@ UPerfFunction* CollPerf2Test::TestCppCompareNull()
CppCompare *testCase = new CppCompare(collObj, getData16(status), false /* useLen */);
if (U_FAILURE(status)) {
delete testCase;
- return NULL;
+ return nullptr;
}
return testCase;
}
@@ -1666,7 +1666,7 @@ UPerfFunction* CollPerf2Test::TestCppCompareSimilar()
CppCompare_2 *testCase = new CppCompare_2(collObj, getData16(status), getModData16(status), true /* useLen */);
if (U_FAILURE(status)) {
delete testCase;
- return NULL;
+ return nullptr;
}
return testCase;
}
@@ -1677,7 +1677,7 @@ UPerfFunction* CollPerf2Test::TestCppCompareUTF8()
CppCompareUTF8 *testCase = new CppCompareUTF8(collObj, getData8(status), true /* useLen */);
if (U_FAILURE(status)) {
delete testCase;
- return NULL;
+ return nullptr;
}
return testCase;
}
@@ -1688,7 +1688,7 @@ UPerfFunction* CollPerf2Test::TestCppCompareUTF8Null()
CppCompareUTF8 *testCase = new CppCompareUTF8(collObj, getData8(status), false /* useLen */);
if (U_FAILURE(status)) {
delete testCase;
- return NULL;
+ return nullptr;
}
return testCase;
}
@@ -1699,7 +1699,7 @@ UPerfFunction* CollPerf2Test::TestCppCompareUTF8Similar()
CppCompareUTF8_2 *testCase = new CppCompareUTF8_2(collObj, getData8(status), getModData8(status), true /* useLen */);
if (U_FAILURE(status)) {
delete testCase;
- return NULL;
+ return nullptr;
}
return testCase;
}
@@ -1710,7 +1710,7 @@ UPerfFunction* CollPerf2Test::TestCppGetCollationKey()
CppGetCollationKey *testCase = new CppGetCollationKey(collObj, getData16(status), true /* useLen */);
if (U_FAILURE(status)) {
delete testCase;
- return NULL;
+ return nullptr;
}
return testCase;
}
@@ -1721,7 +1721,7 @@ UPerfFunction* CollPerf2Test::TestCppGetCollationKeyNull()
CppGetCollationKey *testCase = new CppGetCollationKey(collObj, getData16(status), false /* useLen */);
if (U_FAILURE(status)) {
delete testCase;
- return NULL;
+ return nullptr;
}
return testCase;
}
@@ -1731,7 +1731,7 @@ UPerfFunction* CollPerf2Test::TestUniStrSort() {
UPerfFunction *testCase = new UniStrSort(*collObj, coll, getRandomData16(status));
if (U_FAILURE(status)) {
delete testCase;
- return NULL;
+ return nullptr;
}
return testCase;
}
@@ -1741,7 +1741,7 @@ UPerfFunction* CollPerf2Test::TestStringPieceSortCpp() {
UPerfFunction *testCase = new StringPieceSortCpp(*collObj, coll, getRandomData8(status));
if (U_FAILURE(status)) {
delete testCase;
- return NULL;
+ return nullptr;
}
return testCase;
}
@@ -1751,7 +1751,7 @@ UPerfFunction* CollPerf2Test::TestStringPieceSortC() {
UPerfFunction *testCase = new StringPieceSortC(*collObj, coll, getRandomData8(status));
if (U_FAILURE(status)) {
delete testCase;
- return NULL;
+ return nullptr;
}
return testCase;
}
@@ -1761,7 +1761,7 @@ UPerfFunction* CollPerf2Test::TestUniStrBinSearch() {
UPerfFunction *testCase = new UniStrBinSearch(*collObj, coll, getSortedData16(status));
if (U_FAILURE(status)) {
delete testCase;
- return NULL;
+ return nullptr;
}
return testCase;
}
@@ -1771,7 +1771,7 @@ UPerfFunction* CollPerf2Test::TestStringPieceBinSearchCpp() {
UPerfFunction *testCase = new StringPieceBinSearchCpp(*collObj, coll, getSortedData8(status));
if (U_FAILURE(status)) {
delete testCase;
- return NULL;
+ return nullptr;
}
return testCase;
}
@@ -1781,7 +1781,7 @@ UPerfFunction* CollPerf2Test::TestStringPieceBinSearchC() {
UPerfFunction *testCase = new StringPieceBinSearchC(*collObj, coll, getSortedData8(status));
if (U_FAILURE(status)) {
delete testCase;
- return NULL;
+ return nullptr;
}
return testCase;
}
diff --git a/Build/source/libs/icu/icu-src/source/test/perf/convperf/convperf.cpp b/Build/source/libs/icu/icu-src/source/test/perf/convperf/convperf.cpp
index d6790f304c1..5df6f869ec6 100644
--- a/Build/source/libs/icu/icu-src/source/test/perf/convperf/convperf.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/perf/convperf/convperf.cpp
@@ -118,9 +118,9 @@ UPerfFunction* ConverterPerformanceTest::runIndexedTest(int32_t index, UBool exe
default:
name = "";
- return NULL;
+ return nullptr;
}
- return NULL;
+ return nullptr;
}
@@ -128,7 +128,7 @@ UPerfFunction* ConverterPerformanceTest::TestICU_CleanOpenAllConverters() {
UErrorCode status = U_ZERO_ERROR;
UPerfFunction* pf = new ICUOpenAllConvertersFunction(true, status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -137,16 +137,16 @@ UPerfFunction* ConverterPerformanceTest::TestICU_OpenAllConverters() {
UErrorCode status = U_ZERO_ERROR;
UPerfFunction* pf = new ICUOpenAllConvertersFunction(false, status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
UPerfFunction* ConverterPerformanceTest::TestICU_UTF8_FromUnicode(){
UErrorCode status = U_ZERO_ERROR;
- ICUFromUnicodePerfFunction* pf = new ICUFromUnicodePerfFunction("utf-8", (UChar *)utf8_uniSource, UPRV_LENGTHOF(utf8_uniSource), status);
+ ICUFromUnicodePerfFunction* pf = new ICUFromUnicodePerfFunction("utf-8", (char16_t *)utf8_uniSource, UPRV_LENGTHOF(utf8_uniSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -155,7 +155,7 @@ UPerfFunction* ConverterPerformanceTest::TestICU_UTF8_ToUnicode(){
UErrorCode status = U_ZERO_ERROR;
UPerfFunction* pf = new ICUToUnicodePerfFunction("utf-8",(char*)utf8_encSource, UPRV_LENGTHOF(utf8_encSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -165,7 +165,7 @@ UPerfFunction* ConverterPerformanceTest::TestWinIML2_UTF8_FromUnicode(){
UErrorCode status = U_ZERO_ERROR;
UPerfFunction* pf = new WinIMultiLanguage2FromUnicodePerfFunction("utf-8",utf8_uniSource, UPRV_LENGTHOF(utf8_uniSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -174,7 +174,7 @@ UPerfFunction* ConverterPerformanceTest::TestWinIML2_UTF8_ToUnicode(){
UErrorCode status = U_ZERO_ERROR;
UPerfFunction* pf = new WinIMultiLanguage2ToUnicodePerfFunction("utf-8",(char*)utf8_encSource, UPRV_LENGTHOF(utf8_encSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -183,7 +183,7 @@ UPerfFunction* ConverterPerformanceTest::TestWinANSI_UTF8_FromUnicode(){
UErrorCode status = U_ZERO_ERROR;
UPerfFunction* pf = new WinANSIFromUnicodePerfFunction("utf-8",utf8_uniSource, UPRV_LENGTHOF(utf8_uniSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -192,7 +192,7 @@ UPerfFunction* ConverterPerformanceTest::TestWinANSI_UTF8_ToUnicode(){
UErrorCode status = U_ZERO_ERROR;
UPerfFunction* pf = new WinANSIToUnicodePerfFunction("utf-8",(char*)utf8_encSource, UPRV_LENGTHOF(utf8_encSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -201,9 +201,9 @@ UPerfFunction* ConverterPerformanceTest::TestWinANSI_UTF8_ToUnicode(){
UPerfFunction* ConverterPerformanceTest::TestICU_Latin1_FromUnicode(){
UErrorCode status = U_ZERO_ERROR;
- ICUFromUnicodePerfFunction* pf = new ICUFromUnicodePerfFunction("iso-8859-1", (UChar *)latin1_uniSource, UPRV_LENGTHOF(latin1_uniSource), status);
+ ICUFromUnicodePerfFunction* pf = new ICUFromUnicodePerfFunction("iso-8859-1", (char16_t *)latin1_uniSource, UPRV_LENGTHOF(latin1_uniSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -212,7 +212,7 @@ UPerfFunction* ConverterPerformanceTest::TestICU_Latin1_ToUnicode(){
UErrorCode status = U_ZERO_ERROR;
UPerfFunction* pf = new ICUToUnicodePerfFunction("iso-8859-1",(char*)latin1_encSource, UPRV_LENGTHOF(latin1_encSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -222,7 +222,7 @@ UPerfFunction* ConverterPerformanceTest::TestWinIML2_Latin1_FromUnicode(){
UErrorCode status = U_ZERO_ERROR;
UPerfFunction* pf = new WinIMultiLanguage2FromUnicodePerfFunction("iso-8859-1",latin1_uniSource, UPRV_LENGTHOF(latin1_uniSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -231,7 +231,7 @@ UPerfFunction* ConverterPerformanceTest::TestWinIML2_Latin1_ToUnicode(){
UErrorCode status = U_ZERO_ERROR;
UPerfFunction* pf = new WinIMultiLanguage2ToUnicodePerfFunction("iso-8859-1",(char*)latin1_encSource, UPRV_LENGTHOF(latin1_encSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -240,7 +240,7 @@ UPerfFunction* ConverterPerformanceTest::TestWinANSI_Latin1_FromUnicode(){
UErrorCode status = U_ZERO_ERROR;
UPerfFunction* pf = new WinANSIFromUnicodePerfFunction("iso-8859-1",latin1_uniSource, UPRV_LENGTHOF(latin1_uniSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -249,7 +249,7 @@ UPerfFunction* ConverterPerformanceTest::TestWinANSI_Latin1_ToUnicode(){
UErrorCode status = U_ZERO_ERROR;
UPerfFunction* pf = new WinANSIToUnicodePerfFunction("iso-8859-1",(char*)latin1_encSource, UPRV_LENGTHOF(latin1_encSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -258,9 +258,9 @@ UPerfFunction* ConverterPerformanceTest::TestWinANSI_Latin1_ToUnicode(){
UPerfFunction* ConverterPerformanceTest::TestICU_Latin8_FromUnicode(){
UErrorCode status = U_ZERO_ERROR;
- ICUFromUnicodePerfFunction* pf = new ICUFromUnicodePerfFunction("iso-8859-8", (UChar *)latin8_uniSource, UPRV_LENGTHOF(latin8_uniSource), status);
+ ICUFromUnicodePerfFunction* pf = new ICUFromUnicodePerfFunction("iso-8859-8", (char16_t *)latin8_uniSource, UPRV_LENGTHOF(latin8_uniSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -269,7 +269,7 @@ UPerfFunction* ConverterPerformanceTest::TestICU_Latin8_ToUnicode(){
UErrorCode status = U_ZERO_ERROR;
UPerfFunction* pf = new ICUToUnicodePerfFunction("iso-8859-8",(char*)latin8_encSource, UPRV_LENGTHOF(latin8_encSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -279,7 +279,7 @@ UPerfFunction* ConverterPerformanceTest::TestWinIML2_Latin8_FromUnicode(){
UErrorCode status = U_ZERO_ERROR;
UPerfFunction* pf = new WinIMultiLanguage2FromUnicodePerfFunction("iso-8859-8",latin8_uniSource, UPRV_LENGTHOF(latin8_uniSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -288,7 +288,7 @@ UPerfFunction* ConverterPerformanceTest::TestWinIML2_Latin8_ToUnicode(){
UErrorCode status = U_ZERO_ERROR;
UPerfFunction* pf = new WinIMultiLanguage2ToUnicodePerfFunction("iso-8859-8",(char*)latin8_encSource, UPRV_LENGTHOF(latin8_encSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -296,7 +296,7 @@ UPerfFunction* ConverterPerformanceTest::TestWinANSI_Latin8_FromUnicode(){
UErrorCode status = U_ZERO_ERROR;
UPerfFunction* pf = new WinANSIFromUnicodePerfFunction("iso-8859-8",latin8_uniSource, UPRV_LENGTHOF(latin8_uniSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -305,7 +305,7 @@ UPerfFunction* ConverterPerformanceTest::TestWinANSI_Latin8_ToUnicode(){
UErrorCode status = U_ZERO_ERROR;
UPerfFunction* pf = new WinANSIToUnicodePerfFunction("iso-8859-8",(char*)latin8_encSource, UPRV_LENGTHOF(latin8_encSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -315,9 +315,9 @@ UPerfFunction* ConverterPerformanceTest::TestWinANSI_Latin8_ToUnicode(){
UPerfFunction* ConverterPerformanceTest::TestICU_EBCDIC_Arabic_FromUnicode(){
UErrorCode status = U_ZERO_ERROR;
- ICUFromUnicodePerfFunction* pf = new ICUFromUnicodePerfFunction("x-EBCDIC-Arabic", (UChar *)ebcdic_arabic_uniSource, UPRV_LENGTHOF(ebcdic_arabic_uniSource), status);
+ ICUFromUnicodePerfFunction* pf = new ICUFromUnicodePerfFunction("x-EBCDIC-Arabic", (char16_t *)ebcdic_arabic_uniSource, UPRV_LENGTHOF(ebcdic_arabic_uniSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -326,7 +326,7 @@ UPerfFunction* ConverterPerformanceTest::TestICU_EBCDIC_Arabic_ToUnicode(){
UErrorCode status = U_ZERO_ERROR;
UPerfFunction* pf = new ICUToUnicodePerfFunction("x-EBCDIC-Arabic",(char*)ebcdic_arabic_encSource, UPRV_LENGTHOF(ebcdic_arabic_encSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -336,7 +336,7 @@ UPerfFunction* ConverterPerformanceTest::TestWinIML2_EBCDIC_Arabic_FromUnicode()
UErrorCode status = U_ZERO_ERROR;
UPerfFunction* pf = new WinIMultiLanguage2FromUnicodePerfFunction("x-EBCDIC-Arabic",ebcdic_arabic_uniSource, UPRV_LENGTHOF(ebcdic_arabic_uniSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -345,7 +345,7 @@ UPerfFunction* ConverterPerformanceTest::TestWinIML2_EBCDIC_Arabic_ToUnicode(){
UErrorCode status = U_ZERO_ERROR;
UPerfFunction* pf = new WinIMultiLanguage2ToUnicodePerfFunction("x-EBCDIC-Arabic",(char*)ebcdic_arabic_encSource, UPRV_LENGTHOF(ebcdic_arabic_encSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -354,7 +354,7 @@ UPerfFunction* ConverterPerformanceTest::TestWinANSI_EBCDIC_Arabic_FromUnicode()
UErrorCode status = U_ZERO_ERROR;
UPerfFunction* pf = new WinANSIFromUnicodePerfFunction("x-EBCDIC-Arabic",ebcdic_arabic_uniSource, UPRV_LENGTHOF(ebcdic_arabic_uniSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -363,7 +363,7 @@ UPerfFunction* ConverterPerformanceTest::TestWinANSI_EBCDIC_Arabic_ToUnicode(){
UErrorCode status = U_ZERO_ERROR;
UPerfFunction* pf = new WinANSIToUnicodePerfFunction("x-EBCDIC-Arabic",(char*)ebcdic_arabic_encSource, UPRV_LENGTHOF(ebcdic_arabic_encSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -372,9 +372,9 @@ UPerfFunction* ConverterPerformanceTest::TestWinANSI_EBCDIC_Arabic_ToUnicode(){
UPerfFunction* ConverterPerformanceTest::TestICU_SJIS_FromUnicode(){
UErrorCode status = U_ZERO_ERROR;
- ICUFromUnicodePerfFunction* pf = new ICUFromUnicodePerfFunction("sjis", (UChar *)sjis_uniSource, UPRV_LENGTHOF(sjis_uniSource), status);
+ ICUFromUnicodePerfFunction* pf = new ICUFromUnicodePerfFunction("sjis", (char16_t *)sjis_uniSource, UPRV_LENGTHOF(sjis_uniSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -383,7 +383,7 @@ UPerfFunction* ConverterPerformanceTest::TestICU_SJIS_ToUnicode(){
UErrorCode status = U_ZERO_ERROR;
UPerfFunction* pf = new ICUToUnicodePerfFunction("sjis",(char*)sjis_encSource, UPRV_LENGTHOF(sjis_encSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -393,7 +393,7 @@ UPerfFunction* ConverterPerformanceTest::TestWinIML2_SJIS_FromUnicode(){
UErrorCode status = U_ZERO_ERROR;
UPerfFunction* pf = new WinIMultiLanguage2FromUnicodePerfFunction("sjis",sjis_uniSource, UPRV_LENGTHOF(sjis_uniSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -402,7 +402,7 @@ UPerfFunction* ConverterPerformanceTest::TestWinIML2_SJIS_ToUnicode(){
UErrorCode status = U_ZERO_ERROR;
UPerfFunction* pf = new WinIMultiLanguage2ToUnicodePerfFunction("sjis",(char*)sjis_encSource, UPRV_LENGTHOF(sjis_encSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -411,7 +411,7 @@ UPerfFunction* ConverterPerformanceTest::TestWinANSI_SJIS_FromUnicode(){
UErrorCode status = U_ZERO_ERROR;
UPerfFunction* pf = new WinANSIFromUnicodePerfFunction("sjis",sjis_uniSource, UPRV_LENGTHOF(sjis_uniSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -420,7 +420,7 @@ UPerfFunction* ConverterPerformanceTest::TestWinANSI_SJIS_ToUnicode(){
UErrorCode status = U_ZERO_ERROR;
UPerfFunction* pf = new WinANSIToUnicodePerfFunction("sjis",(char*)sjis_encSource, UPRV_LENGTHOF(sjis_encSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -431,9 +431,9 @@ UPerfFunction* ConverterPerformanceTest::TestWinANSI_SJIS_ToUnicode(){
UPerfFunction* ConverterPerformanceTest::TestICU_EUCJP_FromUnicode(){
UErrorCode status = U_ZERO_ERROR;
- ICUFromUnicodePerfFunction* pf = new ICUFromUnicodePerfFunction("euc-jp", (UChar *)eucjp_uniSource, UPRV_LENGTHOF(eucjp_uniSource), status);
+ ICUFromUnicodePerfFunction* pf = new ICUFromUnicodePerfFunction("euc-jp", (char16_t *)eucjp_uniSource, UPRV_LENGTHOF(eucjp_uniSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -442,7 +442,7 @@ UPerfFunction* ConverterPerformanceTest::TestICU_EUCJP_ToUnicode(){
UErrorCode status = U_ZERO_ERROR;
UPerfFunction* pf = new ICUToUnicodePerfFunction("euc-jp",(char*)eucjp_encSource, UPRV_LENGTHOF(eucjp_encSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -452,7 +452,7 @@ UPerfFunction* ConverterPerformanceTest::TestWinIML2_EUCJP_FromUnicode(){
UErrorCode status = U_ZERO_ERROR;
UPerfFunction* pf = new WinIMultiLanguage2FromUnicodePerfFunction("euc-jp",eucjp_uniSource, UPRV_LENGTHOF(eucjp_uniSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -461,7 +461,7 @@ UPerfFunction* ConverterPerformanceTest::TestWinIML2_EUCJP_ToUnicode(){
UErrorCode status = U_ZERO_ERROR;
UPerfFunction* pf = new WinIMultiLanguage2ToUnicodePerfFunction("euc-jp",(char*)eucjp_encSource, UPRV_LENGTHOF(eucjp_encSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -470,7 +470,7 @@ UPerfFunction* ConverterPerformanceTest::TestWinANSI_EUCJP_FromUnicode(){
UErrorCode status = U_ZERO_ERROR;
UPerfFunction* pf = new WinANSIFromUnicodePerfFunction("euc-jp",eucjp_uniSource, UPRV_LENGTHOF(eucjp_uniSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -479,7 +479,7 @@ UPerfFunction* ConverterPerformanceTest::TestWinANSI_EUCJP_ToUnicode(){
UErrorCode status = U_ZERO_ERROR;
UPerfFunction* pf = new WinANSIToUnicodePerfFunction("euc-jp",(char*)eucjp_encSource, UPRV_LENGTHOF(eucjp_encSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -490,9 +490,9 @@ UPerfFunction* ConverterPerformanceTest::TestWinANSI_EUCJP_ToUnicode(){
UPerfFunction* ConverterPerformanceTest::TestICU_GB2312_FromUnicode(){
UErrorCode status = U_ZERO_ERROR;
- ICUFromUnicodePerfFunction* pf = new ICUFromUnicodePerfFunction("gb2312", (UChar *)gb2312_uniSource, UPRV_LENGTHOF(gb2312_uniSource), status);
+ ICUFromUnicodePerfFunction* pf = new ICUFromUnicodePerfFunction("gb2312", (char16_t *)gb2312_uniSource, UPRV_LENGTHOF(gb2312_uniSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -501,7 +501,7 @@ UPerfFunction* ConverterPerformanceTest::TestICU_GB2312_ToUnicode(){
UErrorCode status = U_ZERO_ERROR;
UPerfFunction* pf = new ICUToUnicodePerfFunction("gb2312",(char*)gb2312_encSource, UPRV_LENGTHOF(gb2312_encSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -511,7 +511,7 @@ UPerfFunction* ConverterPerformanceTest::TestWinIML2_GB2312_FromUnicode(){
UErrorCode status = U_ZERO_ERROR;
UPerfFunction* pf = new WinIMultiLanguage2FromUnicodePerfFunction("gb2312",gb2312_uniSource, UPRV_LENGTHOF(gb2312_uniSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -520,7 +520,7 @@ UPerfFunction* ConverterPerformanceTest::TestWinIML2_GB2312_ToUnicode(){
UErrorCode status = U_ZERO_ERROR;
UPerfFunction* pf = new WinIMultiLanguage2ToUnicodePerfFunction("gb2312",(char*)gb2312_encSource, UPRV_LENGTHOF(gb2312_encSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -529,7 +529,7 @@ UPerfFunction* ConverterPerformanceTest::TestWinANSI_GB2312_FromUnicode(){
UErrorCode status = U_ZERO_ERROR;
UPerfFunction* pf = new WinANSIFromUnicodePerfFunction("gb2312",gb2312_uniSource, UPRV_LENGTHOF(gb2312_uniSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -538,7 +538,7 @@ UPerfFunction* ConverterPerformanceTest::TestWinANSI_GB2312_ToUnicode(){
UErrorCode status = U_ZERO_ERROR;
UPerfFunction* pf = new WinANSIToUnicodePerfFunction("gb2312",(char*)gb2312_encSource, UPRV_LENGTHOF(gb2312_encSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -548,9 +548,9 @@ UPerfFunction* ConverterPerformanceTest::TestWinANSI_GB2312_ToUnicode(){
UPerfFunction* ConverterPerformanceTest::TestICU_ISO2022KR_FromUnicode(){
UErrorCode status = U_ZERO_ERROR;
- ICUFromUnicodePerfFunction* pf = new ICUFromUnicodePerfFunction("iso-2022-kr", (UChar *)iso2022kr_uniSource, UPRV_LENGTHOF(iso2022kr_uniSource), status);
+ ICUFromUnicodePerfFunction* pf = new ICUFromUnicodePerfFunction("iso-2022-kr", (char16_t *)iso2022kr_uniSource, UPRV_LENGTHOF(iso2022kr_uniSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -559,7 +559,7 @@ UPerfFunction* ConverterPerformanceTest::TestICU_ISO2022KR_ToUnicode(){
UErrorCode status = U_ZERO_ERROR;
UPerfFunction* pf = new ICUToUnicodePerfFunction("iso-2022-kr",(char*)iso2022kr_encSource, UPRV_LENGTHOF(iso2022kr_encSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -569,7 +569,7 @@ UPerfFunction* ConverterPerformanceTest::TestWinIML2_ISO2022KR_FromUnicode(){
UErrorCode status = U_ZERO_ERROR;
UPerfFunction* pf = new WinIMultiLanguage2FromUnicodePerfFunction("iso-2022-kr",iso2022kr_uniSource, UPRV_LENGTHOF(iso2022kr_uniSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -578,7 +578,7 @@ UPerfFunction* ConverterPerformanceTest::TestWinIML2_ISO2022KR_ToUnicode(){
UErrorCode status = U_ZERO_ERROR;
UPerfFunction* pf = new WinIMultiLanguage2ToUnicodePerfFunction("iso-2022-kr",(char*)iso2022kr_encSource, UPRV_LENGTHOF(iso2022kr_encSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -587,7 +587,7 @@ UPerfFunction* ConverterPerformanceTest::TestWinANSI_ISO2022KR_FromUnicode(){
UErrorCode status = U_ZERO_ERROR;
UPerfFunction* pf = new WinANSIFromUnicodePerfFunction("iso-2022-kr",iso2022kr_uniSource, UPRV_LENGTHOF(iso2022kr_uniSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -596,7 +596,7 @@ UPerfFunction* ConverterPerformanceTest::TestWinANSI_ISO2022KR_ToUnicode(){
UErrorCode status = U_ZERO_ERROR;
UPerfFunction* pf = new WinANSIToUnicodePerfFunction("iso-2022-kr",(char*)iso2022kr_encSource, UPRV_LENGTHOF(iso2022kr_encSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -605,9 +605,9 @@ UPerfFunction* ConverterPerformanceTest::TestWinANSI_ISO2022KR_ToUnicode(){
UPerfFunction* ConverterPerformanceTest::TestICU_ISO2022JP_FromUnicode(){
UErrorCode status = U_ZERO_ERROR;
- ICUFromUnicodePerfFunction* pf = new ICUFromUnicodePerfFunction("iso-2022-jp", (UChar *)iso2022jp_uniSource, UPRV_LENGTHOF(iso2022jp_uniSource), status);
+ ICUFromUnicodePerfFunction* pf = new ICUFromUnicodePerfFunction("iso-2022-jp", (char16_t *)iso2022jp_uniSource, UPRV_LENGTHOF(iso2022jp_uniSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -616,7 +616,7 @@ UPerfFunction* ConverterPerformanceTest::TestICU_ISO2022JP_ToUnicode(){
UErrorCode status = U_ZERO_ERROR;
UPerfFunction* pf = new ICUToUnicodePerfFunction("iso-2022-jp",(char*)iso2022jp_encSource, UPRV_LENGTHOF(iso2022jp_encSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -626,7 +626,7 @@ UPerfFunction* ConverterPerformanceTest::TestWinIML2_ISO2022JP_FromUnicode(){
UErrorCode status = U_ZERO_ERROR;
UPerfFunction* pf = new WinIMultiLanguage2FromUnicodePerfFunction("iso-2022-jp",iso2022jp_uniSource, UPRV_LENGTHOF(iso2022jp_uniSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -635,7 +635,7 @@ UPerfFunction* ConverterPerformanceTest::TestWinIML2_ISO2022JP_ToUnicode(){
UErrorCode status = U_ZERO_ERROR;
UPerfFunction* pf = new WinIMultiLanguage2ToUnicodePerfFunction("iso-2022-jp",(char*)iso2022jp_encSource, UPRV_LENGTHOF(iso2022jp_encSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -644,7 +644,7 @@ UPerfFunction* ConverterPerformanceTest::TestWinANSI_ISO2022JP_FromUnicode(){
UErrorCode status = U_ZERO_ERROR;
UPerfFunction* pf = new WinANSIFromUnicodePerfFunction("iso-2022-jp",iso2022jp_uniSource, UPRV_LENGTHOF(iso2022jp_uniSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
@@ -653,7 +653,7 @@ UPerfFunction* ConverterPerformanceTest::TestWinANSI_ISO2022JP_ToUnicode(){
UErrorCode status = U_ZERO_ERROR;
UPerfFunction* pf = new WinANSIToUnicodePerfFunction("iso-2022-jp",(char*)iso2022jp_encSource, UPRV_LENGTHOF(iso2022jp_encSource), status);
if(U_FAILURE(status)){
- return NULL;
+ return nullptr;
}
return pf;
}
diff --git a/Build/source/libs/icu/icu-src/source/test/perf/convperf/convperf.h b/Build/source/libs/icu/icu-src/source/test/perf/convperf/convperf.h
index c5de6d80031..402288cdf6d 100644
--- a/Build/source/libs/icu/icu-src/source/test/perf/convperf/convperf.h
+++ b/Build/source/libs/icu/icu-src/source/test/perf/convperf/convperf.h
@@ -30,8 +30,8 @@ private:
UConverter* conv;
const char* src;
int32_t srcLen;
- UChar* target;
- UChar* targetLimit;
+ char16_t* target;
+ char16_t* targetLimit;
public:
ICUToUnicodePerfFunction(const char* name, const char* source, int32_t sourceLen, UErrorCode& status){
@@ -39,18 +39,18 @@ public:
src = source;
srcLen = sourceLen;
if(U_FAILURE(status)){
- conv = NULL;
+ conv = nullptr;
return;
}
- target = NULL;
- targetLimit = NULL;
+ target = nullptr;
+ targetLimit = nullptr;
int32_t reqdLen = ucnv_toUChars(conv, target, 0,
source, srcLen, &status);
if(status==U_BUFFER_OVERFLOW_ERROR) {
status=U_ZERO_ERROR;
- target=(UChar*)malloc((reqdLen) * U_SIZEOF_UCHAR*2);
+ target=(char16_t*)malloc((reqdLen) * U_SIZEOF_UCHAR*2);
targetLimit = target + reqdLen;
- if(target == NULL){
+ if(target == nullptr){
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -59,10 +59,10 @@ public:
virtual void call(UErrorCode* status){
const char* mySrc = src;
const char* sourceLimit = src + srcLen;
- UChar* myTarget = target;
- ucnv_toUnicode(conv, &myTarget, targetLimit, &mySrc, sourceLimit, NULL, true, status);
+ char16_t* myTarget = target;
+ ucnv_toUnicode(conv, &myTarget, targetLimit, &mySrc, sourceLimit, nullptr, true, status);
}
- virtual long getOperationsPerIteration(void){
+ virtual long getOperationsPerIteration(){
return srcLen;
}
~ICUToUnicodePerfFunction(){
@@ -73,42 +73,42 @@ public:
class ICUFromUnicodePerfFunction : public UPerfFunction{
private:
UConverter* conv;
- const UChar* src;
+ const char16_t* src;
int32_t srcLen;
char* target;
char* targetLimit;
const char* name;
public:
- ICUFromUnicodePerfFunction(const char* name, const UChar* source, int32_t sourceLen, UErrorCode& status){
+ ICUFromUnicodePerfFunction(const char* name, const char16_t* source, int32_t sourceLen, UErrorCode& status){
conv = ucnv_open(name,&status);
src = source;
srcLen = sourceLen;
if(U_FAILURE(status)){
- conv = NULL;
+ conv = nullptr;
return;
}
- target = NULL;
- targetLimit = NULL;
+ target = nullptr;
+ targetLimit = nullptr;
int32_t reqdLen = ucnv_fromUChars(conv, target, 0,
source, srcLen, &status);
if(status==U_BUFFER_OVERFLOW_ERROR) {
status=U_ZERO_ERROR;
target=(char*)malloc((reqdLen*2));
targetLimit = target + reqdLen;
- if(target == NULL){
+ if(target == nullptr){
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
}
}
virtual void call(UErrorCode* status){
- const UChar* mySrc = src;
- const UChar* sourceLimit = src + srcLen;
+ const char16_t* mySrc = src;
+ const char16_t* sourceLimit = src + srcLen;
char* myTarget = target;
- ucnv_fromUnicode(conv,&myTarget, targetLimit, &mySrc, sourceLimit, NULL, true, status);
+ ucnv_fromUnicode(conv,&myTarget, targetLimit, &mySrc, sourceLimit, nullptr, true, status);
}
- virtual long getOperationsPerIteration(void){
+ virtual long getOperationsPerIteration(){
return srcLen;
}
~ICUFromUnicodePerfFunction(){
@@ -141,7 +141,7 @@ public:
ucnv_close(ucnv_open(convNames[idx], status));
}
}
- virtual long getOperationsPerIteration(void){
+ virtual long getOperationsPerIteration(){
return availableConverters;
}
~ICUOpenAllConvertersFunction(){
@@ -172,12 +172,12 @@ public:
}
LPMULTILANGUAGE2 pMulti;
- CoInitialize(NULL);
+ CoInitialize(nullptr);
/* create instance of converter object*/
CoCreateInstance(
__uuidof(CMultiLanguage),
- NULL,
+ nullptr,
CLSCTX_SERVER,
__uuidof(IMultiLanguage2),
(void**)&pMulti
@@ -196,7 +196,7 @@ public:
virtual void call(UErrorCode* status){
int winSize =MultiByteToWideChar(uiCodePage,CONVERSION_FLAGS,src,srcLen,dest,dstLen);
}
- virtual long getOperationsPerIteration(void){
+ virtual long getOperationsPerIteration(){
return srcLen;
}
};
@@ -227,12 +227,12 @@ public:
}
LPMULTILANGUAGE2 pMulti;
- CoInitialize(NULL);
+ CoInitialize(nullptr);
/* create instance of converter object*/
CoCreateInstance(
__uuidof(CMultiLanguage),
- NULL,
+ nullptr,
CLSCTX_SERVER,
__uuidof(IMultiLanguage2),
(void**)&pMulti
@@ -248,10 +248,10 @@ public:
uiCodePage = (mimeInfo.uiInternetEncoding==0)?mimeInfo.uiCodePage:mimeInfo.uiInternetEncoding;
}
virtual void call(UErrorCode* status){
- BOOL* pUsedDefaultChar =(uiCodePage==CP_UTF8)?NULL:&lpUsedDefaultChar;
- int winSize = WideCharToMultiByte(uiCodePage,CONVERSION_FLAGS,src,srcLen,dest,dstLen,NULL, pUsedDefaultChar);
+ BOOL* pUsedDefaultChar =(uiCodePage==CP_UTF8)?nullptr:&lpUsedDefaultChar;
+ int winSize = WideCharToMultiByte(uiCodePage,CONVERSION_FLAGS,src,srcLen,dest,dstLen,nullptr, pUsedDefaultChar);
}
- virtual long getOperationsPerIteration(void){
+ virtual long getOperationsPerIteration(){
return srcLen;
}
};
@@ -283,12 +283,12 @@ private:
public:
WinIMultiLanguageToUnicodePerfFunction(const char* name,char* source, UINT sourceLen, UErrorCode& status){
- CoInitialize(NULL);
+ CoInitialize(nullptr);
/* create instance of converter object*/
CoCreateInstance(
__uuidof(CMultiLanguage),
- NULL,
+ nullptr,
CLSCTX_SERVER,
__uuidof(IMultiLanguage2),
(void**)&pMulti
@@ -320,7 +320,7 @@ public:
HRESULT err= pConvToUni->DoConversionToUnicode(src,&srcLen,dst, &dstLen);
getErr(err,*status);
}
- virtual long getOperationsPerIteration(void){
+ virtual long getOperationsPerIteration(){
return srcLen;
}
};
@@ -339,12 +339,12 @@ private:
public:
WinIMultiLanguageFromUnicodePerfFunction(const char* name,WCHAR* source, UINT sourceLen, UErrorCode& status){
- CoInitialize(NULL);
+ CoInitialize(nullptr);
/* create instance of converter object*/
CoCreateInstance(
__uuidof(CMultiLanguage),
- NULL,
+ nullptr,
CLSCTX_SERVER,
__uuidof(IMultiLanguage2),
(void**)&pMulti
@@ -377,7 +377,7 @@ public:
HRESULT err= pConvFromUni->DoConversionFromUnicode(src,&srcLen,dst, &dstLen);
getErr(err,*status);
}
- virtual long getOperationsPerIteration(void){
+ virtual long getOperationsPerIteration(){
return srcLen;
}
};
@@ -395,12 +395,12 @@ private:
public:
WinIMultiLanguage2ToUnicodePerfFunction(const char* name,char* source, UINT sourceLen, UErrorCode& status){
- CoInitialize(NULL);
+ CoInitialize(nullptr);
/* create instance of converter object*/
CoCreateInstance(
__uuidof(CMultiLanguage),
- NULL,
+ nullptr,
CLSCTX_SERVER,
__uuidof(IMultiLanguage2),
(void**)&pMulti
@@ -429,7 +429,7 @@ public:
HRESULT err= pMulti->ConvertStringToUnicode(&dwMode,dwEnc,(char*)src,&srcLen,dst, &dstLen);
getErr(err,*status);
}
- virtual long getOperationsPerIteration(void){
+ virtual long getOperationsPerIteration(){
return srcLen;
}
};
@@ -449,12 +449,12 @@ private:
public:
WinIMultiLanguage2FromUnicodePerfFunction(const char* name,WCHAR* source, UINT sourceLen, UErrorCode& status){
- CoInitialize(NULL);
+ CoInitialize(nullptr);
/* create instance of converter object*/
CoCreateInstance(
__uuidof(CMultiLanguage),
- NULL,
+ nullptr,
CLSCTX_SERVER,
__uuidof(IMultiLanguage2),
(void**)&pMulti
@@ -485,7 +485,7 @@ public:
HRESULT err= pMulti->ConvertStringFromUnicode(&dwMode,dwEnc,src,&srcLen,dst, &dstLen);
getErr(err,*status);
}
- virtual long getOperationsPerIteration(void){
+ virtual long getOperationsPerIteration(){
return srcLen;
}
};
@@ -496,7 +496,7 @@ public:
ConverterPerformanceTest(int32_t argc, const char* argv[], UErrorCode& status);
~ConverterPerformanceTest();
- virtual UPerfFunction* runIndexedTest(int32_t index, UBool exec,const char* &name, char* par = NULL);
+ virtual UPerfFunction* runIndexedTest(int32_t index, UBool exec,const char* &name, char* par = nullptr);
UPerfFunction* TestICU_CleanOpenAllConverters();
UPerfFunction* TestICU_OpenAllConverters();
diff --git a/Build/source/libs/icu/icu-src/source/test/perf/dicttrieperf/dicttrieperf.cpp b/Build/source/libs/icu/icu-src/source/test/perf/dicttrieperf/dicttrieperf.cpp
index a38885c6bc3..8fdfa76fc20 100644
--- a/Build/source/libs/icu/icu-src/source/test/perf/dicttrieperf/dicttrieperf.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/perf/dicttrieperf/dicttrieperf.cpp
@@ -47,7 +47,7 @@
class DictionaryTriePerfTest : public UPerfTest {
public:
DictionaryTriePerfTest(int32_t argc, const char *argv[], UErrorCode &status)
- : UPerfTest(argc, argv, NULL, 0, "", status), numTextLines(0) {
+ : UPerfTest(argc, argv, nullptr, 0, "", status), numTextLines(0) {
if(hasFile()) {
getLines(status);
for(int32_t i=0; i<numLines; ++i) {
@@ -56,7 +56,7 @@ public:
++numTextLines;
// Remove trailing CR LF.
int32_t len=lines[i].len;
- UChar c;
+ char16_t c;
while(len>0 && ((c=lines[i].name[len-1])==0xa || c==0xd)) {
--len;
}
@@ -66,11 +66,11 @@ public:
}
}
- virtual UPerfFunction *runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=NULL);
+ virtual UPerfFunction *runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=nullptr);
const char *getSourceDir() const { return sourceDir; }
- UBool hasFile() const { return ucharBuf!=NULL; }
+ UBool hasFile() const { return ucharBuf!=nullptr; }
const ULine *getCachedLines() const { return lines; }
int32_t getNumLines() const { return numLines; }
int32_t numTextLines; // excluding comment lines
@@ -352,7 +352,7 @@ ucharsTrieMatches(UCharsTrie &trie,
UChar32 c=utext_next32(text);
// Notes:
// a) CompactTrieDictionary::matches() does not check for U_SENTINEL.
- // b) It also ignores non-BMP code points by casting to UChar!
+ // b) It also ignores non-BMP code points by casting to char16_t!
if(c<0) {
return 0;
}
@@ -380,7 +380,7 @@ ucharsTrieMatches(UCharsTrie &trie,
UChar32 c=utext_next32(text);
// Notes:
// a) CompactTrieDictionary::matches() does not check for U_SENTINEL.
- // b) It also ignores non-BMP code points by casting to UChar!
+ // b) It also ignores non-BMP code points by casting to char16_t!
if(c<0) {
break;
}
@@ -406,7 +406,7 @@ ucharsTrieMatches(UCharsTrie &trie,
class UCharsTrieDictLookup : public DictLookup {
public:
UCharsTrieDictLookup(const DictionaryTriePerfTest &perfTest)
- : DictLookup(perfTest), trie(NULL) {
+ : DictLookup(perfTest), trie(nullptr) {
IcuToolErrorCode errorCode("UCharsTrieDictLookup()");
builder=new UCharsTrieBuilder(errorCode);
const ULine *lines=perf.getCachedLines();
@@ -490,10 +490,10 @@ static inline int32_t thaiCharToByte(UChar32 c) {
}
}
-static UBool thaiWordToBytes(const UChar *s, int32_t length,
+static UBool thaiWordToBytes(const char16_t *s, int32_t length,
CharString &str, UErrorCode &errorCode) {
for(int32_t i=0; i<length; ++i) {
- UChar c=s[i];
+ char16_t c=s[i];
int32_t b=thaiCharToByte(c);
if(b>=0) {
str.append((char)b, errorCode);
@@ -508,7 +508,7 @@ static UBool thaiWordToBytes(const UChar *s, int32_t length,
class BytesTrieDictLookup : public DictLookup {
public:
BytesTrieDictLookup(const DictionaryTriePerfTest &perfTest)
- : DictLookup(perfTest), trie(NULL), noDict(false) {
+ : DictLookup(perfTest), trie(nullptr), noDict(false) {
IcuToolErrorCode errorCode("BytesTrieDictLookup()");
builder=new BytesTrieBuilder(errorCode);
CharString str;
@@ -621,7 +621,7 @@ public:
const ULine *lines=perf.getCachedLines();
int32_t numLines=perf.getNumLines();
for(int32_t i=0; i<numLines; ++i) {
- const UChar *line=lines[i].name;
+ const char16_t *line=lines[i].name;
// Skip comment lines (start with a character below 'A').
if(line[0]<0x41) {
continue;
@@ -703,7 +703,7 @@ UPerfFunction *DictionaryTriePerfTest::runIndexedTest(int32_t index, UBool exec,
break;
}
}
- return NULL;
+ return nullptr;
}
int main(int argc, const char *argv[]) {
diff --git a/Build/source/libs/icu/icu-src/source/test/perf/howExpensiveIs/howExpensiveIs.cpp b/Build/source/libs/icu/icu-src/source/test/perf/howExpensiveIs/howExpensiveIs.cpp
index 7fe13cbeeb6..61178fa2b95 100644
--- a/Build/source/libs/icu/icu-src/source/test/perf/howExpensiveIs/howExpensiveIs.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/perf/howExpensiveIs/howExpensiveIs.cpp
@@ -28,7 +28,7 @@ static void usage(const char *prog) {
}
#endif
-void runTests(void);
+void runTests();
#ifndef ITERATIONS
#define ITERATIONS 5
@@ -38,17 +38,17 @@ void runTests(void);
#define TEST_LOCALE "en_US"
#endif
-FILE *out = NULL;
+FILE *out = nullptr;
UErrorCode setupStatus = U_ZERO_ERROR;
-const char *outName = NULL;
+const char *outName = nullptr;
int listmode = 0;
-const char *testName = NULL;
-const char *progname = NULL;
+const char *testName = nullptr;
+const char *progname = nullptr;
int errflg = 0;
int testhit = 0;
int testMatch(const char *aName) {
- if(testName==NULL) return 1;
+ if(testName==nullptr) return 1;
int len = strlen(testName);
if(testName[len-1]=='*') {
return strncmp(testName,aName,len-1);
@@ -101,16 +101,16 @@ int main(int argc, char * const * argv){
}
#endif
- if(listmode && outName != NULL ) {
+ if(listmode && outName != nullptr ) {
fprintf(stderr, "Warning: no output when list mode\n");
- outName=NULL;
+ outName=nullptr;
}
- if(outName != NULL) {
+ if(outName != nullptr) {
out=fopen(outName,"w");
- if(out==NULL) {
+ if(out==nullptr) {
fprintf(stderr,"Err: can't open %s for writing.\n", outName);
return 1;
} else {
@@ -123,7 +123,7 @@ int main(int argc, char * const * argv){
fprintf(stderr, "# (no output)\n");
}
- if(listmode && testName!=NULL) {
+ if(listmode && testName!=nullptr) {
fprintf(stderr, "ERR: no -l mode when specific test with -t\n");
usage(progname);
return 1;
@@ -133,7 +133,7 @@ int main(int argc, char * const * argv){
runTests();
- if(out!=NULL) {
+ if(out!=nullptr) {
#ifndef SKIP_INFO
udbg_writeIcuInfo(out);
#endif
@@ -197,7 +197,7 @@ public:
void runTestOn(HowExpensiveTest &t) {
if(U_FAILURE(setupStatus)) return; // silently
const char *tn = t.getName();
- if(testName!=NULL && testMatch(tn)) return; // skipped.
+ if(testName!=nullptr && testMatch(tn)) return; // skipped.
if(listmode) {
fprintf(stderr, "%s:%d:\t%s\n", t.fFile, t.fLine, t.getName());
testhit++;
@@ -206,7 +206,7 @@ void runTestOn(HowExpensiveTest &t) {
fprintf(stderr, "%s:%d: Running: %s\n", t.fFile, t.fLine, t.getName());
testhit++;
}
- double sieveTime = uprv_getSieveTime(NULL);
+ double sieveTime = uprv_getSieveTime(nullptr);
double st;
double me;
@@ -224,7 +224,7 @@ void runTestOn(HowExpensiveTest &t) {
printf("%s\t%.9f\t%.9f +/- %.9f, @ %d iter\n", t.getName(),stn,st,me,iter);
- if(out!=NULL) {
+ if(out!=nullptr) {
fprintf(out, " <test name=\"%s\" standardizedTime=\"%f\" realDuration=\"%f\" marginOfError=\"%f\" iterations=\"%d\" />\n",
tn,stn,st,me,iter);
fflush(out);
@@ -239,7 +239,7 @@ public:
SieveTest():HowExpensiveTest("SieveTest",__FILE__,__LINE__){}
virtual int32_t run(){return 0;} // dummy
int32_t runTest(double *subTime) {
- *subTime = uprv_getSieveTime(NULL);
+ *subTime = uprv_getSieveTime(nullptr);
return U_LOTS_OF_TIMES;
}
virtual int32_t runTests(double *subTime, double *marginOfError) {
@@ -265,7 +265,7 @@ private:
UNumberFormat *fFmt;
UnicodeString fPat;
UnicodeString fString;
- const UChar *fStr;
+ const char16_t *fStr;
int32_t fLen;
const char *fFile;
int fLine;
@@ -305,7 +305,7 @@ public:
void warmup() {
fFmt = initFmt();
if(U_SUCCESS(setupStatus)) {
- double trial = unum_parseDouble(fFmt,fStr,fLen, NULL, &setupStatus);
+ double trial = unum_parseDouble(fFmt,fStr,fLen, nullptr, &setupStatus);
if(U_SUCCESS(setupStatus) && trial!=fExpect) {
setupStatus = U_INTERNAL_PROGRAM_ERROR;
printf("%s:%d: warmup() %s got %.8f expected %.8f\n",
@@ -317,7 +317,7 @@ public:
double trial=0.0;
int i;
for(i=0;i<U_LOTS_OF_TIMES;i++){
- trial = unum_parse(fFmt,fStr,fLen, NULL, &setupStatus);
+ trial = unum_parse(fFmt,fStr,fLen, nullptr, &setupStatus);
}
return i;
}
@@ -393,7 +393,7 @@ private:
UNumberFormat *fFmt;
UnicodeString fPat;
UnicodeString fString;
- const UChar *fStr;
+ const char16_t *fStr;
int32_t fLen;
const char *fFile;
int fLine;
@@ -432,15 +432,15 @@ public:
}
void warmup() {
fFmt = initFmt();
- UChar buf[100];
+ char16_t buf[100];
if(U_SUCCESS(setupStatus)) {
- int32_t trial = unum_formatDouble(fFmt,fExpect, buf, 100, NULL, &setupStatus);
+ int32_t trial = unum_formatDouble(fFmt,fExpect, buf, 100, nullptr, &setupStatus);
if(!U_SUCCESS(setupStatus)
|| trial!=fLen
||trial<=0
|| u_strncmp(fStr,buf,trial) ) {
char strBuf[200];
- u_strToUTF8(strBuf,200,NULL,buf,trial+1,&setupStatus);
+ u_strToUTF8(strBuf,200,nullptr,buf,trial+1,&setupStatus);
printf("%s:%d: warmup() %s got %s expected %s, err %s\n",
fFile,fLine,getName(),strBuf,fCStr, u_errorName(setupStatus));
setupStatus = U_INTERNAL_PROGRAM_ERROR;
@@ -450,10 +450,10 @@ public:
int32_t run() {
int32_t trial;
int i;
- UChar buf[100];
+ char16_t buf[100];
if(U_SUCCESS(setupStatus)) {
for(i=0;i<U_LOTS_OF_TIMES;i++){
- trial = unum_formatDouble(fFmt,fExpect, buf, 100, NULL, &setupStatus);
+ trial = unum_formatDouble(fFmt,fExpect, buf, 100, nullptr, &setupStatus);
}
}
return i;
@@ -478,7 +478,7 @@ private:
UNumberFormat *fFmt;
UnicodeString fPat;
UnicodeString fString;
- const UChar *fStr;
+ const char16_t *fStr;
int32_t fLen;
const char *fFile;
int fLine;
@@ -499,8 +499,8 @@ protected:
return unum_open(UNUM_PATTERN_DECIMAL, fPat.getTerminatedBuffer(), -1, TEST_LOCALE, 0, &setupStatus);
case kApplyPattern:
{
- UNumberFormat *fmt = unum_open(UNUM_DECIMAL, NULL, -1, TEST_LOCALE, 0, &setupStatus);
- unum_applyPattern(fmt, false, fPat.getTerminatedBuffer(), -1, NULL, &setupStatus);
+ UNumberFormat *fmt = unum_open(UNUM_DECIMAL, nullptr, -1, TEST_LOCALE, 0, &setupStatus);
+ unum_applyPattern(fmt, false, fPat.getTerminatedBuffer(), -1, nullptr, &setupStatus);
return fmt;
}
case kGroupOff:
@@ -511,14 +511,14 @@ protected:
}
case kApplyGroupOff:
{
- UNumberFormat *fmt = unum_open(UNUM_DECIMAL, NULL, -1, TEST_LOCALE, 0, &setupStatus);
- unum_applyPattern(fmt, false, fPat.getTerminatedBuffer(), -1, NULL, &setupStatus);
+ UNumberFormat *fmt = unum_open(UNUM_DECIMAL, nullptr, -1, TEST_LOCALE, 0, &setupStatus);
+ unum_applyPattern(fmt, false, fPat.getTerminatedBuffer(), -1, nullptr, &setupStatus);
unum_setAttribute(fmt, UNUM_GROUPING_USED, UNUM_NO);
return fmt;
}
default:
case kDefault:
- return unum_open(UNUM_DEFAULT, NULL, -1, TEST_LOCALE, 0, &setupStatus);
+ return unum_open(UNUM_DEFAULT, nullptr, -1, TEST_LOCALE, 0, &setupStatus);
}
}
virtual const char *getClassName() {
@@ -556,15 +556,15 @@ public:
}
void warmup() {
fFmt = initFmt();
- UChar buf[100];
+ char16_t buf[100];
if(U_SUCCESS(setupStatus)) {
- int32_t trial = unum_formatInt64(fFmt,fExpect, buf, 100, NULL, &setupStatus);
+ int32_t trial = unum_formatInt64(fFmt,fExpect, buf, 100, nullptr, &setupStatus);
if(!U_SUCCESS(setupStatus)
|| trial!=fLen
||trial<=0
|| u_strncmp(fStr,buf,trial) ) {
char strBuf[200];
- u_strToUTF8(strBuf,200,NULL,buf,trial+1,&setupStatus);
+ u_strToUTF8(strBuf,200,nullptr,buf,trial+1,&setupStatus);
printf("%s:%d: warmup() %s got %s (len %d) expected %s (len %d), err %s\n",
fFile,fLine,getName(),strBuf,trial,fCStr,fLen, u_errorName(setupStatus));
setupStatus = U_INTERNAL_PROGRAM_ERROR;
@@ -574,10 +574,10 @@ public:
int32_t run() {
int32_t trial;
int i;
- UChar buf[100];
+ char16_t buf[100];
if(U_SUCCESS(setupStatus)) {
for(i=0;i<U_LOTS_OF_TIMES;i++){
- trial = unum_formatInt64(fFmt,fExpect, buf, 100, NULL, &setupStatus);
+ trial = unum_formatInt64(fFmt,fExpect, buf, 100, nullptr, &setupStatus);
}
}
return i;
@@ -605,7 +605,7 @@ private:
UNumberFormat *fFmt;
UnicodeString fPat;
UnicodeString fString;
- const UChar *fStr;
+ const char16_t *fStr;
int32_t fLen;
const char *fFile;
int fLine;
@@ -650,12 +650,12 @@ public:
UnicodeString buf;
if(U_SUCCESS(setupStatus)) {
buf.remove();
- ((const DecimalFormat*)fFmt)->format(fExpect, buf, NULL, setupStatus);
+ ((const DecimalFormat*)fFmt)->format(fExpect, buf, nullptr, setupStatus);
if(!U_SUCCESS(setupStatus)
|| fString!=buf
) {
char strBuf[200];
- u_strToUTF8(strBuf,200,NULL,buf.getTerminatedBuffer(),buf.length()+1,&setupStatus);
+ u_strToUTF8(strBuf,200,nullptr,buf.getTerminatedBuffer(),buf.length()+1,&setupStatus);
printf("%s:%d: warmup() %s got %s (len %d) expected %s (len %d), err %s\n",
fFile,fLine,getName(),strBuf,buf.length(),fCStr,fLen, u_errorName(setupStatus));
setupStatus = U_INTERNAL_PROGRAM_ERROR;
@@ -672,7 +672,7 @@ public:
if(U_SUCCESS(setupStatus)) {
for(i=0;i<U_LOTS_OF_TIMES;i++){
buf.remove();
- ((const DecimalFormat*)fFmt)->format(fExpect, buf, NULL, setupStatus);
+ ((const DecimalFormat*)fFmt)->format(fExpect, buf, nullptr, setupStatus);
}
}
return i;
@@ -683,38 +683,38 @@ public:
#define DO_NumFmtStringPieceTest(p,n,x) { NumFmtStringPieceTest t(p,n,x,__FILE__,__LINE__); runTestOn(t); }
// TODO: move, scope.
-static UChar pattern[] = { 0x23 }; // '#'
-static UChar strdot[] = { '2', '.', '0', 0 };
-static UChar strspc[] = { '2', ' ', 0 };
-static UChar strgrp[] = {'2',',','2','2','2', 0 };
-static UChar strbeng[] = {0x09E8,0x09E8,0x09E8,0x09E8, 0 };
+static char16_t pattern[] = { 0x23 }; // '#'
+static char16_t strdot[] = { '2', '.', '0', 0 };
+static char16_t strspc[] = { '2', ' ', 0 };
+static char16_t strgrp[] = {'2',',','2','2','2', 0 };
+static char16_t strbeng[] = {0x09E8,0x09E8,0x09E8,0x09E8, 0 };
UNumberFormat *NumParseTest_fmt;
// TODO: de-uglify.
-QuickTest(NumParseTest,{ static UChar pattern[] = { 0x23 }; NumParseTest_fmt = unum_open(UNUM_PATTERN_DECIMAL, pattern, 1, TEST_LOCALE, 0, &setupStatus); },{ int32_t i; static UChar str[] = { 0x31 };double val; for(i=0;i<U_LOTS_OF_TIMES;i++) { val=unum_parse(NumParseTest_fmt,str,1,NULL,&setupStatus); } return i; },{unum_close(NumParseTest_fmt);})
+QuickTest(NumParseTest,{ static char16_t pattern[] = { 0x23 }; NumParseTest_fmt = unum_open(UNUM_PATTERN_DECIMAL, pattern, 1, TEST_LOCALE, 0, &setupStatus); },{ int32_t i; static char16_t str[] = { 0x31 };double val; for(i=0;i<U_LOTS_OF_TIMES;i++) { val=unum_parse(NumParseTest_fmt,str,1,nullptr,&setupStatus); } return i; },{unum_close(NumParseTest_fmt);})
-QuickTest(NumParseTestdot,{ static UChar pattern[] = { 0x23 }; NumParseTest_fmt = unum_open(UNUM_PATTERN_DECIMAL, pattern, 1, TEST_LOCALE, 0, &setupStatus); },{ int32_t i; double val; for(i=0;i<U_LOTS_OF_TIMES;i++) { val=unum_parse(NumParseTest_fmt,strdot,1,NULL,&setupStatus); } return i; },{unum_close(NumParseTest_fmt);})
-QuickTest(NumParseTestspc,{ static UChar pattern[] = { 0x23 }; NumParseTest_fmt = unum_open(UNUM_PATTERN_DECIMAL, pattern, 1, TEST_LOCALE, 0, &setupStatus); },{ int32_t i; double val; for(i=0;i<U_LOTS_OF_TIMES;i++) { val=unum_parse(NumParseTest_fmt,strspc,1,NULL,&setupStatus); } return i; },{unum_close(NumParseTest_fmt);})
-QuickTest(NumParseTestgrp,{ static UChar pattern[] = { 0x23 }; NumParseTest_fmt = unum_open(UNUM_PATTERN_DECIMAL, pattern, 1, TEST_LOCALE, 0, &setupStatus); },{ int32_t i; double val; for(i=0;i<U_LOTS_OF_TIMES;i++) { val=unum_parse(NumParseTest_fmt,strgrp,-1,NULL,&setupStatus); } return i; },{unum_close(NumParseTest_fmt);})
+QuickTest(NumParseTestdot,{ static char16_t pattern[] = { 0x23 }; NumParseTest_fmt = unum_open(UNUM_PATTERN_DECIMAL, pattern, 1, TEST_LOCALE, 0, &setupStatus); },{ int32_t i; double val; for(i=0;i<U_LOTS_OF_TIMES;i++) { val=unum_parse(NumParseTest_fmt,strdot,1,nullptr,&setupStatus); } return i; },{unum_close(NumParseTest_fmt);})
+QuickTest(NumParseTestspc,{ static char16_t pattern[] = { 0x23 }; NumParseTest_fmt = unum_open(UNUM_PATTERN_DECIMAL, pattern, 1, TEST_LOCALE, 0, &setupStatus); },{ int32_t i; double val; for(i=0;i<U_LOTS_OF_TIMES;i++) { val=unum_parse(NumParseTest_fmt,strspc,1,nullptr,&setupStatus); } return i; },{unum_close(NumParseTest_fmt);})
+QuickTest(NumParseTestgrp,{ static char16_t pattern[] = { 0x23 }; NumParseTest_fmt = unum_open(UNUM_PATTERN_DECIMAL, pattern, 1, TEST_LOCALE, 0, &setupStatus); },{ int32_t i; double val; for(i=0;i<U_LOTS_OF_TIMES;i++) { val=unum_parse(NumParseTest_fmt,strgrp,-1,nullptr,&setupStatus); } return i; },{unum_close(NumParseTest_fmt);})
-QuickTest(NumParseTestbeng,{ static UChar pattern[] = { 0x23 }; NumParseTest_fmt = unum_open(UNUM_PATTERN_DECIMAL, pattern, 1, TEST_LOCALE, 0, &setupStatus); },{ int32_t i; double val; for(i=0;i<U_LOTS_OF_TIMES;i++) { val=unum_parse(NumParseTest_fmt,strbeng,-1,NULL,&setupStatus); } return i; },{unum_close(NumParseTest_fmt);})
+QuickTest(NumParseTestbeng,{ static char16_t pattern[] = { 0x23 }; NumParseTest_fmt = unum_open(UNUM_PATTERN_DECIMAL, pattern, 1, TEST_LOCALE, 0, &setupStatus); },{ int32_t i; double val; for(i=0;i<U_LOTS_OF_TIMES;i++) { val=unum_parse(NumParseTest_fmt,strbeng,-1,nullptr,&setupStatus); } return i; },{unum_close(NumParseTest_fmt);})
-UDateFormat *DateFormatTest_fmt = NULL;
+UDateFormat *DateFormatTest_fmt = nullptr;
UDate sometime = 100000000.0;
-UChar onekbuf[1024];
+char16_t onekbuf[1024];
const int32_t onekbuf_len = UPRV_LENGTHOF(onekbuf);
QuickTest(DateFormatTestBasic, \
{ \
- DateFormatTest_fmt = udat_open(UDAT_DEFAULT, UDAT_DEFAULT, NULL, NULL, -1, NULL, -1, &setupStatus); \
+ DateFormatTest_fmt = udat_open(UDAT_DEFAULT, UDAT_DEFAULT, nullptr, nullptr, -1, nullptr, -1, &setupStatus); \
}, \
{ \
int i; \
for(i=0;i<U_LOTS_OF_TIMES;i++) \
{ \
- udat_format(DateFormatTest_fmt, sometime, onekbuf, onekbuf_len, NULL, &setupStatus); \
+ udat_format(DateFormatTest_fmt, sometime, onekbuf, onekbuf_len, nullptr, &setupStatus); \
} \
return i; \
}, \
@@ -729,17 +729,17 @@ QuickTest(NullTest,{},{int j=U_LOTS_OF_TIMES;while(--j);return U_LOTS_OF_TIMES;}
#if 0
#include <time.h>
-QuickTest(RandomTest,{},{timespec ts; ts.tv_sec=rand()%4; int j=U_LOTS_OF_TIMES;while(--j) { ts.tv_nsec=100000+(rand()%10000)*1000000; nanosleep(&ts,NULL); return j;} return U_LOTS_OF_TIMES;},{})
+QuickTest(RandomTest,{},{timespec ts; ts.tv_sec=rand()%4; int j=U_LOTS_OF_TIMES;while(--j) { ts.tv_nsec=100000+(rand()%10000)*1000000; nanosleep(&ts,nullptr); return j;} return U_LOTS_OF_TIMES;},{})
#endif
OpenCloseTest(pattern,unum,open,{},(UNUM_PATTERN_DECIMAL,pattern,1,TEST_LOCALE,0,&setupStatus),{})
-OpenCloseTest(default,unum,open,{},(UNUM_DEFAULT,NULL,-1,TEST_LOCALE,0,&setupStatus),{})
+OpenCloseTest(default,unum,open,{},(UNUM_DEFAULT,nullptr,-1,TEST_LOCALE,0,&setupStatus),{})
#if !UCONFIG_NO_CONVERSION
#include "unicode/ucnv.h"
OpenCloseTest(gb18030,ucnv,open,{},("gb18030",&setupStatus),{})
#endif
#include "unicode/ures.h"
-OpenCloseTest(root,ures,open,{},(NULL,"root",&setupStatus),{})
+OpenCloseTest(root,ures,open,{},(nullptr,"root",&setupStatus),{})
void runTests() {
{
diff --git a/Build/source/libs/icu/icu-src/source/test/perf/howExpensiveIs/sieve.cpp b/Build/source/libs/icu/icu-src/source/test/perf/howExpensiveIs/sieve.cpp
index 331f946eecb..c82fa9cafef 100644
--- a/Build/source/libs/icu/icu-src/source/test/perf/howExpensiveIs/sieve.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/perf/howExpensiveIs/sieve.cpp
@@ -210,7 +210,7 @@ U_CAPI double uprv_getSieveTime(double *marginOfError) {
meanSieveTime = uprv_getMeanTime(times, &samples,&meanSieveME);
calcSieveTime=true;
}
- if(marginOfError!=NULL) {
+ if(marginOfError!=nullptr) {
*marginOfError = meanSieveME;
}
return meanSieveTime;
diff --git a/Build/source/libs/icu/icu-src/source/test/perf/leperf/FontObject.cpp b/Build/source/libs/icu/icu-src/source/test/perf/leperf/FontObject.cpp
index 96b8773e3b4..0b5d0a11c4b 100644
--- a/Build/source/libs/icu/icu-src/source/test/perf/leperf/FontObject.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/perf/leperf/FontObject.cpp
@@ -18,14 +18,14 @@
#include "LESwaps.h"
FontObject::FontObject(char *fileName)
- : directory(NULL), numTables(0), searchRange(0),entrySelector(0),
- cmapTable(NULL), cmSegCount(0), cmSearchRange(0), cmEntrySelector(0),
- cmEndCodes(NULL), cmStartCodes(NULL), cmIdDelta(0), cmIdRangeOffset(0),
- headTable(NULL), hmtxTable(NULL), numGlyphs(0), numOfLongHorMetrics(0), file(NULL)
+ : directory(nullptr), numTables(0), searchRange(0),entrySelector(0),
+ cmapTable(nullptr), cmSegCount(0), cmSearchRange(0), cmEntrySelector(0),
+ cmEndCodes(nullptr), cmStartCodes(nullptr), cmIdDelta(0), cmIdRangeOffset(0),
+ headTable(nullptr), hmtxTable(nullptr), numGlyphs(0), numOfLongHorMetrics(0), file(nullptr)
{
file = fopen(fileName, "rb");
- if (file == NULL) {
+ if (file == nullptr) {
printf("?? Couldn't open %s", fileName);
return;
}
@@ -84,16 +84,16 @@ DirectoryEntry *FontObject::findTable(LETag tag)
return &directory->tableDirectory[table];
}
- return NULL;
+ return nullptr;
}
void *FontObject::readTable(LETag tag, le_uint32 *length)
{
DirectoryEntry *entry = findTable(tag);
- if (entry == NULL) {
+ if (entry == nullptr) {
*length = 0;
- return NULL;
+ return nullptr;
}
*length = SWAPL(entry->length);
@@ -110,13 +110,13 @@ CMAPEncodingSubtable *FontObject::findCMAP(le_uint16 platformID, le_uint16 platf
{
LETag cmapTag = 0x636D6170; // 'cmap'
- if (cmapTable == NULL) {
+ if (cmapTable == nullptr) {
le_uint32 length;
cmapTable = (CMAPTable *) readTable(cmapTag, &length);
}
- if (cmapTable != NULL) {
+ if (cmapTable != nullptr) {
le_uint16 i;
le_uint16 nSubtables = SWAPW(cmapTable->numberSubtables);
@@ -131,7 +131,7 @@ CMAPEncodingSubtable *FontObject::findCMAP(le_uint16 platformID, le_uint16 platf
}
}
- return NULL;
+ return nullptr;
}
void FontObject::initUnicodeCMAP()
@@ -200,7 +200,7 @@ LEGlyphID FontObject::unicodeToGlyph(LEUnicode32 unicode32)
le_uint16 FontObject::getUnitsPerEM()
{
- if (headTable == NULL) {
+ if (headTable == nullptr) {
LETag headTag = 0x68656164; // 'head'
le_uint32 length;
@@ -212,7 +212,7 @@ le_uint16 FontObject::getUnitsPerEM()
le_uint16 FontObject::getGlyphAdvance(LEGlyphID glyph)
{
- if (hmtxTable == NULL) {
+ if (hmtxTable == nullptr) {
LETag maxpTag = 0x6D617870; // 'maxp'
LETag hheaTag = 0x68686561; // 'hhea'
LETag hmtxTag = 0x686D7478; // 'hmtx'
diff --git a/Build/source/libs/icu/icu-src/source/test/perf/leperf/FontTableCache.cpp b/Build/source/libs/icu/icu-src/source/test/perf/leperf/FontTableCache.cpp
index a687068b027..4bd5b81f369 100644
--- a/Build/source/libs/icu/icu-src/source/test/perf/leperf/FontTableCache.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/perf/leperf/FontTableCache.cpp
@@ -29,14 +29,14 @@ FontTableCache::FontTableCache()
{
fTableCache = LE_NEW_ARRAY(FontTableCacheEntry, fTableCacheSize);
- if (fTableCache == NULL) {
+ if (fTableCache == nullptr) {
fTableCacheSize = 0;
return;
}
for (int i = 0; i < fTableCacheSize; i += 1) {
fTableCache[i].tag = 0;
- fTableCache[i].table = NULL;
+ fTableCache[i].table = nullptr;
fTableCache[i].length = 0;
}
}
@@ -47,7 +47,7 @@ FontTableCache::~FontTableCache()
LE_DELETE_ARRAY(fTableCache[i].table);
fTableCache[i].tag = 0;
- fTableCache[i].table = NULL;
+ fTableCache[i].table = nullptr;
fTableCache[i].length = 0;
}
@@ -86,7 +86,7 @@ void FontTableCache::add(LETag tableTag, const void *table, size_t length)
for (le_int32 i = fTableCacheSize; i < newSize; i += 1) {
fTableCache[i].tag = 0;
- fTableCache[i].table = NULL;
+ fTableCache[i].table = nullptr;
fTableCache[i].length = 0;
}
diff --git a/Build/source/libs/icu/icu-src/source/test/perf/leperf/PortableFontInstance.cpp b/Build/source/libs/icu/icu-src/source/test/perf/leperf/PortableFontInstance.cpp
index a71a239e7f4..b8fdd8c5a37 100644
--- a/Build/source/libs/icu/icu-src/source/test/perf/leperf/PortableFontInstance.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/perf/leperf/PortableFontInstance.cpp
@@ -83,8 +83,8 @@ le_int8 PortableFontInstance::highBit(le_int32 value)
}
PortableFontInstance::PortableFontInstance(const char *fileName, float pointSize, LEErrorCode &status)
- : fFile(NULL), fPointSize(pointSize), fUnitsPerEM(0), fFontChecksum(0), fAscent(0), fDescent(0), fLeading(0),
- fDirectory(NULL), fNAMETable(NULL), fNameCount(0), fNameStringOffset(0), fCMAPMapper(NULL), fHMTXTable(NULL), fNumGlyphs(0), fNumLongHorMetrics(0)
+ : fFile(nullptr), fPointSize(pointSize), fUnitsPerEM(0), fFontChecksum(0), fAscent(0), fDescent(0), fLeading(0),
+ fDirectory(nullptr), fNAMETable(nullptr), fNameCount(0), fNameStringOffset(0), fCMAPMapper(nullptr), fHMTXTable(nullptr), fNumGlyphs(0), fNumLongHorMetrics(0)
{
if (LE_FAILURE(status)) {
return;
@@ -94,7 +94,7 @@ PortableFontInstance::PortableFontInstance(const char *fileName, float pointSize
fFile = fopen(fileName, "rb");
//printf("Open Font: %s\n", fileName);
- if (fFile == NULL) {
+ if (fFile == nullptr) {
printf("%s:%d: %s: FNF\n", __FILE__, __LINE__, fileName);
status = LE_FONT_FILE_NOT_FOUND_ERROR;
return;
@@ -108,14 +108,14 @@ PortableFontInstance::PortableFontInstance(const char *fileName, float pointSize
le_int32 dirSize = sizeof tempDir + ((SWAPW(tempDir.numTables) - ANY_NUMBER) * sizeof(DirectoryEntry));
const LETag headTag = LE_HEAD_TABLE_TAG;
const LETag hheaTag = LE_HHEA_TABLE_TAG;
- const HEADTable *headTable = NULL;
- const HHEATable *hheaTable = NULL;
-// const NAMETable *nameTable = NULL;
+ const HEADTable *headTable = nullptr;
+ const HHEATable *hheaTable = nullptr;
+// const NAMETable *nameTable = nullptr;
le_uint16 numTables = 0;
fDirectory = (const SFNTDirectory *) LE_NEW_ARRAY(char, dirSize);
- if (fDirectory == NULL) {
+ if (fDirectory == nullptr) {
printf("%s:%d: %s: malloc err\n", __FILE__, __LINE__, fileName);
status = LE_MEMORY_ALLOCATION_ERROR;
goto error_exit;
@@ -135,7 +135,7 @@ PortableFontInstance::PortableFontInstance(const char *fileName, float pointSize
// read unitsPerEm from 'head' table
headTable = (const HEADTable *) readFontTable(headTag);
- if (headTable == NULL) {
+ if (headTable == nullptr) {
status = LE_MISSING_FONT_TABLE_ERROR;
printf("%s:%d: %s: missing head table\n", __FILE__, __LINE__, fileName);
goto error_exit;
@@ -147,14 +147,14 @@ PortableFontInstance::PortableFontInstance(const char *fileName, float pointSize
//nameTable = (NAMETable *) readFontTable(nameTag);
- //if (nameTable == NULL) {
+ //if (nameTable == nullptr) {
// status = LE_MISSING_FONT_TABLE_ERROR;
// goto error_exit;
//}
//fFontVersionString = findName(nameTable, NAME_VERSION_STRING, PLATFORM_MACINTOSH, MACINTOSH_ROMAN, MACINTOSH_ENGLISH);
- //if (fFontVersionString == NULL) {
+ //if (fFontVersionString == nullptr) {
// status = LE_MISSING_FONT_TABLE_ERROR;
// goto error_exit;
//}
@@ -163,7 +163,7 @@ PortableFontInstance::PortableFontInstance(const char *fileName, float pointSize
hheaTable = (HHEATable *) readFontTable(hheaTag);
- if (hheaTable == NULL) {
+ if (hheaTable == nullptr) {
printf("%s:%d: %s: missing hhea table\n", __FILE__, __LINE__, fileName);
status = LE_MISSING_FONT_TABLE_ERROR;
goto error_exit;
@@ -179,7 +179,7 @@ PortableFontInstance::PortableFontInstance(const char *fileName, float pointSize
fCMAPMapper = findUnicodeMapper();
- if (fCMAPMapper == NULL) {
+ if (fCMAPMapper == nullptr) {
printf("%s:%d: %s: can't load cmap\n", __FILE__, __LINE__, fileName);
status = LE_MISSING_FONT_TABLE_ERROR;
goto error_exit;
@@ -189,13 +189,13 @@ PortableFontInstance::PortableFontInstance(const char *fileName, float pointSize
error_exit:
fclose(fFile);
- fFile = NULL;
+ fFile = nullptr;
return;
}
PortableFontInstance::~PortableFontInstance()
{
- if (fFile != NULL) {
+ if (fFile != nullptr) {
fclose(fFile);
freeFontTable(fHMTXTable);
@@ -209,7 +209,7 @@ PortableFontInstance::~PortableFontInstance()
const DirectoryEntry *PortableFontInstance::findTable(LETag tag) const
{
- if (fDirectory != NULL) {
+ if (fDirectory != nullptr) {
le_uint16 table = 0;
le_uint16 probe = fDirPower;
@@ -230,23 +230,23 @@ const DirectoryEntry *PortableFontInstance::findTable(LETag tag) const
}
}
- return NULL;
+ return nullptr;
}
const void *PortableFontInstance::readTable(LETag tag, le_uint32 *length) const
{
const DirectoryEntry *entry = findTable(tag);
- if (entry == NULL) {
+ if (entry == nullptr) {
*length = 0;
- return NULL;
+ return nullptr;
}
*length = SWAPL(entry->length);
void *table = LE_NEW_ARRAY(char, *length);
- if (table != NULL) {
+ if (table != nullptr) {
fseek(fFile, SWAPL(entry->offset), SEEK_SET);
fread(table, sizeof(char), *length, fFile);
}
@@ -281,8 +281,8 @@ CMAPMapper *PortableFontInstance::findUnicodeMapper()
LETag cmapTag = LE_CMAP_TABLE_TAG;
const CMAPTable *cmap = (CMAPTable *) readFontTable(cmapTag);
- if (cmap == NULL) {
- return NULL;
+ if (cmap == nullptr) {
+ return nullptr;
}
return CMAPMapper::createUnicodeMapper(cmap);
@@ -290,13 +290,13 @@ CMAPMapper *PortableFontInstance::findUnicodeMapper()
const char *PortableFontInstance::getNameString(le_uint16 nameID, le_uint16 platformID, le_uint16 encodingID, le_uint16 languageID) const
{
- if (fNAMETable == NULL) {
+ if (fNAMETable == nullptr) {
LETag nameTag = LE_NAME_TABLE_TAG;
PortableFontInstance *realThis = (PortableFontInstance *) this;
realThis->fNAMETable = (const NAMETable *) readFontTable(nameTag);
- if (realThis->fNAMETable != NULL) {
+ if (realThis->fNAMETable != nullptr) {
realThis->fNameCount = SWAPW(realThis->fNAMETable->count);
realThis->fNameStringOffset = SWAPW(realThis->fNAMETable->stringOffset);
}
@@ -318,18 +318,18 @@ const char *PortableFontInstance::getNameString(le_uint16 nameID, le_uint16 plat
}
}
- return NULL;
+ return nullptr;
}
const LEUnicode16 *PortableFontInstance::getUnicodeNameString(le_uint16 nameID, le_uint16 platformID, le_uint16 encodingID, le_uint16 languageID) const
{
- if (fNAMETable == NULL) {
+ if (fNAMETable == nullptr) {
LETag nameTag = LE_NAME_TABLE_TAG;
PortableFontInstance *realThis = (PortableFontInstance *) this;
realThis->fNAMETable = (const NAMETable *) readFontTable(nameTag);
- if (realThis->fNAMETable != NULL) {
+ if (realThis->fNAMETable != nullptr) {
realThis->fNameCount = SWAPW(realThis->fNAMETable->count);
realThis->fNameStringOffset = SWAPW(realThis->fNAMETable->stringOffset);
}
@@ -354,7 +354,7 @@ const LEUnicode16 *PortableFontInstance::getUnicodeNameString(le_uint16 nameID,
}
}
- return NULL;
+ return nullptr;
}
void PortableFontInstance::deleteNameString(const char *name) const
@@ -371,13 +371,13 @@ void PortableFontInstance::getGlyphAdvance(LEGlyphID glyph, LEPoint &advance) co
{
TTGlyphID ttGlyph = (TTGlyphID) LE_GET_GLYPH(glyph);
- if (fHMTXTable == NULL) {
+ if (fHMTXTable == nullptr) {
LETag maxpTag = LE_MAXP_TABLE_TAG;
LETag hmtxTag = LE_HMTX_TABLE_TAG;
const MAXPTable *maxpTable = (MAXPTable *) readFontTable(maxpTag);
PortableFontInstance *realThis = (PortableFontInstance *) this;
- if (maxpTable != NULL) {
+ if (maxpTable != nullptr) {
realThis->fNumGlyphs = SWAPW(maxpTable->numGlyphs);
freeFontTable(maxpTable);
}
@@ -387,7 +387,7 @@ void PortableFontInstance::getGlyphAdvance(LEGlyphID glyph, LEPoint &advance) co
le_uint16 index = ttGlyph;
- if (ttGlyph >= fNumGlyphs || fHMTXTable == NULL) {
+ if (ttGlyph >= fNumGlyphs || fHMTXTable == nullptr) {
advance.fX = advance.fY = 0;
return;
}
diff --git a/Build/source/libs/icu/icu-src/source/test/perf/leperf/SimpleFontInstance.cpp b/Build/source/libs/icu/icu-src/source/test/perf/leperf/SimpleFontInstance.cpp
index b6d29b16779..a562f488baf 100644
--- a/Build/source/libs/icu/icu-src/source/test/perf/leperf/SimpleFontInstance.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/perf/leperf/SimpleFontInstance.cpp
@@ -54,7 +54,7 @@ const void *SimpleFontInstance::getFontTable(LETag tableTag) const
return CanonShaping::glyphDefinitionTable;
}
- return NULL;
+ return nullptr;
}
void SimpleFontInstance::getGlyphAdvance(LEGlyphID glyph, LEPoint &advance) const
diff --git a/Build/source/libs/icu/icu-src/source/test/perf/leperf/cmaps.cpp b/Build/source/libs/icu/icu-src/source/test/perf/leperf/cmaps.cpp
index e4cd5fd1b3c..2824b24708f 100644
--- a/Build/source/libs/icu/icu-src/source/test/perf/leperf/cmaps.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/perf/leperf/cmaps.cpp
@@ -61,7 +61,7 @@ CMAPMapper *CMAPMapper::createUnicodeMapper(const CMAPTable *cmap)
{
le_uint16 i;
le_uint16 nSubtables = SWAPW(cmap->numberSubtables);
- const CMAPEncodingSubtable *subtable = NULL;
+ const CMAPEncodingSubtable *subtable = nullptr;
le_bool found = false;
le_uint16 foundPlatformID = 0xFFFF;
le_uint16 foundPlatformSpecificID = 0xFFFF;
@@ -129,7 +129,7 @@ CMAPMapper *CMAPMapper::createUnicodeMapper(const CMAPTable *cmap)
//printf("%s:%d: using subtable #%d/%d type %d:%d\n", __FILE__, __LINE__, foundTable, nSubtables, foundPlatformID, foundPlatformSpecificID);
} else {
printf("%s:%d: could not find subtable.\n", __FILE__, __LINE__);
- return NULL;
+ return nullptr;
}
le_uint16 tableFormat = SWAPW(subtable->format);
@@ -151,7 +151,7 @@ CMAPMapper *CMAPMapper::createUnicodeMapper(const CMAPTable *cmap)
}
printf("%s:%d: Unknown format %x.\n", __FILE__, __LINE__, (SWAPW(subtable->format)));
- return NULL;
+ return nullptr;
}
CMAPFormat4Mapper::CMAPFormat4Mapper(const CMAPTable *cmap, const CMAPFormat4Encoding *header)
diff --git a/Build/source/libs/icu/icu-src/source/test/perf/leperf/leperf.cpp b/Build/source/libs/icu/icu-src/source/test/perf/leperf/leperf.cpp
index 3183abc8b1c..3bfc6d6eae8 100644
--- a/Build/source/libs/icu/icu-src/source/test/perf/leperf/leperf.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/perf/leperf/leperf.cpp
@@ -40,9 +40,9 @@ void iterate(void * p) {
LEErrorCode status = LE_NO_ERROR;
LEFontInstance *font = params->font;
LayoutEngine *engine = LayoutEngine::layoutEngineFactory(font, params->script, -1, status);
- LEGlyphID *glyphs = NULL;
- le_int32 *indices = NULL;
- float *positions = NULL;
+ LEGlyphID *glyphs = nullptr;
+ le_int32 *indices = nullptr;
+ float *positions = nullptr;
le_int32 glyphCount = 0;
LEUnicode *chars = params->chars;
glyphCount = engine->layoutChars(chars, 0, params->charLen, params->charLen, true, 0.0, 0.0, status);
diff --git a/Build/source/libs/icu/icu-src/source/test/perf/leperf/letrperf.cpp b/Build/source/libs/icu/icu-src/source/test/perf/leperf/letrperf.cpp
index 75f3a551436..baed01169a0 100644
--- a/Build/source/libs/icu/icu-src/source/test/perf/leperf/letrperf.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/perf/leperf/letrperf.cpp
@@ -160,22 +160,22 @@ int main() {
{
double oldTime = runTime;
runTime = 0.25;
- showTime(time_null, NULL);
- showTime(time_null, NULL);
- showTime(time_null, NULL);
- showTime(time_null, NULL);
+ showTime(time_null, nullptr);
+ showTime(time_null, nullptr);
+ showTime(time_null, nullptr);
+ showTime(time_null, nullptr);
runTime = oldTime;
}
puts("-- ready to start --");
- showTime(time_null, NULL);
+ showTime(time_null, nullptr);
showTime(time_obj, (void*)oo);
showTime(time_obj2, (void*)oo);
showTime(time_letr1, (void*)oo2);
showTime(time_letr2, (void*)oo2);
showTime(time_letr3, (void*)oo2);
- showTime(time_null, NULL);
+ showTime(time_null, nullptr);
delete [] items;
delete oo;
diff --git a/Build/source/libs/icu/icu-src/source/test/perf/leperf/xmlreader.cpp b/Build/source/libs/icu/icu-src/source/test/perf/leperf/xmlreader.cpp
index a0981a6864a..52036ab0102 100644
--- a/Build/source/libs/icu/icu-src/source/test/perf/leperf/xmlreader.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/perf/leperf/xmlreader.cpp
@@ -143,7 +143,7 @@ void readTestFile(const char *testFilePath, TestCaseCallback callback)
UXMLParser *parser = UXMLParser::createParser(status);
UXMLElement *root = parser->parseFile(testFilePath, status);
- if (root == NULL) {
+ if (root == nullptr) {
log_err("Could not open the test data file: %s\n", testFilePath);
delete parser;
return;
@@ -169,14 +169,14 @@ void readTestFile(const char *testFilePath, TestCaseCallback callback)
const UXMLElement *testCase;
int32_t tc = 0;
- while((testCase = root->nextChildElement(tc)) != NULL) {
+ while((testCase = root->nextChildElement(tc)) != nullptr) {
if (testCase->getTagName().compare(test_case) == 0) {
char *id = getCString(testCase->getAttribute(id_attr));
char *script = getCString(testCase->getAttribute(script_attr));
char *lang = getCString(testCase->getAttribute(lang_attr));
- char *fontName = NULL;
- char *fontVer = NULL;
- char *fontCksum = NULL;
+ char *fontName = nullptr;
+ char *fontVer = nullptr;
+ char *fontCksum = nullptr;
const UXMLElement *element;
int32_t ec = 0;
int32_t charCount = 0;
@@ -185,7 +185,7 @@ void readTestFile(const char *testFilePath, TestCaseCallback callback)
le_int32 languageCode = -1;
UnicodeString text, glyphs, indices, positions;
int32_t glyphCount = 0, indexCount = 0, positionCount = 0;
- TestResult expected = {0, NULL, NULL, NULL};
+ TestResult expected = {0, nullptr, nullptr, nullptr};
uscript_getCode(script, &scriptCode, 1, &status);
if (LE_FAILURE(status)) {
@@ -193,7 +193,7 @@ void readTestFile(const char *testFilePath, TestCaseCallback callback)
goto free_c_strings;
}
- if (lang != NULL) {
+ if (lang != nullptr) {
languageCode = getLanguageCode(lang);
if (languageCode < 0) {
@@ -202,7 +202,7 @@ void readTestFile(const char *testFilePath, TestCaseCallback callback)
}
}
- while((element = testCase->nextChildElement(ec)) != NULL) {
+ while((element = testCase->nextChildElement(ec)) != nullptr) {
UnicodeString tag = element->getTagName();
// TODO: make sure that each element is only used once.
diff --git a/Build/source/libs/icu/icu-src/source/test/perf/normperf/dtfmtrtperf.cpp b/Build/source/libs/icu/icu-src/source/test/perf/normperf/dtfmtrtperf.cpp
index 102183f1c6f..b13ec372291 100644
--- a/Build/source/libs/icu/icu-src/source/test/perf/normperf/dtfmtrtperf.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/perf/normperf/dtfmtrtperf.cpp
@@ -32,9 +32,9 @@ UPerfFunction* DateTimeRoundTripPerfTest::runIndexedTest(int32_t index, UBool ex
TESTCASE(3,RoundTripLocale21); // 21 locales w/ reverse order
default:
name = "";
- return NULL;
+ return nullptr;
}
- return NULL;
+ return nullptr;
}
diff --git a/Build/source/libs/icu/icu-src/source/test/perf/normperf/dtfmtrtperf.h b/Build/source/libs/icu/icu-src/source/test/perf/normperf/dtfmtrtperf.h
index 22dab949838..08a0af6317b 100644
--- a/Build/source/libs/icu/icu-src/source/test/perf/normperf/dtfmtrtperf.h
+++ b/Build/source/libs/icu/icu-src/source/test/perf/normperf/dtfmtrtperf.h
@@ -47,7 +47,7 @@ using namespace std;
#else
#define _UNICODE
typedef int DWORD;
-inline int FoldStringW(DWORD dwMapFlags, const UChar* lpSrcStr,int cchSrc, UChar* lpDestStr,int cchDest);
+inline int FoldStringW(DWORD dwMapFlags, const char16_t* lpSrcStr,int cchSrc, char16_t* lpDestStr,int cchDest);
#endif
class DateTimeRoundTripFunction : public UPerfFunction
diff --git a/Build/source/libs/icu/icu-src/source/test/perf/normperf/normperf.cpp b/Build/source/libs/icu/icu-src/source/test/perf/normperf/normperf.cpp
index be2e7fb96ce..4789d7f045b 100644
--- a/Build/source/libs/icu/icu-src/source/test/perf/normperf/normperf.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/perf/normperf/normperf.cpp
@@ -68,21 +68,21 @@ UPerfFunction* NormalizerPerformanceTest::runIndexedTest(int32_t index, UBool ex
default:
name = "";
- return NULL;
+ return nullptr;
}
- return NULL;
+ return nullptr;
}
-void NormalizerPerformanceTest::normalizeInput(ULine* dest,const UChar* src ,int32_t srcLen,UNormalizationMode mode, int32_t options){
+void NormalizerPerformanceTest::normalizeInput(ULine* dest,const char16_t* src ,int32_t srcLen,UNormalizationMode mode, int32_t options){
int32_t reqLen = 0;
UErrorCode status = U_ZERO_ERROR;
for(;;){
/* pure pre-flight */
- reqLen=unorm_normalize(src,srcLen,mode, options,NULL,0,&status);
+ reqLen=unorm_normalize(src,srcLen,mode, options,nullptr,0,&status);
if(status==U_BUFFER_OVERFLOW_ERROR){
status=U_ZERO_ERROR;
- dest->name = new UChar[reqLen+1];
+ dest->name = new char16_t[reqLen+1];
reqLen= unorm_normalize(src,srcLen,mode, options,dest->name,reqLen+1,&status);
dest->len=reqLen;
break;
@@ -91,22 +91,22 @@ void NormalizerPerformanceTest::normalizeInput(ULine* dest,const UChar* src ,int
}
}
}
-UChar* NormalizerPerformanceTest::normalizeInput(int32_t& len, const UChar* src ,int32_t srcLen,UNormalizationMode mode, int32_t options){
+char16_t* NormalizerPerformanceTest::normalizeInput(int32_t& len, const char16_t* src ,int32_t srcLen,UNormalizationMode mode, int32_t options){
int32_t reqLen = 0;
UErrorCode status = U_ZERO_ERROR;
- UChar* dest = NULL;
+ char16_t* dest = nullptr;
for(;;){
/* pure pre-flight */
- reqLen=unorm_normalize(src,srcLen,mode, options,NULL,0,&status);
+ reqLen=unorm_normalize(src,srcLen,mode, options,nullptr,0,&status);
if(status==U_BUFFER_OVERFLOW_ERROR){
status=U_ZERO_ERROR;
- dest = new UChar[reqLen+1];
+ dest = new char16_t[reqLen+1];
reqLen= unorm_normalize(src,srcLen,mode, options,dest,reqLen+1,&status);
len=reqLen;
break;
}else if(U_FAILURE(status)){
printf("Could not normalize input. Error: %s", u_errorName(status));
- return NULL;
+ return nullptr;
}
}
return dest;
@@ -118,12 +118,12 @@ static UOption cmdLineOptions[]={
NormalizerPerformanceTest::NormalizerPerformanceTest(int32_t argc, const char* argv[], UErrorCode& status)
: UPerfTest(argc,argv,status), options(0) {
- NFDBuffer = NULL;
- NFCBuffer = NULL;
+ NFDBuffer = nullptr;
+ NFCBuffer = nullptr;
NFDBufferLen = 0;
NFCBufferLen = 0;
- NFDFileLines = NULL;
- NFCFileLines = NULL;
+ NFDFileLines = nullptr;
+ NFCFileLines = nullptr;
if(status== U_ILLEGAL_ARGUMENT_ERROR){
fprintf(stderr,gUsageString, "normperf");
@@ -136,8 +136,8 @@ NormalizerPerformanceTest::NormalizerPerformanceTest(int32_t argc, const char* a
}
_remainingArgc = u_parseArgs(_remainingArgc, (char **)argv, UPRV_LENGTHOF(cmdLineOptions), cmdLineOptions);
- if(cmdLineOptions[0].doesOccur && cmdLineOptions[0].value!=NULL) {
- options=(int32_t)strtol(cmdLineOptions[0].value, NULL, 16);
+ if(cmdLineOptions[0].doesOccur && cmdLineOptions[0].value!=nullptr) {
+ options=(int32_t)strtol(cmdLineOptions[0].value, nullptr, 16);
}
if(line_mode){
@@ -156,7 +156,7 @@ NormalizerPerformanceTest::NormalizerPerformanceTest(int32_t argc, const char* a
}
}else if(bulk_mode){
int32_t srcLen = 0;
- const UChar* src = getBuffer(srcLen,status);
+ const char16_t* src = getBuffer(srcLen,status);
NFDBufferLen = 0;
NFCBufferLen = 0;
diff --git a/Build/source/libs/icu/icu-src/source/test/perf/normperf/normperf.h b/Build/source/libs/icu/icu-src/source/test/perf/normperf/normperf.h
index 8b384bfebeb..1ba042cbc8a 100644
--- a/Build/source/libs/icu/icu-src/source/test/perf/normperf/normperf.h
+++ b/Build/source/libs/icu/icu-src/source/test/perf/normperf/normperf.h
@@ -25,12 +25,12 @@
#else
#define _UNICODE
typedef int DWORD;
-inline int FoldStringW(DWORD dwMapFlags, const UChar* lpSrcStr,int cchSrc, UChar* lpDestStr,int cchDest);
+inline int FoldStringW(DWORD dwMapFlags, const char16_t* lpSrcStr,int cchSrc, char16_t* lpDestStr,int cchDest);
#endif
#define DEST_BUFFER_CAPACITY 6000
-typedef int32_t (*NormFn)(const UChar* src,int32_t srcLen, UChar* dest,int32_t dstLen, int32_t options, UErrorCode* status);
-typedef int32_t (*QuickCheckFn)(const UChar* src,int32_t srcLen, UNormalizationMode mode, int32_t options, UErrorCode* status);
+typedef int32_t (*NormFn)(const char16_t* src,int32_t srcLen, char16_t* dest,int32_t dstLen, int32_t options, UErrorCode* status);
+typedef int32_t (*QuickCheckFn)(const char16_t* src,int32_t srcLen, UNormalizationMode mode, int32_t options, UErrorCode* status);
class QuickCheckPerfFunction : public UPerfFunction{
private:
@@ -40,7 +40,7 @@ private:
UNormalizationMode mode;
int32_t retVal;
UBool uselen;
- const UChar* src;
+ const char16_t* src;
int32_t srcLen;
UBool line_mode;
int32_t options;
@@ -84,13 +84,13 @@ public:
numLines = srcNumLines;
uselen = _uselen;
mode = _mode;
- src = NULL;
+ src = nullptr;
srcLen = 0;
line_mode = true;
}
- QuickCheckPerfFunction(QuickCheckFn func, const UChar* source,int32_t sourceLen, UNormalizationMode _mode, int32_t opts, UBool _uselen) : options(opts) {
+ QuickCheckPerfFunction(QuickCheckFn func, const char16_t* source,int32_t sourceLen, UNormalizationMode _mode, int32_t opts, UBool _uselen) : options(opts) {
fn = func;
- lines = NULL;
+ lines = nullptr;
numLines = 0;
uselen = _uselen;
mode = _mode;
@@ -105,13 +105,13 @@ class NormPerfFunction : public UPerfFunction{
private:
ULine* lines;
int32_t numLines;
- UChar dest[DEST_BUFFER_CAPACITY];
- UChar* pDest;
+ char16_t dest[DEST_BUFFER_CAPACITY];
+ char16_t* pDest;
int32_t destLen;
NormFn fn;
int32_t retVal;
UBool uselen;
- const UChar* src;
+ const char16_t* src;
int32_t srcLen;
UBool line_mode;
int32_t options;
@@ -154,17 +154,17 @@ public:
uselen = _uselen;
destLen = DEST_BUFFER_CAPACITY;
pDest = dest;
- src = NULL;
+ src = nullptr;
srcLen = 0;
line_mode = true;
}
- NormPerfFunction(NormFn func, int32_t opts, const UChar* source,int32_t sourceLen,UBool _uselen) : options(opts) {
+ NormPerfFunction(NormFn func, int32_t opts, const char16_t* source,int32_t sourceLen,UBool _uselen) : options(opts) {
fn = func;
- lines = NULL;
+ lines = nullptr;
numLines = 0;
uselen = _uselen;
destLen = sourceLen*3;
- pDest = (UChar*) malloc(destLen * U_SIZEOF_UCHAR);
+ pDest = (char16_t*) malloc(destLen * U_SIZEOF_UCHAR);
src = source;
srcLen = sourceLen;
line_mode = false;
@@ -182,22 +182,22 @@ class NormalizerPerformanceTest : public UPerfTest{
private:
ULine* NFDFileLines;
ULine* NFCFileLines;
- UChar* NFDBuffer;
- UChar* NFCBuffer;
- UChar* origBuffer;
+ char16_t* NFDBuffer;
+ char16_t* NFCBuffer;
+ char16_t* origBuffer;
int32_t origBufferLen;
int32_t NFDBufferLen;
int32_t NFCBufferLen;
int32_t options;
- void normalizeInput(ULine* dest,const UChar* src ,int32_t srcLen,UNormalizationMode mode, int32_t options);
- UChar* normalizeInput(int32_t& len, const UChar* src ,int32_t srcLen,UNormalizationMode mode, int32_t options);
+ void normalizeInput(ULine* dest,const char16_t* src ,int32_t srcLen,UNormalizationMode mode, int32_t options);
+ char16_t* normalizeInput(int32_t& len, const char16_t* src ,int32_t srcLen,UNormalizationMode mode, int32_t options);
public:
NormalizerPerformanceTest(int32_t argc, const char* argv[], UErrorCode& status);
~NormalizerPerformanceTest();
- virtual UPerfFunction* runIndexedTest(int32_t index, UBool exec,const char* &name, char* par = NULL);
+ virtual UPerfFunction* runIndexedTest(int32_t index, UBool exec,const char* &name, char* par = nullptr);
/* NFC performance */
UPerfFunction* TestICU_NFC_NFD_Text();
UPerfFunction* TestICU_NFC_NFC_Text();
@@ -258,96 +258,96 @@ public:
#if (U_ICU_VERSION_MAJOR_NUM > 1 ) || ((U_ICU_VERSION_MAJOR_NUM == 1 )&&(U_ICU_VERSION_MINOR_NUM > 8) && (U_ICU_VERSION_PATCHLEVEL_NUM >=1))
-int32_t ICUNormNFD(const UChar* src, int32_t srcLen,UChar* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
+int32_t ICUNormNFD(const char16_t* src, int32_t srcLen,char16_t* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
return unorm_normalize(src,srcLen,UNORM_NFD, options,dest,dstLen,status);
}
-int32_t ICUNormNFC(const UChar* src, int32_t srcLen,UChar* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
+int32_t ICUNormNFC(const char16_t* src, int32_t srcLen,char16_t* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
return unorm_normalize(src,srcLen,UNORM_NFC, options,dest,dstLen,status);
}
-int32_t ICUNormNFKD(const UChar* src, int32_t srcLen,UChar* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
+int32_t ICUNormNFKD(const char16_t* src, int32_t srcLen,char16_t* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
return unorm_normalize(src,srcLen,UNORM_NFKD, options,dest,dstLen,status);
}
-int32_t ICUNormNFKC(const UChar* src, int32_t srcLen,UChar* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
+int32_t ICUNormNFKC(const char16_t* src, int32_t srcLen,char16_t* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
return unorm_normalize(src,srcLen,UNORM_NFKC, options,dest,dstLen,status);
}
-int32_t ICUNormFCD(const UChar* src, int32_t srcLen,UChar* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
+int32_t ICUNormFCD(const char16_t* src, int32_t srcLen,char16_t* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
return unorm_normalize(src,srcLen,UNORM_FCD, options,dest,dstLen,status);
}
-int32_t ICUQuickCheck(const UChar* src,int32_t srcLen, UNormalizationMode mode, int32_t options, UErrorCode* status){
+int32_t ICUQuickCheck(const char16_t* src,int32_t srcLen, UNormalizationMode mode, int32_t options, UErrorCode* status){
#if (U_ICU_VERSION_MAJOR_NUM > 2 ) || ((U_ICU_VERSION_MAJOR_NUM == 2 )&&(U_ICU_VERSION_MINOR_NUM >= 6))
return unorm_quickCheckWithOptions(src,srcLen,mode, options, status);
#else
return unorm_quickCheck(src,srcLen,mode,status);
#endif
}
-int32_t ICUIsNormalized(const UChar* src,int32_t srcLen, UNormalizationMode mode, int32_t options, UErrorCode* status){
+int32_t ICUIsNormalized(const char16_t* src,int32_t srcLen, UNormalizationMode mode, int32_t options, UErrorCode* status){
return unorm_isNormalized(src,srcLen,mode,status);
}
#else
-int32_t ICUNormNFD(const UChar* src, int32_t srcLen,UChar* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
+int32_t ICUNormNFD(const char16_t* src, int32_t srcLen,char16_t* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
return unorm_normalize(src,srcLen,UCOL_DECOMP_CAN, options,dest,dstLen,status);
}
-int32_t ICUNormNFC(const UChar* src, int32_t srcLen,UChar* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
+int32_t ICUNormNFC(const char16_t* src, int32_t srcLen,char16_t* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
return unorm_normalize(src,srcLen,UCOL_COMPOSE_CAN, options,dest,dstLen,status);
}
-int32_t ICUNormNFKD(const UChar* src, int32_t srcLen,UChar* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
+int32_t ICUNormNFKD(const char16_t* src, int32_t srcLen,char16_t* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
return unorm_normalize(src,srcLen,UCOL_DECOMP_COMPAT, options,dest,dstLen,status);
}
-int32_t ICUNormNFKC(const UChar* src, int32_t srcLen,UChar* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
+int32_t ICUNormNFKC(const char16_t* src, int32_t srcLen,char16_t* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
return unorm_normalize(src,srcLen,UCOL_COMPOSE_COMPAT, options,dest,dstLen,status);
}
-int32_t ICUNormFCD(const UChar* src, int32_t srcLen,UChar* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
+int32_t ICUNormFCD(const char16_t* src, int32_t srcLen,char16_t* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
return unorm_normalize(src,srcLen,UNORM_FCD, options,dest,dstLen,status);
}
-int32_t ICUQuickCheck(const UChar* src,int32_t srcLen, UNormalizationMode mode, int32_t options, UErrorCode* status){
+int32_t ICUQuickCheck(const char16_t* src,int32_t srcLen, UNormalizationMode mode, int32_t options, UErrorCode* status){
return unorm_quickCheck(src,srcLen,mode,status);
}
-int32_t ICUIsNormalized(const UChar* src,int32_t srcLen, UNormalizationMode mode, int32_t options, UErrorCode* status){
+int32_t ICUIsNormalized(const char16_t* src,int32_t srcLen, UNormalizationMode mode, int32_t options, UErrorCode* status){
return 0;
}
#endif
#if U_PLATFORM_HAS_WIN32_API
-int32_t WinNormNFD(const UChar* src, int32_t srcLen, UChar* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
+int32_t WinNormNFD(const char16_t* src, int32_t srcLen, char16_t* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
return FoldStringW(MAP_COMPOSITE, toOldUCharPtr(src),srcLen, toOldUCharPtr(dest),dstLen);
}
-int32_t WinNormNFC(const UChar* src, int32_t srcLen, UChar* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
+int32_t WinNormNFC(const char16_t* src, int32_t srcLen, char16_t* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
return FoldStringW(MAP_PRECOMPOSED, toOldUCharPtr(src),srcLen, toOldUCharPtr(dest),dstLen);
}
-int32_t WinNormNFKD(const UChar* src, int32_t srcLen, UChar* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
+int32_t WinNormNFKD(const char16_t* src, int32_t srcLen, char16_t* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
return FoldStringW(MAP_COMPOSITE+MAP_FOLDCZONE, toOldUCharPtr(src),srcLen, toOldUCharPtr(dest),dstLen);
}
-int32_t WinNormNFKC(const UChar* src, int32_t srcLen, UChar* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
+int32_t WinNormNFKC(const char16_t* src, int32_t srcLen, char16_t* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
return FoldStringW(MAP_FOLDCZONE, toOldUCharPtr(src),srcLen, toOldUCharPtr(dest),dstLen);
}
#else
-int32_t WinNormNFD(const UChar* src, int32_t srcLen, UChar* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
+int32_t WinNormNFD(const char16_t* src, int32_t srcLen, char16_t* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
return 0 ;
}
-int32_t WinNormNFC(const UChar* src, int32_t srcLen, UChar* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
+int32_t WinNormNFC(const char16_t* src, int32_t srcLen, char16_t* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
return 0;
}
-int32_t WinNormNFKD(const UChar* src, int32_t srcLen, UChar* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
+int32_t WinNormNFKD(const char16_t* src, int32_t srcLen, char16_t* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
return 0;
}
-int32_t WinNormNFKC(const UChar* src, int32_t srcLen, UChar* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
+int32_t WinNormNFKC(const char16_t* src, int32_t srcLen, char16_t* dest, int32_t dstLen, int32_t options, UErrorCode* status) {
return 0;
}
#endif
diff --git a/Build/source/libs/icu/icu-src/source/test/perf/normperf/simplenormperf.cpp b/Build/source/libs/icu/icu-src/source/test/perf/normperf/simplenormperf.cpp
index 2f7341b71f6..8b2fbd48ce2 100644
--- a/Build/source/libs/icu/icu-src/source/test/perf/normperf/simplenormperf.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/perf/normperf/simplenormperf.cpp
@@ -61,14 +61,14 @@ private:
return result;
}
- static const UChar *const latin1;
- static const UChar *const lowercaseLatin1;
- static const UChar *const ascii;
- static const UChar *const japanese;
- static const UChar *const arabic;
+ static const char16_t *const latin1;
+ static const char16_t *const lowercaseLatin1;
+ static const char16_t *const ascii;
+ static const char16_t *const japanese;
+ static const char16_t *const arabic;
};
-const UChar *const CommonChars::latin1 =
+const char16_t *const CommonChars::latin1 =
// Goethe’s Bergschloß in normal sentence case.
u"Da droben auf jenem Berge, da steht ein altes Schloß, "
u"wo hinter Toren und Türen sonst lauerten Ritter und Roß.\n"
@@ -97,7 +97,7 @@ const UChar *const CommonChars::latin1 =
u"Und Knapp und Kellnerin glänzen als Herren weit und breit; "
u"sie nimmt sich zum Kredenzen und er zum Danke sich Zeit.\n";
-const UChar *const CommonChars::lowercaseLatin1 =
+const char16_t *const CommonChars::lowercaseLatin1 =
// Goethe’s Bergschloß in all lowercase
u"da droben auf jenem berge, da steht ein altes schloß, "
u"wo hinter toren und türen sonst lauerten ritter und roß.\n"
@@ -126,7 +126,7 @@ const UChar *const CommonChars::lowercaseLatin1 =
u"und knapp und kellnerin glänzen als herren weit und breit; "
u"sie nimmt sich zum kredenzen und er zum danke sich zeit.\n";
-const UChar *const CommonChars::ascii =
+const char16_t *const CommonChars::ascii =
// Goethe’s Bergschloß in normal sentence case but ASCII-fied
u"Da droben auf jenem Berge, da steht ein altes Schloss, "
u"wo hinter Toren und Tueren sonst lauerten Ritter und Ross.\n"
@@ -155,7 +155,7 @@ const UChar *const CommonChars::ascii =
u"Und Knapp und Kellnerin glaenzen als Herren weit und breit; "
u"sie nimmt sich zum Kredenzen und er zum Danke sich Zeit.\n";
-const UChar *const CommonChars::japanese =
+const char16_t *const CommonChars::japanese =
// Ame ni mo makezu = Be not Defeated by the Rain, by Kenji Miyazawa.
u"雨ã«ã‚‚ã¾ã‘ãšé¢¨ã«ã‚‚ã¾ã‘ãšé›ªã«ã‚‚å¤ã®æš‘ã•ã«ã‚‚ã¾ã‘ã¬"
u"丈夫ãªã‹ã‚‰ã ã‚’ã‚‚ã¡æ…¾ã¯ãªã決ã—ã¦çž‹ã‚‰ãš"
@@ -172,7 +172,7 @@ const UChar *const CommonChars::japanese =
u"ã•ã‚€ã•ã®ãªã¤ã¯ãŠã‚ãŠã‚ã‚ã‚‹ãã¿ã‚“ãªã«ã§ãã®ã¼ã†ã¨ã‚ˆã°ã‚Œ"
u"ã»ã‚られもã›ãšãã«ã‚‚ã•ã‚Œãšãã†ã„ã†ã‚‚ã®ã«ã‚ãŸã—ã¯ãªã‚ŠãŸã„";
-const UChar *const CommonChars::arabic =
+const char16_t *const CommonChars::arabic =
// Some Arabic for variety. "What is Unicode?"
// http://www.unicode.org/standard/translations/arabic.html
u"تتعامل الحواسيب بالأسام مع الأرقام Ùقط، "
@@ -241,7 +241,7 @@ public:
private:
const Normalizer2 &norm2;
UnicodeString src;
- const UChar *s;
+ const char16_t *s;
UnicodeString dest;
};
diff --git a/Build/source/libs/icu/icu-src/source/test/perf/strsrchperf/strsrchperf.cpp b/Build/source/libs/icu/icu-src/source/test/perf/strsrchperf/strsrchperf.cpp
index e138864bf32..f43c94f6ee7 100644
--- a/Build/source/libs/icu/icu-src/source/test/perf/strsrchperf/strsrchperf.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/perf/strsrchperf/strsrchperf.cpp
@@ -19,8 +19,8 @@
StringSearchPerformanceTest::StringSearchPerformanceTest(int32_t argc, const char *argv[], UErrorCode &status)
:UPerfTest(argc,argv,status){
int32_t start, end;
- srch = NULL;
- pttrn = NULL;
+ srch = nullptr;
+ pttrn = nullptr;
if(status== U_ILLEGAL_ARGUMENT_ERROR || line_mode){
fprintf(stderr,gUsageString, "strsrchperf");
return;
@@ -38,7 +38,7 @@ StringSearchPerformanceTest::StringSearchPerformanceTest(int32_t argc, const cha
start = ubrk_preceding(brk, 1000);
end = ubrk_following(brk, start);
pttrnLen = end - start;
- UChar* temp = (UChar*)malloc(sizeof(UChar)*(pttrnLen));
+ char16_t* temp = (char16_t*)malloc(sizeof(char16_t)*(pttrnLen));
for (int i = 0; i < pttrnLen; i++) {
temp[i] = src[start++];
}
@@ -49,7 +49,7 @@ StringSearchPerformanceTest::StringSearchPerformanceTest(int32_t argc, const cha
start = 0;
for(end = start; ; end += 1) {
- UChar ch = src[end];
+ char16_t ch = src[end];
if (ch == 0x000A || ch == 0x000D || ch == 0x2028) {
break;
@@ -57,7 +57,7 @@ StringSearchPerformanceTest::StringSearchPerformanceTest(int32_t argc, const cha
}
pttrnLen = end - start;
- UChar* temp = (UChar*)malloc(sizeof(UChar)*(pttrnLen));
+ char16_t* temp = (char16_t*)malloc(sizeof(char16_t)*(pttrnLen));
for (int i = 0; i < pttrnLen; i++) {
temp[i] = src[start++];
}
@@ -65,7 +65,7 @@ StringSearchPerformanceTest::StringSearchPerformanceTest(int32_t argc, const cha
#endif
/* Create the StringSearch object to be use in performance test. */
- srch = usearch_open(pttrn, pttrnLen, src, srcLen, locale, NULL, &status);
+ srch = usearch_open(pttrn, pttrnLen, src, srcLen, locale, nullptr, &status);
if(U_FAILURE(status)){
fprintf(stderr, "FAILED to create UPerfTest object. Error: %s\n", u_errorName(status));
@@ -75,10 +75,10 @@ StringSearchPerformanceTest::StringSearchPerformanceTest(int32_t argc, const cha
}
StringSearchPerformanceTest::~StringSearchPerformanceTest() {
- if (pttrn != NULL) {
+ if (pttrn != nullptr) {
free(pttrn);
}
- if (srch != NULL) {
+ if (srch != nullptr) {
usearch_close(srch);
}
}
@@ -90,9 +90,9 @@ UPerfFunction* StringSearchPerformanceTest::runIndexedTest(int32_t index, UBool
default:
name = "";
- return NULL;
+ return nullptr;
}
- return NULL;
+ return nullptr;
}
UPerfFunction* StringSearchPerformanceTest::Test_ICU_Forward_Search(){
diff --git a/Build/source/libs/icu/icu-src/source/test/perf/strsrchperf/strsrchperf.h b/Build/source/libs/icu/icu-src/source/test/perf/strsrchperf/strsrchperf.h
index 04ee4033f8a..3344c7cc012 100644
--- a/Build/source/libs/icu/icu-src/source/test/perf/strsrchperf/strsrchperf.h
+++ b/Build/source/libs/icu/icu-src/source/test/perf/strsrchperf/strsrchperf.h
@@ -16,14 +16,14 @@
#include <stdlib.h>
#include <stdio.h>
-typedef void (*StrSrchFn)(UStringSearch* srch, const UChar* src,int32_t srcLen, const UChar* pttrn, int32_t pttrnLen, UErrorCode* status);
+typedef void (*StrSrchFn)(UStringSearch* srch, const char16_t* src,int32_t srcLen, const char16_t* pttrn, int32_t pttrnLen, UErrorCode* status);
class StringSearchPerfFunction : public UPerfFunction {
private:
StrSrchFn fn;
- const UChar* src;
+ const char16_t* src;
int32_t srcLen;
- const UChar* pttrn;
+ const char16_t* pttrn;
int32_t pttrnLen;
UStringSearch* srch;
@@ -36,7 +36,7 @@ public:
return (long) srcLen;
}
- StringSearchPerfFunction(StrSrchFn func, UStringSearch* search, const UChar* source,int32_t sourceLen, const UChar* pattern, int32_t patternLen) {
+ StringSearchPerfFunction(StrSrchFn func, UStringSearch* search, const char16_t* source,int32_t sourceLen, const char16_t* pattern, int32_t patternLen) {
fn = func;
src = source;
srcLen = sourceLen;
@@ -48,22 +48,22 @@ public:
class StringSearchPerformanceTest : public UPerfTest {
private:
- const UChar* src;
+ const char16_t* src;
int32_t srcLen;
- UChar* pttrn;
+ char16_t* pttrn;
int32_t pttrnLen;
UStringSearch* srch;
public:
StringSearchPerformanceTest(int32_t argc, const char *argv[], UErrorCode &status);
~StringSearchPerformanceTest();
- virtual UPerfFunction* runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = NULL);
+ virtual UPerfFunction* runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = nullptr);
UPerfFunction* Test_ICU_Forward_Search();
UPerfFunction* Test_ICU_Backward_Search();
};
-void ICUForwardSearch(UStringSearch *srch, const UChar* source, int32_t sourceLen, const UChar* pattern, int32_t patternLen, UErrorCode* status) {
+void ICUForwardSearch(UStringSearch *srch, const char16_t* source, int32_t sourceLen, const char16_t* pattern, int32_t patternLen, UErrorCode* status) {
int32_t match;
match = usearch_first(srch, status);
@@ -72,7 +72,7 @@ void ICUForwardSearch(UStringSearch *srch, const UChar* source, int32_t sourceLe
}
}
-void ICUBackwardSearch(UStringSearch *srch, const UChar* source, int32_t sourceLen, const UChar* pattern, int32_t patternLen, UErrorCode* status) {
+void ICUBackwardSearch(UStringSearch *srch, const char16_t* source, int32_t sourceLen, const char16_t* pattern, int32_t patternLen, UErrorCode* status) {
int32_t match;
match = usearch_last(srch, status);
diff --git a/Build/source/libs/icu/icu-src/source/test/perf/ubrkperf/ubrkperf.cpp b/Build/source/libs/icu/icu-src/source/test/perf/ubrkperf/ubrkperf.cpp
index 7d092bc6383..f0a3cc898a0 100644
--- a/Build/source/libs/icu/icu-src/source/test/perf/ubrkperf/ubrkperf.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/perf/ubrkperf/ubrkperf.cpp
@@ -162,12 +162,12 @@ UPerfFunction* BreakIteratorPerformanceTest::TestICUIsBound()
UPerfFunction* BreakIteratorPerformanceTest::TestDarwinForward()
{
- return NULL;
+ return nullptr;
}
UPerfFunction* BreakIteratorPerformanceTest::TestDarwinIsBound()
{
- return NULL;
+ return nullptr;
}
UPerfFunction* BreakIteratorPerformanceTest::runIndexedTest(int32_t index, UBool exec,
@@ -181,9 +181,9 @@ UPerfFunction* BreakIteratorPerformanceTest::runIndexedTest(int32_t index, UBool
TESTCASE(3, TestDarwinIsBound);
default:
name = "";
- return NULL;
+ return nullptr;
}
- return NULL;
+ return nullptr;
}
UOption options[]={
@@ -193,8 +193,8 @@ UOption options[]={
BreakIteratorPerformanceTest::BreakIteratorPerformanceTest(int32_t argc, const char* argv[], UErrorCode& status)
: UPerfTest(argc,argv,status),
-m_mode_(NULL),
-m_file_(NULL),
+m_mode_(nullptr),
+m_file_(nullptr),
m_fileLen_(0)
{
diff --git a/Build/source/libs/icu/icu-src/source/test/perf/ubrkperf/ubrkperf.h b/Build/source/libs/icu/icu-src/source/test/perf/ubrkperf/ubrkperf.h
index 651228f8bdb..341f4cd285c 100644
--- a/Build/source/libs/icu/icu-src/source/test/perf/ubrkperf/ubrkperf.h
+++ b/Build/source/libs/icu/icu-src/source/test/perf/ubrkperf/ubrkperf.h
@@ -19,13 +19,13 @@
class ICUBreakFunction : public UPerfFunction {
protected:
BreakIterator *m_brkIt_;
- const UChar *m_file_;
+ const char16_t *m_file_;
int32_t m_fileLen_;
int32_t m_noBreaks_;
UErrorCode m_status_;
public:
- ICUBreakFunction(const char *locale, const char *mode, const UChar *file, int32_t file_len) :
- m_brkIt_(NULL),
+ ICUBreakFunction(const char *locale, const char *mode, const char16_t *file, int32_t file_len) :
+ m_brkIt_(nullptr),
m_file_(file),
m_fileLen_(file_len),
m_noBreaks_(-1),
@@ -60,7 +60,7 @@ public:
class ICUIsBound : public ICUBreakFunction {
public:
- ICUIsBound(const char *locale, const char *mode, const UChar *file, int32_t file_len) :
+ ICUIsBound(const char *locale, const char *mode, const char16_t *file, int32_t file_len) :
ICUBreakFunction(locale, mode, file, file_len)
{
m_noBreaks_ = 0;
@@ -87,7 +87,7 @@ public:
class ICUForward : public ICUBreakFunction {
public:
- ICUForward(const char *locale, const char *mode, const UChar *file, int32_t file_len) :
+ ICUForward(const char *locale, const char *mode, const char16_t *file, int32_t file_len) :
ICUBreakFunction(locale, mode, file, file_len)
{
m_noBreaks_ = 0;
@@ -115,7 +115,7 @@ public:
class BreakIteratorPerformanceTest : public UPerfTest {
private:
const char* m_mode_;
- const UChar* m_file_;
+ const char16_t* m_file_;
int32_t m_fileLen_;
public:
@@ -123,7 +123,7 @@ public:
~BreakIteratorPerformanceTest();
virtual UPerfFunction* runIndexedTest(int32_t index, UBool exec,
- const char* &name, char* par = NULL);
+ const char* &name, char* par = nullptr);
UPerfFunction* TestICUForward();
UPerfFunction* TestICUIsBound();
diff --git a/Build/source/libs/icu/icu-src/source/test/perf/ubrkperf/ubrkperfold.cpp b/Build/source/libs/icu/icu-src/source/test/perf/ubrkperf/ubrkperfold.cpp
index 973f069acd6..3e5c6f308b5 100644
--- a/Build/source/libs/icu/icu-src/source/test/perf/ubrkperf/ubrkperfold.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/perf/ubrkperf/ubrkperfold.cpp
@@ -164,8 +164,8 @@ OptSpec opts[] = {
//---------------------------------------------------------------------------
//DWORD gWinLCID;
-BreakIterator *brkit = NULL;
-UChar *text = NULL;
+BreakIterator *brkit = nullptr;
+char16_t *text = nullptr;
int32_t textSize = 0;
@@ -474,7 +474,7 @@ class UCharFile {
public:
UCharFile(const char *fileName);
~UCharFile();
- UChar get();
+ char16_t get();
UBool eof() {return fEof;};
UBool error() {return fError;};
int32_t size() { return fFileSize; };
@@ -487,7 +487,7 @@ private:
const char *fName;
UBool fEof;
UBool fError;
- UChar fPending2ndSurrogate;
+ char16_t fPending2ndSurrogate;
int32_t fFileSize;
enum {UTF16LE, UTF16BE, UTF8} fEncoding;
@@ -507,7 +507,7 @@ UCharFile::UCharFile(const char * fileName) {
}
fFile = fopen(fName, "rb");
fPending2ndSurrogate = 0;
- if (fFile == NULL) {
+ if (fFile == nullptr) {
fprintf(stderr, "Can not open file \"%s\"\n", opt_fName);
fError = true;
return;
@@ -541,8 +541,8 @@ UCharFile::~UCharFile() {
-UChar UCharFile::get() {
- UChar c;
+char16_t UCharFile::get() {
+ char16_t c;
switch (fEncoding) {
case UTF16LE:
{
@@ -576,7 +576,7 @@ UChar UCharFile::get() {
break;
}
- int ch = fgetc(fFile); // Note: c and ch are separate cause eof test doesn't work on UChar type.
+ int ch = fgetc(fFile); // Note: c and ch are separate cause eof test doesn't work on char16_t type.
if (ch == EOF) {
c = 0;
fEof = true;
@@ -617,13 +617,13 @@ UChar UCharFile::get() {
i = 0;
uint32_t cp;
U8_NEXT_UNSAFE(bytes, i, cp);
- c = (UChar)cp;
+ c = (char16_t)cp;
if (cp >= 0x10000) {
// The code point needs to be broken up into a utf-16 surrogate pair.
// Process first half this time through the main loop, and
// remember the other half for the next time through.
- UChar utf16Buf[3];
+ char16_t utf16Buf[3];
i = 0;
UTF16_APPEND_CHAR_UNSAFE(utf16Buf, i, cp);
fPending2ndSurrogate = utf16Buf[1];
@@ -693,13 +693,13 @@ int main(int argc, const char** argv) {
int32_t bufSize = 0;
int32_t charCount = 0;
if(fileSize != -1) {
- text = (UChar *)malloc(fileSize*sizeof(UChar));
+ text = (char16_t *)malloc(fileSize*sizeof(char16_t));
bufSize = fileSize;
} else {
- text = (UChar *)malloc(STARTSIZE*sizeof(UChar));
+ text = (char16_t *)malloc(STARTSIZE*sizeof(char16_t));
bufSize = STARTSIZE;
}
- if(text == NULL) {
+ if(text == nullptr) {
fprintf(stderr, "Allocating buffer failed\n");
exit(-1);
}
@@ -710,7 +710,7 @@ int main(int argc, const char** argv) {
// (The number of bytes read from file per loop iteration depends on external encoding.)
for (;;) {
- UChar c = f.get();
+ char16_t c = f.get();
if(f.eof()) {
break;
}
@@ -720,8 +720,8 @@ int main(int argc, const char** argv) {
// We now have a good UTF-16 value in c.
text[charCount++] = c;
if(charCount == bufSize) {
- text = (UChar *)realloc(text, 2*bufSize*sizeof(UChar));
- if(text == NULL) {
+ text = (char16_t *)realloc(text, 2*bufSize*sizeof(char16_t));
+ if(text == nullptr) {
fprintf(stderr, "Reallocating buffer failed\n");
exit(-1);
}
@@ -765,10 +765,10 @@ int main(int argc, const char** argv) {
}
}
- if(text != NULL) {
+ if(text != nullptr) {
free(text);
}
- if(brkit != NULL) {
+ if(brkit != nullptr) {
delete brkit;
}
diff --git a/Build/source/libs/icu/icu-src/source/test/perf/ucnvavailperf/ucnvavailperf.cpp b/Build/source/libs/icu/icu-src/source/test/perf/ucnvavailperf/ucnvavailperf.cpp
index f16db53b205..aa318ee328d 100644
--- a/Build/source/libs/icu/icu-src/source/test/perf/ucnvavailperf/ucnvavailperf.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/perf/ucnvavailperf/ucnvavailperf.cpp
@@ -57,18 +57,18 @@ U_CDECL_BEGIN
void *U_CALLCONV
my_alloc(const void *context, size_t size) {
size_t *p = (size_t *)malloc(size + sizeof(size_t));
- if (p != NULL) {
+ if (p != nullptr) {
icuMemUsage += size;
*p = size;
return p + 1;
} else {
- return NULL;
+ return nullptr;
}
}
void U_CALLCONV
my_free(const void *context, void *mem) {
- if (mem != NULL) {
+ if (mem != nullptr) {
const size_t *p = (const size_t *)mem - 1;
icuMemUsage -= *p;
free((void *)p);
@@ -79,7 +79,7 @@ my_free(const void *context, void *mem) {
void *U_CALLCONV
my_realloc(const void *context, void *mem, size_t size) {
my_free(context, mem);
- return NULL;
+ return nullptr;
}
U_CDECL_END
@@ -89,7 +89,7 @@ int main(int argc, const char *argv[]) {
// Hook in our own memory allocation functions so that we can measure
// the memory usage.
- u_setMemoryFunctions(NULL, my_alloc, my_realloc, my_free, &errorCode);
+ u_setMemoryFunctions(nullptr, my_alloc, my_realloc, my_free, &errorCode);
if(U_FAILURE(errorCode)) {
fprintf(stderr,
"u_setMemoryFunctions() failed - %s\n",
diff --git a/Build/source/libs/icu/icu-src/source/test/perf/unisetperf/draft/bitset.cpp b/Build/source/libs/icu/icu-src/source/test/perf/unisetperf/draft/bitset.cpp
index 59746bc46b0..974c1891d2e 100644
--- a/Build/source/libs/icu/icu-src/source/test/perf/unisetperf/draft/bitset.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/perf/unisetperf/draft/bitset.cpp
@@ -93,7 +93,7 @@ public:
return;
}
BMPBitHash *bitHash=new BMPBitHash;
- if(bitHash==NULL || restSet==NULL) {
+ if(bitHash==nullptr || restSet==nullptr) {
errorCode=U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -154,7 +154,7 @@ public:
if(bitHash->countKeys()>UPRV_LENGTHOF(shortBits)) {
bits=(int64_t *)uprv_malloc(bitHash->countKeys()*8);
}
- if(bits!=NULL) {
+ if(bits!=nullptr) {
bitHash->invert(bits);
} else {
bits=shortBits;
diff --git a/Build/source/libs/icu/icu-src/source/test/perf/unisetperf/draft/trieset.cpp b/Build/source/libs/icu/icu-src/source/test/perf/unisetperf/draft/trieset.cpp
index 7d6269e208a..8d2f8134c5b 100644
--- a/Build/source/libs/icu/icu-src/source/test/perf/unisetperf/draft/trieset.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/perf/unisetperf/draft/trieset.cpp
@@ -35,16 +35,16 @@
class TrieSet : public UObject, public UnicodeContainable {
public:
TrieSet(const UnicodeSet &set, UErrorCode &errorCode)
- : trieData(NULL), latin1(NULL), restSet(set.clone()) {
+ : trieData(nullptr), latin1(nullptr), restSet(set.clone()) {
if(U_FAILURE(errorCode)) {
return;
}
- if(restSet==NULL) {
+ if(restSet==nullptr) {
errorCode=U_MEMORY_ALLOCATION_ERROR;
return;
}
- UNewTrie *newTrie=utrie_open(NULL, NULL, 0x11000, 0, 0, true);
+ UNewTrie *newTrie=utrie_open(nullptr, nullptr, 0x11000, 0, 0, true);
UChar32 start, end;
UnicodeSetIterator iter(set);
@@ -65,19 +65,19 @@ public:
}
// Preflight the trie length.
- int32_t length=utrie_serialize(newTrie, NULL, 0, NULL, 8, &errorCode);
+ int32_t length=utrie_serialize(newTrie, nullptr, 0, nullptr, 8, &errorCode);
if(errorCode!=U_BUFFER_OVERFLOW_ERROR) {
return;
}
trieData=(uint32_t *)uprv_malloc(length);
- if(trieData==NULL) {
+ if(trieData==nullptr) {
errorCode=U_MEMORY_ALLOCATION_ERROR;
return;
}
errorCode=U_ZERO_ERROR;
- utrie_serialize(newTrie, trieData, length, NULL, 8, &errorCode);
+ utrie_serialize(newTrie, trieData, length, nullptr, 8, &errorCode);
utrie_unserialize(&trie, trieData, length, &errorCode); // TODO: Implement for 8-bit UTrie!
if(U_SUCCESS(errorCode)) {
diff --git a/Build/source/libs/icu/icu-src/source/test/perf/unisetperf/draft/unicont.h b/Build/source/libs/icu/icu-src/source/test/perf/unisetperf/draft/unicont.h
index aeb43d20e6e..ba1373d249b 100644
--- a/Build/source/libs/icu/icu-src/source/test/perf/unisetperf/draft/unicont.h
+++ b/Build/source/libs/icu/icu-src/source/test/perf/unisetperf/draft/unicont.h
@@ -26,13 +26,13 @@ public:
virtual UBool contains(UChar32 c) const = 0;
- virtual int32_t span(const UChar *s, int32_t length);
+ virtual int32_t span(const char16_t *s, int32_t length);
- virtual int32_t spanNot(const UChar *s, int32_t length);
+ virtual int32_t spanNot(const char16_t *s, int32_t length);
- virtual int32_t spanUTF8(const UChar *s, int32_t length);
+ virtual int32_t spanUTF8(const char16_t *s, int32_t length);
- virtual int32_t spanNotUTF8(const UChar *s, int32_t length);
+ virtual int32_t spanNotUTF8(const char16_t *s, int32_t length);
- virtual UClassID getDynamicClassID(void) const;
+ virtual UClassID getDynamicClassID() const;
};
diff --git a/Build/source/libs/icu/icu-src/source/test/perf/unisetperf/unisetperf.cpp b/Build/source/libs/icu/icu-src/source/test/perf/unisetperf/unisetperf.cpp
index e85d4492e25..9310a06950f 100644
--- a/Build/source/libs/icu/icu-src/source/test/perf/unisetperf/unisetperf.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/perf/unisetperf/unisetperf.cpp
@@ -50,7 +50,7 @@ class UnicodeSetPerformanceTest : public UPerfTest {
public:
UnicodeSetPerformanceTest(int32_t argc, const char *argv[], UErrorCode &status)
: UPerfTest(argc, argv, options, UPRV_LENGTHOF(options), unisetperf_usage, status),
- utf8(NULL), utf8Length(0), countInputCodePoints(0), spanCount(0) {
+ utf8(nullptr), utf8Length(0), countInputCodePoints(0), spanCount(0) {
if (U_SUCCESS(status)) {
UnicodeString pattern=UnicodeString(options[SET_PATTERN].value, -1, US_INV).unescape();
set.applyPattern(pattern, status);
@@ -67,12 +67,12 @@ public:
countSpans();
// Preflight the UTF-8 length and allocate utf8.
- u_strToUTF8(NULL, 0, &utf8Length, buffer, bufferLen, &status);
+ u_strToUTF8(nullptr, 0, &utf8Length, buffer, bufferLen, &status);
if(status==U_BUFFER_OVERFLOW_ERROR) {
utf8=(char *)malloc(utf8Length);
- if(utf8!=NULL) {
+ if(utf8!=nullptr) {
status=U_ZERO_ERROR;
- u_strToUTF8(utf8, utf8Length, NULL, buffer, bufferLen, &status);
+ u_strToUTF8(utf8, utf8Length, nullptr, buffer, bufferLen, &status);
} else {
status=U_MEMORY_ALLOCATION_ERROR;
}
@@ -80,7 +80,7 @@ public:
if(verbose) {
printf("code points:%ld len16:%ld len8:%ld spans:%ld "
- "cp/span:%.3g UChar/span:%.3g B/span:%.3g B/cp:%.3g\n",
+ "cp/span:%.3g char16_t/span:%.3g B/span:%.3g B/cp:%.3g\n",
(long)countInputCodePoints, (long)bufferLen, (long)utf8Length, (long)spanCount,
(double)countInputCodePoints/spanCount, (double)bufferLen/spanCount, (double)utf8Length/spanCount,
(double)utf8Length/countInputCodePoints);
@@ -89,14 +89,14 @@ public:
}
}
- virtual UPerfFunction* runIndexedTest(int32_t index, UBool exec, const char* &name, char* par = NULL);
+ virtual UPerfFunction* runIndexedTest(int32_t index, UBool exec, const char* &name, char* par = nullptr);
// Count spans of characters that are in the set,
// and spans of characters that are not in the set.
// If the very first character is in the set, then one additional
// not-span is counted.
void countSpans() {
- const UChar *s=getBuffer();
+ const char16_t *s=getBuffer();
int32_t length=getBufferLen();
int32_t i=0;
UBool tf=false;
@@ -106,7 +106,7 @@ public:
++spanCount;
}
}
- int32_t span(const UChar *s, int32_t length, int32_t start, UBool tf) const {
+ int32_t span(const char16_t *s, int32_t length, int32_t start, UBool tf) const {
UChar32 c;
int32_t prev;
while((prev=start)<length) {
@@ -118,7 +118,7 @@ public:
return prev;
}
- const UChar *getBuffer() const { return buffer; }
+ const char16_t *getBuffer() const { return buffer; }
int32_t getBufferLen() const { return bufferLen; }
char *utf8;
@@ -177,7 +177,7 @@ public:
}
virtual void call(UErrorCode* pErrorCode) {
const UnicodeSet &set=testcase.set;
- const UChar *s=testcase.getBuffer();
+ const char16_t *s=testcase.getBuffer();
int32_t length=testcase.getBufferLen();
int32_t count=0;
int32_t i=0;
@@ -192,7 +192,7 @@ public:
(long)count, (long)testcase.spanCount);
}
}
- static int32_t span(const UnicodeSet &set, const UChar *s, int32_t length, UBool tf) {
+ static int32_t span(const UnicodeSet &set, const char16_t *s, int32_t length, UBool tf) {
UChar32 c;
int32_t start=0, prev;
while((prev=start)<length) {
@@ -210,19 +210,19 @@ protected:
SpanUTF16(const UnicodeSetPerformanceTest &testcase) : Command(testcase) {
// Verify that the frozen set is equal to the unfrozen one.
UnicodeSet set;
- UChar utf16[2];
+ char16_t utf16[2];
UChar32 c, c2;
for(c=0; c<=0xffff; ++c) {
- utf16[0]=(UChar)c;
+ utf16[0]=(char16_t)c;
if(testcase.set.span(utf16, 1, USET_SPAN_CONTAINED)>0) {
set.add(c);
}
}
for(c=0xd800; c<=0xdbff; ++c) {
- utf16[0]=(UChar)c;
+ utf16[0]=(char16_t)c;
for(c2=0xdc00; c2<=0xdfff; ++c2) {
- utf16[1]=(UChar)c2;
+ utf16[1]=(char16_t)c2;
if(testcase.set.span(utf16, 2, USET_SPAN_CONTAINED)>0) {
set.add(U16_GET_SUPPLEMENTARY(c, c2));
}
@@ -239,7 +239,7 @@ public:
}
virtual void call(UErrorCode* pErrorCode) {
const UnicodeSet &set=testcase.set;
- const UChar *s=testcase.getBuffer();
+ const char16_t *s=testcase.getBuffer();
int32_t length=testcase.getBufferLen();
int32_t count=0;
int32_t i=0;
@@ -261,19 +261,19 @@ protected:
SpanBackUTF16(const UnicodeSetPerformanceTest &testcase) : Command(testcase) {
// Verify that the frozen set is equal to the unfrozen one.
UnicodeSet set;
- UChar utf16[2];
+ char16_t utf16[2];
UChar32 c, c2;
for(c=0; c<=0xffff; ++c) {
- utf16[0]=(UChar)c;
+ utf16[0]=(char16_t)c;
if(testcase.set.spanBack(utf16, 1, USET_SPAN_CONTAINED)==0) {
set.add(c);
}
}
for(c=0xd800; c<=0xdbff; ++c) {
- utf16[0]=(UChar)c;
+ utf16[0]=(char16_t)c;
for(c2=0xdc00; c2<=0xdfff; ++c2) {
- utf16[1]=(UChar)c2;
+ utf16[1]=(char16_t)c2;
if(testcase.set.spanBack(utf16, 2, USET_SPAN_CONTAINED)==0) {
set.add(U16_GET_SUPPLEMENTARY(c, c2));
}
@@ -290,7 +290,7 @@ public:
}
virtual void call(UErrorCode* pErrorCode) {
const UnicodeSet &set=testcase.set;
- const UChar *s=testcase.getBuffer();
+ const char16_t *s=testcase.getBuffer();
int32_t length=testcase.getBufferLen();
int32_t count=0;
/*
@@ -416,7 +416,7 @@ UPerfFunction* UnicodeSetPerformanceTest::runIndexedTest(int32_t index, UBool ex
case 4: name = "SpanBackUTF8"; if (exec) return SpanBackUTF8::get(*this); break;
default: name = ""; break;
}
- return NULL;
+ return nullptr;
}
int main(int argc, const char *argv[])
diff --git a/Build/source/libs/icu/icu-src/source/test/perf/usetperf/usetperf.cpp b/Build/source/libs/icu/icu-src/source/test/perf/usetperf/usetperf.cpp
index ac5bc984a1d..6bceab9e006 100644
--- a/Build/source/libs/icu/icu-src/source/test/perf/usetperf/usetperf.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/perf/usetperf/usetperf.cpp
@@ -68,7 +68,7 @@ public:
virtual void call(UErrorCode* pErrorCode){
(this->*op)();
}
- void add (void){
+ void add(){
us.clear();
for (UChar32 cp=0; cp<0x110000; ++cp) {
if (bs.get((int32_t) cp)) {
@@ -77,7 +77,7 @@ public:
}
}
- void contains(void){
+ void contains(){
int32_t temp = 0;
us.clear();
for (UChar32 cp=0; cp<0x110000; ++cp) {
@@ -87,7 +87,7 @@ public:
}
}
- void iterator(void){
+ void iterator(){
int32_t temp = 0;
UnicodeSetIterator uit(us);
while (uit.next()) {
@@ -101,7 +101,7 @@ public:
UsetPerformanceTest(int32_t argc, const char *argv[], UErrorCode &status) :UPerfTest(argc,argv,status){
}
- virtual UPerfFunction* runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ){
+ virtual UPerfFunction* runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ){
switch (index) {
case 0: name = "titlecase_letter_add";
if (exec) return new CmdOp(U_TITLECASE_LETTER, &CmdOp::add) ; break;
@@ -123,7 +123,7 @@ public:
if (exec) return new CmdPattern(PAT[2]) ; break;
default: name = ""; break;
}
- return NULL;
+ return nullptr;
}
};
diff --git a/Build/source/libs/icu/icu-src/source/test/perf/ustrperf/stringperf.cpp b/Build/source/libs/icu/icu-src/source/test/perf/ustrperf/stringperf.cpp
index 8dfc72c2e3e..cc3370a747d 100644
--- a/Build/source/libs/icu/icu-src/source/test/perf/ustrperf/stringperf.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/perf/ustrperf/stringperf.cpp
@@ -69,8 +69,8 @@ StringPerformanceTest::StringPerformanceTest(int32_t argc, const char *argv[],
UErrorCode &status)
: UPerfTest(argc, argv, status)
{
- filelines_=NULL;
- StrBuffer=NULL;
+ filelines_=nullptr;
+ StrBuffer=nullptr;
StrBufferLen=0;
int32_t len =0;
@@ -96,20 +96,20 @@ StringPerformanceTest::StringPerformanceTest(int32_t argc, const char *argv[],
filelines_ = new ULine[numLines];
for (int i =0; i < numLines; i++) {
len = filelines[i].len;
- filelines_[i].name = new UChar[len];
+ filelines_[i].name = new char16_t[len];
filelines_[i].len = len;
memcpy(filelines_[i].name, filelines[i].name, len * U_SIZEOF_UCHAR);
}
}else if(bulk_mode){
int32_t srcLen = 0;
- const UChar* src = getBuffer(srcLen,status);
+ const char16_t* src = getBuffer(srcLen,status);
if(U_FAILURE(status)){
fprintf(stderr, "FAILED to read buffer from file and create UPerfTest object. Error: %s\n", u_errorName(status));
return;
}
- StrBuffer = new UChar[srcLen];
+ StrBuffer = new char16_t[srcLen];
StrBufferLen = srcLen;
memcpy(StrBuffer, src, srcLen * U_SIZEOF_UCHAR);
@@ -155,9 +155,9 @@ UPerfFunction* StringPerformanceTest::runIndexedTest(int32_t index, UBool exec,
default:
name = "";
- return NULL;
+ return nullptr;
}
- return NULL;
+ return nullptr;
}
UPerfFunction* StringPerformanceTest::TestCtor()
diff --git a/Build/source/libs/icu/icu-src/source/test/perf/ustrperf/stringperf.h b/Build/source/libs/icu/icu-src/source/test/perf/ustrperf/stringperf.h
index 8021d8e4349..264bbf92a34 100644
--- a/Build/source/libs/icu/icu-src/source/test/perf/ustrperf/stringperf.h
+++ b/Build/source/libs/icu/icu-src/source/test/perf/ustrperf/stringperf.h
@@ -30,7 +30,7 @@ typedef std::wstring stlstring;
//#define LOOPS 10
#define catenate_STRLEN 2
-const UChar uTESTCHAR1 = 'a';
+const char16_t uTESTCHAR1 = 'a';
const wchar_t wTESTCHAR1 = 'a';
const UnicodeString uEMPTY;
const stlstring sEMPTY;
@@ -60,7 +60,7 @@ struct WLine {
enum FnType { Fn_ICU, Fn_STD };
typedef FnType FnType;
-typedef void (*ICUStringPerfFn)(const UChar* src,int32_t srcLen, UnicodeString s0);
+typedef void (*ICUStringPerfFn)(const char16_t* src,int32_t srcLen, UnicodeString s0);
typedef void (*StdStringPerfFn)(const wchar_t* src,int32_t srcLen, stlstring s0);
@@ -141,13 +141,13 @@ public:
fn1_ = func;
lines_=srcLines;
- wlines_=NULL;
+ wlines_=nullptr;
numLines_=srcNumLines;
uselen_=uselen;
line_mode_=true;
- src_ = NULL;
+ src_ = nullptr;
srcLen_ = 0;
- wsrc_ = NULL;
+ wsrc_ = nullptr;
wsrcLen_ = 0;
fnType_ = Fn_ICU;
@@ -155,9 +155,9 @@ public:
for(int32_t i=0; i<numLines_; i++) {
uS0_[i]=UnicodeString(lines_[i].name, lines_[i].len);
}
- sS0_=NULL;
- ubulk_=NULL;
- sbulk_=NULL;
+ sS0_=nullptr;
+ ubulk_=nullptr;
+ sbulk_=nullptr;
}
StringPerfFunction(StdStringPerfFn func, ULine* srcLines, int32_t srcNumLines, UBool uselen)
@@ -165,63 +165,63 @@ public:
fn2_ = func;
lines_=srcLines;
- wlines_=NULL;
+ wlines_=nullptr;
numLines_=srcNumLines;
uselen_=uselen;
line_mode_=true;
- src_ = NULL;
+ src_ = nullptr;
srcLen_ = 0;
- wsrc_ = NULL;
+ wsrc_ = nullptr;
wsrcLen_ = 0;
fnType_ = Fn_STD;
- uS0_=NULL;
- ubulk_=NULL;
- sbulk_=NULL;
+ uS0_=nullptr;
+ ubulk_=nullptr;
+ sbulk_=nullptr;
//fillin wlines_[], sS0_[]
prepareLinesForStd();
}
- StringPerfFunction(ICUStringPerfFn func, UChar* source, int32_t sourceLen, UBool uselen)
+ StringPerfFunction(ICUStringPerfFn func, char16_t* source, int32_t sourceLen, UBool uselen)
{
fn1_ = func;
- lines_=NULL;
- wlines_=NULL;
+ lines_=nullptr;
+ wlines_=nullptr;
numLines_=0;
uselen_=uselen;
line_mode_=false;
- src_ = new UChar[sourceLen];
+ src_ = new char16_t[sourceLen];
memcpy(src_, source, sourceLen * U_SIZEOF_UCHAR);
srcLen_ = sourceLen;
- wsrc_ = NULL;
+ wsrc_ = nullptr;
wsrcLen_ = 0;
fnType_ = Fn_ICU;
- uS0_=NULL;
- sS0_=NULL;
+ uS0_=nullptr;
+ sS0_=nullptr;
ubulk_=new UnicodeString(src_,srcLen_);
- sbulk_=NULL;
+ sbulk_=nullptr;
}
- StringPerfFunction(StdStringPerfFn func, UChar* source, int32_t sourceLen, UBool uselen)
+ StringPerfFunction(StdStringPerfFn func, char16_t* source, int32_t sourceLen, UBool uselen)
{
fn2_ = func;
- lines_=NULL;
- wlines_=NULL;
+ lines_=nullptr;
+ wlines_=nullptr;
numLines_=0;
uselen_=uselen;
line_mode_=false;
- src_ = new UChar[sourceLen];
+ src_ = new char16_t[sourceLen];
memcpy(src_, source, sourceLen * U_SIZEOF_UCHAR);
srcLen_ = sourceLen;
fnType_ = Fn_STD;
- uS0_=NULL;
- sS0_=NULL;
- ubulk_=NULL;
+ uS0_=nullptr;
+ sS0_=nullptr;
+ ubulk_=nullptr;
//fillin wsrc_, sbulk_
prepareBulkForStd();
@@ -241,7 +241,7 @@ public:
}
private:
- void prepareLinesForStd(void)
+ void prepareLinesForStd()
{
UErrorCode err=U_ZERO_ERROR;
@@ -272,13 +272,13 @@ private:
}
- void prepareBulkForStd(void)
+ void prepareBulkForStd()
{
UErrorCode err=U_ZERO_ERROR;
- const UChar* uSrc = src_;
+ const char16_t* uSrc = src_;
int32_t uSrcLen = srcLen_;
- wchar_t* wDest = NULL;
+ wchar_t* wDest = nullptr;
int32_t wDestLen = 0;
int32_t reqLen= 0 ;
@@ -330,7 +330,7 @@ private:
int32_t numLines_;
UBool uselen_;
- UChar* src_;
+ char16_t* src_;
int32_t srcLen_;
wchar_t* wsrc_;
int32_t wsrcLen_;
@@ -352,7 +352,7 @@ public:
~StringPerformanceTest();
virtual UPerfFunction* runIndexedTest(int32_t index, UBool exec,
const char *&name,
- char *par = NULL);
+ char *par = nullptr);
UPerfFunction* TestCtor();
UPerfFunction* TestCtor1();
UPerfFunction* TestCtor2();
@@ -382,60 +382,60 @@ public:
private:
long COUNT_;
ULine* filelines_;
- UChar* StrBuffer;
+ char16_t* StrBuffer;
int32_t StrBufferLen;
};
-inline void ctor(const UChar* src,int32_t srcLen, UnicodeString s0)
+inline void ctor(const char16_t* src,int32_t srcLen, UnicodeString s0)
{
UnicodeString a;
}
-inline void ctor1(const UChar* src,int32_t srcLen, UnicodeString s0)
+inline void ctor1(const char16_t* src,int32_t srcLen, UnicodeString s0)
{
UnicodeString b(uTESTCHAR1);
}
-inline void ctor2(const UChar* src,int32_t srcLen, UnicodeString s0)
+inline void ctor2(const char16_t* src,int32_t srcLen, UnicodeString s0)
{
UnicodeString c(uEMPTY);
}
-inline void ctor3(const UChar* src,int32_t srcLen, UnicodeString s0)
+inline void ctor3(const char16_t* src,int32_t srcLen, UnicodeString s0)
{
UnicodeString d(src,srcLen);
}
-inline UnicodeString icu_assign_helper(const UChar* src,int32_t srcLen)
+inline UnicodeString icu_assign_helper(const char16_t* src,int32_t srcLen)
{
if (srcLen==-1) { return src;}
else { return UnicodeString(src, srcLen);}
}
-inline void assign(const UChar* src,int32_t srcLen, UnicodeString s0)
+inline void assign(const char16_t* src,int32_t srcLen, UnicodeString s0)
{
unistr = icu_assign_helper(src,srcLen);
}
-inline void assign1(const UChar* src,int32_t srcLen, UnicodeString s0)
+inline void assign1(const char16_t* src,int32_t srcLen, UnicodeString s0)
{
unistr.setTo(src, srcLen);
}
-inline void assign2(const UChar* src,int32_t srcLen, UnicodeString s0)
+inline void assign2(const char16_t* src,int32_t srcLen, UnicodeString s0)
{
unistr = s0;
}
-inline void getch(const UChar* src,int32_t srcLen, UnicodeString s0)
+inline void getch(const char16_t* src,int32_t srcLen, UnicodeString s0)
{
s0.charAt(0);
}
-inline void catenate(const UChar* src,int32_t srcLen, UnicodeString s0)
+inline void catenate(const char16_t* src,int32_t srcLen, UnicodeString s0)
{
UTimer mystart, mystop;
utimer_getTime(&mystart);
@@ -451,21 +451,21 @@ inline void catenate(const UChar* src,int32_t srcLen, UnicodeString s0)
volatile int scan_idx;
U_STRING_DECL(SCAN1, "123", 3);
-inline void scan(const UChar* src,int32_t srcLen, UnicodeString s0)
+inline void scan(const char16_t* src,int32_t srcLen, UnicodeString s0)
{
- UChar c='.';
+ char16_t c='.';
scan_idx = uScan_STRING.indexOf(c);
}
-inline void scan1(const UChar* src,int32_t srcLen, UnicodeString s0)
+inline void scan1(const char16_t* src,int32_t srcLen, UnicodeString s0)
{
scan_idx = uScan_STRING.indexOf(SCAN1,3);
}
-inline void scan2(const UChar* src,int32_t srcLen, UnicodeString s0)
+inline void scan2(const char16_t* src,int32_t srcLen, UnicodeString s0)
{
- UChar c1='s';
- UChar c2='m';
+ char16_t c1='s';
+ char16_t c2='m';
scan_idx = uScan_STRING.indexOf(c1);
scan_idx = uScan_STRING.indexOf(c2);
}
diff --git a/Build/source/libs/icu/icu-src/source/test/perf/utfperf/utfperf.cpp b/Build/source/libs/icu/icu-src/source/test/perf/utfperf/utfperf.cpp
index 60d2f78b004..706f2c9655a 100644
--- a/Build/source/libs/icu/icu-src/source/test/perf/utfperf/utfperf.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/perf/utfperf/utfperf.cpp
@@ -34,9 +34,9 @@
#define OUTPUT_CAPACITY INPUT_CAPACITY
static char utf8[INPUT_CAPACITY];
-static UChar pivot[INTERMEDIATE_CAPACITY];
+static char16_t pivot[INTERMEDIATE_CAPACITY];
-static UChar output[OUTPUT_CAPACITY];
+static char16_t output[OUTPUT_CAPACITY];
static char intermediate[OUTPUT_CAPACITY];
static int32_t utf8Length, encodedLength, outputLength, countInputCodePoints;
@@ -93,9 +93,9 @@ public:
}
}
- virtual UPerfFunction* runIndexedTest(int32_t index, UBool exec, const char* &name, char* par = NULL);
+ virtual UPerfFunction* runIndexedTest(int32_t index, UBool exec, const char* &name, char* par = nullptr);
- const UChar *getBuffer() const { return buffer; }
+ const char16_t *getBuffer() const { return buffer; }
int32_t getBufferLen() const { return bufferLen; }
const char *charset;
@@ -107,7 +107,7 @@ U_CDECL_BEGIN
static void U_CALLCONV
fromUCallback(const void *context,
UConverterFromUnicodeArgs *fromUArgs,
- const UChar *codeUnits,
+ const char16_t *codeUnits,
int32_t length,
UChar32 codePoint,
UConverterCallbackReason reason,
@@ -130,7 +130,7 @@ protected:
if (U_FAILURE(errorCode)) {
fprintf(stderr, "error opening converter for \"%s\" - %s\n", testcase.charset, u_errorName(errorCode));
}
- ucnv_setFromUCallBack(cnv, fromUCallback, NULL, NULL, NULL, &errorCode);
+ ucnv_setFromUCallBack(cnv, fromUCallback, nullptr, nullptr, nullptr, &errorCode);
}
public:
virtual ~Command(){
@@ -144,7 +144,7 @@ public:
}
const UtfPerformanceTest &testcase;
- const UChar *input;
+ const char16_t *input;
int32_t inputLength;
UErrorCode errorCode;
UConverter *cnv;
@@ -161,12 +161,12 @@ public:
return t;
} else {
delete t;
- return NULL;
+ return nullptr;
}
}
virtual void call(UErrorCode* pErrorCode){
- const UChar *pIn, *pInLimit;
- UChar *pOut, *pOutLimit;
+ const char16_t *pIn, *pInLimit;
+ char16_t *pOut, *pOutLimit;
char *pInter, *pInterLimit;
const char *p;
UBool flush;
@@ -188,7 +188,7 @@ public:
do {
/* convert a block of [pIn..pInLimit[ to the encoding in intermediate[] */
pInter=intermediate;
- ucnv_fromUnicode(cnv, &pInter, pInterLimit, &pIn, pInLimit, NULL, true, pErrorCode);
+ ucnv_fromUnicode(cnv, &pInter, pInterLimit, &pIn, pInLimit, nullptr, true, pErrorCode);
encodedLength+=(int32_t)(pInter-intermediate);
if(*pErrorCode==U_BUFFER_OVERFLOW_ERROR) {
@@ -202,7 +202,7 @@ public:
/* convert the block [intermediate..pInter[ back to UTF-16 */
p=intermediate;
- ucnv_toUnicode(cnv, &pOut, pOutLimit,&p, pInter,NULL, flush,pErrorCode);
+ ucnv_toUnicode(cnv, &pOut, pOutLimit,&p, pInter,nullptr, flush,pErrorCode);
if(U_FAILURE(*pErrorCode)) {
return;
}
@@ -228,11 +228,11 @@ public:
return t;
} else {
delete t;
- return NULL;
+ return nullptr;
}
}
virtual void call(UErrorCode* pErrorCode){
- const UChar *pIn, *pInLimit;
+ const char16_t *pIn, *pInLimit;
char *pInter, *pInterLimit;
ucnv_resetFromUnicode(cnv);
@@ -247,7 +247,7 @@ public:
for(;;) {
pInter=intermediate;
- ucnv_fromUnicode(cnv, &pInter, pInterLimit, &pIn, pInLimit, NULL, true, pErrorCode);
+ ucnv_fromUnicode(cnv, &pInter, pInterLimit, &pIn, pInLimit, nullptr, true, pErrorCode);
encodedLength+=(int32_t)(pInter-intermediate);
if(*pErrorCode==U_BUFFER_OVERFLOW_ERROR) {
@@ -267,7 +267,7 @@ class FromUTF8 : public Command {
protected:
FromUTF8(const UtfPerformanceTest &testcase)
: Command(testcase),
- utf8Cnv(NULL),
+ utf8Cnv(nullptr),
input8(utf8), input8Length(utf8Length) {
utf8Cnv=ucnv_open("UTF-8", &errorCode);
}
@@ -278,7 +278,7 @@ public:
return t;
} else {
delete t;
- return NULL;
+ return nullptr;
}
}
~FromUTF8() {
@@ -287,7 +287,7 @@ public:
virtual void call(UErrorCode* pErrorCode){
const char *pIn, *pInLimit;
char *pInter, *pInterLimit;
- UChar *pivotSource, *pivotTarget, *pivotLimit;
+ char16_t *pivotSource, *pivotTarget, *pivotLimit;
ucnv_resetToUnicode(utf8Cnv);
ucnv_resetFromUnicode(cnv);
@@ -335,7 +335,7 @@ UPerfFunction* UtfPerformanceTest::runIndexedTest(int32_t index, UBool exec, con
case 2: name = "FromUTF8"; if (exec) return FromUTF8::get(*this); break;
default: name = ""; break;
}
- return NULL;
+ return nullptr;
}
int main(int argc, const char *argv[])
diff --git a/Build/source/libs/icu/icu-src/source/test/perf/utrie2perf/utrie2perf.cpp b/Build/source/libs/icu/icu-src/source/test/perf/utrie2perf/utrie2perf.cpp
index cfbc341e208..5cbef68ad12 100644
--- a/Build/source/libs/icu/icu-src/source/test/perf/utrie2perf/utrie2perf.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/perf/utrie2perf/utrie2perf.cpp
@@ -47,8 +47,8 @@ U_NAMESPACE_END
class UTrie2PerfTest : public UPerfTest {
public:
UTrie2PerfTest(int32_t argc, const char *argv[], UErrorCode &status)
- : UPerfTest(argc, argv, NULL, 0, "", status),
- utf8(NULL), utf8Length(0), countInputCodePoints(0) {
+ : UPerfTest(argc, argv, nullptr, 0, "", status),
+ utf8(nullptr), utf8Length(0), countInputCodePoints(0) {
if (U_SUCCESS(status)) {
#if 0 // See comment at unorm_initUTrie2() forward declaration.
unorm_initUTrie2(&status);
@@ -60,12 +60,12 @@ public:
countInputCodePoints = u_countChar32(buffer, bufferLen);
// Preflight the UTF-8 length and allocate utf8.
- u_strToUTF8(NULL, 0, &utf8Length, buffer, bufferLen, &status);
+ u_strToUTF8(nullptr, 0, &utf8Length, buffer, bufferLen, &status);
if(status==U_BUFFER_OVERFLOW_ERROR) {
utf8=(char *)malloc(utf8Length);
- if(utf8!=NULL) {
+ if(utf8!=nullptr) {
status=U_ZERO_ERROR;
- u_strToUTF8(utf8, utf8Length, NULL, buffer, bufferLen, &status);
+ u_strToUTF8(utf8, utf8Length, nullptr, buffer, bufferLen, &status);
} else {
status=U_MEMORY_ALLOCATION_ERROR;
}
@@ -81,9 +81,9 @@ public:
}
}
- virtual UPerfFunction* runIndexedTest(int32_t index, UBool exec, const char* &name, char* par = NULL);
+ virtual UPerfFunction* runIndexedTest(int32_t index, UBool exec, const char* &name, char* par = nullptr);
- const UChar *getBuffer() const { return buffer; }
+ const char16_t *getBuffer() const { return buffer; }
int32_t getBufferLen() const { return bufferLen; }
char *utf8;
@@ -163,7 +163,7 @@ public:
return new CheckFCDUTF8(testcase);
}
virtual void call(UErrorCode* pErrorCode) {
- UBool isFCD=unorm_checkFCDUTF8((const uint8_t *)testcase.utf8, testcase.utf8Length, NULL);
+ UBool isFCD=unorm_checkFCDUTF8((const uint8_t *)testcase.utf8, testcase.utf8Length, nullptr);
if(isFCD>1) {
fprintf(stderr, "error: bogus result from unorm_checkFCDUTF8()\n");
}
@@ -178,9 +178,9 @@ protected:
UErrorCode errorCode=U_ZERO_ERROR;
destCapacity=unorm_normalize(testcase.getBuffer(), testcase.getBufferLen(),
UNORM_NFC, 0,
- NULL, 0,
+ nullptr, 0,
&errorCode);
- dest=new UChar[destCapacity];
+ dest=new char16_t[destCapacity];
}
~ToNFC() {
delete [] dest;
@@ -202,7 +202,7 @@ public:
}
private:
- UChar *dest;
+ char16_t *dest;
int32_t destCapacity;
};
@@ -214,7 +214,7 @@ public:
return new GetBiDiClass(testcase);
}
virtual void call(UErrorCode* pErrorCode) {
- const UChar *buffer=testcase.getBuffer();
+ const char16_t *buffer=testcase.getBuffer();
int32_t length=testcase.getBufferLen();
UChar32 c;
int32_t i;
@@ -240,7 +240,7 @@ UPerfFunction* UTrie2PerfTest::runIndexedTest(int32_t index, UBool exec, const c
#endif
default: name = ""; break;
}
- return NULL;
+ return nullptr;
}
int main(int argc, const char *argv[]) {
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/BUILDRULES.py b/Build/source/libs/icu/icu-src/source/test/testdata/BUILDRULES.py
index 78745322199..a93a3816a1f 100644
--- a/Build/source/libs/icu/icu-src/source/test/testdata/BUILDRULES.py
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/BUILDRULES.py
@@ -63,7 +63,7 @@ def generate_rb(config, io, common_vars):
input_files = [InFile("%s.txt" % bn) for bn in basenames],
output_files = [OutFile("%s.res" % bn) for bn in basenames],
tool = IcuTool("genrb"),
- args = "-q -s {IN_DIR} -d {OUT_DIR} {INPUT_FILE}",
+ args = "-q -i {LIBRARY_DATA_DIR} -s {IN_DIR} -d {OUT_DIR} {INPUT_FILE}",
format_with = {},
repeat_with = {}
),
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/BidiTest.txt b/Build/source/libs/icu/icu-src/source/test/testdata/BidiTest.txt
index 5e75ef42556..193d5691721 100644
--- a/Build/source/libs/icu/icu-src/source/test/testdata/BidiTest.txt
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/BidiTest.txt
@@ -1,6 +1,6 @@
-# BidiTest-15.0.0.txt
-# Date: 2022-02-02, 23:35:34 GMT
-# © 2022 Unicode®, Inc.
+# BidiTest-15.1.0.txt
+# Date: 2023-01-05, 20:34:27 GMT
+# © 2023 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# For terms of use, see https://www.unicode.org/terms_of_use.html
#
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/CollationTest_NON_IGNORABLE_SHORT.txt b/Build/source/libs/icu/icu-src/source/test/testdata/CollationTest_NON_IGNORABLE_SHORT.txt
index 3d5b982277d..56333450fbd 100644
--- a/Build/source/libs/icu/icu-src/source/test/testdata/CollationTest_NON_IGNORABLE_SHORT.txt
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/CollationTest_NON_IGNORABLE_SHORT.txt
@@ -1,10 +1,10 @@
# CollationTest_CLDR_NON_IGNORABLE_SHORT.txt
-# Date: 2022-08-24, 17:17:50 GMT
-# © 2022 Unicode®, Inc.
+# Date: 2023-08-11, 17:59:39 GMT
+# © 2023 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# For terms of use, see https://www.unicode.org/terms_of_use.html
-# UCA Version: 15.0.0
-# UCD Version: 15.0.0
+# UCA Version: 15.1.0
+# UCD Version: 15.1.0
# For a description of the format and usage, see
# http://www.unicode.org/reports/tr35/tr35-collation.html#Root_Data_Files
@@ -6400,34 +6400,39 @@ A95F 0062
12FF2 0062
0027 0021
FF07 0021
+2018 0021
+2019 0021
+201A 0021
+201B 0021
+05F3 0021
0027 003F
FF07 003F
+2018 003F
+2019 003F
+201A 003F
+201B 003F
+05F3 003F
0027 0061
0027 0041
FF07 0061
FF07 0041
-0027 0062
-FF07 0062
-2018 0021
-2018 003F
2018 0061
2018 0041
-2018 0062
-2019 0021
-2019 003F
2019 0061
2019 0041
-2019 0062
-201A 0021
-201A 003F
201A 0061
201A 0041
-201A 0062
-201B 0021
-201B 003F
201B 0061
201B 0041
+05F3 0061
+05F3 0041
+0027 0062
+FF07 0062
+2018 0062
+2019 0062
+201A 0062
201B 0062
+05F3 0062
2039 0021
2039 003F
2039 0061
@@ -6440,54 +6445,59 @@ FF07 0062
203A 0062
0022 0021
FF02 0021
+201C 0021
+201D 0021
+201E 0021
+201F 0021
+2E42 0021
+301D 0021
+301E 0021
+301F 0021
+05F4 0021
0022 003F
FF02 003F
+201C 003F
+201D 003F
+201E 003F
+201F 003F
+2E42 003F
+301D 003F
+301E 003F
+301F 003F
+05F4 003F
0022 0061
0022 0041
FF02 0061
FF02 0041
-0022 0062
-FF02 0062
-201C 0021
-201C 003F
201C 0061
201C 0041
-201C 0062
-201D 0021
-201D 003F
201D 0061
201D 0041
-201D 0062
-201E 0021
-201E 003F
201E 0061
201E 0041
-201E 0062
-201F 0021
-201F 003F
201F 0061
201F 0041
-201F 0062
-2E42 0021
-2E42 003F
2E42 0061
2E42 0041
-2E42 0062
-301D 0021
-301D 003F
301D 0061
301D 0041
-301D 0062
-301E 0021
-301E 003F
301E 0061
301E 0041
-301E 0062
-301F 0021
-301F 003F
301F 0061
301F 0041
+05F4 0061
+05F4 0041
+0022 0062
+FF02 0062
+201C 0062
+201D 0062
+201E 0062
+201F 0062
+2E42 0062
+301D 0062
+301E 0062
301F 0062
+05F4 0062
00AB 0021
00AB 003F
00AB 0061
@@ -8558,16 +8568,6 @@ A67E 0062
05C6 0061
05C6 0041
05C6 0062
-05F3 0021
-05F3 003F
-05F3 0061
-05F3 0041
-05F3 0062
-05F4 0021
-05F4 003F
-05F4 0061
-05F4 0041
-05F4 0062
070A 0021
070A 003F
070A 0061
@@ -9273,6 +9273,11 @@ AA5C 0062
10B39 0061
10B39 0041
10B39 0062
+10A7F 0021
+10A7F 003F
+10A7F 0061
+10A7F 0041
+10A7F 0062
10AF0 0021
10AF0 003F
10AF0 0061
@@ -9623,11 +9628,6 @@ AA5C 0062
1DA8B 0061
1DA8B 0041
1DA8B 0062
-10A7F 0021
-10A7F 003F
-10A7F 0061
-10A7F 0041
-10A7F 0062
0060 0021
1FEF 0021
FF40 0021
@@ -42794,6 +42794,31 @@ A4C6 0062
2FFB 0061
2FFB 0041
2FFB 0062
+2FFC 0021
+2FFC 003F
+2FFC 0061
+2FFC 0041
+2FFC 0062
+2FFD 0021
+2FFD 003F
+2FFD 0061
+2FFD 0041
+2FFD 0062
+2FFE 0021
+2FFE 003F
+2FFE 0061
+2FFE 0041
+2FFE 0062
+2FFF 0021
+2FFF 003F
+2FFF 0061
+2FFF 0041
+2FFF 0062
+31EF 0021
+31EF 003F
+31EF 0061
+31EF 0041
+31EF 0062
31C0 0021
31C0 003F
31C0 0061
@@ -43385,11 +43410,6 @@ A838 0062
20A6 0061
20A6 0041
20A6 0062
-20A7 0021
-20A7 003F
-20A7 0061
-20A7 0041
-20A7 0062
20A9 0021
FFE6 0021
20A9 003F
@@ -66402,6 +66422,11 @@ FF30 0062
3250 0061
3250 0041
3250 0062
+20A7 0021
+20A7 003F
+20A7 0061
+20A7 0041
+20A7 0062
33B4 0021
33B4 003F
33B4 0061
@@ -174135,16 +174160,16 @@ FA8D 0062
2F8BD 0061
2F8BD 0041
2F8BD 0062
-FA8E 0021
-FA8E 003F
-FA8E 0061
-FA8E 0041
-FA8E 0062
2F8BF 0021
2F8BF 003F
2F8BF 0061
2F8BF 0041
2F8BF 0062
+FA8F 0021
+FA8F 003F
+FA8F 0061
+FA8F 0041
+FA8F 0062
2F8C3 0021
2F8C3 003F
2F8C3 0061
@@ -178020,6 +178045,26 @@ F8FF 003F
F8FF 0061
F8FF 0041
F8FF 0062
+FDD0 0021
+FDD0 003F
+FDD0 0061
+FDD0 0041
+FDD0 0062
+FDD1 0021
+FDD1 003F
+FDD1 0061
+FDD1 0041
+FDD1 0062
+FDD2 0021
+FDD2 003F
+FDD2 0061
+FDD2 0041
+FDD2 0062
+FDD3 0021
+FDD3 003F
+FDD3 0061
+FDD3 0041
+FDD3 0062
FFF0 0021
FFF0 003F
FFF0 0061
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/CollationTest_SHIFTED_SHORT.txt b/Build/source/libs/icu/icu-src/source/test/testdata/CollationTest_SHIFTED_SHORT.txt
index 750b7f12055..0e0d92b183b 100644
--- a/Build/source/libs/icu/icu-src/source/test/testdata/CollationTest_SHIFTED_SHORT.txt
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/CollationTest_SHIFTED_SHORT.txt
@@ -1,10 +1,10 @@
# CollationTest_CLDR_SHIFTED_SHORT.txt
-# Date: 2022-08-24, 17:17:52 GMT
-# © 2022 Unicode®, Inc.
+# Date: 2023-08-11, 17:59:41 GMT
+# © 2023 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# For terms of use, see https://www.unicode.org/terms_of_use.html
-# UCA Version: 15.0.0
-# UCD Version: 15.0.0
+# UCA Version: 15.1.0
+# UCD Version: 15.1.0
# For a description of the format and usage, see
# http://www.unicode.org/reports/tr35/tr35-collation.html#Root_Data_Files
@@ -2751,41 +2751,45 @@ A95F 003F
12FF2 0021
12FF2 003F
0027 0021
+05F3 0021
+2018 0021
+2019 0021
+201A 0021
+201B 0021
FF07 0021
0027 003F
-FF07 003F
-2018 0021
+05F3 003F
2018 003F
-2019 0021
2019 003F
-201A 0021
201A 003F
-201B 0021
201B 003F
+FF07 003F
2039 0021
2039 003F
203A 0021
203A 003F
0022 0021
+05F4 0021
+201C 0021
+201D 0021
+201E 0021
+201F 0021
+2E42 0021
+301D 0021
+301E 0021
+301F 0021
FF02 0021
0022 003F
-FF02 003F
-201C 0021
+05F4 003F
201C 003F
-201D 0021
201D 003F
-201E 0021
201E 003F
-201F 0021
201F 003F
-2E42 0021
2E42 003F
-301D 0021
301D 003F
-301E 0021
301E 003F
-301F 0021
301F 003F
+FF02 003F
00AB 0021
00AB 003F
00BB 0021
@@ -3316,10 +3320,6 @@ A67E 003F
05C3 003F
05C6 0021
05C6 003F
-05F3 0021
-05F3 003F
-05F4 0021
-05F4 003F
070A 0021
070A 003F
070B 0021
@@ -3660,6 +3660,9 @@ AA5C 003F
10B39 0334
10B39 0021
10B39 003F
+10A7F 0334
+10A7F 0021
+10A7F 003F
10AF0 0334
10AF0 0021
10AF0 003F
@@ -3870,9 +3873,6 @@ AA5C 003F
1DA8B 0334
1DA8B 0021
1DA8B 003F
-10A7F 0334
-10A7F 0021
-10A7F 003F
0332 0021
0332 003F
0313 0021
@@ -44029,6 +44029,31 @@ A4C6 0062
2FFB 0061
2FFB 0041
2FFB 0062
+2FFC 0021
+2FFC 003F
+2FFC 0061
+2FFC 0041
+2FFC 0062
+2FFD 0021
+2FFD 003F
+2FFD 0061
+2FFD 0041
+2FFD 0062
+2FFE 0021
+2FFE 003F
+2FFE 0061
+2FFE 0041
+2FFE 0062
+2FFF 0021
+2FFF 003F
+2FFF 0061
+2FFF 0041
+2FFF 0062
+31EF 0021
+31EF 003F
+31EF 0061
+31EF 0041
+31EF 0062
31C0 0021
31C0 003F
31C0 0061
@@ -44634,11 +44659,6 @@ A838 0062
20A6 0061
20A6 0041
20A6 0062
-20A7 0021
-20A7 003F
-20A7 0061
-20A7 0041
-20A7 0062
20A9 0021
20A9 003F
FFE6 0021
@@ -55428,15 +55448,16 @@ A95F 0061
12FF1 0061
12FF2 0061
0027 0061
-FF07 0061
+05F3 0061
2018 0061
2019 0061
201A 0061
201B 0061
+FF07 0061
2039 0061
203A 0061
0022 0061
-FF02 0061
+05F4 0061
201C 0061
201D 0061
201E 0061
@@ -55445,6 +55466,7 @@ FF02 0061
301D 0061
301E 0061
301F 0061
+FF02 0061
00AB 0061
00BB 0061
0028 0061
@@ -55710,8 +55732,6 @@ A67E 0061
05C0 0061
05C3 0061
05C6 0061
-05F3 0061
-05F4 0061
070A 0061
070B 0061
070C 0061
@@ -55853,6 +55873,7 @@ AA5C 0061
11C44 0061
11C45 0061
10B39 0061
+10A7F 0061
10AF0 0061
10AF1 0061
10AF2 0061
@@ -55923,7 +55944,6 @@ AA5C 0061
1DA89 0061
1DA8A 0061
1DA8B 0061
-10A7F 0061
0000 0061
0001 0061
0002 0061
@@ -57288,15 +57308,16 @@ A95F 0041
12FF1 0041
12FF2 0041
0027 0041
-FF07 0041
+05F3 0041
2018 0041
2019 0041
201A 0041
201B 0041
+FF07 0041
2039 0041
203A 0041
0022 0041
-FF02 0041
+05F4 0041
201C 0041
201D 0041
201E 0041
@@ -57305,6 +57326,7 @@ FF02 0041
301D 0041
301E 0041
301F 0041
+FF02 0041
00AB 0041
00BB 0041
0028 0041
@@ -57570,8 +57592,6 @@ A67E 0041
05C0 0041
05C3 0041
05C6 0041
-05F3 0041
-05F4 0041
070A 0041
070B 0041
070C 0041
@@ -57713,6 +57733,7 @@ AA5C 0041
11C44 0041
11C45 0041
10B39 0041
+10A7F 0041
10AF0 0041
10AF1 0041
10AF2 0041
@@ -57783,7 +57804,6 @@ AA5C 0041
1DA89 0041
1DA8A 0041
1DA8B 0041
-10A7F 0041
0000 0041
0001 0041
0002 0041
@@ -61424,15 +61444,16 @@ A95F 0062
12FF1 0062
12FF2 0062
0027 0062
-FF07 0062
+05F3 0062
2018 0062
2019 0062
201A 0062
201B 0062
+FF07 0062
2039 0062
203A 0062
0022 0062
-FF02 0062
+05F4 0062
201C 0062
201D 0062
201E 0062
@@ -61441,6 +61462,7 @@ FF02 0062
301D 0062
301E 0062
301F 0062
+FF02 0062
00AB 0062
00BB 0062
0028 0062
@@ -61706,8 +61728,6 @@ A67E 0062
05C0 0062
05C3 0062
05C6 0062
-05F3 0062
-05F4 0062
070A 0062
070B 0062
070C 0062
@@ -61849,6 +61869,7 @@ AA5C 0062
11C44 0062
11C45 0062
10B39 0062
+10A7F 0062
10AF0 0062
10AF1 0062
10AF2 0062
@@ -61919,7 +61940,6 @@ AA5C 0062
1DA89 0062
1DA8A 0062
1DA8B 0062
-10A7F 0062
0000 0062
0001 0062
0002 0062
@@ -72154,6 +72174,11 @@ FF30 0062
3250 0061
3250 0041
3250 0062
+20A7 0021
+20A7 003F
+20A7 0061
+20A7 0041
+20A7 0062
33B4 0021
33B4 003F
33B4 0061
@@ -189795,17 +189820,17 @@ FA8D 0062
2F8BD 0061
2F8BD 0041
2F8BD 0062
-FA8E 0021
-FA8E 003F
-FA8E 0061
-FA8E 0041
-FA8E 0062
2F8BF 0021
2F8BF 003F
2F8BF 0334
2F8BF 0061
2F8BF 0041
2F8BF 0062
+FA8F 0021
+FA8F 003F
+FA8F 0061
+FA8F 0041
+FA8F 0062
2F8C3 0021
2F8C3 003F
2F8C3 0334
@@ -193990,6 +194015,26 @@ F8FF 003F
F8FF 0061
F8FF 0041
F8FF 0062
+FDD0 0021
+FDD0 003F
+FDD0 0061
+FDD0 0041
+FDD0 0062
+FDD1 0021
+FDD1 003F
+FDD1 0061
+FDD1 0041
+FDD1 0062
+FDD2 0021
+FDD2 003F
+FDD2 0061
+FDD2 0041
+FDD2 0062
+FDD3 0021
+FDD3 003F
+FDD3 0061
+FDD3 0041
+FDD3 0062
FFF0 0021
FFF0 003F
FFF0 0061
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/GraphemeBreakTest.txt b/Build/source/libs/icu/icu-src/source/test/testdata/GraphemeBreakTest.txt
index 91ab748f1d0..0a8c3640f55 100644
--- a/Build/source/libs/icu/icu-src/source/test/testdata/GraphemeBreakTest.txt
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/GraphemeBreakTest.txt
@@ -1,6 +1,6 @@
-# GraphemeBreakTest-cldr-15.0.0.txt
-# Date: 2022-05-11, 21:35:20 GMT
-# © 2022 Unicode®, Inc.
+# GraphemeBreakTest-cldr-15.1.0.txt
+# Date: 2023-08-11, 17:35:48 GMT
+# © 2023 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# For terms of use, see https://www.unicode.org/terms_of_use.html
#
@@ -36,8 +36,8 @@
÷ 0020 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
÷ 0020 ÷ 0600 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
÷ 0020 × 0308 ÷ 0600 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
-÷ 0020 × 0903 ÷ # ÷ [0.2] SPACE (Other) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
-÷ 0020 × 0308 × 0903 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 0020 × 0A03 ÷ # ÷ [0.2] SPACE (Other) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 0020 × 0308 × 0A03 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
÷ 0020 ÷ 1100 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 0020 × 0308 ÷ 1100 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 0020 ÷ 1160 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
@@ -48,14 +48,24 @@
÷ 0020 × 0308 ÷ AC00 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
÷ 0020 ÷ AC01 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
÷ 0020 × 0308 ÷ AC01 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
-÷ 0020 ÷ 0915 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3]
-÷ 0020 × 0308 ÷ 0915 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3]
+÷ 0020 × 0900 ÷ # ÷ [0.2] SPACE (Other) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0020 × 0308 × 0900 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0020 × 0903 ÷ # ÷ [0.2] SPACE (Other) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0020 × 0308 × 0903 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0020 ÷ 0904 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 0020 × 0308 ÷ 0904 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 0020 ÷ 0D4E ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0020 × 0308 ÷ 0D4E ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0020 ÷ 0915 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0020 × 0308 ÷ 0915 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
÷ 0020 ÷ 231A ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 0020 × 0308 ÷ 231A ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 0020 × 0300 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
÷ 0020 × 0308 × 0300 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
-÷ 0020 × 094D ÷ # ÷ [0.2] SPACE (Other) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3]
-÷ 0020 × 0308 × 094D ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3]
+÷ 0020 × 093C ÷ # ÷ [0.2] SPACE (Other) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 0020 × 0308 × 093C ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 0020 × 094D ÷ # ÷ [0.2] SPACE (Other) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 0020 × 0308 × 094D ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
÷ 0020 × 200D ÷ # ÷ [0.2] SPACE (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 0020 × 0308 × 200D ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 0020 ÷ 0378 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
@@ -74,8 +84,8 @@
÷ 000D ÷ 0308 ÷ 1F1E6 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
÷ 000D ÷ 0600 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
÷ 000D ÷ 0308 ÷ 0600 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
-÷ 000D ÷ 0903 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
-÷ 000D ÷ 0308 × 0903 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 000D ÷ 0A03 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 000D ÷ 0308 × 0A03 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
÷ 000D ÷ 1100 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 000D ÷ 0308 ÷ 1100 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 000D ÷ 1160 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
@@ -86,14 +96,24 @@
÷ 000D ÷ 0308 ÷ AC00 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
÷ 000D ÷ AC01 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
÷ 000D ÷ 0308 ÷ AC01 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
-÷ 000D ÷ 0915 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3]
-÷ 000D ÷ 0308 ÷ 0915 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3]
+÷ 000D ÷ 0900 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 000D ÷ 0308 × 0900 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 000D ÷ 0903 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 000D ÷ 0308 × 0903 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 000D ÷ 0904 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 000D ÷ 0308 ÷ 0904 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 000D ÷ 0D4E ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 000D ÷ 0308 ÷ 0D4E ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 000D ÷ 0915 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 000D ÷ 0308 ÷ 0915 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
÷ 000D ÷ 231A ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] WATCH (ExtPict) ÷ [0.3]
÷ 000D ÷ 0308 ÷ 231A ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 000D ÷ 0300 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
÷ 000D ÷ 0308 × 0300 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
-÷ 000D ÷ 094D ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3]
-÷ 000D ÷ 0308 × 094D ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3]
+÷ 000D ÷ 093C ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 000D ÷ 0308 × 093C ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 000D ÷ 094D ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 000D ÷ 0308 × 094D ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
÷ 000D ÷ 200D ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 000D ÷ 0308 × 200D ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 000D ÷ 0378 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] <reserved-0378> (Other) ÷ [0.3]
@@ -112,8 +132,8 @@
÷ 000A ÷ 0308 ÷ 1F1E6 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
÷ 000A ÷ 0600 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
÷ 000A ÷ 0308 ÷ 0600 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
-÷ 000A ÷ 0903 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
-÷ 000A ÷ 0308 × 0903 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 000A ÷ 0A03 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 000A ÷ 0308 × 0A03 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
÷ 000A ÷ 1100 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 000A ÷ 0308 ÷ 1100 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 000A ÷ 1160 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
@@ -124,14 +144,24 @@
÷ 000A ÷ 0308 ÷ AC00 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
÷ 000A ÷ AC01 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
÷ 000A ÷ 0308 ÷ AC01 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
-÷ 000A ÷ 0915 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3]
-÷ 000A ÷ 0308 ÷ 0915 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3]
+÷ 000A ÷ 0900 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 000A ÷ 0308 × 0900 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 000A ÷ 0903 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 000A ÷ 0308 × 0903 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 000A ÷ 0904 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 000A ÷ 0308 ÷ 0904 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 000A ÷ 0D4E ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 000A ÷ 0308 ÷ 0D4E ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 000A ÷ 0915 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 000A ÷ 0308 ÷ 0915 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
÷ 000A ÷ 231A ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] WATCH (ExtPict) ÷ [0.3]
÷ 000A ÷ 0308 ÷ 231A ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 000A ÷ 0300 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
÷ 000A ÷ 0308 × 0300 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
-÷ 000A ÷ 094D ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3]
-÷ 000A ÷ 0308 × 094D ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3]
+÷ 000A ÷ 093C ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 000A ÷ 0308 × 093C ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 000A ÷ 094D ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 000A ÷ 0308 × 094D ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
÷ 000A ÷ 200D ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 000A ÷ 0308 × 200D ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 000A ÷ 0378 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] <reserved-0378> (Other) ÷ [0.3]
@@ -150,8 +180,8 @@
÷ 0001 ÷ 0308 ÷ 1F1E6 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
÷ 0001 ÷ 0600 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
÷ 0001 ÷ 0308 ÷ 0600 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
-÷ 0001 ÷ 0903 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
-÷ 0001 ÷ 0308 × 0903 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 0001 ÷ 0A03 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 0001 ÷ 0308 × 0A03 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
÷ 0001 ÷ 1100 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 0001 ÷ 0308 ÷ 1100 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 0001 ÷ 1160 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
@@ -162,14 +192,24 @@
÷ 0001 ÷ 0308 ÷ AC00 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
÷ 0001 ÷ AC01 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
÷ 0001 ÷ 0308 ÷ AC01 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
-÷ 0001 ÷ 0915 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3]
-÷ 0001 ÷ 0308 ÷ 0915 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3]
+÷ 0001 ÷ 0900 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0001 ÷ 0308 × 0900 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0001 ÷ 0903 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0001 ÷ 0308 × 0903 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0001 ÷ 0904 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 0001 ÷ 0308 ÷ 0904 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 0001 ÷ 0D4E ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0001 ÷ 0308 ÷ 0D4E ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0001 ÷ 0915 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0001 ÷ 0308 ÷ 0915 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
÷ 0001 ÷ 231A ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] WATCH (ExtPict) ÷ [0.3]
÷ 0001 ÷ 0308 ÷ 231A ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 0001 ÷ 0300 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
÷ 0001 ÷ 0308 × 0300 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
-÷ 0001 ÷ 094D ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3]
-÷ 0001 ÷ 0308 × 094D ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3]
+÷ 0001 ÷ 093C ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 0001 ÷ 0308 × 093C ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 0001 ÷ 094D ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 0001 ÷ 0308 × 094D ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
÷ 0001 ÷ 200D ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 0001 ÷ 0308 × 200D ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 0001 ÷ 0378 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] <reserved-0378> (Other) ÷ [0.3]
@@ -188,8 +228,8 @@
÷ 034F × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
÷ 034F ÷ 0600 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
÷ 034F × 0308 ÷ 0600 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
-÷ 034F × 0903 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
-÷ 034F × 0308 × 0903 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 034F × 0A03 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 034F × 0308 × 0A03 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
÷ 034F ÷ 1100 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 034F × 0308 ÷ 1100 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 034F ÷ 1160 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
@@ -200,14 +240,24 @@
÷ 034F × 0308 ÷ AC00 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
÷ 034F ÷ AC01 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
÷ 034F × 0308 ÷ AC01 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
-÷ 034F ÷ 0915 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3]
-÷ 034F × 0308 ÷ 0915 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3]
+÷ 034F × 0900 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 034F × 0308 × 0900 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 034F × 0903 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 034F × 0308 × 0903 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 034F ÷ 0904 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 034F × 0308 ÷ 0904 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 034F ÷ 0D4E ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 034F × 0308 ÷ 0D4E ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 034F ÷ 0915 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 034F × 0308 ÷ 0915 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
÷ 034F ÷ 231A ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 034F × 0308 ÷ 231A ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 034F × 0300 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
÷ 034F × 0308 × 0300 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
-÷ 034F × 094D ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3]
-÷ 034F × 0308 × 094D ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3]
+÷ 034F × 093C ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 034F × 0308 × 093C ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 034F × 094D ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 034F × 0308 × 094D ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
÷ 034F × 200D ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 034F × 0308 × 200D ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 034F ÷ 0378 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
@@ -226,8 +276,8 @@
÷ 1F1E6 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
÷ 1F1E6 ÷ 0600 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
÷ 1F1E6 × 0308 ÷ 0600 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
-÷ 1F1E6 × 0903 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
-÷ 1F1E6 × 0308 × 0903 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 1F1E6 × 0A03 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 1F1E6 × 0308 × 0A03 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
÷ 1F1E6 ÷ 1100 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 1F1E6 × 0308 ÷ 1100 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 1F1E6 ÷ 1160 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
@@ -238,14 +288,24 @@
÷ 1F1E6 × 0308 ÷ AC00 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
÷ 1F1E6 ÷ AC01 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
÷ 1F1E6 × 0308 ÷ AC01 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
-÷ 1F1E6 ÷ 0915 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3]
-÷ 1F1E6 × 0308 ÷ 0915 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3]
+÷ 1F1E6 × 0900 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 1F1E6 × 0308 × 0900 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 1F1E6 × 0903 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 1F1E6 × 0308 × 0903 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 1F1E6 ÷ 0904 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 0904 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 1F1E6 ÷ 0D4E ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 0D4E ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 1F1E6 ÷ 0915 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 0915 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
÷ 1F1E6 ÷ 231A ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 1F1E6 × 0308 ÷ 231A ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 1F1E6 × 0300 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
÷ 1F1E6 × 0308 × 0300 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
-÷ 1F1E6 × 094D ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3]
-÷ 1F1E6 × 0308 × 094D ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3]
+÷ 1F1E6 × 093C ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 1F1E6 × 0308 × 093C ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 1F1E6 × 094D ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 1F1E6 × 0308 × 094D ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
÷ 1F1E6 × 200D ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 1F1E6 × 0308 × 200D ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 1F1E6 ÷ 0378 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
@@ -264,8 +324,8 @@
÷ 0600 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
÷ 0600 × 0600 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
÷ 0600 × 0308 ÷ 0600 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
-÷ 0600 × 0903 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
-÷ 0600 × 0308 × 0903 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 0600 × 0A03 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 0600 × 0308 × 0A03 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
÷ 0600 × 1100 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 0600 × 0308 ÷ 1100 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 0600 × 1160 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
@@ -276,56 +336,76 @@
÷ 0600 × 0308 ÷ AC00 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
÷ 0600 × AC01 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
÷ 0600 × 0308 ÷ AC01 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
-÷ 0600 × 0915 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3]
-÷ 0600 × 0308 ÷ 0915 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3]
+÷ 0600 × 0900 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0600 × 0308 × 0900 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0600 × 0903 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0600 × 0308 × 0903 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0600 × 0904 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 0600 × 0308 ÷ 0904 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 0600 × 0D4E ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0600 × 0308 ÷ 0D4E ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0600 × 0915 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0600 × 0308 ÷ 0915 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
÷ 0600 × 231A ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] WATCH (ExtPict) ÷ [0.3]
÷ 0600 × 0308 ÷ 231A ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 0600 × 0300 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
÷ 0600 × 0308 × 0300 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
-÷ 0600 × 094D ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3]
-÷ 0600 × 0308 × 094D ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3]
+÷ 0600 × 093C ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 0600 × 0308 × 093C ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 0600 × 094D ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 0600 × 0308 × 094D ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
÷ 0600 × 200D ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 0600 × 0308 × 200D ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 0600 × 0378 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] <reserved-0378> (Other) ÷ [0.3]
÷ 0600 × 0308 ÷ 0378 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
-÷ 0903 ÷ 0020 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] SPACE (Other) ÷ [0.3]
-÷ 0903 × 0308 ÷ 0020 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
-÷ 0903 ÷ 000D ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-÷ 0903 × 0308 ÷ 000D ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-÷ 0903 ÷ 000A ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-÷ 0903 × 0308 ÷ 000A ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-÷ 0903 ÷ 0001 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
-÷ 0903 × 0308 ÷ 0001 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
-÷ 0903 × 034F ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
-÷ 0903 × 0308 × 034F ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
-÷ 0903 ÷ 1F1E6 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-÷ 0903 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-÷ 0903 ÷ 0600 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
-÷ 0903 × 0308 ÷ 0600 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
-÷ 0903 × 0903 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
-÷ 0903 × 0308 × 0903 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
-÷ 0903 ÷ 1100 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
-÷ 0903 × 0308 ÷ 1100 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
-÷ 0903 ÷ 1160 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
-÷ 0903 × 0308 ÷ 1160 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
-÷ 0903 ÷ 11A8 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
-÷ 0903 × 0308 ÷ 11A8 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
-÷ 0903 ÷ AC00 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
-÷ 0903 × 0308 ÷ AC00 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
-÷ 0903 ÷ AC01 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
-÷ 0903 × 0308 ÷ AC01 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
-÷ 0903 ÷ 0915 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3]
-÷ 0903 × 0308 ÷ 0915 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3]
-÷ 0903 ÷ 231A ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
-÷ 0903 × 0308 ÷ 231A ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
-÷ 0903 × 0300 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
-÷ 0903 × 0308 × 0300 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
-÷ 0903 × 094D ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3]
-÷ 0903 × 0308 × 094D ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3]
-÷ 0903 × 200D ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
-÷ 0903 × 0308 × 200D ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
-÷ 0903 ÷ 0378 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
-÷ 0903 × 0308 ÷ 0378 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 0A03 ÷ 0020 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 0A03 × 0308 ÷ 0020 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 0A03 ÷ 000D ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 0A03 × 0308 ÷ 000D ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 0A03 ÷ 000A ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 0A03 × 0308 ÷ 000A ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 0A03 ÷ 0001 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 0A03 × 0308 ÷ 0001 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 0A03 × 034F ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
+÷ 0A03 × 0308 × 034F ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
+÷ 0A03 ÷ 1F1E6 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0A03 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0A03 ÷ 0600 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 0A03 × 0308 ÷ 0600 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 0A03 × 0A03 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 0A03 × 0308 × 0A03 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 0A03 ÷ 1100 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 0A03 × 0308 ÷ 1100 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 0A03 ÷ 1160 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 0A03 × 0308 ÷ 1160 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 0A03 ÷ 11A8 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 0A03 × 0308 ÷ 11A8 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 0A03 ÷ AC00 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 0A03 × 0308 ÷ AC00 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 0A03 ÷ AC01 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 0A03 × 0308 ÷ AC01 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 0A03 × 0900 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0A03 × 0308 × 0900 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0A03 × 0903 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0A03 × 0308 × 0903 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0A03 ÷ 0904 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 0A03 × 0308 ÷ 0904 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 0A03 ÷ 0D4E ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0A03 × 0308 ÷ 0D4E ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0A03 ÷ 0915 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0A03 × 0308 ÷ 0915 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0A03 ÷ 231A ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
+÷ 0A03 × 0308 ÷ 231A ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
+÷ 0A03 × 0300 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
+÷ 0A03 × 0308 × 0300 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
+÷ 0A03 × 093C ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 0A03 × 0308 × 093C ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 0A03 × 094D ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 0A03 × 0308 × 094D ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 0A03 × 200D ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
+÷ 0A03 × 0308 × 200D ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
+÷ 0A03 ÷ 0378 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 0A03 × 0308 ÷ 0378 ÷ # ÷ [0.2] GURMUKHI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
÷ 1100 ÷ 0020 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] SPACE (Other) ÷ [0.3]
÷ 1100 × 0308 ÷ 0020 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
÷ 1100 ÷ 000D ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
@@ -340,8 +420,8 @@
÷ 1100 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
÷ 1100 ÷ 0600 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
÷ 1100 × 0308 ÷ 0600 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
-÷ 1100 × 0903 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
-÷ 1100 × 0308 × 0903 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 1100 × 0A03 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 1100 × 0308 × 0A03 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
÷ 1100 × 1100 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [6.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 1100 × 0308 ÷ 1100 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 1100 × 1160 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [6.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
@@ -352,14 +432,24 @@
÷ 1100 × 0308 ÷ AC00 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
÷ 1100 × AC01 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [6.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
÷ 1100 × 0308 ÷ AC01 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
-÷ 1100 ÷ 0915 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3]
-÷ 1100 × 0308 ÷ 0915 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3]
+÷ 1100 × 0900 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 1100 × 0308 × 0900 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 1100 × 0903 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 1100 × 0308 × 0903 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 1100 ÷ 0904 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 1100 × 0308 ÷ 0904 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 1100 ÷ 0D4E ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 1100 × 0308 ÷ 0D4E ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 1100 ÷ 0915 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 1100 × 0308 ÷ 0915 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
÷ 1100 ÷ 231A ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 1100 × 0308 ÷ 231A ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 1100 × 0300 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
÷ 1100 × 0308 × 0300 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
-÷ 1100 × 094D ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3]
-÷ 1100 × 0308 × 094D ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3]
+÷ 1100 × 093C ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 1100 × 0308 × 093C ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 1100 × 094D ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 1100 × 0308 × 094D ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
÷ 1100 × 200D ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 1100 × 0308 × 200D ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 1100 ÷ 0378 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
@@ -378,8 +468,8 @@
÷ 1160 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
÷ 1160 ÷ 0600 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
÷ 1160 × 0308 ÷ 0600 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
-÷ 1160 × 0903 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
-÷ 1160 × 0308 × 0903 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 1160 × 0A03 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 1160 × 0308 × 0A03 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
÷ 1160 ÷ 1100 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 1160 × 0308 ÷ 1100 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 1160 × 1160 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [7.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
@@ -390,14 +480,24 @@
÷ 1160 × 0308 ÷ AC00 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
÷ 1160 ÷ AC01 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
÷ 1160 × 0308 ÷ AC01 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
-÷ 1160 ÷ 0915 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3]
-÷ 1160 × 0308 ÷ 0915 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3]
+÷ 1160 × 0900 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 1160 × 0308 × 0900 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 1160 × 0903 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 1160 × 0308 × 0903 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 1160 ÷ 0904 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 1160 × 0308 ÷ 0904 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 1160 ÷ 0D4E ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 1160 × 0308 ÷ 0D4E ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 1160 ÷ 0915 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 1160 × 0308 ÷ 0915 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
÷ 1160 ÷ 231A ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 1160 × 0308 ÷ 231A ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 1160 × 0300 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
÷ 1160 × 0308 × 0300 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
-÷ 1160 × 094D ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3]
-÷ 1160 × 0308 × 094D ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3]
+÷ 1160 × 093C ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 1160 × 0308 × 093C ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 1160 × 094D ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 1160 × 0308 × 094D ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
÷ 1160 × 200D ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 1160 × 0308 × 200D ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 1160 ÷ 0378 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
@@ -416,8 +516,8 @@
÷ 11A8 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
÷ 11A8 ÷ 0600 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
÷ 11A8 × 0308 ÷ 0600 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
-÷ 11A8 × 0903 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
-÷ 11A8 × 0308 × 0903 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 11A8 × 0A03 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 11A8 × 0308 × 0A03 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
÷ 11A8 ÷ 1100 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 11A8 × 0308 ÷ 1100 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 11A8 ÷ 1160 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
@@ -428,14 +528,24 @@
÷ 11A8 × 0308 ÷ AC00 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
÷ 11A8 ÷ AC01 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
÷ 11A8 × 0308 ÷ AC01 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
-÷ 11A8 ÷ 0915 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3]
-÷ 11A8 × 0308 ÷ 0915 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3]
+÷ 11A8 × 0900 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 11A8 × 0308 × 0900 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 11A8 × 0903 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 11A8 × 0308 × 0903 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 11A8 ÷ 0904 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 11A8 × 0308 ÷ 0904 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 11A8 ÷ 0D4E ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 11A8 × 0308 ÷ 0D4E ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 11A8 ÷ 0915 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 11A8 × 0308 ÷ 0915 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
÷ 11A8 ÷ 231A ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 11A8 × 0308 ÷ 231A ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 11A8 × 0300 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
÷ 11A8 × 0308 × 0300 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
-÷ 11A8 × 094D ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3]
-÷ 11A8 × 0308 × 094D ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3]
+÷ 11A8 × 093C ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 11A8 × 0308 × 093C ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 11A8 × 094D ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 11A8 × 0308 × 094D ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
÷ 11A8 × 200D ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 11A8 × 0308 × 200D ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 11A8 ÷ 0378 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
@@ -454,8 +564,8 @@
÷ AC00 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
÷ AC00 ÷ 0600 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
÷ AC00 × 0308 ÷ 0600 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
-÷ AC00 × 0903 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
-÷ AC00 × 0308 × 0903 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ AC00 × 0A03 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ AC00 × 0308 × 0A03 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
÷ AC00 ÷ 1100 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ AC00 × 0308 ÷ 1100 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ AC00 × 1160 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [7.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
@@ -466,14 +576,24 @@
÷ AC00 × 0308 ÷ AC00 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
÷ AC00 ÷ AC01 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
÷ AC00 × 0308 ÷ AC01 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
-÷ AC00 ÷ 0915 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3]
-÷ AC00 × 0308 ÷ 0915 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3]
+÷ AC00 × 0900 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ AC00 × 0308 × 0900 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ AC00 × 0903 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ AC00 × 0308 × 0903 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ AC00 ÷ 0904 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ AC00 × 0308 ÷ 0904 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ AC00 ÷ 0D4E ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ AC00 × 0308 ÷ 0D4E ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ AC00 ÷ 0915 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ AC00 × 0308 ÷ 0915 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
÷ AC00 ÷ 231A ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ AC00 × 0308 ÷ 231A ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ AC00 × 0300 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
÷ AC00 × 0308 × 0300 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
-÷ AC00 × 094D ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3]
-÷ AC00 × 0308 × 094D ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3]
+÷ AC00 × 093C ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ AC00 × 0308 × 093C ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ AC00 × 094D ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ AC00 × 0308 × 094D ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
÷ AC00 × 200D ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ AC00 × 0308 × 200D ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ AC00 ÷ 0378 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
@@ -492,8 +612,8 @@
÷ AC01 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
÷ AC01 ÷ 0600 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
÷ AC01 × 0308 ÷ 0600 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
-÷ AC01 × 0903 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
-÷ AC01 × 0308 × 0903 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ AC01 × 0A03 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ AC01 × 0308 × 0A03 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
÷ AC01 ÷ 1100 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ AC01 × 0308 ÷ 1100 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ AC01 ÷ 1160 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
@@ -504,56 +624,268 @@
÷ AC01 × 0308 ÷ AC00 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
÷ AC01 ÷ AC01 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
÷ AC01 × 0308 ÷ AC01 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
-÷ AC01 ÷ 0915 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3]
-÷ AC01 × 0308 ÷ 0915 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3]
+÷ AC01 × 0900 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ AC01 × 0308 × 0900 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ AC01 × 0903 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ AC01 × 0308 × 0903 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ AC01 ÷ 0904 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ AC01 × 0308 ÷ 0904 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ AC01 ÷ 0D4E ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ AC01 × 0308 ÷ 0D4E ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ AC01 ÷ 0915 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ AC01 × 0308 ÷ 0915 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
÷ AC01 ÷ 231A ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ AC01 × 0308 ÷ 231A ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ AC01 × 0300 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
÷ AC01 × 0308 × 0300 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
-÷ AC01 × 094D ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3]
-÷ AC01 × 0308 × 094D ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3]
+÷ AC01 × 093C ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ AC01 × 0308 × 093C ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ AC01 × 094D ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ AC01 × 0308 × 094D ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
÷ AC01 × 200D ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ AC01 × 0308 × 200D ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ AC01 ÷ 0378 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
÷ AC01 × 0308 ÷ 0378 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
-÷ 0915 ÷ 0020 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [999.0] SPACE (Other) ÷ [0.3]
-÷ 0915 × 0308 ÷ 0020 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
-÷ 0915 ÷ 000D ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-÷ 0915 × 0308 ÷ 000D ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-÷ 0915 ÷ 000A ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-÷ 0915 × 0308 ÷ 000A ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-÷ 0915 ÷ 0001 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
-÷ 0915 × 0308 ÷ 0001 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
-÷ 0915 × 034F ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
-÷ 0915 × 0308 × 034F ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
-÷ 0915 ÷ 1F1E6 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-÷ 0915 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-÷ 0915 ÷ 0600 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
-÷ 0915 × 0308 ÷ 0600 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
-÷ 0915 × 0903 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
-÷ 0915 × 0308 × 0903 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
-÷ 0915 ÷ 1100 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
-÷ 0915 × 0308 ÷ 1100 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
-÷ 0915 ÷ 1160 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
-÷ 0915 × 0308 ÷ 1160 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
-÷ 0915 ÷ 11A8 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
-÷ 0915 × 0308 ÷ 11A8 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
-÷ 0915 ÷ AC00 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
-÷ 0915 × 0308 ÷ AC00 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
-÷ 0915 ÷ AC01 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
-÷ 0915 × 0308 ÷ AC01 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
-÷ 0915 ÷ 0915 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3]
-÷ 0915 × 0308 ÷ 0915 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3]
-÷ 0915 ÷ 231A ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
-÷ 0915 × 0308 ÷ 231A ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
-÷ 0915 × 0300 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
-÷ 0915 × 0308 × 0300 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
-÷ 0915 × 094D ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3]
-÷ 0915 × 0308 × 094D ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3]
-÷ 0915 × 200D ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
-÷ 0915 × 0308 × 200D ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
-÷ 0915 ÷ 0378 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
-÷ 0915 × 0308 ÷ 0378 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 0900 ÷ 0020 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 0900 × 0308 ÷ 0020 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 0900 ÷ 000D ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 0900 × 0308 ÷ 000D ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 0900 ÷ 000A ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 0900 × 0308 ÷ 000A ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 0900 ÷ 0001 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 0900 × 0308 ÷ 0001 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 0900 × 034F ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
+÷ 0900 × 0308 × 034F ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
+÷ 0900 ÷ 1F1E6 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0900 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0900 ÷ 0600 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 0900 × 0308 ÷ 0600 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 0900 × 0A03 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 0900 × 0308 × 0A03 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 0900 ÷ 1100 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 0900 × 0308 ÷ 1100 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 0900 ÷ 1160 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 0900 × 0308 ÷ 1160 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 0900 ÷ 11A8 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 0900 × 0308 ÷ 11A8 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 0900 ÷ AC00 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 0900 × 0308 ÷ AC00 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 0900 ÷ AC01 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 0900 × 0308 ÷ AC01 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 0900 × 0900 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0900 × 0308 × 0900 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0900 × 0903 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0900 × 0308 × 0903 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0900 ÷ 0904 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 0900 × 0308 ÷ 0904 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 0900 ÷ 0D4E ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0900 × 0308 ÷ 0D4E ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0900 ÷ 0915 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0900 × 0308 ÷ 0915 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0900 ÷ 231A ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
+÷ 0900 × 0308 ÷ 231A ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
+÷ 0900 × 0300 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
+÷ 0900 × 0308 × 0300 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
+÷ 0900 × 093C ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 0900 × 0308 × 093C ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 0900 × 094D ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 0900 × 0308 × 094D ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 0900 × 200D ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
+÷ 0900 × 0308 × 200D ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
+÷ 0900 ÷ 0378 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 0900 × 0308 ÷ 0378 ÷ # ÷ [0.2] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 0903 ÷ 0020 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 0903 × 0308 ÷ 0020 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 0903 ÷ 000D ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 0903 × 0308 ÷ 000D ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 0903 ÷ 000A ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 0903 × 0308 ÷ 000A ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 0903 ÷ 0001 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 0903 × 0308 ÷ 0001 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 0903 × 034F ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
+÷ 0903 × 0308 × 034F ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
+÷ 0903 ÷ 1F1E6 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0903 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0903 ÷ 0600 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 0903 × 0308 ÷ 0600 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 0903 × 0A03 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 0903 × 0308 × 0A03 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 0903 ÷ 1100 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 0903 × 0308 ÷ 1100 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 0903 ÷ 1160 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 0903 × 0308 ÷ 1160 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 0903 ÷ 11A8 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 0903 × 0308 ÷ 11A8 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 0903 ÷ AC00 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 0903 × 0308 ÷ AC00 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 0903 ÷ AC01 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 0903 × 0308 ÷ AC01 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 0903 × 0900 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0903 × 0308 × 0900 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0903 × 0903 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0903 × 0308 × 0903 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0903 ÷ 0904 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 0903 × 0308 ÷ 0904 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 0903 ÷ 0D4E ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0903 × 0308 ÷ 0D4E ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0903 ÷ 0915 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0903 × 0308 ÷ 0915 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0903 ÷ 231A ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
+÷ 0903 × 0308 ÷ 231A ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
+÷ 0903 × 0300 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
+÷ 0903 × 0308 × 0300 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
+÷ 0903 × 093C ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 0903 × 0308 × 093C ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 0903 × 094D ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 0903 × 0308 × 094D ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 0903 × 200D ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
+÷ 0903 × 0308 × 200D ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
+÷ 0903 ÷ 0378 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 0903 × 0308 ÷ 0378 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 0904 ÷ 0020 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 0904 × 0308 ÷ 0020 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 0904 ÷ 000D ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 0904 × 0308 ÷ 000D ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 0904 ÷ 000A ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 0904 × 0308 ÷ 000A ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 0904 ÷ 0001 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 0904 × 0308 ÷ 0001 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 0904 × 034F ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
+÷ 0904 × 0308 × 034F ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
+÷ 0904 ÷ 1F1E6 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0904 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0904 ÷ 0600 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 0904 × 0308 ÷ 0600 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 0904 × 0A03 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 0904 × 0308 × 0A03 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 0904 ÷ 1100 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 0904 × 0308 ÷ 1100 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 0904 ÷ 1160 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 0904 × 0308 ÷ 1160 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 0904 ÷ 11A8 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 0904 × 0308 ÷ 11A8 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 0904 ÷ AC00 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 0904 × 0308 ÷ AC00 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 0904 ÷ AC01 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 0904 × 0308 ÷ AC01 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 0904 × 0900 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0904 × 0308 × 0900 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0904 × 0903 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0904 × 0308 × 0903 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0904 ÷ 0904 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 0904 × 0308 ÷ 0904 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 0904 ÷ 0D4E ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0904 × 0308 ÷ 0D4E ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0904 ÷ 0915 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0904 × 0308 ÷ 0915 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0904 ÷ 231A ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
+÷ 0904 × 0308 ÷ 231A ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
+÷ 0904 × 0300 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
+÷ 0904 × 0308 × 0300 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
+÷ 0904 × 093C ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 0904 × 0308 × 093C ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 0904 × 094D ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 0904 × 0308 × 094D ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 0904 × 200D ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
+÷ 0904 × 0308 × 200D ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
+÷ 0904 ÷ 0378 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 0904 × 0308 ÷ 0378 ÷ # ÷ [0.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 0D4E × 0020 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.2] SPACE (Other) ÷ [0.3]
+÷ 0D4E × 0308 ÷ 0020 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 0D4E ÷ 000D ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 0D4E × 0308 ÷ 000D ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 0D4E ÷ 000A ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 0D4E × 0308 ÷ 000A ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 0D4E ÷ 0001 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 0D4E × 0308 ÷ 0001 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 0D4E × 034F ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
+÷ 0D4E × 0308 × 034F ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
+÷ 0D4E × 1F1E6 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0D4E × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0D4E × 0600 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.2] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 0D4E × 0308 ÷ 0600 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 0D4E × 0A03 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 0D4E × 0308 × 0A03 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 0D4E × 1100 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.2] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 0D4E × 0308 ÷ 1100 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 0D4E × 1160 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.2] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 0D4E × 0308 ÷ 1160 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 0D4E × 11A8 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.2] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 0D4E × 0308 ÷ 11A8 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 0D4E × AC00 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.2] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 0D4E × 0308 ÷ AC00 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 0D4E × AC01 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.2] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 0D4E × 0308 ÷ AC01 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 0D4E × 0900 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0D4E × 0308 × 0900 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0D4E × 0903 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0D4E × 0308 × 0903 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0D4E × 0904 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.2] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 0D4E × 0308 ÷ 0904 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 0D4E × 0D4E ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0D4E × 0308 ÷ 0D4E ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0D4E × 0915 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0D4E × 0308 ÷ 0915 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0D4E × 231A ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.2] WATCH (ExtPict) ÷ [0.3]
+÷ 0D4E × 0308 ÷ 231A ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
+÷ 0D4E × 0300 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
+÷ 0D4E × 0308 × 0300 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
+÷ 0D4E × 093C ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 0D4E × 0308 × 093C ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 0D4E × 094D ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 0D4E × 0308 × 094D ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 0D4E × 200D ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
+÷ 0D4E × 0308 × 200D ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
+÷ 0D4E × 0378 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.2] <reserved-0378> (Other) ÷ [0.3]
+÷ 0D4E × 0308 ÷ 0378 ÷ # ÷ [0.2] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 0915 ÷ 0020 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 0915 × 0308 ÷ 0020 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 0915 ÷ 000D ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 0915 × 0308 ÷ 000D ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 0915 ÷ 000A ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 0915 × 0308 ÷ 000A ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 0915 ÷ 0001 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 0915 × 0308 ÷ 0001 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 0915 × 034F ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
+÷ 0915 × 0308 × 034F ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
+÷ 0915 ÷ 1F1E6 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0915 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0915 ÷ 0600 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 0915 × 0308 ÷ 0600 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 0915 × 0A03 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 0915 × 0308 × 0A03 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 0915 ÷ 1100 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 0915 × 0308 ÷ 1100 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 0915 ÷ 1160 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 0915 × 0308 ÷ 1160 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 0915 ÷ 11A8 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 0915 × 0308 ÷ 11A8 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 0915 ÷ AC00 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 0915 × 0308 ÷ AC00 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 0915 ÷ AC01 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 0915 × 0308 ÷ AC01 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 0915 × 0900 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0915 × 0308 × 0900 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0915 × 0903 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0915 × 0308 × 0903 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0915 ÷ 0904 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 0915 × 0308 ÷ 0904 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 0915 ÷ 0D4E ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0915 × 0308 ÷ 0D4E ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0915 ÷ 0915 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0915 × 0308 ÷ 0915 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0915 ÷ 231A ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
+÷ 0915 × 0308 ÷ 231A ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
+÷ 0915 × 0300 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
+÷ 0915 × 0308 × 0300 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
+÷ 0915 × 093C ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 0915 × 0308 × 093C ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 0915 × 094D ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 0915 × 0308 × 094D ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 0915 × 200D ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
+÷ 0915 × 0308 × 200D ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
+÷ 0915 ÷ 0378 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 0915 × 0308 ÷ 0378 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
÷ 231A ÷ 0020 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] SPACE (Other) ÷ [0.3]
÷ 231A × 0308 ÷ 0020 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
÷ 231A ÷ 000D ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
@@ -568,8 +900,8 @@
÷ 231A × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
÷ 231A ÷ 0600 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
÷ 231A × 0308 ÷ 0600 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
-÷ 231A × 0903 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
-÷ 231A × 0308 × 0903 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 231A × 0A03 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 231A × 0308 × 0A03 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
÷ 231A ÷ 1100 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 231A × 0308 ÷ 1100 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 231A ÷ 1160 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
@@ -580,14 +912,24 @@
÷ 231A × 0308 ÷ AC00 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
÷ 231A ÷ AC01 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
÷ 231A × 0308 ÷ AC01 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
-÷ 231A ÷ 0915 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3]
-÷ 231A × 0308 ÷ 0915 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3]
+÷ 231A × 0900 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 231A × 0308 × 0900 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 231A × 0903 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 231A × 0308 × 0903 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 231A ÷ 0904 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 231A × 0308 ÷ 0904 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 231A ÷ 0D4E ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 231A × 0308 ÷ 0D4E ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 231A ÷ 0915 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 231A × 0308 ÷ 0915 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
÷ 231A ÷ 231A ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 231A × 0308 ÷ 231A ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 231A × 0300 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
÷ 231A × 0308 × 0300 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
-÷ 231A × 094D ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3]
-÷ 231A × 0308 × 094D ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3]
+÷ 231A × 093C ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 231A × 0308 × 093C ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 231A × 094D ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 231A × 0308 × 094D ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
÷ 231A × 200D ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 231A × 0308 × 200D ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 231A ÷ 0378 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
@@ -606,8 +948,8 @@
÷ 0300 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
÷ 0300 ÷ 0600 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
÷ 0300 × 0308 ÷ 0600 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
-÷ 0300 × 0903 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
-÷ 0300 × 0308 × 0903 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 0300 × 0A03 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 0300 × 0308 × 0A03 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
÷ 0300 ÷ 1100 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 0300 × 0308 ÷ 1100 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 0300 ÷ 1160 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
@@ -618,56 +960,124 @@
÷ 0300 × 0308 ÷ AC00 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
÷ 0300 ÷ AC01 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
÷ 0300 × 0308 ÷ AC01 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
-÷ 0300 ÷ 0915 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3]
-÷ 0300 × 0308 ÷ 0915 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3]
+÷ 0300 × 0900 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0300 × 0308 × 0900 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0300 × 0903 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0300 × 0308 × 0903 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0300 ÷ 0904 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 0300 × 0308 ÷ 0904 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 0300 ÷ 0D4E ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0300 × 0308 ÷ 0D4E ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0300 ÷ 0915 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0300 × 0308 ÷ 0915 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
÷ 0300 ÷ 231A ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 0300 × 0308 ÷ 231A ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 0300 × 0300 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
÷ 0300 × 0308 × 0300 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
-÷ 0300 × 094D ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3]
-÷ 0300 × 0308 × 094D ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3]
+÷ 0300 × 093C ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 0300 × 0308 × 093C ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 0300 × 094D ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 0300 × 0308 × 094D ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
÷ 0300 × 200D ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 0300 × 0308 × 200D ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 0300 ÷ 0378 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
÷ 0300 × 0308 ÷ 0378 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
-÷ 094D ÷ 0020 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
-÷ 094D × 0308 ÷ 0020 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
-÷ 094D ÷ 000D ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-÷ 094D × 0308 ÷ 000D ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-÷ 094D ÷ 000A ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-÷ 094D × 0308 ÷ 000A ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-÷ 094D ÷ 0001 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
-÷ 094D × 0308 ÷ 0001 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
-÷ 094D × 034F ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
-÷ 094D × 0308 × 034F ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
-÷ 094D ÷ 1F1E6 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-÷ 094D × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-÷ 094D ÷ 0600 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
-÷ 094D × 0308 ÷ 0600 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
-÷ 094D × 0903 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
-÷ 094D × 0308 × 0903 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
-÷ 094D ÷ 1100 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
-÷ 094D × 0308 ÷ 1100 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
-÷ 094D ÷ 1160 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
-÷ 094D × 0308 ÷ 1160 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
-÷ 094D ÷ 11A8 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
-÷ 094D × 0308 ÷ 11A8 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
-÷ 094D ÷ AC00 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
-÷ 094D × 0308 ÷ AC00 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
-÷ 094D ÷ AC01 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
-÷ 094D × 0308 ÷ AC01 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
-÷ 094D ÷ 0915 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3]
-÷ 094D × 0308 ÷ 0915 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3]
-÷ 094D ÷ 231A ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
-÷ 094D × 0308 ÷ 231A ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
-÷ 094D × 0300 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
-÷ 094D × 0308 × 0300 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
-÷ 094D × 094D ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3]
-÷ 094D × 0308 × 094D ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3]
-÷ 094D × 200D ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
-÷ 094D × 0308 × 200D ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
-÷ 094D ÷ 0378 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
-÷ 094D × 0308 ÷ 0378 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 093C ÷ 0020 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 093C × 0308 ÷ 0020 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 093C ÷ 000D ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 093C × 0308 ÷ 000D ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 093C ÷ 000A ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 093C × 0308 ÷ 000A ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 093C ÷ 0001 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 093C × 0308 ÷ 0001 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 093C × 034F ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
+÷ 093C × 0308 × 034F ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
+÷ 093C ÷ 1F1E6 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 093C × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 093C ÷ 0600 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 093C × 0308 ÷ 0600 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 093C × 0A03 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 093C × 0308 × 0A03 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 093C ÷ 1100 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 093C × 0308 ÷ 1100 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 093C ÷ 1160 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 093C × 0308 ÷ 1160 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 093C ÷ 11A8 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 093C × 0308 ÷ 11A8 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 093C ÷ AC00 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 093C × 0308 ÷ AC00 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 093C ÷ AC01 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 093C × 0308 ÷ AC01 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 093C × 0900 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 093C × 0308 × 0900 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 093C × 0903 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 093C × 0308 × 0903 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 093C ÷ 0904 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 093C × 0308 ÷ 0904 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 093C ÷ 0D4E ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 093C × 0308 ÷ 0D4E ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 093C ÷ 0915 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 093C × 0308 ÷ 0915 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 093C ÷ 231A ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
+÷ 093C × 0308 ÷ 231A ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
+÷ 093C × 0300 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
+÷ 093C × 0308 × 0300 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
+÷ 093C × 093C ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 093C × 0308 × 093C ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 093C × 094D ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 093C × 0308 × 094D ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 093C × 200D ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
+÷ 093C × 0308 × 200D ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
+÷ 093C ÷ 0378 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 093C × 0308 ÷ 0378 ÷ # ÷ [0.2] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 094D ÷ 0020 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 094D × 0308 ÷ 0020 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 094D ÷ 000D ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 094D × 0308 ÷ 000D ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 094D ÷ 000A ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 094D × 0308 ÷ 000A ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 094D ÷ 0001 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 094D × 0308 ÷ 0001 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 094D × 034F ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
+÷ 094D × 0308 × 034F ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
+÷ 094D ÷ 1F1E6 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 094D × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 094D ÷ 0600 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 094D × 0308 ÷ 0600 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 094D × 0A03 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 094D × 0308 × 0A03 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 094D ÷ 1100 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 094D × 0308 ÷ 1100 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 094D ÷ 1160 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 094D × 0308 ÷ 1160 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 094D ÷ 11A8 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 094D × 0308 ÷ 11A8 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 094D ÷ AC00 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 094D × 0308 ÷ AC00 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 094D ÷ AC01 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 094D × 0308 ÷ AC01 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 094D × 0900 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 094D × 0308 × 0900 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 094D × 0903 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 094D × 0308 × 0903 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 094D ÷ 0904 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 094D × 0308 ÷ 0904 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 094D ÷ 0D4E ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 094D × 0308 ÷ 0D4E ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 094D ÷ 0915 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 094D × 0308 ÷ 0915 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 094D ÷ 231A ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
+÷ 094D × 0308 ÷ 231A ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
+÷ 094D × 0300 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
+÷ 094D × 0308 × 0300 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
+÷ 094D × 093C ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 094D × 0308 × 093C ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 094D × 094D ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 094D × 0308 × 094D ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 094D × 200D ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
+÷ 094D × 0308 × 200D ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
+÷ 094D ÷ 0378 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 094D × 0308 ÷ 0378 ÷ # ÷ [0.2] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
÷ 200D ÷ 0020 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
÷ 200D × 0308 ÷ 0020 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
÷ 200D ÷ 000D ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
@@ -682,8 +1092,8 @@
÷ 200D × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
÷ 200D ÷ 0600 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
÷ 200D × 0308 ÷ 0600 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
-÷ 200D × 0903 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
-÷ 200D × 0308 × 0903 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 200D × 0A03 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 200D × 0308 × 0A03 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
÷ 200D ÷ 1100 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 200D × 0308 ÷ 1100 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 200D ÷ 1160 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
@@ -694,14 +1104,24 @@
÷ 200D × 0308 ÷ AC00 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
÷ 200D ÷ AC01 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
÷ 200D × 0308 ÷ AC01 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
-÷ 200D ÷ 0915 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3]
-÷ 200D × 0308 ÷ 0915 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3]
+÷ 200D × 0900 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 200D × 0308 × 0900 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 200D × 0903 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 200D × 0308 × 0903 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 200D ÷ 0904 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 200D × 0308 ÷ 0904 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 200D ÷ 0D4E ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 200D × 0308 ÷ 0D4E ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 200D ÷ 0915 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 200D × 0308 ÷ 0915 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
÷ 200D ÷ 231A ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 200D × 0308 ÷ 231A ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 200D × 0300 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
÷ 200D × 0308 × 0300 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
-÷ 200D × 094D ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3]
-÷ 200D × 0308 × 094D ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3]
+÷ 200D × 093C ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 200D × 0308 × 093C ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 200D × 094D ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 200D × 0308 × 094D ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
÷ 200D × 200D ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 200D × 0308 × 200D ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 200D ÷ 0378 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
@@ -720,8 +1140,8 @@
÷ 0378 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
÷ 0378 ÷ 0600 ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
÷ 0378 × 0308 ÷ 0600 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
-÷ 0378 × 0903 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
-÷ 0378 × 0308 × 0903 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 0378 × 0A03 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 0378 × 0308 × 0A03 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] GURMUKHI SIGN VISARGA (SpacingMark) ÷ [0.3]
÷ 0378 ÷ 1100 ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 0378 × 0308 ÷ 1100 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
÷ 0378 ÷ 1160 ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
@@ -732,14 +1152,24 @@
÷ 0378 × 0308 ÷ AC00 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
÷ 0378 ÷ AC01 ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
÷ 0378 × 0308 ÷ AC01 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
-÷ 0378 ÷ 0915 ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3]
-÷ 0378 × 0308 ÷ 0915 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [0.3]
+÷ 0378 × 0900 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0378 × 0308 × 0900 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN INVERTED CANDRABINDU (Extend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0378 × 0903 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0378 × 0308 × 0903 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0378 ÷ 0904 ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 0378 × 0308 ÷ 0904 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER SHORT A (ConjunctLinkingScripts) ÷ [0.3]
+÷ 0378 ÷ 0D4E ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0378 × 0308 ÷ 0D4E ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] MALAYALAM LETTER DOT REPH (Prepend_ConjunctLinkingScripts) ÷ [0.3]
+÷ 0378 ÷ 0915 ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0378 × 0308 ÷ 0915 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
÷ 0378 ÷ 231A ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 0378 × 0308 ÷ 231A ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 0378 × 0300 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
÷ 0378 × 0308 × 0300 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
-÷ 0378 × 094D ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3]
-÷ 0378 × 0308 × 094D ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [0.3]
+÷ 0378 × 093C ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 0378 × 0308 × 093C ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) ÷ [0.3]
+÷ 0378 × 094D ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
+÷ 0378 × 0308 × 094D ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [0.3]
÷ 0378 × 200D ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 0378 × 0308 × 200D ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 0378 ÷ 0378 ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
@@ -758,7 +1188,7 @@
÷ 0061 ÷ 1F1E6 × 1F1E7 ÷ 1F1E8 × 1F1E9 ÷ 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [13.0] REGIONAL INDICATOR SYMBOL LETTER B (RI) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER C (RI) × [13.0] REGIONAL INDICATOR SYMBOL LETTER D (RI) ÷ [999.0] LATIN SMALL LETTER B (Other) ÷ [0.3]
÷ 0061 × 200D ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
÷ 0061 × 0308 ÷ 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] LATIN SMALL LETTER B (Other) ÷ [0.3]
-÷ 0061 × 0903 ÷ 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] LATIN SMALL LETTER B (Other) ÷ [0.3]
+÷ 0061 × 0903 ÷ 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark_ConjunctLinkingScripts) ÷ [999.0] LATIN SMALL LETTER B (Other) ÷ [0.3]
÷ 0061 ÷ 0600 × 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) × [9.2] LATIN SMALL LETTER B (Other) ÷ [0.3]
÷ 1F476 × 1F3FF ÷ 1F476 ÷ # ÷ [0.2] BABY (ExtPict) × [9.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend) ÷ [999.0] BABY (ExtPict) ÷ [0.3]
÷ 0061 × 1F3FF ÷ 1F476 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend) ÷ [999.0] BABY (ExtPict) ÷ [0.3]
@@ -768,17 +1198,18 @@
÷ 0061 × 200D ÷ 1F6D1 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] OCTAGONAL SIGN (ExtPict) ÷ [0.3]
÷ 2701 × 200D × 2701 ÷ # ÷ [0.2] UPPER BLADE SCISSORS (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [11.0] UPPER BLADE SCISSORS (Other) ÷ [0.3]
÷ 0061 × 200D ÷ 2701 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] UPPER BLADE SCISSORS (Other) ÷ [0.3]
-÷ 0915 ÷ 0924 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) ÷ [999.0] DEVANAGARI LETTER TA (LinkingConsonant) ÷ [0.3]
-÷ 0915 × 094D × 0924 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.3] DEVANAGARI LETTER TA (LinkingConsonant) ÷ [0.3]
-÷ 0915 × 094D × 094D × 0924 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.3] DEVANAGARI LETTER TA (LinkingConsonant) ÷ [0.3]
-÷ 0915 × 094D × 200D × 0924 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.3] DEVANAGARI LETTER TA (LinkingConsonant) ÷ [0.3]
-÷ 0915 × 093C × 200D × 094D × 0924 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.3] DEVANAGARI LETTER TA (LinkingConsonant) ÷ [0.3]
-÷ 0915 × 093C × 094D × 200D × 0924 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.3] DEVANAGARI LETTER TA (LinkingConsonant) ÷ [0.3]
-÷ 0915 × 094D × 0924 × 094D × 092F ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.3] DEVANAGARI LETTER TA (LinkingConsonant) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) × [9.3] DEVANAGARI LETTER YA (LinkingConsonant) ÷ [0.3]
-÷ 0915 × 094D ÷ 0061 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (LinkingConsonant) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [999.0] LATIN SMALL LETTER A (Other) ÷ [0.3]
-÷ 0061 × 094D ÷ 0924 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER TA (LinkingConsonant) ÷ [0.3]
-÷ 003F × 094D ÷ 0924 ÷ # ÷ [0.2] QUESTION MARK (Other) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_Virama_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER TA (LinkingConsonant) ÷ [0.3]
+÷ 0915 ÷ 0924 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) ÷ [999.0] DEVANAGARI LETTER TA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0915 × 094D × 0924 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.3] DEVANAGARI LETTER TA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0915 × 094D × 094D × 0924 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.3] DEVANAGARI LETTER TA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0915 × 094D × 200D × 0924 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.3] DEVANAGARI LETTER TA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0915 × 093C × 200D × 094D × 0924 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.3] DEVANAGARI LETTER TA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0915 × 093C × 094D × 200D × 0924 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] DEVANAGARI SIGN NUKTA (Extend_ConjunctLinkingScripts_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.3] DEVANAGARI LETTER TA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0915 × 094D × 0924 × 094D × 092F ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.3] DEVANAGARI LETTER TA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.3] DEVANAGARI LETTER YA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0915 × 094D ÷ 0061 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [999.0] LATIN SMALL LETTER A (Other) ÷ [0.3]
+÷ 0061 × 094D ÷ 0924 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER TA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 003F × 094D ÷ 0924 ÷ # ÷ [0.2] QUESTION MARK (Other) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) ÷ [999.0] DEVANAGARI LETTER TA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
+÷ 0915 × 094D × 094D × 0924 ÷ # ÷ [0.2] DEVANAGARI LETTER KA (ConjunctLinkingScripts_LinkingConsonant) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.0] DEVANAGARI SIGN VIRAMA (Extend_ConjunctLinkingScripts_ConjunctLinker_ExtCccZwj) × [9.3] DEVANAGARI LETTER TA (ConjunctLinkingScripts_LinkingConsonant) ÷ [0.3]
#
-# Lines: 756
+# Lines: 1187
#
# EOF
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/IdnaTestV2.txt b/Build/source/libs/icu/icu-src/source/test/testdata/IdnaTestV2.txt
index dcf441e7358..5c1e6a880f8 100644
--- a/Build/source/libs/icu/icu-src/source/test/testdata/IdnaTestV2.txt
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/IdnaTestV2.txt
@@ -1,11 +1,11 @@
# IdnaTestV2.txt
-# Date: 2022-05-26, 22:30:12 GMT
-# © 2022 Unicode®, Inc.
+# Date: 2023-08-15, 23:21:16 GMT
+# © 2023 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# For terms of use, see https://www.unicode.org/terms_of_use.html
#
# Unicode IDNA Compatible Preprocessing for UTS #46
-# Version: 15.0.0
+# Version: 15.1.0
#
# For documentation and usage, see https://www.unicode.org/reports/tr46
#
@@ -122,8 +122,8 @@ a\u0300.\u05D00\u0660\u05D0; à.\u05D00\u0660\u05D0; [B4]; xn--0ca.xn--0-zhcb98c
A\u0300.\u05D00\u0660\u05D0; à.\u05D00\u0660\u05D0; [B4]; xn--0ca.xn--0-zhcb98c; ; ; # à.×0Ù ×
À.\u05D00\u0660\u05D0; à.\u05D00\u0660\u05D0; [B4]; xn--0ca.xn--0-zhcb98c; ; ; # à.×0Ù ×
xn--0ca.xn--0-zhcb98c; à.\u05D00\u0660\u05D0; [B4]; xn--0ca.xn--0-zhcb98c; ; ; # à.×0Ù ×
-\u0308.\u05D0; ; [B1, B3, B6, V5]; xn--ssa.xn--4db; ; ; # ̈.×
-xn--ssa.xn--4db; \u0308.\u05D0; [B1, B3, B6, V5]; xn--ssa.xn--4db; ; ; # ̈.×
+\u0308.\u05D0; ; [B1, V5]; xn--ssa.xn--4db; ; ; # ̈.×
+xn--ssa.xn--4db; \u0308.\u05D0; [B1, V5]; xn--ssa.xn--4db; ; ; # ̈.×
à.\u05D00\u0660; ; [B4]; xn--0ca.xn--0-zhc74b; ; ; # à.×0Ù 
a\u0300.\u05D00\u0660; à.\u05D00\u0660; [B4]; xn--0ca.xn--0-zhc74b; ; ; # à.×0Ù 
A\u0300.\u05D00\u0660; à.\u05D00\u0660; [B4]; xn--0ca.xn--0-zhc74b; ; ; # à.×0Ù 
@@ -217,6 +217,8 @@ o\u0308bb; öbb; ; xn--bb-eka; ; ; # öbb
Öbb; öbb; ; xn--bb-eka; ; ; # öbb
O\u0308bb; öbb; ; xn--bb-eka; ; ; # öbb
xn--bb-eka; öbb; ; xn--bb-eka; ; ; # öbb
+FAẞ.de; faß.de; ; xn--fa-hia.de; ; fass.de; # faß.de
+FAẞ.DE; faß.de; ; xn--fa-hia.de; ; fass.de; # faß.de
βόλος.com; ; ; xn--nxasmm1c.com; ; xn--nxasmq6b.com; # βόλος.com
βο\u0301λος.com; βόλος.com; ; xn--nxasmm1c.com; ; xn--nxasmq6b.com; # βόλος.com
ΒΟ\u0301ΛΟΣ.COM; βόλοσ.com; ; xn--nxasmq6b.com; ; ; # βόλοσ.com
@@ -282,10 +284,10 @@ U\u0308.U\u0308; ü.ü; ; xn--tda.xn--tda; ; ; # ü.ü
Ü.ü; ü.ü; ; xn--tda.xn--tda; ; ; # ü.ü
U\u0308.u\u0308; ü.ü; ; xn--tda.xn--tda; ; ; # ü.ü
xn--u-ccb; u\u0308; [V1]; xn--u-ccb; ; ; # ü
-aâ’ˆcom; ; [P1, V6]; xn--acom-0w1b; ; ; # aâ’ˆcom
+aâ’ˆcom; ; [V6]; xn--acom-0w1b; ; ; # aâ’ˆcom
a1.com; ; ; ; ; ; # a1.com
-Aâ’ˆCOM; aâ’ˆcom; [P1, V6]; xn--acom-0w1b; ; ; # aâ’ˆcom
-Aâ’ˆCom; aâ’ˆcom; [P1, V6]; xn--acom-0w1b; ; ; # aâ’ˆcom
+Aâ’ˆCOM; aâ’ˆcom; [V6]; xn--acom-0w1b; ; ; # aâ’ˆcom
+Aâ’ˆCom; aâ’ˆcom; [V6]; xn--acom-0w1b; ; ; # aâ’ˆcom
xn--acom-0w1b; aâ’ˆcom; [V6]; xn--acom-0w1b; ; ; # aâ’ˆcom
xn--a-ecp.ru; aâ’ˆ.ru; [V6]; xn--a-ecp.ru; ; ; # aâ’ˆ.ru
xn--0.pt; ; [P4]; ; ; ; # xn--0.pt
@@ -529,7 +531,7 @@ a..b; ; [X4_2]; ; [A4_2]; ; # a..b
xn--1ug..xn--skb080k; \u200D..\u06B9\u200C; [B1, B3, C1, C2, X4_2]; xn--1ug..xn--skb080k; [B1, B3, C1, C2, A4_2]; ; # ..Ú¹
\u05D00\u0660; ; [B4]; xn--0-zhc74b; ; ; # ×0Ù 
xn--0-zhc74b; \u05D00\u0660; [B4]; xn--0-zhc74b; ; ; # ×0Ù 
-$; ; [P1, V6]; ; ; ; # $
+$; ; [V6]; ; ; ; # $
# RANDOMIZED TESTS
@@ -539,73 +541,77 @@ C.0U\u0308.\u05D0; c.0ü.\u05D0; [B1]; c.xn--0-eha.xn--4db; ; ; # c.0ü.×
C.0Ãœ.\u05D0; c.0ü.\u05D0; [B1]; c.xn--0-eha.xn--4db; ; ; # c.0ü.×
C.0ü.\u05D0; c.0ü.\u05D0; [B1]; c.xn--0-eha.xn--4db; ; ; # c.0ü.×
C.0u\u0308.\u05D0; c.0ü.\u05D0; [B1]; c.xn--0-eha.xn--4db; ; ; # c.0ü.×
-â’•âˆ\u065Fò“¤¦ï¼Ž-󠄯; â’•âˆ\u065Fò“¤¦.-; [P1, V3, V6]; xn--7hb713lfwbi1311b.-; ; ; # â’•âˆÙŸ.-
-14.âˆ\u065Fò“¤¦.-󠄯; 14.âˆ\u065Fò“¤¦.-; [P1, V3, V6]; 14.xn--7hb713l3v90n.-; ; ; # 14.âˆÙŸ.-
+â’•âˆ\u065Fò“¤¦ï¼Ž-󠄯; â’•âˆ\u065Fò“¤¦.-; [V3, V6]; xn--7hb713lfwbi1311b.-; ; ; # â’•âˆÙŸ.-
+14.âˆ\u065Fò“¤¦.-󠄯; 14.âˆ\u065Fò“¤¦.-; [V3, V6]; 14.xn--7hb713l3v90n.-; ; ; # 14.âˆÙŸ.-
14.xn--7hb713l3v90n.-; 14.âˆ\u065Fò“¤¦.-; [V3, V6]; 14.xn--7hb713l3v90n.-; ; ; # 14.âˆÙŸ.-
xn--7hb713lfwbi1311b.-; â’•âˆ\u065Fò“¤¦.-; [V3, V6]; xn--7hb713lfwbi1311b.-; ; ; # â’•âˆÙŸ.-
ê¡£.\u07CF; ; ; xn--8c9a.xn--qsb; ; ; # ê¡£.ß
xn--8c9a.xn--qsb; ê¡£.\u07CF; ; xn--8c9a.xn--qsb; ; ; # ê¡£.ß
-≯\u0603。-; ≯\u0603.-; [B1, P1, V3, V6]; xn--lfb566l.-; ; ; # ≯.-
->\u0338\u0603。-; ≯\u0603.-; [B1, P1, V3, V6]; xn--lfb566l.-; ; ; # ≯.-
-≯\u0603。-; ≯\u0603.-; [B1, P1, V3, V6]; xn--lfb566l.-; ; ; # ≯.-
->\u0338\u0603。-; ≯\u0603.-; [B1, P1, V3, V6]; xn--lfb566l.-; ; ; # ≯.-
+≯\u0603。-; ≯\u0603.-; [B1, V3, V6]; xn--lfb566l.-; ; ; # ≯.-
+>\u0338\u0603。-; ≯\u0603.-; [B1, V3, V6]; xn--lfb566l.-; ; ; # ≯.-
+≯\u0603。-; ≯\u0603.-; [B1, V3, V6]; xn--lfb566l.-; ; ; # ≯.-
+>\u0338\u0603。-; ≯\u0603.-; [B1, V3, V6]; xn--lfb566l.-; ; ; # ≯.-
xn--lfb566l.-; ≯\u0603.-; [B1, V3, V6]; xn--lfb566l.-; ; ; # ≯.-
-â¾›ð¹§â¾•.\u115Fó —°Ï‚á‚­; èµ°ð¹§è°·.\u115Fó —°Ï‚á‚­; [B5, P1, V6]; xn--6g3a1x434z.xn--3xa827dhpae6345i; ; xn--6g3a1x434z.xn--4xa627dhpae6345i; # èµ°ð¹§è°·.Ï‚á‚­
-èµ°ð¹§è°·.\u115Fó —°Ï‚á‚­; ; [B5, P1, V6]; xn--6g3a1x434z.xn--3xa827dhpae6345i; ; xn--6g3a1x434z.xn--4xa627dhpae6345i; # èµ°ð¹§è°·.Ï‚á‚­
-èµ°ð¹§è°·.\u115Fó —°Ï‚â´; ; [B5, P1, V6]; xn--6g3a1x434z.xn--3xa380eotvh7453a; ; xn--6g3a1x434z.xn--4xa180eotvh7453a; # èµ°ð¹§è°·.Ï‚â´
-èµ°ð¹§è°·.\u115F󠗰ΣႭ; èµ°ð¹§è°·.\u115F󠗰σႭ; [B5, P1, V6]; xn--6g3a1x434z.xn--4xa627dhpae6345i; ; ; # èµ°ð¹§è°·.σႭ
-èµ°ð¹§è°·.\u115F󠗰σâ´; ; [B5, P1, V6]; xn--6g3a1x434z.xn--4xa180eotvh7453a; ; ; # èµ°ð¹§è°·.σâ´
-èµ°ð¹§è°·.\u115F󠗰Σâ´; èµ°ð¹§è°·.\u115F󠗰σâ´; [B5, P1, V6]; xn--6g3a1x434z.xn--4xa180eotvh7453a; ; ; # èµ°ð¹§è°·.σâ´
+â¾›ð¹§â¾•.\u115Fó —°Ï‚á‚­; èµ°ð¹§è°·.\u115Fó —°Ï‚á‚­; [B5, V6]; xn--6g3a1x434z.xn--3xa827dhpae6345i; ; xn--6g3a1x434z.xn--4xa627dhpae6345i; # èµ°ð¹§è°·.Ï‚á‚­
+èµ°ð¹§è°·.\u115Fó —°Ï‚á‚­; ; [B5, V6]; xn--6g3a1x434z.xn--3xa827dhpae6345i; ; xn--6g3a1x434z.xn--4xa627dhpae6345i; # èµ°ð¹§è°·.Ï‚á‚­
+èµ°ð¹§è°·.\u115Fó —°Ï‚â´; ; [B5, V6]; xn--6g3a1x434z.xn--3xa380eotvh7453a; ; xn--6g3a1x434z.xn--4xa180eotvh7453a; # èµ°ð¹§è°·.Ï‚â´
+èµ°ð¹§è°·.\u115F󠗰ΣႭ; èµ°ð¹§è°·.\u115F󠗰σႭ; [B5, V6]; xn--6g3a1x434z.xn--4xa627dhpae6345i; ; ; # èµ°ð¹§è°·.σႭ
+èµ°ð¹§è°·.\u115F󠗰σâ´; ; [B5, V6]; xn--6g3a1x434z.xn--4xa180eotvh7453a; ; ; # èµ°ð¹§è°·.σâ´
+èµ°ð¹§è°·.\u115F󠗰Σâ´; èµ°ð¹§è°·.\u115F󠗰σâ´; [B5, V6]; xn--6g3a1x434z.xn--4xa180eotvh7453a; ; ; # èµ°ð¹§è°·.σâ´
xn--6g3a1x434z.xn--4xa180eotvh7453a; èµ°ð¹§è°·.\u115F󠗰σâ´; [B5, V6]; xn--6g3a1x434z.xn--4xa180eotvh7453a; ; ; # èµ°ð¹§è°·.σâ´
xn--6g3a1x434z.xn--4xa627dhpae6345i; èµ°ð¹§è°·.\u115F󠗰σႭ; [B5, V6]; xn--6g3a1x434z.xn--4xa627dhpae6345i; ; ; # èµ°ð¹§è°·.σႭ
xn--6g3a1x434z.xn--3xa380eotvh7453a; èµ°ð¹§è°·.\u115Fó —°Ï‚â´; [B5, V6]; xn--6g3a1x434z.xn--3xa380eotvh7453a; ; ; # èµ°ð¹§è°·.Ï‚â´
xn--6g3a1x434z.xn--3xa827dhpae6345i; èµ°ð¹§è°·.\u115Fó —°Ï‚á‚­; [B5, V6]; xn--6g3a1x434z.xn--3xa827dhpae6345i; ; ; # èµ°ð¹§è°·.Ï‚á‚­
-â¾›ð¹§â¾•.\u115Fó —°Ï‚â´; èµ°ð¹§è°·.\u115Fó —°Ï‚â´; [B5, P1, V6]; xn--6g3a1x434z.xn--3xa380eotvh7453a; ; xn--6g3a1x434z.xn--4xa180eotvh7453a; # èµ°ð¹§è°·.Ï‚â´
-â¾›ð¹§â¾•.\u115F󠗰ΣႭ; èµ°ð¹§è°·.\u115F󠗰σႭ; [B5, P1, V6]; xn--6g3a1x434z.xn--4xa627dhpae6345i; ; ; # èµ°ð¹§è°·.σႭ
-â¾›ð¹§â¾•.\u115F󠗰σâ´; èµ°ð¹§è°·.\u115F󠗰σâ´; [B5, P1, V6]; xn--6g3a1x434z.xn--4xa180eotvh7453a; ; ; # èµ°ð¹§è°·.σâ´
-â¾›ð¹§â¾•.\u115F󠗰Σâ´; èµ°ð¹§è°·.\u115F󠗰σâ´; [B5, P1, V6]; xn--6g3a1x434z.xn--4xa180eotvh7453a; ; ; # èµ°ð¹§è°·.σâ´
-\u200D≠ᢙ≯.솣-ᡴႠ; ; [C2, P1, V6]; xn--jbf929a90b0b.xn----6zg521d196p; ; xn--jbf911clb.xn----6zg521d196p; [P1, V6] # ≠ᢙ≯.솣-ᡴႠ
-\u200D=\u0338ᢙ>\u0338.솣-ᡴႠ; \u200D≠ᢙ≯.솣-ᡴႠ; [C2, P1, V6]; xn--jbf929a90b0b.xn----6zg521d196p; ; xn--jbf911clb.xn----6zg521d196p; [P1, V6] # ≠ᢙ≯.솣-ᡴႠ
-\u200D=\u0338ᢙ>\u0338.솣-ᡴⴀ; \u200D≠ᢙ≯.솣-ᡴⴀ; [C2, P1, V6]; xn--jbf929a90b0b.xn----p9j493ivi4l; ; xn--jbf911clb.xn----p9j493ivi4l; [P1, V6] # ≠ᢙ≯.솣-ᡴⴀ
-\u200D≠ᢙ≯.솣-ᡴⴀ; ; [C2, P1, V6]; xn--jbf929a90b0b.xn----p9j493ivi4l; ; xn--jbf911clb.xn----p9j493ivi4l; [P1, V6] # ≠ᢙ≯.솣-ᡴⴀ
-xn--jbf911clb.xn----p9j493ivi4l; ≠ᢙ≯.솣-ᡴⴀ; [V6]; xn--jbf911clb.xn----p9j493ivi4l; ; ; # ≠ᢙ≯.솣-ᡴⴀ
-xn--jbf929a90b0b.xn----p9j493ivi4l; \u200D≠ᢙ≯.솣-ᡴⴀ; [C2, V6]; xn--jbf929a90b0b.xn----p9j493ivi4l; ; ; # ≠ᢙ≯.솣-ᡴⴀ
+â¾›ð¹§â¾•.\u115Fó —°Ï‚â´; èµ°ð¹§è°·.\u115Fó —°Ï‚â´; [B5, V6]; xn--6g3a1x434z.xn--3xa380eotvh7453a; ; xn--6g3a1x434z.xn--4xa180eotvh7453a; # èµ°ð¹§è°·.Ï‚â´
+â¾›ð¹§â¾•.\u115F󠗰ΣႭ; èµ°ð¹§è°·.\u115F󠗰σႭ; [B5, V6]; xn--6g3a1x434z.xn--4xa627dhpae6345i; ; ; # èµ°ð¹§è°·.σႭ
+â¾›ð¹§â¾•.\u115F󠗰σâ´; èµ°ð¹§è°·.\u115F󠗰σâ´; [B5, V6]; xn--6g3a1x434z.xn--4xa180eotvh7453a; ; ; # èµ°ð¹§è°·.σâ´
+â¾›ð¹§â¾•.\u115F󠗰Σâ´; èµ°ð¹§è°·.\u115F󠗰σâ´; [B5, V6]; xn--6g3a1x434z.xn--4xa180eotvh7453a; ; ; # èµ°ð¹§è°·.σâ´
+\u200D≠ᢙ≯.솣-ᡴႠ; ; [C2, V6]; xn--jbf929a90b0b.xn----6zg521d196p; ; xn--jbf911clb.xn----6zg521d196p; [V6] # ≠ᢙ≯.솣-ᡴႠ
+\u200D=\u0338ᢙ>\u0338.솣-ᡴႠ; \u200D≠ᢙ≯.솣-ᡴႠ; [C2, V6]; xn--jbf929a90b0b.xn----6zg521d196p; ; xn--jbf911clb.xn----6zg521d196p; [V6] # ≠ᢙ≯.솣-ᡴႠ
+\u200D=\u0338ᢙ>\u0338.솣-ᡴⴀ; \u200D≠ᢙ≯.솣-ᡴⴀ; [C2]; xn--jbf929a90b0b.xn----p9j493ivi4l; ; xn--jbf911clb.xn----p9j493ivi4l; [] # ≠ᢙ≯.솣-ᡴⴀ
+\u200D≠ᢙ≯.솣-ᡴⴀ; ; [C2]; xn--jbf929a90b0b.xn----p9j493ivi4l; ; xn--jbf911clb.xn----p9j493ivi4l; [] # ≠ᢙ≯.솣-ᡴⴀ
+xn--jbf911clb.xn----p9j493ivi4l; ≠ᢙ≯.솣-ᡴⴀ; ; xn--jbf911clb.xn----p9j493ivi4l; ; ; # ≠ᢙ≯.솣-ᡴⴀ
+≠ᢙ≯.솣-ᡴⴀ; ; ; xn--jbf911clb.xn----p9j493ivi4l; ; ; # ≠ᢙ≯.솣-ᡴⴀ
+=\u0338ᢙ>\u0338.솣-ᡴⴀ; ≠ᢙ≯.솣-ᡴⴀ; ; xn--jbf911clb.xn----p9j493ivi4l; ; ; # ≠ᢙ≯.솣-ᡴⴀ
+=\u0338ᢙ>\u0338.솣-ᡴႠ; ≠ᢙ≯.솣-ᡴႠ; [V6]; xn--jbf911clb.xn----6zg521d196p; ; ; # ≠ᢙ≯.솣-ᡴႠ
+≠ᢙ≯.솣-ᡴႠ; ; [V6]; xn--jbf911clb.xn----6zg521d196p; ; ; # ≠ᢙ≯.솣-ᡴႠ
xn--jbf911clb.xn----6zg521d196p; ≠ᢙ≯.솣-ᡴႠ; [V6]; xn--jbf911clb.xn----6zg521d196p; ; ; # ≠ᢙ≯.솣-ᡴႠ
+xn--jbf929a90b0b.xn----p9j493ivi4l; \u200D≠ᢙ≯.솣-ᡴⴀ; [C2]; xn--jbf929a90b0b.xn----p9j493ivi4l; ; ; # ≠ᢙ≯.솣-ᡴⴀ
xn--jbf929a90b0b.xn----6zg521d196p; \u200D≠ᢙ≯.솣-ᡴႠ; [C2, V6]; xn--jbf929a90b0b.xn----6zg521d196p; ; ; # ≠ᢙ≯.솣-ᡴႠ
-ñ¯žœï¼Žð¿‡\u0FA2\u077D\u0600; ñ¯žœ.ð¿‡\u0FA1\u0FB7\u077D\u0600; [P1, V6]; xn--gw68a.xn--ifb57ev2psc6027m; ; ; # .ð¿‡à¾¡à¾·Ý½
-ñ¯žœï¼Žð¿‡\u0FA1\u0FB7\u077D\u0600; ñ¯žœ.ð¿‡\u0FA1\u0FB7\u077D\u0600; [P1, V6]; xn--gw68a.xn--ifb57ev2psc6027m; ; ; # .ð¿‡à¾¡à¾·Ý½
-ñ¯žœ.ð¿‡\u0FA1\u0FB7\u077D\u0600; ; [P1, V6]; xn--gw68a.xn--ifb57ev2psc6027m; ; ; # .ð¿‡à¾¡à¾·Ý½
+ñ¯žœï¼Žð¿‡\u0FA2\u077D\u0600; ñ¯žœ.ð¿‡\u0FA1\u0FB7\u077D\u0600; [V6]; xn--gw68a.xn--ifb57ev2psc6027m; ; ; # .ð¿‡à¾¡à¾·Ý½
+ñ¯žœï¼Žð¿‡\u0FA1\u0FB7\u077D\u0600; ñ¯žœ.ð¿‡\u0FA1\u0FB7\u077D\u0600; [V6]; xn--gw68a.xn--ifb57ev2psc6027m; ; ; # .ð¿‡à¾¡à¾·Ý½
+ñ¯žœ.ð¿‡\u0FA1\u0FB7\u077D\u0600; ; [V6]; xn--gw68a.xn--ifb57ev2psc6027m; ; ; # .ð¿‡à¾¡à¾·Ý½
xn--gw68a.xn--ifb57ev2psc6027m; ñ¯žœ.ð¿‡\u0FA1\u0FB7\u077D\u0600; [V6]; xn--gw68a.xn--ifb57ev2psc6027m; ; ; # .ð¿‡à¾¡à¾·Ý½
𣳔\u0303.𑓂; ; [V5]; xn--nsa95820a.xn--wz1d; ; ; # 𣳔̃.𑓂
xn--nsa95820a.xn--wz1d; 𣳔\u0303.𑓂; [V5]; xn--nsa95820a.xn--wz1d; ; ; # 𣳔̃.𑓂
-𞤀𞥅ñ˜±ã€‚󠄌Ⴣꡥ; 𞤢𞥅ñ˜±.Ⴣꡥ; [B2, B3, P1, V6]; xn--9d6hgcy3556a.xn--7nd0578e; ; ; # 𞤢𞥅.Ⴣꡥ
-𞤢𞥅ñ˜±ã€‚󠄌ⴣꡥ; 𞤢𞥅ñ˜±.ⴣꡥ; [B2, B3, P1, V6]; xn--9d6hgcy3556a.xn--rlju750b; ; ; # 𞤢𞥅.ⴣꡥ
+𞤀𞥅ñ˜±ã€‚󠄌Ⴣꡥ; 𞤢𞥅ñ˜±.Ⴣꡥ; [B2, B3, V6]; xn--9d6hgcy3556a.xn--7nd0578e; ; ; # 𞤢𞥅.Ⴣꡥ
+𞤢𞥅ñ˜±ã€‚󠄌ⴣꡥ; 𞤢𞥅ñ˜±.ⴣꡥ; [B2, B3, V6]; xn--9d6hgcy3556a.xn--rlju750b; ; ; # 𞤢𞥅.ⴣꡥ
xn--9d6hgcy3556a.xn--rlju750b; 𞤢𞥅ñ˜±.ⴣꡥ; [B2, B3, V6]; xn--9d6hgcy3556a.xn--rlju750b; ; ; # 𞤢𞥅.ⴣꡥ
xn--9d6hgcy3556a.xn--7nd0578e; 𞤢𞥅ñ˜±.Ⴣꡥ; [B2, B3, V6]; xn--9d6hgcy3556a.xn--7nd0578e; ; ; # 𞤢𞥅.Ⴣꡥ
-𞤀𞥅ñ˜±ã€‚󠄌ⴣꡥ; 𞤢𞥅ñ˜±.ⴣꡥ; [B2, B3, P1, V6]; xn--9d6hgcy3556a.xn--rlju750b; ; ; # 𞤢𞥅.ⴣꡥ
-\u08E2ð‘¿Ï‚𖬱。󠅡렧; \u08E2ð‘¿Ï‚𖬱.ë §; [B1, P1, V6]; xn--3xa73xp48ys2xc.xn--kn2b; ; xn--4xa53xp48ys2xc.xn--kn2b; # ð‘¿Ï‚𖬱.ë §
-\u08E2ð‘¿Ï‚𖬱。󠅡렧; \u08E2ð‘¿Ï‚𖬱.ë §; [B1, P1, V6]; xn--3xa73xp48ys2xc.xn--kn2b; ; xn--4xa53xp48ys2xc.xn--kn2b; # ð‘¿Ï‚𖬱.ë §
-\u08E2ð‘¿Î£ð–¬±ã€‚󠅡렧; \u08E2ð‘¿Ïƒð–¬±.ë §; [B1, P1, V6]; xn--4xa53xp48ys2xc.xn--kn2b; ; ; # ð‘¿Ïƒð–¬±.ë §
-\u08E2ð‘¿Î£ð–¬±ã€‚ó …¡ë §; \u08E2ð‘¿Ïƒð–¬±.ë §; [B1, P1, V6]; xn--4xa53xp48ys2xc.xn--kn2b; ; ; # ð‘¿Ïƒð–¬±.ë §
-\u08E2ð‘¿Ïƒð–¬±ã€‚ó …¡ë §; \u08E2ð‘¿Ïƒð–¬±.ë §; [B1, P1, V6]; xn--4xa53xp48ys2xc.xn--kn2b; ; ; # ð‘¿Ïƒð–¬±.ë §
-\u08E2ð‘¿Ïƒð–¬±ã€‚󠅡렧; \u08E2ð‘¿Ïƒð–¬±.ë §; [B1, P1, V6]; xn--4xa53xp48ys2xc.xn--kn2b; ; ; # ð‘¿Ïƒð–¬±.ë §
+𞤀𞥅ñ˜±ã€‚󠄌ⴣꡥ; 𞤢𞥅ñ˜±.ⴣꡥ; [B2, B3, V6]; xn--9d6hgcy3556a.xn--rlju750b; ; ; # 𞤢𞥅.ⴣꡥ
+\u08E2ð‘¿Ï‚𖬱。󠅡렧; \u08E2ð‘¿Ï‚𖬱.ë §; [B1, V6]; xn--3xa73xp48ys2xc.xn--kn2b; ; xn--4xa53xp48ys2xc.xn--kn2b; # ð‘¿Ï‚𖬱.ë §
+\u08E2ð‘¿Ï‚𖬱。󠅡렧; \u08E2ð‘¿Ï‚𖬱.ë §; [B1, V6]; xn--3xa73xp48ys2xc.xn--kn2b; ; xn--4xa53xp48ys2xc.xn--kn2b; # ð‘¿Ï‚𖬱.ë §
+\u08E2ð‘¿Î£ð–¬±ã€‚󠅡렧; \u08E2ð‘¿Ïƒð–¬±.ë §; [B1, V6]; xn--4xa53xp48ys2xc.xn--kn2b; ; ; # ð‘¿Ïƒð–¬±.ë §
+\u08E2ð‘¿Î£ð–¬±ã€‚ó …¡ë §; \u08E2ð‘¿Ïƒð–¬±.ë §; [B1, V6]; xn--4xa53xp48ys2xc.xn--kn2b; ; ; # ð‘¿Ïƒð–¬±.ë §
+\u08E2ð‘¿Ïƒð–¬±ã€‚ó …¡ë §; \u08E2ð‘¿Ïƒð–¬±.ë §; [B1, V6]; xn--4xa53xp48ys2xc.xn--kn2b; ; ; # ð‘¿Ïƒð–¬±.ë §
+\u08E2ð‘¿Ïƒð–¬±ã€‚󠅡렧; \u08E2ð‘¿Ïƒð–¬±.ë §; [B1, V6]; xn--4xa53xp48ys2xc.xn--kn2b; ; ; # ð‘¿Ïƒð–¬±.ë §
xn--4xa53xp48ys2xc.xn--kn2b; \u08E2ð‘¿Ïƒð–¬±.ë §; [B1, V6]; xn--4xa53xp48ys2xc.xn--kn2b; ; ; # ð‘¿Ïƒð–¬±.ë §
xn--3xa73xp48ys2xc.xn--kn2b; \u08E2ð‘¿Ï‚𖬱.ë §; [B1, V6]; xn--3xa73xp48ys2xc.xn--kn2b; ; ; # ð‘¿Ï‚𖬱.ë §
--\u200D。ðž¤\u200C\u200Dâ’ˆ; -\u200D.𞤯\u200C\u200Dâ’ˆ; [B1, C1, C2, P1, V3, V6]; xn----ugn.xn--0ugc555aiv51d; ; -.xn--tsh3666n; [B1, P1, V3, V6] # -.𞤯⒈
+-\u200D。ðž¤\u200C\u200Dâ’ˆ; -\u200D.𞤯\u200C\u200Dâ’ˆ; [B1, C1, C2, V3, V6]; xn----ugn.xn--0ugc555aiv51d; ; -.xn--tsh3666n; [B1, V3, V6] # -.𞤯⒈
-\u200D。ðž¤\u200C\u200D1.; -\u200D.𞤯\u200C\u200D1.; [B1, C1, C2, V3]; xn----ugn.xn--1-rgnd61297b.; ; -.xn--1-0i8r.; [B1, V3] # -.𞤯1.
-\u200D。𞤯\u200C\u200D1.; -\u200D.𞤯\u200C\u200D1.; [B1, C1, C2, V3]; xn----ugn.xn--1-rgnd61297b.; ; -.xn--1-0i8r.; [B1, V3] # -.𞤯1.
-.xn--1-0i8r.; -.𞤯1.; [B1, V3]; -.xn--1-0i8r.; ; ; # -.𞤯1.
xn----ugn.xn--1-rgnd61297b.; -\u200D.𞤯\u200C\u200D1.; [B1, C1, C2, V3]; xn----ugn.xn--1-rgnd61297b.; ; ; # -.𞤯1.
--\u200D。𞤯\u200C\u200D⒈; -\u200D.𞤯\u200C\u200D⒈; [B1, C1, C2, P1, V3, V6]; xn----ugn.xn--0ugc555aiv51d; ; -.xn--tsh3666n; [B1, P1, V3, V6] # -.𞤯⒈
+-\u200D。𞤯\u200C\u200D⒈; -\u200D.𞤯\u200C\u200D⒈; [B1, C1, C2, V3, V6]; xn----ugn.xn--0ugc555aiv51d; ; -.xn--tsh3666n; [B1, V3, V6] # -.𞤯⒈
-.xn--tsh3666n; -.𞤯⒈; [B1, V3, V6]; -.xn--tsh3666n; ; ; # -.𞤯⒈
xn----ugn.xn--0ugc555aiv51d; -\u200D.𞤯\u200C\u200D⒈; [B1, C1, C2, V3, V6]; xn----ugn.xn--0ugc555aiv51d; ; ; # -.𞤯⒈
-\u200C򅎭.Ⴒ𑇀; ; [C1, P1, V6]; xn--0ug15083f.xn--qnd6272k; ; xn--bn95b.xn--qnd6272k; [P1, V6] # .Ⴒ𑇀
-\u200C򅎭.ⴒ𑇀; ; [C1, P1, V6]; xn--0ug15083f.xn--9kj2034e; ; xn--bn95b.xn--9kj2034e; [P1, V6] # .ⴒ𑇀
+\u200C򅎭.Ⴒ𑇀; ; [C1, V6]; xn--0ug15083f.xn--qnd6272k; ; xn--bn95b.xn--qnd6272k; [V6] # .Ⴒ𑇀
+\u200C򅎭.ⴒ𑇀; ; [C1, V6]; xn--0ug15083f.xn--9kj2034e; ; xn--bn95b.xn--9kj2034e; [V6] # .ⴒ𑇀
xn--bn95b.xn--9kj2034e; 򅎭.ⴒ𑇀; [V6]; xn--bn95b.xn--9kj2034e; ; ; # .ⴒ𑇀
xn--0ug15083f.xn--9kj2034e; \u200C򅎭.ⴒ𑇀; [C1, V6]; xn--0ug15083f.xn--9kj2034e; ; ; # .ⴒ𑇀
xn--bn95b.xn--qnd6272k; 򅎭.Ⴒ𑇀; [V6]; xn--bn95b.xn--qnd6272k; ; ; # .Ⴒ𑇀
xn--0ug15083f.xn--qnd6272k; \u200C򅎭.Ⴒ𑇀; [C1, V6]; xn--0ug15083f.xn--qnd6272k; ; ; # .Ⴒ𑇀
-繱𑖿\u200D.8︒; 繱𑖿\u200D.8︒; [P1, V6]; xn--1ug6928ac48e.xn--8-o89h; ; xn--gl0as212a.xn--8-o89h; # 繱𑖿.8︒
+繱𑖿\u200D.8︒; 繱𑖿\u200D.8︒; [V6]; xn--1ug6928ac48e.xn--8-o89h; ; xn--gl0as212a.xn--8-o89h; # 繱𑖿.8︒
繱𑖿\u200D.8。; 繱𑖿\u200D.8.; ; xn--1ug6928ac48e.8.; ; xn--gl0as212a.8.; # 繱𑖿.8.
xn--gl0as212a.8.; 繱𑖿.8.; ; xn--gl0as212a.8.; ; ; # 繱𑖿.8.
繱𑖿.8.; ; ; xn--gl0as212a.8.; ; ; # 繱𑖿.8.
@@ -626,73 +632,73 @@ SS\u06EB.; ss\u06EB.; ; xn--ss-59d.; ; ; # ssÛ«.
Ss\u06EB.; ss\u06EB.; ; xn--ss-59d.; ; ; # ssÛ«.
xn--ss-59d.xn--1ug; ss\u06EB.\u200D; [C2]; xn--ss-59d.xn--1ug; ; ; # ssÛ«.
xn--zca012a.xn--1ug; ß\u06EB.\u200D; [C2]; xn--zca012a.xn--1ug; ; ; # ß۫.
-ó µ\u200C⒈.󠎇; ó µ\u200Câ’ˆ.󠎇; [C1, P1, V6]; xn--0ug88o47900b.xn--tv36e; ; xn--tshz2001k.xn--tv36e; [P1, V6] # â’ˆ.
-ó µ\u200C1..󠎇; ; [C1, P1, V6, X4_2]; xn--1-rgn37671n..xn--tv36e; [C1, P1, V6, A4_2]; xn--1-bs31m..xn--tv36e; [P1, V6, A4_2] # 1..
+ó µ\u200C⒈.󠎇; ó µ\u200Câ’ˆ.󠎇; [C1, V6]; xn--0ug88o47900b.xn--tv36e; ; xn--tshz2001k.xn--tv36e; [V6] # â’ˆ.
+ó µ\u200C1..󠎇; ; [C1, V6, X4_2]; xn--1-rgn37671n..xn--tv36e; [C1, V6, A4_2]; xn--1-bs31m..xn--tv36e; [V6, A4_2] # 1..
xn--1-bs31m..xn--tv36e; ó µ1..󠎇; [V6, X4_2]; xn--1-bs31m..xn--tv36e; [V6, A4_2]; ; # 1..
xn--1-rgn37671n..xn--tv36e; ó µ\u200C1..󠎇; [C1, V6, X4_2]; xn--1-rgn37671n..xn--tv36e; [C1, V6, A4_2]; ; # 1..
xn--tshz2001k.xn--tv36e; ó µâ’ˆ.󠎇; [V6]; xn--tshz2001k.xn--tv36e; ; ; # â’ˆ.
xn--0ug88o47900b.xn--tv36e; ó µ\u200Câ’ˆ.󠎇; [C1, V6]; xn--0ug88o47900b.xn--tv36e; ; ; # â’ˆ.
-󟈣\u065F\uAAB2ß。󌓧; 󟈣\u065F\uAAB2ß.󌓧; [P1, V6]; xn--zca92z0t7n5w96j.xn--bb79d; ; xn--ss-3xd2839nncy1m.xn--bb79d; # ٟꪲß.
-󟈣\u065F\uAAB2SS。󌓧; 󟈣\u065F\uAAB2ss.󌓧; [P1, V6]; xn--ss-3xd2839nncy1m.xn--bb79d; ; ; # ٟꪲss.
-󟈣\u065F\uAAB2ss。󌓧; 󟈣\u065F\uAAB2ss.󌓧; [P1, V6]; xn--ss-3xd2839nncy1m.xn--bb79d; ; ; # ٟꪲss.
-󟈣\u065F\uAAB2Ss。󌓧; 󟈣\u065F\uAAB2ss.󌓧; [P1, V6]; xn--ss-3xd2839nncy1m.xn--bb79d; ; ; # ٟꪲss.
+󟈣\u065F\uAAB2ß。󌓧; 󟈣\u065F\uAAB2ß.󌓧; [V6]; xn--zca92z0t7n5w96j.xn--bb79d; ; xn--ss-3xd2839nncy1m.xn--bb79d; # ٟꪲß.
+󟈣\u065F\uAAB2SS。󌓧; 󟈣\u065F\uAAB2ss.󌓧; [V6]; xn--ss-3xd2839nncy1m.xn--bb79d; ; ; # ٟꪲss.
+󟈣\u065F\uAAB2ss。󌓧; 󟈣\u065F\uAAB2ss.󌓧; [V6]; xn--ss-3xd2839nncy1m.xn--bb79d; ; ; # ٟꪲss.
+󟈣\u065F\uAAB2Ss。󌓧; 󟈣\u065F\uAAB2ss.󌓧; [V6]; xn--ss-3xd2839nncy1m.xn--bb79d; ; ; # ٟꪲss.
xn--ss-3xd2839nncy1m.xn--bb79d; 󟈣\u065F\uAAB2ss.󌓧; [V6]; xn--ss-3xd2839nncy1m.xn--bb79d; ; ; # ٟꪲss.
xn--zca92z0t7n5w96j.xn--bb79d; 󟈣\u065F\uAAB2ß.󌓧; [V6]; xn--zca92z0t7n5w96j.xn--bb79d; ; ; # ٟꪲß.
-\u0774\u200C𞤿。ð½˜ä‰œ\u200Dñ¿¤¼; \u0774\u200C𞤿.ð½˜ä‰œ\u200Dñ¿¤¼; [C1, C2, P1, V6]; xn--4pb607jjt73a.xn--1ug236ke314donv1a; ; xn--4pb2977v.xn--z0nt555ukbnv; [P1, V6] # ݴ𞤿.䉜
-\u0774\u200Cðž¤ã€‚ð½˜ä‰œ\u200Dñ¿¤¼; \u0774\u200C𞤿.ð½˜ä‰œ\u200Dñ¿¤¼; [C1, C2, P1, V6]; xn--4pb607jjt73a.xn--1ug236ke314donv1a; ; xn--4pb2977v.xn--z0nt555ukbnv; [P1, V6] # ݴ𞤿.䉜
+\u0774\u200C𞤿。ð½˜ä‰œ\u200Dñ¿¤¼; \u0774\u200C𞤿.ð½˜ä‰œ\u200Dñ¿¤¼; [C1, C2, V6]; xn--4pb607jjt73a.xn--1ug236ke314donv1a; ; xn--4pb2977v.xn--z0nt555ukbnv; [V6] # ݴ𞤿.䉜
+\u0774\u200Cðž¤ã€‚ð½˜ä‰œ\u200Dñ¿¤¼; \u0774\u200C𞤿.ð½˜ä‰œ\u200Dñ¿¤¼; [C1, C2, V6]; xn--4pb607jjt73a.xn--1ug236ke314donv1a; ; xn--4pb2977v.xn--z0nt555ukbnv; [V6] # ݴ𞤿.䉜
xn--4pb2977v.xn--z0nt555ukbnv; \u0774𞤿.ð½˜ä‰œñ¿¤¼; [V6]; xn--4pb2977v.xn--z0nt555ukbnv; ; ; # ݴ𞤿.䉜
xn--4pb607jjt73a.xn--1ug236ke314donv1a; \u0774\u200C𞤿.ð½˜ä‰œ\u200Dñ¿¤¼; [C1, C2, V6]; xn--4pb607jjt73a.xn--1ug236ke314donv1a; ; ; # ݴ𞤿.䉜
-ò”­œÏ‚ᡱ⒈.≮𑄳\u200Dð®; ; [B1, P1, V6]; xn--3xa407hkzinr77u.xn--1ug85gn777ahze; ; xn--4xa207hkzinr77u.xn--gdh5392g6sd; # ςᡱ⒈.≮𑄳ð®
-ò”­œÏ‚ᡱ⒈.<\u0338ð‘„³\u200Dð®; ò”­œÏ‚ᡱ⒈.≮𑄳\u200Dð®; [B1, P1, V6]; xn--3xa407hkzinr77u.xn--1ug85gn777ahze; ; xn--4xa207hkzinr77u.xn--gdh5392g6sd; # ςᡱ⒈.≮𑄳ð®
-ò”­œÏ‚ᡱ1..≮𑄳\u200Dð®; ; [B1, P1, V6, X4_2]; xn--1-xmb999meq63t..xn--1ug85gn777ahze; [B1, P1, V6, A4_2]; xn--1-zmb699meq63t..xn--gdh5392g6sd; # ςᡱ1..≮𑄳ð®
-ò”­œÏ‚ᡱ1..<\u0338ð‘„³\u200Dð®; ò”­œÏ‚ᡱ1..≮𑄳\u200Dð®; [B1, P1, V6, X4_2]; xn--1-xmb999meq63t..xn--1ug85gn777ahze; [B1, P1, V6, A4_2]; xn--1-zmb699meq63t..xn--gdh5392g6sd; # ςᡱ1..≮𑄳ð®
-ò”­œÎ£á¡±1..<\u0338ð‘„³\u200Dð®; ò”­œÏƒá¡±1..≮𑄳\u200Dð®; [B1, P1, V6, X4_2]; xn--1-zmb699meq63t..xn--1ug85gn777ahze; [B1, P1, V6, A4_2]; xn--1-zmb699meq63t..xn--gdh5392g6sd; # σᡱ1..≮𑄳ð®
-ò”­œÎ£á¡±1..≮𑄳\u200Dð®; ò”­œÏƒá¡±1..≮𑄳\u200Dð®; [B1, P1, V6, X4_2]; xn--1-zmb699meq63t..xn--1ug85gn777ahze; [B1, P1, V6, A4_2]; xn--1-zmb699meq63t..xn--gdh5392g6sd; # σᡱ1..≮𑄳ð®
-ò”­œÏƒá¡±1..≮𑄳\u200Dð®; ; [B1, P1, V6, X4_2]; xn--1-zmb699meq63t..xn--1ug85gn777ahze; [B1, P1, V6, A4_2]; xn--1-zmb699meq63t..xn--gdh5392g6sd; # σᡱ1..≮𑄳ð®
-ò”­œÏƒá¡±1..<\u0338ð‘„³\u200Dð®; ò”­œÏƒá¡±1..≮𑄳\u200Dð®; [B1, P1, V6, X4_2]; xn--1-zmb699meq63t..xn--1ug85gn777ahze; [B1, P1, V6, A4_2]; xn--1-zmb699meq63t..xn--gdh5392g6sd; # σᡱ1..≮𑄳ð®
+ò”­œÏ‚ᡱ⒈.≮𑄳\u200Dð®; ; [B1, V6]; xn--3xa407hkzinr77u.xn--1ug85gn777ahze; ; xn--4xa207hkzinr77u.xn--gdh5392g6sd; # ςᡱ⒈.≮𑄳ð®
+ò”­œÏ‚ᡱ⒈.<\u0338ð‘„³\u200Dð®; ò”­œÏ‚ᡱ⒈.≮𑄳\u200Dð®; [B1, V6]; xn--3xa407hkzinr77u.xn--1ug85gn777ahze; ; xn--4xa207hkzinr77u.xn--gdh5392g6sd; # ςᡱ⒈.≮𑄳ð®
+ò”­œÏ‚ᡱ1..≮𑄳\u200Dð®; ; [B1, V6, X4_2]; xn--1-xmb999meq63t..xn--1ug85gn777ahze; [B1, V6, A4_2]; xn--1-zmb699meq63t..xn--gdh5392g6sd; # ςᡱ1..≮𑄳ð®
+ò”­œÏ‚ᡱ1..<\u0338ð‘„³\u200Dð®; ò”­œÏ‚ᡱ1..≮𑄳\u200Dð®; [B1, V6, X4_2]; xn--1-xmb999meq63t..xn--1ug85gn777ahze; [B1, V6, A4_2]; xn--1-zmb699meq63t..xn--gdh5392g6sd; # ςᡱ1..≮𑄳ð®
+ò”­œÎ£á¡±1..<\u0338ð‘„³\u200Dð®; ò”­œÏƒá¡±1..≮𑄳\u200Dð®; [B1, V6, X4_2]; xn--1-zmb699meq63t..xn--1ug85gn777ahze; [B1, V6, A4_2]; xn--1-zmb699meq63t..xn--gdh5392g6sd; # σᡱ1..≮𑄳ð®
+ò”­œÎ£á¡±1..≮𑄳\u200Dð®; ò”­œÏƒá¡±1..≮𑄳\u200Dð®; [B1, V6, X4_2]; xn--1-zmb699meq63t..xn--1ug85gn777ahze; [B1, V6, A4_2]; xn--1-zmb699meq63t..xn--gdh5392g6sd; # σᡱ1..≮𑄳ð®
+ò”­œÏƒá¡±1..≮𑄳\u200Dð®; ; [B1, V6, X4_2]; xn--1-zmb699meq63t..xn--1ug85gn777ahze; [B1, V6, A4_2]; xn--1-zmb699meq63t..xn--gdh5392g6sd; # σᡱ1..≮𑄳ð®
+ò”­œÏƒá¡±1..<\u0338ð‘„³\u200Dð®; ò”­œÏƒá¡±1..≮𑄳\u200Dð®; [B1, V6, X4_2]; xn--1-zmb699meq63t..xn--1ug85gn777ahze; [B1, V6, A4_2]; xn--1-zmb699meq63t..xn--gdh5392g6sd; # σᡱ1..≮𑄳ð®
xn--1-zmb699meq63t..xn--gdh5392g6sd; ò”­œÏƒá¡±1..≮𑄳ð®; [B1, V6, X4_2]; xn--1-zmb699meq63t..xn--gdh5392g6sd; [B1, V6, A4_2]; ; # σᡱ1..≮𑄳ð®
xn--1-zmb699meq63t..xn--1ug85gn777ahze; ò”­œÏƒá¡±1..≮𑄳\u200Dð®; [B1, V6, X4_2]; xn--1-zmb699meq63t..xn--1ug85gn777ahze; [B1, V6, A4_2]; ; # σᡱ1..≮𑄳ð®
xn--1-xmb999meq63t..xn--1ug85gn777ahze; ò”­œÏ‚ᡱ1..≮𑄳\u200Dð®; [B1, V6, X4_2]; xn--1-xmb999meq63t..xn--1ug85gn777ahze; [B1, V6, A4_2]; ; # ςᡱ1..≮𑄳ð®
-ò”­œÎ£á¡±â’ˆ.<\u0338ð‘„³\u200Dð®; ò”­œÏƒá¡±â’ˆ.≮𑄳\u200Dð®; [B1, P1, V6]; xn--4xa207hkzinr77u.xn--1ug85gn777ahze; ; xn--4xa207hkzinr77u.xn--gdh5392g6sd; # σᡱ⒈.≮𑄳ð®
-ò”­œÎ£á¡±â’ˆ.≮𑄳\u200Dð®; ò”­œÏƒá¡±â’ˆ.≮𑄳\u200Dð®; [B1, P1, V6]; xn--4xa207hkzinr77u.xn--1ug85gn777ahze; ; xn--4xa207hkzinr77u.xn--gdh5392g6sd; # σᡱ⒈.≮𑄳ð®
-ò”­œÏƒá¡±â’ˆ.≮𑄳\u200Dð®; ; [B1, P1, V6]; xn--4xa207hkzinr77u.xn--1ug85gn777ahze; ; xn--4xa207hkzinr77u.xn--gdh5392g6sd; # σᡱ⒈.≮𑄳ð®
-ò”­œÏƒá¡±â’ˆ.<\u0338ð‘„³\u200Dð®; ò”­œÏƒá¡±â’ˆ.≮𑄳\u200Dð®; [B1, P1, V6]; xn--4xa207hkzinr77u.xn--1ug85gn777ahze; ; xn--4xa207hkzinr77u.xn--gdh5392g6sd; # σᡱ⒈.≮𑄳ð®
+ò”­œÎ£á¡±â’ˆ.<\u0338ð‘„³\u200Dð®; ò”­œÏƒá¡±â’ˆ.≮𑄳\u200Dð®; [B1, V6]; xn--4xa207hkzinr77u.xn--1ug85gn777ahze; ; xn--4xa207hkzinr77u.xn--gdh5392g6sd; # σᡱ⒈.≮𑄳ð®
+ò”­œÎ£á¡±â’ˆ.≮𑄳\u200Dð®; ò”­œÏƒá¡±â’ˆ.≮𑄳\u200Dð®; [B1, V6]; xn--4xa207hkzinr77u.xn--1ug85gn777ahze; ; xn--4xa207hkzinr77u.xn--gdh5392g6sd; # σᡱ⒈.≮𑄳ð®
+ò”­œÏƒá¡±â’ˆ.≮𑄳\u200Dð®; ; [B1, V6]; xn--4xa207hkzinr77u.xn--1ug85gn777ahze; ; xn--4xa207hkzinr77u.xn--gdh5392g6sd; # σᡱ⒈.≮𑄳ð®
+ò”­œÏƒá¡±â’ˆ.<\u0338ð‘„³\u200Dð®; ò”­œÏƒá¡±â’ˆ.≮𑄳\u200Dð®; [B1, V6]; xn--4xa207hkzinr77u.xn--1ug85gn777ahze; ; xn--4xa207hkzinr77u.xn--gdh5392g6sd; # σᡱ⒈.≮𑄳ð®
xn--4xa207hkzinr77u.xn--gdh5392g6sd; ò”­œÏƒá¡±â’ˆ.≮𑄳ð®; [B1, V6]; xn--4xa207hkzinr77u.xn--gdh5392g6sd; ; ; # σᡱ⒈.≮𑄳ð®
xn--4xa207hkzinr77u.xn--1ug85gn777ahze; ò”­œÏƒá¡±â’ˆ.≮𑄳\u200Dð®; [B1, V6]; xn--4xa207hkzinr77u.xn--1ug85gn777ahze; ; ; # σᡱ⒈.≮𑄳ð®
xn--3xa407hkzinr77u.xn--1ug85gn777ahze; ò”­œÏ‚ᡱ⒈.≮𑄳\u200Dð®; [B1, V6]; xn--3xa407hkzinr77u.xn--1ug85gn777ahze; ; ; # ςᡱ⒈.≮𑄳ð®
-\u3164\u094Dá‚ \u17D0.\u180B; \u3164\u094Dá‚ \u17D0.; [P1, V6]; xn--n3b468azngju2a.; ; ; # à¥á‚ áŸ.
-\u1160\u094Dá‚ \u17D0.\u180B; \u1160\u094Dá‚ \u17D0.; [P1, V6]; xn--n3b468aoqa89r.; ; ; # à¥á‚ áŸ.
-\u1160\u094Dâ´€\u17D0.\u180B; \u1160\u094Dâ´€\u17D0.; [P1, V6]; xn--n3b742bkqf4ty.; ; ; # à¥â´€áŸ.
+\u3164\u094Dá‚ \u17D0.\u180B; \u3164\u094Dá‚ \u17D0.; [V6]; xn--n3b468azngju2a.; ; ; # à¥á‚ áŸ.
+\u1160\u094Dá‚ \u17D0.\u180B; \u1160\u094Dá‚ \u17D0.; [V6]; xn--n3b468aoqa89r.; ; ; # à¥á‚ áŸ.
+\u1160\u094Dâ´€\u17D0.\u180B; \u1160\u094Dâ´€\u17D0.; [V6]; xn--n3b742bkqf4ty.; ; ; # à¥â´€áŸ.
xn--n3b742bkqf4ty.; \u1160\u094Dâ´€\u17D0.; [V6]; xn--n3b742bkqf4ty.; ; ; # à¥â´€áŸ.
xn--n3b468aoqa89r.; \u1160\u094Dá‚ \u17D0.; [V6]; xn--n3b468aoqa89r.; ; ; # à¥á‚ áŸ.
-\u3164\u094Dâ´€\u17D0.\u180B; \u3164\u094Dâ´€\u17D0.; [P1, V6]; xn--n3b445e53po6d.; ; ; # à¥â´€áŸ.
+\u3164\u094Dâ´€\u17D0.\u180B; \u3164\u094Dâ´€\u17D0.; [V6]; xn--n3b445e53po6d.; ; ; # à¥â´€áŸ.
xn--n3b445e53po6d.; \u3164\u094Dâ´€\u17D0.; [V6]; xn--n3b445e53po6d.; ; ; # à¥â´€áŸ.
xn--n3b468azngju2a.; \u3164\u094Dá‚ \u17D0.; [V6]; xn--n3b468azngju2a.; ; ; # à¥á‚ áŸ.
â£\u200D.\u09CDð‘°½\u0612\uA929; â£\u200D.\u09CDð‘°½\u0612\uA929; [C2, V5]; xn--1ugy10a.xn--0fb32q3w7q2g4d; ; xn--pei.xn--0fb32q3w7q2g4d; [V5] # â£.à§ð‘°½Ø’ꤩ
â£\u200D.\u09CDð‘°½\u0612\uA929; ; [C2, V5]; xn--1ugy10a.xn--0fb32q3w7q2g4d; ; xn--pei.xn--0fb32q3w7q2g4d; [V5] # â£.à§ð‘°½Ø’ꤩ
xn--pei.xn--0fb32q3w7q2g4d; â£.\u09CDð‘°½\u0612\uA929; [V5]; xn--pei.xn--0fb32q3w7q2g4d; ; ; # â£.à§ð‘°½Ø’ꤩ
xn--1ugy10a.xn--0fb32q3w7q2g4d; â£\u200D.\u09CDð‘°½\u0612\uA929; [C2, V5]; xn--1ugy10a.xn--0fb32q3w7q2g4d; ; ; # â£.à§ð‘°½Ø’ꤩ
-≮ð³ºð¹„.≯ñª®¸ê¡…; ; [B1, P1, V6]; xn--gdh7943gk2a.xn--hdh1383c5e36c; ; ; # ≮ð³º.≯ꡅ
-<\u0338ð³ºð¹„.>\u0338ñª®¸ê¡…; ≮ð³ºð¹„.≯ñª®¸ê¡…; [B1, P1, V6]; xn--gdh7943gk2a.xn--hdh1383c5e36c; ; ; # ≮ð³º.≯ꡅ
+≮ð³ºð¹„.≯ñª®¸ê¡…; ; [B1, V6]; xn--gdh7943gk2a.xn--hdh1383c5e36c; ; ; # ≮ð³º.≯ꡅ
+<\u0338ð³ºð¹„.>\u0338ñª®¸ê¡…; ≮ð³ºð¹„.≯ñª®¸ê¡…; [B1, V6]; xn--gdh7943gk2a.xn--hdh1383c5e36c; ; ; # ≮ð³º.≯ꡅ
xn--gdh7943gk2a.xn--hdh1383c5e36c; ≮ð³ºð¹„.≯ñª®¸ê¡…; [B1, V6]; xn--gdh7943gk2a.xn--hdh1383c5e36c; ; ; # ≮ð³º.≯ꡅ
-\u0CCCð§…ð³ó ²ºï½¡\u0CCDá ¦; \u0CCCð§…ð³ó ²º.\u0CCDá ¦; [B1, P1, V5, V6]; xn--7tc6360ky5bn2732c.xn--8tc429c; ; ; # ೌð§…ð³.à³á ¦
-\u0CCCð§…ð³ó ²ºã€‚\u0CCDá ¦; \u0CCCð§…ð³ó ²º.\u0CCDá ¦; [B1, P1, V5, V6]; xn--7tc6360ky5bn2732c.xn--8tc429c; ; ; # ೌð§…ð³.à³á ¦
-\u0CCCð§…ð²ó ²ºã€‚\u0CCDá ¦; \u0CCCð§…ð³ó ²º.\u0CCDá ¦; [B1, P1, V5, V6]; xn--7tc6360ky5bn2732c.xn--8tc429c; ; ; # ೌð§…ð³.à³á ¦
+\u0CCCð§…ð³ó ²ºï½¡\u0CCDá ¦; \u0CCCð§…ð³ó ²º.\u0CCDá ¦; [B1, V5, V6]; xn--7tc6360ky5bn2732c.xn--8tc429c; ; ; # ೌð§…ð³.à³á ¦
+\u0CCCð§…ð³ó ²ºã€‚\u0CCDá ¦; \u0CCCð§…ð³ó ²º.\u0CCDá ¦; [B1, V5, V6]; xn--7tc6360ky5bn2732c.xn--8tc429c; ; ; # ೌð§…ð³.à³á ¦
+\u0CCCð§…ð²ó ²ºã€‚\u0CCDá ¦; \u0CCCð§…ð³ó ²º.\u0CCDá ¦; [B1, V5, V6]; xn--7tc6360ky5bn2732c.xn--8tc429c; ; ; # ೌð§…ð³.à³á ¦
xn--7tc6360ky5bn2732c.xn--8tc429c; \u0CCCð§…ð³ó ²º.\u0CCDá ¦; [B1, V5, V6]; xn--7tc6360ky5bn2732c.xn--8tc429c; ; ; # ೌð§…ð³.à³á ¦
-\u0CCCð§…ð²ó ²ºï½¡\u0CCDá ¦; \u0CCCð§…ð³ó ²º.\u0CCDá ¦; [B1, P1, V5, V6]; xn--7tc6360ky5bn2732c.xn--8tc429c; ; ; # ೌð§…ð³.à³á ¦
+\u0CCCð§…ð²ó ²ºï½¡\u0CCDá ¦; \u0CCCð§…ð³ó ²º.\u0CCDá ¦; [B1, V5, V6]; xn--7tc6360ky5bn2732c.xn--8tc429c; ; ; # ೌð§…ð³.à³á ¦
\u0349。𧡫; \u0349.𧡫; [V5]; xn--nua.xn--bc6k; ; ; # ͉.𧡫
xn--nua.xn--bc6k; \u0349.𧡫; [V5]; xn--nua.xn--bc6k; ; ; # ͉.𧡫
-𑰿󠅦.\u1160; 𑰿.\u1160; [P1, V5, V6]; xn--ok3d.xn--psd; ; ; # 𑰿.
-ð‘°¿ó …¦.\u1160; ð‘°¿.\u1160; [P1, V5, V6]; xn--ok3d.xn--psd; ; ; # ð‘°¿.
+𑰿󠅦.\u1160; 𑰿.\u1160; [V5, V6]; xn--ok3d.xn--psd; ; ; # 𑰿.
+ð‘°¿ó …¦.\u1160; ð‘°¿.\u1160; [V5, V6]; xn--ok3d.xn--psd; ; ; # ð‘°¿.
xn--ok3d.xn--psd; ð‘°¿.\u1160; [V5, V6]; xn--ok3d.xn--psd; ; ; # ð‘°¿.
--𞤆\u200D。󸼄𞳒; -𞤨\u200D.󸼄𞳒; [B1, B5, B6, C2, P1, V3, V6]; xn----ugnx367r.xn--846h96596c; ; xn----ni8r.xn--846h96596c; [B1, B5, B6, P1, V3, V6] # -𞤨.
--𞤨\u200D。󸼄𞳒; -𞤨\u200D.󸼄𞳒; [B1, B5, B6, C2, P1, V3, V6]; xn----ugnx367r.xn--846h96596c; ; xn----ni8r.xn--846h96596c; [B1, B5, B6, P1, V3, V6] # -𞤨.
+-𞤆\u200D。󸼄𞳒; -𞤨\u200D.󸼄𞳒; [B1, B5, B6, C2, V3, V6]; xn----ugnx367r.xn--846h96596c; ; xn----ni8r.xn--846h96596c; [B1, B5, B6, V3, V6] # -𞤨.
+-𞤨\u200D。󸼄𞳒; -𞤨\u200D.󸼄𞳒; [B1, B5, B6, C2, V3, V6]; xn----ugnx367r.xn--846h96596c; ; xn----ni8r.xn--846h96596c; [B1, B5, B6, V3, V6] # -𞤨.
xn----ni8r.xn--846h96596c; -𞤨.󸼄𞳒; [B1, B5, B6, V3, V6]; xn----ni8r.xn--846h96596c; ; ; # -𞤨.
xn----ugnx367r.xn--846h96596c; -𞤨\u200D.󸼄𞳒; [B1, B5, B6, C2, V3, V6]; xn----ugnx367r.xn--846h96596c; ; ; # -𞤨.
-ê¡ó ‡¶â‰¯ð³¾½ã€‚\u1DFD⾇滸ð¹°; ê¡ó ‡¶â‰¯ð³¾½.\u1DFD舛滸ð¹°; [B1, P1, V5, V6]; xn--hdh7483cu6twwki8e.xn--yfg0765a58l0n6k; ; ; # ê¡â‰¯.᷽舛滸ð¹°
-ê¡ó ‡¶>\u0338𳾽。\u1DFD⾇滸ð¹°; ê¡ó ‡¶â‰¯ð³¾½.\u1DFD舛滸ð¹°; [B1, P1, V5, V6]; xn--hdh7483cu6twwki8e.xn--yfg0765a58l0n6k; ; ; # ê¡â‰¯.᷽舛滸ð¹°
-ê¡ó ‡¶â‰¯ð³¾½ã€‚\u1DFD舛滸ð¹°; ê¡ó ‡¶â‰¯ð³¾½.\u1DFD舛滸ð¹°; [B1, P1, V5, V6]; xn--hdh7483cu6twwki8e.xn--yfg0765a58l0n6k; ; ; # ê¡â‰¯.᷽舛滸ð¹°
-ê¡ó ‡¶>\u0338𳾽。\u1DFD舛滸ð¹°; ê¡ó ‡¶â‰¯ð³¾½.\u1DFD舛滸ð¹°; [B1, P1, V5, V6]; xn--hdh7483cu6twwki8e.xn--yfg0765a58l0n6k; ; ; # ê¡â‰¯.᷽舛滸ð¹°
+ê¡ó ‡¶â‰¯ð³¾½ã€‚\u1DFD⾇滸ð¹°; ê¡ó ‡¶â‰¯ð³¾½.\u1DFD舛滸ð¹°; [B1, V5, V6]; xn--hdh7483cu6twwki8e.xn--yfg0765a58l0n6k; ; ; # ê¡â‰¯.᷽舛滸ð¹°
+ê¡ó ‡¶>\u0338𳾽。\u1DFD⾇滸ð¹°; ê¡ó ‡¶â‰¯ð³¾½.\u1DFD舛滸ð¹°; [B1, V5, V6]; xn--hdh7483cu6twwki8e.xn--yfg0765a58l0n6k; ; ; # ê¡â‰¯.᷽舛滸ð¹°
+ê¡ó ‡¶â‰¯ð³¾½ã€‚\u1DFD舛滸ð¹°; ê¡ó ‡¶â‰¯ð³¾½.\u1DFD舛滸ð¹°; [B1, V5, V6]; xn--hdh7483cu6twwki8e.xn--yfg0765a58l0n6k; ; ; # ê¡â‰¯.᷽舛滸ð¹°
+ê¡ó ‡¶>\u0338𳾽。\u1DFD舛滸ð¹°; ê¡ó ‡¶â‰¯ð³¾½.\u1DFD舛滸ð¹°; [B1, V5, V6]; xn--hdh7483cu6twwki8e.xn--yfg0765a58l0n6k; ; ; # ê¡â‰¯.᷽舛滸ð¹°
xn--hdh7483cu6twwki8e.xn--yfg0765a58l0n6k; ê¡ó ‡¶â‰¯ð³¾½.\u1DFD舛滸ð¹°; [B1, V5, V6]; xn--hdh7483cu6twwki8e.xn--yfg0765a58l0n6k; ; ; # ê¡â‰¯.᷽舛滸ð¹°
è”。𑰺; è”.ð‘°º; [V5]; xn--uy1a.xn--jk3d; ; ; # è”.ð‘°º
è”。𑰺; è”.ð‘°º; [V5]; xn--uy1a.xn--jk3d; ; ; # è”.ð‘°º
@@ -700,103 +706,103 @@ xn--uy1a.xn--jk3d; è”.ð‘°º; [V5]; xn--uy1a.xn--jk3d; ; ; # è”.ð‘°º
ðŸ¿ð®‹ã€‚ó „Š; 9ð®‹.; [B1]; xn--9-rv5i.; ; ; # 9ð®‹.
9ð®‹ã€‚ó „Š; 9ð®‹.; [B1]; xn--9-rv5i.; ; ; # 9ð®‹.
xn--9-rv5i.; 9ð®‹.; [B1]; xn--9-rv5i.; ; ; # 9ð®‹.
-󟇇-䟖F。\u07CB⒈\u0662; 󟇇-䟖f.\u07CB⒈\u0662; [B4, P1, V6]; xn---f-mz8b08788k.xn--bib53ev44d; ; ; # -䟖f.ߋ⒈٢
-󟇇-䟖F。\u07CB1.\u0662; 󟇇-䟖f.\u07CB1.\u0662; [B1, P1, V6]; xn---f-mz8b08788k.xn--1-ybd.xn--bib; ; ; # -䟖f.ߋ1.٢
-󟇇-䟖f。\u07CB1.\u0662; 󟇇-䟖f.\u07CB1.\u0662; [B1, P1, V6]; xn---f-mz8b08788k.xn--1-ybd.xn--bib; ; ; # -䟖f.ߋ1.٢
+󟇇-䟖F。\u07CB⒈\u0662; 󟇇-䟖f.\u07CB⒈\u0662; [B4, V6]; xn---f-mz8b08788k.xn--bib53ev44d; ; ; # -䟖f.ߋ⒈٢
+󟇇-䟖F。\u07CB1.\u0662; 󟇇-䟖f.\u07CB1.\u0662; [B1, V6]; xn---f-mz8b08788k.xn--1-ybd.xn--bib; ; ; # -䟖f.ߋ1.٢
+󟇇-䟖f。\u07CB1.\u0662; 󟇇-䟖f.\u07CB1.\u0662; [B1, V6]; xn---f-mz8b08788k.xn--1-ybd.xn--bib; ; ; # -䟖f.ߋ1.٢
xn---f-mz8b08788k.xn--1-ybd.xn--bib; 󟇇-䟖f.\u07CB1.\u0662; [B1, V6]; xn---f-mz8b08788k.xn--1-ybd.xn--bib; ; ; # -䟖f.ߋ1.٢
-󟇇-䟖f。\u07CB⒈\u0662; 󟇇-䟖f.\u07CB⒈\u0662; [B4, P1, V6]; xn---f-mz8b08788k.xn--bib53ev44d; ; ; # -䟖f.ߋ⒈٢
+󟇇-䟖f。\u07CB⒈\u0662; 󟇇-䟖f.\u07CB⒈\u0662; [B4, V6]; xn---f-mz8b08788k.xn--bib53ev44d; ; ; # -䟖f.ߋ⒈٢
xn---f-mz8b08788k.xn--bib53ev44d; 󟇇-䟖f.\u07CB⒈\u0662; [B4, V6]; xn---f-mz8b08788k.xn--bib53ev44d; ; ; # -䟖f.ߋ⒈٢
\u200C。ð¹º; \u200C.ð¹º; [B1, C1]; xn--0ug.xn--yo0d; ; .xn--yo0d; [B1, A4_2] # .ð¹º
\u200C。ð¹º; \u200C.ð¹º; [B1, C1]; xn--0ug.xn--yo0d; ; .xn--yo0d; [B1, A4_2] # .ð¹º
.xn--yo0d; .ð¹º; [B1, X4_2]; .xn--yo0d; [B1, A4_2]; ; # .ð¹º
xn--0ug.xn--yo0d; \u200C.ð¹º; [B1, C1]; xn--0ug.xn--yo0d; ; ; # .ð¹º
-ð¡†.≯\u200C-𞥀; ; [B1, C1, P1, V6]; xn--le9c.xn----rgn40iy359e; ; xn--le9c.xn----ogo9956r; [B1, P1, V6] # ð¡†.≯-𞥀
-ð¡†.>\u0338\u200C-𞥀; ð¡†.≯\u200C-𞥀; [B1, C1, P1, V6]; xn--le9c.xn----rgn40iy359e; ; xn--le9c.xn----ogo9956r; [B1, P1, V6] # ð¡†.≯-𞥀
-ð¡†.>\u0338\u200C-𞤞; ð¡†.≯\u200C-𞥀; [B1, C1, P1, V6]; xn--le9c.xn----rgn40iy359e; ; xn--le9c.xn----ogo9956r; [B1, P1, V6] # ð¡†.≯-𞥀
-ð¡†.≯\u200C-𞤞; ð¡†.≯\u200C-𞥀; [B1, C1, P1, V6]; xn--le9c.xn----rgn40iy359e; ; xn--le9c.xn----ogo9956r; [B1, P1, V6] # ð¡†.≯-𞥀
-xn--le9c.xn----ogo9956r; ð¡†.≯-𞥀; [B1, V6]; xn--le9c.xn----ogo9956r; ; ; # ð¡†.≯-𞥀
-xn--le9c.xn----rgn40iy359e; ð¡†.≯\u200C-𞥀; [B1, C1, V6]; xn--le9c.xn----rgn40iy359e; ; ; # ð¡†.≯-𞥀
-ó €-。≠\uFCD7; ó €-.≠\u0647\u062C; [B1, P1, V3, V6]; xn----f411m.xn--rgb7c611j; ; ; # -.≠هج
-ó €-。=\u0338\uFCD7; ó €-.≠\u0647\u062C; [B1, P1, V3, V6]; xn----f411m.xn--rgb7c611j; ; ; # -.≠هج
-ó €-。≠\u0647\u062C; ó €-.≠\u0647\u062C; [B1, P1, V3, V6]; xn----f411m.xn--rgb7c611j; ; ; # -.≠هج
-ó €-。=\u0338\u0647\u062C; ó €-.≠\u0647\u062C; [B1, P1, V3, V6]; xn----f411m.xn--rgb7c611j; ; ; # -.≠هج
+ð¡†.≯\u200C-𞥀; ; [B1, C1]; xn--le9c.xn----rgn40iy359e; ; xn--le9c.xn----ogo9956r; [B1] # ð¡†.≯-𞥀
+ð¡†.>\u0338\u200C-𞥀; ð¡†.≯\u200C-𞥀; [B1, C1]; xn--le9c.xn----rgn40iy359e; ; xn--le9c.xn----ogo9956r; [B1] # ð¡†.≯-𞥀
+ð¡†.>\u0338\u200C-𞤞; ð¡†.≯\u200C-𞥀; [B1, C1]; xn--le9c.xn----rgn40iy359e; ; xn--le9c.xn----ogo9956r; [B1] # ð¡†.≯-𞥀
+ð¡†.≯\u200C-𞤞; ð¡†.≯\u200C-𞥀; [B1, C1]; xn--le9c.xn----rgn40iy359e; ; xn--le9c.xn----ogo9956r; [B1] # ð¡†.≯-𞥀
+xn--le9c.xn----ogo9956r; ð¡†.≯-𞥀; [B1]; xn--le9c.xn----ogo9956r; ; ; # ð¡†.≯-𞥀
+xn--le9c.xn----rgn40iy359e; ð¡†.≯\u200C-𞥀; [B1, C1]; xn--le9c.xn----rgn40iy359e; ; ; # ð¡†.≯-𞥀
+ó €-。≠\uFCD7; ó €-.≠\u0647\u062C; [B1, V3, V6]; xn----f411m.xn--rgb7c611j; ; ; # -.≠هج
+ó €-。=\u0338\uFCD7; ó €-.≠\u0647\u062C; [B1, V3, V6]; xn----f411m.xn--rgb7c611j; ; ; # -.≠هج
+ó €-。≠\u0647\u062C; ó €-.≠\u0647\u062C; [B1, V3, V6]; xn----f411m.xn--rgb7c611j; ; ; # -.≠هج
+ó €-。=\u0338\u0647\u062C; ó €-.≠\u0647\u062C; [B1, V3, V6]; xn----f411m.xn--rgb7c611j; ; ; # -.≠هج
xn----f411m.xn--rgb7c611j; ó €-.≠\u0647\u062C; [B1, V3, V6]; xn----f411m.xn--rgb7c611j; ; ; # -.≠هج
-񻬹𑈵。\u200D𞨶; 񻬹𑈵.\u200D𞨶; [B1, C2, P1, V6]; xn--8g1d12120a.xn--1ug6651p; ; xn--8g1d12120a.xn--5l6h; [P1, V6] # 𑈵.
+񻬹𑈵。\u200D𞨶; 񻬹𑈵.\u200D𞨶; [B1, C2, V6]; xn--8g1d12120a.xn--1ug6651p; ; xn--8g1d12120a.xn--5l6h; [V6] # 𑈵.
xn--8g1d12120a.xn--5l6h; 񻬹𑈵.𞨶; [V6]; xn--8g1d12120a.xn--5l6h; ; ; # 𑈵.
xn--8g1d12120a.xn--1ug6651p; 񻬹𑈵.\u200D𞨶; [B1, C2, V6]; xn--8g1d12120a.xn--1ug6651p; ; ; # 𑈵.
-𑋧\uA9C02。㧉򒖄; 𑋧\uA9C02.㧉򒖄; [P1, V5, V6]; xn--2-5z4eu89y.xn--97l02706d; ; ; # 𑋧꧀2.㧉
-𑋧\uA9C02。㧉򒖄; 𑋧\uA9C02.㧉򒖄; [P1, V5, V6]; xn--2-5z4eu89y.xn--97l02706d; ; ; # 𑋧꧀2.㧉
+𑋧\uA9C02。㧉򒖄; 𑋧\uA9C02.㧉򒖄; [V5, V6]; xn--2-5z4eu89y.xn--97l02706d; ; ; # 𑋧꧀2.㧉
+𑋧\uA9C02。㧉򒖄; 𑋧\uA9C02.㧉򒖄; [V5, V6]; xn--2-5z4eu89y.xn--97l02706d; ; ; # 𑋧꧀2.㧉
xn--2-5z4eu89y.xn--97l02706d; 𑋧\uA9C02.㧉򒖄; [V5, V6]; xn--2-5z4eu89y.xn--97l02706d; ; ; # 𑋧꧀2.㧉
-\u200C𽬄ð¹´ðž©¥ã€‚≯6; \u200C𽬄ð¹´ðž©¥.≯6; [B1, C1, P1, V6]; xn--0ug7105gf5wfxepq.xn--6-ogo; ; xn--so0du768aim9m.xn--6-ogo; [B1, B5, B6, P1, V6] # ð¹´.≯6
-\u200C𽬄ð¹´ðž©¥ã€‚>\u03386; \u200C𽬄ð¹´ðž©¥.≯6; [B1, C1, P1, V6]; xn--0ug7105gf5wfxepq.xn--6-ogo; ; xn--so0du768aim9m.xn--6-ogo; [B1, B5, B6, P1, V6] # ð¹´.≯6
+\u200C𽬄ð¹´ðž©¥ã€‚≯6; \u200C𽬄ð¹´ðž©¥.≯6; [B1, C1, V6]; xn--0ug7105gf5wfxepq.xn--6-ogo; ; xn--so0du768aim9m.xn--6-ogo; [B1, B5, B6, V6] # ð¹´.≯6
+\u200C𽬄ð¹´ðž©¥ã€‚>\u03386; \u200C𽬄ð¹´ðž©¥.≯6; [B1, C1, V6]; xn--0ug7105gf5wfxepq.xn--6-ogo; ; xn--so0du768aim9m.xn--6-ogo; [B1, B5, B6, V6] # ð¹´.≯6
xn--so0du768aim9m.xn--6-ogo; 𽬄ð¹´ðž©¥.≯6; [B1, B5, B6, V6]; xn--so0du768aim9m.xn--6-ogo; ; ; # ð¹´.≯6
xn--0ug7105gf5wfxepq.xn--6-ogo; \u200C𽬄ð¹´ðž©¥.≯6; [B1, C1, V6]; xn--0ug7105gf5wfxepq.xn--6-ogo; ; ; # ð¹´.≯6
-ð‘¿ï¼Žð¹¦ð»žµ-\u200D; ð‘¿.ð¹¦ð»žµ-\u200D; [B1, B3, B6, C2, P1, V5, V6]; xn--q30d.xn----ugn1088hfsxv; ; xn--q30d.xn----i26i1299n; [B1, B3, B6, P1, V3, V5, V6] # ð‘¿.ð¹¦-
-ð‘¿.ð¹¦ð»žµ-\u200D; ; [B1, B3, B6, C2, P1, V5, V6]; xn--q30d.xn----ugn1088hfsxv; ; xn--q30d.xn----i26i1299n; [B1, B3, B6, P1, V3, V5, V6] # ð‘¿.ð¹¦-
-xn--q30d.xn----i26i1299n; ð‘¿.ð¹¦ð»žµ-; [B1, B3, B6, V3, V5, V6]; xn--q30d.xn----i26i1299n; ; ; # ð‘¿.ð¹¦-
-xn--q30d.xn----ugn1088hfsxv; ð‘¿.ð¹¦ð»žµ-\u200D; [B1, B3, B6, C2, V5, V6]; xn--q30d.xn----ugn1088hfsxv; ; ; # ð‘¿.ð¹¦-
-⤸ς𺱀。\uFFA0; ⤸ς𺱀.\uFFA0; [P1, V6]; xn--3xa392qmp03d.xn--cl7c; ; xn--4xa192qmp03d.xn--cl7c; # ⤸ς.
-⤸ς𺱀。\u1160; ⤸ς𺱀.\u1160; [P1, V6]; xn--3xa392qmp03d.xn--psd; ; xn--4xa192qmp03d.xn--psd; # ⤸ς.
-⤸Σ𺱀。\u1160; ⤸σ𺱀.\u1160; [P1, V6]; xn--4xa192qmp03d.xn--psd; ; ; # ⤸σ.
-⤸σ𺱀。\u1160; ⤸σ𺱀.\u1160; [P1, V6]; xn--4xa192qmp03d.xn--psd; ; ; # ⤸σ.
+ð‘¿ï¼Žð¹¦ð»žµ-\u200D; ð‘¿.ð¹¦ð»žµ-\u200D; [B1, C2, V5, V6]; xn--q30d.xn----ugn1088hfsxv; ; xn--q30d.xn----i26i1299n; [B1, V3, V5, V6] # ð‘¿.ð¹¦-
+ð‘¿.ð¹¦ð»žµ-\u200D; ; [B1, C2, V5, V6]; xn--q30d.xn----ugn1088hfsxv; ; xn--q30d.xn----i26i1299n; [B1, V3, V5, V6] # ð‘¿.ð¹¦-
+xn--q30d.xn----i26i1299n; ð‘¿.ð¹¦ð»žµ-; [B1, V3, V5, V6]; xn--q30d.xn----i26i1299n; ; ; # ð‘¿.ð¹¦-
+xn--q30d.xn----ugn1088hfsxv; ð‘¿.ð¹¦ð»žµ-\u200D; [B1, C2, V5, V6]; xn--q30d.xn----ugn1088hfsxv; ; ; # ð‘¿.ð¹¦-
+⤸ς𺱀。\uFFA0; ⤸ς𺱀.\uFFA0; [V6]; xn--3xa392qmp03d.xn--cl7c; ; xn--4xa192qmp03d.xn--cl7c; # ⤸ς.
+⤸ς𺱀。\u1160; ⤸ς𺱀.\u1160; [V6]; xn--3xa392qmp03d.xn--psd; ; xn--4xa192qmp03d.xn--psd; # ⤸ς.
+⤸Σ𺱀。\u1160; ⤸σ𺱀.\u1160; [V6]; xn--4xa192qmp03d.xn--psd; ; ; # ⤸σ.
+⤸σ𺱀。\u1160; ⤸σ𺱀.\u1160; [V6]; xn--4xa192qmp03d.xn--psd; ; ; # ⤸σ.
xn--4xa192qmp03d.xn--psd; ⤸σ𺱀.\u1160; [V6]; xn--4xa192qmp03d.xn--psd; ; ; # ⤸σ.
xn--3xa392qmp03d.xn--psd; ⤸ς𺱀.\u1160; [V6]; xn--3xa392qmp03d.xn--psd; ; ; # ⤸ς.
-⤸Σ𺱀。\uFFA0; ⤸σ𺱀.\uFFA0; [P1, V6]; xn--4xa192qmp03d.xn--cl7c; ; ; # ⤸σ.
-⤸σ𺱀。\uFFA0; ⤸σ𺱀.\uFFA0; [P1, V6]; xn--4xa192qmp03d.xn--cl7c; ; ; # ⤸σ.
+⤸Σ𺱀。\uFFA0; ⤸σ𺱀.\uFFA0; [V6]; xn--4xa192qmp03d.xn--cl7c; ; ; # ⤸σ.
+⤸σ𺱀。\uFFA0; ⤸σ𺱀.\uFFA0; [V6]; xn--4xa192qmp03d.xn--cl7c; ; ; # ⤸σ.
xn--4xa192qmp03d.xn--cl7c; ⤸σ𺱀.\uFFA0; [V6]; xn--4xa192qmp03d.xn--cl7c; ; ; # ⤸σ.
xn--3xa392qmp03d.xn--cl7c; ⤸ς𺱀.\uFFA0; [V6]; xn--3xa392qmp03d.xn--cl7c; ; ; # ⤸ς.
-\u0765\u1035ð«”\u06D5.ð¦¬ð‘‹ªá‚£; ; [B2, B3, P1, V6]; xn--llb10as9tqp5y.xn--bnd9168j21f; ; ; # ݥဵð«”Û•.ð¦¬ð‘‹ªá‚£
+\u0765\u1035ð«”\u06D5.ð¦¬ð‘‹ªá‚£; ; [B2, B3, V6]; xn--llb10as9tqp5y.xn--bnd9168j21f; ; ; # ݥဵð«”Û•.ð¦¬ð‘‹ªá‚£
\u0765\u1035ð«”\u06D5.ð¦¬ð‘‹ªâ´ƒ; ; [B2, B3]; xn--llb10as9tqp5y.xn--ukj7371e21f; ; ; # ݥဵð«”Û•.ð¦¬ð‘‹ªâ´ƒ
xn--llb10as9tqp5y.xn--ukj7371e21f; \u0765\u1035ð«”\u06D5.ð¦¬ð‘‹ªâ´ƒ; [B2, B3]; xn--llb10as9tqp5y.xn--ukj7371e21f; ; ; # ݥဵð«”Û•.ð¦¬ð‘‹ªâ´ƒ
xn--llb10as9tqp5y.xn--bnd9168j21f; \u0765\u1035ð«”\u06D5.ð¦¬ð‘‹ªá‚£; [B2, B3, V6]; xn--llb10as9tqp5y.xn--bnd9168j21f; ; ; # ݥဵð«”Û•.ð¦¬ð‘‹ªá‚£
-\u0661\u1B44-킼.\u1BAA\u0616\u066C≯; ; [B1, B5, B6, P1, V5, V6]; xn----9pc551nk39n.xn--4fb6o571degg; ; ; # ١᭄-킼.᮪ؖ٬≯
-\u0661\u1B44-á„ᅵᆿ.\u1BAA\u0616\u066C>\u0338; \u0661\u1B44-킼.\u1BAA\u0616\u066C≯; [B1, B5, B6, P1, V5, V6]; xn----9pc551nk39n.xn--4fb6o571degg; ; ; # Ù¡á­„-킼.᮪ؖ٬≯
-xn----9pc551nk39n.xn--4fb6o571degg; \u0661\u1B44-킼.\u1BAA\u0616\u066C≯; [B1, B5, B6, V5, V6]; xn----9pc551nk39n.xn--4fb6o571degg; ; ; # ١᭄-킼.᮪ؖ٬≯
--。\u06C2\u0604򅖡𑓂; -.\u06C2\u0604򅖡𑓂; [B1, B2, B3, P1, V3, V6]; -.xn--mfb39a7208dzgs3d; ; ; # -.ۂ𑓂
--。\u06C1\u0654\u0604򅖡𑓂; -.\u06C2\u0604򅖡𑓂; [B1, B2, B3, P1, V3, V6]; -.xn--mfb39a7208dzgs3d; ; ; # -.ۂ𑓂
+\u0661\u1B44-킼.\u1BAA\u0616\u066C≯; ; [B1, B5, B6, V5]; xn----9pc551nk39n.xn--4fb6o571degg; ; ; # ١᭄-킼.᮪ؖ٬≯
+\u0661\u1B44-á„ᅵᆿ.\u1BAA\u0616\u066C>\u0338; \u0661\u1B44-킼.\u1BAA\u0616\u066C≯; [B1, B5, B6, V5]; xn----9pc551nk39n.xn--4fb6o571degg; ; ; # Ù¡á­„-킼.᮪ؖ٬≯
+xn----9pc551nk39n.xn--4fb6o571degg; \u0661\u1B44-킼.\u1BAA\u0616\u066C≯; [B1, B5, B6, V5]; xn----9pc551nk39n.xn--4fb6o571degg; ; ; # ١᭄-킼.᮪ؖ٬≯
+-。\u06C2\u0604򅖡𑓂; -.\u06C2\u0604򅖡𑓂; [B1, B2, B3, V3, V6]; -.xn--mfb39a7208dzgs3d; ; ; # -.ۂ𑓂
+-。\u06C1\u0654\u0604򅖡𑓂; -.\u06C2\u0604򅖡𑓂; [B1, B2, B3, V3, V6]; -.xn--mfb39a7208dzgs3d; ; ; # -.ۂ𑓂
-.xn--mfb39a7208dzgs3d; -.\u06C2\u0604ò…–¡ð‘“‚; [B1, B2, B3, V3, V6]; -.xn--mfb39a7208dzgs3d; ; ; # -.Û‚ð‘“‚
-\u200D󯑖ó ï¼Ž\u05BDð™®°ê¡ð‹¡; \u200D󯑖ó .\u05BDð™®°ê¡ð‹¡; [C2, P1, V5, V6]; xn--1ug66101lt8me.xn--ldb8734fg0qcyzzg; ; xn--b726ey18m.xn--ldb8734fg0qcyzzg; [P1, V5, V6] # .Ö½ê¡ð‹¡
-\u200D󯑖ó .\u05BDð™®°ê¡ð‹¡; ; [C2, P1, V5, V6]; xn--1ug66101lt8me.xn--ldb8734fg0qcyzzg; ; xn--b726ey18m.xn--ldb8734fg0qcyzzg; [P1, V5, V6] # .Ö½ê¡ð‹¡
+\u200D󯑖ó ï¼Ž\u05BDð™®°ê¡ð‹¡; \u200D󯑖ó .\u05BDð™®°ê¡ð‹¡; [C2, V5, V6]; xn--1ug66101lt8me.xn--ldb8734fg0qcyzzg; ; xn--b726ey18m.xn--ldb8734fg0qcyzzg; [V5, V6] # .Ö½ê¡ð‹¡
+\u200D󯑖ó .\u05BDð™®°ê¡ð‹¡; ; [C2, V5, V6]; xn--1ug66101lt8me.xn--ldb8734fg0qcyzzg; ; xn--b726ey18m.xn--ldb8734fg0qcyzzg; [V5, V6] # .Ö½ê¡ð‹¡
xn--b726ey18m.xn--ldb8734fg0qcyzzg; 󯑖ó .\u05BDð™®°ê¡ð‹¡; [V5, V6]; xn--b726ey18m.xn--ldb8734fg0qcyzzg; ; ; # .Ö½ê¡ð‹¡
xn--1ug66101lt8me.xn--ldb8734fg0qcyzzg; \u200D󯑖ó .\u05BDð™®°ê¡ð‹¡; [C2, V5, V6]; xn--1ug66101lt8me.xn--ldb8734fg0qcyzzg; ; ; # .Ö½ê¡ð‹¡
-︒ôƒˆµÏ‚ñ€ ‡ï½¡ð®ˆ; ︒ôƒˆµÏ‚ñ€ ‡.ð®ˆ; [B1, P1, V6]; xn--3xa3729jwz5t7gl5f.xn--f29c; ; xn--4xa1729jwz5t7gl5f.xn--f29c; # ︒ς.ð®ˆ
-。ôƒˆµÏ‚ñ€ ‡ã€‚ð®ˆ; .ôƒˆµÏ‚ñ€ ‡.ð®ˆ; [P1, V6, X4_2]; .xn--3xa88573c7n64d.xn--f29c; [P1, V6, A4_2]; .xn--4xa68573c7n64d.xn--f29c; # .Ï‚.ð®ˆ
-。ôƒˆµÎ£ñ€ ‡ã€‚ð®ˆ; .ôƒˆµÏƒñ€ ‡.ð®ˆ; [P1, V6, X4_2]; .xn--4xa68573c7n64d.xn--f29c; [P1, V6, A4_2]; ; # .σ.ð®ˆ
-。ôƒˆµÏƒñ€ ‡ã€‚ð®ˆ; .ôƒˆµÏƒñ€ ‡.ð®ˆ; [P1, V6, X4_2]; .xn--4xa68573c7n64d.xn--f29c; [P1, V6, A4_2]; ; # .σ.ð®ˆ
+︒ôƒˆµÏ‚ñ€ ‡ï½¡ð®ˆ; ︒ôƒˆµÏ‚ñ€ ‡.ð®ˆ; [B1, V6]; xn--3xa3729jwz5t7gl5f.xn--f29c; ; xn--4xa1729jwz5t7gl5f.xn--f29c; # ︒ς.ð®ˆ
+。ôƒˆµÏ‚ñ€ ‡ã€‚ð®ˆ; .ôƒˆµÏ‚ñ€ ‡.ð®ˆ; [V6, X4_2]; .xn--3xa88573c7n64d.xn--f29c; [V6, A4_2]; .xn--4xa68573c7n64d.xn--f29c; # .Ï‚.ð®ˆ
+。ôƒˆµÎ£ñ€ ‡ã€‚ð®ˆ; .ôƒˆµÏƒñ€ ‡.ð®ˆ; [V6, X4_2]; .xn--4xa68573c7n64d.xn--f29c; [V6, A4_2]; ; # .σ.ð®ˆ
+。ôƒˆµÏƒñ€ ‡ã€‚ð®ˆ; .ôƒˆµÏƒñ€ ‡.ð®ˆ; [V6, X4_2]; .xn--4xa68573c7n64d.xn--f29c; [V6, A4_2]; ; # .σ.ð®ˆ
.xn--4xa68573c7n64d.xn--f29c; .ôƒˆµÏƒñ€ ‡.ð®ˆ; [V6, X4_2]; .xn--4xa68573c7n64d.xn--f29c; [V6, A4_2]; ; # .σ.ð®ˆ
.xn--3xa88573c7n64d.xn--f29c; .ôƒˆµÏ‚ñ€ ‡.ð®ˆ; [V6, X4_2]; .xn--3xa88573c7n64d.xn--f29c; [V6, A4_2]; ; # .Ï‚.ð®ˆ
-︒ôƒˆµÎ£ñ€ ‡ï½¡ð®ˆ; ︒ôƒˆµÏƒñ€ ‡.ð®ˆ; [B1, P1, V6]; xn--4xa1729jwz5t7gl5f.xn--f29c; ; ; # ︒σ.ð®ˆ
-︒ôƒˆµÏƒñ€ ‡ï½¡ð®ˆ; ︒ôƒˆµÏƒñ€ ‡.ð®ˆ; [B1, P1, V6]; xn--4xa1729jwz5t7gl5f.xn--f29c; ; ; # ︒σ.ð®ˆ
+︒ôƒˆµÎ£ñ€ ‡ï½¡ð®ˆ; ︒ôƒˆµÏƒñ€ ‡.ð®ˆ; [B1, V6]; xn--4xa1729jwz5t7gl5f.xn--f29c; ; ; # ︒σ.ð®ˆ
+︒ôƒˆµÏƒñ€ ‡ï½¡ð®ˆ; ︒ôƒˆµÏƒñ€ ‡.ð®ˆ; [B1, V6]; xn--4xa1729jwz5t7gl5f.xn--f29c; ; ; # ︒σ.ð®ˆ
xn--4xa1729jwz5t7gl5f.xn--f29c; ︒ôƒˆµÏƒñ€ ‡.ð®ˆ; [B1, V6]; xn--4xa1729jwz5t7gl5f.xn--f29c; ; ; # ︒σ.ð®ˆ
xn--3xa3729jwz5t7gl5f.xn--f29c; ︒ôƒˆµÏ‚ñ€ ‡.ð®ˆ; [B1, V6]; xn--3xa3729jwz5t7gl5f.xn--f29c; ; ; # ︒ς.ð®ˆ
-\u07D9.\u06EE󆾃≯󠅲; \u07D9.\u06EE󆾃≯; [B2, B3, P1, V6]; xn--0sb.xn--bmb691l0524t; ; ; # ߙ.ۮ≯
-\u07D9.\u06EE󆾃>\u0338󠅲; \u07D9.\u06EE󆾃≯; [B2, B3, P1, V6]; xn--0sb.xn--bmb691l0524t; ; ; # ߙ.ۮ≯
-\u07D9.\u06EE󆾃≯󠅲; \u07D9.\u06EE󆾃≯; [B2, B3, P1, V6]; xn--0sb.xn--bmb691l0524t; ; ; # ߙ.ۮ≯
-\u07D9.\u06EE󆾃>\u0338󠅲; \u07D9.\u06EE󆾃≯; [B2, B3, P1, V6]; xn--0sb.xn--bmb691l0524t; ; ; # ߙ.ۮ≯
+\u07D9.\u06EE󆾃≯󠅲; \u07D9.\u06EE󆾃≯; [B2, B3, V6]; xn--0sb.xn--bmb691l0524t; ; ; # ߙ.ۮ≯
+\u07D9.\u06EE󆾃>\u0338󠅲; \u07D9.\u06EE󆾃≯; [B2, B3, V6]; xn--0sb.xn--bmb691l0524t; ; ; # ߙ.ۮ≯
+\u07D9.\u06EE󆾃≯󠅲; \u07D9.\u06EE󆾃≯; [B2, B3, V6]; xn--0sb.xn--bmb691l0524t; ; ; # ߙ.ۮ≯
+\u07D9.\u06EE󆾃>\u0338󠅲; \u07D9.\u06EE󆾃≯; [B2, B3, V6]; xn--0sb.xn--bmb691l0524t; ; ; # ߙ.ۮ≯
xn--0sb.xn--bmb691l0524t; \u07D9.\u06EE󆾃≯; [B2, B3, V6]; xn--0sb.xn--bmb691l0524t; ; ; # ߙ.ۮ≯
-\u1A73󚙸.ð­; ; [B1, P1, V5, V6]; xn--2of22352n.xn--q09c; ; ; # ᩳ.ð­
+\u1A73󚙸.ð­; ; [B1, V5, V6]; xn--2of22352n.xn--q09c; ; ; # ᩳ.ð­
xn--2of22352n.xn--q09c; \u1A73󚙸.ð­; [B1, V5, V6]; xn--2of22352n.xn--q09c; ; ; # ᩳ.ð­
-⒉󠊓≠。Ⴟ⬣Ⴈ; ⒉󠊓≠.Ⴟ⬣Ⴈ; [P1, V6]; xn--1ch07f91401d.xn--gnd9b297j; ; ; # ⒉≠.Ⴟ⬣Ⴈ
-⒉󠊓=\u0338。Ⴟ⬣Ⴈ; ⒉󠊓≠.Ⴟ⬣Ⴈ; [P1, V6]; xn--1ch07f91401d.xn--gnd9b297j; ; ; # ⒉≠.Ⴟ⬣Ⴈ
-2.󠊓≠。Ⴟ⬣Ⴈ; 2.󠊓≠.Ⴟ⬣Ⴈ; [P1, V6]; 2.xn--1chz4101l.xn--gnd9b297j; ; ; # 2.≠.Ⴟ⬣Ⴈ
-2.󠊓=\u0338。Ⴟ⬣Ⴈ; 2.󠊓≠.Ⴟ⬣Ⴈ; [P1, V6]; 2.xn--1chz4101l.xn--gnd9b297j; ; ; # 2.≠.Ⴟ⬣Ⴈ
-2.󠊓=\u0338。ⴟ⬣ⴈ; 2.󠊓≠.ⴟ⬣ⴈ; [P1, V6]; 2.xn--1chz4101l.xn--45iz7d6b; ; ; # 2.≠.ⴟ⬣ⴈ
-2.󠊓≠。ⴟ⬣ⴈ; 2.󠊓≠.ⴟ⬣ⴈ; [P1, V6]; 2.xn--1chz4101l.xn--45iz7d6b; ; ; # 2.≠.ⴟ⬣ⴈ
+⒉󠊓≠。Ⴟ⬣Ⴈ; ⒉󠊓≠.Ⴟ⬣Ⴈ; [V6]; xn--1ch07f91401d.xn--gnd9b297j; ; ; # ⒉≠.Ⴟ⬣Ⴈ
+⒉󠊓=\u0338。Ⴟ⬣Ⴈ; ⒉󠊓≠.Ⴟ⬣Ⴈ; [V6]; xn--1ch07f91401d.xn--gnd9b297j; ; ; # ⒉≠.Ⴟ⬣Ⴈ
+2.󠊓≠。Ⴟ⬣Ⴈ; 2.󠊓≠.Ⴟ⬣Ⴈ; [V6]; 2.xn--1chz4101l.xn--gnd9b297j; ; ; # 2.≠.Ⴟ⬣Ⴈ
+2.󠊓=\u0338。Ⴟ⬣Ⴈ; 2.󠊓≠.Ⴟ⬣Ⴈ; [V6]; 2.xn--1chz4101l.xn--gnd9b297j; ; ; # 2.≠.Ⴟ⬣Ⴈ
+2.󠊓=\u0338。ⴟ⬣ⴈ; 2.󠊓≠.ⴟ⬣ⴈ; [V6]; 2.xn--1chz4101l.xn--45iz7d6b; ; ; # 2.≠.ⴟ⬣ⴈ
+2.󠊓≠。ⴟ⬣ⴈ; 2.󠊓≠.ⴟ⬣ⴈ; [V6]; 2.xn--1chz4101l.xn--45iz7d6b; ; ; # 2.≠.ⴟ⬣ⴈ
2.xn--1chz4101l.xn--45iz7d6b; 2.󠊓≠.ⴟ⬣ⴈ; [V6]; 2.xn--1chz4101l.xn--45iz7d6b; ; ; # 2.≠.ⴟ⬣ⴈ
2.xn--1chz4101l.xn--gnd9b297j; 2.󠊓≠.Ⴟ⬣Ⴈ; [V6]; 2.xn--1chz4101l.xn--gnd9b297j; ; ; # 2.≠.Ⴟ⬣Ⴈ
-⒉󠊓=\u0338。ⴟ⬣ⴈ; ⒉󠊓≠.ⴟ⬣ⴈ; [P1, V6]; xn--1ch07f91401d.xn--45iz7d6b; ; ; # ⒉≠.ⴟ⬣ⴈ
-⒉󠊓≠。ⴟ⬣ⴈ; ⒉󠊓≠.ⴟ⬣ⴈ; [P1, V6]; xn--1ch07f91401d.xn--45iz7d6b; ; ; # ⒉≠.ⴟ⬣ⴈ
+⒉󠊓=\u0338。ⴟ⬣ⴈ; ⒉󠊓≠.ⴟ⬣ⴈ; [V6]; xn--1ch07f91401d.xn--45iz7d6b; ; ; # ⒉≠.ⴟ⬣ⴈ
+⒉󠊓≠。ⴟ⬣ⴈ; ⒉󠊓≠.ⴟ⬣ⴈ; [V6]; xn--1ch07f91401d.xn--45iz7d6b; ; ; # ⒉≠.ⴟ⬣ⴈ
xn--1ch07f91401d.xn--45iz7d6b; ⒉󠊓≠.ⴟ⬣ⴈ; [V6]; xn--1ch07f91401d.xn--45iz7d6b; ; ; # ⒉≠.ⴟ⬣ⴈ
xn--1ch07f91401d.xn--gnd9b297j; ⒉󠊓≠.Ⴟ⬣Ⴈ; [V6]; xn--1ch07f91401d.xn--gnd9b297j; ; ; # ⒉≠.Ⴟ⬣Ⴈ
--󠉱\u0FB8Ⴥ。-ð¹½\u0774𞣑; -󠉱\u0FB8Ⴥ.-ð¹½\u0774𞣑; [B1, P1, V3, V6]; xn----xmg12fm2555h.xn----05c4213ryr0g; ; ; # -ྸჅ.-ð¹½Ý´ðž£‘
--󠉱\u0FB8ⴥ。-ð¹½\u0774𞣑; -󠉱\u0FB8â´¥.-ð¹½\u0774𞣑; [B1, P1, V3, V6]; xn----xmg317tgv352a.xn----05c4213ryr0g; ; ; # -ྸⴥ.-ð¹½Ý´ðž£‘
+-󠉱\u0FB8Ⴥ。-ð¹½\u0774𞣑; -󠉱\u0FB8Ⴥ.-ð¹½\u0774𞣑; [B1, V3, V6]; xn----xmg12fm2555h.xn----05c4213ryr0g; ; ; # -ྸჅ.-ð¹½Ý´ðž£‘
+-󠉱\u0FB8ⴥ。-ð¹½\u0774𞣑; -󠉱\u0FB8â´¥.-ð¹½\u0774𞣑; [B1, V3, V6]; xn----xmg317tgv352a.xn----05c4213ryr0g; ; ; # -ྸⴥ.-ð¹½Ý´ðž£‘
xn----xmg317tgv352a.xn----05c4213ryr0g; -󠉱\u0FB8â´¥.-ð¹½\u0774𞣑; [B1, V3, V6]; xn----xmg317tgv352a.xn----05c4213ryr0g; ; ; # -ྸⴥ.-ð¹½Ý´ðž£‘
xn----xmg12fm2555h.xn----05c4213ryr0g; -󠉱\u0FB8Ⴥ.-ð¹½\u0774𞣑; [B1, V3, V6]; xn----xmg12fm2555h.xn----05c4213ryr0g; ; ; # -ྸჅ.-ð¹½Ý´ðž£‘
-\u0659。𑄴︒\u0627\u07DD; \u0659.𑄴︒\u0627\u07DD; [B1, B3, B6, P1, V5, V6]; xn--1hb.xn--mgb09fp820c08pa; ; ; # Ù™.𑄴︒اß
-\u0659。𑄴。\u0627\u07DD; \u0659.ð‘„´.\u0627\u07DD; [B1, B3, B6, V5]; xn--1hb.xn--w80d.xn--mgb09f; ; ; # Ù™.ð‘„´.اß
-xn--1hb.xn--w80d.xn--mgb09f; \u0659.ð‘„´.\u0627\u07DD; [B1, B3, B6, V5]; xn--1hb.xn--w80d.xn--mgb09f; ; ; # Ù™.ð‘„´.اß
-xn--1hb.xn--mgb09fp820c08pa; \u0659.𑄴︒\u0627\u07DD; [B1, B3, B6, V5, V6]; xn--1hb.xn--mgb09fp820c08pa; ; ; # Ù™.𑄴︒اß
-Ⴙ\u0638.󠆓\u200D; Ⴙ\u0638.\u200D; [B1, B5, B6, C2, P1, V6]; xn--3gb194c.xn--1ug; ; xn--3gb194c.; [B5, B6, P1, V6] # Ⴙظ.
+\u0659。𑄴︒\u0627\u07DD; \u0659.𑄴︒\u0627\u07DD; [B1, V5, V6]; xn--1hb.xn--mgb09fp820c08pa; ; ; # Ù™.𑄴︒اß
+\u0659。𑄴。\u0627\u07DD; \u0659.ð‘„´.\u0627\u07DD; [B1, V5]; xn--1hb.xn--w80d.xn--mgb09f; ; ; # Ù™.ð‘„´.اß
+xn--1hb.xn--w80d.xn--mgb09f; \u0659.ð‘„´.\u0627\u07DD; [B1, V5]; xn--1hb.xn--w80d.xn--mgb09f; ; ; # Ù™.ð‘„´.اß
+xn--1hb.xn--mgb09fp820c08pa; \u0659.𑄴︒\u0627\u07DD; [B1, V5, V6]; xn--1hb.xn--mgb09fp820c08pa; ; ; # Ù™.𑄴︒اß
+Ⴙ\u0638.󠆓\u200D; Ⴙ\u0638.\u200D; [B1, B5, B6, C2, V6]; xn--3gb194c.xn--1ug; ; xn--3gb194c.; [B5, B6, V6] # Ⴙظ.
ⴙ\u0638.󠆓\u200D; ⴙ\u0638.\u200D; [B1, B5, B6, C2]; xn--3gb910r.xn--1ug; ; xn--3gb910r.; [B5, B6] # ⴙظ.
xn--3gb910r.; ⴙ\u0638.; [B5, B6]; xn--3gb910r.; ; ; # ⴙظ.
xn--3gb910r.xn--1ug; ⴙ\u0638.\u200D; [B1, B5, B6, C2]; xn--3gb910r.xn--1ug; ; ; # ⴙظ.
@@ -808,22 +814,22 @@ xn--3gb194c.xn--1ug; Ⴙ\u0638.\u200D; [B1, B5, B6, C2, V6]; xn--3gb194c.xn--1ug
6\u084F。-𑈴; 6\u084F.-𑈴; [B1, V3]; xn--6-jjd.xn----6n8i; ; ; # 6à¡.-𑈴
6\u084F。-𑈴; 6\u084F.-𑈴; [B1, V3]; xn--6-jjd.xn----6n8i; ; ; # 6à¡.-𑈴
xn--6-jjd.xn----6n8i; 6\u084F.-𑈴; [B1, V3]; xn--6-jjd.xn----6n8i; ; ; # 6à¡.-𑈴
-\u200Dñ‹Œ¿ð¹°ï½¡\u0ACDÏ‚ðž°Ž\u08D6; \u200Dñ‹Œ¿ð¹°.\u0ACDÏ‚ðž°Ž\u08D6; [B1, C2, P1, V5, V6]; xn--1ugx105gq26y.xn--3xa41xcwbfz15g; ; xn--oo0d1330n.xn--4xa21xcwbfz15g; [B1, B5, B6, P1, V5, V6] # ð¹°.à«Ï‚ࣖ
-\u200Dñ‹Œ¿ð¹°ã€‚\u0ACDÏ‚ðž°Ž\u08D6; \u200Dñ‹Œ¿ð¹°.\u0ACDÏ‚ðž°Ž\u08D6; [B1, C2, P1, V5, V6]; xn--1ugx105gq26y.xn--3xa41xcwbfz15g; ; xn--oo0d1330n.xn--4xa21xcwbfz15g; [B1, B5, B6, P1, V5, V6] # ð¹°.à«Ï‚ࣖ
-\u200Dñ‹Œ¿ð¹°ã€‚\u0ACDΣ𞰎\u08D6; \u200Dñ‹Œ¿ð¹°.\u0ACDσ𞰎\u08D6; [B1, C2, P1, V5, V6]; xn--1ugx105gq26y.xn--4xa21xcwbfz15g; ; xn--oo0d1330n.xn--4xa21xcwbfz15g; [B1, B5, B6, P1, V5, V6] # ð¹°.à«Ïƒà£–
-\u200Dñ‹Œ¿ð¹°ã€‚\u0ACDσ𞰎\u08D6; \u200Dñ‹Œ¿ð¹°.\u0ACDσ𞰎\u08D6; [B1, C2, P1, V5, V6]; xn--1ugx105gq26y.xn--4xa21xcwbfz15g; ; xn--oo0d1330n.xn--4xa21xcwbfz15g; [B1, B5, B6, P1, V5, V6] # ð¹°.à«Ïƒà£–
+\u200Dñ‹Œ¿ð¹°ï½¡\u0ACDÏ‚ðž°Ž\u08D6; \u200Dñ‹Œ¿ð¹°.\u0ACDÏ‚ðž°Ž\u08D6; [B1, C2, V5, V6]; xn--1ugx105gq26y.xn--3xa41xcwbfz15g; ; xn--oo0d1330n.xn--4xa21xcwbfz15g; [B1, B5, B6, V5, V6] # ð¹°.à«Ï‚ࣖ
+\u200Dñ‹Œ¿ð¹°ã€‚\u0ACDÏ‚ðž°Ž\u08D6; \u200Dñ‹Œ¿ð¹°.\u0ACDÏ‚ðž°Ž\u08D6; [B1, C2, V5, V6]; xn--1ugx105gq26y.xn--3xa41xcwbfz15g; ; xn--oo0d1330n.xn--4xa21xcwbfz15g; [B1, B5, B6, V5, V6] # ð¹°.à«Ï‚ࣖ
+\u200Dñ‹Œ¿ð¹°ã€‚\u0ACDΣ𞰎\u08D6; \u200Dñ‹Œ¿ð¹°.\u0ACDσ𞰎\u08D6; [B1, C2, V5, V6]; xn--1ugx105gq26y.xn--4xa21xcwbfz15g; ; xn--oo0d1330n.xn--4xa21xcwbfz15g; [B1, B5, B6, V5, V6] # ð¹°.à«Ïƒà£–
+\u200Dñ‹Œ¿ð¹°ã€‚\u0ACDσ𞰎\u08D6; \u200Dñ‹Œ¿ð¹°.\u0ACDσ𞰎\u08D6; [B1, C2, V5, V6]; xn--1ugx105gq26y.xn--4xa21xcwbfz15g; ; xn--oo0d1330n.xn--4xa21xcwbfz15g; [B1, B5, B6, V5, V6] # ð¹°.à«Ïƒà£–
xn--oo0d1330n.xn--4xa21xcwbfz15g; ñ‹Œ¿ð¹°.\u0ACDσ𞰎\u08D6; [B1, B5, B6, V5, V6]; xn--oo0d1330n.xn--4xa21xcwbfz15g; ; ; # ð¹°.à«Ïƒà£–
xn--1ugx105gq26y.xn--4xa21xcwbfz15g; \u200Dñ‹Œ¿ð¹°.\u0ACDσ𞰎\u08D6; [B1, C2, V5, V6]; xn--1ugx105gq26y.xn--4xa21xcwbfz15g; ; ; # ð¹°.à«Ïƒà£–
xn--1ugx105gq26y.xn--3xa41xcwbfz15g; \u200Dñ‹Œ¿ð¹°.\u0ACDÏ‚ðž°Ž\u08D6; [B1, C2, V5, V6]; xn--1ugx105gq26y.xn--3xa41xcwbfz15g; ; ; # ð¹°.à«Ï‚ࣖ
-\u200Dñ‹Œ¿ð¹°ï½¡\u0ACDΣ𞰎\u08D6; \u200Dñ‹Œ¿ð¹°.\u0ACDσ𞰎\u08D6; [B1, C2, P1, V5, V6]; xn--1ugx105gq26y.xn--4xa21xcwbfz15g; ; xn--oo0d1330n.xn--4xa21xcwbfz15g; [B1, B5, B6, P1, V5, V6] # ð¹°.à«Ïƒà£–
-\u200Dñ‹Œ¿ð¹°ï½¡\u0ACDσ𞰎\u08D6; \u200Dñ‹Œ¿ð¹°.\u0ACDσ𞰎\u08D6; [B1, C2, P1, V5, V6]; xn--1ugx105gq26y.xn--4xa21xcwbfz15g; ; xn--oo0d1330n.xn--4xa21xcwbfz15g; [B1, B5, B6, P1, V5, V6] # ð¹°.à«Ïƒà£–
-â’ˆñŸ„œá‚³â’ªï¼Ž\u0DCAò˜˜¶\u088Bð¹¢; â’ˆñŸ„œá‚³â’ª.\u0DCAò˜˜¶\u088Bð¹¢; [B1, P1, V5, V6]; xn--rnd762h7cx3027d.xn--3xb99xpx1yoes3e; ; ; # ⒈Ⴓ⒪.්ࢋð¹¢
-1.ñŸ„œá‚³(o).\u0DCAò˜˜¶\u088Bð¹¢; ; [B1, B6, P1, V5, V6]; 1.xn--(o)-7sn88849j.xn--3xb99xpx1yoes3e; ; ; # 1.Ⴓ(o).්ࢋð¹¢
-1.ñŸ„œâ´“(o).\u0DCAò˜˜¶\u088Bð¹¢; ; [B1, B6, P1, V5, V6]; 1.xn--(o)-ej1bu5389e.xn--3xb99xpx1yoes3e; ; ; # 1.â´“(o).්ࢋð¹¢
-1.ñŸ„œá‚³(O).\u0DCAò˜˜¶\u088Bð¹¢; 1.ñŸ„œá‚³(o).\u0DCAò˜˜¶\u088Bð¹¢; [B1, B6, P1, V5, V6]; 1.xn--(o)-7sn88849j.xn--3xb99xpx1yoes3e; ; ; # 1.Ⴓ(o).්ࢋð¹¢
-1.xn--(o)-7sn88849j.xn--3xb99xpx1yoes3e; 1.ñŸ„œá‚³(o).\u0DCAò˜˜¶\u088Bð¹¢; [B1, B6, P1, V5, V6]; 1.xn--(o)-7sn88849j.xn--3xb99xpx1yoes3e; ; ; # 1.Ⴓ(o).්ࢋð¹¢
-1.xn--(o)-ej1bu5389e.xn--3xb99xpx1yoes3e; 1.ñŸ„œâ´“(o).\u0DCAò˜˜¶\u088Bð¹¢; [B1, B6, P1, V5, V6]; 1.xn--(o)-ej1bu5389e.xn--3xb99xpx1yoes3e; ; ; # 1.â´“(o).්ࢋð¹¢
-â’ˆñŸ„œâ´“⒪.\u0DCAò˜˜¶\u088Bð¹¢; â’ˆñŸ„œâ´“â’ª.\u0DCAò˜˜¶\u088Bð¹¢; [B1, P1, V5, V6]; xn--tsh0ds63atl31n.xn--3xb99xpx1yoes3e; ; ; # ⒈ⴓ⒪.්ࢋð¹¢
+\u200Dñ‹Œ¿ð¹°ï½¡\u0ACDΣ𞰎\u08D6; \u200Dñ‹Œ¿ð¹°.\u0ACDσ𞰎\u08D6; [B1, C2, V5, V6]; xn--1ugx105gq26y.xn--4xa21xcwbfz15g; ; xn--oo0d1330n.xn--4xa21xcwbfz15g; [B1, B5, B6, V5, V6] # ð¹°.à«Ïƒà£–
+\u200Dñ‹Œ¿ð¹°ï½¡\u0ACDσ𞰎\u08D6; \u200Dñ‹Œ¿ð¹°.\u0ACDσ𞰎\u08D6; [B1, C2, V5, V6]; xn--1ugx105gq26y.xn--4xa21xcwbfz15g; ; xn--oo0d1330n.xn--4xa21xcwbfz15g; [B1, B5, B6, V5, V6] # ð¹°.à«Ïƒà£–
+â’ˆñŸ„œá‚³â’ªï¼Ž\u0DCAò˜˜¶\u088Bð¹¢; â’ˆñŸ„œá‚³â’ª.\u0DCAò˜˜¶\u088Bð¹¢; [B1, V5, V6]; xn--rnd762h7cx3027d.xn--3xb99xpx1yoes3e; ; ; # ⒈Ⴓ⒪.්ࢋð¹¢
+1.ñŸ„œá‚³(o).\u0DCAò˜˜¶\u088Bð¹¢; ; [B1, B6, V5, V6]; 1.xn--(o)-7sn88849j.xn--3xb99xpx1yoes3e; ; ; # 1.Ⴓ(o).්ࢋð¹¢
+1.ñŸ„œâ´“(o).\u0DCAò˜˜¶\u088Bð¹¢; ; [B1, B6, V5, V6]; 1.xn--(o)-ej1bu5389e.xn--3xb99xpx1yoes3e; ; ; # 1.â´“(o).්ࢋð¹¢
+1.ñŸ„œá‚³(O).\u0DCAò˜˜¶\u088Bð¹¢; 1.ñŸ„œá‚³(o).\u0DCAò˜˜¶\u088Bð¹¢; [B1, B6, V5, V6]; 1.xn--(o)-7sn88849j.xn--3xb99xpx1yoes3e; ; ; # 1.Ⴓ(o).්ࢋð¹¢
+1.xn--(o)-7sn88849j.xn--3xb99xpx1yoes3e; 1.ñŸ„œá‚³(o).\u0DCAò˜˜¶\u088Bð¹¢; [B1, B6, V5, V6]; 1.xn--(o)-7sn88849j.xn--3xb99xpx1yoes3e; ; ; # 1.Ⴓ(o).්ࢋð¹¢
+1.xn--(o)-ej1bu5389e.xn--3xb99xpx1yoes3e; 1.ñŸ„œâ´“(o).\u0DCAò˜˜¶\u088Bð¹¢; [B1, B6, V5, V6]; 1.xn--(o)-ej1bu5389e.xn--3xb99xpx1yoes3e; ; ; # 1.â´“(o).්ࢋð¹¢
+â’ˆñŸ„œâ´“⒪.\u0DCAò˜˜¶\u088Bð¹¢; â’ˆñŸ„œâ´“â’ª.\u0DCAò˜˜¶\u088Bð¹¢; [B1, V5, V6]; xn--tsh0ds63atl31n.xn--3xb99xpx1yoes3e; ; ; # ⒈ⴓ⒪.්ࢋð¹¢
xn--tsh0ds63atl31n.xn--3xb99xpx1yoes3e; â’ˆñŸ„œâ´“â’ª.\u0DCAò˜˜¶\u088Bð¹¢; [B1, V5, V6]; xn--tsh0ds63atl31n.xn--3xb99xpx1yoes3e; ; ; # ⒈ⴓ⒪.්ࢋð¹¢
xn--rnd762h7cx3027d.xn--3xb99xpx1yoes3e; â’ˆñŸ„œá‚³â’ª.\u0DCAò˜˜¶\u088Bð¹¢; [B1, V5, V6]; xn--rnd762h7cx3027d.xn--3xb99xpx1yoes3e; ; ; # ⒈Ⴓ⒪.්ࢋð¹¢
𞤷.ð®ðž¢ð¹ \u0624; ; ; xn--ve6h.xn--jgb1694kz0b2176a; ; ; # 𞤷.ð®ðž¢ð¹ Ø¤
@@ -831,46 +837,46 @@ xn--rnd762h7cx3027d.xn--3xb99xpx1yoes3e; â’ˆñŸ„œá‚³â’ª.\u0DCAò˜˜¶\u088Bð¹¢; [B1
𞤕.ð®ðž¢ð¹ \u0648\u0654; 𞤷.ð®ðž¢ð¹ \u0624; ; xn--ve6h.xn--jgb1694kz0b2176a; ; ; # 𞤷.ð®ðž¢ð¹ Ø¤
𞤕.ð®ðž¢ð¹ \u0624; 𞤷.ð®ðž¢ð¹ \u0624; ; xn--ve6h.xn--jgb1694kz0b2176a; ; ; # 𞤷.ð®ðž¢ð¹ Ø¤
xn--ve6h.xn--jgb1694kz0b2176a; 𞤷.ð®ðž¢ð¹ \u0624; ; xn--ve6h.xn--jgb1694kz0b2176a; ; ; # 𞤷.ð®ðž¢ð¹ Ø¤
-ð²ˆ-。𑄳ñ¢Œ»; ð³ˆ-.ð‘„³ñ¢Œ»; [B1, B3, P1, V3, V5, V6]; xn----ue6i.xn--v80d6662t; ; ; # ð³ˆ-.ð‘„³
-ð²ˆ-。𑄳ñ¢Œ»; ð³ˆ-.ð‘„³ñ¢Œ»; [B1, B3, P1, V3, V5, V6]; xn----ue6i.xn--v80d6662t; ; ; # ð³ˆ-.ð‘„³
-ð³ˆ-。𑄳ñ¢Œ»; ð³ˆ-.ð‘„³ñ¢Œ»; [B1, B3, P1, V3, V5, V6]; xn----ue6i.xn--v80d6662t; ; ; # ð³ˆ-.ð‘„³
+ð²ˆ-。𑄳ñ¢Œ»; ð³ˆ-.ð‘„³ñ¢Œ»; [B1, B3, V3, V5, V6]; xn----ue6i.xn--v80d6662t; ; ; # ð³ˆ-.ð‘„³
+ð²ˆ-。𑄳ñ¢Œ»; ð³ˆ-.ð‘„³ñ¢Œ»; [B1, B3, V3, V5, V6]; xn----ue6i.xn--v80d6662t; ; ; # ð³ˆ-.ð‘„³
+ð³ˆ-。𑄳ñ¢Œ»; ð³ˆ-.ð‘„³ñ¢Œ»; [B1, B3, V3, V5, V6]; xn----ue6i.xn--v80d6662t; ; ; # ð³ˆ-.ð‘„³
xn----ue6i.xn--v80d6662t; ð³ˆ-.ð‘„³ñ¢Œ»; [B1, B3, V3, V5, V6]; xn----ue6i.xn--v80d6662t; ; ; # ð³ˆ-.ð‘„³
-ð³ˆ-。𑄳ñ¢Œ»; ð³ˆ-.ð‘„³ñ¢Œ»; [B1, B3, P1, V3, V5, V6]; xn----ue6i.xn--v80d6662t; ; ; # ð³ˆ-.ð‘„³
--󠉖ꡧ.󠊂񇆃🄉; -󠉖ꡧ.󠊂񇆃🄉; [P1, V3, V6]; xn----hg4ei0361g.xn--207ht163h7m94c; ; ; # -ꡧ.🄉
--󠉖ꡧ.󠊂񇆃8,; ; [P1, V3, V6]; xn----hg4ei0361g.xn--8,-k362evu488a; ; ; # -ꡧ.8,
-xn----hg4ei0361g.xn--8,-k362evu488a; -󠉖ꡧ.󠊂񇆃8,; [P1, V3, V6]; xn----hg4ei0361g.xn--8,-k362evu488a; ; ; # -ꡧ.8,
+ð³ˆ-。𑄳ñ¢Œ»; ð³ˆ-.ð‘„³ñ¢Œ»; [B1, B3, V3, V5, V6]; xn----ue6i.xn--v80d6662t; ; ; # ð³ˆ-.ð‘„³
+-󠉖ꡧ.󠊂񇆃🄉; -󠉖ꡧ.󠊂񇆃🄉; [V3, V6]; xn----hg4ei0361g.xn--207ht163h7m94c; ; ; # -ꡧ.🄉
+-󠉖ꡧ.󠊂񇆃8,; ; [V3, V6]; xn----hg4ei0361g.xn--8,-k362evu488a; ; ; # -ꡧ.8,
+xn----hg4ei0361g.xn--8,-k362evu488a; -󠉖ꡧ.󠊂񇆃8,; [V3, V6]; xn----hg4ei0361g.xn--8,-k362evu488a; ; ; # -ꡧ.8,
xn----hg4ei0361g.xn--207ht163h7m94c; -󠉖ꡧ.󠊂񇆃🄉; [V3, V6]; xn----hg4ei0361g.xn--207ht163h7m94c; ; ; # -ꡧ.🄉
-󠾛󠈴臯𧔤.\u0768ðŸ; 󠾛󠈴臯𧔤.\u07685; [B1, P1, V6]; xn--zb1at733hm579ddhla.xn--5-b5c; ; ; # 臯𧔤.ݨ5
-󠾛󠈴臯𧔤.\u07685; ; [B1, P1, V6]; xn--zb1at733hm579ddhla.xn--5-b5c; ; ; # 臯𧔤.ݨ5
+󠾛󠈴臯𧔤.\u0768ðŸ; 󠾛󠈴臯𧔤.\u07685; [B1, V6]; xn--zb1at733hm579ddhla.xn--5-b5c; ; ; # 臯𧔤.ݨ5
+󠾛󠈴臯𧔤.\u07685; ; [B1, V6]; xn--zb1at733hm579ddhla.xn--5-b5c; ; ; # 臯𧔤.ݨ5
xn--zb1at733hm579ddhla.xn--5-b5c; 󠾛󠈴臯𧔤.\u07685; [B1, V6]; xn--zb1at733hm579ddhla.xn--5-b5c; ; ; # 臯𧔤.ݨ5
-≮ð¹£ï¼Žð¨¿; ≮ð¹£.ð¨¿; [B1, B3, B6, P1, V5, V6]; xn--gdh1504g.xn--e92h; ; ; # ≮ð¹£.ð¨¿
-<\u0338ð¹£ï¼Žð¨¿; ≮ð¹£.ð¨¿; [B1, B3, B6, P1, V5, V6]; xn--gdh1504g.xn--e92h; ; ; # ≮ð¹£.ð¨¿
-≮ð¹£.ð¨¿; ; [B1, B3, B6, P1, V5, V6]; xn--gdh1504g.xn--e92h; ; ; # ≮ð¹£.ð¨¿
-<\u0338ð¹£.ð¨¿; ≮ð¹£.ð¨¿; [B1, B3, B6, P1, V5, V6]; xn--gdh1504g.xn--e92h; ; ; # ≮ð¹£.ð¨¿
-xn--gdh1504g.xn--e92h; ≮ð¹£.ð¨¿; [B1, B3, B6, V5, V6]; xn--gdh1504g.xn--e92h; ; ; # ≮ð¹£.ð¨¿
+≮ð¹£ï¼Žð¨¿; ≮ð¹£.ð¨¿; [B1, V5]; xn--gdh1504g.xn--e92h; ; ; # ≮ð¹£.ð¨¿
+<\u0338ð¹£ï¼Žð¨¿; ≮ð¹£.ð¨¿; [B1, V5]; xn--gdh1504g.xn--e92h; ; ; # ≮ð¹£.ð¨¿
+≮ð¹£.ð¨¿; ; [B1, V5]; xn--gdh1504g.xn--e92h; ; ; # ≮ð¹£.ð¨¿
+<\u0338ð¹£.ð¨¿; ≮ð¹£.ð¨¿; [B1, V5]; xn--gdh1504g.xn--e92h; ; ; # ≮ð¹£.ð¨¿
+xn--gdh1504g.xn--e92h; ≮ð¹£.ð¨¿; [B1, V5]; xn--gdh1504g.xn--e92h; ; ; # ≮ð¹£.ð¨¿
ð¹¯á¯›\u0A4D。脥; ð¹¯á¯›\u0A4D.è„¥; [B1]; xn--ybc101g3m1p.xn--740a; ; ; # ð¹¯á¯›à©.è„¥
ð¹¯á¯›\u0A4D。脥; ð¹¯á¯›\u0A4D.è„¥; [B1]; xn--ybc101g3m1p.xn--740a; ; ; # ð¹¯á¯›à©.è„¥
xn--ybc101g3m1p.xn--740a; ð¹¯á¯›\u0A4D.è„¥; [B1]; xn--ybc101g3m1p.xn--740a; ; ; # ð¹¯á¯›à©.è„¥
-\u1B44\u115Fðž·¿òƒ€.-; ; [B1, B5, P1, V3, V5, V6]; xn--osd971cpx70btgt8b.-; ; ; # á­„.-
+\u1B44\u115Fðž·¿òƒ€.-; ; [B1, B5, V3, V5, V6]; xn--osd971cpx70btgt8b.-; ; ; # á­„.-
xn--osd971cpx70btgt8b.-; \u1B44\u115Fðž·¿òƒ€.-; [B1, B5, V3, V5, V6]; xn--osd971cpx70btgt8b.-; ; ; # á­„.-
\u200C。\u0354; \u200C.\u0354; [C1, V5]; xn--0ug.xn--yua; ; .xn--yua; [V5, A4_2] # .͔
\u200C。\u0354; \u200C.\u0354; [C1, V5]; xn--0ug.xn--yua; ; .xn--yua; [V5, A4_2] # .͔
.xn--yua; .\u0354; [V5, X4_2]; .xn--yua; [V5, A4_2]; ; # .Í”
xn--0ug.xn--yua; \u200C.\u0354; [C1, V5]; xn--0ug.xn--yua; ; ; # .Í”
-𞤥󠅮.ᡄႮ; 𞤥.ᡄႮ; [P1, V6]; xn--de6h.xn--mnd799a; ; ; # 𞤥.ᡄႮ
-𞤥󠅮.ᡄႮ; 𞤥.ᡄႮ; [P1, V6]; xn--de6h.xn--mnd799a; ; ; # 𞤥.ᡄႮ
+𞤥󠅮.ᡄႮ; 𞤥.ᡄႮ; [V6]; xn--de6h.xn--mnd799a; ; ; # 𞤥.ᡄႮ
+𞤥󠅮.ᡄႮ; 𞤥.ᡄႮ; [V6]; xn--de6h.xn--mnd799a; ; ; # 𞤥.ᡄႮ
𞤥󠅮.ᡄⴎ; 𞤥.ᡄⴎ; ; xn--de6h.xn--37e857h; ; ; # 𞤥.ᡄⴎ
-𞤃󠅮.ᡄႮ; 𞤥.ᡄႮ; [P1, V6]; xn--de6h.xn--mnd799a; ; ; # 𞤥.ᡄႮ
+𞤃󠅮.ᡄႮ; 𞤥.ᡄႮ; [V6]; xn--de6h.xn--mnd799a; ; ; # 𞤥.ᡄႮ
𞤃󠅮.ᡄⴎ; 𞤥.ᡄⴎ; ; xn--de6h.xn--37e857h; ; ; # 𞤥.ᡄⴎ
xn--de6h.xn--37e857h; 𞤥.ᡄⴎ; ; xn--de6h.xn--37e857h; ; ; # 𞤥.ᡄⴎ
𞤥.ᡄⴎ; ; ; xn--de6h.xn--37e857h; ; ; # 𞤥.ᡄⴎ
-𞤃.ᡄႮ; 𞤥.ᡄႮ; [P1, V6]; xn--de6h.xn--mnd799a; ; ; # 𞤥.ᡄႮ
+𞤃.ᡄႮ; 𞤥.ᡄႮ; [V6]; xn--de6h.xn--mnd799a; ; ; # 𞤥.ᡄႮ
𞤃.ᡄⴎ; 𞤥.ᡄⴎ; ; xn--de6h.xn--37e857h; ; ; # 𞤥.ᡄⴎ
xn--de6h.xn--mnd799a; 𞤥.ᡄႮ; [V6]; xn--de6h.xn--mnd799a; ; ; # 𞤥.ᡄႮ
𞤥󠅮.ᡄⴎ; 𞤥.ᡄⴎ; ; xn--de6h.xn--37e857h; ; ; # 𞤥.ᡄⴎ
-𞤃󠅮.ᡄႮ; 𞤥.ᡄႮ; [P1, V6]; xn--de6h.xn--mnd799a; ; ; # 𞤥.ᡄႮ
+𞤃󠅮.ᡄႮ; 𞤥.ᡄႮ; [V6]; xn--de6h.xn--mnd799a; ; ; # 𞤥.ᡄႮ
𞤃󠅮.ᡄⴎ; 𞤥.ᡄⴎ; ; xn--de6h.xn--37e857h; ; ; # 𞤥.ᡄⴎ
-𞤥.ᡄႮ; ; [P1, V6]; xn--de6h.xn--mnd799a; ; ; # 𞤥.ᡄႮ
+𞤥.ᡄႮ; ; [V6]; xn--de6h.xn--mnd799a; ; ; # 𞤥.ᡄႮ
𞤧ð¨¨Îžï¼Žðªºã›¨â¸; 𞤧ð¨¨Î¾.ðªºã›¨â¸; [B2, B3, B6]; xn--zxa5691vboja.xn--bfi293ci119b; ; ; # 𞤧ð¨¨Î¾.ðªºã›¨â¸
𞤧ð¨¨Îž.ðªºã›¨â¸; 𞤧ð¨¨Î¾.ðªºã›¨â¸; [B2, B3, B6]; xn--zxa5691vboja.xn--bfi293ci119b; ; ; # 𞤧ð¨¨Î¾.ðªºã›¨â¸
𞤧ð¨¨Î¾.ðªºã›¨â¸; ; [B2, B3, B6]; xn--zxa5691vboja.xn--bfi293ci119b; ; ; # 𞤧ð¨¨Î¾.ðªºã›¨â¸
@@ -880,156 +886,156 @@ xn--zxa5691vboja.xn--bfi293ci119b; 𞤧ð¨¨Î¾.ðªºã›¨â¸; [B2, B3, B6]; xn--zxa5
𞤧ð¨¨Î¾ï¼Žðªºã›¨â¸; 𞤧ð¨¨Î¾.ðªºã›¨â¸; [B2, B3, B6]; xn--zxa5691vboja.xn--bfi293ci119b; ; ; # 𞤧ð¨¨Î¾.ðªºã›¨â¸
𞤅ð¨¨Îžï¼Žðªºã›¨â¸; 𞤧ð¨¨Î¾.ðªºã›¨â¸; [B2, B3, B6]; xn--zxa5691vboja.xn--bfi293ci119b; ; ; # 𞤧ð¨¨Î¾.ðªºã›¨â¸
𞤅ð¨¨Î¾ï¼Žðªºã›¨â¸; 𞤧ð¨¨Î¾.ðªºã›¨â¸; [B2, B3, B6]; xn--zxa5691vboja.xn--bfi293ci119b; ; ; # 𞤧ð¨¨Î¾.ðªºã›¨â¸
-᠆몆\u200C-。Ⴛð¦…︒; ᠆몆\u200C-.á‚»ð¦…︒; [B1, B5, B6, C1, P1, V3, V6]; xn----e3j425bsk1o.xn--znd2362jhgh; ; xn----e3j6620g.xn--znd2362jhgh; [B1, B5, B6, P1, V3, V6] # ᠆몆-.á‚»ð¦…︒
-᠆몆\u200C-。Ⴛð¦…︒; ᠆몆\u200C-.á‚»ð¦…︒; [B1, B5, B6, C1, P1, V3, V6]; xn----e3j425bsk1o.xn--znd2362jhgh; ; xn----e3j6620g.xn--znd2362jhgh; [B1, B5, B6, P1, V3, V6] # ᠆몆-.á‚»ð¦…︒
-᠆몆\u200C-。Ⴛð¦…。; ᠆몆\u200C-.á‚»ð¦….; [B1, B5, B6, C1, P1, V3, V6]; xn----e3j425bsk1o.xn--znd4948j.; ; xn----e3j6620g.xn--znd4948j.; [B1, B5, B6, P1, V3, V6] # ᠆몆-.á‚»ð¦….
-᠆몆\u200C-。Ⴛð¦…。; ᠆몆\u200C-.á‚»ð¦….; [B1, B5, B6, C1, P1, V3, V6]; xn----e3j425bsk1o.xn--znd4948j.; ; xn----e3j6620g.xn--znd4948j.; [B1, B5, B6, P1, V3, V6] # ᠆몆-.á‚»ð¦….
-᠆몆\u200C-。ⴛð¦…。; ᠆몆\u200C-.â´›ð¦….; [B1, B5, B6, C1, P1, V3, V6]; xn----e3j425bsk1o.xn--jlju661e.; ; xn----e3j6620g.xn--jlju661e.; [B1, B5, B6, P1, V3, V6] # ᠆몆-.â´›ð¦….
-᠆몆\u200C-。ⴛð¦…。; ᠆몆\u200C-.â´›ð¦….; [B1, B5, B6, C1, P1, V3, V6]; xn----e3j425bsk1o.xn--jlju661e.; ; xn----e3j6620g.xn--jlju661e.; [B1, B5, B6, P1, V3, V6] # ᠆몆-.â´›ð¦….
+᠆몆\u200C-。Ⴛð¦…︒; ᠆몆\u200C-.á‚»ð¦…︒; [B1, B5, B6, C1, V3, V6]; xn----e3j425bsk1o.xn--znd2362jhgh; ; xn----e3j6620g.xn--znd2362jhgh; [B1, B5, B6, V3, V6] # ᠆몆-.á‚»ð¦…︒
+᠆몆\u200C-。Ⴛð¦…︒; ᠆몆\u200C-.á‚»ð¦…︒; [B1, B5, B6, C1, V3, V6]; xn----e3j425bsk1o.xn--znd2362jhgh; ; xn----e3j6620g.xn--znd2362jhgh; [B1, B5, B6, V3, V6] # ᠆몆-.á‚»ð¦…︒
+᠆몆\u200C-。Ⴛð¦…。; ᠆몆\u200C-.á‚»ð¦….; [B1, B5, B6, C1, V3, V6]; xn----e3j425bsk1o.xn--znd4948j.; ; xn----e3j6620g.xn--znd4948j.; [B1, B5, B6, V3, V6] # ᠆몆-.á‚»ð¦….
+᠆몆\u200C-。Ⴛð¦…。; ᠆몆\u200C-.á‚»ð¦….; [B1, B5, B6, C1, V3, V6]; xn----e3j425bsk1o.xn--znd4948j.; ; xn----e3j6620g.xn--znd4948j.; [B1, B5, B6, V3, V6] # ᠆몆-.á‚»ð¦….
+᠆몆\u200C-。ⴛð¦…。; ᠆몆\u200C-.â´›ð¦….; [B1, B5, B6, C1, V3, V6]; xn----e3j425bsk1o.xn--jlju661e.; ; xn----e3j6620g.xn--jlju661e.; [B1, B5, B6, V3, V6] # ᠆몆-.â´›ð¦….
+᠆몆\u200C-。ⴛð¦…。; ᠆몆\u200C-.â´›ð¦….; [B1, B5, B6, C1, V3, V6]; xn----e3j425bsk1o.xn--jlju661e.; ; xn----e3j6620g.xn--jlju661e.; [B1, B5, B6, V3, V6] # ᠆몆-.â´›ð¦….
xn----e3j6620g.xn--jlju661e.; ᠆몆-.â´›ð¦….; [B1, B5, B6, V3, V6]; xn----e3j6620g.xn--jlju661e.; ; ; # ᠆몆-.â´›ð¦….
xn----e3j425bsk1o.xn--jlju661e.; ᠆몆\u200C-.â´›ð¦….; [B1, B5, B6, C1, V3, V6]; xn----e3j425bsk1o.xn--jlju661e.; ; ; # ᠆몆-.â´›ð¦….
xn----e3j6620g.xn--znd4948j.; ᠆몆-.á‚»ð¦….; [B1, B5, B6, V3, V6]; xn----e3j6620g.xn--znd4948j.; ; ; # ᠆몆-.á‚»ð¦….
xn----e3j425bsk1o.xn--znd4948j.; ᠆몆\u200C-.á‚»ð¦….; [B1, B5, B6, C1, V3, V6]; xn----e3j425bsk1o.xn--znd4948j.; ; ; # ᠆몆-.á‚»ð¦….
-᠆몆\u200C-。ⴛð¦…︒; ᠆몆\u200C-.â´›ð¦…︒; [B1, B5, B6, C1, P1, V3, V6]; xn----e3j425bsk1o.xn--jlj4997dhgh; ; xn----e3j6620g.xn--jlj4997dhgh; [B1, B5, B6, P1, V3, V6] # ᠆몆-.â´›ð¦…︒
-᠆몆\u200C-。ⴛð¦…︒; ᠆몆\u200C-.â´›ð¦…︒; [B1, B5, B6, C1, P1, V3, V6]; xn----e3j425bsk1o.xn--jlj4997dhgh; ; xn----e3j6620g.xn--jlj4997dhgh; [B1, B5, B6, P1, V3, V6] # ᠆몆-.â´›ð¦…︒
+᠆몆\u200C-。ⴛð¦…︒; ᠆몆\u200C-.â´›ð¦…︒; [B1, B5, B6, C1, V3, V6]; xn----e3j425bsk1o.xn--jlj4997dhgh; ; xn----e3j6620g.xn--jlj4997dhgh; [B1, B5, B6, V3, V6] # ᠆몆-.â´›ð¦…︒
+᠆몆\u200C-。ⴛð¦…︒; ᠆몆\u200C-.â´›ð¦…︒; [B1, B5, B6, C1, V3, V6]; xn----e3j425bsk1o.xn--jlj4997dhgh; ; xn----e3j6620g.xn--jlj4997dhgh; [B1, B5, B6, V3, V6] # ᠆몆-.â´›ð¦…︒
xn----e3j6620g.xn--jlj4997dhgh; ᠆몆-.â´›ð¦…︒; [B1, B5, B6, V3, V6]; xn----e3j6620g.xn--jlj4997dhgh; ; ; # ᠆몆-.â´›ð¦…︒
xn----e3j425bsk1o.xn--jlj4997dhgh; ᠆몆\u200C-.â´›ð¦…︒; [B1, B5, B6, C1, V3, V6]; xn----e3j425bsk1o.xn--jlj4997dhgh; ; ; # ᠆몆-.â´›ð¦…︒
xn----e3j6620g.xn--znd2362jhgh; ᠆몆-.á‚»ð¦…︒; [B1, B5, B6, V3, V6]; xn----e3j6620g.xn--znd2362jhgh; ; ; # ᠆몆-.á‚»ð¦…︒
xn----e3j425bsk1o.xn--znd2362jhgh; ᠆몆\u200C-.á‚»ð¦…︒; [B1, B5, B6, C1, V3, V6]; xn----e3j425bsk1o.xn--znd2362jhgh; ; ; # ᠆몆-.á‚»ð¦…︒
-ó ¾³.︒⥱\u200Cð¹¬; ; [B1, C1, P1, V6]; xn--uf66e.xn--0ugz28axl3pqxna; ; xn--uf66e.xn--qtiz073e3ik; [B1, P1, V6] # .︒⥱ð¹¬
-ó ¾³.。⥱\u200Cð¹¬; ó ¾³..⥱\u200Cð¹¬; [B1, C1, P1, V6, X4_2]; xn--uf66e..xn--0ugz28as66q; [B1, C1, P1, V6, A4_2]; xn--uf66e..xn--qti2829e; [B1, P1, V6, A4_2] # ..⥱ð¹¬
+ó ¾³.︒⥱\u200Cð¹¬; ; [B1, C1, V6]; xn--uf66e.xn--0ugz28axl3pqxna; ; xn--uf66e.xn--qtiz073e3ik; [B1, V6] # .︒⥱ð¹¬
+ó ¾³.。⥱\u200Cð¹¬; ó ¾³..⥱\u200Cð¹¬; [B1, C1, V6, X4_2]; xn--uf66e..xn--0ugz28as66q; [B1, C1, V6, A4_2]; xn--uf66e..xn--qti2829e; [B1, V6, A4_2] # ..⥱ð¹¬
xn--uf66e..xn--qti2829e; ó ¾³..⥱ð¹¬; [B1, V6, X4_2]; xn--uf66e..xn--qti2829e; [B1, V6, A4_2]; ; # ..⥱ð¹¬
xn--uf66e..xn--0ugz28as66q; ó ¾³..⥱\u200Cð¹¬; [B1, C1, V6, X4_2]; xn--uf66e..xn--0ugz28as66q; [B1, C1, V6, A4_2]; ; # ..⥱ð¹¬
xn--uf66e.xn--qtiz073e3ik; ó ¾³.︒⥱ð¹¬; [B1, V6]; xn--uf66e.xn--qtiz073e3ik; ; ; # .︒⥱ð¹¬
xn--uf66e.xn--0ugz28axl3pqxna; ó ¾³.︒⥱\u200Cð¹¬; [B1, C1, V6]; xn--uf66e.xn--0ugz28axl3pqxna; ; ; # .︒⥱ð¹¬
-ð¯–.ð¹ á‚±ñš‡œð«Š; ; [B1, P1, V6]; xn--n49c.xn--pnd4619jwicl862o; ; ; # .ð¹ á‚±ð«Š
-ð¯–.ð¹ â´‘ñš‡œð«Š; ; [B1, P1, V6]; xn--n49c.xn--8kj8702ewicl862o; ; ; # .ð¹ â´‘ð«Š
+ð¯–.ð¹ á‚±ñš‡œð«Š; ; [B1, V6]; xn--n49c.xn--pnd4619jwicl862o; ; ; # .ð¹ á‚±ð«Š
+ð¯–.ð¹ â´‘ñš‡œð«Š; ; [B1, V6]; xn--n49c.xn--8kj8702ewicl862o; ; ; # .ð¹ â´‘ð«Š
xn--n49c.xn--8kj8702ewicl862o; ð¯–.ð¹ â´‘ñš‡œð«Š; [B1, V6]; xn--n49c.xn--8kj8702ewicl862o; ; ; # .ð¹ â´‘ð«Š
xn--n49c.xn--pnd4619jwicl862o; ð¯–.ð¹ á‚±ñš‡œð«Š; [B1, V6]; xn--n49c.xn--pnd4619jwicl862o; ; ; # .ð¹ á‚±ð«Š
-\u0FA4ñ±¤¯ï¼ŽðŸ­á‚»; \u0FA4ñ±¤¯.1á‚»; [P1, V5, V6]; xn--0fd40533g.xn--1-q1g; ; ; # ྤ.1á‚»
-\u0FA4񱤯.1Ⴛ; ; [P1, V5, V6]; xn--0fd40533g.xn--1-q1g; ; ; # ྤ.1Ⴛ
-\u0FA4񱤯.1ⴛ; ; [P1, V5, V6]; xn--0fd40533g.xn--1-tws; ; ; # ྤ.1ⴛ
+\u0FA4ñ±¤¯ï¼ŽðŸ­á‚»; \u0FA4ñ±¤¯.1á‚»; [V5, V6]; xn--0fd40533g.xn--1-q1g; ; ; # ྤ.1á‚»
+\u0FA4񱤯.1Ⴛ; ; [V5, V6]; xn--0fd40533g.xn--1-q1g; ; ; # ྤ.1Ⴛ
+\u0FA4񱤯.1ⴛ; ; [V5, V6]; xn--0fd40533g.xn--1-tws; ; ; # ྤ.1ⴛ
xn--0fd40533g.xn--1-tws; \u0FA4񱤯.1ⴛ; [V5, V6]; xn--0fd40533g.xn--1-tws; ; ; # ྤ.1ⴛ
xn--0fd40533g.xn--1-q1g; \u0FA4񱤯.1Ⴛ; [V5, V6]; xn--0fd40533g.xn--1-q1g; ; ; # ྤ.1Ⴛ
-\u0FA4ñ±¤¯ï¼ŽðŸ­â´›; \u0FA4ñ±¤¯.1â´›; [P1, V5, V6]; xn--0fd40533g.xn--1-tws; ; ; # ྤ.1â´›
--\u0826齀。릿ð¸‹; -\u0826é½€.릿ð¸‹; [B1, B5, B6, P1, V3, V6]; xn----6gd0617i.xn--7y2bm55m; ; ; # -ࠦ齀.릿
--\u0826齀。릿ð¸‹; -\u0826é½€.릿ð¸‹; [B1, B5, B6, P1, V3, V6]; xn----6gd0617i.xn--7y2bm55m; ; ; # -ࠦ齀.릿
+\u0FA4ñ±¤¯ï¼ŽðŸ­â´›; \u0FA4ñ±¤¯.1â´›; [V5, V6]; xn--0fd40533g.xn--1-tws; ; ; # ྤ.1â´›
+-\u0826齀。릿ð¸‹; -\u0826é½€.릿ð¸‹; [B1, B5, B6, V3, V6]; xn----6gd0617i.xn--7y2bm55m; ; ; # -ࠦ齀.릿
+-\u0826齀。릿ð¸‹; -\u0826é½€.릿ð¸‹; [B1, B5, B6, V3, V6]; xn----6gd0617i.xn--7y2bm55m; ; ; # -ࠦ齀.릿
xn----6gd0617i.xn--7y2bm55m; -\u0826é½€.릿ð¸‹; [B1, B5, B6, V3, V6]; xn----6gd0617i.xn--7y2bm55m; ; ; # -ࠦ齀.릿
-󠔊\u071Cé¹ê¾—。ñ¾µ\u200D\u200Dâƒ; 󠔊\u071Cé¹ê¾—.ñ¾µ\u200D\u200Dâƒ; [B1, B6, C2, P1, V6]; xn--mnb6558e91kyq533a.xn--1uga46zs309y; ; xn--mnb6558e91kyq533a.xn--6mh27269e; [B1, B6, P1, V6] # Üœé¹ê¾—.âƒ
-󠔊\u071Cé¹á„ᅬᆾ。ñ¾µ\u200D\u200Dâƒ; 󠔊\u071Cé¹ê¾—.ñ¾µ\u200D\u200Dâƒ; [B1, B6, C2, P1, V6]; xn--mnb6558e91kyq533a.xn--1uga46zs309y; ; xn--mnb6558e91kyq533a.xn--6mh27269e; [B1, B6, P1, V6] # Üœé¹ê¾—.âƒ
+󠔊\u071Cé¹ê¾—。ñ¾µ\u200D\u200Dâƒ; 󠔊\u071Cé¹ê¾—.ñ¾µ\u200D\u200Dâƒ; [B1, B6, C2, V6]; xn--mnb6558e91kyq533a.xn--1uga46zs309y; ; xn--mnb6558e91kyq533a.xn--6mh27269e; [B1, B6, V6] # Üœé¹ê¾—.âƒ
+󠔊\u071Cé¹á„ᅬᆾ。ñ¾µ\u200D\u200Dâƒ; 󠔊\u071Cé¹ê¾—.ñ¾µ\u200D\u200Dâƒ; [B1, B6, C2, V6]; xn--mnb6558e91kyq533a.xn--1uga46zs309y; ; xn--mnb6558e91kyq533a.xn--6mh27269e; [B1, B6, V6] # Üœé¹ê¾—.âƒ
xn--mnb6558e91kyq533a.xn--6mh27269e; 󠔊\u071Cé¹ê¾—.ñ¾µâƒ; [B1, B6, V6]; xn--mnb6558e91kyq533a.xn--6mh27269e; ; ; # Üœé¹ê¾—.âƒ
xn--mnb6558e91kyq533a.xn--1uga46zs309y; 󠔊\u071Cé¹ê¾—.ñ¾µ\u200D\u200Dâƒ; [B1, B6, C2, V6]; xn--mnb6558e91kyq533a.xn--1uga46zs309y; ; ; # Üœé¹ê¾—.âƒ
-≮.-\u0708--; ≮.-\u0708--; [B1, P1, V2, V3, V6]; xn--gdh.xn------eqf; ; ; # ≮.-܈--
-<\u0338.-\u0708--; ≮.-\u0708--; [B1, P1, V2, V3, V6]; xn--gdh.xn------eqf; ; ; # ≮.-܈--
-≮.-\u0708--; ; [B1, P1, V2, V3, V6]; xn--gdh.xn------eqf; ; ; # ≮.-܈--
-<\u0338.-\u0708--; ≮.-\u0708--; [B1, P1, V2, V3, V6]; xn--gdh.xn------eqf; ; ; # ≮.-܈--
-xn--gdh.xn------eqf; ≮.-\u0708--; [B1, V2, V3, V6]; xn--gdh.xn------eqf; ; ; # ≮.-܈--
-ð¹¸ó ‹³ã€‚\u200DÏ‚ðŸ©; ð¹¸ó ‹³.\u200DÏ‚7; [B1, C2, P1, V6]; xn--wo0di5177c.xn--7-xmb248s; ; xn--wo0di5177c.xn--7-zmb; [B1, P1, V6] # ð¹¸.Ï‚7
-ð¹¸ó ‹³ã€‚\u200DÏ‚7; ð¹¸ó ‹³.\u200DÏ‚7; [B1, C2, P1, V6]; xn--wo0di5177c.xn--7-xmb248s; ; xn--wo0di5177c.xn--7-zmb; [B1, P1, V6] # ð¹¸.Ï‚7
-ð¹¸ó ‹³ã€‚\u200DΣ7; ð¹¸ó ‹³.\u200Dσ7; [B1, C2, P1, V6]; xn--wo0di5177c.xn--7-zmb938s; ; xn--wo0di5177c.xn--7-zmb; [B1, P1, V6] # ð¹¸.σ7
-ð¹¸ó ‹³ã€‚\u200Dσ7; ð¹¸ó ‹³.\u200Dσ7; [B1, C2, P1, V6]; xn--wo0di5177c.xn--7-zmb938s; ; xn--wo0di5177c.xn--7-zmb; [B1, P1, V6] # ð¹¸.σ7
+≮.-\u0708--; ≮.-\u0708--; [B1, V2, V3]; xn--gdh.xn------eqf; ; ; # ≮.-܈--
+<\u0338.-\u0708--; ≮.-\u0708--; [B1, V2, V3]; xn--gdh.xn------eqf; ; ; # ≮.-܈--
+≮.-\u0708--; ; [B1, V2, V3]; xn--gdh.xn------eqf; ; ; # ≮.-܈--
+<\u0338.-\u0708--; ≮.-\u0708--; [B1, V2, V3]; xn--gdh.xn------eqf; ; ; # ≮.-܈--
+xn--gdh.xn------eqf; ≮.-\u0708--; [B1, V2, V3]; xn--gdh.xn------eqf; ; ; # ≮.-܈--
+ð¹¸ó ‹³ã€‚\u200DÏ‚ðŸ©; ð¹¸ó ‹³.\u200DÏ‚7; [B1, C2, V6]; xn--wo0di5177c.xn--7-xmb248s; ; xn--wo0di5177c.xn--7-zmb; [B1, V6] # ð¹¸.Ï‚7
+ð¹¸ó ‹³ã€‚\u200DÏ‚7; ð¹¸ó ‹³.\u200DÏ‚7; [B1, C2, V6]; xn--wo0di5177c.xn--7-xmb248s; ; xn--wo0di5177c.xn--7-zmb; [B1, V6] # ð¹¸.Ï‚7
+ð¹¸ó ‹³ã€‚\u200DΣ7; ð¹¸ó ‹³.\u200Dσ7; [B1, C2, V6]; xn--wo0di5177c.xn--7-zmb938s; ; xn--wo0di5177c.xn--7-zmb; [B1, V6] # ð¹¸.σ7
+ð¹¸ó ‹³ã€‚\u200Dσ7; ð¹¸ó ‹³.\u200Dσ7; [B1, C2, V6]; xn--wo0di5177c.xn--7-zmb938s; ; xn--wo0di5177c.xn--7-zmb; [B1, V6] # ð¹¸.σ7
xn--wo0di5177c.xn--7-zmb; ð¹¸ó ‹³.σ7; [B1, V6]; xn--wo0di5177c.xn--7-zmb; ; ; # ð¹¸.σ7
xn--wo0di5177c.xn--7-zmb938s; ð¹¸ó ‹³.\u200Dσ7; [B1, C2, V6]; xn--wo0di5177c.xn--7-zmb938s; ; ; # ð¹¸.σ7
xn--wo0di5177c.xn--7-xmb248s; ð¹¸ó ‹³.\u200DÏ‚7; [B1, C2, V6]; xn--wo0di5177c.xn--7-xmb248s; ; ; # ð¹¸.Ï‚7
-ð¹¸ó ‹³ã€‚\u200DΣðŸ©; ð¹¸ó ‹³.\u200Dσ7; [B1, C2, P1, V6]; xn--wo0di5177c.xn--7-zmb938s; ; xn--wo0di5177c.xn--7-zmb; [B1, P1, V6] # ð¹¸.σ7
-ð¹¸ó ‹³ã€‚\u200DσðŸ©; ð¹¸ó ‹³.\u200Dσ7; [B1, C2, P1, V6]; xn--wo0di5177c.xn--7-zmb938s; ; xn--wo0di5177c.xn--7-zmb; [B1, P1, V6] # ð¹¸.σ7
-ς򅜌8.𞭤; ς򅜌8.𞭤; [P1, V6]; xn--8-xmb44974n.xn--su6h; ; xn--8-zmb14974n.xn--su6h; # ς8.
-ς򅜌8.𞭤; ; [P1, V6]; xn--8-xmb44974n.xn--su6h; ; xn--8-zmb14974n.xn--su6h; # ς8.
-Σ򅜌8.𞭤; σ򅜌8.𞭤; [P1, V6]; xn--8-zmb14974n.xn--su6h; ; ; # σ8.
-σ򅜌8.𞭤; ; [P1, V6]; xn--8-zmb14974n.xn--su6h; ; ; # σ8.
+ð¹¸ó ‹³ã€‚\u200DΣðŸ©; ð¹¸ó ‹³.\u200Dσ7; [B1, C2, V6]; xn--wo0di5177c.xn--7-zmb938s; ; xn--wo0di5177c.xn--7-zmb; [B1, V6] # ð¹¸.σ7
+ð¹¸ó ‹³ã€‚\u200DσðŸ©; ð¹¸ó ‹³.\u200Dσ7; [B1, C2, V6]; xn--wo0di5177c.xn--7-zmb938s; ; xn--wo0di5177c.xn--7-zmb; [B1, V6] # ð¹¸.σ7
+ς򅜌8.𞭤; ς򅜌8.𞭤; [V6]; xn--8-xmb44974n.xn--su6h; ; xn--8-zmb14974n.xn--su6h; # ς8.
+ς򅜌8.𞭤; ; [V6]; xn--8-xmb44974n.xn--su6h; ; xn--8-zmb14974n.xn--su6h; # ς8.
+Σ򅜌8.𞭤; σ򅜌8.𞭤; [V6]; xn--8-zmb14974n.xn--su6h; ; ; # σ8.
+σ򅜌8.𞭤; ; [V6]; xn--8-zmb14974n.xn--su6h; ; ; # σ8.
xn--8-zmb14974n.xn--su6h; σ򅜌8.𞭤; [V6]; xn--8-zmb14974n.xn--su6h; ; ; # σ8.
xn--8-xmb44974n.xn--su6h; ς򅜌8.𞭤; [V6]; xn--8-xmb44974n.xn--su6h; ; ; # ς8.
-Σ򅜌8.𞭤; σ򅜌8.𞭤; [P1, V6]; xn--8-zmb14974n.xn--su6h; ; ; # σ8.
-σ򅜌8.𞭤; σ򅜌8.𞭤; [P1, V6]; xn--8-zmb14974n.xn--su6h; ; ; # σ8.
-\u200Cᡑ🄀\u0684.-ð«„𑲤; \u200Cᡑ🄀\u0684.-ð«„𑲤; [B1, C1, P1, V3, V6]; xn--9ib722gvtfi563c.xn----ek5i065b; ; xn--9ib722gbw95a.xn----ek5i065b; [B1, B5, B6, P1, V3, V6] # ᡑ🄀ڄ.-ð«„𑲤
+Σ򅜌8.𞭤; σ򅜌8.𞭤; [V6]; xn--8-zmb14974n.xn--su6h; ; ; # σ8.
+σ򅜌8.𞭤; σ򅜌8.𞭤; [V6]; xn--8-zmb14974n.xn--su6h; ; ; # σ8.
+\u200Cᡑ🄀\u0684.-ð«„𑲤; \u200Cᡑ🄀\u0684.-ð«„𑲤; [B1, C1, V3, V6]; xn--9ib722gvtfi563c.xn----ek5i065b; ; xn--9ib722gbw95a.xn----ek5i065b; [B1, B5, B6, V3, V6] # ᡑ🄀ڄ.-ð«„𑲤
\u200Cá¡‘0.\u0684.-ð«„𑲤; ; [B1, C1, V3]; xn--0-o7j263b.xn--9ib.xn----ek5i065b; ; xn--0-o7j.xn--9ib.xn----ek5i065b; [B1, V3] # á¡‘0.Ú„.-ð«„𑲤
xn--0-o7j.xn--9ib.xn----ek5i065b; á¡‘0.\u0684.-ð«„𑲤; [B1, V3]; xn--0-o7j.xn--9ib.xn----ek5i065b; ; ; # á¡‘0.Ú„.-ð«„𑲤
xn--0-o7j263b.xn--9ib.xn----ek5i065b; \u200Cá¡‘0.\u0684.-ð«„𑲤; [B1, C1, V3]; xn--0-o7j263b.xn--9ib.xn----ek5i065b; ; ; # á¡‘0.Ú„.-ð«„𑲤
xn--9ib722gbw95a.xn----ek5i065b; ᡑ🄀\u0684.-ð«„𑲤; [B1, B5, B6, V3, V6]; xn--9ib722gbw95a.xn----ek5i065b; ; ; # ᡑ🄀ڄ.-ð«„𑲤
xn--9ib722gvtfi563c.xn----ek5i065b; \u200Cᡑ🄀\u0684.-ð«„𑲤; [B1, C1, V3, V6]; xn--9ib722gvtfi563c.xn----ek5i065b; ; ; # ᡑ🄀ڄ.-ð«„𑲤
-ð– ã€‚ðª¿ë„¯òžµ²; ð– .ðª¿ë„¯òžµ²; [B2, B3, P1, V6]; xn--4e9e.xn--l60bj21opd57g; ; ; # ð– .넯
-ð– ã€‚ðª¿á„‚ᅦᆲòžµ²; ð– .ðª¿ë„¯òžµ²; [B2, B3, P1, V6]; xn--4e9e.xn--l60bj21opd57g; ; ; # ð– .넯
+ð– ã€‚ðª¿ë„¯òžµ²; ð– .ðª¿ë„¯òžµ²; [B2, B3, V6]; xn--4e9e.xn--l60bj21opd57g; ; ; # ð– .넯
+ð– ã€‚ðª¿á„‚ᅦᆲòžµ²; ð– .ðª¿ë„¯òžµ²; [B2, B3, V6]; xn--4e9e.xn--l60bj21opd57g; ; ; # ð– .넯
xn--4e9e.xn--l60bj21opd57g; ð– .ðª¿ë„¯òžµ²; [B2, B3, V6]; xn--4e9e.xn--l60bj21opd57g; ; ; # ð– .넯
-᠇Ⴘ。\u0603Ⴈð†Š; ᠇Ⴘ.\u0603Ⴈð†Š; [B1, P1, V6]; xn--wnd558a.xn--lfb465c1v87a; ; ; # ᠇Ⴘ.Ⴈð†Š
-᠇ⴘ。\u0603â´ˆð†Š; ᠇ⴘ.\u0603â´ˆð†Š; [B1, P1, V6]; xn--d6e009h.xn--lfb290rfu3z; ; ; # ᠇ⴘ.â´ˆð†Š
+᠇Ⴘ。\u0603Ⴈð†Š; ᠇Ⴘ.\u0603Ⴈð†Š; [B1, V6]; xn--wnd558a.xn--lfb465c1v87a; ; ; # ᠇Ⴘ.Ⴈð†Š
+᠇ⴘ。\u0603â´ˆð†Š; ᠇ⴘ.\u0603â´ˆð†Š; [B1, V6]; xn--d6e009h.xn--lfb290rfu3z; ; ; # ᠇ⴘ.â´ˆð†Š
xn--d6e009h.xn--lfb290rfu3z; ᠇ⴘ.\u0603â´ˆð†Š; [B1, V6]; xn--d6e009h.xn--lfb290rfu3z; ; ; # ᠇ⴘ.â´ˆð†Š
xn--wnd558a.xn--lfb465c1v87a; ᠇Ⴘ.\u0603Ⴈð†Š; [B1, V6]; xn--wnd558a.xn--lfb465c1v87a; ; ; # ᠇Ⴘ.Ⴈð†Š
-⒚󠋑𞤰。牣\u0667Ⴜᣥ; ⒚󠋑𞤰.牣\u0667Ⴜᣥ; [B1, B5, P1, V6]; xn--cthy466n29j3e.xn--gib404ccxgh00h; ; ; # ⒚𞤰.牣٧Ⴜᣥ
-19.󠋑𞤰。牣\u0667Ⴜᣥ; 19.󠋑𞤰.牣\u0667Ⴜᣥ; [B1, B5, P1, V6]; 19.xn--oe6h75760c.xn--gib404ccxgh00h; ; ; # 19.𞤰.牣٧Ⴜᣥ
-19.󠋑𞤰。牣\u0667ⴜᣥ; 19.󠋑𞤰.牣\u0667ⴜᣥ; [B1, B5, P1, V6]; 19.xn--oe6h75760c.xn--gib285gtxo2l9d; ; ; # 19.𞤰.牣٧ⴜᣥ
-19.󠋑𞤎。牣\u0667Ⴜᣥ; 19.󠋑𞤰.牣\u0667Ⴜᣥ; [B1, B5, P1, V6]; 19.xn--oe6h75760c.xn--gib404ccxgh00h; ; ; # 19.𞤰.牣٧Ⴜᣥ
-19.󠋑𞤎。牣\u0667ⴜᣥ; 19.󠋑𞤰.牣\u0667ⴜᣥ; [B1, B5, P1, V6]; 19.xn--oe6h75760c.xn--gib285gtxo2l9d; ; ; # 19.𞤰.牣٧ⴜᣥ
+⒚󠋑𞤰。牣\u0667Ⴜᣥ; ⒚󠋑𞤰.牣\u0667Ⴜᣥ; [B1, B5, V6]; xn--cthy466n29j3e.xn--gib404ccxgh00h; ; ; # ⒚𞤰.牣٧Ⴜᣥ
+19.󠋑𞤰。牣\u0667Ⴜᣥ; 19.󠋑𞤰.牣\u0667Ⴜᣥ; [B1, B5, V6]; 19.xn--oe6h75760c.xn--gib404ccxgh00h; ; ; # 19.𞤰.牣٧Ⴜᣥ
+19.󠋑𞤰。牣\u0667ⴜᣥ; 19.󠋑𞤰.牣\u0667ⴜᣥ; [B1, B5, V6]; 19.xn--oe6h75760c.xn--gib285gtxo2l9d; ; ; # 19.𞤰.牣٧ⴜᣥ
+19.󠋑𞤎。牣\u0667Ⴜᣥ; 19.󠋑𞤰.牣\u0667Ⴜᣥ; [B1, B5, V6]; 19.xn--oe6h75760c.xn--gib404ccxgh00h; ; ; # 19.𞤰.牣٧Ⴜᣥ
+19.󠋑𞤎。牣\u0667ⴜᣥ; 19.󠋑𞤰.牣\u0667ⴜᣥ; [B1, B5, V6]; 19.xn--oe6h75760c.xn--gib285gtxo2l9d; ; ; # 19.𞤰.牣٧ⴜᣥ
19.xn--oe6h75760c.xn--gib285gtxo2l9d; 19.󠋑𞤰.牣\u0667ⴜᣥ; [B1, B5, V6]; 19.xn--oe6h75760c.xn--gib285gtxo2l9d; ; ; # 19.𞤰.牣٧ⴜᣥ
19.xn--oe6h75760c.xn--gib404ccxgh00h; 19.󠋑𞤰.牣\u0667Ⴜᣥ; [B1, B5, V6]; 19.xn--oe6h75760c.xn--gib404ccxgh00h; ; ; # 19.𞤰.牣٧Ⴜᣥ
-⒚󠋑𞤰。牣\u0667ⴜᣥ; ⒚󠋑𞤰.牣\u0667ⴜᣥ; [B1, B5, P1, V6]; xn--cthy466n29j3e.xn--gib285gtxo2l9d; ; ; # ⒚𞤰.牣٧ⴜᣥ
-⒚󠋑𞤎。牣\u0667Ⴜᣥ; ⒚󠋑𞤰.牣\u0667Ⴜᣥ; [B1, B5, P1, V6]; xn--cthy466n29j3e.xn--gib404ccxgh00h; ; ; # ⒚𞤰.牣٧Ⴜᣥ
-⒚󠋑𞤎。牣\u0667ⴜᣥ; ⒚󠋑𞤰.牣\u0667ⴜᣥ; [B1, B5, P1, V6]; xn--cthy466n29j3e.xn--gib285gtxo2l9d; ; ; # ⒚𞤰.牣٧ⴜᣥ
+⒚󠋑𞤰。牣\u0667ⴜᣥ; ⒚󠋑𞤰.牣\u0667ⴜᣥ; [B1, B5, V6]; xn--cthy466n29j3e.xn--gib285gtxo2l9d; ; ; # ⒚𞤰.牣٧ⴜᣥ
+⒚󠋑𞤎。牣\u0667Ⴜᣥ; ⒚󠋑𞤰.牣\u0667Ⴜᣥ; [B1, B5, V6]; xn--cthy466n29j3e.xn--gib404ccxgh00h; ; ; # ⒚𞤰.牣٧Ⴜᣥ
+⒚󠋑𞤎。牣\u0667ⴜᣥ; ⒚󠋑𞤰.牣\u0667ⴜᣥ; [B1, B5, V6]; xn--cthy466n29j3e.xn--gib285gtxo2l9d; ; ; # ⒚𞤰.牣٧ⴜᣥ
xn--cthy466n29j3e.xn--gib285gtxo2l9d; ⒚󠋑𞤰.牣\u0667ⴜᣥ; [B1, B5, V6]; xn--cthy466n29j3e.xn--gib285gtxo2l9d; ; ; # ⒚𞤰.牣٧ⴜᣥ
xn--cthy466n29j3e.xn--gib404ccxgh00h; ⒚󠋑𞤰.牣\u0667Ⴜᣥ; [B1, B5, V6]; xn--cthy466n29j3e.xn--gib404ccxgh00h; ; ; # ⒚𞤰.牣٧Ⴜᣥ
--ð‹±ð°½â’ˆ.Ⴓ; ; [B1, P1, V3, V6]; xn----ecp0206g90h.xn--rnd; ; ; # -ð‹±ð°½â’ˆ.Ⴓ
--ð‹±ð°½1..Ⴓ; ; [B1, P1, V3, V6, X4_2]; xn---1-895nq11a..xn--rnd; [B1, P1, V3, V6, A4_2]; ; # -ð‹±ð°½1..Ⴓ
+-ð‹±ð°½â’ˆ.Ⴓ; ; [B1, V3, V6]; xn----ecp0206g90h.xn--rnd; ; ; # -ð‹±ð°½â’ˆ.Ⴓ
+-ð‹±ð°½1..Ⴓ; ; [B1, V3, V6, X4_2]; xn---1-895nq11a..xn--rnd; [B1, V3, V6, A4_2]; ; # -ð‹±ð°½1..Ⴓ
-ð‹±ð°½1..â´“; ; [B1, V3, X4_2]; xn---1-895nq11a..xn--blj; [B1, V3, A4_2]; ; # -ð‹±ð°½1..â´“
xn---1-895nq11a..xn--blj; -ð‹±ð°½1..â´“; [B1, V3, X4_2]; xn---1-895nq11a..xn--blj; [B1, V3, A4_2]; ; # -ð‹±ð°½1..â´“
xn---1-895nq11a..xn--rnd; -ð‹±ð°½1..Ⴓ; [B1, V3, V6, X4_2]; xn---1-895nq11a..xn--rnd; [B1, V3, V6, A4_2]; ; # -ð‹±ð°½1..Ⴓ
--ð‹±ð°½â’ˆ.â´“; ; [B1, P1, V3, V6]; xn----ecp0206g90h.xn--blj; ; ; # -ð‹±ð°½â’ˆ.â´“
+-ð‹±ð°½â’ˆ.â´“; ; [B1, V3, V6]; xn----ecp0206g90h.xn--blj; ; ; # -ð‹±ð°½â’ˆ.â´“
xn----ecp0206g90h.xn--blj; -ð‹±ð°½â’ˆ.â´“; [B1, V3, V6]; xn----ecp0206g90h.xn--blj; ; ; # -ð‹±ð°½â’ˆ.â´“
xn----ecp0206g90h.xn--rnd; -ð‹±ð°½â’ˆ.Ⴓ; [B1, V3, V6]; xn----ecp0206g90h.xn--rnd; ; ; # -ð‹±ð°½â’ˆ.Ⴓ
\u200C긃.榶-; ; [C1, V3]; xn--0ug3307c.xn----d87b; ; xn--ej0b.xn----d87b; [V3] # 긃.榶-
\u200C긃.榶-; \u200C긃.榶-; [C1, V3]; xn--0ug3307c.xn----d87b; ; xn--ej0b.xn----d87b; [V3] # 긃.榶-
xn--ej0b.xn----d87b; 긃.榶-; [V3]; xn--ej0b.xn----d87b; ; ; # 긃.榶-
xn--0ug3307c.xn----d87b; \u200C긃.榶-; [C1, V3]; xn--0ug3307c.xn----d87b; ; ; # 긃.榶-
-뉓泓𜵽.\u09CD\u200D; ; [P1, V5, V6]; xn--lwwp69lqs7m.xn--b7b605i; ; xn--lwwp69lqs7m.xn--b7b; # 뉓泓.à§
-뉓泓𜵽.\u09CD\u200D; 뉓泓𜵽.\u09CD\u200D; [P1, V5, V6]; xn--lwwp69lqs7m.xn--b7b605i; ; xn--lwwp69lqs7m.xn--b7b; # 뉓泓.à§
+뉓泓𜵽.\u09CD\u200D; ; [V5, V6]; xn--lwwp69lqs7m.xn--b7b605i; ; xn--lwwp69lqs7m.xn--b7b; # 뉓泓.à§
+뉓泓𜵽.\u09CD\u200D; 뉓泓𜵽.\u09CD\u200D; [V5, V6]; xn--lwwp69lqs7m.xn--b7b605i; ; xn--lwwp69lqs7m.xn--b7b; # 뉓泓.à§
xn--lwwp69lqs7m.xn--b7b; 뉓泓𜵽.\u09CD; [V5, V6]; xn--lwwp69lqs7m.xn--b7b; ; ; # 뉓泓.à§
xn--lwwp69lqs7m.xn--b7b605i; 뉓泓𜵽.\u09CD\u200D; [V5, V6]; xn--lwwp69lqs7m.xn--b7b605i; ; ; # 뉓泓.à§
-\u200Dð¹´ÃŸï½¡\u0EB4\u2B75ñª…Œ; \u200Dð¹´ÃŸ.\u0EB4\u2B75ñª…Œ; [B1, C2, P1, V5, V6]; xn--zca770nip7n.xn--57c638l8774i; ; xn--ss-ti3o.xn--57c638l8774i; [B1, P1, V5, V6] # ð¹´ÃŸ.ິ
-\u200Dð¹´ÃŸã€‚\u0EB4\u2B75ñª…Œ; \u200Dð¹´ÃŸ.\u0EB4\u2B75ñª…Œ; [B1, C2, P1, V5, V6]; xn--zca770nip7n.xn--57c638l8774i; ; xn--ss-ti3o.xn--57c638l8774i; [B1, P1, V5, V6] # ð¹´ÃŸ.ິ
-\u200Dð¹´SS。\u0EB4\u2B75ñª…Œ; \u200Dð¹´ss.\u0EB4\u2B75ñª…Œ; [B1, C2, P1, V5, V6]; xn--ss-l1t5169j.xn--57c638l8774i; ; xn--ss-ti3o.xn--57c638l8774i; [B1, P1, V5, V6] # ð¹´ss.ິ
-\u200Dð¹´ss。\u0EB4\u2B75ñª…Œ; \u200Dð¹´ss.\u0EB4\u2B75ñª…Œ; [B1, C2, P1, V5, V6]; xn--ss-l1t5169j.xn--57c638l8774i; ; xn--ss-ti3o.xn--57c638l8774i; [B1, P1, V5, V6] # ð¹´ss.ິ
-\u200Dð¹´Ss。\u0EB4\u2B75ñª…Œ; \u200Dð¹´ss.\u0EB4\u2B75ñª…Œ; [B1, C2, P1, V5, V6]; xn--ss-l1t5169j.xn--57c638l8774i; ; xn--ss-ti3o.xn--57c638l8774i; [B1, P1, V5, V6] # ð¹´ss.ິ
+\u200Dð¹´ÃŸï½¡\u0EB4\u2B75ñª…Œ; \u200Dð¹´ÃŸ.\u0EB4\u2B75ñª…Œ; [B1, C2, V5, V6]; xn--zca770nip7n.xn--57c638l8774i; ; xn--ss-ti3o.xn--57c638l8774i; [B1, V5, V6] # ð¹´ÃŸ.ິ
+\u200Dð¹´ÃŸã€‚\u0EB4\u2B75ñª…Œ; \u200Dð¹´ÃŸ.\u0EB4\u2B75ñª…Œ; [B1, C2, V5, V6]; xn--zca770nip7n.xn--57c638l8774i; ; xn--ss-ti3o.xn--57c638l8774i; [B1, V5, V6] # ð¹´ÃŸ.ິ
+\u200Dð¹´SS。\u0EB4\u2B75ñª…Œ; \u200Dð¹´ss.\u0EB4\u2B75ñª…Œ; [B1, C2, V5, V6]; xn--ss-l1t5169j.xn--57c638l8774i; ; xn--ss-ti3o.xn--57c638l8774i; [B1, V5, V6] # ð¹´ss.ິ
+\u200Dð¹´ss。\u0EB4\u2B75ñª…Œ; \u200Dð¹´ss.\u0EB4\u2B75ñª…Œ; [B1, C2, V5, V6]; xn--ss-l1t5169j.xn--57c638l8774i; ; xn--ss-ti3o.xn--57c638l8774i; [B1, V5, V6] # ð¹´ss.ິ
+\u200Dð¹´Ss。\u0EB4\u2B75ñª…Œ; \u200Dð¹´ss.\u0EB4\u2B75ñª…Œ; [B1, C2, V5, V6]; xn--ss-l1t5169j.xn--57c638l8774i; ; xn--ss-ti3o.xn--57c638l8774i; [B1, V5, V6] # ð¹´ss.ິ
xn--ss-ti3o.xn--57c638l8774i; ð¹´ss.\u0EB4\u2B75ñª…Œ; [B1, V5, V6]; xn--ss-ti3o.xn--57c638l8774i; ; ; # ð¹´ss.ິ
xn--ss-l1t5169j.xn--57c638l8774i; \u200Dð¹´ss.\u0EB4\u2B75ñª…Œ; [B1, C2, V5, V6]; xn--ss-l1t5169j.xn--57c638l8774i; ; ; # ð¹´ss.ິ
xn--zca770nip7n.xn--57c638l8774i; \u200Dð¹´ÃŸ.\u0EB4\u2B75ñª…Œ; [B1, C2, V5, V6]; xn--zca770nip7n.xn--57c638l8774i; ; ; # ð¹´ÃŸ.ິ
-\u200Dð¹´SS。\u0EB4\u2B75ñª…Œ; \u200Dð¹´ss.\u0EB4\u2B75ñª…Œ; [B1, C2, P1, V5, V6]; xn--ss-l1t5169j.xn--57c638l8774i; ; xn--ss-ti3o.xn--57c638l8774i; [B1, P1, V5, V6] # ð¹´ss.ິ
-\u200Dð¹´ss。\u0EB4\u2B75ñª…Œ; \u200Dð¹´ss.\u0EB4\u2B75ñª…Œ; [B1, C2, P1, V5, V6]; xn--ss-l1t5169j.xn--57c638l8774i; ; xn--ss-ti3o.xn--57c638l8774i; [B1, P1, V5, V6] # ð¹´ss.ິ
-\u200Dð¹´Ss。\u0EB4\u2B75ñª…Œ; \u200Dð¹´ss.\u0EB4\u2B75ñª…Œ; [B1, C2, P1, V5, V6]; xn--ss-l1t5169j.xn--57c638l8774i; ; xn--ss-ti3o.xn--57c638l8774i; [B1, P1, V5, V6] # ð¹´ss.ິ
-\u1B44.\u1BAA-≮≠; \u1B44.\u1BAA-≮≠; [P1, V5, V6]; xn--1uf.xn----nmlz65aub; ; ; # ᭄.᮪-≮≠
-\u1B44.\u1BAA-<\u0338=\u0338; \u1B44.\u1BAA-≮≠; [P1, V5, V6]; xn--1uf.xn----nmlz65aub; ; ; # ᭄.᮪-≮≠
-\u1B44.\u1BAA-≮≠; ; [P1, V5, V6]; xn--1uf.xn----nmlz65aub; ; ; # ᭄.᮪-≮≠
-\u1B44.\u1BAA-<\u0338=\u0338; \u1B44.\u1BAA-≮≠; [P1, V5, V6]; xn--1uf.xn----nmlz65aub; ; ; # ᭄.᮪-≮≠
-xn--1uf.xn----nmlz65aub; \u1B44.\u1BAA-≮≠; [V5, V6]; xn--1uf.xn----nmlz65aub; ; ; # ᭄.᮪-≮≠
-\u1BF3Ⴑ\u115F.𑄴Ⅎ; \u1BF3Ⴑ\u115F.𑄴Ⅎ; [P1, V5, V6]; xn--pnd26a55x.xn--f3g7465g; ; ; # ᯳Ⴑ.𑄴Ⅎ
-\u1BF3Ⴑ\u115F.𑄴Ⅎ; ; [P1, V5, V6]; xn--pnd26a55x.xn--f3g7465g; ; ; # ᯳Ⴑ.𑄴Ⅎ
-\u1BF3ⴑ\u115F.𑄴ⅎ; ; [P1, V5, V6]; xn--osd925cvyn.xn--73g3065g; ; ; # ᯳ⴑ.𑄴ⅎ
-\u1BF3Ⴑ\u115F.𑄴ⅎ; ; [P1, V5, V6]; xn--pnd26a55x.xn--73g3065g; ; ; # ᯳Ⴑ.𑄴ⅎ
+\u200Dð¹´SS。\u0EB4\u2B75ñª…Œ; \u200Dð¹´ss.\u0EB4\u2B75ñª…Œ; [B1, C2, V5, V6]; xn--ss-l1t5169j.xn--57c638l8774i; ; xn--ss-ti3o.xn--57c638l8774i; [B1, V5, V6] # ð¹´ss.ິ
+\u200Dð¹´ss。\u0EB4\u2B75ñª…Œ; \u200Dð¹´ss.\u0EB4\u2B75ñª…Œ; [B1, C2, V5, V6]; xn--ss-l1t5169j.xn--57c638l8774i; ; xn--ss-ti3o.xn--57c638l8774i; [B1, V5, V6] # ð¹´ss.ິ
+\u200Dð¹´Ss。\u0EB4\u2B75ñª…Œ; \u200Dð¹´ss.\u0EB4\u2B75ñª…Œ; [B1, C2, V5, V6]; xn--ss-l1t5169j.xn--57c638l8774i; ; xn--ss-ti3o.xn--57c638l8774i; [B1, V5, V6] # ð¹´ss.ິ
+\u1B44.\u1BAA-≮≠; \u1B44.\u1BAA-≮≠; [V5]; xn--1uf.xn----nmlz65aub; ; ; # ᭄.᮪-≮≠
+\u1B44.\u1BAA-<\u0338=\u0338; \u1B44.\u1BAA-≮≠; [V5]; xn--1uf.xn----nmlz65aub; ; ; # ᭄.᮪-≮≠
+\u1B44.\u1BAA-≮≠; ; [V5]; xn--1uf.xn----nmlz65aub; ; ; # ᭄.᮪-≮≠
+\u1B44.\u1BAA-<\u0338=\u0338; \u1B44.\u1BAA-≮≠; [V5]; xn--1uf.xn----nmlz65aub; ; ; # ᭄.᮪-≮≠
+xn--1uf.xn----nmlz65aub; \u1B44.\u1BAA-≮≠; [V5]; xn--1uf.xn----nmlz65aub; ; ; # ᭄.᮪-≮≠
+\u1BF3Ⴑ\u115F.𑄴Ⅎ; \u1BF3Ⴑ\u115F.𑄴Ⅎ; [V5, V6]; xn--pnd26a55x.xn--f3g7465g; ; ; # ᯳Ⴑ.𑄴Ⅎ
+\u1BF3Ⴑ\u115F.𑄴Ⅎ; ; [V5, V6]; xn--pnd26a55x.xn--f3g7465g; ; ; # ᯳Ⴑ.𑄴Ⅎ
+\u1BF3ⴑ\u115F.𑄴ⅎ; ; [V5, V6]; xn--osd925cvyn.xn--73g3065g; ; ; # ᯳ⴑ.𑄴ⅎ
+\u1BF3Ⴑ\u115F.𑄴ⅎ; ; [V5, V6]; xn--pnd26a55x.xn--73g3065g; ; ; # ᯳Ⴑ.𑄴ⅎ
xn--pnd26a55x.xn--73g3065g; \u1BF3Ⴑ\u115F.𑄴ⅎ; [V5, V6]; xn--pnd26a55x.xn--73g3065g; ; ; # ᯳Ⴑ.𑄴ⅎ
xn--osd925cvyn.xn--73g3065g; \u1BF3ⴑ\u115F.𑄴ⅎ; [V5, V6]; xn--osd925cvyn.xn--73g3065g; ; ; # ᯳ⴑ.𑄴ⅎ
xn--pnd26a55x.xn--f3g7465g; \u1BF3Ⴑ\u115F.𑄴Ⅎ; [V5, V6]; xn--pnd26a55x.xn--f3g7465g; ; ; # ᯳Ⴑ.𑄴Ⅎ
-\u1BF3ⴑ\u115F.𑄴ⅎ; \u1BF3ⴑ\u115F.𑄴ⅎ; [P1, V5, V6]; xn--osd925cvyn.xn--73g3065g; ; ; # ᯳ⴑ.𑄴ⅎ
-\u1BF3Ⴑ\u115F.𑄴ⅎ; \u1BF3Ⴑ\u115F.𑄴ⅎ; [P1, V5, V6]; xn--pnd26a55x.xn--73g3065g; ; ; # ᯳Ⴑ.𑄴ⅎ
-𜉆。Ⴃð´£ð¹¹ë˜¯; 𜉆.á‚£ð´£ð¹¹ë˜¯; [B5, P1, V6]; xn--187g.xn--bnd4785f8r8bdeb; ; ; # .á‚£ð´£ð¹¹ë˜¯
-𜉆。Ⴃð´£ð¹¹á„„ᅪᆪ; 𜉆.á‚£ð´£ð¹¹ë˜¯; [B5, P1, V6]; xn--187g.xn--bnd4785f8r8bdeb; ; ; # .á‚£ð´£ð¹¹ë˜¯
-𜉆。ⴃð´£ð¹¹á„„ᅪᆪ; 𜉆.â´ƒð´£ð¹¹ë˜¯; [B5, P1, V6]; xn--187g.xn--ukjy205b8rscdeb; ; ; # .â´ƒð´£ð¹¹ë˜¯
-𜉆。ⴃð´£ð¹¹ë˜¯; 𜉆.â´ƒð´£ð¹¹ë˜¯; [B5, P1, V6]; xn--187g.xn--ukjy205b8rscdeb; ; ; # .â´ƒð´£ð¹¹ë˜¯
+\u1BF3ⴑ\u115F.𑄴ⅎ; \u1BF3ⴑ\u115F.𑄴ⅎ; [V5, V6]; xn--osd925cvyn.xn--73g3065g; ; ; # ᯳ⴑ.𑄴ⅎ
+\u1BF3Ⴑ\u115F.𑄴ⅎ; \u1BF3Ⴑ\u115F.𑄴ⅎ; [V5, V6]; xn--pnd26a55x.xn--73g3065g; ; ; # ᯳Ⴑ.𑄴ⅎ
+𜉆。Ⴃð´£ð¹¹ë˜¯; 𜉆.á‚£ð´£ð¹¹ë˜¯; [B5, V6]; xn--187g.xn--bnd4785f8r8bdeb; ; ; # .á‚£ð´£ð¹¹ë˜¯
+𜉆。Ⴃð´£ð¹¹á„„ᅪᆪ; 𜉆.á‚£ð´£ð¹¹ë˜¯; [B5, V6]; xn--187g.xn--bnd4785f8r8bdeb; ; ; # .á‚£ð´£ð¹¹ë˜¯
+𜉆。ⴃð´£ð¹¹á„„ᅪᆪ; 𜉆.â´ƒð´£ð¹¹ë˜¯; [B5, V6]; xn--187g.xn--ukjy205b8rscdeb; ; ; # .â´ƒð´£ð¹¹ë˜¯
+𜉆。ⴃð´£ð¹¹ë˜¯; 𜉆.â´ƒð´£ð¹¹ë˜¯; [B5, V6]; xn--187g.xn--ukjy205b8rscdeb; ; ; # .â´ƒð´£ð¹¹ë˜¯
xn--187g.xn--ukjy205b8rscdeb; 𜉆.â´ƒð´£ð¹¹ë˜¯; [B5, V6]; xn--187g.xn--ukjy205b8rscdeb; ; ; # .â´ƒð´£ð¹¹ë˜¯
xn--187g.xn--bnd4785f8r8bdeb; 𜉆.á‚£ð´£ð¹¹ë˜¯; [B5, V6]; xn--187g.xn--bnd4785f8r8bdeb; ; ; # .á‚£ð´£ð¹¹ë˜¯
-ð«€ï½¡â³»ó ™¾ó „·\u3164; ð«€.â³»ó ™¾\u3164; [B1, P1, V6]; xn--pw9c.xn--mkj83l4v899a; ; ; # ð«€.â³»
-ð«€ã€‚â³»ó ™¾ó „·\u1160; ð«€.â³»ó ™¾\u1160; [B1, P1, V6]; xn--pw9c.xn--psd742lxt32w; ; ; # ð«€.â³»
+ð«€ï½¡â³»ó ™¾ó „·\u3164; ð«€.â³»ó ™¾\u3164; [B1, V6]; xn--pw9c.xn--mkj83l4v899a; ; ; # ð«€.â³»
+ð«€ã€‚â³»ó ™¾ó „·\u1160; ð«€.â³»ó ™¾\u1160; [B1, V6]; xn--pw9c.xn--psd742lxt32w; ; ; # ð«€.â³»
xn--pw9c.xn--psd742lxt32w; ð«€.â³»ó ™¾\u1160; [B1, V6]; xn--pw9c.xn--psd742lxt32w; ; ; # ð«€.â³»
xn--pw9c.xn--mkj83l4v899a; ð«€.â³»ó ™¾\u3164; [B1, V6]; xn--pw9c.xn--mkj83l4v899a; ; ; # ð«€.â³»
\u079A⾇.\u071E-ð‹°; \u079A舛.\u071E-ð‹°; [B2, B3]; xn--7qb6383d.xn----20c3154q; ; ; # ޚ舛.Üž-ð‹°
\u079A舛.\u071E-ð‹°; ; [B2, B3]; xn--7qb6383d.xn----20c3154q; ; ; # ޚ舛.Üž-ð‹°
xn--7qb6383d.xn----20c3154q; \u079A舛.\u071E-ð‹°; [B2, B3]; xn--7qb6383d.xn----20c3154q; ; ; # ޚ舛.Üž-ð‹°
-Ⴉ猕󹛫≮.︒; Ⴉ猕󹛫≮.︒; [P1, V6]; xn--hnd212gz32d54x5r.xn--y86c; ; ; # Ⴉ猕≮.︒
-Ⴉ猕󹛫<\u0338.︒; Ⴉ猕󹛫≮.︒; [P1, V6]; xn--hnd212gz32d54x5r.xn--y86c; ; ; # Ⴉ猕≮.︒
-Ⴉ猕󹛫≮.。; Ⴉ猕󹛫≮..; [P1, V6, X4_2]; xn--hnd212gz32d54x5r..; [P1, V6, A4_2]; ; # Ⴉ猕≮..
-Ⴉ猕󹛫<\u0338.。; Ⴉ猕󹛫≮..; [P1, V6, X4_2]; xn--hnd212gz32d54x5r..; [P1, V6, A4_2]; ; # Ⴉ猕≮..
-ⴉ猕󹛫<\u0338.。; ⴉ猕󹛫≮..; [P1, V6, X4_2]; xn--gdh892bbz0d5438s..; [P1, V6, A4_2]; ; # ⴉ猕≮..
-ⴉ猕󹛫≮.。; ⴉ猕󹛫≮..; [P1, V6, X4_2]; xn--gdh892bbz0d5438s..; [P1, V6, A4_2]; ; # ⴉ猕≮..
+Ⴉ猕󹛫≮.︒; Ⴉ猕󹛫≮.︒; [V6]; xn--hnd212gz32d54x5r.xn--y86c; ; ; # Ⴉ猕≮.︒
+Ⴉ猕󹛫<\u0338.︒; Ⴉ猕󹛫≮.︒; [V6]; xn--hnd212gz32d54x5r.xn--y86c; ; ; # Ⴉ猕≮.︒
+Ⴉ猕󹛫≮.。; Ⴉ猕󹛫≮..; [V6, X4_2]; xn--hnd212gz32d54x5r..; [V6, A4_2]; ; # Ⴉ猕≮..
+Ⴉ猕󹛫<\u0338.。; Ⴉ猕󹛫≮..; [V6, X4_2]; xn--hnd212gz32d54x5r..; [V6, A4_2]; ; # Ⴉ猕≮..
+ⴉ猕󹛫<\u0338.。; ⴉ猕󹛫≮..; [V6, X4_2]; xn--gdh892bbz0d5438s..; [V6, A4_2]; ; # ⴉ猕≮..
+ⴉ猕󹛫≮.。; ⴉ猕󹛫≮..; [V6, X4_2]; xn--gdh892bbz0d5438s..; [V6, A4_2]; ; # ⴉ猕≮..
xn--gdh892bbz0d5438s..; ⴉ猕󹛫≮..; [V6, X4_2]; xn--gdh892bbz0d5438s..; [V6, A4_2]; ; # ⴉ猕≮..
xn--hnd212gz32d54x5r..; Ⴉ猕󹛫≮..; [V6, X4_2]; xn--hnd212gz32d54x5r..; [V6, A4_2]; ; # Ⴉ猕≮..
-ⴉ猕󹛫<\u0338.︒; ⴉ猕󹛫≮.︒; [P1, V6]; xn--gdh892bbz0d5438s.xn--y86c; ; ; # ⴉ猕≮.︒
-ⴉ猕󹛫≮.︒; ⴉ猕󹛫≮.︒; [P1, V6]; xn--gdh892bbz0d5438s.xn--y86c; ; ; # ⴉ猕≮.︒
+ⴉ猕󹛫<\u0338.︒; ⴉ猕󹛫≮.︒; [V6]; xn--gdh892bbz0d5438s.xn--y86c; ; ; # ⴉ猕≮.︒
+ⴉ猕󹛫≮.︒; ⴉ猕󹛫≮.︒; [V6]; xn--gdh892bbz0d5438s.xn--y86c; ; ; # ⴉ猕≮.︒
xn--gdh892bbz0d5438s.xn--y86c; ⴉ猕󹛫≮.︒; [V6]; xn--gdh892bbz0d5438s.xn--y86c; ; ; # ⴉ猕≮.︒
xn--hnd212gz32d54x5r.xn--y86c; Ⴉ猕󹛫≮.︒; [V6]; xn--hnd212gz32d54x5r.xn--y86c; ; ; # Ⴉ猕≮.︒
ðŸ®ï½¡\u062Bé³³\u07E2ó …‰; ðŸ®.\u062Bé³³\u07E2; [B1, B2]; xn--8m8h.xn--qgb29f6z90a; ; ; # ðŸ®.ث鳳ߢ
@@ -1052,114 +1058,114 @@ xn----1fa1788k.; å둄-.; [V3]; xn----1fa1788k.; ; ; # å둄-.
xn----1fa1788k.xn--0ug; å둄-.\u200C; [C1, V3]; xn----1fa1788k.xn--0ug; ; ; # å둄-.
a\u030A둄-.\u200C; å둄-.\u200C; [C1, V3]; xn----1fa1788k.xn--0ug; ; xn----1fa1788k.; [V3] # å둄-.
å둄-.\u200C; å둄-.\u200C; [C1, V3]; xn----1fa1788k.xn--0ug; ; xn----1fa1788k.; [V3] # å둄-.
-\u3099򬎑\u1DD7𞤀.򱲢-\u0953; \u3099򬎑\u1DD7𞤢.򱲢-\u0953; [B1, B6, P1, V5, V6]; xn--veg121fwg63altj9d.xn----eyd92688s; ; ; # ゙ᷗ𞤢.-॓
-\u3099򬎑\u1DD7𞤢.򱲢-\u0953; ; [B1, B6, P1, V5, V6]; xn--veg121fwg63altj9d.xn----eyd92688s; ; ; # ゙ᷗ𞤢.-॓
+\u3099򬎑\u1DD7𞤀.򱲢-\u0953; \u3099򬎑\u1DD7𞤢.򱲢-\u0953; [B1, B6, V5, V6]; xn--veg121fwg63altj9d.xn----eyd92688s; ; ; # ゙ᷗ𞤢.-॓
+\u3099򬎑\u1DD7𞤢.򱲢-\u0953; ; [B1, B6, V5, V6]; xn--veg121fwg63altj9d.xn----eyd92688s; ; ; # ゙ᷗ𞤢.-॓
xn--veg121fwg63altj9d.xn----eyd92688s; \u3099򬎑\u1DD7𞤢.򱲢-\u0953; [B1, B6, V5, V6]; xn--veg121fwg63altj9d.xn----eyd92688s; ; ; # ゙ᷗ𞤢.-॓
-ς.ß񴱄\u06DD\u2D7F; ; [B5, B6, P1, V6]; xn--3xa.xn--zca281az71b8x73m; ; xn--4xa.xn--ss-y8d4760biv60n; # ς.ß⵿
-Σ.SS񴱄\u06DD\u2D7F; σ.ss񴱄\u06DD\u2D7F; [B5, B6, P1, V6]; xn--4xa.xn--ss-y8d4760biv60n; ; ; # σ.ss⵿
-σ.ss񴱄\u06DD\u2D7F; ; [B5, B6, P1, V6]; xn--4xa.xn--ss-y8d4760biv60n; ; ; # σ.ss⵿
-Σ.ss񴱄\u06DD\u2D7F; σ.ss񴱄\u06DD\u2D7F; [B5, B6, P1, V6]; xn--4xa.xn--ss-y8d4760biv60n; ; ; # σ.ss⵿
+ς.ß񴱄\u06DD\u2D7F; ; [B5, B6, V6]; xn--3xa.xn--zca281az71b8x73m; ; xn--4xa.xn--ss-y8d4760biv60n; # ς.ß⵿
+Σ.SS񴱄\u06DD\u2D7F; σ.ss񴱄\u06DD\u2D7F; [B5, B6, V6]; xn--4xa.xn--ss-y8d4760biv60n; ; ; # σ.ss⵿
+σ.ss񴱄\u06DD\u2D7F; ; [B5, B6, V6]; xn--4xa.xn--ss-y8d4760biv60n; ; ; # σ.ss⵿
+Σ.ss񴱄\u06DD\u2D7F; σ.ss񴱄\u06DD\u2D7F; [B5, B6, V6]; xn--4xa.xn--ss-y8d4760biv60n; ; ; # σ.ss⵿
xn--4xa.xn--ss-y8d4760biv60n; σ.ss񴱄\u06DD\u2D7F; [B5, B6, V6]; xn--4xa.xn--ss-y8d4760biv60n; ; ; # σ.ss⵿
-Σ.ß񴱄\u06DD\u2D7F; σ.ß񴱄\u06DD\u2D7F; [B5, B6, P1, V6]; xn--4xa.xn--zca281az71b8x73m; ; xn--4xa.xn--ss-y8d4760biv60n; # σ.ß⵿
-σ.ß񴱄\u06DD\u2D7F; ; [B5, B6, P1, V6]; xn--4xa.xn--zca281az71b8x73m; ; xn--4xa.xn--ss-y8d4760biv60n; # σ.ß⵿
+Σ.ß񴱄\u06DD\u2D7F; σ.ß񴱄\u06DD\u2D7F; [B5, B6, V6]; xn--4xa.xn--zca281az71b8x73m; ; xn--4xa.xn--ss-y8d4760biv60n; # σ.ß⵿
+σ.ß񴱄\u06DD\u2D7F; ; [B5, B6, V6]; xn--4xa.xn--zca281az71b8x73m; ; xn--4xa.xn--ss-y8d4760biv60n; # σ.ß⵿
xn--4xa.xn--zca281az71b8x73m; σ.ß񴱄\u06DD\u2D7F; [B5, B6, V6]; xn--4xa.xn--zca281az71b8x73m; ; ; # σ.ß⵿
xn--3xa.xn--zca281az71b8x73m; ς.ß񴱄\u06DD\u2D7F; [B5, B6, V6]; xn--3xa.xn--zca281az71b8x73m; ; ; # ς.ß⵿
ꡀ𞀟。\u066B\u0599; ꡀ𞀟.\u066B\u0599; [B1]; xn--8b9a1720d.xn--kcb33b; ; ; # ꡀ𞀟.٫֙
ꡀ𞀟。\u066B\u0599; ꡀ𞀟.\u066B\u0599; [B1]; xn--8b9a1720d.xn--kcb33b; ; ; # ꡀ𞀟.٫֙
xn--8b9a1720d.xn--kcb33b; ꡀ𞀟.\u066B\u0599; [B1]; xn--8b9a1720d.xn--kcb33b; ; ; # ꡀ𞀟.٫֙
-òˆ›‰\u200C\u08A9。⧅ñ˜˜¡-ð­¡; òˆ›‰\u200C\u08A9.⧅ñ˜˜¡-ð­¡; [B1, B5, B6, C1, P1, V6]; xn--yyb780jll63m.xn----zir1232guu71b; ; xn--yyb56242i.xn----zir1232guu71b; [B1, B5, B6, P1, V6] # ࢩ.⧅-ð­¡
-òˆ›‰\u200C\u08A9。⧅ñ˜˜¡-ð­¡; òˆ›‰\u200C\u08A9.⧅ñ˜˜¡-ð­¡; [B1, B5, B6, C1, P1, V6]; xn--yyb780jll63m.xn----zir1232guu71b; ; xn--yyb56242i.xn----zir1232guu71b; [B1, B5, B6, P1, V6] # ࢩ.⧅-ð­¡
+òˆ›‰\u200C\u08A9。⧅ñ˜˜¡-ð­¡; òˆ›‰\u200C\u08A9.⧅ñ˜˜¡-ð­¡; [B1, B5, B6, C1, V6]; xn--yyb780jll63m.xn----zir1232guu71b; ; xn--yyb56242i.xn----zir1232guu71b; [B1, B5, B6, V6] # ࢩ.⧅-ð­¡
+òˆ›‰\u200C\u08A9。⧅ñ˜˜¡-ð­¡; òˆ›‰\u200C\u08A9.⧅ñ˜˜¡-ð­¡; [B1, B5, B6, C1, V6]; xn--yyb780jll63m.xn----zir1232guu71b; ; xn--yyb56242i.xn----zir1232guu71b; [B1, B5, B6, V6] # ࢩ.⧅-ð­¡
xn--yyb56242i.xn----zir1232guu71b; òˆ›‰\u08A9.⧅ñ˜˜¡-ð­¡; [B1, B5, B6, V6]; xn--yyb56242i.xn----zir1232guu71b; ; ; # ࢩ.⧅-ð­¡
xn--yyb780jll63m.xn----zir1232guu71b; òˆ›‰\u200C\u08A9.⧅ñ˜˜¡-ð­¡; [B1, B5, B6, C1, V6]; xn--yyb780jll63m.xn----zir1232guu71b; ; ; # ࢩ.⧅-ð­¡
-룱\u200Dð°¨\u200C。ð¨–︒; 룱\u200Dð°¨\u200C.ð¨–︒; [C1, C2, P1, V5, V6]; xn--0ugb3358ili2v.xn--y86cl899a; ; xn--ct2b0738h.xn--y86cl899a; [P1, V5, V6] # 룱ð°¨.ð¨–︒
-룱\u200Dð°¨\u200C。ð¨–︒; 룱\u200Dð°¨\u200C.ð¨–︒; [C1, C2, P1, V5, V6]; xn--0ugb3358ili2v.xn--y86cl899a; ; xn--ct2b0738h.xn--y86cl899a; [P1, V5, V6] # 룱ð°¨.ð¨–︒
+룱\u200Dð°¨\u200C。ð¨–︒; 룱\u200Dð°¨\u200C.ð¨–︒; [C1, C2, V5, V6]; xn--0ugb3358ili2v.xn--y86cl899a; ; xn--ct2b0738h.xn--y86cl899a; [V5, V6] # 룱ð°¨.ð¨–︒
+룱\u200Dð°¨\u200C。ð¨–︒; 룱\u200Dð°¨\u200C.ð¨–︒; [C1, C2, V5, V6]; xn--0ugb3358ili2v.xn--y86cl899a; ; xn--ct2b0738h.xn--y86cl899a; [V5, V6] # 룱ð°¨.ð¨–︒
룱\u200Dð°¨\u200C。ð¨–。; 룱\u200Dð°¨\u200C.ð¨–.; [C1, C2, V5]; xn--0ugb3358ili2v.xn--772h.; ; xn--ct2b0738h.xn--772h.; [V5] # 룱ð°¨.ð¨–.
룱\u200Dð°¨\u200C。ð¨–。; 룱\u200Dð°¨\u200C.ð¨–.; [C1, C2, V5]; xn--0ugb3358ili2v.xn--772h.; ; xn--ct2b0738h.xn--772h.; [V5] # 룱ð°¨.ð¨–.
xn--ct2b0738h.xn--772h.; 룱ð°¨.ð¨–.; [V5]; xn--ct2b0738h.xn--772h.; ; ; # 룱ð°¨.ð¨–.
xn--0ugb3358ili2v.xn--772h.; 룱\u200Dð°¨\u200C.ð¨–.; [C1, C2, V5]; xn--0ugb3358ili2v.xn--772h.; ; ; # 룱ð°¨.ð¨–.
xn--ct2b0738h.xn--y86cl899a; 룱ð°¨.ð¨–︒; [V5, V6]; xn--ct2b0738h.xn--y86cl899a; ; ; # 룱ð°¨.ð¨–︒
xn--0ugb3358ili2v.xn--y86cl899a; 룱\u200Dð°¨\u200C.ð¨–︒; [C1, C2, V5, V6]; xn--0ugb3358ili2v.xn--y86cl899a; ; ; # 룱ð°¨.ð¨–︒
-🄄.\u1CDC⒈ß; 🄄.\u1CDC⒈ß; [P1, V5, V6]; xn--x07h.xn--zca344lmif; ; xn--x07h.xn--ss-k1r094b; # 🄄.᳜⒈ß
-3,.\u1CDC1.ß; ; [P1, V5, V6]; 3,.xn--1-43l.xn--zca; ; 3,.xn--1-43l.ss; # 3,.᳜1.ß
-3,.\u1CDC1.SS; 3,.\u1CDC1.ss; [P1, V5, V6]; 3,.xn--1-43l.ss; ; ; # 3,.᳜1.ss
-3,.\u1CDC1.ss; ; [P1, V5, V6]; 3,.xn--1-43l.ss; ; ; # 3,.᳜1.ss
-3,.\u1CDC1.Ss; 3,.\u1CDC1.ss; [P1, V5, V6]; 3,.xn--1-43l.ss; ; ; # 3,.᳜1.ss
-3,.xn--1-43l.ss; 3,.\u1CDC1.ss; [P1, V5, V6]; 3,.xn--1-43l.ss; ; ; # 3,.᳜1.ss
-3,.xn--1-43l.xn--zca; 3,.\u1CDC1.ß; [P1, V5, V6]; 3,.xn--1-43l.xn--zca; ; ; # 3,.᳜1.ß
-🄄.\u1CDC⒈SS; 🄄.\u1CDC⒈ss; [P1, V5, V6]; xn--x07h.xn--ss-k1r094b; ; ; # 🄄.᳜⒈ss
-🄄.\u1CDC⒈ss; 🄄.\u1CDC⒈ss; [P1, V5, V6]; xn--x07h.xn--ss-k1r094b; ; ; # 🄄.᳜⒈ss
-🄄.\u1CDC⒈Ss; 🄄.\u1CDC⒈ss; [P1, V5, V6]; xn--x07h.xn--ss-k1r094b; ; ; # 🄄.᳜⒈ss
+🄄.\u1CDC⒈ß; 🄄.\u1CDC⒈ß; [V5, V6]; xn--x07h.xn--zca344lmif; ; xn--x07h.xn--ss-k1r094b; # 🄄.᳜⒈ß
+3,.\u1CDC1.ß; ; [V5, V6]; 3,.xn--1-43l.xn--zca; ; 3,.xn--1-43l.ss; # 3,.᳜1.ß
+3,.\u1CDC1.SS; 3,.\u1CDC1.ss; [V5, V6]; 3,.xn--1-43l.ss; ; ; # 3,.᳜1.ss
+3,.\u1CDC1.ss; ; [V5, V6]; 3,.xn--1-43l.ss; ; ; # 3,.᳜1.ss
+3,.\u1CDC1.Ss; 3,.\u1CDC1.ss; [V5, V6]; 3,.xn--1-43l.ss; ; ; # 3,.᳜1.ss
+3,.xn--1-43l.ss; 3,.\u1CDC1.ss; [V5, V6]; 3,.xn--1-43l.ss; ; ; # 3,.᳜1.ss
+3,.xn--1-43l.xn--zca; 3,.\u1CDC1.ß; [V5, V6]; 3,.xn--1-43l.xn--zca; ; ; # 3,.᳜1.ß
+🄄.\u1CDC⒈SS; 🄄.\u1CDC⒈ss; [V5, V6]; xn--x07h.xn--ss-k1r094b; ; ; # 🄄.᳜⒈ss
+🄄.\u1CDC⒈ss; 🄄.\u1CDC⒈ss; [V5, V6]; xn--x07h.xn--ss-k1r094b; ; ; # 🄄.᳜⒈ss
+🄄.\u1CDC⒈Ss; 🄄.\u1CDC⒈ss; [V5, V6]; xn--x07h.xn--ss-k1r094b; ; ; # 🄄.᳜⒈ss
xn--x07h.xn--ss-k1r094b; 🄄.\u1CDC⒈ss; [V5, V6]; xn--x07h.xn--ss-k1r094b; ; ; # 🄄.᳜⒈ss
xn--x07h.xn--zca344lmif; 🄄.\u1CDC⒈ß; [V5, V6]; xn--x07h.xn--zca344lmif; ; ; # 🄄.᳜⒈ß
-ñ‡Œ\u2D7F。𞼓ò¡„¨ð‘º; ñ‡Œ\u2D7F.𞼓ò¡„¨ð‘º; [B2, B3, P1, V6]; xn--eoj16016a.xn--0v1d3848a3lr0d; ; ; # ⵿.ð‘º
-ñ‡Œ\u2D7F。𞼓ò¡„¨ð‘º; ñ‡Œ\u2D7F.𞼓ò¡„¨ð‘º; [B2, B3, P1, V6]; xn--eoj16016a.xn--0v1d3848a3lr0d; ; ; # ⵿.ð‘º
+ñ‡Œ\u2D7F。𞼓ò¡„¨ð‘º; ñ‡Œ\u2D7F.𞼓ò¡„¨ð‘º; [B2, B3, V6]; xn--eoj16016a.xn--0v1d3848a3lr0d; ; ; # ⵿.ð‘º
+ñ‡Œ\u2D7F。𞼓ò¡„¨ð‘º; ñ‡Œ\u2D7F.𞼓ò¡„¨ð‘º; [B2, B3, V6]; xn--eoj16016a.xn--0v1d3848a3lr0d; ; ; # ⵿.ð‘º
xn--eoj16016a.xn--0v1d3848a3lr0d; ñ‡Œ\u2D7F.𞼓ò¡„¨ð‘º; [B2, B3, V6]; xn--eoj16016a.xn--0v1d3848a3lr0d; ; ; # ⵿.ð‘º
-\u1DFD\u103A\u094D.≠\u200D㇛; \u103A\u094D\u1DFD.≠\u200D㇛; [C2, P1, V5, V6]; xn--n3b956a9zm.xn--1ug63gz5w; ; xn--n3b956a9zm.xn--1ch912d; [P1, V5, V6] # ်à¥á·½.≠㇛
-\u103A\u094D\u1DFD.≠\u200D㇛; \u103A\u094D\u1DFD.≠\u200D㇛; [C2, P1, V5, V6]; xn--n3b956a9zm.xn--1ug63gz5w; ; xn--n3b956a9zm.xn--1ch912d; [P1, V5, V6] # ်à¥á·½.≠㇛
-\u103A\u094D\u1DFD.=\u0338\u200D㇛; \u103A\u094D\u1DFD.≠\u200D㇛; [C2, P1, V5, V6]; xn--n3b956a9zm.xn--1ug63gz5w; ; xn--n3b956a9zm.xn--1ch912d; [P1, V5, V6] # ်à¥á·½.≠㇛
-\u103A\u094D\u1DFD.≠\u200D㇛; ; [C2, P1, V5, V6]; xn--n3b956a9zm.xn--1ug63gz5w; ; xn--n3b956a9zm.xn--1ch912d; [P1, V5, V6] # ်à¥á·½.≠㇛
-\u103A\u094D\u1DFD.=\u0338\u200D㇛; \u103A\u094D\u1DFD.≠\u200D㇛; [C2, P1, V5, V6]; xn--n3b956a9zm.xn--1ug63gz5w; ; xn--n3b956a9zm.xn--1ch912d; [P1, V5, V6] # ်à¥á·½.≠㇛
-xn--n3b956a9zm.xn--1ch912d; \u103A\u094D\u1DFD.≠㇛; [V5, V6]; xn--n3b956a9zm.xn--1ch912d; ; ; # ်à¥á·½.≠㇛
-xn--n3b956a9zm.xn--1ug63gz5w; \u103A\u094D\u1DFD.≠\u200D㇛; [C2, V5, V6]; xn--n3b956a9zm.xn--1ug63gz5w; ; ; # ်à¥á·½.≠㇛
-á‚¡ð‹¨å¨¤.\u200D\u033C\u0662ð‘–¿; ; [B1, C2, P1, V6]; xn--8md2578ag21g.xn--9ta62ngt6aou8t; ; xn--8md2578ag21g.xn--9ta62nrv36a; [B1, P1, V5, V6] # á‚¡ð‹¨å¨¤.̼٢𑖿
+\u1DFD\u103A\u094D.≠\u200D㇛; \u103A\u094D\u1DFD.≠\u200D㇛; [C2, V5]; xn--n3b956a9zm.xn--1ug63gz5w; ; xn--n3b956a9zm.xn--1ch912d; [V5] # ်à¥á·½.≠㇛
+\u103A\u094D\u1DFD.≠\u200D㇛; \u103A\u094D\u1DFD.≠\u200D㇛; [C2, V5]; xn--n3b956a9zm.xn--1ug63gz5w; ; xn--n3b956a9zm.xn--1ch912d; [V5] # ်à¥á·½.≠㇛
+\u103A\u094D\u1DFD.=\u0338\u200D㇛; \u103A\u094D\u1DFD.≠\u200D㇛; [C2, V5]; xn--n3b956a9zm.xn--1ug63gz5w; ; xn--n3b956a9zm.xn--1ch912d; [V5] # ်à¥á·½.≠㇛
+\u103A\u094D\u1DFD.≠\u200D㇛; ; [C2, V5]; xn--n3b956a9zm.xn--1ug63gz5w; ; xn--n3b956a9zm.xn--1ch912d; [V5] # ်à¥á·½.≠㇛
+\u103A\u094D\u1DFD.=\u0338\u200D㇛; \u103A\u094D\u1DFD.≠\u200D㇛; [C2, V5]; xn--n3b956a9zm.xn--1ug63gz5w; ; xn--n3b956a9zm.xn--1ch912d; [V5] # ်à¥á·½.≠㇛
+xn--n3b956a9zm.xn--1ch912d; \u103A\u094D\u1DFD.≠㇛; [V5]; xn--n3b956a9zm.xn--1ch912d; ; ; # ်à¥á·½.≠㇛
+xn--n3b956a9zm.xn--1ug63gz5w; \u103A\u094D\u1DFD.≠\u200D㇛; [C2, V5]; xn--n3b956a9zm.xn--1ug63gz5w; ; ; # ်à¥á·½.≠㇛
+á‚¡ð‹¨å¨¤.\u200D\u033C\u0662ð‘–¿; ; [B1, C2, V6]; xn--8md2578ag21g.xn--9ta62ngt6aou8t; ; xn--8md2578ag21g.xn--9ta62nrv36a; [B1, V5, V6] # á‚¡ð‹¨å¨¤.̼٢𑖿
â´ð‹¨å¨¤.\u200D\u033C\u0662ð‘–¿; ; [B1, C2]; xn--skjw75lg29h.xn--9ta62ngt6aou8t; ; xn--skjw75lg29h.xn--9ta62nrv36a; [B1, V5] # â´ð‹¨å¨¤.̼٢𑖿
xn--skjw75lg29h.xn--9ta62nrv36a; â´ð‹¨å¨¤.\u033C\u0662ð‘–¿; [B1, V5]; xn--skjw75lg29h.xn--9ta62nrv36a; ; ; # â´ð‹¨å¨¤.̼٢𑖿
xn--skjw75lg29h.xn--9ta62ngt6aou8t; â´ð‹¨å¨¤.\u200D\u033C\u0662ð‘–¿; [B1, C2]; xn--skjw75lg29h.xn--9ta62ngt6aou8t; ; ; # â´ð‹¨å¨¤.̼٢𑖿
xn--8md2578ag21g.xn--9ta62nrv36a; á‚¡ð‹¨å¨¤.\u033C\u0662ð‘–¿; [B1, V5, V6]; xn--8md2578ag21g.xn--9ta62nrv36a; ; ; # á‚¡ð‹¨å¨¤.̼٢𑖿
xn--8md2578ag21g.xn--9ta62ngt6aou8t; á‚¡ð‹¨å¨¤.\u200D\u033C\u0662ð‘–¿; [B1, C2, V6]; xn--8md2578ag21g.xn--9ta62ngt6aou8t; ; ; # á‚¡ð‹¨å¨¤.̼٢𑖿
-🄀Ⴄ\u0669\u0820。⒈\u0FB6ß; 🄀Ⴄ\u0669\u0820.⒈\u0FB6ß; [B1, P1, V6]; xn--iib29f26o6n43c.xn--zca117e3vp; ; xn--iib29f26o6n43c.xn--ss-1sj588o; # 🄀Ⴄ٩ࠠ.⒈ྶß
-0.Ⴄ\u0669\u0820。1.\u0FB6ß; 0.Ⴄ\u0669\u0820.1.\u0FB6ß; [B1, B5, B6, P1, V5, V6]; 0.xn--iib29f26o.1.xn--zca117e; ; 0.xn--iib29f26o.1.xn--ss-1sj; # 0.Ⴄ٩ࠠ.1.ྶß
+🄀Ⴄ\u0669\u0820。⒈\u0FB6ß; 🄀Ⴄ\u0669\u0820.⒈\u0FB6ß; [B1, V6]; xn--iib29f26o6n43c.xn--zca117e3vp; ; xn--iib29f26o6n43c.xn--ss-1sj588o; # 🄀Ⴄ٩ࠠ.⒈ྶß
+0.Ⴄ\u0669\u0820。1.\u0FB6ß; 0.Ⴄ\u0669\u0820.1.\u0FB6ß; [B1, B5, B6, V5, V6]; 0.xn--iib29f26o.1.xn--zca117e; ; 0.xn--iib29f26o.1.xn--ss-1sj; # 0.Ⴄ٩ࠠ.1.ྶß
0.ⴄ\u0669\u0820。1.\u0FB6ß; 0.ⴄ\u0669\u0820.1.\u0FB6ß; [B1, B5, B6, V5]; 0.xn--iib29fp25e.1.xn--zca117e; ; 0.xn--iib29fp25e.1.xn--ss-1sj; # 0.ⴄ٩ࠠ.1.ྶß
-0.Ⴄ\u0669\u0820。1.\u0FB6SS; 0.Ⴄ\u0669\u0820.1.\u0FB6ss; [B1, B5, B6, P1, V5, V6]; 0.xn--iib29f26o.1.xn--ss-1sj; ; ; # 0.Ⴄ٩ࠠ.1.ྶss
+0.Ⴄ\u0669\u0820。1.\u0FB6SS; 0.Ⴄ\u0669\u0820.1.\u0FB6ss; [B1, B5, B6, V5, V6]; 0.xn--iib29f26o.1.xn--ss-1sj; ; ; # 0.Ⴄ٩ࠠ.1.ྶss
0.ⴄ\u0669\u0820。1.\u0FB6ss; 0.ⴄ\u0669\u0820.1.\u0FB6ss; [B1, B5, B6, V5]; 0.xn--iib29fp25e.1.xn--ss-1sj; ; ; # 0.ⴄ٩ࠠ.1.ྶss
-0.Ⴄ\u0669\u0820。1.\u0FB6Ss; 0.Ⴄ\u0669\u0820.1.\u0FB6ss; [B1, B5, B6, P1, V5, V6]; 0.xn--iib29f26o.1.xn--ss-1sj; ; ; # 0.Ⴄ٩ࠠ.1.ྶss
+0.Ⴄ\u0669\u0820。1.\u0FB6Ss; 0.Ⴄ\u0669\u0820.1.\u0FB6ss; [B1, B5, B6, V5, V6]; 0.xn--iib29f26o.1.xn--ss-1sj; ; ; # 0.Ⴄ٩ࠠ.1.ྶss
0.xn--iib29f26o.1.xn--ss-1sj; 0.Ⴄ\u0669\u0820.1.\u0FB6ss; [B1, B5, B6, V5, V6]; 0.xn--iib29f26o.1.xn--ss-1sj; ; ; # 0.Ⴄ٩ࠠ.1.ྶss
0.xn--iib29fp25e.1.xn--ss-1sj; 0.ⴄ\u0669\u0820.1.\u0FB6ss; [B1, B5, B6, V5]; 0.xn--iib29fp25e.1.xn--ss-1sj; ; ; # 0.ⴄ٩ࠠ.1.ྶss
0.xn--iib29fp25e.1.xn--zca117e; 0.ⴄ\u0669\u0820.1.\u0FB6ß; [B1, B5, B6, V5]; 0.xn--iib29fp25e.1.xn--zca117e; ; ; # 0.ⴄ٩ࠠ.1.ྶß
0.xn--iib29f26o.1.xn--zca117e; 0.Ⴄ\u0669\u0820.1.\u0FB6ß; [B1, B5, B6, V5, V6]; 0.xn--iib29f26o.1.xn--zca117e; ; ; # 0.Ⴄ٩ࠠ.1.ྶß
-🄀ⴄ\u0669\u0820。⒈\u0FB6ß; 🄀ⴄ\u0669\u0820.⒈\u0FB6ß; [B1, P1, V6]; xn--iib29fp25e0219a.xn--zca117e3vp; ; xn--iib29fp25e0219a.xn--ss-1sj588o; # 🄀ⴄ٩ࠠ.⒈ྶß
-🄀Ⴄ\u0669\u0820。⒈\u0FB6SS; 🄀Ⴄ\u0669\u0820.⒈\u0FB6ss; [B1, P1, V6]; xn--iib29f26o6n43c.xn--ss-1sj588o; ; ; # 🄀Ⴄ٩ࠠ.⒈ྶss
-🄀ⴄ\u0669\u0820。⒈\u0FB6ss; 🄀ⴄ\u0669\u0820.⒈\u0FB6ss; [B1, P1, V6]; xn--iib29fp25e0219a.xn--ss-1sj588o; ; ; # 🄀ⴄ٩ࠠ.⒈ྶss
-🄀Ⴄ\u0669\u0820。⒈\u0FB6Ss; 🄀Ⴄ\u0669\u0820.⒈\u0FB6ss; [B1, P1, V6]; xn--iib29f26o6n43c.xn--ss-1sj588o; ; ; # 🄀Ⴄ٩ࠠ.⒈ྶss
+🄀ⴄ\u0669\u0820。⒈\u0FB6ß; 🄀ⴄ\u0669\u0820.⒈\u0FB6ß; [B1, V6]; xn--iib29fp25e0219a.xn--zca117e3vp; ; xn--iib29fp25e0219a.xn--ss-1sj588o; # 🄀ⴄ٩ࠠ.⒈ྶß
+🄀Ⴄ\u0669\u0820。⒈\u0FB6SS; 🄀Ⴄ\u0669\u0820.⒈\u0FB6ss; [B1, V6]; xn--iib29f26o6n43c.xn--ss-1sj588o; ; ; # 🄀Ⴄ٩ࠠ.⒈ྶss
+🄀ⴄ\u0669\u0820。⒈\u0FB6ss; 🄀ⴄ\u0669\u0820.⒈\u0FB6ss; [B1, V6]; xn--iib29fp25e0219a.xn--ss-1sj588o; ; ; # 🄀ⴄ٩ࠠ.⒈ྶss
+🄀Ⴄ\u0669\u0820。⒈\u0FB6Ss; 🄀Ⴄ\u0669\u0820.⒈\u0FB6ss; [B1, V6]; xn--iib29f26o6n43c.xn--ss-1sj588o; ; ; # 🄀Ⴄ٩ࠠ.⒈ྶss
xn--iib29f26o6n43c.xn--ss-1sj588o; 🄀Ⴄ\u0669\u0820.⒈\u0FB6ss; [B1, V6]; xn--iib29f26o6n43c.xn--ss-1sj588o; ; ; # 🄀Ⴄ٩ࠠ.⒈ྶss
xn--iib29fp25e0219a.xn--ss-1sj588o; 🄀ⴄ\u0669\u0820.⒈\u0FB6ss; [B1, V6]; xn--iib29fp25e0219a.xn--ss-1sj588o; ; ; # 🄀ⴄ٩ࠠ.⒈ྶss
xn--iib29fp25e0219a.xn--zca117e3vp; 🄀ⴄ\u0669\u0820.⒈\u0FB6ß; [B1, V6]; xn--iib29fp25e0219a.xn--zca117e3vp; ; ; # 🄀ⴄ٩ࠠ.⒈ྶß
xn--iib29f26o6n43c.xn--zca117e3vp; 🄀Ⴄ\u0669\u0820.⒈\u0FB6ß; [B1, V6]; xn--iib29f26o6n43c.xn--zca117e3vp; ; ; # 🄀Ⴄ٩ࠠ.⒈ྶß
-≠.\u200C-\u066B; ; [B1, C1, P1, V6]; xn--1ch.xn----vqc597q; ; xn--1ch.xn----vqc; [B1, P1, V3, V6] # ≠.-٫
-=\u0338.\u200C-\u066B; ≠.\u200C-\u066B; [B1, C1, P1, V6]; xn--1ch.xn----vqc597q; ; xn--1ch.xn----vqc; [B1, P1, V3, V6] # ≠.-٫
-xn--1ch.xn----vqc; ≠.-\u066B; [B1, V3, V6]; xn--1ch.xn----vqc; ; ; # ≠.-٫
-xn--1ch.xn----vqc597q; ≠.\u200C-\u066B; [B1, C1, V6]; xn--1ch.xn----vqc597q; ; ; # ≠.-٫
-\u0660۱。󠳶ðž \u0665; \u0660Û±.󠳶ðž \u0665; [B1, P1, V6]; xn--8hb40a.xn--eib7967vner3e; ; ; # Ù Û±.ðž Ù¥
-\u0660۱。󠳶ðž \u0665; \u0660Û±.󠳶ðž \u0665; [B1, P1, V6]; xn--8hb40a.xn--eib7967vner3e; ; ; # Ù Û±.ðž Ù¥
+≠.\u200C-\u066B; ; [B1, C1]; xn--1ch.xn----vqc597q; ; xn--1ch.xn----vqc; [B1, V3] # ≠.-٫
+=\u0338.\u200C-\u066B; ≠.\u200C-\u066B; [B1, C1]; xn--1ch.xn----vqc597q; ; xn--1ch.xn----vqc; [B1, V3] # ≠.-٫
+xn--1ch.xn----vqc; ≠.-\u066B; [B1, V3]; xn--1ch.xn----vqc; ; ; # ≠.-٫
+xn--1ch.xn----vqc597q; ≠.\u200C-\u066B; [B1, C1]; xn--1ch.xn----vqc597q; ; ; # ≠.-٫
+\u0660۱。󠳶ðž \u0665; \u0660Û±.󠳶ðž \u0665; [B1, V6]; xn--8hb40a.xn--eib7967vner3e; ; ; # Ù Û±.ðž Ù¥
+\u0660۱。󠳶ðž \u0665; \u0660Û±.󠳶ðž \u0665; [B1, V6]; xn--8hb40a.xn--eib7967vner3e; ; ; # Ù Û±.ðž Ù¥
xn--8hb40a.xn--eib7967vner3e; \u0660Û±.󠳶ðž \u0665; [B1, V6]; xn--8hb40a.xn--eib7967vner3e; ; ; # Ù Û±.ðž Ù¥
-\u200C\u0663⒖。󱅉𽷛\u1BF3; \u200C\u0663⒖.󱅉𽷛\u1BF3; [B1, C1, P1, V6]; xn--cib152kwgd.xn--1zf13512buy41d; ; xn--cib675m.xn--1zf13512buy41d; [B1, P1, V6] # ٣⒖.᯳
-\u200C\u066315.。󱅉𽷛\u1BF3; \u200C\u066315..󱅉𽷛\u1BF3; [B1, C1, P1, V6, X4_2]; xn--15-gyd983x..xn--1zf13512buy41d; [B1, C1, P1, V6, A4_2]; xn--15-gyd..xn--1zf13512buy41d; [B1, P1, V6, A4_2] # ٣15..᯳
+\u200C\u0663⒖。󱅉𽷛\u1BF3; \u200C\u0663⒖.󱅉𽷛\u1BF3; [B1, C1, V6]; xn--cib152kwgd.xn--1zf13512buy41d; ; xn--cib675m.xn--1zf13512buy41d; [B1, V6] # ٣⒖.᯳
+\u200C\u066315.。󱅉𽷛\u1BF3; \u200C\u066315..󱅉𽷛\u1BF3; [B1, C1, V6, X4_2]; xn--15-gyd983x..xn--1zf13512buy41d; [B1, C1, V6, A4_2]; xn--15-gyd..xn--1zf13512buy41d; [B1, V6, A4_2] # ٣15..᯳
xn--15-gyd..xn--1zf13512buy41d; \u066315..󱅉𽷛\u1BF3; [B1, V6, X4_2]; xn--15-gyd..xn--1zf13512buy41d; [B1, V6, A4_2]; ; # ٣15..᯳
xn--15-gyd983x..xn--1zf13512buy41d; \u200C\u066315..󱅉𽷛\u1BF3; [B1, C1, V6, X4_2]; xn--15-gyd983x..xn--1zf13512buy41d; [B1, C1, V6, A4_2]; ; # ٣15..᯳
xn--cib675m.xn--1zf13512buy41d; \u0663⒖.󱅉𽷛\u1BF3; [B1, V6]; xn--cib675m.xn--1zf13512buy41d; ; ; # ٣⒖.᯳
xn--cib152kwgd.xn--1zf13512buy41d; \u200C\u0663⒖.󱅉𽷛\u1BF3; [B1, C1, V6]; xn--cib152kwgd.xn--1zf13512buy41d; ; ; # ٣⒖.᯳
-\u1BF3.-逋񳦭󙙮; ; [P1, V3, V5, V6]; xn--1zf.xn----483d46987byr50b; ; ; # ᯳.-逋
+\u1BF3.-逋񳦭󙙮; ; [V3, V5, V6]; xn--1zf.xn----483d46987byr50b; ; ; # ᯳.-逋
xn--1zf.xn----483d46987byr50b; \u1BF3.-逋񳦭󙙮; [V3, V5, V6]; xn--1zf.xn----483d46987byr50b; ; ; # ᯳.-逋
-\u0756。\u3164\u200Dς; \u0756.\u3164\u200Dς; [C2, P1, V6]; xn--9ob.xn--3xa995lq2l; ; xn--9ob.xn--4xa574u; [P1, V6] # ݖ.ς
-\u0756。\u1160\u200Dς; \u0756.\u1160\u200Dς; [C2, P1, V6]; xn--9ob.xn--3xa580ebol; ; xn--9ob.xn--4xa380e; [P1, V6] # ݖ.ς
-\u0756。\u1160\u200DΣ; \u0756.\u1160\u200Dσ; [C2, P1, V6]; xn--9ob.xn--4xa380ebol; ; xn--9ob.xn--4xa380e; [P1, V6] # ݖ.σ
-\u0756。\u1160\u200Dσ; \u0756.\u1160\u200Dσ; [C2, P1, V6]; xn--9ob.xn--4xa380ebol; ; xn--9ob.xn--4xa380e; [P1, V6] # ݖ.σ
+\u0756。\u3164\u200Dς; \u0756.\u3164\u200Dς; [C2, V6]; xn--9ob.xn--3xa995lq2l; ; xn--9ob.xn--4xa574u; [V6] # ݖ.ς
+\u0756。\u1160\u200Dς; \u0756.\u1160\u200Dς; [C2, V6]; xn--9ob.xn--3xa580ebol; ; xn--9ob.xn--4xa380e; [V6] # ݖ.ς
+\u0756。\u1160\u200DΣ; \u0756.\u1160\u200Dσ; [C2, V6]; xn--9ob.xn--4xa380ebol; ; xn--9ob.xn--4xa380e; [V6] # ݖ.σ
+\u0756。\u1160\u200Dσ; \u0756.\u1160\u200Dσ; [C2, V6]; xn--9ob.xn--4xa380ebol; ; xn--9ob.xn--4xa380e; [V6] # ݖ.σ
xn--9ob.xn--4xa380e; \u0756.\u1160σ; [V6]; xn--9ob.xn--4xa380e; ; ; # ݖ.σ
xn--9ob.xn--4xa380ebol; \u0756.\u1160\u200Dσ; [C2, V6]; xn--9ob.xn--4xa380ebol; ; ; # ݖ.σ
xn--9ob.xn--3xa580ebol; \u0756.\u1160\u200DÏ‚; [C2, V6]; xn--9ob.xn--3xa580ebol; ; ; # Ý–.Ï‚
-\u0756。\u3164\u200DΣ; \u0756.\u3164\u200Dσ; [C2, P1, V6]; xn--9ob.xn--4xa795lq2l; ; xn--9ob.xn--4xa574u; [P1, V6] # ݖ.σ
-\u0756。\u3164\u200Dσ; \u0756.\u3164\u200Dσ; [C2, P1, V6]; xn--9ob.xn--4xa795lq2l; ; xn--9ob.xn--4xa574u; [P1, V6] # ݖ.σ
+\u0756。\u3164\u200DΣ; \u0756.\u3164\u200Dσ; [C2, V6]; xn--9ob.xn--4xa795lq2l; ; xn--9ob.xn--4xa574u; [V6] # ݖ.σ
+\u0756。\u3164\u200Dσ; \u0756.\u3164\u200Dσ; [C2, V6]; xn--9ob.xn--4xa795lq2l; ; xn--9ob.xn--4xa574u; [V6] # ݖ.σ
xn--9ob.xn--4xa574u; \u0756.\u3164σ; [V6]; xn--9ob.xn--4xa574u; ; ; # ݖ.σ
xn--9ob.xn--4xa795lq2l; \u0756.\u3164\u200Dσ; [C2, V6]; xn--9ob.xn--4xa795lq2l; ; ; # ݖ.σ
xn--9ob.xn--3xa995lq2l; \u0756.\u3164\u200DÏ‚; [C2, V6]; xn--9ob.xn--3xa995lq2l; ; ; # Ý–.Ï‚
-ᡆႣ。󞢧\u0315\u200D\u200D; ᡆႣ.󞢧\u0315\u200D\u200D; [C2, P1, V6]; xn--bnd320b.xn--5sa649la993427a; ; xn--bnd320b.xn--5sa98523p; [P1, V6] # ᡆႣ.̕
-ᡆႣ。󞢧\u0315\u200D\u200D; ᡆႣ.󞢧\u0315\u200D\u200D; [C2, P1, V6]; xn--bnd320b.xn--5sa649la993427a; ; xn--bnd320b.xn--5sa98523p; [P1, V6] # ᡆႣ.̕
-ᡆⴃ。󞢧\u0315\u200D\u200D; ᡆⴃ.󞢧\u0315\u200D\u200D; [C2, P1, V6]; xn--57e237h.xn--5sa649la993427a; ; xn--57e237h.xn--5sa98523p; [P1, V6] # ᡆⴃ.̕
+ᡆႣ。󞢧\u0315\u200D\u200D; ᡆႣ.󞢧\u0315\u200D\u200D; [C2, V6]; xn--bnd320b.xn--5sa649la993427a; ; xn--bnd320b.xn--5sa98523p; [V6] # ᡆႣ.̕
+ᡆႣ。󞢧\u0315\u200D\u200D; ᡆႣ.󞢧\u0315\u200D\u200D; [C2, V6]; xn--bnd320b.xn--5sa649la993427a; ; xn--bnd320b.xn--5sa98523p; [V6] # ᡆႣ.̕
+ᡆⴃ。󞢧\u0315\u200D\u200D; ᡆⴃ.󞢧\u0315\u200D\u200D; [C2, V6]; xn--57e237h.xn--5sa649la993427a; ; xn--57e237h.xn--5sa98523p; [V6] # ᡆⴃ.̕
xn--57e237h.xn--5sa98523p; ᡆⴃ.󞢧\u0315; [V6]; xn--57e237h.xn--5sa98523p; ; ; # ᡆⴃ.̕
xn--57e237h.xn--5sa649la993427a; ᡆⴃ.󞢧\u0315\u200D\u200D; [C2, V6]; xn--57e237h.xn--5sa649la993427a; ; ; # ᡆⴃ.̕
xn--bnd320b.xn--5sa98523p; ᡆႣ.󞢧\u0315; [V6]; xn--bnd320b.xn--5sa98523p; ; ; # ᡆႣ.̕
xn--bnd320b.xn--5sa649la993427a; ᡆႣ.󞢧\u0315\u200D\u200D; [C2, V6]; xn--bnd320b.xn--5sa649la993427a; ; ; # ᡆႣ.̕
-ᡆⴃ。󞢧\u0315\u200D\u200D; ᡆⴃ.󞢧\u0315\u200D\u200D; [C2, P1, V6]; xn--57e237h.xn--5sa649la993427a; ; xn--57e237h.xn--5sa98523p; [P1, V6] # ᡆⴃ.̕
+ᡆⴃ。󞢧\u0315\u200D\u200D; ᡆⴃ.󞢧\u0315\u200D\u200D; [C2, V6]; xn--57e237h.xn--5sa649la993427a; ; xn--57e237h.xn--5sa98523p; [V6] # ᡆⴃ.̕
ã­„\u200D\u084F𑚵.ςð®®\u200C\u200D; ã­„\u200D\u084Fð‘šµ.Ï‚ð®®\u200C\u200D; [B5, B6, C1, C2]; xn--ewb962jfitku4r.xn--3xa895lda6932v; ; xn--ewb302xhu1l.xn--4xa0426k; [B5, B6] # ã­„à¡ð‘šµ.Ï‚ð®®
ã­„\u200D\u084Fð‘šµ.Ï‚ð®®\u200C\u200D; ; [B5, B6, C1, C2]; xn--ewb962jfitku4r.xn--3xa895lda6932v; ; xn--ewb302xhu1l.xn--4xa0426k; [B5, B6] # ã­„à¡ð‘šµ.Ï‚ð®®
ã­„\u200D\u084Fð‘šµ.Σð®®\u200C\u200D; ã­„\u200D\u084Fð‘šµ.σð®®\u200C\u200D; [B5, B6, C1, C2]; xn--ewb962jfitku4r.xn--4xa695lda6932v; ; xn--ewb302xhu1l.xn--4xa0426k; [B5, B6] # ã­„à¡ð‘šµ.σð®®
@@ -1169,190 +1175,190 @@ xn--ewb962jfitku4r.xn--4xa695lda6932v; ã­„\u200D\u084Fð‘šµ.σð®®\u200C\u200D; [
xn--ewb962jfitku4r.xn--3xa895lda6932v; ã­„\u200D\u084Fð‘šµ.Ï‚ð®®\u200C\u200D; [B5, B6, C1, C2]; xn--ewb962jfitku4r.xn--3xa895lda6932v; ; ; # ã­„à¡ð‘šµ.Ï‚ð®®
ã­„\u200D\u084F𑚵.Σð®®\u200C\u200D; ã­„\u200D\u084Fð‘šµ.σð®®\u200C\u200D; [B5, B6, C1, C2]; xn--ewb962jfitku4r.xn--4xa695lda6932v; ; xn--ewb302xhu1l.xn--4xa0426k; [B5, B6] # ã­„à¡ð‘šµ.σð®®
ã­„\u200D\u084F𑚵.σð®®\u200C\u200D; ã­„\u200D\u084Fð‘šµ.σð®®\u200C\u200D; [B5, B6, C1, C2]; xn--ewb962jfitku4r.xn--4xa695lda6932v; ; xn--ewb302xhu1l.xn--4xa0426k; [B5, B6] # ã­„à¡ð‘šµ.σð®®
-\u17B5。𞯸ꡀ🄋; \u17B5.𞯸ꡀ🄋; [B1, B2, B3, B6, P1, V5, V6]; xn--03e.xn--8b9ar252dngd; ; ; # .ꡀ🄋
-xn--03e.xn--8b9ar252dngd; \u17B5.𞯸ꡀ🄋; [B1, B2, B3, B6, V5, V6]; xn--03e.xn--8b9ar252dngd; ; ; # .ꡀ🄋
-óªºæš‘.⾑\u0668; óªºæš‘.襾\u0668; [B5, B6, P1, V6]; xn--tlvq3513e.xn--hib9228d; ; ; # æš‘.襾٨
-óªºæš‘.襾\u0668; ; [B5, B6, P1, V6]; xn--tlvq3513e.xn--hib9228d; ; ; # æš‘.襾٨
+\u17B5。𞯸ꡀ🄋; \u17B5.𞯸ꡀ🄋; [B1, B2, B3, V5, V6]; xn--03e.xn--8b9ar252dngd; ; ; # .ꡀ🄋
+xn--03e.xn--8b9ar252dngd; \u17B5.𞯸ꡀ🄋; [B1, B2, B3, V5, V6]; xn--03e.xn--8b9ar252dngd; ; ; # .ꡀ🄋
+óªºæš‘.⾑\u0668; óªºæš‘.襾\u0668; [B5, B6, V6]; xn--tlvq3513e.xn--hib9228d; ; ; # æš‘.襾٨
+óªºæš‘.襾\u0668; ; [B5, B6, V6]; xn--tlvq3513e.xn--hib9228d; ; ; # æš‘.襾٨
xn--tlvq3513e.xn--hib9228d; óªºæš‘.襾\u0668; [B5, B6, V6]; xn--tlvq3513e.xn--hib9228d; ; ; # æš‘.襾٨
-󠄚≯ꡢ。\u0891\u1DFF; ≯ꡢ.\u0891\u1DFF; [B1, P1, V6]; xn--hdh7783c.xn--9xb680i; ; ; # ≯ꡢ.᷿
-󠄚>\u0338ꡢ。\u0891\u1DFF; ≯ꡢ.\u0891\u1DFF; [B1, P1, V6]; xn--hdh7783c.xn--9xb680i; ; ; # ≯ꡢ.᷿
+󠄚≯ꡢ。\u0891\u1DFF; ≯ꡢ.\u0891\u1DFF; [B1, V6]; xn--hdh7783c.xn--9xb680i; ; ; # ≯ꡢ.᷿
+󠄚>\u0338ꡢ。\u0891\u1DFF; ≯ꡢ.\u0891\u1DFF; [B1, V6]; xn--hdh7783c.xn--9xb680i; ; ; # ≯ꡢ.᷿
xn--hdh7783c.xn--9xb680i; ≯ꡢ.\u0891\u1DFF; [B1, V6]; xn--hdh7783c.xn--9xb680i; ; ; # ≯ꡢ.᷿
-\uFDC3ð®±\u0B4Dð¨¿.ó§¤á‚·; \u0643\u0645\u0645ð®±\u0B4Dð¨¿.ó§¤á‚·; [B2, B3, P1, V6]; xn--fhbea662czx68a2tju.xn--vnd55511o; ; ; # كممð®±à­ð¨¿.á‚·
-\u0643\u0645\u0645ð®±\u0B4Dð¨¿.ó§¤á‚·; ; [B2, B3, P1, V6]; xn--fhbea662czx68a2tju.xn--vnd55511o; ; ; # كممð®±à­ð¨¿.á‚·
-\u0643\u0645\u0645ð®±\u0B4Dð¨¿.ó§¤â´—; ; [B2, B3, P1, V6]; xn--fhbea662czx68a2tju.xn--fljz2846h; ; ; # كممð®±à­ð¨¿.â´—
+\uFDC3ð®±\u0B4Dð¨¿.ó§¤á‚·; \u0643\u0645\u0645ð®±\u0B4Dð¨¿.ó§¤á‚·; [B2, B3, V6]; xn--fhbea662czx68a2tju.xn--vnd55511o; ; ; # كممð®±à­ð¨¿.á‚·
+\u0643\u0645\u0645ð®±\u0B4Dð¨¿.ó§¤á‚·; ; [B2, B3, V6]; xn--fhbea662czx68a2tju.xn--vnd55511o; ; ; # كممð®±à­ð¨¿.á‚·
+\u0643\u0645\u0645ð®±\u0B4Dð¨¿.ó§¤â´—; ; [B2, B3, V6]; xn--fhbea662czx68a2tju.xn--fljz2846h; ; ; # كممð®±à­ð¨¿.â´—
xn--fhbea662czx68a2tju.xn--fljz2846h; \u0643\u0645\u0645ð®±\u0B4Dð¨¿.ó§¤â´—; [B2, B3, V6]; xn--fhbea662czx68a2tju.xn--fljz2846h; ; ; # كممð®±à­ð¨¿.â´—
xn--fhbea662czx68a2tju.xn--vnd55511o; \u0643\u0645\u0645ð®±\u0B4Dð¨¿.ó§¤á‚·; [B2, B3, V6]; xn--fhbea662czx68a2tju.xn--vnd55511o; ; ; # كممð®±à­ð¨¿.á‚·
-\uFDC3ð®±\u0B4Dð¨¿.ó§¤â´—; \u0643\u0645\u0645ð®±\u0B4Dð¨¿.ó§¤â´—; [B2, B3, P1, V6]; xn--fhbea662czx68a2tju.xn--fljz2846h; ; ; # كممð®±à­ð¨¿.â´—
-𞀨。\u1B44򡛨𞎇; 𞀨.\u1B44򡛨𞎇; [P1, V5, V6]; xn--mi4h.xn--1uf6843smg20c; ; ; # 𞀨.᭄
-𞀨。\u1B44򡛨𞎇; 𞀨.\u1B44򡛨𞎇; [P1, V5, V6]; xn--mi4h.xn--1uf6843smg20c; ; ; # 𞀨.᭄
+\uFDC3ð®±\u0B4Dð¨¿.ó§¤â´—; \u0643\u0645\u0645ð®±\u0B4Dð¨¿.ó§¤â´—; [B2, B3, V6]; xn--fhbea662czx68a2tju.xn--fljz2846h; ; ; # كممð®±à­ð¨¿.â´—
+𞀨。\u1B44򡛨𞎇; 𞀨.\u1B44򡛨𞎇; [V5, V6]; xn--mi4h.xn--1uf6843smg20c; ; ; # 𞀨.᭄
+𞀨。\u1B44򡛨𞎇; 𞀨.\u1B44򡛨𞎇; [V5, V6]; xn--mi4h.xn--1uf6843smg20c; ; ; # 𞀨.᭄
xn--mi4h.xn--1uf6843smg20c; 𞀨.\u1B44򡛨𞎇; [V5, V6]; xn--mi4h.xn--1uf6843smg20c; ; ; # 𞀨.᭄
-ó £¼\u200C.ðº°\u200Cá¡Ÿ; ó £¼\u200C.ðº°\u200Cá¡Ÿ; [B1, B2, B3, C1, P1, V6]; xn--0ug18531l.xn--v8e340bp21t; ; xn--q046e.xn--v8e7227j; [B1, B2, B3, P1, V6] # .ðº°á¡Ÿ
-ó £¼\u200C.ðº°\u200Cá¡Ÿ; ; [B1, B2, B3, C1, P1, V6]; xn--0ug18531l.xn--v8e340bp21t; ; xn--q046e.xn--v8e7227j; [B1, B2, B3, P1, V6] # .ðº°á¡Ÿ
+ó £¼\u200C.ðº°\u200Cá¡Ÿ; ó £¼\u200C.ðº°\u200Cá¡Ÿ; [B1, B2, B3, C1, V6]; xn--0ug18531l.xn--v8e340bp21t; ; xn--q046e.xn--v8e7227j; [B1, B2, B3, V6] # .ðº°á¡Ÿ
+ó £¼\u200C.ðº°\u200Cá¡Ÿ; ; [B1, B2, B3, C1, V6]; xn--0ug18531l.xn--v8e340bp21t; ; xn--q046e.xn--v8e7227j; [B1, B2, B3, V6] # .ðº°á¡Ÿ
xn--q046e.xn--v8e7227j; ó £¼.ðº°á¡Ÿ; [B1, B2, B3, V6]; xn--q046e.xn--v8e7227j; ; ; # .ðº°á¡Ÿ
xn--0ug18531l.xn--v8e340bp21t; ó £¼\u200C.ðº°\u200Cá¡Ÿ; [B1, B2, B3, C1, V6]; xn--0ug18531l.xn--v8e340bp21t; ; ; # .ðº°á¡Ÿ
-ᢛ󨅟ß.ጧ; ; [P1, V6]; xn--zca562jc642x.xn--p5d; ; xn--ss-7dp66033t.xn--p5d; # ᢛß.ጧ
-ᢛ󨅟SS.ጧ; ᢛ󨅟ss.ጧ; [P1, V6]; xn--ss-7dp66033t.xn--p5d; ; ; # ᢛss.ጧ
-ᢛ󨅟ss.ጧ; ; [P1, V6]; xn--ss-7dp66033t.xn--p5d; ; ; # ᢛss.ጧ
-ᢛ󨅟Ss.ጧ; ᢛ󨅟ss.ጧ; [P1, V6]; xn--ss-7dp66033t.xn--p5d; ; ; # ᢛss.ጧ
+ᢛ󨅟ß.ጧ; ; [V6]; xn--zca562jc642x.xn--p5d; ; xn--ss-7dp66033t.xn--p5d; # ᢛß.ጧ
+ᢛ󨅟SS.ጧ; ᢛ󨅟ss.ጧ; [V6]; xn--ss-7dp66033t.xn--p5d; ; ; # ᢛss.ጧ
+ᢛ󨅟ss.ጧ; ; [V6]; xn--ss-7dp66033t.xn--p5d; ; ; # ᢛss.ጧ
+ᢛ󨅟Ss.ጧ; ᢛ󨅟ss.ጧ; [V6]; xn--ss-7dp66033t.xn--p5d; ; ; # ᢛss.ጧ
xn--ss-7dp66033t.xn--p5d; ᢛ󨅟ss.ጧ; [V6]; xn--ss-7dp66033t.xn--p5d; ; ; # ᢛss.ጧ
xn--zca562jc642x.xn--p5d; ᢛ󨅟ß.ጧ; [V6]; xn--zca562jc642x.xn--p5d; ; ; # ᢛß.ጧ
-â®’\u200C.ñ’š—\u200C; ; [C1, P1, V6]; xn--0ugx66b.xn--0ugz2871c; ; xn--b9i.xn--5p9y; [P1, V6] # â®’.
+â®’\u200C.ñ’š—\u200C; ; [C1, V6]; xn--0ugx66b.xn--0ugz2871c; ; xn--b9i.xn--5p9y; [V6] # â®’.
xn--b9i.xn--5p9y; â®’.ñ’š—; [V6]; xn--b9i.xn--5p9y; ; ; # â®’.
xn--0ugx66b.xn--0ugz2871c; â®’\u200C.ñ’š—\u200C; [C1, V6]; xn--0ugx66b.xn--0ugz2871c; ; ; # â®’.
-𞤂ñ¹žð¹¯ã€‚Ⴜ; 𞤤ñ¹žð¹¯.Ⴜ; [B2, P1, V6]; xn--no0dr648a51o3b.xn--0nd; ; ; # 𞤤ð¹¯.Ⴜ
-𞤤ñ¹žð¹¯ã€‚â´œ; 𞤤ñ¹žð¹¯.â´œ; [B2, P1, V6]; xn--no0dr648a51o3b.xn--klj; ; ; # 𞤤ð¹¯.â´œ
+𞤂ñ¹žð¹¯ã€‚Ⴜ; 𞤤ñ¹žð¹¯.Ⴜ; [B2, V6]; xn--no0dr648a51o3b.xn--0nd; ; ; # 𞤤ð¹¯.Ⴜ
+𞤤ñ¹žð¹¯ã€‚â´œ; 𞤤ñ¹žð¹¯.â´œ; [B2, V6]; xn--no0dr648a51o3b.xn--klj; ; ; # 𞤤ð¹¯.â´œ
xn--no0dr648a51o3b.xn--klj; 𞤤ñ¹žð¹¯.â´œ; [B2, V6]; xn--no0dr648a51o3b.xn--klj; ; ; # 𞤤ð¹¯.â´œ
xn--no0dr648a51o3b.xn--0nd; 𞤤ñ¹žð¹¯.Ⴜ; [B2, V6]; xn--no0dr648a51o3b.xn--0nd; ; ; # 𞤤ð¹¯.Ⴜ
-𞤂ñ¹žð¹¯ã€‚â´œ; 𞤤ñ¹žð¹¯.â´œ; [B2, P1, V6]; xn--no0dr648a51o3b.xn--klj; ; ; # 𞤤ð¹¯.â´œ
-ð¹µâ®£\u200C𑄰。ñ·´¿\uFCB7; ð¹µâ®£\u200Cð‘„°.ñ·´¿\u0636\u0645; [B1, B5, B6, C1, P1, V6]; xn--0ug586bcj8p7jc.xn--1gb4a66004i; ; xn--s9i5458e7yb.xn--1gb4a66004i; [B1, B5, B6, P1, V6] # ð¹µâ®£ð‘„°.ضم
-ð¹µâ®£\u200C𑄰。ñ·´¿\u0636\u0645; ð¹µâ®£\u200Cð‘„°.ñ·´¿\u0636\u0645; [B1, B5, B6, C1, P1, V6]; xn--0ug586bcj8p7jc.xn--1gb4a66004i; ; xn--s9i5458e7yb.xn--1gb4a66004i; [B1, B5, B6, P1, V6] # ð¹µâ®£ð‘„°.ضم
+𞤂ñ¹žð¹¯ã€‚â´œ; 𞤤ñ¹žð¹¯.â´œ; [B2, V6]; xn--no0dr648a51o3b.xn--klj; ; ; # 𞤤ð¹¯.â´œ
+ð¹µâ®£\u200C𑄰。ñ·´¿\uFCB7; ð¹µâ®£\u200Cð‘„°.ñ·´¿\u0636\u0645; [B1, B5, B6, C1, V6]; xn--0ug586bcj8p7jc.xn--1gb4a66004i; ; xn--s9i5458e7yb.xn--1gb4a66004i; [B1, B5, B6, V6] # ð¹µâ®£ð‘„°.ضم
+ð¹µâ®£\u200C𑄰。ñ·´¿\u0636\u0645; ð¹µâ®£\u200Cð‘„°.ñ·´¿\u0636\u0645; [B1, B5, B6, C1, V6]; xn--0ug586bcj8p7jc.xn--1gb4a66004i; ; xn--s9i5458e7yb.xn--1gb4a66004i; [B1, B5, B6, V6] # ð¹µâ®£ð‘„°.ضم
xn--s9i5458e7yb.xn--1gb4a66004i; ð¹µâ®£ð‘„°.ñ·´¿\u0636\u0645; [B1, B5, B6, V6]; xn--s9i5458e7yb.xn--1gb4a66004i; ; ; # ð¹µâ®£ð‘„°.ضم
xn--0ug586bcj8p7jc.xn--1gb4a66004i; ð¹µâ®£\u200Cð‘„°.ñ·´¿\u0636\u0645; [B1, B5, B6, C1, V6]; xn--0ug586bcj8p7jc.xn--1gb4a66004i; ; ; # ð¹µâ®£ð‘„°.ضم
-Ⴒ。デß𞤵\u0C4D; Ⴒ.デß𞤵\u0C4D; [B5, B6, P1, V6]; xn--qnd.xn--zca669cmr3a0f28a; ; xn--qnd.xn--ss-9nh3648ahh20b; # Ⴒ.デß𞤵à±
-Ⴒ。テ\u3099ß𞤵\u0C4D; Ⴒ.デß𞤵\u0C4D; [B5, B6, P1, V6]; xn--qnd.xn--zca669cmr3a0f28a; ; xn--qnd.xn--ss-9nh3648ahh20b; # Ⴒ.デß𞤵à±
+Ⴒ。デß𞤵\u0C4D; Ⴒ.デß𞤵\u0C4D; [B5, B6, V6]; xn--qnd.xn--zca669cmr3a0f28a; ; xn--qnd.xn--ss-9nh3648ahh20b; # Ⴒ.デß𞤵à±
+Ⴒ。テ\u3099ß𞤵\u0C4D; Ⴒ.デß𞤵\u0C4D; [B5, B6, V6]; xn--qnd.xn--zca669cmr3a0f28a; ; xn--qnd.xn--ss-9nh3648ahh20b; # Ⴒ.デß𞤵à±
ⴒ。テ\u3099ß𞤵\u0C4D; â´’.デß𞤵\u0C4D; [B5, B6]; xn--9kj.xn--zca669cmr3a0f28a; ; xn--9kj.xn--ss-9nh3648ahh20b; # â´’.デß𞤵à±
ⴒ。デß𞤵\u0C4D; â´’.デß𞤵\u0C4D; [B5, B6]; xn--9kj.xn--zca669cmr3a0f28a; ; xn--9kj.xn--ss-9nh3648ahh20b; # â´’.デß𞤵à±
-Ⴒ。デSS𞤓\u0C4D; Ⴒ.デss𞤵\u0C4D; [B5, B6, P1, V6]; xn--qnd.xn--ss-9nh3648ahh20b; ; ; # Ⴒ.デss𞤵à±
-Ⴒ。テ\u3099SS𞤓\u0C4D; Ⴒ.デss𞤵\u0C4D; [B5, B6, P1, V6]; xn--qnd.xn--ss-9nh3648ahh20b; ; ; # Ⴒ.デss𞤵à±
+Ⴒ。デSS𞤓\u0C4D; Ⴒ.デss𞤵\u0C4D; [B5, B6, V6]; xn--qnd.xn--ss-9nh3648ahh20b; ; ; # Ⴒ.デss𞤵à±
+Ⴒ。テ\u3099SS𞤓\u0C4D; Ⴒ.デss𞤵\u0C4D; [B5, B6, V6]; xn--qnd.xn--ss-9nh3648ahh20b; ; ; # Ⴒ.デss𞤵à±
ⴒ。テ\u3099ss𞤵\u0C4D; â´’.デss𞤵\u0C4D; [B5, B6]; xn--9kj.xn--ss-9nh3648ahh20b; ; ; # â´’.デss𞤵à±
ⴒ。デss𞤵\u0C4D; â´’.デss𞤵\u0C4D; [B5, B6]; xn--9kj.xn--ss-9nh3648ahh20b; ; ; # â´’.デss𞤵à±
-Ⴒ。デSs𞤵\u0C4D; Ⴒ.デss𞤵\u0C4D; [B5, B6, P1, V6]; xn--qnd.xn--ss-9nh3648ahh20b; ; ; # Ⴒ.デss𞤵à±
-Ⴒ。テ\u3099Ss𞤵\u0C4D; Ⴒ.デss𞤵\u0C4D; [B5, B6, P1, V6]; xn--qnd.xn--ss-9nh3648ahh20b; ; ; # Ⴒ.デss𞤵à±
+Ⴒ。デSs𞤵\u0C4D; Ⴒ.デss𞤵\u0C4D; [B5, B6, V6]; xn--qnd.xn--ss-9nh3648ahh20b; ; ; # Ⴒ.デss𞤵à±
+Ⴒ。テ\u3099Ss𞤵\u0C4D; Ⴒ.デss𞤵\u0C4D; [B5, B6, V6]; xn--qnd.xn--ss-9nh3648ahh20b; ; ; # Ⴒ.デss𞤵à±
xn--qnd.xn--ss-9nh3648ahh20b; Ⴒ.デss𞤵\u0C4D; [B5, B6, V6]; xn--qnd.xn--ss-9nh3648ahh20b; ; ; # Ⴒ.デss𞤵à±
xn--9kj.xn--ss-9nh3648ahh20b; â´’.デss𞤵\u0C4D; [B5, B6]; xn--9kj.xn--ss-9nh3648ahh20b; ; ; # â´’.デss𞤵à±
xn--9kj.xn--zca669cmr3a0f28a; â´’.デß𞤵\u0C4D; [B5, B6]; xn--9kj.xn--zca669cmr3a0f28a; ; ; # â´’.デß𞤵à±
xn--qnd.xn--zca669cmr3a0f28a; Ⴒ.デß𞤵\u0C4D; [B5, B6, V6]; xn--qnd.xn--zca669cmr3a0f28a; ; ; # Ⴒ.デß𞤵à±
-Ⴒ。デSS𞤵\u0C4D; Ⴒ.デss𞤵\u0C4D; [B5, B6, P1, V6]; xn--qnd.xn--ss-9nh3648ahh20b; ; ; # Ⴒ.デss𞤵à±
-Ⴒ。テ\u3099SS𞤵\u0C4D; Ⴒ.デss𞤵\u0C4D; [B5, B6, P1, V6]; xn--qnd.xn--ss-9nh3648ahh20b; ; ; # Ⴒ.デss𞤵à±
-ð‘¿\u0D4D.7-\u07D2; ð‘¿\u0D4D.7-\u07D2; [B1, B3, B6, V5]; xn--wxc1283k.xn--7--yue; ; ; # ð‘¿àµ.7-ß’
-ð‘¿\u0D4D.7-\u07D2; ; [B1, B3, B6, V5]; xn--wxc1283k.xn--7--yue; ; ; # ð‘¿àµ.7-ß’
-xn--wxc1283k.xn--7--yue; ð‘¿\u0D4D.7-\u07D2; [B1, B3, B6, V5]; xn--wxc1283k.xn--7--yue; ; ; # ð‘¿àµ.7-ß’
-≯𑜫󠭇.\u1734ñ’ž¤ð‘¬á¢§; ; [P1, V5, V6]; xn--hdhx157g68o0g.xn--c0e65eu616c34o7a; ; ; # ≯𑜫.᜴ð‘¬á¢§
->\u0338𑜫󠭇.\u1734ñ’ž¤ð‘¬á¢§; ≯𑜫󠭇.\u1734ñ’ž¤ð‘¬á¢§; [P1, V5, V6]; xn--hdhx157g68o0g.xn--c0e65eu616c34o7a; ; ; # ≯𑜫.᜴ð‘¬á¢§
+Ⴒ。デSS𞤵\u0C4D; Ⴒ.デss𞤵\u0C4D; [B5, B6, V6]; xn--qnd.xn--ss-9nh3648ahh20b; ; ; # Ⴒ.デss𞤵à±
+Ⴒ。テ\u3099SS𞤵\u0C4D; Ⴒ.デss𞤵\u0C4D; [B5, B6, V6]; xn--qnd.xn--ss-9nh3648ahh20b; ; ; # Ⴒ.デss𞤵à±
+ð‘¿\u0D4D.7-\u07D2; ð‘¿\u0D4D.7-\u07D2; [B1, V5]; xn--wxc1283k.xn--7--yue; ; ; # ð‘¿àµ.7-ß’
+ð‘¿\u0D4D.7-\u07D2; ; [B1, V5]; xn--wxc1283k.xn--7--yue; ; ; # ð‘¿àµ.7-ß’
+xn--wxc1283k.xn--7--yue; ð‘¿\u0D4D.7-\u07D2; [B1, V5]; xn--wxc1283k.xn--7--yue; ; ; # ð‘¿àµ.7-ß’
+≯𑜫󠭇.\u1734ñ’ž¤ð‘¬á¢§; ; [V5, V6]; xn--hdhx157g68o0g.xn--c0e65eu616c34o7a; ; ; # ≯𑜫.᜴ð‘¬á¢§
+>\u0338𑜫󠭇.\u1734ñ’ž¤ð‘¬á¢§; ≯𑜫󠭇.\u1734ñ’ž¤ð‘¬á¢§; [V5, V6]; xn--hdhx157g68o0g.xn--c0e65eu616c34o7a; ; ; # ≯𑜫.᜴ð‘¬á¢§
xn--hdhx157g68o0g.xn--c0e65eu616c34o7a; ≯𑜫󠭇.\u1734ñ’ž¤ð‘¬á¢§; [V5, V6]; xn--hdhx157g68o0g.xn--c0e65eu616c34o7a; ; ; # ≯𑜫.᜴ð‘¬á¢§
-\u1DDBòŽ™á‚·ì”。\u0781; \u1DDBòŽ™á‚·ì”.\u0781; [B1, P1, V5, V6]; xn--vnd148d733ky6n9e.xn--iqb; ; ; # ᷛႷì”.Þ
-\u1DDBòŽ™á‚·á„Šá…¨á†¿ã€‚\u0781; \u1DDBòŽ™á‚·ì”.\u0781; [B1, P1, V5, V6]; xn--vnd148d733ky6n9e.xn--iqb; ; ; # ᷛႷì”.Þ
-\u1DDBòŽ™â´—쏔。\u0781; \u1DDBòŽ™â´—ì”.\u0781; [B1, P1, V5, V6]; xn--zegy26dw47iy6w2f.xn--iqb; ; ; # ᷛⴗì”.Þ
-\u1DDBòŽ™â´—ì”。\u0781; \u1DDBòŽ™â´—ì”.\u0781; [B1, P1, V5, V6]; xn--zegy26dw47iy6w2f.xn--iqb; ; ; # ᷛⴗì”.Þ
+\u1DDBòŽ™á‚·ì”。\u0781; \u1DDBòŽ™á‚·ì”.\u0781; [B1, V5, V6]; xn--vnd148d733ky6n9e.xn--iqb; ; ; # ᷛႷì”.Þ
+\u1DDBòŽ™á‚·á„Šá…¨á†¿ã€‚\u0781; \u1DDBòŽ™á‚·ì”.\u0781; [B1, V5, V6]; xn--vnd148d733ky6n9e.xn--iqb; ; ; # ᷛႷì”.Þ
+\u1DDBòŽ™â´—쏔。\u0781; \u1DDBòŽ™â´—ì”.\u0781; [B1, V5, V6]; xn--zegy26dw47iy6w2f.xn--iqb; ; ; # ᷛⴗì”.Þ
+\u1DDBòŽ™â´—ì”。\u0781; \u1DDBòŽ™â´—ì”.\u0781; [B1, V5, V6]; xn--zegy26dw47iy6w2f.xn--iqb; ; ; # ᷛⴗì”.Þ
xn--zegy26dw47iy6w2f.xn--iqb; \u1DDBòŽ™â´—ì”.\u0781; [B1, V5, V6]; xn--zegy26dw47iy6w2f.xn--iqb; ; ; # ᷛⴗì”.Þ
xn--vnd148d733ky6n9e.xn--iqb; \u1DDBòŽ™á‚·ì”.\u0781; [B1, V5, V6]; xn--vnd148d733ky6n9e.xn--iqb; ; ; # ᷛႷì”.Þ
-ß。ð‹³á‚¬\u0FB8; ß.ð‹³á‚¬\u0FB8; [P1, V6]; xn--zca.xn--lgd10cu829c; ; ss.xn--lgd10cu829c; # ß.ð‹³á‚¬à¾¸
-ß。ð‹³á‚¬\u0FB8; ß.ð‹³á‚¬\u0FB8; [P1, V6]; xn--zca.xn--lgd10cu829c; ; ss.xn--lgd10cu829c; # ß.ð‹³á‚¬à¾¸
+ß。ð‹³á‚¬\u0FB8; ß.ð‹³á‚¬\u0FB8; [V6]; xn--zca.xn--lgd10cu829c; ; ss.xn--lgd10cu829c; # ß.ð‹³á‚¬à¾¸
+ß。ð‹³á‚¬\u0FB8; ß.ð‹³á‚¬\u0FB8; [V6]; xn--zca.xn--lgd10cu829c; ; ss.xn--lgd10cu829c; # ß.ð‹³á‚¬à¾¸
ß。ð‹³â´Œ\u0FB8; ß.ð‹³â´Œ\u0FB8; ; xn--zca.xn--lgd921mvv0m; ; ss.xn--lgd921mvv0m; # ß.ð‹³â´Œà¾¸
-SS。ð‹³á‚¬\u0FB8; ss.ð‹³á‚¬\u0FB8; [P1, V6]; ss.xn--lgd10cu829c; ; ; # ss.ð‹³á‚¬à¾¸
+SS。ð‹³á‚¬\u0FB8; ss.ð‹³á‚¬\u0FB8; [V6]; ss.xn--lgd10cu829c; ; ; # ss.ð‹³á‚¬à¾¸
ss。ð‹³â´Œ\u0FB8; ss.ð‹³â´Œ\u0FB8; ; ss.xn--lgd921mvv0m; ; ; # ss.ð‹³â´Œà¾¸
-Ss。ð‹³á‚¬\u0FB8; ss.ð‹³á‚¬\u0FB8; [P1, V6]; ss.xn--lgd10cu829c; ; ; # ss.ð‹³á‚¬à¾¸
+Ss。ð‹³á‚¬\u0FB8; ss.ð‹³á‚¬\u0FB8; [V6]; ss.xn--lgd10cu829c; ; ; # ss.ð‹³á‚¬à¾¸
ss.xn--lgd10cu829c; ss.ð‹³á‚¬\u0FB8; [V6]; ss.xn--lgd10cu829c; ; ; # ss.ð‹³á‚¬à¾¸
ss.xn--lgd921mvv0m; ss.ð‹³â´Œ\u0FB8; ; ss.xn--lgd921mvv0m; ; ; # ss.ð‹³â´Œà¾¸
ss.ð‹³â´Œ\u0FB8; ; ; ss.xn--lgd921mvv0m; ; ; # ss.ð‹³â´Œà¾¸
-SS.ð‹³á‚¬\u0FB8; ss.ð‹³á‚¬\u0FB8; [P1, V6]; ss.xn--lgd10cu829c; ; ; # ss.ð‹³á‚¬à¾¸
-Ss.ð‹³á‚¬\u0FB8; ss.ð‹³á‚¬\u0FB8; [P1, V6]; ss.xn--lgd10cu829c; ; ; # ss.ð‹³á‚¬à¾¸
+SS.ð‹³á‚¬\u0FB8; ss.ð‹³á‚¬\u0FB8; [V6]; ss.xn--lgd10cu829c; ; ; # ss.ð‹³á‚¬à¾¸
+Ss.ð‹³á‚¬\u0FB8; ss.ð‹³á‚¬\u0FB8; [V6]; ss.xn--lgd10cu829c; ; ; # ss.ð‹³á‚¬à¾¸
xn--zca.xn--lgd921mvv0m; ß.ð‹³â´Œ\u0FB8; ; xn--zca.xn--lgd921mvv0m; ; ; # ß.ð‹³â´Œà¾¸
ß.ð‹³â´Œ\u0FB8; ; ; xn--zca.xn--lgd921mvv0m; ; ss.xn--lgd921mvv0m; # ß.ð‹³â´Œà¾¸
xn--zca.xn--lgd10cu829c; ß.ð‹³á‚¬\u0FB8; [V6]; xn--zca.xn--lgd10cu829c; ; ; # ß.ð‹³á‚¬à¾¸
ß。ð‹³â´Œ\u0FB8; ß.ð‹³â´Œ\u0FB8; ; xn--zca.xn--lgd921mvv0m; ; ss.xn--lgd921mvv0m; # ß.ð‹³â´Œà¾¸
-SS。ð‹³á‚¬\u0FB8; ss.ð‹³á‚¬\u0FB8; [P1, V6]; ss.xn--lgd10cu829c; ; ; # ss.ð‹³á‚¬à¾¸
+SS。ð‹³á‚¬\u0FB8; ss.ð‹³á‚¬\u0FB8; [V6]; ss.xn--lgd10cu829c; ; ; # ss.ð‹³á‚¬à¾¸
ss。ð‹³â´Œ\u0FB8; ss.ð‹³â´Œ\u0FB8; ; ss.xn--lgd921mvv0m; ; ; # ss.ð‹³â´Œà¾¸
-Ss。ð‹³á‚¬\u0FB8; ss.ð‹³á‚¬\u0FB8; [P1, V6]; ss.xn--lgd10cu829c; ; ; # ss.ð‹³á‚¬à¾¸
--\u069Eð¶¡.\u200Câ¾\u09CD; -\u069Eð¶¡.\u200C身\u09CD; [B1, C1, P1, V3, V6]; xn----stc7013r.xn--b7b305imj2f; ; xn----stc7013r.xn--b7b1419d; [B1, P1, V3, V6] # -Úž.身à§
--\u069Eð¶¡.\u200C身\u09CD; ; [B1, C1, P1, V3, V6]; xn----stc7013r.xn--b7b305imj2f; ; xn----stc7013r.xn--b7b1419d; [B1, P1, V3, V6] # -Úž.身à§
+Ss。ð‹³á‚¬\u0FB8; ss.ð‹³á‚¬\u0FB8; [V6]; ss.xn--lgd10cu829c; ; ; # ss.ð‹³á‚¬à¾¸
+-\u069Eð¶¡.\u200Câ¾\u09CD; -\u069Eð¶¡.\u200C身\u09CD; [B1, C1, V3, V6]; xn----stc7013r.xn--b7b305imj2f; ; xn----stc7013r.xn--b7b1419d; [B1, V3, V6] # -Úž.身à§
+-\u069Eð¶¡.\u200C身\u09CD; ; [B1, C1, V3, V6]; xn----stc7013r.xn--b7b305imj2f; ; xn----stc7013r.xn--b7b1419d; [B1, V3, V6] # -Úž.身à§
xn----stc7013r.xn--b7b1419d; -\u069Eð¶¡.身\u09CD; [B1, V3, V6]; xn----stc7013r.xn--b7b1419d; ; ; # -Úž.身à§
xn----stc7013r.xn--b7b305imj2f; -\u069Eð¶¡.\u200C身\u09CD; [B1, C1, V3, V6]; xn----stc7013r.xn--b7b305imj2f; ; ; # -Úž.身à§
😮\u0764𑈵𞀖.💅\u200D; 😮\u0764𑈵𞀖.💅\u200D; [B1, C2]; xn--opb4277kuc7elqsa.xn--1ug5265p; ; xn--opb4277kuc7elqsa.xn--kr8h; [B1] # 😮ݤ𑈵𞀖.💅
😮\u0764𑈵𞀖.💅\u200D; ; [B1, C2]; xn--opb4277kuc7elqsa.xn--1ug5265p; ; xn--opb4277kuc7elqsa.xn--kr8h; [B1] # 😮ݤ𑈵𞀖.💅
xn--opb4277kuc7elqsa.xn--kr8h; 😮\u0764𑈵𞀖.💅; [B1]; xn--opb4277kuc7elqsa.xn--kr8h; ; ; # 😮ݤ𑈵𞀖.💅
xn--opb4277kuc7elqsa.xn--1ug5265p; 😮\u0764𑈵𞀖.💅\u200D; [B1, C2]; xn--opb4277kuc7elqsa.xn--1ug5265p; ; ; # 😮ݤ𑈵𞀖.💅
-\u08F2\u200D꙳\u0712.á¢\u200Có „; ; [B1, B6, C1, C2, P1, V5, V6]; xn--cnb37g904be26j.xn--89e849ax9363a; ; xn--cnb37gdy00a.xn--89e02253p; [B1, B6, P1, V5, V6] # ࣲ꙳ܒ.á¢
+\u08F2\u200D꙳\u0712.á¢\u200Có „; ; [B1, B6, C1, C2, V5, V6]; xn--cnb37g904be26j.xn--89e849ax9363a; ; xn--cnb37gdy00a.xn--89e02253p; [B1, B6, V5, V6] # ࣲ꙳ܒ.á¢
xn--cnb37gdy00a.xn--89e02253p; \u08F2꙳\u0712.á¢ó „; [B1, B6, V5, V6]; xn--cnb37gdy00a.xn--89e02253p; ; ; # ࣲ꙳ܒ.á¢
xn--cnb37g904be26j.xn--89e849ax9363a; \u08F2\u200D꙳\u0712.á¢\u200Có „; [B1, B6, C1, C2, V5, V6]; xn--cnb37g904be26j.xn--89e849ax9363a; ; ; # ࣲ꙳ܒ.á¢
-Ⴑ.\u06BF𞯓ᠲ; Ⴑ.\u06BF𞯓ᠲ; [B2, B3, P1, V6]; xn--pnd.xn--ykb840gd555a; ; ; # Ⴑ.ڿᠲ
-Ⴑ.\u06BF𞯓ᠲ; ; [B2, B3, P1, V6]; xn--pnd.xn--ykb840gd555a; ; ; # Ⴑ.ڿᠲ
-ⴑ.\u06BF𞯓ᠲ; ; [B2, B3, P1, V6]; xn--8kj.xn--ykb840gd555a; ; ; # ⴑ.ڿᠲ
+Ⴑ.\u06BF𞯓ᠲ; Ⴑ.\u06BF𞯓ᠲ; [B2, B3, V6]; xn--pnd.xn--ykb840gd555a; ; ; # Ⴑ.ڿᠲ
+Ⴑ.\u06BF𞯓ᠲ; ; [B2, B3, V6]; xn--pnd.xn--ykb840gd555a; ; ; # Ⴑ.ڿᠲ
+ⴑ.\u06BF𞯓ᠲ; ; [B2, B3, V6]; xn--8kj.xn--ykb840gd555a; ; ; # ⴑ.ڿᠲ
xn--8kj.xn--ykb840gd555a; ⴑ.\u06BF𞯓ᠲ; [B2, B3, V6]; xn--8kj.xn--ykb840gd555a; ; ; # ⴑ.ڿᠲ
xn--pnd.xn--ykb840gd555a; Ⴑ.\u06BF𞯓ᠲ; [B2, B3, V6]; xn--pnd.xn--ykb840gd555a; ; ; # Ⴑ.ڿᠲ
-ⴑ.\u06BF𞯓ᠲ; ⴑ.\u06BF𞯓ᠲ; [B2, B3, P1, V6]; xn--8kj.xn--ykb840gd555a; ; ; # ⴑ.ڿᠲ
-\u1A5Að›¦\u0C4D。ðš¬ðŸµ; \u1A5Að›¦\u0C4D.ðš¬9; [P1, V5, V6]; xn--lqc703ebm93a.xn--9-000p; ; ; # á©šà±.9
-\u1A5Að›¦\u0C4D。ðš¬9; \u1A5Að›¦\u0C4D.ðš¬9; [P1, V5, V6]; xn--lqc703ebm93a.xn--9-000p; ; ; # á©šà±.9
+ⴑ.\u06BF𞯓ᠲ; ⴑ.\u06BF𞯓ᠲ; [B2, B3, V6]; xn--8kj.xn--ykb840gd555a; ; ; # ⴑ.ڿᠲ
+\u1A5Að›¦\u0C4D。ðš¬ðŸµ; \u1A5Að›¦\u0C4D.ðš¬9; [V5, V6]; xn--lqc703ebm93a.xn--9-000p; ; ; # á©šà±.9
+\u1A5Að›¦\u0C4D。ðš¬9; \u1A5Að›¦\u0C4D.ðš¬9; [V5, V6]; xn--lqc703ebm93a.xn--9-000p; ; ; # á©šà±.9
xn--lqc703ebm93a.xn--9-000p; \u1A5Að›¦\u0C4D.ðš¬9; [V5, V6]; xn--lqc703ebm93a.xn--9-000p; ; ; # á©šà±.9
-\u200C\u06A0𿺆ðŸ—。Ⴣ꒘\uFCD0ñ˜–; \u200C\u06A0𿺆9.Ⴣ꒘\u0645\u062Eñ˜–; [B1, B5, C1, P1, V6]; xn--9-vtc736qts91g.xn--tgb9bz61cfn8mw3t2c; ; xn--9-vtc42319e.xn--tgb9bz61cfn8mw3t2c; [B2, B5, P1, V6] # Ú 9.Ⴣ꒘مخ
-\u200C\u06A0𿺆9。Ⴣ꒘\u0645\u062Eñ˜–; \u200C\u06A0𿺆9.Ⴣ꒘\u0645\u062Eñ˜–; [B1, B5, C1, P1, V6]; xn--9-vtc736qts91g.xn--tgb9bz61cfn8mw3t2c; ; xn--9-vtc42319e.xn--tgb9bz61cfn8mw3t2c; [B2, B5, P1, V6] # Ú 9.Ⴣ꒘مخ
-\u200C\u06A0𿺆9。ⴣ꒘\u0645\u062Eñ˜–; \u200C\u06A0𿺆9.ⴣ꒘\u0645\u062Eñ˜–; [B1, B5, C1, P1, V6]; xn--9-vtc736qts91g.xn--tgb9bz87p833hw316c; ; xn--9-vtc42319e.xn--tgb9bz87p833hw316c; [B2, B5, P1, V6] # Ú 9.ⴣ꒘مخ
+\u200C\u06A0𿺆ðŸ—。Ⴣ꒘\uFCD0ñ˜–; \u200C\u06A0𿺆9.Ⴣ꒘\u0645\u062Eñ˜–; [B1, B5, C1, V6]; xn--9-vtc736qts91g.xn--tgb9bz61cfn8mw3t2c; ; xn--9-vtc42319e.xn--tgb9bz61cfn8mw3t2c; [B2, B5, V6] # Ú 9.Ⴣ꒘مخ
+\u200C\u06A0𿺆9。Ⴣ꒘\u0645\u062Eñ˜–; \u200C\u06A0𿺆9.Ⴣ꒘\u0645\u062Eñ˜–; [B1, B5, C1, V6]; xn--9-vtc736qts91g.xn--tgb9bz61cfn8mw3t2c; ; xn--9-vtc42319e.xn--tgb9bz61cfn8mw3t2c; [B2, B5, V6] # Ú 9.Ⴣ꒘مخ
+\u200C\u06A0𿺆9。ⴣ꒘\u0645\u062Eñ˜–; \u200C\u06A0𿺆9.ⴣ꒘\u0645\u062Eñ˜–; [B1, B5, C1, V6]; xn--9-vtc736qts91g.xn--tgb9bz87p833hw316c; ; xn--9-vtc42319e.xn--tgb9bz87p833hw316c; [B2, B5, V6] # Ú 9.ⴣ꒘مخ
xn--9-vtc42319e.xn--tgb9bz87p833hw316c; \u06A0𿺆9.ⴣ꒘\u0645\u062Eñ˜–; [B2, B5, V6]; xn--9-vtc42319e.xn--tgb9bz87p833hw316c; ; ; # Ú 9.ⴣ꒘مخ
xn--9-vtc736qts91g.xn--tgb9bz87p833hw316c; \u200C\u06A0𿺆9.ⴣ꒘\u0645\u062Eñ˜–; [B1, B5, C1, V6]; xn--9-vtc736qts91g.xn--tgb9bz87p833hw316c; ; ; # Ú 9.ⴣ꒘مخ
xn--9-vtc42319e.xn--tgb9bz61cfn8mw3t2c; \u06A0𿺆9.Ⴣ꒘\u0645\u062Eñ˜–; [B2, B5, V6]; xn--9-vtc42319e.xn--tgb9bz61cfn8mw3t2c; ; ; # Ú 9.Ⴣ꒘مخ
xn--9-vtc736qts91g.xn--tgb9bz61cfn8mw3t2c; \u200C\u06A0𿺆9.Ⴣ꒘\u0645\u062Eñ˜–; [B1, B5, C1, V6]; xn--9-vtc736qts91g.xn--tgb9bz61cfn8mw3t2c; ; ; # Ú 9.Ⴣ꒘مخ
-\u200C\u06A0𿺆ðŸ—。ⴣ꒘\uFCD0ñ˜–; \u200C\u06A0𿺆9.ⴣ꒘\u0645\u062Eñ˜–; [B1, B5, C1, P1, V6]; xn--9-vtc736qts91g.xn--tgb9bz87p833hw316c; ; xn--9-vtc42319e.xn--tgb9bz87p833hw316c; [B2, B5, P1, V6] # Ú 9.ⴣ꒘مخ
-ᡖ。\u031F񗛨\u0B82-; ᡖ.\u031F񗛨\u0B82-; [P1, V3, V5, V6]; xn--m8e.xn----mdb555dkk71m; ; ; # ᡖ.̟ஂ-
-ᡖ。\u031F񗛨\u0B82-; ᡖ.\u031F񗛨\u0B82-; [P1, V3, V5, V6]; xn--m8e.xn----mdb555dkk71m; ; ; # ᡖ.̟ஂ-
+\u200C\u06A0𿺆ðŸ—。ⴣ꒘\uFCD0ñ˜–; \u200C\u06A0𿺆9.ⴣ꒘\u0645\u062Eñ˜–; [B1, B5, C1, V6]; xn--9-vtc736qts91g.xn--tgb9bz87p833hw316c; ; xn--9-vtc42319e.xn--tgb9bz87p833hw316c; [B2, B5, V6] # Ú 9.ⴣ꒘مخ
+ᡖ。\u031F񗛨\u0B82-; ᡖ.\u031F񗛨\u0B82-; [V3, V5, V6]; xn--m8e.xn----mdb555dkk71m; ; ; # ᡖ.̟ஂ-
+ᡖ。\u031F񗛨\u0B82-; ᡖ.\u031F񗛨\u0B82-; [V3, V5, V6]; xn--m8e.xn----mdb555dkk71m; ; ; # ᡖ.̟ஂ-
xn--m8e.xn----mdb555dkk71m; ᡖ.\u031F񗛨\u0B82-; [V3, V5, V6]; xn--m8e.xn----mdb555dkk71m; ; ; # ᡖ.̟ஂ-
𞠠浘。絧𞀀; 𞠠浘.絧𞀀; [B2, B3]; xn--e0wp491f.xn--ud0a3573e; ; ; # 𞠠浘.絧𞀀
xn--e0wp491f.xn--ud0a3573e; 𞠠浘.絧𞀀; [B2, B3]; xn--e0wp491f.xn--ud0a3573e; ; ; # 𞠠浘.絧𞀀
-\u0596Ⴋ.ðŸ³â‰¯ï¸’\uFE0A; \u0596á‚«.7≯︒; [P1, V5, V6]; xn--hcb887c.xn--7-pgoy530h; ; ; # Ö–á‚«.7≯︒
-\u0596Ⴋ.ðŸ³>\u0338︒\uFE0A; \u0596á‚«.7≯︒; [P1, V5, V6]; xn--hcb887c.xn--7-pgoy530h; ; ; # Ö–á‚«.7≯︒
-\u0596Ⴋ.7≯。\uFE0A; \u0596Ⴋ.7≯.; [P1, V5, V6]; xn--hcb887c.xn--7-pgo.; ; ; # ֖Ⴋ.7≯.
-\u0596Ⴋ.7>\u0338。\uFE0A; \u0596Ⴋ.7≯.; [P1, V5, V6]; xn--hcb887c.xn--7-pgo.; ; ; # ֖Ⴋ.7≯.
-\u0596ⴋ.7>\u0338。\uFE0A; \u0596ⴋ.7≯.; [P1, V5, V6]; xn--hcb613r.xn--7-pgo.; ; ; # ֖ⴋ.7≯.
-\u0596ⴋ.7≯。\uFE0A; \u0596ⴋ.7≯.; [P1, V5, V6]; xn--hcb613r.xn--7-pgo.; ; ; # ֖ⴋ.7≯.
-xn--hcb613r.xn--7-pgo.; \u0596ⴋ.7≯.; [V5, V6]; xn--hcb613r.xn--7-pgo.; ; ; # ֖ⴋ.7≯.
+\u0596Ⴋ.ðŸ³â‰¯ï¸’\uFE0A; \u0596á‚«.7≯︒; [V5, V6]; xn--hcb887c.xn--7-pgoy530h; ; ; # Ö–á‚«.7≯︒
+\u0596Ⴋ.ðŸ³>\u0338︒\uFE0A; \u0596á‚«.7≯︒; [V5, V6]; xn--hcb887c.xn--7-pgoy530h; ; ; # Ö–á‚«.7≯︒
+\u0596Ⴋ.7≯。\uFE0A; \u0596Ⴋ.7≯.; [V5, V6]; xn--hcb887c.xn--7-pgo.; ; ; # ֖Ⴋ.7≯.
+\u0596Ⴋ.7>\u0338。\uFE0A; \u0596Ⴋ.7≯.; [V5, V6]; xn--hcb887c.xn--7-pgo.; ; ; # ֖Ⴋ.7≯.
+\u0596ⴋ.7>\u0338。\uFE0A; \u0596ⴋ.7≯.; [V5]; xn--hcb613r.xn--7-pgo.; ; ; # ֖ⴋ.7≯.
+\u0596ⴋ.7≯。\uFE0A; \u0596ⴋ.7≯.; [V5]; xn--hcb613r.xn--7-pgo.; ; ; # ֖ⴋ.7≯.
+xn--hcb613r.xn--7-pgo.; \u0596ⴋ.7≯.; [V5]; xn--hcb613r.xn--7-pgo.; ; ; # ֖ⴋ.7≯.
xn--hcb887c.xn--7-pgo.; \u0596Ⴋ.7≯.; [V5, V6]; xn--hcb887c.xn--7-pgo.; ; ; # ֖Ⴋ.7≯.
-\u0596ⴋ.ðŸ³>\u0338︒\uFE0A; \u0596â´‹.7≯︒; [P1, V5, V6]; xn--hcb613r.xn--7-pgoy530h; ; ; # Ö–â´‹.7≯︒
-\u0596ⴋ.ðŸ³â‰¯ï¸’\uFE0A; \u0596â´‹.7≯︒; [P1, V5, V6]; xn--hcb613r.xn--7-pgoy530h; ; ; # Ö–â´‹.7≯︒
+\u0596ⴋ.ðŸ³>\u0338︒\uFE0A; \u0596â´‹.7≯︒; [V5, V6]; xn--hcb613r.xn--7-pgoy530h; ; ; # Ö–â´‹.7≯︒
+\u0596ⴋ.ðŸ³â‰¯ï¸’\uFE0A; \u0596â´‹.7≯︒; [V5, V6]; xn--hcb613r.xn--7-pgoy530h; ; ; # Ö–â´‹.7≯︒
xn--hcb613r.xn--7-pgoy530h; \u0596ⴋ.7≯︒; [V5, V6]; xn--hcb613r.xn--7-pgoy530h; ; ; # ֖ⴋ.7≯︒
xn--hcb887c.xn--7-pgoy530h; \u0596Ⴋ.7≯︒; [V5, V6]; xn--hcb887c.xn--7-pgoy530h; ; ; # ֖Ⴋ.7≯︒
-\u200DF𑓂。󠺨︒\u077Eð¹¢; \u200Dfð‘“‚.󠺨︒\u077Eð¹¢; [B1, C2, P1, V6]; xn--f-tgn9761i.xn--fqb1637j8hky9452a; ; xn--f-kq9i.xn--fqb1637j8hky9452a; [B1, P1, V6] # fð‘“‚.︒ݾð¹¢
-\u200DF𑓂。󠺨。\u077Eð¹¢; \u200Dfð‘“‚.󠺨.\u077Eð¹¢; [B1, C2, P1, V6]; xn--f-tgn9761i.xn--7656e.xn--fqb4175k; ; xn--f-kq9i.xn--7656e.xn--fqb4175k; [B1, P1, V6] # fð‘“‚..ݾð¹¢
-\u200Df𑓂。󠺨。\u077Eð¹¢; \u200Dfð‘“‚.󠺨.\u077Eð¹¢; [B1, C2, P1, V6]; xn--f-tgn9761i.xn--7656e.xn--fqb4175k; ; xn--f-kq9i.xn--7656e.xn--fqb4175k; [B1, P1, V6] # fð‘“‚..ݾð¹¢
+\u200DF𑓂。󠺨︒\u077Eð¹¢; \u200Dfð‘“‚.󠺨︒\u077Eð¹¢; [B1, C2, V6]; xn--f-tgn9761i.xn--fqb1637j8hky9452a; ; xn--f-kq9i.xn--fqb1637j8hky9452a; [B1, V6] # fð‘“‚.︒ݾð¹¢
+\u200DF𑓂。󠺨。\u077Eð¹¢; \u200Dfð‘“‚.󠺨.\u077Eð¹¢; [B1, C2, V6]; xn--f-tgn9761i.xn--7656e.xn--fqb4175k; ; xn--f-kq9i.xn--7656e.xn--fqb4175k; [B1, V6] # fð‘“‚..ݾð¹¢
+\u200Df𑓂。󠺨。\u077Eð¹¢; \u200Dfð‘“‚.󠺨.\u077Eð¹¢; [B1, C2, V6]; xn--f-tgn9761i.xn--7656e.xn--fqb4175k; ; xn--f-kq9i.xn--7656e.xn--fqb4175k; [B1, V6] # fð‘“‚..ݾð¹¢
xn--f-kq9i.xn--7656e.xn--fqb4175k; fð‘“‚.󠺨.\u077Eð¹¢; [B1, V6]; xn--f-kq9i.xn--7656e.xn--fqb4175k; ; ; # fð‘“‚..ݾð¹¢
xn--f-tgn9761i.xn--7656e.xn--fqb4175k; \u200Dfð‘“‚.󠺨.\u077Eð¹¢; [B1, C2, V6]; xn--f-tgn9761i.xn--7656e.xn--fqb4175k; ; ; # fð‘“‚..ݾð¹¢
-\u200Df𑓂。󠺨︒\u077Eð¹¢; \u200Dfð‘“‚.󠺨︒\u077Eð¹¢; [B1, C2, P1, V6]; xn--f-tgn9761i.xn--fqb1637j8hky9452a; ; xn--f-kq9i.xn--fqb1637j8hky9452a; [B1, P1, V6] # fð‘“‚.︒ݾð¹¢
+\u200Df𑓂。󠺨︒\u077Eð¹¢; \u200Dfð‘“‚.󠺨︒\u077Eð¹¢; [B1, C2, V6]; xn--f-tgn9761i.xn--fqb1637j8hky9452a; ; xn--f-kq9i.xn--fqb1637j8hky9452a; [B1, V6] # fð‘“‚.︒ݾð¹¢
xn--f-kq9i.xn--fqb1637j8hky9452a; fð‘“‚.󠺨︒\u077Eð¹¢; [B1, V6]; xn--f-kq9i.xn--fqb1637j8hky9452a; ; ; # fð‘“‚.︒ݾð¹¢
xn--f-tgn9761i.xn--fqb1637j8hky9452a; \u200Dfð‘“‚.󠺨︒\u077Eð¹¢; [B1, C2, V6]; xn--f-tgn9761i.xn--fqb1637j8hky9452a; ; ; # fð‘“‚.︒ݾð¹¢
-\u0845🄇ð¼—︒。ð¹»ð‘œ«; \u0845🄇ð¼—︒.ð¹»ð‘œ«; [B1, B3, P1, V6]; xn--3vb4696jpxkjh7s.xn--zo0di2m; ; ; # ࡅ🄇ð¼—︒.ð¹»ð‘œ«
-\u08456,ð¼—。。ð¹»ð‘œ«; \u08456,ð¼—..ð¹»ð‘œ«; [B1, P1, V6, X4_2]; xn--6,-r4e4420y..xn--zo0di2m; [B1, P1, V6, A4_2]; ; # à¡…6,ð¼—..ð¹»ð‘œ«
-xn--6,-r4e4420y..xn--zo0di2m; \u08456,ð¼—..ð¹»ð‘œ«; [B1, P1, V6, X4_2]; xn--6,-r4e4420y..xn--zo0di2m; [B1, P1, V6, A4_2]; ; # à¡…6,ð¼—..ð¹»ð‘œ«
+\u0845🄇ð¼—︒。ð¹»ð‘œ«; \u0845🄇ð¼—︒.ð¹»ð‘œ«; [B1, B3, V6]; xn--3vb4696jpxkjh7s.xn--zo0di2m; ; ; # ࡅ🄇ð¼—︒.ð¹»ð‘œ«
+\u08456,ð¼—。。ð¹»ð‘œ«; \u08456,ð¼—..ð¹»ð‘œ«; [B1, V6, X4_2]; xn--6,-r4e4420y..xn--zo0di2m; [B1, V6, A4_2]; ; # à¡…6,ð¼—..ð¹»ð‘œ«
+xn--6,-r4e4420y..xn--zo0di2m; \u08456,ð¼—..ð¹»ð‘œ«; [B1, V6, X4_2]; xn--6,-r4e4420y..xn--zo0di2m; [B1, V6, A4_2]; ; # à¡…6,ð¼—..ð¹»ð‘œ«
xn--3vb4696jpxkjh7s.xn--zo0di2m; \u0845🄇ð¼—︒.ð¹»ð‘œ«; [B1, B3, V6]; xn--3vb4696jpxkjh7s.xn--zo0di2m; ; ; # ࡅ🄇ð¼—︒.ð¹»ð‘œ«
-ð¹ˆ.\u1DC0𑈱ð¦­; ; [B1, P1, V5, V6]; xn--jn0d.xn--7dg0871h3lf; ; ; # .᷀𑈱ð¦­
+ð¹ˆ.\u1DC0𑈱ð¦­; ; [B1, V5, V6]; xn--jn0d.xn--7dg0871h3lf; ; ; # .᷀𑈱ð¦­
xn--jn0d.xn--7dg0871h3lf; ð¹ˆ.\u1DC0𑈱ð¦­; [B1, V5, V6]; xn--jn0d.xn--7dg0871h3lf; ; ; # .᷀𑈱ð¦­
-Ⴂ䠺。𞤃ñ…Žó™®¦\u0693; Ⴂ䠺.𞤥ñ…Žó™®¦\u0693; [B2, P1, V6]; xn--9md875z.xn--pjb9818vg4xno967d; ; ; # Ⴂ䠺.𞤥ړ
-ⴂ䠺。𞤥ñ…Žó™®¦\u0693; â´‚ä º.𞤥ñ…Žó™®¦\u0693; [B2, P1, V6]; xn--tkj638f.xn--pjb9818vg4xno967d; ; ; # â´‚ä º.𞤥ړ
+Ⴂ䠺。𞤃ñ…Žó™®¦\u0693; Ⴂ䠺.𞤥ñ…Žó™®¦\u0693; [B2, V6]; xn--9md875z.xn--pjb9818vg4xno967d; ; ; # Ⴂ䠺.𞤥ړ
+ⴂ䠺。𞤥ñ…Žó™®¦\u0693; â´‚ä º.𞤥ñ…Žó™®¦\u0693; [B2, V6]; xn--tkj638f.xn--pjb9818vg4xno967d; ; ; # â´‚ä º.𞤥ړ
xn--tkj638f.xn--pjb9818vg4xno967d; â´‚ä º.𞤥ñ…Žó™®¦\u0693; [B2, V6]; xn--tkj638f.xn--pjb9818vg4xno967d; ; ; # â´‚ä º.𞤥ړ
xn--9md875z.xn--pjb9818vg4xno967d; Ⴂ䠺.𞤥ñ…Žó™®¦\u0693; [B2, V6]; xn--9md875z.xn--pjb9818vg4xno967d; ; ; # Ⴂ䠺.𞤥ړ
-ⴂ䠺。𞤃ñ…Žó™®¦\u0693; â´‚ä º.𞤥ñ…Žó™®¦\u0693; [B2, P1, V6]; xn--tkj638f.xn--pjb9818vg4xno967d; ; ; # â´‚ä º.𞤥ړ
-🄇ä¼ï¸’.𜙚\uA8C4; ; [P1, V6]; xn--woqs083bel0g.xn--0f9ao925c; ; ; # 🄇ä¼ï¸’.꣄
-6,ä¼ã€‚.𜙚\uA8C4; 6,ä¼..𜙚\uA8C4; [P1, V6, X4_2]; xn--6,-7i3c..xn--0f9ao925c; [P1, V6, A4_2]; ; # 6,ä¼..꣄
-xn--6,-7i3c..xn--0f9ao925c; 6,ä¼..𜙚\uA8C4; [P1, V6, X4_2]; xn--6,-7i3c..xn--0f9ao925c; [P1, V6, A4_2]; ; # 6,ä¼..꣄
+ⴂ䠺。𞤃ñ…Žó™®¦\u0693; â´‚ä º.𞤥ñ…Žó™®¦\u0693; [B2, V6]; xn--tkj638f.xn--pjb9818vg4xno967d; ; ; # â´‚ä º.𞤥ړ
+🄇ä¼ï¸’.𜙚\uA8C4; ; [V6]; xn--woqs083bel0g.xn--0f9ao925c; ; ; # 🄇ä¼ï¸’.꣄
+6,ä¼ã€‚.𜙚\uA8C4; 6,ä¼..𜙚\uA8C4; [V6, X4_2]; xn--6,-7i3c..xn--0f9ao925c; [V6, A4_2]; ; # 6,ä¼..꣄
+xn--6,-7i3c..xn--0f9ao925c; 6,ä¼..𜙚\uA8C4; [V6, X4_2]; xn--6,-7i3c..xn--0f9ao925c; [V6, A4_2]; ; # 6,ä¼..꣄
xn--woqs083bel0g.xn--0f9ao925c; 🄇ä¼ï¸’.𜙚\uA8C4; [V6]; xn--woqs083bel0g.xn--0f9ao925c; ; ; # 🄇ä¼ï¸’.꣄
-\u200Dð¹ \uABED\uFFFB。\u200Dð«“Ⴚ𑂹; \u200Dð¹ \uABED\uFFFB.\u200Dð«“Ⴚ𑂹; [B1, C2, P1, V6]; xn--1ugz126coy7bdbm.xn--ynd959evs1pv6e; ; xn--429az70n29i.xn--ynd3619jqyd; [B1, B2, B3, P1, V6] # ð¹ ê¯­.ð«“Ⴚ𑂹
-\u200Dð¹ \uABED\uFFFB。\u200Dð«“â´šð‘‚¹; \u200Dð¹ \uABED\uFFFB.\u200Dð«“â´šð‘‚¹; [B1, C2, P1, V6]; xn--1ugz126coy7bdbm.xn--1ug062chv7ov6e; ; xn--429az70n29i.xn--ilj7702eqyd; [B1, B2, B3, P1, V6] # ð¹ ê¯­.ð«“â´šð‘‚¹
+\u200Dð¹ \uABED\uFFFB。\u200Dð«“Ⴚ𑂹; \u200Dð¹ \uABED\uFFFB.\u200Dð«“Ⴚ𑂹; [B1, C2, V6]; xn--1ugz126coy7bdbm.xn--ynd959evs1pv6e; ; xn--429az70n29i.xn--ynd3619jqyd; [B1, B2, B3, V6] # ð¹ ê¯­.ð«“Ⴚ𑂹
+\u200Dð¹ \uABED\uFFFB。\u200Dð«“â´šð‘‚¹; \u200Dð¹ \uABED\uFFFB.\u200Dð«“â´šð‘‚¹; [B1, C2, V6]; xn--1ugz126coy7bdbm.xn--1ug062chv7ov6e; ; xn--429az70n29i.xn--ilj7702eqyd; [B1, B2, B3, V6] # ð¹ ê¯­.ð«“â´šð‘‚¹
xn--429az70n29i.xn--ilj7702eqyd; ð¹ \uABED\uFFFB.ð«“â´šð‘‚¹; [B1, B2, B3, V6]; xn--429az70n29i.xn--ilj7702eqyd; ; ; # ð¹ ê¯­.ð«“â´šð‘‚¹
xn--1ugz126coy7bdbm.xn--1ug062chv7ov6e; \u200Dð¹ \uABED\uFFFB.\u200Dð«“â´šð‘‚¹; [B1, C2, V6]; xn--1ugz126coy7bdbm.xn--1ug062chv7ov6e; ; ; # ð¹ ê¯­.ð«“â´šð‘‚¹
xn--429az70n29i.xn--ynd3619jqyd; ð¹ \uABED\uFFFB.ð«“Ⴚ𑂹; [B1, B2, B3, V6]; xn--429az70n29i.xn--ynd3619jqyd; ; ; # ð¹ ê¯­.ð«“Ⴚ𑂹
xn--1ugz126coy7bdbm.xn--ynd959evs1pv6e; \u200Dð¹ \uABED\uFFFB.\u200Dð«“Ⴚ𑂹; [B1, C2, V6]; xn--1ugz126coy7bdbm.xn--ynd959evs1pv6e; ; ; # ð¹ ê¯­.ð«“Ⴚ𑂹
-󠆠.ñ·´óŒŸˆ; .ñ·´óŒŸˆ; [P1, V6, X4_2]; .xn--rx21bhv12i; [P1, V6, A4_2]; ; # .
-ó † .ñ·´óŒŸˆ; .ñ·´óŒŸˆ; [P1, V6, X4_2]; .xn--rx21bhv12i; [P1, V6, A4_2]; ; # .
+󠆠.ñ·´óŒŸˆ; .ñ·´óŒŸˆ; [V6, X4_2]; .xn--rx21bhv12i; [V6, A4_2]; ; # .
+ó † .ñ·´óŒŸˆ; .ñ·´óŒŸˆ; [V6, X4_2]; .xn--rx21bhv12i; [V6, A4_2]; ; # .
.xn--rx21bhv12i; .ñ·´óŒŸˆ; [V6, X4_2]; .xn--rx21bhv12i; [V6, A4_2]; ; # .
-ð«ƒ\u200CႦ.≠𞷙; ; [B1, B2, B3, C1, P1, V6]; xn--end799ekr1p.xn--1ch2802p; ; xn--end1719j.xn--1ch2802p; [B1, B2, B3, P1, V6] # ð«ƒá‚¦.≠
-ð«ƒ\u200CႦ.=\u0338ðž·™; ð«ƒ\u200CႦ.≠𞷙; [B1, B2, B3, C1, P1, V6]; xn--end799ekr1p.xn--1ch2802p; ; xn--end1719j.xn--1ch2802p; [B1, B2, B3, P1, V6] # ð«ƒá‚¦.≠
-ð«ƒ\u200Câ´†.=\u0338ðž·™; ð«ƒ\u200Câ´†.≠𞷙; [B1, B2, B3, C1, P1, V6]; xn--0ug132csv7o.xn--1ch2802p; ; xn--xkjz802e.xn--1ch2802p; [B1, B2, B3, P1, V6] # ð«ƒâ´†.≠
-ð«ƒ\u200Câ´†.≠𞷙; ; [B1, B2, B3, C1, P1, V6]; xn--0ug132csv7o.xn--1ch2802p; ; xn--xkjz802e.xn--1ch2802p; [B1, B2, B3, P1, V6] # ð«ƒâ´†.≠
+ð«ƒ\u200CႦ.≠𞷙; ; [B1, B2, B3, C1, V6]; xn--end799ekr1p.xn--1ch2802p; ; xn--end1719j.xn--1ch2802p; [B1, B2, B3, V6] # ð«ƒá‚¦.≠
+ð«ƒ\u200CႦ.=\u0338ðž·™; ð«ƒ\u200CႦ.≠𞷙; [B1, B2, B3, C1, V6]; xn--end799ekr1p.xn--1ch2802p; ; xn--end1719j.xn--1ch2802p; [B1, B2, B3, V6] # ð«ƒá‚¦.≠
+ð«ƒ\u200Câ´†.=\u0338ðž·™; ð«ƒ\u200Câ´†.≠𞷙; [B1, B2, B3, C1, V6]; xn--0ug132csv7o.xn--1ch2802p; ; xn--xkjz802e.xn--1ch2802p; [B1, B2, B3, V6] # ð«ƒâ´†.≠
+ð«ƒ\u200Câ´†.≠𞷙; ; [B1, B2, B3, C1, V6]; xn--0ug132csv7o.xn--1ch2802p; ; xn--xkjz802e.xn--1ch2802p; [B1, B2, B3, V6] # ð«ƒâ´†.≠
xn--xkjz802e.xn--1ch2802p; ð«ƒâ´†.≠𞷙; [B1, B2, B3, V6]; xn--xkjz802e.xn--1ch2802p; ; ; # ð«ƒâ´†.≠
xn--0ug132csv7o.xn--1ch2802p; ð«ƒ\u200Câ´†.≠𞷙; [B1, B2, B3, C1, V6]; xn--0ug132csv7o.xn--1ch2802p; ; ; # ð«ƒâ´†.≠
xn--end1719j.xn--1ch2802p; ð«ƒá‚¦.≠𞷙; [B1, B2, B3, V6]; xn--end1719j.xn--1ch2802p; ; ; # ð«ƒá‚¦.≠
xn--end799ekr1p.xn--1ch2802p; ð«ƒ\u200CႦ.≠𞷙; [B1, B2, B3, C1, V6]; xn--end799ekr1p.xn--1ch2802p; ; ; # ð«ƒá‚¦.≠
-ó ²ð™©¢ðŸ¥ê˜Œï¼Ž\u0841; ó ²ð™©¢3ꘌ.\u0841; [B1, P1, V6]; xn--3-0g3es485d8i15h.xn--zvb; ; ; # 3ꘌ.à¡
-ó ²ð™©¢3ꘌ.\u0841; ; [B1, P1, V6]; xn--3-0g3es485d8i15h.xn--zvb; ; ; # 3ꘌ.à¡
+ó ²ð™©¢ðŸ¥ê˜Œï¼Ž\u0841; ó ²ð™©¢3ꘌ.\u0841; [B1, V6]; xn--3-0g3es485d8i15h.xn--zvb; ; ; # 3ꘌ.à¡
+ó ²ð™©¢3ꘌ.\u0841; ; [B1, V6]; xn--3-0g3es485d8i15h.xn--zvb; ; ; # 3ꘌ.à¡
xn--3-0g3es485d8i15h.xn--zvb; ó ²ð™©¢3ꘌ.\u0841; [B1, V6]; xn--3-0g3es485d8i15h.xn--zvb; ; ; # 3ꘌ.à¡
--.\u1886󡲣-; ; [P1, V3, V5, V6]; -.xn----pbkx6497q; ; ; # -.ᢆ-
+-.\u1886󡲣-; ; [V3, V5, V6]; -.xn----pbkx6497q; ; ; # -.ᢆ-
-.xn----pbkx6497q; -.\u1886󡲣-; [V3, V5, V6]; -.xn----pbkx6497q; ; ; # -.ᢆ-
-󲚗\u200C。\u200C𞰆ς; 󲚗\u200C.\u200C𞰆ς; [B1, B6, C1, P1, V6]; xn--0ug76062m.xn--3xa795lhn92a; ; xn--qp42f.xn--4xa3011w; [B2, B3, P1, V6] # .ς
-󲚗\u200C。\u200C𞰆ς; 󲚗\u200C.\u200C𞰆ς; [B1, B6, C1, P1, V6]; xn--0ug76062m.xn--3xa795lhn92a; ; xn--qp42f.xn--4xa3011w; [B2, B3, P1, V6] # .ς
-󲚗\u200C。\u200C𞰆Σ; 󲚗\u200C.\u200C𞰆σ; [B1, B6, C1, P1, V6]; xn--0ug76062m.xn--4xa595lhn92a; ; xn--qp42f.xn--4xa3011w; [B2, B3, P1, V6] # .σ
-󲚗\u200C。\u200C𞰆σ; 󲚗\u200C.\u200C𞰆σ; [B1, B6, C1, P1, V6]; xn--0ug76062m.xn--4xa595lhn92a; ; xn--qp42f.xn--4xa3011w; [B2, B3, P1, V6] # .σ
+󲚗\u200C。\u200C𞰆ς; 󲚗\u200C.\u200C𞰆ς; [B1, B6, C1, V6]; xn--0ug76062m.xn--3xa795lhn92a; ; xn--qp42f.xn--4xa3011w; [B2, B3, V6] # .ς
+󲚗\u200C。\u200C𞰆ς; 󲚗\u200C.\u200C𞰆ς; [B1, B6, C1, V6]; xn--0ug76062m.xn--3xa795lhn92a; ; xn--qp42f.xn--4xa3011w; [B2, B3, V6] # .ς
+󲚗\u200C。\u200C𞰆Σ; 󲚗\u200C.\u200C𞰆σ; [B1, B6, C1, V6]; xn--0ug76062m.xn--4xa595lhn92a; ; xn--qp42f.xn--4xa3011w; [B2, B3, V6] # .σ
+󲚗\u200C。\u200C𞰆σ; 󲚗\u200C.\u200C𞰆σ; [B1, B6, C1, V6]; xn--0ug76062m.xn--4xa595lhn92a; ; xn--qp42f.xn--4xa3011w; [B2, B3, V6] # .σ
xn--qp42f.xn--4xa3011w; 󲚗.𞰆σ; [B2, B3, V6]; xn--qp42f.xn--4xa3011w; ; ; # .σ
xn--0ug76062m.xn--4xa595lhn92a; 󲚗\u200C.\u200C𞰆σ; [B1, B6, C1, V6]; xn--0ug76062m.xn--4xa595lhn92a; ; ; # .σ
xn--0ug76062m.xn--3xa795lhn92a; 󲚗\u200C.\u200C𞰆ς; [B1, B6, C1, V6]; xn--0ug76062m.xn--3xa795lhn92a; ; ; # .ς
-󲚗\u200C。\u200C𞰆Σ; 󲚗\u200C.\u200C𞰆σ; [B1, B6, C1, P1, V6]; xn--0ug76062m.xn--4xa595lhn92a; ; xn--qp42f.xn--4xa3011w; [B2, B3, P1, V6] # .σ
-󲚗\u200C。\u200C𞰆σ; 󲚗\u200C.\u200C𞰆σ; [B1, B6, C1, P1, V6]; xn--0ug76062m.xn--4xa595lhn92a; ; xn--qp42f.xn--4xa3011w; [B2, B3, P1, V6] # .σ
+󲚗\u200C。\u200C𞰆Σ; 󲚗\u200C.\u200C𞰆σ; [B1, B6, C1, V6]; xn--0ug76062m.xn--4xa595lhn92a; ; xn--qp42f.xn--4xa3011w; [B2, B3, V6] # .σ
+󲚗\u200C。\u200C𞰆σ; 󲚗\u200C.\u200C𞰆σ; [B1, B6, C1, V6]; xn--0ug76062m.xn--4xa595lhn92a; ; xn--qp42f.xn--4xa3011w; [B2, B3, V6] # .σ
å •ð‘“‚\u1B02。ð®‡ðž¤½\u200C-; å •ð‘“‚\u1B02.ð®‡ðž¤½\u200C-; [B3, C1, V3]; xn--5sf345zdk8h.xn----rgnt157hwl9g; ; xn--5sf345zdk8h.xn----iv5iw606c; [B3, V3] # 堕𑓂ᬂ.ð®‡ðž¤½-
å •ð‘“‚\u1B02。ð®‡ðž¤›\u200C-; å •ð‘“‚\u1B02.ð®‡ðž¤½\u200C-; [B3, C1, V3]; xn--5sf345zdk8h.xn----rgnt157hwl9g; ; xn--5sf345zdk8h.xn----iv5iw606c; [B3, V3] # 堕𑓂ᬂ.ð®‡ðž¤½-
xn--5sf345zdk8h.xn----iv5iw606c; å •ð‘“‚\u1B02.ð®‡ðž¤½-; [B3, V3]; xn--5sf345zdk8h.xn----iv5iw606c; ; ; # 堕𑓂ᬂ.ð®‡ðž¤½-
@@ -1374,26 +1380,26 @@ xn--l8e1317j1ebz456b.xn--3xab95plx4a; ð¹¶ð‘†á¡•ðž¤¢.ᡥσ\u062AÏ‚; [B1, B5]; x
ð¹¶ð‘†á¡•ðž¤¢ï½¡á¡¥Î£\u062Aσ; ð¹¶ð‘†á¡•ðž¤¢.ᡥσ\u062Aσ; [B1, B5]; xn--l8e1317j1ebz456b.xn--4xaa85plx4a; ; ; # ð¹¶ð‘†á¡•ðž¤¢.ᡥσتσ
ð¹¶ð‘†á¡•ðž¤¢ï½¡á¡¥Î£\u062AÏ‚; ð¹¶ð‘†á¡•ðž¤¢.ᡥσ\u062AÏ‚; [B1, B5]; xn--l8e1317j1ebz456b.xn--3xab95plx4a; ; xn--l8e1317j1ebz456b.xn--4xaa85plx4a; # ð¹¶ð‘†á¡•ðž¤¢.ᡥσتς
ð¹¶ð‘†á¡•ðž¤¢ï½¡á¡¥Ïƒ\u062AÏ‚; ð¹¶ð‘†á¡•ðž¤¢.ᡥσ\u062AÏ‚; [B1, B5]; xn--l8e1317j1ebz456b.xn--3xab95plx4a; ; xn--l8e1317j1ebz456b.xn--4xaa85plx4a; # ð¹¶ð‘†á¡•ðž¤¢.ᡥσتς
-ó’°ï¼Ž-ðŸ»ÃŸ; ó’°.-5ß; [P1, V3, V6]; xn--t960e.xn---5-hia; ; xn--t960e.-5ss; # .-5ß
-ó’°.-5ß; ; [P1, V3, V6]; xn--t960e.xn---5-hia; ; xn--t960e.-5ss; # .-5ß
-ó’°.-5SS; ó’°.-5ss; [P1, V3, V6]; xn--t960e.-5ss; ; ; # .-5ss
-ó’°.-5ss; ; [P1, V3, V6]; xn--t960e.-5ss; ; ; # .-5ss
+ó’°ï¼Ž-ðŸ»ÃŸ; ó’°.-5ß; [V3, V6]; xn--t960e.xn---5-hia; ; xn--t960e.-5ss; # .-5ß
+ó’°.-5ß; ; [V3, V6]; xn--t960e.xn---5-hia; ; xn--t960e.-5ss; # .-5ß
+ó’°.-5SS; ó’°.-5ss; [V3, V6]; xn--t960e.-5ss; ; ; # .-5ss
+ó’°.-5ss; ; [V3, V6]; xn--t960e.-5ss; ; ; # .-5ss
xn--t960e.-5ss; ó’°.-5ss; [V3, V6]; xn--t960e.-5ss; ; ; # .-5ss
xn--t960e.xn---5-hia; ó’°.-5ß; [V3, V6]; xn--t960e.xn---5-hia; ; ; # .-5ß
-ó’°ï¼Ž-ðŸ»SS; ó’°.-5ss; [P1, V3, V6]; xn--t960e.-5ss; ; ; # .-5ss
-ó’°ï¼Ž-ðŸ»ss; ó’°.-5ss; [P1, V3, V6]; xn--t960e.-5ss; ; ; # .-5ss
-ó’°ï¼Ž-ðŸ»Ss; ó’°.-5ss; [P1, V3, V6]; xn--t960e.-5ss; ; ; # .-5ss
-ó’°.-5Ss; ó’°.-5ss; [P1, V3, V6]; xn--t960e.-5ss; ; ; # .-5ss
-\u200Dð¨¿.🤒Ⴥò‘®¶; ; [C2, P1, V6]; xn--1ug9533g.xn--9nd3211w0gz4b; ; xn--0s9c.xn--9nd3211w0gz4b; [P1, V5, V6] # ð¨¿.🤒Ⴥ
-\u200Dð¨¿.🤒ⴥò‘®¶; ; [C2, P1, V6]; xn--1ug9533g.xn--tljz038l0gz4b; ; xn--0s9c.xn--tljz038l0gz4b; [P1, V5, V6] # ð¨¿.🤒ⴥ
+ó’°ï¼Ž-ðŸ»SS; ó’°.-5ss; [V3, V6]; xn--t960e.-5ss; ; ; # .-5ss
+ó’°ï¼Ž-ðŸ»ss; ó’°.-5ss; [V3, V6]; xn--t960e.-5ss; ; ; # .-5ss
+ó’°ï¼Ž-ðŸ»Ss; ó’°.-5ss; [V3, V6]; xn--t960e.-5ss; ; ; # .-5ss
+ó’°.-5Ss; ó’°.-5ss; [V3, V6]; xn--t960e.-5ss; ; ; # .-5ss
+\u200Dð¨¿.🤒Ⴥò‘®¶; ; [C2, V6]; xn--1ug9533g.xn--9nd3211w0gz4b; ; xn--0s9c.xn--9nd3211w0gz4b; [V5, V6] # ð¨¿.🤒Ⴥ
+\u200Dð¨¿.🤒ⴥò‘®¶; ; [C2, V6]; xn--1ug9533g.xn--tljz038l0gz4b; ; xn--0s9c.xn--tljz038l0gz4b; [V5, V6] # ð¨¿.🤒ⴥ
xn--0s9c.xn--tljz038l0gz4b; ð¨¿.🤒ⴥò‘®¶; [V5, V6]; xn--0s9c.xn--tljz038l0gz4b; ; ; # ð¨¿.🤒ⴥ
xn--1ug9533g.xn--tljz038l0gz4b; \u200Dð¨¿.🤒ⴥò‘®¶; [C2, V6]; xn--1ug9533g.xn--tljz038l0gz4b; ; ; # ð¨¿.🤒ⴥ
xn--0s9c.xn--9nd3211w0gz4b; ð¨¿.🤒Ⴥò‘®¶; [V5, V6]; xn--0s9c.xn--9nd3211w0gz4b; ; ; # ð¨¿.🤒Ⴥ
xn--1ug9533g.xn--9nd3211w0gz4b; \u200Dð¨¿.🤒Ⴥò‘®¶; [C2, V6]; xn--1ug9533g.xn--9nd3211w0gz4b; ; ; # ð¨¿.🤒Ⴥ
-𵋅。ß𬵩\u200D; 𵋅.ß𬵩\u200D; [C2, P1, V6]; xn--ey1p.xn--zca870nz438b; ; xn--ey1p.xn--ss-eq36b; [P1, V6] # .ß𬵩
-𵋅。SS𬵩\u200D; 𵋅.ss𬵩\u200D; [C2, P1, V6]; xn--ey1p.xn--ss-n1tx0508a; ; xn--ey1p.xn--ss-eq36b; [P1, V6] # .ss𬵩
-𵋅。ss𬵩\u200D; 𵋅.ss𬵩\u200D; [C2, P1, V6]; xn--ey1p.xn--ss-n1tx0508a; ; xn--ey1p.xn--ss-eq36b; [P1, V6] # .ss𬵩
-𵋅。Ss𬵩\u200D; 𵋅.ss𬵩\u200D; [C2, P1, V6]; xn--ey1p.xn--ss-n1tx0508a; ; xn--ey1p.xn--ss-eq36b; [P1, V6] # .ss𬵩
+𵋅。ß𬵩\u200D; 𵋅.ß𬵩\u200D; [C2, V6]; xn--ey1p.xn--zca870nz438b; ; xn--ey1p.xn--ss-eq36b; [V6] # .ß𬵩
+𵋅。SS𬵩\u200D; 𵋅.ss𬵩\u200D; [C2, V6]; xn--ey1p.xn--ss-n1tx0508a; ; xn--ey1p.xn--ss-eq36b; [V6] # .ss𬵩
+𵋅。ss𬵩\u200D; 𵋅.ss𬵩\u200D; [C2, V6]; xn--ey1p.xn--ss-n1tx0508a; ; xn--ey1p.xn--ss-eq36b; [V6] # .ss𬵩
+𵋅。Ss𬵩\u200D; 𵋅.ss𬵩\u200D; [C2, V6]; xn--ey1p.xn--ss-n1tx0508a; ; xn--ey1p.xn--ss-eq36b; [V6] # .ss𬵩
xn--ey1p.xn--ss-eq36b; 𵋅.ss𬵩; [V6]; xn--ey1p.xn--ss-eq36b; ; ; # .ss𬵩
xn--ey1p.xn--ss-n1tx0508a; 𵋅.ss𬵩\u200D; [C2, V6]; xn--ey1p.xn--ss-n1tx0508a; ; ; # .ss𬵩
xn--ey1p.xn--zca870nz438b; 𵋅.ß𬵩\u200D; [C2, V6]; xn--ey1p.xn--zca870nz438b; ; ; # .ß𬵩
@@ -1401,90 +1407,90 @@ xn--ey1p.xn--zca870nz438b; 𵋅.ß𬵩\u200D; [C2, V6]; xn--ey1p.xn--zca870nz438
\u200Cð­‰ã€‚\u07F1\u0301\u063A; \u200Cð­‰.\u07F1\u0301\u063A; [B1, C1, V5]; xn--0ugy003y.xn--lsa46nuub; ; xn--634m.xn--lsa46nuub; [B1, V5] # ð­‰.ß±Ìغ
xn--634m.xn--lsa46nuub; ð­‰.\u07F1\u0301\u063A; [B1, V5]; xn--634m.xn--lsa46nuub; ; ; # ð­‰.ß±Ìغ
xn--0ugy003y.xn--lsa46nuub; \u200Cð­‰.\u07F1\u0301\u063A; [B1, C1, V5]; xn--0ugy003y.xn--lsa46nuub; ; ; # ð­‰.ß±Ìغ
-𞼌\u200C𑈶。ð¹¡; 𞼌\u200C𑈶.ð¹¡; [B1, B3, C1, P1, V6]; xn--0ug7946gzpxf.xn--8n0d; ; xn--9g1d1288a.xn--8n0d; [B1, P1, V6] # 𑈶.ð¹¡
+𞼌\u200C𑈶。ð¹¡; 𞼌\u200C𑈶.ð¹¡; [B1, B3, C1, V6]; xn--0ug7946gzpxf.xn--8n0d; ; xn--9g1d1288a.xn--8n0d; [B1, V6] # 𑈶.ð¹¡
xn--9g1d1288a.xn--8n0d; 𞼌𑈶.ð¹¡; [B1, V6]; xn--9g1d1288a.xn--8n0d; ; ; # 𑈶.ð¹¡
xn--0ug7946gzpxf.xn--8n0d; 𞼌\u200C𑈶.ð¹¡; [B1, B3, C1, V6]; xn--0ug7946gzpxf.xn--8n0d; ; ; # 𑈶.ð¹¡
-󠅯򇽭\u200C🜭。𑖿\u1ABBς≠; 򇽭\u200C🜭.𑖿\u1ABBς≠; [C1, P1, V5, V6]; xn--0ug3766p5nm1b.xn--3xa578i1mfjw7y; ; xn--zb9h5968x.xn--4xa378i1mfjw7y; [P1, V5, V6] # 🜭.𑖿᪻ς≠
-󠅯򇽭\u200C🜭。𑖿\u1ABBς=\u0338; 򇽭\u200C🜭.𑖿\u1ABBς≠; [C1, P1, V5, V6]; xn--0ug3766p5nm1b.xn--3xa578i1mfjw7y; ; xn--zb9h5968x.xn--4xa378i1mfjw7y; [P1, V5, V6] # 🜭.𑖿᪻ς≠
-󠅯򇽭\u200C🜭。𑖿\u1ABBς≠; 򇽭\u200C🜭.𑖿\u1ABBς≠; [C1, P1, V5, V6]; xn--0ug3766p5nm1b.xn--3xa578i1mfjw7y; ; xn--zb9h5968x.xn--4xa378i1mfjw7y; [P1, V5, V6] # 🜭.𑖿᪻ς≠
-󠅯򇽭\u200C🜭。𑖿\u1ABBς=\u0338; 򇽭\u200C🜭.𑖿\u1ABBς≠; [C1, P1, V5, V6]; xn--0ug3766p5nm1b.xn--3xa578i1mfjw7y; ; xn--zb9h5968x.xn--4xa378i1mfjw7y; [P1, V5, V6] # 🜭.𑖿᪻ς≠
-󠅯򇽭\u200C🜭。𑖿\u1ABBΣ=\u0338; 򇽭\u200C🜭.𑖿\u1ABBσ≠; [C1, P1, V5, V6]; xn--0ug3766p5nm1b.xn--4xa378i1mfjw7y; ; xn--zb9h5968x.xn--4xa378i1mfjw7y; [P1, V5, V6] # 🜭.𑖿᪻σ≠
-󠅯򇽭\u200C🜭。𑖿\u1ABBΣ≠; 򇽭\u200C🜭.𑖿\u1ABBσ≠; [C1, P1, V5, V6]; xn--0ug3766p5nm1b.xn--4xa378i1mfjw7y; ; xn--zb9h5968x.xn--4xa378i1mfjw7y; [P1, V5, V6] # 🜭.𑖿᪻σ≠
-󠅯򇽭\u200C🜭。𑖿\u1ABBσ≠; 򇽭\u200C🜭.𑖿\u1ABBσ≠; [C1, P1, V5, V6]; xn--0ug3766p5nm1b.xn--4xa378i1mfjw7y; ; xn--zb9h5968x.xn--4xa378i1mfjw7y; [P1, V5, V6] # 🜭.𑖿᪻σ≠
-󠅯򇽭\u200C🜭。𑖿\u1ABBσ=\u0338; 򇽭\u200C🜭.𑖿\u1ABBσ≠; [C1, P1, V5, V6]; xn--0ug3766p5nm1b.xn--4xa378i1mfjw7y; ; xn--zb9h5968x.xn--4xa378i1mfjw7y; [P1, V5, V6] # 🜭.𑖿᪻σ≠
+󠅯򇽭\u200C🜭。𑖿\u1ABBς≠; 򇽭\u200C🜭.𑖿\u1ABBς≠; [C1, V5, V6]; xn--0ug3766p5nm1b.xn--3xa578i1mfjw7y; ; xn--zb9h5968x.xn--4xa378i1mfjw7y; [V5, V6] # 🜭.𑖿᪻ς≠
+󠅯򇽭\u200C🜭。𑖿\u1ABBς=\u0338; 򇽭\u200C🜭.𑖿\u1ABBς≠; [C1, V5, V6]; xn--0ug3766p5nm1b.xn--3xa578i1mfjw7y; ; xn--zb9h5968x.xn--4xa378i1mfjw7y; [V5, V6] # 🜭.𑖿᪻ς≠
+󠅯򇽭\u200C🜭。𑖿\u1ABBς≠; 򇽭\u200C🜭.𑖿\u1ABBς≠; [C1, V5, V6]; xn--0ug3766p5nm1b.xn--3xa578i1mfjw7y; ; xn--zb9h5968x.xn--4xa378i1mfjw7y; [V5, V6] # 🜭.𑖿᪻ς≠
+󠅯򇽭\u200C🜭。𑖿\u1ABBς=\u0338; 򇽭\u200C🜭.𑖿\u1ABBς≠; [C1, V5, V6]; xn--0ug3766p5nm1b.xn--3xa578i1mfjw7y; ; xn--zb9h5968x.xn--4xa378i1mfjw7y; [V5, V6] # 🜭.𑖿᪻ς≠
+󠅯򇽭\u200C🜭。𑖿\u1ABBΣ=\u0338; 򇽭\u200C🜭.𑖿\u1ABBσ≠; [C1, V5, V6]; xn--0ug3766p5nm1b.xn--4xa378i1mfjw7y; ; xn--zb9h5968x.xn--4xa378i1mfjw7y; [V5, V6] # 🜭.𑖿᪻σ≠
+󠅯򇽭\u200C🜭。𑖿\u1ABBΣ≠; 򇽭\u200C🜭.𑖿\u1ABBσ≠; [C1, V5, V6]; xn--0ug3766p5nm1b.xn--4xa378i1mfjw7y; ; xn--zb9h5968x.xn--4xa378i1mfjw7y; [V5, V6] # 🜭.𑖿᪻σ≠
+󠅯򇽭\u200C🜭。𑖿\u1ABBσ≠; 򇽭\u200C🜭.𑖿\u1ABBσ≠; [C1, V5, V6]; xn--0ug3766p5nm1b.xn--4xa378i1mfjw7y; ; xn--zb9h5968x.xn--4xa378i1mfjw7y; [V5, V6] # 🜭.𑖿᪻σ≠
+󠅯򇽭\u200C🜭。𑖿\u1ABBσ=\u0338; 򇽭\u200C🜭.𑖿\u1ABBσ≠; [C1, V5, V6]; xn--0ug3766p5nm1b.xn--4xa378i1mfjw7y; ; xn--zb9h5968x.xn--4xa378i1mfjw7y; [V5, V6] # 🜭.𑖿᪻σ≠
xn--zb9h5968x.xn--4xa378i1mfjw7y; 򇽭🜭.𑖿\u1ABBσ≠; [V5, V6]; xn--zb9h5968x.xn--4xa378i1mfjw7y; ; ; # 🜭.𑖿᪻σ≠
xn--0ug3766p5nm1b.xn--4xa378i1mfjw7y; 򇽭\u200C🜭.𑖿\u1ABBσ≠; [C1, V5, V6]; xn--0ug3766p5nm1b.xn--4xa378i1mfjw7y; ; ; # 🜭.𑖿᪻σ≠
xn--0ug3766p5nm1b.xn--3xa578i1mfjw7y; 򇽭\u200C🜭.𑖿\u1ABBς≠; [C1, V5, V6]; xn--0ug3766p5nm1b.xn--3xa578i1mfjw7y; ; ; # 🜭.𑖿᪻ς≠
-󠅯򇽭\u200C🜭。𑖿\u1ABBΣ=\u0338; 򇽭\u200C🜭.𑖿\u1ABBσ≠; [C1, P1, V5, V6]; xn--0ug3766p5nm1b.xn--4xa378i1mfjw7y; ; xn--zb9h5968x.xn--4xa378i1mfjw7y; [P1, V5, V6] # 🜭.𑖿᪻σ≠
-󠅯򇽭\u200C🜭。𑖿\u1ABBΣ≠; 򇽭\u200C🜭.𑖿\u1ABBσ≠; [C1, P1, V5, V6]; xn--0ug3766p5nm1b.xn--4xa378i1mfjw7y; ; xn--zb9h5968x.xn--4xa378i1mfjw7y; [P1, V5, V6] # 🜭.𑖿᪻σ≠
-󠅯򇽭\u200C🜭。𑖿\u1ABBσ≠; 򇽭\u200C🜭.𑖿\u1ABBσ≠; [C1, P1, V5, V6]; xn--0ug3766p5nm1b.xn--4xa378i1mfjw7y; ; xn--zb9h5968x.xn--4xa378i1mfjw7y; [P1, V5, V6] # 🜭.𑖿᪻σ≠
-󠅯򇽭\u200C🜭。𑖿\u1ABBσ=\u0338; 򇽭\u200C🜭.𑖿\u1ABBσ≠; [C1, P1, V5, V6]; xn--0ug3766p5nm1b.xn--4xa378i1mfjw7y; ; xn--zb9h5968x.xn--4xa378i1mfjw7y; [P1, V5, V6] # 🜭.𑖿᪻σ≠
-⒋。⒈\u200D򳴢; ⒋.⒈\u200D򳴢; [C2, P1, V6]; xn--wsh.xn--1ug58o74922a; ; xn--wsh.xn--tsh07994h; [P1, V6] # ⒋.⒈
-4.。1.\u200D򳴢; 4..1.\u200D򳴢; [C2, P1, V6, X4_2]; 4..1.xn--1ug64613i; [C2, P1, V6, A4_2]; 4..1.xn--sf51d; [P1, V6, A4_2] # 4..1.
+󠅯򇽭\u200C🜭。𑖿\u1ABBΣ=\u0338; 򇽭\u200C🜭.𑖿\u1ABBσ≠; [C1, V5, V6]; xn--0ug3766p5nm1b.xn--4xa378i1mfjw7y; ; xn--zb9h5968x.xn--4xa378i1mfjw7y; [V5, V6] # 🜭.𑖿᪻σ≠
+󠅯򇽭\u200C🜭。𑖿\u1ABBΣ≠; 򇽭\u200C🜭.𑖿\u1ABBσ≠; [C1, V5, V6]; xn--0ug3766p5nm1b.xn--4xa378i1mfjw7y; ; xn--zb9h5968x.xn--4xa378i1mfjw7y; [V5, V6] # 🜭.𑖿᪻σ≠
+󠅯򇽭\u200C🜭。𑖿\u1ABBσ≠; 򇽭\u200C🜭.𑖿\u1ABBσ≠; [C1, V5, V6]; xn--0ug3766p5nm1b.xn--4xa378i1mfjw7y; ; xn--zb9h5968x.xn--4xa378i1mfjw7y; [V5, V6] # 🜭.𑖿᪻σ≠
+󠅯򇽭\u200C🜭。𑖿\u1ABBσ=\u0338; 򇽭\u200C🜭.𑖿\u1ABBσ≠; [C1, V5, V6]; xn--0ug3766p5nm1b.xn--4xa378i1mfjw7y; ; xn--zb9h5968x.xn--4xa378i1mfjw7y; [V5, V6] # 🜭.𑖿᪻σ≠
+⒋。⒈\u200D򳴢; ⒋.⒈\u200D򳴢; [C2, V6]; xn--wsh.xn--1ug58o74922a; ; xn--wsh.xn--tsh07994h; [V6] # ⒋.⒈
+4.。1.\u200D򳴢; 4..1.\u200D򳴢; [C2, V6, X4_2]; 4..1.xn--1ug64613i; [C2, V6, A4_2]; 4..1.xn--sf51d; [V6, A4_2] # 4..1.
4..1.xn--sf51d; 4..1.ò³´¢; [V6, X4_2]; 4..1.xn--sf51d; [V6, A4_2]; ; # 4..1.
4..1.xn--1ug64613i; 4..1.\u200Dò³´¢; [C2, V6, X4_2]; 4..1.xn--1ug64613i; [C2, V6, A4_2]; ; # 4..1.
xn--wsh.xn--tsh07994h; â’‹.â’ˆò³´¢; [V6]; xn--wsh.xn--tsh07994h; ; ; # â’‹.â’ˆ
xn--wsh.xn--1ug58o74922a; â’‹.â’ˆ\u200Dò³´¢; [C2, V6]; xn--wsh.xn--1ug58o74922a; ; ; # â’‹.â’ˆ
-\u0644ß。ð‡½\u1A60ò¾…¢ðž¤¾; \u0644ß.\u1A60ð‡½ò¾…¢ðž¤¾; [B1, B2, B3, P1, V5, V6]; xn--zca57y.xn--jof2298hn83fln78f; ; xn--ss-svd.xn--jof2298hn83fln78f; # لß.á© ð‡½ðž¤¾
-\u0644ß。\u1A60ð‡½ò¾…¢ðž¤¾; \u0644ß.\u1A60ð‡½ò¾…¢ðž¤¾; [B1, B2, B3, P1, V5, V6]; xn--zca57y.xn--jof2298hn83fln78f; ; xn--ss-svd.xn--jof2298hn83fln78f; # لß.á© ð‡½ðž¤¾
-\u0644ß。\u1A60ð‡½ò¾…¢ðž¤¾; \u0644ß.\u1A60ð‡½ò¾…¢ðž¤¾; [B1, B2, B3, P1, V5, V6]; xn--zca57y.xn--jof2298hn83fln78f; ; xn--ss-svd.xn--jof2298hn83fln78f; # لß.á© ð‡½ðž¤¾
-\u0644SS。\u1A60ð‡½ò¾…¢ðž¤œ; \u0644ss.\u1A60ð‡½ò¾…¢ðž¤¾; [B1, B2, B3, P1, V5, V6]; xn--ss-svd.xn--jof2298hn83fln78f; ; ; # Ù„ss.á© ð‡½ðž¤¾
-\u0644ss。\u1A60ð‡½ò¾…¢ðž¤¾; \u0644ss.\u1A60ð‡½ò¾…¢ðž¤¾; [B1, B2, B3, P1, V5, V6]; xn--ss-svd.xn--jof2298hn83fln78f; ; ; # Ù„ss.á© ð‡½ðž¤¾
-\u0644ss。\u1A60ð‡½ò¾…¢ðž¤œ; \u0644ss.\u1A60ð‡½ò¾…¢ðž¤¾; [B1, B2, B3, P1, V5, V6]; xn--ss-svd.xn--jof2298hn83fln78f; ; ; # Ù„ss.á© ð‡½ðž¤¾
+\u0644ß。ð‡½\u1A60ò¾…¢ðž¤¾; \u0644ß.\u1A60ð‡½ò¾…¢ðž¤¾; [B1, B2, B3, V5, V6]; xn--zca57y.xn--jof2298hn83fln78f; ; xn--ss-svd.xn--jof2298hn83fln78f; # لß.á© ð‡½ðž¤¾
+\u0644ß。\u1A60ð‡½ò¾…¢ðž¤¾; \u0644ß.\u1A60ð‡½ò¾…¢ðž¤¾; [B1, B2, B3, V5, V6]; xn--zca57y.xn--jof2298hn83fln78f; ; xn--ss-svd.xn--jof2298hn83fln78f; # لß.á© ð‡½ðž¤¾
+\u0644ß。\u1A60ð‡½ò¾…¢ðž¤¾; \u0644ß.\u1A60ð‡½ò¾…¢ðž¤¾; [B1, B2, B3, V5, V6]; xn--zca57y.xn--jof2298hn83fln78f; ; xn--ss-svd.xn--jof2298hn83fln78f; # لß.á© ð‡½ðž¤¾
+\u0644SS。\u1A60ð‡½ò¾…¢ðž¤œ; \u0644ss.\u1A60ð‡½ò¾…¢ðž¤¾; [B1, B2, B3, V5, V6]; xn--ss-svd.xn--jof2298hn83fln78f; ; ; # Ù„ss.á© ð‡½ðž¤¾
+\u0644ss。\u1A60ð‡½ò¾…¢ðž¤¾; \u0644ss.\u1A60ð‡½ò¾…¢ðž¤¾; [B1, B2, B3, V5, V6]; xn--ss-svd.xn--jof2298hn83fln78f; ; ; # Ù„ss.á© ð‡½ðž¤¾
+\u0644ss。\u1A60ð‡½ò¾…¢ðž¤œ; \u0644ss.\u1A60ð‡½ò¾…¢ðž¤¾; [B1, B2, B3, V5, V6]; xn--ss-svd.xn--jof2298hn83fln78f; ; ; # Ù„ss.á© ð‡½ðž¤¾
xn--ss-svd.xn--jof2298hn83fln78f; \u0644ss.\u1A60ð‡½ò¾…¢ðž¤¾; [B1, B2, B3, V5, V6]; xn--ss-svd.xn--jof2298hn83fln78f; ; ; # Ù„ss.á© ð‡½ðž¤¾
-\u0644ß。\u1A60ð‡½ò¾…¢ðž¤œ; \u0644ß.\u1A60ð‡½ò¾…¢ðž¤¾; [B1, B2, B3, P1, V5, V6]; xn--zca57y.xn--jof2298hn83fln78f; ; xn--ss-svd.xn--jof2298hn83fln78f; # لß.á© ð‡½ðž¤¾
+\u0644ß。\u1A60ð‡½ò¾…¢ðž¤œ; \u0644ß.\u1A60ð‡½ò¾…¢ðž¤¾; [B1, B2, B3, V5, V6]; xn--zca57y.xn--jof2298hn83fln78f; ; xn--ss-svd.xn--jof2298hn83fln78f; # لß.á© ð‡½ðž¤¾
xn--zca57y.xn--jof2298hn83fln78f; \u0644ß.\u1A60ð‡½ò¾…¢ðž¤¾; [B1, B2, B3, V5, V6]; xn--zca57y.xn--jof2298hn83fln78f; ; ; # لß.á© ð‡½ðž¤¾
-\u0644SS。\u1A60ð‡½ò¾…¢ðž¤œ; \u0644ss.\u1A60ð‡½ò¾…¢ðž¤¾; [B1, B2, B3, P1, V5, V6]; xn--ss-svd.xn--jof2298hn83fln78f; ; ; # Ù„ss.á© ð‡½ðž¤¾
-\u0644ss。\u1A60ð‡½ò¾…¢ðž¤¾; \u0644ss.\u1A60ð‡½ò¾…¢ðž¤¾; [B1, B2, B3, P1, V5, V6]; xn--ss-svd.xn--jof2298hn83fln78f; ; ; # Ù„ss.á© ð‡½ðž¤¾
-\u0644ss。\u1A60ð‡½ò¾…¢ðž¤œ; \u0644ss.\u1A60ð‡½ò¾…¢ðž¤¾; [B1, B2, B3, P1, V5, V6]; xn--ss-svd.xn--jof2298hn83fln78f; ; ; # Ù„ss.á© ð‡½ðž¤¾
-\u0644ß。\u1A60ð‡½ò¾…¢ðž¤œ; \u0644ß.\u1A60ð‡½ò¾…¢ðž¤¾; [B1, B2, B3, P1, V5, V6]; xn--zca57y.xn--jof2298hn83fln78f; ; xn--ss-svd.xn--jof2298hn83fln78f; # لß.á© ð‡½ðž¤¾
-\u0644SS。ð‡½\u1A60ò¾…¢ðž¤œ; \u0644ss.\u1A60ð‡½ò¾…¢ðž¤¾; [B1, B2, B3, P1, V5, V6]; xn--ss-svd.xn--jof2298hn83fln78f; ; ; # Ù„ss.á© ð‡½ðž¤¾
-\u0644ss。ð‡½\u1A60ò¾…¢ðž¤¾; \u0644ss.\u1A60ð‡½ò¾…¢ðž¤¾; [B1, B2, B3, P1, V5, V6]; xn--ss-svd.xn--jof2298hn83fln78f; ; ; # Ù„ss.á© ð‡½ðž¤¾
-\u0644ss。ð‡½\u1A60ò¾…¢ðž¤œ; \u0644ss.\u1A60ð‡½ò¾…¢ðž¤¾; [B1, B2, B3, P1, V5, V6]; xn--ss-svd.xn--jof2298hn83fln78f; ; ; # Ù„ss.á© ð‡½ðž¤¾
-\u0644ß。ð‡½\u1A60ò¾…¢ðž¤œ; \u0644ß.\u1A60ð‡½ò¾…¢ðž¤¾; [B1, B2, B3, P1, V5, V6]; xn--zca57y.xn--jof2298hn83fln78f; ; xn--ss-svd.xn--jof2298hn83fln78f; # لß.á© ð‡½ðž¤¾
-\u0644SS。\u1A60ð‡½ò¾…¢ðž¤¾; \u0644ss.\u1A60ð‡½ò¾…¢ðž¤¾; [B1, B2, B3, P1, V5, V6]; xn--ss-svd.xn--jof2298hn83fln78f; ; ; # Ù„ss.á© ð‡½ðž¤¾
-\u0644Ss。\u1A60ð‡½ò¾…¢ðž¤¾; \u0644ss.\u1A60ð‡½ò¾…¢ðž¤¾; [B1, B2, B3, P1, V5, V6]; xn--ss-svd.xn--jof2298hn83fln78f; ; ; # Ù„ss.á© ð‡½ðž¤¾
-\u0644SS。\u1A60ð‡½ò¾…¢ðž¤¾; \u0644ss.\u1A60ð‡½ò¾…¢ðž¤¾; [B1, B2, B3, P1, V5, V6]; xn--ss-svd.xn--jof2298hn83fln78f; ; ; # Ù„ss.á© ð‡½ðž¤¾
-\u0644Ss。\u1A60ð‡½ò¾…¢ðž¤¾; \u0644ss.\u1A60ð‡½ò¾…¢ðž¤¾; [B1, B2, B3, P1, V5, V6]; xn--ss-svd.xn--jof2298hn83fln78f; ; ; # Ù„ss.á© ð‡½ðž¤¾
-\u0644SS。ð‡½\u1A60ò¾…¢ðž¤¾; \u0644ss.\u1A60ð‡½ò¾…¢ðž¤¾; [B1, B2, B3, P1, V5, V6]; xn--ss-svd.xn--jof2298hn83fln78f; ; ; # Ù„ss.á© ð‡½ðž¤¾
-\u0644Ss。ð‡½\u1A60ò¾…¢ðž¤¾; \u0644ss.\u1A60ð‡½ò¾…¢ðž¤¾; [B1, B2, B3, P1, V5, V6]; xn--ss-svd.xn--jof2298hn83fln78f; ; ; # Ù„ss.á© ð‡½ðž¤¾
-ð¹½ð‘„³ñ¼œ².\u1DDF\u17B8\uA806𑜫; ; [B1, B3, B6, P1, V5, V6]; xn--1o0di0c0652w.xn--33e362arr1l153d; ; ; # ð¹½ð‘„³.ᷟី꠆𑜫
-xn--1o0di0c0652w.xn--33e362arr1l153d; ð¹½ð‘„³ñ¼œ².\u1DDF\u17B8\uA806𑜫; [B1, B3, B6, V5, V6]; xn--1o0di0c0652w.xn--33e362arr1l153d; ; ; # ð¹½ð‘„³.ᷟី꠆𑜫
-Ⴓ𑜫\u200D򗭓.\u06A7𑰶; Ⴓ𑜫\u200D򗭓.\u06A7𑰶; [P1, V6]; xn--rnd479ep20q7x12e.xn--9jb4223l; ; xn--rnd8945ky009c.xn--9jb4223l; # Ⴓ𑜫.ڧ𑰶
-Ⴓ𑜫\u200D򗭓.\u06A7𑰶; ; [P1, V6]; xn--rnd479ep20q7x12e.xn--9jb4223l; ; xn--rnd8945ky009c.xn--9jb4223l; # Ⴓ𑜫.ڧ𑰶
-ⴓ𑜫\u200D򗭓.\u06A7𑰶; ; [P1, V6]; xn--1ugy52cym7p7xu5e.xn--9jb4223l; ; xn--blj6306ey091d.xn--9jb4223l; # ⴓ𑜫.ڧ𑰶
+\u0644SS。\u1A60ð‡½ò¾…¢ðž¤œ; \u0644ss.\u1A60ð‡½ò¾…¢ðž¤¾; [B1, B2, B3, V5, V6]; xn--ss-svd.xn--jof2298hn83fln78f; ; ; # Ù„ss.á© ð‡½ðž¤¾
+\u0644ss。\u1A60ð‡½ò¾…¢ðž¤¾; \u0644ss.\u1A60ð‡½ò¾…¢ðž¤¾; [B1, B2, B3, V5, V6]; xn--ss-svd.xn--jof2298hn83fln78f; ; ; # Ù„ss.á© ð‡½ðž¤¾
+\u0644ss。\u1A60ð‡½ò¾…¢ðž¤œ; \u0644ss.\u1A60ð‡½ò¾…¢ðž¤¾; [B1, B2, B3, V5, V6]; xn--ss-svd.xn--jof2298hn83fln78f; ; ; # Ù„ss.á© ð‡½ðž¤¾
+\u0644ß。\u1A60ð‡½ò¾…¢ðž¤œ; \u0644ß.\u1A60ð‡½ò¾…¢ðž¤¾; [B1, B2, B3, V5, V6]; xn--zca57y.xn--jof2298hn83fln78f; ; xn--ss-svd.xn--jof2298hn83fln78f; # لß.á© ð‡½ðž¤¾
+\u0644SS。ð‡½\u1A60ò¾…¢ðž¤œ; \u0644ss.\u1A60ð‡½ò¾…¢ðž¤¾; [B1, B2, B3, V5, V6]; xn--ss-svd.xn--jof2298hn83fln78f; ; ; # Ù„ss.á© ð‡½ðž¤¾
+\u0644ss。ð‡½\u1A60ò¾…¢ðž¤¾; \u0644ss.\u1A60ð‡½ò¾…¢ðž¤¾; [B1, B2, B3, V5, V6]; xn--ss-svd.xn--jof2298hn83fln78f; ; ; # Ù„ss.á© ð‡½ðž¤¾
+\u0644ss。ð‡½\u1A60ò¾…¢ðž¤œ; \u0644ss.\u1A60ð‡½ò¾…¢ðž¤¾; [B1, B2, B3, V5, V6]; xn--ss-svd.xn--jof2298hn83fln78f; ; ; # Ù„ss.á© ð‡½ðž¤¾
+\u0644ß。ð‡½\u1A60ò¾…¢ðž¤œ; \u0644ß.\u1A60ð‡½ò¾…¢ðž¤¾; [B1, B2, B3, V5, V6]; xn--zca57y.xn--jof2298hn83fln78f; ; xn--ss-svd.xn--jof2298hn83fln78f; # لß.á© ð‡½ðž¤¾
+\u0644SS。\u1A60ð‡½ò¾…¢ðž¤¾; \u0644ss.\u1A60ð‡½ò¾…¢ðž¤¾; [B1, B2, B3, V5, V6]; xn--ss-svd.xn--jof2298hn83fln78f; ; ; # Ù„ss.á© ð‡½ðž¤¾
+\u0644Ss。\u1A60ð‡½ò¾…¢ðž¤¾; \u0644ss.\u1A60ð‡½ò¾…¢ðž¤¾; [B1, B2, B3, V5, V6]; xn--ss-svd.xn--jof2298hn83fln78f; ; ; # Ù„ss.á© ð‡½ðž¤¾
+\u0644SS。\u1A60ð‡½ò¾…¢ðž¤¾; \u0644ss.\u1A60ð‡½ò¾…¢ðž¤¾; [B1, B2, B3, V5, V6]; xn--ss-svd.xn--jof2298hn83fln78f; ; ; # Ù„ss.á© ð‡½ðž¤¾
+\u0644Ss。\u1A60ð‡½ò¾…¢ðž¤¾; \u0644ss.\u1A60ð‡½ò¾…¢ðž¤¾; [B1, B2, B3, V5, V6]; xn--ss-svd.xn--jof2298hn83fln78f; ; ; # Ù„ss.á© ð‡½ðž¤¾
+\u0644SS。ð‡½\u1A60ò¾…¢ðž¤¾; \u0644ss.\u1A60ð‡½ò¾…¢ðž¤¾; [B1, B2, B3, V5, V6]; xn--ss-svd.xn--jof2298hn83fln78f; ; ; # Ù„ss.á© ð‡½ðž¤¾
+\u0644Ss。ð‡½\u1A60ò¾…¢ðž¤¾; \u0644ss.\u1A60ð‡½ò¾…¢ðž¤¾; [B1, B2, B3, V5, V6]; xn--ss-svd.xn--jof2298hn83fln78f; ; ; # Ù„ss.á© ð‡½ðž¤¾
+ð¹½ð‘„³ñ¼œ².\u1DDF\u17B8\uA806𑜫; ; [B1, V5, V6]; xn--1o0di0c0652w.xn--33e362arr1l153d; ; ; # ð¹½ð‘„³.ᷟី꠆𑜫
+xn--1o0di0c0652w.xn--33e362arr1l153d; ð¹½ð‘„³ñ¼œ².\u1DDF\u17B8\uA806𑜫; [B1, V5, V6]; xn--1o0di0c0652w.xn--33e362arr1l153d; ; ; # ð¹½ð‘„³.ᷟី꠆𑜫
+Ⴓ𑜫\u200D򗭓.\u06A7𑰶; Ⴓ𑜫\u200D򗭓.\u06A7𑰶; [V6]; xn--rnd479ep20q7x12e.xn--9jb4223l; ; xn--rnd8945ky009c.xn--9jb4223l; # Ⴓ𑜫.ڧ𑰶
+Ⴓ𑜫\u200D򗭓.\u06A7𑰶; ; [V6]; xn--rnd479ep20q7x12e.xn--9jb4223l; ; xn--rnd8945ky009c.xn--9jb4223l; # Ⴓ𑜫.ڧ𑰶
+ⴓ𑜫\u200D򗭓.\u06A7𑰶; ; [V6]; xn--1ugy52cym7p7xu5e.xn--9jb4223l; ; xn--blj6306ey091d.xn--9jb4223l; # ⴓ𑜫.ڧ𑰶
xn--blj6306ey091d.xn--9jb4223l; ⴓ𑜫򗭓.\u06A7𑰶; [V6]; xn--blj6306ey091d.xn--9jb4223l; ; ; # ⴓ𑜫.ڧ𑰶
xn--1ugy52cym7p7xu5e.xn--9jb4223l; ⴓ𑜫\u200D򗭓.\u06A7𑰶; [V6]; xn--1ugy52cym7p7xu5e.xn--9jb4223l; ; ; # ⴓ𑜫.ڧ𑰶
xn--rnd8945ky009c.xn--9jb4223l; Ⴓ𑜫򗭓.\u06A7𑰶; [V6]; xn--rnd8945ky009c.xn--9jb4223l; ; ; # Ⴓ𑜫.ڧ𑰶
xn--rnd479ep20q7x12e.xn--9jb4223l; Ⴓ𑜫\u200D򗭓.\u06A7𑰶; [V6]; xn--rnd479ep20q7x12e.xn--9jb4223l; ; ; # Ⴓ𑜫.ڧ𑰶
-ⴓ𑜫\u200D򗭓.\u06A7𑰶; ⴓ𑜫\u200D򗭓.\u06A7𑰶; [P1, V6]; xn--1ugy52cym7p7xu5e.xn--9jb4223l; ; xn--blj6306ey091d.xn--9jb4223l; # ⴓ𑜫.ڧ𑰶
-ð¨¿.🄆—; ; [P1, V5, V6]; xn--0s9c.xn--8ug8324p; ; ; # ð¨¿.🄆—
-ð¨¿.5,—; ; [P1, V5, V6]; xn--0s9c.xn--5,-81t; ; ; # ð¨¿.5,—
-xn--0s9c.xn--5,-81t; ð¨¿.5,—; [P1, V5, V6]; xn--0s9c.xn--5,-81t; ; ; # ð¨¿.5,—
+ⴓ𑜫\u200D򗭓.\u06A7𑰶; ⴓ𑜫\u200D򗭓.\u06A7𑰶; [V6]; xn--1ugy52cym7p7xu5e.xn--9jb4223l; ; xn--blj6306ey091d.xn--9jb4223l; # ⴓ𑜫.ڧ𑰶
+ð¨¿.🄆—; ; [V5, V6]; xn--0s9c.xn--8ug8324p; ; ; # ð¨¿.🄆—
+ð¨¿.5,—; ; [V5, V6]; xn--0s9c.xn--5,-81t; ; ; # ð¨¿.5,—
+xn--0s9c.xn--5,-81t; ð¨¿.5,—; [V5, V6]; xn--0s9c.xn--5,-81t; ; ; # ð¨¿.5,—
xn--0s9c.xn--8ug8324p; ð¨¿.🄆—; [V5, V6]; xn--0s9c.xn--8ug8324p; ; ; # ð¨¿.🄆—
-ò”Š±ñ¦®Û¸ã€‚ó ¾­-; ò”Š±ñ¦®Û¸.ó ¾­-; [P1, V3, V6]; xn--lmb18944c0g2z.xn----2k81m; ; ; # Û¸.-
+ò”Š±ñ¦®Û¸ã€‚ó ¾­-; ò”Š±ñ¦®Û¸.ó ¾­-; [V3, V6]; xn--lmb18944c0g2z.xn----2k81m; ; ; # Û¸.-
xn--lmb18944c0g2z.xn----2k81m; ò”Š±ñ¦®Û¸.ó ¾­-; [V3, V6]; xn--lmb18944c0g2z.xn----2k81m; ; ; # Û¸.-
-ð¼—¸\u07CDð¹®ã€‚\u06DDá¡Žá ´; ð¼—¸\u07CDð¹®.\u06DDá¡Žá ´; [B1, B5, B6, P1, V6]; xn--osb0855kcc2r.xn--tlb299fhc; ; ; # ßð¹®.á¡Žá ´
+ð¼—¸\u07CDð¹®ã€‚\u06DDá¡Žá ´; ð¼—¸\u07CDð¹®.\u06DDá¡Žá ´; [B1, B5, B6, V6]; xn--osb0855kcc2r.xn--tlb299fhc; ; ; # ßð¹®.á¡Žá ´
xn--osb0855kcc2r.xn--tlb299fhc; ð¼—¸\u07CDð¹®.\u06DDá¡Žá ´; [B1, B5, B6, V6]; xn--osb0855kcc2r.xn--tlb299fhc; ; ; # ßð¹®.á¡Žá ´
-\u200DᠮႾ🄂.🚗\u0841𮹌\u200C; ; [B1, C1, C2, P1, V6]; xn--2nd129ay2gnw71c.xn--zvb692j9664aic1g; ; xn--2nd129ai554b.xn--zvb3124wpkpf; [B1, P1, V6] # ᠮႾ🄂.🚗à¡
-\u200DᠮႾ1,.🚗\u0841𮹌\u200C; ; [B1, C1, C2, P1, V6]; xn--1,-ogkx89c39j.xn--zvb692j9664aic1g; ; xn--1,-ogkx89c.xn--zvb3124wpkpf; [B1, B6, P1, V6] # ᠮႾ1,.🚗à¡
-\u200Dᠮⴞ1,.🚗\u0841𮹌\u200C; ; [B1, C1, C2, P1, V6]; xn--1,-v3o161c53q.xn--zvb692j9664aic1g; ; xn--1,-v3o625k.xn--zvb3124wpkpf; [B1, B6, P1, V6] # ᠮⴞ1,.🚗à¡
-xn--1,-v3o625k.xn--zvb3124wpkpf; ᠮⴞ1,.🚗\u0841𮹌; [B1, B6, P1, V6]; xn--1,-v3o625k.xn--zvb3124wpkpf; ; ; # ᠮⴞ1,.🚗à¡
-xn--1,-v3o161c53q.xn--zvb692j9664aic1g; \u200Dᠮⴞ1,.🚗\u0841𮹌\u200C; [B1, C1, C2, P1, V6]; xn--1,-v3o161c53q.xn--zvb692j9664aic1g; ; ; # ᠮⴞ1,.🚗à¡
-xn--1,-ogkx89c.xn--zvb3124wpkpf; ᠮႾ1,.🚗\u0841𮹌; [B1, B6, P1, V6]; xn--1,-ogkx89c.xn--zvb3124wpkpf; ; ; # ᠮႾ1,.🚗à¡
-xn--1,-ogkx89c39j.xn--zvb692j9664aic1g; \u200DᠮႾ1,.🚗\u0841𮹌\u200C; [B1, C1, C2, P1, V6]; xn--1,-ogkx89c39j.xn--zvb692j9664aic1g; ; ; # ᠮႾ1,.🚗à¡
-\u200Dᠮⴞ🄂.🚗\u0841𮹌\u200C; ; [B1, C1, C2, P1, V6]; xn--h7e341b0wlbv45b.xn--zvb692j9664aic1g; ; xn--h7e438h1p44a.xn--zvb3124wpkpf; [B1, P1, V6] # ᠮⴞ🄂.🚗à¡
-xn--h7e438h1p44a.xn--zvb3124wpkpf; ᠮⴞ🄂.🚗\u0841𮹌; [B1, V6]; xn--h7e438h1p44a.xn--zvb3124wpkpf; ; ; # ᠮⴞ🄂.🚗à¡
-xn--h7e341b0wlbv45b.xn--zvb692j9664aic1g; \u200Dᠮⴞ🄂.🚗\u0841𮹌\u200C; [B1, C1, C2, V6]; xn--h7e341b0wlbv45b.xn--zvb692j9664aic1g; ; ; # ᠮⴞ🄂.🚗à¡
-xn--2nd129ai554b.xn--zvb3124wpkpf; ᠮႾ🄂.🚗\u0841𮹌; [B1, V6]; xn--2nd129ai554b.xn--zvb3124wpkpf; ; ; # ᠮႾ🄂.🚗à¡
-xn--2nd129ay2gnw71c.xn--zvb692j9664aic1g; \u200DᠮႾ🄂.🚗\u0841𮹌\u200C; [B1, C1, C2, V6]; xn--2nd129ay2gnw71c.xn--zvb692j9664aic1g; ; ; # ᠮႾ🄂.🚗à¡
-\u0601\u0697.𑚶񼡷⾆; \u0601\u0697.𑚶񼡷舌; [B1, P1, V5, V6]; xn--jfb41a.xn--tc1ap851axo39c; ; ; # ڗ.𑚶舌
-\u0601\u0697.𑚶񼡷舌; ; [B1, P1, V5, V6]; xn--jfb41a.xn--tc1ap851axo39c; ; ; # ڗ.𑚶舌
+\u200DᠮႾ🄂.🚗\u0841𮹌\u200C; ; [B1, C1, C2, V6]; xn--2nd129ay2gnw71c.xn--zvb692j9664aic1g; ; xn--2nd129ai554b.xn--zvb3124wpkpf; [B1, V6] # ᠮႾ🄂.🚗à¡ð®¹Œ
+\u200DᠮႾ1,.🚗\u0841𮹌\u200C; ; [B1, C1, C2, V6]; xn--1,-ogkx89c39j.xn--zvb692j9664aic1g; ; xn--1,-ogkx89c.xn--zvb3124wpkpf; [B1, B6, V6] # ᠮႾ1,.🚗à¡ð®¹Œ
+\u200Dᠮⴞ1,.🚗\u0841𮹌\u200C; ; [B1, C1, C2, V6]; xn--1,-v3o161c53q.xn--zvb692j9664aic1g; ; xn--1,-v3o625k.xn--zvb3124wpkpf; [B1, B6, V6] # ᠮⴞ1,.🚗à¡ð®¹Œ
+xn--1,-v3o625k.xn--zvb3124wpkpf; ᠮⴞ1,.🚗\u0841𮹌; [B1, B6, V6]; xn--1,-v3o625k.xn--zvb3124wpkpf; ; ; # ᠮⴞ1,.🚗à¡ð®¹Œ
+xn--1,-v3o161c53q.xn--zvb692j9664aic1g; \u200Dᠮⴞ1,.🚗\u0841𮹌\u200C; [B1, C1, C2, V6]; xn--1,-v3o161c53q.xn--zvb692j9664aic1g; ; ; # ᠮⴞ1,.🚗à¡ð®¹Œ
+xn--1,-ogkx89c.xn--zvb3124wpkpf; ᠮႾ1,.🚗\u0841𮹌; [B1, B6, V6]; xn--1,-ogkx89c.xn--zvb3124wpkpf; ; ; # ᠮႾ1,.🚗à¡ð®¹Œ
+xn--1,-ogkx89c39j.xn--zvb692j9664aic1g; \u200DᠮႾ1,.🚗\u0841𮹌\u200C; [B1, C1, C2, V6]; xn--1,-ogkx89c39j.xn--zvb692j9664aic1g; ; ; # ᠮႾ1,.🚗à¡ð®¹Œ
+\u200Dᠮⴞ🄂.🚗\u0841𮹌\u200C; ; [B1, C1, C2, V6]; xn--h7e341b0wlbv45b.xn--zvb692j9664aic1g; ; xn--h7e438h1p44a.xn--zvb3124wpkpf; [B1, V6] # ᠮⴞ🄂.🚗à¡ð®¹Œ
+xn--h7e438h1p44a.xn--zvb3124wpkpf; ᠮⴞ🄂.🚗\u0841𮹌; [B1, V6]; xn--h7e438h1p44a.xn--zvb3124wpkpf; ; ; # ᠮⴞ🄂.🚗à¡ð®¹Œ
+xn--h7e341b0wlbv45b.xn--zvb692j9664aic1g; \u200Dᠮⴞ🄂.🚗\u0841𮹌\u200C; [B1, C1, C2, V6]; xn--h7e341b0wlbv45b.xn--zvb692j9664aic1g; ; ; # ᠮⴞ🄂.🚗à¡ð®¹Œ
+xn--2nd129ai554b.xn--zvb3124wpkpf; ᠮႾ🄂.🚗\u0841𮹌; [B1, V6]; xn--2nd129ai554b.xn--zvb3124wpkpf; ; ; # ᠮႾ🄂.🚗à¡ð®¹Œ
+xn--2nd129ay2gnw71c.xn--zvb692j9664aic1g; \u200DᠮႾ🄂.🚗\u0841𮹌\u200C; [B1, C1, C2, V6]; xn--2nd129ay2gnw71c.xn--zvb692j9664aic1g; ; ; # ᠮႾ🄂.🚗à¡ð®¹Œ
+\u0601\u0697.𑚶񼡷⾆; \u0601\u0697.𑚶񼡷舌; [B1, V5, V6]; xn--jfb41a.xn--tc1ap851axo39c; ; ; # ڗ.𑚶舌
+\u0601\u0697.𑚶񼡷舌; ; [B1, V5, V6]; xn--jfb41a.xn--tc1ap851axo39c; ; ; # ڗ.𑚶舌
xn--jfb41a.xn--tc1ap851axo39c; \u0601\u0697.𑚶񼡷舌; [B1, V5, V6]; xn--jfb41a.xn--tc1ap851axo39c; ; ; # ڗ.𑚶舌
-🞅󠳡óœ™.ñ²–·; ; [P1, V6]; xn--ie9hi1349bqdlb.xn--oj69a; ; ; # 🞅.
+🞅󠳡óœ™.ñ²–·; ; [V6]; xn--ie9hi1349bqdlb.xn--oj69a; ; ; # 🞅.
xn--ie9hi1349bqdlb.xn--oj69a; 🞅󠳡óœ™.ñ²–·; [V6]; xn--ie9hi1349bqdlb.xn--oj69a; ; ; # 🞅.
-\u20E7ñ¯¡Ž-ò«£.4Ⴄ\u200C; ; [C1, P1, V5, V6]; xn----9snu5320fi76w.xn--4-f0g649i; ; xn----9snu5320fi76w.xn--4-f0g; [P1, V5, V6] # ⃧-.4Ⴄ
-\u20E7ñ¯¡Ž-ò«£.4â´„\u200C; ; [C1, P1, V5, V6]; xn----9snu5320fi76w.xn--4-sgn589c; ; xn----9snu5320fi76w.xn--4-ivs; [P1, V5, V6] # ⃧-.4â´„
+\u20E7ñ¯¡Ž-ò«£.4Ⴄ\u200C; ; [C1, V5, V6]; xn----9snu5320fi76w.xn--4-f0g649i; ; xn----9snu5320fi76w.xn--4-f0g; [V5, V6] # ⃧-.4Ⴄ
+\u20E7ñ¯¡Ž-ò«£.4â´„\u200C; ; [C1, V5, V6]; xn----9snu5320fi76w.xn--4-sgn589c; ; xn----9snu5320fi76w.xn--4-ivs; [V5, V6] # ⃧-.4â´„
xn----9snu5320fi76w.xn--4-ivs; \u20E7ñ¯¡Ž-ò«£.4â´„; [V5, V6]; xn----9snu5320fi76w.xn--4-ivs; ; ; # ⃧-.4â´„
xn----9snu5320fi76w.xn--4-sgn589c; \u20E7ñ¯¡Ž-ò«£.4â´„\u200C; [C1, V5, V6]; xn----9snu5320fi76w.xn--4-sgn589c; ; ; # ⃧-.4â´„
xn----9snu5320fi76w.xn--4-f0g; \u20E7ñ¯¡Ž-ò«£.4Ⴄ; [V5, V6]; xn----9snu5320fi76w.xn--4-f0g; ; ; # ⃧-.4Ⴄ
@@ -1508,128 +1514,128 @@ xn--hwe.xn--zca4946pblnc; áš­.ðŒ ÃŸð–«±; ; xn--hwe.xn--zca4946pblnc; ; ; # áš­
1。𞤉ꡪ; 1.𞤫ꡪ; [B1, B2, B3]; 1.xn--gd9al691d; ; ; # 1.𞤫ꡪ
1.xn--gd9al691d; 1.𞤫ꡪ; [B1, B2, B3]; 1.xn--gd9al691d; ; ; # 1.𞤫ꡪ
â‚。𞤉ꡪ; 1.𞤫ꡪ; [B1, B2, B3]; 1.xn--gd9al691d; ; ; # 1.𞤫ꡪ
-𯻼\u200C.𞶞򻙤񥘇; ; [B2, B3, B6, C1, P1, V6]; xn--0ug27500a.xn--2b7hs861pl540a; ; xn--kg4n.xn--2b7hs861pl540a; [B2, B3, P1, V6] # .
+𯻼\u200C.𞶞򻙤񥘇; ; [B2, B3, B6, C1, V6]; xn--0ug27500a.xn--2b7hs861pl540a; ; xn--kg4n.xn--2b7hs861pl540a; [B2, B3, V6] # .
xn--kg4n.xn--2b7hs861pl540a; 𯻼.𞶞򻙤񥘇; [B2, B3, V6]; xn--kg4n.xn--2b7hs861pl540a; ; ; # .
xn--0ug27500a.xn--2b7hs861pl540a; 𯻼\u200C.𞶞򻙤񥘇; [B2, B3, B6, C1, V6]; xn--0ug27500a.xn--2b7hs861pl540a; ; ; # .
-𑑄≯。𑜤; 𑑄≯.𑜤; [P1, V5, V6]; xn--hdh5636g.xn--ci2d; ; ; # 𑑄≯.𑜤
-𑑄>\u0338。𑜤; 𑑄≯.𑜤; [P1, V5, V6]; xn--hdh5636g.xn--ci2d; ; ; # 𑑄≯.𑜤
-𑑄≯。𑜤; 𑑄≯.𑜤; [P1, V5, V6]; xn--hdh5636g.xn--ci2d; ; ; # 𑑄≯.𑜤
-𑑄>\u0338。𑜤; 𑑄≯.𑜤; [P1, V5, V6]; xn--hdh5636g.xn--ci2d; ; ; # 𑑄≯.𑜤
-xn--hdh5636g.xn--ci2d; 𑑄≯.𑜤; [V5, V6]; xn--hdh5636g.xn--ci2d; ; ; # 𑑄≯.𑜤
-Ⴋ≮𱲆。\u200D\u07A7ð‹£; Ⴋ≮𱲆.\u200D\u07A7ð‹£; [C2, P1, V6]; xn--jnd802gsm17c.xn--lrb506jqr4n; ; xn--jnd802gsm17c.xn--lrb6479j; [P1, V5, V6] # Ⴋ≮𱲆.Þ§ð‹£
-á‚«<\u0338𱲆。\u200D\u07A7ð‹£; Ⴋ≮𱲆.\u200D\u07A7ð‹£; [C2, P1, V6]; xn--jnd802gsm17c.xn--lrb506jqr4n; ; xn--jnd802gsm17c.xn--lrb6479j; [P1, V5, V6] # Ⴋ≮𱲆.Þ§ð‹£
-â´‹<\u0338𱲆。\u200D\u07A7ð‹£; ⴋ≮𱲆.\u200D\u07A7ð‹£; [C2, P1, V6]; xn--gdhz03bxt42d.xn--lrb506jqr4n; ; xn--gdhz03bxt42d.xn--lrb6479j; [P1, V5, V6] # ⴋ≮𱲆.Þ§ð‹£
-ⴋ≮𱲆。\u200D\u07A7ð‹£; ⴋ≮𱲆.\u200D\u07A7ð‹£; [C2, P1, V6]; xn--gdhz03bxt42d.xn--lrb506jqr4n; ; xn--gdhz03bxt42d.xn--lrb6479j; [P1, V5, V6] # ⴋ≮𱲆.Þ§ð‹£
-xn--gdhz03bxt42d.xn--lrb6479j; ⴋ≮𱲆.\u07A7ð‹£; [V5, V6]; xn--gdhz03bxt42d.xn--lrb6479j; ; ; # ⴋ≮𱲆.Þ§ð‹£
-xn--gdhz03bxt42d.xn--lrb506jqr4n; ⴋ≮𱲆.\u200D\u07A7ð‹£; [C2, V6]; xn--gdhz03bxt42d.xn--lrb506jqr4n; ; ; # ⴋ≮𱲆.Þ§ð‹£
+𑑄≯。𑜤; 𑑄≯.𑜤; [V5]; xn--hdh5636g.xn--ci2d; ; ; # 𑑄≯.𑜤
+𑑄>\u0338。𑜤; 𑑄≯.𑜤; [V5]; xn--hdh5636g.xn--ci2d; ; ; # 𑑄≯.𑜤
+𑑄≯。𑜤; 𑑄≯.𑜤; [V5]; xn--hdh5636g.xn--ci2d; ; ; # 𑑄≯.𑜤
+𑑄>\u0338。𑜤; 𑑄≯.𑜤; [V5]; xn--hdh5636g.xn--ci2d; ; ; # 𑑄≯.𑜤
+xn--hdh5636g.xn--ci2d; 𑑄≯.𑜤; [V5]; xn--hdh5636g.xn--ci2d; ; ; # 𑑄≯.𑜤
+Ⴋ≮𱲆。\u200D\u07A7ð‹£; Ⴋ≮𱲆.\u200D\u07A7ð‹£; [C2, V6]; xn--jnd802gsm17c.xn--lrb506jqr4n; ; xn--jnd802gsm17c.xn--lrb6479j; [V5, V6] # Ⴋ≮𱲆.Þ§ð‹£
+á‚«<\u0338𱲆。\u200D\u07A7ð‹£; Ⴋ≮𱲆.\u200D\u07A7ð‹£; [C2, V6]; xn--jnd802gsm17c.xn--lrb506jqr4n; ; xn--jnd802gsm17c.xn--lrb6479j; [V5, V6] # Ⴋ≮𱲆.Þ§ð‹£
+â´‹<\u0338𱲆。\u200D\u07A7ð‹£; ⴋ≮𱲆.\u200D\u07A7ð‹£; [C2]; xn--gdhz03bxt42d.xn--lrb506jqr4n; ; xn--gdhz03bxt42d.xn--lrb6479j; [V5] # ⴋ≮𱲆.Þ§ð‹£
+ⴋ≮𱲆。\u200D\u07A7ð‹£; ⴋ≮𱲆.\u200D\u07A7ð‹£; [C2]; xn--gdhz03bxt42d.xn--lrb506jqr4n; ; xn--gdhz03bxt42d.xn--lrb6479j; [V5] # ⴋ≮𱲆.Þ§ð‹£
+xn--gdhz03bxt42d.xn--lrb6479j; ⴋ≮𱲆.\u07A7ð‹£; [V5]; xn--gdhz03bxt42d.xn--lrb6479j; ; ; # ⴋ≮𱲆.Þ§ð‹£
+xn--gdhz03bxt42d.xn--lrb506jqr4n; ⴋ≮𱲆.\u200D\u07A7ð‹£; [C2]; xn--gdhz03bxt42d.xn--lrb506jqr4n; ; ; # ⴋ≮𱲆.Þ§ð‹£
xn--jnd802gsm17c.xn--lrb6479j; Ⴋ≮𱲆.\u07A7ð‹£; [V5, V6]; xn--jnd802gsm17c.xn--lrb6479j; ; ; # Ⴋ≮𱲆.Þ§ð‹£
xn--jnd802gsm17c.xn--lrb506jqr4n; Ⴋ≮𱲆.\u200D\u07A7ð‹£; [C2, V6]; xn--jnd802gsm17c.xn--lrb506jqr4n; ; ; # Ⴋ≮𱲆.Þ§ð‹£
-\u17D2.򆽒≯; ; [P1, V5, V6]; xn--u4e.xn--hdhx0084f; ; ; # ្.≯
-\u17D2.򆽒>\u0338; \u17D2.򆽒≯; [P1, V5, V6]; xn--u4e.xn--hdhx0084f; ; ; # ្.≯
+\u17D2.򆽒≯; ; [V5, V6]; xn--u4e.xn--hdhx0084f; ; ; # ្.≯
+\u17D2.򆽒>\u0338; \u17D2.򆽒≯; [V5, V6]; xn--u4e.xn--hdhx0084f; ; ; # ្.≯
xn--u4e.xn--hdhx0084f; \u17D2.򆽒≯; [V5, V6]; xn--u4e.xn--hdhx0084f; ; ; # ្.≯
-ñ‡\u1734.ð¨ºÃ‰â¬“ð‘„´; ñ‡\u1734.ð¨ºÃ©â¬“ð‘„´; [P1, V5, V6]; xn--c0e34564d.xn--9ca207st53lg3f; ; ; # ᜴.ð¨ºÃ©â¬“ð‘„´
-ñ‡\u1734.ð¨ºE\u0301⬓𑄴; ñ‡\u1734.ð¨ºÃ©â¬“ð‘„´; [P1, V5, V6]; xn--c0e34564d.xn--9ca207st53lg3f; ; ; # ᜴.ð¨ºÃ©â¬“ð‘„´
-ñ‡\u1734.ð¨ºÃ‰â¬“ð‘„´; ñ‡\u1734.ð¨ºÃ©â¬“ð‘„´; [P1, V5, V6]; xn--c0e34564d.xn--9ca207st53lg3f; ; ; # ᜴.ð¨ºÃ©â¬“ð‘„´
-ñ‡\u1734.ð¨ºE\u0301⬓𑄴; ñ‡\u1734.ð¨ºÃ©â¬“ð‘„´; [P1, V5, V6]; xn--c0e34564d.xn--9ca207st53lg3f; ; ; # ᜴.ð¨ºÃ©â¬“ð‘„´
-ñ‡\u1734.ð¨ºe\u0301⬓𑄴; ñ‡\u1734.ð¨ºÃ©â¬“ð‘„´; [P1, V5, V6]; xn--c0e34564d.xn--9ca207st53lg3f; ; ; # ᜴.ð¨ºÃ©â¬“ð‘„´
-ñ‡\u1734.ð¨ºÃ©â¬“ð‘„´; ; [P1, V5, V6]; xn--c0e34564d.xn--9ca207st53lg3f; ; ; # ᜴.ð¨ºÃ©â¬“ð‘„´
+ñ‡\u1734.ð¨ºÃ‰â¬“ð‘„´; ñ‡\u1734.ð¨ºÃ©â¬“ð‘„´; [V5, V6]; xn--c0e34564d.xn--9ca207st53lg3f; ; ; # ᜴.ð¨ºÃ©â¬“ð‘„´
+ñ‡\u1734.ð¨ºE\u0301⬓𑄴; ñ‡\u1734.ð¨ºÃ©â¬“ð‘„´; [V5, V6]; xn--c0e34564d.xn--9ca207st53lg3f; ; ; # ᜴.ð¨ºÃ©â¬“ð‘„´
+ñ‡\u1734.ð¨ºÃ‰â¬“ð‘„´; ñ‡\u1734.ð¨ºÃ©â¬“ð‘„´; [V5, V6]; xn--c0e34564d.xn--9ca207st53lg3f; ; ; # ᜴.ð¨ºÃ©â¬“ð‘„´
+ñ‡\u1734.ð¨ºE\u0301⬓𑄴; ñ‡\u1734.ð¨ºÃ©â¬“ð‘„´; [V5, V6]; xn--c0e34564d.xn--9ca207st53lg3f; ; ; # ᜴.ð¨ºÃ©â¬“ð‘„´
+ñ‡\u1734.ð¨ºe\u0301⬓𑄴; ñ‡\u1734.ð¨ºÃ©â¬“ð‘„´; [V5, V6]; xn--c0e34564d.xn--9ca207st53lg3f; ; ; # ᜴.ð¨ºÃ©â¬“ð‘„´
+ñ‡\u1734.ð¨ºÃ©â¬“ð‘„´; ; [V5, V6]; xn--c0e34564d.xn--9ca207st53lg3f; ; ; # ᜴.ð¨ºÃ©â¬“ð‘„´
xn--c0e34564d.xn--9ca207st53lg3f; ñ‡\u1734.ð¨ºÃ©â¬“ð‘„´; [V5, V6]; xn--c0e34564d.xn--9ca207st53lg3f; ; ; # ᜴.ð¨ºÃ©â¬“ð‘„´
-ñ‡\u1734.ð¨ºe\u0301⬓𑄴; ñ‡\u1734.ð¨ºÃ©â¬“ð‘„´; [P1, V5, V6]; xn--c0e34564d.xn--9ca207st53lg3f; ; ; # ᜴.ð¨ºÃ©â¬“ð‘„´
-ñ‡\u1734.ð¨ºÃ©â¬“ð‘„´; ñ‡\u1734.ð¨ºÃ©â¬“ð‘„´; [P1, V5, V6]; xn--c0e34564d.xn--9ca207st53lg3f; ; ; # ᜴.ð¨ºÃ©â¬“ð‘„´
-ᢇ\u200D\uA8C4。︒𞤺; ᢇ\u200D\uA8C4.︒𞤺; [B1, B6, C2, P1, V6]; xn--09e669a6x8j.xn--y86cv562b; ; xn--09e4694e.xn--y86cv562b; [B1, P1, V6] # ᢇ꣄.︒𞤺
+ñ‡\u1734.ð¨ºe\u0301⬓𑄴; ñ‡\u1734.ð¨ºÃ©â¬“ð‘„´; [V5, V6]; xn--c0e34564d.xn--9ca207st53lg3f; ; ; # ᜴.ð¨ºÃ©â¬“ð‘„´
+ñ‡\u1734.ð¨ºÃ©â¬“ð‘„´; ñ‡\u1734.ð¨ºÃ©â¬“ð‘„´; [V5, V6]; xn--c0e34564d.xn--9ca207st53lg3f; ; ; # ᜴.ð¨ºÃ©â¬“ð‘„´
+ᢇ\u200D\uA8C4。︒𞤺; ᢇ\u200D\uA8C4.︒𞤺; [B1, B6, C2, V6]; xn--09e669a6x8j.xn--y86cv562b; ; xn--09e4694e.xn--y86cv562b; [B1, V6] # ᢇ꣄.︒𞤺
ᢇ\u200D\uA8C4。。𞤺; ᢇ\u200D\uA8C4..𞤺; [B6, C2, X4_2]; xn--09e669a6x8j..xn--ye6h; [B6, C2, A4_2]; xn--09e4694e..xn--ye6h; [A4_2] # ᢇ꣄..𞤺
ᢇ\u200D\uA8C4。。𞤘; ᢇ\u200D\uA8C4..𞤺; [B6, C2, X4_2]; xn--09e669a6x8j..xn--ye6h; [B6, C2, A4_2]; xn--09e4694e..xn--ye6h; [A4_2] # ᢇ꣄..𞤺
xn--09e4694e..xn--ye6h; ᢇ\uA8C4..𞤺; [X4_2]; xn--09e4694e..xn--ye6h; [A4_2]; ; # ᢇ꣄..𞤺
xn--09e669a6x8j..xn--ye6h; ᢇ\u200D\uA8C4..𞤺; [B6, C2, X4_2]; xn--09e669a6x8j..xn--ye6h; [B6, C2, A4_2]; ; # ᢇ꣄..𞤺
-ᢇ\u200D\uA8C4。︒𞤘; ᢇ\u200D\uA8C4.︒𞤺; [B1, B6, C2, P1, V6]; xn--09e669a6x8j.xn--y86cv562b; ; xn--09e4694e.xn--y86cv562b; [B1, P1, V6] # ᢇ꣄.︒𞤺
+ᢇ\u200D\uA8C4。︒𞤘; ᢇ\u200D\uA8C4.︒𞤺; [B1, B6, C2, V6]; xn--09e669a6x8j.xn--y86cv562b; ; xn--09e4694e.xn--y86cv562b; [B1, V6] # ᢇ꣄.︒𞤺
xn--09e4694e.xn--y86cv562b; ᢇ\uA8C4.︒𞤺; [B1, V6]; xn--09e4694e.xn--y86cv562b; ; ; # ᢇ꣄.︒𞤺
xn--09e669a6x8j.xn--y86cv562b; ᢇ\u200D\uA8C4.︒𞤺; [B1, B6, C2, V6]; xn--09e669a6x8j.xn--y86cv562b; ; ; # ᢇ꣄.︒𞤺
-𞩬򖙱\u1714\u200C。\u0631\u07AA≮; 𞩬򖙱\u1714\u200C.\u0631\u07AA≮; [B2, B3, P1, V6]; xn--fze607b9651bjwl7c.xn--wgb86el10d; ; xn--fze3930v7hz6b.xn--wgb86el10d; # ᜔.رު≮
-𞩬򖙱\u1714\u200C。\u0631\u07AA<\u0338; 𞩬򖙱\u1714\u200C.\u0631\u07AA≮; [B2, B3, P1, V6]; xn--fze607b9651bjwl7c.xn--wgb86el10d; ; xn--fze3930v7hz6b.xn--wgb86el10d; # ᜔.رު≮
-𞩬򖙱\u1714\u200C。\u0631\u07AA≮; 𞩬򖙱\u1714\u200C.\u0631\u07AA≮; [B2, B3, P1, V6]; xn--fze607b9651bjwl7c.xn--wgb86el10d; ; xn--fze3930v7hz6b.xn--wgb86el10d; # ᜔.رު≮
-𞩬򖙱\u1714\u200C。\u0631\u07AA<\u0338; 𞩬򖙱\u1714\u200C.\u0631\u07AA≮; [B2, B3, P1, V6]; xn--fze607b9651bjwl7c.xn--wgb86el10d; ; xn--fze3930v7hz6b.xn--wgb86el10d; # ᜔.رު≮
+𞩬򖙱\u1714\u200C。\u0631\u07AA≮; 𞩬򖙱\u1714\u200C.\u0631\u07AA≮; [B2, B3, V6]; xn--fze607b9651bjwl7c.xn--wgb86el10d; ; xn--fze3930v7hz6b.xn--wgb86el10d; # ᜔.رު≮
+𞩬򖙱\u1714\u200C。\u0631\u07AA<\u0338; 𞩬򖙱\u1714\u200C.\u0631\u07AA≮; [B2, B3, V6]; xn--fze607b9651bjwl7c.xn--wgb86el10d; ; xn--fze3930v7hz6b.xn--wgb86el10d; # ᜔.رު≮
+𞩬򖙱\u1714\u200C。\u0631\u07AA≮; 𞩬򖙱\u1714\u200C.\u0631\u07AA≮; [B2, B3, V6]; xn--fze607b9651bjwl7c.xn--wgb86el10d; ; xn--fze3930v7hz6b.xn--wgb86el10d; # ᜔.رު≮
+𞩬򖙱\u1714\u200C。\u0631\u07AA<\u0338; 𞩬򖙱\u1714\u200C.\u0631\u07AA≮; [B2, B3, V6]; xn--fze607b9651bjwl7c.xn--wgb86el10d; ; xn--fze3930v7hz6b.xn--wgb86el10d; # ᜔.رު≮
xn--fze3930v7hz6b.xn--wgb86el10d; 𞩬򖙱\u1714.\u0631\u07AA≮; [B2, B3, V6]; xn--fze3930v7hz6b.xn--wgb86el10d; ; ; # ᜔.رު≮
xn--fze607b9651bjwl7c.xn--wgb86el10d; 𞩬򖙱\u1714\u200C.\u0631\u07AA≮; [B2, B3, V6]; xn--fze607b9651bjwl7c.xn--wgb86el10d; ; ; # ᜔.رު≮
-Ⴣ.\u0653ᢤ; Ⴣ.\u0653ᢤ; [P1, V5, V6]; xn--7nd.xn--vhb294g; ; ; # Ⴣ.ٓᢤ
-Ⴣ.\u0653ᢤ; ; [P1, V5, V6]; xn--7nd.xn--vhb294g; ; ; # Ⴣ.ٓᢤ
+Ⴣ.\u0653ᢤ; Ⴣ.\u0653ᢤ; [V5, V6]; xn--7nd.xn--vhb294g; ; ; # Ⴣ.ٓᢤ
+Ⴣ.\u0653ᢤ; ; [V5, V6]; xn--7nd.xn--vhb294g; ; ; # Ⴣ.ٓᢤ
ⴣ.\u0653ᢤ; ; [V5]; xn--rlj.xn--vhb294g; ; ; # ⴣ.ٓᢤ
xn--rlj.xn--vhb294g; ⴣ.\u0653ᢤ; [V5]; xn--rlj.xn--vhb294g; ; ; # ⴣ.ٓᢤ
xn--7nd.xn--vhb294g; Ⴣ.\u0653ᢤ; [V5, V6]; xn--7nd.xn--vhb294g; ; ; # Ⴣ.ٓᢤ
ⴣ.\u0653ᢤ; ⴣ.\u0653ᢤ; [V5]; xn--rlj.xn--vhb294g; ; ; # ⴣ.ٓᢤ
-󠄈\u0813.싉ò„†»áƒ„ò‚¡; \u0813.싉ò„†»áƒ„ò‚¡; [P1, V6]; xn--oub.xn--8nd9522gpe69cviva; ; ; # à “.싉Ⴤ
-󠄈\u0813.싉ò„†»áƒ„ò‚¡; \u0813.싉ò„†»áƒ„ò‚¡; [P1, V6]; xn--oub.xn--8nd9522gpe69cviva; ; ; # à “.싉Ⴤ
-󠄈\u0813.싉ò„†»áƒ„ò‚¡; \u0813.싉ò„†»áƒ„ò‚¡; [P1, V6]; xn--oub.xn--8nd9522gpe69cviva; ; ; # à “.싉Ⴤ
-󠄈\u0813.싉ò„†»áƒ„ò‚¡; \u0813.싉ò„†»áƒ„ò‚¡; [P1, V6]; xn--oub.xn--8nd9522gpe69cviva; ; ; # à “.싉Ⴤ
-󠄈\u0813.싉ò„†»â´¤ò‚¡; \u0813.싉ò„†»â´¤ò‚¡; [P1, V6]; xn--oub.xn--sljz109bpe25dviva; ; ; # à “.싉ⴤ
-󠄈\u0813.싉ò„†»â´¤ò‚¡; \u0813.싉ò„†»â´¤ò‚¡; [P1, V6]; xn--oub.xn--sljz109bpe25dviva; ; ; # à “.싉ⴤ
+󠄈\u0813.싉ò„†»áƒ„ò‚¡; \u0813.싉ò„†»áƒ„ò‚¡; [V6]; xn--oub.xn--8nd9522gpe69cviva; ; ; # à “.싉Ⴤ
+󠄈\u0813.싉ò„†»áƒ„ò‚¡; \u0813.싉ò„†»áƒ„ò‚¡; [V6]; xn--oub.xn--8nd9522gpe69cviva; ; ; # à “.싉Ⴤ
+󠄈\u0813.싉ò„†»áƒ„ò‚¡; \u0813.싉ò„†»áƒ„ò‚¡; [V6]; xn--oub.xn--8nd9522gpe69cviva; ; ; # à “.싉Ⴤ
+󠄈\u0813.싉ò„†»áƒ„ò‚¡; \u0813.싉ò„†»áƒ„ò‚¡; [V6]; xn--oub.xn--8nd9522gpe69cviva; ; ; # à “.싉Ⴤ
+󠄈\u0813.싉ò„†»â´¤ò‚¡; \u0813.싉ò„†»â´¤ò‚¡; [V6]; xn--oub.xn--sljz109bpe25dviva; ; ; # à “.싉ⴤ
+󠄈\u0813.싉ò„†»â´¤ò‚¡; \u0813.싉ò„†»â´¤ò‚¡; [V6]; xn--oub.xn--sljz109bpe25dviva; ; ; # à “.싉ⴤ
xn--oub.xn--sljz109bpe25dviva; \u0813.싉ò„†»â´¤ò‚¡; [V6]; xn--oub.xn--sljz109bpe25dviva; ; ; # à “.싉ⴤ
xn--oub.xn--8nd9522gpe69cviva; \u0813.싉ò„†»áƒ„ò‚¡; [V6]; xn--oub.xn--8nd9522gpe69cviva; ; ; # à “.싉Ⴤ
-󠄈\u0813.싉ò„†»â´¤ò‚¡; \u0813.싉ò„†»â´¤ò‚¡; [P1, V6]; xn--oub.xn--sljz109bpe25dviva; ; ; # à “.싉ⴤ
-󠄈\u0813.싉ò„†»â´¤ò‚¡; \u0813.싉ò„†»â´¤ò‚¡; [P1, V6]; xn--oub.xn--sljz109bpe25dviva; ; ; # à “.싉ⴤ
-\uAA2C𑲫≮.⤂; \uAA2C𑲫≮.⤂; [P1, V5, V6]; xn--gdh1854cn19c.xn--kqi; ; ; # ꨬ𑲫≮.⤂
-\uAA2C𑲫<\u0338.⤂; \uAA2C𑲫≮.⤂; [P1, V5, V6]; xn--gdh1854cn19c.xn--kqi; ; ; # ꨬ𑲫≮.⤂
-\uAA2C𑲫≮.⤂; ; [P1, V5, V6]; xn--gdh1854cn19c.xn--kqi; ; ; # ꨬ𑲫≮.⤂
-\uAA2C𑲫<\u0338.⤂; \uAA2C𑲫≮.⤂; [P1, V5, V6]; xn--gdh1854cn19c.xn--kqi; ; ; # ꨬ𑲫≮.⤂
-xn--gdh1854cn19c.xn--kqi; \uAA2C𑲫≮.⤂; [V5, V6]; xn--gdh1854cn19c.xn--kqi; ; ; # ꨬ𑲫≮.⤂
-\u0604ð©”≮Ⴢ.Ⴃ; \u0604ð©”≮Ⴢ.á‚£; [B1, P1, V6]; xn--mfb416c0jox02t.xn--bnd; ; ; # ð©”≮Ⴢ.á‚£
-\u0604ð©”<\u0338Ⴢ.Ⴃ; \u0604ð©”≮Ⴢ.á‚£; [B1, P1, V6]; xn--mfb416c0jox02t.xn--bnd; ; ; # ð©”≮Ⴢ.á‚£
-\u0604ð©”≮Ⴢ.á‚£; ; [B1, P1, V6]; xn--mfb416c0jox02t.xn--bnd; ; ; # ð©”≮Ⴢ.á‚£
-\u0604ð©”<\u0338Ⴢ.á‚£; \u0604ð©”≮Ⴢ.á‚£; [B1, P1, V6]; xn--mfb416c0jox02t.xn--bnd; ; ; # ð©”≮Ⴢ.á‚£
-\u0604ð©”<\u0338â´¢.â´ƒ; \u0604ð©”≮ⴢ.â´ƒ; [B1, P1, V6]; xn--mfb266l4khr54u.xn--ukj; ; ; # ð©”≮ⴢ.â´ƒ
-\u0604ð©”≮ⴢ.â´ƒ; ; [B1, P1, V6]; xn--mfb266l4khr54u.xn--ukj; ; ; # ð©”≮ⴢ.â´ƒ
-\u0604ð©”≮Ⴢ.â´ƒ; ; [B1, P1, V6]; xn--mfb416c0jox02t.xn--ukj; ; ; # ð©”≮Ⴢ.â´ƒ
-\u0604ð©”<\u0338Ⴢ.â´ƒ; \u0604ð©”≮Ⴢ.â´ƒ; [B1, P1, V6]; xn--mfb416c0jox02t.xn--ukj; ; ; # ð©”≮Ⴢ.â´ƒ
+󠄈\u0813.싉ò„†»â´¤ò‚¡; \u0813.싉ò„†»â´¤ò‚¡; [V6]; xn--oub.xn--sljz109bpe25dviva; ; ; # à “.싉ⴤ
+󠄈\u0813.싉ò„†»â´¤ò‚¡; \u0813.싉ò„†»â´¤ò‚¡; [V6]; xn--oub.xn--sljz109bpe25dviva; ; ; # à “.싉ⴤ
+\uAA2C𑲫≮.⤂; \uAA2C𑲫≮.⤂; [V5]; xn--gdh1854cn19c.xn--kqi; ; ; # ꨬ𑲫≮.⤂
+\uAA2C𑲫<\u0338.⤂; \uAA2C𑲫≮.⤂; [V5]; xn--gdh1854cn19c.xn--kqi; ; ; # ꨬ𑲫≮.⤂
+\uAA2C𑲫≮.⤂; ; [V5]; xn--gdh1854cn19c.xn--kqi; ; ; # ꨬ𑲫≮.⤂
+\uAA2C𑲫<\u0338.⤂; \uAA2C𑲫≮.⤂; [V5]; xn--gdh1854cn19c.xn--kqi; ; ; # ꨬ𑲫≮.⤂
+xn--gdh1854cn19c.xn--kqi; \uAA2C𑲫≮.⤂; [V5]; xn--gdh1854cn19c.xn--kqi; ; ; # ꨬ𑲫≮.⤂
+\u0604ð©”≮Ⴢ.Ⴃ; \u0604ð©”≮Ⴢ.á‚£; [B1, V6]; xn--mfb416c0jox02t.xn--bnd; ; ; # ð©”≮Ⴢ.á‚£
+\u0604ð©”<\u0338Ⴢ.Ⴃ; \u0604ð©”≮Ⴢ.á‚£; [B1, V6]; xn--mfb416c0jox02t.xn--bnd; ; ; # ð©”≮Ⴢ.á‚£
+\u0604ð©”≮Ⴢ.á‚£; ; [B1, V6]; xn--mfb416c0jox02t.xn--bnd; ; ; # ð©”≮Ⴢ.á‚£
+\u0604ð©”<\u0338Ⴢ.á‚£; \u0604ð©”≮Ⴢ.á‚£; [B1, V6]; xn--mfb416c0jox02t.xn--bnd; ; ; # ð©”≮Ⴢ.á‚£
+\u0604ð©”<\u0338â´¢.â´ƒ; \u0604ð©”≮ⴢ.â´ƒ; [B1, V6]; xn--mfb266l4khr54u.xn--ukj; ; ; # ð©”≮ⴢ.â´ƒ
+\u0604ð©”≮ⴢ.â´ƒ; ; [B1, V6]; xn--mfb266l4khr54u.xn--ukj; ; ; # ð©”≮ⴢ.â´ƒ
+\u0604ð©”≮Ⴢ.â´ƒ; ; [B1, V6]; xn--mfb416c0jox02t.xn--ukj; ; ; # ð©”≮Ⴢ.â´ƒ
+\u0604ð©”<\u0338Ⴢ.â´ƒ; \u0604ð©”≮Ⴢ.â´ƒ; [B1, V6]; xn--mfb416c0jox02t.xn--ukj; ; ; # ð©”≮Ⴢ.â´ƒ
xn--mfb416c0jox02t.xn--ukj; \u0604ð©”≮Ⴢ.â´ƒ; [B1, V6]; xn--mfb416c0jox02t.xn--ukj; ; ; # ð©”≮Ⴢ.â´ƒ
xn--mfb266l4khr54u.xn--ukj; \u0604ð©”≮ⴢ.â´ƒ; [B1, V6]; xn--mfb266l4khr54u.xn--ukj; ; ; # ð©”≮ⴢ.â´ƒ
xn--mfb416c0jox02t.xn--bnd; \u0604ð©”≮Ⴢ.á‚£; [B1, V6]; xn--mfb416c0jox02t.xn--bnd; ; ; # ð©”≮Ⴢ.á‚£
-\u0604ð©”<\u0338ⴢ.ⴃ; \u0604ð©”≮ⴢ.â´ƒ; [B1, P1, V6]; xn--mfb266l4khr54u.xn--ukj; ; ; # ð©”≮ⴢ.â´ƒ
-\u0604ð©”≮ⴢ.ⴃ; \u0604ð©”≮ⴢ.â´ƒ; [B1, P1, V6]; xn--mfb266l4khr54u.xn--ukj; ; ; # ð©”≮ⴢ.â´ƒ
-\u0604ð©”≮Ⴢ.ⴃ; \u0604ð©”≮Ⴢ.â´ƒ; [B1, P1, V6]; xn--mfb416c0jox02t.xn--ukj; ; ; # ð©”≮Ⴢ.â´ƒ
-\u0604ð©”<\u0338Ⴢ.ⴃ; \u0604ð©”≮Ⴢ.â´ƒ; [B1, P1, V6]; xn--mfb416c0jox02t.xn--ukj; ; ; # ð©”≮Ⴢ.â´ƒ
+\u0604ð©”<\u0338ⴢ.ⴃ; \u0604ð©”≮ⴢ.â´ƒ; [B1, V6]; xn--mfb266l4khr54u.xn--ukj; ; ; # ð©”≮ⴢ.â´ƒ
+\u0604ð©”≮ⴢ.ⴃ; \u0604ð©”≮ⴢ.â´ƒ; [B1, V6]; xn--mfb266l4khr54u.xn--ukj; ; ; # ð©”≮ⴢ.â´ƒ
+\u0604ð©”≮Ⴢ.ⴃ; \u0604ð©”≮Ⴢ.â´ƒ; [B1, V6]; xn--mfb416c0jox02t.xn--ukj; ; ; # ð©”≮Ⴢ.â´ƒ
+\u0604ð©”<\u0338Ⴢ.ⴃ; \u0604ð©”≮Ⴢ.â´ƒ; [B1, V6]; xn--mfb416c0jox02t.xn--ukj; ; ; # ð©”≮Ⴢ.â´ƒ
ð‘…。-; ð‘….-; [V3, V5]; xn--210d.-; ; ; # ð‘….-
xn--210d.-; ð‘….-; [V3, V5]; xn--210d.-; ; ; # ð‘….-
-\u0DCA򕸽󠧱。饈≠\u0664; \u0DCA򕸽󠧱.饈≠\u0664; [B1, B5, B6, P1, V5, V6]; xn--h1c25913jfwov.xn--dib144ler5f; ; ; # ්.饈≠٤
-\u0DCA򕸽󠧱。饈=\u0338\u0664; \u0DCA򕸽󠧱.饈≠\u0664; [B1, B5, B6, P1, V5, V6]; xn--h1c25913jfwov.xn--dib144ler5f; ; ; # ්.饈≠٤
-\u0DCA򕸽󠧱。饈≠\u0664; \u0DCA򕸽󠧱.饈≠\u0664; [B1, B5, B6, P1, V5, V6]; xn--h1c25913jfwov.xn--dib144ler5f; ; ; # ්.饈≠٤
-\u0DCA򕸽󠧱。饈=\u0338\u0664; \u0DCA򕸽󠧱.饈≠\u0664; [B1, B5, B6, P1, V5, V6]; xn--h1c25913jfwov.xn--dib144ler5f; ; ; # ්.饈≠٤
+\u0DCA򕸽󠧱。饈≠\u0664; \u0DCA򕸽󠧱.饈≠\u0664; [B1, B5, B6, V5, V6]; xn--h1c25913jfwov.xn--dib144ler5f; ; ; # ්.饈≠٤
+\u0DCA򕸽󠧱。饈=\u0338\u0664; \u0DCA򕸽󠧱.饈≠\u0664; [B1, B5, B6, V5, V6]; xn--h1c25913jfwov.xn--dib144ler5f; ; ; # ්.饈≠٤
+\u0DCA򕸽󠧱。饈≠\u0664; \u0DCA򕸽󠧱.饈≠\u0664; [B1, B5, B6, V5, V6]; xn--h1c25913jfwov.xn--dib144ler5f; ; ; # ්.饈≠٤
+\u0DCA򕸽󠧱。饈=\u0338\u0664; \u0DCA򕸽󠧱.饈≠\u0664; [B1, B5, B6, V5, V6]; xn--h1c25913jfwov.xn--dib144ler5f; ; ; # ්.饈≠٤
xn--h1c25913jfwov.xn--dib144ler5f; \u0DCA򕸽󠧱.饈≠\u0664; [B1, B5, B6, V5, V6]; xn--h1c25913jfwov.xn--dib144ler5f; ; ; # ්.饈≠٤
-𞥃ᠠâ·ï½¡â‰¯é‚…⬻4; 𞥃ᠠ7.≯邅⬻4; [B1, B2, P1, V6]; xn--7-v4j2826w.xn--4-ogoy01bou3i; ; ; # 𞥃ᠠ7.≯邅⬻4
-𞥃ᠠâ·ï½¡>\u0338邅⬻4; 𞥃ᠠ7.≯邅⬻4; [B1, B2, P1, V6]; xn--7-v4j2826w.xn--4-ogoy01bou3i; ; ; # 𞥃ᠠ7.≯邅⬻4
-𞥃ᠠ7。≯邅⬻4; 𞥃ᠠ7.≯邅⬻4; [B1, B2, P1, V6]; xn--7-v4j2826w.xn--4-ogoy01bou3i; ; ; # 𞥃ᠠ7.≯邅⬻4
-𞥃ᠠ7。>\u0338邅⬻4; 𞥃ᠠ7.≯邅⬻4; [B1, B2, P1, V6]; xn--7-v4j2826w.xn--4-ogoy01bou3i; ; ; # 𞥃ᠠ7.≯邅⬻4
-𞤡ᠠ7。>\u0338邅⬻4; 𞥃ᠠ7.≯邅⬻4; [B1, B2, P1, V6]; xn--7-v4j2826w.xn--4-ogoy01bou3i; ; ; # 𞥃ᠠ7.≯邅⬻4
-𞤡ᠠ7。≯邅⬻4; 𞥃ᠠ7.≯邅⬻4; [B1, B2, P1, V6]; xn--7-v4j2826w.xn--4-ogoy01bou3i; ; ; # 𞥃ᠠ7.≯邅⬻4
-xn--7-v4j2826w.xn--4-ogoy01bou3i; 𞥃ᠠ7.≯邅⬻4; [B1, B2, V6]; xn--7-v4j2826w.xn--4-ogoy01bou3i; ; ; # 𞥃ᠠ7.≯邅⬻4
-𞤡ᠠâ·ï½¡>\u0338邅⬻4; 𞥃ᠠ7.≯邅⬻4; [B1, B2, P1, V6]; xn--7-v4j2826w.xn--4-ogoy01bou3i; ; ; # 𞥃ᠠ7.≯邅⬻4
-𞤡ᠠâ·ï½¡â‰¯é‚…⬻4; 𞥃ᠠ7.≯邅⬻4; [B1, B2, P1, V6]; xn--7-v4j2826w.xn--4-ogoy01bou3i; ; ; # 𞥃ᠠ7.≯邅⬻4
-ò ¿¯á¡³-ð‘».ð¹´ð‹«\u0605󑎳; ; [B1, B6, P1, V6]; xn----m9j3429kxmy7e.xn--nfb7950kdihrp812a; ; ; # ᡳ-ð‘».ð¹´ð‹«
+𞥃ᠠâ·ï½¡â‰¯é‚…⬻4; 𞥃ᠠ7.≯邅⬻4; [B1, B2]; xn--7-v4j2826w.xn--4-ogoy01bou3i; ; ; # 𞥃ᠠ7.≯邅⬻4
+𞥃ᠠâ·ï½¡>\u0338邅⬻4; 𞥃ᠠ7.≯邅⬻4; [B1, B2]; xn--7-v4j2826w.xn--4-ogoy01bou3i; ; ; # 𞥃ᠠ7.≯邅⬻4
+𞥃ᠠ7。≯邅⬻4; 𞥃ᠠ7.≯邅⬻4; [B1, B2]; xn--7-v4j2826w.xn--4-ogoy01bou3i; ; ; # 𞥃ᠠ7.≯邅⬻4
+𞥃ᠠ7。>\u0338邅⬻4; 𞥃ᠠ7.≯邅⬻4; [B1, B2]; xn--7-v4j2826w.xn--4-ogoy01bou3i; ; ; # 𞥃ᠠ7.≯邅⬻4
+𞤡ᠠ7。>\u0338邅⬻4; 𞥃ᠠ7.≯邅⬻4; [B1, B2]; xn--7-v4j2826w.xn--4-ogoy01bou3i; ; ; # 𞥃ᠠ7.≯邅⬻4
+𞤡ᠠ7。≯邅⬻4; 𞥃ᠠ7.≯邅⬻4; [B1, B2]; xn--7-v4j2826w.xn--4-ogoy01bou3i; ; ; # 𞥃ᠠ7.≯邅⬻4
+xn--7-v4j2826w.xn--4-ogoy01bou3i; 𞥃ᠠ7.≯邅⬻4; [B1, B2]; xn--7-v4j2826w.xn--4-ogoy01bou3i; ; ; # 𞥃ᠠ7.≯邅⬻4
+𞤡ᠠâ·ï½¡>\u0338邅⬻4; 𞥃ᠠ7.≯邅⬻4; [B1, B2]; xn--7-v4j2826w.xn--4-ogoy01bou3i; ; ; # 𞥃ᠠ7.≯邅⬻4
+𞤡ᠠâ·ï½¡â‰¯é‚…⬻4; 𞥃ᠠ7.≯邅⬻4; [B1, B2]; xn--7-v4j2826w.xn--4-ogoy01bou3i; ; ; # 𞥃ᠠ7.≯邅⬻4
+ò ¿¯á¡³-ð‘».ð¹´ð‹«\u0605󑎳; ; [B1, B6, V6]; xn----m9j3429kxmy7e.xn--nfb7950kdihrp812a; ; ; # ᡳ-ð‘».ð¹´ð‹«
xn----m9j3429kxmy7e.xn--nfb7950kdihrp812a; ò ¿¯á¡³-ð‘».ð¹´ð‹«\u0605󑎳; [B1, B6, V6]; xn----m9j3429kxmy7e.xn--nfb7950kdihrp812a; ; ; # ᡳ-ð‘».ð¹´ð‹«
-򠶆\u0845\u0A51.넨-󶧈; ; [B5, B6, P1, V6]; xn--3vb26hb6834b.xn----i37ez0957g; ; ; # ࡅੑ.넨-
-򠶆\u0845\u0A51.넨-󶧈; 򠶆\u0845\u0A51.넨-󶧈; [B5, B6, P1, V6]; xn--3vb26hb6834b.xn----i37ez0957g; ; ; # ࡅੑ.넨-
+򠶆\u0845\u0A51.넨-󶧈; ; [B5, B6, V6]; xn--3vb26hb6834b.xn----i37ez0957g; ; ; # ࡅੑ.넨-
+򠶆\u0845\u0A51.넨-󶧈; 򠶆\u0845\u0A51.넨-󶧈; [B5, B6, V6]; xn--3vb26hb6834b.xn----i37ez0957g; ; ; # ࡅੑ.넨-
xn--3vb26hb6834b.xn----i37ez0957g; 򠶆\u0845\u0A51.넨-󶧈; [B5, B6, V6]; xn--3vb26hb6834b.xn----i37ez0957g; ; ; # ࡅੑ.넨-
-ꡦᡑ\u200D⒈。ð‹£-; ꡦᡑ\u200Dâ’ˆ.ð‹£-; [C2, P1, V3, V6]; xn--h8e470bl0d838o.xn----381i; ; xn--h8e863drj7h.xn----381i; [P1, V3, V6] # ꡦᡑ⒈.ð‹£-
+ꡦᡑ\u200D⒈。ð‹£-; ꡦᡑ\u200Dâ’ˆ.ð‹£-; [C2, V3, V6]; xn--h8e470bl0d838o.xn----381i; ; xn--h8e863drj7h.xn----381i; [V3, V6] # ꡦᡑ⒈.ð‹£-
ꡦᡑ\u200D1.。ð‹£-; ꡦᡑ\u200D1..ð‹£-; [C2, V3, X4_2]; xn--1-o7j663bdl7m..xn----381i; [C2, V3, A4_2]; xn--1-o7j0610f..xn----381i; [V3, A4_2] # ꡦᡑ1..ð‹£-
xn--1-o7j0610f..xn----381i; ꡦᡑ1..ð‹£-; [V3, X4_2]; xn--1-o7j0610f..xn----381i; [V3, A4_2]; ; # ꡦᡑ1..ð‹£-
xn--1-o7j663bdl7m..xn----381i; ꡦᡑ\u200D1..ð‹£-; [C2, V3, X4_2]; xn--1-o7j663bdl7m..xn----381i; [C2, V3, A4_2]; ; # ꡦᡑ1..ð‹£-
xn--h8e863drj7h.xn----381i; ꡦᡑ⒈.ð‹£-; [V3, V6]; xn--h8e863drj7h.xn----381i; ; ; # ꡦᡑ⒈.ð‹£-
xn--h8e470bl0d838o.xn----381i; ꡦᡑ\u200Dâ’ˆ.ð‹£-; [C2, V3, V6]; xn--h8e470bl0d838o.xn----381i; ; ; # ꡦᡑ⒈.ð‹£-
-Ⴌ。ô¼ \uFB69; Ⴌ.ô¼ \u0679; [B5, B6, P1, V6]; xn--knd.xn--yib19191t; ; ; # Ⴌ.Ù¹
-Ⴌ。ô¼ \u0679; Ⴌ.ô¼ \u0679; [B5, B6, P1, V6]; xn--knd.xn--yib19191t; ; ; # Ⴌ.Ù¹
-ⴌ。ô¼ \u0679; â´Œ.ô¼ \u0679; [B5, B6, P1, V6]; xn--3kj.xn--yib19191t; ; ; # â´Œ.Ù¹
+Ⴌ。ô¼ \uFB69; Ⴌ.ô¼ \u0679; [B5, B6, V6]; xn--knd.xn--yib19191t; ; ; # Ⴌ.Ù¹
+Ⴌ。ô¼ \u0679; Ⴌ.ô¼ \u0679; [B5, B6, V6]; xn--knd.xn--yib19191t; ; ; # Ⴌ.Ù¹
+ⴌ。ô¼ \u0679; â´Œ.ô¼ \u0679; [B5, B6, V6]; xn--3kj.xn--yib19191t; ; ; # â´Œ.Ù¹
xn--3kj.xn--yib19191t; â´Œ.ô¼ \u0679; [B5, B6, V6]; xn--3kj.xn--yib19191t; ; ; # â´Œ.Ù¹
xn--knd.xn--yib19191t; Ⴌ.ô¼ \u0679; [B5, B6, V6]; xn--knd.xn--yib19191t; ; ; # Ⴌ.Ù¹
-ⴌ。ô¼ \uFB69; â´Œ.ô¼ \u0679; [B5, B6, P1, V6]; xn--3kj.xn--yib19191t; ; ; # â´Œ.Ù¹
+ⴌ。ô¼ \uFB69; â´Œ.ô¼ \u0679; [B5, B6, V6]; xn--3kj.xn--yib19191t; ; ; # â´Œ.Ù¹
ð®ð­±.\u0F84\u135E-ᳺ; ; [B1, V5]; xn--r19c5a.xn----xjg270ag3m; ; ; # ð®ð­±.྄áž-ᳺ
xn--r19c5a.xn----xjg270ag3m; ð®ð­±.\u0F84\u135E-ᳺ; [B1, V5]; xn--r19c5a.xn----xjg270ag3m; ; ; # ð®ð­±.྄áž-ᳺ
-⒈䰹\u200D-。웈; ⒈䰹\u200D-.웈; [C2, P1, V3, V6]; xn----tgnx5rjr6c.xn--kp5b; ; xn----dcp160o.xn--kp5b; [P1, V3, V6] # ⒈䰹-.웈
-⒈䰹\u200D-。웈; ⒈䰹\u200D-.웈; [C2, P1, V3, V6]; xn----tgnx5rjr6c.xn--kp5b; ; xn----dcp160o.xn--kp5b; [P1, V3, V6] # ⒈䰹-.웈
+⒈䰹\u200D-。웈; ⒈䰹\u200D-.웈; [C2, V3, V6]; xn----tgnx5rjr6c.xn--kp5b; ; xn----dcp160o.xn--kp5b; [V3, V6] # ⒈䰹-.웈
+⒈䰹\u200D-。웈; ⒈䰹\u200D-.웈; [C2, V3, V6]; xn----tgnx5rjr6c.xn--kp5b; ; xn----dcp160o.xn--kp5b; [V3, V6] # ⒈䰹-.웈
1.䰹\u200D-。웈; 1.䰹\u200D-.웈; [C2, V3]; 1.xn----tgnz80r.xn--kp5b; ; 1.xn----zw5a.xn--kp5b; [V3] # 1.䰹-.웈
1.䰹\u200D-。웈; 1.䰹\u200D-.웈; [C2, V3]; 1.xn----tgnz80r.xn--kp5b; ; 1.xn----zw5a.xn--kp5b; [V3] # 1.䰹-.웈
1.xn----zw5a.xn--kp5b; 1.䰹-.웈; [V3]; 1.xn----zw5a.xn--kp5b; ; ; # 1.䰹-.웈
1.xn----tgnz80r.xn--kp5b; 1.䰹\u200D-.웈; [C2, V3]; 1.xn----tgnz80r.xn--kp5b; ; ; # 1.䰹-.웈
xn----dcp160o.xn--kp5b; ⒈䰹-.웈; [V3, V6]; xn----dcp160o.xn--kp5b; ; ; # ⒈䰹-.웈
xn----tgnx5rjr6c.xn--kp5b; ⒈䰹\u200D-.웈; [C2, V3, V6]; xn----tgnx5rjr6c.xn--kp5b; ; ; # ⒈䰹-.웈
-ã¦ã€‚\u200Có ³½\u07F3; ã¦.\u200Có ³½\u07F3; [C1, P1, V6]; xn--m9j.xn--rtb154j9l73w; ; xn--m9j.xn--rtb10784p; [P1, V6] # ã¦.ß³
+ã¦ã€‚\u200Có ³½\u07F3; ã¦.\u200Có ³½\u07F3; [C1, V6]; xn--m9j.xn--rtb154j9l73w; ; xn--m9j.xn--rtb10784p; [V6] # ã¦.ß³
xn--m9j.xn--rtb10784p; ã¦.ó ³½\u07F3; [V6]; xn--m9j.xn--rtb10784p; ; ; # ã¦.ß³
xn--m9j.xn--rtb154j9l73w; ã¦.\u200Có ³½\u07F3; [C1, V6]; xn--m9j.xn--rtb154j9l73w; ; ; # ã¦.ß³
ς。\uA9C0\u06E7; ς.\uA9C0\u06E7; [V5]; xn--3xa.xn--3lb1944f; ; xn--4xa.xn--3lb1944f; # ς.꧀ۧ
@@ -1640,249 +1646,249 @@ xn--4xa.xn--3lb1944f; σ.\uA9C0\u06E7; [V5]; xn--4xa.xn--3lb1944f; ; ; # σ.꧀
xn--3xa.xn--3lb1944f; ς.\uA9C0\u06E7; [V5]; xn--3xa.xn--3lb1944f; ; ; # ς.꧀ۧ
Σ。\uA9C0\u06E7; σ.\uA9C0\u06E7; [V5]; xn--4xa.xn--3lb1944f; ; ; # σ.꧀ۧ
σ。\uA9C0\u06E7; σ.\uA9C0\u06E7; [V5]; xn--4xa.xn--3lb1944f; ; ; # σ.꧀ۧ
-\u0BCD󥫅òŒ‰‘.ႢႵ; ; [P1, V5, V6]; xn--xmc83135idcxza.xn--9md2b; ; ; # à¯.ႢႵ
-\u0BCD󥫅òŒ‰‘.â´‚â´•; ; [P1, V5, V6]; xn--xmc83135idcxza.xn--tkjwb; ; ; # à¯.â´‚â´•
-\u0BCD󥫅òŒ‰‘.Ⴂⴕ; ; [P1, V5, V6]; xn--xmc83135idcxza.xn--9md086l; ; ; # à¯.Ⴂⴕ
+\u0BCD󥫅òŒ‰‘.ႢႵ; ; [V5, V6]; xn--xmc83135idcxza.xn--9md2b; ; ; # à¯.ႢႵ
+\u0BCD󥫅òŒ‰‘.â´‚â´•; ; [V5, V6]; xn--xmc83135idcxza.xn--tkjwb; ; ; # à¯.â´‚â´•
+\u0BCD󥫅òŒ‰‘.Ⴂⴕ; ; [V5, V6]; xn--xmc83135idcxza.xn--9md086l; ; ; # à¯.Ⴂⴕ
xn--xmc83135idcxza.xn--9md086l; \u0BCD󥫅òŒ‰‘.Ⴂⴕ; [V5, V6]; xn--xmc83135idcxza.xn--9md086l; ; ; # à¯.Ⴂⴕ
xn--xmc83135idcxza.xn--tkjwb; \u0BCD󥫅òŒ‰‘.â´‚â´•; [V5, V6]; xn--xmc83135idcxza.xn--tkjwb; ; ; # à¯.â´‚â´•
xn--xmc83135idcxza.xn--9md2b; \u0BCD󥫅òŒ‰‘.ႢႵ; [V5, V6]; xn--xmc83135idcxza.xn--9md2b; ; ; # à¯.ႢႵ
-\u1C32🄈⾛\u05A6.\u200D򯥤\u07FD; \u1C32🄈走\u05A6.\u200D򯥤\u07FD; [C2, P1, V5, V6]; xn--xcb756i493fwi5o.xn--1tb334j1197q; ; xn--xcb756i493fwi5o.xn--1tb13454l; [P1, V5, V6] # ᰲ🄈走֦.߽
-\u1C327,走\u05A6.\u200D򯥤\u07FD; ; [C2, P1, V5, V6]; xn--7,-bid991urn3k.xn--1tb334j1197q; ; xn--7,-bid991urn3k.xn--1tb13454l; [P1, V5, V6] # ᰲ7,走֦.߽
-xn--7,-bid991urn3k.xn--1tb13454l; \u1C327,走\u05A6.򯥤\u07FD; [P1, V5, V6]; xn--7,-bid991urn3k.xn--1tb13454l; ; ; # ᰲ7,走֦.߽
-xn--7,-bid991urn3k.xn--1tb334j1197q; \u1C327,走\u05A6.\u200D򯥤\u07FD; [C2, P1, V5, V6]; xn--7,-bid991urn3k.xn--1tb334j1197q; ; ; # ᰲ7,走֦.߽
+\u1C32🄈⾛\u05A6.\u200D򯥤\u07FD; \u1C32🄈走\u05A6.\u200D򯥤\u07FD; [C2, V5, V6]; xn--xcb756i493fwi5o.xn--1tb334j1197q; ; xn--xcb756i493fwi5o.xn--1tb13454l; [V5, V6] # ᰲ🄈走֦.߽
+\u1C327,走\u05A6.\u200D򯥤\u07FD; ; [C2, V5, V6]; xn--7,-bid991urn3k.xn--1tb334j1197q; ; xn--7,-bid991urn3k.xn--1tb13454l; [V5, V6] # ᰲ7,走֦.߽
+xn--7,-bid991urn3k.xn--1tb13454l; \u1C327,走\u05A6.򯥤\u07FD; [V5, V6]; xn--7,-bid991urn3k.xn--1tb13454l; ; ; # ᰲ7,走֦.߽
+xn--7,-bid991urn3k.xn--1tb334j1197q; \u1C327,走\u05A6.\u200D򯥤\u07FD; [C2, V5, V6]; xn--7,-bid991urn3k.xn--1tb334j1197q; ; ; # ᰲ7,走֦.߽
xn--xcb756i493fwi5o.xn--1tb13454l; \u1C32🄈走\u05A6.򯥤\u07FD; [V5, V6]; xn--xcb756i493fwi5o.xn--1tb13454l; ; ; # ᰲ🄈走֦.߽
xn--xcb756i493fwi5o.xn--1tb334j1197q; \u1C32🄈走\u05A6.\u200D򯥤\u07FD; [C2, V5, V6]; xn--xcb756i493fwi5o.xn--1tb334j1197q; ; ; # ᰲ🄈走֦.߽
-ᢗ。Ӏñ„»; ᢗ.Ó€ñ„»; [P1, V6]; xn--hbf.xn--d5a86117e; ; ; # ᢗ.Ó€
-ᢗ。Ӏñ„»; ᢗ.Ó€ñ„»; [P1, V6]; xn--hbf.xn--d5a86117e; ; ; # ᢗ.Ó€
-ᢗ。Óñ„»; ᢗ.Óñ„»; [P1, V6]; xn--hbf.xn--s5a83117e; ; ; # ᢗ.Ó
+ᢗ。Ӏñ„»; ᢗ.Ó€ñ„»; [V6]; xn--hbf.xn--d5a86117e; ; ; # ᢗ.Ó€
+ᢗ。Ӏñ„»; ᢗ.Ó€ñ„»; [V6]; xn--hbf.xn--d5a86117e; ; ; # ᢗ.Ó€
+ᢗ。Óñ„»; ᢗ.Óñ„»; [V6]; xn--hbf.xn--s5a83117e; ; ; # ᢗ.Ó
xn--hbf.xn--s5a83117e; ᢗ.Óñ„»; [V6]; xn--hbf.xn--s5a83117e; ; ; # ᢗ.Ó
xn--hbf.xn--d5a86117e; ᢗ.Ó€ñ„»; [V6]; xn--hbf.xn--d5a86117e; ; ; # ᢗ.Ó€
-ᢗ。Óñ„»; ᢗ.Óñ„»; [P1, V6]; xn--hbf.xn--s5a83117e; ; ; # ᢗ.Ó
-\u0668-。ñ ‡ðŸ†á„¾; \u0668-.ñ ‡ðŸ†á„¾; [B1, P1, V3, V6]; xn----oqc.xn--qrd1699v327w; ; ; # Ù¨-.ðŸ†á„¾
+ᢗ。Óñ„»; ᢗ.Óñ„»; [V6]; xn--hbf.xn--s5a83117e; ; ; # ᢗ.Ó
+\u0668-。ñ ‡ðŸ†á„¾; \u0668-.ñ ‡ðŸ†á„¾; [B1, V3, V6]; xn----oqc.xn--qrd1699v327w; ; ; # Ù¨-.ðŸ†á„¾
xn----oqc.xn--qrd1699v327w; \u0668-.ñ ‡ðŸ†á„¾; [B1, V3, V6]; xn----oqc.xn--qrd1699v327w; ; ; # Ù¨-.ðŸ†á„¾
-ð‹·ð–¾‘。󠆬; -ð‹·ð–¾‘.; [V3]; xn----991iq40y.; ; ; # -ð‹·ð–¾‘.
xn----991iq40y.; -ð‹·ð–¾‘.; [V3]; xn----991iq40y.; ; ; # -ð‹·ð–¾‘.
-\u200Cð¹³ðŸ´ë©ˆ.\uABEDñ¡¼; ; [B1, C1, P1, V5, V6]; xn--0ug6681d406b7bwk.xn--429a8682s; ; xn--422b325mqb6i.xn--429a8682s; [B1, P1, V5, V6] # ð¹³ðŸ´ë©ˆ.꯭
-\u200Cð¹³ðŸ´á„†á…¥á†·.\uABEDñ¡¼; \u200Cð¹³ðŸ´ë©ˆ.\uABEDñ¡¼; [B1, C1, P1, V5, V6]; xn--0ug6681d406b7bwk.xn--429a8682s; ; xn--422b325mqb6i.xn--429a8682s; [B1, P1, V5, V6] # ð¹³ðŸ´ë©ˆ.꯭
+\u200Cð¹³ðŸ´ë©ˆ.\uABEDñ¡¼; ; [B1, C1, V5, V6]; xn--0ug6681d406b7bwk.xn--429a8682s; ; xn--422b325mqb6i.xn--429a8682s; [B1, V5, V6] # ð¹³ðŸ´ë©ˆ.꯭
+\u200Cð¹³ðŸ´á„†á…¥á†·.\uABEDñ¡¼; \u200Cð¹³ðŸ´ë©ˆ.\uABEDñ¡¼; [B1, C1, V5, V6]; xn--0ug6681d406b7bwk.xn--429a8682s; ; xn--422b325mqb6i.xn--429a8682s; [B1, V5, V6] # ð¹³ðŸ´ë©ˆ.꯭
xn--422b325mqb6i.xn--429a8682s; ð¹³ðŸ´ë©ˆ.\uABEDñ¡¼; [B1, V5, V6]; xn--422b325mqb6i.xn--429a8682s; ; ; # ð¹³ðŸ´ë©ˆ.꯭
xn--0ug6681d406b7bwk.xn--429a8682s; \u200Cð¹³ðŸ´ë©ˆ.\uABEDñ¡¼; [B1, C1, V5, V6]; xn--0ug6681d406b7bwk.xn--429a8682s; ; ; # ð¹³ðŸ´ë©ˆ.꯭
-≮.\u0769\u0603; ; [B1, P1, V6]; xn--gdh.xn--lfb92e; ; ; # ≮.ݩ
-<\u0338.\u0769\u0603; ≮.\u0769\u0603; [B1, P1, V6]; xn--gdh.xn--lfb92e; ; ; # ≮.ݩ
+≮.\u0769\u0603; ; [B1, V6]; xn--gdh.xn--lfb92e; ; ; # ≮.ݩ
+<\u0338.\u0769\u0603; ≮.\u0769\u0603; [B1, V6]; xn--gdh.xn--lfb92e; ; ; # ≮.ݩ
xn--gdh.xn--lfb92e; ≮.\u0769\u0603; [B1, V6]; xn--gdh.xn--lfb92e; ; ; # ≮.ݩ
-ð¶­â¾†ï½¡\u200C𑚶òŸ±ƒðž°˜; ð¶­èˆŒ.\u200C𑚶òŸ±ƒðž°˜; [B1, B2, B3, C1, P1, V6]; xn--tc1ao37z.xn--0ugx728gi1nfwqz2e; ; xn--tc1ao37z.xn--6e2dw557azds2d; [B2, B3, B5, B6, P1, V5, V6] # 舌.𑚶
-ð¶­èˆŒã€‚\u200C𑚶òŸ±ƒðž°˜; ð¶­èˆŒ.\u200C𑚶òŸ±ƒðž°˜; [B1, B2, B3, C1, P1, V6]; xn--tc1ao37z.xn--0ugx728gi1nfwqz2e; ; xn--tc1ao37z.xn--6e2dw557azds2d; [B2, B3, B5, B6, P1, V5, V6] # 舌.𑚶
+ð¶­â¾†ï½¡\u200C𑚶òŸ±ƒðž°˜; ð¶­èˆŒ.\u200C𑚶òŸ±ƒðž°˜; [B1, B2, B3, C1, V6]; xn--tc1ao37z.xn--0ugx728gi1nfwqz2e; ; xn--tc1ao37z.xn--6e2dw557azds2d; [B2, B3, B5, B6, V5, V6] # 舌.𑚶
+ð¶­èˆŒã€‚\u200C𑚶òŸ±ƒðž°˜; ð¶­èˆŒ.\u200C𑚶òŸ±ƒðž°˜; [B1, B2, B3, C1, V6]; xn--tc1ao37z.xn--0ugx728gi1nfwqz2e; ; xn--tc1ao37z.xn--6e2dw557azds2d; [B2, B3, B5, B6, V5, V6] # 舌.𑚶
xn--tc1ao37z.xn--6e2dw557azds2d; ð¶­èˆŒ.𑚶òŸ±ƒðž°˜; [B2, B3, B5, B6, V5, V6]; xn--tc1ao37z.xn--6e2dw557azds2d; ; ; # 舌.𑚶
xn--tc1ao37z.xn--0ugx728gi1nfwqz2e; ð¶­èˆŒ.\u200C𑚶òŸ±ƒðž°˜; [B1, B2, B3, C1, V6]; xn--tc1ao37z.xn--0ugx728gi1nfwqz2e; ; ; # 舌.𑚶
-\u200CჀ-.ðŸ·Ï‚𞴺ς; \u200CჀ-.1ς𞴺ς; [B1, C1, P1, V3, V6]; xn----z1g168i.xn--1-ymba92321c; ; xn----z1g.xn--1-0mba52321c; [B1, B6, P1, V3, V6] # Ⴠ-.1ς𞴺ς
-\u200CჀ-.1ς𞴺ς; ; [B1, C1, P1, V3, V6]; xn----z1g168i.xn--1-ymba92321c; ; xn----z1g.xn--1-0mba52321c; [B1, B6, P1, V3, V6] # Ⴠ-.1ς𞴺ς
+\u200CჀ-.ðŸ·Ï‚𞴺ς; \u200CჀ-.1ς𞴺ς; [B1, C1, V3, V6]; xn----z1g168i.xn--1-ymba92321c; ; xn----z1g.xn--1-0mba52321c; [B1, B6, V3, V6] # Ⴠ-.1ς𞴺ς
+\u200CჀ-.1ς𞴺ς; ; [B1, C1, V3, V6]; xn----z1g168i.xn--1-ymba92321c; ; xn----z1g.xn--1-0mba52321c; [B1, B6, V3, V6] # Ⴠ-.1ς𞴺ς
\u200Cⴠ-.1ς𞴺ς; ; [B1, C1, V3]; xn----rgn530d.xn--1-ymba92321c; ; xn----2ws.xn--1-0mba52321c; [B1, B6, V3] # ⴠ-.1ς𞴺ς
-\u200CჀ-.1Σ𞴺Σ; \u200CჀ-.1σ𞴺σ; [B1, C1, P1, V3, V6]; xn----z1g168i.xn--1-0mba52321c; ; xn----z1g.xn--1-0mba52321c; [B1, B6, P1, V3, V6] # Ⴠ-.1σ𞴺σ
+\u200CჀ-.1Σ𞴺Σ; \u200CჀ-.1σ𞴺σ; [B1, C1, V3, V6]; xn----z1g168i.xn--1-0mba52321c; ; xn----z1g.xn--1-0mba52321c; [B1, B6, V3, V6] # Ⴠ-.1σ𞴺σ
\u200Cⴠ-.1σ𞴺σ; ; [B1, C1, V3]; xn----rgn530d.xn--1-0mba52321c; ; xn----2ws.xn--1-0mba52321c; [B1, B6, V3] # ⴠ-.1σ𞴺σ
-\u200CჀ-.1σ𞴺Σ; \u200CჀ-.1σ𞴺σ; [B1, C1, P1, V3, V6]; xn----z1g168i.xn--1-0mba52321c; ; xn----z1g.xn--1-0mba52321c; [B1, B6, P1, V3, V6] # Ⴠ-.1σ𞴺σ
+\u200CჀ-.1σ𞴺Σ; \u200CჀ-.1σ𞴺σ; [B1, C1, V3, V6]; xn----z1g168i.xn--1-0mba52321c; ; xn----z1g.xn--1-0mba52321c; [B1, B6, V3, V6] # Ⴠ-.1σ𞴺σ
xn----z1g.xn--1-0mba52321c; Ⴠ-.1σ𞴺σ; [B1, B6, V3, V6]; xn----z1g.xn--1-0mba52321c; ; ; # Ⴠ-.1σ𞴺σ
xn----z1g168i.xn--1-0mba52321c; \u200CჀ-.1σ𞴺σ; [B1, C1, V3, V6]; xn----z1g168i.xn--1-0mba52321c; ; ; # Ⴠ-.1σ𞴺σ
xn----2ws.xn--1-0mba52321c; ⴠ-.1σ𞴺σ; [B1, B6, V3]; xn----2ws.xn--1-0mba52321c; ; ; # ⴠ-.1σ𞴺σ
xn----rgn530d.xn--1-0mba52321c; \u200Cⴠ-.1σ𞴺σ; [B1, C1, V3]; xn----rgn530d.xn--1-0mba52321c; ; ; # ⴠ-.1σ𞴺σ
-\u200CჀ-.1ς𞴺Σ; \u200CჀ-.1ς𞴺σ; [B1, C1, P1, V3, V6]; xn----z1g168i.xn--1-ymbd52321c; ; xn----z1g.xn--1-0mba52321c; [B1, B6, P1, V3, V6] # Ⴠ-.1ς𞴺σ
+\u200CჀ-.1ς𞴺Σ; \u200CჀ-.1ς𞴺σ; [B1, C1, V3, V6]; xn----z1g168i.xn--1-ymbd52321c; ; xn----z1g.xn--1-0mba52321c; [B1, B6, V3, V6] # Ⴠ-.1ς𞴺σ
\u200Cⴠ-.1ς𞴺σ; ; [B1, C1, V3]; xn----rgn530d.xn--1-ymbd52321c; ; xn----2ws.xn--1-0mba52321c; [B1, B6, V3] # ⴠ-.1ς𞴺σ
xn----rgn530d.xn--1-ymbd52321c; \u200Cⴠ-.1ς𞴺σ; [B1, C1, V3]; xn----rgn530d.xn--1-ymbd52321c; ; ; # ⴠ-.1ς𞴺σ
xn----z1g168i.xn--1-ymbd52321c; \u200CჀ-.1ς𞴺σ; [B1, C1, V3, V6]; xn----z1g168i.xn--1-ymbd52321c; ; ; # Ⴠ-.1ς𞴺σ
xn----rgn530d.xn--1-ymba92321c; \u200Cⴠ-.1ς𞴺ς; [B1, C1, V3]; xn----rgn530d.xn--1-ymba92321c; ; ; # ⴠ-.1ς𞴺ς
xn----z1g168i.xn--1-ymba92321c; \u200CჀ-.1ς𞴺ς; [B1, C1, V3, V6]; xn----z1g168i.xn--1-ymba92321c; ; ; # Ⴠ-.1ς𞴺ς
\u200Câ´ -.ðŸ·Ï‚𞴺ς; \u200Câ´ -.1ς𞴺ς; [B1, C1, V3]; xn----rgn530d.xn--1-ymba92321c; ; xn----2ws.xn--1-0mba52321c; [B1, B6, V3] # â´ -.1ς𞴺ς
-\u200CჀ-.ðŸ·Î£ðž´ºÎ£; \u200CჀ-.1σ𞴺σ; [B1, C1, P1, V3, V6]; xn----z1g168i.xn--1-0mba52321c; ; xn----z1g.xn--1-0mba52321c; [B1, B6, P1, V3, V6] # Ⴠ-.1σ𞴺σ
+\u200CჀ-.ðŸ·Î£ðž´ºÎ£; \u200CჀ-.1σ𞴺σ; [B1, C1, V3, V6]; xn----z1g168i.xn--1-0mba52321c; ; xn----z1g.xn--1-0mba52321c; [B1, B6, V3, V6] # Ⴠ-.1σ𞴺σ
\u200Câ´ -.ðŸ·Ïƒðž´ºÏƒ; \u200Câ´ -.1σ𞴺σ; [B1, C1, V3]; xn----rgn530d.xn--1-0mba52321c; ; xn----2ws.xn--1-0mba52321c; [B1, B6, V3] # â´ -.1σ𞴺σ
-\u200CჀ-.ðŸ·Ïƒðž´ºÎ£; \u200CჀ-.1σ𞴺σ; [B1, C1, P1, V3, V6]; xn----z1g168i.xn--1-0mba52321c; ; xn----z1g.xn--1-0mba52321c; [B1, B6, P1, V3, V6] # Ⴠ-.1σ𞴺σ
-\u200CჀ-.ðŸ·Ï‚𞴺Σ; \u200CჀ-.1ς𞴺σ; [B1, C1, P1, V3, V6]; xn----z1g168i.xn--1-ymbd52321c; ; xn----z1g.xn--1-0mba52321c; [B1, B6, P1, V3, V6] # Ⴠ-.1ς𞴺σ
+\u200CჀ-.ðŸ·Ïƒðž´ºÎ£; \u200CჀ-.1σ𞴺σ; [B1, C1, V3, V6]; xn----z1g168i.xn--1-0mba52321c; ; xn----z1g.xn--1-0mba52321c; [B1, B6, V3, V6] # Ⴠ-.1σ𞴺σ
+\u200CჀ-.ðŸ·Ï‚𞴺Σ; \u200CჀ-.1ς𞴺σ; [B1, C1, V3, V6]; xn----z1g168i.xn--1-ymbd52321c; ; xn----z1g.xn--1-0mba52321c; [B1, B6, V3, V6] # Ⴠ-.1ς𞴺σ
\u200Câ´ -.ðŸ·Ï‚𞴺σ; \u200Câ´ -.1ς𞴺σ; [B1, C1, V3]; xn----rgn530d.xn--1-ymbd52321c; ; xn----2ws.xn--1-0mba52321c; [B1, B6, V3] # â´ -.1ς𞴺σ
-𑲘󠄒𓑡。ðŸªá‚¼; 𑲘𓑡.8Ⴜ; [P1, V5, V6]; xn--7m3d291b.xn--8-s1g; ; ; # 𑲘.8Ⴜ
-𑲘󠄒𓑡。8Ⴜ; 𑲘𓑡.8Ⴜ; [P1, V5, V6]; xn--7m3d291b.xn--8-s1g; ; ; # 𑲘.8Ⴜ
-𑲘󠄒𓑡。8ⴜ; 𑲘𓑡.8ⴜ; [P1, V5, V6]; xn--7m3d291b.xn--8-vws; ; ; # 𑲘.8ⴜ
+𑲘󠄒𓑡。ðŸªá‚¼; 𑲘𓑡.8Ⴜ; [V5, V6]; xn--7m3d291b.xn--8-s1g; ; ; # 𑲘.8Ⴜ
+𑲘󠄒𓑡。8Ⴜ; 𑲘𓑡.8Ⴜ; [V5, V6]; xn--7m3d291b.xn--8-s1g; ; ; # 𑲘.8Ⴜ
+𑲘󠄒𓑡。8ⴜ; 𑲘𓑡.8ⴜ; [V5, V6]; xn--7m3d291b.xn--8-vws; ; ; # 𑲘.8ⴜ
xn--7m3d291b.xn--8-vws; 𑲘𓑡.8ⴜ; [V5, V6]; xn--7m3d291b.xn--8-vws; ; ; # 𑲘.8ⴜ
xn--7m3d291b.xn--8-s1g; 𑲘𓑡.8Ⴜ; [V5, V6]; xn--7m3d291b.xn--8-s1g; ; ; # 𑲘.8Ⴜ
-𑲘󠄒𓑡。ðŸªâ´œ; 𑲘𓑡.8â´œ; [P1, V5, V6]; xn--7m3d291b.xn--8-vws; ; ; # 𑲘.8â´œ
+𑲘󠄒𓑡。ðŸªâ´œ; 𑲘𓑡.8â´œ; [V5, V6]; xn--7m3d291b.xn--8-vws; ; ; # 𑲘.8â´œ
äª\u06AB\u07E0\u0941。뭕á¢\u17B9; äª\u06AB\u07E0\u0941.ë­•á¢\u17B9; [B5, B6]; xn--ekb23dj4at01n.xn--43e96bh910b; ; ; # äªÚ«ß à¥.ë­•á¢áž¹
äª\u06AB\u07E0\u0941。뭕á¢\u17B9; äª\u06AB\u07E0\u0941.ë­•á¢\u17B9; [B5, B6]; xn--ekb23dj4at01n.xn--43e96bh910b; ; ; # äªÚ«ß à¥.ë­•á¢áž¹
äª\u06AB\u07E0\u0941。뭕á¢\u17B9; äª\u06AB\u07E0\u0941.ë­•á¢\u17B9; [B5, B6]; xn--ekb23dj4at01n.xn--43e96bh910b; ; ; # äªÚ«ß à¥.ë­•á¢áž¹
äª\u06AB\u07E0\u0941。뭕á¢\u17B9; äª\u06AB\u07E0\u0941.ë­•á¢\u17B9; [B5, B6]; xn--ekb23dj4at01n.xn--43e96bh910b; ; ; # äªÚ«ß à¥.ë­•á¢áž¹
xn--ekb23dj4at01n.xn--43e96bh910b; äª\u06AB\u07E0\u0941.ë­•á¢\u17B9; [B5, B6]; xn--ekb23dj4at01n.xn--43e96bh910b; ; ; # äªÚ«ß à¥.ë­•á¢áž¹
-\u1BAB。🂉ó °; \u1BAB.🂉ó °; [P1, V5, V6]; xn--zxf.xn--fx7ho0250c; ; ; # ᮫.🂉
-\u1BAB。🂉ó °; \u1BAB.🂉ó °; [P1, V5, V6]; xn--zxf.xn--fx7ho0250c; ; ; # ᮫.🂉
+\u1BAB。🂉ó °; \u1BAB.🂉ó °; [V5, V6]; xn--zxf.xn--fx7ho0250c; ; ; # ᮫.🂉
+\u1BAB。🂉ó °; \u1BAB.🂉ó °; [V5, V6]; xn--zxf.xn--fx7ho0250c; ; ; # ᮫.🂉
xn--zxf.xn--fx7ho0250c; \u1BAB.🂉ó °; [V5, V6]; xn--zxf.xn--fx7ho0250c; ; ; # ᮫.🂉
-󩎃\u0AC4。ς\u200Dð¹®ð‘ˆµ; 󩎃\u0AC4.Ï‚\u200Dð¹®ð‘ˆµ; [B5, C2, P1, V6]; xn--dfc53161q.xn--3xa006lzo7nsfd; ; xn--dfc53161q.xn--4xa8467k5mc; [B5, P1, V6] # à«„.Ï‚ð¹®ð‘ˆµ
-󩎃\u0AC4。Σ\u200Dð¹®ð‘ˆµ; 󩎃\u0AC4.σ\u200Dð¹®ð‘ˆµ; [B5, C2, P1, V6]; xn--dfc53161q.xn--4xa895lzo7nsfd; ; xn--dfc53161q.xn--4xa8467k5mc; [B5, P1, V6] # à«„.σð¹®ð‘ˆµ
-󩎃\u0AC4。σ\u200Dð¹®ð‘ˆµ; 󩎃\u0AC4.σ\u200Dð¹®ð‘ˆµ; [B5, C2, P1, V6]; xn--dfc53161q.xn--4xa895lzo7nsfd; ; xn--dfc53161q.xn--4xa8467k5mc; [B5, P1, V6] # à«„.σð¹®ð‘ˆµ
+󩎃\u0AC4。ς\u200Dð¹®ð‘ˆµ; 󩎃\u0AC4.Ï‚\u200Dð¹®ð‘ˆµ; [B5, C2, V6]; xn--dfc53161q.xn--3xa006lzo7nsfd; ; xn--dfc53161q.xn--4xa8467k5mc; [B5, V6] # à«„.Ï‚ð¹®ð‘ˆµ
+󩎃\u0AC4。Σ\u200Dð¹®ð‘ˆµ; 󩎃\u0AC4.σ\u200Dð¹®ð‘ˆµ; [B5, C2, V6]; xn--dfc53161q.xn--4xa895lzo7nsfd; ; xn--dfc53161q.xn--4xa8467k5mc; [B5, V6] # à«„.σð¹®ð‘ˆµ
+󩎃\u0AC4。σ\u200Dð¹®ð‘ˆµ; 󩎃\u0AC4.σ\u200Dð¹®ð‘ˆµ; [B5, C2, V6]; xn--dfc53161q.xn--4xa895lzo7nsfd; ; xn--dfc53161q.xn--4xa8467k5mc; [B5, V6] # à«„.σð¹®ð‘ˆµ
xn--dfc53161q.xn--4xa8467k5mc; 󩎃\u0AC4.σð¹®ð‘ˆµ; [B5, V6]; xn--dfc53161q.xn--4xa8467k5mc; ; ; # à«„.σð¹®ð‘ˆµ
xn--dfc53161q.xn--4xa895lzo7nsfd; 󩎃\u0AC4.σ\u200Dð¹®ð‘ˆµ; [B5, C2, V6]; xn--dfc53161q.xn--4xa895lzo7nsfd; ; ; # à«„.σð¹®ð‘ˆµ
xn--dfc53161q.xn--3xa006lzo7nsfd; 󩎃\u0AC4.Ï‚\u200Dð¹®ð‘ˆµ; [B5, C2, V6]; xn--dfc53161q.xn--3xa006lzo7nsfd; ; ; # à«„.Ï‚ð¹®ð‘ˆµ
-ð«€á¡‚𑜫.𑘿; ð«€á¡‚𑜫.𑘿; [B1, B2, B3, B6, V5]; xn--17e9625js1h.xn--sb2d; ; ; # ð«€á¡‚𑜫.𑘿
-ð«€á¡‚𑜫.𑘿; ; [B1, B2, B3, B6, V5]; xn--17e9625js1h.xn--sb2d; ; ; # ð«€á¡‚𑜫.𑘿
-xn--17e9625js1h.xn--sb2d; ð«€á¡‚𑜫.𑘿; [B1, B2, B3, B6, V5]; xn--17e9625js1h.xn--sb2d; ; ; # ð«€á¡‚𑜫.𑘿
-󬚶󸋖򖩰-。\u200C; 󬚶󸋖򖩰-.\u200C; [C1, P1, V3, V6]; xn----7i12hu122k9ire.xn--0ug; ; xn----7i12hu122k9ire.; [P1, V3, V6] # -.
+ð«€á¡‚𑜫.𑘿; ð«€á¡‚𑜫.𑘿; [B1, B2, B3, V5]; xn--17e9625js1h.xn--sb2d; ; ; # ð«€á¡‚𑜫.𑘿
+ð«€á¡‚𑜫.𑘿; ; [B1, B2, B3, V5]; xn--17e9625js1h.xn--sb2d; ; ; # ð«€á¡‚𑜫.𑘿
+xn--17e9625js1h.xn--sb2d; ð«€á¡‚𑜫.𑘿; [B1, B2, B3, V5]; xn--17e9625js1h.xn--sb2d; ; ; # ð«€á¡‚𑜫.𑘿
+󬚶󸋖򖩰-。\u200C; 󬚶󸋖򖩰-.\u200C; [C1, V3, V6]; xn----7i12hu122k9ire.xn--0ug; ; xn----7i12hu122k9ire.; [V3, V6] # -.
xn----7i12hu122k9ire.; 󬚶󸋖򖩰-.; [V3, V6]; xn----7i12hu122k9ire.; ; ; # -.
xn----7i12hu122k9ire.xn--0ug; 󬚶󸋖򖩰-.\u200C; [C1, V3, V6]; xn----7i12hu122k9ire.xn--0ug; ; ; # -.
ð¹£ï¼Ž\u07C2; ð¹£.\u07C2; [B1]; xn--bo0d.xn--dsb; ; ; # ð¹£.ß‚
ð¹£.\u07C2; ; [B1]; xn--bo0d.xn--dsb; ; ; # ð¹£.ß‚
xn--bo0d.xn--dsb; ð¹£.\u07C2; [B1]; xn--bo0d.xn--dsb; ; ; # ð¹£.ß‚
--\u07E1。Ↄ; -\u07E1.Ↄ; [B1, P1, V3, V6]; xn----8cd.xn--q5g; ; ; # -ߡ.Ↄ
--\u07E1。Ↄ; -\u07E1.Ↄ; [B1, P1, V3, V6]; xn----8cd.xn--q5g; ; ; # -ߡ.Ↄ
+-\u07E1。Ↄ; -\u07E1.Ↄ; [B1, V3, V6]; xn----8cd.xn--q5g; ; ; # -ߡ.Ↄ
+-\u07E1。Ↄ; -\u07E1.Ↄ; [B1, V3, V6]; xn----8cd.xn--q5g; ; ; # -ߡ.Ↄ
-\u07E1。ↄ; -\u07E1.ↄ; [B1, V3]; xn----8cd.xn--r5g; ; ; # -ߡ.ↄ
xn----8cd.xn--r5g; -\u07E1.ↄ; [B1, V3]; xn----8cd.xn--r5g; ; ; # -ߡ.ↄ
xn----8cd.xn--q5g; -\u07E1.Ↄ; [B1, V3, V6]; xn----8cd.xn--q5g; ; ; # -ߡ.Ↄ
-\u07E1。ↄ; -\u07E1.ↄ; [B1, V3]; xn----8cd.xn--r5g; ; ; # -ߡ.ↄ
-\u200D-︒󠄄。ß哑\u200Cðµ¿; \u200D-︒.ß哑\u200Cðµ¿; [B1, B5, B6, C1, C2, P1, V6]; xn----tgnt341h.xn--zca670n5f0binyk; ; xn----o89h.xn--ss-h46c5711e; [B1, B5, B6, P1, V3, V6] # -︒.ß哑
-\u200D-。󠄄。ß哑\u200Cðµ¿; \u200D-..ß哑\u200Cðµ¿; [B1, B5, B6, C1, C2, P1, V3, V6, X4_2]; xn----tgn..xn--zca670n5f0binyk; [B1, B5, B6, C1, C2, P1, V3, V6, A4_2]; -..xn--ss-h46c5711e; [B1, B5, B6, P1, V3, V6, A4_2] # -..ß哑
-\u200D-。󠄄。SSå“‘\u200Cðµ¿; \u200D-..sså“‘\u200Cðµ¿; [B1, B5, B6, C1, C2, P1, V3, V6, X4_2]; xn----tgn..xn--ss-k1ts75zb8ym; [B1, B5, B6, C1, C2, P1, V3, V6, A4_2]; -..xn--ss-h46c5711e; [B1, B5, B6, P1, V3, V6, A4_2] # -..sså“‘
-\u200D-。󠄄。sså“‘\u200Cðµ¿; \u200D-..sså“‘\u200Cðµ¿; [B1, B5, B6, C1, C2, P1, V3, V6, X4_2]; xn----tgn..xn--ss-k1ts75zb8ym; [B1, B5, B6, C1, C2, P1, V3, V6, A4_2]; -..xn--ss-h46c5711e; [B1, B5, B6, P1, V3, V6, A4_2] # -..sså“‘
-\u200D-。󠄄。Sså“‘\u200Cðµ¿; \u200D-..sså“‘\u200Cðµ¿; [B1, B5, B6, C1, C2, P1, V3, V6, X4_2]; xn----tgn..xn--ss-k1ts75zb8ym; [B1, B5, B6, C1, C2, P1, V3, V6, A4_2]; -..xn--ss-h46c5711e; [B1, B5, B6, P1, V3, V6, A4_2] # -..sså“‘
+\u200D-︒󠄄。ß哑\u200Cðµ¿; \u200D-︒.ß哑\u200Cðµ¿; [B1, B5, B6, C1, C2, V6]; xn----tgnt341h.xn--zca670n5f0binyk; ; xn----o89h.xn--ss-h46c5711e; [B1, B5, B6, V3, V6] # -︒.ß哑
+\u200D-。󠄄。ß哑\u200Cðµ¿; \u200D-..ß哑\u200Cðµ¿; [B1, B5, B6, C1, C2, V3, V6, X4_2]; xn----tgn..xn--zca670n5f0binyk; [B1, B5, B6, C1, C2, V3, V6, A4_2]; -..xn--ss-h46c5711e; [B1, B5, B6, V3, V6, A4_2] # -..ß哑
+\u200D-。󠄄。SSå“‘\u200Cðµ¿; \u200D-..sså“‘\u200Cðµ¿; [B1, B5, B6, C1, C2, V3, V6, X4_2]; xn----tgn..xn--ss-k1ts75zb8ym; [B1, B5, B6, C1, C2, V3, V6, A4_2]; -..xn--ss-h46c5711e; [B1, B5, B6, V3, V6, A4_2] # -..sså“‘
+\u200D-。󠄄。sså“‘\u200Cðµ¿; \u200D-..sså“‘\u200Cðµ¿; [B1, B5, B6, C1, C2, V3, V6, X4_2]; xn----tgn..xn--ss-k1ts75zb8ym; [B1, B5, B6, C1, C2, V3, V6, A4_2]; -..xn--ss-h46c5711e; [B1, B5, B6, V3, V6, A4_2] # -..sså“‘
+\u200D-。󠄄。Sså“‘\u200Cðµ¿; \u200D-..sså“‘\u200Cðµ¿; [B1, B5, B6, C1, C2, V3, V6, X4_2]; xn----tgn..xn--ss-k1ts75zb8ym; [B1, B5, B6, C1, C2, V3, V6, A4_2]; -..xn--ss-h46c5711e; [B1, B5, B6, V3, V6, A4_2] # -..sså“‘
-..xn--ss-h46c5711e; -..sså“‘ðµ¿; [B1, B5, B6, V3, V6, X4_2]; -..xn--ss-h46c5711e; [B1, B5, B6, V3, V6, A4_2]; ; # -..sså“‘
xn----tgn..xn--ss-k1ts75zb8ym; \u200D-..sså“‘\u200Cðµ¿; [B1, B5, B6, C1, C2, V3, V6, X4_2]; xn----tgn..xn--ss-k1ts75zb8ym; [B1, B5, B6, C1, C2, V3, V6, A4_2]; ; # -..sså“‘
xn----tgn..xn--zca670n5f0binyk; \u200D-..ß哑\u200Cðµ¿; [B1, B5, B6, C1, C2, V3, V6, X4_2]; xn----tgn..xn--zca670n5f0binyk; [B1, B5, B6, C1, C2, V3, V6, A4_2]; ; # -..ß哑
-\u200D-︒󠄄。SSå“‘\u200Cðµ¿; \u200D-︒.sså“‘\u200Cðµ¿; [B1, B5, B6, C1, C2, P1, V6]; xn----tgnt341h.xn--ss-k1ts75zb8ym; ; xn----o89h.xn--ss-h46c5711e; [B1, B5, B6, P1, V3, V6] # -︒.sså“‘
-\u200D-︒󠄄。sså“‘\u200Cðµ¿; \u200D-︒.sså“‘\u200Cðµ¿; [B1, B5, B6, C1, C2, P1, V6]; xn----tgnt341h.xn--ss-k1ts75zb8ym; ; xn----o89h.xn--ss-h46c5711e; [B1, B5, B6, P1, V3, V6] # -︒.sså“‘
-\u200D-︒󠄄。Sså“‘\u200Cðµ¿; \u200D-︒.sså“‘\u200Cðµ¿; [B1, B5, B6, C1, C2, P1, V6]; xn----tgnt341h.xn--ss-k1ts75zb8ym; ; xn----o89h.xn--ss-h46c5711e; [B1, B5, B6, P1, V3, V6] # -︒.sså“‘
+\u200D-︒󠄄。SSå“‘\u200Cðµ¿; \u200D-︒.sså“‘\u200Cðµ¿; [B1, B5, B6, C1, C2, V6]; xn----tgnt341h.xn--ss-k1ts75zb8ym; ; xn----o89h.xn--ss-h46c5711e; [B1, B5, B6, V3, V6] # -︒.sså“‘
+\u200D-︒󠄄。sså“‘\u200Cðµ¿; \u200D-︒.sså“‘\u200Cðµ¿; [B1, B5, B6, C1, C2, V6]; xn----tgnt341h.xn--ss-k1ts75zb8ym; ; xn----o89h.xn--ss-h46c5711e; [B1, B5, B6, V3, V6] # -︒.sså“‘
+\u200D-︒󠄄。Sså“‘\u200Cðµ¿; \u200D-︒.sså“‘\u200Cðµ¿; [B1, B5, B6, C1, C2, V6]; xn----tgnt341h.xn--ss-k1ts75zb8ym; ; xn----o89h.xn--ss-h46c5711e; [B1, B5, B6, V3, V6] # -︒.sså“‘
xn----o89h.xn--ss-h46c5711e; -︒.sså“‘ðµ¿; [B1, B5, B6, V3, V6]; xn----o89h.xn--ss-h46c5711e; ; ; # -︒.sså“‘
xn----tgnt341h.xn--ss-k1ts75zb8ym; \u200D-︒.sså“‘\u200Cðµ¿; [B1, B5, B6, C1, C2, V6]; xn----tgnt341h.xn--ss-k1ts75zb8ym; ; ; # -︒.sså“‘
xn----tgnt341h.xn--zca670n5f0binyk; \u200D-︒.ß哑\u200Cðµ¿; [B1, B5, B6, C1, C2, V6]; xn----tgnt341h.xn--zca670n5f0binyk; ; ; # -︒.ß哑
-︒.\uFE2F𑑂; ︒.𑑂\uFE2F; [P1, V5, V6]; xn--y86c.xn--s96cu30b; ; ; # ︒.𑑂︯
-︒.𑑂\uFE2F; ︒.𑑂\uFE2F; [P1, V5, V6]; xn--y86c.xn--s96cu30b; ; ; # ︒.𑑂︯
+︒.\uFE2F𑑂; ︒.𑑂\uFE2F; [V5, V6]; xn--y86c.xn--s96cu30b; ; ; # ︒.𑑂︯
+︒.𑑂\uFE2F; ︒.𑑂\uFE2F; [V5, V6]; xn--y86c.xn--s96cu30b; ; ; # ︒.𑑂︯
。.𑑂\uFE2F; ..𑑂\uFE2F; [V5, X4_2]; ..xn--s96cu30b; [V5, A4_2]; ; # ..𑑂︯
..xn--s96cu30b; ..𑑂\uFE2F; [V5, X4_2]; ..xn--s96cu30b; [V5, A4_2]; ; # ..𑑂︯
xn--y86c.xn--s96cu30b; ︒.𑑂\uFE2F; [V5, V6]; xn--y86c.xn--s96cu30b; ; ; # ︒.𑑂︯
\uA92C。\u200D; \uA92C.\u200D; [C2, V5]; xn--zi9a.xn--1ug; ; xn--zi9a.; [V5] # ꤬.
xn--zi9a.; \uA92C.; [V5]; xn--zi9a.; ; ; # ꤬.
xn--zi9a.xn--1ug; \uA92C.\u200D; [C2, V5]; xn--zi9a.xn--1ug; ; ; # ꤬.
-\u200D󠸡。\uFCD7; \u200D󠸡.\u0647\u062C; [B1, C2, P1, V6]; xn--1ug80651l.xn--rgb7c; ; xn--d356e.xn--rgb7c; [B1, P1, V6] # .هج
-\u200D󠸡。\u0647\u062C; \u200D󠸡.\u0647\u062C; [B1, C2, P1, V6]; xn--1ug80651l.xn--rgb7c; ; xn--d356e.xn--rgb7c; [B1, P1, V6] # .هج
+\u200D󠸡。\uFCD7; \u200D󠸡.\u0647\u062C; [B1, C2, V6]; xn--1ug80651l.xn--rgb7c; ; xn--d356e.xn--rgb7c; [B1, V6] # .هج
+\u200D󠸡。\u0647\u062C; \u200D󠸡.\u0647\u062C; [B1, C2, V6]; xn--1ug80651l.xn--rgb7c; ; xn--d356e.xn--rgb7c; [B1, V6] # .هج
xn--d356e.xn--rgb7c; 󠸡.\u0647\u062C; [B1, V6]; xn--d356e.xn--rgb7c; ; ; # .هج
xn--1ug80651l.xn--rgb7c; \u200D󠸡.\u0647\u062C; [B1, C2, V6]; xn--1ug80651l.xn--rgb7c; ; ; # .هج
--ႤðŸ¢\u0663.ð‘´Ï‚; -Ⴄ0\u0663.ð‘´Ï‚; [B1, P1, V3, V5, V6]; xn---0-iyd216h.xn--3xa1220l; ; xn---0-iyd216h.xn--4xa9120l; # -Ⴄ0Ù£.ð‘´Ï‚
--Ⴄ0\u0663.ð‘´Ï‚; ; [B1, P1, V3, V5, V6]; xn---0-iyd216h.xn--3xa1220l; ; xn---0-iyd216h.xn--4xa9120l; # -Ⴄ0Ù£.ð‘´Ï‚
+-ႤðŸ¢\u0663.ð‘´Ï‚; -Ⴄ0\u0663.ð‘´Ï‚; [B1, V3, V5, V6]; xn---0-iyd216h.xn--3xa1220l; ; xn---0-iyd216h.xn--4xa9120l; # -Ⴄ0Ù£.ð‘´Ï‚
+-Ⴄ0\u0663.ð‘´Ï‚; ; [B1, V3, V5, V6]; xn---0-iyd216h.xn--3xa1220l; ; xn---0-iyd216h.xn--4xa9120l; # -Ⴄ0Ù£.ð‘´Ï‚
-â´„0\u0663.ð‘´Ï‚; ; [B1, V3, V5]; xn---0-iyd8660b.xn--3xa1220l; ; xn---0-iyd8660b.xn--4xa9120l; # -â´„0Ù£.ð‘´Ï‚
--Ⴄ0\u0663.ð‘´Î£; -Ⴄ0\u0663.ð‘´Ïƒ; [B1, P1, V3, V5, V6]; xn---0-iyd216h.xn--4xa9120l; ; ; # -Ⴄ0Ù£.ð‘´Ïƒ
+-Ⴄ0\u0663.ð‘´Î£; -Ⴄ0\u0663.ð‘´Ïƒ; [B1, V3, V5, V6]; xn---0-iyd216h.xn--4xa9120l; ; ; # -Ⴄ0Ù£.ð‘´Ïƒ
-â´„0\u0663.ð‘´Ïƒ; ; [B1, V3, V5]; xn---0-iyd8660b.xn--4xa9120l; ; ; # -â´„0Ù£.ð‘´Ïƒ
xn---0-iyd8660b.xn--4xa9120l; -â´„0\u0663.ð‘´Ïƒ; [B1, V3, V5]; xn---0-iyd8660b.xn--4xa9120l; ; ; # -â´„0Ù£.ð‘´Ïƒ
xn---0-iyd216h.xn--4xa9120l; -Ⴄ0\u0663.ð‘´Ïƒ; [B1, V3, V5, V6]; xn---0-iyd216h.xn--4xa9120l; ; ; # -Ⴄ0Ù£.ð‘´Ïƒ
xn---0-iyd8660b.xn--3xa1220l; -â´„0\u0663.ð‘´Ï‚; [B1, V3, V5]; xn---0-iyd8660b.xn--3xa1220l; ; ; # -â´„0Ù£.ð‘´Ï‚
xn---0-iyd216h.xn--3xa1220l; -Ⴄ0\u0663.ð‘´Ï‚; [B1, V3, V5, V6]; xn---0-iyd216h.xn--3xa1220l; ; ; # -Ⴄ0Ù£.ð‘´Ï‚
-â´„ðŸ¢\u0663.ð‘´Ï‚; -â´„0\u0663.ð‘´Ï‚; [B1, V3, V5]; xn---0-iyd8660b.xn--3xa1220l; ; xn---0-iyd8660b.xn--4xa9120l; # -â´„0Ù£.ð‘´Ï‚
--ႤðŸ¢\u0663.ð‘´Î£; -Ⴄ0\u0663.ð‘´Ïƒ; [B1, P1, V3, V5, V6]; xn---0-iyd216h.xn--4xa9120l; ; ; # -Ⴄ0Ù£.ð‘´Ïƒ
+-ႤðŸ¢\u0663.ð‘´Î£; -Ⴄ0\u0663.ð‘´Ïƒ; [B1, V3, V5, V6]; xn---0-iyd216h.xn--4xa9120l; ; ; # -Ⴄ0Ù£.ð‘´Ïƒ
-â´„ðŸ¢\u0663.ð‘´Ïƒ; -â´„0\u0663.ð‘´Ïƒ; [B1, V3, V5]; xn---0-iyd8660b.xn--4xa9120l; ; ; # -â´„0Ù£.ð‘´Ïƒ
-󦈄。-; 󦈄.-; [P1, V3, V6]; xn--xm38e.-; ; ; # .-
+󦈄。-; 󦈄.-; [V3, V6]; xn--xm38e.-; ; ; # .-
xn--xm38e.-; 󦈄.-; [V3, V6]; xn--xm38e.-; ; ; # .-
-â‹ ð‹®ï¼Žò¶ˆ®\u0F18ß≯; â‹ ð‹®.ò¶ˆ®\u0F18ß≯; [P1, V6]; xn--pgh4639f.xn--zca593eo6oc013y; ; xn--pgh4639f.xn--ss-ifj426nle504a; # â‹ ð‹®.༘ß≯
-≼\u0338ð‹®ï¼Žò¶ˆ®\u0F18ß>\u0338; â‹ ð‹®.ò¶ˆ®\u0F18ß≯; [P1, V6]; xn--pgh4639f.xn--zca593eo6oc013y; ; xn--pgh4639f.xn--ss-ifj426nle504a; # â‹ ð‹®.༘ß≯
-â‹ ð‹®.ò¶ˆ®\u0F18ß≯; ; [P1, V6]; xn--pgh4639f.xn--zca593eo6oc013y; ; xn--pgh4639f.xn--ss-ifj426nle504a; # â‹ ð‹®.༘ß≯
-≼\u0338ð‹®.ò¶ˆ®\u0F18ß>\u0338; â‹ ð‹®.ò¶ˆ®\u0F18ß≯; [P1, V6]; xn--pgh4639f.xn--zca593eo6oc013y; ; xn--pgh4639f.xn--ss-ifj426nle504a; # â‹ ð‹®.༘ß≯
-≼\u0338ð‹®.ò¶ˆ®\u0F18SS>\u0338; â‹ ð‹®.ò¶ˆ®\u0F18ss≯; [P1, V6]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ; # â‹ ð‹®.༘ss≯
-â‹ ð‹®.ò¶ˆ®\u0F18SS≯; â‹ ð‹®.ò¶ˆ®\u0F18ss≯; [P1, V6]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ; # â‹ ð‹®.༘ss≯
-â‹ ð‹®.ò¶ˆ®\u0F18ss≯; ; [P1, V6]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ; # â‹ ð‹®.༘ss≯
-≼\u0338ð‹®.ò¶ˆ®\u0F18ss>\u0338; â‹ ð‹®.ò¶ˆ®\u0F18ss≯; [P1, V6]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ; # â‹ ð‹®.༘ss≯
-≼\u0338ð‹®.ò¶ˆ®\u0F18Ss>\u0338; â‹ ð‹®.ò¶ˆ®\u0F18ss≯; [P1, V6]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ; # â‹ ð‹®.༘ss≯
-â‹ ð‹®.ò¶ˆ®\u0F18Ss≯; â‹ ð‹®.ò¶ˆ®\u0F18ss≯; [P1, V6]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ; # â‹ ð‹®.༘ss≯
+â‹ ð‹®ï¼Žò¶ˆ®\u0F18ß≯; â‹ ð‹®.ò¶ˆ®\u0F18ß≯; [V6]; xn--pgh4639f.xn--zca593eo6oc013y; ; xn--pgh4639f.xn--ss-ifj426nle504a; # â‹ ð‹®.༘ß≯
+≼\u0338ð‹®ï¼Žò¶ˆ®\u0F18ß>\u0338; â‹ ð‹®.ò¶ˆ®\u0F18ß≯; [V6]; xn--pgh4639f.xn--zca593eo6oc013y; ; xn--pgh4639f.xn--ss-ifj426nle504a; # â‹ ð‹®.༘ß≯
+â‹ ð‹®.ò¶ˆ®\u0F18ß≯; ; [V6]; xn--pgh4639f.xn--zca593eo6oc013y; ; xn--pgh4639f.xn--ss-ifj426nle504a; # â‹ ð‹®.༘ß≯
+≼\u0338ð‹®.ò¶ˆ®\u0F18ß>\u0338; â‹ ð‹®.ò¶ˆ®\u0F18ß≯; [V6]; xn--pgh4639f.xn--zca593eo6oc013y; ; xn--pgh4639f.xn--ss-ifj426nle504a; # â‹ ð‹®.༘ß≯
+≼\u0338ð‹®.ò¶ˆ®\u0F18SS>\u0338; â‹ ð‹®.ò¶ˆ®\u0F18ss≯; [V6]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ; # â‹ ð‹®.༘ss≯
+â‹ ð‹®.ò¶ˆ®\u0F18SS≯; â‹ ð‹®.ò¶ˆ®\u0F18ss≯; [V6]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ; # â‹ ð‹®.༘ss≯
+â‹ ð‹®.ò¶ˆ®\u0F18ss≯; ; [V6]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ; # â‹ ð‹®.༘ss≯
+≼\u0338ð‹®.ò¶ˆ®\u0F18ss>\u0338; â‹ ð‹®.ò¶ˆ®\u0F18ss≯; [V6]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ; # â‹ ð‹®.༘ss≯
+≼\u0338ð‹®.ò¶ˆ®\u0F18Ss>\u0338; â‹ ð‹®.ò¶ˆ®\u0F18ss≯; [V6]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ; # â‹ ð‹®.༘ss≯
+â‹ ð‹®.ò¶ˆ®\u0F18Ss≯; â‹ ð‹®.ò¶ˆ®\u0F18ss≯; [V6]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ; # â‹ ð‹®.༘ss≯
xn--pgh4639f.xn--ss-ifj426nle504a; â‹ ð‹®.ò¶ˆ®\u0F18ss≯; [V6]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ; # â‹ ð‹®.༘ss≯
xn--pgh4639f.xn--zca593eo6oc013y; â‹ ð‹®.ò¶ˆ®\u0F18ß≯; [V6]; xn--pgh4639f.xn--zca593eo6oc013y; ; ; # â‹ ð‹®.༘ß≯
-≼\u0338ð‹®ï¼Žò¶ˆ®\u0F18SS>\u0338; â‹ ð‹®.ò¶ˆ®\u0F18ss≯; [P1, V6]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ; # â‹ ð‹®.༘ss≯
-â‹ ð‹®ï¼Žò¶ˆ®\u0F18SS≯; â‹ ð‹®.ò¶ˆ®\u0F18ss≯; [P1, V6]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ; # â‹ ð‹®.༘ss≯
-â‹ ð‹®ï¼Žò¶ˆ®\u0F18ss≯; â‹ ð‹®.ò¶ˆ®\u0F18ss≯; [P1, V6]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ; # â‹ ð‹®.༘ss≯
-≼\u0338ð‹®ï¼Žò¶ˆ®\u0F18ss>\u0338; â‹ ð‹®.ò¶ˆ®\u0F18ss≯; [P1, V6]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ; # â‹ ð‹®.༘ss≯
-≼\u0338ð‹®ï¼Žò¶ˆ®\u0F18Ss>\u0338; â‹ ð‹®.ò¶ˆ®\u0F18ss≯; [P1, V6]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ; # â‹ ð‹®.༘ss≯
-â‹ ð‹®ï¼Žò¶ˆ®\u0F18Ss≯; â‹ ð‹®.ò¶ˆ®\u0F18ss≯; [P1, V6]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ; # â‹ ð‹®.༘ss≯
-1ð‹¸\u0664。󠢮\uFBA4ñ·Š; 1ð‹¸\u0664.ó ¢®\u06C0ñ·Š; [B1, P1, V6]; xn--1-hqc3905q.xn--zkb83268gqee4a; ; ; # 1ð‹¸Ù¤.Û€
-1ð‹¸\u0664。󠢮\u06C0ñ·Š; 1ð‹¸\u0664.ó ¢®\u06C0ñ·Š; [B1, P1, V6]; xn--1-hqc3905q.xn--zkb83268gqee4a; ; ; # 1ð‹¸Ù¤.Û€
-1ð‹¸\u0664。󠢮\u06D5\u0654ñ·Š; 1ð‹¸\u0664.ó ¢®\u06C0ñ·Š; [B1, P1, V6]; xn--1-hqc3905q.xn--zkb83268gqee4a; ; ; # 1ð‹¸Ù¤.Û€
+≼\u0338ð‹®ï¼Žò¶ˆ®\u0F18SS>\u0338; â‹ ð‹®.ò¶ˆ®\u0F18ss≯; [V6]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ; # â‹ ð‹®.༘ss≯
+â‹ ð‹®ï¼Žò¶ˆ®\u0F18SS≯; â‹ ð‹®.ò¶ˆ®\u0F18ss≯; [V6]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ; # â‹ ð‹®.༘ss≯
+â‹ ð‹®ï¼Žò¶ˆ®\u0F18ss≯; â‹ ð‹®.ò¶ˆ®\u0F18ss≯; [V6]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ; # â‹ ð‹®.༘ss≯
+≼\u0338ð‹®ï¼Žò¶ˆ®\u0F18ss>\u0338; â‹ ð‹®.ò¶ˆ®\u0F18ss≯; [V6]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ; # â‹ ð‹®.༘ss≯
+≼\u0338ð‹®ï¼Žò¶ˆ®\u0F18Ss>\u0338; â‹ ð‹®.ò¶ˆ®\u0F18ss≯; [V6]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ; # â‹ ð‹®.༘ss≯
+â‹ ð‹®ï¼Žò¶ˆ®\u0F18Ss≯; â‹ ð‹®.ò¶ˆ®\u0F18ss≯; [V6]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ; # â‹ ð‹®.༘ss≯
+1ð‹¸\u0664。󠢮\uFBA4ñ·Š; 1ð‹¸\u0664.ó ¢®\u06C0ñ·Š; [B1, V6]; xn--1-hqc3905q.xn--zkb83268gqee4a; ; ; # 1ð‹¸Ù¤.Û€
+1ð‹¸\u0664。󠢮\u06C0ñ·Š; 1ð‹¸\u0664.ó ¢®\u06C0ñ·Š; [B1, V6]; xn--1-hqc3905q.xn--zkb83268gqee4a; ; ; # 1ð‹¸Ù¤.Û€
+1ð‹¸\u0664。󠢮\u06D5\u0654ñ·Š; 1ð‹¸\u0664.ó ¢®\u06C0ñ·Š; [B1, V6]; xn--1-hqc3905q.xn--zkb83268gqee4a; ; ; # 1ð‹¸Ù¤.Û€
xn--1-hqc3905q.xn--zkb83268gqee4a; 1ð‹¸\u0664.ó ¢®\u06C0ñ·Š; [B1, V6]; xn--1-hqc3905q.xn--zkb83268gqee4a; ; ; # 1ð‹¸Ù¤.Û€
-å„­-。ð¹´áƒ‚ñ¥³ \u200C; å„­-.ð¹´áƒ‚ñ¥³ \u200C; [B1, B6, C1, P1, V3, V6]; xn----gz7a.xn--6nd249ejl4pusr7b; ; xn----gz7a.xn--6nd5001kyw98a; [B1, B6, P1, V3, V6] # å„­-.ð¹´áƒ‚
-å„­-。ð¹´áƒ‚ñ¥³ \u200C; å„­-.ð¹´áƒ‚ñ¥³ \u200C; [B1, B6, C1, P1, V3, V6]; xn----gz7a.xn--6nd249ejl4pusr7b; ; xn----gz7a.xn--6nd5001kyw98a; [B1, B6, P1, V3, V6] # å„­-.ð¹´áƒ‚
-å„­-。ð¹´â´¢ñ¥³ \u200C; å„­-.ð¹´â´¢ñ¥³ \u200C; [B1, B6, C1, P1, V3, V6]; xn----gz7a.xn--0ug472cfq0pus98b; ; xn----gz7a.xn--qlj9223eywx0b; [B1, B6, P1, V3, V6] # å„­-.ð¹´â´¢
+å„­-。ð¹´áƒ‚ñ¥³ \u200C; å„­-.ð¹´áƒ‚ñ¥³ \u200C; [B1, B6, C1, V3, V6]; xn----gz7a.xn--6nd249ejl4pusr7b; ; xn----gz7a.xn--6nd5001kyw98a; [B1, B6, V3, V6] # å„­-.ð¹´áƒ‚
+å„­-。ð¹´áƒ‚ñ¥³ \u200C; å„­-.ð¹´áƒ‚ñ¥³ \u200C; [B1, B6, C1, V3, V6]; xn----gz7a.xn--6nd249ejl4pusr7b; ; xn----gz7a.xn--6nd5001kyw98a; [B1, B6, V3, V6] # å„­-.ð¹´áƒ‚
+å„­-。ð¹´â´¢ñ¥³ \u200C; å„­-.ð¹´â´¢ñ¥³ \u200C; [B1, B6, C1, V3, V6]; xn----gz7a.xn--0ug472cfq0pus98b; ; xn----gz7a.xn--qlj9223eywx0b; [B1, B6, V3, V6] # å„­-.ð¹´â´¢
xn----gz7a.xn--qlj9223eywx0b; å„­-.ð¹´â´¢ñ¥³ ; [B1, B6, V3, V6]; xn----gz7a.xn--qlj9223eywx0b; ; ; # å„­-.ð¹´â´¢
xn----gz7a.xn--0ug472cfq0pus98b; å„­-.ð¹´â´¢ñ¥³ \u200C; [B1, B6, C1, V3, V6]; xn----gz7a.xn--0ug472cfq0pus98b; ; ; # å„­-.ð¹´â´¢
xn----gz7a.xn--6nd5001kyw98a; å„­-.ð¹´áƒ‚ñ¥³ ; [B1, B6, V3, V6]; xn----gz7a.xn--6nd5001kyw98a; ; ; # å„­-.ð¹´áƒ‚
xn----gz7a.xn--6nd249ejl4pusr7b; å„­-.ð¹´áƒ‚ñ¥³ \u200C; [B1, B6, C1, V3, V6]; xn----gz7a.xn--6nd249ejl4pusr7b; ; ; # å„­-.ð¹´áƒ‚
-å„­-。ð¹´â´¢ñ¥³ \u200C; å„­-.ð¹´â´¢ñ¥³ \u200C; [B1, B6, C1, P1, V3, V6]; xn----gz7a.xn--0ug472cfq0pus98b; ; xn----gz7a.xn--qlj9223eywx0b; [B1, B6, P1, V3, V6] # å„­-.ð¹´â´¢
-ðŸºð‹·\u06B9.𞤭ò¿¡; 4ð‹·\u06B9.𞤭ò¿¡; [B1, B2, B3, P1, V6]; xn--4-cvc5384q.xn--le6hi7322b; ; ; # 4ð‹·Ú¹.𞤭
-4ð‹·\u06B9.𞤭ò¿¡; ; [B1, B2, B3, P1, V6]; xn--4-cvc5384q.xn--le6hi7322b; ; ; # 4ð‹·Ú¹.𞤭
-4ð‹·\u06B9.𞤋ò¿¡; 4ð‹·\u06B9.𞤭ò¿¡; [B1, B2, B3, P1, V6]; xn--4-cvc5384q.xn--le6hi7322b; ; ; # 4ð‹·Ú¹.𞤭
+å„­-。ð¹´â´¢ñ¥³ \u200C; å„­-.ð¹´â´¢ñ¥³ \u200C; [B1, B6, C1, V3, V6]; xn----gz7a.xn--0ug472cfq0pus98b; ; xn----gz7a.xn--qlj9223eywx0b; [B1, B6, V3, V6] # å„­-.ð¹´â´¢
+ðŸºð‹·\u06B9.𞤭ò¿¡; 4ð‹·\u06B9.𞤭ò¿¡; [B1, B2, B3, V6]; xn--4-cvc5384q.xn--le6hi7322b; ; ; # 4ð‹·Ú¹.𞤭
+4ð‹·\u06B9.𞤭ò¿¡; ; [B1, B2, B3, V6]; xn--4-cvc5384q.xn--le6hi7322b; ; ; # 4ð‹·Ú¹.𞤭
+4ð‹·\u06B9.𞤋ò¿¡; 4ð‹·\u06B9.𞤭ò¿¡; [B1, B2, B3, V6]; xn--4-cvc5384q.xn--le6hi7322b; ; ; # 4ð‹·Ú¹.𞤭
xn--4-cvc5384q.xn--le6hi7322b; 4ð‹·\u06B9.𞤭ò¿¡; [B1, B2, B3, V6]; xn--4-cvc5384q.xn--le6hi7322b; ; ; # 4ð‹·Ú¹.𞤭
-ðŸºð‹·\u06B9.𞤋ò¿¡; 4ð‹·\u06B9.𞤭ò¿¡; [B1, B2, B3, P1, V6]; xn--4-cvc5384q.xn--le6hi7322b; ; ; # 4ð‹·Ú¹.𞤭
-≯-ꡋ𑲣.â’ˆð¹­; ; [B1, P1, V6]; xn----ogox061d5i8d.xn--tsh0666f; ; ; # ≯-ꡋ𑲣.â’ˆð¹­
->\u0338-ꡋ𑲣.â’ˆð¹­; ≯-ꡋ𑲣.â’ˆð¹­; [B1, P1, V6]; xn----ogox061d5i8d.xn--tsh0666f; ; ; # ≯-ꡋ𑲣.â’ˆð¹­
-≯-ꡋ𑲣.1.ð¹­; ; [B1, P1, V6]; xn----ogox061d5i8d.1.xn--lo0d; ; ; # ≯-ꡋ𑲣.1.ð¹­
->\u0338-ꡋ𑲣.1.ð¹­; ≯-ꡋ𑲣.1.ð¹­; [B1, P1, V6]; xn----ogox061d5i8d.1.xn--lo0d; ; ; # ≯-ꡋ𑲣.1.ð¹­
-xn----ogox061d5i8d.1.xn--lo0d; ≯-ꡋ𑲣.1.ð¹­; [B1, V6]; xn----ogox061d5i8d.1.xn--lo0d; ; ; # ≯-ꡋ𑲣.1.ð¹­
+ðŸºð‹·\u06B9.𞤋ò¿¡; 4ð‹·\u06B9.𞤭ò¿¡; [B1, B2, B3, V6]; xn--4-cvc5384q.xn--le6hi7322b; ; ; # 4ð‹·Ú¹.𞤭
+≯-ꡋ𑲣.â’ˆð¹­; ; [B1, V6]; xn----ogox061d5i8d.xn--tsh0666f; ; ; # ≯-ꡋ𑲣.â’ˆð¹­
+>\u0338-ꡋ𑲣.â’ˆð¹­; ≯-ꡋ𑲣.â’ˆð¹­; [B1, V6]; xn----ogox061d5i8d.xn--tsh0666f; ; ; # ≯-ꡋ𑲣.â’ˆð¹­
+≯-ꡋ𑲣.1.ð¹­; ; [B1]; xn----ogox061d5i8d.1.xn--lo0d; ; ; # ≯-ꡋ𑲣.1.ð¹­
+>\u0338-ꡋ𑲣.1.ð¹­; ≯-ꡋ𑲣.1.ð¹­; [B1]; xn----ogox061d5i8d.1.xn--lo0d; ; ; # ≯-ꡋ𑲣.1.ð¹­
+xn----ogox061d5i8d.1.xn--lo0d; ≯-ꡋ𑲣.1.ð¹­; [B1]; xn----ogox061d5i8d.1.xn--lo0d; ; ; # ≯-ꡋ𑲣.1.ð¹­
xn----ogox061d5i8d.xn--tsh0666f; ≯-ꡋ𑲣.â’ˆð¹­; [B1, V6]; xn----ogox061d5i8d.xn--tsh0666f; ; ; # ≯-ꡋ𑲣.â’ˆð¹­
-\u0330.󰜱蚀; \u0330.󰜱蚀; [P1, V5, V6]; xn--xta.xn--e91aw9417e; ; ; # ̰.蚀
-\u0330.󰜱蚀; ; [P1, V5, V6]; xn--xta.xn--e91aw9417e; ; ; # ̰.蚀
+\u0330.󰜱蚀; \u0330.󰜱蚀; [V5, V6]; xn--xta.xn--e91aw9417e; ; ; # ̰.蚀
+\u0330.󰜱蚀; ; [V5, V6]; xn--xta.xn--e91aw9417e; ; ; # ̰.蚀
xn--xta.xn--e91aw9417e; \u0330.󰜱蚀; [V5, V6]; xn--xta.xn--e91aw9417e; ; ; # ̰.蚀
-\uFB39Ⴘ.𞡼𑇀ß\u20D7; \u05D9\u05BCႸ.𞡼𑇀ß\u20D7; [B2, B3, P1, V6]; xn--kdb1d867b.xn--zca284nhg9nrrxg; ; xn--kdb1d867b.xn--ss-yju5690ken9h; # יּႸ.𞡼𑇀ß⃗
-\u05D9\u05BCႸ.𞡼𑇀ß\u20D7; ; [B2, B3, P1, V6]; xn--kdb1d867b.xn--zca284nhg9nrrxg; ; xn--kdb1d867b.xn--ss-yju5690ken9h; # יּႸ.𞡼𑇀ß⃗
+\uFB39Ⴘ.𞡼𑇀ß\u20D7; \u05D9\u05BCႸ.𞡼𑇀ß\u20D7; [B2, B3, V6]; xn--kdb1d867b.xn--zca284nhg9nrrxg; ; xn--kdb1d867b.xn--ss-yju5690ken9h; # יּႸ.𞡼𑇀ß⃗
+\u05D9\u05BCႸ.𞡼𑇀ß\u20D7; ; [B2, B3, V6]; xn--kdb1d867b.xn--zca284nhg9nrrxg; ; xn--kdb1d867b.xn--ss-yju5690ken9h; # יּႸ.𞡼𑇀ß⃗
\u05D9\u05BCⴘ.𞡼𑇀ß\u20D7; ; [B2, B3]; xn--kdb1d278n.xn--zca284nhg9nrrxg; ; xn--kdb1d278n.xn--ss-yju5690ken9h; # יּⴘ.𞡼𑇀ß⃗
-\u05D9\u05BCႸ.𞡼𑇀SS\u20D7; \u05D9\u05BCႸ.𞡼𑇀ss\u20D7; [B2, B3, P1, V6]; xn--kdb1d867b.xn--ss-yju5690ken9h; ; ; # יּႸ.𞡼𑇀ss⃗
+\u05D9\u05BCႸ.𞡼𑇀SS\u20D7; \u05D9\u05BCႸ.𞡼𑇀ss\u20D7; [B2, B3, V6]; xn--kdb1d867b.xn--ss-yju5690ken9h; ; ; # יּႸ.𞡼𑇀ss⃗
\u05D9\u05BCⴘ.𞡼𑇀ss\u20D7; ; [B2, B3]; xn--kdb1d278n.xn--ss-yju5690ken9h; ; ; # יּⴘ.𞡼𑇀ss⃗
xn--kdb1d278n.xn--ss-yju5690ken9h; \u05D9\u05BCⴘ.𞡼𑇀ss\u20D7; [B2, B3]; xn--kdb1d278n.xn--ss-yju5690ken9h; ; ; # יּⴘ.𞡼𑇀ss⃗
xn--kdb1d867b.xn--ss-yju5690ken9h; \u05D9\u05BCႸ.𞡼𑇀ss\u20D7; [B2, B3, V6]; xn--kdb1d867b.xn--ss-yju5690ken9h; ; ; # יּႸ.𞡼𑇀ss⃗
xn--kdb1d278n.xn--zca284nhg9nrrxg; \u05D9\u05BCⴘ.𞡼𑇀ß\u20D7; [B2, B3]; xn--kdb1d278n.xn--zca284nhg9nrrxg; ; ; # יּⴘ.𞡼𑇀ß⃗
xn--kdb1d867b.xn--zca284nhg9nrrxg; \u05D9\u05BCႸ.𞡼𑇀ß\u20D7; [B2, B3, V6]; xn--kdb1d867b.xn--zca284nhg9nrrxg; ; ; # יּႸ.𞡼𑇀ß⃗
\uFB39ⴘ.𞡼𑇀ß\u20D7; \u05D9\u05BCⴘ.𞡼𑇀ß\u20D7; [B2, B3]; xn--kdb1d278n.xn--zca284nhg9nrrxg; ; xn--kdb1d278n.xn--ss-yju5690ken9h; # יּⴘ.𞡼𑇀ß⃗
-\uFB39Ⴘ.𞡼𑇀SS\u20D7; \u05D9\u05BCႸ.𞡼𑇀ss\u20D7; [B2, B3, P1, V6]; xn--kdb1d867b.xn--ss-yju5690ken9h; ; ; # יּႸ.𞡼𑇀ss⃗
+\uFB39Ⴘ.𞡼𑇀SS\u20D7; \u05D9\u05BCႸ.𞡼𑇀ss\u20D7; [B2, B3, V6]; xn--kdb1d867b.xn--ss-yju5690ken9h; ; ; # יּႸ.𞡼𑇀ss⃗
\uFB39ⴘ.𞡼𑇀ss\u20D7; \u05D9\u05BCⴘ.𞡼𑇀ss\u20D7; [B2, B3]; xn--kdb1d278n.xn--ss-yju5690ken9h; ; ; # יּⴘ.𞡼𑇀ss⃗
-\u05D9\u05BCႸ.𞡼𑇀ss\u20D7; ; [B2, B3, P1, V6]; xn--kdb1d867b.xn--ss-yju5690ken9h; ; ; # יּႸ.𞡼𑇀ss⃗
-\uFB39Ⴘ.𞡼𑇀ss\u20D7; \u05D9\u05BCႸ.𞡼𑇀ss\u20D7; [B2, B3, P1, V6]; xn--kdb1d867b.xn--ss-yju5690ken9h; ; ; # יּႸ.𞡼𑇀ss⃗
-\u1BA3ð¹°ò±“。凬; \u1BA3ð¹°ò±“.凬; [B1, P1, V5, V6]; xn--rxfz314ilg20c.xn--t9q; ; ; # ᮣð¹°.凬
-\u1BA3ð¹°ò±“。凬; \u1BA3ð¹°ò±“.凬; [B1, P1, V5, V6]; xn--rxfz314ilg20c.xn--t9q; ; ; # ᮣð¹°.凬
+\u05D9\u05BCႸ.𞡼𑇀ss\u20D7; ; [B2, B3, V6]; xn--kdb1d867b.xn--ss-yju5690ken9h; ; ; # יּႸ.𞡼𑇀ss⃗
+\uFB39Ⴘ.𞡼𑇀ss\u20D7; \u05D9\u05BCႸ.𞡼𑇀ss\u20D7; [B2, B3, V6]; xn--kdb1d867b.xn--ss-yju5690ken9h; ; ; # יּႸ.𞡼𑇀ss⃗
+\u1BA3ð¹°ò±“。凬; \u1BA3ð¹°ò±“.凬; [B1, V5, V6]; xn--rxfz314ilg20c.xn--t9q; ; ; # ᮣð¹°.凬
+\u1BA3ð¹°ò±“。凬; \u1BA3ð¹°ò±“.凬; [B1, V5, V6]; xn--rxfz314ilg20c.xn--t9q; ; ; # ᮣð¹°.凬
xn--rxfz314ilg20c.xn--t9q; \u1BA3ð¹°ò±“.凬; [B1, V5, V6]; xn--rxfz314ilg20c.xn--t9q; ; ; # ᮣð¹°.凬
-🢟🄈\u200Dꡎ。\u0F84; 🢟🄈\u200Dꡎ.\u0F84; [C2, P1, V5, V6]; xn--1ug4874cfd0kbmg.xn--3ed; ; xn--nc9aq743ds0e.xn--3ed; [P1, V5, V6] # 🢟🄈ꡎ.྄
-🢟7,\u200Dꡎ。\u0F84; 🢟7,\u200Dꡎ.\u0F84; [C2, P1, V5, V6]; xn--7,-n1t0654eqo3o.xn--3ed; ; xn--7,-gh9hg322i.xn--3ed; [P1, V5, V6] # 🢟7,ꡎ.྄
-xn--7,-gh9hg322i.xn--3ed; 🢟7,ꡎ.\u0F84; [P1, V5, V6]; xn--7,-gh9hg322i.xn--3ed; ; ; # 🢟7,ꡎ.྄
-xn--7,-n1t0654eqo3o.xn--3ed; 🢟7,\u200Dꡎ.\u0F84; [C2, P1, V5, V6]; xn--7,-n1t0654eqo3o.xn--3ed; ; ; # 🢟7,ꡎ.྄
+🢟🄈\u200Dꡎ。\u0F84; 🢟🄈\u200Dꡎ.\u0F84; [C2, V5, V6]; xn--1ug4874cfd0kbmg.xn--3ed; ; xn--nc9aq743ds0e.xn--3ed; [V5, V6] # 🢟🄈ꡎ.྄
+🢟7,\u200Dꡎ。\u0F84; 🢟7,\u200Dꡎ.\u0F84; [C2, V5, V6]; xn--7,-n1t0654eqo3o.xn--3ed; ; xn--7,-gh9hg322i.xn--3ed; [V5, V6] # 🢟7,ꡎ.྄
+xn--7,-gh9hg322i.xn--3ed; 🢟7,ꡎ.\u0F84; [V5, V6]; xn--7,-gh9hg322i.xn--3ed; ; ; # 🢟7,ꡎ.྄
+xn--7,-n1t0654eqo3o.xn--3ed; 🢟7,\u200Dꡎ.\u0F84; [C2, V5, V6]; xn--7,-n1t0654eqo3o.xn--3ed; ; ; # 🢟7,ꡎ.྄
xn--nc9aq743ds0e.xn--3ed; 🢟🄈ꡎ.\u0F84; [V5, V6]; xn--nc9aq743ds0e.xn--3ed; ; ; # 🢟🄈ꡎ.྄
xn--1ug4874cfd0kbmg.xn--3ed; 🢟🄈\u200Dꡎ.\u0F84; [C2, V5, V6]; xn--1ug4874cfd0kbmg.xn--3ed; ; ; # 🢟🄈ꡎ.྄
ꡔ。\u1039ᢇ; ꡔ.\u1039ᢇ; [V5]; xn--tc9a.xn--9jd663b; ; ; # ꡔ.္ᢇ
xn--tc9a.xn--9jd663b; ꡔ.\u1039ᢇ; [V5]; xn--tc9a.xn--9jd663b; ; ; # ꡔ.္ᢇ
-\u20EB≮.ð¨–; ; [P1, V5, V6]; xn--e1g71d.xn--772h; ; ; # ⃫≮.ð¨–
-\u20EB<\u0338.ð¨–; \u20EB≮.ð¨–; [P1, V5, V6]; xn--e1g71d.xn--772h; ; ; # ⃫≮.ð¨–
-xn--e1g71d.xn--772h; \u20EB≮.ð¨–; [V5, V6]; xn--e1g71d.xn--772h; ; ; # ⃫≮.ð¨–
-Ⴢ≯褦.ᠪ\u07EAႾ\u0767; Ⴢ≯褦.ᠪ\u07EAႾ\u0767; [B5, B6, P1, V6]; xn--6nd461g478e.xn--rpb5x49td2h; ; ; # Ⴢ≯褦.ᠪߪႾݧ
-Ⴢ>\u0338褦.ᠪ\u07EAႾ\u0767; Ⴢ≯褦.ᠪ\u07EAႾ\u0767; [B5, B6, P1, V6]; xn--6nd461g478e.xn--rpb5x49td2h; ; ; # Ⴢ≯褦.ᠪߪႾݧ
-Ⴢ≯褦.ᠪ\u07EAႾ\u0767; ; [B5, B6, P1, V6]; xn--6nd461g478e.xn--rpb5x49td2h; ; ; # Ⴢ≯褦.ᠪߪႾݧ
-Ⴢ>\u0338褦.ᠪ\u07EAႾ\u0767; Ⴢ≯褦.ᠪ\u07EAႾ\u0767; [B5, B6, P1, V6]; xn--6nd461g478e.xn--rpb5x49td2h; ; ; # Ⴢ≯褦.ᠪߪႾݧ
-ⴢ>\u0338褦.ᠪ\u07EAⴞ\u0767; ⴢ≯褦.ᠪ\u07EAⴞ\u0767; [B5, B6, P1, V6]; xn--hdh433bev8e.xn--rpb5x392bcyt; ; ; # ⴢ≯褦.ᠪߪⴞݧ
-ⴢ≯褦.ᠪ\u07EAⴞ\u0767; ; [B5, B6, P1, V6]; xn--hdh433bev8e.xn--rpb5x392bcyt; ; ; # ⴢ≯褦.ᠪߪⴞݧ
-Ⴢ≯褦.ᠪ\u07EAⴞ\u0767; ; [B5, B6, P1, V6]; xn--6nd461g478e.xn--rpb5x392bcyt; ; ; # Ⴢ≯褦.ᠪߪⴞݧ
-Ⴢ>\u0338褦.ᠪ\u07EAⴞ\u0767; Ⴢ≯褦.ᠪ\u07EAⴞ\u0767; [B5, B6, P1, V6]; xn--6nd461g478e.xn--rpb5x392bcyt; ; ; # Ⴢ≯褦.ᠪߪⴞݧ
+\u20EB≮.ð¨–; ; [V5]; xn--e1g71d.xn--772h; ; ; # ⃫≮.ð¨–
+\u20EB<\u0338.ð¨–; \u20EB≮.ð¨–; [V5]; xn--e1g71d.xn--772h; ; ; # ⃫≮.ð¨–
+xn--e1g71d.xn--772h; \u20EB≮.ð¨–; [V5]; xn--e1g71d.xn--772h; ; ; # ⃫≮.ð¨–
+Ⴢ≯褦.ᠪ\u07EAႾ\u0767; Ⴢ≯褦.ᠪ\u07EAႾ\u0767; [B5, B6, V6]; xn--6nd461g478e.xn--rpb5x49td2h; ; ; # Ⴢ≯褦.ᠪߪႾݧ
+Ⴢ>\u0338褦.ᠪ\u07EAႾ\u0767; Ⴢ≯褦.ᠪ\u07EAႾ\u0767; [B5, B6, V6]; xn--6nd461g478e.xn--rpb5x49td2h; ; ; # Ⴢ≯褦.ᠪߪႾݧ
+Ⴢ≯褦.ᠪ\u07EAႾ\u0767; ; [B5, B6, V6]; xn--6nd461g478e.xn--rpb5x49td2h; ; ; # Ⴢ≯褦.ᠪߪႾݧ
+Ⴢ>\u0338褦.ᠪ\u07EAႾ\u0767; Ⴢ≯褦.ᠪ\u07EAႾ\u0767; [B5, B6, V6]; xn--6nd461g478e.xn--rpb5x49td2h; ; ; # Ⴢ≯褦.ᠪߪႾݧ
+ⴢ>\u0338褦.ᠪ\u07EAⴞ\u0767; ⴢ≯褦.ᠪ\u07EAⴞ\u0767; [B5, B6]; xn--hdh433bev8e.xn--rpb5x392bcyt; ; ; # ⴢ≯褦.ᠪߪⴞݧ
+ⴢ≯褦.ᠪ\u07EAⴞ\u0767; ; [B5, B6]; xn--hdh433bev8e.xn--rpb5x392bcyt; ; ; # ⴢ≯褦.ᠪߪⴞݧ
+Ⴢ≯褦.ᠪ\u07EAⴞ\u0767; ; [B5, B6, V6]; xn--6nd461g478e.xn--rpb5x392bcyt; ; ; # Ⴢ≯褦.ᠪߪⴞݧ
+Ⴢ>\u0338褦.ᠪ\u07EAⴞ\u0767; Ⴢ≯褦.ᠪ\u07EAⴞ\u0767; [B5, B6, V6]; xn--6nd461g478e.xn--rpb5x392bcyt; ; ; # Ⴢ≯褦.ᠪߪⴞݧ
xn--6nd461g478e.xn--rpb5x392bcyt; Ⴢ≯褦.ᠪ\u07EAⴞ\u0767; [B5, B6, V6]; xn--6nd461g478e.xn--rpb5x392bcyt; ; ; # Ⴢ≯褦.ᠪߪⴞݧ
-xn--hdh433bev8e.xn--rpb5x392bcyt; ⴢ≯褦.ᠪ\u07EAⴞ\u0767; [B5, B6, V6]; xn--hdh433bev8e.xn--rpb5x392bcyt; ; ; # ⴢ≯褦.ᠪߪⴞݧ
+xn--hdh433bev8e.xn--rpb5x392bcyt; ⴢ≯褦.ᠪ\u07EAⴞ\u0767; [B5, B6]; xn--hdh433bev8e.xn--rpb5x392bcyt; ; ; # ⴢ≯褦.ᠪߪⴞݧ
xn--6nd461g478e.xn--rpb5x49td2h; Ⴢ≯褦.ᠪ\u07EAႾ\u0767; [B5, B6, V6]; xn--6nd461g478e.xn--rpb5x49td2h; ; ; # Ⴢ≯褦.ᠪߪႾݧ
-ⴢ>\u0338褦.ᠪ\u07EAⴞ\u0767; ⴢ≯褦.ᠪ\u07EAⴞ\u0767; [B5, B6, P1, V6]; xn--hdh433bev8e.xn--rpb5x392bcyt; ; ; # ⴢ≯褦.ᠪߪⴞݧ
-ⴢ≯褦.ᠪ\u07EAⴞ\u0767; ⴢ≯褦.ᠪ\u07EAⴞ\u0767; [B5, B6, P1, V6]; xn--hdh433bev8e.xn--rpb5x392bcyt; ; ; # ⴢ≯褦.ᠪߪⴞݧ
-Ⴢ≯褦.ᠪ\u07EAⴞ\u0767; Ⴢ≯褦.ᠪ\u07EAⴞ\u0767; [B5, B6, P1, V6]; xn--6nd461g478e.xn--rpb5x392bcyt; ; ; # Ⴢ≯褦.ᠪߪⴞݧ
-Ⴢ>\u0338褦.ᠪ\u07EAⴞ\u0767; Ⴢ≯褦.ᠪ\u07EAⴞ\u0767; [B5, B6, P1, V6]; xn--6nd461g478e.xn--rpb5x392bcyt; ; ; # Ⴢ≯褦.ᠪߪⴞݧ
-򊉆󠆒\u200C\uA953。𞤙\u067Bꡘ; 򊉆\u200C\uA953.𞤻\u067Bꡘ; [B2, B3, C1, P1, V6]; xn--0ug8815chtz0e.xn--0ib8893fegvj; ; xn--3j9al6189a.xn--0ib8893fegvj; [B2, B3, P1, V6] # ꥓.𞤻ٻꡘ
-򊉆󠆒\u200C\uA953。𞤻\u067Bꡘ; 򊉆\u200C\uA953.𞤻\u067Bꡘ; [B2, B3, C1, P1, V6]; xn--0ug8815chtz0e.xn--0ib8893fegvj; ; xn--3j9al6189a.xn--0ib8893fegvj; [B2, B3, P1, V6] # ꥓.𞤻ٻꡘ
+ⴢ>\u0338褦.ᠪ\u07EAⴞ\u0767; ⴢ≯褦.ᠪ\u07EAⴞ\u0767; [B5, B6]; xn--hdh433bev8e.xn--rpb5x392bcyt; ; ; # ⴢ≯褦.ᠪߪⴞݧ
+ⴢ≯褦.ᠪ\u07EAⴞ\u0767; ⴢ≯褦.ᠪ\u07EAⴞ\u0767; [B5, B6]; xn--hdh433bev8e.xn--rpb5x392bcyt; ; ; # ⴢ≯褦.ᠪߪⴞݧ
+Ⴢ≯褦.ᠪ\u07EAⴞ\u0767; Ⴢ≯褦.ᠪ\u07EAⴞ\u0767; [B5, B6, V6]; xn--6nd461g478e.xn--rpb5x392bcyt; ; ; # Ⴢ≯褦.ᠪߪⴞݧ
+Ⴢ>\u0338褦.ᠪ\u07EAⴞ\u0767; Ⴢ≯褦.ᠪ\u07EAⴞ\u0767; [B5, B6, V6]; xn--6nd461g478e.xn--rpb5x392bcyt; ; ; # Ⴢ≯褦.ᠪߪⴞݧ
+򊉆󠆒\u200C\uA953。𞤙\u067Bꡘ; 򊉆\u200C\uA953.𞤻\u067Bꡘ; [B2, B3, C1, V6]; xn--0ug8815chtz0e.xn--0ib8893fegvj; ; xn--3j9al6189a.xn--0ib8893fegvj; [B2, B3, V6] # ꥓.𞤻ٻꡘ
+򊉆󠆒\u200C\uA953。𞤻\u067Bꡘ; 򊉆\u200C\uA953.𞤻\u067Bꡘ; [B2, B3, C1, V6]; xn--0ug8815chtz0e.xn--0ib8893fegvj; ; xn--3j9al6189a.xn--0ib8893fegvj; [B2, B3, V6] # ꥓.𞤻ٻꡘ
xn--3j9al6189a.xn--0ib8893fegvj; 򊉆\uA953.𞤻\u067Bꡘ; [B2, B3, V6]; xn--3j9al6189a.xn--0ib8893fegvj; ; ; # ꥓.𞤻ٻꡘ
xn--0ug8815chtz0e.xn--0ib8893fegvj; 򊉆\u200C\uA953.𞤻\u067Bꡘ; [B2, B3, C1, V6]; xn--0ug8815chtz0e.xn--0ib8893fegvj; ; ; # ꥓.𞤻ٻꡘ
-\u200C.≯; ; [C1, P1, V6]; xn--0ug.xn--hdh; ; .xn--hdh; [P1, V6, A4_2] # .≯
-\u200C.>\u0338; \u200C.≯; [C1, P1, V6]; xn--0ug.xn--hdh; ; .xn--hdh; [P1, V6, A4_2] # .≯
-.xn--hdh; .≯; [V6, X4_2]; .xn--hdh; [V6, A4_2]; ; # .≯
-xn--0ug.xn--hdh; \u200C.≯; [C1, V6]; xn--0ug.xn--hdh; ; ; # .≯
-𰅧񣩠-.\uABED-悜; 𰅧񣩠-.\uABED-悜; [P1, V3, V5, V6]; xn----7m53aj640l.xn----8f4br83t; ; ; # 𰅧-.꯭-悜
-𰅧񣩠-.\uABED-悜; ; [P1, V3, V5, V6]; xn----7m53aj640l.xn----8f4br83t; ; ; # 𰅧-.꯭-悜
+\u200C.≯; ; [C1]; xn--0ug.xn--hdh; ; .xn--hdh; [A4_2] # .≯
+\u200C.>\u0338; \u200C.≯; [C1]; xn--0ug.xn--hdh; ; .xn--hdh; [A4_2] # .≯
+.xn--hdh; .≯; [X4_2]; .xn--hdh; [A4_2]; ; # .≯
+xn--0ug.xn--hdh; \u200C.≯; [C1]; xn--0ug.xn--hdh; ; ; # .≯
+𰅧񣩠-.\uABED-悜; 𰅧񣩠-.\uABED-悜; [V3, V5, V6]; xn----7m53aj640l.xn----8f4br83t; ; ; # 𰅧-.꯭-悜
+𰅧񣩠-.\uABED-悜; ; [V3, V5, V6]; xn----7m53aj640l.xn----8f4br83t; ; ; # 𰅧-.꯭-悜
xn----7m53aj640l.xn----8f4br83t; 𰅧񣩠-.\uABED-悜; [V3, V5, V6]; xn----7m53aj640l.xn----8f4br83t; ; ; # 𰅧-.꯭-悜
-ᡉ𶓧⬞ᢜ.-\u200D𞣑\u202E; ; [C2, P1, V3, V6]; xn--87e0ol04cdl39e.xn----ugn5e3763s; ; xn--87e0ol04cdl39e.xn----qinu247r; [P1, V3, V6] # ᡉ⬞ᢜ.-𞣑
+ᡉ𶓧⬞ᢜ.-\u200D𞣑\u202E; ; [C2, V3, V6]; xn--87e0ol04cdl39e.xn----ugn5e3763s; ; xn--87e0ol04cdl39e.xn----qinu247r; [V3, V6] # ᡉ⬞ᢜ.-𞣑
xn--87e0ol04cdl39e.xn----qinu247r; ᡉ𶓧⬞ᢜ.-𞣑\u202E; [V3, V6]; xn--87e0ol04cdl39e.xn----qinu247r; ; ; # ᡉ⬞ᢜ.-𞣑
xn--87e0ol04cdl39e.xn----ugn5e3763s; ᡉ𶓧⬞ᢜ.-\u200D𞣑\u202E; [C2, V3, V6]; xn--87e0ol04cdl39e.xn----ugn5e3763s; ; ; # ᡉ⬞ᢜ.-𞣑
-â’\u200C衃Ⴝ.\u0682á‚´; ; [B1, B2, B3, C1, P1, V6]; xn--1nd159ecmd785k.xn--7ib433c; ; xn--1nd362hy16e.xn--7ib433c; [B1, B2, B3, P1, V6] # â’衃Ⴝ.Ú‚á‚´
-9.\u200C衃Ⴝ.\u0682Ⴔ; ; [B1, B2, B3, C1, P1, V6]; 9.xn--1nd159e1y2f.xn--7ib433c; ; 9.xn--1nd9032d.xn--7ib433c; [B1, B2, B3, P1, V6] # 9.衃Ⴝ.ڂႴ
+â’\u200C衃Ⴝ.\u0682á‚´; ; [B1, B2, B3, C1, V6]; xn--1nd159ecmd785k.xn--7ib433c; ; xn--1nd362hy16e.xn--7ib433c; [B1, B2, B3, V6] # â’衃Ⴝ.Ú‚á‚´
+9.\u200C衃Ⴝ.\u0682Ⴔ; ; [B1, B2, B3, C1, V6]; 9.xn--1nd159e1y2f.xn--7ib433c; ; 9.xn--1nd9032d.xn--7ib433c; [B1, B2, B3, V6] # 9.衃Ⴝ.ڂႴ
9.\u200C衃â´.\u0682â´”; ; [B1, B2, B3, C1]; 9.xn--0ug862cbm5e.xn--7ib268q; ; 9.xn--llj1920a.xn--7ib268q; [B1, B2, B3] # 9.衃â´.Ú‚â´”
-9.\u200C衃Ⴝ.\u0682ⴔ; ; [B1, B2, B3, C1, P1, V6]; 9.xn--1nd159e1y2f.xn--7ib268q; ; 9.xn--1nd9032d.xn--7ib268q; [B1, B2, B3, P1, V6] # 9.衃Ⴝ.ڂⴔ
+9.\u200C衃Ⴝ.\u0682ⴔ; ; [B1, B2, B3, C1, V6]; 9.xn--1nd159e1y2f.xn--7ib268q; ; 9.xn--1nd9032d.xn--7ib268q; [B1, B2, B3, V6] # 9.衃Ⴝ.ڂⴔ
9.xn--1nd9032d.xn--7ib268q; 9.衃Ⴝ.\u0682ⴔ; [B1, B2, B3, V6]; 9.xn--1nd9032d.xn--7ib268q; ; ; # 9.衃Ⴝ.ڂⴔ
9.xn--1nd159e1y2f.xn--7ib268q; 9.\u200C衃Ⴝ.\u0682ⴔ; [B1, B2, B3, C1, V6]; 9.xn--1nd159e1y2f.xn--7ib268q; ; ; # 9.衃Ⴝ.ڂⴔ
9.xn--llj1920a.xn--7ib268q; 9.衃â´.\u0682â´”; [B1, B2, B3]; 9.xn--llj1920a.xn--7ib268q; ; ; # 9.衃â´.Ú‚â´”
9.xn--0ug862cbm5e.xn--7ib268q; 9.\u200C衃â´.\u0682â´”; [B1, B2, B3, C1]; 9.xn--0ug862cbm5e.xn--7ib268q; ; ; # 9.衃â´.Ú‚â´”
9.xn--1nd9032d.xn--7ib433c; 9.衃Ⴝ.\u0682Ⴔ; [B1, B2, B3, V6]; 9.xn--1nd9032d.xn--7ib433c; ; ; # 9.衃Ⴝ.ڂႴ
9.xn--1nd159e1y2f.xn--7ib433c; 9.\u200C衃Ⴝ.\u0682Ⴔ; [B1, B2, B3, C1, V6]; 9.xn--1nd159e1y2f.xn--7ib433c; ; ; # 9.衃Ⴝ.ڂႴ
-â’\u200C衃â´.\u0682â´”; ; [B1, B2, B3, C1, P1, V6]; xn--0ugx0px1izu2h.xn--7ib268q; ; xn--1shy52abz3f.xn--7ib268q; [B1, B2, B3, P1, V6] # â’衃â´.Ú‚â´”
-â’\u200C衃Ⴝ.\u0682â´”; ; [B1, B2, B3, C1, P1, V6]; xn--1nd159ecmd785k.xn--7ib268q; ; xn--1nd362hy16e.xn--7ib268q; [B1, B2, B3, P1, V6] # â’衃Ⴝ.Ú‚â´”
+â’\u200C衃â´.\u0682â´”; ; [B1, B2, B3, C1, V6]; xn--0ugx0px1izu2h.xn--7ib268q; ; xn--1shy52abz3f.xn--7ib268q; [B1, B2, B3, V6] # â’衃â´.Ú‚â´”
+â’\u200C衃Ⴝ.\u0682â´”; ; [B1, B2, B3, C1, V6]; xn--1nd159ecmd785k.xn--7ib268q; ; xn--1nd362hy16e.xn--7ib268q; [B1, B2, B3, V6] # â’衃Ⴝ.Ú‚â´”
xn--1nd362hy16e.xn--7ib268q; â’衃Ⴝ.\u0682â´”; [B1, B2, B3, V6]; xn--1nd362hy16e.xn--7ib268q; ; ; # â’衃Ⴝ.Ú‚â´”
xn--1nd159ecmd785k.xn--7ib268q; â’\u200C衃Ⴝ.\u0682â´”; [B1, B2, B3, C1, V6]; xn--1nd159ecmd785k.xn--7ib268q; ; ; # â’衃Ⴝ.Ú‚â´”
xn--1shy52abz3f.xn--7ib268q; â’衃â´.\u0682â´”; [B1, B2, B3, V6]; xn--1shy52abz3f.xn--7ib268q; ; ; # â’衃â´.Ú‚â´”
@@ -1898,224 +1904,224 @@ xn--of6h.xn--inb; 𞥓.\u0718; ; xn--of6h.xn--inb; ; ; # 𞥓.ܘ
󠄽-.-\u0DCA; -.-\u0DCA; [V3]; -.xn----ptf; ; ; # -.-්
ó „½-.-\u0DCA; -.-\u0DCA; [V3]; -.xn----ptf; ; ; # -.-à·Š
-.xn----ptf; -.-\u0DCA; [V3]; -.xn----ptf; ; ; # -.-à·Š
-ó ‡\u075B-.\u1927; \u075B-.\u1927; [B1, B3, B6, V3, V5]; xn----k4c.xn--lff; ; ; # Ý›-.ᤧ
-xn----k4c.xn--lff; \u075B-.\u1927; [B1, B3, B6, V3, V5]; xn----k4c.xn--lff; ; ; # ݛ-.ᤧ
-𞤴󠆹⦉ð¹º.\uA806⒌󘤸; 𞤴⦉ð¹º.\uA806⒌󘤸; [B1, P1, V5, V6]; xn--fuix729epewf.xn--xsh5029b6e77i; ; ; # 𞤴⦉ð¹º.꠆⒌
-𞤴󠆹⦉ð¹º.\uA8065.󘤸; 𞤴⦉ð¹º.\uA8065.󘤸; [B1, P1, V5, V6]; xn--fuix729epewf.xn--5-w93e.xn--7b83e; ; ; # 𞤴⦉ð¹º.ê †5.
-𞤒󠆹⦉ð¹º.\uA8065.󘤸; 𞤴⦉ð¹º.\uA8065.󘤸; [B1, P1, V5, V6]; xn--fuix729epewf.xn--5-w93e.xn--7b83e; ; ; # 𞤴⦉ð¹º.ê †5.
+ó ‡\u075B-.\u1927; \u075B-.\u1927; [B1, B3, V3, V5]; xn----k4c.xn--lff; ; ; # Ý›-.ᤧ
+xn----k4c.xn--lff; \u075B-.\u1927; [B1, B3, V3, V5]; xn----k4c.xn--lff; ; ; # ݛ-.ᤧ
+𞤴󠆹⦉ð¹º.\uA806⒌󘤸; 𞤴⦉ð¹º.\uA806⒌󘤸; [B1, V5, V6]; xn--fuix729epewf.xn--xsh5029b6e77i; ; ; # 𞤴⦉ð¹º.꠆⒌
+𞤴󠆹⦉ð¹º.\uA8065.󘤸; 𞤴⦉ð¹º.\uA8065.󘤸; [B1, V5, V6]; xn--fuix729epewf.xn--5-w93e.xn--7b83e; ; ; # 𞤴⦉ð¹º.ê †5.
+𞤒󠆹⦉ð¹º.\uA8065.󘤸; 𞤴⦉ð¹º.\uA8065.󘤸; [B1, V5, V6]; xn--fuix729epewf.xn--5-w93e.xn--7b83e; ; ; # 𞤴⦉ð¹º.ê †5.
xn--fuix729epewf.xn--5-w93e.xn--7b83e; 𞤴⦉ð¹º.\uA8065.󘤸; [B1, V5, V6]; xn--fuix729epewf.xn--5-w93e.xn--7b83e; ; ; # 𞤴⦉ð¹º.ê †5.
-𞤒󠆹⦉ð¹º.\uA806⒌󘤸; 𞤴⦉ð¹º.\uA806⒌󘤸; [B1, P1, V5, V6]; xn--fuix729epewf.xn--xsh5029b6e77i; ; ; # 𞤴⦉ð¹º.꠆⒌
+𞤒󠆹⦉ð¹º.\uA806⒌󘤸; 𞤴⦉ð¹º.\uA806⒌󘤸; [B1, V5, V6]; xn--fuix729epewf.xn--xsh5029b6e77i; ; ; # 𞤴⦉ð¹º.꠆⒌
xn--fuix729epewf.xn--xsh5029b6e77i; 𞤴⦉ð¹º.\uA806⒌󘤸; [B1, V5, V6]; xn--fuix729epewf.xn--xsh5029b6e77i; ; ; # 𞤴⦉ð¹º.꠆⒌
󠄸₀。𑖿\u200Cð¦‚\u200D; 0.ð‘–¿\u200Cð¦‚\u200D; [B1, C2, V5]; 0.xn--0ugc8040p9hk; ; 0.xn--mn9cz2s; [B1, V5] # 0.ð‘–¿ð¦‚
󠄸0。𑖿\u200Cð¦‚\u200D; 0.ð‘–¿\u200Cð¦‚\u200D; [B1, C2, V5]; 0.xn--0ugc8040p9hk; ; 0.xn--mn9cz2s; [B1, V5] # 0.ð‘–¿ð¦‚
0.xn--mn9cz2s; 0.ð‘–¿ð¦‚; [B1, V5]; 0.xn--mn9cz2s; ; ; # 0.ð‘–¿ð¦‚
0.xn--0ugc8040p9hk; 0.ð‘–¿\u200Cð¦‚\u200D; [B1, C2, V5]; 0.xn--0ugc8040p9hk; ; ; # 0.ð‘–¿ð¦‚
-Ⴚð‹¸ó „„。ðŸíŸ¶\u103A; Ⴚð‹¸.5ퟶ\u103A; [P1, V6]; xn--ynd2415j.xn--5-dug9054m; ; ; # Ⴚð‹¸.5ퟶ်
-Ⴚð‹¸ó „„。5ퟶ\u103A; Ⴚð‹¸.5ퟶ\u103A; [P1, V6]; xn--ynd2415j.xn--5-dug9054m; ; ; # Ⴚð‹¸.5ퟶ်
+Ⴚð‹¸ó „„。ðŸíŸ¶\u103A; Ⴚð‹¸.5ퟶ\u103A; [V6]; xn--ynd2415j.xn--5-dug9054m; ; ; # Ⴚð‹¸.5ퟶ်
+Ⴚð‹¸ó „„。5ퟶ\u103A; Ⴚð‹¸.5ퟶ\u103A; [V6]; xn--ynd2415j.xn--5-dug9054m; ; ; # Ⴚð‹¸.5ퟶ်
â´šð‹¸ó „„。5ퟶ\u103A; â´šð‹¸.5ퟶ\u103A; ; xn--ilj2659d.xn--5-dug9054m; ; ; # â´šð‹¸.5ퟶ်
xn--ilj2659d.xn--5-dug9054m; â´šð‹¸.5ퟶ\u103A; ; xn--ilj2659d.xn--5-dug9054m; ; ; # â´šð‹¸.5ퟶ်
â´šð‹¸.5ퟶ\u103A; ; ; xn--ilj2659d.xn--5-dug9054m; ; ; # â´šð‹¸.5ퟶ်
-Ⴚð‹¸.5ퟶ\u103A; ; [P1, V6]; xn--ynd2415j.xn--5-dug9054m; ; ; # Ⴚð‹¸.5ퟶ်
+Ⴚð‹¸.5ퟶ\u103A; ; [V6]; xn--ynd2415j.xn--5-dug9054m; ; ; # Ⴚð‹¸.5ퟶ်
xn--ynd2415j.xn--5-dug9054m; Ⴚð‹¸.5ퟶ\u103A; [V6]; xn--ynd2415j.xn--5-dug9054m; ; ; # Ⴚð‹¸.5ퟶ်
â´šð‹¸ó „„。ðŸíŸ¶\u103A; â´šð‹¸.5ퟶ\u103A; ; xn--ilj2659d.xn--5-dug9054m; ; ; # â´šð‹¸.5ퟶ်
-\u200D-ᠹ﹪.\u1DE1\u1922; ; [C2, P1, V5, V6]; xn----c6j614b1z4v.xn--gff52t; ; xn----c6jx047j.xn--gff52t; [P1, V3, V5, V6] # -ᠹ﹪.ᷡᤢ
-\u200D-ᠹ%.\u1DE1\u1922; ; [C2, P1, V5, V6]; xn---%-u4oy48b.xn--gff52t; ; xn---%-u4o.xn--gff52t; [P1, V3, V5, V6] # -ᠹ%.ᷡᤢ
-xn---%-u4o.xn--gff52t; -ᠹ%.\u1DE1\u1922; [P1, V3, V5, V6]; xn---%-u4o.xn--gff52t; ; ; # -ᠹ%.ᷡᤢ
-xn---%-u4oy48b.xn--gff52t; \u200D-ᠹ%.\u1DE1\u1922; [C2, P1, V5, V6]; xn---%-u4oy48b.xn--gff52t; ; ; # -ᠹ%.ᷡᤢ
+\u200D-ᠹ﹪.\u1DE1\u1922; ; [C2, V5, V6]; xn----c6j614b1z4v.xn--gff52t; ; xn----c6jx047j.xn--gff52t; [V3, V5, V6] # -ᠹ﹪.ᷡᤢ
+\u200D-ᠹ%.\u1DE1\u1922; ; [C2, V5, V6]; xn---%-u4oy48b.xn--gff52t; ; xn---%-u4o.xn--gff52t; [V3, V5, V6] # -ᠹ%.ᷡᤢ
+xn---%-u4o.xn--gff52t; -ᠹ%.\u1DE1\u1922; [V3, V5, V6]; xn---%-u4o.xn--gff52t; ; ; # -ᠹ%.ᷡᤢ
+xn---%-u4oy48b.xn--gff52t; \u200D-ᠹ%.\u1DE1\u1922; [C2, V5, V6]; xn---%-u4oy48b.xn--gff52t; ; ; # -ᠹ%.ᷡᤢ
xn----c6jx047j.xn--gff52t; -ᠹ﹪.\u1DE1\u1922; [V3, V5, V6]; xn----c6jx047j.xn--gff52t; ; ; # -ᠹ﹪.ᷡᤢ
xn----c6j614b1z4v.xn--gff52t; \u200D-ᠹ﹪.\u1DE1\u1922; [C2, V5, V6]; xn----c6j614b1z4v.xn--gff52t; ; ; # -ᠹ﹪.ᷡᤢ
-≠.ᠿ; ; [P1, V6]; xn--1ch.xn--y7e; ; ; # ≠.ᠿ
-=\u0338.ᠿ; ≠.ᠿ; [P1, V6]; xn--1ch.xn--y7e; ; ; # ≠.ᠿ
-xn--1ch.xn--y7e; ≠.ᠿ; [V6]; xn--1ch.xn--y7e; ; ; # ≠.ᠿ
+≠.ᠿ; ; ; xn--1ch.xn--y7e; ; ; # ≠.ᠿ
+=\u0338.ᠿ; ≠.ᠿ; ; xn--1ch.xn--y7e; ; ; # ≠.ᠿ
+xn--1ch.xn--y7e; ≠.ᠿ; ; xn--1ch.xn--y7e; ; ; # ≠.ᠿ
\u0723\u05A3。㌪; \u0723\u05A3.ãƒã‚¤ãƒ„; ; xn--ucb18e.xn--eck4c5a; ; ; # Ü£Ö£.ãƒã‚¤ãƒ„
\u0723\u05A3。ãƒã‚¤ãƒ„; \u0723\u05A3.ãƒã‚¤ãƒ„; ; xn--ucb18e.xn--eck4c5a; ; ; # Ü£Ö£.ãƒã‚¤ãƒ„
xn--ucb18e.xn--eck4c5a; \u0723\u05A3.ãƒã‚¤ãƒ„; ; xn--ucb18e.xn--eck4c5a; ; ; # Ü£Ö£.ãƒã‚¤ãƒ„
\u0723\u05A3.ãƒã‚¤ãƒ„; ; ; xn--ucb18e.xn--eck4c5a; ; ; # Ü£Ö£.ãƒã‚¤ãƒ„
-𞷥󠆀≮.\u2D7F-; 𞷥≮.\u2D7F-; [B1, B3, P1, V3, V5, V6]; xn--gdhx802p.xn----i2s; ; ; # ≮.⵿-
-𞷥󠆀<\u0338.\u2D7F-; 𞷥≮.\u2D7F-; [B1, B3, P1, V3, V5, V6]; xn--gdhx802p.xn----i2s; ; ; # ≮.⵿-
+𞷥󠆀≮.\u2D7F-; 𞷥≮.\u2D7F-; [B1, B3, V3, V5, V6]; xn--gdhx802p.xn----i2s; ; ; # ≮.⵿-
+𞷥󠆀<\u0338.\u2D7F-; 𞷥≮.\u2D7F-; [B1, B3, V3, V5, V6]; xn--gdhx802p.xn----i2s; ; ; # ≮.⵿-
xn--gdhx802p.xn----i2s; 𞷥≮.\u2D7F-; [B1, B3, V3, V5, V6]; xn--gdhx802p.xn----i2s; ; ; # ≮.⵿-
-₆榎ò¦–Ž\u0D4D。𞤅\u06ED\uFC5A󠮨; 6榎ò¦–Ž\u0D4D.𞤧\u06ED\u064A\u064A󠮨; [B1, B3, P1, V6]; xn--6-kmf4691ejv41j.xn--mhba10ch545mn8v8h; ; ; # 6榎àµ.𞤧ۭيي
-6榎ò¦–Ž\u0D4D。𞤅\u06ED\u064A\u064A󠮨; 6榎ò¦–Ž\u0D4D.𞤧\u06ED\u064A\u064A󠮨; [B1, B3, P1, V6]; xn--6-kmf4691ejv41j.xn--mhba10ch545mn8v8h; ; ; # 6榎àµ.𞤧ۭيي
-6榎ò¦–Ž\u0D4D。𞤧\u06ED\u064A\u064A󠮨; 6榎ò¦–Ž\u0D4D.𞤧\u06ED\u064A\u064A󠮨; [B1, B3, P1, V6]; xn--6-kmf4691ejv41j.xn--mhba10ch545mn8v8h; ; ; # 6榎àµ.𞤧ۭيي
+₆榎ò¦–Ž\u0D4D。𞤅\u06ED\uFC5A󠮨; 6榎ò¦–Ž\u0D4D.𞤧\u06ED\u064A\u064A󠮨; [B1, B3, V6]; xn--6-kmf4691ejv41j.xn--mhba10ch545mn8v8h; ; ; # 6榎àµ.𞤧ۭيي
+6榎ò¦–Ž\u0D4D。𞤅\u06ED\u064A\u064A󠮨; 6榎ò¦–Ž\u0D4D.𞤧\u06ED\u064A\u064A󠮨; [B1, B3, V6]; xn--6-kmf4691ejv41j.xn--mhba10ch545mn8v8h; ; ; # 6榎àµ.𞤧ۭيي
+6榎ò¦–Ž\u0D4D。𞤧\u06ED\u064A\u064A󠮨; 6榎ò¦–Ž\u0D4D.𞤧\u06ED\u064A\u064A󠮨; [B1, B3, V6]; xn--6-kmf4691ejv41j.xn--mhba10ch545mn8v8h; ; ; # 6榎àµ.𞤧ۭيي
xn--6-kmf4691ejv41j.xn--mhba10ch545mn8v8h; 6榎ò¦–Ž\u0D4D.𞤧\u06ED\u064A\u064A󠮨; [B1, B3, V6]; xn--6-kmf4691ejv41j.xn--mhba10ch545mn8v8h; ; ; # 6榎àµ.𞤧ۭيي
-₆榎ò¦–Ž\u0D4D。𞤧\u06ED\uFC5A󠮨; 6榎ò¦–Ž\u0D4D.𞤧\u06ED\u064A\u064A󠮨; [B1, B3, P1, V6]; xn--6-kmf4691ejv41j.xn--mhba10ch545mn8v8h; ; ; # 6榎àµ.𞤧ۭيي
-𣩫.򌑲; 𣩫.򌑲; [P1, V6]; xn--td3j.xn--4628b; ; ; # 𣩫.
-𣩫.򌑲; ; [P1, V6]; xn--td3j.xn--4628b; ; ; # 𣩫.
+₆榎ò¦–Ž\u0D4D。𞤧\u06ED\uFC5A󠮨; 6榎ò¦–Ž\u0D4D.𞤧\u06ED\u064A\u064A󠮨; [B1, B3, V6]; xn--6-kmf4691ejv41j.xn--mhba10ch545mn8v8h; ; ; # 6榎àµ.𞤧ۭيي
+𣩫.򌑲; 𣩫.򌑲; [V6]; xn--td3j.xn--4628b; ; ; # 𣩫.
+𣩫.򌑲; ; [V6]; xn--td3j.xn--4628b; ; ; # 𣩫.
xn--td3j.xn--4628b; 𣩫.򌑲; [V6]; xn--td3j.xn--4628b; ; ; # 𣩫.
-\u200D︒。\u06B9\u200C; \u200D︒.\u06B9\u200C; [B1, B3, C1, C2, P1, V6]; xn--1ug2658f.xn--skb080k; ; xn--y86c.xn--skb; [B1, P1, V6] # ︒.ڹ
+\u200D︒。\u06B9\u200C; \u200D︒.\u06B9\u200C; [B1, B3, C1, C2, V6]; xn--1ug2658f.xn--skb080k; ; xn--y86c.xn--skb; [B1, V6] # ︒.ڹ
xn--y86c.xn--skb; ︒.\u06B9; [B1, V6]; xn--y86c.xn--skb; ; ; # ︒.ڹ
xn--1ug2658f.xn--skb080k; \u200D︒.\u06B9\u200C; [B1, B3, C1, C2, V6]; xn--1ug2658f.xn--skb080k; ; ; # ︒.ڹ
xn--skb; \u06B9; ; xn--skb; ; ; # Ú¹
\u06B9; ; ; xn--skb; ; ; # Ú¹
-ð¹¦\u200Cð¹¶ã€‚\u206D; ð¹¦\u200Cð¹¶.\u206D; [B1, C1, P1, V6]; xn--0ug4994goba.xn--sxg; ; xn--eo0d6a.xn--sxg; [B1, P1, V6] # ð¹¦ð¹¶.
+ð¹¦\u200Cð¹¶ã€‚\u206D; ð¹¦\u200Cð¹¶.\u206D; [B1, C1, V6]; xn--0ug4994goba.xn--sxg; ; xn--eo0d6a.xn--sxg; [B1, V6] # ð¹¦ð¹¶.
xn--eo0d6a.xn--sxg; ð¹¦ð¹¶.\u206D; [B1, V6]; xn--eo0d6a.xn--sxg; ; ; # ð¹¦ð¹¶.
xn--0ug4994goba.xn--sxg; ð¹¦\u200Cð¹¶.\u206D; [B1, C1, V6]; xn--0ug4994goba.xn--sxg; ; ; # ð¹¦ð¹¶.
\u0C4Dð¨¾\u05A9ðŸ­ã€‚-𑜨; \u0C4Dð¨¾\u05A91.-𑜨; [V3, V5]; xn--1-rfc312cdp45c.xn----nq0j; ; ; # à±ð¨¾Ö©1.-𑜨
\u0C4Dð¨¾\u05A91。-𑜨; \u0C4Dð¨¾\u05A91.-𑜨; [V3, V5]; xn--1-rfc312cdp45c.xn----nq0j; ; ; # à±ð¨¾Ö©1.-𑜨
xn--1-rfc312cdp45c.xn----nq0j; \u0C4Dð¨¾\u05A91.-𑜨; [V3, V5]; xn--1-rfc312cdp45c.xn----nq0j; ; ; # à±ð¨¾Ö©1.-𑜨
-ò£¿ˆã€‚ë™; ò£¿ˆ.ë™; [P1, V6]; xn--ph26c.xn--281b; ; ; # .ë™
-ò£¿ˆã€‚뙏; ò£¿ˆ.ë™; [P1, V6]; xn--ph26c.xn--281b; ; ; # .ë™
+ò£¿ˆã€‚ë™; ò£¿ˆ.ë™; [V6]; xn--ph26c.xn--281b; ; ; # .ë™
+ò£¿ˆã€‚뙏; ò£¿ˆ.ë™; [V6]; xn--ph26c.xn--281b; ; ; # .ë™
xn--ph26c.xn--281b; ò£¿ˆ.ë™; [V6]; xn--ph26c.xn--281b; ; ; # .ë™
-񕨚󠄌󑽀ᡀ.\u08B6; 񕨚󑽀ᡀ.\u08B6; [P1, V6]; xn--z7e98100evc01b.xn--czb; ; ; # ᡀ.ࢶ
+񕨚󠄌󑽀ᡀ.\u08B6; 񕨚󑽀ᡀ.\u08B6; [V6]; xn--z7e98100evc01b.xn--czb; ; ; # ᡀ.ࢶ
xn--z7e98100evc01b.xn--czb; 񕨚󑽀ᡀ.\u08B6; [V6]; xn--z7e98100evc01b.xn--czb; ; ; # ᡀ.ࢶ
-\u200D。ñ…›; \u200D.ñ…›; [C2, P1, V6]; xn--1ug.xn--6x4u; ; .xn--6x4u; [P1, V6, A4_2] # .
-\u200D。ñ…›; \u200D.ñ…›; [C2, P1, V6]; xn--1ug.xn--6x4u; ; .xn--6x4u; [P1, V6, A4_2] # .
+\u200D。ñ…›; \u200D.ñ…›; [C2, V6]; xn--1ug.xn--6x4u; ; .xn--6x4u; [V6, A4_2] # .
+\u200D。ñ…›; \u200D.ñ…›; [C2, V6]; xn--1ug.xn--6x4u; ; .xn--6x4u; [V6, A4_2] # .
.xn--6x4u; .ñ…›; [V6, X4_2]; .xn--6x4u; [V6, A4_2]; ; # .
xn--1ug.xn--6x4u; \u200D.ñ…›; [C2, V6]; xn--1ug.xn--6x4u; ; ; # .
\u084B皥.-; \u084B皥.-; [B1, B2, B3, V3]; xn--9vb4167c.-; ; ; # ࡋ皥.-
\u084B皥.-; ; [B1, B2, B3, V3]; xn--9vb4167c.-; ; ; # ࡋ皥.-
xn--9vb4167c.-; \u084B皥.-; [B1, B2, B3, V3]; xn--9vb4167c.-; ; ; # ࡋ皥.-
-ð£¸\u0315ð®‡ï¼Žâ’ˆê¡¦; ð£¸\u0315ð®‡.⒈ꡦ; [B1, P1, V6]; xn--5sa9915kgvb.xn--tshw539b; ; ; # Ì•ð®‡.⒈ꡦ
-ð£¸\u0315ð®‡.1.ꡦ; ; [B1, P1, V6]; xn--5sa9915kgvb.1.xn--cd9a; ; ; # Ì•ð®‡.1.ꡦ
+ð£¸\u0315ð®‡ï¼Žâ’ˆê¡¦; ð£¸\u0315ð®‡.⒈ꡦ; [B1, V6]; xn--5sa9915kgvb.xn--tshw539b; ; ; # Ì•ð®‡.⒈ꡦ
+ð£¸\u0315ð®‡.1.ꡦ; ; [B1, V6]; xn--5sa9915kgvb.1.xn--cd9a; ; ; # Ì•ð®‡.1.ꡦ
xn--5sa9915kgvb.1.xn--cd9a; ð£¸\u0315ð®‡.1.ꡦ; [B1, V6]; xn--5sa9915kgvb.1.xn--cd9a; ; ; # Ì•ð®‡.1.ꡦ
xn--5sa9915kgvb.xn--tshw539b; ð£¸\u0315ð®‡.⒈ꡦ; [B1, V6]; xn--5sa9915kgvb.xn--tshw539b; ; ; # Ì•ð®‡.⒈ꡦ
-á‚»\u200C\u05A2\u200D。\uFFA0Äð¹¦; á‚»\u200C\u05A2\u200D.\uFFA0Äð¹¦; [B5, B6, C1, C2, P1, V6]; xn--tcb597cdmmfa.xn--yda9741khjj; ; xn--tcb597c.xn--yda9741khjj; [B5, B6, P1, V6] # á‚»Ö¢.Äð¹¦
-á‚»\u200C\u05A2\u200D。\uFFA0a\u0304ð¹¦; á‚»\u200C\u05A2\u200D.\uFFA0Äð¹¦; [B5, B6, C1, C2, P1, V6]; xn--tcb597cdmmfa.xn--yda9741khjj; ; xn--tcb597c.xn--yda9741khjj; [B5, B6, P1, V6] # á‚»Ö¢.Äð¹¦
-á‚»\u200C\u05A2\u200D。\u1160Äð¹¦; á‚»\u200C\u05A2\u200D.\u1160Äð¹¦; [B5, B6, C1, C2, P1, V6]; xn--tcb597cdmmfa.xn--yda594fdn5q; ; xn--tcb597c.xn--yda594fdn5q; [B5, B6, P1, V6] # á‚»Ö¢.Äð¹¦
-á‚»\u200C\u05A2\u200D。\u1160a\u0304ð¹¦; á‚»\u200C\u05A2\u200D.\u1160Äð¹¦; [B5, B6, C1, C2, P1, V6]; xn--tcb597cdmmfa.xn--yda594fdn5q; ; xn--tcb597c.xn--yda594fdn5q; [B5, B6, P1, V6] # á‚»Ö¢.Äð¹¦
-â´›\u200C\u05A2\u200D。\u1160a\u0304ð¹¦; â´›\u200C\u05A2\u200D.\u1160Äð¹¦; [B5, B6, C1, C2, P1, V6]; xn--tcb736kea974k.xn--yda594fdn5q; ; xn--tcb323r.xn--yda594fdn5q; [B5, B6, P1, V6] # â´›Ö¢.Äð¹¦
-â´›\u200C\u05A2\u200D。\u1160Äð¹¦; â´›\u200C\u05A2\u200D.\u1160Äð¹¦; [B5, B6, C1, C2, P1, V6]; xn--tcb736kea974k.xn--yda594fdn5q; ; xn--tcb323r.xn--yda594fdn5q; [B5, B6, P1, V6] # â´›Ö¢.Äð¹¦
-á‚»\u200C\u05A2\u200D。\u1160Ä€ð¹¦; á‚»\u200C\u05A2\u200D.\u1160Äð¹¦; [B5, B6, C1, C2, P1, V6]; xn--tcb597cdmmfa.xn--yda594fdn5q; ; xn--tcb597c.xn--yda594fdn5q; [B5, B6, P1, V6] # á‚»Ö¢.Äð¹¦
-á‚»\u200C\u05A2\u200D。\u1160A\u0304ð¹¦; á‚»\u200C\u05A2\u200D.\u1160Äð¹¦; [B5, B6, C1, C2, P1, V6]; xn--tcb597cdmmfa.xn--yda594fdn5q; ; xn--tcb597c.xn--yda594fdn5q; [B5, B6, P1, V6] # á‚»Ö¢.Äð¹¦
+á‚»\u200C\u05A2\u200D。\uFFA0Äð¹¦; á‚»\u200C\u05A2\u200D.\uFFA0Äð¹¦; [B5, B6, C1, C2, V6]; xn--tcb597cdmmfa.xn--yda9741khjj; ; xn--tcb597c.xn--yda9741khjj; [B5, B6, V6] # á‚»Ö¢.Äð¹¦
+á‚»\u200C\u05A2\u200D。\uFFA0a\u0304ð¹¦; á‚»\u200C\u05A2\u200D.\uFFA0Äð¹¦; [B5, B6, C1, C2, V6]; xn--tcb597cdmmfa.xn--yda9741khjj; ; xn--tcb597c.xn--yda9741khjj; [B5, B6, V6] # á‚»Ö¢.Äð¹¦
+á‚»\u200C\u05A2\u200D。\u1160Äð¹¦; á‚»\u200C\u05A2\u200D.\u1160Äð¹¦; [B5, B6, C1, C2, V6]; xn--tcb597cdmmfa.xn--yda594fdn5q; ; xn--tcb597c.xn--yda594fdn5q; [B5, B6, V6] # á‚»Ö¢.Äð¹¦
+á‚»\u200C\u05A2\u200D。\u1160a\u0304ð¹¦; á‚»\u200C\u05A2\u200D.\u1160Äð¹¦; [B5, B6, C1, C2, V6]; xn--tcb597cdmmfa.xn--yda594fdn5q; ; xn--tcb597c.xn--yda594fdn5q; [B5, B6, V6] # á‚»Ö¢.Äð¹¦
+â´›\u200C\u05A2\u200D。\u1160a\u0304ð¹¦; â´›\u200C\u05A2\u200D.\u1160Äð¹¦; [B5, B6, C1, C2, V6]; xn--tcb736kea974k.xn--yda594fdn5q; ; xn--tcb323r.xn--yda594fdn5q; [B5, B6, V6] # â´›Ö¢.Äð¹¦
+â´›\u200C\u05A2\u200D。\u1160Äð¹¦; â´›\u200C\u05A2\u200D.\u1160Äð¹¦; [B5, B6, C1, C2, V6]; xn--tcb736kea974k.xn--yda594fdn5q; ; xn--tcb323r.xn--yda594fdn5q; [B5, B6, V6] # â´›Ö¢.Äð¹¦
+á‚»\u200C\u05A2\u200D。\u1160Ä€ð¹¦; á‚»\u200C\u05A2\u200D.\u1160Äð¹¦; [B5, B6, C1, C2, V6]; xn--tcb597cdmmfa.xn--yda594fdn5q; ; xn--tcb597c.xn--yda594fdn5q; [B5, B6, V6] # á‚»Ö¢.Äð¹¦
+á‚»\u200C\u05A2\u200D。\u1160A\u0304ð¹¦; á‚»\u200C\u05A2\u200D.\u1160Äð¹¦; [B5, B6, C1, C2, V6]; xn--tcb597cdmmfa.xn--yda594fdn5q; ; xn--tcb597c.xn--yda594fdn5q; [B5, B6, V6] # á‚»Ö¢.Äð¹¦
xn--tcb597c.xn--yda594fdn5q; á‚»\u05A2.\u1160Äð¹¦; [B5, B6, V6]; xn--tcb597c.xn--yda594fdn5q; ; ; # á‚»Ö¢.Äð¹¦
xn--tcb597cdmmfa.xn--yda594fdn5q; á‚»\u200C\u05A2\u200D.\u1160Äð¹¦; [B5, B6, C1, C2, V6]; xn--tcb597cdmmfa.xn--yda594fdn5q; ; ; # á‚»Ö¢.Äð¹¦
xn--tcb323r.xn--yda594fdn5q; â´›\u05A2.\u1160Äð¹¦; [B5, B6, V6]; xn--tcb323r.xn--yda594fdn5q; ; ; # â´›Ö¢.Äð¹¦
xn--tcb736kea974k.xn--yda594fdn5q; â´›\u200C\u05A2\u200D.\u1160Äð¹¦; [B5, B6, C1, C2, V6]; xn--tcb736kea974k.xn--yda594fdn5q; ; ; # â´›Ö¢.Äð¹¦
-â´›\u200C\u05A2\u200D。\uFFA0a\u0304ð¹¦; â´›\u200C\u05A2\u200D.\uFFA0Äð¹¦; [B5, B6, C1, C2, P1, V6]; xn--tcb736kea974k.xn--yda9741khjj; ; xn--tcb323r.xn--yda9741khjj; [B5, B6, P1, V6] # â´›Ö¢.Äð¹¦
-â´›\u200C\u05A2\u200D。\uFFA0Äð¹¦; â´›\u200C\u05A2\u200D.\uFFA0Äð¹¦; [B5, B6, C1, C2, P1, V6]; xn--tcb736kea974k.xn--yda9741khjj; ; xn--tcb323r.xn--yda9741khjj; [B5, B6, P1, V6] # â´›Ö¢.Äð¹¦
-á‚»\u200C\u05A2\u200D。\uFFA0Ä€ð¹¦; á‚»\u200C\u05A2\u200D.\uFFA0Äð¹¦; [B5, B6, C1, C2, P1, V6]; xn--tcb597cdmmfa.xn--yda9741khjj; ; xn--tcb597c.xn--yda9741khjj; [B5, B6, P1, V6] # á‚»Ö¢.Äð¹¦
-á‚»\u200C\u05A2\u200D。\uFFA0A\u0304ð¹¦; á‚»\u200C\u05A2\u200D.\uFFA0Äð¹¦; [B5, B6, C1, C2, P1, V6]; xn--tcb597cdmmfa.xn--yda9741khjj; ; xn--tcb597c.xn--yda9741khjj; [B5, B6, P1, V6] # á‚»Ö¢.Äð¹¦
+â´›\u200C\u05A2\u200D。\uFFA0a\u0304ð¹¦; â´›\u200C\u05A2\u200D.\uFFA0Äð¹¦; [B5, B6, C1, C2, V6]; xn--tcb736kea974k.xn--yda9741khjj; ; xn--tcb323r.xn--yda9741khjj; [B5, B6, V6] # â´›Ö¢.Äð¹¦
+â´›\u200C\u05A2\u200D。\uFFA0Äð¹¦; â´›\u200C\u05A2\u200D.\uFFA0Äð¹¦; [B5, B6, C1, C2, V6]; xn--tcb736kea974k.xn--yda9741khjj; ; xn--tcb323r.xn--yda9741khjj; [B5, B6, V6] # â´›Ö¢.Äð¹¦
+á‚»\u200C\u05A2\u200D。\uFFA0Ä€ð¹¦; á‚»\u200C\u05A2\u200D.\uFFA0Äð¹¦; [B5, B6, C1, C2, V6]; xn--tcb597cdmmfa.xn--yda9741khjj; ; xn--tcb597c.xn--yda9741khjj; [B5, B6, V6] # á‚»Ö¢.Äð¹¦
+á‚»\u200C\u05A2\u200D。\uFFA0A\u0304ð¹¦; á‚»\u200C\u05A2\u200D.\uFFA0Äð¹¦; [B5, B6, C1, C2, V6]; xn--tcb597cdmmfa.xn--yda9741khjj; ; xn--tcb597c.xn--yda9741khjj; [B5, B6, V6] # á‚»Ö¢.Äð¹¦
xn--tcb597c.xn--yda9741khjj; á‚»\u05A2.\uFFA0Äð¹¦; [B5, B6, V6]; xn--tcb597c.xn--yda9741khjj; ; ; # á‚»Ö¢.Äð¹¦
xn--tcb597cdmmfa.xn--yda9741khjj; á‚»\u200C\u05A2\u200D.\uFFA0Äð¹¦; [B5, B6, C1, C2, V6]; xn--tcb597cdmmfa.xn--yda9741khjj; ; ; # á‚»Ö¢.Äð¹¦
xn--tcb323r.xn--yda9741khjj; â´›\u05A2.\uFFA0Äð¹¦; [B5, B6, V6]; xn--tcb323r.xn--yda9741khjj; ; ; # â´›Ö¢.Äð¹¦
xn--tcb736kea974k.xn--yda9741khjj; â´›\u200C\u05A2\u200D.\uFFA0Äð¹¦; [B5, B6, C1, C2, V6]; xn--tcb736kea974k.xn--yda9741khjj; ; ; # â´›Ö¢.Äð¹¦
-\uFFF9\u200C。曳⾑ð‹°â‰¯; \uFFF9\u200C.曳襾ð‹°â‰¯; [C1, P1, V6]; xn--0ug2139f.xn--hdh501y8wvfs5h; ; xn--vn7c.xn--hdh501y8wvfs5h; [P1, V6] # .曳襾ð‹°â‰¯
-\uFFF9\u200C。曳⾑ð‹°>\u0338; \uFFF9\u200C.曳襾ð‹°â‰¯; [C1, P1, V6]; xn--0ug2139f.xn--hdh501y8wvfs5h; ; xn--vn7c.xn--hdh501y8wvfs5h; [P1, V6] # .曳襾ð‹°â‰¯
-\uFFF9\u200C。曳襾ð‹°â‰¯; \uFFF9\u200C.曳襾ð‹°â‰¯; [C1, P1, V6]; xn--0ug2139f.xn--hdh501y8wvfs5h; ; xn--vn7c.xn--hdh501y8wvfs5h; [P1, V6] # .曳襾ð‹°â‰¯
-\uFFF9\u200C。曳襾ð‹°>\u0338; \uFFF9\u200C.曳襾ð‹°â‰¯; [C1, P1, V6]; xn--0ug2139f.xn--hdh501y8wvfs5h; ; xn--vn7c.xn--hdh501y8wvfs5h; [P1, V6] # .曳襾ð‹°â‰¯
+\uFFF9\u200C。曳⾑ð‹°â‰¯; \uFFF9\u200C.曳襾ð‹°â‰¯; [C1, V6]; xn--0ug2139f.xn--hdh501y8wvfs5h; ; xn--vn7c.xn--hdh501y8wvfs5h; [V6] # .曳襾ð‹°â‰¯
+\uFFF9\u200C。曳⾑ð‹°>\u0338; \uFFF9\u200C.曳襾ð‹°â‰¯; [C1, V6]; xn--0ug2139f.xn--hdh501y8wvfs5h; ; xn--vn7c.xn--hdh501y8wvfs5h; [V6] # .曳襾ð‹°â‰¯
+\uFFF9\u200C。曳襾ð‹°â‰¯; \uFFF9\u200C.曳襾ð‹°â‰¯; [C1, V6]; xn--0ug2139f.xn--hdh501y8wvfs5h; ; xn--vn7c.xn--hdh501y8wvfs5h; [V6] # .曳襾ð‹°â‰¯
+\uFFF9\u200C。曳襾ð‹°>\u0338; \uFFF9\u200C.曳襾ð‹°â‰¯; [C1, V6]; xn--0ug2139f.xn--hdh501y8wvfs5h; ; xn--vn7c.xn--hdh501y8wvfs5h; [V6] # .曳襾ð‹°â‰¯
xn--vn7c.xn--hdh501y8wvfs5h; \uFFF9.曳襾ð‹°â‰¯; [V6]; xn--vn7c.xn--hdh501y8wvfs5h; ; ; # .曳襾ð‹°â‰¯
xn--0ug2139f.xn--hdh501y8wvfs5h; \uFFF9\u200C.曳襾ð‹°â‰¯; [C1, V6]; xn--0ug2139f.xn--hdh501y8wvfs5h; ; ; # .曳襾ð‹°â‰¯
-≯⒈。ß; ≯⒈.ß; [P1, V6]; xn--hdh84f.xn--zca; ; xn--hdh84f.ss; # ≯⒈.ß
->\u0338⒈。ß; ≯⒈.ß; [P1, V6]; xn--hdh84f.xn--zca; ; xn--hdh84f.ss; # ≯⒈.ß
-≯1.。ß; ≯1..ß; [P1, V6, X4_2]; xn--1-ogo..xn--zca; [P1, V6, A4_2]; xn--1-ogo..ss; # ≯1..ß
->\u03381.。ß; ≯1..ß; [P1, V6, X4_2]; xn--1-ogo..xn--zca; [P1, V6, A4_2]; xn--1-ogo..ss; # ≯1..ß
->\u03381.。SS; ≯1..ss; [P1, V6, X4_2]; xn--1-ogo..ss; [P1, V6, A4_2]; ; # ≯1..ss
-≯1.。SS; ≯1..ss; [P1, V6, X4_2]; xn--1-ogo..ss; [P1, V6, A4_2]; ; # ≯1..ss
-≯1.。ss; ≯1..ss; [P1, V6, X4_2]; xn--1-ogo..ss; [P1, V6, A4_2]; ; # ≯1..ss
->\u03381.。ss; ≯1..ss; [P1, V6, X4_2]; xn--1-ogo..ss; [P1, V6, A4_2]; ; # ≯1..ss
->\u03381.。Ss; ≯1..ss; [P1, V6, X4_2]; xn--1-ogo..ss; [P1, V6, A4_2]; ; # ≯1..ss
-≯1.。Ss; ≯1..ss; [P1, V6, X4_2]; xn--1-ogo..ss; [P1, V6, A4_2]; ; # ≯1..ss
-xn--1-ogo..ss; ≯1..ss; [V6, X4_2]; xn--1-ogo..ss; [V6, A4_2]; ; # ≯1..ss
-xn--1-ogo..xn--zca; ≯1..ß; [V6, X4_2]; xn--1-ogo..xn--zca; [V6, A4_2]; ; # ≯1..ß
->\u0338⒈。SS; ≯⒈.ss; [P1, V6]; xn--hdh84f.ss; ; ; # ≯⒈.ss
-≯⒈。SS; ≯⒈.ss; [P1, V6]; xn--hdh84f.ss; ; ; # ≯⒈.ss
-≯⒈。ss; ≯⒈.ss; [P1, V6]; xn--hdh84f.ss; ; ; # ≯⒈.ss
->\u0338⒈。ss; ≯⒈.ss; [P1, V6]; xn--hdh84f.ss; ; ; # ≯⒈.ss
->\u0338⒈。Ss; ≯⒈.ss; [P1, V6]; xn--hdh84f.ss; ; ; # ≯⒈.ss
-≯⒈。Ss; ≯⒈.ss; [P1, V6]; xn--hdh84f.ss; ; ; # ≯⒈.ss
+≯⒈。ß; ≯⒈.ß; [V6]; xn--hdh84f.xn--zca; ; xn--hdh84f.ss; # ≯⒈.ß
+>\u0338⒈。ß; ≯⒈.ß; [V6]; xn--hdh84f.xn--zca; ; xn--hdh84f.ss; # ≯⒈.ß
+≯1.。ß; ≯1..ß; [X4_2]; xn--1-ogo..xn--zca; [A4_2]; xn--1-ogo..ss; # ≯1..ß
+>\u03381.。ß; ≯1..ß; [X4_2]; xn--1-ogo..xn--zca; [A4_2]; xn--1-ogo..ss; # ≯1..ß
+>\u03381.。SS; ≯1..ss; [X4_2]; xn--1-ogo..ss; [A4_2]; ; # ≯1..ss
+≯1.。SS; ≯1..ss; [X4_2]; xn--1-ogo..ss; [A4_2]; ; # ≯1..ss
+≯1.。ss; ≯1..ss; [X4_2]; xn--1-ogo..ss; [A4_2]; ; # ≯1..ss
+>\u03381.。ss; ≯1..ss; [X4_2]; xn--1-ogo..ss; [A4_2]; ; # ≯1..ss
+>\u03381.。Ss; ≯1..ss; [X4_2]; xn--1-ogo..ss; [A4_2]; ; # ≯1..ss
+≯1.。Ss; ≯1..ss; [X4_2]; xn--1-ogo..ss; [A4_2]; ; # ≯1..ss
+xn--1-ogo..ss; ≯1..ss; [X4_2]; xn--1-ogo..ss; [A4_2]; ; # ≯1..ss
+xn--1-ogo..xn--zca; ≯1..ß; [X4_2]; xn--1-ogo..xn--zca; [A4_2]; ; # ≯1..ß
+>\u0338⒈。SS; ≯⒈.ss; [V6]; xn--hdh84f.ss; ; ; # ≯⒈.ss
+≯⒈。SS; ≯⒈.ss; [V6]; xn--hdh84f.ss; ; ; # ≯⒈.ss
+≯⒈。ss; ≯⒈.ss; [V6]; xn--hdh84f.ss; ; ; # ≯⒈.ss
+>\u0338⒈。ss; ≯⒈.ss; [V6]; xn--hdh84f.ss; ; ; # ≯⒈.ss
+>\u0338⒈。Ss; ≯⒈.ss; [V6]; xn--hdh84f.ss; ; ; # ≯⒈.ss
+≯⒈。Ss; ≯⒈.ss; [V6]; xn--hdh84f.ss; ; ; # ≯⒈.ss
xn--hdh84f.ss; ≯⒈.ss; [V6]; xn--hdh84f.ss; ; ; # ≯⒈.ss
xn--hdh84f.xn--zca; ≯⒈.ß; [V6]; xn--hdh84f.xn--zca; ; ; # ≯⒈.ß
-\u0667\u200D\uFB96。\u07DA-₆Ⴙ; \u0667\u200D\u06B3.\u07DA-6Ⴙ; [B1, B2, B3, C2, P1, V6]; xn--gib6m343e.xn---6-lve002g; ; xn--gib6m.xn---6-lve002g; [B1, B2, B3, P1, V6] # ٧ڳ.ߚ-6Ⴙ
-\u0667\u200D\u06B3。\u07DA-6Ⴙ; \u0667\u200D\u06B3.\u07DA-6Ⴙ; [B1, B2, B3, C2, P1, V6]; xn--gib6m343e.xn---6-lve002g; ; xn--gib6m.xn---6-lve002g; [B1, B2, B3, P1, V6] # ٧ڳ.ߚ-6Ⴙ
+\u0667\u200D\uFB96。\u07DA-₆Ⴙ; \u0667\u200D\u06B3.\u07DA-6Ⴙ; [B1, B2, B3, C2, V6]; xn--gib6m343e.xn---6-lve002g; ; xn--gib6m.xn---6-lve002g; [B1, B2, B3, V6] # ٧ڳ.ߚ-6Ⴙ
+\u0667\u200D\u06B3。\u07DA-6Ⴙ; \u0667\u200D\u06B3.\u07DA-6Ⴙ; [B1, B2, B3, C2, V6]; xn--gib6m343e.xn---6-lve002g; ; xn--gib6m.xn---6-lve002g; [B1, B2, B3, V6] # ٧ڳ.ߚ-6Ⴙ
\u0667\u200D\u06B3。\u07DA-6ⴙ; \u0667\u200D\u06B3.\u07DA-6ⴙ; [B1, B2, B3, C2]; xn--gib6m343e.xn---6-lve6529a; ; xn--gib6m.xn---6-lve6529a; [B1, B2, B3] # ٧ڳ.ߚ-6ⴙ
xn--gib6m.xn---6-lve6529a; \u0667\u06B3.\u07DA-6â´™; [B1, B2, B3]; xn--gib6m.xn---6-lve6529a; ; ; # Ù§Ú³.ßš-6â´™
xn--gib6m343e.xn---6-lve6529a; \u0667\u200D\u06B3.\u07DA-6â´™; [B1, B2, B3, C2]; xn--gib6m343e.xn---6-lve6529a; ; ; # Ù§Ú³.ßš-6â´™
xn--gib6m.xn---6-lve002g; \u0667\u06B3.\u07DA-6Ⴙ; [B1, B2, B3, V6]; xn--gib6m.xn---6-lve002g; ; ; # ٧ڳ.ߚ-6Ⴙ
xn--gib6m343e.xn---6-lve002g; \u0667\u200D\u06B3.\u07DA-6Ⴙ; [B1, B2, B3, C2, V6]; xn--gib6m343e.xn---6-lve002g; ; ; # ٧ڳ.ߚ-6Ⴙ
\u0667\u200D\uFB96。\u07DA-₆ⴙ; \u0667\u200D\u06B3.\u07DA-6ⴙ; [B1, B2, B3, C2]; xn--gib6m343e.xn---6-lve6529a; ; xn--gib6m.xn---6-lve6529a; [B1, B2, B3] # ٧ڳ.ߚ-6ⴙ
-\u200C。≠; \u200C.≠; [C1, P1, V6]; xn--0ug.xn--1ch; ; .xn--1ch; [P1, V6, A4_2] # .≠
-\u200C。=\u0338; \u200C.≠; [C1, P1, V6]; xn--0ug.xn--1ch; ; .xn--1ch; [P1, V6, A4_2] # .≠
-\u200C。≠; \u200C.≠; [C1, P1, V6]; xn--0ug.xn--1ch; ; .xn--1ch; [P1, V6, A4_2] # .≠
-\u200C。=\u0338; \u200C.≠; [C1, P1, V6]; xn--0ug.xn--1ch; ; .xn--1ch; [P1, V6, A4_2] # .≠
-.xn--1ch; .≠; [V6, X4_2]; .xn--1ch; [V6, A4_2]; ; # .≠
-xn--0ug.xn--1ch; \u200C.≠; [C1, V6]; xn--0ug.xn--1ch; ; ; # .≠
+\u200C。≠; \u200C.≠; [C1]; xn--0ug.xn--1ch; ; .xn--1ch; [A4_2] # .≠
+\u200C。=\u0338; \u200C.≠; [C1]; xn--0ug.xn--1ch; ; .xn--1ch; [A4_2] # .≠
+\u200C。≠; \u200C.≠; [C1]; xn--0ug.xn--1ch; ; .xn--1ch; [A4_2] # .≠
+\u200C。=\u0338; \u200C.≠; [C1]; xn--0ug.xn--1ch; ; .xn--1ch; [A4_2] # .≠
+.xn--1ch; .≠; [X4_2]; .xn--1ch; [A4_2]; ; # .≠
+xn--0ug.xn--1ch; \u200C.≠; [C1]; xn--0ug.xn--1ch; ; ; # .≠
ð‘–¿ð¨”.á¡Ÿð‘–¿\u1B42\u200C; ; [C1, V5]; xn--461dw464a.xn--v8e29ldzfo952a; ; xn--461dw464a.xn--v8e29loy65a; [V5] # ð‘–¿ð¨”.á¡Ÿð‘–¿á­‚
xn--461dw464a.xn--v8e29loy65a; ð‘–¿ð¨”.á¡Ÿð‘–¿\u1B42; [V5]; xn--461dw464a.xn--v8e29loy65a; ; ; # ð‘–¿ð¨”.á¡Ÿð‘–¿á­‚
xn--461dw464a.xn--v8e29ldzfo952a; ð‘–¿ð¨”.á¡Ÿð‘–¿\u1B42\u200C; [C1, V5]; xn--461dw464a.xn--v8e29ldzfo952a; ; ; # ð‘–¿ð¨”.á¡Ÿð‘–¿á­‚
-ò”£³\u200Dò‘±.𖬴Ↄ≠-; ; [C2, P1, V3, V5, V6]; xn--1ug15151gkb5a.xn----61n81bt713h; ; xn--6j00chy9a.xn----61n81bt713h; [P1, V3, V5, V6] # .𖬴Ↄ≠-
-ò”£³\u200Dò‘±.𖬴Ↄ=\u0338-; ò”£³\u200Dò‘±.𖬴Ↄ≠-; [C2, P1, V3, V5, V6]; xn--1ug15151gkb5a.xn----61n81bt713h; ; xn--6j00chy9a.xn----61n81bt713h; [P1, V3, V5, V6] # .𖬴Ↄ≠-
-ò”£³\u200Dò‘±.𖬴ↄ=\u0338-; ò”£³\u200Dò‘±.𖬴ↄ≠-; [C2, P1, V3, V5, V6]; xn--1ug15151gkb5a.xn----81n51bt713h; ; xn--6j00chy9a.xn----81n51bt713h; [P1, V3, V5, V6] # .𖬴ↄ≠-
-ò”£³\u200Dò‘±.𖬴ↄ≠-; ; [C2, P1, V3, V5, V6]; xn--1ug15151gkb5a.xn----81n51bt713h; ; xn--6j00chy9a.xn----81n51bt713h; [P1, V3, V5, V6] # .𖬴ↄ≠-
+ò”£³\u200Dò‘±.𖬴Ↄ≠-; ; [C2, V3, V5, V6]; xn--1ug15151gkb5a.xn----61n81bt713h; ; xn--6j00chy9a.xn----61n81bt713h; [V3, V5, V6] # .𖬴Ↄ≠-
+ò”£³\u200Dò‘±.𖬴Ↄ=\u0338-; ò”£³\u200Dò‘±.𖬴Ↄ≠-; [C2, V3, V5, V6]; xn--1ug15151gkb5a.xn----61n81bt713h; ; xn--6j00chy9a.xn----61n81bt713h; [V3, V5, V6] # .𖬴Ↄ≠-
+ò”£³\u200Dò‘±.𖬴ↄ=\u0338-; ò”£³\u200Dò‘±.𖬴ↄ≠-; [C2, V3, V5, V6]; xn--1ug15151gkb5a.xn----81n51bt713h; ; xn--6j00chy9a.xn----81n51bt713h; [V3, V5, V6] # .𖬴ↄ≠-
+ò”£³\u200Dò‘±.𖬴ↄ≠-; ; [C2, V3, V5, V6]; xn--1ug15151gkb5a.xn----81n51bt713h; ; xn--6j00chy9a.xn----81n51bt713h; [V3, V5, V6] # .𖬴ↄ≠-
xn--6j00chy9a.xn----81n51bt713h; ò”£³ò‘±.𖬴ↄ≠-; [V3, V5, V6]; xn--6j00chy9a.xn----81n51bt713h; ; ; # .𖬴ↄ≠-
xn--1ug15151gkb5a.xn----81n51bt713h; ò”£³\u200Dò‘±.𖬴ↄ≠-; [C2, V3, V5, V6]; xn--1ug15151gkb5a.xn----81n51bt713h; ; ; # .𖬴ↄ≠-
xn--6j00chy9a.xn----61n81bt713h; ò”£³ò‘±.𖬴Ↄ≠-; [V3, V5, V6]; xn--6j00chy9a.xn----61n81bt713h; ; ; # .𖬴Ↄ≠-
xn--1ug15151gkb5a.xn----61n81bt713h; ò”£³\u200Dò‘±.𖬴Ↄ≠-; [C2, V3, V5, V6]; xn--1ug15151gkb5a.xn----61n81bt713h; ; ; # .𖬴Ↄ≠-
-\u07E2Ï‚\u200DðŸ³ã€‚蔑ò›–¢; \u07E2Ï‚\u200D7.蔑ò›–¢; [B2, C2, P1, V6]; xn--7-xmb182aez5a.xn--wy1ao4929b; ; xn--7-zmb872a.xn--wy1ao4929b; [B2, P1, V6] # ߢς7.蔑
-\u07E2ς\u200D7。蔑򛖢; \u07E2ς\u200D7.蔑򛖢; [B2, C2, P1, V6]; xn--7-xmb182aez5a.xn--wy1ao4929b; ; xn--7-zmb872a.xn--wy1ao4929b; [B2, P1, V6] # ߢς7.蔑
-\u07E2Σ\u200D7。蔑򛖢; \u07E2σ\u200D7.蔑򛖢; [B2, C2, P1, V6]; xn--7-zmb872aez5a.xn--wy1ao4929b; ; xn--7-zmb872a.xn--wy1ao4929b; [B2, P1, V6] # ߢσ7.蔑
-\u07E2σ\u200D7。蔑򛖢; \u07E2σ\u200D7.蔑򛖢; [B2, C2, P1, V6]; xn--7-zmb872aez5a.xn--wy1ao4929b; ; xn--7-zmb872a.xn--wy1ao4929b; [B2, P1, V6] # ߢσ7.蔑
+\u07E2Ï‚\u200DðŸ³ã€‚蔑ò›–¢; \u07E2Ï‚\u200D7.蔑ò›–¢; [B2, C2, V6]; xn--7-xmb182aez5a.xn--wy1ao4929b; ; xn--7-zmb872a.xn--wy1ao4929b; [B2, V6] # ߢς7.蔑
+\u07E2ς\u200D7。蔑򛖢; \u07E2ς\u200D7.蔑򛖢; [B2, C2, V6]; xn--7-xmb182aez5a.xn--wy1ao4929b; ; xn--7-zmb872a.xn--wy1ao4929b; [B2, V6] # ߢς7.蔑
+\u07E2Σ\u200D7。蔑򛖢; \u07E2σ\u200D7.蔑򛖢; [B2, C2, V6]; xn--7-zmb872aez5a.xn--wy1ao4929b; ; xn--7-zmb872a.xn--wy1ao4929b; [B2, V6] # ߢσ7.蔑
+\u07E2σ\u200D7。蔑򛖢; \u07E2σ\u200D7.蔑򛖢; [B2, C2, V6]; xn--7-zmb872aez5a.xn--wy1ao4929b; ; xn--7-zmb872a.xn--wy1ao4929b; [B2, V6] # ߢσ7.蔑
xn--7-zmb872a.xn--wy1ao4929b; \u07E2σ7.蔑򛖢; [B2, V6]; xn--7-zmb872a.xn--wy1ao4929b; ; ; # ߢσ7.蔑
xn--7-zmb872aez5a.xn--wy1ao4929b; \u07E2σ\u200D7.蔑򛖢; [B2, C2, V6]; xn--7-zmb872aez5a.xn--wy1ao4929b; ; ; # ߢσ7.蔑
xn--7-xmb182aez5a.xn--wy1ao4929b; \u07E2ς\u200D7.蔑򛖢; [B2, C2, V6]; xn--7-xmb182aez5a.xn--wy1ao4929b; ; ; # ߢς7.蔑
-\u07E2Σ\u200DðŸ³ã€‚蔑ò›–¢; \u07E2σ\u200D7.蔑ò›–¢; [B2, C2, P1, V6]; xn--7-zmb872aez5a.xn--wy1ao4929b; ; xn--7-zmb872a.xn--wy1ao4929b; [B2, P1, V6] # ߢσ7.蔑
-\u07E2σ\u200DðŸ³ã€‚蔑ò›–¢; \u07E2σ\u200D7.蔑ò›–¢; [B2, C2, P1, V6]; xn--7-zmb872aez5a.xn--wy1ao4929b; ; xn--7-zmb872a.xn--wy1ao4929b; [B2, P1, V6] # ߢσ7.蔑
-ð¹°.\u0600; ; [B1, P1, V6]; xn--oo0d.xn--ifb; ; ; # ð¹°.
+\u07E2Σ\u200DðŸ³ã€‚蔑ò›–¢; \u07E2σ\u200D7.蔑ò›–¢; [B2, C2, V6]; xn--7-zmb872aez5a.xn--wy1ao4929b; ; xn--7-zmb872a.xn--wy1ao4929b; [B2, V6] # ߢσ7.蔑
+\u07E2σ\u200DðŸ³ã€‚蔑ò›–¢; \u07E2σ\u200D7.蔑ò›–¢; [B2, C2, V6]; xn--7-zmb872aez5a.xn--wy1ao4929b; ; xn--7-zmb872a.xn--wy1ao4929b; [B2, V6] # ߢσ7.蔑
+ð¹°.\u0600; ; [B1, V6]; xn--oo0d.xn--ifb; ; ; # ð¹°.
xn--oo0d.xn--ifb; ð¹°.\u0600; [B1, V6]; xn--oo0d.xn--ifb; ; ; # ð¹°.
-\u08A8.𱠖; ; [B1, V3]; xn----mod.xn--5o9n; ; ; # -ࢨ.𱠖
xn----mod.xn--5o9n; -\u08A8.𱠖; [B1, V3]; xn----mod.xn--5o9n; ; ; # -ࢨ.𱠖
-≯𞱸󠇀。誆⒈; ≯𞱸.誆⒈; [B1, P1, V6]; xn--hdh7151p.xn--tsh1248a; ; ; # ≯𞱸.誆⒈
->\u0338𞱸󠇀。誆⒈; ≯𞱸.誆⒈; [B1, P1, V6]; xn--hdh7151p.xn--tsh1248a; ; ; # ≯𞱸.誆⒈
-≯𞱸󠇀。誆1.; ≯𞱸.誆1.; [B1, P1, V6]; xn--hdh7151p.xn--1-dy1d.; ; ; # ≯𞱸.誆1.
->\u0338𞱸󠇀。誆1.; ≯𞱸.誆1.; [B1, P1, V6]; xn--hdh7151p.xn--1-dy1d.; ; ; # ≯𞱸.誆1.
-xn--hdh7151p.xn--1-dy1d.; ≯𞱸.誆1.; [B1, V6]; xn--hdh7151p.xn--1-dy1d.; ; ; # ≯𞱸.誆1.
+≯𞱸󠇀。誆⒈; ≯𞱸.誆⒈; [B1, V6]; xn--hdh7151p.xn--tsh1248a; ; ; # ≯𞱸.誆⒈
+>\u0338𞱸󠇀。誆⒈; ≯𞱸.誆⒈; [B1, V6]; xn--hdh7151p.xn--tsh1248a; ; ; # ≯𞱸.誆⒈
+≯𞱸󠇀。誆1.; ≯𞱸.誆1.; [B1]; xn--hdh7151p.xn--1-dy1d.; ; ; # ≯𞱸.誆1.
+>\u0338𞱸󠇀。誆1.; ≯𞱸.誆1.; [B1]; xn--hdh7151p.xn--1-dy1d.; ; ; # ≯𞱸.誆1.
+xn--hdh7151p.xn--1-dy1d.; ≯𞱸.誆1.; [B1]; xn--hdh7151p.xn--1-dy1d.; ; ; # ≯𞱸.誆1.
xn--hdh7151p.xn--tsh1248a; ≯𞱸.誆⒈; [B1, V6]; xn--hdh7151p.xn--tsh1248a; ; ; # ≯𞱸.誆⒈
-\u0616𞥙äŠ\u0650.︒\u0645↺\u069C; \u0616𞥙äŠ\u0650.︒\u0645↺\u069C; [B1, P1, V5, V6]; xn--4fb0j490qjg4x.xn--hhb8o948euo5r; ; ; # ؖ𞥙äŠÙ.︒م↺ڜ
+\u0616𞥙äŠ\u0650.︒\u0645↺\u069C; \u0616𞥙äŠ\u0650.︒\u0645↺\u069C; [B1, V5, V6]; xn--4fb0j490qjg4x.xn--hhb8o948euo5r; ; ; # ؖ𞥙äŠÙ.︒م↺ڜ
\u0616𞥙äŠ\u0650.。\u0645↺\u069C; \u0616𞥙äŠ\u0650..\u0645↺\u069C; [B1, V5, X4_2]; xn--4fb0j490qjg4x..xn--hhb8o948e; [B1, V5, A4_2]; ; # ؖ𞥙äŠÙ..م↺ڜ
xn--4fb0j490qjg4x..xn--hhb8o948e; \u0616𞥙äŠ\u0650..\u0645↺\u069C; [B1, V5, X4_2]; xn--4fb0j490qjg4x..xn--hhb8o948e; [B1, V5, A4_2]; ; # ؖ𞥙äŠÙ..م↺ڜ
xn--4fb0j490qjg4x.xn--hhb8o948euo5r; \u0616𞥙äŠ\u0650.︒\u0645↺\u069C; [B1, V5, V6]; xn--4fb0j490qjg4x.xn--hhb8o948euo5r; ; ; # ؖ𞥙äŠÙ.︒م↺ڜ
-퀬-?񶳒.\u200C\u0AC5󩸤۴; ; [C1, P1, V6]; xn---?-6g4k75207c.xn--hmb76q48y18505a; ; xn---?-6g4k75207c.xn--hmb76q74166b; [P1, V5, V6] # 퀬-?.ૅ۴
-á„ᅰᆻ-?ñ¶³’.\u200C\u0AC5󩸤۴; 퀬-?ñ¶³’.\u200C\u0AC5󩸤۴; [C1, P1, V6]; xn---?-6g4k75207c.xn--hmb76q48y18505a; ; xn---?-6g4k75207c.xn--hmb76q74166b; [P1, V5, V6] # 퀬-?.à«…Û´
-xn---?-6g4k75207c.xn--hmb76q74166b; 퀬-?񶳒.\u0AC5󩸤۴; [P1, V5, V6]; xn---?-6g4k75207c.xn--hmb76q74166b; ; ; # 퀬-?.ૅ۴
-xn---?-6g4k75207c.xn--hmb76q48y18505a; 퀬-?񶳒.\u200C\u0AC5󩸤۴; [C1, P1, V6]; xn---?-6g4k75207c.xn--hmb76q48y18505a; ; ; # 퀬-?.ૅ۴
-퀬-?񶳒.xn--hmb76q74166b; 퀬-?񶳒.\u0AC5󩸤۴; [P1, V5, V6]; xn---?-6g4k75207c.xn--hmb76q74166b; ; ; # 퀬-?.ૅ۴
-á„ᅰᆻ-?ñ¶³’.xn--hmb76q74166b; 퀬-?ñ¶³’.\u0AC5󩸤۴; [P1, V5, V6]; xn---?-6g4k75207c.xn--hmb76q74166b; ; ; # 퀬-?.à«…Û´
-á„ᅰᆻ-?ñ¶³’.XN--HMB76Q74166B; 퀬-?ñ¶³’.\u0AC5󩸤۴; [P1, V5, V6]; xn---?-6g4k75207c.xn--hmb76q74166b; ; ; # 퀬-?.à«…Û´
-퀬-?񶳒.XN--HMB76Q74166B; 퀬-?񶳒.\u0AC5󩸤۴; [P1, V5, V6]; xn---?-6g4k75207c.xn--hmb76q74166b; ; ; # 퀬-?.ૅ۴
-퀬-?񶳒.Xn--Hmb76q74166b; 퀬-?񶳒.\u0AC5󩸤۴; [P1, V5, V6]; xn---?-6g4k75207c.xn--hmb76q74166b; ; ; # 퀬-?.ૅ۴
-á„ᅰᆻ-?ñ¶³’.Xn--Hmb76q74166b; 퀬-?ñ¶³’.\u0AC5󩸤۴; [P1, V5, V6]; xn---?-6g4k75207c.xn--hmb76q74166b; ; ; # 퀬-?.à«…Û´
-퀬-?񶳒.xn--hmb76q48y18505a; 퀬-?񶳒.\u200C\u0AC5󩸤۴; [C1, P1, V6]; xn---?-6g4k75207c.xn--hmb76q48y18505a; ; ; # 퀬-?.ૅ۴
-á„ᅰᆻ-?ñ¶³’.xn--hmb76q48y18505a; 퀬-?ñ¶³’.\u200C\u0AC5󩸤۴; [C1, P1, V6]; xn---?-6g4k75207c.xn--hmb76q48y18505a; ; ; # 퀬-?.à«…Û´
-á„ᅰᆻ-?ñ¶³’.XN--HMB76Q48Y18505A; 퀬-?ñ¶³’.\u200C\u0AC5󩸤۴; [C1, P1, V6]; xn---?-6g4k75207c.xn--hmb76q48y18505a; ; ; # 퀬-?.à«…Û´
-퀬-?񶳒.XN--HMB76Q48Y18505A; 퀬-?񶳒.\u200C\u0AC5󩸤۴; [C1, P1, V6]; xn---?-6g4k75207c.xn--hmb76q48y18505a; ; ; # 퀬-?.ૅ۴
-퀬-?񶳒.Xn--Hmb76q48y18505a; 퀬-?񶳒.\u200C\u0AC5󩸤۴; [C1, P1, V6]; xn---?-6g4k75207c.xn--hmb76q48y18505a; ; ; # 퀬-?.ૅ۴
-á„ᅰᆻ-?ñ¶³’.Xn--Hmb76q48y18505a; 퀬-?ñ¶³’.\u200C\u0AC5󩸤۴; [C1, P1, V6]; xn---?-6g4k75207c.xn--hmb76q48y18505a; ; ; # 퀬-?.à«…Û´
-Ⴌ.ð¹¾ï¸’ð‘¿ðž¾„; ; [B1, P1, V6]; xn--knd.xn--y86c030a9ob6374b; ; ; # Ⴌ.ð¹¾ï¸’ð‘¿
-Ⴌ.ð¹¾ã€‚ð‘¿ðž¾„; Ⴌ.ð¹¾.ð‘¿ðž¾„; [B1, P1, V5, V6]; xn--knd.xn--2o0d.xn--q30dg029a; ; ; # Ⴌ.ð¹¾.ð‘¿
-â´Œ.ð¹¾ã€‚ð‘¿ðž¾„; â´Œ.ð¹¾.ð‘¿ðž¾„; [B1, P1, V5, V6]; xn--3kj.xn--2o0d.xn--q30dg029a; ; ; # â´Œ.ð¹¾.ð‘¿
+퀬-?񶳒.\u200C\u0AC5󩸤۴; ; [C1, V6]; xn---?-6g4k75207c.xn--hmb76q48y18505a; ; xn---?-6g4k75207c.xn--hmb76q74166b; [V5, V6] # 퀬-?.ૅ۴
+á„ᅰᆻ-?ñ¶³’.\u200C\u0AC5󩸤۴; 퀬-?ñ¶³’.\u200C\u0AC5󩸤۴; [C1, V6]; xn---?-6g4k75207c.xn--hmb76q48y18505a; ; xn---?-6g4k75207c.xn--hmb76q74166b; [V5, V6] # 퀬-?.à«…Û´
+xn---?-6g4k75207c.xn--hmb76q74166b; 퀬-?񶳒.\u0AC5󩸤۴; [V5, V6]; xn---?-6g4k75207c.xn--hmb76q74166b; ; ; # 퀬-?.ૅ۴
+xn---?-6g4k75207c.xn--hmb76q48y18505a; 퀬-?񶳒.\u200C\u0AC5󩸤۴; [C1, V6]; xn---?-6g4k75207c.xn--hmb76q48y18505a; ; ; # 퀬-?.ૅ۴
+퀬-?񶳒.xn--hmb76q74166b; 퀬-?񶳒.\u0AC5󩸤۴; [V5, V6]; xn---?-6g4k75207c.xn--hmb76q74166b; ; ; # 퀬-?.ૅ۴
+á„ᅰᆻ-?ñ¶³’.xn--hmb76q74166b; 퀬-?ñ¶³’.\u0AC5󩸤۴; [V5, V6]; xn---?-6g4k75207c.xn--hmb76q74166b; ; ; # 퀬-?.à«…Û´
+á„ᅰᆻ-?ñ¶³’.XN--HMB76Q74166B; 퀬-?ñ¶³’.\u0AC5󩸤۴; [V5, V6]; xn---?-6g4k75207c.xn--hmb76q74166b; ; ; # 퀬-?.à«…Û´
+퀬-?񶳒.XN--HMB76Q74166B; 퀬-?񶳒.\u0AC5󩸤۴; [V5, V6]; xn---?-6g4k75207c.xn--hmb76q74166b; ; ; # 퀬-?.ૅ۴
+퀬-?񶳒.Xn--Hmb76q74166b; 퀬-?񶳒.\u0AC5󩸤۴; [V5, V6]; xn---?-6g4k75207c.xn--hmb76q74166b; ; ; # 퀬-?.ૅ۴
+á„ᅰᆻ-?ñ¶³’.Xn--Hmb76q74166b; 퀬-?ñ¶³’.\u0AC5󩸤۴; [V5, V6]; xn---?-6g4k75207c.xn--hmb76q74166b; ; ; # 퀬-?.à«…Û´
+퀬-?񶳒.xn--hmb76q48y18505a; 퀬-?񶳒.\u200C\u0AC5󩸤۴; [C1, V6]; xn---?-6g4k75207c.xn--hmb76q48y18505a; ; ; # 퀬-?.ૅ۴
+á„ᅰᆻ-?ñ¶³’.xn--hmb76q48y18505a; 퀬-?ñ¶³’.\u200C\u0AC5󩸤۴; [C1, V6]; xn---?-6g4k75207c.xn--hmb76q48y18505a; ; ; # 퀬-?.à«…Û´
+á„ᅰᆻ-?ñ¶³’.XN--HMB76Q48Y18505A; 퀬-?ñ¶³’.\u200C\u0AC5󩸤۴; [C1, V6]; xn---?-6g4k75207c.xn--hmb76q48y18505a; ; ; # 퀬-?.à«…Û´
+퀬-?񶳒.XN--HMB76Q48Y18505A; 퀬-?񶳒.\u200C\u0AC5󩸤۴; [C1, V6]; xn---?-6g4k75207c.xn--hmb76q48y18505a; ; ; # 퀬-?.ૅ۴
+퀬-?񶳒.Xn--Hmb76q48y18505a; 퀬-?񶳒.\u200C\u0AC5󩸤۴; [C1, V6]; xn---?-6g4k75207c.xn--hmb76q48y18505a; ; ; # 퀬-?.ૅ۴
+á„ᅰᆻ-?ñ¶³’.Xn--Hmb76q48y18505a; 퀬-?ñ¶³’.\u200C\u0AC5󩸤۴; [C1, V6]; xn---?-6g4k75207c.xn--hmb76q48y18505a; ; ; # 퀬-?.à«…Û´
+Ⴌ.ð¹¾ï¸’ð‘¿ðž¾„; ; [B1, V6]; xn--knd.xn--y86c030a9ob6374b; ; ; # Ⴌ.ð¹¾ï¸’ð‘¿
+Ⴌ.ð¹¾ã€‚ð‘¿ðž¾„; Ⴌ.ð¹¾.ð‘¿ðž¾„; [B1, V5, V6]; xn--knd.xn--2o0d.xn--q30dg029a; ; ; # Ⴌ.ð¹¾.ð‘¿
+â´Œ.ð¹¾ã€‚ð‘¿ðž¾„; â´Œ.ð¹¾.ð‘¿ðž¾„; [B1, V5, V6]; xn--3kj.xn--2o0d.xn--q30dg029a; ; ; # â´Œ.ð¹¾.ð‘¿
xn--3kj.xn--2o0d.xn--q30dg029a; â´Œ.ð¹¾.ð‘¿ðž¾„; [B1, V5, V6]; xn--3kj.xn--2o0d.xn--q30dg029a; ; ; # â´Œ.ð¹¾.ð‘¿
xn--knd.xn--2o0d.xn--q30dg029a; Ⴌ.ð¹¾.ð‘¿ðž¾„; [B1, V5, V6]; xn--knd.xn--2o0d.xn--q30dg029a; ; ; # Ⴌ.ð¹¾.ð‘¿
-â´Œ.ð¹¾ï¸’ð‘¿ðž¾„; ; [B1, P1, V6]; xn--3kj.xn--y86c030a9ob6374b; ; ; # â´Œ.ð¹¾ï¸’ð‘¿
+â´Œ.ð¹¾ï¸’ð‘¿ðž¾„; ; [B1, V6]; xn--3kj.xn--y86c030a9ob6374b; ; ; # â´Œ.ð¹¾ï¸’ð‘¿
xn--3kj.xn--y86c030a9ob6374b; â´Œ.ð¹¾ï¸’ð‘¿ðž¾„; [B1, V6]; xn--3kj.xn--y86c030a9ob6374b; ; ; # â´Œ.ð¹¾ï¸’ð‘¿
xn--knd.xn--y86c030a9ob6374b; Ⴌ.ð¹¾ï¸’ð‘¿ðž¾„; [B1, V6]; xn--knd.xn--y86c030a9ob6374b; ; ; # Ⴌ.ð¹¾ï¸’ð‘¿
-ñ§ž¿â•ã€‚ðž©•ó ¾; ñ§ž¿â•.ðž©•ó ¾; [B3, B6, P1, V6]; xn--iyh90030d.xn--1m6hs0260c; ; ; # â•.
+ñ§ž¿â•ã€‚ðž©•ó ¾; ñ§ž¿â•.ðž©•ó ¾; [B3, B6, V6]; xn--iyh90030d.xn--1m6hs0260c; ; ; # â•.
xn--iyh90030d.xn--1m6hs0260c; ñ§ž¿â•.ðž©•ó ¾; [B3, B6, V6]; xn--iyh90030d.xn--1m6hs0260c; ; ; # â•.
\u200Dâ”®ó ‡ï¼Ž\u0C00\u0C4D\u1734\u200D; \u200Dâ”®.\u0C00\u0C4D\u1734\u200D; [C2, V5]; xn--1ug04r.xn--eoc8m432a40i; ; xn--kxh.xn--eoc8m432a; [V5] # â”®.à°€à±áœ´
\u200Dâ”®ó ‡.\u0C00\u0C4D\u1734\u200D; \u200Dâ”®.\u0C00\u0C4D\u1734\u200D; [C2, V5]; xn--1ug04r.xn--eoc8m432a40i; ; xn--kxh.xn--eoc8m432a; [V5] # â”®.à°€à±áœ´
xn--kxh.xn--eoc8m432a; â”®.\u0C00\u0C4D\u1734; [V5]; xn--kxh.xn--eoc8m432a; ; ; # â”®.à°€à±áœ´
xn--1ug04r.xn--eoc8m432a40i; \u200Dâ”®.\u0C00\u0C4D\u1734\u200D; [C2, V5]; xn--1ug04r.xn--eoc8m432a40i; ; ; # â”®.à°€à±áœ´
-򹚪。🄂; 򹚪.🄂; [P1, V6]; xn--n433d.xn--v07h; ; ; # .🄂
-򹚪。1,; 򹚪.1,; [P1, V6]; xn--n433d.1,; ; ; # .1,
-xn--n433d.1,; 򹚪.1,; [P1, V6]; xn--n433d.1,; ; ; # .1,
+򹚪。🄂; 򹚪.🄂; [V6]; xn--n433d.xn--v07h; ; ; # .🄂
+򹚪。1,; 򹚪.1,; [V6]; xn--n433d.1,; ; ; # .1,
+xn--n433d.1,; 򹚪.1,; [V6]; xn--n433d.1,; ; ; # .1,
xn--n433d.xn--v07h; 򹚪.🄂; [V6]; xn--n433d.xn--v07h; ; ; # .🄂
ð‘¨åˆ.🛦; ; [V5]; xn--rbry728b.xn--y88h; ; ; # ð‘¨åˆ.🛦
xn--rbry728b.xn--y88h; ð‘¨åˆ.🛦; [V5]; xn--rbry728b.xn--y88h; ; ; # ð‘¨åˆ.🛦
-ó Œ3。\u1BF1ðŸ’; ó Œ3.\u1BF14; [P1, V5, V6]; xn--3-ib31m.xn--4-pql; ; ; # 3.ᯱ4
-ó Œ3。\u1BF14; ó Œ3.\u1BF14; [P1, V5, V6]; xn--3-ib31m.xn--4-pql; ; ; # 3.ᯱ4
+ó Œ3。\u1BF1ðŸ’; ó Œ3.\u1BF14; [V5, V6]; xn--3-ib31m.xn--4-pql; ; ; # 3.ᯱ4
+ó Œ3。\u1BF14; ó Œ3.\u1BF14; [V5, V6]; xn--3-ib31m.xn--4-pql; ; ; # 3.ᯱ4
xn--3-ib31m.xn--4-pql; ó Œ3.\u1BF14; [V5, V6]; xn--3-ib31m.xn--4-pql; ; ; # 3.ᯱ4
-\u06876Ⴔ辘.\uFD22\u0687\u200C; \u06876Ⴔ辘.\u0635\u064A\u0687\u200C; [B2, B3, C1, P1, V6]; xn--6-gsc039eqq6k.xn--0gb6bxkx18g; ; xn--6-gsc039eqq6k.xn--0gb6bxk; [B2, B3, P1, V6] # ڇ6Ⴔ辘.صيڇ
-\u06876Ⴔ辘.\u0635\u064A\u0687\u200C; ; [B2, B3, C1, P1, V6]; xn--6-gsc039eqq6k.xn--0gb6bxkx18g; ; xn--6-gsc039eqq6k.xn--0gb6bxk; [B2, B3, P1, V6] # ڇ6Ⴔ辘.صيڇ
+\u06876Ⴔ辘.\uFD22\u0687\u200C; \u06876Ⴔ辘.\u0635\u064A\u0687\u200C; [B2, B3, C1, V6]; xn--6-gsc039eqq6k.xn--0gb6bxkx18g; ; xn--6-gsc039eqq6k.xn--0gb6bxk; [B2, B3, V6] # ڇ6Ⴔ辘.صيڇ
+\u06876Ⴔ辘.\u0635\u064A\u0687\u200C; ; [B2, B3, C1, V6]; xn--6-gsc039eqq6k.xn--0gb6bxkx18g; ; xn--6-gsc039eqq6k.xn--0gb6bxk; [B2, B3, V6] # ڇ6Ⴔ辘.صيڇ
\u06876ⴔ辘.\u0635\u064A\u0687\u200C; ; [B2, B3, C1]; xn--6-gsc2270akm6f.xn--0gb6bxkx18g; ; xn--6-gsc2270akm6f.xn--0gb6bxk; [B2, B3] # ڇ6ⴔ辘.صيڇ
xn--6-gsc2270akm6f.xn--0gb6bxk; \u06876ⴔ辘.\u0635\u064A\u0687; [B2, B3]; xn--6-gsc2270akm6f.xn--0gb6bxk; ; ; # ڇ6ⴔ辘.صيڇ
xn--6-gsc2270akm6f.xn--0gb6bxkx18g; \u06876ⴔ辘.\u0635\u064A\u0687\u200C; [B2, B3, C1]; xn--6-gsc2270akm6f.xn--0gb6bxkx18g; ; ; # ڇ6ⴔ辘.صيڇ
xn--6-gsc039eqq6k.xn--0gb6bxk; \u06876Ⴔ辘.\u0635\u064A\u0687; [B2, B3, V6]; xn--6-gsc039eqq6k.xn--0gb6bxk; ; ; # ڇ6Ⴔ辘.صيڇ
xn--6-gsc039eqq6k.xn--0gb6bxkx18g; \u06876Ⴔ辘.\u0635\u064A\u0687\u200C; [B2, B3, C1, V6]; xn--6-gsc039eqq6k.xn--0gb6bxkx18g; ; ; # ڇ6Ⴔ辘.صيڇ
\u06876ⴔ辘.\uFD22\u0687\u200C; \u06876ⴔ辘.\u0635\u064A\u0687\u200C; [B2, B3, C1]; xn--6-gsc2270akm6f.xn--0gb6bxkx18g; ; xn--6-gsc2270akm6f.xn--0gb6bxk; [B2, B3] # ڇ6ⴔ辘.صيڇ
-ó „.ð®­ðž°¬ò»«žÛ¹; .ð®­ðž°¬ò»«žÛ¹; [B2, P1, V6, X4_2]; .xn--mmb3954kd0uf1zx7f; [B2, P1, V6, A4_2]; ; # .ð®­Û¹
+ó „.ð®­ðž°¬ò»«žÛ¹; .ð®­ðž°¬ò»«žÛ¹; [B2, V6, X4_2]; .xn--mmb3954kd0uf1zx7f; [B2, V6, A4_2]; ; # .ð®­Û¹
.xn--mmb3954kd0uf1zx7f; .ð®­ðž°¬ò»«žÛ¹; [B2, V6, X4_2]; .xn--mmb3954kd0uf1zx7f; [B2, V6, A4_2]; ; # .ð®­Û¹
-\uA87D≯.򻲀򒳄; \uA87D≯.򻲀򒳄; [P1, V6]; xn--hdh8193c.xn--5z40cp629b; ; ; # ≯.
-\uA87D>\u0338.򻲀򒳄; \uA87D≯.򻲀򒳄; [P1, V6]; xn--hdh8193c.xn--5z40cp629b; ; ; # ≯.
-\uA87D≯.򻲀򒳄; ; [P1, V6]; xn--hdh8193c.xn--5z40cp629b; ; ; # ≯.
-\uA87D>\u0338.򻲀򒳄; \uA87D≯.򻲀򒳄; [P1, V6]; xn--hdh8193c.xn--5z40cp629b; ; ; # ≯.
+\uA87D≯.򻲀򒳄; \uA87D≯.򻲀򒳄; [V6]; xn--hdh8193c.xn--5z40cp629b; ; ; # ≯.
+\uA87D>\u0338.򻲀򒳄; \uA87D≯.򻲀򒳄; [V6]; xn--hdh8193c.xn--5z40cp629b; ; ; # ≯.
+\uA87D≯.򻲀򒳄; ; [V6]; xn--hdh8193c.xn--5z40cp629b; ; ; # ≯.
+\uA87D>\u0338.򻲀򒳄; \uA87D≯.򻲀򒳄; [V6]; xn--hdh8193c.xn--5z40cp629b; ; ; # ≯.
xn--hdh8193c.xn--5z40cp629b; \uA87D≯.򻲀򒳄; [V6]; xn--hdh8193c.xn--5z40cp629b; ; ; # ≯.
Ï‚áƒ\u067B.Ï‚\u0714; ; [B5, B6]; xn--3xa80l26n.xn--3xa41o; ; xn--4xa60l26n.xn--4xa21o; # Ï‚áƒÙ».Ï‚Ü”
Σá²\u067B.Σ\u0714; σáƒ\u067B.σ\u0714; [B5, B6]; xn--4xa60l26n.xn--4xa21o; ; ; # σáƒÙ».σܔ
@@ -2127,41 +2133,41 @@ xn--4xa60l26n.xn--4xa21o; σáƒ\u067B.σ\u0714; [B5, B6]; xn--4xa60l26n.xn--4xa2
xn--4xa60l26n.xn--3xa41o; σáƒ\u067B.Ï‚\u0714; [B5, B6]; xn--4xa60l26n.xn--3xa41o; ; ; # σáƒÙ».Ï‚Ü”
xn--3xa80l26n.xn--3xa41o; Ï‚áƒ\u067B.Ï‚\u0714; [B5, B6]; xn--3xa80l26n.xn--3xa41o; ; ; # Ï‚áƒÙ».Ï‚Ü”
Σáƒ\u067B.Σ\u0714; σáƒ\u067B.σ\u0714; [B5, B6]; xn--4xa60l26n.xn--4xa21o; ; ; # σáƒÙ».σܔ
-򄖚\u0748𠄯\u075F。󠛩; 򄖚\u0748𠄯\u075F.󠛩; [B1, B5, B6, P1, V6]; xn--vob0c4369twfv8b.xn--kl46e; ; ; # ݈𠄯ݟ.
-򄖚\u0748𠄯\u075F。󠛩; 򄖚\u0748𠄯\u075F.󠛩; [B1, B5, B6, P1, V6]; xn--vob0c4369twfv8b.xn--kl46e; ; ; # ݈𠄯ݟ.
+򄖚\u0748𠄯\u075F。󠛩; 򄖚\u0748𠄯\u075F.󠛩; [B1, B5, B6, V6]; xn--vob0c4369twfv8b.xn--kl46e; ; ; # ݈𠄯ݟ.
+򄖚\u0748𠄯\u075F。󠛩; 򄖚\u0748𠄯\u075F.󠛩; [B1, B5, B6, V6]; xn--vob0c4369twfv8b.xn--kl46e; ; ; # ݈𠄯ݟ.
xn--vob0c4369twfv8b.xn--kl46e; 򄖚\u0748𠄯\u075F.󠛩; [B1, B5, B6, V6]; xn--vob0c4369twfv8b.xn--kl46e; ; ; # ݈𠄯ݟ.
-󠳛.\u200D䤫≠Ⴞ; 󠳛.\u200D䤫≠Ⴞ; [C2, P1, V6]; xn--1t56e.xn--2nd159e9vb743e; ; xn--1t56e.xn--2nd141ghl2a; [P1, V6] # .䤫≠Ⴞ
-󠳛.\u200D䤫=\u0338Ⴞ; 󠳛.\u200D䤫≠Ⴞ; [C2, P1, V6]; xn--1t56e.xn--2nd159e9vb743e; ; xn--1t56e.xn--2nd141ghl2a; [P1, V6] # .䤫≠Ⴞ
-󠳛.\u200D䤫≠Ⴞ; ; [C2, P1, V6]; xn--1t56e.xn--2nd159e9vb743e; ; xn--1t56e.xn--2nd141ghl2a; [P1, V6] # .䤫≠Ⴞ
-󠳛.\u200D䤫=\u0338Ⴞ; 󠳛.\u200D䤫≠Ⴞ; [C2, P1, V6]; xn--1t56e.xn--2nd159e9vb743e; ; xn--1t56e.xn--2nd141ghl2a; [P1, V6] # .䤫≠Ⴞ
-󠳛.\u200D䤫=\u0338ⴞ; 󠳛.\u200D䤫≠ⴞ; [C2, P1, V6]; xn--1t56e.xn--1ug73gzzpwi3a; ; xn--1t56e.xn--1ch153bqvw; [P1, V6] # .䤫≠ⴞ
-󠳛.\u200D䤫≠ⴞ; ; [C2, P1, V6]; xn--1t56e.xn--1ug73gzzpwi3a; ; xn--1t56e.xn--1ch153bqvw; [P1, V6] # .䤫≠ⴞ
+󠳛.\u200D䤫≠Ⴞ; 󠳛.\u200D䤫≠Ⴞ; [C2, V6]; xn--1t56e.xn--2nd159e9vb743e; ; xn--1t56e.xn--2nd141ghl2a; [V6] # .䤫≠Ⴞ
+󠳛.\u200D䤫=\u0338Ⴞ; 󠳛.\u200D䤫≠Ⴞ; [C2, V6]; xn--1t56e.xn--2nd159e9vb743e; ; xn--1t56e.xn--2nd141ghl2a; [V6] # .䤫≠Ⴞ
+󠳛.\u200D䤫≠Ⴞ; ; [C2, V6]; xn--1t56e.xn--2nd159e9vb743e; ; xn--1t56e.xn--2nd141ghl2a; [V6] # .䤫≠Ⴞ
+󠳛.\u200D䤫=\u0338Ⴞ; 󠳛.\u200D䤫≠Ⴞ; [C2, V6]; xn--1t56e.xn--2nd159e9vb743e; ; xn--1t56e.xn--2nd141ghl2a; [V6] # .䤫≠Ⴞ
+󠳛.\u200D䤫=\u0338ⴞ; 󠳛.\u200D䤫≠ⴞ; [C2, V6]; xn--1t56e.xn--1ug73gzzpwi3a; ; xn--1t56e.xn--1ch153bqvw; [V6] # .䤫≠ⴞ
+󠳛.\u200D䤫≠ⴞ; ; [C2, V6]; xn--1t56e.xn--1ug73gzzpwi3a; ; xn--1t56e.xn--1ch153bqvw; [V6] # .䤫≠ⴞ
xn--1t56e.xn--1ch153bqvw; 󠳛.䤫≠ⴞ; [V6]; xn--1t56e.xn--1ch153bqvw; ; ; # .䤫≠ⴞ
xn--1t56e.xn--1ug73gzzpwi3a; 󠳛.\u200D䤫≠ⴞ; [C2, V6]; xn--1t56e.xn--1ug73gzzpwi3a; ; ; # .䤫≠ⴞ
xn--1t56e.xn--2nd141ghl2a; 󠳛.䤫≠Ⴞ; [V6]; xn--1t56e.xn--2nd141ghl2a; ; ; # .䤫≠Ⴞ
xn--1t56e.xn--2nd159e9vb743e; 󠳛.\u200D䤫≠Ⴞ; [C2, V6]; xn--1t56e.xn--2nd159e9vb743e; ; ; # .䤫≠Ⴞ
-󠳛.\u200D䤫=\u0338ⴞ; 󠳛.\u200D䤫≠ⴞ; [C2, P1, V6]; xn--1t56e.xn--1ug73gzzpwi3a; ; xn--1t56e.xn--1ch153bqvw; [P1, V6] # .䤫≠ⴞ
-󠳛.\u200D䤫≠ⴞ; 󠳛.\u200D䤫≠ⴞ; [C2, P1, V6]; xn--1t56e.xn--1ug73gzzpwi3a; ; xn--1t56e.xn--1ch153bqvw; [P1, V6] # .䤫≠ⴞ
+󠳛.\u200D䤫=\u0338ⴞ; 󠳛.\u200D䤫≠ⴞ; [C2, V6]; xn--1t56e.xn--1ug73gzzpwi3a; ; xn--1t56e.xn--1ch153bqvw; [V6] # .䤫≠ⴞ
+󠳛.\u200D䤫≠ⴞ; 󠳛.\u200D䤫≠ⴞ; [C2, V6]; xn--1t56e.xn--1ug73gzzpwi3a; ; xn--1t56e.xn--1ch153bqvw; [V6] # .䤫≠ⴞ
ð½˜ð‘ˆµï¼Žð¹£ðŸ•¥; ð½˜ð‘ˆµ.ð¹£ðŸ•¥; [B1, B2, B3]; xn--bv0d02c.xn--bo0dq650b; ; ; # ð½˜ð‘ˆµ.ð¹£ðŸ•¥
ð½˜ð‘ˆµ.ð¹£ðŸ•¥; ; [B1, B2, B3]; xn--bv0d02c.xn--bo0dq650b; ; ; # ð½˜ð‘ˆµ.ð¹£ðŸ•¥
xn--bv0d02c.xn--bo0dq650b; ð½˜ð‘ˆµ.ð¹£ðŸ•¥; [B1, B2, B3]; xn--bv0d02c.xn--bo0dq650b; ; ; # ð½˜ð‘ˆµ.ð¹£ðŸ•¥
-â’Šâ’ˆð‘„。9; â’Šâ’ˆð‘„.9; [P1, V6]; xn--tshd3512p.9; ; ; # â’Šâ’ˆð‘„.9
+â’Šâ’ˆð‘„。9; â’Šâ’ˆð‘„.9; [V6]; xn--tshd3512p.9; ; ; # â’Šâ’ˆð‘„.9
3.1.ð‘„。9; 3.1.ð‘„.9; [V5]; 3.1.xn--110d.9; ; ; # 3.1.ð‘„.9
3.1.xn--110d.9; 3.1.ð‘„.9; [V5]; 3.1.xn--110d.9; ; ; # 3.1.ð‘„.9
xn--tshd3512p.9; â’Šâ’ˆð‘„.9; [V6]; xn--tshd3512p.9; ; ; # â’Šâ’ˆð‘„.9
--\u200C\u2DF1≮.ð¹±ò­´4₉; -\u200C\u2DF1≮.ð¹±ò­´49; [B1, C1, P1, V3, V6]; xn----sgn20i14s.xn--49-ki3om2611f; ; xn----ngo823c.xn--49-ki3om2611f; [B1, P1, V3, V6] # -ⷱ≮.ð¹±49
--\u200C\u2DF1<\u0338.ð¹±ò­´4₉; -\u200C\u2DF1≮.ð¹±ò­´49; [B1, C1, P1, V3, V6]; xn----sgn20i14s.xn--49-ki3om2611f; ; xn----ngo823c.xn--49-ki3om2611f; [B1, P1, V3, V6] # -ⷱ≮.ð¹±49
--\u200C\u2DF1≮.ð¹±ò­´49; ; [B1, C1, P1, V3, V6]; xn----sgn20i14s.xn--49-ki3om2611f; ; xn----ngo823c.xn--49-ki3om2611f; [B1, P1, V3, V6] # -ⷱ≮.ð¹±49
--\u200C\u2DF1<\u0338.ð¹±ò­´49; -\u200C\u2DF1≮.ð¹±ò­´49; [B1, C1, P1, V3, V6]; xn----sgn20i14s.xn--49-ki3om2611f; ; xn----ngo823c.xn--49-ki3om2611f; [B1, P1, V3, V6] # -ⷱ≮.ð¹±49
+-\u200C\u2DF1≮.ð¹±ò­´4₉; -\u200C\u2DF1≮.ð¹±ò­´49; [B1, C1, V3, V6]; xn----sgn20i14s.xn--49-ki3om2611f; ; xn----ngo823c.xn--49-ki3om2611f; [B1, V3, V6] # -ⷱ≮.ð¹±49
+-\u200C\u2DF1<\u0338.ð¹±ò­´4₉; -\u200C\u2DF1≮.ð¹±ò­´49; [B1, C1, V3, V6]; xn----sgn20i14s.xn--49-ki3om2611f; ; xn----ngo823c.xn--49-ki3om2611f; [B1, V3, V6] # -ⷱ≮.ð¹±49
+-\u200C\u2DF1≮.ð¹±ò­´49; ; [B1, C1, V3, V6]; xn----sgn20i14s.xn--49-ki3om2611f; ; xn----ngo823c.xn--49-ki3om2611f; [B1, V3, V6] # -ⷱ≮.ð¹±49
+-\u200C\u2DF1<\u0338.ð¹±ò­´49; -\u200C\u2DF1≮.ð¹±ò­´49; [B1, C1, V3, V6]; xn----sgn20i14s.xn--49-ki3om2611f; ; xn----ngo823c.xn--49-ki3om2611f; [B1, V3, V6] # -ⷱ≮.ð¹±49
xn----ngo823c.xn--49-ki3om2611f; -\u2DF1≮.ð¹±ò­´49; [B1, V3, V6]; xn----ngo823c.xn--49-ki3om2611f; ; ; # -ⷱ≮.ð¹±49
xn----sgn20i14s.xn--49-ki3om2611f; -\u200C\u2DF1≮.ð¹±ò­´49; [B1, C1, V3, V6]; xn----sgn20i14s.xn--49-ki3om2611f; ; ; # -ⷱ≮.ð¹±49
--≯딾。\u0847; -≯딾.\u0847; [B1, P1, V3, V6]; xn----pgow547d.xn--5vb; ; ; # -≯딾.ࡇ
-->\u0338딾。\u0847; -≯딾.\u0847; [B1, P1, V3, V6]; xn----pgow547d.xn--5vb; ; ; # -≯딾.ࡇ
--≯딾。\u0847; -≯딾.\u0847; [B1, P1, V3, V6]; xn----pgow547d.xn--5vb; ; ; # -≯딾.ࡇ
-->\u0338딾。\u0847; -≯딾.\u0847; [B1, P1, V3, V6]; xn----pgow547d.xn--5vb; ; ; # -≯딾.ࡇ
-xn----pgow547d.xn--5vb; -≯딾.\u0847; [B1, V3, V6]; xn----pgow547d.xn--5vb; ; ; # -≯딾.ࡇ
-𑙢⒈ð¹ -。ó —\u200C; 𑙢⒈ð¹ -.ó —\u200C; [B1, C1, P1, V3, V6]; xn----dcpy090hiyg.xn--0ug23321l; ; xn----dcpy090hiyg.xn--jd46e; [B1, P1, V3, V6] # 𑙢⒈ð¹ -.
-𑙢1.ð¹ -。ó —\u200C; 𑙢1.ð¹ -.ó —\u200C; [B1, C1, P1, V3, V6]; xn--1-bf0j.xn----516i.xn--0ug23321l; ; xn--1-bf0j.xn----516i.xn--jd46e; [B1, P1, V3, V6] # 𑙢1.ð¹ -.
+-≯딾。\u0847; -≯딾.\u0847; [B1, V3]; xn----pgow547d.xn--5vb; ; ; # -≯딾.ࡇ
+->\u0338딾。\u0847; -≯딾.\u0847; [B1, V3]; xn----pgow547d.xn--5vb; ; ; # -≯딾.ࡇ
+-≯딾。\u0847; -≯딾.\u0847; [B1, V3]; xn----pgow547d.xn--5vb; ; ; # -≯딾.ࡇ
+->\u0338딾。\u0847; -≯딾.\u0847; [B1, V3]; xn----pgow547d.xn--5vb; ; ; # -≯딾.ࡇ
+xn----pgow547d.xn--5vb; -≯딾.\u0847; [B1, V3]; xn----pgow547d.xn--5vb; ; ; # -≯딾.ࡇ
+𑙢⒈ð¹ -。ó —\u200C; 𑙢⒈ð¹ -.ó —\u200C; [B1, C1, V3, V6]; xn----dcpy090hiyg.xn--0ug23321l; ; xn----dcpy090hiyg.xn--jd46e; [B1, V3, V6] # 𑙢⒈ð¹ -.
+𑙢1.ð¹ -。ó —\u200C; 𑙢1.ð¹ -.ó —\u200C; [B1, C1, V3, V6]; xn--1-bf0j.xn----516i.xn--0ug23321l; ; xn--1-bf0j.xn----516i.xn--jd46e; [B1, V3, V6] # 𑙢1.ð¹ -.
xn--1-bf0j.xn----516i.xn--jd46e; 𑙢1.ð¹ -.ó —; [B1, V3, V6]; xn--1-bf0j.xn----516i.xn--jd46e; ; ; # 𑙢1.ð¹ -.
xn--1-bf0j.xn----516i.xn--0ug23321l; 𑙢1.ð¹ -.ó —\u200C; [B1, C1, V3, V6]; xn--1-bf0j.xn----516i.xn--0ug23321l; ; ; # 𑙢1.ð¹ -.
xn----dcpy090hiyg.xn--jd46e; 𑙢⒈ð¹ -.ó —; [B1, V3, V6]; xn----dcpy090hiyg.xn--jd46e; ; ; # 𑙢⒈ð¹ -.
@@ -2169,71 +2175,71 @@ xn----dcpy090hiyg.xn--0ug23321l; 𑙢⒈ð¹ -.ó —\u200C; [B1, C1, V3, V6]; xn--
\u034A.ð¨Ž; \u034A.ð¨Ž; [V5]; xn--oua.xn--mr9c; ; ; # ÍŠ.ð¨Ž
\u034A.ð¨Ž; ; [V5]; xn--oua.xn--mr9c; ; ; # ÍŠ.ð¨Ž
xn--oua.xn--mr9c; \u034A.ð¨Ž; [V5]; xn--oua.xn--mr9c; ; ; # ÍŠ.ð¨Ž
-훉≮。\u0E34; 훉≮.\u0E34; [P1, V5, V6]; xn--gdh2512e.xn--i4c; ; ; # 훉≮.ิ
-훉<\u0338。\u0E34; 훉≮.\u0E34; [P1, V5, V6]; xn--gdh2512e.xn--i4c; ; ; # 훉≮.ิ
-훉≮。\u0E34; 훉≮.\u0E34; [P1, V5, V6]; xn--gdh2512e.xn--i4c; ; ; # 훉≮.ิ
-훉<\u0338。\u0E34; 훉≮.\u0E34; [P1, V5, V6]; xn--gdh2512e.xn--i4c; ; ; # 훉≮.ิ
-xn--gdh2512e.xn--i4c; 훉≮.\u0E34; [V5, V6]; xn--gdh2512e.xn--i4c; ; ; # 훉≮.ิ
-\u2DF7òž£‰ðŸƒ˜ï¼Žð´ˆ‡ðŸ¸\u0659𞤯; \u2DF7òž£‰ðŸƒ˜.𴈇2\u0659𞤯; [B1, B5, B6, P1, V5, V6]; xn--trj8045le6s9b.xn--2-upc23918acjsj; ; ; # ⷷ🃘.2ٙ𞤯
-\u2DF7򞣉🃘.𴈇2\u0659𞤯; ; [B1, B5, B6, P1, V5, V6]; xn--trj8045le6s9b.xn--2-upc23918acjsj; ; ; # ⷷ🃘.2ٙ𞤯
-\u2DF7òž£‰ðŸƒ˜.𴈇2\u0659ðž¤; \u2DF7òž£‰ðŸƒ˜.𴈇2\u0659𞤯; [B1, B5, B6, P1, V5, V6]; xn--trj8045le6s9b.xn--2-upc23918acjsj; ; ; # ⷷ🃘.2ٙ𞤯
+훉≮。\u0E34; 훉≮.\u0E34; [V5]; xn--gdh2512e.xn--i4c; ; ; # 훉≮.ิ
+훉<\u0338。\u0E34; 훉≮.\u0E34; [V5]; xn--gdh2512e.xn--i4c; ; ; # 훉≮.ิ
+훉≮。\u0E34; 훉≮.\u0E34; [V5]; xn--gdh2512e.xn--i4c; ; ; # 훉≮.ิ
+훉<\u0338。\u0E34; 훉≮.\u0E34; [V5]; xn--gdh2512e.xn--i4c; ; ; # 훉≮.ิ
+xn--gdh2512e.xn--i4c; 훉≮.\u0E34; [V5]; xn--gdh2512e.xn--i4c; ; ; # 훉≮.ิ
+\u2DF7òž£‰ðŸƒ˜ï¼Žð´ˆ‡ðŸ¸\u0659𞤯; \u2DF7òž£‰ðŸƒ˜.𴈇2\u0659𞤯; [B1, B5, B6, V5, V6]; xn--trj8045le6s9b.xn--2-upc23918acjsj; ; ; # ⷷ🃘.2ٙ𞤯
+\u2DF7򞣉🃘.𴈇2\u0659𞤯; ; [B1, B5, B6, V5, V6]; xn--trj8045le6s9b.xn--2-upc23918acjsj; ; ; # ⷷ🃘.2ٙ𞤯
+\u2DF7òž£‰ðŸƒ˜.𴈇2\u0659ðž¤; \u2DF7òž£‰ðŸƒ˜.𴈇2\u0659𞤯; [B1, B5, B6, V5, V6]; xn--trj8045le6s9b.xn--2-upc23918acjsj; ; ; # ⷷ🃘.2ٙ𞤯
xn--trj8045le6s9b.xn--2-upc23918acjsj; \u2DF7򞣉🃘.𴈇2\u0659𞤯; [B1, B5, B6, V5, V6]; xn--trj8045le6s9b.xn--2-upc23918acjsj; ; ; # ⷷ🃘.2ٙ𞤯
-\u2DF7òž£‰ðŸƒ˜ï¼Žð´ˆ‡ðŸ¸\u0659ðž¤; \u2DF7òž£‰ðŸƒ˜.𴈇2\u0659𞤯; [B1, B5, B6, P1, V5, V6]; xn--trj8045le6s9b.xn--2-upc23918acjsj; ; ; # ⷷ🃘.2ٙ𞤯
-󗇩ßᢞ\u200C。\u0660𞷻\uFCD4-; 󗇩ßᢞ\u200C.\u0660𞷻\u0646\u062E-; [B1, B6, C1, P1, V3, V6]; xn--zca272jbif10059a.xn----dnc5e1er384z; ; xn--ss-jepz4596r.xn----dnc5e1er384z; [B1, P1, V3, V6] # ßᢞ.٠نخ-
-󗇩ßᢞ\u200C。\u0660𞷻\u0646\u062E-; 󗇩ßᢞ\u200C.\u0660𞷻\u0646\u062E-; [B1, B6, C1, P1, V3, V6]; xn--zca272jbif10059a.xn----dnc5e1er384z; ; xn--ss-jepz4596r.xn----dnc5e1er384z; [B1, P1, V3, V6] # ßᢞ.٠نخ-
-󗇩SSᢞ\u200C。\u0660𞷻\u0646\u062E-; 󗇩ssᢞ\u200C.\u0660𞷻\u0646\u062E-; [B1, B6, C1, P1, V3, V6]; xn--ss-jep006bqt765b.xn----dnc5e1er384z; ; xn--ss-jepz4596r.xn----dnc5e1er384z; [B1, P1, V3, V6] # ssᢞ.٠نخ-
-󗇩ssᢞ\u200C。\u0660𞷻\u0646\u062E-; 󗇩ssᢞ\u200C.\u0660𞷻\u0646\u062E-; [B1, B6, C1, P1, V3, V6]; xn--ss-jep006bqt765b.xn----dnc5e1er384z; ; xn--ss-jepz4596r.xn----dnc5e1er384z; [B1, P1, V3, V6] # ssᢞ.٠نخ-
-󗇩Ssᢞ\u200C。\u0660𞷻\u0646\u062E-; 󗇩ssᢞ\u200C.\u0660𞷻\u0646\u062E-; [B1, B6, C1, P1, V3, V6]; xn--ss-jep006bqt765b.xn----dnc5e1er384z; ; xn--ss-jepz4596r.xn----dnc5e1er384z; [B1, P1, V3, V6] # ssᢞ.٠نخ-
+\u2DF7òž£‰ðŸƒ˜ï¼Žð´ˆ‡ðŸ¸\u0659ðž¤; \u2DF7òž£‰ðŸƒ˜.𴈇2\u0659𞤯; [B1, B5, B6, V5, V6]; xn--trj8045le6s9b.xn--2-upc23918acjsj; ; ; # ⷷ🃘.2ٙ𞤯
+󗇩ßᢞ\u200C。\u0660𞷻\uFCD4-; 󗇩ßᢞ\u200C.\u0660𞷻\u0646\u062E-; [B1, B6, C1, V3, V6]; xn--zca272jbif10059a.xn----dnc5e1er384z; ; xn--ss-jepz4596r.xn----dnc5e1er384z; [B1, V3, V6] # ßᢞ.٠نخ-
+󗇩ßᢞ\u200C。\u0660𞷻\u0646\u062E-; 󗇩ßᢞ\u200C.\u0660𞷻\u0646\u062E-; [B1, B6, C1, V3, V6]; xn--zca272jbif10059a.xn----dnc5e1er384z; ; xn--ss-jepz4596r.xn----dnc5e1er384z; [B1, V3, V6] # ßᢞ.٠نخ-
+󗇩SSᢞ\u200C。\u0660𞷻\u0646\u062E-; 󗇩ssᢞ\u200C.\u0660𞷻\u0646\u062E-; [B1, B6, C1, V3, V6]; xn--ss-jep006bqt765b.xn----dnc5e1er384z; ; xn--ss-jepz4596r.xn----dnc5e1er384z; [B1, V3, V6] # ssᢞ.٠نخ-
+󗇩ssᢞ\u200C。\u0660𞷻\u0646\u062E-; 󗇩ssᢞ\u200C.\u0660𞷻\u0646\u062E-; [B1, B6, C1, V3, V6]; xn--ss-jep006bqt765b.xn----dnc5e1er384z; ; xn--ss-jepz4596r.xn----dnc5e1er384z; [B1, V3, V6] # ssᢞ.٠نخ-
+󗇩Ssᢞ\u200C。\u0660𞷻\u0646\u062E-; 󗇩ssᢞ\u200C.\u0660𞷻\u0646\u062E-; [B1, B6, C1, V3, V6]; xn--ss-jep006bqt765b.xn----dnc5e1er384z; ; xn--ss-jepz4596r.xn----dnc5e1er384z; [B1, V3, V6] # ssᢞ.٠نخ-
xn--ss-jepz4596r.xn----dnc5e1er384z; 󗇩ssᢞ.\u0660𞷻\u0646\u062E-; [B1, V3, V6]; xn--ss-jepz4596r.xn----dnc5e1er384z; ; ; # ssᢞ.٠نخ-
xn--ss-jep006bqt765b.xn----dnc5e1er384z; 󗇩ssᢞ\u200C.\u0660𞷻\u0646\u062E-; [B1, B6, C1, V3, V6]; xn--ss-jep006bqt765b.xn----dnc5e1er384z; ; ; # ssᢞ.٠نخ-
xn--zca272jbif10059a.xn----dnc5e1er384z; 󗇩ßᢞ\u200C.\u0660𞷻\u0646\u062E-; [B1, B6, C1, V3, V6]; xn--zca272jbif10059a.xn----dnc5e1er384z; ; ; # ßᢞ.٠نخ-
-󗇩SSᢞ\u200C。\u0660𞷻\uFCD4-; 󗇩ssᢞ\u200C.\u0660𞷻\u0646\u062E-; [B1, B6, C1, P1, V3, V6]; xn--ss-jep006bqt765b.xn----dnc5e1er384z; ; xn--ss-jepz4596r.xn----dnc5e1er384z; [B1, P1, V3, V6] # ssᢞ.٠نخ-
-󗇩ssᢞ\u200C。\u0660𞷻\uFCD4-; 󗇩ssᢞ\u200C.\u0660𞷻\u0646\u062E-; [B1, B6, C1, P1, V3, V6]; xn--ss-jep006bqt765b.xn----dnc5e1er384z; ; xn--ss-jepz4596r.xn----dnc5e1er384z; [B1, P1, V3, V6] # ssᢞ.٠نخ-
-󗇩Ssᢞ\u200C。\u0660𞷻\uFCD4-; 󗇩ssᢞ\u200C.\u0660𞷻\u0646\u062E-; [B1, B6, C1, P1, V3, V6]; xn--ss-jep006bqt765b.xn----dnc5e1er384z; ; xn--ss-jepz4596r.xn----dnc5e1er384z; [B1, P1, V3, V6] # ssᢞ.٠نخ-
-ꡆ。Ↄ\u0FB5놮-; ꡆ.Ↄ\u0FB5놮-; [P1, V3, V6]; xn--fc9a.xn----qmg787k869k; ; ; # ꡆ.Ↄྵ놮-
-ꡆ。Ↄ\u0FB5á„‚á…ªá‡-; ꡆ.Ↄ\u0FB5놮-; [P1, V3, V6]; xn--fc9a.xn----qmg787k869k; ; ; # ꡆ.Ↄྵ놮-
+󗇩SSᢞ\u200C。\u0660𞷻\uFCD4-; 󗇩ssᢞ\u200C.\u0660𞷻\u0646\u062E-; [B1, B6, C1, V3, V6]; xn--ss-jep006bqt765b.xn----dnc5e1er384z; ; xn--ss-jepz4596r.xn----dnc5e1er384z; [B1, V3, V6] # ssᢞ.٠نخ-
+󗇩ssᢞ\u200C。\u0660𞷻\uFCD4-; 󗇩ssᢞ\u200C.\u0660𞷻\u0646\u062E-; [B1, B6, C1, V3, V6]; xn--ss-jep006bqt765b.xn----dnc5e1er384z; ; xn--ss-jepz4596r.xn----dnc5e1er384z; [B1, V3, V6] # ssᢞ.٠نخ-
+󗇩Ssᢞ\u200C。\u0660𞷻\uFCD4-; 󗇩ssᢞ\u200C.\u0660𞷻\u0646\u062E-; [B1, B6, C1, V3, V6]; xn--ss-jep006bqt765b.xn----dnc5e1er384z; ; xn--ss-jepz4596r.xn----dnc5e1er384z; [B1, V3, V6] # ssᢞ.٠نخ-
+ꡆ。Ↄ\u0FB5놮-; ꡆ.Ↄ\u0FB5놮-; [V3, V6]; xn--fc9a.xn----qmg787k869k; ; ; # ꡆ.Ↄྵ놮-
+ꡆ。Ↄ\u0FB5á„‚á…ªá‡-; ꡆ.Ↄ\u0FB5놮-; [V3, V6]; xn--fc9a.xn----qmg787k869k; ; ; # ꡆ.Ↄྵ놮-
ꡆ。ↄ\u0FB5á„‚á…ªá‡-; ꡆ.ↄ\u0FB5놮-; [V3]; xn--fc9a.xn----qmg097k469k; ; ; # ꡆ.ↄྵ놮-
ꡆ。ↄ\u0FB5놮-; ꡆ.ↄ\u0FB5놮-; [V3]; xn--fc9a.xn----qmg097k469k; ; ; # ꡆ.ↄྵ놮-
xn--fc9a.xn----qmg097k469k; ꡆ.ↄ\u0FB5놮-; [V3]; xn--fc9a.xn----qmg097k469k; ; ; # ꡆ.ↄྵ놮-
xn--fc9a.xn----qmg787k869k; ꡆ.Ↄ\u0FB5놮-; [V3, V6]; xn--fc9a.xn----qmg787k869k; ; ; # ꡆ.Ↄྵ놮-
-\uFDAD\u200D.񥰌\u06A9; \u0644\u0645\u064A\u200D.񥰌\u06A9; [B3, B5, B6, C2, P1, V6]; xn--ghbcp494x.xn--ckb36214f; ; xn--ghbcp.xn--ckb36214f; [B5, B6, P1, V6] # لمي.ک
-\u0644\u0645\u064A\u200D.񥰌\u06A9; ; [B3, B5, B6, C2, P1, V6]; xn--ghbcp494x.xn--ckb36214f; ; xn--ghbcp.xn--ckb36214f; [B5, B6, P1, V6] # لمي.ک
+\uFDAD\u200D.񥰌\u06A9; \u0644\u0645\u064A\u200D.񥰌\u06A9; [B3, B5, B6, C2, V6]; xn--ghbcp494x.xn--ckb36214f; ; xn--ghbcp.xn--ckb36214f; [B5, B6, V6] # لمي.ک
+\u0644\u0645\u064A\u200D.񥰌\u06A9; ; [B3, B5, B6, C2, V6]; xn--ghbcp494x.xn--ckb36214f; ; xn--ghbcp.xn--ckb36214f; [B5, B6, V6] # لمي.ک
xn--ghbcp.xn--ckb36214f; \u0644\u0645\u064A.񥰌\u06A9; [B5, B6, V6]; xn--ghbcp.xn--ckb36214f; ; ; # لمي.ک
xn--ghbcp494x.xn--ckb36214f; \u0644\u0645\u064A\u200D.񥰌\u06A9; [B3, B5, B6, C2, V6]; xn--ghbcp494x.xn--ckb36214f; ; ; # لمي.ک
-Ⴜ\u1C2Fð³’≯。\u06E0\u1732\u0FBA; Ⴜ\u1C2Fð³’≯.\u06E0\u1732\u0FBA; [B1, B3, B5, B6, P1, V5, V6]; xn--0nd679cf3eq67y.xn--wlb646b4ng; ; ; # Ⴜᰯð³’≯.۠ᜲྺ
-Ⴜ\u1C2Fð³’>\u0338。\u06E0\u1732\u0FBA; Ⴜ\u1C2Fð³’≯.\u06E0\u1732\u0FBA; [B1, B3, B5, B6, P1, V5, V6]; xn--0nd679cf3eq67y.xn--wlb646b4ng; ; ; # Ⴜᰯð³’≯.۠ᜲྺ
-â´œ\u1C2Fð³’>\u0338。\u06E0\u1732\u0FBA; â´œ\u1C2Fð³’≯.\u06E0\u1732\u0FBA; [B1, B3, B5, B6, P1, V5, V6]; xn--r1f68xh1jgv7u.xn--wlb646b4ng; ; ; # ⴜᰯð³’≯.۠ᜲྺ
-â´œ\u1C2Fð³’≯。\u06E0\u1732\u0FBA; â´œ\u1C2Fð³’≯.\u06E0\u1732\u0FBA; [B1, B3, B5, B6, P1, V5, V6]; xn--r1f68xh1jgv7u.xn--wlb646b4ng; ; ; # ⴜᰯð³’≯.۠ᜲྺ
-Ⴜ\u1C2Fð²’≯。\u06E0\u1732\u0FBA; Ⴜ\u1C2Fð³’≯.\u06E0\u1732\u0FBA; [B1, B3, B5, B6, P1, V5, V6]; xn--0nd679cf3eq67y.xn--wlb646b4ng; ; ; # Ⴜᰯð³’≯.۠ᜲྺ
-Ⴜ\u1C2Fð²’>\u0338。\u06E0\u1732\u0FBA; Ⴜ\u1C2Fð³’≯.\u06E0\u1732\u0FBA; [B1, B3, B5, B6, P1, V5, V6]; xn--0nd679cf3eq67y.xn--wlb646b4ng; ; ; # Ⴜᰯð³’≯.۠ᜲྺ
-xn--0nd679cf3eq67y.xn--wlb646b4ng; Ⴜ\u1C2Fð³’≯.\u06E0\u1732\u0FBA; [B1, B3, B5, B6, V5, V6]; xn--0nd679cf3eq67y.xn--wlb646b4ng; ; ; # Ⴜᰯð³’≯.۠ᜲྺ
-xn--r1f68xh1jgv7u.xn--wlb646b4ng; â´œ\u1C2Fð³’≯.\u06E0\u1732\u0FBA; [B1, B3, B5, B6, V5, V6]; xn--r1f68xh1jgv7u.xn--wlb646b4ng; ; ; # ⴜᰯð³’≯.۠ᜲྺ
+Ⴜ\u1C2Fð³’≯。\u06E0\u1732\u0FBA; Ⴜ\u1C2Fð³’≯.\u06E0\u1732\u0FBA; [B1, B5, B6, V5, V6]; xn--0nd679cf3eq67y.xn--wlb646b4ng; ; ; # Ⴜᰯð³’≯.۠ᜲྺ
+Ⴜ\u1C2Fð³’>\u0338。\u06E0\u1732\u0FBA; Ⴜ\u1C2Fð³’≯.\u06E0\u1732\u0FBA; [B1, B5, B6, V5, V6]; xn--0nd679cf3eq67y.xn--wlb646b4ng; ; ; # Ⴜᰯð³’≯.۠ᜲྺ
+â´œ\u1C2Fð³’>\u0338。\u06E0\u1732\u0FBA; â´œ\u1C2Fð³’≯.\u06E0\u1732\u0FBA; [B1, B5, B6, V5]; xn--r1f68xh1jgv7u.xn--wlb646b4ng; ; ; # ⴜᰯð³’≯.۠ᜲྺ
+â´œ\u1C2Fð³’≯。\u06E0\u1732\u0FBA; â´œ\u1C2Fð³’≯.\u06E0\u1732\u0FBA; [B1, B5, B6, V5]; xn--r1f68xh1jgv7u.xn--wlb646b4ng; ; ; # ⴜᰯð³’≯.۠ᜲྺ
+Ⴜ\u1C2Fð²’≯。\u06E0\u1732\u0FBA; Ⴜ\u1C2Fð³’≯.\u06E0\u1732\u0FBA; [B1, B5, B6, V5, V6]; xn--0nd679cf3eq67y.xn--wlb646b4ng; ; ; # Ⴜᰯð³’≯.۠ᜲྺ
+Ⴜ\u1C2Fð²’>\u0338。\u06E0\u1732\u0FBA; Ⴜ\u1C2Fð³’≯.\u06E0\u1732\u0FBA; [B1, B5, B6, V5, V6]; xn--0nd679cf3eq67y.xn--wlb646b4ng; ; ; # Ⴜᰯð³’≯.۠ᜲྺ
+xn--0nd679cf3eq67y.xn--wlb646b4ng; Ⴜ\u1C2Fð³’≯.\u06E0\u1732\u0FBA; [B1, B5, B6, V5, V6]; xn--0nd679cf3eq67y.xn--wlb646b4ng; ; ; # Ⴜᰯð³’≯.۠ᜲྺ
+xn--r1f68xh1jgv7u.xn--wlb646b4ng; â´œ\u1C2Fð³’≯.\u06E0\u1732\u0FBA; [B1, B5, B6, V5]; xn--r1f68xh1jgv7u.xn--wlb646b4ng; ; ; # ⴜᰯð³’≯.۠ᜲྺ
ð‹µã€‚\uFCEC; ð‹µ.\u0643\u0645; [B1]; xn--p97c.xn--fhbe; ; ; # ð‹µ.كم
ð‹µã€‚\u0643\u0645; ð‹µ.\u0643\u0645; [B1]; xn--p97c.xn--fhbe; ; ; # ð‹µ.كم
xn--p97c.xn--fhbe; ð‹µ.\u0643\u0645; [B1]; xn--p97c.xn--fhbe; ; ; # ð‹µ.كم
ð‹µ.\u0643\u0645; ; [B1]; xn--p97c.xn--fhbe; ; ; # ð‹µ.كم
-≮ð…¶ï¼Žñ±²\uAAEC⹈󰥭; ≮ð…¶.ñ±²\uAAEC⹈󰥭; [P1, V6]; xn--gdh0880o.xn--4tjx101bsg00ds9pyc; ; ; # ≮.ꫬ⹈
-<\u0338ð…¶ï¼Žñ±²\uAAEC⹈󰥭; ≮ð…¶.ñ±²\uAAEC⹈󰥭; [P1, V6]; xn--gdh0880o.xn--4tjx101bsg00ds9pyc; ; ; # ≮.ꫬ⹈
-≮ð…¶.ñ±²\uAAEC⹈󰥭; ; [P1, V6]; xn--gdh0880o.xn--4tjx101bsg00ds9pyc; ; ; # ≮.ꫬ⹈
-<\u0338ð…¶.ñ±²\uAAEC⹈󰥭; ≮ð…¶.ñ±²\uAAEC⹈󰥭; [P1, V6]; xn--gdh0880o.xn--4tjx101bsg00ds9pyc; ; ; # ≮.ꫬ⹈
+≮ð…¶ï¼Žñ±²\uAAEC⹈󰥭; ≮ð…¶.ñ±²\uAAEC⹈󰥭; [V6]; xn--gdh0880o.xn--4tjx101bsg00ds9pyc; ; ; # ≮.ꫬ⹈
+<\u0338ð…¶ï¼Žñ±²\uAAEC⹈󰥭; ≮ð…¶.ñ±²\uAAEC⹈󰥭; [V6]; xn--gdh0880o.xn--4tjx101bsg00ds9pyc; ; ; # ≮.ꫬ⹈
+≮ð…¶.ñ±²\uAAEC⹈󰥭; ; [V6]; xn--gdh0880o.xn--4tjx101bsg00ds9pyc; ; ; # ≮.ꫬ⹈
+<\u0338ð…¶.ñ±²\uAAEC⹈󰥭; ≮ð…¶.ñ±²\uAAEC⹈󰥭; [V6]; xn--gdh0880o.xn--4tjx101bsg00ds9pyc; ; ; # ≮.ꫬ⹈
xn--gdh0880o.xn--4tjx101bsg00ds9pyc; ≮ð…¶.ñ±²\uAAEC⹈󰥭; [V6]; xn--gdh0880o.xn--4tjx101bsg00ds9pyc; ; ; # ≮.ꫬ⹈
-\u2DF0\u0358ᢕ.\u0361ð¹·ó ´; \u2DF0\u0358ᢕ.\u0361ð¹·ó ´; [B1, P1, V5, V6]; xn--2ua889htsp.xn--cva2687k2tv0g; ; ; # ⷰ͘ᢕ.Í¡ð¹·
-\u2DF0\u0358ᢕ.\u0361ð¹·ó ´; ; [B1, P1, V5, V6]; xn--2ua889htsp.xn--cva2687k2tv0g; ; ; # ⷰ͘ᢕ.Í¡ð¹·
+\u2DF0\u0358ᢕ.\u0361ð¹·ó ´; \u2DF0\u0358ᢕ.\u0361ð¹·ó ´; [B1, V5, V6]; xn--2ua889htsp.xn--cva2687k2tv0g; ; ; # ⷰ͘ᢕ.Í¡ð¹·
+\u2DF0\u0358ᢕ.\u0361ð¹·ó ´; ; [B1, V5, V6]; xn--2ua889htsp.xn--cva2687k2tv0g; ; ; # ⷰ͘ᢕ.Í¡ð¹·
xn--2ua889htsp.xn--cva2687k2tv0g; \u2DF0\u0358ᢕ.\u0361ð¹·ó ´; [B1, V5, V6]; xn--2ua889htsp.xn--cva2687k2tv0g; ; ; # ⷰ͘ᢕ.Í¡ð¹·
-\uFD79á¡\u200C\u06AD.𑋪\u05C7; \u063A\u0645\u0645á¡\u200C\u06AD.𑋪\u05C7; [B1, B2, B3, B6, V5]; xn--5gbwa03bg24eptk.xn--vdb1198k; ; xn--5gbwa03bg24e.xn--vdb1198k; # غممá¡Ú­.𑋪ׇ
-\u063A\u0645\u0645á¡\u200C\u06AD.𑋪\u05C7; ; [B1, B2, B3, B6, V5]; xn--5gbwa03bg24eptk.xn--vdb1198k; ; xn--5gbwa03bg24e.xn--vdb1198k; # غممá¡Ú­.𑋪ׇ
-xn--5gbwa03bg24e.xn--vdb1198k; \u063A\u0645\u0645á¡\u06AD.𑋪\u05C7; [B1, B2, B3, B6, V5]; xn--5gbwa03bg24e.xn--vdb1198k; ; ; # غممá¡Ú­.𑋪ׇ
-xn--5gbwa03bg24eptk.xn--vdb1198k; \u063A\u0645\u0645á¡\u200C\u06AD.𑋪\u05C7; [B1, B2, B3, B6, V5]; xn--5gbwa03bg24eptk.xn--vdb1198k; ; ; # غممá¡Ú­.𑋪ׇ
-𑑂。\u200D󥞀🞕ò¥”; ð‘‘‚.\u200D󥞀🞕ò¥”; [C2, P1, V5, V6]; xn--8v1d.xn--1ug1386plvx1cd8vya; ; xn--8v1d.xn--ye9h41035a2qqs; [P1, V5, V6] # ð‘‘‚.🞕
-𑑂。\u200D󥞀🞕ò¥”; ð‘‘‚.\u200D󥞀🞕ò¥”; [C2, P1, V5, V6]; xn--8v1d.xn--1ug1386plvx1cd8vya; ; xn--8v1d.xn--ye9h41035a2qqs; [P1, V5, V6] # ð‘‘‚.🞕
+\uFD79á¡\u200C\u06AD.𑋪\u05C7; \u063A\u0645\u0645á¡\u200C\u06AD.𑋪\u05C7; [B1, B2, V5]; xn--5gbwa03bg24eptk.xn--vdb1198k; ; xn--5gbwa03bg24e.xn--vdb1198k; # غممá¡Ú­.𑋪ׇ
+\u063A\u0645\u0645á¡\u200C\u06AD.𑋪\u05C7; ; [B1, B2, V5]; xn--5gbwa03bg24eptk.xn--vdb1198k; ; xn--5gbwa03bg24e.xn--vdb1198k; # غممá¡Ú­.𑋪ׇ
+xn--5gbwa03bg24e.xn--vdb1198k; \u063A\u0645\u0645á¡\u06AD.𑋪\u05C7; [B1, B2, V5]; xn--5gbwa03bg24e.xn--vdb1198k; ; ; # غممá¡Ú­.𑋪ׇ
+xn--5gbwa03bg24eptk.xn--vdb1198k; \u063A\u0645\u0645á¡\u200C\u06AD.𑋪\u05C7; [B1, B2, V5]; xn--5gbwa03bg24eptk.xn--vdb1198k; ; ; # غممá¡Ú­.𑋪ׇ
+𑑂。\u200D󥞀🞕ò¥”; ð‘‘‚.\u200D󥞀🞕ò¥”; [C2, V5, V6]; xn--8v1d.xn--1ug1386plvx1cd8vya; ; xn--8v1d.xn--ye9h41035a2qqs; [V5, V6] # ð‘‘‚.🞕
+𑑂。\u200D󥞀🞕ò¥”; ð‘‘‚.\u200D󥞀🞕ò¥”; [C2, V5, V6]; xn--8v1d.xn--1ug1386plvx1cd8vya; ; xn--8v1d.xn--ye9h41035a2qqs; [V5, V6] # ð‘‘‚.🞕
xn--8v1d.xn--ye9h41035a2qqs; ð‘‘‚.󥞀🞕ò¥”; [V5, V6]; xn--8v1d.xn--ye9h41035a2qqs; ; ; # ð‘‘‚.🞕
xn--8v1d.xn--1ug1386plvx1cd8vya; ð‘‘‚.\u200D󥞀🞕ò¥”; [C2, V5, V6]; xn--8v1d.xn--1ug1386plvx1cd8vya; ; ; # ð‘‘‚.🞕
--\u05E9。⒚; -\u05E9.⒚; [B1, P1, V3, V6]; xn----gjc.xn--cth; ; ; # -ש.⒚
+-\u05E9。⒚; -\u05E9.⒚; [B1, V3, V6]; xn----gjc.xn--cth; ; ; # -ש.⒚
-\u05E9。19.; -\u05E9.19.; [B1, V3]; xn----gjc.19.; ; ; # -ש.19.
xn----gjc.19.; -\u05E9.19.; [B1, V3]; xn----gjc.19.; ; ; # -ש.19.
xn----gjc.xn--cth; -\u05E9.⒚; [B1, V3, V6]; xn----gjc.xn--cth; ; ; # -ש.⒚
-􊾻\u0845\u200C。ᢎ\u200D; 􊾻\u0845\u200C.ᢎ\u200D; [B5, B6, C1, C2, P1, V6]; xn--3vb882jz4411a.xn--79e259a; ; xn--3vb50049s.xn--79e; [B5, B6, P1, V6] # ࡅ.ᢎ
-􊾻\u0845\u200C。ᢎ\u200D; 􊾻\u0845\u200C.ᢎ\u200D; [B5, B6, C1, C2, P1, V6]; xn--3vb882jz4411a.xn--79e259a; ; xn--3vb50049s.xn--79e; [B5, B6, P1, V6] # ࡅ.ᢎ
+􊾻\u0845\u200C。ᢎ\u200D; 􊾻\u0845\u200C.ᢎ\u200D; [B5, B6, C1, C2, V6]; xn--3vb882jz4411a.xn--79e259a; ; xn--3vb50049s.xn--79e; [B5, B6, V6] # ࡅ.ᢎ
+􊾻\u0845\u200C。ᢎ\u200D; 􊾻\u0845\u200C.ᢎ\u200D; [B5, B6, C1, C2, V6]; xn--3vb882jz4411a.xn--79e259a; ; xn--3vb50049s.xn--79e; [B5, B6, V6] # ࡅ.ᢎ
xn--3vb50049s.xn--79e; 􊾻\u0845.ᢎ; [B5, B6, V6]; xn--3vb50049s.xn--79e; ; ; # ࡅ.ᢎ
xn--3vb882jz4411a.xn--79e259a; 􊾻\u0845\u200C.ᢎ\u200D; [B5, B6, C1, C2, V6]; xn--3vb882jz4411a.xn--79e259a; ; ; # ࡅ.ᢎ
ß\u09C1\u1DED。\u06208â‚…; ß\u09C1\u1DED.\u062085; ; xn--zca266bwrr.xn--85-psd; ; xn--ss-e2f077r.xn--85-psd; # ßà§á·­.Ø 85
@@ -2260,232 +2266,238 @@ xn--1-0xb049b102o.xn--3-qfa7018r; \u0ACD\u0484é­…1.3ð¹¥ÃŸ; [B1, V5]; xn--1-0xb0
\u0ACD\u0484é­…ðŸ£ï¼Žâ‚ƒð¹¥SS; \u0ACD\u0484é­…1.3ð¹¥ss; [B1, V5]; xn--1-0xb049b102o.xn--3ss-nv9t; ; ; # à«Ò„é­…1.3ð¹¥ss
\u0ACD\u0484é­…ðŸ£ï¼Žâ‚ƒð¹¥ss; \u0ACD\u0484é­…1.3ð¹¥ss; [B1, V5]; xn--1-0xb049b102o.xn--3ss-nv9t; ; ; # à«Ò„é­…1.3ð¹¥ss
\u0ACD\u0484é­…ðŸ£ï¼Žâ‚ƒð¹¥Ss; \u0ACD\u0484é­…1.3ð¹¥ss; [B1, V5]; xn--1-0xb049b102o.xn--3ss-nv9t; ; ; # à«Ò„é­…1.3ð¹¥ss
-\u072B。𑓂⒈𑜫󠿻; \u072B.𑓂⒈𑜫󠿻; [B1, P1, V5, V6]; xn--1nb.xn--tsh7798f6rbrt828c; ; ; # ܫ.𑓂⒈𑜫
-\u072B。𑓂1.𑜫󠿻; \u072B.𑓂1.𑜫󠿻; [B1, P1, V5, V6]; xn--1nb.xn--1-jq9i.xn--ji2dg9877c; ; ; # ܫ.𑓂1.𑜫
+\u072B。𑓂⒈𑜫󠿻; \u072B.𑓂⒈𑜫󠿻; [B1, V5, V6]; xn--1nb.xn--tsh7798f6rbrt828c; ; ; # ܫ.𑓂⒈𑜫
+\u072B。𑓂1.𑜫󠿻; \u072B.𑓂1.𑜫󠿻; [B1, V5, V6]; xn--1nb.xn--1-jq9i.xn--ji2dg9877c; ; ; # ܫ.𑓂1.𑜫
xn--1nb.xn--1-jq9i.xn--ji2dg9877c; \u072B.𑓂1.𑜫󠿻; [B1, V5, V6]; xn--1nb.xn--1-jq9i.xn--ji2dg9877c; ; ; # ܫ.𑓂1.𑜫
xn--1nb.xn--tsh7798f6rbrt828c; \u072B.𑓂⒈𑜫󠿻; [B1, V5, V6]; xn--1nb.xn--tsh7798f6rbrt828c; ; ; # ܫ.𑓂⒈𑜫
\uFE0Dછ。嵨; છ.嵨; ; xn--6dc.xn--tot; ; ; # છ.嵨
xn--6dc.xn--tot; છ.嵨; ; xn--6dc.xn--tot; ; ; # છ.嵨
છ.嵨; ; ; xn--6dc.xn--tot; ; ; # છ.嵨
-Ⴔ≠Ⴀ.ð¹¥ð¹°; ; [B1, P1, V6]; xn--7md3b171g.xn--do0dwa; ; ; # Ⴔ≠Ⴀ.ð¹¥ð¹°
-á‚´=\u0338á‚ .ð¹¥ð¹°; Ⴔ≠Ⴀ.ð¹¥ð¹°; [B1, P1, V6]; xn--7md3b171g.xn--do0dwa; ; ; # Ⴔ≠Ⴀ.ð¹¥ð¹°
-â´”=\u0338â´€.ð¹¥ð¹°; ⴔ≠ⴀ.ð¹¥ð¹°; [B1, P1, V6]; xn--1ch603bxb.xn--do0dwa; ; ; # ⴔ≠ⴀ.ð¹¥ð¹°
-ⴔ≠ⴀ.ð¹¥ð¹°; ; [B1, P1, V6]; xn--1ch603bxb.xn--do0dwa; ; ; # ⴔ≠ⴀ.ð¹¥ð¹°
-xn--1ch603bxb.xn--do0dwa; ⴔ≠ⴀ.ð¹¥ð¹°; [B1, V6]; xn--1ch603bxb.xn--do0dwa; ; ; # ⴔ≠ⴀ.ð¹¥ð¹°
+Ⴔ≠Ⴀ.ð¹¥ð¹°; ; [B1, V6]; xn--7md3b171g.xn--do0dwa; ; ; # Ⴔ≠Ⴀ.ð¹¥ð¹°
+á‚´=\u0338á‚ .ð¹¥ð¹°; Ⴔ≠Ⴀ.ð¹¥ð¹°; [B1, V6]; xn--7md3b171g.xn--do0dwa; ; ; # Ⴔ≠Ⴀ.ð¹¥ð¹°
+â´”=\u0338â´€.ð¹¥ð¹°; ⴔ≠ⴀ.ð¹¥ð¹°; [B1]; xn--1ch603bxb.xn--do0dwa; ; ; # ⴔ≠ⴀ.ð¹¥ð¹°
+ⴔ≠ⴀ.ð¹¥ð¹°; ; [B1]; xn--1ch603bxb.xn--do0dwa; ; ; # ⴔ≠ⴀ.ð¹¥ð¹°
+xn--1ch603bxb.xn--do0dwa; ⴔ≠ⴀ.ð¹¥ð¹°; [B1]; xn--1ch603bxb.xn--do0dwa; ; ; # ⴔ≠ⴀ.ð¹¥ð¹°
xn--7md3b171g.xn--do0dwa; Ⴔ≠Ⴀ.ð¹¥ð¹°; [B1, V6]; xn--7md3b171g.xn--do0dwa; ; ; # Ⴔ≠Ⴀ.ð¹¥ð¹°
--\u200Câ’™ð«¥ï½¡ð¨µ; -\u200Câ’™ð«¥.ð¨µ; [C1, P1, V3, V5, V6]; xn----sgn18r3191a.xn--382h; ; xn----ddps939g.xn--382h; [P1, V3, V5, V6] # -â’™ð«¥.ð¨µ
+-\u200Câ’™ð«¥ï½¡ð¨µ; -\u200Câ’™ð«¥.ð¨µ; [C1, V3, V5, V6]; xn----sgn18r3191a.xn--382h; ; xn----ddps939g.xn--382h; [V3, V5, V6] # -â’™ð«¥.ð¨µ
-\u200C18.ð«¥ã€‚ð¨µ; -\u200C18.ð«¥.ð¨µ; [C1, V3, V5]; xn---18-9m0a.xn--rx9c.xn--382h; ; -18.xn--rx9c.xn--382h; [V3, V5] # -18.ð«¥.ð¨µ
-18.xn--rx9c.xn--382h; -18.ð«¥.ð¨µ; [V3, V5]; -18.xn--rx9c.xn--382h; ; ; # -18.ð«¥.ð¨µ
xn---18-9m0a.xn--rx9c.xn--382h; -\u200C18.ð«¥.ð¨µ; [C1, V3, V5]; xn---18-9m0a.xn--rx9c.xn--382h; ; ; # -18.ð«¥.ð¨µ
xn----ddps939g.xn--382h; -â’™ð«¥.ð¨µ; [V3, V5, V6]; xn----ddps939g.xn--382h; ; ; # -â’™ð«¥.ð¨µ
xn----sgn18r3191a.xn--382h; -\u200Câ’™ð«¥.ð¨µ; [C1, V3, V5, V6]; xn----sgn18r3191a.xn--382h; ; ; # -â’™ð«¥.ð¨µ
-︒.ʌᠣ-ð¹½; ; [B1, B5, B6, P1, V6]; xn--y86c.xn----73a596nuh9t; ; ; # ︒.ʌᠣ-ð¹½
+︒.ʌᠣ-ð¹½; ; [B1, B5, B6, V6]; xn--y86c.xn----73a596nuh9t; ; ; # ︒.ʌᠣ-ð¹½
。.ʌᠣ-ð¹½; ..ʌᠣ-ð¹½; [B5, B6, X4_2]; ..xn----73a596nuh9t; [B5, B6, A4_2]; ; # ..ʌᠣ-ð¹½
。.É…á £-ð¹½; ..ʌᠣ-ð¹½; [B5, B6, X4_2]; ..xn----73a596nuh9t; [B5, B6, A4_2]; ; # ..ʌᠣ-ð¹½
..xn----73a596nuh9t; ..ʌᠣ-ð¹½; [B5, B6, X4_2]; ..xn----73a596nuh9t; [B5, B6, A4_2]; ; # ..ʌᠣ-ð¹½
-︒.É…á £-ð¹½; ︒.ʌᠣ-ð¹½; [B1, B5, B6, P1, V6]; xn--y86c.xn----73a596nuh9t; ; ; # ︒.ʌᠣ-ð¹½
+︒.É…á £-ð¹½; ︒.ʌᠣ-ð¹½; [B1, B5, B6, V6]; xn--y86c.xn----73a596nuh9t; ; ; # ︒.ʌᠣ-ð¹½
xn--y86c.xn----73a596nuh9t; ︒.ʌᠣ-ð¹½; [B1, B5, B6, V6]; xn--y86c.xn----73a596nuh9t; ; ; # ︒.ʌᠣ-ð¹½
-\uFE05︒。𦀾\u1CE0; ︒.𦀾\u1CE0; [P1, V6]; xn--y86c.xn--t6f5138v; ; ; # ︒.𦀾᳠
+\uFE05︒。𦀾\u1CE0; ︒.𦀾\u1CE0; [V6]; xn--y86c.xn--t6f5138v; ; ; # ︒.𦀾᳠
\uFE05。。𦀾\u1CE0; ..𦀾\u1CE0; [X4_2]; ..xn--t6f5138v; [A4_2]; ; # ..𦀾᳠
..xn--t6f5138v; ..𦀾\u1CE0; [X4_2]; ..xn--t6f5138v; [A4_2]; ; # ..𦀾᳠
xn--y86c.xn--t6f5138v; ︒.𦀾\u1CE0; [V6]; xn--y86c.xn--t6f5138v; ; ; # ︒.𦀾᳠
xn--t6f5138v; 𦀾\u1CE0; ; xn--t6f5138v; ; ; # 𦀾᳠
𦀾\u1CE0; ; ; xn--t6f5138v; ; ; # 𦀾᳠
-𞮑ßôžžã€‚á¡; 𞮑ßôžž.á¡; [B2, B3, P1, V6]; xn--zca9432wb989f.xn--07e; ; xn--ss-o412ac6305g.xn--07e; # ß.á¡
-𞮑SSôžžã€‚á¡; 𞮑ssôžž.á¡; [B2, B3, P1, V6]; xn--ss-o412ac6305g.xn--07e; ; ; # ss.á¡
-𞮑ssôžžã€‚á¡; 𞮑ssôžž.á¡; [B2, B3, P1, V6]; xn--ss-o412ac6305g.xn--07e; ; ; # ss.á¡
-𞮑Ssôžžã€‚á¡; 𞮑ssôžž.á¡; [B2, B3, P1, V6]; xn--ss-o412ac6305g.xn--07e; ; ; # ss.á¡
+𞮑ßôžžã€‚á¡; 𞮑ßôžž.á¡; [B2, B3, V6]; xn--zca9432wb989f.xn--07e; ; xn--ss-o412ac6305g.xn--07e; # ß.á¡
+𞮑SSôžžã€‚á¡; 𞮑ssôžž.á¡; [B2, B3, V6]; xn--ss-o412ac6305g.xn--07e; ; ; # ss.á¡
+𞮑ssôžžã€‚á¡; 𞮑ssôžž.á¡; [B2, B3, V6]; xn--ss-o412ac6305g.xn--07e; ; ; # ss.á¡
+𞮑Ssôžžã€‚á¡; 𞮑ssôžž.á¡; [B2, B3, V6]; xn--ss-o412ac6305g.xn--07e; ; ; # ss.á¡
xn--ss-o412ac6305g.xn--07e; 𞮑ssôžž.á¡; [B2, B3, V6]; xn--ss-o412ac6305g.xn--07e; ; ; # ss.á¡
xn--zca9432wb989f.xn--07e; 𞮑ßôžž.á¡; [B2, B3, V6]; xn--zca9432wb989f.xn--07e; ; ; # ß.á¡
-\uA953\u200D\u062C\u066C。𱆎󻡟\u200C󠅆; \uA953\u200D\u062C\u066C.𱆎󻡟\u200C; [B5, B6, C1, P1, V5, V6]; xn--rgb2k500fhq9j.xn--0ug78870a5sp9d; ; xn--rgb2k6711c.xn--ec8nj3948b; [B5, B6, P1, V5, V6] # ꥓ج٬.𱆎
+\uA953\u200D\u062C\u066C。𱆎󻡟\u200C󠅆; \uA953\u200D\u062C\u066C.𱆎󻡟\u200C; [B5, B6, C1, V5, V6]; xn--rgb2k500fhq9j.xn--0ug78870a5sp9d; ; xn--rgb2k6711c.xn--ec8nj3948b; [B5, B6, V5, V6] # ꥓ج٬.𱆎
xn--rgb2k6711c.xn--ec8nj3948b; \uA953\u062C\u066C.𱆎󻡟; [B5, B6, V5, V6]; xn--rgb2k6711c.xn--ec8nj3948b; ; ; # ꥓ج٬.𱆎
xn--rgb2k500fhq9j.xn--0ug78870a5sp9d; \uA953\u200D\u062C\u066C.𱆎󻡟\u200C; [B5, B6, C1, V5, V6]; xn--rgb2k500fhq9j.xn--0ug78870a5sp9d; ; ; # ꥓ج٬.𱆎
-ó •ï¼Ž-ß\u200C≠; ó •.-ß\u200C≠; [C1, P1, V3, V6]; xn--u836e.xn----qfa750ve7b; ; xn--u836e.xn---ss-gl2a; [P1, V3, V6] # .-ß≠
-ó •ï¼Ž-ß\u200C=\u0338; ó •.-ß\u200C≠; [C1, P1, V3, V6]; xn--u836e.xn----qfa750ve7b; ; xn--u836e.xn---ss-gl2a; [P1, V3, V6] # .-ß≠
-ó •.-ß\u200C≠; ; [C1, P1, V3, V6]; xn--u836e.xn----qfa750ve7b; ; xn--u836e.xn---ss-gl2a; [P1, V3, V6] # .-ß≠
-ó •.-ß\u200C=\u0338; ó •.-ß\u200C≠; [C1, P1, V3, V6]; xn--u836e.xn----qfa750ve7b; ; xn--u836e.xn---ss-gl2a; [P1, V3, V6] # .-ß≠
-ó •.-SS\u200C=\u0338; ó •.-ss\u200C≠; [C1, P1, V3, V6]; xn--u836e.xn---ss-cn0at5l; ; xn--u836e.xn---ss-gl2a; [P1, V3, V6] # .-ss≠
-ó •.-SS\u200C≠; ó •.-ss\u200C≠; [C1, P1, V3, V6]; xn--u836e.xn---ss-cn0at5l; ; xn--u836e.xn---ss-gl2a; [P1, V3, V6] # .-ss≠
-ó •.-ss\u200C≠; ; [C1, P1, V3, V6]; xn--u836e.xn---ss-cn0at5l; ; xn--u836e.xn---ss-gl2a; [P1, V3, V6] # .-ss≠
-ó •.-ss\u200C=\u0338; ó •.-ss\u200C≠; [C1, P1, V3, V6]; xn--u836e.xn---ss-cn0at5l; ; xn--u836e.xn---ss-gl2a; [P1, V3, V6] # .-ss≠
-ó •.-Ss\u200C=\u0338; ó •.-ss\u200C≠; [C1, P1, V3, V6]; xn--u836e.xn---ss-cn0at5l; ; xn--u836e.xn---ss-gl2a; [P1, V3, V6] # .-ss≠
-ó •.-Ss\u200C≠; ó •.-ss\u200C≠; [C1, P1, V3, V6]; xn--u836e.xn---ss-cn0at5l; ; xn--u836e.xn---ss-gl2a; [P1, V3, V6] # .-ss≠
+ó •ï¼Ž-ß\u200C≠; ó •.-ß\u200C≠; [C1, V3, V6]; xn--u836e.xn----qfa750ve7b; ; xn--u836e.xn---ss-gl2a; [V3, V6] # .-ß≠
+ó •ï¼Ž-ß\u200C=\u0338; ó •.-ß\u200C≠; [C1, V3, V6]; xn--u836e.xn----qfa750ve7b; ; xn--u836e.xn---ss-gl2a; [V3, V6] # .-ß≠
+ó •.-ß\u200C≠; ; [C1, V3, V6]; xn--u836e.xn----qfa750ve7b; ; xn--u836e.xn---ss-gl2a; [V3, V6] # .-ß≠
+ó •.-ß\u200C=\u0338; ó •.-ß\u200C≠; [C1, V3, V6]; xn--u836e.xn----qfa750ve7b; ; xn--u836e.xn---ss-gl2a; [V3, V6] # .-ß≠
+ó •.-SS\u200C=\u0338; ó •.-ss\u200C≠; [C1, V3, V6]; xn--u836e.xn---ss-cn0at5l; ; xn--u836e.xn---ss-gl2a; [V3, V6] # .-ss≠
+ó •.-SS\u200C≠; ó •.-ss\u200C≠; [C1, V3, V6]; xn--u836e.xn---ss-cn0at5l; ; xn--u836e.xn---ss-gl2a; [V3, V6] # .-ss≠
+ó •.-ss\u200C≠; ; [C1, V3, V6]; xn--u836e.xn---ss-cn0at5l; ; xn--u836e.xn---ss-gl2a; [V3, V6] # .-ss≠
+ó •.-ss\u200C=\u0338; ó •.-ss\u200C≠; [C1, V3, V6]; xn--u836e.xn---ss-cn0at5l; ; xn--u836e.xn---ss-gl2a; [V3, V6] # .-ss≠
+ó •.-Ss\u200C=\u0338; ó •.-ss\u200C≠; [C1, V3, V6]; xn--u836e.xn---ss-cn0at5l; ; xn--u836e.xn---ss-gl2a; [V3, V6] # .-ss≠
+ó •.-Ss\u200C≠; ó •.-ss\u200C≠; [C1, V3, V6]; xn--u836e.xn---ss-cn0at5l; ; xn--u836e.xn---ss-gl2a; [V3, V6] # .-ss≠
xn--u836e.xn---ss-gl2a; ó •.-ss≠; [V3, V6]; xn--u836e.xn---ss-gl2a; ; ; # .-ss≠
xn--u836e.xn---ss-cn0at5l; ó •.-ss\u200C≠; [C1, V3, V6]; xn--u836e.xn---ss-cn0at5l; ; ; # .-ss≠
xn--u836e.xn----qfa750ve7b; ó •.-ß\u200C≠; [C1, V3, V6]; xn--u836e.xn----qfa750ve7b; ; ; # .-ß≠
-ó •ï¼Ž-SS\u200C=\u0338; ó •.-ss\u200C≠; [C1, P1, V3, V6]; xn--u836e.xn---ss-cn0at5l; ; xn--u836e.xn---ss-gl2a; [P1, V3, V6] # .-ss≠
-ó •ï¼Ž-SS\u200C≠; ó •.-ss\u200C≠; [C1, P1, V3, V6]; xn--u836e.xn---ss-cn0at5l; ; xn--u836e.xn---ss-gl2a; [P1, V3, V6] # .-ss≠
-ó •ï¼Ž-ss\u200C≠; ó •.-ss\u200C≠; [C1, P1, V3, V6]; xn--u836e.xn---ss-cn0at5l; ; xn--u836e.xn---ss-gl2a; [P1, V3, V6] # .-ss≠
-ó •ï¼Ž-ss\u200C=\u0338; ó •.-ss\u200C≠; [C1, P1, V3, V6]; xn--u836e.xn---ss-cn0at5l; ; xn--u836e.xn---ss-gl2a; [P1, V3, V6] # .-ss≠
-ó •ï¼Ž-Ss\u200C=\u0338; ó •.-ss\u200C≠; [C1, P1, V3, V6]; xn--u836e.xn---ss-cn0at5l; ; xn--u836e.xn---ss-gl2a; [P1, V3, V6] # .-ss≠
-ó •ï¼Ž-Ss\u200C≠; ó •.-ss\u200C≠; [C1, P1, V3, V6]; xn--u836e.xn---ss-cn0at5l; ; xn--u836e.xn---ss-gl2a; [P1, V3, V6] # .-ss≠
-á¡™\u200C。≯ð‹²â‰ ; á¡™\u200C.≯ð‹²â‰ ; [C1, P1, V6]; xn--p8e650b.xn--1ch3a7084l; ; xn--p8e.xn--1ch3a7084l; [P1, V6] # á¡™.≯ð‹²â‰ 
-á¡™\u200C。>\u0338ð‹²=\u0338; á¡™\u200C.≯ð‹²â‰ ; [C1, P1, V6]; xn--p8e650b.xn--1ch3a7084l; ; xn--p8e.xn--1ch3a7084l; [P1, V6] # á¡™.≯ð‹²â‰ 
-á¡™\u200C。≯ð‹²â‰ ; á¡™\u200C.≯ð‹²â‰ ; [C1, P1, V6]; xn--p8e650b.xn--1ch3a7084l; ; xn--p8e.xn--1ch3a7084l; [P1, V6] # á¡™.≯ð‹²â‰ 
-á¡™\u200C。>\u0338ð‹²=\u0338; á¡™\u200C.≯ð‹²â‰ ; [C1, P1, V6]; xn--p8e650b.xn--1ch3a7084l; ; xn--p8e.xn--1ch3a7084l; [P1, V6] # á¡™.≯ð‹²â‰ 
-xn--p8e.xn--1ch3a7084l; á¡™.≯ð‹²â‰ ; [V6]; xn--p8e.xn--1ch3a7084l; ; ; # á¡™.≯ð‹²â‰ 
-xn--p8e650b.xn--1ch3a7084l; á¡™\u200C.≯ð‹²â‰ ; [C1, V6]; xn--p8e650b.xn--1ch3a7084l; ; ; # á¡™.≯ð‹²â‰ 
-ð¹§ðž²„ó ­ñ†¼©ã€‚\u034E🄀; ð¹§ðž²„ó ­ñ†¼©.\u034E🄀; [B1, P1, V5, V6]; xn--fo0dw409aq58qrn69d.xn--sua6883w; ; ; # ð¹§ðž²„.͎🄀
-ð¹§ðž²„ó ­ñ†¼©ã€‚\u034E0.; ð¹§ðž²„ó ­ñ†¼©.\u034E0.; [B1, P1, V5, V6]; xn--fo0dw409aq58qrn69d.xn--0-bgb.; ; ; # ð¹§ðž²„.ÍŽ0.
+ó •ï¼Ž-SS\u200C=\u0338; ó •.-ss\u200C≠; [C1, V3, V6]; xn--u836e.xn---ss-cn0at5l; ; xn--u836e.xn---ss-gl2a; [V3, V6] # .-ss≠
+ó •ï¼Ž-SS\u200C≠; ó •.-ss\u200C≠; [C1, V3, V6]; xn--u836e.xn---ss-cn0at5l; ; xn--u836e.xn---ss-gl2a; [V3, V6] # .-ss≠
+ó •ï¼Ž-ss\u200C≠; ó •.-ss\u200C≠; [C1, V3, V6]; xn--u836e.xn---ss-cn0at5l; ; xn--u836e.xn---ss-gl2a; [V3, V6] # .-ss≠
+ó •ï¼Ž-ss\u200C=\u0338; ó •.-ss\u200C≠; [C1, V3, V6]; xn--u836e.xn---ss-cn0at5l; ; xn--u836e.xn---ss-gl2a; [V3, V6] # .-ss≠
+ó •ï¼Ž-Ss\u200C=\u0338; ó •.-ss\u200C≠; [C1, V3, V6]; xn--u836e.xn---ss-cn0at5l; ; xn--u836e.xn---ss-gl2a; [V3, V6] # .-ss≠
+ó •ï¼Ž-Ss\u200C≠; ó •.-ss\u200C≠; [C1, V3, V6]; xn--u836e.xn---ss-cn0at5l; ; xn--u836e.xn---ss-gl2a; [V3, V6] # .-ss≠
+á¡™\u200C。≯ð‹²â‰ ; á¡™\u200C.≯ð‹²â‰ ; [C1]; xn--p8e650b.xn--1ch3a7084l; ; xn--p8e.xn--1ch3a7084l; [] # á¡™.≯ð‹²â‰ 
+á¡™\u200C。>\u0338ð‹²=\u0338; á¡™\u200C.≯ð‹²â‰ ; [C1]; xn--p8e650b.xn--1ch3a7084l; ; xn--p8e.xn--1ch3a7084l; [] # á¡™.≯ð‹²â‰ 
+á¡™\u200C。≯ð‹²â‰ ; á¡™\u200C.≯ð‹²â‰ ; [C1]; xn--p8e650b.xn--1ch3a7084l; ; xn--p8e.xn--1ch3a7084l; [] # á¡™.≯ð‹²â‰ 
+á¡™\u200C。>\u0338ð‹²=\u0338; á¡™\u200C.≯ð‹²â‰ ; [C1]; xn--p8e650b.xn--1ch3a7084l; ; xn--p8e.xn--1ch3a7084l; [] # á¡™.≯ð‹²â‰ 
+xn--p8e.xn--1ch3a7084l; á¡™.≯ð‹²â‰ ; ; xn--p8e.xn--1ch3a7084l; ; ; # á¡™.≯ð‹²â‰ 
+á¡™.≯ð‹²â‰ ; ; ; xn--p8e.xn--1ch3a7084l; ; ; # á¡™.≯ð‹²â‰ 
+á¡™.>\u0338ð‹²=\u0338; á¡™.≯ð‹²â‰ ; ; xn--p8e.xn--1ch3a7084l; ; ; # á¡™.≯ð‹²â‰ 
+xn--p8e650b.xn--1ch3a7084l; á¡™\u200C.≯ð‹²â‰ ; [C1]; xn--p8e650b.xn--1ch3a7084l; ; ; # á¡™.≯ð‹²â‰ 
+ð¹§ðž²„ó ­ñ†¼©ã€‚\u034E🄀; ð¹§ðž²„ó ­ñ†¼©.\u034E🄀; [B1, V5, V6]; xn--fo0dw409aq58qrn69d.xn--sua6883w; ; ; # ð¹§ðž²„.͎🄀
+ð¹§ðž²„ó ­ñ†¼©ã€‚\u034E0.; ð¹§ðž²„ó ­ñ†¼©.\u034E0.; [B1, V5, V6]; xn--fo0dw409aq58qrn69d.xn--0-bgb.; ; ; # ð¹§ðž²„.ÍŽ0.
xn--fo0dw409aq58qrn69d.xn--0-bgb.; ð¹§ðž²„ó ­ñ†¼©.\u034E0.; [B1, V5, V6]; xn--fo0dw409aq58qrn69d.xn--0-bgb.; ; ; # ð¹§ðž²„.ÍŽ0.
xn--fo0dw409aq58qrn69d.xn--sua6883w; ð¹§ðž²„ó ­ñ†¼©.\u034E🄀; [B1, V5, V6]; xn--fo0dw409aq58qrn69d.xn--sua6883w; ; ; # ð¹§ðž²„.͎🄀
-Ⴄ.\u200D\u0721󻣋ς; Ⴄ.\u200D\u0721󻣋ς; [B1, C2, P1, V6]; xn--cnd.xn--3xa93o3t5ajq467a; ; xn--cnd.xn--4xa73ob5892c; [B2, B3, P1, V6] # Ⴄ.ܡς
-Ⴄ.\u200D\u0721󻣋ς; ; [B1, C2, P1, V6]; xn--cnd.xn--3xa93o3t5ajq467a; ; xn--cnd.xn--4xa73ob5892c; [B2, B3, P1, V6] # Ⴄ.ܡς
-ⴄ.\u200D\u0721󻣋ς; ; [B1, C2, P1, V6]; xn--vkj.xn--3xa93o3t5ajq467a; ; xn--vkj.xn--4xa73ob5892c; [B2, B3, P1, V6] # ⴄ.ܡς
-Ⴄ.\u200D\u0721󻣋Σ; Ⴄ.\u200D\u0721󻣋σ; [B1, C2, P1, V6]; xn--cnd.xn--4xa73o3t5ajq467a; ; xn--cnd.xn--4xa73ob5892c; [B2, B3, P1, V6] # Ⴄ.ܡσ
-ⴄ.\u200D\u0721󻣋σ; ; [B1, C2, P1, V6]; xn--vkj.xn--4xa73o3t5ajq467a; ; xn--vkj.xn--4xa73ob5892c; [B2, B3, P1, V6] # ⴄ.ܡσ
+Ⴄ.\u200D\u0721󻣋ς; Ⴄ.\u200D\u0721󻣋ς; [B1, C2, V6]; xn--cnd.xn--3xa93o3t5ajq467a; ; xn--cnd.xn--4xa73ob5892c; [B2, B3, V6] # Ⴄ.ܡς
+Ⴄ.\u200D\u0721󻣋ς; ; [B1, C2, V6]; xn--cnd.xn--3xa93o3t5ajq467a; ; xn--cnd.xn--4xa73ob5892c; [B2, B3, V6] # Ⴄ.ܡς
+ⴄ.\u200D\u0721󻣋ς; ; [B1, C2, V6]; xn--vkj.xn--3xa93o3t5ajq467a; ; xn--vkj.xn--4xa73ob5892c; [B2, B3, V6] # ⴄ.ܡς
+Ⴄ.\u200D\u0721󻣋Σ; Ⴄ.\u200D\u0721󻣋σ; [B1, C2, V6]; xn--cnd.xn--4xa73o3t5ajq467a; ; xn--cnd.xn--4xa73ob5892c; [B2, B3, V6] # Ⴄ.ܡσ
+ⴄ.\u200D\u0721󻣋σ; ; [B1, C2, V6]; xn--vkj.xn--4xa73o3t5ajq467a; ; xn--vkj.xn--4xa73ob5892c; [B2, B3, V6] # ⴄ.ܡσ
xn--vkj.xn--4xa73ob5892c; ⴄ.\u0721󻣋σ; [B2, B3, V6]; xn--vkj.xn--4xa73ob5892c; ; ; # ⴄ.ܡσ
xn--vkj.xn--4xa73o3t5ajq467a; ⴄ.\u200D\u0721󻣋σ; [B1, C2, V6]; xn--vkj.xn--4xa73o3t5ajq467a; ; ; # ⴄ.ܡσ
xn--cnd.xn--4xa73ob5892c; Ⴄ.\u0721󻣋σ; [B2, B3, V6]; xn--cnd.xn--4xa73ob5892c; ; ; # Ⴄ.ܡσ
xn--cnd.xn--4xa73o3t5ajq467a; Ⴄ.\u200D\u0721󻣋σ; [B1, C2, V6]; xn--cnd.xn--4xa73o3t5ajq467a; ; ; # Ⴄ.ܡσ
xn--vkj.xn--3xa93o3t5ajq467a; ⴄ.\u200D\u0721󻣋ς; [B1, C2, V6]; xn--vkj.xn--3xa93o3t5ajq467a; ; ; # ⴄ.ܡς
xn--cnd.xn--3xa93o3t5ajq467a; Ⴄ.\u200D\u0721󻣋ς; [B1, C2, V6]; xn--cnd.xn--3xa93o3t5ajq467a; ; ; # Ⴄ.ܡς
-ⴄ.\u200D\u0721󻣋ς; ⴄ.\u200D\u0721󻣋ς; [B1, C2, P1, V6]; xn--vkj.xn--3xa93o3t5ajq467a; ; xn--vkj.xn--4xa73ob5892c; [B2, B3, P1, V6] # ⴄ.ܡς
-Ⴄ.\u200D\u0721󻣋Σ; Ⴄ.\u200D\u0721󻣋σ; [B1, C2, P1, V6]; xn--cnd.xn--4xa73o3t5ajq467a; ; xn--cnd.xn--4xa73ob5892c; [B2, B3, P1, V6] # Ⴄ.ܡσ
-ⴄ.\u200D\u0721󻣋σ; ⴄ.\u200D\u0721󻣋σ; [B1, C2, P1, V6]; xn--vkj.xn--4xa73o3t5ajq467a; ; xn--vkj.xn--4xa73ob5892c; [B2, B3, P1, V6] # ⴄ.ܡσ
-򮵛\u0613.Ⴕ; ; [P1, V6]; xn--1fb94204l.xn--tnd; ; ; # ؓ.Ⴕ
-ò®µ›\u0613.â´•; ; [P1, V6]; xn--1fb94204l.xn--dlj; ; ; # Ø“.â´•
+ⴄ.\u200D\u0721󻣋ς; ⴄ.\u200D\u0721󻣋ς; [B1, C2, V6]; xn--vkj.xn--3xa93o3t5ajq467a; ; xn--vkj.xn--4xa73ob5892c; [B2, B3, V6] # ⴄ.ܡς
+Ⴄ.\u200D\u0721󻣋Σ; Ⴄ.\u200D\u0721󻣋σ; [B1, C2, V6]; xn--cnd.xn--4xa73o3t5ajq467a; ; xn--cnd.xn--4xa73ob5892c; [B2, B3, V6] # Ⴄ.ܡσ
+ⴄ.\u200D\u0721󻣋σ; ⴄ.\u200D\u0721󻣋σ; [B1, C2, V6]; xn--vkj.xn--4xa73o3t5ajq467a; ; xn--vkj.xn--4xa73ob5892c; [B2, B3, V6] # ⴄ.ܡσ
+򮵛\u0613.Ⴕ; ; [V6]; xn--1fb94204l.xn--tnd; ; ; # ؓ.Ⴕ
+ò®µ›\u0613.â´•; ; [V6]; xn--1fb94204l.xn--dlj; ; ; # Ø“.â´•
xn--1fb94204l.xn--dlj; ò®µ›\u0613.â´•; [V6]; xn--1fb94204l.xn--dlj; ; ; # Ø“.â´•
xn--1fb94204l.xn--tnd; 򮵛\u0613.Ⴕ; [V6]; xn--1fb94204l.xn--tnd; ; ; # ؓ.Ⴕ
-≯\u1DF3𞤥。\u200C\uA8C4󠪉\u200D; ≯\u1DF3𞤥.\u200C\uA8C4󠪉\u200D; [B1, C1, C2, P1, V6]; xn--ofg13qyr21c.xn--0ugc0116hix29k; ; xn--ofg13qyr21c.xn--0f9au6706d; [B1, P1, V5, V6] # ≯ᷳ𞤥.꣄
->\u0338\u1DF3𞤥。\u200C\uA8C4󠪉\u200D; ≯\u1DF3𞤥.\u200C\uA8C4󠪉\u200D; [B1, C1, C2, P1, V6]; xn--ofg13qyr21c.xn--0ugc0116hix29k; ; xn--ofg13qyr21c.xn--0f9au6706d; [B1, P1, V5, V6] # ≯ᷳ𞤥.꣄
->\u0338\u1DF3𞤃。\u200C\uA8C4󠪉\u200D; ≯\u1DF3𞤥.\u200C\uA8C4󠪉\u200D; [B1, C1, C2, P1, V6]; xn--ofg13qyr21c.xn--0ugc0116hix29k; ; xn--ofg13qyr21c.xn--0f9au6706d; [B1, P1, V5, V6] # ≯ᷳ𞤥.꣄
-≯\u1DF3𞤃。\u200C\uA8C4󠪉\u200D; ≯\u1DF3𞤥.\u200C\uA8C4󠪉\u200D; [B1, C1, C2, P1, V6]; xn--ofg13qyr21c.xn--0ugc0116hix29k; ; xn--ofg13qyr21c.xn--0f9au6706d; [B1, P1, V5, V6] # ≯ᷳ𞤥.꣄
+≯\u1DF3𞤥。\u200C\uA8C4󠪉\u200D; ≯\u1DF3𞤥.\u200C\uA8C4󠪉\u200D; [B1, C1, C2, V6]; xn--ofg13qyr21c.xn--0ugc0116hix29k; ; xn--ofg13qyr21c.xn--0f9au6706d; [B1, V5, V6] # ≯ᷳ𞤥.꣄
+>\u0338\u1DF3𞤥。\u200C\uA8C4󠪉\u200D; ≯\u1DF3𞤥.\u200C\uA8C4󠪉\u200D; [B1, C1, C2, V6]; xn--ofg13qyr21c.xn--0ugc0116hix29k; ; xn--ofg13qyr21c.xn--0f9au6706d; [B1, V5, V6] # ≯ᷳ𞤥.꣄
+>\u0338\u1DF3𞤃。\u200C\uA8C4󠪉\u200D; ≯\u1DF3𞤥.\u200C\uA8C4󠪉\u200D; [B1, C1, C2, V6]; xn--ofg13qyr21c.xn--0ugc0116hix29k; ; xn--ofg13qyr21c.xn--0f9au6706d; [B1, V5, V6] # ≯ᷳ𞤥.꣄
+≯\u1DF3𞤃。\u200C\uA8C4󠪉\u200D; ≯\u1DF3𞤥.\u200C\uA8C4󠪉\u200D; [B1, C1, C2, V6]; xn--ofg13qyr21c.xn--0ugc0116hix29k; ; xn--ofg13qyr21c.xn--0f9au6706d; [B1, V5, V6] # ≯ᷳ𞤥.꣄
xn--ofg13qyr21c.xn--0f9au6706d; ≯\u1DF3𞤥.\uA8C4󠪉; [B1, V5, V6]; xn--ofg13qyr21c.xn--0f9au6706d; ; ; # ≯ᷳ𞤥.꣄
xn--ofg13qyr21c.xn--0ugc0116hix29k; ≯\u1DF3𞤥.\u200C\uA8C4󠪉\u200D; [B1, C1, C2, V6]; xn--ofg13qyr21c.xn--0ugc0116hix29k; ; ; # ≯ᷳ𞤥.꣄
-\u200C󠄷。ò’‘; \u200C.ò’‘; [C1, P1, V6]; xn--0ug.xn--w720c; ; .xn--w720c; [P1, V6, A4_2] # .
-\u200C󠄷。ò’‘; \u200C.ò’‘; [C1, P1, V6]; xn--0ug.xn--w720c; ; .xn--w720c; [P1, V6, A4_2] # .
+\u200C󠄷。ò’‘; \u200C.ò’‘; [C1, V6]; xn--0ug.xn--w720c; ; .xn--w720c; [V6, A4_2] # .
+\u200C󠄷。ò’‘; \u200C.ò’‘; [C1, V6]; xn--0ug.xn--w720c; ; .xn--w720c; [V6, A4_2] # .
.xn--w720c; .ò’‘; [V6, X4_2]; .xn--w720c; [V6, A4_2]; ; # .
xn--0ug.xn--w720c; \u200C.ò’‘; [C1, V6]; xn--0ug.xn--w720c; ; ; # .
-⒈\u0DD6焅.󗡙\u200Dꡟ; ; [C2, P1, V6]; xn--t1c337io97c.xn--1ugz184c9lw7i; ; xn--t1c337io97c.xn--4c9a21133d; [P1, V6] # ⒈ූ焅.ꡟ
-1.\u0DD6ç„….ó—¡™\u200Dê¡Ÿ; ; [C2, P1, V5, V6]; 1.xn--t1c6981c.xn--1ugz184c9lw7i; ; 1.xn--t1c6981c.xn--4c9a21133d; [P1, V5, V6] # 1.à·–ç„….ê¡Ÿ
+⒈\u0DD6焅.󗡙\u200Dꡟ; ; [C2, V6]; xn--t1c337io97c.xn--1ugz184c9lw7i; ; xn--t1c337io97c.xn--4c9a21133d; [V6] # ⒈ූ焅.ꡟ
+1.\u0DD6ç„….ó—¡™\u200Dê¡Ÿ; ; [C2, V5, V6]; 1.xn--t1c6981c.xn--1ugz184c9lw7i; ; 1.xn--t1c6981c.xn--4c9a21133d; [V5, V6] # 1.à·–ç„….ê¡Ÿ
1.xn--t1c6981c.xn--4c9a21133d; 1.\u0DD6焅.󗡙ꡟ; [V5, V6]; 1.xn--t1c6981c.xn--4c9a21133d; ; ; # 1.ූ焅.ꡟ
1.xn--t1c6981c.xn--1ugz184c9lw7i; 1.\u0DD6ç„….ó—¡™\u200Dê¡Ÿ; [C2, V5, V6]; 1.xn--t1c6981c.xn--1ugz184c9lw7i; ; ; # 1.à·–ç„….ê¡Ÿ
xn--t1c337io97c.xn--4c9a21133d; ⒈\u0DD6焅.󗡙ꡟ; [V6]; xn--t1c337io97c.xn--4c9a21133d; ; ; # ⒈ූ焅.ꡟ
xn--t1c337io97c.xn--1ugz184c9lw7i; ⒈\u0DD6焅.󗡙\u200Dꡟ; [C2, V6]; xn--t1c337io97c.xn--1ugz184c9lw7i; ; ; # ⒈ූ焅.ꡟ
-\u1DCDς≮.Ï‚ðª¦ðž¤•0; \u1DCDς≮.Ï‚ðª¦ðž¤·0; [B1, B5, P1, V5, V6]; xn--3xa744kvid.xn--0-xmb85727aggma; ; xn--4xa544kvid.xn--0-zmb55727aggma; # á·Ï‚≮.Ï‚ðª¦ðž¤·0
-\u1DCDÏ‚<\u0338.Ï‚ðª¦ðž¤•0; \u1DCDς≮.Ï‚ðª¦ðž¤·0; [B1, B5, P1, V5, V6]; xn--3xa744kvid.xn--0-xmb85727aggma; ; xn--4xa544kvid.xn--0-zmb55727aggma; # á·Ï‚≮.Ï‚ðª¦ðž¤·0
-\u1DCDÏ‚<\u0338.Ï‚ðª¦ðž¤·0; \u1DCDς≮.Ï‚ðª¦ðž¤·0; [B1, B5, P1, V5, V6]; xn--3xa744kvid.xn--0-xmb85727aggma; ; xn--4xa544kvid.xn--0-zmb55727aggma; # á·Ï‚≮.Ï‚ðª¦ðž¤·0
-\u1DCDς≮.Ï‚ðª¦ðž¤·0; ; [B1, B5, P1, V5, V6]; xn--3xa744kvid.xn--0-xmb85727aggma; ; xn--4xa544kvid.xn--0-zmb55727aggma; # á·Ï‚≮.Ï‚ðª¦ðž¤·0
-\u1DCDΣ≮.Σðª¦ðž¤•0; \u1DCDσ≮.σðª¦ðž¤·0; [B1, B5, P1, V5, V6]; xn--4xa544kvid.xn--0-zmb55727aggma; ; ; # á·Ïƒâ‰®.σðª¦ðž¤·0
-\u1DCDΣ<\u0338.Σðª¦ðž¤•0; \u1DCDσ≮.σðª¦ðž¤·0; [B1, B5, P1, V5, V6]; xn--4xa544kvid.xn--0-zmb55727aggma; ; ; # á·Ïƒâ‰®.σðª¦ðž¤·0
-\u1DCDσ<\u0338.σðª¦ðž¤·0; \u1DCDσ≮.σðª¦ðž¤·0; [B1, B5, P1, V5, V6]; xn--4xa544kvid.xn--0-zmb55727aggma; ; ; # á·Ïƒâ‰®.σðª¦ðž¤·0
-\u1DCDσ≮.σðª¦ðž¤·0; ; [B1, B5, P1, V5, V6]; xn--4xa544kvid.xn--0-zmb55727aggma; ; ; # á·Ïƒâ‰®.σðª¦ðž¤·0
-\u1DCDΣ≮.Σðª¦ðž¤·0; \u1DCDσ≮.σðª¦ðž¤·0; [B1, B5, P1, V5, V6]; xn--4xa544kvid.xn--0-zmb55727aggma; ; ; # á·Ïƒâ‰®.σðª¦ðž¤·0
-\u1DCDΣ<\u0338.Σðª¦ðž¤·0; \u1DCDσ≮.σðª¦ðž¤·0; [B1, B5, P1, V5, V6]; xn--4xa544kvid.xn--0-zmb55727aggma; ; ; # á·Ïƒâ‰®.σðª¦ðž¤·0
-xn--4xa544kvid.xn--0-zmb55727aggma; \u1DCDσ≮.σðª¦ðž¤·0; [B1, B5, V5, V6]; xn--4xa544kvid.xn--0-zmb55727aggma; ; ; # á·Ïƒâ‰®.σðª¦ðž¤·0
-xn--3xa744kvid.xn--0-xmb85727aggma; \u1DCDς≮.Ï‚ðª¦ðž¤·0; [B1, B5, V5, V6]; xn--3xa744kvid.xn--0-xmb85727aggma; ; ; # á·Ï‚≮.Ï‚ðª¦ðž¤·0
-\u1DCDσ≮.σðª¦ðž¤•0; \u1DCDσ≮.σðª¦ðž¤·0; [B1, B5, P1, V5, V6]; xn--4xa544kvid.xn--0-zmb55727aggma; ; ; # á·Ïƒâ‰®.σðª¦ðž¤·0
-\u1DCDσ<\u0338.σðª¦ðž¤•0; \u1DCDσ≮.σðª¦ðž¤·0; [B1, B5, P1, V5, V6]; xn--4xa544kvid.xn--0-zmb55727aggma; ; ; # á·Ïƒâ‰®.σðª¦ðž¤·0
-ò¢¦¾ÃŸ\u05B9ð«™.\u05AD\u08A1; ; [B1, B5, B6, P1, V5, V6]; xn--zca89v339zj118e.xn--4cb62m; ; xn--ss-xjd6058xlz50g.xn--4cb62m; # ßֹð«™.֭ࢡ
-ò¢¦¾SS\u05B9ð«™.\u05AD\u08A1; ò¢¦¾ss\u05B9ð«™.\u05AD\u08A1; [B1, B5, B6, P1, V5, V6]; xn--ss-xjd6058xlz50g.xn--4cb62m; ; ; # ssÖ¹ð«™.֭ࢡ
-ò¢¦¾ss\u05B9ð«™.\u05AD\u08A1; ; [B1, B5, B6, P1, V5, V6]; xn--ss-xjd6058xlz50g.xn--4cb62m; ; ; # ssÖ¹ð«™.֭ࢡ
-ò¢¦¾Ss\u05B9ð«™.\u05AD\u08A1; ò¢¦¾ss\u05B9ð«™.\u05AD\u08A1; [B1, B5, B6, P1, V5, V6]; xn--ss-xjd6058xlz50g.xn--4cb62m; ; ; # ssÖ¹ð«™.֭ࢡ
+\u1DCDς≮.Ï‚ðª¦ðž¤•0; \u1DCDς≮.Ï‚ðª¦ðž¤·0; [B1, B5, V5]; xn--3xa744kvid.xn--0-xmb85727aggma; ; xn--4xa544kvid.xn--0-zmb55727aggma; # á·Ï‚≮.Ï‚ðª¦ðž¤·0
+\u1DCDÏ‚<\u0338.Ï‚ðª¦ðž¤•0; \u1DCDς≮.Ï‚ðª¦ðž¤·0; [B1, B5, V5]; xn--3xa744kvid.xn--0-xmb85727aggma; ; xn--4xa544kvid.xn--0-zmb55727aggma; # á·Ï‚≮.Ï‚ðª¦ðž¤·0
+\u1DCDÏ‚<\u0338.Ï‚ðª¦ðž¤·0; \u1DCDς≮.Ï‚ðª¦ðž¤·0; [B1, B5, V5]; xn--3xa744kvid.xn--0-xmb85727aggma; ; xn--4xa544kvid.xn--0-zmb55727aggma; # á·Ï‚≮.Ï‚ðª¦ðž¤·0
+\u1DCDς≮.Ï‚ðª¦ðž¤·0; ; [B1, B5, V5]; xn--3xa744kvid.xn--0-xmb85727aggma; ; xn--4xa544kvid.xn--0-zmb55727aggma; # á·Ï‚≮.Ï‚ðª¦ðž¤·0
+\u1DCDΣ≮.Σðª¦ðž¤•0; \u1DCDσ≮.σðª¦ðž¤·0; [B1, B5, V5]; xn--4xa544kvid.xn--0-zmb55727aggma; ; ; # á·Ïƒâ‰®.σðª¦ðž¤·0
+\u1DCDΣ<\u0338.Σðª¦ðž¤•0; \u1DCDσ≮.σðª¦ðž¤·0; [B1, B5, V5]; xn--4xa544kvid.xn--0-zmb55727aggma; ; ; # á·Ïƒâ‰®.σðª¦ðž¤·0
+\u1DCDσ<\u0338.σðª¦ðž¤·0; \u1DCDσ≮.σðª¦ðž¤·0; [B1, B5, V5]; xn--4xa544kvid.xn--0-zmb55727aggma; ; ; # á·Ïƒâ‰®.σðª¦ðž¤·0
+\u1DCDσ≮.σðª¦ðž¤·0; ; [B1, B5, V5]; xn--4xa544kvid.xn--0-zmb55727aggma; ; ; # á·Ïƒâ‰®.σðª¦ðž¤·0
+\u1DCDΣ≮.Σðª¦ðž¤·0; \u1DCDσ≮.σðª¦ðž¤·0; [B1, B5, V5]; xn--4xa544kvid.xn--0-zmb55727aggma; ; ; # á·Ïƒâ‰®.σðª¦ðž¤·0
+\u1DCDΣ<\u0338.Σðª¦ðž¤·0; \u1DCDσ≮.σðª¦ðž¤·0; [B1, B5, V5]; xn--4xa544kvid.xn--0-zmb55727aggma; ; ; # á·Ïƒâ‰®.σðª¦ðž¤·0
+xn--4xa544kvid.xn--0-zmb55727aggma; \u1DCDσ≮.σðª¦ðž¤·0; [B1, B5, V5]; xn--4xa544kvid.xn--0-zmb55727aggma; ; ; # á·Ïƒâ‰®.σðª¦ðž¤·0
+xn--3xa744kvid.xn--0-xmb85727aggma; \u1DCDς≮.Ï‚ðª¦ðž¤·0; [B1, B5, V5]; xn--3xa744kvid.xn--0-xmb85727aggma; ; ; # á·Ï‚≮.Ï‚ðª¦ðž¤·0
+\u1DCDσ≮.σðª¦ðž¤•0; \u1DCDσ≮.σðª¦ðž¤·0; [B1, B5, V5]; xn--4xa544kvid.xn--0-zmb55727aggma; ; ; # á·Ïƒâ‰®.σðª¦ðž¤·0
+\u1DCDσ<\u0338.σðª¦ðž¤•0; \u1DCDσ≮.σðª¦ðž¤·0; [B1, B5, V5]; xn--4xa544kvid.xn--0-zmb55727aggma; ; ; # á·Ïƒâ‰®.σðª¦ðž¤·0
+ò¢¦¾ÃŸ\u05B9ð«™.\u05AD\u08A1; ; [B1, B5, B6, V5, V6]; xn--zca89v339zj118e.xn--4cb62m; ; xn--ss-xjd6058xlz50g.xn--4cb62m; # ßֹð«™.֭ࢡ
+ò¢¦¾SS\u05B9ð«™.\u05AD\u08A1; ò¢¦¾ss\u05B9ð«™.\u05AD\u08A1; [B1, B5, B6, V5, V6]; xn--ss-xjd6058xlz50g.xn--4cb62m; ; ; # ssÖ¹ð«™.֭ࢡ
+ò¢¦¾ss\u05B9ð«™.\u05AD\u08A1; ; [B1, B5, B6, V5, V6]; xn--ss-xjd6058xlz50g.xn--4cb62m; ; ; # ssÖ¹ð«™.֭ࢡ
+ò¢¦¾Ss\u05B9ð«™.\u05AD\u08A1; ò¢¦¾ss\u05B9ð«™.\u05AD\u08A1; [B1, B5, B6, V5, V6]; xn--ss-xjd6058xlz50g.xn--4cb62m; ; ; # ssÖ¹ð«™.֭ࢡ
xn--ss-xjd6058xlz50g.xn--4cb62m; ò¢¦¾ss\u05B9ð«™.\u05AD\u08A1; [B1, B5, B6, V5, V6]; xn--ss-xjd6058xlz50g.xn--4cb62m; ; ; # ssÖ¹ð«™.֭ࢡ
xn--zca89v339zj118e.xn--4cb62m; ò¢¦¾ÃŸ\u05B9ð«™.\u05AD\u08A1; [B1, B5, B6, V5, V6]; xn--zca89v339zj118e.xn--4cb62m; ; ; # ßֹð«™.֭ࢡ
--𞣄。⒈; -𞣄.⒈; [B1, P1, V3, V6]; xn----xc8r.xn--tsh; ; ; # -𞣄.⒈
+-𞣄。⒈; -𞣄.⒈; [B1, V3, V6]; xn----xc8r.xn--tsh; ; ; # -𞣄.⒈
-𞣄。1.; -𞣄.1.; [B1, V3]; xn----xc8r.1.; ; ; # -𞣄.1.
xn----xc8r.1.; -𞣄.1.; [B1, V3]; xn----xc8r.1.; ; ; # -𞣄.1.
xn----xc8r.xn--tsh; -𞣄.⒈; [B1, V3, V6]; xn----xc8r.xn--tsh; ; ; # -𞣄.⒈
-ñˆ ¢ð«–ðŸ¡ã€‚\u063E𑘿; ñˆ ¢ð«–9.\u063E𑘿; [B5, P1, V6]; xn--9-el5iv442t.xn--9gb0830l; ; ; # ð«–9.ؾ𑘿
-ñˆ ¢ð«–9。\u063E𑘿; ñˆ ¢ð«–9.\u063E𑘿; [B5, P1, V6]; xn--9-el5iv442t.xn--9gb0830l; ; ; # ð«–9.ؾ𑘿
+ñˆ ¢ð«–ðŸ¡ã€‚\u063E𑘿; ñˆ ¢ð«–9.\u063E𑘿; [B5, V6]; xn--9-el5iv442t.xn--9gb0830l; ; ; # ð«–9.ؾ𑘿
+ñˆ ¢ð«–9。\u063E𑘿; ñˆ ¢ð«–9.\u063E𑘿; [B5, V6]; xn--9-el5iv442t.xn--9gb0830l; ; ; # ð«–9.ؾ𑘿
xn--9-el5iv442t.xn--9gb0830l; ñˆ ¢ð«–9.\u063E𑘿; [B5, V6]; xn--9-el5iv442t.xn--9gb0830l; ; ; # ð«–9.ؾ𑘿
\u0668\uFC8C\u0668\u1A5D.\u200D; \u0668\u0646\u0645\u0668\u1A5D.\u200D; [B1, C2]; xn--hhbb5hc956w.xn--1ug; ; xn--hhbb5hc956w.; [B1] # ٨نم٨á©.
\u0668\u0646\u0645\u0668\u1A5D.\u200D; ; [B1, C2]; xn--hhbb5hc956w.xn--1ug; ; xn--hhbb5hc956w.; [B1] # ٨نم٨á©.
xn--hhbb5hc956w.; \u0668\u0646\u0645\u0668\u1A5D.; [B1]; xn--hhbb5hc956w.; ; ; # ٨نم٨á©.
xn--hhbb5hc956w.xn--1ug; \u0668\u0646\u0645\u0668\u1A5D.\u200D; [B1, C2]; xn--hhbb5hc956w.xn--1ug; ; ; # ٨نم٨á©.
-ðŸ˜ï¼Žá‚§ó€³‘\uFD50ñ«ƒ±; 0.Ⴇ󀳑\u062A\u062C\u0645ñ«ƒ±; [B1, B5, P1, V6]; 0.xn--pgbe9e344c2725svff8b; ; ; # 0.Ⴇتجم
-0.Ⴇ󀳑\u062A\u062C\u0645񫃱; ; [B1, B5, P1, V6]; 0.xn--pgbe9e344c2725svff8b; ; ; # 0.Ⴇتجم
-0.ⴇ󀳑\u062A\u062C\u0645񫃱; ; [B1, B5, P1, V6]; 0.xn--pgbe9ez79qd207lvff8b; ; ; # 0.ⴇتجم
+ðŸ˜ï¼Žá‚§ó€³‘\uFD50ñ«ƒ±; 0.Ⴇ󀳑\u062A\u062C\u0645ñ«ƒ±; [B1, B5, V6]; 0.xn--pgbe9e344c2725svff8b; ; ; # 0.Ⴇتجم
+0.Ⴇ󀳑\u062A\u062C\u0645񫃱; ; [B1, B5, V6]; 0.xn--pgbe9e344c2725svff8b; ; ; # 0.Ⴇتجم
+0.ⴇ󀳑\u062A\u062C\u0645񫃱; ; [B1, B5, V6]; 0.xn--pgbe9ez79qd207lvff8b; ; ; # 0.ⴇتجم
0.xn--pgbe9ez79qd207lvff8b; 0.ⴇ󀳑\u062A\u062C\u0645񫃱; [B1, B5, V6]; 0.xn--pgbe9ez79qd207lvff8b; ; ; # 0.ⴇتجم
0.xn--pgbe9e344c2725svff8b; 0.Ⴇ󀳑\u062A\u062C\u0645񫃱; [B1, B5, V6]; 0.xn--pgbe9e344c2725svff8b; ; ; # 0.Ⴇتجم
-ðŸ˜ï¼Žâ´‡ó€³‘\uFD50ñ«ƒ±; 0.ⴇ󀳑\u062A\u062C\u0645ñ«ƒ±; [B1, B5, P1, V6]; 0.xn--pgbe9ez79qd207lvff8b; ; ; # 0.ⴇتجم
+ðŸ˜ï¼Žâ´‡ó€³‘\uFD50ñ«ƒ±; 0.ⴇ󀳑\u062A\u062C\u0645ñ«ƒ±; [B1, B5, V6]; 0.xn--pgbe9ez79qd207lvff8b; ; ; # 0.ⴇتجم
𑇀â–.âžá °; ; [V5]; xn--9zh3057f.xn--j7e103b; ; ; # 𑇀â–.âžá °
xn--9zh3057f.xn--j7e103b; 𑇀â–.âžá °; [V5]; xn--9zh3057f.xn--j7e103b; ; ; # 𑇀â–.âžá °
-\u200D-\u067A.ò¯©; ; [B1, C2, P1, V6]; xn----qrc357q.xn--ts49b; ; xn----qrc.xn--ts49b; [B1, P1, V3, V6] # -Ùº.
+\u200D-\u067A.ò¯©; ; [B1, C2, V6]; xn----qrc357q.xn--ts49b; ; xn----qrc.xn--ts49b; [B1, V3, V6] # -Ùº.
xn----qrc.xn--ts49b; -\u067A.ò¯©; [B1, V3, V6]; xn----qrc.xn--ts49b; ; ; # -Ùº.
xn----qrc357q.xn--ts49b; \u200D-\u067A.ò¯©; [B1, C2, V6]; xn----qrc357q.xn--ts49b; ; ; # -Ùº.
-á ¢ð®‚ð«˜å¯ï½¡\u200C≯✳; á ¢ð®‚ð«˜å¯.\u200C≯✳; [B1, B5, C1, P1, V6]; xn--46e6675axzzhota.xn--0ug06gu8f; ; xn--46e6675axzzhota.xn--hdh99p; [B1, B5, P1, V6] # á ¢ð®‚ð«˜å¯.≯✳
-á ¢ð®‚ð«˜å¯ï½¡\u200C>\u0338✳; á ¢ð®‚ð«˜å¯.\u200C≯✳; [B1, B5, C1, P1, V6]; xn--46e6675axzzhota.xn--0ug06gu8f; ; xn--46e6675axzzhota.xn--hdh99p; [B1, B5, P1, V6] # á ¢ð®‚ð«˜å¯.≯✳
-á ¢ð®‚ð«˜å¯ã€‚\u200C≯✳; á ¢ð®‚ð«˜å¯.\u200C≯✳; [B1, B5, C1, P1, V6]; xn--46e6675axzzhota.xn--0ug06gu8f; ; xn--46e6675axzzhota.xn--hdh99p; [B1, B5, P1, V6] # á ¢ð®‚ð«˜å¯.≯✳
-á ¢ð®‚ð«˜å¯ã€‚\u200C>\u0338✳; á ¢ð®‚ð«˜å¯.\u200C≯✳; [B1, B5, C1, P1, V6]; xn--46e6675axzzhota.xn--0ug06gu8f; ; xn--46e6675axzzhota.xn--hdh99p; [B1, B5, P1, V6] # á ¢ð®‚ð«˜å¯.≯✳
-xn--46e6675axzzhota.xn--hdh99p; á ¢ð®‚ð«˜å¯.≯✳; [B1, B5, V6]; xn--46e6675axzzhota.xn--hdh99p; ; ; # á ¢ð®‚ð«˜å¯.≯✳
-xn--46e6675axzzhota.xn--0ug06gu8f; á ¢ð®‚ð«˜å¯.\u200C≯✳; [B1, B5, C1, V6]; xn--46e6675axzzhota.xn--0ug06gu8f; ; ; # á ¢ð®‚ð«˜å¯.≯✳
-\u200D。󸲜ႺႴ𞨇; \u200D.󸲜ႺႴ𞨇; [B1, B5, B6, C2, P1, V6]; xn--1ug.xn--sndl01647an3h1h; ; .xn--sndl01647an3h1h; [B5, B6, P1, V6, A4_2] # .ႺႴ
-\u200D。󸲜ႺႴ𞨇; \u200D.󸲜ႺႴ𞨇; [B1, B5, B6, C2, P1, V6]; xn--1ug.xn--sndl01647an3h1h; ; .xn--sndl01647an3h1h; [B5, B6, P1, V6, A4_2] # .ႺႴ
-\u200D。󸲜ⴚⴔ𞨇; \u200D.󸲜ⴚⴔ𞨇; [B1, B5, B6, C2, P1, V6]; xn--1ug.xn--cljl81825an3r4h; ; .xn--cljl81825an3r4h; [B5, B6, P1, V6, A4_2] # .ⴚⴔ
-\u200D。󸲜Ⴚⴔ𞨇; \u200D.󸲜Ⴚⴔ𞨇; [B1, B5, B6, C2, P1, V6]; xn--1ug.xn--ynd036lq981an3r4h; ; .xn--ynd036lq981an3r4h; [B5, B6, P1, V6, A4_2] # .Ⴚⴔ
+á ¢ð®‚ð«˜å¯ï½¡\u200C≯✳; á ¢ð®‚ð«˜å¯.\u200C≯✳; [B1, B5, C1]; xn--46e6675axzzhota.xn--0ug06gu8f; ; xn--46e6675axzzhota.xn--hdh99p; [B1, B5] # á ¢ð®‚ð«˜å¯.≯✳
+á ¢ð®‚ð«˜å¯ï½¡\u200C>\u0338✳; á ¢ð®‚ð«˜å¯.\u200C≯✳; [B1, B5, C1]; xn--46e6675axzzhota.xn--0ug06gu8f; ; xn--46e6675axzzhota.xn--hdh99p; [B1, B5] # á ¢ð®‚ð«˜å¯.≯✳
+á ¢ð®‚ð«˜å¯ã€‚\u200C≯✳; á ¢ð®‚ð«˜å¯.\u200C≯✳; [B1, B5, C1]; xn--46e6675axzzhota.xn--0ug06gu8f; ; xn--46e6675axzzhota.xn--hdh99p; [B1, B5] # á ¢ð®‚ð«˜å¯.≯✳
+á ¢ð®‚ð«˜å¯ã€‚\u200C>\u0338✳; á ¢ð®‚ð«˜å¯.\u200C≯✳; [B1, B5, C1]; xn--46e6675axzzhota.xn--0ug06gu8f; ; xn--46e6675axzzhota.xn--hdh99p; [B1, B5] # á ¢ð®‚ð«˜å¯.≯✳
+xn--46e6675axzzhota.xn--hdh99p; á ¢ð®‚ð«˜å¯.≯✳; [B1, B5]; xn--46e6675axzzhota.xn--hdh99p; ; ; # á ¢ð®‚ð«˜å¯.≯✳
+xn--46e6675axzzhota.xn--0ug06gu8f; á ¢ð®‚ð«˜å¯.\u200C≯✳; [B1, B5, C1]; xn--46e6675axzzhota.xn--0ug06gu8f; ; ; # á ¢ð®‚ð«˜å¯.≯✳
+\u200D。󸲜ႺႴ𞨇; \u200D.󸲜ႺႴ𞨇; [B1, B5, B6, C2, V6]; xn--1ug.xn--sndl01647an3h1h; ; .xn--sndl01647an3h1h; [B5, B6, V6, A4_2] # .ႺႴ
+\u200D。󸲜ႺႴ𞨇; \u200D.󸲜ႺႴ𞨇; [B1, B5, B6, C2, V6]; xn--1ug.xn--sndl01647an3h1h; ; .xn--sndl01647an3h1h; [B5, B6, V6, A4_2] # .ႺႴ
+\u200D。󸲜ⴚⴔ𞨇; \u200D.󸲜ⴚⴔ𞨇; [B1, B5, B6, C2, V6]; xn--1ug.xn--cljl81825an3r4h; ; .xn--cljl81825an3r4h; [B5, B6, V6, A4_2] # .ⴚⴔ
+\u200D。󸲜Ⴚⴔ𞨇; \u200D.󸲜Ⴚⴔ𞨇; [B1, B5, B6, C2, V6]; xn--1ug.xn--ynd036lq981an3r4h; ; .xn--ynd036lq981an3r4h; [B5, B6, V6, A4_2] # .Ⴚⴔ
.xn--ynd036lq981an3r4h; .󸲜Ⴚⴔ𞨇; [B5, B6, V6, X4_2]; .xn--ynd036lq981an3r4h; [B5, B6, V6, A4_2]; ; # .Ⴚⴔ
xn--1ug.xn--ynd036lq981an3r4h; \u200D.󸲜Ⴚⴔ𞨇; [B1, B5, B6, C2, V6]; xn--1ug.xn--ynd036lq981an3r4h; ; ; # .Ⴚⴔ
.xn--cljl81825an3r4h; .󸲜ⴚⴔ𞨇; [B5, B6, V6, X4_2]; .xn--cljl81825an3r4h; [B5, B6, V6, A4_2]; ; # .ⴚⴔ
xn--1ug.xn--cljl81825an3r4h; \u200D.󸲜ⴚⴔ𞨇; [B1, B5, B6, C2, V6]; xn--1ug.xn--cljl81825an3r4h; ; ; # .ⴚⴔ
.xn--sndl01647an3h1h; .󸲜ႺႴ𞨇; [B5, B6, V6, X4_2]; .xn--sndl01647an3h1h; [B5, B6, V6, A4_2]; ; # .ႺႴ
xn--1ug.xn--sndl01647an3h1h; \u200D.󸲜ႺႴ𞨇; [B1, B5, B6, C2, V6]; xn--1ug.xn--sndl01647an3h1h; ; ; # .ႺႴ
-\u200D。󸲜ⴚⴔ𞨇; \u200D.󸲜ⴚⴔ𞨇; [B1, B5, B6, C2, P1, V6]; xn--1ug.xn--cljl81825an3r4h; ; .xn--cljl81825an3r4h; [B5, B6, P1, V6, A4_2] # .ⴚⴔ
-\u200D。󸲜Ⴚⴔ𞨇; \u200D.󸲜Ⴚⴔ𞨇; [B1, B5, B6, C2, P1, V6]; xn--1ug.xn--ynd036lq981an3r4h; ; .xn--ynd036lq981an3r4h; [B5, B6, P1, V6, A4_2] # .Ⴚⴔ
+\u200D。󸲜ⴚⴔ𞨇; \u200D.󸲜ⴚⴔ𞨇; [B1, B5, B6, C2, V6]; xn--1ug.xn--cljl81825an3r4h; ; .xn--cljl81825an3r4h; [B5, B6, V6, A4_2] # .ⴚⴔ
+\u200D。󸲜Ⴚⴔ𞨇; \u200D.󸲜Ⴚⴔ𞨇; [B1, B5, B6, C2, V6]; xn--1ug.xn--ynd036lq981an3r4h; ; .xn--ynd036lq981an3r4h; [B5, B6, V6, A4_2] # .Ⴚⴔ
-3.\u200Dヌᢕ; ; [C2, V3]; -3.xn--fbf739aq5o; ; -3.xn--fbf115j; [V3] # -3.ヌᢕ
-3.xn--fbf115j; -3.ヌᢕ; [V3]; -3.xn--fbf115j; ; ; # -3.ヌᢕ
-3.xn--fbf739aq5o; -3.\u200Dヌᢕ; [C2, V3]; -3.xn--fbf739aq5o; ; ; # -3.ヌᢕ
-🂃\u0666ß\u200D。󠠂ò­°ðž©’-; 🂃\u0666ß\u200D.ó  ‚ò­°ðž©’-; [B1, C2, P1, V3, V6]; xn--zca34z68yzu83b.xn----nz8rh7531csznt; ; xn--ss-pyd98921c.xn----nz8rh7531csznt; [B1, P1, V3, V6] # 🂃٦ß.-
-🂃\u0666SS\u200D。󠠂ò­°ðž©’-; 🂃\u0666ss\u200D.ó  ‚ò­°ðž©’-; [B1, C2, P1, V3, V6]; xn--ss-pyd483x5k99b.xn----nz8rh7531csznt; ; xn--ss-pyd98921c.xn----nz8rh7531csznt; [B1, P1, V3, V6] # 🂃٦ss.-
-🂃\u0666ss\u200D。󠠂ò­°ðž©’-; 🂃\u0666ss\u200D.ó  ‚ò­°ðž©’-; [B1, C2, P1, V3, V6]; xn--ss-pyd483x5k99b.xn----nz8rh7531csznt; ; xn--ss-pyd98921c.xn----nz8rh7531csznt; [B1, P1, V3, V6] # 🂃٦ss.-
+🂃\u0666ß\u200D。󠠂ò­°ðž©’-; 🂃\u0666ß\u200D.ó  ‚ò­°ðž©’-; [B1, C2, V3, V6]; xn--zca34z68yzu83b.xn----nz8rh7531csznt; ; xn--ss-pyd98921c.xn----nz8rh7531csznt; [B1, V3, V6] # 🂃٦ß.-
+🂃\u0666SS\u200D。󠠂ò­°ðž©’-; 🂃\u0666ss\u200D.ó  ‚ò­°ðž©’-; [B1, C2, V3, V6]; xn--ss-pyd483x5k99b.xn----nz8rh7531csznt; ; xn--ss-pyd98921c.xn----nz8rh7531csznt; [B1, V3, V6] # 🂃٦ss.-
+🂃\u0666ss\u200D。󠠂ò­°ðž©’-; 🂃\u0666ss\u200D.ó  ‚ò­°ðž©’-; [B1, C2, V3, V6]; xn--ss-pyd483x5k99b.xn----nz8rh7531csznt; ; xn--ss-pyd98921c.xn----nz8rh7531csznt; [B1, V3, V6] # 🂃٦ss.-
xn--ss-pyd98921c.xn----nz8rh7531csznt; 🂃\u0666ss.ó  ‚ò­°ðž©’-; [B1, V3, V6]; xn--ss-pyd98921c.xn----nz8rh7531csznt; ; ; # 🂃٦ss.-
xn--ss-pyd483x5k99b.xn----nz8rh7531csznt; 🂃\u0666ss\u200D.ó  ‚ò­°ðž©’-; [B1, C2, V3, V6]; xn--ss-pyd483x5k99b.xn----nz8rh7531csznt; ; ; # 🂃٦ss.-
xn--zca34z68yzu83b.xn----nz8rh7531csznt; 🂃\u0666ß\u200D.ó  ‚ò­°ðž©’-; [B1, C2, V3, V6]; xn--zca34z68yzu83b.xn----nz8rh7531csznt; ; ; # 🂃٦ß.-
-🂃\u0666Ss\u200D。󠠂ò­°ðž©’-; 🂃\u0666ss\u200D.ó  ‚ò­°ðž©’-; [B1, C2, P1, V3, V6]; xn--ss-pyd483x5k99b.xn----nz8rh7531csznt; ; xn--ss-pyd98921c.xn----nz8rh7531csznt; [B1, P1, V3, V6] # 🂃٦ss.-
-ꇟ-ð¾º\u069F。ò°€º\u200C; ꇟ-ð¾º\u069F.ò°€º\u200C; [B5, B6, C1, P1, V6]; xn----utc4430jd3zd.xn--0ugx6670i; ; xn----utc4430jd3zd.xn--bp20d; [B5, B6, P1, V6] # ꇟ-ð¾ºÚŸ.
+🂃\u0666Ss\u200D。󠠂ò­°ðž©’-; 🂃\u0666ss\u200D.ó  ‚ò­°ðž©’-; [B1, C2, V3, V6]; xn--ss-pyd483x5k99b.xn----nz8rh7531csznt; ; xn--ss-pyd98921c.xn----nz8rh7531csznt; [B1, V3, V6] # 🂃٦ss.-
+ꇟ-ð¾º\u069F。ò°€º\u200C; ꇟ-ð¾º\u069F.ò°€º\u200C; [B5, B6, C1, V6]; xn----utc4430jd3zd.xn--0ugx6670i; ; xn----utc4430jd3zd.xn--bp20d; [B5, B6, V6] # ꇟ-ð¾ºÚŸ.
xn----utc4430jd3zd.xn--bp20d; ꇟ-ð¾º\u069F.ò°€º; [B5, B6, V6]; xn----utc4430jd3zd.xn--bp20d; ; ; # ꇟ-ð¾ºÚŸ.
xn----utc4430jd3zd.xn--0ugx6670i; ꇟ-ð¾º\u069F.ò°€º\u200C; [B5, B6, C1, V6]; xn----utc4430jd3zd.xn--0ugx6670i; ; ; # ꇟ-ð¾ºÚŸ.
-\u0665.\u0484ð¨—ð©‹ð´¤ƒ; ; [B1, P1, V5, V6]; xn--eib.xn--n3a0405kus8eft5l; ; ; # Ù¥.Ò„ð¨—ð©‹
+\u0665.\u0484ð¨—ð©‹ð´¤ƒ; ; [B1, V5, V6]; xn--eib.xn--n3a0405kus8eft5l; ; ; # Ù¥.Ò„ð¨—ð©‹
xn--eib.xn--n3a0405kus8eft5l; \u0665.\u0484ð¨—ð©‹ð´¤ƒ; [B1, V5, V6]; xn--eib.xn--n3a0405kus8eft5l; ; ; # Ù¥.Ò„ð¨—ð©‹
--.ñ±¼“\u0649ð¨¿; ; [B1, B5, B6, P1, V3, V6]; -.xn--lhb4124khbq4b; ; ; # -.Ù‰ð¨¿
+-.ñ±¼“\u0649ð¨¿; ; [B1, B5, B6, V3, V6]; -.xn--lhb4124khbq4b; ; ; # -.Ù‰ð¨¿
-.xn--lhb4124khbq4b; -.ñ±¼“\u0649ð¨¿; [B1, B5, B6, V3, V6]; -.xn--lhb4124khbq4b; ; ; # -.Ù‰ð¨¿
-󾬨ς.𞶙녫ß; ; [B2, B3, P1, V6]; xn--3xa96659r.xn--zca5051g4h4i; ; xn--4xa76659r.xn--ss-d64i8755h; # ς.녫ß
-󾬨ς.𞶙녫ß; 󾬨ς.𞶙녫ß; [B2, B3, P1, V6]; xn--3xa96659r.xn--zca5051g4h4i; ; xn--4xa76659r.xn--ss-d64i8755h; # ς.녫ß
-󾬨Σ.𞶙녫SS; 󾬨σ.𞶙녫ss; [B2, B3, P1, V6]; xn--4xa76659r.xn--ss-d64i8755h; ; ; # σ.녫ss
-󾬨Σ.𞶙녫SS; 󾬨σ.𞶙녫ss; [B2, B3, P1, V6]; xn--4xa76659r.xn--ss-d64i8755h; ; ; # σ.녫ss
-󾬨σ.𞶙녫ss; ; [B2, B3, P1, V6]; xn--4xa76659r.xn--ss-d64i8755h; ; ; # σ.녫ss
-󾬨σ.𞶙녫ss; 󾬨σ.𞶙녫ss; [B2, B3, P1, V6]; xn--4xa76659r.xn--ss-d64i8755h; ; ; # σ.녫ss
-󾬨Σ.𞶙녫ss; 󾬨σ.𞶙녫ss; [B2, B3, P1, V6]; xn--4xa76659r.xn--ss-d64i8755h; ; ; # σ.녫ss
-󾬨Σ.𞶙녫ss; 󾬨σ.𞶙녫ss; [B2, B3, P1, V6]; xn--4xa76659r.xn--ss-d64i8755h; ; ; # σ.녫ss
-󾬨Σ.𞶙녫Ss; 󾬨σ.𞶙녫ss; [B2, B3, P1, V6]; xn--4xa76659r.xn--ss-d64i8755h; ; ; # σ.녫ss
-󾬨Σ.𞶙녫Ss; 󾬨σ.𞶙녫ss; [B2, B3, P1, V6]; xn--4xa76659r.xn--ss-d64i8755h; ; ; # σ.녫ss
+󾬨ς.𞶙녫ß; ; [B2, B3, V6]; xn--3xa96659r.xn--zca5051g4h4i; ; xn--4xa76659r.xn--ss-d64i8755h; # ς.녫ß
+󾬨ς.𞶙녫ß; 󾬨ς.𞶙녫ß; [B2, B3, V6]; xn--3xa96659r.xn--zca5051g4h4i; ; xn--4xa76659r.xn--ss-d64i8755h; # ς.녫ß
+󾬨Σ.𞶙녫SS; 󾬨σ.𞶙녫ss; [B2, B3, V6]; xn--4xa76659r.xn--ss-d64i8755h; ; ; # σ.녫ss
+󾬨Σ.𞶙녫SS; 󾬨σ.𞶙녫ss; [B2, B3, V6]; xn--4xa76659r.xn--ss-d64i8755h; ; ; # σ.녫ss
+󾬨σ.𞶙녫ss; ; [B2, B3, V6]; xn--4xa76659r.xn--ss-d64i8755h; ; ; # σ.녫ss
+󾬨σ.𞶙녫ss; 󾬨σ.𞶙녫ss; [B2, B3, V6]; xn--4xa76659r.xn--ss-d64i8755h; ; ; # σ.녫ss
+󾬨Σ.𞶙녫ss; 󾬨σ.𞶙녫ss; [B2, B3, V6]; xn--4xa76659r.xn--ss-d64i8755h; ; ; # σ.녫ss
+󾬨Σ.𞶙녫ss; 󾬨σ.𞶙녫ss; [B2, B3, V6]; xn--4xa76659r.xn--ss-d64i8755h; ; ; # σ.녫ss
+󾬨Σ.𞶙녫Ss; 󾬨σ.𞶙녫ss; [B2, B3, V6]; xn--4xa76659r.xn--ss-d64i8755h; ; ; # σ.녫ss
+󾬨Σ.𞶙녫Ss; 󾬨σ.𞶙녫ss; [B2, B3, V6]; xn--4xa76659r.xn--ss-d64i8755h; ; ; # σ.녫ss
xn--4xa76659r.xn--ss-d64i8755h; 󾬨σ.𞶙녫ss; [B2, B3, V6]; xn--4xa76659r.xn--ss-d64i8755h; ; ; # σ.녫ss
-󾬨Σ.𞶙녫ß; 󾬨σ.𞶙녫ß; [B2, B3, P1, V6]; xn--4xa76659r.xn--zca5051g4h4i; ; xn--4xa76659r.xn--ss-d64i8755h; # σ.녫ß
-󾬨Σ.𞶙녫ß; 󾬨σ.𞶙녫ß; [B2, B3, P1, V6]; xn--4xa76659r.xn--zca5051g4h4i; ; xn--4xa76659r.xn--ss-d64i8755h; # σ.녫ß
-󾬨σ.𞶙녫ß; ; [B2, B3, P1, V6]; xn--4xa76659r.xn--zca5051g4h4i; ; xn--4xa76659r.xn--ss-d64i8755h; # σ.녫ß
-󾬨σ.𞶙녫ß; 󾬨σ.𞶙녫ß; [B2, B3, P1, V6]; xn--4xa76659r.xn--zca5051g4h4i; ; xn--4xa76659r.xn--ss-d64i8755h; # σ.녫ß
+󾬨Σ.𞶙녫ß; 󾬨σ.𞶙녫ß; [B2, B3, V6]; xn--4xa76659r.xn--zca5051g4h4i; ; xn--4xa76659r.xn--ss-d64i8755h; # σ.녫ß
+󾬨Σ.𞶙녫ß; 󾬨σ.𞶙녫ß; [B2, B3, V6]; xn--4xa76659r.xn--zca5051g4h4i; ; xn--4xa76659r.xn--ss-d64i8755h; # σ.녫ß
+󾬨σ.𞶙녫ß; ; [B2, B3, V6]; xn--4xa76659r.xn--zca5051g4h4i; ; xn--4xa76659r.xn--ss-d64i8755h; # σ.녫ß
+󾬨σ.𞶙녫ß; 󾬨σ.𞶙녫ß; [B2, B3, V6]; xn--4xa76659r.xn--zca5051g4h4i; ; xn--4xa76659r.xn--ss-d64i8755h; # σ.녫ß
xn--4xa76659r.xn--zca5051g4h4i; 󾬨σ.𞶙녫ß; [B2, B3, V6]; xn--4xa76659r.xn--zca5051g4h4i; ; ; # σ.녫ß
xn--3xa96659r.xn--zca5051g4h4i; 󾬨ς.𞶙녫ß; [B2, B3, V6]; xn--3xa96659r.xn--zca5051g4h4i; ; ; # ς.녫ß
-Ⅎ\u17D2\u200D。≠\u200D\u200C; Ⅎ\u17D2\u200D.≠\u200D\u200C; [C1, C2, P1, V6]; xn--u4e823bcza.xn--0ugb89o; ; xn--u4e319b.xn--1ch; [P1, V6] # Ⅎ្.≠
-Ⅎ\u17D2\u200D。=\u0338\u200D\u200C; Ⅎ\u17D2\u200D.≠\u200D\u200C; [C1, C2, P1, V6]; xn--u4e823bcza.xn--0ugb89o; ; xn--u4e319b.xn--1ch; [P1, V6] # Ⅎ្.≠
-Ⅎ\u17D2\u200D。≠\u200D\u200C; Ⅎ\u17D2\u200D.≠\u200D\u200C; [C1, C2, P1, V6]; xn--u4e823bcza.xn--0ugb89o; ; xn--u4e319b.xn--1ch; [P1, V6] # Ⅎ្.≠
-Ⅎ\u17D2\u200D。=\u0338\u200D\u200C; Ⅎ\u17D2\u200D.≠\u200D\u200C; [C1, C2, P1, V6]; xn--u4e823bcza.xn--0ugb89o; ; xn--u4e319b.xn--1ch; [P1, V6] # Ⅎ្.≠
-ⅎ\u17D2\u200D。=\u0338\u200D\u200C; ⅎ\u17D2\u200D.≠\u200D\u200C; [C1, C2, P1, V6]; xn--u4e823bq1a.xn--0ugb89o; ; xn--u4e969b.xn--1ch; [P1, V6] # ⅎ្.≠
-ⅎ\u17D2\u200D。≠\u200D\u200C; ⅎ\u17D2\u200D.≠\u200D\u200C; [C1, C2, P1, V6]; xn--u4e823bq1a.xn--0ugb89o; ; xn--u4e969b.xn--1ch; [P1, V6] # ⅎ្.≠
-xn--u4e969b.xn--1ch; ⅎ\u17D2.≠; [V6]; xn--u4e969b.xn--1ch; ; ; # ⅎ្.≠
-xn--u4e823bq1a.xn--0ugb89o; ⅎ\u17D2\u200D.≠\u200D\u200C; [C1, C2, V6]; xn--u4e823bq1a.xn--0ugb89o; ; ; # ⅎ្.≠
+Ⅎ\u17D2\u200D。≠\u200D\u200C; Ⅎ\u17D2\u200D.≠\u200D\u200C; [C1, C2, V6]; xn--u4e823bcza.xn--0ugb89o; ; xn--u4e319b.xn--1ch; [V6] # Ⅎ្.≠
+Ⅎ\u17D2\u200D。=\u0338\u200D\u200C; Ⅎ\u17D2\u200D.≠\u200D\u200C; [C1, C2, V6]; xn--u4e823bcza.xn--0ugb89o; ; xn--u4e319b.xn--1ch; [V6] # Ⅎ្.≠
+Ⅎ\u17D2\u200D。≠\u200D\u200C; Ⅎ\u17D2\u200D.≠\u200D\u200C; [C1, C2, V6]; xn--u4e823bcza.xn--0ugb89o; ; xn--u4e319b.xn--1ch; [V6] # Ⅎ្.≠
+Ⅎ\u17D2\u200D。=\u0338\u200D\u200C; Ⅎ\u17D2\u200D.≠\u200D\u200C; [C1, C2, V6]; xn--u4e823bcza.xn--0ugb89o; ; xn--u4e319b.xn--1ch; [V6] # Ⅎ្.≠
+ⅎ\u17D2\u200D。=\u0338\u200D\u200C; ⅎ\u17D2\u200D.≠\u200D\u200C; [C1, C2]; xn--u4e823bq1a.xn--0ugb89o; ; xn--u4e969b.xn--1ch; [] # ⅎ្.≠
+ⅎ\u17D2\u200D。≠\u200D\u200C; ⅎ\u17D2\u200D.≠\u200D\u200C; [C1, C2]; xn--u4e823bq1a.xn--0ugb89o; ; xn--u4e969b.xn--1ch; [] # ⅎ្.≠
+xn--u4e969b.xn--1ch; ⅎ\u17D2.≠; ; xn--u4e969b.xn--1ch; ; ; # ⅎ្.≠
+ⅎ\u17D2.≠; ; ; xn--u4e969b.xn--1ch; ; ; # ⅎ្.≠
+ⅎ\u17D2.=\u0338; ⅎ\u17D2.≠; ; xn--u4e969b.xn--1ch; ; ; # ⅎ្.≠
+Ⅎ\u17D2.=\u0338; Ⅎ\u17D2.≠; [V6]; xn--u4e319b.xn--1ch; ; ; # Ⅎ្.≠
+Ⅎ\u17D2.≠; ; [V6]; xn--u4e319b.xn--1ch; ; ; # Ⅎ្.≠
xn--u4e319b.xn--1ch; Ⅎ\u17D2.≠; [V6]; xn--u4e319b.xn--1ch; ; ; # Ⅎ្.≠
+xn--u4e823bq1a.xn--0ugb89o; ⅎ\u17D2\u200D.≠\u200D\u200C; [C1, C2]; xn--u4e823bq1a.xn--0ugb89o; ; ; # ⅎ្.≠
xn--u4e823bcza.xn--0ugb89o; Ⅎ\u17D2\u200D.≠\u200D\u200C; [C1, C2, V6]; xn--u4e823bcza.xn--0ugb89o; ; ; # Ⅎ្.≠
-ⅎ\u17D2\u200D。=\u0338\u200D\u200C; ⅎ\u17D2\u200D.≠\u200D\u200C; [C1, C2, P1, V6]; xn--u4e823bq1a.xn--0ugb89o; ; xn--u4e969b.xn--1ch; [P1, V6] # ⅎ្.≠
-ⅎ\u17D2\u200D。≠\u200D\u200C; ⅎ\u17D2\u200D.≠\u200D\u200C; [C1, C2, P1, V6]; xn--u4e823bq1a.xn--0ugb89o; ; xn--u4e969b.xn--1ch; [P1, V6] # ⅎ្.≠
-ð‹º\uAAF6\uA953󧦉.\u200C\u1714\u068F; ð‹º\uAAF6\uA953󧦉.\u200C\u1714\u068F; [B1, C1, P1, V6]; xn--3j9a14ak27osbz2o.xn--ljb175f1wg; ; xn--3j9a14ak27osbz2o.xn--ljb175f; [B1, P1, V5, V6] # ð‹ºê«¶ê¥“.᜔Ú
-ð‹º\uAAF6\uA953󧦉.\u200C\u1714\u068F; ; [B1, C1, P1, V6]; xn--3j9a14ak27osbz2o.xn--ljb175f1wg; ; xn--3j9a14ak27osbz2o.xn--ljb175f; [B1, P1, V5, V6] # ð‹ºê«¶ê¥“.᜔Ú
+ⅎ\u17D2\u200D。=\u0338\u200D\u200C; ⅎ\u17D2\u200D.≠\u200D\u200C; [C1, C2]; xn--u4e823bq1a.xn--0ugb89o; ; xn--u4e969b.xn--1ch; [] # ⅎ្.≠
+ⅎ\u17D2\u200D。≠\u200D\u200C; ⅎ\u17D2\u200D.≠\u200D\u200C; [C1, C2]; xn--u4e823bq1a.xn--0ugb89o; ; xn--u4e969b.xn--1ch; [] # ⅎ្.≠
+ð‹º\uAAF6\uA953󧦉.\u200C\u1714\u068F; ð‹º\uAAF6\uA953󧦉.\u200C\u1714\u068F; [B1, C1, V6]; xn--3j9a14ak27osbz2o.xn--ljb175f1wg; ; xn--3j9a14ak27osbz2o.xn--ljb175f; [B1, V5, V6] # ð‹ºê«¶ê¥“.᜔Ú
+ð‹º\uAAF6\uA953󧦉.\u200C\u1714\u068F; ; [B1, C1, V6]; xn--3j9a14ak27osbz2o.xn--ljb175f1wg; ; xn--3j9a14ak27osbz2o.xn--ljb175f; [B1, V5, V6] # ð‹ºê«¶ê¥“.᜔Ú
xn--3j9a14ak27osbz2o.xn--ljb175f; ð‹º\uAAF6\uA953󧦉.\u1714\u068F; [B1, V5, V6]; xn--3j9a14ak27osbz2o.xn--ljb175f; ; ; # ð‹ºê«¶ê¥“.᜔Ú
xn--3j9a14ak27osbz2o.xn--ljb175f1wg; ð‹º\uAAF6\uA953󧦉.\u200C\u1714\u068F; [B1, C1, V6]; xn--3j9a14ak27osbz2o.xn--ljb175f1wg; ; ; # ð‹ºê«¶ê¥“.᜔Ú
-񺔯\u0FA8.≯; 񺔯\u0FA8.≯; [P1, V6]; xn--4fd57150h.xn--hdh; ; ; # ྨ.≯
-񺔯\u0FA8.>\u0338; 񺔯\u0FA8.≯; [P1, V6]; xn--4fd57150h.xn--hdh; ; ; # ྨ.≯
-񺔯\u0FA8.≯; ; [P1, V6]; xn--4fd57150h.xn--hdh; ; ; # ྨ.≯
-񺔯\u0FA8.>\u0338; 񺔯\u0FA8.≯; [P1, V6]; xn--4fd57150h.xn--hdh; ; ; # ྨ.≯
+񺔯\u0FA8.≯; 񺔯\u0FA8.≯; [V6]; xn--4fd57150h.xn--hdh; ; ; # ྨ.≯
+񺔯\u0FA8.>\u0338; 񺔯\u0FA8.≯; [V6]; xn--4fd57150h.xn--hdh; ; ; # ྨ.≯
+񺔯\u0FA8.≯; ; [V6]; xn--4fd57150h.xn--hdh; ; ; # ྨ.≯
+񺔯\u0FA8.>\u0338; 񺔯\u0FA8.≯; [V6]; xn--4fd57150h.xn--hdh; ; ; # ྨ.≯
xn--4fd57150h.xn--hdh; 񺔯\u0FA8.≯; [V6]; xn--4fd57150h.xn--hdh; ; ; # ྨ.≯
-\u200D𞡄Ⴓ.ð‡½; \u200D𞡄Ⴓ.ð‡½; [B1, B3, B6, C2, P1, V5, V6]; xn--rnd379ex885a.xn--m27c; ; xn--rnd5552v.xn--m27c; [B1, B2, B3, B6, P1, V5, V6] # 𞡄Ⴓ.ð‡½
-\u200D𞡄Ⴓ.ð‡½; ; [B1, B3, B6, C2, P1, V5, V6]; xn--rnd379ex885a.xn--m27c; ; xn--rnd5552v.xn--m27c; [B1, B2, B3, B6, P1, V5, V6] # 𞡄Ⴓ.ð‡½
-\u200Dðž¡„â´“.ð‡½; ; [B1, B3, B6, C2, V5]; xn--1ugz52c4i16a.xn--m27c; ; xn--blj7492l.xn--m27c; [B1, B2, B3, B6, V5] # ðž¡„â´“.ð‡½
-xn--blj7492l.xn--m27c; ðž¡„â´“.ð‡½; [B1, B2, B3, B6, V5]; xn--blj7492l.xn--m27c; ; ; # ðž¡„â´“.ð‡½
-xn--1ugz52c4i16a.xn--m27c; \u200Dðž¡„â´“.ð‡½; [B1, B3, B6, C2, V5]; xn--1ugz52c4i16a.xn--m27c; ; ; # ðž¡„â´“.ð‡½
-xn--rnd5552v.xn--m27c; 𞡄Ⴓ.ð‡½; [B1, B2, B3, B6, V5, V6]; xn--rnd5552v.xn--m27c; ; ; # 𞡄Ⴓ.ð‡½
-xn--rnd379ex885a.xn--m27c; \u200D𞡄Ⴓ.ð‡½; [B1, B3, B6, C2, V5, V6]; xn--rnd379ex885a.xn--m27c; ; ; # 𞡄Ⴓ.ð‡½
-\u200D𞡄ⴓ.ð‡½; \u200Dðž¡„â´“.ð‡½; [B1, B3, B6, C2, V5]; xn--1ugz52c4i16a.xn--m27c; ; xn--blj7492l.xn--m27c; [B1, B2, B3, B6, V5] # ðž¡„â´“.ð‡½
+\u200D𞡄Ⴓ.ð‡½; \u200D𞡄Ⴓ.ð‡½; [B1, C2, V5, V6]; xn--rnd379ex885a.xn--m27c; ; xn--rnd5552v.xn--m27c; [B1, B2, B3, V5, V6] # 𞡄Ⴓ.ð‡½
+\u200D𞡄Ⴓ.ð‡½; ; [B1, C2, V5, V6]; xn--rnd379ex885a.xn--m27c; ; xn--rnd5552v.xn--m27c; [B1, B2, B3, V5, V6] # 𞡄Ⴓ.ð‡½
+\u200Dðž¡„â´“.ð‡½; ; [B1, C2, V5]; xn--1ugz52c4i16a.xn--m27c; ; xn--blj7492l.xn--m27c; [B1, B2, B3, V5] # ðž¡„â´“.ð‡½
+xn--blj7492l.xn--m27c; ðž¡„â´“.ð‡½; [B1, B2, B3, V5]; xn--blj7492l.xn--m27c; ; ; # ðž¡„â´“.ð‡½
+xn--1ugz52c4i16a.xn--m27c; \u200Dðž¡„â´“.ð‡½; [B1, C2, V5]; xn--1ugz52c4i16a.xn--m27c; ; ; # ðž¡„â´“.ð‡½
+xn--rnd5552v.xn--m27c; 𞡄Ⴓ.ð‡½; [B1, B2, B3, V5, V6]; xn--rnd5552v.xn--m27c; ; ; # 𞡄Ⴓ.ð‡½
+xn--rnd379ex885a.xn--m27c; \u200D𞡄Ⴓ.ð‡½; [B1, C2, V5, V6]; xn--rnd379ex885a.xn--m27c; ; ; # 𞡄Ⴓ.ð‡½
+\u200D𞡄ⴓ.ð‡½; \u200Dðž¡„â´“.ð‡½; [B1, C2, V5]; xn--1ugz52c4i16a.xn--m27c; ; xn--blj7492l.xn--m27c; [B1, B2, B3, V5] # ðž¡„â´“.ð‡½
ðª’ß\uA8EA.ᡤ; ðª’ß\uA8EA.ᡤ; [B2, B3]; xn--zca2517f2hvc.xn--08e; ; xn--ss-tu9hw933a.xn--08e; # ðª’ß꣪.ᡤ
ðª’ß\uA8EA.ᡤ; ; [B2, B3]; xn--zca2517f2hvc.xn--08e; ; xn--ss-tu9hw933a.xn--08e; # ðª’ß꣪.ᡤ
ðª’SS\uA8EA.ᡤ; ðª’ss\uA8EA.ᡤ; [B2, B3]; xn--ss-tu9hw933a.xn--08e; ; ; # ðª’ss꣪.ᡤ
@@ -2501,23 +2513,23 @@ xn--zca2517f2hvc.xn--08e; ðª’ß\uA8EA.ᡤ; [B2, B3]; xn--zca2517f2hvc.xn--08e;
ð¨¿ó †Œé¸®ð‘š¶.σ; ð¨¿é¸®ð‘š¶.σ; [V5]; xn--l76a726rt2h.xn--4xa; ; ; # ð¨¿é¸®ð‘š¶.σ
xn--l76a726rt2h.xn--4xa; ð¨¿é¸®ð‘š¶.σ; [V5]; xn--l76a726rt2h.xn--4xa; ; ; # ð¨¿é¸®ð‘š¶.σ
xn--l76a726rt2h.xn--3xa; ð¨¿é¸®ð‘š¶.Ï‚; [V5]; xn--l76a726rt2h.xn--3xa; ; ; # ð¨¿é¸®ð‘š¶.Ï‚
-⒗𞤬。-𑚶; ⒗𞤬.-𑚶; [B1, P1, V3, V6]; xn--8shw466n.xn----4j0j; ; ; # ⒗𞤬.-𑚶
+⒗𞤬。-𑚶; ⒗𞤬.-𑚶; [B1, V3, V6]; xn--8shw466n.xn----4j0j; ; ; # ⒗𞤬.-𑚶
16.𞤬。-𑚶; 16.𞤬.-𑚶; [B1, V3]; 16.xn--ke6h.xn----4j0j; ; ; # 16.𞤬.-𑚶
16.𞤊。-𑚶; 16.𞤬.-𑚶; [B1, V3]; 16.xn--ke6h.xn----4j0j; ; ; # 16.𞤬.-𑚶
16.xn--ke6h.xn----4j0j; 16.𞤬.-𑚶; [B1, V3]; 16.xn--ke6h.xn----4j0j; ; ; # 16.𞤬.-𑚶
-⒗𞤊。-𑚶; ⒗𞤬.-𑚶; [B1, P1, V3, V6]; xn--8shw466n.xn----4j0j; ; ; # ⒗𞤬.-𑚶
+⒗𞤊。-𑚶; ⒗𞤬.-𑚶; [B1, V3, V6]; xn--8shw466n.xn----4j0j; ; ; # ⒗𞤬.-𑚶
xn--8shw466n.xn----4j0j; ⒗𞤬.-𑚶; [B1, V3, V6]; xn--8shw466n.xn----4j0j; ; ; # ⒗𞤬.-𑚶
-\u08B3𞤿⾫。ð¹£\u068Fâ’ˆ; \u08B3𞤿隹.ð¹£\u068Fâ’ˆ; [B1, B2, B3, P1, V6]; xn--8yb0383efiwk.xn--ljb064mol4n; ; ; # ࢳ𞤿隹.ð¹£Úâ’ˆ
+\u08B3𞤿⾫。ð¹£\u068Fâ’ˆ; \u08B3𞤿隹.ð¹£\u068Fâ’ˆ; [B1, B2, B3, V6]; xn--8yb0383efiwk.xn--ljb064mol4n; ; ; # ࢳ𞤿隹.ð¹£Úâ’ˆ
\u08B3𞤿隹。ð¹£\u068F1.; \u08B3𞤿隹.ð¹£\u068F1.; [B1, B2, B3]; xn--8yb0383efiwk.xn--1-wsc3373r.; ; ; # ࢳ𞤿隹.ð¹£Ú1.
\u08B3ðž¤éš¹ã€‚ð¹£\u068F1.; \u08B3𞤿隹.ð¹£\u068F1.; [B1, B2, B3]; xn--8yb0383efiwk.xn--1-wsc3373r.; ; ; # ࢳ𞤿隹.ð¹£Ú1.
xn--8yb0383efiwk.xn--1-wsc3373r.; \u08B3𞤿隹.ð¹£\u068F1.; [B1, B2, B3]; xn--8yb0383efiwk.xn--1-wsc3373r.; ; ; # ࢳ𞤿隹.ð¹£Ú1.
-\u08B3ðž¤â¾«ï½¡ð¹£\u068Fâ’ˆ; \u08B3𞤿隹.ð¹£\u068Fâ’ˆ; [B1, B2, B3, P1, V6]; xn--8yb0383efiwk.xn--ljb064mol4n; ; ; # ࢳ𞤿隹.ð¹£Úâ’ˆ
+\u08B3ðž¤â¾«ï½¡ð¹£\u068Fâ’ˆ; \u08B3𞤿隹.ð¹£\u068Fâ’ˆ; [B1, B2, B3, V6]; xn--8yb0383efiwk.xn--ljb064mol4n; ; ; # ࢳ𞤿隹.ð¹£Úâ’ˆ
xn--8yb0383efiwk.xn--ljb064mol4n; \u08B3𞤿隹.ð¹£\u068Fâ’ˆ; [B1, B2, B3, V6]; xn--8yb0383efiwk.xn--ljb064mol4n; ; ; # ࢳ𞤿隹.ð¹£Úâ’ˆ
-\u2433𚎛ðŸ§\u0661.á¡¢8\u0F72\u0600; \u2433𚎛5\u0661.á¡¢8\u0F72\u0600; [B5, B6, P1, V6]; xn--5-bqc410un435a.xn--8-rkc763epjj; ; ; # 5Ù¡.á¡¢8ི
-\u2433𚎛5\u0661.ᡢ8\u0F72\u0600; ; [B5, B6, P1, V6]; xn--5-bqc410un435a.xn--8-rkc763epjj; ; ; # 5١.ᡢ8ི
+\u2433𚎛ðŸ§\u0661.á¡¢8\u0F72\u0600; \u2433𚎛5\u0661.á¡¢8\u0F72\u0600; [B5, B6, V6]; xn--5-bqc410un435a.xn--8-rkc763epjj; ; ; # 5Ù¡.á¡¢8ི
+\u2433𚎛5\u0661.ᡢ8\u0F72\u0600; ; [B5, B6, V6]; xn--5-bqc410un435a.xn--8-rkc763epjj; ; ; # 5١.ᡢ8ི
xn--5-bqc410un435a.xn--8-rkc763epjj; \u2433𚎛5\u0661.ᡢ8\u0F72\u0600; [B5, B6, V6]; xn--5-bqc410un435a.xn--8-rkc763epjj; ; ; # 5١.ᡢ8ི
-ð¹ .🄀⒒-ó¨°ˆ; ; [B1, P1, V6]; xn--7n0d.xn----xcp9757q1s13g; ; ; # ð¹ .🄀⒒-
-ð¹ .0.11.-ó¨°ˆ; ; [B1, P1, V3, V6]; xn--7n0d.0.11.xn----8j07m; ; ; # ð¹ .0.11.-
+ð¹ .🄀⒒-ó¨°ˆ; ; [B1, V6]; xn--7n0d.xn----xcp9757q1s13g; ; ; # ð¹ .🄀⒒-
+ð¹ .0.11.-ó¨°ˆ; ; [B1, V3, V6]; xn--7n0d.0.11.xn----8j07m; ; ; # ð¹ .0.11.-
xn--7n0d.0.11.xn----8j07m; ð¹ .0.11.-ó¨°ˆ; [B1, V3, V6]; xn--7n0d.0.11.xn----8j07m; ; ; # ð¹ .0.11.-
xn--7n0d.xn----xcp9757q1s13g; ð¹ .🄀⒒-ó¨°ˆ; [B1, V6]; xn--7n0d.xn----xcp9757q1s13g; ; ; # ð¹ .🄀⒒-
Ï‚-。\u200CðŸ­-; Ï‚-.\u200C1-; [C1, V3]; xn----xmb.xn--1--i1t; ; xn----zmb.1-; [V3] # Ï‚-.1-
@@ -2529,176 +2541,176 @@ xn----zmb.xn--1--i1t; σ-.\u200C1-; [C1, V3]; xn----zmb.xn--1--i1t; ; ; # σ-.1
xn----xmb.xn--1--i1t; Ï‚-.\u200C1-; [C1, V3]; xn----xmb.xn--1--i1t; ; ; # Ï‚-.1-
Σ-。\u200CðŸ­-; σ-.\u200C1-; [C1, V3]; xn----zmb.xn--1--i1t; ; xn----zmb.1-; [V3] # σ-.1-
σ-。\u200CðŸ­-; σ-.\u200C1-; [C1, V3]; xn----zmb.xn--1--i1t; ; xn----zmb.1-; [V3] # σ-.1-
-\u1734-\u0CE2.󠄩Ⴄ; \u1734-\u0CE2.Ⴄ; [P1, V5, V6]; xn----ggf830f.xn--cnd; ; ; # ᜴-ೢ.Ⴄ
-\u1734-\u0CE2.󠄩Ⴄ; \u1734-\u0CE2.Ⴄ; [P1, V5, V6]; xn----ggf830f.xn--cnd; ; ; # ᜴-ೢ.Ⴄ
+\u1734-\u0CE2.󠄩Ⴄ; \u1734-\u0CE2.Ⴄ; [V5, V6]; xn----ggf830f.xn--cnd; ; ; # ᜴-ೢ.Ⴄ
+\u1734-\u0CE2.󠄩Ⴄ; \u1734-\u0CE2.Ⴄ; [V5, V6]; xn----ggf830f.xn--cnd; ; ; # ᜴-ೢ.Ⴄ
\u1734-\u0CE2.󠄩ⴄ; \u1734-\u0CE2.ⴄ; [V5]; xn----ggf830f.xn--vkj; ; ; # ᜴-ೢ.ⴄ
xn----ggf830f.xn--vkj; \u1734-\u0CE2.ⴄ; [V5]; xn----ggf830f.xn--vkj; ; ; # ᜴-ೢ.ⴄ
xn----ggf830f.xn--cnd; \u1734-\u0CE2.Ⴄ; [V5, V6]; xn----ggf830f.xn--cnd; ; ; # ᜴-ೢ.Ⴄ
\u1734-\u0CE2.󠄩ⴄ; \u1734-\u0CE2.ⴄ; [V5]; xn----ggf830f.xn--vkj; ; ; # ᜴-ೢ.ⴄ
-ò­ˆ—♋\u06BBð¦¥ï½¡\u0954â’ˆ; ò­ˆ—♋\u06BBð¦¥.\u0954â’ˆ; [B1, B5, B6, P1, V5, V6]; xn--ukb372n129m3rs7f.xn--u3b240l; ; ; # ♋ڻð¦¥.॔⒈
-ò­ˆ—♋\u06BBð¦¥ã€‚\u09541.; ò­ˆ—♋\u06BBð¦¥.\u09541.; [B1, B5, B6, P1, V5, V6]; xn--ukb372n129m3rs7f.xn--1-fyd.; ; ; # ♋ڻð¦¥.॔1.
+ò­ˆ—♋\u06BBð¦¥ï½¡\u0954â’ˆ; ò­ˆ—♋\u06BBð¦¥.\u0954â’ˆ; [B1, B5, B6, V5, V6]; xn--ukb372n129m3rs7f.xn--u3b240l; ; ; # ♋ڻð¦¥.॔⒈
+ò­ˆ—♋\u06BBð¦¥ã€‚\u09541.; ò­ˆ—♋\u06BBð¦¥.\u09541.; [B1, B5, B6, V5, V6]; xn--ukb372n129m3rs7f.xn--1-fyd.; ; ; # ♋ڻð¦¥.॔1.
xn--ukb372n129m3rs7f.xn--1-fyd.; ò­ˆ—♋\u06BBð¦¥.\u09541.; [B1, B5, B6, V5, V6]; xn--ukb372n129m3rs7f.xn--1-fyd.; ; ; # ♋ڻð¦¥.॔1.
xn--ukb372n129m3rs7f.xn--u3b240l; ò­ˆ—♋\u06BBð¦¥.\u0954â’ˆ; [B1, B5, B6, V5, V6]; xn--ukb372n129m3rs7f.xn--u3b240l; ; ; # ♋ڻð¦¥.॔⒈
-\u05A4.\u06C1\u1AB3\u200C; \u05A4.\u06C1\u1AB3\u200C; [B1, B3, B6, C1, V5]; xn--vcb.xn--0kb623hm1d; ; xn--vcb.xn--0kb623h; [B1, B3, B6, V5] # Ö¤.Û᪳
-\u05A4.\u06C1\u1AB3\u200C; ; [B1, B3, B6, C1, V5]; xn--vcb.xn--0kb623hm1d; ; xn--vcb.xn--0kb623h; [B1, B3, B6, V5] # Ö¤.Û᪳
-xn--vcb.xn--0kb623h; \u05A4.\u06C1\u1AB3; [B1, B3, B6, V5]; xn--vcb.xn--0kb623h; ; ; # Ö¤.Û᪳
-xn--vcb.xn--0kb623hm1d; \u05A4.\u06C1\u1AB3\u200C; [B1, B3, B6, C1, V5]; xn--vcb.xn--0kb623hm1d; ; ; # Ö¤.Û᪳
-ñ¢­\u0846≮\u0ACD.𞦊; ñ¢­\u0846≮\u0ACD.𞦊; [B5, B6, P1, V6]; xn--4vb80kq29ayo62l.xn--8g6h; ; ; # ࡆ≮à«.
-ñ¢­\u0846<\u0338\u0ACD.𞦊; ñ¢­\u0846≮\u0ACD.𞦊; [B5, B6, P1, V6]; xn--4vb80kq29ayo62l.xn--8g6h; ; ; # ࡆ≮à«.
-ñ¢­\u0846≮\u0ACD.𞦊; ; [B5, B6, P1, V6]; xn--4vb80kq29ayo62l.xn--8g6h; ; ; # ࡆ≮à«.
-ñ¢­\u0846<\u0338\u0ACD.𞦊; ñ¢­\u0846≮\u0ACD.𞦊; [B5, B6, P1, V6]; xn--4vb80kq29ayo62l.xn--8g6h; ; ; # ࡆ≮à«.
+\u05A4.\u06C1\u1AB3\u200C; \u05A4.\u06C1\u1AB3\u200C; [B1, B3, C1, V5]; xn--vcb.xn--0kb623hm1d; ; xn--vcb.xn--0kb623h; [B1, V5] # Ö¤.Û᪳
+\u05A4.\u06C1\u1AB3\u200C; ; [B1, B3, C1, V5]; xn--vcb.xn--0kb623hm1d; ; xn--vcb.xn--0kb623h; [B1, V5] # Ö¤.Û᪳
+xn--vcb.xn--0kb623h; \u05A4.\u06C1\u1AB3; [B1, V5]; xn--vcb.xn--0kb623h; ; ; # Ö¤.Û᪳
+xn--vcb.xn--0kb623hm1d; \u05A4.\u06C1\u1AB3\u200C; [B1, B3, C1, V5]; xn--vcb.xn--0kb623hm1d; ; ; # Ö¤.Û᪳
+ñ¢­\u0846≮\u0ACD.𞦊; ñ¢­\u0846≮\u0ACD.𞦊; [B5, B6, V6]; xn--4vb80kq29ayo62l.xn--8g6h; ; ; # ࡆ≮à«.
+ñ¢­\u0846<\u0338\u0ACD.𞦊; ñ¢­\u0846≮\u0ACD.𞦊; [B5, B6, V6]; xn--4vb80kq29ayo62l.xn--8g6h; ; ; # ࡆ≮à«.
+ñ¢­\u0846≮\u0ACD.𞦊; ; [B5, B6, V6]; xn--4vb80kq29ayo62l.xn--8g6h; ; ; # ࡆ≮à«.
+ñ¢­\u0846<\u0338\u0ACD.𞦊; ñ¢­\u0846≮\u0ACD.𞦊; [B5, B6, V6]; xn--4vb80kq29ayo62l.xn--8g6h; ; ; # ࡆ≮à«.
xn--4vb80kq29ayo62l.xn--8g6h; ñ¢­\u0846≮\u0ACD.𞦊; [B5, B6, V6]; xn--4vb80kq29ayo62l.xn--8g6h; ; ; # ࡆ≮à«.
-\u200D。𞀘⒈ê¡æ“‰; \u200D.𞀘⒈ê¡æ“‰; [C2, P1, V5, V6]; xn--1ug.xn--tsh026uql4bew9p; ; .xn--tsh026uql4bew9p; [P1, V5, V6, A4_2] # .𞀘⒈ê¡æ“‰
+\u200D。𞀘⒈ê¡æ“‰; \u200D.𞀘⒈ê¡æ“‰; [C2, V5, V6]; xn--1ug.xn--tsh026uql4bew9p; ; .xn--tsh026uql4bew9p; [V5, V6, A4_2] # .𞀘⒈ê¡æ“‰
\u200D。𞀘1.ê¡æ“‰; \u200D.𞀘1.ê¡æ“‰; [C2, V5]; xn--1ug.xn--1-1p4r.xn--s7uv61m; ; .xn--1-1p4r.xn--s7uv61m; [V5, A4_2] # .𞀘1.ê¡æ“‰
.xn--1-1p4r.xn--s7uv61m; .𞀘1.ê¡æ“‰; [V5, X4_2]; .xn--1-1p4r.xn--s7uv61m; [V5, A4_2]; ; # .𞀘1.ê¡æ“‰
xn--1ug.xn--1-1p4r.xn--s7uv61m; \u200D.𞀘1.ê¡æ“‰; [C2, V5]; xn--1ug.xn--1-1p4r.xn--s7uv61m; ; ; # .𞀘1.ê¡æ“‰
.xn--tsh026uql4bew9p; .𞀘⒈ê¡æ“‰; [V5, V6, X4_2]; .xn--tsh026uql4bew9p; [V5, V6, A4_2]; ; # .𞀘⒈ê¡æ“‰
xn--1ug.xn--tsh026uql4bew9p; \u200D.𞀘⒈ê¡æ“‰; [C2, V5, V6]; xn--1ug.xn--tsh026uql4bew9p; ; ; # .𞀘⒈ê¡æ“‰
-₈\u07CB.\uFB64≠; 8\u07CB.\u067F≠; [B1, B3, P1, V6]; xn--8-zbd.xn--4ib883l; ; ; # 8ߋ.ٿ≠
-₈\u07CB.\uFB64=\u0338; 8\u07CB.\u067F≠; [B1, B3, P1, V6]; xn--8-zbd.xn--4ib883l; ; ; # 8ߋ.ٿ≠
-8\u07CB.\u067F≠; ; [B1, B3, P1, V6]; xn--8-zbd.xn--4ib883l; ; ; # 8ߋ.ٿ≠
-8\u07CB.\u067F=\u0338; 8\u07CB.\u067F≠; [B1, B3, P1, V6]; xn--8-zbd.xn--4ib883l; ; ; # 8ߋ.ٿ≠
-xn--8-zbd.xn--4ib883l; 8\u07CB.\u067F≠; [B1, B3, V6]; xn--8-zbd.xn--4ib883l; ; ; # 8ߋ.ٿ≠
-ᢡ\u07DEò¹£.â’’\u0642ð‘¦; ; [B1, B5, P1, V6]; xn--5sb596fi873t.xn--ehb336mvy7n; ; ; # ᢡߞ.â’’Ù‚ð‘¦
-ᢡ\u07DEò¹£.11.\u0642ð‘¦; ; [B1, B5, P1, V6]; xn--5sb596fi873t.11.xn--ehb4198k; ; ; # ᢡߞ.11.Ù‚ð‘¦
+₈\u07CB.\uFB64≠; 8\u07CB.\u067F≠; [B1, B3]; xn--8-zbd.xn--4ib883l; ; ; # 8ߋ.ٿ≠
+₈\u07CB.\uFB64=\u0338; 8\u07CB.\u067F≠; [B1, B3]; xn--8-zbd.xn--4ib883l; ; ; # 8ߋ.ٿ≠
+8\u07CB.\u067F≠; ; [B1, B3]; xn--8-zbd.xn--4ib883l; ; ; # 8ߋ.ٿ≠
+8\u07CB.\u067F=\u0338; 8\u07CB.\u067F≠; [B1, B3]; xn--8-zbd.xn--4ib883l; ; ; # 8ߋ.ٿ≠
+xn--8-zbd.xn--4ib883l; 8\u07CB.\u067F≠; [B1, B3]; xn--8-zbd.xn--4ib883l; ; ; # 8ߋ.ٿ≠
+ᢡ\u07DEò¹£.â’’\u0642ð‘¦; ; [B1, B5, V6]; xn--5sb596fi873t.xn--ehb336mvy7n; ; ; # ᢡߞ.â’’Ù‚ð‘¦
+ᢡ\u07DEò¹£.11.\u0642ð‘¦; ; [B1, B5, V6]; xn--5sb596fi873t.11.xn--ehb4198k; ; ; # ᢡߞ.11.Ù‚ð‘¦
xn--5sb596fi873t.11.xn--ehb4198k; ᢡ\u07DEò¹£.11.\u0642ð‘¦; [B1, B5, V6]; xn--5sb596fi873t.11.xn--ehb4198k; ; ; # ᢡߞ.11.Ù‚ð‘¦
xn--5sb596fi873t.xn--ehb336mvy7n; ᢡ\u07DEò¹£.â’’\u0642ð‘¦; [B1, B5, V6]; xn--5sb596fi873t.xn--ehb336mvy7n; ; ; # ᢡߞ.â’’Ù‚ð‘¦
-\u0E48-ð¹ºðŸœ.\u0363\u06E1â’; \u0E48-ð¹º4.\u0363\u06E1â’; [B1, P1, V5, V6]; xn---4-owiz479s.xn--eva20pjv9a; ; ; # ่-ð¹º4.Í£Û¡â’
+\u0E48-ð¹ºðŸœ.\u0363\u06E1â’; \u0E48-ð¹º4.\u0363\u06E1â’; [B1, V5, V6]; xn---4-owiz479s.xn--eva20pjv9a; ; ; # ่-ð¹º4.Í£Û¡â’
\u0E48-ð¹º4.\u0363\u06E18.; ; [B1, V5]; xn---4-owiz479s.xn--8-ihb69x.; ; ; # ่-ð¹º4.Í£Û¡8.
xn---4-owiz479s.xn--8-ihb69x.; \u0E48-ð¹º4.\u0363\u06E18.; [B1, V5]; xn---4-owiz479s.xn--8-ihb69x.; ; ; # ่-ð¹º4.Í£Û¡8.
xn---4-owiz479s.xn--eva20pjv9a; \u0E48-ð¹º4.\u0363\u06E1â’; [B1, V5, V6]; xn---4-owiz479s.xn--eva20pjv9a; ; ; # ่-ð¹º4.Í£Û¡â’
-â«ï½¡áƒ€-óƒ¢; â«.Ⴠ-óƒ¢; [P1, V6]; xn--r3i.xn----z1g58579u; ; ; # â«.Ⴠ-
-â«ã€‚Ⴠ-óƒ¢; â«.Ⴠ-óƒ¢; [P1, V6]; xn--r3i.xn----z1g58579u; ; ; # â«.Ⴠ-
-â«ã€‚â´ -óƒ¢; â«.â´ -óƒ¢; [P1, V6]; xn--r3i.xn----2wst7439i; ; ; # â«.â´ -
+â«ï½¡áƒ€-óƒ¢; â«.Ⴠ-óƒ¢; [V6]; xn--r3i.xn----z1g58579u; ; ; # â«.Ⴠ-
+â«ã€‚Ⴠ-óƒ¢; â«.Ⴠ-óƒ¢; [V6]; xn--r3i.xn----z1g58579u; ; ; # â«.Ⴠ-
+â«ã€‚â´ -óƒ¢; â«.â´ -óƒ¢; [V6]; xn--r3i.xn----2wst7439i; ; ; # â«.â´ -
xn--r3i.xn----2wst7439i; â«.â´ -óƒ¢; [V6]; xn--r3i.xn----2wst7439i; ; ; # â«.â´ -
xn--r3i.xn----z1g58579u; â«.Ⴠ-óƒ¢; [V6]; xn--r3i.xn----z1g58579u; ; ; # â«.Ⴠ-
-â«ï½¡â´ -óƒ¢; â«.â´ -óƒ¢; [P1, V6]; xn--r3i.xn----2wst7439i; ; ; # â«.â´ -
+â«ï½¡â´ -óƒ¢; â«.â´ -óƒ¢; [V6]; xn--r3i.xn----2wst7439i; ; ; # â«.â´ -
𑑂◊.⦟∠; 𑑂◊.⦟∠; [V5]; xn--01h3338f.xn--79g270a; ; ; # 𑑂◊.⦟∠
𑑂◊.⦟∠; ; [V5]; xn--01h3338f.xn--79g270a; ; ; # 𑑂◊.⦟∠
xn--01h3338f.xn--79g270a; 𑑂◊.⦟∠; [V5]; xn--01h3338f.xn--79g270a; ; ; # 𑑂◊.⦟∠
-𿌰-\u0662。󋸛ꡂ; 𿌰-\u0662.󋸛ꡂ; [B5, B6, P1, V6]; xn----dqc20828e.xn--bc9an2879c; ; ; # -٢.ꡂ
+𿌰-\u0662。󋸛ꡂ; 𿌰-\u0662.󋸛ꡂ; [B5, B6, V6]; xn----dqc20828e.xn--bc9an2879c; ; ; # -٢.ꡂ
xn----dqc20828e.xn--bc9an2879c; 𿌰-\u0662.󋸛ꡂ; [B5, B6, V6]; xn----dqc20828e.xn--bc9an2879c; ; ; # -٢.ꡂ
-\u0678。ó ¬\u0741𞪭ð¹ª; \u064A\u0674.ó ¬\u0741𞪭ð¹ª; [B1, P1, V6]; xn--mhb8f.xn--oob2585kfdsfsbo7h; ; ; # يٴ.Ýð¹ª
-\u064A\u0674。ó ¬\u0741𞪭ð¹ª; \u064A\u0674.ó ¬\u0741𞪭ð¹ª; [B1, P1, V6]; xn--mhb8f.xn--oob2585kfdsfsbo7h; ; ; # يٴ.Ýð¹ª
+\u0678。ó ¬\u0741𞪭ð¹ª; \u064A\u0674.ó ¬\u0741𞪭ð¹ª; [B1, V6]; xn--mhb8f.xn--oob2585kfdsfsbo7h; ; ; # يٴ.Ýð¹ª
+\u064A\u0674。ó ¬\u0741𞪭ð¹ª; \u064A\u0674.ó ¬\u0741𞪭ð¹ª; [B1, V6]; xn--mhb8f.xn--oob2585kfdsfsbo7h; ; ; # يٴ.Ýð¹ª
xn--mhb8f.xn--oob2585kfdsfsbo7h; \u064A\u0674.ó ¬\u0741𞪭ð¹ª; [B1, V6]; xn--mhb8f.xn--oob2585kfdsfsbo7h; ; ; # يٴ.Ýð¹ª
ð«†êŒ„。\u200Dᣬ; ð«†êŒ„.\u200Dᣬ; [B1, B2, B3, C2]; xn--y77ao18q.xn--wdf367a; ; xn--y77ao18q.xn--wdf; [B2, B3] # ð«†êŒ„.ᣬ
ð«†êŒ„。\u200Dᣬ; ð«†êŒ„.\u200Dᣬ; [B1, B2, B3, C2]; xn--y77ao18q.xn--wdf367a; ; xn--y77ao18q.xn--wdf; [B2, B3] # ð«†êŒ„.ᣬ
xn--y77ao18q.xn--wdf; ð«†êŒ„.ᣬ; [B2, B3]; xn--y77ao18q.xn--wdf; ; ; # ð«†êŒ„.ᣬ
xn--y77ao18q.xn--wdf367a; ð«†êŒ„.\u200Dᣬ; [B1, B2, B3, C2]; xn--y77ao18q.xn--wdf367a; ; ; # ð«†êŒ„.ᣬ
-₀\u0662。󅪞≯-; 0\u0662.󅪞≯-; [B1, B6, P1, V3, V6]; xn--0-dqc.xn----ogov3342l; ; ; # 0٢.≯-
-₀\u0662。󅪞>\u0338-; 0\u0662.󅪞≯-; [B1, B6, P1, V3, V6]; xn--0-dqc.xn----ogov3342l; ; ; # 0٢.≯-
-0\u0662。󅪞≯-; 0\u0662.󅪞≯-; [B1, B6, P1, V3, V6]; xn--0-dqc.xn----ogov3342l; ; ; # 0٢.≯-
-0\u0662。󅪞>\u0338-; 0\u0662.󅪞≯-; [B1, B6, P1, V3, V6]; xn--0-dqc.xn----ogov3342l; ; ; # 0٢.≯-
+₀\u0662。󅪞≯-; 0\u0662.󅪞≯-; [B1, B6, V3, V6]; xn--0-dqc.xn----ogov3342l; ; ; # 0٢.≯-
+₀\u0662。󅪞>\u0338-; 0\u0662.󅪞≯-; [B1, B6, V3, V6]; xn--0-dqc.xn----ogov3342l; ; ; # 0٢.≯-
+0\u0662。󅪞≯-; 0\u0662.󅪞≯-; [B1, B6, V3, V6]; xn--0-dqc.xn----ogov3342l; ; ; # 0٢.≯-
+0\u0662。󅪞>\u0338-; 0\u0662.󅪞≯-; [B1, B6, V3, V6]; xn--0-dqc.xn----ogov3342l; ; ; # 0٢.≯-
xn--0-dqc.xn----ogov3342l; 0\u0662.󅪞≯-; [B1, B6, V3, V6]; xn--0-dqc.xn----ogov3342l; ; ; # 0٢.≯-
-\u031Cð¹«-𞯃.ð‹¤\u0845; ; [B1, P1, V5, V6]; xn----gdb7046r692g.xn--3vb1349j; ; ; # Ìœð¹«-.ð‹¤à¡…
+\u031Cð¹«-𞯃.ð‹¤\u0845; ; [B1, V5, V6]; xn----gdb7046r692g.xn--3vb1349j; ; ; # Ìœð¹«-.ð‹¤à¡…
xn----gdb7046r692g.xn--3vb1349j; \u031Cð¹«-𞯃.ð‹¤\u0845; [B1, V5, V6]; xn----gdb7046r692g.xn--3vb1349j; ; ; # Ìœð¹«-.ð‹¤à¡…
-≠。ð©‘ð¹©áƒ\u0594; ≠.ð©‘ð¹©áƒ\u0594; [B1, P1, V5, V6]; xn--1ch.xn--fcb538c649rypog; ; ; # ≠.ð©‘ð¹©áƒÖ”
-=\u0338。ð©‘ð¹©áƒ\u0594; ≠.ð©‘ð¹©áƒ\u0594; [B1, P1, V5, V6]; xn--1ch.xn--fcb538c649rypog; ; ; # ≠.ð©‘ð¹©áƒÖ”
-≠。ð©‘ð¹©áƒ\u0594; ≠.ð©‘ð¹©áƒ\u0594; [B1, P1, V5, V6]; xn--1ch.xn--fcb538c649rypog; ; ; # ≠.ð©‘ð¹©áƒÖ”
-=\u0338。ð©‘ð¹©áƒ\u0594; ≠.ð©‘ð¹©áƒ\u0594; [B1, P1, V5, V6]; xn--1ch.xn--fcb538c649rypog; ; ; # ≠.ð©‘ð¹©áƒÖ”
-=\u0338。ð©‘ð¹©â´¡\u0594; ≠.ð©‘ð¹©â´¡\u0594; [B1, P1, V5, V6]; xn--1ch.xn--fcb363rk03mypug; ; ; # ≠.ð©‘ð¹©â´¡Ö”
-≠。ð©‘ð¹©â´¡\u0594; ≠.ð©‘ð¹©â´¡\u0594; [B1, P1, V5, V6]; xn--1ch.xn--fcb363rk03mypug; ; ; # ≠.ð©‘ð¹©â´¡Ö”
-xn--1ch.xn--fcb363rk03mypug; ≠.ð©‘ð¹©â´¡\u0594; [B1, V5, V6]; xn--1ch.xn--fcb363rk03mypug; ; ; # ≠.ð©‘ð¹©â´¡Ö”
+≠。ð©‘ð¹©áƒ\u0594; ≠.ð©‘ð¹©áƒ\u0594; [B1, V5, V6]; xn--1ch.xn--fcb538c649rypog; ; ; # ≠.ð©‘ð¹©áƒÖ”
+=\u0338。ð©‘ð¹©áƒ\u0594; ≠.ð©‘ð¹©áƒ\u0594; [B1, V5, V6]; xn--1ch.xn--fcb538c649rypog; ; ; # ≠.ð©‘ð¹©áƒÖ”
+≠。ð©‘ð¹©áƒ\u0594; ≠.ð©‘ð¹©áƒ\u0594; [B1, V5, V6]; xn--1ch.xn--fcb538c649rypog; ; ; # ≠.ð©‘ð¹©áƒÖ”
+=\u0338。ð©‘ð¹©áƒ\u0594; ≠.ð©‘ð¹©áƒ\u0594; [B1, V5, V6]; xn--1ch.xn--fcb538c649rypog; ; ; # ≠.ð©‘ð¹©áƒÖ”
+=\u0338。ð©‘ð¹©â´¡\u0594; ≠.ð©‘ð¹©â´¡\u0594; [B1, V5]; xn--1ch.xn--fcb363rk03mypug; ; ; # ≠.ð©‘ð¹©â´¡Ö”
+≠。ð©‘ð¹©â´¡\u0594; ≠.ð©‘ð¹©â´¡\u0594; [B1, V5]; xn--1ch.xn--fcb363rk03mypug; ; ; # ≠.ð©‘ð¹©â´¡Ö”
+xn--1ch.xn--fcb363rk03mypug; ≠.ð©‘ð¹©â´¡\u0594; [B1, V5]; xn--1ch.xn--fcb363rk03mypug; ; ; # ≠.ð©‘ð¹©â´¡Ö”
xn--1ch.xn--fcb538c649rypog; ≠.ð©‘ð¹©áƒ\u0594; [B1, V5, V6]; xn--1ch.xn--fcb538c649rypog; ; ; # ≠.ð©‘ð¹©áƒÖ”
-=\u0338。ð©‘ð¹©â´¡\u0594; ≠.ð©‘ð¹©â´¡\u0594; [B1, P1, V5, V6]; xn--1ch.xn--fcb363rk03mypug; ; ; # ≠.ð©‘ð¹©â´¡Ö”
-≠。ð©‘ð¹©â´¡\u0594; ≠.ð©‘ð¹©â´¡\u0594; [B1, P1, V5, V6]; xn--1ch.xn--fcb363rk03mypug; ; ; # ≠.ð©‘ð¹©â´¡Ö”
-𖫳≠.á‚ ð®€; ; [B1, B5, B6, P1, V5, V6]; xn--1ch9250k.xn--7md2659j; ; ; # 𖫳≠.á‚ ð®€
-ð–«³=\u0338.á‚ ð®€; 𖫳≠.á‚ ð®€; [B1, B5, B6, P1, V5, V6]; xn--1ch9250k.xn--7md2659j; ; ; # 𖫳≠.á‚ ð®€
-ð–«³=\u0338.â´€ð®€; 𖫳≠.â´€ð®€; [B1, B5, B6, P1, V5, V6]; xn--1ch9250k.xn--rkj6232e; ; ; # 𖫳≠.â´€ð®€
-𖫳≠.â´€ð®€; ; [B1, B5, B6, P1, V5, V6]; xn--1ch9250k.xn--rkj6232e; ; ; # 𖫳≠.â´€ð®€
-xn--1ch9250k.xn--rkj6232e; 𖫳≠.â´€ð®€; [B1, B5, B6, V5, V6]; xn--1ch9250k.xn--rkj6232e; ; ; # 𖫳≠.â´€ð®€
+=\u0338。ð©‘ð¹©â´¡\u0594; ≠.ð©‘ð¹©â´¡\u0594; [B1, V5]; xn--1ch.xn--fcb363rk03mypug; ; ; # ≠.ð©‘ð¹©â´¡Ö”
+≠。ð©‘ð¹©â´¡\u0594; ≠.ð©‘ð¹©â´¡\u0594; [B1, V5]; xn--1ch.xn--fcb363rk03mypug; ; ; # ≠.ð©‘ð¹©â´¡Ö”
+𖫳≠.á‚ ð®€; ; [B1, B5, B6, V5, V6]; xn--1ch9250k.xn--7md2659j; ; ; # 𖫳≠.á‚ ð®€
+ð–«³=\u0338.á‚ ð®€; 𖫳≠.á‚ ð®€; [B1, B5, B6, V5, V6]; xn--1ch9250k.xn--7md2659j; ; ; # 𖫳≠.á‚ ð®€
+ð–«³=\u0338.â´€ð®€; 𖫳≠.â´€ð®€; [B1, B5, B6, V5]; xn--1ch9250k.xn--rkj6232e; ; ; # 𖫳≠.â´€ð®€
+𖫳≠.â´€ð®€; ; [B1, B5, B6, V5]; xn--1ch9250k.xn--rkj6232e; ; ; # 𖫳≠.â´€ð®€
+xn--1ch9250k.xn--rkj6232e; 𖫳≠.â´€ð®€; [B1, B5, B6, V5]; xn--1ch9250k.xn--rkj6232e; ; ; # 𖫳≠.â´€ð®€
xn--1ch9250k.xn--7md2659j; 𖫳≠.á‚ ð®€; [B1, B5, B6, V5, V6]; xn--1ch9250k.xn--7md2659j; ; ; # 𖫳≠.á‚ ð®€
-ó …¾\u0736\u0726.ᢚ閪\u08E2ð©Ÿ; \u0736\u0726.ᢚ閪\u08E2ð©Ÿ; [B1, B5, B6, P1, V5, V6]; xn--wnb5a.xn--l0b161fis8gbp5m; ; ; # ܶܦ.ᢚ閪ð©Ÿ
-ó …¾\u0736\u0726.ᢚ閪\u08E2ð©Ÿ; \u0736\u0726.ᢚ閪\u08E2ð©Ÿ; [B1, B5, B6, P1, V5, V6]; xn--wnb5a.xn--l0b161fis8gbp5m; ; ; # ܶܦ.ᢚ閪ð©Ÿ
+ó …¾\u0736\u0726.ᢚ閪\u08E2ð©Ÿ; \u0736\u0726.ᢚ閪\u08E2ð©Ÿ; [B1, B5, B6, V5, V6]; xn--wnb5a.xn--l0b161fis8gbp5m; ; ; # ܶܦ.ᢚ閪ð©Ÿ
+ó …¾\u0736\u0726.ᢚ閪\u08E2ð©Ÿ; \u0736\u0726.ᢚ閪\u08E2ð©Ÿ; [B1, B5, B6, V5, V6]; xn--wnb5a.xn--l0b161fis8gbp5m; ; ; # ܶܦ.ᢚ閪ð©Ÿ
xn--wnb5a.xn--l0b161fis8gbp5m; \u0736\u0726.ᢚ閪\u08E2ð©Ÿ; [B1, B5, B6, V5, V6]; xn--wnb5a.xn--l0b161fis8gbp5m; ; ; # ܶܦ.ᢚ閪ð©Ÿ
\u200D󠇜\u06CB\uA8E9。\u20DD\u0FB0-ᛟ; \u200D\u06CB\uA8E9.\u20DD\u0FB0-ᛟ; [B1, C2, V5]; xn--blb540ke10h.xn----gmg236cj6k; ; xn--blb8114f.xn----gmg236cj6k; [B1, V5] # ۋ꣩.âƒà¾°-ᛟ
\u200D󠇜\u06CB\uA8E9。\u20DD\u0FB0-ᛟ; \u200D\u06CB\uA8E9.\u20DD\u0FB0-ᛟ; [B1, C2, V5]; xn--blb540ke10h.xn----gmg236cj6k; ; xn--blb8114f.xn----gmg236cj6k; [B1, V5] # ۋ꣩.âƒà¾°-ᛟ
xn--blb8114f.xn----gmg236cj6k; \u06CB\uA8E9.\u20DD\u0FB0-ᛟ; [B1, V5]; xn--blb8114f.xn----gmg236cj6k; ; ; # ۋ꣩.âƒà¾°-ᛟ
xn--blb540ke10h.xn----gmg236cj6k; \u200D\u06CB\uA8E9.\u20DD\u0FB0-ᛟ; [B1, C2, V5]; xn--blb540ke10h.xn----gmg236cj6k; ; ; # ۋ꣩.âƒà¾°-ᛟ
-í—ó˜–™\u0E3Aóššã€‚\u06BAðŸœ; í—ó˜–™\u0E3Aóšš.\u06BA4; [P1, V6]; xn--o4c1723h8g85gt4ya.xn--4-dvc; ; ; # í—ฺ.Úº4
-헁󘖙\u0E3Aóššã€‚\u06BAðŸœ; í—ó˜–™\u0E3Aóšš.\u06BA4; [P1, V6]; xn--o4c1723h8g85gt4ya.xn--4-dvc; ; ; # í—ฺ.Úº4
-í—ó˜–™\u0E3Aóššã€‚\u06BA4; í—ó˜–™\u0E3Aóšš.\u06BA4; [P1, V6]; xn--o4c1723h8g85gt4ya.xn--4-dvc; ; ; # í—ฺ.Úº4
-헁󘖙\u0E3Aóššã€‚\u06BA4; í—ó˜–™\u0E3Aóšš.\u06BA4; [P1, V6]; xn--o4c1723h8g85gt4ya.xn--4-dvc; ; ; # í—ฺ.Úº4
+í—ó˜–™\u0E3Aóššã€‚\u06BAðŸœ; í—ó˜–™\u0E3Aóšš.\u06BA4; [V6]; xn--o4c1723h8g85gt4ya.xn--4-dvc; ; ; # í—ฺ.Úº4
+헁󘖙\u0E3Aóššã€‚\u06BAðŸœ; í—ó˜–™\u0E3Aóšš.\u06BA4; [V6]; xn--o4c1723h8g85gt4ya.xn--4-dvc; ; ; # í—ฺ.Úº4
+í—ó˜–™\u0E3Aóššã€‚\u06BA4; í—ó˜–™\u0E3Aóšš.\u06BA4; [V6]; xn--o4c1723h8g85gt4ya.xn--4-dvc; ; ; # í—ฺ.Úº4
+헁󘖙\u0E3Aóššã€‚\u06BA4; í—ó˜–™\u0E3Aóšš.\u06BA4; [V6]; xn--o4c1723h8g85gt4ya.xn--4-dvc; ; ; # í—ฺ.Úº4
xn--o4c1723h8g85gt4ya.xn--4-dvc; í—ó˜–™\u0E3Aóšš.\u06BA4; [V6]; xn--o4c1723h8g85gt4ya.xn--4-dvc; ; ; # í—ฺ.Úº4
-ð¹­ï½¡óƒ±‚\u200CႾ; ð¹­.󃱂\u200CႾ; [B1, C1, P1, V6]; xn--lo0d.xn--2nd949eqw95u; ; xn--lo0d.xn--2nd75260n; [B1, P1, V6] # ð¹­.Ⴞ
-ð¹­ã€‚󃱂\u200CႾ; ð¹­.󃱂\u200CႾ; [B1, C1, P1, V6]; xn--lo0d.xn--2nd949eqw95u; ; xn--lo0d.xn--2nd75260n; [B1, P1, V6] # ð¹­.Ⴞ
-ð¹­ã€‚󃱂\u200Câ´ž; ð¹­.󃱂\u200Câ´ž; [B1, C1, P1, V6]; xn--lo0d.xn--0ugx72cwi33v; ; xn--lo0d.xn--mljx1099g; [B1, P1, V6] # ð¹­.â´ž
+ð¹­ï½¡óƒ±‚\u200CႾ; ð¹­.󃱂\u200CႾ; [B1, C1, V6]; xn--lo0d.xn--2nd949eqw95u; ; xn--lo0d.xn--2nd75260n; [B1, V6] # ð¹­.Ⴞ
+ð¹­ã€‚󃱂\u200CႾ; ð¹­.󃱂\u200CႾ; [B1, C1, V6]; xn--lo0d.xn--2nd949eqw95u; ; xn--lo0d.xn--2nd75260n; [B1, V6] # ð¹­.Ⴞ
+ð¹­ã€‚󃱂\u200Câ´ž; ð¹­.󃱂\u200Câ´ž; [B1, C1, V6]; xn--lo0d.xn--0ugx72cwi33v; ; xn--lo0d.xn--mljx1099g; [B1, V6] # ð¹­.â´ž
xn--lo0d.xn--mljx1099g; ð¹­.󃱂ⴞ; [B1, V6]; xn--lo0d.xn--mljx1099g; ; ; # ð¹­.â´ž
xn--lo0d.xn--0ugx72cwi33v; ð¹­.󃱂\u200Câ´ž; [B1, C1, V6]; xn--lo0d.xn--0ugx72cwi33v; ; ; # ð¹­.â´ž
xn--lo0d.xn--2nd75260n; ð¹­.󃱂Ⴞ; [B1, V6]; xn--lo0d.xn--2nd75260n; ; ; # ð¹­.Ⴞ
xn--lo0d.xn--2nd949eqw95u; ð¹­.󃱂\u200CႾ; [B1, C1, V6]; xn--lo0d.xn--2nd949eqw95u; ; ; # ð¹­.Ⴞ
-ð¹­ï½¡óƒ±‚\u200Câ´ž; ð¹­.󃱂\u200Câ´ž; [B1, C1, P1, V6]; xn--lo0d.xn--0ugx72cwi33v; ; xn--lo0d.xn--mljx1099g; [B1, P1, V6] # ð¹­.â´ž
-\uA953.\u033D𑂽馋; ; [P1, V5, V6]; xn--3j9a.xn--bua0708eqzrd; ; ; # ꥓.̽馋
+ð¹­ï½¡óƒ±‚\u200Câ´ž; ð¹­.󃱂\u200Câ´ž; [B1, C1, V6]; xn--lo0d.xn--0ugx72cwi33v; ; xn--lo0d.xn--mljx1099g; [B1, V6] # ð¹­.â´ž
+\uA953.\u033D𑂽馋; ; [V5, V6]; xn--3j9a.xn--bua0708eqzrd; ; ; # ꥓.̽馋
xn--3j9a.xn--bua0708eqzrd; \uA953.\u033D𑂽馋; [V5, V6]; xn--3j9a.xn--bua0708eqzrd; ; ; # ꥓.̽馋
-óˆ«òª›¸\u200D。䜖; óˆ«òª›¸\u200D.䜖; [C2, P1, V6]; xn--1ug30527h9mxi.xn--k0o; ; xn--g138cxw05a.xn--k0o; [P1, V6] # .䜖
-óˆ«òª›¸\u200D。䜖; óˆ«òª›¸\u200D.䜖; [C2, P1, V6]; xn--1ug30527h9mxi.xn--k0o; ; xn--g138cxw05a.xn--k0o; [P1, V6] # .䜖
+óˆ«òª›¸\u200D。䜖; óˆ«òª›¸\u200D.䜖; [C2, V6]; xn--1ug30527h9mxi.xn--k0o; ; xn--g138cxw05a.xn--k0o; [V6] # .䜖
+óˆ«òª›¸\u200D。䜖; óˆ«òª›¸\u200D.䜖; [C2, V6]; xn--1ug30527h9mxi.xn--k0o; ; xn--g138cxw05a.xn--k0o; [V6] # .䜖
xn--g138cxw05a.xn--k0o; óˆ«òª›¸.䜖; [V6]; xn--g138cxw05a.xn--k0o; ; ; # .䜖
xn--1ug30527h9mxi.xn--k0o; óˆ«òª›¸\u200D.䜖; [C2, V6]; xn--1ug30527h9mxi.xn--k0o; ; ; # .䜖
-ᡯ⚉姶🄉.۷\u200D🎪\u200D; ᡯ⚉姶🄉.۷\u200D🎪\u200D; [C2, P1, V6]; xn--c9e433epi4b3j20a.xn--kmb859ja94998b; ; xn--c9e433epi4b3j20a.xn--kmb6733w; [P1, V6] # ᡯ⚉姶🄉.۷🎪
-ᡯ⚉姶8,.۷\u200D🎪\u200D; ; [C2, P1, V6]; xn--8,-g9oy26fzu4d.xn--kmb859ja94998b; ; xn--8,-g9oy26fzu4d.xn--kmb6733w; [P1, V6] # ᡯ⚉姶8,.۷🎪
-xn--8,-g9oy26fzu4d.xn--kmb6733w; ᡯ⚉姶8,.۷🎪; [P1, V6]; xn--8,-g9oy26fzu4d.xn--kmb6733w; ; ; # ᡯ⚉姶8,.۷🎪
-xn--8,-g9oy26fzu4d.xn--kmb859ja94998b; ᡯ⚉姶8,.۷\u200D🎪\u200D; [C2, P1, V6]; xn--8,-g9oy26fzu4d.xn--kmb859ja94998b; ; ; # ᡯ⚉姶8,.۷🎪
+ᡯ⚉姶🄉.۷\u200D🎪\u200D; ᡯ⚉姶🄉.۷\u200D🎪\u200D; [C2, V6]; xn--c9e433epi4b3j20a.xn--kmb859ja94998b; ; xn--c9e433epi4b3j20a.xn--kmb6733w; [V6] # ᡯ⚉姶🄉.۷🎪
+ᡯ⚉姶8,.۷\u200D🎪\u200D; ; [C2, V6]; xn--8,-g9oy26fzu4d.xn--kmb859ja94998b; ; xn--8,-g9oy26fzu4d.xn--kmb6733w; [V6] # ᡯ⚉姶8,.۷🎪
+xn--8,-g9oy26fzu4d.xn--kmb6733w; ᡯ⚉姶8,.۷🎪; [V6]; xn--8,-g9oy26fzu4d.xn--kmb6733w; ; ; # ᡯ⚉姶8,.۷🎪
+xn--8,-g9oy26fzu4d.xn--kmb859ja94998b; ᡯ⚉姶8,.۷\u200D🎪\u200D; [C2, V6]; xn--8,-g9oy26fzu4d.xn--kmb859ja94998b; ; ; # ᡯ⚉姶8,.۷🎪
xn--c9e433epi4b3j20a.xn--kmb6733w; ᡯ⚉姶🄉.۷🎪; [V6]; xn--c9e433epi4b3j20a.xn--kmb6733w; ; ; # ᡯ⚉姶🄉.۷🎪
xn--c9e433epi4b3j20a.xn--kmb859ja94998b; ᡯ⚉姶🄉.۷\u200D🎪\u200D; [C2, V6]; xn--c9e433epi4b3j20a.xn--kmb859ja94998b; ; ; # ᡯ⚉姶🄉.۷🎪
-ðž½€.ð¹¸ðŸš–\u0E3A; ; [B1, P1, V6]; xn--0n7h.xn--o4c9032klszf; ; ; # .ð¹¸ðŸš–ฺ
+ðž½€.ð¹¸ðŸš–\u0E3A; ; [B1, V6]; xn--0n7h.xn--o4c9032klszf; ; ; # .ð¹¸ðŸš–ฺ
xn--0n7h.xn--o4c9032klszf; ðž½€.ð¹¸ðŸš–\u0E3A; [B1, V6]; xn--0n7h.xn--o4c9032klszf; ; ; # .ð¹¸ðŸš–ฺ
-Ⴔᠵ。ð¹§\u0747Û¹; á‚´á µ.ð¹§\u0747Û¹; [B1, P1, V6]; xn--snd659a.xn--mmb9ml895e; ; ; # á‚´á µ.ð¹§Ý‡Û¹
-Ⴔᠵ。ð¹§\u0747Û¹; á‚´á µ.ð¹§\u0747Û¹; [B1, P1, V6]; xn--snd659a.xn--mmb9ml895e; ; ; # á‚´á µ.ð¹§Ý‡Û¹
+Ⴔᠵ。ð¹§\u0747Û¹; á‚´á µ.ð¹§\u0747Û¹; [B1, V6]; xn--snd659a.xn--mmb9ml895e; ; ; # á‚´á µ.ð¹§Ý‡Û¹
+Ⴔᠵ。ð¹§\u0747Û¹; á‚´á µ.ð¹§\u0747Û¹; [B1, V6]; xn--snd659a.xn--mmb9ml895e; ; ; # á‚´á µ.ð¹§Ý‡Û¹
ⴔᠵ。ð¹§\u0747Û¹; ⴔᠵ.ð¹§\u0747Û¹; [B1]; xn--o7e997h.xn--mmb9ml895e; ; ; # ⴔᠵ.ð¹§Ý‡Û¹
xn--o7e997h.xn--mmb9ml895e; ⴔᠵ.ð¹§\u0747Û¹; [B1]; xn--o7e997h.xn--mmb9ml895e; ; ; # ⴔᠵ.ð¹§Ý‡Û¹
xn--snd659a.xn--mmb9ml895e; á‚´á µ.ð¹§\u0747Û¹; [B1, V6]; xn--snd659a.xn--mmb9ml895e; ; ; # á‚´á µ.ð¹§Ý‡Û¹
ⴔᠵ。ð¹§\u0747Û¹; ⴔᠵ.ð¹§\u0747Û¹; [B1]; xn--o7e997h.xn--mmb9ml895e; ; ; # ⴔᠵ.ð¹§Ý‡Û¹
-\u135Fᡈ\u200C.︒-ð–¾-; \u135Fᡈ\u200C.︒-ð–¾-; [C1, P1, V3, V5, V6]; xn--b7d82wo4h.xn-----c82nz547a; ; xn--b7d82w.xn-----c82nz547a; [P1, V3, V5, V6] # áŸá¡ˆ.︒-ð–¾-
+\u135Fᡈ\u200C.︒-ð–¾-; \u135Fᡈ\u200C.︒-ð–¾-; [C1, V3, V5, V6]; xn--b7d82wo4h.xn-----c82nz547a; ; xn--b7d82w.xn-----c82nz547a; [V3, V5, V6] # áŸá¡ˆ.︒-ð–¾-
\u135Fᡈ\u200C.。-ð–¾-; \u135Fᡈ\u200C..-ð–¾-; [C1, V3, V5, X4_2]; xn--b7d82wo4h..xn-----pe4u; [C1, V3, V5, A4_2]; xn--b7d82w..xn-----pe4u; [V3, V5, A4_2] # áŸá¡ˆ..-ð–¾-
xn--b7d82w..xn-----pe4u; \u135Fᡈ..-ð–¾-; [V3, V5, X4_2]; xn--b7d82w..xn-----pe4u; [V3, V5, A4_2]; ; # áŸá¡ˆ..-ð–¾-
xn--b7d82wo4h..xn-----pe4u; \u135Fᡈ\u200C..-ð–¾-; [C1, V3, V5, X4_2]; xn--b7d82wo4h..xn-----pe4u; [C1, V3, V5, A4_2]; ; # áŸá¡ˆ..-ð–¾-
xn--b7d82w.xn-----c82nz547a; \u135Fᡈ.︒-ð–¾-; [V3, V5, V6]; xn--b7d82w.xn-----c82nz547a; ; ; # áŸá¡ˆ.︒-ð–¾-
xn--b7d82wo4h.xn-----c82nz547a; \u135Fᡈ\u200C.︒-ð–¾-; [C1, V3, V5, V6]; xn--b7d82wo4h.xn-----c82nz547a; ; ; # áŸá¡ˆ.︒-ð–¾-
-⒈\u0601⒖\u200C.\u1DF0\u07DB; ; [B1, C1, P1, V5, V6]; xn--jfb844kmfdwb.xn--2sb914i; ; xn--jfb347mib.xn--2sb914i; [B1, P1, V5, V6] # ⒈⒖.ᷰߛ
-1.\u060115.\u200C.\u1DF0\u07DB; ; [B1, C1, P1, V5, V6]; 1.xn--15-1pd.xn--0ug.xn--2sb914i; ; 1.xn--15-1pd..xn--2sb914i; [B1, P1, V5, V6, A4_2] # 1.15..á·°ß›
+⒈\u0601⒖\u200C.\u1DF0\u07DB; ; [B1, C1, V5, V6]; xn--jfb844kmfdwb.xn--2sb914i; ; xn--jfb347mib.xn--2sb914i; [B1, V5, V6] # ⒈⒖.ᷰߛ
+1.\u060115.\u200C.\u1DF0\u07DB; ; [B1, C1, V5, V6]; 1.xn--15-1pd.xn--0ug.xn--2sb914i; ; 1.xn--15-1pd..xn--2sb914i; [B1, V5, V6, A4_2] # 1.15..á·°ß›
1.xn--15-1pd..xn--2sb914i; 1.\u060115..\u1DF0\u07DB; [B1, V5, V6, X4_2]; 1.xn--15-1pd..xn--2sb914i; [B1, V5, V6, A4_2]; ; # 1.15..á·°ß›
1.xn--15-1pd.xn--0ug.xn--2sb914i; 1.\u060115.\u200C.\u1DF0\u07DB; [B1, C1, V5, V6]; 1.xn--15-1pd.xn--0ug.xn--2sb914i; ; ; # 1.15..á·°ß›
xn--jfb347mib.xn--2sb914i; ⒈\u0601⒖.\u1DF0\u07DB; [B1, V5, V6]; xn--jfb347mib.xn--2sb914i; ; ; # ⒈⒖.ᷰߛ
xn--jfb844kmfdwb.xn--2sb914i; ⒈\u0601⒖\u200C.\u1DF0\u07DB; [B1, C1, V5, V6]; xn--jfb844kmfdwb.xn--2sb914i; ; ; # ⒈⒖.ᷰߛ
-ð©œã€‚-\u0B4Dá‚«; ð©œ.-\u0B4Dá‚«; [P1, V3, V5, V6]; xn--792h.xn----bse632b; ; ; # ð©œ.-à­á‚«
+ð©œã€‚-\u0B4Dá‚«; ð©œ.-\u0B4Dá‚«; [V3, V5, V6]; xn--792h.xn----bse632b; ; ; # ð©œ.-à­á‚«
ð©œã€‚-\u0B4Dâ´‹; ð©œ.-\u0B4Dâ´‹; [V3, V5]; xn--792h.xn----bse820x; ; ; # ð©œ.-à­â´‹
xn--792h.xn----bse820x; ð©œ.-\u0B4Dâ´‹; [V3, V5]; xn--792h.xn----bse820x; ; ; # ð©œ.-à­â´‹
xn--792h.xn----bse632b; ð©œ.-\u0B4Dá‚«; [V3, V5, V6]; xn--792h.xn----bse632b; ; ; # ð©œ.-à­á‚«
-ßჀ.\u0620刯Ⴝ; ; [B2, B3, P1, V6]; xn--zca442f.xn--fgb845cb66c; ; xn--ss-wgk.xn--fgb845cb66c; # ßჀ.ؠ刯Ⴝ
+ßჀ.\u0620刯Ⴝ; ; [B2, B3, V6]; xn--zca442f.xn--fgb845cb66c; ; xn--ss-wgk.xn--fgb845cb66c; # ßჀ.ؠ刯Ⴝ
ßⴠ.\u0620刯â´; ; [B2, B3]; xn--zca277t.xn--fgb670rovy; ; xn--ss-j81a.xn--fgb670rovy; # ßⴠ.ؠ刯â´
-SSჀ.\u0620刯Ⴝ; ssჀ.\u0620刯Ⴝ; [B2, B3, P1, V6]; xn--ss-wgk.xn--fgb845cb66c; ; ; # ssჀ.ؠ刯Ⴝ
+SSჀ.\u0620刯Ⴝ; ssჀ.\u0620刯Ⴝ; [B2, B3, V6]; xn--ss-wgk.xn--fgb845cb66c; ; ; # ssჀ.ؠ刯Ⴝ
ssâ´ .\u0620刯â´; ; [B2, B3]; xn--ss-j81a.xn--fgb670rovy; ; ; # ssâ´ .ؠ刯â´
-Ssⴠ.\u0620刯Ⴝ; ssⴠ.\u0620刯Ⴝ; [B2, B3, P1, V6]; xn--ss-j81a.xn--fgb845cb66c; ; ; # ssⴠ.ؠ刯Ⴝ
+Ssⴠ.\u0620刯Ⴝ; ssⴠ.\u0620刯Ⴝ; [B2, B3, V6]; xn--ss-j81a.xn--fgb845cb66c; ; ; # ssⴠ.ؠ刯Ⴝ
xn--ss-j81a.xn--fgb845cb66c; ssⴠ.\u0620刯Ⴝ; [B2, B3, V6]; xn--ss-j81a.xn--fgb845cb66c; ; ; # ssⴠ.ؠ刯Ⴝ
xn--ss-j81a.xn--fgb670rovy; ssâ´ .\u0620刯â´; [B2, B3]; xn--ss-j81a.xn--fgb670rovy; ; ; # ssâ´ .ؠ刯â´
xn--ss-wgk.xn--fgb845cb66c; ssჀ.\u0620刯Ⴝ; [B2, B3, V6]; xn--ss-wgk.xn--fgb845cb66c; ; ; # ssჀ.ؠ刯Ⴝ
xn--zca277t.xn--fgb670rovy; ßⴠ.\u0620刯â´; [B2, B3]; xn--zca277t.xn--fgb670rovy; ; ; # ßⴠ.ؠ刯â´
xn--zca442f.xn--fgb845cb66c; ßჀ.\u0620刯Ⴝ; [B2, B3, V6]; xn--zca442f.xn--fgb845cb66c; ; ; # ßჀ.ؠ刯Ⴝ
-\u1BAAႣℲ。ᠳ툻\u0673; \u1BAAႣℲ.ᠳ툻\u0673; [B5, B6, P1, V5, V6]; xn--bnd957cone.xn--sib102gc69k; ; ; # ᮪ႣℲ.ᠳ툻ٳ
-\u1BAAႣℲ。ᠳá„ᅮᆶ\u0673; \u1BAAႣℲ.ᠳ툻\u0673; [B5, B6, P1, V5, V6]; xn--bnd957cone.xn--sib102gc69k; ; ; # ᮪ႣℲ.ᠳ툻ٳ
-\u1BAAႣℲ。ᠳ툻\u0673; \u1BAAႣℲ.ᠳ툻\u0673; [B5, B6, P1, V5, V6]; xn--bnd957cone.xn--sib102gc69k; ; ; # ᮪ႣℲ.ᠳ툻ٳ
-\u1BAAႣℲ。ᠳá„ᅮᆶ\u0673; \u1BAAႣℲ.ᠳ툻\u0673; [B5, B6, P1, V5, V6]; xn--bnd957cone.xn--sib102gc69k; ; ; # ᮪ႣℲ.ᠳ툻ٳ
+\u1BAAႣℲ。ᠳ툻\u0673; \u1BAAႣℲ.ᠳ툻\u0673; [B5, B6, V5, V6]; xn--bnd957cone.xn--sib102gc69k; ; ; # ᮪ႣℲ.ᠳ툻ٳ
+\u1BAAႣℲ。ᠳá„ᅮᆶ\u0673; \u1BAAႣℲ.ᠳ툻\u0673; [B5, B6, V5, V6]; xn--bnd957cone.xn--sib102gc69k; ; ; # ᮪ႣℲ.ᠳ툻ٳ
+\u1BAAႣℲ。ᠳ툻\u0673; \u1BAAႣℲ.ᠳ툻\u0673; [B5, B6, V5, V6]; xn--bnd957cone.xn--sib102gc69k; ; ; # ᮪ႣℲ.ᠳ툻ٳ
+\u1BAAႣℲ。ᠳá„ᅮᆶ\u0673; \u1BAAႣℲ.ᠳ툻\u0673; [B5, B6, V5, V6]; xn--bnd957cone.xn--sib102gc69k; ; ; # ᮪ႣℲ.ᠳ툻ٳ
\u1BAAⴃⅎ。ᠳá„ᅮᆶ\u0673; \u1BAAⴃⅎ.ᠳ툻\u0673; [B5, B6, V5]; xn--yxf24x4ol.xn--sib102gc69k; ; ; # ᮪ⴃⅎ.ᠳ툻ٳ
\u1BAAⴃⅎ。ᠳ툻\u0673; \u1BAAⴃⅎ.ᠳ툻\u0673; [B5, B6, V5]; xn--yxf24x4ol.xn--sib102gc69k; ; ; # ᮪ⴃⅎ.ᠳ툻ٳ
-\u1BAAႣⅎ。ᠳ툻\u0673; \u1BAAႣⅎ.ᠳ툻\u0673; [B5, B6, P1, V5, V6]; xn--bnd957c2pe.xn--sib102gc69k; ; ; # ᮪Ⴃⅎ.ᠳ툻ٳ
-\u1BAAႣⅎ。ᠳá„ᅮᆶ\u0673; \u1BAAႣⅎ.ᠳ툻\u0673; [B5, B6, P1, V5, V6]; xn--bnd957c2pe.xn--sib102gc69k; ; ; # ᮪Ⴃⅎ.ᠳ툻ٳ
+\u1BAAႣⅎ。ᠳ툻\u0673; \u1BAAႣⅎ.ᠳ툻\u0673; [B5, B6, V5, V6]; xn--bnd957c2pe.xn--sib102gc69k; ; ; # ᮪Ⴃⅎ.ᠳ툻ٳ
+\u1BAAႣⅎ。ᠳá„ᅮᆶ\u0673; \u1BAAႣⅎ.ᠳ툻\u0673; [B5, B6, V5, V6]; xn--bnd957c2pe.xn--sib102gc69k; ; ; # ᮪Ⴃⅎ.ᠳ툻ٳ
xn--bnd957c2pe.xn--sib102gc69k; \u1BAAႣⅎ.ᠳ툻\u0673; [B5, B6, V5, V6]; xn--bnd957c2pe.xn--sib102gc69k; ; ; # ᮪Ⴃⅎ.ᠳ툻ٳ
xn--yxf24x4ol.xn--sib102gc69k; \u1BAAⴃⅎ.ᠳ툻\u0673; [B5, B6, V5]; xn--yxf24x4ol.xn--sib102gc69k; ; ; # ᮪ⴃⅎ.ᠳ툻ٳ
xn--bnd957cone.xn--sib102gc69k; \u1BAAႣℲ.ᠳ툻\u0673; [B5, B6, V5, V6]; xn--bnd957cone.xn--sib102gc69k; ; ; # ᮪ႣℲ.ᠳ툻ٳ
\u1BAAⴃⅎ。ᠳá„ᅮᆶ\u0673; \u1BAAⴃⅎ.ᠳ툻\u0673; [B5, B6, V5]; xn--yxf24x4ol.xn--sib102gc69k; ; ; # ᮪ⴃⅎ.ᠳ툻ٳ
\u1BAAⴃⅎ。ᠳ툻\u0673; \u1BAAⴃⅎ.ᠳ툻\u0673; [B5, B6, V5]; xn--yxf24x4ol.xn--sib102gc69k; ; ; # ᮪ⴃⅎ.ᠳ툻ٳ
-\u1BAAႣⅎ。ᠳ툻\u0673; \u1BAAႣⅎ.ᠳ툻\u0673; [B5, B6, P1, V5, V6]; xn--bnd957c2pe.xn--sib102gc69k; ; ; # ᮪Ⴃⅎ.ᠳ툻ٳ
-\u1BAAႣⅎ。ᠳá„ᅮᆶ\u0673; \u1BAAႣⅎ.ᠳ툻\u0673; [B5, B6, P1, V5, V6]; xn--bnd957c2pe.xn--sib102gc69k; ; ; # ᮪Ⴃⅎ.ᠳ툻ٳ
-\u06EC.\u08A2ð¹«\u067C; ; [B1, B3, B6, V5]; xn--8lb.xn--1ib31ily45b; ; ; # Û¬.ࢢð¹«Ù¼
-xn--8lb.xn--1ib31ily45b; \u06EC.\u08A2ð¹«\u067C; [B1, B3, B6, V5]; xn--8lb.xn--1ib31ily45b; ; ; # Û¬.ࢢð¹«Ù¼
+\u1BAAႣⅎ。ᠳ툻\u0673; \u1BAAႣⅎ.ᠳ툻\u0673; [B5, B6, V5, V6]; xn--bnd957c2pe.xn--sib102gc69k; ; ; # ᮪Ⴃⅎ.ᠳ툻ٳ
+\u1BAAႣⅎ。ᠳá„ᅮᆶ\u0673; \u1BAAႣⅎ.ᠳ툻\u0673; [B5, B6, V5, V6]; xn--bnd957c2pe.xn--sib102gc69k; ; ; # ᮪Ⴃⅎ.ᠳ툻ٳ
+\u06EC.\u08A2ð¹«\u067C; ; [B1, V5]; xn--8lb.xn--1ib31ily45b; ; ; # Û¬.ࢢð¹«Ù¼
+xn--8lb.xn--1ib31ily45b; \u06EC.\u08A2ð¹«\u067C; [B1, V5]; xn--8lb.xn--1ib31ily45b; ; ; # Û¬.ࢢð¹«Ù¼
\u06B6\u06DF。₇\uA806; \u06B6\u06DF.7\uA806; [B1]; xn--pkb6f.xn--7-x93e; ; ; # ڶ۟.7꠆
\u06B6\u06DF。7\uA806; \u06B6\u06DF.7\uA806; [B1]; xn--pkb6f.xn--7-x93e; ; ; # ڶ۟.7꠆
xn--pkb6f.xn--7-x93e; \u06B6\u06DF.7\uA806; [B1]; xn--pkb6f.xn--7-x93e; ; ; # Ú¶ÛŸ.7ê †
\u06B6\u06DF.7\uA806; ; [B1]; xn--pkb6f.xn--7-x93e; ; ; # Ú¶ÛŸ.7ê †
-Ⴣð¹».\u200Cðª£â‰®ó ©‰; ; [B1, B5, B6, C1, P1, V6]; xn--7nd8101k.xn--0ugy6gn120eb103g; ; xn--7nd8101k.xn--gdh4944ob3x3e; [B1, B5, B6, P1, V5, V6] # Ⴣð¹».ðª£â‰®
-Ⴣð¹».\u200Cðª£<\u0338󠩉; Ⴣð¹».\u200Cðª£â‰®ó ©‰; [B1, B5, B6, C1, P1, V6]; xn--7nd8101k.xn--0ugy6gn120eb103g; ; xn--7nd8101k.xn--gdh4944ob3x3e; [B1, B5, B6, P1, V5, V6] # Ⴣð¹».ðª£â‰®
-â´£ð¹».\u200Cðª£<\u0338󠩉; â´£ð¹».\u200Cðª£â‰®ó ©‰; [B1, B5, B6, C1, P1, V6]; xn--rlj6323e.xn--0ugy6gn120eb103g; ; xn--rlj6323e.xn--gdh4944ob3x3e; [B1, B5, B6, P1, V5, V6] # â´£ð¹».ðª£â‰®
-â´£ð¹».\u200Cðª£â‰®ó ©‰; ; [B1, B5, B6, C1, P1, V6]; xn--rlj6323e.xn--0ugy6gn120eb103g; ; xn--rlj6323e.xn--gdh4944ob3x3e; [B1, B5, B6, P1, V5, V6] # â´£ð¹».ðª£â‰®
+Ⴣð¹».\u200Cðª£â‰®ó ©‰; ; [B1, B5, B6, C1, V6]; xn--7nd8101k.xn--0ugy6gn120eb103g; ; xn--7nd8101k.xn--gdh4944ob3x3e; [B1, B5, B6, V5, V6] # Ⴣð¹».ðª£â‰®
+Ⴣð¹».\u200Cðª£<\u0338󠩉; Ⴣð¹».\u200Cðª£â‰®ó ©‰; [B1, B5, B6, C1, V6]; xn--7nd8101k.xn--0ugy6gn120eb103g; ; xn--7nd8101k.xn--gdh4944ob3x3e; [B1, B5, B6, V5, V6] # Ⴣð¹».ðª£â‰®
+â´£ð¹».\u200Cðª£<\u0338󠩉; â´£ð¹».\u200Cðª£â‰®ó ©‰; [B1, B5, B6, C1, V6]; xn--rlj6323e.xn--0ugy6gn120eb103g; ; xn--rlj6323e.xn--gdh4944ob3x3e; [B1, B5, B6, V5, V6] # â´£ð¹».ðª£â‰®
+â´£ð¹».\u200Cðª£â‰®ó ©‰; ; [B1, B5, B6, C1, V6]; xn--rlj6323e.xn--0ugy6gn120eb103g; ; xn--rlj6323e.xn--gdh4944ob3x3e; [B1, B5, B6, V5, V6] # â´£ð¹».ðª£â‰®
xn--rlj6323e.xn--gdh4944ob3x3e; â´£ð¹».ðª£â‰®ó ©‰; [B1, B5, B6, V5, V6]; xn--rlj6323e.xn--gdh4944ob3x3e; ; ; # â´£ð¹».ðª£â‰®
xn--rlj6323e.xn--0ugy6gn120eb103g; â´£ð¹».\u200Cðª£â‰®ó ©‰; [B1, B5, B6, C1, V6]; xn--rlj6323e.xn--0ugy6gn120eb103g; ; ; # â´£ð¹».ðª£â‰®
xn--7nd8101k.xn--gdh4944ob3x3e; Ⴣð¹».ðª£â‰®ó ©‰; [B1, B5, B6, V5, V6]; xn--7nd8101k.xn--gdh4944ob3x3e; ; ; # Ⴣð¹».ðª£â‰®
@@ -2708,40 +2720,40 @@ xn--7nd8101k.xn--0ugy6gn120eb103g; Ⴣð¹».\u200Cðª£â‰®ó ©‰; [B1, B5, B6, C1, V
xn--9-mfs8024b.; 9éšâ¯®.; ; xn--9-mfs8024b.; ; ; # 9éšâ¯®.
9éšâ¯®.; ; ; xn--9-mfs8024b.; ; ; # 9éšâ¯®.
xn--9-mfs8024b.xn--0ug; 9éšâ¯®.\u200C; [C1]; xn--9-mfs8024b.xn--0ug; ; ; # 9éšâ¯®.
-â’ð¹§ï½¡áƒƒ\u0F84彦; â’ð¹§.Ⴣ\u0F84彦; [B1, P1, V6]; xn--0sh2466f.xn--3ed15dt93o; ; ; # â’ð¹§.Ⴣ྄彦
-8.ð¹§ã€‚Ⴣ\u0F84彦; 8.ð¹§.Ⴣ\u0F84彦; [B1, P1, V6]; 8.xn--fo0d.xn--3ed15dt93o; ; ; # 8.ð¹§.Ⴣ྄彦
+â’ð¹§ï½¡áƒƒ\u0F84彦; â’ð¹§.Ⴣ\u0F84彦; [B1, V6]; xn--0sh2466f.xn--3ed15dt93o; ; ; # â’ð¹§.Ⴣ྄彦
+8.ð¹§ã€‚Ⴣ\u0F84彦; 8.ð¹§.Ⴣ\u0F84彦; [B1, V6]; 8.xn--fo0d.xn--3ed15dt93o; ; ; # 8.ð¹§.Ⴣ྄彦
8.ð¹§ã€‚â´£\u0F84彦; 8.ð¹§.â´£\u0F84彦; [B1]; 8.xn--fo0d.xn--3ed972m6o8a; ; ; # 8.ð¹§.ⴣ྄彦
8.xn--fo0d.xn--3ed972m6o8a; 8.ð¹§.â´£\u0F84彦; [B1]; 8.xn--fo0d.xn--3ed972m6o8a; ; ; # 8.ð¹§.ⴣ྄彦
8.xn--fo0d.xn--3ed15dt93o; 8.ð¹§.Ⴣ\u0F84彦; [B1, V6]; 8.xn--fo0d.xn--3ed15dt93o; ; ; # 8.ð¹§.Ⴣ྄彦
-â’ð¹§ï½¡â´£\u0F84彦; â’ð¹§.â´£\u0F84彦; [B1, P1, V6]; xn--0sh2466f.xn--3ed972m6o8a; ; ; # â’ð¹§.ⴣ྄彦
+â’ð¹§ï½¡â´£\u0F84彦; â’ð¹§.â´£\u0F84彦; [B1, V6]; xn--0sh2466f.xn--3ed972m6o8a; ; ; # â’ð¹§.ⴣ྄彦
xn--0sh2466f.xn--3ed972m6o8a; â’ð¹§.â´£\u0F84彦; [B1, V6]; xn--0sh2466f.xn--3ed972m6o8a; ; ; # â’ð¹§.ⴣ྄彦
xn--0sh2466f.xn--3ed15dt93o; â’ð¹§.Ⴣ\u0F84彦; [B1, V6]; xn--0sh2466f.xn--3ed15dt93o; ; ; # â’ð¹§.Ⴣ྄彦
--问񬰔⒛。\u0604-񜗉橬; -问񬰔⒛.\u0604-񜗉橬; [B1, P1, V3, V6]; xn----hdpu849bhis3e.xn----ykc7228efm46d; ; ; # -问⒛.-橬
--问񬰔20.。\u0604-񜗉橬; -问񬰔20..\u0604-񜗉橬; [B1, P1, V3, V6, X4_2]; xn---20-658jx1776d..xn----ykc7228efm46d; [B1, P1, V3, V6, A4_2]; ; # -问20..-橬
+-问񬰔⒛。\u0604-񜗉橬; -问񬰔⒛.\u0604-񜗉橬; [B1, V3, V6]; xn----hdpu849bhis3e.xn----ykc7228efm46d; ; ; # -问⒛.-橬
+-问񬰔20.。\u0604-񜗉橬; -问񬰔20..\u0604-񜗉橬; [B1, V3, V6, X4_2]; xn---20-658jx1776d..xn----ykc7228efm46d; [B1, V3, V6, A4_2]; ; # -问20..-橬
xn---20-658jx1776d..xn----ykc7228efm46d; -问񬰔20..\u0604-񜗉橬; [B1, V3, V6, X4_2]; xn---20-658jx1776d..xn----ykc7228efm46d; [B1, V3, V6, A4_2]; ; # -问20..-橬
xn----hdpu849bhis3e.xn----ykc7228efm46d; -问񬰔⒛.\u0604-񜗉橬; [B1, V3, V6]; xn----hdpu849bhis3e.xn----ykc7228efm46d; ; ; # -问⒛.-橬
-\u1BACႬ\u200C\u0325。ðŸ¸; \u1BACႬ\u200C\u0325.2; [C1, P1, V5, V6]; xn--mta930emribme.2; ; xn--mta930emri.2; [P1, V5, V6] # ᮬႬ̥.2
-\u1BACႬ\u200C\u0325。2; \u1BACႬ\u200C\u0325.2; [C1, P1, V5, V6]; xn--mta930emribme.2; ; xn--mta930emri.2; [P1, V5, V6] # ᮬႬ̥.2
+\u1BACႬ\u200C\u0325。ðŸ¸; \u1BACႬ\u200C\u0325.2; [C1, V5, V6]; xn--mta930emribme.2; ; xn--mta930emri.2; [V5, V6] # ᮬႬ̥.2
+\u1BACႬ\u200C\u0325。2; \u1BACႬ\u200C\u0325.2; [C1, V5, V6]; xn--mta930emribme.2; ; xn--mta930emri.2; [V5, V6] # ᮬႬ̥.2
\u1BACⴌ\u200C\u0325。2; \u1BACⴌ\u200C\u0325.2; [C1, V5]; xn--mta176j97cl2q.2; ; xn--mta176jjjm.2; [V5] # ᮬⴌ̥.2
xn--mta176jjjm.2; \u1BACⴌ\u0325.2; [V5]; xn--mta176jjjm.2; ; ; # ᮬⴌ̥.2
xn--mta176j97cl2q.2; \u1BACⴌ\u200C\u0325.2; [C1, V5]; xn--mta176j97cl2q.2; ; ; # ᮬⴌ̥.2
xn--mta930emri.2; \u1BACႬ\u0325.2; [V5, V6]; xn--mta930emri.2; ; ; # ᮬႬ̥.2
xn--mta930emribme.2; \u1BACႬ\u200C\u0325.2; [C1, V5, V6]; xn--mta930emribme.2; ; ; # ᮬႬ̥.2
\u1BACâ´Œ\u200C\u0325。ðŸ¸; \u1BACâ´Œ\u200C\u0325.2; [C1, V5]; xn--mta176j97cl2q.2; ; xn--mta176jjjm.2; [V5] # ᮬⴌ̥.2
-?。\uA806\u0669󠒩; ?.\uA806\u0669󠒩; [B1, P1, V5, V6]; ?.xn--iib9583fusy0i; ; ; # ?.꠆٩
-?.xn--iib9583fusy0i; ?.\uA806\u0669ó ’©; [B1, P1, V5, V6]; ?.xn--iib9583fusy0i; ; ; # ?.ê †Ù©
-ó „\u035F⾶。₇︒눇≮; \u035F飛.7︒눇≮; [P1, V5, V6]; xn--9ua0567e.xn--7-ngou006d1ttc; ; ; # ͟飛.7︒눇≮
-ó „\u035F⾶。₇︒눇<\u0338; \u035F飛.7︒눇≮; [P1, V5, V6]; xn--9ua0567e.xn--7-ngou006d1ttc; ; ; # ͟飛.7︒눇≮
-ó „\u035F飛。7。눇≮; \u035F飛.7.눇≮; [P1, V5, V6]; xn--9ua0567e.7.xn--gdh6767c; ; ; # ͟飛.7.눇≮
-ó „\u035F飛。7。눇<\u0338; \u035F飛.7.눇≮; [P1, V5, V6]; xn--9ua0567e.7.xn--gdh6767c; ; ; # ͟飛.7.눇≮
-xn--9ua0567e.7.xn--gdh6767c; \u035F飛.7.눇≮; [V5, V6]; xn--9ua0567e.7.xn--gdh6767c; ; ; # ͟飛.7.눇≮
+?。\uA806\u0669󠒩; ?.\uA806\u0669󠒩; [B1, V5, V6]; ?.xn--iib9583fusy0i; ; ; # ?.꠆٩
+?.xn--iib9583fusy0i; ?.\uA806\u0669ó ’©; [B1, V5, V6]; ?.xn--iib9583fusy0i; ; ; # ?.ê †Ù©
+ó „\u035F⾶。₇︒눇≮; \u035F飛.7︒눇≮; [V5, V6]; xn--9ua0567e.xn--7-ngou006d1ttc; ; ; # ͟飛.7︒눇≮
+ó „\u035F⾶。₇︒눇<\u0338; \u035F飛.7︒눇≮; [V5, V6]; xn--9ua0567e.xn--7-ngou006d1ttc; ; ; # ͟飛.7︒눇≮
+ó „\u035F飛。7。눇≮; \u035F飛.7.눇≮; [V5]; xn--9ua0567e.7.xn--gdh6767c; ; ; # ͟飛.7.눇≮
+ó „\u035F飛。7。눇<\u0338; \u035F飛.7.눇≮; [V5]; xn--9ua0567e.7.xn--gdh6767c; ; ; # ͟飛.7.눇≮
+xn--9ua0567e.7.xn--gdh6767c; \u035F飛.7.눇≮; [V5]; xn--9ua0567e.7.xn--gdh6767c; ; ; # ͟飛.7.눇≮
xn--9ua0567e.xn--7-ngou006d1ttc; \u035F飛.7︒눇≮; [V5, V6]; xn--9ua0567e.xn--7-ngou006d1ttc; ; ; # ͟飛.7︒눇≮
\u200C\uFE09ð¹´\u200D.\u200C⿃; \u200Cð¹´\u200D.\u200Cé³¥; [B1, C1, C2]; xn--0ugc6024p.xn--0ug1920c; ; xn--so0d.xn--6x6a; [B1] # ð¹´.é³¥
\u200C\uFE09ð¹´\u200D.\u200Cé³¥; \u200Cð¹´\u200D.\u200Cé³¥; [B1, C1, C2]; xn--0ugc6024p.xn--0ug1920c; ; xn--so0d.xn--6x6a; [B1] # ð¹´.é³¥
xn--so0d.xn--6x6a; ð¹´.é³¥; [B1]; xn--so0d.xn--6x6a; ; ; # ð¹´.é³¥
xn--0ugc6024p.xn--0ug1920c; \u200Cð¹´\u200D.\u200Cé³¥; [B1, C1, C2]; xn--0ugc6024p.xn--0ug1920c; ; ; # ð¹´.é³¥
-ðŸ®ï¼Ž\u200Dó —’ð¦ð¨; ðŸ®.\u200Dó —’ð¦ð¨; [B1, C2, P1, V6]; xn--lj8h.xn--1ug6603gr1pfwq37h; ; xn--lj8h.xn--ln9ci476aqmr2g; [B1, P1, V6] # ðŸ®.ð¦ð¨
-ðŸ®.\u200Dó —’ð¦ð¨; ; [B1, C2, P1, V6]; xn--lj8h.xn--1ug6603gr1pfwq37h; ; xn--lj8h.xn--ln9ci476aqmr2g; [B1, P1, V6] # ðŸ®.ð¦ð¨
+ðŸ®ï¼Ž\u200Dó —’ð¦ð¨; ðŸ®.\u200Dó —’ð¦ð¨; [B1, C2, V6]; xn--lj8h.xn--1ug6603gr1pfwq37h; ; xn--lj8h.xn--ln9ci476aqmr2g; [B1, V6] # ðŸ®.ð¦ð¨
+ðŸ®.\u200Dó —’ð¦ð¨; ; [B1, C2, V6]; xn--lj8h.xn--1ug6603gr1pfwq37h; ; xn--lj8h.xn--ln9ci476aqmr2g; [B1, V6] # ðŸ®.ð¦ð¨
xn--lj8h.xn--ln9ci476aqmr2g; ðŸ®.ó —’ð¦ð¨; [B1, V6]; xn--lj8h.xn--ln9ci476aqmr2g; ; ; # ðŸ®.ð¦ð¨
xn--lj8h.xn--1ug6603gr1pfwq37h; ðŸ®.\u200Dó —’ð¦ð¨; [B1, C2, V6]; xn--lj8h.xn--1ug6603gr1pfwq37h; ; ; # ðŸ®.ð¦ð¨
\u067D\u0943.𞤓\u200D; \u067D\u0943.𞤵\u200D; [B3, C2]; xn--2ib43l.xn--1ugy711p; ; xn--2ib43l.xn--te6h; [] # ٽृ.𞤵
@@ -2750,25 +2762,25 @@ xn--2ib43l.xn--te6h; \u067D\u0943.𞤵; ; xn--2ib43l.xn--te6h; ; ; # ٽृ.𞤵
\u067D\u0943.𞤵; ; ; xn--2ib43l.xn--te6h; ; ; # ٽृ.𞤵
\u067D\u0943.𞤓; \u067D\u0943.𞤵; ; xn--2ib43l.xn--te6h; ; ; # ٽृ.𞤵
xn--2ib43l.xn--1ugy711p; \u067D\u0943.𞤵\u200D; [B3, C2]; xn--2ib43l.xn--1ugy711p; ; ; # ٽृ.𞤵
-\u0664\u0A4D-.󥜽\u1039ñ¦¦; \u0664\u0A4D-.󥜽\u1039ñ¦¦; [B1, P1, V3, V6]; xn----gqc711a.xn--9jd88234f3qm0b; ; ; # Ù¤à©-.္
-\u0664\u0A4D-.󥜽\u1039ñ¦¦; ; [B1, P1, V3, V6]; xn----gqc711a.xn--9jd88234f3qm0b; ; ; # Ù¤à©-.္
+\u0664\u0A4D-.󥜽\u1039ñ¦¦; \u0664\u0A4D-.󥜽\u1039ñ¦¦; [B1, V3, V6]; xn----gqc711a.xn--9jd88234f3qm0b; ; ; # Ù¤à©-.္
+\u0664\u0A4D-.󥜽\u1039ñ¦¦; ; [B1, V3, V6]; xn----gqc711a.xn--9jd88234f3qm0b; ; ; # Ù¤à©-.္
xn----gqc711a.xn--9jd88234f3qm0b; \u0664\u0A4D-.󥜽\u1039ñ¦¦; [B1, V3, V6]; xn----gqc711a.xn--9jd88234f3qm0b; ; ; # Ù¤à©-.္
-4\u103A-ð¹¸ï½¡\uAA29\u200Cð¹´â‰®; 4\u103A-ð¹¸.\uAA29\u200Cð¹´â‰®; [B1, C1, P1, V5, V6]; xn--4--e4j7831r.xn--0ugy6gjy5sl3ud; ; xn--4--e4j7831r.xn--gdh8754cz40c; [B1, P1, V5, V6] # 4်-ð¹¸.ꨩð¹´â‰®
-4\u103A-ð¹¸ï½¡\uAA29\u200Cð¹´<\u0338; 4\u103A-ð¹¸.\uAA29\u200Cð¹´â‰®; [B1, C1, P1, V5, V6]; xn--4--e4j7831r.xn--0ugy6gjy5sl3ud; ; xn--4--e4j7831r.xn--gdh8754cz40c; [B1, P1, V5, V6] # 4်-ð¹¸.ꨩð¹´â‰®
-4\u103A-ð¹¸ã€‚\uAA29\u200Cð¹´â‰®; 4\u103A-ð¹¸.\uAA29\u200Cð¹´â‰®; [B1, C1, P1, V5, V6]; xn--4--e4j7831r.xn--0ugy6gjy5sl3ud; ; xn--4--e4j7831r.xn--gdh8754cz40c; [B1, P1, V5, V6] # 4်-ð¹¸.ꨩð¹´â‰®
-4\u103A-ð¹¸ã€‚\uAA29\u200Cð¹´<\u0338; 4\u103A-ð¹¸.\uAA29\u200Cð¹´â‰®; [B1, C1, P1, V5, V6]; xn--4--e4j7831r.xn--0ugy6gjy5sl3ud; ; xn--4--e4j7831r.xn--gdh8754cz40c; [B1, P1, V5, V6] # 4်-ð¹¸.ꨩð¹´â‰®
-xn--4--e4j7831r.xn--gdh8754cz40c; 4\u103A-ð¹¸.\uAA29ð¹´â‰®; [B1, V5, V6]; xn--4--e4j7831r.xn--gdh8754cz40c; ; ; # 4်-ð¹¸.ꨩð¹´â‰®
-xn--4--e4j7831r.xn--0ugy6gjy5sl3ud; 4\u103A-ð¹¸.\uAA29\u200Cð¹´â‰®; [B1, C1, V5, V6]; xn--4--e4j7831r.xn--0ugy6gjy5sl3ud; ; ; # 4်-ð¹¸.ꨩð¹´â‰®
-\u200C。\uFFA0\u0F84\u0F96; \u200C.\uFFA0\u0F84\u0F96; [C1, P1, V6]; xn--0ug.xn--3ed0by082k; ; .xn--3ed0by082k; [P1, V6, A4_2] # .྄ྖ
-\u200C。\u1160\u0F84\u0F96; \u200C.\u1160\u0F84\u0F96; [C1, P1, V6]; xn--0ug.xn--3ed0b20h; ; .xn--3ed0b20h; [P1, V6, A4_2] # .྄ྖ
+4\u103A-ð¹¸ï½¡\uAA29\u200Cð¹´â‰®; 4\u103A-ð¹¸.\uAA29\u200Cð¹´â‰®; [B1, C1, V5]; xn--4--e4j7831r.xn--0ugy6gjy5sl3ud; ; xn--4--e4j7831r.xn--gdh8754cz40c; [B1, V5] # 4်-ð¹¸.ꨩð¹´â‰®
+4\u103A-ð¹¸ï½¡\uAA29\u200Cð¹´<\u0338; 4\u103A-ð¹¸.\uAA29\u200Cð¹´â‰®; [B1, C1, V5]; xn--4--e4j7831r.xn--0ugy6gjy5sl3ud; ; xn--4--e4j7831r.xn--gdh8754cz40c; [B1, V5] # 4်-ð¹¸.ꨩð¹´â‰®
+4\u103A-ð¹¸ã€‚\uAA29\u200Cð¹´â‰®; 4\u103A-ð¹¸.\uAA29\u200Cð¹´â‰®; [B1, C1, V5]; xn--4--e4j7831r.xn--0ugy6gjy5sl3ud; ; xn--4--e4j7831r.xn--gdh8754cz40c; [B1, V5] # 4်-ð¹¸.ꨩð¹´â‰®
+4\u103A-ð¹¸ã€‚\uAA29\u200Cð¹´<\u0338; 4\u103A-ð¹¸.\uAA29\u200Cð¹´â‰®; [B1, C1, V5]; xn--4--e4j7831r.xn--0ugy6gjy5sl3ud; ; xn--4--e4j7831r.xn--gdh8754cz40c; [B1, V5] # 4်-ð¹¸.ꨩð¹´â‰®
+xn--4--e4j7831r.xn--gdh8754cz40c; 4\u103A-ð¹¸.\uAA29ð¹´â‰®; [B1, V5]; xn--4--e4j7831r.xn--gdh8754cz40c; ; ; # 4်-ð¹¸.ꨩð¹´â‰®
+xn--4--e4j7831r.xn--0ugy6gjy5sl3ud; 4\u103A-ð¹¸.\uAA29\u200Cð¹´â‰®; [B1, C1, V5]; xn--4--e4j7831r.xn--0ugy6gjy5sl3ud; ; ; # 4်-ð¹¸.ꨩð¹´â‰®
+\u200C。\uFFA0\u0F84\u0F96; \u200C.\uFFA0\u0F84\u0F96; [C1, V6]; xn--0ug.xn--3ed0by082k; ; .xn--3ed0by082k; [V6, A4_2] # .྄ྖ
+\u200C。\u1160\u0F84\u0F96; \u200C.\u1160\u0F84\u0F96; [C1, V6]; xn--0ug.xn--3ed0b20h; ; .xn--3ed0b20h; [V6, A4_2] # .྄ྖ
.xn--3ed0b20h; .\u1160\u0F84\u0F96; [V6, X4_2]; .xn--3ed0b20h; [V6, A4_2]; ; # .྄ྖ
xn--0ug.xn--3ed0b20h; \u200C.\u1160\u0F84\u0F96; [C1, V6]; xn--0ug.xn--3ed0b20h; ; ; # .྄ྖ
.xn--3ed0by082k; .\uFFA0\u0F84\u0F96; [V6, X4_2]; .xn--3ed0by082k; [V6, A4_2]; ; # .྄ྖ
xn--0ug.xn--3ed0by082k; \u200C.\uFFA0\u0F84\u0F96; [C1, V6]; xn--0ug.xn--3ed0by082k; ; ; # .྄ྖ
-≯ò˜….\u200Dð…¼ò²‡›; ≯ò˜….\u200Dð…¼ò²‡›; [C2, P1, V6]; xn--hdh84488f.xn--1ug8099fbjp4e; ; xn--hdh84488f.xn--xy7cw2886b; [P1, V6] # ≯.ð…¼
->\u0338ò˜….\u200Dð…¼ò²‡›; ≯ò˜….\u200Dð…¼ò²‡›; [C2, P1, V6]; xn--hdh84488f.xn--1ug8099fbjp4e; ; xn--hdh84488f.xn--xy7cw2886b; [P1, V6] # ≯.ð…¼
-≯ò˜….\u200Dð…¼ò²‡›; ; [C2, P1, V6]; xn--hdh84488f.xn--1ug8099fbjp4e; ; xn--hdh84488f.xn--xy7cw2886b; [P1, V6] # ≯.ð…¼
->\u0338ò˜….\u200Dð…¼ò²‡›; ≯ò˜….\u200Dð…¼ò²‡›; [C2, P1, V6]; xn--hdh84488f.xn--1ug8099fbjp4e; ; xn--hdh84488f.xn--xy7cw2886b; [P1, V6] # ≯.ð…¼
+≯ò˜….\u200Dð…¼ò²‡›; ≯ò˜….\u200Dð…¼ò²‡›; [C2, V6]; xn--hdh84488f.xn--1ug8099fbjp4e; ; xn--hdh84488f.xn--xy7cw2886b; [V6] # ≯.ð…¼
+>\u0338ò˜….\u200Dð…¼ò²‡›; ≯ò˜….\u200Dð…¼ò²‡›; [C2, V6]; xn--hdh84488f.xn--1ug8099fbjp4e; ; xn--hdh84488f.xn--xy7cw2886b; [V6] # ≯.ð…¼
+≯ò˜….\u200Dð…¼ò²‡›; ; [C2, V6]; xn--hdh84488f.xn--1ug8099fbjp4e; ; xn--hdh84488f.xn--xy7cw2886b; [V6] # ≯.ð…¼
+>\u0338ò˜….\u200Dð…¼ò²‡›; ≯ò˜….\u200Dð…¼ò²‡›; [C2, V6]; xn--hdh84488f.xn--1ug8099fbjp4e; ; xn--hdh84488f.xn--xy7cw2886b; [V6] # ≯.ð…¼
xn--hdh84488f.xn--xy7cw2886b; ≯ò˜….ð…¼ò²‡›; [V6]; xn--hdh84488f.xn--xy7cw2886b; ; ; # ≯.ð…¼
xn--hdh84488f.xn--1ug8099fbjp4e; ≯ò˜….\u200Dð…¼ò²‡›; [C2, V6]; xn--hdh84488f.xn--1ug8099fbjp4e; ; ; # ≯.ð…¼
\u0641ßð°¯ï½¡ðŸ•ð««; \u0641ßð°¯.7ð««; [B1, B2]; xn--zca96ys96y.xn--7-mm5i; ; xn--ss-jvd2339x.xn--7-mm5i; # Ùßð°¯.7ð««
@@ -2781,32 +2793,32 @@ xn--zca96ys96y.xn--7-mm5i; \u0641ßð°¯.7ð««; [B1, B2]; xn--zca96ys96y.xn--7-mm
\u0641ssð°¯ï½¡ðŸ•ð««; \u0641ssð°¯.7ð««; [B1, B2]; xn--ss-jvd2339x.xn--7-mm5i; ; ; # Ùssð°¯.7ð««
\u0641Ssð°¯ã€‚7ð««; \u0641ssð°¯.7ð««; [B1, B2]; xn--ss-jvd2339x.xn--7-mm5i; ; ; # Ùssð°¯.7ð««
\u0641Ssð°¯ï½¡ðŸ•ð««; \u0641ssð°¯.7ð««; [B1, B2]; xn--ss-jvd2339x.xn--7-mm5i; ; ; # Ùssð°¯.7ð««
-ß\u07AC\u07A7\u08B1。ð­ô…®™ð¹²; ß\u07AC\u07A7\u08B1.ð­ô…®™ð¹²; [B2, B5, B6, P1, V6]; xn--zca685aoa95h.xn--e09co8cr9861c; ; xn--ss-9qet02k.xn--e09co8cr9861c; # ßެާࢱ.ð­ð¹²
-SS\u07AC\u07A7\u08B1。ð­ô…®™ð¹²; ss\u07AC\u07A7\u08B1.ð­ô…®™ð¹²; [B2, B5, B6, P1, V6]; xn--ss-9qet02k.xn--e09co8cr9861c; ; ; # ssެާࢱ.ð­ð¹²
-ss\u07AC\u07A7\u08B1。ð­ô…®™ð¹²; ss\u07AC\u07A7\u08B1.ð­ô…®™ð¹²; [B2, B5, B6, P1, V6]; xn--ss-9qet02k.xn--e09co8cr9861c; ; ; # ssެާࢱ.ð­ð¹²
-Ss\u07AC\u07A7\u08B1。ð­ô…®™ð¹²; ss\u07AC\u07A7\u08B1.ð­ô…®™ð¹²; [B2, B5, B6, P1, V6]; xn--ss-9qet02k.xn--e09co8cr9861c; ; ; # ssެާࢱ.ð­ð¹²
+ß\u07AC\u07A7\u08B1。ð­ô…®™ð¹²; ß\u07AC\u07A7\u08B1.ð­ô…®™ð¹²; [B2, B5, B6, V6]; xn--zca685aoa95h.xn--e09co8cr9861c; ; xn--ss-9qet02k.xn--e09co8cr9861c; # ßެާࢱ.ð­ð¹²
+SS\u07AC\u07A7\u08B1。ð­ô…®™ð¹²; ss\u07AC\u07A7\u08B1.ð­ô…®™ð¹²; [B2, B5, B6, V6]; xn--ss-9qet02k.xn--e09co8cr9861c; ; ; # ssެާࢱ.ð­ð¹²
+ss\u07AC\u07A7\u08B1。ð­ô…®™ð¹²; ss\u07AC\u07A7\u08B1.ð­ô…®™ð¹²; [B2, B5, B6, V6]; xn--ss-9qet02k.xn--e09co8cr9861c; ; ; # ssެާࢱ.ð­ð¹²
+Ss\u07AC\u07A7\u08B1。ð­ô…®™ð¹²; ss\u07AC\u07A7\u08B1.ð­ô…®™ð¹²; [B2, B5, B6, V6]; xn--ss-9qet02k.xn--e09co8cr9861c; ; ; # ssެާࢱ.ð­ð¹²
xn--ss-9qet02k.xn--e09co8cr9861c; ss\u07AC\u07A7\u08B1.ð­ô…®™ð¹²; [B2, B5, B6, V6]; xn--ss-9qet02k.xn--e09co8cr9861c; ; ; # ssެާࢱ.ð­ð¹²
xn--zca685aoa95h.xn--e09co8cr9861c; ß\u07AC\u07A7\u08B1.ð­ô…®™ð¹²; [B2, B5, B6, V6]; xn--zca685aoa95h.xn--e09co8cr9861c; ; ; # ßެާࢱ.ð­ð¹²
--。󠉗⒌𞯛; -.󠉗⒌𞯛; [B1, P1, V3, V6]; -.xn--xsh6367n1bi3e; ; ; # -.⒌
--。󠉗5.𞯛; -.󠉗5.𞯛; [B1, P1, V3, V6]; -.xn--5-zz21m.xn--6x6h; ; ; # -.5.
+-。󠉗⒌𞯛; -.󠉗⒌𞯛; [B1, V3, V6]; -.xn--xsh6367n1bi3e; ; ; # -.⒌
+-。󠉗5.𞯛; -.󠉗5.𞯛; [B1, V3, V6]; -.xn--5-zz21m.xn--6x6h; ; ; # -.5.
-.xn--5-zz21m.xn--6x6h; -.󠉗5.𞯛; [B1, V3, V6]; -.xn--5-zz21m.xn--6x6h; ; ; # -.5.
-.xn--xsh6367n1bi3e; -.󠉗⒌𞯛; [B1, V3, V6]; -.xn--xsh6367n1bi3e; ; ; # -.⒌
-ð¼ŽÏ‚.-≮\uFCAB; ð¼ŽÏ‚.-≮\u062E\u062C; [B1, P1, V3, V6]; xn--3xa13520c.xn----9mcf1400a; ; xn--4xa92520c.xn----9mcf1400a; # Ï‚.-≮خج
-ð¼ŽÏ‚.-<\u0338\uFCAB; ð¼ŽÏ‚.-≮\u062E\u062C; [B1, P1, V3, V6]; xn--3xa13520c.xn----9mcf1400a; ; xn--4xa92520c.xn----9mcf1400a; # Ï‚.-≮خج
-ð¼ŽÏ‚.-≮\u062E\u062C; ; [B1, P1, V3, V6]; xn--3xa13520c.xn----9mcf1400a; ; xn--4xa92520c.xn----9mcf1400a; # Ï‚.-≮خج
-ð¼ŽÏ‚.-<\u0338\u062E\u062C; ð¼ŽÏ‚.-≮\u062E\u062C; [B1, P1, V3, V6]; xn--3xa13520c.xn----9mcf1400a; ; xn--4xa92520c.xn----9mcf1400a; # Ï‚.-≮خج
-ð¼ŽÎ£.-<\u0338\u062E\u062C; ð¼ŽÏƒ.-≮\u062E\u062C; [B1, P1, V3, V6]; xn--4xa92520c.xn----9mcf1400a; ; ; # σ.-≮خج
-ð¼ŽÎ£.-≮\u062E\u062C; ð¼ŽÏƒ.-≮\u062E\u062C; [B1, P1, V3, V6]; xn--4xa92520c.xn----9mcf1400a; ; ; # σ.-≮خج
-ð¼ŽÏƒ.-≮\u062E\u062C; ; [B1, P1, V3, V6]; xn--4xa92520c.xn----9mcf1400a; ; ; # σ.-≮خج
-ð¼ŽÏƒ.-<\u0338\u062E\u062C; ð¼ŽÏƒ.-≮\u062E\u062C; [B1, P1, V3, V6]; xn--4xa92520c.xn----9mcf1400a; ; ; # σ.-≮خج
+ð¼ŽÏ‚.-≮\uFCAB; ð¼ŽÏ‚.-≮\u062E\u062C; [B1, V3, V6]; xn--3xa13520c.xn----9mcf1400a; ; xn--4xa92520c.xn----9mcf1400a; # Ï‚.-≮خج
+ð¼ŽÏ‚.-<\u0338\uFCAB; ð¼ŽÏ‚.-≮\u062E\u062C; [B1, V3, V6]; xn--3xa13520c.xn----9mcf1400a; ; xn--4xa92520c.xn----9mcf1400a; # Ï‚.-≮خج
+ð¼ŽÏ‚.-≮\u062E\u062C; ; [B1, V3, V6]; xn--3xa13520c.xn----9mcf1400a; ; xn--4xa92520c.xn----9mcf1400a; # Ï‚.-≮خج
+ð¼ŽÏ‚.-<\u0338\u062E\u062C; ð¼ŽÏ‚.-≮\u062E\u062C; [B1, V3, V6]; xn--3xa13520c.xn----9mcf1400a; ; xn--4xa92520c.xn----9mcf1400a; # Ï‚.-≮خج
+ð¼ŽÎ£.-<\u0338\u062E\u062C; ð¼ŽÏƒ.-≮\u062E\u062C; [B1, V3, V6]; xn--4xa92520c.xn----9mcf1400a; ; ; # σ.-≮خج
+ð¼ŽÎ£.-≮\u062E\u062C; ð¼ŽÏƒ.-≮\u062E\u062C; [B1, V3, V6]; xn--4xa92520c.xn----9mcf1400a; ; ; # σ.-≮خج
+ð¼ŽÏƒ.-≮\u062E\u062C; ; [B1, V3, V6]; xn--4xa92520c.xn----9mcf1400a; ; ; # σ.-≮خج
+ð¼ŽÏƒ.-<\u0338\u062E\u062C; ð¼ŽÏƒ.-≮\u062E\u062C; [B1, V3, V6]; xn--4xa92520c.xn----9mcf1400a; ; ; # σ.-≮خج
xn--4xa92520c.xn----9mcf1400a; ð¼ŽÏƒ.-≮\u062E\u062C; [B1, V3, V6]; xn--4xa92520c.xn----9mcf1400a; ; ; # σ.-≮خج
xn--3xa13520c.xn----9mcf1400a; ð¼ŽÏ‚.-≮\u062E\u062C; [B1, V3, V6]; xn--3xa13520c.xn----9mcf1400a; ; ; # Ï‚.-≮خج
-ð¼ŽÎ£ï¼Ž-<\u0338\uFCAB; ð¼ŽÏƒ.-≮\u062E\u062C; [B1, P1, V3, V6]; xn--4xa92520c.xn----9mcf1400a; ; ; # σ.-≮خج
-ð¼ŽÎ£ï¼Ž-≮\uFCAB; ð¼ŽÏƒ.-≮\u062E\u062C; [B1, P1, V3, V6]; xn--4xa92520c.xn----9mcf1400a; ; ; # σ.-≮خج
-ð¼ŽÏƒï¼Ž-≮\uFCAB; ð¼ŽÏƒ.-≮\u062E\u062C; [B1, P1, V3, V6]; xn--4xa92520c.xn----9mcf1400a; ; ; # σ.-≮خج
-ð¼ŽÏƒï¼Ž-<\u0338\uFCAB; ð¼ŽÏƒ.-≮\u062E\u062C; [B1, P1, V3, V6]; xn--4xa92520c.xn----9mcf1400a; ; ; # σ.-≮خج
-ê¡—\u08B8\u0719.ñ”¤”ó ›™\u0C4D\uFC3E; ê¡—\u08B8\u0719.ñ”¤”ó ›™\u0C4D\u0643\u064A; [B5, B6, P1, V6]; xn--jnb34fs003a.xn--fhbo927bk128mpi24d; ; ; # ꡗࢸܙ.à±ÙƒÙŠ
-ê¡—\u08B8\u0719.ñ”¤”ó ›™\u0C4D\u0643\u064A; ; [B5, B6, P1, V6]; xn--jnb34fs003a.xn--fhbo927bk128mpi24d; ; ; # ꡗࢸܙ.à±ÙƒÙŠ
+ð¼ŽÎ£ï¼Ž-<\u0338\uFCAB; ð¼ŽÏƒ.-≮\u062E\u062C; [B1, V3, V6]; xn--4xa92520c.xn----9mcf1400a; ; ; # σ.-≮خج
+ð¼ŽÎ£ï¼Ž-≮\uFCAB; ð¼ŽÏƒ.-≮\u062E\u062C; [B1, V3, V6]; xn--4xa92520c.xn----9mcf1400a; ; ; # σ.-≮خج
+ð¼ŽÏƒï¼Ž-≮\uFCAB; ð¼ŽÏƒ.-≮\u062E\u062C; [B1, V3, V6]; xn--4xa92520c.xn----9mcf1400a; ; ; # σ.-≮خج
+ð¼ŽÏƒï¼Ž-<\u0338\uFCAB; ð¼ŽÏƒ.-≮\u062E\u062C; [B1, V3, V6]; xn--4xa92520c.xn----9mcf1400a; ; ; # σ.-≮خج
+ê¡—\u08B8\u0719.ñ”¤”ó ›™\u0C4D\uFC3E; ê¡—\u08B8\u0719.ñ”¤”ó ›™\u0C4D\u0643\u064A; [B5, B6, V6]; xn--jnb34fs003a.xn--fhbo927bk128mpi24d; ; ; # ꡗࢸܙ.à±ÙƒÙŠ
+ê¡—\u08B8\u0719.ñ”¤”ó ›™\u0C4D\u0643\u064A; ; [B5, B6, V6]; xn--jnb34fs003a.xn--fhbo927bk128mpi24d; ; ; # ꡗࢸܙ.à±ÙƒÙŠ
xn--jnb34fs003a.xn--fhbo927bk128mpi24d; ê¡—\u08B8\u0719.ñ”¤”ó ›™\u0C4D\u0643\u064A; [B5, B6, V6]; xn--jnb34fs003a.xn--fhbo927bk128mpi24d; ; ; # ꡗࢸܙ.à±ÙƒÙŠ
ð °\u08B7𞤌ð«­ã€‚ð‹¦\u17CDð©ƒ; ð °\u08B7𞤮ð«­.ð‹¦\u17CDð©ƒ; [B1]; xn--dzb5191kezbrw47a.xn--p4e3841jz9tf; ; ; # ð °à¢·ðž¤®ð«­.ð‹¦áŸð©ƒ
ð °\u08B7𞤮ð«­ã€‚ð‹¦\u17CDð©ƒ; ð °\u08B7𞤮ð«­.ð‹¦\u17CDð©ƒ; [B1]; xn--dzb5191kezbrw47a.xn--p4e3841jz9tf; ; ; # ð °à¢·ðž¤®ð«­.ð‹¦áŸð©ƒ
@@ -2833,180 +2845,180 @@ xn----qfa550v.xn--bhb925glx3p; \u200C-ß.ᢣð¹­\u063F; [B1, B5, B6, C1]; xn----
\u200C-SS。ᢣð¹­\u063F; \u200C-ss.ᢣð¹­\u063F; [B1, B5, B6, C1]; xn---ss-8m0a.xn--bhb925glx3p; ; -ss.xn--bhb925glx3p; [B1, B5, B6, V3] # -ss.ᢣð¹­Ø¿
\u200C-ss。ᢣð¹­\u063F; \u200C-ss.ᢣð¹­\u063F; [B1, B5, B6, C1]; xn---ss-8m0a.xn--bhb925glx3p; ; -ss.xn--bhb925glx3p; [B1, B5, B6, V3] # -ss.ᢣð¹­Ø¿
\u200C-Ss。ᢣð¹­\u063F; \u200C-ss.ᢣð¹­\u063F; [B1, B5, B6, C1]; xn---ss-8m0a.xn--bhb925glx3p; ; -ss.xn--bhb925glx3p; [B1, B5, B6, V3] # -ss.ᢣð¹­Ø¿
-ê§Ó€\u1BAA\u08F6.눵; ê§Ó€\u1BAA\u08F6.눵; [P1, V6]; xn--d5a07sn4u297k.xn--2e1b; ; ; # ê§Ó€á®ªà£¶.눵
-ê§Ó€\u1BAA\u08F6.눵; ê§Ó€\u1BAA\u08F6.눵; [P1, V6]; xn--d5a07sn4u297k.xn--2e1b; ; ; # ê§Ó€á®ªà£¶.눵
-ê§Ó€\u1BAA\u08F6.눵; ; [P1, V6]; xn--d5a07sn4u297k.xn--2e1b; ; ; # ê§Ó€á®ªà£¶.눵
-ê§Ó€\u1BAA\u08F6.눵; ê§Ó€\u1BAA\u08F6.눵; [P1, V6]; xn--d5a07sn4u297k.xn--2e1b; ; ; # ê§Ó€á®ªà£¶.눵
+ê§Ó€\u1BAA\u08F6.눵; ê§Ó€\u1BAA\u08F6.눵; [V6]; xn--d5a07sn4u297k.xn--2e1b; ; ; # ê§Ó€á®ªà£¶.눵
+ê§Ó€\u1BAA\u08F6.눵; ê§Ó€\u1BAA\u08F6.눵; [V6]; xn--d5a07sn4u297k.xn--2e1b; ; ; # ê§Ó€á®ªà£¶.눵
+ê§Ó€\u1BAA\u08F6.눵; ; [V6]; xn--d5a07sn4u297k.xn--2e1b; ; ; # ê§Ó€á®ªà£¶.눵
+ê§Ó€\u1BAA\u08F6.눵; ê§Ó€\u1BAA\u08F6.눵; [V6]; xn--d5a07sn4u297k.xn--2e1b; ; ; # ê§Ó€á®ªà£¶.눵
ê§Ó\u1BAA\u08F6.눵; ê§Ó\u1BAA\u08F6.눵; ; xn--s5a04sn4u297k.xn--2e1b; ; ; # ê§Ó᮪ࣶ.눵
ê§Ó\u1BAA\u08F6.눵; ; ; xn--s5a04sn4u297k.xn--2e1b; ; ; # ê§Ó᮪ࣶ.눵
xn--s5a04sn4u297k.xn--2e1b; ê§Ó\u1BAA\u08F6.눵; ; xn--s5a04sn4u297k.xn--2e1b; ; ; # ê§Ó᮪ࣶ.눵
xn--d5a07sn4u297k.xn--2e1b; ê§Ó€\u1BAA\u08F6.눵; [V6]; xn--d5a07sn4u297k.xn--2e1b; ; ; # ê§Ó€á®ªà£¶.눵
ê§Ó\u1BAA\u08F6.눵; ê§Ó\u1BAA\u08F6.눵; ; xn--s5a04sn4u297k.xn--2e1b; ; ; # ê§Ó᮪ࣶ.눵
ê§Ó\u1BAA\u08F6.눵; ê§Ó\u1BAA\u08F6.눵; ; xn--s5a04sn4u297k.xn--2e1b; ; ; # ê§Ó᮪ࣶ.눵
-\uA8EA。𖄿𑆾󠇗; \uA8EA.𖄿𑆾; [P1, V5, V6]; xn--3g9a.xn--ud1dz07k; ; ; # ꣪.𑆾
-\uA8EA。𖄿𑆾󠇗; \uA8EA.𖄿𑆾; [P1, V5, V6]; xn--3g9a.xn--ud1dz07k; ; ; # ꣪.𑆾
+\uA8EA。𖄿𑆾󠇗; \uA8EA.𖄿𑆾; [V5, V6]; xn--3g9a.xn--ud1dz07k; ; ; # ꣪.𑆾
+\uA8EA。𖄿𑆾󠇗; \uA8EA.𖄿𑆾; [V5, V6]; xn--3g9a.xn--ud1dz07k; ; ; # ꣪.𑆾
xn--3g9a.xn--ud1dz07k; \uA8EA.𖄿𑆾; [V5, V6]; xn--3g9a.xn--ud1dz07k; ; ; # ꣪.𑆾
-󇓓𑚳。ñ·¿â‰¯â¾‡; 󇓓𑚳.ñ·¿â‰¯èˆ›; [P1, V6]; xn--3e2d79770c.xn--hdh0088abyy1c; ; ; # ð‘š³.≯舛
-󇓓𑚳。ñ·¿>\u0338⾇; 󇓓𑚳.ñ·¿â‰¯èˆ›; [P1, V6]; xn--3e2d79770c.xn--hdh0088abyy1c; ; ; # ð‘š³.≯舛
-󇓓𑚳。ñ·¿â‰¯èˆ›; 󇓓𑚳.ñ·¿â‰¯èˆ›; [P1, V6]; xn--3e2d79770c.xn--hdh0088abyy1c; ; ; # ð‘š³.≯舛
-󇓓𑚳。ñ·¿>\u0338舛; 󇓓𑚳.ñ·¿â‰¯èˆ›; [P1, V6]; xn--3e2d79770c.xn--hdh0088abyy1c; ; ; # ð‘š³.≯舛
+󇓓𑚳。ñ·¿â‰¯â¾‡; 󇓓𑚳.ñ·¿â‰¯èˆ›; [V6]; xn--3e2d79770c.xn--hdh0088abyy1c; ; ; # ð‘š³.≯舛
+󇓓𑚳。ñ·¿>\u0338⾇; 󇓓𑚳.ñ·¿â‰¯èˆ›; [V6]; xn--3e2d79770c.xn--hdh0088abyy1c; ; ; # ð‘š³.≯舛
+󇓓𑚳。ñ·¿â‰¯èˆ›; 󇓓𑚳.ñ·¿â‰¯èˆ›; [V6]; xn--3e2d79770c.xn--hdh0088abyy1c; ; ; # ð‘š³.≯舛
+󇓓𑚳。ñ·¿>\u0338舛; 󇓓𑚳.ñ·¿â‰¯èˆ›; [V6]; xn--3e2d79770c.xn--hdh0088abyy1c; ; ; # ð‘š³.≯舛
xn--3e2d79770c.xn--hdh0088abyy1c; 󇓓𑚳.ñ·¿â‰¯èˆ›; [V6]; xn--3e2d79770c.xn--hdh0088abyy1c; ; ; # ð‘š³.≯舛
ð«‡\u0661\u200C.\u200D\u200C; ð«‡\u0661\u200C.\u200D\u200C; [B1, B3, C1, C2]; xn--9hb652kv99n.xn--0ugb; ; xn--9hb7344k.; [] # ð«‡Ù¡.
ð«‡\u0661\u200C.\u200D\u200C; ; [B1, B3, C1, C2]; xn--9hb652kv99n.xn--0ugb; ; xn--9hb7344k.; [] # ð«‡Ù¡.
xn--9hb7344k.; ð«‡\u0661.; ; xn--9hb7344k.; ; ; # ð«‡Ù¡.
ð«‡\u0661.; ; ; xn--9hb7344k.; ; ; # ð«‡Ù¡.
xn--9hb652kv99n.xn--0ugb; ð«‡\u0661\u200C.\u200D\u200C; [B1, B3, C1, C2]; xn--9hb652kv99n.xn--0ugb; ; ; # ð«‡Ù¡.
-ñ¡…ˆç ªâ‰¯á¢‘。≯ð©šò“´”\u200C; ñ¡…ˆç ªâ‰¯á¢‘.≯ð©šò“´”\u200C; [C1, P1, V6]; xn--bbf561cf95e57y3e.xn--0ugz6gc910ejro8c; ; xn--bbf561cf95e57y3e.xn--hdh0834o7mj6b; [P1, V6] # 砪≯ᢑ.≯ð©š
-ñ¡…ˆç ª>\u0338ᢑ。>\u0338ð©šò“´”\u200C; ñ¡…ˆç ªâ‰¯á¢‘.≯ð©šò“´”\u200C; [C1, P1, V6]; xn--bbf561cf95e57y3e.xn--0ugz6gc910ejro8c; ; xn--bbf561cf95e57y3e.xn--hdh0834o7mj6b; [P1, V6] # 砪≯ᢑ.≯ð©š
-ñ¡…ˆç ªâ‰¯á¢‘。≯ð©šò“´”\u200C; ñ¡…ˆç ªâ‰¯á¢‘.≯ð©šò“´”\u200C; [C1, P1, V6]; xn--bbf561cf95e57y3e.xn--0ugz6gc910ejro8c; ; xn--bbf561cf95e57y3e.xn--hdh0834o7mj6b; [P1, V6] # 砪≯ᢑ.≯ð©š
-ñ¡…ˆç ª>\u0338ᢑ。>\u0338ð©šò“´”\u200C; ñ¡…ˆç ªâ‰¯á¢‘.≯ð©šò“´”\u200C; [C1, P1, V6]; xn--bbf561cf95e57y3e.xn--0ugz6gc910ejro8c; ; xn--bbf561cf95e57y3e.xn--hdh0834o7mj6b; [P1, V6] # 砪≯ᢑ.≯ð©š
+ñ¡…ˆç ªâ‰¯á¢‘。≯ð©šò“´”\u200C; ñ¡…ˆç ªâ‰¯á¢‘.≯ð©šò“´”\u200C; [C1, V6]; xn--bbf561cf95e57y3e.xn--0ugz6gc910ejro8c; ; xn--bbf561cf95e57y3e.xn--hdh0834o7mj6b; [V6] # 砪≯ᢑ.≯ð©š
+ñ¡…ˆç ª>\u0338ᢑ。>\u0338ð©šò“´”\u200C; ñ¡…ˆç ªâ‰¯á¢‘.≯ð©šò“´”\u200C; [C1, V6]; xn--bbf561cf95e57y3e.xn--0ugz6gc910ejro8c; ; xn--bbf561cf95e57y3e.xn--hdh0834o7mj6b; [V6] # 砪≯ᢑ.≯ð©š
+ñ¡…ˆç ªâ‰¯á¢‘。≯ð©šò“´”\u200C; ñ¡…ˆç ªâ‰¯á¢‘.≯ð©šò“´”\u200C; [C1, V6]; xn--bbf561cf95e57y3e.xn--0ugz6gc910ejro8c; ; xn--bbf561cf95e57y3e.xn--hdh0834o7mj6b; [V6] # 砪≯ᢑ.≯ð©š
+ñ¡…ˆç ª>\u0338ᢑ。>\u0338ð©šò“´”\u200C; ñ¡…ˆç ªâ‰¯á¢‘.≯ð©šò“´”\u200C; [C1, V6]; xn--bbf561cf95e57y3e.xn--0ugz6gc910ejro8c; ; xn--bbf561cf95e57y3e.xn--hdh0834o7mj6b; [V6] # 砪≯ᢑ.≯ð©š
xn--bbf561cf95e57y3e.xn--hdh0834o7mj6b; ñ¡…ˆç ªâ‰¯á¢‘.≯ð©šò“´”; [V6]; xn--bbf561cf95e57y3e.xn--hdh0834o7mj6b; ; ; # 砪≯ᢑ.≯ð©š
xn--bbf561cf95e57y3e.xn--0ugz6gc910ejro8c; ñ¡…ˆç ªâ‰¯á¢‘.≯ð©šò“´”\u200C; [C1, V6]; xn--bbf561cf95e57y3e.xn--0ugz6gc910ejro8c; ; ; # 砪≯ᢑ.≯ð©š
-Ⴥ.𑄳㊸; Ⴥ.𑄳43; [P1, V5, V6]; xn--9nd.xn--43-274o; ; ; # Ⴥ.𑄳43
-Ⴥ.𑄳43; ; [P1, V5, V6]; xn--9nd.xn--43-274o; ; ; # Ⴥ.𑄳43
+Ⴥ.𑄳㊸; Ⴥ.𑄳43; [V5, V6]; xn--9nd.xn--43-274o; ; ; # Ⴥ.𑄳43
+Ⴥ.𑄳43; ; [V5, V6]; xn--9nd.xn--43-274o; ; ; # Ⴥ.𑄳43
â´¥.ð‘„³43; ; [V5]; xn--tlj.xn--43-274o; ; ; # â´¥.ð‘„³43
xn--tlj.xn--43-274o; â´¥.ð‘„³43; [V5]; xn--tlj.xn--43-274o; ; ; # â´¥.ð‘„³43
xn--9nd.xn--43-274o; Ⴥ.𑄳43; [V5, V6]; xn--9nd.xn--43-274o; ; ; # Ⴥ.𑄳43
ⴥ.𑄳㊸; ⴥ.𑄳43; [V5]; xn--tlj.xn--43-274o; ; ; # ⴥ.𑄳43
-ðŸŽ\u0663。Ⴒᡇ\u08F2ð¹ ; 0\u0663.Ⴒᡇ\u08F2ð¹ ; [B1, B5, B6, P1, V6]; xn--0-fqc.xn--10b180bnwgfy0z; ; ; # 0Ù£.Ⴒᡇࣲð¹ 
-0\u0663。Ⴒᡇ\u08F2ð¹ ; 0\u0663.Ⴒᡇ\u08F2ð¹ ; [B1, B5, B6, P1, V6]; xn--0-fqc.xn--10b180bnwgfy0z; ; ; # 0Ù£.Ⴒᡇࣲð¹ 
+ðŸŽ\u0663。Ⴒᡇ\u08F2ð¹ ; 0\u0663.Ⴒᡇ\u08F2ð¹ ; [B1, B5, B6, V6]; xn--0-fqc.xn--10b180bnwgfy0z; ; ; # 0Ù£.Ⴒᡇࣲð¹ 
+0\u0663。Ⴒᡇ\u08F2ð¹ ; 0\u0663.Ⴒᡇ\u08F2ð¹ ; [B1, B5, B6, V6]; xn--0-fqc.xn--10b180bnwgfy0z; ; ; # 0Ù£.Ⴒᡇࣲð¹ 
0\u0663。ⴒᡇ\u08F2ð¹ ; 0\u0663.ⴒᡇ\u08F2ð¹ ; [B1, B5, B6]; xn--0-fqc.xn--10b369eivp359r; ; ; # 0Ù£.ⴒᡇࣲð¹ 
xn--0-fqc.xn--10b369eivp359r; 0\u0663.ⴒᡇ\u08F2ð¹ ; [B1, B5, B6]; xn--0-fqc.xn--10b369eivp359r; ; ; # 0Ù£.ⴒᡇࣲð¹ 
xn--0-fqc.xn--10b180bnwgfy0z; 0\u0663.Ⴒᡇ\u08F2ð¹ ; [B1, B5, B6, V6]; xn--0-fqc.xn--10b180bnwgfy0z; ; ; # 0Ù£.Ⴒᡇࣲð¹ 
ðŸŽ\u0663。ⴒᡇ\u08F2ð¹ ; 0\u0663.ⴒᡇ\u08F2ð¹ ; [B1, B5, B6]; xn--0-fqc.xn--10b369eivp359r; ; ; # 0Ù£.ⴒᡇࣲð¹ 
-񗪨󠄉\uFFA0\u0FB7.񸞰\uA953; 񗪨\uFFA0\u0FB7.񸞰\uA953; [P1, V6]; xn--kgd7493jee34a.xn--3j9au7544a; ; ; # ྷ.꥓
-񗪨󠄉\u1160\u0FB7.񸞰\uA953; 񗪨\u1160\u0FB7.񸞰\uA953; [P1, V6]; xn--kgd36f9z57y.xn--3j9au7544a; ; ; # ྷ.꥓
+񗪨󠄉\uFFA0\u0FB7.񸞰\uA953; 񗪨\uFFA0\u0FB7.񸞰\uA953; [V6]; xn--kgd7493jee34a.xn--3j9au7544a; ; ; # ྷ.꥓
+񗪨󠄉\u1160\u0FB7.񸞰\uA953; 񗪨\u1160\u0FB7.񸞰\uA953; [V6]; xn--kgd36f9z57y.xn--3j9au7544a; ; ; # ྷ.꥓
xn--kgd36f9z57y.xn--3j9au7544a; 񗪨\u1160\u0FB7.񸞰\uA953; [V6]; xn--kgd36f9z57y.xn--3j9au7544a; ; ; # ྷ.꥓
xn--kgd7493jee34a.xn--3j9au7544a; 񗪨\uFFA0\u0FB7.񸞰\uA953; [V6]; xn--kgd7493jee34a.xn--3j9au7544a; ; ; # ྷ.꥓
\u0618.۳\u200C\uA953; ; [C1, V5]; xn--6fb.xn--gmb469jjf1h; ; xn--6fb.xn--gmb0524f; [V5] # ؘ.۳꥓
xn--6fb.xn--gmb0524f; \u0618.۳\uA953; [V5]; xn--6fb.xn--gmb0524f; ; ; # ؘ.۳꥓
xn--6fb.xn--gmb469jjf1h; \u0618.۳\u200C\uA953; [C1, V5]; xn--6fb.xn--gmb469jjf1h; ; ; # ؘ.۳꥓
-ᡌ.︒ᢑ; ᡌ.︒ᢑ; [P1, V6]; xn--c8e.xn--bbf9168i; ; ; # ᡌ.︒ᢑ
+ᡌ.︒ᢑ; ᡌ.︒ᢑ; [V6]; xn--c8e.xn--bbf9168i; ; ; # ᡌ.︒ᢑ
ᡌ.。ᢑ; ᡌ..ᢑ; [X4_2]; xn--c8e..xn--bbf; [A4_2]; ; # ᡌ..ᢑ
xn--c8e..xn--bbf; ᡌ..ᢑ; [X4_2]; xn--c8e..xn--bbf; [A4_2]; ; # ᡌ..ᢑ
xn--c8e.xn--bbf9168i; ᡌ.︒ᢑ; [V6]; xn--c8e.xn--bbf9168i; ; ; # ᡌ.︒ᢑ
-𑋪\u1073。𞽧; 𑋪\u1073.𞽧; [B1, B3, B6, P1, V5, V6]; xn--xld7443k.xn--4o7h; ; ; # 𑋪á³.
-𑋪\u1073。𞽧; 𑋪\u1073.𞽧; [B1, B3, B6, P1, V5, V6]; xn--xld7443k.xn--4o7h; ; ; # 𑋪á³.
-xn--xld7443k.xn--4o7h; 𑋪\u1073.𞽧; [B1, B3, B6, V5, V6]; xn--xld7443k.xn--4o7h; ; ; # 𑋪á³.
-ðž·ã€‚á ¢ò“˜†; ðž·.á ¢ò“˜†; [P1, V6]; xn--hd7h.xn--46e66060j; ; ; # .á ¢
+𑋪\u1073。𞽧; 𑋪\u1073.𞽧; [B1, V5, V6]; xn--xld7443k.xn--4o7h; ; ; # 𑋪á³.
+𑋪\u1073。𞽧; 𑋪\u1073.𞽧; [B1, V5, V6]; xn--xld7443k.xn--4o7h; ; ; # 𑋪á³.
+xn--xld7443k.xn--4o7h; 𑋪\u1073.𞽧; [B1, V5, V6]; xn--xld7443k.xn--4o7h; ; ; # 𑋪á³.
+ðž·ã€‚á ¢ò“˜†; ðž·.á ¢ò“˜†; [V6]; xn--hd7h.xn--46e66060j; ; ; # .á ¢
xn--hd7h.xn--46e66060j; ðž·.á ¢ò“˜†; [V6]; xn--hd7h.xn--46e66060j; ; ; # .á ¢
-𑄳㴼.\u200Cð¹¡\u20EBñ«º¦; 𑄳㴼.\u200Cð¹¡\u20EBñ«º¦; [B1, C1, P1, V5, V6]; xn--iym9428c.xn--0ug46a7218cllv0c; ; xn--iym9428c.xn--e1g3464g08p3b; [B1, P1, V5, V6] # 𑄳㴼.ð¹¡âƒ«
-𑄳㴼.\u200Cð¹¡\u20EBñ«º¦; ; [B1, C1, P1, V5, V6]; xn--iym9428c.xn--0ug46a7218cllv0c; ; xn--iym9428c.xn--e1g3464g08p3b; [B1, P1, V5, V6] # 𑄳㴼.ð¹¡âƒ«
+𑄳㴼.\u200Cð¹¡\u20EBñ«º¦; 𑄳㴼.\u200Cð¹¡\u20EBñ«º¦; [B1, C1, V5, V6]; xn--iym9428c.xn--0ug46a7218cllv0c; ; xn--iym9428c.xn--e1g3464g08p3b; [B1, V5, V6] # 𑄳㴼.ð¹¡âƒ«
+𑄳㴼.\u200Cð¹¡\u20EBñ«º¦; ; [B1, C1, V5, V6]; xn--iym9428c.xn--0ug46a7218cllv0c; ; xn--iym9428c.xn--e1g3464g08p3b; [B1, V5, V6] # 𑄳㴼.ð¹¡âƒ«
xn--iym9428c.xn--e1g3464g08p3b; 𑄳㴼.ð¹¡\u20EBñ«º¦; [B1, V5, V6]; xn--iym9428c.xn--e1g3464g08p3b; ; ; # 𑄳㴼.ð¹¡âƒ«
xn--iym9428c.xn--0ug46a7218cllv0c; 𑄳㴼.\u200Cð¹¡\u20EBñ«º¦; [B1, C1, V5, V6]; xn--iym9428c.xn--0ug46a7218cllv0c; ; ; # 𑄳㴼.ð¹¡âƒ«
-ñ »Ÿð¹³ð‘ˆ¯ï½¡\u031D; ñ »Ÿð¹³ð‘ˆ¯.\u031D; [B1, B3, B5, B6, P1, V5, V6]; xn--ro0dw7dey96m.xn--eta; ; ; # ð¹³ð‘ˆ¯.Ì
-ñ »Ÿð¹³ð‘ˆ¯ã€‚\u031D; ñ »Ÿð¹³ð‘ˆ¯.\u031D; [B1, B3, B5, B6, P1, V5, V6]; xn--ro0dw7dey96m.xn--eta; ; ; # ð¹³ð‘ˆ¯.Ì
-xn--ro0dw7dey96m.xn--eta; ñ »Ÿð¹³ð‘ˆ¯.\u031D; [B1, B3, B5, B6, V5, V6]; xn--ro0dw7dey96m.xn--eta; ; ; # ð¹³ð‘ˆ¯.Ì
-ᢊ뾜󠱴𑚶。\u089Dð¹¥; ᢊ뾜󠱴𑚶.\u089Dð¹¥; [B1, P1, V5, V6]; xn--39e4566fjv8bwmt6n.xn--myb6415k; ; ; # ᢊ뾜𑚶.à¢ð¹¥
-ᢊ뾜󠱴𑚶。\u089Dð¹¥; ᢊ뾜󠱴𑚶.\u089Dð¹¥; [B1, P1, V5, V6]; xn--39e4566fjv8bwmt6n.xn--myb6415k; ; ; # ᢊ뾜𑚶.à¢ð¹¥
+ñ »Ÿð¹³ð‘ˆ¯ï½¡\u031D; ñ »Ÿð¹³ð‘ˆ¯.\u031D; [B1, B5, B6, V5, V6]; xn--ro0dw7dey96m.xn--eta; ; ; # ð¹³ð‘ˆ¯.Ì
+ñ »Ÿð¹³ð‘ˆ¯ã€‚\u031D; ñ »Ÿð¹³ð‘ˆ¯.\u031D; [B1, B5, B6, V5, V6]; xn--ro0dw7dey96m.xn--eta; ; ; # ð¹³ð‘ˆ¯.Ì
+xn--ro0dw7dey96m.xn--eta; ñ »Ÿð¹³ð‘ˆ¯.\u031D; [B1, B5, B6, V5, V6]; xn--ro0dw7dey96m.xn--eta; ; ; # ð¹³ð‘ˆ¯.Ì
+ᢊ뾜󠱴𑚶。\u089Dð¹¥; ᢊ뾜󠱴𑚶.\u089Dð¹¥; [B1, V5, V6]; xn--39e4566fjv8bwmt6n.xn--myb6415k; ; ; # ᢊ뾜𑚶.à¢ð¹¥
+ᢊ뾜󠱴𑚶。\u089Dð¹¥; ᢊ뾜󠱴𑚶.\u089Dð¹¥; [B1, V5, V6]; xn--39e4566fjv8bwmt6n.xn--myb6415k; ; ; # ᢊ뾜𑚶.à¢ð¹¥
xn--39e4566fjv8bwmt6n.xn--myb6415k; ᢊ뾜󠱴𑚶.\u089Dð¹¥; [B1, V5, V6]; xn--39e4566fjv8bwmt6n.xn--myb6415k; ; ; # ᢊ뾜𑚶.à¢ð¹¥
-ð¹¥â‰ ï½¡ð‹²ó § \u200C; ð¹¥â‰ .ð‹²ó § \u200C; [B1, C1, P1, V6]; xn--1ch6704g.xn--0ug3840g51u4g; ; xn--1ch6704g.xn--m97cw2999c; [B1, P1, V6] # ð¹¥â‰ .ð‹²
-ð¹¥=\u0338。ð‹²ó § \u200C; ð¹¥â‰ .ð‹²ó § \u200C; [B1, C1, P1, V6]; xn--1ch6704g.xn--0ug3840g51u4g; ; xn--1ch6704g.xn--m97cw2999c; [B1, P1, V6] # ð¹¥â‰ .ð‹²
-ð¹¥â‰ ã€‚ð‹²ó § \u200C; ð¹¥â‰ .ð‹²ó § \u200C; [B1, C1, P1, V6]; xn--1ch6704g.xn--0ug3840g51u4g; ; xn--1ch6704g.xn--m97cw2999c; [B1, P1, V6] # ð¹¥â‰ .ð‹²
-ð¹¥=\u0338。ð‹²ó § \u200C; ð¹¥â‰ .ð‹²ó § \u200C; [B1, C1, P1, V6]; xn--1ch6704g.xn--0ug3840g51u4g; ; xn--1ch6704g.xn--m97cw2999c; [B1, P1, V6] # ð¹¥â‰ .ð‹²
+ð¹¥â‰ ï½¡ð‹²ó § \u200C; ð¹¥â‰ .ð‹²ó § \u200C; [B1, C1, V6]; xn--1ch6704g.xn--0ug3840g51u4g; ; xn--1ch6704g.xn--m97cw2999c; [B1, V6] # ð¹¥â‰ .ð‹²
+ð¹¥=\u0338。ð‹²ó § \u200C; ð¹¥â‰ .ð‹²ó § \u200C; [B1, C1, V6]; xn--1ch6704g.xn--0ug3840g51u4g; ; xn--1ch6704g.xn--m97cw2999c; [B1, V6] # ð¹¥â‰ .ð‹²
+ð¹¥â‰ ã€‚ð‹²ó § \u200C; ð¹¥â‰ .ð‹²ó § \u200C; [B1, C1, V6]; xn--1ch6704g.xn--0ug3840g51u4g; ; xn--1ch6704g.xn--m97cw2999c; [B1, V6] # ð¹¥â‰ .ð‹²
+ð¹¥=\u0338。ð‹²ó § \u200C; ð¹¥â‰ .ð‹²ó § \u200C; [B1, C1, V6]; xn--1ch6704g.xn--0ug3840g51u4g; ; xn--1ch6704g.xn--m97cw2999c; [B1, V6] # ð¹¥â‰ .ð‹²
xn--1ch6704g.xn--m97cw2999c; ð¹¥â‰ .ð‹²ó § ; [B1, V6]; xn--1ch6704g.xn--m97cw2999c; ; ; # ð¹¥â‰ .ð‹²
xn--1ch6704g.xn--0ug3840g51u4g; ð¹¥â‰ .ð‹²ó § \u200C; [B1, C1, V6]; xn--1ch6704g.xn--0ug3840g51u4g; ; ; # ð¹¥â‰ .ð‹²
-\u115Fñ™¯ \u094D.\u200D\uA953ðª¤; \u115Fñ™¯ \u094D.\u200D\uA953ðª¤; [B1, C2, P1, V6]; xn--n3b542bb085j.xn--1ug6815co9wc; ; xn--n3b542bb085j.xn--3j9al95p; [B5, B6, P1, V5, V6] # à¥.꥓
-\u115Fñ™¯ \u094D.\u200D\uA953ðª¤; ; [B1, C2, P1, V6]; xn--n3b542bb085j.xn--1ug6815co9wc; ; xn--n3b542bb085j.xn--3j9al95p; [B5, B6, P1, V5, V6] # à¥.꥓
+\u115Fñ™¯ \u094D.\u200D\uA953ðª¤; \u115Fñ™¯ \u094D.\u200D\uA953ðª¤; [B1, C2, V6]; xn--n3b542bb085j.xn--1ug6815co9wc; ; xn--n3b542bb085j.xn--3j9al95p; [B5, B6, V5, V6] # à¥.꥓
+\u115Fñ™¯ \u094D.\u200D\uA953ðª¤; ; [B1, C2, V6]; xn--n3b542bb085j.xn--1ug6815co9wc; ; xn--n3b542bb085j.xn--3j9al95p; [B5, B6, V5, V6] # à¥.꥓
xn--n3b542bb085j.xn--3j9al95p; \u115Fñ™¯ \u094D.\uA953ðª¤; [B5, B6, V5, V6]; xn--n3b542bb085j.xn--3j9al95p; ; ; # à¥.꥓
xn--n3b542bb085j.xn--1ug6815co9wc; \u115Fñ™¯ \u094D.\u200D\uA953ðª¤; [B1, C2, V6]; xn--n3b542bb085j.xn--1ug6815co9wc; ; ; # à¥.꥓
-򌋔󠆎󠆗𑲕。≮; 򌋔𑲕.≮; [P1, V6]; xn--4m3dv4354a.xn--gdh; ; ; # 𑲕.≮
-򌋔󠆎󠆗𑲕。<\u0338; 򌋔𑲕.≮; [P1, V6]; xn--4m3dv4354a.xn--gdh; ; ; # 𑲕.≮
+򌋔󠆎󠆗𑲕。≮; 򌋔𑲕.≮; [V6]; xn--4m3dv4354a.xn--gdh; ; ; # 𑲕.≮
+򌋔󠆎󠆗𑲕。<\u0338; 򌋔𑲕.≮; [V6]; xn--4m3dv4354a.xn--gdh; ; ; # 𑲕.≮
xn--4m3dv4354a.xn--gdh; 򌋔𑲕.≮; [V6]; xn--4m3dv4354a.xn--gdh; ; ; # 𑲕.≮
-󠆦.\u08E3暀≠; .\u08E3暀≠; [P1, V5, V6, X4_2]; .xn--m0b461k3g2c; [P1, V5, V6, A4_2]; ; # .ࣣ暀≠
-󠆦.\u08E3暀=\u0338; .\u08E3暀≠; [P1, V5, V6, X4_2]; .xn--m0b461k3g2c; [P1, V5, V6, A4_2]; ; # .ࣣ暀≠
-.xn--m0b461k3g2c; .\u08E3暀≠; [V5, V6, X4_2]; .xn--m0b461k3g2c; [V5, V6, A4_2]; ; # .ࣣ暀≠
-ð¡¤\uABED。\uFD30òœ–…\u1DF0; ð¡¤\uABED.\u0634\u0645òœ–…\u1DF0; [B2, B3, P1, V6]; xn--429ak76o.xn--zgb8a701kox37t; ; ; # ð¡¤ê¯­.شمᷰ
-ð¡¤\uABED。\u0634\u0645òœ–…\u1DF0; ð¡¤\uABED.\u0634\u0645òœ–…\u1DF0; [B2, B3, P1, V6]; xn--429ak76o.xn--zgb8a701kox37t; ; ; # ð¡¤ê¯­.شمᷰ
+󠆦.\u08E3暀≠; .\u08E3暀≠; [V5, X4_2]; .xn--m0b461k3g2c; [V5, A4_2]; ; # .ࣣ暀≠
+󠆦.\u08E3暀=\u0338; .\u08E3暀≠; [V5, X4_2]; .xn--m0b461k3g2c; [V5, A4_2]; ; # .ࣣ暀≠
+.xn--m0b461k3g2c; .\u08E3暀≠; [V5, X4_2]; .xn--m0b461k3g2c; [V5, A4_2]; ; # .ࣣ暀≠
+ð¡¤\uABED。\uFD30òœ–…\u1DF0; ð¡¤\uABED.\u0634\u0645òœ–…\u1DF0; [B2, B3, V6]; xn--429ak76o.xn--zgb8a701kox37t; ; ; # ð¡¤ê¯­.شمᷰ
+ð¡¤\uABED。\u0634\u0645òœ–…\u1DF0; ð¡¤\uABED.\u0634\u0645òœ–…\u1DF0; [B2, B3, V6]; xn--429ak76o.xn--zgb8a701kox37t; ; ; # ð¡¤ê¯­.شمᷰ
xn--429ak76o.xn--zgb8a701kox37t; ð¡¤\uABED.\u0634\u0645òœ–…\u1DF0; [B2, B3, V6]; xn--429ak76o.xn--zgb8a701kox37t; ; ; # ð¡¤ê¯­.شمᷰ
-ð‰ƒ\u200D⒈。Ⴌ𞱓; ð‰ƒ\u200Dâ’ˆ.Ⴌ𞱓; [B1, B5, B6, C2, P1, V5, V6]; xn--1ug68oq348b.xn--knd8464v; ; xn--tshz828m.xn--knd8464v; [B1, B5, B6, P1, V5, V6] # ð‰ƒâ’ˆ.Ⴌ
-ð‰ƒ\u200D1.。Ⴌ𞱓; ð‰ƒ\u200D1..Ⴌ𞱓; [B1, B5, B6, C2, P1, V5, V6, X4_2]; xn--1-tgn9827q..xn--knd8464v; [B1, B5, B6, C2, P1, V5, V6, A4_2]; xn--1-px8q..xn--knd8464v; [B1, B5, B6, P1, V5, V6, A4_2] # ð‰ƒ1..Ⴌ
-ð‰ƒ\u200D1.。ⴌ𞱓; ð‰ƒ\u200D1..ⴌ𞱓; [B1, B5, B6, C2, P1, V5, V6, X4_2]; xn--1-tgn9827q..xn--3kj4524l; [B1, B5, B6, C2, P1, V5, V6, A4_2]; xn--1-px8q..xn--3kj4524l; [B1, B5, B6, P1, V5, V6, A4_2] # ð‰ƒ1..â´Œ
+ð‰ƒ\u200D⒈。Ⴌ𞱓; ð‰ƒ\u200Dâ’ˆ.Ⴌ𞱓; [B1, B5, B6, C2, V5, V6]; xn--1ug68oq348b.xn--knd8464v; ; xn--tshz828m.xn--knd8464v; [B1, B5, B6, V5, V6] # ð‰ƒâ’ˆ.Ⴌ
+ð‰ƒ\u200D1.。Ⴌ𞱓; ð‰ƒ\u200D1..Ⴌ𞱓; [B1, B5, B6, C2, V5, V6, X4_2]; xn--1-tgn9827q..xn--knd8464v; [B1, B5, B6, C2, V5, V6, A4_2]; xn--1-px8q..xn--knd8464v; [B1, B5, B6, V5, V6, A4_2] # ð‰ƒ1..Ⴌ
+ð‰ƒ\u200D1.。ⴌ𞱓; ð‰ƒ\u200D1..ⴌ𞱓; [B1, B5, B6, C2, V5, V6, X4_2]; xn--1-tgn9827q..xn--3kj4524l; [B1, B5, B6, C2, V5, V6, A4_2]; xn--1-px8q..xn--3kj4524l; [B1, B5, B6, V5, V6, A4_2] # ð‰ƒ1..â´Œ
xn--1-px8q..xn--3kj4524l; ð‰ƒ1..ⴌ𞱓; [B1, B5, B6, V5, V6, X4_2]; xn--1-px8q..xn--3kj4524l; [B1, B5, B6, V5, V6, A4_2]; ; # ð‰ƒ1..â´Œ
xn--1-tgn9827q..xn--3kj4524l; ð‰ƒ\u200D1..ⴌ𞱓; [B1, B5, B6, C2, V5, V6, X4_2]; xn--1-tgn9827q..xn--3kj4524l; [B1, B5, B6, C2, V5, V6, A4_2]; ; # ð‰ƒ1..â´Œ
xn--1-px8q..xn--knd8464v; ð‰ƒ1..Ⴌ𞱓; [B1, B5, B6, V5, V6, X4_2]; xn--1-px8q..xn--knd8464v; [B1, B5, B6, V5, V6, A4_2]; ; # ð‰ƒ1..Ⴌ
xn--1-tgn9827q..xn--knd8464v; ð‰ƒ\u200D1..Ⴌ𞱓; [B1, B5, B6, C2, V5, V6, X4_2]; xn--1-tgn9827q..xn--knd8464v; [B1, B5, B6, C2, V5, V6, A4_2]; ; # ð‰ƒ1..Ⴌ
-ð‰ƒ\u200D⒈。ⴌ𞱓; ð‰ƒ\u200Dâ’ˆ.ⴌ𞱓; [B1, B5, B6, C2, P1, V5, V6]; xn--1ug68oq348b.xn--3kj4524l; ; xn--tshz828m.xn--3kj4524l; [B1, B5, B6, P1, V5, V6] # ð‰ƒâ’ˆ.â´Œ
+ð‰ƒ\u200D⒈。ⴌ𞱓; ð‰ƒ\u200Dâ’ˆ.ⴌ𞱓; [B1, B5, B6, C2, V5, V6]; xn--1ug68oq348b.xn--3kj4524l; ; xn--tshz828m.xn--3kj4524l; [B1, B5, B6, V5, V6] # ð‰ƒâ’ˆ.â´Œ
xn--tshz828m.xn--3kj4524l; ð‰ƒâ’ˆ.ⴌ𞱓; [B1, B5, B6, V5, V6]; xn--tshz828m.xn--3kj4524l; ; ; # ð‰ƒâ’ˆ.â´Œ
xn--1ug68oq348b.xn--3kj4524l; ð‰ƒ\u200Dâ’ˆ.ⴌ𞱓; [B1, B5, B6, C2, V5, V6]; xn--1ug68oq348b.xn--3kj4524l; ; ; # ð‰ƒâ’ˆ.â´Œ
xn--tshz828m.xn--knd8464v; ð‰ƒâ’ˆ.Ⴌ𞱓; [B1, B5, B6, V5, V6]; xn--tshz828m.xn--knd8464v; ; ; # ð‰ƒâ’ˆ.Ⴌ
xn--1ug68oq348b.xn--knd8464v; ð‰ƒ\u200Dâ’ˆ.Ⴌ𞱓; [B1, B5, B6, C2, V5, V6]; xn--1ug68oq348b.xn--knd8464v; ; ; # ð‰ƒâ’ˆ.Ⴌ
-ó £™\u0A4D𱫘𞤸.Ï‚ñµ¯žôˆ°”; ; [B1, P1, V6]; xn--ybc0236vjvxgt5q0g.xn--3xa03737giye6b; ; xn--ybc0236vjvxgt5q0g.xn--4xa82737giye6b; # à©ð±«˜ðž¤¸.Ï‚
-ó £™\u0A4D𱫘𞤖.Σñµ¯žôˆ°”; ó £™\u0A4D𱫘𞤸.σñµ¯žôˆ°”; [B1, P1, V6]; xn--ybc0236vjvxgt5q0g.xn--4xa82737giye6b; ; ; # à©ð±«˜ðž¤¸.σ
-ó £™\u0A4D𱫘𞤸.σñµ¯žôˆ°”; ; [B1, P1, V6]; xn--ybc0236vjvxgt5q0g.xn--4xa82737giye6b; ; ; # à©ð±«˜ðž¤¸.σ
-ó £™\u0A4D𱫘𞤖.σñµ¯žôˆ°”; ó £™\u0A4D𱫘𞤸.σñµ¯žôˆ°”; [B1, P1, V6]; xn--ybc0236vjvxgt5q0g.xn--4xa82737giye6b; ; ; # à©ð±«˜ðž¤¸.σ
+ó £™\u0A4D𱫘𞤸.Ï‚ñµ¯žôˆ°”; ; [B1, V6]; xn--ybc0236vjvxgt5q0g.xn--3xa03737giye6b; ; xn--ybc0236vjvxgt5q0g.xn--4xa82737giye6b; # à©ð±«˜ðž¤¸.Ï‚
+ó £™\u0A4D𱫘𞤖.Σñµ¯žôˆ°”; ó £™\u0A4D𱫘𞤸.σñµ¯žôˆ°”; [B1, V6]; xn--ybc0236vjvxgt5q0g.xn--4xa82737giye6b; ; ; # à©ð±«˜ðž¤¸.σ
+ó £™\u0A4D𱫘𞤸.σñµ¯žôˆ°”; ; [B1, V6]; xn--ybc0236vjvxgt5q0g.xn--4xa82737giye6b; ; ; # à©ð±«˜ðž¤¸.σ
+ó £™\u0A4D𱫘𞤖.σñµ¯žôˆ°”; ó £™\u0A4D𱫘𞤸.σñµ¯žôˆ°”; [B1, V6]; xn--ybc0236vjvxgt5q0g.xn--4xa82737giye6b; ; ; # à©ð±«˜ðž¤¸.σ
xn--ybc0236vjvxgt5q0g.xn--4xa82737giye6b; ó £™\u0A4D𱫘𞤸.σñµ¯žôˆ°”; [B1, V6]; xn--ybc0236vjvxgt5q0g.xn--4xa82737giye6b; ; ; # à©ð±«˜ðž¤¸.σ
-ó £™\u0A4D𱫘𞤖.Ï‚ñµ¯žôˆ°”; ó £™\u0A4D𱫘𞤸.Ï‚ñµ¯žôˆ°”; [B1, P1, V6]; xn--ybc0236vjvxgt5q0g.xn--3xa03737giye6b; ; xn--ybc0236vjvxgt5q0g.xn--4xa82737giye6b; # à©ð±«˜ðž¤¸.Ï‚
+ó £™\u0A4D𱫘𞤖.Ï‚ñµ¯žôˆ°”; ó £™\u0A4D𱫘𞤸.Ï‚ñµ¯žôˆ°”; [B1, V6]; xn--ybc0236vjvxgt5q0g.xn--3xa03737giye6b; ; xn--ybc0236vjvxgt5q0g.xn--4xa82737giye6b; # à©ð±«˜ðž¤¸.Ï‚
xn--ybc0236vjvxgt5q0g.xn--3xa03737giye6b; ó £™\u0A4D𱫘𞤸.Ï‚ñµ¯žôˆ°”; [B1, V6]; xn--ybc0236vjvxgt5q0g.xn--3xa03737giye6b; ; ; # à©ð±«˜ðž¤¸.Ï‚
-ó £™\u0A4D𱫘𞤸.Σñµ¯žôˆ°”; ó £™\u0A4D𱫘𞤸.σñµ¯žôˆ°”; [B1, P1, V6]; xn--ybc0236vjvxgt5q0g.xn--4xa82737giye6b; ; ; # à©ð±«˜ðž¤¸.σ
-\u07D3。\u200Cð«€òž­±; \u07D3.\u200Cð«€òž­±; [B1, C1, P1, V6]; xn--usb.xn--0ug9553gm3v5d; ; xn--usb.xn--pw9ci1099a; [B2, B3, P1, V6] # ß“.ð«€
+ó £™\u0A4D𱫘𞤸.Σñµ¯žôˆ°”; ó £™\u0A4D𱫘𞤸.σñµ¯žôˆ°”; [B1, V6]; xn--ybc0236vjvxgt5q0g.xn--4xa82737giye6b; ; ; # à©ð±«˜ðž¤¸.σ
+\u07D3。\u200Cð«€òž­±; \u07D3.\u200Cð«€òž­±; [B1, C1, V6]; xn--usb.xn--0ug9553gm3v5d; ; xn--usb.xn--pw9ci1099a; [B2, B3, V6] # ß“.ð«€
xn--usb.xn--pw9ci1099a; \u07D3.ð«€òž­±; [B2, B3, V6]; xn--usb.xn--pw9ci1099a; ; ; # ß“.ð«€
xn--usb.xn--0ug9553gm3v5d; \u07D3.\u200Cð«€òž­±; [B1, C1, V6]; xn--usb.xn--0ug9553gm3v5d; ; ; # ß“.ð«€
-\u1C2Eðž€.\u05A6ꡟ𞤕󠆖; \u1C2Eðž€.\u05A6ꡟ𞤷; [B1, B3, B6, V5]; xn--q1f4493q.xn--xcb8244fifvj; ; ; # á°®ðž€.֦ꡟ𞤷
-\u1C2Eðž€.\u05A6ꡟ𞤷󠆖; \u1C2Eðž€.\u05A6ꡟ𞤷; [B1, B3, B6, V5]; xn--q1f4493q.xn--xcb8244fifvj; ; ; # á°®ðž€.֦ꡟ𞤷
-xn--q1f4493q.xn--xcb8244fifvj; \u1C2Eðž€.\u05A6ꡟ𞤷; [B1, B3, B6, V5]; xn--q1f4493q.xn--xcb8244fifvj; ; ; # á°®ðž€.֦ꡟ𞤷
-䂹󾖅ð‹¦ï¼Ž\u200D; 䂹󾖅ð‹¦.\u200D; [C2, P1, V6]; xn--0on3543c5981i.xn--1ug; ; xn--0on3543c5981i.; [P1, V6] # 䂹ð‹¦.
-䂹󾖅ð‹¦.\u200D; ; [C2, P1, V6]; xn--0on3543c5981i.xn--1ug; ; xn--0on3543c5981i.; [P1, V6] # 䂹ð‹¦.
+\u1C2Eðž€.\u05A6ꡟ𞤕󠆖; \u1C2Eðž€.\u05A6ꡟ𞤷; [B1, V5]; xn--q1f4493q.xn--xcb8244fifvj; ; ; # á°®ðž€.֦ꡟ𞤷
+\u1C2Eðž€.\u05A6ꡟ𞤷󠆖; \u1C2Eðž€.\u05A6ꡟ𞤷; [B1, V5]; xn--q1f4493q.xn--xcb8244fifvj; ; ; # á°®ðž€.֦ꡟ𞤷
+xn--q1f4493q.xn--xcb8244fifvj; \u1C2Eðž€.\u05A6ꡟ𞤷; [B1, V5]; xn--q1f4493q.xn--xcb8244fifvj; ; ; # á°®ðž€.֦ꡟ𞤷
+䂹󾖅ð‹¦ï¼Ž\u200D; 䂹󾖅ð‹¦.\u200D; [C2, V6]; xn--0on3543c5981i.xn--1ug; ; xn--0on3543c5981i.; [V6] # 䂹ð‹¦.
+䂹󾖅ð‹¦.\u200D; ; [C2, V6]; xn--0on3543c5981i.xn--1ug; ; xn--0on3543c5981i.; [V6] # 䂹ð‹¦.
xn--0on3543c5981i.; 䂹󾖅ð‹¦.; [V6]; xn--0on3543c5981i.; ; ; # 䂹ð‹¦.
xn--0on3543c5981i.xn--1ug; 䂹󾖅ð‹¦.\u200D; [C2, V6]; xn--0on3543c5981i.xn--1ug; ; ; # 䂹ð‹¦.
-\uA9C0\u200Cð¹²\u200C。\u0767🄉; \uA9C0\u200Cð¹²\u200C.\u0767🄉; [B5, B6, C1, P1, V5, V6]; xn--0uga8686hdgvd.xn--rpb6081w; ; xn--7m9an32q.xn--rpb6081w; [B5, B6, P1, V5, V6] # ꧀ð¹².ݧ🄉
-\uA9C0\u200Cð¹²\u200C。\u07678,; \uA9C0\u200Cð¹²\u200C.\u07678,; [B3, B5, B6, C1, P1, V5, V6]; xn--0uga8686hdgvd.xn--8,-qle; ; xn--7m9an32q.xn--8,-qle; [B3, B5, B6, P1, V5, V6] # ꧀ð¹².ݧ8,
-xn--7m9an32q.xn--8,-qle; \uA9C0ð¹².\u07678,; [B3, B5, B6, P1, V5, V6]; xn--7m9an32q.xn--8,-qle; ; ; # ꧀ð¹².ݧ8,
-xn--0uga8686hdgvd.xn--8,-qle; \uA9C0\u200Cð¹²\u200C.\u07678,; [B3, B5, B6, C1, P1, V5, V6]; xn--0uga8686hdgvd.xn--8,-qle; ; ; # ꧀ð¹².ݧ8,
+\uA9C0\u200Cð¹²\u200C。\u0767🄉; \uA9C0\u200Cð¹²\u200C.\u0767🄉; [B5, B6, C1, V5, V6]; xn--0uga8686hdgvd.xn--rpb6081w; ; xn--7m9an32q.xn--rpb6081w; [B5, B6, V5, V6] # ꧀ð¹².ݧ🄉
+\uA9C0\u200Cð¹²\u200C。\u07678,; \uA9C0\u200Cð¹²\u200C.\u07678,; [B3, B5, B6, C1, V5, V6]; xn--0uga8686hdgvd.xn--8,-qle; ; xn--7m9an32q.xn--8,-qle; [B3, B5, B6, V5, V6] # ꧀ð¹².ݧ8,
+xn--7m9an32q.xn--8,-qle; \uA9C0ð¹².\u07678,; [B3, B5, B6, V5, V6]; xn--7m9an32q.xn--8,-qle; ; ; # ꧀ð¹².ݧ8,
+xn--0uga8686hdgvd.xn--8,-qle; \uA9C0\u200Cð¹²\u200C.\u07678,; [B3, B5, B6, C1, V5, V6]; xn--0uga8686hdgvd.xn--8,-qle; ; ; # ꧀ð¹².ݧ8,
xn--7m9an32q.xn--rpb6081w; \uA9C0ð¹².\u0767🄉; [B5, B6, V5, V6]; xn--7m9an32q.xn--rpb6081w; ; ; # ꧀ð¹².ݧ🄉
xn--0uga8686hdgvd.xn--rpb6081w; \uA9C0\u200Cð¹²\u200C.\u0767🄉; [B5, B6, C1, V5, V6]; xn--0uga8686hdgvd.xn--rpb6081w; ; ; # ꧀ð¹².ݧ🄉
-︒。Ⴃ≯; ︒.Ⴃ≯; [P1, V6]; xn--y86c.xn--bnd622g; ; ; # ︒.Ⴃ≯
-︒。Ⴃ>\u0338; ︒.Ⴃ≯; [P1, V6]; xn--y86c.xn--bnd622g; ; ; # ︒.Ⴃ≯
-。。Ⴃ≯; ..Ⴃ≯; [P1, V6, X4_2]; ..xn--bnd622g; [P1, V6, A4_2]; ; # ..Ⴃ≯
-。。Ⴃ>\u0338; ..Ⴃ≯; [P1, V6, X4_2]; ..xn--bnd622g; [P1, V6, A4_2]; ; # ..Ⴃ≯
-。。ⴃ>\u0338; ..ⴃ≯; [P1, V6, X4_2]; ..xn--hdh782b; [P1, V6, A4_2]; ; # ..ⴃ≯
-。。ⴃ≯; ..ⴃ≯; [P1, V6, X4_2]; ..xn--hdh782b; [P1, V6, A4_2]; ; # ..ⴃ≯
-..xn--hdh782b; ..ⴃ≯; [V6, X4_2]; ..xn--hdh782b; [V6, A4_2]; ; # ..ⴃ≯
+︒。Ⴃ≯; ︒.Ⴃ≯; [V6]; xn--y86c.xn--bnd622g; ; ; # ︒.Ⴃ≯
+︒。Ⴃ>\u0338; ︒.Ⴃ≯; [V6]; xn--y86c.xn--bnd622g; ; ; # ︒.Ⴃ≯
+。。Ⴃ≯; ..Ⴃ≯; [V6, X4_2]; ..xn--bnd622g; [V6, A4_2]; ; # ..Ⴃ≯
+。。Ⴃ>\u0338; ..Ⴃ≯; [V6, X4_2]; ..xn--bnd622g; [V6, A4_2]; ; # ..Ⴃ≯
+。。ⴃ>\u0338; ..ⴃ≯; [X4_2]; ..xn--hdh782b; [A4_2]; ; # ..ⴃ≯
+。。ⴃ≯; ..ⴃ≯; [X4_2]; ..xn--hdh782b; [A4_2]; ; # ..ⴃ≯
+..xn--hdh782b; ..ⴃ≯; [X4_2]; ..xn--hdh782b; [A4_2]; ; # ..ⴃ≯
..xn--bnd622g; ..Ⴃ≯; [V6, X4_2]; ..xn--bnd622g; [V6, A4_2]; ; # ..Ⴃ≯
-︒。ⴃ>\u0338; ︒.ⴃ≯; [P1, V6]; xn--y86c.xn--hdh782b; ; ; # ︒.ⴃ≯
-︒。ⴃ≯; ︒.ⴃ≯; [P1, V6]; xn--y86c.xn--hdh782b; ; ; # ︒.ⴃ≯
+︒。ⴃ>\u0338; ︒.ⴃ≯; [V6]; xn--y86c.xn--hdh782b; ; ; # ︒.ⴃ≯
+︒。ⴃ≯; ︒.ⴃ≯; [V6]; xn--y86c.xn--hdh782b; ; ; # ︒.ⴃ≯
xn--y86c.xn--hdh782b; ︒.ⴃ≯; [V6]; xn--y86c.xn--hdh782b; ; ; # ︒.ⴃ≯
xn--y86c.xn--bnd622g; ︒.Ⴃ≯; [V6]; xn--y86c.xn--bnd622g; ; ; # ︒.Ⴃ≯
-ð¹®ï½¡ó ¢¼\u200D; ð¹®.ó ¢¼\u200D; [B1, C2, P1, V6]; xn--mo0d.xn--1ug18431l; ; xn--mo0d.xn--wy46e; [B1, P1, V6] # ð¹®.
-ð¹®ã€‚ó ¢¼\u200D; ð¹®.ó ¢¼\u200D; [B1, C2, P1, V6]; xn--mo0d.xn--1ug18431l; ; xn--mo0d.xn--wy46e; [B1, P1, V6] # ð¹®.
+ð¹®ï½¡ó ¢¼\u200D; ð¹®.ó ¢¼\u200D; [B1, C2, V6]; xn--mo0d.xn--1ug18431l; ; xn--mo0d.xn--wy46e; [B1, V6] # ð¹®.
+ð¹®ã€‚ó ¢¼\u200D; ð¹®.ó ¢¼\u200D; [B1, C2, V6]; xn--mo0d.xn--1ug18431l; ; xn--mo0d.xn--wy46e; [B1, V6] # ð¹®.
xn--mo0d.xn--wy46e; ð¹®.ó ¢¼; [B1, V6]; xn--mo0d.xn--wy46e; ; ; # ð¹®.
xn--mo0d.xn--1ug18431l; ð¹®.ó ¢¼\u200D; [B1, C2, V6]; xn--mo0d.xn--1ug18431l; ; ; # ð¹®.
-Ⴞð¹¨ï½¡ï¸’\u077D\u200DႯ; Ⴞð¹¨.︒\u077D\u200DႯ; [B1, B5, B6, C2, P1, V6]; xn--2nd0990k.xn--eqb228bgzmvp0t; ; xn--2nd0990k.xn--eqb228b583r; [B1, B5, B6, P1, V6] # Ⴞð¹¨.︒ݽႯ
-Ⴞð¹¨ã€‚。\u077D\u200DႯ; Ⴞð¹¨..\u077D\u200DႯ; [B2, B3, B5, B6, C2, P1, V6, X4_2]; xn--2nd0990k..xn--eqb228bgzm; [B2, B3, B5, B6, C2, P1, V6, A4_2]; xn--2nd0990k..xn--eqb228b; [B2, B3, B5, B6, P1, V6, A4_2] # Ⴞð¹¨..ݽႯ
+Ⴞð¹¨ï½¡ï¸’\u077D\u200DႯ; Ⴞð¹¨.︒\u077D\u200DႯ; [B1, B5, B6, C2, V6]; xn--2nd0990k.xn--eqb228bgzmvp0t; ; xn--2nd0990k.xn--eqb228b583r; [B1, B5, B6, V6] # Ⴞð¹¨.︒ݽႯ
+Ⴞð¹¨ã€‚。\u077D\u200DႯ; Ⴞð¹¨..\u077D\u200DႯ; [B2, B3, B5, B6, C2, V6, X4_2]; xn--2nd0990k..xn--eqb228bgzm; [B2, B3, B5, B6, C2, V6, A4_2]; xn--2nd0990k..xn--eqb228b; [B2, B3, B5, B6, V6, A4_2] # Ⴞð¹¨..ݽႯ
â´žð¹¨ã€‚。\u077D\u200Dâ´; â´žð¹¨..\u077D\u200Dâ´; [B2, B3, B5, B6, C2, X4_2]; xn--mlju223e..xn--eqb096jpgj; [B2, B3, B5, B6, C2, A4_2]; xn--mlju223e..xn--eqb053q; [B2, B3, B5, B6, A4_2] # â´žð¹¨..ݽâ´
-Ⴞð¹¨ã€‚。\u077D\u200Dâ´; Ⴞð¹¨..\u077D\u200Dâ´; [B2, B3, B5, B6, C2, P1, V6, X4_2]; xn--2nd0990k..xn--eqb096jpgj; [B2, B3, B5, B6, C2, P1, V6, A4_2]; xn--2nd0990k..xn--eqb053q; [B2, B3, B5, B6, P1, V6, A4_2] # Ⴞð¹¨..ݽâ´
+Ⴞð¹¨ã€‚。\u077D\u200Dâ´; Ⴞð¹¨..\u077D\u200Dâ´; [B2, B3, B5, B6, C2, V6, X4_2]; xn--2nd0990k..xn--eqb096jpgj; [B2, B3, B5, B6, C2, V6, A4_2]; xn--2nd0990k..xn--eqb053q; [B2, B3, B5, B6, V6, A4_2] # Ⴞð¹¨..ݽâ´
xn--2nd0990k..xn--eqb053q; Ⴞð¹¨..\u077Dâ´; [B2, B3, B5, B6, V6, X4_2]; xn--2nd0990k..xn--eqb053q; [B2, B3, B5, B6, V6, A4_2]; ; # Ⴞð¹¨..ݽâ´
xn--2nd0990k..xn--eqb096jpgj; Ⴞð¹¨..\u077D\u200Dâ´; [B2, B3, B5, B6, C2, V6, X4_2]; xn--2nd0990k..xn--eqb096jpgj; [B2, B3, B5, B6, C2, V6, A4_2]; ; # Ⴞð¹¨..ݽâ´
xn--mlju223e..xn--eqb053q; â´žð¹¨..\u077Dâ´; [B2, B3, B5, B6, X4_2]; xn--mlju223e..xn--eqb053q; [B2, B3, B5, B6, A4_2]; ; # â´žð¹¨..ݽâ´
xn--mlju223e..xn--eqb096jpgj; â´žð¹¨..\u077D\u200Dâ´; [B2, B3, B5, B6, C2, X4_2]; xn--mlju223e..xn--eqb096jpgj; [B2, B3, B5, B6, C2, A4_2]; ; # â´žð¹¨..ݽâ´
xn--2nd0990k..xn--eqb228b; Ⴞð¹¨..\u077DႯ; [B2, B3, B5, B6, V6, X4_2]; xn--2nd0990k..xn--eqb228b; [B2, B3, B5, B6, V6, A4_2]; ; # Ⴞð¹¨..ݽႯ
xn--2nd0990k..xn--eqb228bgzm; Ⴞð¹¨..\u077D\u200DႯ; [B2, B3, B5, B6, C2, V6, X4_2]; xn--2nd0990k..xn--eqb228bgzm; [B2, B3, B5, B6, C2, V6, A4_2]; ; # Ⴞð¹¨..ݽႯ
-â´žð¹¨ï½¡ï¸’\u077D\u200Dâ´; â´žð¹¨.︒\u077D\u200Dâ´; [B1, B5, B6, C2, P1, V6]; xn--mlju223e.xn--eqb096jpgj9y7r; ; xn--mlju223e.xn--eqb053qjk7l; [B1, B5, B6, P1, V6] # â´žð¹¨.︒ݽâ´
-Ⴞð¹¨ï½¡ï¸’\u077D\u200Dâ´; Ⴞð¹¨.︒\u077D\u200Dâ´; [B1, B5, B6, C2, P1, V6]; xn--2nd0990k.xn--eqb096jpgj9y7r; ; xn--2nd0990k.xn--eqb053qjk7l; [B1, B5, B6, P1, V6] # Ⴞð¹¨.︒ݽâ´
+â´žð¹¨ï½¡ï¸’\u077D\u200Dâ´; â´žð¹¨.︒\u077D\u200Dâ´; [B1, B5, B6, C2, V6]; xn--mlju223e.xn--eqb096jpgj9y7r; ; xn--mlju223e.xn--eqb053qjk7l; [B1, B5, B6, V6] # â´žð¹¨.︒ݽâ´
+Ⴞð¹¨ï½¡ï¸’\u077D\u200Dâ´; Ⴞð¹¨.︒\u077D\u200Dâ´; [B1, B5, B6, C2, V6]; xn--2nd0990k.xn--eqb096jpgj9y7r; ; xn--2nd0990k.xn--eqb053qjk7l; [B1, B5, B6, V6] # Ⴞð¹¨.︒ݽâ´
xn--2nd0990k.xn--eqb053qjk7l; Ⴞð¹¨.︒\u077Dâ´; [B1, B5, B6, V6]; xn--2nd0990k.xn--eqb053qjk7l; ; ; # Ⴞð¹¨.︒ݽâ´
xn--2nd0990k.xn--eqb096jpgj9y7r; Ⴞð¹¨.︒\u077D\u200Dâ´; [B1, B5, B6, C2, V6]; xn--2nd0990k.xn--eqb096jpgj9y7r; ; ; # Ⴞð¹¨.︒ݽâ´
xn--mlju223e.xn--eqb053qjk7l; â´žð¹¨.︒\u077Dâ´; [B1, B5, B6, V6]; xn--mlju223e.xn--eqb053qjk7l; ; ; # â´žð¹¨.︒ݽâ´
xn--mlju223e.xn--eqb096jpgj9y7r; â´žð¹¨.︒\u077D\u200Dâ´; [B1, B5, B6, C2, V6]; xn--mlju223e.xn--eqb096jpgj9y7r; ; ; # â´žð¹¨.︒ݽâ´
xn--2nd0990k.xn--eqb228b583r; Ⴞð¹¨.︒\u077DႯ; [B1, B5, B6, V6]; xn--2nd0990k.xn--eqb228b583r; ; ; # Ⴞð¹¨.︒ݽႯ
xn--2nd0990k.xn--eqb228bgzmvp0t; Ⴞð¹¨.︒\u077D\u200DႯ; [B1, B5, B6, C2, V6]; xn--2nd0990k.xn--eqb228bgzmvp0t; ; ; # Ⴞð¹¨.︒ݽႯ
-\u200CႦðŸ¹ã€‚-\u20D2-\u07D1; \u200CႦ3.-\u20D2-\u07D1; [B1, C1, P1, V3, V6]; xn--3-i0g939i.xn-----vue617w; ; xn--3-i0g.xn-----vue617w; [B1, P1, V3, V6] # Ⴆ3.-⃒-ß‘
-\u200CႦ3。-\u20D2-\u07D1; \u200CႦ3.-\u20D2-\u07D1; [B1, C1, P1, V3, V6]; xn--3-i0g939i.xn-----vue617w; ; xn--3-i0g.xn-----vue617w; [B1, P1, V3, V6] # Ⴆ3.-⃒-ߑ
+\u200CႦðŸ¹ã€‚-\u20D2-\u07D1; \u200CႦ3.-\u20D2-\u07D1; [B1, C1, V3, V6]; xn--3-i0g939i.xn-----vue617w; ; xn--3-i0g.xn-----vue617w; [B1, V3, V6] # Ⴆ3.-⃒-ß‘
+\u200CႦ3。-\u20D2-\u07D1; \u200CႦ3.-\u20D2-\u07D1; [B1, C1, V3, V6]; xn--3-i0g939i.xn-----vue617w; ; xn--3-i0g.xn-----vue617w; [B1, V3, V6] # Ⴆ3.-⃒-ߑ
\u200Cⴆ3。-\u20D2-\u07D1; \u200Cⴆ3.-\u20D2-\u07D1; [B1, C1, V3]; xn--3-rgnv99c.xn-----vue617w; ; xn--3-lvs.xn-----vue617w; [B1, V3] # ⴆ3.-⃒-ߑ
xn--3-lvs.xn-----vue617w; ⴆ3.-\u20D2-\u07D1; [B1, V3]; xn--3-lvs.xn-----vue617w; ; ; # ⴆ3.-⃒-ߑ
xn--3-rgnv99c.xn-----vue617w; \u200Cⴆ3.-\u20D2-\u07D1; [B1, C1, V3]; xn--3-rgnv99c.xn-----vue617w; ; ; # ⴆ3.-⃒-ߑ
xn--3-i0g.xn-----vue617w; Ⴆ3.-\u20D2-\u07D1; [B1, V3, V6]; xn--3-i0g.xn-----vue617w; ; ; # Ⴆ3.-⃒-ߑ
xn--3-i0g939i.xn-----vue617w; \u200CႦ3.-\u20D2-\u07D1; [B1, C1, V3, V6]; xn--3-i0g939i.xn-----vue617w; ; ; # Ⴆ3.-⃒-ߑ
\u200Câ´†ðŸ¹ã€‚-\u20D2-\u07D1; \u200Câ´†3.-\u20D2-\u07D1; [B1, C1, V3]; xn--3-rgnv99c.xn-----vue617w; ; xn--3-lvs.xn-----vue617w; [B1, V3] # â´†3.-⃒-ß‘
-箃áƒ-ó ï½¡â‰ -🤖; 箃áƒ-ó .≠-🤖; [P1, V6]; xn----11g3013fy8x5m.xn----tfot873s; ; ; # 箃áƒ-.≠-🤖
-箃áƒ-ó ï½¡=\u0338-🤖; 箃áƒ-ó .≠-🤖; [P1, V6]; xn----11g3013fy8x5m.xn----tfot873s; ; ; # 箃áƒ-.≠-🤖
-箃áƒ-ó ã€‚≠-🤖; 箃áƒ-ó .≠-🤖; [P1, V6]; xn----11g3013fy8x5m.xn----tfot873s; ; ; # 箃áƒ-.≠-🤖
-箃áƒ-ó ã€‚=\u0338-🤖; 箃áƒ-ó .≠-🤖; [P1, V6]; xn----11g3013fy8x5m.xn----tfot873s; ; ; # 箃áƒ-.≠-🤖
-箃ⴡ-ó ã€‚=\u0338-🤖; 箃ⴡ-ó .≠-🤖; [P1, V6]; xn----4wsr321ay823p.xn----tfot873s; ; ; # 箃ⴡ-.≠-🤖
-箃ⴡ-ó ã€‚≠-🤖; 箃ⴡ-ó .≠-🤖; [P1, V6]; xn----4wsr321ay823p.xn----tfot873s; ; ; # 箃ⴡ-.≠-🤖
+箃áƒ-ó ï½¡â‰ -🤖; 箃áƒ-ó .≠-🤖; [V6]; xn----11g3013fy8x5m.xn----tfot873s; ; ; # 箃áƒ-.≠-🤖
+箃áƒ-ó ï½¡=\u0338-🤖; 箃áƒ-ó .≠-🤖; [V6]; xn----11g3013fy8x5m.xn----tfot873s; ; ; # 箃áƒ-.≠-🤖
+箃áƒ-ó ã€‚≠-🤖; 箃áƒ-ó .≠-🤖; [V6]; xn----11g3013fy8x5m.xn----tfot873s; ; ; # 箃áƒ-.≠-🤖
+箃áƒ-ó ã€‚=\u0338-🤖; 箃áƒ-ó .≠-🤖; [V6]; xn----11g3013fy8x5m.xn----tfot873s; ; ; # 箃áƒ-.≠-🤖
+箃ⴡ-ó ã€‚=\u0338-🤖; 箃ⴡ-ó .≠-🤖; [V6]; xn----4wsr321ay823p.xn----tfot873s; ; ; # 箃ⴡ-.≠-🤖
+箃ⴡ-ó ã€‚≠-🤖; 箃ⴡ-ó .≠-🤖; [V6]; xn----4wsr321ay823p.xn----tfot873s; ; ; # 箃ⴡ-.≠-🤖
xn----4wsr321ay823p.xn----tfot873s; 箃ⴡ-ó .≠-🤖; [V6]; xn----4wsr321ay823p.xn----tfot873s; ; ; # 箃ⴡ-.≠-🤖
xn----11g3013fy8x5m.xn----tfot873s; 箃áƒ-ó .≠-🤖; [V6]; xn----11g3013fy8x5m.xn----tfot873s; ; ; # 箃áƒ-.≠-🤖
-箃ⴡ-ó ï½¡=\u0338-🤖; 箃ⴡ-ó .≠-🤖; [P1, V6]; xn----4wsr321ay823p.xn----tfot873s; ; ; # 箃ⴡ-.≠-🤖
-箃ⴡ-ó ï½¡â‰ -🤖; 箃ⴡ-ó .≠-🤖; [P1, V6]; xn----4wsr321ay823p.xn----tfot873s; ; ; # 箃ⴡ-.≠-🤖
+箃ⴡ-ó ï½¡=\u0338-🤖; 箃ⴡ-ó .≠-🤖; [V6]; xn----4wsr321ay823p.xn----tfot873s; ; ; # 箃ⴡ-.≠-🤖
+箃ⴡ-ó ï½¡â‰ -🤖; 箃ⴡ-ó .≠-🤖; [V6]; xn----4wsr321ay823p.xn----tfot873s; ; ; # 箃ⴡ-.≠-🤖
\u07E5.\u06B5; ; ; xn--dtb.xn--okb; ; ; # ߥ.ڵ
xn--dtb.xn--okb; \u07E5.\u06B5; ; xn--dtb.xn--okb; ; ; # ߥ.ڵ
\u200C\u200D.𞤿; ; [B1, C1, C2]; xn--0ugc.xn--3e6h; ; .xn--3e6h; [A4_2] # .𞤿
@@ -3021,27 +3033,27 @@ xn--3e6h; 𞤿; ; xn--3e6h; ; ; # 𞤿
🜑ð¹§\u0639.σð‘蜹; ; [B1]; xn--4gb3736kk4zf.xn--4xa2248dy27d; ; ; # 🜑ð¹§Ø¹.σð‘蜹
xn--4gb3736kk4zf.xn--4xa2248dy27d; 🜑ð¹§\u0639.σð‘蜹; [B1]; xn--4gb3736kk4zf.xn--4xa2248dy27d; ; ; # 🜑ð¹§Ø¹.σð‘蜹
xn--4gb3736kk4zf.xn--3xa4248dy27d; 🜑ð¹§\u0639.Ï‚ð‘蜹; [B1]; xn--4gb3736kk4zf.xn--3xa4248dy27d; ; ; # 🜑ð¹§Ø¹.Ï‚ð‘蜹
-ò« ã‚¹ô†Ÿ¤\u0669.󚃟; ò« ã‚¹ô†Ÿ¤\u0669.󚃟; [B5, B6, P1, V6]; xn--iib777sp230oo708a.xn--7824e; ; ; # ス٩.
-ò« ã‚¹ô†Ÿ¤\u0669.󚃟; ; [B5, B6, P1, V6]; xn--iib777sp230oo708a.xn--7824e; ; ; # ス٩.
+ò« ã‚¹ô†Ÿ¤\u0669.󚃟; ò« ã‚¹ô†Ÿ¤\u0669.󚃟; [B5, B6, V6]; xn--iib777sp230oo708a.xn--7824e; ; ; # ス٩.
+ò« ã‚¹ô†Ÿ¤\u0669.󚃟; ; [B5, B6, V6]; xn--iib777sp230oo708a.xn--7824e; ; ; # ス٩.
xn--iib777sp230oo708a.xn--7824e; ò« ã‚¹ô†Ÿ¤\u0669.󚃟; [B5, B6, V6]; xn--iib777sp230oo708a.xn--7824e; ; ; # ス٩.
-ðª£ò•¡ï¼Ž\u059A?\u06C2; ðª£ò•¡.\u059A?\u06C2; [B1, P1, V5, V6]; xn--8c3hu7971a.xn--?-wec30g; ; ; # ðª£.Öš?Û‚
-ðª£ò•¡ï¼Ž\u059A?\u06C1\u0654; ðª£ò•¡.\u059A?\u06C2; [B1, P1, V5, V6]; xn--8c3hu7971a.xn--?-wec30g; ; ; # ðª£.Öš?Û‚
-ðª£ò•¡.\u059A?\u06C2; ; [B1, P1, V5, V6]; xn--8c3hu7971a.xn--?-wec30g; ; ; # ðª£.Öš?Û‚
-ðª£ò•¡.\u059A?\u06C1\u0654; ðª£ò•¡.\u059A?\u06C2; [B1, P1, V5, V6]; xn--8c3hu7971a.xn--?-wec30g; ; ; # ðª£.Öš?Û‚
-xn--8c3hu7971a.xn--?-wec30g; ðª£ò•¡.\u059A?\u06C2; [B1, P1, V5, V6]; xn--8c3hu7971a.xn--?-wec30g; ; ; # ðª£.Öš?Û‚
-xn--8c3hu7971a.\u059A?\u06C2; ðª£ò•¡.\u059A?\u06C2; [B1, P1, V5, V6]; xn--8c3hu7971a.xn--?-wec30g; ; ; # ðª£.Öš?Û‚
-xn--8c3hu7971a.\u059A?\u06C1\u0654; ðª£ò•¡.\u059A?\u06C2; [B1, P1, V5, V6]; xn--8c3hu7971a.xn--?-wec30g; ; ; # ðª£.Öš?Û‚
-XN--8C3HU7971A.\u059A?\u06C1\u0654; ðª£ò•¡.\u059A?\u06C2; [B1, P1, V5, V6]; xn--8c3hu7971a.xn--?-wec30g; ; ; # ðª£.Öš?Û‚
-XN--8C3HU7971A.\u059A?\u06C2; ðª£ò•¡.\u059A?\u06C2; [B1, P1, V5, V6]; xn--8c3hu7971a.xn--?-wec30g; ; ; # ðª£.Öš?Û‚
-Xn--8c3hu7971a.\u059A?\u06C2; ðª£ò•¡.\u059A?\u06C2; [B1, P1, V5, V6]; xn--8c3hu7971a.xn--?-wec30g; ; ; # ðª£.Öš?Û‚
-Xn--8c3hu7971a.\u059A?\u06C1\u0654; ðª£ò•¡.\u059A?\u06C2; [B1, P1, V5, V6]; xn--8c3hu7971a.xn--?-wec30g; ; ; # ðª£.Öš?Û‚
-\u0660򪓵\u200C。\u0757; \u0660򪓵\u200C.\u0757; [B1, C1, P1, V6]; xn--8hb852ke991q.xn--bpb; ; xn--8hb82030l.xn--bpb; [B1, P1, V6] # ٠.ݗ
+ðª£ò•¡ï¼Ž\u059A?\u06C2; ðª£ò•¡.\u059A?\u06C2; [B1, V5, V6]; xn--8c3hu7971a.xn--?-wec30g; ; ; # ðª£.Öš?Û‚
+ðª£ò•¡ï¼Ž\u059A?\u06C1\u0654; ðª£ò•¡.\u059A?\u06C2; [B1, V5, V6]; xn--8c3hu7971a.xn--?-wec30g; ; ; # ðª£.Öš?Û‚
+ðª£ò•¡.\u059A?\u06C2; ; [B1, V5, V6]; xn--8c3hu7971a.xn--?-wec30g; ; ; # ðª£.Öš?Û‚
+ðª£ò•¡.\u059A?\u06C1\u0654; ðª£ò•¡.\u059A?\u06C2; [B1, V5, V6]; xn--8c3hu7971a.xn--?-wec30g; ; ; # ðª£.Öš?Û‚
+xn--8c3hu7971a.xn--?-wec30g; ðª£ò•¡.\u059A?\u06C2; [B1, V5, V6]; xn--8c3hu7971a.xn--?-wec30g; ; ; # ðª£.Öš?Û‚
+xn--8c3hu7971a.\u059A?\u06C2; ðª£ò•¡.\u059A?\u06C2; [B1, V5, V6]; xn--8c3hu7971a.xn--?-wec30g; ; ; # ðª£.Öš?Û‚
+xn--8c3hu7971a.\u059A?\u06C1\u0654; ðª£ò•¡.\u059A?\u06C2; [B1, V5, V6]; xn--8c3hu7971a.xn--?-wec30g; ; ; # ðª£.Öš?Û‚
+XN--8C3HU7971A.\u059A?\u06C1\u0654; ðª£ò•¡.\u059A?\u06C2; [B1, V5, V6]; xn--8c3hu7971a.xn--?-wec30g; ; ; # ðª£.Öš?Û‚
+XN--8C3HU7971A.\u059A?\u06C2; ðª£ò•¡.\u059A?\u06C2; [B1, V5, V6]; xn--8c3hu7971a.xn--?-wec30g; ; ; # ðª£.Öš?Û‚
+Xn--8c3hu7971a.\u059A?\u06C2; ðª£ò•¡.\u059A?\u06C2; [B1, V5, V6]; xn--8c3hu7971a.xn--?-wec30g; ; ; # ðª£.Öš?Û‚
+Xn--8c3hu7971a.\u059A?\u06C1\u0654; ðª£ò•¡.\u059A?\u06C2; [B1, V5, V6]; xn--8c3hu7971a.xn--?-wec30g; ; ; # ðª£.Öš?Û‚
+\u0660򪓵\u200C。\u0757; \u0660򪓵\u200C.\u0757; [B1, C1, V6]; xn--8hb852ke991q.xn--bpb; ; xn--8hb82030l.xn--bpb; [B1, V6] # ٠.ݗ
xn--8hb82030l.xn--bpb; \u0660򪓵.\u0757; [B1, V6]; xn--8hb82030l.xn--bpb; ; ; # ٠.ݗ
xn--8hb852ke991q.xn--bpb; \u0660򪓵\u200C.\u0757; [B1, C1, V6]; xn--8hb852ke991q.xn--bpb; ; ; # ٠.ݗ
\u103A\u200D\u200C。-\u200C; \u103A\u200D\u200C.-\u200C; [C1, V3, V5]; xn--bkd412fca.xn----sgn; ; xn--bkd.-; [V3, V5] # ်.-
xn--bkd.-; \u103A.-; [V3, V5]; xn--bkd.-; ; ; # ်.-
xn--bkd412fca.xn----sgn; \u103A\u200D\u200C.-\u200C; [C1, V3, V5]; xn--bkd412fca.xn----sgn; ; ; # ်.-
-︒。\u1B44ᡉ; ︒.\u1B44ᡉ; [P1, V5, V6]; xn--y86c.xn--87e93m; ; ; # ︒.᭄ᡉ
+︒。\u1B44ᡉ; ︒.\u1B44ᡉ; [V5, V6]; xn--y86c.xn--87e93m; ; ; # ︒.᭄ᡉ
。。\u1B44ᡉ; ..\u1B44ᡉ; [V5, X4_2]; ..xn--87e93m; [V5, A4_2]; ; # ..᭄ᡉ
..xn--87e93m; ..\u1B44ᡉ; [V5, X4_2]; ..xn--87e93m; [V5, A4_2]; ; # ..᭄ᡉ
xn--y86c.xn--87e93m; ︒.\u1B44ᡉ; [V5, V6]; xn--y86c.xn--87e93m; ; ; # ︒.᭄ᡉ
@@ -3055,133 +3067,133 @@ xn--zca724a.xn--2-b5c641gfmf; \u0758ß.ጫᢊ\u07682; [B2, B3, B5]; xn--zca724a.
\u0758ss。ጫᢊ\u0768ðŸ; \u0758ss.ጫᢊ\u07682; [B2, B3, B5]; xn--ss-gke.xn--2-b5c641gfmf; ; ; # ݘss.ጫᢊݨ2
\u0758Ss。ጫᢊ\u07682; \u0758ss.ጫᢊ\u07682; [B2, B3, B5]; xn--ss-gke.xn--2-b5c641gfmf; ; ; # ݘss.ጫᢊݨ2
\u0758Ss。ጫᢊ\u0768ðŸ; \u0758ss.ጫᢊ\u07682; [B2, B3, B5]; xn--ss-gke.xn--2-b5c641gfmf; ; ; # ݘss.ጫᢊݨ2
-\u07C3𞶇ᚲ.\u0902\u0353ðŸš\u09CD; \u07C3𞶇ᚲ.\u0902\u03532\u09CD; [B1, B2, B3, P1, V5, V6]; xn--esb067enh07a.xn--2-lgb874bjxa; ; ; # ߃ᚲ.ं͓2à§
-\u07C3𞶇ᚲ.\u0902\u03532\u09CD; ; [B1, B2, B3, P1, V5, V6]; xn--esb067enh07a.xn--2-lgb874bjxa; ; ; # ߃ᚲ.ं͓2à§
+\u07C3𞶇ᚲ.\u0902\u0353ðŸš\u09CD; \u07C3𞶇ᚲ.\u0902\u03532\u09CD; [B1, B2, B3, V5, V6]; xn--esb067enh07a.xn--2-lgb874bjxa; ; ; # ߃ᚲ.ं͓2à§
+\u07C3𞶇ᚲ.\u0902\u03532\u09CD; ; [B1, B2, B3, V5, V6]; xn--esb067enh07a.xn--2-lgb874bjxa; ; ; # ߃ᚲ.ं͓2à§
xn--esb067enh07a.xn--2-lgb874bjxa; \u07C3𞶇ᚲ.\u0902\u03532\u09CD; [B1, B2, B3, V5, V6]; xn--esb067enh07a.xn--2-lgb874bjxa; ; ; # ߃ᚲ.ं͓2à§
--\u1BAB︒\u200D.񒶈񥹓; ; [C2, P1, V3, V6]; xn----qmlv7tw180a.xn--x50zy803a; ; xn----qml1407i.xn--x50zy803a; [P1, V3, V6] # -᮫︒.
--\u1BAB。\u200D.񒶈񥹓; -\u1BAB.\u200D.񒶈񥹓; [C2, P1, V3, V6]; xn----qml.xn--1ug.xn--x50zy803a; ; xn----qml..xn--x50zy803a; [P1, V3, V6, A4_2] # -᮫..
+-\u1BAB︒\u200D.񒶈񥹓; ; [C2, V3, V6]; xn----qmlv7tw180a.xn--x50zy803a; ; xn----qml1407i.xn--x50zy803a; [V3, V6] # -᮫︒.
+-\u1BAB。\u200D.񒶈񥹓; -\u1BAB.\u200D.񒶈񥹓; [C2, V3, V6]; xn----qml.xn--1ug.xn--x50zy803a; ; xn----qml..xn--x50zy803a; [V3, V6, A4_2] # -᮫..
xn----qml..xn--x50zy803a; -\u1BAB..񒶈񥹓; [V3, V6, X4_2]; xn----qml..xn--x50zy803a; [V3, V6, A4_2]; ; # -᮫..
xn----qml.xn--1ug.xn--x50zy803a; -\u1BAB.\u200D.񒶈񥹓; [C2, V3, V6]; xn----qml.xn--1ug.xn--x50zy803a; ; ; # -᮫..
xn----qml1407i.xn--x50zy803a; -\u1BAB︒.񒶈񥹓; [V3, V6]; xn----qml1407i.xn--x50zy803a; ; ; # -᮫︒.
xn----qmlv7tw180a.xn--x50zy803a; -\u1BAB︒\u200D.񒶈񥹓; [C2, V3, V6]; xn----qmlv7tw180a.xn--x50zy803a; ; ; # -᮫︒.
-󠦮.≯𞀆; ; [P1, V6]; xn--t546e.xn--hdh5166o; ; ; # .≯𞀆
-󠦮.>\u0338𞀆; 󠦮.≯𞀆; [P1, V6]; xn--t546e.xn--hdh5166o; ; ; # .≯𞀆
+󠦮.≯𞀆; ; [V6]; xn--t546e.xn--hdh5166o; ; ; # .≯𞀆
+󠦮.>\u0338𞀆; 󠦮.≯𞀆; [V6]; xn--t546e.xn--hdh5166o; ; ; # .≯𞀆
xn--t546e.xn--hdh5166o; 󠦮.≯𞀆; [V6]; xn--t546e.xn--hdh5166o; ; ; # .≯𞀆
--ð‘„³ó Š—ð¹©ã€‚ðž®±; -ð‘„³ó Š—ð¹©.ðž®±; [B1, P1, V3, V6]; xn----p26i72em2894c.xn--zw6h; ; ; # -ð‘„³ð¹©.
+-ð‘„³ó Š—ð¹©ã€‚ðž®±; -ð‘„³ó Š—ð¹©.ðž®±; [B1, V3, V6]; xn----p26i72em2894c.xn--zw6h; ; ; # -ð‘„³ð¹©.
xn----p26i72em2894c.xn--zw6h; -ð‘„³ó Š—ð¹©.ðž®±; [B1, V3, V6]; xn----p26i72em2894c.xn--zw6h; ; ; # -ð‘„³ð¹©.
-\u06B9.ᡳ\u115F; \u06B9.ᡳ\u115F; [P1, V6]; xn--skb.xn--osd737a; ; ; # ڹ.ᡳ
-\u06B9.ᡳ\u115F; ; [P1, V6]; xn--skb.xn--osd737a; ; ; # ڹ.ᡳ
+\u06B9.ᡳ\u115F; \u06B9.ᡳ\u115F; [V6]; xn--skb.xn--osd737a; ; ; # ڹ.ᡳ
+\u06B9.ᡳ\u115F; ; [V6]; xn--skb.xn--osd737a; ; ; # ڹ.ᡳ
xn--skb.xn--osd737a; \u06B9.ᡳ\u115F; [V6]; xn--skb.xn--osd737a; ; ; # ڹ.ᡳ
-㨛𘱎.︒ðŸ•\u0D01; 㨛𘱎.︒7\u0D01; [P1, V6]; xn--mbm8237g.xn--7-7hf1526p; ; ; # 㨛𘱎.︒7à´
+㨛𘱎.︒ðŸ•\u0D01; 㨛𘱎.︒7\u0D01; [V6]; xn--mbm8237g.xn--7-7hf1526p; ; ; # 㨛𘱎.︒7à´
㨛𘱎.。7\u0D01; 㨛𘱎..7\u0D01; [X4_2]; xn--mbm8237g..xn--7-7hf; [A4_2]; ; # 㨛𘱎..7à´
xn--mbm8237g..xn--7-7hf; 㨛𘱎..7\u0D01; [X4_2]; xn--mbm8237g..xn--7-7hf; [A4_2]; ; # 㨛𘱎..7à´
xn--mbm8237g.xn--7-7hf1526p; 㨛𘱎.︒7\u0D01; [V6]; xn--mbm8237g.xn--7-7hf1526p; ; ; # 㨛𘱎.︒7à´
-\u06DD𻱧-。ðž·\u2064𞤣≮; \u06DD𻱧-.ðž·ðž¤£â‰®; [B1, B3, P1, V3, V6]; xn----dxc06304e.xn--gdh5020pk5c; ; ; # -.𞤣≮
-\u06DD𻱧-。ðž·\u2064𞤣<\u0338; \u06DD𻱧-.ðž·ðž¤£â‰®; [B1, B3, P1, V3, V6]; xn----dxc06304e.xn--gdh5020pk5c; ; ; # -.𞤣≮
-\u06DD𻱧-。ðž·\u2064𞤣≮; \u06DD𻱧-.ðž·ðž¤£â‰®; [B1, B3, P1, V3, V6]; xn----dxc06304e.xn--gdh5020pk5c; ; ; # -.𞤣≮
-\u06DD𻱧-。ðž·\u2064𞤣<\u0338; \u06DD𻱧-.ðž·ðž¤£â‰®; [B1, B3, P1, V3, V6]; xn----dxc06304e.xn--gdh5020pk5c; ; ; # -.𞤣≮
-\u06DD𻱧-。ðž·\u2064ðž¤<\u0338; \u06DD𻱧-.ðž·ðž¤£â‰®; [B1, B3, P1, V3, V6]; xn----dxc06304e.xn--gdh5020pk5c; ; ; # -.𞤣≮
-\u06DD𻱧-。ðž·\u2064ðž¤â‰®; \u06DD𻱧-.ðž·ðž¤£â‰®; [B1, B3, P1, V3, V6]; xn----dxc06304e.xn--gdh5020pk5c; ; ; # -.𞤣≮
+\u06DD𻱧-。ðž·\u2064𞤣≮; \u06DD𻱧-.ðž·ðž¤£â‰®; [B1, B3, V3, V6]; xn----dxc06304e.xn--gdh5020pk5c; ; ; # -.𞤣≮
+\u06DD𻱧-。ðž·\u2064𞤣<\u0338; \u06DD𻱧-.ðž·ðž¤£â‰®; [B1, B3, V3, V6]; xn----dxc06304e.xn--gdh5020pk5c; ; ; # -.𞤣≮
+\u06DD𻱧-。ðž·\u2064𞤣≮; \u06DD𻱧-.ðž·ðž¤£â‰®; [B1, B3, V3, V6]; xn----dxc06304e.xn--gdh5020pk5c; ; ; # -.𞤣≮
+\u06DD𻱧-。ðž·\u2064𞤣<\u0338; \u06DD𻱧-.ðž·ðž¤£â‰®; [B1, B3, V3, V6]; xn----dxc06304e.xn--gdh5020pk5c; ; ; # -.𞤣≮
+\u06DD𻱧-。ðž·\u2064ðž¤<\u0338; \u06DD𻱧-.ðž·ðž¤£â‰®; [B1, B3, V3, V6]; xn----dxc06304e.xn--gdh5020pk5c; ; ; # -.𞤣≮
+\u06DD𻱧-。ðž·\u2064ðž¤â‰®; \u06DD𻱧-.ðž·ðž¤£â‰®; [B1, B3, V3, V6]; xn----dxc06304e.xn--gdh5020pk5c; ; ; # -.𞤣≮
xn----dxc06304e.xn--gdh5020pk5c; \u06DD𻱧-.ðž·ðž¤£â‰®; [B1, B3, V3, V6]; xn----dxc06304e.xn--gdh5020pk5c; ; ; # -.𞤣≮
-\u06DD𻱧-。ðž·\u2064ðž¤<\u0338; \u06DD𻱧-.ðž·ðž¤£â‰®; [B1, B3, P1, V3, V6]; xn----dxc06304e.xn--gdh5020pk5c; ; ; # -.𞤣≮
-\u06DD𻱧-。ðž·\u2064ðž¤â‰®; \u06DD𻱧-.ðž·ðž¤£â‰®; [B1, B3, P1, V3, V6]; xn----dxc06304e.xn--gdh5020pk5c; ; ; # -.𞤣≮
-ß\u200C\uAAF6ᢥ.⊶áƒá‚¶; ß\u200C\uAAF6ᢥ.⊶áƒá‚¶; [C1, P1, V6]; xn--zca682johfi89m.xn--undv409k; ; xn--ss-4epx629f.xn--undv409k; [P1, V6] # ß꫶ᢥ.⊶áƒá‚¶
-ß\u200C\uAAF6ᢥ.⊶áƒá‚¶; ; [C1, P1, V6]; xn--zca682johfi89m.xn--undv409k; ; xn--ss-4epx629f.xn--undv409k; [P1, V6] # ß꫶ᢥ.⊶áƒá‚¶
+\u06DD𻱧-。ðž·\u2064ðž¤<\u0338; \u06DD𻱧-.ðž·ðž¤£â‰®; [B1, B3, V3, V6]; xn----dxc06304e.xn--gdh5020pk5c; ; ; # -.𞤣≮
+\u06DD𻱧-。ðž·\u2064ðž¤â‰®; \u06DD𻱧-.ðž·ðž¤£â‰®; [B1, B3, V3, V6]; xn----dxc06304e.xn--gdh5020pk5c; ; ; # -.𞤣≮
+ß\u200C\uAAF6ᢥ.⊶áƒá‚¶; ß\u200C\uAAF6ᢥ.⊶áƒá‚¶; [C1, V6]; xn--zca682johfi89m.xn--undv409k; ; xn--ss-4epx629f.xn--undv409k; [V6] # ß꫶ᢥ.⊶áƒá‚¶
+ß\u200C\uAAF6ᢥ.⊶áƒá‚¶; ; [C1, V6]; xn--zca682johfi89m.xn--undv409k; ; xn--ss-4epx629f.xn--undv409k; [V6] # ß꫶ᢥ.⊶áƒá‚¶
ß\u200C\uAAF6ᢥ.⊶ⴡⴖ; ; [C1]; xn--zca682johfi89m.xn--ifh802b6a; ; xn--ss-4epx629f.xn--ifh802b6a; [] # ß꫶ᢥ.⊶ⴡⴖ
-SS\u200C\uAAF6ᢥ.⊶áƒá‚¶; ss\u200C\uAAF6ᢥ.⊶áƒá‚¶; [C1, P1, V6]; xn--ss-4ep585bkm5p.xn--undv409k; ; xn--ss-4epx629f.xn--undv409k; [P1, V6] # ss꫶ᢥ.⊶áƒá‚¶
+SS\u200C\uAAF6ᢥ.⊶áƒá‚¶; ss\u200C\uAAF6ᢥ.⊶áƒá‚¶; [C1, V6]; xn--ss-4ep585bkm5p.xn--undv409k; ; xn--ss-4epx629f.xn--undv409k; [V6] # ss꫶ᢥ.⊶áƒá‚¶
ss\u200C\uAAF6ᢥ.⊶ⴡⴖ; ; [C1]; xn--ss-4ep585bkm5p.xn--ifh802b6a; ; xn--ss-4epx629f.xn--ifh802b6a; [] # ss꫶ᢥ.⊶ⴡⴖ
-Ss\u200C\uAAF6ᢥ.⊶áƒâ´–; ss\u200C\uAAF6ᢥ.⊶áƒâ´–; [C1, P1, V6]; xn--ss-4ep585bkm5p.xn--5nd703gyrh; ; xn--ss-4epx629f.xn--5nd703gyrh; [P1, V6] # ss꫶ᢥ.⊶áƒâ´–
+Ss\u200C\uAAF6ᢥ.⊶áƒâ´–; ss\u200C\uAAF6ᢥ.⊶áƒâ´–; [C1, V6]; xn--ss-4ep585bkm5p.xn--5nd703gyrh; ; xn--ss-4epx629f.xn--5nd703gyrh; [V6] # ss꫶ᢥ.⊶áƒâ´–
xn--ss-4epx629f.xn--5nd703gyrh; ss\uAAF6ᢥ.⊶áƒâ´–; [V6]; xn--ss-4epx629f.xn--5nd703gyrh; ; ; # ss꫶ᢥ.⊶áƒâ´–
xn--ss-4ep585bkm5p.xn--5nd703gyrh; ss\u200C\uAAF6ᢥ.⊶áƒâ´–; [C1, V6]; xn--ss-4ep585bkm5p.xn--5nd703gyrh; ; ; # ss꫶ᢥ.⊶áƒâ´–
xn--ss-4epx629f.xn--ifh802b6a; ss\uAAF6ᢥ.⊶ⴡⴖ; ; xn--ss-4epx629f.xn--ifh802b6a; ; ; # ss꫶ᢥ.⊶ⴡⴖ
ss\uAAF6ᢥ.⊶ⴡⴖ; ; ; xn--ss-4epx629f.xn--ifh802b6a; ; ; # ss꫶ᢥ.⊶ⴡⴖ
-SS\uAAF6ᢥ.⊶áƒá‚¶; ss\uAAF6ᢥ.⊶áƒá‚¶; [P1, V6]; xn--ss-4epx629f.xn--undv409k; ; ; # ss꫶ᢥ.⊶áƒá‚¶
-Ss\uAAF6ᢥ.⊶áƒâ´–; ss\uAAF6ᢥ.⊶áƒâ´–; [P1, V6]; xn--ss-4epx629f.xn--5nd703gyrh; ; ; # ss꫶ᢥ.⊶áƒâ´–
+SS\uAAF6ᢥ.⊶áƒá‚¶; ss\uAAF6ᢥ.⊶áƒá‚¶; [V6]; xn--ss-4epx629f.xn--undv409k; ; ; # ss꫶ᢥ.⊶áƒá‚¶
+Ss\uAAF6ᢥ.⊶áƒâ´–; ss\uAAF6ᢥ.⊶áƒâ´–; [V6]; xn--ss-4epx629f.xn--5nd703gyrh; ; ; # ss꫶ᢥ.⊶áƒâ´–
xn--ss-4epx629f.xn--undv409k; ss\uAAF6ᢥ.⊶áƒá‚¶; [V6]; xn--ss-4epx629f.xn--undv409k; ; ; # ss꫶ᢥ.⊶áƒá‚¶
xn--ss-4ep585bkm5p.xn--ifh802b6a; ss\u200C\uAAF6ᢥ.⊶ⴡⴖ; [C1]; xn--ss-4ep585bkm5p.xn--ifh802b6a; ; ; # ss꫶ᢥ.⊶ⴡⴖ
xn--ss-4ep585bkm5p.xn--undv409k; ss\u200C\uAAF6ᢥ.⊶áƒá‚¶; [C1, V6]; xn--ss-4ep585bkm5p.xn--undv409k; ; ; # ss꫶ᢥ.⊶áƒá‚¶
xn--zca682johfi89m.xn--ifh802b6a; ß\u200C\uAAF6ᢥ.⊶ⴡⴖ; [C1]; xn--zca682johfi89m.xn--ifh802b6a; ; ; # ß꫶ᢥ.⊶ⴡⴖ
xn--zca682johfi89m.xn--undv409k; ß\u200C\uAAF6ᢥ.⊶áƒá‚¶; [C1, V6]; xn--zca682johfi89m.xn--undv409k; ; ; # ß꫶ᢥ.⊶áƒá‚¶
ß\u200C\uAAF6ᢥ.⊶ⴡⴖ; ß\u200C\uAAF6ᢥ.⊶ⴡⴖ; [C1]; xn--zca682johfi89m.xn--ifh802b6a; ; xn--ss-4epx629f.xn--ifh802b6a; [] # ß꫶ᢥ.⊶ⴡⴖ
-SS\u200C\uAAF6ᢥ.⊶áƒá‚¶; ss\u200C\uAAF6ᢥ.⊶áƒá‚¶; [C1, P1, V6]; xn--ss-4ep585bkm5p.xn--undv409k; ; xn--ss-4epx629f.xn--undv409k; [P1, V6] # ss꫶ᢥ.⊶áƒá‚¶
+SS\u200C\uAAF6ᢥ.⊶áƒá‚¶; ss\u200C\uAAF6ᢥ.⊶áƒá‚¶; [C1, V6]; xn--ss-4ep585bkm5p.xn--undv409k; ; xn--ss-4epx629f.xn--undv409k; [V6] # ss꫶ᢥ.⊶áƒá‚¶
ss\u200C\uAAF6ᢥ.⊶ⴡⴖ; ss\u200C\uAAF6ᢥ.⊶ⴡⴖ; [C1]; xn--ss-4ep585bkm5p.xn--ifh802b6a; ; xn--ss-4epx629f.xn--ifh802b6a; [] # ss꫶ᢥ.⊶ⴡⴖ
-Ss\u200C\uAAF6ᢥ.⊶áƒâ´–; ss\u200C\uAAF6ᢥ.⊶áƒâ´–; [C1, P1, V6]; xn--ss-4ep585bkm5p.xn--5nd703gyrh; ; xn--ss-4epx629f.xn--5nd703gyrh; [P1, V6] # ss꫶ᢥ.⊶áƒâ´–
-\u200D。ςó ‰; \u200D.Ï‚ó ‰; [C2, P1, V6]; xn--1ug.xn--3xa44344p; ; .xn--4xa24344p; [P1, V6, A4_2] # .Ï‚
-\u200D。Σó ‰; \u200D.σó ‰; [C2, P1, V6]; xn--1ug.xn--4xa24344p; ; .xn--4xa24344p; [P1, V6, A4_2] # .σ
-\u200D。σó ‰; \u200D.σó ‰; [C2, P1, V6]; xn--1ug.xn--4xa24344p; ; .xn--4xa24344p; [P1, V6, A4_2] # .σ
+Ss\u200C\uAAF6ᢥ.⊶áƒâ´–; ss\u200C\uAAF6ᢥ.⊶áƒâ´–; [C1, V6]; xn--ss-4ep585bkm5p.xn--5nd703gyrh; ; xn--ss-4epx629f.xn--5nd703gyrh; [V6] # ss꫶ᢥ.⊶áƒâ´–
+\u200D。ςó ‰; \u200D.Ï‚ó ‰; [C2, V6]; xn--1ug.xn--3xa44344p; ; .xn--4xa24344p; [V6, A4_2] # .Ï‚
+\u200D。Σó ‰; \u200D.σó ‰; [C2, V6]; xn--1ug.xn--4xa24344p; ; .xn--4xa24344p; [V6, A4_2] # .σ
+\u200D。σó ‰; \u200D.σó ‰; [C2, V6]; xn--1ug.xn--4xa24344p; ; .xn--4xa24344p; [V6, A4_2] # .σ
.xn--4xa24344p; .σó ‰; [V6, X4_2]; .xn--4xa24344p; [V6, A4_2]; ; # .σ
xn--1ug.xn--4xa24344p; \u200D.σó ‰; [C2, V6]; xn--1ug.xn--4xa24344p; ; ; # .σ
xn--1ug.xn--3xa44344p; \u200D.Ï‚ó ‰; [C2, V6]; xn--1ug.xn--3xa44344p; ; ; # .Ï‚
-𞵑ß.\u0751\u200D𞤛-; 𞵑ß.\u0751\u200D𞤽-; [B2, B3, C2, P1, V3, V6]; xn--zca5423w.xn----z3c011q9513b; ; xn--ss-2722a.xn----z3c03218a; [B2, B3, P1, V3, V6] # ß.ݑ𞤽-
-𞵑ß.\u0751\u200D𞤽-; ; [B2, B3, C2, P1, V3, V6]; xn--zca5423w.xn----z3c011q9513b; ; xn--ss-2722a.xn----z3c03218a; [B2, B3, P1, V3, V6] # ß.ݑ𞤽-
-𞵑SS.\u0751\u200D𞤛-; 𞵑ss.\u0751\u200D𞤽-; [B2, B3, C2, P1, V3, V6]; xn--ss-2722a.xn----z3c011q9513b; ; xn--ss-2722a.xn----z3c03218a; [B2, B3, P1, V3, V6] # ss.ݑ𞤽-
-𞵑ss.\u0751\u200D𞤽-; ; [B2, B3, C2, P1, V3, V6]; xn--ss-2722a.xn----z3c011q9513b; ; xn--ss-2722a.xn----z3c03218a; [B2, B3, P1, V3, V6] # ss.ݑ𞤽-
-𞵑Ss.\u0751\u200D𞤽-; 𞵑ss.\u0751\u200D𞤽-; [B2, B3, C2, P1, V3, V6]; xn--ss-2722a.xn----z3c011q9513b; ; xn--ss-2722a.xn----z3c03218a; [B2, B3, P1, V3, V6] # ss.ݑ𞤽-
+𞵑ß.\u0751\u200D𞤛-; 𞵑ß.\u0751\u200D𞤽-; [B2, B3, C2, V3, V6]; xn--zca5423w.xn----z3c011q9513b; ; xn--ss-2722a.xn----z3c03218a; [B2, B3, V3, V6] # ß.ݑ𞤽-
+𞵑ß.\u0751\u200D𞤽-; ; [B2, B3, C2, V3, V6]; xn--zca5423w.xn----z3c011q9513b; ; xn--ss-2722a.xn----z3c03218a; [B2, B3, V3, V6] # ß.ݑ𞤽-
+𞵑SS.\u0751\u200D𞤛-; 𞵑ss.\u0751\u200D𞤽-; [B2, B3, C2, V3, V6]; xn--ss-2722a.xn----z3c011q9513b; ; xn--ss-2722a.xn----z3c03218a; [B2, B3, V3, V6] # ss.ݑ𞤽-
+𞵑ss.\u0751\u200D𞤽-; ; [B2, B3, C2, V3, V6]; xn--ss-2722a.xn----z3c011q9513b; ; xn--ss-2722a.xn----z3c03218a; [B2, B3, V3, V6] # ss.ݑ𞤽-
+𞵑Ss.\u0751\u200D𞤽-; 𞵑ss.\u0751\u200D𞤽-; [B2, B3, C2, V3, V6]; xn--ss-2722a.xn----z3c011q9513b; ; xn--ss-2722a.xn----z3c03218a; [B2, B3, V3, V6] # ss.ݑ𞤽-
xn--ss-2722a.xn----z3c03218a; 𞵑ss.\u0751𞤽-; [B2, B3, V3, V6]; xn--ss-2722a.xn----z3c03218a; ; ; # ss.ݑ𞤽-
xn--ss-2722a.xn----z3c011q9513b; 𞵑ss.\u0751\u200D𞤽-; [B2, B3, C2, V3, V6]; xn--ss-2722a.xn----z3c011q9513b; ; ; # ss.ݑ𞤽-
xn--zca5423w.xn----z3c011q9513b; 𞵑ß.\u0751\u200D𞤽-; [B2, B3, C2, V3, V6]; xn--zca5423w.xn----z3c011q9513b; ; ; # ß.ݑ𞤽-
-𞵑ss.\u0751\u200D𞤛-; 𞵑ss.\u0751\u200D𞤽-; [B2, B3, C2, P1, V3, V6]; xn--ss-2722a.xn----z3c011q9513b; ; xn--ss-2722a.xn----z3c03218a; [B2, B3, P1, V3, V6] # ss.ݑ𞤽-
-𞵑Ss.\u0751\u200D𞤛-; 𞵑ss.\u0751\u200D𞤽-; [B2, B3, C2, P1, V3, V6]; xn--ss-2722a.xn----z3c011q9513b; ; xn--ss-2722a.xn----z3c03218a; [B2, B3, P1, V3, V6] # ss.ݑ𞤽-
-𑘽\u200D𞤧.ð¹§ó¡¦ª-; 𑘽\u200D𞤧.ð¹§ó¡¦ª-; [B1, C2, P1, V3, V5, V6]; xn--1ugz808gdimf.xn----k26iq1483f; ; xn--qb2ds317a.xn----k26iq1483f; [B1, P1, V3, V5, V6] # 𑘽𞤧.ð¹§-
-𑘽\u200D𞤧.ð¹§ó¡¦ª-; ; [B1, C2, P1, V3, V5, V6]; xn--1ugz808gdimf.xn----k26iq1483f; ; xn--qb2ds317a.xn----k26iq1483f; [B1, P1, V3, V5, V6] # 𑘽𞤧.ð¹§-
-𑘽\u200D𞤅.ð¹§ó¡¦ª-; 𑘽\u200D𞤧.ð¹§ó¡¦ª-; [B1, C2, P1, V3, V5, V6]; xn--1ugz808gdimf.xn----k26iq1483f; ; xn--qb2ds317a.xn----k26iq1483f; [B1, P1, V3, V5, V6] # 𑘽𞤧.ð¹§-
+𞵑ss.\u0751\u200D𞤛-; 𞵑ss.\u0751\u200D𞤽-; [B2, B3, C2, V3, V6]; xn--ss-2722a.xn----z3c011q9513b; ; xn--ss-2722a.xn----z3c03218a; [B2, B3, V3, V6] # ss.ݑ𞤽-
+𞵑Ss.\u0751\u200D𞤛-; 𞵑ss.\u0751\u200D𞤽-; [B2, B3, C2, V3, V6]; xn--ss-2722a.xn----z3c011q9513b; ; xn--ss-2722a.xn----z3c03218a; [B2, B3, V3, V6] # ss.ݑ𞤽-
+𑘽\u200D𞤧.ð¹§ó¡¦ª-; 𑘽\u200D𞤧.ð¹§ó¡¦ª-; [B1, C2, V3, V5, V6]; xn--1ugz808gdimf.xn----k26iq1483f; ; xn--qb2ds317a.xn----k26iq1483f; [B1, V3, V5, V6] # 𑘽𞤧.ð¹§-
+𑘽\u200D𞤧.ð¹§ó¡¦ª-; ; [B1, C2, V3, V5, V6]; xn--1ugz808gdimf.xn----k26iq1483f; ; xn--qb2ds317a.xn----k26iq1483f; [B1, V3, V5, V6] # 𑘽𞤧.ð¹§-
+𑘽\u200D𞤅.ð¹§ó¡¦ª-; 𑘽\u200D𞤧.ð¹§ó¡¦ª-; [B1, C2, V3, V5, V6]; xn--1ugz808gdimf.xn----k26iq1483f; ; xn--qb2ds317a.xn----k26iq1483f; [B1, V3, V5, V6] # 𑘽𞤧.ð¹§-
xn--qb2ds317a.xn----k26iq1483f; 𑘽𞤧.ð¹§ó¡¦ª-; [B1, V3, V5, V6]; xn--qb2ds317a.xn----k26iq1483f; ; ; # 𑘽𞤧.ð¹§-
xn--1ugz808gdimf.xn----k26iq1483f; 𑘽\u200D𞤧.ð¹§ó¡¦ª-; [B1, C2, V3, V5, V6]; xn--1ugz808gdimf.xn----k26iq1483f; ; ; # 𑘽𞤧.ð¹§-
-𑘽\u200D𞤅.ð¹§ó¡¦ª-; 𑘽\u200D𞤧.ð¹§ó¡¦ª-; [B1, C2, P1, V3, V5, V6]; xn--1ugz808gdimf.xn----k26iq1483f; ; xn--qb2ds317a.xn----k26iq1483f; [B1, P1, V3, V5, V6] # 𑘽𞤧.ð¹§-
-⒒򨘙򳳠𑓀.-󞡊; ; [P1, V3, V6]; xn--3shy698frsu9dt1me.xn----x310m; ; ; # ⒒𑓀.-
-11.򨘙򳳠𑓀.-󞡊; ; [P1, V3, V6]; 11.xn--uz1d59632bxujd.xn----x310m; ; ; # 11.𑓀.-
+𑘽\u200D𞤅.ð¹§ó¡¦ª-; 𑘽\u200D𞤧.ð¹§ó¡¦ª-; [B1, C2, V3, V5, V6]; xn--1ugz808gdimf.xn----k26iq1483f; ; xn--qb2ds317a.xn----k26iq1483f; [B1, V3, V5, V6] # 𑘽𞤧.ð¹§-
+⒒򨘙򳳠𑓀.-󞡊; ; [V3, V6]; xn--3shy698frsu9dt1me.xn----x310m; ; ; # ⒒𑓀.-
+11.򨘙򳳠𑓀.-󞡊; ; [V3, V6]; 11.xn--uz1d59632bxujd.xn----x310m; ; ; # 11.𑓀.-
11.xn--uz1d59632bxujd.xn----x310m; 11.򨘙򳳠𑓀.-󞡊; [V3, V6]; 11.xn--uz1d59632bxujd.xn----x310m; ; ; # 11.𑓀.-
xn--3shy698frsu9dt1me.xn----x310m; ⒒򨘙򳳠𑓀.-󞡊; [V3, V6]; xn--3shy698frsu9dt1me.xn----x310m; ; ; # ⒒𑓀.-
-。\u200D; -.\u200D; [C2, V3]; -.xn--1ug; ; -.; [V3] # -.
-。\u200D; -.\u200D; [C2, V3]; -.xn--1ug; ; -.; [V3] # -.
-.; ; [V3]; ; ; ; # -.
-.xn--1ug; -.\u200D; [C2, V3]; -.xn--1ug; ; ; # -.
-≮ᡬ.ς¹-?; ≮ᡬ.ς1-?; [P1, V6]; xn--88e732c.xn--1-?-lzc; ; xn--88e732c.xn--1-?-pzc; # ≮ᡬ.ς1-?
-<\u0338ᡬ.ς¹-?; ≮ᡬ.ς1-?; [P1, V6]; xn--88e732c.xn--1-?-lzc; ; xn--88e732c.xn--1-?-pzc; # ≮ᡬ.ς1-?
-≮ᡬ.ς1-?; ; [P1, V6]; xn--88e732c.xn--1-?-lzc; ; xn--88e732c.xn--1-?-pzc; # ≮ᡬ.ς1-?
-<\u0338ᡬ.ς1-?; ≮ᡬ.ς1-?; [P1, V6]; xn--88e732c.xn--1-?-lzc; ; xn--88e732c.xn--1-?-pzc; # ≮ᡬ.ς1-?
-<\u0338ᡬ.Σ1-?; ≮ᡬ.σ1-?; [P1, V6]; xn--88e732c.xn--1-?-pzc; ; ; # ≮ᡬ.σ1-?
-≮ᡬ.Σ1-?; ≮ᡬ.σ1-?; [P1, V6]; xn--88e732c.xn--1-?-pzc; ; ; # ≮ᡬ.σ1-?
-≮ᡬ.σ1-?; ; [P1, V6]; xn--88e732c.xn--1-?-pzc; ; ; # ≮ᡬ.σ1-?
-<\u0338ᡬ.σ1-?; ≮ᡬ.σ1-?; [P1, V6]; xn--88e732c.xn--1-?-pzc; ; ; # ≮ᡬ.σ1-?
-xn--88e732c.xn--1-?-pzc; ≮ᡬ.σ1-?; [P1, V6]; xn--88e732c.xn--1-?-pzc; ; ; # ≮ᡬ.σ1-?
-xn--88e732c.xn--1-?-lzc; ≮ᡬ.ς1-?; [P1, V6]; xn--88e732c.xn--1-?-lzc; ; ; # ≮ᡬ.ς1-?
-<\u0338ᡬ.Σ¹-?; ≮ᡬ.σ1-?; [P1, V6]; xn--88e732c.xn--1-?-pzc; ; ; # ≮ᡬ.σ1-?
-≮ᡬ.Σ¹-?; ≮ᡬ.σ1-?; [P1, V6]; xn--88e732c.xn--1-?-pzc; ; ; # ≮ᡬ.σ1-?
-≮ᡬ.σ¹-?; ≮ᡬ.σ1-?; [P1, V6]; xn--88e732c.xn--1-?-pzc; ; ; # ≮ᡬ.σ1-?
-<\u0338ᡬ.σ¹-?; ≮ᡬ.σ1-?; [P1, V6]; xn--88e732c.xn--1-?-pzc; ; ; # ≮ᡬ.σ1-?
-xn--88e732c.σ1-?; ≮ᡬ.σ1-?; [P1, V6]; xn--88e732c.xn--1-?-pzc; ; ; # ≮ᡬ.σ1-?
-XN--88E732C.Σ1-?; ≮ᡬ.σ1-?; [P1, V6]; xn--88e732c.xn--1-?-pzc; ; ; # ≮ᡬ.σ1-?
-xn--88e732c.ς1-?; ≮ᡬ.ς1-?; [P1, V6]; xn--88e732c.xn--1-?-lzc; ; xn--88e732c.xn--1-?-pzc; # ≮ᡬ.ς1-?
-Xn--88e732c.ς1-?; ≮ᡬ.ς1-?; [P1, V6]; xn--88e732c.xn--1-?-lzc; ; xn--88e732c.xn--1-?-pzc; # ≮ᡬ.ς1-?
-Xn--88e732c.σ1-?; ≮ᡬ.σ1-?; [P1, V6]; xn--88e732c.xn--1-?-pzc; ; ; # ≮ᡬ.σ1-?
-ቬò” ¼ñ—¶ï½¡ð¨¬ðŸ ; ቬò” ¼ñ—¶.ð¨¬8; [P1, V6]; xn--d0d41273c887z.xn--8-ob5i; ; ; # ቬ.ð¨¬8
-ቬò” ¼ñ—¶ã€‚ð¨¬8; ቬò” ¼ñ—¶.ð¨¬8; [P1, V6]; xn--d0d41273c887z.xn--8-ob5i; ; ; # ቬ.ð¨¬8
+≮ᡬ.ς¹-?; ≮ᡬ.ς1-?; [V6]; xn--88e732c.xn--1-?-lzc; ; xn--88e732c.xn--1-?-pzc; # ≮ᡬ.ς1-?
+<\u0338ᡬ.ς¹-?; ≮ᡬ.ς1-?; [V6]; xn--88e732c.xn--1-?-lzc; ; xn--88e732c.xn--1-?-pzc; # ≮ᡬ.ς1-?
+≮ᡬ.ς1-?; ; [V6]; xn--88e732c.xn--1-?-lzc; ; xn--88e732c.xn--1-?-pzc; # ≮ᡬ.ς1-?
+<\u0338ᡬ.ς1-?; ≮ᡬ.ς1-?; [V6]; xn--88e732c.xn--1-?-lzc; ; xn--88e732c.xn--1-?-pzc; # ≮ᡬ.ς1-?
+<\u0338ᡬ.Σ1-?; ≮ᡬ.σ1-?; [V6]; xn--88e732c.xn--1-?-pzc; ; ; # ≮ᡬ.σ1-?
+≮ᡬ.Σ1-?; ≮ᡬ.σ1-?; [V6]; xn--88e732c.xn--1-?-pzc; ; ; # ≮ᡬ.σ1-?
+≮ᡬ.σ1-?; ; [V6]; xn--88e732c.xn--1-?-pzc; ; ; # ≮ᡬ.σ1-?
+<\u0338ᡬ.σ1-?; ≮ᡬ.σ1-?; [V6]; xn--88e732c.xn--1-?-pzc; ; ; # ≮ᡬ.σ1-?
+xn--88e732c.xn--1-?-pzc; ≮ᡬ.σ1-?; [V6]; xn--88e732c.xn--1-?-pzc; ; ; # ≮ᡬ.σ1-?
+xn--88e732c.xn--1-?-lzc; ≮ᡬ.ς1-?; [V6]; xn--88e732c.xn--1-?-lzc; ; ; # ≮ᡬ.ς1-?
+<\u0338ᡬ.Σ¹-?; ≮ᡬ.σ1-?; [V6]; xn--88e732c.xn--1-?-pzc; ; ; # ≮ᡬ.σ1-?
+≮ᡬ.Σ¹-?; ≮ᡬ.σ1-?; [V6]; xn--88e732c.xn--1-?-pzc; ; ; # ≮ᡬ.σ1-?
+≮ᡬ.σ¹-?; ≮ᡬ.σ1-?; [V6]; xn--88e732c.xn--1-?-pzc; ; ; # ≮ᡬ.σ1-?
+<\u0338ᡬ.σ¹-?; ≮ᡬ.σ1-?; [V6]; xn--88e732c.xn--1-?-pzc; ; ; # ≮ᡬ.σ1-?
+xn--88e732c.σ1-?; ≮ᡬ.σ1-?; [V6]; xn--88e732c.xn--1-?-pzc; ; ; # ≮ᡬ.σ1-?
+XN--88E732C.Σ1-?; ≮ᡬ.σ1-?; [V6]; xn--88e732c.xn--1-?-pzc; ; ; # ≮ᡬ.σ1-?
+xn--88e732c.ς1-?; ≮ᡬ.ς1-?; [V6]; xn--88e732c.xn--1-?-lzc; ; xn--88e732c.xn--1-?-pzc; # ≮ᡬ.ς1-?
+Xn--88e732c.ς1-?; ≮ᡬ.ς1-?; [V6]; xn--88e732c.xn--1-?-lzc; ; xn--88e732c.xn--1-?-pzc; # ≮ᡬ.ς1-?
+Xn--88e732c.σ1-?; ≮ᡬ.σ1-?; [V6]; xn--88e732c.xn--1-?-pzc; ; ; # ≮ᡬ.σ1-?
+ቬò” ¼ñ—¶ï½¡ð¨¬ðŸ ; ቬò” ¼ñ—¶.ð¨¬8; [V6]; xn--d0d41273c887z.xn--8-ob5i; ; ; # ቬ.ð¨¬8
+ቬò” ¼ñ—¶ã€‚ð¨¬8; ቬò” ¼ñ—¶.ð¨¬8; [V6]; xn--d0d41273c887z.xn--8-ob5i; ; ; # ቬ.ð¨¬8
xn--d0d41273c887z.xn--8-ob5i; ቬò” ¼ñ—¶.ð¨¬8; [V6]; xn--d0d41273c887z.xn--8-ob5i; ; ; # ቬ.ð¨¬8
-ð±²ã€‚蔫\u0766; ð±².蔫\u0766; [B5, B6, P1, V6]; xn--389c.xn--qpb7055d; ; ; # .蔫ݦ
+ð±²ã€‚蔫\u0766; ð±².蔫\u0766; [B5, B6, V6]; xn--389c.xn--qpb7055d; ; ; # .蔫ݦ
xn--389c.xn--qpb7055d; ð±².蔫\u0766; [B5, B6, V6]; xn--389c.xn--qpb7055d; ; ; # .蔫ݦ
-򒲧₃。ꡚ𛇑󠄳\u0647; 򒲧3.ꡚ𛇑\u0647; [B5, B6, P1, V6]; xn--3-ep59g.xn--jhb5904fcp0h; ; ; # 3.ꡚ𛇑ه
-򒲧3。ꡚ𛇑󠄳\u0647; 򒲧3.ꡚ𛇑\u0647; [B5, B6, P1, V6]; xn--3-ep59g.xn--jhb5904fcp0h; ; ; # 3.ꡚ𛇑ه
+򒲧₃。ꡚ𛇑󠄳\u0647; 򒲧3.ꡚ𛇑\u0647; [B5, B6, V6]; xn--3-ep59g.xn--jhb5904fcp0h; ; ; # 3.ꡚ𛇑ه
+򒲧3。ꡚ𛇑󠄳\u0647; 򒲧3.ꡚ𛇑\u0647; [B5, B6, V6]; xn--3-ep59g.xn--jhb5904fcp0h; ; ; # 3.ꡚ𛇑ه
xn--3-ep59g.xn--jhb5904fcp0h; 򒲧3.ꡚ𛇑\u0647; [B5, B6, V6]; xn--3-ep59g.xn--jhb5904fcp0h; ; ; # 3.ꡚ𛇑ه
-蓸\u0642≠.ß; ; [B5, B6, P1, V6]; xn--ehb015lnt1e.xn--zca; ; xn--ehb015lnt1e.ss; # 蓸ق≠.ß
-蓸\u0642=\u0338.ß; 蓸\u0642≠.ß; [B5, B6, P1, V6]; xn--ehb015lnt1e.xn--zca; ; xn--ehb015lnt1e.ss; # 蓸ق≠.ß
-蓸\u0642=\u0338.SS; 蓸\u0642≠.ss; [B5, B6, P1, V6]; xn--ehb015lnt1e.ss; ; ; # 蓸ق≠.ss
-蓸\u0642≠.SS; 蓸\u0642≠.ss; [B5, B6, P1, V6]; xn--ehb015lnt1e.ss; ; ; # 蓸ق≠.ss
-蓸\u0642≠.ss; ; [B5, B6, P1, V6]; xn--ehb015lnt1e.ss; ; ; # 蓸ق≠.ss
-蓸\u0642=\u0338.ss; 蓸\u0642≠.ss; [B5, B6, P1, V6]; xn--ehb015lnt1e.ss; ; ; # 蓸ق≠.ss
-蓸\u0642=\u0338.Ss; 蓸\u0642≠.ss; [B5, B6, P1, V6]; xn--ehb015lnt1e.ss; ; ; # 蓸ق≠.ss
-蓸\u0642≠.Ss; 蓸\u0642≠.ss; [B5, B6, P1, V6]; xn--ehb015lnt1e.ss; ; ; # 蓸ق≠.ss
-xn--ehb015lnt1e.ss; 蓸\u0642≠.ss; [B5, B6, V6]; xn--ehb015lnt1e.ss; ; ; # 蓸ق≠.ss
-xn--ehb015lnt1e.xn--zca; 蓸\u0642≠.ß; [B5, B6, V6]; xn--ehb015lnt1e.xn--zca; ; ; # 蓸ق≠.ß
-\u084E\u067A\u0DD3â’Š.ð¹¹ðž±©ó ƒª\u200C; ; [B1, C1, P1, V6]; xn--zib94gfziuq1a.xn--0ug3205g7eyf3c96h; ; xn--zib94gfziuq1a.xn--xo0dw109an237f; [B1, P1, V6] # ࡎٺී⒊.ð¹¹
-\u084E\u067A\u0DD33..ð¹¹ðž±©ó ƒª\u200C; ; [B1, C1, P1, V6, X4_2]; xn--3-prc71ls9j..xn--0ug3205g7eyf3c96h; [B1, C1, P1, V6, A4_2]; xn--3-prc71ls9j..xn--xo0dw109an237f; [B1, P1, V6, A4_2] # ࡎٺී3..ð¹¹
+蓸\u0642≠.ß; ; [B5, B6]; xn--ehb015lnt1e.xn--zca; ; xn--ehb015lnt1e.ss; # 蓸ق≠.ß
+蓸\u0642=\u0338.ß; 蓸\u0642≠.ß; [B5, B6]; xn--ehb015lnt1e.xn--zca; ; xn--ehb015lnt1e.ss; # 蓸ق≠.ß
+蓸\u0642=\u0338.SS; 蓸\u0642≠.ss; [B5, B6]; xn--ehb015lnt1e.ss; ; ; # 蓸ق≠.ss
+蓸\u0642≠.SS; 蓸\u0642≠.ss; [B5, B6]; xn--ehb015lnt1e.ss; ; ; # 蓸ق≠.ss
+蓸\u0642≠.ss; ; [B5, B6]; xn--ehb015lnt1e.ss; ; ; # 蓸ق≠.ss
+蓸\u0642=\u0338.ss; 蓸\u0642≠.ss; [B5, B6]; xn--ehb015lnt1e.ss; ; ; # 蓸ق≠.ss
+蓸\u0642=\u0338.Ss; 蓸\u0642≠.ss; [B5, B6]; xn--ehb015lnt1e.ss; ; ; # 蓸ق≠.ss
+蓸\u0642≠.Ss; 蓸\u0642≠.ss; [B5, B6]; xn--ehb015lnt1e.ss; ; ; # 蓸ق≠.ss
+xn--ehb015lnt1e.ss; 蓸\u0642≠.ss; [B5, B6]; xn--ehb015lnt1e.ss; ; ; # 蓸ق≠.ss
+xn--ehb015lnt1e.xn--zca; 蓸\u0642≠.ß; [B5, B6]; xn--ehb015lnt1e.xn--zca; ; ; # 蓸ق≠.ß
+\u084E\u067A\u0DD3â’Š.ð¹¹ðž±©ó ƒª\u200C; ; [B1, C1, V6]; xn--zib94gfziuq1a.xn--0ug3205g7eyf3c96h; ; xn--zib94gfziuq1a.xn--xo0dw109an237f; [B1, V6] # ࡎٺී⒊.ð¹¹
+\u084E\u067A\u0DD33..ð¹¹ðž±©ó ƒª\u200C; ; [B1, C1, V6, X4_2]; xn--3-prc71ls9j..xn--0ug3205g7eyf3c96h; [B1, C1, V6, A4_2]; xn--3-prc71ls9j..xn--xo0dw109an237f; [B1, V6, A4_2] # ࡎٺී3..ð¹¹
xn--3-prc71ls9j..xn--xo0dw109an237f; \u084E\u067A\u0DD33..ð¹¹ðž±©ó ƒª; [B1, V6, X4_2]; xn--3-prc71ls9j..xn--xo0dw109an237f; [B1, V6, A4_2]; ; # ࡎٺී3..ð¹¹
xn--3-prc71ls9j..xn--0ug3205g7eyf3c96h; \u084E\u067A\u0DD33..ð¹¹ðž±©ó ƒª\u200C; [B1, C1, V6, X4_2]; xn--3-prc71ls9j..xn--0ug3205g7eyf3c96h; [B1, C1, V6, A4_2]; ; # ࡎٺී3..ð¹¹
xn--zib94gfziuq1a.xn--xo0dw109an237f; \u084E\u067A\u0DD3â’Š.ð¹¹ðž±©ó ƒª; [B1, V6]; xn--zib94gfziuq1a.xn--xo0dw109an237f; ; ; # ࡎٺී⒊.ð¹¹
xn--zib94gfziuq1a.xn--0ug3205g7eyf3c96h; \u084E\u067A\u0DD3â’Š.ð¹¹ðž±©ó ƒª\u200C; [B1, C1, V6]; xn--zib94gfziuq1a.xn--0ug3205g7eyf3c96h; ; ; # ࡎٺී⒊.ð¹¹
-ς\u200D-.Ⴣ𦟙; ; [C2, P1, V3, V6]; xn----xmb348s.xn--7nd64871a; ; xn----zmb.xn--7nd64871a; [P1, V3, V6] # ς-.Ⴣ𦟙
+ς\u200D-.Ⴣ𦟙; ; [C2, V3, V6]; xn----xmb348s.xn--7nd64871a; ; xn----zmb.xn--7nd64871a; [V3, V6] # ς-.Ⴣ𦟙
ς\u200D-.ⴣ𦟙; ; [C2, V3]; xn----xmb348s.xn--rlj2573p; ; xn----zmb.xn--rlj2573p; [V3] # ς-.ⴣ𦟙
-Σ\u200D-.Ⴣ𦟙; σ\u200D-.Ⴣ𦟙; [C2, P1, V3, V6]; xn----zmb048s.xn--7nd64871a; ; xn----zmb.xn--7nd64871a; [P1, V3, V6] # σ-.Ⴣ𦟙
+Σ\u200D-.Ⴣ𦟙; σ\u200D-.Ⴣ𦟙; [C2, V3, V6]; xn----zmb048s.xn--7nd64871a; ; xn----zmb.xn--7nd64871a; [V3, V6] # σ-.Ⴣ𦟙
σ\u200D-.ⴣ𦟙; ; [C2, V3]; xn----zmb048s.xn--rlj2573p; ; xn----zmb.xn--rlj2573p; [V3] # σ-.ⴣ𦟙
xn----zmb.xn--rlj2573p; σ-.ⴣ𦟙; [V3]; xn----zmb.xn--rlj2573p; ; ; # σ-.ⴣ𦟙
xn----zmb048s.xn--rlj2573p; σ\u200D-.ⴣ𦟙; [C2, V3]; xn----zmb048s.xn--rlj2573p; ; ; # σ-.ⴣ𦟙
@@ -3189,12 +3201,14 @@ xn----zmb.xn--7nd64871a; σ-.Ⴣ𦟙; [V3, V6]; xn----zmb.xn--7nd64871a; ; ; #
xn----zmb048s.xn--7nd64871a; σ\u200D-.Ⴣ𦟙; [C2, V3, V6]; xn----zmb048s.xn--7nd64871a; ; ; # σ-.Ⴣ𦟙
xn----xmb348s.xn--rlj2573p; ς\u200D-.ⴣ𦟙; [C2, V3]; xn----xmb348s.xn--rlj2573p; ; ; # ς-.ⴣ𦟙
xn----xmb348s.xn--7nd64871a; ς\u200D-.Ⴣ𦟙; [C2, V3, V6]; xn----xmb348s.xn--7nd64871a; ; ; # ς-.Ⴣ𦟙
-≠。🞳ðŸ²; ≠.🞳6; [P1, V6]; xn--1ch.xn--6-dl4s; ; ; # ≠.🞳6
-=\u0338。🞳ðŸ²; ≠.🞳6; [P1, V6]; xn--1ch.xn--6-dl4s; ; ; # ≠.🞳6
-≠。🞳6; ≠.🞳6; [P1, V6]; xn--1ch.xn--6-dl4s; ; ; # ≠.🞳6
-=\u0338。🞳6; ≠.🞳6; [P1, V6]; xn--1ch.xn--6-dl4s; ; ; # ≠.🞳6
-xn--1ch.xn--6-dl4s; ≠.🞳6; [V6]; xn--1ch.xn--6-dl4s; ; ; # ≠.🞳6
-󅬽.蠔; ; [P1, V6]; xn--g747d.xn--xl2a; ; ; # .蠔
+≠。🞳ðŸ²; ≠.🞳6; ; xn--1ch.xn--6-dl4s; ; ; # ≠.🞳6
+=\u0338。🞳ðŸ²; ≠.🞳6; ; xn--1ch.xn--6-dl4s; ; ; # ≠.🞳6
+≠。🞳6; ≠.🞳6; ; xn--1ch.xn--6-dl4s; ; ; # ≠.🞳6
+=\u0338。🞳6; ≠.🞳6; ; xn--1ch.xn--6-dl4s; ; ; # ≠.🞳6
+xn--1ch.xn--6-dl4s; ≠.🞳6; ; xn--1ch.xn--6-dl4s; ; ; # ≠.🞳6
+≠.🞳6; ; ; xn--1ch.xn--6-dl4s; ; ; # ≠.🞳6
+=\u0338.🞳6; ≠.🞳6; ; xn--1ch.xn--6-dl4s; ; ; # ≠.🞳6
+󅬽.蠔; ; [V6]; xn--g747d.xn--xl2a; ; ; # .蠔
xn--g747d.xn--xl2a; 󅬽.蠔; [V6]; xn--g747d.xn--xl2a; ; ; # .蠔
\u08E6\u200D.뼽; \u08E6\u200D.뼽; [C2, V5]; xn--p0b869i.xn--e43b; ; xn--p0b.xn--e43b; [V5] # ࣦ.뼽
\u08E6\u200D.뼽; \u08E6\u200D.뼽; [C2, V5]; xn--p0b869i.xn--e43b; ; xn--p0b.xn--e43b; [V5] # ࣦ.뼽
@@ -3202,14 +3216,14 @@ xn--g747d.xn--xl2a; 󅬽.蠔; [V6]; xn--g747d.xn--xl2a; ; ; # .蠔
\u08E6\u200D.뼽; \u08E6\u200D.뼽; [C2, V5]; xn--p0b869i.xn--e43b; ; xn--p0b.xn--e43b; [V5] # ࣦ.뼽
xn--p0b.xn--e43b; \u08E6.뼽; [V5]; xn--p0b.xn--e43b; ; ; # ࣦ.뼽
xn--p0b869i.xn--e43b; \u08E6\u200D.뼽; [C2, V5]; xn--p0b869i.xn--e43b; ; ; # ࣦ.뼽
-₇\u0BCDôƒ‚·\u06D2。👖\u0675-𞪑; 7\u0BCDôƒ‚·\u06D2.👖\u0627\u0674-𞪑; [B1, P1, V6]; xn--7-rwc839aj3073c.xn----ymc5uv818oghka; ; ; # 7à¯Û’.👖اٴ-
-7\u0BCDôƒ‚·\u06D2。👖\u0627\u0674-𞪑; 7\u0BCDôƒ‚·\u06D2.👖\u0627\u0674-𞪑; [B1, P1, V6]; xn--7-rwc839aj3073c.xn----ymc5uv818oghka; ; ; # 7à¯Û’.👖اٴ-
+₇\u0BCDôƒ‚·\u06D2。👖\u0675-𞪑; 7\u0BCDôƒ‚·\u06D2.👖\u0627\u0674-𞪑; [B1, V6]; xn--7-rwc839aj3073c.xn----ymc5uv818oghka; ; ; # 7à¯Û’.👖اٴ-
+7\u0BCDôƒ‚·\u06D2。👖\u0627\u0674-𞪑; 7\u0BCDôƒ‚·\u06D2.👖\u0627\u0674-𞪑; [B1, V6]; xn--7-rwc839aj3073c.xn----ymc5uv818oghka; ; ; # 7à¯Û’.👖اٴ-
xn--7-rwc839aj3073c.xn----ymc5uv818oghka; 7\u0BCDôƒ‚·\u06D2.👖\u0627\u0674-𞪑; [B1, V6]; xn--7-rwc839aj3073c.xn----ymc5uv818oghka; ; ; # 7à¯Û’.👖اٴ-
-。\u077B; -.\u077B; [B1, V3]; -.xn--cqb; ; ; # -.ݻ
-。\u077B; -.\u077B; [B1, V3]; -.xn--cqb; ; ; # -.ݻ
-.xn--cqb; -.\u077B; [B1, V3]; -.xn--cqb; ; ; # -.Ý»
-𑇌𵛓。-â’ˆê¡\u072B; 𑇌𵛓.-â’ˆê¡\u072B; [B1, P1, V3, V5, V6]; xn--8d1dg030h.xn----u1c466tp10j; ; ; # 𑇌.-â’ˆê¡Ü«
-𑇌𵛓。-1.ê¡\u072B; 𑇌𵛓.-1.ê¡\u072B; [B1, B5, B6, P1, V3, V5, V6]; xn--8d1dg030h.-1.xn--1nb7163f; ; ; # 𑇌.-1.ê¡Ü«
+𑇌𵛓。-â’ˆê¡\u072B; 𑇌𵛓.-â’ˆê¡\u072B; [B1, V3, V5, V6]; xn--8d1dg030h.xn----u1c466tp10j; ; ; # 𑇌.-â’ˆê¡Ü«
+𑇌𵛓。-1.ê¡\u072B; 𑇌𵛓.-1.ê¡\u072B; [B1, B5, B6, V3, V5, V6]; xn--8d1dg030h.-1.xn--1nb7163f; ; ; # 𑇌.-1.ê¡Ü«
xn--8d1dg030h.-1.xn--1nb7163f; 𑇌𵛓.-1.ê¡\u072B; [B1, B5, B6, V3, V5, V6]; xn--8d1dg030h.-1.xn--1nb7163f; ; ; # 𑇌.-1.ê¡Ü«
xn--8d1dg030h.xn----u1c466tp10j; 𑇌𵛓.-â’ˆê¡\u072B; [B1, V3, V5, V6]; xn--8d1dg030h.xn----u1c466tp10j; ; ; # 𑇌.-â’ˆê¡Ü«
璛\u1734\u06AF.-; ; [B1, B5, B6, V3]; xn--ikb175frt4e.-; ; ; # 璛᜴گ.-
@@ -3219,49 +3233,49 @@ xn--ikb175frt4e.-; ç’›\u1734\u06AF.-; [B1, B5, B6, V3]; xn--ikb175frt4e.-; ; ;
ó †°\u08A1\u0A4D샕.ð¹²íœ; \u08A1\u0A4D샕.ð¹²íœ; [B1, B2, B3]; xn--qyb07fj857a.xn--728bv72h; ; ; # ࢡà©ìƒ•.ð¹²íœ
ó †°\u08A1\u0A4D샕.ð¹²á„’ᅰᆬ; \u08A1\u0A4D샕.ð¹²íœ; [B1, B2, B3]; xn--qyb07fj857a.xn--728bv72h; ; ; # ࢡà©ìƒ•.ð¹²íœ
xn--qyb07fj857a.xn--728bv72h; \u08A1\u0A4D샕.ð¹²íœ; [B1, B2, B3]; xn--qyb07fj857a.xn--728bv72h; ; ; # ࢡà©ìƒ•.ð¹²íœ
-ñ¨½ï¼Žñ‹¸•; ñ¨½.ñ‹¸•; [P1, V6]; xn--pr3x.xn--rv7w; ; ; # .
-ñ¨½.ñ‹¸•; ; [P1, V6]; xn--pr3x.xn--rv7w; ; ; # .
+ñ¨½ï¼Žñ‹¸•; ñ¨½.ñ‹¸•; [V6]; xn--pr3x.xn--rv7w; ; ; # .
+ñ¨½.ñ‹¸•; ; [V6]; xn--pr3x.xn--rv7w; ; ; # .
xn--pr3x.xn--rv7w; ñ¨½.ñ‹¸•; [V6]; xn--pr3x.xn--rv7w; ; ; # .
-\u067D𞥕。𑑂𞤶Ⴍ-; \u067D𞥕.𑑂𞤶Ⴍ-; [B1, P1, V3, V5, V6]; xn--2ib0338v.xn----w0g2740ro9vg; ; ; # ٽ𞥕.𑑂𞤶Ⴍ-
-\u067D𞥕。𑑂𞤶Ⴍ-; \u067D𞥕.𑑂𞤶Ⴍ-; [B1, P1, V3, V5, V6]; xn--2ib0338v.xn----w0g2740ro9vg; ; ; # ٽ𞥕.𑑂𞤶Ⴍ-
+\u067D𞥕。𑑂𞤶Ⴍ-; \u067D𞥕.𑑂𞤶Ⴍ-; [B1, V3, V5, V6]; xn--2ib0338v.xn----w0g2740ro9vg; ; ; # ٽ𞥕.𑑂𞤶Ⴍ-
+\u067D𞥕。𑑂𞤶Ⴍ-; \u067D𞥕.𑑂𞤶Ⴍ-; [B1, V3, V5, V6]; xn--2ib0338v.xn----w0g2740ro9vg; ; ; # ٽ𞥕.𑑂𞤶Ⴍ-
\u067D𞥕。𑑂𞤶â´-; \u067D𞥕.𑑂𞤶â´-; [B1, V3, V5]; xn--2ib0338v.xn----zvs0199fo91g; ; ; # ٽ𞥕.𑑂𞤶â´-
-\u067D𞥕。𑑂𞤔Ⴍ-; \u067D𞥕.𑑂𞤶Ⴍ-; [B1, P1, V3, V5, V6]; xn--2ib0338v.xn----w0g2740ro9vg; ; ; # ٽ𞥕.𑑂𞤶Ⴍ-
+\u067D𞥕。𑑂𞤔Ⴍ-; \u067D𞥕.𑑂𞤶Ⴍ-; [B1, V3, V5, V6]; xn--2ib0338v.xn----w0g2740ro9vg; ; ; # ٽ𞥕.𑑂𞤶Ⴍ-
\u067D𞥕。𑑂𞤔â´-; \u067D𞥕.𑑂𞤶â´-; [B1, V3, V5]; xn--2ib0338v.xn----zvs0199fo91g; ; ; # ٽ𞥕.𑑂𞤶â´-
xn--2ib0338v.xn----zvs0199fo91g; \u067D𞥕.𑑂𞤶â´-; [B1, V3, V5]; xn--2ib0338v.xn----zvs0199fo91g; ; ; # ٽ𞥕.𑑂𞤶â´-
xn--2ib0338v.xn----w0g2740ro9vg; \u067D𞥕.𑑂𞤶Ⴍ-; [B1, V3, V5, V6]; xn--2ib0338v.xn----w0g2740ro9vg; ; ; # ٽ𞥕.𑑂𞤶Ⴍ-
\u067D𞥕。𑑂𞤶â´-; \u067D𞥕.𑑂𞤶â´-; [B1, V3, V5]; xn--2ib0338v.xn----zvs0199fo91g; ; ; # ٽ𞥕.𑑂𞤶â´-
-\u067D𞥕。𑑂𞤔Ⴍ-; \u067D𞥕.𑑂𞤶Ⴍ-; [B1, P1, V3, V5, V6]; xn--2ib0338v.xn----w0g2740ro9vg; ; ; # ٽ𞥕.𑑂𞤶Ⴍ-
+\u067D𞥕。𑑂𞤔Ⴍ-; \u067D𞥕.𑑂𞤶Ⴍ-; [B1, V3, V5, V6]; xn--2ib0338v.xn----w0g2740ro9vg; ; ; # ٽ𞥕.𑑂𞤶Ⴍ-
\u067D𞥕。𑑂𞤔â´-; \u067D𞥕.𑑂𞤶â´-; [B1, V3, V5]; xn--2ib0338v.xn----zvs0199fo91g; ; ; # ٽ𞥕.𑑂𞤶â´-
-ð¯€ð¸‰ðž§ã€‚ñ¢š§â‚„á‚«ñ‚¹«; ð¯€ð¸‰ðž§.ñ¢š§4á‚«ñ‚¹«; [P1, V6]; xn--039c42bq865a.xn--4-t0g49302fnrzm; ; ; # .4á‚«
-ð¯€ð¸‰ðž§ã€‚ñ¢š§4á‚«ñ‚¹«; ð¯€ð¸‰ðž§.ñ¢š§4á‚«ñ‚¹«; [P1, V6]; xn--039c42bq865a.xn--4-t0g49302fnrzm; ; ; # .4á‚«
-ð¯€ð¸‰ðž§ã€‚ñ¢š§4â´‹ñ‚¹«; ð¯€ð¸‰ðž§.ñ¢š§4â´‹ñ‚¹«; [P1, V6]; xn--039c42bq865a.xn--4-wvs27840bnrzm; ; ; # .4â´‹
+ð¯€ð¸‰ðž§ã€‚ñ¢š§â‚„á‚«ñ‚¹«; ð¯€ð¸‰ðž§.ñ¢š§4á‚«ñ‚¹«; [V6]; xn--039c42bq865a.xn--4-t0g49302fnrzm; ; ; # .4á‚«
+ð¯€ð¸‰ðž§ã€‚ñ¢š§4á‚«ñ‚¹«; ð¯€ð¸‰ðž§.ñ¢š§4á‚«ñ‚¹«; [V6]; xn--039c42bq865a.xn--4-t0g49302fnrzm; ; ; # .4á‚«
+ð¯€ð¸‰ðž§ã€‚ñ¢š§4â´‹ñ‚¹«; ð¯€ð¸‰ðž§.ñ¢š§4â´‹ñ‚¹«; [V6]; xn--039c42bq865a.xn--4-wvs27840bnrzm; ; ; # .4â´‹
xn--039c42bq865a.xn--4-wvs27840bnrzm; ð¯€ð¸‰ðž§.ñ¢š§4â´‹ñ‚¹«; [V6]; xn--039c42bq865a.xn--4-wvs27840bnrzm; ; ; # .4â´‹
xn--039c42bq865a.xn--4-t0g49302fnrzm; ð¯€ð¸‰ðž§.ñ¢š§4á‚«ñ‚¹«; [V6]; xn--039c42bq865a.xn--4-t0g49302fnrzm; ; ; # .4á‚«
-ð¯€ð¸‰ðž§ã€‚ñ¢š§â‚„â´‹ñ‚¹«; ð¯€ð¸‰ðž§.ñ¢š§4â´‹ñ‚¹«; [P1, V6]; xn--039c42bq865a.xn--4-wvs27840bnrzm; ; ; # .4â´‹
-4\u06BD︒󠑥.≠; ; [B1, P1, V6]; xn--4-kvc5601q2h50i.xn--1ch; ; ; # 4ڽ︒.≠
-4\u06BD︒󠑥.=\u0338; 4\u06BD︒󠑥.≠; [B1, P1, V6]; xn--4-kvc5601q2h50i.xn--1ch; ; ; # 4ڽ︒.≠
-4\u06BD。󠑥.≠; 4\u06BD.󠑥.≠; [B1, P1, V6]; xn--4-kvc.xn--5136e.xn--1ch; ; ; # 4ڽ..≠
-4\u06BD。󠑥.=\u0338; 4\u06BD.󠑥.≠; [B1, P1, V6]; xn--4-kvc.xn--5136e.xn--1ch; ; ; # 4ڽ..≠
+ð¯€ð¸‰ðž§ã€‚ñ¢š§â‚„â´‹ñ‚¹«; ð¯€ð¸‰ðž§.ñ¢š§4â´‹ñ‚¹«; [V6]; xn--039c42bq865a.xn--4-wvs27840bnrzm; ; ; # .4â´‹
+4\u06BD︒󠑥.≠; ; [B1, V6]; xn--4-kvc5601q2h50i.xn--1ch; ; ; # 4ڽ︒.≠
+4\u06BD︒󠑥.=\u0338; 4\u06BD︒󠑥.≠; [B1, V6]; xn--4-kvc5601q2h50i.xn--1ch; ; ; # 4ڽ︒.≠
+4\u06BD。󠑥.≠; 4\u06BD.󠑥.≠; [B1, V6]; xn--4-kvc.xn--5136e.xn--1ch; ; ; # 4ڽ..≠
+4\u06BD。󠑥.=\u0338; 4\u06BD.󠑥.≠; [B1, V6]; xn--4-kvc.xn--5136e.xn--1ch; ; ; # 4ڽ..≠
xn--4-kvc.xn--5136e.xn--1ch; 4\u06BD.󠑥.≠; [B1, V6]; xn--4-kvc.xn--5136e.xn--1ch; ; ; # 4ڽ..≠
xn--4-kvc5601q2h50i.xn--1ch; 4\u06BD︒󠑥.≠; [B1, V6]; xn--4-kvc5601q2h50i.xn--1ch; ; ; # 4ڽ︒.≠
ðŸ“。\u06D7; 5.\u06D7; [V5]; 5.xn--nlb; ; ; # 5.Û—
5。\u06D7; 5.\u06D7; [V5]; 5.xn--nlb; ; ; # 5.ۗ
5.xn--nlb; 5.\u06D7; [V5]; 5.xn--nlb; ; ; # 5.Û—
-\u200C򺸩.⾕; \u200C򺸩.谷; [C1, P1, V6]; xn--0ug26167i.xn--6g3a; ; xn--i183d.xn--6g3a; [P1, V6] # .谷
-\u200C򺸩.谷; ; [C1, P1, V6]; xn--0ug26167i.xn--6g3a; ; xn--i183d.xn--6g3a; [P1, V6] # .谷
+\u200C򺸩.⾕; \u200C򺸩.谷; [C1, V6]; xn--0ug26167i.xn--6g3a; ; xn--i183d.xn--6g3a; [V6] # .谷
+\u200C򺸩.谷; ; [C1, V6]; xn--0ug26167i.xn--6g3a; ; xn--i183d.xn--6g3a; [V6] # .谷
xn--i183d.xn--6g3a; 򺸩.谷; [V6]; xn--i183d.xn--6g3a; ; ; # .谷
xn--0ug26167i.xn--6g3a; \u200C򺸩.谷; [C1, V6]; xn--0ug26167i.xn--6g3a; ; ; # .谷
-︒󎰇\u200D.-\u073C\u200C; ; [C1, C2, P1, V3, V6]; xn--1ug1658ftw26f.xn----t2c071q; ; xn--y86c71305c.xn----t2c; [P1, V3, V6] # ︒.-ܼ
-。󎰇\u200D.-\u073C\u200C; .󎰇\u200D.-\u073C\u200C; [C1, C2, P1, V3, V6, X4_2]; .xn--1ug05310k.xn----t2c071q; [C1, C2, P1, V3, V6, A4_2]; .xn--hh50e.xn----t2c; [P1, V3, V6, A4_2] # ..-ܼ
+︒󎰇\u200D.-\u073C\u200C; ; [C1, C2, V3, V6]; xn--1ug1658ftw26f.xn----t2c071q; ; xn--y86c71305c.xn----t2c; [V3, V6] # ︒.-ܼ
+。󎰇\u200D.-\u073C\u200C; .󎰇\u200D.-\u073C\u200C; [C1, C2, V3, V6, X4_2]; .xn--1ug05310k.xn----t2c071q; [C1, C2, V3, V6, A4_2]; .xn--hh50e.xn----t2c; [V3, V6, A4_2] # ..-ܼ
.xn--hh50e.xn----t2c; .󎰇.-\u073C; [V3, V6, X4_2]; .xn--hh50e.xn----t2c; [V3, V6, A4_2]; ; # ..-ܼ
.xn--1ug05310k.xn----t2c071q; .󎰇\u200D.-\u073C\u200C; [C1, C2, V3, V6, X4_2]; .xn--1ug05310k.xn----t2c071q; [C1, C2, V3, V6, A4_2]; ; # ..-ܼ
xn--y86c71305c.xn----t2c; ︒󎰇.-\u073C; [V3, V6]; xn--y86c71305c.xn----t2c; ; ; # ︒.-ܼ
xn--1ug1658ftw26f.xn----t2c071q; ︒󎰇\u200D.-\u073C\u200C; [C1, C2, V3, V6]; xn--1ug1658ftw26f.xn----t2c071q; ; ; # ︒.-ܼ
-≯𞤟。ᡨ; ≯ðž¥.ᡨ; [B1, P1, V6]; xn--hdhz520p.xn--48e; ; ; # ≯ðž¥.ᡨ
->\u0338𞤟。ᡨ; ≯ðž¥.ᡨ; [B1, P1, V6]; xn--hdhz520p.xn--48e; ; ; # ≯ðž¥.ᡨ
->\u0338ðž¥ã€‚ᡨ; ≯ðž¥.ᡨ; [B1, P1, V6]; xn--hdhz520p.xn--48e; ; ; # ≯ðž¥.ᡨ
-≯ðž¥ã€‚ᡨ; ≯ðž¥.ᡨ; [B1, P1, V6]; xn--hdhz520p.xn--48e; ; ; # ≯ðž¥.ᡨ
-xn--hdhz520p.xn--48e; ≯ðž¥.ᡨ; [B1, V6]; xn--hdhz520p.xn--48e; ; ; # ≯ðž¥.ᡨ
+≯𞤟。ᡨ; ≯ðž¥.ᡨ; [B1]; xn--hdhz520p.xn--48e; ; ; # ≯ðž¥.ᡨ
+>\u0338𞤟。ᡨ; ≯ðž¥.ᡨ; [B1]; xn--hdhz520p.xn--48e; ; ; # ≯ðž¥.ᡨ
+>\u0338ðž¥ã€‚ᡨ; ≯ðž¥.ᡨ; [B1]; xn--hdhz520p.xn--48e; ; ; # ≯ðž¥.ᡨ
+≯ðž¥ã€‚ᡨ; ≯ðž¥.ᡨ; [B1]; xn--hdhz520p.xn--48e; ; ; # ≯ðž¥.ᡨ
+xn--hdhz520p.xn--48e; ≯ðž¥.ᡨ; [B1]; xn--hdhz520p.xn--48e; ; ; # ≯ðž¥.ᡨ
\u0F74ð««°ð¨„。\u0713ð¹¦; \u0F74ð««°ð¨„.\u0713ð¹¦; [B1, V5]; xn--ned8985uo92e.xn--dnb6395k; ; ; # ུ𫫰ð¨„.Ü“ð¹¦
xn--ned8985uo92e.xn--dnb6395k; \u0F74ð««°ð¨„.\u0713ð¹¦; [B1, V5]; xn--ned8985uo92e.xn--dnb6395k; ; ; # ུ𫫰ð¨„.Ü“ð¹¦
\u033C\u07DBâ·ðŸ¹ï½¡ðŸ¬; \u033C\u07DB73.0; [B1, V5]; xn--73-9yb648b.0; ; ; # ̼ߛ73.0
@@ -3274,33 +3288,33 @@ xn--1ug.9; \u200D.9; [C2]; xn--1ug.9; ; ; # .9
9; ; ; ; ; ; # 9
\u0779ᡭ𪕈。\u06B6\u08D9; \u0779ᡭ𪕈.\u06B6\u08D9; [B2, B3]; xn--9pb497fs270c.xn--pkb80i; ; ; # ݹᡭ𪕈.ڶࣙ
xn--9pb497fs270c.xn--pkb80i; \u0779ᡭ𪕈.\u06B6\u08D9; [B2, B3]; xn--9pb497fs270c.xn--pkb80i; ; ; # ݹᡭ𪕈.ڶࣙ
-\u07265\u07E2겙。\u1CF4ð·š; \u07265\u07E2ê²™.\u1CF4ð·š; [B1, B2, B3, P1, V5, V6]; xn--5-j1c97c2483c.xn--e7f2093h; ; ; # ܦ5ߢ겙.á³´
-\u07265\u07E2겙。\u1CF4ð·š; \u07265\u07E2ê²™.\u1CF4ð·š; [B1, B2, B3, P1, V5, V6]; xn--5-j1c97c2483c.xn--e7f2093h; ; ; # ܦ5ߢ겙.á³´
-\u07265\u07E2겙。\u1CF4ð·š; \u07265\u07E2ê²™.\u1CF4ð·š; [B1, B2, B3, P1, V5, V6]; xn--5-j1c97c2483c.xn--e7f2093h; ; ; # ܦ5ߢ겙.á³´
-\u07265\u07E2겙。\u1CF4ð·š; \u07265\u07E2ê²™.\u1CF4ð·š; [B1, B2, B3, P1, V5, V6]; xn--5-j1c97c2483c.xn--e7f2093h; ; ; # ܦ5ߢ겙.á³´
+\u07265\u07E2겙。\u1CF4ð·š; \u07265\u07E2ê²™.\u1CF4ð·š; [B1, B2, B3, V5, V6]; xn--5-j1c97c2483c.xn--e7f2093h; ; ; # ܦ5ߢ겙.á³´
+\u07265\u07E2겙。\u1CF4ð·š; \u07265\u07E2ê²™.\u1CF4ð·š; [B1, B2, B3, V5, V6]; xn--5-j1c97c2483c.xn--e7f2093h; ; ; # ܦ5ߢ겙.á³´
+\u07265\u07E2겙。\u1CF4ð·š; \u07265\u07E2ê²™.\u1CF4ð·š; [B1, B2, B3, V5, V6]; xn--5-j1c97c2483c.xn--e7f2093h; ; ; # ܦ5ߢ겙.á³´
+\u07265\u07E2겙。\u1CF4ð·š; \u07265\u07E2ê²™.\u1CF4ð·š; [B1, B2, B3, V5, V6]; xn--5-j1c97c2483c.xn--e7f2093h; ; ; # ܦ5ߢ겙.á³´
xn--5-j1c97c2483c.xn--e7f2093h; \u07265\u07E2ê²™.\u1CF4ð·š; [B1, B2, B3, V5, V6]; xn--5-j1c97c2483c.xn--e7f2093h; ; ; # ܦ5ߢ겙.á³´
-á‚­ð¿£ê¡¨\u05AE。Ⴞ\u200C\u200C; á‚­ð¿£ê¡¨\u05AE.Ⴞ\u200C\u200C; [C1, P1, V6]; xn--5cb347co96jug15a.xn--2nd059ea; ; xn--5cb347co96jug15a.xn--2nd; [P1, V6] # Ⴍꡨ֮.Ⴞ
-â´ð¿£ê¡¨\u05AE。ⴞ\u200C\u200C; â´ð¿£ê¡¨\u05AE.â´ž\u200C\u200C; [C1, P1, V6]; xn--5cb172r175fug38a.xn--0uga051h; ; xn--5cb172r175fug38a.xn--mlj; [P1, V6] # â´ê¡¨Ö®.â´ž
+á‚­ð¿£ê¡¨\u05AE。Ⴞ\u200C\u200C; á‚­ð¿£ê¡¨\u05AE.Ⴞ\u200C\u200C; [C1, V6]; xn--5cb347co96jug15a.xn--2nd059ea; ; xn--5cb347co96jug15a.xn--2nd; [V6] # Ⴍꡨ֮.Ⴞ
+â´ð¿£ê¡¨\u05AE。ⴞ\u200C\u200C; â´ð¿£ê¡¨\u05AE.â´ž\u200C\u200C; [C1, V6]; xn--5cb172r175fug38a.xn--0uga051h; ; xn--5cb172r175fug38a.xn--mlj; [V6] # â´ê¡¨Ö®.â´ž
xn--5cb172r175fug38a.xn--mlj; â´ð¿£ê¡¨\u05AE.â´ž; [V6]; xn--5cb172r175fug38a.xn--mlj; ; ; # â´ê¡¨Ö®.â´ž
xn--5cb172r175fug38a.xn--0uga051h; â´ð¿£ê¡¨\u05AE.â´ž\u200C\u200C; [C1, V6]; xn--5cb172r175fug38a.xn--0uga051h; ; ; # â´ê¡¨Ö®.â´ž
xn--5cb347co96jug15a.xn--2nd; á‚­ð¿£ê¡¨\u05AE.Ⴞ; [V6]; xn--5cb347co96jug15a.xn--2nd; ; ; # Ⴍꡨ֮.Ⴞ
xn--5cb347co96jug15a.xn--2nd059ea; á‚­ð¿£ê¡¨\u05AE.Ⴞ\u200C\u200C; [C1, V6]; xn--5cb347co96jug15a.xn--2nd059ea; ; ; # Ⴍꡨ֮.Ⴞ
-ð‹°ã€‚ó‘“±; ð‹°.ó‘“±; [P1, V6]; xn--k97c.xn--q031e; ; ; # ð‹°.
+ð‹°ã€‚ó‘“±; ð‹°.ó‘“±; [V6]; xn--k97c.xn--q031e; ; ; # ð‹°.
xn--k97c.xn--q031e; ð‹°.ó‘“±; [V6]; xn--k97c.xn--q031e; ; ; # ð‹°.
-󡎦\u17B4\u0B4D.ð¹¾; ; [B1, P1, V6]; xn--9ic364dho91z.xn--2o0d; ; ; # à­.ð¹¾
+󡎦\u17B4\u0B4D.ð¹¾; ; [B1, V6]; xn--9ic364dho91z.xn--2o0d; ; ; # à­.ð¹¾
xn--9ic364dho91z.xn--2o0d; 󡎦\u17B4\u0B4D.ð¹¾; [B1, V6]; xn--9ic364dho91z.xn--2o0d; ; ; # à­.ð¹¾
-\u08DFႫ𶿸귤.ò …¼ðŸ¢íœª\u0AE3; \u08DFႫ𶿸귤.ò …¼0휪\u0AE3; [P1, V5, V6]; xn--i0b601b6r7l2hs0a.xn--0-8le8997mulr5f; ; ; # ࣟႫ귤.0휪ૣ
-\u08DFႫ𶿸귤.ò …¼ðŸ¢á„’ᅱᆹ\u0AE3; \u08DFႫ𶿸귤.ò …¼0휪\u0AE3; [P1, V5, V6]; xn--i0b601b6r7l2hs0a.xn--0-8le8997mulr5f; ; ; # ࣟႫ귤.0휪ૣ
-\u08DFႫ𶿸귤.򠅼0휪\u0AE3; ; [P1, V5, V6]; xn--i0b601b6r7l2hs0a.xn--0-8le8997mulr5f; ; ; # ࣟႫ귤.0휪ૣ
-\u08DFႫ𶿸귤.򠅼0휪\u0AE3; \u08DFႫ𶿸귤.򠅼0휪\u0AE3; [P1, V5, V6]; xn--i0b601b6r7l2hs0a.xn--0-8le8997mulr5f; ; ; # ࣟႫ귤.0휪ૣ
-\u08DFⴋ𶿸귤.򠅼0휪\u0AE3; \u08DFⴋ𶿸귤.򠅼0휪\u0AE3; [P1, V5, V6]; xn--i0b436pkl2g2h42a.xn--0-8le8997mulr5f; ; ; # ࣟⴋ귤.0휪ૣ
-\u08DFⴋ𶿸귤.򠅼0휪\u0AE3; ; [P1, V5, V6]; xn--i0b436pkl2g2h42a.xn--0-8le8997mulr5f; ; ; # ࣟⴋ귤.0휪ૣ
+\u08DFႫ𶿸귤.ò …¼ðŸ¢íœª\u0AE3; \u08DFႫ𶿸귤.ò …¼0휪\u0AE3; [V5, V6]; xn--i0b601b6r7l2hs0a.xn--0-8le8997mulr5f; ; ; # ࣟႫ귤.0휪ૣ
+\u08DFႫ𶿸귤.ò …¼ðŸ¢á„’ᅱᆹ\u0AE3; \u08DFႫ𶿸귤.ò …¼0휪\u0AE3; [V5, V6]; xn--i0b601b6r7l2hs0a.xn--0-8le8997mulr5f; ; ; # ࣟႫ귤.0휪ૣ
+\u08DFႫ𶿸귤.򠅼0휪\u0AE3; ; [V5, V6]; xn--i0b601b6r7l2hs0a.xn--0-8le8997mulr5f; ; ; # ࣟႫ귤.0휪ૣ
+\u08DFႫ𶿸귤.򠅼0휪\u0AE3; \u08DFႫ𶿸귤.򠅼0휪\u0AE3; [V5, V6]; xn--i0b601b6r7l2hs0a.xn--0-8le8997mulr5f; ; ; # ࣟႫ귤.0휪ૣ
+\u08DFⴋ𶿸귤.򠅼0휪\u0AE3; \u08DFⴋ𶿸귤.򠅼0휪\u0AE3; [V5, V6]; xn--i0b436pkl2g2h42a.xn--0-8le8997mulr5f; ; ; # ࣟⴋ귤.0휪ૣ
+\u08DFⴋ𶿸귤.򠅼0휪\u0AE3; ; [V5, V6]; xn--i0b436pkl2g2h42a.xn--0-8le8997mulr5f; ; ; # ࣟⴋ귤.0휪ૣ
xn--i0b436pkl2g2h42a.xn--0-8le8997mulr5f; \u08DFⴋ𶿸귤.򠅼0휪\u0AE3; [V5, V6]; xn--i0b436pkl2g2h42a.xn--0-8le8997mulr5f; ; ; # ࣟⴋ귤.0휪ૣ
xn--i0b601b6r7l2hs0a.xn--0-8le8997mulr5f; \u08DFႫ𶿸귤.򠅼0휪\u0AE3; [V5, V6]; xn--i0b601b6r7l2hs0a.xn--0-8le8997mulr5f; ; ; # ࣟႫ귤.0휪ૣ
-\u08DFⴋ𶿸귤.ò …¼ðŸ¢á„’ᅱᆹ\u0AE3; \u08DFⴋ𶿸귤.ò …¼0휪\u0AE3; [P1, V5, V6]; xn--i0b436pkl2g2h42a.xn--0-8le8997mulr5f; ; ; # ࣟⴋ귤.0휪ૣ
-\u08DFⴋ𶿸귤.ò …¼ðŸ¢íœª\u0AE3; \u08DFⴋ𶿸귤.ò …¼0휪\u0AE3; [P1, V5, V6]; xn--i0b436pkl2g2h42a.xn--0-8le8997mulr5f; ; ; # ࣟⴋ귤.0휪ૣ
-\u0784.ðž¡\u0601; \u0784.ðž¡\u0601; [P1, V6]; xn--lqb.xn--jfb1808v; ; ; # Þ„.ðž¡
-\u0784.ðž¡\u0601; ; [P1, V6]; xn--lqb.xn--jfb1808v; ; ; # Þ„.ðž¡
+\u08DFⴋ𶿸귤.ò …¼ðŸ¢á„’ᅱᆹ\u0AE3; \u08DFⴋ𶿸귤.ò …¼0휪\u0AE3; [V5, V6]; xn--i0b436pkl2g2h42a.xn--0-8le8997mulr5f; ; ; # ࣟⴋ귤.0휪ૣ
+\u08DFⴋ𶿸귤.ò …¼ðŸ¢íœª\u0AE3; \u08DFⴋ𶿸귤.ò …¼0휪\u0AE3; [V5, V6]; xn--i0b436pkl2g2h42a.xn--0-8le8997mulr5f; ; ; # ࣟⴋ귤.0휪ૣ
+\u0784.ðž¡\u0601; \u0784.ðž¡\u0601; [V6]; xn--lqb.xn--jfb1808v; ; ; # Þ„.ðž¡
+\u0784.ðž¡\u0601; ; [V6]; xn--lqb.xn--jfb1808v; ; ; # Þ„.ðž¡
xn--lqb.xn--jfb1808v; \u0784.ðž¡\u0601; [V6]; xn--lqb.xn--jfb1808v; ; ; # Þ„.ðž¡
\u0ACD₃.8\uA8C4\u200D🃤; \u0ACD3.8\uA8C4\u200D🃤; [V5]; xn--3-yke.xn--8-ugnv982dbkwm; ; xn--3-yke.xn--8-sl4et308f; # à«3.8꣄🃤
\u0ACD3.8\uA8C4\u200D🃤; ; [V5]; xn--3-yke.xn--8-ugnv982dbkwm; ; xn--3-yke.xn--8-sl4et308f; # à«3.8꣄🃤
@@ -3319,19 +3333,19 @@ FAXâ©·ð††.𞤠; faxâ©·ð††.𞥂; [B6]; xn--fax-4c9a1676t.xn--6e6h; ; ; # faxâ©
Faxâ©·ð††.𞤠; faxâ©·ð††.𞥂; [B6]; xn--fax-4c9a1676t.xn--6e6h; ; ; # faxâ©·ð††.𞥂
FAXâ©·ð††.𞥂; faxâ©·ð††.𞥂; [B6]; xn--fax-4c9a1676t.xn--6e6h; ; ; # faxâ©·ð††.𞥂
Faxâ©·ð††.𞥂; faxâ©·ð††.𞥂; [B6]; xn--fax-4c9a1676t.xn--6e6h; ; ; # faxâ©·ð††.𞥂
-ꡕ≠\u105E󮿱。ðµ§ó „«\uFFA0; ꡕ≠\u105E󮿱.ðµ§\uFFA0; [B2, B3, P1, V6]; xn--cld333gn31h0158l.xn--cl7c96v; ; ; # ꡕ≠áž.
-ê¡•=\u0338\u105E󮿱。ðµ§ó „«\uFFA0; ꡕ≠\u105E󮿱.ðµ§\uFFA0; [B2, B3, P1, V6]; xn--cld333gn31h0158l.xn--cl7c96v; ; ; # ꡕ≠áž.
-ꡕ≠\u105E󮿱。ðµ§ó „«\u1160; ꡕ≠\u105E󮿱.ðµ§\u1160; [B2, B3, P1, V6]; xn--cld333gn31h0158l.xn--psd1510k; ; ; # ꡕ≠áž.
-ê¡•=\u0338\u105E󮿱。ðµ§ó „«\u1160; ꡕ≠\u105E󮿱.ðµ§\u1160; [B2, B3, P1, V6]; xn--cld333gn31h0158l.xn--psd1510k; ; ; # ꡕ≠áž.
+ꡕ≠\u105E󮿱。ðµ§ó „«\uFFA0; ꡕ≠\u105E󮿱.ðµ§\uFFA0; [B2, B3, V6]; xn--cld333gn31h0158l.xn--cl7c96v; ; ; # ꡕ≠áž.
+ê¡•=\u0338\u105E󮿱。ðµ§ó „«\uFFA0; ꡕ≠\u105E󮿱.ðµ§\uFFA0; [B2, B3, V6]; xn--cld333gn31h0158l.xn--cl7c96v; ; ; # ꡕ≠áž.
+ꡕ≠\u105E󮿱。ðµ§ó „«\u1160; ꡕ≠\u105E󮿱.ðµ§\u1160; [B2, B3, V6]; xn--cld333gn31h0158l.xn--psd1510k; ; ; # ꡕ≠áž.
+ê¡•=\u0338\u105E󮿱。ðµ§ó „«\u1160; ꡕ≠\u105E󮿱.ðµ§\u1160; [B2, B3, V6]; xn--cld333gn31h0158l.xn--psd1510k; ; ; # ꡕ≠áž.
xn--cld333gn31h0158l.xn--psd1510k; ꡕ≠\u105E󮿱.ðµ§\u1160; [B2, B3, V6]; xn--cld333gn31h0158l.xn--psd1510k; ; ; # ꡕ≠áž.
xn--cld333gn31h0158l.xn--cl7c96v; ꡕ≠\u105E󮿱.ðµ§\uFFA0; [B2, B3, V6]; xn--cld333gn31h0158l.xn--cl7c96v; ; ; # ꡕ≠áž.
鱊。\u200C; 鱊.\u200C; [C1]; xn--rt6a.xn--0ug; ; xn--rt6a.; [] # 鱊.
xn--rt6a.; 鱊.; ; xn--rt6a.; ; ; # 鱊.
鱊.; ; ; xn--rt6a.; ; ; # 鱊.
xn--rt6a.xn--0ug; 鱊.\u200C; [C1]; xn--rt6a.xn--0ug; ; ; # 鱊.
-8ð¹£ï¼Žð‘¨; 8ð¹£.ð‘¨; [B1, B3, B6, V5]; xn--8-d26i.xn--0p1d; ; ; # 8ð¹£.ð‘¨
-8ð¹£.ð‘¨; ; [B1, B3, B6, V5]; xn--8-d26i.xn--0p1d; ; ; # 8ð¹£.ð‘¨
-xn--8-d26i.xn--0p1d; 8ð¹£.ð‘¨; [B1, B3, B6, V5]; xn--8-d26i.xn--0p1d; ; ; # 8ð¹£.ð‘¨
+8ð¹£ï¼Žð‘¨; 8ð¹£.ð‘¨; [B1, V5]; xn--8-d26i.xn--0p1d; ; ; # 8ð¹£.ð‘¨
+8ð¹£.ð‘¨; ; [B1, V5]; xn--8-d26i.xn--0p1d; ; ; # 8ð¹£.ð‘¨
+xn--8-d26i.xn--0p1d; 8ð¹£.ð‘¨; [B1, V5]; xn--8-d26i.xn--0p1d; ; ; # 8ð¹£.ð‘¨
â¹ð§€ï¼Žð«¯; â¹ð§€.ð«¯; [B1]; xn--qoh9161g.xn--1x9c; ; ; # â¹ð§€.ð«¯
â¹ð§€.ð«¯; ; [B1]; xn--qoh9161g.xn--1x9c; ; ; # â¹ð§€.ð«¯
xn--qoh9161g.xn--1x9c; â¹ð§€.ð«¯; [B1]; xn--qoh9161g.xn--1x9c; ; ; # â¹ð§€.ð«¯
@@ -3343,79 +3357,79 @@ xn--4-0bd15808a.; 𞤺\u07CC4.; ; xn--4-0bd15808a.; ; ; # 𞤺ߌ4.
𞤘\u07CC4.; 𞤺\u07CC4.; ; xn--4-0bd15808a.; ; ; # 𞤺ߌ4.
xn--4-0bd15808a.xn--1ug; 𞤺\u07CC4.\u200D; [B1, C2]; xn--4-0bd15808a.xn--1ug; ; ; # 𞤺ߌ4.
𞤘\u07CC4.\u200D; 𞤺\u07CC4.\u200D; [B1, C2]; xn--4-0bd15808a.xn--1ug; ; xn--4-0bd15808a.; [] # 𞤺ߌ4.
-â’—\u0981\u20EF-.\u08E2•; ; [B1, P1, V3, V6]; xn----z0d801p6kd.xn--l0b810j; ; ; # â’—à¦âƒ¯-.•
-16.\u0981\u20EF-.\u08E2•; ; [B1, P1, V3, V5, V6]; 16.xn----z0d801p.xn--l0b810j; ; ; # 16.à¦âƒ¯-.•
+â’—\u0981\u20EF-.\u08E2•; ; [B1, V3, V6]; xn----z0d801p6kd.xn--l0b810j; ; ; # â’—à¦âƒ¯-.•
+16.\u0981\u20EF-.\u08E2•; ; [B1, V3, V5, V6]; 16.xn----z0d801p.xn--l0b810j; ; ; # 16.à¦âƒ¯-.•
16.xn----z0d801p.xn--l0b810j; 16.\u0981\u20EF-.\u08E2•; [B1, V3, V5, V6]; 16.xn----z0d801p.xn--l0b810j; ; ; # 16.à¦âƒ¯-.•
xn----z0d801p6kd.xn--l0b810j; â’—\u0981\u20EF-.\u08E2•; [B1, V3, V6]; xn----z0d801p6kd.xn--l0b810j; ; ; # â’—à¦âƒ¯-.•
-。ä›; -.ä›; [V3]; -.xn--xco; ; ; # -.ä›
-。ä›; -.ä›; [V3]; -.xn--xco; ; ; # -.ä›
-.xn--xco; -.ä›; [V3]; -.xn--xco; ; ; # -.ä›
-\u200C񒃠.\u200D; \u200C񒃠.\u200D; [C1, C2, P1, V6]; xn--0ugz7551c.xn--1ug; ; xn--dj8y.; [P1, V6] # .
-\u200Cñ’ƒ .\u200D; ; [C1, C2, P1, V6]; xn--0ugz7551c.xn--1ug; ; xn--dj8y.; [P1, V6] # .
+\u200C񒃠.\u200D; \u200C񒃠.\u200D; [C1, C2, V6]; xn--0ugz7551c.xn--1ug; ; xn--dj8y.; [V6] # .
+\u200Cñ’ƒ .\u200D; ; [C1, C2, V6]; xn--0ugz7551c.xn--1ug; ; xn--dj8y.; [V6] # .
xn--dj8y.; ñ’ƒ .; [V6]; xn--dj8y.; ; ; # .
xn--0ugz7551c.xn--1ug; \u200Cñ’ƒ .\u200D; [C1, C2, V6]; xn--0ugz7551c.xn--1ug; ; ; # .
-⒈⓰󥣇。ð¹ \u200Dò—·¦á‚µ; ⒈⓰󥣇.ð¹ \u200Dò—·¦á‚µ; [B1, C2, P1, V6]; xn--tsh0nz9380h.xn--tnd969erj4psgl3e; ; xn--tsh0nz9380h.xn--tnd1990ke579c; [B1, P1, V6] # ⒈⓰.ð¹ á‚µ
-1.⓰󥣇。ð¹ \u200Dò—·¦á‚µ; 1.⓰󥣇.ð¹ \u200Dò—·¦á‚µ; [B1, C2, P1, V6]; 1.xn--svh00804k.xn--tnd969erj4psgl3e; ; 1.xn--svh00804k.xn--tnd1990ke579c; [B1, P1, V6] # 1.â“°.ð¹ á‚µ
-1.⓰󥣇。ð¹ \u200Dò—·¦â´•; 1.⓰󥣇.ð¹ \u200Dò—·¦â´•; [B1, C2, P1, V6]; 1.xn--svh00804k.xn--1ug352csp0psg45e; ; 1.xn--svh00804k.xn--dljv223ee5t2d; [B1, P1, V6] # 1.â“°.ð¹ â´•
+⒈⓰󥣇。ð¹ \u200Dò—·¦á‚µ; ⒈⓰󥣇.ð¹ \u200Dò—·¦á‚µ; [B1, C2, V6]; xn--tsh0nz9380h.xn--tnd969erj4psgl3e; ; xn--tsh0nz9380h.xn--tnd1990ke579c; [B1, V6] # ⒈⓰.ð¹ á‚µ
+1.⓰󥣇。ð¹ \u200Dò—·¦á‚µ; 1.⓰󥣇.ð¹ \u200Dò—·¦á‚µ; [B1, C2, V6]; 1.xn--svh00804k.xn--tnd969erj4psgl3e; ; 1.xn--svh00804k.xn--tnd1990ke579c; [B1, V6] # 1.â“°.ð¹ á‚µ
+1.⓰󥣇。ð¹ \u200Dò—·¦â´•; 1.⓰󥣇.ð¹ \u200Dò—·¦â´•; [B1, C2, V6]; 1.xn--svh00804k.xn--1ug352csp0psg45e; ; 1.xn--svh00804k.xn--dljv223ee5t2d; [B1, V6] # 1.â“°.ð¹ â´•
1.xn--svh00804k.xn--dljv223ee5t2d; 1.⓰󥣇.ð¹ ò—·¦â´•; [B1, V6]; 1.xn--svh00804k.xn--dljv223ee5t2d; ; ; # 1.â“°.ð¹ â´•
1.xn--svh00804k.xn--1ug352csp0psg45e; 1.⓰󥣇.ð¹ \u200Dò—·¦â´•; [B1, C2, V6]; 1.xn--svh00804k.xn--1ug352csp0psg45e; ; ; # 1.â“°.ð¹ â´•
1.xn--svh00804k.xn--tnd1990ke579c; 1.⓰󥣇.ð¹ ò—·¦á‚µ; [B1, V6]; 1.xn--svh00804k.xn--tnd1990ke579c; ; ; # 1.â“°.ð¹ á‚µ
1.xn--svh00804k.xn--tnd969erj4psgl3e; 1.⓰󥣇.ð¹ \u200Dò—·¦á‚µ; [B1, C2, V6]; 1.xn--svh00804k.xn--tnd969erj4psgl3e; ; ; # 1.â“°.ð¹ á‚µ
-⒈⓰󥣇。ð¹ \u200Dò—·¦â´•; ⒈⓰󥣇.ð¹ \u200Dò—·¦â´•; [B1, C2, P1, V6]; xn--tsh0nz9380h.xn--1ug352csp0psg45e; ; xn--tsh0nz9380h.xn--dljv223ee5t2d; [B1, P1, V6] # ⒈⓰.ð¹ â´•
+⒈⓰󥣇。ð¹ \u200Dò—·¦â´•; ⒈⓰󥣇.ð¹ \u200Dò—·¦â´•; [B1, C2, V6]; xn--tsh0nz9380h.xn--1ug352csp0psg45e; ; xn--tsh0nz9380h.xn--dljv223ee5t2d; [B1, V6] # ⒈⓰.ð¹ â´•
xn--tsh0nz9380h.xn--dljv223ee5t2d; ⒈⓰󥣇.ð¹ ò—·¦â´•; [B1, V6]; xn--tsh0nz9380h.xn--dljv223ee5t2d; ; ; # ⒈⓰.ð¹ â´•
xn--tsh0nz9380h.xn--1ug352csp0psg45e; ⒈⓰󥣇.ð¹ \u200Dò—·¦â´•; [B1, C2, V6]; xn--tsh0nz9380h.xn--1ug352csp0psg45e; ; ; # ⒈⓰.ð¹ â´•
xn--tsh0nz9380h.xn--tnd1990ke579c; ⒈⓰󥣇.ð¹ ò—·¦á‚µ; [B1, V6]; xn--tsh0nz9380h.xn--tnd1990ke579c; ; ; # ⒈⓰.ð¹ á‚µ
xn--tsh0nz9380h.xn--tnd969erj4psgl3e; ⒈⓰󥣇.ð¹ \u200Dò—·¦á‚µ; [B1, C2, V6]; xn--tsh0nz9380h.xn--tnd969erj4psgl3e; ; ; # ⒈⓰.ð¹ á‚µ
-ðž Šá ®-ß。\u1CD0効\u0601ð·£­; ðž Šá ®-ß.\u1CD0効\u0601ð·£­; [B1, B2, B3, P1, V5, V6]; xn----qfa310pg973b.xn--jfb197i791bi6x4c; ; xn---ss-21t18904a.xn--jfb197i791bi6x4c; # ðž Šá ®-ß.á³åŠ¹
-ðž Šá ®-ß。\u1CD0効\u0601ð·£­; ðž Šá ®-ß.\u1CD0効\u0601ð·£­; [B1, B2, B3, P1, V5, V6]; xn----qfa310pg973b.xn--jfb197i791bi6x4c; ; xn---ss-21t18904a.xn--jfb197i791bi6x4c; # ðž Šá ®-ß.á³åŠ¹
-ðž Šá ®-SS。\u1CD0効\u0601ð·£­; ðž Šá ®-ss.\u1CD0効\u0601ð·£­; [B1, B2, B3, P1, V5, V6]; xn---ss-21t18904a.xn--jfb197i791bi6x4c; ; ; # ðž Šá ®-ss.á³åŠ¹
-ðž Šá ®-ss。\u1CD0効\u0601ð·£­; ðž Šá ®-ss.\u1CD0効\u0601ð·£­; [B1, B2, B3, P1, V5, V6]; xn---ss-21t18904a.xn--jfb197i791bi6x4c; ; ; # ðž Šá ®-ss.á³åŠ¹
-ðž Šá ®-Ss。\u1CD0効\u0601ð·£­; ðž Šá ®-ss.\u1CD0効\u0601ð·£­; [B1, B2, B3, P1, V5, V6]; xn---ss-21t18904a.xn--jfb197i791bi6x4c; ; ; # ðž Šá ®-ss.á³åŠ¹
+ðž Šá ®-ß。\u1CD0効\u0601ð·£­; ðž Šá ®-ß.\u1CD0効\u0601ð·£­; [B1, B2, B3, V5, V6]; xn----qfa310pg973b.xn--jfb197i791bi6x4c; ; xn---ss-21t18904a.xn--jfb197i791bi6x4c; # ðž Šá ®-ß.á³åŠ¹
+ðž Šá ®-ß。\u1CD0効\u0601ð·£­; ðž Šá ®-ß.\u1CD0効\u0601ð·£­; [B1, B2, B3, V5, V6]; xn----qfa310pg973b.xn--jfb197i791bi6x4c; ; xn---ss-21t18904a.xn--jfb197i791bi6x4c; # ðž Šá ®-ß.á³åŠ¹
+ðž Šá ®-SS。\u1CD0効\u0601ð·£­; ðž Šá ®-ss.\u1CD0効\u0601ð·£­; [B1, B2, B3, V5, V6]; xn---ss-21t18904a.xn--jfb197i791bi6x4c; ; ; # ðž Šá ®-ss.á³åŠ¹
+ðž Šá ®-ss。\u1CD0効\u0601ð·£­; ðž Šá ®-ss.\u1CD0効\u0601ð·£­; [B1, B2, B3, V5, V6]; xn---ss-21t18904a.xn--jfb197i791bi6x4c; ; ; # ðž Šá ®-ss.á³åŠ¹
+ðž Šá ®-Ss。\u1CD0効\u0601ð·£­; ðž Šá ®-ss.\u1CD0効\u0601ð·£­; [B1, B2, B3, V5, V6]; xn---ss-21t18904a.xn--jfb197i791bi6x4c; ; ; # ðž Šá ®-ss.á³åŠ¹
xn---ss-21t18904a.xn--jfb197i791bi6x4c; ðž Šá ®-ss.\u1CD0効\u0601ð·£­; [B1, B2, B3, V5, V6]; xn---ss-21t18904a.xn--jfb197i791bi6x4c; ; ; # ðž Šá ®-ss.á³åŠ¹
xn----qfa310pg973b.xn--jfb197i791bi6x4c; ðž Šá ®-ß.\u1CD0効\u0601ð·£­; [B1, B2, B3, V5, V6]; xn----qfa310pg973b.xn--jfb197i791bi6x4c; ; ; # ðž Šá ®-ß.á³åŠ¹
-ðž Šá ®-SS。\u1CD0効\u0601ð·£­; ðž Šá ®-ss.\u1CD0効\u0601ð·£­; [B1, B2, B3, P1, V5, V6]; xn---ss-21t18904a.xn--jfb197i791bi6x4c; ; ; # ðž Šá ®-ss.á³åŠ¹
-ðž Šá ®-ss。\u1CD0効\u0601ð·£­; ðž Šá ®-ss.\u1CD0効\u0601ð·£­; [B1, B2, B3, P1, V5, V6]; xn---ss-21t18904a.xn--jfb197i791bi6x4c; ; ; # ðž Šá ®-ss.á³åŠ¹
-ðž Šá ®-Ss。\u1CD0効\u0601ð·£­; ðž Šá ®-ss.\u1CD0効\u0601ð·£­; [B1, B2, B3, P1, V5, V6]; xn---ss-21t18904a.xn--jfb197i791bi6x4c; ; ; # ðž Šá ®-ss.á³åŠ¹
-𑇀.󠨱; ; [P1, V5, V6]; xn--wd1d.xn--k946e; ; ; # 𑇀.
+ðž Šá ®-SS。\u1CD0効\u0601ð·£­; ðž Šá ®-ss.\u1CD0効\u0601ð·£­; [B1, B2, B3, V5, V6]; xn---ss-21t18904a.xn--jfb197i791bi6x4c; ; ; # ðž Šá ®-ss.á³åŠ¹
+ðž Šá ®-ss。\u1CD0効\u0601ð·£­; ðž Šá ®-ss.\u1CD0効\u0601ð·£­; [B1, B2, B3, V5, V6]; xn---ss-21t18904a.xn--jfb197i791bi6x4c; ; ; # ðž Šá ®-ss.á³åŠ¹
+ðž Šá ®-Ss。\u1CD0効\u0601ð·£­; ðž Šá ®-ss.\u1CD0効\u0601ð·£­; [B1, B2, B3, V5, V6]; xn---ss-21t18904a.xn--jfb197i791bi6x4c; ; ; # ðž Šá ®-ss.á³åŠ¹
+𑇀.󠨱; ; [V5, V6]; xn--wd1d.xn--k946e; ; ; # 𑇀.
xn--wd1d.xn--k946e; 𑇀.󠨱; [V5, V6]; xn--wd1d.xn--k946e; ; ; # 𑇀.
-â’3\uFB88。ðŸ˜ð¨¿ð¹†; â’3\u0688.0ð¨¿ð¹†; [B1, P1, V6]; xn--3-jsc897t.xn--0-sc5iy3h; ; ; # â’3Úˆ.0ð¨¿
-â’3\u0688。0ð¨¿ð¹†; â’3\u0688.0ð¨¿ð¹†; [B1, P1, V6]; xn--3-jsc897t.xn--0-sc5iy3h; ; ; # â’3Úˆ.0ð¨¿
+â’3\uFB88。ðŸ˜ð¨¿ð¹†; â’3\u0688.0ð¨¿ð¹†; [B1, V6]; xn--3-jsc897t.xn--0-sc5iy3h; ; ; # â’3Úˆ.0ð¨¿
+â’3\u0688。0ð¨¿ð¹†; â’3\u0688.0ð¨¿ð¹†; [B1, V6]; xn--3-jsc897t.xn--0-sc5iy3h; ; ; # â’3Úˆ.0ð¨¿
xn--3-jsc897t.xn--0-sc5iy3h; â’3\u0688.0ð¨¿ð¹†; [B1, V6]; xn--3-jsc897t.xn--0-sc5iy3h; ; ; # â’3Úˆ.0ð¨¿
-\u076Bï¼–\u0A81\u08A6。\u1DE3; \u076B6\u0A81\u08A6.\u1DE3; [B1, B3, B6, V5]; xn--6-h5c06gj6c.xn--7eg; ; ; # Ý«6àªà¢¦.á·£
-\u076B6\u0A81\u08A6。\u1DE3; \u076B6\u0A81\u08A6.\u1DE3; [B1, B3, B6, V5]; xn--6-h5c06gj6c.xn--7eg; ; ; # Ý«6àªà¢¦.á·£
-xn--6-h5c06gj6c.xn--7eg; \u076B6\u0A81\u08A6.\u1DE3; [B1, B3, B6, V5]; xn--6-h5c06gj6c.xn--7eg; ; ; # Ý«6àªà¢¦.á·£
-\u0605-𽤞Ⴂ。򅤶\u200D; \u0605-𽤞Ⴂ.򅤶\u200D; [B1, B6, C2, P1, V6]; xn----0kc662fc152h.xn--1ugy3204f; ; xn----0kc662fc152h.xn--ss06b; [B1, P1, V6] # -Ⴂ.
-\u0605-𽤞ⴂ。򅤶\u200D; \u0605-𽤞ⴂ.򅤶\u200D; [B1, B6, C2, P1, V6]; xn----0kc8501a5399e.xn--1ugy3204f; ; xn----0kc8501a5399e.xn--ss06b; [B1, P1, V6] # -ⴂ.
+\u076Bï¼–\u0A81\u08A6。\u1DE3; \u076B6\u0A81\u08A6.\u1DE3; [B1, V5]; xn--6-h5c06gj6c.xn--7eg; ; ; # Ý«6àªà¢¦.á·£
+\u076B6\u0A81\u08A6。\u1DE3; \u076B6\u0A81\u08A6.\u1DE3; [B1, V5]; xn--6-h5c06gj6c.xn--7eg; ; ; # Ý«6àªà¢¦.á·£
+xn--6-h5c06gj6c.xn--7eg; \u076B6\u0A81\u08A6.\u1DE3; [B1, V5]; xn--6-h5c06gj6c.xn--7eg; ; ; # Ý«6àªà¢¦.á·£
+\u0605-𽤞Ⴂ。򅤶\u200D; \u0605-𽤞Ⴂ.򅤶\u200D; [B1, B6, C2, V6]; xn----0kc662fc152h.xn--1ugy3204f; ; xn----0kc662fc152h.xn--ss06b; [B1, V6] # -Ⴂ.
+\u0605-𽤞ⴂ。򅤶\u200D; \u0605-𽤞ⴂ.򅤶\u200D; [B1, B6, C2, V6]; xn----0kc8501a5399e.xn--1ugy3204f; ; xn----0kc8501a5399e.xn--ss06b; [B1, V6] # -ⴂ.
xn----0kc8501a5399e.xn--ss06b; \u0605-𽤞ⴂ.򅤶; [B1, V6]; xn----0kc8501a5399e.xn--ss06b; ; ; # -ⴂ.
xn----0kc8501a5399e.xn--1ugy3204f; \u0605-𽤞ⴂ.򅤶\u200D; [B1, B6, C2, V6]; xn----0kc8501a5399e.xn--1ugy3204f; ; ; # -ⴂ.
xn----0kc662fc152h.xn--ss06b; \u0605-𽤞Ⴂ.򅤶; [B1, V6]; xn----0kc662fc152h.xn--ss06b; ; ; # -Ⴂ.
xn----0kc662fc152h.xn--1ugy3204f; \u0605-𽤞Ⴂ.򅤶\u200D; [B1, B6, C2, V6]; xn----0kc662fc152h.xn--1ugy3204f; ; ; # -Ⴂ.
-⾆.ꡈ5≯ß; 舌.ꡈ5≯ß; [P1, V6]; xn--tc1a.xn--5-qfa988w745i; ; xn--tc1a.xn--5ss-3m2a5009e; # 舌.ꡈ5≯ß
-⾆.ꡈ5>\u0338ß; 舌.ꡈ5≯ß; [P1, V6]; xn--tc1a.xn--5-qfa988w745i; ; xn--tc1a.xn--5ss-3m2a5009e; # 舌.ꡈ5≯ß
-舌.ꡈ5≯ß; ; [P1, V6]; xn--tc1a.xn--5-qfa988w745i; ; xn--tc1a.xn--5ss-3m2a5009e; # 舌.ꡈ5≯ß
-舌.ꡈ5>\u0338ß; 舌.ꡈ5≯ß; [P1, V6]; xn--tc1a.xn--5-qfa988w745i; ; xn--tc1a.xn--5ss-3m2a5009e; # 舌.ꡈ5≯ß
-舌.ꡈ5>\u0338SS; 舌.ꡈ5≯ss; [P1, V6]; xn--tc1a.xn--5ss-3m2a5009e; ; ; # 舌.ꡈ5≯ss
-舌.ꡈ5≯SS; 舌.ꡈ5≯ss; [P1, V6]; xn--tc1a.xn--5ss-3m2a5009e; ; ; # 舌.ꡈ5≯ss
-舌.ꡈ5≯ss; ; [P1, V6]; xn--tc1a.xn--5ss-3m2a5009e; ; ; # 舌.ꡈ5≯ss
-舌.ꡈ5>\u0338ss; 舌.ꡈ5≯ss; [P1, V6]; xn--tc1a.xn--5ss-3m2a5009e; ; ; # 舌.ꡈ5≯ss
-舌.ꡈ5>\u0338Ss; 舌.ꡈ5≯ss; [P1, V6]; xn--tc1a.xn--5ss-3m2a5009e; ; ; # 舌.ꡈ5≯ss
-舌.ꡈ5≯Ss; 舌.ꡈ5≯ss; [P1, V6]; xn--tc1a.xn--5ss-3m2a5009e; ; ; # 舌.ꡈ5≯ss
-xn--tc1a.xn--5ss-3m2a5009e; 舌.ꡈ5≯ss; [V6]; xn--tc1a.xn--5ss-3m2a5009e; ; ; # 舌.ꡈ5≯ss
-xn--tc1a.xn--5-qfa988w745i; 舌.ꡈ5≯ß; [V6]; xn--tc1a.xn--5-qfa988w745i; ; ; # 舌.ꡈ5≯ß
-⾆.ꡈ5>\u0338SS; 舌.ꡈ5≯ss; [P1, V6]; xn--tc1a.xn--5ss-3m2a5009e; ; ; # 舌.ꡈ5≯ss
-⾆.ꡈ5≯SS; 舌.ꡈ5≯ss; [P1, V6]; xn--tc1a.xn--5ss-3m2a5009e; ; ; # 舌.ꡈ5≯ss
-⾆.ꡈ5≯ss; 舌.ꡈ5≯ss; [P1, V6]; xn--tc1a.xn--5ss-3m2a5009e; ; ; # 舌.ꡈ5≯ss
-⾆.ꡈ5>\u0338ss; 舌.ꡈ5≯ss; [P1, V6]; xn--tc1a.xn--5ss-3m2a5009e; ; ; # 舌.ꡈ5≯ss
-⾆.ꡈ5>\u0338Ss; 舌.ꡈ5≯ss; [P1, V6]; xn--tc1a.xn--5ss-3m2a5009e; ; ; # 舌.ꡈ5≯ss
-⾆.ꡈ5≯Ss; 舌.ꡈ5≯ss; [P1, V6]; xn--tc1a.xn--5ss-3m2a5009e; ; ; # 舌.ꡈ5≯ss
-\u0ACD8\u200D.ò¾‚ˆ\u075C; \u0ACD8\u200D.ò¾‚ˆ\u075C; [B1, B5, B6, C2, P1, V5, V6]; xn--8-yke534n.xn--gpb79046m; ; xn--8-yke.xn--gpb79046m; [B1, B5, B6, P1, V5, V6] # à«8.Ýœ
-\u0ACD8\u200D.ò¾‚ˆ\u075C; ; [B1, B5, B6, C2, P1, V5, V6]; xn--8-yke534n.xn--gpb79046m; ; xn--8-yke.xn--gpb79046m; [B1, B5, B6, P1, V5, V6] # à«8.Ýœ
+⾆.ꡈ5≯ß; 舌.ꡈ5≯ß; ; xn--tc1a.xn--5-qfa988w745i; ; xn--tc1a.xn--5ss-3m2a5009e; # 舌.ꡈ5≯ß
+⾆.ꡈ5>\u0338ß; 舌.ꡈ5≯ß; ; xn--tc1a.xn--5-qfa988w745i; ; xn--tc1a.xn--5ss-3m2a5009e; # 舌.ꡈ5≯ß
+舌.ꡈ5≯ß; ; ; xn--tc1a.xn--5-qfa988w745i; ; xn--tc1a.xn--5ss-3m2a5009e; # 舌.ꡈ5≯ß
+舌.ꡈ5>\u0338ß; 舌.ꡈ5≯ß; ; xn--tc1a.xn--5-qfa988w745i; ; xn--tc1a.xn--5ss-3m2a5009e; # 舌.ꡈ5≯ß
+舌.ꡈ5>\u0338SS; 舌.ꡈ5≯ss; ; xn--tc1a.xn--5ss-3m2a5009e; ; ; # 舌.ꡈ5≯ss
+舌.ꡈ5≯SS; 舌.ꡈ5≯ss; ; xn--tc1a.xn--5ss-3m2a5009e; ; ; # 舌.ꡈ5≯ss
+舌.ꡈ5≯ss; ; ; xn--tc1a.xn--5ss-3m2a5009e; ; ; # 舌.ꡈ5≯ss
+舌.ꡈ5>\u0338ss; 舌.ꡈ5≯ss; ; xn--tc1a.xn--5ss-3m2a5009e; ; ; # 舌.ꡈ5≯ss
+舌.ꡈ5>\u0338Ss; 舌.ꡈ5≯ss; ; xn--tc1a.xn--5ss-3m2a5009e; ; ; # 舌.ꡈ5≯ss
+舌.ꡈ5≯Ss; 舌.ꡈ5≯ss; ; xn--tc1a.xn--5ss-3m2a5009e; ; ; # 舌.ꡈ5≯ss
+xn--tc1a.xn--5ss-3m2a5009e; 舌.ꡈ5≯ss; ; xn--tc1a.xn--5ss-3m2a5009e; ; ; # 舌.ꡈ5≯ss
+xn--tc1a.xn--5-qfa988w745i; 舌.ꡈ5≯ß; ; xn--tc1a.xn--5-qfa988w745i; ; ; # 舌.ꡈ5≯ß
+⾆.ꡈ5>\u0338SS; 舌.ꡈ5≯ss; ; xn--tc1a.xn--5ss-3m2a5009e; ; ; # 舌.ꡈ5≯ss
+⾆.ꡈ5≯SS; 舌.ꡈ5≯ss; ; xn--tc1a.xn--5ss-3m2a5009e; ; ; # 舌.ꡈ5≯ss
+⾆.ꡈ5≯ss; 舌.ꡈ5≯ss; ; xn--tc1a.xn--5ss-3m2a5009e; ; ; # 舌.ꡈ5≯ss
+⾆.ꡈ5>\u0338ss; 舌.ꡈ5≯ss; ; xn--tc1a.xn--5ss-3m2a5009e; ; ; # 舌.ꡈ5≯ss
+⾆.ꡈ5>\u0338Ss; 舌.ꡈ5≯ss; ; xn--tc1a.xn--5ss-3m2a5009e; ; ; # 舌.ꡈ5≯ss
+⾆.ꡈ5≯Ss; 舌.ꡈ5≯ss; ; xn--tc1a.xn--5ss-3m2a5009e; ; ; # 舌.ꡈ5≯ss
+\u0ACD8\u200D.ò¾‚ˆ\u075C; \u0ACD8\u200D.ò¾‚ˆ\u075C; [B1, B5, B6, C2, V5, V6]; xn--8-yke534n.xn--gpb79046m; ; xn--8-yke.xn--gpb79046m; [B1, B5, B6, V5, V6] # à«8.Ýœ
+\u0ACD8\u200D.ò¾‚ˆ\u075C; ; [B1, B5, B6, C2, V5, V6]; xn--8-yke534n.xn--gpb79046m; ; xn--8-yke.xn--gpb79046m; [B1, B5, B6, V5, V6] # à«8.Ýœ
xn--8-yke.xn--gpb79046m; \u0ACD8.ò¾‚ˆ\u075C; [B1, B5, B6, V5, V6]; xn--8-yke.xn--gpb79046m; ; ; # à«8.Ýœ
xn--8-yke534n.xn--gpb79046m; \u0ACD8\u200D.ò¾‚ˆ\u075C; [B1, B5, B6, C2, V5, V6]; xn--8-yke534n.xn--gpb79046m; ; ; # à«8.Ýœ
-ò¸·†\u0A70≮ò¹“™ï¼ŽñžŽ§â·ó ¯™\u06B6; ò¸·†\u0A70≮ò¹“™.ñžŽ§7󠯙\u06B6; [B5, B6, P1, V6]; xn--ycc893jqh38rb6fa.xn--7-5uc53836ixt41c; ; ; # ੰ≮.7Ú¶
-ò¸·†\u0A70<\u0338ò¹“™ï¼ŽñžŽ§â·ó ¯™\u06B6; ò¸·†\u0A70≮ò¹“™.ñžŽ§7󠯙\u06B6; [B5, B6, P1, V6]; xn--ycc893jqh38rb6fa.xn--7-5uc53836ixt41c; ; ; # ੰ≮.7Ú¶
-򸷆\u0A70≮򹓙.񞎧7󠯙\u06B6; ; [B5, B6, P1, V6]; xn--ycc893jqh38rb6fa.xn--7-5uc53836ixt41c; ; ; # ੰ≮.7ڶ
-򸷆\u0A70<\u0338򹓙.񞎧7󠯙\u06B6; 򸷆\u0A70≮򹓙.񞎧7󠯙\u06B6; [B5, B6, P1, V6]; xn--ycc893jqh38rb6fa.xn--7-5uc53836ixt41c; ; ; # ੰ≮.7ڶ
+ò¸·†\u0A70≮ò¹“™ï¼ŽñžŽ§â·ó ¯™\u06B6; ò¸·†\u0A70≮ò¹“™.ñžŽ§7󠯙\u06B6; [B5, B6, V6]; xn--ycc893jqh38rb6fa.xn--7-5uc53836ixt41c; ; ; # ੰ≮.7Ú¶
+ò¸·†\u0A70<\u0338ò¹“™ï¼ŽñžŽ§â·ó ¯™\u06B6; ò¸·†\u0A70≮ò¹“™.ñžŽ§7󠯙\u06B6; [B5, B6, V6]; xn--ycc893jqh38rb6fa.xn--7-5uc53836ixt41c; ; ; # ੰ≮.7Ú¶
+򸷆\u0A70≮򹓙.񞎧7󠯙\u06B6; ; [B5, B6, V6]; xn--ycc893jqh38rb6fa.xn--7-5uc53836ixt41c; ; ; # ੰ≮.7ڶ
+򸷆\u0A70<\u0338򹓙.񞎧7󠯙\u06B6; 򸷆\u0A70≮򹓙.񞎧7󠯙\u06B6; [B5, B6, V6]; xn--ycc893jqh38rb6fa.xn--7-5uc53836ixt41c; ; ; # ੰ≮.7ڶ
xn--ycc893jqh38rb6fa.xn--7-5uc53836ixt41c; 򸷆\u0A70≮򹓙.񞎧7󠯙\u06B6; [B5, B6, V6]; xn--ycc893jqh38rb6fa.xn--7-5uc53836ixt41c; ; ; # ੰ≮.7ڶ
𞤪.ς; ; ; xn--ie6h.xn--3xa; ; xn--ie6h.xn--4xa; # 𞤪.ς
𞤈.Σ; 𞤪.σ; ; xn--ie6h.xn--4xa; ; ; # 𞤪.σ
@@ -3425,26 +3439,26 @@ xn--ie6h.xn--4xa; 𞤪.σ; ; xn--ie6h.xn--4xa; ; ; # 𞤪.σ
𞤈.ς; 𞤪.ς; ; xn--ie6h.xn--3xa; ; xn--ie6h.xn--4xa; # 𞤪.ς
xn--ie6h.xn--3xa; 𞤪.ς; ; xn--ie6h.xn--3xa; ; ; # 𞤪.ς
𞤪.Σ; 𞤪.σ; ; xn--ie6h.xn--4xa; ; ; # 𞤪.σ
-\u200CႺ。ς; \u200CႺ.ς; [C1, P1, V6]; xn--ynd759e.xn--3xa; ; xn--ynd.xn--4xa; [P1, V6] # Ⴚ.ς
-\u200CႺ。ς; \u200CႺ.ς; [C1, P1, V6]; xn--ynd759e.xn--3xa; ; xn--ynd.xn--4xa; [P1, V6] # Ⴚ.ς
+\u200CႺ。ς; \u200CႺ.ς; [C1, V6]; xn--ynd759e.xn--3xa; ; xn--ynd.xn--4xa; [V6] # Ⴚ.ς
+\u200CႺ。ς; \u200CႺ.ς; [C1, V6]; xn--ynd759e.xn--3xa; ; xn--ynd.xn--4xa; [V6] # Ⴚ.ς
\u200Cⴚ。ς; \u200Cⴚ.ς; [C1]; xn--0ug262c.xn--3xa; ; xn--ilj.xn--4xa; [] # ⴚ.ς
-\u200CႺ。Σ; \u200CႺ.σ; [C1, P1, V6]; xn--ynd759e.xn--4xa; ; xn--ynd.xn--4xa; [P1, V6] # Ⴚ.σ
+\u200CႺ。Σ; \u200CႺ.σ; [C1, V6]; xn--ynd759e.xn--4xa; ; xn--ynd.xn--4xa; [V6] # Ⴚ.σ
\u200Cⴚ。σ; \u200Cⴚ.σ; [C1]; xn--0ug262c.xn--4xa; ; xn--ilj.xn--4xa; [] # ⴚ.σ
xn--ilj.xn--4xa; ⴚ.σ; ; xn--ilj.xn--4xa; ; ; # ⴚ.σ
ⴚ.σ; ; ; xn--ilj.xn--4xa; ; ; # ⴚ.σ
-Ⴚ.Σ; Ⴚ.σ; [P1, V6]; xn--ynd.xn--4xa; ; ; # Ⴚ.σ
+Ⴚ.Σ; Ⴚ.σ; [V6]; xn--ynd.xn--4xa; ; ; # Ⴚ.σ
â´š.Ï‚; ; ; xn--ilj.xn--3xa; ; xn--ilj.xn--4xa; # â´š.Ï‚
-Ⴚ.ς; ; [P1, V6]; xn--ynd.xn--3xa; ; xn--ynd.xn--4xa; # Ⴚ.ς
+Ⴚ.ς; ; [V6]; xn--ynd.xn--3xa; ; xn--ynd.xn--4xa; # Ⴚ.ς
xn--ynd.xn--4xa; Ⴚ.σ; [V6]; xn--ynd.xn--4xa; ; ; # Ⴚ.σ
xn--ynd.xn--3xa; Ⴚ.ς; [V6]; xn--ynd.xn--3xa; ; ; # Ⴚ.ς
xn--ilj.xn--3xa; â´š.Ï‚; ; xn--ilj.xn--3xa; ; ; # â´š.Ï‚
-Ⴚ.σ; ; [P1, V6]; xn--ynd.xn--4xa; ; ; # Ⴚ.σ
+Ⴚ.σ; ; [V6]; xn--ynd.xn--4xa; ; ; # Ⴚ.σ
xn--0ug262c.xn--4xa; \u200Cⴚ.σ; [C1]; xn--0ug262c.xn--4xa; ; ; # ⴚ.σ
xn--ynd759e.xn--4xa; \u200CႺ.σ; [C1, V6]; xn--ynd759e.xn--4xa; ; ; # Ⴚ.σ
xn--0ug262c.xn--3xa; \u200Câ´š.Ï‚; [C1]; xn--0ug262c.xn--3xa; ; ; # â´š.Ï‚
xn--ynd759e.xn--3xa; \u200CႺ.ς; [C1, V6]; xn--ynd759e.xn--3xa; ; ; # Ⴚ.ς
\u200Cⴚ。ς; \u200Cⴚ.ς; [C1]; xn--0ug262c.xn--3xa; ; xn--ilj.xn--4xa; [] # ⴚ.ς
-\u200CႺ。Σ; \u200CႺ.σ; [C1, P1, V6]; xn--ynd759e.xn--4xa; ; xn--ynd.xn--4xa; [P1, V6] # Ⴚ.σ
+\u200CႺ。Σ; \u200CႺ.σ; [C1, V6]; xn--ynd759e.xn--4xa; ; xn--ynd.xn--4xa; [V6] # Ⴚ.σ
\u200Cⴚ。σ; \u200Cⴚ.σ; [C1]; xn--0ug262c.xn--4xa; ; xn--ilj.xn--4xa; [] # ⴚ.σ
𞤃.ð¹¦; 𞤥.ð¹¦; [B1]; xn--de6h.xn--eo0d; ; ; # 𞤥.ð¹¦
𞤃.ð¹¦; 𞤥.ð¹¦; [B1]; xn--de6h.xn--eo0d; ; ; # 𞤥.ð¹¦
@@ -3466,32 +3480,32 @@ xn----guc3592k.xn--qe6h; \u06AA-뉔.𞤲; [B2, B3]; xn----guc3592k.xn--qe6h; ; ;
xn----guc3592k.xn--0ug7611p; \u06AA-뉔.𞤲\u200C; [B2, B3, C1]; xn----guc3592k.xn--0ug7611p; ; ; # ڪ-뉔.𞤲
\u06AA-뉔.𞤲\u200C; \u06AA-뉔.𞤲\u200C; [B2, B3, C1]; xn----guc3592k.xn--0ug7611p; ; xn----guc3592k.xn--qe6h; [B2, B3] # ڪ-뉔.𞤲
\u06AA-뉔.𞤲\u200C; \u06AA-뉔.𞤲\u200C; [B2, B3, C1]; xn----guc3592k.xn--0ug7611p; ; xn----guc3592k.xn--qe6h; [B2, B3] # ڪ-뉔.𞤲
-񔲵5ᦛς.\uA8C4\u077B\u1CD2\u0738; 񔲵5ᦛς.\uA8C4\u077B\u0738\u1CD2; [B1, P1, V5, V6]; xn--5-ymb298ng603j.xn--fob7kk44dl41k; ; xn--5-0mb988ng603j.xn--fob7kk44dl41k; # 5ᦛς.꣄ݻܸ᳒
-񔲵5ᦛς.\uA8C4\u077B\u0738\u1CD2; 񔲵5ᦛς.\uA8C4\u077B\u0738\u1CD2; [B1, P1, V5, V6]; xn--5-ymb298ng603j.xn--fob7kk44dl41k; ; xn--5-0mb988ng603j.xn--fob7kk44dl41k; # 5ᦛς.꣄ݻܸ᳒
-񔲵5ᦛς.\uA8C4\u077B\u0738\u1CD2; ; [B1, P1, V5, V6]; xn--5-ymb298ng603j.xn--fob7kk44dl41k; ; xn--5-0mb988ng603j.xn--fob7kk44dl41k; # 5ᦛς.꣄ݻܸ᳒
-񔲵5ᦛΣ.\uA8C4\u077B\u0738\u1CD2; 񔲵5ᦛσ.\uA8C4\u077B\u0738\u1CD2; [B1, P1, V5, V6]; xn--5-0mb988ng603j.xn--fob7kk44dl41k; ; ; # 5ᦛσ.꣄ݻܸ᳒
-񔲵5ᦛσ.\uA8C4\u077B\u0738\u1CD2; ; [B1, P1, V5, V6]; xn--5-0mb988ng603j.xn--fob7kk44dl41k; ; ; # 5ᦛσ.꣄ݻܸ᳒
+񔲵5ᦛς.\uA8C4\u077B\u1CD2\u0738; 񔲵5ᦛς.\uA8C4\u077B\u0738\u1CD2; [B1, V5, V6]; xn--5-ymb298ng603j.xn--fob7kk44dl41k; ; xn--5-0mb988ng603j.xn--fob7kk44dl41k; # 5ᦛς.꣄ݻܸ᳒
+񔲵5ᦛς.\uA8C4\u077B\u0738\u1CD2; 񔲵5ᦛς.\uA8C4\u077B\u0738\u1CD2; [B1, V5, V6]; xn--5-ymb298ng603j.xn--fob7kk44dl41k; ; xn--5-0mb988ng603j.xn--fob7kk44dl41k; # 5ᦛς.꣄ݻܸ᳒
+񔲵5ᦛς.\uA8C4\u077B\u0738\u1CD2; ; [B1, V5, V6]; xn--5-ymb298ng603j.xn--fob7kk44dl41k; ; xn--5-0mb988ng603j.xn--fob7kk44dl41k; # 5ᦛς.꣄ݻܸ᳒
+񔲵5ᦛΣ.\uA8C4\u077B\u0738\u1CD2; 񔲵5ᦛσ.\uA8C4\u077B\u0738\u1CD2; [B1, V5, V6]; xn--5-0mb988ng603j.xn--fob7kk44dl41k; ; ; # 5ᦛσ.꣄ݻܸ᳒
+񔲵5ᦛσ.\uA8C4\u077B\u0738\u1CD2; ; [B1, V5, V6]; xn--5-0mb988ng603j.xn--fob7kk44dl41k; ; ; # 5ᦛσ.꣄ݻܸ᳒
xn--5-0mb988ng603j.xn--fob7kk44dl41k; 񔲵5ᦛσ.\uA8C4\u077B\u0738\u1CD2; [B1, V5, V6]; xn--5-0mb988ng603j.xn--fob7kk44dl41k; ; ; # 5ᦛσ.꣄ݻܸ᳒
xn--5-ymb298ng603j.xn--fob7kk44dl41k; 񔲵5ᦛς.\uA8C4\u077B\u0738\u1CD2; [B1, V5, V6]; xn--5-ymb298ng603j.xn--fob7kk44dl41k; ; ; # 5ᦛς.꣄ݻܸ᳒
-񔲵5ᦛΣ.\uA8C4\u077B\u0738\u1CD2; 񔲵5ᦛσ.\uA8C4\u077B\u0738\u1CD2; [B1, P1, V5, V6]; xn--5-0mb988ng603j.xn--fob7kk44dl41k; ; ; # 5ᦛσ.꣄ݻܸ᳒
-񔲵5ᦛσ.\uA8C4\u077B\u0738\u1CD2; 񔲵5ᦛσ.\uA8C4\u077B\u0738\u1CD2; [B1, P1, V5, V6]; xn--5-0mb988ng603j.xn--fob7kk44dl41k; ; ; # 5ᦛσ.꣄ݻܸ᳒
-񔲵5ᦛΣ.\uA8C4\u077B\u1CD2\u0738; 񔲵5ᦛσ.\uA8C4\u077B\u0738\u1CD2; [B1, P1, V5, V6]; xn--5-0mb988ng603j.xn--fob7kk44dl41k; ; ; # 5ᦛσ.꣄ݻܸ᳒
-񔲵5ᦛσ.\uA8C4\u077B\u1CD2\u0738; 񔲵5ᦛσ.\uA8C4\u077B\u0738\u1CD2; [B1, P1, V5, V6]; xn--5-0mb988ng603j.xn--fob7kk44dl41k; ; ; # 5ᦛσ.꣄ݻܸ᳒
+񔲵5ᦛΣ.\uA8C4\u077B\u0738\u1CD2; 񔲵5ᦛσ.\uA8C4\u077B\u0738\u1CD2; [B1, V5, V6]; xn--5-0mb988ng603j.xn--fob7kk44dl41k; ; ; # 5ᦛσ.꣄ݻܸ᳒
+񔲵5ᦛσ.\uA8C4\u077B\u0738\u1CD2; 񔲵5ᦛσ.\uA8C4\u077B\u0738\u1CD2; [B1, V5, V6]; xn--5-0mb988ng603j.xn--fob7kk44dl41k; ; ; # 5ᦛσ.꣄ݻܸ᳒
+񔲵5ᦛΣ.\uA8C4\u077B\u1CD2\u0738; 񔲵5ᦛσ.\uA8C4\u077B\u0738\u1CD2; [B1, V5, V6]; xn--5-0mb988ng603j.xn--fob7kk44dl41k; ; ; # 5ᦛσ.꣄ݻܸ᳒
+񔲵5ᦛσ.\uA8C4\u077B\u1CD2\u0738; 񔲵5ᦛσ.\uA8C4\u077B\u0738\u1CD2; [B1, V5, V6]; xn--5-0mb988ng603j.xn--fob7kk44dl41k; ; ; # 5ᦛσ.꣄ݻܸ᳒
淽。ᠾ; 淽.ᠾ; ; xn--34w.xn--x7e; ; ; # 淽.ᠾ
xn--34w.xn--x7e; æ·½.á ¾; ; xn--34w.xn--x7e; ; ; # æ·½.á ¾
æ·½.á ¾; ; ; xn--34w.xn--x7e; ; ; # æ·½.á ¾
ð¹´ð‘˜·ã€‚-; ð¹´ð‘˜·.-; [B1, V3]; xn--so0do6k.-; ; ; # ð¹´ð‘˜·.-
xn--so0do6k.-; ð¹´ð‘˜·.-; [B1, V3]; xn--so0do6k.-; ; ; # ð¹´ð‘˜·.-
-ò¬¨©á‚³â“。𑄨; ò¬¨©á‚³â“.𑄨; [P1, V5, V6]; xn--rnd896i0j14q.xn--k80d; ; ; # Ⴓâ“.𑄨
-ò¬¨©á‚³â“。𑄨; ò¬¨©á‚³â“.𑄨; [P1, V5, V6]; xn--rnd896i0j14q.xn--k80d; ; ; # Ⴓâ“.𑄨
-ò¬¨©â´“â“。𑄨; ò¬¨©â´“â“.𑄨; [P1, V5, V6]; xn--8di78qvw32y.xn--k80d; ; ; # â´“â“.𑄨
+ò¬¨©á‚³â“。𑄨; ò¬¨©á‚³â“.𑄨; [V5, V6]; xn--rnd896i0j14q.xn--k80d; ; ; # Ⴓâ“.𑄨
+ò¬¨©á‚³â“。𑄨; ò¬¨©á‚³â“.𑄨; [V5, V6]; xn--rnd896i0j14q.xn--k80d; ; ; # Ⴓâ“.𑄨
+ò¬¨©â´“â“。𑄨; ò¬¨©â´“â“.𑄨; [V5, V6]; xn--8di78qvw32y.xn--k80d; ; ; # â´“â“.𑄨
xn--8di78qvw32y.xn--k80d; ò¬¨©â´“â“.𑄨; [V5, V6]; xn--8di78qvw32y.xn--k80d; ; ; # â´“â“.𑄨
xn--rnd896i0j14q.xn--k80d; ò¬¨©á‚³â“.𑄨; [V5, V6]; xn--rnd896i0j14q.xn--k80d; ; ; # Ⴓâ“.𑄨
-ò¬¨©â´“â“。𑄨; ò¬¨©â´“â“.𑄨; [P1, V5, V6]; xn--8di78qvw32y.xn--k80d; ; ; # â´“â“.𑄨
-\u200Cð¹¡ðž¤Œá‚§ï½¡ÃŸá‚£; \u200Cð¹¡ðž¤®á‚§.ßႣ; [B1, C1, P1, V6]; xn--fnd599eyj4pr50g.xn--zca681f; ; xn--fnd1201kegrf.xn--ss-fek; [B1, P1, V6] # ð¹¡ðž¤®á‚§.ßႣ
-\u200Cð¹¡ðž¤Œá‚§ã€‚ßႣ; \u200Cð¹¡ðž¤®á‚§.ßႣ; [B1, C1, P1, V6]; xn--fnd599eyj4pr50g.xn--zca681f; ; xn--fnd1201kegrf.xn--ss-fek; [B1, P1, V6] # ð¹¡ðž¤®á‚§.ßႣ
+ò¬¨©â´“â“。𑄨; ò¬¨©â´“â“.𑄨; [V5, V6]; xn--8di78qvw32y.xn--k80d; ; ; # â´“â“.𑄨
+\u200Cð¹¡ðž¤Œá‚§ï½¡ÃŸá‚£; \u200Cð¹¡ðž¤®á‚§.ßႣ; [B1, C1, V6]; xn--fnd599eyj4pr50g.xn--zca681f; ; xn--fnd1201kegrf.xn--ss-fek; [B1, V6] # ð¹¡ðž¤®á‚§.ßႣ
+\u200Cð¹¡ðž¤Œá‚§ã€‚ßႣ; \u200Cð¹¡ðž¤®á‚§.ßႣ; [B1, C1, V6]; xn--fnd599eyj4pr50g.xn--zca681f; ; xn--fnd1201kegrf.xn--ss-fek; [B1, V6] # ð¹¡ðž¤®á‚§.ßႣ
\u200Cð¹¡ðž¤®â´‡ã€‚ßⴃ; \u200Cð¹¡ðž¤®â´‡.ßⴃ; [B1, C1]; xn--0ug332c3q0pr56g.xn--zca417t; ; xn--ykj9323eegwf.xn--ss-151a; [B1] # ð¹¡ðž¤®â´‡.ßⴃ
-\u200Cð¹¡ðž¤Œá‚§ã€‚SSá‚£; \u200Cð¹¡ðž¤®á‚§.ssá‚£; [B1, C1, P1, V6]; xn--fnd599eyj4pr50g.xn--ss-fek; ; xn--fnd1201kegrf.xn--ss-fek; [B1, P1, V6] # ð¹¡ðž¤®á‚§.ssá‚£
+\u200Cð¹¡ðž¤Œá‚§ã€‚SSá‚£; \u200Cð¹¡ðž¤®á‚§.ssá‚£; [B1, C1, V6]; xn--fnd599eyj4pr50g.xn--ss-fek; ; xn--fnd1201kegrf.xn--ss-fek; [B1, V6] # ð¹¡ðž¤®á‚§.ssá‚£
\u200Cð¹¡ðž¤®â´‡ã€‚ssâ´ƒ; \u200Cð¹¡ðž¤®â´‡.ssâ´ƒ; [B1, C1]; xn--0ug332c3q0pr56g.xn--ss-151a; ; xn--ykj9323eegwf.xn--ss-151a; [B1] # ð¹¡ðž¤®â´‡.ssâ´ƒ
\u200Cð¹¡ðž¤Œâ´‡ã€‚Ssâ´ƒ; \u200Cð¹¡ðž¤®â´‡.ssâ´ƒ; [B1, C1]; xn--0ug332c3q0pr56g.xn--ss-151a; ; xn--ykj9323eegwf.xn--ss-151a; [B1] # ð¹¡ðž¤®â´‡.ssâ´ƒ
xn--ykj9323eegwf.xn--ss-151a; ð¹¡ðž¤®â´‡.ssâ´ƒ; [B1]; xn--ykj9323eegwf.xn--ss-151a; ; ; # ð¹¡ðž¤®â´‡.ssâ´ƒ
@@ -3501,99 +3515,99 @@ xn--fnd599eyj4pr50g.xn--ss-fek; \u200Cð¹¡ðž¤®á‚§.ssá‚£; [B1, C1, V6]; xn--fnd59
xn--0ug332c3q0pr56g.xn--zca417t; \u200Cð¹¡ðž¤®â´‡.ßⴃ; [B1, C1]; xn--0ug332c3q0pr56g.xn--zca417t; ; ; # ð¹¡ðž¤®â´‡.ßⴃ
xn--fnd599eyj4pr50g.xn--zca681f; \u200Cð¹¡ðž¤®á‚§.ßႣ; [B1, C1, V6]; xn--fnd599eyj4pr50g.xn--zca681f; ; ; # ð¹¡ðž¤®á‚§.ßႣ
\u200Cð¹¡ðž¤®â´‡ï½¡ÃŸâ´ƒ; \u200Cð¹¡ðž¤®â´‡.ßⴃ; [B1, C1]; xn--0ug332c3q0pr56g.xn--zca417t; ; xn--ykj9323eegwf.xn--ss-151a; [B1] # ð¹¡ðž¤®â´‡.ßⴃ
-\u200Cð¹¡ðž¤Œá‚§ï½¡SSá‚£; \u200Cð¹¡ðž¤®á‚§.ssá‚£; [B1, C1, P1, V6]; xn--fnd599eyj4pr50g.xn--ss-fek; ; xn--fnd1201kegrf.xn--ss-fek; [B1, P1, V6] # ð¹¡ðž¤®á‚§.ssá‚£
+\u200Cð¹¡ðž¤Œá‚§ï½¡SSá‚£; \u200Cð¹¡ðž¤®á‚§.ssá‚£; [B1, C1, V6]; xn--fnd599eyj4pr50g.xn--ss-fek; ; xn--fnd1201kegrf.xn--ss-fek; [B1, V6] # ð¹¡ðž¤®á‚§.ssá‚£
\u200Cð¹¡ðž¤®â´‡ï½¡ssâ´ƒ; \u200Cð¹¡ðž¤®â´‡.ssâ´ƒ; [B1, C1]; xn--0ug332c3q0pr56g.xn--ss-151a; ; xn--ykj9323eegwf.xn--ss-151a; [B1] # ð¹¡ðž¤®â´‡.ssâ´ƒ
\u200Cð¹¡ðž¤Œâ´‡ï½¡Ssâ´ƒ; \u200Cð¹¡ðž¤®â´‡.ssâ´ƒ; [B1, C1]; xn--0ug332c3q0pr56g.xn--ss-151a; ; xn--ykj9323eegwf.xn--ss-151a; [B1] # ð¹¡ðž¤®â´‡.ssâ´ƒ
\u200Cð¹¡ðž¤Œâ´‡ã€‚ßⴃ; \u200Cð¹¡ðž¤®â´‡.ßⴃ; [B1, C1]; xn--0ug332c3q0pr56g.xn--zca417t; ; xn--ykj9323eegwf.xn--ss-151a; [B1] # ð¹¡ðž¤®â´‡.ßⴃ
\u200Cð¹¡ðž¤Œâ´‡ã€‚ssâ´ƒ; \u200Cð¹¡ðž¤®â´‡.ssâ´ƒ; [B1, C1]; xn--0ug332c3q0pr56g.xn--ss-151a; ; xn--ykj9323eegwf.xn--ss-151a; [B1] # ð¹¡ðž¤®â´‡.ssâ´ƒ
-\u200Cð¹¡ðž¤Œá‚§ã€‚Ssâ´ƒ; \u200Cð¹¡ðž¤®á‚§.ssâ´ƒ; [B1, C1, P1, V6]; xn--fnd599eyj4pr50g.xn--ss-151a; ; xn--fnd1201kegrf.xn--ss-151a; [B1, P1, V6] # ð¹¡ðž¤®á‚§.ssâ´ƒ
+\u200Cð¹¡ðž¤Œá‚§ã€‚Ssâ´ƒ; \u200Cð¹¡ðž¤®á‚§.ssâ´ƒ; [B1, C1, V6]; xn--fnd599eyj4pr50g.xn--ss-151a; ; xn--fnd1201kegrf.xn--ss-151a; [B1, V6] # ð¹¡ðž¤®á‚§.ssâ´ƒ
xn--fnd1201kegrf.xn--ss-151a; ð¹¡ðž¤®á‚§.ssâ´ƒ; [B1, V6]; xn--fnd1201kegrf.xn--ss-151a; ; ; # ð¹¡ðž¤®á‚§.ssâ´ƒ
xn--fnd599eyj4pr50g.xn--ss-151a; \u200Cð¹¡ðž¤®á‚§.ssâ´ƒ; [B1, C1, V6]; xn--fnd599eyj4pr50g.xn--ss-151a; ; ; # ð¹¡ðž¤®á‚§.ssâ´ƒ
\u200Cð¹¡ðž¤Œâ´‡ï½¡ÃŸâ´ƒ; \u200Cð¹¡ðž¤®â´‡.ßⴃ; [B1, C1]; xn--0ug332c3q0pr56g.xn--zca417t; ; xn--ykj9323eegwf.xn--ss-151a; [B1] # ð¹¡ðž¤®â´‡.ßⴃ
\u200Cð¹¡ðž¤Œâ´‡ï½¡ssâ´ƒ; \u200Cð¹¡ðž¤®â´‡.ssâ´ƒ; [B1, C1]; xn--0ug332c3q0pr56g.xn--ss-151a; ; xn--ykj9323eegwf.xn--ss-151a; [B1] # ð¹¡ðž¤®â´‡.ssâ´ƒ
-\u200Cð¹¡ðž¤Œá‚§ï½¡Ssâ´ƒ; \u200Cð¹¡ðž¤®á‚§.ssâ´ƒ; [B1, C1, P1, V6]; xn--fnd599eyj4pr50g.xn--ss-151a; ; xn--fnd1201kegrf.xn--ss-151a; [B1, P1, V6] # ð¹¡ðž¤®á‚§.ssâ´ƒ
-\u17FF。𞬳; \u17FF.𞬳; [P1, V6]; xn--45e.xn--et6h; ; ; # .
-\u17FF。𞬳; \u17FF.𞬳; [P1, V6]; xn--45e.xn--et6h; ; ; # .
+\u200Cð¹¡ðž¤Œá‚§ï½¡Ssâ´ƒ; \u200Cð¹¡ðž¤®á‚§.ssâ´ƒ; [B1, C1, V6]; xn--fnd599eyj4pr50g.xn--ss-151a; ; xn--fnd1201kegrf.xn--ss-151a; [B1, V6] # ð¹¡ðž¤®á‚§.ssâ´ƒ
+\u17FF。𞬳; \u17FF.𞬳; [V6]; xn--45e.xn--et6h; ; ; # .
+\u17FF。𞬳; \u17FF.𞬳; [V6]; xn--45e.xn--et6h; ; ; # .
xn--45e.xn--et6h; \u17FF.𞬳; [V6]; xn--45e.xn--et6h; ; ; # .
\u0652\u200D。\u0CCDð‘š³; \u0652\u200D.\u0CCDð‘š³; [C2, V5]; xn--uhb882k.xn--8tc4527k; ; xn--uhb.xn--8tc4527k; [V5] # Ù’.à³ð‘š³
\u0652\u200D。\u0CCDð‘š³; \u0652\u200D.\u0CCDð‘š³; [C2, V5]; xn--uhb882k.xn--8tc4527k; ; xn--uhb.xn--8tc4527k; [V5] # Ù’.à³ð‘š³
xn--uhb.xn--8tc4527k; \u0652.\u0CCDð‘š³; [V5]; xn--uhb.xn--8tc4527k; ; ; # Ù’.à³ð‘š³
xn--uhb882k.xn--8tc4527k; \u0652\u200D.\u0CCDð‘š³; [C2, V5]; xn--uhb882k.xn--8tc4527k; ; ; # Ù’.à³ð‘š³
--≠ᠻ.\u076D𞥃≮󟷺; -≠ᠻ.\u076D𞥃≮󟷺; [B1, B2, B3, P1, V3, V6]; xn----g6j886c.xn--xpb049kk353abj99f; ; ; # -≠ᠻ.ݭ𞥃≮
--=\u0338ᠻ.\u076D𞥃<\u0338󟷺; -≠ᠻ.\u076D𞥃≮󟷺; [B1, B2, B3, P1, V3, V6]; xn----g6j886c.xn--xpb049kk353abj99f; ; ; # -≠ᠻ.ݭ𞥃≮
--≠ᠻ.\u076D𞥃≮󟷺; ; [B1, B2, B3, P1, V3, V6]; xn----g6j886c.xn--xpb049kk353abj99f; ; ; # -≠ᠻ.ݭ𞥃≮
--=\u0338ᠻ.\u076D𞥃<\u0338󟷺; -≠ᠻ.\u076D𞥃≮󟷺; [B1, B2, B3, P1, V3, V6]; xn----g6j886c.xn--xpb049kk353abj99f; ; ; # -≠ᠻ.ݭ𞥃≮
--=\u0338ᠻ.\u076D𞤡<\u0338󟷺; -≠ᠻ.\u076D𞥃≮󟷺; [B1, B2, B3, P1, V3, V6]; xn----g6j886c.xn--xpb049kk353abj99f; ; ; # -≠ᠻ.ݭ𞥃≮
--≠ᠻ.\u076D𞤡≮󟷺; -≠ᠻ.\u076D𞥃≮󟷺; [B1, B2, B3, P1, V3, V6]; xn----g6j886c.xn--xpb049kk353abj99f; ; ; # -≠ᠻ.ݭ𞥃≮
+-≠ᠻ.\u076D𞥃≮󟷺; -≠ᠻ.\u076D𞥃≮󟷺; [B1, B2, B3, V3, V6]; xn----g6j886c.xn--xpb049kk353abj99f; ; ; # -≠ᠻ.ݭ𞥃≮
+-=\u0338ᠻ.\u076D𞥃<\u0338󟷺; -≠ᠻ.\u076D𞥃≮󟷺; [B1, B2, B3, V3, V6]; xn----g6j886c.xn--xpb049kk353abj99f; ; ; # -≠ᠻ.ݭ𞥃≮
+-≠ᠻ.\u076D𞥃≮󟷺; ; [B1, B2, B3, V3, V6]; xn----g6j886c.xn--xpb049kk353abj99f; ; ; # -≠ᠻ.ݭ𞥃≮
+-=\u0338ᠻ.\u076D𞥃<\u0338󟷺; -≠ᠻ.\u076D𞥃≮󟷺; [B1, B2, B3, V3, V6]; xn----g6j886c.xn--xpb049kk353abj99f; ; ; # -≠ᠻ.ݭ𞥃≮
+-=\u0338ᠻ.\u076D𞤡<\u0338󟷺; -≠ᠻ.\u076D𞥃≮󟷺; [B1, B2, B3, V3, V6]; xn----g6j886c.xn--xpb049kk353abj99f; ; ; # -≠ᠻ.ݭ𞥃≮
+-≠ᠻ.\u076D𞤡≮󟷺; -≠ᠻ.\u076D𞥃≮󟷺; [B1, B2, B3, V3, V6]; xn----g6j886c.xn--xpb049kk353abj99f; ; ; # -≠ᠻ.ݭ𞥃≮
xn----g6j886c.xn--xpb049kk353abj99f; -≠ᠻ.\u076D𞥃≮󟷺; [B1, B2, B3, V3, V6]; xn----g6j886c.xn--xpb049kk353abj99f; ; ; # -≠ᠻ.ݭ𞥃≮
--=\u0338ᠻ.\u076D𞤡<\u0338󟷺; -≠ᠻ.\u076D𞥃≮󟷺; [B1, B2, B3, P1, V3, V6]; xn----g6j886c.xn--xpb049kk353abj99f; ; ; # -≠ᠻ.ݭ𞥃≮
--≠ᠻ.\u076D𞤡≮󟷺; -≠ᠻ.\u076D𞥃≮󟷺; [B1, B2, B3, P1, V3, V6]; xn----g6j886c.xn--xpb049kk353abj99f; ; ; # -≠ᠻ.ݭ𞥃≮
-󠰆≯\u07B5ð»ªï¼ŽòŠ¥•â‰®ð‘†\u084C; 󠰆≯\u07B5ð»ª.òŠ¥•â‰®ð‘†\u084C; [B1, B5, B6, P1, V6]; xn--zrb797kdm1oes34i.xn--bwb394k8k2o25n6d; ; ; # ≯.≮ð‘†à¡Œ
-ó °†>\u0338\u07B5ð»ªï¼ŽòŠ¥•<\u0338ð‘†\u084C; 󠰆≯\u07B5ð»ª.òŠ¥•â‰®ð‘†\u084C; [B1, B5, B6, P1, V6]; xn--zrb797kdm1oes34i.xn--bwb394k8k2o25n6d; ; ; # ≯.≮ð‘†à¡Œ
-󠰆≯\u07B5ð»ª.òŠ¥•â‰®ð‘†\u084C; ; [B1, B5, B6, P1, V6]; xn--zrb797kdm1oes34i.xn--bwb394k8k2o25n6d; ; ; # ≯.≮ð‘†à¡Œ
-ó °†>\u0338\u07B5ð»ª.òŠ¥•<\u0338ð‘†\u084C; 󠰆≯\u07B5ð»ª.òŠ¥•â‰®ð‘†\u084C; [B1, B5, B6, P1, V6]; xn--zrb797kdm1oes34i.xn--bwb394k8k2o25n6d; ; ; # ≯.≮ð‘†à¡Œ
+-=\u0338ᠻ.\u076D𞤡<\u0338󟷺; -≠ᠻ.\u076D𞥃≮󟷺; [B1, B2, B3, V3, V6]; xn----g6j886c.xn--xpb049kk353abj99f; ; ; # -≠ᠻ.ݭ𞥃≮
+-≠ᠻ.\u076D𞤡≮󟷺; -≠ᠻ.\u076D𞥃≮󟷺; [B1, B2, B3, V3, V6]; xn----g6j886c.xn--xpb049kk353abj99f; ; ; # -≠ᠻ.ݭ𞥃≮
+󠰆≯\u07B5ð»ªï¼ŽòŠ¥•â‰®ð‘†\u084C; 󠰆≯\u07B5ð»ª.òŠ¥•â‰®ð‘†\u084C; [B1, B5, B6, V6]; xn--zrb797kdm1oes34i.xn--bwb394k8k2o25n6d; ; ; # ≯.≮ð‘†à¡Œ
+ó °†>\u0338\u07B5ð»ªï¼ŽòŠ¥•<\u0338ð‘†\u084C; 󠰆≯\u07B5ð»ª.òŠ¥•â‰®ð‘†\u084C; [B1, B5, B6, V6]; xn--zrb797kdm1oes34i.xn--bwb394k8k2o25n6d; ; ; # ≯.≮ð‘†à¡Œ
+󠰆≯\u07B5ð»ª.òŠ¥•â‰®ð‘†\u084C; ; [B1, B5, B6, V6]; xn--zrb797kdm1oes34i.xn--bwb394k8k2o25n6d; ; ; # ≯.≮ð‘†à¡Œ
+ó °†>\u0338\u07B5ð»ª.òŠ¥•<\u0338ð‘†\u084C; 󠰆≯\u07B5ð»ª.òŠ¥•â‰®ð‘†\u084C; [B1, B5, B6, V6]; xn--zrb797kdm1oes34i.xn--bwb394k8k2o25n6d; ; ; # ≯.≮ð‘†à¡Œ
xn--zrb797kdm1oes34i.xn--bwb394k8k2o25n6d; 󠰆≯\u07B5ð»ª.òŠ¥•â‰®ð‘†\u084C; [B1, B5, B6, V6]; xn--zrb797kdm1oes34i.xn--bwb394k8k2o25n6d; ; ; # ≯.≮ð‘†à¡Œ
-≠󦋂.\u0600\u0BCD-\u06B9; ; [B1, P1, V6]; xn--1ch22084l.xn----qkc07co6n; ; ; # ≠.à¯-Ú¹
-=\u0338󦋂.\u0600\u0BCD-\u06B9; ≠󦋂.\u0600\u0BCD-\u06B9; [B1, P1, V6]; xn--1ch22084l.xn----qkc07co6n; ; ; # ≠.à¯-Ú¹
+≠󦋂.\u0600\u0BCD-\u06B9; ; [B1, V6]; xn--1ch22084l.xn----qkc07co6n; ; ; # ≠.à¯-Ú¹
+=\u0338󦋂.\u0600\u0BCD-\u06B9; ≠󦋂.\u0600\u0BCD-\u06B9; [B1, V6]; xn--1ch22084l.xn----qkc07co6n; ; ; # ≠.à¯-Ú¹
xn--1ch22084l.xn----qkc07co6n; ≠󦋂.\u0600\u0BCD-\u06B9; [B1, V6]; xn--1ch22084l.xn----qkc07co6n; ; ; # ≠.à¯-Ú¹
-\u17DDó £â‰ ï½¡ð¹¼ð‹¤; \u17DDó £â‰ .ð¹¼ð‹¤; [B1, P1, V5, V6]; xn--54e694cn389z.xn--787ct8r; ; ; # áŸâ‰ .ð¹¼ð‹¤
-\u17DDó £=\u0338。ð¹¼ð‹¤; \u17DDó £â‰ .ð¹¼ð‹¤; [B1, P1, V5, V6]; xn--54e694cn389z.xn--787ct8r; ; ; # áŸâ‰ .ð¹¼ð‹¤
-\u17DDó £â‰ ã€‚ð¹¼ð‹¤; \u17DDó £â‰ .ð¹¼ð‹¤; [B1, P1, V5, V6]; xn--54e694cn389z.xn--787ct8r; ; ; # áŸâ‰ .ð¹¼ð‹¤
-\u17DDó £=\u0338。ð¹¼ð‹¤; \u17DDó £â‰ .ð¹¼ð‹¤; [B1, P1, V5, V6]; xn--54e694cn389z.xn--787ct8r; ; ; # áŸâ‰ .ð¹¼ð‹¤
+\u17DDó £â‰ ï½¡ð¹¼ð‹¤; \u17DDó £â‰ .ð¹¼ð‹¤; [B1, V5, V6]; xn--54e694cn389z.xn--787ct8r; ; ; # áŸâ‰ .ð¹¼ð‹¤
+\u17DDó £=\u0338。ð¹¼ð‹¤; \u17DDó £â‰ .ð¹¼ð‹¤; [B1, V5, V6]; xn--54e694cn389z.xn--787ct8r; ; ; # áŸâ‰ .ð¹¼ð‹¤
+\u17DDó £â‰ ã€‚ð¹¼ð‹¤; \u17DDó £â‰ .ð¹¼ð‹¤; [B1, V5, V6]; xn--54e694cn389z.xn--787ct8r; ; ; # áŸâ‰ .ð¹¼ð‹¤
+\u17DDó £=\u0338。ð¹¼ð‹¤; \u17DDó £â‰ .ð¹¼ð‹¤; [B1, V5, V6]; xn--54e694cn389z.xn--787ct8r; ; ; # áŸâ‰ .ð¹¼ð‹¤
xn--54e694cn389z.xn--787ct8r; \u17DDó £â‰ .ð¹¼ð‹¤; [B1, V5, V6]; xn--54e694cn389z.xn--787ct8r; ; ; # áŸâ‰ .ð¹¼ð‹¤
-ß𰀻ñ†¬—。ð©¨ðŸ•®ÃŸ; ß𰀻ñ†¬—.ð©¨ðŸ•®ÃŸ; [P1, V5, V6]; xn--zca20040bgrkh.xn--zca3653v86qa; ; xn--ss-jl59biy67d.xn--ss-4d11aw87d; # ß𰀻.ð©¨ðŸ•®ÃŸ
-ß𰀻ñ†¬—。ð©¨ðŸ•®ÃŸ; ß𰀻ñ†¬—.ð©¨ðŸ•®ÃŸ; [P1, V5, V6]; xn--zca20040bgrkh.xn--zca3653v86qa; ; xn--ss-jl59biy67d.xn--ss-4d11aw87d; # ß𰀻.ð©¨ðŸ•®ÃŸ
-SSð°€»ñ†¬—。ð©¨ðŸ•®SS; ssð°€»ñ†¬—.ð©¨ðŸ•®ss; [P1, V5, V6]; xn--ss-jl59biy67d.xn--ss-4d11aw87d; ; ; # ssð°€».ð©¨ðŸ•®ss
-ssð°€»ñ†¬—。ð©¨ðŸ•®ss; ssð°€»ñ†¬—.ð©¨ðŸ•®ss; [P1, V5, V6]; xn--ss-jl59biy67d.xn--ss-4d11aw87d; ; ; # ssð°€».ð©¨ðŸ•®ss
-Ssð°€»ñ†¬—。ð©¨ðŸ•®Ss; ssð°€»ñ†¬—.ð©¨ðŸ•®ss; [P1, V5, V6]; xn--ss-jl59biy67d.xn--ss-4d11aw87d; ; ; # ssð°€».ð©¨ðŸ•®ss
+ß𰀻ñ†¬—。ð©¨ðŸ•®ÃŸ; ß𰀻ñ†¬—.ð©¨ðŸ•®ÃŸ; [V5, V6]; xn--zca20040bgrkh.xn--zca3653v86qa; ; xn--ss-jl59biy67d.xn--ss-4d11aw87d; # ß𰀻.ð©¨ðŸ•®ÃŸ
+ß𰀻ñ†¬—。ð©¨ðŸ•®ÃŸ; ß𰀻ñ†¬—.ð©¨ðŸ•®ÃŸ; [V5, V6]; xn--zca20040bgrkh.xn--zca3653v86qa; ; xn--ss-jl59biy67d.xn--ss-4d11aw87d; # ß𰀻.ð©¨ðŸ•®ÃŸ
+SSð°€»ñ†¬—。ð©¨ðŸ•®SS; ssð°€»ñ†¬—.ð©¨ðŸ•®ss; [V5, V6]; xn--ss-jl59biy67d.xn--ss-4d11aw87d; ; ; # ssð°€».ð©¨ðŸ•®ss
+ssð°€»ñ†¬—。ð©¨ðŸ•®ss; ssð°€»ñ†¬—.ð©¨ðŸ•®ss; [V5, V6]; xn--ss-jl59biy67d.xn--ss-4d11aw87d; ; ; # ssð°€».ð©¨ðŸ•®ss
+Ssð°€»ñ†¬—。ð©¨ðŸ•®Ss; ssð°€»ñ†¬—.ð©¨ðŸ•®ss; [V5, V6]; xn--ss-jl59biy67d.xn--ss-4d11aw87d; ; ; # ssð°€».ð©¨ðŸ•®ss
xn--ss-jl59biy67d.xn--ss-4d11aw87d; ssð°€»ñ†¬—.ð©¨ðŸ•®ss; [V5, V6]; xn--ss-jl59biy67d.xn--ss-4d11aw87d; ; ; # ssð°€».ð©¨ðŸ•®ss
xn--zca20040bgrkh.xn--zca3653v86qa; ß𰀻ñ†¬—.ð©¨ðŸ•®ÃŸ; [V5, V6]; xn--zca20040bgrkh.xn--zca3653v86qa; ; ; # ß𰀻.ð©¨ðŸ•®ÃŸ
-SSð°€»ñ†¬—。ð©¨ðŸ•®SS; ssð°€»ñ†¬—.ð©¨ðŸ•®ss; [P1, V5, V6]; xn--ss-jl59biy67d.xn--ss-4d11aw87d; ; ; # ssð°€».ð©¨ðŸ•®ss
-ssð°€»ñ†¬—。ð©¨ðŸ•®ss; ssð°€»ñ†¬—.ð©¨ðŸ•®ss; [P1, V5, V6]; xn--ss-jl59biy67d.xn--ss-4d11aw87d; ; ; # ssð°€».ð©¨ðŸ•®ss
-Ssð°€»ñ†¬—。ð©¨ðŸ•®Ss; ssð°€»ñ†¬—.ð©¨ðŸ•®ss; [P1, V5, V6]; xn--ss-jl59biy67d.xn--ss-4d11aw87d; ; ; # ssð°€».ð©¨ðŸ•®ss
+SSð°€»ñ†¬—。ð©¨ðŸ•®SS; ssð°€»ñ†¬—.ð©¨ðŸ•®ss; [V5, V6]; xn--ss-jl59biy67d.xn--ss-4d11aw87d; ; ; # ssð°€».ð©¨ðŸ•®ss
+ssð°€»ñ†¬—。ð©¨ðŸ•®ss; ssð°€»ñ†¬—.ð©¨ðŸ•®ss; [V5, V6]; xn--ss-jl59biy67d.xn--ss-4d11aw87d; ; ; # ssð°€».ð©¨ðŸ•®ss
+Ssð°€»ñ†¬—。ð©¨ðŸ•®Ss; ssð°€»ñ†¬—.ð©¨ðŸ•®ss; [V5, V6]; xn--ss-jl59biy67d.xn--ss-4d11aw87d; ; ; # ssð°€».ð©¨ðŸ•®ss
\u200D。\u200C; \u200D.\u200C; [C1, C2]; xn--1ug.xn--0ug; ; .; [A4_2] # .
xn--1ug.xn--0ug; \u200D.\u200C; [C1, C2]; xn--1ug.xn--0ug; ; ; # .
-\u0483ð­ž\u200D.\u17B9𞯌òŸ©š; ; [B1, C2, P1, V5, V6]; xn--m3a412lrr0o.xn--43e8670vmd79b; ; xn--m3a6965k.xn--43e8670vmd79b; [B1, P1, V5, V6] # Òƒð­ž.áž¹
+\u0483ð­ž\u200D.\u17B9𞯌òŸ©š; ; [B1, C2, V5, V6]; xn--m3a412lrr0o.xn--43e8670vmd79b; ; xn--m3a6965k.xn--43e8670vmd79b; [B1, V5, V6] # Òƒð­ž.áž¹
xn--m3a6965k.xn--43e8670vmd79b; \u0483ð­ž.\u17B9𞯌òŸ©š; [B1, V5, V6]; xn--m3a6965k.xn--43e8670vmd79b; ; ; # Òƒð­ž.áž¹
xn--m3a412lrr0o.xn--43e8670vmd79b; \u0483ð­ž\u200D.\u17B9𞯌òŸ©š; [B1, C2, V5, V6]; xn--m3a412lrr0o.xn--43e8670vmd79b; ; ; # Òƒð­ž.áž¹
-\u200Cð ¨\u200C临。ꡢò„·žâ¶ð¹£; \u200Cð ¨\u200C临.ê¡¢ò„·žâ¶ð¹£; [B1, B5, B6, C1, P1, V6]; xn--0uga2656aop9k.xn--uojv340bk71c99u9f; ; xn--miq9646b.xn--uojv340bk71c99u9f; [B2, B3, B5, B6, P1, V6] # ð ¨ä¸´.ê¡¢â¶ð¹£
+\u200Cð ¨\u200C临。ꡢò„·žâ¶ð¹£; \u200Cð ¨\u200C临.ê¡¢ò„·žâ¶ð¹£; [B1, B5, B6, C1, V6]; xn--0uga2656aop9k.xn--uojv340bk71c99u9f; ; xn--miq9646b.xn--uojv340bk71c99u9f; [B2, B3, B5, B6, V6] # ð ¨ä¸´.ê¡¢â¶ð¹£
xn--miq9646b.xn--uojv340bk71c99u9f; ð ¨ä¸´.ê¡¢ò„·žâ¶ð¹£; [B2, B3, B5, B6, V6]; xn--miq9646b.xn--uojv340bk71c99u9f; ; ; # ð ¨ä¸´.ê¡¢â¶ð¹£
xn--0uga2656aop9k.xn--uojv340bk71c99u9f; \u200Cð ¨\u200C临.ê¡¢ò„·žâ¶ð¹£; [B1, B5, B6, C1, V6]; xn--0uga2656aop9k.xn--uojv340bk71c99u9f; ; ; # ð ¨ä¸´.ê¡¢â¶ð¹£
-󠑘.󠄮; 󠑘.; [P1, V6]; xn--s136e.; ; ; # .
-󠑘.󠄮; 󠑘.; [P1, V6]; xn--s136e.; ; ; # .
+󠑘.󠄮; 󠑘.; [V6]; xn--s136e.; ; ; # .
+󠑘.󠄮; 󠑘.; [V6]; xn--s136e.; ; ; # .
xn--s136e.; 󠑘.; [V6]; xn--s136e.; ; ; # .
-ð«„\u0D4D.\uAAF6; ð«„\u0D4D.\uAAF6; [B1, B3, B6, V5]; xn--wxc7880k.xn--2v9a; ; ; # ð«„àµ.꫶
-ð«„\u0D4D.\uAAF6; ; [B1, B3, B6, V5]; xn--wxc7880k.xn--2v9a; ; ; # ð«„àµ.꫶
-xn--wxc7880k.xn--2v9a; ð«„\u0D4D.\uAAF6; [B1, B3, B6, V5]; xn--wxc7880k.xn--2v9a; ; ; # ð«„àµ.꫶
-\uA9B7óµ™ë©¹ã€‚⒛󠨇; \uA9B7óµ™ë©¹.⒛󠨇; [P1, V5, V6]; xn--ym9av13acp85w.xn--dth22121k; ; ; # ꦷ멹.â’›
-\uA9B7óµ™á„†á…§á†°ã€‚⒛󠨇; \uA9B7óµ™ë©¹.⒛󠨇; [P1, V5, V6]; xn--ym9av13acp85w.xn--dth22121k; ; ; # ꦷ멹.â’›
-\uA9B7óµ™ë©¹ã€‚20.󠨇; \uA9B7óµ™ë©¹.20.󠨇; [P1, V5, V6]; xn--ym9av13acp85w.20.xn--d846e; ; ; # ꦷ멹.20.
-\uA9B7óµ™á„†á…§á†°ã€‚20.󠨇; \uA9B7óµ™ë©¹.20.󠨇; [P1, V5, V6]; xn--ym9av13acp85w.20.xn--d846e; ; ; # ꦷ멹.20.
+ð«„\u0D4D.\uAAF6; ð«„\u0D4D.\uAAF6; [B1, V5]; xn--wxc7880k.xn--2v9a; ; ; # ð«„àµ.꫶
+ð«„\u0D4D.\uAAF6; ; [B1, V5]; xn--wxc7880k.xn--2v9a; ; ; # ð«„àµ.꫶
+xn--wxc7880k.xn--2v9a; ð«„\u0D4D.\uAAF6; [B1, V5]; xn--wxc7880k.xn--2v9a; ; ; # ð«„àµ.꫶
+\uA9B7óµ™ë©¹ã€‚⒛󠨇; \uA9B7óµ™ë©¹.⒛󠨇; [V5, V6]; xn--ym9av13acp85w.xn--dth22121k; ; ; # ꦷ멹.â’›
+\uA9B7óµ™á„†á…§á†°ã€‚⒛󠨇; \uA9B7óµ™ë©¹.⒛󠨇; [V5, V6]; xn--ym9av13acp85w.xn--dth22121k; ; ; # ꦷ멹.â’›
+\uA9B7óµ™ë©¹ã€‚20.󠨇; \uA9B7óµ™ë©¹.20.󠨇; [V5, V6]; xn--ym9av13acp85w.20.xn--d846e; ; ; # ꦷ멹.20.
+\uA9B7óµ™á„†á…§á†°ã€‚20.󠨇; \uA9B7óµ™ë©¹.20.󠨇; [V5, V6]; xn--ym9av13acp85w.20.xn--d846e; ; ; # ꦷ멹.20.
xn--ym9av13acp85w.20.xn--d846e; \uA9B7óµ™ë©¹.20.󠨇; [V5, V6]; xn--ym9av13acp85w.20.xn--d846e; ; ; # ꦷ멹.20.
xn--ym9av13acp85w.xn--dth22121k; \uA9B7óµ™ë©¹.⒛󠨇; [V5, V6]; xn--ym9av13acp85w.xn--dth22121k; ; ; # ꦷ멹.â’›
-Ⴅ󲬹릖󠶚.\u0777ð¹³â’Š; ; [B4, B6, P1, V6]; xn--dnd2167fnet0io02g.xn--7pb000mwm4n; ; ; # Ⴅ릖.Ý·ð¹³â’Š
-Ⴅ󲬹릖󠶚.\u0777ð¹³â’Š; Ⴅ󲬹릖󠶚.\u0777ð¹³â’Š; [B4, B6, P1, V6]; xn--dnd2167fnet0io02g.xn--7pb000mwm4n; ; ; # Ⴅ릖.Ý·ð¹³â’Š
-Ⴅ󲬹릖󠶚.\u0777ð¹³3.; ; [B4, B6, P1, V6]; xn--dnd2167fnet0io02g.xn--3-55c6803r.; ; ; # Ⴅ릖.Ý·ð¹³3.
-Ⴅ󲬹릖󠶚.\u0777ð¹³3.; Ⴅ󲬹릖󠶚.\u0777ð¹³3.; [B4, B6, P1, V6]; xn--dnd2167fnet0io02g.xn--3-55c6803r.; ; ; # Ⴅ릖.Ý·ð¹³3.
-ⴅ󲬹릖󠶚.\u0777ð¹³3.; ⴅ󲬹릖󠶚.\u0777ð¹³3.; [B4, B6, P1, V6]; xn--wkj8016bne45io02g.xn--3-55c6803r.; ; ; # ⴅ릖.Ý·ð¹³3.
-ⴅ󲬹릖󠶚.\u0777ð¹³3.; ; [B4, B6, P1, V6]; xn--wkj8016bne45io02g.xn--3-55c6803r.; ; ; # ⴅ릖.Ý·ð¹³3.
+Ⴅ󲬹릖󠶚.\u0777ð¹³â’Š; ; [B4, B6, V6]; xn--dnd2167fnet0io02g.xn--7pb000mwm4n; ; ; # Ⴅ릖.Ý·ð¹³â’Š
+Ⴅ󲬹릖󠶚.\u0777ð¹³â’Š; Ⴅ󲬹릖󠶚.\u0777ð¹³â’Š; [B4, B6, V6]; xn--dnd2167fnet0io02g.xn--7pb000mwm4n; ; ; # Ⴅ릖.Ý·ð¹³â’Š
+Ⴅ󲬹릖󠶚.\u0777ð¹³3.; ; [B4, B6, V6]; xn--dnd2167fnet0io02g.xn--3-55c6803r.; ; ; # Ⴅ릖.Ý·ð¹³3.
+Ⴅ󲬹릖󠶚.\u0777ð¹³3.; Ⴅ󲬹릖󠶚.\u0777ð¹³3.; [B4, B6, V6]; xn--dnd2167fnet0io02g.xn--3-55c6803r.; ; ; # Ⴅ릖.Ý·ð¹³3.
+ⴅ󲬹릖󠶚.\u0777ð¹³3.; ⴅ󲬹릖󠶚.\u0777ð¹³3.; [B4, B6, V6]; xn--wkj8016bne45io02g.xn--3-55c6803r.; ; ; # ⴅ릖.Ý·ð¹³3.
+ⴅ󲬹릖󠶚.\u0777ð¹³3.; ; [B4, B6, V6]; xn--wkj8016bne45io02g.xn--3-55c6803r.; ; ; # ⴅ릖.Ý·ð¹³3.
xn--wkj8016bne45io02g.xn--3-55c6803r.; ⴅ󲬹릖󠶚.\u0777ð¹³3.; [B4, B6, V6]; xn--wkj8016bne45io02g.xn--3-55c6803r.; ; ; # ⴅ릖.Ý·ð¹³3.
xn--dnd2167fnet0io02g.xn--3-55c6803r.; Ⴅ󲬹릖󠶚.\u0777ð¹³3.; [B4, B6, V6]; xn--dnd2167fnet0io02g.xn--3-55c6803r.; ; ; # Ⴅ릖.Ý·ð¹³3.
-ⴅ󲬹릖󠶚.\u0777ð¹³â’Š; ⴅ󲬹릖󠶚.\u0777ð¹³â’Š; [B4, B6, P1, V6]; xn--wkj8016bne45io02g.xn--7pb000mwm4n; ; ; # ⴅ릖.Ý·ð¹³â’Š
-ⴅ󲬹릖󠶚.\u0777ð¹³â’Š; ; [B4, B6, P1, V6]; xn--wkj8016bne45io02g.xn--7pb000mwm4n; ; ; # ⴅ릖.Ý·ð¹³â’Š
+ⴅ󲬹릖󠶚.\u0777ð¹³â’Š; ⴅ󲬹릖󠶚.\u0777ð¹³â’Š; [B4, B6, V6]; xn--wkj8016bne45io02g.xn--7pb000mwm4n; ; ; # ⴅ릖.Ý·ð¹³â’Š
+ⴅ󲬹릖󠶚.\u0777ð¹³â’Š; ; [B4, B6, V6]; xn--wkj8016bne45io02g.xn--7pb000mwm4n; ; ; # ⴅ릖.Ý·ð¹³â’Š
xn--wkj8016bne45io02g.xn--7pb000mwm4n; ⴅ󲬹릖󠶚.\u0777ð¹³â’Š; [B4, B6, V6]; xn--wkj8016bne45io02g.xn--7pb000mwm4n; ; ; # ⴅ릖.Ý·ð¹³â’Š
xn--dnd2167fnet0io02g.xn--7pb000mwm4n; Ⴅ󲬹릖󠶚.\u0777ð¹³â’Š; [B4, B6, V6]; xn--dnd2167fnet0io02g.xn--7pb000mwm4n; ; ; # Ⴅ릖.Ý·ð¹³â’Š
-\u200C。︒; \u200C.︒; [C1, P1, V6]; xn--0ug.xn--y86c; ; .xn--y86c; [P1, V6, A4_2] # .︒
+\u200C。︒; \u200C.︒; [C1, V6]; xn--0ug.xn--y86c; ; .xn--y86c; [V6, A4_2] # .︒
\u200C。。; \u200C..; [C1, X4_2]; xn--0ug..; [C1, A4_2]; ..; [A4_2] # ..
..; ; [X4_2]; ; [A4_2]; ; # ..
xn--0ug..; \u200C..; [C1, X4_2]; xn--0ug..; [C1, A4_2]; ; # ..
.xn--y86c; .︒; [V6, X4_2]; .xn--y86c; [V6, A4_2]; ; # .︒
xn--0ug.xn--y86c; \u200C.︒; [C1, V6]; xn--0ug.xn--y86c; ; ; # .︒
-≯\u076D.₄; ≯\u076D.4; [B1, P1, V6]; xn--xpb149k.4; ; ; # ≯ݭ.4
->\u0338\u076D.₄; ≯\u076D.4; [B1, P1, V6]; xn--xpb149k.4; ; ; # ≯ݭ.4
-≯\u076D.4; ; [B1, P1, V6]; xn--xpb149k.4; ; ; # ≯ݭ.4
->\u0338\u076D.4; ≯\u076D.4; [B1, P1, V6]; xn--xpb149k.4; ; ; # ≯ݭ.4
-xn--xpb149k.4; ≯\u076D.4; [B1, V6]; xn--xpb149k.4; ; ; # ≯ݭ.4
+≯\u076D.₄; ≯\u076D.4; [B1]; xn--xpb149k.4; ; ; # ≯ݭ.4
+>\u0338\u076D.₄; ≯\u076D.4; [B1]; xn--xpb149k.4; ; ; # ≯ݭ.4
+≯\u076D.4; ; [B1]; xn--xpb149k.4; ; ; # ≯ݭ.4
+>\u0338\u076D.4; ≯\u076D.4; [B1]; xn--xpb149k.4; ; ; # ≯ݭ.4
+xn--xpb149k.4; ≯\u076D.4; [B1]; xn--xpb149k.4; ; ; # ≯ݭ.4
ᡲ-ðŸ¹.ß-\u200C-; ᡲ-3.ß-\u200C-; [C1, V3]; xn---3-p9o.xn-----fia9303a; ; xn---3-p9o.ss--; [V2, V3] # ᡲ-3.ß--
ᡲ-3.ß-\u200C-; ; [C1, V3]; xn---3-p9o.xn-----fia9303a; ; xn---3-p9o.ss--; [V2, V3] # ᡲ-3.ß--
ᡲ-3.SS-\u200C-; ᡲ-3.ss-\u200C-; [C1, V3]; xn---3-p9o.xn--ss---276a; ; xn---3-p9o.ss--; [V2, V3] # ᡲ-3.ss--
@@ -3605,360 +3619,364 @@ xn---3-p9o.xn-----fia9303a; ᡲ-3.ß-\u200C-; [C1, V3]; xn---3-p9o.xn-----fia930
ᡲ-ðŸ¹.SS-\u200C-; ᡲ-3.ss-\u200C-; [C1, V3]; xn---3-p9o.xn--ss---276a; ; xn---3-p9o.ss--; [V2, V3] # ᡲ-3.ss--
ᡲ-ðŸ¹.ss-\u200C-; ᡲ-3.ss-\u200C-; [C1, V3]; xn---3-p9o.xn--ss---276a; ; xn---3-p9o.ss--; [V2, V3] # ᡲ-3.ss--
ᡲ-ðŸ¹.Ss-\u200C-; ᡲ-3.ss-\u200C-; [C1, V3]; xn---3-p9o.xn--ss---276a; ; xn---3-p9o.ss--; [V2, V3] # ᡲ-3.ss--
-\uFD08ðŸ¦\u0647󎊯。Ӏ; \u0636\u064A4\u0647󎊯.Ó€; [B2, B3, P1, V6]; xn--4-tnc6ck183523b.xn--d5a; ; ; # ضي4Ù‡.Ó€
-\u0636\u064A4\u0647󎊯。Ӏ; \u0636\u064A4\u0647󎊯.Ӏ; [B2, B3, P1, V6]; xn--4-tnc6ck183523b.xn--d5a; ; ; # ضي4ه.Ӏ
-\u0636\u064A4\u0647󎊯。Ó; \u0636\u064A4\u0647󎊯.Ó; [B2, B3, P1, V6]; xn--4-tnc6ck183523b.xn--s5a; ; ; # ضي4Ù‡.Ó
+\uFD08ðŸ¦\u0647󎊯。Ӏ; \u0636\u064A4\u0647󎊯.Ó€; [B2, B3, V6]; xn--4-tnc6ck183523b.xn--d5a; ; ; # ضي4Ù‡.Ó€
+\u0636\u064A4\u0647󎊯。Ӏ; \u0636\u064A4\u0647󎊯.Ӏ; [B2, B3, V6]; xn--4-tnc6ck183523b.xn--d5a; ; ; # ضي4ه.Ӏ
+\u0636\u064A4\u0647󎊯。Ó; \u0636\u064A4\u0647󎊯.Ó; [B2, B3, V6]; xn--4-tnc6ck183523b.xn--s5a; ; ; # ضي4Ù‡.Ó
xn--4-tnc6ck183523b.xn--s5a; \u0636\u064A4\u0647󎊯.Ó; [B2, B3, V6]; xn--4-tnc6ck183523b.xn--s5a; ; ; # ضي4Ù‡.Ó
xn--4-tnc6ck183523b.xn--d5a; \u0636\u064A4\u0647󎊯.Ӏ; [B2, B3, V6]; xn--4-tnc6ck183523b.xn--d5a; ; ; # ضي4ه.Ӏ
-\uFD08ðŸ¦\u0647󎊯。Ó; \u0636\u064A4\u0647󎊯.Ó; [B2, B3, P1, V6]; xn--4-tnc6ck183523b.xn--s5a; ; ; # ضي4Ù‡.Ó
--.\u0602\u0622𑆾ðŸ¹; ; [B1, P1, V3, V6]; -.xn--kfb8dy983hgl7g; ; ; # -.آ𑆾ðŸ¹
--.\u0602\u0627\u0653𑆾ðŸ¹; -.\u0602\u0622𑆾ðŸ¹; [B1, P1, V3, V6]; -.xn--kfb8dy983hgl7g; ; ; # -.آ𑆾ðŸ¹
+\uFD08ðŸ¦\u0647󎊯。Ó; \u0636\u064A4\u0647󎊯.Ó; [B2, B3, V6]; xn--4-tnc6ck183523b.xn--s5a; ; ; # ضي4Ù‡.Ó
+-.\u0602\u0622𑆾ðŸ¹; ; [B1, V3, V6]; -.xn--kfb8dy983hgl7g; ; ; # -.آ𑆾ðŸ¹
+-.\u0602\u0627\u0653𑆾ðŸ¹; -.\u0602\u0622𑆾ðŸ¹; [B1, V3, V6]; -.xn--kfb8dy983hgl7g; ; ; # -.آ𑆾ðŸ¹
-.xn--kfb8dy983hgl7g; -.\u0602\u0622𑆾ðŸ¹; [B1, V3, V6]; -.xn--kfb8dy983hgl7g; ; ; # -.آ𑆾ðŸ¹
-󙶜ᢘ。\u1A7F⺢; 󙶜ᢘ.\u1A7F⺢; [P1, V5, V6]; xn--ibf35138o.xn--fpfz94g; ; ; # ᢘ.᩿⺢
+󙶜ᢘ。\u1A7F⺢; 󙶜ᢘ.\u1A7F⺢; [V5, V6]; xn--ibf35138o.xn--fpfz94g; ; ; # ᢘ.᩿⺢
xn--ibf35138o.xn--fpfz94g; 󙶜ᢘ.\u1A7F⺢; [V5, V6]; xn--ibf35138o.xn--fpfz94g; ; ; # ᢘ.᩿⺢
-≠ႷᠤႫ。?\u034C\u0633觴; ≠ႷᠤႫ.?\u034C\u0633觴; [B1, P1, V6]; xn--jndx718cnnl.xn--?-7fb34t0u7s; ; ; # ≠ႷᠤႫ.?͌س觴
-=\u0338ႷᠤႫ。?\u034C\u0633觴; ≠ႷᠤႫ.?\u034C\u0633觴; [B1, P1, V6]; xn--jndx718cnnl.xn--?-7fb34t0u7s; ; ; # ≠ႷᠤႫ.?͌س觴
-≠ႷᠤႫ。?\u034C\u0633觴; ≠ႷᠤႫ.?\u034C\u0633觴; [B1, P1, V6]; xn--jndx718cnnl.xn--?-7fb34t0u7s; ; ; # ≠ႷᠤႫ.?͌س觴
-=\u0338ႷᠤႫ。?\u034C\u0633觴; ≠ႷᠤႫ.?\u034C\u0633觴; [B1, P1, V6]; xn--jndx718cnnl.xn--?-7fb34t0u7s; ; ; # ≠ႷᠤႫ.?͌س觴
-=\u0338ⴗᠤⴋ。?\u034C\u0633觴; ≠ⴗᠤⴋ.?\u034C\u0633觴; [B1, P1, V6]; xn--66e353ce0ilb.xn--?-7fb34t0u7s; ; ; # ≠ⴗᠤⴋ.?͌س觴
-≠ⴗᠤⴋ。?\u034C\u0633觴; ≠ⴗᠤⴋ.?\u034C\u0633觴; [B1, P1, V6]; xn--66e353ce0ilb.xn--?-7fb34t0u7s; ; ; # ≠ⴗᠤⴋ.?͌س觴
-≠Ⴗᠤⴋ。?\u034C\u0633觴; ≠Ⴗᠤⴋ.?\u034C\u0633觴; [B1, P1, V6]; xn--vnd619as6ig6k.xn--?-7fb34t0u7s; ; ; # ≠Ⴗᠤⴋ.?͌س觴
-=\u0338Ⴗᠤⴋ。?\u034C\u0633觴; ≠Ⴗᠤⴋ.?\u034C\u0633觴; [B1, P1, V6]; xn--vnd619as6ig6k.xn--?-7fb34t0u7s; ; ; # ≠Ⴗᠤⴋ.?͌س觴
-xn--vnd619as6ig6k.xn--?-7fb34t0u7s; ≠Ⴗᠤⴋ.?\u034C\u0633觴; [B1, P1, V6]; xn--vnd619as6ig6k.xn--?-7fb34t0u7s; ; ; # ≠Ⴗᠤⴋ.?͌س觴
-xn--66e353ce0ilb.xn--?-7fb34t0u7s; ≠ⴗᠤⴋ.?\u034C\u0633觴; [B1, P1, V6]; xn--66e353ce0ilb.xn--?-7fb34t0u7s; ; ; # ≠ⴗᠤⴋ.?͌س觴
-xn--jndx718cnnl.xn--?-7fb34t0u7s; ≠ႷᠤႫ.?\u034C\u0633觴; [B1, P1, V6]; xn--jndx718cnnl.xn--?-7fb34t0u7s; ; ; # ≠ႷᠤႫ.?͌س觴
-=\u0338ⴗᠤⴋ。?\u034C\u0633觴; ≠ⴗᠤⴋ.?\u034C\u0633觴; [B1, P1, V6]; xn--66e353ce0ilb.xn--?-7fb34t0u7s; ; ; # ≠ⴗᠤⴋ.?͌س觴
-≠ⴗᠤⴋ。?\u034C\u0633觴; ≠ⴗᠤⴋ.?\u034C\u0633觴; [B1, P1, V6]; xn--66e353ce0ilb.xn--?-7fb34t0u7s; ; ; # ≠ⴗᠤⴋ.?͌س觴
-≠Ⴗᠤⴋ。?\u034C\u0633觴; ≠Ⴗᠤⴋ.?\u034C\u0633觴; [B1, P1, V6]; xn--vnd619as6ig6k.xn--?-7fb34t0u7s; ; ; # ≠Ⴗᠤⴋ.?͌س觴
-=\u0338Ⴗᠤⴋ。?\u034C\u0633觴; ≠Ⴗᠤⴋ.?\u034C\u0633觴; [B1, P1, V6]; xn--vnd619as6ig6k.xn--?-7fb34t0u7s; ; ; # ≠Ⴗᠤⴋ.?͌س觴
-xn--vnd619as6ig6k.?\u034C\u0633觴; ≠Ⴗᠤⴋ.?\u034C\u0633觴; [B1, P1, V6]; xn--vnd619as6ig6k.xn--?-7fb34t0u7s; ; ; # ≠Ⴗᠤⴋ.?͌س觴
-XN--VND619AS6IG6K.?\u034C\u0633觴; ≠Ⴗᠤⴋ.?\u034C\u0633觴; [B1, P1, V6]; xn--vnd619as6ig6k.xn--?-7fb34t0u7s; ; ; # ≠Ⴗᠤⴋ.?͌س觴
-Xn--Vnd619as6ig6k.?\u034C\u0633觴; ≠Ⴗᠤⴋ.?\u034C\u0633觴; [B1, P1, V6]; xn--vnd619as6ig6k.xn--?-7fb34t0u7s; ; ; # ≠Ⴗᠤⴋ.?͌س觴
-xn--66e353ce0ilb.?\u034C\u0633觴; ≠ⴗᠤⴋ.?\u034C\u0633觴; [B1, P1, V6]; xn--66e353ce0ilb.xn--?-7fb34t0u7s; ; ; # ≠ⴗᠤⴋ.?͌س觴
-XN--66E353CE0ILB.?\u034C\u0633觴; ≠ⴗᠤⴋ.?\u034C\u0633觴; [B1, P1, V6]; xn--66e353ce0ilb.xn--?-7fb34t0u7s; ; ; # ≠ⴗᠤⴋ.?͌س觴
-Xn--66e353ce0ilb.?\u034C\u0633觴; ≠ⴗᠤⴋ.?\u034C\u0633觴; [B1, P1, V6]; xn--66e353ce0ilb.xn--?-7fb34t0u7s; ; ; # ≠ⴗᠤⴋ.?͌س觴
-xn--jndx718cnnl.?\u034C\u0633觴; ≠ႷᠤႫ.?\u034C\u0633觴; [B1, P1, V6]; xn--jndx718cnnl.xn--?-7fb34t0u7s; ; ; # ≠ႷᠤႫ.?͌س觴
-XN--JNDX718CNNL.?\u034C\u0633觴; ≠ႷᠤႫ.?\u034C\u0633觴; [B1, P1, V6]; xn--jndx718cnnl.xn--?-7fb34t0u7s; ; ; # ≠ႷᠤႫ.?͌س觴
-Xn--Jndx718cnnl.?\u034C\u0633觴; ≠ႷᠤႫ.?\u034C\u0633觴; [B1, P1, V6]; xn--jndx718cnnl.xn--?-7fb34t0u7s; ; ; # ≠ႷᠤႫ.?͌س觴
-\u0667.ð¥¨; ; [B1, P1, V6]; xn--gib.xn--vm9c; ; ; # Ù§.
+≠ႷᠤႫ。?\u034C\u0633觴; ≠ႷᠤႫ.?\u034C\u0633觴; [B1, V6]; xn--jndx718cnnl.xn--?-7fb34t0u7s; ; ; # ≠ႷᠤႫ.?͌س觴
+=\u0338ႷᠤႫ。?\u034C\u0633觴; ≠ႷᠤႫ.?\u034C\u0633觴; [B1, V6]; xn--jndx718cnnl.xn--?-7fb34t0u7s; ; ; # ≠ႷᠤႫ.?͌س觴
+≠ႷᠤႫ。?\u034C\u0633觴; ≠ႷᠤႫ.?\u034C\u0633觴; [B1, V6]; xn--jndx718cnnl.xn--?-7fb34t0u7s; ; ; # ≠ႷᠤႫ.?͌س觴
+=\u0338ႷᠤႫ。?\u034C\u0633觴; ≠ႷᠤႫ.?\u034C\u0633觴; [B1, V6]; xn--jndx718cnnl.xn--?-7fb34t0u7s; ; ; # ≠ႷᠤႫ.?͌س觴
+=\u0338ⴗᠤⴋ。?\u034C\u0633觴; ≠ⴗᠤⴋ.?\u034C\u0633觴; [B1, V6]; xn--66e353ce0ilb.xn--?-7fb34t0u7s; ; ; # ≠ⴗᠤⴋ.?͌س觴
+≠ⴗᠤⴋ。?\u034C\u0633觴; ≠ⴗᠤⴋ.?\u034C\u0633觴; [B1, V6]; xn--66e353ce0ilb.xn--?-7fb34t0u7s; ; ; # ≠ⴗᠤⴋ.?͌س觴
+≠Ⴗᠤⴋ。?\u034C\u0633觴; ≠Ⴗᠤⴋ.?\u034C\u0633觴; [B1, V6]; xn--vnd619as6ig6k.xn--?-7fb34t0u7s; ; ; # ≠Ⴗᠤⴋ.?͌س觴
+=\u0338Ⴗᠤⴋ。?\u034C\u0633觴; ≠Ⴗᠤⴋ.?\u034C\u0633觴; [B1, V6]; xn--vnd619as6ig6k.xn--?-7fb34t0u7s; ; ; # ≠Ⴗᠤⴋ.?͌س觴
+xn--vnd619as6ig6k.xn--?-7fb34t0u7s; ≠Ⴗᠤⴋ.?\u034C\u0633觴; [B1, V6]; xn--vnd619as6ig6k.xn--?-7fb34t0u7s; ; ; # ≠Ⴗᠤⴋ.?͌س觴
+xn--66e353ce0ilb.xn--?-7fb34t0u7s; ≠ⴗᠤⴋ.?\u034C\u0633觴; [B1, V6]; xn--66e353ce0ilb.xn--?-7fb34t0u7s; ; ; # ≠ⴗᠤⴋ.?͌س觴
+xn--jndx718cnnl.xn--?-7fb34t0u7s; ≠ႷᠤႫ.?\u034C\u0633觴; [B1, V6]; xn--jndx718cnnl.xn--?-7fb34t0u7s; ; ; # ≠ႷᠤႫ.?͌س觴
+=\u0338ⴗᠤⴋ。?\u034C\u0633觴; ≠ⴗᠤⴋ.?\u034C\u0633觴; [B1, V6]; xn--66e353ce0ilb.xn--?-7fb34t0u7s; ; ; # ≠ⴗᠤⴋ.?͌س觴
+≠ⴗᠤⴋ。?\u034C\u0633觴; ≠ⴗᠤⴋ.?\u034C\u0633觴; [B1, V6]; xn--66e353ce0ilb.xn--?-7fb34t0u7s; ; ; # ≠ⴗᠤⴋ.?͌س觴
+≠Ⴗᠤⴋ。?\u034C\u0633觴; ≠Ⴗᠤⴋ.?\u034C\u0633觴; [B1, V6]; xn--vnd619as6ig6k.xn--?-7fb34t0u7s; ; ; # ≠Ⴗᠤⴋ.?͌س觴
+=\u0338Ⴗᠤⴋ。?\u034C\u0633觴; ≠Ⴗᠤⴋ.?\u034C\u0633觴; [B1, V6]; xn--vnd619as6ig6k.xn--?-7fb34t0u7s; ; ; # ≠Ⴗᠤⴋ.?͌س觴
+xn--vnd619as6ig6k.?\u034C\u0633觴; ≠Ⴗᠤⴋ.?\u034C\u0633觴; [B1, V6]; xn--vnd619as6ig6k.xn--?-7fb34t0u7s; ; ; # ≠Ⴗᠤⴋ.?͌س觴
+XN--VND619AS6IG6K.?\u034C\u0633觴; ≠Ⴗᠤⴋ.?\u034C\u0633觴; [B1, V6]; xn--vnd619as6ig6k.xn--?-7fb34t0u7s; ; ; # ≠Ⴗᠤⴋ.?͌س觴
+Xn--Vnd619as6ig6k.?\u034C\u0633觴; ≠Ⴗᠤⴋ.?\u034C\u0633觴; [B1, V6]; xn--vnd619as6ig6k.xn--?-7fb34t0u7s; ; ; # ≠Ⴗᠤⴋ.?͌س觴
+xn--66e353ce0ilb.?\u034C\u0633觴; ≠ⴗᠤⴋ.?\u034C\u0633觴; [B1, V6]; xn--66e353ce0ilb.xn--?-7fb34t0u7s; ; ; # ≠ⴗᠤⴋ.?͌س觴
+XN--66E353CE0ILB.?\u034C\u0633觴; ≠ⴗᠤⴋ.?\u034C\u0633觴; [B1, V6]; xn--66e353ce0ilb.xn--?-7fb34t0u7s; ; ; # ≠ⴗᠤⴋ.?͌س觴
+Xn--66e353ce0ilb.?\u034C\u0633觴; ≠ⴗᠤⴋ.?\u034C\u0633觴; [B1, V6]; xn--66e353ce0ilb.xn--?-7fb34t0u7s; ; ; # ≠ⴗᠤⴋ.?͌س觴
+xn--jndx718cnnl.?\u034C\u0633觴; ≠ႷᠤႫ.?\u034C\u0633觴; [B1, V6]; xn--jndx718cnnl.xn--?-7fb34t0u7s; ; ; # ≠ႷᠤႫ.?͌س觴
+XN--JNDX718CNNL.?\u034C\u0633觴; ≠ႷᠤႫ.?\u034C\u0633觴; [B1, V6]; xn--jndx718cnnl.xn--?-7fb34t0u7s; ; ; # ≠ႷᠤႫ.?͌س觴
+Xn--Jndx718cnnl.?\u034C\u0633觴; ≠ႷᠤႫ.?\u034C\u0633觴; [B1, V6]; xn--jndx718cnnl.xn--?-7fb34t0u7s; ; ; # ≠ႷᠤႫ.?͌س觴
+\u0667.ð¥¨; ; [B1, V6]; xn--gib.xn--vm9c; ; ; # Ù§.
xn--gib.xn--vm9c; \u0667.ð¥¨; [B1, V6]; xn--gib.xn--vm9c; ; ; # Ù§.
-\uA9C0ðŸ¯ï½¡\u200Dñ¼‘¥ð¹ª\u1BF3; \uA9C03.\u200Dñ¼‘¥ð¹ª\u1BF3; [B1, C2, P1, V5, V6]; xn--3-5z4e.xn--1zf96ony8ygd68c; ; xn--3-5z4e.xn--1zfz754hncv8b; [B5, P1, V5, V6] # ꧀3.ð¹ªá¯³
-\uA9C03。\u200Dñ¼‘¥ð¹ª\u1BF3; \uA9C03.\u200Dñ¼‘¥ð¹ª\u1BF3; [B1, C2, P1, V5, V6]; xn--3-5z4e.xn--1zf96ony8ygd68c; ; xn--3-5z4e.xn--1zfz754hncv8b; [B5, P1, V5, V6] # ꧀3.ð¹ªá¯³
+\uA9C0ðŸ¯ï½¡\u200Dñ¼‘¥ð¹ª\u1BF3; \uA9C03.\u200Dñ¼‘¥ð¹ª\u1BF3; [B1, C2, V5, V6]; xn--3-5z4e.xn--1zf96ony8ygd68c; ; xn--3-5z4e.xn--1zfz754hncv8b; [B5, V5, V6] # ꧀3.ð¹ªá¯³
+\uA9C03。\u200Dñ¼‘¥ð¹ª\u1BF3; \uA9C03.\u200Dñ¼‘¥ð¹ª\u1BF3; [B1, C2, V5, V6]; xn--3-5z4e.xn--1zf96ony8ygd68c; ; xn--3-5z4e.xn--1zfz754hncv8b; [B5, V5, V6] # ꧀3.ð¹ªá¯³
xn--3-5z4e.xn--1zfz754hncv8b; \uA9C03.ñ¼‘¥ð¹ª\u1BF3; [B5, V5, V6]; xn--3-5z4e.xn--1zfz754hncv8b; ; ; # ꧀3.ð¹ªá¯³
xn--3-5z4e.xn--1zf96ony8ygd68c; \uA9C03.\u200Dñ¼‘¥ð¹ª\u1BF3; [B1, C2, V5, V6]; xn--3-5z4e.xn--1zf96ony8ygd68c; ; ; # ꧀3.ð¹ªá¯³
-򣕄4񠖽.≯\u0664𑀾󠸌; ; [B1, P1, V6]; xn--4-fg85dl688i.xn--dib174li86ntdy0i; ; ; # 4.≯٤𑀾
-򣕄4񠖽.>\u0338\u0664𑀾󠸌; 򣕄4񠖽.≯\u0664𑀾󠸌; [B1, P1, V6]; xn--4-fg85dl688i.xn--dib174li86ntdy0i; ; ; # 4.≯٤𑀾
+򣕄4񠖽.≯\u0664𑀾󠸌; ; [B1, V6]; xn--4-fg85dl688i.xn--dib174li86ntdy0i; ; ; # 4.≯٤𑀾
+򣕄4񠖽.>\u0338\u0664𑀾󠸌; 򣕄4񠖽.≯\u0664𑀾󠸌; [B1, V6]; xn--4-fg85dl688i.xn--dib174li86ntdy0i; ; ; # 4.≯٤𑀾
xn--4-fg85dl688i.xn--dib174li86ntdy0i; 򣕄4񠖽.≯\u0664𑀾󠸌; [B1, V6]; xn--4-fg85dl688i.xn--dib174li86ntdy0i; ; ; # 4.≯٤𑀾
-ò—†§ðŸ¯ã€‚â’ˆ\u1A76ðŸšò ˜Œ; ò—†§3.â’ˆ\u1A762ò ˜Œ; [P1, V6]; xn--3-rj42h.xn--2-13k746cq465x; ; ; # 3.⒈᩶2
-򗆧3。1.\u1A762򠘌; 򗆧3.1.\u1A762򠘌; [P1, V5, V6]; xn--3-rj42h.1.xn--2-13k96240l; ; ; # 3.1.᩶2
+ò—†§ðŸ¯ã€‚â’ˆ\u1A76ðŸšò ˜Œ; ò—†§3.â’ˆ\u1A762ò ˜Œ; [V6]; xn--3-rj42h.xn--2-13k746cq465x; ; ; # 3.⒈᩶2
+򗆧3。1.\u1A762򠘌; 򗆧3.1.\u1A762򠘌; [V5, V6]; xn--3-rj42h.1.xn--2-13k96240l; ; ; # 3.1.᩶2
xn--3-rj42h.1.xn--2-13k96240l; 򗆧3.1.\u1A762򠘌; [V5, V6]; xn--3-rj42h.1.xn--2-13k96240l; ; ; # 3.1.᩶2
xn--3-rj42h.xn--2-13k746cq465x; 򗆧3.⒈\u1A762򠘌; [V6]; xn--3-rj42h.xn--2-13k746cq465x; ; ; # 3.⒈᩶2
-\u200D₅⒈。≯ðŸ´\u200D; \u200D5â’ˆ.≯8\u200D; [C2, P1, V6]; xn--5-tgnz5r.xn--8-ugn00i; ; xn--5-ecp.xn--8-ogo; [P1, V6] # 5â’ˆ.≯8
-\u200D₅⒈。>\u0338ðŸ´\u200D; \u200D5â’ˆ.≯8\u200D; [C2, P1, V6]; xn--5-tgnz5r.xn--8-ugn00i; ; xn--5-ecp.xn--8-ogo; [P1, V6] # 5â’ˆ.≯8
-\u200D51.。≯8\u200D; \u200D51..≯8\u200D; [C2, P1, V6, X4_2]; xn--51-l1t..xn--8-ugn00i; [C2, P1, V6, A4_2]; 51..xn--8-ogo; [P1, V6, A4_2] # 51..≯8
-\u200D51.。>\u03388\u200D; \u200D51..≯8\u200D; [C2, P1, V6, X4_2]; xn--51-l1t..xn--8-ugn00i; [C2, P1, V6, A4_2]; 51..xn--8-ogo; [P1, V6, A4_2] # 51..≯8
-51..xn--8-ogo; 51..≯8; [V6, X4_2]; 51..xn--8-ogo; [V6, A4_2]; ; # 51..≯8
-xn--51-l1t..xn--8-ugn00i; \u200D51..≯8\u200D; [C2, V6, X4_2]; xn--51-l1t..xn--8-ugn00i; [C2, V6, A4_2]; ; # 51..≯8
+\u200D₅⒈。≯ðŸ´\u200D; \u200D5â’ˆ.≯8\u200D; [C2, V6]; xn--5-tgnz5r.xn--8-ugn00i; ; xn--5-ecp.xn--8-ogo; [V6] # 5â’ˆ.≯8
+\u200D₅⒈。>\u0338ðŸ´\u200D; \u200D5â’ˆ.≯8\u200D; [C2, V6]; xn--5-tgnz5r.xn--8-ugn00i; ; xn--5-ecp.xn--8-ogo; [V6] # 5â’ˆ.≯8
+\u200D51.。≯8\u200D; \u200D51..≯8\u200D; [C2, X4_2]; xn--51-l1t..xn--8-ugn00i; [C2, A4_2]; 51..xn--8-ogo; [A4_2] # 51..≯8
+\u200D51.。>\u03388\u200D; \u200D51..≯8\u200D; [C2, X4_2]; xn--51-l1t..xn--8-ugn00i; [C2, A4_2]; 51..xn--8-ogo; [A4_2] # 51..≯8
+51..xn--8-ogo; 51..≯8; [X4_2]; 51..xn--8-ogo; [A4_2]; ; # 51..≯8
+xn--51-l1t..xn--8-ugn00i; \u200D51..≯8\u200D; [C2, X4_2]; xn--51-l1t..xn--8-ugn00i; [C2, A4_2]; ; # 51..≯8
xn--5-ecp.xn--8-ogo; 5⒈.≯8; [V6]; xn--5-ecp.xn--8-ogo; ; ; # 5⒈.≯8
xn--5-tgnz5r.xn--8-ugn00i; \u200D5⒈.≯8\u200D; [C2, V6]; xn--5-tgnz5r.xn--8-ugn00i; ; ; # 5⒈.≯8
-ꡰ\u0697\u1086.򪘙\u072F≠\u200C; ꡰ\u0697\u1086.򪘙\u072F≠\u200C; [B5, B6, C1, P1, V6]; xn--tjb002cn51k.xn--5nb448jcubcz547b; ; xn--tjb002cn51k.xn--5nb630lbj91q; [B5, B6, P1, V6] # ꡰڗႆ.ܯ≠
-ꡰ\u0697\u1086.򪘙\u072F=\u0338\u200C; ꡰ\u0697\u1086.򪘙\u072F≠\u200C; [B5, B6, C1, P1, V6]; xn--tjb002cn51k.xn--5nb448jcubcz547b; ; xn--tjb002cn51k.xn--5nb630lbj91q; [B5, B6, P1, V6] # ꡰڗႆ.ܯ≠
-ꡰ\u0697\u1086.򪘙\u072F≠\u200C; ; [B5, B6, C1, P1, V6]; xn--tjb002cn51k.xn--5nb448jcubcz547b; ; xn--tjb002cn51k.xn--5nb630lbj91q; [B5, B6, P1, V6] # ꡰڗႆ.ܯ≠
-ꡰ\u0697\u1086.򪘙\u072F=\u0338\u200C; ꡰ\u0697\u1086.򪘙\u072F≠\u200C; [B5, B6, C1, P1, V6]; xn--tjb002cn51k.xn--5nb448jcubcz547b; ; xn--tjb002cn51k.xn--5nb630lbj91q; [B5, B6, P1, V6] # ꡰڗႆ.ܯ≠
+ꡰ\u0697\u1086.򪘙\u072F≠\u200C; ꡰ\u0697\u1086.򪘙\u072F≠\u200C; [B5, B6, C1, V6]; xn--tjb002cn51k.xn--5nb448jcubcz547b; ; xn--tjb002cn51k.xn--5nb630lbj91q; [B5, B6, V6] # ꡰڗႆ.ܯ≠
+ꡰ\u0697\u1086.򪘙\u072F=\u0338\u200C; ꡰ\u0697\u1086.򪘙\u072F≠\u200C; [B5, B6, C1, V6]; xn--tjb002cn51k.xn--5nb448jcubcz547b; ; xn--tjb002cn51k.xn--5nb630lbj91q; [B5, B6, V6] # ꡰڗႆ.ܯ≠
+ꡰ\u0697\u1086.򪘙\u072F≠\u200C; ; [B5, B6, C1, V6]; xn--tjb002cn51k.xn--5nb448jcubcz547b; ; xn--tjb002cn51k.xn--5nb630lbj91q; [B5, B6, V6] # ꡰڗႆ.ܯ≠
+ꡰ\u0697\u1086.򪘙\u072F=\u0338\u200C; ꡰ\u0697\u1086.򪘙\u072F≠\u200C; [B5, B6, C1, V6]; xn--tjb002cn51k.xn--5nb448jcubcz547b; ; xn--tjb002cn51k.xn--5nb630lbj91q; [B5, B6, V6] # ꡰڗႆ.ܯ≠
xn--tjb002cn51k.xn--5nb630lbj91q; ꡰ\u0697\u1086.򪘙\u072F≠; [B5, B6, V6]; xn--tjb002cn51k.xn--5nb630lbj91q; ; ; # ꡰڗႆ.ܯ≠
xn--tjb002cn51k.xn--5nb448jcubcz547b; ꡰ\u0697\u1086.򪘙\u072F≠\u200C; [B5, B6, C1, V6]; xn--tjb002cn51k.xn--5nb448jcubcz547b; ; ; # ꡰڗႆ.ܯ≠
-𑄱。òªŒ¿ð¹µ; ð‘„±.òªŒ¿ð¹µ; [B1, B3, B5, B6, P1, V5, V6]; xn--t80d.xn--to0d14792b; ; ; # ð‘„±.ð¹µ
-𑄱。òªŒ¿ð¹µ; ð‘„±.òªŒ¿ð¹µ; [B1, B3, B5, B6, P1, V5, V6]; xn--t80d.xn--to0d14792b; ; ; # ð‘„±.ð¹µ
-xn--t80d.xn--to0d14792b; ð‘„±.òªŒ¿ð¹µ; [B1, B3, B5, B6, V5, V6]; xn--t80d.xn--to0d14792b; ; ; # ð‘„±.ð¹µ
-ðŸ¥\u0600。\u073D; 3\u0600.\u073D; [B1, B3, B6, P1, V5, V6]; xn--3-rkc.xn--kob; ; ; # 3.ܽ
-3\u0600。\u073D; 3\u0600.\u073D; [B1, B3, B6, P1, V5, V6]; xn--3-rkc.xn--kob; ; ; # 3.ܽ
-xn--3-rkc.xn--kob; 3\u0600.\u073D; [B1, B3, B6, V5, V6]; xn--3-rkc.xn--kob; ; ; # 3.ܽ
+𑄱。òªŒ¿ð¹µ; ð‘„±.òªŒ¿ð¹µ; [B1, B5, B6, V5, V6]; xn--t80d.xn--to0d14792b; ; ; # ð‘„±.ð¹µ
+𑄱。òªŒ¿ð¹µ; ð‘„±.òªŒ¿ð¹µ; [B1, B5, B6, V5, V6]; xn--t80d.xn--to0d14792b; ; ; # ð‘„±.ð¹µ
+xn--t80d.xn--to0d14792b; ð‘„±.òªŒ¿ð¹µ; [B1, B5, B6, V5, V6]; xn--t80d.xn--to0d14792b; ; ; # ð‘„±.ð¹µ
+ðŸ¥\u0600。\u073D; 3\u0600.\u073D; [B1, V5, V6]; xn--3-rkc.xn--kob; ; ; # 3.ܽ
+3\u0600。\u073D; 3\u0600.\u073D; [B1, V5, V6]; xn--3-rkc.xn--kob; ; ; # 3.ܽ
+xn--3-rkc.xn--kob; 3\u0600.\u073D; [B1, V5, V6]; xn--3-rkc.xn--kob; ; ; # 3.ܽ
\u0637ð¹£\u0666.\u076D긷; ; [B2, B3]; xn--2gb8gu829f.xn--xpb0156f; ; ; # Ø·ð¹£Ù¦.ݭ긷
\u0637ð¹£\u0666.\u076D긷; \u0637ð¹£\u0666.\u076D긷; [B2, B3]; xn--2gb8gu829f.xn--xpb0156f; ; ; # Ø·ð¹£Ù¦.ݭ긷
xn--2gb8gu829f.xn--xpb0156f; \u0637ð¹£\u0666.\u076D긷; [B2, B3]; xn--2gb8gu829f.xn--xpb0156f; ; ; # Ø·ð¹£Ù¦.ݭ긷
-︒Ↄ\u2DE7ò¾€ƒï¼Žá‚·ð£ž; ︒Ↄ\u2DE7ò¾€ƒ.á‚·ð£ž; [B1, B5, B6, P1, V6]; xn--q5g000c056n0226g.xn--vnd8618j; ; ; # ︒Ↄⷧ.á‚·
-。Ↄ\u2DE7ò¾€ƒ.á‚·ð£ž; .Ↄ\u2DE7ò¾€ƒ.á‚·ð£ž; [B5, B6, P1, V6, X4_2]; .xn--q5g000cll06u.xn--vnd8618j; [B5, B6, P1, V6, A4_2]; ; # .Ↄⷧ.á‚·
-。ↄ\u2DE7ò¾€ƒ.â´—ð£ž; .ↄ\u2DE7ò¾€ƒ.â´—ð£ž; [B5, B6, P1, V6, X4_2]; .xn--r5gy00cll06u.xn--flj4541e; [B5, B6, P1, V6, A4_2]; ; # .ↄⷧ.â´—
+︒Ↄ\u2DE7ò¾€ƒï¼Žá‚·ð£ž; ︒Ↄ\u2DE7ò¾€ƒ.á‚·ð£ž; [B1, B5, B6, V6]; xn--q5g000c056n0226g.xn--vnd8618j; ; ; # ︒Ↄⷧ.á‚·
+。Ↄ\u2DE7ò¾€ƒ.á‚·ð£ž; .Ↄ\u2DE7ò¾€ƒ.á‚·ð£ž; [B5, B6, V6, X4_2]; .xn--q5g000cll06u.xn--vnd8618j; [B5, B6, V6, A4_2]; ; # .Ↄⷧ.á‚·
+。ↄ\u2DE7ò¾€ƒ.â´—ð£ž; .ↄ\u2DE7ò¾€ƒ.â´—ð£ž; [B5, B6, V6, X4_2]; .xn--r5gy00cll06u.xn--flj4541e; [B5, B6, V6, A4_2]; ; # .ↄⷧ.â´—
.xn--r5gy00cll06u.xn--flj4541e; .ↄ\u2DE7ò¾€ƒ.â´—ð£ž; [B5, B6, V6, X4_2]; .xn--r5gy00cll06u.xn--flj4541e; [B5, B6, V6, A4_2]; ; # .ↄⷧ.â´—
.xn--q5g000cll06u.xn--vnd8618j; .Ↄ\u2DE7ò¾€ƒ.á‚·ð£ž; [B5, B6, V6, X4_2]; .xn--q5g000cll06u.xn--vnd8618j; [B5, B6, V6, A4_2]; ; # .Ↄⷧ.á‚·
-︒ↄ\u2DE7ò¾€ƒï¼Žâ´—ð£ž; ︒ↄ\u2DE7ò¾€ƒ.â´—ð£ž; [B1, B5, B6, P1, V6]; xn--r5gy00c056n0226g.xn--flj4541e; ; ; # ︒ↄⷧ.â´—
+︒ↄ\u2DE7ò¾€ƒï¼Žâ´—ð£ž; ︒ↄ\u2DE7ò¾€ƒ.â´—ð£ž; [B1, B5, B6, V6]; xn--r5gy00c056n0226g.xn--flj4541e; ; ; # ︒ↄⷧ.â´—
xn--r5gy00c056n0226g.xn--flj4541e; ︒ↄ\u2DE7ò¾€ƒ.â´—ð£ž; [B1, B5, B6, V6]; xn--r5gy00c056n0226g.xn--flj4541e; ; ; # ︒ↄⷧ.â´—
xn--q5g000c056n0226g.xn--vnd8618j; ︒Ↄ\u2DE7ò¾€ƒ.á‚·ð£ž; [B1, B5, B6, V6]; xn--q5g000c056n0226g.xn--vnd8618j; ; ; # ︒Ↄⷧ.á‚·
-\u0600.\u05B1; ; [B1, B3, B6, P1, V5, V6]; xn--ifb.xn--8cb; ; ; # .Ö±
-xn--ifb.xn--8cb; \u0600.\u05B1; [B1, B3, B6, V5, V6]; xn--ifb.xn--8cb; ; ; # .Ö±
-ς≯。ð¹½; ς≯.ð¹½; [B1, B6, P1, V6]; xn--3xa028m.xn--1o0d; ; xn--4xa818m.xn--1o0d; # ς≯.ð¹½
-Ï‚>\u0338。ð¹½; ς≯.ð¹½; [B1, B6, P1, V6]; xn--3xa028m.xn--1o0d; ; xn--4xa818m.xn--1o0d; # ς≯.ð¹½
-ς≯。ð¹½; ς≯.ð¹½; [B1, B6, P1, V6]; xn--3xa028m.xn--1o0d; ; xn--4xa818m.xn--1o0d; # ς≯.ð¹½
-Ï‚>\u0338。ð¹½; ς≯.ð¹½; [B1, B6, P1, V6]; xn--3xa028m.xn--1o0d; ; xn--4xa818m.xn--1o0d; # ς≯.ð¹½
-Σ>\u0338。ð¹½; σ≯.ð¹½; [B1, B6, P1, V6]; xn--4xa818m.xn--1o0d; ; ; # σ≯.ð¹½
-Σ≯。ð¹½; σ≯.ð¹½; [B1, B6, P1, V6]; xn--4xa818m.xn--1o0d; ; ; # σ≯.ð¹½
-σ≯。ð¹½; σ≯.ð¹½; [B1, B6, P1, V6]; xn--4xa818m.xn--1o0d; ; ; # σ≯.ð¹½
-σ>\u0338。ð¹½; σ≯.ð¹½; [B1, B6, P1, V6]; xn--4xa818m.xn--1o0d; ; ; # σ≯.ð¹½
-xn--4xa818m.xn--1o0d; σ≯.ð¹½; [B1, B6, V6]; xn--4xa818m.xn--1o0d; ; ; # σ≯.ð¹½
-xn--3xa028m.xn--1o0d; ς≯.ð¹½; [B1, B6, V6]; xn--3xa028m.xn--1o0d; ; ; # ς≯.ð¹½
-Σ>\u0338。ð¹½; σ≯.ð¹½; [B1, B6, P1, V6]; xn--4xa818m.xn--1o0d; ; ; # σ≯.ð¹½
-Σ≯。ð¹½; σ≯.ð¹½; [B1, B6, P1, V6]; xn--4xa818m.xn--1o0d; ; ; # σ≯.ð¹½
-σ≯。ð¹½; σ≯.ð¹½; [B1, B6, P1, V6]; xn--4xa818m.xn--1o0d; ; ; # σ≯.ð¹½
-σ>\u0338。ð¹½; σ≯.ð¹½; [B1, B6, P1, V6]; xn--4xa818m.xn--1o0d; ; ; # σ≯.ð¹½
+\u0600.\u05B1; ; [B1, V5, V6]; xn--ifb.xn--8cb; ; ; # .Ö±
+xn--ifb.xn--8cb; \u0600.\u05B1; [B1, V5, V6]; xn--ifb.xn--8cb; ; ; # .Ö±
+ς≯。ð¹½; ς≯.ð¹½; [B1, B6]; xn--3xa028m.xn--1o0d; ; xn--4xa818m.xn--1o0d; # ς≯.ð¹½
+Ï‚>\u0338。ð¹½; ς≯.ð¹½; [B1, B6]; xn--3xa028m.xn--1o0d; ; xn--4xa818m.xn--1o0d; # ς≯.ð¹½
+ς≯。ð¹½; ς≯.ð¹½; [B1, B6]; xn--3xa028m.xn--1o0d; ; xn--4xa818m.xn--1o0d; # ς≯.ð¹½
+Ï‚>\u0338。ð¹½; ς≯.ð¹½; [B1, B6]; xn--3xa028m.xn--1o0d; ; xn--4xa818m.xn--1o0d; # ς≯.ð¹½
+Σ>\u0338。ð¹½; σ≯.ð¹½; [B1, B6]; xn--4xa818m.xn--1o0d; ; ; # σ≯.ð¹½
+Σ≯。ð¹½; σ≯.ð¹½; [B1, B6]; xn--4xa818m.xn--1o0d; ; ; # σ≯.ð¹½
+σ≯。ð¹½; σ≯.ð¹½; [B1, B6]; xn--4xa818m.xn--1o0d; ; ; # σ≯.ð¹½
+σ>\u0338。ð¹½; σ≯.ð¹½; [B1, B6]; xn--4xa818m.xn--1o0d; ; ; # σ≯.ð¹½
+xn--4xa818m.xn--1o0d; σ≯.ð¹½; [B1, B6]; xn--4xa818m.xn--1o0d; ; ; # σ≯.ð¹½
+xn--3xa028m.xn--1o0d; ς≯.ð¹½; [B1, B6]; xn--3xa028m.xn--1o0d; ; ; # ς≯.ð¹½
+Σ>\u0338。ð¹½; σ≯.ð¹½; [B1, B6]; xn--4xa818m.xn--1o0d; ; ; # σ≯.ð¹½
+Σ≯。ð¹½; σ≯.ð¹½; [B1, B6]; xn--4xa818m.xn--1o0d; ; ; # σ≯.ð¹½
+σ≯。ð¹½; σ≯.ð¹½; [B1, B6]; xn--4xa818m.xn--1o0d; ; ; # σ≯.ð¹½
+σ>\u0338。ð¹½; σ≯.ð¹½; [B1, B6]; xn--4xa818m.xn--1o0d; ; ; # σ≯.ð¹½
\u17D2\u200D\u075F。ð¹¶; \u17D2\u200D\u075F.ð¹¶; [B1, V5]; xn--jpb535fv9f.xn--uo0d; ; xn--jpb535f.xn--uo0d; # ្ݟ.ð¹¶
xn--jpb535f.xn--uo0d; \u17D2\u075F.ð¹¶; [B1, V5]; xn--jpb535f.xn--uo0d; ; ; # ្ݟ.ð¹¶
xn--jpb535fv9f.xn--uo0d; \u17D2\u200D\u075F.ð¹¶; [B1, V5]; xn--jpb535fv9f.xn--uo0d; ; ; # ្ݟ.ð¹¶
-𾷂\u0A42Ⴊ񂂟.≮; ; [P1, V6]; xn--nbc493aro75ggskb.xn--gdh; ; ; # ੂႪ.≮
-𾷂\u0A42Ⴊ񂂟.<\u0338; 𾷂\u0A42Ⴊ񂂟.≮; [P1, V6]; xn--nbc493aro75ggskb.xn--gdh; ; ; # ੂႪ.≮
-𾷂\u0A42ⴊ񂂟.<\u0338; 𾷂\u0A42ⴊ񂂟.≮; [P1, V6]; xn--nbc229o4y27dgskb.xn--gdh; ; ; # ੂⴊ.≮
-𾷂\u0A42ⴊ񂂟.≮; ; [P1, V6]; xn--nbc229o4y27dgskb.xn--gdh; ; ; # ੂⴊ.≮
+𾷂\u0A42Ⴊ񂂟.≮; ; [V6]; xn--nbc493aro75ggskb.xn--gdh; ; ; # ੂႪ.≮
+𾷂\u0A42Ⴊ񂂟.<\u0338; 𾷂\u0A42Ⴊ񂂟.≮; [V6]; xn--nbc493aro75ggskb.xn--gdh; ; ; # ੂႪ.≮
+𾷂\u0A42ⴊ񂂟.<\u0338; 𾷂\u0A42ⴊ񂂟.≮; [V6]; xn--nbc229o4y27dgskb.xn--gdh; ; ; # ੂⴊ.≮
+𾷂\u0A42ⴊ񂂟.≮; ; [V6]; xn--nbc229o4y27dgskb.xn--gdh; ; ; # ੂⴊ.≮
xn--nbc229o4y27dgskb.xn--gdh; 𾷂\u0A42ⴊ񂂟.≮; [V6]; xn--nbc229o4y27dgskb.xn--gdh; ; ; # ੂⴊ.≮
xn--nbc493aro75ggskb.xn--gdh; 𾷂\u0A42Ⴊ񂂟.≮; [V6]; xn--nbc493aro75ggskb.xn--gdh; ; ; # ੂႪ.≮
ꡠ.۲; ꡠ.۲; ; xn--5c9a.xn--fmb; ; ; # ꡠ.۲
ê¡ .Û²; ; ; xn--5c9a.xn--fmb; ; ; # ê¡ .Û²
xn--5c9a.xn--fmb; ê¡ .Û²; ; xn--5c9a.xn--fmb; ; ; # ê¡ .Û²
-ð¹£ñ„·„。ꡬ🄄; ð¹£ñ„·„.ꡬ🄄; [B1, P1, V6]; xn--bo0d0203l.xn--id9a4443d; ; ; # ð¹£.ꡬ🄄
-ð¹£ñ„·„。ꡬ3,; ð¹£ñ„·„.ꡬ3,; [B1, B6, P1, V6]; xn--bo0d0203l.xn--3,-yj9h; ; ; # ð¹£.ꡬ3,
-xn--bo0d0203l.xn--3,-yj9h; ð¹£ñ„·„.ꡬ3,; [B1, B6, P1, V6]; xn--bo0d0203l.xn--3,-yj9h; ; ; # ð¹£.ꡬ3,
+ð¹£ñ„·„。ꡬ🄄; ð¹£ñ„·„.ꡬ🄄; [B1, V6]; xn--bo0d0203l.xn--id9a4443d; ; ; # ð¹£.ꡬ🄄
+ð¹£ñ„·„。ꡬ3,; ð¹£ñ„·„.ꡬ3,; [B1, B6, V6]; xn--bo0d0203l.xn--3,-yj9h; ; ; # ð¹£.ꡬ3,
+xn--bo0d0203l.xn--3,-yj9h; ð¹£ñ„·„.ꡬ3,; [B1, B6, V6]; xn--bo0d0203l.xn--3,-yj9h; ; ; # ð¹£.ꡬ3,
xn--bo0d0203l.xn--id9a4443d; ð¹£ñ„·„.ꡬ🄄; [B1, V6]; xn--bo0d0203l.xn--id9a4443d; ; ; # ð¹£.ꡬ🄄
--\u0C4D𞾀𑲓。\u200D\u0D4D; -\u0C4D𞾀𑲓.\u200D\u0D4D; [B1, C2, P1, V3, V6]; xn----x6e0220sclug.xn--wxc317g; ; xn----x6e0220sclug.xn--wxc; [B1, B3, B6, P1, V3, V5, V6] # -à±ð‘²“.àµ
--\u0C4D𞾀𑲓。\u200D\u0D4D; -\u0C4D𞾀𑲓.\u200D\u0D4D; [B1, C2, P1, V3, V6]; xn----x6e0220sclug.xn--wxc317g; ; xn----x6e0220sclug.xn--wxc; [B1, B3, B6, P1, V3, V5, V6] # -à±ð‘²“.àµ
-xn----x6e0220sclug.xn--wxc; -\u0C4D𞾀𑲓.\u0D4D; [B1, B3, B6, V3, V5, V6]; xn----x6e0220sclug.xn--wxc; ; ; # -à±ð‘²“.àµ
+-\u0C4D𞾀𑲓。\u200D\u0D4D; -\u0C4D𞾀𑲓.\u200D\u0D4D; [B1, C2, V3, V6]; xn----x6e0220sclug.xn--wxc317g; ; xn----x6e0220sclug.xn--wxc; [B1, V3, V5, V6] # -à±ð‘²“.àµ
+-\u0C4D𞾀𑲓。\u200D\u0D4D; -\u0C4D𞾀𑲓.\u200D\u0D4D; [B1, C2, V3, V6]; xn----x6e0220sclug.xn--wxc317g; ; xn----x6e0220sclug.xn--wxc; [B1, V3, V5, V6] # -à±ð‘²“.àµ
+xn----x6e0220sclug.xn--wxc; -\u0C4D𞾀𑲓.\u0D4D; [B1, V3, V5, V6]; xn----x6e0220sclug.xn--wxc; ; ; # -à±ð‘²“.àµ
xn----x6e0220sclug.xn--wxc317g; -\u0C4D𞾀𑲓.\u200D\u0D4D; [B1, C2, V3, V6]; xn----x6e0220sclug.xn--wxc317g; ; ; # -à±ð‘²“.àµ
-\uA67D\u200C霣🄆。\u200Cð‘‚\u1B01; \uA67D\u200C霣🄆.\u200Cð‘‚\u1B01; [C1, P1, V5, V6]; xn--0ug4208b2vjuk63a.xn--4sf36u6u4w; ; xn--2q5a751a653w.xn--4sf0725i; [P1, V5, V6] # ꙽霣🄆.ð‘‚á¬
-\uA67D\u200C霣🄆。\u200Cð‘‚\u1B01; \uA67D\u200C霣🄆.\u200Cð‘‚\u1B01; [C1, P1, V5, V6]; xn--0ug4208b2vjuk63a.xn--4sf36u6u4w; ; xn--2q5a751a653w.xn--4sf0725i; [P1, V5, V6] # ꙽霣🄆.ð‘‚á¬
-\uA67D\u200C霣5,。\u200Cð‘‚\u1B01; \uA67D\u200C霣5,.\u200Cð‘‚\u1B01; [C1, P1, V5, V6]; xn--5,-i1tz135dnbqa.xn--4sf36u6u4w; ; xn--5,-op8g373c.xn--4sf0725i; [P1, V5, V6] # ꙽霣5,.ð‘‚á¬
-xn--5,-op8g373c.xn--4sf0725i; \uA67D霣5,.ð‘‚\u1B01; [P1, V5, V6]; xn--5,-op8g373c.xn--4sf0725i; ; ; # ꙽霣5,.ð‘‚á¬
-xn--5,-i1tz135dnbqa.xn--4sf36u6u4w; \uA67D\u200C霣5,.\u200Cð‘‚\u1B01; [C1, P1, V5, V6]; xn--5,-i1tz135dnbqa.xn--4sf36u6u4w; ; ; # ꙽霣5,.ð‘‚á¬
+\uA67D\u200C霣🄆。\u200Cð‘‚\u1B01; \uA67D\u200C霣🄆.\u200Cð‘‚\u1B01; [C1, V5, V6]; xn--0ug4208b2vjuk63a.xn--4sf36u6u4w; ; xn--2q5a751a653w.xn--4sf0725i; [V5, V6] # ꙽霣🄆.ð‘‚á¬
+\uA67D\u200C霣🄆。\u200Cð‘‚\u1B01; \uA67D\u200C霣🄆.\u200Cð‘‚\u1B01; [C1, V5, V6]; xn--0ug4208b2vjuk63a.xn--4sf36u6u4w; ; xn--2q5a751a653w.xn--4sf0725i; [V5, V6] # ꙽霣🄆.ð‘‚á¬
+\uA67D\u200C霣5,。\u200Cð‘‚\u1B01; \uA67D\u200C霣5,.\u200Cð‘‚\u1B01; [C1, V5, V6]; xn--5,-i1tz135dnbqa.xn--4sf36u6u4w; ; xn--5,-op8g373c.xn--4sf0725i; [V5, V6] # ꙽霣5,.ð‘‚á¬
+xn--5,-op8g373c.xn--4sf0725i; \uA67D霣5,.ð‘‚\u1B01; [V5, V6]; xn--5,-op8g373c.xn--4sf0725i; ; ; # ꙽霣5,.ð‘‚á¬
+xn--5,-i1tz135dnbqa.xn--4sf36u6u4w; \uA67D\u200C霣5,.\u200Cð‘‚\u1B01; [C1, V5, V6]; xn--5,-i1tz135dnbqa.xn--4sf36u6u4w; ; ; # ꙽霣5,.ð‘‚á¬
xn--2q5a751a653w.xn--4sf0725i; \uA67D霣🄆.ð‘‚\u1B01; [V5, V6]; xn--2q5a751a653w.xn--4sf0725i; ; ; # ꙽霣🄆.ð‘‚á¬
xn--0ug4208b2vjuk63a.xn--4sf36u6u4w; \uA67D\u200C霣🄆.\u200Cð‘‚\u1B01; [C1, V5, V6]; xn--0ug4208b2vjuk63a.xn--4sf36u6u4w; ; ; # ꙽霣🄆.ð‘‚á¬
-兎。ᠼ󠴜𑚶𑰿; 兎.ᠼ󠴜𑚶𑰿; [P1, V6]; xn--b5q.xn--v7e6041kqqd4m251b; ; ; # 兎.ᠼ𑚶𑰿
-兎。ᠼ󠴜𑚶𑰿; 兎.ᠼ󠴜𑚶𑰿; [P1, V6]; xn--b5q.xn--v7e6041kqqd4m251b; ; ; # 兎.ᠼ𑚶𑰿
+兎。ᠼ󠴜𑚶𑰿; 兎.ᠼ󠴜𑚶𑰿; [V6]; xn--b5q.xn--v7e6041kqqd4m251b; ; ; # 兎.ᠼ𑚶𑰿
+兎。ᠼ󠴜𑚶𑰿; 兎.ᠼ󠴜𑚶𑰿; [V6]; xn--b5q.xn--v7e6041kqqd4m251b; ; ; # 兎.ᠼ𑚶𑰿
xn--b5q.xn--v7e6041kqqd4m251b; 兎.ᠼ󠴜𑚶𑰿; [V6]; xn--b5q.xn--v7e6041kqqd4m251b; ; ; # 兎.ᠼ𑚶𑰿
ðŸ™ï½¡\u200DðŸ¸\u200Dâ·; 1.\u200D2\u200D7; [C2]; 1.xn--27-l1tb; ; 1.27; [] # 1.27
1。\u200D2\u200D7; 1.\u200D2\u200D7; [C2]; 1.xn--27-l1tb; ; 1.27; [] # 1.27
1.27; ; ; ; ; ; # 1.27
1.xn--27-l1tb; 1.\u200D2\u200D7; [C2]; 1.xn--27-l1tb; ; ; # 1.27
-ᡨ-。󠻋ðŸ·; ᡨ-.ó »‹1; [P1, V3, V6]; xn----z8j.xn--1-5671m; ; ; # ᡨ-.1
-ᡨ-。󠻋1; ᡨ-.󠻋1; [P1, V3, V6]; xn----z8j.xn--1-5671m; ; ; # ᡨ-.1
+ᡨ-。󠻋ðŸ·; ᡨ-.ó »‹1; [V3, V6]; xn----z8j.xn--1-5671m; ; ; # ᡨ-.1
+ᡨ-。󠻋1; ᡨ-.󠻋1; [V3, V6]; xn----z8j.xn--1-5671m; ; ; # ᡨ-.1
xn----z8j.xn--1-5671m; ᡨ-.󠻋1; [V3, V6]; xn----z8j.xn--1-5671m; ; ; # ᡨ-.1
-ð‘°»ñµ€ð«šï¼Ž\u0668â¹; ð‘°»ñµ€ð«š.\u06689; [B1, P1, V5, V6]; xn--gx9cr01aul57i.xn--9-oqc; ; ; # ð‘°»ð«š.Ù¨9
-ð‘°»ñµ€ð«š.\u06689; ; [B1, P1, V5, V6]; xn--gx9cr01aul57i.xn--9-oqc; ; ; # ð‘°»ð«š.Ù¨9
+ð‘°»ñµ€ð«šï¼Ž\u0668â¹; ð‘°»ñµ€ð«š.\u06689; [B1, V5, V6]; xn--gx9cr01aul57i.xn--9-oqc; ; ; # ð‘°»ð«š.Ù¨9
+ð‘°»ñµ€ð«š.\u06689; ; [B1, V5, V6]; xn--gx9cr01aul57i.xn--9-oqc; ; ; # ð‘°»ð«š.Ù¨9
xn--gx9cr01aul57i.xn--9-oqc; ð‘°»ñµ€ð«š.\u06689; [B1, V5, V6]; xn--gx9cr01aul57i.xn--9-oqc; ; ; # ð‘°»ð«š.Ù¨9
-Ⴜ򈷭\u0F80⾇。Ⴏ♀\u200C\u200C; Ⴜ򈷭\u0F80舛.Ⴏ♀\u200C\u200C; [C1, P1, V6]; xn--zed54dz10wo343g.xn--nnd089ea464d; ; xn--zed54dz10wo343g.xn--nnd651i; [P1, V6] # Ⴜྀ舛.Ⴏ♀
-Ⴜ򈷭\u0F80舛。Ⴏ♀\u200C\u200C; Ⴜ򈷭\u0F80舛.Ⴏ♀\u200C\u200C; [C1, P1, V6]; xn--zed54dz10wo343g.xn--nnd089ea464d; ; xn--zed54dz10wo343g.xn--nnd651i; [P1, V6] # Ⴜྀ舛.Ⴏ♀
-â´œòˆ·­\u0F80舛。â´â™€\u200C\u200C; â´œòˆ·­\u0F80舛.â´â™€\u200C\u200C; [C1, P1, V6]; xn--zed372mdj2do3v4h.xn--0uga678bgyh; ; xn--zed372mdj2do3v4h.xn--e5h11w; [P1, V6] # ⴜྀ舛.â´â™€
+Ⴜ򈷭\u0F80⾇。Ⴏ♀\u200C\u200C; Ⴜ򈷭\u0F80舛.Ⴏ♀\u200C\u200C; [C1, V6]; xn--zed54dz10wo343g.xn--nnd089ea464d; ; xn--zed54dz10wo343g.xn--nnd651i; [V6] # Ⴜྀ舛.Ⴏ♀
+Ⴜ򈷭\u0F80舛。Ⴏ♀\u200C\u200C; Ⴜ򈷭\u0F80舛.Ⴏ♀\u200C\u200C; [C1, V6]; xn--zed54dz10wo343g.xn--nnd089ea464d; ; xn--zed54dz10wo343g.xn--nnd651i; [V6] # Ⴜྀ舛.Ⴏ♀
+â´œòˆ·­\u0F80舛。â´â™€\u200C\u200C; â´œòˆ·­\u0F80舛.â´â™€\u200C\u200C; [C1, V6]; xn--zed372mdj2do3v4h.xn--0uga678bgyh; ; xn--zed372mdj2do3v4h.xn--e5h11w; [V6] # ⴜྀ舛.â´â™€
xn--zed372mdj2do3v4h.xn--e5h11w; â´œòˆ·­\u0F80舛.â´â™€; [V6]; xn--zed372mdj2do3v4h.xn--e5h11w; ; ; # ⴜྀ舛.â´â™€
xn--zed372mdj2do3v4h.xn--0uga678bgyh; â´œòˆ·­\u0F80舛.â´â™€\u200C\u200C; [C1, V6]; xn--zed372mdj2do3v4h.xn--0uga678bgyh; ; ; # ⴜྀ舛.â´â™€
xn--zed54dz10wo343g.xn--nnd651i; Ⴜ򈷭\u0F80舛.Ⴏ♀; [V6]; xn--zed54dz10wo343g.xn--nnd651i; ; ; # Ⴜྀ舛.Ⴏ♀
xn--zed54dz10wo343g.xn--nnd089ea464d; Ⴜ򈷭\u0F80舛.Ⴏ♀\u200C\u200C; [C1, V6]; xn--zed54dz10wo343g.xn--nnd089ea464d; ; ; # Ⴜྀ舛.Ⴏ♀
-â´œòˆ·­\u0F80⾇。â´â™€\u200C\u200C; â´œòˆ·­\u0F80舛.â´â™€\u200C\u200C; [C1, P1, V6]; xn--zed372mdj2do3v4h.xn--0uga678bgyh; ; xn--zed372mdj2do3v4h.xn--e5h11w; [P1, V6] # ⴜྀ舛.â´â™€
+â´œòˆ·­\u0F80⾇。â´â™€\u200C\u200C; â´œòˆ·­\u0F80舛.â´â™€\u200C\u200C; [C1, V6]; xn--zed372mdj2do3v4h.xn--0uga678bgyh; ; xn--zed372mdj2do3v4h.xn--e5h11w; [V6] # ⴜྀ舛.â´â™€
ð‘†ðŸ°.\u200D; ð‘†4.\u200D; [C2, V5]; xn--4-xu7i.xn--1ug; ; xn--4-xu7i.; [V5] # ð‘†4.
ð‘†4.\u200D; ; [C2, V5]; xn--4-xu7i.xn--1ug; ; xn--4-xu7i.; [V5] # ð‘†4.
xn--4-xu7i.; ð‘†4.; [V5]; xn--4-xu7i.; ; ; # ð‘†4.
xn--4-xu7i.xn--1ug; ð‘†4.\u200D; [C2, V5]; xn--4-xu7i.xn--1ug; ; ; # ð‘†4.
-񮴘Ⴞ癀。𑘿\u200D\u200C붼; 񮴘Ⴞ癀.𑘿\u200D\u200C붼; [C1, P1, V5, V6]; xn--2nd6803c7q37d.xn--0ugb6122js83c; ; xn--2nd6803c7q37d.xn--et3bn23n; [P1, V5, V6] # Ⴞ癀.𑘿붼
-񮴘Ⴞ癀。𑘿\u200D\u200C붼; 񮴘Ⴞ癀.𑘿\u200D\u200C붼; [C1, P1, V5, V6]; xn--2nd6803c7q37d.xn--0ugb6122js83c; ; xn--2nd6803c7q37d.xn--et3bn23n; [P1, V5, V6] # Ⴞ癀.𑘿붼
-񮴘Ⴞ癀。𑘿\u200D\u200C붼; 񮴘Ⴞ癀.𑘿\u200D\u200C붼; [C1, P1, V5, V6]; xn--2nd6803c7q37d.xn--0ugb6122js83c; ; xn--2nd6803c7q37d.xn--et3bn23n; [P1, V5, V6] # Ⴞ癀.𑘿붼
-񮴘Ⴞ癀。𑘿\u200D\u200C붼; 񮴘Ⴞ癀.𑘿\u200D\u200C붼; [C1, P1, V5, V6]; xn--2nd6803c7q37d.xn--0ugb6122js83c; ; xn--2nd6803c7q37d.xn--et3bn23n; [P1, V5, V6] # Ⴞ癀.𑘿붼
-񮴘ⴞ癀。𑘿\u200D\u200C붼; 񮴘ⴞ癀.𑘿\u200D\u200C붼; [C1, P1, V5, V6]; xn--mlju35u7qx2f.xn--0ugb6122js83c; ; xn--mlju35u7qx2f.xn--et3bn23n; [P1, V5, V6] # ⴞ癀.𑘿붼
-񮴘ⴞ癀。𑘿\u200D\u200C붼; 񮴘ⴞ癀.𑘿\u200D\u200C붼; [C1, P1, V5, V6]; xn--mlju35u7qx2f.xn--0ugb6122js83c; ; xn--mlju35u7qx2f.xn--et3bn23n; [P1, V5, V6] # ⴞ癀.𑘿붼
+񮴘Ⴞ癀。𑘿\u200D\u200C붼; 񮴘Ⴞ癀.𑘿\u200D\u200C붼; [C1, V5, V6]; xn--2nd6803c7q37d.xn--0ugb6122js83c; ; xn--2nd6803c7q37d.xn--et3bn23n; [V5, V6] # Ⴞ癀.𑘿붼
+񮴘Ⴞ癀。𑘿\u200D\u200C붼; 񮴘Ⴞ癀.𑘿\u200D\u200C붼; [C1, V5, V6]; xn--2nd6803c7q37d.xn--0ugb6122js83c; ; xn--2nd6803c7q37d.xn--et3bn23n; [V5, V6] # Ⴞ癀.𑘿붼
+񮴘Ⴞ癀。𑘿\u200D\u200C붼; 񮴘Ⴞ癀.𑘿\u200D\u200C붼; [C1, V5, V6]; xn--2nd6803c7q37d.xn--0ugb6122js83c; ; xn--2nd6803c7q37d.xn--et3bn23n; [V5, V6] # Ⴞ癀.𑘿붼
+񮴘Ⴞ癀。𑘿\u200D\u200C붼; 񮴘Ⴞ癀.𑘿\u200D\u200C붼; [C1, V5, V6]; xn--2nd6803c7q37d.xn--0ugb6122js83c; ; xn--2nd6803c7q37d.xn--et3bn23n; [V5, V6] # Ⴞ癀.𑘿붼
+񮴘ⴞ癀。𑘿\u200D\u200C붼; 񮴘ⴞ癀.𑘿\u200D\u200C붼; [C1, V5, V6]; xn--mlju35u7qx2f.xn--0ugb6122js83c; ; xn--mlju35u7qx2f.xn--et3bn23n; [V5, V6] # ⴞ癀.𑘿붼
+񮴘ⴞ癀。𑘿\u200D\u200C붼; 񮴘ⴞ癀.𑘿\u200D\u200C붼; [C1, V5, V6]; xn--mlju35u7qx2f.xn--0ugb6122js83c; ; xn--mlju35u7qx2f.xn--et3bn23n; [V5, V6] # ⴞ癀.𑘿붼
xn--mlju35u7qx2f.xn--et3bn23n; 񮴘ⴞ癀.𑘿붼; [V5, V6]; xn--mlju35u7qx2f.xn--et3bn23n; ; ; # ⴞ癀.𑘿붼
xn--mlju35u7qx2f.xn--0ugb6122js83c; 񮴘ⴞ癀.𑘿\u200D\u200C붼; [C1, V5, V6]; xn--mlju35u7qx2f.xn--0ugb6122js83c; ; ; # ⴞ癀.𑘿붼
xn--2nd6803c7q37d.xn--et3bn23n; 񮴘Ⴞ癀.𑘿붼; [V5, V6]; xn--2nd6803c7q37d.xn--et3bn23n; ; ; # Ⴞ癀.𑘿붼
xn--2nd6803c7q37d.xn--0ugb6122js83c; 񮴘Ⴞ癀.𑘿\u200D\u200C붼; [C1, V5, V6]; xn--2nd6803c7q37d.xn--0ugb6122js83c; ; ; # Ⴞ癀.𑘿붼
-񮴘ⴞ癀。𑘿\u200D\u200C붼; 񮴘ⴞ癀.𑘿\u200D\u200C붼; [C1, P1, V5, V6]; xn--mlju35u7qx2f.xn--0ugb6122js83c; ; xn--mlju35u7qx2f.xn--et3bn23n; [P1, V5, V6] # ⴞ癀.𑘿붼
-񮴘ⴞ癀。𑘿\u200D\u200C붼; 񮴘ⴞ癀.𑘿\u200D\u200C붼; [C1, P1, V5, V6]; xn--mlju35u7qx2f.xn--0ugb6122js83c; ; xn--mlju35u7qx2f.xn--et3bn23n; [P1, V5, V6] # ⴞ癀.𑘿붼
-󚀅-\u0BCD。\u06B9; 󚀅-\u0BCD.\u06B9; [B6, P1, V6]; xn----mze84808x.xn--skb; ; ; # -à¯.Ú¹
+񮴘ⴞ癀。𑘿\u200D\u200C붼; 񮴘ⴞ癀.𑘿\u200D\u200C붼; [C1, V5, V6]; xn--mlju35u7qx2f.xn--0ugb6122js83c; ; xn--mlju35u7qx2f.xn--et3bn23n; [V5, V6] # ⴞ癀.𑘿붼
+񮴘ⴞ癀。𑘿\u200D\u200C붼; 񮴘ⴞ癀.𑘿\u200D\u200C붼; [C1, V5, V6]; xn--mlju35u7qx2f.xn--0ugb6122js83c; ; xn--mlju35u7qx2f.xn--et3bn23n; [V5, V6] # ⴞ癀.𑘿붼
+󚀅-\u0BCD。\u06B9; 󚀅-\u0BCD.\u06B9; [B6, V6]; xn----mze84808x.xn--skb; ; ; # -à¯.Ú¹
xn----mze84808x.xn--skb; 󚀅-\u0BCD.\u06B9; [B6, V6]; xn----mze84808x.xn--skb; ; ; # -à¯.Ú¹
-ᡃðŸ§â‰¯á £ï¼Žæ°ñ¨±ê«; ᡃ5≯ᠣ.æ°ñ¨±ê«; [P1, V6]; xn--5-24jyf768b.xn--lqw213ime95g; ; ; # ᡃ5≯ᠣ.æ°ê«
-ᡃðŸ§>\u0338ᠣ.æ°ñ¨±ê«; ᡃ5≯ᠣ.æ°ñ¨±ê«; [P1, V6]; xn--5-24jyf768b.xn--lqw213ime95g; ; ; # ᡃ5≯ᠣ.æ°ê«
-ᡃ5≯ᠣ.æ°ñ¨±ê«; ; [P1, V6]; xn--5-24jyf768b.xn--lqw213ime95g; ; ; # ᡃ5≯ᠣ.æ°ê«
-ᡃ5>\u0338á £.æ°ñ¨±ê«; ᡃ5≯ᠣ.æ°ñ¨±ê«; [P1, V6]; xn--5-24jyf768b.xn--lqw213ime95g; ; ; # ᡃ5≯ᠣ.æ°ê«
+ᡃðŸ§â‰¯á £ï¼Žæ°ñ¨±ê«; ᡃ5≯ᠣ.æ°ñ¨±ê«; [V6]; xn--5-24jyf768b.xn--lqw213ime95g; ; ; # ᡃ5≯ᠣ.æ°ê«
+ᡃðŸ§>\u0338ᠣ.æ°ñ¨±ê«; ᡃ5≯ᠣ.æ°ñ¨±ê«; [V6]; xn--5-24jyf768b.xn--lqw213ime95g; ; ; # ᡃ5≯ᠣ.æ°ê«
+ᡃ5≯ᠣ.æ°ñ¨±ê«; ; [V6]; xn--5-24jyf768b.xn--lqw213ime95g; ; ; # ᡃ5≯ᠣ.æ°ê«
+ᡃ5>\u0338á £.æ°ñ¨±ê«; ᡃ5≯ᠣ.æ°ñ¨±ê«; [V6]; xn--5-24jyf768b.xn--lqw213ime95g; ; ; # ᡃ5≯ᠣ.æ°ê«
xn--5-24jyf768b.xn--lqw213ime95g; ᡃ5≯ᠣ.æ°ñ¨±ê«; [V6]; xn--5-24jyf768b.xn--lqw213ime95g; ; ; # ᡃ5≯ᠣ.æ°ê«
-ð¹¬ð©‡ï¼Ž\u0F76; ð¹¬ð©‡.\u0FB2\u0F80; [B1, B3, B6, V5]; xn--ko0d8295a.xn--zed3h; ; ; # ð¹¬ð©‡.ྲྀ
-ð¹¬ð©‡ï¼Ž\u0FB2\u0F80; ð¹¬ð©‡.\u0FB2\u0F80; [B1, B3, B6, V5]; xn--ko0d8295a.xn--zed3h; ; ; # ð¹¬ð©‡.ྲྀ
-ð¹¬ð©‡.\u0FB2\u0F80; ; [B1, B3, B6, V5]; xn--ko0d8295a.xn--zed3h; ; ; # ð¹¬ð©‡.ྲྀ
-xn--ko0d8295a.xn--zed3h; ð¹¬ð©‡.\u0FB2\u0F80; [B1, B3, B6, V5]; xn--ko0d8295a.xn--zed3h; ; ; # ð¹¬ð©‡.ྲྀ
--𑈶â’.⒎𰛢󠎭; -𑈶â’.⒎𰛢󠎭; [P1, V3, V6]; xn----scp6252h.xn--zshy411yzpx2d; ; ; # -𑈶â’.⒎𰛢
--𑈶8..7.𰛢󠎭; ; [P1, V3, V6, X4_2]; xn---8-bv5o..7.xn--c35nf1622b; [P1, V3, V6, A4_2]; ; # -𑈶8..7.𰛢
+ð¹¬ð©‡ï¼Ž\u0F76; ð¹¬ð©‡.\u0FB2\u0F80; [B1, V5]; xn--ko0d8295a.xn--zed3h; ; ; # ð¹¬ð©‡.ྲྀ
+ð¹¬ð©‡ï¼Ž\u0FB2\u0F80; ð¹¬ð©‡.\u0FB2\u0F80; [B1, V5]; xn--ko0d8295a.xn--zed3h; ; ; # ð¹¬ð©‡.ྲྀ
+ð¹¬ð©‡.\u0FB2\u0F80; ; [B1, V5]; xn--ko0d8295a.xn--zed3h; ; ; # ð¹¬ð©‡.ྲྀ
+xn--ko0d8295a.xn--zed3h; ð¹¬ð©‡.\u0FB2\u0F80; [B1, V5]; xn--ko0d8295a.xn--zed3h; ; ; # ð¹¬ð©‡.ྲྀ
+-𑈶â’.⒎𰛢󠎭; -𑈶â’.⒎𰛢󠎭; [V3, V6]; xn----scp6252h.xn--zshy411yzpx2d; ; ; # -𑈶â’.⒎𰛢
+-𑈶8..7.𰛢󠎭; ; [V3, V6, X4_2]; xn---8-bv5o..7.xn--c35nf1622b; [V3, V6, A4_2]; ; # -𑈶8..7.𰛢
xn---8-bv5o..7.xn--c35nf1622b; -𑈶8..7.𰛢󠎭; [V3, V6, X4_2]; xn---8-bv5o..7.xn--c35nf1622b; [V3, V6, A4_2]; ; # -𑈶8..7.𰛢
xn----scp6252h.xn--zshy411yzpx2d; -𑈶â’.⒎𰛢󠎭; [V3, V6]; xn----scp6252h.xn--zshy411yzpx2d; ; ; # -𑈶â’.⒎𰛢
-\u200Cá‚¡ç•\u200D.≮; \u200Cá‚¡ç•\u200D.≮; [C1, C2, P1, V6]; xn--8md700fea3748f.xn--gdh; ; xn--8md0962c.xn--gdh; [P1, V6] # á‚¡ç•.≮
-\u200Cá‚¡ç•\u200D.<\u0338; \u200Cá‚¡ç•\u200D.≮; [C1, C2, P1, V6]; xn--8md700fea3748f.xn--gdh; ; xn--8md0962c.xn--gdh; [P1, V6] # á‚¡ç•.≮
-\u200Cá‚¡ç•\u200D.≮; ; [C1, C2, P1, V6]; xn--8md700fea3748f.xn--gdh; ; xn--8md0962c.xn--gdh; [P1, V6] # á‚¡ç•.≮
-\u200Cá‚¡ç•\u200D.<\u0338; \u200Cá‚¡ç•\u200D.≮; [C1, C2, P1, V6]; xn--8md700fea3748f.xn--gdh; ; xn--8md0962c.xn--gdh; [P1, V6] # á‚¡ç•.≮
-\u200Câ´ç•\u200D.<\u0338; \u200Câ´ç•\u200D.≮; [C1, C2, P1, V6]; xn--0ugc160hb36e.xn--gdh; ; xn--skjy82u.xn--gdh; [P1, V6] # â´ç•.≮
-\u200Câ´ç•\u200D.≮; ; [C1, C2, P1, V6]; xn--0ugc160hb36e.xn--gdh; ; xn--skjy82u.xn--gdh; [P1, V6] # â´ç•.≮
-xn--skjy82u.xn--gdh; â´ç•.≮; [V6]; xn--skjy82u.xn--gdh; ; ; # â´ç•.≮
-xn--0ugc160hb36e.xn--gdh; \u200Câ´ç•\u200D.≮; [C1, C2, V6]; xn--0ugc160hb36e.xn--gdh; ; ; # â´ç•.≮
+\u200Cá‚¡ç•\u200D.≮; \u200Cá‚¡ç•\u200D.≮; [C1, C2, V6]; xn--8md700fea3748f.xn--gdh; ; xn--8md0962c.xn--gdh; [V6] # á‚¡ç•.≮
+\u200Cá‚¡ç•\u200D.<\u0338; \u200Cá‚¡ç•\u200D.≮; [C1, C2, V6]; xn--8md700fea3748f.xn--gdh; ; xn--8md0962c.xn--gdh; [V6] # á‚¡ç•.≮
+\u200Cá‚¡ç•\u200D.≮; ; [C1, C2, V6]; xn--8md700fea3748f.xn--gdh; ; xn--8md0962c.xn--gdh; [V6] # á‚¡ç•.≮
+\u200Cá‚¡ç•\u200D.<\u0338; \u200Cá‚¡ç•\u200D.≮; [C1, C2, V6]; xn--8md700fea3748f.xn--gdh; ; xn--8md0962c.xn--gdh; [V6] # á‚¡ç•.≮
+\u200Câ´ç•\u200D.<\u0338; \u200Câ´ç•\u200D.≮; [C1, C2]; xn--0ugc160hb36e.xn--gdh; ; xn--skjy82u.xn--gdh; [] # â´ç•.≮
+\u200Câ´ç•\u200D.≮; ; [C1, C2]; xn--0ugc160hb36e.xn--gdh; ; xn--skjy82u.xn--gdh; [] # â´ç•.≮
+xn--skjy82u.xn--gdh; â´ç•.≮; ; xn--skjy82u.xn--gdh; ; ; # â´ç•.≮
+â´ç•.≮; ; ; xn--skjy82u.xn--gdh; ; ; # â´ç•.≮
+â´ç•.<\u0338; â´ç•.≮; ; xn--skjy82u.xn--gdh; ; ; # â´ç•.≮
+á‚¡ç•.<\u0338; á‚¡ç•.≮; [V6]; xn--8md0962c.xn--gdh; ; ; # á‚¡ç•.≮
+á‚¡ç•.≮; ; [V6]; xn--8md0962c.xn--gdh; ; ; # á‚¡ç•.≮
xn--8md0962c.xn--gdh; á‚¡ç•.≮; [V6]; xn--8md0962c.xn--gdh; ; ; # á‚¡ç•.≮
+xn--0ugc160hb36e.xn--gdh; \u200Câ´ç•\u200D.≮; [C1, C2]; xn--0ugc160hb36e.xn--gdh; ; ; # â´ç•.≮
xn--8md700fea3748f.xn--gdh; \u200Cá‚¡ç•\u200D.≮; [C1, C2, V6]; xn--8md700fea3748f.xn--gdh; ; ; # á‚¡ç•.≮
-\u200Câ´ç•\u200D.<\u0338; \u200Câ´ç•\u200D.≮; [C1, C2, P1, V6]; xn--0ugc160hb36e.xn--gdh; ; xn--skjy82u.xn--gdh; [P1, V6] # â´ç•.≮
-\u200Câ´ç•\u200D.≮; \u200Câ´ç•\u200D.≮; [C1, C2, P1, V6]; xn--0ugc160hb36e.xn--gdh; ; xn--skjy82u.xn--gdh; [P1, V6] # â´ç•.≮
-歷。ð¹»â‰¯ó³›½\u200D; æ­·.ð¹»â‰¯ó³›½\u200D; [B1, C2, P1, V6]; xn--nmw.xn--1ugx6gs128a1134j; ; xn--nmw.xn--hdh7804gdms2h; [B1, P1, V6] # æ­·.ð¹»â‰¯
-歷。ð¹»>\u0338ó³›½\u200D; æ­·.ð¹»â‰¯ó³›½\u200D; [B1, C2, P1, V6]; xn--nmw.xn--1ugx6gs128a1134j; ; xn--nmw.xn--hdh7804gdms2h; [B1, P1, V6] # æ­·.ð¹»â‰¯
-歷。ð¹»â‰¯ó³›½\u200D; æ­·.ð¹»â‰¯ó³›½\u200D; [B1, C2, P1, V6]; xn--nmw.xn--1ugx6gs128a1134j; ; xn--nmw.xn--hdh7804gdms2h; [B1, P1, V6] # æ­·.ð¹»â‰¯
-歷。ð¹»>\u0338ó³›½\u200D; æ­·.ð¹»â‰¯ó³›½\u200D; [B1, C2, P1, V6]; xn--nmw.xn--1ugx6gs128a1134j; ; xn--nmw.xn--hdh7804gdms2h; [B1, P1, V6] # æ­·.ð¹»â‰¯
+\u200Câ´ç•\u200D.<\u0338; \u200Câ´ç•\u200D.≮; [C1, C2]; xn--0ugc160hb36e.xn--gdh; ; xn--skjy82u.xn--gdh; [] # â´ç•.≮
+\u200Câ´ç•\u200D.≮; \u200Câ´ç•\u200D.≮; [C1, C2]; xn--0ugc160hb36e.xn--gdh; ; xn--skjy82u.xn--gdh; [] # â´ç•.≮
+歷。ð¹»â‰¯ó³›½\u200D; æ­·.ð¹»â‰¯ó³›½\u200D; [B1, C2, V6]; xn--nmw.xn--1ugx6gs128a1134j; ; xn--nmw.xn--hdh7804gdms2h; [B1, V6] # æ­·.ð¹»â‰¯
+歷。ð¹»>\u0338ó³›½\u200D; æ­·.ð¹»â‰¯ó³›½\u200D; [B1, C2, V6]; xn--nmw.xn--1ugx6gs128a1134j; ; xn--nmw.xn--hdh7804gdms2h; [B1, V6] # æ­·.ð¹»â‰¯
+歷。ð¹»â‰¯ó³›½\u200D; æ­·.ð¹»â‰¯ó³›½\u200D; [B1, C2, V6]; xn--nmw.xn--1ugx6gs128a1134j; ; xn--nmw.xn--hdh7804gdms2h; [B1, V6] # æ­·.ð¹»â‰¯
+歷。ð¹»>\u0338ó³›½\u200D; æ­·.ð¹»â‰¯ó³›½\u200D; [B1, C2, V6]; xn--nmw.xn--1ugx6gs128a1134j; ; xn--nmw.xn--hdh7804gdms2h; [B1, V6] # æ­·.ð¹»â‰¯
xn--nmw.xn--hdh7804gdms2h; æ­·.ð¹»â‰¯ó³›½; [B1, V6]; xn--nmw.xn--hdh7804gdms2h; ; ; # æ­·.ð¹»â‰¯
xn--nmw.xn--1ugx6gs128a1134j; æ­·.ð¹»â‰¯ó³›½\u200D; [B1, C2, V6]; xn--nmw.xn--1ugx6gs128a1134j; ; ; # æ­·.ð¹»â‰¯
-\u0ECB\u200D.éŽó °‘; \u0ECB\u200D.éŽó °‘; [C2, P1, V5, V6]; xn--t8c059f.xn--iz4a43209d; ; xn--t8c.xn--iz4a43209d; [P1, V5, V6] # ໋.éŽ
-\u0ECB\u200D.éŽó °‘; ; [C2, P1, V5, V6]; xn--t8c059f.xn--iz4a43209d; ; xn--t8c.xn--iz4a43209d; [P1, V5, V6] # ໋.éŽ
+\u0ECB\u200D.éŽó °‘; \u0ECB\u200D.éŽó °‘; [C2, V5, V6]; xn--t8c059f.xn--iz4a43209d; ; xn--t8c.xn--iz4a43209d; [V5, V6] # ໋.éŽ
+\u0ECB\u200D.éŽó °‘; ; [C2, V5, V6]; xn--t8c059f.xn--iz4a43209d; ; xn--t8c.xn--iz4a43209d; [V5, V6] # ໋.éŽ
xn--t8c.xn--iz4a43209d; \u0ECB.éŽó °‘; [V5, V6]; xn--t8c.xn--iz4a43209d; ; ; # ໋.éŽ
xn--t8c059f.xn--iz4a43209d; \u0ECB\u200D.éŽó °‘; [C2, V5, V6]; xn--t8c059f.xn--iz4a43209d; ; ; # ໋.éŽ
-\u200D\u200C𞤀。𱘅ð¶ƒ; \u200D\u200C𞤢.𱘅ð¶ƒ; [B1, B5, B6, C1, C2, P1, V6]; xn--0ugb45126a.xn--wh0dj799f; ; xn--9d6h.xn--wh0dj799f; [B5, B6, P1, V6] # 𞤢.𱘅
-\u200D\u200C𞤀。𱘅ð¶ƒ; \u200D\u200C𞤢.𱘅ð¶ƒ; [B1, B5, B6, C1, C2, P1, V6]; xn--0ugb45126a.xn--wh0dj799f; ; xn--9d6h.xn--wh0dj799f; [B5, B6, P1, V6] # 𞤢.𱘅
-\u200D\u200C𞤢。𱘅ð¶ƒ; \u200D\u200C𞤢.𱘅ð¶ƒ; [B1, B5, B6, C1, C2, P1, V6]; xn--0ugb45126a.xn--wh0dj799f; ; xn--9d6h.xn--wh0dj799f; [B5, B6, P1, V6] # 𞤢.𱘅
+\u200D\u200C𞤀。𱘅ð¶ƒ; \u200D\u200C𞤢.𱘅ð¶ƒ; [B1, B5, B6, C1, C2, V6]; xn--0ugb45126a.xn--wh0dj799f; ; xn--9d6h.xn--wh0dj799f; [B5, B6, V6] # 𞤢.𱘅
+\u200D\u200C𞤀。𱘅ð¶ƒ; \u200D\u200C𞤢.𱘅ð¶ƒ; [B1, B5, B6, C1, C2, V6]; xn--0ugb45126a.xn--wh0dj799f; ; xn--9d6h.xn--wh0dj799f; [B5, B6, V6] # 𞤢.𱘅
+\u200D\u200C𞤢。𱘅ð¶ƒ; \u200D\u200C𞤢.𱘅ð¶ƒ; [B1, B5, B6, C1, C2, V6]; xn--0ugb45126a.xn--wh0dj799f; ; xn--9d6h.xn--wh0dj799f; [B5, B6, V6] # 𞤢.𱘅
xn--9d6h.xn--wh0dj799f; 𞤢.𱘅ð¶ƒ; [B5, B6, V6]; xn--9d6h.xn--wh0dj799f; ; ; # 𞤢.𱘅
xn--0ugb45126a.xn--wh0dj799f; \u200D\u200C𞤢.𱘅ð¶ƒ; [B1, B5, B6, C1, C2, V6]; xn--0ugb45126a.xn--wh0dj799f; ; ; # 𞤢.𱘅
-\u200D\u200C𞤢。𱘅ð¶ƒ; \u200D\u200C𞤢.𱘅ð¶ƒ; [B1, B5, B6, C1, C2, P1, V6]; xn--0ugb45126a.xn--wh0dj799f; ; xn--9d6h.xn--wh0dj799f; [B5, B6, P1, V6] # 𞤢.𱘅
-\u0628≠ðŸ«-.Ï‚â’ð¹¦â‰ ; \u0628≠9-.Ï‚â’ð¹¦â‰ ; [B3, B5, B6, P1, V3, V6]; xn--9--etd0100a.xn--3xa097mzpbzz04b; ; xn--9--etd0100a.xn--4xa887mzpbzz04b; # ب≠9-.Ï‚â’ð¹¦â‰ 
-\u0628=\u0338ðŸ«-.Ï‚â’ð¹¦=\u0338; \u0628≠9-.Ï‚â’ð¹¦â‰ ; [B3, B5, B6, P1, V3, V6]; xn--9--etd0100a.xn--3xa097mzpbzz04b; ; xn--9--etd0100a.xn--4xa887mzpbzz04b; # ب≠9-.Ï‚â’ð¹¦â‰ 
-\u0628≠9-.Ï‚6.ð¹¦â‰ ; ; [B1, B3, P1, V3, V6]; xn--9--etd0100a.xn--6-xmb.xn--1ch8704g; ; xn--9--etd0100a.xn--6-zmb.xn--1ch8704g; # ب≠9-.Ï‚6.ð¹¦â‰ 
-\u0628=\u03389-.Ï‚6.ð¹¦=\u0338; \u0628≠9-.Ï‚6.ð¹¦â‰ ; [B1, B3, P1, V3, V6]; xn--9--etd0100a.xn--6-xmb.xn--1ch8704g; ; xn--9--etd0100a.xn--6-zmb.xn--1ch8704g; # ب≠9-.Ï‚6.ð¹¦â‰ 
-\u0628=\u03389-.Σ6.ð¹¦=\u0338; \u0628≠9-.σ6.ð¹¦â‰ ; [B1, B3, P1, V3, V6]; xn--9--etd0100a.xn--6-zmb.xn--1ch8704g; ; ; # ب≠9-.σ6.ð¹¦â‰ 
-\u0628≠9-.Σ6.ð¹¦â‰ ; \u0628≠9-.σ6.ð¹¦â‰ ; [B1, B3, P1, V3, V6]; xn--9--etd0100a.xn--6-zmb.xn--1ch8704g; ; ; # ب≠9-.σ6.ð¹¦â‰ 
-\u0628≠9-.σ6.ð¹¦â‰ ; ; [B1, B3, P1, V3, V6]; xn--9--etd0100a.xn--6-zmb.xn--1ch8704g; ; ; # ب≠9-.σ6.ð¹¦â‰ 
-\u0628=\u03389-.σ6.ð¹¦=\u0338; \u0628≠9-.σ6.ð¹¦â‰ ; [B1, B3, P1, V3, V6]; xn--9--etd0100a.xn--6-zmb.xn--1ch8704g; ; ; # ب≠9-.σ6.ð¹¦â‰ 
-xn--9--etd0100a.xn--6-zmb.xn--1ch8704g; \u0628≠9-.σ6.ð¹¦â‰ ; [B1, B3, V3, V6]; xn--9--etd0100a.xn--6-zmb.xn--1ch8704g; ; ; # ب≠9-.σ6.ð¹¦â‰ 
-xn--9--etd0100a.xn--6-xmb.xn--1ch8704g; \u0628≠9-.Ï‚6.ð¹¦â‰ ; [B1, B3, V3, V6]; xn--9--etd0100a.xn--6-xmb.xn--1ch8704g; ; ; # ب≠9-.Ï‚6.ð¹¦â‰ 
-\u0628=\u0338ðŸ«-.Σâ’ð¹¦=\u0338; \u0628≠9-.σâ’ð¹¦â‰ ; [B3, B5, B6, P1, V3, V6]; xn--9--etd0100a.xn--4xa887mzpbzz04b; ; ; # ب≠9-.σâ’ð¹¦â‰ 
-\u0628≠ðŸ«-.Σâ’ð¹¦â‰ ; \u0628≠9-.σâ’ð¹¦â‰ ; [B3, B5, B6, P1, V3, V6]; xn--9--etd0100a.xn--4xa887mzpbzz04b; ; ; # ب≠9-.σâ’ð¹¦â‰ 
-\u0628≠ðŸ«-.σâ’ð¹¦â‰ ; \u0628≠9-.σâ’ð¹¦â‰ ; [B3, B5, B6, P1, V3, V6]; xn--9--etd0100a.xn--4xa887mzpbzz04b; ; ; # ب≠9-.σâ’ð¹¦â‰ 
-\u0628=\u0338ðŸ«-.σâ’ð¹¦=\u0338; \u0628≠9-.σâ’ð¹¦â‰ ; [B3, B5, B6, P1, V3, V6]; xn--9--etd0100a.xn--4xa887mzpbzz04b; ; ; # ب≠9-.σâ’ð¹¦â‰ 
+\u200D\u200C𞤢。𱘅ð¶ƒ; \u200D\u200C𞤢.𱘅ð¶ƒ; [B1, B5, B6, C1, C2, V6]; xn--0ugb45126a.xn--wh0dj799f; ; xn--9d6h.xn--wh0dj799f; [B5, B6, V6] # 𞤢.𱘅
+\u0628≠ðŸ«-.Ï‚â’ð¹¦â‰ ; \u0628≠9-.Ï‚â’ð¹¦â‰ ; [B3, B5, B6, V3, V6]; xn--9--etd0100a.xn--3xa097mzpbzz04b; ; xn--9--etd0100a.xn--4xa887mzpbzz04b; # ب≠9-.Ï‚â’ð¹¦â‰ 
+\u0628=\u0338ðŸ«-.Ï‚â’ð¹¦=\u0338; \u0628≠9-.Ï‚â’ð¹¦â‰ ; [B3, B5, B6, V3, V6]; xn--9--etd0100a.xn--3xa097mzpbzz04b; ; xn--9--etd0100a.xn--4xa887mzpbzz04b; # ب≠9-.Ï‚â’ð¹¦â‰ 
+\u0628≠9-.Ï‚6.ð¹¦â‰ ; ; [B1, B3, V3]; xn--9--etd0100a.xn--6-xmb.xn--1ch8704g; ; xn--9--etd0100a.xn--6-zmb.xn--1ch8704g; # ب≠9-.Ï‚6.ð¹¦â‰ 
+\u0628=\u03389-.Ï‚6.ð¹¦=\u0338; \u0628≠9-.Ï‚6.ð¹¦â‰ ; [B1, B3, V3]; xn--9--etd0100a.xn--6-xmb.xn--1ch8704g; ; xn--9--etd0100a.xn--6-zmb.xn--1ch8704g; # ب≠9-.Ï‚6.ð¹¦â‰ 
+\u0628=\u03389-.Σ6.ð¹¦=\u0338; \u0628≠9-.σ6.ð¹¦â‰ ; [B1, B3, V3]; xn--9--etd0100a.xn--6-zmb.xn--1ch8704g; ; ; # ب≠9-.σ6.ð¹¦â‰ 
+\u0628≠9-.Σ6.ð¹¦â‰ ; \u0628≠9-.σ6.ð¹¦â‰ ; [B1, B3, V3]; xn--9--etd0100a.xn--6-zmb.xn--1ch8704g; ; ; # ب≠9-.σ6.ð¹¦â‰ 
+\u0628≠9-.σ6.ð¹¦â‰ ; ; [B1, B3, V3]; xn--9--etd0100a.xn--6-zmb.xn--1ch8704g; ; ; # ب≠9-.σ6.ð¹¦â‰ 
+\u0628=\u03389-.σ6.ð¹¦=\u0338; \u0628≠9-.σ6.ð¹¦â‰ ; [B1, B3, V3]; xn--9--etd0100a.xn--6-zmb.xn--1ch8704g; ; ; # ب≠9-.σ6.ð¹¦â‰ 
+xn--9--etd0100a.xn--6-zmb.xn--1ch8704g; \u0628≠9-.σ6.ð¹¦â‰ ; [B1, B3, V3]; xn--9--etd0100a.xn--6-zmb.xn--1ch8704g; ; ; # ب≠9-.σ6.ð¹¦â‰ 
+xn--9--etd0100a.xn--6-xmb.xn--1ch8704g; \u0628≠9-.Ï‚6.ð¹¦â‰ ; [B1, B3, V3]; xn--9--etd0100a.xn--6-xmb.xn--1ch8704g; ; ; # ب≠9-.Ï‚6.ð¹¦â‰ 
+\u0628=\u0338ðŸ«-.Σâ’ð¹¦=\u0338; \u0628≠9-.σâ’ð¹¦â‰ ; [B3, B5, B6, V3, V6]; xn--9--etd0100a.xn--4xa887mzpbzz04b; ; ; # ب≠9-.σâ’ð¹¦â‰ 
+\u0628≠ðŸ«-.Σâ’ð¹¦â‰ ; \u0628≠9-.σâ’ð¹¦â‰ ; [B3, B5, B6, V3, V6]; xn--9--etd0100a.xn--4xa887mzpbzz04b; ; ; # ب≠9-.σâ’ð¹¦â‰ 
+\u0628≠ðŸ«-.σâ’ð¹¦â‰ ; \u0628≠9-.σâ’ð¹¦â‰ ; [B3, B5, B6, V3, V6]; xn--9--etd0100a.xn--4xa887mzpbzz04b; ; ; # ب≠9-.σâ’ð¹¦â‰ 
+\u0628=\u0338ðŸ«-.σâ’ð¹¦=\u0338; \u0628≠9-.σâ’ð¹¦â‰ ; [B3, B5, B6, V3, V6]; xn--9--etd0100a.xn--4xa887mzpbzz04b; ; ; # ب≠9-.σâ’ð¹¦â‰ 
xn--9--etd0100a.xn--4xa887mzpbzz04b; \u0628≠9-.σâ’ð¹¦â‰ ; [B3, B5, B6, V3, V6]; xn--9--etd0100a.xn--4xa887mzpbzz04b; ; ; # ب≠9-.σâ’ð¹¦â‰ 
xn--9--etd0100a.xn--3xa097mzpbzz04b; \u0628≠9-.Ï‚â’ð¹¦â‰ ; [B3, B5, B6, V3, V6]; xn--9--etd0100a.xn--3xa097mzpbzz04b; ; ; # ب≠9-.Ï‚â’ð¹¦â‰ 
-ò‰›´.-á¡¢\u0592ð¨ ; ; [P1, V3, V6]; xn--ep37b.xn----hec165lho83b; ; ; # .-á¡¢Ö’ð¨ 
+ò‰›´.-á¡¢\u0592ð¨ ; ; [V3, V6]; xn--ep37b.xn----hec165lho83b; ; ; # .-á¡¢Ö’ð¨ 
xn--ep37b.xn----hec165lho83b; ò‰›´.-á¡¢\u0592ð¨ ; [V3, V6]; xn--ep37b.xn----hec165lho83b; ; ; # .-á¡¢Ö’ð¨ 
-\u06CB⒈ß󠄽。ñ·‹-; \u06CB⒈ß.ñ·‹-; [B2, B3, B6, P1, V3, V6]; xn--zca541ato3a.xn----q001f; ; xn--ss-d7d6651a.xn----q001f; # ۋ⒈ß.-
-\u06CB1.ß󠄽。ñ·‹-; \u06CB1.ß.ñ·‹-; [B6, P1, V3, V6]; xn--1-cwc.xn--zca.xn----q001f; ; xn--1-cwc.ss.xn----q001f; # Û‹1.ß.-
-\u06CB1.SS󠄽。ñ·‹-; \u06CB1.ss.ñ·‹-; [B6, P1, V3, V6]; xn--1-cwc.ss.xn----q001f; ; ; # Û‹1.ss.-
-\u06CB1.ss󠄽。ñ·‹-; \u06CB1.ss.ñ·‹-; [B6, P1, V3, V6]; xn--1-cwc.ss.xn----q001f; ; ; # Û‹1.ss.-
-\u06CB1.Ss󠄽。ñ·‹-; \u06CB1.ss.ñ·‹-; [B6, P1, V3, V6]; xn--1-cwc.ss.xn----q001f; ; ; # Û‹1.ss.-
+\u06CB⒈ß󠄽。ñ·‹-; \u06CB⒈ß.ñ·‹-; [B2, B3, B6, V3, V6]; xn--zca541ato3a.xn----q001f; ; xn--ss-d7d6651a.xn----q001f; # ۋ⒈ß.-
+\u06CB1.ß󠄽。ñ·‹-; \u06CB1.ß.ñ·‹-; [B6, V3, V6]; xn--1-cwc.xn--zca.xn----q001f; ; xn--1-cwc.ss.xn----q001f; # Û‹1.ß.-
+\u06CB1.SS󠄽。ñ·‹-; \u06CB1.ss.ñ·‹-; [B6, V3, V6]; xn--1-cwc.ss.xn----q001f; ; ; # Û‹1.ss.-
+\u06CB1.ss󠄽。ñ·‹-; \u06CB1.ss.ñ·‹-; [B6, V3, V6]; xn--1-cwc.ss.xn----q001f; ; ; # Û‹1.ss.-
+\u06CB1.Ss󠄽。ñ·‹-; \u06CB1.ss.ñ·‹-; [B6, V3, V6]; xn--1-cwc.ss.xn----q001f; ; ; # Û‹1.ss.-
xn--1-cwc.ss.xn----q001f; \u06CB1.ss.ñ·‹-; [B6, V3, V6]; xn--1-cwc.ss.xn----q001f; ; ; # Û‹1.ss.-
xn--1-cwc.xn--zca.xn----q001f; \u06CB1.ß.ñ·‹-; [B6, V3, V6]; xn--1-cwc.xn--zca.xn----q001f; ; ; # Û‹1.ß.-
-\u06CBâ’ˆSS󠄽。ñ·‹-; \u06CBâ’ˆss.ñ·‹-; [B2, B3, B6, P1, V3, V6]; xn--ss-d7d6651a.xn----q001f; ; ; # Û‹â’ˆss.-
-\u06CBâ’ˆss󠄽。ñ·‹-; \u06CBâ’ˆss.ñ·‹-; [B2, B3, B6, P1, V3, V6]; xn--ss-d7d6651a.xn----q001f; ; ; # Û‹â’ˆss.-
-\u06CBâ’ˆSs󠄽。ñ·‹-; \u06CBâ’ˆss.ñ·‹-; [B2, B3, B6, P1, V3, V6]; xn--ss-d7d6651a.xn----q001f; ; ; # Û‹â’ˆss.-
+\u06CBâ’ˆSS󠄽。ñ·‹-; \u06CBâ’ˆss.ñ·‹-; [B2, B3, B6, V3, V6]; xn--ss-d7d6651a.xn----q001f; ; ; # Û‹â’ˆss.-
+\u06CBâ’ˆss󠄽。ñ·‹-; \u06CBâ’ˆss.ñ·‹-; [B2, B3, B6, V3, V6]; xn--ss-d7d6651a.xn----q001f; ; ; # Û‹â’ˆss.-
+\u06CBâ’ˆSs󠄽。ñ·‹-; \u06CBâ’ˆss.ñ·‹-; [B2, B3, B6, V3, V6]; xn--ss-d7d6651a.xn----q001f; ; ; # Û‹â’ˆss.-
xn--ss-d7d6651a.xn----q001f; \u06CBâ’ˆss.ñ·‹-; [B2, B3, B6, V3, V6]; xn--ss-d7d6651a.xn----q001f; ; ; # Û‹â’ˆss.-
xn--zca541ato3a.xn----q001f; \u06CB⒈ß.ñ·‹-; [B2, B3, B6, V3, V6]; xn--zca541ato3a.xn----q001f; ; ; # ۋ⒈ß.-
-𿀫.\u1BAAςႦ\u200D; 𿀫.\u1BAAςႦ\u200D; [C2, P1, V5, V6]; xn--nu4s.xn--3xa417dxriome; ; xn--nu4s.xn--4xa217dxri; [P1, V5, V6] # .᮪ςႦ
-𿀫.\u1BAAςႦ\u200D; ; [C2, P1, V5, V6]; xn--nu4s.xn--3xa417dxriome; ; xn--nu4s.xn--4xa217dxri; [P1, V5, V6] # .᮪ςႦ
-𿀫.\u1BAAςⴆ\u200D; ; [C2, P1, V5, V6]; xn--nu4s.xn--3xa353jk8cs1q; ; xn--nu4s.xn--4xa153j7im; [P1, V5, V6] # .᮪ςⴆ
-𿀫.\u1BAAΣႦ\u200D; 𿀫.\u1BAAσႦ\u200D; [C2, P1, V5, V6]; xn--nu4s.xn--4xa217dxriome; ; xn--nu4s.xn--4xa217dxri; [P1, V5, V6] # .᮪σႦ
-𿀫.\u1BAAσⴆ\u200D; ; [C2, P1, V5, V6]; xn--nu4s.xn--4xa153jk8cs1q; ; xn--nu4s.xn--4xa153j7im; [P1, V5, V6] # .᮪σⴆ
-𿀫.\u1BAAΣⴆ\u200D; 𿀫.\u1BAAσⴆ\u200D; [C2, P1, V5, V6]; xn--nu4s.xn--4xa153jk8cs1q; ; xn--nu4s.xn--4xa153j7im; [P1, V5, V6] # .᮪σⴆ
+𿀫.\u1BAAςႦ\u200D; 𿀫.\u1BAAςႦ\u200D; [C2, V5, V6]; xn--nu4s.xn--3xa417dxriome; ; xn--nu4s.xn--4xa217dxri; [V5, V6] # .᮪ςႦ
+𿀫.\u1BAAςႦ\u200D; ; [C2, V5, V6]; xn--nu4s.xn--3xa417dxriome; ; xn--nu4s.xn--4xa217dxri; [V5, V6] # .᮪ςႦ
+𿀫.\u1BAAςⴆ\u200D; ; [C2, V5, V6]; xn--nu4s.xn--3xa353jk8cs1q; ; xn--nu4s.xn--4xa153j7im; [V5, V6] # .᮪ςⴆ
+𿀫.\u1BAAΣႦ\u200D; 𿀫.\u1BAAσႦ\u200D; [C2, V5, V6]; xn--nu4s.xn--4xa217dxriome; ; xn--nu4s.xn--4xa217dxri; [V5, V6] # .᮪σႦ
+𿀫.\u1BAAσⴆ\u200D; ; [C2, V5, V6]; xn--nu4s.xn--4xa153jk8cs1q; ; xn--nu4s.xn--4xa153j7im; [V5, V6] # .᮪σⴆ
+𿀫.\u1BAAΣⴆ\u200D; 𿀫.\u1BAAσⴆ\u200D; [C2, V5, V6]; xn--nu4s.xn--4xa153jk8cs1q; ; xn--nu4s.xn--4xa153j7im; [V5, V6] # .᮪σⴆ
xn--nu4s.xn--4xa153j7im; 𿀫.\u1BAAσⴆ; [V5, V6]; xn--nu4s.xn--4xa153j7im; ; ; # .᮪σⴆ
xn--nu4s.xn--4xa153jk8cs1q; 𿀫.\u1BAAσⴆ\u200D; [C2, V5, V6]; xn--nu4s.xn--4xa153jk8cs1q; ; ; # .᮪σⴆ
xn--nu4s.xn--4xa217dxri; 𿀫.\u1BAAσႦ; [V5, V6]; xn--nu4s.xn--4xa217dxri; ; ; # .᮪σႦ
xn--nu4s.xn--4xa217dxriome; 𿀫.\u1BAAσႦ\u200D; [C2, V5, V6]; xn--nu4s.xn--4xa217dxriome; ; ; # .᮪σႦ
xn--nu4s.xn--3xa353jk8cs1q; 𿀫.\u1BAAςⴆ\u200D; [C2, V5, V6]; xn--nu4s.xn--3xa353jk8cs1q; ; ; # .᮪ςⴆ
xn--nu4s.xn--3xa417dxriome; 𿀫.\u1BAAςႦ\u200D; [C2, V5, V6]; xn--nu4s.xn--3xa417dxriome; ; ; # .᮪ςႦ
-𿀫.\u1BAAςⴆ\u200D; 𿀫.\u1BAAςⴆ\u200D; [C2, P1, V5, V6]; xn--nu4s.xn--3xa353jk8cs1q; ; xn--nu4s.xn--4xa153j7im; [P1, V5, V6] # .᮪ςⴆ
-𿀫.\u1BAAΣႦ\u200D; 𿀫.\u1BAAσႦ\u200D; [C2, P1, V5, V6]; xn--nu4s.xn--4xa217dxriome; ; xn--nu4s.xn--4xa217dxri; [P1, V5, V6] # .᮪σႦ
-𿀫.\u1BAAσⴆ\u200D; 𿀫.\u1BAAσⴆ\u200D; [C2, P1, V5, V6]; xn--nu4s.xn--4xa153jk8cs1q; ; xn--nu4s.xn--4xa153j7im; [P1, V5, V6] # .᮪σⴆ
-𿀫.\u1BAAΣⴆ\u200D; 𿀫.\u1BAAσⴆ\u200D; [C2, P1, V5, V6]; xn--nu4s.xn--4xa153jk8cs1q; ; xn--nu4s.xn--4xa153j7im; [P1, V5, V6] # .᮪σⴆ
-⾆\u08E2.ðˆ´; 舌\u08E2.ðˆ´; [B1, B5, B6, P1, V6]; xn--l0b9413d.xn--kl1h; ; ; # 舌.ðˆ´
-舌\u08E2.ðˆ´; ; [B1, B5, B6, P1, V6]; xn--l0b9413d.xn--kl1h; ; ; # 舌.ðˆ´
+𿀫.\u1BAAςⴆ\u200D; 𿀫.\u1BAAςⴆ\u200D; [C2, V5, V6]; xn--nu4s.xn--3xa353jk8cs1q; ; xn--nu4s.xn--4xa153j7im; [V5, V6] # .᮪ςⴆ
+𿀫.\u1BAAΣႦ\u200D; 𿀫.\u1BAAσႦ\u200D; [C2, V5, V6]; xn--nu4s.xn--4xa217dxriome; ; xn--nu4s.xn--4xa217dxri; [V5, V6] # .᮪σႦ
+𿀫.\u1BAAσⴆ\u200D; 𿀫.\u1BAAσⴆ\u200D; [C2, V5, V6]; xn--nu4s.xn--4xa153jk8cs1q; ; xn--nu4s.xn--4xa153j7im; [V5, V6] # .᮪σⴆ
+𿀫.\u1BAAΣⴆ\u200D; 𿀫.\u1BAAσⴆ\u200D; [C2, V5, V6]; xn--nu4s.xn--4xa153jk8cs1q; ; xn--nu4s.xn--4xa153j7im; [V5, V6] # .᮪σⴆ
+⾆\u08E2.ðˆ´; 舌\u08E2.ðˆ´; [B1, B5, B6, V6]; xn--l0b9413d.xn--kl1h; ; ; # 舌.ðˆ´
+舌\u08E2.ðˆ´; ; [B1, B5, B6, V6]; xn--l0b9413d.xn--kl1h; ; ; # 舌.ðˆ´
xn--l0b9413d.xn--kl1h; 舌\u08E2.ðˆ´; [B1, B5, B6, V6]; xn--l0b9413d.xn--kl1h; ; ; # 舌.ðˆ´
-â«žð¹¶ð–«´ã€‚â­ â’ˆ; â«žð¹¶ð–«´.â­ â’ˆ; [B1, P1, V6]; xn--53ix188et88b.xn--tsh52w; ; ; # â«žð¹¶ð–«´.â­ â’ˆ
+â«žð¹¶ð–«´ã€‚â­ â’ˆ; â«žð¹¶ð–«´.â­ â’ˆ; [B1, V6]; xn--53ix188et88b.xn--tsh52w; ; ; # â«žð¹¶ð–«´.â­ â’ˆ
â«žð¹¶ð–«´ã€‚â­ 1.; â«žð¹¶ð–«´.â­ 1.; [B1]; xn--53ix188et88b.xn--1-h6r.; ; ; # â«žð¹¶ð–«´.â­ 1.
xn--53ix188et88b.xn--1-h6r.; â«žð¹¶ð–«´.â­ 1.; [B1]; xn--53ix188et88b.xn--1-h6r.; ; ; # â«žð¹¶ð–«´.â­ 1.
xn--53ix188et88b.xn--tsh52w; â«žð¹¶ð–«´.â­ â’ˆ; [B1, V6]; xn--53ix188et88b.xn--tsh52w; ; ; # â«žð¹¶ð–«´.â­ â’ˆ
-â’ˆ\u200C\uAAEC︒.\u0ACD; â’ˆ\u200C\uAAEC︒.\u0ACD; [C1, P1, V5, V6]; xn--0ug78o720myr1c.xn--mfc; ; xn--tsh0720cse8b.xn--mfc; [P1, V5, V6] # ⒈ꫬ︒.à«
+â’ˆ\u200C\uAAEC︒.\u0ACD; â’ˆ\u200C\uAAEC︒.\u0ACD; [C1, V5, V6]; xn--0ug78o720myr1c.xn--mfc; ; xn--tsh0720cse8b.xn--mfc; [V5, V6] # ⒈ꫬ︒.à«
1.\u200C\uAAEC。.\u0ACD; 1.\u200C\uAAEC..\u0ACD; [C1, V5, X4_2]; 1.xn--0ug7185c..xn--mfc; [C1, V5, A4_2]; 1.xn--sv9a..xn--mfc; [V5, A4_2] # 1.ꫬ..à«
1.xn--sv9a..xn--mfc; 1.\uAAEC..\u0ACD; [V5, X4_2]; 1.xn--sv9a..xn--mfc; [V5, A4_2]; ; # 1.ꫬ..à«
1.xn--0ug7185c..xn--mfc; 1.\u200C\uAAEC..\u0ACD; [C1, V5, X4_2]; 1.xn--0ug7185c..xn--mfc; [C1, V5, A4_2]; ; # 1.ꫬ..à«
xn--tsh0720cse8b.xn--mfc; â’ˆ\uAAEC︒.\u0ACD; [V5, V6]; xn--tsh0720cse8b.xn--mfc; ; ; # ⒈ꫬ︒.à«
xn--0ug78o720myr1c.xn--mfc; â’ˆ\u200C\uAAEC︒.\u0ACD; [C1, V5, V6]; xn--0ug78o720myr1c.xn--mfc; ; ; # ⒈ꫬ︒.à«
-\u0C46。䰀\u0668𞭅󠅼; \u0C46.䰀\u0668𞭅; [B1, B3, B5, B6, P1, V5, V6]; xn--eqc.xn--hib5476aim6t; ; ; # ె.䰀٨
-xn--eqc.xn--hib5476aim6t; \u0C46.䰀\u0668𞭅; [B1, B3, B5, B6, V5, V6]; xn--eqc.xn--hib5476aim6t; ; ; # ె.䰀٨
-ß\u200D.\u1BF2񄾼; ; [C2, P1, V5, V6]; xn--zca870n.xn--0zf22107b; ; ss.xn--0zf22107b; [P1, V5, V6] # ß.᯲
-SS\u200D.\u1BF2񄾼; ss\u200D.\u1BF2񄾼; [C2, P1, V5, V6]; xn--ss-n1t.xn--0zf22107b; ; ss.xn--0zf22107b; [P1, V5, V6] # ss.᯲
-ss\u200D.\u1BF2񄾼; ; [C2, P1, V5, V6]; xn--ss-n1t.xn--0zf22107b; ; ss.xn--0zf22107b; [P1, V5, V6] # ss.᯲
-Ss\u200D.\u1BF2񄾼; ss\u200D.\u1BF2񄾼; [C2, P1, V5, V6]; xn--ss-n1t.xn--0zf22107b; ; ss.xn--0zf22107b; [P1, V5, V6] # ss.᯲
+\u0C46。䰀\u0668𞭅󠅼; \u0C46.䰀\u0668𞭅; [B1, B5, B6, V5, V6]; xn--eqc.xn--hib5476aim6t; ; ; # ె.䰀٨
+xn--eqc.xn--hib5476aim6t; \u0C46.䰀\u0668𞭅; [B1, B5, B6, V5, V6]; xn--eqc.xn--hib5476aim6t; ; ; # ె.䰀٨
+ß\u200D.\u1BF2񄾼; ; [C2, V5, V6]; xn--zca870n.xn--0zf22107b; ; ss.xn--0zf22107b; [V5, V6] # ß.᯲
+SS\u200D.\u1BF2񄾼; ss\u200D.\u1BF2񄾼; [C2, V5, V6]; xn--ss-n1t.xn--0zf22107b; ; ss.xn--0zf22107b; [V5, V6] # ss.᯲
+ss\u200D.\u1BF2񄾼; ; [C2, V5, V6]; xn--ss-n1t.xn--0zf22107b; ; ss.xn--0zf22107b; [V5, V6] # ss.᯲
+Ss\u200D.\u1BF2񄾼; ss\u200D.\u1BF2񄾼; [C2, V5, V6]; xn--ss-n1t.xn--0zf22107b; ; ss.xn--0zf22107b; [V5, V6] # ss.᯲
ss.xn--0zf22107b; ss.\u1BF2񄾼; [V5, V6]; ss.xn--0zf22107b; ; ; # ss.᯲
xn--ss-n1t.xn--0zf22107b; ss\u200D.\u1BF2񄾼; [C2, V5, V6]; xn--ss-n1t.xn--0zf22107b; ; ; # ss.᯲
xn--zca870n.xn--0zf22107b; ß\u200D.\u1BF2񄾼; [C2, V5, V6]; xn--zca870n.xn--0zf22107b; ; ; # ß.᯲
-𑓂\u200C≮.≮; ; [P1, V5, V6]; xn--0ugy6glz29a.xn--gdh; ; xn--gdhz656g.xn--gdh; # 𑓂≮.≮
-𑓂\u200C<\u0338.<\u0338; 𑓂\u200C≮.≮; [P1, V5, V6]; xn--0ugy6glz29a.xn--gdh; ; xn--gdhz656g.xn--gdh; # 𑓂≮.≮
-xn--gdhz656g.xn--gdh; 𑓂≮.≮; [V5, V6]; xn--gdhz656g.xn--gdh; ; ; # 𑓂≮.≮
-xn--0ugy6glz29a.xn--gdh; 𑓂\u200C≮.≮; [V5, V6]; xn--0ugy6glz29a.xn--gdh; ; ; # 𑓂≮.≮
-🕼.\uFFA0; 🕼.\uFFA0; [P1, V6]; xn--my8h.xn--cl7c; ; ; # 🕼.
-🕼.\u1160; ; [P1, V6]; xn--my8h.xn--psd; ; ; # 🕼.
+𑓂\u200C≮.≮; ; [V5]; xn--0ugy6glz29a.xn--gdh; ; xn--gdhz656g.xn--gdh; # 𑓂≮.≮
+𑓂\u200C<\u0338.<\u0338; 𑓂\u200C≮.≮; [V5]; xn--0ugy6glz29a.xn--gdh; ; xn--gdhz656g.xn--gdh; # 𑓂≮.≮
+xn--gdhz656g.xn--gdh; 𑓂≮.≮; [V5]; xn--gdhz656g.xn--gdh; ; ; # 𑓂≮.≮
+xn--0ugy6glz29a.xn--gdh; 𑓂\u200C≮.≮; [V5]; xn--0ugy6glz29a.xn--gdh; ; ; # 𑓂≮.≮
+🕼.\uFFA0; 🕼.\uFFA0; [V6]; xn--my8h.xn--cl7c; ; ; # 🕼.
+🕼.\u1160; ; [V6]; xn--my8h.xn--psd; ; ; # 🕼.
xn--my8h.xn--psd; 🕼.\u1160; [V6]; xn--my8h.xn--psd; ; ; # 🕼.
xn--my8h.xn--cl7c; 🕼.\uFFA0; [V6]; xn--my8h.xn--cl7c; ; ; # 🕼.
-ᡔ\uFD82。񷘎; ᡔ\u0644\u062D\u0649.񷘎; [B5, B6, P1, V6]; xn--sgb9bq785p.xn--bc31b; ; ; # ᡔلحى.
-ᡔ\u0644\u062D\u0649。񷘎; ᡔ\u0644\u062D\u0649.񷘎; [B5, B6, P1, V6]; xn--sgb9bq785p.xn--bc31b; ; ; # ᡔلحى.
+ᡔ\uFD82。񷘎; ᡔ\u0644\u062D\u0649.񷘎; [B5, B6, V6]; xn--sgb9bq785p.xn--bc31b; ; ; # ᡔلحى.
+ᡔ\u0644\u062D\u0649。񷘎; ᡔ\u0644\u062D\u0649.񷘎; [B5, B6, V6]; xn--sgb9bq785p.xn--bc31b; ; ; # ᡔلحى.
xn--sgb9bq785p.xn--bc31b; ᡔ\u0644\u062D\u0649.񷘎; [B5, B6, V6]; xn--sgb9bq785p.xn--bc31b; ; ; # ᡔلحى.
-爕ò³™‘.ðŸ°æ°—; 爕ò³™‘.4æ°—; [P1, V6]; xn--1zxq3199c.xn--4-678b; ; ; # 爕.4æ°—
-爕򳙑.4気; ; [P1, V6]; xn--1zxq3199c.xn--4-678b; ; ; # 爕.4気
+爕ò³™‘.ðŸ°æ°—; 爕ò³™‘.4æ°—; [V6]; xn--1zxq3199c.xn--4-678b; ; ; # 爕.4æ°—
+爕򳙑.4気; ; [V6]; xn--1zxq3199c.xn--4-678b; ; ; # 爕.4気
xn--1zxq3199c.xn--4-678b; 爕򳙑.4気; [V6]; xn--1zxq3199c.xn--4-678b; ; ; # 爕.4気
-â’‹ð‘Ⴝ-.𞬪\u0DCA\u05B5; â’‹ð‘Ⴝ-.𞬪\u0DCA\u05B5; [B1, P1, V3, V6]; xn----t1g323mnk9t.xn--ddb152b7y23b; ; ; # â’‹ð‘Ⴝ-.à·ŠÖµ
-4.ð‘Ⴝ-.𞬪\u0DCA\u05B5; ; [B1, B6, P1, V3, V5, V6]; 4.xn----t1g9869q.xn--ddb152b7y23b; ; ; # 4.ð‘Ⴝ-.à·ŠÖµ
-4.ð‘â´-.𞬪\u0DCA\u05B5; ; [B1, B6, P1, V3, V5, V6]; 4.xn----wwsx259f.xn--ddb152b7y23b; ; ; # 4.ð‘â´-.à·ŠÖµ
+â’‹ð‘Ⴝ-.𞬪\u0DCA\u05B5; â’‹ð‘Ⴝ-.𞬪\u0DCA\u05B5; [B1, V3, V6]; xn----t1g323mnk9t.xn--ddb152b7y23b; ; ; # â’‹ð‘Ⴝ-.à·ŠÖµ
+4.ð‘Ⴝ-.𞬪\u0DCA\u05B5; ; [B1, B6, V3, V5, V6]; 4.xn----t1g9869q.xn--ddb152b7y23b; ; ; # 4.ð‘Ⴝ-.à·ŠÖµ
+4.ð‘â´-.𞬪\u0DCA\u05B5; ; [B1, B6, V3, V5, V6]; 4.xn----wwsx259f.xn--ddb152b7y23b; ; ; # 4.ð‘â´-.à·ŠÖµ
4.xn----wwsx259f.xn--ddb152b7y23b; 4.ð‘â´-.𞬪\u0DCA\u05B5; [B1, B6, V3, V5, V6]; 4.xn----wwsx259f.xn--ddb152b7y23b; ; ; # 4.ð‘â´-.à·ŠÖµ
4.xn----t1g9869q.xn--ddb152b7y23b; 4.ð‘Ⴝ-.𞬪\u0DCA\u05B5; [B1, B6, V3, V5, V6]; 4.xn----t1g9869q.xn--ddb152b7y23b; ; ; # 4.ð‘Ⴝ-.à·ŠÖµ
-â’‹ð‘â´-.𞬪\u0DCA\u05B5; â’‹ð‘â´-.𞬪\u0DCA\u05B5; [B1, P1, V3, V6]; xn----jcp487avl3w.xn--ddb152b7y23b; ; ; # â’‹ð‘â´-.à·ŠÖµ
+â’‹ð‘â´-.𞬪\u0DCA\u05B5; â’‹ð‘â´-.𞬪\u0DCA\u05B5; [B1, V3, V6]; xn----jcp487avl3w.xn--ddb152b7y23b; ; ; # â’‹ð‘â´-.à·ŠÖµ
xn----jcp487avl3w.xn--ddb152b7y23b; â’‹ð‘â´-.𞬪\u0DCA\u05B5; [B1, V3, V6]; xn----jcp487avl3w.xn--ddb152b7y23b; ; ; # â’‹ð‘â´-.à·ŠÖµ
xn----t1g323mnk9t.xn--ddb152b7y23b; â’‹ð‘Ⴝ-.𞬪\u0DCA\u05B5; [B1, V3, V6]; xn----t1g323mnk9t.xn--ddb152b7y23b; ; ; # â’‹ð‘Ⴝ-.à·ŠÖµ
-óžƒã€‚ò‘†ƒñ‰¢—--; óžƒ.ò‘†ƒñ‰¢—--; [P1, V2, V3, V6]; xn--2y75e.xn-----1l15eer88n; ; ; # .--
+óžƒã€‚ò‘†ƒñ‰¢—--; óžƒ.ò‘†ƒñ‰¢—--; [V2, V3, V6]; xn--2y75e.xn-----1l15eer88n; ; ; # .--
xn--2y75e.xn-----1l15eer88n; óžƒ.ò‘†ƒñ‰¢—--; [V2, V3, V6]; xn--2y75e.xn-----1l15eer88n; ; ; # .--
-\u200D\u07DF。\u200C\uABED; \u200D\u07DF.\u200C\uABED; [B1, C1, C2]; xn--6sb394j.xn--0ug1126c; ; xn--6sb.xn--429a; [B1, B3, B6, V5] # ߟ.꯭
-\u200D\u07DF。\u200C\uABED; \u200D\u07DF.\u200C\uABED; [B1, C1, C2]; xn--6sb394j.xn--0ug1126c; ; xn--6sb.xn--429a; [B1, B3, B6, V5] # ߟ.꯭
-xn--6sb.xn--429a; \u07DF.\uABED; [B1, B3, B6, V5]; xn--6sb.xn--429a; ; ; # ߟ.꯭
+\u200D\u07DF。\u200C\uABED; \u200D\u07DF.\u200C\uABED; [B1, C1, C2]; xn--6sb394j.xn--0ug1126c; ; xn--6sb.xn--429a; [B1, V5] # ߟ.꯭
+\u200D\u07DF。\u200C\uABED; \u200D\u07DF.\u200C\uABED; [B1, C1, C2]; xn--6sb394j.xn--0ug1126c; ; xn--6sb.xn--429a; [B1, V5] # ߟ.꯭
+xn--6sb.xn--429a; \u07DF.\uABED; [B1, V5]; xn--6sb.xn--429a; ; ; # ߟ.꯭
xn--6sb394j.xn--0ug1126c; \u200D\u07DF.\u200C\uABED; [B1, C1, C2]; xn--6sb394j.xn--0ug1126c; ; ; # ߟ.꯭
-𞮽\u07FF\u084E。á¢ò¹ð«˜; 𞮽\u07FF\u084E.á¢ò¹ð«˜; [B5, B6, P1, V6]; xn--3tb2nz468k.xn--69e8615j5rn5d; ; ; # ß¿à¡Ž.á¢ð«˜
-𞮽\u07FF\u084E。á¢ò¹ð«˜; 𞮽\u07FF\u084E.á¢ò¹ð«˜; [B5, B6, P1, V6]; xn--3tb2nz468k.xn--69e8615j5rn5d; ; ; # ß¿à¡Ž.á¢ð«˜
+𞮽\u07FF\u084E。á¢ò¹ð«˜; 𞮽\u07FF\u084E.á¢ò¹ð«˜; [B5, B6, V6]; xn--3tb2nz468k.xn--69e8615j5rn5d; ; ; # ß¿à¡Ž.á¢ð«˜
+𞮽\u07FF\u084E。á¢ò¹ð«˜; 𞮽\u07FF\u084E.á¢ò¹ð«˜; [B5, B6, V6]; xn--3tb2nz468k.xn--69e8615j5rn5d; ; ; # ß¿à¡Ž.á¢ð«˜
xn--3tb2nz468k.xn--69e8615j5rn5d; 𞮽\u07FF\u084E.á¢ò¹ð«˜; [B5, B6, V6]; xn--3tb2nz468k.xn--69e8615j5rn5d; ; ; # ß¿à¡Ž.á¢ð«˜
\u06ED𞺌𑄚\u1714.ꡞ\u08B7; \u06ED\u0645𑄚\u1714.ꡞ\u08B7; [B1, B5, B6, V5]; xn--hhb94ag41b739u.xn--dzb5582f; ; ; # ۭم𑄚᜔.ꡞࢷ
\u06ED\u0645𑄚\u1714.ꡞ\u08B7; ; [B1, B5, B6, V5]; xn--hhb94ag41b739u.xn--dzb5582f; ; ; # ۭم𑄚᜔.ꡞࢷ
xn--hhb94ag41b739u.xn--dzb5582f; \u06ED\u0645𑄚\u1714.ꡞ\u08B7; [B1, B5, B6, V5]; xn--hhb94ag41b739u.xn--dzb5582f; ; ; # ۭم𑄚᜔.ꡞࢷ
-񻂵킃𑘶\u07DC。ς\u063Cς; 񻂵킃𑘶\u07DC.ς\u063Cς; [B5, B6, P1, V6]; xn--3sb7483hoyvbbe76g.xn--3xaa51q; ; xn--3sb7483hoyvbbe76g.xn--4xaa21q; # 킃𑘶ߜ.ςؼς
-ñ»‚µá„ᅳᆾ𑘶\u07DC。ς\u063CÏ‚; ñ»‚µí‚ƒð‘˜¶\u07DC.Ï‚\u063CÏ‚; [B5, B6, P1, V6]; xn--3sb7483hoyvbbe76g.xn--3xaa51q; ; xn--3sb7483hoyvbbe76g.xn--4xaa21q; # 킃𑘶ߜ.ςؼς
-񻂵킃𑘶\u07DC。ς\u063Cς; 񻂵킃𑘶\u07DC.ς\u063Cς; [B5, B6, P1, V6]; xn--3sb7483hoyvbbe76g.xn--3xaa51q; ; xn--3sb7483hoyvbbe76g.xn--4xaa21q; # 킃𑘶ߜ.ςؼς
-ñ»‚µá„ᅳᆾ𑘶\u07DC。ς\u063CÏ‚; ñ»‚µí‚ƒð‘˜¶\u07DC.Ï‚\u063CÏ‚; [B5, B6, P1, V6]; xn--3sb7483hoyvbbe76g.xn--3xaa51q; ; xn--3sb7483hoyvbbe76g.xn--4xaa21q; # 킃𑘶ߜ.ςؼς
-ñ»‚µá„ᅳᆾ𑘶\u07DC。Σ\u063CΣ; ñ»‚µí‚ƒð‘˜¶\u07DC.σ\u063Cσ; [B5, B6, P1, V6]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ; # 킃𑘶ߜ.σؼσ
-񻂵킃𑘶\u07DC。Σ\u063CΣ; 񻂵킃𑘶\u07DC.σ\u063Cσ; [B5, B6, P1, V6]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ; # 킃𑘶ߜ.σؼσ
-񻂵킃𑘶\u07DC。σ\u063Cσ; 񻂵킃𑘶\u07DC.σ\u063Cσ; [B5, B6, P1, V6]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ; # 킃𑘶ߜ.σؼσ
-ñ»‚µá„ᅳᆾ𑘶\u07DC。σ\u063Cσ; ñ»‚µí‚ƒð‘˜¶\u07DC.σ\u063Cσ; [B5, B6, P1, V6]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ; # 킃𑘶ߜ.σؼσ
-ñ»‚µá„ᅳᆾ𑘶\u07DC。Σ\u063Cσ; ñ»‚µí‚ƒð‘˜¶\u07DC.σ\u063Cσ; [B5, B6, P1, V6]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ; # 킃𑘶ߜ.σؼσ
-񻂵킃𑘶\u07DC。Σ\u063Cσ; 񻂵킃𑘶\u07DC.σ\u063Cσ; [B5, B6, P1, V6]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ; # 킃𑘶ߜ.σؼσ
+񻂵킃𑘶\u07DC。ς\u063Cς; 񻂵킃𑘶\u07DC.ς\u063Cς; [B5, B6, V6]; xn--3sb7483hoyvbbe76g.xn--3xaa51q; ; xn--3sb7483hoyvbbe76g.xn--4xaa21q; # 킃𑘶ߜ.ςؼς
+ñ»‚µá„ᅳᆾ𑘶\u07DC。ς\u063CÏ‚; ñ»‚µí‚ƒð‘˜¶\u07DC.Ï‚\u063CÏ‚; [B5, B6, V6]; xn--3sb7483hoyvbbe76g.xn--3xaa51q; ; xn--3sb7483hoyvbbe76g.xn--4xaa21q; # 킃𑘶ߜ.ςؼς
+񻂵킃𑘶\u07DC。ς\u063Cς; 񻂵킃𑘶\u07DC.ς\u063Cς; [B5, B6, V6]; xn--3sb7483hoyvbbe76g.xn--3xaa51q; ; xn--3sb7483hoyvbbe76g.xn--4xaa21q; # 킃𑘶ߜ.ςؼς
+ñ»‚µá„ᅳᆾ𑘶\u07DC。ς\u063CÏ‚; ñ»‚µí‚ƒð‘˜¶\u07DC.Ï‚\u063CÏ‚; [B5, B6, V6]; xn--3sb7483hoyvbbe76g.xn--3xaa51q; ; xn--3sb7483hoyvbbe76g.xn--4xaa21q; # 킃𑘶ߜ.ςؼς
+ñ»‚µá„ᅳᆾ𑘶\u07DC。Σ\u063CΣ; ñ»‚µí‚ƒð‘˜¶\u07DC.σ\u063Cσ; [B5, B6, V6]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ; # 킃𑘶ߜ.σؼσ
+񻂵킃𑘶\u07DC。Σ\u063CΣ; 񻂵킃𑘶\u07DC.σ\u063Cσ; [B5, B6, V6]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ; # 킃𑘶ߜ.σؼσ
+񻂵킃𑘶\u07DC。σ\u063Cσ; 񻂵킃𑘶\u07DC.σ\u063Cσ; [B5, B6, V6]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ; # 킃𑘶ߜ.σؼσ
+ñ»‚µá„ᅳᆾ𑘶\u07DC。σ\u063Cσ; ñ»‚µí‚ƒð‘˜¶\u07DC.σ\u063Cσ; [B5, B6, V6]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ; # 킃𑘶ߜ.σؼσ
+ñ»‚µá„ᅳᆾ𑘶\u07DC。Σ\u063Cσ; ñ»‚µí‚ƒð‘˜¶\u07DC.σ\u063Cσ; [B5, B6, V6]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ; # 킃𑘶ߜ.σؼσ
+񻂵킃𑘶\u07DC。Σ\u063Cσ; 񻂵킃𑘶\u07DC.σ\u063Cσ; [B5, B6, V6]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ; # 킃𑘶ߜ.σؼσ
xn--3sb7483hoyvbbe76g.xn--4xaa21q; 񻂵킃𑘶\u07DC.σ\u063Cσ; [B5, B6, V6]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ; # 킃𑘶ߜ.σؼσ
-ñ»‚µá„ᅳᆾ𑘶\u07DC。Σ\u063CÏ‚; ñ»‚µí‚ƒð‘˜¶\u07DC.σ\u063CÏ‚; [B5, B6, P1, V6]; xn--3sb7483hoyvbbe76g.xn--3xab31q; ; xn--3sb7483hoyvbbe76g.xn--4xaa21q; # 킃𑘶ߜ.σؼς
-񻂵킃𑘶\u07DC。Σ\u063Cς; 񻂵킃𑘶\u07DC.σ\u063Cς; [B5, B6, P1, V6]; xn--3sb7483hoyvbbe76g.xn--3xab31q; ; xn--3sb7483hoyvbbe76g.xn--4xaa21q; # 킃𑘶ߜ.σؼς
-񻂵킃𑘶\u07DC。σ\u063Cς; 񻂵킃𑘶\u07DC.σ\u063Cς; [B5, B6, P1, V6]; xn--3sb7483hoyvbbe76g.xn--3xab31q; ; xn--3sb7483hoyvbbe76g.xn--4xaa21q; # 킃𑘶ߜ.σؼς
-ñ»‚µá„ᅳᆾ𑘶\u07DC。σ\u063CÏ‚; ñ»‚µí‚ƒð‘˜¶\u07DC.σ\u063CÏ‚; [B5, B6, P1, V6]; xn--3sb7483hoyvbbe76g.xn--3xab31q; ; xn--3sb7483hoyvbbe76g.xn--4xaa21q; # 킃𑘶ߜ.σؼς
+ñ»‚µá„ᅳᆾ𑘶\u07DC。Σ\u063CÏ‚; ñ»‚µí‚ƒð‘˜¶\u07DC.σ\u063CÏ‚; [B5, B6, V6]; xn--3sb7483hoyvbbe76g.xn--3xab31q; ; xn--3sb7483hoyvbbe76g.xn--4xaa21q; # 킃𑘶ߜ.σؼς
+񻂵킃𑘶\u07DC。Σ\u063Cς; 񻂵킃𑘶\u07DC.σ\u063Cς; [B5, B6, V6]; xn--3sb7483hoyvbbe76g.xn--3xab31q; ; xn--3sb7483hoyvbbe76g.xn--4xaa21q; # 킃𑘶ߜ.σؼς
+񻂵킃𑘶\u07DC。σ\u063Cς; 񻂵킃𑘶\u07DC.σ\u063Cς; [B5, B6, V6]; xn--3sb7483hoyvbbe76g.xn--3xab31q; ; xn--3sb7483hoyvbbe76g.xn--4xaa21q; # 킃𑘶ߜ.σؼς
+ñ»‚µá„ᅳᆾ𑘶\u07DC。σ\u063CÏ‚; ñ»‚µí‚ƒð‘˜¶\u07DC.σ\u063CÏ‚; [B5, B6, V6]; xn--3sb7483hoyvbbe76g.xn--3xab31q; ; xn--3sb7483hoyvbbe76g.xn--4xaa21q; # 킃𑘶ߜ.σؼς
xn--3sb7483hoyvbbe76g.xn--3xab31q; 񻂵킃𑘶\u07DC.σ\u063Cς; [B5, B6, V6]; xn--3sb7483hoyvbbe76g.xn--3xab31q; ; ; # 킃𑘶ߜ.σؼς
xn--3sb7483hoyvbbe76g.xn--3xaa51q; 񻂵킃𑘶\u07DC.ς\u063Cς; [B5, B6, V6]; xn--3sb7483hoyvbbe76g.xn--3xaa51q; ; ; # 킃𑘶ߜ.ςؼς
-ñ»‚µá„ᅳᆾ𑘶\u07DC。Σ\u063CΣ; ñ»‚µí‚ƒð‘˜¶\u07DC.σ\u063Cσ; [B5, B6, P1, V6]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ; # 킃𑘶ߜ.σؼσ
-񻂵킃𑘶\u07DC。Σ\u063CΣ; 񻂵킃𑘶\u07DC.σ\u063Cσ; [B5, B6, P1, V6]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ; # 킃𑘶ߜ.σؼσ
-񻂵킃𑘶\u07DC。σ\u063Cσ; 񻂵킃𑘶\u07DC.σ\u063Cσ; [B5, B6, P1, V6]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ; # 킃𑘶ߜ.σؼσ
-ñ»‚µá„ᅳᆾ𑘶\u07DC。σ\u063Cσ; ñ»‚µí‚ƒð‘˜¶\u07DC.σ\u063Cσ; [B5, B6, P1, V6]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ; # 킃𑘶ߜ.σؼσ
-ñ»‚µá„ᅳᆾ𑘶\u07DC。Σ\u063Cσ; ñ»‚µí‚ƒð‘˜¶\u07DC.σ\u063Cσ; [B5, B6, P1, V6]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ; # 킃𑘶ߜ.σؼσ
-񻂵킃𑘶\u07DC。Σ\u063Cσ; 񻂵킃𑘶\u07DC.σ\u063Cσ; [B5, B6, P1, V6]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ; # 킃𑘶ߜ.σؼσ
-ñ»‚µá„ᅳᆾ𑘶\u07DC。Σ\u063CÏ‚; ñ»‚µí‚ƒð‘˜¶\u07DC.σ\u063CÏ‚; [B5, B6, P1, V6]; xn--3sb7483hoyvbbe76g.xn--3xab31q; ; xn--3sb7483hoyvbbe76g.xn--4xaa21q; # 킃𑘶ߜ.σؼς
-񻂵킃𑘶\u07DC。Σ\u063Cς; 񻂵킃𑘶\u07DC.σ\u063Cς; [B5, B6, P1, V6]; xn--3sb7483hoyvbbe76g.xn--3xab31q; ; xn--3sb7483hoyvbbe76g.xn--4xaa21q; # 킃𑘶ߜ.σؼς
-񻂵킃𑘶\u07DC。σ\u063Cς; 񻂵킃𑘶\u07DC.σ\u063Cς; [B5, B6, P1, V6]; xn--3sb7483hoyvbbe76g.xn--3xab31q; ; xn--3sb7483hoyvbbe76g.xn--4xaa21q; # 킃𑘶ߜ.σؼς
-ñ»‚µá„ᅳᆾ𑘶\u07DC。σ\u063CÏ‚; ñ»‚µí‚ƒð‘˜¶\u07DC.σ\u063CÏ‚; [B5, B6, P1, V6]; xn--3sb7483hoyvbbe76g.xn--3xab31q; ; xn--3sb7483hoyvbbe76g.xn--4xaa21q; # 킃𑘶ߜ.σؼς
-蔰。ó ¹\u08DD-𑈵; è”°.ó ¹\u08DD-𑈵; [P1, V6]; xn--sz1a.xn----mrd9984r3dl0i; ; ; # è”°.à£-𑈵
+ñ»‚µá„ᅳᆾ𑘶\u07DC。Σ\u063CΣ; ñ»‚µí‚ƒð‘˜¶\u07DC.σ\u063Cσ; [B5, B6, V6]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ; # 킃𑘶ߜ.σؼσ
+񻂵킃𑘶\u07DC。Σ\u063CΣ; 񻂵킃𑘶\u07DC.σ\u063Cσ; [B5, B6, V6]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ; # 킃𑘶ߜ.σؼσ
+񻂵킃𑘶\u07DC。σ\u063Cσ; 񻂵킃𑘶\u07DC.σ\u063Cσ; [B5, B6, V6]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ; # 킃𑘶ߜ.σؼσ
+ñ»‚µá„ᅳᆾ𑘶\u07DC。σ\u063Cσ; ñ»‚µí‚ƒð‘˜¶\u07DC.σ\u063Cσ; [B5, B6, V6]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ; # 킃𑘶ߜ.σؼσ
+ñ»‚µá„ᅳᆾ𑘶\u07DC。Σ\u063Cσ; ñ»‚µí‚ƒð‘˜¶\u07DC.σ\u063Cσ; [B5, B6, V6]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ; # 킃𑘶ߜ.σؼσ
+񻂵킃𑘶\u07DC。Σ\u063Cσ; 񻂵킃𑘶\u07DC.σ\u063Cσ; [B5, B6, V6]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ; # 킃𑘶ߜ.σؼσ
+ñ»‚µá„ᅳᆾ𑘶\u07DC。Σ\u063CÏ‚; ñ»‚µí‚ƒð‘˜¶\u07DC.σ\u063CÏ‚; [B5, B6, V6]; xn--3sb7483hoyvbbe76g.xn--3xab31q; ; xn--3sb7483hoyvbbe76g.xn--4xaa21q; # 킃𑘶ߜ.σؼς
+񻂵킃𑘶\u07DC。Σ\u063Cς; 񻂵킃𑘶\u07DC.σ\u063Cς; [B5, B6, V6]; xn--3sb7483hoyvbbe76g.xn--3xab31q; ; xn--3sb7483hoyvbbe76g.xn--4xaa21q; # 킃𑘶ߜ.σؼς
+񻂵킃𑘶\u07DC。σ\u063Cς; 񻂵킃𑘶\u07DC.σ\u063Cς; [B5, B6, V6]; xn--3sb7483hoyvbbe76g.xn--3xab31q; ; xn--3sb7483hoyvbbe76g.xn--4xaa21q; # 킃𑘶ߜ.σؼς
+ñ»‚µá„ᅳᆾ𑘶\u07DC。σ\u063CÏ‚; ñ»‚µí‚ƒð‘˜¶\u07DC.σ\u063CÏ‚; [B5, B6, V6]; xn--3sb7483hoyvbbe76g.xn--3xab31q; ; xn--3sb7483hoyvbbe76g.xn--4xaa21q; # 킃𑘶ߜ.σؼς
+蔰。ó ¹\u08DD-𑈵; è”°.ó ¹\u08DD-𑈵; [V6]; xn--sz1a.xn----mrd9984r3dl0i; ; ; # è”°.à£-𑈵
xn--sz1a.xn----mrd9984r3dl0i; è”°.ó ¹\u08DD-𑈵; [V6]; xn--sz1a.xn----mrd9984r3dl0i; ; ; # è”°.à£-𑈵
-ςჅ。\u075A; ςჅ.\u075A; [P1, V6]; xn--3xa677d.xn--epb; ; xn--4xa477d.xn--epb; # ςჅ.ݚ
+ςჅ。\u075A; ςჅ.\u075A; [V6]; xn--3xa677d.xn--epb; ; xn--4xa477d.xn--epb; # ςჅ.ݚ
ςⴥ。\u075A; ςⴥ.\u075A; ; xn--3xa403s.xn--epb; ; xn--4xa203s.xn--epb; # ςⴥ.ݚ
-ΣჅ。\u075A; σჅ.\u075A; [P1, V6]; xn--4xa477d.xn--epb; ; ; # σჅ.ݚ
+ΣჅ。\u075A; σჅ.\u075A; [V6]; xn--4xa477d.xn--epb; ; ; # σჅ.ݚ
σⴥ。\u075A; σⴥ.\u075A; ; xn--4xa203s.xn--epb; ; ; # σⴥ.ݚ
Σⴥ。\u075A; σⴥ.\u075A; ; xn--4xa203s.xn--epb; ; ; # σⴥ.ݚ
xn--4xa203s.xn--epb; σⴥ.\u075A; ; xn--4xa203s.xn--epb; ; ; # σⴥ.ݚ
σⴥ.\u075A; ; ; xn--4xa203s.xn--epb; ; ; # σⴥ.ݚ
-ΣჅ.\u075A; σჅ.\u075A; [P1, V6]; xn--4xa477d.xn--epb; ; ; # σჅ.ݚ
+ΣჅ.\u075A; σჅ.\u075A; [V6]; xn--4xa477d.xn--epb; ; ; # σჅ.ݚ
Σⴥ.\u075A; σⴥ.\u075A; ; xn--4xa203s.xn--epb; ; ; # σⴥ.ݚ
xn--4xa477d.xn--epb; σჅ.\u075A; [V6]; xn--4xa477d.xn--epb; ; ; # σჅ.ݚ
xn--3xa403s.xn--epb; Ï‚â´¥.\u075A; ; xn--3xa403s.xn--epb; ; ; # Ï‚â´¥.Ýš
Ï‚â´¥.\u075A; ; ; xn--3xa403s.xn--epb; ; xn--4xa203s.xn--epb; # Ï‚â´¥.Ýš
xn--3xa677d.xn--epb; ςჅ.\u075A; [V6]; xn--3xa677d.xn--epb; ; ; # ςჅ.ݚ
-\u0C4DႩ𞰓.\u1B72; \u0C4Dá‚©ðž°“.\u1B72; [B1, B3, B6, P1, V5, V6]; xn--lqc64t7t26c.xn--dwf; ; ; # à±á‚©.á­²
-\u0C4Dá‚©ðž°“.\u1B72; ; [B1, B3, B6, P1, V5, V6]; xn--lqc64t7t26c.xn--dwf; ; ; # à±á‚©.á­²
-\u0C4Dⴉ𞰓.\u1B72; ; [B1, B3, B6, P1, V5, V6]; xn--lqc478nlr02a.xn--dwf; ; ; # à±â´‰.á­²
-xn--lqc478nlr02a.xn--dwf; \u0C4Dⴉ𞰓.\u1B72; [B1, B3, B6, V5, V6]; xn--lqc478nlr02a.xn--dwf; ; ; # à±â´‰.á­²
-xn--lqc64t7t26c.xn--dwf; \u0C4Dá‚©ðž°“.\u1B72; [B1, B3, B6, V5, V6]; xn--lqc64t7t26c.xn--dwf; ; ; # à±á‚©.á­²
-\u0C4Dⴉ𞰓.\u1B72; \u0C4Dⴉ𞰓.\u1B72; [B1, B3, B6, P1, V5, V6]; xn--lqc478nlr02a.xn--dwf; ; ; # à±â´‰.á­²
-⮷≮ñŽˆ´ó „Ÿã€‚ð „; ⮷≮ñŽˆ´.ð „; [B1, P1, V6]; xn--gdh877a3513h.xn--pc9c; ; ; # ⮷≮.ð „
-â®·<\u0338ñŽˆ´ó „Ÿã€‚ð „; ⮷≮ñŽˆ´.ð „; [B1, P1, V6]; xn--gdh877a3513h.xn--pc9c; ; ; # ⮷≮.ð „
+\u0C4DႩ𞰓.\u1B72; \u0C4Dá‚©ðž°“.\u1B72; [B1, V5, V6]; xn--lqc64t7t26c.xn--dwf; ; ; # à±á‚©.á­²
+\u0C4Dá‚©ðž°“.\u1B72; ; [B1, V5, V6]; xn--lqc64t7t26c.xn--dwf; ; ; # à±á‚©.á­²
+\u0C4Dⴉ𞰓.\u1B72; ; [B1, V5, V6]; xn--lqc478nlr02a.xn--dwf; ; ; # à±â´‰.á­²
+xn--lqc478nlr02a.xn--dwf; \u0C4Dⴉ𞰓.\u1B72; [B1, V5, V6]; xn--lqc478nlr02a.xn--dwf; ; ; # à±â´‰.á­²
+xn--lqc64t7t26c.xn--dwf; \u0C4Dá‚©ðž°“.\u1B72; [B1, V5, V6]; xn--lqc64t7t26c.xn--dwf; ; ; # à±á‚©.á­²
+\u0C4Dⴉ𞰓.\u1B72; \u0C4Dⴉ𞰓.\u1B72; [B1, V5, V6]; xn--lqc478nlr02a.xn--dwf; ; ; # à±â´‰.á­²
+⮷≮ñŽˆ´ó „Ÿã€‚ð „; ⮷≮ñŽˆ´.ð „; [B1, V6]; xn--gdh877a3513h.xn--pc9c; ; ; # ⮷≮.ð „
+â®·<\u0338ñŽˆ´ó „Ÿã€‚ð „; ⮷≮ñŽˆ´.ð „; [B1, V6]; xn--gdh877a3513h.xn--pc9c; ; ; # ⮷≮.ð „
xn--gdh877a3513h.xn--pc9c; ⮷≮ñŽˆ´.ð „; [B1, V6]; xn--gdh877a3513h.xn--pc9c; ; ; # ⮷≮.ð „
\u06BC。\u200Dáº\u200Cᡤ; \u06BC.\u200Dáº\u200Cᡤ; [B1, C1, C2]; xn--vkb.xn--08e172ax6aca; ; xn--vkb.xn--08e172a; [] # Ú¼.áºá¡¤
\u06BC。\u200Dy\u0307\u200Cᡤ; \u06BC.\u200Dáº\u200Cᡤ; [B1, C1, C2]; xn--vkb.xn--08e172ax6aca; ; xn--vkb.xn--08e172a; [] # Ú¼.áºá¡¤
@@ -3974,68 +3992,68 @@ xn--vkb.xn--08e172a; \u06BC.áºá¡¤; ; xn--vkb.xn--08e172a; ; ; # Ú¼.áºá¡¤
xn--vkb.xn--08e172ax6aca; \u06BC.\u200Dáº\u200Cᡤ; [B1, C1, C2]; xn--vkb.xn--08e172ax6aca; ; ; # Ú¼.áºá¡¤
\u06BC。\u200DY\u0307\u200Cᡤ; \u06BC.\u200Dáº\u200Cᡤ; [B1, C1, C2]; xn--vkb.xn--08e172ax6aca; ; xn--vkb.xn--08e172a; [] # Ú¼.áºá¡¤
\u06BC。\u200DẎ\u200Cᡤ; \u06BC.\u200Dáº\u200Cᡤ; [B1, C1, C2]; xn--vkb.xn--08e172ax6aca; ; xn--vkb.xn--08e172a; [] # Ú¼.áºá¡¤
-ð¹¹ð‘²›ã€‚ñ‘‚\u0DCA; ð¹¹ð‘²›.ñ‘‚\u0DCA; [B1, P1, V6]; xn--xo0dg5v.xn--h1c39876d; ; ; # ð¹¹ð‘²›.à·Š
+ð¹¹ð‘²›ã€‚ñ‘‚\u0DCA; ð¹¹ð‘²›.ñ‘‚\u0DCA; [B1, V6]; xn--xo0dg5v.xn--h1c39876d; ; ; # ð¹¹ð‘²›.à·Š
xn--xo0dg5v.xn--h1c39876d; ð¹¹ð‘²›.ñ‘‚\u0DCA; [B1, V6]; xn--xo0dg5v.xn--h1c39876d; ; ; # ð¹¹ð‘²›.à·Š
--≠𑈵。嵕\uFEF1۴\uA953; -≠𑈵.嵕\u064A۴\uA953; [B1, B5, P1, V3, V6]; xn----ufo4749h.xn--mhb45a235sns3c; ; ; # -≠𑈵.嵕ي۴꥓
--=\u0338𑈵。嵕\uFEF1۴\uA953; -≠𑈵.嵕\u064A۴\uA953; [B1, B5, P1, V3, V6]; xn----ufo4749h.xn--mhb45a235sns3c; ; ; # -≠𑈵.嵕ي۴꥓
--≠𑈵。嵕\u064A۴\uA953; -≠𑈵.嵕\u064A۴\uA953; [B1, B5, P1, V3, V6]; xn----ufo4749h.xn--mhb45a235sns3c; ; ; # -≠𑈵.嵕ي۴꥓
--=\u0338𑈵。嵕\u064A۴\uA953; -≠𑈵.嵕\u064A۴\uA953; [B1, B5, P1, V3, V6]; xn----ufo4749h.xn--mhb45a235sns3c; ; ; # -≠𑈵.嵕ي۴꥓
-xn----ufo4749h.xn--mhb45a235sns3c; -≠𑈵.嵕\u064A۴\uA953; [B1, B5, V3, V6]; xn----ufo4749h.xn--mhb45a235sns3c; ; ; # -≠𑈵.嵕ي۴꥓
-\u200Cñ¸°ð¹¶\u076E.\u06C1\u200D≯\u200D; \u200Cñ¸°ð¹¶\u076E.\u06C1\u200D≯\u200D; [B1, B3, C1, C2, P1, V6]; xn--ypb717jrx2o7v94a.xn--0kb660ka35v; ; xn--ypb5875khz9y.xn--0kb682l; [B3, B5, B6, P1, V6] # ð¹¶Ý®.Û≯
-\u200Cñ¸°ð¹¶\u076E.\u06C1\u200D>\u0338\u200D; \u200Cñ¸°ð¹¶\u076E.\u06C1\u200D≯\u200D; [B1, B3, C1, C2, P1, V6]; xn--ypb717jrx2o7v94a.xn--0kb660ka35v; ; xn--ypb5875khz9y.xn--0kb682l; [B3, B5, B6, P1, V6] # ð¹¶Ý®.Û≯
-\u200Cñ¸°ð¹¶\u076E.\u06C1\u200D≯\u200D; ; [B1, B3, C1, C2, P1, V6]; xn--ypb717jrx2o7v94a.xn--0kb660ka35v; ; xn--ypb5875khz9y.xn--0kb682l; [B3, B5, B6, P1, V6] # ð¹¶Ý®.Û≯
-\u200Cñ¸°ð¹¶\u076E.\u06C1\u200D>\u0338\u200D; \u200Cñ¸°ð¹¶\u076E.\u06C1\u200D≯\u200D; [B1, B3, C1, C2, P1, V6]; xn--ypb717jrx2o7v94a.xn--0kb660ka35v; ; xn--ypb5875khz9y.xn--0kb682l; [B3, B5, B6, P1, V6] # ð¹¶Ý®.Û≯
+-≠𑈵。嵕\uFEF1۴\uA953; -≠𑈵.嵕\u064A۴\uA953; [B1, B5, V3]; xn----ufo4749h.xn--mhb45a235sns3c; ; ; # -≠𑈵.嵕ي۴꥓
+-=\u0338𑈵。嵕\uFEF1۴\uA953; -≠𑈵.嵕\u064A۴\uA953; [B1, B5, V3]; xn----ufo4749h.xn--mhb45a235sns3c; ; ; # -≠𑈵.嵕ي۴꥓
+-≠𑈵。嵕\u064A۴\uA953; -≠𑈵.嵕\u064A۴\uA953; [B1, B5, V3]; xn----ufo4749h.xn--mhb45a235sns3c; ; ; # -≠𑈵.嵕ي۴꥓
+-=\u0338𑈵。嵕\u064A۴\uA953; -≠𑈵.嵕\u064A۴\uA953; [B1, B5, V3]; xn----ufo4749h.xn--mhb45a235sns3c; ; ; # -≠𑈵.嵕ي۴꥓
+xn----ufo4749h.xn--mhb45a235sns3c; -≠𑈵.嵕\u064A۴\uA953; [B1, B5, V3]; xn----ufo4749h.xn--mhb45a235sns3c; ; ; # -≠𑈵.嵕ي۴꥓
+\u200Cñ¸°ð¹¶\u076E.\u06C1\u200D≯\u200D; \u200Cñ¸°ð¹¶\u076E.\u06C1\u200D≯\u200D; [B1, B3, C1, C2, V6]; xn--ypb717jrx2o7v94a.xn--0kb660ka35v; ; xn--ypb5875khz9y.xn--0kb682l; [B3, B5, B6, V6] # ð¹¶Ý®.Û≯
+\u200Cñ¸°ð¹¶\u076E.\u06C1\u200D>\u0338\u200D; \u200Cñ¸°ð¹¶\u076E.\u06C1\u200D≯\u200D; [B1, B3, C1, C2, V6]; xn--ypb717jrx2o7v94a.xn--0kb660ka35v; ; xn--ypb5875khz9y.xn--0kb682l; [B3, B5, B6, V6] # ð¹¶Ý®.Û≯
+\u200Cñ¸°ð¹¶\u076E.\u06C1\u200D≯\u200D; ; [B1, B3, C1, C2, V6]; xn--ypb717jrx2o7v94a.xn--0kb660ka35v; ; xn--ypb5875khz9y.xn--0kb682l; [B3, B5, B6, V6] # ð¹¶Ý®.Û≯
+\u200Cñ¸°ð¹¶\u076E.\u06C1\u200D>\u0338\u200D; \u200Cñ¸°ð¹¶\u076E.\u06C1\u200D≯\u200D; [B1, B3, C1, C2, V6]; xn--ypb717jrx2o7v94a.xn--0kb660ka35v; ; xn--ypb5875khz9y.xn--0kb682l; [B3, B5, B6, V6] # ð¹¶Ý®.Û≯
xn--ypb5875khz9y.xn--0kb682l; ñ¸°ð¹¶\u076E.\u06C1≯; [B3, B5, B6, V6]; xn--ypb5875khz9y.xn--0kb682l; ; ; # ð¹¶Ý®.Û≯
xn--ypb717jrx2o7v94a.xn--0kb660ka35v; \u200Cñ¸°ð¹¶\u076E.\u06C1\u200D≯\u200D; [B1, B3, C1, C2, V6]; xn--ypb717jrx2o7v94a.xn--0kb660ka35v; ; ; # ð¹¶Ý®.Û≯
-≮.\u17B5\u0855ð«”; ≮.\u17B5\u0855ð«”; [B1, P1, V5, V6]; xn--gdh.xn--kwb589e217p; ; ; # ≮.à¡•ð«”
-<\u0338.\u17B5\u0855ð«”; ≮.\u17B5\u0855ð«”; [B1, P1, V5, V6]; xn--gdh.xn--kwb589e217p; ; ; # ≮.à¡•ð«”
-≮.\u17B5\u0855ð«”; ; [B1, P1, V5, V6]; xn--gdh.xn--kwb589e217p; ; ; # ≮.à¡•ð«”
-<\u0338.\u17B5\u0855ð«”; ≮.\u17B5\u0855ð«”; [B1, P1, V5, V6]; xn--gdh.xn--kwb589e217p; ; ; # ≮.à¡•ð«”
+≮.\u17B5\u0855ð«”; ≮.\u17B5\u0855ð«”; [B1, V5, V6]; xn--gdh.xn--kwb589e217p; ; ; # ≮.à¡•ð«”
+<\u0338.\u17B5\u0855ð«”; ≮.\u17B5\u0855ð«”; [B1, V5, V6]; xn--gdh.xn--kwb589e217p; ; ; # ≮.à¡•ð«”
+≮.\u17B5\u0855ð«”; ; [B1, V5, V6]; xn--gdh.xn--kwb589e217p; ; ; # ≮.à¡•ð«”
+<\u0338.\u17B5\u0855ð«”; ≮.\u17B5\u0855ð«”; [B1, V5, V6]; xn--gdh.xn--kwb589e217p; ; ; # ≮.à¡•ð«”
xn--gdh.xn--kwb589e217p; ≮.\u17B5\u0855ð«”; [B1, V5, V6]; xn--gdh.xn--kwb589e217p; ; ; # ≮.à¡•ð«”
-ð©—\u200D。ႩႵ; ð©—\u200D.ႩႵ; [B3, C2, P1, V6]; xn--1ug4933g.xn--hndy; ; xn--pt9c.xn--hndy; [P1, V6] # ð©—.ႩႵ
-ð©—\u200D。ႩႵ; ð©—\u200D.ႩႵ; [B3, C2, P1, V6]; xn--1ug4933g.xn--hndy; ; xn--pt9c.xn--hndy; [P1, V6] # ð©—.ႩႵ
+ð©—\u200D。ႩႵ; ð©—\u200D.ႩႵ; [B3, C2, V6]; xn--1ug4933g.xn--hndy; ; xn--pt9c.xn--hndy; [V6] # ð©—.ႩႵ
+ð©—\u200D。ႩႵ; ð©—\u200D.ႩႵ; [B3, C2, V6]; xn--1ug4933g.xn--hndy; ; xn--pt9c.xn--hndy; [V6] # ð©—.ႩႵ
ð©—\u200D。ⴉⴕ; ð©—\u200D.ⴉⴕ; [B3, C2]; xn--1ug4933g.xn--0kjya; ; xn--pt9c.xn--0kjya; [] # ð©—.ⴉⴕ
-ð©—\u200D。Ⴉⴕ; ð©—\u200D.á‚©â´•; [B3, C2, P1, V6]; xn--1ug4933g.xn--hnd666l; ; xn--pt9c.xn--hnd666l; [P1, V6] # ð©—.á‚©â´•
+ð©—\u200D。Ⴉⴕ; ð©—\u200D.á‚©â´•; [B3, C2, V6]; xn--1ug4933g.xn--hnd666l; ; xn--pt9c.xn--hnd666l; [V6] # ð©—.á‚©â´•
xn--pt9c.xn--hnd666l; ð©—.á‚©â´•; [V6]; xn--pt9c.xn--hnd666l; ; ; # ð©—.á‚©â´•
xn--1ug4933g.xn--hnd666l; ð©—\u200D.á‚©â´•; [B3, C2, V6]; xn--1ug4933g.xn--hnd666l; ; ; # ð©—.á‚©â´•
xn--pt9c.xn--0kjya; ð©—.ⴉⴕ; ; xn--pt9c.xn--0kjya; ; ; # ð©—.ⴉⴕ
ð©—.ⴉⴕ; ; ; xn--pt9c.xn--0kjya; ; ; # ð©—.ⴉⴕ
-ð©—.ႩႵ; ; [P1, V6]; xn--pt9c.xn--hndy; ; ; # ð©—.ႩႵ
-ð©—.á‚©â´•; ; [P1, V6]; xn--pt9c.xn--hnd666l; ; ; # ð©—.á‚©â´•
+ð©—.ႩႵ; ; [V6]; xn--pt9c.xn--hndy; ; ; # ð©—.ႩႵ
+ð©—.á‚©â´•; ; [V6]; xn--pt9c.xn--hnd666l; ; ; # ð©—.á‚©â´•
xn--pt9c.xn--hndy; ð©—.ႩႵ; [V6]; xn--pt9c.xn--hndy; ; ; # ð©—.ႩႵ
xn--1ug4933g.xn--0kjya; ð©—\u200D.ⴉⴕ; [B3, C2]; xn--1ug4933g.xn--0kjya; ; ; # ð©—.ⴉⴕ
xn--1ug4933g.xn--hndy; ð©—\u200D.ႩႵ; [B3, C2, V6]; xn--1ug4933g.xn--hndy; ; ; # ð©—.ႩႵ
ð©—\u200D。ⴉⴕ; ð©—\u200D.ⴉⴕ; [B3, C2]; xn--1ug4933g.xn--0kjya; ; xn--pt9c.xn--0kjya; [] # ð©—.ⴉⴕ
-ð©—\u200D。Ⴉⴕ; ð©—\u200D.á‚©â´•; [B3, C2, P1, V6]; xn--1ug4933g.xn--hnd666l; ; xn--pt9c.xn--hnd666l; [P1, V6] # ð©—.á‚©â´•
-\u200C\u200Cㄤ.\u032E󕨑\u09C2; \u200C\u200Cㄤ.\u032E󕨑\u09C2; [C1, P1, V5, V6]; xn--0uga242k.xn--vta284a9o563a; ; xn--1fk.xn--vta284a9o563a; [P1, V5, V6] # ㄤ.̮ূ
-\u200C\u200Cㄤ.\u032E󕨑\u09C2; ; [C1, P1, V5, V6]; xn--0uga242k.xn--vta284a9o563a; ; xn--1fk.xn--vta284a9o563a; [P1, V5, V6] # ㄤ.̮ূ
+ð©—\u200D。Ⴉⴕ; ð©—\u200D.á‚©â´•; [B3, C2, V6]; xn--1ug4933g.xn--hnd666l; ; xn--pt9c.xn--hnd666l; [V6] # ð©—.á‚©â´•
+\u200C\u200Cㄤ.\u032E󕨑\u09C2; \u200C\u200Cㄤ.\u032E󕨑\u09C2; [C1, V5, V6]; xn--0uga242k.xn--vta284a9o563a; ; xn--1fk.xn--vta284a9o563a; [V5, V6] # ㄤ.̮ূ
+\u200C\u200Cㄤ.\u032E󕨑\u09C2; ; [C1, V5, V6]; xn--0uga242k.xn--vta284a9o563a; ; xn--1fk.xn--vta284a9o563a; [V5, V6] # ㄤ.̮ূ
xn--1fk.xn--vta284a9o563a; ㄤ.\u032E󕨑\u09C2; [V5, V6]; xn--1fk.xn--vta284a9o563a; ; ; # ㄤ.̮ূ
xn--0uga242k.xn--vta284a9o563a; \u200C\u200Cㄤ.\u032E󕨑\u09C2; [C1, V5, V6]; xn--0uga242k.xn--vta284a9o563a; ; ; # ㄤ.̮ূ
-ð‹»ï½¡-\u200Cð«„á‚·; ð‹».-\u200Cð«„á‚·; [B1, C1, P1, V3, V6]; xn--v97c.xn----i1g888ih12u; ; xn--v97c.xn----i1g2513q; [B1, P1, V3, V6] # ð‹».-ð«„á‚·
-ð‹»ã€‚-\u200Cð«„á‚·; ð‹».-\u200Cð«„á‚·; [B1, C1, P1, V3, V6]; xn--v97c.xn----i1g888ih12u; ; xn--v97c.xn----i1g2513q; [B1, P1, V3, V6] # ð‹».-ð«„á‚·
+ð‹»ï½¡-\u200Cð«„á‚·; ð‹».-\u200Cð«„á‚·; [B1, C1, V3, V6]; xn--v97c.xn----i1g888ih12u; ; xn--v97c.xn----i1g2513q; [B1, V3, V6] # ð‹».-ð«„á‚·
+ð‹»ã€‚-\u200Cð«„á‚·; ð‹».-\u200Cð«„á‚·; [B1, C1, V3, V6]; xn--v97c.xn----i1g888ih12u; ; xn--v97c.xn----i1g2513q; [B1, V3, V6] # ð‹».-ð«„á‚·
ð‹»ã€‚-\u200Cð«„â´—; ð‹».-\u200Cð«„â´—; [B1, C1, V3]; xn--v97c.xn----sgnv20du99s; ; xn--v97c.xn----lws0526f; [B1, V3] # ð‹».-ð«„â´—
xn--v97c.xn----lws0526f; ð‹».-ð«„â´—; [B1, V3]; xn--v97c.xn----lws0526f; ; ; # ð‹».-ð«„â´—
xn--v97c.xn----sgnv20du99s; ð‹».-\u200Cð«„â´—; [B1, C1, V3]; xn--v97c.xn----sgnv20du99s; ; ; # ð‹».-ð«„â´—
xn--v97c.xn----i1g2513q; ð‹».-ð«„á‚·; [B1, V3, V6]; xn--v97c.xn----i1g2513q; ; ; # ð‹».-ð«„á‚·
xn--v97c.xn----i1g888ih12u; ð‹».-\u200Cð«„á‚·; [B1, C1, V3, V6]; xn--v97c.xn----i1g888ih12u; ; ; # ð‹».-ð«„á‚·
ð‹»ï½¡-\u200Cð«„â´—; ð‹».-\u200Cð«„â´—; [B1, C1, V3]; xn--v97c.xn----sgnv20du99s; ; xn--v97c.xn----lws0526f; [B1, V3] # ð‹».-ð«„â´—
-🙑ð·ºï¼Žâ‰ \u200C; 🙑ð·º.≠\u200C; [B1, C1, P1, V6]; xn--bl0dh970b.xn--0ug83g; ; xn--bl0dh970b.xn--1ch; [B1, P1, V6] # 🙑.≠
-🙑ð·ºï¼Ž=\u0338\u200C; 🙑ð·º.≠\u200C; [B1, C1, P1, V6]; xn--bl0dh970b.xn--0ug83g; ; xn--bl0dh970b.xn--1ch; [B1, P1, V6] # 🙑.≠
-🙑ð·º.≠\u200C; ; [B1, C1, P1, V6]; xn--bl0dh970b.xn--0ug83g; ; xn--bl0dh970b.xn--1ch; [B1, P1, V6] # 🙑.≠
-🙑ð·º.=\u0338\u200C; 🙑ð·º.≠\u200C; [B1, C1, P1, V6]; xn--bl0dh970b.xn--0ug83g; ; xn--bl0dh970b.xn--1ch; [B1, P1, V6] # 🙑.≠
+🙑ð·ºï¼Žâ‰ \u200C; 🙑ð·º.≠\u200C; [B1, C1, V6]; xn--bl0dh970b.xn--0ug83g; ; xn--bl0dh970b.xn--1ch; [B1, V6] # 🙑.≠
+🙑ð·ºï¼Ž=\u0338\u200C; 🙑ð·º.≠\u200C; [B1, C1, V6]; xn--bl0dh970b.xn--0ug83g; ; xn--bl0dh970b.xn--1ch; [B1, V6] # 🙑.≠
+🙑ð·º.≠\u200C; ; [B1, C1, V6]; xn--bl0dh970b.xn--0ug83g; ; xn--bl0dh970b.xn--1ch; [B1, V6] # 🙑.≠
+🙑ð·º.=\u0338\u200C; 🙑ð·º.≠\u200C; [B1, C1, V6]; xn--bl0dh970b.xn--0ug83g; ; xn--bl0dh970b.xn--1ch; [B1, V6] # 🙑.≠
xn--bl0dh970b.xn--1ch; 🙑ð·º.≠; [B1, V6]; xn--bl0dh970b.xn--1ch; ; ; # 🙑.≠
xn--bl0dh970b.xn--0ug83g; 🙑ð·º.≠\u200C; [B1, C1, V6]; xn--bl0dh970b.xn--0ug83g; ; ; # 🙑.≠
-\u064C\u1CD2。𞮞\u2D7F⧎; \u064C\u1CD2.𞮞\u2D7F⧎; [B1, B3, B6, P1, V5, V6]; xn--ohb646i.xn--ewi38jf765c; ; ; # ٌ᳒.⵿⧎
-\u064C\u1CD2。𞮞\u2D7F⧎; \u064C\u1CD2.𞮞\u2D7F⧎; [B1, B3, B6, P1, V5, V6]; xn--ohb646i.xn--ewi38jf765c; ; ; # ٌ᳒.⵿⧎
-xn--ohb646i.xn--ewi38jf765c; \u064C\u1CD2.𞮞\u2D7F⧎; [B1, B3, B6, V5, V6]; xn--ohb646i.xn--ewi38jf765c; ; ; # ٌ᳒.⵿⧎
-á‚´ð¨¨â‚ƒó ¦ï¼ŽðŸ³ð‘‚¹\u0B82; á‚´ð¨¨3ó ¦.7ð‘‚¹\u0B82; [P1, V6]; xn--3-b1g83426a35t0g.xn--7-cve6271r; ; ; # á‚´ð¨¨3.7𑂹ஂ
-á‚´ð¨¨3ó ¦.7ð‘‚¹\u0B82; ; [P1, V6]; xn--3-b1g83426a35t0g.xn--7-cve6271r; ; ; # á‚´ð¨¨3.7𑂹ஂ
-â´”ð¨¨3ó ¦.7ð‘‚¹\u0B82; ; [P1, V6]; xn--3-ews6985n35s3g.xn--7-cve6271r; ; ; # â´”ð¨¨3.7𑂹ஂ
+\u064C\u1CD2。𞮞\u2D7F⧎; \u064C\u1CD2.𞮞\u2D7F⧎; [B1, B3, V5, V6]; xn--ohb646i.xn--ewi38jf765c; ; ; # ٌ᳒.⵿⧎
+\u064C\u1CD2。𞮞\u2D7F⧎; \u064C\u1CD2.𞮞\u2D7F⧎; [B1, B3, V5, V6]; xn--ohb646i.xn--ewi38jf765c; ; ; # ٌ᳒.⵿⧎
+xn--ohb646i.xn--ewi38jf765c; \u064C\u1CD2.𞮞\u2D7F⧎; [B1, B3, V5, V6]; xn--ohb646i.xn--ewi38jf765c; ; ; # ٌ᳒.⵿⧎
+á‚´ð¨¨â‚ƒó ¦ï¼ŽðŸ³ð‘‚¹\u0B82; á‚´ð¨¨3ó ¦.7ð‘‚¹\u0B82; [V6]; xn--3-b1g83426a35t0g.xn--7-cve6271r; ; ; # á‚´ð¨¨3.7𑂹ஂ
+á‚´ð¨¨3ó ¦.7ð‘‚¹\u0B82; ; [V6]; xn--3-b1g83426a35t0g.xn--7-cve6271r; ; ; # á‚´ð¨¨3.7𑂹ஂ
+â´”ð¨¨3ó ¦.7ð‘‚¹\u0B82; ; [V6]; xn--3-ews6985n35s3g.xn--7-cve6271r; ; ; # â´”ð¨¨3.7𑂹ஂ
xn--3-ews6985n35s3g.xn--7-cve6271r; â´”ð¨¨3ó ¦.7ð‘‚¹\u0B82; [V6]; xn--3-ews6985n35s3g.xn--7-cve6271r; ; ; # â´”ð¨¨3.7𑂹ஂ
xn--3-b1g83426a35t0g.xn--7-cve6271r; á‚´ð¨¨3ó ¦.7ð‘‚¹\u0B82; [V6]; xn--3-b1g83426a35t0g.xn--7-cve6271r; ; ; # á‚´ð¨¨3.7𑂹ஂ
-â´”ð¨¨â‚ƒó ¦ï¼ŽðŸ³ð‘‚¹\u0B82; â´”ð¨¨3ó ¦.7ð‘‚¹\u0B82; [P1, V6]; xn--3-ews6985n35s3g.xn--7-cve6271r; ; ; # â´”ð¨¨3.7𑂹ஂ
-äˆ\u200C。\u200Câ’ˆñ±¢•; äˆ\u200C.\u200Câ’ˆñ±¢•; [C1, P1, V6]; xn--0ug491l.xn--0ug88oot66q; ; xn--eco.xn--tsh21126d; [P1, V6] # äˆ.â’ˆ
-äˆ\u200C。\u200C1.ñ±¢•; äˆ\u200C.\u200C1.ñ±¢•; [C1, P1, V6]; xn--0ug491l.xn--1-rgn.xn--ms39a; ; xn--eco.1.xn--ms39a; [P1, V6] # äˆ.1.
+â´”ð¨¨â‚ƒó ¦ï¼ŽðŸ³ð‘‚¹\u0B82; â´”ð¨¨3ó ¦.7ð‘‚¹\u0B82; [V6]; xn--3-ews6985n35s3g.xn--7-cve6271r; ; ; # â´”ð¨¨3.7𑂹ஂ
+äˆ\u200C。\u200Câ’ˆñ±¢•; äˆ\u200C.\u200Câ’ˆñ±¢•; [C1, V6]; xn--0ug491l.xn--0ug88oot66q; ; xn--eco.xn--tsh21126d; [V6] # äˆ.â’ˆ
+äˆ\u200C。\u200C1.ñ±¢•; äˆ\u200C.\u200C1.ñ±¢•; [C1, V6]; xn--0ug491l.xn--1-rgn.xn--ms39a; ; xn--eco.1.xn--ms39a; [V6] # äˆ.1.
xn--eco.1.xn--ms39a; äˆ.1.ñ±¢•; [V6]; xn--eco.1.xn--ms39a; ; ; # äˆ.1.
xn--0ug491l.xn--1-rgn.xn--ms39a; äˆ\u200C.\u200C1.ñ±¢•; [C1, V6]; xn--0ug491l.xn--1-rgn.xn--ms39a; ; ; # äˆ.1.
xn--eco.xn--tsh21126d; äˆ.â’ˆñ±¢•; [V6]; xn--eco.xn--tsh21126d; ; ; # äˆ.â’ˆ
@@ -4050,22 +4068,22 @@ xn--1-qfa2471kdb0d.xn--weg; 1\uAAF6ß𑲥.\u1DD8; [V5]; xn--1-qfa2471kdb0d.xn--w
1\uAAF6ss𑲥。\u1DD8; 1\uAAF6ss𑲥.\u1DD8; [V5]; xn--1ss-ir6ln166b.xn--weg; ; ; # 1꫶ss𑲥.ᷘ
1\uAAF6Ss𑲥。\u1DD8; 1\uAAF6ss𑲥.\u1DD8; [V5]; xn--1ss-ir6ln166b.xn--weg; ; ; # 1꫶ss𑲥.ᷘ
1\uAAF6Ss𑲥。\u1DD8; 1\uAAF6ss𑲥.\u1DD8; [V5]; xn--1ss-ir6ln166b.xn--weg; ; ; # 1꫶ss𑲥.ᷘ
-\u200Dñ«¶©ðžª¯\u0CCD。\u077Câ’ˆ; \u200Dñ«¶©ðžª¯\u0CCD.\u077Câ’ˆ; [B1, C2, P1, V6]; xn--8tc969gzn94a4lm8a.xn--dqb689l; ; xn--8tc9875v5is1a.xn--dqb689l; [B5, B6, P1, V6] # à³.ݼ⒈
-\u200Dñ«¶©ðžª¯\u0CCD。\u077C1.; \u200Dñ«¶©ðžª¯\u0CCD.\u077C1.; [B1, C2, P1, V6]; xn--8tc969gzn94a4lm8a.xn--1-g6c.; ; xn--8tc9875v5is1a.xn--1-g6c.; [B5, B6, P1, V6] # à³.ݼ1.
+\u200Dñ«¶©ðžª¯\u0CCD。\u077Câ’ˆ; \u200Dñ«¶©ðžª¯\u0CCD.\u077Câ’ˆ; [B1, C2, V6]; xn--8tc969gzn94a4lm8a.xn--dqb689l; ; xn--8tc9875v5is1a.xn--dqb689l; [B5, B6, V6] # à³.ݼ⒈
+\u200Dñ«¶©ðžª¯\u0CCD。\u077C1.; \u200Dñ«¶©ðžª¯\u0CCD.\u077C1.; [B1, C2, V6]; xn--8tc969gzn94a4lm8a.xn--1-g6c.; ; xn--8tc9875v5is1a.xn--1-g6c.; [B5, B6, V6] # à³.ݼ1.
xn--8tc9875v5is1a.xn--1-g6c.; ñ«¶©ðžª¯\u0CCD.\u077C1.; [B5, B6, V6]; xn--8tc9875v5is1a.xn--1-g6c.; ; ; # à³.ݼ1.
xn--8tc969gzn94a4lm8a.xn--1-g6c.; \u200Dñ«¶©ðžª¯\u0CCD.\u077C1.; [B1, C2, V6]; xn--8tc969gzn94a4lm8a.xn--1-g6c.; ; ; # à³.ݼ1.
xn--8tc9875v5is1a.xn--dqb689l; ñ«¶©ðžª¯\u0CCD.\u077Câ’ˆ; [B5, B6, V6]; xn--8tc9875v5is1a.xn--dqb689l; ; ; # à³.ݼ⒈
xn--8tc969gzn94a4lm8a.xn--dqb689l; \u200Dñ«¶©ðžª¯\u0CCD.\u077Câ’ˆ; [B1, C2, V6]; xn--8tc969gzn94a4lm8a.xn--dqb689l; ; ; # à³.ݼ⒈
-\u1AB6.𞤳򓢖򻉒\u07D7; \u1AB6.𞤳򓢖򻉒\u07D7; [B1, B2, B3, B6, P1, V5, V6]; xn--zqf.xn--ysb9657vuiz5bj0ep; ; ; # ᪶.𞤳ߗ
-\u1AB6.𞤳򓢖򻉒\u07D7; ; [B1, B2, B3, B6, P1, V5, V6]; xn--zqf.xn--ysb9657vuiz5bj0ep; ; ; # ᪶.𞤳ߗ
-\u1AB6.𞤑򓢖򻉒\u07D7; \u1AB6.𞤳򓢖򻉒\u07D7; [B1, B2, B3, B6, P1, V5, V6]; xn--zqf.xn--ysb9657vuiz5bj0ep; ; ; # ᪶.𞤳ߗ
-xn--zqf.xn--ysb9657vuiz5bj0ep; \u1AB6.𞤳򓢖򻉒\u07D7; [B1, B2, B3, B6, V5, V6]; xn--zqf.xn--ysb9657vuiz5bj0ep; ; ; # ᪶.𞤳ߗ
-\u1AB6.𞤑򓢖򻉒\u07D7; \u1AB6.𞤳򓢖򻉒\u07D7; [B1, B2, B3, B6, P1, V5, V6]; xn--zqf.xn--ysb9657vuiz5bj0ep; ; ; # ᪶.𞤳ߗ
-\u0842𞩚⒈.󠬌8ò³\u0770; \u0842ðž©šâ’ˆ.󠬌8ò³\u0770; [B1, P1, V6]; xn--0vb095ldg52a.xn--8-s5c22427ox454a; ; ; # à¡‚â’ˆ.8Ý°
-\u0842ðž©š1..󠬌8ò³\u0770; ; [B1, P1, V6, X4_2]; xn--1-rid26318a..xn--8-s5c22427ox454a; [B1, P1, V6, A4_2]; ; # à¡‚1..8Ý°
+\u1AB6.𞤳򓢖򻉒\u07D7; \u1AB6.𞤳򓢖򻉒\u07D7; [B1, B2, V5, V6]; xn--zqf.xn--ysb9657vuiz5bj0ep; ; ; # ᪶.𞤳ߗ
+\u1AB6.𞤳򓢖򻉒\u07D7; ; [B1, B2, V5, V6]; xn--zqf.xn--ysb9657vuiz5bj0ep; ; ; # ᪶.𞤳ߗ
+\u1AB6.𞤑򓢖򻉒\u07D7; \u1AB6.𞤳򓢖򻉒\u07D7; [B1, B2, V5, V6]; xn--zqf.xn--ysb9657vuiz5bj0ep; ; ; # ᪶.𞤳ߗ
+xn--zqf.xn--ysb9657vuiz5bj0ep; \u1AB6.𞤳򓢖򻉒\u07D7; [B1, B2, V5, V6]; xn--zqf.xn--ysb9657vuiz5bj0ep; ; ; # ᪶.𞤳ߗ
+\u1AB6.𞤑򓢖򻉒\u07D7; \u1AB6.𞤳򓢖򻉒\u07D7; [B1, B2, V5, V6]; xn--zqf.xn--ysb9657vuiz5bj0ep; ; ; # ᪶.𞤳ߗ
+\u0842𞩚⒈.󠬌8ò³\u0770; \u0842ðž©šâ’ˆ.󠬌8ò³\u0770; [B1, V6]; xn--0vb095ldg52a.xn--8-s5c22427ox454a; ; ; # à¡‚â’ˆ.8Ý°
+\u0842ðž©š1..󠬌8ò³\u0770; ; [B1, V6, X4_2]; xn--1-rid26318a..xn--8-s5c22427ox454a; [B1, V6, A4_2]; ; # à¡‚1..8Ý°
xn--1-rid26318a..xn--8-s5c22427ox454a; \u0842ðž©š1..󠬌8ò³\u0770; [B1, V6, X4_2]; xn--1-rid26318a..xn--8-s5c22427ox454a; [B1, V6, A4_2]; ; # à¡‚1..8Ý°
xn--0vb095ldg52a.xn--8-s5c22427ox454a; \u0842ðž©šâ’ˆ.󠬌8ò³\u0770; [B1, V6]; xn--0vb095ldg52a.xn--8-s5c22427ox454a; ; ; # à¡‚â’ˆ.8Ý°
-\u0361ð««\u0369ᡷ。-󠰛鞰; \u0361ð««\u0369á¡·.-󠰛鞰; [B1, P1, V3, V5, V6]; xn--cvaq482npv5t.xn----yg7dt1332g; ; ; # Í¡ð««Í©á¡·.-éž°
+\u0361ð««\u0369ᡷ。-󠰛鞰; \u0361ð««\u0369á¡·.-󠰛鞰; [B1, V3, V5, V6]; xn--cvaq482npv5t.xn----yg7dt1332g; ; ; # Í¡ð««Í©á¡·.-éž°
xn--cvaq482npv5t.xn----yg7dt1332g; \u0361ð««\u0369á¡·.-󠰛鞰; [B1, V3, V5, V6]; xn--cvaq482npv5t.xn----yg7dt1332g; ; ; # Í¡ð««Í©á¡·.-éž°
-.\u0ACD剘ßð«ƒ; ; [B1, V3, V5]; -.xn--zca791c493duf8i; ; -.xn--ss-bqg4734erywk; # -.à«å‰˜ÃŸð«ƒ
-.\u0ACD剘SSð«ƒ; -.\u0ACD剘ssð«ƒ; [B1, V3, V5]; -.xn--ss-bqg4734erywk; ; ; # -.à«å‰˜ssð«ƒ
@@ -4073,76 +4091,84 @@ xn--cvaq482npv5t.xn----yg7dt1332g; \u0361ð««\u0369á¡·.-󠰛鞰; [B1, V3, V5, V6
-.\u0ACD剘Ssð«ƒ; -.\u0ACD剘ssð«ƒ; [B1, V3, V5]; -.xn--ss-bqg4734erywk; ; ; # -.à«å‰˜ssð«ƒ
-.xn--ss-bqg4734erywk; -.\u0ACD剘ssð«ƒ; [B1, V3, V5]; -.xn--ss-bqg4734erywk; ; ; # -.à«å‰˜ssð«ƒ
-.xn--zca791c493duf8i; -.\u0ACD剘ßð«ƒ; [B1, V3, V5]; -.xn--zca791c493duf8i; ; ; # -.à«å‰˜ÃŸð«ƒ
-\u08FB𞵸。-; \u08FB𞵸.-; [B1, P1, V3, V5, V6]; xn--b1b2719v.-; ; ; # ࣻ.-
-\u08FB𞵸。-; \u08FB𞵸.-; [B1, P1, V3, V5, V6]; xn--b1b2719v.-; ; ; # ࣻ.-
+\u08FB𞵸。-; \u08FB𞵸.-; [B1, V3, V5, V6]; xn--b1b2719v.-; ; ; # ࣻ.-
+\u08FB𞵸。-; \u08FB𞵸.-; [B1, V3, V5, V6]; xn--b1b2719v.-; ; ; # ࣻ.-
xn--b1b2719v.-; \u08FB𞵸.-; [B1, V3, V5, V6]; xn--b1b2719v.-; ; ; # ࣻ.-
-⒈󠈻ð¹²ï½¡â‰ \u0603ð¹½; ⒈󠈻ð¹².≠\u0603ð¹½; [B1, P1, V6]; xn--tshw766f1153g.xn--lfb536lb35n; ; ; # â’ˆð¹².≠ð¹½
-⒈󠈻ð¹²ï½¡=\u0338\u0603ð¹½; ⒈󠈻ð¹².≠\u0603ð¹½; [B1, P1, V6]; xn--tshw766f1153g.xn--lfb536lb35n; ; ; # â’ˆð¹².≠ð¹½
-1.󠈻ð¹²ã€‚≠\u0603ð¹½; 1.󠈻ð¹².≠\u0603ð¹½; [B1, P1, V6]; 1.xn--qo0dl3077c.xn--lfb536lb35n; ; ; # 1.ð¹².≠ð¹½
-1.󠈻ð¹²ã€‚=\u0338\u0603ð¹½; 1.󠈻ð¹².≠\u0603ð¹½; [B1, P1, V6]; 1.xn--qo0dl3077c.xn--lfb536lb35n; ; ; # 1.ð¹².≠ð¹½
+⒈󠈻ð¹²ï½¡â‰ \u0603ð¹½; ⒈󠈻ð¹².≠\u0603ð¹½; [B1, V6]; xn--tshw766f1153g.xn--lfb536lb35n; ; ; # â’ˆð¹².≠ð¹½
+⒈󠈻ð¹²ï½¡=\u0338\u0603ð¹½; ⒈󠈻ð¹².≠\u0603ð¹½; [B1, V6]; xn--tshw766f1153g.xn--lfb536lb35n; ; ; # â’ˆð¹².≠ð¹½
+1.󠈻ð¹²ã€‚≠\u0603ð¹½; 1.󠈻ð¹².≠\u0603ð¹½; [B1, V6]; 1.xn--qo0dl3077c.xn--lfb536lb35n; ; ; # 1.ð¹².≠ð¹½
+1.󠈻ð¹²ã€‚=\u0338\u0603ð¹½; 1.󠈻ð¹².≠\u0603ð¹½; [B1, V6]; 1.xn--qo0dl3077c.xn--lfb536lb35n; ; ; # 1.ð¹².≠ð¹½
1.xn--qo0dl3077c.xn--lfb536lb35n; 1.󠈻ð¹².≠\u0603ð¹½; [B1, V6]; 1.xn--qo0dl3077c.xn--lfb536lb35n; ; ; # 1.ð¹².≠ð¹½
xn--tshw766f1153g.xn--lfb536lb35n; ⒈󠈻ð¹².≠\u0603ð¹½; [B1, V6]; xn--tshw766f1153g.xn--lfb536lb35n; ; ; # â’ˆð¹².≠ð¹½
-ð¹¢ó ˆšá‚®\u200C.ã–¾ð¹¡; ; [B1, B5, B6, C1, P1, V6]; xn--mnd289ezj4pqxp0i.xn--pelu572d; ; xn--mnd9001km0o0g.xn--pelu572d; [B1, B5, B6, P1, V6] # ð¹¢á‚®.ã–¾ð¹¡
-ð¹¢ó ˆšâ´Ž\u200C.ã–¾ð¹¡; ; [B1, B5, B6, C1, P1, V6]; xn--0ug342clq0pqxv4i.xn--pelu572d; ; xn--5kjx323em053g.xn--pelu572d; [B1, B5, B6, P1, V6] # ð¹¢â´Ž.ã–¾ð¹¡
+ð¹¢ó ˆšá‚®\u200C.ã–¾ð¹¡; ; [B1, B5, B6, C1, V6]; xn--mnd289ezj4pqxp0i.xn--pelu572d; ; xn--mnd9001km0o0g.xn--pelu572d; [B1, B5, B6, V6] # ð¹¢á‚®.ã–¾ð¹¡
+ð¹¢ó ˆšâ´Ž\u200C.ã–¾ð¹¡; ; [B1, B5, B6, C1, V6]; xn--0ug342clq0pqxv4i.xn--pelu572d; ; xn--5kjx323em053g.xn--pelu572d; [B1, B5, B6, V6] # ð¹¢â´Ž.ã–¾ð¹¡
xn--5kjx323em053g.xn--pelu572d; ð¹¢ó ˆšâ´Ž.ã–¾ð¹¡; [B1, B5, B6, V6]; xn--5kjx323em053g.xn--pelu572d; ; ; # ð¹¢â´Ž.ã–¾ð¹¡
xn--0ug342clq0pqxv4i.xn--pelu572d; ð¹¢ó ˆšâ´Ž\u200C.ã–¾ð¹¡; [B1, B5, B6, C1, V6]; xn--0ug342clq0pqxv4i.xn--pelu572d; ; ; # ð¹¢â´Ž.ã–¾ð¹¡
xn--mnd9001km0o0g.xn--pelu572d; ð¹¢ó ˆšá‚®.ã–¾ð¹¡; [B1, B5, B6, V6]; xn--mnd9001km0o0g.xn--pelu572d; ; ; # ð¹¢á‚®.ã–¾ð¹¡
xn--mnd289ezj4pqxp0i.xn--pelu572d; ð¹¢ó ˆšá‚®\u200C.ã–¾ð¹¡; [B1, B5, B6, C1, V6]; xn--mnd289ezj4pqxp0i.xn--pelu572d; ; ; # ð¹¢á‚®.ã–¾ð¹¡
-򩼗.\u07C7ᡖႳႧ; 򩼗.\u07C7ᡖႳႧ; [B2, B3, P1, V6]; xn--te28c.xn--isb856b9a631d; ; ; # .߇ᡖႳႧ
-򩼗.\u07C7ᡖႳႧ; ; [B2, B3, P1, V6]; xn--te28c.xn--isb856b9a631d; ; ; # .߇ᡖႳႧ
-򩼗.\u07C7ᡖⴓⴇ; ; [B2, B3, P1, V6]; xn--te28c.xn--isb295fbtpmb; ; ; # .߇ᡖⴓⴇ
+򩼗.\u07C7ᡖႳႧ; 򩼗.\u07C7ᡖႳႧ; [B2, B3, V6]; xn--te28c.xn--isb856b9a631d; ; ; # .߇ᡖႳႧ
+򩼗.\u07C7ᡖႳႧ; ; [B2, B3, V6]; xn--te28c.xn--isb856b9a631d; ; ; # .߇ᡖႳႧ
+򩼗.\u07C7ᡖⴓⴇ; ; [B2, B3, V6]; xn--te28c.xn--isb295fbtpmb; ; ; # .߇ᡖⴓⴇ
xn--te28c.xn--isb295fbtpmb; 򩼗.\u07C7ᡖⴓⴇ; [B2, B3, V6]; xn--te28c.xn--isb295fbtpmb; ; ; # .߇ᡖⴓⴇ
xn--te28c.xn--isb856b9a631d; 򩼗.\u07C7ᡖႳႧ; [B2, B3, V6]; xn--te28c.xn--isb856b9a631d; ; ; # .߇ᡖႳႧ
-򩼗.\u07C7ᡖⴓⴇ; 򩼗.\u07C7ᡖⴓⴇ; [B2, B3, P1, V6]; xn--te28c.xn--isb295fbtpmb; ; ; # .߇ᡖⴓⴇ
-򩼗.\u07C7ᡖႳⴇ; ; [B2, B3, P1, V6]; xn--te28c.xn--isb286btrgo7w; ; ; # .߇ᡖႳⴇ
+򩼗.\u07C7ᡖⴓⴇ; 򩼗.\u07C7ᡖⴓⴇ; [B2, B3, V6]; xn--te28c.xn--isb295fbtpmb; ; ; # .߇ᡖⴓⴇ
+򩼗.\u07C7ᡖႳⴇ; ; [B2, B3, V6]; xn--te28c.xn--isb286btrgo7w; ; ; # .߇ᡖႳⴇ
xn--te28c.xn--isb286btrgo7w; 򩼗.\u07C7ᡖႳⴇ; [B2, B3, V6]; xn--te28c.xn--isb286btrgo7w; ; ; # .߇ᡖႳⴇ
-򩼗.\u07C7ᡖႳⴇ; 򩼗.\u07C7ᡖႳⴇ; [B2, B3, P1, V6]; xn--te28c.xn--isb286btrgo7w; ; ; # .߇ᡖႳⴇ
-\u200Dô…‰.\u06B3\u0775; ; [B1, C2, P1, V6]; xn--1ug39444n.xn--mkb20b; ; xn--3j78f.xn--mkb20b; [P1, V6] # .ڳݵ
+򩼗.\u07C7ᡖႳⴇ; 򩼗.\u07C7ᡖႳⴇ; [B2, B3, V6]; xn--te28c.xn--isb286btrgo7w; ; ; # .߇ᡖႳⴇ
+\u200Dô…‰.\u06B3\u0775; ; [B1, C2, V6]; xn--1ug39444n.xn--mkb20b; ; xn--3j78f.xn--mkb20b; [V6] # .ڳݵ
xn--3j78f.xn--mkb20b; ô…‰.\u06B3\u0775; [V6]; xn--3j78f.xn--mkb20b; ; ; # .ڳݵ
xn--1ug39444n.xn--mkb20b; \u200Dô…‰.\u06B3\u0775; [B1, C2, V6]; xn--1ug39444n.xn--mkb20b; ; ; # .ڳݵ
-𲤱⒛⾳.ꡦ⒈; 𲤱⒛音.ꡦ⒈; [P1, V6]; xn--dth6033bzbvx.xn--tsh9439b; ; ; # ⒛音.ꡦ⒈
-𲤱20.音.ꡦ1.; ; [P1, V6]; xn--20-9802c.xn--0w5a.xn--1-eg4e.; ; ; # 20.音.ꡦ1.
+𲤱⒛⾳.ꡦ⒈; 𲤱⒛音.ꡦ⒈; [V6]; xn--dth6033bzbvx.xn--tsh9439b; ; ; # ⒛音.ꡦ⒈
+𲤱20.音.ꡦ1.; ; [V6]; xn--20-9802c.xn--0w5a.xn--1-eg4e.; ; ; # 20.音.ꡦ1.
xn--20-9802c.xn--0w5a.xn--1-eg4e.; 𲤱20.音.ꡦ1.; [V6]; xn--20-9802c.xn--0w5a.xn--1-eg4e.; ; ; # 20.音.ꡦ1.
xn--dth6033bzbvx.xn--tsh9439b; 𲤱⒛音.ꡦ⒈; [V6]; xn--dth6033bzbvx.xn--tsh9439b; ; ; # ⒛音.ꡦ⒈
-\u07DC8ñ³¦“-。òž²™ð‘¿ð©¥\u09CD; \u07DC8ñ³¦“-.òž²™ð‘¿ð©¥\u09CD; [B2, B3, B5, B6, P1, V3, V6]; xn--8--rve13079p.xn--b7b9842k42df776x; ; ; # ßœ8-.ð‘¿ð©¥à§
-\u07DC8ñ³¦“-。òž²™ð‘¿ð©¥\u09CD; \u07DC8ñ³¦“-.òž²™ð‘¿ð©¥\u09CD; [B2, B3, B5, B6, P1, V3, V6]; xn--8--rve13079p.xn--b7b9842k42df776x; ; ; # ßœ8-.ð‘¿ð©¥à§
+\u07DC8ñ³¦“-。òž²™ð‘¿ð©¥\u09CD; \u07DC8ñ³¦“-.òž²™ð‘¿ð©¥\u09CD; [B2, B3, B5, B6, V3, V6]; xn--8--rve13079p.xn--b7b9842k42df776x; ; ; # ßœ8-.ð‘¿ð©¥à§
+\u07DC8ñ³¦“-。òž²™ð‘¿ð©¥\u09CD; \u07DC8ñ³¦“-.òž²™ð‘¿ð©¥\u09CD; [B2, B3, B5, B6, V3, V6]; xn--8--rve13079p.xn--b7b9842k42df776x; ; ; # ßœ8-.ð‘¿ð©¥à§
xn--8--rve13079p.xn--b7b9842k42df776x; \u07DC8ñ³¦“-.òž²™ð‘¿ð©¥\u09CD; [B2, B3, B5, B6, V3, V6]; xn--8--rve13079p.xn--b7b9842k42df776x; ; ; # ßœ8-.ð‘¿ð©¥à§
-Ⴕ。۰≮ß\u0745; Ⴕ.۰≮ß\u0745; [P1, V6]; xn--tnd.xn--zca912alh227g; ; xn--tnd.xn--ss-jbe65aw27i; # Ⴕ.۰≮ß݅
-Ⴕ。۰<\u0338ß\u0745; Ⴕ.۰≮ß\u0745; [P1, V6]; xn--tnd.xn--zca912alh227g; ; xn--tnd.xn--ss-jbe65aw27i; # Ⴕ.۰≮ß݅
-ⴕ。۰<\u0338ß\u0745; ⴕ.۰≮ß\u0745; [P1, V6]; xn--dlj.xn--zca912alh227g; ; xn--dlj.xn--ss-jbe65aw27i; # ⴕ.۰≮ß݅
-ⴕ。۰≮ß\u0745; ⴕ.۰≮ß\u0745; [P1, V6]; xn--dlj.xn--zca912alh227g; ; xn--dlj.xn--ss-jbe65aw27i; # ⴕ.۰≮ß݅
-Ⴕ。۰≮SS\u0745; Ⴕ.۰≮ss\u0745; [P1, V6]; xn--tnd.xn--ss-jbe65aw27i; ; ; # Ⴕ.۰≮ss݅
-Ⴕ。۰<\u0338SS\u0745; Ⴕ.۰≮ss\u0745; [P1, V6]; xn--tnd.xn--ss-jbe65aw27i; ; ; # Ⴕ.۰≮ss݅
-ⴕ。۰<\u0338ss\u0745; ⴕ.۰≮ss\u0745; [P1, V6]; xn--dlj.xn--ss-jbe65aw27i; ; ; # ⴕ.۰≮ss݅
-ⴕ。۰≮ss\u0745; ⴕ.۰≮ss\u0745; [P1, V6]; xn--dlj.xn--ss-jbe65aw27i; ; ; # ⴕ.۰≮ss݅
-Ⴕ。۰≮Ss\u0745; Ⴕ.۰≮ss\u0745; [P1, V6]; xn--tnd.xn--ss-jbe65aw27i; ; ; # Ⴕ.۰≮ss݅
-Ⴕ。۰<\u0338Ss\u0745; Ⴕ.۰≮ss\u0745; [P1, V6]; xn--tnd.xn--ss-jbe65aw27i; ; ; # Ⴕ.۰≮ss݅
+Ⴕ。۰≮ß\u0745; Ⴕ.۰≮ß\u0745; [V6]; xn--tnd.xn--zca912alh227g; ; xn--tnd.xn--ss-jbe65aw27i; # Ⴕ.۰≮ß݅
+Ⴕ。۰<\u0338ß\u0745; Ⴕ.۰≮ß\u0745; [V6]; xn--tnd.xn--zca912alh227g; ; xn--tnd.xn--ss-jbe65aw27i; # Ⴕ.۰≮ß݅
+ⴕ。۰<\u0338ß\u0745; ⴕ.۰≮ß\u0745; ; xn--dlj.xn--zca912alh227g; ; xn--dlj.xn--ss-jbe65aw27i; # ⴕ.۰≮ß݅
+ⴕ。۰≮ß\u0745; ⴕ.۰≮ß\u0745; ; xn--dlj.xn--zca912alh227g; ; xn--dlj.xn--ss-jbe65aw27i; # ⴕ.۰≮ß݅
+Ⴕ。۰≮SS\u0745; Ⴕ.۰≮ss\u0745; [V6]; xn--tnd.xn--ss-jbe65aw27i; ; ; # Ⴕ.۰≮ss݅
+Ⴕ。۰<\u0338SS\u0745; Ⴕ.۰≮ss\u0745; [V6]; xn--tnd.xn--ss-jbe65aw27i; ; ; # Ⴕ.۰≮ss݅
+ⴕ。۰<\u0338ss\u0745; ⴕ.۰≮ss\u0745; ; xn--dlj.xn--ss-jbe65aw27i; ; ; # ⴕ.۰≮ss݅
+ⴕ。۰≮ss\u0745; ⴕ.۰≮ss\u0745; ; xn--dlj.xn--ss-jbe65aw27i; ; ; # ⴕ.۰≮ss݅
+Ⴕ。۰≮Ss\u0745; Ⴕ.۰≮ss\u0745; [V6]; xn--tnd.xn--ss-jbe65aw27i; ; ; # Ⴕ.۰≮ss݅
+Ⴕ。۰<\u0338Ss\u0745; Ⴕ.۰≮ss\u0745; [V6]; xn--tnd.xn--ss-jbe65aw27i; ; ; # Ⴕ.۰≮ss݅
xn--tnd.xn--ss-jbe65aw27i; Ⴕ.۰≮ss\u0745; [V6]; xn--tnd.xn--ss-jbe65aw27i; ; ; # Ⴕ.۰≮ss݅
-xn--dlj.xn--ss-jbe65aw27i; ⴕ.۰≮ss\u0745; [V6]; xn--dlj.xn--ss-jbe65aw27i; ; ; # ⴕ.۰≮ss݅
-xn--dlj.xn--zca912alh227g; ⴕ.۰≮ß\u0745; [V6]; xn--dlj.xn--zca912alh227g; ; ; # ⴕ.۰≮ß݅
+xn--dlj.xn--ss-jbe65aw27i; ⴕ.۰≮ss\u0745; ; xn--dlj.xn--ss-jbe65aw27i; ; ; # ⴕ.۰≮ss݅
+ⴕ.۰≮ss\u0745; ; ; xn--dlj.xn--ss-jbe65aw27i; ; ; # ⴕ.۰≮ss݅
+ⴕ.۰<\u0338ss\u0745; ⴕ.۰≮ss\u0745; ; xn--dlj.xn--ss-jbe65aw27i; ; ; # ⴕ.۰≮ss݅
+Ⴕ.۰<\u0338SS\u0745; Ⴕ.۰≮ss\u0745; [V6]; xn--tnd.xn--ss-jbe65aw27i; ; ; # Ⴕ.۰≮ss݅
+Ⴕ.۰≮SS\u0745; Ⴕ.۰≮ss\u0745; [V6]; xn--tnd.xn--ss-jbe65aw27i; ; ; # Ⴕ.۰≮ss݅
+Ⴕ.۰≮Ss\u0745; Ⴕ.۰≮ss\u0745; [V6]; xn--tnd.xn--ss-jbe65aw27i; ; ; # Ⴕ.۰≮ss݅
+Ⴕ.۰<\u0338Ss\u0745; Ⴕ.۰≮ss\u0745; [V6]; xn--tnd.xn--ss-jbe65aw27i; ; ; # Ⴕ.۰≮ss݅
+xn--dlj.xn--zca912alh227g; ⴕ.۰≮ß\u0745; ; xn--dlj.xn--zca912alh227g; ; ; # ⴕ.۰≮ß݅
+ⴕ.۰≮ß\u0745; ; ; xn--dlj.xn--zca912alh227g; ; xn--dlj.xn--ss-jbe65aw27i; # ⴕ.۰≮ß݅
+ⴕ.۰<\u0338ß\u0745; ⴕ.۰≮ß\u0745; ; xn--dlj.xn--zca912alh227g; ; xn--dlj.xn--ss-jbe65aw27i; # ⴕ.۰≮ß݅
xn--tnd.xn--zca912alh227g; Ⴕ.۰≮ß\u0745; [V6]; xn--tnd.xn--zca912alh227g; ; ; # Ⴕ.۰≮ß݅
\u07E9-.ð¨—ê’±\u1B72; ; [B1, B3, V3, V5]; xn----odd.xn--dwf8994dc8wj; ; ; # ß©-.ð¨—꒱᭲
xn----odd.xn--dwf8994dc8wj; \u07E9-.ð¨—ê’±\u1B72; [B1, B3, V3, V5]; xn----odd.xn--dwf8994dc8wj; ; ; # ß©-.ð¨—꒱᭲
-𞼸\u200C.≯䕵⫧; ; [B1, B3, C1, P1, V6]; xn--0ugx453p.xn--hdh754ax6w; ; xn--sn7h.xn--hdh754ax6w; [B1, P1, V6] # .≯䕵⫧
-𞼸\u200C.>\u0338䕵⫧; 𞼸\u200C.≯䕵⫧; [B1, B3, C1, P1, V6]; xn--0ugx453p.xn--hdh754ax6w; ; xn--sn7h.xn--hdh754ax6w; [B1, P1, V6] # .≯䕵⫧
+𞼸\u200C.≯䕵⫧; ; [B1, B3, C1, V6]; xn--0ugx453p.xn--hdh754ax6w; ; xn--sn7h.xn--hdh754ax6w; [B1, V6] # .≯䕵⫧
+𞼸\u200C.>\u0338䕵⫧; 𞼸\u200C.≯䕵⫧; [B1, B3, C1, V6]; xn--0ugx453p.xn--hdh754ax6w; ; xn--sn7h.xn--hdh754ax6w; [B1, V6] # .≯䕵⫧
xn--sn7h.xn--hdh754ax6w; 𞼸.≯䕵⫧; [B1, V6]; xn--sn7h.xn--hdh754ax6w; ; ; # .≯䕵⫧
xn--0ugx453p.xn--hdh754ax6w; 𞼸\u200C.≯䕵⫧; [B1, B3, C1, V6]; xn--0ugx453p.xn--hdh754ax6w; ; ; # .≯䕵⫧
-ð¨…ß\uFC57.\u06AC۳︒; ð¨…ß\u064A\u062E.\u06AC۳︒; [B1, B3, P1, V5, V6]; xn--zca23yncs877j.xn--fkb6lp314e; ; xn--ss-ytd5i7765l.xn--fkb6lp314e; # ð¨…ßيخ.ڬ۳︒
+ð¨…ß\uFC57.\u06AC۳︒; ð¨…ß\u064A\u062E.\u06AC۳︒; [B1, B3, V5, V6]; xn--zca23yncs877j.xn--fkb6lp314e; ; xn--ss-ytd5i7765l.xn--fkb6lp314e; # ð¨…ßيخ.ڬ۳︒
ð¨…ß\u064A\u062E.\u06AC۳。; ð¨…ß\u064A\u062E.\u06ACÛ³.; [B1, V5]; xn--zca23yncs877j.xn--fkb6l.; ; xn--ss-ytd5i7765l.xn--fkb6l.; # ð¨…ßيخ.Ú¬Û³.
ð¨…SS\u064A\u062E.\u06AC۳。; ð¨…ss\u064A\u062E.\u06ACÛ³.; [B1, V5]; xn--ss-ytd5i7765l.xn--fkb6l.; ; ; # ð¨…ssيخ.Ú¬Û³.
ð¨…ss\u064A\u062E.\u06AC۳。; ð¨…ss\u064A\u062E.\u06ACÛ³.; [B1, V5]; xn--ss-ytd5i7765l.xn--fkb6l.; ; ; # ð¨…ssيخ.Ú¬Û³.
ð¨…Ss\u064A\u062E.\u06AC۳。; ð¨…ss\u064A\u062E.\u06ACÛ³.; [B1, V5]; xn--ss-ytd5i7765l.xn--fkb6l.; ; ; # ð¨…ssيخ.Ú¬Û³.
xn--ss-ytd5i7765l.xn--fkb6l.; ð¨…ss\u064A\u062E.\u06ACÛ³.; [B1, V5]; xn--ss-ytd5i7765l.xn--fkb6l.; ; ; # ð¨…ssيخ.Ú¬Û³.
xn--zca23yncs877j.xn--fkb6l.; ð¨…ß\u064A\u062E.\u06ACÛ³.; [B1, V5]; xn--zca23yncs877j.xn--fkb6l.; ; ; # ð¨…ßيخ.Ú¬Û³.
-ð¨…SS\uFC57.\u06AC۳︒; ð¨…ss\u064A\u062E.\u06AC۳︒; [B1, B3, P1, V5, V6]; xn--ss-ytd5i7765l.xn--fkb6lp314e; ; ; # ð¨…ssيخ.ڬ۳︒
-ð¨…ss\uFC57.\u06AC۳︒; ð¨…ss\u064A\u062E.\u06AC۳︒; [B1, B3, P1, V5, V6]; xn--ss-ytd5i7765l.xn--fkb6lp314e; ; ; # ð¨…ssيخ.ڬ۳︒
-ð¨…Ss\uFC57.\u06AC۳︒; ð¨…ss\u064A\u062E.\u06AC۳︒; [B1, B3, P1, V5, V6]; xn--ss-ytd5i7765l.xn--fkb6lp314e; ; ; # ð¨…ssيخ.ڬ۳︒
+ð¨…SS\uFC57.\u06AC۳︒; ð¨…ss\u064A\u062E.\u06AC۳︒; [B1, B3, V5, V6]; xn--ss-ytd5i7765l.xn--fkb6lp314e; ; ; # ð¨…ssيخ.ڬ۳︒
+ð¨…ss\uFC57.\u06AC۳︒; ð¨…ss\u064A\u062E.\u06AC۳︒; [B1, B3, V5, V6]; xn--ss-ytd5i7765l.xn--fkb6lp314e; ; ; # ð¨…ssيخ.ڬ۳︒
+ð¨…Ss\uFC57.\u06AC۳︒; ð¨…ss\u064A\u062E.\u06AC۳︒; [B1, B3, V5, V6]; xn--ss-ytd5i7765l.xn--fkb6lp314e; ; ; # ð¨…ssيخ.ڬ۳︒
xn--ss-ytd5i7765l.xn--fkb6lp314e; ð¨…ss\u064A\u062E.\u06AC۳︒; [B1, B3, V5, V6]; xn--ss-ytd5i7765l.xn--fkb6lp314e; ; ; # ð¨…ssيخ.ڬ۳︒
xn--zca23yncs877j.xn--fkb6lp314e; ð¨…ß\u064A\u062E.\u06AC۳︒; [B1, B3, V5, V6]; xn--zca23yncs877j.xn--fkb6lp314e; ; ; # ð¨…ßيخ.ڬ۳︒
--≮🡒\u1CED.ñ¿¾á‚¡\u0714; ; [B1, P1, V3, V6]; xn----44l04zxt68c.xn--enb300c1597h; ; ; # -≮🡒᳭.á‚¡Ü”
--<\u0338🡒\u1CED.ñ¿¾á‚¡\u0714; -≮🡒\u1CED.ñ¿¾á‚¡\u0714; [B1, P1, V3, V6]; xn----44l04zxt68c.xn--enb300c1597h; ; ; # -≮🡒᳭.á‚¡Ü”
--<\u0338🡒\u1CED.ñ¿¾â´\u0714; -≮🡒\u1CED.ñ¿¾â´\u0714; [B1, P1, V3, V6]; xn----44l04zxt68c.xn--enb135qf106f; ; ; # -≮🡒᳭.â´Ü”
--≮🡒\u1CED.ñ¿¾â´\u0714; ; [B1, P1, V3, V6]; xn----44l04zxt68c.xn--enb135qf106f; ; ; # -≮🡒᳭.â´Ü”
+-≮🡒\u1CED.ñ¿¾á‚¡\u0714; ; [B1, V3, V6]; xn----44l04zxt68c.xn--enb300c1597h; ; ; # -≮🡒᳭.á‚¡Ü”
+-<\u0338🡒\u1CED.ñ¿¾á‚¡\u0714; -≮🡒\u1CED.ñ¿¾á‚¡\u0714; [B1, V3, V6]; xn----44l04zxt68c.xn--enb300c1597h; ; ; # -≮🡒᳭.á‚¡Ü”
+-<\u0338🡒\u1CED.ñ¿¾â´\u0714; -≮🡒\u1CED.ñ¿¾â´\u0714; [B1, V3, V6]; xn----44l04zxt68c.xn--enb135qf106f; ; ; # -≮🡒᳭.â´Ü”
+-≮🡒\u1CED.ñ¿¾â´\u0714; ; [B1, V3, V6]; xn----44l04zxt68c.xn--enb135qf106f; ; ; # -≮🡒᳭.â´Ü”
xn----44l04zxt68c.xn--enb135qf106f; -≮🡒\u1CED.ñ¿¾â´\u0714; [B1, V3, V6]; xn----44l04zxt68c.xn--enb135qf106f; ; ; # -≮🡒᳭.â´Ü”
xn----44l04zxt68c.xn--enb300c1597h; -≮🡒\u1CED.ñ¿¾á‚¡\u0714; [B1, V3, V6]; xn----44l04zxt68c.xn--enb300c1597h; ; ; # -≮🡒᳭.á‚¡Ü”
𞤨。ê¡\u200D\u200C; 𞤨.ê¡\u200D\u200C; [B6, C1, C2]; xn--ge6h.xn--0ugb9575h; ; xn--ge6h.xn--oc9a; [] # 𞤨.ê¡
@@ -4153,19 +4179,19 @@ xn--ge6h.xn--oc9a; 𞤨.ê¡; ; xn--ge6h.xn--oc9a; ; ; # 𞤨.ê¡
𞤆.ê¡; 𞤨.ê¡; ; xn--ge6h.xn--oc9a; ; ; # 𞤨.ê¡
xn--ge6h.xn--0ugb9575h; 𞤨.ê¡\u200D\u200C; [B6, C1, C2]; xn--ge6h.xn--0ugb9575h; ; ; # 𞤨.ê¡
𞤆。ê¡\u200D\u200C; 𞤨.ê¡\u200D\u200C; [B6, C1, C2]; xn--ge6h.xn--0ugb9575h; ; xn--ge6h.xn--oc9a; [] # 𞤨.ê¡
-󠅹𑂶.ᢌ𑂹\u0669; 𑂶.ᢌ𑂹\u0669; [B1, B3, B5, B6, V5]; xn--b50d.xn--iib993gyp5p; ; ; # 𑂶.ᢌ𑂹٩
-󠅹𑂶.ᢌ𑂹\u0669; 𑂶.ᢌ𑂹\u0669; [B1, B3, B5, B6, V5]; xn--b50d.xn--iib993gyp5p; ; ; # 𑂶.ᢌ𑂹٩
-xn--b50d.xn--iib993gyp5p; 𑂶.ᢌ𑂹\u0669; [B1, B3, B5, B6, V5]; xn--b50d.xn--iib993gyp5p; ; ; # 𑂶.ᢌ𑂹٩
-Ⅎ󠅺ñµ’。≯⾑; Ⅎñµ’.≯襾; [P1, V6]; xn--f3g73398c.xn--hdhz171b; ; ; # Ⅎ.≯襾
-Ⅎ󠅺ñµ’。>\u0338⾑; Ⅎñµ’.≯襾; [P1, V6]; xn--f3g73398c.xn--hdhz171b; ; ; # Ⅎ.≯襾
-Ⅎ󠅺ñµ’。≯襾; Ⅎñµ’.≯襾; [P1, V6]; xn--f3g73398c.xn--hdhz171b; ; ; # Ⅎ.≯襾
-Ⅎ󠅺ñµ’。>\u0338襾; Ⅎñµ’.≯襾; [P1, V6]; xn--f3g73398c.xn--hdhz171b; ; ; # Ⅎ.≯襾
-â…Žó …ºñµ’。>\u0338襾; â…Žñµ’.≯襾; [P1, V6]; xn--73g39298c.xn--hdhz171b; ; ; # â…Ž.≯襾
-â…Žó …ºñµ’。≯襾; â…Žñµ’.≯襾; [P1, V6]; xn--73g39298c.xn--hdhz171b; ; ; # â…Ž.≯襾
+󠅹𑂶.ᢌ𑂹\u0669; 𑂶.ᢌ𑂹\u0669; [B1, B5, B6, V5]; xn--b50d.xn--iib993gyp5p; ; ; # 𑂶.ᢌ𑂹٩
+󠅹𑂶.ᢌ𑂹\u0669; 𑂶.ᢌ𑂹\u0669; [B1, B5, B6, V5]; xn--b50d.xn--iib993gyp5p; ; ; # 𑂶.ᢌ𑂹٩
+xn--b50d.xn--iib993gyp5p; 𑂶.ᢌ𑂹\u0669; [B1, B5, B6, V5]; xn--b50d.xn--iib993gyp5p; ; ; # 𑂶.ᢌ𑂹٩
+Ⅎ󠅺ñµ’。≯⾑; Ⅎñµ’.≯襾; [V6]; xn--f3g73398c.xn--hdhz171b; ; ; # Ⅎ.≯襾
+Ⅎ󠅺ñµ’。>\u0338⾑; Ⅎñµ’.≯襾; [V6]; xn--f3g73398c.xn--hdhz171b; ; ; # Ⅎ.≯襾
+Ⅎ󠅺ñµ’。≯襾; Ⅎñµ’.≯襾; [V6]; xn--f3g73398c.xn--hdhz171b; ; ; # Ⅎ.≯襾
+Ⅎ󠅺ñµ’。>\u0338襾; Ⅎñµ’.≯襾; [V6]; xn--f3g73398c.xn--hdhz171b; ; ; # Ⅎ.≯襾
+â…Žó …ºñµ’。>\u0338襾; â…Žñµ’.≯襾; [V6]; xn--73g39298c.xn--hdhz171b; ; ; # â…Ž.≯襾
+â…Žó …ºñµ’。≯襾; â…Žñµ’.≯襾; [V6]; xn--73g39298c.xn--hdhz171b; ; ; # â…Ž.≯襾
xn--73g39298c.xn--hdhz171b; â…Žñµ’.≯襾; [V6]; xn--73g39298c.xn--hdhz171b; ; ; # â…Ž.≯襾
xn--f3g73398c.xn--hdhz171b; Ⅎñµ’.≯襾; [V6]; xn--f3g73398c.xn--hdhz171b; ; ; # Ⅎ.≯襾
-â…Žó …ºñµ’。>\u0338⾑; â…Žñµ’.≯襾; [P1, V6]; xn--73g39298c.xn--hdhz171b; ; ; # â…Ž.≯襾
-â…Žó …ºñµ’。≯⾑; â…Žñµ’.≯襾; [P1, V6]; xn--73g39298c.xn--hdhz171b; ; ; # â…Ž.≯襾
+â…Žó …ºñµ’。>\u0338⾑; â…Žñµ’.≯襾; [V6]; xn--73g39298c.xn--hdhz171b; ; ; # â…Ž.≯襾
+â…Žó …ºñµ’。≯⾑; â…Žñµ’.≯襾; [V6]; xn--73g39298c.xn--hdhz171b; ; ; # â…Ž.≯襾
ς\u200D\u0DD4\u0660。-; ς\u200D\u0DD4\u0660.-; [B1, B5, B6, C2, V3]; xn--3xa45ks2jenu.-; ; xn--4xa25ks2j.-; [B1, B5, B6, V3] # ςු٠.-
ς\u200D\u0DD4\u0660。-; ς\u200D\u0DD4\u0660.-; [B1, B5, B6, C2, V3]; xn--3xa45ks2jenu.-; ; xn--4xa25ks2j.-; [B1, B5, B6, V3] # ςු٠.-
Σ\u200D\u0DD4\u0660。-; σ\u200D\u0DD4\u0660.-; [B1, B5, B6, C2, V3]; xn--4xa25ks2jenu.-; ; xn--4xa25ks2j.-; [B1, B5, B6, V3] # σු٠.-
@@ -4175,9 +4201,9 @@ xn--4xa25ks2jenu.-; σ\u200D\u0DD4\u0660.-; [B1, B5, B6, C2, V3]; xn--4xa25ks2je
xn--3xa45ks2jenu.-; Ï‚\u200D\u0DD4\u0660.-; [B1, B5, B6, C2, V3]; xn--3xa45ks2jenu.-; ; ; # Ï‚à·”Ù .-
Σ\u200D\u0DD4\u0660。-; σ\u200D\u0DD4\u0660.-; [B1, B5, B6, C2, V3]; xn--4xa25ks2jenu.-; ; xn--4xa25ks2j.-; [B1, B5, B6, V3] # σු٠.-
σ\u200D\u0DD4\u0660。-; σ\u200D\u0DD4\u0660.-; [B1, B5, B6, C2, V3]; xn--4xa25ks2jenu.-; ; xn--4xa25ks2j.-; [B1, B5, B6, V3] # σු٠.-
-\u200C.ßႩ-; ; [C1, P1, V3, V6]; xn--0ug.xn----pfa042j; ; .xn--ss--4rn; [P1, V3, V6, A4_2] # .ßႩ-
+\u200C.ßႩ-; ; [C1, V3, V6]; xn--0ug.xn----pfa042j; ; .xn--ss--4rn; [V3, V6, A4_2] # .ßႩ-
\u200C.ßⴉ-; ; [C1, V3]; xn--0ug.xn----pfa2305a; ; .xn--ss--bi1b; [V3, A4_2] # .ßⴉ-
-\u200C.SSá‚©-; \u200C.ssá‚©-; [C1, P1, V3, V6]; xn--0ug.xn--ss--4rn; ; .xn--ss--4rn; [P1, V3, V6, A4_2] # .ssá‚©-
+\u200C.SSá‚©-; \u200C.ssá‚©-; [C1, V3, V6]; xn--0ug.xn--ss--4rn; ; .xn--ss--4rn; [V3, V6, A4_2] # .ssá‚©-
\u200C.ssâ´‰-; ; [C1, V3]; xn--0ug.xn--ss--bi1b; ; .xn--ss--bi1b; [V3, A4_2] # .ssâ´‰-
\u200C.Ssâ´‰-; \u200C.ssâ´‰-; [C1, V3]; xn--0ug.xn--ss--bi1b; ; .xn--ss--bi1b; [V3, A4_2] # .ssâ´‰-
.xn--ss--bi1b; .ssâ´‰-; [V3, X4_2]; .xn--ss--bi1b; [V3, A4_2]; ; # .ssâ´‰-
@@ -4186,22 +4212,22 @@ xn--0ug.xn--ss--bi1b; \u200C.ssâ´‰-; [C1, V3]; xn--0ug.xn--ss--bi1b; ; ; # .ssâ
xn--0ug.xn--ss--4rn; \u200C.ssá‚©-; [C1, V3, V6]; xn--0ug.xn--ss--4rn; ; ; # .ssá‚©-
xn--0ug.xn----pfa2305a; \u200C.ßⴉ-; [C1, V3]; xn--0ug.xn----pfa2305a; ; ; # .ßⴉ-
xn--0ug.xn----pfa042j; \u200C.ßႩ-; [C1, V3, V6]; xn--0ug.xn----pfa042j; ; ; # .ßႩ-
-ó­²ð«ã“±ã€‚⾑; ó­²ð«ã“±.襾; [B5, P1, V6]; xn--u7kt691dlj09f.xn--9v2a; ; ; # ð«ã“±.襾
-ó­²ð«ã“±ã€‚襾; ó­²ð«ã“±.襾; [B5, P1, V6]; xn--u7kt691dlj09f.xn--9v2a; ; ; # ð«ã“±.襾
+ó­²ð«ã“±ã€‚⾑; ó­²ð«ã“±.襾; [B5, V6]; xn--u7kt691dlj09f.xn--9v2a; ; ; # ð«ã“±.襾
+ó­²ð«ã“±ã€‚襾; ó­²ð«ã“±.襾; [B5, V6]; xn--u7kt691dlj09f.xn--9v2a; ; ; # ð«ã“±.襾
xn--u7kt691dlj09f.xn--9v2a; ó­²ð«ã“±.襾; [B5, V6]; xn--u7kt691dlj09f.xn--9v2a; ; ; # ð«ã“±.襾
-\u06A0ð®‹ð¹°â‰®ã€‚≯󠦗\u200D; \u06A0ð®‹ð¹°â‰®.≯󠦗\u200D; [B1, B3, C2, P1, V6]; xn--2jb053lf13nyoc.xn--1ugx6gc8096c; ; xn--2jb053lf13nyoc.xn--hdh08821l; [B1, B3, P1, V6] # Ú ð®‹ð¹°â‰®.≯
-\u06A0ð®‹ð¹°<\u0338。>\u0338ó ¦—\u200D; \u06A0ð®‹ð¹°â‰®.≯󠦗\u200D; [B1, B3, C2, P1, V6]; xn--2jb053lf13nyoc.xn--1ugx6gc8096c; ; xn--2jb053lf13nyoc.xn--hdh08821l; [B1, B3, P1, V6] # Ú ð®‹ð¹°â‰®.≯
+\u06A0ð®‹ð¹°â‰®ã€‚≯󠦗\u200D; \u06A0ð®‹ð¹°â‰®.≯󠦗\u200D; [B1, B3, C2, V6]; xn--2jb053lf13nyoc.xn--1ugx6gc8096c; ; xn--2jb053lf13nyoc.xn--hdh08821l; [B1, B3, V6] # Ú ð®‹ð¹°â‰®.≯
+\u06A0ð®‹ð¹°<\u0338。>\u0338ó ¦—\u200D; \u06A0ð®‹ð¹°â‰®.≯󠦗\u200D; [B1, B3, C2, V6]; xn--2jb053lf13nyoc.xn--1ugx6gc8096c; ; xn--2jb053lf13nyoc.xn--hdh08821l; [B1, B3, V6] # Ú ð®‹ð¹°â‰®.≯
xn--2jb053lf13nyoc.xn--hdh08821l; \u06A0ð®‹ð¹°â‰®.≯󠦗; [B1, B3, V6]; xn--2jb053lf13nyoc.xn--hdh08821l; ; ; # Ú ð®‹ð¹°â‰®.≯
xn--2jb053lf13nyoc.xn--1ugx6gc8096c; \u06A0ð®‹ð¹°â‰®.≯󠦗\u200D; [B1, B3, C2, V6]; xn--2jb053lf13nyoc.xn--1ugx6gc8096c; ; ; # Ú ð®‹ð¹°â‰®.≯
-ðŸžï½¡ñƒ°¶\u0777\u08B0â©‹; 6.ñƒ°¶\u0777\u08B0â©‹; [B1, B5, B6, P1, V6]; 6.xn--7pb04do15eq748f; ; ; # 6.ݷࢰ⩋
-6。񃰶\u0777\u08B0⩋; 6.񃰶\u0777\u08B0⩋; [B1, B5, B6, P1, V6]; 6.xn--7pb04do15eq748f; ; ; # 6.ݷࢰ⩋
+ðŸžï½¡ñƒ°¶\u0777\u08B0â©‹; 6.ñƒ°¶\u0777\u08B0â©‹; [B1, B5, B6, V6]; 6.xn--7pb04do15eq748f; ; ; # 6.ݷࢰ⩋
+6。񃰶\u0777\u08B0⩋; 6.񃰶\u0777\u08B0⩋; [B1, B5, B6, V6]; 6.xn--7pb04do15eq748f; ; ; # 6.ݷࢰ⩋
6.xn--7pb04do15eq748f; 6.񃰶\u0777\u08B0⩋; [B1, B5, B6, V6]; 6.xn--7pb04do15eq748f; ; ; # 6.ݷࢰ⩋
-\uFCFD。ð‘´ð‘‡€; -\u0634\u0649.𑇀ð‘´; [B1, V3, V5]; xn----qnc7d.xn--wd1d62a; ; ; # -شى.𑇀ð‘´
-\uFCFD。𑇀ð‘´; -\u0634\u0649.𑇀ð‘´; [B1, V3, V5]; xn----qnc7d.xn--wd1d62a; ; ; # -شى.𑇀ð‘´
-\u0634\u0649。𑇀ð‘´; -\u0634\u0649.𑇀ð‘´; [B1, V3, V5]; xn----qnc7d.xn--wd1d62a; ; ; # -شى.𑇀ð‘´
xn----qnc7d.xn--wd1d62a; -\u0634\u0649.𑇀ð‘´; [B1, V3, V5]; xn----qnc7d.xn--wd1d62a; ; ; # -شى.𑇀ð‘´
-\u200C󠊶ðŸ.\u0D43òª¥ð¹¬óŠ“¶; \u200C󠊶1.\u0D43òª¥ð¹¬óŠ“¶; [B1, C1, P1, V5, V6]; xn--1-rgnu0071n.xn--mxc0872kcu37dnmem; ; xn--1-f521m.xn--mxc0872kcu37dnmem; [B1, P1, V5, V6] # 1.ൃð¹¬
-\u200C󠊶1.\u0D43òª¥ð¹¬óŠ“¶; ; [B1, C1, P1, V5, V6]; xn--1-rgnu0071n.xn--mxc0872kcu37dnmem; ; xn--1-f521m.xn--mxc0872kcu37dnmem; [B1, P1, V5, V6] # 1.ൃð¹¬
+\u200C󠊶ðŸ.\u0D43òª¥ð¹¬óŠ“¶; \u200C󠊶1.\u0D43òª¥ð¹¬óŠ“¶; [B1, C1, V5, V6]; xn--1-rgnu0071n.xn--mxc0872kcu37dnmem; ; xn--1-f521m.xn--mxc0872kcu37dnmem; [B1, V5, V6] # 1.ൃð¹¬
+\u200C󠊶1.\u0D43òª¥ð¹¬óŠ“¶; ; [B1, C1, V5, V6]; xn--1-rgnu0071n.xn--mxc0872kcu37dnmem; ; xn--1-f521m.xn--mxc0872kcu37dnmem; [B1, V5, V6] # 1.ൃð¹¬
xn--1-f521m.xn--mxc0872kcu37dnmem; 󠊶1.\u0D43òª¥ð¹¬óŠ“¶; [B1, V5, V6]; xn--1-f521m.xn--mxc0872kcu37dnmem; ; ; # 1.ൃð¹¬
xn--1-rgnu0071n.xn--mxc0872kcu37dnmem; \u200C󠊶1.\u0D43òª¥ð¹¬óŠ“¶; [B1, C1, V5, V6]; xn--1-rgnu0071n.xn--mxc0872kcu37dnmem; ; ; # 1.ൃð¹¬
é½™--ðŸ°.ß; é½™--4.ß; ; xn----4-p16k.xn--zca; ; xn----4-p16k.ss; # é½™--4.ß
@@ -4217,112 +4243,112 @@ xn----4-p16k.xn--zca; 齙--4.ß; ; xn----4-p16k.xn--zca; ; ; # 齙--4.ß
\u1BF2.ð¹¢ðž€–\u200C; ; [B1, C1, V5]; xn--0zf.xn--0ug9894grqqf; ; xn--0zf.xn--9n0d2296a; [B1, V5] # ᯲.ð¹¢ðž€–
xn--0zf.xn--9n0d2296a; \u1BF2.ð¹¢ðž€–; [B1, V5]; xn--0zf.xn--9n0d2296a; ; ; # ᯲.ð¹¢ðž€–
xn--0zf.xn--0ug9894grqqf; \u1BF2.ð¹¢ðž€–\u200C; [B1, C1, V5]; xn--0zf.xn--0ug9894grqqf; ; ; # ᯲.ð¹¢ðž€–
-󃲙󠋘。?-\u200D; 󃲙󠋘.?-\u200D; [C2, P1, V6]; xn--ct86d8w51a.xn--?--n1t; ; xn--ct86d8w51a.?-; [P1, V3, V6] # .?-
-󃲙󠋘。?-\u200D; 󃲙󠋘.?-\u200D; [C2, P1, V6]; xn--ct86d8w51a.xn--?--n1t; ; xn--ct86d8w51a.?-; [P1, V3, V6] # .?-
-xn--ct86d8w51a.?-; 󃲙󠋘.?-; [P1, V3, V6]; xn--ct86d8w51a.?-; ; ; # .?-
-xn--ct86d8w51a.xn--?--n1t; 󃲙󠋘.?-\u200D; [C2, P1, V6]; xn--ct86d8w51a.xn--?--n1t; ; ; # .?-
-xn--ct86d8w51a.?-\u200D; 󃲙󠋘.?-\u200D; [C2, P1, V6]; xn--ct86d8w51a.xn--?--n1t; ; xn--ct86d8w51a.?-; [P1, V3, V6] # .?-
-XN--CT86D8W51A.?-\u200D; 󃲙󠋘.?-\u200D; [C2, P1, V6]; xn--ct86d8w51a.xn--?--n1t; ; xn--ct86d8w51a.?-; [P1, V3, V6] # .?-
-Xn--Ct86d8w51a.?-\u200D; 󃲙󠋘.?-\u200D; [C2, P1, V6]; xn--ct86d8w51a.xn--?--n1t; ; xn--ct86d8w51a.?-; [P1, V3, V6] # .?-
-\u1A60.𞵷-ðª©æ‚Ž; \u1A60.ðžµ·-ðª©æ‚Ž; [B1, B2, B3, B6, P1, V5, V6]; xn--jof.xn----gf4bq282iezpa; ; ; # á© .-ðª©æ‚Ž
-\u1A60.ðžµ·-ðª©æ‚Ž; ; [B1, B2, B3, B6, P1, V5, V6]; xn--jof.xn----gf4bq282iezpa; ; ; # á© .-ðª©æ‚Ž
-xn--jof.xn----gf4bq282iezpa; \u1A60.ðžµ·-ðª©æ‚Ž; [B1, B2, B3, B6, V5, V6]; xn--jof.xn----gf4bq282iezpa; ; ; # á© .-ðª©æ‚Ž
-𛜯󠊛.𞤳ñ¥¾; 𛜯󠊛.𞤳ñ¥¾; [B2, B3, B6, P1, V6]; xn--xx5gy2741c.xn--re6hw266j; ; ; # .𞤳
-𛜯󠊛.𞤳ñ¥¾; ; [B2, B3, B6, P1, V6]; xn--xx5gy2741c.xn--re6hw266j; ; ; # .𞤳
-𛜯󠊛.𞤑ñ¥¾; 𛜯󠊛.𞤳ñ¥¾; [B2, B3, B6, P1, V6]; xn--xx5gy2741c.xn--re6hw266j; ; ; # .𞤳
+󃲙󠋘。?-\u200D; 󃲙󠋘.?-\u200D; [C2, V6]; xn--ct86d8w51a.xn--?--n1t; ; xn--ct86d8w51a.?-; [V3, V6] # .?-
+󃲙󠋘。?-\u200D; 󃲙󠋘.?-\u200D; [C2, V6]; xn--ct86d8w51a.xn--?--n1t; ; xn--ct86d8w51a.?-; [V3, V6] # .?-
+xn--ct86d8w51a.?-; 󃲙󠋘.?-; [V3, V6]; xn--ct86d8w51a.?-; ; ; # .?-
+xn--ct86d8w51a.xn--?--n1t; 󃲙󠋘.?-\u200D; [C2, V6]; xn--ct86d8w51a.xn--?--n1t; ; ; # .?-
+xn--ct86d8w51a.?-\u200D; 󃲙󠋘.?-\u200D; [C2, V6]; xn--ct86d8w51a.xn--?--n1t; ; xn--ct86d8w51a.?-; [V3, V6] # .?-
+XN--CT86D8W51A.?-\u200D; 󃲙󠋘.?-\u200D; [C2, V6]; xn--ct86d8w51a.xn--?--n1t; ; xn--ct86d8w51a.?-; [V3, V6] # .?-
+Xn--Ct86d8w51a.?-\u200D; 󃲙󠋘.?-\u200D; [C2, V6]; xn--ct86d8w51a.xn--?--n1t; ; xn--ct86d8w51a.?-; [V3, V6] # .?-
+\u1A60.𞵷-ðª©æ‚Ž; \u1A60.ðžµ·-ðª©æ‚Ž; [B1, B2, B3, V5, V6]; xn--jof.xn----gf4bq282iezpa; ; ; # á© .-ðª©æ‚Ž
+\u1A60.ðžµ·-ðª©æ‚Ž; ; [B1, B2, B3, V5, V6]; xn--jof.xn----gf4bq282iezpa; ; ; # á© .-ðª©æ‚Ž
+xn--jof.xn----gf4bq282iezpa; \u1A60.ðžµ·-ðª©æ‚Ž; [B1, B2, B3, V5, V6]; xn--jof.xn----gf4bq282iezpa; ; ; # á© .-ðª©æ‚Ž
+𛜯󠊛.𞤳ñ¥¾; 𛜯󠊛.𞤳ñ¥¾; [B2, B3, B6, V6]; xn--xx5gy2741c.xn--re6hw266j; ; ; # .𞤳
+𛜯󠊛.𞤳ñ¥¾; ; [B2, B3, B6, V6]; xn--xx5gy2741c.xn--re6hw266j; ; ; # .𞤳
+𛜯󠊛.𞤑ñ¥¾; 𛜯󠊛.𞤳ñ¥¾; [B2, B3, B6, V6]; xn--xx5gy2741c.xn--re6hw266j; ; ; # .𞤳
xn--xx5gy2741c.xn--re6hw266j; 𛜯󠊛.𞤳ñ¥¾; [B2, B3, B6, V6]; xn--xx5gy2741c.xn--re6hw266j; ; ; # .𞤳
-𛜯󠊛.𞤑ñ¥¾; 𛜯󠊛.𞤳ñ¥¾; [B2, B3, B6, P1, V6]; xn--xx5gy2741c.xn--re6hw266j; ; ; # .𞤳
+𛜯󠊛.𞤑ñ¥¾; 𛜯󠊛.𞤳ñ¥¾; [B2, B3, B6, V6]; xn--xx5gy2741c.xn--re6hw266j; ; ; # .𞤳
\u071Cð«’\u062E.ð‹²; ; [B1]; xn--tgb98b8643d.xn--m97c; ; ; # Üœð«’Ø®.ð‹²
xn--tgb98b8643d.xn--m97c; \u071Cð«’\u062E.ð‹²; [B1]; xn--tgb98b8643d.xn--m97c; ; ; # Üœð«’Ø®.ð‹²
-ð¼‘𞤓\u0637\u08E2.?; ð¼‘𞤵\u0637\u08E2.?; [B1, P1, V6]; xn--2gb08k9w69agm0g.?; ; ; # ð¼‘𞤵ط.?
-ð¼‘𞤵\u0637\u08E2.?; ; [B1, P1, V6]; xn--2gb08k9w69agm0g.?; ; ; # ð¼‘𞤵ط.?
-xn--2gb08k9w69agm0g.?; ð¼‘𞤵\u0637\u08E2.?; [B1, P1, V6]; xn--2gb08k9w69agm0g.?; ; ; # ð¼‘𞤵ط.?
-Ↄ。\u0A4D\u1CD4ðž·£; Ↄ.\u1CD4\u0A4Dðž·£; [B1, P1, V5, V6]; xn--q5g.xn--ybc995g0835a; ; ; # Ↄ.á³”à©
-Ↄ。\u1CD4\u0A4Dðž·£; Ↄ.\u1CD4\u0A4Dðž·£; [B1, P1, V5, V6]; xn--q5g.xn--ybc995g0835a; ; ; # Ↄ.á³”à©
-ↄ。\u1CD4\u0A4Dðž·£; ↄ.\u1CD4\u0A4Dðž·£; [B1, P1, V5, V6]; xn--r5g.xn--ybc995g0835a; ; ; # ↄ.á³”à©
+ð¼‘𞤓\u0637\u08E2.?; ð¼‘𞤵\u0637\u08E2.?; [B1, V6]; xn--2gb08k9w69agm0g.?; ; ; # ð¼‘𞤵ط.?
+ð¼‘𞤵\u0637\u08E2.?; ; [B1, V6]; xn--2gb08k9w69agm0g.?; ; ; # ð¼‘𞤵ط.?
+xn--2gb08k9w69agm0g.?; ð¼‘𞤵\u0637\u08E2.?; [B1, V6]; xn--2gb08k9w69agm0g.?; ; ; # ð¼‘𞤵ط.?
+Ↄ。\u0A4D\u1CD4ðž·£; Ↄ.\u1CD4\u0A4Dðž·£; [B1, V5, V6]; xn--q5g.xn--ybc995g0835a; ; ; # Ↄ.á³”à©
+Ↄ。\u1CD4\u0A4Dðž·£; Ↄ.\u1CD4\u0A4Dðž·£; [B1, V5, V6]; xn--q5g.xn--ybc995g0835a; ; ; # Ↄ.á³”à©
+ↄ。\u1CD4\u0A4Dðž·£; ↄ.\u1CD4\u0A4Dðž·£; [B1, V5, V6]; xn--r5g.xn--ybc995g0835a; ; ; # ↄ.á³”à©
xn--r5g.xn--ybc995g0835a; ↄ.\u1CD4\u0A4Dðž·£; [B1, V5, V6]; xn--r5g.xn--ybc995g0835a; ; ; # ↄ.á³”à©
xn--q5g.xn--ybc995g0835a; Ↄ.\u1CD4\u0A4Dðž·£; [B1, V5, V6]; xn--q5g.xn--ybc995g0835a; ; ; # Ↄ.á³”à©
-ↄ。\u0A4D\u1CD4ðž·£; ↄ.\u1CD4\u0A4Dðž·£; [B1, P1, V5, V6]; xn--r5g.xn--ybc995g0835a; ; ; # ↄ.á³”à©
-󠪢-。ò›‚≮𑜫; 󠪢-.ò›‚≮𑜫; [P1, V3, V6]; xn----bh61m.xn--gdhz157g0em1d; ; ; # -.≮𑜫
-󠪢-。ò›‚<\u0338𑜫; 󠪢-.ò›‚≮𑜫; [P1, V3, V6]; xn----bh61m.xn--gdhz157g0em1d; ; ; # -.≮𑜫
+ↄ。\u0A4D\u1CD4ðž·£; ↄ.\u1CD4\u0A4Dðž·£; [B1, V5, V6]; xn--r5g.xn--ybc995g0835a; ; ; # ↄ.á³”à©
+󠪢-。ò›‚≮𑜫; 󠪢-.ò›‚≮𑜫; [V3, V6]; xn----bh61m.xn--gdhz157g0em1d; ; ; # -.≮𑜫
+󠪢-。ò›‚<\u0338𑜫; 󠪢-.ò›‚≮𑜫; [V3, V6]; xn----bh61m.xn--gdhz157g0em1d; ; ; # -.≮𑜫
xn----bh61m.xn--gdhz157g0em1d; 󠪢-.ò›‚≮𑜫; [V3, V6]; xn----bh61m.xn--gdhz157g0em1d; ; ; # -.≮𑜫
-\u200C󠉹\u200D。򌿧≮Ⴉ; \u200C󠉹\u200D.򌿧≮Ⴉ; [C1, C2, P1, V6]; xn--0ugc90904y.xn--hnd112gpz83n; ; xn--3n36e.xn--hnd112gpz83n; [P1, V6] # .≮Ⴉ
-\u200C󠉹\u200D。򌿧<\u0338Ⴉ; \u200C󠉹\u200D.򌿧≮Ⴉ; [C1, C2, P1, V6]; xn--0ugc90904y.xn--hnd112gpz83n; ; xn--3n36e.xn--hnd112gpz83n; [P1, V6] # .≮Ⴉ
-\u200C󠉹\u200D。򌿧<\u0338ⴉ; \u200C󠉹\u200D.򌿧≮ⴉ; [C1, C2, P1, V6]; xn--0ugc90904y.xn--gdh992byu01p; ; xn--3n36e.xn--gdh992byu01p; [P1, V6] # .≮ⴉ
-\u200C󠉹\u200D。򌿧≮ⴉ; \u200C󠉹\u200D.򌿧≮ⴉ; [C1, C2, P1, V6]; xn--0ugc90904y.xn--gdh992byu01p; ; xn--3n36e.xn--gdh992byu01p; [P1, V6] # .≮ⴉ
+\u200C󠉹\u200D。򌿧≮Ⴉ; \u200C󠉹\u200D.򌿧≮Ⴉ; [C1, C2, V6]; xn--0ugc90904y.xn--hnd112gpz83n; ; xn--3n36e.xn--hnd112gpz83n; [V6] # .≮Ⴉ
+\u200C󠉹\u200D。򌿧<\u0338Ⴉ; \u200C󠉹\u200D.򌿧≮Ⴉ; [C1, C2, V6]; xn--0ugc90904y.xn--hnd112gpz83n; ; xn--3n36e.xn--hnd112gpz83n; [V6] # .≮Ⴉ
+\u200C󠉹\u200D。򌿧<\u0338ⴉ; \u200C󠉹\u200D.򌿧≮ⴉ; [C1, C2, V6]; xn--0ugc90904y.xn--gdh992byu01p; ; xn--3n36e.xn--gdh992byu01p; [V6] # .≮ⴉ
+\u200C󠉹\u200D。򌿧≮ⴉ; \u200C󠉹\u200D.򌿧≮ⴉ; [C1, C2, V6]; xn--0ugc90904y.xn--gdh992byu01p; ; xn--3n36e.xn--gdh992byu01p; [V6] # .≮ⴉ
xn--3n36e.xn--gdh992byu01p; 󠉹.򌿧≮ⴉ; [V6]; xn--3n36e.xn--gdh992byu01p; ; ; # .≮ⴉ
xn--0ugc90904y.xn--gdh992byu01p; \u200C󠉹\u200D.򌿧≮ⴉ; [C1, C2, V6]; xn--0ugc90904y.xn--gdh992byu01p; ; ; # .≮ⴉ
xn--3n36e.xn--hnd112gpz83n; 󠉹.򌿧≮Ⴉ; [V6]; xn--3n36e.xn--hnd112gpz83n; ; ; # .≮Ⴉ
xn--0ugc90904y.xn--hnd112gpz83n; \u200C󠉹\u200D.򌿧≮Ⴉ; [C1, C2, V6]; xn--0ugc90904y.xn--hnd112gpz83n; ; ; # .≮Ⴉ
-ð¹¯-ð‘„´\u08BC。︒ä–⾆; ð¹¯-ð‘„´\u08BC.︒ä–舌; [B1, P1, V6]; xn----rpd7902rclc.xn--fpo216mn07e; ; ; # ð¹¯-𑄴ࢼ.︒ä–舌
+ð¹¯-ð‘„´\u08BC。︒ä–⾆; ð¹¯-ð‘„´\u08BC.︒ä–舌; [B1, V6]; xn----rpd7902rclc.xn--fpo216mn07e; ; ; # ð¹¯-𑄴ࢼ.︒ä–舌
ð¹¯-ð‘„´\u08BC。。ä–舌; ð¹¯-ð‘„´\u08BC..ä–舌; [B1, X4_2]; xn----rpd7902rclc..xn--fpo216m; [B1, A4_2]; ; # ð¹¯-𑄴ࢼ..ä–舌
xn----rpd7902rclc..xn--fpo216m; ð¹¯-ð‘„´\u08BC..ä–舌; [B1, X4_2]; xn----rpd7902rclc..xn--fpo216m; [B1, A4_2]; ; # ð¹¯-𑄴ࢼ..ä–舌
xn----rpd7902rclc.xn--fpo216mn07e; ð¹¯-ð‘„´\u08BC.︒ä–舌; [B1, V6]; xn----rpd7902rclc.xn--fpo216mn07e; ; ; # ð¹¯-𑄴ࢼ.︒ä–舌
-ðªžá‚°ï½¡ìª¡; ðªžá‚°.쪡; [P1, V5, V6]; xn--ond3755u.xn--pi6b; ; ; # ðªžá‚°.쪡
-ðªžá‚°ï½¡á„ᅨᆨ; ðªžá‚°.쪡; [P1, V5, V6]; xn--ond3755u.xn--pi6b; ; ; # ðªžá‚°.쪡
-ðªžá‚°ã€‚쪡; ðªžá‚°.쪡; [P1, V5, V6]; xn--ond3755u.xn--pi6b; ; ; # ðªžá‚°.쪡
-ðªžá‚°ã€‚á„ᅨᆨ; ðªžá‚°.쪡; [P1, V5, V6]; xn--ond3755u.xn--pi6b; ; ; # ðªžá‚°.쪡
+ðªžá‚°ï½¡ìª¡; ðªžá‚°.쪡; [V5, V6]; xn--ond3755u.xn--pi6b; ; ; # ðªžá‚°.쪡
+ðªžá‚°ï½¡á„ᅨᆨ; ðªžá‚°.쪡; [V5, V6]; xn--ond3755u.xn--pi6b; ; ; # ðªžá‚°.쪡
+ðªžá‚°ã€‚쪡; ðªžá‚°.쪡; [V5, V6]; xn--ond3755u.xn--pi6b; ; ; # ðªžá‚°.쪡
+ðªžá‚°ã€‚á„ᅨᆨ; ðªžá‚°.쪡; [V5, V6]; xn--ond3755u.xn--pi6b; ; ; # ðªžá‚°.쪡
ðªžâ´ã€‚á„ᅨᆨ; ðªžâ´.쪡; [V5]; xn--7kj1858k.xn--pi6b; ; ; # ðªžâ´.쪡
ðªžâ´ã€‚쪡; ðªžâ´.쪡; [V5]; xn--7kj1858k.xn--pi6b; ; ; # ðªžâ´.쪡
xn--7kj1858k.xn--pi6b; ðªžâ´.쪡; [V5]; xn--7kj1858k.xn--pi6b; ; ; # ðªžâ´.쪡
xn--ond3755u.xn--pi6b; ðªžá‚°.쪡; [V5, V6]; xn--ond3755u.xn--pi6b; ; ; # ðªžá‚°.쪡
ðªžâ´ï½¡á„ᅨᆨ; ðªžâ´.쪡; [V5]; xn--7kj1858k.xn--pi6b; ; ; # ðªžâ´.쪡
ðªžâ´ï½¡ìª¡; ðªžâ´.쪡; [V5]; xn--7kj1858k.xn--pi6b; ; ; # ðªžâ´.쪡
-\u0E3Aì©ð¹¬.ô‹‰³; ; [B1, P1, V5, V6]; xn--o4c4837g2zvb.xn--5f70g; ; ; # ฺì©ð¹¬.
-\u0E3Aá„ᅤᆸð¹¬.ô‹‰³; \u0E3Aì©ð¹¬.ô‹‰³; [B1, P1, V5, V6]; xn--o4c4837g2zvb.xn--5f70g; ; ; # ฺì©ð¹¬.
+\u0E3Aì©ð¹¬.ô‹‰³; ; [B1, V5, V6]; xn--o4c4837g2zvb.xn--5f70g; ; ; # ฺì©ð¹¬.
+\u0E3Aá„ᅤᆸð¹¬.ô‹‰³; \u0E3Aì©ð¹¬.ô‹‰³; [B1, V5, V6]; xn--o4c4837g2zvb.xn--5f70g; ; ; # ฺì©ð¹¬.
xn--o4c4837g2zvb.xn--5f70g; \u0E3Aì©ð¹¬.ô‹‰³; [B1, V5, V6]; xn--o4c4837g2zvb.xn--5f70g; ; ; # ฺì©ð¹¬.
-á¡…ï¼\u200C。⎢󤨄; á¡…0\u200C.⎢󤨄; [C1, P1, V6]; xn--0-z6jy93b.xn--8lh28773l; ; xn--0-z6j.xn--8lh28773l; [P1, V6] # á¡…0.⎢
-ᡅ0\u200C。⎢󤨄; ᡅ0\u200C.⎢󤨄; [C1, P1, V6]; xn--0-z6jy93b.xn--8lh28773l; ; xn--0-z6j.xn--8lh28773l; [P1, V6] # ᡅ0.⎢
+á¡…ï¼\u200C。⎢󤨄; á¡…0\u200C.⎢󤨄; [C1, V6]; xn--0-z6jy93b.xn--8lh28773l; ; xn--0-z6j.xn--8lh28773l; [V6] # á¡…0.⎢
+ᡅ0\u200C。⎢󤨄; ᡅ0\u200C.⎢󤨄; [C1, V6]; xn--0-z6jy93b.xn--8lh28773l; ; xn--0-z6j.xn--8lh28773l; [V6] # ᡅ0.⎢
xn--0-z6j.xn--8lh28773l; ᡅ0.⎢󤨄; [V6]; xn--0-z6j.xn--8lh28773l; ; ; # ᡅ0.⎢
xn--0-z6jy93b.xn--8lh28773l; ᡅ0\u200C.⎢󤨄; [C1, V6]; xn--0-z6jy93b.xn--8lh28773l; ; ; # ᡅ0.⎢
-𲮚9ê©\u17D3.\u200Dß; 𲮚9ê©\u17D3.\u200Dß; [C2, P1, V6]; xn--9-i0j5967eg3qz.xn--zca770n; ; xn--9-i0j5967eg3qz.ss; [P1, V6] # 9ê©áŸ“.ß
-𲮚9ê©\u17D3.\u200Dß; ; [C2, P1, V6]; xn--9-i0j5967eg3qz.xn--zca770n; ; xn--9-i0j5967eg3qz.ss; [P1, V6] # 9ê©áŸ“.ß
-𲮚9ê©\u17D3.\u200DSS; 𲮚9ê©\u17D3.\u200Dss; [C2, P1, V6]; xn--9-i0j5967eg3qz.xn--ss-l1t; ; xn--9-i0j5967eg3qz.ss; [P1, V6] # 9ê©áŸ“.ss
-𲮚9ê©\u17D3.\u200Dss; ; [C2, P1, V6]; xn--9-i0j5967eg3qz.xn--ss-l1t; ; xn--9-i0j5967eg3qz.ss; [P1, V6] # 9ê©áŸ“.ss
+𲮚9ê©\u17D3.\u200Dß; 𲮚9ê©\u17D3.\u200Dß; [C2, V6]; xn--9-i0j5967eg3qz.xn--zca770n; ; xn--9-i0j5967eg3qz.ss; [V6] # 9ê©áŸ“.ß
+𲮚9ê©\u17D3.\u200Dß; ; [C2, V6]; xn--9-i0j5967eg3qz.xn--zca770n; ; xn--9-i0j5967eg3qz.ss; [V6] # 9ê©áŸ“.ß
+𲮚9ê©\u17D3.\u200DSS; 𲮚9ê©\u17D3.\u200Dss; [C2, V6]; xn--9-i0j5967eg3qz.xn--ss-l1t; ; xn--9-i0j5967eg3qz.ss; [V6] # 9ê©áŸ“.ss
+𲮚9ê©\u17D3.\u200Dss; ; [C2, V6]; xn--9-i0j5967eg3qz.xn--ss-l1t; ; xn--9-i0j5967eg3qz.ss; [V6] # 9ê©áŸ“.ss
xn--9-i0j5967eg3qz.ss; 𲮚9ê©\u17D3.ss; [V6]; xn--9-i0j5967eg3qz.ss; ; ; # 9ê©áŸ“.ss
xn--9-i0j5967eg3qz.xn--ss-l1t; 𲮚9ê©\u17D3.\u200Dss; [C2, V6]; xn--9-i0j5967eg3qz.xn--ss-l1t; ; ; # 9ê©áŸ“.ss
xn--9-i0j5967eg3qz.xn--zca770n; 𲮚9ê©\u17D3.\u200Dß; [C2, V6]; xn--9-i0j5967eg3qz.xn--zca770n; ; ; # 9ê©áŸ“.ß
-𲮚9ê©\u17D3.\u200DSS; 𲮚9ê©\u17D3.\u200Dss; [C2, P1, V6]; xn--9-i0j5967eg3qz.xn--ss-l1t; ; xn--9-i0j5967eg3qz.ss; [P1, V6] # 9ê©áŸ“.ss
-𲮚9ê©\u17D3.\u200Dss; 𲮚9ê©\u17D3.\u200Dss; [C2, P1, V6]; xn--9-i0j5967eg3qz.xn--ss-l1t; ; xn--9-i0j5967eg3qz.ss; [P1, V6] # 9ê©áŸ“.ss
-𲮚9ê©\u17D3.\u200DSs; 𲮚9ê©\u17D3.\u200Dss; [C2, P1, V6]; xn--9-i0j5967eg3qz.xn--ss-l1t; ; xn--9-i0j5967eg3qz.ss; [P1, V6] # 9ê©áŸ“.ss
-𲮚9ê©\u17D3.\u200DSs; 𲮚9ê©\u17D3.\u200Dss; [C2, P1, V6]; xn--9-i0j5967eg3qz.xn--ss-l1t; ; xn--9-i0j5967eg3qz.ss; [P1, V6] # 9ê©áŸ“.ss
+𲮚9ê©\u17D3.\u200DSS; 𲮚9ê©\u17D3.\u200Dss; [C2, V6]; xn--9-i0j5967eg3qz.xn--ss-l1t; ; xn--9-i0j5967eg3qz.ss; [V6] # 9ê©áŸ“.ss
+𲮚9ê©\u17D3.\u200Dss; 𲮚9ê©\u17D3.\u200Dss; [C2, V6]; xn--9-i0j5967eg3qz.xn--ss-l1t; ; xn--9-i0j5967eg3qz.ss; [V6] # 9ê©áŸ“.ss
+𲮚9ê©\u17D3.\u200DSs; 𲮚9ê©\u17D3.\u200Dss; [C2, V6]; xn--9-i0j5967eg3qz.xn--ss-l1t; ; xn--9-i0j5967eg3qz.ss; [V6] # 9ê©áŸ“.ss
+𲮚9ê©\u17D3.\u200DSs; 𲮚9ê©\u17D3.\u200Dss; [C2, V6]; xn--9-i0j5967eg3qz.xn--ss-l1t; ; xn--9-i0j5967eg3qz.ss; [V6] # 9ê©áŸ“.ss
ꗷ𑆀.\u075Dð©’; ; ; xn--ju8a625r.xn--hpb0073k; ; ; # ꗷ𑆀.Ýð©’
xn--ju8a625r.xn--hpb0073k; ꗷ𑆀.\u075Dð©’; ; xn--ju8a625r.xn--hpb0073k; ; ; # ꗷ𑆀.Ýð©’
-â’≯-。︒ò©‘£-ñž› ; â’≯-.︒ò©‘£-ñž› ; [P1, V3, V6]; xn----ogot9g.xn----n89hl0522az9u2a; ; ; # â’≯-.︒-
-â’>\u0338-。︒ò©‘£-ñž› ; â’≯-.︒ò©‘£-ñž› ; [P1, V3, V6]; xn----ogot9g.xn----n89hl0522az9u2a; ; ; # â’≯-.︒-
-9.≯-。。򩑣-񞛠; 9.≯-..򩑣-񞛠; [P1, V3, V6, X4_2]; 9.xn----ogo..xn----xj54d1s69k; [P1, V3, V6, A4_2]; ; # 9.≯-..-
-9.>\u0338-。。򩑣-񞛠; 9.≯-..򩑣-񞛠; [P1, V3, V6, X4_2]; 9.xn----ogo..xn----xj54d1s69k; [P1, V3, V6, A4_2]; ; # 9.≯-..-
+â’≯-。︒ò©‘£-ñž› ; â’≯-.︒ò©‘£-ñž› ; [V3, V6]; xn----ogot9g.xn----n89hl0522az9u2a; ; ; # â’≯-.︒-
+â’>\u0338-。︒ò©‘£-ñž› ; â’≯-.︒ò©‘£-ñž› ; [V3, V6]; xn----ogot9g.xn----n89hl0522az9u2a; ; ; # â’≯-.︒-
+9.≯-。。򩑣-񞛠; 9.≯-..򩑣-񞛠; [V3, V6, X4_2]; 9.xn----ogo..xn----xj54d1s69k; [V3, V6, A4_2]; ; # 9.≯-..-
+9.>\u0338-。。򩑣-񞛠; 9.≯-..򩑣-񞛠; [V3, V6, X4_2]; 9.xn----ogo..xn----xj54d1s69k; [V3, V6, A4_2]; ; # 9.≯-..-
9.xn----ogo..xn----xj54d1s69k; 9.≯-..򩑣-񞛠; [V3, V6, X4_2]; 9.xn----ogo..xn----xj54d1s69k; [V3, V6, A4_2]; ; # 9.≯-..-
xn----ogot9g.xn----n89hl0522az9u2a; â’≯-.︒ò©‘£-ñž› ; [V3, V6]; xn----ogot9g.xn----n89hl0522az9u2a; ; ; # â’≯-.︒-
-òˆªš\u0CE3áƒó ¢ï¼Ž\u061D; òˆªš\u0CE3áƒó ¢.\u061D; [B6, P1, V6]; xn--vuc49qvu85xmju7a.xn--cgb; ; ; # à³£áƒ.Ø
-òˆªš\u0CE3áƒó ¢.\u061D; ; [B6, P1, V6]; xn--vuc49qvu85xmju7a.xn--cgb; ; ; # à³£áƒ.Ø
-òˆªš\u0CE3â´¡ó ¢.\u061D; ; [B6, P1, V6]; xn--vuc226n8n28lmju7a.xn--cgb; ; ; # ೣⴡ.Ø
+òˆªš\u0CE3áƒó ¢ï¼Ž\u061D; òˆªš\u0CE3áƒó ¢.\u061D; [B6, V6]; xn--vuc49qvu85xmju7a.xn--cgb; ; ; # à³£áƒ.Ø
+òˆªš\u0CE3áƒó ¢.\u061D; ; [B6, V6]; xn--vuc49qvu85xmju7a.xn--cgb; ; ; # à³£áƒ.Ø
+òˆªš\u0CE3â´¡ó ¢.\u061D; ; [B6, V6]; xn--vuc226n8n28lmju7a.xn--cgb; ; ; # ೣⴡ.Ø
xn--vuc226n8n28lmju7a.xn--cgb; òˆªš\u0CE3â´¡ó ¢.\u061D; [B6, V6]; xn--vuc226n8n28lmju7a.xn--cgb; ; ; # ೣⴡ.Ø
xn--vuc49qvu85xmju7a.xn--cgb; òˆªš\u0CE3áƒó ¢.\u061D; [B6, V6]; xn--vuc49qvu85xmju7a.xn--cgb; ; ; # à³£áƒ.Ø
-òˆªš\u0CE3â´¡ó ¢ï¼Ž\u061D; òˆªš\u0CE3â´¡ó ¢.\u061D; [B6, P1, V6]; xn--vuc226n8n28lmju7a.xn--cgb; ; ; # ೣⴡ.Ø
-\u1DEB。ð‹©\u0638-ð«®; \u1DEB.ð‹©\u0638-ð«®; [B1, B3, B6, V5]; xn--gfg.xn----xnc0815qyyg; ; ; # á·«.ð‹©Ø¸-ð«®
-xn--gfg.xn----xnc0815qyyg; \u1DEB.ð‹©\u0638-ð«®; [B1, B3, B6, V5]; xn--gfg.xn----xnc0815qyyg; ; ; # á·«.ð‹©Ø¸-ð«®
-싇。⾇ð³‹á‚½; 싇.舛ð³‹á‚½; [B5, P1, V6]; xn--9u4b.xn--1nd7519ch79d; ; ; # 싇.舛ð³‹á‚½
-싇。⾇ð³‹á‚½; 싇.舛ð³‹á‚½; [B5, P1, V6]; xn--9u4b.xn--1nd7519ch79d; ; ; # 싇.舛ð³‹á‚½
-싇。舛ð³‹á‚½; 싇.舛ð³‹á‚½; [B5, P1, V6]; xn--9u4b.xn--1nd7519ch79d; ; ; # 싇.舛ð³‹á‚½
-싇。舛ð³‹á‚½; 싇.舛ð³‹á‚½; [B5, P1, V6]; xn--9u4b.xn--1nd7519ch79d; ; ; # 싇.舛ð³‹á‚½
+òˆªš\u0CE3â´¡ó ¢ï¼Ž\u061D; òˆªš\u0CE3â´¡ó ¢.\u061D; [B6, V6]; xn--vuc226n8n28lmju7a.xn--cgb; ; ; # ೣⴡ.Ø
+\u1DEB。ð‹©\u0638-ð«®; \u1DEB.ð‹©\u0638-ð«®; [B1, V5]; xn--gfg.xn----xnc0815qyyg; ; ; # á·«.ð‹©Ø¸-ð«®
+xn--gfg.xn----xnc0815qyyg; \u1DEB.ð‹©\u0638-ð«®; [B1, V5]; xn--gfg.xn----xnc0815qyyg; ; ; # á·«.ð‹©Ø¸-ð«®
+싇。⾇ð³‹á‚½; 싇.舛ð³‹á‚½; [B5, V6]; xn--9u4b.xn--1nd7519ch79d; ; ; # 싇.舛ð³‹á‚½
+싇。⾇ð³‹á‚½; 싇.舛ð³‹á‚½; [B5, V6]; xn--9u4b.xn--1nd7519ch79d; ; ; # 싇.舛ð³‹á‚½
+싇。舛ð³‹á‚½; 싇.舛ð³‹á‚½; [B5, V6]; xn--9u4b.xn--1nd7519ch79d; ; ; # 싇.舛ð³‹á‚½
+싇。舛ð³‹á‚½; 싇.舛ð³‹á‚½; [B5, V6]; xn--9u4b.xn--1nd7519ch79d; ; ; # 싇.舛ð³‹á‚½
싇。舛ð³‹â´; 싇.舛ð³‹â´; [B5]; xn--9u4b.xn--llj123yh74e; ; ; # 싇.舛ð³‹â´
싇。舛ð³‹â´; 싇.舛ð³‹â´; [B5]; xn--9u4b.xn--llj123yh74e; ; ; # 싇.舛ð³‹â´
-싇。舛ð²‹á‚½; 싇.舛ð³‹á‚½; [B5, P1, V6]; xn--9u4b.xn--1nd7519ch79d; ; ; # 싇.舛ð³‹á‚½
-싇。舛ð²‹á‚½; 싇.舛ð³‹á‚½; [B5, P1, V6]; xn--9u4b.xn--1nd7519ch79d; ; ; # 싇.舛ð³‹á‚½
+싇。舛ð²‹á‚½; 싇.舛ð³‹á‚½; [B5, V6]; xn--9u4b.xn--1nd7519ch79d; ; ; # 싇.舛ð³‹á‚½
+싇。舛ð²‹á‚½; 싇.舛ð³‹á‚½; [B5, V6]; xn--9u4b.xn--1nd7519ch79d; ; ; # 싇.舛ð³‹á‚½
싇。舛ð²‹â´; 싇.舛ð³‹â´; [B5]; xn--9u4b.xn--llj123yh74e; ; ; # 싇.舛ð³‹â´
싇。舛ð²‹â´; 싇.舛ð³‹â´; [B5]; xn--9u4b.xn--llj123yh74e; ; ; # 싇.舛ð³‹â´
xn--9u4b.xn--llj123yh74e; 싇.舛ð³‹â´; [B5]; xn--9u4b.xn--llj123yh74e; ; ; # 싇.舛ð³‹â´
xn--9u4b.xn--1nd7519ch79d; 싇.舛ð³‹á‚½; [B5, V6]; xn--9u4b.xn--1nd7519ch79d; ; ; # 싇.舛ð³‹á‚½
싇。⾇ð³‹â´; 싇.舛ð³‹â´; [B5]; xn--9u4b.xn--llj123yh74e; ; ; # 싇.舛ð³‹â´
싇。⾇ð³‹â´; 싇.舛ð³‹â´; [B5]; xn--9u4b.xn--llj123yh74e; ; ; # 싇.舛ð³‹â´
-싇。⾇ð²‹á‚½; 싇.舛ð³‹á‚½; [B5, P1, V6]; xn--9u4b.xn--1nd7519ch79d; ; ; # 싇.舛ð³‹á‚½
-싇。⾇ð²‹á‚½; 싇.舛ð³‹á‚½; [B5, P1, V6]; xn--9u4b.xn--1nd7519ch79d; ; ; # 싇.舛ð³‹á‚½
+싇。⾇ð²‹á‚½; 싇.舛ð³‹á‚½; [B5, V6]; xn--9u4b.xn--1nd7519ch79d; ; ; # 싇.舛ð³‹á‚½
+싇。⾇ð²‹á‚½; 싇.舛ð³‹á‚½; [B5, V6]; xn--9u4b.xn--1nd7519ch79d; ; ; # 싇.舛ð³‹á‚½
싇。⾇ð²‹â´; 싇.舛ð³‹â´; [B5]; xn--9u4b.xn--llj123yh74e; ; ; # 싇.舛ð³‹â´
싇。⾇ð²‹â´; 싇.舛ð³‹â´; [B5]; xn--9u4b.xn--llj123yh74e; ; ; # 싇.舛ð³‹â´
-ð¹ Ï‚。\u200C\u06BFჀ; ð¹ Ï‚.\u200C\u06BFჀ; [B1, C1, P1, V6]; xn--3xa1267k.xn--ykb632cvxm; ; xn--4xa9167k.xn--ykb632c; [B1, B2, B3, P1, V6] # ð¹ Ï‚.ڿჀ
+ð¹ Ï‚。\u200C\u06BFჀ; ð¹ Ï‚.\u200C\u06BFჀ; [B1, C1, V6]; xn--3xa1267k.xn--ykb632cvxm; ; xn--4xa9167k.xn--ykb632c; [B1, B2, B3, V6] # ð¹ Ï‚.ڿჀ
ð¹ Ï‚。\u200C\u06BFâ´ ; ð¹ Ï‚.\u200C\u06BFâ´ ; [B1, C1]; xn--3xa1267k.xn--ykb760k9hj; ; xn--4xa9167k.xn--ykb467q; [B1, B2, B3] # ð¹ Ï‚.Ú¿â´ 
-ð¹ Î£ã€‚\u200C\u06BFჀ; ð¹ Ïƒ.\u200C\u06BFჀ; [B1, C1, P1, V6]; xn--4xa9167k.xn--ykb632cvxm; ; xn--4xa9167k.xn--ykb632c; [B1, B2, B3, P1, V6] # ð¹ Ïƒ.ڿჀ
+ð¹ Î£ã€‚\u200C\u06BFჀ; ð¹ Ïƒ.\u200C\u06BFჀ; [B1, C1, V6]; xn--4xa9167k.xn--ykb632cvxm; ; xn--4xa9167k.xn--ykb632c; [B1, B2, B3, V6] # ð¹ Ïƒ.ڿჀ
ð¹ Ïƒã€‚\u200C\u06BFâ´ ; ð¹ Ïƒ.\u200C\u06BFâ´ ; [B1, C1]; xn--4xa9167k.xn--ykb760k9hj; ; xn--4xa9167k.xn--ykb467q; [B1, B2, B3] # ð¹ Ïƒ.Ú¿â´ 
ð¹ Î£ã€‚\u200C\u06BFâ´ ; ð¹ Ïƒ.\u200C\u06BFâ´ ; [B1, C1]; xn--4xa9167k.xn--ykb760k9hj; ; xn--4xa9167k.xn--ykb467q; [B1, B2, B3] # ð¹ Ïƒ.Ú¿â´ 
xn--4xa9167k.xn--ykb467q; ð¹ Ïƒ.\u06BFâ´ ; [B1, B2, B3]; xn--4xa9167k.xn--ykb467q; ; ; # ð¹ Ïƒ.Ú¿â´ 
@@ -4331,127 +4357,127 @@ xn--4xa9167k.xn--ykb632c; ð¹ Ïƒ.\u06BFჀ; [B1, B2, B3, V6]; xn--4xa9167k.xn--y
xn--4xa9167k.xn--ykb632cvxm; ð¹ Ïƒ.\u200C\u06BFჀ; [B1, C1, V6]; xn--4xa9167k.xn--ykb632cvxm; ; ; # ð¹ Ïƒ.ڿჀ
xn--3xa1267k.xn--ykb760k9hj; ð¹ Ï‚.\u200C\u06BFâ´ ; [B1, C1]; xn--3xa1267k.xn--ykb760k9hj; ; ; # ð¹ Ï‚.Ú¿â´ 
xn--3xa1267k.xn--ykb632cvxm; ð¹ Ï‚.\u200C\u06BFჀ; [B1, C1, V6]; xn--3xa1267k.xn--ykb632cvxm; ; ; # ð¹ Ï‚.ڿჀ
-ò‡’\u200C\u0604.\u069A-ß; ; [B2, B3, B5, B6, C1, P1, V6]; xn--mfb144kqo32m.xn----qfa315b; ; xn--mfb98261i.xn---ss-sdf; [B2, B3, B5, B6, P1, V6] # .Úš-ß
-ò‡’\u200C\u0604.\u069A-SS; ò‡’\u200C\u0604.\u069A-ss; [B2, B3, B5, B6, C1, P1, V6]; xn--mfb144kqo32m.xn---ss-sdf; ; xn--mfb98261i.xn---ss-sdf; [B2, B3, B5, B6, P1, V6] # .Úš-ss
-ò‡’\u200C\u0604.\u069A-ss; ; [B2, B3, B5, B6, C1, P1, V6]; xn--mfb144kqo32m.xn---ss-sdf; ; xn--mfb98261i.xn---ss-sdf; [B2, B3, B5, B6, P1, V6] # .Úš-ss
-ò‡’\u200C\u0604.\u069A-Ss; ò‡’\u200C\u0604.\u069A-ss; [B2, B3, B5, B6, C1, P1, V6]; xn--mfb144kqo32m.xn---ss-sdf; ; xn--mfb98261i.xn---ss-sdf; [B2, B3, B5, B6, P1, V6] # .Úš-ss
+ò‡’\u200C\u0604.\u069A-ß; ; [B2, B3, B5, B6, C1, V6]; xn--mfb144kqo32m.xn----qfa315b; ; xn--mfb98261i.xn---ss-sdf; [B2, B3, B5, B6, V6] # .Úš-ß
+ò‡’\u200C\u0604.\u069A-SS; ò‡’\u200C\u0604.\u069A-ss; [B2, B3, B5, B6, C1, V6]; xn--mfb144kqo32m.xn---ss-sdf; ; xn--mfb98261i.xn---ss-sdf; [B2, B3, B5, B6, V6] # .Úš-ss
+ò‡’\u200C\u0604.\u069A-ss; ; [B2, B3, B5, B6, C1, V6]; xn--mfb144kqo32m.xn---ss-sdf; ; xn--mfb98261i.xn---ss-sdf; [B2, B3, B5, B6, V6] # .Úš-ss
+ò‡’\u200C\u0604.\u069A-Ss; ò‡’\u200C\u0604.\u069A-ss; [B2, B3, B5, B6, C1, V6]; xn--mfb144kqo32m.xn---ss-sdf; ; xn--mfb98261i.xn---ss-sdf; [B2, B3, B5, B6, V6] # .Úš-ss
xn--mfb98261i.xn---ss-sdf; ò‡’\u0604.\u069A-ss; [B2, B3, B5, B6, V6]; xn--mfb98261i.xn---ss-sdf; ; ; # .Úš-ss
xn--mfb144kqo32m.xn---ss-sdf; ò‡’\u200C\u0604.\u069A-ss; [B2, B3, B5, B6, C1, V6]; xn--mfb144kqo32m.xn---ss-sdf; ; ; # .Úš-ss
xn--mfb144kqo32m.xn----qfa315b; ò‡’\u200C\u0604.\u069A-ß; [B2, B3, B5, B6, C1, V6]; xn--mfb144kqo32m.xn----qfa315b; ; ; # .Úš-ß
-\u200C\u200D\u17B5\u067A.-\uFBB0ó…„žð¸š; \u200C\u200D\u17B5\u067A.-\u06D3ó…„žð¸š; [B1, C1, C2, P1, V3, V6]; xn--zib539f8igea.xn----twc1133r17r6g; ; xn--zib539f.xn----twc1133r17r6g; [B1, P1, V3, V5, V6] # Ùº.-Û“
-\u200C\u200D\u17B5\u067A.-\u06D3ó…„žð¸š; ; [B1, C1, C2, P1, V3, V6]; xn--zib539f8igea.xn----twc1133r17r6g; ; xn--zib539f.xn----twc1133r17r6g; [B1, P1, V3, V5, V6] # Ùº.-Û“
-\u200C\u200D\u17B5\u067A.-\u06D2\u0654ó…„žð¸š; \u200C\u200D\u17B5\u067A.-\u06D3ó…„žð¸š; [B1, C1, C2, P1, V3, V6]; xn--zib539f8igea.xn----twc1133r17r6g; ; xn--zib539f.xn----twc1133r17r6g; [B1, P1, V3, V5, V6] # Ùº.-Û“
+\u200C\u200D\u17B5\u067A.-\uFBB0ó…„žð¸š; \u200C\u200D\u17B5\u067A.-\u06D3ó…„žð¸š; [B1, C1, C2, V3, V6]; xn--zib539f8igea.xn----twc1133r17r6g; ; xn--zib539f.xn----twc1133r17r6g; [B1, V3, V5, V6] # Ùº.-Û“
+\u200C\u200D\u17B5\u067A.-\u06D3ó…„žð¸š; ; [B1, C1, C2, V3, V6]; xn--zib539f8igea.xn----twc1133r17r6g; ; xn--zib539f.xn----twc1133r17r6g; [B1, V3, V5, V6] # Ùº.-Û“
+\u200C\u200D\u17B5\u067A.-\u06D2\u0654ó…„žð¸š; \u200C\u200D\u17B5\u067A.-\u06D3ó…„žð¸š; [B1, C1, C2, V3, V6]; xn--zib539f8igea.xn----twc1133r17r6g; ; xn--zib539f.xn----twc1133r17r6g; [B1, V3, V5, V6] # Ùº.-Û“
xn--zib539f.xn----twc1133r17r6g; \u17B5\u067A.-\u06D3ó…„žð¸š; [B1, V3, V5, V6]; xn--zib539f.xn----twc1133r17r6g; ; ; # Ùº.-Û“
xn--zib539f8igea.xn----twc1133r17r6g; \u200C\u200D\u17B5\u067A.-\u06D3ó…„žð¸š; [B1, C1, C2, V3, V6]; xn--zib539f8igea.xn----twc1133r17r6g; ; ; # Ùº.-Û“
-ò¡¶±ï½¡ð®¬â‰ ; ò¡¶±.ð®¬â‰ ; [B3, P1, V6]; xn--dd55c.xn--1ch3003g; ; ; # .ð®¬â‰ 
-ò¡¶±ï½¡ð®¬=\u0338; ò¡¶±.ð®¬â‰ ; [B3, P1, V6]; xn--dd55c.xn--1ch3003g; ; ; # .ð®¬â‰ 
-ò¡¶±ã€‚ð®¬â‰ ; ò¡¶±.ð®¬â‰ ; [B3, P1, V6]; xn--dd55c.xn--1ch3003g; ; ; # .ð®¬â‰ 
-ò¡¶±ã€‚ð®¬=\u0338; ò¡¶±.ð®¬â‰ ; [B3, P1, V6]; xn--dd55c.xn--1ch3003g; ; ; # .ð®¬â‰ 
+ò¡¶±ï½¡ð®¬â‰ ; ò¡¶±.ð®¬â‰ ; [B3, V6]; xn--dd55c.xn--1ch3003g; ; ; # .ð®¬â‰ 
+ò¡¶±ï½¡ð®¬=\u0338; ò¡¶±.ð®¬â‰ ; [B3, V6]; xn--dd55c.xn--1ch3003g; ; ; # .ð®¬â‰ 
+ò¡¶±ã€‚ð®¬â‰ ; ò¡¶±.ð®¬â‰ ; [B3, V6]; xn--dd55c.xn--1ch3003g; ; ; # .ð®¬â‰ 
+ò¡¶±ã€‚ð®¬=\u0338; ò¡¶±.ð®¬â‰ ; [B3, V6]; xn--dd55c.xn--1ch3003g; ; ; # .ð®¬â‰ 
xn--dd55c.xn--1ch3003g; ò¡¶±.ð®¬â‰ ; [B3, V6]; xn--dd55c.xn--1ch3003g; ; ; # .ð®¬â‰ 
-\u0FB2𞶅。ð¹®ð¹·ëÛµ; \u0FB2𞶅.ð¹®ð¹·ëÛµ; [B1, P1, V5, V6]; xn--fgd0675v.xn--imb5839fidpcbba; ; ; # ྲ.ð¹®ð¹·ëÛµ
-\u0FB2𞶅。ð¹®ð¹·á„ƒá…¥á†°Ûµ; \u0FB2𞶅.ð¹®ð¹·ëÛµ; [B1, P1, V5, V6]; xn--fgd0675v.xn--imb5839fidpcbba; ; ; # ྲ.ð¹®ð¹·ëÛµ
-\u0FB2𞶅。ð¹®ð¹·ëÛµ; \u0FB2𞶅.ð¹®ð¹·ëÛµ; [B1, P1, V5, V6]; xn--fgd0675v.xn--imb5839fidpcbba; ; ; # ྲ.ð¹®ð¹·ëÛµ
-\u0FB2𞶅。ð¹®ð¹·á„ƒá…¥á†°Ûµ; \u0FB2𞶅.ð¹®ð¹·ëÛµ; [B1, P1, V5, V6]; xn--fgd0675v.xn--imb5839fidpcbba; ; ; # ྲ.ð¹®ð¹·ëÛµ
+\u0FB2𞶅。ð¹®ð¹·ëÛµ; \u0FB2𞶅.ð¹®ð¹·ëÛµ; [B1, V5, V6]; xn--fgd0675v.xn--imb5839fidpcbba; ; ; # ྲ.ð¹®ð¹·ëÛµ
+\u0FB2𞶅。ð¹®ð¹·á„ƒá…¥á†°Ûµ; \u0FB2𞶅.ð¹®ð¹·ëÛµ; [B1, V5, V6]; xn--fgd0675v.xn--imb5839fidpcbba; ; ; # ྲ.ð¹®ð¹·ëÛµ
+\u0FB2𞶅。ð¹®ð¹·ëÛµ; \u0FB2𞶅.ð¹®ð¹·ëÛµ; [B1, V5, V6]; xn--fgd0675v.xn--imb5839fidpcbba; ; ; # ྲ.ð¹®ð¹·ëÛµ
+\u0FB2𞶅。ð¹®ð¹·á„ƒá…¥á†°Ûµ; \u0FB2𞶅.ð¹®ð¹·ëÛµ; [B1, V5, V6]; xn--fgd0675v.xn--imb5839fidpcbba; ; ; # ྲ.ð¹®ð¹·ëÛµ
xn--fgd0675v.xn--imb5839fidpcbba; \u0FB2𞶅.ð¹®ð¹·ëÛµ; [B1, V5, V6]; xn--fgd0675v.xn--imb5839fidpcbba; ; ; # ྲ.ð¹®ð¹·ëÛµ
-Ⴏ󠅋-.\u200DႩ; Ⴏ-.\u200DႩ; [C2, P1, V3, V6]; xn----00g.xn--hnd399e; ; xn----00g.xn--hnd; [P1, V3, V6] # Ⴏ-.Ⴉ
-Ⴏ󠅋-.\u200DႩ; Ⴏ-.\u200DႩ; [C2, P1, V3, V6]; xn----00g.xn--hnd399e; ; xn----00g.xn--hnd; [P1, V3, V6] # Ⴏ-.Ⴉ
+Ⴏ󠅋-.\u200DႩ; Ⴏ-.\u200DႩ; [C2, V3, V6]; xn----00g.xn--hnd399e; ; xn----00g.xn--hnd; [V3, V6] # Ⴏ-.Ⴉ
+Ⴏ󠅋-.\u200DႩ; Ⴏ-.\u200DႩ; [C2, V3, V6]; xn----00g.xn--hnd399e; ; xn----00g.xn--hnd; [V3, V6] # Ⴏ-.Ⴉ
â´ó …‹-.\u200Dâ´‰; â´-.\u200Dâ´‰; [C2, V3]; xn----3vs.xn--1ug532c; ; xn----3vs.xn--0kj; [V3] # â´-.â´‰
xn----3vs.xn--0kj; â´-.â´‰; [V3]; xn----3vs.xn--0kj; ; ; # â´-.â´‰
xn----3vs.xn--1ug532c; â´-.\u200Dâ´‰; [C2, V3]; xn----3vs.xn--1ug532c; ; ; # â´-.â´‰
xn----00g.xn--hnd; Ⴏ-.Ⴉ; [V3, V6]; xn----00g.xn--hnd; ; ; # Ⴏ-.Ⴉ
xn----00g.xn--hnd399e; Ⴏ-.\u200DႩ; [C2, V3, V6]; xn----00g.xn--hnd399e; ; ; # Ⴏ-.Ⴉ
â´ó …‹-.\u200Dâ´‰; â´-.\u200Dâ´‰; [C2, V3]; xn----3vs.xn--1ug532c; ; xn----3vs.xn--0kj; [V3] # â´-.â´‰
-⇧ð¨ó ¾ˆó¯¶…。\u0600󠈵󠆉; ⇧ð¨ó ¾ˆó¯¶….\u0600󠈵; [B1, P1, V6]; xn--l8g5552g64t4g46xf.xn--ifb08144p; ; ; # ⇧ð¨.
+⇧ð¨ó ¾ˆó¯¶…。\u0600󠈵󠆉; ⇧ð¨ó ¾ˆó¯¶….\u0600󠈵; [B1, V6]; xn--l8g5552g64t4g46xf.xn--ifb08144p; ; ; # ⇧ð¨.
xn--l8g5552g64t4g46xf.xn--ifb08144p; ⇧ð¨ó ¾ˆó¯¶….\u0600󠈵; [B1, V6]; xn--l8g5552g64t4g46xf.xn--ifb08144p; ; ; # ⇧ð¨.
-≠ð®‚.↑🄇⒈; ; [B1, P1, V6]; xn--1chy492g.xn--45gx9iuy44d; ; ; # ≠ð®‚.↑🄇⒈
-=\u0338ð®‚.↑🄇⒈; ≠ð®‚.↑🄇⒈; [B1, P1, V6]; xn--1chy492g.xn--45gx9iuy44d; ; ; # ≠ð®‚.↑🄇⒈
-≠ð®‚.↑6,1.; ; [B1, P1, V6]; xn--1chy492g.xn--6,1-pw1a.; ; ; # ≠ð®‚.↑6,1.
-=\u0338ð®‚.↑6,1.; ≠ð®‚.↑6,1.; [B1, P1, V6]; xn--1chy492g.xn--6,1-pw1a.; ; ; # ≠ð®‚.↑6,1.
-xn--1chy492g.xn--6,1-pw1a.; ≠ð®‚.↑6,1.; [B1, P1, V6]; xn--1chy492g.xn--6,1-pw1a.; ; ; # ≠ð®‚.↑6,1.
+≠ð®‚.↑🄇⒈; ; [B1, V6]; xn--1chy492g.xn--45gx9iuy44d; ; ; # ≠ð®‚.↑🄇⒈
+=\u0338ð®‚.↑🄇⒈; ≠ð®‚.↑🄇⒈; [B1, V6]; xn--1chy492g.xn--45gx9iuy44d; ; ; # ≠ð®‚.↑🄇⒈
+≠ð®‚.↑6,1.; ; [B1, V6]; xn--1chy492g.xn--6,1-pw1a.; ; ; # ≠ð®‚.↑6,1.
+=\u0338ð®‚.↑6,1.; ≠ð®‚.↑6,1.; [B1, V6]; xn--1chy492g.xn--6,1-pw1a.; ; ; # ≠ð®‚.↑6,1.
+xn--1chy492g.xn--6,1-pw1a.; ≠ð®‚.↑6,1.; [B1, V6]; xn--1chy492g.xn--6,1-pw1a.; ; ; # ≠ð®‚.↑6,1.
xn--1chy492g.xn--45gx9iuy44d; ≠ð®‚.↑🄇⒈; [B1, V6]; xn--1chy492g.xn--45gx9iuy44d; ; ; # ≠ð®‚.↑🄇⒈
-ð©ó ²‰ÃŸ.ᢤò„¦Œ\u200Cð¹«; ; [B1, B5, B6, C1, P1, V5, V6]; xn--zca3153vupz3e.xn--ubf609atw1tynn3d; ; xn--ss-zb11ap1427e.xn--ubf2596jbt61c; [B1, B5, B6, P1, V5, V6] # ð©ÃŸ.ᢤð¹«
-ð©ó ²‰SS.ᢤò„¦Œ\u200Cð¹«; ð©ó ²‰ss.ᢤò„¦Œ\u200Cð¹«; [B1, B5, B6, C1, P1, V5, V6]; xn--ss-zb11ap1427e.xn--ubf609atw1tynn3d; ; xn--ss-zb11ap1427e.xn--ubf2596jbt61c; [B1, B5, B6, P1, V5, V6] # ð©ss.ᢤð¹«
-ð©ó ²‰ss.ᢤò„¦Œ\u200Cð¹«; ; [B1, B5, B6, C1, P1, V5, V6]; xn--ss-zb11ap1427e.xn--ubf609atw1tynn3d; ; xn--ss-zb11ap1427e.xn--ubf2596jbt61c; [B1, B5, B6, P1, V5, V6] # ð©ss.ᢤð¹«
-ð©ó ²‰Ss.ᢤò„¦Œ\u200Cð¹«; ð©ó ²‰ss.ᢤò„¦Œ\u200Cð¹«; [B1, B5, B6, C1, P1, V5, V6]; xn--ss-zb11ap1427e.xn--ubf609atw1tynn3d; ; xn--ss-zb11ap1427e.xn--ubf2596jbt61c; [B1, B5, B6, P1, V5, V6] # ð©ss.ᢤð¹«
+ð©ó ²‰ÃŸ.ᢤò„¦Œ\u200Cð¹«; ; [B1, B5, B6, C1, V5, V6]; xn--zca3153vupz3e.xn--ubf609atw1tynn3d; ; xn--ss-zb11ap1427e.xn--ubf2596jbt61c; [B1, B5, B6, V5, V6] # ð©ÃŸ.ᢤð¹«
+ð©ó ²‰SS.ᢤò„¦Œ\u200Cð¹«; ð©ó ²‰ss.ᢤò„¦Œ\u200Cð¹«; [B1, B5, B6, C1, V5, V6]; xn--ss-zb11ap1427e.xn--ubf609atw1tynn3d; ; xn--ss-zb11ap1427e.xn--ubf2596jbt61c; [B1, B5, B6, V5, V6] # ð©ss.ᢤð¹«
+ð©ó ²‰ss.ᢤò„¦Œ\u200Cð¹«; ; [B1, B5, B6, C1, V5, V6]; xn--ss-zb11ap1427e.xn--ubf609atw1tynn3d; ; xn--ss-zb11ap1427e.xn--ubf2596jbt61c; [B1, B5, B6, V5, V6] # ð©ss.ᢤð¹«
+ð©ó ²‰Ss.ᢤò„¦Œ\u200Cð¹«; ð©ó ²‰ss.ᢤò„¦Œ\u200Cð¹«; [B1, B5, B6, C1, V5, V6]; xn--ss-zb11ap1427e.xn--ubf609atw1tynn3d; ; xn--ss-zb11ap1427e.xn--ubf2596jbt61c; [B1, B5, B6, V5, V6] # ð©ss.ᢤð¹«
xn--ss-zb11ap1427e.xn--ubf2596jbt61c; ð©ó ²‰ss.ᢤò„¦Œð¹«; [B1, B5, B6, V5, V6]; xn--ss-zb11ap1427e.xn--ubf2596jbt61c; ; ; # ð©ss.ᢤð¹«
xn--ss-zb11ap1427e.xn--ubf609atw1tynn3d; ð©ó ²‰ss.ᢤò„¦Œ\u200Cð¹«; [B1, B5, B6, C1, V5, V6]; xn--ss-zb11ap1427e.xn--ubf609atw1tynn3d; ; ; # ð©ss.ᢤð¹«
xn--zca3153vupz3e.xn--ubf609atw1tynn3d; ð©ó ²‰ÃŸ.ᢤò„¦Œ\u200Cð¹«; [B1, B5, B6, C1, V5, V6]; xn--zca3153vupz3e.xn--ubf609atw1tynn3d; ; ; # ð©ÃŸ.ᢤð¹«
-ßðµ³ñ—˜á‚§ï½¡\uA67A; ßðµ³ñ—˜á‚§.\uA67A; [B1, B3, B5, B6, P1, V5, V6]; xn--zca491fci5qkn79a.xn--9x8a; ; xn--ss-rek7420r4hs7b.xn--9x8a; # ßႧ.ꙺ
-ßðµ³ñ—˜á‚§ã€‚\uA67A; ßðµ³ñ—˜á‚§.\uA67A; [B1, B3, B5, B6, P1, V5, V6]; xn--zca491fci5qkn79a.xn--9x8a; ; xn--ss-rek7420r4hs7b.xn--9x8a; # ßႧ.ꙺ
-ßðµ³ñ—˜â´‡ã€‚\uA67A; ßðµ³ñ—˜â´‡.\uA67A; [B1, B3, B5, B6, P1, V5, V6]; xn--zca227tpy4lkns1b.xn--9x8a; ; xn--ss-e61ar955h4hs7b.xn--9x8a; # ßⴇ.ꙺ
-SSðµ³ñ—˜á‚§ã€‚\uA67A; ssðµ³ñ—˜á‚§.\uA67A; [B1, B3, B5, B6, P1, V5, V6]; xn--ss-rek7420r4hs7b.xn--9x8a; ; ; # ssႧ.ꙺ
-ssðµ³ñ—˜â´‡ã€‚\uA67A; ssðµ³ñ—˜â´‡.\uA67A; [B1, B3, B5, B6, P1, V5, V6]; xn--ss-e61ar955h4hs7b.xn--9x8a; ; ; # ssâ´‡.ꙺ
-Ssðµ³ñ—˜á‚§ã€‚\uA67A; ssðµ³ñ—˜á‚§.\uA67A; [B1, B3, B5, B6, P1, V5, V6]; xn--ss-rek7420r4hs7b.xn--9x8a; ; ; # ssႧ.ꙺ
-xn--ss-rek7420r4hs7b.xn--9x8a; ssðµ³ñ—˜á‚§.\uA67A; [B1, B3, B5, B6, V5, V6]; xn--ss-rek7420r4hs7b.xn--9x8a; ; ; # ssႧ.ꙺ
-xn--ss-e61ar955h4hs7b.xn--9x8a; ssðµ³ñ—˜â´‡.\uA67A; [B1, B3, B5, B6, V5, V6]; xn--ss-e61ar955h4hs7b.xn--9x8a; ; ; # ssâ´‡.ꙺ
-xn--zca227tpy4lkns1b.xn--9x8a; ßðµ³ñ—˜â´‡.\uA67A; [B1, B3, B5, B6, V5, V6]; xn--zca227tpy4lkns1b.xn--9x8a; ; ; # ßⴇ.ꙺ
-xn--zca491fci5qkn79a.xn--9x8a; ßðµ³ñ—˜á‚§.\uA67A; [B1, B3, B5, B6, V5, V6]; xn--zca491fci5qkn79a.xn--9x8a; ; ; # ßႧ.ꙺ
-ßðµ³ñ—˜â´‡ï½¡\uA67A; ßðµ³ñ—˜â´‡.\uA67A; [B1, B3, B5, B6, P1, V5, V6]; xn--zca227tpy4lkns1b.xn--9x8a; ; xn--ss-e61ar955h4hs7b.xn--9x8a; # ßⴇ.ꙺ
-SSðµ³ñ—˜á‚§ï½¡\uA67A; ssðµ³ñ—˜á‚§.\uA67A; [B1, B3, B5, B6, P1, V5, V6]; xn--ss-rek7420r4hs7b.xn--9x8a; ; ; # ssႧ.ꙺ
-ssðµ³ñ—˜â´‡ï½¡\uA67A; ssðµ³ñ—˜â´‡.\uA67A; [B1, B3, B5, B6, P1, V5, V6]; xn--ss-e61ar955h4hs7b.xn--9x8a; ; ; # ssâ´‡.ꙺ
-Ssðµ³ñ—˜á‚§ï½¡\uA67A; ssðµ³ñ—˜á‚§.\uA67A; [B1, B3, B5, B6, P1, V5, V6]; xn--ss-rek7420r4hs7b.xn--9x8a; ; ; # ssႧ.ꙺ
+ßðµ³ñ—˜á‚§ï½¡\uA67A; ßðµ³ñ—˜á‚§.\uA67A; [B1, B5, V5, V6]; xn--zca491fci5qkn79a.xn--9x8a; ; xn--ss-rek7420r4hs7b.xn--9x8a; # ßႧ.ꙺ
+ßðµ³ñ—˜á‚§ã€‚\uA67A; ßðµ³ñ—˜á‚§.\uA67A; [B1, B5, V5, V6]; xn--zca491fci5qkn79a.xn--9x8a; ; xn--ss-rek7420r4hs7b.xn--9x8a; # ßႧ.ꙺ
+ßðµ³ñ—˜â´‡ã€‚\uA67A; ßðµ³ñ—˜â´‡.\uA67A; [B1, B5, V5, V6]; xn--zca227tpy4lkns1b.xn--9x8a; ; xn--ss-e61ar955h4hs7b.xn--9x8a; # ßⴇ.ꙺ
+SSðµ³ñ—˜á‚§ã€‚\uA67A; ssðµ³ñ—˜á‚§.\uA67A; [B1, B5, V5, V6]; xn--ss-rek7420r4hs7b.xn--9x8a; ; ; # ssႧ.ꙺ
+ssðµ³ñ—˜â´‡ã€‚\uA67A; ssðµ³ñ—˜â´‡.\uA67A; [B1, B5, V5, V6]; xn--ss-e61ar955h4hs7b.xn--9x8a; ; ; # ssâ´‡.ꙺ
+Ssðµ³ñ—˜á‚§ã€‚\uA67A; ssðµ³ñ—˜á‚§.\uA67A; [B1, B5, V5, V6]; xn--ss-rek7420r4hs7b.xn--9x8a; ; ; # ssႧ.ꙺ
+xn--ss-rek7420r4hs7b.xn--9x8a; ssðµ³ñ—˜á‚§.\uA67A; [B1, B5, V5, V6]; xn--ss-rek7420r4hs7b.xn--9x8a; ; ; # ssႧ.ꙺ
+xn--ss-e61ar955h4hs7b.xn--9x8a; ssðµ³ñ—˜â´‡.\uA67A; [B1, B5, V5, V6]; xn--ss-e61ar955h4hs7b.xn--9x8a; ; ; # ssâ´‡.ꙺ
+xn--zca227tpy4lkns1b.xn--9x8a; ßðµ³ñ—˜â´‡.\uA67A; [B1, B5, V5, V6]; xn--zca227tpy4lkns1b.xn--9x8a; ; ; # ßⴇ.ꙺ
+xn--zca491fci5qkn79a.xn--9x8a; ßðµ³ñ—˜á‚§.\uA67A; [B1, B5, V5, V6]; xn--zca491fci5qkn79a.xn--9x8a; ; ; # ßႧ.ꙺ
+ßðµ³ñ—˜â´‡ï½¡\uA67A; ßðµ³ñ—˜â´‡.\uA67A; [B1, B5, V5, V6]; xn--zca227tpy4lkns1b.xn--9x8a; ; xn--ss-e61ar955h4hs7b.xn--9x8a; # ßⴇ.ꙺ
+SSðµ³ñ—˜á‚§ï½¡\uA67A; ssðµ³ñ—˜á‚§.\uA67A; [B1, B5, V5, V6]; xn--ss-rek7420r4hs7b.xn--9x8a; ; ; # ssႧ.ꙺ
+ssðµ³ñ—˜â´‡ï½¡\uA67A; ssðµ³ñ—˜â´‡.\uA67A; [B1, B5, V5, V6]; xn--ss-e61ar955h4hs7b.xn--9x8a; ; ; # ssâ´‡.ꙺ
+Ssðµ³ñ—˜á‚§ï½¡\uA67A; ssðµ³ñ—˜á‚§.\uA67A; [B1, B5, V5, V6]; xn--ss-rek7420r4hs7b.xn--9x8a; ; ; # ssႧ.ꙺ
\u1714。󠆣-𑋪; \u1714.-𑋪; [V3, V5]; xn--fze.xn----ly8i; ; ; # ᜔.-𑋪
xn--fze.xn----ly8i; \u1714.-𑋪; [V3, V5]; xn--fze.xn----ly8i; ; ; # ᜔.-𑋪
-\uABE8-.ò¨œ\u05BDß; \uABE8-.ò¨œ\u05BDß; [P1, V3, V5, V6]; xn----pw5e.xn--zca50wfv060a; ; xn----pw5e.xn--ss-7jd10716y; # ꯨ-.ֽß
-\uABE8-.ò¨œ\u05BDß; ; [P1, V3, V5, V6]; xn----pw5e.xn--zca50wfv060a; ; xn----pw5e.xn--ss-7jd10716y; # ꯨ-.ֽß
-\uABE8-.ò¨œ\u05BDSS; \uABE8-.ò¨œ\u05BDss; [P1, V3, V5, V6]; xn----pw5e.xn--ss-7jd10716y; ; ; # ꯨ-.Ö½ss
-\uABE8-.ò¨œ\u05BDss; ; [P1, V3, V5, V6]; xn----pw5e.xn--ss-7jd10716y; ; ; # ꯨ-.Ö½ss
-\uABE8-.ò¨œ\u05BDSs; \uABE8-.ò¨œ\u05BDss; [P1, V3, V5, V6]; xn----pw5e.xn--ss-7jd10716y; ; ; # ꯨ-.Ö½ss
+\uABE8-.ò¨œ\u05BDß; \uABE8-.ò¨œ\u05BDß; [V3, V5, V6]; xn----pw5e.xn--zca50wfv060a; ; xn----pw5e.xn--ss-7jd10716y; # ꯨ-.ֽß
+\uABE8-.ò¨œ\u05BDß; ; [V3, V5, V6]; xn----pw5e.xn--zca50wfv060a; ; xn----pw5e.xn--ss-7jd10716y; # ꯨ-.ֽß
+\uABE8-.ò¨œ\u05BDSS; \uABE8-.ò¨œ\u05BDss; [V3, V5, V6]; xn----pw5e.xn--ss-7jd10716y; ; ; # ꯨ-.Ö½ss
+\uABE8-.ò¨œ\u05BDss; ; [V3, V5, V6]; xn----pw5e.xn--ss-7jd10716y; ; ; # ꯨ-.Ö½ss
+\uABE8-.ò¨œ\u05BDSs; \uABE8-.ò¨œ\u05BDss; [V3, V5, V6]; xn----pw5e.xn--ss-7jd10716y; ; ; # ꯨ-.Ö½ss
xn----pw5e.xn--ss-7jd10716y; \uABE8-.ò¨œ\u05BDss; [V3, V5, V6]; xn----pw5e.xn--ss-7jd10716y; ; ; # ꯨ-.Ö½ss
xn----pw5e.xn--zca50wfv060a; \uABE8-.ò¨œ\u05BDß; [V3, V5, V6]; xn----pw5e.xn--zca50wfv060a; ; ; # ꯨ-.ֽß
-\uABE8-.ò¨œ\u05BDSS; \uABE8-.ò¨œ\u05BDss; [P1, V3, V5, V6]; xn----pw5e.xn--ss-7jd10716y; ; ; # ꯨ-.Ö½ss
-\uABE8-.ò¨œ\u05BDss; \uABE8-.ò¨œ\u05BDss; [P1, V3, V5, V6]; xn----pw5e.xn--ss-7jd10716y; ; ; # ꯨ-.Ö½ss
-\uABE8-.ò¨œ\u05BDSs; \uABE8-.ò¨œ\u05BDss; [P1, V3, V5, V6]; xn----pw5e.xn--ss-7jd10716y; ; ; # ꯨ-.Ö½ss
-ᡓ-≮。\u066B󠅱ᡄ; ᡓ-≮.\u066Bᡄ; [B1, B6, P1, V6]; xn----s7j866c.xn--kib252g; ; ; # ᡓ-≮.٫ᡄ
-ᡓ-<\u0338。\u066B󠅱ᡄ; ᡓ-≮.\u066Bᡄ; [B1, B6, P1, V6]; xn----s7j866c.xn--kib252g; ; ; # ᡓ-≮.٫ᡄ
-xn----s7j866c.xn--kib252g; ᡓ-≮.\u066Bᡄ; [B1, B6, V6]; xn----s7j866c.xn--kib252g; ; ; # ᡓ-≮.٫ᡄ
+\uABE8-.ò¨œ\u05BDSS; \uABE8-.ò¨œ\u05BDss; [V3, V5, V6]; xn----pw5e.xn--ss-7jd10716y; ; ; # ꯨ-.Ö½ss
+\uABE8-.ò¨œ\u05BDss; \uABE8-.ò¨œ\u05BDss; [V3, V5, V6]; xn----pw5e.xn--ss-7jd10716y; ; ; # ꯨ-.Ö½ss
+\uABE8-.ò¨œ\u05BDSs; \uABE8-.ò¨œ\u05BDss; [V3, V5, V6]; xn----pw5e.xn--ss-7jd10716y; ; ; # ꯨ-.Ö½ss
+ᡓ-≮。\u066B󠅱ᡄ; ᡓ-≮.\u066Bᡄ; [B1, B6]; xn----s7j866c.xn--kib252g; ; ; # ᡓ-≮.٫ᡄ
+ᡓ-<\u0338。\u066B󠅱ᡄ; ᡓ-≮.\u066Bᡄ; [B1, B6]; xn----s7j866c.xn--kib252g; ; ; # ᡓ-≮.٫ᡄ
+xn----s7j866c.xn--kib252g; ᡓ-≮.\u066Bᡄ; [B1, B6]; xn----s7j866c.xn--kib252g; ; ; # ᡓ-≮.٫ᡄ
ðŸ¥â™®ð‘œ«\u08ED.\u17D2𑜫8ó †; 3♮𑜫\u08ED.\u17D2𑜫8; [V5]; xn--3-ksd277tlo7s.xn--8-f0jx021l; ; ; # 3♮𑜫࣭.្𑜫8
3♮𑜫\u08ED.\u17D2𑜫8ó †; 3♮𑜫\u08ED.\u17D2𑜫8; [V5]; xn--3-ksd277tlo7s.xn--8-f0jx021l; ; ; # 3♮𑜫࣭.្𑜫8
xn--3-ksd277tlo7s.xn--8-f0jx021l; 3♮𑜫\u08ED.\u17D2𑜫8; [V5]; xn--3-ksd277tlo7s.xn--8-f0jx021l; ; ; # 3♮𑜫࣭.្𑜫8
--。ò•Œ€\u200Dâ¡; -.ò•Œ€\u200Dâ¡; [C2, P1, V3, V6]; -.xn--1ug800aq795s; ; -.xn--nei54421f; [P1, V3, V6] # -.â¡
--。ò•Œ€\u200Dâ¡; -.ò•Œ€\u200Dâ¡; [C2, P1, V3, V6]; -.xn--1ug800aq795s; ; -.xn--nei54421f; [P1, V3, V6] # -.â¡
+-。ò•Œ€\u200Dâ¡; -.ò•Œ€\u200Dâ¡; [C2, V3, V6]; -.xn--1ug800aq795s; ; -.xn--nei54421f; [V3, V6] # -.â¡
+-。ò•Œ€\u200Dâ¡; -.ò•Œ€\u200Dâ¡; [C2, V3, V6]; -.xn--1ug800aq795s; ; -.xn--nei54421f; [V3, V6] # -.â¡
-.xn--nei54421f; -.ò•Œ€â¡; [V3, V6]; -.xn--nei54421f; ; ; # -.â¡
-.xn--1ug800aq795s; -.ò•Œ€\u200Dâ¡; [C2, V3, V6]; -.xn--1ug800aq795s; ; ; # -.â¡
-ðŸ“☱ðŸò¥°µï½¡ðª®ñ¡³; 5☱2ò¥°µ.ðª®ñ¡³; [P1, V5, V6]; xn--52-dwx47758j.xn--kd3hk431k; ; ; # 5☱2.ðª®
-5☱2ò¥°µã€‚ðª®ñ¡³; 5☱2ò¥°µ.ðª®ñ¡³; [P1, V5, V6]; xn--52-dwx47758j.xn--kd3hk431k; ; ; # 5☱2.ðª®
+ðŸ“☱ðŸò¥°µï½¡ðª®ñ¡³; 5☱2ò¥°µ.ðª®ñ¡³; [V5, V6]; xn--52-dwx47758j.xn--kd3hk431k; ; ; # 5☱2.ðª®
+5☱2ò¥°µã€‚ðª®ñ¡³; 5☱2ò¥°µ.ðª®ñ¡³; [V5, V6]; xn--52-dwx47758j.xn--kd3hk431k; ; ; # 5☱2.ðª®
xn--52-dwx47758j.xn--kd3hk431k; 5☱2ò¥°µ.ðª®ñ¡³; [V5, V6]; xn--52-dwx47758j.xn--kd3hk431k; ; ; # 5☱2.ðª®
--.-├򖦣; ; [P1, V3, V6]; -.xn----ukp70432h; ; ; # -.-├
+-.-├򖦣; ; [V3, V6]; -.xn----ukp70432h; ; ; # -.-├
-.xn----ukp70432h; -.-├򖦣; [V3, V6]; -.xn----ukp70432h; ; ; # -.-├
-\u05A5\u076D。\u200D󠀘; \u05A5\u076D.\u200D󠀘; [B1, C2, P1, V5, V6]; xn--wcb62g.xn--1ugy8001l; ; xn--wcb62g.xn--p526e; [B1, P1, V5, V6] # ֥ݭ.
-\u05A5\u076D。\u200D󠀘; \u05A5\u076D.\u200D󠀘; [B1, C2, P1, V5, V6]; xn--wcb62g.xn--1ugy8001l; ; xn--wcb62g.xn--p526e; [B1, P1, V5, V6] # ֥ݭ.
+\u05A5\u076D。\u200D󠀘; \u05A5\u076D.\u200D󠀘; [B1, C2, V5, V6]; xn--wcb62g.xn--1ugy8001l; ; xn--wcb62g.xn--p526e; [B1, V5, V6] # ֥ݭ.
+\u05A5\u076D。\u200D󠀘; \u05A5\u076D.\u200D󠀘; [B1, C2, V5, V6]; xn--wcb62g.xn--1ugy8001l; ; xn--wcb62g.xn--p526e; [B1, V5, V6] # ֥ݭ.
xn--wcb62g.xn--p526e; \u05A5\u076D.󠀘; [B1, V5, V6]; xn--wcb62g.xn--p526e; ; ; # ֥ݭ.
xn--wcb62g.xn--1ugy8001l; \u05A5\u076D.\u200D󠀘; [B1, C2, V5, V6]; xn--wcb62g.xn--1ugy8001l; ; ; # ֥ݭ.
-쥥ó”‰á‚®ï¼Ž\u200C⒈⒈ð«’; 쥥ó”‰á‚®.\u200C⒈⒈ð«’; [B1, C1, P1, V6]; xn--mnd7865gcy28g.xn--0ug88oa0396u; ; xn--mnd7865gcy28g.xn--tsha6797o; [B1, P1, V6] # 쥥Ⴎ.⒈⒈ð«’
-쥥ó”‰á‚®ï¼Ž\u200C⒈⒈ð«’; 쥥ó”‰á‚®.\u200C⒈⒈ð«’; [B1, C1, P1, V6]; xn--mnd7865gcy28g.xn--0ug88oa0396u; ; xn--mnd7865gcy28g.xn--tsha6797o; [B1, P1, V6] # 쥥Ⴎ.⒈⒈ð«’
-쥥ó”‰á‚®.\u200C1.1.ð«’; ; [B1, C1, P1, V6]; xn--mnd7865gcy28g.xn--1-rgn.1.xn--7w9c; ; xn--mnd7865gcy28g.1.1.xn--7w9c; [B1, P1, V6] # 쥥Ⴎ.1.1.ð«’
-쥥ó”‰á‚®.\u200C1.1.ð«’; 쥥ó”‰á‚®.\u200C1.1.ð«’; [B1, C1, P1, V6]; xn--mnd7865gcy28g.xn--1-rgn.1.xn--7w9c; ; xn--mnd7865gcy28g.1.1.xn--7w9c; [B1, P1, V6] # 쥥Ⴎ.1.1.ð«’
-쥥ó”‰â´Ž.\u200C1.1.ð«’; 쥥ó”‰â´Ž.\u200C1.1.ð«’; [B1, C1, P1, V6]; xn--5kj3511ccyw3h.xn--1-rgn.1.xn--7w9c; ; xn--5kj3511ccyw3h.1.1.xn--7w9c; [B1, P1, V6] # 쥥ⴎ.1.1.ð«’
-쥥ó”‰â´Ž.\u200C1.1.ð«’; ; [B1, C1, P1, V6]; xn--5kj3511ccyw3h.xn--1-rgn.1.xn--7w9c; ; xn--5kj3511ccyw3h.1.1.xn--7w9c; [B1, P1, V6] # 쥥ⴎ.1.1.ð«’
+쥥ó”‰á‚®ï¼Ž\u200C⒈⒈ð«’; 쥥ó”‰á‚®.\u200C⒈⒈ð«’; [B1, C1, V6]; xn--mnd7865gcy28g.xn--0ug88oa0396u; ; xn--mnd7865gcy28g.xn--tsha6797o; [B1, V6] # 쥥Ⴎ.⒈⒈ð«’
+쥥ó”‰á‚®ï¼Ž\u200C⒈⒈ð«’; 쥥ó”‰á‚®.\u200C⒈⒈ð«’; [B1, C1, V6]; xn--mnd7865gcy28g.xn--0ug88oa0396u; ; xn--mnd7865gcy28g.xn--tsha6797o; [B1, V6] # 쥥Ⴎ.⒈⒈ð«’
+쥥ó”‰á‚®.\u200C1.1.ð«’; ; [B1, C1, V6]; xn--mnd7865gcy28g.xn--1-rgn.1.xn--7w9c; ; xn--mnd7865gcy28g.1.1.xn--7w9c; [B1, V6] # 쥥Ⴎ.1.1.ð«’
+쥥ó”‰á‚®.\u200C1.1.ð«’; 쥥ó”‰á‚®.\u200C1.1.ð«’; [B1, C1, V6]; xn--mnd7865gcy28g.xn--1-rgn.1.xn--7w9c; ; xn--mnd7865gcy28g.1.1.xn--7w9c; [B1, V6] # 쥥Ⴎ.1.1.ð«’
+쥥ó”‰â´Ž.\u200C1.1.ð«’; 쥥ó”‰â´Ž.\u200C1.1.ð«’; [B1, C1, V6]; xn--5kj3511ccyw3h.xn--1-rgn.1.xn--7w9c; ; xn--5kj3511ccyw3h.1.1.xn--7w9c; [B1, V6] # 쥥ⴎ.1.1.ð«’
+쥥ó”‰â´Ž.\u200C1.1.ð«’; ; [B1, C1, V6]; xn--5kj3511ccyw3h.xn--1-rgn.1.xn--7w9c; ; xn--5kj3511ccyw3h.1.1.xn--7w9c; [B1, V6] # 쥥ⴎ.1.1.ð«’
xn--5kj3511ccyw3h.1.1.xn--7w9c; 쥥ó”‰â´Ž.1.1.ð«’; [B1, V6]; xn--5kj3511ccyw3h.1.1.xn--7w9c; ; ; # 쥥ⴎ.1.1.ð«’
xn--5kj3511ccyw3h.xn--1-rgn.1.xn--7w9c; 쥥ó”‰â´Ž.\u200C1.1.ð«’; [B1, C1, V6]; xn--5kj3511ccyw3h.xn--1-rgn.1.xn--7w9c; ; ; # 쥥ⴎ.1.1.ð«’
xn--mnd7865gcy28g.1.1.xn--7w9c; 쥥ó”‰á‚®.1.1.ð«’; [B1, V6]; xn--mnd7865gcy28g.1.1.xn--7w9c; ; ; # 쥥Ⴎ.1.1.ð«’
xn--mnd7865gcy28g.xn--1-rgn.1.xn--7w9c; 쥥ó”‰á‚®.\u200C1.1.ð«’; [B1, C1, V6]; xn--mnd7865gcy28g.xn--1-rgn.1.xn--7w9c; ; ; # 쥥Ⴎ.1.1.ð«’
-쥥ó”‰â´Žï¼Ž\u200C⒈⒈ð«’; 쥥ó”‰â´Ž.\u200C⒈⒈ð«’; [B1, C1, P1, V6]; xn--5kj3511ccyw3h.xn--0ug88oa0396u; ; xn--5kj3511ccyw3h.xn--tsha6797o; [B1, P1, V6] # 쥥ⴎ.⒈⒈ð«’
-쥥ó”‰â´Žï¼Ž\u200C⒈⒈ð«’; 쥥ó”‰â´Ž.\u200C⒈⒈ð«’; [B1, C1, P1, V6]; xn--5kj3511ccyw3h.xn--0ug88oa0396u; ; xn--5kj3511ccyw3h.xn--tsha6797o; [B1, P1, V6] # 쥥ⴎ.⒈⒈ð«’
+쥥ó”‰â´Žï¼Ž\u200C⒈⒈ð«’; 쥥ó”‰â´Ž.\u200C⒈⒈ð«’; [B1, C1, V6]; xn--5kj3511ccyw3h.xn--0ug88oa0396u; ; xn--5kj3511ccyw3h.xn--tsha6797o; [B1, V6] # 쥥ⴎ.⒈⒈ð«’
+쥥ó”‰â´Žï¼Ž\u200C⒈⒈ð«’; 쥥ó”‰â´Ž.\u200C⒈⒈ð«’; [B1, C1, V6]; xn--5kj3511ccyw3h.xn--0ug88oa0396u; ; xn--5kj3511ccyw3h.xn--tsha6797o; [B1, V6] # 쥥ⴎ.⒈⒈ð«’
xn--5kj3511ccyw3h.xn--tsha6797o; 쥥ó”‰â´Ž.⒈⒈ð«’; [B1, V6]; xn--5kj3511ccyw3h.xn--tsha6797o; ; ; # 쥥ⴎ.⒈⒈ð«’
xn--5kj3511ccyw3h.xn--0ug88oa0396u; 쥥ó”‰â´Ž.\u200C⒈⒈ð«’; [B1, C1, V6]; xn--5kj3511ccyw3h.xn--0ug88oa0396u; ; ; # 쥥ⴎ.⒈⒈ð«’
xn--mnd7865gcy28g.xn--tsha6797o; 쥥ó”‰á‚®.⒈⒈ð«’; [B1, V6]; xn--mnd7865gcy28g.xn--tsha6797o; ; ; # 쥥Ⴎ.⒈⒈ð«’
xn--mnd7865gcy28g.xn--0ug88oa0396u; 쥥ó”‰á‚®.\u200C⒈⒈ð«’; [B1, C1, V6]; xn--mnd7865gcy28g.xn--0ug88oa0396u; ; ; # 쥥Ⴎ.⒈⒈ð«’
-\u0827ðŸ¶\u06A0-。𑄳; \u08270\u06A0-.ð‘„³; [B1, B3, B6, V3, V5]; xn--0--p3d67m.xn--v80d; ; ; # à §0Ú -.ð‘„³
-\u08270\u06A0-。𑄳; \u08270\u06A0-.𑄳; [B1, B3, B6, V3, V5]; xn--0--p3d67m.xn--v80d; ; ; # ࠧ0ڠ-.𑄳
-xn--0--p3d67m.xn--v80d; \u08270\u06A0-.ð‘„³; [B1, B3, B6, V3, V5]; xn--0--p3d67m.xn--v80d; ; ; # à §0Ú -.ð‘„³
-ς.\uFDC1🞛⒈; Ï‚.\u0641\u0645\u064A🞛⒈; [P1, V6]; xn--3xa.xn--dhbip2802atb20c; ; xn--4xa.xn--dhbip2802atb20c; # Ï‚.Ùمي🞛⒈
+\u0827ðŸ¶\u06A0-。𑄳; \u08270\u06A0-.ð‘„³; [B1, V3, V5]; xn--0--p3d67m.xn--v80d; ; ; # à §0Ú -.ð‘„³
+\u08270\u06A0-。𑄳; \u08270\u06A0-.𑄳; [B1, V3, V5]; xn--0--p3d67m.xn--v80d; ; ; # ࠧ0ڠ-.𑄳
+xn--0--p3d67m.xn--v80d; \u08270\u06A0-.ð‘„³; [B1, V3, V5]; xn--0--p3d67m.xn--v80d; ; ; # à §0Ú -.ð‘„³
+ς.\uFDC1🞛⒈; Ï‚.\u0641\u0645\u064A🞛⒈; [V6]; xn--3xa.xn--dhbip2802atb20c; ; xn--4xa.xn--dhbip2802atb20c; # Ï‚.Ùمي🞛⒈
Ï‚.\u0641\u0645\u064A🞛1.; ; ; xn--3xa.xn--1-gocmu97674d.; ; xn--4xa.xn--1-gocmu97674d.; # Ï‚.Ùمي🞛1.
Σ.\u0641\u0645\u064A🞛1.; σ.\u0641\u0645\u064A🞛1.; ; xn--4xa.xn--1-gocmu97674d.; ; ; # σ.Ùمي🞛1.
σ.\u0641\u0645\u064A🞛1.; ; ; xn--4xa.xn--1-gocmu97674d.; ; ; # σ.Ùمي🞛1.
xn--4xa.xn--1-gocmu97674d.; σ.\u0641\u0645\u064A🞛1.; ; xn--4xa.xn--1-gocmu97674d.; ; ; # σ.Ùمي🞛1.
xn--3xa.xn--1-gocmu97674d.; Ï‚.\u0641\u0645\u064A🞛1.; ; xn--3xa.xn--1-gocmu97674d.; ; ; # Ï‚.Ùمي🞛1.
-Σ.\uFDC1🞛⒈; σ.\u0641\u0645\u064A🞛⒈; [P1, V6]; xn--4xa.xn--dhbip2802atb20c; ; ; # σ.Ùمي🞛⒈
-σ.\uFDC1🞛⒈; σ.\u0641\u0645\u064A🞛⒈; [P1, V6]; xn--4xa.xn--dhbip2802atb20c; ; ; # σ.Ùمي🞛⒈
+Σ.\uFDC1🞛⒈; σ.\u0641\u0645\u064A🞛⒈; [V6]; xn--4xa.xn--dhbip2802atb20c; ; ; # σ.Ùمي🞛⒈
+σ.\uFDC1🞛⒈; σ.\u0641\u0645\u064A🞛⒈; [V6]; xn--4xa.xn--dhbip2802atb20c; ; ; # σ.Ùمي🞛⒈
xn--4xa.xn--dhbip2802atb20c; σ.\u0641\u0645\u064A🞛⒈; [V6]; xn--4xa.xn--dhbip2802atb20c; ; ; # σ.Ùمي🞛⒈
xn--3xa.xn--dhbip2802atb20c; Ï‚.\u0641\u0645\u064A🞛⒈; [V6]; xn--3xa.xn--dhbip2802atb20c; ; ; # Ï‚.Ùمي🞛⒈
-🗩-。ð¹»óž†ñ¥‰®; 🗩-.ð¹»óž†ñ¥‰®; [B1, P1, V3, V6]; xn----6t3s.xn--zo0d4811u6ru6a; ; ; # 🗩-.ð¹»
-🗩-。ð¹»óž†ñ¥‰®; 🗩-.ð¹»óž†ñ¥‰®; [B1, P1, V3, V6]; xn----6t3s.xn--zo0d4811u6ru6a; ; ; # 🗩-.ð¹»
+🗩-。ð¹»óž†ñ¥‰®; 🗩-.ð¹»óž†ñ¥‰®; [B1, V3, V6]; xn----6t3s.xn--zo0d4811u6ru6a; ; ; # 🗩-.ð¹»
+🗩-。ð¹»óž†ñ¥‰®; 🗩-.ð¹»óž†ñ¥‰®; [B1, V3, V6]; xn----6t3s.xn--zo0d4811u6ru6a; ; ; # 🗩-.ð¹»
xn----6t3s.xn--zo0d4811u6ru6a; 🗩-.ð¹»óž†ñ¥‰®; [B1, V3, V6]; xn----6t3s.xn--zo0d4811u6ru6a; ; ; # 🗩-.ð¹»
ð¡œ-🔪。ðŸ»\u200Cð¿€; ð¡œ-🔪.5\u200Cð¿€; [B1, B3, C1]; xn----5j4iv089c.xn--5-sgn7149h; ; xn----5j4iv089c.xn--5-bn7i; [B1, B3] # ð¡œ-🔪.5ð¿€
ð¡œ-🔪。5\u200Cð¿€; ð¡œ-🔪.5\u200Cð¿€; [B1, B3, C1]; xn----5j4iv089c.xn--5-sgn7149h; ; xn----5j4iv089c.xn--5-bn7i; [B1, B3] # ð¡œ-🔪.5ð¿€
@@ -4476,59 +4502,59 @@ xn--zca770n5s4hev6c.xn--0-vgc50n; ð¹£ëŠ¿\u200Dß.\u07CF0\u05BC; [B1, C2]; xn--z
ð¹£á„‚ᅴᆺ\u200Dss.\u07CF0\u05BC; ð¹£ëŠ¿\u200Dss.\u07CF0\u05BC; [B1, C2]; xn--ss-l1tu910fo0xd.xn--0-vgc50n; ; xn--ss-i05i7041a.xn--0-vgc50n; [B1] # ð¹£ëŠ¿ss.ß0Ö¼
ð¹£ëŠ¿\u200DSs.\u07CF0\u05BC; ð¹£ëŠ¿\u200Dss.\u07CF0\u05BC; [B1, C2]; xn--ss-l1tu910fo0xd.xn--0-vgc50n; ; xn--ss-i05i7041a.xn--0-vgc50n; [B1] # ð¹£ëŠ¿ss.ß0Ö¼
ð¹£á„‚ᅴᆺ\u200DSs.\u07CF0\u05BC; ð¹£ëŠ¿\u200Dss.\u07CF0\u05BC; [B1, C2]; xn--ss-l1tu910fo0xd.xn--0-vgc50n; ; xn--ss-i05i7041a.xn--0-vgc50n; [B1] # ð¹£ëŠ¿ss.ß0Ö¼
-9󠇥.󪴴ᢓ; 9.󪴴ᢓ; [P1, V6]; 9.xn--dbf91222q; ; ; # 9.ᢓ
-9󠇥.󪴴ᢓ; 9.󪴴ᢓ; [P1, V6]; 9.xn--dbf91222q; ; ; # 9.ᢓ
+9󠇥.󪴴ᢓ; 9.󪴴ᢓ; [V6]; 9.xn--dbf91222q; ; ; # 9.ᢓ
+9󠇥.󪴴ᢓ; 9.󪴴ᢓ; [V6]; 9.xn--dbf91222q; ; ; # 9.ᢓ
9.xn--dbf91222q; 9.󪴴ᢓ; [V6]; 9.xn--dbf91222q; ; ; # 9.ᢓ
-\u200C\uFFA0.ð«­ðŸ —ß⽟; \u200C\uFFA0.ð«­ðŸ —ß玉; [B1, B2, B3, C1, P1, V6]; xn--0ug7719f.xn--zca2289c550e0iwi; ; xn--cl7c.xn--ss-je6eq954cp25j; [B2, B3, P1, V6] # .ð«­ðŸ —ß玉
-\u200C\u1160.ð«­ðŸ —ß玉; ; [B1, B2, B3, C1, P1, V6]; xn--psd526e.xn--zca2289c550e0iwi; ; xn--psd.xn--ss-je6eq954cp25j; [B2, B3, P1, V6] # .ð«­ðŸ —ß玉
-\u200C\u1160.ð«­ðŸ —SS玉; \u200C\u1160.ð«­ðŸ —ss玉; [B1, B2, B3, C1, P1, V6]; xn--psd526e.xn--ss-je6eq954cp25j; ; xn--psd.xn--ss-je6eq954cp25j; [B2, B3, P1, V6] # .ð«­ðŸ —ss玉
-\u200C\u1160.ð«­ðŸ —ss玉; ; [B1, B2, B3, C1, P1, V6]; xn--psd526e.xn--ss-je6eq954cp25j; ; xn--psd.xn--ss-je6eq954cp25j; [B2, B3, P1, V6] # .ð«­ðŸ —ss玉
-\u200C\u1160.ð«­ðŸ —Ss玉; \u200C\u1160.ð«­ðŸ —ss玉; [B1, B2, B3, C1, P1, V6]; xn--psd526e.xn--ss-je6eq954cp25j; ; xn--psd.xn--ss-je6eq954cp25j; [B2, B3, P1, V6] # .ð«­ðŸ —ss玉
+\u200C\uFFA0.ð«­ðŸ —ß⽟; \u200C\uFFA0.ð«­ðŸ —ß玉; [B1, B2, B3, C1, V6]; xn--0ug7719f.xn--zca2289c550e0iwi; ; xn--cl7c.xn--ss-je6eq954cp25j; [B2, B3, V6] # .ð«­ðŸ —ß玉
+\u200C\u1160.ð«­ðŸ —ß玉; ; [B1, B2, B3, C1, V6]; xn--psd526e.xn--zca2289c550e0iwi; ; xn--psd.xn--ss-je6eq954cp25j; [B2, B3, V6] # .ð«­ðŸ —ß玉
+\u200C\u1160.ð«­ðŸ —SS玉; \u200C\u1160.ð«­ðŸ —ss玉; [B1, B2, B3, C1, V6]; xn--psd526e.xn--ss-je6eq954cp25j; ; xn--psd.xn--ss-je6eq954cp25j; [B2, B3, V6] # .ð«­ðŸ —ss玉
+\u200C\u1160.ð«­ðŸ —ss玉; ; [B1, B2, B3, C1, V6]; xn--psd526e.xn--ss-je6eq954cp25j; ; xn--psd.xn--ss-je6eq954cp25j; [B2, B3, V6] # .ð«­ðŸ —ss玉
+\u200C\u1160.ð«­ðŸ —Ss玉; \u200C\u1160.ð«­ðŸ —ss玉; [B1, B2, B3, C1, V6]; xn--psd526e.xn--ss-je6eq954cp25j; ; xn--psd.xn--ss-je6eq954cp25j; [B2, B3, V6] # .ð«­ðŸ —ss玉
xn--psd.xn--ss-je6eq954cp25j; \u1160.ð«­ðŸ —ss玉; [B2, B3, V6]; xn--psd.xn--ss-je6eq954cp25j; ; ; # .ð«­ðŸ —ss玉
xn--psd526e.xn--ss-je6eq954cp25j; \u200C\u1160.ð«­ðŸ —ss玉; [B1, B2, B3, C1, V6]; xn--psd526e.xn--ss-je6eq954cp25j; ; ; # .ð«­ðŸ —ss玉
xn--psd526e.xn--zca2289c550e0iwi; \u200C\u1160.ð«­ðŸ —ß玉; [B1, B2, B3, C1, V6]; xn--psd526e.xn--zca2289c550e0iwi; ; ; # .ð«­ðŸ —ß玉
-\u200C\uFFA0.ð«­ðŸ —SS⽟; \u200C\uFFA0.ð«­ðŸ —ss玉; [B1, B2, B3, C1, P1, V6]; xn--0ug7719f.xn--ss-je6eq954cp25j; ; xn--cl7c.xn--ss-je6eq954cp25j; [B2, B3, P1, V6] # .ð«­ðŸ —ss玉
-\u200C\uFFA0.ð«­ðŸ —ss⽟; \u200C\uFFA0.ð«­ðŸ —ss玉; [B1, B2, B3, C1, P1, V6]; xn--0ug7719f.xn--ss-je6eq954cp25j; ; xn--cl7c.xn--ss-je6eq954cp25j; [B2, B3, P1, V6] # .ð«­ðŸ —ss玉
-\u200C\uFFA0.ð«­ðŸ —Ss⽟; \u200C\uFFA0.ð«­ðŸ —ss玉; [B1, B2, B3, C1, P1, V6]; xn--0ug7719f.xn--ss-je6eq954cp25j; ; xn--cl7c.xn--ss-je6eq954cp25j; [B2, B3, P1, V6] # .ð«­ðŸ —ss玉
+\u200C\uFFA0.ð«­ðŸ —SS⽟; \u200C\uFFA0.ð«­ðŸ —ss玉; [B1, B2, B3, C1, V6]; xn--0ug7719f.xn--ss-je6eq954cp25j; ; xn--cl7c.xn--ss-je6eq954cp25j; [B2, B3, V6] # .ð«­ðŸ —ss玉
+\u200C\uFFA0.ð«­ðŸ —ss⽟; \u200C\uFFA0.ð«­ðŸ —ss玉; [B1, B2, B3, C1, V6]; xn--0ug7719f.xn--ss-je6eq954cp25j; ; xn--cl7c.xn--ss-je6eq954cp25j; [B2, B3, V6] # .ð«­ðŸ —ss玉
+\u200C\uFFA0.ð«­ðŸ —Ss⽟; \u200C\uFFA0.ð«­ðŸ —ss玉; [B1, B2, B3, C1, V6]; xn--0ug7719f.xn--ss-je6eq954cp25j; ; xn--cl7c.xn--ss-je6eq954cp25j; [B2, B3, V6] # .ð«­ðŸ —ss玉
xn--cl7c.xn--ss-je6eq954cp25j; \uFFA0.ð«­ðŸ —ss玉; [B2, B3, V6]; xn--cl7c.xn--ss-je6eq954cp25j; ; ; # .ð«­ðŸ —ss玉
xn--0ug7719f.xn--ss-je6eq954cp25j; \u200C\uFFA0.ð«­ðŸ —ss玉; [B1, B2, B3, C1, V6]; xn--0ug7719f.xn--ss-je6eq954cp25j; ; ; # .ð«­ðŸ —ss玉
xn--0ug7719f.xn--zca2289c550e0iwi; \u200C\uFFA0.ð«­ðŸ —ß玉; [B1, B2, B3, C1, V6]; xn--0ug7719f.xn--zca2289c550e0iwi; ; ; # .ð«­ðŸ —ß玉
-︒Ⴖ\u0366.\u200C; ︒Ⴖ\u0366.\u200C; [C1, P1, V6]; xn--hva929dl29p.xn--0ug; ; xn--hva929dl29p.; [P1, V6] # ︒Ⴖͦ.
-。Ⴖ\u0366.\u200C; .Ⴖ\u0366.\u200C; [C1, P1, V6, X4_2]; .xn--hva929d.xn--0ug; [C1, P1, V6, A4_2]; .xn--hva929d.; [P1, V6, A4_2] # .Ⴖͦ.
+︒Ⴖ\u0366.\u200C; ︒Ⴖ\u0366.\u200C; [C1, V6]; xn--hva929dl29p.xn--0ug; ; xn--hva929dl29p.; [V6] # ︒Ⴖͦ.
+。Ⴖ\u0366.\u200C; .Ⴖ\u0366.\u200C; [C1, V6, X4_2]; .xn--hva929d.xn--0ug; [C1, V6, A4_2]; .xn--hva929d.; [V6, A4_2] # .Ⴖͦ.
。ⴖ\u0366.\u200C; .ⴖ\u0366.\u200C; [C1, X4_2]; .xn--hva754s.xn--0ug; [C1, A4_2]; .xn--hva754s.; [A4_2] # .ⴖͦ.
.xn--hva754s.; .ⴖ\u0366.; [X4_2]; .xn--hva754s.; [A4_2]; ; # .ⴖͦ.
.xn--hva754s.xn--0ug; .ⴖ\u0366.\u200C; [C1, X4_2]; .xn--hva754s.xn--0ug; [C1, A4_2]; ; # .ⴖͦ.
.xn--hva929d.; .Ⴖ\u0366.; [V6, X4_2]; .xn--hva929d.; [V6, A4_2]; ; # .Ⴖͦ.
.xn--hva929d.xn--0ug; .Ⴖ\u0366.\u200C; [C1, V6, X4_2]; .xn--hva929d.xn--0ug; [C1, V6, A4_2]; ; # .Ⴖͦ.
-︒ⴖ\u0366.\u200C; ︒ⴖ\u0366.\u200C; [C1, P1, V6]; xn--hva754sy94k.xn--0ug; ; xn--hva754sy94k.; [P1, V6] # ︒ⴖͦ.
+︒ⴖ\u0366.\u200C; ︒ⴖ\u0366.\u200C; [C1, V6]; xn--hva754sy94k.xn--0ug; ; xn--hva754sy94k.; [V6] # ︒ⴖͦ.
xn--hva754sy94k.; ︒ⴖ\u0366.; [V6]; xn--hva754sy94k.; ; ; # ︒ⴖͦ.
xn--hva754sy94k.xn--0ug; ︒ⴖ\u0366.\u200C; [C1, V6]; xn--hva754sy94k.xn--0ug; ; ; # ︒ⴖͦ.
xn--hva929dl29p.; ︒Ⴖ\u0366.; [V6]; xn--hva929dl29p.; ; ; # ︒Ⴖͦ.
xn--hva929dl29p.xn--0ug; ︒Ⴖ\u0366.\u200C; [C1, V6]; xn--hva929dl29p.xn--0ug; ; ; # ︒Ⴖͦ.
xn--hva754s.; ⴖ\u0366.; ; xn--hva754s.; ; ; # ⴖͦ.
ⴖ\u0366.; ; ; xn--hva754s.; ; ; # ⴖͦ.
-Ⴖ\u0366.; ; [P1, V6]; xn--hva929d.; ; ; # Ⴖͦ.
+Ⴖ\u0366.; ; [V6]; xn--hva929d.; ; ; # Ⴖͦ.
xn--hva929d.; Ⴖ\u0366.; [V6]; xn--hva929d.; ; ; # Ⴖͦ.
-\u08BB.\u200CႣ𞀒; \u08BB.\u200CႣ𞀒; [B1, C1, P1, V6]; xn--hzb.xn--bnd300f7225a; ; xn--hzb.xn--bnd2938u; [P1, V6] # ࢻ.Ⴃ𞀒
-\u08BB.\u200CႣ𞀒; ; [B1, C1, P1, V6]; xn--hzb.xn--bnd300f7225a; ; xn--hzb.xn--bnd2938u; [P1, V6] # ࢻ.Ⴃ𞀒
+\u08BB.\u200CႣ𞀒; \u08BB.\u200CႣ𞀒; [B1, C1, V6]; xn--hzb.xn--bnd300f7225a; ; xn--hzb.xn--bnd2938u; [V6] # ࢻ.Ⴃ𞀒
+\u08BB.\u200CႣ𞀒; ; [B1, C1, V6]; xn--hzb.xn--bnd300f7225a; ; xn--hzb.xn--bnd2938u; [V6] # ࢻ.Ⴃ𞀒
\u08BB.\u200Cⴃ𞀒; ; [B1, C1]; xn--hzb.xn--0ug822cp045a; ; xn--hzb.xn--ukj4430l; [] # ࢻ.ⴃ𞀒
xn--hzb.xn--ukj4430l; \u08BB.ⴃ𞀒; ; xn--hzb.xn--ukj4430l; ; ; # ࢻ.ⴃ𞀒
\u08BB.ⴃ𞀒; ; ; xn--hzb.xn--ukj4430l; ; ; # ࢻ.ⴃ𞀒
-\u08BB.Ⴃ𞀒; ; [P1, V6]; xn--hzb.xn--bnd2938u; ; ; # ࢻ.Ⴃ𞀒
+\u08BB.Ⴃ𞀒; ; [V6]; xn--hzb.xn--bnd2938u; ; ; # ࢻ.Ⴃ𞀒
xn--hzb.xn--bnd2938u; \u08BB.Ⴃ𞀒; [V6]; xn--hzb.xn--bnd2938u; ; ; # ࢻ.Ⴃ𞀒
xn--hzb.xn--0ug822cp045a; \u08BB.\u200Cⴃ𞀒; [B1, C1]; xn--hzb.xn--0ug822cp045a; ; ; # ࢻ.ⴃ𞀒
xn--hzb.xn--bnd300f7225a; \u08BB.\u200CႣ𞀒; [B1, C1, V6]; xn--hzb.xn--bnd300f7225a; ; ; # ࢻ.Ⴃ𞀒
\u08BB.\u200Cⴃ𞀒; \u08BB.\u200Cⴃ𞀒; [B1, C1]; xn--hzb.xn--0ug822cp045a; ; xn--hzb.xn--ukj4430l; [] # ࢻ.ⴃ𞀒
-\u200D\u200C。2䫷󠧷; \u200D\u200C.2䫷󠧷; [C1, C2, P1, V6]; xn--0ugb.xn--2-me5ay1273i; ; .xn--2-me5ay1273i; [P1, V6, A4_2] # .2䫷
-\u200D\u200C。2䫷󠧷; \u200D\u200C.2䫷󠧷; [C1, C2, P1, V6]; xn--0ugb.xn--2-me5ay1273i; ; .xn--2-me5ay1273i; [P1, V6, A4_2] # .2䫷
+\u200D\u200C。2䫷󠧷; \u200D\u200C.2䫷󠧷; [C1, C2, V6]; xn--0ugb.xn--2-me5ay1273i; ; .xn--2-me5ay1273i; [V6, A4_2] # .2䫷
+\u200D\u200C。2䫷󠧷; \u200D\u200C.2䫷󠧷; [C1, C2, V6]; xn--0ugb.xn--2-me5ay1273i; ; .xn--2-me5ay1273i; [V6, A4_2] # .2䫷
.xn--2-me5ay1273i; .2ä«·ó §·; [V6, X4_2]; .xn--2-me5ay1273i; [V6, A4_2]; ; # .2ä«·
xn--0ugb.xn--2-me5ay1273i; \u200D\u200C.2ä«·ó §·; [C1, C2, V6]; xn--0ugb.xn--2-me5ay1273i; ; ; # .2ä«·
--𞀤óœ ã€‚òˆ¬–; -𞀤óœ .òˆ¬–; [P1, V3, V6]; xn----rq4re4997d.xn--l707b; ; ; # -𞀤.
+-𞀤óœ ã€‚òˆ¬–; -𞀤óœ .òˆ¬–; [V3, V6]; xn----rq4re4997d.xn--l707b; ; ; # -𞀤.
xn----rq4re4997d.xn--l707b; -𞀤óœ .òˆ¬–; [V3, V6]; xn----rq4re4997d.xn--l707b; ; ; # -𞀤.
-󳛂︒\u200C㟀.\u0624⒈; 󳛂︒\u200C㟀.\u0624⒈; [C1, P1, V6]; xn--0ug754gxl4ldlt0k.xn--jgb476m; ; xn--etlt457ccrq7h.xn--jgb476m; [P1, V6] # ︒㟀.ؤ⒈
-󳛂︒\u200C㟀.\u0648\u0654⒈; 󳛂︒\u200C㟀.\u0624⒈; [C1, P1, V6]; xn--0ug754gxl4ldlt0k.xn--jgb476m; ; xn--etlt457ccrq7h.xn--jgb476m; [P1, V6] # ︒㟀.ؤ⒈
-󳛂。\u200C㟀.\u06241.; 󳛂.\u200C㟀.\u06241.; [B1, C1, P1, V6]; xn--z272f.xn--0ug754g.xn--1-smc.; ; xn--z272f.xn--etl.xn--1-smc.; [P1, V6] # .㟀.ؤ1.
-󳛂。\u200C㟀.\u0648\u06541.; 󳛂.\u200C㟀.\u06241.; [B1, C1, P1, V6]; xn--z272f.xn--0ug754g.xn--1-smc.; ; xn--z272f.xn--etl.xn--1-smc.; [P1, V6] # .㟀.ؤ1.
+󳛂︒\u200C㟀.\u0624⒈; 󳛂︒\u200C㟀.\u0624⒈; [C1, V6]; xn--0ug754gxl4ldlt0k.xn--jgb476m; ; xn--etlt457ccrq7h.xn--jgb476m; [V6] # ︒㟀.ؤ⒈
+󳛂︒\u200C㟀.\u0648\u0654⒈; 󳛂︒\u200C㟀.\u0624⒈; [C1, V6]; xn--0ug754gxl4ldlt0k.xn--jgb476m; ; xn--etlt457ccrq7h.xn--jgb476m; [V6] # ︒㟀.ؤ⒈
+󳛂。\u200C㟀.\u06241.; 󳛂.\u200C㟀.\u06241.; [B1, C1, V6]; xn--z272f.xn--0ug754g.xn--1-smc.; ; xn--z272f.xn--etl.xn--1-smc.; [V6] # .㟀.ؤ1.
+󳛂。\u200C㟀.\u0648\u06541.; 󳛂.\u200C㟀.\u06241.; [B1, C1, V6]; xn--z272f.xn--0ug754g.xn--1-smc.; ; xn--z272f.xn--etl.xn--1-smc.; [V6] # .㟀.ؤ1.
xn--z272f.xn--etl.xn--1-smc.; 󳛂.㟀.\u06241.; [V6]; xn--z272f.xn--etl.xn--1-smc.; ; ; # .㟀.ؤ1.
xn--z272f.xn--0ug754g.xn--1-smc.; 󳛂.\u200C㟀.\u06241.; [B1, C1, V6]; xn--z272f.xn--0ug754g.xn--1-smc.; ; ; # .㟀.ؤ1.
xn--etlt457ccrq7h.xn--jgb476m; 󳛂︒㟀.\u0624⒈; [V6]; xn--etlt457ccrq7h.xn--jgb476m; ; ; # ︒㟀.ؤ⒈
@@ -4536,89 +4562,89 @@ xn--0ug754gxl4ldlt0k.xn--jgb476m; 󳛂︒\u200C㟀.\u0624⒈; [C1, V6]; xn--0ug7
𑲜\u07CAð…¼ã€‚-\u200D; 𑲜\u07CAð…¼.-\u200D; [B1, C2, V3, V5]; xn--lsb5482l7nre.xn----ugn; ; xn--lsb5482l7nre.-; [B1, V3, V5] # 𑲜ߊð…¼.-
xn--lsb5482l7nre.-; 𑲜\u07CAð…¼.-; [B1, V3, V5]; xn--lsb5482l7nre.-; ; ; # 𑲜ߊð…¼.-
xn--lsb5482l7nre.xn----ugn; 𑲜\u07CAð…¼.-\u200D; [B1, C2, V3, V5]; xn--lsb5482l7nre.xn----ugn; ; ; # 𑲜ߊð…¼.-
-\u200C.Ⴉ≠ð«¶; \u200C.Ⴉ≠ð«¶; [B1, B5, B6, C1, P1, V6]; xn--0ug.xn--hnd481gv73o; ; .xn--hnd481gv73o; [B5, B6, P1, V6, A4_2] # .Ⴉ≠ð«¶
-\u200C.Ⴉ=\u0338ð«¶; \u200C.Ⴉ≠ð«¶; [B1, B5, B6, C1, P1, V6]; xn--0ug.xn--hnd481gv73o; ; .xn--hnd481gv73o; [B5, B6, P1, V6, A4_2] # .Ⴉ≠ð«¶
-\u200C.Ⴉ≠ð«¶; ; [B1, B5, B6, C1, P1, V6]; xn--0ug.xn--hnd481gv73o; ; .xn--hnd481gv73o; [B5, B6, P1, V6, A4_2] # .Ⴉ≠ð«¶
-\u200C.á‚©=\u0338ð«¶; \u200C.Ⴉ≠ð«¶; [B1, B5, B6, C1, P1, V6]; xn--0ug.xn--hnd481gv73o; ; .xn--hnd481gv73o; [B5, B6, P1, V6, A4_2] # .Ⴉ≠ð«¶
-\u200C.â´‰=\u0338ð«¶; \u200C.ⴉ≠ð«¶; [B1, B5, B6, C1, P1, V6]; xn--0ug.xn--1chx23bzj4p; ; .xn--1chx23bzj4p; [B5, B6, P1, V6, A4_2] # .ⴉ≠ð«¶
-\u200C.ⴉ≠ð«¶; ; [B1, B5, B6, C1, P1, V6]; xn--0ug.xn--1chx23bzj4p; ; .xn--1chx23bzj4p; [B5, B6, P1, V6, A4_2] # .ⴉ≠ð«¶
-.xn--1chx23bzj4p; .ⴉ≠ð«¶; [B5, B6, V6, X4_2]; .xn--1chx23bzj4p; [B5, B6, V6, A4_2]; ; # .ⴉ≠ð«¶
-xn--0ug.xn--1chx23bzj4p; \u200C.ⴉ≠ð«¶; [B1, B5, B6, C1, V6]; xn--0ug.xn--1chx23bzj4p; ; ; # .ⴉ≠ð«¶
+\u200C.Ⴉ≠ð«¶; \u200C.Ⴉ≠ð«¶; [B1, B5, B6, C1, V6]; xn--0ug.xn--hnd481gv73o; ; .xn--hnd481gv73o; [B5, B6, V6, A4_2] # .Ⴉ≠ð«¶
+\u200C.Ⴉ=\u0338ð«¶; \u200C.Ⴉ≠ð«¶; [B1, B5, B6, C1, V6]; xn--0ug.xn--hnd481gv73o; ; .xn--hnd481gv73o; [B5, B6, V6, A4_2] # .Ⴉ≠ð«¶
+\u200C.Ⴉ≠ð«¶; ; [B1, B5, B6, C1, V6]; xn--0ug.xn--hnd481gv73o; ; .xn--hnd481gv73o; [B5, B6, V6, A4_2] # .Ⴉ≠ð«¶
+\u200C.á‚©=\u0338ð«¶; \u200C.Ⴉ≠ð«¶; [B1, B5, B6, C1, V6]; xn--0ug.xn--hnd481gv73o; ; .xn--hnd481gv73o; [B5, B6, V6, A4_2] # .Ⴉ≠ð«¶
+\u200C.â´‰=\u0338ð«¶; \u200C.ⴉ≠ð«¶; [B1, B5, B6, C1]; xn--0ug.xn--1chx23bzj4p; ; .xn--1chx23bzj4p; [B5, B6, A4_2] # .ⴉ≠ð«¶
+\u200C.ⴉ≠ð«¶; ; [B1, B5, B6, C1]; xn--0ug.xn--1chx23bzj4p; ; .xn--1chx23bzj4p; [B5, B6, A4_2] # .ⴉ≠ð«¶
+.xn--1chx23bzj4p; .ⴉ≠ð«¶; [B5, B6, X4_2]; .xn--1chx23bzj4p; [B5, B6, A4_2]; ; # .ⴉ≠ð«¶
+xn--0ug.xn--1chx23bzj4p; \u200C.ⴉ≠ð«¶; [B1, B5, B6, C1]; xn--0ug.xn--1chx23bzj4p; ; ; # .ⴉ≠ð«¶
.xn--hnd481gv73o; .Ⴉ≠ð«¶; [B5, B6, V6, X4_2]; .xn--hnd481gv73o; [B5, B6, V6, A4_2]; ; # .Ⴉ≠ð«¶
xn--0ug.xn--hnd481gv73o; \u200C.Ⴉ≠ð«¶; [B1, B5, B6, C1, V6]; xn--0ug.xn--hnd481gv73o; ; ; # .Ⴉ≠ð«¶
-\u200C.ⴉ=\u0338ð«¶; \u200C.ⴉ≠ð«¶; [B1, B5, B6, C1, P1, V6]; xn--0ug.xn--1chx23bzj4p; ; .xn--1chx23bzj4p; [B5, B6, P1, V6, A4_2] # .ⴉ≠ð«¶
-\u200C.ⴉ≠ð«¶; \u200C.ⴉ≠ð«¶; [B1, B5, B6, C1, P1, V6]; xn--0ug.xn--1chx23bzj4p; ; .xn--1chx23bzj4p; [B5, B6, P1, V6, A4_2] # .ⴉ≠ð«¶
-\u0750。≯ς; \u0750.≯ς; [B1, P1, V6]; xn--3ob.xn--3xa918m; ; xn--3ob.xn--4xa718m; # Ý.≯ς
-\u0750。>\u0338Ï‚; \u0750.≯ς; [B1, P1, V6]; xn--3ob.xn--3xa918m; ; xn--3ob.xn--4xa718m; # Ý.≯ς
-\u0750。>\u0338Σ; \u0750.≯σ; [B1, P1, V6]; xn--3ob.xn--4xa718m; ; ; # Ý.≯σ
-\u0750。≯Σ; \u0750.≯σ; [B1, P1, V6]; xn--3ob.xn--4xa718m; ; ; # Ý.≯σ
-\u0750。≯σ; \u0750.≯σ; [B1, P1, V6]; xn--3ob.xn--4xa718m; ; ; # Ý.≯σ
-\u0750。>\u0338σ; \u0750.≯σ; [B1, P1, V6]; xn--3ob.xn--4xa718m; ; ; # Ý.≯σ
-xn--3ob.xn--4xa718m; \u0750.≯σ; [B1, V6]; xn--3ob.xn--4xa718m; ; ; # Ý.≯σ
-xn--3ob.xn--3xa918m; \u0750.≯ς; [B1, V6]; xn--3ob.xn--3xa918m; ; ; # Ý.≯ς
-\u07FCð¸†.ð“–︒ñŠ¨©á‚°; ; [P1, V6]; xn--0tb8725k.xn--ond3562jt18a7py9c; ; ; # .︒Ⴐ
-\u07FCð¸†.ð“–。ñŠ¨©á‚°; \u07FCð¸†.ð“–.ñŠ¨©á‚°; [P1, V6]; xn--0tb8725k.xn--tu8d.xn--ond97931d; ; ; # ..á‚°
-\u07FCð¸†.ð“–。ñŠ¨©â´; \u07FCð¸†.ð“–.ñŠ¨©â´; [P1, V6]; xn--0tb8725k.xn--tu8d.xn--7kj73887a; ; ; # ..â´
+\u200C.ⴉ=\u0338ð«¶; \u200C.ⴉ≠ð«¶; [B1, B5, B6, C1]; xn--0ug.xn--1chx23bzj4p; ; .xn--1chx23bzj4p; [B5, B6, A4_2] # .ⴉ≠ð«¶
+\u200C.ⴉ≠ð«¶; \u200C.ⴉ≠ð«¶; [B1, B5, B6, C1]; xn--0ug.xn--1chx23bzj4p; ; .xn--1chx23bzj4p; [B5, B6, A4_2] # .ⴉ≠ð«¶
+\u0750。≯ς; \u0750.≯ς; [B1]; xn--3ob.xn--3xa918m; ; xn--3ob.xn--4xa718m; # Ý.≯ς
+\u0750。>\u0338Ï‚; \u0750.≯ς; [B1]; xn--3ob.xn--3xa918m; ; xn--3ob.xn--4xa718m; # Ý.≯ς
+\u0750。>\u0338Σ; \u0750.≯σ; [B1]; xn--3ob.xn--4xa718m; ; ; # Ý.≯σ
+\u0750。≯Σ; \u0750.≯σ; [B1]; xn--3ob.xn--4xa718m; ; ; # Ý.≯σ
+\u0750。≯σ; \u0750.≯σ; [B1]; xn--3ob.xn--4xa718m; ; ; # Ý.≯σ
+\u0750。>\u0338σ; \u0750.≯σ; [B1]; xn--3ob.xn--4xa718m; ; ; # Ý.≯σ
+xn--3ob.xn--4xa718m; \u0750.≯σ; [B1]; xn--3ob.xn--4xa718m; ; ; # Ý.≯σ
+xn--3ob.xn--3xa918m; \u0750.≯ς; [B1]; xn--3ob.xn--3xa918m; ; ; # Ý.≯ς
+\u07FCð¸†.ð“–︒ñŠ¨©á‚°; ; [V6]; xn--0tb8725k.xn--ond3562jt18a7py9c; ; ; # .︒Ⴐ
+\u07FCð¸†.ð“–。ñŠ¨©á‚°; \u07FCð¸†.ð“–.ñŠ¨©á‚°; [V6]; xn--0tb8725k.xn--tu8d.xn--ond97931d; ; ; # ..á‚°
+\u07FCð¸†.ð“–。ñŠ¨©â´; \u07FCð¸†.ð“–.ñŠ¨©â´; [V6]; xn--0tb8725k.xn--tu8d.xn--7kj73887a; ; ; # ..â´
xn--0tb8725k.xn--tu8d.xn--7kj73887a; \u07FCð¸†.ð“–.ñŠ¨©â´; [V6]; xn--0tb8725k.xn--tu8d.xn--7kj73887a; ; ; # ..â´
xn--0tb8725k.xn--tu8d.xn--ond97931d; \u07FCð¸†.ð“–.ñŠ¨©á‚°; [V6]; xn--0tb8725k.xn--tu8d.xn--ond97931d; ; ; # ..á‚°
-\u07FCð¸†.ð“–︒ñŠ¨©â´; ; [P1, V6]; xn--0tb8725k.xn--7kj9008dt18a7py9c; ; ; # .︒â´
+\u07FCð¸†.ð“–︒ñŠ¨©â´; ; [V6]; xn--0tb8725k.xn--7kj9008dt18a7py9c; ; ; # .︒â´
xn--0tb8725k.xn--7kj9008dt18a7py9c; \u07FCð¸†.ð“–︒ñŠ¨©â´; [V6]; xn--0tb8725k.xn--7kj9008dt18a7py9c; ; ; # .︒â´
xn--0tb8725k.xn--ond3562jt18a7py9c; \u07FCð¸†.ð“–︒ñŠ¨©á‚°; [V6]; xn--0tb8725k.xn--ond3562jt18a7py9c; ; ; # .︒Ⴐ
-Ⴥ⚭󠖫⋃。𑌼; Ⴥ⚭󠖫⋃.𑌼; [P1, V5, V6]; xn--9nd623g4zc5z060c.xn--ro1d; ; ; # Ⴥ⚭⋃.𑌼
-Ⴥ⚭󠖫⋃。𑌼; Ⴥ⚭󠖫⋃.𑌼; [P1, V5, V6]; xn--9nd623g4zc5z060c.xn--ro1d; ; ; # Ⴥ⚭⋃.𑌼
-ⴥ⚭󠖫⋃。𑌼; ⴥ⚭󠖫⋃.𑌼; [P1, V5, V6]; xn--vfh16m67gx1162b.xn--ro1d; ; ; # ⴥ⚭⋃.𑌼
+Ⴥ⚭󠖫⋃。𑌼; Ⴥ⚭󠖫⋃.𑌼; [V5, V6]; xn--9nd623g4zc5z060c.xn--ro1d; ; ; # Ⴥ⚭⋃.𑌼
+Ⴥ⚭󠖫⋃。𑌼; Ⴥ⚭󠖫⋃.𑌼; [V5, V6]; xn--9nd623g4zc5z060c.xn--ro1d; ; ; # Ⴥ⚭⋃.𑌼
+ⴥ⚭󠖫⋃。𑌼; ⴥ⚭󠖫⋃.𑌼; [V5, V6]; xn--vfh16m67gx1162b.xn--ro1d; ; ; # ⴥ⚭⋃.𑌼
xn--vfh16m67gx1162b.xn--ro1d; ⴥ⚭󠖫⋃.𑌼; [V5, V6]; xn--vfh16m67gx1162b.xn--ro1d; ; ; # ⴥ⚭⋃.𑌼
xn--9nd623g4zc5z060c.xn--ro1d; Ⴥ⚭󠖫⋃.𑌼; [V5, V6]; xn--9nd623g4zc5z060c.xn--ro1d; ; ; # Ⴥ⚭⋃.𑌼
-ⴥ⚭󠖫⋃。𑌼; ⴥ⚭󠖫⋃.𑌼; [P1, V5, V6]; xn--vfh16m67gx1162b.xn--ro1d; ; ; # ⴥ⚭⋃.𑌼
-🄈。󠷳\u0844; 🄈.󠷳\u0844; [B1, P1, V6]; xn--107h.xn--2vb13094p; ; ; # 🄈.ࡄ
-7,。󠷳\u0844; 7,.󠷳\u0844; [B1, P1, V6]; 7,.xn--2vb13094p; ; ; # 7,.ࡄ
-7,.xn--2vb13094p; 7,.ó ·³\u0844; [B1, P1, V6]; 7,.xn--2vb13094p; ; ; # 7,.à¡„
+ⴥ⚭󠖫⋃。𑌼; ⴥ⚭󠖫⋃.𑌼; [V5, V6]; xn--vfh16m67gx1162b.xn--ro1d; ; ; # ⴥ⚭⋃.𑌼
+🄈。󠷳\u0844; 🄈.󠷳\u0844; [B1, V6]; xn--107h.xn--2vb13094p; ; ; # 🄈.ࡄ
+7,。󠷳\u0844; 7,.󠷳\u0844; [B1, V6]; 7,.xn--2vb13094p; ; ; # 7,.ࡄ
+7,.xn--2vb13094p; 7,.ó ·³\u0844; [B1, V6]; 7,.xn--2vb13094p; ; ; # 7,.à¡„
xn--107h.xn--2vb13094p; 🄈.󠷳\u0844; [B1, V6]; xn--107h.xn--2vb13094p; ; ; # 🄈.ࡄ
-≮\u0846。섖쮖ß; ≮\u0846.섖쮖ß; [B1, P1, V6]; xn--4vb505k.xn--zca7259goug; ; xn--4vb505k.xn--ss-5z4j006a; # ≮ࡆ.섖쮖ß
-<\u0338\u0846。섖á„ᅰᆽß; ≮\u0846.섖쮖ß; [B1, P1, V6]; xn--4vb505k.xn--zca7259goug; ; xn--4vb505k.xn--ss-5z4j006a; # ≮ࡆ.섖쮖ß
-<\u0338\u0846。섖á„ᅰᆽSS; ≮\u0846.ì„–ì®–ss; [B1, P1, V6]; xn--4vb505k.xn--ss-5z4j006a; ; ; # ≮ࡆ.ì„–ì®–ss
-≮\u0846。섖쮖SS; ≮\u0846.섖쮖ss; [B1, P1, V6]; xn--4vb505k.xn--ss-5z4j006a; ; ; # ≮ࡆ.섖쮖ss
-≮\u0846。섖쮖ss; ≮\u0846.섖쮖ss; [B1, P1, V6]; xn--4vb505k.xn--ss-5z4j006a; ; ; # ≮ࡆ.섖쮖ss
-<\u0338\u0846。섖á„ᅰᆽss; ≮\u0846.ì„–ì®–ss; [B1, P1, V6]; xn--4vb505k.xn--ss-5z4j006a; ; ; # ≮ࡆ.ì„–ì®–ss
-xn--4vb505k.xn--ss-5z4j006a; ≮\u0846.섖쮖ss; [B1, V6]; xn--4vb505k.xn--ss-5z4j006a; ; ; # ≮ࡆ.섖쮖ss
-≮\u0846。섖쮖Ss; ≮\u0846.섖쮖ss; [B1, P1, V6]; xn--4vb505k.xn--ss-5z4j006a; ; ; # ≮ࡆ.섖쮖ss
-<\u0338\u0846。섖á„ᅰᆽSs; ≮\u0846.ì„–ì®–ss; [B1, P1, V6]; xn--4vb505k.xn--ss-5z4j006a; ; ; # ≮ࡆ.ì„–ì®–ss
-xn--4vb505k.xn--zca7259goug; ≮\u0846.섖쮖ß; [B1, V6]; xn--4vb505k.xn--zca7259goug; ; ; # ≮ࡆ.섖쮖ß
+≮\u0846。섖쮖ß; ≮\u0846.섖쮖ß; [B1]; xn--4vb505k.xn--zca7259goug; ; xn--4vb505k.xn--ss-5z4j006a; # ≮ࡆ.섖쮖ß
+<\u0338\u0846。섖á„ᅰᆽß; ≮\u0846.섖쮖ß; [B1]; xn--4vb505k.xn--zca7259goug; ; xn--4vb505k.xn--ss-5z4j006a; # ≮ࡆ.섖쮖ß
+<\u0338\u0846。섖á„ᅰᆽSS; ≮\u0846.ì„–ì®–ss; [B1]; xn--4vb505k.xn--ss-5z4j006a; ; ; # ≮ࡆ.ì„–ì®–ss
+≮\u0846。섖쮖SS; ≮\u0846.섖쮖ss; [B1]; xn--4vb505k.xn--ss-5z4j006a; ; ; # ≮ࡆ.섖쮖ss
+≮\u0846。섖쮖ss; ≮\u0846.섖쮖ss; [B1]; xn--4vb505k.xn--ss-5z4j006a; ; ; # ≮ࡆ.섖쮖ss
+<\u0338\u0846。섖á„ᅰᆽss; ≮\u0846.ì„–ì®–ss; [B1]; xn--4vb505k.xn--ss-5z4j006a; ; ; # ≮ࡆ.ì„–ì®–ss
+xn--4vb505k.xn--ss-5z4j006a; ≮\u0846.섖쮖ss; [B1]; xn--4vb505k.xn--ss-5z4j006a; ; ; # ≮ࡆ.섖쮖ss
+≮\u0846。섖쮖Ss; ≮\u0846.섖쮖ss; [B1]; xn--4vb505k.xn--ss-5z4j006a; ; ; # ≮ࡆ.섖쮖ss
+<\u0338\u0846。섖á„ᅰᆽSs; ≮\u0846.ì„–ì®–ss; [B1]; xn--4vb505k.xn--ss-5z4j006a; ; ; # ≮ࡆ.ì„–ì®–ss
+xn--4vb505k.xn--zca7259goug; ≮\u0846.섖쮖ß; [B1]; xn--4vb505k.xn--zca7259goug; ; ; # ≮ࡆ.섖쮖ß
󠆓â›-。ꡒ; â›-.ê¡’; [V3]; xn----o9p.xn--rc9a; ; ; # â›-.ê¡’
xn----o9p.xn--rc9a; â›-.ê¡’; [V3]; xn----o9p.xn--rc9a; ; ; # â›-.ê¡’
-\u07BBð¹³\u0626ð‘†ã€‚\u08A7\u06B0\u200Cᢒ; \u07BBð¹³\u0626ð‘†.\u08A7\u06B0\u200Cᢒ; [B2, B3, P1, V6]; xn--lgb32f2753cosb.xn--jkb91hlz1azih; ; xn--lgb32f2753cosb.xn--jkb91hlz1a; # ð¹³Ø¦ð‘†.ࢧڰᢒ
-\u07BBð¹³\u064Að‘†\u0654。\u08A7\u06B0\u200Cᢒ; \u07BBð¹³\u0626ð‘†.\u08A7\u06B0\u200Cᢒ; [B2, B3, P1, V6]; xn--lgb32f2753cosb.xn--jkb91hlz1azih; ; xn--lgb32f2753cosb.xn--jkb91hlz1a; # ð¹³Ø¦ð‘†.ࢧڰᢒ
+\u07BBð¹³\u0626ð‘†ã€‚\u08A7\u06B0\u200Cᢒ; \u07BBð¹³\u0626ð‘†.\u08A7\u06B0\u200Cᢒ; [B2, B3, V6]; xn--lgb32f2753cosb.xn--jkb91hlz1azih; ; xn--lgb32f2753cosb.xn--jkb91hlz1a; # ð¹³Ø¦ð‘†.ࢧڰᢒ
+\u07BBð¹³\u064Að‘†\u0654。\u08A7\u06B0\u200Cᢒ; \u07BBð¹³\u0626ð‘†.\u08A7\u06B0\u200Cᢒ; [B2, B3, V6]; xn--lgb32f2753cosb.xn--jkb91hlz1azih; ; xn--lgb32f2753cosb.xn--jkb91hlz1a; # ð¹³Ø¦ð‘†.ࢧڰᢒ
xn--lgb32f2753cosb.xn--jkb91hlz1a; \u07BBð¹³\u0626ð‘†.\u08A7\u06B0ᢒ; [B2, B3, V6]; xn--lgb32f2753cosb.xn--jkb91hlz1a; ; ; # ð¹³Ø¦ð‘†.ࢧڰᢒ
xn--lgb32f2753cosb.xn--jkb91hlz1azih; \u07BBð¹³\u0626ð‘†.\u08A7\u06B0\u200Cᢒ; [B2, B3, V6]; xn--lgb32f2753cosb.xn--jkb91hlz1azih; ; ; # ð¹³Ø¦ð‘†.ࢧڰᢒ
-\u0816.ð¨•ðšš•; ; [B1, B2, B3, B6, P1, V5, V6]; xn--rub.xn--tr9c248x; ; ; # à –.ð¨•
-xn--rub.xn--tr9c248x; \u0816.ð¨•ðšš•; [B1, B2, B3, B6, V5, V6]; xn--rub.xn--tr9c248x; ; ; # à –.ð¨•
---。𽊆\u0767ð½‹ðž ¬; --.𽊆\u0767ð½‹ðž ¬; [B1, B5, B6, P1, V3, V6]; --.xn--rpb6226k77pfh58p; ; ; # --.ݧð½‹ðž ¬
+\u0816.ð¨•ðšš•; ; [B1, B2, B3, V5, V6]; xn--rub.xn--tr9c248x; ; ; # à –.ð¨•
+xn--rub.xn--tr9c248x; \u0816.ð¨•ðšš•; [B1, B2, B3, V5, V6]; xn--rub.xn--tr9c248x; ; ; # à –.ð¨•
+--。𽊆\u0767ð½‹ðž ¬; --.𽊆\u0767ð½‹ðž ¬; [B1, B5, B6, V3, V6]; --.xn--rpb6226k77pfh58p; ; ; # --.ݧð½‹ðž ¬
--.xn--rpb6226k77pfh58p; --.𽊆\u0767ð½‹ðž ¬; [B1, B5, B6, V3, V6]; --.xn--rpb6226k77pfh58p; ; ; # --.ݧð½‹ðž ¬
-ò›­¦ð‹¥ð¹¸.≯\u08B0\u08A6󔛣; ; [B1, P1, V6]; xn--887c2298i5mv6a.xn--vybt688qm8981a; ; ; # ð‹¥.≯ࢰࢦ
-ò›­¦ð‹¥ð¹¸.>\u0338\u08B0\u08A6󔛣; ò›­¦ð‹¥ð¹¸.≯\u08B0\u08A6󔛣; [B1, P1, V6]; xn--887c2298i5mv6a.xn--vybt688qm8981a; ; ; # ð‹¥.≯ࢰࢦ
+ò›­¦ð‹¥ð¹¸.≯\u08B0\u08A6󔛣; ; [B1, V6]; xn--887c2298i5mv6a.xn--vybt688qm8981a; ; ; # ð‹¥.≯ࢰࢦ
+ò›­¦ð‹¥ð¹¸.>\u0338\u08B0\u08A6󔛣; ò›­¦ð‹¥ð¹¸.≯\u08B0\u08A6󔛣; [B1, V6]; xn--887c2298i5mv6a.xn--vybt688qm8981a; ; ; # ð‹¥.≯ࢰࢦ
xn--887c2298i5mv6a.xn--vybt688qm8981a; ò›­¦ð‹¥ð¹¸.≯\u08B0\u08A6󔛣; [B1, V6]; xn--887c2298i5mv6a.xn--vybt688qm8981a; ; ; # ð‹¥.≯ࢰࢦ
-ä”›ó ‡’ò¤¸žð¹§ï¼Ž-䤷; ä”›ò¤¸žð¹§.-䤷; [B1, B5, B6, P1, V3, V6]; xn--2loy662coo60e.xn----0n4a; ; ; # ä”›ð¹§.-䤷
-ä”›ó ‡’ò¤¸žð¹§.-䤷; ä”›ò¤¸žð¹§.-䤷; [B1, B5, B6, P1, V3, V6]; xn--2loy662coo60e.xn----0n4a; ; ; # ä”›ð¹§.-䤷
+ä”›ó ‡’ò¤¸žð¹§ï¼Ž-䤷; ä”›ò¤¸žð¹§.-䤷; [B1, B5, B6, V3, V6]; xn--2loy662coo60e.xn----0n4a; ; ; # ä”›ð¹§.-䤷
+ä”›ó ‡’ò¤¸žð¹§.-䤷; ä”›ò¤¸žð¹§.-䤷; [B1, B5, B6, V3, V6]; xn--2loy662coo60e.xn----0n4a; ; ; # ä”›ð¹§.-䤷
xn--2loy662coo60e.xn----0n4a; ä”›ò¤¸žð¹§.-䤷; [B1, B5, B6, V3, V6]; xn--2loy662coo60e.xn----0n4a; ; ; # ä”›ð¹§.-䤷
ð¹©ï¼Ž\u200D-; ð¹©.\u200D-; [B1, C2, V3]; xn--ho0d.xn----tgn; ; xn--ho0d.-; [B1, V3] # ð¹©.-
ð¹©.\u200D-; ; [B1, C2, V3]; xn--ho0d.xn----tgn; ; xn--ho0d.-; [B1, V3] # ð¹©.-
xn--ho0d.-; ð¹©.-; [B1, V3]; xn--ho0d.-; ; ; # ð¹©.-
xn--ho0d.xn----tgn; ð¹©.\u200D-; [B1, C2, V3]; xn--ho0d.xn----tgn; ; ; # ð¹©.-
-ñ‚ˆ¦å¸·ï½¡â‰¯èº\u1DC8-; ñ‚ˆ¦å¸·.≯èº\u1DC8-; [P1, V3, V6]; xn--qutw175s.xn----mimu6tf67j; ; ; # 帷.≯èºá·ˆ-
-ñ‚ˆ¦å¸·ï½¡>\u0338èº\u1DC8-; ñ‚ˆ¦å¸·.≯èº\u1DC8-; [P1, V3, V6]; xn--qutw175s.xn----mimu6tf67j; ; ; # 帷.≯èºá·ˆ-
-ñ‚ˆ¦å¸·ã€‚≯èº\u1DC8-; ñ‚ˆ¦å¸·.≯èº\u1DC8-; [P1, V3, V6]; xn--qutw175s.xn----mimu6tf67j; ; ; # 帷.≯èºá·ˆ-
-ñ‚ˆ¦å¸·ã€‚>\u0338èº\u1DC8-; ñ‚ˆ¦å¸·.≯èº\u1DC8-; [P1, V3, V6]; xn--qutw175s.xn----mimu6tf67j; ; ; # 帷.≯èºá·ˆ-
+ñ‚ˆ¦å¸·ï½¡â‰¯èº\u1DC8-; ñ‚ˆ¦å¸·.≯èº\u1DC8-; [V3, V6]; xn--qutw175s.xn----mimu6tf67j; ; ; # 帷.≯èºá·ˆ-
+ñ‚ˆ¦å¸·ï½¡>\u0338èº\u1DC8-; ñ‚ˆ¦å¸·.≯èº\u1DC8-; [V3, V6]; xn--qutw175s.xn----mimu6tf67j; ; ; # 帷.≯èºá·ˆ-
+ñ‚ˆ¦å¸·ã€‚≯èº\u1DC8-; ñ‚ˆ¦å¸·.≯èº\u1DC8-; [V3, V6]; xn--qutw175s.xn----mimu6tf67j; ; ; # 帷.≯èºá·ˆ-
+ñ‚ˆ¦å¸·ã€‚>\u0338èº\u1DC8-; ñ‚ˆ¦å¸·.≯èº\u1DC8-; [V3, V6]; xn--qutw175s.xn----mimu6tf67j; ; ; # 帷.≯èºá·ˆ-
xn--qutw175s.xn----mimu6tf67j; ñ‚ˆ¦å¸·.≯èº\u1DC8-; [V3, V6]; xn--qutw175s.xn----mimu6tf67j; ; ; # 帷.≯èºá·ˆ-
-\u200D攌\uABED。ᢖ-Ⴘ; \u200D攌\uABED.ᢖ-Ⴘ; [C2, P1, V6]; xn--1ug592ykp6b.xn----k1g451d; ; xn--p9ut19m.xn----k1g451d; [P1, V6] # 攌꯭.ᢖ-Ⴘ
+\u200D攌\uABED。ᢖ-Ⴘ; \u200D攌\uABED.ᢖ-Ⴘ; [C2, V6]; xn--1ug592ykp6b.xn----k1g451d; ; xn--p9ut19m.xn----k1g451d; [V6] # 攌꯭.ᢖ-Ⴘ
\u200D攌\uABED。ᢖ-ⴘ; \u200D攌\uABED.ᢖ-ⴘ; [C2]; xn--1ug592ykp6b.xn----mck373i; ; xn--p9ut19m.xn----mck373i; [] # 攌꯭.ᢖ-ⴘ
xn--p9ut19m.xn----mck373i; 攌\uABED.ᢖ-ⴘ; ; xn--p9ut19m.xn----mck373i; ; ; # 攌꯭.ᢖ-ⴘ
攌\uABED.ᢖ-ⴘ; ; ; xn--p9ut19m.xn----mck373i; ; ; # 攌꯭.ᢖ-ⴘ
-攌\uABED.ᢖ-Ⴘ; ; [P1, V6]; xn--p9ut19m.xn----k1g451d; ; ; # 攌꯭.ᢖ-Ⴘ
+攌\uABED.ᢖ-Ⴘ; ; [V6]; xn--p9ut19m.xn----k1g451d; ; ; # 攌꯭.ᢖ-Ⴘ
xn--p9ut19m.xn----k1g451d; 攌\uABED.ᢖ-Ⴘ; [V6]; xn--p9ut19m.xn----k1g451d; ; ; # 攌꯭.ᢖ-Ⴘ
xn--1ug592ykp6b.xn----mck373i; \u200D攌\uABED.ᢖ-ⴘ; [C2]; xn--1ug592ykp6b.xn----mck373i; ; ; # 攌꯭.ᢖ-ⴘ
xn--1ug592ykp6b.xn----k1g451d; \u200D攌\uABED.ᢖ-Ⴘ; [C2, V6]; xn--1ug592ykp6b.xn----k1g451d; ; ; # 攌꯭.ᢖ-Ⴘ
-\u200Cꖨ.⒗3툒۳; \u200Cꖨ.⒗3툒۳; [C1, P1, V6]; xn--0ug2473c.xn--3-nyc678tu07m; ; xn--9r8a.xn--3-nyc678tu07m; [P1, V6] # ꖨ.⒗3툒۳
-\u200Cꖨ.⒗3á„ᅭᆩ۳; \u200Cê–¨.â’—3툒۳; [C1, P1, V6]; xn--0ug2473c.xn--3-nyc678tu07m; ; xn--9r8a.xn--3-nyc678tu07m; [P1, V6] # ê–¨.â’—3툒۳
+\u200Cꖨ.⒗3툒۳; \u200Cꖨ.⒗3툒۳; [C1, V6]; xn--0ug2473c.xn--3-nyc678tu07m; ; xn--9r8a.xn--3-nyc678tu07m; [V6] # ꖨ.⒗3툒۳
+\u200Cꖨ.⒗3á„ᅭᆩ۳; \u200Cê–¨.â’—3툒۳; [C1, V6]; xn--0ug2473c.xn--3-nyc678tu07m; ; xn--9r8a.xn--3-nyc678tu07m; [V6] # ê–¨.â’—3툒۳
\u200Cꖨ.16.3툒۳; ; [C1]; xn--0ug2473c.16.xn--3-nyc0117m; ; xn--9r8a.16.xn--3-nyc0117m; [] # ꖨ.16.3툒۳
\u200Cê–¨.16.3á„ᅭᆩ۳; \u200Cê–¨.16.3툒۳; [C1]; xn--0ug2473c.16.xn--3-nyc0117m; ; xn--9r8a.16.xn--3-nyc0117m; [] # ê–¨.16.3툒۳
xn--9r8a.16.xn--3-nyc0117m; ꖨ.16.3툒۳; ; xn--9r8a.16.xn--3-nyc0117m; ; ; # ꖨ.16.3툒۳
@@ -4627,139 +4653,139 @@ xn--9r8a.16.xn--3-nyc0117m; ꖨ.16.3툒۳; ; xn--9r8a.16.xn--3-nyc0117m; ; ; #
xn--0ug2473c.16.xn--3-nyc0117m; \u200Cꖨ.16.3툒۳; [C1]; xn--0ug2473c.16.xn--3-nyc0117m; ; ; # ꖨ.16.3툒۳
xn--9r8a.xn--3-nyc678tu07m; ꖨ.⒗3툒۳; [V6]; xn--9r8a.xn--3-nyc678tu07m; ; ; # ꖨ.⒗3툒۳
xn--0ug2473c.xn--3-nyc678tu07m; \u200Cꖨ.⒗3툒۳; [C1, V6]; xn--0ug2473c.xn--3-nyc678tu07m; ; ; # ꖨ.⒗3툒۳
-⒈걾6.ð±\u06D0; ; [B1, P1, V6]; xn--6-dcps419c.xn--glb1794k; ; ; # ⒈걾6.ð±Û
-⒈걾6.ð±\u06D0; ⒈걾6.ð±\u06D0; [B1, P1, V6]; xn--6-dcps419c.xn--glb1794k; ; ; # ⒈걾6.ð±Û
+⒈걾6.ð±\u06D0; ; [B1, V6]; xn--6-dcps419c.xn--glb1794k; ; ; # ⒈걾6.ð±Û
+⒈걾6.ð±\u06D0; ⒈걾6.ð±\u06D0; [B1, V6]; xn--6-dcps419c.xn--glb1794k; ; ; # ⒈걾6.ð±Û
1.ê±¾6.ð±\u06D0; ; [B1]; 1.xn--6-945e.xn--glb1794k; ; ; # 1.ê±¾6.ð±Û
1.걾6.ð±\u06D0; 1.ê±¾6.ð±\u06D0; [B1]; 1.xn--6-945e.xn--glb1794k; ; ; # 1.ê±¾6.ð±Û
1.xn--6-945e.xn--glb1794k; 1.ê±¾6.ð±\u06D0; [B1]; 1.xn--6-945e.xn--glb1794k; ; ; # 1.ê±¾6.ð±Û
xn--6-dcps419c.xn--glb1794k; ⒈걾6.ð±\u06D0; [B1, V6]; xn--6-dcps419c.xn--glb1794k; ; ; # ⒈걾6.ð±Û
-ð²žðŸ¶â‰®â‰®.󠀧\u0639; ð³ž0≮≮.󠀧\u0639; [B1, B3, P1, V6]; xn--0-ngoa5711v.xn--4gb31034p; ; ; # ð³ž0≮≮.ع
-ð²žðŸ¶<\u0338<\u0338.󠀧\u0639; ð³ž0≮≮.󠀧\u0639; [B1, B3, P1, V6]; xn--0-ngoa5711v.xn--4gb31034p; ; ; # ð³ž0≮≮.ع
-ð²ž0≮≮.󠀧\u0639; ð³ž0≮≮.󠀧\u0639; [B1, B3, P1, V6]; xn--0-ngoa5711v.xn--4gb31034p; ; ; # ð³ž0≮≮.ع
-ð²ž0<\u0338<\u0338.󠀧\u0639; ð³ž0≮≮.󠀧\u0639; [B1, B3, P1, V6]; xn--0-ngoa5711v.xn--4gb31034p; ; ; # ð³ž0≮≮.ع
-ð³ž0<\u0338<\u0338.󠀧\u0639; ð³ž0≮≮.󠀧\u0639; [B1, B3, P1, V6]; xn--0-ngoa5711v.xn--4gb31034p; ; ; # ð³ž0≮≮.ع
-ð³ž0≮≮.󠀧\u0639; ; [B1, B3, P1, V6]; xn--0-ngoa5711v.xn--4gb31034p; ; ; # ð³ž0≮≮.ع
+ð²žðŸ¶â‰®â‰®.󠀧\u0639; ð³ž0≮≮.󠀧\u0639; [B1, B3, V6]; xn--0-ngoa5711v.xn--4gb31034p; ; ; # ð³ž0≮≮.ع
+ð²žðŸ¶<\u0338<\u0338.󠀧\u0639; ð³ž0≮≮.󠀧\u0639; [B1, B3, V6]; xn--0-ngoa5711v.xn--4gb31034p; ; ; # ð³ž0≮≮.ع
+ð²ž0≮≮.󠀧\u0639; ð³ž0≮≮.󠀧\u0639; [B1, B3, V6]; xn--0-ngoa5711v.xn--4gb31034p; ; ; # ð³ž0≮≮.ع
+ð²ž0<\u0338<\u0338.󠀧\u0639; ð³ž0≮≮.󠀧\u0639; [B1, B3, V6]; xn--0-ngoa5711v.xn--4gb31034p; ; ; # ð³ž0≮≮.ع
+ð³ž0<\u0338<\u0338.󠀧\u0639; ð³ž0≮≮.󠀧\u0639; [B1, B3, V6]; xn--0-ngoa5711v.xn--4gb31034p; ; ; # ð³ž0≮≮.ع
+ð³ž0≮≮.󠀧\u0639; ; [B1, B3, V6]; xn--0-ngoa5711v.xn--4gb31034p; ; ; # ð³ž0≮≮.ع
xn--0-ngoa5711v.xn--4gb31034p; ð³ž0≮≮.󠀧\u0639; [B1, B3, V6]; xn--0-ngoa5711v.xn--4gb31034p; ; ; # ð³ž0≮≮.ع
-ð³žðŸ¶<\u0338<\u0338.󠀧\u0639; ð³ž0≮≮.󠀧\u0639; [B1, B3, P1, V6]; xn--0-ngoa5711v.xn--4gb31034p; ; ; # ð³ž0≮≮.ع
-ð³žðŸ¶â‰®â‰®.󠀧\u0639; ð³ž0≮≮.󠀧\u0639; [B1, B3, P1, V6]; xn--0-ngoa5711v.xn--4gb31034p; ; ; # ð³ž0≮≮.ع
-\u0AE3.ð¹º\u115F; ; [B1, B3, B6, P1, V5, V6]; xn--8fc.xn--osd3070k; ; ; # à«£.ð¹º
-xn--8fc.xn--osd3070k; \u0AE3.ð¹º\u115F; [B1, B3, B6, V5, V6]; xn--8fc.xn--osd3070k; ; ; # à«£.ð¹º
+ð³žðŸ¶<\u0338<\u0338.󠀧\u0639; ð³ž0≮≮.󠀧\u0639; [B1, B3, V6]; xn--0-ngoa5711v.xn--4gb31034p; ; ; # ð³ž0≮≮.ع
+ð³žðŸ¶â‰®â‰®.󠀧\u0639; ð³ž0≮≮.󠀧\u0639; [B1, B3, V6]; xn--0-ngoa5711v.xn--4gb31034p; ; ; # ð³ž0≮≮.ع
+\u0AE3.ð¹º\u115F; ; [B1, V5, V6]; xn--8fc.xn--osd3070k; ; ; # à«£.ð¹º
+xn--8fc.xn--osd3070k; \u0AE3.ð¹º\u115F; [B1, V5, V6]; xn--8fc.xn--osd3070k; ; ; # à«£.ð¹º
ðŸð¨™â¸–.\u200D; 1ð¨™â¸–.\u200D; [C2]; xn--1-5bt6845n.xn--1ug; ; xn--1-5bt6845n.; [] # 1ð¨™â¸–.
1ð¨™â¸–.\u200D; ; [C2]; xn--1-5bt6845n.xn--1ug; ; xn--1-5bt6845n.; [] # 1ð¨™â¸–.
xn--1-5bt6845n.; 1ð¨™â¸–.; ; xn--1-5bt6845n.; ; ; # 1ð¨™â¸–.
1ð¨™â¸–.; ; ; xn--1-5bt6845n.; ; ; # 1ð¨™â¸–.
xn--1-5bt6845n.xn--1ug; 1ð¨™â¸–.\u200D; [C2]; xn--1-5bt6845n.xn--1ug; ; ; # 1ð¨™â¸–.
-ðž¤â‰ \u0726\u1A60。-\u200C\u07D5; 𞤲≠\u0726\u1A60.-\u200C\u07D5; [B1, C1, P1, V3, V6]; xn--wnb859grzfzw60c.xn----kcd017p; ; xn--wnb859grzfzw60c.xn----kcd; [B1, P1, V3, V6] # 𞤲≠ܦ᩠.-ß•
-ðž¤=\u0338\u0726\u1A60。-\u200C\u07D5; 𞤲≠\u0726\u1A60.-\u200C\u07D5; [B1, C1, P1, V3, V6]; xn--wnb859grzfzw60c.xn----kcd017p; ; xn--wnb859grzfzw60c.xn----kcd; [B1, P1, V3, V6] # 𞤲≠ܦ᩠.-ß•
-ðž¤â‰ \u0726\u1A60。-\u200C\u07D5; 𞤲≠\u0726\u1A60.-\u200C\u07D5; [B1, C1, P1, V3, V6]; xn--wnb859grzfzw60c.xn----kcd017p; ; xn--wnb859grzfzw60c.xn----kcd; [B1, P1, V3, V6] # 𞤲≠ܦ᩠.-ß•
-ðž¤=\u0338\u0726\u1A60。-\u200C\u07D5; 𞤲≠\u0726\u1A60.-\u200C\u07D5; [B1, C1, P1, V3, V6]; xn--wnb859grzfzw60c.xn----kcd017p; ; xn--wnb859grzfzw60c.xn----kcd; [B1, P1, V3, V6] # 𞤲≠ܦ᩠.-ß•
-𞤲=\u0338\u0726\u1A60。-\u200C\u07D5; 𞤲≠\u0726\u1A60.-\u200C\u07D5; [B1, C1, P1, V3, V6]; xn--wnb859grzfzw60c.xn----kcd017p; ; xn--wnb859grzfzw60c.xn----kcd; [B1, P1, V3, V6] # 𞤲≠ܦ᩠.-ߕ
-𞤲≠\u0726\u1A60。-\u200C\u07D5; 𞤲≠\u0726\u1A60.-\u200C\u07D5; [B1, C1, P1, V3, V6]; xn--wnb859grzfzw60c.xn----kcd017p; ; xn--wnb859grzfzw60c.xn----kcd; [B1, P1, V3, V6] # 𞤲≠ܦ᩠.-ߕ
-xn--wnb859grzfzw60c.xn----kcd; 𞤲≠\u0726\u1A60.-\u07D5; [B1, V3, V6]; xn--wnb859grzfzw60c.xn----kcd; ; ; # 𞤲≠ܦ᩠.-ߕ
-xn--wnb859grzfzw60c.xn----kcd017p; 𞤲≠\u0726\u1A60.-\u200C\u07D5; [B1, C1, V3, V6]; xn--wnb859grzfzw60c.xn----kcd017p; ; ; # 𞤲≠ܦ᩠.-ߕ
-𞤲=\u0338\u0726\u1A60。-\u200C\u07D5; 𞤲≠\u0726\u1A60.-\u200C\u07D5; [B1, C1, P1, V3, V6]; xn--wnb859grzfzw60c.xn----kcd017p; ; xn--wnb859grzfzw60c.xn----kcd; [B1, P1, V3, V6] # 𞤲≠ܦ᩠.-ߕ
-𞤲≠\u0726\u1A60。-\u200C\u07D5; 𞤲≠\u0726\u1A60.-\u200C\u07D5; [B1, C1, P1, V3, V6]; xn--wnb859grzfzw60c.xn----kcd017p; ; xn--wnb859grzfzw60c.xn----kcd; [B1, P1, V3, V6] # 𞤲≠ܦ᩠.-ߕ
+ðž¤â‰ \u0726\u1A60。-\u200C\u07D5; 𞤲≠\u0726\u1A60.-\u200C\u07D5; [B1, C1, V3]; xn--wnb859grzfzw60c.xn----kcd017p; ; xn--wnb859grzfzw60c.xn----kcd; [B1, V3] # 𞤲≠ܦ᩠.-ß•
+ðž¤=\u0338\u0726\u1A60。-\u200C\u07D5; 𞤲≠\u0726\u1A60.-\u200C\u07D5; [B1, C1, V3]; xn--wnb859grzfzw60c.xn----kcd017p; ; xn--wnb859grzfzw60c.xn----kcd; [B1, V3] # 𞤲≠ܦ᩠.-ß•
+ðž¤â‰ \u0726\u1A60。-\u200C\u07D5; 𞤲≠\u0726\u1A60.-\u200C\u07D5; [B1, C1, V3]; xn--wnb859grzfzw60c.xn----kcd017p; ; xn--wnb859grzfzw60c.xn----kcd; [B1, V3] # 𞤲≠ܦ᩠.-ß•
+ðž¤=\u0338\u0726\u1A60。-\u200C\u07D5; 𞤲≠\u0726\u1A60.-\u200C\u07D5; [B1, C1, V3]; xn--wnb859grzfzw60c.xn----kcd017p; ; xn--wnb859grzfzw60c.xn----kcd; [B1, V3] # 𞤲≠ܦ᩠.-ß•
+𞤲=\u0338\u0726\u1A60。-\u200C\u07D5; 𞤲≠\u0726\u1A60.-\u200C\u07D5; [B1, C1, V3]; xn--wnb859grzfzw60c.xn----kcd017p; ; xn--wnb859grzfzw60c.xn----kcd; [B1, V3] # 𞤲≠ܦ᩠.-ߕ
+𞤲≠\u0726\u1A60。-\u200C\u07D5; 𞤲≠\u0726\u1A60.-\u200C\u07D5; [B1, C1, V3]; xn--wnb859grzfzw60c.xn----kcd017p; ; xn--wnb859grzfzw60c.xn----kcd; [B1, V3] # 𞤲≠ܦ᩠.-ߕ
+xn--wnb859grzfzw60c.xn----kcd; 𞤲≠\u0726\u1A60.-\u07D5; [B1, V3]; xn--wnb859grzfzw60c.xn----kcd; ; ; # 𞤲≠ܦ᩠.-ߕ
+xn--wnb859grzfzw60c.xn----kcd017p; 𞤲≠\u0726\u1A60.-\u200C\u07D5; [B1, C1, V3]; xn--wnb859grzfzw60c.xn----kcd017p; ; ; # 𞤲≠ܦ᩠.-ߕ
+𞤲=\u0338\u0726\u1A60。-\u200C\u07D5; 𞤲≠\u0726\u1A60.-\u200C\u07D5; [B1, C1, V3]; xn--wnb859grzfzw60c.xn----kcd017p; ; xn--wnb859grzfzw60c.xn----kcd; [B1, V3] # 𞤲≠ܦ᩠.-ߕ
+𞤲≠\u0726\u1A60。-\u200C\u07D5; 𞤲≠\u0726\u1A60.-\u200C\u07D5; [B1, C1, V3]; xn--wnb859grzfzw60c.xn----kcd017p; ; xn--wnb859grzfzw60c.xn----kcd; [B1, V3] # 𞤲≠ܦ᩠.-ߕ
ð¹°\u0368-ꡧ。\u0675; ð¹°\u0368-ꡧ.\u0627\u0674; [B1]; xn----shb2387jgkqd.xn--mgb8m; ; ; # ð¹°Í¨-ꡧ.اٴ
ð¹°\u0368-ꡧ。\u0627\u0674; ð¹°\u0368-ꡧ.\u0627\u0674; [B1]; xn----shb2387jgkqd.xn--mgb8m; ; ; # ð¹°Í¨-ꡧ.اٴ
xn----shb2387jgkqd.xn--mgb8m; ð¹°\u0368-ꡧ.\u0627\u0674; [B1]; xn----shb2387jgkqd.xn--mgb8m; ; ; # ð¹°Í¨-ꡧ.اٴ
-F󠅟。ò—…♚; f.ò—…♚; [P1, V6]; f.xn--45hz6953f; ; ; # f.♚
-F󠅟。ò—…♚; f.ò—…♚; [P1, V6]; f.xn--45hz6953f; ; ; # f.♚
-f󠅟。ò—…♚; f.ò—…♚; [P1, V6]; f.xn--45hz6953f; ; ; # f.♚
+F󠅟。ò—…♚; f.ò—…♚; [V6]; f.xn--45hz6953f; ; ; # f.♚
+F󠅟。ò—…♚; f.ò—…♚; [V6]; f.xn--45hz6953f; ; ; # f.♚
+f󠅟。ò—…♚; f.ò—…♚; [V6]; f.xn--45hz6953f; ; ; # f.♚
f.xn--45hz6953f; f.ò—…♚; [V6]; f.xn--45hz6953f; ; ; # f.♚
-f󠅟。ò—…♚; f.ò—…♚; [P1, V6]; f.xn--45hz6953f; ; ; # f.♚
-\u0B4Dð‘„´\u1DE9。ðŸ®á‚¸ðž€¨ñƒ¥‡; \u0B4Dð‘„´\u1DE9.2Ⴘ𞀨ñƒ¥‡; [P1, V5, V6]; xn--9ic246gs21p.xn--2-k1g43076adrwq; ; ; # à­ð‘„´á·©.2Ⴘ𞀨
-\u0B4Dð‘„´\u1DE9。2Ⴘ𞀨ñƒ¥‡; \u0B4Dð‘„´\u1DE9.2Ⴘ𞀨ñƒ¥‡; [P1, V5, V6]; xn--9ic246gs21p.xn--2-k1g43076adrwq; ; ; # à­ð‘„´á·©.2Ⴘ𞀨
-\u0B4Dð‘„´\u1DE9。2ⴘ𞀨ñƒ¥‡; \u0B4Dð‘„´\u1DE9.2ⴘ𞀨ñƒ¥‡; [P1, V5, V6]; xn--9ic246gs21p.xn--2-nws2918ndrjr; ; ; # à­ð‘„´á·©.2ⴘ𞀨
+f󠅟。ò—…♚; f.ò—…♚; [V6]; f.xn--45hz6953f; ; ; # f.♚
+\u0B4Dð‘„´\u1DE9。ðŸ®á‚¸ðž€¨ñƒ¥‡; \u0B4Dð‘„´\u1DE9.2Ⴘ𞀨ñƒ¥‡; [V5, V6]; xn--9ic246gs21p.xn--2-k1g43076adrwq; ; ; # à­ð‘„´á·©.2Ⴘ𞀨
+\u0B4Dð‘„´\u1DE9。2Ⴘ𞀨ñƒ¥‡; \u0B4Dð‘„´\u1DE9.2Ⴘ𞀨ñƒ¥‡; [V5, V6]; xn--9ic246gs21p.xn--2-k1g43076adrwq; ; ; # à­ð‘„´á·©.2Ⴘ𞀨
+\u0B4Dð‘„´\u1DE9。2ⴘ𞀨ñƒ¥‡; \u0B4Dð‘„´\u1DE9.2ⴘ𞀨ñƒ¥‡; [V5, V6]; xn--9ic246gs21p.xn--2-nws2918ndrjr; ; ; # à­ð‘„´á·©.2ⴘ𞀨
xn--9ic246gs21p.xn--2-nws2918ndrjr; \u0B4Dð‘„´\u1DE9.2ⴘ𞀨ñƒ¥‡; [V5, V6]; xn--9ic246gs21p.xn--2-nws2918ndrjr; ; ; # à­ð‘„´á·©.2ⴘ𞀨
xn--9ic246gs21p.xn--2-k1g43076adrwq; \u0B4Dð‘„´\u1DE9.2Ⴘ𞀨ñƒ¥‡; [V5, V6]; xn--9ic246gs21p.xn--2-k1g43076adrwq; ; ; # à­ð‘„´á·©.2Ⴘ𞀨
-\u0B4Dð‘„´\u1DE9。ðŸ®â´˜ðž€¨ñƒ¥‡; \u0B4Dð‘„´\u1DE9.2ⴘ𞀨ñƒ¥‡; [P1, V5, V6]; xn--9ic246gs21p.xn--2-nws2918ndrjr; ; ; # à­ð‘„´á·©.2ⴘ𞀨
-ò“ ­\u200C\u200C⒈。勉ð‘…; ò“ ­\u200C\u200Câ’ˆ.勉ð‘…; [C1, P1, V6]; xn--0uga855aez302a.xn--4grs325b; ; xn--tsh11906f.xn--4grs325b; [P1, V6] # â’ˆ.勉ð‘…
-ò“ ­\u200C\u200C1.。勉ð‘…; ò“ ­\u200C\u200C1..勉ð‘…; [C1, P1, V6, X4_2]; xn--1-rgna61159u..xn--4grs325b; [C1, P1, V6, A4_2]; xn--1-yi00h..xn--4grs325b; [P1, V6, A4_2] # 1..勉ð‘…
+\u0B4Dð‘„´\u1DE9。ðŸ®â´˜ðž€¨ñƒ¥‡; \u0B4Dð‘„´\u1DE9.2ⴘ𞀨ñƒ¥‡; [V5, V6]; xn--9ic246gs21p.xn--2-nws2918ndrjr; ; ; # à­ð‘„´á·©.2ⴘ𞀨
+ò“ ­\u200C\u200C⒈。勉ð‘…; ò“ ­\u200C\u200Câ’ˆ.勉ð‘…; [C1, V6]; xn--0uga855aez302a.xn--4grs325b; ; xn--tsh11906f.xn--4grs325b; [V6] # â’ˆ.勉ð‘…
+ò“ ­\u200C\u200C1.。勉ð‘…; ò“ ­\u200C\u200C1..勉ð‘…; [C1, V6, X4_2]; xn--1-rgna61159u..xn--4grs325b; [C1, V6, A4_2]; xn--1-yi00h..xn--4grs325b; [V6, A4_2] # 1..勉ð‘…
xn--1-yi00h..xn--4grs325b; ò“ ­1..勉ð‘…; [V6, X4_2]; xn--1-yi00h..xn--4grs325b; [V6, A4_2]; ; # 1..勉ð‘…
xn--1-rgna61159u..xn--4grs325b; ò“ ­\u200C\u200C1..勉ð‘…; [C1, V6, X4_2]; xn--1-rgna61159u..xn--4grs325b; [C1, V6, A4_2]; ; # 1..勉ð‘…
xn--tsh11906f.xn--4grs325b; ò“ ­â’ˆ.勉ð‘…; [V6]; xn--tsh11906f.xn--4grs325b; ; ; # â’ˆ.勉ð‘…
xn--0uga855aez302a.xn--4grs325b; ò“ ­\u200C\u200Câ’ˆ.勉ð‘…; [C1, V6]; xn--0uga855aez302a.xn--4grs325b; ; ; # â’ˆ.勉ð‘…
-ᡃ.玿ñ«ˆœó•ž; ; [P1, V6]; xn--27e.xn--7cy81125a0yq4a; ; ; # ᡃ.玿
+ᡃ.玿ñ«ˆœó•ž; ; [V6]; xn--27e.xn--7cy81125a0yq4a; ; ; # ᡃ.玿
xn--27e.xn--7cy81125a0yq4a; ᡃ.玿ñ«ˆœó•ž; [V6]; xn--27e.xn--7cy81125a0yq4a; ; ; # ᡃ.玿
-\u200C\u200C。⒈≯ðŸµ; \u200C\u200C.⒈≯9; [C1, P1, V6]; xn--0uga.xn--9-ogo37g; ; .xn--9-ogo37g; [P1, V6, A4_2] # .⒈≯9
-\u200C\u200C。⒈>\u0338ðŸµ; \u200C\u200C.⒈≯9; [C1, P1, V6]; xn--0uga.xn--9-ogo37g; ; .xn--9-ogo37g; [P1, V6, A4_2] # .⒈≯9
-\u200C\u200C。1.≯9; \u200C\u200C.1.≯9; [C1, P1, V6]; xn--0uga.1.xn--9-ogo; ; .1.xn--9-ogo; [P1, V6, A4_2] # .1.≯9
-\u200C\u200C。1.>\u03389; \u200C\u200C.1.≯9; [C1, P1, V6]; xn--0uga.1.xn--9-ogo; ; .1.xn--9-ogo; [P1, V6, A4_2] # .1.≯9
-.1.xn--9-ogo; .1.≯9; [V6, X4_2]; .1.xn--9-ogo; [V6, A4_2]; ; # .1.≯9
-xn--0uga.1.xn--9-ogo; \u200C\u200C.1.≯9; [C1, V6]; xn--0uga.1.xn--9-ogo; ; ; # .1.≯9
+\u200C\u200C。⒈≯ðŸµ; \u200C\u200C.⒈≯9; [C1, V6]; xn--0uga.xn--9-ogo37g; ; .xn--9-ogo37g; [V6, A4_2] # .⒈≯9
+\u200C\u200C。⒈>\u0338ðŸµ; \u200C\u200C.⒈≯9; [C1, V6]; xn--0uga.xn--9-ogo37g; ; .xn--9-ogo37g; [V6, A4_2] # .⒈≯9
+\u200C\u200C。1.≯9; \u200C\u200C.1.≯9; [C1]; xn--0uga.1.xn--9-ogo; ; .1.xn--9-ogo; [A4_2] # .1.≯9
+\u200C\u200C。1.>\u03389; \u200C\u200C.1.≯9; [C1]; xn--0uga.1.xn--9-ogo; ; .1.xn--9-ogo; [A4_2] # .1.≯9
+.1.xn--9-ogo; .1.≯9; [X4_2]; .1.xn--9-ogo; [A4_2]; ; # .1.≯9
+xn--0uga.1.xn--9-ogo; \u200C\u200C.1.≯9; [C1]; xn--0uga.1.xn--9-ogo; ; ; # .1.≯9
.xn--9-ogo37g; .⒈≯9; [V6, X4_2]; .xn--9-ogo37g; [V6, A4_2]; ; # .⒈≯9
xn--0uga.xn--9-ogo37g; \u200C\u200C.⒈≯9; [C1, V6]; xn--0uga.xn--9-ogo37g; ; ; # .⒈≯9
-\u115F\u1DE0ò€.𺻆≯ð®; ; [B5, B6, P1, V6]; xn--osd615d5659o.xn--hdh5192gkm6r; ; ; # á· .≯ð®
-\u115F\u1DE0ò€.𺻆>\u0338ð®; \u115F\u1DE0ò€.𺻆≯ð®; [B5, B6, P1, V6]; xn--osd615d5659o.xn--hdh5192gkm6r; ; ; # á· .≯ð®
+\u115F\u1DE0ò€.𺻆≯ð®; ; [B5, B6, V6]; xn--osd615d5659o.xn--hdh5192gkm6r; ; ; # á· .≯ð®
+\u115F\u1DE0ò€.𺻆>\u0338ð®; \u115F\u1DE0ò€.𺻆≯ð®; [B5, B6, V6]; xn--osd615d5659o.xn--hdh5192gkm6r; ; ; # á· .≯ð®
xn--osd615d5659o.xn--hdh5192gkm6r; \u115F\u1DE0ò€.𺻆≯ð®; [B5, B6, V6]; xn--osd615d5659o.xn--hdh5192gkm6r; ; ; # á· .≯ð®
-ó „«ð©¤\u200D\u063E.ð©©-\u081E󑼩; ð©¤\u200D\u063E.ð©©-\u081E󑼩; [B1, C2, P1, V5, V6]; xn--9gb723kg862a.xn----qgd52296avol4f; ; xn--9gb5080v.xn----qgd52296avol4f; [B1, P1, V5, V6] # ð©¤Ø¾.ð©©-à ž
+ó „«ð©¤\u200D\u063E.ð©©-\u081E󑼩; ð©¤\u200D\u063E.ð©©-\u081E󑼩; [B1, C2, V5, V6]; xn--9gb723kg862a.xn----qgd52296avol4f; ; xn--9gb5080v.xn----qgd52296avol4f; [B1, V5, V6] # ð©¤Ø¾.ð©©-à ž
xn--9gb5080v.xn----qgd52296avol4f; ð©¤\u063E.ð©©-\u081E󑼩; [B1, V5, V6]; xn--9gb5080v.xn----qgd52296avol4f; ; ; # ð©¤Ø¾.ð©©-à ž
xn--9gb723kg862a.xn----qgd52296avol4f; ð©¤\u200D\u063E.ð©©-\u081E󑼩; [B1, C2, V5, V6]; xn--9gb723kg862a.xn----qgd52296avol4f; ; ; # ð©¤Ø¾.ð©©-à ž
\u20DA.𑘿-; \u20DA.𑘿-; [V3, V5]; xn--w0g.xn----bd0j; ; ; # ⃚.𑘿-
\u20DA.𑘿-; ; [V3, V5]; xn--w0g.xn----bd0j; ; ; # ⃚.𑘿-
xn--w0g.xn----bd0j; \u20DA.𑘿-; [V3, V5]; xn--w0g.xn----bd0j; ; ; # ⃚.𑘿-
-䮸ß.󠵟󠭎紙\u08A8; ; [B1, P1, V6]; xn--zca5349a.xn--xyb1370div70kpzba; ; xn--ss-sf1c.xn--xyb1370div70kpzba; # 䮸ß.紙ࢨ
-䮸SS.󠵟󠭎紙\u08A8; 䮸ss.󠵟󠭎紙\u08A8; [B1, P1, V6]; xn--ss-sf1c.xn--xyb1370div70kpzba; ; ; # 䮸ss.紙ࢨ
-䮸ss.󠵟󠭎紙\u08A8; ; [B1, P1, V6]; xn--ss-sf1c.xn--xyb1370div70kpzba; ; ; # 䮸ss.紙ࢨ
-䮸Ss.󠵟󠭎紙\u08A8; 䮸ss.󠵟󠭎紙\u08A8; [B1, P1, V6]; xn--ss-sf1c.xn--xyb1370div70kpzba; ; ; # 䮸ss.紙ࢨ
+䮸ß.󠵟󠭎紙\u08A8; ; [B1, V6]; xn--zca5349a.xn--xyb1370div70kpzba; ; xn--ss-sf1c.xn--xyb1370div70kpzba; # 䮸ß.紙ࢨ
+䮸SS.󠵟󠭎紙\u08A8; 䮸ss.󠵟󠭎紙\u08A8; [B1, V6]; xn--ss-sf1c.xn--xyb1370div70kpzba; ; ; # 䮸ss.紙ࢨ
+䮸ss.󠵟󠭎紙\u08A8; ; [B1, V6]; xn--ss-sf1c.xn--xyb1370div70kpzba; ; ; # 䮸ss.紙ࢨ
+䮸Ss.󠵟󠭎紙\u08A8; 䮸ss.󠵟󠭎紙\u08A8; [B1, V6]; xn--ss-sf1c.xn--xyb1370div70kpzba; ; ; # 䮸ss.紙ࢨ
xn--ss-sf1c.xn--xyb1370div70kpzba; 䮸ss.󠵟󠭎紙\u08A8; [B1, V6]; xn--ss-sf1c.xn--xyb1370div70kpzba; ; ; # 䮸ss.紙ࢨ
xn--zca5349a.xn--xyb1370div70kpzba; 䮸ß.󠵟󠭎紙\u08A8; [B1, V6]; xn--zca5349a.xn--xyb1370div70kpzba; ; ; # 䮸ß.紙ࢨ
--Ⴞ.-ð©¨â…”ð¦•; -Ⴞ.-ð©¨2â„3ð¦•; [B1, P1, V3, V6]; xn----w1g.xn---23-pt0a0433lk3jj; ; ; # -Ⴞ.-ð©¨2â„3ð¦•
--Ⴞ.-ð©¨2â„3ð¦•; ; [B1, P1, V3, V6]; xn----w1g.xn---23-pt0a0433lk3jj; ; ; # -Ⴞ.-ð©¨2â„3ð¦•
+-Ⴞ.-ð©¨â…”ð¦•; -Ⴞ.-ð©¨2â„3ð¦•; [B1, V3, V6]; xn----w1g.xn---23-pt0a0433lk3jj; ; ; # -Ⴞ.-ð©¨2â„3ð¦•
+-Ⴞ.-ð©¨2â„3ð¦•; ; [B1, V3, V6]; xn----w1g.xn---23-pt0a0433lk3jj; ; ; # -Ⴞ.-ð©¨2â„3ð¦•
-â´ž.-ð©¨2â„3ð¦•; ; [B1, V3]; xn----zws.xn---23-pt0a0433lk3jj; ; ; # -â´ž.-ð©¨2â„3ð¦•
xn----zws.xn---23-pt0a0433lk3jj; -â´ž.-ð©¨2â„3ð¦•; [B1, V3]; xn----zws.xn---23-pt0a0433lk3jj; ; ; # -â´ž.-ð©¨2â„3ð¦•
xn----w1g.xn---23-pt0a0433lk3jj; -Ⴞ.-ð©¨2â„3ð¦•; [B1, V3, V6]; xn----w1g.xn---23-pt0a0433lk3jj; ; ; # -Ⴞ.-ð©¨2â„3ð¦•
-â´ž.-ð©¨â…”ð¦•; -â´ž.-ð©¨2â„3ð¦•; [B1, V3]; xn----zws.xn---23-pt0a0433lk3jj; ; ; # -â´ž.-ð©¨2â„3ð¦•
-󧈯ð¹¯\u0AC2。ò–¢¨ð®ñ‡¼–á¡‚; 󧈯ð¹¯\u0AC2.ò–¢¨ð®ñ‡¼–á¡‚; [B5, B6, P1, V6]; xn--bfc7604kv8m3g.xn--17e5565jl7zw4h16a; ; ; # ð¹¯à«‚.ð®á¡‚
-󧈯ð¹¯\u0AC2。ò–¢¨ð®ñ‡¼–á¡‚; 󧈯ð¹¯\u0AC2.ò–¢¨ð®ñ‡¼–á¡‚; [B5, B6, P1, V6]; xn--bfc7604kv8m3g.xn--17e5565jl7zw4h16a; ; ; # ð¹¯à«‚.ð®á¡‚
+󧈯ð¹¯\u0AC2。ò–¢¨ð®ñ‡¼–á¡‚; 󧈯ð¹¯\u0AC2.ò–¢¨ð®ñ‡¼–á¡‚; [B5, B6, V6]; xn--bfc7604kv8m3g.xn--17e5565jl7zw4h16a; ; ; # ð¹¯à«‚.ð®á¡‚
+󧈯ð¹¯\u0AC2。ò–¢¨ð®ñ‡¼–á¡‚; 󧈯ð¹¯\u0AC2.ò–¢¨ð®ñ‡¼–á¡‚; [B5, B6, V6]; xn--bfc7604kv8m3g.xn--17e5565jl7zw4h16a; ; ; # ð¹¯à«‚.ð®á¡‚
xn--bfc7604kv8m3g.xn--17e5565jl7zw4h16a; 󧈯ð¹¯\u0AC2.ò–¢¨ð®ñ‡¼–á¡‚; [B5, B6, V6]; xn--bfc7604kv8m3g.xn--17e5565jl7zw4h16a; ; ; # ð¹¯à«‚.ð®á¡‚
-\u1082-\u200D\uA8EA.ꡊ\u200D񼸳; \u1082-\u200D\uA8EA.ꡊ\u200D񼸳; [C2, P1, V5, V6]; xn----gyg250jio7k.xn--1ug8774cri56d; ; xn----gyg3618i.xn--jc9ao4185a; [P1, V5, V6] # ႂ-꣪.ꡊ
-\u1082-\u200D\uA8EA.ꡊ\u200D񼸳; ; [C2, P1, V5, V6]; xn----gyg250jio7k.xn--1ug8774cri56d; ; xn----gyg3618i.xn--jc9ao4185a; [P1, V5, V6] # ႂ-꣪.ꡊ
+\u1082-\u200D\uA8EA.ꡊ\u200D񼸳; \u1082-\u200D\uA8EA.ꡊ\u200D񼸳; [C2, V5, V6]; xn----gyg250jio7k.xn--1ug8774cri56d; ; xn----gyg3618i.xn--jc9ao4185a; [V5, V6] # ႂ-꣪.ꡊ
+\u1082-\u200D\uA8EA.ꡊ\u200D񼸳; ; [C2, V5, V6]; xn----gyg250jio7k.xn--1ug8774cri56d; ; xn----gyg3618i.xn--jc9ao4185a; [V5, V6] # ႂ-꣪.ꡊ
xn----gyg3618i.xn--jc9ao4185a; \u1082-\uA8EA.ꡊ񼸳; [V5, V6]; xn----gyg3618i.xn--jc9ao4185a; ; ; # ႂ-꣪.ꡊ
xn----gyg250jio7k.xn--1ug8774cri56d; \u1082-\u200D\uA8EA.ꡊ\u200D񼸳; [C2, V5, V6]; xn----gyg250jio7k.xn--1ug8774cri56d; ; ; # ႂ-꣪.ꡊ
-۱。≠\u0668; ۱.≠\u0668; [B1, P1, V6]; xn--emb.xn--hib334l; ; ; # ۱.≠٨
-۱。=\u0338\u0668; ۱.≠\u0668; [B1, P1, V6]; xn--emb.xn--hib334l; ; ; # ۱.≠٨
-xn--emb.xn--hib334l; ۱.≠\u0668; [B1, V6]; xn--emb.xn--hib334l; ; ; # ۱.≠٨
+۱。≠\u0668; ۱.≠\u0668; [B1]; xn--emb.xn--hib334l; ; ; # ۱.≠٨
+۱。=\u0338\u0668; ۱.≠\u0668; [B1]; xn--emb.xn--hib334l; ; ; # ۱.≠٨
+xn--emb.xn--hib334l; ۱.≠\u0668; [B1]; xn--emb.xn--hib334l; ; ; # ۱.≠٨
𑈵廊.ð ; ; [V5]; xn--xytw701b.xn--yc9c; ; ; # 𑈵廊.ð 
xn--xytw701b.xn--yc9c; 𑈵廊.ð ; [V5]; xn--xytw701b.xn--yc9c; ; ; # 𑈵廊.ð 
-\u200D\u0356-.-Ⴐ\u0661; \u200D\u0356-.-Ⴐ\u0661; [B1, C2, P1, V3, V6]; xn----rgb661t.xn----bqc030f; ; xn----rgb.xn----bqc030f; [B1, P1, V3, V5, V6] # ͖-.-Ⴐ١
-\u200D\u0356-.-á‚°\u0661; ; [B1, C2, P1, V3, V6]; xn----rgb661t.xn----bqc030f; ; xn----rgb.xn----bqc030f; [B1, P1, V3, V5, V6] # Í–-.-á‚°Ù¡
+\u200D\u0356-.-Ⴐ\u0661; \u200D\u0356-.-Ⴐ\u0661; [B1, C2, V3, V6]; xn----rgb661t.xn----bqc030f; ; xn----rgb.xn----bqc030f; [B1, V3, V5, V6] # ͖-.-Ⴐ١
+\u200D\u0356-.-á‚°\u0661; ; [B1, C2, V3, V6]; xn----rgb661t.xn----bqc030f; ; xn----rgb.xn----bqc030f; [B1, V3, V5, V6] # Í–-.-á‚°Ù¡
\u200D\u0356-.-â´\u0661; ; [B1, C2, V3]; xn----rgb661t.xn----bqc2280a; ; xn----rgb.xn----bqc2280a; [B1, V3, V5] # Í–-.-â´Ù¡
xn----rgb.xn----bqc2280a; \u0356-.-â´\u0661; [B1, V3, V5]; xn----rgb.xn----bqc2280a; ; ; # Í–-.-â´Ù¡
xn----rgb661t.xn----bqc2280a; \u200D\u0356-.-â´\u0661; [B1, C2, V3]; xn----rgb661t.xn----bqc2280a; ; ; # Í–-.-â´Ù¡
xn----rgb.xn----bqc030f; \u0356-.-á‚°\u0661; [B1, V3, V5, V6]; xn----rgb.xn----bqc030f; ; ; # Í–-.-á‚°Ù¡
xn----rgb661t.xn----bqc030f; \u200D\u0356-.-á‚°\u0661; [B1, C2, V3, V6]; xn----rgb661t.xn----bqc030f; ; ; # Í–-.-á‚°Ù¡
\u200D\u0356-.-â´\u0661; \u200D\u0356-.-â´\u0661; [B1, C2, V3]; xn----rgb661t.xn----bqc2280a; ; xn----rgb.xn----bqc2280a; [B1, V3, V5] # Í–-.-â´Ù¡
-\u063A\u0661æŒó¾¯.-; ; [B1, B2, B3, P1, V3, V6]; xn--5gb2f4205aqi47p.-; ; ; # غ١æŒ.-
+\u063A\u0661æŒó¾¯.-; ; [B1, B2, B3, V3, V6]; xn--5gb2f4205aqi47p.-; ; ; # غ١æŒ.-
xn--5gb2f4205aqi47p.-; \u063A\u0661æŒó¾¯.-; [B1, B2, B3, V3, V6]; xn--5gb2f4205aqi47p.-; ; ; # غ١æŒ.-
\u06EF。ð¹§ðž¤½; \u06EF.ð¹§ðž¤½; [B1]; xn--cmb.xn--fo0dy848a; ; ; # Û¯.ð¹§ðž¤½
\u06EF。ð¹§ðž¤½; \u06EF.ð¹§ðž¤½; [B1]; xn--cmb.xn--fo0dy848a; ; ; # Û¯.ð¹§ðž¤½
\u06EF。ð¹§ðž¤›; \u06EF.ð¹§ðž¤½; [B1]; xn--cmb.xn--fo0dy848a; ; ; # Û¯.ð¹§ðž¤½
xn--cmb.xn--fo0dy848a; \u06EF.ð¹§ðž¤½; [B1]; xn--cmb.xn--fo0dy848a; ; ; # Û¯.ð¹§ðž¤½
\u06EF。ð¹§ðž¤›; \u06EF.ð¹§ðž¤½; [B1]; xn--cmb.xn--fo0dy848a; ; ; # Û¯.ð¹§ðž¤½
-Ⴞ𶛀𛗻.ᢗ릫; Ⴞ𶛀𛗻.ᢗ릫; [P1, V6]; xn--2nd8876sgl2j.xn--hbf6853f; ; ; # Ⴞ.ᢗ릫
-Ⴞ𶛀𛗻.ᢗ릫; Ⴞ𶛀𛗻.ᢗ릫; [P1, V6]; xn--2nd8876sgl2j.xn--hbf6853f; ; ; # Ⴞ.ᢗ릫
-Ⴞ𶛀𛗻.ᢗ릫; ; [P1, V6]; xn--2nd8876sgl2j.xn--hbf6853f; ; ; # Ⴞ.ᢗ릫
-Ⴞ𶛀𛗻.ᢗ릫; Ⴞ𶛀𛗻.ᢗ릫; [P1, V6]; xn--2nd8876sgl2j.xn--hbf6853f; ; ; # Ⴞ.ᢗ릫
-ⴞ𶛀𛗻.ᢗ릫; ⴞ𶛀𛗻.ᢗ릫; [P1, V6]; xn--mlj0486jgl2j.xn--hbf6853f; ; ; # ⴞ.ᢗ릫
-ⴞ𶛀𛗻.ᢗ릫; ; [P1, V6]; xn--mlj0486jgl2j.xn--hbf6853f; ; ; # ⴞ.ᢗ릫
+Ⴞ𶛀𛗻.ᢗ릫; Ⴞ𶛀𛗻.ᢗ릫; [V6]; xn--2nd8876sgl2j.xn--hbf6853f; ; ; # Ⴞ.ᢗ릫
+Ⴞ𶛀𛗻.ᢗ릫; Ⴞ𶛀𛗻.ᢗ릫; [V6]; xn--2nd8876sgl2j.xn--hbf6853f; ; ; # Ⴞ.ᢗ릫
+Ⴞ𶛀𛗻.ᢗ릫; ; [V6]; xn--2nd8876sgl2j.xn--hbf6853f; ; ; # Ⴞ.ᢗ릫
+Ⴞ𶛀𛗻.ᢗ릫; Ⴞ𶛀𛗻.ᢗ릫; [V6]; xn--2nd8876sgl2j.xn--hbf6853f; ; ; # Ⴞ.ᢗ릫
+ⴞ𶛀𛗻.ᢗ릫; ⴞ𶛀𛗻.ᢗ릫; [V6]; xn--mlj0486jgl2j.xn--hbf6853f; ; ; # ⴞ.ᢗ릫
+ⴞ𶛀𛗻.ᢗ릫; ; [V6]; xn--mlj0486jgl2j.xn--hbf6853f; ; ; # ⴞ.ᢗ릫
xn--mlj0486jgl2j.xn--hbf6853f; ⴞ𶛀𛗻.ᢗ릫; [V6]; xn--mlj0486jgl2j.xn--hbf6853f; ; ; # ⴞ.ᢗ릫
xn--2nd8876sgl2j.xn--hbf6853f; Ⴞ𶛀𛗻.ᢗ릫; [V6]; xn--2nd8876sgl2j.xn--hbf6853f; ; ; # Ⴞ.ᢗ릫
-ⴞ𶛀𛗻.ᢗ릫; ⴞ𶛀𛗻.ᢗ릫; [P1, V6]; xn--mlj0486jgl2j.xn--hbf6853f; ; ; # ⴞ.ᢗ릫
-ⴞ𶛀𛗻.ᢗ릫; ⴞ𶛀𛗻.ᢗ릫; [P1, V6]; xn--mlj0486jgl2j.xn--hbf6853f; ; ; # ⴞ.ᢗ릫
-󠎃󗭞\u06B7ð¹·ï½¡â‰¯\u200C\u1DFE; 󠎃󗭞\u06B7ð¹·.≯\u200C\u1DFE; [B1, C1, P1, V6]; xn--qkb4516kbi06fg2id.xn--zfg59fm0c; ; xn--qkb4516kbi06fg2id.xn--zfg31q; [B1, P1, V6] # Ú·ð¹·.≯᷾
-󠎃󗭞\u06B7ð¹·ï½¡>\u0338\u200C\u1DFE; 󠎃󗭞\u06B7ð¹·.≯\u200C\u1DFE; [B1, C1, P1, V6]; xn--qkb4516kbi06fg2id.xn--zfg59fm0c; ; xn--qkb4516kbi06fg2id.xn--zfg31q; [B1, P1, V6] # Ú·ð¹·.≯᷾
-󠎃󗭞\u06B7ð¹·ã€‚≯\u200C\u1DFE; 󠎃󗭞\u06B7ð¹·.≯\u200C\u1DFE; [B1, C1, P1, V6]; xn--qkb4516kbi06fg2id.xn--zfg59fm0c; ; xn--qkb4516kbi06fg2id.xn--zfg31q; [B1, P1, V6] # Ú·ð¹·.≯᷾
-󠎃󗭞\u06B7ð¹·ã€‚>\u0338\u200C\u1DFE; 󠎃󗭞\u06B7ð¹·.≯\u200C\u1DFE; [B1, C1, P1, V6]; xn--qkb4516kbi06fg2id.xn--zfg59fm0c; ; xn--qkb4516kbi06fg2id.xn--zfg31q; [B1, P1, V6] # Ú·ð¹·.≯᷾
+ⴞ𶛀𛗻.ᢗ릫; ⴞ𶛀𛗻.ᢗ릫; [V6]; xn--mlj0486jgl2j.xn--hbf6853f; ; ; # ⴞ.ᢗ릫
+ⴞ𶛀𛗻.ᢗ릫; ⴞ𶛀𛗻.ᢗ릫; [V6]; xn--mlj0486jgl2j.xn--hbf6853f; ; ; # ⴞ.ᢗ릫
+󠎃󗭞\u06B7ð¹·ï½¡â‰¯\u200C\u1DFE; 󠎃󗭞\u06B7ð¹·.≯\u200C\u1DFE; [B1, C1, V6]; xn--qkb4516kbi06fg2id.xn--zfg59fm0c; ; xn--qkb4516kbi06fg2id.xn--zfg31q; [B1, V6] # Ú·ð¹·.≯᷾
+󠎃󗭞\u06B7ð¹·ï½¡>\u0338\u200C\u1DFE; 󠎃󗭞\u06B7ð¹·.≯\u200C\u1DFE; [B1, C1, V6]; xn--qkb4516kbi06fg2id.xn--zfg59fm0c; ; xn--qkb4516kbi06fg2id.xn--zfg31q; [B1, V6] # Ú·ð¹·.≯᷾
+󠎃󗭞\u06B7ð¹·ã€‚≯\u200C\u1DFE; 󠎃󗭞\u06B7ð¹·.≯\u200C\u1DFE; [B1, C1, V6]; xn--qkb4516kbi06fg2id.xn--zfg59fm0c; ; xn--qkb4516kbi06fg2id.xn--zfg31q; [B1, V6] # Ú·ð¹·.≯᷾
+󠎃󗭞\u06B7ð¹·ã€‚>\u0338\u200C\u1DFE; 󠎃󗭞\u06B7ð¹·.≯\u200C\u1DFE; [B1, C1, V6]; xn--qkb4516kbi06fg2id.xn--zfg59fm0c; ; xn--qkb4516kbi06fg2id.xn--zfg31q; [B1, V6] # Ú·ð¹·.≯᷾
xn--qkb4516kbi06fg2id.xn--zfg31q; 󠎃󗭞\u06B7ð¹·.≯\u1DFE; [B1, V6]; xn--qkb4516kbi06fg2id.xn--zfg31q; ; ; # Ú·ð¹·.≯᷾
xn--qkb4516kbi06fg2id.xn--zfg59fm0c; 󠎃󗭞\u06B7ð¹·.≯\u200C\u1DFE; [B1, C1, V6]; xn--qkb4516kbi06fg2id.xn--zfg59fm0c; ; ; # Ú·ð¹·.≯᷾
-ᛎó …ó •\u200D。ð¹¾ð¹ªð»-; ᛎó •\u200D.ð¹¾ð¹ªð»-; [B1, B6, C2, P1, V3, V6]; xn--fxe848bq3411a.xn----q26i2bvu; ; xn--fxe63563p.xn----q26i2bvu; [B1, B6, P1, V3, V6] # ᛎ.ð¹¾ð¹ª-
-ᛎó …ó •\u200D。ð¹¾ð¹ªð»-; ᛎó •\u200D.ð¹¾ð¹ªð»-; [B1, B6, C2, P1, V3, V6]; xn--fxe848bq3411a.xn----q26i2bvu; ; xn--fxe63563p.xn----q26i2bvu; [B1, B6, P1, V3, V6] # ᛎ.ð¹¾ð¹ª-
+ᛎó …ó •\u200D。ð¹¾ð¹ªð»-; ᛎó •\u200D.ð¹¾ð¹ªð»-; [B1, B6, C2, V3, V6]; xn--fxe848bq3411a.xn----q26i2bvu; ; xn--fxe63563p.xn----q26i2bvu; [B1, B6, V3, V6] # ᛎ.ð¹¾ð¹ª-
+ᛎó …ó •\u200D。ð¹¾ð¹ªð»-; ᛎó •\u200D.ð¹¾ð¹ªð»-; [B1, B6, C2, V3, V6]; xn--fxe848bq3411a.xn----q26i2bvu; ; xn--fxe63563p.xn----q26i2bvu; [B1, B6, V3, V6] # ᛎ.ð¹¾ð¹ª-
xn--fxe63563p.xn----q26i2bvu; ᛎó •.ð¹¾ð¹ªð»-; [B1, B6, V3, V6]; xn--fxe63563p.xn----q26i2bvu; ; ; # ᛎ.ð¹¾ð¹ª-
xn--fxe848bq3411a.xn----q26i2bvu; ᛎó •\u200D.ð¹¾ð¹ªð»-; [B1, B6, C2, V3, V6]; xn--fxe848bq3411a.xn----q26i2bvu; ; ; # ᛎ.ð¹¾ð¹ª-
ð¹¶.ð«‚; ; [B1]; xn--uo0d.xn--rw9c; ; ; # ð¹¶.ð«‚
xn--uo0d.xn--rw9c; ð¹¶.ð«‚; [B1]; xn--uo0d.xn--rw9c; ; ; # ð¹¶.ð«‚
-ß\u200D\u103A。⒈; ß\u200D\u103A.⒈; [C2, P1, V6]; xn--zca679eh2l.xn--tsh; ; xn--ss-f4j.xn--tsh; [P1, V6] # ß်.⒈
+ß\u200D\u103A。⒈; ß\u200D\u103A.⒈; [C2, V6]; xn--zca679eh2l.xn--tsh; ; xn--ss-f4j.xn--tsh; [V6] # ß်.⒈
ß\u200D\u103A。1.; ß\u200D\u103A.1.; [C2]; xn--zca679eh2l.1.; ; xn--ss-f4j.1.; [] # ß်.1.
SS\u200D\u103A。1.; ss\u200D\u103A.1.; [C2]; xn--ss-f4j585j.1.; ; xn--ss-f4j.1.; [] # ss်.1.
ss\u200D\u103A。1.; ss\u200D\u103A.1.; [C2]; xn--ss-f4j585j.1.; ; xn--ss-f4j.1.; [] # ss်.1.
@@ -4770,23 +4796,23 @@ SS\u103A.1.; ss\u103A.1.; ; xn--ss-f4j.1.; ; ; # ss်.1.
Ss\u103A.1.; ss\u103A.1.; ; xn--ss-f4j.1.; ; ; # ss်.1.
xn--ss-f4j585j.1.; ss\u200D\u103A.1.; [C2]; xn--ss-f4j585j.1.; ; ; # ss်.1.
xn--zca679eh2l.1.; ß\u200D\u103A.1.; [C2]; xn--zca679eh2l.1.; ; ; # ß်.1.
-SS\u200D\u103A。⒈; ss\u200D\u103A.⒈; [C2, P1, V6]; xn--ss-f4j585j.xn--tsh; ; xn--ss-f4j.xn--tsh; [P1, V6] # ss်.⒈
-ss\u200D\u103A。⒈; ss\u200D\u103A.⒈; [C2, P1, V6]; xn--ss-f4j585j.xn--tsh; ; xn--ss-f4j.xn--tsh; [P1, V6] # ss်.⒈
-Ss\u200D\u103A。⒈; ss\u200D\u103A.⒈; [C2, P1, V6]; xn--ss-f4j585j.xn--tsh; ; xn--ss-f4j.xn--tsh; [P1, V6] # ss်.⒈
+SS\u200D\u103A。⒈; ss\u200D\u103A.⒈; [C2, V6]; xn--ss-f4j585j.xn--tsh; ; xn--ss-f4j.xn--tsh; [V6] # ss်.⒈
+ss\u200D\u103A。⒈; ss\u200D\u103A.⒈; [C2, V6]; xn--ss-f4j585j.xn--tsh; ; xn--ss-f4j.xn--tsh; [V6] # ss်.⒈
+Ss\u200D\u103A。⒈; ss\u200D\u103A.⒈; [C2, V6]; xn--ss-f4j585j.xn--tsh; ; xn--ss-f4j.xn--tsh; [V6] # ss်.⒈
xn--ss-f4j.xn--tsh; ss\u103A.⒈; [V6]; xn--ss-f4j.xn--tsh; ; ; # ss်.⒈
xn--ss-f4j585j.xn--tsh; ss\u200D\u103A.⒈; [C2, V6]; xn--ss-f4j585j.xn--tsh; ; ; # ss်.⒈
xn--zca679eh2l.xn--tsh; ß\u200D\u103A.⒈; [C2, V6]; xn--zca679eh2l.xn--tsh; ; ; # ß်.⒈
-\u0B4D\u200C𙶵𞻘。\u200D; \u0B4D\u200C𙶵𞻘.\u200D; [B1, C2, P1, V5, V6]; xn--9ic637hz82z32jc.xn--1ug; ; xn--9ic6417rn4xb.; [B1, P1, V5, V6] # à­.
+\u0B4D\u200C𙶵𞻘。\u200D; \u0B4D\u200C𙶵𞻘.\u200D; [B1, C2, V5, V6]; xn--9ic637hz82z32jc.xn--1ug; ; xn--9ic6417rn4xb.; [B1, V5, V6] # à­.
xn--9ic6417rn4xb.; \u0B4D𙶵𞻘.; [B1, V5, V6]; xn--9ic6417rn4xb.; ; ; # à­.
xn--9ic637hz82z32jc.xn--1ug; \u0B4D\u200C𙶵𞻘.\u200D; [B1, C2, V5, V6]; xn--9ic637hz82z32jc.xn--1ug; ; ; # à­.
ð®…。\u06BCðŸ•; ð®….\u06BCðŸ•; [B3]; xn--c29c.xn--vkb8871w; ; ; # ð®….Ú¼ðŸ•
ð®…。\u06BCðŸ•; ð®….\u06BCðŸ•; [B3]; xn--c29c.xn--vkb8871w; ; ; # ð®….Ú¼ðŸ•
xn--c29c.xn--vkb8871w; ð®….\u06BCðŸ•; [B3]; xn--c29c.xn--vkb8871w; ; ; # ð®….Ú¼ðŸ•
-\u0620\u17D2。ð«”󠀧\u200C𑈵; \u0620\u17D2.ð«”󠀧\u200C𑈵; [B2, B3, C1, P1, V6]; xn--fgb471g.xn--0ug9853g7verp838a; ; xn--fgb471g.xn--9w9c29jw3931a; [B2, B3, P1, V6] # ؠ្.ð«”𑈵
+\u0620\u17D2。ð«”󠀧\u200C𑈵; \u0620\u17D2.ð«”󠀧\u200C𑈵; [B2, B3, C1, V6]; xn--fgb471g.xn--0ug9853g7verp838a; ; xn--fgb471g.xn--9w9c29jw3931a; [B2, B3, V6] # ؠ្.ð«”𑈵
xn--fgb471g.xn--9w9c29jw3931a; \u0620\u17D2.ð«”󠀧𑈵; [B2, B3, V6]; xn--fgb471g.xn--9w9c29jw3931a; ; ; # ؠ្.ð«”𑈵
xn--fgb471g.xn--0ug9853g7verp838a; \u0620\u17D2.ð«”󠀧\u200C𑈵; [B2, B3, C1, V6]; xn--fgb471g.xn--0ug9853g7verp838a; ; ; # ؠ្.ð«”𑈵
-񋉕.𞣕𞤊; 񋉕.𞣕𞤬; [B1, P1, V5, V6]; xn--tf5w.xn--2b6hof; ; ; # .𞣕𞤬
-񋉕.𞣕𞤬; ; [B1, P1, V5, V6]; xn--tf5w.xn--2b6hof; ; ; # .𞣕𞤬
+񋉕.𞣕𞤊; 񋉕.𞣕𞤬; [B1, V5, V6]; xn--tf5w.xn--2b6hof; ; ; # .𞣕𞤬
+񋉕.𞣕𞤬; ; [B1, V5, V6]; xn--tf5w.xn--2b6hof; ; ; # .𞣕𞤬
xn--tf5w.xn--2b6hof; 񋉕.𞣕𞤬; [B1, V5, V6]; xn--tf5w.xn--2b6hof; ; ; # .𞣕𞤬
\u06CCð¨¿ï¼ŽÃŸ\u0F84ð‘¬; \u06CCð¨¿.ß\u0F84ð‘¬; ; xn--clb2593k.xn--zca216edt0r; ; xn--clb2593k.xn--ss-toj6092t; # ÛŒð¨¿.ß྄ð‘¬
\u06CCð¨¿.ß\u0F84ð‘¬; ; ; xn--clb2593k.xn--zca216edt0r; ; xn--clb2593k.xn--ss-toj6092t; # ÛŒð¨¿.ß྄ð‘¬
@@ -4798,31 +4824,31 @@ xn--clb2593k.xn--zca216edt0r; \u06CCð¨¿.ß\u0F84ð‘¬; ; xn--clb2593k.xn--zca216
\u06CCð¨¿ï¼Žss\u0F84ð‘¬; \u06CCð¨¿.ss\u0F84ð‘¬; ; xn--clb2593k.xn--ss-toj6092t; ; ; # ÛŒð¨¿.ss྄ð‘¬
\u06CCð¨¿.Ss\u0F84ð‘¬; \u06CCð¨¿.ss\u0F84ð‘¬; ; xn--clb2593k.xn--ss-toj6092t; ; ; # ÛŒð¨¿.ss྄ð‘¬
\u06CCð¨¿ï¼ŽSs\u0F84ð‘¬; \u06CCð¨¿.ss\u0F84ð‘¬; ; xn--clb2593k.xn--ss-toj6092t; ; ; # ÛŒð¨¿.ss྄ð‘¬
-ðŸ â‰®\u200C。󠅱\u17B4; 8≮\u200C.\u17B4; [C1, P1, V5, V6]; xn--8-sgn10i.xn--z3e; ; xn--8-ngo.xn--z3e; [P1, V5, V6] # 8≮.
-ðŸ <\u0338\u200C。󠅱\u17B4; 8≮\u200C.\u17B4; [C1, P1, V5, V6]; xn--8-sgn10i.xn--z3e; ; xn--8-ngo.xn--z3e; [P1, V5, V6] # 8≮.
-8≮\u200C。󠅱\u17B4; 8≮\u200C.\u17B4; [C1, P1, V5, V6]; xn--8-sgn10i.xn--z3e; ; xn--8-ngo.xn--z3e; [P1, V5, V6] # 8≮.
-8<\u0338\u200C。󠅱\u17B4; 8≮\u200C.\u17B4; [C1, P1, V5, V6]; xn--8-sgn10i.xn--z3e; ; xn--8-ngo.xn--z3e; [P1, V5, V6] # 8≮.
+ðŸ â‰®\u200C。󠅱\u17B4; 8≮\u200C.\u17B4; [C1, V5, V6]; xn--8-sgn10i.xn--z3e; ; xn--8-ngo.xn--z3e; [V5, V6] # 8≮.
+ðŸ <\u0338\u200C。󠅱\u17B4; 8≮\u200C.\u17B4; [C1, V5, V6]; xn--8-sgn10i.xn--z3e; ; xn--8-ngo.xn--z3e; [V5, V6] # 8≮.
+8≮\u200C。󠅱\u17B4; 8≮\u200C.\u17B4; [C1, V5, V6]; xn--8-sgn10i.xn--z3e; ; xn--8-ngo.xn--z3e; [V5, V6] # 8≮.
+8<\u0338\u200C。󠅱\u17B4; 8≮\u200C.\u17B4; [C1, V5, V6]; xn--8-sgn10i.xn--z3e; ; xn--8-ngo.xn--z3e; [V5, V6] # 8≮.
xn--8-ngo.xn--z3e; 8≮.\u17B4; [V5, V6]; xn--8-ngo.xn--z3e; ; ; # 8≮.
xn--8-sgn10i.xn--z3e; 8≮\u200C.\u17B4; [C1, V5, V6]; xn--8-sgn10i.xn--z3e; ; ; # 8≮.
-ᢕ≯︒񄂯.Ⴀ; ᢕ≯︒񄂯.Ⴀ; [P1, V6]; xn--fbf851cq98poxw1a.xn--7md; ; ; # ᢕ≯︒.Ⴀ
-ᢕ>\u0338︒񄂯.Ⴀ; ᢕ≯︒񄂯.Ⴀ; [P1, V6]; xn--fbf851cq98poxw1a.xn--7md; ; ; # ᢕ≯︒.Ⴀ
-ᢕ≯。񄂯.Ⴀ; ᢕ≯.񄂯.Ⴀ; [P1, V6]; xn--fbf851c.xn--ko1u.xn--7md; ; ; # ᢕ≯..Ⴀ
-ᢕ>\u0338。񄂯.Ⴀ; ᢕ≯.񄂯.Ⴀ; [P1, V6]; xn--fbf851c.xn--ko1u.xn--7md; ; ; # ᢕ≯..Ⴀ
-ᢕ>\u0338。񄂯.ⴀ; ᢕ≯.񄂯.ⴀ; [P1, V6]; xn--fbf851c.xn--ko1u.xn--rkj; ; ; # ᢕ≯..ⴀ
-ᢕ≯。񄂯.ⴀ; ᢕ≯.񄂯.ⴀ; [P1, V6]; xn--fbf851c.xn--ko1u.xn--rkj; ; ; # ᢕ≯..ⴀ
+ᢕ≯︒񄂯.Ⴀ; ᢕ≯︒񄂯.Ⴀ; [V6]; xn--fbf851cq98poxw1a.xn--7md; ; ; # ᢕ≯︒.Ⴀ
+ᢕ>\u0338︒񄂯.Ⴀ; ᢕ≯︒񄂯.Ⴀ; [V6]; xn--fbf851cq98poxw1a.xn--7md; ; ; # ᢕ≯︒.Ⴀ
+ᢕ≯。񄂯.Ⴀ; ᢕ≯.񄂯.Ⴀ; [V6]; xn--fbf851c.xn--ko1u.xn--7md; ; ; # ᢕ≯..Ⴀ
+ᢕ>\u0338。񄂯.Ⴀ; ᢕ≯.񄂯.Ⴀ; [V6]; xn--fbf851c.xn--ko1u.xn--7md; ; ; # ᢕ≯..Ⴀ
+ᢕ>\u0338。񄂯.ⴀ; ᢕ≯.񄂯.ⴀ; [V6]; xn--fbf851c.xn--ko1u.xn--rkj; ; ; # ᢕ≯..ⴀ
+ᢕ≯。񄂯.ⴀ; ᢕ≯.񄂯.ⴀ; [V6]; xn--fbf851c.xn--ko1u.xn--rkj; ; ; # ᢕ≯..ⴀ
xn--fbf851c.xn--ko1u.xn--rkj; ᢕ≯.񄂯.ⴀ; [V6]; xn--fbf851c.xn--ko1u.xn--rkj; ; ; # ᢕ≯..ⴀ
xn--fbf851c.xn--ko1u.xn--7md; ᢕ≯.񄂯.Ⴀ; [V6]; xn--fbf851c.xn--ko1u.xn--7md; ; ; # ᢕ≯..Ⴀ
-ᢕ>\u0338︒񄂯.ⴀ; ᢕ≯︒񄂯.ⴀ; [P1, V6]; xn--fbf851cq98poxw1a.xn--rkj; ; ; # ᢕ≯︒.ⴀ
-ᢕ≯︒񄂯.ⴀ; ᢕ≯︒񄂯.ⴀ; [P1, V6]; xn--fbf851cq98poxw1a.xn--rkj; ; ; # ᢕ≯︒.ⴀ
+ᢕ>\u0338︒񄂯.ⴀ; ᢕ≯︒񄂯.ⴀ; [V6]; xn--fbf851cq98poxw1a.xn--rkj; ; ; # ᢕ≯︒.ⴀ
+ᢕ≯︒񄂯.ⴀ; ᢕ≯︒񄂯.ⴀ; [V6]; xn--fbf851cq98poxw1a.xn--rkj; ; ; # ᢕ≯︒.ⴀ
xn--fbf851cq98poxw1a.xn--rkj; ᢕ≯︒񄂯.ⴀ; [V6]; xn--fbf851cq98poxw1a.xn--rkj; ; ; # ᢕ≯︒.ⴀ
xn--fbf851cq98poxw1a.xn--7md; ᢕ≯︒񄂯.Ⴀ; [V6]; xn--fbf851cq98poxw1a.xn--7md; ; ; # ᢕ≯︒.Ⴀ
\u0F9F.-\u082A; \u0F9F.-\u082A; [V3, V5]; xn--vfd.xn----fhd; ; ; # ྟ.-ࠪ
\u0F9F.-\u082A; ; [V3, V5]; xn--vfd.xn----fhd; ; ; # ྟ.-ࠪ
xn--vfd.xn----fhd; \u0F9F.-\u082A; [V3, V5]; xn--vfd.xn----fhd; ; ; # ྟ.-ࠪ
-ᵬ󠆠.핒⒒⒈􈄦; ᵬ.핒⒒⒈􈄦; [P1, V6]; xn--tbg.xn--tsht7586kyts9l; ; ; # ᵬ.핒⒒⒈
-ᵬ󠆠.핒⒒⒈􈄦; ᵬ.핒⒒⒈􈄦; [P1, V6]; xn--tbg.xn--tsht7586kyts9l; ; ; # ᵬ.핒⒒⒈
-ᵬ󠆠.핒11.1.􈄦; ᵬ.핒11.1.􈄦; [P1, V6]; xn--tbg.xn--11-5o7k.1.xn--k469f; ; ; # ᵬ.핒11.1.
-ᵬ󠆠.핒11.1.􈄦; ᵬ.핒11.1.􈄦; [P1, V6]; xn--tbg.xn--11-5o7k.1.xn--k469f; ; ; # ᵬ.핒11.1.
+ᵬ󠆠.핒⒒⒈􈄦; ᵬ.핒⒒⒈􈄦; [V6]; xn--tbg.xn--tsht7586kyts9l; ; ; # ᵬ.핒⒒⒈
+ᵬ󠆠.핒⒒⒈􈄦; ᵬ.핒⒒⒈􈄦; [V6]; xn--tbg.xn--tsht7586kyts9l; ; ; # ᵬ.핒⒒⒈
+ᵬ󠆠.핒11.1.􈄦; ᵬ.핒11.1.􈄦; [V6]; xn--tbg.xn--11-5o7k.1.xn--k469f; ; ; # ᵬ.핒11.1.
+ᵬ󠆠.핒11.1.􈄦; ᵬ.핒11.1.􈄦; [V6]; xn--tbg.xn--11-5o7k.1.xn--k469f; ; ; # ᵬ.핒11.1.
xn--tbg.xn--11-5o7k.1.xn--k469f; ᵬ.핒11.1.􈄦; [V6]; xn--tbg.xn--11-5o7k.1.xn--k469f; ; ; # ᵬ.핒11.1.
xn--tbg.xn--tsht7586kyts9l; ᵬ.핒⒒⒈􈄦; [V6]; xn--tbg.xn--tsht7586kyts9l; ; ; # ᵬ.핒⒒⒈
Ï‚ð‘“‚ð‹¢ï¼Ž\u0668; Ï‚ð‘“‚ð‹¢.\u0668; [B1]; xn--3xa8371khhl.xn--hib; ; xn--4xa6371khhl.xn--hib; # Ï‚ð‘“‚ð‹¢.Ù¨
@@ -4833,31 +4859,31 @@ xn--4xa6371khhl.xn--hib; σ𑓂ð‹¢.\u0668; [B1]; xn--4xa6371khhl.xn--hib; ; ;
xn--3xa8371khhl.xn--hib; Ï‚ð‘“‚ð‹¢.\u0668; [B1]; xn--3xa8371khhl.xn--hib; ; ; # Ï‚ð‘“‚ð‹¢.Ù¨
Σ𑓂ð‹¢ï¼Ž\u0668; σ𑓂ð‹¢.\u0668; [B1]; xn--4xa6371khhl.xn--hib; ; ; # σ𑓂ð‹¢.Ù¨
σ𑓂ð‹¢ï¼Ž\u0668; σ𑓂ð‹¢.\u0668; [B1]; xn--4xa6371khhl.xn--hib; ; ; # σ𑓂ð‹¢.Ù¨
-\uA953\u200Cð‹»\u200D.\u2DF8ðž¿„ð¹²; ; [B1, B6, C2, P1, V5, V6]; xn--0ugc8356he76c.xn--urju692efj0f; ; xn--3j9a531o.xn--urju692efj0f; [B1, P1, V5, V6] # ꥓ð‹».â·¸ð¹²
+\uA953\u200Cð‹»\u200D.\u2DF8ðž¿„ð¹²; ; [B1, B6, C2, V5, V6]; xn--0ugc8356he76c.xn--urju692efj0f; ; xn--3j9a531o.xn--urju692efj0f; [B1, V5, V6] # ꥓ð‹».â·¸ð¹²
xn--3j9a531o.xn--urju692efj0f; \uA953ð‹».\u2DF8ðž¿„ð¹²; [B1, V5, V6]; xn--3j9a531o.xn--urju692efj0f; ; ; # ꥓ð‹».â·¸ð¹²
xn--0ugc8356he76c.xn--urju692efj0f; \uA953\u200Cð‹»\u200D.\u2DF8ðž¿„ð¹²; [B1, B6, C2, V5, V6]; xn--0ugc8356he76c.xn--urju692efj0f; ; ; # ꥓ð‹».â·¸ð¹²
-⊼。񪧖\u0695; ⊼.񪧖\u0695; [B1, B5, B6, P1, V6]; xn--ofh.xn--rjb13118f; ; ; # ⊼.ڕ
+⊼。񪧖\u0695; ⊼.񪧖\u0695; [B1, B5, B6, V6]; xn--ofh.xn--rjb13118f; ; ; # ⊼.ڕ
xn--ofh.xn--rjb13118f; ⊼.񪧖\u0695; [B1, B5, B6, V6]; xn--ofh.xn--rjb13118f; ; ; # ⊼.ڕ
-ð¯¬ñ–‹”。󜳥; ð¯¬ñ–‹”.󜳥; [B2, B3, P1, V6]; xn--949co370q.xn--7g25e; ; ; # .
+ð¯¬ñ–‹”。󜳥; ð¯¬ñ–‹”.󜳥; [B2, B3, V6]; xn--949co370q.xn--7g25e; ; ; # .
xn--949co370q.xn--7g25e; ð¯¬ñ–‹”.󜳥; [B2, B3, V6]; xn--949co370q.xn--7g25e; ; ; # .
-\u0601ð‘§\u07DD。ςò¬˜ðŸ€ž\u17B5; \u0601ð‘§\u07DD.Ï‚ò¬˜ðŸ€ž\u17B5; [B1, B6, P1, V6]; xn--jfb66gt010c.xn--3xa823h9p95ars26d; ; xn--jfb66gt010c.xn--4xa623h9p95ars26d; # ð‘§ß.ς🀞
-\u0601ð‘§\u07DD。Σò¬˜ðŸ€ž\u17B5; \u0601ð‘§\u07DD.σò¬˜ðŸ€ž\u17B5; [B1, B6, P1, V6]; xn--jfb66gt010c.xn--4xa623h9p95ars26d; ; ; # ð‘§ß.σ🀞
-\u0601ð‘§\u07DD。σò¬˜ðŸ€ž\u17B5; \u0601ð‘§\u07DD.σò¬˜ðŸ€ž\u17B5; [B1, B6, P1, V6]; xn--jfb66gt010c.xn--4xa623h9p95ars26d; ; ; # ð‘§ß.σ🀞
+\u0601ð‘§\u07DD。ςò¬˜ðŸ€ž\u17B5; \u0601ð‘§\u07DD.Ï‚ò¬˜ðŸ€ž\u17B5; [B1, B6, V6]; xn--jfb66gt010c.xn--3xa823h9p95ars26d; ; xn--jfb66gt010c.xn--4xa623h9p95ars26d; # ð‘§ß.ς🀞
+\u0601ð‘§\u07DD。Σò¬˜ðŸ€ž\u17B5; \u0601ð‘§\u07DD.σò¬˜ðŸ€ž\u17B5; [B1, B6, V6]; xn--jfb66gt010c.xn--4xa623h9p95ars26d; ; ; # ð‘§ß.σ🀞
+\u0601ð‘§\u07DD。σò¬˜ðŸ€ž\u17B5; \u0601ð‘§\u07DD.σò¬˜ðŸ€ž\u17B5; [B1, B6, V6]; xn--jfb66gt010c.xn--4xa623h9p95ars26d; ; ; # ð‘§ß.σ🀞
xn--jfb66gt010c.xn--4xa623h9p95ars26d; \u0601ð‘§\u07DD.σò¬˜ðŸ€ž\u17B5; [B1, B6, V6]; xn--jfb66gt010c.xn--4xa623h9p95ars26d; ; ; # ð‘§ß.σ🀞
xn--jfb66gt010c.xn--3xa823h9p95ars26d; \u0601ð‘§\u07DD.Ï‚ò¬˜ðŸ€ž\u17B5; [B1, B6, V6]; xn--jfb66gt010c.xn--3xa823h9p95ars26d; ; ; # ð‘§ß.ς🀞
--ð³²\u0646ó ºã€‚\uABEDðŸ¥; -ð³²\u0646ó º.\uABED3; [B1, P1, V3, V5, V6]; xn----roc5482rek10i.xn--3-zw5e; ; ; # -ð³²Ù†.꯭3
--ð³²\u0646ó ºã€‚\uABED3; -ð³²\u0646ó º.\uABED3; [B1, P1, V3, V5, V6]; xn----roc5482rek10i.xn--3-zw5e; ; ; # -ð³²Ù†.꯭3
--ð²²\u0646ó ºã€‚\uABED3; -ð³²\u0646ó º.\uABED3; [B1, P1, V3, V5, V6]; xn----roc5482rek10i.xn--3-zw5e; ; ; # -ð³²Ù†.꯭3
+-ð³²\u0646ó ºã€‚\uABEDðŸ¥; -ð³²\u0646ó º.\uABED3; [B1, V3, V5, V6]; xn----roc5482rek10i.xn--3-zw5e; ; ; # -ð³²Ù†.꯭3
+-ð³²\u0646ó ºã€‚\uABED3; -ð³²\u0646ó º.\uABED3; [B1, V3, V5, V6]; xn----roc5482rek10i.xn--3-zw5e; ; ; # -ð³²Ù†.꯭3
+-ð²²\u0646ó ºã€‚\uABED3; -ð³²\u0646ó º.\uABED3; [B1, V3, V5, V6]; xn----roc5482rek10i.xn--3-zw5e; ; ; # -ð³²Ù†.꯭3
xn----roc5482rek10i.xn--3-zw5e; -ð³²\u0646ó º.\uABED3; [B1, V3, V5, V6]; xn----roc5482rek10i.xn--3-zw5e; ; ; # -ð³²Ù†.꯭3
--ð²²\u0646ó ºã€‚\uABEDðŸ¥; -ð³²\u0646ó º.\uABED3; [B1, P1, V3, V5, V6]; xn----roc5482rek10i.xn--3-zw5e; ; ; # -ð³²Ù†.꯭3
-\u200C󠴦。ñ²¨•â‰®ð¦œ; \u200Có ´¦.ñ²¨•â‰®ð¦œ; [B1, B5, B6, C1, P1, V6]; xn--0ug22251l.xn--gdhz712gzlr6b; ; xn--6v56e.xn--gdhz712gzlr6b; [B1, B5, B6, P1, V6] # .≮ð¦œ
-\u200C󠴦。ñ²¨•<\u0338ð¦œ; \u200Có ´¦.ñ²¨•â‰®ð¦œ; [B1, B5, B6, C1, P1, V6]; xn--0ug22251l.xn--gdhz712gzlr6b; ; xn--6v56e.xn--gdhz712gzlr6b; [B1, B5, B6, P1, V6] # .≮ð¦œ
-\u200C󠴦。ñ²¨•â‰®ð¦œ; \u200Có ´¦.ñ²¨•â‰®ð¦œ; [B1, B5, B6, C1, P1, V6]; xn--0ug22251l.xn--gdhz712gzlr6b; ; xn--6v56e.xn--gdhz712gzlr6b; [B1, B5, B6, P1, V6] # .≮ð¦œ
-\u200C󠴦。ñ²¨•<\u0338ð¦œ; \u200Có ´¦.ñ²¨•â‰®ð¦œ; [B1, B5, B6, C1, P1, V6]; xn--0ug22251l.xn--gdhz712gzlr6b; ; xn--6v56e.xn--gdhz712gzlr6b; [B1, B5, B6, P1, V6] # .≮ð¦œ
+-ð²²\u0646ó ºã€‚\uABEDðŸ¥; -ð³²\u0646ó º.\uABED3; [B1, V3, V5, V6]; xn----roc5482rek10i.xn--3-zw5e; ; ; # -ð³²Ù†.꯭3
+\u200C󠴦。ñ²¨•â‰®ð¦œ; \u200Có ´¦.ñ²¨•â‰®ð¦œ; [B1, B5, B6, C1, V6]; xn--0ug22251l.xn--gdhz712gzlr6b; ; xn--6v56e.xn--gdhz712gzlr6b; [B1, B5, B6, V6] # .≮ð¦œ
+\u200C󠴦。ñ²¨•<\u0338ð¦œ; \u200Có ´¦.ñ²¨•â‰®ð¦œ; [B1, B5, B6, C1, V6]; xn--0ug22251l.xn--gdhz712gzlr6b; ; xn--6v56e.xn--gdhz712gzlr6b; [B1, B5, B6, V6] # .≮ð¦œ
+\u200C󠴦。ñ²¨•â‰®ð¦œ; \u200Có ´¦.ñ²¨•â‰®ð¦œ; [B1, B5, B6, C1, V6]; xn--0ug22251l.xn--gdhz712gzlr6b; ; xn--6v56e.xn--gdhz712gzlr6b; [B1, B5, B6, V6] # .≮ð¦œ
+\u200C󠴦。ñ²¨•<\u0338ð¦œ; \u200Có ´¦.ñ²¨•â‰®ð¦œ; [B1, B5, B6, C1, V6]; xn--0ug22251l.xn--gdhz712gzlr6b; ; xn--6v56e.xn--gdhz712gzlr6b; [B1, B5, B6, V6] # .≮ð¦œ
xn--6v56e.xn--gdhz712gzlr6b; ó ´¦.ñ²¨•â‰®ð¦œ; [B1, B5, B6, V6]; xn--6v56e.xn--gdhz712gzlr6b; ; ; # .≮ð¦œ
xn--0ug22251l.xn--gdhz712gzlr6b; \u200Có ´¦.ñ²¨•â‰®ð¦œ; [B1, B5, B6, C1, V6]; xn--0ug22251l.xn--gdhz712gzlr6b; ; ; # .≮ð¦œ
-⒈✌òŸ¬Ÿï¼ŽðŸ¡ñ ±£; ⒈✌òŸ¬Ÿ.9ñ ±£; [P1, V6]; xn--tsh24g49550b.xn--9-o706d; ; ; # ⒈✌.9
-1.✌򟬟.9񠱣; ; [P1, V6]; 1.xn--7bi44996f.xn--9-o706d; ; ; # 1.✌.9
+⒈✌òŸ¬Ÿï¼ŽðŸ¡ñ ±£; ⒈✌òŸ¬Ÿ.9ñ ±£; [V6]; xn--tsh24g49550b.xn--9-o706d; ; ; # ⒈✌.9
+1.✌򟬟.9񠱣; ; [V6]; 1.xn--7bi44996f.xn--9-o706d; ; ; # 1.✌.9
1.xn--7bi44996f.xn--9-o706d; 1.✌򟬟.9񠱣; [V6]; 1.xn--7bi44996f.xn--9-o706d; ; ; # 1.✌.9
xn--tsh24g49550b.xn--9-o706d; ⒈✌򟬟.9񠱣; [V6]; xn--tsh24g49550b.xn--9-o706d; ; ; # ⒈✌.9
𑆾𞤬ð®†.\u0666\u1DD4; ; [B1, V5]; xn--d29c79hf98r.xn--fib011j; ; ; # 𑆾𞤬ð®†.٦ᷔ
@@ -4871,61 +4897,63 @@ xn--4xa.xn--0f9ars; σ.\uA9C0\uA8C4; [V5]; xn--4xa.xn--0f9ars; ; ; # σ.꧀꣄
xn--3xa.xn--0f9ars; ς.\uA9C0\uA8C4; [V5]; xn--3xa.xn--0f9ars; ; ; # ς.꧀꣄
Σ.\uA9C0\uA8C4; σ.\uA9C0\uA8C4; [V5]; xn--4xa.xn--0f9ars; ; ; # σ.꧀꣄
σ.\uA9C0\uA8C4; σ.\uA9C0\uA8C4; [V5]; xn--4xa.xn--0f9ars; ; ; # σ.꧀꣄
-ð‘°¶\u200C≯ð³ï¼Ž\u085B; ð‘°¶\u200C≯ð³.\u085B; [B1, B3, B6, C1, P1, V5, V6]; xn--0ug06g7697ap4ma.xn--qwb; ; xn--hdhz343g3wj.xn--qwb; [B1, B3, B6, P1, V5, V6] # 𑰶≯ð³.à¡›
-ð‘°¶\u200C>\u0338ð³ï¼Ž\u085B; ð‘°¶\u200C≯ð³.\u085B; [B1, B3, B6, C1, P1, V5, V6]; xn--0ug06g7697ap4ma.xn--qwb; ; xn--hdhz343g3wj.xn--qwb; [B1, B3, B6, P1, V5, V6] # 𑰶≯ð³.à¡›
-ð‘°¶\u200C≯ð³.\u085B; ; [B1, B3, B6, C1, P1, V5, V6]; xn--0ug06g7697ap4ma.xn--qwb; ; xn--hdhz343g3wj.xn--qwb; [B1, B3, B6, P1, V5, V6] # 𑰶≯ð³.à¡›
-ð‘°¶\u200C>\u0338ð³.\u085B; ð‘°¶\u200C≯ð³.\u085B; [B1, B3, B6, C1, P1, V5, V6]; xn--0ug06g7697ap4ma.xn--qwb; ; xn--hdhz343g3wj.xn--qwb; [B1, B3, B6, P1, V5, V6] # 𑰶≯ð³.à¡›
-ð‘°¶\u200C>\u0338ð².\u085B; ð‘°¶\u200C≯ð³.\u085B; [B1, B3, B6, C1, P1, V5, V6]; xn--0ug06g7697ap4ma.xn--qwb; ; xn--hdhz343g3wj.xn--qwb; [B1, B3, B6, P1, V5, V6] # 𑰶≯ð³.à¡›
-ð‘°¶\u200C≯ð².\u085B; ð‘°¶\u200C≯ð³.\u085B; [B1, B3, B6, C1, P1, V5, V6]; xn--0ug06g7697ap4ma.xn--qwb; ; xn--hdhz343g3wj.xn--qwb; [B1, B3, B6, P1, V5, V6] # 𑰶≯ð³.à¡›
-xn--hdhz343g3wj.xn--qwb; 𑰶≯ð³.\u085B; [B1, B3, B6, V5, V6]; xn--hdhz343g3wj.xn--qwb; ; ; # 𑰶≯ð³.à¡›
-xn--0ug06g7697ap4ma.xn--qwb; ð‘°¶\u200C≯ð³.\u085B; [B1, B3, B6, C1, V5, V6]; xn--0ug06g7697ap4ma.xn--qwb; ; ; # 𑰶≯ð³.à¡›
-ð‘°¶\u200C>\u0338ð²ï¼Ž\u085B; ð‘°¶\u200C≯ð³.\u085B; [B1, B3, B6, C1, P1, V5, V6]; xn--0ug06g7697ap4ma.xn--qwb; ; xn--hdhz343g3wj.xn--qwb; [B1, B3, B6, P1, V5, V6] # 𑰶≯ð³.à¡›
-ð‘°¶\u200C≯ð²ï¼Ž\u085B; ð‘°¶\u200C≯ð³.\u085B; [B1, B3, B6, C1, P1, V5, V6]; xn--0ug06g7697ap4ma.xn--qwb; ; xn--hdhz343g3wj.xn--qwb; [B1, B3, B6, P1, V5, V6] # 𑰶≯ð³.à¡›
-羚。≯; 羚.≯; [P1, V6]; xn--xt0a.xn--hdh; ; ; # 羚.≯
-羚。>\u0338; 羚.≯; [P1, V6]; xn--xt0a.xn--hdh; ; ; # 羚.≯
-羚。≯; 羚.≯; [P1, V6]; xn--xt0a.xn--hdh; ; ; # 羚.≯
-羚。>\u0338; 羚.≯; [P1, V6]; xn--xt0a.xn--hdh; ; ; # 羚.≯
-xn--xt0a.xn--hdh; 羚.≯; [V6]; xn--xt0a.xn--hdh; ; ; # 羚.≯
-𑓂\u1759.\u08A8; 𑓂\u1759.\u08A8; [B1, P1, V5, V6]; xn--e1e9580k.xn--xyb; ; ; # 𑓂.ࢨ
-𑓂\u1759.\u08A8; ; [B1, P1, V5, V6]; xn--e1e9580k.xn--xyb; ; ; # 𑓂.ࢨ
+ð‘°¶\u200C≯ð³ï¼Ž\u085B; ð‘°¶\u200C≯ð³.\u085B; [B1, C1, V5]; xn--0ug06g7697ap4ma.xn--qwb; ; xn--hdhz343g3wj.xn--qwb; [B1, V5] # 𑰶≯ð³.à¡›
+ð‘°¶\u200C>\u0338ð³ï¼Ž\u085B; ð‘°¶\u200C≯ð³.\u085B; [B1, C1, V5]; xn--0ug06g7697ap4ma.xn--qwb; ; xn--hdhz343g3wj.xn--qwb; [B1, V5] # 𑰶≯ð³.à¡›
+ð‘°¶\u200C≯ð³.\u085B; ; [B1, C1, V5]; xn--0ug06g7697ap4ma.xn--qwb; ; xn--hdhz343g3wj.xn--qwb; [B1, V5] # 𑰶≯ð³.à¡›
+ð‘°¶\u200C>\u0338ð³.\u085B; ð‘°¶\u200C≯ð³.\u085B; [B1, C1, V5]; xn--0ug06g7697ap4ma.xn--qwb; ; xn--hdhz343g3wj.xn--qwb; [B1, V5] # 𑰶≯ð³.à¡›
+ð‘°¶\u200C>\u0338ð².\u085B; ð‘°¶\u200C≯ð³.\u085B; [B1, C1, V5]; xn--0ug06g7697ap4ma.xn--qwb; ; xn--hdhz343g3wj.xn--qwb; [B1, V5] # 𑰶≯ð³.à¡›
+ð‘°¶\u200C≯ð².\u085B; ð‘°¶\u200C≯ð³.\u085B; [B1, C1, V5]; xn--0ug06g7697ap4ma.xn--qwb; ; xn--hdhz343g3wj.xn--qwb; [B1, V5] # 𑰶≯ð³.à¡›
+xn--hdhz343g3wj.xn--qwb; 𑰶≯ð³.\u085B; [B1, V5]; xn--hdhz343g3wj.xn--qwb; ; ; # 𑰶≯ð³.à¡›
+xn--0ug06g7697ap4ma.xn--qwb; ð‘°¶\u200C≯ð³.\u085B; [B1, C1, V5]; xn--0ug06g7697ap4ma.xn--qwb; ; ; # 𑰶≯ð³.à¡›
+ð‘°¶\u200C>\u0338ð²ï¼Ž\u085B; ð‘°¶\u200C≯ð³.\u085B; [B1, C1, V5]; xn--0ug06g7697ap4ma.xn--qwb; ; xn--hdhz343g3wj.xn--qwb; [B1, V5] # 𑰶≯ð³.à¡›
+ð‘°¶\u200C≯ð²ï¼Ž\u085B; ð‘°¶\u200C≯ð³.\u085B; [B1, C1, V5]; xn--0ug06g7697ap4ma.xn--qwb; ; xn--hdhz343g3wj.xn--qwb; [B1, V5] # 𑰶≯ð³.à¡›
+羚。≯; 羚.≯; ; xn--xt0a.xn--hdh; ; ; # 羚.≯
+羚。>\u0338; 羚.≯; ; xn--xt0a.xn--hdh; ; ; # 羚.≯
+羚。≯; 羚.≯; ; xn--xt0a.xn--hdh; ; ; # 羚.≯
+羚。>\u0338; 羚.≯; ; xn--xt0a.xn--hdh; ; ; # 羚.≯
+xn--xt0a.xn--hdh; 羚.≯; ; xn--xt0a.xn--hdh; ; ; # 羚.≯
+羚.≯; ; ; xn--xt0a.xn--hdh; ; ; # 羚.≯
+羚.>\u0338; 羚.≯; ; xn--xt0a.xn--hdh; ; ; # 羚.≯
+𑓂\u1759.\u08A8; 𑓂\u1759.\u08A8; [B1, V5, V6]; xn--e1e9580k.xn--xyb; ; ; # 𑓂.ࢨ
+𑓂\u1759.\u08A8; ; [B1, V5, V6]; xn--e1e9580k.xn--xyb; ; ; # 𑓂.ࢨ
xn--e1e9580k.xn--xyb; 𑓂\u1759.\u08A8; [B1, V5, V6]; xn--e1e9580k.xn--xyb; ; ; # 𑓂.ࢨ
-󨣿󠇀\u200D。\u0663ҠჀðŸ‘; 󨣿\u200D.\u0663ҡჀ3; [B1, B6, C2, P1, V6]; xn--1ug89936l.xn--3-ozb36kixu; ; xn--1r19e.xn--3-ozb36kixu; [B1, P1, V6] # .٣ҡჀ3
-󨣿󠇀\u200D。\u0663ҠჀ3; 󨣿\u200D.\u0663ҡჀ3; [B1, B6, C2, P1, V6]; xn--1ug89936l.xn--3-ozb36kixu; ; xn--1r19e.xn--3-ozb36kixu; [B1, P1, V6] # .٣ҡჀ3
-󨣿󠇀\u200D。\u0663ҡⴠ3; 󨣿\u200D.\u0663ҡⴠ3; [B1, B6, C2, P1, V6]; xn--1ug89936l.xn--3-ozb36ko13f; ; xn--1r19e.xn--3-ozb36ko13f; [B1, P1, V6] # .٣ҡⴠ3
+󨣿󠇀\u200D。\u0663ҠჀðŸ‘; 󨣿\u200D.\u0663ҡჀ3; [B1, B6, C2, V6]; xn--1ug89936l.xn--3-ozb36kixu; ; xn--1r19e.xn--3-ozb36kixu; [B1, V6] # .٣ҡჀ3
+󨣿󠇀\u200D。\u0663ҠჀ3; 󨣿\u200D.\u0663ҡჀ3; [B1, B6, C2, V6]; xn--1ug89936l.xn--3-ozb36kixu; ; xn--1r19e.xn--3-ozb36kixu; [B1, V6] # .٣ҡჀ3
+󨣿󠇀\u200D。\u0663ҡⴠ3; 󨣿\u200D.\u0663ҡⴠ3; [B1, B6, C2, V6]; xn--1ug89936l.xn--3-ozb36ko13f; ; xn--1r19e.xn--3-ozb36ko13f; [B1, V6] # .٣ҡⴠ3
xn--1r19e.xn--3-ozb36ko13f; 󨣿.\u0663ҡⴠ3; [B1, V6]; xn--1r19e.xn--3-ozb36ko13f; ; ; # .٣ҡⴠ3
xn--1ug89936l.xn--3-ozb36ko13f; 󨣿\u200D.\u0663ҡⴠ3; [B1, B6, C2, V6]; xn--1ug89936l.xn--3-ozb36ko13f; ; ; # .٣ҡⴠ3
xn--1r19e.xn--3-ozb36kixu; 󨣿.\u0663ҡჀ3; [B1, V6]; xn--1r19e.xn--3-ozb36kixu; ; ; # .٣ҡჀ3
xn--1ug89936l.xn--3-ozb36kixu; 󨣿\u200D.\u0663ҡჀ3; [B1, B6, C2, V6]; xn--1ug89936l.xn--3-ozb36kixu; ; ; # .٣ҡჀ3
-󨣿󠇀\u200D。\u0663Ò¡â´ ðŸ‘; 󨣿\u200D.\u0663Ò¡â´ 3; [B1, B6, C2, P1, V6]; xn--1ug89936l.xn--3-ozb36ko13f; ; xn--1r19e.xn--3-ozb36ko13f; [B1, P1, V6] # .Ù£Ò¡â´ 3
-󨣿󠇀\u200D。\u0663Ҡⴠ3; 󨣿\u200D.\u0663ҡⴠ3; [B1, B6, C2, P1, V6]; xn--1ug89936l.xn--3-ozb36ko13f; ; xn--1r19e.xn--3-ozb36ko13f; [B1, P1, V6] # .٣ҡⴠ3
-󨣿󠇀\u200D。\u0663Ò â´ ðŸ‘; 󨣿\u200D.\u0663Ò¡â´ 3; [B1, B6, C2, P1, V6]; xn--1ug89936l.xn--3-ozb36ko13f; ; xn--1r19e.xn--3-ozb36ko13f; [B1, P1, V6] # .Ù£Ò¡â´ 3
+󨣿󠇀\u200D。\u0663Ò¡â´ ðŸ‘; 󨣿\u200D.\u0663Ò¡â´ 3; [B1, B6, C2, V6]; xn--1ug89936l.xn--3-ozb36ko13f; ; xn--1r19e.xn--3-ozb36ko13f; [B1, V6] # .Ù£Ò¡â´ 3
+󨣿󠇀\u200D。\u0663Ҡⴠ3; 󨣿\u200D.\u0663ҡⴠ3; [B1, B6, C2, V6]; xn--1ug89936l.xn--3-ozb36ko13f; ; xn--1r19e.xn--3-ozb36ko13f; [B1, V6] # .٣ҡⴠ3
+󨣿󠇀\u200D。\u0663Ò â´ ðŸ‘; 󨣿\u200D.\u0663Ò¡â´ 3; [B1, B6, C2, V6]; xn--1ug89936l.xn--3-ozb36ko13f; ; xn--1r19e.xn--3-ozb36ko13f; [B1, V6] # .Ù£Ò¡â´ 3
ᡷ。ð¹¢\u08E0; á¡·.ð¹¢\u08E0; [B1]; xn--k9e.xn--j0b5005k; ; ; # á¡·.ð¹¢à£ 
xn--k9e.xn--j0b5005k; á¡·.ð¹¢\u08E0; [B1]; xn--k9e.xn--j0b5005k; ; ; # á¡·.ð¹¢à£ 
-򕮇\u1BF3。\u0666񗜼\u17D2ß; 򕮇\u1BF3.\u0666񗜼\u17D2ß; [B1, P1, V6]; xn--1zf58212h.xn--zca34zk4qx711k; ; xn--1zf58212h.xn--ss-pyd459o3258m; # ᯳.٦្ß
-򕮇\u1BF3。\u0666񗜼\u17D2ß; 򕮇\u1BF3.\u0666񗜼\u17D2ß; [B1, P1, V6]; xn--1zf58212h.xn--zca34zk4qx711k; ; xn--1zf58212h.xn--ss-pyd459o3258m; # ᯳.٦្ß
-򕮇\u1BF3。\u0666񗜼\u17D2SS; 򕮇\u1BF3.\u0666񗜼\u17D2ss; [B1, P1, V6]; xn--1zf58212h.xn--ss-pyd459o3258m; ; ; # ᯳.٦្ss
-򕮇\u1BF3。\u0666񗜼\u17D2ss; 򕮇\u1BF3.\u0666񗜼\u17D2ss; [B1, P1, V6]; xn--1zf58212h.xn--ss-pyd459o3258m; ; ; # ᯳.٦្ss
-򕮇\u1BF3。\u0666񗜼\u17D2Ss; 򕮇\u1BF3.\u0666񗜼\u17D2ss; [B1, P1, V6]; xn--1zf58212h.xn--ss-pyd459o3258m; ; ; # ᯳.٦្ss
+򕮇\u1BF3。\u0666񗜼\u17D2ß; 򕮇\u1BF3.\u0666񗜼\u17D2ß; [B1, V6]; xn--1zf58212h.xn--zca34zk4qx711k; ; xn--1zf58212h.xn--ss-pyd459o3258m; # ᯳.٦្ß
+򕮇\u1BF3。\u0666񗜼\u17D2ß; 򕮇\u1BF3.\u0666񗜼\u17D2ß; [B1, V6]; xn--1zf58212h.xn--zca34zk4qx711k; ; xn--1zf58212h.xn--ss-pyd459o3258m; # ᯳.٦្ß
+򕮇\u1BF3。\u0666񗜼\u17D2SS; 򕮇\u1BF3.\u0666񗜼\u17D2ss; [B1, V6]; xn--1zf58212h.xn--ss-pyd459o3258m; ; ; # ᯳.٦្ss
+򕮇\u1BF3。\u0666񗜼\u17D2ss; 򕮇\u1BF3.\u0666񗜼\u17D2ss; [B1, V6]; xn--1zf58212h.xn--ss-pyd459o3258m; ; ; # ᯳.٦្ss
+򕮇\u1BF3。\u0666񗜼\u17D2Ss; 򕮇\u1BF3.\u0666񗜼\u17D2ss; [B1, V6]; xn--1zf58212h.xn--ss-pyd459o3258m; ; ; # ᯳.٦្ss
xn--1zf58212h.xn--ss-pyd459o3258m; 򕮇\u1BF3.\u0666񗜼\u17D2ss; [B1, V6]; xn--1zf58212h.xn--ss-pyd459o3258m; ; ; # ᯳.٦្ss
xn--1zf58212h.xn--zca34zk4qx711k; 򕮇\u1BF3.\u0666񗜼\u17D2ß; [B1, V6]; xn--1zf58212h.xn--zca34zk4qx711k; ; ; # ᯳.٦្ß
-򕮇\u1BF3。\u0666񗜼\u17D2SS; 򕮇\u1BF3.\u0666񗜼\u17D2ss; [B1, P1, V6]; xn--1zf58212h.xn--ss-pyd459o3258m; ; ; # ᯳.٦្ss
-򕮇\u1BF3。\u0666񗜼\u17D2ss; 򕮇\u1BF3.\u0666񗜼\u17D2ss; [B1, P1, V6]; xn--1zf58212h.xn--ss-pyd459o3258m; ; ; # ᯳.٦្ss
-򕮇\u1BF3。\u0666񗜼\u17D2Ss; 򕮇\u1BF3.\u0666񗜼\u17D2ss; [B1, P1, V6]; xn--1zf58212h.xn--ss-pyd459o3258m; ; ; # ᯳.٦្ss
-\u0664򤽎𑲛.󠔢︒≠; ; [B1, P1, V6]; xn--dib0653l2i02d.xn--1ch7467f14u4g; ; ; # ٤𑲛.︒≠
-\u0664򤽎𑲛.󠔢︒=\u0338; \u0664򤽎𑲛.󠔢︒≠; [B1, P1, V6]; xn--dib0653l2i02d.xn--1ch7467f14u4g; ; ; # ٤𑲛.︒≠
-\u0664򤽎𑲛.󠔢。≠; \u0664򤽎𑲛.󠔢.≠; [B1, P1, V6]; xn--dib0653l2i02d.xn--k736e.xn--1ch; ; ; # ٤𑲛..≠
-\u0664򤽎𑲛.󠔢。=\u0338; \u0664򤽎𑲛.󠔢.≠; [B1, P1, V6]; xn--dib0653l2i02d.xn--k736e.xn--1ch; ; ; # ٤𑲛..≠
+򕮇\u1BF3。\u0666񗜼\u17D2SS; 򕮇\u1BF3.\u0666񗜼\u17D2ss; [B1, V6]; xn--1zf58212h.xn--ss-pyd459o3258m; ; ; # ᯳.٦្ss
+򕮇\u1BF3。\u0666񗜼\u17D2ss; 򕮇\u1BF3.\u0666񗜼\u17D2ss; [B1, V6]; xn--1zf58212h.xn--ss-pyd459o3258m; ; ; # ᯳.٦្ss
+򕮇\u1BF3。\u0666񗜼\u17D2Ss; 򕮇\u1BF3.\u0666񗜼\u17D2ss; [B1, V6]; xn--1zf58212h.xn--ss-pyd459o3258m; ; ; # ᯳.٦្ss
+\u0664򤽎𑲛.󠔢︒≠; ; [B1, V6]; xn--dib0653l2i02d.xn--1ch7467f14u4g; ; ; # ٤𑲛.︒≠
+\u0664򤽎𑲛.󠔢︒=\u0338; \u0664򤽎𑲛.󠔢︒≠; [B1, V6]; xn--dib0653l2i02d.xn--1ch7467f14u4g; ; ; # ٤𑲛.︒≠
+\u0664򤽎𑲛.󠔢。≠; \u0664򤽎𑲛.󠔢.≠; [B1, V6]; xn--dib0653l2i02d.xn--k736e.xn--1ch; ; ; # ٤𑲛..≠
+\u0664򤽎𑲛.󠔢。=\u0338; \u0664򤽎𑲛.󠔢.≠; [B1, V6]; xn--dib0653l2i02d.xn--k736e.xn--1ch; ; ; # ٤𑲛..≠
xn--dib0653l2i02d.xn--k736e.xn--1ch; \u0664򤽎𑲛.󠔢.≠; [B1, V6]; xn--dib0653l2i02d.xn--k736e.xn--1ch; ; ; # ٤𑲛..≠
xn--dib0653l2i02d.xn--1ch7467f14u4g; \u0664򤽎𑲛.󠔢︒≠; [B1, V6]; xn--dib0653l2i02d.xn--1ch7467f14u4g; ; ; # ٤𑲛.︒≠
-➆ñ·§•á»—⒈.ò‘¬’ñ¡˜®\u085BðŸ«; ➆ñ·§•á»—â’ˆ.ò‘¬’ñ¡˜®\u085B9; [P1, V6]; xn--6lg26tvvc6v99z.xn--9-6jd87310jtcqs; ; ; # ➆ỗ⒈.à¡›9
-➆ñ·§•o\u0302\u0303⒈.ò‘¬’ñ¡˜®\u085BðŸ«; ➆ñ·§•á»—â’ˆ.ò‘¬’ñ¡˜®\u085B9; [P1, V6]; xn--6lg26tvvc6v99z.xn--9-6jd87310jtcqs; ; ; # ➆ỗ⒈.à¡›9
-➆񷧕ỗ1..򑬒񡘮\u085B9; ; [P1, V6, X4_2]; xn--1-3xm292b6044r..xn--9-6jd87310jtcqs; [P1, V6, A4_2]; ; # ➆ỗ1..࡛9
-➆񷧕o\u0302\u03031..򑬒񡘮\u085B9; ➆񷧕ỗ1..򑬒񡘮\u085B9; [P1, V6, X4_2]; xn--1-3xm292b6044r..xn--9-6jd87310jtcqs; [P1, V6, A4_2]; ; # ➆ỗ1..࡛9
-➆񷧕O\u0302\u03031..򑬒񡘮\u085B9; ➆񷧕ỗ1..򑬒񡘮\u085B9; [P1, V6, X4_2]; xn--1-3xm292b6044r..xn--9-6jd87310jtcqs; [P1, V6, A4_2]; ; # ➆ỗ1..࡛9
-➆񷧕Ỗ1..򑬒񡘮\u085B9; ➆񷧕ỗ1..򑬒񡘮\u085B9; [P1, V6, X4_2]; xn--1-3xm292b6044r..xn--9-6jd87310jtcqs; [P1, V6, A4_2]; ; # ➆ỗ1..࡛9
+➆ñ·§•á»—⒈.ò‘¬’ñ¡˜®\u085BðŸ«; ➆ñ·§•á»—â’ˆ.ò‘¬’ñ¡˜®\u085B9; [V6]; xn--6lg26tvvc6v99z.xn--9-6jd87310jtcqs; ; ; # ➆ỗ⒈.à¡›9
+➆ñ·§•o\u0302\u0303⒈.ò‘¬’ñ¡˜®\u085BðŸ«; ➆ñ·§•á»—â’ˆ.ò‘¬’ñ¡˜®\u085B9; [V6]; xn--6lg26tvvc6v99z.xn--9-6jd87310jtcqs; ; ; # ➆ỗ⒈.à¡›9
+➆񷧕ỗ1..򑬒񡘮\u085B9; ; [V6, X4_2]; xn--1-3xm292b6044r..xn--9-6jd87310jtcqs; [V6, A4_2]; ; # ➆ỗ1..࡛9
+➆񷧕o\u0302\u03031..򑬒񡘮\u085B9; ➆񷧕ỗ1..򑬒񡘮\u085B9; [V6, X4_2]; xn--1-3xm292b6044r..xn--9-6jd87310jtcqs; [V6, A4_2]; ; # ➆ỗ1..࡛9
+➆񷧕O\u0302\u03031..򑬒񡘮\u085B9; ➆񷧕ỗ1..򑬒񡘮\u085B9; [V6, X4_2]; xn--1-3xm292b6044r..xn--9-6jd87310jtcqs; [V6, A4_2]; ; # ➆ỗ1..࡛9
+➆񷧕Ỗ1..򑬒񡘮\u085B9; ➆񷧕ỗ1..򑬒񡘮\u085B9; [V6, X4_2]; xn--1-3xm292b6044r..xn--9-6jd87310jtcqs; [V6, A4_2]; ; # ➆ỗ1..࡛9
xn--1-3xm292b6044r..xn--9-6jd87310jtcqs; ➆񷧕ỗ1..򑬒񡘮\u085B9; [V6, X4_2]; xn--1-3xm292b6044r..xn--9-6jd87310jtcqs; [V6, A4_2]; ; # ➆ỗ1..࡛9
-➆ñ·§•O\u0302\u0303⒈.ò‘¬’ñ¡˜®\u085BðŸ«; ➆ñ·§•á»—â’ˆ.ò‘¬’ñ¡˜®\u085B9; [P1, V6]; xn--6lg26tvvc6v99z.xn--9-6jd87310jtcqs; ; ; # ➆ỗ⒈.à¡›9
-➆ñ·§•á»–⒈.ò‘¬’ñ¡˜®\u085BðŸ«; ➆ñ·§•á»—â’ˆ.ò‘¬’ñ¡˜®\u085B9; [P1, V6]; xn--6lg26tvvc6v99z.xn--9-6jd87310jtcqs; ; ; # ➆ỗ⒈.à¡›9
+➆ñ·§•O\u0302\u0303⒈.ò‘¬’ñ¡˜®\u085BðŸ«; ➆ñ·§•á»—â’ˆ.ò‘¬’ñ¡˜®\u085B9; [V6]; xn--6lg26tvvc6v99z.xn--9-6jd87310jtcqs; ; ; # ➆ỗ⒈.à¡›9
+➆ñ·§•á»–⒈.ò‘¬’ñ¡˜®\u085BðŸ«; ➆ñ·§•á»—â’ˆ.ò‘¬’ñ¡˜®\u085B9; [V6]; xn--6lg26tvvc6v99z.xn--9-6jd87310jtcqs; ; ; # ➆ỗ⒈.à¡›9
xn--6lg26tvvc6v99z.xn--9-6jd87310jtcqs; ➆񷧕ỗ⒈.򑬒񡘮\u085B9; [V6]; xn--6lg26tvvc6v99z.xn--9-6jd87310jtcqs; ; ; # ➆ỗ⒈.࡛9
\u200D。𞤘; \u200D.𞤺; [B1, C2]; xn--1ug.xn--ye6h; ; .xn--ye6h; [A4_2] # .𞤺
\u200D。𞤘; \u200D.𞤺; [B1, C2]; xn--1ug.xn--ye6h; ; .xn--ye6h; [A4_2] # .𞤺
@@ -4938,140 +4966,140 @@ xn--ye6h; 𞤺; ; xn--ye6h; ; ; # 𞤺
𞤘; 𞤺; ; xn--ye6h; ; ; # 𞤺
\u0829\u0724.ᢣ; ; [B1, V5]; xn--unb53c.xn--tbf; ; ; # ࠩܤ.ᢣ
xn--unb53c.xn--tbf; \u0829\u0724.ᢣ; [B1, V5]; xn--unb53c.xn--tbf; ; ; # ࠩܤ.ᢣ
-\u073C\u200C-。ð“¾ÃŸ; \u073C\u200C-.ð“¾ÃŸ; [C1, P1, V3, V5, V6]; xn----s2c071q.xn--zca7848m; ; xn----s2c.xn--ss-066q; [P1, V3, V5, V6] # ܼ-.ß
-\u073C\u200C-。ð“¾SS; \u073C\u200C-.ð“¾ss; [C1, P1, V3, V5, V6]; xn----s2c071q.xn--ss-066q; ; xn----s2c.xn--ss-066q; [P1, V3, V5, V6] # ܼ-.ss
-\u073C\u200C-。ð“¾ss; \u073C\u200C-.ð“¾ss; [C1, P1, V3, V5, V6]; xn----s2c071q.xn--ss-066q; ; xn----s2c.xn--ss-066q; [P1, V3, V5, V6] # ܼ-.ss
-\u073C\u200C-。ð“¾Ss; \u073C\u200C-.ð“¾ss; [C1, P1, V3, V5, V6]; xn----s2c071q.xn--ss-066q; ; xn----s2c.xn--ss-066q; [P1, V3, V5, V6] # ܼ-.ss
+\u073C\u200C-。ð“¾ÃŸ; \u073C\u200C-.ð“¾ÃŸ; [C1, V3, V5, V6]; xn----s2c071q.xn--zca7848m; ; xn----s2c.xn--ss-066q; [V3, V5, V6] # ܼ-.ß
+\u073C\u200C-。ð“¾SS; \u073C\u200C-.ð“¾ss; [C1, V3, V5, V6]; xn----s2c071q.xn--ss-066q; ; xn----s2c.xn--ss-066q; [V3, V5, V6] # ܼ-.ss
+\u073C\u200C-。ð“¾ss; \u073C\u200C-.ð“¾ss; [C1, V3, V5, V6]; xn----s2c071q.xn--ss-066q; ; xn----s2c.xn--ss-066q; [V3, V5, V6] # ܼ-.ss
+\u073C\u200C-。ð“¾Ss; \u073C\u200C-.ð“¾ss; [C1, V3, V5, V6]; xn----s2c071q.xn--ss-066q; ; xn----s2c.xn--ss-066q; [V3, V5, V6] # ܼ-.ss
xn----s2c.xn--ss-066q; \u073C-.ð“¾ss; [V3, V5, V6]; xn----s2c.xn--ss-066q; ; ; # ܼ-.ss
xn----s2c071q.xn--ss-066q; \u073C\u200C-.ð“¾ss; [C1, V3, V5, V6]; xn----s2c071q.xn--ss-066q; ; ; # ܼ-.ss
xn----s2c071q.xn--zca7848m; \u073C\u200C-.ð“¾ÃŸ; [C1, V3, V5, V6]; xn----s2c071q.xn--zca7848m; ; ; # ܼ-.ß
-\u200Cς🃡⒗.\u0CC6仧\u0756; ; [B1, B5, B6, C1, P1, V5, V6]; xn--3xa795lz9czy52d.xn--9ob79ycx2e; ; xn--4xa229nbu92a.xn--9ob79ycx2e; [B5, B6, P1, V5, V6] # ς🃡⒗.ೆ仧ݖ
+\u200Cς🃡⒗.\u0CC6仧\u0756; ; [B1, B5, B6, C1, V5, V6]; xn--3xa795lz9czy52d.xn--9ob79ycx2e; ; xn--4xa229nbu92a.xn--9ob79ycx2e; [B5, B6, V5, V6] # ς🃡⒗.ೆ仧ݖ
\u200Cς🃡16..\u0CC6仧\u0756; ; [B1, B5, B6, C1, V5, X4_2]; xn--16-rbc1800avy99b..xn--9ob79ycx2e; [B1, B5, B6, C1, V5, A4_2]; xn--16-ubc66061c..xn--9ob79ycx2e; [B5, B6, V5, A4_2] # ς🃡16..ೆ仧ݖ
\u200CΣ🃡16..\u0CC6仧\u0756; \u200Cσ🃡16..\u0CC6仧\u0756; [B1, B5, B6, C1, V5, X4_2]; xn--16-ubc7700avy99b..xn--9ob79ycx2e; [B1, B5, B6, C1, V5, A4_2]; xn--16-ubc66061c..xn--9ob79ycx2e; [B5, B6, V5, A4_2] # σ🃡16..ೆ仧ݖ
\u200Cσ🃡16..\u0CC6仧\u0756; ; [B1, B5, B6, C1, V5, X4_2]; xn--16-ubc7700avy99b..xn--9ob79ycx2e; [B1, B5, B6, C1, V5, A4_2]; xn--16-ubc66061c..xn--9ob79ycx2e; [B5, B6, V5, A4_2] # σ🃡16..ೆ仧ݖ
xn--16-ubc66061c..xn--9ob79ycx2e; σ🃡16..\u0CC6仧\u0756; [B5, B6, V5, X4_2]; xn--16-ubc66061c..xn--9ob79ycx2e; [B5, B6, V5, A4_2]; ; # σ🃡16..ೆ仧ݖ
xn--16-ubc7700avy99b..xn--9ob79ycx2e; \u200Cσ🃡16..\u0CC6仧\u0756; [B1, B5, B6, C1, V5, X4_2]; xn--16-ubc7700avy99b..xn--9ob79ycx2e; [B1, B5, B6, C1, V5, A4_2]; ; # σ🃡16..ೆ仧ݖ
xn--16-rbc1800avy99b..xn--9ob79ycx2e; \u200Cς🃡16..\u0CC6仧\u0756; [B1, B5, B6, C1, V5, X4_2]; xn--16-rbc1800avy99b..xn--9ob79ycx2e; [B1, B5, B6, C1, V5, A4_2]; ; # ς🃡16..ೆ仧ݖ
-\u200CΣ🃡⒗.\u0CC6仧\u0756; \u200Cσ🃡⒗.\u0CC6仧\u0756; [B1, B5, B6, C1, P1, V5, V6]; xn--4xa595lz9czy52d.xn--9ob79ycx2e; ; xn--4xa229nbu92a.xn--9ob79ycx2e; [B5, B6, P1, V5, V6] # σ🃡⒗.ೆ仧ݖ
-\u200Cσ🃡⒗.\u0CC6仧\u0756; ; [B1, B5, B6, C1, P1, V5, V6]; xn--4xa595lz9czy52d.xn--9ob79ycx2e; ; xn--4xa229nbu92a.xn--9ob79ycx2e; [B5, B6, P1, V5, V6] # σ🃡⒗.ೆ仧ݖ
+\u200CΣ🃡⒗.\u0CC6仧\u0756; \u200Cσ🃡⒗.\u0CC6仧\u0756; [B1, B5, B6, C1, V5, V6]; xn--4xa595lz9czy52d.xn--9ob79ycx2e; ; xn--4xa229nbu92a.xn--9ob79ycx2e; [B5, B6, V5, V6] # σ🃡⒗.ೆ仧ݖ
+\u200Cσ🃡⒗.\u0CC6仧\u0756; ; [B1, B5, B6, C1, V5, V6]; xn--4xa595lz9czy52d.xn--9ob79ycx2e; ; xn--4xa229nbu92a.xn--9ob79ycx2e; [B5, B6, V5, V6] # σ🃡⒗.ೆ仧ݖ
xn--4xa229nbu92a.xn--9ob79ycx2e; σ🃡⒗.\u0CC6仧\u0756; [B5, B6, V5, V6]; xn--4xa229nbu92a.xn--9ob79ycx2e; ; ; # σ🃡⒗.ೆ仧ݖ
xn--4xa595lz9czy52d.xn--9ob79ycx2e; \u200Cσ🃡⒗.\u0CC6仧\u0756; [B1, B5, B6, C1, V5, V6]; xn--4xa595lz9czy52d.xn--9ob79ycx2e; ; ; # σ🃡⒗.ೆ仧ݖ
xn--3xa795lz9czy52d.xn--9ob79ycx2e; \u200Cς🃡⒗.\u0CC6仧\u0756; [B1, B5, B6, C1, V5, V6]; xn--3xa795lz9czy52d.xn--9ob79ycx2e; ; ; # ς🃡⒗.ೆ仧ݖ
-.𞸚; -.\u0638; [B1, V3]; -.xn--3gb; ; ; # -.ظ
-.\u0638; ; [B1, V3]; -.xn--3gb; ; ; # -.ظ
-.xn--3gb; -.\u0638; [B1, V3]; -.xn--3gb; ; ; # -.ظ
-ò›“\u0683.\u0F7E\u0634; ; [B1, B5, B6, P1, V5, V6]; xn--8ib92728i.xn--zgb968b; ; ; # Úƒ.ཾش
+ò›“\u0683.\u0F7E\u0634; ; [B1, B5, B6, V5, V6]; xn--8ib92728i.xn--zgb968b; ; ; # Úƒ.ཾش
xn--8ib92728i.xn--zgb968b; ò›“\u0683.\u0F7E\u0634; [B1, B5, B6, V5, V6]; xn--8ib92728i.xn--zgb968b; ; ; # Úƒ.ཾش
-\u0FE6\u0843ñ½¶¬.ð®; ; [B5, P1, V6]; xn--1vb320b5m04p.xn--m29c; ; ; # ࡃ.ð®
+\u0FE6\u0843ñ½¶¬.ð®; ; [B5, V6]; xn--1vb320b5m04p.xn--m29c; ; ; # ࡃ.ð®
xn--1vb320b5m04p.xn--m29c; \u0FE6\u0843ñ½¶¬.ð®; [B5, V6]; xn--1vb320b5m04p.xn--m29c; ; ; # ࡃ.ð®
-2񎨠\u07CBß。ᠽ; 2񎨠\u07CBß.ᠽ; [B1, P1, V6]; xn--2-qfa924cez02l.xn--w7e; ; xn--2ss-odg83511n.xn--w7e; # 2ߋß.ᠽ
-2񎨠\u07CBSS。ᠽ; 2񎨠\u07CBss.ᠽ; [B1, P1, V6]; xn--2ss-odg83511n.xn--w7e; ; ; # 2ߋss.ᠽ
-2񎨠\u07CBss。ᠽ; 2񎨠\u07CBss.ᠽ; [B1, P1, V6]; xn--2ss-odg83511n.xn--w7e; ; ; # 2ߋss.ᠽ
+2񎨠\u07CBß。ᠽ; 2񎨠\u07CBß.ᠽ; [B1, V6]; xn--2-qfa924cez02l.xn--w7e; ; xn--2ss-odg83511n.xn--w7e; # 2ߋß.ᠽ
+2񎨠\u07CBSS。ᠽ; 2񎨠\u07CBss.ᠽ; [B1, V6]; xn--2ss-odg83511n.xn--w7e; ; ; # 2ߋss.ᠽ
+2񎨠\u07CBss。ᠽ; 2񎨠\u07CBss.ᠽ; [B1, V6]; xn--2ss-odg83511n.xn--w7e; ; ; # 2ߋss.ᠽ
xn--2ss-odg83511n.xn--w7e; 2񎨠\u07CBss.ᠽ; [B1, V6]; xn--2ss-odg83511n.xn--w7e; ; ; # 2ߋss.ᠽ
xn--2-qfa924cez02l.xn--w7e; 2񎨠\u07CBß.ᠽ; [B1, V6]; xn--2-qfa924cez02l.xn--w7e; ; ; # 2ߋß.ᠽ
-2񎨠\u07CBSs。ᠽ; 2񎨠\u07CBss.ᠽ; [B1, P1, V6]; xn--2ss-odg83511n.xn--w7e; ; ; # 2ߋss.ᠽ
-㸳\u07CA≮.\u06CEß-\u200D; 㸳\u07CA≮.\u06CEß-\u200D; [B2, B3, B5, B6, C2, P1, V6]; xn--lsb457kkut.xn----pfa076bys4a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, P1, V3, V6] # 㸳ߊ≮.ێß-
-㸳\u07CA<\u0338.\u06CEß-\u200D; 㸳\u07CA≮.\u06CEß-\u200D; [B2, B3, B5, B6, C2, P1, V6]; xn--lsb457kkut.xn----pfa076bys4a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, P1, V3, V6] # 㸳ߊ≮.ێß-
-㸳\u07CA≮.\u06CEß-\u200D; ; [B2, B3, B5, B6, C2, P1, V6]; xn--lsb457kkut.xn----pfa076bys4a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, P1, V3, V6] # 㸳ߊ≮.ێß-
-㸳\u07CA<\u0338.\u06CEß-\u200D; 㸳\u07CA≮.\u06CEß-\u200D; [B2, B3, B5, B6, C2, P1, V6]; xn--lsb457kkut.xn----pfa076bys4a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, P1, V3, V6] # 㸳ߊ≮.ێß-
-㸳\u07CA<\u0338.\u06CESS-\u200D; 㸳\u07CA≮.\u06CEss-\u200D; [B2, B3, B5, B6, C2, P1, V6]; xn--lsb457kkut.xn--ss--qjf2343a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, P1, V3, V6] # 㸳ߊ≮.ێss-
-㸳\u07CA≮.\u06CESS-\u200D; 㸳\u07CA≮.\u06CEss-\u200D; [B2, B3, B5, B6, C2, P1, V6]; xn--lsb457kkut.xn--ss--qjf2343a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, P1, V3, V6] # 㸳ߊ≮.ێss-
-㸳\u07CA≮.\u06CEss-\u200D; ; [B2, B3, B5, B6, C2, P1, V6]; xn--lsb457kkut.xn--ss--qjf2343a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, P1, V3, V6] # 㸳ߊ≮.ێss-
-㸳\u07CA<\u0338.\u06CEss-\u200D; 㸳\u07CA≮.\u06CEss-\u200D; [B2, B3, B5, B6, C2, P1, V6]; xn--lsb457kkut.xn--ss--qjf2343a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, P1, V3, V6] # 㸳ߊ≮.ێss-
-xn--lsb457kkut.xn--ss--qjf; 㸳\u07CA≮.\u06CEss-; [B2, B3, B5, B6, V3, V6]; xn--lsb457kkut.xn--ss--qjf; ; ; # 㸳ߊ≮.ێss-
-xn--lsb457kkut.xn--ss--qjf2343a; 㸳\u07CA≮.\u06CEss-\u200D; [B2, B3, B5, B6, C2, V6]; xn--lsb457kkut.xn--ss--qjf2343a; ; ; # 㸳ߊ≮.ێss-
-xn--lsb457kkut.xn----pfa076bys4a; 㸳\u07CA≮.\u06CEß-\u200D; [B2, B3, B5, B6, C2, V6]; xn--lsb457kkut.xn----pfa076bys4a; ; ; # 㸳ߊ≮.ێß-
-㸳\u07CA<\u0338.\u06CESS-\u200D; 㸳\u07CA≮.\u06CEss-\u200D; [B2, B3, B5, B6, C2, P1, V6]; xn--lsb457kkut.xn--ss--qjf2343a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, P1, V3, V6] # 㸳ߊ≮.ێss-
-㸳\u07CA≮.\u06CESS-\u200D; 㸳\u07CA≮.\u06CEss-\u200D; [B2, B3, B5, B6, C2, P1, V6]; xn--lsb457kkut.xn--ss--qjf2343a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, P1, V3, V6] # 㸳ߊ≮.ێss-
-㸳\u07CA≮.\u06CEss-\u200D; 㸳\u07CA≮.\u06CEss-\u200D; [B2, B3, B5, B6, C2, P1, V6]; xn--lsb457kkut.xn--ss--qjf2343a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, P1, V3, V6] # 㸳ߊ≮.ێss-
-㸳\u07CA<\u0338.\u06CEss-\u200D; 㸳\u07CA≮.\u06CEss-\u200D; [B2, B3, B5, B6, C2, P1, V6]; xn--lsb457kkut.xn--ss--qjf2343a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, P1, V3, V6] # 㸳ߊ≮.ێss-
-㸳\u07CA<\u0338.\u06CESs-\u200D; 㸳\u07CA≮.\u06CEss-\u200D; [B2, B3, B5, B6, C2, P1, V6]; xn--lsb457kkut.xn--ss--qjf2343a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, P1, V3, V6] # 㸳ߊ≮.ێss-
-㸳\u07CA≮.\u06CESs-\u200D; 㸳\u07CA≮.\u06CEss-\u200D; [B2, B3, B5, B6, C2, P1, V6]; xn--lsb457kkut.xn--ss--qjf2343a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, P1, V3, V6] # 㸳ߊ≮.ێss-
-㸳\u07CA<\u0338.\u06CESs-\u200D; 㸳\u07CA≮.\u06CEss-\u200D; [B2, B3, B5, B6, C2, P1, V6]; xn--lsb457kkut.xn--ss--qjf2343a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, P1, V3, V6] # 㸳ߊ≮.ێss-
-㸳\u07CA≮.\u06CESs-\u200D; 㸳\u07CA≮.\u06CEss-\u200D; [B2, B3, B5, B6, C2, P1, V6]; xn--lsb457kkut.xn--ss--qjf2343a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, P1, V3, V6] # 㸳ߊ≮.ێss-
--ò·¬\u135E𑜧.\u1DEB-︒; ; [P1, V3, V5, V6]; xn----b5h1837n2ok9f.xn----mkmw278h; ; ; # -ážð‘œ§.á·«-︒
--ò·¬\u135E𑜧.\u1DEB-。; -ò·¬\u135E𑜧.\u1DEB-.; [P1, V3, V5, V6]; xn----b5h1837n2ok9f.xn----mkm.; ; ; # -ážð‘œ§.á·«-.
+2񎨠\u07CBSs。ᠽ; 2񎨠\u07CBss.ᠽ; [B1, V6]; xn--2ss-odg83511n.xn--w7e; ; ; # 2ߋss.ᠽ
+㸳\u07CA≮.\u06CEß-\u200D; 㸳\u07CA≮.\u06CEß-\u200D; [B2, B3, B5, B6, C2]; xn--lsb457kkut.xn----pfa076bys4a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, V3] # 㸳ߊ≮.ێß-
+㸳\u07CA<\u0338.\u06CEß-\u200D; 㸳\u07CA≮.\u06CEß-\u200D; [B2, B3, B5, B6, C2]; xn--lsb457kkut.xn----pfa076bys4a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, V3] # 㸳ߊ≮.ێß-
+㸳\u07CA≮.\u06CEß-\u200D; ; [B2, B3, B5, B6, C2]; xn--lsb457kkut.xn----pfa076bys4a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, V3] # 㸳ߊ≮.ێß-
+㸳\u07CA<\u0338.\u06CEß-\u200D; 㸳\u07CA≮.\u06CEß-\u200D; [B2, B3, B5, B6, C2]; xn--lsb457kkut.xn----pfa076bys4a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, V3] # 㸳ߊ≮.ێß-
+㸳\u07CA<\u0338.\u06CESS-\u200D; 㸳\u07CA≮.\u06CEss-\u200D; [B2, B3, B5, B6, C2]; xn--lsb457kkut.xn--ss--qjf2343a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, V3] # 㸳ߊ≮.ێss-
+㸳\u07CA≮.\u06CESS-\u200D; 㸳\u07CA≮.\u06CEss-\u200D; [B2, B3, B5, B6, C2]; xn--lsb457kkut.xn--ss--qjf2343a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, V3] # 㸳ߊ≮.ێss-
+㸳\u07CA≮.\u06CEss-\u200D; ; [B2, B3, B5, B6, C2]; xn--lsb457kkut.xn--ss--qjf2343a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, V3] # 㸳ߊ≮.ێss-
+㸳\u07CA<\u0338.\u06CEss-\u200D; 㸳\u07CA≮.\u06CEss-\u200D; [B2, B3, B5, B6, C2]; xn--lsb457kkut.xn--ss--qjf2343a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, V3] # 㸳ߊ≮.ێss-
+xn--lsb457kkut.xn--ss--qjf; 㸳\u07CA≮.\u06CEss-; [B2, B3, B5, B6, V3]; xn--lsb457kkut.xn--ss--qjf; ; ; # 㸳ߊ≮.ێss-
+xn--lsb457kkut.xn--ss--qjf2343a; 㸳\u07CA≮.\u06CEss-\u200D; [B2, B3, B5, B6, C2]; xn--lsb457kkut.xn--ss--qjf2343a; ; ; # 㸳ߊ≮.ێss-
+xn--lsb457kkut.xn----pfa076bys4a; 㸳\u07CA≮.\u06CEß-\u200D; [B2, B3, B5, B6, C2]; xn--lsb457kkut.xn----pfa076bys4a; ; ; # 㸳ߊ≮.ێß-
+㸳\u07CA<\u0338.\u06CESS-\u200D; 㸳\u07CA≮.\u06CEss-\u200D; [B2, B3, B5, B6, C2]; xn--lsb457kkut.xn--ss--qjf2343a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, V3] # 㸳ߊ≮.ێss-
+㸳\u07CA≮.\u06CESS-\u200D; 㸳\u07CA≮.\u06CEss-\u200D; [B2, B3, B5, B6, C2]; xn--lsb457kkut.xn--ss--qjf2343a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, V3] # 㸳ߊ≮.ێss-
+㸳\u07CA≮.\u06CEss-\u200D; 㸳\u07CA≮.\u06CEss-\u200D; [B2, B3, B5, B6, C2]; xn--lsb457kkut.xn--ss--qjf2343a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, V3] # 㸳ߊ≮.ێss-
+㸳\u07CA<\u0338.\u06CEss-\u200D; 㸳\u07CA≮.\u06CEss-\u200D; [B2, B3, B5, B6, C2]; xn--lsb457kkut.xn--ss--qjf2343a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, V3] # 㸳ߊ≮.ێss-
+㸳\u07CA<\u0338.\u06CESs-\u200D; 㸳\u07CA≮.\u06CEss-\u200D; [B2, B3, B5, B6, C2]; xn--lsb457kkut.xn--ss--qjf2343a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, V3] # 㸳ߊ≮.ێss-
+㸳\u07CA≮.\u06CESs-\u200D; 㸳\u07CA≮.\u06CEss-\u200D; [B2, B3, B5, B6, C2]; xn--lsb457kkut.xn--ss--qjf2343a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, V3] # 㸳ߊ≮.ێss-
+㸳\u07CA<\u0338.\u06CESs-\u200D; 㸳\u07CA≮.\u06CEss-\u200D; [B2, B3, B5, B6, C2]; xn--lsb457kkut.xn--ss--qjf2343a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, V3] # 㸳ߊ≮.ێss-
+㸳\u07CA≮.\u06CESs-\u200D; 㸳\u07CA≮.\u06CEss-\u200D; [B2, B3, B5, B6, C2]; xn--lsb457kkut.xn--ss--qjf2343a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, V3] # 㸳ߊ≮.ێss-
+-ò·¬\u135E𑜧.\u1DEB-︒; ; [V3, V5, V6]; xn----b5h1837n2ok9f.xn----mkmw278h; ; ; # -ážð‘œ§.á·«-︒
+-ò·¬\u135E𑜧.\u1DEB-。; -ò·¬\u135E𑜧.\u1DEB-.; [V3, V5, V6]; xn----b5h1837n2ok9f.xn----mkm.; ; ; # -ážð‘œ§.á·«-.
xn----b5h1837n2ok9f.xn----mkm.; -ò·¬\u135E𑜧.\u1DEB-.; [V3, V5, V6]; xn----b5h1837n2ok9f.xn----mkm.; ; ; # -ážð‘œ§.á·«-.
xn----b5h1837n2ok9f.xn----mkmw278h; -ò·¬\u135E𑜧.\u1DEB-︒; [V3, V5, V6]; xn----b5h1837n2ok9f.xn----mkmw278h; ; ; # -ážð‘œ§.á·«-︒
-︒.򚠡\u1A59; ; [P1, V6]; xn--y86c.xn--cof61594i; ; ; # ︒.ᩙ
-。.򚠡\u1A59; ..򚠡\u1A59; [P1, V6, X4_2]; ..xn--cof61594i; [P1, V6, A4_2]; ; # ..ᩙ
+︒.򚠡\u1A59; ; [V6]; xn--y86c.xn--cof61594i; ; ; # ︒.ᩙ
+。.򚠡\u1A59; ..򚠡\u1A59; [V6, X4_2]; ..xn--cof61594i; [V6, A4_2]; ; # ..ᩙ
..xn--cof61594i; ..òš ¡\u1A59; [V6, X4_2]; ..xn--cof61594i; [V6, A4_2]; ; # ..á©™
xn--y86c.xn--cof61594i; ︒.򚠡\u1A59; [V6]; xn--y86c.xn--cof61594i; ; ; # ︒.ᩙ
-\u0323\u2DE1。\u200C⓾\u200C\u06B9; \u0323\u2DE1.\u200C⓾\u200C\u06B9; [B1, B3, B6, C1, V5]; xn--kta899s.xn--skb970ka771c; ; xn--kta899s.xn--skb116m; [B1, B3, B6, V5] # ̣ⷡ.⓾ڹ
-xn--kta899s.xn--skb116m; \u0323\u2DE1.⓾\u06B9; [B1, B3, B6, V5]; xn--kta899s.xn--skb116m; ; ; # ̣ⷡ.⓾ڹ
-xn--kta899s.xn--skb970ka771c; \u0323\u2DE1.\u200C⓾\u200C\u06B9; [B1, B3, B6, C1, V5]; xn--kta899s.xn--skb970ka771c; ; ; # ̣ⷡ.⓾ڹ
-𞠶ᠴ\u06DD。\u1074𞤵󠅦; 𞠶ᠴ\u06DD.\u1074𞤵; [B1, B2, P1, V5, V6]; xn--tlb199fwl35a.xn--yld4613v; ; ; # 𞠶ᠴ.á´ðž¤µ
-𞠶ᠴ\u06DD。\u1074𞤵󠅦; 𞠶ᠴ\u06DD.\u1074𞤵; [B1, B2, P1, V5, V6]; xn--tlb199fwl35a.xn--yld4613v; ; ; # 𞠶ᠴ.á´ðž¤µ
-𞠶ᠴ\u06DD。\u1074𞤓󠅦; 𞠶ᠴ\u06DD.\u1074𞤵; [B1, B2, P1, V5, V6]; xn--tlb199fwl35a.xn--yld4613v; ; ; # 𞠶ᠴ.á´ðž¤µ
+\u0323\u2DE1。\u200C⓾\u200C\u06B9; \u0323\u2DE1.\u200C⓾\u200C\u06B9; [B1, C1, V5]; xn--kta899s.xn--skb970ka771c; ; xn--kta899s.xn--skb116m; [B1, V5] # ̣ⷡ.⓾ڹ
+xn--kta899s.xn--skb116m; \u0323\u2DE1.⓾\u06B9; [B1, V5]; xn--kta899s.xn--skb116m; ; ; # ̣ⷡ.⓾ڹ
+xn--kta899s.xn--skb970ka771c; \u0323\u2DE1.\u200C⓾\u200C\u06B9; [B1, C1, V5]; xn--kta899s.xn--skb970ka771c; ; ; # ̣ⷡ.⓾ڹ
+𞠶ᠴ\u06DD。\u1074𞤵󠅦; 𞠶ᠴ\u06DD.\u1074𞤵; [B1, B2, V5, V6]; xn--tlb199fwl35a.xn--yld4613v; ; ; # 𞠶ᠴ.á´ðž¤µ
+𞠶ᠴ\u06DD。\u1074𞤵󠅦; 𞠶ᠴ\u06DD.\u1074𞤵; [B1, B2, V5, V6]; xn--tlb199fwl35a.xn--yld4613v; ; ; # 𞠶ᠴ.á´ðž¤µ
+𞠶ᠴ\u06DD。\u1074𞤓󠅦; 𞠶ᠴ\u06DD.\u1074𞤵; [B1, B2, V5, V6]; xn--tlb199fwl35a.xn--yld4613v; ; ; # 𞠶ᠴ.á´ðž¤µ
xn--tlb199fwl35a.xn--yld4613v; 𞠶ᠴ\u06DD.\u1074𞤵; [B1, B2, V5, V6]; xn--tlb199fwl35a.xn--yld4613v; ; ; # 𞠶ᠴ.á´ðž¤µ
-𞠶ᠴ\u06DD。\u1074𞤓󠅦; 𞠶ᠴ\u06DD.\u1074𞤵; [B1, B2, P1, V5, V6]; xn--tlb199fwl35a.xn--yld4613v; ; ; # 𞠶ᠴ.á´ðž¤µ
-ð‘°º.-ò‘Ÿ; ; [P1, V3, V5, V6]; xn--jk3d.xn----iz68g; ; ; # ð‘°º.-
+𞠶ᠴ\u06DD。\u1074𞤓󠅦; 𞠶ᠴ\u06DD.\u1074𞤵; [B1, B2, V5, V6]; xn--tlb199fwl35a.xn--yld4613v; ; ; # 𞠶ᠴ.á´ðž¤µ
+ð‘°º.-ò‘Ÿ; ; [V3, V5, V6]; xn--jk3d.xn----iz68g; ; ; # ð‘°º.-
xn--jk3d.xn----iz68g; ð‘°º.-ò‘Ÿ; [V3, V5, V6]; xn--jk3d.xn----iz68g; ; ; # ð‘°º.-
-󠻩.èµ; ó »©.èµ; [P1, V6]; xn--2856e.xn--6o3a; ; ; # .èµ
-ó »©.èµ; ; [P1, V6]; xn--2856e.xn--6o3a; ; ; # .èµ
+󠻩.èµ; ó »©.èµ; [V6]; xn--2856e.xn--6o3a; ; ; # .èµ
+ó »©.èµ; ; [V6]; xn--2856e.xn--6o3a; ; ; # .èµ
xn--2856e.xn--6o3a; ó »©.èµ; [V6]; xn--2856e.xn--6o3a; ; ; # .èµ
-\u06B0ᠡ。Ⴁ; \u06B0ᠡ.Ⴁ; [B2, B3, P1, V6]; xn--jkb440g.xn--8md; ; ; # ڰᠡ.Ⴁ
-\u06B0ᠡ。Ⴁ; \u06B0ᠡ.Ⴁ; [B2, B3, P1, V6]; xn--jkb440g.xn--8md; ; ; # ڰᠡ.Ⴁ
+\u06B0ᠡ。Ⴁ; \u06B0ᠡ.Ⴁ; [B2, B3, V6]; xn--jkb440g.xn--8md; ; ; # ڰᠡ.Ⴁ
+\u06B0ᠡ。Ⴁ; \u06B0ᠡ.Ⴁ; [B2, B3, V6]; xn--jkb440g.xn--8md; ; ; # ڰᠡ.Ⴁ
\u06B0ᠡ。â´; \u06B0á ¡.â´; [B2, B3]; xn--jkb440g.xn--skj; ; ; # Ú°á ¡.â´
xn--jkb440g.xn--skj; \u06B0á ¡.â´; [B2, B3]; xn--jkb440g.xn--skj; ; ; # Ú°á ¡.â´
xn--jkb440g.xn--8md; \u06B0á ¡.á‚¡; [B2, B3, V6]; xn--jkb440g.xn--8md; ; ; # Ú°á ¡.á‚¡
\u06B0ᠡ。â´; \u06B0á ¡.â´; [B2, B3]; xn--jkb440g.xn--skj; ; ; # Ú°á ¡.â´
-\u20DEႪ\u06BBς。-; \u20DEႪ\u06BBς.-; [B1, P1, V3, V5, V6]; xn--3xa53m7zmb0q.-; ; xn--4xa33m7zmb0q.-; # ⃞Ⴊڻς.-
-\u20DEႪ\u06BBς。-; \u20DEႪ\u06BBς.-; [B1, P1, V3, V5, V6]; xn--3xa53m7zmb0q.-; ; xn--4xa33m7zmb0q.-; # ⃞Ⴊڻς.-
+\u20DEႪ\u06BBς。-; \u20DEႪ\u06BBς.-; [B1, V3, V5, V6]; xn--3xa53m7zmb0q.-; ; xn--4xa33m7zmb0q.-; # ⃞Ⴊڻς.-
+\u20DEႪ\u06BBς。-; \u20DEႪ\u06BBς.-; [B1, V3, V5, V6]; xn--3xa53m7zmb0q.-; ; xn--4xa33m7zmb0q.-; # ⃞Ⴊڻς.-
\u20DEⴊ\u06BBς。-; \u20DEⴊ\u06BBς.-; [B1, V3, V5]; xn--3xa53mr38aeel.-; ; xn--4xa33mr38aeel.-; # ⃞ⴊڻς.-
-\u20DEႪ\u06BBΣ。-; \u20DEႪ\u06BBσ.-; [B1, P1, V3, V5, V6]; xn--4xa33m7zmb0q.-; ; ; # ⃞Ⴊڻσ.-
+\u20DEႪ\u06BBΣ。-; \u20DEႪ\u06BBσ.-; [B1, V3, V5, V6]; xn--4xa33m7zmb0q.-; ; ; # ⃞Ⴊڻσ.-
\u20DEⴊ\u06BBσ。-; \u20DEⴊ\u06BBσ.-; [B1, V3, V5]; xn--4xa33mr38aeel.-; ; ; # ⃞ⴊڻσ.-
-\u20DEႪ\u06BBσ。-; \u20DEႪ\u06BBσ.-; [B1, P1, V3, V5, V6]; xn--4xa33m7zmb0q.-; ; ; # ⃞Ⴊڻσ.-
+\u20DEႪ\u06BBσ。-; \u20DEႪ\u06BBσ.-; [B1, V3, V5, V6]; xn--4xa33m7zmb0q.-; ; ; # ⃞Ⴊڻσ.-
xn--4xa33m7zmb0q.-; \u20DEႪ\u06BBσ.-; [B1, V3, V5, V6]; xn--4xa33m7zmb0q.-; ; ; # ⃞Ⴊڻσ.-
xn--4xa33mr38aeel.-; \u20DEⴊ\u06BBσ.-; [B1, V3, V5]; xn--4xa33mr38aeel.-; ; ; # ⃞ⴊڻσ.-
xn--3xa53mr38aeel.-; \u20DEⴊ\u06BBς.-; [B1, V3, V5]; xn--3xa53mr38aeel.-; ; ; # ⃞ⴊڻς.-
xn--3xa53m7zmb0q.-; \u20DEႪ\u06BBς.-; [B1, V3, V5, V6]; xn--3xa53m7zmb0q.-; ; ; # ⃞Ⴊڻς.-
\u20DEⴊ\u06BBς。-; \u20DEⴊ\u06BBς.-; [B1, V3, V5]; xn--3xa53mr38aeel.-; ; xn--4xa33mr38aeel.-; # ⃞ⴊڻς.-
-\u20DEႪ\u06BBΣ。-; \u20DEႪ\u06BBσ.-; [B1, P1, V3, V5, V6]; xn--4xa33m7zmb0q.-; ; ; # ⃞Ⴊڻσ.-
+\u20DEႪ\u06BBΣ。-; \u20DEႪ\u06BBσ.-; [B1, V3, V5, V6]; xn--4xa33m7zmb0q.-; ; ; # ⃞Ⴊڻσ.-
\u20DEⴊ\u06BBσ。-; \u20DEⴊ\u06BBσ.-; [B1, V3, V5]; xn--4xa33mr38aeel.-; ; ; # ⃞ⴊڻσ.-
-\u20DEႪ\u06BBσ。-; \u20DEႪ\u06BBσ.-; [B1, P1, V3, V5, V6]; xn--4xa33m7zmb0q.-; ; ; # ⃞Ⴊڻσ.-
-Ⴍ.ñ‡¦\u200C; á‚­.ñ‡¦\u200C; [C1, P1, V6]; xn--lnd.xn--0ug56448b; ; xn--lnd.xn--p01x; [P1, V6] # á‚­.
-á‚­.ñ‡¦\u200C; ; [C1, P1, V6]; xn--lnd.xn--0ug56448b; ; xn--lnd.xn--p01x; [P1, V6] # á‚­.
-â´.ñ‡¦\u200C; ; [C1, P1, V6]; xn--4kj.xn--0ug56448b; ; xn--4kj.xn--p01x; [P1, V6] # â´.
+\u20DEႪ\u06BBσ。-; \u20DEႪ\u06BBσ.-; [B1, V3, V5, V6]; xn--4xa33m7zmb0q.-; ; ; # ⃞Ⴊڻσ.-
+Ⴍ.ñ‡¦\u200C; á‚­.ñ‡¦\u200C; [C1, V6]; xn--lnd.xn--0ug56448b; ; xn--lnd.xn--p01x; [V6] # á‚­.
+á‚­.ñ‡¦\u200C; ; [C1, V6]; xn--lnd.xn--0ug56448b; ; xn--lnd.xn--p01x; [V6] # á‚­.
+â´.ñ‡¦\u200C; ; [C1, V6]; xn--4kj.xn--0ug56448b; ; xn--4kj.xn--p01x; [V6] # â´.
xn--4kj.xn--p01x; â´.ñ‡¦; [V6]; xn--4kj.xn--p01x; ; ; # â´.
xn--4kj.xn--0ug56448b; â´.ñ‡¦\u200C; [C1, V6]; xn--4kj.xn--0ug56448b; ; ; # â´.
xn--lnd.xn--p01x; á‚­.ñ‡¦; [V6]; xn--lnd.xn--p01x; ; ; # á‚­.
xn--lnd.xn--0ug56448b; á‚­.ñ‡¦\u200C; [C1, V6]; xn--lnd.xn--0ug56448b; ; ; # á‚­.
-â´ï¼Žñ‡¦\u200C; â´.ñ‡¦\u200C; [C1, P1, V6]; xn--4kj.xn--0ug56448b; ; xn--4kj.xn--p01x; [P1, V6] # â´.
-ò‰Ÿ‚ó µ£.ð««\u1A60ó´º–\u1B44; ; [B2, B3, B6, P1, V6]; xn--9u37blu98h.xn--jof13bt568cork1j; ; ; # .ð««á© á­„
+â´ï¼Žñ‡¦\u200C; â´.ñ‡¦\u200C; [C1, V6]; xn--4kj.xn--0ug56448b; ; xn--4kj.xn--p01x; [V6] # â´.
+ò‰Ÿ‚ó µ£.ð««\u1A60ó´º–\u1B44; ; [B2, B3, B6, V6]; xn--9u37blu98h.xn--jof13bt568cork1j; ; ; # .ð««á© á­„
xn--9u37blu98h.xn--jof13bt568cork1j; ò‰Ÿ‚ó µ£.ð««\u1A60ó´º–\u1B44; [B2, B3, B6, V6]; xn--9u37blu98h.xn--jof13bt568cork1j; ; ; # .ð««á© á­„
-≯âŠá ¯ï½¡ð¹±âº¨; ≯âŠá ¯.ð¹±âº¨; [B1, P1, V6]; xn--i7e163ct2d.xn--vwj7372e; ; ; # ≯âŠá ¯.ð¹±âº¨
->\u0338âŠá ¯ï½¡ð¹±âº¨; ≯âŠá ¯.ð¹±âº¨; [B1, P1, V6]; xn--i7e163ct2d.xn--vwj7372e; ; ; # ≯âŠá ¯.ð¹±âº¨
-≯âŠá ¯ã€‚ð¹±âº¨; ≯âŠá ¯.ð¹±âº¨; [B1, P1, V6]; xn--i7e163ct2d.xn--vwj7372e; ; ; # ≯âŠá ¯.ð¹±âº¨
->\u0338âŠá ¯ã€‚ð¹±âº¨; ≯âŠá ¯.ð¹±âº¨; [B1, P1, V6]; xn--i7e163ct2d.xn--vwj7372e; ; ; # ≯âŠá ¯.ð¹±âº¨
-xn--i7e163ct2d.xn--vwj7372e; ≯âŠá ¯.ð¹±âº¨; [B1, V6]; xn--i7e163ct2d.xn--vwj7372e; ; ; # ≯âŠá ¯.ð¹±âº¨
-ô•œð¹§ðž­ð¹©ã€‚Ⴈð«®á‚¯; ô•œð¹§ðž­ð¹©.Ⴈð«®á‚¯; [B5, B6, P1, V6]; xn--fo0de1270ope54j.xn--gndo2033q; ; ; # ð¹§ð¹©.Ⴈð«®á‚¯
-ô•œð¹§ðž­ð¹©ã€‚â´ˆð«®â´; ô•œð¹§ðž­ð¹©.â´ˆð«®â´; [B5, B6, P1, V6]; xn--fo0de1270ope54j.xn--zkjo0151o; ; ; # ð¹§ð¹©.â´ˆð«®â´
+≯âŠá ¯ï½¡ð¹±âº¨; ≯âŠá ¯.ð¹±âº¨; [B1]; xn--i7e163ct2d.xn--vwj7372e; ; ; # ≯âŠá ¯.ð¹±âº¨
+>\u0338âŠá ¯ï½¡ð¹±âº¨; ≯âŠá ¯.ð¹±âº¨; [B1]; xn--i7e163ct2d.xn--vwj7372e; ; ; # ≯âŠá ¯.ð¹±âº¨
+≯âŠá ¯ã€‚ð¹±âº¨; ≯âŠá ¯.ð¹±âº¨; [B1]; xn--i7e163ct2d.xn--vwj7372e; ; ; # ≯âŠá ¯.ð¹±âº¨
+>\u0338âŠá ¯ã€‚ð¹±âº¨; ≯âŠá ¯.ð¹±âº¨; [B1]; xn--i7e163ct2d.xn--vwj7372e; ; ; # ≯âŠá ¯.ð¹±âº¨
+xn--i7e163ct2d.xn--vwj7372e; ≯âŠá ¯.ð¹±âº¨; [B1]; xn--i7e163ct2d.xn--vwj7372e; ; ; # ≯âŠá ¯.ð¹±âº¨
+ô•œð¹§ðž­ð¹©ã€‚Ⴈð«®á‚¯; ô•œð¹§ðž­ð¹©.Ⴈð«®á‚¯; [B5, B6, V6]; xn--fo0de1270ope54j.xn--gndo2033q; ; ; # ð¹§ð¹©.Ⴈð«®á‚¯
+ô•œð¹§ðž­ð¹©ã€‚â´ˆð«®â´; ô•œð¹§ðž­ð¹©.â´ˆð«®â´; [B5, B6, V6]; xn--fo0de1270ope54j.xn--zkjo0151o; ; ; # ð¹§ð¹©.â´ˆð«®â´
xn--fo0de1270ope54j.xn--zkjo0151o; ô•œð¹§ðž­ð¹©.â´ˆð«®â´; [B5, B6, V6]; xn--fo0de1270ope54j.xn--zkjo0151o; ; ; # ð¹§ð¹©.â´ˆð«®â´
xn--fo0de1270ope54j.xn--gndo2033q; ô•œð¹§ðž­ð¹©.Ⴈð«®á‚¯; [B5, B6, V6]; xn--fo0de1270ope54j.xn--gndo2033q; ; ; # ð¹§ð¹©.Ⴈð«®á‚¯
-𞠂。\uA926; 𞠂.\uA926; [B1, B3, B6, V5]; xn--145h.xn--ti9a; ; ; # 𞠂.ꤦ
-xn--145h.xn--ti9a; 𞠂.\uA926; [B1, B3, B6, V5]; xn--145h.xn--ti9a; ; ; # 𞠂.ꤦ
+𞠂。\uA926; 𞠂.\uA926; [B1, V5]; xn--145h.xn--ti9a; ; ; # 𞠂.ꤦ
+xn--145h.xn--ti9a; 𞠂.\uA926; [B1, V5]; xn--145h.xn--ti9a; ; ; # 𞠂.ꤦ
ðŸ”ð¹«ï¼Ž\u0733\u10379ꡇ; 6ð¹«.\u1037\u07339ꡇ; [B1, V5]; xn--6-t26i.xn--9-91c730e8u8n; ; ; # 6ð¹«.့ܳ9ꡇ
ðŸ”ð¹«ï¼Ž\u1037\u07339ꡇ; 6ð¹«.\u1037\u07339ꡇ; [B1, V5]; xn--6-t26i.xn--9-91c730e8u8n; ; ; # 6ð¹«.့ܳ9ꡇ
6ð¹«.\u1037\u07339ꡇ; ; [B1, V5]; xn--6-t26i.xn--9-91c730e8u8n; ; ; # 6ð¹«.့ܳ9ꡇ
xn--6-t26i.xn--9-91c730e8u8n; 6ð¹«.\u1037\u07339ꡇ; [B1, V5]; xn--6-t26i.xn--9-91c730e8u8n; ; ; # 6ð¹«.့ܳ9ꡇ
-\u0724\u0603𞲶.\u06D8; \u0724\u0603𞲶.\u06D8; [B1, B3, B6, P1, V5, V6]; xn--lfb19ct414i.xn--olb; ; ; # ܤ.ۘ
-\u0724\u0603𞲶.\u06D8; ; [B1, B3, B6, P1, V5, V6]; xn--lfb19ct414i.xn--olb; ; ; # ܤ.ۘ
-xn--lfb19ct414i.xn--olb; \u0724\u0603𞲶.\u06D8; [B1, B3, B6, V5, V6]; xn--lfb19ct414i.xn--olb; ; ; # ܤ.ۘ
-✆񱔩ꡋ.\u0632\u200D𞣴; ✆񱔩ꡋ.\u0632\u200D𞣴; [B1, C2, P1, V6]; xn--1biv525bcix0d.xn--xgb253k0m73a; ; xn--1biv525bcix0d.xn--xgb6828v; [B1, P1, V6] # ✆ꡋ.ز
-✆񱔩ꡋ.\u0632\u200D𞣴; ; [B1, C2, P1, V6]; xn--1biv525bcix0d.xn--xgb253k0m73a; ; xn--1biv525bcix0d.xn--xgb6828v; [B1, P1, V6] # ✆ꡋ.ز
+\u0724\u0603𞲶.\u06D8; \u0724\u0603𞲶.\u06D8; [B1, V5, V6]; xn--lfb19ct414i.xn--olb; ; ; # ܤ.ۘ
+\u0724\u0603𞲶.\u06D8; ; [B1, V5, V6]; xn--lfb19ct414i.xn--olb; ; ; # ܤ.ۘ
+xn--lfb19ct414i.xn--olb; \u0724\u0603𞲶.\u06D8; [B1, V5, V6]; xn--lfb19ct414i.xn--olb; ; ; # ܤ.ۘ
+✆񱔩ꡋ.\u0632\u200D𞣴; ✆񱔩ꡋ.\u0632\u200D𞣴; [B1, C2, V6]; xn--1biv525bcix0d.xn--xgb253k0m73a; ; xn--1biv525bcix0d.xn--xgb6828v; [B1, V6] # ✆ꡋ.ز
+✆񱔩ꡋ.\u0632\u200D𞣴; ; [B1, C2, V6]; xn--1biv525bcix0d.xn--xgb253k0m73a; ; xn--1biv525bcix0d.xn--xgb6828v; [B1, V6] # ✆ꡋ.ز
xn--1biv525bcix0d.xn--xgb6828v; ✆񱔩ꡋ.\u0632𞣴; [B1, V6]; xn--1biv525bcix0d.xn--xgb6828v; ; ; # ✆ꡋ.ز
xn--1biv525bcix0d.xn--xgb253k0m73a; ✆񱔩ꡋ.\u0632\u200D𞣴; [B1, C2, V6]; xn--1biv525bcix0d.xn--xgb253k0m73a; ; ; # ✆ꡋ.ز
-\u0845ñƒ¾°ðž¸-.≠òƒŸð‘‹ª; \u0845ñƒ¾°\u0646-.≠òƒŸð‘‹ª; [B1, B2, B3, P1, V3, V6]; xn----qoc64my971s.xn--1ch7585g76o3c; ; ; # à¡…Ù†-.≠𑋪
-\u0845ñƒ¾°ðž¸-.=\u0338òƒŸð‘‹ª; \u0845ñƒ¾°\u0646-.≠òƒŸð‘‹ª; [B1, B2, B3, P1, V3, V6]; xn----qoc64my971s.xn--1ch7585g76o3c; ; ; # à¡…Ù†-.≠𑋪
-\u0845ñƒ¾°\u0646-.≠òƒŸð‘‹ª; ; [B1, B2, B3, P1, V3, V6]; xn----qoc64my971s.xn--1ch7585g76o3c; ; ; # à¡…Ù†-.≠𑋪
-\u0845ñƒ¾°\u0646-.=\u0338òƒŸð‘‹ª; \u0845ñƒ¾°\u0646-.≠òƒŸð‘‹ª; [B1, B2, B3, P1, V3, V6]; xn----qoc64my971s.xn--1ch7585g76o3c; ; ; # à¡…Ù†-.≠𑋪
+\u0845ñƒ¾°ðž¸-.≠òƒŸð‘‹ª; \u0845ñƒ¾°\u0646-.≠òƒŸð‘‹ª; [B1, B2, B3, V3, V6]; xn----qoc64my971s.xn--1ch7585g76o3c; ; ; # à¡…Ù†-.≠𑋪
+\u0845ñƒ¾°ðž¸-.=\u0338òƒŸð‘‹ª; \u0845ñƒ¾°\u0646-.≠òƒŸð‘‹ª; [B1, B2, B3, V3, V6]; xn----qoc64my971s.xn--1ch7585g76o3c; ; ; # à¡…Ù†-.≠𑋪
+\u0845ñƒ¾°\u0646-.≠òƒŸð‘‹ª; ; [B1, B2, B3, V3, V6]; xn----qoc64my971s.xn--1ch7585g76o3c; ; ; # à¡…Ù†-.≠𑋪
+\u0845ñƒ¾°\u0646-.=\u0338òƒŸð‘‹ª; \u0845ñƒ¾°\u0646-.≠òƒŸð‘‹ª; [B1, B2, B3, V3, V6]; xn----qoc64my971s.xn--1ch7585g76o3c; ; ; # à¡…Ù†-.≠𑋪
xn----qoc64my971s.xn--1ch7585g76o3c; \u0845ñƒ¾°\u0646-.≠òƒŸð‘‹ª; [B1, B2, B3, V3, V6]; xn----qoc64my971s.xn--1ch7585g76o3c; ; ; # à¡…Ù†-.≠𑋪
ðŸ›ï¼Žï§¸; 3.笠; ; 3.xn--6vz; ; ; # 3.笠
ðŸ›ï¼Žç¬ ; 3.笠; ; 3.xn--6vz; ; ; # 3.笠
3.笠; ; ; 3.xn--6vz; ; ; # 3.笠
3.xn--6vz; 3.笠; ; 3.xn--6vz; ; ; # 3.笠
--\u200D.Ⴞð‹·; ; [C2, P1, V3, V6]; xn----ugn.xn--2nd2315j; ; -.xn--2nd2315j; [P1, V3, V6] # -.Ⴞð‹·
+-\u200D.Ⴞð‹·; ; [C2, V3, V6]; xn----ugn.xn--2nd2315j; ; -.xn--2nd2315j; [V3, V6] # -.Ⴞð‹·
-\u200D.â´žð‹·; ; [C2, V3]; xn----ugn.xn--mlj8559d; ; -.xn--mlj8559d; [V3] # -.â´žð‹·
-.xn--mlj8559d; -.â´žð‹·; [V3]; -.xn--mlj8559d; ; ; # -.â´žð‹·
xn----ugn.xn--mlj8559d; -\u200D.â´žð‹·; [C2, V3]; xn----ugn.xn--mlj8559d; ; ; # -.â´žð‹·
@@ -5093,49 +5121,51 @@ xn--zca19ln1di19a.xn--xmc; \u200Dςß\u0731.\u0BCD; [C2, V5]; xn--zca19ln1di19a.
\u200DΣss\u0731.\u0BCD; \u200Dσss\u0731.\u0BCD; [C2, V5]; xn--ss-ubc826ab34b.xn--xmc; ; xn--ss-ubc826a.xn--xmc; [V5] # σssܱ.à¯
\u200DΣß\u0731.\u0BCD; \u200Dσß\u0731.\u0BCD; [C2, V5]; xn--zca39lk1di19a.xn--xmc; ; xn--ss-ubc826a.xn--xmc; [V5] # σßܱ.à¯
\u200Dσß\u0731.\u0BCD; \u200Dσß\u0731.\u0BCD; [C2, V5]; xn--zca39lk1di19a.xn--xmc; ; xn--ss-ubc826a.xn--xmc; [V5] # σßܱ.à¯
-≠.\u200D; ≠.\u200D; [C2, P1, V6]; xn--1ch.xn--1ug; ; xn--1ch.; [P1, V6] # ≠.
-=\u0338.\u200D; ≠.\u200D; [C2, P1, V6]; xn--1ch.xn--1ug; ; xn--1ch.; [P1, V6] # ≠.
-≠.\u200D; ; [C2, P1, V6]; xn--1ch.xn--1ug; ; xn--1ch.; [P1, V6] # ≠.
-=\u0338.\u200D; ≠.\u200D; [C2, P1, V6]; xn--1ch.xn--1ug; ; xn--1ch.; [P1, V6] # ≠.
-xn--1ch.; ≠.; [V6]; xn--1ch.; ; ; # ≠.
-xn--1ch.xn--1ug; ≠.\u200D; [C2, V6]; xn--1ch.xn--1ug; ; ; # ≠.
-\uFC01。\u0C81ᠼ▗ò’‹; \u0626\u062D.\u0C81ᠼ▗ò’‹; [B1, P1, V5, V6]; xn--lgbo.xn--2rc021dcxkrx55t; ; ; # ئح.à²á ¼â–—
-\u0626\u062D。\u0C81ᠼ▗ò’‹; \u0626\u062D.\u0C81ᠼ▗ò’‹; [B1, P1, V5, V6]; xn--lgbo.xn--2rc021dcxkrx55t; ; ; # ئح.à²á ¼â–—
-\u064A\u0654\u062D。\u0C81ᠼ▗ò’‹; \u0626\u062D.\u0C81ᠼ▗ò’‹; [B1, P1, V5, V6]; xn--lgbo.xn--2rc021dcxkrx55t; ; ; # ئح.à²á ¼â–—
+≠.\u200D; ≠.\u200D; [C2]; xn--1ch.xn--1ug; ; xn--1ch.; [] # ≠.
+=\u0338.\u200D; ≠.\u200D; [C2]; xn--1ch.xn--1ug; ; xn--1ch.; [] # ≠.
+≠.\u200D; ; [C2]; xn--1ch.xn--1ug; ; xn--1ch.; [] # ≠.
+=\u0338.\u200D; ≠.\u200D; [C2]; xn--1ch.xn--1ug; ; xn--1ch.; [] # ≠.
+xn--1ch.; ≠.; ; xn--1ch.; ; ; # ≠.
+≠.; ; ; xn--1ch.; ; ; # ≠.
+=\u0338.; ≠.; ; xn--1ch.; ; ; # ≠.
+xn--1ch.xn--1ug; ≠.\u200D; [C2]; xn--1ch.xn--1ug; ; ; # ≠.
+\uFC01。\u0C81ᠼ▗ò’‹; \u0626\u062D.\u0C81ᠼ▗ò’‹; [B1, V5, V6]; xn--lgbo.xn--2rc021dcxkrx55t; ; ; # ئح.à²á ¼â–—
+\u0626\u062D。\u0C81ᠼ▗ò’‹; \u0626\u062D.\u0C81ᠼ▗ò’‹; [B1, V5, V6]; xn--lgbo.xn--2rc021dcxkrx55t; ; ; # ئح.à²á ¼â–—
+\u064A\u0654\u062D。\u0C81ᠼ▗ò’‹; \u0626\u062D.\u0C81ᠼ▗ò’‹; [B1, V5, V6]; xn--lgbo.xn--2rc021dcxkrx55t; ; ; # ئح.à²á ¼â–—
xn--lgbo.xn--2rc021dcxkrx55t; \u0626\u062D.\u0C81ᠼ▗ò’‹; [B1, V5, V6]; xn--lgbo.xn--2rc021dcxkrx55t; ; ; # ئح.à²á ¼â–—
-󧋵\u09CDς.ςð¨¿; 󧋵\u09CDÏ‚.Ï‚ð¨¿; [P1, V6]; xn--3xa702av8297a.xn--3xa8055k; ; xn--4xa502av8297a.xn--4xa6055k; # à§Ï‚.Ï‚ð¨¿
-󧋵\u09CDÏ‚.Ï‚ð¨¿; ; [P1, V6]; xn--3xa702av8297a.xn--3xa8055k; ; xn--4xa502av8297a.xn--4xa6055k; # à§Ï‚.Ï‚ð¨¿
-󧋵\u09CDΣ.Σð¨¿; 󧋵\u09CDσ.σð¨¿; [P1, V6]; xn--4xa502av8297a.xn--4xa6055k; ; ; # à§Ïƒ.σð¨¿
-󧋵\u09CDσ.Ï‚ð¨¿; ; [P1, V6]; xn--4xa502av8297a.xn--3xa8055k; ; xn--4xa502av8297a.xn--4xa6055k; # à§Ïƒ.Ï‚ð¨¿
-󧋵\u09CDσ.σð¨¿; ; [P1, V6]; xn--4xa502av8297a.xn--4xa6055k; ; ; # à§Ïƒ.σð¨¿
-󧋵\u09CDΣ.σð¨¿; 󧋵\u09CDσ.σð¨¿; [P1, V6]; xn--4xa502av8297a.xn--4xa6055k; ; ; # à§Ïƒ.σð¨¿
+󧋵\u09CDς.ςð¨¿; 󧋵\u09CDÏ‚.Ï‚ð¨¿; [V6]; xn--3xa702av8297a.xn--3xa8055k; ; xn--4xa502av8297a.xn--4xa6055k; # à§Ï‚.Ï‚ð¨¿
+󧋵\u09CDÏ‚.Ï‚ð¨¿; ; [V6]; xn--3xa702av8297a.xn--3xa8055k; ; xn--4xa502av8297a.xn--4xa6055k; # à§Ï‚.Ï‚ð¨¿
+󧋵\u09CDΣ.Σð¨¿; 󧋵\u09CDσ.σð¨¿; [V6]; xn--4xa502av8297a.xn--4xa6055k; ; ; # à§Ïƒ.σð¨¿
+󧋵\u09CDσ.Ï‚ð¨¿; ; [V6]; xn--4xa502av8297a.xn--3xa8055k; ; xn--4xa502av8297a.xn--4xa6055k; # à§Ïƒ.Ï‚ð¨¿
+󧋵\u09CDσ.σð¨¿; ; [V6]; xn--4xa502av8297a.xn--4xa6055k; ; ; # à§Ïƒ.σð¨¿
+󧋵\u09CDΣ.σð¨¿; 󧋵\u09CDσ.σð¨¿; [V6]; xn--4xa502av8297a.xn--4xa6055k; ; ; # à§Ïƒ.σð¨¿
xn--4xa502av8297a.xn--4xa6055k; 󧋵\u09CDσ.σð¨¿; [V6]; xn--4xa502av8297a.xn--4xa6055k; ; ; # à§Ïƒ.σð¨¿
-󧋵\u09CDΣ.Ï‚ð¨¿; 󧋵\u09CDσ.Ï‚ð¨¿; [P1, V6]; xn--4xa502av8297a.xn--3xa8055k; ; xn--4xa502av8297a.xn--4xa6055k; # à§Ïƒ.Ï‚ð¨¿
+󧋵\u09CDΣ.Ï‚ð¨¿; 󧋵\u09CDσ.Ï‚ð¨¿; [V6]; xn--4xa502av8297a.xn--3xa8055k; ; xn--4xa502av8297a.xn--4xa6055k; # à§Ïƒ.Ï‚ð¨¿
xn--4xa502av8297a.xn--3xa8055k; 󧋵\u09CDσ.Ï‚ð¨¿; [V6]; xn--4xa502av8297a.xn--3xa8055k; ; ; # à§Ïƒ.Ï‚ð¨¿
xn--3xa702av8297a.xn--3xa8055k; 󧋵\u09CDÏ‚.Ï‚ð¨¿; [V6]; xn--3xa702av8297a.xn--3xa8055k; ; ; # à§Ï‚.Ï‚ð¨¿
-󧋵\u09CDΣ.Σð¨¿; 󧋵\u09CDσ.σð¨¿; [P1, V6]; xn--4xa502av8297a.xn--4xa6055k; ; ; # à§Ïƒ.σð¨¿
-󧋵\u09CDσ.ςð¨¿; 󧋵\u09CDσ.Ï‚ð¨¿; [P1, V6]; xn--4xa502av8297a.xn--3xa8055k; ; xn--4xa502av8297a.xn--4xa6055k; # à§Ïƒ.Ï‚ð¨¿
-󧋵\u09CDσ.σð¨¿; 󧋵\u09CDσ.σð¨¿; [P1, V6]; xn--4xa502av8297a.xn--4xa6055k; ; ; # à§Ïƒ.σð¨¿
-󧋵\u09CDΣ.σð¨¿; 󧋵\u09CDσ.σð¨¿; [P1, V6]; xn--4xa502av8297a.xn--4xa6055k; ; ; # à§Ïƒ.σð¨¿
-󧋵\u09CDΣ.ςð¨¿; 󧋵\u09CDσ.Ï‚ð¨¿; [P1, V6]; xn--4xa502av8297a.xn--3xa8055k; ; xn--4xa502av8297a.xn--4xa6055k; # à§Ïƒ.Ï‚ð¨¿
-ð«“\u07D8牅\u08F8。𞦤\u1A17ò±°á‚¹; ð«“\u07D8牅\u08F8.𞦤\u1A17ò±°á‚¹; [B2, B3, P1, V6]; xn--zsb09cu46vjs6f.xn--xnd909bv540bm5k9d; ; ; # ð«“ߘ牅ࣸ.ᨗႹ
-ð«“\u07D8牅\u08F8。𞦤\u1A17ò±°á‚¹; ð«“\u07D8牅\u08F8.𞦤\u1A17ò±°á‚¹; [B2, B3, P1, V6]; xn--zsb09cu46vjs6f.xn--xnd909bv540bm5k9d; ; ; # ð«“ߘ牅ࣸ.ᨗႹ
-ð«“\u07D8牅\u08F8。𞦤\u1A17ò±°â´™; ð«“\u07D8牅\u08F8.𞦤\u1A17ò±°â´™; [B2, B3, P1, V6]; xn--zsb09cu46vjs6f.xn--gmf469fr883am5r1e; ; ; # ð«“ߘ牅ࣸ.ᨗⴙ
+󧋵\u09CDΣ.Σð¨¿; 󧋵\u09CDσ.σð¨¿; [V6]; xn--4xa502av8297a.xn--4xa6055k; ; ; # à§Ïƒ.σð¨¿
+󧋵\u09CDσ.ςð¨¿; 󧋵\u09CDσ.Ï‚ð¨¿; [V6]; xn--4xa502av8297a.xn--3xa8055k; ; xn--4xa502av8297a.xn--4xa6055k; # à§Ïƒ.Ï‚ð¨¿
+󧋵\u09CDσ.σð¨¿; 󧋵\u09CDσ.σð¨¿; [V6]; xn--4xa502av8297a.xn--4xa6055k; ; ; # à§Ïƒ.σð¨¿
+󧋵\u09CDΣ.σð¨¿; 󧋵\u09CDσ.σð¨¿; [V6]; xn--4xa502av8297a.xn--4xa6055k; ; ; # à§Ïƒ.σð¨¿
+󧋵\u09CDΣ.ςð¨¿; 󧋵\u09CDσ.Ï‚ð¨¿; [V6]; xn--4xa502av8297a.xn--3xa8055k; ; xn--4xa502av8297a.xn--4xa6055k; # à§Ïƒ.Ï‚ð¨¿
+ð«“\u07D8牅\u08F8。𞦤\u1A17ò±°á‚¹; ð«“\u07D8牅\u08F8.𞦤\u1A17ò±°á‚¹; [B2, B3, V6]; xn--zsb09cu46vjs6f.xn--xnd909bv540bm5k9d; ; ; # ð«“ߘ牅ࣸ.ᨗႹ
+ð«“\u07D8牅\u08F8。𞦤\u1A17ò±°á‚¹; ð«“\u07D8牅\u08F8.𞦤\u1A17ò±°á‚¹; [B2, B3, V6]; xn--zsb09cu46vjs6f.xn--xnd909bv540bm5k9d; ; ; # ð«“ߘ牅ࣸ.ᨗႹ
+ð«“\u07D8牅\u08F8。𞦤\u1A17ò±°â´™; ð«“\u07D8牅\u08F8.𞦤\u1A17ò±°â´™; [B2, B3, V6]; xn--zsb09cu46vjs6f.xn--gmf469fr883am5r1e; ; ; # ð«“ߘ牅ࣸ.ᨗⴙ
xn--zsb09cu46vjs6f.xn--gmf469fr883am5r1e; ð«“\u07D8牅\u08F8.𞦤\u1A17ò±°â´™; [B2, B3, V6]; xn--zsb09cu46vjs6f.xn--gmf469fr883am5r1e; ; ; # ð«“ߘ牅ࣸ.ᨗⴙ
xn--zsb09cu46vjs6f.xn--xnd909bv540bm5k9d; ð«“\u07D8牅\u08F8.𞦤\u1A17ò±°á‚¹; [B2, B3, V6]; xn--zsb09cu46vjs6f.xn--xnd909bv540bm5k9d; ; ; # ð«“ߘ牅ࣸ.ᨗႹ
-ð«“\u07D8牅\u08F8。𞦤\u1A17ò±°â´™; ð«“\u07D8牅\u08F8.𞦤\u1A17ò±°â´™; [B2, B3, P1, V6]; xn--zsb09cu46vjs6f.xn--gmf469fr883am5r1e; ; ; # ð«“ߘ牅ࣸ.ᨗⴙ
-񣤒。륧; 񣤒.륧; [P1, V6]; xn--s264a.xn--pw2b; ; ; # .륧
-񣤒。륧; 񣤒.륧; [P1, V6]; xn--s264a.xn--pw2b; ; ; # .륧
-񣤒。륧; 񣤒.륧; [P1, V6]; xn--s264a.xn--pw2b; ; ; # .륧
-񣤒。륧; 񣤒.륧; [P1, V6]; xn--s264a.xn--pw2b; ; ; # .륧
+ð«“\u07D8牅\u08F8。𞦤\u1A17ò±°â´™; ð«“\u07D8牅\u08F8.𞦤\u1A17ò±°â´™; [B2, B3, V6]; xn--zsb09cu46vjs6f.xn--gmf469fr883am5r1e; ; ; # ð«“ߘ牅ࣸ.ᨗⴙ
+񣤒。륧; 񣤒.륧; [V6]; xn--s264a.xn--pw2b; ; ; # .륧
+񣤒。륧; 񣤒.륧; [V6]; xn--s264a.xn--pw2b; ; ; # .륧
+񣤒。륧; 񣤒.륧; [V6]; xn--s264a.xn--pw2b; ; ; # .륧
+񣤒。륧; 񣤒.륧; [V6]; xn--s264a.xn--pw2b; ; ; # .륧
xn--s264a.xn--pw2b; 񣤒.륧; [V6]; xn--s264a.xn--pw2b; ; ; # .륧
-ð¹·\u200D。󉵢; ð¹·\u200D.󉵢; [B1, C2, P1, V6]; xn--1ugx205g.xn--8088d; ; xn--vo0d.xn--8088d; [B1, P1, V6] # ð¹·.
+ð¹·\u200D。󉵢; ð¹·\u200D.󉵢; [B1, C2, V6]; xn--1ugx205g.xn--8088d; ; xn--vo0d.xn--8088d; [B1, V6] # ð¹·.
xn--vo0d.xn--8088d; ð¹·.󉵢; [B1, V6]; xn--vo0d.xn--8088d; ; ; # ð¹·.
xn--1ugx205g.xn--8088d; ð¹·\u200D.󉵢; [B1, C2, V6]; xn--1ugx205g.xn--8088d; ; ; # ð¹·.
-Ⴘ\u06C2𑲭。-; Ⴘ\u06C2𑲭.-; [B1, B5, B6, P1, V3, V6]; xn--1kb312c139t.-; ; ; # Ⴘۂ𑲭.-
-Ⴘ\u06C1\u0654𑲭。-; Ⴘ\u06C2𑲭.-; [B1, B5, B6, P1, V3, V6]; xn--1kb312c139t.-; ; ; # Ⴘۂ𑲭.-
-Ⴘ\u06C2𑲭。-; Ⴘ\u06C2𑲭.-; [B1, B5, B6, P1, V3, V6]; xn--1kb312c139t.-; ; ; # Ⴘۂ𑲭.-
-Ⴘ\u06C1\u0654𑲭。-; Ⴘ\u06C2𑲭.-; [B1, B5, B6, P1, V3, V6]; xn--1kb312c139t.-; ; ; # Ⴘۂ𑲭.-
+Ⴘ\u06C2𑲭。-; Ⴘ\u06C2𑲭.-; [B1, B5, B6, V3, V6]; xn--1kb312c139t.-; ; ; # Ⴘۂ𑲭.-
+Ⴘ\u06C1\u0654𑲭。-; Ⴘ\u06C2𑲭.-; [B1, B5, B6, V3, V6]; xn--1kb312c139t.-; ; ; # Ⴘۂ𑲭.-
+Ⴘ\u06C2𑲭。-; Ⴘ\u06C2𑲭.-; [B1, B5, B6, V3, V6]; xn--1kb312c139t.-; ; ; # Ⴘۂ𑲭.-
+Ⴘ\u06C1\u0654𑲭。-; Ⴘ\u06C2𑲭.-; [B1, B5, B6, V3, V6]; xn--1kb312c139t.-; ; ; # Ⴘۂ𑲭.-
ⴘ\u06C1\u0654𑲭。-; ⴘ\u06C2𑲭.-; [B1, B5, B6, V3]; xn--1kb147qfk3n.-; ; ; # ⴘۂ𑲭.-
ⴘ\u06C2𑲭。-; ⴘ\u06C2𑲭.-; [B1, B5, B6, V3]; xn--1kb147qfk3n.-; ; ; # ⴘۂ𑲭.-
xn--1kb147qfk3n.-; ⴘ\u06C2𑲭.-; [B1, B5, B6, V3]; xn--1kb147qfk3n.-; ; ; # ⴘۂ𑲭.-
@@ -5145,91 +5175,91 @@ xn--1kb312c139t.-; Ⴘ\u06C2𑲭.-; [B1, B5, B6, V3, V6]; xn--1kb312c139t.-; ; ;
\uA806\u067B₆á¡ã€‚🛇\uFCDD; \uA806\u067B6á¡.🛇\u064A\u0645; [B1, V5]; xn--6-rrc018krt9k.xn--hhbj61429a; ; ; # ê †Ù»6á¡.🛇يم
\uA806\u067B6á¡ã€‚🛇\u064A\u0645; \uA806\u067B6á¡.🛇\u064A\u0645; [B1, V5]; xn--6-rrc018krt9k.xn--hhbj61429a; ; ; # ê †Ù»6á¡.🛇يم
xn--6-rrc018krt9k.xn--hhbj61429a; \uA806\u067B6á¡.🛇\u064A\u0645; [B1, V5]; xn--6-rrc018krt9k.xn--hhbj61429a; ; ; # ê †Ù»6á¡.🛇يم
-ò¸‚.㇄ᡟð«‚\u0622; ; [B1, P1, V6]; xn--p292d.xn--hgb154ghrsvm2r; ; ; # .㇄ᡟð«‚Ø¢
-ò¸‚.㇄ᡟð«‚\u0627\u0653; ò¸‚.㇄ᡟð«‚\u0622; [B1, P1, V6]; xn--p292d.xn--hgb154ghrsvm2r; ; ; # .㇄ᡟð«‚Ø¢
+ò¸‚.㇄ᡟð«‚\u0622; ; [B1, V6]; xn--p292d.xn--hgb154ghrsvm2r; ; ; # .㇄ᡟð«‚Ø¢
+ò¸‚.㇄ᡟð«‚\u0627\u0653; ò¸‚.㇄ᡟð«‚\u0622; [B1, V6]; xn--p292d.xn--hgb154ghrsvm2r; ; ; # .㇄ᡟð«‚Ø¢
xn--p292d.xn--hgb154ghrsvm2r; ò¸‚.㇄ᡟð«‚\u0622; [B1, V6]; xn--p292d.xn--hgb154ghrsvm2r; ; ; # .㇄ᡟð«‚Ø¢
-\u07DF򵚌。-\u07E9; \u07DF򵚌.-\u07E9; [B1, B2, B3, P1, V3, V6]; xn--6sb88139l.xn----pdd; ; ; # ߟ.-ߩ
+\u07DF򵚌。-\u07E9; \u07DF򵚌.-\u07E9; [B1, B2, B3, V3, V6]; xn--6sb88139l.xn----pdd; ; ; # ߟ.-ߩ
xn--6sb88139l.xn----pdd; \u07DF򵚌.-\u07E9; [B1, B2, B3, V3, V6]; xn--6sb88139l.xn----pdd; ; ; # ߟ.-ߩ
-ς\u0643⾑.\u200Cᢟ\u200C⒈; ς\u0643襾.\u200Cᢟ\u200C⒈; [B1, B5, C1, P1, V6]; xn--3xa69jux8r.xn--pbf519aba607b; ; xn--4xa49jux8r.xn--pbf212d; [B5, P1, V6] # ςك襾.ᢟ⒈
+ς\u0643⾑.\u200Cᢟ\u200C⒈; ς\u0643襾.\u200Cᢟ\u200C⒈; [B1, B5, C1, V6]; xn--3xa69jux8r.xn--pbf519aba607b; ; xn--4xa49jux8r.xn--pbf212d; [B5, V6] # ςك襾.ᢟ⒈
ς\u0643襾.\u200Cᢟ\u200C1.; ; [B1, B5, C1]; xn--3xa69jux8r.xn--1-4ck691bba.; ; xn--4xa49jux8r.xn--1-4ck.; [B5] # ςك襾.ᢟ1.
Σ\u0643襾.\u200Cᢟ\u200C1.; σ\u0643襾.\u200Cᢟ\u200C1.; [B1, B5, C1]; xn--4xa49jux8r.xn--1-4ck691bba.; ; xn--4xa49jux8r.xn--1-4ck.; [B5] # σك襾.ᢟ1.
σ\u0643襾.\u200Cᢟ\u200C1.; ; [B1, B5, C1]; xn--4xa49jux8r.xn--1-4ck691bba.; ; xn--4xa49jux8r.xn--1-4ck.; [B5] # σك襾.ᢟ1.
xn--4xa49jux8r.xn--1-4ck.; σ\u0643襾.ᢟ1.; [B5]; xn--4xa49jux8r.xn--1-4ck.; ; ; # σك襾.ᢟ1.
xn--4xa49jux8r.xn--1-4ck691bba.; σ\u0643襾.\u200Cᢟ\u200C1.; [B1, B5, C1]; xn--4xa49jux8r.xn--1-4ck691bba.; ; ; # σك襾.ᢟ1.
xn--3xa69jux8r.xn--1-4ck691bba.; ς\u0643襾.\u200Cᢟ\u200C1.; [B1, B5, C1]; xn--3xa69jux8r.xn--1-4ck691bba.; ; ; # ςك襾.ᢟ1.
-Σ\u0643⾑.\u200Cᢟ\u200C⒈; σ\u0643襾.\u200Cᢟ\u200C⒈; [B1, B5, C1, P1, V6]; xn--4xa49jux8r.xn--pbf519aba607b; ; xn--4xa49jux8r.xn--pbf212d; [B5, P1, V6] # σك襾.ᢟ⒈
-σ\u0643⾑.\u200Cᢟ\u200C⒈; σ\u0643襾.\u200Cᢟ\u200C⒈; [B1, B5, C1, P1, V6]; xn--4xa49jux8r.xn--pbf519aba607b; ; xn--4xa49jux8r.xn--pbf212d; [B5, P1, V6] # σك襾.ᢟ⒈
+Σ\u0643⾑.\u200Cᢟ\u200C⒈; σ\u0643襾.\u200Cᢟ\u200C⒈; [B1, B5, C1, V6]; xn--4xa49jux8r.xn--pbf519aba607b; ; xn--4xa49jux8r.xn--pbf212d; [B5, V6] # σك襾.ᢟ⒈
+σ\u0643⾑.\u200Cᢟ\u200C⒈; σ\u0643襾.\u200Cᢟ\u200C⒈; [B1, B5, C1, V6]; xn--4xa49jux8r.xn--pbf519aba607b; ; xn--4xa49jux8r.xn--pbf212d; [B5, V6] # σك襾.ᢟ⒈
xn--4xa49jux8r.xn--pbf212d; σ\u0643襾.ᢟ⒈; [B5, V6]; xn--4xa49jux8r.xn--pbf212d; ; ; # σك襾.ᢟ⒈
xn--4xa49jux8r.xn--pbf519aba607b; σ\u0643襾.\u200Cᢟ\u200C⒈; [B1, B5, C1, V6]; xn--4xa49jux8r.xn--pbf519aba607b; ; ; # σك襾.ᢟ⒈
xn--3xa69jux8r.xn--pbf519aba607b; ς\u0643襾.\u200Cᢟ\u200C⒈; [B1, B5, C1, V6]; xn--3xa69jux8r.xn--pbf519aba607b; ; ; # ςك襾.ᢟ⒈
-ᡆð‘“.𞵆; ᡆð‘“.𞵆; [P1, V6]; xn--57e0440k.xn--k86h; ; ; # ᡆ.
-ᡆð‘“.𞵆; ; [P1, V6]; xn--57e0440k.xn--k86h; ; ; # ᡆ.
+ᡆð‘“.𞵆; ᡆð‘“.𞵆; [V6]; xn--57e0440k.xn--k86h; ; ; # ᡆ.
+ᡆð‘“.𞵆; ; [V6]; xn--57e0440k.xn--k86h; ; ; # ᡆ.
xn--57e0440k.xn--k86h; ᡆð‘“.𞵆; [V6]; xn--57e0440k.xn--k86h; ; ; # ᡆ.
-\u0A4Dð¦“\u1DEE。\u200C\u08BDñ¹²; \u0A4Dð¦“\u1DEE.\u200C\u08BDñ¹²; [B1, C1, P1, V5, V6]; xn--ybc461hph93b.xn--jzb740j1y45h; ; xn--ybc461hph93b.xn--jzb29857e; [B1, B2, B3, P1, V5, V6] # à©ð¦“á·®.ࢽ
-\u0A4Dð¦“\u1DEE。\u200C\u08BDñ¹²; \u0A4Dð¦“\u1DEE.\u200C\u08BDñ¹²; [B1, C1, P1, V5, V6]; xn--ybc461hph93b.xn--jzb740j1y45h; ; xn--ybc461hph93b.xn--jzb29857e; [B1, B2, B3, P1, V5, V6] # à©ð¦“á·®.ࢽ
+\u0A4Dð¦“\u1DEE。\u200C\u08BDñ¹²; \u0A4Dð¦“\u1DEE.\u200C\u08BDñ¹²; [B1, C1, V5, V6]; xn--ybc461hph93b.xn--jzb740j1y45h; ; xn--ybc461hph93b.xn--jzb29857e; [B1, B2, B3, V5, V6] # à©ð¦“á·®.ࢽ
+\u0A4Dð¦“\u1DEE。\u200C\u08BDñ¹²; \u0A4Dð¦“\u1DEE.\u200C\u08BDñ¹²; [B1, C1, V5, V6]; xn--ybc461hph93b.xn--jzb740j1y45h; ; xn--ybc461hph93b.xn--jzb29857e; [B1, B2, B3, V5, V6] # à©ð¦“á·®.ࢽ
xn--ybc461hph93b.xn--jzb29857e; \u0A4Dð¦“\u1DEE.\u08BDñ¹²; [B1, B2, B3, V5, V6]; xn--ybc461hph93b.xn--jzb29857e; ; ; # à©ð¦“á·®.ࢽ
xn--ybc461hph93b.xn--jzb740j1y45h; \u0A4Dð¦“\u1DEE.\u200C\u08BDñ¹²; [B1, C1, V5, V6]; xn--ybc461hph93b.xn--jzb740j1y45h; ; ; # à©ð¦“á·®.ࢽ
-\u062E\u0748񅪪-.\u200C먿; \u062E\u0748񅪪-.\u200C먿; [B1, B2, B3, C1, P1, V3, V6]; xn----dnc06f42153a.xn--0ug1581d; ; xn----dnc06f42153a.xn--v22b; [B2, B3, P1, V3, V6] # خ݈-.먿
-\u062E\u0748񅪪-.\u200C먿; \u062E\u0748񅪪-.\u200C먿; [B1, B2, B3, C1, P1, V3, V6]; xn----dnc06f42153a.xn--0ug1581d; ; xn----dnc06f42153a.xn--v22b; [B2, B3, P1, V3, V6] # خ݈-.먿
-\u062E\u0748񅪪-.\u200C먿; ; [B1, B2, B3, C1, P1, V3, V6]; xn----dnc06f42153a.xn--0ug1581d; ; xn----dnc06f42153a.xn--v22b; [B2, B3, P1, V3, V6] # خ݈-.먿
-\u062E\u0748񅪪-.\u200C먿; \u062E\u0748񅪪-.\u200C먿; [B1, B2, B3, C1, P1, V3, V6]; xn----dnc06f42153a.xn--0ug1581d; ; xn----dnc06f42153a.xn--v22b; [B2, B3, P1, V3, V6] # خ݈-.먿
+\u062E\u0748񅪪-.\u200C먿; \u062E\u0748񅪪-.\u200C먿; [B1, B2, B3, C1, V3, V6]; xn----dnc06f42153a.xn--0ug1581d; ; xn----dnc06f42153a.xn--v22b; [B2, B3, V3, V6] # خ݈-.먿
+\u062E\u0748񅪪-.\u200C먿; \u062E\u0748񅪪-.\u200C먿; [B1, B2, B3, C1, V3, V6]; xn----dnc06f42153a.xn--0ug1581d; ; xn----dnc06f42153a.xn--v22b; [B2, B3, V3, V6] # خ݈-.먿
+\u062E\u0748񅪪-.\u200C먿; ; [B1, B2, B3, C1, V3, V6]; xn----dnc06f42153a.xn--0ug1581d; ; xn----dnc06f42153a.xn--v22b; [B2, B3, V3, V6] # خ݈-.먿
+\u062E\u0748񅪪-.\u200C먿; \u062E\u0748񅪪-.\u200C먿; [B1, B2, B3, C1, V3, V6]; xn----dnc06f42153a.xn--0ug1581d; ; xn----dnc06f42153a.xn--v22b; [B2, B3, V3, V6] # خ݈-.먿
xn----dnc06f42153a.xn--v22b; \u062E\u0748񅪪-.먿; [B2, B3, V3, V6]; xn----dnc06f42153a.xn--v22b; ; ; # خ݈-.먿
xn----dnc06f42153a.xn--0ug1581d; \u062E\u0748񅪪-.\u200C먿; [B1, B2, B3, C1, V3, V6]; xn----dnc06f42153a.xn--0ug1581d; ; ; # خ݈-.먿
-􋿦。ᠽ; 􋿦.ᠽ; [P1, V6]; xn--j890g.xn--w7e; ; ; # .ᠽ
-􋿦。ᠽ; 􋿦.ᠽ; [P1, V6]; xn--j890g.xn--w7e; ; ; # .ᠽ
+􋿦。ᠽ; 􋿦.ᠽ; [V6]; xn--j890g.xn--w7e; ; ; # .ᠽ
+􋿦。ᠽ; 􋿦.ᠽ; [V6]; xn--j890g.xn--w7e; ; ; # .ᠽ
xn--j890g.xn--w7e; 􋿦.ᠽ; [V6]; xn--j890g.xn--w7e; ; ; # .ᠽ
嬃ðŒï¼Ž\u200D\u0B44; 嬃ðŒ.\u200D\u0B44; [C2]; xn--b6s0078f.xn--0ic557h; ; xn--b6s0078f.xn--0ic; [V5] # 嬃ðŒ.à­„
嬃ðŒ.\u200D\u0B44; ; [C2]; xn--b6s0078f.xn--0ic557h; ; xn--b6s0078f.xn--0ic; [V5] # 嬃ðŒ.à­„
xn--b6s0078f.xn--0ic; 嬃ðŒ.\u0B44; [V5]; xn--b6s0078f.xn--0ic; ; ; # 嬃ðŒ.à­„
xn--b6s0078f.xn--0ic557h; 嬃ðŒ.\u200D\u0B44; [C2]; xn--b6s0078f.xn--0ic557h; ; ; # 嬃ðŒ.à­„
-\u0602ðŒªâ‰¯ï¼Žðš‹²òµ¨; \u0602ðŒªâ‰¯.𚋲òµ¨; [B1, P1, V6]; xn--kfb866llx01a.xn--wp1gm3570b; ; ; # ðŒªâ‰¯.
-\u0602ðŒª>\u0338.𚋲òµ¨; \u0602ðŒªâ‰¯.𚋲òµ¨; [B1, P1, V6]; xn--kfb866llx01a.xn--wp1gm3570b; ; ; # ðŒªâ‰¯.
-\u0602ðŒªâ‰¯.𚋲òµ¨; ; [B1, P1, V6]; xn--kfb866llx01a.xn--wp1gm3570b; ; ; # ðŒªâ‰¯.
-\u0602ðŒª>\u0338.𚋲òµ¨; \u0602ðŒªâ‰¯.𚋲òµ¨; [B1, P1, V6]; xn--kfb866llx01a.xn--wp1gm3570b; ; ; # ðŒªâ‰¯.
+\u0602ðŒªâ‰¯ï¼Žðš‹²òµ¨; \u0602ðŒªâ‰¯.𚋲òµ¨; [B1, V6]; xn--kfb866llx01a.xn--wp1gm3570b; ; ; # ðŒªâ‰¯.
+\u0602ðŒª>\u0338.𚋲òµ¨; \u0602ðŒªâ‰¯.𚋲òµ¨; [B1, V6]; xn--kfb866llx01a.xn--wp1gm3570b; ; ; # ðŒªâ‰¯.
+\u0602ðŒªâ‰¯.𚋲òµ¨; ; [B1, V6]; xn--kfb866llx01a.xn--wp1gm3570b; ; ; # ðŒªâ‰¯.
+\u0602ðŒª>\u0338.𚋲òµ¨; \u0602ðŒªâ‰¯.𚋲òµ¨; [B1, V6]; xn--kfb866llx01a.xn--wp1gm3570b; ; ; # ðŒªâ‰¯.
xn--kfb866llx01a.xn--wp1gm3570b; \u0602ðŒªâ‰¯.𚋲òµ¨; [B1, V6]; xn--kfb866llx01a.xn--wp1gm3570b; ; ; # ðŒªâ‰¯.
-򫾥\u08B7\u17CC\uA9C0.𞼠; ; [B5, P1, V6]; xn--dzb638ewm4i1iy1h.xn--3m7h; ; ; # ࢷ៌꧀.
+򫾥\u08B7\u17CC\uA9C0.𞼠; ; [B5, V6]; xn--dzb638ewm4i1iy1h.xn--3m7h; ; ; # ࢷ៌꧀.
xn--dzb638ewm4i1iy1h.xn--3m7h; 򫾥\u08B7\u17CC\uA9C0.𞼠; [B5, V6]; xn--dzb638ewm4i1iy1h.xn--3m7h; ; ; # ࢷ៌꧀.
-\u200C.񟛤; ; [C1, P1, V6]; xn--0ug.xn--q823a; ; .xn--q823a; [P1, V6, A4_2] # .
+\u200C.񟛤; ; [C1, V6]; xn--0ug.xn--q823a; ; .xn--q823a; [V6, A4_2] # .
.xn--q823a; .񟛤; [V6, X4_2]; .xn--q823a; [V6, A4_2]; ; # .
xn--0ug.xn--q823a; \u200C.񟛤; [C1, V6]; xn--0ug.xn--q823a; ; ; # .
-òº›•á‚£ä ….ð¸‘; òº›•á‚£ä ….ð¸‘; [P1, V6]; xn--bnd074zr557n.xn--yl0d; ; ; # Ⴃ䠅.
-òº›•á‚£ä ….ð¸‘; ; [P1, V6]; xn--bnd074zr557n.xn--yl0d; ; ; # Ⴃ䠅.
-òº›•â´ƒä ….ð¸‘; ; [P1, V6]; xn--ukju77frl47r.xn--yl0d; ; ; # ⴃ䠅.
+òº›•á‚£ä ….ð¸‘; òº›•á‚£ä ….ð¸‘; [V6]; xn--bnd074zr557n.xn--yl0d; ; ; # Ⴃ䠅.
+òº›•á‚£ä ….ð¸‘; ; [V6]; xn--bnd074zr557n.xn--yl0d; ; ; # Ⴃ䠅.
+òº›•â´ƒä ….ð¸‘; ; [V6]; xn--ukju77frl47r.xn--yl0d; ; ; # ⴃ䠅.
xn--ukju77frl47r.xn--yl0d; òº›•â´ƒä ….ð¸‘; [V6]; xn--ukju77frl47r.xn--yl0d; ; ; # ⴃ䠅.
xn--bnd074zr557n.xn--yl0d; òº›•á‚£ä ….ð¸‘; [V6]; xn--bnd074zr557n.xn--yl0d; ; ; # Ⴃ䠅.
-òº›•â´ƒä ….ð¸‘; òº›•â´ƒä ….ð¸‘; [P1, V6]; xn--ukju77frl47r.xn--yl0d; ; ; # ⴃ䠅.
-\u1BF1ð¹³ð¹µðž¤šï½¡ðŸ¨á‚¥; \u1BF1ð¹³ð¹µðž¤¼.6á‚¥; [B1, P1, V5, V6]; xn--zzfy954hga2415t.xn--6-h0g; ; ; # ᯱð¹³ð¹µðž¤¼.6á‚¥
-\u1BF1ð¹³ð¹µðž¤šã€‚6á‚¥; \u1BF1ð¹³ð¹µðž¤¼.6á‚¥; [B1, P1, V5, V6]; xn--zzfy954hga2415t.xn--6-h0g; ; ; # ᯱð¹³ð¹µðž¤¼.6á‚¥
+òº›•â´ƒä ….ð¸‘; òº›•â´ƒä ….ð¸‘; [V6]; xn--ukju77frl47r.xn--yl0d; ; ; # ⴃ䠅.
+\u1BF1ð¹³ð¹µðž¤šï½¡ðŸ¨á‚¥; \u1BF1ð¹³ð¹µðž¤¼.6á‚¥; [B1, V5, V6]; xn--zzfy954hga2415t.xn--6-h0g; ; ; # ᯱð¹³ð¹µðž¤¼.6á‚¥
+\u1BF1ð¹³ð¹µðž¤šã€‚6á‚¥; \u1BF1ð¹³ð¹µðž¤¼.6á‚¥; [B1, V5, V6]; xn--zzfy954hga2415t.xn--6-h0g; ; ; # ᯱð¹³ð¹µðž¤¼.6á‚¥
\u1BF1ð¹³ð¹µðž¤¼ã€‚6â´…; \u1BF1ð¹³ð¹µðž¤¼.6â´…; [B1, V5]; xn--zzfy954hga2415t.xn--6-kvs; ; ; # ᯱð¹³ð¹µðž¤¼.6â´…
\u1BF1ð¹³ð¹µðž¤šã€‚6â´…; \u1BF1ð¹³ð¹µðž¤¼.6â´…; [B1, V5]; xn--zzfy954hga2415t.xn--6-kvs; ; ; # ᯱð¹³ð¹µðž¤¼.6â´…
xn--zzfy954hga2415t.xn--6-kvs; \u1BF1ð¹³ð¹µðž¤¼.6â´…; [B1, V5]; xn--zzfy954hga2415t.xn--6-kvs; ; ; # ᯱð¹³ð¹µðž¤¼.6â´…
xn--zzfy954hga2415t.xn--6-h0g; \u1BF1ð¹³ð¹µðž¤¼.6á‚¥; [B1, V5, V6]; xn--zzfy954hga2415t.xn--6-h0g; ; ; # ᯱð¹³ð¹µðž¤¼.6á‚¥
\u1BF1ð¹³ð¹µðž¤¼ï½¡ðŸ¨â´…; \u1BF1ð¹³ð¹µðž¤¼.6â´…; [B1, V5]; xn--zzfy954hga2415t.xn--6-kvs; ; ; # ᯱð¹³ð¹µðž¤¼.6â´…
\u1BF1ð¹³ð¹µðž¤šï½¡ðŸ¨â´…; \u1BF1ð¹³ð¹µðž¤¼.6â´…; [B1, V5]; xn--zzfy954hga2415t.xn--6-kvs; ; ; # ᯱð¹³ð¹µðž¤¼.6â´…
--。︒; -.︒; [P1, V3, V6]; -.xn--y86c; ; ; # -.︒
+-。︒; -.︒; [V3, V6]; -.xn--y86c; ; ; # -.︒
-。。; -..; [V3, X4_2]; ; [V3, A4_2]; ; # -..
-..; ; [V3, X4_2]; ; [V3, A4_2]; ; # -..
-.xn--y86c; -.︒; [V3, V6]; -.xn--y86c; ; ; # -.︒
-\u07DBჀ。-âµ--; \u07DBჀ.-5--; [B1, B2, B3, P1, V2, V3, V6]; xn--2sb866b.-5--; ; ; # ߛჀ.-5--
-\u07DBჀ。-5--; \u07DBჀ.-5--; [B1, B2, B3, P1, V2, V3, V6]; xn--2sb866b.-5--; ; ; # ߛჀ.-5--
+\u07DBჀ。-âµ--; \u07DBჀ.-5--; [B1, B2, B3, V2, V3, V6]; xn--2sb866b.-5--; ; ; # ߛჀ.-5--
+\u07DBჀ。-5--; \u07DBჀ.-5--; [B1, B2, B3, V2, V3, V6]; xn--2sb866b.-5--; ; ; # ߛჀ.-5--
\u07DBⴠ。-5--; \u07DBⴠ.-5--; [B1, B2, B3, V2, V3]; xn--2sb691q.-5--; ; ; # ߛⴠ.-5--
xn--2sb691q.-5--; \u07DBⴠ.-5--; [B1, B2, B3, V2, V3]; xn--2sb691q.-5--; ; ; # ߛⴠ.-5--
xn--2sb866b.-5--; \u07DBჀ.-5--; [B1, B2, B3, V2, V3, V6]; xn--2sb866b.-5--; ; ; # ߛჀ.-5--
\u07DBⴠ。-âµ--; \u07DBâ´ .-5--; [B1, B2, B3, V2, V3]; xn--2sb691q.-5--; ; ; # ߛⴠ.-5--
-≯?󠑕。ð¹·ð¹»â‰¯ð·’; ≯?ó ‘•.ð¹·ð¹»â‰¯ð·’; [B1, P1, V6]; xn--?-ogo25661n.xn--hdh8283gdoaqa; ; ; # ≯?.ð¹·ð¹»â‰¯
->\u0338?󠑕。ð¹·ð¹»>\u0338ð·’; ≯?ó ‘•.ð¹·ð¹»â‰¯ð·’; [B1, P1, V6]; xn--?-ogo25661n.xn--hdh8283gdoaqa; ; ; # ≯?.ð¹·ð¹»â‰¯
-≯?󠑕。ð¹·ð¹»â‰¯ð·’; ≯?ó ‘•.ð¹·ð¹»â‰¯ð·’; [B1, P1, V6]; xn--?-ogo25661n.xn--hdh8283gdoaqa; ; ; # ≯?.ð¹·ð¹»â‰¯
->\u0338?󠑕。ð¹·ð¹»>\u0338ð·’; ≯?ó ‘•.ð¹·ð¹»â‰¯ð·’; [B1, P1, V6]; xn--?-ogo25661n.xn--hdh8283gdoaqa; ; ; # ≯?.ð¹·ð¹»â‰¯
-xn--?-ogo25661n.xn--hdh8283gdoaqa; ≯?ó ‘•.ð¹·ð¹»â‰¯ð·’; [B1, P1, V6]; xn--?-ogo25661n.xn--hdh8283gdoaqa; ; ; # ≯?.ð¹·ð¹»â‰¯
-≯?ó ‘•.xn--hdh8283gdoaqa; ≯?ó ‘•.ð¹·ð¹»â‰¯ð·’; [B1, P1, V6]; xn--?-ogo25661n.xn--hdh8283gdoaqa; ; ; # ≯?.ð¹·ð¹»â‰¯
->\u0338?ó ‘•.xn--hdh8283gdoaqa; ≯?ó ‘•.ð¹·ð¹»â‰¯ð·’; [B1, P1, V6]; xn--?-ogo25661n.xn--hdh8283gdoaqa; ; ; # ≯?.ð¹·ð¹»â‰¯
->\u0338?ó ‘•.XN--HDH8283GDOAQA; ≯?ó ‘•.ð¹·ð¹»â‰¯ð·’; [B1, P1, V6]; xn--?-ogo25661n.xn--hdh8283gdoaqa; ; ; # ≯?.ð¹·ð¹»â‰¯
-≯?ó ‘•.XN--HDH8283GDOAQA; ≯?ó ‘•.ð¹·ð¹»â‰¯ð·’; [B1, P1, V6]; xn--?-ogo25661n.xn--hdh8283gdoaqa; ; ; # ≯?.ð¹·ð¹»â‰¯
-≯?ó ‘•.Xn--Hdh8283gdoaqa; ≯?ó ‘•.ð¹·ð¹»â‰¯ð·’; [B1, P1, V6]; xn--?-ogo25661n.xn--hdh8283gdoaqa; ; ; # ≯?.ð¹·ð¹»â‰¯
->\u0338?ó ‘•.Xn--Hdh8283gdoaqa; ≯?ó ‘•.ð¹·ð¹»â‰¯ð·’; [B1, P1, V6]; xn--?-ogo25661n.xn--hdh8283gdoaqa; ; ; # ≯?.ð¹·ð¹»â‰¯
-ã”\u08E6\u077C\u200D。\u0346ò³Šð…¶\u0604; ルーブル\u08E6\u077C\u200D.\u0346ò³Šð…¶\u0604; [B1, B5, B6, C2, P1, V5, V6]; xn--dqb73ec22c9kp8cb1j.xn--kua81ls548d3608b; ; xn--dqb73el09fncab4h.xn--kua81ls548d3608b; [B1, B5, B6, P1, V5, V6] # ルーブルࣦݼ.͆
-ルーブル\u08E6\u077C\u200D。\u0346ò³Šð…¶\u0604; ルーブル\u08E6\u077C\u200D.\u0346ò³Šð…¶\u0604; [B1, B5, B6, C2, P1, V5, V6]; xn--dqb73ec22c9kp8cb1j.xn--kua81ls548d3608b; ; xn--dqb73el09fncab4h.xn--kua81ls548d3608b; [B1, B5, B6, P1, V5, V6] # ルーブルࣦݼ.͆
-ルーフ\u3099ル\u08E6\u077C\u200D。\u0346ò³Šð…¶\u0604; ルーブル\u08E6\u077C\u200D.\u0346ò³Šð…¶\u0604; [B1, B5, B6, C2, P1, V5, V6]; xn--dqb73ec22c9kp8cb1j.xn--kua81ls548d3608b; ; xn--dqb73el09fncab4h.xn--kua81ls548d3608b; [B1, B5, B6, P1, V5, V6] # ルーブルࣦݼ.͆
+≯?󠑕。ð¹·ð¹»â‰¯ð·’; ≯?ó ‘•.ð¹·ð¹»â‰¯ð·’; [B1, V6]; xn--?-ogo25661n.xn--hdh8283gdoaqa; ; ; # ≯?.ð¹·ð¹»â‰¯
+>\u0338?󠑕。ð¹·ð¹»>\u0338ð·’; ≯?ó ‘•.ð¹·ð¹»â‰¯ð·’; [B1, V6]; xn--?-ogo25661n.xn--hdh8283gdoaqa; ; ; # ≯?.ð¹·ð¹»â‰¯
+≯?󠑕。ð¹·ð¹»â‰¯ð·’; ≯?ó ‘•.ð¹·ð¹»â‰¯ð·’; [B1, V6]; xn--?-ogo25661n.xn--hdh8283gdoaqa; ; ; # ≯?.ð¹·ð¹»â‰¯
+>\u0338?󠑕。ð¹·ð¹»>\u0338ð·’; ≯?ó ‘•.ð¹·ð¹»â‰¯ð·’; [B1, V6]; xn--?-ogo25661n.xn--hdh8283gdoaqa; ; ; # ≯?.ð¹·ð¹»â‰¯
+xn--?-ogo25661n.xn--hdh8283gdoaqa; ≯?ó ‘•.ð¹·ð¹»â‰¯ð·’; [B1, V6]; xn--?-ogo25661n.xn--hdh8283gdoaqa; ; ; # ≯?.ð¹·ð¹»â‰¯
+≯?ó ‘•.xn--hdh8283gdoaqa; ≯?ó ‘•.ð¹·ð¹»â‰¯ð·’; [B1, V6]; xn--?-ogo25661n.xn--hdh8283gdoaqa; ; ; # ≯?.ð¹·ð¹»â‰¯
+>\u0338?ó ‘•.xn--hdh8283gdoaqa; ≯?ó ‘•.ð¹·ð¹»â‰¯ð·’; [B1, V6]; xn--?-ogo25661n.xn--hdh8283gdoaqa; ; ; # ≯?.ð¹·ð¹»â‰¯
+>\u0338?ó ‘•.XN--HDH8283GDOAQA; ≯?ó ‘•.ð¹·ð¹»â‰¯ð·’; [B1, V6]; xn--?-ogo25661n.xn--hdh8283gdoaqa; ; ; # ≯?.ð¹·ð¹»â‰¯
+≯?ó ‘•.XN--HDH8283GDOAQA; ≯?ó ‘•.ð¹·ð¹»â‰¯ð·’; [B1, V6]; xn--?-ogo25661n.xn--hdh8283gdoaqa; ; ; # ≯?.ð¹·ð¹»â‰¯
+≯?ó ‘•.Xn--Hdh8283gdoaqa; ≯?ó ‘•.ð¹·ð¹»â‰¯ð·’; [B1, V6]; xn--?-ogo25661n.xn--hdh8283gdoaqa; ; ; # ≯?.ð¹·ð¹»â‰¯
+>\u0338?ó ‘•.Xn--Hdh8283gdoaqa; ≯?ó ‘•.ð¹·ð¹»â‰¯ð·’; [B1, V6]; xn--?-ogo25661n.xn--hdh8283gdoaqa; ; ; # ≯?.ð¹·ð¹»â‰¯
+ã”\u08E6\u077C\u200D。\u0346ò³Šð…¶\u0604; ルーブル\u08E6\u077C\u200D.\u0346ò³Šð…¶\u0604; [B1, B5, B6, C2, V5, V6]; xn--dqb73ec22c9kp8cb1j.xn--kua81ls548d3608b; ; xn--dqb73el09fncab4h.xn--kua81ls548d3608b; [B1, B5, B6, V5, V6] # ルーブルࣦݼ.͆
+ルーブル\u08E6\u077C\u200D。\u0346ò³Šð…¶\u0604; ルーブル\u08E6\u077C\u200D.\u0346ò³Šð…¶\u0604; [B1, B5, B6, C2, V5, V6]; xn--dqb73ec22c9kp8cb1j.xn--kua81ls548d3608b; ; xn--dqb73el09fncab4h.xn--kua81ls548d3608b; [B1, B5, B6, V5, V6] # ルーブルࣦݼ.͆
+ルーフ\u3099ル\u08E6\u077C\u200D。\u0346ò³Šð…¶\u0604; ルーブル\u08E6\u077C\u200D.\u0346ò³Šð…¶\u0604; [B1, B5, B6, C2, V5, V6]; xn--dqb73ec22c9kp8cb1j.xn--kua81ls548d3608b; ; xn--dqb73el09fncab4h.xn--kua81ls548d3608b; [B1, B5, B6, V5, V6] # ルーブルࣦݼ.͆
xn--dqb73el09fncab4h.xn--kua81ls548d3608b; ルーブル\u08E6\u077C.\u0346ò³Šð…¶\u0604; [B1, B5, B6, V5, V6]; xn--dqb73el09fncab4h.xn--kua81ls548d3608b; ; ; # ルーブルࣦݼ.͆
xn--dqb73ec22c9kp8cb1j.xn--kua81ls548d3608b; ルーブル\u08E6\u077C\u200D.\u0346ò³Šð…¶\u0604; [B1, B5, B6, C2, V5, V6]; xn--dqb73ec22c9kp8cb1j.xn--kua81ls548d3608b; ; ; # ルーブルࣦݼ.͆
\u200D.F; \u200D.f; [C2]; xn--1ug.f; ; .f; [A4_2] # .f
@@ -5251,76 +5281,76 @@ xn--1ug914h.xn--zca; \u200D㨲.ß; [C2]; xn--1ug914h.xn--zca; ; ; # 㨲.ß
\u200D㨲。SS; \u200D㨲.ss; [C2]; xn--1ug914h.ss; ; xn--9bm.ss; [] # 㨲.ss
\u200D㨲。ss; \u200D㨲.ss; [C2]; xn--1ug914h.ss; ; xn--9bm.ss; [] # 㨲.ss
\u200D㨲。Ss; \u200D㨲.ss; [C2]; xn--1ug914h.ss; ; xn--9bm.ss; [] # 㨲.ss
-\u0605\u067E。\u08A8; \u0605\u067E.\u08A8; [B1, P1, V6]; xn--nfb6v.xn--xyb; ; ; # پ.ࢨ
-\u0605\u067E。\u08A8; \u0605\u067E.\u08A8; [B1, P1, V6]; xn--nfb6v.xn--xyb; ; ; # پ.ࢨ
+\u0605\u067E。\u08A8; \u0605\u067E.\u08A8; [B1, V6]; xn--nfb6v.xn--xyb; ; ; # پ.ࢨ
+\u0605\u067E。\u08A8; \u0605\u067E.\u08A8; [B1, V6]; xn--nfb6v.xn--xyb; ; ; # پ.ࢨ
xn--nfb6v.xn--xyb; \u0605\u067E.\u08A8; [B1, V6]; xn--nfb6v.xn--xyb; ; ; # پ.ࢨ
⾑\u0753ðž¤ã€‚ð¹µ\u0682; 襾\u0753𞤣.ð¹µ\u0682; [B1, B5, B6]; xn--6ob9577deqwl.xn--7ib5526k; ; ; # 襾ݓ𞤣.ð¹µÚ‚
襾\u0753ðž¤ã€‚ð¹µ\u0682; 襾\u0753𞤣.ð¹µ\u0682; [B1, B5, B6]; xn--6ob9577deqwl.xn--7ib5526k; ; ; # 襾ݓ𞤣.ð¹µÚ‚
襾\u0753𞤣。ð¹µ\u0682; 襾\u0753𞤣.ð¹µ\u0682; [B1, B5, B6]; xn--6ob9577deqwl.xn--7ib5526k; ; ; # 襾ݓ𞤣.ð¹µÚ‚
xn--6ob9577deqwl.xn--7ib5526k; 襾\u0753𞤣.ð¹µ\u0682; [B1, B5, B6]; xn--6ob9577deqwl.xn--7ib5526k; ; ; # 襾ݓ𞤣.ð¹µÚ‚
⾑\u0753𞤣。ð¹µ\u0682; 襾\u0753𞤣.ð¹µ\u0682; [B1, B5, B6]; xn--6ob9577deqwl.xn--7ib5526k; ; ; # 襾ݓ𞤣.ð¹µÚ‚
-񦴻ς-\u20EB。\u0754-ꡛ; 񦴻ς-\u20EB.\u0754-ꡛ; [B2, B3, B6, P1, V6]; xn----xmb015tuo34l.xn----53c4874j; ; xn----zmb705tuo34l.xn----53c4874j; # ς-⃫.ݔ-ꡛ
-񦴻ς-\u20EB。\u0754-ꡛ; 񦴻ς-\u20EB.\u0754-ꡛ; [B2, B3, B6, P1, V6]; xn----xmb015tuo34l.xn----53c4874j; ; xn----zmb705tuo34l.xn----53c4874j; # ς-⃫.ݔ-ꡛ
-񦴻Σ-\u20EB。\u0754-ꡛ; 񦴻σ-\u20EB.\u0754-ꡛ; [B2, B3, B6, P1, V6]; xn----zmb705tuo34l.xn----53c4874j; ; ; # σ-⃫.ݔ-ꡛ
-񦴻σ-\u20EB。\u0754-ꡛ; 񦴻σ-\u20EB.\u0754-ꡛ; [B2, B3, B6, P1, V6]; xn----zmb705tuo34l.xn----53c4874j; ; ; # σ-⃫.ݔ-ꡛ
+񦴻ς-\u20EB。\u0754-ꡛ; 񦴻ς-\u20EB.\u0754-ꡛ; [B2, B3, B6, V6]; xn----xmb015tuo34l.xn----53c4874j; ; xn----zmb705tuo34l.xn----53c4874j; # ς-⃫.ݔ-ꡛ
+񦴻ς-\u20EB。\u0754-ꡛ; 񦴻ς-\u20EB.\u0754-ꡛ; [B2, B3, B6, V6]; xn----xmb015tuo34l.xn----53c4874j; ; xn----zmb705tuo34l.xn----53c4874j; # ς-⃫.ݔ-ꡛ
+񦴻Σ-\u20EB。\u0754-ꡛ; 񦴻σ-\u20EB.\u0754-ꡛ; [B2, B3, B6, V6]; xn----zmb705tuo34l.xn----53c4874j; ; ; # σ-⃫.ݔ-ꡛ
+񦴻σ-\u20EB。\u0754-ꡛ; 񦴻σ-\u20EB.\u0754-ꡛ; [B2, B3, B6, V6]; xn----zmb705tuo34l.xn----53c4874j; ; ; # σ-⃫.ݔ-ꡛ
xn----zmb705tuo34l.xn----53c4874j; 񦴻σ-\u20EB.\u0754-ꡛ; [B2, B3, B6, V6]; xn----zmb705tuo34l.xn----53c4874j; ; ; # σ-⃫.ݔ-ꡛ
xn----xmb015tuo34l.xn----53c4874j; 񦴻ς-\u20EB.\u0754-ꡛ; [B2, B3, B6, V6]; xn----xmb015tuo34l.xn----53c4874j; ; ; # ς-⃫.ݔ-ꡛ
-񦴻Σ-\u20EB。\u0754-ꡛ; 񦴻σ-\u20EB.\u0754-ꡛ; [B2, B3, B6, P1, V6]; xn----zmb705tuo34l.xn----53c4874j; ; ; # σ-⃫.ݔ-ꡛ
-񦴻σ-\u20EB。\u0754-ꡛ; 񦴻σ-\u20EB.\u0754-ꡛ; [B2, B3, B6, P1, V6]; xn----zmb705tuo34l.xn----53c4874j; ; ; # σ-⃫.ݔ-ꡛ
-\u200D.􀸨; \u200D.􀸨; [C2, P1, V6]; xn--1ug.xn--h327f; ; .xn--h327f; [P1, V6, A4_2] # .
-\u200D.􀸨; ; [C2, P1, V6]; xn--1ug.xn--h327f; ; .xn--h327f; [P1, V6, A4_2] # .
+񦴻Σ-\u20EB。\u0754-ꡛ; 񦴻σ-\u20EB.\u0754-ꡛ; [B2, B3, B6, V6]; xn----zmb705tuo34l.xn----53c4874j; ; ; # σ-⃫.ݔ-ꡛ
+񦴻σ-\u20EB。\u0754-ꡛ; 񦴻σ-\u20EB.\u0754-ꡛ; [B2, B3, B6, V6]; xn----zmb705tuo34l.xn----53c4874j; ; ; # σ-⃫.ݔ-ꡛ
+\u200D.􀸨; \u200D.􀸨; [C2, V6]; xn--1ug.xn--h327f; ; .xn--h327f; [V6, A4_2] # .
+\u200D.􀸨; ; [C2, V6]; xn--1ug.xn--h327f; ; .xn--h327f; [V6, A4_2] # .
.xn--h327f; .􀸨; [V6, X4_2]; .xn--h327f; [V6, A4_2]; ; # .
xn--1ug.xn--h327f; \u200D.􀸨; [C2, V6]; xn--1ug.xn--h327f; ; ; # .
-ñ£­»ñŒ¥ï½¡â‰ ðŸ²; ñ£­»ñŒ¥.≠6; [P1, V6]; xn--h79w4z99a.xn--6-tfo; ; ; # .≠6
-ñ£­»ñŒ¥ï½¡=\u0338ðŸ²; ñ£­»ñŒ¥.≠6; [P1, V6]; xn--h79w4z99a.xn--6-tfo; ; ; # .≠6
-ñ£­»ñŒ¥ã€‚≠6; ñ£­»ñŒ¥.≠6; [P1, V6]; xn--h79w4z99a.xn--6-tfo; ; ; # .≠6
-ñ£­»ñŒ¥ã€‚=\u03386; ñ£­»ñŒ¥.≠6; [P1, V6]; xn--h79w4z99a.xn--6-tfo; ; ; # .≠6
+ñ£­»ñŒ¥ï½¡â‰ ðŸ²; ñ£­»ñŒ¥.≠6; [V6]; xn--h79w4z99a.xn--6-tfo; ; ; # .≠6
+ñ£­»ñŒ¥ï½¡=\u0338ðŸ²; ñ£­»ñŒ¥.≠6; [V6]; xn--h79w4z99a.xn--6-tfo; ; ; # .≠6
+ñ£­»ñŒ¥ã€‚≠6; ñ£­»ñŒ¥.≠6; [V6]; xn--h79w4z99a.xn--6-tfo; ; ; # .≠6
+ñ£­»ñŒ¥ã€‚=\u03386; ñ£­»ñŒ¥.≠6; [V6]; xn--h79w4z99a.xn--6-tfo; ; ; # .≠6
xn--h79w4z99a.xn--6-tfo; ñ£­»ñŒ¥.≠6; [V6]; xn--h79w4z99a.xn--6-tfo; ; ; # .≠6
-ó …Šá¡­\u200D.ð¥¡; á¡­\u200D.ð¥¡; [B6, C2, P1, V6]; xn--98e810b.xn--om9c; ; xn--98e.xn--om9c; [P1, V6] # á¡­.
+ó …Šá¡­\u200D.ð¥¡; á¡­\u200D.ð¥¡; [B6, C2, V6]; xn--98e810b.xn--om9c; ; xn--98e.xn--om9c; [V6] # á¡­.
xn--98e.xn--om9c; á¡­.ð¥¡; [V6]; xn--98e.xn--om9c; ; ; # á¡­.
xn--98e810b.xn--om9c; á¡­\u200D.ð¥¡; [B6, C2, V6]; xn--98e810b.xn--om9c; ; ; # á¡­.
-\u0C40\u0855ð¥›ð‘„´ï¼Žó­°µ; \u0C40\u0855ð¥›ð‘„´.ó­°µ; [B1, P1, V5, V6]; xn--kwb91r5112avtg.xn--o580f; ; ; # ీࡕ𑄴.
-\u0C40\u0855ð¥›ð‘„´.ó­°µ; ; [B1, P1, V5, V6]; xn--kwb91r5112avtg.xn--o580f; ; ; # ీࡕ𑄴.
+\u0C40\u0855ð¥›ð‘„´ï¼Žó­°µ; \u0C40\u0855ð¥›ð‘„´.ó­°µ; [B1, V5, V6]; xn--kwb91r5112avtg.xn--o580f; ; ; # ీࡕ𑄴.
+\u0C40\u0855ð¥›ð‘„´.ó­°µ; ; [B1, V5, V6]; xn--kwb91r5112avtg.xn--o580f; ; ; # ీࡕ𑄴.
xn--kwb91r5112avtg.xn--o580f; \u0C40\u0855ð¥›ð‘„´.ó­°µ; [B1, V5, V6]; xn--kwb91r5112avtg.xn--o580f; ; ; # ీࡕ𑄴.
-𞤮。𑇊\u200C≯\u1CE6; 𞤮.𑇊\u200C≯\u1CE6; [B1, C1, P1, V5, V6]; xn--me6h.xn--z6f16kn9b2642b; ; xn--me6h.xn--z6fz8ueq2v; [B1, P1, V5, V6] # 𞤮.𑇊≯᳦
-𞤮。𑇊\u200C>\u0338\u1CE6; 𞤮.𑇊\u200C≯\u1CE6; [B1, C1, P1, V5, V6]; xn--me6h.xn--z6f16kn9b2642b; ; xn--me6h.xn--z6fz8ueq2v; [B1, P1, V5, V6] # 𞤮.𑇊≯᳦
-𞤌。𑇊\u200C>\u0338\u1CE6; 𞤮.𑇊\u200C≯\u1CE6; [B1, C1, P1, V5, V6]; xn--me6h.xn--z6f16kn9b2642b; ; xn--me6h.xn--z6fz8ueq2v; [B1, P1, V5, V6] # 𞤮.𑇊≯᳦
-𞤌。𑇊\u200C≯\u1CE6; 𞤮.𑇊\u200C≯\u1CE6; [B1, C1, P1, V5, V6]; xn--me6h.xn--z6f16kn9b2642b; ; xn--me6h.xn--z6fz8ueq2v; [B1, P1, V5, V6] # 𞤮.𑇊≯᳦
-xn--me6h.xn--z6fz8ueq2v; 𞤮.𑇊≯\u1CE6; [B1, V5, V6]; xn--me6h.xn--z6fz8ueq2v; ; ; # 𞤮.𑇊≯᳦
-xn--me6h.xn--z6f16kn9b2642b; 𞤮.𑇊\u200C≯\u1CE6; [B1, C1, V5, V6]; xn--me6h.xn--z6f16kn9b2642b; ; ; # 𞤮.𑇊≯᳦
-ó „€ðŸ•.𞤌ñ›—“á‚©; 7.𞤮ñ›—“á‚©; [B1, B2, B3, P1, V6]; 7.xn--hnd3403vv1vv; ; ; # 7.𞤮Ⴉ
-󠄀7.𞤌񛗓Ⴉ; 7.𞤮񛗓Ⴉ; [B1, B2, B3, P1, V6]; 7.xn--hnd3403vv1vv; ; ; # 7.𞤮Ⴉ
-󠄀7.𞤮񛗓ⴉ; 7.𞤮񛗓ⴉ; [B1, B2, B3, P1, V6]; 7.xn--0kjz523lv1vv; ; ; # 7.𞤮ⴉ
+𞤮。𑇊\u200C≯\u1CE6; 𞤮.𑇊\u200C≯\u1CE6; [B1, C1, V5]; xn--me6h.xn--z6f16kn9b2642b; ; xn--me6h.xn--z6fz8ueq2v; [B1, V5] # 𞤮.𑇊≯᳦
+𞤮。𑇊\u200C>\u0338\u1CE6; 𞤮.𑇊\u200C≯\u1CE6; [B1, C1, V5]; xn--me6h.xn--z6f16kn9b2642b; ; xn--me6h.xn--z6fz8ueq2v; [B1, V5] # 𞤮.𑇊≯᳦
+𞤌。𑇊\u200C>\u0338\u1CE6; 𞤮.𑇊\u200C≯\u1CE6; [B1, C1, V5]; xn--me6h.xn--z6f16kn9b2642b; ; xn--me6h.xn--z6fz8ueq2v; [B1, V5] # 𞤮.𑇊≯᳦
+𞤌。𑇊\u200C≯\u1CE6; 𞤮.𑇊\u200C≯\u1CE6; [B1, C1, V5]; xn--me6h.xn--z6f16kn9b2642b; ; xn--me6h.xn--z6fz8ueq2v; [B1, V5] # 𞤮.𑇊≯᳦
+xn--me6h.xn--z6fz8ueq2v; 𞤮.𑇊≯\u1CE6; [B1, V5]; xn--me6h.xn--z6fz8ueq2v; ; ; # 𞤮.𑇊≯᳦
+xn--me6h.xn--z6f16kn9b2642b; 𞤮.𑇊\u200C≯\u1CE6; [B1, C1, V5]; xn--me6h.xn--z6f16kn9b2642b; ; ; # 𞤮.𑇊≯᳦
+ó „€ðŸ•.𞤌ñ›—“á‚©; 7.𞤮ñ›—“á‚©; [B1, B2, B3, V6]; 7.xn--hnd3403vv1vv; ; ; # 7.𞤮Ⴉ
+󠄀7.𞤌񛗓Ⴉ; 7.𞤮񛗓Ⴉ; [B1, B2, B3, V6]; 7.xn--hnd3403vv1vv; ; ; # 7.𞤮Ⴉ
+󠄀7.𞤮񛗓ⴉ; 7.𞤮񛗓ⴉ; [B1, B2, B3, V6]; 7.xn--0kjz523lv1vv; ; ; # 7.𞤮ⴉ
7.xn--0kjz523lv1vv; 7.𞤮񛗓ⴉ; [B1, B2, B3, V6]; 7.xn--0kjz523lv1vv; ; ; # 7.𞤮ⴉ
7.xn--hnd3403vv1vv; 7.𞤮񛗓Ⴉ; [B1, B2, B3, V6]; 7.xn--hnd3403vv1vv; ; ; # 7.𞤮Ⴉ
-ó „€ðŸ•.𞤮ñ›—“â´‰; 7.𞤮ñ›—“â´‰; [B1, B2, B3, P1, V6]; 7.xn--0kjz523lv1vv; ; ; # 7.𞤮ⴉ
-󠄀7.𞤌񛗓ⴉ; 7.𞤮񛗓ⴉ; [B1, B2, B3, P1, V6]; 7.xn--0kjz523lv1vv; ; ; # 7.𞤮ⴉ
-ó „€ðŸ•.𞤌ñ›—“â´‰; 7.𞤮ñ›—“â´‰; [B1, B2, B3, P1, V6]; 7.xn--0kjz523lv1vv; ; ; # 7.𞤮ⴉ
-é–ƒ9ð©ã€‚Ↄ\u0669\u08B1\u0B4D; é–ƒ9ð©.Ↄ\u0669\u08B1\u0B4D; [B5, B6, P1, V6]; xn--9-3j6dk517f.xn--iib28ij3c0t9a; ; ; # é–ƒ9ð©.Ↄ٩ࢱà­
+ó „€ðŸ•.𞤮ñ›—“â´‰; 7.𞤮ñ›—“â´‰; [B1, B2, B3, V6]; 7.xn--0kjz523lv1vv; ; ; # 7.𞤮ⴉ
+󠄀7.𞤌񛗓ⴉ; 7.𞤮񛗓ⴉ; [B1, B2, B3, V6]; 7.xn--0kjz523lv1vv; ; ; # 7.𞤮ⴉ
+ó „€ðŸ•.𞤌ñ›—“â´‰; 7.𞤮ñ›—“â´‰; [B1, B2, B3, V6]; 7.xn--0kjz523lv1vv; ; ; # 7.𞤮ⴉ
+é–ƒ9ð©ã€‚Ↄ\u0669\u08B1\u0B4D; é–ƒ9ð©.Ↄ\u0669\u08B1\u0B4D; [B5, B6, V6]; xn--9-3j6dk517f.xn--iib28ij3c0t9a; ; ; # é–ƒ9ð©.Ↄ٩ࢱà­
é–ƒ9ð©ã€‚ↄ\u0669\u08B1\u0B4D; é–ƒ9ð©.ↄ\u0669\u08B1\u0B4D; [B5, B6]; xn--9-3j6dk517f.xn--iib28ij3c4t9a; ; ; # é–ƒ9ð©.ↄ٩ࢱà­
xn--9-3j6dk517f.xn--iib28ij3c4t9a; é–ƒ9ð©.ↄ\u0669\u08B1\u0B4D; [B5, B6]; xn--9-3j6dk517f.xn--iib28ij3c4t9a; ; ; # é–ƒ9ð©.ↄ٩ࢱà­
xn--9-3j6dk517f.xn--iib28ij3c0t9a; é–ƒ9ð©.Ↄ\u0669\u08B1\u0B4D; [B5, B6, V6]; xn--9-3j6dk517f.xn--iib28ij3c0t9a; ; ; # é–ƒ9ð©.Ↄ٩ࢱà­
-\uAAF6á¢\u0E3Aï¼’.ð‹¢\u0745\u0F9F︒; \uAAF6á¢\u0E3A2.ð‹¢\u0745\u0F9F︒; [P1, V5, V6]; xn--2-2zf840fk16m.xn--sob093bj62sz9d; ; ; # ꫶á¢à¸º2.ð‹¢Ý…ྟ︒
+\uAAF6á¢\u0E3Aï¼’.ð‹¢\u0745\u0F9F︒; \uAAF6á¢\u0E3A2.ð‹¢\u0745\u0F9F︒; [V5, V6]; xn--2-2zf840fk16m.xn--sob093bj62sz9d; ; ; # ꫶á¢à¸º2.ð‹¢Ý…ྟ︒
\uAAF6á¢\u0E3A2.ð‹¢\u0745\u0F9F。; \uAAF6á¢\u0E3A2.ð‹¢\u0745\u0F9F.; [V5]; xn--2-2zf840fk16m.xn--sob093b2m7s.; ; ; # ꫶á¢à¸º2.ð‹¢Ý…ྟ.
xn--2-2zf840fk16m.xn--sob093b2m7s.; \uAAF6á¢\u0E3A2.ð‹¢\u0745\u0F9F.; [V5]; xn--2-2zf840fk16m.xn--sob093b2m7s.; ; ; # ꫶á¢à¸º2.ð‹¢Ý…ྟ.
xn--2-2zf840fk16m.xn--sob093bj62sz9d; \uAAF6á¢\u0E3A2.ð‹¢\u0745\u0F9F︒; [V5, V6]; xn--2-2zf840fk16m.xn--sob093bj62sz9d; ; ; # ꫶á¢à¸º2.ð‹¢Ý…ྟ︒
-󅴧。≠-󠙄⾛; 󅴧.≠-󠙄走; [P1, V6]; xn--gm57d.xn----tfo4949b3664m; ; ; # .≠-走
-󅴧。=\u0338-󠙄⾛; 󅴧.≠-󠙄走; [P1, V6]; xn--gm57d.xn----tfo4949b3664m; ; ; # .≠-走
-󅴧。≠-󠙄走; 󅴧.≠-󠙄走; [P1, V6]; xn--gm57d.xn----tfo4949b3664m; ; ; # .≠-走
-󅴧。=\u0338-󠙄走; 󅴧.≠-󠙄走; [P1, V6]; xn--gm57d.xn----tfo4949b3664m; ; ; # .≠-走
+󅴧。≠-󠙄⾛; 󅴧.≠-󠙄走; [V6]; xn--gm57d.xn----tfo4949b3664m; ; ; # .≠-走
+󅴧。=\u0338-󠙄⾛; 󅴧.≠-󠙄走; [V6]; xn--gm57d.xn----tfo4949b3664m; ; ; # .≠-走
+󅴧。≠-󠙄走; 󅴧.≠-󠙄走; [V6]; xn--gm57d.xn----tfo4949b3664m; ; ; # .≠-走
+󅴧。=\u0338-󠙄走; 󅴧.≠-󠙄走; [V6]; xn--gm57d.xn----tfo4949b3664m; ; ; # .≠-走
xn--gm57d.xn----tfo4949b3664m; 󅴧.≠-󠙄走; [V6]; xn--gm57d.xn----tfo4949b3664m; ; ; # .≠-走
-\u076E\u0604Ⴊ。-≠\u1160; \u076E\u0604Ⴊ.-≠\u1160; [B1, B2, B3, P1, V3, V6]; xn--mfb73ex6r.xn----5bh589i; ; ; # ݮႪ.-≠
-\u076E\u0604Ⴊ。-=\u0338\u1160; \u076E\u0604Ⴊ.-≠\u1160; [B1, B2, B3, P1, V3, V6]; xn--mfb73ex6r.xn----5bh589i; ; ; # ݮႪ.-≠
-\u076E\u0604ⴊ。-=\u0338\u1160; \u076E\u0604ⴊ.-≠\u1160; [B1, B2, B3, P1, V3, V6]; xn--mfb73ek93f.xn----5bh589i; ; ; # ݮⴊ.-≠
-\u076E\u0604ⴊ。-≠\u1160; \u076E\u0604ⴊ.-≠\u1160; [B1, B2, B3, P1, V3, V6]; xn--mfb73ek93f.xn----5bh589i; ; ; # ݮⴊ.-≠
+\u076E\u0604Ⴊ。-≠\u1160; \u076E\u0604Ⴊ.-≠\u1160; [B1, B2, B3, V3, V6]; xn--mfb73ex6r.xn----5bh589i; ; ; # ݮႪ.-≠
+\u076E\u0604Ⴊ。-=\u0338\u1160; \u076E\u0604Ⴊ.-≠\u1160; [B1, B2, B3, V3, V6]; xn--mfb73ex6r.xn----5bh589i; ; ; # ݮႪ.-≠
+\u076E\u0604ⴊ。-=\u0338\u1160; \u076E\u0604ⴊ.-≠\u1160; [B1, B2, B3, V3, V6]; xn--mfb73ek93f.xn----5bh589i; ; ; # ݮⴊ.-≠
+\u076E\u0604ⴊ。-≠\u1160; \u076E\u0604ⴊ.-≠\u1160; [B1, B2, B3, V3, V6]; xn--mfb73ek93f.xn----5bh589i; ; ; # ݮⴊ.-≠
xn--mfb73ek93f.xn----5bh589i; \u076E\u0604ⴊ.-≠\u1160; [B1, B2, B3, V3, V6]; xn--mfb73ek93f.xn----5bh589i; ; ; # ݮⴊ.-≠
xn--mfb73ex6r.xn----5bh589i; \u076E\u0604Ⴊ.-≠\u1160; [B1, B2, B3, V3, V6]; xn--mfb73ex6r.xn----5bh589i; ; ; # ݮႪ.-≠
-\uFB4Fð¹§ðŸ’≯。\u200C; \u05D0\u05DCð¹§4≯.\u200C; [B1, B3, B4, C1, P1, V6]; xn--4-zhc0by36txt0w.xn--0ug; ; xn--4-zhc0by36txt0w.; [B3, B4, P1, V6] # ×לð¹§4≯.
-\uFB4Fð¹§ðŸ’>\u0338。\u200C; \u05D0\u05DCð¹§4≯.\u200C; [B1, B3, B4, C1, P1, V6]; xn--4-zhc0by36txt0w.xn--0ug; ; xn--4-zhc0by36txt0w.; [B3, B4, P1, V6] # ×לð¹§4≯.
-\u05D0\u05DCð¹§4≯。\u200C; \u05D0\u05DCð¹§4≯.\u200C; [B1, B3, B4, C1, P1, V6]; xn--4-zhc0by36txt0w.xn--0ug; ; xn--4-zhc0by36txt0w.; [B3, B4, P1, V6] # ×לð¹§4≯.
-\u05D0\u05DCð¹§4>\u0338。\u200C; \u05D0\u05DCð¹§4≯.\u200C; [B1, B3, B4, C1, P1, V6]; xn--4-zhc0by36txt0w.xn--0ug; ; xn--4-zhc0by36txt0w.; [B3, B4, P1, V6] # ×לð¹§4≯.
-xn--4-zhc0by36txt0w.; \u05D0\u05DCð¹§4≯.; [B3, B4, V6]; xn--4-zhc0by36txt0w.; ; ; # ×לð¹§4≯.
-xn--4-zhc0by36txt0w.xn--0ug; \u05D0\u05DCð¹§4≯.\u200C; [B1, B3, B4, C1, V6]; xn--4-zhc0by36txt0w.xn--0ug; ; ; # ×לð¹§4≯.
+\uFB4Fð¹§ðŸ’≯。\u200C; \u05D0\u05DCð¹§4≯.\u200C; [B1, B3, B4, C1]; xn--4-zhc0by36txt0w.xn--0ug; ; xn--4-zhc0by36txt0w.; [B3, B4] # ×לð¹§4≯.
+\uFB4Fð¹§ðŸ’>\u0338。\u200C; \u05D0\u05DCð¹§4≯.\u200C; [B1, B3, B4, C1]; xn--4-zhc0by36txt0w.xn--0ug; ; xn--4-zhc0by36txt0w.; [B3, B4] # ×לð¹§4≯.
+\u05D0\u05DCð¹§4≯。\u200C; \u05D0\u05DCð¹§4≯.\u200C; [B1, B3, B4, C1]; xn--4-zhc0by36txt0w.xn--0ug; ; xn--4-zhc0by36txt0w.; [B3, B4] # ×לð¹§4≯.
+\u05D0\u05DCð¹§4>\u0338。\u200C; \u05D0\u05DCð¹§4≯.\u200C; [B1, B3, B4, C1]; xn--4-zhc0by36txt0w.xn--0ug; ; xn--4-zhc0by36txt0w.; [B3, B4] # ×לð¹§4≯.
+xn--4-zhc0by36txt0w.; \u05D0\u05DCð¹§4≯.; [B3, B4]; xn--4-zhc0by36txt0w.; ; ; # ×לð¹§4≯.
+xn--4-zhc0by36txt0w.xn--0ug; \u05D0\u05DCð¹§4≯.\u200C; [B1, B3, B4, C1]; xn--4-zhc0by36txt0w.xn--0ug; ; ; # ×לð¹§4≯.
ðŸŽã€‚甯; 0.甯; ; 0.xn--qny; ; ; # 0.甯
0。甯; 0.甯; ; 0.xn--qny; ; ; # 0.甯
0.xn--qny; 0.甯; ; 0.xn--qny; ; ; # 0.甯
@@ -5331,19 +5361,19 @@ xn----ef8c.xn--2v9a; -舌.\uAAF6; [V3, V5]; xn----ef8c.xn--2v9a; ; ; # -舌.꫶
-。ᢘ; -.ᢘ; [V3]; -.xn--ibf; ; ; # -.ᢘ
-。ᢘ; -.ᢘ; [V3]; -.xn--ibf; ; ; # -.ᢘ
-.xn--ibf; -.ᢘ; [V3]; -.xn--ibf; ; ; # -.ᢘ
-🂴Ⴋ.≮; ; [P1, V6]; xn--jnd1986v.xn--gdh; ; ; # 🂴Ⴋ.≮
-🂴Ⴋ.<\u0338; 🂴Ⴋ.≮; [P1, V6]; xn--jnd1986v.xn--gdh; ; ; # 🂴Ⴋ.≮
-🂴ⴋ.<\u0338; 🂴ⴋ.≮; [P1, V6]; xn--2kj7565l.xn--gdh; ; ; # 🂴ⴋ.≮
-🂴ⴋ.≮; ; [P1, V6]; xn--2kj7565l.xn--gdh; ; ; # 🂴ⴋ.≮
-xn--2kj7565l.xn--gdh; 🂴ⴋ.≮; [V6]; xn--2kj7565l.xn--gdh; ; ; # 🂴ⴋ.≮
+🂴Ⴋ.≮; ; [V6]; xn--jnd1986v.xn--gdh; ; ; # 🂴Ⴋ.≮
+🂴Ⴋ.<\u0338; 🂴Ⴋ.≮; [V6]; xn--jnd1986v.xn--gdh; ; ; # 🂴Ⴋ.≮
+🂴ⴋ.<\u0338; 🂴ⴋ.≮; ; xn--2kj7565l.xn--gdh; ; ; # 🂴ⴋ.≮
+🂴ⴋ.≮; ; ; xn--2kj7565l.xn--gdh; ; ; # 🂴ⴋ.≮
+xn--2kj7565l.xn--gdh; 🂴ⴋ.≮; ; xn--2kj7565l.xn--gdh; ; ; # 🂴ⴋ.≮
xn--jnd1986v.xn--gdh; 🂴Ⴋ.≮; [V6]; xn--jnd1986v.xn--gdh; ; ; # 🂴Ⴋ.≮
ç’¼ð¨­ï½¡\u200C󠇟; ç’¼ð¨­.\u200C; [C1]; xn--gky8837e.xn--0ug; ; xn--gky8837e.; [] # ç’¼ð¨­.
ç’¼ð¨­ã€‚\u200C󠇟; ç’¼ð¨­.\u200C; [C1]; xn--gky8837e.xn--0ug; ; xn--gky8837e.; [] # ç’¼ð¨­.
xn--gky8837e.; ç’¼ð¨­.; ; xn--gky8837e.; ; ; # ç’¼ð¨­.
ç’¼ð¨­.; ; ; xn--gky8837e.; ; ; # ç’¼ð¨­.
xn--gky8837e.xn--0ug; ç’¼ð¨­.\u200C; [C1]; xn--gky8837e.xn--0ug; ; ; # ç’¼ð¨­.
-\u06698ñ‚½ï½¡-5🞥; \u06698ñ‚½.-5🞥; [B1, P1, V3, V6]; xn--8-qqc97891f.xn---5-rp92a; ; ; # Ù©8.-5🞥
-\u06698ñ‚½ã€‚-5🞥; \u06698ñ‚½.-5🞥; [B1, P1, V3, V6]; xn--8-qqc97891f.xn---5-rp92a; ; ; # Ù©8.-5🞥
+\u06698ñ‚½ï½¡-5🞥; \u06698ñ‚½.-5🞥; [B1, V3, V6]; xn--8-qqc97891f.xn---5-rp92a; ; ; # Ù©8.-5🞥
+\u06698ñ‚½ã€‚-5🞥; \u06698ñ‚½.-5🞥; [B1, V3, V6]; xn--8-qqc97891f.xn---5-rp92a; ; ; # Ù©8.-5🞥
xn--8-qqc97891f.xn---5-rp92a; \u06698ñ‚½.-5🞥; [B1, V3, V6]; xn--8-qqc97891f.xn---5-rp92a; ; ; # Ù©8.-5🞥
\u200C.\u200C; ; [C1]; xn--0ug.xn--0ug; ; .; [A4_2] # .
xn--0ug.xn--0ug; \u200C.\u200C; [C1]; xn--0ug.xn--0ug; ; ; # .
@@ -5353,130 +5383,130 @@ xn--157b.xn--gnb; 튛.\u0716; ; xn--157b.xn--gnb; ; ; # 튛.ܖ
튛.\u0716; ; ; xn--157b.xn--gnb; ; ; # 튛.ܖ
á„ᅱᇂ.\u0716; 튛.\u0716; ; xn--157b.xn--gnb; ; ; # 튛.Ü–
xn--1ug4441e.xn--gnb; \u200D튛.\u0716; [B1, C2]; xn--1ug4441e.xn--gnb; ; ; # 튛.ܖ
-á¡‹ð¹°ðž½³.\u0779â´ž; ; [B2, B3, B5, B6, P1, V6]; xn--b8e0417jocvf.xn--9pb883q; ; ; # á¡‹ð¹°.ݹⴞ
-á¡‹ð¹°ðž½³.\u0779Ⴞ; ; [B2, B3, B5, B6, P1, V6]; xn--b8e0417jocvf.xn--9pb068b; ; ; # á¡‹ð¹°.ݹႾ
+á¡‹ð¹°ðž½³.\u0779â´ž; ; [B2, B3, B5, B6, V6]; xn--b8e0417jocvf.xn--9pb883q; ; ; # á¡‹ð¹°.ݹⴞ
+á¡‹ð¹°ðž½³.\u0779Ⴞ; ; [B2, B3, B5, B6, V6]; xn--b8e0417jocvf.xn--9pb068b; ; ; # á¡‹ð¹°.ݹႾ
xn--b8e0417jocvf.xn--9pb068b; á¡‹ð¹°ðž½³.\u0779Ⴞ; [B2, B3, B5, B6, V6]; xn--b8e0417jocvf.xn--9pb068b; ; ; # á¡‹ð¹°.ݹႾ
xn--b8e0417jocvf.xn--9pb883q; á¡‹ð¹°ðž½³.\u0779â´ž; [B2, B3, B5, B6, V6]; xn--b8e0417jocvf.xn--9pb883q; ; ; # á¡‹ð¹°.ݹⴞ
-ð·ƒ\u0662ð…»ðŸ§ï¼Žð¹®ð¹¬á‚§; ð·ƒ\u0662ð…»5.ð¹®ð¹¬á‚§; [B1, B4, P1, V6]; xn--5-cqc8833rhv7f.xn--fnd3401kfa; ; ; # Ù¢ð…»5.ð¹®ð¹¬á‚§
-ð·ƒ\u0662ð…»5.ð¹®ð¹¬á‚§; ; [B1, B4, P1, V6]; xn--5-cqc8833rhv7f.xn--fnd3401kfa; ; ; # Ù¢ð…»5.ð¹®ð¹¬á‚§
-ð·ƒ\u0662ð…»5.ð¹®ð¹¬â´‡; ; [B1, B4, P1, V6]; xn--5-cqc8833rhv7f.xn--ykjz523efa; ; ; # Ù¢ð…»5.ð¹®ð¹¬â´‡
+ð·ƒ\u0662ð…»ðŸ§ï¼Žð¹®ð¹¬á‚§; ð·ƒ\u0662ð…»5.ð¹®ð¹¬á‚§; [B1, B4, V6]; xn--5-cqc8833rhv7f.xn--fnd3401kfa; ; ; # Ù¢ð…»5.ð¹®ð¹¬á‚§
+ð·ƒ\u0662ð…»5.ð¹®ð¹¬á‚§; ; [B1, B4, V6]; xn--5-cqc8833rhv7f.xn--fnd3401kfa; ; ; # Ù¢ð…»5.ð¹®ð¹¬á‚§
+ð·ƒ\u0662ð…»5.ð¹®ð¹¬â´‡; ; [B1, B4, V6]; xn--5-cqc8833rhv7f.xn--ykjz523efa; ; ; # Ù¢ð…»5.ð¹®ð¹¬â´‡
xn--5-cqc8833rhv7f.xn--ykjz523efa; ð·ƒ\u0662ð…»5.ð¹®ð¹¬â´‡; [B1, B4, V6]; xn--5-cqc8833rhv7f.xn--ykjz523efa; ; ; # Ù¢ð…»5.ð¹®ð¹¬â´‡
xn--5-cqc8833rhv7f.xn--fnd3401kfa; ð·ƒ\u0662ð…»5.ð¹®ð¹¬á‚§; [B1, B4, V6]; xn--5-cqc8833rhv7f.xn--fnd3401kfa; ; ; # Ù¢ð…»5.ð¹®ð¹¬á‚§
-ð·ƒ\u0662ð…»ðŸ§ï¼Žð¹®ð¹¬â´‡; ð·ƒ\u0662ð…»5.ð¹®ð¹¬â´‡; [B1, B4, P1, V6]; xn--5-cqc8833rhv7f.xn--ykjz523efa; ; ; # Ù¢ð…»5.ð¹®ð¹¬â´‡
-Ⴗ.\u05C2𑄴\uA9B7񘃨; Ⴗ.𑄴\u05C2\uA9B7񘃨; [P1, V5, V6]; xn--vnd.xn--qdb0605f14ycrms3c; ; ; # Ⴗ.𑄴ׂꦷ
-Ⴗ.𑄴\u05C2\uA9B7񘃨; Ⴗ.𑄴\u05C2\uA9B7񘃨; [P1, V5, V6]; xn--vnd.xn--qdb0605f14ycrms3c; ; ; # Ⴗ.𑄴ׂꦷ
-Ⴗ.𑄴\u05C2\uA9B7񘃨; ; [P1, V5, V6]; xn--vnd.xn--qdb0605f14ycrms3c; ; ; # Ⴗ.𑄴ׂꦷ
-ⴗ.𑄴\u05C2\uA9B7񘃨; ; [P1, V5, V6]; xn--flj.xn--qdb0605f14ycrms3c; ; ; # ⴗ.𑄴ׂꦷ
+ð·ƒ\u0662ð…»ðŸ§ï¼Žð¹®ð¹¬â´‡; ð·ƒ\u0662ð…»5.ð¹®ð¹¬â´‡; [B1, B4, V6]; xn--5-cqc8833rhv7f.xn--ykjz523efa; ; ; # Ù¢ð…»5.ð¹®ð¹¬â´‡
+Ⴗ.\u05C2𑄴\uA9B7񘃨; Ⴗ.𑄴\u05C2\uA9B7񘃨; [V5, V6]; xn--vnd.xn--qdb0605f14ycrms3c; ; ; # Ⴗ.𑄴ׂꦷ
+Ⴗ.𑄴\u05C2\uA9B7񘃨; Ⴗ.𑄴\u05C2\uA9B7񘃨; [V5, V6]; xn--vnd.xn--qdb0605f14ycrms3c; ; ; # Ⴗ.𑄴ׂꦷ
+Ⴗ.𑄴\u05C2\uA9B7񘃨; ; [V5, V6]; xn--vnd.xn--qdb0605f14ycrms3c; ; ; # Ⴗ.𑄴ׂꦷ
+ⴗ.𑄴\u05C2\uA9B7񘃨; ; [V5, V6]; xn--flj.xn--qdb0605f14ycrms3c; ; ; # ⴗ.𑄴ׂꦷ
xn--flj.xn--qdb0605f14ycrms3c; ⴗ.𑄴\u05C2\uA9B7񘃨; [V5, V6]; xn--flj.xn--qdb0605f14ycrms3c; ; ; # ⴗ.𑄴ׂꦷ
xn--vnd.xn--qdb0605f14ycrms3c; Ⴗ.𑄴\u05C2\uA9B7񘃨; [V5, V6]; xn--vnd.xn--qdb0605f14ycrms3c; ; ; # Ⴗ.𑄴ׂꦷ
-ⴗ.𑄴\u05C2\uA9B7񘃨; ⴗ.𑄴\u05C2\uA9B7񘃨; [P1, V5, V6]; xn--flj.xn--qdb0605f14ycrms3c; ; ; # ⴗ.𑄴ׂꦷ
-ⴗ.\u05C2𑄴\uA9B7񘃨; ⴗ.𑄴\u05C2\uA9B7񘃨; [P1, V5, V6]; xn--flj.xn--qdb0605f14ycrms3c; ; ; # ⴗ.𑄴ׂꦷ
-ðŸ¾ð¾¤˜ï¼Žò‡•›\u066C; 8𾤘.ò‡•›\u066C; [B1, B5, B6, P1, V6]; xn--8-kh23b.xn--lib78461i; ; ; # 8.Ù¬
-8𾤘.򇕛\u066C; ; [B1, B5, B6, P1, V6]; xn--8-kh23b.xn--lib78461i; ; ; # 8.٬
+ⴗ.𑄴\u05C2\uA9B7񘃨; ⴗ.𑄴\u05C2\uA9B7񘃨; [V5, V6]; xn--flj.xn--qdb0605f14ycrms3c; ; ; # ⴗ.𑄴ׂꦷ
+ⴗ.\u05C2𑄴\uA9B7񘃨; ⴗ.𑄴\u05C2\uA9B7񘃨; [V5, V6]; xn--flj.xn--qdb0605f14ycrms3c; ; ; # ⴗ.𑄴ׂꦷ
+ðŸ¾ð¾¤˜ï¼Žò‡•›\u066C; 8𾤘.ò‡•›\u066C; [B1, B5, B6, V6]; xn--8-kh23b.xn--lib78461i; ; ; # 8.Ù¬
+8𾤘.򇕛\u066C; ; [B1, B5, B6, V6]; xn--8-kh23b.xn--lib78461i; ; ; # 8.٬
xn--8-kh23b.xn--lib78461i; 8𾤘.򇕛\u066C; [B1, B5, B6, V6]; xn--8-kh23b.xn--lib78461i; ; ; # 8.٬
-⒈酫︒。\u08D6; ⒈酫︒.\u08D6; [P1, V5, V6]; xn--tsh4490bfe8c.xn--8zb; ; ; # ⒈酫︒.ࣖ
+⒈酫︒。\u08D6; ⒈酫︒.\u08D6; [V5, V6]; xn--tsh4490bfe8c.xn--8zb; ; ; # ⒈酫︒.ࣖ
1.酫。。\u08D6; 1.酫..\u08D6; [V5, X4_2]; 1.xn--8j4a..xn--8zb; [V5, A4_2]; ; # 1.酫..ࣖ
1.xn--8j4a..xn--8zb; 1.酫..\u08D6; [V5, X4_2]; 1.xn--8j4a..xn--8zb; [V5, A4_2]; ; # 1.酫..ࣖ
xn--tsh4490bfe8c.xn--8zb; ⒈酫︒.\u08D6; [V5, V6]; xn--tsh4490bfe8c.xn--8zb; ; ; # ⒈酫︒.ࣖ
-\u2DE3\u200C≮\u1A6B.\u200C\u0E3A; ; [C1, P1, V5, V6]; xn--uof63xk4bf3s.xn--o4c732g; ; xn--uof548an0j.xn--o4c; [P1, V5, V6] # ⷣ≮ᩫ.ฺ
-\u2DE3\u200C<\u0338\u1A6B.\u200C\u0E3A; \u2DE3\u200C≮\u1A6B.\u200C\u0E3A; [C1, P1, V5, V6]; xn--uof63xk4bf3s.xn--o4c732g; ; xn--uof548an0j.xn--o4c; [P1, V5, V6] # ⷣ≮ᩫ.ฺ
-xn--uof548an0j.xn--o4c; \u2DE3≮\u1A6B.\u0E3A; [V5, V6]; xn--uof548an0j.xn--o4c; ; ; # ⷣ≮ᩫ.ฺ
-xn--uof63xk4bf3s.xn--o4c732g; \u2DE3\u200C≮\u1A6B.\u200C\u0E3A; [C1, V5, V6]; xn--uof63xk4bf3s.xn--o4c732g; ; ; # ⷣ≮ᩫ.ฺ
-𞪂。ႷႽ¹\u200D; 𞪂.ႷႽ1\u200D; [B6, C2, P1, V6]; xn--co6h.xn--1-h1gs597m; ; xn--co6h.xn--1-h1gs; [P1, V6] # .ႷႽ1
-𞪂。ႷႽ1\u200D; 𞪂.ႷႽ1\u200D; [B6, C2, P1, V6]; xn--co6h.xn--1-h1gs597m; ; xn--co6h.xn--1-h1gs; [P1, V6] # .ႷႽ1
-𞪂。ⴗâ´1\u200D; 𞪂.â´—â´1\u200D; [B6, C2, P1, V6]; xn--co6h.xn--1-ugn710dya; ; xn--co6h.xn--1-kwssa; [P1, V6] # .â´—â´1
-𞪂。Ⴗâ´1\u200D; 𞪂.á‚·â´1\u200D; [B6, C2, P1, V6]; xn--co6h.xn--1-h1g398iewm; ; xn--co6h.xn--1-h1g429s; [P1, V6] # .á‚·â´1
+\u2DE3\u200C≮\u1A6B.\u200C\u0E3A; ; [C1, V5]; xn--uof63xk4bf3s.xn--o4c732g; ; xn--uof548an0j.xn--o4c; [V5] # ⷣ≮ᩫ.ฺ
+\u2DE3\u200C<\u0338\u1A6B.\u200C\u0E3A; \u2DE3\u200C≮\u1A6B.\u200C\u0E3A; [C1, V5]; xn--uof63xk4bf3s.xn--o4c732g; ; xn--uof548an0j.xn--o4c; [V5] # ⷣ≮ᩫ.ฺ
+xn--uof548an0j.xn--o4c; \u2DE3≮\u1A6B.\u0E3A; [V5]; xn--uof548an0j.xn--o4c; ; ; # ⷣ≮ᩫ.ฺ
+xn--uof63xk4bf3s.xn--o4c732g; \u2DE3\u200C≮\u1A6B.\u200C\u0E3A; [C1, V5]; xn--uof63xk4bf3s.xn--o4c732g; ; ; # ⷣ≮ᩫ.ฺ
+𞪂。ႷႽ¹\u200D; 𞪂.ႷႽ1\u200D; [B6, C2, V6]; xn--co6h.xn--1-h1gs597m; ; xn--co6h.xn--1-h1gs; [V6] # .ႷႽ1
+𞪂。ႷႽ1\u200D; 𞪂.ႷႽ1\u200D; [B6, C2, V6]; xn--co6h.xn--1-h1gs597m; ; xn--co6h.xn--1-h1gs; [V6] # .ႷႽ1
+𞪂。ⴗâ´1\u200D; 𞪂.â´—â´1\u200D; [B6, C2, V6]; xn--co6h.xn--1-ugn710dya; ; xn--co6h.xn--1-kwssa; [V6] # .â´—â´1
+𞪂。Ⴗâ´1\u200D; 𞪂.á‚·â´1\u200D; [B6, C2, V6]; xn--co6h.xn--1-h1g398iewm; ; xn--co6h.xn--1-h1g429s; [V6] # .á‚·â´1
xn--co6h.xn--1-h1g429s; 𞪂.á‚·â´1; [V6]; xn--co6h.xn--1-h1g429s; ; ; # .á‚·â´1
xn--co6h.xn--1-h1g398iewm; 𞪂.á‚·â´1\u200D; [B6, C2, V6]; xn--co6h.xn--1-h1g398iewm; ; ; # .á‚·â´1
xn--co6h.xn--1-kwssa; 𞪂.â´—â´1; [V6]; xn--co6h.xn--1-kwssa; ; ; # .â´—â´1
xn--co6h.xn--1-ugn710dya; 𞪂.â´—â´1\u200D; [B6, C2, V6]; xn--co6h.xn--1-ugn710dya; ; ; # .â´—â´1
xn--co6h.xn--1-h1gs; 𞪂.ႷႽ1; [V6]; xn--co6h.xn--1-h1gs; ; ; # .ႷႽ1
xn--co6h.xn--1-h1gs597m; 𞪂.ႷႽ1\u200D; [B6, C2, V6]; xn--co6h.xn--1-h1gs597m; ; ; # .ႷႽ1
-𞪂。ⴗâ´Â¹\u200D; 𞪂.â´—â´1\u200D; [B6, C2, P1, V6]; xn--co6h.xn--1-ugn710dya; ; xn--co6h.xn--1-kwssa; [P1, V6] # .â´—â´1
-𞪂。Ⴗâ´Â¹\u200D; 𞪂.á‚·â´1\u200D; [B6, C2, P1, V6]; xn--co6h.xn--1-h1g398iewm; ; xn--co6h.xn--1-h1g429s; [P1, V6] # .á‚·â´1
-𑄴𑄳2.𞳿󠀳-; ; [B1, B3, P1, V3, V5, V6]; xn--2-h87ic.xn----s39r33498d; ; ; # 𑄴𑄳2.-
+𞪂。ⴗâ´Â¹\u200D; 𞪂.â´—â´1\u200D; [B6, C2, V6]; xn--co6h.xn--1-ugn710dya; ; xn--co6h.xn--1-kwssa; [V6] # .â´—â´1
+𞪂。Ⴗâ´Â¹\u200D; 𞪂.á‚·â´1\u200D; [B6, C2, V6]; xn--co6h.xn--1-h1g398iewm; ; xn--co6h.xn--1-h1g429s; [V6] # .á‚·â´1
+𑄴𑄳2.𞳿󠀳-; ; [B1, B3, V3, V5, V6]; xn--2-h87ic.xn----s39r33498d; ; ; # 𑄴𑄳2.-
xn--2-h87ic.xn----s39r33498d; 𑄴𑄳2.𞳿󠀳-; [B1, B3, V3, V5, V6]; xn--2-h87ic.xn----s39r33498d; ; ; # 𑄴𑄳2.-
-󠕲󟶶\u0665。ñ€ð‘„³ðž¤ƒ\u0710; 󠕲󟶶\u0665.ñ€ð‘„³ðž¤¥\u0710; [B1, B5, B6, P1, V6]; xn--eib57614py3ea.xn--9mb5737kqnpfzkwr; ; ; # Ù¥.𑄳𞤥Ü
-󠕲󟶶\u0665。ñ€ð‘„³ðž¤ƒ\u0710; 󠕲󟶶\u0665.ñ€ð‘„³ðž¤¥\u0710; [B1, B5, B6, P1, V6]; xn--eib57614py3ea.xn--9mb5737kqnpfzkwr; ; ; # Ù¥.𑄳𞤥Ü
-󠕲󟶶\u0665。ñ€ð‘„³ðž¤¥\u0710; 󠕲󟶶\u0665.ñ€ð‘„³ðž¤¥\u0710; [B1, B5, B6, P1, V6]; xn--eib57614py3ea.xn--9mb5737kqnpfzkwr; ; ; # Ù¥.𑄳𞤥Ü
+󠕲󟶶\u0665。ñ€ð‘„³ðž¤ƒ\u0710; 󠕲󟶶\u0665.ñ€ð‘„³ðž¤¥\u0710; [B1, B5, B6, V6]; xn--eib57614py3ea.xn--9mb5737kqnpfzkwr; ; ; # Ù¥.𑄳𞤥Ü
+󠕲󟶶\u0665。ñ€ð‘„³ðž¤ƒ\u0710; 󠕲󟶶\u0665.ñ€ð‘„³ðž¤¥\u0710; [B1, B5, B6, V6]; xn--eib57614py3ea.xn--9mb5737kqnpfzkwr; ; ; # Ù¥.𑄳𞤥Ü
+󠕲󟶶\u0665。ñ€ð‘„³ðž¤¥\u0710; 󠕲󟶶\u0665.ñ€ð‘„³ðž¤¥\u0710; [B1, B5, B6, V6]; xn--eib57614py3ea.xn--9mb5737kqnpfzkwr; ; ; # Ù¥.𑄳𞤥Ü
xn--eib57614py3ea.xn--9mb5737kqnpfzkwr; 󠕲󟶶\u0665.ñ€ð‘„³ðž¤¥\u0710; [B1, B5, B6, V6]; xn--eib57614py3ea.xn--9mb5737kqnpfzkwr; ; ; # Ù¥.𑄳𞤥Ü
-󠕲󟶶\u0665。ñ€ð‘„³ðž¤¥\u0710; 󠕲󟶶\u0665.ñ€ð‘„³ðž¤¥\u0710; [B1, B5, B6, P1, V6]; xn--eib57614py3ea.xn--9mb5737kqnpfzkwr; ; ; # Ù¥.𑄳𞤥Ü
-\u0720ò² ½ð¹¢\u17BB。ςᢈðŸ­\u200C; \u0720ò² ½ð¹¢\u17BB.ςᢈðŸ­\u200C; [B2, B6, C1, P1, V6]; xn--qnb616fis0qzt36f.xn--3xa057h6ofgl44c; ; xn--qnb616fis0qzt36f.xn--4xa847hli46a; [B2, B6, P1, V6] # Ü ð¹¢áž».ςᢈðŸ­
-\u0720ò² ½ð¹¢\u17BB。ςᢈðŸ­\u200C; \u0720ò² ½ð¹¢\u17BB.ςᢈðŸ­\u200C; [B2, B6, C1, P1, V6]; xn--qnb616fis0qzt36f.xn--3xa057h6ofgl44c; ; xn--qnb616fis0qzt36f.xn--4xa847hli46a; [B2, B6, P1, V6] # Ü ð¹¢áž».ςᢈðŸ­
-\u0720ò² ½ð¹¢\u17BB。ΣᢈðŸ­\u200C; \u0720ò² ½ð¹¢\u17BB.σᢈðŸ­\u200C; [B2, B6, C1, P1, V6]; xn--qnb616fis0qzt36f.xn--4xa847h6ofgl44c; ; xn--qnb616fis0qzt36f.xn--4xa847hli46a; [B2, B6, P1, V6] # Ü ð¹¢áž».σᢈðŸ­
-\u0720ò² ½ð¹¢\u17BB。σᢈðŸ­\u200C; \u0720ò² ½ð¹¢\u17BB.σᢈðŸ­\u200C; [B2, B6, C1, P1, V6]; xn--qnb616fis0qzt36f.xn--4xa847h6ofgl44c; ; xn--qnb616fis0qzt36f.xn--4xa847hli46a; [B2, B6, P1, V6] # Ü ð¹¢áž».σᢈðŸ­
+󠕲󟶶\u0665。ñ€ð‘„³ðž¤¥\u0710; 󠕲󟶶\u0665.ñ€ð‘„³ðž¤¥\u0710; [B1, B5, B6, V6]; xn--eib57614py3ea.xn--9mb5737kqnpfzkwr; ; ; # Ù¥.𑄳𞤥Ü
+\u0720ò² ½ð¹¢\u17BB。ςᢈðŸ­\u200C; \u0720ò² ½ð¹¢\u17BB.ςᢈðŸ­\u200C; [B2, B6, C1, V6]; xn--qnb616fis0qzt36f.xn--3xa057h6ofgl44c; ; xn--qnb616fis0qzt36f.xn--4xa847hli46a; [B2, B6, V6] # Ü ð¹¢áž».ςᢈðŸ­
+\u0720ò² ½ð¹¢\u17BB。ςᢈðŸ­\u200C; \u0720ò² ½ð¹¢\u17BB.ςᢈðŸ­\u200C; [B2, B6, C1, V6]; xn--qnb616fis0qzt36f.xn--3xa057h6ofgl44c; ; xn--qnb616fis0qzt36f.xn--4xa847hli46a; [B2, B6, V6] # Ü ð¹¢áž».ςᢈðŸ­
+\u0720ò² ½ð¹¢\u17BB。ΣᢈðŸ­\u200C; \u0720ò² ½ð¹¢\u17BB.σᢈðŸ­\u200C; [B2, B6, C1, V6]; xn--qnb616fis0qzt36f.xn--4xa847h6ofgl44c; ; xn--qnb616fis0qzt36f.xn--4xa847hli46a; [B2, B6, V6] # Ü ð¹¢áž».σᢈðŸ­
+\u0720ò² ½ð¹¢\u17BB。σᢈðŸ­\u200C; \u0720ò² ½ð¹¢\u17BB.σᢈðŸ­\u200C; [B2, B6, C1, V6]; xn--qnb616fis0qzt36f.xn--4xa847h6ofgl44c; ; xn--qnb616fis0qzt36f.xn--4xa847hli46a; [B2, B6, V6] # Ü ð¹¢áž».σᢈðŸ­
xn--qnb616fis0qzt36f.xn--4xa847hli46a; \u0720ò² ½ð¹¢\u17BB.σᢈðŸ­; [B2, B6, V6]; xn--qnb616fis0qzt36f.xn--4xa847hli46a; ; ; # Ü ð¹¢áž».σᢈðŸ­
xn--qnb616fis0qzt36f.xn--4xa847h6ofgl44c; \u0720ò² ½ð¹¢\u17BB.σᢈðŸ­\u200C; [B2, B6, C1, V6]; xn--qnb616fis0qzt36f.xn--4xa847h6ofgl44c; ; ; # Ü ð¹¢áž».σᢈðŸ­
xn--qnb616fis0qzt36f.xn--3xa057h6ofgl44c; \u0720ò² ½ð¹¢\u17BB.ςᢈðŸ­\u200C; [B2, B6, C1, V6]; xn--qnb616fis0qzt36f.xn--3xa057h6ofgl44c; ; ; # Ü ð¹¢áž».ςᢈðŸ­
-\u0720ò² ½ð¹¢\u17BB。ΣᢈðŸ­\u200C; \u0720ò² ½ð¹¢\u17BB.σᢈðŸ­\u200C; [B2, B6, C1, P1, V6]; xn--qnb616fis0qzt36f.xn--4xa847h6ofgl44c; ; xn--qnb616fis0qzt36f.xn--4xa847hli46a; [B2, B6, P1, V6] # Ü ð¹¢áž».σᢈðŸ­
-\u0720ò² ½ð¹¢\u17BB。σᢈðŸ­\u200C; \u0720ò² ½ð¹¢\u17BB.σᢈðŸ­\u200C; [B2, B6, C1, P1, V6]; xn--qnb616fis0qzt36f.xn--4xa847h6ofgl44c; ; xn--qnb616fis0qzt36f.xn--4xa847hli46a; [B2, B6, P1, V6] # Ü ð¹¢áž».σᢈðŸ­
-\u200D--≮。ð¹§; \u200D--≮.ð¹§; [B1, C2, P1, V6]; xn-----l1tz1k.xn--fo0d; ; xn-----ujv.xn--fo0d; [B1, P1, V3, V6] # --≮.ð¹§
-\u200D--<\u0338。ð¹§; \u200D--≮.ð¹§; [B1, C2, P1, V6]; xn-----l1tz1k.xn--fo0d; ; xn-----ujv.xn--fo0d; [B1, P1, V3, V6] # --≮.ð¹§
-xn-----ujv.xn--fo0d; --≮.ð¹§; [B1, V3, V6]; xn-----ujv.xn--fo0d; ; ; # --≮.ð¹§
-xn-----l1tz1k.xn--fo0d; \u200D--≮.ð¹§; [B1, C2, V6]; xn-----l1tz1k.xn--fo0d; ; ; # --≮.ð¹§
-\uA806。ð»š\u0FB0â’•; \uA806.ð»š\u0FB0â’•; [P1, V5, V6]; xn--l98a.xn--dgd218hhp28d; ; ; # ê †.ྰ⒕
-\uA806。ð»š\u0FB014.; \uA806.ð»š\u0FB014.; [P1, V5, V6]; xn--l98a.xn--14-jsj57880f.; ; ; # ê †.ྰ14.
+\u0720ò² ½ð¹¢\u17BB。ΣᢈðŸ­\u200C; \u0720ò² ½ð¹¢\u17BB.σᢈðŸ­\u200C; [B2, B6, C1, V6]; xn--qnb616fis0qzt36f.xn--4xa847h6ofgl44c; ; xn--qnb616fis0qzt36f.xn--4xa847hli46a; [B2, B6, V6] # Ü ð¹¢áž».σᢈðŸ­
+\u0720ò² ½ð¹¢\u17BB。σᢈðŸ­\u200C; \u0720ò² ½ð¹¢\u17BB.σᢈðŸ­\u200C; [B2, B6, C1, V6]; xn--qnb616fis0qzt36f.xn--4xa847h6ofgl44c; ; xn--qnb616fis0qzt36f.xn--4xa847hli46a; [B2, B6, V6] # Ü ð¹¢áž».σᢈðŸ­
+\u200D--≮。ð¹§; \u200D--≮.ð¹§; [B1, C2]; xn-----l1tz1k.xn--fo0d; ; xn-----ujv.xn--fo0d; [B1, V3] # --≮.ð¹§
+\u200D--<\u0338。ð¹§; \u200D--≮.ð¹§; [B1, C2]; xn-----l1tz1k.xn--fo0d; ; xn-----ujv.xn--fo0d; [B1, V3] # --≮.ð¹§
+xn-----ujv.xn--fo0d; --≮.ð¹§; [B1, V3]; xn-----ujv.xn--fo0d; ; ; # --≮.ð¹§
+xn-----l1tz1k.xn--fo0d; \u200D--≮.ð¹§; [B1, C2]; xn-----l1tz1k.xn--fo0d; ; ; # --≮.ð¹§
+\uA806。ð»š\u0FB0â’•; \uA806.ð»š\u0FB0â’•; [V5, V6]; xn--l98a.xn--dgd218hhp28d; ; ; # ê †.ྰ⒕
+\uA806。ð»š\u0FB014.; \uA806.ð»š\u0FB014.; [V5, V6]; xn--l98a.xn--14-jsj57880f.; ; ; # ê †.ྰ14.
xn--l98a.xn--14-jsj57880f.; \uA806.ð»š\u0FB014.; [V5, V6]; xn--l98a.xn--14-jsj57880f.; ; ; # ê †.ྰ14.
xn--l98a.xn--dgd218hhp28d; \uA806.ð»š\u0FB0â’•; [V5, V6]; xn--l98a.xn--dgd218hhp28d; ; ; # ê †.ྰ⒕
-򮉂\u06BC.𑆺\u0669; 򮉂\u06BC.𑆺\u0669; [B1, B5, B6, P1, V5, V6]; xn--vkb92243l.xn--iib9797k; ; ; # ڼ.𑆺٩
-򮉂\u06BC.𑆺\u0669; ; [B1, B5, B6, P1, V5, V6]; xn--vkb92243l.xn--iib9797k; ; ; # ڼ.𑆺٩
+򮉂\u06BC.𑆺\u0669; 򮉂\u06BC.𑆺\u0669; [B1, B5, B6, V5, V6]; xn--vkb92243l.xn--iib9797k; ; ; # ڼ.𑆺٩
+򮉂\u06BC.𑆺\u0669; ; [B1, B5, B6, V5, V6]; xn--vkb92243l.xn--iib9797k; ; ; # ڼ.𑆺٩
xn--vkb92243l.xn--iib9797k; 򮉂\u06BC.𑆺\u0669; [B1, B5, B6, V5, V6]; xn--vkb92243l.xn--iib9797k; ; ; # ڼ.𑆺٩
-ó Ž\u06D0-。𞤴; ó Ž\u06D0-.𞤴; [B1, P1, V3, V6]; xn----mwc72685y.xn--se6h; ; ; # Û-.𞤴
-ó Ž\u06D0-。𞤒; ó Ž\u06D0-.𞤴; [B1, P1, V3, V6]; xn----mwc72685y.xn--se6h; ; ; # Û-.𞤴
+ó Ž\u06D0-。𞤴; ó Ž\u06D0-.𞤴; [B1, V3, V6]; xn----mwc72685y.xn--se6h; ; ; # Û-.𞤴
+ó Ž\u06D0-。𞤒; ó Ž\u06D0-.𞤴; [B1, V3, V6]; xn----mwc72685y.xn--se6h; ; ; # Û-.𞤴
xn----mwc72685y.xn--se6h; ó Ž\u06D0-.𞤴; [B1, V3, V6]; xn----mwc72685y.xn--se6h; ; ; # Û-.𞤴
ðŸ 4ó ‡—ðˆ»ï¼Ž\u200Dð‹µâ›§\u200D; 84ðˆ».\u200Dð‹µâ›§\u200D; [C2]; xn--84-s850a.xn--1uga573cfq1w; ; xn--84-s850a.xn--59h6326e; [] # 84ðˆ».ð‹µâ›§
84ó ‡—ðˆ».\u200Dð‹µâ›§\u200D; 84ðˆ».\u200Dð‹µâ›§\u200D; [C2]; xn--84-s850a.xn--1uga573cfq1w; ; xn--84-s850a.xn--59h6326e; [] # 84ðˆ».ð‹µâ›§
xn--84-s850a.xn--59h6326e; 84ðˆ».ð‹µâ›§; ; xn--84-s850a.xn--59h6326e; ; ; # 84ðˆ».ð‹µâ›§
84ðˆ».ð‹µâ›§; ; ; xn--84-s850a.xn--59h6326e; ; ; # 84ðˆ».ð‹µâ›§
xn--84-s850a.xn--1uga573cfq1w; 84ðˆ».\u200Dð‹µâ›§\u200D; [C2]; xn--84-s850a.xn--1uga573cfq1w; ; ; # 84ðˆ».ð‹µâ›§
--\u0601。ᡪ; -\u0601.ᡪ; [B1, P1, V3, V6]; xn----tkc.xn--68e; ; ; # -.ᡪ
--\u0601。ᡪ; -\u0601.ᡪ; [B1, P1, V3, V6]; xn----tkc.xn--68e; ; ; # -.ᡪ
+-\u0601。ᡪ; -\u0601.ᡪ; [B1, V3, V6]; xn----tkc.xn--68e; ; ; # -.ᡪ
+-\u0601。ᡪ; -\u0601.ᡪ; [B1, V3, V6]; xn----tkc.xn--68e; ; ; # -.ᡪ
xn----tkc.xn--68e; -\u0601.ᡪ; [B1, V3, V6]; xn----tkc.xn--68e; ; ; # -.ᡪ
-≮ðŸ•ï¼Žè¬–ß≯; ≮7.謖ß≯; [P1, V6]; xn--7-mgo.xn--zca892oly5e; ; xn--7-mgo.xn--ss-xjvv174c; # ≮7.謖ß≯
-<\u0338ðŸ•ï¼Žè¬–ß>\u0338; ≮7.謖ß≯; [P1, V6]; xn--7-mgo.xn--zca892oly5e; ; xn--7-mgo.xn--ss-xjvv174c; # ≮7.謖ß≯
-≮7.謖ß≯; ; [P1, V6]; xn--7-mgo.xn--zca892oly5e; ; xn--7-mgo.xn--ss-xjvv174c; # ≮7.謖ß≯
-<\u03387.謖ß>\u0338; ≮7.謖ß≯; [P1, V6]; xn--7-mgo.xn--zca892oly5e; ; xn--7-mgo.xn--ss-xjvv174c; # ≮7.謖ß≯
-<\u03387.謖SS>\u0338; ≮7.謖ss≯; [P1, V6]; xn--7-mgo.xn--ss-xjvv174c; ; ; # ≮7.謖ss≯
-≮7.謖SS≯; ≮7.謖ss≯; [P1, V6]; xn--7-mgo.xn--ss-xjvv174c; ; ; # ≮7.謖ss≯
-≮7.謖ss≯; ; [P1, V6]; xn--7-mgo.xn--ss-xjvv174c; ; ; # ≮7.謖ss≯
-<\u03387.謖ss>\u0338; ≮7.謖ss≯; [P1, V6]; xn--7-mgo.xn--ss-xjvv174c; ; ; # ≮7.謖ss≯
-<\u03387.謖Ss>\u0338; ≮7.謖ss≯; [P1, V6]; xn--7-mgo.xn--ss-xjvv174c; ; ; # ≮7.謖ss≯
-≮7.謖Ss≯; ≮7.謖ss≯; [P1, V6]; xn--7-mgo.xn--ss-xjvv174c; ; ; # ≮7.謖ss≯
-xn--7-mgo.xn--ss-xjvv174c; ≮7.謖ss≯; [V6]; xn--7-mgo.xn--ss-xjvv174c; ; ; # ≮7.謖ss≯
-xn--7-mgo.xn--zca892oly5e; ≮7.謖ß≯; [V6]; xn--7-mgo.xn--zca892oly5e; ; ; # ≮7.謖ß≯
-<\u0338ðŸ•ï¼Žè¬–SS>\u0338; ≮7.謖ss≯; [P1, V6]; xn--7-mgo.xn--ss-xjvv174c; ; ; # ≮7.謖ss≯
-≮ðŸ•ï¼Žè¬–SS≯; ≮7.謖ss≯; [P1, V6]; xn--7-mgo.xn--ss-xjvv174c; ; ; # ≮7.謖ss≯
-≮ðŸ•ï¼Žè¬–ss≯; ≮7.謖ss≯; [P1, V6]; xn--7-mgo.xn--ss-xjvv174c; ; ; # ≮7.謖ss≯
-<\u0338ðŸ•ï¼Žè¬–ss>\u0338; ≮7.謖ss≯; [P1, V6]; xn--7-mgo.xn--ss-xjvv174c; ; ; # ≮7.謖ss≯
-<\u0338ðŸ•ï¼Žè¬–Ss>\u0338; ≮7.謖ss≯; [P1, V6]; xn--7-mgo.xn--ss-xjvv174c; ; ; # ≮7.謖ss≯
-≮ðŸ•ï¼Žè¬–Ss≯; ≮7.謖ss≯; [P1, V6]; xn--7-mgo.xn--ss-xjvv174c; ; ; # ≮7.謖ss≯
-朶Ⴉ𞪡.ð¨½\u0825📻-; ; [B1, B5, B6, P1, V3, V5, V6]; xn--hnd7245bd56p.xn----3gd37096apmwa; ; ; # 朶Ⴉ.ð¨½à ¥ðŸ“»-
-朶ⴉ𞪡.ð¨½\u0825📻-; ; [B1, B5, B6, P1, V3, V5, V6]; xn--0kjz47pd57t.xn----3gd37096apmwa; ; ; # 朶ⴉ.ð¨½à ¥ðŸ“»-
+≮ðŸ•ï¼Žè¬–ß≯; ≮7.謖ß≯; ; xn--7-mgo.xn--zca892oly5e; ; xn--7-mgo.xn--ss-xjvv174c; # ≮7.謖ß≯
+<\u0338ðŸ•ï¼Žè¬–ß>\u0338; ≮7.謖ß≯; ; xn--7-mgo.xn--zca892oly5e; ; xn--7-mgo.xn--ss-xjvv174c; # ≮7.謖ß≯
+≮7.謖ß≯; ; ; xn--7-mgo.xn--zca892oly5e; ; xn--7-mgo.xn--ss-xjvv174c; # ≮7.謖ß≯
+<\u03387.謖ß>\u0338; ≮7.謖ß≯; ; xn--7-mgo.xn--zca892oly5e; ; xn--7-mgo.xn--ss-xjvv174c; # ≮7.謖ß≯
+<\u03387.謖SS>\u0338; ≮7.謖ss≯; ; xn--7-mgo.xn--ss-xjvv174c; ; ; # ≮7.謖ss≯
+≮7.謖SS≯; ≮7.謖ss≯; ; xn--7-mgo.xn--ss-xjvv174c; ; ; # ≮7.謖ss≯
+≮7.謖ss≯; ; ; xn--7-mgo.xn--ss-xjvv174c; ; ; # ≮7.謖ss≯
+<\u03387.謖ss>\u0338; ≮7.謖ss≯; ; xn--7-mgo.xn--ss-xjvv174c; ; ; # ≮7.謖ss≯
+<\u03387.謖Ss>\u0338; ≮7.謖ss≯; ; xn--7-mgo.xn--ss-xjvv174c; ; ; # ≮7.謖ss≯
+≮7.謖Ss≯; ≮7.謖ss≯; ; xn--7-mgo.xn--ss-xjvv174c; ; ; # ≮7.謖ss≯
+xn--7-mgo.xn--ss-xjvv174c; ≮7.謖ss≯; ; xn--7-mgo.xn--ss-xjvv174c; ; ; # ≮7.謖ss≯
+xn--7-mgo.xn--zca892oly5e; ≮7.謖ß≯; ; xn--7-mgo.xn--zca892oly5e; ; ; # ≮7.謖ß≯
+<\u0338ðŸ•ï¼Žè¬–SS>\u0338; ≮7.謖ss≯; ; xn--7-mgo.xn--ss-xjvv174c; ; ; # ≮7.謖ss≯
+≮ðŸ•ï¼Žè¬–SS≯; ≮7.謖ss≯; ; xn--7-mgo.xn--ss-xjvv174c; ; ; # ≮7.謖ss≯
+≮ðŸ•ï¼Žè¬–ss≯; ≮7.謖ss≯; ; xn--7-mgo.xn--ss-xjvv174c; ; ; # ≮7.謖ss≯
+<\u0338ðŸ•ï¼Žè¬–ss>\u0338; ≮7.謖ss≯; ; xn--7-mgo.xn--ss-xjvv174c; ; ; # ≮7.謖ss≯
+<\u0338ðŸ•ï¼Žè¬–Ss>\u0338; ≮7.謖ss≯; ; xn--7-mgo.xn--ss-xjvv174c; ; ; # ≮7.謖ss≯
+≮ðŸ•ï¼Žè¬–Ss≯; ≮7.謖ss≯; ; xn--7-mgo.xn--ss-xjvv174c; ; ; # ≮7.謖ss≯
+朶Ⴉ𞪡.ð¨½\u0825📻-; ; [B1, B5, B6, V3, V5, V6]; xn--hnd7245bd56p.xn----3gd37096apmwa; ; ; # 朶Ⴉ.ð¨½à ¥ðŸ“»-
+朶ⴉ𞪡.ð¨½\u0825📻-; ; [B1, B5, B6, V3, V5, V6]; xn--0kjz47pd57t.xn----3gd37096apmwa; ; ; # 朶ⴉ.ð¨½à ¥ðŸ“»-
xn--0kjz47pd57t.xn----3gd37096apmwa; 朶ⴉ𞪡.ð¨½\u0825📻-; [B1, B5, B6, V3, V5, V6]; xn--0kjz47pd57t.xn----3gd37096apmwa; ; ; # 朶ⴉ.ð¨½à ¥ðŸ“»-
xn--hnd7245bd56p.xn----3gd37096apmwa; 朶Ⴉ𞪡.ð¨½\u0825📻-; [B1, B5, B6, V3, V5, V6]; xn--hnd7245bd56p.xn----3gd37096apmwa; ; ; # 朶Ⴉ.ð¨½à ¥ðŸ“»-
-ð¤Žã€‚ó‘¿°\u200C≮\u200D; ð¤Ž.ó‘¿°\u200C≮\u200D; [B6, C1, C2, P1, V6]; xn--bk9c.xn--0ugc04p2u638c; ; xn--bk9c.xn--gdhx6802k; [B6, P1, V6] # ð¤Ž.≮
-ð¤Žã€‚ó‘¿°\u200C<\u0338\u200D; ð¤Ž.ó‘¿°\u200C≮\u200D; [B6, C1, C2, P1, V6]; xn--bk9c.xn--0ugc04p2u638c; ; xn--bk9c.xn--gdhx6802k; [B6, P1, V6] # ð¤Ž.≮
+ð¤Žã€‚ó‘¿°\u200C≮\u200D; ð¤Ž.ó‘¿°\u200C≮\u200D; [B6, C1, C2, V6]; xn--bk9c.xn--0ugc04p2u638c; ; xn--bk9c.xn--gdhx6802k; [B6, V6] # ð¤Ž.≮
+ð¤Žã€‚ó‘¿°\u200C<\u0338\u200D; ð¤Ž.ó‘¿°\u200C≮\u200D; [B6, C1, C2, V6]; xn--bk9c.xn--0ugc04p2u638c; ; xn--bk9c.xn--gdhx6802k; [B6, V6] # ð¤Ž.≮
xn--bk9c.xn--gdhx6802k; ð¤Ž.󑿰≮; [B6, V6]; xn--bk9c.xn--gdhx6802k; ; ; # ð¤Ž.≮
xn--bk9c.xn--0ugc04p2u638c; ð¤Ž.ó‘¿°\u200C≮\u200D; [B6, C1, C2, V6]; xn--bk9c.xn--0ugc04p2u638c; ; ; # ð¤Ž.≮
-ñ­œŽâ’ˆï½¡\u200CðŸ¤; ñ­œŽâ’ˆ.\u200C2; [C1, P1, V6]; xn--tsh94183d.xn--2-rgn; ; xn--tsh94183d.2; [P1, V6] # â’ˆ.2
-񭜎1.。\u200C2; 񭜎1..\u200C2; [C1, P1, V6, X4_2]; xn--1-ex54e..xn--2-rgn; [C1, P1, V6, A4_2]; xn--1-ex54e..2; [P1, V6, A4_2] # 1..2
+ñ­œŽâ’ˆï½¡\u200CðŸ¤; ñ­œŽâ’ˆ.\u200C2; [C1, V6]; xn--tsh94183d.xn--2-rgn; ; xn--tsh94183d.2; [V6] # â’ˆ.2
+񭜎1.。\u200C2; 񭜎1..\u200C2; [C1, V6, X4_2]; xn--1-ex54e..xn--2-rgn; [C1, V6, A4_2]; xn--1-ex54e..2; [V6, A4_2] # 1..2
xn--1-ex54e..2; 񭜎1..2; [V6, X4_2]; xn--1-ex54e..2; [V6, A4_2]; ; # 1..2
xn--1-ex54e..xn--2-rgn; 񭜎1..\u200C2; [C1, V6, X4_2]; xn--1-ex54e..xn--2-rgn; [C1, V6, A4_2]; ; # 1..2
xn--tsh94183d.2; 񭜎⒈.2; [V6]; xn--tsh94183d.2; ; ; # ⒈.2
xn--tsh94183d.xn--2-rgn; 񭜎⒈.\u200C2; [C1, V6]; xn--tsh94183d.xn--2-rgn; ; ; # ⒈.2
-ó ŸŠð¹¤\u200D.ð¹³ó™„µð¹¶; ó ŸŠð¹¤\u200D.ð¹³ó™„µð¹¶; [B1, C2, P1, V6]; xn--1ugy994g7k93g.xn--ro0dga22807v; ; xn--co0d98977c.xn--ro0dga22807v; [B1, P1, V6] # ð¹¤.ð¹³ð¹¶
-ó ŸŠð¹¤\u200D.ð¹³ó™„µð¹¶; ; [B1, C2, P1, V6]; xn--1ugy994g7k93g.xn--ro0dga22807v; ; xn--co0d98977c.xn--ro0dga22807v; [B1, P1, V6] # ð¹¤.ð¹³ð¹¶
+ó ŸŠð¹¤\u200D.ð¹³ó™„µð¹¶; ó ŸŠð¹¤\u200D.ð¹³ó™„µð¹¶; [B1, C2, V6]; xn--1ugy994g7k93g.xn--ro0dga22807v; ; xn--co0d98977c.xn--ro0dga22807v; [B1, V6] # ð¹¤.ð¹³ð¹¶
+ó ŸŠð¹¤\u200D.ð¹³ó™„µð¹¶; ; [B1, C2, V6]; xn--1ugy994g7k93g.xn--ro0dga22807v; ; xn--co0d98977c.xn--ro0dga22807v; [B1, V6] # ð¹¤.ð¹³ð¹¶
xn--co0d98977c.xn--ro0dga22807v; ó ŸŠð¹¤.ð¹³ó™„µð¹¶; [B1, V6]; xn--co0d98977c.xn--ro0dga22807v; ; ; # ð¹¤.ð¹³ð¹¶
xn--1ugy994g7k93g.xn--ro0dga22807v; ó ŸŠð¹¤\u200D.ð¹³ó™„µð¹¶; [B1, C2, V6]; xn--1ugy994g7k93g.xn--ro0dga22807v; ; ; # ð¹¤.ð¹³ð¹¶
-𞤴ð¹»ð‘“‚ð­ï¼Ž\u094D\uFE07ô‰›¯; 𞤴ð¹»ð‘“‚ð­.\u094Dô‰›¯; [B1, P1, V5, V6]; xn--609c96c09grp2w.xn--n3b28708s; ; ; # 𞤴ð¹»ð‘“‚ð­.à¥
-𞤴ð¹»ð‘“‚ð­.\u094D\uFE07ô‰›¯; 𞤴ð¹»ð‘“‚ð­.\u094Dô‰›¯; [B1, P1, V5, V6]; xn--609c96c09grp2w.xn--n3b28708s; ; ; # 𞤴ð¹»ð‘“‚ð­.à¥
-𞤒ð¹»ð‘“‚ð­.\u094D\uFE07ô‰›¯; 𞤴ð¹»ð‘“‚ð­.\u094Dô‰›¯; [B1, P1, V5, V6]; xn--609c96c09grp2w.xn--n3b28708s; ; ; # 𞤴ð¹»ð‘“‚ð­.à¥
+𞤴ð¹»ð‘“‚ð­ï¼Ž\u094D\uFE07ô‰›¯; 𞤴ð¹»ð‘“‚ð­.\u094Dô‰›¯; [B1, V5, V6]; xn--609c96c09grp2w.xn--n3b28708s; ; ; # 𞤴ð¹»ð‘“‚ð­.à¥
+𞤴ð¹»ð‘“‚ð­.\u094D\uFE07ô‰›¯; 𞤴ð¹»ð‘“‚ð­.\u094Dô‰›¯; [B1, V5, V6]; xn--609c96c09grp2w.xn--n3b28708s; ; ; # 𞤴ð¹»ð‘“‚ð­.à¥
+𞤒ð¹»ð‘“‚ð­.\u094D\uFE07ô‰›¯; 𞤴ð¹»ð‘“‚ð­.\u094Dô‰›¯; [B1, V5, V6]; xn--609c96c09grp2w.xn--n3b28708s; ; ; # 𞤴ð¹»ð‘“‚ð­.à¥
xn--609c96c09grp2w.xn--n3b28708s; 𞤴ð¹»ð‘“‚ð­.\u094Dô‰›¯; [B1, V5, V6]; xn--609c96c09grp2w.xn--n3b28708s; ; ; # 𞤴ð¹»ð‘“‚ð­.à¥
-𞤒ð¹»ð‘“‚ð­ï¼Ž\u094D\uFE07ô‰›¯; 𞤴ð¹»ð‘“‚ð­.\u094Dô‰›¯; [B1, P1, V5, V6]; xn--609c96c09grp2w.xn--n3b28708s; ; ; # 𞤴ð¹»ð‘“‚ð­.à¥
-\u0668。ð¹ ð¹½ñ—®¶; \u0668.ð¹ ð¹½ñ—®¶; [B1, P1, V6]; xn--hib.xn--7n0d2bu9196b; ; ; # Ù¨.ð¹ ð¹½
-\u0668。ð¹ ð¹½ñ—®¶; \u0668.ð¹ ð¹½ñ—®¶; [B1, P1, V6]; xn--hib.xn--7n0d2bu9196b; ; ; # Ù¨.ð¹ ð¹½
+𞤒ð¹»ð‘“‚ð­ï¼Ž\u094D\uFE07ô‰›¯; 𞤴ð¹»ð‘“‚ð­.\u094Dô‰›¯; [B1, V5, V6]; xn--609c96c09grp2w.xn--n3b28708s; ; ; # 𞤴ð¹»ð‘“‚ð­.à¥
+\u0668。ð¹ ð¹½ñ—®¶; \u0668.ð¹ ð¹½ñ—®¶; [B1, V6]; xn--hib.xn--7n0d2bu9196b; ; ; # Ù¨.ð¹ ð¹½
+\u0668。ð¹ ð¹½ñ—®¶; \u0668.ð¹ ð¹½ñ—®¶; [B1, V6]; xn--hib.xn--7n0d2bu9196b; ; ; # Ù¨.ð¹ ð¹½
xn--hib.xn--7n0d2bu9196b; \u0668.ð¹ ð¹½ñ—®¶; [B1, V6]; xn--hib.xn--7n0d2bu9196b; ; ; # Ù¨.ð¹ ð¹½
-\u1160ñ€œ.8ò¶¾µ\u069C; ; [B1, P1, V6]; xn--psd85033d.xn--8-otc61545t; ; ; # .8Úœ
+\u1160ñ€œ.8ò¶¾µ\u069C; ; [B1, V6]; xn--psd85033d.xn--8-otc61545t; ; ; # .8Úœ
xn--psd85033d.xn--8-otc61545t; \u1160ñ€œ.8ò¶¾µ\u069C; [B1, V6]; xn--psd85033d.xn--8-otc61545t; ; ; # .8Úœ
\u200D\u200C󠆪。ß𑓃; \u200D\u200C.ß𑓃; [C1, C2]; xn--0ugb.xn--zca0732l; ; .xn--ss-bh7o; [A4_2] # .ß𑓃
\u200D\u200C󠆪。ß𑓃; \u200D\u200C.ß𑓃; [C1, C2]; xn--0ugb.xn--zca0732l; ; .xn--ss-bh7o; [A4_2] # .ß𑓃
@@ -5493,7 +5523,7 @@ xn--ss-bh7o; ss𑓃; ; xn--ss-bh7o; ; ; # ss𑓃
ss𑓃; ; ; xn--ss-bh7o; ; ; # ss𑓃
SS𑓃; ss𑓃; ; xn--ss-bh7o; ; ; # ss𑓃
Ss𑓃; ss𑓃; ; xn--ss-bh7o; ; ; # ss𑓃
-︒\u200Cヶ䒩.ꡪ; ; [C1, P1, V6]; xn--0ug287dj0or48o.xn--gd9a; ; xn--qekw60dns9k.xn--gd9a; [P1, V6] # ︒ヶ䒩.ꡪ
+︒\u200Cヶ䒩.ꡪ; ; [C1, V6]; xn--0ug287dj0or48o.xn--gd9a; ; xn--qekw60dns9k.xn--gd9a; [V6] # ︒ヶ䒩.ꡪ
。\u200Cヶ䒩.ꡪ; .\u200Cヶ䒩.ꡪ; [C1, X4_2]; .xn--0ug287dj0o.xn--gd9a; [C1, A4_2]; .xn--qekw60d.xn--gd9a; [A4_2] # .ヶ䒩.ꡪ
.xn--qekw60d.xn--gd9a; .ヶ䒩.ꡪ; [X4_2]; .xn--qekw60d.xn--gd9a; [A4_2]; ; # .ヶ䒩.ꡪ
.xn--0ug287dj0o.xn--gd9a; .\u200Cヶ䒩.ꡪ; [C1, X4_2]; .xn--0ug287dj0o.xn--gd9a; [C1, A4_2]; ; # .ヶ䒩.ꡪ
@@ -5501,30 +5531,30 @@ xn--qekw60dns9k.xn--gd9a; ︒ヶ䒩.ꡪ; [V6]; xn--qekw60dns9k.xn--gd9a; ; ; #
xn--0ug287dj0or48o.xn--gd9a; ︒\u200Cヶ䒩.ꡪ; [C1, V6]; xn--0ug287dj0or48o.xn--gd9a; ; ; # ︒ヶ䒩.ꡪ
xn--qekw60d.xn--gd9a; ヶ䒩.ꡪ; ; xn--qekw60d.xn--gd9a; ; ; # ヶ䒩.ꡪ
ヶ䒩.ꡪ; ; ; xn--qekw60d.xn--gd9a; ; ; # ヶ䒩.ꡪ
-\u200Câ’ˆð¤®.󢓋\u1A60; ; [C1, P1, V6]; xn--0ug88o7471d.xn--jof45148n; ; xn--tshw462r.xn--jof45148n; [P1, V6] # â’ˆð¤®.á© 
-\u200C1.ð¤®.󢓋\u1A60; ; [C1, P1, V6]; xn--1-rgn.xn--4x6j.xn--jof45148n; ; 1.xn--4x6j.xn--jof45148n; [P1, V6] # 1.ð¤®.á© 
+\u200Câ’ˆð¤®.󢓋\u1A60; ; [C1, V6]; xn--0ug88o7471d.xn--jof45148n; ; xn--tshw462r.xn--jof45148n; [V6] # â’ˆð¤®.á© 
+\u200C1.ð¤®.󢓋\u1A60; ; [C1, V6]; xn--1-rgn.xn--4x6j.xn--jof45148n; ; 1.xn--4x6j.xn--jof45148n; [V6] # 1.ð¤®.á© 
1.xn--4x6j.xn--jof45148n; 1.ð¤®.󢓋\u1A60; [V6]; 1.xn--4x6j.xn--jof45148n; ; ; # 1.ð¤®.á© 
xn--1-rgn.xn--4x6j.xn--jof45148n; \u200C1.ð¤®.󢓋\u1A60; [C1, V6]; xn--1-rgn.xn--4x6j.xn--jof45148n; ; ; # 1.ð¤®.á© 
xn--tshw462r.xn--jof45148n; â’ˆð¤®.󢓋\u1A60; [V6]; xn--tshw462r.xn--jof45148n; ; ; # â’ˆð¤®.á© 
xn--0ug88o7471d.xn--jof45148n; \u200Câ’ˆð¤®.󢓋\u1A60; [C1, V6]; xn--0ug88o7471d.xn--jof45148n; ; ; # â’ˆð¤®.á© 
-â’ˆ\u200Cð«“󠀺。\u1A60ñ¤°µ\u200D; â’ˆ\u200Cð«“󠀺.\u1A60ñ¤°µ\u200D; [B1, C1, C2, P1, V5, V6]; xn--0ug78ol75wzcx4i.xn--jof95xex98m; ; xn--tsh4435fk263g.xn--jofz5294e; [B1, P1, V5, V6] # â’ˆð«“.á© 
-1.\u200Cð«“󠀺。\u1A60ñ¤°µ\u200D; 1.\u200Cð«“󠀺.\u1A60ñ¤°µ\u200D; [B1, C1, C2, P1, V5, V6]; 1.xn--0ug8853gk263g.xn--jof95xex98m; ; 1.xn--8w9c40377c.xn--jofz5294e; [B1, B3, P1, V5, V6] # 1.ð«“.á© 
+â’ˆ\u200Cð«“󠀺。\u1A60ñ¤°µ\u200D; â’ˆ\u200Cð«“󠀺.\u1A60ñ¤°µ\u200D; [B1, C1, C2, V5, V6]; xn--0ug78ol75wzcx4i.xn--jof95xex98m; ; xn--tsh4435fk263g.xn--jofz5294e; [B1, V5, V6] # â’ˆð«“.á© 
+1.\u200Cð«“󠀺。\u1A60ñ¤°µ\u200D; 1.\u200Cð«“󠀺.\u1A60ñ¤°µ\u200D; [B1, C1, C2, V5, V6]; 1.xn--0ug8853gk263g.xn--jof95xex98m; ; 1.xn--8w9c40377c.xn--jofz5294e; [B1, B3, V5, V6] # 1.ð«“.á© 
1.xn--8w9c40377c.xn--jofz5294e; 1.ð«“󠀺.\u1A60ñ¤°µ; [B1, B3, V5, V6]; 1.xn--8w9c40377c.xn--jofz5294e; ; ; # 1.ð«“.á© 
1.xn--0ug8853gk263g.xn--jof95xex98m; 1.\u200Cð«“󠀺.\u1A60ñ¤°µ\u200D; [B1, C1, C2, V5, V6]; 1.xn--0ug8853gk263g.xn--jof95xex98m; ; ; # 1.ð«“.á© 
xn--tsh4435fk263g.xn--jofz5294e; â’ˆð«“󠀺.\u1A60ñ¤°µ; [B1, V5, V6]; xn--tsh4435fk263g.xn--jofz5294e; ; ; # â’ˆð«“.á© 
xn--0ug78ol75wzcx4i.xn--jof95xex98m; â’ˆ\u200Cð«“󠀺.\u1A60ñ¤°µ\u200D; [B1, C1, C2, V5, V6]; xn--0ug78ol75wzcx4i.xn--jof95xex98m; ; ; # â’ˆð«“.á© 
-ð…µï½¡ðŸ«ðž€ˆä¬ºâ’ˆ; ð…µ.9𞀈䬺⒈; [P1, V6]; xn--3f1h.xn--9-ecp936non25a; ; ; # .9𞀈䬺⒈
-ð…µã€‚9𞀈䬺1.; ð…µ.9𞀈䬺1.; [P1, V6]; xn--3f1h.xn--91-030c1650n.; ; ; # .9𞀈䬺1.
+ð…µï½¡ðŸ«ðž€ˆä¬ºâ’ˆ; ð…µ.9𞀈䬺⒈; [V6]; xn--3f1h.xn--9-ecp936non25a; ; ; # .9𞀈䬺⒈
+ð…µã€‚9𞀈䬺1.; ð…µ.9𞀈䬺1.; [V6]; xn--3f1h.xn--91-030c1650n.; ; ; # .9𞀈䬺1.
xn--3f1h.xn--91-030c1650n.; ð…µ.9𞀈䬺1.; [V6]; xn--3f1h.xn--91-030c1650n.; ; ; # .9𞀈䬺1.
xn--3f1h.xn--9-ecp936non25a; ð…µ.9𞀈䬺⒈; [V6]; xn--3f1h.xn--9-ecp936non25a; ; ; # .9𞀈䬺⒈
-򡼺≯。盚\u0635; 򡼺≯.盚\u0635; [B5, B6, P1, V6]; xn--hdh30181h.xn--0gb7878c; ; ; # ≯.盚ص
-򡼺>\u0338。盚\u0635; 򡼺≯.盚\u0635; [B5, B6, P1, V6]; xn--hdh30181h.xn--0gb7878c; ; ; # ≯.盚ص
+򡼺≯。盚\u0635; 򡼺≯.盚\u0635; [B5, B6, V6]; xn--hdh30181h.xn--0gb7878c; ; ; # ≯.盚ص
+򡼺>\u0338。盚\u0635; 򡼺≯.盚\u0635; [B5, B6, V6]; xn--hdh30181h.xn--0gb7878c; ; ; # ≯.盚ص
xn--hdh30181h.xn--0gb7878c; 򡼺≯.盚\u0635; [B5, B6, V6]; xn--hdh30181h.xn--0gb7878c; ; ; # ≯.盚ص
--ñ¿°­\u05B4。-ó Šð¢¸â‰¯; -ñ¿°­\u05B4.-ó Šð¢¸â‰¯; [B1, P1, V3, V6]; xn----fgc06667m.xn----pgoy615he5y4i; ; ; # -Ö´.-≯
--ñ¿°­\u05B4。-ó Šð¢¸>\u0338; -ñ¿°­\u05B4.-ó Šð¢¸â‰¯; [B1, P1, V3, V6]; xn----fgc06667m.xn----pgoy615he5y4i; ; ; # -Ö´.-≯
+-ñ¿°­\u05B4。-ó Šð¢¸â‰¯; -ñ¿°­\u05B4.-ó Šð¢¸â‰¯; [B1, V3, V6]; xn----fgc06667m.xn----pgoy615he5y4i; ; ; # -Ö´.-≯
+-ñ¿°­\u05B4。-ó Šð¢¸>\u0338; -ñ¿°­\u05B4.-ó Šð¢¸â‰¯; [B1, V3, V6]; xn----fgc06667m.xn----pgoy615he5y4i; ; ; # -Ö´.-≯
xn----fgc06667m.xn----pgoy615he5y4i; -ñ¿°­\u05B4.-ó Šð¢¸â‰¯; [B1, V3, V6]; xn----fgc06667m.xn----pgoy615he5y4i; ; ; # -Ö´.-≯
-ó¿­“\u1B44\u200C\u0A4D.ð­›ñ³‹”; ó¿­“\u1B44\u200C\u0A4D.ð­›ñ³‹”; [B2, B3, B6, P1, V6]; xn--ybc997f6rd2n772c.xn--409c6100y; ; xn--ybc997fb5881a.xn--409c6100y; [B2, B3, P1, V6] # á­„à©.ð­›
-ó¿­“\u1B44\u200C\u0A4D.ð­›ñ³‹”; ; [B2, B3, B6, P1, V6]; xn--ybc997f6rd2n772c.xn--409c6100y; ; xn--ybc997fb5881a.xn--409c6100y; [B2, B3, P1, V6] # á­„à©.ð­›
+ó¿­“\u1B44\u200C\u0A4D.ð­›ñ³‹”; ó¿­“\u1B44\u200C\u0A4D.ð­›ñ³‹”; [B2, B3, B6, V6]; xn--ybc997f6rd2n772c.xn--409c6100y; ; xn--ybc997fb5881a.xn--409c6100y; [B2, B3, V6] # á­„à©.ð­›
+ó¿­“\u1B44\u200C\u0A4D.ð­›ñ³‹”; ; [B2, B3, B6, V6]; xn--ybc997f6rd2n772c.xn--409c6100y; ; xn--ybc997fb5881a.xn--409c6100y; [B2, B3, V6] # á­„à©.ð­›
xn--ybc997fb5881a.xn--409c6100y; ó¿­“\u1B44\u0A4D.ð­›ñ³‹”; [B2, B3, V6]; xn--ybc997fb5881a.xn--409c6100y; ; ; # á­„à©.ð­›
xn--ybc997f6rd2n772c.xn--409c6100y; ó¿­“\u1B44\u200C\u0A4D.ð­›ñ³‹”; [B2, B3, B6, V6]; xn--ybc997f6rd2n772c.xn--409c6100y; ; ; # á­„à©.ð­›
⾇.\u067D𞤴\u06BB\u200D; 舛.\u067D𞤴\u06BB\u200D; [B3, C2]; xn--8c1a.xn--2ib8jv19e6413b; ; xn--8c1a.xn--2ib8jn539l; [] # 舛.ٽ𞤴ڻ
@@ -5535,13 +5565,13 @@ xn--8c1a.xn--2ib8jn539l; 舛.\u067D𞤴\u06BB; ; xn--8c1a.xn--2ib8jn539l; ; ; #
舛.\u067D𞤒\u06BB; 舛.\u067D𞤴\u06BB; ; xn--8c1a.xn--2ib8jn539l; ; ; # 舛.ٽ𞤴ڻ
xn--8c1a.xn--2ib8jv19e6413b; 舛.\u067D𞤴\u06BB\u200D; [B3, C2]; xn--8c1a.xn--2ib8jv19e6413b; ; ; # 舛.ٽ𞤴ڻ
⾇.\u067D𞤒\u06BB\u200D; 舛.\u067D𞤴\u06BB\u200D; [B3, C2]; xn--8c1a.xn--2ib8jv19e6413b; ; xn--8c1a.xn--2ib8jn539l; [] # 舛.ٽ𞤴ڻ
-4򭆥。\u0767≯; 4򭆥.\u0767≯; [B1, B3, P1, V6]; xn--4-xn17i.xn--rpb459k; ; ; # 4.ݧ≯
-4򭆥。\u0767>\u0338; 4򭆥.\u0767≯; [B1, B3, P1, V6]; xn--4-xn17i.xn--rpb459k; ; ; # 4.ݧ≯
+4򭆥。\u0767≯; 4򭆥.\u0767≯; [B1, B3, V6]; xn--4-xn17i.xn--rpb459k; ; ; # 4.ݧ≯
+4򭆥。\u0767>\u0338; 4򭆥.\u0767≯; [B1, B3, V6]; xn--4-xn17i.xn--rpb459k; ; ; # 4.ݧ≯
xn--4-xn17i.xn--rpb459k; 4򭆥.\u0767≯; [B1, B3, V6]; xn--4-xn17i.xn--rpb459k; ; ; # 4.ݧ≯
-ð²”𞫨ñº¿‚硲.\u06AD; ð²”𞫨ñº¿‚硲.\u06AD; [B5, P1, V6]; xn--lcz1610fn78gk609a.xn--gkb; ; ; # 硲.Ú­
-ð²”𞫨ñº¿‚硲.\u06AD; ; [B5, P1, V6]; xn--lcz1610fn78gk609a.xn--gkb; ; ; # 硲.Ú­
+ð²”𞫨ñº¿‚硲.\u06AD; ð²”𞫨ñº¿‚硲.\u06AD; [B5, V6]; xn--lcz1610fn78gk609a.xn--gkb; ; ; # 硲.Ú­
+ð²”𞫨ñº¿‚硲.\u06AD; ; [B5, V6]; xn--lcz1610fn78gk609a.xn--gkb; ; ; # 硲.Ú­
xn--lcz1610fn78gk609a.xn--gkb; ð²”𞫨ñº¿‚硲.\u06AD; [B5, V6]; xn--lcz1610fn78gk609a.xn--gkb; ; ; # 硲.Ú­
-\u200C.\uFE08\u0666Ⴆ℮; \u200C.\u0666Ⴆ℮; [B1, C1, P1, V6]; xn--0ug.xn--fib263c0yn; ; .xn--fib263c0yn; [B1, P1, V6, A4_2] # .٦Ⴆ℮
+\u200C.\uFE08\u0666Ⴆ℮; \u200C.\u0666Ⴆ℮; [B1, C1, V6]; xn--0ug.xn--fib263c0yn; ; .xn--fib263c0yn; [B1, V6, A4_2] # .٦Ⴆ℮
\u200C.\uFE08\u0666ⴆ℮; \u200C.\u0666ⴆ℮; [B1, C1]; xn--0ug.xn--fib628k4li; ; .xn--fib628k4li; [B1, A4_2] # .٦ⴆ℮
.xn--fib628k4li; .\u0666ⴆ℮; [B1, X4_2]; .xn--fib628k4li; [B1, A4_2]; ; # .٦ⴆ℮
xn--0ug.xn--fib628k4li; \u200C.\u0666ⴆ℮; [B1, C1]; xn--0ug.xn--fib628k4li; ; ; # .٦ⴆ℮
@@ -5559,12 +5589,12 @@ xn--5jb.xn--xya149bpvp; \u06A3.\u0D4D\u200DÏŸ; [B1, V5]; xn--5jb.xn--xya149bpvp;
\u200C\u062D𑘿。\u0627\u0654ð®‚-è…; \u200C\u062D𑘿.\u0623ð®‚-è…; [B1, B2, B3, C1]; xn--sgb953kmi8o.xn----qmc5075grs9e; ; xn--sgb4140l.xn----qmc5075grs9e; [B2, B3] # ح𑘿.Ø£ð®‚-è…
xn--sgb4140l.xn----qmc5075grs9e; \u062D𑘿.\u0623ð®‚-è…; [B2, B3]; xn--sgb4140l.xn----qmc5075grs9e; ; ; # ح𑘿.Ø£ð®‚-è…
xn--sgb953kmi8o.xn----qmc5075grs9e; \u200C\u062D𑘿.\u0623ð®‚-è…; [B1, B2, B3, C1]; xn--sgb953kmi8o.xn----qmc5075grs9e; ; ; # ح𑘿.Ø£ð®‚-è…
--ò­·™\u066B纛。ðŸ›ñ­¤‡ðŸ„…; -ò­·™\u066B纛.3ñ­¤‡ðŸ„…; [B1, P1, V3, V6]; xn----vqc8143g0tt4i.xn--3-os1sn476y; ; ; # -٫纛.3🄅
--򭷙\u066B纛。3񭤇4,; -򭷙\u066B纛.3񭤇4,; [B1, P1, V3, V6]; xn----vqc8143g0tt4i.xn--34,-8787l; ; ; # -٫纛.34,
-xn----vqc8143g0tt4i.xn--34,-8787l; -򭷙\u066B纛.3񭤇4,; [B1, P1, V3, V6]; xn----vqc8143g0tt4i.xn--34,-8787l; ; ; # -٫纛.34,
+-ò­·™\u066B纛。ðŸ›ñ­¤‡ðŸ„…; -ò­·™\u066B纛.3ñ­¤‡ðŸ„…; [B1, V3, V6]; xn----vqc8143g0tt4i.xn--3-os1sn476y; ; ; # -٫纛.3🄅
+-򭷙\u066B纛。3񭤇4,; -򭷙\u066B纛.3񭤇4,; [B1, V3, V6]; xn----vqc8143g0tt4i.xn--34,-8787l; ; ; # -٫纛.34,
+xn----vqc8143g0tt4i.xn--34,-8787l; -򭷙\u066B纛.3񭤇4,; [B1, V3, V6]; xn----vqc8143g0tt4i.xn--34,-8787l; ; ; # -٫纛.34,
xn----vqc8143g0tt4i.xn--3-os1sn476y; -򭷙\u066B纛.3񭤇🄅; [B1, V3, V6]; xn----vqc8143g0tt4i.xn--3-os1sn476y; ; ; # -٫纛.3🄅
-🔔.Ⴂ\u07CC\u0BCDð‹®; 🔔.á‚¢\u07CC\u0BCDð‹®; [B1, B5, P1, V6]; xn--nv8h.xn--nsb46r83e8112a; ; ; # 🔔.Ⴂߌà¯ð‹®
-🔔.á‚¢\u07CC\u0BCDð‹®; ; [B1, B5, P1, V6]; xn--nv8h.xn--nsb46r83e8112a; ; ; # 🔔.Ⴂߌà¯ð‹®
+🔔.Ⴂ\u07CC\u0BCDð‹®; 🔔.á‚¢\u07CC\u0BCDð‹®; [B1, B5, V6]; xn--nv8h.xn--nsb46r83e8112a; ; ; # 🔔.Ⴂߌà¯ð‹®
+🔔.á‚¢\u07CC\u0BCDð‹®; ; [B1, B5, V6]; xn--nv8h.xn--nsb46r83e8112a; ; ; # 🔔.Ⴂߌà¯ð‹®
🔔.â´‚\u07CC\u0BCDð‹®; ; [B1, B5]; xn--nv8h.xn--nsb46rvz1b222p; ; ; # 🔔.ⴂߌà¯ð‹®
xn--nv8h.xn--nsb46rvz1b222p; 🔔.â´‚\u07CC\u0BCDð‹®; [B1, B5]; xn--nv8h.xn--nsb46rvz1b222p; ; ; # 🔔.ⴂߌà¯ð‹®
xn--nv8h.xn--nsb46r83e8112a; 🔔.á‚¢\u07CC\u0BCDð‹®; [B1, B5, V6]; xn--nv8h.xn--nsb46r83e8112a; ; ; # 🔔.Ⴂߌà¯ð‹®
@@ -5578,59 +5608,59 @@ xn--pkb56cn614d.xn----974i; ð¹¤\u07CA\u06B6.ð¨‚-; [B1, V3, V5]; xn--pkb56cn614
-ó …±0。\u17CF\u1DFD톇십; -0.\u17CF\u1DFD톇십; [V3, V5]; -0.xn--r4e872ah77nghm; ; ; # -0.áŸá·½í†‡ì‹­
-ó …±0。\u17CF\u1DFDá„ᅨᆪ십; -0.\u17CF\u1DFD톇십; [V3, V5]; -0.xn--r4e872ah77nghm; ; ; # -0.áŸá·½í†‡ì‹­
-0.xn--r4e872ah77nghm; -0.\u17CF\u1DFD톇십; [V3, V5]; -0.xn--r4e872ah77nghm; ; ; # -0.áŸá·½í†‡ì‹­
-ꡰ︒--。\u17CCéˆð¹¢ñ˜³®; ꡰ︒--.\u17CCéˆð¹¢ñ˜³®; [B1, B6, P1, V2, V3, V5, V6]; xn-----bk9hu24z.xn--o4e6836dpxudz0v1c; ; ; # ꡰ︒--.៌éˆð¹¢
-ꡰ。--。\u17CCéˆð¹¢ñ˜³®; ê¡°.--.\u17CCéˆð¹¢ñ˜³®; [B1, P1, V3, V5, V6]; xn--md9a.--.xn--o4e6836dpxudz0v1c; ; ; # ê¡°.--.៌éˆð¹¢
+ꡰ︒--。\u17CCéˆð¹¢ñ˜³®; ꡰ︒--.\u17CCéˆð¹¢ñ˜³®; [B1, B6, V2, V3, V5, V6]; xn-----bk9hu24z.xn--o4e6836dpxudz0v1c; ; ; # ꡰ︒--.៌éˆð¹¢
+ꡰ。--。\u17CCéˆð¹¢ñ˜³®; ê¡°.--.\u17CCéˆð¹¢ñ˜³®; [B1, V3, V5, V6]; xn--md9a.--.xn--o4e6836dpxudz0v1c; ; ; # ê¡°.--.៌éˆð¹¢
xn--md9a.--.xn--o4e6836dpxudz0v1c; ê¡°.--.\u17CCéˆð¹¢ñ˜³®; [B1, V3, V5, V6]; xn--md9a.--.xn--o4e6836dpxudz0v1c; ; ; # ê¡°.--.៌éˆð¹¢
xn-----bk9hu24z.xn--o4e6836dpxudz0v1c; ꡰ︒--.\u17CCéˆð¹¢ñ˜³®; [B1, B6, V2, V3, V5, V6]; xn-----bk9hu24z.xn--o4e6836dpxudz0v1c; ; ; # ꡰ︒--.៌éˆð¹¢
-\u115FႿႵრ。\u0B4D; \u115FႿႵრ.\u0B4D; [P1, V5, V6]; xn--tndt4hvw.xn--9ic; ; ; # ႿႵრ.à­
-\u115FႿႵრ。\u0B4D; \u115FႿႵრ.\u0B4D; [P1, V5, V6]; xn--tndt4hvw.xn--9ic; ; ; # ႿႵრ.à­
-\u115Fⴟⴕრ。\u0B4D; \u115Fⴟⴕრ.\u0B4D; [P1, V5, V6]; xn--1od7wz74eeb.xn--9ic; ; ; # ⴟⴕრ.à­
-\u115FႿႵᲠ。\u0B4D; \u115FႿႵრ.\u0B4D; [P1, V5, V6]; xn--tndt4hvw.xn--9ic; ; ; # ႿႵრ.à­
+\u115FႿႵრ。\u0B4D; \u115FႿႵრ.\u0B4D; [V5, V6]; xn--tndt4hvw.xn--9ic; ; ; # ႿႵრ.à­
+\u115FႿႵრ。\u0B4D; \u115FႿႵრ.\u0B4D; [V5, V6]; xn--tndt4hvw.xn--9ic; ; ; # ႿႵრ.à­
+\u115Fⴟⴕრ。\u0B4D; \u115Fⴟⴕრ.\u0B4D; [V5, V6]; xn--1od7wz74eeb.xn--9ic; ; ; # ⴟⴕრ.à­
+\u115FႿႵᲠ。\u0B4D; \u115FႿႵრ.\u0B4D; [V5, V6]; xn--tndt4hvw.xn--9ic; ; ; # ႿႵრ.à­
xn--tndt4hvw.xn--9ic; \u115FႿႵრ.\u0B4D; [V5, V6]; xn--tndt4hvw.xn--9ic; ; ; # ႿႵრ.à­
xn--1od7wz74eeb.xn--9ic; \u115Fⴟⴕრ.\u0B4D; [V5, V6]; xn--1od7wz74eeb.xn--9ic; ; ; # ⴟⴕრ.à­
-\u115Fⴟⴕრ。\u0B4D; \u115Fⴟⴕრ.\u0B4D; [P1, V5, V6]; xn--1od7wz74eeb.xn--9ic; ; ; # ⴟⴕრ.à­
-\u115FႿႵᲠ。\u0B4D; \u115FႿႵრ.\u0B4D; [P1, V5, V6]; xn--tndt4hvw.xn--9ic; ; ; # ႿႵრ.à­
-\u115FႿⴕრ。\u0B4D; \u115FႿⴕრ.\u0B4D; [P1, V5, V6]; xn--3nd0etsm92g.xn--9ic; ; ; # Ⴟⴕრ.à­
+\u115Fⴟⴕრ。\u0B4D; \u115Fⴟⴕრ.\u0B4D; [V5, V6]; xn--1od7wz74eeb.xn--9ic; ; ; # ⴟⴕრ.à­
+\u115FႿႵᲠ。\u0B4D; \u115FႿႵრ.\u0B4D; [V5, V6]; xn--tndt4hvw.xn--9ic; ; ; # ႿႵრ.à­
+\u115FႿⴕრ。\u0B4D; \u115FႿⴕრ.\u0B4D; [V5, V6]; xn--3nd0etsm92g.xn--9ic; ; ; # Ⴟⴕრ.à­
xn--3nd0etsm92g.xn--9ic; \u115FႿⴕრ.\u0B4D; [V5, V6]; xn--3nd0etsm92g.xn--9ic; ; ; # Ⴟⴕრ.à­
-\u115FႿⴕრ。\u0B4D; \u115FႿⴕრ.\u0B4D; [P1, V5, V6]; xn--3nd0etsm92g.xn--9ic; ; ; # Ⴟⴕრ.à­
-🄃ð¹ .\u0664ó …‡; 🄃ð¹ .\u0664; [B1, P1, V6]; xn--7n0d1189a.xn--dib; ; ; # 🄃ð¹ .Ù¤
-2,ð¹ .\u0664ó …‡; 2,ð¹ .\u0664; [B1, P1, V6]; xn--2,-5g3o.xn--dib; ; ; # 2,ð¹ .Ù¤
-xn--2,-5g3o.xn--dib; 2,ð¹ .\u0664; [B1, P1, V6]; xn--2,-5g3o.xn--dib; ; ; # 2,ð¹ .Ù¤
+\u115FႿⴕრ。\u0B4D; \u115FႿⴕრ.\u0B4D; [V5, V6]; xn--3nd0etsm92g.xn--9ic; ; ; # Ⴟⴕრ.à­
+🄃ð¹ .\u0664ó …‡; 🄃ð¹ .\u0664; [B1, V6]; xn--7n0d1189a.xn--dib; ; ; # 🄃ð¹ .Ù¤
+2,ð¹ .\u0664ó …‡; 2,ð¹ .\u0664; [B1, V6]; xn--2,-5g3o.xn--dib; ; ; # 2,ð¹ .Ù¤
+xn--2,-5g3o.xn--dib; 2,ð¹ .\u0664; [B1, V6]; xn--2,-5g3o.xn--dib; ; ; # 2,ð¹ .Ù¤
xn--7n0d1189a.xn--dib; 🄃ð¹ .\u0664; [B1, V6]; xn--7n0d1189a.xn--dib; ; ; # 🄃ð¹ .Ù¤
-򻲼\u200C\uFC5B.\u07D2\u0848\u1BF3; 򻲼\u200C\u0630\u0670.\u07D2\u0848\u1BF3; [B2, B3, B5, B6, C1, P1, V6]; xn--vgb2kq00fl213y.xn--tsb0vz43c; ; xn--vgb2kp1223g.xn--tsb0vz43c; [B2, B3, B5, B6, P1, V6] # ذٰ.ߒࡈ᯳
-򻲼\u200C\u0630\u0670.\u07D2\u0848\u1BF3; ; [B2, B3, B5, B6, C1, P1, V6]; xn--vgb2kq00fl213y.xn--tsb0vz43c; ; xn--vgb2kp1223g.xn--tsb0vz43c; [B2, B3, B5, B6, P1, V6] # ذٰ.ߒࡈ᯳
+򻲼\u200C\uFC5B.\u07D2\u0848\u1BF3; 򻲼\u200C\u0630\u0670.\u07D2\u0848\u1BF3; [B2, B3, B5, B6, C1, V6]; xn--vgb2kq00fl213y.xn--tsb0vz43c; ; xn--vgb2kp1223g.xn--tsb0vz43c; [B2, B3, B5, B6, V6] # ذٰ.ߒࡈ᯳
+򻲼\u200C\u0630\u0670.\u07D2\u0848\u1BF3; ; [B2, B3, B5, B6, C1, V6]; xn--vgb2kq00fl213y.xn--tsb0vz43c; ; xn--vgb2kp1223g.xn--tsb0vz43c; [B2, B3, B5, B6, V6] # ذٰ.ߒࡈ᯳
xn--vgb2kp1223g.xn--tsb0vz43c; 򻲼\u0630\u0670.\u07D2\u0848\u1BF3; [B2, B3, B5, B6, V6]; xn--vgb2kp1223g.xn--tsb0vz43c; ; ; # ذٰ.ߒࡈ᯳
xn--vgb2kq00fl213y.xn--tsb0vz43c; 򻲼\u200C\u0630\u0670.\u07D2\u0848\u1BF3; [B2, B3, B5, B6, C1, V6]; xn--vgb2kq00fl213y.xn--tsb0vz43c; ; ; # ذٰ.ߒࡈ᯳
-\u200D\u200D𞵪\u200C。ᡘ𑲭\u17B5; \u200D\u200D𞵪\u200C.ᡘ𑲭\u17B5; [B1, C1, C2, P1, V6]; xn--0ugba05538b.xn--03e93aq365d; ; xn--l96h.xn--03e93aq365d; [P1, V6] # .ᡘ𑲭
+\u200D\u200D𞵪\u200C。ᡘ𑲭\u17B5; \u200D\u200D𞵪\u200C.ᡘ𑲭\u17B5; [B1, C1, C2, V6]; xn--0ugba05538b.xn--03e93aq365d; ; xn--l96h.xn--03e93aq365d; [V6] # .ᡘ𑲭
xn--l96h.xn--03e93aq365d; 𞵪.ᡘ𑲭\u17B5; [V6]; xn--l96h.xn--03e93aq365d; ; ; # .ᡘ𑲭
xn--0ugba05538b.xn--03e93aq365d; \u200D\u200D𞵪\u200C.ᡘ𑲭\u17B5; [B1, C1, C2, V6]; xn--0ugba05538b.xn--03e93aq365d; ; ; # .ᡘ𑲭
-𞷻。⚄ñ—‘‡ð‘¿; ðž·».âš„ñ—‘‡ð‘¿; [B1, P1, V6]; xn--qe7h.xn--c7h2966f7so4a; ; ; # .âš„ð‘¿
+𞷻。⚄ñ—‘‡ð‘¿; ðž·».âš„ñ—‘‡ð‘¿; [B1, V6]; xn--qe7h.xn--c7h2966f7so4a; ; ; # .âš„ð‘¿
xn--qe7h.xn--c7h2966f7so4a; ðž·».âš„ñ—‘‡ð‘¿; [B1, V6]; xn--qe7h.xn--c7h2966f7so4a; ; ; # .âš„ð‘¿
-\uA8C4≠.𞠨\u0667; \uA8C4≠.𞠨\u0667; [B1, P1, V5, V6]; xn--1chy504c.xn--gib1777v; ; ; # ꣄≠.𞠨٧
-\uA8C4=\u0338.𞠨\u0667; \uA8C4≠.𞠨\u0667; [B1, P1, V5, V6]; xn--1chy504c.xn--gib1777v; ; ; # ꣄≠.𞠨٧
-\uA8C4≠.𞠨\u0667; ; [B1, P1, V5, V6]; xn--1chy504c.xn--gib1777v; ; ; # ꣄≠.𞠨٧
-\uA8C4=\u0338.𞠨\u0667; \uA8C4≠.𞠨\u0667; [B1, P1, V5, V6]; xn--1chy504c.xn--gib1777v; ; ; # ꣄≠.𞠨٧
-xn--1chy504c.xn--gib1777v; \uA8C4≠.𞠨\u0667; [B1, V5, V6]; xn--1chy504c.xn--gib1777v; ; ; # ꣄≠.𞠨٧
+\uA8C4≠.𞠨\u0667; \uA8C4≠.𞠨\u0667; [B1, V5]; xn--1chy504c.xn--gib1777v; ; ; # ꣄≠.𞠨٧
+\uA8C4=\u0338.𞠨\u0667; \uA8C4≠.𞠨\u0667; [B1, V5]; xn--1chy504c.xn--gib1777v; ; ; # ꣄≠.𞠨٧
+\uA8C4≠.𞠨\u0667; ; [B1, V5]; xn--1chy504c.xn--gib1777v; ; ; # ꣄≠.𞠨٧
+\uA8C4=\u0338.𞠨\u0667; \uA8C4≠.𞠨\u0667; [B1, V5]; xn--1chy504c.xn--gib1777v; ; ; # ꣄≠.𞠨٧
+xn--1chy504c.xn--gib1777v; \uA8C4≠.𞠨\u0667; [B1, V5]; xn--1chy504c.xn--gib1777v; ; ; # ꣄≠.𞠨٧
ðŸ›ð†ª\uA8C4。\uA8EA-; 3\uA8C4ð†ª.\uA8EA-; [V3, V5]; xn--3-sl4eu679e.xn----xn4e; ; ; # 3꣄ð†ª.꣪-
ðŸ›\uA8C4ð†ªï½¡\uA8EA-; 3\uA8C4ð†ª.\uA8EA-; [V3, V5]; xn--3-sl4eu679e.xn----xn4e; ; ; # 3꣄ð†ª.꣪-
3\uA8C4ð†ªã€‚\uA8EA-; 3\uA8C4ð†ª.\uA8EA-; [V3, V5]; xn--3-sl4eu679e.xn----xn4e; ; ; # 3꣄ð†ª.꣪-
xn--3-sl4eu679e.xn----xn4e; 3\uA8C4ð†ª.\uA8EA-; [V3, V5]; xn--3-sl4eu679e.xn----xn4e; ; ; # 3꣄ð†ª.꣪-
-\u075F\u1BA2\u103AႧ.4; ; [B1, B2, B3, P1, V6]; xn--jpb846bmjw88a.4; ; ; # ݟᮢ်Ⴇ.4
+\u075F\u1BA2\u103AႧ.4; ; [B1, B2, B3, V6]; xn--jpb846bmjw88a.4; ; ; # ݟᮢ်Ⴇ.4
\u075F\u1BA2\u103Aⴇ.4; ; [B1, B2, B3]; xn--jpb846bjzj7pr.4; ; ; # ݟᮢ်ⴇ.4
xn--jpb846bjzj7pr.4; \u075F\u1BA2\u103Aⴇ.4; [B1, B2, B3]; xn--jpb846bjzj7pr.4; ; ; # ݟᮢ်ⴇ.4
xn--jpb846bmjw88a.4; \u075F\u1BA2\u103AႧ.4; [B1, B2, B3, V6]; xn--jpb846bmjw88a.4; ; ; # ݟᮢ်Ⴇ.4
-ᄹ。\u0ECA򠯤󠄞; ᄹ.\u0ECA򠯤; [P1, V5, V6]; xn--lrd.xn--s8c05302k; ; ; # ᄹ.໊
-ᄹ。\u0ECA򠯤󠄞; ᄹ.\u0ECA򠯤; [P1, V5, V6]; xn--lrd.xn--s8c05302k; ; ; # ᄹ.໊
+ᄹ。\u0ECA򠯤󠄞; ᄹ.\u0ECA򠯤; [V5, V6]; xn--lrd.xn--s8c05302k; ; ; # ᄹ.໊
+ᄹ。\u0ECA򠯤󠄞; ᄹ.\u0ECA򠯤; [V5, V6]; xn--lrd.xn--s8c05302k; ; ; # ᄹ.໊
xn--lrd.xn--s8c05302k; ᄹ.\u0ECA򠯤; [V5, V6]; xn--lrd.xn--s8c05302k; ; ; # ᄹ.໊
-Ⴆò»¢©ï¼Žó †¡\uFE09ðž¤; Ⴆò»¢©.𞤯; [P1, V6]; xn--end82983m.xn--ne6h; ; ; # Ⴆ.𞤯
-Ⴆò»¢©.󠆡\uFE09ðž¤; Ⴆò»¢©.𞤯; [P1, V6]; xn--end82983m.xn--ne6h; ; ; # Ⴆ.𞤯
-ⴆ򻢩.󠆡\uFE09𞤯; ⴆ򻢩.𞤯; [P1, V6]; xn--xkjw3965g.xn--ne6h; ; ; # ⴆ.𞤯
+Ⴆò»¢©ï¼Žó †¡\uFE09ðž¤; Ⴆò»¢©.𞤯; [V6]; xn--end82983m.xn--ne6h; ; ; # Ⴆ.𞤯
+Ⴆò»¢©.󠆡\uFE09ðž¤; Ⴆò»¢©.𞤯; [V6]; xn--end82983m.xn--ne6h; ; ; # Ⴆ.𞤯
+ⴆ򻢩.󠆡\uFE09𞤯; ⴆ򻢩.𞤯; [V6]; xn--xkjw3965g.xn--ne6h; ; ; # ⴆ.𞤯
xn--xkjw3965g.xn--ne6h; ⴆ򻢩.𞤯; [V6]; xn--xkjw3965g.xn--ne6h; ; ; # ⴆ.𞤯
xn--end82983m.xn--ne6h; Ⴆ򻢩.𞤯; [V6]; xn--end82983m.xn--ne6h; ; ; # Ⴆ.𞤯
-ⴆ򻢩.󠆡\uFE09𞤯; ⴆ򻢩.𞤯; [P1, V6]; xn--xkjw3965g.xn--ne6h; ; ; # ⴆ.𞤯
-â´†ò»¢©.󠆡\uFE09ðž¤; â´†ò»¢©.𞤯; [P1, V6]; xn--xkjw3965g.xn--ne6h; ; ; # â´†.𞤯
-â´†ò»¢©ï¼Žó †¡\uFE09ðž¤; â´†ò»¢©.𞤯; [P1, V6]; xn--xkjw3965g.xn--ne6h; ; ; # â´†.𞤯
-ß\u080B︒\u067B.帼F∬\u200C; ß\u080B︒\u067B.帼f∫∫\u200C; [B5, B6, C1, P1, V6]; xn--zca68zj8ac956c.xn--f-sgn48ga6997e; ; xn--ss-k0d31nu121d.xn--f-tcoa9162d; [B5, B6, P1, V6] # ßࠋ︒ٻ.帼f∫∫
+ⴆ򻢩.󠆡\uFE09𞤯; ⴆ򻢩.𞤯; [V6]; xn--xkjw3965g.xn--ne6h; ; ; # ⴆ.𞤯
+â´†ò»¢©.󠆡\uFE09ðž¤; â´†ò»¢©.𞤯; [V6]; xn--xkjw3965g.xn--ne6h; ; ; # â´†.𞤯
+â´†ò»¢©ï¼Žó †¡\uFE09ðž¤; â´†ò»¢©.𞤯; [V6]; xn--xkjw3965g.xn--ne6h; ; ; # â´†.𞤯
+ß\u080B︒\u067B.帼F∬\u200C; ß\u080B︒\u067B.帼f∫∫\u200C; [B5, B6, C1, V6]; xn--zca68zj8ac956c.xn--f-sgn48ga6997e; ; xn--ss-k0d31nu121d.xn--f-tcoa9162d; [B5, B6, V6] # ßࠋ︒ٻ.帼f∫∫
ß\u080B。\u067B.帼F∫∫\u200C; ß\u080B.\u067B.帼f∫∫\u200C; [B5, B6, C1]; xn--zca687a.xn--0ib.xn--f-sgn48ga6997e; ; xn--ss-uze.xn--0ib.xn--f-tcoa9162d; [B5, B6] # ßࠋ.ٻ.帼f∫∫
ß\u080B。\u067B.帼f∫∫\u200C; ß\u080B.\u067B.帼f∫∫\u200C; [B5, B6, C1]; xn--zca687a.xn--0ib.xn--f-sgn48ga6997e; ; xn--ss-uze.xn--0ib.xn--f-tcoa9162d; [B5, B6] # ßࠋ.ٻ.帼f∫∫
SS\u080B。\u067B.帼F∫∫\u200C; ss\u080B.\u067B.帼f∫∫\u200C; [B5, B6, C1]; xn--ss-uze.xn--0ib.xn--f-sgn48ga6997e; ; xn--ss-uze.xn--0ib.xn--f-tcoa9162d; [B5, B6] # ssࠋ.ٻ.帼f∫∫
@@ -5639,114 +5669,114 @@ Ss\u080B。\u067B.帼F∫∫\u200C; ss\u080B.\u067B.帼f∫∫\u200C; [B5, B6, C
xn--ss-uze.xn--0ib.xn--f-tcoa9162d; ss\u080B.\u067B.帼f∫∫; [B5, B6]; xn--ss-uze.xn--0ib.xn--f-tcoa9162d; ; ; # ssࠋ.ٻ.帼f∫∫
xn--ss-uze.xn--0ib.xn--f-sgn48ga6997e; ss\u080B.\u067B.帼f∫∫\u200C; [B5, B6, C1]; xn--ss-uze.xn--0ib.xn--f-sgn48ga6997e; ; ; # ssࠋ.ٻ.帼f∫∫
xn--zca687a.xn--0ib.xn--f-sgn48ga6997e; ß\u080B.\u067B.帼f∫∫\u200C; [B5, B6, C1]; xn--zca687a.xn--0ib.xn--f-sgn48ga6997e; ; ; # ßࠋ.ٻ.帼f∫∫
-ß\u080B︒\u067B.帼f∬\u200C; ß\u080B︒\u067B.帼f∫∫\u200C; [B5, B6, C1, P1, V6]; xn--zca68zj8ac956c.xn--f-sgn48ga6997e; ; xn--ss-k0d31nu121d.xn--f-tcoa9162d; [B5, B6, P1, V6] # ßࠋ︒ٻ.帼f∫∫
-SS\u080B︒\u067B.帼F∬\u200C; ss\u080B︒\u067B.帼f∫∫\u200C; [B5, B6, C1, P1, V6]; xn--ss-k0d31nu121d.xn--f-sgn48ga6997e; ; xn--ss-k0d31nu121d.xn--f-tcoa9162d; [B5, B6, P1, V6] # ssࠋ︒ٻ.帼f∫∫
-ss\u080B︒\u067B.帼f∬\u200C; ss\u080B︒\u067B.帼f∫∫\u200C; [B5, B6, C1, P1, V6]; xn--ss-k0d31nu121d.xn--f-sgn48ga6997e; ; xn--ss-k0d31nu121d.xn--f-tcoa9162d; [B5, B6, P1, V6] # ssࠋ︒ٻ.帼f∫∫
-Ss\u080B︒\u067B.帼F∬\u200C; ss\u080B︒\u067B.帼f∫∫\u200C; [B5, B6, C1, P1, V6]; xn--ss-k0d31nu121d.xn--f-sgn48ga6997e; ; xn--ss-k0d31nu121d.xn--f-tcoa9162d; [B5, B6, P1, V6] # ssࠋ︒ٻ.帼f∫∫
+ß\u080B︒\u067B.帼f∬\u200C; ß\u080B︒\u067B.帼f∫∫\u200C; [B5, B6, C1, V6]; xn--zca68zj8ac956c.xn--f-sgn48ga6997e; ; xn--ss-k0d31nu121d.xn--f-tcoa9162d; [B5, B6, V6] # ßࠋ︒ٻ.帼f∫∫
+SS\u080B︒\u067B.帼F∬\u200C; ss\u080B︒\u067B.帼f∫∫\u200C; [B5, B6, C1, V6]; xn--ss-k0d31nu121d.xn--f-sgn48ga6997e; ; xn--ss-k0d31nu121d.xn--f-tcoa9162d; [B5, B6, V6] # ssࠋ︒ٻ.帼f∫∫
+ss\u080B︒\u067B.帼f∬\u200C; ss\u080B︒\u067B.帼f∫∫\u200C; [B5, B6, C1, V6]; xn--ss-k0d31nu121d.xn--f-sgn48ga6997e; ; xn--ss-k0d31nu121d.xn--f-tcoa9162d; [B5, B6, V6] # ssࠋ︒ٻ.帼f∫∫
+Ss\u080B︒\u067B.帼F∬\u200C; ss\u080B︒\u067B.帼f∫∫\u200C; [B5, B6, C1, V6]; xn--ss-k0d31nu121d.xn--f-sgn48ga6997e; ; xn--ss-k0d31nu121d.xn--f-tcoa9162d; [B5, B6, V6] # ssࠋ︒ٻ.帼f∫∫
xn--ss-k0d31nu121d.xn--f-tcoa9162d; ss\u080B︒\u067B.帼f∫∫; [B5, B6, V6]; xn--ss-k0d31nu121d.xn--f-tcoa9162d; ; ; # ssࠋ︒ٻ.帼f∫∫
xn--ss-k0d31nu121d.xn--f-sgn48ga6997e; ss\u080B︒\u067B.帼f∫∫\u200C; [B5, B6, C1, V6]; xn--ss-k0d31nu121d.xn--f-sgn48ga6997e; ; ; # ssࠋ︒ٻ.帼f∫∫
xn--zca68zj8ac956c.xn--f-sgn48ga6997e; ß\u080B︒\u067B.帼f∫∫\u200C; [B5, B6, C1, V6]; xn--zca68zj8ac956c.xn--f-sgn48ga6997e; ; ; # ßࠋ︒ٻ.帼f∫∫
-󘪗。ð¹´ðž¨Œ\u200D; 󘪗.ð¹´ðž¨Œ\u200D; [B1, C2, P1, V6]; xn--8l83e.xn--1ug4105gsxwf; ; xn--8l83e.xn--so0dw168a; [B1, P1, V6] # .ð¹´
-󘪗。ð¹´ðž¨Œ\u200D; 󘪗.ð¹´ðž¨Œ\u200D; [B1, C2, P1, V6]; xn--8l83e.xn--1ug4105gsxwf; ; xn--8l83e.xn--so0dw168a; [B1, P1, V6] # .ð¹´
+󘪗。ð¹´ðž¨Œ\u200D; 󘪗.ð¹´ðž¨Œ\u200D; [B1, C2, V6]; xn--8l83e.xn--1ug4105gsxwf; ; xn--8l83e.xn--so0dw168a; [B1, V6] # .ð¹´
+󘪗。ð¹´ðž¨Œ\u200D; 󘪗.ð¹´ðž¨Œ\u200D; [B1, C2, V6]; xn--8l83e.xn--1ug4105gsxwf; ; xn--8l83e.xn--so0dw168a; [B1, V6] # .ð¹´
xn--8l83e.xn--so0dw168a; 󘪗.ð¹´ðž¨Œ; [B1, V6]; xn--8l83e.xn--so0dw168a; ; ; # .ð¹´
xn--8l83e.xn--1ug4105gsxwf; 󘪗.ð¹´ðž¨Œ\u200D; [B1, C2, V6]; xn--8l83e.xn--1ug4105gsxwf; ; ; # .ð¹´
-ñ—›¨.ò…Ÿ¢ðŸ¨\uA8C4; ñ—›¨.ò…Ÿ¢6\uA8C4; [P1, V6]; xn--mi60a.xn--6-sl4es8023c; ; ; # .6꣄
-񗛨.򅟢6\uA8C4; ; [P1, V6]; xn--mi60a.xn--6-sl4es8023c; ; ; # .6꣄
+ñ—›¨.ò…Ÿ¢ðŸ¨\uA8C4; ñ—›¨.ò…Ÿ¢6\uA8C4; [V6]; xn--mi60a.xn--6-sl4es8023c; ; ; # .6꣄
+񗛨.򅟢6\uA8C4; ; [V6]; xn--mi60a.xn--6-sl4es8023c; ; ; # .6꣄
xn--mi60a.xn--6-sl4es8023c; 񗛨.򅟢6\uA8C4; [V6]; xn--mi60a.xn--6-sl4es8023c; ; ; # .6꣄
-\u1AB2\uFD8E。-۹ႱႨ; \u1AB2\u0645\u062E\u062C.-۹ႱႨ; [B1, P1, V3, V5, V6]; xn--rgbd2e831i.xn----zyc155e9a; ; ; # ᪲مخج.-۹ႱႨ
-\u1AB2\u0645\u062E\u062C。-۹ႱႨ; \u1AB2\u0645\u062E\u062C.-۹ႱႨ; [B1, P1, V3, V5, V6]; xn--rgbd2e831i.xn----zyc155e9a; ; ; # ᪲مخج.-۹ႱႨ
+\u1AB2\uFD8E。-۹ႱႨ; \u1AB2\u0645\u062E\u062C.-۹ႱႨ; [B1, V3, V5, V6]; xn--rgbd2e831i.xn----zyc155e9a; ; ; # ᪲مخج.-۹ႱႨ
+\u1AB2\u0645\u062E\u062C。-۹ႱႨ; \u1AB2\u0645\u062E\u062C.-۹ႱႨ; [B1, V3, V5, V6]; xn--rgbd2e831i.xn----zyc155e9a; ; ; # ᪲مخج.-۹ႱႨ
\u1AB2\u0645\u062E\u062C。-۹ⴑⴈ; \u1AB2\u0645\u062E\u062C.-۹ⴑⴈ; [B1, V3, V5]; xn--rgbd2e831i.xn----zyc3430a9a; ; ; # ᪲مخج.-۹ⴑⴈ
xn--rgbd2e831i.xn----zyc3430a9a; \u1AB2\u0645\u062E\u062C.-۹ⴑⴈ; [B1, V3, V5]; xn--rgbd2e831i.xn----zyc3430a9a; ; ; # ᪲مخج.-۹ⴑⴈ
xn--rgbd2e831i.xn----zyc155e9a; \u1AB2\u0645\u062E\u062C.-۹ႱႨ; [B1, V3, V5, V6]; xn--rgbd2e831i.xn----zyc155e9a; ; ; # ᪲مخج.-۹ႱႨ
\u1AB2\uFD8E。-۹ⴑⴈ; \u1AB2\u0645\u062E\u062C.-۹ⴑⴈ; [B1, V3, V5]; xn--rgbd2e831i.xn----zyc3430a9a; ; ; # ᪲مخج.-۹ⴑⴈ
-\u1AB2\u0645\u062E\u062C。-۹Ⴑⴈ; \u1AB2\u0645\u062E\u062C.-۹Ⴑⴈ; [B1, P1, V3, V5, V6]; xn--rgbd2e831i.xn----zyc875efr3a; ; ; # ᪲مخج.-۹Ⴑⴈ
+\u1AB2\u0645\u062E\u062C。-۹Ⴑⴈ; \u1AB2\u0645\u062E\u062C.-۹Ⴑⴈ; [B1, V3, V5, V6]; xn--rgbd2e831i.xn----zyc875efr3a; ; ; # ᪲مخج.-۹Ⴑⴈ
xn--rgbd2e831i.xn----zyc875efr3a; \u1AB2\u0645\u062E\u062C.-۹Ⴑⴈ; [B1, V3, V5, V6]; xn--rgbd2e831i.xn----zyc875efr3a; ; ; # ᪲مخج.-۹Ⴑⴈ
-\u1AB2\uFD8E。-۹Ⴑⴈ; \u1AB2\u0645\u062E\u062C.-۹Ⴑⴈ; [B1, P1, V3, V5, V6]; xn--rgbd2e831i.xn----zyc875efr3a; ; ; # ᪲مخج.-۹Ⴑⴈ
-𞤤.-\u08A3︒; 𞤤.-\u08A3︒; [B1, P1, V3, V6]; xn--ce6h.xn----cod7069p; ; ; # 𞤤.-ࢣ︒
+\u1AB2\uFD8E。-۹Ⴑⴈ; \u1AB2\u0645\u062E\u062C.-۹Ⴑⴈ; [B1, V3, V5, V6]; xn--rgbd2e831i.xn----zyc875efr3a; ; ; # ᪲مخج.-۹Ⴑⴈ
+𞤤.-\u08A3︒; 𞤤.-\u08A3︒; [B1, V3, V6]; xn--ce6h.xn----cod7069p; ; ; # 𞤤.-ࢣ︒
𞤤.-\u08A3。; 𞤤.-\u08A3.; [B1, V3]; xn--ce6h.xn----cod.; ; ; # 𞤤.-ࢣ.
𞤂.-\u08A3。; 𞤤.-\u08A3.; [B1, V3]; xn--ce6h.xn----cod.; ; ; # 𞤤.-ࢣ.
xn--ce6h.xn----cod.; 𞤤.-\u08A3.; [B1, V3]; xn--ce6h.xn----cod.; ; ; # 𞤤.-ࢣ.
-𞤂.-\u08A3︒; 𞤤.-\u08A3︒; [B1, P1, V3, V6]; xn--ce6h.xn----cod7069p; ; ; # 𞤤.-ࢣ︒
+𞤂.-\u08A3︒; 𞤤.-\u08A3︒; [B1, V3, V6]; xn--ce6h.xn----cod7069p; ; ; # 𞤤.-ࢣ︒
xn--ce6h.xn----cod7069p; 𞤤.-\u08A3︒; [B1, V3, V6]; xn--ce6h.xn----cod7069p; ; ; # 𞤤.-ࢣ︒
\u200Cðº¨.\u0859--; ; [B1, C1, V3, V5]; xn--0ug7905g.xn-----h6e; ; xn--9p0d.xn-----h6e; [B1, V3, V5] # ðº¨.à¡™--
xn--9p0d.xn-----h6e; ðº¨.\u0859--; [B1, V3, V5]; xn--9p0d.xn-----h6e; ; ; # ðº¨.à¡™--
xn--0ug7905g.xn-----h6e; \u200Cðº¨.\u0859--; [B1, C1, V3, V5]; xn--0ug7905g.xn-----h6e; ; ; # ðº¨.à¡™--
-ð‹¸ó®˜‹áƒ‚.á‚¡; ; [P1, V6]; xn--6nd5215jr2u0h.xn--8md; ; ; # ð‹¸áƒ‚.á‚¡
-ð‹¸ó®˜‹â´¢.â´; ; [P1, V6]; xn--qlj1559dr224h.xn--skj; ; ; # ð‹¸â´¢.â´
-ð‹¸ó®˜‹áƒ‚.â´; ; [P1, V6]; xn--6nd5215jr2u0h.xn--skj; ; ; # ð‹¸áƒ‚.â´
+ð‹¸ó®˜‹áƒ‚.á‚¡; ; [V6]; xn--6nd5215jr2u0h.xn--8md; ; ; # ð‹¸áƒ‚.á‚¡
+ð‹¸ó®˜‹â´¢.â´; ; [V6]; xn--qlj1559dr224h.xn--skj; ; ; # ð‹¸â´¢.â´
+ð‹¸ó®˜‹áƒ‚.â´; ; [V6]; xn--6nd5215jr2u0h.xn--skj; ; ; # ð‹¸áƒ‚.â´
xn--6nd5215jr2u0h.xn--skj; ð‹¸ó®˜‹áƒ‚.â´; [V6]; xn--6nd5215jr2u0h.xn--skj; ; ; # ð‹¸áƒ‚.â´
xn--qlj1559dr224h.xn--skj; ð‹¸ó®˜‹â´¢.â´; [V6]; xn--qlj1559dr224h.xn--skj; ; ; # ð‹¸â´¢.â´
xn--6nd5215jr2u0h.xn--8md; ð‹¸ó®˜‹áƒ‚.á‚¡; [V6]; xn--6nd5215jr2u0h.xn--8md; ; ; # ð‹¸áƒ‚.á‚¡
-񗑿\uA806₄򩞆。𲩧󠒹ς; 񗑿\uA8064򩞆.𲩧󠒹ς; [P1, V6]; xn--4-w93ej7463a9io5a.xn--3xa51142bk3f0d; ; xn--4-w93ej7463a9io5a.xn--4xa31142bk3f0d; # ꠆4.ς
-񗑿\uA8064򩞆。𲩧󠒹ς; 񗑿\uA8064򩞆.𲩧󠒹ς; [P1, V6]; xn--4-w93ej7463a9io5a.xn--3xa51142bk3f0d; ; xn--4-w93ej7463a9io5a.xn--4xa31142bk3f0d; # ꠆4.ς
-񗑿\uA8064򩞆。𲩧󠒹Σ; 񗑿\uA8064򩞆.𲩧󠒹σ; [P1, V6]; xn--4-w93ej7463a9io5a.xn--4xa31142bk3f0d; ; ; # ꠆4.σ
-񗑿\uA8064򩞆。𲩧󠒹σ; 񗑿\uA8064򩞆.𲩧󠒹σ; [P1, V6]; xn--4-w93ej7463a9io5a.xn--4xa31142bk3f0d; ; ; # ꠆4.σ
+񗑿\uA806₄򩞆。𲩧󠒹ς; 񗑿\uA8064򩞆.𲩧󠒹ς; [V6]; xn--4-w93ej7463a9io5a.xn--3xa51142bk3f0d; ; xn--4-w93ej7463a9io5a.xn--4xa31142bk3f0d; # ꠆4.ς
+񗑿\uA8064򩞆。𲩧󠒹ς; 񗑿\uA8064򩞆.𲩧󠒹ς; [V6]; xn--4-w93ej7463a9io5a.xn--3xa51142bk3f0d; ; xn--4-w93ej7463a9io5a.xn--4xa31142bk3f0d; # ꠆4.ς
+񗑿\uA8064򩞆。𲩧󠒹Σ; 񗑿\uA8064򩞆.𲩧󠒹σ; [V6]; xn--4-w93ej7463a9io5a.xn--4xa31142bk3f0d; ; ; # ꠆4.σ
+񗑿\uA8064򩞆。𲩧󠒹σ; 񗑿\uA8064򩞆.𲩧󠒹σ; [V6]; xn--4-w93ej7463a9io5a.xn--4xa31142bk3f0d; ; ; # ꠆4.σ
xn--4-w93ej7463a9io5a.xn--4xa31142bk3f0d; 񗑿\uA8064򩞆.𲩧󠒹σ; [V6]; xn--4-w93ej7463a9io5a.xn--4xa31142bk3f0d; ; ; # ꠆4.σ
xn--4-w93ej7463a9io5a.xn--3xa51142bk3f0d; 񗑿\uA8064򩞆.𲩧󠒹ς; [V6]; xn--4-w93ej7463a9io5a.xn--3xa51142bk3f0d; ; ; # ꠆4.ς
-񗑿\uA806₄򩞆。𲩧󠒹Σ; 񗑿\uA8064򩞆.𲩧󠒹σ; [P1, V6]; xn--4-w93ej7463a9io5a.xn--4xa31142bk3f0d; ; ; # ꠆4.σ
-񗑿\uA806₄򩞆。𲩧󠒹σ; 񗑿\uA8064򩞆.𲩧󠒹σ; [P1, V6]; xn--4-w93ej7463a9io5a.xn--4xa31142bk3f0d; ; ; # ꠆4.σ
+񗑿\uA806₄򩞆。𲩧󠒹Σ; 񗑿\uA8064򩞆.𲩧󠒹σ; [V6]; xn--4-w93ej7463a9io5a.xn--4xa31142bk3f0d; ; ; # ꠆4.σ
+񗑿\uA806₄򩞆。𲩧󠒹σ; 񗑿\uA8064򩞆.𲩧󠒹σ; [V6]; xn--4-w93ej7463a9io5a.xn--4xa31142bk3f0d; ; ; # ꠆4.σ
󠆀\u0723。\u1DF4\u0775; \u0723.\u1DF4\u0775; [B1, V5]; xn--tnb.xn--5pb136i; ; ; # ܣ.ᷴݵ
xn--tnb.xn--5pb136i; \u0723.\u1DF4\u0775; [B1, V5]; xn--tnb.xn--5pb136i; ; ; # ܣ.ᷴݵ
-ð¹±\u0842ðª¨ï½¡ð¬¼–Ⴑ\u200D; ð¹±\u0842ðª¨.𬼖Ⴑ\u200D; [B1, B6, C2, P1, V6]; xn--0vb1535kdb6e.xn--pnd879eqy33c; ; xn--0vb1535kdb6e.xn--pnd93707a; [B1, P1, V6] # ð¹±à¡‚ðª¨.𬼖Ⴑ
-ð¹±\u0842ðª¨ã€‚𬼖Ⴑ\u200D; ð¹±\u0842ðª¨.𬼖Ⴑ\u200D; [B1, B6, C2, P1, V6]; xn--0vb1535kdb6e.xn--pnd879eqy33c; ; xn--0vb1535kdb6e.xn--pnd93707a; [B1, P1, V6] # ð¹±à¡‚ðª¨.𬼖Ⴑ
+ð¹±\u0842ðª¨ï½¡ð¬¼–Ⴑ\u200D; ð¹±\u0842ðª¨.𬼖Ⴑ\u200D; [B1, B6, C2, V6]; xn--0vb1535kdb6e.xn--pnd879eqy33c; ; xn--0vb1535kdb6e.xn--pnd93707a; [B1, V6] # ð¹±à¡‚ðª¨.𬼖Ⴑ
+ð¹±\u0842ðª¨ã€‚𬼖Ⴑ\u200D; ð¹±\u0842ðª¨.𬼖Ⴑ\u200D; [B1, B6, C2, V6]; xn--0vb1535kdb6e.xn--pnd879eqy33c; ; xn--0vb1535kdb6e.xn--pnd93707a; [B1, V6] # ð¹±à¡‚ðª¨.𬼖Ⴑ
ð¹±\u0842ðª¨ã€‚𬼖ⴑ\u200D; ð¹±\u0842ðª¨.𬼖ⴑ\u200D; [B1, B6, C2]; xn--0vb1535kdb6e.xn--1ug742c5714c; ; xn--0vb1535kdb6e.xn--8kjz186s; [B1] # ð¹±à¡‚ðª¨.𬼖ⴑ
xn--0vb1535kdb6e.xn--8kjz186s; ð¹±\u0842ðª¨.𬼖ⴑ; [B1]; xn--0vb1535kdb6e.xn--8kjz186s; ; ; # ð¹±à¡‚ðª¨.𬼖ⴑ
xn--0vb1535kdb6e.xn--1ug742c5714c; ð¹±\u0842ðª¨.𬼖ⴑ\u200D; [B1, B6, C2]; xn--0vb1535kdb6e.xn--1ug742c5714c; ; ; # ð¹±à¡‚ðª¨.𬼖ⴑ
xn--0vb1535kdb6e.xn--pnd93707a; ð¹±\u0842ðª¨.𬼖Ⴑ; [B1, V6]; xn--0vb1535kdb6e.xn--pnd93707a; ; ; # ð¹±à¡‚ðª¨.𬼖Ⴑ
xn--0vb1535kdb6e.xn--pnd879eqy33c; ð¹±\u0842ðª¨.𬼖Ⴑ\u200D; [B1, B6, C2, V6]; xn--0vb1535kdb6e.xn--pnd879eqy33c; ; ; # ð¹±à¡‚ðª¨.𬼖Ⴑ
ð¹±\u0842ðª¨ï½¡ð¬¼–â´‘\u200D; ð¹±\u0842ðª¨.𬼖ⴑ\u200D; [B1, B6, C2]; xn--0vb1535kdb6e.xn--1ug742c5714c; ; xn--0vb1535kdb6e.xn--8kjz186s; [B1] # ð¹±à¡‚ðª¨.𬼖ⴑ
-\u1714ð­ªó ™˜\u200D。-ð¹´; \u1714ð­ªó ™˜\u200D.-ð¹´; [B1, C2, P1, V3, V5, V6]; xn--fze807bso0spy14i.xn----c36i; ; xn--fze4126jujt0g.xn----c36i; [B1, P1, V3, V5, V6] # ᜔ð­ª.-ð¹´
-\u1714ð­ªó ™˜\u200D。-ð¹´; \u1714ð­ªó ™˜\u200D.-ð¹´; [B1, C2, P1, V3, V5, V6]; xn--fze807bso0spy14i.xn----c36i; ; xn--fze4126jujt0g.xn----c36i; [B1, P1, V3, V5, V6] # ᜔ð­ª.-ð¹´
+\u1714ð­ªó ™˜\u200D。-ð¹´; \u1714ð­ªó ™˜\u200D.-ð¹´; [B1, C2, V3, V5, V6]; xn--fze807bso0spy14i.xn----c36i; ; xn--fze4126jujt0g.xn----c36i; [B1, V3, V5, V6] # ᜔ð­ª.-ð¹´
+\u1714ð­ªó ™˜\u200D。-ð¹´; \u1714ð­ªó ™˜\u200D.-ð¹´; [B1, C2, V3, V5, V6]; xn--fze807bso0spy14i.xn----c36i; ; xn--fze4126jujt0g.xn----c36i; [B1, V3, V5, V6] # ᜔ð­ª.-ð¹´
xn--fze4126jujt0g.xn----c36i; \u1714ð­ªó ™˜.-ð¹´; [B1, V3, V5, V6]; xn--fze4126jujt0g.xn----c36i; ; ; # ᜔ð­ª.-ð¹´
xn--fze807bso0spy14i.xn----c36i; \u1714ð­ªó ™˜\u200D.-ð¹´; [B1, C2, V3, V5, V6]; xn--fze807bso0spy14i.xn----c36i; ; ; # ᜔ð­ª.-ð¹´
-𾢬。\u0729︒쯙ðŸ§; 𾢬.\u0729︒쯙5; [B2, P1, V6]; xn--t92s.xn--5-p1c0712mm8rb; ; ; # .ܩ︒쯙5
-𾢬。\u0729︒á„ᅳᆬðŸ§; 𾢬.\u0729︒쯙5; [B2, P1, V6]; xn--t92s.xn--5-p1c0712mm8rb; ; ; # .ܩ︒쯙5
-𾢬。\u0729。쯙5; 𾢬.\u0729.쯙5; [P1, V6]; xn--t92s.xn--znb.xn--5-y88f; ; ; # .ܩ.쯙5
-𾢬。\u0729。á„ᅳᆬ5; 𾢬.\u0729.쯙5; [P1, V6]; xn--t92s.xn--znb.xn--5-y88f; ; ; # .Ü©.쯙5
+𾢬。\u0729︒쯙ðŸ§; 𾢬.\u0729︒쯙5; [B2, V6]; xn--t92s.xn--5-p1c0712mm8rb; ; ; # .ܩ︒쯙5
+𾢬。\u0729︒á„ᅳᆬðŸ§; 𾢬.\u0729︒쯙5; [B2, V6]; xn--t92s.xn--5-p1c0712mm8rb; ; ; # .ܩ︒쯙5
+𾢬。\u0729。쯙5; 𾢬.\u0729.쯙5; [V6]; xn--t92s.xn--znb.xn--5-y88f; ; ; # .ܩ.쯙5
+𾢬。\u0729。á„ᅳᆬ5; 𾢬.\u0729.쯙5; [V6]; xn--t92s.xn--znb.xn--5-y88f; ; ; # .Ü©.쯙5
xn--t92s.xn--znb.xn--5-y88f; 𾢬.\u0729.쯙5; [V6]; xn--t92s.xn--znb.xn--5-y88f; ; ; # .ܩ.쯙5
xn--t92s.xn--5-p1c0712mm8rb; 𾢬.\u0729︒쯙5; [B2, V6]; xn--t92s.xn--5-p1c0712mm8rb; ; ; # .ܩ︒쯙5
-𞤟-。\u0762≮ë»; ðž¥-.\u0762≮ë»; [B2, B3, P1, V3, V6]; xn----1j8r.xn--mpb269krv4i; ; ; # ðž¥-.ݢ≮ë»
-𞤟-。\u0762<\u0338뻐; ðž¥-.\u0762≮ë»; [B2, B3, P1, V3, V6]; xn----1j8r.xn--mpb269krv4i; ; ; # ðž¥-.ݢ≮ë»
-ðž¥-。\u0762<\u0338뻐; ðž¥-.\u0762≮ë»; [B2, B3, P1, V3, V6]; xn----1j8r.xn--mpb269krv4i; ; ; # ðž¥-.ݢ≮ë»
-ðž¥-。\u0762≮ë»; ðž¥-.\u0762≮ë»; [B2, B3, P1, V3, V6]; xn----1j8r.xn--mpb269krv4i; ; ; # ðž¥-.ݢ≮ë»
-xn----1j8r.xn--mpb269krv4i; ðž¥-.\u0762≮ë»; [B2, B3, V3, V6]; xn----1j8r.xn--mpb269krv4i; ; ; # ðž¥-.ݢ≮ë»
-𞥩-򊫠.\u08B4≠; 𞥩-򊫠.\u08B4≠; [B2, B3, P1, V6]; xn----cm8rp3609a.xn--9yb852k; ; ; # -.ࢴ≠
-𞥩-򊫠.\u08B4=\u0338; 𞥩-򊫠.\u08B4≠; [B2, B3, P1, V6]; xn----cm8rp3609a.xn--9yb852k; ; ; # -.ࢴ≠
-𞥩-򊫠.\u08B4≠; ; [B2, B3, P1, V6]; xn----cm8rp3609a.xn--9yb852k; ; ; # -.ࢴ≠
-𞥩-򊫠.\u08B4=\u0338; 𞥩-򊫠.\u08B4≠; [B2, B3, P1, V6]; xn----cm8rp3609a.xn--9yb852k; ; ; # -.ࢴ≠
+𞤟-。\u0762≮ë»; ðž¥-.\u0762≮ë»; [B2, B3, V3]; xn----1j8r.xn--mpb269krv4i; ; ; # ðž¥-.ݢ≮ë»
+𞤟-。\u0762<\u0338뻐; ðž¥-.\u0762≮ë»; [B2, B3, V3]; xn----1j8r.xn--mpb269krv4i; ; ; # ðž¥-.ݢ≮ë»
+ðž¥-。\u0762<\u0338뻐; ðž¥-.\u0762≮ë»; [B2, B3, V3]; xn----1j8r.xn--mpb269krv4i; ; ; # ðž¥-.ݢ≮ë»
+ðž¥-。\u0762≮ë»; ðž¥-.\u0762≮ë»; [B2, B3, V3]; xn----1j8r.xn--mpb269krv4i; ; ; # ðž¥-.ݢ≮ë»
+xn----1j8r.xn--mpb269krv4i; ðž¥-.\u0762≮ë»; [B2, B3, V3]; xn----1j8r.xn--mpb269krv4i; ; ; # ðž¥-.ݢ≮ë»
+𞥩-򊫠.\u08B4≠; 𞥩-򊫠.\u08B4≠; [B2, B3, V6]; xn----cm8rp3609a.xn--9yb852k; ; ; # -.ࢴ≠
+𞥩-򊫠.\u08B4=\u0338; 𞥩-򊫠.\u08B4≠; [B2, B3, V6]; xn----cm8rp3609a.xn--9yb852k; ; ; # -.ࢴ≠
+𞥩-򊫠.\u08B4≠; ; [B2, B3, V6]; xn----cm8rp3609a.xn--9yb852k; ; ; # -.ࢴ≠
+𞥩-򊫠.\u08B4=\u0338; 𞥩-򊫠.\u08B4≠; [B2, B3, V6]; xn----cm8rp3609a.xn--9yb852k; ; ; # -.ࢴ≠
xn----cm8rp3609a.xn--9yb852k; 𞥩-򊫠.\u08B4≠; [B2, B3, V6]; xn----cm8rp3609a.xn--9yb852k; ; ; # -.ࢴ≠
--ñ…‚ςႼ.\u0661; -ñ…‚ςႼ.\u0661; [B1, P1, V3, V6]; xn----ymb080hun11i.xn--9hb; ; xn----0mb770hun11i.xn--9hb; # -ςႼ.Ù¡
--ñ…‚ςႼ.\u0661; ; [B1, P1, V3, V6]; xn----ymb080hun11i.xn--9hb; ; xn----0mb770hun11i.xn--9hb; # -ςႼ.Ù¡
--ñ…‚Ï‚â´œ.\u0661; ; [B1, P1, V3, V6]; xn----ymb2782aov12f.xn--9hb; ; xn----0mb9682aov12f.xn--9hb; # -Ï‚â´œ.Ù¡
--ñ…‚ΣႼ.\u0661; -ñ…‚σႼ.\u0661; [B1, P1, V3, V6]; xn----0mb770hun11i.xn--9hb; ; ; # -σႼ.Ù¡
--ñ…‚σⴜ.\u0661; ; [B1, P1, V3, V6]; xn----0mb9682aov12f.xn--9hb; ; ; # -σⴜ.Ù¡
--ñ…‚Σⴜ.\u0661; -ñ…‚σⴜ.\u0661; [B1, P1, V3, V6]; xn----0mb9682aov12f.xn--9hb; ; ; # -σⴜ.Ù¡
+-ñ…‚ςႼ.\u0661; -ñ…‚ςႼ.\u0661; [B1, V3, V6]; xn----ymb080hun11i.xn--9hb; ; xn----0mb770hun11i.xn--9hb; # -ςႼ.Ù¡
+-ñ…‚ςႼ.\u0661; ; [B1, V3, V6]; xn----ymb080hun11i.xn--9hb; ; xn----0mb770hun11i.xn--9hb; # -ςႼ.Ù¡
+-ñ…‚Ï‚â´œ.\u0661; ; [B1, V3, V6]; xn----ymb2782aov12f.xn--9hb; ; xn----0mb9682aov12f.xn--9hb; # -Ï‚â´œ.Ù¡
+-ñ…‚ΣႼ.\u0661; -ñ…‚σႼ.\u0661; [B1, V3, V6]; xn----0mb770hun11i.xn--9hb; ; ; # -σႼ.Ù¡
+-ñ…‚σⴜ.\u0661; ; [B1, V3, V6]; xn----0mb9682aov12f.xn--9hb; ; ; # -σⴜ.Ù¡
+-ñ…‚Σⴜ.\u0661; -ñ…‚σⴜ.\u0661; [B1, V3, V6]; xn----0mb9682aov12f.xn--9hb; ; ; # -σⴜ.Ù¡
xn----0mb9682aov12f.xn--9hb; -ñ…‚σⴜ.\u0661; [B1, V3, V6]; xn----0mb9682aov12f.xn--9hb; ; ; # -σⴜ.Ù¡
xn----0mb770hun11i.xn--9hb; -ñ…‚σႼ.\u0661; [B1, V3, V6]; xn----0mb770hun11i.xn--9hb; ; ; # -σႼ.Ù¡
xn----ymb2782aov12f.xn--9hb; -ñ…‚Ï‚â´œ.\u0661; [B1, V3, V6]; xn----ymb2782aov12f.xn--9hb; ; ; # -Ï‚â´œ.Ù¡
xn----ymb080hun11i.xn--9hb; -ñ…‚ςႼ.\u0661; [B1, V3, V6]; xn----ymb080hun11i.xn--9hb; ; ; # -ςႼ.Ù¡
--ñ…‚ςⴜ.\u0661; -ñ…‚Ï‚â´œ.\u0661; [B1, P1, V3, V6]; xn----ymb2782aov12f.xn--9hb; ; xn----0mb9682aov12f.xn--9hb; # -Ï‚â´œ.Ù¡
--ñ…‚ΣႼ.\u0661; -ñ…‚σႼ.\u0661; [B1, P1, V3, V6]; xn----0mb770hun11i.xn--9hb; ; ; # -σႼ.Ù¡
--ñ…‚σⴜ.\u0661; -ñ…‚σⴜ.\u0661; [B1, P1, V3, V6]; xn----0mb9682aov12f.xn--9hb; ; ; # -σⴜ.Ù¡
--ñ…‚Σⴜ.\u0661; -ñ…‚σⴜ.\u0661; [B1, P1, V3, V6]; xn----0mb9682aov12f.xn--9hb; ; ; # -σⴜ.Ù¡
+-ñ…‚ςⴜ.\u0661; -ñ…‚Ï‚â´œ.\u0661; [B1, V3, V6]; xn----ymb2782aov12f.xn--9hb; ; xn----0mb9682aov12f.xn--9hb; # -Ï‚â´œ.Ù¡
+-ñ…‚ΣႼ.\u0661; -ñ…‚σႼ.\u0661; [B1, V3, V6]; xn----0mb770hun11i.xn--9hb; ; ; # -σႼ.Ù¡
+-ñ…‚σⴜ.\u0661; -ñ…‚σⴜ.\u0661; [B1, V3, V6]; xn----0mb9682aov12f.xn--9hb; ; ; # -σⴜ.Ù¡
+-ñ…‚Σⴜ.\u0661; -ñ…‚σⴜ.\u0661; [B1, V3, V6]; xn----0mb9682aov12f.xn--9hb; ; ; # -σⴜ.Ù¡
\u17CA.\u200DðŸ®ð‘€¿; \u17CA.\u200D2𑀿; [C2, V5]; xn--m4e.xn--2-tgnv469h; ; xn--m4e.xn--2-ku7i; [V5] # ៊.2𑀿
\u17CA.\u200D2𑀿; ; [C2, V5]; xn--m4e.xn--2-tgnv469h; ; xn--m4e.xn--2-ku7i; [V5] # ៊.2𑀿
xn--m4e.xn--2-ku7i; \u17CA.2𑀿; [V5]; xn--m4e.xn--2-ku7i; ; ; # ៊.2𑀿
xn--m4e.xn--2-tgnv469h; \u17CA.\u200D2𑀿; [C2, V5]; xn--m4e.xn--2-tgnv469h; ; ; # ៊.2𑀿
-≯ðŸ–。\u1A60ð«“òŸ‡‘; ≯8.\u1A60ð«“òŸ‡‘; [B1, P1, V5, V6]; xn--8-ogo.xn--jof5303iv1z5d; ; ; # ≯8.á© ð«“
->\u0338ðŸ–。\u1A60ð«“òŸ‡‘; ≯8.\u1A60ð«“òŸ‡‘; [B1, P1, V5, V6]; xn--8-ogo.xn--jof5303iv1z5d; ; ; # ≯8.á© ð«“
-≯8。\u1A60ð«“òŸ‡‘; ≯8.\u1A60ð«“òŸ‡‘; [B1, P1, V5, V6]; xn--8-ogo.xn--jof5303iv1z5d; ; ; # ≯8.á© ð«“
->\u03388。\u1A60ð«“òŸ‡‘; ≯8.\u1A60ð«“òŸ‡‘; [B1, P1, V5, V6]; xn--8-ogo.xn--jof5303iv1z5d; ; ; # ≯8.á© ð«“
+≯ðŸ–。\u1A60ð«“òŸ‡‘; ≯8.\u1A60ð«“òŸ‡‘; [B1, V5, V6]; xn--8-ogo.xn--jof5303iv1z5d; ; ; # ≯8.á© ð«“
+>\u0338ðŸ–。\u1A60ð«“òŸ‡‘; ≯8.\u1A60ð«“òŸ‡‘; [B1, V5, V6]; xn--8-ogo.xn--jof5303iv1z5d; ; ; # ≯8.á© ð«“
+≯8。\u1A60ð«“òŸ‡‘; ≯8.\u1A60ð«“òŸ‡‘; [B1, V5, V6]; xn--8-ogo.xn--jof5303iv1z5d; ; ; # ≯8.á© ð«“
+>\u03388。\u1A60ð«“òŸ‡‘; ≯8.\u1A60ð«“òŸ‡‘; [B1, V5, V6]; xn--8-ogo.xn--jof5303iv1z5d; ; ; # ≯8.á© ð«“
xn--8-ogo.xn--jof5303iv1z5d; ≯8.\u1A60ð«“òŸ‡‘; [B1, V5, V6]; xn--8-ogo.xn--jof5303iv1z5d; ; ; # ≯8.á© ð«“
-𑲫Ↄ\u0664。\u200C; 𑲫Ↄ\u0664.\u200C; [B1, C1, P1, V5, V6]; xn--dib999kcy1p.xn--0ug; ; xn--dib999kcy1p.; [B1, P1, V5, V6] # 𑲫Ↄ٤.
-𑲫Ↄ\u0664。\u200C; 𑲫Ↄ\u0664.\u200C; [B1, C1, P1, V5, V6]; xn--dib999kcy1p.xn--0ug; ; xn--dib999kcy1p.; [B1, P1, V5, V6] # 𑲫Ↄ٤.
+𑲫Ↄ\u0664。\u200C; 𑲫Ↄ\u0664.\u200C; [B1, C1, V5, V6]; xn--dib999kcy1p.xn--0ug; ; xn--dib999kcy1p.; [B1, V5, V6] # 𑲫Ↄ٤.
+𑲫Ↄ\u0664。\u200C; 𑲫Ↄ\u0664.\u200C; [B1, C1, V5, V6]; xn--dib999kcy1p.xn--0ug; ; xn--dib999kcy1p.; [B1, V5, V6] # 𑲫Ↄ٤.
𑲫ↄ\u0664。\u200C; 𑲫ↄ\u0664.\u200C; [B1, C1, V5]; xn--dib100l8x1p.xn--0ug; ; xn--dib100l8x1p.; [B1, V5] # 𑲫ↄ٤.
xn--dib100l8x1p.; 𑲫ↄ\u0664.; [B1, V5]; xn--dib100l8x1p.; ; ; # 𑲫ↄ٤.
xn--dib100l8x1p.xn--0ug; 𑲫ↄ\u0664.\u200C; [B1, C1, V5]; xn--dib100l8x1p.xn--0ug; ; ; # 𑲫ↄ٤.
xn--dib999kcy1p.; 𑲫Ↄ\u0664.; [B1, V5, V6]; xn--dib999kcy1p.; ; ; # 𑲫Ↄ٤.
xn--dib999kcy1p.xn--0ug; 𑲫Ↄ\u0664.\u200C; [B1, C1, V5, V6]; xn--dib999kcy1p.xn--0ug; ; ; # 𑲫Ↄ٤.
𑲫ↄ\u0664。\u200C; 𑲫ↄ\u0664.\u200C; [B1, C1, V5]; xn--dib100l8x1p.xn--0ug; ; xn--dib100l8x1p.; [B1, V5] # 𑲫ↄ٤.
-\u0C00ðŸµ\u200D\uFC9D.\u200D\u0750â’ˆ; \u0C009\u200D\u0628\u062D.\u200D\u0750â’ˆ; [B1, C2, P1, V5, V6]; xn--9-1mcp570dl51a.xn--3ob977jmfd; ; xn--9-1mcp570d.xn--3ob470m; [B1, P1, V5, V6] # à°€9بح.Ýâ’ˆ
+\u0C00ðŸµ\u200D\uFC9D.\u200D\u0750â’ˆ; \u0C009\u200D\u0628\u062D.\u200D\u0750â’ˆ; [B1, C2, V5, V6]; xn--9-1mcp570dl51a.xn--3ob977jmfd; ; xn--9-1mcp570d.xn--3ob470m; [B1, V5, V6] # à°€9بح.Ýâ’ˆ
\u0C009\u200D\u0628\u062D.\u200D\u07501.; ; [B1, C2, V5]; xn--9-1mcp570dl51a.xn--1-x3c211q.; ; xn--9-1mcp570d.xn--1-x3c.; [B1, V5] # à°€9بح.Ý1.
xn--9-1mcp570d.xn--1-x3c.; \u0C009\u0628\u062D.\u07501.; [B1, V5]; xn--9-1mcp570d.xn--1-x3c.; ; ; # à°€9بح.Ý1.
xn--9-1mcp570dl51a.xn--1-x3c211q.; \u0C009\u200D\u0628\u062D.\u200D\u07501.; [B1, C2, V5]; xn--9-1mcp570dl51a.xn--1-x3c211q.; ; ; # à°€9بح.Ý1.
@@ -5758,150 +5788,150 @@ xn--9-1mcp570dl51a.xn--3ob977jmfd; \u0C009\u200D\u0628\u062D.\u200D\u0750â’ˆ; [B
\uAAF6。嬶Ss葽; \uAAF6.嬶ss葽; [V5]; xn--2v9a.xn--ss-q40dp97m; ; ; # ꫶.嬶ss葽
xn--2v9a.xn--ss-q40dp97m; \uAAF6.嬶ss葽; [V5]; xn--2v9a.xn--ss-q40dp97m; ; ; # ꫶.嬶ss葽
xn--2v9a.xn--zca7637b14za; \uAAF6.嬶ß葽; [V5]; xn--2v9a.xn--zca7637b14za; ; ; # ꫶.嬶ß葽
-𑚶⒈。ñž»¡ð¹º; 𑚶⒈.ñž»¡ð¹º; [B5, B6, P1, V5, V6]; xn--tshz969f.xn--yo0d5914s; ; ; # 𑚶⒈.ð¹º
-𑚶1.。ñž»¡ð¹º; 𑚶1..ñž»¡ð¹º; [B5, B6, P1, V5, V6, X4_2]; xn--1-3j0j..xn--yo0d5914s; [B5, B6, P1, V5, V6, A4_2]; ; # 𑚶1..ð¹º
+𑚶⒈。ñž»¡ð¹º; 𑚶⒈.ñž»¡ð¹º; [B5, B6, V5, V6]; xn--tshz969f.xn--yo0d5914s; ; ; # 𑚶⒈.ð¹º
+𑚶1.。ñž»¡ð¹º; 𑚶1..ñž»¡ð¹º; [B5, B6, V5, V6, X4_2]; xn--1-3j0j..xn--yo0d5914s; [B5, B6, V5, V6, A4_2]; ; # 𑚶1..ð¹º
xn--1-3j0j..xn--yo0d5914s; 𑚶1..ñž»¡ð¹º; [B5, B6, V5, V6, X4_2]; xn--1-3j0j..xn--yo0d5914s; [B5, B6, V5, V6, A4_2]; ; # 𑚶1..ð¹º
xn--tshz969f.xn--yo0d5914s; 𑚶⒈.ñž»¡ð¹º; [B5, B6, V5, V6]; xn--tshz969f.xn--yo0d5914s; ; ; # 𑚶⒈.ð¹º
-𑜤︒≮.񚕽\u05D8𞾩; 𑜤︒≮.񚕽\u05D8𞾩; [B1, B5, B6, P1, V5, V6]; xn--gdh5267fdzpa.xn--deb0091w5q9u; ; ; # 𑜤︒≮.ט
-𑜤︒<\u0338.񚕽\u05D8𞾩; 𑜤︒≮.񚕽\u05D8𞾩; [B1, B5, B6, P1, V5, V6]; xn--gdh5267fdzpa.xn--deb0091w5q9u; ; ; # 𑜤︒≮.ט
-𑜤。≮.񚕽\u05D8𞾩; 𑜤.≮.񚕽\u05D8𞾩; [B1, B3, B5, B6, P1, V5, V6]; xn--ci2d.xn--gdh.xn--deb0091w5q9u; ; ; # 𑜤.≮.ט
-𑜤。<\u0338.񚕽\u05D8𞾩; 𑜤.≮.񚕽\u05D8𞾩; [B1, B3, B5, B6, P1, V5, V6]; xn--ci2d.xn--gdh.xn--deb0091w5q9u; ; ; # 𑜤.≮.ט
-xn--ci2d.xn--gdh.xn--deb0091w5q9u; 𑜤.≮.񚕽\u05D8𞾩; [B1, B3, B5, B6, V5, V6]; xn--ci2d.xn--gdh.xn--deb0091w5q9u; ; ; # 𑜤.≮.ט
+𑜤︒≮.񚕽\u05D8𞾩; 𑜤︒≮.񚕽\u05D8𞾩; [B1, B5, B6, V5, V6]; xn--gdh5267fdzpa.xn--deb0091w5q9u; ; ; # 𑜤︒≮.ט
+𑜤︒<\u0338.񚕽\u05D8𞾩; 𑜤︒≮.񚕽\u05D8𞾩; [B1, B5, B6, V5, V6]; xn--gdh5267fdzpa.xn--deb0091w5q9u; ; ; # 𑜤︒≮.ט
+𑜤。≮.񚕽\u05D8𞾩; 𑜤.≮.񚕽\u05D8𞾩; [B1, B5, B6, V5, V6]; xn--ci2d.xn--gdh.xn--deb0091w5q9u; ; ; # 𑜤.≮.ט
+𑜤。<\u0338.񚕽\u05D8𞾩; 𑜤.≮.񚕽\u05D8𞾩; [B1, B5, B6, V5, V6]; xn--ci2d.xn--gdh.xn--deb0091w5q9u; ; ; # 𑜤.≮.ט
+xn--ci2d.xn--gdh.xn--deb0091w5q9u; 𑜤.≮.񚕽\u05D8𞾩; [B1, B5, B6, V5, V6]; xn--ci2d.xn--gdh.xn--deb0091w5q9u; ; ; # 𑜤.≮.ט
xn--gdh5267fdzpa.xn--deb0091w5q9u; 𑜤︒≮.񚕽\u05D8𞾩; [B1, B5, B6, V5, V6]; xn--gdh5267fdzpa.xn--deb0091w5q9u; ; ; # 𑜤︒≮.ט
-󠆋\u0603ñ¦¤.â‡Ï‚ò‹ˆòº‡¥; \u0603ñ¦¤.â‡Ï‚ò‹ˆòº‡¥; [B1, P1, V6]; xn--lfb04106d.xn--3xa174mxv16m8moq; ; xn--lfb04106d.xn--4xa964mxv16m8moq; # .â‡Ï‚
-󠆋\u0603ñ¦¤.â‡Î£ò‹ˆòº‡¥; \u0603ñ¦¤.â‡Ïƒò‹ˆòº‡¥; [B1, P1, V6]; xn--lfb04106d.xn--4xa964mxv16m8moq; ; ; # .â‡Ïƒ
-󠆋\u0603ñ¦¤.â‡Ïƒò‹ˆòº‡¥; \u0603ñ¦¤.â‡Ïƒò‹ˆòº‡¥; [B1, P1, V6]; xn--lfb04106d.xn--4xa964mxv16m8moq; ; ; # .â‡Ïƒ
+󠆋\u0603ñ¦¤.â‡Ï‚ò‹ˆòº‡¥; \u0603ñ¦¤.â‡Ï‚ò‹ˆòº‡¥; [B1, V6]; xn--lfb04106d.xn--3xa174mxv16m8moq; ; xn--lfb04106d.xn--4xa964mxv16m8moq; # .â‡Ï‚
+󠆋\u0603ñ¦¤.â‡Î£ò‹ˆòº‡¥; \u0603ñ¦¤.â‡Ïƒò‹ˆòº‡¥; [B1, V6]; xn--lfb04106d.xn--4xa964mxv16m8moq; ; ; # .â‡Ïƒ
+󠆋\u0603ñ¦¤.â‡Ïƒò‹ˆòº‡¥; \u0603ñ¦¤.â‡Ïƒò‹ˆòº‡¥; [B1, V6]; xn--lfb04106d.xn--4xa964mxv16m8moq; ; ; # .â‡Ïƒ
xn--lfb04106d.xn--4xa964mxv16m8moq; \u0603ñ¦¤.â‡Ïƒò‹ˆòº‡¥; [B1, V6]; xn--lfb04106d.xn--4xa964mxv16m8moq; ; ; # .â‡Ïƒ
xn--lfb04106d.xn--3xa174mxv16m8moq; \u0603ñ¦¤.â‡Ï‚ò‹ˆòº‡¥; [B1, V6]; xn--lfb04106d.xn--3xa174mxv16m8moq; ; ; # .â‡Ï‚
-Ï‚ð‘½ðµ¢ˆð‘œ«ï½¡ðž¬©\u200Cð«„; Ï‚ð‘½ðµ¢ˆð‘œ«.𞬩\u200Cð«„; [C1, P1, V6]; xn--3xa4260lk3b8z15g.xn--0ug4653g2xzf; ; xn--4xa2260lk3b8z15g.xn--tw9ct349a; [P1, V6] # Ï‚ð‘½ð‘œ«.ð«„
-Ï‚ð‘½ðµ¢ˆð‘œ«ã€‚𞬩\u200Cð«„; Ï‚ð‘½ðµ¢ˆð‘œ«.𞬩\u200Cð«„; [C1, P1, V6]; xn--3xa4260lk3b8z15g.xn--0ug4653g2xzf; ; xn--4xa2260lk3b8z15g.xn--tw9ct349a; [P1, V6] # Ï‚ð‘½ð‘œ«.ð«„
-Σð‘½ðµ¢ˆð‘œ«ã€‚𞬩\u200Cð«„; σð‘½ðµ¢ˆð‘œ«.𞬩\u200Cð«„; [C1, P1, V6]; xn--4xa2260lk3b8z15g.xn--0ug4653g2xzf; ; xn--4xa2260lk3b8z15g.xn--tw9ct349a; [P1, V6] # σð‘½ð‘œ«.ð«„
-σð‘½ðµ¢ˆð‘œ«ã€‚𞬩\u200Cð«„; σð‘½ðµ¢ˆð‘œ«.𞬩\u200Cð«„; [C1, P1, V6]; xn--4xa2260lk3b8z15g.xn--0ug4653g2xzf; ; xn--4xa2260lk3b8z15g.xn--tw9ct349a; [P1, V6] # σð‘½ð‘œ«.ð«„
+Ï‚ð‘½ðµ¢ˆð‘œ«ï½¡ðž¬©\u200Cð«„; Ï‚ð‘½ðµ¢ˆð‘œ«.𞬩\u200Cð«„; [C1, V6]; xn--3xa4260lk3b8z15g.xn--0ug4653g2xzf; ; xn--4xa2260lk3b8z15g.xn--tw9ct349a; [V6] # Ï‚ð‘½ð‘œ«.ð«„
+Ï‚ð‘½ðµ¢ˆð‘œ«ã€‚𞬩\u200Cð«„; Ï‚ð‘½ðµ¢ˆð‘œ«.𞬩\u200Cð«„; [C1, V6]; xn--3xa4260lk3b8z15g.xn--0ug4653g2xzf; ; xn--4xa2260lk3b8z15g.xn--tw9ct349a; [V6] # Ï‚ð‘½ð‘œ«.ð«„
+Σð‘½ðµ¢ˆð‘œ«ã€‚𞬩\u200Cð«„; σð‘½ðµ¢ˆð‘œ«.𞬩\u200Cð«„; [C1, V6]; xn--4xa2260lk3b8z15g.xn--0ug4653g2xzf; ; xn--4xa2260lk3b8z15g.xn--tw9ct349a; [V6] # σð‘½ð‘œ«.ð«„
+σð‘½ðµ¢ˆð‘œ«ã€‚𞬩\u200Cð«„; σð‘½ðµ¢ˆð‘œ«.𞬩\u200Cð«„; [C1, V6]; xn--4xa2260lk3b8z15g.xn--0ug4653g2xzf; ; xn--4xa2260lk3b8z15g.xn--tw9ct349a; [V6] # σð‘½ð‘œ«.ð«„
xn--4xa2260lk3b8z15g.xn--tw9ct349a; σð‘½ðµ¢ˆð‘œ«.𞬩ð«„; [V6]; xn--4xa2260lk3b8z15g.xn--tw9ct349a; ; ; # σð‘½ð‘œ«.ð«„
xn--4xa2260lk3b8z15g.xn--0ug4653g2xzf; σð‘½ðµ¢ˆð‘œ«.𞬩\u200Cð«„; [C1, V6]; xn--4xa2260lk3b8z15g.xn--0ug4653g2xzf; ; ; # σð‘½ð‘œ«.ð«„
xn--3xa4260lk3b8z15g.xn--0ug4653g2xzf; Ï‚ð‘½ðµ¢ˆð‘œ«.𞬩\u200Cð«„; [C1, V6]; xn--3xa4260lk3b8z15g.xn--0ug4653g2xzf; ; ; # Ï‚ð‘½ð‘œ«.ð«„
-Σð‘½ðµ¢ˆð‘œ«ï½¡ðž¬©\u200Cð«„; σð‘½ðµ¢ˆð‘œ«.𞬩\u200Cð«„; [C1, P1, V6]; xn--4xa2260lk3b8z15g.xn--0ug4653g2xzf; ; xn--4xa2260lk3b8z15g.xn--tw9ct349a; [P1, V6] # σð‘½ð‘œ«.ð«„
-σð‘½ðµ¢ˆð‘œ«ï½¡ðž¬©\u200Cð«„; σð‘½ðµ¢ˆð‘œ«.𞬩\u200Cð«„; [C1, P1, V6]; xn--4xa2260lk3b8z15g.xn--0ug4653g2xzf; ; xn--4xa2260lk3b8z15g.xn--tw9ct349a; [P1, V6] # σð‘½ð‘œ«.ð«„
--òµ½ï½¡-\uFC4C\u075B; -òµ½.-\u0646\u062D\u075B; [B1, P1, V3, V6]; xn----o452j.xn----cnc8e38c; ; ; # -.-نحݛ
--òµ½ã€‚-\u0646\u062D\u075B; -òµ½.-\u0646\u062D\u075B; [B1, P1, V3, V6]; xn----o452j.xn----cnc8e38c; ; ; # -.-نحݛ
+Σð‘½ðµ¢ˆð‘œ«ï½¡ðž¬©\u200Cð«„; σð‘½ðµ¢ˆð‘œ«.𞬩\u200Cð«„; [C1, V6]; xn--4xa2260lk3b8z15g.xn--0ug4653g2xzf; ; xn--4xa2260lk3b8z15g.xn--tw9ct349a; [V6] # σð‘½ð‘œ«.ð«„
+σð‘½ðµ¢ˆð‘œ«ï½¡ðž¬©\u200Cð«„; σð‘½ðµ¢ˆð‘œ«.𞬩\u200Cð«„; [C1, V6]; xn--4xa2260lk3b8z15g.xn--0ug4653g2xzf; ; xn--4xa2260lk3b8z15g.xn--tw9ct349a; [V6] # σð‘½ð‘œ«.ð«„
+-òµ½ï½¡-\uFC4C\u075B; -òµ½.-\u0646\u062D\u075B; [B1, V3, V6]; xn----o452j.xn----cnc8e38c; ; ; # -.-نحݛ
+-òµ½ã€‚-\u0646\u062D\u075B; -òµ½.-\u0646\u062D\u075B; [B1, V3, V6]; xn----o452j.xn----cnc8e38c; ; ; # -.-نحݛ
xn----o452j.xn----cnc8e38c; -òµ½.-\u0646\u062D\u075B; [B1, V3, V6]; xn----o452j.xn----cnc8e38c; ; ; # -.-نحݛ
-⺢ò‡º…ðŸ¤ï½¡\u200D🚷; ⺢ò‡º…2.\u200D🚷; [C2, P1, V6]; xn--2-4jtr4282f.xn--1ugz946p; ; xn--2-4jtr4282f.xn--m78h; [P1, V6] # ⺢2.🚷
-⺢򇺅2。\u200D🚷; ⺢򇺅2.\u200D🚷; [C2, P1, V6]; xn--2-4jtr4282f.xn--1ugz946p; ; xn--2-4jtr4282f.xn--m78h; [P1, V6] # ⺢2.🚷
+⺢ò‡º…ðŸ¤ï½¡\u200D🚷; ⺢ò‡º…2.\u200D🚷; [C2, V6]; xn--2-4jtr4282f.xn--1ugz946p; ; xn--2-4jtr4282f.xn--m78h; [V6] # ⺢2.🚷
+⺢򇺅2。\u200D🚷; ⺢򇺅2.\u200D🚷; [C2, V6]; xn--2-4jtr4282f.xn--1ugz946p; ; xn--2-4jtr4282f.xn--m78h; [V6] # ⺢2.🚷
xn--2-4jtr4282f.xn--m78h; ⺢򇺅2.🚷; [V6]; xn--2-4jtr4282f.xn--m78h; ; ; # ⺢2.🚷
xn--2-4jtr4282f.xn--1ugz946p; ⺢򇺅2.\u200D🚷; [C2, V6]; xn--2-4jtr4282f.xn--1ugz946p; ; ; # ⺢2.🚷
-\u0CF8\u200D\u2DFEð¹²ï½¡ò¤¶; \u0CF8\u200D\u2DFEð¹².ò¤¶; [B5, B6, C2, P1, V6]; xn--hvc488g69j402t.xn--3e36c; ; xn--hvc220of37m.xn--3e36c; [B5, B6, P1, V6] # â·¾ð¹².
-\u0CF8\u200D\u2DFEð¹²ã€‚ò¤¶; \u0CF8\u200D\u2DFEð¹².ò¤¶; [B5, B6, C2, P1, V6]; xn--hvc488g69j402t.xn--3e36c; ; xn--hvc220of37m.xn--3e36c; [B5, B6, P1, V6] # â·¾ð¹².
+\u0CF8\u200D\u2DFEð¹²ï½¡ò¤¶; \u0CF8\u200D\u2DFEð¹².ò¤¶; [B5, B6, C2, V6]; xn--hvc488g69j402t.xn--3e36c; ; xn--hvc220of37m.xn--3e36c; [B5, B6, V6] # â·¾ð¹².
+\u0CF8\u200D\u2DFEð¹²ã€‚ò¤¶; \u0CF8\u200D\u2DFEð¹².ò¤¶; [B5, B6, C2, V6]; xn--hvc488g69j402t.xn--3e36c; ; xn--hvc220of37m.xn--3e36c; [B5, B6, V6] # â·¾ð¹².
xn--hvc220of37m.xn--3e36c; \u0CF8\u2DFEð¹².ò¤¶; [B5, B6, V6]; xn--hvc220of37m.xn--3e36c; ; ; # â·¾ð¹².
xn--hvc488g69j402t.xn--3e36c; \u0CF8\u200D\u2DFEð¹².ò¤¶; [B5, B6, C2, V6]; xn--hvc488g69j402t.xn--3e36c; ; ; # â·¾ð¹².
-ð¹¢ï¼Žá‚­â‚‰â¸; ð¹¢.á‚­98; [B1, P1, V6]; xn--9n0d.xn--98-7ek; ; ; # ð¹¢.á‚­98
-ð¹¢.á‚­98; ; [B1, P1, V6]; xn--9n0d.xn--98-7ek; ; ; # ð¹¢.á‚­98
+ð¹¢ï¼Žá‚­â‚‰â¸; ð¹¢.á‚­98; [B1, V6]; xn--9n0d.xn--98-7ek; ; ; # ð¹¢.á‚­98
+ð¹¢.á‚­98; ; [B1, V6]; xn--9n0d.xn--98-7ek; ; ; # ð¹¢.á‚­98
ð¹¢.â´98; ; [B1]; xn--9n0d.xn--98-u61a; ; ; # ð¹¢.â´98
xn--9n0d.xn--98-u61a; ð¹¢.â´98; [B1]; xn--9n0d.xn--98-u61a; ; ; # ð¹¢.â´98
xn--9n0d.xn--98-7ek; ð¹¢.á‚­98; [B1, V6]; xn--9n0d.xn--98-7ek; ; ; # ð¹¢.á‚­98
ð¹¢ï¼Žâ´â‚‰â¸; ð¹¢.â´98; [B1]; xn--9n0d.xn--98-u61a; ; ; # ð¹¢.â´98
-\u200C\u034F。ß\u08E2⒚≯; \u200C.ß\u08E2⒚≯; [B1, B5, B6, C1, P1, V6]; xn--0ug.xn--zca612bx9vo5b; ; .xn--ss-9if872xjjc; [B5, B6, P1, V6, A4_2] # .ß⒚≯
-\u200C\u034F。ß\u08E2⒚>\u0338; \u200C.ß\u08E2⒚≯; [B1, B5, B6, C1, P1, V6]; xn--0ug.xn--zca612bx9vo5b; ; .xn--ss-9if872xjjc; [B5, B6, P1, V6, A4_2] # .ß⒚≯
-\u200C\u034F。ß\u08E219.≯; \u200C.ß\u08E219.≯; [B1, B5, C1, P1, V6]; xn--0ug.xn--19-fia813f.xn--hdh; ; .xn--ss19-w0i.xn--hdh; [B1, B5, P1, V6, A4_2] # .ß19.≯
-\u200C\u034F。ß\u08E219.>\u0338; \u200C.ß\u08E219.≯; [B1, B5, C1, P1, V6]; xn--0ug.xn--19-fia813f.xn--hdh; ; .xn--ss19-w0i.xn--hdh; [B1, B5, P1, V6, A4_2] # .ß19.≯
-\u200C\u034F。SS\u08E219.>\u0338; \u200C.ss\u08E219.≯; [B1, B5, C1, P1, V6]; xn--0ug.xn--ss19-w0i.xn--hdh; ; .xn--ss19-w0i.xn--hdh; [B1, B5, P1, V6, A4_2] # .ss19.≯
-\u200C\u034F。SS\u08E219.≯; \u200C.ss\u08E219.≯; [B1, B5, C1, P1, V6]; xn--0ug.xn--ss19-w0i.xn--hdh; ; .xn--ss19-w0i.xn--hdh; [B1, B5, P1, V6, A4_2] # .ss19.≯
-\u200C\u034F。ss\u08E219.≯; \u200C.ss\u08E219.≯; [B1, B5, C1, P1, V6]; xn--0ug.xn--ss19-w0i.xn--hdh; ; .xn--ss19-w0i.xn--hdh; [B1, B5, P1, V6, A4_2] # .ss19.≯
-\u200C\u034F。ss\u08E219.>\u0338; \u200C.ss\u08E219.≯; [B1, B5, C1, P1, V6]; xn--0ug.xn--ss19-w0i.xn--hdh; ; .xn--ss19-w0i.xn--hdh; [B1, B5, P1, V6, A4_2] # .ss19.≯
-\u200C\u034F。Ss\u08E219.>\u0338; \u200C.ss\u08E219.≯; [B1, B5, C1, P1, V6]; xn--0ug.xn--ss19-w0i.xn--hdh; ; .xn--ss19-w0i.xn--hdh; [B1, B5, P1, V6, A4_2] # .ss19.≯
-\u200C\u034F。Ss\u08E219.≯; \u200C.ss\u08E219.≯; [B1, B5, C1, P1, V6]; xn--0ug.xn--ss19-w0i.xn--hdh; ; .xn--ss19-w0i.xn--hdh; [B1, B5, P1, V6, A4_2] # .ss19.≯
+\u200C\u034F。ß\u08E2⒚≯; \u200C.ß\u08E2⒚≯; [B1, B5, B6, C1, V6]; xn--0ug.xn--zca612bx9vo5b; ; .xn--ss-9if872xjjc; [B5, B6, V6, A4_2] # .ß⒚≯
+\u200C\u034F。ß\u08E2⒚>\u0338; \u200C.ß\u08E2⒚≯; [B1, B5, B6, C1, V6]; xn--0ug.xn--zca612bx9vo5b; ; .xn--ss-9if872xjjc; [B5, B6, V6, A4_2] # .ß⒚≯
+\u200C\u034F。ß\u08E219.≯; \u200C.ß\u08E219.≯; [B1, B5, C1, V6]; xn--0ug.xn--19-fia813f.xn--hdh; ; .xn--ss19-w0i.xn--hdh; [B1, B5, V6, A4_2] # .ß19.≯
+\u200C\u034F。ß\u08E219.>\u0338; \u200C.ß\u08E219.≯; [B1, B5, C1, V6]; xn--0ug.xn--19-fia813f.xn--hdh; ; .xn--ss19-w0i.xn--hdh; [B1, B5, V6, A4_2] # .ß19.≯
+\u200C\u034F。SS\u08E219.>\u0338; \u200C.ss\u08E219.≯; [B1, B5, C1, V6]; xn--0ug.xn--ss19-w0i.xn--hdh; ; .xn--ss19-w0i.xn--hdh; [B1, B5, V6, A4_2] # .ss19.≯
+\u200C\u034F。SS\u08E219.≯; \u200C.ss\u08E219.≯; [B1, B5, C1, V6]; xn--0ug.xn--ss19-w0i.xn--hdh; ; .xn--ss19-w0i.xn--hdh; [B1, B5, V6, A4_2] # .ss19.≯
+\u200C\u034F。ss\u08E219.≯; \u200C.ss\u08E219.≯; [B1, B5, C1, V6]; xn--0ug.xn--ss19-w0i.xn--hdh; ; .xn--ss19-w0i.xn--hdh; [B1, B5, V6, A4_2] # .ss19.≯
+\u200C\u034F。ss\u08E219.>\u0338; \u200C.ss\u08E219.≯; [B1, B5, C1, V6]; xn--0ug.xn--ss19-w0i.xn--hdh; ; .xn--ss19-w0i.xn--hdh; [B1, B5, V6, A4_2] # .ss19.≯
+\u200C\u034F。Ss\u08E219.>\u0338; \u200C.ss\u08E219.≯; [B1, B5, C1, V6]; xn--0ug.xn--ss19-w0i.xn--hdh; ; .xn--ss19-w0i.xn--hdh; [B1, B5, V6, A4_2] # .ss19.≯
+\u200C\u034F。Ss\u08E219.≯; \u200C.ss\u08E219.≯; [B1, B5, C1, V6]; xn--0ug.xn--ss19-w0i.xn--hdh; ; .xn--ss19-w0i.xn--hdh; [B1, B5, V6, A4_2] # .ss19.≯
.xn--ss19-w0i.xn--hdh; .ss\u08E219.≯; [B1, B5, V6, X4_2]; .xn--ss19-w0i.xn--hdh; [B1, B5, V6, A4_2]; ; # .ss19.≯
xn--0ug.xn--ss19-w0i.xn--hdh; \u200C.ss\u08E219.≯; [B1, B5, C1, V6]; xn--0ug.xn--ss19-w0i.xn--hdh; ; ; # .ss19.≯
xn--0ug.xn--19-fia813f.xn--hdh; \u200C.ß\u08E219.≯; [B1, B5, C1, V6]; xn--0ug.xn--19-fia813f.xn--hdh; ; ; # .ß19.≯
-\u200C\u034F。SS\u08E2⒚>\u0338; \u200C.ss\u08E2⒚≯; [B1, B5, B6, C1, P1, V6]; xn--0ug.xn--ss-9if872xjjc; ; .xn--ss-9if872xjjc; [B5, B6, P1, V6, A4_2] # .ss⒚≯
-\u200C\u034F。SS\u08E2⒚≯; \u200C.ss\u08E2⒚≯; [B1, B5, B6, C1, P1, V6]; xn--0ug.xn--ss-9if872xjjc; ; .xn--ss-9if872xjjc; [B5, B6, P1, V6, A4_2] # .ss⒚≯
-\u200C\u034F。ss\u08E2⒚≯; \u200C.ss\u08E2⒚≯; [B1, B5, B6, C1, P1, V6]; xn--0ug.xn--ss-9if872xjjc; ; .xn--ss-9if872xjjc; [B5, B6, P1, V6, A4_2] # .ss⒚≯
-\u200C\u034F。ss\u08E2⒚>\u0338; \u200C.ss\u08E2⒚≯; [B1, B5, B6, C1, P1, V6]; xn--0ug.xn--ss-9if872xjjc; ; .xn--ss-9if872xjjc; [B5, B6, P1, V6, A4_2] # .ss⒚≯
-\u200C\u034F。Ss\u08E2⒚>\u0338; \u200C.ss\u08E2⒚≯; [B1, B5, B6, C1, P1, V6]; xn--0ug.xn--ss-9if872xjjc; ; .xn--ss-9if872xjjc; [B5, B6, P1, V6, A4_2] # .ss⒚≯
-\u200C\u034F。Ss\u08E2⒚≯; \u200C.ss\u08E2⒚≯; [B1, B5, B6, C1, P1, V6]; xn--0ug.xn--ss-9if872xjjc; ; .xn--ss-9if872xjjc; [B5, B6, P1, V6, A4_2] # .ss⒚≯
+\u200C\u034F。SS\u08E2⒚>\u0338; \u200C.ss\u08E2⒚≯; [B1, B5, B6, C1, V6]; xn--0ug.xn--ss-9if872xjjc; ; .xn--ss-9if872xjjc; [B5, B6, V6, A4_2] # .ss⒚≯
+\u200C\u034F。SS\u08E2⒚≯; \u200C.ss\u08E2⒚≯; [B1, B5, B6, C1, V6]; xn--0ug.xn--ss-9if872xjjc; ; .xn--ss-9if872xjjc; [B5, B6, V6, A4_2] # .ss⒚≯
+\u200C\u034F。ss\u08E2⒚≯; \u200C.ss\u08E2⒚≯; [B1, B5, B6, C1, V6]; xn--0ug.xn--ss-9if872xjjc; ; .xn--ss-9if872xjjc; [B5, B6, V6, A4_2] # .ss⒚≯
+\u200C\u034F。ss\u08E2⒚>\u0338; \u200C.ss\u08E2⒚≯; [B1, B5, B6, C1, V6]; xn--0ug.xn--ss-9if872xjjc; ; .xn--ss-9if872xjjc; [B5, B6, V6, A4_2] # .ss⒚≯
+\u200C\u034F。Ss\u08E2⒚>\u0338; \u200C.ss\u08E2⒚≯; [B1, B5, B6, C1, V6]; xn--0ug.xn--ss-9if872xjjc; ; .xn--ss-9if872xjjc; [B5, B6, V6, A4_2] # .ss⒚≯
+\u200C\u034F。Ss\u08E2⒚≯; \u200C.ss\u08E2⒚≯; [B1, B5, B6, C1, V6]; xn--0ug.xn--ss-9if872xjjc; ; .xn--ss-9if872xjjc; [B5, B6, V6, A4_2] # .ss⒚≯
.xn--ss-9if872xjjc; .ss\u08E2⒚≯; [B5, B6, V6, X4_2]; .xn--ss-9if872xjjc; [B5, B6, V6, A4_2]; ; # .ss⒚≯
xn--0ug.xn--ss-9if872xjjc; \u200C.ss\u08E2⒚≯; [B1, B5, B6, C1, V6]; xn--0ug.xn--ss-9if872xjjc; ; ; # .ss⒚≯
xn--0ug.xn--zca612bx9vo5b; \u200C.ß\u08E2⒚≯; [B1, B5, B6, C1, V6]; xn--0ug.xn--zca612bx9vo5b; ; ; # .ß⒚≯
-\u200Cðž¥á¡Œï¼Žð£ƒ”; \u200Cðž¥á¡Œ.𣃔; [B1, C1, P1, V6]; xn--c8e180bqz13b.xn--od1j; ; xn--c8e5919u.xn--od1j; [B2, B3, P1, V6] # á¡Œ.𣃔
-\u200Cðž¥á¡Œ.𣃔; ; [B1, C1, P1, V6]; xn--c8e180bqz13b.xn--od1j; ; xn--c8e5919u.xn--od1j; [B2, B3, P1, V6] # á¡Œ.𣃔
+\u200Cðž¥á¡Œï¼Žð£ƒ”; \u200Cðž¥á¡Œ.𣃔; [B1, C1, V6]; xn--c8e180bqz13b.xn--od1j; ; xn--c8e5919u.xn--od1j; [B2, B3, V6] # á¡Œ.𣃔
+\u200Cðž¥á¡Œ.𣃔; ; [B1, C1, V6]; xn--c8e180bqz13b.xn--od1j; ; xn--c8e5919u.xn--od1j; [B2, B3, V6] # á¡Œ.𣃔
xn--c8e5919u.xn--od1j; ðž¥á¡Œ.𣃔; [B2, B3, V6]; xn--c8e5919u.xn--od1j; ; ; # á¡Œ.𣃔
xn--c8e180bqz13b.xn--od1j; \u200Cðž¥á¡Œ.𣃔; [B1, C1, V6]; xn--c8e180bqz13b.xn--od1j; ; ; # á¡Œ.𣃔
-\u07D0òœ¬-ñ¡¢¬ã€‚\u0FA0á‚»ðž·ð†¬; \u07D0òœ¬-ñ¡¢¬.\u0FA0á‚»ðž·ð†¬; [B1, B2, B3, P1, V5, V6]; xn----8bd11730jefvw.xn--wfd08cd265hgsxa; ; ; # ß-.ྠႻð†¬
-\u07D0òœ¬-ñ¡¢¬ã€‚\u0FA0â´›ðž·ð†¬; \u07D0òœ¬-ñ¡¢¬.\u0FA0â´›ðž·ð†¬; [B1, B2, B3, P1, V5, V6]; xn----8bd11730jefvw.xn--wfd802mpm20agsxa; ; ; # ß-.ྠⴛð†¬
+\u07D0òœ¬-ñ¡¢¬ã€‚\u0FA0á‚»ðž·ð†¬; \u07D0òœ¬-ñ¡¢¬.\u0FA0á‚»ðž·ð†¬; [B1, B2, B3, V5, V6]; xn----8bd11730jefvw.xn--wfd08cd265hgsxa; ; ; # ß-.ྠႻð†¬
+\u07D0òœ¬-ñ¡¢¬ã€‚\u0FA0â´›ðž·ð†¬; \u07D0òœ¬-ñ¡¢¬.\u0FA0â´›ðž·ð†¬; [B1, B2, B3, V5, V6]; xn----8bd11730jefvw.xn--wfd802mpm20agsxa; ; ; # ß-.ྠⴛð†¬
xn----8bd11730jefvw.xn--wfd802mpm20agsxa; \u07D0òœ¬-ñ¡¢¬.\u0FA0â´›ðž·ð†¬; [B1, B2, B3, V5, V6]; xn----8bd11730jefvw.xn--wfd802mpm20agsxa; ; ; # ß-.ྠⴛð†¬
xn----8bd11730jefvw.xn--wfd08cd265hgsxa; \u07D0òœ¬-ñ¡¢¬.\u0FA0á‚»ðž·ð†¬; [B1, B2, B3, V5, V6]; xn----8bd11730jefvw.xn--wfd08cd265hgsxa; ; ; # ß-.ྠႻð†¬
ð¨¥ã€‚⫟𑈾; ð¨¥.⫟𑈾; [V5]; xn--n82h.xn--63iw010f; ; ; # ð¨¥.⫟𑈾
xn--n82h.xn--63iw010f; ð¨¥.⫟𑈾; [V5]; xn--n82h.xn--63iw010f; ; ; # ð¨¥.⫟𑈾
-⾛\u0753.Ⴕ𞠬\u0604\u200D; 走\u0753.Ⴕ𞠬\u0604\u200D; [B5, B6, C2, P1, V6]; xn--6ob9779d.xn--mfb785czmm0y85b; ; xn--6ob9779d.xn--mfb785ck569a; [B5, B6, P1, V6] # 走ݓ.Ⴕ𞠬
-走\u0753.Ⴕ𞠬\u0604\u200D; ; [B5, B6, C2, P1, V6]; xn--6ob9779d.xn--mfb785czmm0y85b; ; xn--6ob9779d.xn--mfb785ck569a; [B5, B6, P1, V6] # 走ݓ.Ⴕ𞠬
-èµ°\u0753.â´•ðž ¬\u0604\u200D; ; [B5, B6, C2, P1, V6]; xn--6ob9779d.xn--mfb444k5gjt754b; ; xn--6ob9779d.xn--mfb511rxu80a; [B5, B6, P1, V6] # èµ°Ý“.â´•ðž ¬
+⾛\u0753.Ⴕ𞠬\u0604\u200D; 走\u0753.Ⴕ𞠬\u0604\u200D; [B5, B6, C2, V6]; xn--6ob9779d.xn--mfb785czmm0y85b; ; xn--6ob9779d.xn--mfb785ck569a; [B5, B6, V6] # 走ݓ.Ⴕ𞠬
+走\u0753.Ⴕ𞠬\u0604\u200D; ; [B5, B6, C2, V6]; xn--6ob9779d.xn--mfb785czmm0y85b; ; xn--6ob9779d.xn--mfb785ck569a; [B5, B6, V6] # 走ݓ.Ⴕ𞠬
+èµ°\u0753.â´•ðž ¬\u0604\u200D; ; [B5, B6, C2, V6]; xn--6ob9779d.xn--mfb444k5gjt754b; ; xn--6ob9779d.xn--mfb511rxu80a; [B5, B6, V6] # èµ°Ý“.â´•ðž ¬
xn--6ob9779d.xn--mfb511rxu80a; èµ°\u0753.â´•ðž ¬\u0604; [B5, B6, V6]; xn--6ob9779d.xn--mfb511rxu80a; ; ; # èµ°Ý“.â´•ðž ¬
xn--6ob9779d.xn--mfb444k5gjt754b; èµ°\u0753.â´•ðž ¬\u0604\u200D; [B5, B6, C2, V6]; xn--6ob9779d.xn--mfb444k5gjt754b; ; ; # èµ°Ý“.â´•ðž ¬
xn--6ob9779d.xn--mfb785ck569a; 走\u0753.Ⴕ𞠬\u0604; [B5, B6, V6]; xn--6ob9779d.xn--mfb785ck569a; ; ; # 走ݓ.Ⴕ𞠬
xn--6ob9779d.xn--mfb785czmm0y85b; 走\u0753.Ⴕ𞠬\u0604\u200D; [B5, B6, C2, V6]; xn--6ob9779d.xn--mfb785czmm0y85b; ; ; # 走ݓ.Ⴕ𞠬
-â¾›\u0753.â´•ðž ¬\u0604\u200D; èµ°\u0753.â´•ðž ¬\u0604\u200D; [B5, B6, C2, P1, V6]; xn--6ob9779d.xn--mfb444k5gjt754b; ; xn--6ob9779d.xn--mfb511rxu80a; [B5, B6, P1, V6] # èµ°Ý“.â´•ðž ¬
--ᢗ\u200C🄄.𑜢; ; [C1, P1, V3, V5, V6]; xn----pck312bx563c.xn--9h2d; ; xn----pck1820x.xn--9h2d; [P1, V3, V5, V6] # -ᢗ🄄.𑜢
--ᢗ\u200C3,.𑜢; ; [C1, P1, V3, V5, V6]; xn---3,-3eu051c.xn--9h2d; ; xn---3,-3eu.xn--9h2d; [P1, V3, V5, V6] # -ᢗ3,.𑜢
-xn---3,-3eu.xn--9h2d; -ᢗ3,.𑜢; [P1, V3, V5, V6]; xn---3,-3eu.xn--9h2d; ; ; # -ᢗ3,.𑜢
-xn---3,-3eu051c.xn--9h2d; -ᢗ\u200C3,.𑜢; [C1, P1, V3, V5, V6]; xn---3,-3eu051c.xn--9h2d; ; ; # -ᢗ3,.𑜢
+â¾›\u0753.â´•ðž ¬\u0604\u200D; èµ°\u0753.â´•ðž ¬\u0604\u200D; [B5, B6, C2, V6]; xn--6ob9779d.xn--mfb444k5gjt754b; ; xn--6ob9779d.xn--mfb511rxu80a; [B5, B6, V6] # èµ°Ý“.â´•ðž ¬
+-ᢗ\u200C🄄.𑜢; ; [C1, V3, V5, V6]; xn----pck312bx563c.xn--9h2d; ; xn----pck1820x.xn--9h2d; [V3, V5, V6] # -ᢗ🄄.𑜢
+-ᢗ\u200C3,.𑜢; ; [C1, V3, V5, V6]; xn---3,-3eu051c.xn--9h2d; ; xn---3,-3eu.xn--9h2d; [V3, V5, V6] # -ᢗ3,.𑜢
+xn---3,-3eu.xn--9h2d; -ᢗ3,.𑜢; [V3, V5, V6]; xn---3,-3eu.xn--9h2d; ; ; # -ᢗ3,.𑜢
+xn---3,-3eu051c.xn--9h2d; -ᢗ\u200C3,.𑜢; [C1, V3, V5, V6]; xn---3,-3eu051c.xn--9h2d; ; ; # -ᢗ3,.𑜢
xn----pck1820x.xn--9h2d; -ᢗ🄄.𑜢; [V3, V5, V6]; xn----pck1820x.xn--9h2d; ; ; # -ᢗ🄄.𑜢
xn----pck312bx563c.xn--9h2d; -ᢗ\u200C🄄.𑜢; [C1, V3, V5, V6]; xn----pck312bx563c.xn--9h2d; ; ; # -ᢗ🄄.𑜢
-≠ð¸ð¹\u200C.Ⴚò³„ ; ; [B1, C1, P1, V6]; xn--0ug83gn618a21ov.xn--ynd49496l; ; xn--1ch2293gv3nr.xn--ynd49496l; [B1, P1, V6] # ≠.Ⴚ
-=\u0338ð¸ð¹\u200C.Ⴚò³„ ; ≠ð¸ð¹\u200C.Ⴚò³„ ; [B1, C1, P1, V6]; xn--0ug83gn618a21ov.xn--ynd49496l; ; xn--1ch2293gv3nr.xn--ynd49496l; [B1, P1, V6] # ≠.Ⴚ
-=\u0338ð¸ð¹\u200C.â´šò³„ ; ≠ð¸ð¹\u200C.â´šò³„ ; [B1, C1, P1, V6]; xn--0ug83gn618a21ov.xn--ilj23531g; ; xn--1ch2293gv3nr.xn--ilj23531g; [B1, P1, V6] # ≠.â´š
-≠ð¸ð¹\u200C.â´šò³„ ; ; [B1, C1, P1, V6]; xn--0ug83gn618a21ov.xn--ilj23531g; ; xn--1ch2293gv3nr.xn--ilj23531g; [B1, P1, V6] # ≠.â´š
+≠ð¸ð¹\u200C.Ⴚò³„ ; ; [B1, C1, V6]; xn--0ug83gn618a21ov.xn--ynd49496l; ; xn--1ch2293gv3nr.xn--ynd49496l; [B1, V6] # ≠.Ⴚ
+=\u0338ð¸ð¹\u200C.Ⴚò³„ ; ≠ð¸ð¹\u200C.Ⴚò³„ ; [B1, C1, V6]; xn--0ug83gn618a21ov.xn--ynd49496l; ; xn--1ch2293gv3nr.xn--ynd49496l; [B1, V6] # ≠.Ⴚ
+=\u0338ð¸ð¹\u200C.â´šò³„ ; ≠ð¸ð¹\u200C.â´šò³„ ; [B1, C1, V6]; xn--0ug83gn618a21ov.xn--ilj23531g; ; xn--1ch2293gv3nr.xn--ilj23531g; [B1, V6] # ≠.â´š
+≠ð¸ð¹\u200C.â´šò³„ ; ; [B1, C1, V6]; xn--0ug83gn618a21ov.xn--ilj23531g; ; xn--1ch2293gv3nr.xn--ilj23531g; [B1, V6] # ≠.â´š
xn--1ch2293gv3nr.xn--ilj23531g; ≠ð¸ð¹.â´šò³„ ; [B1, V6]; xn--1ch2293gv3nr.xn--ilj23531g; ; ; # ≠.â´š
xn--0ug83gn618a21ov.xn--ilj23531g; ≠ð¸ð¹\u200C.â´šò³„ ; [B1, C1, V6]; xn--0ug83gn618a21ov.xn--ilj23531g; ; ; # ≠.â´š
xn--1ch2293gv3nr.xn--ynd49496l; ≠ð¸ð¹.Ⴚò³„ ; [B1, V6]; xn--1ch2293gv3nr.xn--ynd49496l; ; ; # ≠.Ⴚ
xn--0ug83gn618a21ov.xn--ynd49496l; ≠ð¸ð¹\u200C.Ⴚò³„ ; [B1, C1, V6]; xn--0ug83gn618a21ov.xn--ynd49496l; ; ; # ≠.Ⴚ
-\u0669。󠇀𑇊; \u0669.𑇊; [B1, B3, B6, V5]; xn--iib.xn--6d1d; ; ; # ٩.𑇊
-\u0669。󠇀𑇊; \u0669.𑇊; [B1, B3, B6, V5]; xn--iib.xn--6d1d; ; ; # ٩.𑇊
-xn--iib.xn--6d1d; \u0669.𑇊; [B1, B3, B6, V5]; xn--iib.xn--6d1d; ; ; # ٩.𑇊
-\u1086𞶀≯â’。-; \u1086𞶀≯â’.-; [B1, P1, V3, V5, V6]; xn--hmd482gqqb8730g.-; ; ; # ႆ≯â’.-
-\u1086𞶀>\u0338â’。-; \u1086𞶀≯â’.-; [B1, P1, V3, V5, V6]; xn--hmd482gqqb8730g.-; ; ; # ႆ≯â’.-
-\u1086𞶀≯6.。-; \u1086𞶀≯6..-; [B1, P1, V3, V5, V6, X4_2]; xn--6-oyg968k7h74b..-; [B1, P1, V3, V5, V6, A4_2]; ; # ႆ≯6..-
-\u1086𞶀>\u03386.。-; \u1086𞶀≯6..-; [B1, P1, V3, V5, V6, X4_2]; xn--6-oyg968k7h74b..-; [B1, P1, V3, V5, V6, A4_2]; ; # ႆ≯6..-
+\u0669。󠇀𑇊; \u0669.𑇊; [B1, V5]; xn--iib.xn--6d1d; ; ; # ٩.𑇊
+\u0669。󠇀𑇊; \u0669.𑇊; [B1, V5]; xn--iib.xn--6d1d; ; ; # ٩.𑇊
+xn--iib.xn--6d1d; \u0669.𑇊; [B1, V5]; xn--iib.xn--6d1d; ; ; # ٩.𑇊
+\u1086𞶀≯â’。-; \u1086𞶀≯â’.-; [B1, V3, V5, V6]; xn--hmd482gqqb8730g.-; ; ; # ႆ≯â’.-
+\u1086𞶀>\u0338â’。-; \u1086𞶀≯â’.-; [B1, V3, V5, V6]; xn--hmd482gqqb8730g.-; ; ; # ႆ≯â’.-
+\u1086𞶀≯6.。-; \u1086𞶀≯6..-; [B1, V3, V5, V6, X4_2]; xn--6-oyg968k7h74b..-; [B1, V3, V5, V6, A4_2]; ; # ႆ≯6..-
+\u1086𞶀>\u03386.。-; \u1086𞶀≯6..-; [B1, V3, V5, V6, X4_2]; xn--6-oyg968k7h74b..-; [B1, V3, V5, V6, A4_2]; ; # ႆ≯6..-
xn--6-oyg968k7h74b..-; \u1086𞶀≯6..-; [B1, V3, V5, V6, X4_2]; xn--6-oyg968k7h74b..-; [B1, V3, V5, V6, A4_2]; ; # ႆ≯6..-
xn--hmd482gqqb8730g.-; \u1086𞶀≯â’.-; [B1, V3, V5, V6]; xn--hmd482gqqb8730g.-; ; ; # ႆ≯â’.-
-\u17B4.쮇-; ; [P1, V3, V5, V6]; xn--z3e.xn----938f; ; ; # .쮇-
-\u17B4.á„ᅰᆮ-; \u17B4.쮇-; [P1, V3, V5, V6]; xn--z3e.xn----938f; ; ; # .쮇-
+\u17B4.쮇-; ; [V3, V5, V6]; xn--z3e.xn----938f; ; ; # .쮇-
+\u17B4.á„ᅰᆮ-; \u17B4.쮇-; [V3, V5, V6]; xn--z3e.xn----938f; ; ; # .쮇-
xn--z3e.xn----938f; \u17B4.쮇-; [V3, V5, V6]; xn--z3e.xn----938f; ; ; # .쮇-
-\u200C𑓂。⒈-􀪛; \u200C𑓂.⒈-􀪛; [C1, P1, V6]; xn--0ugy057g.xn----dcp29674o; ; xn--wz1d.xn----dcp29674o; [P1, V5, V6] # 𑓂.⒈-
-\u200C𑓂。1.-􀪛; \u200C𑓂.1.-􀪛; [C1, P1, V3, V6]; xn--0ugy057g.1.xn----rg03o; ; xn--wz1d.1.xn----rg03o; [P1, V3, V5, V6] # 𑓂.1.-
+\u200C𑓂。⒈-􀪛; \u200C𑓂.⒈-􀪛; [C1, V6]; xn--0ugy057g.xn----dcp29674o; ; xn--wz1d.xn----dcp29674o; [V5, V6] # 𑓂.⒈-
+\u200C𑓂。1.-􀪛; \u200C𑓂.1.-􀪛; [C1, V3, V6]; xn--0ugy057g.1.xn----rg03o; ; xn--wz1d.1.xn----rg03o; [V3, V5, V6] # 𑓂.1.-
xn--wz1d.1.xn----rg03o; 𑓂.1.-􀪛; [V3, V5, V6]; xn--wz1d.1.xn----rg03o; ; ; # 𑓂.1.-
xn--0ugy057g.1.xn----rg03o; \u200C𑓂.1.-􀪛; [C1, V3, V6]; xn--0ugy057g.1.xn----rg03o; ; ; # 𑓂.1.-
xn--wz1d.xn----dcp29674o; 𑓂.⒈-􀪛; [V5, V6]; xn--wz1d.xn----dcp29674o; ; ; # 𑓂.⒈-
xn--0ugy057g.xn----dcp29674o; \u200C𑓂.⒈-􀪛; [C1, V6]; xn--0ugy057g.xn----dcp29674o; ; ; # 𑓂.⒈-
-⒈\uFEAE\u200C。\u20E9🖞\u200C𖬴; ⒈\u0631\u200C.\u20E9🖞\u200C𖬴; [B1, C1, P1, V5, V6]; xn--wgb253kmfd.xn--0ugz6a8040fty5d; ; xn--wgb746m.xn--c1g6021kg18c; [B1, P1, V5, V6] # ⒈ر.⃩🖞𖬴
+⒈\uFEAE\u200C。\u20E9🖞\u200C𖬴; ⒈\u0631\u200C.\u20E9🖞\u200C𖬴; [B1, C1, V5, V6]; xn--wgb253kmfd.xn--0ugz6a8040fty5d; ; xn--wgb746m.xn--c1g6021kg18c; [B1, V5, V6] # ⒈ر.⃩🖞𖬴
1.\u0631\u200C。\u20E9🖞\u200C𖬴; 1.\u0631\u200C.\u20E9🖞\u200C𖬴; [B1, B3, C1, V5]; 1.xn--wgb253k.xn--0ugz6a8040fty5d; ; 1.xn--wgb.xn--c1g6021kg18c; [B1, V5] # 1.ر.⃩🖞𖬴
1.xn--wgb.xn--c1g6021kg18c; 1.\u0631.\u20E9🖞𖬴; [B1, V5]; 1.xn--wgb.xn--c1g6021kg18c; ; ; # 1.ر.⃩🖞𖬴
1.xn--wgb253k.xn--0ugz6a8040fty5d; 1.\u0631\u200C.\u20E9🖞\u200C𖬴; [B1, B3, C1, V5]; 1.xn--wgb253k.xn--0ugz6a8040fty5d; ; ; # 1.ر.⃩🖞𖬴
xn--wgb746m.xn--c1g6021kg18c; ⒈\u0631.\u20E9🖞𖬴; [B1, V5, V6]; xn--wgb746m.xn--c1g6021kg18c; ; ; # ⒈ر.⃩🖞𖬴
xn--wgb253kmfd.xn--0ugz6a8040fty5d; ⒈\u0631\u200C.\u20E9🖞\u200C𖬴; [B1, C1, V5, V6]; xn--wgb253kmfd.xn--0ugz6a8040fty5d; ; ; # ⒈ر.⃩🖞𖬴
-󌭇。ðŸ\u1BA8\u07D4; 󌭇.2\u1BA8\u07D4; [B1, P1, V6]; xn--xm89d.xn--2-icd143m; ; ; # .2ᮨߔ
-󌭇。2\u1BA8\u07D4; 󌭇.2\u1BA8\u07D4; [B1, P1, V6]; xn--xm89d.xn--2-icd143m; ; ; # .2ᮨߔ
+󌭇。ðŸ\u1BA8\u07D4; 󌭇.2\u1BA8\u07D4; [B1, V6]; xn--xm89d.xn--2-icd143m; ; ; # .2ᮨߔ
+󌭇。2\u1BA8\u07D4; 󌭇.2\u1BA8\u07D4; [B1, V6]; xn--xm89d.xn--2-icd143m; ; ; # .2ᮨߔ
xn--xm89d.xn--2-icd143m; 󌭇.2\u1BA8\u07D4; [B1, V6]; xn--xm89d.xn--2-icd143m; ; ; # .2ᮨߔ
-\uFD8Fò«³º.Ï‚\u200Dð¹·; \u0645\u062E\u0645ò«³º.Ï‚\u200Dð¹·; [B2, B3, B5, B6, C2, P1, V6]; xn--tgb9bb64691z.xn--3xa006lrp7n; ; xn--tgb9bb64691z.xn--4xa6667k; [B2, B3, B5, B6, P1, V6] # مخم.Ï‚ð¹·
-\u0645\u062E\u0645ò«³º.Ï‚\u200Dð¹·; ; [B2, B3, B5, B6, C2, P1, V6]; xn--tgb9bb64691z.xn--3xa006lrp7n; ; xn--tgb9bb64691z.xn--4xa6667k; [B2, B3, B5, B6, P1, V6] # مخم.Ï‚ð¹·
-\u0645\u062E\u0645ò«³º.Σ\u200Dð¹·; \u0645\u062E\u0645ò«³º.σ\u200Dð¹·; [B2, B3, B5, B6, C2, P1, V6]; xn--tgb9bb64691z.xn--4xa895lrp7n; ; xn--tgb9bb64691z.xn--4xa6667k; [B2, B3, B5, B6, P1, V6] # مخم.σð¹·
-\u0645\u062E\u0645ò«³º.σ\u200Dð¹·; ; [B2, B3, B5, B6, C2, P1, V6]; xn--tgb9bb64691z.xn--4xa895lrp7n; ; xn--tgb9bb64691z.xn--4xa6667k; [B2, B3, B5, B6, P1, V6] # مخم.σð¹·
+\uFD8Fò«³º.Ï‚\u200Dð¹·; \u0645\u062E\u0645ò«³º.Ï‚\u200Dð¹·; [B2, B3, B5, B6, C2, V6]; xn--tgb9bb64691z.xn--3xa006lrp7n; ; xn--tgb9bb64691z.xn--4xa6667k; [B2, B3, B5, B6, V6] # مخم.Ï‚ð¹·
+\u0645\u062E\u0645ò«³º.Ï‚\u200Dð¹·; ; [B2, B3, B5, B6, C2, V6]; xn--tgb9bb64691z.xn--3xa006lrp7n; ; xn--tgb9bb64691z.xn--4xa6667k; [B2, B3, B5, B6, V6] # مخم.Ï‚ð¹·
+\u0645\u062E\u0645ò«³º.Σ\u200Dð¹·; \u0645\u062E\u0645ò«³º.σ\u200Dð¹·; [B2, B3, B5, B6, C2, V6]; xn--tgb9bb64691z.xn--4xa895lrp7n; ; xn--tgb9bb64691z.xn--4xa6667k; [B2, B3, B5, B6, V6] # مخم.σð¹·
+\u0645\u062E\u0645ò«³º.σ\u200Dð¹·; ; [B2, B3, B5, B6, C2, V6]; xn--tgb9bb64691z.xn--4xa895lrp7n; ; xn--tgb9bb64691z.xn--4xa6667k; [B2, B3, B5, B6, V6] # مخم.σð¹·
xn--tgb9bb64691z.xn--4xa6667k; \u0645\u062E\u0645ò«³º.σð¹·; [B2, B3, B5, B6, V6]; xn--tgb9bb64691z.xn--4xa6667k; ; ; # مخم.σð¹·
xn--tgb9bb64691z.xn--4xa895lrp7n; \u0645\u062E\u0645ò«³º.σ\u200Dð¹·; [B2, B3, B5, B6, C2, V6]; xn--tgb9bb64691z.xn--4xa895lrp7n; ; ; # مخم.σð¹·
xn--tgb9bb64691z.xn--3xa006lrp7n; \u0645\u062E\u0645ò«³º.Ï‚\u200Dð¹·; [B2, B3, B5, B6, C2, V6]; xn--tgb9bb64691z.xn--3xa006lrp7n; ; ; # مخم.Ï‚ð¹·
-\uFD8Fò«³º.Σ\u200Dð¹·; \u0645\u062E\u0645ò«³º.σ\u200Dð¹·; [B2, B3, B5, B6, C2, P1, V6]; xn--tgb9bb64691z.xn--4xa895lrp7n; ; xn--tgb9bb64691z.xn--4xa6667k; [B2, B3, B5, B6, P1, V6] # مخم.σð¹·
-\uFD8Fò«³º.σ\u200Dð¹·; \u0645\u062E\u0645ò«³º.σ\u200Dð¹·; [B2, B3, B5, B6, C2, P1, V6]; xn--tgb9bb64691z.xn--4xa895lrp7n; ; xn--tgb9bb64691z.xn--4xa6667k; [B2, B3, B5, B6, P1, V6] # مخم.σð¹·
-â’Ž\u06C1\u0605。\uAAF6Ûµð‡½; â’Ž\u06C1\u0605.\uAAF6Ûµð‡½; [B1, P1, V5, V6]; xn--nfb98ai25e.xn--imb3805fxt8b; ; ; # â’ŽÛ.꫶۵ð‡½
-7.\u06C1\u0605。\uAAF6Ûµð‡½; 7.\u06C1\u0605.\uAAF6Ûµð‡½; [B1, P1, V5, V6]; 7.xn--nfb98a.xn--imb3805fxt8b; ; ; # 7.Û.꫶۵ð‡½
+\uFD8Fò«³º.Σ\u200Dð¹·; \u0645\u062E\u0645ò«³º.σ\u200Dð¹·; [B2, B3, B5, B6, C2, V6]; xn--tgb9bb64691z.xn--4xa895lrp7n; ; xn--tgb9bb64691z.xn--4xa6667k; [B2, B3, B5, B6, V6] # مخم.σð¹·
+\uFD8Fò«³º.σ\u200Dð¹·; \u0645\u062E\u0645ò«³º.σ\u200Dð¹·; [B2, B3, B5, B6, C2, V6]; xn--tgb9bb64691z.xn--4xa895lrp7n; ; xn--tgb9bb64691z.xn--4xa6667k; [B2, B3, B5, B6, V6] # مخم.σð¹·
+â’Ž\u06C1\u0605。\uAAF6Ûµð‡½; â’Ž\u06C1\u0605.\uAAF6Ûµð‡½; [B1, V5, V6]; xn--nfb98ai25e.xn--imb3805fxt8b; ; ; # â’ŽÛ.꫶۵ð‡½
+7.\u06C1\u0605。\uAAF6Ûµð‡½; 7.\u06C1\u0605.\uAAF6Ûµð‡½; [B1, V5, V6]; 7.xn--nfb98a.xn--imb3805fxt8b; ; ; # 7.Û.꫶۵ð‡½
7.xn--nfb98a.xn--imb3805fxt8b; 7.\u06C1\u0605.\uAAF6Ûµð‡½; [B1, V5, V6]; 7.xn--nfb98a.xn--imb3805fxt8b; ; ; # 7.Û.꫶۵ð‡½
xn--nfb98ai25e.xn--imb3805fxt8b; â’Ž\u06C1\u0605.\uAAF6Ûµð‡½; [B1, V5, V6]; xn--nfb98ai25e.xn--imb3805fxt8b; ; ; # â’ŽÛ.꫶۵ð‡½
--ᡥ᠆ó²­ã€‚\u0605\u1A5Dð¹¡; -ᡥ᠆ó²­.\u0605\u1A5Dð¹¡; [B1, P1, V3, V6]; xn----f3j6s87156i.xn--nfb035hoo2p; ; ; # -ᡥ᠆.á©ð¹¡
+-ᡥ᠆ó²­ã€‚\u0605\u1A5Dð¹¡; -ᡥ᠆ó²­.\u0605\u1A5Dð¹¡; [B1, V3, V6]; xn----f3j6s87156i.xn--nfb035hoo2p; ; ; # -ᡥ᠆.á©ð¹¡
xn----f3j6s87156i.xn--nfb035hoo2p; -ᡥ᠆ó²­.\u0605\u1A5Dð¹¡; [B1, V3, V6]; xn----f3j6s87156i.xn--nfb035hoo2p; ; ; # -ᡥ᠆.á©ð¹¡
\u200D.\u06BD\u0663\u0596; ; [B1, C2]; xn--1ug.xn--hcb32bni; ; .xn--hcb32bni; [A4_2] # .Ú½Ù£Ö–
.xn--hcb32bni; .\u06BD\u0663\u0596; [X4_2]; .xn--hcb32bni; [A4_2]; ; # .Ú½Ù£Ö–
xn--1ug.xn--hcb32bni; \u200D.\u06BD\u0663\u0596; [B1, C2]; xn--1ug.xn--hcb32bni; ; ; # .Ú½Ù£Ö–
xn--hcb32bni; \u06BD\u0663\u0596; ; xn--hcb32bni; ; ; # Ú½Ù£Ö–
\u06BD\u0663\u0596; ; ; xn--hcb32bni; ; ; # Ú½Ù£Ö–
-㒧۱.Ⴚ\u0678\u200D; 㒧۱.Ⴚ\u064A\u0674\u200D; [B5, B6, C2, P1, V6]; xn--emb715u.xn--mhb8f817ao2p; ; xn--emb715u.xn--mhb8f817a; [B5, B6, P1, V6] # 㒧۱.Ⴚيٴ
-㒧۱.Ⴚ\u064A\u0674\u200D; ; [B5, B6, C2, P1, V6]; xn--emb715u.xn--mhb8f817ao2p; ; xn--emb715u.xn--mhb8f817a; [B5, B6, P1, V6] # 㒧۱.Ⴚيٴ
+㒧۱.Ⴚ\u0678\u200D; 㒧۱.Ⴚ\u064A\u0674\u200D; [B5, B6, C2, V6]; xn--emb715u.xn--mhb8f817ao2p; ; xn--emb715u.xn--mhb8f817a; [B5, B6, V6] # 㒧۱.Ⴚيٴ
+㒧۱.Ⴚ\u064A\u0674\u200D; ; [B5, B6, C2, V6]; xn--emb715u.xn--mhb8f817ao2p; ; xn--emb715u.xn--mhb8f817a; [B5, B6, V6] # 㒧۱.Ⴚيٴ
㒧۱.ⴚ\u064A\u0674\u200D; ; [B5, B6, C2]; xn--emb715u.xn--mhb8f960g03l; ; xn--emb715u.xn--mhb8fy26k; [B5, B6] # 㒧۱.ⴚيٴ
xn--emb715u.xn--mhb8fy26k; 㒧۱.ⴚ\u064A\u0674; [B5, B6]; xn--emb715u.xn--mhb8fy26k; ; ; # 㒧۱.ⴚيٴ
xn--emb715u.xn--mhb8f960g03l; 㒧۱.ⴚ\u064A\u0674\u200D; [B5, B6, C2]; xn--emb715u.xn--mhb8f960g03l; ; ; # 㒧۱.ⴚيٴ
@@ -5911,10 +5941,10 @@ xn--emb715u.xn--mhb8f817ao2p; 㒧۱.Ⴚ\u064A\u0674\u200D; [B5, B6, C2, V6]; xn-
\u0F94ꡋ-.-𖬴; \u0F94ꡋ-.-𖬴; [V3, V5]; xn----ukg9938i.xn----4u5m; ; ; # ྔꡋ-.-𖬴
\u0F94ꡋ-.-𖬴; ; [V3, V5]; xn----ukg9938i.xn----4u5m; ; ; # ྔꡋ-.-𖬴
xn----ukg9938i.xn----4u5m; \u0F94ꡋ-.-𖬴; [V3, V5]; xn----ukg9938i.xn----4u5m; ; ; # ྔꡋ-.-𖬴
-񿒳-⋢\u200C.标-; 񿒳-⋢\u200C.标-; [C1, P1, V3, V6]; xn----sgn90kn5663a.xn----qj7b; ; xn----9mo67451g.xn----qj7b; [P1, V3, V6] # -⋢.标-
-񿒳-⊑\u0338\u200C.标-; 񿒳-⋢\u200C.标-; [C1, P1, V3, V6]; xn----sgn90kn5663a.xn----qj7b; ; xn----9mo67451g.xn----qj7b; [P1, V3, V6] # -⋢.标-
-ñ¿’³-â‹¢\u200C.æ ‡-; ; [C1, P1, V3, V6]; xn----sgn90kn5663a.xn----qj7b; ; xn----9mo67451g.xn----qj7b; [P1, V3, V6] # -â‹¢.æ ‡-
-񿒳-⊑\u0338\u200C.标-; 񿒳-⋢\u200C.标-; [C1, P1, V3, V6]; xn----sgn90kn5663a.xn----qj7b; ; xn----9mo67451g.xn----qj7b; [P1, V3, V6] # -⋢.标-
+񿒳-⋢\u200C.标-; 񿒳-⋢\u200C.标-; [C1, V3, V6]; xn----sgn90kn5663a.xn----qj7b; ; xn----9mo67451g.xn----qj7b; [V3, V6] # -⋢.标-
+񿒳-⊑\u0338\u200C.标-; 񿒳-⋢\u200C.标-; [C1, V3, V6]; xn----sgn90kn5663a.xn----qj7b; ; xn----9mo67451g.xn----qj7b; [V3, V6] # -⋢.标-
+ñ¿’³-â‹¢\u200C.æ ‡-; ; [C1, V3, V6]; xn----sgn90kn5663a.xn----qj7b; ; xn----9mo67451g.xn----qj7b; [V3, V6] # -â‹¢.æ ‡-
+񿒳-⊑\u0338\u200C.标-; 񿒳-⋢\u200C.标-; [C1, V3, V6]; xn----sgn90kn5663a.xn----qj7b; ; xn----9mo67451g.xn----qj7b; [V3, V6] # -⋢.标-
xn----9mo67451g.xn----qj7b; ñ¿’³-â‹¢.æ ‡-; [V3, V6]; xn----9mo67451g.xn----qj7b; ; ; # -â‹¢.æ ‡-
xn----sgn90kn5663a.xn----qj7b; ñ¿’³-â‹¢\u200C.æ ‡-; [C1, V3, V6]; xn----sgn90kn5663a.xn----qj7b; ; ; # -â‹¢.æ ‡-
\u0671.ς\u07DC; \u0671.ς\u07DC; [B5, B6]; xn--qib.xn--3xa41s; ; xn--qib.xn--4xa21s; # ٱ.ςߜ
@@ -5925,150 +5955,150 @@ xn--qib.xn--4xa21s; \u0671.σ\u07DC; [B5, B6]; xn--qib.xn--4xa21s; ; ; # Ù±.σß
xn--qib.xn--3xa41s; \u0671.ς\u07DC; [B5, B6]; xn--qib.xn--3xa41s; ; ; # ٱ.ςߜ
\u0671.Σ\u07DC; \u0671.σ\u07DC; [B5, B6]; xn--qib.xn--4xa21s; ; ; # ٱ.σߜ
\u0671.σ\u07DC; \u0671.σ\u07DC; [B5, B6]; xn--qib.xn--4xa21s; ; ; # ٱ.σߜ
-ñ¼ˆ¶\u0605.\u08C1\u200Dð‘‘‚ð±¼±; ñ¼ˆ¶\u0605.\u08C1\u200Dð‘‘‚ð±¼±; [B2, B3, B5, B6, C2, P1, V6]; xn--nfb17942h.xn--nzb240jv06otevq; ; xn--nfb17942h.xn--nzb6708kx3pn; [B2, B3, B5, B6, P1, V6] # .à£ð‘‘‚ð±¼±
-ñ¼ˆ¶\u0605.\u08C1\u200Dð‘‘‚ð±¼±; ; [B2, B3, B5, B6, C2, P1, V6]; xn--nfb17942h.xn--nzb240jv06otevq; ; xn--nfb17942h.xn--nzb6708kx3pn; [B2, B3, B5, B6, P1, V6] # .à£ð‘‘‚ð±¼±
+ñ¼ˆ¶\u0605.\u08C1\u200Dð‘‘‚ð±¼±; ñ¼ˆ¶\u0605.\u08C1\u200Dð‘‘‚ð±¼±; [B2, B3, B5, B6, C2, V6]; xn--nfb17942h.xn--nzb240jv06otevq; ; xn--nfb17942h.xn--nzb6708kx3pn; [B2, B3, B5, B6, V6] # .à£ð‘‘‚ð±¼±
+ñ¼ˆ¶\u0605.\u08C1\u200Dð‘‘‚ð±¼±; ; [B2, B3, B5, B6, C2, V6]; xn--nfb17942h.xn--nzb240jv06otevq; ; xn--nfb17942h.xn--nzb6708kx3pn; [B2, B3, B5, B6, V6] # .à£ð‘‘‚ð±¼±
xn--nfb17942h.xn--nzb6708kx3pn; ñ¼ˆ¶\u0605.\u08C1ð‘‘‚ð±¼±; [B2, B3, B5, B6, V6]; xn--nfb17942h.xn--nzb6708kx3pn; ; ; # .à£ð‘‘‚ð±¼±
xn--nfb17942h.xn--nzb240jv06otevq; ñ¼ˆ¶\u0605.\u08C1\u200Dð‘‘‚ð±¼±; [B2, B3, B5, B6, C2, V6]; xn--nfb17942h.xn--nzb240jv06otevq; ; ; # .à£ð‘‘‚ð±¼±
-ð¹¾ð‹©ðžµœï½¡\u1BF2; ð¹¾ð‹©ðžµœ.\u1BF2; [B1, P1, V5, V6]; xn--d97cn8rn44p.xn--0zf; ; ; # ð¹¾ð‹©.᯲
-ð¹¾ð‹©ðžµœã€‚\u1BF2; ð¹¾ð‹©ðžµœ.\u1BF2; [B1, P1, V5, V6]; xn--d97cn8rn44p.xn--0zf; ; ; # ð¹¾ð‹©.᯲
+ð¹¾ð‹©ðžµœï½¡\u1BF2; ð¹¾ð‹©ðžµœ.\u1BF2; [B1, V5, V6]; xn--d97cn8rn44p.xn--0zf; ; ; # ð¹¾ð‹©.᯲
+ð¹¾ð‹©ðžµœã€‚\u1BF2; ð¹¾ð‹©ðžµœ.\u1BF2; [B1, V5, V6]; xn--d97cn8rn44p.xn--0zf; ; ; # ð¹¾ð‹©.᯲
xn--d97cn8rn44p.xn--0zf; ð¹¾ð‹©ðžµœ.\u1BF2; [B1, V5, V6]; xn--d97cn8rn44p.xn--0zf; ; ; # ð¹¾ð‹©.᯲
-6\u1160\u1C33󠸧.򟜊锰\u072Cς; ; [B1, B5, P1, V6]; xn--6-5bh476ewr517a.xn--3xa16ohw6pk078g; ; xn--6-5bh476ewr517a.xn--4xa95ohw6pk078g; # 6ᰳ.锰ܬς
-6\u1160\u1C33󠸧.򟜊锰\u072CΣ; 6\u1160\u1C33󠸧.򟜊锰\u072Cσ; [B1, B5, P1, V6]; xn--6-5bh476ewr517a.xn--4xa95ohw6pk078g; ; ; # 6ᰳ.锰ܬσ
-6\u1160\u1C33󠸧.򟜊锰\u072Cσ; ; [B1, B5, P1, V6]; xn--6-5bh476ewr517a.xn--4xa95ohw6pk078g; ; ; # 6ᰳ.锰ܬσ
+6\u1160\u1C33󠸧.򟜊锰\u072Cς; ; [B1, B5, V6]; xn--6-5bh476ewr517a.xn--3xa16ohw6pk078g; ; xn--6-5bh476ewr517a.xn--4xa95ohw6pk078g; # 6ᰳ.锰ܬς
+6\u1160\u1C33󠸧.򟜊锰\u072CΣ; 6\u1160\u1C33󠸧.򟜊锰\u072Cσ; [B1, B5, V6]; xn--6-5bh476ewr517a.xn--4xa95ohw6pk078g; ; ; # 6ᰳ.锰ܬσ
+6\u1160\u1C33󠸧.򟜊锰\u072Cσ; ; [B1, B5, V6]; xn--6-5bh476ewr517a.xn--4xa95ohw6pk078g; ; ; # 6ᰳ.锰ܬσ
xn--6-5bh476ewr517a.xn--4xa95ohw6pk078g; 6\u1160\u1C33󠸧.򟜊锰\u072Cσ; [B1, B5, V6]; xn--6-5bh476ewr517a.xn--4xa95ohw6pk078g; ; ; # 6ᰳ.锰ܬσ
xn--6-5bh476ewr517a.xn--3xa16ohw6pk078g; 6\u1160\u1C33󠸧.򟜊锰\u072Cς; [B1, B5, V6]; xn--6-5bh476ewr517a.xn--3xa16ohw6pk078g; ; ; # 6ᰳ.锰ܬς
-\u06B3\uFE04ñ…Ž¦ðŸ½ï½¡ð¹½; \u06B3ñ…Ž¦7.ð¹½; [B1, B2, P1, V6]; xn--7-yuc34665f.xn--1o0d; ; ; # Ú³7.ð¹½
-\u06B3\uFE04ñ…Ž¦7。ð¹½; \u06B3ñ…Ž¦7.ð¹½; [B1, B2, P1, V6]; xn--7-yuc34665f.xn--1o0d; ; ; # Ú³7.ð¹½
+\u06B3\uFE04ñ…Ž¦ðŸ½ï½¡ð¹½; \u06B3ñ…Ž¦7.ð¹½; [B1, B2, V6]; xn--7-yuc34665f.xn--1o0d; ; ; # Ú³7.ð¹½
+\u06B3\uFE04ñ…Ž¦7。ð¹½; \u06B3ñ…Ž¦7.ð¹½; [B1, B2, V6]; xn--7-yuc34665f.xn--1o0d; ; ; # Ú³7.ð¹½
xn--7-yuc34665f.xn--1o0d; \u06B3ñ…Ž¦7.ð¹½; [B1, B2, V6]; xn--7-yuc34665f.xn--1o0d; ; ; # Ú³7.ð¹½
-𞮧.\u200C⫞; 𞮧.\u200C⫞; [B1, C1, P1, V6]; xn--pw6h.xn--0ug283b; ; xn--pw6h.xn--53i; [B1, P1, V6] # .⫞
-𞮧.\u200C⫞; ; [B1, C1, P1, V6]; xn--pw6h.xn--0ug283b; ; xn--pw6h.xn--53i; [B1, P1, V6] # .⫞
+𞮧.\u200C⫞; 𞮧.\u200C⫞; [B1, C1, V6]; xn--pw6h.xn--0ug283b; ; xn--pw6h.xn--53i; [B1, V6] # .⫞
+𞮧.\u200C⫞; ; [B1, C1, V6]; xn--pw6h.xn--0ug283b; ; xn--pw6h.xn--53i; [B1, V6] # .⫞
xn--pw6h.xn--53i; 𞮧.⫞; [B1, V6]; xn--pw6h.xn--53i; ; ; # .⫞
xn--pw6h.xn--0ug283b; 𞮧.\u200C⫞; [B1, C1, V6]; xn--pw6h.xn--0ug283b; ; ; # .⫞
--񕉴.\u06E0ᢚ-; ; [P1, V3, V5, V6]; xn----qi38c.xn----jxc827k; ; ; # -.۠ᢚ-
+-񕉴.\u06E0ᢚ-; ; [V3, V5, V6]; xn----qi38c.xn----jxc827k; ; ; # -.۠ᢚ-
xn----qi38c.xn----jxc827k; -񕉴.\u06E0ᢚ-; [V3, V5, V6]; xn----qi38c.xn----jxc827k; ; ; # -.۠ᢚ-
âŒ\u200D𑄴.\u200CðŸ©\u066C; âŒ\u200Dð‘„´.\u200C7\u066C; [B1, C1, C2]; xn--1ug38i2093a.xn--7-xqc297q; ; xn--nhh5394g.xn--7-xqc; [B1] # âŒð‘„´.7Ù¬
âŒ\u200Dð‘„´.\u200C7\u066C; ; [B1, C1, C2]; xn--1ug38i2093a.xn--7-xqc297q; ; xn--nhh5394g.xn--7-xqc; [B1] # âŒð‘„´.7Ù¬
xn--nhh5394g.xn--7-xqc; âŒð‘„´.7\u066C; [B1]; xn--nhh5394g.xn--7-xqc; ; ; # âŒð‘„´.7Ù¬
xn--1ug38i2093a.xn--7-xqc297q; âŒ\u200Dð‘„´.\u200C7\u066C; [B1, C1, C2]; xn--1ug38i2093a.xn--7-xqc297q; ; ; # âŒð‘„´.7Ù¬
-︒\uFD05\u0E37\uFEFC。岓\u1BF2󠾃ᡂ; ︒\u0635\u0649\u0E37\u0644\u0627.岓\u1BF2󠾃ᡂ; [B1, P1, V6]; xn--mgb1a7bt462hf267a.xn--17e10qe61f9r71s; ; ; # ︒صىืلا.岓᯲ᡂ
-。\u0635\u0649\u0E37\u0644\u0627。岓\u1BF2󠾃ᡂ; .\u0635\u0649\u0E37\u0644\u0627.岓\u1BF2󠾃ᡂ; [P1, V6, X4_2]; .xn--mgb1a7bt462h.xn--17e10qe61f9r71s; [P1, V6, A4_2]; ; # .صىืلا.岓᯲ᡂ
+︒\uFD05\u0E37\uFEFC。岓\u1BF2󠾃ᡂ; ︒\u0635\u0649\u0E37\u0644\u0627.岓\u1BF2󠾃ᡂ; [B1, V6]; xn--mgb1a7bt462hf267a.xn--17e10qe61f9r71s; ; ; # ︒صىืلا.岓᯲ᡂ
+。\u0635\u0649\u0E37\u0644\u0627。岓\u1BF2󠾃ᡂ; .\u0635\u0649\u0E37\u0644\u0627.岓\u1BF2󠾃ᡂ; [V6, X4_2]; .xn--mgb1a7bt462h.xn--17e10qe61f9r71s; [V6, A4_2]; ; # .صىืلا.岓᯲ᡂ
.xn--mgb1a7bt462h.xn--17e10qe61f9r71s; .\u0635\u0649\u0E37\u0644\u0627.岓\u1BF2󠾃ᡂ; [V6, X4_2]; .xn--mgb1a7bt462h.xn--17e10qe61f9r71s; [V6, A4_2]; ; # .صىืلا.岓᯲ᡂ
xn--mgb1a7bt462hf267a.xn--17e10qe61f9r71s; ︒\u0635\u0649\u0E37\u0644\u0627.岓\u1BF2󠾃ᡂ; [B1, V6]; xn--mgb1a7bt462hf267a.xn--17e10qe61f9r71s; ; ; # ︒صىืلا.岓᯲ᡂ
ð¹¨ã€‚8ð‘†; ð¹¨.8ð‘†; [B1]; xn--go0d.xn--8-yu7i; ; ; # ð¹¨.8ð‘†
xn--go0d.xn--8-yu7i; ð¹¨.8ð‘†; [B1]; xn--go0d.xn--8-yu7i; ; ; # ð¹¨.8ð‘†
-𞀕\u0D43.ꡚ\u08FAð¹°\u0D44; 𞀕\u0D43.ê¡š\u08FAð¹°\u0D44; [B1, B3, B5, B6, V5]; xn--mxc5210v.xn--90b01t8u2p1ltd; ; ; # 𞀕ൃ.ꡚࣺð¹°àµ„
-𞀕\u0D43.ê¡š\u08FAð¹°\u0D44; ; [B1, B3, B5, B6, V5]; xn--mxc5210v.xn--90b01t8u2p1ltd; ; ; # 𞀕ൃ.ꡚࣺð¹°àµ„
-xn--mxc5210v.xn--90b01t8u2p1ltd; 𞀕\u0D43.ê¡š\u08FAð¹°\u0D44; [B1, B3, B5, B6, V5]; xn--mxc5210v.xn--90b01t8u2p1ltd; ; ; # 𞀕ൃ.ꡚࣺð¹°àµ„
-ó†©ð¦¹\u0303。ó …; ó†©ð¦¹\u0303.ó …; [B1, B5, B6, P1, V6]; xn--nsa1265kp9z9e.xn--xt36e; ; ; # ̃.
-ó†©ð¦¹\u0303。ó …; ó†©ð¦¹\u0303.ó …; [B1, B5, B6, P1, V6]; xn--nsa1265kp9z9e.xn--xt36e; ; ; # ̃.
+𞀕\u0D43.ꡚ\u08FAð¹°\u0D44; 𞀕\u0D43.ê¡š\u08FAð¹°\u0D44; [B1, B5, B6, V5]; xn--mxc5210v.xn--90b01t8u2p1ltd; ; ; # 𞀕ൃ.ꡚࣺð¹°àµ„
+𞀕\u0D43.ê¡š\u08FAð¹°\u0D44; ; [B1, B5, B6, V5]; xn--mxc5210v.xn--90b01t8u2p1ltd; ; ; # 𞀕ൃ.ꡚࣺð¹°àµ„
+xn--mxc5210v.xn--90b01t8u2p1ltd; 𞀕\u0D43.ê¡š\u08FAð¹°\u0D44; [B1, B5, B6, V5]; xn--mxc5210v.xn--90b01t8u2p1ltd; ; ; # 𞀕ൃ.ꡚࣺð¹°àµ„
+ó†©ð¦¹\u0303。ó …; ó†©ð¦¹\u0303.ó …; [B1, B5, B6, V6]; xn--nsa1265kp9z9e.xn--xt36e; ; ; # ̃.
+ó†©ð¦¹\u0303。ó …; ó†©ð¦¹\u0303.ó …; [B1, B5, B6, V6]; xn--nsa1265kp9z9e.xn--xt36e; ; ; # ̃.
xn--nsa1265kp9z9e.xn--xt36e; ó†©ð¦¹\u0303.ó …; [B1, B5, B6, V6]; xn--nsa1265kp9z9e.xn--xt36e; ; ; # ̃.
ᢌ.-\u085A; ᢌ.-\u085A; [V3]; xn--59e.xn----5jd; ; ; # ᢌ.-࡚
ᢌ.-\u085A; ; [V3]; xn--59e.xn----5jd; ; ; # ᢌ.-࡚
xn--59e.xn----5jd; ᢌ.-\u085A; [V3]; xn--59e.xn----5jd; ; ; # ᢌ.-࡚
-𥛛𑘶。ð¹¬ð²¸\u0BCD; 𥛛𑘶.ð¹¬ð²¸\u0BCD; [B1, P1, V6]; xn--jb2dj685c.xn--xmc5562kmcb; ; ; # 𥛛𑘶.ð¹¬à¯
-𥛛𑘶。ð¹¬ð²¸\u0BCD; 𥛛𑘶.ð¹¬ð²¸\u0BCD; [B1, P1, V6]; xn--jb2dj685c.xn--xmc5562kmcb; ; ; # 𥛛𑘶.ð¹¬à¯
+𥛛𑘶。ð¹¬ð²¸\u0BCD; 𥛛𑘶.ð¹¬ð²¸\u0BCD; [B1, V6]; xn--jb2dj685c.xn--xmc5562kmcb; ; ; # 𥛛𑘶.ð¹¬à¯
+𥛛𑘶。ð¹¬ð²¸\u0BCD; 𥛛𑘶.ð¹¬ð²¸\u0BCD; [B1, V6]; xn--jb2dj685c.xn--xmc5562kmcb; ; ; # 𥛛𑘶.ð¹¬à¯
xn--jb2dj685c.xn--xmc5562kmcb; 𥛛𑘶.ð¹¬ð²¸\u0BCD; [B1, V6]; xn--jb2dj685c.xn--xmc5562kmcb; ; ; # 𥛛𑘶.ð¹¬à¯
-Ⴐ\u077F.\u200C; Ⴐ\u077F.\u200C; [B1, B5, B6, C1, P1, V6]; xn--gqb918b.xn--0ug; ; xn--gqb918b.; [B5, B6, P1, V6] # Ⴐݿ.
-á‚°\u077F.\u200C; ; [B1, B5, B6, C1, P1, V6]; xn--gqb918b.xn--0ug; ; xn--gqb918b.; [B5, B6, P1, V6] # á‚°Ý¿.
+Ⴐ\u077F.\u200C; Ⴐ\u077F.\u200C; [B1, B5, B6, C1, V6]; xn--gqb918b.xn--0ug; ; xn--gqb918b.; [B5, B6, V6] # Ⴐݿ.
+á‚°\u077F.\u200C; ; [B1, B5, B6, C1, V6]; xn--gqb918b.xn--0ug; ; xn--gqb918b.; [B5, B6, V6] # á‚°Ý¿.
â´\u077F.\u200C; ; [B1, B5, B6, C1]; xn--gqb743q.xn--0ug; ; xn--gqb743q.; [B5, B6] # â´Ý¿.
xn--gqb743q.; â´\u077F.; [B5, B6]; xn--gqb743q.; ; ; # â´Ý¿.
xn--gqb743q.xn--0ug; â´\u077F.\u200C; [B1, B5, B6, C1]; xn--gqb743q.xn--0ug; ; ; # â´Ý¿.
xn--gqb918b.; á‚°\u077F.; [B5, B6, V6]; xn--gqb918b.; ; ; # á‚°Ý¿.
xn--gqb918b.xn--0ug; á‚°\u077F.\u200C; [B1, B5, B6, C1, V6]; xn--gqb918b.xn--0ug; ; ; # á‚°Ý¿.
â´\u077F.\u200C; â´\u077F.\u200C; [B1, B5, B6, C1]; xn--gqb743q.xn--0ug; ; xn--gqb743q.; [B5, B6] # â´Ý¿.
-🄅𑲞-⒈。\u200Dᠩ\u06A5; 🄅𑲞-⒈.\u200Dᠩ\u06A5; [B1, C2, P1, V6]; xn----ecp8796hjtvg.xn--7jb180gexf; ; xn----ecp8796hjtvg.xn--7jb180g; [B1, B5, B6, P1, V6] # 🄅𑲞-⒈.ᠩڥ
-4,𑲞-1.。\u200Dᠩ\u06A5; 4,𑲞-1..\u200Dᠩ\u06A5; [B1, C2, P1, V6, X4_2]; xn--4,-1-w401a..xn--7jb180gexf; [B1, C2, P1, V6, A4_2]; xn--4,-1-w401a..xn--7jb180g; [B1, B5, B6, P1, V6, A4_2] # 4,𑲞-1..ᠩڥ
-xn--4,-1-w401a..xn--7jb180g; 4,𑲞-1..ᠩ\u06A5; [B1, B5, B6, P1, V6, X4_2]; xn--4,-1-w401a..xn--7jb180g; [B1, B5, B6, P1, V6, A4_2]; ; # 4,𑲞-1..ᠩڥ
-xn--4,-1-w401a..xn--7jb180gexf; 4,𑲞-1..\u200Dᠩ\u06A5; [B1, C2, P1, V6, X4_2]; xn--4,-1-w401a..xn--7jb180gexf; [B1, C2, P1, V6, A4_2]; ; # 4,𑲞-1..ᠩڥ
+🄅𑲞-⒈。\u200Dᠩ\u06A5; 🄅𑲞-⒈.\u200Dᠩ\u06A5; [B1, C2, V6]; xn----ecp8796hjtvg.xn--7jb180gexf; ; xn----ecp8796hjtvg.xn--7jb180g; [B1, B5, B6, V6] # 🄅𑲞-⒈.ᠩڥ
+4,𑲞-1.。\u200Dᠩ\u06A5; 4,𑲞-1..\u200Dᠩ\u06A5; [B1, C2, V6, X4_2]; xn--4,-1-w401a..xn--7jb180gexf; [B1, C2, V6, A4_2]; xn--4,-1-w401a..xn--7jb180g; [B1, B5, B6, V6, A4_2] # 4,𑲞-1..ᠩڥ
+xn--4,-1-w401a..xn--7jb180g; 4,𑲞-1..ᠩ\u06A5; [B1, B5, B6, V6, X4_2]; xn--4,-1-w401a..xn--7jb180g; [B1, B5, B6, V6, A4_2]; ; # 4,𑲞-1..ᠩڥ
+xn--4,-1-w401a..xn--7jb180gexf; 4,𑲞-1..\u200Dᠩ\u06A5; [B1, C2, V6, X4_2]; xn--4,-1-w401a..xn--7jb180gexf; [B1, C2, V6, A4_2]; ; # 4,𑲞-1..ᠩڥ
xn----ecp8796hjtvg.xn--7jb180g; 🄅𑲞-⒈.ᠩ\u06A5; [B1, B5, B6, V6]; xn----ecp8796hjtvg.xn--7jb180g; ; ; # 🄅𑲞-⒈.ᠩڥ
xn----ecp8796hjtvg.xn--7jb180gexf; 🄅𑲞-⒈.\u200Dᠩ\u06A5; [B1, C2, V6]; xn----ecp8796hjtvg.xn--7jb180gexf; ; ; # 🄅𑲞-⒈.ᠩڥ
-񗀤。𞤪򮿋; 񗀤.𞤪򮿋; [B2, B3, P1, V6]; xn--4240a.xn--ie6h83808a; ; ; # .𞤪
-񗀤。𞤈򮿋; 񗀤.𞤪򮿋; [B2, B3, P1, V6]; xn--4240a.xn--ie6h83808a; ; ; # .𞤪
+񗀤。𞤪򮿋; 񗀤.𞤪򮿋; [B2, B3, V6]; xn--4240a.xn--ie6h83808a; ; ; # .𞤪
+񗀤。𞤈򮿋; 񗀤.𞤪򮿋; [B2, B3, V6]; xn--4240a.xn--ie6h83808a; ; ; # .𞤪
xn--4240a.xn--ie6h83808a; 񗀤.𞤪򮿋; [B2, B3, V6]; xn--4240a.xn--ie6h83808a; ; ; # .𞤪
\u05C1۲。ð®Š\u066Cð¨Šé„¨; \u05C1Û².ð®Š\u066Cð¨Šé„¨; [B1, B2, B3, V5]; xn--pdb42d.xn--lib6412enztdwv6h; ; ; # ×Û².ð®ŠÙ¬ð¨Šé„¨
\u05C1۲。ð®Š\u066Cð¨Šé„¨; \u05C1Û².ð®Š\u066Cð¨Šé„¨; [B1, B2, B3, V5]; xn--pdb42d.xn--lib6412enztdwv6h; ; ; # ×Û².ð®ŠÙ¬ð¨Šé„¨
xn--pdb42d.xn--lib6412enztdwv6h; \u05C1Û².ð®Š\u066Cð¨Šé„¨; [B1, B2, B3, V5]; xn--pdb42d.xn--lib6412enztdwv6h; ; ; # ×Û².ð®ŠÙ¬ð¨Šé„¨
-ðž­³-ê¡ã€‚\u1A69\u0BCD-; ðž­³-ê¡.\u1A69\u0BCD-; [B1, B2, B3, P1, V3, V5, V6]; xn----be4e4276f.xn----lze333i; ; ; # -ê¡.á©©à¯-
+ðž­³-ê¡ã€‚\u1A69\u0BCD-; ðž­³-ê¡.\u1A69\u0BCD-; [B1, B2, B3, V3, V5, V6]; xn----be4e4276f.xn----lze333i; ; ; # -ê¡.á©©à¯-
xn----be4e4276f.xn----lze333i; ðž­³-ê¡.\u1A69\u0BCD-; [B1, B2, B3, V3, V5, V6]; xn----be4e4276f.xn----lze333i; ; ; # -ê¡.á©©à¯-
-\u1039-𚮭🞢.ß; \u1039-𚮭🞢.ß; [P1, V5, V6]; xn----9tg11172akr8b.xn--zca; ; xn----9tg11172akr8b.ss; # ္-🞢.ß
-\u1039-𚮭🞢.ß; ; [P1, V5, V6]; xn----9tg11172akr8b.xn--zca; ; xn----9tg11172akr8b.ss; # ္-🞢.ß
-\u1039-𚮭🞢.SS; \u1039-𚮭🞢.ss; [P1, V5, V6]; xn----9tg11172akr8b.ss; ; ; # ္-🞢.ss
-\u1039-𚮭🞢.ss; ; [P1, V5, V6]; xn----9tg11172akr8b.ss; ; ; # ္-🞢.ss
-\u1039-𚮭🞢.Ss; \u1039-𚮭🞢.ss; [P1, V5, V6]; xn----9tg11172akr8b.ss; ; ; # ္-🞢.ss
+\u1039-𚮭🞢.ß; \u1039-𚮭🞢.ß; [V5, V6]; xn----9tg11172akr8b.xn--zca; ; xn----9tg11172akr8b.ss; # ္-🞢.ß
+\u1039-𚮭🞢.ß; ; [V5, V6]; xn----9tg11172akr8b.xn--zca; ; xn----9tg11172akr8b.ss; # ္-🞢.ß
+\u1039-𚮭🞢.SS; \u1039-𚮭🞢.ss; [V5, V6]; xn----9tg11172akr8b.ss; ; ; # ္-🞢.ss
+\u1039-𚮭🞢.ss; ; [V5, V6]; xn----9tg11172akr8b.ss; ; ; # ္-🞢.ss
+\u1039-𚮭🞢.Ss; \u1039-𚮭🞢.ss; [V5, V6]; xn----9tg11172akr8b.ss; ; ; # ္-🞢.ss
xn----9tg11172akr8b.ss; \u1039-𚮭🞢.ss; [V5, V6]; xn----9tg11172akr8b.ss; ; ; # ္-🞢.ss
xn----9tg11172akr8b.xn--zca; \u1039-𚮭🞢.ß; [V5, V6]; xn----9tg11172akr8b.xn--zca; ; ; # ္-🞢.ß
-\u1039-𚮭🞢.SS; \u1039-𚮭🞢.ss; [P1, V5, V6]; xn----9tg11172akr8b.ss; ; ; # ္-🞢.ss
-\u1039-𚮭🞢.ss; \u1039-𚮭🞢.ss; [P1, V5, V6]; xn----9tg11172akr8b.ss; ; ; # ္-🞢.ss
-\u1039-𚮭🞢.Ss; \u1039-𚮭🞢.ss; [P1, V5, V6]; xn----9tg11172akr8b.ss; ; ; # ္-🞢.ss
-\uFCF2-\u200C。Ⴟ\u200Câ£; \u0640\u064E\u0651-\u200C.á‚¿\u200Câ£; [B3, B6, C1, P1, V6]; xn----eoc6bm0504a.xn--3nd849e05c; ; xn----eoc6bm.xn--3nd240h; [B3, B6, P1, V3, V6] # Ù€ÙŽÙ‘-.á‚¿â£
-\u0640\u064E\u0651-\u200C。Ⴟ\u200Câ£; \u0640\u064E\u0651-\u200C.á‚¿\u200Câ£; [B3, B6, C1, P1, V6]; xn----eoc6bm0504a.xn--3nd849e05c; ; xn----eoc6bm.xn--3nd240h; [B3, B6, P1, V3, V6] # Ù€ÙŽÙ‘-.á‚¿â£
+\u1039-𚮭🞢.SS; \u1039-𚮭🞢.ss; [V5, V6]; xn----9tg11172akr8b.ss; ; ; # ္-🞢.ss
+\u1039-𚮭🞢.ss; \u1039-𚮭🞢.ss; [V5, V6]; xn----9tg11172akr8b.ss; ; ; # ္-🞢.ss
+\u1039-𚮭🞢.Ss; \u1039-𚮭🞢.ss; [V5, V6]; xn----9tg11172akr8b.ss; ; ; # ္-🞢.ss
+\uFCF2-\u200C。Ⴟ\u200Câ£; \u0640\u064E\u0651-\u200C.á‚¿\u200Câ£; [B3, B6, C1, V6]; xn----eoc6bm0504a.xn--3nd849e05c; ; xn----eoc6bm.xn--3nd240h; [B3, B6, V3, V6] # Ù€ÙŽÙ‘-.á‚¿â£
+\u0640\u064E\u0651-\u200C。Ⴟ\u200Câ£; \u0640\u064E\u0651-\u200C.á‚¿\u200Câ£; [B3, B6, C1, V6]; xn----eoc6bm0504a.xn--3nd849e05c; ; xn----eoc6bm.xn--3nd240h; [B3, B6, V3, V6] # Ù€ÙŽÙ‘-.á‚¿â£
\u0640\u064E\u0651-\u200C。ⴟ\u200Câ£; \u0640\u064E\u0651-\u200C.â´Ÿ\u200Câ£; [B3, B6, C1]; xn----eoc6bm0504a.xn--0ug13nd0j; ; xn----eoc6bm.xn--xph904a; [B3, B6, V3] # Ù€ÙŽÙ‘-.â´Ÿâ£
xn----eoc6bm.xn--xph904a; \u0640\u064E\u0651-.â´Ÿâ£; [B3, B6, V3]; xn----eoc6bm.xn--xph904a; ; ; # Ù€ÙŽÙ‘-.â´Ÿâ£
xn----eoc6bm0504a.xn--0ug13nd0j; \u0640\u064E\u0651-\u200C.â´Ÿ\u200Câ£; [B3, B6, C1]; xn----eoc6bm0504a.xn--0ug13nd0j; ; ; # Ù€ÙŽÙ‘-.â´Ÿâ£
xn----eoc6bm.xn--3nd240h; \u0640\u064E\u0651-.á‚¿â£; [B3, B6, V3, V6]; xn----eoc6bm.xn--3nd240h; ; ; # Ù€ÙŽÙ‘-.á‚¿â£
xn----eoc6bm0504a.xn--3nd849e05c; \u0640\u064E\u0651-\u200C.á‚¿\u200Câ£; [B3, B6, C1, V6]; xn----eoc6bm0504a.xn--3nd849e05c; ; ; # Ù€ÙŽÙ‘-.á‚¿â£
\uFCF2-\u200C。ⴟ\u200Câ£; \u0640\u064E\u0651-\u200C.â´Ÿ\u200Câ£; [B3, B6, C1]; xn----eoc6bm0504a.xn--0ug13nd0j; ; xn----eoc6bm.xn--xph904a; [B3, B6, V3] # Ù€ÙŽÙ‘-.â´Ÿâ£
-\u0D4D-\u200D\u200C。ñ¥ž§â‚…≠; \u0D4D-\u200D\u200C.ñ¥ž§5≠; [C1, C2, P1, V5, V6]; xn----jmf215lda.xn--5-ufo50192e; ; xn----jmf.xn--5-ufo50192e; [P1, V3, V5, V6] # àµ-.5≠
-\u0D4D-\u200D\u200C。ñ¥ž§â‚…=\u0338; \u0D4D-\u200D\u200C.ñ¥ž§5≠; [C1, C2, P1, V5, V6]; xn----jmf215lda.xn--5-ufo50192e; ; xn----jmf.xn--5-ufo50192e; [P1, V3, V5, V6] # àµ-.5≠
-\u0D4D-\u200D\u200C。ñ¥ž§5≠; \u0D4D-\u200D\u200C.ñ¥ž§5≠; [C1, C2, P1, V5, V6]; xn----jmf215lda.xn--5-ufo50192e; ; xn----jmf.xn--5-ufo50192e; [P1, V3, V5, V6] # àµ-.5≠
-\u0D4D-\u200D\u200C。ñ¥ž§5=\u0338; \u0D4D-\u200D\u200C.ñ¥ž§5≠; [C1, C2, P1, V5, V6]; xn----jmf215lda.xn--5-ufo50192e; ; xn----jmf.xn--5-ufo50192e; [P1, V3, V5, V6] # àµ-.5≠
+\u0D4D-\u200D\u200C。ñ¥ž§â‚…≠; \u0D4D-\u200D\u200C.ñ¥ž§5≠; [C1, C2, V5, V6]; xn----jmf215lda.xn--5-ufo50192e; ; xn----jmf.xn--5-ufo50192e; [V3, V5, V6] # àµ-.5≠
+\u0D4D-\u200D\u200C。ñ¥ž§â‚…=\u0338; \u0D4D-\u200D\u200C.ñ¥ž§5≠; [C1, C2, V5, V6]; xn----jmf215lda.xn--5-ufo50192e; ; xn----jmf.xn--5-ufo50192e; [V3, V5, V6] # àµ-.5≠
+\u0D4D-\u200D\u200C。ñ¥ž§5≠; \u0D4D-\u200D\u200C.ñ¥ž§5≠; [C1, C2, V5, V6]; xn----jmf215lda.xn--5-ufo50192e; ; xn----jmf.xn--5-ufo50192e; [V3, V5, V6] # àµ-.5≠
+\u0D4D-\u200D\u200C。ñ¥ž§5=\u0338; \u0D4D-\u200D\u200C.ñ¥ž§5≠; [C1, C2, V5, V6]; xn----jmf215lda.xn--5-ufo50192e; ; xn----jmf.xn--5-ufo50192e; [V3, V5, V6] # àµ-.5≠
xn----jmf.xn--5-ufo50192e; \u0D4D-.ñ¥ž§5≠; [V3, V5, V6]; xn----jmf.xn--5-ufo50192e; ; ; # àµ-.5≠
xn----jmf215lda.xn--5-ufo50192e; \u0D4D-\u200D\u200C.ñ¥ž§5≠; [C1, C2, V5, V6]; xn----jmf215lda.xn--5-ufo50192e; ; ; # àµ-.5≠
-锣。\u0A4D󠘻󠚆; 锣.\u0A4D󠘻󠚆; [P1, V5, V6]; xn--gc5a.xn--ybc83044ppga; ; ; # 锣.à©
+锣。\u0A4D󠘻󠚆; 锣.\u0A4D󠘻󠚆; [V5, V6]; xn--gc5a.xn--ybc83044ppga; ; ; # 锣.à©
xn--gc5a.xn--ybc83044ppga; 锣.\u0A4D󠘻󠚆; [V5, V6]; xn--gc5a.xn--ybc83044ppga; ; ; # 锣.à©
\u063D𑈾.\u0649\u200D\uA92B; \u063D𑈾.\u0649\u200D\uA92B; [B3, C2]; xn--8gb2338k.xn--lhb603k060h; ; xn--8gb2338k.xn--lhb0154f; [] # ؽ𑈾.ى꤫
\u063D𑈾.\u0649\u200D\uA92B; ; [B3, C2]; xn--8gb2338k.xn--lhb603k060h; ; xn--8gb2338k.xn--lhb0154f; [] # ؽ𑈾.ى꤫
xn--8gb2338k.xn--lhb0154f; \u063D𑈾.\u0649\uA92B; ; xn--8gb2338k.xn--lhb0154f; ; ; # ؽ𑈾.ى꤫
\u063D𑈾.\u0649\uA92B; ; ; xn--8gb2338k.xn--lhb0154f; ; ; # ؽ𑈾.ى꤫
xn--8gb2338k.xn--lhb603k060h; \u063D𑈾.\u0649\u200D\uA92B; [B3, C2]; xn--8gb2338k.xn--lhb603k060h; ; ; # ؽ𑈾.ى꤫
-\u0666â´á‚¥ï¼Ž\u08BD\u200C; \u06664á‚¥.\u08BD\u200C; [B1, B3, C1, P1, V6]; xn--4-kqc489e.xn--jzb840j; ; xn--4-kqc489e.xn--jzb; [B1, P1, V6] # Ù¦4á‚¥.ࢽ
-\u06664Ⴅ.\u08BD\u200C; ; [B1, B3, C1, P1, V6]; xn--4-kqc489e.xn--jzb840j; ; xn--4-kqc489e.xn--jzb; [B1, P1, V6] # ٦4Ⴅ.ࢽ
+\u0666â´á‚¥ï¼Ž\u08BD\u200C; \u06664á‚¥.\u08BD\u200C; [B1, B3, C1, V6]; xn--4-kqc489e.xn--jzb840j; ; xn--4-kqc489e.xn--jzb; [B1, V6] # Ù¦4á‚¥.ࢽ
+\u06664Ⴅ.\u08BD\u200C; ; [B1, B3, C1, V6]; xn--4-kqc489e.xn--jzb840j; ; xn--4-kqc489e.xn--jzb; [B1, V6] # ٦4Ⴅ.ࢽ
\u06664ⴅ.\u08BD\u200C; ; [B1, B3, C1]; xn--4-kqc6770a.xn--jzb840j; ; xn--4-kqc6770a.xn--jzb; [B1] # ٦4ⴅ.ࢽ
xn--4-kqc6770a.xn--jzb; \u06664ⴅ.\u08BD; [B1]; xn--4-kqc6770a.xn--jzb; ; ; # ٦4ⴅ.ࢽ
xn--4-kqc6770a.xn--jzb840j; \u06664ⴅ.\u08BD\u200C; [B1, B3, C1]; xn--4-kqc6770a.xn--jzb840j; ; ; # ٦4ⴅ.ࢽ
xn--4-kqc489e.xn--jzb; \u06664Ⴅ.\u08BD; [B1, V6]; xn--4-kqc489e.xn--jzb; ; ; # ٦4Ⴅ.ࢽ
xn--4-kqc489e.xn--jzb840j; \u06664Ⴅ.\u08BD\u200C; [B1, B3, C1, V6]; xn--4-kqc489e.xn--jzb840j; ; ; # ٦4Ⴅ.ࢽ
\u0666â´â´….\u08BD\u200C; \u06664â´….\u08BD\u200C; [B1, B3, C1]; xn--4-kqc6770a.xn--jzb840j; ; xn--4-kqc6770a.xn--jzb; [B1] # Ù¦4â´….ࢽ
-áƒá‚±6\u0318。ß\u1B03; áƒá‚±6\u0318.ß\u1B03; [P1, V6]; xn--6-8cb555h2b.xn--zca894k; ; xn--6-8cb555h2b.xn--ss-2vq; # áƒá‚±6̘.ßᬃ
+áƒá‚±6\u0318。ß\u1B03; áƒá‚±6\u0318.ß\u1B03; [V6]; xn--6-8cb555h2b.xn--zca894k; ; xn--6-8cb555h2b.xn--ss-2vq; # áƒá‚±6̘.ßᬃ
ⴡⴑ6\u0318。ß\u1B03; ⴡⴑ6\u0318.ß\u1B03; ; xn--6-8cb7433a2ba.xn--zca894k; ; xn--6-8cb7433a2ba.xn--ss-2vq; # ⴡⴑ6̘.ßᬃ
-áƒá‚±6\u0318。SS\u1B03; áƒá‚±6\u0318.ss\u1B03; [P1, V6]; xn--6-8cb555h2b.xn--ss-2vq; ; ; # áƒá‚±6̘.ssᬃ
+áƒá‚±6\u0318。SS\u1B03; áƒá‚±6\u0318.ss\u1B03; [V6]; xn--6-8cb555h2b.xn--ss-2vq; ; ; # áƒá‚±6̘.ssᬃ
ⴡⴑ6\u0318。ss\u1B03; ⴡⴑ6\u0318.ss\u1B03; ; xn--6-8cb7433a2ba.xn--ss-2vq; ; ; # ⴡⴑ6̘.ssᬃ
-áƒâ´‘6\u0318。Ss\u1B03; áƒâ´‘6\u0318.ss\u1B03; [P1, V6]; xn--6-8cb306hms1a.xn--ss-2vq; ; ; # áƒâ´‘6̘.ssᬃ
+áƒâ´‘6\u0318。Ss\u1B03; áƒâ´‘6\u0318.ss\u1B03; [V6]; xn--6-8cb306hms1a.xn--ss-2vq; ; ; # áƒâ´‘6̘.ssᬃ
xn--6-8cb306hms1a.xn--ss-2vq; áƒâ´‘6\u0318.ss\u1B03; [V6]; xn--6-8cb306hms1a.xn--ss-2vq; ; ; # áƒâ´‘6̘.ssᬃ
xn--6-8cb7433a2ba.xn--ss-2vq; ⴡⴑ6\u0318.ss\u1B03; ; xn--6-8cb7433a2ba.xn--ss-2vq; ; ; # ⴡⴑ6̘.ssᬃ
ⴡⴑ6\u0318.ss\u1B03; ; ; xn--6-8cb7433a2ba.xn--ss-2vq; ; ; # ⴡⴑ6̘.ssᬃ
-áƒá‚±6\u0318.SS\u1B03; áƒá‚±6\u0318.ss\u1B03; [P1, V6]; xn--6-8cb555h2b.xn--ss-2vq; ; ; # áƒá‚±6̘.ssᬃ
-áƒâ´‘6\u0318.Ss\u1B03; áƒâ´‘6\u0318.ss\u1B03; [P1, V6]; xn--6-8cb306hms1a.xn--ss-2vq; ; ; # áƒâ´‘6̘.ssᬃ
+áƒá‚±6\u0318.SS\u1B03; áƒá‚±6\u0318.ss\u1B03; [V6]; xn--6-8cb555h2b.xn--ss-2vq; ; ; # áƒá‚±6̘.ssᬃ
+áƒâ´‘6\u0318.Ss\u1B03; áƒâ´‘6\u0318.ss\u1B03; [V6]; xn--6-8cb306hms1a.xn--ss-2vq; ; ; # áƒâ´‘6̘.ssᬃ
xn--6-8cb555h2b.xn--ss-2vq; áƒá‚±6\u0318.ss\u1B03; [V6]; xn--6-8cb555h2b.xn--ss-2vq; ; ; # áƒá‚±6̘.ssᬃ
xn--6-8cb7433a2ba.xn--zca894k; ⴡⴑ6\u0318.ß\u1B03; ; xn--6-8cb7433a2ba.xn--zca894k; ; ; # ⴡⴑ6̘.ßᬃ
ⴡⴑ6\u0318.ß\u1B03; ; ; xn--6-8cb7433a2ba.xn--zca894k; ; xn--6-8cb7433a2ba.xn--ss-2vq; # ⴡⴑ6̘.ßᬃ
xn--6-8cb555h2b.xn--zca894k; áƒá‚±6\u0318.ß\u1B03; [V6]; xn--6-8cb555h2b.xn--zca894k; ; ; # áƒá‚±6̘.ßᬃ
-ò‹¡ï½¡â‰¯ð‘‹ª; ò‹¡.≯𑋪; [P1, V6]; xn--eo08b.xn--hdh3385g; ; ; # .≯𑋪
-ò‹¡ï½¡>\u0338𑋪; ò‹¡.≯𑋪; [P1, V6]; xn--eo08b.xn--hdh3385g; ; ; # .≯𑋪
-ò‹¡ã€‚≯𑋪; ò‹¡.≯𑋪; [P1, V6]; xn--eo08b.xn--hdh3385g; ; ; # .≯𑋪
-ò‹¡ã€‚>\u0338𑋪; ò‹¡.≯𑋪; [P1, V6]; xn--eo08b.xn--hdh3385g; ; ; # .≯𑋪
+ò‹¡ï½¡â‰¯ð‘‹ª; ò‹¡.≯𑋪; [V6]; xn--eo08b.xn--hdh3385g; ; ; # .≯𑋪
+ò‹¡ï½¡>\u0338𑋪; ò‹¡.≯𑋪; [V6]; xn--eo08b.xn--hdh3385g; ; ; # .≯𑋪
+ò‹¡ã€‚≯𑋪; ò‹¡.≯𑋪; [V6]; xn--eo08b.xn--hdh3385g; ; ; # .≯𑋪
+ò‹¡ã€‚>\u0338𑋪; ò‹¡.≯𑋪; [V6]; xn--eo08b.xn--hdh3385g; ; ; # .≯𑋪
xn--eo08b.xn--hdh3385g; ò‹¡.≯𑋪; [V6]; xn--eo08b.xn--hdh3385g; ; ; # .≯𑋪
-\u065A۲。\u200C-\u1BF3\u08E2; \u065A۲.\u200C-\u1BF3\u08E2; [B1, C1, P1, V5, V6]; xn--2hb81a.xn----xrd657l30d; ; xn--2hb81a.xn----xrd657l; [B1, P1, V3, V5, V6] # ٚ۲.-᯳
+\u065A۲。\u200C-\u1BF3\u08E2; \u065A۲.\u200C-\u1BF3\u08E2; [B1, C1, V5, V6]; xn--2hb81a.xn----xrd657l30d; ; xn--2hb81a.xn----xrd657l; [B1, V3, V5, V6] # ٚ۲.-᯳
xn--2hb81a.xn----xrd657l; \u065A۲.-\u1BF3\u08E2; [B1, V3, V5, V6]; xn--2hb81a.xn----xrd657l; ; ; # ٚ۲.-᯳
xn--2hb81a.xn----xrd657l30d; \u065A۲.\u200C-\u1BF3\u08E2; [B1, C1, V5, V6]; xn--2hb81a.xn----xrd657l30d; ; ; # ٚ۲.-᯳
-ó „𖬴󠲽。\uFFA0; ð–¬´ó ²½.\uFFA0; [P1, V5, V6]; xn--619ep9154c.xn--cl7c; ; ; # ð–¬´.
-ó „𖬴󠲽。\u1160; ð–¬´ó ²½.\u1160; [P1, V5, V6]; xn--619ep9154c.xn--psd; ; ; # ð–¬´.
+ó „𖬴󠲽。\uFFA0; ð–¬´ó ²½.\uFFA0; [V5, V6]; xn--619ep9154c.xn--cl7c; ; ; # ð–¬´.
+ó „𖬴󠲽。\u1160; ð–¬´ó ²½.\u1160; [V5, V6]; xn--619ep9154c.xn--psd; ; ; # ð–¬´.
xn--619ep9154c.xn--psd; ð–¬´ó ²½.\u1160; [V5, V6]; xn--619ep9154c.xn--psd; ; ; # ð–¬´.
xn--619ep9154c.xn--cl7c; ð–¬´ó ²½.\uFFA0; [V5, V6]; xn--619ep9154c.xn--cl7c; ; ; # ð–¬´.
-ß⒈\u0760\uD7AE.􉖲󠅄\u0605򉔯; ß⒈\u0760\uD7AE.􉖲\u0605򉔯; [B5, P1, V6]; xn--zca444a0s1ao12n.xn--nfb09923ifkyyb; ; xn--ss-6ke9690a0g1q.xn--nfb09923ifkyyb; # ß⒈ݠ.
-ß1.\u0760\uD7AE.􉖲󠅄\u0605򉔯; ß1.\u0760\uD7AE.􉖲\u0605򉔯; [B2, B3, B5, P1, V6]; xn--1-pfa.xn--kpb6677h.xn--nfb09923ifkyyb; ; ss1.xn--kpb6677h.xn--nfb09923ifkyyb; # ß1.ݠ.
-SS1.\u0760\uD7AE.􉖲󠅄\u0605򉔯; ss1.\u0760\uD7AE.􉖲\u0605򉔯; [B2, B3, B5, P1, V6]; ss1.xn--kpb6677h.xn--nfb09923ifkyyb; ; ; # ss1.ݠ.
-ss1.\u0760\uD7AE.􉖲󠅄\u0605򉔯; ss1.\u0760\uD7AE.􉖲\u0605򉔯; [B2, B3, B5, P1, V6]; ss1.xn--kpb6677h.xn--nfb09923ifkyyb; ; ; # ss1.ݠ.
-Ss1.\u0760\uD7AE.􉖲󠅄\u0605򉔯; ss1.\u0760\uD7AE.􉖲\u0605򉔯; [B2, B3, B5, P1, V6]; ss1.xn--kpb6677h.xn--nfb09923ifkyyb; ; ; # ss1.ݠ.
+ß⒈\u0760\uD7AE.􉖲󠅄\u0605򉔯; ß⒈\u0760\uD7AE.􉖲\u0605򉔯; [B5, V6]; xn--zca444a0s1ao12n.xn--nfb09923ifkyyb; ; xn--ss-6ke9690a0g1q.xn--nfb09923ifkyyb; # ß⒈ݠ.
+ß1.\u0760\uD7AE.􉖲󠅄\u0605򉔯; ß1.\u0760\uD7AE.􉖲\u0605򉔯; [B2, B3, B5, V6]; xn--1-pfa.xn--kpb6677h.xn--nfb09923ifkyyb; ; ss1.xn--kpb6677h.xn--nfb09923ifkyyb; # ß1.ݠ.
+SS1.\u0760\uD7AE.􉖲󠅄\u0605򉔯; ss1.\u0760\uD7AE.􉖲\u0605򉔯; [B2, B3, B5, V6]; ss1.xn--kpb6677h.xn--nfb09923ifkyyb; ; ; # ss1.ݠ.
+ss1.\u0760\uD7AE.􉖲󠅄\u0605򉔯; ss1.\u0760\uD7AE.􉖲\u0605򉔯; [B2, B3, B5, V6]; ss1.xn--kpb6677h.xn--nfb09923ifkyyb; ; ; # ss1.ݠ.
+Ss1.\u0760\uD7AE.􉖲󠅄\u0605򉔯; ss1.\u0760\uD7AE.􉖲\u0605򉔯; [B2, B3, B5, V6]; ss1.xn--kpb6677h.xn--nfb09923ifkyyb; ; ; # ss1.ݠ.
ss1.xn--kpb6677h.xn--nfb09923ifkyyb; ss1.\u0760\uD7AE.􉖲\u0605򉔯; [B2, B3, B5, V6]; ss1.xn--kpb6677h.xn--nfb09923ifkyyb; ; ; # ss1.ݠ.
xn--1-pfa.xn--kpb6677h.xn--nfb09923ifkyyb; ß1.\u0760\uD7AE.􉖲\u0605򉔯; [B2, B3, B5, V6]; xn--1-pfa.xn--kpb6677h.xn--nfb09923ifkyyb; ; ; # ß1.ݠ.
-SS⒈\u0760\uD7AE.􉖲󠅄\u0605򉔯; ss⒈\u0760\uD7AE.􉖲\u0605򉔯; [B5, P1, V6]; xn--ss-6ke9690a0g1q.xn--nfb09923ifkyyb; ; ; # ss⒈ݠ.
-ss⒈\u0760\uD7AE.􉖲󠅄\u0605򉔯; ss⒈\u0760\uD7AE.􉖲\u0605򉔯; [B5, P1, V6]; xn--ss-6ke9690a0g1q.xn--nfb09923ifkyyb; ; ; # ss⒈ݠ.
-Ss⒈\u0760\uD7AE.􉖲󠅄\u0605򉔯; ss⒈\u0760\uD7AE.􉖲\u0605򉔯; [B5, P1, V6]; xn--ss-6ke9690a0g1q.xn--nfb09923ifkyyb; ; ; # ss⒈ݠ.
+SS⒈\u0760\uD7AE.􉖲󠅄\u0605򉔯; ss⒈\u0760\uD7AE.􉖲\u0605򉔯; [B5, V6]; xn--ss-6ke9690a0g1q.xn--nfb09923ifkyyb; ; ; # ss⒈ݠ.
+ss⒈\u0760\uD7AE.􉖲󠅄\u0605򉔯; ss⒈\u0760\uD7AE.􉖲\u0605򉔯; [B5, V6]; xn--ss-6ke9690a0g1q.xn--nfb09923ifkyyb; ; ; # ss⒈ݠ.
+Ss⒈\u0760\uD7AE.􉖲󠅄\u0605򉔯; ss⒈\u0760\uD7AE.􉖲\u0605򉔯; [B5, V6]; xn--ss-6ke9690a0g1q.xn--nfb09923ifkyyb; ; ; # ss⒈ݠ.
xn--ss-6ke9690a0g1q.xn--nfb09923ifkyyb; ss⒈\u0760\uD7AE.􉖲\u0605򉔯; [B5, V6]; xn--ss-6ke9690a0g1q.xn--nfb09923ifkyyb; ; ; # ss⒈ݠ.
xn--zca444a0s1ao12n.xn--nfb09923ifkyyb; ß⒈\u0760\uD7AE.􉖲\u0605򉔯; [B5, V6]; xn--zca444a0s1ao12n.xn--nfb09923ifkyyb; ; ; # ß⒈ݠ.
-ó ­”.ð‹±â‚‚; ó ­”.ð‹±2; [P1, V6]; xn--vi56e.xn--2-w91i; ; ; # .ð‹±2
-ó ­”.ð‹±2; ; [P1, V6]; xn--vi56e.xn--2-w91i; ; ; # .ð‹±2
+ó ­”.ð‹±â‚‚; ó ­”.ð‹±2; [V6]; xn--vi56e.xn--2-w91i; ; ; # .ð‹±2
+ó ­”.ð‹±2; ; [V6]; xn--vi56e.xn--2-w91i; ; ; # .ð‹±2
xn--vi56e.xn--2-w91i; ó ­”.ð‹±2; [V6]; xn--vi56e.xn--2-w91i; ; ; # .ð‹±2
\u0716\u0947。-ß\u06A5\u200C; \u0716\u0947.-ß\u06A5\u200C; [B1, C1, V3]; xn--gnb63i.xn----qfa845bhx4a; ; xn--gnb63i.xn---ss-4ef; [B1, V3] # ܖे.-ßڥ
\u0716\u0947。-SS\u06A5\u200C; \u0716\u0947.-ss\u06A5\u200C; [B1, C1, V3]; xn--gnb63i.xn---ss-4ef9263a; ; xn--gnb63i.xn---ss-4ef; [B1, V3] # ܖे.-ssڥ
@@ -6077,68 +6107,68 @@ xn--vi56e.xn--2-w91i; ó ­”.ð‹±2; [V6]; xn--vi56e.xn--2-w91i; ; ; # .ð‹±2
xn--gnb63i.xn---ss-4ef; \u0716\u0947.-ss\u06A5; [B1, V3]; xn--gnb63i.xn---ss-4ef; ; ; # ܖे.-ssڥ
xn--gnb63i.xn---ss-4ef9263a; \u0716\u0947.-ss\u06A5\u200C; [B1, C1, V3]; xn--gnb63i.xn---ss-4ef9263a; ; ; # ܖे.-ssڥ
xn--gnb63i.xn----qfa845bhx4a; \u0716\u0947.-ß\u06A5\u200C; [B1, C1, V3]; xn--gnb63i.xn----qfa845bhx4a; ; ; # ܖे.-ßڥ
-\u1BA9\u200D\u062Añ¡šˆï¼Ž\u1CD5ä·‰áƒ; \u1BA9\u200D\u062Añ¡šˆ.\u1CD5ä·‰áƒ; [B1, C2, P1, V5, V6]; xn--pgb911imgdrw34r.xn--5nd792dgv3b; ; xn--pgb911izv33i.xn--5nd792dgv3b; [B1, P1, V5, V6] # ᮩت.᳕䷉áƒ
-\u1BA9\u200D\u062Añ¡šˆ.\u1CD5ä·‰áƒ; ; [B1, C2, P1, V5, V6]; xn--pgb911imgdrw34r.xn--5nd792dgv3b; ; xn--pgb911izv33i.xn--5nd792dgv3b; [B1, P1, V5, V6] # ᮩت.᳕䷉áƒ
-\u1BA9\u200D\u062A񡚈.\u1CD5䷉ⴡ; ; [B1, C2, P1, V5, V6]; xn--pgb911imgdrw34r.xn--i6f270etuy; ; xn--pgb911izv33i.xn--i6f270etuy; [B1, P1, V5, V6] # ᮩت.᳕䷉ⴡ
+\u1BA9\u200D\u062Añ¡šˆï¼Ž\u1CD5ä·‰áƒ; \u1BA9\u200D\u062Añ¡šˆ.\u1CD5ä·‰áƒ; [B1, C2, V5, V6]; xn--pgb911imgdrw34r.xn--5nd792dgv3b; ; xn--pgb911izv33i.xn--5nd792dgv3b; [B1, V5, V6] # ᮩت.᳕䷉áƒ
+\u1BA9\u200D\u062Añ¡šˆ.\u1CD5ä·‰áƒ; ; [B1, C2, V5, V6]; xn--pgb911imgdrw34r.xn--5nd792dgv3b; ; xn--pgb911izv33i.xn--5nd792dgv3b; [B1, V5, V6] # ᮩت.᳕䷉áƒ
+\u1BA9\u200D\u062A񡚈.\u1CD5䷉ⴡ; ; [B1, C2, V5, V6]; xn--pgb911imgdrw34r.xn--i6f270etuy; ; xn--pgb911izv33i.xn--i6f270etuy; [B1, V5, V6] # ᮩت.᳕䷉ⴡ
xn--pgb911izv33i.xn--i6f270etuy; \u1BA9\u062A񡚈.\u1CD5䷉ⴡ; [B1, V5, V6]; xn--pgb911izv33i.xn--i6f270etuy; ; ; # ᮩت.᳕䷉ⴡ
xn--pgb911imgdrw34r.xn--i6f270etuy; \u1BA9\u200D\u062A񡚈.\u1CD5䷉ⴡ; [B1, C2, V5, V6]; xn--pgb911imgdrw34r.xn--i6f270etuy; ; ; # ᮩت.᳕䷉ⴡ
xn--pgb911izv33i.xn--5nd792dgv3b; \u1BA9\u062Añ¡šˆ.\u1CD5ä·‰áƒ; [B1, V5, V6]; xn--pgb911izv33i.xn--5nd792dgv3b; ; ; # ᮩت.᳕䷉áƒ
xn--pgb911imgdrw34r.xn--5nd792dgv3b; \u1BA9\u200D\u062Añ¡šˆ.\u1CD5ä·‰áƒ; [B1, C2, V5, V6]; xn--pgb911imgdrw34r.xn--5nd792dgv3b; ; ; # ᮩت.᳕䷉áƒ
-\u1BA9\u200D\u062A񡚈.\u1CD5䷉ⴡ; \u1BA9\u200D\u062A񡚈.\u1CD5䷉ⴡ; [B1, C2, P1, V5, V6]; xn--pgb911imgdrw34r.xn--i6f270etuy; ; xn--pgb911izv33i.xn--i6f270etuy; [B1, P1, V5, V6] # ᮩت.᳕䷉ⴡ
-\u2DBF.ß\u200D; ; [C2, P1, V6]; xn--7pj.xn--zca870n; ; xn--7pj.ss; [P1, V6] # .ß
-\u2DBF.SS\u200D; \u2DBF.ss\u200D; [C2, P1, V6]; xn--7pj.xn--ss-n1t; ; xn--7pj.ss; [P1, V6] # .ss
-\u2DBF.ss\u200D; ; [C2, P1, V6]; xn--7pj.xn--ss-n1t; ; xn--7pj.ss; [P1, V6] # .ss
-\u2DBF.Ss\u200D; \u2DBF.ss\u200D; [C2, P1, V6]; xn--7pj.xn--ss-n1t; ; xn--7pj.ss; [P1, V6] # .ss
+\u1BA9\u200D\u062A񡚈.\u1CD5䷉ⴡ; \u1BA9\u200D\u062A񡚈.\u1CD5䷉ⴡ; [B1, C2, V5, V6]; xn--pgb911imgdrw34r.xn--i6f270etuy; ; xn--pgb911izv33i.xn--i6f270etuy; [B1, V5, V6] # ᮩت.᳕䷉ⴡ
+\u2DBF.ß\u200D; ; [C2, V6]; xn--7pj.xn--zca870n; ; xn--7pj.ss; [V6] # .ß
+\u2DBF.SS\u200D; \u2DBF.ss\u200D; [C2, V6]; xn--7pj.xn--ss-n1t; ; xn--7pj.ss; [V6] # .ss
+\u2DBF.ss\u200D; ; [C2, V6]; xn--7pj.xn--ss-n1t; ; xn--7pj.ss; [V6] # .ss
+\u2DBF.Ss\u200D; \u2DBF.ss\u200D; [C2, V6]; xn--7pj.xn--ss-n1t; ; xn--7pj.ss; [V6] # .ss
xn--7pj.ss; \u2DBF.ss; [V6]; xn--7pj.ss; ; ; # .ss
xn--7pj.xn--ss-n1t; \u2DBF.ss\u200D; [C2, V6]; xn--7pj.xn--ss-n1t; ; ; # .ss
xn--7pj.xn--zca870n; \u2DBF.ß\u200D; [C2, V6]; xn--7pj.xn--zca870n; ; ; # .ß
-\u1BF3︒.\u062A≯ꡂ; ; [B2, B3, B6, P1, V5, V6]; xn--1zf8957g.xn--pgb885lry5g; ; ; # ᯳︒.ت≯ꡂ
-\u1BF3︒.\u062A>\u0338ꡂ; \u1BF3︒.\u062A≯ꡂ; [B2, B3, B6, P1, V5, V6]; xn--1zf8957g.xn--pgb885lry5g; ; ; # ᯳︒.ت≯ꡂ
-\u1BF3。.\u062A≯ꡂ; \u1BF3..\u062A≯ꡂ; [B2, B3, P1, V5, V6, X4_2]; xn--1zf..xn--pgb885lry5g; [B2, B3, P1, V5, V6, A4_2]; ; # ᯳..ت≯ꡂ
-\u1BF3。.\u062A>\u0338ꡂ; \u1BF3..\u062A≯ꡂ; [B2, B3, P1, V5, V6, X4_2]; xn--1zf..xn--pgb885lry5g; [B2, B3, P1, V5, V6, A4_2]; ; # ᯳..ت≯ꡂ
-xn--1zf..xn--pgb885lry5g; \u1BF3..\u062A≯ꡂ; [B2, B3, V5, V6, X4_2]; xn--1zf..xn--pgb885lry5g; [B2, B3, V5, V6, A4_2]; ; # ᯳..ت≯ꡂ
+\u1BF3︒.\u062A≯ꡂ; ; [B2, B3, B6, V5, V6]; xn--1zf8957g.xn--pgb885lry5g; ; ; # ᯳︒.ت≯ꡂ
+\u1BF3︒.\u062A>\u0338ꡂ; \u1BF3︒.\u062A≯ꡂ; [B2, B3, B6, V5, V6]; xn--1zf8957g.xn--pgb885lry5g; ; ; # ᯳︒.ت≯ꡂ
+\u1BF3。.\u062A≯ꡂ; \u1BF3..\u062A≯ꡂ; [B2, B3, V5, X4_2]; xn--1zf..xn--pgb885lry5g; [B2, B3, V5, A4_2]; ; # ᯳..ت≯ꡂ
+\u1BF3。.\u062A>\u0338ꡂ; \u1BF3..\u062A≯ꡂ; [B2, B3, V5, X4_2]; xn--1zf..xn--pgb885lry5g; [B2, B3, V5, A4_2]; ; # ᯳..ت≯ꡂ
+xn--1zf..xn--pgb885lry5g; \u1BF3..\u062A≯ꡂ; [B2, B3, V5, X4_2]; xn--1zf..xn--pgb885lry5g; [B2, B3, V5, A4_2]; ; # ᯳..ت≯ꡂ
xn--1zf8957g.xn--pgb885lry5g; \u1BF3︒.\u062A≯ꡂ; [B2, B3, B6, V5, V6]; xn--1zf8957g.xn--pgb885lry5g; ; ; # ᯳︒.ت≯ꡂ
-≮≠ñ»ƒï½¡-ð« †\u06B7ð¹ª; ≮≠ñ»ƒ.-ð« †\u06B7ð¹ª; [B1, P1, V3, V6]; xn--1ch1a29470f.xn----7uc5363rc1rn; ; ; # ≮≠.-ð« †Ú·ð¹ª
-<\u0338=\u0338ñ»ƒï½¡-ð« †\u06B7ð¹ª; ≮≠ñ»ƒ.-ð« †\u06B7ð¹ª; [B1, P1, V3, V6]; xn--1ch1a29470f.xn----7uc5363rc1rn; ; ; # ≮≠.-ð« †Ú·ð¹ª
-≮≠ñ»ƒã€‚-ð« †\u06B7ð¹ª; ≮≠ñ»ƒ.-ð« †\u06B7ð¹ª; [B1, P1, V3, V6]; xn--1ch1a29470f.xn----7uc5363rc1rn; ; ; # ≮≠.-ð« †Ú·ð¹ª
-<\u0338=\u0338ñ»ƒã€‚-ð« †\u06B7ð¹ª; ≮≠ñ»ƒ.-ð« †\u06B7ð¹ª; [B1, P1, V3, V6]; xn--1ch1a29470f.xn----7uc5363rc1rn; ; ; # ≮≠.-ð« †Ú·ð¹ª
+≮≠ñ»ƒï½¡-ð« †\u06B7ð¹ª; ≮≠ñ»ƒ.-ð« †\u06B7ð¹ª; [B1, V3, V6]; xn--1ch1a29470f.xn----7uc5363rc1rn; ; ; # ≮≠.-ð« †Ú·ð¹ª
+<\u0338=\u0338ñ»ƒï½¡-ð« †\u06B7ð¹ª; ≮≠ñ»ƒ.-ð« †\u06B7ð¹ª; [B1, V3, V6]; xn--1ch1a29470f.xn----7uc5363rc1rn; ; ; # ≮≠.-ð« †Ú·ð¹ª
+≮≠ñ»ƒã€‚-ð« †\u06B7ð¹ª; ≮≠ñ»ƒ.-ð« †\u06B7ð¹ª; [B1, V3, V6]; xn--1ch1a29470f.xn----7uc5363rc1rn; ; ; # ≮≠.-ð« †Ú·ð¹ª
+<\u0338=\u0338ñ»ƒã€‚-ð« †\u06B7ð¹ª; ≮≠ñ»ƒ.-ð« †\u06B7ð¹ª; [B1, V3, V6]; xn--1ch1a29470f.xn----7uc5363rc1rn; ; ; # ≮≠.-ð« †Ú·ð¹ª
xn--1ch1a29470f.xn----7uc5363rc1rn; ≮≠ñ»ƒ.-ð« †\u06B7ð¹ª; [B1, V3, V6]; xn--1ch1a29470f.xn----7uc5363rc1rn; ; ; # ≮≠.-ð« †Ú·ð¹ª
ð¹¡\u0777。ꡂ; ð¹¡\u0777.ê¡‚; [B1]; xn--7pb5275k.xn--bc9a; ; ; # ð¹¡Ý·.ê¡‚
xn--7pb5275k.xn--bc9a; ð¹¡\u0777.ê¡‚; [B1]; xn--7pb5275k.xn--bc9a; ; ; # ð¹¡Ý·.ê¡‚
-á‚©ð†…ñ”»…\u0619.ßð§¦ð¹³\u0775; ; [B5, B6, P1, V6]; xn--7fb125cjv87a7xvz.xn--zca684a699vf2d; ; xn--7fb125cjv87a7xvz.xn--ss-zme7575xp0e; # á‚©ð†…Ø™.ßð§¦ð¹³Ýµ
-â´‰ð†…ñ”»…\u0619.ßð§¦ð¹³\u0775; ; [B5, B6, P1, V6]; xn--7fb940rwt3z7xvz.xn--zca684a699vf2d; ; xn--7fb940rwt3z7xvz.xn--ss-zme7575xp0e; # â´‰ð†…Ø™.ßð§¦ð¹³Ýµ
-á‚©ð†…ñ”»…\u0619.SSð§¦ð¹³\u0775; á‚©ð†…ñ”»…\u0619.ssð§¦ð¹³\u0775; [B5, B6, P1, V6]; xn--7fb125cjv87a7xvz.xn--ss-zme7575xp0e; ; ; # á‚©ð†…Ø™.ssð§¦ð¹³Ýµ
-â´‰ð†…ñ”»…\u0619.ssð§¦ð¹³\u0775; ; [B5, B6, P1, V6]; xn--7fb940rwt3z7xvz.xn--ss-zme7575xp0e; ; ; # â´‰ð†…Ø™.ssð§¦ð¹³Ýµ
-á‚©ð†…ñ”»…\u0619.Ssð§¦ð¹³\u0775; á‚©ð†…ñ”»…\u0619.ssð§¦ð¹³\u0775; [B5, B6, P1, V6]; xn--7fb125cjv87a7xvz.xn--ss-zme7575xp0e; ; ; # á‚©ð†…Ø™.ssð§¦ð¹³Ýµ
+á‚©ð†…ñ”»…\u0619.ßð§¦ð¹³\u0775; ; [B5, B6, V6]; xn--7fb125cjv87a7xvz.xn--zca684a699vf2d; ; xn--7fb125cjv87a7xvz.xn--ss-zme7575xp0e; # á‚©ð†…Ø™.ßð§¦ð¹³Ýµ
+â´‰ð†…ñ”»…\u0619.ßð§¦ð¹³\u0775; ; [B5, B6, V6]; xn--7fb940rwt3z7xvz.xn--zca684a699vf2d; ; xn--7fb940rwt3z7xvz.xn--ss-zme7575xp0e; # â´‰ð†…Ø™.ßð§¦ð¹³Ýµ
+á‚©ð†…ñ”»…\u0619.SSð§¦ð¹³\u0775; á‚©ð†…ñ”»…\u0619.ssð§¦ð¹³\u0775; [B5, B6, V6]; xn--7fb125cjv87a7xvz.xn--ss-zme7575xp0e; ; ; # á‚©ð†…Ø™.ssð§¦ð¹³Ýµ
+â´‰ð†…ñ”»…\u0619.ssð§¦ð¹³\u0775; ; [B5, B6, V6]; xn--7fb940rwt3z7xvz.xn--ss-zme7575xp0e; ; ; # â´‰ð†…Ø™.ssð§¦ð¹³Ýµ
+á‚©ð†…ñ”»…\u0619.Ssð§¦ð¹³\u0775; á‚©ð†…ñ”»…\u0619.ssð§¦ð¹³\u0775; [B5, B6, V6]; xn--7fb125cjv87a7xvz.xn--ss-zme7575xp0e; ; ; # á‚©ð†…Ø™.ssð§¦ð¹³Ýµ
xn--7fb125cjv87a7xvz.xn--ss-zme7575xp0e; á‚©ð†…ñ”»…\u0619.ssð§¦ð¹³\u0775; [B5, B6, V6]; xn--7fb125cjv87a7xvz.xn--ss-zme7575xp0e; ; ; # á‚©ð†…Ø™.ssð§¦ð¹³Ýµ
xn--7fb940rwt3z7xvz.xn--ss-zme7575xp0e; â´‰ð†…ñ”»…\u0619.ssð§¦ð¹³\u0775; [B5, B6, V6]; xn--7fb940rwt3z7xvz.xn--ss-zme7575xp0e; ; ; # â´‰ð†…Ø™.ssð§¦ð¹³Ýµ
xn--7fb940rwt3z7xvz.xn--zca684a699vf2d; â´‰ð†…ñ”»…\u0619.ßð§¦ð¹³\u0775; [B5, B6, V6]; xn--7fb940rwt3z7xvz.xn--zca684a699vf2d; ; ; # â´‰ð†…Ø™.ßð§¦ð¹³Ýµ
xn--7fb125cjv87a7xvz.xn--zca684a699vf2d; á‚©ð†…ñ”»…\u0619.ßð§¦ð¹³\u0775; [B5, B6, V6]; xn--7fb125cjv87a7xvz.xn--zca684a699vf2d; ; ; # á‚©ð†…Ø™.ßð§¦ð¹³Ýµ
-\u200D\u0643ð§¾â†™.ñŠ½¡; ; [B1, C2, P1, V6]; xn--fhb713k87ag053c.xn--7s4w; ; xn--fhb011lnp8n.xn--7s4w; [B3, P1, V6] # Ùƒð§¾â†™.
+\u200D\u0643ð§¾â†™.ñŠ½¡; ; [B1, C2, V6]; xn--fhb713k87ag053c.xn--7s4w; ; xn--fhb011lnp8n.xn--7s4w; [B3, V6] # Ùƒð§¾â†™.
xn--fhb011lnp8n.xn--7s4w; \u0643ð§¾â†™.ñŠ½¡; [B3, V6]; xn--fhb011lnp8n.xn--7s4w; ; ; # Ùƒð§¾â†™.
xn--fhb713k87ag053c.xn--7s4w; \u200D\u0643ð§¾â†™.ñŠ½¡; [B1, C2, V6]; xn--fhb713k87ag053c.xn--7s4w; ; ; # Ùƒð§¾â†™.
梉。\u200C; 梉.\u200C; [C1]; xn--7zv.xn--0ug; ; xn--7zv.; [] # 梉.
xn--7zv.; 梉.; ; xn--7zv.; ; ; # 梉.
梉.; ; ; xn--7zv.; ; ; # 梉.
xn--7zv.xn--0ug; 梉.\u200C; [C1]; xn--7zv.xn--0ug; ; ; # 梉.
-ê¡£-≠.\u200D𞤗ð…¢â†ƒ; ê¡£-≠.\u200D𞤹ð…¢â†ƒ; [B1, B6, C2, P1, V6]; xn----ufo9661d.xn--1ug79cm620c71sh; ; xn----ufo9661d.xn--q5g0929fhm4f; [B2, B3, B6, P1, V6] # ê¡£-≠.𞤹ð…¢â†ƒ
-ê¡£-=\u0338.\u200D𞤗ð…¢â†ƒ; ê¡£-≠.\u200D𞤹ð…¢â†ƒ; [B1, B6, C2, P1, V6]; xn----ufo9661d.xn--1ug79cm620c71sh; ; xn----ufo9661d.xn--q5g0929fhm4f; [B2, B3, B6, P1, V6] # ê¡£-≠.𞤹ð…¢â†ƒ
-ê¡£-=\u0338.\u200D𞤹ð…¢â†„; ê¡£-≠.\u200D𞤹ð…¢â†„; [B1, B6, C2, P1, V6]; xn----ufo9661d.xn--1ug99cj620c71sh; ; xn----ufo9661d.xn--r5gy929fhm4f; [B2, B3, B6, P1, V6] # ê¡£-≠.𞤹ð…¢â†„
-ê¡£-≠.\u200D𞤹ð…¢â†„; ; [B1, B6, C2, P1, V6]; xn----ufo9661d.xn--1ug99cj620c71sh; ; xn----ufo9661d.xn--r5gy929fhm4f; [B2, B3, B6, P1, V6] # ê¡£-≠.𞤹ð…¢â†„
-ê¡£-≠.\u200D𞤗ð…¢â†„; ê¡£-≠.\u200D𞤹ð…¢â†„; [B1, B6, C2, P1, V6]; xn----ufo9661d.xn--1ug99cj620c71sh; ; xn----ufo9661d.xn--r5gy929fhm4f; [B2, B3, B6, P1, V6] # ê¡£-≠.𞤹ð…¢â†„
-ê¡£-=\u0338.\u200D𞤗ð…¢â†„; ê¡£-≠.\u200D𞤹ð…¢â†„; [B1, B6, C2, P1, V6]; xn----ufo9661d.xn--1ug99cj620c71sh; ; xn----ufo9661d.xn--r5gy929fhm4f; [B2, B3, B6, P1, V6] # ê¡£-≠.𞤹ð…¢â†„
-xn----ufo9661d.xn--r5gy929fhm4f; ê¡£-≠.𞤹ð…¢â†„; [B2, B3, B6, V6]; xn----ufo9661d.xn--r5gy929fhm4f; ; ; # ê¡£-≠.𞤹ð…¢â†„
-xn----ufo9661d.xn--1ug99cj620c71sh; ê¡£-≠.\u200D𞤹ð…¢â†„; [B1, B6, C2, V6]; xn----ufo9661d.xn--1ug99cj620c71sh; ; ; # ê¡£-≠.𞤹ð…¢â†„
+ê¡£-≠.\u200D𞤗ð…¢â†ƒ; ê¡£-≠.\u200D𞤹ð…¢â†ƒ; [B1, B6, C2, V6]; xn----ufo9661d.xn--1ug79cm620c71sh; ; xn----ufo9661d.xn--q5g0929fhm4f; [B2, B3, B6, V6] # ê¡£-≠.𞤹ð…¢â†ƒ
+ê¡£-=\u0338.\u200D𞤗ð…¢â†ƒ; ê¡£-≠.\u200D𞤹ð…¢â†ƒ; [B1, B6, C2, V6]; xn----ufo9661d.xn--1ug79cm620c71sh; ; xn----ufo9661d.xn--q5g0929fhm4f; [B2, B3, B6, V6] # ê¡£-≠.𞤹ð…¢â†ƒ
+ê¡£-=\u0338.\u200D𞤹ð…¢â†„; ê¡£-≠.\u200D𞤹ð…¢â†„; [B1, B6, C2]; xn----ufo9661d.xn--1ug99cj620c71sh; ; xn----ufo9661d.xn--r5gy929fhm4f; [B2, B3, B6] # ê¡£-≠.𞤹ð…¢â†„
+ê¡£-≠.\u200D𞤹ð…¢â†„; ; [B1, B6, C2]; xn----ufo9661d.xn--1ug99cj620c71sh; ; xn----ufo9661d.xn--r5gy929fhm4f; [B2, B3, B6] # ê¡£-≠.𞤹ð…¢â†„
+ê¡£-≠.\u200D𞤗ð…¢â†„; ê¡£-≠.\u200D𞤹ð…¢â†„; [B1, B6, C2]; xn----ufo9661d.xn--1ug99cj620c71sh; ; xn----ufo9661d.xn--r5gy929fhm4f; [B2, B3, B6] # ê¡£-≠.𞤹ð…¢â†„
+ê¡£-=\u0338.\u200D𞤗ð…¢â†„; ê¡£-≠.\u200D𞤹ð…¢â†„; [B1, B6, C2]; xn----ufo9661d.xn--1ug99cj620c71sh; ; xn----ufo9661d.xn--r5gy929fhm4f; [B2, B3, B6] # ê¡£-≠.𞤹ð…¢â†„
+xn----ufo9661d.xn--r5gy929fhm4f; ê¡£-≠.𞤹ð…¢â†„; [B2, B3, B6]; xn----ufo9661d.xn--r5gy929fhm4f; ; ; # ê¡£-≠.𞤹ð…¢â†„
+xn----ufo9661d.xn--1ug99cj620c71sh; ê¡£-≠.\u200D𞤹ð…¢â†„; [B1, B6, C2]; xn----ufo9661d.xn--1ug99cj620c71sh; ; ; # ê¡£-≠.𞤹ð…¢â†„
xn----ufo9661d.xn--q5g0929fhm4f; ê¡£-≠.𞤹ð…¢â†ƒ; [B2, B3, B6, V6]; xn----ufo9661d.xn--q5g0929fhm4f; ; ; # ê¡£-≠.𞤹ð…¢â†ƒ
xn----ufo9661d.xn--1ug79cm620c71sh; ê¡£-≠.\u200D𞤹ð…¢â†ƒ; [B1, B6, C2, V6]; xn----ufo9661d.xn--1ug79cm620c71sh; ; ; # ê¡£-≠.𞤹ð…¢â†ƒ
-Ï‚â’ð†«â¸µï½¡ð±¢ðŸ„ŠðŸ³; Ï‚â’ð†«â¸µ.ð±¢ðŸ„Š7; [B6, P1, V6]; xn--3xa019nwtghi25b.xn--7-075iy877c; ; xn--4xa809nwtghi25b.xn--7-075iy877c; # Ï‚â’ð†«â¸µ.🄊7
-Ï‚9.ð†«â¸µã€‚ð±¢9,7; Ï‚9.ð†«â¸µ.ð±¢9,7; [B1, P1, V5, V6]; xn--9-xmb.xn--ltj1535k.xn--9,7-r67t; ; xn--9-zmb.xn--ltj1535k.xn--9,7-r67t; # Ï‚9.ð†«â¸µ.9,7
-Σ9.ð†«â¸µã€‚ð±¢9,7; σ9.ð†«â¸µ.ð±¢9,7; [B1, P1, V5, V6]; xn--9-zmb.xn--ltj1535k.xn--9,7-r67t; ; ; # σ9.ð†«â¸µ.9,7
-σ9.ð†«â¸µã€‚ð±¢9,7; σ9.ð†«â¸µ.ð±¢9,7; [B1, P1, V5, V6]; xn--9-zmb.xn--ltj1535k.xn--9,7-r67t; ; ; # σ9.ð†«â¸µ.9,7
-xn--9-zmb.xn--ltj1535k.xn--9,7-r67t; σ9.ð†«â¸µ.ð±¢9,7; [B1, P1, V5, V6]; xn--9-zmb.xn--ltj1535k.xn--9,7-r67t; ; ; # σ9.ð†«â¸µ.9,7
-xn--9-xmb.xn--ltj1535k.xn--9,7-r67t; Ï‚9.ð†«â¸µ.ð±¢9,7; [B1, P1, V5, V6]; xn--9-xmb.xn--ltj1535k.xn--9,7-r67t; ; ; # Ï‚9.ð†«â¸µ.9,7
-Σâ’ð†«â¸µï½¡ð±¢ðŸ„ŠðŸ³; σâ’ð†«â¸µ.ð±¢ðŸ„Š7; [B6, P1, V6]; xn--4xa809nwtghi25b.xn--7-075iy877c; ; ; # σâ’ð†«â¸µ.🄊7
-σâ’ð†«â¸µï½¡ð±¢ðŸ„ŠðŸ³; σâ’ð†«â¸µ.ð±¢ðŸ„Š7; [B6, P1, V6]; xn--4xa809nwtghi25b.xn--7-075iy877c; ; ; # σâ’ð†«â¸µ.🄊7
+Ï‚â’ð†«â¸µï½¡ð±¢ðŸ„ŠðŸ³; Ï‚â’ð†«â¸µ.ð±¢ðŸ„Š7; [B6, V6]; xn--3xa019nwtghi25b.xn--7-075iy877c; ; xn--4xa809nwtghi25b.xn--7-075iy877c; # Ï‚â’ð†«â¸µ.🄊7
+Ï‚9.ð†«â¸µã€‚ð±¢9,7; Ï‚9.ð†«â¸µ.ð±¢9,7; [B1, V5, V6]; xn--9-xmb.xn--ltj1535k.xn--9,7-r67t; ; xn--9-zmb.xn--ltj1535k.xn--9,7-r67t; # Ï‚9.ð†«â¸µ.9,7
+Σ9.ð†«â¸µã€‚ð±¢9,7; σ9.ð†«â¸µ.ð±¢9,7; [B1, V5, V6]; xn--9-zmb.xn--ltj1535k.xn--9,7-r67t; ; ; # σ9.ð†«â¸µ.9,7
+σ9.ð†«â¸µã€‚ð±¢9,7; σ9.ð†«â¸µ.ð±¢9,7; [B1, V5, V6]; xn--9-zmb.xn--ltj1535k.xn--9,7-r67t; ; ; # σ9.ð†«â¸µ.9,7
+xn--9-zmb.xn--ltj1535k.xn--9,7-r67t; σ9.ð†«â¸µ.ð±¢9,7; [B1, V5, V6]; xn--9-zmb.xn--ltj1535k.xn--9,7-r67t; ; ; # σ9.ð†«â¸µ.9,7
+xn--9-xmb.xn--ltj1535k.xn--9,7-r67t; Ï‚9.ð†«â¸µ.ð±¢9,7; [B1, V5, V6]; xn--9-xmb.xn--ltj1535k.xn--9,7-r67t; ; ; # Ï‚9.ð†«â¸µ.9,7
+Σâ’ð†«â¸µï½¡ð±¢ðŸ„ŠðŸ³; σâ’ð†«â¸µ.ð±¢ðŸ„Š7; [B6, V6]; xn--4xa809nwtghi25b.xn--7-075iy877c; ; ; # σâ’ð†«â¸µ.🄊7
+σâ’ð†«â¸µï½¡ð±¢ðŸ„ŠðŸ³; σâ’ð†«â¸µ.ð±¢ðŸ„Š7; [B6, V6]; xn--4xa809nwtghi25b.xn--7-075iy877c; ; ; # σâ’ð†«â¸µ.🄊7
xn--4xa809nwtghi25b.xn--7-075iy877c; σâ’ð†«â¸µ.ð±¢ðŸ„Š7; [B6, V6]; xn--4xa809nwtghi25b.xn--7-075iy877c; ; ; # σâ’ð†«â¸µ.🄊7
xn--3xa019nwtghi25b.xn--7-075iy877c; Ï‚â’ð†«â¸µ.ð±¢ðŸ„Š7; [B6, V6]; xn--3xa019nwtghi25b.xn--7-075iy877c; ; ; # Ï‚â’ð†«â¸µ.🄊7
\u0853.\u200Cß; \u0853.\u200Cß; [B1, C1]; xn--iwb.xn--zca570n; ; xn--iwb.ss; [] # ࡓ.ß
@@ -6154,64 +6184,64 @@ xn--iwb.xn--zca570n; \u0853.\u200Cß; [B1, C1]; xn--iwb.xn--zca570n; ; ; # ࡓ.
\u0853.\u200Css; \u0853.\u200Css; [B1, C1]; xn--iwb.xn--ss-i1t; ; xn--iwb.ss; [] # ࡓ.ss
\u0853.\u200CSs; \u0853.\u200Css; [B1, C1]; xn--iwb.xn--ss-i1t; ; xn--iwb.ss; [] # à¡“.ss
\u0853.\u200CSs; \u0853.\u200Css; [B1, C1]; xn--iwb.xn--ss-i1t; ; xn--iwb.ss; [] # ࡓ.ss
-ñ¯¶£-.\u200D\u074E\uA94D󠻨; ; [B1, B6, C2, P1, V3, V6]; xn----s116e.xn--1ob387jy90hq459k; ; xn----s116e.xn--1ob6504fmf40i; [B3, B6, P1, V3, V6] # -.ÝŽê¥
+ñ¯¶£-.\u200D\u074E\uA94D󠻨; ; [B1, B6, C2, V3, V6]; xn----s116e.xn--1ob387jy90hq459k; ; xn----s116e.xn--1ob6504fmf40i; [B3, B6, V3, V6] # -.ÝŽê¥
xn----s116e.xn--1ob6504fmf40i; ñ¯¶£-.\u074E\uA94D󠻨; [B3, B6, V3, V6]; xn----s116e.xn--1ob6504fmf40i; ; ; # -.ÝŽê¥
xn----s116e.xn--1ob387jy90hq459k; ñ¯¶£-.\u200D\u074E\uA94D󠻨; [B1, B6, C2, V3, V6]; xn----s116e.xn--1ob387jy90hq459k; ; ; # -.ÝŽê¥
-䃚蟥-。-񽒘⒈; 䃚蟥-.-񽒘⒈; [P1, V3, V6]; xn----n50a258u.xn----ecp33805f; ; ; # 䃚蟥-.-⒈
-䃚蟥-。-񽒘1.; 䃚蟥-.-񽒘1.; [P1, V3, V6]; xn----n50a258u.xn---1-up07j.; ; ; # 䃚蟥-.-1.
+䃚蟥-。-񽒘⒈; 䃚蟥-.-񽒘⒈; [V3, V6]; xn----n50a258u.xn----ecp33805f; ; ; # 䃚蟥-.-⒈
+䃚蟥-。-񽒘1.; 䃚蟥-.-񽒘1.; [V3, V6]; xn----n50a258u.xn---1-up07j.; ; ; # 䃚蟥-.-1.
xn----n50a258u.xn---1-up07j.; 䃚蟥-.-񽒘1.; [V3, V6]; xn----n50a258u.xn---1-up07j.; ; ; # 䃚蟥-.-1.
xn----n50a258u.xn----ecp33805f; 䃚蟥-.-񽒘⒈; [V3, V6]; xn----n50a258u.xn----ecp33805f; ; ; # 䃚蟥-.-⒈
ð¹¸äšµ-ꡡ。⺇; ð¹¸äšµ-ê¡¡.⺇; [B1]; xn----bm3an932a1l5d.xn--xvj; ; ; # ð¹¸äšµ-ê¡¡.⺇
xn----bm3an932a1l5d.xn--xvj; ð¹¸äšµ-ê¡¡.⺇; [B1]; xn----bm3an932a1l5d.xn--xvj; ; ; # ð¹¸äšµ-ê¡¡.⺇
-𑄳。\u1ADCð¹»; ð‘„³.\u1ADCð¹»; [B1, B3, B5, B6, P1, V5, V6]; xn--v80d.xn--2rf1154i; ; ; # ð‘„³.ð¹»
-xn--v80d.xn--2rf1154i; ð‘„³.\u1ADCð¹»; [B1, B3, B5, B6, V5, V6]; xn--v80d.xn--2rf1154i; ; ; # ð‘„³.ð¹»
-≮ð¹».â’Žð‘‚µ\u06BA\u0602; ; [B1, P1, V6]; xn--gdhx904g.xn--kfb18a325efm3s; ; ; # ≮ð¹».â’Žð‘‚µÚº
-<\u0338ð¹».â’Žð‘‚µ\u06BA\u0602; ≮ð¹».â’Žð‘‚µ\u06BA\u0602; [B1, P1, V6]; xn--gdhx904g.xn--kfb18a325efm3s; ; ; # ≮ð¹».â’Žð‘‚µÚº
-≮ð¹».7.ð‘‚µ\u06BA\u0602; ; [B1, P1, V5, V6]; xn--gdhx904g.7.xn--kfb18an307d; ; ; # ≮ð¹».7.ð‘‚µÚº
-<\u0338ð¹».7.ð‘‚µ\u06BA\u0602; ≮ð¹».7.ð‘‚µ\u06BA\u0602; [B1, P1, V5, V6]; xn--gdhx904g.7.xn--kfb18an307d; ; ; # ≮ð¹».7.ð‘‚µÚº
+𑄳。\u1ADCð¹»; ð‘„³.\u1ADCð¹»; [B1, B5, B6, V5, V6]; xn--v80d.xn--2rf1154i; ; ; # ð‘„³.ð¹»
+xn--v80d.xn--2rf1154i; ð‘„³.\u1ADCð¹»; [B1, B5, B6, V5, V6]; xn--v80d.xn--2rf1154i; ; ; # ð‘„³.ð¹»
+≮ð¹».â’Žð‘‚µ\u06BA\u0602; ; [B1, V6]; xn--gdhx904g.xn--kfb18a325efm3s; ; ; # ≮ð¹».â’Žð‘‚µÚº
+<\u0338ð¹».â’Žð‘‚µ\u06BA\u0602; ≮ð¹».â’Žð‘‚µ\u06BA\u0602; [B1, V6]; xn--gdhx904g.xn--kfb18a325efm3s; ; ; # ≮ð¹».â’Žð‘‚µÚº
+≮ð¹».7.ð‘‚µ\u06BA\u0602; ; [B1, V5, V6]; xn--gdhx904g.7.xn--kfb18an307d; ; ; # ≮ð¹».7.ð‘‚µÚº
+<\u0338ð¹».7.ð‘‚µ\u06BA\u0602; ≮ð¹».7.ð‘‚µ\u06BA\u0602; [B1, V5, V6]; xn--gdhx904g.7.xn--kfb18an307d; ; ; # ≮ð¹».7.ð‘‚µÚº
xn--gdhx904g.7.xn--kfb18an307d; ≮ð¹».7.ð‘‚µ\u06BA\u0602; [B1, V5, V6]; xn--gdhx904g.7.xn--kfb18an307d; ; ; # ≮ð¹».7.ð‘‚µÚº
xn--gdhx904g.xn--kfb18a325efm3s; ≮ð¹».â’Žð‘‚µ\u06BA\u0602; [B1, V6]; xn--gdhx904g.xn--kfb18a325efm3s; ; ; # ≮ð¹».â’Žð‘‚µÚº
-ᢔ≠ô‹‰‚.\u200Dð‹¢; ; [C2, P1, V6]; xn--ebf031cf7196a.xn--1ug9540g; ; xn--ebf031cf7196a.xn--587c; [P1, V6] # ᢔ≠.ð‹¢
-ᢔ=\u0338ô‹‰‚.\u200Dð‹¢; ᢔ≠ô‹‰‚.\u200Dð‹¢; [C2, P1, V6]; xn--ebf031cf7196a.xn--1ug9540g; ; xn--ebf031cf7196a.xn--587c; [P1, V6] # ᢔ≠.ð‹¢
+ᢔ≠ô‹‰‚.\u200Dð‹¢; ; [C2, V6]; xn--ebf031cf7196a.xn--1ug9540g; ; xn--ebf031cf7196a.xn--587c; [V6] # ᢔ≠.ð‹¢
+ᢔ=\u0338ô‹‰‚.\u200Dð‹¢; ᢔ≠ô‹‰‚.\u200Dð‹¢; [C2, V6]; xn--ebf031cf7196a.xn--1ug9540g; ; xn--ebf031cf7196a.xn--587c; [V6] # ᢔ≠.ð‹¢
xn--ebf031cf7196a.xn--587c; ᢔ≠ô‹‰‚.ð‹¢; [V6]; xn--ebf031cf7196a.xn--587c; ; ; # ᢔ≠.ð‹¢
xn--ebf031cf7196a.xn--1ug9540g; ᢔ≠ô‹‰‚.\u200Dð‹¢; [C2, V6]; xn--ebf031cf7196a.xn--1ug9540g; ; ; # ᢔ≠.ð‹¢
-ð©â‰®ñ£Š›â‰¯ï¼Ž\u066C𞵕⳿; ð©â‰®ñ£Š›â‰¯.\u066C𞵕⳿; [B1, B2, B3, P1, V6]; xn--gdhc0519o0y27b.xn--lib468q0d21a; ; ; # ð©â‰®â‰¯.٬⳿
-ð©<\u0338ñ£Š›>\u0338.\u066C𞵕⳿; ð©â‰®ñ£Š›â‰¯.\u066C𞵕⳿; [B1, B2, B3, P1, V6]; xn--gdhc0519o0y27b.xn--lib468q0d21a; ; ; # ð©â‰®â‰¯.٬⳿
-ð©â‰®ñ£Š›â‰¯.\u066C𞵕⳿; ; [B1, B2, B3, P1, V6]; xn--gdhc0519o0y27b.xn--lib468q0d21a; ; ; # ð©â‰®â‰¯.٬⳿
-ð©<\u0338ñ£Š›>\u0338.\u066C𞵕⳿; ð©â‰®ñ£Š›â‰¯.\u066C𞵕⳿; [B1, B2, B3, P1, V6]; xn--gdhc0519o0y27b.xn--lib468q0d21a; ; ; # ð©â‰®â‰¯.٬⳿
+ð©â‰®ñ£Š›â‰¯ï¼Ž\u066C𞵕⳿; ð©â‰®ñ£Š›â‰¯.\u066C𞵕⳿; [B1, B2, B3, V6]; xn--gdhc0519o0y27b.xn--lib468q0d21a; ; ; # ð©â‰®â‰¯.٬⳿
+ð©<\u0338ñ£Š›>\u0338.\u066C𞵕⳿; ð©â‰®ñ£Š›â‰¯.\u066C𞵕⳿; [B1, B2, B3, V6]; xn--gdhc0519o0y27b.xn--lib468q0d21a; ; ; # ð©â‰®â‰¯.٬⳿
+ð©â‰®ñ£Š›â‰¯.\u066C𞵕⳿; ; [B1, B2, B3, V6]; xn--gdhc0519o0y27b.xn--lib468q0d21a; ; ; # ð©â‰®â‰¯.٬⳿
+ð©<\u0338ñ£Š›>\u0338.\u066C𞵕⳿; ð©â‰®ñ£Š›â‰¯.\u066C𞵕⳿; [B1, B2, B3, V6]; xn--gdhc0519o0y27b.xn--lib468q0d21a; ; ; # ð©â‰®â‰¯.٬⳿
xn--gdhc0519o0y27b.xn--lib468q0d21a; ð©â‰®ñ£Š›â‰¯.\u066C𞵕⳿; [B1, B2, B3, V6]; xn--gdhc0519o0y27b.xn--lib468q0d21a; ; ; # ð©â‰®â‰¯.٬⳿
-。âº; -.âº; [V3]; -.xn--6vj; ; ; # -.âº
-。âº; -.âº; [V3]; -.xn--6vj; ; ; # -.âº
-.xn--6vj; -.âº; [V3]; -.xn--6vj; ; ; # -.âº
-󠰩𑲬.\u065C; 󠰩𑲬.\u065C; [P1, V5, V6]; xn--sn3d59267c.xn--4hb; ; ; # 𑲬.ٜ
-󠰩𑲬.\u065C; ; [P1, V5, V6]; xn--sn3d59267c.xn--4hb; ; ; # 𑲬.ٜ
+󠰩𑲬.\u065C; 󠰩𑲬.\u065C; [V5, V6]; xn--sn3d59267c.xn--4hb; ; ; # 𑲬.ٜ
+󠰩𑲬.\u065C; ; [V5, V6]; xn--sn3d59267c.xn--4hb; ; ; # 𑲬.ٜ
xn--sn3d59267c.xn--4hb; 󠰩𑲬.\u065C; [V5, V6]; xn--sn3d59267c.xn--4hb; ; ; # 𑲬.ٜ
-ðº.ñš‡ƒ\u200C; ; [C1, P1, V5, V6]; xn--ie8c.xn--0ug03366c; ; xn--ie8c.xn--2g51a; [P1, V5, V6] # ðº.
+ðº.ñš‡ƒ\u200C; ; [C1, V5, V6]; xn--ie8c.xn--0ug03366c; ; xn--ie8c.xn--2g51a; [V5, V6] # ðº.
xn--ie8c.xn--2g51a; ðº.ñš‡ƒ; [V5, V6]; xn--ie8c.xn--2g51a; ; ; # ðº.
xn--ie8c.xn--0ug03366c; ðº.ñš‡ƒ\u200C; [C1, V5, V6]; xn--ie8c.xn--0ug03366c; ; ; # ðº.
-\u063D\u06E3.ð¨Ž; ; [B1, B3, B6, V5]; xn--8gb64a.xn--mr9c; ; ; # ؽۣ.ð¨Ž
-xn--8gb64a.xn--mr9c; \u063D\u06E3.ð¨Ž; [B1, B3, B6, V5]; xn--8gb64a.xn--mr9c; ; ; # ؽۣ.ð¨Ž
-漦Ⴙς.ñ¡»€ð´„; ; [B5, B6, P1, V6]; xn--3xa157d717e.xn--9d0d3162t; ; xn--4xa947d717e.xn--9d0d3162t; # 漦Ⴙς.ð´„
-漦ⴙς.ñ¡»€ð´„; ; [B5, B6, P1, V6]; xn--3xa972sl47b.xn--9d0d3162t; ; xn--4xa772sl47b.xn--9d0d3162t; # 漦ⴙς.ð´„
-漦ႹΣ.ñ¡»€ð´„; 漦Ⴙσ.ñ¡»€ð´„; [B5, B6, P1, V6]; xn--4xa947d717e.xn--9d0d3162t; ; ; # 漦Ⴙσ.ð´„
-漦ⴙσ.ñ¡»€ð´„; ; [B5, B6, P1, V6]; xn--4xa772sl47b.xn--9d0d3162t; ; ; # 漦ⴙσ.ð´„
-漦Ⴙσ.ñ¡»€ð´„; ; [B5, B6, P1, V6]; xn--4xa947d717e.xn--9d0d3162t; ; ; # 漦Ⴙσ.ð´„
+\u063D\u06E3.ð¨Ž; ; [B1, V5]; xn--8gb64a.xn--mr9c; ; ; # ؽۣ.ð¨Ž
+xn--8gb64a.xn--mr9c; \u063D\u06E3.ð¨Ž; [B1, V5]; xn--8gb64a.xn--mr9c; ; ; # ؽۣ.ð¨Ž
+漦Ⴙς.ñ¡»€ð´„; ; [B5, B6, V6]; xn--3xa157d717e.xn--9d0d3162t; ; xn--4xa947d717e.xn--9d0d3162t; # 漦Ⴙς.ð´„
+漦ⴙς.ñ¡»€ð´„; ; [B5, B6, V6]; xn--3xa972sl47b.xn--9d0d3162t; ; xn--4xa772sl47b.xn--9d0d3162t; # 漦ⴙς.ð´„
+漦ႹΣ.ñ¡»€ð´„; 漦Ⴙσ.ñ¡»€ð´„; [B5, B6, V6]; xn--4xa947d717e.xn--9d0d3162t; ; ; # 漦Ⴙσ.ð´„
+漦ⴙσ.ñ¡»€ð´„; ; [B5, B6, V6]; xn--4xa772sl47b.xn--9d0d3162t; ; ; # 漦ⴙσ.ð´„
+漦Ⴙσ.ñ¡»€ð´„; ; [B5, B6, V6]; xn--4xa947d717e.xn--9d0d3162t; ; ; # 漦Ⴙσ.ð´„
xn--4xa947d717e.xn--9d0d3162t; 漦Ⴙσ.ñ¡»€ð´„; [B5, B6, V6]; xn--4xa947d717e.xn--9d0d3162t; ; ; # 漦Ⴙσ.ð´„
xn--4xa772sl47b.xn--9d0d3162t; 漦ⴙσ.ñ¡»€ð´„; [B5, B6, V6]; xn--4xa772sl47b.xn--9d0d3162t; ; ; # 漦ⴙσ.ð´„
xn--3xa972sl47b.xn--9d0d3162t; 漦ⴙς.ñ¡»€ð´„; [B5, B6, V6]; xn--3xa972sl47b.xn--9d0d3162t; ; ; # 漦ⴙς.ð´„
xn--3xa157d717e.xn--9d0d3162t; 漦Ⴙς.ñ¡»€ð´„; [B5, B6, V6]; xn--3xa157d717e.xn--9d0d3162t; ; ; # 漦Ⴙς.ð´„
-ð¹«è¸§\u0CCDò«š‡.󜀃⒈ð¨¤; ; [B1, P1, V6]; xn--8tc1437dro0d6q06h.xn--tsh2611ncu71e; ; ; # ð¹«è¸§à³.â’ˆð¨¤
-ð¹«è¸§\u0CCDò«š‡.󜀃1.ð¨¤; ; [B1, B3, B6, P1, V5, V6]; xn--8tc1437dro0d6q06h.xn--1-p948l.xn--m82h; ; ; # ð¹«è¸§à³.1.ð¨¤
-xn--8tc1437dro0d6q06h.xn--1-p948l.xn--m82h; ð¹«è¸§\u0CCDò«š‡.󜀃1.ð¨¤; [B1, B3, B6, V5, V6]; xn--8tc1437dro0d6q06h.xn--1-p948l.xn--m82h; ; ; # ð¹«è¸§à³.1.ð¨¤
+ð¹«è¸§\u0CCDò«š‡.󜀃⒈ð¨¤; ; [B1, V6]; xn--8tc1437dro0d6q06h.xn--tsh2611ncu71e; ; ; # ð¹«è¸§à³.â’ˆð¨¤
+ð¹«è¸§\u0CCDò«š‡.󜀃1.ð¨¤; ; [B1, V5, V6]; xn--8tc1437dro0d6q06h.xn--1-p948l.xn--m82h; ; ; # ð¹«è¸§à³.1.ð¨¤
+xn--8tc1437dro0d6q06h.xn--1-p948l.xn--m82h; ð¹«è¸§\u0CCDò«š‡.󜀃1.ð¨¤; [B1, V5, V6]; xn--8tc1437dro0d6q06h.xn--1-p948l.xn--m82h; ; ; # ð¹«è¸§à³.1.ð¨¤
xn--8tc1437dro0d6q06h.xn--tsh2611ncu71e; ð¹«è¸§\u0CCDò«š‡.󜀃⒈ð¨¤; [B1, V6]; xn--8tc1437dro0d6q06h.xn--tsh2611ncu71e; ; ; # ð¹«è¸§à³.â’ˆð¨¤
-\u200D≮.󠟪ð¹«-; \u200D≮.󠟪ð¹«-; [C2, P1, V3, V6]; xn--1ug95g.xn----cr99a1w710b; ; xn--gdh.xn----cr99a1w710b; [P1, V3, V6] # ≮.-
-\u200D<\u0338.󠟪ð¹«-; \u200D≮.󠟪ð¹«-; [C2, P1, V3, V6]; xn--1ug95g.xn----cr99a1w710b; ; xn--gdh.xn----cr99a1w710b; [P1, V3, V6] # ≮.-
-\u200D≮.󠟪ð¹«-; ; [C2, P1, V3, V6]; xn--1ug95g.xn----cr99a1w710b; ; xn--gdh.xn----cr99a1w710b; [P1, V3, V6] # ≮.-
-\u200D<\u0338.󠟪ð¹«-; \u200D≮.󠟪ð¹«-; [C2, P1, V3, V6]; xn--1ug95g.xn----cr99a1w710b; ; xn--gdh.xn----cr99a1w710b; [P1, V3, V6] # ≮.-
+\u200D≮.󠟪ð¹«-; \u200D≮.󠟪ð¹«-; [C2, V3, V6]; xn--1ug95g.xn----cr99a1w710b; ; xn--gdh.xn----cr99a1w710b; [V3, V6] # ≮.-
+\u200D<\u0338.󠟪ð¹«-; \u200D≮.󠟪ð¹«-; [C2, V3, V6]; xn--1ug95g.xn----cr99a1w710b; ; xn--gdh.xn----cr99a1w710b; [V3, V6] # ≮.-
+\u200D≮.󠟪ð¹«-; ; [C2, V3, V6]; xn--1ug95g.xn----cr99a1w710b; ; xn--gdh.xn----cr99a1w710b; [V3, V6] # ≮.-
+\u200D<\u0338.󠟪ð¹«-; \u200D≮.󠟪ð¹«-; [C2, V3, V6]; xn--1ug95g.xn----cr99a1w710b; ; xn--gdh.xn----cr99a1w710b; [V3, V6] # ≮.-
xn--gdh.xn----cr99a1w710b; ≮.󠟪ð¹«-; [V3, V6]; xn--gdh.xn----cr99a1w710b; ; ; # ≮.-
xn--1ug95g.xn----cr99a1w710b; \u200D≮.󠟪ð¹«-; [C2, V3, V6]; xn--1ug95g.xn----cr99a1w710b; ; ; # ≮.-
-\u200D\u200D襔。Ⴜ5ê¡®ñµ; \u200D\u200D襔.Ⴜ5ê¡®ñµ; [C2, P1, V6]; xn--1uga7691f.xn--5-r1g7167ipfw8d; ; xn--2u2a.xn--5-r1g7167ipfw8d; [P1, V6] # 襔.Ⴜ5ê¡®
-\u200D\u200D襔。ⴜ5ê¡®ñµ; \u200D\u200D襔.â´œ5ê¡®ñµ; [C2, P1, V6]; xn--1uga7691f.xn--5-uws5848bpf44e; ; xn--2u2a.xn--5-uws5848bpf44e; [P1, V6] # 襔.â´œ5ê¡®
+\u200D\u200D襔。Ⴜ5ê¡®ñµ; \u200D\u200D襔.Ⴜ5ê¡®ñµ; [C2, V6]; xn--1uga7691f.xn--5-r1g7167ipfw8d; ; xn--2u2a.xn--5-r1g7167ipfw8d; [V6] # 襔.Ⴜ5ê¡®
+\u200D\u200D襔。ⴜ5ê¡®ñµ; \u200D\u200D襔.â´œ5ê¡®ñµ; [C2, V6]; xn--1uga7691f.xn--5-uws5848bpf44e; ; xn--2u2a.xn--5-uws5848bpf44e; [V6] # 襔.â´œ5ê¡®
xn--2u2a.xn--5-uws5848bpf44e; 襔.â´œ5ê¡®ñµ; [V6]; xn--2u2a.xn--5-uws5848bpf44e; ; ; # 襔.â´œ5ê¡®
xn--1uga7691f.xn--5-uws5848bpf44e; \u200D\u200D襔.â´œ5ê¡®ñµ; [C2, V6]; xn--1uga7691f.xn--5-uws5848bpf44e; ; ; # 襔.â´œ5ê¡®
xn--2u2a.xn--5-r1g7167ipfw8d; 襔.Ⴜ5ê¡®ñµ; [V6]; xn--2u2a.xn--5-r1g7167ipfw8d; ; ; # 襔.Ⴜ5ê¡®
@@ -6221,61 +6251,61 @@ xn--1uga7691f.xn--5-r1g7167ipfw8d; \u200D\u200D襔.Ⴜ5ê¡®ñµ; [C2, V6]; xn--1u
xn--ix9c26l.xn--q0s; ð«œð‘Œ¼.å©€; ; xn--ix9c26l.xn--q0s; ; ; # ð«œð‘Œ¼.å©€
ð«œð‘Œ¼.å©€; ; ; xn--ix9c26l.xn--q0s; ; ; # ð«œð‘Œ¼.å©€
xn--1ugx063g1if.xn--q0s; ð«œð‘Œ¼\u200D.å©€; [B3, C2]; xn--1ugx063g1if.xn--q0s; ; ; # ð«œð‘Œ¼.å©€
-󠅽︒︒ð¹¯ï½¡â¬³\u1A78; ︒︒ð¹¯.⬳\u1A78; [B1, P1, V6]; xn--y86ca186j.xn--7of309e; ; ; # ︒︒ð¹¯.⬳᩸
+󠅽︒︒ð¹¯ï½¡â¬³\u1A78; ︒︒ð¹¯.⬳\u1A78; [B1, V6]; xn--y86ca186j.xn--7of309e; ; ; # ︒︒ð¹¯.⬳᩸
󠅽。。ð¹¯ã€‚⬳\u1A78; ..ð¹¯.⬳\u1A78; [B1, X4_2]; ..xn--no0d.xn--7of309e; [B1, A4_2]; ; # ..ð¹¯.⬳᩸
..xn--no0d.xn--7of309e; ..ð¹¯.⬳\u1A78; [B1, X4_2]; ..xn--no0d.xn--7of309e; [B1, A4_2]; ; # ..ð¹¯.⬳᩸
xn--y86ca186j.xn--7of309e; ︒︒ð¹¯.⬳\u1A78; [B1, V6]; xn--y86ca186j.xn--7of309e; ; ; # ︒︒ð¹¯.⬳᩸
-ðŸ–ß.ó „-?Ⴏ; 8ß.-?Ⴏ; [P1, V3, V6]; xn--8-qfa.xn---?-gfk; ; 8ss.xn---?-gfk; # 8ß.-?Ⴏ
-8ß.ó „-?Ⴏ; 8ß.-?Ⴏ; [P1, V3, V6]; xn--8-qfa.xn---?-gfk; ; 8ss.xn---?-gfk; # 8ß.-?Ⴏ
-8ß.ó „-?â´; 8ß.-?â´; [P1, V3, V6]; xn--8-qfa.xn---?-261a; ; 8ss.xn---?-261a; # 8ß.-?â´
-8SS.ó „-?Ⴏ; 8ss.-?Ⴏ; [P1, V3, V6]; 8ss.xn---?-gfk; ; ; # 8ss.-?Ⴏ
-8ss.ó „-?â´; 8ss.-?â´; [P1, V3, V6]; 8ss.xn---?-261a; ; ; # 8ss.-?â´
-8ss.ó „-?Ⴏ; 8ss.-?Ⴏ; [P1, V3, V6]; 8ss.xn---?-gfk; ; ; # 8ss.-?Ⴏ
-8ss.xn---?-gfk; 8ss.-?Ⴏ; [P1, V3, V6]; 8ss.xn---?-gfk; ; ; # 8ss.-?Ⴏ
-8ss.xn---?-261a; 8ss.-?â´; [P1, V3, V6]; 8ss.xn---?-261a; ; ; # 8ss.-?â´
-xn--8-qfa.xn---?-261a; 8ß.-?â´; [P1, V3, V6]; xn--8-qfa.xn---?-261a; ; ; # 8ß.-?â´
-xn--8-qfa.xn---?-gfk; 8ß.-?Ⴏ; [P1, V3, V6]; xn--8-qfa.xn---?-gfk; ; ; # 8ß.-?Ⴏ
-ðŸ–ß.ó „-?â´; 8ß.-?â´; [P1, V3, V6]; xn--8-qfa.xn---?-261a; ; 8ss.xn---?-261a; # 8ß.-?â´
-ðŸ–SS.ó „-?Ⴏ; 8ss.-?Ⴏ; [P1, V3, V6]; 8ss.xn---?-gfk; ; ; # 8ss.-?Ⴏ
-ðŸ–ss.ó „-?â´; 8ss.-?â´; [P1, V3, V6]; 8ss.xn---?-261a; ; ; # 8ss.-?â´
-ðŸ–ss.ó „-?Ⴏ; 8ss.-?Ⴏ; [P1, V3, V6]; 8ss.xn---?-gfk; ; ; # 8ss.-?Ⴏ
-8ss.-?Ⴏ; ; [P1, V3, V6]; 8ss.xn---?-gfk; ; ; # 8ss.-?Ⴏ
-8ss.-?â´; ; [P1, V3, V6]; 8ss.xn---?-261a; ; ; # 8ss.-?â´
-8SS.-?Ⴏ; 8ss.-?Ⴏ; [P1, V3, V6]; 8ss.xn---?-gfk; ; ; # 8ss.-?Ⴏ
-xn--8-qfa.-?â´; 8ß.-?â´; [P1, V3, V6]; xn--8-qfa.xn---?-261a; ; ; # 8ß.-?â´
-XN--8-QFA.-?Ⴏ; 8ß.-?Ⴏ; [P1, V3, V6]; xn--8-qfa.xn---?-gfk; ; ; # 8ß.-?Ⴏ
-Xn--8-Qfa.-?Ⴏ; 8ß.-?Ⴏ; [P1, V3, V6]; xn--8-qfa.xn---?-gfk; ; ; # 8ß.-?Ⴏ
-xn--8-qfa.-?Ⴏ; 8ß.-?Ⴏ; [P1, V3, V6]; xn--8-qfa.xn---?-gfk; ; ; # 8ß.-?Ⴏ
-ðŸ–Ss.ó „-?Ⴏ; 8ss.-?Ⴏ; [P1, V3, V6]; 8ss.xn---?-gfk; ; ; # 8ss.-?Ⴏ
-8Ss.ó „-?Ⴏ; 8ss.-?Ⴏ; [P1, V3, V6]; 8ss.xn---?-gfk; ; ; # 8ss.-?Ⴏ
--\u200Dó ‹Ÿ.\u200Cð¹£á‚¥; ; [B1, C1, C2, P1, V3, V6]; xn----ugnv7071n.xn--dnd999e4j4p; ; xn----s721m.xn--dnd9201k; [B1, P1, V3, V6] # -.ð¹£á‚¥
--\u200Dó ‹Ÿ.\u200Cð¹£â´…; ; [B1, C1, C2, P1, V3, V6]; xn----ugnv7071n.xn--0ugz32cgr0p; ; xn----s721m.xn--wkj1423e; [B1, P1, V3, V6] # -.ð¹£â´…
+ðŸ–ß.ó „-?Ⴏ; 8ß.-?Ⴏ; [V3, V6]; xn--8-qfa.xn---?-gfk; ; 8ss.xn---?-gfk; # 8ß.-?Ⴏ
+8ß.ó „-?Ⴏ; 8ß.-?Ⴏ; [V3, V6]; xn--8-qfa.xn---?-gfk; ; 8ss.xn---?-gfk; # 8ß.-?Ⴏ
+8ß.ó „-?â´; 8ß.-?â´; [V3, V6]; xn--8-qfa.xn---?-261a; ; 8ss.xn---?-261a; # 8ß.-?â´
+8SS.ó „-?Ⴏ; 8ss.-?Ⴏ; [V3, V6]; 8ss.xn---?-gfk; ; ; # 8ss.-?Ⴏ
+8ss.ó „-?â´; 8ss.-?â´; [V3, V6]; 8ss.xn---?-261a; ; ; # 8ss.-?â´
+8ss.ó „-?Ⴏ; 8ss.-?Ⴏ; [V3, V6]; 8ss.xn---?-gfk; ; ; # 8ss.-?Ⴏ
+8ss.xn---?-gfk; 8ss.-?Ⴏ; [V3, V6]; 8ss.xn---?-gfk; ; ; # 8ss.-?Ⴏ
+8ss.xn---?-261a; 8ss.-?â´; [V3, V6]; 8ss.xn---?-261a; ; ; # 8ss.-?â´
+xn--8-qfa.xn---?-261a; 8ß.-?â´; [V3, V6]; xn--8-qfa.xn---?-261a; ; ; # 8ß.-?â´
+xn--8-qfa.xn---?-gfk; 8ß.-?Ⴏ; [V3, V6]; xn--8-qfa.xn---?-gfk; ; ; # 8ß.-?Ⴏ
+ðŸ–ß.ó „-?â´; 8ß.-?â´; [V3, V6]; xn--8-qfa.xn---?-261a; ; 8ss.xn---?-261a; # 8ß.-?â´
+ðŸ–SS.ó „-?Ⴏ; 8ss.-?Ⴏ; [V3, V6]; 8ss.xn---?-gfk; ; ; # 8ss.-?Ⴏ
+ðŸ–ss.ó „-?â´; 8ss.-?â´; [V3, V6]; 8ss.xn---?-261a; ; ; # 8ss.-?â´
+ðŸ–ss.ó „-?Ⴏ; 8ss.-?Ⴏ; [V3, V6]; 8ss.xn---?-gfk; ; ; # 8ss.-?Ⴏ
+8ss.-?Ⴏ; ; [V3, V6]; 8ss.xn---?-gfk; ; ; # 8ss.-?Ⴏ
+8ss.-?â´; ; [V3, V6]; 8ss.xn---?-261a; ; ; # 8ss.-?â´
+8SS.-?Ⴏ; 8ss.-?Ⴏ; [V3, V6]; 8ss.xn---?-gfk; ; ; # 8ss.-?Ⴏ
+xn--8-qfa.-?â´; 8ß.-?â´; [V3, V6]; xn--8-qfa.xn---?-261a; ; ; # 8ß.-?â´
+XN--8-QFA.-?Ⴏ; 8ß.-?Ⴏ; [V3, V6]; xn--8-qfa.xn---?-gfk; ; ; # 8ß.-?Ⴏ
+Xn--8-Qfa.-?Ⴏ; 8ß.-?Ⴏ; [V3, V6]; xn--8-qfa.xn---?-gfk; ; ; # 8ß.-?Ⴏ
+xn--8-qfa.-?Ⴏ; 8ß.-?Ⴏ; [V3, V6]; xn--8-qfa.xn---?-gfk; ; ; # 8ß.-?Ⴏ
+ðŸ–Ss.ó „-?Ⴏ; 8ss.-?Ⴏ; [V3, V6]; 8ss.xn---?-gfk; ; ; # 8ss.-?Ⴏ
+8Ss.ó „-?Ⴏ; 8ss.-?Ⴏ; [V3, V6]; 8ss.xn---?-gfk; ; ; # 8ss.-?Ⴏ
+-\u200Dó ‹Ÿ.\u200Cð¹£á‚¥; ; [B1, C1, C2, V3, V6]; xn----ugnv7071n.xn--dnd999e4j4p; ; xn----s721m.xn--dnd9201k; [B1, V3, V6] # -.ð¹£á‚¥
+-\u200Dó ‹Ÿ.\u200Cð¹£â´…; ; [B1, C1, C2, V3, V6]; xn----ugnv7071n.xn--0ugz32cgr0p; ; xn----s721m.xn--wkj1423e; [B1, V3, V6] # -.ð¹£â´…
xn----s721m.xn--wkj1423e; -ó ‹Ÿ.ð¹£â´…; [B1, V3, V6]; xn----s721m.xn--wkj1423e; ; ; # -.ð¹£â´…
xn----ugnv7071n.xn--0ugz32cgr0p; -\u200Dó ‹Ÿ.\u200Cð¹£â´…; [B1, C1, C2, V3, V6]; xn----ugnv7071n.xn--0ugz32cgr0p; ; ; # -.ð¹£â´…
xn----s721m.xn--dnd9201k; -ó ‹Ÿ.ð¹£á‚¥; [B1, V3, V6]; xn----s721m.xn--dnd9201k; ; ; # -.ð¹£á‚¥
xn----ugnv7071n.xn--dnd999e4j4p; -\u200Dó ‹Ÿ.\u200Cð¹£á‚¥; [B1, C1, C2, V3, V6]; xn----ugnv7071n.xn--dnd999e4j4p; ; ; # -.ð¹£á‚¥
-\uA9B9\u200Dí·ð»¶¡ï½¡â‚‚; \uA9B9\u200Dí·ð»¶¡.2; [C2, P1, V5, V6]; xn--1ug1435cfkyaoi04d.2; ; xn--0m9as84e2e21c.2; [P1, V5, V6] # ꦹí·.2
-\uA9B9\u200Dá„ᅳᆲ𻶡。₂; \uA9B9\u200Dí·ð»¶¡.2; [C2, P1, V5, V6]; xn--1ug1435cfkyaoi04d.2; ; xn--0m9as84e2e21c.2; [P1, V5, V6] # ꦹí·.2
-\uA9B9\u200Dí·ð»¶¡ã€‚2; \uA9B9\u200Dí·ð»¶¡.2; [C2, P1, V5, V6]; xn--1ug1435cfkyaoi04d.2; ; xn--0m9as84e2e21c.2; [P1, V5, V6] # ꦹí·.2
-\uA9B9\u200Dá„ᅳᆲ𻶡。2; \uA9B9\u200Dí·ð»¶¡.2; [C2, P1, V5, V6]; xn--1ug1435cfkyaoi04d.2; ; xn--0m9as84e2e21c.2; [P1, V5, V6] # ꦹí·.2
+\uA9B9\u200Dí·ð»¶¡ï½¡â‚‚; \uA9B9\u200Dí·ð»¶¡.2; [C2, V5, V6]; xn--1ug1435cfkyaoi04d.2; ; xn--0m9as84e2e21c.2; [V5, V6] # ꦹí·.2
+\uA9B9\u200Dá„ᅳᆲ𻶡。₂; \uA9B9\u200Dí·ð»¶¡.2; [C2, V5, V6]; xn--1ug1435cfkyaoi04d.2; ; xn--0m9as84e2e21c.2; [V5, V6] # ꦹí·.2
+\uA9B9\u200Dí·ð»¶¡ã€‚2; \uA9B9\u200Dí·ð»¶¡.2; [C2, V5, V6]; xn--1ug1435cfkyaoi04d.2; ; xn--0m9as84e2e21c.2; [V5, V6] # ꦹí·.2
+\uA9B9\u200Dá„ᅳᆲ𻶡。2; \uA9B9\u200Dí·ð»¶¡.2; [C2, V5, V6]; xn--1ug1435cfkyaoi04d.2; ; xn--0m9as84e2e21c.2; [V5, V6] # ꦹí·.2
xn--0m9as84e2e21c.2; \uA9B9í·ð»¶¡.2; [V5, V6]; xn--0m9as84e2e21c.2; ; ; # ꦹí·.2
xn--1ug1435cfkyaoi04d.2; \uA9B9\u200Dí·ð»¶¡.2; [C2, V5, V6]; xn--1ug1435cfkyaoi04d.2; ; ; # ꦹí·.2
-?.🄄𞯘; ; [B1, P1, V6]; ?.xn--3x6hx6f; ; ; # ?.🄄
-?.3,𞯘; ; [B1, P1, V6]; ?.xn--3,-tb22a; ; ; # ?.3,
-?.xn--3,-tb22a; ?.3,𞯘; [B1, P1, V6]; ?.xn--3,-tb22a; ; ; # ?.3,
-?.xn--3x6hx6f; ?.🄄𞯘; [B1, P1, V6]; ?.xn--3x6hx6f; ; ; # ?.🄄
-ð¨–ð©™ã€‚\u06DD󀡶\uA8C5â’ˆ; ð¨–ð©™.\u06DD󀡶\uA8C5â’ˆ; [B1, P1, V5, V6]; xn--rt9cl956a.xn--tlb403mxv4g06s9i; ; ; # ð¨–.ꣅ⒈
-ð¨–ð©™ã€‚\u06DD󀡶\uA8C51.; ð¨–ð©™.\u06DD󀡶\uA8C51.; [B1, P1, V5, V6]; xn--rt9cl956a.xn--1-dxc8545j0693i.; ; ; # ð¨–.ꣅ1.
+?.🄄𞯘; ; [B1, V6]; ?.xn--3x6hx6f; ; ; # ?.🄄
+?.3,𞯘; ; [B1, V6]; ?.xn--3,-tb22a; ; ; # ?.3,
+?.xn--3,-tb22a; ?.3,𞯘; [B1, V6]; ?.xn--3,-tb22a; ; ; # ?.3,
+?.xn--3x6hx6f; ?.🄄𞯘; [B1, V6]; ?.xn--3x6hx6f; ; ; # ?.🄄
+ð¨–ð©™ã€‚\u06DD󀡶\uA8C5â’ˆ; ð¨–ð©™.\u06DD󀡶\uA8C5â’ˆ; [B1, V5, V6]; xn--rt9cl956a.xn--tlb403mxv4g06s9i; ; ; # ð¨–.ꣅ⒈
+ð¨–ð©™ã€‚\u06DD󀡶\uA8C51.; ð¨–ð©™.\u06DD󀡶\uA8C51.; [B1, V5, V6]; xn--rt9cl956a.xn--1-dxc8545j0693i.; ; ; # ð¨–.ꣅ1.
xn--rt9cl956a.xn--1-dxc8545j0693i.; ð¨–ð©™.\u06DD󀡶\uA8C51.; [B1, V5, V6]; xn--rt9cl956a.xn--1-dxc8545j0693i.; ; ; # ð¨–.ꣅ1.
xn--rt9cl956a.xn--tlb403mxv4g06s9i; ð¨–ð©™.\u06DD󀡶\uA8C5â’ˆ; [B1, V5, V6]; xn--rt9cl956a.xn--tlb403mxv4g06s9i; ; ; # ð¨–.ꣅ⒈
-򒈣\u05E1\u06B8。Ⴈ\u200D; 򒈣\u05E1\u06B8.Ⴈ\u200D; [B5, B6, C2, P1, V6]; xn--meb44b57607c.xn--gnd699e; ; xn--meb44b57607c.xn--gnd; [B5, B6, P1, V6] # סڸ.Ⴈ
-򒈣\u05E1\u06B8。ⴈ\u200D; 򒈣\u05E1\u06B8.ⴈ\u200D; [B5, B6, C2, P1, V6]; xn--meb44b57607c.xn--1ug232c; ; xn--meb44b57607c.xn--zkj; [B5, B6, P1, V6] # סڸ.ⴈ
+򒈣\u05E1\u06B8。Ⴈ\u200D; 򒈣\u05E1\u06B8.Ⴈ\u200D; [B5, B6, C2, V6]; xn--meb44b57607c.xn--gnd699e; ; xn--meb44b57607c.xn--gnd; [B5, B6, V6] # סڸ.Ⴈ
+򒈣\u05E1\u06B8。ⴈ\u200D; 򒈣\u05E1\u06B8.ⴈ\u200D; [B5, B6, C2, V6]; xn--meb44b57607c.xn--1ug232c; ; xn--meb44b57607c.xn--zkj; [B5, B6, V6] # סڸ.ⴈ
xn--meb44b57607c.xn--zkj; 򒈣\u05E1\u06B8.ⴈ; [B5, B6, V6]; xn--meb44b57607c.xn--zkj; ; ; # סڸ.ⴈ
xn--meb44b57607c.xn--1ug232c; 򒈣\u05E1\u06B8.ⴈ\u200D; [B5, B6, C2, V6]; xn--meb44b57607c.xn--1ug232c; ; ; # סڸ.ⴈ
xn--meb44b57607c.xn--gnd; 򒈣\u05E1\u06B8.Ⴈ; [B5, B6, V6]; xn--meb44b57607c.xn--gnd; ; ; # סڸ.Ⴈ
xn--meb44b57607c.xn--gnd699e; 򒈣\u05E1\u06B8.Ⴈ\u200D; [B5, B6, C2, V6]; xn--meb44b57607c.xn--gnd699e; ; ; # סڸ.Ⴈ
-󀚶ð¨±\u07E6⒈.ð‘—髯\u200C; 󀚶ð¨±\u07E6â’ˆ.ð‘—髯\u200C; [B1, B5, C1, P1, V5, V6]; xn--etb477lq931a1f58e.xn--0ugx259bocxd; ; xn--etb477lq931a1f58e.xn--uj6at43v; [B1, B5, P1, V5, V6] # ð¨±ß¦â’ˆ.ð‘—髯
-󀚶ð¨±\u07E61..ð‘—髯\u200C; ; [B1, B5, C1, P1, V5, V6, X4_2]; xn--1-idd62296a1fr6e..xn--0ugx259bocxd; [B1, B5, C1, P1, V5, V6, A4_2]; xn--1-idd62296a1fr6e..xn--uj6at43v; [B1, B5, P1, V5, V6, A4_2] # ð¨±ß¦1..ð‘—髯
+󀚶ð¨±\u07E6⒈.ð‘—髯\u200C; 󀚶ð¨±\u07E6â’ˆ.ð‘—髯\u200C; [B1, B5, C1, V5, V6]; xn--etb477lq931a1f58e.xn--0ugx259bocxd; ; xn--etb477lq931a1f58e.xn--uj6at43v; [B1, B5, V5, V6] # ð¨±ß¦â’ˆ.ð‘—髯
+󀚶ð¨±\u07E61..ð‘—髯\u200C; ; [B1, B5, C1, V5, V6, X4_2]; xn--1-idd62296a1fr6e..xn--0ugx259bocxd; [B1, B5, C1, V5, V6, A4_2]; xn--1-idd62296a1fr6e..xn--uj6at43v; [B1, B5, V5, V6, A4_2] # ð¨±ß¦1..ð‘—髯
xn--1-idd62296a1fr6e..xn--uj6at43v; 󀚶ð¨±\u07E61..ð‘—髯; [B1, B5, V5, V6, X4_2]; xn--1-idd62296a1fr6e..xn--uj6at43v; [B1, B5, V5, V6, A4_2]; ; # ð¨±ß¦1..ð‘—髯
xn--1-idd62296a1fr6e..xn--0ugx259bocxd; 󀚶ð¨±\u07E61..ð‘—髯\u200C; [B1, B5, C1, V5, V6, X4_2]; xn--1-idd62296a1fr6e..xn--0ugx259bocxd; [B1, B5, C1, V5, V6, A4_2]; ; # ð¨±ß¦1..ð‘—髯
xn--etb477lq931a1f58e.xn--uj6at43v; 󀚶ð¨±\u07E6â’ˆ.ð‘—髯; [B1, B5, V5, V6]; xn--etb477lq931a1f58e.xn--uj6at43v; ; ; # ð¨±ß¦â’ˆ.ð‘—髯
@@ -6283,62 +6313,62 @@ xn--etb477lq931a1f58e.xn--0ugx259bocxd; 󀚶ð¨±\u07E6â’ˆ.ð‘—髯\u200C; [B1, B5
ð«€ï¼Ž\u0689𑌀; ð«€.\u0689𑌀; ; xn--pw9c.xn--fjb8658k; ; ; # ð«€.ډ𑌀
ð«€.\u0689𑌀; ; ; xn--pw9c.xn--fjb8658k; ; ; # ð«€.ډ𑌀
xn--pw9c.xn--fjb8658k; ð«€.\u0689𑌀; ; xn--pw9c.xn--fjb8658k; ; ; # ð«€.ډ𑌀
-𑋪.ð³; 𑋪.ð³; [B1, B3, B6, V5]; xn--fm1d.xn--5c0d; ; ; # 𑋪.ð³
-𑋪.ð³; ; [B1, B3, B6, V5]; xn--fm1d.xn--5c0d; ; ; # 𑋪.ð³
-𑋪.ð²; 𑋪.ð³; [B1, B3, B6, V5]; xn--fm1d.xn--5c0d; ; ; # 𑋪.ð³
-xn--fm1d.xn--5c0d; 𑋪.ð³; [B1, B3, B6, V5]; xn--fm1d.xn--5c0d; ; ; # 𑋪.ð³
-𑋪.ð²; 𑋪.ð³; [B1, B3, B6, V5]; xn--fm1d.xn--5c0d; ; ; # 𑋪.ð³
-≠膣。\u0F83; ≠膣.\u0F83; [P1, V5, V6]; xn--1chy468a.xn--2ed; ; ; # ≠膣.ྃ
-=\u0338膣。\u0F83; ≠膣.\u0F83; [P1, V5, V6]; xn--1chy468a.xn--2ed; ; ; # ≠膣.ྃ
-xn--1chy468a.xn--2ed; ≠膣.\u0F83; [V5, V6]; xn--1chy468a.xn--2ed; ; ; # ≠膣.ྃ
-񰀎-\u077D。ß; 񰀎-\u077D.ß; [B5, B6, P1, V6]; xn----j6c95618k.xn--zca; ; xn----j6c95618k.ss; # -ݽ.ß
-񰀎-\u077D。ß; 񰀎-\u077D.ß; [B5, B6, P1, V6]; xn----j6c95618k.xn--zca; ; xn----j6c95618k.ss; # -ݽ.ß
-񰀎-\u077D。SS; 񰀎-\u077D.ss; [B5, B6, P1, V6]; xn----j6c95618k.ss; ; ; # -ݽ.ss
-񰀎-\u077D。ss; 񰀎-\u077D.ss; [B5, B6, P1, V6]; xn----j6c95618k.ss; ; ; # -ݽ.ss
-񰀎-\u077D。Ss; 񰀎-\u077D.ss; [B5, B6, P1, V6]; xn----j6c95618k.ss; ; ; # -ݽ.ss
+𑋪.ð³; 𑋪.ð³; [B1, V5]; xn--fm1d.xn--5c0d; ; ; # 𑋪.ð³
+𑋪.ð³; ; [B1, V5]; xn--fm1d.xn--5c0d; ; ; # 𑋪.ð³
+𑋪.ð²; 𑋪.ð³; [B1, V5]; xn--fm1d.xn--5c0d; ; ; # 𑋪.ð³
+xn--fm1d.xn--5c0d; 𑋪.ð³; [B1, V5]; xn--fm1d.xn--5c0d; ; ; # 𑋪.ð³
+𑋪.ð²; 𑋪.ð³; [B1, V5]; xn--fm1d.xn--5c0d; ; ; # 𑋪.ð³
+≠膣。\u0F83; ≠膣.\u0F83; [V5]; xn--1chy468a.xn--2ed; ; ; # ≠膣.ྃ
+=\u0338膣。\u0F83; ≠膣.\u0F83; [V5]; xn--1chy468a.xn--2ed; ; ; # ≠膣.ྃ
+xn--1chy468a.xn--2ed; ≠膣.\u0F83; [V5]; xn--1chy468a.xn--2ed; ; ; # ≠膣.ྃ
+񰀎-\u077D。ß; 񰀎-\u077D.ß; [B5, B6, V6]; xn----j6c95618k.xn--zca; ; xn----j6c95618k.ss; # -ݽ.ß
+񰀎-\u077D。ß; 񰀎-\u077D.ß; [B5, B6, V6]; xn----j6c95618k.xn--zca; ; xn----j6c95618k.ss; # -ݽ.ß
+񰀎-\u077D。SS; 񰀎-\u077D.ss; [B5, B6, V6]; xn----j6c95618k.ss; ; ; # -ݽ.ss
+񰀎-\u077D。ss; 񰀎-\u077D.ss; [B5, B6, V6]; xn----j6c95618k.ss; ; ; # -ݽ.ss
+񰀎-\u077D。Ss; 񰀎-\u077D.ss; [B5, B6, V6]; xn----j6c95618k.ss; ; ; # -ݽ.ss
xn----j6c95618k.ss; 񰀎-\u077D.ss; [B5, B6, V6]; xn----j6c95618k.ss; ; ; # -ݽ.ss
xn----j6c95618k.xn--zca; 񰀎-\u077D.ß; [B5, B6, V6]; xn----j6c95618k.xn--zca; ; ; # -ݽ.ß
-񰀎-\u077D。SS; 񰀎-\u077D.ss; [B5, B6, P1, V6]; xn----j6c95618k.ss; ; ; # -ݽ.ss
-񰀎-\u077D。ss; 񰀎-\u077D.ss; [B5, B6, P1, V6]; xn----j6c95618k.ss; ; ; # -ݽ.ss
-񰀎-\u077D。Ss; 񰀎-\u077D.ss; [B5, B6, P1, V6]; xn----j6c95618k.ss; ; ; # -ݽ.ss
-Ï‚ð¹ á¡šð‘„³ï¼Žâ¾­ð¹½ð½–ð«œ; Ï‚ð¹ á¡šð‘„³.é‘ð¹½ð½–ð«œ; [B5, B6, P1, V6]; xn--3xa856hp23pxmc.xn--es5a888tvjc2u15h; ; xn--4xa656hp23pxmc.xn--es5a888tvjc2u15h; # Ï‚ð¹ á¡šð‘„³.é‘ð¹½ð«œ
-Ï‚ð¹ á¡šð‘„³.é‘ð¹½ð½–ð«œ; ; [B5, B6, P1, V6]; xn--3xa856hp23pxmc.xn--es5a888tvjc2u15h; ; xn--4xa656hp23pxmc.xn--es5a888tvjc2u15h; # Ï‚ð¹ á¡šð‘„³.é‘ð¹½ð«œ
-Σð¹ á¡šð‘„³.é‘ð¹½ð½–ð«œ; σð¹ á¡šð‘„³.é‘ð¹½ð½–ð«œ; [B5, B6, P1, V6]; xn--4xa656hp23pxmc.xn--es5a888tvjc2u15h; ; ; # σð¹ á¡šð‘„³.é‘ð¹½ð«œ
-σð¹ á¡šð‘„³.é‘ð¹½ð½–ð«œ; ; [B5, B6, P1, V6]; xn--4xa656hp23pxmc.xn--es5a888tvjc2u15h; ; ; # σð¹ á¡šð‘„³.é‘ð¹½ð«œ
+񰀎-\u077D。SS; 񰀎-\u077D.ss; [B5, B6, V6]; xn----j6c95618k.ss; ; ; # -ݽ.ss
+񰀎-\u077D。ss; 񰀎-\u077D.ss; [B5, B6, V6]; xn----j6c95618k.ss; ; ; # -ݽ.ss
+񰀎-\u077D。Ss; 񰀎-\u077D.ss; [B5, B6, V6]; xn----j6c95618k.ss; ; ; # -ݽ.ss
+Ï‚ð¹ á¡šð‘„³ï¼Žâ¾­ð¹½ð½–ð«œ; Ï‚ð¹ á¡šð‘„³.é‘ð¹½ð½–ð«œ; [B5, B6, V6]; xn--3xa856hp23pxmc.xn--es5a888tvjc2u15h; ; xn--4xa656hp23pxmc.xn--es5a888tvjc2u15h; # Ï‚ð¹ á¡šð‘„³.é‘ð¹½ð«œ
+Ï‚ð¹ á¡šð‘„³.é‘ð¹½ð½–ð«œ; ; [B5, B6, V6]; xn--3xa856hp23pxmc.xn--es5a888tvjc2u15h; ; xn--4xa656hp23pxmc.xn--es5a888tvjc2u15h; # Ï‚ð¹ á¡šð‘„³.é‘ð¹½ð«œ
+Σð¹ á¡šð‘„³.é‘ð¹½ð½–ð«œ; σð¹ á¡šð‘„³.é‘ð¹½ð½–ð«œ; [B5, B6, V6]; xn--4xa656hp23pxmc.xn--es5a888tvjc2u15h; ; ; # σð¹ á¡šð‘„³.é‘ð¹½ð«œ
+σð¹ á¡šð‘„³.é‘ð¹½ð½–ð«œ; ; [B5, B6, V6]; xn--4xa656hp23pxmc.xn--es5a888tvjc2u15h; ; ; # σð¹ á¡šð‘„³.é‘ð¹½ð«œ
xn--4xa656hp23pxmc.xn--es5a888tvjc2u15h; σð¹ á¡šð‘„³.é‘ð¹½ð½–ð«œ; [B5, B6, V6]; xn--4xa656hp23pxmc.xn--es5a888tvjc2u15h; ; ; # σð¹ á¡šð‘„³.é‘ð¹½ð«œ
xn--3xa856hp23pxmc.xn--es5a888tvjc2u15h; Ï‚ð¹ á¡šð‘„³.é‘ð¹½ð½–ð«œ; [B5, B6, V6]; xn--3xa856hp23pxmc.xn--es5a888tvjc2u15h; ; ; # Ï‚ð¹ á¡šð‘„³.é‘ð¹½ð«œ
-Σð¹ á¡šð‘„³ï¼Žâ¾­ð¹½ð½–ð«œ; σð¹ á¡šð‘„³.é‘ð¹½ð½–ð«œ; [B5, B6, P1, V6]; xn--4xa656hp23pxmc.xn--es5a888tvjc2u15h; ; ; # σð¹ á¡šð‘„³.é‘ð¹½ð«œ
-σð¹ á¡šð‘„³ï¼Žâ¾­ð¹½ð½–ð«œ; σð¹ á¡šð‘„³.é‘ð¹½ð½–ð«œ; [B5, B6, P1, V6]; xn--4xa656hp23pxmc.xn--es5a888tvjc2u15h; ; ; # σð¹ á¡šð‘„³.é‘ð¹½ð«œ
+Σð¹ á¡šð‘„³ï¼Žâ¾­ð¹½ð½–ð«œ; σð¹ á¡šð‘„³.é‘ð¹½ð½–ð«œ; [B5, B6, V6]; xn--4xa656hp23pxmc.xn--es5a888tvjc2u15h; ; ; # σð¹ á¡šð‘„³.é‘ð¹½ð«œ
+σð¹ á¡šð‘„³ï¼Žâ¾­ð¹½ð½–ð«œ; σð¹ á¡šð‘„³.é‘ð¹½ð½–ð«œ; [B5, B6, V6]; xn--4xa656hp23pxmc.xn--es5a888tvjc2u15h; ; ; # σð¹ á¡šð‘„³.é‘ð¹½ð«œ
ð‹·ã€‚\u200D; ð‹·.\u200D; [C2]; xn--r97c.xn--1ug; ; xn--r97c.; [] # ð‹·.
xn--r97c.; ð‹·.; ; xn--r97c.; ; ; # ð‹·.
ð‹·.; ; ; xn--r97c.; ; ; # ð‹·.
xn--r97c.xn--1ug; ð‹·.\u200D; [C2]; xn--r97c.xn--1ug; ; ; # ð‹·.
𑰳𑈯。⥪; 𑰳𑈯.⥪; [V5]; xn--2g1d14o.xn--jti; ; ; # 𑰳𑈯.⥪
xn--2g1d14o.xn--jti; 𑰳𑈯.⥪; [V5]; xn--2g1d14o.xn--jti; ; ; # 𑰳𑈯.⥪
-𑆀ä´ñ¤§£ï¼Žá‚µðŸœ\u200C\u0348; 𑆀ä´ñ¤§£.Ⴕ4\u200C\u0348; [C1, P1, V5, V6]; xn--1mnx647cg3x1b.xn--4-zfb324h32o; ; xn--1mnx647cg3x1b.xn--4-zfb324h; [P1, V5, V6] # 𑆀ä´.Ⴕ4͈
-𑆀ä´ñ¤§£.Ⴕ4\u200C\u0348; ; [C1, P1, V5, V6]; xn--1mnx647cg3x1b.xn--4-zfb324h32o; ; xn--1mnx647cg3x1b.xn--4-zfb324h; [P1, V5, V6] # 𑆀ä´.Ⴕ4͈
-𑆀ä´ñ¤§£.â´•4\u200C\u0348; ; [C1, P1, V5, V6]; xn--1mnx647cg3x1b.xn--4-zfb502tlsl; ; xn--1mnx647cg3x1b.xn--4-zfb5123a; [P1, V5, V6] # 𑆀ä´.â´•4͈
+𑆀ä´ñ¤§£ï¼Žá‚µðŸœ\u200C\u0348; 𑆀ä´ñ¤§£.Ⴕ4\u200C\u0348; [C1, V5, V6]; xn--1mnx647cg3x1b.xn--4-zfb324h32o; ; xn--1mnx647cg3x1b.xn--4-zfb324h; [V5, V6] # 𑆀ä´.Ⴕ4͈
+𑆀ä´ñ¤§£.Ⴕ4\u200C\u0348; ; [C1, V5, V6]; xn--1mnx647cg3x1b.xn--4-zfb324h32o; ; xn--1mnx647cg3x1b.xn--4-zfb324h; [V5, V6] # 𑆀ä´.Ⴕ4͈
+𑆀ä´ñ¤§£.â´•4\u200C\u0348; ; [C1, V5, V6]; xn--1mnx647cg3x1b.xn--4-zfb502tlsl; ; xn--1mnx647cg3x1b.xn--4-zfb5123a; [V5, V6] # 𑆀ä´.â´•4͈
xn--1mnx647cg3x1b.xn--4-zfb5123a; 𑆀ä´ñ¤§£.â´•4\u0348; [V5, V6]; xn--1mnx647cg3x1b.xn--4-zfb5123a; ; ; # 𑆀ä´.â´•4͈
xn--1mnx647cg3x1b.xn--4-zfb502tlsl; 𑆀ä´ñ¤§£.â´•4\u200C\u0348; [C1, V5, V6]; xn--1mnx647cg3x1b.xn--4-zfb502tlsl; ; ; # 𑆀ä´.â´•4͈
xn--1mnx647cg3x1b.xn--4-zfb324h; 𑆀ä´ñ¤§£.Ⴕ4\u0348; [V5, V6]; xn--1mnx647cg3x1b.xn--4-zfb324h; ; ; # 𑆀ä´.Ⴕ4͈
xn--1mnx647cg3x1b.xn--4-zfb324h32o; 𑆀ä´ñ¤§£.Ⴕ4\u200C\u0348; [C1, V5, V6]; xn--1mnx647cg3x1b.xn--4-zfb324h32o; ; ; # 𑆀ä´.Ⴕ4͈
-𑆀ä´ñ¤§£ï¼Žâ´•ðŸœ\u200C\u0348; 𑆀ä´ñ¤§£.â´•4\u200C\u0348; [C1, P1, V5, V6]; xn--1mnx647cg3x1b.xn--4-zfb502tlsl; ; xn--1mnx647cg3x1b.xn--4-zfb5123a; [P1, V5, V6] # 𑆀ä´.â´•4͈
-憡?\u200Cá‚´.ð‹®\u200D≠; ; [C1, C2, P1, V6]; xn--?-c1g798iy27d.xn--1ug73gl146a; ; xn--?-c1g3623d.xn--1chz659f; [P1, V6] # 憡?á‚´.ð‹®â‰ 
-憡?\u200Cá‚´.ð‹®\u200D=\u0338; 憡?\u200Cá‚´.ð‹®\u200D≠; [C1, C2, P1, V6]; xn--?-c1g798iy27d.xn--1ug73gl146a; ; xn--?-c1g3623d.xn--1chz659f; [P1, V6] # 憡?á‚´.ð‹®â‰ 
-憡?\u200Câ´”.ð‹®\u200D=\u0338; 憡?\u200Câ´”.ð‹®\u200D≠; [C1, C2, P1, V6]; xn--?-sgn310doh5c.xn--1ug73gl146a; ; xn--?-fwsr13r.xn--1chz659f; [P1, V6] # 憡?â´”.ð‹®â‰ 
-憡?\u200Câ´”.ð‹®\u200D≠; ; [C1, C2, P1, V6]; xn--?-sgn310doh5c.xn--1ug73gl146a; ; xn--?-fwsr13r.xn--1chz659f; [P1, V6] # 憡?â´”.ð‹®â‰ 
-xn--?-fwsr13r.xn--1chz659f; 憡?â´”.ð‹®â‰ ; [P1, V6]; xn--?-fwsr13r.xn--1chz659f; ; ; # 憡?â´”.ð‹®â‰ 
-xn--?-sgn310doh5c.xn--1ug73gl146a; 憡?\u200Câ´”.ð‹®\u200D≠; [C1, C2, P1, V6]; xn--?-sgn310doh5c.xn--1ug73gl146a; ; ; # 憡?â´”.ð‹®â‰ 
-xn--?-c1g3623d.xn--1chz659f; 憡?á‚´.ð‹®â‰ ; [P1, V6]; xn--?-c1g3623d.xn--1chz659f; ; ; # 憡?á‚´.ð‹®â‰ 
-xn--?-c1g798iy27d.xn--1ug73gl146a; 憡?\u200Cá‚´.ð‹®\u200D≠; [C1, C2, P1, V6]; xn--?-c1g798iy27d.xn--1ug73gl146a; ; ; # 憡?á‚´.ð‹®â‰ 
-憡?â´”.xn--1chz659f; 憡?â´”.ð‹®â‰ ; [P1, V6]; xn--?-fwsr13r.xn--1chz659f; ; ; # 憡?â´”.ð‹®â‰ 
-憡?á‚´.XN--1CHZ659F; 憡?á‚´.ð‹®â‰ ; [P1, V6]; xn--?-c1g3623d.xn--1chz659f; ; ; # 憡?á‚´.ð‹®â‰ 
-憡?á‚´.xn--1chz659f; 憡?á‚´.ð‹®â‰ ; [P1, V6]; xn--?-c1g3623d.xn--1chz659f; ; ; # 憡?á‚´.ð‹®â‰ 
-憡?\u200Câ´”.xn--1ug73gl146a; 憡?\u200Câ´”.ð‹®\u200D≠; [C1, C2, P1, V6]; xn--?-sgn310doh5c.xn--1ug73gl146a; ; xn--?-fwsr13r.xn--1ug73gl146a; [C2, P1, V6] # 憡?â´”.ð‹®â‰ 
-憡?\u200Cá‚´.XN--1UG73GL146A; 憡?\u200Cá‚´.ð‹®\u200D≠; [C1, C2, P1, V6]; xn--?-c1g798iy27d.xn--1ug73gl146a; ; xn--?-c1g3623d.xn--1ug73gl146a; [C2, P1, V6] # 憡?á‚´.ð‹®â‰ 
-憡?\u200Cá‚´.xn--1ug73gl146a; 憡?\u200Cá‚´.ð‹®\u200D≠; [C1, C2, P1, V6]; xn--?-c1g798iy27d.xn--1ug73gl146a; ; xn--?-c1g3623d.xn--1ug73gl146a; [C2, P1, V6] # 憡?á‚´.ð‹®â‰ 
-xn--?-c1g3623d.xn--1ug73gl146a; 憡?á‚´.ð‹®\u200D≠; [C2, P1, V6]; xn--?-c1g3623d.xn--1ug73gl146a; ; ; # 憡?á‚´.ð‹®â‰ 
-xn--?-fwsr13r.xn--1ug73gl146a; 憡?â´”.ð‹®\u200D≠; [C2, P1, V6]; xn--?-fwsr13r.xn--1ug73gl146a; ; ; # 憡?â´”.ð‹®â‰ 
-憡?á‚´.xn--1ug73gl146a; 憡?á‚´.ð‹®\u200D≠; [C2, P1, V6]; xn--?-c1g3623d.xn--1ug73gl146a; ; ; # 憡?á‚´.ð‹®â‰ 
-憡?â´”.xn--1ug73gl146a; 憡?â´”.ð‹®\u200D≠; [C2, P1, V6]; xn--?-fwsr13r.xn--1ug73gl146a; ; ; # 憡?â´”.ð‹®â‰ 
-憡?á‚´.XN--1UG73GL146A; 憡?á‚´.ð‹®\u200D≠; [C2, P1, V6]; xn--?-c1g3623d.xn--1ug73gl146a; ; ; # 憡?á‚´.ð‹®â‰ 
+𑆀ä´ñ¤§£ï¼Žâ´•ðŸœ\u200C\u0348; 𑆀ä´ñ¤§£.â´•4\u200C\u0348; [C1, V5, V6]; xn--1mnx647cg3x1b.xn--4-zfb502tlsl; ; xn--1mnx647cg3x1b.xn--4-zfb5123a; [V5, V6] # 𑆀ä´.â´•4͈
+憡?\u200Cá‚´.ð‹®\u200D≠; ; [C1, C2, V6]; xn--?-c1g798iy27d.xn--1ug73gl146a; ; xn--?-c1g3623d.xn--1chz659f; [V6] # 憡?á‚´.ð‹®â‰ 
+憡?\u200Cá‚´.ð‹®\u200D=\u0338; 憡?\u200Cá‚´.ð‹®\u200D≠; [C1, C2, V6]; xn--?-c1g798iy27d.xn--1ug73gl146a; ; xn--?-c1g3623d.xn--1chz659f; [V6] # 憡?á‚´.ð‹®â‰ 
+憡?\u200Câ´”.ð‹®\u200D=\u0338; 憡?\u200Câ´”.ð‹®\u200D≠; [C1, C2, V6]; xn--?-sgn310doh5c.xn--1ug73gl146a; ; xn--?-fwsr13r.xn--1chz659f; [V6] # 憡?â´”.ð‹®â‰ 
+憡?\u200Câ´”.ð‹®\u200D≠; ; [C1, C2, V6]; xn--?-sgn310doh5c.xn--1ug73gl146a; ; xn--?-fwsr13r.xn--1chz659f; [V6] # 憡?â´”.ð‹®â‰ 
+xn--?-fwsr13r.xn--1chz659f; 憡?â´”.ð‹®â‰ ; [V6]; xn--?-fwsr13r.xn--1chz659f; ; ; # 憡?â´”.ð‹®â‰ 
+xn--?-sgn310doh5c.xn--1ug73gl146a; 憡?\u200Câ´”.ð‹®\u200D≠; [C1, C2, V6]; xn--?-sgn310doh5c.xn--1ug73gl146a; ; ; # 憡?â´”.ð‹®â‰ 
+xn--?-c1g3623d.xn--1chz659f; 憡?á‚´.ð‹®â‰ ; [V6]; xn--?-c1g3623d.xn--1chz659f; ; ; # 憡?á‚´.ð‹®â‰ 
+xn--?-c1g798iy27d.xn--1ug73gl146a; 憡?\u200Cá‚´.ð‹®\u200D≠; [C1, C2, V6]; xn--?-c1g798iy27d.xn--1ug73gl146a; ; ; # 憡?á‚´.ð‹®â‰ 
+憡?â´”.xn--1chz659f; 憡?â´”.ð‹®â‰ ; [V6]; xn--?-fwsr13r.xn--1chz659f; ; ; # 憡?â´”.ð‹®â‰ 
+憡?á‚´.XN--1CHZ659F; 憡?á‚´.ð‹®â‰ ; [V6]; xn--?-c1g3623d.xn--1chz659f; ; ; # 憡?á‚´.ð‹®â‰ 
+憡?á‚´.xn--1chz659f; 憡?á‚´.ð‹®â‰ ; [V6]; xn--?-c1g3623d.xn--1chz659f; ; ; # 憡?á‚´.ð‹®â‰ 
+憡?\u200Câ´”.xn--1ug73gl146a; 憡?\u200Câ´”.ð‹®\u200D≠; [C1, C2, V6]; xn--?-sgn310doh5c.xn--1ug73gl146a; ; xn--?-fwsr13r.xn--1ug73gl146a; [C2, V6] # 憡?â´”.ð‹®â‰ 
+憡?\u200Cá‚´.XN--1UG73GL146A; 憡?\u200Cá‚´.ð‹®\u200D≠; [C1, C2, V6]; xn--?-c1g798iy27d.xn--1ug73gl146a; ; xn--?-c1g3623d.xn--1ug73gl146a; [C2, V6] # 憡?á‚´.ð‹®â‰ 
+憡?\u200Cá‚´.xn--1ug73gl146a; 憡?\u200Cá‚´.ð‹®\u200D≠; [C1, C2, V6]; xn--?-c1g798iy27d.xn--1ug73gl146a; ; xn--?-c1g3623d.xn--1ug73gl146a; [C2, V6] # 憡?á‚´.ð‹®â‰ 
+xn--?-c1g3623d.xn--1ug73gl146a; 憡?á‚´.ð‹®\u200D≠; [C2, V6]; xn--?-c1g3623d.xn--1ug73gl146a; ; ; # 憡?á‚´.ð‹®â‰ 
+xn--?-fwsr13r.xn--1ug73gl146a; 憡?â´”.ð‹®\u200D≠; [C2, V6]; xn--?-fwsr13r.xn--1ug73gl146a; ; ; # 憡?â´”.ð‹®â‰ 
+憡?á‚´.xn--1ug73gl146a; 憡?á‚´.ð‹®\u200D≠; [C2, V6]; xn--?-c1g3623d.xn--1ug73gl146a; ; ; # 憡?á‚´.ð‹®â‰ 
+憡?â´”.xn--1ug73gl146a; 憡?â´”.ð‹®\u200D≠; [C2, V6]; xn--?-fwsr13r.xn--1ug73gl146a; ; ; # 憡?â´”.ð‹®â‰ 
+憡?á‚´.XN--1UG73GL146A; 憡?á‚´.ð‹®\u200D≠; [C2, V6]; xn--?-c1g3623d.xn--1ug73gl146a; ; ; # 憡?á‚´.ð‹®â‰ 
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/LineBreakTest.txt b/Build/source/libs/icu/icu-src/source/test/testdata/LineBreakTest.txt
index 3122a2e21ec..614bf33fa82 100644
--- a/Build/source/libs/icu/icu-src/source/test/testdata/LineBreakTest.txt
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/LineBreakTest.txt
@@ -1,6 +1,6 @@
-# LineBreakTest-15.0.0.txt
-# Date: 2022-02-26, 00:38:39 GMT
-# © 2022 Unicode®, Inc.
+# LineBreakTest-15.1.0.txt
+# Date: 2023-08-08, 11:38:16 GMT
+# © 2023 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# For terms of use, see https://www.unicode.org/terms_of_use.html
#
@@ -26,10 +26,222 @@
#
# These samples may be extended or changed in the future.
#
+× 1B05 ÷ 1B05 ÷ # × [0.3] BALINESE LETTER AKARA (AK) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 1B05 × 0020 ÷ 1B05 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 1B05 × 0308 ÷ 1B05 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 1B05 × 0308 × 0020 ÷ 1B05 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 1B05 ÷ 0023 ÷ # × [0.3] BALINESE LETTER AKARA (AK) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
+× 1B05 × 0020 ÷ 0023 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 1B05 × 0308 ÷ 0023 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
+× 1B05 × 0308 × 0020 ÷ 0023 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 1B05 ÷ 11003 ÷ # × [0.3] BALINESE LETTER AKARA (AK) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 1B05 × 0020 ÷ 11003 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 1B05 × 0308 ÷ 11003 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 1B05 × 0308 × 0020 ÷ 11003 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 1B05 ÷ 1BC0 ÷ # × [0.3] BALINESE LETTER AKARA (AK) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 1B05 × 0020 ÷ 1BC0 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 1B05 × 0308 ÷ 1BC0 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 1B05 × 0308 × 0020 ÷ 1BC0 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 1B05 ÷ 2014 ÷ # × [0.3] BALINESE LETTER AKARA (AK) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 1B05 × 0020 ÷ 2014 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 1B05 × 0308 ÷ 2014 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 1B05 × 0308 × 0020 ÷ 2014 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 1B05 × 0009 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 1B05 × 0020 ÷ 0009 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 1B05 × 0308 × 0009 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 1B05 × 0308 × 0020 ÷ 0009 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 1B05 ÷ 00B4 ÷ # × [0.3] BALINESE LETTER AKARA (AK) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 1B05 × 0020 ÷ 00B4 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 1B05 × 0308 ÷ 00B4 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 1B05 × 0308 × 0020 ÷ 00B4 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 1B05 × 000B ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 1B05 × 0020 × 000B ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 1B05 × 0308 × 000B ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 1B05 × 0308 × 0020 × 000B ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 1B05 ÷ FFFC ÷ # × [0.3] BALINESE LETTER AKARA (AK) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 1B05 × 0020 ÷ FFFC ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 1B05 × 0308 ÷ FFFC ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 1B05 × 0308 × 0020 ÷ FFFC ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 1B05 × 007D ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 1B05 × 0020 × 007D ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 1B05 × 0308 × 007D ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 1B05 × 0308 × 0020 × 007D ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 1B05 × 000D ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 1B05 × 0020 × 000D ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 1B05 × 0308 × 000D ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 1B05 × 0308 × 0020 × 000D ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 1B05 × 0021 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 1B05 × 0020 × 0021 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 1B05 × 0308 × 0021 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 1B05 × 0308 × 0020 × 0021 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 1B05 × 00A0 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [12.1] NO-BREAK SPACE (GL) ÷ [0.3]
+× 1B05 × 0020 ÷ 00A0 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 1B05 × 0308 × 00A0 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
+× 1B05 × 0308 × 0020 ÷ 00A0 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 1B05 ÷ AC00 ÷ # × [0.3] BALINESE LETTER AKARA (AK) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 1B05 × 0020 ÷ AC00 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 1B05 × 0308 ÷ AC00 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 1B05 × 0308 × 0020 ÷ AC00 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 1B05 ÷ AC01 ÷ # × [0.3] BALINESE LETTER AKARA (AK) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 1B05 × 0020 ÷ AC01 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 1B05 × 0308 ÷ AC01 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 1B05 × 0308 × 0020 ÷ AC01 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 1B05 ÷ 05D0 ÷ # × [0.3] BALINESE LETTER AKARA (AK) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 1B05 × 0020 ÷ 05D0 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 1B05 × 0308 ÷ 05D0 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 1B05 × 0308 × 0020 ÷ 05D0 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 1B05 × 002D ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 1B05 × 0020 ÷ 002D ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 1B05 × 0308 × 002D ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 1B05 × 0308 × 0020 ÷ 002D ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 1B05 ÷ 1B50 ÷ # × [0.3] BALINESE LETTER AKARA (AK) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 1B05 × 0020 ÷ 1B50 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 1B05 × 0308 ÷ 1B50 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 1B05 × 0308 × 0020 ÷ 1B50 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 1B05 × 2024 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 1B05 × 0020 ÷ 2024 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 1B05 × 0308 × 2024 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 1B05 × 0308 × 0020 ÷ 2024 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 1B05 × 002C ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [13.02] COMMA (IS) ÷ [0.3]
+× 1B05 × 0020 × 002C ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 1B05 × 0308 × 002C ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] COMMA (IS) ÷ [0.3]
+× 1B05 × 0308 × 0020 × 002C ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 1B05 ÷ 1100 ÷ # × [0.3] BALINESE LETTER AKARA (AK) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 1B05 × 0020 ÷ 1100 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 1B05 × 0308 ÷ 1100 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 1B05 × 0308 × 0020 ÷ 1100 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 1B05 ÷ 11A8 ÷ # × [0.3] BALINESE LETTER AKARA (AK) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 1B05 × 0020 ÷ 11A8 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 1B05 × 0308 ÷ 11A8 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 1B05 × 0308 × 0020 ÷ 11A8 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 1B05 ÷ 1160 ÷ # × [0.3] BALINESE LETTER AKARA (AK) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 1B05 × 0020 ÷ 1160 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 1B05 × 0308 ÷ 1160 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 1B05 × 0308 × 0020 ÷ 1160 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 1B05 × 000A ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 1B05 × 0020 × 000A ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 1B05 × 0308 × 000A ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 1B05 × 0308 × 0020 × 000A ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 1B05 × 0085 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 1B05 × 0020 × 0085 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 1B05 × 0308 × 0085 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 1B05 × 0308 × 0020 × 0085 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 1B05 × 17D6 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 1B05 × 0020 ÷ 17D6 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 1B05 × 0308 × 17D6 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 1B05 × 0308 × 0020 ÷ 17D6 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 1B05 ÷ 0030 ÷ # × [0.3] BALINESE LETTER AKARA (AK) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
+× 1B05 × 0020 ÷ 0030 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 1B05 × 0308 ÷ 0030 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
+× 1B05 × 0308 × 0020 ÷ 0030 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 1B05 ÷ 2329 ÷ # × [0.3] BALINESE LETTER AKARA (AK) ÷ [999.0] LEFT-POINTING ANGLE BRACKET (OP) ÷ [0.3]
+× 1B05 × 0020 ÷ 2329 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING ANGLE BRACKET (OP) ÷ [0.3]
+× 1B05 × 0308 ÷ 2329 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] LEFT-POINTING ANGLE BRACKET (OP) ÷ [0.3]
+× 1B05 × 0308 × 0020 ÷ 2329 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING ANGLE BRACKET (OP) ÷ [0.3]
+× 1B05 ÷ 0025 ÷ # × [0.3] BALINESE LETTER AKARA (AK) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
+× 1B05 × 0020 ÷ 0025 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
+× 1B05 × 0308 ÷ 0025 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
+× 1B05 × 0308 × 0020 ÷ 0025 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
+× 1B05 ÷ 0024 ÷ # × [0.3] BALINESE LETTER AKARA (AK) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 1B05 × 0020 ÷ 0024 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 1B05 × 0308 ÷ 0024 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 1B05 × 0308 × 0020 ÷ 0024 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 1B05 × 0022 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 1B05 × 0020 ÷ 0022 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 1B05 × 0308 × 0022 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 1B05 × 0308 × 0020 ÷ 0022 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 1B05 × 0020 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) ÷ [0.3]
+× 1B05 × 0020 × 0020 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 1B05 × 0308 × 0020 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 1B05 × 0308 × 0020 × 0020 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 1B05 × 002F ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 1B05 × 0020 × 002F ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 1B05 × 0308 × 002F ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
+× 1B05 × 0308 × 0020 × 002F ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 1B05 × 1BF2 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [28.12] BATAK PANGOLAT (VF) ÷ [0.3]
+× 1B05 × 0020 ÷ 1BF2 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 1B05 × 0308 × 1BF2 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [28.12] BATAK PANGOLAT (VF) ÷ [0.3]
+× 1B05 × 0308 × 0020 ÷ 1BF2 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 1B05 × 1B44 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [28.12] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 1B05 × 0020 ÷ 1B44 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 1B05 × 0308 × 1B44 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [28.12] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 1B05 × 0308 × 0020 ÷ 1B44 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 1B05 × 2060 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 1B05 × 0020 × 2060 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 1B05 × 0308 × 2060 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 1B05 × 0308 × 0020 × 2060 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 1B05 × 200B ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 1B05 × 0020 × 200B ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 1B05 × 0308 × 200B ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 1B05 × 0308 × 0020 × 200B ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 1B05 ÷ 1F1E6 ÷ # × [0.3] BALINESE LETTER AKARA (AK) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 1B05 × 0020 ÷ 1F1E6 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 1B05 × 0308 ÷ 1F1E6 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 1B05 × 0308 × 0020 ÷ 1F1E6 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 1B05 ÷ 261D ÷ # × [0.3] BALINESE LETTER AKARA (AK) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 1B05 × 0020 ÷ 261D ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 1B05 × 0308 ÷ 261D ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 1B05 × 0308 × 0020 ÷ 261D ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 1B05 ÷ 1F3FB ÷ # × [0.3] BALINESE LETTER AKARA (AK) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 1B05 × 0020 ÷ 1F3FB ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 1B05 × 0308 ÷ 1F3FB ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 1B05 × 0308 × 0020 ÷ 1F3FB ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 1B05 × 00AB ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 1B05 × 0020 ÷ 00AB ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 1B05 × 0308 × 00AB ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 1B05 × 0308 × 0020 ÷ 00AB ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 1B05 × 00BB ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 1B05 × 0020 × 00BB ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 1B05 × 0308 × 00BB ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 1B05 × 0308 × 0020 × 00BB ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 1B05 × 0029 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
+× 1B05 × 0020 × 0029 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
+× 1B05 × 0308 × 0029 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
+× 1B05 × 0308 × 0020 × 0029 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
+× 1B05 ÷ 0028 ÷ # × [0.3] BALINESE LETTER AKARA (AK) ÷ [999.0] LEFT PARENTHESIS (OP_OP30) ÷ [0.3]
+× 1B05 × 0020 ÷ 0028 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP_OP30) ÷ [0.3]
+× 1B05 × 0308 ÷ 0028 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] LEFT PARENTHESIS (OP_OP30) ÷ [0.3]
+× 1B05 × 0308 × 0020 ÷ 0028 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP_OP30) ÷ [0.3]
+× 1B05 × 0001 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 1B05 × 0020 ÷ 0001 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 1B05 × 0308 × 0001 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 1B05 × 0308 × 0020 ÷ 0001 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 1B05 × 200D ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 1B05 × 0020 ÷ 200D ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 1B05 × 0308 × 200D ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 1B05 × 0308 × 0020 ÷ 200D ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 1B05 ÷ 00A7 ÷ # × [0.3] BALINESE LETTER AKARA (AK) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 1B05 × 0020 ÷ 00A7 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 1B05 × 0308 ÷ 00A7 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 1B05 × 0308 × 0020 ÷ 00A7 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 1B05 ÷ 50005 ÷ # × [0.3] BALINESE LETTER AKARA (AK) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 1B05 × 0020 ÷ 50005 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 1B05 × 0308 ÷ 50005 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 1B05 × 0308 × 0020 ÷ 50005 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 1B05 ÷ 0E01 ÷ # × [0.3] BALINESE LETTER AKARA (AK) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 1B05 × 0020 ÷ 0E01 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 1B05 × 0308 ÷ 0E01 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 1B05 × 0308 × 0020 ÷ 0E01 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 1B05 × 3041 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 1B05 × 0020 ÷ 3041 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 1B05 × 0308 × 3041 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 1B05 × 0308 × 0020 ÷ 3041 ÷ # × [0.3] BALINESE LETTER AKARA (AK) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 0023 ÷ 1B05 ÷ # × [0.3] NUMBER SIGN (AL) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 0023 × 0020 ÷ 1B05 ÷ # × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 0023 × 0308 ÷ 1B05 ÷ # × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 0023 × 0308 × 0020 ÷ 1B05 ÷ # × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
× 0023 × 0023 ÷ # × [0.3] NUMBER SIGN (AL) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
× 0023 × 0020 ÷ 0023 ÷ # × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
× 0023 × 0308 × 0023 ÷ # × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
× 0023 × 0308 × 0020 ÷ 0023 ÷ # × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 0023 ÷ 11003 ÷ # × [0.3] NUMBER SIGN (AL) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0023 × 0020 ÷ 11003 ÷ # × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0023 × 0308 ÷ 11003 ÷ # × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0023 × 0308 × 0020 ÷ 11003 ÷ # × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0023 ÷ 1BC0 ÷ # × [0.3] NUMBER SIGN (AL) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 0023 × 0020 ÷ 1BC0 ÷ # × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 0023 × 0308 ÷ 1BC0 ÷ # × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 0023 × 0308 × 0020 ÷ 1BC0 ÷ # × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
× 0023 ÷ 2014 ÷ # × [0.3] NUMBER SIGN (AL) ÷ [999.0] EM DASH (B2) ÷ [0.3]
× 0023 × 0020 ÷ 2014 ÷ # × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
× 0023 × 0308 ÷ 2014 ÷ # × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
@@ -82,10 +294,10 @@
× 0023 × 0020 ÷ 002D ÷ # × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
× 0023 × 0308 × 002D ÷ # × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
× 0023 × 0308 × 0020 ÷ 002D ÷ # × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 0023 ÷ 231A ÷ # × [0.3] NUMBER SIGN (AL) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 0023 × 0020 ÷ 231A ÷ # × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 0023 × 0308 ÷ 231A ÷ # × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 0023 × 0308 × 0020 ÷ 231A ÷ # × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 0023 ÷ 1B50 ÷ # × [0.3] NUMBER SIGN (AL) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 0023 × 0020 ÷ 1B50 ÷ # × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 0023 × 0308 ÷ 1B50 ÷ # × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 0023 × 0308 × 0020 ÷ 1B50 ÷ # × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
× 0023 × 2024 ÷ # × [0.3] NUMBER SIGN (AL) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
× 0023 × 0020 ÷ 2024 ÷ # × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
× 0023 × 0308 × 2024 ÷ # × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
@@ -146,6 +358,14 @@
× 0023 × 0020 × 002F ÷ # × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
× 0023 × 0308 × 002F ÷ # × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
× 0023 × 0308 × 0020 × 002F ÷ # × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 0023 ÷ 1BF2 ÷ # × [0.3] NUMBER SIGN (AL) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0023 × 0020 ÷ 1BF2 ÷ # × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0023 × 0308 ÷ 1BF2 ÷ # × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0023 × 0308 × 0020 ÷ 1BF2 ÷ # × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0023 ÷ 1B44 ÷ # × [0.3] NUMBER SIGN (AL) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 0023 × 0020 ÷ 1B44 ÷ # × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 0023 × 0308 ÷ 1B44 ÷ # × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 0023 × 0308 × 0020 ÷ 1B44 ÷ # × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
× 0023 × 2060 ÷ # × [0.3] NUMBER SIGN (AL) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 0023 × 0020 × 2060 ÷ # × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 0023 × 0308 × 2060 ÷ # × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
@@ -166,6 +386,14 @@
× 0023 × 0020 ÷ 1F3FB ÷ # × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 0023 × 0308 ÷ 1F3FB ÷ # × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 0023 × 0308 × 0020 ÷ 1F3FB ÷ # × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0023 × 00AB ÷ # × [0.3] NUMBER SIGN (AL) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0023 × 0020 ÷ 00AB ÷ # × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0023 × 0308 × 00AB ÷ # × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0023 × 0308 × 0020 ÷ 00AB ÷ # × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0023 × 00BB ÷ # × [0.3] NUMBER SIGN (AL) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 0023 × 0020 × 00BB ÷ # × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 0023 × 0308 × 00BB ÷ # × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 0023 × 0308 × 0020 × 00BB ÷ # × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
× 0023 × 0029 ÷ # × [0.3] NUMBER SIGN (AL) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 0023 × 0020 × 0029 ÷ # × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 0023 × 0308 × 0029 ÷ # × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
@@ -198,10 +426,422 @@
× 0023 × 0020 ÷ 3041 ÷ # × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 0023 × 0308 × 3041 ÷ # × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 0023 × 0308 × 0020 ÷ 3041 ÷ # × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 11003 × 1B05 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [28.11] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 11003 × 0020 ÷ 1B05 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 11003 × 0308 × 1B05 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [28.11] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 11003 × 0308 × 0020 ÷ 1B05 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 11003 ÷ 0023 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
+× 11003 × 0020 ÷ 0023 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 11003 × 0308 ÷ 0023 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
+× 11003 × 0308 × 0020 ÷ 0023 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 11003 ÷ 11003 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 11003 × 0020 ÷ 11003 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 11003 × 0308 ÷ 11003 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 11003 × 0308 × 0020 ÷ 11003 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 11003 × 1BC0 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [28.11] BATAK LETTER A (AS) ÷ [0.3]
+× 11003 × 0020 ÷ 1BC0 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 11003 × 0308 × 1BC0 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [28.11] BATAK LETTER A (AS) ÷ [0.3]
+× 11003 × 0308 × 0020 ÷ 1BC0 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 11003 ÷ 2014 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 11003 × 0020 ÷ 2014 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 11003 × 0308 ÷ 2014 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 11003 × 0308 × 0020 ÷ 2014 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 11003 × 0009 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 11003 × 0020 ÷ 0009 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 11003 × 0308 × 0009 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 11003 × 0308 × 0020 ÷ 0009 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 11003 ÷ 00B4 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 11003 × 0020 ÷ 00B4 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 11003 × 0308 ÷ 00B4 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 11003 × 0308 × 0020 ÷ 00B4 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 11003 × 000B ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 11003 × 0020 × 000B ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 11003 × 0308 × 000B ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 11003 × 0308 × 0020 × 000B ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 11003 ÷ FFFC ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 11003 × 0020 ÷ FFFC ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 11003 × 0308 ÷ FFFC ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 11003 × 0308 × 0020 ÷ FFFC ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 11003 × 007D ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 11003 × 0020 × 007D ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 11003 × 0308 × 007D ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 11003 × 0308 × 0020 × 007D ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 11003 × 000D ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 11003 × 0020 × 000D ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 11003 × 0308 × 000D ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 11003 × 0308 × 0020 × 000D ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 11003 × 0021 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 11003 × 0020 × 0021 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 11003 × 0308 × 0021 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 11003 × 0308 × 0020 × 0021 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 11003 × 00A0 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [12.1] NO-BREAK SPACE (GL) ÷ [0.3]
+× 11003 × 0020 ÷ 00A0 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 11003 × 0308 × 00A0 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
+× 11003 × 0308 × 0020 ÷ 00A0 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 11003 ÷ AC00 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 11003 × 0020 ÷ AC00 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 11003 × 0308 ÷ AC00 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 11003 × 0308 × 0020 ÷ AC00 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 11003 ÷ AC01 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 11003 × 0020 ÷ AC01 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 11003 × 0308 ÷ AC01 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 11003 × 0308 × 0020 ÷ AC01 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 11003 ÷ 05D0 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 11003 × 0020 ÷ 05D0 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 11003 × 0308 ÷ 05D0 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 11003 × 0308 × 0020 ÷ 05D0 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 11003 × 002D ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 11003 × 0020 ÷ 002D ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 11003 × 0308 × 002D ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 11003 × 0308 × 0020 ÷ 002D ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 11003 ÷ 1B50 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 11003 × 0020 ÷ 1B50 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 11003 × 0308 ÷ 1B50 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 11003 × 0308 × 0020 ÷ 1B50 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 11003 × 2024 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 11003 × 0020 ÷ 2024 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 11003 × 0308 × 2024 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 11003 × 0308 × 0020 ÷ 2024 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 11003 × 002C ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [13.02] COMMA (IS) ÷ [0.3]
+× 11003 × 0020 × 002C ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 11003 × 0308 × 002C ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] COMMA (IS) ÷ [0.3]
+× 11003 × 0308 × 0020 × 002C ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 11003 ÷ 1100 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 11003 × 0020 ÷ 1100 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 11003 × 0308 ÷ 1100 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 11003 × 0308 × 0020 ÷ 1100 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 11003 ÷ 11A8 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 11003 × 0020 ÷ 11A8 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 11003 × 0308 ÷ 11A8 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 11003 × 0308 × 0020 ÷ 11A8 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 11003 ÷ 1160 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 11003 × 0020 ÷ 1160 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 11003 × 0308 ÷ 1160 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 11003 × 0308 × 0020 ÷ 1160 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 11003 × 000A ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 11003 × 0020 × 000A ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 11003 × 0308 × 000A ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 11003 × 0308 × 0020 × 000A ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 11003 × 0085 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 11003 × 0020 × 0085 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 11003 × 0308 × 0085 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 11003 × 0308 × 0020 × 0085 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 11003 × 17D6 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 11003 × 0020 ÷ 17D6 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 11003 × 0308 × 17D6 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 11003 × 0308 × 0020 ÷ 17D6 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 11003 ÷ 0030 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
+× 11003 × 0020 ÷ 0030 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 11003 × 0308 ÷ 0030 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
+× 11003 × 0308 × 0020 ÷ 0030 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 11003 ÷ 2329 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [999.0] LEFT-POINTING ANGLE BRACKET (OP) ÷ [0.3]
+× 11003 × 0020 ÷ 2329 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING ANGLE BRACKET (OP) ÷ [0.3]
+× 11003 × 0308 ÷ 2329 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] LEFT-POINTING ANGLE BRACKET (OP) ÷ [0.3]
+× 11003 × 0308 × 0020 ÷ 2329 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING ANGLE BRACKET (OP) ÷ [0.3]
+× 11003 ÷ 0025 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
+× 11003 × 0020 ÷ 0025 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
+× 11003 × 0308 ÷ 0025 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
+× 11003 × 0308 × 0020 ÷ 0025 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
+× 11003 ÷ 0024 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 11003 × 0020 ÷ 0024 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 11003 × 0308 ÷ 0024 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 11003 × 0308 × 0020 ÷ 0024 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 11003 × 0022 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 11003 × 0020 ÷ 0022 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 11003 × 0308 × 0022 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 11003 × 0308 × 0020 ÷ 0022 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 11003 × 0020 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) ÷ [0.3]
+× 11003 × 0020 × 0020 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 11003 × 0308 × 0020 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 11003 × 0308 × 0020 × 0020 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 11003 × 002F ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 11003 × 0020 × 002F ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 11003 × 0308 × 002F ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
+× 11003 × 0308 × 0020 × 002F ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 11003 ÷ 1BF2 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 11003 × 0020 ÷ 1BF2 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 11003 × 0308 ÷ 1BF2 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 11003 × 0308 × 0020 ÷ 1BF2 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 11003 ÷ 1B44 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 11003 × 0020 ÷ 1B44 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 11003 × 0308 ÷ 1B44 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 11003 × 0308 × 0020 ÷ 1B44 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 11003 × 2060 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 11003 × 0020 × 2060 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 11003 × 0308 × 2060 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 11003 × 0308 × 0020 × 2060 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 11003 × 200B ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 11003 × 0020 × 200B ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 11003 × 0308 × 200B ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 11003 × 0308 × 0020 × 200B ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 11003 ÷ 1F1E6 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 11003 × 0020 ÷ 1F1E6 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 11003 × 0308 ÷ 1F1E6 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 11003 × 0308 × 0020 ÷ 1F1E6 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 11003 ÷ 261D ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 11003 × 0020 ÷ 261D ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 11003 × 0308 ÷ 261D ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 11003 × 0308 × 0020 ÷ 261D ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 11003 ÷ 1F3FB ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 11003 × 0020 ÷ 1F3FB ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 11003 × 0308 ÷ 1F3FB ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 11003 × 0308 × 0020 ÷ 1F3FB ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 11003 × 00AB ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 11003 × 0020 ÷ 00AB ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 11003 × 0308 × 00AB ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 11003 × 0308 × 0020 ÷ 00AB ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 11003 × 00BB ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 11003 × 0020 × 00BB ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 11003 × 0308 × 00BB ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 11003 × 0308 × 0020 × 00BB ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 11003 × 0029 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
+× 11003 × 0020 × 0029 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
+× 11003 × 0308 × 0029 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
+× 11003 × 0308 × 0020 × 0029 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
+× 11003 ÷ 0028 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [999.0] LEFT PARENTHESIS (OP_OP30) ÷ [0.3]
+× 11003 × 0020 ÷ 0028 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP_OP30) ÷ [0.3]
+× 11003 × 0308 ÷ 0028 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] LEFT PARENTHESIS (OP_OP30) ÷ [0.3]
+× 11003 × 0308 × 0020 ÷ 0028 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP_OP30) ÷ [0.3]
+× 11003 × 0001 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 11003 × 0020 ÷ 0001 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 11003 × 0308 × 0001 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 11003 × 0308 × 0020 ÷ 0001 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 11003 × 200D ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 11003 × 0020 ÷ 200D ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 11003 × 0308 × 200D ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 11003 × 0308 × 0020 ÷ 200D ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 11003 ÷ 00A7 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 11003 × 0020 ÷ 00A7 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 11003 × 0308 ÷ 00A7 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 11003 × 0308 × 0020 ÷ 00A7 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 11003 ÷ 50005 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 11003 × 0020 ÷ 50005 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 11003 × 0308 ÷ 50005 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 11003 × 0308 × 0020 ÷ 50005 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 11003 ÷ 0E01 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 11003 × 0020 ÷ 0E01 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 11003 × 0308 ÷ 0E01 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 11003 × 0308 × 0020 ÷ 0E01 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 11003 × 3041 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 11003 × 0020 ÷ 3041 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 11003 × 0308 × 3041 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 11003 × 0308 × 0020 ÷ 3041 ÷ # × [0.3] BRAHMI SIGN JIHVAMULIYA (AP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 1BC0 ÷ 1B05 ÷ # × [0.3] BATAK LETTER A (AS) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 1BC0 × 0020 ÷ 1B05 ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 1BC0 × 0308 ÷ 1B05 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 1BC0 × 0308 × 0020 ÷ 1B05 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 1BC0 ÷ 0023 ÷ # × [0.3] BATAK LETTER A (AS) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
+× 1BC0 × 0020 ÷ 0023 ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 1BC0 × 0308 ÷ 0023 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
+× 1BC0 × 0308 × 0020 ÷ 0023 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 1BC0 ÷ 11003 ÷ # × [0.3] BATAK LETTER A (AS) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 1BC0 × 0020 ÷ 11003 ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 1BC0 × 0308 ÷ 11003 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 1BC0 × 0308 × 0020 ÷ 11003 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 1BC0 ÷ 1BC0 ÷ # × [0.3] BATAK LETTER A (AS) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 1BC0 × 0020 ÷ 1BC0 ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 1BC0 × 0308 ÷ 1BC0 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 1BC0 × 0308 × 0020 ÷ 1BC0 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 1BC0 ÷ 2014 ÷ # × [0.3] BATAK LETTER A (AS) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 1BC0 × 0020 ÷ 2014 ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 1BC0 × 0308 ÷ 2014 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 1BC0 × 0308 × 0020 ÷ 2014 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 1BC0 × 0009 ÷ # × [0.3] BATAK LETTER A (AS) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 1BC0 × 0020 ÷ 0009 ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 1BC0 × 0308 × 0009 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 1BC0 × 0308 × 0020 ÷ 0009 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 1BC0 ÷ 00B4 ÷ # × [0.3] BATAK LETTER A (AS) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 1BC0 × 0020 ÷ 00B4 ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 1BC0 × 0308 ÷ 00B4 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 1BC0 × 0308 × 0020 ÷ 00B4 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 1BC0 × 000B ÷ # × [0.3] BATAK LETTER A (AS) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 1BC0 × 0020 × 000B ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 1BC0 × 0308 × 000B ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 1BC0 × 0308 × 0020 × 000B ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 1BC0 ÷ FFFC ÷ # × [0.3] BATAK LETTER A (AS) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 1BC0 × 0020 ÷ FFFC ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 1BC0 × 0308 ÷ FFFC ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 1BC0 × 0308 × 0020 ÷ FFFC ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 1BC0 × 007D ÷ # × [0.3] BATAK LETTER A (AS) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 1BC0 × 0020 × 007D ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 1BC0 × 0308 × 007D ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 1BC0 × 0308 × 0020 × 007D ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 1BC0 × 000D ÷ # × [0.3] BATAK LETTER A (AS) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 1BC0 × 0020 × 000D ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 1BC0 × 0308 × 000D ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 1BC0 × 0308 × 0020 × 000D ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 1BC0 × 0021 ÷ # × [0.3] BATAK LETTER A (AS) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 1BC0 × 0020 × 0021 ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 1BC0 × 0308 × 0021 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 1BC0 × 0308 × 0020 × 0021 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 1BC0 × 00A0 ÷ # × [0.3] BATAK LETTER A (AS) × [12.1] NO-BREAK SPACE (GL) ÷ [0.3]
+× 1BC0 × 0020 ÷ 00A0 ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 1BC0 × 0308 × 00A0 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
+× 1BC0 × 0308 × 0020 ÷ 00A0 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 1BC0 ÷ AC00 ÷ # × [0.3] BATAK LETTER A (AS) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 1BC0 × 0020 ÷ AC00 ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 1BC0 × 0308 ÷ AC00 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 1BC0 × 0308 × 0020 ÷ AC00 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 1BC0 ÷ AC01 ÷ # × [0.3] BATAK LETTER A (AS) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 1BC0 × 0020 ÷ AC01 ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 1BC0 × 0308 ÷ AC01 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 1BC0 × 0308 × 0020 ÷ AC01 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 1BC0 ÷ 05D0 ÷ # × [0.3] BATAK LETTER A (AS) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 1BC0 × 0020 ÷ 05D0 ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 1BC0 × 0308 ÷ 05D0 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 1BC0 × 0308 × 0020 ÷ 05D0 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 1BC0 × 002D ÷ # × [0.3] BATAK LETTER A (AS) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 1BC0 × 0020 ÷ 002D ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 1BC0 × 0308 × 002D ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 1BC0 × 0308 × 0020 ÷ 002D ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 1BC0 ÷ 1B50 ÷ # × [0.3] BATAK LETTER A (AS) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 1BC0 × 0020 ÷ 1B50 ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 1BC0 × 0308 ÷ 1B50 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 1BC0 × 0308 × 0020 ÷ 1B50 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 1BC0 × 2024 ÷ # × [0.3] BATAK LETTER A (AS) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 1BC0 × 0020 ÷ 2024 ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 1BC0 × 0308 × 2024 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 1BC0 × 0308 × 0020 ÷ 2024 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 1BC0 × 002C ÷ # × [0.3] BATAK LETTER A (AS) × [13.02] COMMA (IS) ÷ [0.3]
+× 1BC0 × 0020 × 002C ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 1BC0 × 0308 × 002C ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] COMMA (IS) ÷ [0.3]
+× 1BC0 × 0308 × 0020 × 002C ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 1BC0 ÷ 1100 ÷ # × [0.3] BATAK LETTER A (AS) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 1BC0 × 0020 ÷ 1100 ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 1BC0 × 0308 ÷ 1100 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 1BC0 × 0308 × 0020 ÷ 1100 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 1BC0 ÷ 11A8 ÷ # × [0.3] BATAK LETTER A (AS) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 1BC0 × 0020 ÷ 11A8 ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 1BC0 × 0308 ÷ 11A8 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 1BC0 × 0308 × 0020 ÷ 11A8 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 1BC0 ÷ 1160 ÷ # × [0.3] BATAK LETTER A (AS) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 1BC0 × 0020 ÷ 1160 ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 1BC0 × 0308 ÷ 1160 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 1BC0 × 0308 × 0020 ÷ 1160 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 1BC0 × 000A ÷ # × [0.3] BATAK LETTER A (AS) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 1BC0 × 0020 × 000A ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 1BC0 × 0308 × 000A ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 1BC0 × 0308 × 0020 × 000A ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 1BC0 × 0085 ÷ # × [0.3] BATAK LETTER A (AS) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 1BC0 × 0020 × 0085 ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 1BC0 × 0308 × 0085 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 1BC0 × 0308 × 0020 × 0085 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 1BC0 × 17D6 ÷ # × [0.3] BATAK LETTER A (AS) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 1BC0 × 0020 ÷ 17D6 ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 1BC0 × 0308 × 17D6 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 1BC0 × 0308 × 0020 ÷ 17D6 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 1BC0 ÷ 0030 ÷ # × [0.3] BATAK LETTER A (AS) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
+× 1BC0 × 0020 ÷ 0030 ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 1BC0 × 0308 ÷ 0030 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
+× 1BC0 × 0308 × 0020 ÷ 0030 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 1BC0 ÷ 2329 ÷ # × [0.3] BATAK LETTER A (AS) ÷ [999.0] LEFT-POINTING ANGLE BRACKET (OP) ÷ [0.3]
+× 1BC0 × 0020 ÷ 2329 ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING ANGLE BRACKET (OP) ÷ [0.3]
+× 1BC0 × 0308 ÷ 2329 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] LEFT-POINTING ANGLE BRACKET (OP) ÷ [0.3]
+× 1BC0 × 0308 × 0020 ÷ 2329 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING ANGLE BRACKET (OP) ÷ [0.3]
+× 1BC0 ÷ 0025 ÷ # × [0.3] BATAK LETTER A (AS) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
+× 1BC0 × 0020 ÷ 0025 ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
+× 1BC0 × 0308 ÷ 0025 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
+× 1BC0 × 0308 × 0020 ÷ 0025 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
+× 1BC0 ÷ 0024 ÷ # × [0.3] BATAK LETTER A (AS) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 1BC0 × 0020 ÷ 0024 ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 1BC0 × 0308 ÷ 0024 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 1BC0 × 0308 × 0020 ÷ 0024 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 1BC0 × 0022 ÷ # × [0.3] BATAK LETTER A (AS) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 1BC0 × 0020 ÷ 0022 ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 1BC0 × 0308 × 0022 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 1BC0 × 0308 × 0020 ÷ 0022 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 1BC0 × 0020 ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) ÷ [0.3]
+× 1BC0 × 0020 × 0020 ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 1BC0 × 0308 × 0020 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 1BC0 × 0308 × 0020 × 0020 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 1BC0 × 002F ÷ # × [0.3] BATAK LETTER A (AS) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 1BC0 × 0020 × 002F ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 1BC0 × 0308 × 002F ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
+× 1BC0 × 0308 × 0020 × 002F ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 1BC0 × 1BF2 ÷ # × [0.3] BATAK LETTER A (AS) × [28.12] BATAK PANGOLAT (VF) ÷ [0.3]
+× 1BC0 × 0020 ÷ 1BF2 ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 1BC0 × 0308 × 1BF2 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [28.12] BATAK PANGOLAT (VF) ÷ [0.3]
+× 1BC0 × 0308 × 0020 ÷ 1BF2 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 1BC0 × 1B44 ÷ # × [0.3] BATAK LETTER A (AS) × [28.12] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 1BC0 × 0020 ÷ 1B44 ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 1BC0 × 0308 × 1B44 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [28.12] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 1BC0 × 0308 × 0020 ÷ 1B44 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 1BC0 × 2060 ÷ # × [0.3] BATAK LETTER A (AS) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 1BC0 × 0020 × 2060 ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 1BC0 × 0308 × 2060 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 1BC0 × 0308 × 0020 × 2060 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 1BC0 × 200B ÷ # × [0.3] BATAK LETTER A (AS) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 1BC0 × 0020 × 200B ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 1BC0 × 0308 × 200B ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 1BC0 × 0308 × 0020 × 200B ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 1BC0 ÷ 1F1E6 ÷ # × [0.3] BATAK LETTER A (AS) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 1BC0 × 0020 ÷ 1F1E6 ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 1BC0 × 0308 ÷ 1F1E6 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 1BC0 × 0308 × 0020 ÷ 1F1E6 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 1BC0 ÷ 261D ÷ # × [0.3] BATAK LETTER A (AS) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 1BC0 × 0020 ÷ 261D ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 1BC0 × 0308 ÷ 261D ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 1BC0 × 0308 × 0020 ÷ 261D ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 1BC0 ÷ 1F3FB ÷ # × [0.3] BATAK LETTER A (AS) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 1BC0 × 0020 ÷ 1F3FB ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 1BC0 × 0308 ÷ 1F3FB ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 1BC0 × 0308 × 0020 ÷ 1F3FB ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 1BC0 × 00AB ÷ # × [0.3] BATAK LETTER A (AS) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 1BC0 × 0020 ÷ 00AB ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 1BC0 × 0308 × 00AB ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 1BC0 × 0308 × 0020 ÷ 00AB ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 1BC0 × 00BB ÷ # × [0.3] BATAK LETTER A (AS) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 1BC0 × 0020 × 00BB ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 1BC0 × 0308 × 00BB ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 1BC0 × 0308 × 0020 × 00BB ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 1BC0 × 0029 ÷ # × [0.3] BATAK LETTER A (AS) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
+× 1BC0 × 0020 × 0029 ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
+× 1BC0 × 0308 × 0029 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
+× 1BC0 × 0308 × 0020 × 0029 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
+× 1BC0 ÷ 0028 ÷ # × [0.3] BATAK LETTER A (AS) ÷ [999.0] LEFT PARENTHESIS (OP_OP30) ÷ [0.3]
+× 1BC0 × 0020 ÷ 0028 ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP_OP30) ÷ [0.3]
+× 1BC0 × 0308 ÷ 0028 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] LEFT PARENTHESIS (OP_OP30) ÷ [0.3]
+× 1BC0 × 0308 × 0020 ÷ 0028 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP_OP30) ÷ [0.3]
+× 1BC0 × 0001 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 1BC0 × 0020 ÷ 0001 ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 1BC0 × 0308 × 0001 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 1BC0 × 0308 × 0020 ÷ 0001 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 1BC0 × 200D ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 1BC0 × 0020 ÷ 200D ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 1BC0 × 0308 × 200D ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 1BC0 × 0308 × 0020 ÷ 200D ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 1BC0 ÷ 00A7 ÷ # × [0.3] BATAK LETTER A (AS) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 1BC0 × 0020 ÷ 00A7 ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 1BC0 × 0308 ÷ 00A7 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 1BC0 × 0308 × 0020 ÷ 00A7 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 1BC0 ÷ 50005 ÷ # × [0.3] BATAK LETTER A (AS) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 1BC0 × 0020 ÷ 50005 ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 1BC0 × 0308 ÷ 50005 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 1BC0 × 0308 × 0020 ÷ 50005 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 1BC0 ÷ 0E01 ÷ # × [0.3] BATAK LETTER A (AS) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 1BC0 × 0020 ÷ 0E01 ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 1BC0 × 0308 ÷ 0E01 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 1BC0 × 0308 × 0020 ÷ 0E01 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 1BC0 × 3041 ÷ # × [0.3] BATAK LETTER A (AS) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 1BC0 × 0020 ÷ 3041 ÷ # × [0.3] BATAK LETTER A (AS) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 1BC0 × 0308 × 3041 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 1BC0 × 0308 × 0020 ÷ 3041 ÷ # × [0.3] BATAK LETTER A (AS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 2014 ÷ 1B05 ÷ # × [0.3] EM DASH (B2) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 2014 × 0020 ÷ 1B05 ÷ # × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 2014 × 0308 ÷ 1B05 ÷ # × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 2014 × 0308 × 0020 ÷ 1B05 ÷ # × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
× 2014 ÷ 0023 ÷ # × [0.3] EM DASH (B2) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
× 2014 × 0020 ÷ 0023 ÷ # × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
× 2014 × 0308 ÷ 0023 ÷ # × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
× 2014 × 0308 × 0020 ÷ 0023 ÷ # × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 2014 ÷ 11003 ÷ # × [0.3] EM DASH (B2) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 2014 × 0020 ÷ 11003 ÷ # × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 2014 × 0308 ÷ 11003 ÷ # × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 2014 × 0308 × 0020 ÷ 11003 ÷ # × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 2014 ÷ 1BC0 ÷ # × [0.3] EM DASH (B2) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 2014 × 0020 ÷ 1BC0 ÷ # × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 2014 × 0308 ÷ 1BC0 ÷ # × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 2014 × 0308 × 0020 ÷ 1BC0 ÷ # × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
× 2014 × 2014 ÷ # × [0.3] EM DASH (B2) × [17.0] EM DASH (B2) ÷ [0.3]
× 2014 × 0020 × 2014 ÷ # × [0.3] EM DASH (B2) × [7.01] SPACE (SP) × [17.0] EM DASH (B2) ÷ [0.3]
× 2014 × 0308 × 2014 ÷ # × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [17.0] EM DASH (B2) ÷ [0.3]
@@ -254,10 +894,10 @@
× 2014 × 0020 ÷ 002D ÷ # × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
× 2014 × 0308 × 002D ÷ # × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
× 2014 × 0308 × 0020 ÷ 002D ÷ # × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 2014 ÷ 231A ÷ # × [0.3] EM DASH (B2) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 2014 × 0020 ÷ 231A ÷ # × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 2014 × 0308 ÷ 231A ÷ # × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 2014 × 0308 × 0020 ÷ 231A ÷ # × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 2014 ÷ 1B50 ÷ # × [0.3] EM DASH (B2) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 2014 × 0020 ÷ 1B50 ÷ # × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 2014 × 0308 ÷ 1B50 ÷ # × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 2014 × 0308 × 0020 ÷ 1B50 ÷ # × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
× 2014 × 2024 ÷ # × [0.3] EM DASH (B2) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
× 2014 × 0020 ÷ 2024 ÷ # × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
× 2014 × 0308 × 2024 ÷ # × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
@@ -318,6 +958,14 @@
× 2014 × 0020 × 002F ÷ # × [0.3] EM DASH (B2) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
× 2014 × 0308 × 002F ÷ # × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
× 2014 × 0308 × 0020 × 002F ÷ # × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 2014 ÷ 1BF2 ÷ # × [0.3] EM DASH (B2) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 2014 × 0020 ÷ 1BF2 ÷ # × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 2014 × 0308 ÷ 1BF2 ÷ # × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 2014 × 0308 × 0020 ÷ 1BF2 ÷ # × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 2014 ÷ 1B44 ÷ # × [0.3] EM DASH (B2) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 2014 × 0020 ÷ 1B44 ÷ # × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 2014 × 0308 ÷ 1B44 ÷ # × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 2014 × 0308 × 0020 ÷ 1B44 ÷ # × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
× 2014 × 2060 ÷ # × [0.3] EM DASH (B2) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 2014 × 0020 × 2060 ÷ # × [0.3] EM DASH (B2) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 2014 × 0308 × 2060 ÷ # × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
@@ -338,6 +986,14 @@
× 2014 × 0020 ÷ 1F3FB ÷ # × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 2014 × 0308 ÷ 1F3FB ÷ # × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 2014 × 0308 × 0020 ÷ 1F3FB ÷ # × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 2014 × 00AB ÷ # × [0.3] EM DASH (B2) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 2014 × 0020 ÷ 00AB ÷ # × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 2014 × 0308 × 00AB ÷ # × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 2014 × 0308 × 0020 ÷ 00AB ÷ # × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 2014 × 00BB ÷ # × [0.3] EM DASH (B2) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 2014 × 0020 × 00BB ÷ # × [0.3] EM DASH (B2) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 2014 × 0308 × 00BB ÷ # × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 2014 × 0308 × 0020 × 00BB ÷ # × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
× 2014 × 0029 ÷ # × [0.3] EM DASH (B2) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 2014 × 0020 × 0029 ÷ # × [0.3] EM DASH (B2) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 2014 × 0308 × 0029 ÷ # × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
@@ -370,10 +1026,22 @@
× 2014 × 0020 ÷ 3041 ÷ # × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 2014 × 0308 × 3041 ÷ # × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 2014 × 0308 × 0020 ÷ 3041 ÷ # × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 0009 ÷ 1B05 ÷ # × [0.3] <CHARACTER TABULATION> (BA) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 0009 × 0020 ÷ 1B05 ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 0009 × 0308 ÷ 1B05 ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 0009 × 0308 × 0020 ÷ 1B05 ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
× 0009 ÷ 0023 ÷ # × [0.3] <CHARACTER TABULATION> (BA) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
× 0009 × 0020 ÷ 0023 ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
× 0009 × 0308 ÷ 0023 ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
× 0009 × 0308 × 0020 ÷ 0023 ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 0009 ÷ 11003 ÷ # × [0.3] <CHARACTER TABULATION> (BA) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0009 × 0020 ÷ 11003 ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0009 × 0308 ÷ 11003 ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0009 × 0308 × 0020 ÷ 11003 ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0009 ÷ 1BC0 ÷ # × [0.3] <CHARACTER TABULATION> (BA) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 0009 × 0020 ÷ 1BC0 ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 0009 × 0308 ÷ 1BC0 ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 0009 × 0308 × 0020 ÷ 1BC0 ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
× 0009 ÷ 2014 ÷ # × [0.3] <CHARACTER TABULATION> (BA) ÷ [999.0] EM DASH (B2) ÷ [0.3]
× 0009 × 0020 ÷ 2014 ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
× 0009 × 0308 ÷ 2014 ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
@@ -426,10 +1094,10 @@
× 0009 × 0020 ÷ 002D ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
× 0009 × 0308 × 002D ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
× 0009 × 0308 × 0020 ÷ 002D ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 0009 ÷ 231A ÷ # × [0.3] <CHARACTER TABULATION> (BA) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 0009 × 0020 ÷ 231A ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 0009 × 0308 ÷ 231A ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 0009 × 0308 × 0020 ÷ 231A ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 0009 ÷ 1B50 ÷ # × [0.3] <CHARACTER TABULATION> (BA) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 0009 × 0020 ÷ 1B50 ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 0009 × 0308 ÷ 1B50 ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 0009 × 0308 × 0020 ÷ 1B50 ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
× 0009 × 2024 ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
× 0009 × 0020 ÷ 2024 ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
× 0009 × 0308 × 2024 ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
@@ -490,6 +1158,14 @@
× 0009 × 0020 × 002F ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
× 0009 × 0308 × 002F ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
× 0009 × 0308 × 0020 × 002F ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 0009 ÷ 1BF2 ÷ # × [0.3] <CHARACTER TABULATION> (BA) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0009 × 0020 ÷ 1BF2 ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0009 × 0308 ÷ 1BF2 ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0009 × 0308 × 0020 ÷ 1BF2 ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0009 ÷ 1B44 ÷ # × [0.3] <CHARACTER TABULATION> (BA) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 0009 × 0020 ÷ 1B44 ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 0009 × 0308 ÷ 1B44 ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 0009 × 0308 × 0020 ÷ 1B44 ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
× 0009 × 2060 ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 0009 × 0020 × 2060 ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 0009 × 0308 × 2060 ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
@@ -510,6 +1186,14 @@
× 0009 × 0020 ÷ 1F3FB ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 0009 × 0308 ÷ 1F3FB ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 0009 × 0308 × 0020 ÷ 1F3FB ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0009 × 00AB ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0009 × 0020 ÷ 00AB ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0009 × 0308 × 00AB ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0009 × 0308 × 0020 ÷ 00AB ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0009 × 00BB ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 0009 × 0020 × 00BB ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 0009 × 0308 × 00BB ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 0009 × 0308 × 0020 × 00BB ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
× 0009 × 0029 ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 0009 × 0020 × 0029 ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 0009 × 0308 × 0029 ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
@@ -542,10 +1226,22 @@
× 0009 × 0020 ÷ 3041 ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 0009 × 0308 × 3041 ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 0009 × 0308 × 0020 ÷ 3041 ÷ # × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 00B4 × 1B05 ÷ # × [0.3] ACUTE ACCENT (BB) × [21.04] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 00B4 × 0020 ÷ 1B05 ÷ # × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 00B4 × 0308 × 1B05 ÷ # × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.04] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 00B4 × 0308 × 0020 ÷ 1B05 ÷ # × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
× 00B4 × 0023 ÷ # × [0.3] ACUTE ACCENT (BB) × [21.04] NUMBER SIGN (AL) ÷ [0.3]
× 00B4 × 0020 ÷ 0023 ÷ # × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
× 00B4 × 0308 × 0023 ÷ # × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.04] NUMBER SIGN (AL) ÷ [0.3]
× 00B4 × 0308 × 0020 ÷ 0023 ÷ # × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 00B4 × 11003 ÷ # × [0.3] ACUTE ACCENT (BB) × [21.04] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 00B4 × 0020 ÷ 11003 ÷ # × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 00B4 × 0308 × 11003 ÷ # × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.04] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 00B4 × 0308 × 0020 ÷ 11003 ÷ # × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 00B4 × 1BC0 ÷ # × [0.3] ACUTE ACCENT (BB) × [21.04] BATAK LETTER A (AS) ÷ [0.3]
+× 00B4 × 0020 ÷ 1BC0 ÷ # × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 00B4 × 0308 × 1BC0 ÷ # × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.04] BATAK LETTER A (AS) ÷ [0.3]
+× 00B4 × 0308 × 0020 ÷ 1BC0 ÷ # × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
× 00B4 × 2014 ÷ # × [0.3] ACUTE ACCENT (BB) × [21.04] EM DASH (B2) ÷ [0.3]
× 00B4 × 0020 ÷ 2014 ÷ # × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
× 00B4 × 0308 × 2014 ÷ # × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.04] EM DASH (B2) ÷ [0.3]
@@ -598,10 +1294,10 @@
× 00B4 × 0020 ÷ 002D ÷ # × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
× 00B4 × 0308 × 002D ÷ # × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
× 00B4 × 0308 × 0020 ÷ 002D ÷ # × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 00B4 × 231A ÷ # × [0.3] ACUTE ACCENT (BB) × [21.04] WATCH (ID) ÷ [0.3]
-× 00B4 × 0020 ÷ 231A ÷ # × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 00B4 × 0308 × 231A ÷ # × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.04] WATCH (ID) ÷ [0.3]
-× 00B4 × 0308 × 0020 ÷ 231A ÷ # × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 00B4 × 1B50 ÷ # × [0.3] ACUTE ACCENT (BB) × [21.04] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 00B4 × 0020 ÷ 1B50 ÷ # × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 00B4 × 0308 × 1B50 ÷ # × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.04] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 00B4 × 0308 × 0020 ÷ 1B50 ÷ # × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
× 00B4 × 2024 ÷ # × [0.3] ACUTE ACCENT (BB) × [21.04] ONE DOT LEADER (IN) ÷ [0.3]
× 00B4 × 0020 ÷ 2024 ÷ # × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
× 00B4 × 0308 × 2024 ÷ # × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.04] ONE DOT LEADER (IN) ÷ [0.3]
@@ -662,6 +1358,14 @@
× 00B4 × 0020 × 002F ÷ # × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
× 00B4 × 0308 × 002F ÷ # × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
× 00B4 × 0308 × 0020 × 002F ÷ # × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 00B4 × 1BF2 ÷ # × [0.3] ACUTE ACCENT (BB) × [21.04] BATAK PANGOLAT (VF) ÷ [0.3]
+× 00B4 × 0020 ÷ 1BF2 ÷ # × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 00B4 × 0308 × 1BF2 ÷ # × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.04] BATAK PANGOLAT (VF) ÷ [0.3]
+× 00B4 × 0308 × 0020 ÷ 1BF2 ÷ # × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 00B4 × 1B44 ÷ # × [0.3] ACUTE ACCENT (BB) × [21.04] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 00B4 × 0020 ÷ 1B44 ÷ # × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 00B4 × 0308 × 1B44 ÷ # × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.04] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 00B4 × 0308 × 0020 ÷ 1B44 ÷ # × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
× 00B4 × 2060 ÷ # × [0.3] ACUTE ACCENT (BB) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 00B4 × 0020 × 2060 ÷ # × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 00B4 × 0308 × 2060 ÷ # × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
@@ -682,6 +1386,14 @@
× 00B4 × 0020 ÷ 1F3FB ÷ # × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 00B4 × 0308 × 1F3FB ÷ # × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.04] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 00B4 × 0308 × 0020 ÷ 1F3FB ÷ # × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 00B4 × 00AB ÷ # × [0.3] ACUTE ACCENT (BB) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 00B4 × 0020 ÷ 00AB ÷ # × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 00B4 × 0308 × 00AB ÷ # × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 00B4 × 0308 × 0020 ÷ 00AB ÷ # × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 00B4 × 00BB ÷ # × [0.3] ACUTE ACCENT (BB) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 00B4 × 0020 × 00BB ÷ # × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 00B4 × 0308 × 00BB ÷ # × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 00B4 × 0308 × 0020 × 00BB ÷ # × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
× 00B4 × 0029 ÷ # × [0.3] ACUTE ACCENT (BB) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 00B4 × 0020 × 0029 ÷ # × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 00B4 × 0308 × 0029 ÷ # × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
@@ -714,10 +1426,22 @@
× 00B4 × 0020 ÷ 3041 ÷ # × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 00B4 × 0308 × 3041 ÷ # × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 00B4 × 0308 × 0020 ÷ 3041 ÷ # × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 000B ÷ 1B05 ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 000B ÷ 0020 ÷ 1B05 ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 000B ÷ 0308 ÷ 1B05 ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 000B ÷ 0308 × 0020 ÷ 1B05 ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
× 000B ÷ 0023 ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] NUMBER SIGN (AL) ÷ [0.3]
× 000B ÷ 0020 ÷ 0023 ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
× 000B ÷ 0308 × 0023 ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
× 000B ÷ 0308 × 0020 ÷ 0023 ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 000B ÷ 11003 ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 000B ÷ 0020 ÷ 11003 ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 000B ÷ 0308 ÷ 11003 ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 000B ÷ 0308 × 0020 ÷ 11003 ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 000B ÷ 1BC0 ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] BATAK LETTER A (AS) ÷ [0.3]
+× 000B ÷ 0020 ÷ 1BC0 ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 000B ÷ 0308 ÷ 1BC0 ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 000B ÷ 0308 × 0020 ÷ 1BC0 ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
× 000B ÷ 2014 ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] EM DASH (B2) ÷ [0.3]
× 000B ÷ 0020 ÷ 2014 ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
× 000B ÷ 0308 ÷ 2014 ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
@@ -770,10 +1494,10 @@
× 000B ÷ 0020 ÷ 002D ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
× 000B ÷ 0308 × 002D ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
× 000B ÷ 0308 × 0020 ÷ 002D ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 000B ÷ 231A ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] WATCH (ID) ÷ [0.3]
-× 000B ÷ 0020 ÷ 231A ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 000B ÷ 0308 ÷ 231A ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 000B ÷ 0308 × 0020 ÷ 231A ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 000B ÷ 1B50 ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 000B ÷ 0020 ÷ 1B50 ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 000B ÷ 0308 ÷ 1B50 ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 000B ÷ 0308 × 0020 ÷ 1B50 ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
× 000B ÷ 2024 ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] ONE DOT LEADER (IN) ÷ [0.3]
× 000B ÷ 0020 ÷ 2024 ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
× 000B ÷ 0308 × 2024 ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
@@ -834,6 +1558,14 @@
× 000B ÷ 0020 × 002F ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
× 000B ÷ 0308 × 002F ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
× 000B ÷ 0308 × 0020 × 002F ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 000B ÷ 1BF2 ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 000B ÷ 0020 ÷ 1BF2 ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 000B ÷ 0308 ÷ 1BF2 ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 000B ÷ 0308 × 0020 ÷ 1BF2 ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 000B ÷ 1B44 ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 000B ÷ 0020 ÷ 1B44 ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 000B ÷ 0308 ÷ 1B44 ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 000B ÷ 0308 × 0020 ÷ 1B44 ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
× 000B ÷ 2060 ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] WORD JOINER (WJ) ÷ [0.3]
× 000B ÷ 0020 × 2060 ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 000B ÷ 0308 × 2060 ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
@@ -854,6 +1586,14 @@
× 000B ÷ 0020 ÷ 1F3FB ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 000B ÷ 0308 ÷ 1F3FB ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 000B ÷ 0308 × 0020 ÷ 1F3FB ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 000B ÷ 00AB ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 000B ÷ 0020 ÷ 00AB ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 000B ÷ 0308 × 00AB ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 000B ÷ 0308 × 0020 ÷ 00AB ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 000B ÷ 00BB ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 000B ÷ 0020 × 00BB ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 000B ÷ 0308 × 00BB ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 000B ÷ 0308 × 0020 × 00BB ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
× 000B ÷ 0029 ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 000B ÷ 0020 × 0029 ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 000B ÷ 0308 × 0029 ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
@@ -886,10 +1626,22 @@
× 000B ÷ 0020 ÷ 3041 ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 000B ÷ 0308 × 3041 ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 000B ÷ 0308 × 0020 ÷ 3041 ÷ # × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× FFFC ÷ 1B05 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) ÷ [20.02] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× FFFC × 0020 ÷ 1B05 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× FFFC × 0308 ÷ 1B05 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.02] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× FFFC × 0308 × 0020 ÷ 1B05 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
× FFFC ÷ 0023 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) ÷ [20.02] NUMBER SIGN (AL) ÷ [0.3]
× FFFC × 0020 ÷ 0023 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
× FFFC × 0308 ÷ 0023 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.02] NUMBER SIGN (AL) ÷ [0.3]
× FFFC × 0308 × 0020 ÷ 0023 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× FFFC ÷ 11003 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) ÷ [20.02] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× FFFC × 0020 ÷ 11003 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× FFFC × 0308 ÷ 11003 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.02] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× FFFC × 0308 × 0020 ÷ 11003 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× FFFC ÷ 1BC0 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) ÷ [20.02] BATAK LETTER A (AS) ÷ [0.3]
+× FFFC × 0020 ÷ 1BC0 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× FFFC × 0308 ÷ 1BC0 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.02] BATAK LETTER A (AS) ÷ [0.3]
+× FFFC × 0308 × 0020 ÷ 1BC0 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
× FFFC ÷ 2014 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) ÷ [20.02] EM DASH (B2) ÷ [0.3]
× FFFC × 0020 ÷ 2014 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
× FFFC × 0308 ÷ 2014 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.02] EM DASH (B2) ÷ [0.3]
@@ -942,10 +1694,10 @@
× FFFC × 0020 ÷ 002D ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
× FFFC × 0308 ÷ 002D ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.02] HYPHEN-MINUS (HY) ÷ [0.3]
× FFFC × 0308 × 0020 ÷ 002D ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× FFFC ÷ 231A ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) ÷ [20.02] WATCH (ID) ÷ [0.3]
-× FFFC × 0020 ÷ 231A ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× FFFC × 0308 ÷ 231A ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.02] WATCH (ID) ÷ [0.3]
-× FFFC × 0308 × 0020 ÷ 231A ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× FFFC ÷ 1B50 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) ÷ [20.02] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× FFFC × 0020 ÷ 1B50 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× FFFC × 0308 ÷ 1B50 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.02] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× FFFC × 0308 × 0020 ÷ 1B50 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
× FFFC ÷ 2024 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) ÷ [20.02] ONE DOT LEADER (IN) ÷ [0.3]
× FFFC × 0020 ÷ 2024 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
× FFFC × 0308 ÷ 2024 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.02] ONE DOT LEADER (IN) ÷ [0.3]
@@ -1006,6 +1758,14 @@
× FFFC × 0020 × 002F ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
× FFFC × 0308 × 002F ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
× FFFC × 0308 × 0020 × 002F ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× FFFC ÷ 1BF2 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) ÷ [20.02] BATAK PANGOLAT (VF) ÷ [0.3]
+× FFFC × 0020 ÷ 1BF2 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× FFFC × 0308 ÷ 1BF2 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.02] BATAK PANGOLAT (VF) ÷ [0.3]
+× FFFC × 0308 × 0020 ÷ 1BF2 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× FFFC ÷ 1B44 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) ÷ [20.02] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× FFFC × 0020 ÷ 1B44 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× FFFC × 0308 ÷ 1B44 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.02] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× FFFC × 0308 × 0020 ÷ 1B44 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
× FFFC × 2060 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× FFFC × 0020 × 2060 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× FFFC × 0308 × 2060 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
@@ -1026,6 +1786,14 @@
× FFFC × 0020 ÷ 1F3FB ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× FFFC × 0308 ÷ 1F3FB ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.02] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× FFFC × 0308 × 0020 ÷ 1F3FB ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× FFFC × 00AB ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× FFFC × 0020 ÷ 00AB ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× FFFC × 0308 × 00AB ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× FFFC × 0308 × 0020 ÷ 00AB ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× FFFC × 00BB ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× FFFC × 0020 × 00BB ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× FFFC × 0308 × 00BB ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× FFFC × 0308 × 0020 × 00BB ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
× FFFC × 0029 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× FFFC × 0020 × 0029 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× FFFC × 0308 × 0029 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
@@ -1058,10 +1826,22 @@
× FFFC × 0020 ÷ 3041 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× FFFC × 0308 ÷ 3041 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.02] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× FFFC × 0308 × 0020 ÷ 3041 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 007D ÷ 1B05 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 007D × 0020 ÷ 1B05 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 007D × 0308 ÷ 1B05 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 007D × 0308 × 0020 ÷ 1B05 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
× 007D ÷ 0023 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
× 007D × 0020 ÷ 0023 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
× 007D × 0308 ÷ 0023 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
× 007D × 0308 × 0020 ÷ 0023 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 007D ÷ 11003 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 007D × 0020 ÷ 11003 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 007D × 0308 ÷ 11003 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 007D × 0308 × 0020 ÷ 11003 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 007D ÷ 1BC0 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 007D × 0020 ÷ 1BC0 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 007D × 0308 ÷ 1BC0 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 007D × 0308 × 0020 ÷ 1BC0 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
× 007D ÷ 2014 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) ÷ [999.0] EM DASH (B2) ÷ [0.3]
× 007D × 0020 ÷ 2014 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
× 007D × 0308 ÷ 2014 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
@@ -1114,10 +1894,10 @@
× 007D × 0020 ÷ 002D ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
× 007D × 0308 × 002D ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
× 007D × 0308 × 0020 ÷ 002D ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 007D ÷ 231A ÷ # × [0.3] RIGHT CURLY BRACKET (CL) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 007D × 0020 ÷ 231A ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 007D × 0308 ÷ 231A ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 007D × 0308 × 0020 ÷ 231A ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 007D ÷ 1B50 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 007D × 0020 ÷ 1B50 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 007D × 0308 ÷ 1B50 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 007D × 0308 × 0020 ÷ 1B50 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
× 007D × 2024 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
× 007D × 0020 ÷ 2024 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
× 007D × 0308 × 2024 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
@@ -1178,6 +1958,14 @@
× 007D × 0020 × 002F ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
× 007D × 0308 × 002F ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
× 007D × 0308 × 0020 × 002F ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 007D ÷ 1BF2 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 007D × 0020 ÷ 1BF2 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 007D × 0308 ÷ 1BF2 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 007D × 0308 × 0020 ÷ 1BF2 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 007D ÷ 1B44 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 007D × 0020 ÷ 1B44 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 007D × 0308 ÷ 1B44 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 007D × 0308 × 0020 ÷ 1B44 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
× 007D × 2060 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 007D × 0020 × 2060 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 007D × 0308 × 2060 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
@@ -1198,6 +1986,14 @@
× 007D × 0020 ÷ 1F3FB ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 007D × 0308 ÷ 1F3FB ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 007D × 0308 × 0020 ÷ 1F3FB ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 007D × 00AB ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 007D × 0020 ÷ 00AB ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 007D × 0308 × 00AB ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 007D × 0308 × 0020 ÷ 00AB ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 007D × 00BB ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 007D × 0020 × 00BB ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 007D × 0308 × 00BB ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 007D × 0308 × 0020 × 00BB ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
× 007D × 0029 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 007D × 0020 × 0029 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 007D × 0308 × 0029 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
@@ -1230,10 +2026,22 @@
× 007D × 0020 × 3041 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) × [16.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 007D × 0308 × 3041 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [16.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 007D × 0308 × 0020 × 3041 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [16.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 000D ÷ 1B05 ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 000D ÷ 0020 ÷ 1B05 ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 000D ÷ 0308 ÷ 1B05 ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 000D ÷ 0308 × 0020 ÷ 1B05 ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
× 000D ÷ 0023 ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] NUMBER SIGN (AL) ÷ [0.3]
× 000D ÷ 0020 ÷ 0023 ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
× 000D ÷ 0308 × 0023 ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
× 000D ÷ 0308 × 0020 ÷ 0023 ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 000D ÷ 11003 ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 000D ÷ 0020 ÷ 11003 ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 000D ÷ 0308 ÷ 11003 ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 000D ÷ 0308 × 0020 ÷ 11003 ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 000D ÷ 1BC0 ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] BATAK LETTER A (AS) ÷ [0.3]
+× 000D ÷ 0020 ÷ 1BC0 ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 000D ÷ 0308 ÷ 1BC0 ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 000D ÷ 0308 × 0020 ÷ 1BC0 ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
× 000D ÷ 2014 ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] EM DASH (B2) ÷ [0.3]
× 000D ÷ 0020 ÷ 2014 ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
× 000D ÷ 0308 ÷ 2014 ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
@@ -1286,10 +2094,10 @@
× 000D ÷ 0020 ÷ 002D ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
× 000D ÷ 0308 × 002D ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
× 000D ÷ 0308 × 0020 ÷ 002D ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 000D ÷ 231A ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] WATCH (ID) ÷ [0.3]
-× 000D ÷ 0020 ÷ 231A ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 000D ÷ 0308 ÷ 231A ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 000D ÷ 0308 × 0020 ÷ 231A ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 000D ÷ 1B50 ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 000D ÷ 0020 ÷ 1B50 ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 000D ÷ 0308 ÷ 1B50 ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 000D ÷ 0308 × 0020 ÷ 1B50 ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
× 000D ÷ 2024 ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] ONE DOT LEADER (IN) ÷ [0.3]
× 000D ÷ 0020 ÷ 2024 ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
× 000D ÷ 0308 × 2024 ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
@@ -1350,6 +2158,14 @@
× 000D ÷ 0020 × 002F ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
× 000D ÷ 0308 × 002F ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
× 000D ÷ 0308 × 0020 × 002F ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 000D ÷ 1BF2 ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] BATAK PANGOLAT (VF) ÷ [0.3]
+× 000D ÷ 0020 ÷ 1BF2 ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 000D ÷ 0308 ÷ 1BF2 ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 000D ÷ 0308 × 0020 ÷ 1BF2 ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 000D ÷ 1B44 ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 000D ÷ 0020 ÷ 1B44 ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 000D ÷ 0308 ÷ 1B44 ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 000D ÷ 0308 × 0020 ÷ 1B44 ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
× 000D ÷ 2060 ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] WORD JOINER (WJ) ÷ [0.3]
× 000D ÷ 0020 × 2060 ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 000D ÷ 0308 × 2060 ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
@@ -1370,6 +2186,14 @@
× 000D ÷ 0020 ÷ 1F3FB ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 000D ÷ 0308 ÷ 1F3FB ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 000D ÷ 0308 × 0020 ÷ 1F3FB ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 000D ÷ 00AB ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 000D ÷ 0020 ÷ 00AB ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 000D ÷ 0308 × 00AB ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 000D ÷ 0308 × 0020 ÷ 00AB ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 000D ÷ 00BB ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 000D ÷ 0020 × 00BB ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 000D ÷ 0308 × 00BB ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 000D ÷ 0308 × 0020 × 00BB ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
× 000D ÷ 0029 ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 000D ÷ 0020 × 0029 ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 000D ÷ 0308 × 0029 ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
@@ -1402,10 +2226,22 @@
× 000D ÷ 0020 ÷ 3041 ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 000D ÷ 0308 × 3041 ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 000D ÷ 0308 × 0020 ÷ 3041 ÷ # × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 0021 ÷ 1B05 ÷ # × [0.3] EXCLAMATION MARK (EX) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 0021 × 0020 ÷ 1B05 ÷ # × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 0021 × 0308 ÷ 1B05 ÷ # × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 0021 × 0308 × 0020 ÷ 1B05 ÷ # × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
× 0021 ÷ 0023 ÷ # × [0.3] EXCLAMATION MARK (EX) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
× 0021 × 0020 ÷ 0023 ÷ # × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
× 0021 × 0308 ÷ 0023 ÷ # × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
× 0021 × 0308 × 0020 ÷ 0023 ÷ # × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 0021 ÷ 11003 ÷ # × [0.3] EXCLAMATION MARK (EX) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0021 × 0020 ÷ 11003 ÷ # × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0021 × 0308 ÷ 11003 ÷ # × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0021 × 0308 × 0020 ÷ 11003 ÷ # × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0021 ÷ 1BC0 ÷ # × [0.3] EXCLAMATION MARK (EX) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 0021 × 0020 ÷ 1BC0 ÷ # × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 0021 × 0308 ÷ 1BC0 ÷ # × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 0021 × 0308 × 0020 ÷ 1BC0 ÷ # × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
× 0021 ÷ 2014 ÷ # × [0.3] EXCLAMATION MARK (EX) ÷ [999.0] EM DASH (B2) ÷ [0.3]
× 0021 × 0020 ÷ 2014 ÷ # × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
× 0021 × 0308 ÷ 2014 ÷ # × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
@@ -1458,10 +2294,10 @@
× 0021 × 0020 ÷ 002D ÷ # × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
× 0021 × 0308 × 002D ÷ # × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
× 0021 × 0308 × 0020 ÷ 002D ÷ # × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 0021 ÷ 231A ÷ # × [0.3] EXCLAMATION MARK (EX) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 0021 × 0020 ÷ 231A ÷ # × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 0021 × 0308 ÷ 231A ÷ # × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 0021 × 0308 × 0020 ÷ 231A ÷ # × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 0021 ÷ 1B50 ÷ # × [0.3] EXCLAMATION MARK (EX) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 0021 × 0020 ÷ 1B50 ÷ # × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 0021 × 0308 ÷ 1B50 ÷ # × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 0021 × 0308 × 0020 ÷ 1B50 ÷ # × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
× 0021 × 2024 ÷ # × [0.3] EXCLAMATION MARK (EX) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
× 0021 × 0020 ÷ 2024 ÷ # × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
× 0021 × 0308 × 2024 ÷ # × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
@@ -1522,6 +2358,14 @@
× 0021 × 0020 × 002F ÷ # × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
× 0021 × 0308 × 002F ÷ # × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
× 0021 × 0308 × 0020 × 002F ÷ # × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 0021 ÷ 1BF2 ÷ # × [0.3] EXCLAMATION MARK (EX) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0021 × 0020 ÷ 1BF2 ÷ # × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0021 × 0308 ÷ 1BF2 ÷ # × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0021 × 0308 × 0020 ÷ 1BF2 ÷ # × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0021 ÷ 1B44 ÷ # × [0.3] EXCLAMATION MARK (EX) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 0021 × 0020 ÷ 1B44 ÷ # × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 0021 × 0308 ÷ 1B44 ÷ # × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 0021 × 0308 × 0020 ÷ 1B44 ÷ # × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
× 0021 × 2060 ÷ # × [0.3] EXCLAMATION MARK (EX) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 0021 × 0020 × 2060 ÷ # × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 0021 × 0308 × 2060 ÷ # × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
@@ -1542,6 +2386,14 @@
× 0021 × 0020 ÷ 1F3FB ÷ # × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 0021 × 0308 ÷ 1F3FB ÷ # × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 0021 × 0308 × 0020 ÷ 1F3FB ÷ # × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0021 × 00AB ÷ # × [0.3] EXCLAMATION MARK (EX) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0021 × 0020 ÷ 00AB ÷ # × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0021 × 0308 × 00AB ÷ # × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0021 × 0308 × 0020 ÷ 00AB ÷ # × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0021 × 00BB ÷ # × [0.3] EXCLAMATION MARK (EX) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 0021 × 0020 × 00BB ÷ # × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 0021 × 0308 × 00BB ÷ # × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 0021 × 0308 × 0020 × 00BB ÷ # × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
× 0021 × 0029 ÷ # × [0.3] EXCLAMATION MARK (EX) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 0021 × 0020 × 0029 ÷ # × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 0021 × 0308 × 0029 ÷ # × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
@@ -1574,10 +2426,22 @@
× 0021 × 0020 ÷ 3041 ÷ # × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 0021 × 0308 × 3041 ÷ # × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 0021 × 0308 × 0020 ÷ 3041 ÷ # × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 00A0 × 1B05 ÷ # × [0.3] NO-BREAK SPACE (GL) × [12.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 00A0 × 0020 ÷ 1B05 ÷ # × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 00A0 × 0308 × 1B05 ÷ # × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 00A0 × 0308 × 0020 ÷ 1B05 ÷ # × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
× 00A0 × 0023 ÷ # × [0.3] NO-BREAK SPACE (GL) × [12.0] NUMBER SIGN (AL) ÷ [0.3]
× 00A0 × 0020 ÷ 0023 ÷ # × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
× 00A0 × 0308 × 0023 ÷ # × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] NUMBER SIGN (AL) ÷ [0.3]
× 00A0 × 0308 × 0020 ÷ 0023 ÷ # × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 00A0 × 11003 ÷ # × [0.3] NO-BREAK SPACE (GL) × [12.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 00A0 × 0020 ÷ 11003 ÷ # × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 00A0 × 0308 × 11003 ÷ # × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 00A0 × 0308 × 0020 ÷ 11003 ÷ # × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 00A0 × 1BC0 ÷ # × [0.3] NO-BREAK SPACE (GL) × [12.0] BATAK LETTER A (AS) ÷ [0.3]
+× 00A0 × 0020 ÷ 1BC0 ÷ # × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 00A0 × 0308 × 1BC0 ÷ # × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] BATAK LETTER A (AS) ÷ [0.3]
+× 00A0 × 0308 × 0020 ÷ 1BC0 ÷ # × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
× 00A0 × 2014 ÷ # × [0.3] NO-BREAK SPACE (GL) × [12.0] EM DASH (B2) ÷ [0.3]
× 00A0 × 0020 ÷ 2014 ÷ # × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
× 00A0 × 0308 × 2014 ÷ # × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] EM DASH (B2) ÷ [0.3]
@@ -1630,10 +2494,10 @@
× 00A0 × 0020 ÷ 002D ÷ # × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
× 00A0 × 0308 × 002D ÷ # × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] HYPHEN-MINUS (HY) ÷ [0.3]
× 00A0 × 0308 × 0020 ÷ 002D ÷ # × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 00A0 × 231A ÷ # × [0.3] NO-BREAK SPACE (GL) × [12.0] WATCH (ID) ÷ [0.3]
-× 00A0 × 0020 ÷ 231A ÷ # × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 00A0 × 0308 × 231A ÷ # × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] WATCH (ID) ÷ [0.3]
-× 00A0 × 0308 × 0020 ÷ 231A ÷ # × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 00A0 × 1B50 ÷ # × [0.3] NO-BREAK SPACE (GL) × [12.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 00A0 × 0020 ÷ 1B50 ÷ # × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 00A0 × 0308 × 1B50 ÷ # × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 00A0 × 0308 × 0020 ÷ 1B50 ÷ # × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
× 00A0 × 2024 ÷ # × [0.3] NO-BREAK SPACE (GL) × [12.0] ONE DOT LEADER (IN) ÷ [0.3]
× 00A0 × 0020 ÷ 2024 ÷ # × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
× 00A0 × 0308 × 2024 ÷ # × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] ONE DOT LEADER (IN) ÷ [0.3]
@@ -1694,6 +2558,14 @@
× 00A0 × 0020 × 002F ÷ # × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
× 00A0 × 0308 × 002F ÷ # × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] SOLIDUS (SY) ÷ [0.3]
× 00A0 × 0308 × 0020 × 002F ÷ # × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 00A0 × 1BF2 ÷ # × [0.3] NO-BREAK SPACE (GL) × [12.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 00A0 × 0020 ÷ 1BF2 ÷ # × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 00A0 × 0308 × 1BF2 ÷ # × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 00A0 × 0308 × 0020 ÷ 1BF2 ÷ # × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 00A0 × 1B44 ÷ # × [0.3] NO-BREAK SPACE (GL) × [12.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 00A0 × 0020 ÷ 1B44 ÷ # × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 00A0 × 0308 × 1B44 ÷ # × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 00A0 × 0308 × 0020 ÷ 1B44 ÷ # × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
× 00A0 × 2060 ÷ # × [0.3] NO-BREAK SPACE (GL) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 00A0 × 0020 × 2060 ÷ # × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 00A0 × 0308 × 2060 ÷ # × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
@@ -1714,6 +2586,14 @@
× 00A0 × 0020 ÷ 1F3FB ÷ # × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 00A0 × 0308 × 1F3FB ÷ # × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 00A0 × 0308 × 0020 ÷ 1F3FB ÷ # × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 00A0 × 00AB ÷ # × [0.3] NO-BREAK SPACE (GL) × [12.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 00A0 × 0020 ÷ 00AB ÷ # × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 00A0 × 0308 × 00AB ÷ # × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 00A0 × 0308 × 0020 ÷ 00AB ÷ # × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 00A0 × 00BB ÷ # × [0.3] NO-BREAK SPACE (GL) × [12.0] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 00A0 × 0020 × 00BB ÷ # × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 00A0 × 0308 × 00BB ÷ # × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 00A0 × 0308 × 0020 × 00BB ÷ # × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
× 00A0 × 0029 ÷ # × [0.3] NO-BREAK SPACE (GL) × [12.0] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 00A0 × 0020 × 0029 ÷ # × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 00A0 × 0308 × 0029 ÷ # × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
@@ -1746,10 +2626,22 @@
× 00A0 × 0020 ÷ 3041 ÷ # × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 00A0 × 0308 × 3041 ÷ # × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 00A0 × 0308 × 0020 ÷ 3041 ÷ # × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× AC00 ÷ 1B05 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× AC00 × 0020 ÷ 1B05 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× AC00 × 0308 ÷ 1B05 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× AC00 × 0308 × 0020 ÷ 1B05 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
× AC00 ÷ 0023 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
× AC00 × 0020 ÷ 0023 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
× AC00 × 0308 ÷ 0023 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
× AC00 × 0308 × 0020 ÷ 0023 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× AC00 ÷ 11003 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× AC00 × 0020 ÷ 11003 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× AC00 × 0308 ÷ 11003 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× AC00 × 0308 × 0020 ÷ 11003 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× AC00 ÷ 1BC0 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× AC00 × 0020 ÷ 1BC0 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× AC00 × 0308 ÷ 1BC0 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× AC00 × 0308 × 0020 ÷ 1BC0 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
× AC00 ÷ 2014 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) ÷ [999.0] EM DASH (B2) ÷ [0.3]
× AC00 × 0020 ÷ 2014 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
× AC00 × 0308 ÷ 2014 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
@@ -1802,10 +2694,10 @@
× AC00 × 0020 ÷ 002D ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
× AC00 × 0308 × 002D ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
× AC00 × 0308 × 0020 ÷ 002D ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× AC00 ÷ 231A ÷ # × [0.3] HANGUL SYLLABLE GA (H2) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× AC00 × 0020 ÷ 231A ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× AC00 × 0308 ÷ 231A ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× AC00 × 0308 × 0020 ÷ 231A ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× AC00 ÷ 1B50 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× AC00 × 0020 ÷ 1B50 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× AC00 × 0308 ÷ 1B50 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× AC00 × 0308 × 0020 ÷ 1B50 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
× AC00 × 2024 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
× AC00 × 0020 ÷ 2024 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
× AC00 × 0308 × 2024 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
@@ -1866,6 +2758,14 @@
× AC00 × 0020 × 002F ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
× AC00 × 0308 × 002F ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
× AC00 × 0308 × 0020 × 002F ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× AC00 ÷ 1BF2 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× AC00 × 0020 ÷ 1BF2 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× AC00 × 0308 ÷ 1BF2 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× AC00 × 0308 × 0020 ÷ 1BF2 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× AC00 ÷ 1B44 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× AC00 × 0020 ÷ 1B44 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× AC00 × 0308 ÷ 1B44 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× AC00 × 0308 × 0020 ÷ 1B44 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
× AC00 × 2060 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× AC00 × 0020 × 2060 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× AC00 × 0308 × 2060 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
@@ -1886,6 +2786,14 @@
× AC00 × 0020 ÷ 1F3FB ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× AC00 × 0308 ÷ 1F3FB ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× AC00 × 0308 × 0020 ÷ 1F3FB ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× AC00 × 00AB ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× AC00 × 0020 ÷ 00AB ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× AC00 × 0308 × 00AB ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× AC00 × 0308 × 0020 ÷ 00AB ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× AC00 × 00BB ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× AC00 × 0020 × 00BB ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× AC00 × 0308 × 00BB ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× AC00 × 0308 × 0020 × 00BB ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
× AC00 × 0029 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× AC00 × 0020 × 0029 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× AC00 × 0308 × 0029 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
@@ -1918,10 +2826,22 @@
× AC00 × 0020 ÷ 3041 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× AC00 × 0308 × 3041 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× AC00 × 0308 × 0020 ÷ 3041 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× AC01 ÷ 1B05 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× AC01 × 0020 ÷ 1B05 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× AC01 × 0308 ÷ 1B05 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× AC01 × 0308 × 0020 ÷ 1B05 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
× AC01 ÷ 0023 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
× AC01 × 0020 ÷ 0023 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
× AC01 × 0308 ÷ 0023 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
× AC01 × 0308 × 0020 ÷ 0023 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× AC01 ÷ 11003 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× AC01 × 0020 ÷ 11003 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× AC01 × 0308 ÷ 11003 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× AC01 × 0308 × 0020 ÷ 11003 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× AC01 ÷ 1BC0 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× AC01 × 0020 ÷ 1BC0 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× AC01 × 0308 ÷ 1BC0 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× AC01 × 0308 × 0020 ÷ 1BC0 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
× AC01 ÷ 2014 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) ÷ [999.0] EM DASH (B2) ÷ [0.3]
× AC01 × 0020 ÷ 2014 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
× AC01 × 0308 ÷ 2014 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
@@ -1974,10 +2894,10 @@
× AC01 × 0020 ÷ 002D ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
× AC01 × 0308 × 002D ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
× AC01 × 0308 × 0020 ÷ 002D ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× AC01 ÷ 231A ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× AC01 × 0020 ÷ 231A ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× AC01 × 0308 ÷ 231A ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× AC01 × 0308 × 0020 ÷ 231A ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× AC01 ÷ 1B50 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× AC01 × 0020 ÷ 1B50 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× AC01 × 0308 ÷ 1B50 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× AC01 × 0308 × 0020 ÷ 1B50 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
× AC01 × 2024 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
× AC01 × 0020 ÷ 2024 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
× AC01 × 0308 × 2024 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
@@ -2038,6 +2958,14 @@
× AC01 × 0020 × 002F ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
× AC01 × 0308 × 002F ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
× AC01 × 0308 × 0020 × 002F ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× AC01 ÷ 1BF2 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× AC01 × 0020 ÷ 1BF2 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× AC01 × 0308 ÷ 1BF2 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× AC01 × 0308 × 0020 ÷ 1BF2 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× AC01 ÷ 1B44 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× AC01 × 0020 ÷ 1B44 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× AC01 × 0308 ÷ 1B44 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× AC01 × 0308 × 0020 ÷ 1B44 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
× AC01 × 2060 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× AC01 × 0020 × 2060 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× AC01 × 0308 × 2060 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
@@ -2058,6 +2986,14 @@
× AC01 × 0020 ÷ 1F3FB ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× AC01 × 0308 ÷ 1F3FB ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× AC01 × 0308 × 0020 ÷ 1F3FB ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× AC01 × 00AB ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× AC01 × 0020 ÷ 00AB ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× AC01 × 0308 × 00AB ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× AC01 × 0308 × 0020 ÷ 00AB ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× AC01 × 00BB ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× AC01 × 0020 × 00BB ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× AC01 × 0308 × 00BB ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× AC01 × 0308 × 0020 × 00BB ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
× AC01 × 0029 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× AC01 × 0020 × 0029 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× AC01 × 0308 × 0029 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
@@ -2090,10 +3026,22 @@
× AC01 × 0020 ÷ 3041 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× AC01 × 0308 × 3041 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× AC01 × 0308 × 0020 ÷ 3041 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 05D0 ÷ 1B05 ÷ # × [0.3] HEBREW LETTER ALEF (HL) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 05D0 × 0020 ÷ 1B05 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 05D0 × 0308 ÷ 1B05 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 05D0 × 0308 × 0020 ÷ 1B05 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
× 05D0 × 0023 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
× 05D0 × 0020 ÷ 0023 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
× 05D0 × 0308 × 0023 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
× 05D0 × 0308 × 0020 ÷ 0023 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 05D0 ÷ 11003 ÷ # × [0.3] HEBREW LETTER ALEF (HL) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 05D0 × 0020 ÷ 11003 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 05D0 × 0308 ÷ 11003 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 05D0 × 0308 × 0020 ÷ 11003 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 05D0 ÷ 1BC0 ÷ # × [0.3] HEBREW LETTER ALEF (HL) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 05D0 × 0020 ÷ 1BC0 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 05D0 × 0308 ÷ 1BC0 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 05D0 × 0308 × 0020 ÷ 1BC0 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
× 05D0 ÷ 2014 ÷ # × [0.3] HEBREW LETTER ALEF (HL) ÷ [999.0] EM DASH (B2) ÷ [0.3]
× 05D0 × 0020 ÷ 2014 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
× 05D0 × 0308 ÷ 2014 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
@@ -2146,10 +3094,10 @@
× 05D0 × 0020 ÷ 002D ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
× 05D0 × 0308 × 002D ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
× 05D0 × 0308 × 0020 ÷ 002D ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 05D0 ÷ 231A ÷ # × [0.3] HEBREW LETTER ALEF (HL) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 05D0 × 0020 ÷ 231A ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 05D0 × 0308 ÷ 231A ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 05D0 × 0308 × 0020 ÷ 231A ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 05D0 ÷ 1B50 ÷ # × [0.3] HEBREW LETTER ALEF (HL) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 05D0 × 0020 ÷ 1B50 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 05D0 × 0308 ÷ 1B50 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 05D0 × 0308 × 0020 ÷ 1B50 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
× 05D0 × 2024 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
× 05D0 × 0020 ÷ 2024 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
× 05D0 × 0308 × 2024 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
@@ -2210,6 +3158,14 @@
× 05D0 × 0020 × 002F ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
× 05D0 × 0308 × 002F ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
× 05D0 × 0308 × 0020 × 002F ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 05D0 ÷ 1BF2 ÷ # × [0.3] HEBREW LETTER ALEF (HL) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 05D0 × 0020 ÷ 1BF2 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 05D0 × 0308 ÷ 1BF2 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 05D0 × 0308 × 0020 ÷ 1BF2 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 05D0 ÷ 1B44 ÷ # × [0.3] HEBREW LETTER ALEF (HL) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 05D0 × 0020 ÷ 1B44 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 05D0 × 0308 ÷ 1B44 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 05D0 × 0308 × 0020 ÷ 1B44 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
× 05D0 × 2060 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 05D0 × 0020 × 2060 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 05D0 × 0308 × 2060 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
@@ -2230,6 +3186,14 @@
× 05D0 × 0020 ÷ 1F3FB ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 05D0 × 0308 ÷ 1F3FB ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 05D0 × 0308 × 0020 ÷ 1F3FB ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 05D0 × 00AB ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 05D0 × 0020 ÷ 00AB ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 05D0 × 0308 × 00AB ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 05D0 × 0308 × 0020 ÷ 00AB ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 05D0 × 00BB ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 05D0 × 0020 × 00BB ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 05D0 × 0308 × 00BB ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 05D0 × 0308 × 0020 × 00BB ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
× 05D0 × 0029 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 05D0 × 0020 × 0029 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 05D0 × 0308 × 0029 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
@@ -2262,10 +3226,22 @@
× 05D0 × 0020 ÷ 3041 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 05D0 × 0308 × 3041 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 05D0 × 0308 × 0020 ÷ 3041 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 002D ÷ 1B05 ÷ # × [0.3] HYPHEN-MINUS (HY) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 002D × 0020 ÷ 1B05 ÷ # × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 002D × 0308 ÷ 1B05 ÷ # × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 002D × 0308 × 0020 ÷ 1B05 ÷ # × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
× 002D ÷ 0023 ÷ # × [0.3] HYPHEN-MINUS (HY) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
× 002D × 0020 ÷ 0023 ÷ # × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
× 002D × 0308 ÷ 0023 ÷ # × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
× 002D × 0308 × 0020 ÷ 0023 ÷ # × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 002D ÷ 11003 ÷ # × [0.3] HYPHEN-MINUS (HY) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 002D × 0020 ÷ 11003 ÷ # × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 002D × 0308 ÷ 11003 ÷ # × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 002D × 0308 × 0020 ÷ 11003 ÷ # × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 002D ÷ 1BC0 ÷ # × [0.3] HYPHEN-MINUS (HY) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 002D × 0020 ÷ 1BC0 ÷ # × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 002D × 0308 ÷ 1BC0 ÷ # × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 002D × 0308 × 0020 ÷ 1BC0 ÷ # × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
× 002D ÷ 2014 ÷ # × [0.3] HYPHEN-MINUS (HY) ÷ [999.0] EM DASH (B2) ÷ [0.3]
× 002D × 0020 ÷ 2014 ÷ # × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
× 002D × 0308 ÷ 2014 ÷ # × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
@@ -2318,10 +3294,10 @@
× 002D × 0020 ÷ 002D ÷ # × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
× 002D × 0308 × 002D ÷ # × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
× 002D × 0308 × 0020 ÷ 002D ÷ # × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 002D ÷ 231A ÷ # × [0.3] HYPHEN-MINUS (HY) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 002D × 0020 ÷ 231A ÷ # × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 002D × 0308 ÷ 231A ÷ # × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 002D × 0308 × 0020 ÷ 231A ÷ # × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 002D ÷ 1B50 ÷ # × [0.3] HYPHEN-MINUS (HY) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 002D × 0020 ÷ 1B50 ÷ # × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 002D × 0308 ÷ 1B50 ÷ # × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 002D × 0308 × 0020 ÷ 1B50 ÷ # × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
× 002D × 2024 ÷ # × [0.3] HYPHEN-MINUS (HY) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
× 002D × 0020 ÷ 2024 ÷ # × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
× 002D × 0308 × 2024 ÷ # × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
@@ -2382,6 +3358,14 @@
× 002D × 0020 × 002F ÷ # × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
× 002D × 0308 × 002F ÷ # × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
× 002D × 0308 × 0020 × 002F ÷ # × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 002D ÷ 1BF2 ÷ # × [0.3] HYPHEN-MINUS (HY) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 002D × 0020 ÷ 1BF2 ÷ # × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 002D × 0308 ÷ 1BF2 ÷ # × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 002D × 0308 × 0020 ÷ 1BF2 ÷ # × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 002D ÷ 1B44 ÷ # × [0.3] HYPHEN-MINUS (HY) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 002D × 0020 ÷ 1B44 ÷ # × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 002D × 0308 ÷ 1B44 ÷ # × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 002D × 0308 × 0020 ÷ 1B44 ÷ # × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
× 002D × 2060 ÷ # × [0.3] HYPHEN-MINUS (HY) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 002D × 0020 × 2060 ÷ # × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 002D × 0308 × 2060 ÷ # × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
@@ -2402,6 +3386,14 @@
× 002D × 0020 ÷ 1F3FB ÷ # × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 002D × 0308 ÷ 1F3FB ÷ # × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 002D × 0308 × 0020 ÷ 1F3FB ÷ # × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 002D × 00AB ÷ # × [0.3] HYPHEN-MINUS (HY) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 002D × 0020 ÷ 00AB ÷ # × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 002D × 0308 × 00AB ÷ # × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 002D × 0308 × 0020 ÷ 00AB ÷ # × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 002D × 00BB ÷ # × [0.3] HYPHEN-MINUS (HY) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 002D × 0020 × 00BB ÷ # × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 002D × 0308 × 00BB ÷ # × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 002D × 0308 × 0020 × 00BB ÷ # × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
× 002D × 0029 ÷ # × [0.3] HYPHEN-MINUS (HY) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 002D × 0020 × 0029 ÷ # × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 002D × 0308 × 0029 ÷ # × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
@@ -2434,182 +3426,222 @@
× 002D × 0020 ÷ 3041 ÷ # × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 002D × 0308 × 3041 ÷ # × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 002D × 0308 × 0020 ÷ 3041 ÷ # × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 231A ÷ 0023 ÷ # × [0.3] WATCH (ID) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
-× 231A × 0020 ÷ 0023 ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
-× 231A × 0308 ÷ 0023 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 0023 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
-× 231A ÷ 2014 ÷ # × [0.3] WATCH (ID) ÷ [999.0] EM DASH (B2) ÷ [0.3]
-× 231A × 0020 ÷ 2014 ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
-× 231A × 0308 ÷ 2014 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 2014 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
-× 231A × 0009 ÷ # × [0.3] WATCH (ID) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 231A × 0020 ÷ 0009 ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 231A × 0308 × 0009 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 0009 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 231A ÷ 00B4 ÷ # × [0.3] WATCH (ID) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 231A × 0020 ÷ 00B4 ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 231A × 0308 ÷ 00B4 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 00B4 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 231A × 000B ÷ # × [0.3] WATCH (ID) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 231A × 0020 × 000B ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 231A × 0308 × 000B ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 231A × 0308 × 0020 × 000B ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 231A ÷ FFFC ÷ # × [0.3] WATCH (ID) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 231A × 0020 ÷ FFFC ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 231A × 0308 ÷ FFFC ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ FFFC ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 231A × 007D ÷ # × [0.3] WATCH (ID) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 231A × 0020 × 007D ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 231A × 0308 × 007D ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 231A × 0308 × 0020 × 007D ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 231A × 000D ÷ # × [0.3] WATCH (ID) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 231A × 0020 × 000D ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 231A × 0308 × 000D ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 231A × 0308 × 0020 × 000D ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 231A × 0021 ÷ # × [0.3] WATCH (ID) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 231A × 0020 × 0021 ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 231A × 0308 × 0021 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 231A × 0308 × 0020 × 0021 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 231A × 00A0 ÷ # × [0.3] WATCH (ID) × [12.1] NO-BREAK SPACE (GL) ÷ [0.3]
-× 231A × 0020 ÷ 00A0 ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
-× 231A × 0308 × 00A0 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 00A0 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
-× 231A ÷ AC00 ÷ # × [0.3] WATCH (ID) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 231A × 0020 ÷ AC00 ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 231A × 0308 ÷ AC00 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ AC00 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 231A ÷ AC01 ÷ # × [0.3] WATCH (ID) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 231A × 0020 ÷ AC01 ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 231A × 0308 ÷ AC01 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ AC01 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 231A ÷ 05D0 ÷ # × [0.3] WATCH (ID) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 231A × 0020 ÷ 05D0 ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 231A × 0308 ÷ 05D0 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 05D0 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 231A × 002D ÷ # × [0.3] WATCH (ID) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
-× 231A × 0020 ÷ 002D ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 231A × 0308 × 002D ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 002D ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 231A ÷ 231A ÷ # × [0.3] WATCH (ID) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 231A × 0020 ÷ 231A ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 231A × 0308 ÷ 231A ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 231A ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 231A × 2024 ÷ # × [0.3] WATCH (ID) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 231A × 0020 ÷ 2024 ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 231A × 0308 × 2024 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 2024 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 231A × 002C ÷ # × [0.3] WATCH (ID) × [13.02] COMMA (IS) ÷ [0.3]
-× 231A × 0020 × 002C ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
-× 231A × 0308 × 002C ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] COMMA (IS) ÷ [0.3]
-× 231A × 0308 × 0020 × 002C ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
-× 231A ÷ 1100 ÷ # × [0.3] WATCH (ID) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 231A × 0020 ÷ 1100 ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 231A × 0308 ÷ 1100 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 1100 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 231A ÷ 11A8 ÷ # × [0.3] WATCH (ID) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 231A × 0020 ÷ 11A8 ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 231A × 0308 ÷ 11A8 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 11A8 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 231A ÷ 1160 ÷ # × [0.3] WATCH (ID) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 231A × 0020 ÷ 1160 ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 231A × 0308 ÷ 1160 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 1160 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 231A × 000A ÷ # × [0.3] WATCH (ID) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 231A × 0020 × 000A ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 231A × 0308 × 000A ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 231A × 0308 × 0020 × 000A ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 231A × 0085 ÷ # × [0.3] WATCH (ID) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 231A × 0020 × 0085 ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 231A × 0308 × 0085 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 231A × 0308 × 0020 × 0085 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 231A × 17D6 ÷ # × [0.3] WATCH (ID) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 231A × 0020 ÷ 17D6 ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 231A × 0308 × 17D6 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 17D6 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 231A ÷ 0030 ÷ # × [0.3] WATCH (ID) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
-× 231A × 0020 ÷ 0030 ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
-× 231A × 0308 ÷ 0030 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 0030 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
-× 231A ÷ 2329 ÷ # × [0.3] WATCH (ID) ÷ [999.0] LEFT-POINTING ANGLE BRACKET (OP) ÷ [0.3]
-× 231A × 0020 ÷ 2329 ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING ANGLE BRACKET (OP) ÷ [0.3]
-× 231A × 0308 ÷ 2329 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] LEFT-POINTING ANGLE BRACKET (OP) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 2329 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING ANGLE BRACKET (OP) ÷ [0.3]
-× 231A × 0025 ÷ # × [0.3] WATCH (ID) × [23.13] PERCENT SIGN (PO) ÷ [0.3]
-× 231A × 0020 ÷ 0025 ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
-× 231A × 0308 × 0025 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [23.13] PERCENT SIGN (PO) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 0025 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
-× 231A ÷ 0024 ÷ # × [0.3] WATCH (ID) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 231A × 0020 ÷ 0024 ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 231A × 0308 ÷ 0024 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 0024 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 231A × 0022 ÷ # × [0.3] WATCH (ID) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
-× 231A × 0020 ÷ 0022 ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
-× 231A × 0308 × 0022 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 0022 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
-× 231A × 0020 ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [0.3]
-× 231A × 0020 × 0020 ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
-× 231A × 0308 × 0020 × 0020 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
-× 231A × 002F ÷ # × [0.3] WATCH (ID) × [13.02] SOLIDUS (SY) ÷ [0.3]
-× 231A × 0020 × 002F ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
-× 231A × 0308 × 002F ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
-× 231A × 0308 × 0020 × 002F ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
-× 231A × 2060 ÷ # × [0.3] WATCH (ID) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 231A × 0020 × 2060 ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 231A × 0308 × 2060 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 231A × 0308 × 0020 × 2060 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 231A × 200B ÷ # × [0.3] WATCH (ID) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 231A × 0020 × 200B ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 231A × 0308 × 200B ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 231A × 0308 × 0020 × 200B ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 231A ÷ 1F1E6 ÷ # × [0.3] WATCH (ID) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 231A × 0020 ÷ 1F1E6 ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 231A × 0308 ÷ 1F1E6 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 1F1E6 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 231A ÷ 261D ÷ # × [0.3] WATCH (ID) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
-× 231A × 0020 ÷ 261D ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
-× 231A × 0308 ÷ 261D ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 261D ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
-× 231A ÷ 1F3FB ÷ # × [0.3] WATCH (ID) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
-× 231A × 0020 ÷ 1F3FB ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
-× 231A × 0308 ÷ 1F3FB ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 1F3FB ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
-× 231A × 0029 ÷ # × [0.3] WATCH (ID) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
-× 231A × 0020 × 0029 ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
-× 231A × 0308 × 0029 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
-× 231A × 0308 × 0020 × 0029 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
-× 231A ÷ 0028 ÷ # × [0.3] WATCH (ID) ÷ [999.0] LEFT PARENTHESIS (OP_OP30) ÷ [0.3]
-× 231A × 0020 ÷ 0028 ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP_OP30) ÷ [0.3]
-× 231A × 0308 ÷ 0028 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] LEFT PARENTHESIS (OP_OP30) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 0028 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP_OP30) ÷ [0.3]
-× 231A × 0001 ÷ # × [0.3] WATCH (ID) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
-× 231A × 0020 ÷ 0001 ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
-× 231A × 0308 × 0001 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 0001 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
-× 231A × 200D ÷ # × [0.3] WATCH (ID) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
-× 231A × 0020 ÷ 200D ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
-× 231A × 0308 × 200D ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 200D ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
-× 231A ÷ 00A7 ÷ # × [0.3] WATCH (ID) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 231A × 0020 ÷ 00A7 ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 231A × 0308 ÷ 00A7 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 00A7 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 231A ÷ 50005 ÷ # × [0.3] WATCH (ID) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 231A × 0020 ÷ 50005 ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 231A × 0308 ÷ 50005 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 50005 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 231A ÷ 0E01 ÷ # × [0.3] WATCH (ID) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 231A × 0020 ÷ 0E01 ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 231A × 0308 ÷ 0E01 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 0E01 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 231A × 3041 ÷ # × [0.3] WATCH (ID) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 231A × 0020 ÷ 3041 ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 231A × 0308 × 3041 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 3041 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 1B50 ÷ 1B05 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 1B50 × 0020 ÷ 1B05 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 1B50 × 0308 ÷ 1B05 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 1B50 × 0308 × 0020 ÷ 1B05 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 1B50 ÷ 0023 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
+× 1B50 × 0020 ÷ 0023 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 1B50 × 0308 ÷ 0023 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
+× 1B50 × 0308 × 0020 ÷ 0023 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 1B50 ÷ 11003 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 1B50 × 0020 ÷ 11003 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 1B50 × 0308 ÷ 11003 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 1B50 × 0308 × 0020 ÷ 11003 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 1B50 ÷ 1BC0 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 1B50 × 0020 ÷ 1BC0 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 1B50 × 0308 ÷ 1BC0 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 1B50 × 0308 × 0020 ÷ 1BC0 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 1B50 ÷ 2014 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 1B50 × 0020 ÷ 2014 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 1B50 × 0308 ÷ 2014 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 1B50 × 0308 × 0020 ÷ 2014 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 1B50 × 0009 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 1B50 × 0020 ÷ 0009 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 1B50 × 0308 × 0009 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 1B50 × 0308 × 0020 ÷ 0009 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 1B50 ÷ 00B4 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 1B50 × 0020 ÷ 00B4 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 1B50 × 0308 ÷ 00B4 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 1B50 × 0308 × 0020 ÷ 00B4 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 1B50 × 000B ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 1B50 × 0020 × 000B ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 1B50 × 0308 × 000B ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 1B50 × 0308 × 0020 × 000B ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 1B50 ÷ FFFC ÷ # × [0.3] BALINESE DIGIT ZERO (ID) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 1B50 × 0020 ÷ FFFC ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 1B50 × 0308 ÷ FFFC ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 1B50 × 0308 × 0020 ÷ FFFC ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 1B50 × 007D ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 1B50 × 0020 × 007D ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 1B50 × 0308 × 007D ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 1B50 × 0308 × 0020 × 007D ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 1B50 × 000D ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 1B50 × 0020 × 000D ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 1B50 × 0308 × 000D ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 1B50 × 0308 × 0020 × 000D ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 1B50 × 0021 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 1B50 × 0020 × 0021 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 1B50 × 0308 × 0021 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 1B50 × 0308 × 0020 × 0021 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 1B50 × 00A0 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [12.1] NO-BREAK SPACE (GL) ÷ [0.3]
+× 1B50 × 0020 ÷ 00A0 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 1B50 × 0308 × 00A0 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
+× 1B50 × 0308 × 0020 ÷ 00A0 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 1B50 ÷ AC00 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 1B50 × 0020 ÷ AC00 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 1B50 × 0308 ÷ AC00 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 1B50 × 0308 × 0020 ÷ AC00 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 1B50 ÷ AC01 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 1B50 × 0020 ÷ AC01 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 1B50 × 0308 ÷ AC01 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 1B50 × 0308 × 0020 ÷ AC01 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 1B50 ÷ 05D0 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 1B50 × 0020 ÷ 05D0 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 1B50 × 0308 ÷ 05D0 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 1B50 × 0308 × 0020 ÷ 05D0 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 1B50 × 002D ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 1B50 × 0020 ÷ 002D ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 1B50 × 0308 × 002D ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 1B50 × 0308 × 0020 ÷ 002D ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 1B50 ÷ 1B50 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 1B50 × 0020 ÷ 1B50 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 1B50 × 0308 ÷ 1B50 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 1B50 × 0308 × 0020 ÷ 1B50 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 1B50 × 2024 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 1B50 × 0020 ÷ 2024 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 1B50 × 0308 × 2024 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 1B50 × 0308 × 0020 ÷ 2024 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 1B50 × 002C ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [13.02] COMMA (IS) ÷ [0.3]
+× 1B50 × 0020 × 002C ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 1B50 × 0308 × 002C ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] COMMA (IS) ÷ [0.3]
+× 1B50 × 0308 × 0020 × 002C ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 1B50 ÷ 1100 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 1B50 × 0020 ÷ 1100 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 1B50 × 0308 ÷ 1100 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 1B50 × 0308 × 0020 ÷ 1100 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 1B50 ÷ 11A8 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 1B50 × 0020 ÷ 11A8 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 1B50 × 0308 ÷ 11A8 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 1B50 × 0308 × 0020 ÷ 11A8 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 1B50 ÷ 1160 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 1B50 × 0020 ÷ 1160 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 1B50 × 0308 ÷ 1160 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 1B50 × 0308 × 0020 ÷ 1160 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 1B50 × 000A ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 1B50 × 0020 × 000A ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 1B50 × 0308 × 000A ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 1B50 × 0308 × 0020 × 000A ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 1B50 × 0085 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 1B50 × 0020 × 0085 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 1B50 × 0308 × 0085 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 1B50 × 0308 × 0020 × 0085 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 1B50 × 17D6 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 1B50 × 0020 ÷ 17D6 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 1B50 × 0308 × 17D6 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 1B50 × 0308 × 0020 ÷ 17D6 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 1B50 ÷ 0030 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
+× 1B50 × 0020 ÷ 0030 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 1B50 × 0308 ÷ 0030 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
+× 1B50 × 0308 × 0020 ÷ 0030 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 1B50 ÷ 2329 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) ÷ [999.0] LEFT-POINTING ANGLE BRACKET (OP) ÷ [0.3]
+× 1B50 × 0020 ÷ 2329 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING ANGLE BRACKET (OP) ÷ [0.3]
+× 1B50 × 0308 ÷ 2329 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] LEFT-POINTING ANGLE BRACKET (OP) ÷ [0.3]
+× 1B50 × 0308 × 0020 ÷ 2329 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING ANGLE BRACKET (OP) ÷ [0.3]
+× 1B50 × 0025 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [23.13] PERCENT SIGN (PO) ÷ [0.3]
+× 1B50 × 0020 ÷ 0025 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
+× 1B50 × 0308 × 0025 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [23.13] PERCENT SIGN (PO) ÷ [0.3]
+× 1B50 × 0308 × 0020 ÷ 0025 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
+× 1B50 ÷ 0024 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 1B50 × 0020 ÷ 0024 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 1B50 × 0308 ÷ 0024 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 1B50 × 0308 × 0020 ÷ 0024 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 1B50 × 0022 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 1B50 × 0020 ÷ 0022 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 1B50 × 0308 × 0022 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 1B50 × 0308 × 0020 ÷ 0022 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 1B50 × 0020 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) ÷ [0.3]
+× 1B50 × 0020 × 0020 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 1B50 × 0308 × 0020 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 1B50 × 0308 × 0020 × 0020 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 1B50 × 002F ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 1B50 × 0020 × 002F ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 1B50 × 0308 × 002F ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
+× 1B50 × 0308 × 0020 × 002F ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 1B50 ÷ 1BF2 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 1B50 × 0020 ÷ 1BF2 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 1B50 × 0308 ÷ 1BF2 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 1B50 × 0308 × 0020 ÷ 1BF2 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 1B50 ÷ 1B44 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 1B50 × 0020 ÷ 1B44 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 1B50 × 0308 ÷ 1B44 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 1B50 × 0308 × 0020 ÷ 1B44 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 1B50 × 2060 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 1B50 × 0020 × 2060 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 1B50 × 0308 × 2060 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 1B50 × 0308 × 0020 × 2060 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 1B50 × 200B ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 1B50 × 0020 × 200B ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 1B50 × 0308 × 200B ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 1B50 × 0308 × 0020 × 200B ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 1B50 ÷ 1F1E6 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 1B50 × 0020 ÷ 1F1E6 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 1B50 × 0308 ÷ 1F1E6 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 1B50 × 0308 × 0020 ÷ 1F1E6 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 1B50 ÷ 261D ÷ # × [0.3] BALINESE DIGIT ZERO (ID) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 1B50 × 0020 ÷ 261D ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 1B50 × 0308 ÷ 261D ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 1B50 × 0308 × 0020 ÷ 261D ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 1B50 ÷ 1F3FB ÷ # × [0.3] BALINESE DIGIT ZERO (ID) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 1B50 × 0020 ÷ 1F3FB ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 1B50 × 0308 ÷ 1F3FB ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 1B50 × 0308 × 0020 ÷ 1F3FB ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 1B50 × 00AB ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 1B50 × 0020 ÷ 00AB ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 1B50 × 0308 × 00AB ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 1B50 × 0308 × 0020 ÷ 00AB ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 1B50 × 00BB ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 1B50 × 0020 × 00BB ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 1B50 × 0308 × 00BB ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 1B50 × 0308 × 0020 × 00BB ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 1B50 × 0029 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
+× 1B50 × 0020 × 0029 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
+× 1B50 × 0308 × 0029 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
+× 1B50 × 0308 × 0020 × 0029 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
+× 1B50 ÷ 0028 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) ÷ [999.0] LEFT PARENTHESIS (OP_OP30) ÷ [0.3]
+× 1B50 × 0020 ÷ 0028 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP_OP30) ÷ [0.3]
+× 1B50 × 0308 ÷ 0028 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] LEFT PARENTHESIS (OP_OP30) ÷ [0.3]
+× 1B50 × 0308 × 0020 ÷ 0028 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP_OP30) ÷ [0.3]
+× 1B50 × 0001 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 1B50 × 0020 ÷ 0001 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 1B50 × 0308 × 0001 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 1B50 × 0308 × 0020 ÷ 0001 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 1B50 × 200D ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 1B50 × 0020 ÷ 200D ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 1B50 × 0308 × 200D ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 1B50 × 0308 × 0020 ÷ 200D ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 1B50 ÷ 00A7 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 1B50 × 0020 ÷ 00A7 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 1B50 × 0308 ÷ 00A7 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 1B50 × 0308 × 0020 ÷ 00A7 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 1B50 ÷ 50005 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 1B50 × 0020 ÷ 50005 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 1B50 × 0308 ÷ 50005 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 1B50 × 0308 × 0020 ÷ 50005 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 1B50 ÷ 0E01 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 1B50 × 0020 ÷ 0E01 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 1B50 × 0308 ÷ 0E01 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 1B50 × 0308 × 0020 ÷ 0E01 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 1B50 × 3041 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 1B50 × 0020 ÷ 3041 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 1B50 × 0308 × 3041 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 1B50 × 0308 × 0020 ÷ 3041 ÷ # × [0.3] BALINESE DIGIT ZERO (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 2024 ÷ 1B05 ÷ # × [0.3] ONE DOT LEADER (IN) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 2024 × 0020 ÷ 1B05 ÷ # × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 2024 × 0308 ÷ 1B05 ÷ # × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 2024 × 0308 × 0020 ÷ 1B05 ÷ # × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
× 2024 ÷ 0023 ÷ # × [0.3] ONE DOT LEADER (IN) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
× 2024 × 0020 ÷ 0023 ÷ # × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
× 2024 × 0308 ÷ 0023 ÷ # × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
× 2024 × 0308 × 0020 ÷ 0023 ÷ # × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 2024 ÷ 11003 ÷ # × [0.3] ONE DOT LEADER (IN) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 2024 × 0020 ÷ 11003 ÷ # × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 2024 × 0308 ÷ 11003 ÷ # × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 2024 × 0308 × 0020 ÷ 11003 ÷ # × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 2024 ÷ 1BC0 ÷ # × [0.3] ONE DOT LEADER (IN) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 2024 × 0020 ÷ 1BC0 ÷ # × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 2024 × 0308 ÷ 1BC0 ÷ # × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 2024 × 0308 × 0020 ÷ 1BC0 ÷ # × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
× 2024 ÷ 2014 ÷ # × [0.3] ONE DOT LEADER (IN) ÷ [999.0] EM DASH (B2) ÷ [0.3]
× 2024 × 0020 ÷ 2014 ÷ # × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
× 2024 × 0308 ÷ 2014 ÷ # × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
@@ -2662,10 +3694,10 @@
× 2024 × 0020 ÷ 002D ÷ # × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
× 2024 × 0308 × 002D ÷ # × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
× 2024 × 0308 × 0020 ÷ 002D ÷ # × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 2024 ÷ 231A ÷ # × [0.3] ONE DOT LEADER (IN) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 2024 × 0020 ÷ 231A ÷ # × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 2024 × 0308 ÷ 231A ÷ # × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 2024 × 0308 × 0020 ÷ 231A ÷ # × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 2024 ÷ 1B50 ÷ # × [0.3] ONE DOT LEADER (IN) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 2024 × 0020 ÷ 1B50 ÷ # × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 2024 × 0308 ÷ 1B50 ÷ # × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 2024 × 0308 × 0020 ÷ 1B50 ÷ # × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
× 2024 × 2024 ÷ # × [0.3] ONE DOT LEADER (IN) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
× 2024 × 0020 ÷ 2024 ÷ # × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
× 2024 × 0308 × 2024 ÷ # × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
@@ -2726,6 +3758,14 @@
× 2024 × 0020 × 002F ÷ # × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
× 2024 × 0308 × 002F ÷ # × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
× 2024 × 0308 × 0020 × 002F ÷ # × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 2024 ÷ 1BF2 ÷ # × [0.3] ONE DOT LEADER (IN) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 2024 × 0020 ÷ 1BF2 ÷ # × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 2024 × 0308 ÷ 1BF2 ÷ # × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 2024 × 0308 × 0020 ÷ 1BF2 ÷ # × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 2024 ÷ 1B44 ÷ # × [0.3] ONE DOT LEADER (IN) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 2024 × 0020 ÷ 1B44 ÷ # × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 2024 × 0308 ÷ 1B44 ÷ # × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 2024 × 0308 × 0020 ÷ 1B44 ÷ # × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
× 2024 × 2060 ÷ # × [0.3] ONE DOT LEADER (IN) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 2024 × 0020 × 2060 ÷ # × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 2024 × 0308 × 2060 ÷ # × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
@@ -2746,6 +3786,14 @@
× 2024 × 0020 ÷ 1F3FB ÷ # × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 2024 × 0308 ÷ 1F3FB ÷ # × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 2024 × 0308 × 0020 ÷ 1F3FB ÷ # × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 2024 × 00AB ÷ # × [0.3] ONE DOT LEADER (IN) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 2024 × 0020 ÷ 00AB ÷ # × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 2024 × 0308 × 00AB ÷ # × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 2024 × 0308 × 0020 ÷ 00AB ÷ # × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 2024 × 00BB ÷ # × [0.3] ONE DOT LEADER (IN) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 2024 × 0020 × 00BB ÷ # × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 2024 × 0308 × 00BB ÷ # × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 2024 × 0308 × 0020 × 00BB ÷ # × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
× 2024 × 0029 ÷ # × [0.3] ONE DOT LEADER (IN) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 2024 × 0020 × 0029 ÷ # × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 2024 × 0308 × 0029 ÷ # × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
@@ -2778,10 +3826,22 @@
× 2024 × 0020 ÷ 3041 ÷ # × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 2024 × 0308 × 3041 ÷ # × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 2024 × 0308 × 0020 ÷ 3041 ÷ # × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 002C ÷ 1B05 ÷ # × [0.3] COMMA (IS) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 002C × 0020 ÷ 1B05 ÷ # × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 002C × 0308 ÷ 1B05 ÷ # × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 002C × 0308 × 0020 ÷ 1B05 ÷ # × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
× 002C × 0023 ÷ # × [0.3] COMMA (IS) × [29.0] NUMBER SIGN (AL) ÷ [0.3]
× 002C × 0020 ÷ 0023 ÷ # × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
× 002C × 0308 × 0023 ÷ # × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [29.0] NUMBER SIGN (AL) ÷ [0.3]
× 002C × 0308 × 0020 ÷ 0023 ÷ # × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 002C ÷ 11003 ÷ # × [0.3] COMMA (IS) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 002C × 0020 ÷ 11003 ÷ # × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 002C × 0308 ÷ 11003 ÷ # × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 002C × 0308 × 0020 ÷ 11003 ÷ # × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 002C ÷ 1BC0 ÷ # × [0.3] COMMA (IS) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 002C × 0020 ÷ 1BC0 ÷ # × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 002C × 0308 ÷ 1BC0 ÷ # × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 002C × 0308 × 0020 ÷ 1BC0 ÷ # × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
× 002C ÷ 2014 ÷ # × [0.3] COMMA (IS) ÷ [999.0] EM DASH (B2) ÷ [0.3]
× 002C × 0020 ÷ 2014 ÷ # × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
× 002C × 0308 ÷ 2014 ÷ # × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
@@ -2834,10 +3894,10 @@
× 002C × 0020 ÷ 002D ÷ # × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
× 002C × 0308 × 002D ÷ # × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
× 002C × 0308 × 0020 ÷ 002D ÷ # × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 002C ÷ 231A ÷ # × [0.3] COMMA (IS) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 002C × 0020 ÷ 231A ÷ # × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 002C × 0308 ÷ 231A ÷ # × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 002C × 0308 × 0020 ÷ 231A ÷ # × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 002C ÷ 1B50 ÷ # × [0.3] COMMA (IS) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 002C × 0020 ÷ 1B50 ÷ # × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 002C × 0308 ÷ 1B50 ÷ # × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 002C × 0308 × 0020 ÷ 1B50 ÷ # × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
× 002C × 2024 ÷ # × [0.3] COMMA (IS) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
× 002C × 0020 ÷ 2024 ÷ # × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
× 002C × 0308 × 2024 ÷ # × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
@@ -2898,6 +3958,14 @@
× 002C × 0020 × 002F ÷ # × [0.3] COMMA (IS) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
× 002C × 0308 × 002F ÷ # × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
× 002C × 0308 × 0020 × 002F ÷ # × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 002C ÷ 1BF2 ÷ # × [0.3] COMMA (IS) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 002C × 0020 ÷ 1BF2 ÷ # × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 002C × 0308 ÷ 1BF2 ÷ # × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 002C × 0308 × 0020 ÷ 1BF2 ÷ # × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 002C ÷ 1B44 ÷ # × [0.3] COMMA (IS) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 002C × 0020 ÷ 1B44 ÷ # × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 002C × 0308 ÷ 1B44 ÷ # × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 002C × 0308 × 0020 ÷ 1B44 ÷ # × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
× 002C × 2060 ÷ # × [0.3] COMMA (IS) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 002C × 0020 × 2060 ÷ # × [0.3] COMMA (IS) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 002C × 0308 × 2060 ÷ # × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
@@ -2918,6 +3986,14 @@
× 002C × 0020 ÷ 1F3FB ÷ # × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 002C × 0308 ÷ 1F3FB ÷ # × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 002C × 0308 × 0020 ÷ 1F3FB ÷ # × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 002C × 00AB ÷ # × [0.3] COMMA (IS) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 002C × 0020 ÷ 00AB ÷ # × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 002C × 0308 × 00AB ÷ # × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 002C × 0308 × 0020 ÷ 00AB ÷ # × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 002C × 00BB ÷ # × [0.3] COMMA (IS) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 002C × 0020 × 00BB ÷ # × [0.3] COMMA (IS) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 002C × 0308 × 00BB ÷ # × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 002C × 0308 × 0020 × 00BB ÷ # × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
× 002C × 0029 ÷ # × [0.3] COMMA (IS) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 002C × 0020 × 0029 ÷ # × [0.3] COMMA (IS) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 002C × 0308 × 0029 ÷ # × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
@@ -2950,10 +4026,22 @@
× 002C × 0020 ÷ 3041 ÷ # × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 002C × 0308 × 3041 ÷ # × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 002C × 0308 × 0020 ÷ 3041 ÷ # × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 1100 ÷ 1B05 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 1100 × 0020 ÷ 1B05 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 1100 × 0308 ÷ 1B05 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 1100 × 0308 × 0020 ÷ 1B05 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
× 1100 ÷ 0023 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
× 1100 × 0020 ÷ 0023 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
× 1100 × 0308 ÷ 0023 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
× 1100 × 0308 × 0020 ÷ 0023 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 1100 ÷ 11003 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 1100 × 0020 ÷ 11003 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 1100 × 0308 ÷ 11003 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 1100 × 0308 × 0020 ÷ 11003 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 1100 ÷ 1BC0 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 1100 × 0020 ÷ 1BC0 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 1100 × 0308 ÷ 1BC0 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 1100 × 0308 × 0020 ÷ 1BC0 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
× 1100 ÷ 2014 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) ÷ [999.0] EM DASH (B2) ÷ [0.3]
× 1100 × 0020 ÷ 2014 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
× 1100 × 0308 ÷ 2014 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
@@ -3006,10 +4094,10 @@
× 1100 × 0020 ÷ 002D ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
× 1100 × 0308 × 002D ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
× 1100 × 0308 × 0020 ÷ 002D ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 1100 ÷ 231A ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 1100 × 0020 ÷ 231A ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 1100 × 0308 ÷ 231A ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 1100 × 0308 × 0020 ÷ 231A ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 1100 ÷ 1B50 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 1100 × 0020 ÷ 1B50 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 1100 × 0308 ÷ 1B50 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 1100 × 0308 × 0020 ÷ 1B50 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
× 1100 × 2024 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
× 1100 × 0020 ÷ 2024 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
× 1100 × 0308 × 2024 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
@@ -3070,6 +4158,14 @@
× 1100 × 0020 × 002F ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
× 1100 × 0308 × 002F ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
× 1100 × 0308 × 0020 × 002F ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 1100 ÷ 1BF2 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 1100 × 0020 ÷ 1BF2 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 1100 × 0308 ÷ 1BF2 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 1100 × 0308 × 0020 ÷ 1BF2 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 1100 ÷ 1B44 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 1100 × 0020 ÷ 1B44 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 1100 × 0308 ÷ 1B44 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 1100 × 0308 × 0020 ÷ 1B44 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
× 1100 × 2060 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 1100 × 0020 × 2060 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 1100 × 0308 × 2060 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
@@ -3090,6 +4186,14 @@
× 1100 × 0020 ÷ 1F3FB ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 1100 × 0308 ÷ 1F3FB ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 1100 × 0308 × 0020 ÷ 1F3FB ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 1100 × 00AB ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 1100 × 0020 ÷ 00AB ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 1100 × 0308 × 00AB ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 1100 × 0308 × 0020 ÷ 00AB ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 1100 × 00BB ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 1100 × 0020 × 00BB ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 1100 × 0308 × 00BB ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 1100 × 0308 × 0020 × 00BB ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
× 1100 × 0029 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 1100 × 0020 × 0029 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 1100 × 0308 × 0029 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
@@ -3122,10 +4226,22 @@
× 1100 × 0020 ÷ 3041 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 1100 × 0308 × 3041 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 1100 × 0308 × 0020 ÷ 3041 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 11A8 ÷ 1B05 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 11A8 × 0020 ÷ 1B05 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 11A8 × 0308 ÷ 1B05 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 11A8 × 0308 × 0020 ÷ 1B05 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
× 11A8 ÷ 0023 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
× 11A8 × 0020 ÷ 0023 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
× 11A8 × 0308 ÷ 0023 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
× 11A8 × 0308 × 0020 ÷ 0023 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 11A8 ÷ 11003 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 11A8 × 0020 ÷ 11003 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 11A8 × 0308 ÷ 11003 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 11A8 × 0308 × 0020 ÷ 11003 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 11A8 ÷ 1BC0 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 11A8 × 0020 ÷ 1BC0 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 11A8 × 0308 ÷ 1BC0 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 11A8 × 0308 × 0020 ÷ 1BC0 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
× 11A8 ÷ 2014 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) ÷ [999.0] EM DASH (B2) ÷ [0.3]
× 11A8 × 0020 ÷ 2014 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
× 11A8 × 0308 ÷ 2014 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
@@ -3178,10 +4294,10 @@
× 11A8 × 0020 ÷ 002D ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
× 11A8 × 0308 × 002D ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
× 11A8 × 0308 × 0020 ÷ 002D ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 11A8 ÷ 231A ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 11A8 × 0020 ÷ 231A ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 11A8 × 0308 ÷ 231A ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 11A8 × 0308 × 0020 ÷ 231A ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 11A8 ÷ 1B50 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 11A8 × 0020 ÷ 1B50 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 11A8 × 0308 ÷ 1B50 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 11A8 × 0308 × 0020 ÷ 1B50 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
× 11A8 × 2024 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
× 11A8 × 0020 ÷ 2024 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
× 11A8 × 0308 × 2024 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
@@ -3242,6 +4358,14 @@
× 11A8 × 0020 × 002F ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
× 11A8 × 0308 × 002F ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
× 11A8 × 0308 × 0020 × 002F ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 11A8 ÷ 1BF2 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 11A8 × 0020 ÷ 1BF2 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 11A8 × 0308 ÷ 1BF2 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 11A8 × 0308 × 0020 ÷ 1BF2 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 11A8 ÷ 1B44 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 11A8 × 0020 ÷ 1B44 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 11A8 × 0308 ÷ 1B44 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 11A8 × 0308 × 0020 ÷ 1B44 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
× 11A8 × 2060 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 11A8 × 0020 × 2060 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 11A8 × 0308 × 2060 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
@@ -3262,6 +4386,14 @@
× 11A8 × 0020 ÷ 1F3FB ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 11A8 × 0308 ÷ 1F3FB ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 11A8 × 0308 × 0020 ÷ 1F3FB ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 11A8 × 00AB ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 11A8 × 0020 ÷ 00AB ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 11A8 × 0308 × 00AB ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 11A8 × 0308 × 0020 ÷ 00AB ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 11A8 × 00BB ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 11A8 × 0020 × 00BB ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 11A8 × 0308 × 00BB ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 11A8 × 0308 × 0020 × 00BB ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
× 11A8 × 0029 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 11A8 × 0020 × 0029 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 11A8 × 0308 × 0029 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
@@ -3294,10 +4426,22 @@
× 11A8 × 0020 ÷ 3041 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 11A8 × 0308 × 3041 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 11A8 × 0308 × 0020 ÷ 3041 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 1160 ÷ 1B05 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 1160 × 0020 ÷ 1B05 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 1160 × 0308 ÷ 1B05 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 1160 × 0308 × 0020 ÷ 1B05 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
× 1160 ÷ 0023 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
× 1160 × 0020 ÷ 0023 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
× 1160 × 0308 ÷ 0023 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
× 1160 × 0308 × 0020 ÷ 0023 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 1160 ÷ 11003 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 1160 × 0020 ÷ 11003 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 1160 × 0308 ÷ 11003 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 1160 × 0308 × 0020 ÷ 11003 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 1160 ÷ 1BC0 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 1160 × 0020 ÷ 1BC0 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 1160 × 0308 ÷ 1BC0 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 1160 × 0308 × 0020 ÷ 1BC0 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
× 1160 ÷ 2014 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) ÷ [999.0] EM DASH (B2) ÷ [0.3]
× 1160 × 0020 ÷ 2014 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
× 1160 × 0308 ÷ 2014 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
@@ -3350,10 +4494,10 @@
× 1160 × 0020 ÷ 002D ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
× 1160 × 0308 × 002D ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
× 1160 × 0308 × 0020 ÷ 002D ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 1160 ÷ 231A ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 1160 × 0020 ÷ 231A ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 1160 × 0308 ÷ 231A ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 1160 × 0308 × 0020 ÷ 231A ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 1160 ÷ 1B50 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 1160 × 0020 ÷ 1B50 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 1160 × 0308 ÷ 1B50 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 1160 × 0308 × 0020 ÷ 1B50 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
× 1160 × 2024 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
× 1160 × 0020 ÷ 2024 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
× 1160 × 0308 × 2024 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
@@ -3414,6 +4558,14 @@
× 1160 × 0020 × 002F ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
× 1160 × 0308 × 002F ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
× 1160 × 0308 × 0020 × 002F ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 1160 ÷ 1BF2 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 1160 × 0020 ÷ 1BF2 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 1160 × 0308 ÷ 1BF2 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 1160 × 0308 × 0020 ÷ 1BF2 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 1160 ÷ 1B44 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 1160 × 0020 ÷ 1B44 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 1160 × 0308 ÷ 1B44 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 1160 × 0308 × 0020 ÷ 1B44 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
× 1160 × 2060 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 1160 × 0020 × 2060 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 1160 × 0308 × 2060 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
@@ -3434,6 +4586,14 @@
× 1160 × 0020 ÷ 1F3FB ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 1160 × 0308 ÷ 1F3FB ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 1160 × 0308 × 0020 ÷ 1F3FB ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 1160 × 00AB ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 1160 × 0020 ÷ 00AB ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 1160 × 0308 × 00AB ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 1160 × 0308 × 0020 ÷ 00AB ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 1160 × 00BB ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 1160 × 0020 × 00BB ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 1160 × 0308 × 00BB ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 1160 × 0308 × 0020 × 00BB ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
× 1160 × 0029 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 1160 × 0020 × 0029 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 1160 × 0308 × 0029 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
@@ -3466,10 +4626,22 @@
× 1160 × 0020 ÷ 3041 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 1160 × 0308 × 3041 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 1160 × 0308 × 0020 ÷ 3041 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 000A ÷ 1B05 ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 000A ÷ 0020 ÷ 1B05 ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 000A ÷ 0308 ÷ 1B05 ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 000A ÷ 0308 × 0020 ÷ 1B05 ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
× 000A ÷ 0023 ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] NUMBER SIGN (AL) ÷ [0.3]
× 000A ÷ 0020 ÷ 0023 ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
× 000A ÷ 0308 × 0023 ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
× 000A ÷ 0308 × 0020 ÷ 0023 ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 000A ÷ 11003 ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 000A ÷ 0020 ÷ 11003 ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 000A ÷ 0308 ÷ 11003 ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 000A ÷ 0308 × 0020 ÷ 11003 ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 000A ÷ 1BC0 ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] BATAK LETTER A (AS) ÷ [0.3]
+× 000A ÷ 0020 ÷ 1BC0 ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 000A ÷ 0308 ÷ 1BC0 ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 000A ÷ 0308 × 0020 ÷ 1BC0 ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
× 000A ÷ 2014 ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] EM DASH (B2) ÷ [0.3]
× 000A ÷ 0020 ÷ 2014 ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
× 000A ÷ 0308 ÷ 2014 ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
@@ -3522,10 +4694,10 @@
× 000A ÷ 0020 ÷ 002D ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
× 000A ÷ 0308 × 002D ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
× 000A ÷ 0308 × 0020 ÷ 002D ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 000A ÷ 231A ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] WATCH (ID) ÷ [0.3]
-× 000A ÷ 0020 ÷ 231A ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 000A ÷ 0308 ÷ 231A ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 000A ÷ 0308 × 0020 ÷ 231A ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 000A ÷ 1B50 ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 000A ÷ 0020 ÷ 1B50 ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 000A ÷ 0308 ÷ 1B50 ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 000A ÷ 0308 × 0020 ÷ 1B50 ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
× 000A ÷ 2024 ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] ONE DOT LEADER (IN) ÷ [0.3]
× 000A ÷ 0020 ÷ 2024 ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
× 000A ÷ 0308 × 2024 ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
@@ -3586,6 +4758,14 @@
× 000A ÷ 0020 × 002F ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
× 000A ÷ 0308 × 002F ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
× 000A ÷ 0308 × 0020 × 002F ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 000A ÷ 1BF2 ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] BATAK PANGOLAT (VF) ÷ [0.3]
+× 000A ÷ 0020 ÷ 1BF2 ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 000A ÷ 0308 ÷ 1BF2 ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 000A ÷ 0308 × 0020 ÷ 1BF2 ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 000A ÷ 1B44 ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 000A ÷ 0020 ÷ 1B44 ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 000A ÷ 0308 ÷ 1B44 ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 000A ÷ 0308 × 0020 ÷ 1B44 ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
× 000A ÷ 2060 ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] WORD JOINER (WJ) ÷ [0.3]
× 000A ÷ 0020 × 2060 ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 000A ÷ 0308 × 2060 ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
@@ -3606,6 +4786,14 @@
× 000A ÷ 0020 ÷ 1F3FB ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 000A ÷ 0308 ÷ 1F3FB ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 000A ÷ 0308 × 0020 ÷ 1F3FB ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 000A ÷ 00AB ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 000A ÷ 0020 ÷ 00AB ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 000A ÷ 0308 × 00AB ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 000A ÷ 0308 × 0020 ÷ 00AB ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 000A ÷ 00BB ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 000A ÷ 0020 × 00BB ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 000A ÷ 0308 × 00BB ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 000A ÷ 0308 × 0020 × 00BB ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
× 000A ÷ 0029 ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 000A ÷ 0020 × 0029 ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 000A ÷ 0308 × 0029 ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
@@ -3638,10 +4826,22 @@
× 000A ÷ 0020 ÷ 3041 ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 000A ÷ 0308 × 3041 ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 000A ÷ 0308 × 0020 ÷ 3041 ÷ # × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 0085 ÷ 1B05 ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 0085 ÷ 0020 ÷ 1B05 ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 0085 ÷ 0308 ÷ 1B05 ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 ÷ 1B05 ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
× 0085 ÷ 0023 ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] NUMBER SIGN (AL) ÷ [0.3]
× 0085 ÷ 0020 ÷ 0023 ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
× 0085 ÷ 0308 × 0023 ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
× 0085 ÷ 0308 × 0020 ÷ 0023 ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 0085 ÷ 11003 ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0085 ÷ 0020 ÷ 11003 ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0085 ÷ 0308 ÷ 11003 ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 ÷ 11003 ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0085 ÷ 1BC0 ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] BATAK LETTER A (AS) ÷ [0.3]
+× 0085 ÷ 0020 ÷ 1BC0 ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 0085 ÷ 0308 ÷ 1BC0 ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 ÷ 1BC0 ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
× 0085 ÷ 2014 ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] EM DASH (B2) ÷ [0.3]
× 0085 ÷ 0020 ÷ 2014 ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
× 0085 ÷ 0308 ÷ 2014 ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
@@ -3694,10 +4894,10 @@
× 0085 ÷ 0020 ÷ 002D ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
× 0085 ÷ 0308 × 002D ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
× 0085 ÷ 0308 × 0020 ÷ 002D ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 0085 ÷ 231A ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] WATCH (ID) ÷ [0.3]
-× 0085 ÷ 0020 ÷ 231A ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 0085 ÷ 0308 ÷ 231A ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 0085 ÷ 0308 × 0020 ÷ 231A ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 0085 ÷ 1B50 ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 0085 ÷ 0020 ÷ 1B50 ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 0085 ÷ 0308 ÷ 1B50 ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 ÷ 1B50 ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
× 0085 ÷ 2024 ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] ONE DOT LEADER (IN) ÷ [0.3]
× 0085 ÷ 0020 ÷ 2024 ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
× 0085 ÷ 0308 × 2024 ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
@@ -3758,6 +4958,14 @@
× 0085 ÷ 0020 × 002F ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
× 0085 ÷ 0308 × 002F ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
× 0085 ÷ 0308 × 0020 × 002F ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 0085 ÷ 1BF2 ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0085 ÷ 0020 ÷ 1BF2 ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0085 ÷ 0308 ÷ 1BF2 ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 ÷ 1BF2 ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0085 ÷ 1B44 ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 0085 ÷ 0020 ÷ 1B44 ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 0085 ÷ 0308 ÷ 1B44 ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 ÷ 1B44 ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
× 0085 ÷ 2060 ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] WORD JOINER (WJ) ÷ [0.3]
× 0085 ÷ 0020 × 2060 ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 0085 ÷ 0308 × 2060 ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
@@ -3778,6 +4986,14 @@
× 0085 ÷ 0020 ÷ 1F3FB ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 0085 ÷ 0308 ÷ 1F3FB ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 0085 ÷ 0308 × 0020 ÷ 1F3FB ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0085 ÷ 00AB ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0085 ÷ 0020 ÷ 00AB ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0085 ÷ 0308 × 00AB ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 ÷ 00AB ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0085 ÷ 00BB ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 0085 ÷ 0020 × 00BB ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 0085 ÷ 0308 × 00BB ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 × 00BB ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
× 0085 ÷ 0029 ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 0085 ÷ 0020 × 0029 ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 0085 ÷ 0308 × 0029 ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
@@ -3810,10 +5026,22 @@
× 0085 ÷ 0020 ÷ 3041 ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 0085 ÷ 0308 × 3041 ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 0085 ÷ 0308 × 0020 ÷ 3041 ÷ # × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 17D6 ÷ 1B05 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 17D6 × 0020 ÷ 1B05 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 17D6 × 0308 ÷ 1B05 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 17D6 × 0308 × 0020 ÷ 1B05 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
× 17D6 ÷ 0023 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
× 17D6 × 0020 ÷ 0023 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
× 17D6 × 0308 ÷ 0023 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
× 17D6 × 0308 × 0020 ÷ 0023 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 17D6 ÷ 11003 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 17D6 × 0020 ÷ 11003 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 17D6 × 0308 ÷ 11003 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 17D6 × 0308 × 0020 ÷ 11003 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 17D6 ÷ 1BC0 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 17D6 × 0020 ÷ 1BC0 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 17D6 × 0308 ÷ 1BC0 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 17D6 × 0308 × 0020 ÷ 1BC0 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
× 17D6 ÷ 2014 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [999.0] EM DASH (B2) ÷ [0.3]
× 17D6 × 0020 ÷ 2014 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
× 17D6 × 0308 ÷ 2014 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
@@ -3866,10 +5094,10 @@
× 17D6 × 0020 ÷ 002D ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
× 17D6 × 0308 × 002D ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
× 17D6 × 0308 × 0020 ÷ 002D ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 17D6 ÷ 231A ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 17D6 × 0020 ÷ 231A ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 17D6 × 0308 ÷ 231A ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 17D6 × 0308 × 0020 ÷ 231A ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 17D6 ÷ 1B50 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 17D6 × 0020 ÷ 1B50 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 17D6 × 0308 ÷ 1B50 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 17D6 × 0308 × 0020 ÷ 1B50 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
× 17D6 × 2024 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
× 17D6 × 0020 ÷ 2024 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
× 17D6 × 0308 × 2024 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
@@ -3930,6 +5158,14 @@
× 17D6 × 0020 × 002F ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
× 17D6 × 0308 × 002F ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
× 17D6 × 0308 × 0020 × 002F ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 17D6 ÷ 1BF2 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 17D6 × 0020 ÷ 1BF2 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 17D6 × 0308 ÷ 1BF2 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 17D6 × 0308 × 0020 ÷ 1BF2 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 17D6 ÷ 1B44 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 17D6 × 0020 ÷ 1B44 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 17D6 × 0308 ÷ 1B44 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 17D6 × 0308 × 0020 ÷ 1B44 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
× 17D6 × 2060 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 17D6 × 0020 × 2060 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 17D6 × 0308 × 2060 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
@@ -3950,6 +5186,14 @@
× 17D6 × 0020 ÷ 1F3FB ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 17D6 × 0308 ÷ 1F3FB ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 17D6 × 0308 × 0020 ÷ 1F3FB ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 17D6 × 00AB ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 17D6 × 0020 ÷ 00AB ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 17D6 × 0308 × 00AB ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 17D6 × 0308 × 0020 ÷ 00AB ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 17D6 × 00BB ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 17D6 × 0020 × 00BB ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 17D6 × 0308 × 00BB ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 17D6 × 0308 × 0020 × 00BB ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
× 17D6 × 0029 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 17D6 × 0020 × 0029 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 17D6 × 0308 × 0029 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
@@ -3982,10 +5226,22 @@
× 17D6 × 0020 ÷ 3041 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 17D6 × 0308 × 3041 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 17D6 × 0308 × 0020 ÷ 3041 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 0030 ÷ 1B05 ÷ # × [0.3] DIGIT ZERO (NU) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 0030 × 0020 ÷ 1B05 ÷ # × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 0030 × 0308 ÷ 1B05 ÷ # × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 0030 × 0308 × 0020 ÷ 1B05 ÷ # × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
× 0030 × 0023 ÷ # × [0.3] DIGIT ZERO (NU) × [23.03] NUMBER SIGN (AL) ÷ [0.3]
× 0030 × 0020 ÷ 0023 ÷ # × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
× 0030 × 0308 × 0023 ÷ # × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [23.03] NUMBER SIGN (AL) ÷ [0.3]
× 0030 × 0308 × 0020 ÷ 0023 ÷ # × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 0030 ÷ 11003 ÷ # × [0.3] DIGIT ZERO (NU) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0030 × 0020 ÷ 11003 ÷ # × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0030 × 0308 ÷ 11003 ÷ # × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0030 × 0308 × 0020 ÷ 11003 ÷ # × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0030 ÷ 1BC0 ÷ # × [0.3] DIGIT ZERO (NU) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 0030 × 0020 ÷ 1BC0 ÷ # × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 0030 × 0308 ÷ 1BC0 ÷ # × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 0030 × 0308 × 0020 ÷ 1BC0 ÷ # × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
× 0030 ÷ 2014 ÷ # × [0.3] DIGIT ZERO (NU) ÷ [999.0] EM DASH (B2) ÷ [0.3]
× 0030 × 0020 ÷ 2014 ÷ # × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
× 0030 × 0308 ÷ 2014 ÷ # × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
@@ -4038,10 +5294,10 @@
× 0030 × 0020 ÷ 002D ÷ # × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
× 0030 × 0308 × 002D ÷ # × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
× 0030 × 0308 × 0020 ÷ 002D ÷ # × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 0030 ÷ 231A ÷ # × [0.3] DIGIT ZERO (NU) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 0030 × 0020 ÷ 231A ÷ # × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 0030 × 0308 ÷ 231A ÷ # × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 0030 × 0308 × 0020 ÷ 231A ÷ # × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 0030 ÷ 1B50 ÷ # × [0.3] DIGIT ZERO (NU) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 0030 × 0020 ÷ 1B50 ÷ # × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 0030 × 0308 ÷ 1B50 ÷ # × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 0030 × 0308 × 0020 ÷ 1B50 ÷ # × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
× 0030 × 2024 ÷ # × [0.3] DIGIT ZERO (NU) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
× 0030 × 0020 ÷ 2024 ÷ # × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
× 0030 × 0308 × 2024 ÷ # × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
@@ -4102,6 +5358,14 @@
× 0030 × 0020 × 002F ÷ # × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
× 0030 × 0308 × 002F ÷ # × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [25.03] SOLIDUS (SY) ÷ [0.3]
× 0030 × 0308 × 0020 × 002F ÷ # × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 0030 ÷ 1BF2 ÷ # × [0.3] DIGIT ZERO (NU) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0030 × 0020 ÷ 1BF2 ÷ # × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0030 × 0308 ÷ 1BF2 ÷ # × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0030 × 0308 × 0020 ÷ 1BF2 ÷ # × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0030 ÷ 1B44 ÷ # × [0.3] DIGIT ZERO (NU) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 0030 × 0020 ÷ 1B44 ÷ # × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 0030 × 0308 ÷ 1B44 ÷ # × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 0030 × 0308 × 0020 ÷ 1B44 ÷ # × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
× 0030 × 2060 ÷ # × [0.3] DIGIT ZERO (NU) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 0030 × 0020 × 2060 ÷ # × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 0030 × 0308 × 2060 ÷ # × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
@@ -4122,6 +5386,14 @@
× 0030 × 0020 ÷ 1F3FB ÷ # × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 0030 × 0308 ÷ 1F3FB ÷ # × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 0030 × 0308 × 0020 ÷ 1F3FB ÷ # × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0030 × 00AB ÷ # × [0.3] DIGIT ZERO (NU) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0030 × 0020 ÷ 00AB ÷ # × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0030 × 0308 × 00AB ÷ # × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0030 × 0308 × 0020 ÷ 00AB ÷ # × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0030 × 00BB ÷ # × [0.3] DIGIT ZERO (NU) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 0030 × 0020 × 00BB ÷ # × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 0030 × 0308 × 00BB ÷ # × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 0030 × 0308 × 0020 × 00BB ÷ # × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
× 0030 × 0029 ÷ # × [0.3] DIGIT ZERO (NU) × [25.04] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 0030 × 0020 × 0029 ÷ # × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 0030 × 0308 × 0029 ÷ # × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [25.04] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
@@ -4154,10 +5426,22 @@
× 0030 × 0020 ÷ 3041 ÷ # × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 0030 × 0308 × 3041 ÷ # × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 0030 × 0308 × 0020 ÷ 3041 ÷ # × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 2329 × 1B05 ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [14.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 2329 × 0020 × 1B05 ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [7.01] SPACE (SP) × [14.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 2329 × 0308 × 1B05 ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 2329 × 0308 × 0020 × 1B05 ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
× 2329 × 0023 ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [14.0] NUMBER SIGN (AL) ÷ [0.3]
× 2329 × 0020 × 0023 ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [7.01] SPACE (SP) × [14.0] NUMBER SIGN (AL) ÷ [0.3]
× 2329 × 0308 × 0023 ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] NUMBER SIGN (AL) ÷ [0.3]
× 2329 × 0308 × 0020 × 0023 ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] NUMBER SIGN (AL) ÷ [0.3]
+× 2329 × 11003 ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [14.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 2329 × 0020 × 11003 ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [7.01] SPACE (SP) × [14.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 2329 × 0308 × 11003 ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 2329 × 0308 × 0020 × 11003 ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 2329 × 1BC0 ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [14.0] BATAK LETTER A (AS) ÷ [0.3]
+× 2329 × 0020 × 1BC0 ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [7.01] SPACE (SP) × [14.0] BATAK LETTER A (AS) ÷ [0.3]
+× 2329 × 0308 × 1BC0 ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] BATAK LETTER A (AS) ÷ [0.3]
+× 2329 × 0308 × 0020 × 1BC0 ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] BATAK LETTER A (AS) ÷ [0.3]
× 2329 × 2014 ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [14.0] EM DASH (B2) ÷ [0.3]
× 2329 × 0020 × 2014 ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [7.01] SPACE (SP) × [14.0] EM DASH (B2) ÷ [0.3]
× 2329 × 0308 × 2014 ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] EM DASH (B2) ÷ [0.3]
@@ -4210,10 +5494,10 @@
× 2329 × 0020 × 002D ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [7.01] SPACE (SP) × [14.0] HYPHEN-MINUS (HY) ÷ [0.3]
× 2329 × 0308 × 002D ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] HYPHEN-MINUS (HY) ÷ [0.3]
× 2329 × 0308 × 0020 × 002D ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 2329 × 231A ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [14.0] WATCH (ID) ÷ [0.3]
-× 2329 × 0020 × 231A ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [7.01] SPACE (SP) × [14.0] WATCH (ID) ÷ [0.3]
-× 2329 × 0308 × 231A ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] WATCH (ID) ÷ [0.3]
-× 2329 × 0308 × 0020 × 231A ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] WATCH (ID) ÷ [0.3]
+× 2329 × 1B50 ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [14.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 2329 × 0020 × 1B50 ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [7.01] SPACE (SP) × [14.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 2329 × 0308 × 1B50 ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 2329 × 0308 × 0020 × 1B50 ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
× 2329 × 2024 ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [14.0] ONE DOT LEADER (IN) ÷ [0.3]
× 2329 × 0020 × 2024 ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [7.01] SPACE (SP) × [14.0] ONE DOT LEADER (IN) ÷ [0.3]
× 2329 × 0308 × 2024 ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] ONE DOT LEADER (IN) ÷ [0.3]
@@ -4274,6 +5558,14 @@
× 2329 × 0020 × 002F ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
× 2329 × 0308 × 002F ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
× 2329 × 0308 × 0020 × 002F ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 2329 × 1BF2 ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [14.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 2329 × 0020 × 1BF2 ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [7.01] SPACE (SP) × [14.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 2329 × 0308 × 1BF2 ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 2329 × 0308 × 0020 × 1BF2 ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 2329 × 1B44 ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [14.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 2329 × 0020 × 1B44 ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [7.01] SPACE (SP) × [14.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 2329 × 0308 × 1B44 ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 2329 × 0308 × 0020 × 1B44 ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
× 2329 × 2060 ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 2329 × 0020 × 2060 ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 2329 × 0308 × 2060 ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
@@ -4294,6 +5586,14 @@
× 2329 × 0020 × 1F3FB ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [7.01] SPACE (SP) × [14.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 2329 × 0308 × 1F3FB ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 2329 × 0308 × 0020 × 1F3FB ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 2329 × 00AB ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [14.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 2329 × 0020 × 00AB ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [7.01] SPACE (SP) × [14.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 2329 × 0308 × 00AB ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 2329 × 0308 × 0020 × 00AB ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 2329 × 00BB ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [14.0] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 2329 × 0020 × 00BB ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [7.01] SPACE (SP) × [14.0] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 2329 × 0308 × 00BB ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 2329 × 0308 × 0020 × 00BB ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
× 2329 × 0029 ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 2329 × 0020 × 0029 ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 2329 × 0308 × 0029 ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
@@ -4326,10 +5626,22 @@
× 2329 × 0020 × 3041 ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [7.01] SPACE (SP) × [14.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 2329 × 0308 × 3041 ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 2329 × 0308 × 0020 × 3041 ÷ # × [0.3] LEFT-POINTING ANGLE BRACKET (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 0025 ÷ 1B05 ÷ # × [0.3] PERCENT SIGN (PO) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 0025 × 0020 ÷ 1B05 ÷ # × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 0025 × 0308 ÷ 1B05 ÷ # × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 0025 × 0308 × 0020 ÷ 1B05 ÷ # × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
× 0025 × 0023 ÷ # × [0.3] PERCENT SIGN (PO) × [24.02] NUMBER SIGN (AL) ÷ [0.3]
× 0025 × 0020 ÷ 0023 ÷ # × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
× 0025 × 0308 × 0023 ÷ # × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [24.02] NUMBER SIGN (AL) ÷ [0.3]
× 0025 × 0308 × 0020 ÷ 0023 ÷ # × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 0025 ÷ 11003 ÷ # × [0.3] PERCENT SIGN (PO) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0025 × 0020 ÷ 11003 ÷ # × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0025 × 0308 ÷ 11003 ÷ # × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0025 × 0308 × 0020 ÷ 11003 ÷ # × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0025 ÷ 1BC0 ÷ # × [0.3] PERCENT SIGN (PO) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 0025 × 0020 ÷ 1BC0 ÷ # × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 0025 × 0308 ÷ 1BC0 ÷ # × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 0025 × 0308 × 0020 ÷ 1BC0 ÷ # × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
× 0025 ÷ 2014 ÷ # × [0.3] PERCENT SIGN (PO) ÷ [999.0] EM DASH (B2) ÷ [0.3]
× 0025 × 0020 ÷ 2014 ÷ # × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
× 0025 × 0308 ÷ 2014 ÷ # × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
@@ -4382,10 +5694,10 @@
× 0025 × 0020 ÷ 002D ÷ # × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
× 0025 × 0308 × 002D ÷ # × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
× 0025 × 0308 × 0020 ÷ 002D ÷ # × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 0025 ÷ 231A ÷ # × [0.3] PERCENT SIGN (PO) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 0025 × 0020 ÷ 231A ÷ # × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 0025 × 0308 ÷ 231A ÷ # × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 0025 × 0308 × 0020 ÷ 231A ÷ # × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 0025 ÷ 1B50 ÷ # × [0.3] PERCENT SIGN (PO) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 0025 × 0020 ÷ 1B50 ÷ # × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 0025 × 0308 ÷ 1B50 ÷ # × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 0025 × 0308 × 0020 ÷ 1B50 ÷ # × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
× 0025 × 2024 ÷ # × [0.3] PERCENT SIGN (PO) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
× 0025 × 0020 ÷ 2024 ÷ # × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
× 0025 × 0308 × 2024 ÷ # × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
@@ -4446,6 +5758,14 @@
× 0025 × 0020 × 002F ÷ # × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
× 0025 × 0308 × 002F ÷ # × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
× 0025 × 0308 × 0020 × 002F ÷ # × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 0025 ÷ 1BF2 ÷ # × [0.3] PERCENT SIGN (PO) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0025 × 0020 ÷ 1BF2 ÷ # × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0025 × 0308 ÷ 1BF2 ÷ # × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0025 × 0308 × 0020 ÷ 1BF2 ÷ # × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0025 ÷ 1B44 ÷ # × [0.3] PERCENT SIGN (PO) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 0025 × 0020 ÷ 1B44 ÷ # × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 0025 × 0308 ÷ 1B44 ÷ # × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 0025 × 0308 × 0020 ÷ 1B44 ÷ # × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
× 0025 × 2060 ÷ # × [0.3] PERCENT SIGN (PO) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 0025 × 0020 × 2060 ÷ # × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 0025 × 0308 × 2060 ÷ # × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
@@ -4466,6 +5786,14 @@
× 0025 × 0020 ÷ 1F3FB ÷ # × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 0025 × 0308 ÷ 1F3FB ÷ # × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 0025 × 0308 × 0020 ÷ 1F3FB ÷ # × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0025 × 00AB ÷ # × [0.3] PERCENT SIGN (PO) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0025 × 0020 ÷ 00AB ÷ # × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0025 × 0308 × 00AB ÷ # × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0025 × 0308 × 0020 ÷ 00AB ÷ # × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0025 × 00BB ÷ # × [0.3] PERCENT SIGN (PO) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 0025 × 0020 × 00BB ÷ # × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 0025 × 0308 × 00BB ÷ # × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 0025 × 0308 × 0020 × 00BB ÷ # × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
× 0025 × 0029 ÷ # × [0.3] PERCENT SIGN (PO) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 0025 × 0020 × 0029 ÷ # × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 0025 × 0308 × 0029 ÷ # × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
@@ -4498,10 +5826,22 @@
× 0025 × 0020 ÷ 3041 ÷ # × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 0025 × 0308 × 3041 ÷ # × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 0025 × 0308 × 0020 ÷ 3041 ÷ # × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 0024 ÷ 1B05 ÷ # × [0.3] DOLLAR SIGN (PR) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 0024 × 0020 ÷ 1B05 ÷ # × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 0024 × 0308 ÷ 1B05 ÷ # × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 0024 × 0308 × 0020 ÷ 1B05 ÷ # × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
× 0024 × 0023 ÷ # × [0.3] DOLLAR SIGN (PR) × [24.02] NUMBER SIGN (AL) ÷ [0.3]
× 0024 × 0020 ÷ 0023 ÷ # × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
× 0024 × 0308 × 0023 ÷ # × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [24.02] NUMBER SIGN (AL) ÷ [0.3]
× 0024 × 0308 × 0020 ÷ 0023 ÷ # × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 0024 ÷ 11003 ÷ # × [0.3] DOLLAR SIGN (PR) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0024 × 0020 ÷ 11003 ÷ # × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0024 × 0308 ÷ 11003 ÷ # × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0024 × 0308 × 0020 ÷ 11003 ÷ # × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0024 ÷ 1BC0 ÷ # × [0.3] DOLLAR SIGN (PR) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 0024 × 0020 ÷ 1BC0 ÷ # × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 0024 × 0308 ÷ 1BC0 ÷ # × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 0024 × 0308 × 0020 ÷ 1BC0 ÷ # × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
× 0024 ÷ 2014 ÷ # × [0.3] DOLLAR SIGN (PR) ÷ [999.0] EM DASH (B2) ÷ [0.3]
× 0024 × 0020 ÷ 2014 ÷ # × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
× 0024 × 0308 ÷ 2014 ÷ # × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
@@ -4554,10 +5894,10 @@
× 0024 × 0020 ÷ 002D ÷ # × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
× 0024 × 0308 × 002D ÷ # × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
× 0024 × 0308 × 0020 ÷ 002D ÷ # × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 0024 × 231A ÷ # × [0.3] DOLLAR SIGN (PR) × [23.12] WATCH (ID) ÷ [0.3]
-× 0024 × 0020 ÷ 231A ÷ # × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 0024 × 0308 × 231A ÷ # × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [23.12] WATCH (ID) ÷ [0.3]
-× 0024 × 0308 × 0020 ÷ 231A ÷ # × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 0024 × 1B50 ÷ # × [0.3] DOLLAR SIGN (PR) × [23.12] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 0024 × 0020 ÷ 1B50 ÷ # × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 0024 × 0308 × 1B50 ÷ # × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [23.12] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 0024 × 0308 × 0020 ÷ 1B50 ÷ # × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
× 0024 × 2024 ÷ # × [0.3] DOLLAR SIGN (PR) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
× 0024 × 0020 ÷ 2024 ÷ # × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
× 0024 × 0308 × 2024 ÷ # × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
@@ -4618,6 +5958,14 @@
× 0024 × 0020 × 002F ÷ # × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
× 0024 × 0308 × 002F ÷ # × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
× 0024 × 0308 × 0020 × 002F ÷ # × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 0024 ÷ 1BF2 ÷ # × [0.3] DOLLAR SIGN (PR) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0024 × 0020 ÷ 1BF2 ÷ # × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0024 × 0308 ÷ 1BF2 ÷ # × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0024 × 0308 × 0020 ÷ 1BF2 ÷ # × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0024 ÷ 1B44 ÷ # × [0.3] DOLLAR SIGN (PR) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 0024 × 0020 ÷ 1B44 ÷ # × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 0024 × 0308 ÷ 1B44 ÷ # × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 0024 × 0308 × 0020 ÷ 1B44 ÷ # × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
× 0024 × 2060 ÷ # × [0.3] DOLLAR SIGN (PR) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 0024 × 0020 × 2060 ÷ # × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 0024 × 0308 × 2060 ÷ # × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
@@ -4638,6 +5986,14 @@
× 0024 × 0020 ÷ 1F3FB ÷ # × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 0024 × 0308 × 1F3FB ÷ # × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [23.12] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 0024 × 0308 × 0020 ÷ 1F3FB ÷ # × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0024 × 00AB ÷ # × [0.3] DOLLAR SIGN (PR) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0024 × 0020 ÷ 00AB ÷ # × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0024 × 0308 × 00AB ÷ # × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0024 × 0308 × 0020 ÷ 00AB ÷ # × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0024 × 00BB ÷ # × [0.3] DOLLAR SIGN (PR) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 0024 × 0020 × 00BB ÷ # × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 0024 × 0308 × 00BB ÷ # × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 0024 × 0308 × 0020 × 00BB ÷ # × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
× 0024 × 0029 ÷ # × [0.3] DOLLAR SIGN (PR) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 0024 × 0020 × 0029 ÷ # × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 0024 × 0308 × 0029 ÷ # × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
@@ -4670,10 +6026,22 @@
× 0024 × 0020 ÷ 3041 ÷ # × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 0024 × 0308 × 3041 ÷ # × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 0024 × 0308 × 0020 ÷ 3041 ÷ # × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 0022 × 1B05 ÷ # × [0.3] QUOTATION MARK (QU) × [19.02] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 0022 × 0020 ÷ 1B05 ÷ # × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 0022 × 0308 × 1B05 ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 0022 × 0308 × 0020 ÷ 1B05 ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
× 0022 × 0023 ÷ # × [0.3] QUOTATION MARK (QU) × [19.02] NUMBER SIGN (AL) ÷ [0.3]
× 0022 × 0020 ÷ 0023 ÷ # × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
× 0022 × 0308 × 0023 ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] NUMBER SIGN (AL) ÷ [0.3]
× 0022 × 0308 × 0020 ÷ 0023 ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 0022 × 11003 ÷ # × [0.3] QUOTATION MARK (QU) × [19.02] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0022 × 0020 ÷ 11003 ÷ # × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0022 × 0308 × 11003 ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0022 × 0308 × 0020 ÷ 11003 ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0022 × 1BC0 ÷ # × [0.3] QUOTATION MARK (QU) × [19.02] BATAK LETTER A (AS) ÷ [0.3]
+× 0022 × 0020 ÷ 1BC0 ÷ # × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 0022 × 0308 × 1BC0 ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] BATAK LETTER A (AS) ÷ [0.3]
+× 0022 × 0308 × 0020 ÷ 1BC0 ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
× 0022 × 2014 ÷ # × [0.3] QUOTATION MARK (QU) × [19.02] EM DASH (B2) ÷ [0.3]
× 0022 × 0020 ÷ 2014 ÷ # × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
× 0022 × 0308 × 2014 ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] EM DASH (B2) ÷ [0.3]
@@ -4726,10 +6094,10 @@
× 0022 × 0020 ÷ 002D ÷ # × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
× 0022 × 0308 × 002D ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] HYPHEN-MINUS (HY) ÷ [0.3]
× 0022 × 0308 × 0020 ÷ 002D ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 0022 × 231A ÷ # × [0.3] QUOTATION MARK (QU) × [19.02] WATCH (ID) ÷ [0.3]
-× 0022 × 0020 ÷ 231A ÷ # × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 0022 × 0308 × 231A ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] WATCH (ID) ÷ [0.3]
-× 0022 × 0308 × 0020 ÷ 231A ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 0022 × 1B50 ÷ # × [0.3] QUOTATION MARK (QU) × [19.02] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 0022 × 0020 ÷ 1B50 ÷ # × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 0022 × 0308 × 1B50 ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 0022 × 0308 × 0020 ÷ 1B50 ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
× 0022 × 2024 ÷ # × [0.3] QUOTATION MARK (QU) × [19.02] ONE DOT LEADER (IN) ÷ [0.3]
× 0022 × 0020 ÷ 2024 ÷ # × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
× 0022 × 0308 × 2024 ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] ONE DOT LEADER (IN) ÷ [0.3]
@@ -4766,10 +6134,10 @@
× 0022 × 0020 ÷ 0030 ÷ # × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
× 0022 × 0308 × 0030 ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] DIGIT ZERO (NU) ÷ [0.3]
× 0022 × 0308 × 0020 ÷ 0030 ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
-× 0022 × 2329 ÷ # × [0.3] QUOTATION MARK (QU) × [15.0] LEFT-POINTING ANGLE BRACKET (OP) ÷ [0.3]
-× 0022 × 0020 × 2329 ÷ # × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) × [15.0] LEFT-POINTING ANGLE BRACKET (OP) ÷ [0.3]
-× 0022 × 0308 × 2329 ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.0] LEFT-POINTING ANGLE BRACKET (OP) ÷ [0.3]
-× 0022 × 0308 × 0020 × 2329 ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.0] LEFT-POINTING ANGLE BRACKET (OP) ÷ [0.3]
+× 0022 × 2329 ÷ # × [0.3] QUOTATION MARK (QU) × [19.02] LEFT-POINTING ANGLE BRACKET (OP) ÷ [0.3]
+× 0022 × 0020 ÷ 2329 ÷ # × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING ANGLE BRACKET (OP) ÷ [0.3]
+× 0022 × 0308 × 2329 ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] LEFT-POINTING ANGLE BRACKET (OP) ÷ [0.3]
+× 0022 × 0308 × 0020 ÷ 2329 ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING ANGLE BRACKET (OP) ÷ [0.3]
× 0022 × 0025 ÷ # × [0.3] QUOTATION MARK (QU) × [19.02] PERCENT SIGN (PO) ÷ [0.3]
× 0022 × 0020 ÷ 0025 ÷ # × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
× 0022 × 0308 × 0025 ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] PERCENT SIGN (PO) ÷ [0.3]
@@ -4790,6 +6158,14 @@
× 0022 × 0020 × 002F ÷ # × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
× 0022 × 0308 × 002F ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
× 0022 × 0308 × 0020 × 002F ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 0022 × 1BF2 ÷ # × [0.3] QUOTATION MARK (QU) × [19.02] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0022 × 0020 ÷ 1BF2 ÷ # × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0022 × 0308 × 1BF2 ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0022 × 0308 × 0020 ÷ 1BF2 ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0022 × 1B44 ÷ # × [0.3] QUOTATION MARK (QU) × [19.02] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 0022 × 0020 ÷ 1B44 ÷ # × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 0022 × 0308 × 1B44 ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 0022 × 0308 × 0020 ÷ 1B44 ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
× 0022 × 2060 ÷ # × [0.3] QUOTATION MARK (QU) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 0022 × 0020 × 2060 ÷ # × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 0022 × 0308 × 2060 ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
@@ -4810,14 +6186,22 @@
× 0022 × 0020 ÷ 1F3FB ÷ # × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 0022 × 0308 × 1F3FB ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 0022 × 0308 × 0020 ÷ 1F3FB ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0022 × 00AB ÷ # × [0.3] QUOTATION MARK (QU) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0022 × 0020 ÷ 00AB ÷ # × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0022 × 0308 × 00AB ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0022 × 0308 × 0020 ÷ 00AB ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0022 × 00BB ÷ # × [0.3] QUOTATION MARK (QU) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 0022 × 0020 × 00BB ÷ # × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 0022 × 0308 × 00BB ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 0022 × 0308 × 0020 × 00BB ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
× 0022 × 0029 ÷ # × [0.3] QUOTATION MARK (QU) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 0022 × 0020 × 0029 ÷ # × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 0022 × 0308 × 0029 ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 0022 × 0308 × 0020 × 0029 ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
-× 0022 × 0028 ÷ # × [0.3] QUOTATION MARK (QU) × [15.0] LEFT PARENTHESIS (OP_OP30) ÷ [0.3]
-× 0022 × 0020 × 0028 ÷ # × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) × [15.0] LEFT PARENTHESIS (OP_OP30) ÷ [0.3]
-× 0022 × 0308 × 0028 ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.0] LEFT PARENTHESIS (OP_OP30) ÷ [0.3]
-× 0022 × 0308 × 0020 × 0028 ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.0] LEFT PARENTHESIS (OP_OP30) ÷ [0.3]
+× 0022 × 0028 ÷ # × [0.3] QUOTATION MARK (QU) × [19.02] LEFT PARENTHESIS (OP_OP30) ÷ [0.3]
+× 0022 × 0020 ÷ 0028 ÷ # × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP_OP30) ÷ [0.3]
+× 0022 × 0308 × 0028 ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] LEFT PARENTHESIS (OP_OP30) ÷ [0.3]
+× 0022 × 0308 × 0020 ÷ 0028 ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP_OP30) ÷ [0.3]
× 0022 × 0001 ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
× 0022 × 0020 ÷ 0001 ÷ # × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
× 0022 × 0308 × 0001 ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
@@ -4842,10 +6226,22 @@
× 0022 × 0020 ÷ 3041 ÷ # × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 0022 × 0308 × 3041 ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 0022 × 0308 × 0020 ÷ 3041 ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 0020 ÷ 1B05 ÷ # × [0.3] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 0020 × 0020 ÷ 1B05 ÷ # × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 0020 ÷ 0308 ÷ 1B05 ÷ # × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 ÷ 1B05 ÷ # × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
× 0020 ÷ 0023 ÷ # × [0.3] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
× 0020 × 0020 ÷ 0023 ÷ # × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
× 0020 ÷ 0308 × 0023 ÷ # × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
× 0020 ÷ 0308 × 0020 ÷ 0023 ÷ # × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 0020 ÷ 11003 ÷ # × [0.3] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0020 × 0020 ÷ 11003 ÷ # × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0020 ÷ 0308 ÷ 11003 ÷ # × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 ÷ 11003 ÷ # × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0020 ÷ 1BC0 ÷ # × [0.3] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 0020 × 0020 ÷ 1BC0 ÷ # × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 0020 ÷ 0308 ÷ 1BC0 ÷ # × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 ÷ 1BC0 ÷ # × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
× 0020 ÷ 2014 ÷ # × [0.3] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
× 0020 × 0020 ÷ 2014 ÷ # × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
× 0020 ÷ 0308 ÷ 2014 ÷ # × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
@@ -4898,10 +6294,10 @@
× 0020 × 0020 ÷ 002D ÷ # × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
× 0020 ÷ 0308 × 002D ÷ # × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
× 0020 ÷ 0308 × 0020 ÷ 002D ÷ # × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 0020 ÷ 231A ÷ # × [0.3] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 0020 × 0020 ÷ 231A ÷ # × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 0020 ÷ 0308 ÷ 231A ÷ # × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 0020 ÷ 0308 × 0020 ÷ 231A ÷ # × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 0020 ÷ 1B50 ÷ # × [0.3] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 0020 × 0020 ÷ 1B50 ÷ # × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 0020 ÷ 0308 ÷ 1B50 ÷ # × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 ÷ 1B50 ÷ # × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
× 0020 ÷ 2024 ÷ # × [0.3] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
× 0020 × 0020 ÷ 2024 ÷ # × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
× 0020 ÷ 0308 × 2024 ÷ # × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
@@ -4962,6 +6358,14 @@
× 0020 × 0020 × 002F ÷ # × [0.3] SPACE (SP) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
× 0020 ÷ 0308 × 002F ÷ # × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
× 0020 ÷ 0308 × 0020 × 002F ÷ # × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 0020 ÷ 1BF2 ÷ # × [0.3] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0020 × 0020 ÷ 1BF2 ÷ # × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0020 ÷ 0308 ÷ 1BF2 ÷ # × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 ÷ 1BF2 ÷ # × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0020 ÷ 1B44 ÷ # × [0.3] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 0020 × 0020 ÷ 1B44 ÷ # × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 0020 ÷ 0308 ÷ 1B44 ÷ # × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 ÷ 1B44 ÷ # × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
× 0020 × 2060 ÷ # × [0.3] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 0020 × 0020 × 2060 ÷ # × [0.3] SPACE (SP) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 0020 ÷ 0308 × 2060 ÷ # × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
@@ -4982,6 +6386,14 @@
× 0020 × 0020 ÷ 1F3FB ÷ # × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 0020 ÷ 0308 ÷ 1F3FB ÷ # × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 0020 ÷ 0308 × 0020 ÷ 1F3FB ÷ # × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0020 ÷ 00AB ÷ # × [0.3] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0020 × 0020 ÷ 00AB ÷ # × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0020 ÷ 0308 × 00AB ÷ # × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 ÷ 00AB ÷ # × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0020 × 00BB ÷ # × [0.3] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 0020 × 0020 × 00BB ÷ # × [0.3] SPACE (SP) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 0020 ÷ 0308 × 00BB ÷ # × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 × 00BB ÷ # × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
× 0020 × 0029 ÷ # × [0.3] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 0020 × 0020 × 0029 ÷ # × [0.3] SPACE (SP) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 0020 ÷ 0308 × 0029 ÷ # × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
@@ -5014,10 +6426,22 @@
× 0020 × 0020 ÷ 3041 ÷ # × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 0020 ÷ 0308 × 3041 ÷ # × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 0020 ÷ 0308 × 0020 ÷ 3041 ÷ # × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 002F ÷ 1B05 ÷ # × [0.3] SOLIDUS (SY) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 002F × 0020 ÷ 1B05 ÷ # × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 002F × 0308 ÷ 1B05 ÷ # × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 002F × 0308 × 0020 ÷ 1B05 ÷ # × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
× 002F ÷ 0023 ÷ # × [0.3] SOLIDUS (SY) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
× 002F × 0020 ÷ 0023 ÷ # × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
× 002F × 0308 ÷ 0023 ÷ # × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
× 002F × 0308 × 0020 ÷ 0023 ÷ # × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 002F ÷ 11003 ÷ # × [0.3] SOLIDUS (SY) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 002F × 0020 ÷ 11003 ÷ # × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 002F × 0308 ÷ 11003 ÷ # × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 002F × 0308 × 0020 ÷ 11003 ÷ # × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 002F ÷ 1BC0 ÷ # × [0.3] SOLIDUS (SY) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 002F × 0020 ÷ 1BC0 ÷ # × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 002F × 0308 ÷ 1BC0 ÷ # × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 002F × 0308 × 0020 ÷ 1BC0 ÷ # × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
× 002F ÷ 2014 ÷ # × [0.3] SOLIDUS (SY) ÷ [999.0] EM DASH (B2) ÷ [0.3]
× 002F × 0020 ÷ 2014 ÷ # × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
× 002F × 0308 ÷ 2014 ÷ # × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
@@ -5070,10 +6494,10 @@
× 002F × 0020 ÷ 002D ÷ # × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
× 002F × 0308 × 002D ÷ # × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
× 002F × 0308 × 0020 ÷ 002D ÷ # × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 002F ÷ 231A ÷ # × [0.3] SOLIDUS (SY) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 002F × 0020 ÷ 231A ÷ # × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 002F × 0308 ÷ 231A ÷ # × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 002F × 0308 × 0020 ÷ 231A ÷ # × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 002F ÷ 1B50 ÷ # × [0.3] SOLIDUS (SY) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 002F × 0020 ÷ 1B50 ÷ # × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 002F × 0308 ÷ 1B50 ÷ # × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 002F × 0308 × 0020 ÷ 1B50 ÷ # × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
× 002F × 2024 ÷ # × [0.3] SOLIDUS (SY) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
× 002F × 0020 ÷ 2024 ÷ # × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
× 002F × 0308 × 2024 ÷ # × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
@@ -5134,6 +6558,14 @@
× 002F × 0020 × 002F ÷ # × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
× 002F × 0308 × 002F ÷ # × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
× 002F × 0308 × 0020 × 002F ÷ # × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 002F ÷ 1BF2 ÷ # × [0.3] SOLIDUS (SY) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 002F × 0020 ÷ 1BF2 ÷ # × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 002F × 0308 ÷ 1BF2 ÷ # × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 002F × 0308 × 0020 ÷ 1BF2 ÷ # × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 002F ÷ 1B44 ÷ # × [0.3] SOLIDUS (SY) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 002F × 0020 ÷ 1B44 ÷ # × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 002F × 0308 ÷ 1B44 ÷ # × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 002F × 0308 × 0020 ÷ 1B44 ÷ # × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
× 002F × 2060 ÷ # × [0.3] SOLIDUS (SY) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 002F × 0020 × 2060 ÷ # × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 002F × 0308 × 2060 ÷ # × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
@@ -5154,6 +6586,14 @@
× 002F × 0020 ÷ 1F3FB ÷ # × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 002F × 0308 ÷ 1F3FB ÷ # × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 002F × 0308 × 0020 ÷ 1F3FB ÷ # × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 002F × 00AB ÷ # × [0.3] SOLIDUS (SY) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 002F × 0020 ÷ 00AB ÷ # × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 002F × 0308 × 00AB ÷ # × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 002F × 0308 × 0020 ÷ 00AB ÷ # × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 002F × 00BB ÷ # × [0.3] SOLIDUS (SY) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 002F × 0020 × 00BB ÷ # × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 002F × 0308 × 00BB ÷ # × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 002F × 0308 × 0020 × 00BB ÷ # × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
× 002F × 0029 ÷ # × [0.3] SOLIDUS (SY) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 002F × 0020 × 0029 ÷ # × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 002F × 0308 × 0029 ÷ # × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
@@ -5186,10 +6626,422 @@
× 002F × 0020 ÷ 3041 ÷ # × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 002F × 0308 × 3041 ÷ # × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 002F × 0308 × 0020 ÷ 3041 ÷ # × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 1BF2 ÷ 1B05 ÷ # × [0.3] BATAK PANGOLAT (VF) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 1BF2 × 0020 ÷ 1B05 ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 1BF2 × 0308 ÷ 1B05 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 1BF2 × 0308 × 0020 ÷ 1B05 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 1BF2 ÷ 0023 ÷ # × [0.3] BATAK PANGOLAT (VF) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
+× 1BF2 × 0020 ÷ 0023 ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 1BF2 × 0308 ÷ 0023 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
+× 1BF2 × 0308 × 0020 ÷ 0023 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 1BF2 ÷ 11003 ÷ # × [0.3] BATAK PANGOLAT (VF) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 1BF2 × 0020 ÷ 11003 ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 1BF2 × 0308 ÷ 11003 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 1BF2 × 0308 × 0020 ÷ 11003 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 1BF2 ÷ 1BC0 ÷ # × [0.3] BATAK PANGOLAT (VF) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 1BF2 × 0020 ÷ 1BC0 ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 1BF2 × 0308 ÷ 1BC0 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 1BF2 × 0308 × 0020 ÷ 1BC0 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 1BF2 ÷ 2014 ÷ # × [0.3] BATAK PANGOLAT (VF) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 1BF2 × 0020 ÷ 2014 ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 1BF2 × 0308 ÷ 2014 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 1BF2 × 0308 × 0020 ÷ 2014 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 1BF2 × 0009 ÷ # × [0.3] BATAK PANGOLAT (VF) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 1BF2 × 0020 ÷ 0009 ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 1BF2 × 0308 × 0009 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 1BF2 × 0308 × 0020 ÷ 0009 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 1BF2 ÷ 00B4 ÷ # × [0.3] BATAK PANGOLAT (VF) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 1BF2 × 0020 ÷ 00B4 ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 1BF2 × 0308 ÷ 00B4 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 1BF2 × 0308 × 0020 ÷ 00B4 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 1BF2 × 000B ÷ # × [0.3] BATAK PANGOLAT (VF) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 1BF2 × 0020 × 000B ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 1BF2 × 0308 × 000B ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 1BF2 × 0308 × 0020 × 000B ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 1BF2 ÷ FFFC ÷ # × [0.3] BATAK PANGOLAT (VF) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 1BF2 × 0020 ÷ FFFC ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 1BF2 × 0308 ÷ FFFC ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 1BF2 × 0308 × 0020 ÷ FFFC ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 1BF2 × 007D ÷ # × [0.3] BATAK PANGOLAT (VF) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 1BF2 × 0020 × 007D ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 1BF2 × 0308 × 007D ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 1BF2 × 0308 × 0020 × 007D ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 1BF2 × 000D ÷ # × [0.3] BATAK PANGOLAT (VF) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 1BF2 × 0020 × 000D ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 1BF2 × 0308 × 000D ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 1BF2 × 0308 × 0020 × 000D ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 1BF2 × 0021 ÷ # × [0.3] BATAK PANGOLAT (VF) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 1BF2 × 0020 × 0021 ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 1BF2 × 0308 × 0021 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 1BF2 × 0308 × 0020 × 0021 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 1BF2 × 00A0 ÷ # × [0.3] BATAK PANGOLAT (VF) × [12.1] NO-BREAK SPACE (GL) ÷ [0.3]
+× 1BF2 × 0020 ÷ 00A0 ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 1BF2 × 0308 × 00A0 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
+× 1BF2 × 0308 × 0020 ÷ 00A0 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 1BF2 ÷ AC00 ÷ # × [0.3] BATAK PANGOLAT (VF) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 1BF2 × 0020 ÷ AC00 ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 1BF2 × 0308 ÷ AC00 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 1BF2 × 0308 × 0020 ÷ AC00 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 1BF2 ÷ AC01 ÷ # × [0.3] BATAK PANGOLAT (VF) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 1BF2 × 0020 ÷ AC01 ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 1BF2 × 0308 ÷ AC01 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 1BF2 × 0308 × 0020 ÷ AC01 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 1BF2 ÷ 05D0 ÷ # × [0.3] BATAK PANGOLAT (VF) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 1BF2 × 0020 ÷ 05D0 ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 1BF2 × 0308 ÷ 05D0 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 1BF2 × 0308 × 0020 ÷ 05D0 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 1BF2 × 002D ÷ # × [0.3] BATAK PANGOLAT (VF) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 1BF2 × 0020 ÷ 002D ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 1BF2 × 0308 × 002D ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 1BF2 × 0308 × 0020 ÷ 002D ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 1BF2 ÷ 1B50 ÷ # × [0.3] BATAK PANGOLAT (VF) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 1BF2 × 0020 ÷ 1B50 ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 1BF2 × 0308 ÷ 1B50 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 1BF2 × 0308 × 0020 ÷ 1B50 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 1BF2 × 2024 ÷ # × [0.3] BATAK PANGOLAT (VF) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 1BF2 × 0020 ÷ 2024 ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 1BF2 × 0308 × 2024 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 1BF2 × 0308 × 0020 ÷ 2024 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 1BF2 × 002C ÷ # × [0.3] BATAK PANGOLAT (VF) × [13.02] COMMA (IS) ÷ [0.3]
+× 1BF2 × 0020 × 002C ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 1BF2 × 0308 × 002C ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] COMMA (IS) ÷ [0.3]
+× 1BF2 × 0308 × 0020 × 002C ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 1BF2 ÷ 1100 ÷ # × [0.3] BATAK PANGOLAT (VF) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 1BF2 × 0020 ÷ 1100 ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 1BF2 × 0308 ÷ 1100 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 1BF2 × 0308 × 0020 ÷ 1100 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 1BF2 ÷ 11A8 ÷ # × [0.3] BATAK PANGOLAT (VF) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 1BF2 × 0020 ÷ 11A8 ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 1BF2 × 0308 ÷ 11A8 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 1BF2 × 0308 × 0020 ÷ 11A8 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 1BF2 ÷ 1160 ÷ # × [0.3] BATAK PANGOLAT (VF) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 1BF2 × 0020 ÷ 1160 ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 1BF2 × 0308 ÷ 1160 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 1BF2 × 0308 × 0020 ÷ 1160 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 1BF2 × 000A ÷ # × [0.3] BATAK PANGOLAT (VF) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 1BF2 × 0020 × 000A ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 1BF2 × 0308 × 000A ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 1BF2 × 0308 × 0020 × 000A ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 1BF2 × 0085 ÷ # × [0.3] BATAK PANGOLAT (VF) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 1BF2 × 0020 × 0085 ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 1BF2 × 0308 × 0085 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 1BF2 × 0308 × 0020 × 0085 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 1BF2 × 17D6 ÷ # × [0.3] BATAK PANGOLAT (VF) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 1BF2 × 0020 ÷ 17D6 ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 1BF2 × 0308 × 17D6 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 1BF2 × 0308 × 0020 ÷ 17D6 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 1BF2 ÷ 0030 ÷ # × [0.3] BATAK PANGOLAT (VF) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
+× 1BF2 × 0020 ÷ 0030 ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 1BF2 × 0308 ÷ 0030 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
+× 1BF2 × 0308 × 0020 ÷ 0030 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 1BF2 ÷ 2329 ÷ # × [0.3] BATAK PANGOLAT (VF) ÷ [999.0] LEFT-POINTING ANGLE BRACKET (OP) ÷ [0.3]
+× 1BF2 × 0020 ÷ 2329 ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING ANGLE BRACKET (OP) ÷ [0.3]
+× 1BF2 × 0308 ÷ 2329 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] LEFT-POINTING ANGLE BRACKET (OP) ÷ [0.3]
+× 1BF2 × 0308 × 0020 ÷ 2329 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING ANGLE BRACKET (OP) ÷ [0.3]
+× 1BF2 ÷ 0025 ÷ # × [0.3] BATAK PANGOLAT (VF) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
+× 1BF2 × 0020 ÷ 0025 ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
+× 1BF2 × 0308 ÷ 0025 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
+× 1BF2 × 0308 × 0020 ÷ 0025 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
+× 1BF2 ÷ 0024 ÷ # × [0.3] BATAK PANGOLAT (VF) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 1BF2 × 0020 ÷ 0024 ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 1BF2 × 0308 ÷ 0024 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 1BF2 × 0308 × 0020 ÷ 0024 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 1BF2 × 0022 ÷ # × [0.3] BATAK PANGOLAT (VF) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 1BF2 × 0020 ÷ 0022 ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 1BF2 × 0308 × 0022 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 1BF2 × 0308 × 0020 ÷ 0022 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 1BF2 × 0020 ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) ÷ [0.3]
+× 1BF2 × 0020 × 0020 ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 1BF2 × 0308 × 0020 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 1BF2 × 0308 × 0020 × 0020 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 1BF2 × 002F ÷ # × [0.3] BATAK PANGOLAT (VF) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 1BF2 × 0020 × 002F ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 1BF2 × 0308 × 002F ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
+× 1BF2 × 0308 × 0020 × 002F ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 1BF2 ÷ 1BF2 ÷ # × [0.3] BATAK PANGOLAT (VF) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 1BF2 × 0020 ÷ 1BF2 ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 1BF2 × 0308 ÷ 1BF2 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 1BF2 × 0308 × 0020 ÷ 1BF2 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 1BF2 ÷ 1B44 ÷ # × [0.3] BATAK PANGOLAT (VF) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 1BF2 × 0020 ÷ 1B44 ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 1BF2 × 0308 ÷ 1B44 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 1BF2 × 0308 × 0020 ÷ 1B44 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 1BF2 × 2060 ÷ # × [0.3] BATAK PANGOLAT (VF) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 1BF2 × 0020 × 2060 ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 1BF2 × 0308 × 2060 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 1BF2 × 0308 × 0020 × 2060 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 1BF2 × 200B ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 1BF2 × 0020 × 200B ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 1BF2 × 0308 × 200B ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 1BF2 × 0308 × 0020 × 200B ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 1BF2 ÷ 1F1E6 ÷ # × [0.3] BATAK PANGOLAT (VF) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 1BF2 × 0020 ÷ 1F1E6 ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 1BF2 × 0308 ÷ 1F1E6 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 1BF2 × 0308 × 0020 ÷ 1F1E6 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 1BF2 ÷ 261D ÷ # × [0.3] BATAK PANGOLAT (VF) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 1BF2 × 0020 ÷ 261D ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 1BF2 × 0308 ÷ 261D ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 1BF2 × 0308 × 0020 ÷ 261D ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 1BF2 ÷ 1F3FB ÷ # × [0.3] BATAK PANGOLAT (VF) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 1BF2 × 0020 ÷ 1F3FB ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 1BF2 × 0308 ÷ 1F3FB ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 1BF2 × 0308 × 0020 ÷ 1F3FB ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 1BF2 × 00AB ÷ # × [0.3] BATAK PANGOLAT (VF) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 1BF2 × 0020 ÷ 00AB ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 1BF2 × 0308 × 00AB ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 1BF2 × 0308 × 0020 ÷ 00AB ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 1BF2 × 00BB ÷ # × [0.3] BATAK PANGOLAT (VF) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 1BF2 × 0020 × 00BB ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 1BF2 × 0308 × 00BB ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 1BF2 × 0308 × 0020 × 00BB ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 1BF2 × 0029 ÷ # × [0.3] BATAK PANGOLAT (VF) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
+× 1BF2 × 0020 × 0029 ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
+× 1BF2 × 0308 × 0029 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
+× 1BF2 × 0308 × 0020 × 0029 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
+× 1BF2 ÷ 0028 ÷ # × [0.3] BATAK PANGOLAT (VF) ÷ [999.0] LEFT PARENTHESIS (OP_OP30) ÷ [0.3]
+× 1BF2 × 0020 ÷ 0028 ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP_OP30) ÷ [0.3]
+× 1BF2 × 0308 ÷ 0028 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] LEFT PARENTHESIS (OP_OP30) ÷ [0.3]
+× 1BF2 × 0308 × 0020 ÷ 0028 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP_OP30) ÷ [0.3]
+× 1BF2 × 0001 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 1BF2 × 0020 ÷ 0001 ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 1BF2 × 0308 × 0001 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 1BF2 × 0308 × 0020 ÷ 0001 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 1BF2 × 200D ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 1BF2 × 0020 ÷ 200D ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 1BF2 × 0308 × 200D ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 1BF2 × 0308 × 0020 ÷ 200D ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 1BF2 ÷ 00A7 ÷ # × [0.3] BATAK PANGOLAT (VF) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 1BF2 × 0020 ÷ 00A7 ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 1BF2 × 0308 ÷ 00A7 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 1BF2 × 0308 × 0020 ÷ 00A7 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 1BF2 ÷ 50005 ÷ # × [0.3] BATAK PANGOLAT (VF) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 1BF2 × 0020 ÷ 50005 ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 1BF2 × 0308 ÷ 50005 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 1BF2 × 0308 × 0020 ÷ 50005 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 1BF2 ÷ 0E01 ÷ # × [0.3] BATAK PANGOLAT (VF) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 1BF2 × 0020 ÷ 0E01 ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 1BF2 × 0308 ÷ 0E01 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 1BF2 × 0308 × 0020 ÷ 0E01 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 1BF2 × 3041 ÷ # × [0.3] BATAK PANGOLAT (VF) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 1BF2 × 0020 ÷ 3041 ÷ # × [0.3] BATAK PANGOLAT (VF) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 1BF2 × 0308 × 3041 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 1BF2 × 0308 × 0020 ÷ 3041 ÷ # × [0.3] BATAK PANGOLAT (VF) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 1B44 ÷ 1B05 ÷ # × [0.3] BALINESE ADEG ADEG (VI) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 1B44 × 0020 ÷ 1B05 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 1B44 × 0308 ÷ 1B05 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 1B44 × 0308 × 0020 ÷ 1B05 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 1B44 ÷ 0023 ÷ # × [0.3] BALINESE ADEG ADEG (VI) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
+× 1B44 × 0020 ÷ 0023 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 1B44 × 0308 ÷ 0023 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
+× 1B44 × 0308 × 0020 ÷ 0023 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 1B44 ÷ 11003 ÷ # × [0.3] BALINESE ADEG ADEG (VI) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 1B44 × 0020 ÷ 11003 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 1B44 × 0308 ÷ 11003 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 1B44 × 0308 × 0020 ÷ 11003 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 1B44 ÷ 1BC0 ÷ # × [0.3] BALINESE ADEG ADEG (VI) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 1B44 × 0020 ÷ 1BC0 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 1B44 × 0308 ÷ 1BC0 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 1B44 × 0308 × 0020 ÷ 1BC0 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 1B44 ÷ 2014 ÷ # × [0.3] BALINESE ADEG ADEG (VI) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 1B44 × 0020 ÷ 2014 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 1B44 × 0308 ÷ 2014 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 1B44 × 0308 × 0020 ÷ 2014 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 1B44 × 0009 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 1B44 × 0020 ÷ 0009 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 1B44 × 0308 × 0009 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 1B44 × 0308 × 0020 ÷ 0009 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 1B44 ÷ 00B4 ÷ # × [0.3] BALINESE ADEG ADEG (VI) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 1B44 × 0020 ÷ 00B4 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 1B44 × 0308 ÷ 00B4 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 1B44 × 0308 × 0020 ÷ 00B4 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 1B44 × 000B ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 1B44 × 0020 × 000B ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 1B44 × 0308 × 000B ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 1B44 × 0308 × 0020 × 000B ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 1B44 ÷ FFFC ÷ # × [0.3] BALINESE ADEG ADEG (VI) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 1B44 × 0020 ÷ FFFC ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 1B44 × 0308 ÷ FFFC ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 1B44 × 0308 × 0020 ÷ FFFC ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 1B44 × 007D ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 1B44 × 0020 × 007D ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 1B44 × 0308 × 007D ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 1B44 × 0308 × 0020 × 007D ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 1B44 × 000D ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 1B44 × 0020 × 000D ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 1B44 × 0308 × 000D ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 1B44 × 0308 × 0020 × 000D ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 1B44 × 0021 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 1B44 × 0020 × 0021 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 1B44 × 0308 × 0021 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 1B44 × 0308 × 0020 × 0021 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 1B44 × 00A0 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [12.1] NO-BREAK SPACE (GL) ÷ [0.3]
+× 1B44 × 0020 ÷ 00A0 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 1B44 × 0308 × 00A0 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
+× 1B44 × 0308 × 0020 ÷ 00A0 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 1B44 ÷ AC00 ÷ # × [0.3] BALINESE ADEG ADEG (VI) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 1B44 × 0020 ÷ AC00 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 1B44 × 0308 ÷ AC00 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 1B44 × 0308 × 0020 ÷ AC00 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 1B44 ÷ AC01 ÷ # × [0.3] BALINESE ADEG ADEG (VI) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 1B44 × 0020 ÷ AC01 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 1B44 × 0308 ÷ AC01 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 1B44 × 0308 × 0020 ÷ AC01 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 1B44 ÷ 05D0 ÷ # × [0.3] BALINESE ADEG ADEG (VI) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 1B44 × 0020 ÷ 05D0 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 1B44 × 0308 ÷ 05D0 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 1B44 × 0308 × 0020 ÷ 05D0 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 1B44 × 002D ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 1B44 × 0020 ÷ 002D ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 1B44 × 0308 × 002D ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 1B44 × 0308 × 0020 ÷ 002D ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 1B44 ÷ 1B50 ÷ # × [0.3] BALINESE ADEG ADEG (VI) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 1B44 × 0020 ÷ 1B50 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 1B44 × 0308 ÷ 1B50 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 1B44 × 0308 × 0020 ÷ 1B50 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 1B44 × 2024 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 1B44 × 0020 ÷ 2024 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 1B44 × 0308 × 2024 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 1B44 × 0308 × 0020 ÷ 2024 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 1B44 × 002C ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [13.02] COMMA (IS) ÷ [0.3]
+× 1B44 × 0020 × 002C ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 1B44 × 0308 × 002C ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] COMMA (IS) ÷ [0.3]
+× 1B44 × 0308 × 0020 × 002C ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 1B44 ÷ 1100 ÷ # × [0.3] BALINESE ADEG ADEG (VI) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 1B44 × 0020 ÷ 1100 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 1B44 × 0308 ÷ 1100 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 1B44 × 0308 × 0020 ÷ 1100 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 1B44 ÷ 11A8 ÷ # × [0.3] BALINESE ADEG ADEG (VI) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 1B44 × 0020 ÷ 11A8 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 1B44 × 0308 ÷ 11A8 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 1B44 × 0308 × 0020 ÷ 11A8 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 1B44 ÷ 1160 ÷ # × [0.3] BALINESE ADEG ADEG (VI) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 1B44 × 0020 ÷ 1160 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 1B44 × 0308 ÷ 1160 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 1B44 × 0308 × 0020 ÷ 1160 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 1B44 × 000A ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 1B44 × 0020 × 000A ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 1B44 × 0308 × 000A ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 1B44 × 0308 × 0020 × 000A ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 1B44 × 0085 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 1B44 × 0020 × 0085 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 1B44 × 0308 × 0085 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 1B44 × 0308 × 0020 × 0085 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 1B44 × 17D6 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 1B44 × 0020 ÷ 17D6 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 1B44 × 0308 × 17D6 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 1B44 × 0308 × 0020 ÷ 17D6 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 1B44 ÷ 0030 ÷ # × [0.3] BALINESE ADEG ADEG (VI) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
+× 1B44 × 0020 ÷ 0030 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 1B44 × 0308 ÷ 0030 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
+× 1B44 × 0308 × 0020 ÷ 0030 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 1B44 ÷ 2329 ÷ # × [0.3] BALINESE ADEG ADEG (VI) ÷ [999.0] LEFT-POINTING ANGLE BRACKET (OP) ÷ [0.3]
+× 1B44 × 0020 ÷ 2329 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING ANGLE BRACKET (OP) ÷ [0.3]
+× 1B44 × 0308 ÷ 2329 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] LEFT-POINTING ANGLE BRACKET (OP) ÷ [0.3]
+× 1B44 × 0308 × 0020 ÷ 2329 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING ANGLE BRACKET (OP) ÷ [0.3]
+× 1B44 ÷ 0025 ÷ # × [0.3] BALINESE ADEG ADEG (VI) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
+× 1B44 × 0020 ÷ 0025 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
+× 1B44 × 0308 ÷ 0025 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
+× 1B44 × 0308 × 0020 ÷ 0025 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
+× 1B44 ÷ 0024 ÷ # × [0.3] BALINESE ADEG ADEG (VI) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 1B44 × 0020 ÷ 0024 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 1B44 × 0308 ÷ 0024 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 1B44 × 0308 × 0020 ÷ 0024 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 1B44 × 0022 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 1B44 × 0020 ÷ 0022 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 1B44 × 0308 × 0022 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 1B44 × 0308 × 0020 ÷ 0022 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 1B44 × 0020 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) ÷ [0.3]
+× 1B44 × 0020 × 0020 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 1B44 × 0308 × 0020 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 1B44 × 0308 × 0020 × 0020 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 1B44 × 002F ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 1B44 × 0020 × 002F ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 1B44 × 0308 × 002F ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
+× 1B44 × 0308 × 0020 × 002F ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 1B44 ÷ 1BF2 ÷ # × [0.3] BALINESE ADEG ADEG (VI) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 1B44 × 0020 ÷ 1BF2 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 1B44 × 0308 ÷ 1BF2 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 1B44 × 0308 × 0020 ÷ 1BF2 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 1B44 ÷ 1B44 ÷ # × [0.3] BALINESE ADEG ADEG (VI) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 1B44 × 0020 ÷ 1B44 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 1B44 × 0308 ÷ 1B44 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 1B44 × 0308 × 0020 ÷ 1B44 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 1B44 × 2060 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 1B44 × 0020 × 2060 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 1B44 × 0308 × 2060 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 1B44 × 0308 × 0020 × 2060 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 1B44 × 200B ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 1B44 × 0020 × 200B ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 1B44 × 0308 × 200B ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 1B44 × 0308 × 0020 × 200B ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 1B44 ÷ 1F1E6 ÷ # × [0.3] BALINESE ADEG ADEG (VI) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 1B44 × 0020 ÷ 1F1E6 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 1B44 × 0308 ÷ 1F1E6 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 1B44 × 0308 × 0020 ÷ 1F1E6 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 1B44 ÷ 261D ÷ # × [0.3] BALINESE ADEG ADEG (VI) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 1B44 × 0020 ÷ 261D ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 1B44 × 0308 ÷ 261D ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 1B44 × 0308 × 0020 ÷ 261D ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 1B44 ÷ 1F3FB ÷ # × [0.3] BALINESE ADEG ADEG (VI) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 1B44 × 0020 ÷ 1F3FB ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 1B44 × 0308 ÷ 1F3FB ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 1B44 × 0308 × 0020 ÷ 1F3FB ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 1B44 × 00AB ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 1B44 × 0020 ÷ 00AB ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 1B44 × 0308 × 00AB ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 1B44 × 0308 × 0020 ÷ 00AB ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 1B44 × 00BB ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 1B44 × 0020 × 00BB ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 1B44 × 0308 × 00BB ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 1B44 × 0308 × 0020 × 00BB ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 1B44 × 0029 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
+× 1B44 × 0020 × 0029 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
+× 1B44 × 0308 × 0029 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
+× 1B44 × 0308 × 0020 × 0029 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
+× 1B44 ÷ 0028 ÷ # × [0.3] BALINESE ADEG ADEG (VI) ÷ [999.0] LEFT PARENTHESIS (OP_OP30) ÷ [0.3]
+× 1B44 × 0020 ÷ 0028 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP_OP30) ÷ [0.3]
+× 1B44 × 0308 ÷ 0028 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] LEFT PARENTHESIS (OP_OP30) ÷ [0.3]
+× 1B44 × 0308 × 0020 ÷ 0028 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP_OP30) ÷ [0.3]
+× 1B44 × 0001 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 1B44 × 0020 ÷ 0001 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 1B44 × 0308 × 0001 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 1B44 × 0308 × 0020 ÷ 0001 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 1B44 × 200D ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 1B44 × 0020 ÷ 200D ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 1B44 × 0308 × 200D ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 1B44 × 0308 × 0020 ÷ 200D ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 1B44 ÷ 00A7 ÷ # × [0.3] BALINESE ADEG ADEG (VI) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 1B44 × 0020 ÷ 00A7 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 1B44 × 0308 ÷ 00A7 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 1B44 × 0308 × 0020 ÷ 00A7 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 1B44 ÷ 50005 ÷ # × [0.3] BALINESE ADEG ADEG (VI) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 1B44 × 0020 ÷ 50005 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 1B44 × 0308 ÷ 50005 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 1B44 × 0308 × 0020 ÷ 50005 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 1B44 ÷ 0E01 ÷ # × [0.3] BALINESE ADEG ADEG (VI) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 1B44 × 0020 ÷ 0E01 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 1B44 × 0308 ÷ 0E01 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 1B44 × 0308 × 0020 ÷ 0E01 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 1B44 × 3041 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 1B44 × 0020 ÷ 3041 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 1B44 × 0308 × 3041 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 1B44 × 0308 × 0020 ÷ 3041 ÷ # × [0.3] BALINESE ADEG ADEG (VI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 2060 × 1B05 ÷ # × [0.3] WORD JOINER (WJ) × [11.02] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 2060 × 0020 ÷ 1B05 ÷ # × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 2060 × 0308 × 1B05 ÷ # × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 2060 × 0308 × 0020 ÷ 1B05 ÷ # × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
× 2060 × 0023 ÷ # × [0.3] WORD JOINER (WJ) × [11.02] NUMBER SIGN (AL) ÷ [0.3]
× 2060 × 0020 ÷ 0023 ÷ # × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
× 2060 × 0308 × 0023 ÷ # × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] NUMBER SIGN (AL) ÷ [0.3]
× 2060 × 0308 × 0020 ÷ 0023 ÷ # × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 2060 × 11003 ÷ # × [0.3] WORD JOINER (WJ) × [11.02] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 2060 × 0020 ÷ 11003 ÷ # × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 2060 × 0308 × 11003 ÷ # × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 2060 × 0308 × 0020 ÷ 11003 ÷ # × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 2060 × 1BC0 ÷ # × [0.3] WORD JOINER (WJ) × [11.02] BATAK LETTER A (AS) ÷ [0.3]
+× 2060 × 0020 ÷ 1BC0 ÷ # × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 2060 × 0308 × 1BC0 ÷ # × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] BATAK LETTER A (AS) ÷ [0.3]
+× 2060 × 0308 × 0020 ÷ 1BC0 ÷ # × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
× 2060 × 2014 ÷ # × [0.3] WORD JOINER (WJ) × [11.02] EM DASH (B2) ÷ [0.3]
× 2060 × 0020 ÷ 2014 ÷ # × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
× 2060 × 0308 × 2014 ÷ # × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] EM DASH (B2) ÷ [0.3]
@@ -5242,10 +7094,10 @@
× 2060 × 0020 ÷ 002D ÷ # × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
× 2060 × 0308 × 002D ÷ # × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] HYPHEN-MINUS (HY) ÷ [0.3]
× 2060 × 0308 × 0020 ÷ 002D ÷ # × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 2060 × 231A ÷ # × [0.3] WORD JOINER (WJ) × [11.02] WATCH (ID) ÷ [0.3]
-× 2060 × 0020 ÷ 231A ÷ # × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 2060 × 0308 × 231A ÷ # × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] WATCH (ID) ÷ [0.3]
-× 2060 × 0308 × 0020 ÷ 231A ÷ # × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 2060 × 1B50 ÷ # × [0.3] WORD JOINER (WJ) × [11.02] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 2060 × 0020 ÷ 1B50 ÷ # × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 2060 × 0308 × 1B50 ÷ # × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 2060 × 0308 × 0020 ÷ 1B50 ÷ # × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
× 2060 × 2024 ÷ # × [0.3] WORD JOINER (WJ) × [11.02] ONE DOT LEADER (IN) ÷ [0.3]
× 2060 × 0020 ÷ 2024 ÷ # × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
× 2060 × 0308 × 2024 ÷ # × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] ONE DOT LEADER (IN) ÷ [0.3]
@@ -5306,6 +7158,14 @@
× 2060 × 0020 × 002F ÷ # × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
× 2060 × 0308 × 002F ÷ # × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] SOLIDUS (SY) ÷ [0.3]
× 2060 × 0308 × 0020 × 002F ÷ # × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 2060 × 1BF2 ÷ # × [0.3] WORD JOINER (WJ) × [11.02] BATAK PANGOLAT (VF) ÷ [0.3]
+× 2060 × 0020 ÷ 1BF2 ÷ # × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 2060 × 0308 × 1BF2 ÷ # × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] BATAK PANGOLAT (VF) ÷ [0.3]
+× 2060 × 0308 × 0020 ÷ 1BF2 ÷ # × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 2060 × 1B44 ÷ # × [0.3] WORD JOINER (WJ) × [11.02] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 2060 × 0020 ÷ 1B44 ÷ # × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 2060 × 0308 × 1B44 ÷ # × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 2060 × 0308 × 0020 ÷ 1B44 ÷ # × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
× 2060 × 2060 ÷ # × [0.3] WORD JOINER (WJ) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 2060 × 0020 × 2060 ÷ # × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 2060 × 0308 × 2060 ÷ # × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
@@ -5326,6 +7186,14 @@
× 2060 × 0020 ÷ 1F3FB ÷ # × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 2060 × 0308 × 1F3FB ÷ # × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 2060 × 0308 × 0020 ÷ 1F3FB ÷ # × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 2060 × 00AB ÷ # × [0.3] WORD JOINER (WJ) × [11.02] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 2060 × 0020 ÷ 00AB ÷ # × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 2060 × 0308 × 00AB ÷ # × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 2060 × 0308 × 0020 ÷ 00AB ÷ # × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 2060 × 00BB ÷ # × [0.3] WORD JOINER (WJ) × [11.02] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 2060 × 0020 × 00BB ÷ # × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 2060 × 0308 × 00BB ÷ # × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 2060 × 0308 × 0020 × 00BB ÷ # × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
× 2060 × 0029 ÷ # × [0.3] WORD JOINER (WJ) × [11.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 2060 × 0020 × 0029 ÷ # × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 2060 × 0308 × 0029 ÷ # × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
@@ -5358,10 +7226,22 @@
× 2060 × 0020 ÷ 3041 ÷ # × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 2060 × 0308 × 3041 ÷ # × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 2060 × 0308 × 0020 ÷ 3041 ÷ # × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 200B ÷ 1B05 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 200B × 0020 ÷ 1B05 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 200B ÷ 0308 ÷ 1B05 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 200B ÷ 0308 × 0020 ÷ 1B05 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
× 200B ÷ 0023 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] NUMBER SIGN (AL) ÷ [0.3]
× 200B × 0020 ÷ 0023 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] NUMBER SIGN (AL) ÷ [0.3]
× 200B ÷ 0308 × 0023 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
× 200B ÷ 0308 × 0020 ÷ 0023 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 200B ÷ 11003 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 200B × 0020 ÷ 11003 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 200B ÷ 0308 ÷ 11003 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 200B ÷ 0308 × 0020 ÷ 11003 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 200B ÷ 1BC0 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] BATAK LETTER A (AS) ÷ [0.3]
+× 200B × 0020 ÷ 1BC0 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] BATAK LETTER A (AS) ÷ [0.3]
+× 200B ÷ 0308 ÷ 1BC0 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 200B ÷ 0308 × 0020 ÷ 1BC0 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
× 200B ÷ 2014 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] EM DASH (B2) ÷ [0.3]
× 200B × 0020 ÷ 2014 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] EM DASH (B2) ÷ [0.3]
× 200B ÷ 0308 ÷ 2014 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
@@ -5414,10 +7294,10 @@
× 200B × 0020 ÷ 002D ÷ # × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] HYPHEN-MINUS (HY) ÷ [0.3]
× 200B ÷ 0308 × 002D ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
× 200B ÷ 0308 × 0020 ÷ 002D ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 200B ÷ 231A ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] WATCH (ID) ÷ [0.3]
-× 200B × 0020 ÷ 231A ÷ # × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] WATCH (ID) ÷ [0.3]
-× 200B ÷ 0308 ÷ 231A ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 200B ÷ 0308 × 0020 ÷ 231A ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 200B ÷ 1B50 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 200B × 0020 ÷ 1B50 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 200B ÷ 0308 ÷ 1B50 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 200B ÷ 0308 × 0020 ÷ 1B50 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
× 200B ÷ 2024 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] ONE DOT LEADER (IN) ÷ [0.3]
× 200B × 0020 ÷ 2024 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] ONE DOT LEADER (IN) ÷ [0.3]
× 200B ÷ 0308 × 2024 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
@@ -5478,6 +7358,14 @@
× 200B × 0020 ÷ 002F ÷ # × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] SOLIDUS (SY) ÷ [0.3]
× 200B ÷ 0308 × 002F ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
× 200B ÷ 0308 × 0020 × 002F ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 200B ÷ 1BF2 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 200B × 0020 ÷ 1BF2 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 200B ÷ 0308 ÷ 1BF2 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 200B ÷ 0308 × 0020 ÷ 1BF2 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 200B ÷ 1B44 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 200B × 0020 ÷ 1B44 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 200B ÷ 0308 ÷ 1B44 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 200B ÷ 0308 × 0020 ÷ 1B44 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
× 200B ÷ 2060 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] WORD JOINER (WJ) ÷ [0.3]
× 200B × 0020 ÷ 2060 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] WORD JOINER (WJ) ÷ [0.3]
× 200B ÷ 0308 × 2060 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
@@ -5498,6 +7386,14 @@
× 200B × 0020 ÷ 1F3FB ÷ # × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 200B ÷ 0308 ÷ 1F3FB ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 200B ÷ 0308 × 0020 ÷ 1F3FB ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 200B ÷ 00AB ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 200B × 0020 ÷ 00AB ÷ # × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 200B ÷ 0308 × 00AB ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 200B ÷ 0308 × 0020 ÷ 00AB ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 200B ÷ 00BB ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 200B × 0020 ÷ 00BB ÷ # × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 200B ÷ 0308 × 00BB ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 200B ÷ 0308 × 0020 × 00BB ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
× 200B ÷ 0029 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 200B × 0020 ÷ 0029 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 200B ÷ 0308 × 0029 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
@@ -5530,10 +7426,22 @@
× 200B × 0020 ÷ 3041 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 200B ÷ 0308 × 3041 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 200B ÷ 0308 × 0020 ÷ 3041 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 1F1E6 ÷ 1B05 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 1F1E6 × 0020 ÷ 1B05 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 1F1E6 × 0308 ÷ 1B05 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 ÷ 1B05 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
× 1F1E6 ÷ 0023 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
× 1F1E6 × 0020 ÷ 0023 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
× 1F1E6 × 0308 ÷ 0023 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
× 1F1E6 × 0308 × 0020 ÷ 0023 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 1F1E6 ÷ 11003 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 1F1E6 × 0020 ÷ 11003 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 1F1E6 × 0308 ÷ 11003 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 ÷ 11003 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 1F1E6 ÷ 1BC0 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 1F1E6 × 0020 ÷ 1BC0 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 1F1E6 × 0308 ÷ 1BC0 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 ÷ 1BC0 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
× 1F1E6 ÷ 2014 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] EM DASH (B2) ÷ [0.3]
× 1F1E6 × 0020 ÷ 2014 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
× 1F1E6 × 0308 ÷ 2014 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
@@ -5586,10 +7494,10 @@
× 1F1E6 × 0020 ÷ 002D ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
× 1F1E6 × 0308 × 002D ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
× 1F1E6 × 0308 × 0020 ÷ 002D ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 1F1E6 ÷ 231A ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 1F1E6 × 0020 ÷ 231A ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 1F1E6 × 0308 ÷ 231A ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 1F1E6 × 0308 × 0020 ÷ 231A ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 1F1E6 ÷ 1B50 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 1F1E6 × 0020 ÷ 1B50 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 1F1E6 × 0308 ÷ 1B50 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 ÷ 1B50 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
× 1F1E6 × 2024 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
× 1F1E6 × 0020 ÷ 2024 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
× 1F1E6 × 0308 × 2024 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
@@ -5650,6 +7558,14 @@
× 1F1E6 × 0020 × 002F ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
× 1F1E6 × 0308 × 002F ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
× 1F1E6 × 0308 × 0020 × 002F ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 1F1E6 ÷ 1BF2 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 1F1E6 × 0020 ÷ 1BF2 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 1F1E6 × 0308 ÷ 1BF2 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 ÷ 1BF2 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 1F1E6 ÷ 1B44 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 1F1E6 × 0020 ÷ 1B44 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 1F1E6 × 0308 ÷ 1B44 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 ÷ 1B44 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
× 1F1E6 × 2060 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 1F1E6 × 0020 × 2060 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 1F1E6 × 0308 × 2060 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
@@ -5670,6 +7586,14 @@
× 1F1E6 × 0020 ÷ 1F3FB ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 1F1E6 × 0308 ÷ 1F3FB ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 1F1E6 × 0308 × 0020 ÷ 1F3FB ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 1F1E6 × 00AB ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 1F1E6 × 0020 ÷ 00AB ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 1F1E6 × 0308 × 00AB ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 ÷ 00AB ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 1F1E6 × 00BB ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 1F1E6 × 0020 × 00BB ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 1F1E6 × 0308 × 00BB ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 × 00BB ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
× 1F1E6 × 0029 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 1F1E6 × 0020 × 0029 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 1F1E6 × 0308 × 0029 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
@@ -5702,10 +7626,22 @@
× 1F1E6 × 0020 ÷ 3041 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 1F1E6 × 0308 × 3041 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 1F1E6 × 0308 × 0020 ÷ 3041 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 261D ÷ 1B05 ÷ # × [0.3] WHITE UP POINTING INDEX (EB) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 261D × 0020 ÷ 1B05 ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 261D × 0308 ÷ 1B05 ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 261D × 0308 × 0020 ÷ 1B05 ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
× 261D ÷ 0023 ÷ # × [0.3] WHITE UP POINTING INDEX (EB) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
× 261D × 0020 ÷ 0023 ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
× 261D × 0308 ÷ 0023 ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
× 261D × 0308 × 0020 ÷ 0023 ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 261D ÷ 11003 ÷ # × [0.3] WHITE UP POINTING INDEX (EB) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 261D × 0020 ÷ 11003 ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 261D × 0308 ÷ 11003 ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 261D × 0308 × 0020 ÷ 11003 ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 261D ÷ 1BC0 ÷ # × [0.3] WHITE UP POINTING INDEX (EB) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 261D × 0020 ÷ 1BC0 ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 261D × 0308 ÷ 1BC0 ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 261D × 0308 × 0020 ÷ 1BC0 ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
× 261D ÷ 2014 ÷ # × [0.3] WHITE UP POINTING INDEX (EB) ÷ [999.0] EM DASH (B2) ÷ [0.3]
× 261D × 0020 ÷ 2014 ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
× 261D × 0308 ÷ 2014 ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
@@ -5758,10 +7694,10 @@
× 261D × 0020 ÷ 002D ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
× 261D × 0308 × 002D ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
× 261D × 0308 × 0020 ÷ 002D ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 261D ÷ 231A ÷ # × [0.3] WHITE UP POINTING INDEX (EB) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 261D × 0020 ÷ 231A ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 261D × 0308 ÷ 231A ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 261D × 0308 × 0020 ÷ 231A ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 261D ÷ 1B50 ÷ # × [0.3] WHITE UP POINTING INDEX (EB) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 261D × 0020 ÷ 1B50 ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 261D × 0308 ÷ 1B50 ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 261D × 0308 × 0020 ÷ 1B50 ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
× 261D × 2024 ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
× 261D × 0020 ÷ 2024 ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
× 261D × 0308 × 2024 ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
@@ -5822,6 +7758,14 @@
× 261D × 0020 × 002F ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
× 261D × 0308 × 002F ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
× 261D × 0308 × 0020 × 002F ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 261D ÷ 1BF2 ÷ # × [0.3] WHITE UP POINTING INDEX (EB) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 261D × 0020 ÷ 1BF2 ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 261D × 0308 ÷ 1BF2 ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 261D × 0308 × 0020 ÷ 1BF2 ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 261D ÷ 1B44 ÷ # × [0.3] WHITE UP POINTING INDEX (EB) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 261D × 0020 ÷ 1B44 ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 261D × 0308 ÷ 1B44 ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 261D × 0308 × 0020 ÷ 1B44 ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
× 261D × 2060 ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 261D × 0020 × 2060 ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 261D × 0308 × 2060 ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
@@ -5842,6 +7786,14 @@
× 261D × 0020 ÷ 1F3FB ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 261D × 0308 × 1F3FB ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [30.21] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 261D × 0308 × 0020 ÷ 1F3FB ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 261D × 00AB ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 261D × 0020 ÷ 00AB ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 261D × 0308 × 00AB ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 261D × 0308 × 0020 ÷ 00AB ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 261D × 00BB ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 261D × 0020 × 00BB ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 261D × 0308 × 00BB ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 261D × 0308 × 0020 × 00BB ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
× 261D × 0029 ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 261D × 0020 × 0029 ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 261D × 0308 × 0029 ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
@@ -5874,10 +7826,22 @@
× 261D × 0020 ÷ 3041 ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 261D × 0308 × 3041 ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 261D × 0308 × 0020 ÷ 3041 ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 1F3FB ÷ 1B05 ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 1F3FB × 0020 ÷ 1B05 ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 1F3FB × 0308 ÷ 1B05 ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 1F3FB × 0308 × 0020 ÷ 1B05 ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
× 1F3FB ÷ 0023 ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
× 1F3FB × 0020 ÷ 0023 ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
× 1F3FB × 0308 ÷ 0023 ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
× 1F3FB × 0308 × 0020 ÷ 0023 ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 1F3FB ÷ 11003 ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 1F3FB × 0020 ÷ 11003 ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 1F3FB × 0308 ÷ 11003 ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 1F3FB × 0308 × 0020 ÷ 11003 ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 1F3FB ÷ 1BC0 ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 1F3FB × 0020 ÷ 1BC0 ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 1F3FB × 0308 ÷ 1BC0 ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 1F3FB × 0308 × 0020 ÷ 1BC0 ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
× 1F3FB ÷ 2014 ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
× 1F3FB × 0020 ÷ 2014 ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
× 1F3FB × 0308 ÷ 2014 ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
@@ -5930,10 +7894,10 @@
× 1F3FB × 0020 ÷ 002D ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
× 1F3FB × 0308 × 002D ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
× 1F3FB × 0308 × 0020 ÷ 002D ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 1F3FB ÷ 231A ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 1F3FB × 0020 ÷ 231A ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 1F3FB × 0308 ÷ 231A ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 1F3FB × 0308 × 0020 ÷ 231A ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 1F3FB ÷ 1B50 ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 1F3FB × 0020 ÷ 1B50 ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 1F3FB × 0308 ÷ 1B50 ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 1F3FB × 0308 × 0020 ÷ 1B50 ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
× 1F3FB × 2024 ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
× 1F3FB × 0020 ÷ 2024 ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
× 1F3FB × 0308 × 2024 ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
@@ -5994,6 +7958,14 @@
× 1F3FB × 0020 × 002F ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
× 1F3FB × 0308 × 002F ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
× 1F3FB × 0308 × 0020 × 002F ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 1F3FB ÷ 1BF2 ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 1F3FB × 0020 ÷ 1BF2 ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 1F3FB × 0308 ÷ 1BF2 ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 1F3FB × 0308 × 0020 ÷ 1BF2 ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 1F3FB ÷ 1B44 ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 1F3FB × 0020 ÷ 1B44 ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 1F3FB × 0308 ÷ 1B44 ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 1F3FB × 0308 × 0020 ÷ 1B44 ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
× 1F3FB × 2060 ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 1F3FB × 0020 × 2060 ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 1F3FB × 0308 × 2060 ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
@@ -6014,6 +7986,14 @@
× 1F3FB × 0020 ÷ 1F3FB ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 1F3FB × 0308 ÷ 1F3FB ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 1F3FB × 0308 × 0020 ÷ 1F3FB ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 1F3FB × 00AB ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 1F3FB × 0020 ÷ 00AB ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 1F3FB × 0308 × 00AB ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 1F3FB × 0308 × 0020 ÷ 00AB ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 1F3FB × 00BB ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 1F3FB × 0020 × 00BB ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 1F3FB × 0308 × 00BB ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 1F3FB × 0308 × 0020 × 00BB ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
× 1F3FB × 0029 ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 1F3FB × 0020 × 0029 ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 1F3FB × 0308 × 0029 ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
@@ -6046,10 +8026,422 @@
× 1F3FB × 0020 ÷ 3041 ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 1F3FB × 0308 × 3041 ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 1F3FB × 0308 × 0020 ÷ 3041 ÷ # × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 00AB × 1B05 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [15.11] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 00AB × 0020 × 1B05 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [15.11] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 00AB × 0308 × 1B05 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.11] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 00AB × 0308 × 0020 × 1B05 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.11] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 00AB × 0023 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [15.11] NUMBER SIGN (AL) ÷ [0.3]
+× 00AB × 0020 × 0023 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [15.11] NUMBER SIGN (AL) ÷ [0.3]
+× 00AB × 0308 × 0023 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.11] NUMBER SIGN (AL) ÷ [0.3]
+× 00AB × 0308 × 0020 × 0023 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.11] NUMBER SIGN (AL) ÷ [0.3]
+× 00AB × 11003 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [15.11] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 00AB × 0020 × 11003 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [15.11] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 00AB × 0308 × 11003 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.11] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 00AB × 0308 × 0020 × 11003 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.11] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 00AB × 1BC0 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [15.11] BATAK LETTER A (AS) ÷ [0.3]
+× 00AB × 0020 × 1BC0 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [15.11] BATAK LETTER A (AS) ÷ [0.3]
+× 00AB × 0308 × 1BC0 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.11] BATAK LETTER A (AS) ÷ [0.3]
+× 00AB × 0308 × 0020 × 1BC0 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.11] BATAK LETTER A (AS) ÷ [0.3]
+× 00AB × 2014 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [15.11] EM DASH (B2) ÷ [0.3]
+× 00AB × 0020 × 2014 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [15.11] EM DASH (B2) ÷ [0.3]
+× 00AB × 0308 × 2014 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.11] EM DASH (B2) ÷ [0.3]
+× 00AB × 0308 × 0020 × 2014 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.11] EM DASH (B2) ÷ [0.3]
+× 00AB × 0009 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [15.11] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 00AB × 0020 × 0009 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [15.11] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 00AB × 0308 × 0009 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.11] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 00AB × 0308 × 0020 × 0009 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.11] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 00AB × 00B4 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [15.11] ACUTE ACCENT (BB) ÷ [0.3]
+× 00AB × 0020 × 00B4 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [15.11] ACUTE ACCENT (BB) ÷ [0.3]
+× 00AB × 0308 × 00B4 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.11] ACUTE ACCENT (BB) ÷ [0.3]
+× 00AB × 0308 × 0020 × 00B4 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.11] ACUTE ACCENT (BB) ÷ [0.3]
+× 00AB × 000B ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 00AB × 0020 × 000B ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 00AB × 0308 × 000B ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 00AB × 0308 × 0020 × 000B ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 00AB × FFFC ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [15.11] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 00AB × 0020 × FFFC ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [15.11] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 00AB × 0308 × FFFC ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.11] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 00AB × 0308 × 0020 × FFFC ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.11] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 00AB × 007D ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 00AB × 0020 × 007D ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 00AB × 0308 × 007D ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 00AB × 0308 × 0020 × 007D ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 00AB × 000D ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 00AB × 0020 × 000D ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 00AB × 0308 × 000D ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 00AB × 0308 × 0020 × 000D ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 00AB × 0021 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 00AB × 0020 × 0021 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 00AB × 0308 × 0021 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 00AB × 0308 × 0020 × 0021 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 00AB × 00A0 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [12.1] NO-BREAK SPACE (GL) ÷ [0.3]
+× 00AB × 0020 × 00A0 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [15.11] NO-BREAK SPACE (GL) ÷ [0.3]
+× 00AB × 0308 × 00A0 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
+× 00AB × 0308 × 0020 × 00A0 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.11] NO-BREAK SPACE (GL) ÷ [0.3]
+× 00AB × AC00 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [15.11] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 00AB × 0020 × AC00 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [15.11] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 00AB × 0308 × AC00 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.11] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 00AB × 0308 × 0020 × AC00 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.11] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 00AB × AC01 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [15.11] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 00AB × 0020 × AC01 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [15.11] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 00AB × 0308 × AC01 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.11] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 00AB × 0308 × 0020 × AC01 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.11] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 00AB × 05D0 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [15.11] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 00AB × 0020 × 05D0 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [15.11] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 00AB × 0308 × 05D0 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.11] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 00AB × 0308 × 0020 × 05D0 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.11] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 00AB × 002D ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [15.11] HYPHEN-MINUS (HY) ÷ [0.3]
+× 00AB × 0020 × 002D ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [15.11] HYPHEN-MINUS (HY) ÷ [0.3]
+× 00AB × 0308 × 002D ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.11] HYPHEN-MINUS (HY) ÷ [0.3]
+× 00AB × 0308 × 0020 × 002D ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.11] HYPHEN-MINUS (HY) ÷ [0.3]
+× 00AB × 1B50 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [15.11] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 00AB × 0020 × 1B50 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [15.11] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 00AB × 0308 × 1B50 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.11] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 00AB × 0308 × 0020 × 1B50 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.11] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 00AB × 2024 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [15.11] ONE DOT LEADER (IN) ÷ [0.3]
+× 00AB × 0020 × 2024 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [15.11] ONE DOT LEADER (IN) ÷ [0.3]
+× 00AB × 0308 × 2024 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.11] ONE DOT LEADER (IN) ÷ [0.3]
+× 00AB × 0308 × 0020 × 2024 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.11] ONE DOT LEADER (IN) ÷ [0.3]
+× 00AB × 002C ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [13.02] COMMA (IS) ÷ [0.3]
+× 00AB × 0020 × 002C ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 00AB × 0308 × 002C ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] COMMA (IS) ÷ [0.3]
+× 00AB × 0308 × 0020 × 002C ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 00AB × 1100 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [15.11] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 00AB × 0020 × 1100 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [15.11] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 00AB × 0308 × 1100 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.11] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 00AB × 0308 × 0020 × 1100 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.11] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 00AB × 11A8 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [15.11] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 00AB × 0020 × 11A8 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [15.11] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 00AB × 0308 × 11A8 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.11] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 00AB × 0308 × 0020 × 11A8 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.11] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 00AB × 1160 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [15.11] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 00AB × 0020 × 1160 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [15.11] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 00AB × 0308 × 1160 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.11] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 00AB × 0308 × 0020 × 1160 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.11] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 00AB × 000A ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 00AB × 0020 × 000A ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 00AB × 0308 × 000A ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 00AB × 0308 × 0020 × 000A ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 00AB × 0085 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 00AB × 0020 × 0085 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 00AB × 0308 × 0085 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 00AB × 0308 × 0020 × 0085 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 00AB × 17D6 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [15.11] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 00AB × 0020 × 17D6 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [15.11] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 00AB × 0308 × 17D6 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.11] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 00AB × 0308 × 0020 × 17D6 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.11] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 00AB × 0030 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [15.11] DIGIT ZERO (NU) ÷ [0.3]
+× 00AB × 0020 × 0030 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [15.11] DIGIT ZERO (NU) ÷ [0.3]
+× 00AB × 0308 × 0030 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.11] DIGIT ZERO (NU) ÷ [0.3]
+× 00AB × 0308 × 0020 × 0030 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.11] DIGIT ZERO (NU) ÷ [0.3]
+× 00AB × 2329 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [15.11] LEFT-POINTING ANGLE BRACKET (OP) ÷ [0.3]
+× 00AB × 0020 × 2329 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [15.11] LEFT-POINTING ANGLE BRACKET (OP) ÷ [0.3]
+× 00AB × 0308 × 2329 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.11] LEFT-POINTING ANGLE BRACKET (OP) ÷ [0.3]
+× 00AB × 0308 × 0020 × 2329 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.11] LEFT-POINTING ANGLE BRACKET (OP) ÷ [0.3]
+× 00AB × 0025 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [15.11] PERCENT SIGN (PO) ÷ [0.3]
+× 00AB × 0020 × 0025 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [15.11] PERCENT SIGN (PO) ÷ [0.3]
+× 00AB × 0308 × 0025 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.11] PERCENT SIGN (PO) ÷ [0.3]
+× 00AB × 0308 × 0020 × 0025 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.11] PERCENT SIGN (PO) ÷ [0.3]
+× 00AB × 0024 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [15.11] DOLLAR SIGN (PR) ÷ [0.3]
+× 00AB × 0020 × 0024 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [15.11] DOLLAR SIGN (PR) ÷ [0.3]
+× 00AB × 0308 × 0024 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.11] DOLLAR SIGN (PR) ÷ [0.3]
+× 00AB × 0308 × 0020 × 0024 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.11] DOLLAR SIGN (PR) ÷ [0.3]
+× 00AB × 0022 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [15.11] QUOTATION MARK (QU) ÷ [0.3]
+× 00AB × 0020 × 0022 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [15.11] QUOTATION MARK (QU) ÷ [0.3]
+× 00AB × 0308 × 0022 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.11] QUOTATION MARK (QU) ÷ [0.3]
+× 00AB × 0308 × 0020 × 0022 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.11] QUOTATION MARK (QU) ÷ [0.3]
+× 00AB × 0020 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) ÷ [0.3]
+× 00AB × 0020 × 0020 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 00AB × 0308 × 0020 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 00AB × 0308 × 0020 × 0020 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 00AB × 002F ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 00AB × 0020 × 002F ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 00AB × 0308 × 002F ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
+× 00AB × 0308 × 0020 × 002F ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 00AB × 1BF2 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [15.11] BATAK PANGOLAT (VF) ÷ [0.3]
+× 00AB × 0020 × 1BF2 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [15.11] BATAK PANGOLAT (VF) ÷ [0.3]
+× 00AB × 0308 × 1BF2 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.11] BATAK PANGOLAT (VF) ÷ [0.3]
+× 00AB × 0308 × 0020 × 1BF2 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.11] BATAK PANGOLAT (VF) ÷ [0.3]
+× 00AB × 1B44 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [15.11] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 00AB × 0020 × 1B44 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [15.11] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 00AB × 0308 × 1B44 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.11] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 00AB × 0308 × 0020 × 1B44 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.11] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 00AB × 2060 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 00AB × 0020 × 2060 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 00AB × 0308 × 2060 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 00AB × 0308 × 0020 × 2060 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 00AB × 200B ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 00AB × 0020 × 200B ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 00AB × 0308 × 200B ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 00AB × 0308 × 0020 × 200B ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 00AB × 1F1E6 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [15.11] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 00AB × 0020 × 1F1E6 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [15.11] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 00AB × 0308 × 1F1E6 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.11] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 00AB × 0308 × 0020 × 1F1E6 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.11] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 00AB × 261D ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [15.11] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 00AB × 0020 × 261D ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [15.11] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 00AB × 0308 × 261D ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.11] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 00AB × 0308 × 0020 × 261D ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.11] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 00AB × 1F3FB ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [15.11] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 00AB × 0020 × 1F3FB ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [15.11] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 00AB × 0308 × 1F3FB ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.11] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 00AB × 0308 × 0020 × 1F3FB ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.11] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 00AB × 00AB ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [15.11] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 00AB × 0020 × 00AB ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [15.11] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 00AB × 0308 × 00AB ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.11] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 00AB × 0308 × 0020 × 00AB ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.11] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 00AB × 00BB ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [15.11] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 00AB × 0020 × 00BB ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [15.11] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 00AB × 0308 × 00BB ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.11] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 00AB × 0308 × 0020 × 00BB ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.11] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 00AB × 0029 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
+× 00AB × 0020 × 0029 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
+× 00AB × 0308 × 0029 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
+× 00AB × 0308 × 0020 × 0029 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
+× 00AB × 0028 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [15.11] LEFT PARENTHESIS (OP_OP30) ÷ [0.3]
+× 00AB × 0020 × 0028 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [15.11] LEFT PARENTHESIS (OP_OP30) ÷ [0.3]
+× 00AB × 0308 × 0028 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.11] LEFT PARENTHESIS (OP_OP30) ÷ [0.3]
+× 00AB × 0308 × 0020 × 0028 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.11] LEFT PARENTHESIS (OP_OP30) ÷ [0.3]
+× 00AB × 0001 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 00AB × 0020 × 0001 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [15.11] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 00AB × 0308 × 0001 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 00AB × 0308 × 0020 × 0001 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.11] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 00AB × 200D ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 00AB × 0020 × 200D ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [15.11] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 00AB × 0308 × 200D ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 00AB × 0308 × 0020 × 200D ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.11] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 00AB × 00A7 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [15.11] SECTION SIGN (AI_AL) ÷ [0.3]
+× 00AB × 0020 × 00A7 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [15.11] SECTION SIGN (AI_AL) ÷ [0.3]
+× 00AB × 0308 × 00A7 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.11] SECTION SIGN (AI_AL) ÷ [0.3]
+× 00AB × 0308 × 0020 × 00A7 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.11] SECTION SIGN (AI_AL) ÷ [0.3]
+× 00AB × 50005 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [15.11] <reserved-50005> (XX_AL) ÷ [0.3]
+× 00AB × 0020 × 50005 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [15.11] <reserved-50005> (XX_AL) ÷ [0.3]
+× 00AB × 0308 × 50005 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.11] <reserved-50005> (XX_AL) ÷ [0.3]
+× 00AB × 0308 × 0020 × 50005 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.11] <reserved-50005> (XX_AL) ÷ [0.3]
+× 00AB × 0E01 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [15.11] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 00AB × 0020 × 0E01 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [15.11] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 00AB × 0308 × 0E01 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.11] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 00AB × 0308 × 0020 × 0E01 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.11] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 00AB × 3041 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [15.11] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 00AB × 0020 × 3041 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [15.11] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 00AB × 0308 × 3041 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.11] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 00AB × 0308 × 0020 × 3041 ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.11] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 00BB × 1B05 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [19.02] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 00BB × 0020 ÷ 1B05 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 00BB × 0308 × 1B05 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 00BB × 0308 × 0020 ÷ 1B05 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 00BB × 0023 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [19.02] NUMBER SIGN (AL) ÷ [0.3]
+× 00BB × 0020 ÷ 0023 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 00BB × 0308 × 0023 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] NUMBER SIGN (AL) ÷ [0.3]
+× 00BB × 0308 × 0020 ÷ 0023 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 00BB × 11003 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [19.02] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 00BB × 0020 ÷ 11003 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 00BB × 0308 × 11003 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 00BB × 0308 × 0020 ÷ 11003 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 00BB × 1BC0 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [19.02] BATAK LETTER A (AS) ÷ [0.3]
+× 00BB × 0020 ÷ 1BC0 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 00BB × 0308 × 1BC0 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] BATAK LETTER A (AS) ÷ [0.3]
+× 00BB × 0308 × 0020 ÷ 1BC0 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 00BB × 2014 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [19.02] EM DASH (B2) ÷ [0.3]
+× 00BB × 0020 ÷ 2014 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 00BB × 0308 × 2014 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] EM DASH (B2) ÷ [0.3]
+× 00BB × 0308 × 0020 ÷ 2014 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 00BB × 0009 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [19.02] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 00BB × 0020 ÷ 0009 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 00BB × 0308 × 0009 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 00BB × 0308 × 0020 ÷ 0009 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 00BB × 00B4 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [19.02] ACUTE ACCENT (BB) ÷ [0.3]
+× 00BB × 0020 ÷ 00B4 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 00BB × 0308 × 00B4 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] ACUTE ACCENT (BB) ÷ [0.3]
+× 00BB × 0308 × 0020 ÷ 00B4 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 00BB × 000B ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 00BB × 0020 × 000B ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 00BB × 0308 × 000B ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 00BB × 0308 × 0020 × 000B ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 00BB × FFFC ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [19.02] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 00BB × 0020 ÷ FFFC ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 00BB × 0308 × FFFC ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 00BB × 0308 × 0020 ÷ FFFC ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 00BB × 007D ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 00BB × 0020 × 007D ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 00BB × 0308 × 007D ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 00BB × 0308 × 0020 × 007D ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 00BB × 000D ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 00BB × 0020 × 000D ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 00BB × 0308 × 000D ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 00BB × 0308 × 0020 × 000D ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 00BB × 0021 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 00BB × 0020 × 0021 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 00BB × 0308 × 0021 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 00BB × 0308 × 0020 × 0021 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 00BB × 00A0 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [12.1] NO-BREAK SPACE (GL) ÷ [0.3]
+× 00BB × 0020 ÷ 00A0 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 00BB × 0308 × 00A0 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
+× 00BB × 0308 × 0020 ÷ 00A0 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 00BB × AC00 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [19.02] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 00BB × 0020 ÷ AC00 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 00BB × 0308 × AC00 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 00BB × 0308 × 0020 ÷ AC00 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 00BB × AC01 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [19.02] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 00BB × 0020 ÷ AC01 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 00BB × 0308 × AC01 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 00BB × 0308 × 0020 ÷ AC01 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 00BB × 05D0 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [19.02] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 00BB × 0020 ÷ 05D0 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 00BB × 0308 × 05D0 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 00BB × 0308 × 0020 ÷ 05D0 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 00BB × 002D ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [19.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 00BB × 0020 ÷ 002D ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 00BB × 0308 × 002D ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 00BB × 0308 × 0020 ÷ 002D ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 00BB × 1B50 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [19.02] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 00BB × 0020 ÷ 1B50 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 00BB × 0308 × 1B50 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 00BB × 0308 × 0020 ÷ 1B50 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 00BB × 2024 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [19.02] ONE DOT LEADER (IN) ÷ [0.3]
+× 00BB × 0020 ÷ 2024 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 00BB × 0308 × 2024 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] ONE DOT LEADER (IN) ÷ [0.3]
+× 00BB × 0308 × 0020 ÷ 2024 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 00BB × 002C ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [13.02] COMMA (IS) ÷ [0.3]
+× 00BB × 0020 × 002C ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 00BB × 0308 × 002C ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] COMMA (IS) ÷ [0.3]
+× 00BB × 0308 × 0020 × 002C ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 00BB × 1100 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [19.02] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 00BB × 0020 ÷ 1100 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 00BB × 0308 × 1100 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 00BB × 0308 × 0020 ÷ 1100 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 00BB × 11A8 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [19.02] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 00BB × 0020 ÷ 11A8 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 00BB × 0308 × 11A8 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 00BB × 0308 × 0020 ÷ 11A8 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 00BB × 1160 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [19.02] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 00BB × 0020 ÷ 1160 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 00BB × 0308 × 1160 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 00BB × 0308 × 0020 ÷ 1160 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 00BB × 000A ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 00BB × 0020 × 000A ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 00BB × 0308 × 000A ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 00BB × 0308 × 0020 × 000A ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 00BB × 0085 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 00BB × 0020 × 0085 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 00BB × 0308 × 0085 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 00BB × 0308 × 0020 × 0085 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 00BB × 17D6 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [19.02] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 00BB × 0020 ÷ 17D6 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 00BB × 0308 × 17D6 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 00BB × 0308 × 0020 ÷ 17D6 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 00BB × 0030 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [19.02] DIGIT ZERO (NU) ÷ [0.3]
+× 00BB × 0020 ÷ 0030 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 00BB × 0308 × 0030 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] DIGIT ZERO (NU) ÷ [0.3]
+× 00BB × 0308 × 0020 ÷ 0030 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 00BB × 2329 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [19.02] LEFT-POINTING ANGLE BRACKET (OP) ÷ [0.3]
+× 00BB × 0020 ÷ 2329 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING ANGLE BRACKET (OP) ÷ [0.3]
+× 00BB × 0308 × 2329 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] LEFT-POINTING ANGLE BRACKET (OP) ÷ [0.3]
+× 00BB × 0308 × 0020 ÷ 2329 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING ANGLE BRACKET (OP) ÷ [0.3]
+× 00BB × 0025 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [19.02] PERCENT SIGN (PO) ÷ [0.3]
+× 00BB × 0020 ÷ 0025 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
+× 00BB × 0308 × 0025 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] PERCENT SIGN (PO) ÷ [0.3]
+× 00BB × 0308 × 0020 ÷ 0025 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
+× 00BB × 0024 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [19.02] DOLLAR SIGN (PR) ÷ [0.3]
+× 00BB × 0020 ÷ 0024 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 00BB × 0308 × 0024 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] DOLLAR SIGN (PR) ÷ [0.3]
+× 00BB × 0308 × 0020 ÷ 0024 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 00BB × 0022 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 00BB × 0020 ÷ 0022 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 00BB × 0308 × 0022 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 00BB × 0308 × 0020 ÷ 0022 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 00BB × 0020 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) ÷ [0.3]
+× 00BB × 0020 × 0020 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 00BB × 0308 × 0020 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 00BB × 0308 × 0020 × 0020 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 00BB × 002F ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 00BB × 0020 × 002F ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 00BB × 0308 × 002F ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
+× 00BB × 0308 × 0020 × 002F ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 00BB × 1BF2 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [19.02] BATAK PANGOLAT (VF) ÷ [0.3]
+× 00BB × 0020 ÷ 1BF2 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 00BB × 0308 × 1BF2 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] BATAK PANGOLAT (VF) ÷ [0.3]
+× 00BB × 0308 × 0020 ÷ 1BF2 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 00BB × 1B44 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [19.02] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 00BB × 0020 ÷ 1B44 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 00BB × 0308 × 1B44 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 00BB × 0308 × 0020 ÷ 1B44 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 00BB × 2060 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 00BB × 0020 × 2060 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 00BB × 0308 × 2060 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 00BB × 0308 × 0020 × 2060 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 00BB × 200B ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 00BB × 0020 × 200B ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 00BB × 0308 × 200B ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 00BB × 0308 × 0020 × 200B ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 00BB × 1F1E6 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [19.02] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 00BB × 0020 ÷ 1F1E6 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 00BB × 0308 × 1F1E6 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 00BB × 0308 × 0020 ÷ 1F1E6 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 00BB × 261D ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [19.02] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 00BB × 0020 ÷ 261D ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 00BB × 0308 × 261D ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 00BB × 0308 × 0020 ÷ 261D ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 00BB × 1F3FB ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [19.02] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 00BB × 0020 ÷ 1F3FB ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 00BB × 0308 × 1F3FB ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 00BB × 0308 × 0020 ÷ 1F3FB ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 00BB × 00AB ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 00BB × 0020 ÷ 00AB ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 00BB × 0308 × 00AB ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 00BB × 0308 × 0020 ÷ 00AB ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 00BB × 00BB ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 00BB × 0020 × 00BB ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 00BB × 0308 × 00BB ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 00BB × 0308 × 0020 × 00BB ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 00BB × 0029 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
+× 00BB × 0020 × 0029 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
+× 00BB × 0308 × 0029 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
+× 00BB × 0308 × 0020 × 0029 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
+× 00BB × 0028 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [19.02] LEFT PARENTHESIS (OP_OP30) ÷ [0.3]
+× 00BB × 0020 ÷ 0028 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP_OP30) ÷ [0.3]
+× 00BB × 0308 × 0028 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] LEFT PARENTHESIS (OP_OP30) ÷ [0.3]
+× 00BB × 0308 × 0020 ÷ 0028 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP_OP30) ÷ [0.3]
+× 00BB × 0001 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 00BB × 0020 ÷ 0001 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 00BB × 0308 × 0001 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 00BB × 0308 × 0020 ÷ 0001 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 00BB × 200D ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 00BB × 0020 ÷ 200D ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 00BB × 0308 × 200D ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 00BB × 0308 × 0020 ÷ 200D ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 00BB × 00A7 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [19.02] SECTION SIGN (AI_AL) ÷ [0.3]
+× 00BB × 0020 ÷ 00A7 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 00BB × 0308 × 00A7 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] SECTION SIGN (AI_AL) ÷ [0.3]
+× 00BB × 0308 × 0020 ÷ 00A7 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 00BB × 50005 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [19.02] <reserved-50005> (XX_AL) ÷ [0.3]
+× 00BB × 0020 ÷ 50005 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 00BB × 0308 × 50005 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] <reserved-50005> (XX_AL) ÷ [0.3]
+× 00BB × 0308 × 0020 ÷ 50005 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 00BB × 0E01 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [19.02] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 00BB × 0020 ÷ 0E01 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 00BB × 0308 × 0E01 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 00BB × 0308 × 0020 ÷ 0E01 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 00BB × 3041 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [19.02] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 00BB × 0020 ÷ 3041 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 00BB × 0308 × 3041 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 00BB × 0308 × 0020 ÷ 3041 ÷ # × [0.3] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 0029 ÷ 1B05 ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 0029 × 0020 ÷ 1B05 ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 0029 × 0308 ÷ 1B05 ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 0029 × 0308 × 0020 ÷ 1B05 ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
× 0029 × 0023 ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [30.02] NUMBER SIGN (AL) ÷ [0.3]
× 0029 × 0020 ÷ 0023 ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
× 0029 × 0308 × 0023 ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [30.02] NUMBER SIGN (AL) ÷ [0.3]
× 0029 × 0308 × 0020 ÷ 0023 ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 0029 ÷ 11003 ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0029 × 0020 ÷ 11003 ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0029 × 0308 ÷ 11003 ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0029 × 0308 × 0020 ÷ 11003 ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0029 ÷ 1BC0 ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 0029 × 0020 ÷ 1BC0 ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 0029 × 0308 ÷ 1BC0 ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 0029 × 0308 × 0020 ÷ 1BC0 ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
× 0029 ÷ 2014 ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) ÷ [999.0] EM DASH (B2) ÷ [0.3]
× 0029 × 0020 ÷ 2014 ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
× 0029 × 0308 ÷ 2014 ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
@@ -6102,10 +8494,10 @@
× 0029 × 0020 ÷ 002D ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
× 0029 × 0308 × 002D ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
× 0029 × 0308 × 0020 ÷ 002D ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 0029 ÷ 231A ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 0029 × 0020 ÷ 231A ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 0029 × 0308 ÷ 231A ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 0029 × 0308 × 0020 ÷ 231A ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 0029 ÷ 1B50 ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 0029 × 0020 ÷ 1B50 ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 0029 × 0308 ÷ 1B50 ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 0029 × 0308 × 0020 ÷ 1B50 ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
× 0029 × 2024 ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
× 0029 × 0020 ÷ 2024 ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
× 0029 × 0308 × 2024 ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
@@ -6166,6 +8558,14 @@
× 0029 × 0020 × 002F ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
× 0029 × 0308 × 002F ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
× 0029 × 0308 × 0020 × 002F ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 0029 ÷ 1BF2 ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0029 × 0020 ÷ 1BF2 ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0029 × 0308 ÷ 1BF2 ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0029 × 0308 × 0020 ÷ 1BF2 ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0029 ÷ 1B44 ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 0029 × 0020 ÷ 1B44 ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 0029 × 0308 ÷ 1B44 ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 0029 × 0308 × 0020 ÷ 1B44 ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
× 0029 × 2060 ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 0029 × 0020 × 2060 ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 0029 × 0308 × 2060 ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
@@ -6186,6 +8586,14 @@
× 0029 × 0020 ÷ 1F3FB ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 0029 × 0308 ÷ 1F3FB ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 0029 × 0308 × 0020 ÷ 1F3FB ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0029 × 00AB ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0029 × 0020 ÷ 00AB ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0029 × 0308 × 00AB ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0029 × 0308 × 0020 ÷ 00AB ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0029 × 00BB ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 0029 × 0020 × 00BB ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 0029 × 0308 × 00BB ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 0029 × 0308 × 0020 × 00BB ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
× 0029 × 0029 ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 0029 × 0020 × 0029 ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 0029 × 0308 × 0029 ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
@@ -6218,10 +8626,22 @@
× 0029 × 0020 × 3041 ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [7.01] SPACE (SP) × [16.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 0029 × 0308 × 3041 ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [16.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 0029 × 0308 × 0020 × 3041 ÷ # × [0.3] RIGHT PARENTHESIS (CP_CP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [16.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 0028 × 1B05 ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [14.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 0028 × 0020 × 1B05 ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [7.01] SPACE (SP) × [14.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 0028 × 0308 × 1B05 ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 0028 × 0308 × 0020 × 1B05 ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
× 0028 × 0023 ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [14.0] NUMBER SIGN (AL) ÷ [0.3]
× 0028 × 0020 × 0023 ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [7.01] SPACE (SP) × [14.0] NUMBER SIGN (AL) ÷ [0.3]
× 0028 × 0308 × 0023 ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] NUMBER SIGN (AL) ÷ [0.3]
× 0028 × 0308 × 0020 × 0023 ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] NUMBER SIGN (AL) ÷ [0.3]
+× 0028 × 11003 ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [14.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0028 × 0020 × 11003 ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [7.01] SPACE (SP) × [14.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0028 × 0308 × 11003 ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0028 × 0308 × 0020 × 11003 ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0028 × 1BC0 ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [14.0] BATAK LETTER A (AS) ÷ [0.3]
+× 0028 × 0020 × 1BC0 ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [7.01] SPACE (SP) × [14.0] BATAK LETTER A (AS) ÷ [0.3]
+× 0028 × 0308 × 1BC0 ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] BATAK LETTER A (AS) ÷ [0.3]
+× 0028 × 0308 × 0020 × 1BC0 ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] BATAK LETTER A (AS) ÷ [0.3]
× 0028 × 2014 ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [14.0] EM DASH (B2) ÷ [0.3]
× 0028 × 0020 × 2014 ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [7.01] SPACE (SP) × [14.0] EM DASH (B2) ÷ [0.3]
× 0028 × 0308 × 2014 ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] EM DASH (B2) ÷ [0.3]
@@ -6274,10 +8694,10 @@
× 0028 × 0020 × 002D ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [7.01] SPACE (SP) × [14.0] HYPHEN-MINUS (HY) ÷ [0.3]
× 0028 × 0308 × 002D ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] HYPHEN-MINUS (HY) ÷ [0.3]
× 0028 × 0308 × 0020 × 002D ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 0028 × 231A ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [14.0] WATCH (ID) ÷ [0.3]
-× 0028 × 0020 × 231A ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [7.01] SPACE (SP) × [14.0] WATCH (ID) ÷ [0.3]
-× 0028 × 0308 × 231A ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] WATCH (ID) ÷ [0.3]
-× 0028 × 0308 × 0020 × 231A ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] WATCH (ID) ÷ [0.3]
+× 0028 × 1B50 ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [14.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 0028 × 0020 × 1B50 ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [7.01] SPACE (SP) × [14.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 0028 × 0308 × 1B50 ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 0028 × 0308 × 0020 × 1B50 ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
× 0028 × 2024 ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [14.0] ONE DOT LEADER (IN) ÷ [0.3]
× 0028 × 0020 × 2024 ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [7.01] SPACE (SP) × [14.0] ONE DOT LEADER (IN) ÷ [0.3]
× 0028 × 0308 × 2024 ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] ONE DOT LEADER (IN) ÷ [0.3]
@@ -6338,6 +8758,14 @@
× 0028 × 0020 × 002F ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
× 0028 × 0308 × 002F ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
× 0028 × 0308 × 0020 × 002F ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 0028 × 1BF2 ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [14.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0028 × 0020 × 1BF2 ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [7.01] SPACE (SP) × [14.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0028 × 0308 × 1BF2 ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0028 × 0308 × 0020 × 1BF2 ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0028 × 1B44 ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [14.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 0028 × 0020 × 1B44 ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [7.01] SPACE (SP) × [14.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 0028 × 0308 × 1B44 ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 0028 × 0308 × 0020 × 1B44 ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
× 0028 × 2060 ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 0028 × 0020 × 2060 ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 0028 × 0308 × 2060 ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
@@ -6358,6 +8786,14 @@
× 0028 × 0020 × 1F3FB ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [7.01] SPACE (SP) × [14.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 0028 × 0308 × 1F3FB ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 0028 × 0308 × 0020 × 1F3FB ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0028 × 00AB ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [14.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0028 × 0020 × 00AB ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [7.01] SPACE (SP) × [14.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0028 × 0308 × 00AB ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0028 × 0308 × 0020 × 00AB ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0028 × 00BB ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [14.0] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 0028 × 0020 × 00BB ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [7.01] SPACE (SP) × [14.0] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 0028 × 0308 × 00BB ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 0028 × 0308 × 0020 × 00BB ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
× 0028 × 0029 ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 0028 × 0020 × 0029 ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 0028 × 0308 × 0029 ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
@@ -6390,10 +8826,22 @@
× 0028 × 0020 × 3041 ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [7.01] SPACE (SP) × [14.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 0028 × 0308 × 3041 ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 0028 × 0308 × 0020 × 3041 ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 0001 ÷ 1B05 ÷ # × [0.3] <START OF HEADING> (CM1_CM) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 0001 × 0020 ÷ 1B05 ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 0001 × 0308 ÷ 1B05 ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 0001 × 0308 × 0020 ÷ 1B05 ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
× 0001 × 0023 ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
× 0001 × 0020 ÷ 0023 ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
× 0001 × 0308 × 0023 ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
× 0001 × 0308 × 0020 ÷ 0023 ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 0001 ÷ 11003 ÷ # × [0.3] <START OF HEADING> (CM1_CM) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0001 × 0020 ÷ 11003 ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0001 × 0308 ÷ 11003 ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0001 × 0308 × 0020 ÷ 11003 ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0001 ÷ 1BC0 ÷ # × [0.3] <START OF HEADING> (CM1_CM) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 0001 × 0020 ÷ 1BC0 ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 0001 × 0308 ÷ 1BC0 ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 0001 × 0308 × 0020 ÷ 1BC0 ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
× 0001 ÷ 2014 ÷ # × [0.3] <START OF HEADING> (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
× 0001 × 0020 ÷ 2014 ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
× 0001 × 0308 ÷ 2014 ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
@@ -6446,10 +8894,10 @@
× 0001 × 0020 ÷ 002D ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
× 0001 × 0308 × 002D ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
× 0001 × 0308 × 0020 ÷ 002D ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 0001 ÷ 231A ÷ # × [0.3] <START OF HEADING> (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 0001 × 0020 ÷ 231A ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 0001 × 0308 ÷ 231A ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 0001 × 0308 × 0020 ÷ 231A ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 0001 ÷ 1B50 ÷ # × [0.3] <START OF HEADING> (CM1_CM) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 0001 × 0020 ÷ 1B50 ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 0001 × 0308 ÷ 1B50 ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 0001 × 0308 × 0020 ÷ 1B50 ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
× 0001 × 2024 ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
× 0001 × 0020 ÷ 2024 ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
× 0001 × 0308 × 2024 ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
@@ -6510,6 +8958,14 @@
× 0001 × 0020 × 002F ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
× 0001 × 0308 × 002F ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.04] SOLIDUS (SY) ÷ [0.3]
× 0001 × 0308 × 0020 × 002F ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 0001 ÷ 1BF2 ÷ # × [0.3] <START OF HEADING> (CM1_CM) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0001 × 0020 ÷ 1BF2 ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0001 × 0308 ÷ 1BF2 ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0001 × 0308 × 0020 ÷ 1BF2 ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0001 ÷ 1B44 ÷ # × [0.3] <START OF HEADING> (CM1_CM) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 0001 × 0020 ÷ 1B44 ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 0001 × 0308 ÷ 1B44 ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 0001 × 0308 × 0020 ÷ 1B44 ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
× 0001 × 2060 ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 0001 × 0020 × 2060 ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 0001 × 0308 × 2060 ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
@@ -6530,6 +8986,14 @@
× 0001 × 0020 ÷ 1F3FB ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 0001 × 0308 ÷ 1F3FB ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 0001 × 0308 × 0020 ÷ 1F3FB ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0001 × 00AB ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0001 × 0020 ÷ 00AB ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0001 × 0308 × 00AB ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0001 × 0308 × 0020 ÷ 00AB ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0001 × 00BB ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 0001 × 0020 × 00BB ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 0001 × 0308 × 00BB ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 0001 × 0308 × 0020 × 00BB ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
× 0001 × 0029 ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [13.04] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 0001 × 0020 × 0029 ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 0001 × 0308 × 0029 ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.04] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
@@ -6562,10 +9026,22 @@
× 0001 × 0020 ÷ 3041 ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 0001 × 0308 × 3041 ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 0001 × 0308 × 0020 ÷ 3041 ÷ # × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 200D × 1B05 ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 200D × 0020 ÷ 1B05 ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 200D × 0308 ÷ 1B05 ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 200D × 0308 × 0020 ÷ 1B05 ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
× 200D × 0023 ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] NUMBER SIGN (AL) ÷ [0.3]
× 200D × 0020 ÷ 0023 ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
× 200D × 0308 × 0023 ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] COMBINING DIAERESIS (CM1_CM) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
× 200D × 0308 × 0020 ÷ 0023 ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 200D × 11003 ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 200D × 0020 ÷ 11003 ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 200D × 0308 ÷ 11003 ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 200D × 0308 × 0020 ÷ 11003 ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 200D × 1BC0 ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] BATAK LETTER A (AS) ÷ [0.3]
+× 200D × 0020 ÷ 1BC0 ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 200D × 0308 ÷ 1BC0 ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 200D × 0308 × 0020 ÷ 1BC0 ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
× 200D × 2014 ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] EM DASH (B2) ÷ [0.3]
× 200D × 0020 ÷ 2014 ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
× 200D × 0308 ÷ 2014 ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
@@ -6618,10 +9094,10 @@
× 200D × 0020 ÷ 002D ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
× 200D × 0308 × 002D ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
× 200D × 0308 × 0020 ÷ 002D ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 200D × 231A ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] WATCH (ID) ÷ [0.3]
-× 200D × 0020 ÷ 231A ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 200D × 0308 ÷ 231A ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 200D × 0308 × 0020 ÷ 231A ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 200D × 1B50 ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 200D × 0020 ÷ 1B50 ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 200D × 0308 ÷ 1B50 ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 200D × 0308 × 0020 ÷ 1B50 ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
× 200D × 2024 ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] ONE DOT LEADER (IN) ÷ [0.3]
× 200D × 0020 ÷ 2024 ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
× 200D × 0308 × 2024 ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] COMBINING DIAERESIS (CM1_CM) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
@@ -6682,6 +9158,14 @@
× 200D × 0020 × 002F ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
× 200D × 0308 × 002F ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] COMBINING DIAERESIS (CM1_CM) × [13.04] SOLIDUS (SY) ÷ [0.3]
× 200D × 0308 × 0020 × 002F ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 200D × 1BF2 ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] BATAK PANGOLAT (VF) ÷ [0.3]
+× 200D × 0020 ÷ 1BF2 ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 200D × 0308 ÷ 1BF2 ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 200D × 0308 × 0020 ÷ 1BF2 ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 200D × 1B44 ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 200D × 0020 ÷ 1B44 ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 200D × 0308 ÷ 1B44 ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 200D × 0308 × 0020 ÷ 1B44 ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
× 200D × 2060 ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] WORD JOINER (WJ) ÷ [0.3]
× 200D × 0020 × 2060 ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 200D × 0308 × 2060 ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
@@ -6702,6 +9186,14 @@
× 200D × 0020 ÷ 1F3FB ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 200D × 0308 ÷ 1F3FB ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 200D × 0308 × 0020 ÷ 1F3FB ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 200D × 00AB ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 200D × 0020 ÷ 00AB ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 200D × 0308 × 00AB ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] COMBINING DIAERESIS (CM1_CM) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 200D × 0308 × 0020 ÷ 00AB ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 200D × 00BB ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 200D × 0020 × 00BB ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 200D × 0308 × 00BB ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] COMBINING DIAERESIS (CM1_CM) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 200D × 0308 × 0020 × 00BB ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
× 200D × 0029 ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 200D × 0020 × 0029 ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 200D × 0308 × 0029 ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] COMBINING DIAERESIS (CM1_CM) × [13.04] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
@@ -6734,10 +9226,22 @@
× 200D × 0020 ÷ 3041 ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 200D × 0308 × 3041 ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 200D × 0308 × 0020 ÷ 3041 ÷ # × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 00A7 ÷ 1B05 ÷ # × [0.3] SECTION SIGN (AI_AL) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 00A7 × 0020 ÷ 1B05 ÷ # × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 00A7 × 0308 ÷ 1B05 ÷ # × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 00A7 × 0308 × 0020 ÷ 1B05 ÷ # × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
× 00A7 × 0023 ÷ # × [0.3] SECTION SIGN (AI_AL) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
× 00A7 × 0020 ÷ 0023 ÷ # × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
× 00A7 × 0308 × 0023 ÷ # × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
× 00A7 × 0308 × 0020 ÷ 0023 ÷ # × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 00A7 ÷ 11003 ÷ # × [0.3] SECTION SIGN (AI_AL) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 00A7 × 0020 ÷ 11003 ÷ # × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 00A7 × 0308 ÷ 11003 ÷ # × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 00A7 × 0308 × 0020 ÷ 11003 ÷ # × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 00A7 ÷ 1BC0 ÷ # × [0.3] SECTION SIGN (AI_AL) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 00A7 × 0020 ÷ 1BC0 ÷ # × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 00A7 × 0308 ÷ 1BC0 ÷ # × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 00A7 × 0308 × 0020 ÷ 1BC0 ÷ # × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
× 00A7 ÷ 2014 ÷ # × [0.3] SECTION SIGN (AI_AL) ÷ [999.0] EM DASH (B2) ÷ [0.3]
× 00A7 × 0020 ÷ 2014 ÷ # × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
× 00A7 × 0308 ÷ 2014 ÷ # × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
@@ -6790,10 +9294,10 @@
× 00A7 × 0020 ÷ 002D ÷ # × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
× 00A7 × 0308 × 002D ÷ # × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
× 00A7 × 0308 × 0020 ÷ 002D ÷ # × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 00A7 ÷ 231A ÷ # × [0.3] SECTION SIGN (AI_AL) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 00A7 × 0020 ÷ 231A ÷ # × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 00A7 × 0308 ÷ 231A ÷ # × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 00A7 × 0308 × 0020 ÷ 231A ÷ # × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 00A7 ÷ 1B50 ÷ # × [0.3] SECTION SIGN (AI_AL) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 00A7 × 0020 ÷ 1B50 ÷ # × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 00A7 × 0308 ÷ 1B50 ÷ # × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 00A7 × 0308 × 0020 ÷ 1B50 ÷ # × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
× 00A7 × 2024 ÷ # × [0.3] SECTION SIGN (AI_AL) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
× 00A7 × 0020 ÷ 2024 ÷ # × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
× 00A7 × 0308 × 2024 ÷ # × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
@@ -6854,6 +9358,14 @@
× 00A7 × 0020 × 002F ÷ # × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
× 00A7 × 0308 × 002F ÷ # × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
× 00A7 × 0308 × 0020 × 002F ÷ # × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 00A7 ÷ 1BF2 ÷ # × [0.3] SECTION SIGN (AI_AL) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 00A7 × 0020 ÷ 1BF2 ÷ # × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 00A7 × 0308 ÷ 1BF2 ÷ # × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 00A7 × 0308 × 0020 ÷ 1BF2 ÷ # × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 00A7 ÷ 1B44 ÷ # × [0.3] SECTION SIGN (AI_AL) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 00A7 × 0020 ÷ 1B44 ÷ # × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 00A7 × 0308 ÷ 1B44 ÷ # × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 00A7 × 0308 × 0020 ÷ 1B44 ÷ # × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
× 00A7 × 2060 ÷ # × [0.3] SECTION SIGN (AI_AL) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 00A7 × 0020 × 2060 ÷ # × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 00A7 × 0308 × 2060 ÷ # × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
@@ -6874,6 +9386,14 @@
× 00A7 × 0020 ÷ 1F3FB ÷ # × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 00A7 × 0308 ÷ 1F3FB ÷ # × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 00A7 × 0308 × 0020 ÷ 1F3FB ÷ # × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 00A7 × 00AB ÷ # × [0.3] SECTION SIGN (AI_AL) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 00A7 × 0020 ÷ 00AB ÷ # × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 00A7 × 0308 × 00AB ÷ # × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 00A7 × 0308 × 0020 ÷ 00AB ÷ # × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 00A7 × 00BB ÷ # × [0.3] SECTION SIGN (AI_AL) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 00A7 × 0020 × 00BB ÷ # × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 00A7 × 0308 × 00BB ÷ # × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 00A7 × 0308 × 0020 × 00BB ÷ # × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
× 00A7 × 0029 ÷ # × [0.3] SECTION SIGN (AI_AL) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 00A7 × 0020 × 0029 ÷ # × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 00A7 × 0308 × 0029 ÷ # × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
@@ -6906,10 +9426,22 @@
× 00A7 × 0020 ÷ 3041 ÷ # × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 00A7 × 0308 × 3041 ÷ # × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 00A7 × 0308 × 0020 ÷ 3041 ÷ # × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 50005 ÷ 1B05 ÷ # × [0.3] <reserved-50005> (XX_AL) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 50005 × 0020 ÷ 1B05 ÷ # × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 50005 × 0308 ÷ 1B05 ÷ # × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 50005 × 0308 × 0020 ÷ 1B05 ÷ # × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
× 50005 × 0023 ÷ # × [0.3] <reserved-50005> (XX_AL) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
× 50005 × 0020 ÷ 0023 ÷ # × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
× 50005 × 0308 × 0023 ÷ # × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
× 50005 × 0308 × 0020 ÷ 0023 ÷ # × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 50005 ÷ 11003 ÷ # × [0.3] <reserved-50005> (XX_AL) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 50005 × 0020 ÷ 11003 ÷ # × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 50005 × 0308 ÷ 11003 ÷ # × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 50005 × 0308 × 0020 ÷ 11003 ÷ # × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 50005 ÷ 1BC0 ÷ # × [0.3] <reserved-50005> (XX_AL) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 50005 × 0020 ÷ 1BC0 ÷ # × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 50005 × 0308 ÷ 1BC0 ÷ # × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 50005 × 0308 × 0020 ÷ 1BC0 ÷ # × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
× 50005 ÷ 2014 ÷ # × [0.3] <reserved-50005> (XX_AL) ÷ [999.0] EM DASH (B2) ÷ [0.3]
× 50005 × 0020 ÷ 2014 ÷ # × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
× 50005 × 0308 ÷ 2014 ÷ # × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
@@ -6962,10 +9494,10 @@
× 50005 × 0020 ÷ 002D ÷ # × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
× 50005 × 0308 × 002D ÷ # × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
× 50005 × 0308 × 0020 ÷ 002D ÷ # × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 50005 ÷ 231A ÷ # × [0.3] <reserved-50005> (XX_AL) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 50005 × 0020 ÷ 231A ÷ # × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 50005 × 0308 ÷ 231A ÷ # × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 50005 × 0308 × 0020 ÷ 231A ÷ # × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 50005 ÷ 1B50 ÷ # × [0.3] <reserved-50005> (XX_AL) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 50005 × 0020 ÷ 1B50 ÷ # × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 50005 × 0308 ÷ 1B50 ÷ # × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 50005 × 0308 × 0020 ÷ 1B50 ÷ # × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
× 50005 × 2024 ÷ # × [0.3] <reserved-50005> (XX_AL) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
× 50005 × 0020 ÷ 2024 ÷ # × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
× 50005 × 0308 × 2024 ÷ # × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
@@ -7026,6 +9558,14 @@
× 50005 × 0020 × 002F ÷ # × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
× 50005 × 0308 × 002F ÷ # × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
× 50005 × 0308 × 0020 × 002F ÷ # × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 50005 ÷ 1BF2 ÷ # × [0.3] <reserved-50005> (XX_AL) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 50005 × 0020 ÷ 1BF2 ÷ # × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 50005 × 0308 ÷ 1BF2 ÷ # × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 50005 × 0308 × 0020 ÷ 1BF2 ÷ # × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 50005 ÷ 1B44 ÷ # × [0.3] <reserved-50005> (XX_AL) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 50005 × 0020 ÷ 1B44 ÷ # × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 50005 × 0308 ÷ 1B44 ÷ # × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 50005 × 0308 × 0020 ÷ 1B44 ÷ # × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
× 50005 × 2060 ÷ # × [0.3] <reserved-50005> (XX_AL) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 50005 × 0020 × 2060 ÷ # × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 50005 × 0308 × 2060 ÷ # × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
@@ -7046,6 +9586,14 @@
× 50005 × 0020 ÷ 1F3FB ÷ # × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 50005 × 0308 ÷ 1F3FB ÷ # × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 50005 × 0308 × 0020 ÷ 1F3FB ÷ # × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 50005 × 00AB ÷ # × [0.3] <reserved-50005> (XX_AL) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 50005 × 0020 ÷ 00AB ÷ # × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 50005 × 0308 × 00AB ÷ # × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 50005 × 0308 × 0020 ÷ 00AB ÷ # × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 50005 × 00BB ÷ # × [0.3] <reserved-50005> (XX_AL) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 50005 × 0020 × 00BB ÷ # × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 50005 × 0308 × 00BB ÷ # × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 50005 × 0308 × 0020 × 00BB ÷ # × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
× 50005 × 0029 ÷ # × [0.3] <reserved-50005> (XX_AL) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 50005 × 0020 × 0029 ÷ # × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 50005 × 0308 × 0029 ÷ # × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
@@ -7078,10 +9626,22 @@
× 50005 × 0020 ÷ 3041 ÷ # × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 50005 × 0308 × 3041 ÷ # × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 50005 × 0308 × 0020 ÷ 3041 ÷ # × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 0E01 ÷ 1B05 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 0E01 × 0020 ÷ 1B05 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 0E01 × 0308 ÷ 1B05 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 0E01 × 0308 × 0020 ÷ 1B05 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
× 0E01 × 0023 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
× 0E01 × 0020 ÷ 0023 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
× 0E01 × 0308 × 0023 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
× 0E01 × 0308 × 0020 ÷ 0023 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 0E01 ÷ 11003 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0E01 × 0020 ÷ 11003 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0E01 × 0308 ÷ 11003 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0E01 × 0308 × 0020 ÷ 11003 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 0E01 ÷ 1BC0 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 0E01 × 0020 ÷ 1BC0 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 0E01 × 0308 ÷ 1BC0 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 0E01 × 0308 × 0020 ÷ 1BC0 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
× 0E01 ÷ 2014 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) ÷ [999.0] EM DASH (B2) ÷ [0.3]
× 0E01 × 0020 ÷ 2014 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
× 0E01 × 0308 ÷ 2014 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
@@ -7134,10 +9694,10 @@
× 0E01 × 0020 ÷ 002D ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
× 0E01 × 0308 × 002D ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
× 0E01 × 0308 × 0020 ÷ 002D ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 0E01 ÷ 231A ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 0E01 × 0020 ÷ 231A ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 0E01 × 0308 ÷ 231A ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 0E01 × 0308 × 0020 ÷ 231A ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 0E01 ÷ 1B50 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 0E01 × 0020 ÷ 1B50 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 0E01 × 0308 ÷ 1B50 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 0E01 × 0308 × 0020 ÷ 1B50 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
× 0E01 × 2024 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
× 0E01 × 0020 ÷ 2024 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
× 0E01 × 0308 × 2024 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
@@ -7198,6 +9758,14 @@
× 0E01 × 0020 × 002F ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
× 0E01 × 0308 × 002F ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
× 0E01 × 0308 × 0020 × 002F ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 0E01 ÷ 1BF2 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0E01 × 0020 ÷ 1BF2 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0E01 × 0308 ÷ 1BF2 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0E01 × 0308 × 0020 ÷ 1BF2 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 0E01 ÷ 1B44 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 0E01 × 0020 ÷ 1B44 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 0E01 × 0308 ÷ 1B44 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 0E01 × 0308 × 0020 ÷ 1B44 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
× 0E01 × 2060 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 0E01 × 0020 × 2060 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 0E01 × 0308 × 2060 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
@@ -7218,6 +9786,14 @@
× 0E01 × 0020 ÷ 1F3FB ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 0E01 × 0308 ÷ 1F3FB ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 0E01 × 0308 × 0020 ÷ 1F3FB ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0E01 × 00AB ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0E01 × 0020 ÷ 00AB ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0E01 × 0308 × 00AB ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0E01 × 0308 × 0020 ÷ 00AB ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 0E01 × 00BB ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 0E01 × 0020 × 00BB ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 0E01 × 0308 × 00BB ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 0E01 × 0308 × 0020 × 00BB ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
× 0E01 × 0029 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 0E01 × 0020 × 0029 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 0E01 × 0308 × 0029 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
@@ -7250,10 +9826,22 @@
× 0E01 × 0020 ÷ 3041 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 0E01 × 0308 × 3041 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
× 0E01 × 0308 × 0020 ÷ 3041 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 3041 ÷ 1B05 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 3041 × 0020 ÷ 1B05 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 3041 × 0308 ÷ 1B05 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
+× 3041 × 0308 × 0020 ÷ 1B05 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE LETTER AKARA (AK) ÷ [0.3]
× 3041 ÷ 0023 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
× 3041 × 0020 ÷ 0023 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
× 3041 × 0308 ÷ 0023 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
× 3041 × 0308 × 0020 ÷ 0023 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 3041 ÷ 11003 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 3041 × 0020 ÷ 11003 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 3041 × 0308 ÷ 11003 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 3041 × 0308 × 0020 ÷ 11003 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BRAHMI SIGN JIHVAMULIYA (AP) ÷ [0.3]
+× 3041 ÷ 1BC0 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 3041 × 0020 ÷ 1BC0 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
+× 3041 × 0308 ÷ 1BC0 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK LETTER A (AS) ÷ [0.3]
+× 3041 × 0308 × 0020 ÷ 1BC0 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK LETTER A (AS) ÷ [0.3]
× 3041 ÷ 2014 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [999.0] EM DASH (B2) ÷ [0.3]
× 3041 × 0020 ÷ 2014 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
× 3041 × 0308 ÷ 2014 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
@@ -7306,10 +9894,10 @@
× 3041 × 0020 ÷ 002D ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
× 3041 × 0308 × 002D ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
× 3041 × 0308 × 0020 ÷ 002D ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 3041 ÷ 231A ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 3041 × 0020 ÷ 231A ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 3041 × 0308 ÷ 231A ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 3041 × 0308 × 0020 ÷ 231A ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 3041 ÷ 1B50 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 3041 × 0020 ÷ 1B50 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 3041 × 0308 ÷ 1B50 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
+× 3041 × 0308 × 0020 ÷ 1B50 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE DIGIT ZERO (ID) ÷ [0.3]
× 3041 × 2024 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
× 3041 × 0020 ÷ 2024 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
× 3041 × 0308 × 2024 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [22.0] ONE DOT LEADER (IN) ÷ [0.3]
@@ -7370,6 +9958,14 @@
× 3041 × 0020 × 002F ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
× 3041 × 0308 × 002F ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
× 3041 × 0308 × 0020 × 002F ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 3041 ÷ 1BF2 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 3041 × 0020 ÷ 1BF2 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 3041 × 0308 ÷ 1BF2 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 3041 × 0308 × 0020 ÷ 1BF2 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BATAK PANGOLAT (VF) ÷ [0.3]
+× 3041 ÷ 1B44 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 3041 × 0020 ÷ 1B44 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 3041 × 0308 ÷ 1B44 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
+× 3041 × 0308 × 0020 ÷ 1B44 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] BALINESE ADEG ADEG (VI) ÷ [0.3]
× 3041 × 2060 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 3041 × 0020 × 2060 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
× 3041 × 0308 × 2060 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
@@ -7390,6 +9986,14 @@
× 3041 × 0020 ÷ 1F3FB ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 3041 × 0308 ÷ 1F3FB ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 3041 × 0308 × 0020 ÷ 1F3FB ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 3041 × 00AB ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 3041 × 0020 ÷ 00AB ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 3041 × 0308 × 00AB ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 3041 × 0308 × 0020 ÷ 00AB ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) ÷ [0.3]
+× 3041 × 00BB ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 3041 × 0020 × 00BB ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 3041 × 0308 × 00BB ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 3041 × 0308 × 0020 × 00BB ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
× 3041 × 0029 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 3041 × 0020 × 0029 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 3041 × 0308 × 0029 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
@@ -7457,7 +10061,7 @@
× 261D × 1F3FB ÷ # × [0.3] WHITE UP POINTING INDEX (EB) × [30.21] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
× 0066 × 0069 × 006E × 0061 × 006C ÷ # × [0.3] LATIN SMALL LETTER F (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER N (AL) × [28.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER L (AL) ÷ [0.3]
× 0063 × 0061 × 006E × 0027 × 0074 ÷ # × [0.3] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER N (AL) × [19.01] APOSTROPHE (QU) × [19.02] LATIN SMALL LETTER T (AL) ÷ [0.3]
-× 0063 × 0061 × 006E × 2019 × 0074 ÷ # × [0.3] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER N (AL) × [19.01] RIGHT SINGLE QUOTATION MARK (QU) × [19.02] LATIN SMALL LETTER T (AL) ÷ [0.3]
+× 0063 × 0061 × 006E × 2019 × 0074 ÷ # × [0.3] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER N (AL) × [19.01] RIGHT SINGLE QUOTATION MARK (QU_QU_Pf) × [19.02] LATIN SMALL LETTER T (AL) ÷ [0.3]
× 0027 × 0063 × 0061 × 006E × 0027 × 0020 ÷ 006E × 006F × 0074 ÷ # × [0.3] APOSTROPHE (QU) × [19.02] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER N (AL) × [19.01] APOSTROPHE (QU) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER N (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER T (AL) ÷ [0.3]
× 0063 × 0061 × 006E × 0020 ÷ 0027 × 006E × 006F × 0074 × 0027 ÷ # × [0.3] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER N (AL) × [7.01] SPACE (SP) ÷ [18.0] APOSTROPHE (QU) × [19.02] LATIN SMALL LETTER N (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER T (AL) × [19.01] APOSTROPHE (QU) ÷ [0.3]
× 0062 × 0075 × 0067 × 0028 × 0073 × 0029 × 0020 × 0020 × 0020 × 0020 × 0020 ÷ # × [0.3] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER U (AL) × [28.0] LATIN SMALL LETTER G (AL) × [30.01] LEFT PARENTHESIS (OP_OP30) × [14.0] LATIN SMALL LETTER S (AL) × [13.02] RIGHT PARENTHESIS (CP_CP30) × [7.01] SPACE (SP) × [7.01] SPACE (SP) × [7.01] SPACE (SP) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
@@ -7510,15 +10114,15 @@
× 0063 × 0072 × 0065 × 0301 × 005B × 0065 × 0072 × 007C ÷ 0065 × 0301 × 0028 × 0065 × 0029 ÷ 0028 × 0073 × 0029 × 005D ÷ # × [0.3] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER R (AL) × [28.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING ACUTE ACCENT (CM1_CM) × [30.01] LEFT SQUARE BRACKET (OP_OP30) × [14.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER R (AL) × [21.01] VERTICAL LINE (BA) ÷ [999.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING ACUTE ACCENT (CM1_CM) × [30.01] LEFT PARENTHESIS (OP_OP30) × [14.0] LATIN SMALL LETTER E (AL) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [999.0] LEFT PARENTHESIS (OP_OP30) × [14.0] LATIN SMALL LETTER S (AL) × [13.02] RIGHT PARENTHESIS (CP_CP30) × [13.02] RIGHT SQUARE BRACKET (CP_CP30) ÷ [0.3]
× 0063 × 0072 × 0065 × 0301 × 007B × 0065 × 0072 × 007C ÷ 0065 × 0301 × 0028 × 0065 × 0029 ÷ 0028 × 0073 × 0029 × 007D ÷ # × [0.3] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER R (AL) × [28.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING ACUTE ACCENT (CM1_CM) × [30.01] LEFT CURLY BRACKET (OP_OP30) × [14.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER R (AL) × [21.01] VERTICAL LINE (BA) ÷ [999.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING ACUTE ACCENT (CM1_CM) × [30.01] LEFT PARENTHESIS (OP_OP30) × [14.0] LATIN SMALL LETTER E (AL) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [999.0] LEFT PARENTHESIS (OP_OP30) × [14.0] LATIN SMALL LETTER S (AL) × [13.02] RIGHT PARENTHESIS (CP_CP30) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
× 0061 × 006D × 0062 × 0069 × 0067 × 0075 × 0028 × 0308 × 0029 ÷ 0028 × 0065 × 0308 × 0029 ÷ # × [0.3] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER G (AL) × [28.0] LATIN SMALL LETTER U (AL) × [30.01] LEFT PARENTHESIS (OP_OP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [999.0] LEFT PARENTHESIS (OP_OP30) × [14.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
-× 0061 × 006D × 0062 × 0069 × 0067 × 0075 × 0028 × 00AB × 0308 × 00BB × 0029 ÷ 0028 × 0065 × 0308 × 0029 ÷ # × [0.3] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER G (AL) × [28.0] LATIN SMALL LETTER U (AL) × [30.01] LEFT PARENTHESIS (OP_OP30) × [14.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [999.0] LEFT PARENTHESIS (OP_OP30) × [14.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
-× 0061 × 006D × 0062 × 0069 × 0067 × 0075 × 0028 × 00AB × 0020 ÷ 0308 × 0020 ÷ 00BB × 0029 ÷ 0028 × 0065 × 0308 × 0029 ÷ # × [0.3] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER G (AL) × [28.0] LATIN SMALL LETTER U (AL) × [30.01] LEFT PARENTHESIS (OP_OP30) × [14.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [999.0] LEFT PARENTHESIS (OP_OP30) × [14.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
-× 0061 × 006D × 0062 × 0069 × 0067 × 0075 × 00AB × 0020 × 0028 × 0020 × 0308 × 0020 × 0029 × 0020 ÷ 00BB × 0028 × 0065 × 0308 × 0029 ÷ # × [0.3] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER G (AL) × [28.0] LATIN SMALL LETTER U (AL) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU) × [7.01] SPACE (SP) × [15.0] LEFT PARENTHESIS (OP_OP30) × [7.01] SPACE (SP) × [14.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) × [7.01] SPACE (SP) ÷ [18.0] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU) × [15.0] LEFT PARENTHESIS (OP_OP30) × [14.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
-× 0061 × 006D × 0062 × 0069 × 0067 × 0075 × 00AB × 202F × 0028 × 0020 × 0308 × 0020 × 0029 × 202F × 00BB × 0028 × 0065 × 0308 × 0029 ÷ # × [0.3] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER G (AL) × [28.0] LATIN SMALL LETTER U (AL) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU) × [12.1] NARROW NO-BREAK SPACE (GL) × [12.0] LEFT PARENTHESIS (OP_OP30) × [7.01] SPACE (SP) × [14.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) × [12.1] NARROW NO-BREAK SPACE (GL) × [12.0] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU) × [15.0] LEFT PARENTHESIS (OP_OP30) × [14.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
+× 0061 × 006D × 0062 × 0069 × 0067 × 0075 × 0028 × 00AB × 0308 × 00BB × 0029 ÷ 0028 × 0065 × 0308 × 0029 ÷ # × [0.3] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER G (AL) × [28.0] LATIN SMALL LETTER U (AL) × [30.01] LEFT PARENTHESIS (OP_OP30) × [14.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.11] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [999.0] LEFT PARENTHESIS (OP_OP30) × [14.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
+× 0061 × 006D × 0062 × 0069 × 0067 × 0075 × 0028 × 00AB × 0020 × 0308 × 0020 × 00BB × 0029 ÷ 0028 × 0065 × 0308 × 0029 ÷ # × [0.3] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER G (AL) × [28.0] LATIN SMALL LETTER U (AL) × [30.01] LEFT PARENTHESIS (OP_OP30) × [14.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [15.11] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [13.02] RIGHT PARENTHESIS (CP_CP30) ÷ [999.0] LEFT PARENTHESIS (OP_OP30) × [14.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
+× 0061 × 006D × 0062 × 0069 × 0067 × 0075 × 00AB × 0020 ÷ 0028 × 0020 × 0308 × 0020 × 0029 × 0020 ÷ 00BB × 0028 × 0065 × 0308 × 0029 ÷ # × [0.3] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER G (AL) × [28.0] LATIN SMALL LETTER U (AL) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP_OP30) × [7.01] SPACE (SP) × [14.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) × [7.01] SPACE (SP) ÷ [18.0] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [19.02] LEFT PARENTHESIS (OP_OP30) × [14.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
+× 0061 × 006D × 0062 × 0069 × 0067 × 0075 × 00AB × 202F × 0028 × 0020 × 0308 × 0020 × 0029 × 202F × 00BB × 0028 × 0065 × 0308 × 0029 ÷ # × [0.3] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER G (AL) × [28.0] LATIN SMALL LETTER U (AL) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [12.1] NARROW NO-BREAK SPACE (GL) × [12.0] LEFT PARENTHESIS (OP_OP30) × [7.01] SPACE (SP) × [14.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP_CP30) × [12.1] NARROW NO-BREAK SPACE (GL) × [12.0] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [19.02] LEFT PARENTHESIS (OP_OP30) × [14.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 0061 × 006D × 0062 × 0069 × 0067 × 0075 × 007B × 0308 × 007D ÷ 0028 × 0065 × 0308 × 0029 ÷ # × [0.3] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER G (AL) × [28.0] LATIN SMALL LETTER U (AL) × [30.01] LEFT CURLY BRACKET (OP_OP30) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [999.0] LEFT PARENTHESIS (OP_OP30) × [14.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
-× 0061 × 006D × 0062 × 0069 × 0067 × 0075 × 007B × 00AB × 0308 × 00BB × 007D ÷ 0028 × 0065 × 0308 × 0029 ÷ # × [0.3] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER G (AL) × [28.0] LATIN SMALL LETTER U (AL) × [30.01] LEFT CURLY BRACKET (OP_OP30) × [14.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [999.0] LEFT PARENTHESIS (OP_OP30) × [14.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
-× 0061 × 006D × 0062 × 0069 × 0067 × 0075 × 007B × 00AB × 0020 ÷ 0308 × 0020 ÷ 00BB × 007D ÷ 0028 × 0065 × 0308 × 0029 ÷ # × [0.3] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER G (AL) × [28.0] LATIN SMALL LETTER U (AL) × [30.01] LEFT CURLY BRACKET (OP_OP30) × [14.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [999.0] LEFT PARENTHESIS (OP_OP30) × [14.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
-× 0061 × 006D × 0062 × 0069 × 0067 × 0075 × 00AB × 0020 × 007B × 0020 × 0308 × 0020 × 007D × 0020 ÷ 00BB × 0028 × 0065 × 0308 × 0029 ÷ # × [0.3] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER G (AL) × [28.0] LATIN SMALL LETTER U (AL) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU) × [7.01] SPACE (SP) × [15.0] LEFT CURLY BRACKET (OP_OP30) × [7.01] SPACE (SP) × [14.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU) × [15.0] LEFT PARENTHESIS (OP_OP30) × [14.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
-× 0061 × 006D × 0062 × 0069 × 0067 × 0075 × 00AB × 202F × 007B × 0020 × 0308 × 0020 × 007D × 202F × 00BB × 0028 × 0065 × 0308 × 0029 ÷ # × [0.3] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER G (AL) × [28.0] LATIN SMALL LETTER U (AL) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU) × [12.1] NARROW NO-BREAK SPACE (GL) × [12.0] LEFT CURLY BRACKET (OP_OP30) × [7.01] SPACE (SP) × [14.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) × [12.1] NARROW NO-BREAK SPACE (GL) × [12.0] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU) × [15.0] LEFT PARENTHESIS (OP_OP30) × [14.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
+× 0061 × 006D × 0062 × 0069 × 0067 × 0075 × 007B × 00AB × 0308 × 00BB × 007D ÷ 0028 × 0065 × 0308 × 0029 ÷ # × [0.3] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER G (AL) × [28.0] LATIN SMALL LETTER U (AL) × [30.01] LEFT CURLY BRACKET (OP_OP30) × [14.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.11] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [999.0] LEFT PARENTHESIS (OP_OP30) × [14.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
+× 0061 × 006D × 0062 × 0069 × 0067 × 0075 × 007B × 00AB × 0020 × 0308 × 0020 × 00BB × 007D ÷ 0028 × 0065 × 0308 × 0029 ÷ # × [0.3] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER G (AL) × [28.0] LATIN SMALL LETTER U (AL) × [30.01] LEFT CURLY BRACKET (OP_OP30) × [14.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [15.11] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [999.0] LEFT PARENTHESIS (OP_OP30) × [14.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
+× 0061 × 006D × 0062 × 0069 × 0067 × 0075 × 00AB × 0020 ÷ 007B × 0020 × 0308 × 0020 × 007D × 0020 ÷ 00BB × 0028 × 0065 × 0308 × 0029 ÷ # × [0.3] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER G (AL) × [28.0] LATIN SMALL LETTER U (AL) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) ÷ [18.0] LEFT CURLY BRACKET (OP_OP30) × [7.01] SPACE (SP) × [14.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [19.02] LEFT PARENTHESIS (OP_OP30) × [14.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
+× 0061 × 006D × 0062 × 0069 × 0067 × 0075 × 00AB × 202F × 007B × 0020 × 0308 × 0020 × 007D × 202F × 00BB × 0028 × 0065 × 0308 × 0029 ÷ # × [0.3] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER G (AL) × [28.0] LATIN SMALL LETTER U (AL) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [12.1] NARROW NO-BREAK SPACE (GL) × [12.0] LEFT CURLY BRACKET (OP_OP30) × [7.01] SPACE (SP) × [14.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) × [12.1] NARROW NO-BREAK SPACE (GL) × [12.0] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [19.02] LEFT PARENTHESIS (OP_OP30) × [14.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP_CP30) ÷ [0.3]
× 0028 × 0063 × 007A × 0065 × 0072 × 0077 × 006F × 006E × 006F × 00AD ÷ 2011 × 0029 × 006E × 0069 × 0065 × 0062 × 0069 × 0065 × 0073 × 006B × 0061 ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [14.0] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER Z (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER R (AL) × [28.0] LATIN SMALL LETTER W (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER N (AL) × [28.0] LATIN SMALL LETTER O (AL) × [21.01] SOFT HYPHEN (BA) ÷ [999.0] NON-BREAKING HYPHEN (GL) × [12.0] RIGHT PARENTHESIS (CP_CP30) × [30.02] LATIN SMALL LETTER N (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER S (AL) × [28.0] LATIN SMALL LETTER K (AL) × [28.0] LATIN SMALL LETTER A (AL) ÷ [0.3]
× 0028 × 0063 × 007A × 0065 × 0072 × 0077 × 006F × 006E × 006F × 00AD × 0029 × 2011 × 006E × 0069 × 0065 × 0062 × 0069 × 0065 × 0073 × 006B × 0061 ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [14.0] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER Z (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER R (AL) × [28.0] LATIN SMALL LETTER W (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER N (AL) × [28.0] LATIN SMALL LETTER O (AL) × [21.01] SOFT HYPHEN (BA) × [13.02] RIGHT PARENTHESIS (CP_CP30) × [12.1] NON-BREAKING HYPHEN (GL) × [12.0] LATIN SMALL LETTER N (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER S (AL) × [28.0] LATIN SMALL LETTER K (AL) × [28.0] LATIN SMALL LETTER A (AL) ÷ [0.3]
× 0028 × 0063 × 007A × 0065 × 0072 × 0077 × 006F × 006E × 006F × 0029 × 00AD ÷ 2011 × 006E × 0069 × 0065 × 0062 × 0069 × 0065 × 0073 × 006B × 0061 ÷ # × [0.3] LEFT PARENTHESIS (OP_OP30) × [14.0] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER Z (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER R (AL) × [28.0] LATIN SMALL LETTER W (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER N (AL) × [28.0] LATIN SMALL LETTER O (AL) × [13.02] RIGHT PARENTHESIS (CP_CP30) × [21.01] SOFT HYPHEN (BA) ÷ [999.0] NON-BREAKING HYPHEN (GL) × [12.0] LATIN SMALL LETTER N (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER S (AL) × [28.0] LATIN SMALL LETTER K (AL) × [28.0] LATIN SMALL LETTER A (AL) ÷ [0.3]
@@ -7632,7 +10236,7 @@
× 8CA8 × 0029 × 0020 ÷ 002D × 0020 ÷ 0028 × 0070 × 006F ÷ # × [0.3] CJK UNIFIED IDEOGRAPH-8CA8 (ID) × [13.02] RIGHT PARENTHESIS (CP_CP30) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP_OP30) × [14.0] LATIN SMALL LETTER P (AL) × [28.0] LATIN SMALL LETTER O (AL) ÷ [0.3]
× 91CF × 0029 × 0020 × 301C × 0020 ÷ 0028 × 0070 × 006F ÷ # × [0.3] CJK UNIFIED IDEOGRAPH-91CF (ID) × [13.02] RIGHT PARENTHESIS (CP_CP30) × [7.01] SPACE (SP) × [16.0] WAVE DASH (NS) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP_OP30) × [14.0] LATIN SMALL LETTER P (AL) × [28.0] LATIN SMALL LETTER O (AL) ÷ [0.3]
× 30C9 ÷ 91CD × FF09 × 0020 × 301C × 0020 ÷ 529B × 30FB ÷ 91CD ÷ # × [0.3] KATAKANA LETTER DO (ID) ÷ [999.0] CJK UNIFIED IDEOGRAPH-91CD (ID) × [13.02] FULLWIDTH RIGHT PARENTHESIS (CL) × [7.01] SPACE (SP) × [16.0] WAVE DASH (NS) × [7.01] SPACE (SP) ÷ [18.0] CJK UNIFIED IDEOGRAPH-529B (ID) × [21.03] KATAKANA MIDDLE DOT (NS) ÷ [999.0] CJK UNIFIED IDEOGRAPH-91CD (ID) ÷ [0.3]
-× 0061 × 0062 × 0022 × FF08 × 307E ÷ # × [0.3] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER B (AL) × [19.01] QUOTATION MARK (QU) × [15.0] FULLWIDTH LEFT PARENTHESIS (OP) × [14.0] HIRAGANA LETTER MA (ID) ÷ [0.3]
+× 0061 × 0062 × 0022 × FF08 × 307E ÷ # × [0.3] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER B (AL) × [19.01] QUOTATION MARK (QU) × [19.02] FULLWIDTH LEFT PARENTHESIS (OP) × [14.0] HIRAGANA LETTER MA (ID) ÷ [0.3]
× 306F × 0020 ÷ 0022 × 0073 × 0022 × 0020 ÷ # × [0.3] HIRAGANA LETTER HA (ID) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) × [19.02] LATIN SMALL LETTER S (AL) × [19.01] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [0.3]
× 306F × 3001 × 0022 × 0054 × 0068 × 0065 × 0020 ÷ # × [0.3] HIRAGANA LETTER HA (ID) × [13.02] IDEOGRAPHIC COMMA (CL) × [19.01] QUOTATION MARK (QU) × [19.02] LATIN CAPITAL LETTER T (AL) × [28.0] LATIN SMALL LETTER H (AL) × [28.0] LATIN SMALL LETTER E (AL) × [7.01] SPACE (SP) ÷ [0.3]
× 0064 × 006F × 0067 × 0022 × 0020 ÷ 3092 ÷ # × [0.3] LATIN SMALL LETTER D (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER G (AL) × [19.01] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER WO (ID) ÷ [0.3]
@@ -7678,9 +10282,25 @@
× 1F1F7 × 1F1FA ÷ 1F1F8 × 1F1EA ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER R (RI) × [30.11] REGIONAL INDICATOR SYMBOL LETTER U (RI) ÷ [30.13] REGIONAL INDICATOR SYMBOL LETTER S (RI) × [30.11] REGIONAL INDICATOR SYMBOL LETTER E (RI) ÷ [0.3]
× 1F1F7 × 1F1FA × 200B ÷ 1F1F8 × 1F1EA ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER R (RI) × [30.11] REGIONAL INDICATOR SYMBOL LETTER U (RI) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [8.0] REGIONAL INDICATOR SYMBOL LETTER S (RI) × [30.12] REGIONAL INDICATOR SYMBOL LETTER E (RI) ÷ [0.3]
× 05D0 × 002D × 05D0 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [21.02] HYPHEN-MINUS (HY) × [21.1] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 11F26 ÷ 11F02 × 11F2D ÷ 11F26 × 11F42 × 11F26 ÷ 11F31 × 11F41 ÷ # × [0.3] KAWI LETTER PA (AK) ÷ [999.0] KAWI SIGN REPHA (AP) × [28.11] KAWI LETTER LA (AK) ÷ [999.0] KAWI LETTER PA (AK) × [28.12] KAWI CONJOINER (VI) × [28.13] KAWI LETTER PA (AK) ÷ [999.0] KAWI LETTER SA (AK) × [9.0] KAWI SIGN KILLER (CM1_CM) ÷ [0.3]
+× 1BD7 × 1BEC ÷ 1BD2 × 1BEA × 1BC9 × 1BF3 ÷ 1BC2 × 1BE7 × 1BC9 × 1BF3 ÷ # × [0.3] BATAK LETTER NORTHERN TA (AS) × [9.0] BATAK VOWEL SIGN O (CM1_CM) ÷ [999.0] BATAK LETTER RA (AS) × [9.0] BATAK VOWEL SIGN I (CM1_CM) × [28.14] BATAK LETTER NA (AS) × [28.12] BATAK PANONGONAN (VF) ÷ [999.0] BATAK LETTER HA (AS) × [9.0] BATAK VOWEL SIGN E (CM1_CM) × [28.14] BATAK LETTER NA (AS) × [28.12] BATAK PANONGONAN (VF) ÷ [0.3]
+× 1B18 ÷ 1B27 × 1B44 × 200C × 1B2B × 1B38 ÷ 1B31 × 1B44 × 1B1D × 1B36 ÷ # × [0.3] BALINESE LETTER CA (AK) ÷ [999.0] BALINESE LETTER PA (AK) × [28.12] BALINESE ADEG ADEG (VI) × [9.0] ZERO WIDTH NON-JOINER (CM1_CM) × [28.13] BALINESE LETTER MA (AK) × [9.0] BALINESE VOWEL SIGN SUKU (CM1_CM) ÷ [999.0] BALINESE LETTER SA SAPA (AK) × [28.12] BALINESE ADEG ADEG (VI) × [28.13] BALINESE LETTER TA LATIK (AK) × [9.0] BALINESE VOWEL SIGN ULU (CM1_CM) ÷ [0.3]
+× 0065 × 25CC × 0302 × 25CC × 0323 ÷ # × [0.3] LATIN SMALL LETTER E (AL) × [28.0] DOTTED CIRCLE (AL) × [9.0] COMBINING CIRCUMFLEX ACCENT (CM1_CM) × [28.0] DOTTED CIRCLE (AL) × [9.0] COMBINING DOT BELOW (CM1_CM) ÷ [0.3]
+× 25CC × 1B44 × 1B2C ÷ # × [0.3] DOTTED CIRCLE (AL) × [28.12] BALINESE ADEG ADEG (VI) × [28.13] BALINESE LETTER YA (AK) ÷ [0.3]
+× 25CC × 1B44 × 25CC × 1B44 × 1B2C ÷ # × [0.3] DOTTED CIRCLE (AL) × [28.12] BALINESE ADEG ADEG (VI) × [28.13] DOTTED CIRCLE (AL) × [28.12] BALINESE ADEG ADEG (VI) × [28.13] BALINESE LETTER YA (AK) ÷ [0.3]
+× 25CC × A9B3 × A9C0 × A9A0 ÷ # × [0.3] DOTTED CIRCLE (AL) × [9.0] JAVANESE SIGN CECAK TELU (CM1_CM) × [28.12] JAVANESE PANGKON (VI) × [28.13] JAVANESE LETTER TA (AK) ÷ [0.3]
+× 201D × 004A × 006F × 002C × 0020 ÷ 006E × 00E5 × 0072 × 2019 × 006E × 0020 ÷ 0064 × 0061 × 0020 ÷ 0068 × 0061 × 0020 ÷ 0067 × 00E5 × 0074 × 0074 × 0020 ÷ 0065 × 0074 × 0074 × 0020 ÷ 0073 × 0074 × 00F6 × 0063 × 006B × 0020 ÷ 0074 × 0065 × 002C × 0020 ÷ 0073 × 00E5 × 0020 ÷ 006B × 006F × 006D × 006D × 0065 × 0072 × 2019 × 006E × 0020 ÷ 0074 × 0065 × 0020 ÷ 0065 × 0020 ÷ 00E5 × 002C × 0020 ÷ 00E5 × 0020 ÷ 0069 × 0020 ÷ 00E5 × 0061 × 0020 ÷ 00E4 × 0020 ÷ 0065 × 0020 ÷ 00F6 × 002E × 201D × 000A ÷ 201D × 0056 × 0061 × 0073 × 0061 × 201D × 002C × 0020 ÷ 0073 × 0061 × 2019 × 006E × 002E × 000A ÷ 201D × 00C5 × 0020 ÷ 0069 × 0020 ÷ 00E5 × 0061 × 0020 ÷ 00E4 × 0020 ÷ 0065 × 0020 ÷ 00F6 × 201D × 002C × 0020 ÷ 0073 × 0061 × 0020 ÷ 006A × 0061 × 002E ÷ # × [0.3] RIGHT DOUBLE QUOTATION MARK (QU_QU_Pf) × [19.02] LATIN CAPITAL LETTER J (AL) × [28.0] LATIN SMALL LETTER O (AL) × [13.02] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER N (AL) × [28.0] LATIN SMALL LETTER A WITH RING ABOVE (AL) × [28.0] LATIN SMALL LETTER R (AL) × [19.01] RIGHT SINGLE QUOTATION MARK (QU_QU_Pf) × [19.02] LATIN SMALL LETTER N (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER D (AL) × [28.0] LATIN SMALL LETTER A (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER H (AL) × [28.0] LATIN SMALL LETTER A (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER G (AL) × [28.0] LATIN SMALL LETTER A WITH RING ABOVE (AL) × [28.0] LATIN SMALL LETTER T (AL) × [28.0] LATIN SMALL LETTER T (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER T (AL) × [28.0] LATIN SMALL LETTER T (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER S (AL) × [28.0] LATIN SMALL LETTER T (AL) × [28.0] LATIN SMALL LETTER O WITH DIAERESIS (AL) × [28.0] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER K (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER T (AL) × [28.0] LATIN SMALL LETTER E (AL) × [13.02] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER S (AL) × [28.0] LATIN SMALL LETTER A WITH RING ABOVE (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER K (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER R (AL) × [19.01] RIGHT SINGLE QUOTATION MARK (QU_QU_Pf) × [19.02] LATIN SMALL LETTER N (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER T (AL) × [28.0] LATIN SMALL LETTER E (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER E (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER A WITH RING ABOVE (AL) × [13.02] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER A WITH RING ABOVE (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER I (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER A WITH RING ABOVE (AL) × [28.0] LATIN SMALL LETTER A (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER A WITH DIAERESIS (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER E (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER O WITH DIAERESIS (AL) × [13.02] FULL STOP (IS) × [15.21] RIGHT DOUBLE QUOTATION MARK (QU_QU_Pf) × [6.0] <LINE FEED (LF)> (LF) ÷ [5.03] RIGHT DOUBLE QUOTATION MARK (QU_QU_Pf) × [19.02] LATIN CAPITAL LETTER V (AL) × [28.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER S (AL) × [28.0] LATIN SMALL LETTER A (AL) × [15.21] RIGHT DOUBLE QUOTATION MARK (QU_QU_Pf) × [13.02] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER S (AL) × [28.0] LATIN SMALL LETTER A (AL) × [19.01] RIGHT SINGLE QUOTATION MARK (QU_QU_Pf) × [19.02] LATIN SMALL LETTER N (AL) × [13.02] FULL STOP (IS) × [6.0] <LINE FEED (LF)> (LF) ÷ [5.03] RIGHT DOUBLE QUOTATION MARK (QU_QU_Pf) × [19.02] LATIN CAPITAL LETTER A WITH RING ABOVE (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER I (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER A WITH RING ABOVE (AL) × [28.0] LATIN SMALL LETTER A (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER A WITH DIAERESIS (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER E (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER O WITH DIAERESIS (AL) × [15.21] RIGHT DOUBLE QUOTATION MARK (QU_QU_Pf) × [13.02] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER S (AL) × [28.0] LATIN SMALL LETTER A (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER J (AL) × [28.0] LATIN SMALL LETTER A (AL) × [13.02] FULL STOP (IS) ÷ [0.3]
+× 0045 × 006E × 0020 ÷ 0067 × 00E5 × 006E × 0067 × 0020 ÷ 0075 × 006E × 0064 × 0066 × 00F6 × 006C × 006C × 0020 ÷ 0064 × 0065 × 0074 × 0020 ÷ 0068 × 006F × 006E × 006F × 006D × 0020 ÷ 0064 × 006F × 0063 × 006B × 002C × 0020 ÷ 006D × 0065 × 0064 × 0061 × 006E × 0020 ÷ 0068 × 0061 × 006E × 0020 ÷ 0073 × 006C × 00E4 × 0070 × 0061 × 0064 × 0065 × 0020 ÷ 0070 × 00E5 × 0020 ÷ 0064 × 0065 × 0074 × 0020 ÷ 0076 × 00E5 × 0074 × 0061 × 0020 ÷ 0068 × 00F6 × 0065 × 0074 × 003A × 0020 ÷ 00BB × 0056 × 0061 × 0072 × 0066 × 00F6 × 0072 × 0020 ÷ 00E4 × 0072 × 0020 ÷ 0068 × 00F6 × 0065 × 0074 × 0020 ÷ 0072 × 0065 × 0064 × 0061 × 006E × 0020 ÷ 0074 × 006F × 0072 × 0072 × 0074 × 0020 ÷ 006F × 0063 × 0068 × 0020 ÷ 0069 × 006E × 006B × 00F6 × 0072 × 0074 × 0020 ÷ 0064 × 00E4 × 0072 × 0020 ÷ 0062 × 006F × 0072 × 0074 × 0061 × 0020 ÷ 0070 × 00E5 × 0020 ÷ 0053 × 006F × 006C × 0062 × 0061 × 0063 × 006B × 0065 × 006E × 002C × 0020 ÷ 006F × 0063 × 0068 × 0020 ÷ 0068 × 00E4 × 0072 × 0020 ÷ 0068 × 006F × 0073 × 0020 ÷ 006F × 0073 × 0073 × 0020 ÷ 00E4 × 0072 × 0020 ÷ 0064 × 0065 × 0074 × 0020 ÷ 0076 × 00E5 × 0074 × 0074 × 003F × 00BB × 0020 ÷ 2014 × 0020 ÷ 00BB × 0044 × 00E4 × 0072 × 0066 × 00F6 × 0072 × 0020 ÷ 0061 × 0074 × 0074 × 0020 ÷ 0064 × 0065 × 0020 ÷ 0068 × 0061 × 0020 ÷ 006F × 0066 × 0074 × 0061 × 0072 × 0065 × 0020 ÷ 0073 × 006F × 006C × 0020 ÷ 00E4 × 006E × 0020 ÷ 0076 × 0069 × 002E × 00BB ÷ # × [0.3] LATIN CAPITAL LETTER E (AL) × [28.0] LATIN SMALL LETTER N (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER G (AL) × [28.0] LATIN SMALL LETTER A WITH RING ABOVE (AL) × [28.0] LATIN SMALL LETTER N (AL) × [28.0] LATIN SMALL LETTER G (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER U (AL) × [28.0] LATIN SMALL LETTER N (AL) × [28.0] LATIN SMALL LETTER D (AL) × [28.0] LATIN SMALL LETTER F (AL) × [28.0] LATIN SMALL LETTER O WITH DIAERESIS (AL) × [28.0] LATIN SMALL LETTER L (AL) × [28.0] LATIN SMALL LETTER L (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER D (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER T (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER H (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER N (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER M (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER D (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER K (AL) × [13.02] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER D (AL) × [28.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER N (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER H (AL) × [28.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER N (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER S (AL) × [28.0] LATIN SMALL LETTER L (AL) × [28.0] LATIN SMALL LETTER A WITH DIAERESIS (AL) × [28.0] LATIN SMALL LETTER P (AL) × [28.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER D (AL) × [28.0] LATIN SMALL LETTER E (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER P (AL) × [28.0] LATIN SMALL LETTER A WITH RING ABOVE (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER D (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER T (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER V (AL) × [28.0] LATIN SMALL LETTER A WITH RING ABOVE (AL) × [28.0] LATIN SMALL LETTER T (AL) × [28.0] LATIN SMALL LETTER A (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER H (AL) × [28.0] LATIN SMALL LETTER O WITH DIAERESIS (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER T (AL) × [13.02] COLON (IS) × [7.01] SPACE (SP) ÷ [18.0] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [19.02] LATIN CAPITAL LETTER V (AL) × [28.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER R (AL) × [28.0] LATIN SMALL LETTER F (AL) × [28.0] LATIN SMALL LETTER O WITH DIAERESIS (AL) × [28.0] LATIN SMALL LETTER R (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER A WITH DIAERESIS (AL) × [28.0] LATIN SMALL LETTER R (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER H (AL) × [28.0] LATIN SMALL LETTER O WITH DIAERESIS (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER T (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER R (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER D (AL) × [28.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER N (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER T (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER R (AL) × [28.0] LATIN SMALL LETTER R (AL) × [28.0] LATIN SMALL LETTER T (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER H (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER N (AL) × [28.0] LATIN SMALL LETTER K (AL) × [28.0] LATIN SMALL LETTER O WITH DIAERESIS (AL) × [28.0] LATIN SMALL LETTER R (AL) × [28.0] LATIN SMALL LETTER T (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER D (AL) × [28.0] LATIN SMALL LETTER A WITH DIAERESIS (AL) × [28.0] LATIN SMALL LETTER R (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER R (AL) × [28.0] LATIN SMALL LETTER T (AL) × [28.0] LATIN SMALL LETTER A (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER P (AL) × [28.0] LATIN SMALL LETTER A WITH RING ABOVE (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN CAPITAL LETTER S (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER L (AL) × [28.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER K (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER N (AL) × [13.02] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER H (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER H (AL) × [28.0] LATIN SMALL LETTER A WITH DIAERESIS (AL) × [28.0] LATIN SMALL LETTER R (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER H (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER S (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER S (AL) × [28.0] LATIN SMALL LETTER S (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER A WITH DIAERESIS (AL) × [28.0] LATIN SMALL LETTER R (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER D (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER T (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER V (AL) × [28.0] LATIN SMALL LETTER A WITH RING ABOVE (AL) × [28.0] LATIN SMALL LETTER T (AL) × [28.0] LATIN SMALL LETTER T (AL) × [13.01] QUESTION MARK (EX) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [19.02] LATIN CAPITAL LETTER D (AL) × [28.0] LATIN SMALL LETTER A WITH DIAERESIS (AL) × [28.0] LATIN SMALL LETTER R (AL) × [28.0] LATIN SMALL LETTER F (AL) × [28.0] LATIN SMALL LETTER O WITH DIAERESIS (AL) × [28.0] LATIN SMALL LETTER R (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER T (AL) × [28.0] LATIN SMALL LETTER T (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER D (AL) × [28.0] LATIN SMALL LETTER E (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER H (AL) × [28.0] LATIN SMALL LETTER A (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER F (AL) × [28.0] LATIN SMALL LETTER T (AL) × [28.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER R (AL) × [28.0] LATIN SMALL LETTER E (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER S (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER L (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER A WITH DIAERESIS (AL) × [28.0] LATIN SMALL LETTER N (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER V (AL) × [28.0] LATIN SMALL LETTER I (AL) × [13.02] FULL STOP (IS) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 0076 × 006F × 0075 × 0073 × 0020 ÷ 006D × 0065 × 0020 ÷ 0068 × 0065 × 0075 × 0072 × 0074 × 0065 × 007A × 002C × 0020 ÷ 0076 × 006F × 0075 × 0073 × 0020 ÷ 0064 × 0069 × 0074 × 0065 × 0073 × 0020 × 003A × 0020 ÷ 00AB × 0020 × 0045 × 0078 × 0063 × 0075 × 0073 × 0065 × 007A × 002D ÷ 006D × 006F × 0069 × 002C × 0020 × 00BB × 0020 ÷ 0065 × 0074 × 0020 ÷ 0076 × 006F × 0075 × 0073 × 0020 ÷ 0063 × 0072 × 006F × 0079 × 0065 × 007A × 0020 ÷ 0071 × 0075 × 0065 × 0020 ÷ 0063 × 0065 × 006C × 0061 × 0020 ÷ 0073 × 0075 × 0066 × 0066 × 0069 × 0074 × 0020 × 003F ÷ # × [0.3] LATIN SMALL LETTER V (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER U (AL) × [28.0] LATIN SMALL LETTER S (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER E (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER H (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER U (AL) × [28.0] LATIN SMALL LETTER R (AL) × [28.0] LATIN SMALL LETTER T (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER Z (AL) × [13.02] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER V (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER U (AL) × [28.0] LATIN SMALL LETTER S (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER D (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER T (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER S (AL) × [7.01] SPACE (SP) × [13.02] COLON (IS) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [15.11] LATIN CAPITAL LETTER E (AL) × [28.0] LATIN SMALL LETTER X (AL) × [28.0] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER U (AL) × [28.0] LATIN SMALL LETTER S (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER Z (AL) × [21.02] HYPHEN-MINUS (HY) ÷ [999.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER I (AL) × [13.02] COMMA (IS) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER T (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER V (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER U (AL) × [28.0] LATIN SMALL LETTER S (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER R (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER Y (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER Z (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER Q (AL) × [28.0] LATIN SMALL LETTER U (AL) × [28.0] LATIN SMALL LETTER E (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER L (AL) × [28.0] LATIN SMALL LETTER A (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER S (AL) × [28.0] LATIN SMALL LETTER U (AL) × [28.0] LATIN SMALL LETTER F (AL) × [28.0] LATIN SMALL LETTER F (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER T (AL) × [7.01] SPACE (SP) × [13.01] QUESTION MARK (EX) ÷ [0.3]
+× 006A × 2019 × 0061 × 0069 × 0020 ÷ 0064 × 0069 × 0074 × 0020 × 003A × 0020 ÷ 00AB × 0020 × 0045 × 0078 × 0063 × 0075 × 0073 × 0065 × 007A × 002D ÷ 006D × 006F × 0069 × 002E × 0020 × 00BB × 0020 ÷ 0049 × 006C × 0020 ÷ 006D × 0065 × 0020 ÷ 0073 × 0065 × 006D × 0062 × 006C × 0065 × 0020 ÷ 0064 × 006F × 006E × 0063 × 0020 ÷ 0071 × 0075 × 0065 × 0020 ÷ 0063 × 2019 × 0065 × 0073 × 0074 × 0020 ÷ 0061 × 0073 × 0073 × 0065 × 007A × 002E ÷ # × [0.3] LATIN SMALL LETTER J (AL) × [19.01] RIGHT SINGLE QUOTATION MARK (QU_QU_Pf) × [19.02] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER I (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER D (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER T (AL) × [7.01] SPACE (SP) × [13.02] COLON (IS) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [15.11] LATIN CAPITAL LETTER E (AL) × [28.0] LATIN SMALL LETTER X (AL) × [28.0] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER U (AL) × [28.0] LATIN SMALL LETTER S (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER Z (AL) × [21.02] HYPHEN-MINUS (HY) ÷ [999.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER I (AL) × [13.02] FULL STOP (IS) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) ÷ [18.0] LATIN CAPITAL LETTER I (AL) × [28.0] LATIN SMALL LETTER L (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER E (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER S (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER L (AL) × [28.0] LATIN SMALL LETTER E (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER D (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER N (AL) × [28.0] LATIN SMALL LETTER C (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER Q (AL) × [28.0] LATIN SMALL LETTER U (AL) × [28.0] LATIN SMALL LETTER E (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER C (AL) × [19.01] RIGHT SINGLE QUOTATION MARK (QU_QU_Pf) × [19.02] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER S (AL) × [28.0] LATIN SMALL LETTER T (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER S (AL) × [28.0] LATIN SMALL LETTER S (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER Z (AL) × [13.02] FULL STOP (IS) ÷ [0.3]
+× 0045 × 0074 × 0020 ÷ 0076 × 0069 × 0073 × 0065 × 0020 ÷ 0061 × 0075 × 0020 ÷ 0066 × 0072 × 006F × 006E × 0074 × 0020 ÷ 006D × 006F × 006E × 0020 ÷ 0070 × 00E8 × 0072 × 0065 × 0020 ÷ 0065 × 006E × 0020 ÷ 0063 × 0072 × 0069 × 0061 × 006E × 0074 × 0020 × 003A × 0020 ÷ 00AB × 0020 × 0043 × 0061 × 0072 × 0061 × 006D × 0062 × 0061 × 0020 × 0021 × 0020 × 00BB × 2028 ÷ 004C × 0065 × 0020 ÷ 0063 × 006F × 0075 × 0070 × 0020 ÷ 0070 × 0061 × 0073 × 0073 × 0061 × 0020 ÷ 0073 × 0069 × 0020 ÷ 0070 × 0072 × 00E8 × 0073 × 002C × 0020 ÷ 0071 × 0075 × 0065 × 0020 ÷ 006C × 0065 × 0020 ÷ 0063 × 0068 × 0061 × 0070 × 0065 × 0061 × 0075 × 0020 ÷ 0074 × 006F × 006D × 0062 × 0061 × 2028 ÷ 0045 × 0074 × 0020 ÷ 0071 × 0075 × 0065 × 0020 ÷ 006C × 0065 × 0020 ÷ 0063 × 0068 × 0065 × 0076 × 0061 × 006C × 0020 ÷ 0066 × 0069 × 0074 × 0020 ÷ 0075 × 006E × 0020 ÷ 00E9 × 0063 × 0061 × 0072 × 0074 × 0020 ÷ 0065 × 006E × 0020 ÷ 0061 × 0072 × 0072 × 0069 × 00E8 × 0072 × 0065 × 002E × 2028 ÷ 00AB × 0020 × 0044 × 006F × 006E × 006E × 0065 × 002D ÷ 006C × 0075 × 0069 × 0020 ÷ 0074 × 006F × 0075 × 0074 × 0020 ÷ 0064 × 0065 × 0020 ÷ 006D × 00EA × 006D × 0065 × 0020 ÷ 00E0 × 0020 ÷ 0062 × 006F × 0069 × 0072 × 0065 × 002C × 0020 × 00BB × 0020 ÷ 0064 × 0069 × 0074 × 0020 ÷ 006D × 006F × 006E × 0020 ÷ 0070 × 00E8 × 0072 × 0065 × 002E ÷ # × [0.3] LATIN CAPITAL LETTER E (AL) × [28.0] LATIN SMALL LETTER T (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER V (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER S (AL) × [28.0] LATIN SMALL LETTER E (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER U (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER F (AL) × [28.0] LATIN SMALL LETTER R (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER N (AL) × [28.0] LATIN SMALL LETTER T (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER N (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER P (AL) × [28.0] LATIN SMALL LETTER E WITH GRAVE (AL) × [28.0] LATIN SMALL LETTER R (AL) × [28.0] LATIN SMALL LETTER E (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER N (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER R (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER N (AL) × [28.0] LATIN SMALL LETTER T (AL) × [7.01] SPACE (SP) × [13.02] COLON (IS) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [15.11] LATIN CAPITAL LETTER C (AL) × [28.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER R (AL) × [28.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER A (AL) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [6.0] LINE SEPARATOR (BK) ÷ [4.0] LATIN CAPITAL LETTER L (AL) × [28.0] LATIN SMALL LETTER E (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER U (AL) × [28.0] LATIN SMALL LETTER P (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER P (AL) × [28.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER S (AL) × [28.0] LATIN SMALL LETTER S (AL) × [28.0] LATIN SMALL LETTER A (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER S (AL) × [28.0] LATIN SMALL LETTER I (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER P (AL) × [28.0] LATIN SMALL LETTER R (AL) × [28.0] LATIN SMALL LETTER E WITH GRAVE (AL) × [28.0] LATIN SMALL LETTER S (AL) × [13.02] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER Q (AL) × [28.0] LATIN SMALL LETTER U (AL) × [28.0] LATIN SMALL LETTER E (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER L (AL) × [28.0] LATIN SMALL LETTER E (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER H (AL) × [28.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER P (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER U (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER T (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER A (AL) × [6.0] LINE SEPARATOR (BK) ÷ [4.0] LATIN CAPITAL LETTER E (AL) × [28.0] LATIN SMALL LETTER T (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER Q (AL) × [28.0] LATIN SMALL LETTER U (AL) × [28.0] LATIN SMALL LETTER E (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER L (AL) × [28.0] LATIN SMALL LETTER E (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER H (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER V (AL) × [28.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER L (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER F (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER T (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER U (AL) × [28.0] LATIN SMALL LETTER N (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER E WITH ACUTE (AL) × [28.0] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER R (AL) × [28.0] LATIN SMALL LETTER T (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER N (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER R (AL) × [28.0] LATIN SMALL LETTER R (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER E WITH GRAVE (AL) × [28.0] LATIN SMALL LETTER R (AL) × [28.0] LATIN SMALL LETTER E (AL) × [13.02] FULL STOP (IS) × [6.0] LINE SEPARATOR (BK) ÷ [4.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [15.11] LATIN CAPITAL LETTER D (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER N (AL) × [28.0] LATIN SMALL LETTER N (AL) × [28.0] LATIN SMALL LETTER E (AL) × [21.02] HYPHEN-MINUS (HY) ÷ [999.0] LATIN SMALL LETTER L (AL) × [28.0] LATIN SMALL LETTER U (AL) × [28.0] LATIN SMALL LETTER I (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER T (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER U (AL) × [28.0] LATIN SMALL LETTER T (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER D (AL) × [28.0] LATIN SMALL LETTER E (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER E WITH CIRCUMFLEX (AL) × [28.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER E (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER A WITH GRAVE (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER R (AL) × [28.0] LATIN SMALL LETTER E (AL) × [13.02] COMMA (IS) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER D (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER T (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER N (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER P (AL) × [28.0] LATIN SMALL LETTER E WITH GRAVE (AL) × [28.0] LATIN SMALL LETTER R (AL) × [28.0] LATIN SMALL LETTER E (AL) × [13.02] FULL STOP (IS) ÷ [0.3]
+× 00AB × 0020 × 004A × 0065 × 0020 ÷ 006D × 0065 × 0020 ÷ 0073 × 0075 × 0069 × 0073 × 0020 ÷ 0076 × 0065 × 006E × 0067 × 00E9 × 0020 ÷ 005B × 2026 × 005D × 2029 ÷ 00BB × 0020 ÷ 004F × 006E × 0020 ÷ 006E × 0065 × 0020 ÷ 006D × 0065 × 0020 ÷ 0076 × 0065 × 0072 × 0072 × 0061 × 0020 ÷ 006E × 0069 × 0020 ÷ 0070 × 0061 × 0072 × 006C × 0065 × 0072 × 0020 ÷ 006E × 0069 × 0020 ÷ 00E9 × 0063 × 0072 × 0069 × 0072 × 0065 × 0020 × 003B × 0020 ÷ 0076 × 006F × 0075 × 0073 × 0020 ÷ 0061 × 0075 × 0072 × 0065 × 007A × 0020 ÷ 0065 × 0075 × 0020 ÷ 006D × 0065 × 0073 × 0020 ÷ 0064 × 0065 × 0072 × 006E × 0069 × 00E8 × 0072 × 0065 × 0073 × 0020 ÷ 0070 × 0061 × 0072 × 006F × 006C × 0065 × 0073 × 0020 ÷ 0063 × 006F × 006D × 006D × 0065 × 0020 ÷ 006D × 0065 × 0073 × 0020 ÷ 0064 × 0065 × 0072 × 006E × 0069 × 00E8 × 0072 × 0065 × 0073 × 0020 ÷ 0061 × 0064 × 006F × 0072 × 0061 × 0074 × 0069 × 006F × 006E × 0073 × 002E × 2029 ÷ 00BB × 0020 ÷ 004A × 002E × 0020 ÷ 0053 × 002E × 0020 × 00BB ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [15.11] LATIN CAPITAL LETTER J (AL) × [28.0] LATIN SMALL LETTER E (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER E (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER S (AL) × [28.0] LATIN SMALL LETTER U (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER S (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER V (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER N (AL) × [28.0] LATIN SMALL LETTER G (AL) × [28.0] LATIN SMALL LETTER E WITH ACUTE (AL) × [7.01] SPACE (SP) ÷ [18.0] LEFT SQUARE BRACKET (OP_OP30) × [14.0] HORIZONTAL ELLIPSIS (IN) × [13.02] RIGHT SQUARE BRACKET (CP_CP30) × [6.0] PARAGRAPH SEPARATOR (BK) ÷ [4.0] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) ÷ [18.0] LATIN CAPITAL LETTER O (AL) × [28.0] LATIN SMALL LETTER N (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER N (AL) × [28.0] LATIN SMALL LETTER E (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER E (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER V (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER R (AL) × [28.0] LATIN SMALL LETTER R (AL) × [28.0] LATIN SMALL LETTER A (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER N (AL) × [28.0] LATIN SMALL LETTER I (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER P (AL) × [28.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER R (AL) × [28.0] LATIN SMALL LETTER L (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER R (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER N (AL) × [28.0] LATIN SMALL LETTER I (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER E WITH ACUTE (AL) × [28.0] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER R (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER R (AL) × [28.0] LATIN SMALL LETTER E (AL) × [7.01] SPACE (SP) × [13.02] SEMICOLON (IS) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER V (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER U (AL) × [28.0] LATIN SMALL LETTER S (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER U (AL) × [28.0] LATIN SMALL LETTER R (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER Z (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER U (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER S (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER D (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER R (AL) × [28.0] LATIN SMALL LETTER N (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER E WITH GRAVE (AL) × [28.0] LATIN SMALL LETTER R (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER S (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER P (AL) × [28.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER R (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER L (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER S (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER E (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER S (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER D (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER R (AL) × [28.0] LATIN SMALL LETTER N (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER E WITH GRAVE (AL) × [28.0] LATIN SMALL LETTER R (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER S (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER D (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER R (AL) × [28.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER T (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER N (AL) × [28.0] LATIN SMALL LETTER S (AL) × [13.02] FULL STOP (IS) × [6.0] PARAGRAPH SEPARATOR (BK) ÷ [4.0] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.01] SPACE (SP) ÷ [18.0] LATIN CAPITAL LETTER J (AL) × [13.02] FULL STOP (IS) × [7.01] SPACE (SP) ÷ [18.0] LATIN CAPITAL LETTER S (AL) × [13.02] FULL STOP (IS) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
+× 2014 × 0020 ÷ 004B × 0068 × 00F4 × 006E × 0067 × 0020 ÷ 0061 × 0069 × 0020 ÷ 0068 × 00E3 × 006D × 0020 ÷ 0062 × 0061 × 006F × 0020 ÷ 0067 × 0069 × 1EDD × 0020 ÷ 006D × 00E0 × 0020 ÷ 0062 × 00E2 × 0079 × 0020 ÷ 0067 × 0069 × 1EDD × 0020 ÷ 0068 × 00E3 × 006D × 002C × 0020 ÷ 0074 × 0068 × 1EBF × 0020 ÷ 006E × 00F3 × 0020 ÷ 006D × 1EDB × 0069 × 0020 ÷ 00AB × 0020 × 006D × 1EDB × 0069 × 0020 × 00BB × 002E ÷ # × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] LATIN CAPITAL LETTER K (AL) × [28.0] LATIN SMALL LETTER H (AL) × [28.0] LATIN SMALL LETTER O WITH CIRCUMFLEX (AL) × [28.0] LATIN SMALL LETTER N (AL) × [28.0] LATIN SMALL LETTER G (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER I (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER H (AL) × [28.0] LATIN SMALL LETTER A WITH TILDE (AL) × [28.0] LATIN SMALL LETTER M (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER O (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER G (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER O WITH HORN AND GRAVE (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER A WITH GRAVE (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER A WITH CIRCUMFLEX (AL) × [28.0] LATIN SMALL LETTER Y (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER G (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER O WITH HORN AND GRAVE (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER H (AL) × [28.0] LATIN SMALL LETTER A WITH TILDE (AL) × [28.0] LATIN SMALL LETTER M (AL) × [13.02] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER T (AL) × [28.0] LATIN SMALL LETTER H (AL) × [28.0] LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER N (AL) × [28.0] LATIN SMALL LETTER O WITH ACUTE (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER O WITH HORN AND ACUTE (AL) × [28.0] LATIN SMALL LETTER I (AL) × [7.01] SPACE (SP) ÷ [18.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [15.11] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER O WITH HORN AND ACUTE (AL) × [28.0] LATIN SMALL LETTER I (AL) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [13.02] FULL STOP (IS) ÷ [0.3]
+× 0050 × 0061 × 0073 × 0020 ÷ 0075 × 006E × 0065 × 0020 ÷ 0063 × 0069 × 0074 × 0061 × 0074 × 0069 × 006F × 006E × 0020 ÷ 00BB × 005A × 0069 × 0074 × 0061 × 0074 × 00AB × 0020 ÷ 0050 × 0061 × 0073 × 0020 ÷ 0075 × 006E × 0065 × 0020 ÷ 0063 × 0069 × 0074 × 0061 × 0074 × 0069 × 006F × 006E × 0020 ÷ 006E × 006F × 006E × 0020 ÷ 0070 × 006C × 0075 × 0073 ÷ # × [0.3] LATIN CAPITAL LETTER P (AL) × [28.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER S (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER U (AL) × [28.0] LATIN SMALL LETTER N (AL) × [28.0] LATIN SMALL LETTER E (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER T (AL) × [28.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER T (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER N (AL) × [7.01] SPACE (SP) ÷ [18.0] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [19.02] LATIN CAPITAL LETTER Z (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER T (AL) × [28.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER T (AL) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) ÷ [18.0] LATIN CAPITAL LETTER P (AL) × [28.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER S (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER U (AL) × [28.0] LATIN SMALL LETTER N (AL) × [28.0] LATIN SMALL LETTER E (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER T (AL) × [28.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER T (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER N (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER N (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER N (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER P (AL) × [28.0] LATIN SMALL LETTER L (AL) × [28.0] LATIN SMALL LETTER U (AL) × [28.0] LATIN SMALL LETTER S (AL) ÷ [0.3]
+× 00AB × 0020 × 0043 × 0069 × 0074 × 0061 × 0074 × 0069 × 006F × 006E × 0020 × 00BB × 200B ÷ 004B × 0065 × 0069 × 006E × 0020 ÷ 005A × 0069 × 0074 × 0061 × 0074 × 200B ÷ 00AB × 0020 × 0041 × 0075 × 0074 × 0072 × 0065 × 0020 ÷ 0063 × 0069 × 0074 × 0061 × 0074 × 0069 × 006F × 006E × 0020 × 00BB ÷ # × [0.3] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [15.11] LATIN CAPITAL LETTER C (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER T (AL) × [28.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER T (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER N (AL) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [8.0] LATIN CAPITAL LETTER K (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER N (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN CAPITAL LETTER Z (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER T (AL) × [28.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER T (AL) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [8.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pi) × [7.01] SPACE (SP) × [15.11] LATIN CAPITAL LETTER A (AL) × [28.0] LATIN SMALL LETTER U (AL) × [28.0] LATIN SMALL LETTER T (AL) × [28.0] LATIN SMALL LETTER R (AL) × [28.0] LATIN SMALL LETTER E (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER T (AL) × [28.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER T (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER N (AL) × [7.01] SPACE (SP) × [15.21] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU_QU_Pf) ÷ [0.3]
× 1F02C × 1F3FF ÷ # × [0.3] <reserved-1F02C> (Other) × [30.22] EMOJI MODIFIER FITZPATRICK TYPE-6 (EM) ÷ [0.3]
× 00A9 ÷ 1F3FF ÷ # × [0.3] COPYRIGHT SIGN (AL) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (EM) ÷ [0.3]
#
-# Lines: 7654
+# Lines: 10274
#
# EOF
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/Makefile.in b/Build/source/libs/icu/icu-src/source/test/testdata/Makefile.in
index 04bc1c1afad..f94b7e42283 100644
--- a/Build/source/libs/icu/icu-src/source/test/testdata/Makefile.in
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/Makefile.in
@@ -92,6 +92,7 @@ TESTSRCDATADIR=$(top_srcdir)/test/testdata
TESTOUTDIR=$(top_builddir)/test/testdata/out
BUILD_DIRS = $(TESTOUTDIR) $(TESTBUILDDIR) $(TESTOUTDIR)/$(TESTDT)
GENTEST=$(TOOLDIR)/gentest/gentest$(TOOLEXEEXT)
+LIBRARY_DATA_DIR=$(OUTDIR)/build
ifeq ($(PKGDATA_MODE),common)
ICU_DATA_OPT = -i $(OUTDIR)
@@ -166,7 +167,7 @@ $(OUTDIR)/icu4j/testdata.jar: build-dir testdata $(TESTOUTDIR)/testdata.dat
$(JAR) cf $(OUTDIR)/icu4j/testdata.jar -C $(OUTDIR)/icu4j com/ibm/icu/dev/data/testdata
-DEBUGUTILITIESDATA_DIR=main/tests/core/src/com/ibm/icu/dev/test/util
+DEBUGUTILITIESDATA_DIR=main/core/src/test/java/com/ibm/icu/dev/test/util
DEBUGUTILITIESDATA_SRC=DebugUtilitiesData.java
ICU4J_DATA=$(OUTDIR)/icu4j/src/$(DEBUGUTILITIESDATA_SRC) $(OUTDIR)/icu4j/testdata.jar
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/SentenceBreakTest.txt b/Build/source/libs/icu/icu-src/source/test/testdata/SentenceBreakTest.txt
index be53fe95e73..d2d28275b06 100644
--- a/Build/source/libs/icu/icu-src/source/test/testdata/SentenceBreakTest.txt
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/SentenceBreakTest.txt
@@ -1,6 +1,6 @@
-# SentenceBreakTest-15.0.0.txt
-# Date: 2022-02-26, 00:39:00 GMT
-# © 2022 Unicode®, Inc.
+# SentenceBreakTest-15.1.0.txt
+# Date: 2023-04-05, 20:41:29 GMT
+# © 2023 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# For terms of use, see https://www.unicode.org/terms_of_use.html
#
@@ -500,6 +500,11 @@
÷ 0065 × 0074 × 0063 × 002E × 3002 ÷ # ÷ [0.2] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) × [8.1] IDEOGRAPHIC FULL STOP (STerm) ÷ [0.3]
÷ 5B57 × 3002 ÷ 5B83 ÷ # ÷ [0.2] CJK UNIFIED IDEOGRAPH-5B57 (OLetter) × [998.0] IDEOGRAPHIC FULL STOP (STerm) ÷ [11.0] CJK UNIFIED IDEOGRAPH-5B83 (OLetter) ÷ [0.3]
÷ 0021 × 0020 × 0020 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [9.0] SPACE (Sp) × [10.0] SPACE (Sp) ÷ [0.3]
+÷ 0061 × 002E ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] FULL STOP (ATerm) ÷ [0.3]
+÷ 0061 × 002E × 000D × 000A ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] FULL STOP (ATerm) × [9.0] <CARRIAGE RETURN (CR)> (CR) × [3.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 0061 × 002E × 000D × 000A ÷ 0020 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] FULL STOP (ATerm) × [9.0] <CARRIAGE RETURN (CR)> (CR) × [3.0] <LINE FEED (LF)> (LF) ÷ [4.0] SPACE (Sp) ÷ [0.3]
+÷ 0061 × 002E × 000D × 000A ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] FULL STOP (ATerm) × [9.0] <CARRIAGE RETURN (CR)> (CR) × [3.0] <LINE FEED (LF)> (LF) ÷ [4.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
+÷ 0041 × 002E × 000D × 000A ÷ 0041 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] FULL STOP (ATerm) × [9.0] <CARRIAGE RETURN (CR)> (CR) × [3.0] <LINE FEED (LF)> (LF) ÷ [4.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
÷ 2060 × 0028 × 2060 × 0022 × 2060 × 0047 × 2060 × 006F × 2060 × 002E × 2060 × 0022 × 2060 × 0029 × 2060 × 0020 × 2060 ÷ 0028 × 2060 × 0048 × 2060 × 0065 × 2060 × 0020 × 2060 × 0064 × 2060 × 0069 × 2060 × 0064 × 2060 × 002E × 2060 × 0029 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LEFT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [998.0] QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER G (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER O (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) ÷ [11.0] LEFT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER H (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER I (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
÷ 2060 × 0028 × 2060 × 201C × 2060 × 0047 × 2060 × 006F × 2060 × 003F × 2060 × 201D × 2060 × 0029 × 2060 × 0020 × 2060 ÷ 0028 × 2060 × 0048 × 2060 × 0065 × 2060 × 0020 × 2060 × 0064 × 2060 × 0069 × 2060 × 0064 × 2060 × 002E × 2060 × 0029 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LEFT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [998.0] LEFT DOUBLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER G (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER O (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] QUESTION MARK (STerm) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT DOUBLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) ÷ [11.0] LEFT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER H (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER I (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
÷ 2060 × 0055 × 2060 × 002E × 2060 × 0053 × 2060 × 002E × 2060 × 0041 × 2060 × 0300 × 002E × 2060 × 0020 × 2060 × 0069 × 2060 × 0073 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER U (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER S (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER A (Upper) × [5.0] WORD JOINER (Format_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [8.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [8.0] LATIN SMALL LETTER I (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER S (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
@@ -524,7 +529,12 @@
÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 3002 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [8.1] IDEOGRAPHIC FULL STOP (STerm) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
÷ 2060 × 5B57 × 2060 × 3002 × 2060 ÷ 5B83 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] CJK UNIFIED IDEOGRAPH-5B57 (OLetter) × [5.0] WORD JOINER (Format_FE) × [998.0] IDEOGRAPHIC FULL STOP (STerm) × [5.0] WORD JOINER (Format_FE) ÷ [11.0] CJK UNIFIED IDEOGRAPH-5B83 (OLetter) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
÷ 2060 × 0021 × 2060 × 0020 × 2060 × 0020 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] EXCLAMATION MARK (STerm) × [5.0] WORD JOINER (Format_FE) × [9.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [10.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 2060 × 0061 × 2060 × 002E × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER A (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 2060 × 0061 × 2060 × 002E × 2060 × 000D ÷ 2060 × 000A ÷ 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER A (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] WORD JOINER (Format_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 2060 × 0061 × 2060 × 002E × 2060 × 000D ÷ 2060 × 000A ÷ 0020 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER A (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] WORD JOINER (Format_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [4.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 2060 × 0061 × 2060 × 002E × 2060 × 000D ÷ 2060 × 000A ÷ 0061 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER A (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] WORD JOINER (Format_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [4.0] LATIN SMALL LETTER A (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 2060 × 0041 × 2060 × 002E × 2060 × 000D ÷ 2060 × 000A ÷ 0041 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] WORD JOINER (Format_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [4.0] LATIN CAPITAL LETTER A (Upper) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
#
-# Lines: 502
+# Lines: 512
#
# EOF
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/WordBreakTest.txt b/Build/source/libs/icu/icu-src/source/test/testdata/WordBreakTest.txt
index 27f64bfeeed..10a111a97cb 100644
--- a/Build/source/libs/icu/icu-src/source/test/testdata/WordBreakTest.txt
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/WordBreakTest.txt
@@ -1,6 +1,6 @@
-# WordBreakTest-15.0.0.txt
-# Date: 2022-02-26, 00:39:00 GMT
-# © 2022 Unicode®, Inc.
+# WordBreakTest-15.1.0.txt
+# Date: 2023-03-31, 14:30:32 GMT
+# © 2023 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# For terms of use, see https://www.unicode.org/terms_of_use.html
#
@@ -1708,6 +1708,9 @@
÷ 0061 × 0308 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [0.3]
÷ 0020 × 200D ÷ 0646 ÷ # ÷ [0.2] SPACE (WSegSpace) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] ARABIC LETTER NOON (ALetter) ÷ [0.3]
÷ 0646 × 200D ÷ 0020 ÷ # ÷ [0.2] ARABIC LETTER NOON (ALetter) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3]
+÷ 0671 × 0644 × 0631 × 064E × 0651 × 062D × 0650 × 064A × 0645 × 0650 ÷ 0020 ÷ 06DD × 0661 ÷ # ÷ [0.2] ARABIC LETTER ALEF WASLA (ALetter) × [5.0] ARABIC LETTER LAM (ALetter) × [5.0] ARABIC LETTER REH (ALetter) × [4.0] ARABIC FATHA (Extend_FE) × [4.0] ARABIC SHADDA (Extend_FE) × [5.0] ARABIC LETTER HAH (ALetter) × [4.0] ARABIC KASRA (Extend_FE) × [5.0] ARABIC LETTER YEH (ALetter) × [5.0] ARABIC LETTER MEEM (ALetter) × [4.0] ARABIC KASRA (Extend_FE) ÷ [999.0] SPACE (WSegSpace) ÷ [999.0] ARABIC END OF AYAH (Numeric) × [8.0] ARABIC-INDIC DIGIT ONE (Numeric) ÷ [0.3]
+÷ 0721 × 0719 × 0721 × 0718 × 072A × 0710 ÷ 0020 ÷ 070F × 071D × 0717 ÷ # ÷ [0.2] SYRIAC LETTER MIM (ALetter) × [5.0] SYRIAC LETTER ZAIN (ALetter) × [5.0] SYRIAC LETTER MIM (ALetter) × [5.0] SYRIAC LETTER WAW (ALetter) × [5.0] SYRIAC LETTER RISH (ALetter) × [5.0] SYRIAC LETTER ALAPH (ALetter) ÷ [999.0] SPACE (WSegSpace) ÷ [999.0] SYRIAC ABBREVIATION MARK (ALetter) × [5.0] SYRIAC LETTER YUDH (ALetter) × [5.0] SYRIAC LETTER HE (ALetter) ÷ [0.3]
+÷ 072C × 070F × 072B × 0712 × 0718 ÷ # ÷ [0.2] SYRIAC LETTER TAW (ALetter) × [5.0] SYRIAC ABBREVIATION MARK (ALetter) × [5.0] SYRIAC LETTER SHIN (ALetter) × [5.0] SYRIAC LETTER BETH (ALetter) × [5.0] SYRIAC LETTER WAW (ALetter) ÷ [0.3]
÷ 0041 × 0041 × 0041 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [5.0] LATIN CAPITAL LETTER A (ALetter) × [5.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
÷ 0041 × 003A × 0041 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [6.0] COLON (MidLetter) × [7.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
÷ 0041 ÷ 003A ÷ 003A ÷ 0041 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
@@ -1846,6 +1849,6 @@
÷ 0061 × 005F × 0031 ÷ 002C ÷ 002C ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3]
÷ 0061 × 005F × 0061 ÷ 002C ÷ 002C ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3]
#
-# Lines: 1823
+# Lines: 1826
#
# EOF
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/break_rules/README.md b/Build/source/libs/icu/icu-src/source/test/testdata/break_rules/README.md
index 1deb4dfc32f..7468a1cb147 100644
--- a/Build/source/libs/icu/icu-src/source/test/testdata/break_rules/README.md
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/break_rules/README.md
@@ -12,7 +12,7 @@ The rules in this directory track the boundary rules from Unicode UAX 14 and 29.
to provide an expected set of boundary positions to compare with the results from ICU break iteration.
ICU4J also includes copies of the test reference rules, located in the directory
-main/tests/core/src/com/ibm/icu/dev/test/rbbi/break_rules/
+main/core/src/test/resources/com/ibm/icu/dev/test/rbbi/break_rules/
The copies should be kept synchronized; there should be no differences.
Each set of reference break rules lives in a separate file.
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/break_rules/line.txt b/Build/source/libs/icu/icu-src/source/test/testdata/break_rules/line.txt
index 409f223ed6f..c68a66b95f2 100644
--- a/Build/source/libs/icu/icu-src/source/test/testdata/break_rules/line.txt
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/break_rules/line.txt
@@ -24,7 +24,10 @@ locale = en;
AI = [:LineBreak = Ambiguous:];
+AK = [:LineBreak = Aksara:];
AL = [:LineBreak = Alphabetic:];
+AP = [:LineBreak = Aksara_Prebase:];
+AS = [:LineBreak = Aksara_Start:];
BA = [:LineBreak = Break_After:];
HH = [\u2010]; # \u2010 is HYPHEN, default line break is BA.
BB = [:LineBreak = Break_Before:];
@@ -63,6 +66,8 @@ SA = [:LineBreak = Complex_Context:];
SG = [:LineBreak = Surrogate:];
SP = [:LineBreak = Space:];
SY = [:LineBreak = Break_Symbols:];
+VF = [:LineBreak = Virama_Final:];
+VI = [:LineBreak = Virama:];
WJ = [:LineBreak = Word_Joiner:];
XX = [:LineBreak = Unknown:];
ZW = [:LineBreak = ZWSpace:];
@@ -75,6 +80,9 @@ ZWJ = [:LineBreak = ZWJ:];
OP30 = [OP - [\p{ea=F}\p{ea=W}\p{ea=H}]];
CP30 = [CP - [\p{ea=F}\p{ea=W}\p{ea=H}]];
+PiQU = [\p{Pi}&QU];
+PfQU = [\p{Pf}&QU];
+
# The redundant-looking inner brackets are required for the current parser in the test code.
ExtPictUnassigned = [[\p{Extended_Pictographic}]&[\p{Cn}]];
@@ -106,19 +114,27 @@ LB8: ZW SP* ÷ [^ZW SP BK CR LF NL];
LB25: ((PR | PO)CM*)? ((OP | HY)CM*)? (IS CM*)? NU (CM*(NU | SY | IS))* (CM*(CL | CP))? (CM*(PR | PO))?;
# Rules LB14 - LB17.
+
+# Moved before LB14, because it matches a supersequence.
+LB15a.1: ( OP CM* SP* | QU CM* | GL CM* ) (PiQU CM* SP*)+ .;
+
# Moved up, before LB7, because they can match a longer sequence that would also match LB7.
# For example, the sequence "OP CM SP AL" matches LB14
# while the prefix of it, "OP CM SP" matches LB7.1
LB14: OP CM* SP* .;
-# LB 14a Break before an IS that begins a number and follows a space.
-LB14a: SP ÷ IS CM* NU;
+LB15a.2: ^ (PiQU CM* SP*)+ .;
+# LB15b/LB15a chaining.
+LB15b.1: ([^SP] CM* | SP) PfQU CM* (PiQU CM* SP*)+ .;
+LB15b.2: ([^SP] CM* | SP) PfQU CM* ( SP | GL | WJ | CL | QU | CP | EX | IS | SY | BK | CR | LF | NL | ZW | $ );
-# LB14b × IS
-LB14b.1: [^SP] CM* IS;
-LB14b.2: SP IS;
+# LB 15c Break before an IS that begins a number and follows a space.
+LB15c: SP ÷ IS CM* NU;
+
+# LB15d × IS
+LB15d.1: [^SP] CM* IS;
+LB15d.2: SP IS;
-LB15: QU CM* SP* OP;
LB16: (CL | CP)CM* SP* NS;
LB17: B2 CM* SP* B2;
@@ -205,6 +221,8 @@ LB27.2: PR CM* (JL | JV | JT | H2 | H3);
# Unattached (leading) CM treated as AL.
LB28: (AL | HL | CM)CM* (AL | HL);
+LB28: (AP CM*)? (AS | AK | [◌] ) (CM* VI CM* (AK | [◌] ))* (CM* VI | ((CM* (AS | AK | [◌] ) )? CM* VF))?;
+
LB29: IS CM* (AL | HL);
# LB30 is adjusted for unattached leading CM being treated as AL.
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/break_rules/line_cj.txt b/Build/source/libs/icu/icu-src/source/test/testdata/break_rules/line_cj.txt
index e66b0d134ad..bcfc94f0548 100644
--- a/Build/source/libs/icu/icu-src/source/test/testdata/break_rules/line_cj.txt
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/break_rules/line_cj.txt
@@ -17,7 +17,10 @@ locale = zh;
AI = [:LineBreak = Ambiguous:];
+AK = [:LineBreak = Aksara:];
AL = [:LineBreak = Alphabetic:];
+AP = [:LineBreak = Aksara_Prebase:];
+AS = [:LineBreak = Aksara_Start:];
BA = [:LineBreak = Break_After:];
HH = [\u2010]; # \u2010 is HYPHEN, default line break is BA.
BB = [:LineBreak = Break_Before:];
@@ -56,6 +59,8 @@ SA = [:LineBreak = Complex_Context:];
SG = [:LineBreak = Surrogate:];
SP = [:LineBreak = Space:];
SY = [:LineBreak = Break_Symbols:];
+VF = [:LineBreak = Virama_Final:];
+VI = [:LineBreak = Virama:];
WJ = [:LineBreak = Word_Joiner:];
XX = [:LineBreak = Unknown:];
ZW = [:LineBreak = ZWSpace:];
@@ -75,6 +80,9 @@ CP30 = [CP - [\p{ea=F}\p{ea=W}\p{ea=H}]];
OP30 = [OP - [\p{ea=F}\p{ea=W}\p{ea=H}]];
CP30 = [CP - [\p{ea=F}\p{ea=W}\p{ea=H}]];
+PiQU = [\p{Pi}&QU];
+PfQU = [\p{Pf}&QU];
+
# The redundant-looking inner brackets are required for the current parser in the test code.
ExtPictUnassigned = [[\p{Extended_Pictographic}]&[\p{Cn}]];
@@ -106,19 +114,27 @@ LB8: ZW SP* ÷ [^ZW SP BK CR LF NL];
LB25: ((PR | PO)CM*)? ((OP | HY)CM*)? (IS CM*)? NU (CM*(NU | SY | IS))* (CM*(CL | CP))? (CM*(PR | PO))?;
# Rules LB14 - LB17.
+
+# Moved before LB14, because it matches a supersequence.
+LB15a.1: ( OP CM* SP* | QU CM* | GL CM* ) (PiQU CM* SP*)+ .;
+
# Moved up, before LB7, because they can match a longer sequence that would also match LB7.
# For example, the sequence "OP CM SP AL" matches LB14
# while the prefix of it, "OP CM SP" matches LB7.1
LB14: OP CM* SP* .;
-# LB 14a Break before an IS that begins a number and follows a space.
-LB14a: SP ÷ IS CM* NU;
+LB15a.2: ^ (PiQU CM* SP*)+ .;
+# LB15b/LB15a chaining.
+LB15b.1: ([^SP] CM* | SP) PfQU CM* (PiQU CM* SP*)+ .;
+LB15b.2: ([^SP] CM* | SP) PfQU CM* ( SP | GL | WJ | CL | QU | CP | EX | IS | SY | BK | CR | LF | NL | ZW | $ );
-# LB14b × IS
-LB14b.1: [^SP] CM* IS;
-LB14b.2: SP IS;
+# LB 15c Break before an IS that begins a number and follows a space.
+LB15c: SP ÷ IS CM* NU;
+
+# LB15d × IS
+LB15d.1: [^SP] CM* IS;
+LB15d.2: SP IS;
-LB15: QU CM* SP* OP;
LB16: (CL | CP)CM* SP* NS;
LB17: B2 CM* SP* B2;
@@ -205,6 +221,8 @@ LB27.2: PR CM* (JL | JV | JT | H2 | H3);
# Unattached (leading) CM treated as AL.
LB28: (AL | HL | CM)CM* (AL | HL);
+LB28: (AP CM*)? (AS | AK | [◌] ) (CM* VI CM* (AK | [◌] ))* (CM* VI | ((CM* (AS | AK | [◌] ) )? CM* VF))?;
+
LB29: IS CM* (AL | HL);
# LB30 is adjusted for unattached leading CM being treated as AL.
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/break_rules/line_loose.txt b/Build/source/libs/icu/icu-src/source/test/testdata/break_rules/line_loose.txt
index 54873a48969..05c2bea7402 100644
--- a/Build/source/libs/icu/icu-src/source/test/testdata/break_rules/line_loose.txt
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/break_rules/line_loose.txt
@@ -24,7 +24,10 @@ locale = en@lb=loose;
AI = [:LineBreak = Ambiguous:];
+AK = [:LineBreak = Aksara:];
AL = [:LineBreak = Alphabetic:];
+AP = [:LineBreak = Aksara_Prebase:];
+AS = [:LineBreak = Aksara_Start:];
BA = [:LineBreak = Break_After:];
HH = [\u2010]; # \u2010 is HYPHEN, default line break is BA.
BB = [:LineBreak = Break_Before:];
@@ -64,6 +67,8 @@ SA = [:LineBreak = Complex_Context:];
SG = [:LineBreak = Surrogate:];
SP = [:LineBreak = Space:];
SY = [:LineBreak = Break_Symbols:];
+VF = [:LineBreak = Virama_Final:];
+VI = [:LineBreak = Virama:];
WJ = [:LineBreak = Word_Joiner:];
XX = [:LineBreak = Unknown:];
ZW = [:LineBreak = ZWSpace:];
@@ -76,6 +81,9 @@ ZWJ = [:LineBreak = ZWJ:];
OP30 = [OP - [\p{ea=F}\p{ea=W}\p{ea=H}]];
CP30 = [CP - [\p{ea=F}\p{ea=W}\p{ea=H}]];
+PiQU = [\p{Pi}&QU];
+PfQU = [\p{Pf}&QU];
+
# The redundant-looking inner brackets are required for the current parser in the test code.
ExtPictUnassigned = [[\p{Extended_Pictographic}]&[\p{Cn}]];
@@ -107,19 +115,27 @@ LB8: ZW SP* ÷ [^ZW SP BK CR LF NL];
LB25: ((PR | PO)CM*)? ((OP | HY)CM*)? (IS CM*)? NU (CM*(NU | SY | IS))* (CM*(CL | CP))? (CM*(PR | PO))?;
# Rules LB14 - LB17.
+
+# Moved before LB14, because it matches a supersequence.
+LB15a.1: ( OP CM* SP* | QU CM* | GL CM* ) (PiQU CM* SP*)+ .;
+
# Moved up, before LB7, because they can match a longer sequence that would also match LB7.
# For example, the sequence "OP CM SP AL" matches LB14
# while the prefix of it, "OP CM SP" matches LB7.1
LB14: OP CM* SP* .;
-# LB 14a Break before an IS that begins a number and follows a space.
-LB14a: SP ÷ IS CM* NU;
+LB15a.2: ^ (PiQU CM* SP*)+ .;
+# LB15b/LB15a chaining.
+LB15b.1: ([^SP] CM* | SP) PfQU CM* (PiQU CM* SP*)+ .;
+LB15b.2: ([^SP] CM* | SP) PfQU CM* ( SP | GL | WJ | CL | QU | CP | EX | IS | SY | BK | CR | LF | NL | ZW | $ );
-# LB14b × IS
-LB14b.1: [^SP] CM* IS;
-LB14b.2: SP IS;
+# LB 15c Break before an IS that begins a number and follows a space.
+LB15c: SP ÷ IS CM* NU;
+
+# LB15d × IS
+LB15d.1: [^SP] CM* IS;
+LB15d.2: SP IS;
-LB15: QU CM* SP* OP;
LB16: (CL | CP)CM* SP* NS;
LB17: B2 CM* SP* B2;
@@ -207,6 +223,8 @@ LB27.2: PR CM* (JL | JV | JT | H2 | H3);
# Unattached (leading) CM treated as AL.
LB28: (AL | HL | CM)CM* (AL | HL);
+LB28: (AP CM*)? (AS | AK | [◌] ) (CM* VI CM* (AK | [◌] ))* (CM* VI | ((CM* (AS | AK | [◌] ) )? CM* VF))?;
+
LB29: IS CM* (AL | HL);
# LB30 is adjusted for unattached leading CM being treated as AL.
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/break_rules/line_loose_cj.txt b/Build/source/libs/icu/icu-src/source/test/testdata/break_rules/line_loose_cj.txt
index 9d7b2cc12c6..93a06be9431 100644
--- a/Build/source/libs/icu/icu-src/source/test/testdata/break_rules/line_loose_cj.txt
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/break_rules/line_loose_cj.txt
@@ -38,7 +38,10 @@ locale = ja@lb=loose;
AI = [:LineBreak = Ambiguous:];
+AK = [:LineBreak = Aksara:];
AL = [:LineBreak = Alphabetic:];
+AP = [:LineBreak = Aksara_Prebase:];
+AS = [:LineBreak = Aksara_Start:];
BAX = [\u2010 \u2013];
BA = [[:LineBreak = Break_After:] - BAX];
HH = [\u2010]; # \u2010 is HYPHEN, default line break is BA.
@@ -82,6 +85,8 @@ SA = [:LineBreak = Complex_Context:];
SG = [:LineBreak = Surrogate:];
SP = [:LineBreak = Space:];
SY = [:LineBreak = Break_Symbols:];
+VF = [:LineBreak = Virama_Final:];
+VI = [:LineBreak = Virama:];
WJ = [:LineBreak = Word_Joiner:];
XX = [:LineBreak = Unknown:];
ZW = [:LineBreak = ZWSpace:];
@@ -94,6 +99,9 @@ ZWJ = [:LineBreak = ZWJ:];
OP30 = [OP - [\p{ea=F}\p{ea=W}\p{ea=H}]];
CP30 = [CP - [\p{ea=F}\p{ea=W}\p{ea=H}]];
+PiQU = [\p{Pi}&QU];
+PfQU = [\p{Pf}&QU];
+
# The redundant-looking inner brackets are required for the current parser in the test code.
ExtPictUnassigned = [[\p{Extended_Pictographic}]&[\p{Cn}]];
@@ -126,19 +134,27 @@ LB8: ZW SP* ÷ [^ZW SP BK CR LF NL];
LB25: ((PR | PO | POX)CM*)? ((OP | HY)CM*)? (IS CM*)? NU (CM*(NU | SY | IS))* (CM*(CL | CP))? (CM*(PR | PRX | PO))?;
# Rules LB14 - LB17.
+
+# Moved before LB14, because it matches a supersequence.
+LB15a.1: ( OP CM* SP* | QU CM* | GL CM* ) (PiQU CM* SP*)+ .;
+
# Moved up, before LB7, because they can match a longer sequence that would also match LB7.
# For example, the sequence "OP CM SP AL" matches LB14
# while the prefix of it, "OP CM SP" matches LB7.1
LB14: OP CM* SP* .;
-# LB 14a Break before an IS that begins a number and follows a space.
-LB14a: SP ÷ IS CM* NU;
+LB15a.2: ^ (PiQU CM* SP*)+ .;
+# LB15b/LB15a chaining.
+LB15b.1: ([^SP] CM* | SP) PfQU CM* (PiQU CM* SP*)+ .;
+LB15b.2: ([^SP] CM* | SP) PfQU CM* ( SP | GL | WJ | CL | QU | CP | EX | IS | SY | BK | CR | LF | NL | ZW | $ );
-# LB14b × IS
-LB14b.1: [^SP] CM* IS;
-LB14b.2: SP IS;
+# LB 15c Break before an IS that begins a number and follows a space.
+LB15c: SP ÷ IS CM* NU;
+
+# LB15d × IS
+LB15d.1: [^SP] CM* IS;
+LB15d.2: SP IS;
-LB15: QU CM* SP* OP;
LB16: (CL | CP)CM* SP* NS;
LB17: B2 CM* SP* B2;
@@ -231,6 +247,8 @@ LB27.2: PR CM* (JL | JV | JT | H2 | H3);
# Unattached (leading) CM treated as AL.
LB28: (AL | HL | CM)CM* (AL | HL);
+LB28: (AP CM*)? (AS | AK | [◌] ) (CM* VI CM* (AK | [◌] ))* (CM* VI | ((CM* (AS | AK | [◌] ) )? CM* VF))?;
+
LB29: IS CM* (AL | HL);
# LB30 is adjusted for unattached leading CM being treated as AL.
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/break_rules/line_normal.txt b/Build/source/libs/icu/icu-src/source/test/testdata/break_rules/line_normal.txt
index c718cc2f44c..0397ec5a5f2 100644
--- a/Build/source/libs/icu/icu-src/source/test/testdata/break_rules/line_normal.txt
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/break_rules/line_normal.txt
@@ -26,7 +26,10 @@ type = line;
locale = en@lb=normal;
AI = [:LineBreak = Ambiguous:];
+AK = [:LineBreak = Aksara:];
AL = [:LineBreak = Alphabetic:];
+AP = [:LineBreak = Aksara_Prebase:];
+AS = [:LineBreak = Aksara_Start:];
BA = [:LineBreak = Break_After:];
HH = [\u2010]; # \u2010 is HYPHEN, default line break is BA.
BB = [:LineBreak = Break_Before:];
@@ -65,6 +68,8 @@ SA = [:LineBreak = Complex_Context:];
SG = [:LineBreak = Surrogate:];
SP = [:LineBreak = Space:];
SY = [:LineBreak = Break_Symbols:];
+VF = [:LineBreak = Virama_Final:];
+VI = [:LineBreak = Virama:];
WJ = [:LineBreak = Word_Joiner:];
XX = [:LineBreak = Unknown:];
ZW = [:LineBreak = ZWSpace:];
@@ -77,6 +82,9 @@ ZWJ = [:LineBreak = ZWJ:];
OP30 = [OP - [\p{ea=F}\p{ea=W}\p{ea=H}]];
CP30 = [CP - [\p{ea=F}\p{ea=W}\p{ea=H}]];
+PiQU = [\p{Pi}&QU];
+PfQU = [\p{Pf}&QU];
+
# The redundant-looking inner brackets are required for the current parser in the test code.
ExtPictUnassigned = [[\p{Extended_Pictographic}]&[\p{Cn}]];
@@ -108,19 +116,27 @@ LB8: ZW SP* ÷ [^ZW SP BK CR LF NL];
LB25: ((PR | PO)CM*)? ((OP | HY)CM*)? (IS CM*)? NU (CM*(NU | SY | IS))* (CM*(CL | CP))? (CM*(PR | PO))?;
# Rules LB14 - LB17.
+
+# Moved before LB14, because it matches a supersequence.
+LB15a.1: ( OP CM* SP* | QU CM* | GL CM* ) (PiQU CM* SP*)+ .;
+
# Moved up, before LB7, because they can match a longer sequence that would also match LB7.
# For example, the sequence "OP CM SP AL" matches LB14
# while the prefix of it, "OP CM SP" matches LB7.1
LB14: OP CM* SP* .;
-# LB 14a Break before an IS that begins a number and follows a space.
-LB14a: SP ÷ IS CM* NU;
+LB15a.2: ^ (PiQU CM* SP*)+ .;
+# LB15b/LB15a chaining.
+LB15b.1: ([^SP] CM* | SP) PfQU CM* (PiQU CM* SP*)+ .;
+LB15b.2: ([^SP] CM* | SP) PfQU CM* ( SP | GL | WJ | CL | QU | CP | EX | IS | SY | BK | CR | LF | NL | ZW | $ );
-# LB14b × IS
-LB14b.1: [^SP] CM* IS;
-LB14b.2: SP IS;
+# LB 15c Break before an IS that begins a number and follows a space.
+LB15c: SP ÷ IS CM* NU;
+
+# LB15d × IS
+LB15d.1: [^SP] CM* IS;
+LB15d.2: SP IS;
-LB15: QU CM* SP* OP;
LB16: (CL | CP)CM* SP* NS;
LB17: B2 CM* SP* B2;
@@ -207,6 +223,8 @@ LB27.2: PR CM* (JL | JV | JT | H2 | H3);
# Unattached (leading) CM treated as AL.
LB28: (AL | HL | CM)CM* (AL | HL);
+LB28: (AP CM*)? (AS | AK | [◌] ) (CM* VI CM* (AK | [◌] ))* (CM* VI | ((CM* (AS | AK | [◌] ) )? CM* VF))?;
+
LB29: IS CM* (AL | HL);
# LB30 is adjusted for unattached leading CM being treated as AL.
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/break_rules/line_normal_cj.txt b/Build/source/libs/icu/icu-src/source/test/testdata/break_rules/line_normal_cj.txt
index a4e1428c2b2..04889a31ca4 100644
--- a/Build/source/libs/icu/icu-src/source/test/testdata/break_rules/line_normal_cj.txt
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/break_rules/line_normal_cj.txt
@@ -27,7 +27,10 @@ type = line;
locale = ja@lb=normal;
AI = [:LineBreak = Ambiguous:];
+AK = [:LineBreak = Aksara:];
AL = [:LineBreak = Alphabetic:];
+AP = [:LineBreak = Aksara_Prebase:];
+AS = [:LineBreak = Aksara_Start:];
BA = [:LineBreak = Break_After:];
HH = [\u2010]; # \u2010 is HYPHEN, default line break is BA.
BB = [:LineBreak = Break_Before:];
@@ -67,6 +70,8 @@ SA = [:LineBreak = Complex_Context:];
SG = [:LineBreak = Surrogate:];
SP = [:LineBreak = Space:];
SY = [:LineBreak = Break_Symbols:];
+VF = [:LineBreak = Virama_Final:];
+VI = [:LineBreak = Virama:];
WJ = [:LineBreak = Word_Joiner:];
XX = [:LineBreak = Unknown:];
ZW = [:LineBreak = ZWSpace:];
@@ -79,6 +84,9 @@ ZWJ = [:LineBreak = ZWJ:];
OP30 = [OP - [\p{ea=F}\p{ea=W}\p{ea=H}]];
CP30 = [CP - [\p{ea=F}\p{ea=W}\p{ea=H}]];
+PiQU = [\p{Pi}&QU];
+PfQU = [\p{Pf}&QU];
+
# The redundant-looking inner brackets are required for the current parser in the test code.
ExtPictUnassigned = [[\p{Extended_Pictographic}]&[\p{Cn}]];
@@ -110,19 +118,27 @@ LB8: ZW SP* ÷ [^ZW SP BK CR LF NL];
LB25: ((PR | PO)CM*)? ((OP | HY)CM*)? (IS CM*)? NU (CM*(NU | SY | IS))* (CM*(CL | CP))? (CM*(PR | PO))?;
# Rules LB14 - LB17.
+
+# Moved before LB14, because it matches a supersequence.
+LB15a.1: ( OP CM* SP* | QU CM* | GL CM* ) (PiQU CM* SP*)+ .;
+
# Moved up, before LB7, because they can match a longer sequence that would also match LB7.
# For example, the sequence "OP CM SP AL" matches LB14
# while the prefix of it, "OP CM SP" matches LB7.1
LB14: OP CM* SP* .;
-# LB 14a Break before an IS that begins a number and follows a space.
-LB14a: SP ÷ IS CM* NU;
+LB15a.2: ^ (PiQU CM* SP*)+ .;
+# LB15b/LB15a chaining.
+LB15b.1: ([^SP] CM* | SP) PfQU CM* (PiQU CM* SP*)+ .;
+LB15b.2: ([^SP] CM* | SP) PfQU CM* ( SP | GL | WJ | CL | QU | CP | EX | IS | SY | BK | CR | LF | NL | ZW | $ );
-# LB14b × IS
-LB14b.1: [^SP] CM* IS;
-LB14b.2: SP IS;
+# LB 15c Break before an IS that begins a number and follows a space.
+LB15c: SP ÷ IS CM* NU;
+
+# LB15d × IS
+LB15d.1: [^SP] CM* IS;
+LB15d.2: SP IS;
-LB15: QU CM* SP* OP;
# Do not break between closing punctuation and $NS, even with intervening spaces
# But DO allow a break between closing punctuation and $NSX, don't include it here
@@ -211,6 +227,8 @@ LB27.2: PR CM* (JL | JV | JT | H2 | H3);
# Unattached (leading) CM treated as AL.
LB28: (AL | HL | CM)CM* (AL | HL);
+LB28: (AP CM*)? (AS | AK | [◌] ) (CM* VI CM* (AK | [◌] ))* (CM* VI | ((CM* (AS | AK | [◌] ) )? CM* VF))?;
+
LB29: IS CM* (AL | HL);
# LB30 is adjusted for unattached leading CM being treated as AL.
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/break_rules/word.txt b/Build/source/libs/icu/icu-src/source/test/testdata/break_rules/word.txt
index 8594055f71f..002d1af5780 100644
--- a/Build/source/libs/icu/icu-src/source/test/testdata/break_rules/word.txt
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/break_rules/word.txt
@@ -25,7 +25,7 @@ Regional_Indicator = [\p{Word_Break = Regional_Indicator}];
Format = [\p{Word_Break = Format}];
Katakana = [\p{Word_Break = Katakana}];
Hebrew_Letter = [\p{Word_Break = Hebrew_Letter}];
-ALetter = [\p{Word_Break = ALetter} @];
+ALetter = [\p{Word_Break = ALetter}];
Single_Quote = [\p{Word_Break = Single_Quote}];
Double_Quote = [\p{Word_Break = Double_Quote}];
MidNumLet = [\p{Word_Break = MidNumLet}];
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/localeIdentifiers/_readme.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/localeIdentifiers/_readme.txt
new file mode 100644
index 00000000000..fbbef7a583a
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/localeIdentifiers/_readme.txt
@@ -0,0 +1,11 @@
+# Test data for grapheme locale validity, canonicalization, and name generation
+# Copyright © 1991-2020 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+# The format may vary between folders or files.
+# Format:
+# Generally has the following structure, but the values depend on the file.
+# @<parameter>=<parameter value>
+# <input> ; <expected output>
+
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/localeIdentifiers/likelySubtags.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/localeIdentifiers/likelySubtags.txt
new file mode 100644
index 00000000000..1f9e3557fff
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/localeIdentifiers/likelySubtags.txt
@@ -0,0 +1,1700 @@
+# Test data for Likely Subtags
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# Test data for https://www.unicode.org/reports/tr35/tr35.html#Likely_Subtags
+#
+# Format:
+
+# Source ; AddLikely ; RemoveFavorScript ; RemoveFavorRegion
+# Source: a locale to which the following operations are applied.
+# AddLikely: the result of the Add Likely Subtags.
+# If Add Likely Subtags fails, then “FAILâ€.
+# RemoveFavorScript: Remove Likely Subtags, when the script is favored.
+# Only included when different than AddLikely.
+# RemoveFavorRegion: Remove Likely Subtags, when the region is favored.
+# Only included when different than RemoveFavorScript.
+#
+# Generation: GenerateLikelyTestData.java
+
+af ; af-Latn-ZA ; af ;
+af-AQ ; af-Latn-AQ ; af-AQ ;
+af-Egyp ; af-Egyp-ZA ; af-Egyp ;
+af-Latn ; af-Latn-ZA ; af ;
+af-NA ; af-Latn-NA ; af-NA ;
+af-ZA ; af-Latn-ZA ; af ;
+am ; am-Ethi-ET ; am ;
+am-AQ ; am-Ethi-AQ ; am-AQ ;
+am-ET ; am-Ethi-ET ; am ;
+am-Egyp ; am-Egyp-ET ; am-Egyp ;
+am-Ethi ; am-Ethi-ET ; am ;
+ar ; ar-Arab-EG ; ar ;
+ar-001 ; ar-Arab-001 ; ar-001 ;
+ar-AE ; ar-Arab-AE ; ar-AE ;
+ar-AQ ; ar-Arab-AQ ; ar-AQ ;
+ar-Arab ; ar-Arab-EG ; ar ;
+ar-BH ; ar-Arab-BH ; ar-BH ;
+ar-DJ ; ar-Arab-DJ ; ar-DJ ;
+ar-DZ ; ar-Arab-DZ ; ar-DZ ;
+ar-EG ; ar-Arab-EG ; ar ;
+ar-EH ; ar-Arab-EH ; ar-EH ;
+ar-ER ; ar-Arab-ER ; ar-ER ;
+ar-Egyp ; ar-Egyp-EG ; ar-Egyp ;
+ar-IL ; ar-Arab-IL ; ar-IL ;
+ar-IQ ; ar-Arab-IQ ; ar-IQ ;
+ar-JO ; ar-Arab-JO ; ar-JO ;
+ar-KM ; ar-Arab-KM ; ar-KM ;
+ar-KW ; ar-Arab-KW ; ar-KW ;
+ar-LB ; ar-Arab-LB ; ar-LB ;
+ar-LY ; ar-Arab-LY ; ar-LY ;
+ar-MA ; ar-Arab-MA ; ar-MA ;
+ar-MR ; ar-Arab-MR ; ar-MR ;
+ar-OM ; ar-Arab-OM ; ar-OM ;
+ar-PS ; ar-Arab-PS ; ar-PS ;
+ar-QA ; ar-Arab-QA ; ar-QA ;
+ar-SA ; ar-Arab-SA ; ar-SA ;
+ar-SD ; ar-Arab-SD ; ar-SD ;
+ar-SO ; ar-Arab-SO ; ar-SO ;
+ar-SS ; ar-Arab-SS ; ar-SS ;
+ar-SY ; ar-Arab-SY ; ar-SY ;
+ar-TD ; ar-Arab-TD ; ar-TD ;
+ar-TN ; ar-Arab-TN ; ar-TN ;
+ar-YE ; ar-Arab-YE ; ar-YE ;
+as ; as-Beng-IN ; as ;
+as-AQ ; as-Beng-AQ ; as-AQ ;
+as-Beng ; as-Beng-IN ; as ;
+as-Egyp ; as-Egyp-IN ; as-Egyp ;
+as-IN ; as-Beng-IN ; as ;
+ast ; ast-Latn-ES ; ast ;
+ast-AQ ; ast-Latn-AQ ; ast-AQ ;
+ast-ES ; ast-Latn-ES ; ast ;
+ast-Egyp ; ast-Egyp-ES ; ast-Egyp ;
+ast-Latn ; ast-Latn-ES ; ast ;
+az ; az-Latn-AZ ; az ;
+az-AQ ; az-Latn-AQ ; az-AQ ;
+az-AZ ; az-Latn-AZ ; az ;
+az-Egyp ; az-Egyp-AZ ; az-Egyp ;
+az-Latn ; az-Latn-AZ ; az ;
+be ; be-Cyrl-BY ; be ;
+be-AQ ; be-Cyrl-AQ ; be-AQ ;
+be-BY ; be-Cyrl-BY ; be ;
+be-Cyrl ; be-Cyrl-BY ; be ;
+be-Egyp ; be-Egyp-BY ; be-Egyp ;
+bg ; bg-Cyrl-BG ; bg ;
+bg-AQ ; bg-Cyrl-AQ ; bg-AQ ;
+bg-BG ; bg-Cyrl-BG ; bg ;
+bg-Cyrl ; bg-Cyrl-BG ; bg ;
+bg-Egyp ; bg-Egyp-BG ; bg-Egyp ;
+bgc ; bgc-Deva-IN ; bgc ;
+bgc-AQ ; bgc-Deva-AQ ; bgc-AQ ;
+bgc-Deva ; bgc-Deva-IN ; bgc ;
+bgc-Egyp ; bgc-Egyp-IN ; bgc-Egyp ;
+bgc-IN ; bgc-Deva-IN ; bgc ;
+bho ; bho-Deva-IN ; bho ;
+bho-AQ ; bho-Deva-AQ ; bho-AQ ;
+bho-Deva ; bho-Deva-IN ; bho ;
+bho-Egyp ; bho-Egyp-IN ; bho-Egyp ;
+bho-IN ; bho-Deva-IN ; bho ;
+blo ; blo-Latn-BJ ; blo ;
+blo-AQ ; blo-Latn-AQ ; blo-AQ ;
+blo-BJ ; blo-Latn-BJ ; blo ;
+blo-Egyp ; blo-Egyp-BJ ; blo-Egyp ;
+blo-Latn ; blo-Latn-BJ ; blo ;
+bn ; bn-Beng-BD ; bn ;
+bn-AQ ; bn-Beng-AQ ; bn-AQ ;
+bn-BD ; bn-Beng-BD ; bn ;
+bn-Beng ; bn-Beng-BD ; bn ;
+bn-Egyp ; bn-Egyp-BD ; bn-Egyp ;
+bn-IN ; bn-Beng-IN ; bn-IN ;
+br ; br-Latn-FR ; br ;
+br-AQ ; br-Latn-AQ ; br-AQ ;
+br-Egyp ; br-Egyp-FR ; br-Egyp ;
+br-FR ; br-Latn-FR ; br ;
+br-Latn ; br-Latn-FR ; br ;
+brx ; brx-Deva-IN ; brx ;
+brx-AQ ; brx-Deva-AQ ; brx-AQ ;
+brx-Deva ; brx-Deva-IN ; brx ;
+brx-Egyp ; brx-Egyp-IN ; brx-Egyp ;
+brx-IN ; brx-Deva-IN ; brx ;
+bs ; bs-Latn-BA ; bs ;
+bs-AQ ; bs-Latn-AQ ; bs-AQ ;
+bs-BA ; bs-Latn-BA ; bs ;
+bs-Cyrl ; bs-Cyrl-BA ; bs-Cyrl ;
+bs-Egyp ; bs-Egyp-BA ; bs-Egyp ;
+bs-Latn ; bs-Latn-BA ; bs ;
+ca ; ca-Latn-ES ; ca ;
+ca-AD ; ca-Latn-AD ; ca-AD ;
+ca-AQ ; ca-Latn-AQ ; ca-AQ ;
+ca-ES ; ca-Latn-ES ; ca ;
+ca-Egyp ; ca-Egyp-ES ; ca-Egyp ;
+ca-FR ; ca-Latn-FR ; ca-FR ;
+ca-IT ; ca-Latn-IT ; ca-IT ;
+ca-Latn ; ca-Latn-ES ; ca ;
+ceb ; ceb-Latn-PH ; ceb ;
+ceb-AQ ; ceb-Latn-AQ ; ceb-AQ ;
+ceb-Egyp ; ceb-Egyp-PH ; ceb-Egyp ;
+ceb-Latn ; ceb-Latn-PH ; ceb ;
+ceb-PH ; ceb-Latn-PH ; ceb ;
+chr ; chr-Cher-US ; chr ;
+chr-AQ ; chr-Cher-AQ ; chr-AQ ;
+chr-Cher ; chr-Cher-US ; chr ;
+chr-Egyp ; chr-Egyp-US ; chr-Egyp ;
+chr-US ; chr-Cher-US ; chr ;
+cs ; cs-Latn-CZ ; cs ;
+cs-AQ ; cs-Latn-AQ ; cs-AQ ;
+cs-CZ ; cs-Latn-CZ ; cs ;
+cs-Egyp ; cs-Egyp-CZ ; cs-Egyp ;
+cs-Latn ; cs-Latn-CZ ; cs ;
+csw ; csw-Cans-CA ; csw ;
+csw-AQ ; csw-Cans-AQ ; csw-AQ ;
+csw-CA ; csw-Cans-CA ; csw ;
+csw-Cans ; csw-Cans-CA ; csw ;
+csw-Egyp ; csw-Egyp-CA ; csw-Egyp ;
+cv ; cv-Cyrl-RU ; cv ;
+cv-AQ ; cv-Cyrl-AQ ; cv-AQ ;
+cv-Cyrl ; cv-Cyrl-RU ; cv ;
+cv-Egyp ; cv-Egyp-RU ; cv-Egyp ;
+cv-RU ; cv-Cyrl-RU ; cv ;
+cy ; cy-Latn-GB ; cy ;
+cy-AQ ; cy-Latn-AQ ; cy-AQ ;
+cy-Egyp ; cy-Egyp-GB ; cy-Egyp ;
+cy-GB ; cy-Latn-GB ; cy ;
+cy-Latn ; cy-Latn-GB ; cy ;
+da ; da-Latn-DK ; da ;
+da-AQ ; da-Latn-AQ ; da-AQ ;
+da-DK ; da-Latn-DK ; da ;
+da-Egyp ; da-Egyp-DK ; da-Egyp ;
+da-GL ; da-Latn-GL ; da-GL ;
+da-Latn ; da-Latn-DK ; da ;
+de ; de-Latn-DE ; de ;
+de-AQ ; de-Latn-AQ ; de-AQ ;
+de-AT ; de-Latn-AT ; de-AT ;
+de-BE ; de-Latn-BE ; de-BE ;
+de-CH ; de-Latn-CH ; de-CH ;
+de-DE ; de-Latn-DE ; de ;
+de-Egyp ; de-Egyp-DE ; de-Egyp ;
+de-IT ; de-Latn-IT ; de-IT ;
+de-LI ; de-Latn-LI ; de-LI ;
+de-LU ; de-Latn-LU ; de-LU ;
+de-Latn ; de-Latn-DE ; de ;
+doi ; doi-Deva-IN ; doi ;
+doi-AQ ; doi-Deva-AQ ; doi-AQ ;
+doi-Deva ; doi-Deva-IN ; doi ;
+doi-Egyp ; doi-Egyp-IN ; doi-Egyp ;
+doi-IN ; doi-Deva-IN ; doi ;
+dsb ; dsb-Latn-DE ; dsb ;
+dsb-AQ ; dsb-Latn-AQ ; dsb-AQ ;
+dsb-DE ; dsb-Latn-DE ; dsb ;
+dsb-Egyp ; dsb-Egyp-DE ; dsb-Egyp ;
+dsb-Latn ; dsb-Latn-DE ; dsb ;
+el ; el-Grek-GR ; el ;
+el-AQ ; el-Grek-AQ ; el-AQ ;
+el-CY ; el-Grek-CY ; el-CY ;
+el-Egyp ; el-Egyp-GR ; el-Egyp ;
+el-GR ; el-Grek-GR ; el ;
+el-Grek ; el-Grek-GR ; el ;
+en ; en-Latn-US ; en ;
+en-001 ; en-Latn-001 ; en-001 ;
+en-150 ; en-Latn-150 ; en-150 ;
+en-AE ; en-Latn-AE ; en-AE ;
+en-AG ; en-Latn-AG ; en-AG ;
+en-AI ; en-Latn-AI ; en-AI ;
+en-AQ ; en-Latn-AQ ; en-AQ ;
+en-AS ; en-Latn-AS ; en-AS ;
+en-AT ; en-Latn-AT ; en-AT ;
+en-AU ; en-Latn-AU ; en-AU ;
+en-BB ; en-Latn-BB ; en-BB ;
+en-BE ; en-Latn-BE ; en-BE ;
+en-BI ; en-Latn-BI ; en-BI ;
+en-BM ; en-Latn-BM ; en-BM ;
+en-BS ; en-Latn-BS ; en-BS ;
+en-BW ; en-Latn-BW ; en-BW ;
+en-BZ ; en-Latn-BZ ; en-BZ ;
+en-CA ; en-Latn-CA ; en-CA ;
+en-CC ; en-Latn-CC ; en-CC ;
+en-CH ; en-Latn-CH ; en-CH ;
+en-CK ; en-Latn-CK ; en-CK ;
+en-CM ; en-Latn-CM ; en-CM ;
+en-CX ; en-Latn-CX ; en-CX ;
+en-CY ; en-Latn-CY ; en-CY ;
+en-DE ; en-Latn-DE ; en-DE ;
+en-DG ; en-Latn-DG ; en-DG ;
+en-DK ; en-Latn-DK ; en-DK ;
+en-DM ; en-Latn-DM ; en-DM ;
+en-ER ; en-Latn-ER ; en-ER ;
+en-Egyp ; en-Egyp-US ; en-Egyp ;
+en-FI ; en-Latn-FI ; en-FI ;
+en-FJ ; en-Latn-FJ ; en-FJ ;
+en-FK ; en-Latn-FK ; en-FK ;
+en-FM ; en-Latn-FM ; en-FM ;
+en-GB ; en-Latn-GB ; en-GB ;
+en-GD ; en-Latn-GD ; en-GD ;
+en-GG ; en-Latn-GG ; en-GG ;
+en-GH ; en-Latn-GH ; en-GH ;
+en-GI ; en-Latn-GI ; en-GI ;
+en-GM ; en-Latn-GM ; en-GM ;
+en-GU ; en-Latn-GU ; en-GU ;
+en-GY ; en-Latn-GY ; en-GY ;
+en-HK ; en-Latn-HK ; en-HK ;
+en-ID ; en-Latn-ID ; en-ID ;
+en-IE ; en-Latn-IE ; en-IE ;
+en-IL ; en-Latn-IL ; en-IL ;
+en-IM ; en-Latn-IM ; en-IM ;
+en-IN ; en-Latn-IN ; en-IN ;
+en-IO ; en-Latn-IO ; en-IO ;
+en-JE ; en-Latn-JE ; en-JE ;
+en-JM ; en-Latn-JM ; en-JM ;
+en-KE ; en-Latn-KE ; en-KE ;
+en-KI ; en-Latn-KI ; en-KI ;
+en-KN ; en-Latn-KN ; en-KN ;
+en-KY ; en-Latn-KY ; en-KY ;
+en-LC ; en-Latn-LC ; en-LC ;
+en-LR ; en-Latn-LR ; en-LR ;
+en-LS ; en-Latn-LS ; en-LS ;
+en-Latn ; en-Latn-US ; en ;
+en-MG ; en-Latn-MG ; en-MG ;
+en-MH ; en-Latn-MH ; en-MH ;
+en-MO ; en-Latn-MO ; en-MO ;
+en-MP ; en-Latn-MP ; en-MP ;
+en-MS ; en-Latn-MS ; en-MS ;
+en-MT ; en-Latn-MT ; en-MT ;
+en-MU ; en-Latn-MU ; en-MU ;
+en-MV ; en-Latn-MV ; en-MV ;
+en-MW ; en-Latn-MW ; en-MW ;
+en-MY ; en-Latn-MY ; en-MY ;
+en-NA ; en-Latn-NA ; en-NA ;
+en-NF ; en-Latn-NF ; en-NF ;
+en-NG ; en-Latn-NG ; en-NG ;
+en-NL ; en-Latn-NL ; en-NL ;
+en-NR ; en-Latn-NR ; en-NR ;
+en-NU ; en-Latn-NU ; en-NU ;
+en-NZ ; en-Latn-NZ ; en-NZ ;
+en-PG ; en-Latn-PG ; en-PG ;
+en-PH ; en-Latn-PH ; en-PH ;
+en-PK ; en-Latn-PK ; en-PK ;
+en-PN ; en-Latn-PN ; en-PN ;
+en-PR ; en-Latn-PR ; en-PR ;
+en-PW ; en-Latn-PW ; en-PW ;
+en-RW ; en-Latn-RW ; en-RW ;
+en-SB ; en-Latn-SB ; en-SB ;
+en-SC ; en-Latn-SC ; en-SC ;
+en-SD ; en-Latn-SD ; en-SD ;
+en-SE ; en-Latn-SE ; en-SE ;
+en-SG ; en-Latn-SG ; en-SG ;
+en-SH ; en-Latn-SH ; en-SH ;
+en-SI ; en-Latn-SI ; en-SI ;
+en-SL ; en-Latn-SL ; en-SL ;
+en-SS ; en-Latn-SS ; en-SS ;
+en-SX ; en-Latn-SX ; en-SX ;
+en-SZ ; en-Latn-SZ ; en-SZ ;
+en-TC ; en-Latn-TC ; en-TC ;
+en-TK ; en-Latn-TK ; en-TK ;
+en-TO ; en-Latn-TO ; en-TO ;
+en-TT ; en-Latn-TT ; en-TT ;
+en-TV ; en-Latn-TV ; en-TV ;
+en-TZ ; en-Latn-TZ ; en-TZ ;
+en-UG ; en-Latn-UG ; en-UG ;
+en-UM ; en-Latn-UM ; en-UM ;
+en-US ; en-Latn-US ; en ;
+en-VC ; en-Latn-VC ; en-VC ;
+en-VG ; en-Latn-VG ; en-VG ;
+en-VI ; en-Latn-VI ; en-VI ;
+en-VU ; en-Latn-VU ; en-VU ;
+en-WS ; en-Latn-WS ; en-WS ;
+en-ZA ; en-Latn-ZA ; en-ZA ;
+en-ZM ; en-Latn-ZM ; en-ZM ;
+en-ZW ; en-Latn-ZW ; en-ZW ;
+es ; es-Latn-ES ; es ;
+es-419 ; es-Latn-419 ; es-419 ;
+es-AQ ; es-Latn-AQ ; es-AQ ;
+es-AR ; es-Latn-AR ; es-AR ;
+es-BO ; es-Latn-BO ; es-BO ;
+es-BR ; es-Latn-BR ; es-BR ;
+es-BZ ; es-Latn-BZ ; es-BZ ;
+es-CL ; es-Latn-CL ; es-CL ;
+es-CO ; es-Latn-CO ; es-CO ;
+es-CR ; es-Latn-CR ; es-CR ;
+es-CU ; es-Latn-CU ; es-CU ;
+es-DO ; es-Latn-DO ; es-DO ;
+es-EA ; es-Latn-EA ; es-EA ;
+es-EC ; es-Latn-EC ; es-EC ;
+es-ES ; es-Latn-ES ; es ;
+es-Egyp ; es-Egyp-ES ; es-Egyp ;
+es-GQ ; es-Latn-GQ ; es-GQ ;
+es-GT ; es-Latn-GT ; es-GT ;
+es-HN ; es-Latn-HN ; es-HN ;
+es-IC ; es-Latn-IC ; es-IC ;
+es-Latn ; es-Latn-ES ; es ;
+es-MX ; es-Latn-MX ; es-MX ;
+es-NI ; es-Latn-NI ; es-NI ;
+es-PA ; es-Latn-PA ; es-PA ;
+es-PE ; es-Latn-PE ; es-PE ;
+es-PH ; es-Latn-PH ; es-PH ;
+es-PR ; es-Latn-PR ; es-PR ;
+es-PY ; es-Latn-PY ; es-PY ;
+es-SV ; es-Latn-SV ; es-SV ;
+es-US ; es-Latn-US ; es-US ;
+es-UY ; es-Latn-UY ; es-UY ;
+es-VE ; es-Latn-VE ; es-VE ;
+et ; et-Latn-EE ; et ;
+et-AQ ; et-Latn-AQ ; et-AQ ;
+et-EE ; et-Latn-EE ; et ;
+et-Egyp ; et-Egyp-EE ; et-Egyp ;
+et-Latn ; et-Latn-EE ; et ;
+eu ; eu-Latn-ES ; eu ;
+eu-AQ ; eu-Latn-AQ ; eu-AQ ;
+eu-ES ; eu-Latn-ES ; eu ;
+eu-Egyp ; eu-Egyp-ES ; eu-Egyp ;
+eu-Latn ; eu-Latn-ES ; eu ;
+fa ; fa-Arab-IR ; fa ;
+fa-AF ; fa-Arab-AF ; fa-AF ;
+fa-AQ ; fa-Arab-AQ ; fa-AQ ;
+fa-Arab ; fa-Arab-IR ; fa ;
+fa-Egyp ; fa-Egyp-IR ; fa-Egyp ;
+fa-IR ; fa-Arab-IR ; fa ;
+ff ; ff-Latn-SN ; ff ;
+ff-AQ ; ff-Latn-AQ ; ff-AQ ;
+ff-Adlm ; ff-Adlm-GN ; ff-Adlm ;
+ff-BF ; ff-Latn-BF ; ff-BF ;
+ff-CM ; ff-Latn-CM ; ff-CM ;
+ff-Egyp ; ff-Egyp-SN ; ff-Egyp ;
+ff-GH ; ff-Latn-GH ; ff-GH ;
+ff-GM ; ff-Latn-GM ; ff-GM ;
+ff-GN ; ff-Latn-GN ; ff-GN ;
+ff-GW ; ff-Latn-GW ; ff-GW ;
+ff-LR ; ff-Latn-LR ; ff-LR ;
+ff-MR ; ff-Latn-MR ; ff-MR ;
+ff-NE ; ff-Latn-NE ; ff-NE ;
+ff-NG ; ff-Latn-NG ; ff-NG ;
+ff-SL ; ff-Latn-SL ; ff-SL ;
+ff-SN ; ff-Latn-SN ; ff ;
+fi ; fi-Latn-FI ; fi ;
+fi-AQ ; fi-Latn-AQ ; fi-AQ ;
+fi-Egyp ; fi-Egyp-FI ; fi-Egyp ;
+fi-FI ; fi-Latn-FI ; fi ;
+fi-Latn ; fi-Latn-FI ; fi ;
+fil ; fil-Latn-PH ; fil ;
+fil-AQ ; fil-Latn-AQ ; fil-AQ ;
+fil-Egyp ; fil-Egyp-PH ; fil-Egyp ;
+fil-Latn ; fil-Latn-PH ; fil ;
+fil-PH ; fil-Latn-PH ; fil ;
+fo ; fo-Latn-FO ; fo ;
+fo-AQ ; fo-Latn-AQ ; fo-AQ ;
+fo-DK ; fo-Latn-DK ; fo-DK ;
+fo-Egyp ; fo-Egyp-FO ; fo-Egyp ;
+fo-FO ; fo-Latn-FO ; fo ;
+fo-Latn ; fo-Latn-FO ; fo ;
+fr ; fr-Latn-FR ; fr ;
+fr-AQ ; fr-Latn-AQ ; fr-AQ ;
+fr-BE ; fr-Latn-BE ; fr-BE ;
+fr-BF ; fr-Latn-BF ; fr-BF ;
+fr-BI ; fr-Latn-BI ; fr-BI ;
+fr-BJ ; fr-Latn-BJ ; fr-BJ ;
+fr-BL ; fr-Latn-BL ; fr-BL ;
+fr-CA ; fr-Latn-CA ; fr-CA ;
+fr-CD ; fr-Latn-CD ; fr-CD ;
+fr-CF ; fr-Latn-CF ; fr-CF ;
+fr-CG ; fr-Latn-CG ; fr-CG ;
+fr-CH ; fr-Latn-CH ; fr-CH ;
+fr-CI ; fr-Latn-CI ; fr-CI ;
+fr-CM ; fr-Latn-CM ; fr-CM ;
+fr-DJ ; fr-Latn-DJ ; fr-DJ ;
+fr-DZ ; fr-Latn-DZ ; fr-DZ ;
+fr-Egyp ; fr-Egyp-FR ; fr-Egyp ;
+fr-FR ; fr-Latn-FR ; fr ;
+fr-GA ; fr-Latn-GA ; fr-GA ;
+fr-GF ; fr-Latn-GF ; fr-GF ;
+fr-GN ; fr-Latn-GN ; fr-GN ;
+fr-GP ; fr-Latn-GP ; fr-GP ;
+fr-GQ ; fr-Latn-GQ ; fr-GQ ;
+fr-HT ; fr-Latn-HT ; fr-HT ;
+fr-KM ; fr-Latn-KM ; fr-KM ;
+fr-LU ; fr-Latn-LU ; fr-LU ;
+fr-Latn ; fr-Latn-FR ; fr ;
+fr-MA ; fr-Latn-MA ; fr-MA ;
+fr-MC ; fr-Latn-MC ; fr-MC ;
+fr-MF ; fr-Latn-MF ; fr-MF ;
+fr-MG ; fr-Latn-MG ; fr-MG ;
+fr-ML ; fr-Latn-ML ; fr-ML ;
+fr-MQ ; fr-Latn-MQ ; fr-MQ ;
+fr-MR ; fr-Latn-MR ; fr-MR ;
+fr-MU ; fr-Latn-MU ; fr-MU ;
+fr-NC ; fr-Latn-NC ; fr-NC ;
+fr-NE ; fr-Latn-NE ; fr-NE ;
+fr-PF ; fr-Latn-PF ; fr-PF ;
+fr-PM ; fr-Latn-PM ; fr-PM ;
+fr-RE ; fr-Latn-RE ; fr-RE ;
+fr-RW ; fr-Latn-RW ; fr-RW ;
+fr-SC ; fr-Latn-SC ; fr-SC ;
+fr-SN ; fr-Latn-SN ; fr-SN ;
+fr-SY ; fr-Latn-SY ; fr-SY ;
+fr-TD ; fr-Latn-TD ; fr-TD ;
+fr-TG ; fr-Latn-TG ; fr-TG ;
+fr-TN ; fr-Latn-TN ; fr-TN ;
+fr-VU ; fr-Latn-VU ; fr-VU ;
+fr-WF ; fr-Latn-WF ; fr-WF ;
+fr-YT ; fr-Latn-YT ; fr-YT ;
+fy ; fy-Latn-NL ; fy ;
+fy-AQ ; fy-Latn-AQ ; fy-AQ ;
+fy-Egyp ; fy-Egyp-NL ; fy-Egyp ;
+fy-Latn ; fy-Latn-NL ; fy ;
+fy-NL ; fy-Latn-NL ; fy ;
+ga ; ga-Latn-IE ; ga ;
+ga-AQ ; ga-Latn-AQ ; ga-AQ ;
+ga-Egyp ; ga-Egyp-IE ; ga-Egyp ;
+ga-GB ; ga-Latn-GB ; ga-GB ;
+ga-IE ; ga-Latn-IE ; ga ;
+ga-Latn ; ga-Latn-IE ; ga ;
+gd ; gd-Latn-GB ; gd ;
+gd-AQ ; gd-Latn-AQ ; gd-AQ ;
+gd-Egyp ; gd-Egyp-GB ; gd-Egyp ;
+gd-GB ; gd-Latn-GB ; gd ;
+gd-Latn ; gd-Latn-GB ; gd ;
+gl ; gl-Latn-ES ; gl ;
+gl-AQ ; gl-Latn-AQ ; gl-AQ ;
+gl-ES ; gl-Latn-ES ; gl ;
+gl-Egyp ; gl-Egyp-ES ; gl-Egyp ;
+gl-Latn ; gl-Latn-ES ; gl ;
+gu ; gu-Gujr-IN ; gu ;
+gu-AQ ; gu-Gujr-AQ ; gu-AQ ;
+gu-Egyp ; gu-Egyp-IN ; gu-Egyp ;
+gu-Gujr ; gu-Gujr-IN ; gu ;
+gu-IN ; gu-Gujr-IN ; gu ;
+ha ; ha-Latn-NG ; ha ;
+ha-AQ ; ha-Latn-AQ ; ha-AQ ;
+ha-Egyp ; ha-Egyp-NG ; ha-Egyp ;
+ha-GH ; ha-Latn-GH ; ha-GH ;
+ha-Latn ; ha-Latn-NG ; ha ;
+ha-NE ; ha-Latn-NE ; ha-NE ;
+ha-NG ; ha-Latn-NG ; ha ;
+he ; he-Hebr-IL ; he ;
+he-AQ ; he-Hebr-AQ ; he-AQ ;
+he-Egyp ; he-Egyp-IL ; he-Egyp ;
+he-Hebr ; he-Hebr-IL ; he ;
+he-IL ; he-Hebr-IL ; he ;
+hi ; hi-Deva-IN ; hi ;
+hi-AQ ; hi-Deva-AQ ; hi-AQ ;
+hi-Deva ; hi-Deva-IN ; hi ;
+hi-Egyp ; hi-Egyp-IN ; hi-Egyp ;
+hi-IN ; hi-Deva-IN ; hi ;
+hi-Latn ; hi-Latn-IN ; hi-Latn ;
+hr ; hr-Latn-HR ; hr ;
+hr-AQ ; hr-Latn-AQ ; hr-AQ ;
+hr-BA ; hr-Latn-BA ; hr-BA ;
+hr-Egyp ; hr-Egyp-HR ; hr-Egyp ;
+hr-HR ; hr-Latn-HR ; hr ;
+hr-Latn ; hr-Latn-HR ; hr ;
+hsb ; hsb-Latn-DE ; hsb ;
+hsb-AQ ; hsb-Latn-AQ ; hsb-AQ ;
+hsb-DE ; hsb-Latn-DE ; hsb ;
+hsb-Egyp ; hsb-Egyp-DE ; hsb-Egyp ;
+hsb-Latn ; hsb-Latn-DE ; hsb ;
+hu ; hu-Latn-HU ; hu ;
+hu-AQ ; hu-Latn-AQ ; hu-AQ ;
+hu-Egyp ; hu-Egyp-HU ; hu-Egyp ;
+hu-HU ; hu-Latn-HU ; hu ;
+hu-Latn ; hu-Latn-HU ; hu ;
+hy ; hy-Armn-AM ; hy ;
+hy-AM ; hy-Armn-AM ; hy ;
+hy-AQ ; hy-Armn-AQ ; hy-AQ ;
+hy-Armn ; hy-Armn-AM ; hy ;
+hy-Egyp ; hy-Egyp-AM ; hy-Egyp ;
+id ; id-Latn-ID ; id ;
+id-AQ ; id-Latn-AQ ; id-AQ ;
+id-Egyp ; id-Egyp-ID ; id-Egyp ;
+id-ID ; id-Latn-ID ; id ;
+id-Latn ; id-Latn-ID ; id ;
+ie ; ie-Latn-EE ; ie ;
+ie-AQ ; ie-Latn-AQ ; ie-AQ ;
+ie-EE ; ie-Latn-EE ; ie ;
+ie-Egyp ; ie-Egyp-EE ; ie-Egyp ;
+ie-Latn ; ie-Latn-EE ; ie ;
+ig ; ig-Latn-NG ; ig ;
+ig-AQ ; ig-Latn-AQ ; ig-AQ ;
+ig-Egyp ; ig-Egyp-NG ; ig-Egyp ;
+ig-Latn ; ig-Latn-NG ; ig ;
+ig-NG ; ig-Latn-NG ; ig ;
+is ; is-Latn-IS ; is ;
+is-AQ ; is-Latn-AQ ; is-AQ ;
+is-Egyp ; is-Egyp-IS ; is-Egyp ;
+is-IS ; is-Latn-IS ; is ;
+is-Latn ; is-Latn-IS ; is ;
+it ; it-Latn-IT ; it ;
+it-AQ ; it-Latn-AQ ; it-AQ ;
+it-CH ; it-Latn-CH ; it-CH ;
+it-Egyp ; it-Egyp-IT ; it-Egyp ;
+it-IT ; it-Latn-IT ; it ;
+it-Latn ; it-Latn-IT ; it ;
+it-SM ; it-Latn-SM ; it-SM ;
+it-VA ; it-Latn-VA ; it-VA ;
+ja ; ja-Jpan-JP ; ja ;
+ja-AQ ; ja-Jpan-AQ ; ja-AQ ;
+ja-Egyp ; ja-Egyp-JP ; ja-Egyp ;
+ja-JP ; ja-Jpan-JP ; ja ;
+ja-Jpan ; ja-Jpan-JP ; ja ;
+jv ; jv-Latn-ID ; jv ;
+jv-AQ ; jv-Latn-AQ ; jv-AQ ;
+jv-Egyp ; jv-Egyp-ID ; jv-Egyp ;
+jv-ID ; jv-Latn-ID ; jv ;
+jv-Latn ; jv-Latn-ID ; jv ;
+ka ; ka-Geor-GE ; ka ;
+ka-AQ ; ka-Geor-AQ ; ka-AQ ;
+ka-Egyp ; ka-Egyp-GE ; ka-Egyp ;
+ka-GE ; ka-Geor-GE ; ka ;
+ka-Geor ; ka-Geor-GE ; ka ;
+kea ; kea-Latn-CV ; kea ;
+kea-AQ ; kea-Latn-AQ ; kea-AQ ;
+kea-CV ; kea-Latn-CV ; kea ;
+kea-Egyp ; kea-Egyp-CV ; kea-Egyp ;
+kea-Latn ; kea-Latn-CV ; kea ;
+kgp ; kgp-Latn-BR ; kgp ;
+kgp-AQ ; kgp-Latn-AQ ; kgp-AQ ;
+kgp-BR ; kgp-Latn-BR ; kgp ;
+kgp-Egyp ; kgp-Egyp-BR ; kgp-Egyp ;
+kgp-Latn ; kgp-Latn-BR ; kgp ;
+kk ; kk-Cyrl-KZ ; kk ;
+kk-AQ ; kk-Cyrl-AQ ; kk-AQ ;
+kk-Cyrl ; kk-Cyrl-KZ ; kk ;
+kk-Egyp ; kk-Egyp-KZ ; kk-Egyp ;
+kk-KZ ; kk-Cyrl-KZ ; kk ;
+km ; km-Khmr-KH ; km ;
+km-AQ ; km-Khmr-AQ ; km-AQ ;
+km-Egyp ; km-Egyp-KH ; km-Egyp ;
+km-KH ; km-Khmr-KH ; km ;
+km-Khmr ; km-Khmr-KH ; km ;
+kn ; kn-Knda-IN ; kn ;
+kn-AQ ; kn-Knda-AQ ; kn-AQ ;
+kn-Egyp ; kn-Egyp-IN ; kn-Egyp ;
+kn-IN ; kn-Knda-IN ; kn ;
+kn-Knda ; kn-Knda-IN ; kn ;
+ko ; ko-Kore-KR ; ko ;
+ko-AQ ; ko-Kore-AQ ; ko-AQ ;
+ko-CN ; ko-Kore-CN ; ko-CN ;
+ko-Egyp ; ko-Egyp-KR ; ko-Egyp ;
+ko-KP ; ko-Kore-KP ; ko-KP ;
+ko-KR ; ko-Kore-KR ; ko ;
+ko-Kore ; ko-Kore-KR ; ko ;
+kok ; kok-Deva-IN ; kok ;
+kok-AQ ; kok-Deva-AQ ; kok-AQ ;
+kok-Deva ; kok-Deva-IN ; kok ;
+kok-Egyp ; kok-Egyp-IN ; kok-Egyp ;
+kok-IN ; kok-Deva-IN ; kok ;
+ks ; ks-Arab-IN ; ks ;
+ks-AQ ; ks-Arab-AQ ; ks-AQ ;
+ks-Arab ; ks-Arab-IN ; ks ;
+ks-Deva ; ks-Deva-IN ; ks-Deva ;
+ks-Egyp ; ks-Egyp-IN ; ks-Egyp ;
+ks-IN ; ks-Arab-IN ; ks ;
+ku ; ku-Latn-TR ; ku ;
+ku-AQ ; ku-Latn-AQ ; ku-AQ ;
+ku-Egyp ; ku-Egyp-TR ; ku-Egyp ;
+ku-Latn ; ku-Latn-TR ; ku ;
+ku-TR ; ku-Latn-TR ; ku ;
+kxv ; kxv-Latn-IN ; kxv ;
+kxv-AQ ; kxv-Latn-AQ ; kxv-AQ ;
+kxv-Deva ; kxv-Deva-IN ; kxv-Deva ;
+kxv-Egyp ; kxv-Egyp-IN ; kxv-Egyp ;
+kxv-IN ; kxv-Latn-IN ; kxv ;
+kxv-Latn ; kxv-Latn-IN ; kxv ;
+kxv-Orya ; kxv-Orya-IN ; kxv-Orya ;
+kxv-Telu ; kxv-Telu-IN ; kxv-Telu ;
+ky ; ky-Cyrl-KG ; ky ;
+ky-AQ ; ky-Cyrl-AQ ; ky-AQ ;
+ky-Cyrl ; ky-Cyrl-KG ; ky ;
+ky-Egyp ; ky-Egyp-KG ; ky-Egyp ;
+ky-KG ; ky-Cyrl-KG ; ky ;
+lb ; lb-Latn-LU ; lb ;
+lb-AQ ; lb-Latn-AQ ; lb-AQ ;
+lb-Egyp ; lb-Egyp-LU ; lb-Egyp ;
+lb-LU ; lb-Latn-LU ; lb ;
+lb-Latn ; lb-Latn-LU ; lb ;
+lij ; lij-Latn-IT ; lij ;
+lij-AQ ; lij-Latn-AQ ; lij-AQ ;
+lij-Egyp ; lij-Egyp-IT ; lij-Egyp ;
+lij-IT ; lij-Latn-IT ; lij ;
+lij-Latn ; lij-Latn-IT ; lij ;
+lmo ; lmo-Latn-IT ; lmo ;
+lmo-AQ ; lmo-Latn-AQ ; lmo-AQ ;
+lmo-Egyp ; lmo-Egyp-IT ; lmo-Egyp ;
+lmo-IT ; lmo-Latn-IT ; lmo ;
+lmo-Latn ; lmo-Latn-IT ; lmo ;
+lo ; lo-Laoo-LA ; lo ;
+lo-AQ ; lo-Laoo-AQ ; lo-AQ ;
+lo-Egyp ; lo-Egyp-LA ; lo-Egyp ;
+lo-LA ; lo-Laoo-LA ; lo ;
+lo-Laoo ; lo-Laoo-LA ; lo ;
+lt ; lt-Latn-LT ; lt ;
+lt-AQ ; lt-Latn-AQ ; lt-AQ ;
+lt-Egyp ; lt-Egyp-LT ; lt-Egyp ;
+lt-LT ; lt-Latn-LT ; lt ;
+lt-Latn ; lt-Latn-LT ; lt ;
+lv ; lv-Latn-LV ; lv ;
+lv-AQ ; lv-Latn-AQ ; lv-AQ ;
+lv-Egyp ; lv-Egyp-LV ; lv-Egyp ;
+lv-LV ; lv-Latn-LV ; lv ;
+lv-Latn ; lv-Latn-LV ; lv ;
+mai ; mai-Deva-IN ; mai ;
+mai-AQ ; mai-Deva-AQ ; mai-AQ ;
+mai-Deva ; mai-Deva-IN ; mai ;
+mai-Egyp ; mai-Egyp-IN ; mai-Egyp ;
+mai-IN ; mai-Deva-IN ; mai ;
+mi ; mi-Latn-NZ ; mi ;
+mi-AQ ; mi-Latn-AQ ; mi-AQ ;
+mi-Egyp ; mi-Egyp-NZ ; mi-Egyp ;
+mi-Latn ; mi-Latn-NZ ; mi ;
+mi-NZ ; mi-Latn-NZ ; mi ;
+mk ; mk-Cyrl-MK ; mk ;
+mk-AQ ; mk-Cyrl-AQ ; mk-AQ ;
+mk-Cyrl ; mk-Cyrl-MK ; mk ;
+mk-Egyp ; mk-Egyp-MK ; mk-Egyp ;
+mk-MK ; mk-Cyrl-MK ; mk ;
+ml ; ml-Mlym-IN ; ml ;
+ml-AQ ; ml-Mlym-AQ ; ml-AQ ;
+ml-Egyp ; ml-Egyp-IN ; ml-Egyp ;
+ml-IN ; ml-Mlym-IN ; ml ;
+ml-Mlym ; ml-Mlym-IN ; ml ;
+mn ; mn-Cyrl-MN ; mn ;
+mn-AQ ; mn-Cyrl-AQ ; mn-AQ ;
+mn-Cyrl ; mn-Cyrl-MN ; mn ;
+mn-Egyp ; mn-Egyp-MN ; mn-Egyp ;
+mn-MN ; mn-Cyrl-MN ; mn ;
+mni ; mni-Beng-IN ; mni ;
+mni-AQ ; mni-Beng-AQ ; mni-AQ ;
+mni-Beng ; mni-Beng-IN ; mni ;
+mni-Egyp ; mni-Egyp-IN ; mni-Egyp ;
+mni-IN ; mni-Beng-IN ; mni ;
+mr ; mr-Deva-IN ; mr ;
+mr-AQ ; mr-Deva-AQ ; mr-AQ ;
+mr-Deva ; mr-Deva-IN ; mr ;
+mr-Egyp ; mr-Egyp-IN ; mr-Egyp ;
+mr-IN ; mr-Deva-IN ; mr ;
+ms ; ms-Latn-MY ; ms ;
+ms-AQ ; ms-Latn-AQ ; ms-AQ ;
+ms-BN ; ms-Latn-BN ; ms-BN ;
+ms-Egyp ; ms-Egyp-MY ; ms-Egyp ;
+ms-ID ; ms-Latn-ID ; ms-ID ;
+ms-Latn ; ms-Latn-MY ; ms ;
+ms-MY ; ms-Latn-MY ; ms ;
+ms-SG ; ms-Latn-SG ; ms-SG ;
+mt ; mt-Latn-MT ; mt ;
+mt-AQ ; mt-Latn-AQ ; mt-AQ ;
+mt-Egyp ; mt-Egyp-MT ; mt-Egyp ;
+mt-Latn ; mt-Latn-MT ; mt ;
+mt-MT ; mt-Latn-MT ; mt ;
+my ; my-Mymr-MM ; my ;
+my-AQ ; my-Mymr-AQ ; my-AQ ;
+my-Egyp ; my-Egyp-MM ; my-Egyp ;
+my-MM ; my-Mymr-MM ; my ;
+my-Mymr ; my-Mymr-MM ; my ;
+nb ; nb-Latn-NO ; nb ;
+nb-AQ ; nb-Latn-AQ ; nb-AQ ;
+nb-Egyp ; nb-Egyp-NO ; nb-Egyp ;
+nb-Latn ; nb-Latn-NO ; nb ;
+nb-NO ; nb-Latn-NO ; nb ;
+nb-SJ ; nb-Latn-SJ ; nb-SJ ;
+nds ; nds-Latn-DE ; nds ;
+nds-AQ ; nds-Latn-AQ ; nds-AQ ;
+nds-DE ; nds-Latn-DE ; nds ;
+nds-Egyp ; nds-Egyp-DE ; nds-Egyp ;
+nds-Latn ; nds-Latn-DE ; nds ;
+nds-NL ; nds-Latn-NL ; nds-NL ;
+ne ; ne-Deva-NP ; ne ;
+ne-AQ ; ne-Deva-AQ ; ne-AQ ;
+ne-Deva ; ne-Deva-NP ; ne ;
+ne-Egyp ; ne-Egyp-NP ; ne-Egyp ;
+ne-IN ; ne-Deva-IN ; ne-IN ;
+ne-NP ; ne-Deva-NP ; ne ;
+nl ; nl-Latn-NL ; nl ;
+nl-AQ ; nl-Latn-AQ ; nl-AQ ;
+nl-AW ; nl-Latn-AW ; nl-AW ;
+nl-BE ; nl-Latn-BE ; nl-BE ;
+nl-BQ ; nl-Latn-BQ ; nl-BQ ;
+nl-CW ; nl-Latn-CW ; nl-CW ;
+nl-Egyp ; nl-Egyp-NL ; nl-Egyp ;
+nl-Latn ; nl-Latn-NL ; nl ;
+nl-NL ; nl-Latn-NL ; nl ;
+nl-SR ; nl-Latn-SR ; nl-SR ;
+nl-SX ; nl-Latn-SX ; nl-SX ;
+nn ; nn-Latn-NO ; nn ;
+nn-AQ ; nn-Latn-AQ ; nn-AQ ;
+nn-Egyp ; nn-Egyp-NO ; nn-Egyp ;
+nn-Latn ; nn-Latn-NO ; nn ;
+nn-NO ; nn-Latn-NO ; nn ;
+no ; no-Latn-NO ; no ;
+no-AQ ; no-Latn-AQ ; no-AQ ;
+no-Egyp ; no-Egyp-NO ; no-Egyp ;
+no-Latn ; no-Latn-NO ; no ;
+no-NO ; no-Latn-NO ; no ;
+nqo ; nqo-Nkoo-GN ; nqo ;
+nqo-AQ ; nqo-Nkoo-AQ ; nqo-AQ ;
+nqo-Egyp ; nqo-Egyp-GN ; nqo-Egyp ;
+nqo-GN ; nqo-Nkoo-GN ; nqo ;
+nqo-Nkoo ; nqo-Nkoo-GN ; nqo ;
+oc ; oc-Latn-FR ; oc ;
+oc-AQ ; oc-Latn-AQ ; oc-AQ ;
+oc-ES ; oc-Latn-ES ; oc-ES ;
+oc-Egyp ; oc-Egyp-FR ; oc-Egyp ;
+oc-FR ; oc-Latn-FR ; oc ;
+oc-Latn ; oc-Latn-FR ; oc ;
+or ; or-Orya-IN ; or ;
+or-AQ ; or-Orya-AQ ; or-AQ ;
+or-Egyp ; or-Egyp-IN ; or-Egyp ;
+or-IN ; or-Orya-IN ; or ;
+or-Orya ; or-Orya-IN ; or ;
+pa ; pa-Guru-IN ; pa ;
+pa-AQ ; pa-Guru-AQ ; pa-AQ ;
+pa-Egyp ; pa-Egyp-IN ; pa-Egyp ;
+pa-Guru ; pa-Guru-IN ; pa ;
+pa-IN ; pa-Guru-IN ; pa ;
+pcm ; pcm-Latn-NG ; pcm ;
+pcm-AQ ; pcm-Latn-AQ ; pcm-AQ ;
+pcm-Egyp ; pcm-Egyp-NG ; pcm-Egyp ;
+pcm-Latn ; pcm-Latn-NG ; pcm ;
+pcm-NG ; pcm-Latn-NG ; pcm ;
+pl ; pl-Latn-PL ; pl ;
+pl-AQ ; pl-Latn-AQ ; pl-AQ ;
+pl-Egyp ; pl-Egyp-PL ; pl-Egyp ;
+pl-Latn ; pl-Latn-PL ; pl ;
+pl-PL ; pl-Latn-PL ; pl ;
+prg ; prg-Latn-PL ; prg ;
+prg-AQ ; prg-Latn-AQ ; prg-AQ ;
+prg-Egyp ; prg-Egyp-PL ; prg-Egyp ;
+prg-Latn ; prg-Latn-PL ; prg ;
+prg-PL ; prg-Latn-PL ; prg ;
+ps ; ps-Arab-AF ; ps ;
+ps-AF ; ps-Arab-AF ; ps ;
+ps-AQ ; ps-Arab-AQ ; ps-AQ ;
+ps-Arab ; ps-Arab-AF ; ps ;
+ps-Egyp ; ps-Egyp-AF ; ps-Egyp ;
+ps-PK ; ps-Arab-PK ; ps-PK ;
+pt ; pt-Latn-BR ; pt ;
+pt-AO ; pt-Latn-AO ; pt-AO ;
+pt-AQ ; pt-Latn-AQ ; pt-AQ ;
+pt-BR ; pt-Latn-BR ; pt ;
+pt-CH ; pt-Latn-CH ; pt-CH ;
+pt-CV ; pt-Latn-CV ; pt-CV ;
+pt-Egyp ; pt-Egyp-BR ; pt-Egyp ;
+pt-GQ ; pt-Latn-GQ ; pt-GQ ;
+pt-GW ; pt-Latn-GW ; pt-GW ;
+pt-LU ; pt-Latn-LU ; pt-LU ;
+pt-Latn ; pt-Latn-BR ; pt ;
+pt-MO ; pt-Latn-MO ; pt-MO ;
+pt-MZ ; pt-Latn-MZ ; pt-MZ ;
+pt-PT ; pt-Latn-PT ; pt-PT ;
+pt-ST ; pt-Latn-ST ; pt-ST ;
+pt-TL ; pt-Latn-TL ; pt-TL ;
+qaa ; FAIL ; ;
+qaa-CH ; FAIL ; ;
+qaa-Cyrl ; FAIL ; ;
+qaa-Cyrl-CH ; ; ;
+qu ; qu-Latn-PE ; qu ;
+qu-AQ ; qu-Latn-AQ ; qu-AQ ;
+qu-BO ; qu-Latn-BO ; qu-BO ;
+qu-EC ; qu-Latn-EC ; qu-EC ;
+qu-Egyp ; qu-Egyp-PE ; qu-Egyp ;
+qu-Latn ; qu-Latn-PE ; qu ;
+qu-PE ; qu-Latn-PE ; qu ;
+raj ; raj-Deva-IN ; raj ;
+raj-AQ ; raj-Deva-AQ ; raj-AQ ;
+raj-Deva ; raj-Deva-IN ; raj ;
+raj-Egyp ; raj-Egyp-IN ; raj-Egyp ;
+raj-IN ; raj-Deva-IN ; raj ;
+rm ; rm-Latn-CH ; rm ;
+rm-AQ ; rm-Latn-AQ ; rm-AQ ;
+rm-CH ; rm-Latn-CH ; rm ;
+rm-Egyp ; rm-Egyp-CH ; rm-Egyp ;
+rm-Latn ; rm-Latn-CH ; rm ;
+ro ; ro-Latn-RO ; ro ;
+ro-AQ ; ro-Latn-AQ ; ro-AQ ;
+ro-Egyp ; ro-Egyp-RO ; ro-Egyp ;
+ro-Latn ; ro-Latn-RO ; ro ;
+ro-MD ; ro-Latn-MD ; ro-MD ;
+ro-RO ; ro-Latn-RO ; ro ;
+ru ; ru-Cyrl-RU ; ru ;
+ru-AQ ; ru-Cyrl-AQ ; ru-AQ ;
+ru-BY ; ru-Cyrl-BY ; ru-BY ;
+ru-Cyrl ; ru-Cyrl-RU ; ru ;
+ru-Egyp ; ru-Egyp-RU ; ru-Egyp ;
+ru-KG ; ru-Cyrl-KG ; ru-KG ;
+ru-KZ ; ru-Cyrl-KZ ; ru-KZ ;
+ru-MD ; ru-Cyrl-MD ; ru-MD ;
+ru-RU ; ru-Cyrl-RU ; ru ;
+ru-UA ; ru-Cyrl-UA ; ru-UA ;
+sa ; sa-Deva-IN ; sa ;
+sa-AQ ; sa-Deva-AQ ; sa-AQ ;
+sa-Deva ; sa-Deva-IN ; sa ;
+sa-Egyp ; sa-Egyp-IN ; sa-Egyp ;
+sa-IN ; sa-Deva-IN ; sa ;
+sah ; sah-Cyrl-RU ; sah ;
+sah-AQ ; sah-Cyrl-AQ ; sah-AQ ;
+sah-Cyrl ; sah-Cyrl-RU ; sah ;
+sah-Egyp ; sah-Egyp-RU ; sah-Egyp ;
+sah-RU ; sah-Cyrl-RU ; sah ;
+sat ; sat-Olck-IN ; sat ;
+sat-AQ ; sat-Olck-AQ ; sat-AQ ;
+sat-Egyp ; sat-Egyp-IN ; sat-Egyp ;
+sat-IN ; sat-Olck-IN ; sat ;
+sat-Olck ; sat-Olck-IN ; sat ;
+sc ; sc-Latn-IT ; sc ;
+sc-AQ ; sc-Latn-AQ ; sc-AQ ;
+sc-Egyp ; sc-Egyp-IT ; sc-Egyp ;
+sc-IT ; sc-Latn-IT ; sc ;
+sc-Latn ; sc-Latn-IT ; sc ;
+sd ; sd-Arab-PK ; sd ;
+sd-AQ ; sd-Arab-AQ ; sd-AQ ;
+sd-Arab ; sd-Arab-PK ; sd ;
+sd-Deva ; sd-Deva-IN ; sd-Deva ; sd-IN
+sd-Egyp ; sd-Egyp-PK ; sd-Egyp ;
+sd-IN ; sd-Deva-IN ; sd-Deva ; sd-IN
+sd-PK ; sd-Arab-PK ; sd ;
+si ; si-Sinh-LK ; si ;
+si-AQ ; si-Sinh-AQ ; si-AQ ;
+si-Egyp ; si-Egyp-LK ; si-Egyp ;
+si-LK ; si-Sinh-LK ; si ;
+si-Sinh ; si-Sinh-LK ; si ;
+sk ; sk-Latn-SK ; sk ;
+sk-AQ ; sk-Latn-AQ ; sk-AQ ;
+sk-Egyp ; sk-Egyp-SK ; sk-Egyp ;
+sk-Latn ; sk-Latn-SK ; sk ;
+sk-SK ; sk-Latn-SK ; sk ;
+sl ; sl-Latn-SI ; sl ;
+sl-AQ ; sl-Latn-AQ ; sl-AQ ;
+sl-Egyp ; sl-Egyp-SI ; sl-Egyp ;
+sl-Latn ; sl-Latn-SI ; sl ;
+sl-SI ; sl-Latn-SI ; sl ;
+so ; so-Latn-SO ; so ;
+so-AQ ; so-Latn-AQ ; so-AQ ;
+so-DJ ; so-Latn-DJ ; so-DJ ;
+so-ET ; so-Latn-ET ; so-ET ;
+so-Egyp ; so-Egyp-SO ; so-Egyp ;
+so-KE ; so-Latn-KE ; so-KE ;
+so-Latn ; so-Latn-SO ; so ;
+so-SO ; so-Latn-SO ; so ;
+sq ; sq-Latn-AL ; sq ;
+sq-AL ; sq-Latn-AL ; sq ;
+sq-AQ ; sq-Latn-AQ ; sq-AQ ;
+sq-Egyp ; sq-Egyp-AL ; sq-Egyp ;
+sq-Latn ; sq-Latn-AL ; sq ;
+sq-MK ; sq-Latn-MK ; sq-MK ;
+sq-XK ; sq-Latn-XK ; sq-XK ;
+sr ; sr-Cyrl-RS ; sr ;
+sr-AQ ; sr-Cyrl-AQ ; sr-AQ ;
+sr-BA ; sr-Cyrl-BA ; sr-BA ;
+sr-Cyrl ; sr-Cyrl-RS ; sr ;
+sr-Egyp ; sr-Egyp-RS ; sr-Egyp ;
+sr-Latn ; sr-Latn-RS ; sr-Latn ;
+sr-ME ; sr-Latn-ME ; sr-ME ;
+sr-RS ; sr-Cyrl-RS ; sr ;
+sr-XK ; sr-Cyrl-XK ; sr-XK ;
+su ; su-Latn-ID ; su ;
+su-AQ ; su-Latn-AQ ; su-AQ ;
+su-Egyp ; su-Egyp-ID ; su-Egyp ;
+su-ID ; su-Latn-ID ; su ;
+su-Latn ; su-Latn-ID ; su ;
+sv ; sv-Latn-SE ; sv ;
+sv-AQ ; sv-Latn-AQ ; sv-AQ ;
+sv-AX ; sv-Latn-AX ; sv-AX ;
+sv-Egyp ; sv-Egyp-SE ; sv-Egyp ;
+sv-FI ; sv-Latn-FI ; sv-FI ;
+sv-Latn ; sv-Latn-SE ; sv ;
+sv-SE ; sv-Latn-SE ; sv ;
+sw ; sw-Latn-TZ ; sw ;
+sw-AQ ; sw-Latn-AQ ; sw-AQ ;
+sw-CD ; sw-Latn-CD ; sw-CD ;
+sw-Egyp ; sw-Egyp-TZ ; sw-Egyp ;
+sw-KE ; sw-Latn-KE ; sw-KE ;
+sw-Latn ; sw-Latn-TZ ; sw ;
+sw-TZ ; sw-Latn-TZ ; sw ;
+sw-UG ; sw-Latn-UG ; sw-UG ;
+syr ; syr-Syrc-IQ ; syr ;
+syr-AQ ; syr-Syrc-AQ ; syr-AQ ;
+syr-Egyp ; syr-Egyp-IQ ; syr-Egyp ;
+syr-IQ ; syr-Syrc-IQ ; syr ;
+syr-SY ; syr-Syrc-SY ; syr-SY ;
+syr-Syrc ; syr-Syrc-IQ ; syr ;
+szl ; szl-Latn-PL ; szl ;
+szl-AQ ; szl-Latn-AQ ; szl-AQ ;
+szl-Egyp ; szl-Egyp-PL ; szl-Egyp ;
+szl-Latn ; szl-Latn-PL ; szl ;
+szl-PL ; szl-Latn-PL ; szl ;
+ta ; ta-Taml-IN ; ta ;
+ta-AQ ; ta-Taml-AQ ; ta-AQ ;
+ta-Egyp ; ta-Egyp-IN ; ta-Egyp ;
+ta-IN ; ta-Taml-IN ; ta ;
+ta-LK ; ta-Taml-LK ; ta-LK ;
+ta-MY ; ta-Taml-MY ; ta-MY ;
+ta-SG ; ta-Taml-SG ; ta-SG ;
+ta-Taml ; ta-Taml-IN ; ta ;
+te ; te-Telu-IN ; te ;
+te-AQ ; te-Telu-AQ ; te-AQ ;
+te-Egyp ; te-Egyp-IN ; te-Egyp ;
+te-IN ; te-Telu-IN ; te ;
+te-Telu ; te-Telu-IN ; te ;
+tg ; tg-Cyrl-TJ ; tg ;
+tg-AQ ; tg-Cyrl-AQ ; tg-AQ ;
+tg-Cyrl ; tg-Cyrl-TJ ; tg ;
+tg-Egyp ; tg-Egyp-TJ ; tg-Egyp ;
+tg-TJ ; tg-Cyrl-TJ ; tg ;
+th ; th-Thai-TH ; th ;
+th-AQ ; th-Thai-AQ ; th-AQ ;
+th-Egyp ; th-Egyp-TH ; th-Egyp ;
+th-TH ; th-Thai-TH ; th ;
+th-Thai ; th-Thai-TH ; th ;
+ti ; ti-Ethi-ET ; ti ;
+ti-AQ ; ti-Ethi-AQ ; ti-AQ ;
+ti-ER ; ti-Ethi-ER ; ti-ER ;
+ti-ET ; ti-Ethi-ET ; ti ;
+ti-Egyp ; ti-Egyp-ET ; ti-Egyp ;
+ti-Ethi ; ti-Ethi-ET ; ti ;
+tk ; tk-Latn-TM ; tk ;
+tk-AQ ; tk-Latn-AQ ; tk-AQ ;
+tk-Egyp ; tk-Egyp-TM ; tk-Egyp ;
+tk-Latn ; tk-Latn-TM ; tk ;
+tk-TM ; tk-Latn-TM ; tk ;
+to ; to-Latn-TO ; to ;
+to-AQ ; to-Latn-AQ ; to-AQ ;
+to-Egyp ; to-Egyp-TO ; to-Egyp ;
+to-Latn ; to-Latn-TO ; to ;
+to-TO ; to-Latn-TO ; to ;
+tr ; tr-Latn-TR ; tr ;
+tr-AQ ; tr-Latn-AQ ; tr-AQ ;
+tr-CY ; tr-Latn-CY ; tr-CY ;
+tr-Egyp ; tr-Egyp-TR ; tr-Egyp ;
+tr-Latn ; tr-Latn-TR ; tr ;
+tr-TR ; tr-Latn-TR ; tr ;
+tt ; tt-Cyrl-RU ; tt ;
+tt-AQ ; tt-Cyrl-AQ ; tt-AQ ;
+tt-Cyrl ; tt-Cyrl-RU ; tt ;
+tt-Egyp ; tt-Egyp-RU ; tt-Egyp ;
+tt-RU ; tt-Cyrl-RU ; tt ;
+ug ; ug-Arab-CN ; ug ;
+ug-AQ ; ug-Arab-AQ ; ug-AQ ;
+ug-Arab ; ug-Arab-CN ; ug ;
+ug-CN ; ug-Arab-CN ; ug ;
+ug-Egyp ; ug-Egyp-CN ; ug-Egyp ;
+uk ; uk-Cyrl-UA ; uk ;
+uk-AQ ; uk-Cyrl-AQ ; uk-AQ ;
+uk-Cyrl ; uk-Cyrl-UA ; uk ;
+uk-Egyp ; uk-Egyp-UA ; uk-Egyp ;
+uk-UA ; uk-Cyrl-UA ; uk ;
+und ; en-Latn-US ; en ;
+und-001 ; en-Latn-001 ; en-001 ;
+und-150 ; en-Latn-150 ; en-150 ;
+und-419 ; es-Latn-419 ; es-419 ;
+und-AD ; ca-Latn-AD ; ca-AD ;
+und-AE ; ar-Arab-AE ; ar-AE ;
+und-AF ; fa-Arab-AF ; fa-AF ;
+und-AG ; en-Latn-AG ; en-AG ;
+und-AI ; en-Latn-AI ; en-AI ;
+und-AL ; sq-Latn-AL ; sq ;
+und-AM ; hy-Armn-AM ; hy ;
+und-AO ; pt-Latn-AO ; pt-AO ;
+und-AQ ; en-Latn-AQ ; en-AQ ;
+und-AR ; es-Latn-AR ; es-AR ;
+und-AS ; sm-Latn-AS ; sm-AS ;
+und-AT ; de-Latn-AT ; de-AT ;
+und-AU ; en-Latn-AU ; en-AU ;
+und-AW ; nl-Latn-AW ; nl-AW ;
+und-AX ; sv-Latn-AX ; sv-AX ;
+und-AZ ; az-Latn-AZ ; az ;
+und-Adlm ; ff-Adlm-GN ; ff-Adlm ;
+und-Adlm-AQ ; ff-Adlm-AQ ; ;
+und-Adlm-BF ; ff-Adlm-BF ; ;
+und-Adlm-CM ; ff-Adlm-CM ; ;
+und-Adlm-GH ; ff-Adlm-GH ; ;
+und-Adlm-GM ; ff-Adlm-GM ; ;
+und-Adlm-GN ; ff-Adlm-GN ; ff-Adlm ;
+und-Adlm-GW ; ff-Adlm-GW ; ;
+und-Adlm-LR ; ff-Adlm-LR ; ;
+und-Adlm-MR ; ff-Adlm-MR ; ;
+und-Adlm-NE ; ff-Adlm-NE ; ;
+und-Adlm-NG ; ff-Adlm-NG ; ;
+und-Adlm-SL ; ff-Adlm-SL ; ;
+und-Adlm-SN ; ff-Adlm-SN ; ;
+und-Arab ; ar-Arab-EG ; ar ;
+und-Arab-001 ; ar-Arab-001 ; ar-001 ;
+und-Arab-AE ; ar-Arab-AE ; ar-AE ;
+und-Arab-AF ; fa-Arab-AF ; fa-AF ;
+und-Arab-AQ ; ar-Arab-AQ ; ar-AQ ;
+und-Arab-BH ; ar-Arab-BH ; ar-BH ;
+und-Arab-CN ; ug-Arab-CN ; ug ;
+und-Arab-DJ ; ar-Arab-DJ ; ar-DJ ;
+und-Arab-DZ ; ar-Arab-DZ ; ar-DZ ;
+und-Arab-EG ; ar-Arab-EG ; ar ;
+und-Arab-EH ; ar-Arab-EH ; ar-EH ;
+und-Arab-ER ; ar-Arab-ER ; ar-ER ;
+und-Arab-IL ; ar-Arab-IL ; ar-IL ;
+und-Arab-IN ; ur-Arab-IN ; ur-IN ;
+und-Arab-IQ ; ar-Arab-IQ ; ar-IQ ;
+und-Arab-IR ; fa-Arab-IR ; fa ;
+und-Arab-JO ; ar-Arab-JO ; ar-JO ;
+und-Arab-KM ; ar-Arab-KM ; ar-KM ;
+und-Arab-KW ; ar-Arab-KW ; ar-KW ;
+und-Arab-LB ; ar-Arab-LB ; ar-LB ;
+und-Arab-LY ; ar-Arab-LY ; ar-LY ;
+und-Arab-MA ; ar-Arab-MA ; ar-MA ;
+und-Arab-MR ; ar-Arab-MR ; ar-MR ;
+und-Arab-OM ; ar-Arab-OM ; ar-OM ;
+und-Arab-PK ; ur-Arab-PK ; ur ;
+und-Arab-PS ; ar-Arab-PS ; ar-PS ;
+und-Arab-QA ; ar-Arab-QA ; ar-QA ;
+und-Arab-SA ; ar-Arab-SA ; ar-SA ;
+und-Arab-SD ; ar-Arab-SD ; ar-SD ;
+und-Arab-SO ; ar-Arab-SO ; ar-SO ;
+und-Arab-SS ; ar-Arab-SS ; ar-SS ;
+und-Arab-SY ; ar-Arab-SY ; ar-SY ;
+und-Arab-TD ; ar-Arab-TD ; ar-TD ;
+und-Arab-TN ; ar-Arab-TN ; ar-TN ;
+und-Arab-YE ; ar-Arab-YE ; ar-YE ;
+und-Armn ; hy-Armn-AM ; hy ;
+und-Armn-AM ; hy-Armn-AM ; hy ;
+und-Armn-AQ ; hy-Armn-AQ ; hy-AQ ;
+und-BA ; bs-Latn-BA ; bs ;
+und-BB ; en-Latn-BB ; en-BB ;
+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-BL ; fr-Latn-BL ; fr-BL ;
+und-BM ; en-Latn-BM ; en-BM ;
+und-BN ; ms-Latn-BN ; ms-BN ;
+und-BO ; es-Latn-BO ; es-BO ;
+und-BQ ; pap-Latn-BQ ; pap-BQ ;
+und-BR ; pt-Latn-BR ; pt ;
+und-BS ; en-Latn-BS ; en-BS ;
+und-BW ; en-Latn-BW ; en-BW ;
+und-BY ; be-Cyrl-BY ; be ;
+und-BZ ; en-Latn-BZ ; en-BZ ;
+und-Beng ; bn-Beng-BD ; bn ;
+und-Beng-AQ ; bn-Beng-AQ ; bn-AQ ;
+und-Beng-BD ; bn-Beng-BD ; bn ;
+und-Beng-IN ; bn-Beng-IN ; bn-IN ;
+und-CA ; en-Latn-CA ; en-CA ;
+und-CC ; ms-Arab-CC ; ms-CC ;
+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-CK ; en-Latn-CK ; en-CK ;
+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-CW ; pap-Latn-CW ; pap ;
+und-CX ; en-Latn-CX ; en-CX ;
+und-CY ; el-Grek-CY ; el-CY ;
+und-CZ ; cs-Latn-CZ ; cs ;
+und-Cans ; iu-Cans-CA ; iu ;
+und-Cans-AQ ; iu-Cans-AQ ; iu-AQ ;
+und-Cans-CA ; iu-Cans-CA ; iu ;
+und-Cher ; chr-Cher-US ; chr ;
+und-Cher-AQ ; chr-Cher-AQ ; chr-AQ ;
+und-Cher-US ; chr-Cher-US ; chr ;
+und-Cyrl ; ru-Cyrl-RU ; ru ;
+und-Cyrl-AQ ; ru-Cyrl-AQ ; ru-AQ ;
+und-Cyrl-BA ; sr-Cyrl-BA ; sr-BA ;
+und-Cyrl-BG ; bg-Cyrl-BG ; bg ;
+und-Cyrl-BY ; be-Cyrl-BY ; be ;
+und-Cyrl-KG ; ky-Cyrl-KG ; ky ;
+und-Cyrl-KZ ; ru-Cyrl-KZ ; ru-KZ ;
+und-Cyrl-MD ; uk-Cyrl-MD ; uk-MD ;
+und-Cyrl-ME ; ru-Cyrl-ME ; ru-ME ;
+und-Cyrl-MK ; mk-Cyrl-MK ; mk ;
+und-Cyrl-MN ; mn-Cyrl-MN ; mn ;
+und-Cyrl-RS ; sr-Cyrl-RS ; sr ;
+und-Cyrl-RU ; ru-Cyrl-RU ; ru ;
+und-Cyrl-TJ ; tg-Cyrl-TJ ; tg ;
+und-Cyrl-UA ; uk-Cyrl-UA ; uk ;
+und-Cyrl-UZ ; ru-Cyrl-UZ ; ru-UZ ;
+und-Cyrl-XK ; sr-Cyrl-XK ; sr-XK ;
+und-DE ; de-Latn-DE ; de ;
+und-DG ; en-Latn-DG ; en-DG ;
+und-DJ ; aa-Latn-DJ ; aa-DJ ;
+und-DK ; da-Latn-DK ; da ;
+und-DM ; en-Latn-DM ; en-DM ;
+und-DO ; es-Latn-DO ; es-DO ;
+und-DZ ; ar-Arab-DZ ; ar-DZ ;
+und-Deva ; hi-Deva-IN ; hi ;
+und-Deva-AQ ; hi-Deva-AQ ; hi-AQ ;
+und-Deva-IN ; hi-Deva-IN ; hi ;
+und-Deva-NP ; ne-Deva-NP ; ne ;
+und-Deva-PK ; btv-Deva-PK ; btv ;
+und-EA ; es-Latn-EA ; es-EA ;
+und-EC ; es-Latn-EC ; es-EC ;
+und-EE ; et-Latn-EE ; et ;
+und-EG ; ar-Arab-EG ; ar ;
+und-EH ; ar-Arab-EH ; ar-EH ;
+und-ER ; ti-Ethi-ER ; ti-ER ;
+und-ES ; es-Latn-ES ; es ;
+und-ET ; am-Ethi-ET ; am ;
+und-Egyp ; egy-Egyp-EG ; egy ;
+und-Ethi ; am-Ethi-ET ; am ;
+und-Ethi-AQ ; am-Ethi-AQ ; am-AQ ;
+und-Ethi-ER ; ti-Ethi-ER ; ti-ER ;
+und-Ethi-ET ; am-Ethi-ET ; am ;
+und-FI ; fi-Latn-FI ; fi ;
+und-FJ ; en-Latn-FJ ; en-FJ ;
+und-FK ; en-Latn-FK ; en-FK ;
+und-FM ; en-Latn-FM ; en-FM ;
+und-FO ; fo-Latn-FO ; fo ;
+und-FR ; fr-Latn-FR ; fr ;
+und-GA ; fr-Latn-GA ; fr-GA ;
+und-GB ; en-Latn-GB ; en-GB ;
+und-GD ; en-Latn-GD ; en-GD ;
+und-GE ; ka-Geor-GE ; ka ;
+und-GF ; fr-Latn-GF ; fr-GF ;
+und-GG ; en-Latn-GG ; en-GG ;
+und-GH ; ak-Latn-GH ; ak ;
+und-GI ; en-Latn-GI ; en-GI ;
+und-GL ; kl-Latn-GL ; kl ;
+und-GM ; en-Latn-GM ; en-GM ;
+und-GN ; fr-Latn-GN ; fr-GN ;
+und-GP ; fr-Latn-GP ; fr-GP ;
+und-GQ ; es-Latn-GQ ; es-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-GY ; en-Latn-GY ; en-GY ;
+und-Geor ; ka-Geor-GE ; ka ;
+und-Geor-AQ ; ka-Geor-AQ ; ka-AQ ;
+und-Geor-GE ; ka-Geor-GE ; ka ;
+und-Grek ; el-Grek-GR ; el ;
+und-Grek-AQ ; el-Grek-AQ ; el-AQ ;
+und-Grek-CY ; el-Grek-CY ; el-CY ;
+und-Grek-GR ; el-Grek-GR ; el ;
+und-Gujr ; gu-Gujr-IN ; gu ;
+und-Gujr-AQ ; gu-Gujr-AQ ; gu-AQ ;
+und-Gujr-IN ; gu-Gujr-IN ; gu ;
+und-Guru ; pa-Guru-IN ; pa ;
+und-Guru-AQ ; pa-Guru-AQ ; pa-AQ ;
+und-Guru-IN ; 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-Hans ; zh-Hans-CN ; zh ;
+und-Hans-AQ ; zh-Hans-AQ ; zh-AQ ;
+und-Hans-CN ; zh-Hans-CN ; zh ;
+und-Hans-HK ; zh-Hans-HK ; ;
+und-Hans-MO ; zh-Hans-MO ; ;
+und-Hans-SG ; zh-Hans-SG ; zh-SG ;
+und-Hans-TW ; zh-Hans-TW ; ;
+und-Hant ; zh-Hant-TW ; zh-Hant ; zh-TW
+und-Hant-AQ ; zh-Hant-AQ ; ;
+und-Hant-CN ; zh-Hant-CN ; ;
+und-Hant-HK ; zh-Hant-HK ; zh-HK ;
+und-Hant-MO ; zh-Hant-MO ; zh-MO ;
+und-Hant-SG ; zh-Hant-SG ; ;
+und-Hant-TW ; zh-Hant-TW ; zh-Hant ; zh-TW
+und-Hebr ; he-Hebr-IL ; he ;
+und-Hebr-AQ ; he-Hebr-AQ ; he-AQ ;
+und-Hebr-IL ; he-Hebr-IL ; he ;
+und-IC ; es-Latn-IC ; es-IC ;
+und-ID ; id-Latn-ID ; id ;
+und-IE ; en-Latn-IE ; en-IE ;
+und-IL ; he-Hebr-IL ; he ;
+und-IM ; en-Latn-IM ; en-IM ;
+und-IN ; hi-Deva-IN ; hi ;
+und-IO ; en-Latn-IO ; en-IO ;
+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-JE ; en-Latn-JE ; en-JE ;
+und-JM ; en-Latn-JM ; en-JM ;
+und-JO ; ar-Arab-JO ; ar-JO ;
+und-JP ; ja-Jpan-JP ; ja ;
+und-Jpan ; ja-Jpan-JP ; ja ;
+und-Jpan-AQ ; ja-Jpan-AQ ; ja-AQ ;
+und-Jpan-JP ; ja-Jpan-JP ; ja ;
+und-KE ; sw-Latn-KE ; sw-KE ;
+und-KG ; ky-Cyrl-KG ; ky ;
+und-KH ; km-Khmr-KH ; km ;
+und-KI ; en-Latn-KI ; en-KI ;
+und-KM ; ar-Arab-KM ; ar-KM ;
+und-KN ; en-Latn-KN ; en-KN ;
+und-KP ; ko-Kore-KP ; ko-KP ;
+und-KR ; ko-Kore-KR ; ko ;
+und-KW ; ar-Arab-KW ; ar-KW ;
+und-KY ; en-Latn-KY ; en-KY ;
+und-KZ ; ru-Cyrl-KZ ; ru-KZ ;
+und-Khmr ; km-Khmr-KH ; km ;
+und-Khmr-AQ ; km-Khmr-AQ ; km-AQ ;
+und-Khmr-KH ; km-Khmr-KH ; km ;
+und-Knda ; kn-Knda-IN ; kn ;
+und-Knda-AQ ; kn-Knda-AQ ; kn-AQ ;
+und-Knda-IN ; kn-Knda-IN ; kn ;
+und-Kore ; ko-Kore-KR ; ko ;
+und-Kore-AQ ; ko-Kore-AQ ; ko-AQ ;
+und-Kore-CN ; ko-Kore-CN ; ko-CN ;
+und-Kore-KP ; ko-Kore-KP ; ko-KP ;
+und-Kore-KR ; ko-Kore-KR ; ko ;
+und-LA ; lo-Laoo-LA ; lo ;
+und-LB ; ar-Arab-LB ; ar-LB ;
+und-LC ; en-Latn-LC ; en-LC ;
+und-LI ; de-Latn-LI ; de-LI ;
+und-LK ; si-Sinh-LK ; si ;
+und-LR ; en-Latn-LR ; en-LR ;
+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-Laoo-AQ ; lo-Laoo-AQ ; lo-AQ ;
+und-Laoo-LA ; lo-Laoo-LA ; lo ;
+und-Latn ; en-Latn-US ; en ;
+und-Latn-001 ; en-Latn-001 ; en-001 ;
+und-Latn-150 ; en-Latn-150 ; en-150 ;
+und-Latn-419 ; es-Latn-419 ; es-419 ;
+und-Latn-AD ; ca-Latn-AD ; ca-AD ;
+und-Latn-AE ; en-Latn-AE ; en-AE ;
+und-Latn-AG ; en-Latn-AG ; en-AG ;
+und-Latn-AI ; en-Latn-AI ; en-AI ;
+und-Latn-AL ; sq-Latn-AL ; sq ;
+und-Latn-AO ; pt-Latn-AO ; pt-AO ;
+und-Latn-AQ ; en-Latn-AQ ; en-AQ ;
+und-Latn-AR ; es-Latn-AR ; es-AR ;
+und-Latn-AS ; sm-Latn-AS ; sm-AS ;
+und-Latn-AT ; de-Latn-AT ; de-AT ;
+und-Latn-AU ; en-Latn-AU ; en-AU ;
+und-Latn-AW ; nl-Latn-AW ; nl-AW ;
+und-Latn-AX ; sv-Latn-AX ; sv-AX ;
+und-Latn-AZ ; az-Latn-AZ ; az ;
+und-Latn-BA ; bs-Latn-BA ; bs ;
+und-Latn-BB ; en-Latn-BB ; en-BB ;
+und-Latn-BE ; nl-Latn-BE ; nl-BE ;
+und-Latn-BF ; fr-Latn-BF ; fr-BF ;
+und-Latn-BI ; rn-Latn-BI ; rn ;
+und-Latn-BJ ; fr-Latn-BJ ; fr-BJ ;
+und-Latn-BL ; fr-Latn-BL ; fr-BL ;
+und-Latn-BM ; en-Latn-BM ; en-BM ;
+und-Latn-BN ; ms-Latn-BN ; ms-BN ;
+und-Latn-BO ; es-Latn-BO ; es-BO ;
+und-Latn-BQ ; pap-Latn-BQ ; pap-BQ ;
+und-Latn-BR ; pt-Latn-BR ; pt ;
+und-Latn-BS ; en-Latn-BS ; en-BS ;
+und-Latn-BW ; en-Latn-BW ; en-BW ;
+und-Latn-BZ ; en-Latn-BZ ; en-BZ ;
+und-Latn-CA ; en-Latn-CA ; en-CA ;
+und-Latn-CC ; en-Latn-CC ; en-CC ;
+und-Latn-CD ; sw-Latn-CD ; sw-CD ;
+und-Latn-CF ; fr-Latn-CF ; fr-CF ;
+und-Latn-CG ; fr-Latn-CG ; fr-CG ;
+und-Latn-CH ; de-Latn-CH ; de-CH ;
+und-Latn-CI ; fr-Latn-CI ; fr-CI ;
+und-Latn-CK ; en-Latn-CK ; en-CK ;
+und-Latn-CL ; es-Latn-CL ; es-CL ;
+und-Latn-CM ; fr-Latn-CM ; fr-CM ;
+und-Latn-CN ; za-Latn-CN ; za ;
+und-Latn-CO ; es-Latn-CO ; es-CO ;
+und-Latn-CR ; es-Latn-CR ; es-CR ;
+und-Latn-CU ; es-Latn-CU ; es-CU ;
+und-Latn-CV ; pt-Latn-CV ; pt-CV ;
+und-Latn-CW ; pap-Latn-CW ; pap ;
+und-Latn-CX ; en-Latn-CX ; en-CX ;
+und-Latn-CY ; tr-Latn-CY ; tr-CY ;
+und-Latn-CZ ; cs-Latn-CZ ; cs ;
+und-Latn-DE ; de-Latn-DE ; de ;
+und-Latn-DG ; en-Latn-DG ; en-DG ;
+und-Latn-DJ ; aa-Latn-DJ ; aa-DJ ;
+und-Latn-DK ; da-Latn-DK ; da ;
+und-Latn-DM ; en-Latn-DM ; en-DM ;
+und-Latn-DO ; es-Latn-DO ; es-DO ;
+und-Latn-DZ ; fr-Latn-DZ ; fr-DZ ;
+und-Latn-EA ; es-Latn-EA ; es-EA ;
+und-Latn-EC ; es-Latn-EC ; es-EC ;
+und-Latn-EE ; et-Latn-EE ; et ;
+und-Latn-ER ; en-Latn-ER ; en-ER ;
+und-Latn-ES ; es-Latn-ES ; es ;
+und-Latn-ET ; en-Latn-ET ; en-ET ;
+und-Latn-FI ; fi-Latn-FI ; fi ;
+und-Latn-FJ ; en-Latn-FJ ; en-FJ ;
+und-Latn-FK ; en-Latn-FK ; en-FK ;
+und-Latn-FM ; en-Latn-FM ; en-FM ;
+und-Latn-FO ; fo-Latn-FO ; fo ;
+und-Latn-FR ; fr-Latn-FR ; fr ;
+und-Latn-GA ; fr-Latn-GA ; fr-GA ;
+und-Latn-GB ; en-Latn-GB ; en-GB ;
+und-Latn-GD ; en-Latn-GD ; en-GD ;
+und-Latn-GF ; fr-Latn-GF ; fr-GF ;
+und-Latn-GG ; en-Latn-GG ; en-GG ;
+und-Latn-GH ; ak-Latn-GH ; ak ;
+und-Latn-GI ; en-Latn-GI ; en-GI ;
+und-Latn-GL ; kl-Latn-GL ; kl ;
+und-Latn-GM ; en-Latn-GM ; en-GM ;
+und-Latn-GN ; fr-Latn-GN ; fr-GN ;
+und-Latn-GP ; fr-Latn-GP ; fr-GP ;
+und-Latn-GQ ; es-Latn-GQ ; es-GQ ;
+und-Latn-GT ; es-Latn-GT ; es-GT ;
+und-Latn-GU ; en-Latn-GU ; en-GU ;
+und-Latn-GW ; pt-Latn-GW ; pt-GW ;
+und-Latn-GY ; en-Latn-GY ; en-GY ;
+und-Latn-HK ; en-Latn-HK ; en-HK ;
+und-Latn-HN ; es-Latn-HN ; es-HN ;
+und-Latn-HR ; hr-Latn-HR ; hr ;
+und-Latn-HT ; ht-Latn-HT ; ht ;
+und-Latn-HU ; hu-Latn-HU ; hu ;
+und-Latn-IC ; es-Latn-IC ; es-IC ;
+und-Latn-ID ; id-Latn-ID ; id ;
+und-Latn-IE ; en-Latn-IE ; en-IE ;
+und-Latn-IL ; en-Latn-IL ; en-IL ;
+und-Latn-IM ; en-Latn-IM ; en-IM ;
+und-Latn-IN ; en-Latn-IN ; en-IN ;
+und-Latn-IO ; en-Latn-IO ; en-IO ;
+und-Latn-IS ; is-Latn-IS ; is ;
+und-Latn-IT ; it-Latn-IT ; it ;
+und-Latn-JE ; en-Latn-JE ; en-JE ;
+und-Latn-JM ; en-Latn-JM ; en-JM ;
+und-Latn-KE ; sw-Latn-KE ; sw-KE ;
+und-Latn-KI ; en-Latn-KI ; en-KI ;
+und-Latn-KM ; fr-Latn-KM ; fr-KM ;
+und-Latn-KN ; en-Latn-KN ; en-KN ;
+und-Latn-KY ; en-Latn-KY ; en-KY ;
+und-Latn-LC ; en-Latn-LC ; en-LC ;
+und-Latn-LI ; de-Latn-LI ; de-LI ;
+und-Latn-LR ; en-Latn-LR ; en-LR ;
+und-Latn-LS ; st-Latn-LS ; st-LS ;
+und-Latn-LT ; lt-Latn-LT ; lt ;
+und-Latn-LU ; fr-Latn-LU ; fr-LU ;
+und-Latn-LV ; lv-Latn-LV ; lv ;
+und-Latn-MA ; fr-Latn-MA ; fr-MA ;
+und-Latn-MC ; fr-Latn-MC ; fr-MC ;
+und-Latn-MD ; ro-Latn-MD ; ro-MD ;
+und-Latn-ME ; sr-Latn-ME ; sr-ME ;
+und-Latn-MF ; fr-Latn-MF ; fr-MF ;
+und-Latn-MG ; mg-Latn-MG ; mg ;
+und-Latn-MH ; en-Latn-MH ; en-MH ;
+und-Latn-MK ; sq-Latn-MK ; sq-MK ;
+und-Latn-ML ; bm-Latn-ML ; bm ;
+und-Latn-MO ; pt-Latn-MO ; pt-MO ;
+und-Latn-MP ; en-Latn-MP ; en-MP ;
+und-Latn-MQ ; fr-Latn-MQ ; fr-MQ ;
+und-Latn-MR ; fr-Latn-MR ; fr-MR ;
+und-Latn-MS ; en-Latn-MS ; en-MS ;
+und-Latn-MT ; mt-Latn-MT ; mt ;
+und-Latn-MU ; mfe-Latn-MU ; mfe ;
+und-Latn-MV ; en-Latn-MV ; en-MV ;
+und-Latn-MW ; en-Latn-MW ; en-MW ;
+und-Latn-MX ; es-Latn-MX ; es-MX ;
+und-Latn-MY ; ms-Latn-MY ; ms ;
+und-Latn-MZ ; pt-Latn-MZ ; pt-MZ ;
+und-Latn-NA ; af-Latn-NA ; af-NA ;
+und-Latn-NC ; fr-Latn-NC ; fr-NC ;
+und-Latn-NE ; ha-Latn-NE ; ha-NE ;
+und-Latn-NF ; en-Latn-NF ; en-NF ;
+und-Latn-NG ; en-Latn-NG ; en-NG ;
+und-Latn-NI ; es-Latn-NI ; es-NI ;
+und-Latn-NL ; nl-Latn-NL ; nl ;
+und-Latn-NO ; nb-Latn-NO ; nb ;
+und-Latn-NR ; en-Latn-NR ; en-NR ;
+und-Latn-NU ; en-Latn-NU ; en-NU ;
+und-Latn-NZ ; en-Latn-NZ ; en-NZ ;
+und-Latn-PA ; es-Latn-PA ; es-PA ;
+und-Latn-PE ; es-Latn-PE ; es-PE ;
+und-Latn-PF ; fr-Latn-PF ; fr-PF ;
+und-Latn-PG ; tpi-Latn-PG ; tpi ;
+und-Latn-PH ; fil-Latn-PH ; fil ;
+und-Latn-PK ; en-Latn-PK ; en-PK ;
+und-Latn-PL ; pl-Latn-PL ; pl ;
+und-Latn-PM ; fr-Latn-PM ; fr-PM ;
+und-Latn-PN ; en-Latn-PN ; en-PN ;
+und-Latn-PR ; es-Latn-PR ; es-PR ;
+und-Latn-PT ; pt-Latn-PT ; pt-PT ;
+und-Latn-PW ; pau-Latn-PW ; pau ;
+und-Latn-PY ; gn-Latn-PY ; gn ;
+und-Latn-RE ; fr-Latn-RE ; fr-RE ;
+und-Latn-RO ; ro-Latn-RO ; ro ;
+und-Latn-RS ; sr-Latn-RS ; sr-Latn ;
+und-Latn-RW ; rw-Latn-RW ; rw ;
+und-Latn-SB ; en-Latn-SB ; en-SB ;
+und-Latn-SC ; fr-Latn-SC ; fr-SC ;
+und-Latn-SD ; en-Latn-SD ; en-SD ;
+und-Latn-SE ; sv-Latn-SE ; sv ;
+und-Latn-SG ; en-Latn-SG ; en-SG ;
+und-Latn-SH ; en-Latn-SH ; en-SH ;
+und-Latn-SI ; sl-Latn-SI ; sl ;
+und-Latn-SJ ; nb-Latn-SJ ; nb-SJ ;
+und-Latn-SK ; sk-Latn-SK ; sk ;
+und-Latn-SL ; kri-Latn-SL ; kri ;
+und-Latn-SM ; it-Latn-SM ; it-SM ;
+und-Latn-SN ; fr-Latn-SN ; fr-SN ;
+und-Latn-SO ; so-Latn-SO ; so ;
+und-Latn-SR ; nl-Latn-SR ; nl-SR ;
+und-Latn-SS ; en-Latn-SS ; en-SS ;
+und-Latn-ST ; pt-Latn-ST ; pt-ST ;
+und-Latn-SV ; es-Latn-SV ; es-SV ;
+und-Latn-SX ; en-Latn-SX ; en-SX ;
+und-Latn-SY ; fr-Latn-SY ; fr-SY ;
+und-Latn-SZ ; en-Latn-SZ ; en-SZ ;
+und-Latn-TC ; en-Latn-TC ; en-TC ;
+und-Latn-TD ; fr-Latn-TD ; fr-TD ;
+und-Latn-TG ; fr-Latn-TG ; fr-TG ;
+und-Latn-TK ; tkl-Latn-TK ; tkl ;
+und-Latn-TL ; pt-Latn-TL ; pt-TL ;
+und-Latn-TM ; tk-Latn-TM ; tk ;
+und-Latn-TN ; fr-Latn-TN ; fr-TN ;
+und-Latn-TO ; to-Latn-TO ; to ;
+und-Latn-TR ; tr-Latn-TR ; tr ;
+und-Latn-TT ; en-Latn-TT ; en-TT ;
+und-Latn-TV ; tvl-Latn-TV ; tvl ;
+und-Latn-TZ ; sw-Latn-TZ ; sw ;
+und-Latn-UG ; sw-Latn-UG ; sw-UG ;
+und-Latn-UM ; en-Latn-UM ; en-UM ;
+und-Latn-US ; en-Latn-US ; en ;
+und-Latn-UY ; es-Latn-UY ; es-UY ;
+und-Latn-UZ ; uz-Latn-UZ ; uz ;
+und-Latn-VA ; it-Latn-VA ; it-VA ;
+und-Latn-VC ; en-Latn-VC ; en-VC ;
+und-Latn-VE ; es-Latn-VE ; es-VE ;
+und-Latn-VG ; en-Latn-VG ; en-VG ;
+und-Latn-VI ; en-Latn-VI ; en-VI ;
+und-Latn-VN ; vi-Latn-VN ; vi ;
+und-Latn-VU ; bi-Latn-VU ; bi ;
+und-Latn-WF ; fr-Latn-WF ; fr-WF ;
+und-Latn-WS ; sm-Latn-WS ; sm ;
+und-Latn-XK ; sq-Latn-XK ; sq-XK ;
+und-Latn-YT ; fr-Latn-YT ; fr-YT ;
+und-Latn-ZA ; en-Latn-ZA ; en-ZA ;
+und-Latn-ZM ; bem-Latn-ZM ; bem ;
+und-Latn-ZW ; sn-Latn-ZW ; sn ;
+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-MF ; fr-Latn-MF ; fr-MF ;
+und-MG ; mg-Latn-MG ; mg ;
+und-MH ; en-Latn-MH ; en-MH ;
+und-MK ; mk-Cyrl-MK ; mk ;
+und-ML ; bm-Latn-ML ; bm ;
+und-MM ; my-Mymr-MM ; my ;
+und-MN ; mn-Cyrl-MN ; mn ;
+und-MO ; zh-Hant-MO ; zh-MO ;
+und-MP ; en-Latn-MP ; en-MP ;
+und-MQ ; fr-Latn-MQ ; fr-MQ ;
+und-MR ; ar-Arab-MR ; ar-MR ;
+und-MS ; en-Latn-MS ; en-MS ;
+und-MT ; mt-Latn-MT ; mt ;
+und-MU ; mfe-Latn-MU ; mfe ;
+und-MV ; dv-Thaa-MV ; dv ;
+und-MW ; en-Latn-MW ; en-MW ;
+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-Mlym-AQ ; ml-Mlym-AQ ; ml-AQ ;
+und-Mlym-IN ; ml-Mlym-IN ; ml ;
+und-Mymr ; my-Mymr-MM ; my ;
+und-Mymr-AQ ; my-Mymr-AQ ; my-AQ ;
+und-Mymr-MM ; my-Mymr-MM ; my ;
+und-NA ; af-Latn-NA ; af-NA ;
+und-NC ; fr-Latn-NC ; fr-NC ;
+und-NE ; ha-Latn-NE ; ha-NE ;
+und-NF ; en-Latn-NF ; en-NF ;
+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 ; en-Latn-NU ; en-NU ;
+und-NZ ; en-Latn-NZ ; en-NZ ;
+und-Nkoo ; man-Nkoo-GN ; man-Nkoo ; man-GN
+und-Nkoo-AQ ; man-Nkoo-AQ ; ;
+und-Nkoo-GN ; man-Nkoo-GN ; man-Nkoo ; man-GN
+und-OM ; ar-Arab-OM ; ar-OM ;
+und-Olck ; sat-Olck-IN ; sat ;
+und-Olck-AQ ; sat-Olck-AQ ; sat-AQ ;
+und-Olck-IN ; sat-Olck-IN ; sat ;
+und-Orya ; or-Orya-IN ; or ;
+und-Orya-AQ ; or-Orya-AQ ; or-AQ ;
+und-Orya-IN ; 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-PK ; ur-Arab-PK ; ur ;
+und-PL ; pl-Latn-PL ; pl ;
+und-PM ; fr-Latn-PM ; fr-PM ;
+und-PN ; en-Latn-PN ; en-PN ;
+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-SB ; en-Latn-SB ; en-SB ;
+und-SC ; fr-Latn-SC ; fr-SC ;
+und-SD ; ar-Arab-SD ; ar-SD ;
+und-SE ; sv-Latn-SE ; sv ;
+und-SG ; en-Latn-SG ; en-SG ;
+und-SH ; en-Latn-SH ; en-SH ;
+und-SI ; sl-Latn-SI ; sl ;
+und-SJ ; nb-Latn-SJ ; nb-SJ ;
+und-SK ; sk-Latn-SK ; sk ;
+und-SL ; kri-Latn-SL ; kri ;
+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-SS ; ar-Arab-SS ; ar-SS ;
+und-ST ; pt-Latn-ST ; pt-ST ;
+und-SV ; es-Latn-SV ; es-SV ;
+und-SX ; en-Latn-SX ; en-SX ;
+und-SY ; ar-Arab-SY ; ar-SY ;
+und-SZ ; en-Latn-SZ ; en-SZ ;
+und-Sinh ; si-Sinh-LK ; si ;
+und-Sinh-AQ ; si-Sinh-AQ ; si-AQ ;
+und-Sinh-LK ; si-Sinh-LK ; si ;
+und-Syrc ; syr-Syrc-IQ ; syr ;
+und-Syrc-AQ ; syr-Syrc-AQ ; syr-AQ ;
+und-Syrc-IQ ; syr-Syrc-IQ ; syr ;
+und-Syrc-SY ; syr-Syrc-SY ; syr-SY ;
+und-TC ; en-Latn-TC ; en-TC ;
+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 ; tkl-Latn-TK ; tkl ;
+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-TT ; en-Latn-TT ; en-TT ;
+und-TV ; tvl-Latn-TV ; tvl ;
+und-TW ; zh-Hant-TW ; zh-Hant ; zh-TW
+und-TZ ; sw-Latn-TZ ; sw ;
+und-Taml ; ta-Taml-IN ; ta ;
+und-Taml-AQ ; ta-Taml-AQ ; ta-AQ ;
+und-Taml-IN ; ta-Taml-IN ; ta ;
+und-Taml-LK ; ta-Taml-LK ; ta-LK ;
+und-Taml-MY ; ta-Taml-MY ; ta-MY ;
+und-Taml-SG ; ta-Taml-SG ; ta-SG ;
+und-Telu ; te-Telu-IN ; te ;
+und-Telu-AQ ; te-Telu-AQ ; te-AQ ;
+und-Telu-IN ; te-Telu-IN ; te ;
+und-Thai ; th-Thai-TH ; th ;
+und-Thai-AQ ; th-Thai-AQ ; th-AQ ;
+und-Thai-TH ; th-Thai-TH ; th ;
+und-UA ; uk-Cyrl-UA ; uk ;
+und-UG ; sw-Latn-UG ; sw-UG ;
+und-UM ; en-Latn-UM ; en-UM ;
+und-US ; en-Latn-US ; en ;
+und-UY ; es-Latn-UY ; es-UY ;
+und-UZ ; uz-Latn-UZ ; uz ;
+und-VA ; it-Latn-VA ; it-VA ;
+und-VC ; en-Latn-VC ; en-VC ;
+und-VE ; es-Latn-VE ; es-VE ;
+und-VG ; en-Latn-VG ; en-VG ;
+und-VI ; en-Latn-VI ; en-VI ;
+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-XK ; sq-Latn-XK ; sq-XK ;
+und-YE ; ar-Arab-YE ; ar-YE ;
+und-YT ; fr-Latn-YT ; fr-YT ;
+und-ZA ; en-Latn-ZA ; en-ZA ;
+und-ZM ; bem-Latn-ZM ; bem ;
+und-ZW ; sn-Latn-ZW ; sn ;
+ur ; ur-Arab-PK ; ur ;
+ur-AQ ; ur-Arab-AQ ; ur-AQ ;
+ur-Arab ; ur-Arab-PK ; ur ;
+ur-Egyp ; ur-Egyp-PK ; ur-Egyp ;
+ur-IN ; ur-Arab-IN ; ur-IN ;
+ur-PK ; ur-Arab-PK ; ur ;
+uz ; uz-Latn-UZ ; uz ;
+uz-AQ ; uz-Latn-AQ ; uz-AQ ;
+uz-Cyrl ; uz-Cyrl-UZ ; uz-Cyrl ;
+uz-Egyp ; uz-Egyp-UZ ; uz-Egyp ;
+uz-Latn ; uz-Latn-UZ ; uz ;
+uz-UZ ; uz-Latn-UZ ; uz ;
+vec ; vec-Latn-IT ; vec ;
+vec-AQ ; vec-Latn-AQ ; vec-AQ ;
+vec-Egyp ; vec-Egyp-IT ; vec-Egyp ;
+vec-IT ; vec-Latn-IT ; vec ;
+vec-Latn ; vec-Latn-IT ; vec ;
+vi ; vi-Latn-VN ; vi ;
+vi-AQ ; vi-Latn-AQ ; vi-AQ ;
+vi-Egyp ; vi-Egyp-VN ; vi-Egyp ;
+vi-Latn ; vi-Latn-VN ; vi ;
+vi-VN ; vi-Latn-VN ; vi ;
+vmw ; vmw-Latn-MZ ; vmw ;
+vmw-AQ ; vmw-Latn-AQ ; vmw-AQ ;
+vmw-Egyp ; vmw-Egyp-MZ ; vmw-Egyp ;
+vmw-Latn ; vmw-Latn-MZ ; vmw ;
+vmw-MZ ; vmw-Latn-MZ ; vmw ;
+wo ; wo-Latn-SN ; wo ;
+wo-AQ ; wo-Latn-AQ ; wo-AQ ;
+wo-Egyp ; wo-Egyp-SN ; wo-Egyp ;
+wo-Latn ; wo-Latn-SN ; wo ;
+wo-SN ; wo-Latn-SN ; wo ;
+xh ; xh-Latn-ZA ; xh ;
+xh-AQ ; xh-Latn-AQ ; xh-AQ ;
+xh-Egyp ; xh-Egyp-ZA ; xh-Egyp ;
+xh-Latn ; xh-Latn-ZA ; xh ;
+xh-ZA ; xh-Latn-ZA ; xh ;
+xnr ; xnr-Deva-IN ; xnr ;
+xnr-AQ ; xnr-Deva-AQ ; xnr-AQ ;
+xnr-Deva ; xnr-Deva-IN ; xnr ;
+xnr-Egyp ; xnr-Egyp-IN ; xnr-Egyp ;
+xnr-IN ; xnr-Deva-IN ; xnr ;
+yo ; yo-Latn-NG ; yo ;
+yo-AQ ; yo-Latn-AQ ; yo-AQ ;
+yo-BJ ; yo-Latn-BJ ; yo-BJ ;
+yo-Egyp ; yo-Egyp-NG ; yo-Egyp ;
+yo-Latn ; yo-Latn-NG ; yo ;
+yo-NG ; yo-Latn-NG ; yo ;
+yrl ; yrl-Latn-BR ; yrl ;
+yrl-AQ ; yrl-Latn-AQ ; yrl-AQ ;
+yrl-BR ; yrl-Latn-BR ; yrl ;
+yrl-CO ; yrl-Latn-CO ; yrl-CO ;
+yrl-Egyp ; yrl-Egyp-BR ; yrl-Egyp ;
+yrl-Latn ; yrl-Latn-BR ; yrl ;
+yrl-VE ; yrl-Latn-VE ; yrl-VE ;
+yue ; yue-Hant-HK ; yue ;
+yue-AQ ; yue-Hant-AQ ; yue-AQ ;
+yue-CN ; yue-Hans-CN ; yue-Hans ; yue-CN
+yue-Egyp ; yue-Egyp-HK ; yue-Egyp ;
+yue-HK ; yue-Hant-HK ; yue ;
+yue-Hans ; yue-Hans-CN ; yue-Hans ; yue-CN
+yue-Hant ; yue-Hant-HK ; yue ;
+za ; za-Latn-CN ; za ;
+za-AQ ; za-Latn-AQ ; za-AQ ;
+za-CN ; za-Latn-CN ; za ;
+za-Egyp ; za-Egyp-CN ; za-Egyp ;
+za-Latn ; za-Latn-CN ; za ;
+zh ; zh-Hans-CN ; zh ;
+zh-AQ ; zh-Hans-AQ ; zh-AQ ;
+zh-CN ; zh-Hans-CN ; zh ;
+zh-Egyp ; zh-Egyp-CN ; zh-Egyp ;
+zh-HK ; zh-Hant-HK ; zh-HK ;
+zh-Hans ; zh-Hans-CN ; zh ;
+zh-Hant ; zh-Hant-TW ; zh-Hant ; zh-TW
+zh-MO ; zh-Hant-MO ; zh-MO ;
+zh-SG ; zh-Hans-SG ; zh-SG ;
+zh-TW ; zh-Hant-TW ; zh-Hant ; zh-TW
+zu ; zu-Latn-ZA ; zu ;
+zu-AQ ; zu-Latn-AQ ; zu-AQ ;
+zu-Egyp ; zu-Egyp-ZA ; zu-Egyp ;
+zu-Latn ; zu-Latn-ZA ; zu ;
+zu-ZA ; zu-Latn-ZA ; zu ;
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/localeCanonicalization.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/localeIdentifiers/localeCanonicalization.txt
index a7a8d890617..bce4a8a4ff7 100644
--- a/Build/source/libs/icu/icu-src/source/test/testdata/localeCanonicalization.txt
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/localeIdentifiers/localeCanonicalization.txt
@@ -1,8 +1,7 @@
-# File copied from cldr common/testData/localeIdentifiers/localeCanonicalization.txt
# Test data for locale identifier canonicalization
-# Copyright © 1991-2020 Unicode, Inc.
+# Copyright © 1991-2023 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# SPDX-License-Identifier: Unicode-DFS-2016
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
#
# Format:
@@ -49,6 +48,9 @@ aar ; aa
abk ; ab
adp ; dz
afr ; af
+agp ; apf
+ais ; ami
+ajt ; aeb
aju ; jrb
aka ; ak
alb ; sq
@@ -71,18 +73,25 @@ azj ; az
bak ; ba
bam ; bm
baq ; eu
+baz ; nvo
bcc ; bal
bcl ; bik
bel ; be
ben ; bn
bgm ; bcg
bh ; bho
+bhk ; fbl
+bic ; bir
bih ; bho
bis ; bi
bjd ; drl
+bjq ; bzc
+bkb ; ebk
+blg ; iba
bod ; bo
bos ; bs
bre ; br
+btb ; beb
bul ; bg
bur ; my
bxk ; luy
@@ -110,7 +119,9 @@ cre ; cr
cwd ; cr
cym ; cy
cze ; cs
+daf ; dnj
dan ; da
+dap ; njz
deu ; de
dgo ; doi
dhd ; mwr
@@ -118,12 +129,19 @@ dik ; din
diq ; zza
dit ; dif
div ; dv
+djl ; dze
+dkl ; aqd
drh ; mn
+drr ; kzk
drw ; fa_AF
+dud ; uth
+duj ; dwu
dut ; nl
+dwl ; dbt
dzo ; dz
ekk ; et
ell ; el
+elp ; amq
emk ; man
eng ; en
epo ; eo
@@ -143,14 +161,19 @@ fuc ; ff
ful ; ff
gav ; dev
gaz ; om
+gbc ; wny
gbo ; grb
geo ; ka
ger ; de
gfx ; vaj
ggn ; gvr
+ggo ; esg
+ggr ; gtu
+gio ; aou
gla ; gd
gle ; ga
glg ; gl
+gli ; kzk
glv ; gv
gno ; gon
gre ; el
@@ -182,6 +205,7 @@ iii ; ii
ike ; iu
iku ; iu
ile ; ie
+ill ; ilm
ilw ; gal
in ; id
ina ; ia
@@ -190,6 +214,8 @@ ipk ; ik
isl ; is
ita ; it
iw ; he
+izi ; eza
+jar ; jgk
jav ; jv
jeg ; oyb
ji ; yi
@@ -201,7 +227,9 @@ kas ; ks
kat ; ka
kau ; kr
kaz ; kk
+kdv ; zkd
kgc ; tdf
+kgd ; ncq
kgh ; kml
khk ; mn
khm ; km
@@ -216,6 +244,7 @@ koj ; kwv
kom ; kv
kon ; kg
kor ; ko
+kpp ; jkm
kpv ; kv
krm ; bmf
ktr ; dtp
@@ -224,12 +253,16 @@ kur ; ku
kvs ; gdj
kwq ; yam
kxe ; tvd
+kxl ; kru
+kzh ; dgl
kzj ; dtp
kzt ; dtp
+lak ; ksp
lao ; lo
lat ; la
lav ; lv
lbk ; bnc
+leg ; enl
lii ; raq
lim ; li
lin ; ln
@@ -247,18 +280,22 @@ mao ; mi
mar ; mr
may ; ms
meg ; cir
+mgx ; jbk
mhr ; chm
mkd ; mk
mlg ; mg
mlt ; mt
mnk ; man
+mnt ; wnn
mo ; ro
+mof ; xnt
mol ; ro
mon ; mn
mri ; mi
msa ; ms
mst ; mry
mup ; raj
+mwd ; dmw
mwj ; vaj
mya ; my
myd ; aog
@@ -266,22 +303,27 @@ myt ; mry
nad ; xny
nau ; na
nav ; nv
+nbf ; nru
nbl ; nr
+nbx ; ekc
ncp ; kdz
nde ; nd
ndo ; ng
nep ; ne
nld ; nl
+nln ; azd
+nlr ; nrk
nno ; nn
nns ; nbr
nnx ; ngv
-no ; no
no_bokmal ; nb
no_nynorsk ; nn
nob ; nb
+noo ; dtd
nor ; no
npi ; ne
nts ; pij
+nxu ; bpp
nya ; ny
oci ; oc
ojg ; oj
@@ -292,6 +334,7 @@ ory ; or
oss ; os
oun ; vaj
pan ; pa
+pat ; kxr
pbu ; ps
pcr ; adx
per ; fa
@@ -311,6 +354,7 @@ pus ; ps
puz ; pub
que ; qu
quz ; qu
+rmr ; emx
rmy ; rom
roh ; rm
ron ; ro
@@ -319,13 +363,16 @@ run ; rn
rus ; ru
sag ; sg
san ; sa
+sap ; aqt
sca ; hle
scc ; sr
scr ; hr
+sgl ; isk
sgn_BR ; bzs
sgn_CO ; csn
sgn_DE ; gsg
sgn_DK ; dsl
+sgn_ES ; ssp
sgn_FR ; fsl
sgn_GB ; bfi
sgn_GR ; gss
@@ -346,9 +393,11 @@ skk ; oyb
slk ; sk
slo ; sk
slv ; sl
+smd ; kmb
sme ; se
smo ; sm
sna ; sn
+snb ; iba
snd ; sd
som ; so
sot ; st
@@ -359,6 +408,8 @@ src ; sc
srd ; sc
srp ; sr
ssw ; ss
+sul ; sgd
+sum ; ulw
sun ; su
swa ; sw
swc ; sw_CD
@@ -369,12 +420,15 @@ tam ; ta
tat ; tt
tdu ; dtp
tel ; te
+tgg ; bjp
tgk ; tg
tgl ; fil
tha ; th
thc ; tpo
+thw ; ola
thx ; oyb
tib ; bo
+tid ; itd
tie ; ras
tir ; ti
tkk ; twm
@@ -736,12 +790,14 @@ und_arevela ; und
und_arevmda ; und
und_bokmal ; und
und_hakka ; und
+und_hepburn_heploc ; und_alalc97
und_heploc ; und_alalc97
und_lojban ; und
und_nynorsk ; und
und_polytoni ; und_polyton
und_saaho ; und
und_xiang ; und
+unp ; wro
uok ; ema
urd ; ur
uzb ; uz
@@ -750,6 +806,9 @@ ven ; ve
vie ; vi
vol ; vo
wel ; cy
+wgw ; wgb
+wit ; nol
+wiw ; nwo
wln ; wa
wol ; wo
xba ; cax
@@ -757,11 +816,14 @@ xho ; xh
xia ; acn
xkh ; waw
xpe ; kpe
+xrq ; dmw
xsj ; suj
xsl ; den
ybd ; rki
ydd ; yi
+yen ; ynq
yid ; yi
+yiy ; yrm
yma ; lrr
ymt ; mtm
yor ; yo
@@ -773,6 +835,7 @@ zh_hakka ; hak
zh_xiang ; hsn
zha ; za
zho ; zh
+zir ; scv
zsm ; ms
zul ; zu
zyb ; za
@@ -808,6 +871,9 @@ eng_arevela_arevmda ; en
eng_lojban ; en
hye_arevela ; hy
hye_arevela_arevmda ; hyw
+nor_bokmal ; nb
+nor_bokmal_nynorsk ; nb
+nor_nynorsk ; nn
sgn_076 ; bzs
sgn_170 ; csn
sgn_208 ; dsl
@@ -826,6 +892,7 @@ sgn_558 ; ncs
sgn_578 ; nsi
sgn_620 ; psr
sgn_710 ; sfs
+sgn_724 ; ssp
sgn_752 ; swl
sgn_826 ; bfi
sgn_840 ; ase
@@ -1154,6 +1221,7 @@ aaa_Adlm_AC_arevela_fonipa ; aaa_Adlm_AC_fonipa
aaa_Adlm_AC_arevmda_fonipa ; aaa_Adlm_AC_fonipa
aaa_Adlm_AC_bokmal_fonipa ; aaa_Adlm_AC_fonipa
aaa_Adlm_AC_fonipa_hakka ; aaa_Adlm_AC_fonipa
+aaa_Adlm_AC_fonipa_hepburn_heploc ; aaa_Adlm_AC_alalc97_fonipa
aaa_Adlm_AC_fonipa_heploc ; aaa_Adlm_AC_alalc97_fonipa
aaa_Adlm_AC_fonipa_lojban ; aaa_Adlm_AC_fonipa
aaa_Adlm_AC_fonipa_nynorsk ; aaa_Adlm_AC_fonipa
@@ -1194,6 +1262,9 @@ aar_Adlm_AC_fonipa_saaho ; ssy_Adlm_AC_fonipa
abk_Adlm_AC_fonipa ; ab_Adlm_AC_fonipa
adp_Adlm_AC_fonipa ; dz_Adlm_AC_fonipa
afr_Adlm_AC_fonipa ; af_Adlm_AC_fonipa
+agp_Adlm_AC_fonipa ; apf_Adlm_AC_fonipa
+ais_Adlm_AC_fonipa ; ami_Adlm_AC_fonipa
+ajt_Adlm_AC_fonipa ; aeb_Adlm_AC_fonipa
aju_Adlm_AC_fonipa ; jrb_Adlm_AC_fonipa
aka_Adlm_AC_fonipa ; ak_Adlm_AC_fonipa
alb_Adlm_AC_fonipa ; sq_Adlm_AC_fonipa
@@ -1220,18 +1291,25 @@ azj_Adlm_AC_fonipa ; az_Adlm_AC_fonipa
bak_Adlm_AC_fonipa ; ba_Adlm_AC_fonipa
bam_Adlm_AC_fonipa ; bm_Adlm_AC_fonipa
baq_Adlm_AC_fonipa ; eu_Adlm_AC_fonipa
+baz_Adlm_AC_fonipa ; nvo_Adlm_AC_fonipa
bcc_Adlm_AC_fonipa ; bal_Adlm_AC_fonipa
bcl_Adlm_AC_fonipa ; bik_Adlm_AC_fonipa
bel_Adlm_AC_fonipa ; be_Adlm_AC_fonipa
ben_Adlm_AC_fonipa ; bn_Adlm_AC_fonipa
bgm_Adlm_AC_fonipa ; bcg_Adlm_AC_fonipa
bh_Adlm_AC_fonipa ; bho_Adlm_AC_fonipa
+bhk_Adlm_AC_fonipa ; fbl_Adlm_AC_fonipa
+bic_Adlm_AC_fonipa ; bir_Adlm_AC_fonipa
bih_Adlm_AC_fonipa ; bho_Adlm_AC_fonipa
bis_Adlm_AC_fonipa ; bi_Adlm_AC_fonipa
bjd_Adlm_AC_fonipa ; drl_Adlm_AC_fonipa
+bjq_Adlm_AC_fonipa ; bzc_Adlm_AC_fonipa
+bkb_Adlm_AC_fonipa ; ebk_Adlm_AC_fonipa
+blg_Adlm_AC_fonipa ; iba_Adlm_AC_fonipa
bod_Adlm_AC_fonipa ; bo_Adlm_AC_fonipa
bos_Adlm_AC_fonipa ; bs_Adlm_AC_fonipa
bre_Adlm_AC_fonipa ; br_Adlm_AC_fonipa
+btb_Adlm_AC_fonipa ; beb_Adlm_AC_fonipa
bul_Adlm_AC_fonipa ; bg_Adlm_AC_fonipa
bur_Adlm_AC_fonipa ; my_Adlm_AC_fonipa
bxk_Adlm_AC_fonipa ; luy_Adlm_AC_fonipa
@@ -1269,7 +1347,9 @@ cre_Adlm_AC_fonipa ; cr_Adlm_AC_fonipa
cwd_Adlm_AC_fonipa ; cr_Adlm_AC_fonipa
cym_Adlm_AC_fonipa ; cy_Adlm_AC_fonipa
cze_Adlm_AC_fonipa ; cs_Adlm_AC_fonipa
+daf_Adlm_AC_fonipa ; dnj_Adlm_AC_fonipa
dan_Adlm_AC_fonipa ; da_Adlm_AC_fonipa
+dap_Adlm_AC_fonipa ; njz_Adlm_AC_fonipa
deu_Adlm_AC_fonipa ; de_Adlm_AC_fonipa
dgo_Adlm_AC_fonipa ; doi_Adlm_AC_fonipa
dhd_Adlm_AC_fonipa ; mwr_Adlm_AC_fonipa
@@ -1277,12 +1357,19 @@ dik_Adlm_AC_fonipa ; din_Adlm_AC_fonipa
diq_Adlm_AC_fonipa ; zza_Adlm_AC_fonipa
dit_Adlm_AC_fonipa ; dif_Adlm_AC_fonipa
div_Adlm_AC_fonipa ; dv_Adlm_AC_fonipa
+djl_Adlm_AC_fonipa ; dze_Adlm_AC_fonipa
+dkl_Adlm_AC_fonipa ; aqd_Adlm_AC_fonipa
drh_Adlm_AC_fonipa ; mn_Adlm_AC_fonipa
+drr_Adlm_AC_fonipa ; kzk_Adlm_AC_fonipa
drw_Adlm_AC_fonipa ; fa_Adlm_AC_fonipa
+dud_Adlm_AC_fonipa ; uth_Adlm_AC_fonipa
+duj_Adlm_AC_fonipa ; dwu_Adlm_AC_fonipa
dut_Adlm_AC_fonipa ; nl_Adlm_AC_fonipa
+dwl_Adlm_AC_fonipa ; dbt_Adlm_AC_fonipa
dzo_Adlm_AC_fonipa ; dz_Adlm_AC_fonipa
ekk_Adlm_AC_fonipa ; et_Adlm_AC_fonipa
ell_Adlm_AC_fonipa ; el_Adlm_AC_fonipa
+elp_Adlm_AC_fonipa ; amq_Adlm_AC_fonipa
emk_Adlm_AC_fonipa ; man_Adlm_AC_fonipa
en_Adlm_840_aaland_fonipa ; en_Adlm_US_fonipa
en_Adlm_840_fonipa_heploc ; en_Adlm_US_alalc97_fonipa
@@ -1322,14 +1409,19 @@ fuc_Adlm_AC_fonipa ; ff_Adlm_AC_fonipa
ful_Adlm_AC_fonipa ; ff_Adlm_AC_fonipa
gav_Adlm_AC_fonipa ; dev_Adlm_AC_fonipa
gaz_Adlm_AC_fonipa ; om_Adlm_AC_fonipa
+gbc_Adlm_AC_fonipa ; wny_Adlm_AC_fonipa
gbo_Adlm_AC_fonipa ; grb_Adlm_AC_fonipa
geo_Adlm_AC_fonipa ; ka_Adlm_AC_fonipa
ger_Adlm_AC_fonipa ; de_Adlm_AC_fonipa
gfx_Adlm_AC_fonipa ; vaj_Adlm_AC_fonipa
ggn_Adlm_AC_fonipa ; gvr_Adlm_AC_fonipa
+ggo_Adlm_AC_fonipa ; esg_Adlm_AC_fonipa
+ggr_Adlm_AC_fonipa ; gtu_Adlm_AC_fonipa
+gio_Adlm_AC_fonipa ; aou_Adlm_AC_fonipa
gla_Adlm_AC_fonipa ; gd_Adlm_AC_fonipa
gle_Adlm_AC_fonipa ; ga_Adlm_AC_fonipa
glg_Adlm_AC_fonipa ; gl_Adlm_AC_fonipa
+gli_Adlm_AC_fonipa ; kzk_Adlm_AC_fonipa
glv_Adlm_AC_fonipa ; gv_Adlm_AC_fonipa
gno_Adlm_AC_fonipa ; gon_Adlm_AC_fonipa
gre_Adlm_AC_fonipa ; el_Adlm_AC_fonipa
@@ -1367,6 +1459,7 @@ iii_Adlm_AC_fonipa ; ii_Adlm_AC_fonipa
ike_Adlm_AC_fonipa ; iu_Adlm_AC_fonipa
iku_Adlm_AC_fonipa ; iu_Adlm_AC_fonipa
ile_Adlm_AC_fonipa ; ie_Adlm_AC_fonipa
+ill_Adlm_AC_fonipa ; ilm_Adlm_AC_fonipa
ilw_Adlm_AC_fonipa ; gal_Adlm_AC_fonipa
in_Adlm_AC_fonipa ; id_Adlm_AC_fonipa
ina_Adlm_AC_fonipa ; ia_Adlm_AC_fonipa
@@ -1375,6 +1468,8 @@ ipk_Adlm_AC_fonipa ; ik_Adlm_AC_fonipa
isl_Adlm_AC_fonipa ; is_Adlm_AC_fonipa
ita_Adlm_AC_fonipa ; it_Adlm_AC_fonipa
iw_Adlm_AC_fonipa ; he_Adlm_AC_fonipa
+izi_Adlm_AC_fonipa ; eza_Adlm_AC_fonipa
+jar_Adlm_AC_fonipa ; jgk_Adlm_AC_fonipa
jav_Adlm_AC_fonipa ; jv_Adlm_AC_fonipa
jeg_Adlm_AC_fonipa ; oyb_Adlm_AC_fonipa
ji_Adlm_AC_fonipa ; yi_Adlm_AC_fonipa
@@ -1386,7 +1481,9 @@ kas_Adlm_AC_fonipa ; ks_Adlm_AC_fonipa
kat_Adlm_AC_fonipa ; ka_Adlm_AC_fonipa
kau_Adlm_AC_fonipa ; kr_Adlm_AC_fonipa
kaz_Adlm_AC_fonipa ; kk_Adlm_AC_fonipa
+kdv_Adlm_AC_fonipa ; zkd_Adlm_AC_fonipa
kgc_Adlm_AC_fonipa ; tdf_Adlm_AC_fonipa
+kgd_Adlm_AC_fonipa ; ncq_Adlm_AC_fonipa
kgh_Adlm_AC_fonipa ; kml_Adlm_AC_fonipa
khk_Adlm_AC_fonipa ; mn_Adlm_AC_fonipa
khm_Adlm_AC_fonipa ; km_Adlm_AC_fonipa
@@ -1401,6 +1498,7 @@ koj_Adlm_AC_fonipa ; kwv_Adlm_AC_fonipa
kom_Adlm_AC_fonipa ; kv_Adlm_AC_fonipa
kon_Adlm_AC_fonipa ; kg_Adlm_AC_fonipa
kor_Adlm_AC_fonipa ; ko_Adlm_AC_fonipa
+kpp_Adlm_AC_fonipa ; jkm_Adlm_AC_fonipa
kpv_Adlm_AC_fonipa ; kv_Adlm_AC_fonipa
krm_Adlm_AC_fonipa ; bmf_Adlm_AC_fonipa
ktr_Adlm_AC_fonipa ; dtp_Adlm_AC_fonipa
@@ -1409,12 +1507,16 @@ kur_Adlm_AC_fonipa ; ku_Adlm_AC_fonipa
kvs_Adlm_AC_fonipa ; gdj_Adlm_AC_fonipa
kwq_Adlm_AC_fonipa ; yam_Adlm_AC_fonipa
kxe_Adlm_AC_fonipa ; tvd_Adlm_AC_fonipa
+kxl_Adlm_AC_fonipa ; kru_Adlm_AC_fonipa
+kzh_Adlm_AC_fonipa ; dgl_Adlm_AC_fonipa
kzj_Adlm_AC_fonipa ; dtp_Adlm_AC_fonipa
kzt_Adlm_AC_fonipa ; dtp_Adlm_AC_fonipa
+lak_Adlm_AC_fonipa ; ksp_Adlm_AC_fonipa
lao_Adlm_AC_fonipa ; lo_Adlm_AC_fonipa
lat_Adlm_AC_fonipa ; la_Adlm_AC_fonipa
lav_Adlm_AC_fonipa ; lv_Adlm_AC_fonipa
lbk_Adlm_AC_fonipa ; bnc_Adlm_AC_fonipa
+leg_Adlm_AC_fonipa ; enl_Adlm_AC_fonipa
lii_Adlm_AC_fonipa ; raq_Adlm_AC_fonipa
lim_Adlm_AC_fonipa ; li_Adlm_AC_fonipa
lin_Adlm_AC_fonipa ; ln_Adlm_AC_fonipa
@@ -1432,18 +1534,22 @@ mao_Adlm_AC_fonipa ; mi_Adlm_AC_fonipa
mar_Adlm_AC_fonipa ; mr_Adlm_AC_fonipa
may_Adlm_AC_fonipa ; ms_Adlm_AC_fonipa
meg_Adlm_AC_fonipa ; cir_Adlm_AC_fonipa
+mgx_Adlm_AC_fonipa ; jbk_Adlm_AC_fonipa
mhr_Adlm_AC_fonipa ; chm_Adlm_AC_fonipa
mkd_Adlm_AC_fonipa ; mk_Adlm_AC_fonipa
mlg_Adlm_AC_fonipa ; mg_Adlm_AC_fonipa
mlt_Adlm_AC_fonipa ; mt_Adlm_AC_fonipa
mnk_Adlm_AC_fonipa ; man_Adlm_AC_fonipa
+mnt_Adlm_AC_fonipa ; wnn_Adlm_AC_fonipa
mo_Adlm_AC_fonipa ; ro_Adlm_AC_fonipa
+mof_Adlm_AC_fonipa ; xnt_Adlm_AC_fonipa
mol_Adlm_AC_fonipa ; ro_Adlm_AC_fonipa
mon_Adlm_AC_fonipa ; mn_Adlm_AC_fonipa
mri_Adlm_AC_fonipa ; mi_Adlm_AC_fonipa
msa_Adlm_AC_fonipa ; ms_Adlm_AC_fonipa
mst_Adlm_AC_fonipa ; mry_Adlm_AC_fonipa
mup_Adlm_AC_fonipa ; raj_Adlm_AC_fonipa
+mwd_Adlm_AC_fonipa ; dmw_Adlm_AC_fonipa
mwj_Adlm_AC_fonipa ; vaj_Adlm_AC_fonipa
mya_Adlm_AC_fonipa ; my_Adlm_AC_fonipa
myd_Adlm_AC_fonipa ; aog_Adlm_AC_fonipa
@@ -1451,23 +1557,31 @@ myt_Adlm_AC_fonipa ; mry_Adlm_AC_fonipa
nad_Adlm_AC_fonipa ; xny_Adlm_AC_fonipa
nau_Adlm_AC_fonipa ; na_Adlm_AC_fonipa
nav_Adlm_AC_fonipa ; nv_Adlm_AC_fonipa
+nbf_Adlm_AC_fonipa ; nru_Adlm_AC_fonipa
nbl_Adlm_AC_fonipa ; nr_Adlm_AC_fonipa
+nbx_Adlm_AC_fonipa ; ekc_Adlm_AC_fonipa
ncp_Adlm_AC_fonipa ; kdz_Adlm_AC_fonipa
nde_Adlm_AC_fonipa ; nd_Adlm_AC_fonipa
ndo_Adlm_AC_fonipa ; ng_Adlm_AC_fonipa
nep_Adlm_AC_fonipa ; ne_Adlm_AC_fonipa
nld_Adlm_AC_fonipa ; nl_Adlm_AC_fonipa
+nln_Adlm_AC_fonipa ; azd_Adlm_AC_fonipa
+nlr_Adlm_AC_fonipa ; nrk_Adlm_AC_fonipa
nno_Adlm_AC_fonipa ; nn_Adlm_AC_fonipa
nns_Adlm_AC_fonipa ; nbr_Adlm_AC_fonipa
nnx_Adlm_AC_fonipa ; ngv_Adlm_AC_fonipa
no_Adlm_AC_bokmal_fonipa ; nb_Adlm_AC_fonipa
no_Adlm_AC_bokmal_fonipa_nynorsk ; nb_Adlm_AC_fonipa
-no_Adlm_AC_fonipa ; no_Adlm_AC_fonipa
no_Adlm_AC_fonipa_nynorsk ; nn_Adlm_AC_fonipa
nob_Adlm_AC_fonipa ; nb_Adlm_AC_fonipa
+noo_Adlm_AC_fonipa ; dtd_Adlm_AC_fonipa
+nor_Adlm_AC_bokmal_fonipa ; nb_Adlm_AC_fonipa
+nor_Adlm_AC_bokmal_fonipa_nynorsk ; nb_Adlm_AC_fonipa
nor_Adlm_AC_fonipa ; no_Adlm_AC_fonipa
+nor_Adlm_AC_fonipa_nynorsk ; nn_Adlm_AC_fonipa
npi_Adlm_AC_fonipa ; ne_Adlm_AC_fonipa
nts_Adlm_AC_fonipa ; pij_Adlm_AC_fonipa
+nxu_Adlm_AC_fonipa ; bpp_Adlm_AC_fonipa
nya_Adlm_AC_fonipa ; ny_Adlm_AC_fonipa
oci_Adlm_AC_fonipa ; oc_Adlm_AC_fonipa
ojg_Adlm_AC_fonipa ; oj_Adlm_AC_fonipa
@@ -1478,6 +1592,7 @@ ory_Adlm_AC_fonipa ; or_Adlm_AC_fonipa
oss_Adlm_AC_fonipa ; os_Adlm_AC_fonipa
oun_Adlm_AC_fonipa ; vaj_Adlm_AC_fonipa
pan_Adlm_AC_fonipa ; pa_Adlm_AC_fonipa
+pat_Adlm_AC_fonipa ; kxr_Adlm_AC_fonipa
pbu_Adlm_AC_fonipa ; ps_Adlm_AC_fonipa
pcr_Adlm_AC_fonipa ; adx_Adlm_AC_fonipa
per_Adlm_AC_fonipa ; fa_Adlm_AC_fonipa
@@ -1497,6 +1612,7 @@ pus_Adlm_AC_fonipa ; ps_Adlm_AC_fonipa
puz_Adlm_AC_fonipa ; pub_Adlm_AC_fonipa
que_Adlm_AC_fonipa ; qu_Adlm_AC_fonipa
quz_Adlm_AC_fonipa ; qu_Adlm_AC_fonipa
+rmr_Adlm_AC_fonipa ; emx_Adlm_AC_fonipa
rmy_Adlm_AC_fonipa ; rom_Adlm_AC_fonipa
roh_Adlm_AC_fonipa ; rm_Adlm_AC_fonipa
ron_Adlm_AC_fonipa ; ro_Adlm_AC_fonipa
@@ -1505,9 +1621,11 @@ run_Adlm_AC_fonipa ; rn_Adlm_AC_fonipa
rus_Adlm_AC_fonipa ; ru_Adlm_AC_fonipa
sag_Adlm_AC_fonipa ; sg_Adlm_AC_fonipa
san_Adlm_AC_fonipa ; sa_Adlm_AC_fonipa
+sap_Adlm_AC_fonipa ; aqt_Adlm_AC_fonipa
sca_Adlm_AC_fonipa ; hle_Adlm_AC_fonipa
scc_Adlm_AC_fonipa ; sr_Adlm_AC_fonipa
scr_Adlm_AC_fonipa ; hr_Adlm_AC_fonipa
+sgl_Adlm_AC_fonipa ; isk_Adlm_AC_fonipa
sgn_Adlm_076_fonipa ; bzs_Adlm_fonipa
sgn_Adlm_170_fonipa ; csn_Adlm_fonipa
sgn_Adlm_208_fonipa ; dsl_Adlm_fonipa
@@ -1526,6 +1644,7 @@ sgn_Adlm_558_fonipa ; ncs_Adlm_fonipa
sgn_Adlm_578_fonipa ; nsi_Adlm_fonipa
sgn_Adlm_620_fonipa ; psr_Adlm_fonipa
sgn_Adlm_710_fonipa ; sfs_Adlm_fonipa
+sgn_Adlm_724_fonipa ; ssp_Adlm_fonipa
sgn_Adlm_752_fonipa ; swl_Adlm_fonipa
sgn_Adlm_826_fonipa ; bfi_Adlm_fonipa
sgn_Adlm_840_fonipa ; ase_Adlm_fonipa
@@ -1534,6 +1653,7 @@ sgn_Adlm_CO_fonipa ; csn_Adlm_fonipa
sgn_Adlm_DD_fonipa ; gsg_Adlm_fonipa
sgn_Adlm_DE_fonipa ; gsg_Adlm_fonipa
sgn_Adlm_DK_fonipa ; dsl_Adlm_fonipa
+sgn_Adlm_ES_fonipa ; ssp_Adlm_fonipa
sgn_Adlm_FR_fonipa ; fsl_Adlm_fonipa
sgn_Adlm_FX_fonipa ; fsl_Adlm_fonipa
sgn_Adlm_GB_fonipa ; bfi_Adlm_fonipa
@@ -1556,9 +1676,11 @@ skk_Adlm_AC_fonipa ; oyb_Adlm_AC_fonipa
slk_Adlm_AC_fonipa ; sk_Adlm_AC_fonipa
slo_Adlm_AC_fonipa ; sk_Adlm_AC_fonipa
slv_Adlm_AC_fonipa ; sl_Adlm_AC_fonipa
+smd_Adlm_AC_fonipa ; kmb_Adlm_AC_fonipa
sme_Adlm_AC_fonipa ; se_Adlm_AC_fonipa
smo_Adlm_AC_fonipa ; sm_Adlm_AC_fonipa
sna_Adlm_AC_fonipa ; sn_Adlm_AC_fonipa
+snb_Adlm_AC_fonipa ; iba_Adlm_AC_fonipa
snd_Adlm_AC_fonipa ; sd_Adlm_AC_fonipa
som_Adlm_AC_fonipa ; so_Adlm_AC_fonipa
sot_Adlm_AC_fonipa ; st_Adlm_AC_fonipa
@@ -1569,6 +1691,8 @@ src_Adlm_AC_fonipa ; sc_Adlm_AC_fonipa
srd_Adlm_AC_fonipa ; sc_Adlm_AC_fonipa
srp_Adlm_AC_fonipa ; sr_Adlm_AC_fonipa
ssw_Adlm_AC_fonipa ; ss_Adlm_AC_fonipa
+sul_Adlm_AC_fonipa ; sgd_Adlm_AC_fonipa
+sum_Adlm_AC_fonipa ; ulw_Adlm_AC_fonipa
sun_Adlm_AC_fonipa ; su_Adlm_AC_fonipa
swa_Adlm_AC_fonipa ; sw_Adlm_AC_fonipa
swc_Adlm_AC_fonipa ; sw_Adlm_AC_fonipa
@@ -1579,12 +1703,15 @@ tam_Adlm_AC_fonipa ; ta_Adlm_AC_fonipa
tat_Adlm_AC_fonipa ; tt_Adlm_AC_fonipa
tdu_Adlm_AC_fonipa ; dtp_Adlm_AC_fonipa
tel_Adlm_AC_fonipa ; te_Adlm_AC_fonipa
+tgg_Adlm_AC_fonipa ; bjp_Adlm_AC_fonipa
tgk_Adlm_AC_fonipa ; tg_Adlm_AC_fonipa
tgl_Adlm_AC_fonipa ; fil_Adlm_AC_fonipa
tha_Adlm_AC_fonipa ; th_Adlm_AC_fonipa
thc_Adlm_AC_fonipa ; tpo_Adlm_AC_fonipa
+thw_Adlm_AC_fonipa ; ola_Adlm_AC_fonipa
thx_Adlm_AC_fonipa ; oyb_Adlm_AC_fonipa
tib_Adlm_AC_fonipa ; bo_Adlm_AC_fonipa
+tid_Adlm_AC_fonipa ; itd_Adlm_AC_fonipa
tie_Adlm_AC_fonipa ; ras_Adlm_AC_fonipa
tir_Adlm_AC_fonipa ; ti_Adlm_AC_fonipa
tkk_Adlm_AC_fonipa ; twm_Adlm_AC_fonipa
@@ -1605,6 +1732,7 @@ twi_Adlm_AC_fonipa ; ak_Adlm_AC_fonipa
uig_Adlm_AC_fonipa ; ug_Adlm_AC_fonipa
ukr_Adlm_AC_fonipa ; uk_Adlm_AC_fonipa
umu_Adlm_AC_fonipa ; del_Adlm_AC_fonipa
+unp_Adlm_AC_fonipa ; wro_Adlm_AC_fonipa
uok_Adlm_AC_fonipa ; ema_Adlm_AC_fonipa
urd_Adlm_AC_fonipa ; ur_Adlm_AC_fonipa
uzb_Adlm_AC_fonipa ; uz_Adlm_AC_fonipa
@@ -1613,6 +1741,9 @@ ven_Adlm_AC_fonipa ; ve_Adlm_AC_fonipa
vie_Adlm_AC_fonipa ; vi_Adlm_AC_fonipa
vol_Adlm_AC_fonipa ; vo_Adlm_AC_fonipa
wel_Adlm_AC_fonipa ; cy_Adlm_AC_fonipa
+wgw_Adlm_AC_fonipa ; wgb_Adlm_AC_fonipa
+wit_Adlm_AC_fonipa ; nol_Adlm_AC_fonipa
+wiw_Adlm_AC_fonipa ; nwo_Adlm_AC_fonipa
wln_Adlm_AC_fonipa ; wa_Adlm_AC_fonipa
wol_Adlm_AC_fonipa ; wo_Adlm_AC_fonipa
xba_Adlm_AC_fonipa ; cax_Adlm_AC_fonipa
@@ -1620,11 +1751,14 @@ xho_Adlm_AC_fonipa ; xh_Adlm_AC_fonipa
xia_Adlm_AC_fonipa ; acn_Adlm_AC_fonipa
xkh_Adlm_AC_fonipa ; waw_Adlm_AC_fonipa
xpe_Adlm_AC_fonipa ; kpe_Adlm_AC_fonipa
+xrq_Adlm_AC_fonipa ; dmw_Adlm_AC_fonipa
xsj_Adlm_AC_fonipa ; suj_Adlm_AC_fonipa
xsl_Adlm_AC_fonipa ; den_Adlm_AC_fonipa
ybd_Adlm_AC_fonipa ; rki_Adlm_AC_fonipa
ydd_Adlm_AC_fonipa ; yi_Adlm_AC_fonipa
+yen_Adlm_AC_fonipa ; ynq_Adlm_AC_fonipa
yid_Adlm_AC_fonipa ; yi_Adlm_AC_fonipa
+yiy_Adlm_AC_fonipa ; yrm_Adlm_AC_fonipa
yma_Adlm_AC_fonipa ; lrr_Adlm_AC_fonipa
ymt_Adlm_AC_fonipa ; mtm_Adlm_AC_fonipa
yor_Adlm_AC_fonipa ; yo_Adlm_AC_fonipa
@@ -1643,6 +1777,7 @@ zho_Adlm_AC_fonipa_guoyu_hakka_xiang ; hak_Adlm_AC_fonipa
zho_Adlm_AC_fonipa_hakka ; hak_Adlm_AC_fonipa
zho_Adlm_AC_fonipa_hakka_xiang ; hak_Adlm_AC_fonipa
zho_Adlm_AC_fonipa_xiang ; hsn_Adlm_AC_fonipa
+zir_Adlm_AC_fonipa ; scv_Adlm_AC_fonipa
zsm_Adlm_AC_fonipa ; ms_Adlm_AC_fonipa
zul_Adlm_AC_fonipa ; zu_Adlm_AC_fonipa
zyb_Adlm_AC_fonipa ; za_Adlm_AC_fonipa
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/localeIdentifiers/localeDisplayName.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/localeIdentifiers/localeDisplayName.txt
new file mode 100644
index 00000000000..fd9986c0097
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/localeIdentifiers/localeDisplayName.txt
@@ -0,0 +1,335 @@
+# Test data for locale display name generation
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+# Format:
+# @locale=<locale to display in>
+# @compound=<whether to form compounds like "Flemish" for nl_BE>
+# <locale to display> ; <expected display name>
+
+@locale=en
+@compound=false
+
+
+# Simple cases: Language, script, region, variants
+
+es; Spanish
+es-419; Spanish (Latin America)
+es-Cyrl-MX; Spanish (Cyrillic, Mexico)
+hi-Latn; Hindi (Latin)
+
+#Note that the order of the variants is alphabetized before generating names
+
+en-Latn-GB-scouse-fonipa; English (Latin, United Kingdom, IPA Phonetics, Scouse)
+
+# Add extensions, and verify their order
+
+en-u-nu-thai-ca-islamic-civil; English (Hijri Calendar [tabular, civil epoch], Thai Digits)
+hi-u-nu-latn-t-en-h0-hybrid; Hindi (Hybrid: English, Western Digits)
+en-u-nu-deva-t-de; English (Transform: German, Devanagari Digits)
+
+# Test ordering of extensions (include well-formed but invalid cases)
+
+fr-z-zz-zzz-v-vv-vvv-u-uu-uuu-t-ru-Cyrl-s-ss-sss-a-aa-aaa-x-u-x; French (Transform: Russian [Cyrillic], uu: uuu, a: aa-aaa, s: ss-sss, v: vv-vvv, x: u-x, z: zz-zzz)
+
+# Comprehensive list (mostly comprehensive: currencies, subdivisions, timezones have abbreviated lists)
+
+en-u-ca-buddhist; English (Buddhist Calendar)
+en-u-ca-chinese; English (Chinese Calendar)
+en-u-ca-coptic; English (Coptic Calendar)
+en-u-ca-dangi; English (Dangi Calendar)
+en-u-ca-ethioaa; English (Ethiopic Amete Alem Calendar)
+en-u-ca-ethiopic; English (Ethiopic Calendar)
+en-u-ca-gregory; English (Gregorian Calendar)
+en-u-ca-hebrew; English (Hebrew Calendar)
+en-u-ca-indian; English (Indian National Calendar)
+en-u-ca-islamic; English (Hijri Calendar)
+en-u-ca-islamic-civil; English (Hijri Calendar [tabular, civil epoch])
+en-u-ca-islamic-rgsa; English (Hijri Calendar [Saudi Arabia, sighting])
+en-u-ca-islamic-tbla; English (Hijri Calendar [tabular, astronomical epoch])
+en-u-ca-islamic-umalqura; English (Hijri Calendar [Umm al-Qura])
+en-u-ca-iso8601; English (ISO-8601 Calendar)
+en-u-ca-japanese; English (Japanese Calendar)
+en-u-ca-persian; English (Persian Calendar)
+en-u-ca-roc; English (Minguo Calendar)
+en-u-cf-account; English (Accounting Currency Format)
+en-u-cf-standard; English (Standard Currency Format)
+en-u-co-big5han; English (Traditional Chinese Sort Order - Big5)
+en-u-co-compat; English (Previous Sort Order, for compatibility)
+en-u-co-dict; English (Dictionary Sort Order)
+en-u-co-ducet; English (Default Unicode Sort Order)
+en-u-co-emoji; English (Emoji Sort Order)
+en-u-co-eor; English (European Ordering Rules)
+en-u-co-gb2312; English (Simplified Chinese Sort Order - GB2312)
+en-u-co-phonebk; English (Phonebook Sort Order)
+en-u-co-phonetic; English (Phonetic Sort Order)
+en-u-co-pinyin; English (Pinyin Sort Order)
+en-u-co-reformed; English (Reformed Sort Order)
+en-u-co-search; English (General-Purpose Search)
+en-u-co-searchjl; English (Search By Hangul Initial Consonant)
+en-u-co-standard; English (Standard Sort Order)
+en-u-co-stroke; English (Stroke Sort Order)
+en-u-co-trad; English (Traditional Sort Order)
+en-u-co-unihan; English (Radical-Stroke Sort Order)
+en-u-co-zhuyin; English (Zhuyin Sort Order)
+en-u-cu-eur; English (Currency: €)
+en-u-cu-jpy; English (Currency: ¥)
+en-u-cu-usd; English (Currency: $)
+en-u-cu-chf; English (Currency: CHF)
+en-t-d0-accents; English (To Accented Characters From ASCII Sequence)
+en-t-d0-ascii; English (To ASCII)
+en-t-d0-casefold; English (To Casefolded)
+en-t-d0-charname; English (To Unicode Character Names)
+en-t-d0-digit; English (To Digit Form Of Accent)
+en-t-d0-fcc; English (To Unicode FCC)
+en-t-d0-fcd; English (To Unicode FCD)
+en-t-d0-fwidth; English (To Fullwidth)
+en-t-d0-hex; English (To Hexadecimal Codes)
+en-t-d0-hwidth; English (To Halfwidth)
+en-t-d0-lower; English (To Lowercase)
+en-t-d0-morse; English (To Morse Code)
+en-t-d0-nfc; English (To Unicode NFC)
+en-t-d0-nfd; English (To Unicode NFD)
+en-t-d0-nfkc; English (To Unicode NFKC)
+en-t-d0-nfkd; English (To Unicode NFKD)
+en-t-d0-npinyin; English (To Pinyin With Numeric Tones)
+en-t-d0-null; English (No Change)
+en-t-d0-publish; English (To Publishing Characters From ASCII)
+en-t-d0-remove; English (To Empty String)
+en-t-d0-title; English (To Titlecase)
+en-t-d0-upper; English (To Uppercase)
+en-t-d0-zawgyi; English (To Zawgyi Myanmar Encoding)
+en-u-dx-thai; English (Dictionary Break Exclusions: thai)
+en-u-em-default; English (Use Default Presentation For Emoji Characters)
+en-u-em-emoji; English (Prefer Emoji Presentation For Emoji Characters)
+en-u-em-text; English (Prefer Text Presentation For Emoji Characters)
+en-u-fw-fri; English (First Day of Week Is Friday)
+en-u-fw-mon; English (First Day of Week Is Monday)
+en-u-fw-sat; English (First Day of Week Is Saturday)
+en-u-fw-sun; English (First Day of Week Is Sunday)
+en-u-fw-thu; English (First Day of Week Is Thursday)
+en-u-fw-tue; English (First Day of Week Is Tuesday)
+en-u-fw-wed; English (First Day of Week Is Wednesday)
+en-t-h0-hybrid; English
+en-u-hc-h11; English (12 Hour System [0–11])
+en-u-hc-h12; English (12 Hour System [1–12])
+en-u-hc-h23; English (24 Hour System [0–23])
+en-u-hc-h24; English (24 Hour System [1–24])
+en-t-i0-handwrit; English (Handwriting Input Method)
+en-t-i0-pinyin; English (Pinyin Input Method)
+en-t-i0-und; English (Unspecified Input Method)
+en-t-i0-wubi; English (Wubi Input Method)
+en-t-k0-101key; English (101-Key Keyboard)
+en-t-k0-102key; English (102-Key Keyboard)
+en-t-k0-600dpi; English (600 dpi Keyboard)
+en-t-k0-768dpi; English (768 dpi Keyboard)
+en-t-k0-android; English (Android Keyboard)
+en-t-k0-azerty; English (AZERTY-Based Keyboard)
+en-t-k0-chromeos; English (ChromeOS Keyboard)
+en-t-k0-colemak; English (Colemak Keyboard)
+en-t-k0-dvorak; English (Dvorak Keyboard)
+en-t-k0-dvorakl; English (Dvorak Left-Handed Keyboard)
+en-t-k0-dvorakr; English (Dvorak Right-Handed Keyboard)
+en-t-k0-el220; English (Greek 220 Keyboard)
+en-t-k0-el319; English (Greek 319 Keyboard)
+en-t-k0-extended; English (Keyboard With Many Extra Characters)
+en-t-k0-googlevk; English (Google Virtual Keyboard)
+en-t-k0-isiri; English (Persian ISIRI Keyboard)
+en-t-k0-legacy; English (Legacy Keyboard)
+en-t-k0-lt1205; English (Lithuanian LST 1205 Keyboard)
+en-t-k0-lt1582; English (Lithuanian LST 1582 Keyboard)
+en-t-k0-nutaaq; English (Inuktitut Nutaaq Keyboard)
+en-t-k0-osx; English (macOS Keyboard)
+en-t-k0-patta; English (Thai Pattachote Keyboard)
+en-t-k0-qwerty; English (QWERTY-Based Keyboard)
+en-t-k0-qwertz; English (QWERTZ-Based Keyboard)
+en-t-k0-ta99; English (Tamil 99 Keyboard)
+en-t-k0-und; English (Unspecified Keyboard)
+en-t-k0-var; English (Keyboard Variant)
+en-t-k0-viqr; English (Vietnamese VIQR Keyboard)
+en-t-k0-windows; English (Windows Keyboard)
+en-u-ka-noignore; English (Sort Symbols)
+en-u-ka-shifted; English (Sort Ignoring Symbols)
+en-u-kb-false; English (Sort Accents Normally)
+en-u-kb-true; English (Sort Accents Reversed)
+en-u-kc-false; English (Sort Case Insensitive)
+en-u-kc-true; English (Sort Case Sensitive)
+en-u-kf-false; English (Sort Normal Case Order)
+en-u-kf-lower; English (Sort Lowercase First)
+en-u-kf-upper; English (Sort Uppercase First)
+en-u-kk-false; English (Sort Without Normalization)
+en-u-kk-true; English (Sort Unicode Normalized)
+en-u-kn-false; English (Sort Digits Individually)
+en-u-kn-true; English (Sort Digits Numerically)
+en-u-kr-arab; English (Script/Block Reordering: Arabic)
+en-u-kr-digit-deva-latn; English (Script/Block Reordering: Digits, Devanagari, Latin)
+en-u-kr-currency; English (Currency)
+en-u-kr-digit; English (Digits)
+en-u-kr-punct; English (Punctuation)
+en-u-kr-space; English (Whitespace)
+en-u-kr-symbol; English (Symbol)
+en-u-ks-identic; English (Sort All)
+en-u-ks-level1; English (Sort Base Letters Only)
+en-u-ks-level2; English (Sort Accents)
+en-u-ks-level3; English (Sort Accents/Case/Width)
+en-u-ks-level4; English (Sort Accents/Case/Width/Kana)
+en-u-kv-currency; English (Ignore Symbols affects spaces, punctuation, all symbols)
+en-u-kv-punct; English (Ignore Symbols affects spaces and punctuation only)
+en-u-kv-space; English (Ignore Symbols affects spaces only)
+en-u-kv-symbol; English (Ignore Symbols affects spaces, punctuation, non-currency symbols)
+en-u-lb-loose; English (Loose Line Break Style)
+en-u-lb-normal; English (Normal Line Break Style)
+en-u-lb-strict; English (Strict Line Break Style)
+en-u-lw-breakall; English (Allow Line Breaks In All Words)
+en-u-lw-keepall; English (Prevent Line Breaks In All Words)
+en-u-lw-normal; English (Normal Line Breaks For Words)
+en-u-lw-phrase; English (Prevent Line Breaks In Phrases)
+en-t-m0-aethiopi; English (Encylopedia Aethiopica Transliteration)
+en-t-m0-alaloc; English (US ALA-LOC Transliteration)
+en-t-m0-betamets; English (Beta Maá¹£ÄḥÇft Transliteration)
+en-t-m0-bgn; English (US BGN Transliteration)
+en-t-m0-buckwalt; English (Buckwalter Arabic Transliteration)
+en-t-m0-c11; English (Hex transform using C11 syntax)
+en-t-m0-css; English (Hex transform using CSS syntax)
+en-t-m0-din; English (German DIN Transliteration)
+en-t-m0-es3842; English (Ethiopian Standards Agency ES 3842:2014 Ethiopic-Latin Transliteration)
+en-t-m0-ewts; English (Extended Wylie Transliteration Scheme)
+en-t-m0-gost; English (CIS GOST Transliteration)
+en-t-m0-gurage; English (Gurage Legacy to Modern Transliteration)
+en-t-m0-gutgarts; English (Yaros Gutgarts Ethiopic-Cyrillic Transliteration)
+en-t-m0-iast; English (International Alphabet of Sanskrit Transliteration)
+en-t-m0-iesjes; English (IES/JES Amharic Transliteration)
+en-t-m0-iso; English (ISO Transliteration)
+en-t-m0-java; English (Hex transform using Java syntax)
+en-t-m0-lambdin; English (Thomas Oden Lambdin Ethiopic-Latin Transliteration)
+en-t-m0-mcst; English (Korean MCST Transliteration)
+en-t-m0-mns; English (Mongolian National Standard Transliteration)
+en-t-m0-percent; English (Hex transform using percent syntax)
+en-t-m0-perl; English (Hex transform using Perl syntax)
+en-t-m0-plain; English (Hex transform with no surrounding syntax)
+en-t-m0-prprname; English (Personal name transliteration variant)
+en-t-m0-satts; English (Standard Arabic Technical Transliteration)
+en-t-m0-sera; English (System for Ethiopic Representation in ASCII)
+en-t-m0-tekieali; English (Tekie Alibekit Blin-Latin Transliteration)
+en-t-m0-ungegn; English (UN GEGN Transliteration)
+en-t-m0-unicode; English (Hex transform using Unicode syntax)
+en-t-m0-xaleget; English (Eritrean Ministry of Education Blin-Latin Transliteration)
+en-t-m0-xml; English (Hex transform using XML syntax)
+en-t-m0-xml10; English (Hex transform using XML decimal syntax)
+en-u-ms-metric; English (Metric System)
+en-u-ms-uksystem; English (Imperial Measurement System)
+en-u-ms-ussystem; English (US Measurement System)
+en-u-mu-celsius; English (Celsius)
+en-u-mu-fahrenhe; English (Fahrenheit)
+en-u-mu-kelvin; English (Kelvin)
+en-u-nu-adlm; English (Adlam Digits)
+en-u-nu-ahom; English (Ahom Digits)
+en-u-nu-arab; English (Arabic-Indic Digits)
+en-u-nu-arabext; English (Extended Arabic-Indic Digits)
+en-u-nu-armn; English (Armenian Numerals)
+en-u-nu-armnlow; English (Armenian Lowercase Numerals)
+en-u-nu-bali; English (Balinese Digits)
+en-u-nu-beng; English (Bangla Digits)
+en-u-nu-bhks; English (Bhaiksuki Digits)
+en-u-nu-brah; English (Brahmi Digits)
+en-u-nu-cakm; English (Chakma Digits)
+en-u-nu-cham; English (Cham Digits)
+en-u-nu-cyrl; English (Cyrillic Numerals)
+en-u-nu-deva; English (Devanagari Digits)
+en-u-nu-diak; English (Dives Akuru Digits)
+en-u-nu-ethi; English (Ethiopic Numerals)
+en-u-nu-finance; English (Financial Numerals)
+en-u-nu-fullwide; English (Full-Width Digits)
+en-u-nu-geor; English (Georgian Numerals)
+en-u-nu-gong; English (Gunjala Gondi digits)
+en-u-nu-gonm; English (Masaram Gondi digits)
+en-u-nu-grek; English (Greek Numerals)
+en-u-nu-greklow; English (Greek Lowercase Numerals)
+en-u-nu-gujr; English (Gujarati Digits)
+en-u-nu-guru; English (Gurmukhi Digits)
+en-u-nu-hanidays; English (Chinese Calendar Day-of-Month Numerals)
+en-u-nu-hanidec; English (Chinese Decimal Numerals)
+en-u-nu-hans; English (Simplified Chinese Numerals)
+en-u-nu-hansfin; English (Simplified Chinese Financial Numerals)
+en-u-nu-hant; English (Traditional Chinese Numerals)
+en-u-nu-hantfin; English (Traditional Chinese Financial Numerals)
+en-u-nu-hebr; English (Hebrew Numerals)
+en-u-nu-hmng; English (Pahawh Hmong Digits)
+en-u-nu-hmnp; English (Nyiakeng Puachue Hmong Digits)
+en-u-nu-java; English (Javanese Digits)
+en-u-nu-jpan; English (Japanese Numerals)
+en-u-nu-jpanfin; English (Japanese Financial Numerals)
+en-u-nu-jpanyear; English (Japanese Calendar Gannen Year Numerals)
+en-u-nu-kali; English (Kayah Li Digits)
+en-u-nu-kawi; English (Kawi Digits)
+en-u-nu-khmr; English (Khmer Digits)
+en-u-nu-knda; English (Kannada Digits)
+en-u-nu-lana; English (Tai Tham Hora Digits)
+en-u-nu-lanatham; English (Tai Tham Tham Digits)
+en-u-nu-laoo; English (Lao Digits)
+en-u-nu-latn; English (Western Digits)
+en-u-nu-lepc; English (Lepcha Digits)
+en-u-nu-limb; English (Limbu Digits)
+en-u-nu-mathbold; English (Mathematical Bold Digits)
+en-u-nu-mathdbl; English (Mathematical Double-Struck Digits)
+en-u-nu-mathmono; English (Mathematical Monospace Digits)
+en-u-nu-mathsanb; English (Mathematical Sans-Serif Bold Digits)
+en-u-nu-mathsans; English (Mathematical Sans-Serif Digits)
+en-u-nu-mlym; English (Malayalam Digits)
+en-u-nu-modi; English (Modi Digits)
+en-u-nu-mong; English (Mongolian Digits)
+en-u-nu-mroo; English (Mro Digits)
+en-u-nu-mtei; English (Meetei Mayek Digits)
+en-u-nu-mymr; English (Myanmar Digits)
+en-u-nu-mymrshan; English (Myanmar Shan Digits)
+en-u-nu-mymrtlng; English (Myanmar Tai Laing Digits)
+en-u-nu-nagm; English (Nag Mundari Digits)
+en-u-nu-native; English (Native Digits)
+en-u-nu-newa; English (Newa Digits)
+en-u-nu-nkoo; English (N’Ko Digits)
+en-u-nu-olck; English (Ol Chiki Digits)
+en-u-nu-orya; English (Odia Digits)
+en-u-nu-osma; English (Osmanya Digits)
+en-u-nu-rohg; English (Hanifi Rohingya digits)
+en-u-nu-roman; English (Roman Numerals)
+en-u-nu-romanlow; English (Roman Lowercase Numerals)
+en-u-nu-saur; English (Saurashtra Digits)
+en-u-nu-segment; English (Segmented Digits)
+en-u-nu-shrd; English (Sharada Digits)
+en-u-nu-sind; English (Khudawadi Digits)
+en-u-nu-sinh; English (Sinhala Lith Digits)
+en-u-nu-sora; English (Sora Sompeng Digits)
+en-u-nu-sund; English (Sundanese Digits)
+en-u-nu-takr; English (Takri Digits)
+en-u-nu-talu; English (New Tai Lue Digits)
+en-u-nu-taml; English (Traditional Tamil Numerals)
+en-u-nu-tamldec; English (Tamil Digits)
+en-u-nu-telu; English (Telugu Digits)
+en-u-nu-thai; English (Thai Digits)
+en-u-nu-tibt; English (Tibetan Digits)
+en-u-nu-tirh; English (Tirhuta Digits)
+en-u-nu-tnsa; English (Tangsa Digits)
+en-u-nu-traditio; English (Traditional Numerals)
+en-u-nu-vaii; English (Vai Digits)
+en-u-nu-wara; English (Warang Citi Digits)
+en-u-nu-wcho; English (Wancho Digits)
+en-u-rg-gbsct; English (Region For Supplemental Data: Scotland)
+en-u-rg-gbeng; English (Region For Supplemental Data: England)
+en-t-s0-accents; English (From Accented Characters To ASCII Sequence)
+en-t-s0-ascii; English (From ASCII)
+en-t-s0-hex; English (From Hexadecimal Codes)
+en-t-s0-morse; English (From Morse Code)
+en-t-s0-npinyin; English (From Pinyin With Numeric Tones)
+en-t-s0-publish; English (From Publishing Punctuation To ASCII)
+en-t-s0-zawgyi; English (From Zawgyi Myanmar Encoding)
+en-u-sd-gbsct; English (Region Subdivision: Scotland)
+en-u-sd-gbwls; English (Region Subdivision: Wales)
+en-u-ss-none; English (Sentence Breaks Without Abbreviation Handling)
+en-u-ss-standard; English (Suppress Sentence Breaks After Standard Abbreviations)
+en-t-t0-und; English (Unspecified Machine Translation)
+en-u-tz-uslax; English (Time Zone: Los Angeles Time)
+en-u-tz-gblon; English (Time Zone: United Kingdom Time)
+en-u-tz-chzrh; English (Time Zone: Switzerland Time)
+en-u-va-posix; English (POSIX Compliant Locale)
+en-t-x0-foobar2; English (Private-Use Transform: foobar2)
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/_header.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/_header.txt
new file mode 100644
index 00000000000..d32b3c06740
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/_header.txt
@@ -0,0 +1,6 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/_readme.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/_readme.txt
new file mode 100644
index 00000000000..c45acdf8469
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/_readme.txt
@@ -0,0 +1,6 @@
+# Test data for personName formats
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+# The format may vary between folders or files.
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/af.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/af.txt
new file mode 100644
index 00000000000..726da7aa12c
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/af.txt
@@ -0,0 +1,818 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: af
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Piet
+name ; locale; af_AQ
+
+expectedResult; Piet
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; P
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Irene
+name ; surname; Rossouw
+name ; locale; af_AQ
+
+expectedResult; Rossouw, Irene
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Irene Rossouw
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Rossouw Irene
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Rossouw, I.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; I. Rossouw
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Rossouw I.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Irene R.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Rossouw
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Irene
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; IR
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; RI
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; I
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; R
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeGGS
+name ; given; Jan
+name ; given2; Koos
+name ; surname; Van der Merwe
+name ; locale; af_AQ
+
+expectedResult; Van der Merwe, Jan Koos
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Jan Koos Van der Merwe
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Van der Merwe Jan Koos
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Van der Merwe, Jan K.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Jan K. Van der Merwe
+
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Van der Merwe Jan K.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Van der Merwe, J. K.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; J. K. Van der Merwe
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Van der Merwe J. K.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Van der Merwe, Jan
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Jan Van der Merwe
+
+parameters; givenFirst; long; referring; informal
+
+expectedResult; Van der Merwe Jan
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Van der Merwe J.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Van der Merwe
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Jan V. d. M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Jan
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; JKV
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; VJK
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; JV
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VJ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; J
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; mnr.
+name ; given; Bertus Wilbers
+name ; given-informal; Bertie
+name ; given2; Henri Retief
+name ; surname-core; Wyk
+name ; generation; jnr.
+name ; credentials; LP
+name ; locale; af_AQ
+
+expectedResult; mnr. Bertus Wilbers Henri Retief Wyk jnr., LP
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Wyk Bertus Wilbers Henri Retief LP
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Wyk, Bertus Wilbers Henri Retief
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Bertus Wilbers H. R. Wyk LP
+
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Wyk Bertus Wilbers H. R. LP
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Wyk, Bertus Wilbers H. R.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Wyk, B. W. H. R.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; B. W. H. R. Wyk
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Wyk B. W. H. R.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Wyk, Bertie
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Bertie Wyk
+
+parameters; givenFirst; long; referring; informal
+
+expectedResult; Wyk Bertie
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Bertie W.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Wyk B. W.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; mnr. Wyk
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Bertie
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; BHW
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; WBH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; BW
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; WB
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; B
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; W
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; Sarel
+name ; locale; ja_AQ
+
+expectedResult; Sarel
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Katryn
+name ; surname; Müller
+name ; locale; ja_AQ
+
+expectedResult; Müller, Katryn
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Katryn Müller
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Müller Katryn
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Müller, K.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; K. Müller
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Katryn M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Müller K.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Katryn
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Müller
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Zalta
+name ; given2; Herman
+name ; surname; Stander
+name ; locale; ja_AQ
+
+expectedResult; Stander, Zalta Herman
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Stander Zalta Herman
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Zalta Herman Stander
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Stander, Zalta H.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Stander Zalta H.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Zalta H. Stander
+
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Stander, Z. H.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Stander, Zalta
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Stander Z. H.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Stander Zalta
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Z. H. Stander
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Zalta Stander
+
+parameters; givenFirst; long; referring; informal
+
+expectedResult; Stander Z.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Zalta S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Stander
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Zalta
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; SZH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ZHS
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; SZ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ZS
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Z
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; Prof. dr.
+name ; given; Cornelia Margarita
+name ; given-informal; Nellie
+name ; given2; Sofia Aletta
+name ; surname-prefix; van den
+name ; surname-core; Berg
+name ; surname2; Wessels Swart
+name ; generation; jnr.
+name ; credentials; MBChB PhD
+name ; locale; ja_AQ
+
+expectedResult; Prof. dr. Cornelia Margarita Sofia Aletta van den Berg jnr., MBChB PhD
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; van den Berg Cornelia Margarita Sofia Aletta MBChB PhD
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Cornelia Margarita S. A. van den Berg MBChB PhD
+
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; van den Berg Cornelia Margarita S. A. MBChB PhD
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Berg, Cornelia Margarita Sofia Aletta van den
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Berg, Cornelia Margarita S. A. van den
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Berg, C. M. S. A. van den
+
+parameters; sorting; short; referring; formal
+
+expectedResult; C. M. S. A. van den Berg
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; van den Berg C. M. S. A.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Prof. dr. van den Berg
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; van den Berg, Nellie
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Nellie van den Berg
+
+parameters; givenFirst; long; referring; informal
+
+expectedResult; van den Berg Nellie
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; van den Berg C. M.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Nellie v. d. B.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Nellie
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; CSV
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; VCS
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; NV
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VN
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; N
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/am.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/am.txt
new file mode 100644
index 00000000000..ac7b469a2bf
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/am.txt
@@ -0,0 +1,551 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: am
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; ዜንዳያ
+name ; locale; am_AQ
+
+expectedResult; ዜንዳያ
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ዜ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; ኢሬን
+name ; surname; አድለር
+name ; locale; am_AQ
+
+expectedResult; አድለር ኢሬን
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ኢሬን አድለር
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; አኢ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; ኢአ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; ጆን
+name ; given2; ሃሚሽ
+name ; surname; ዋትሰን
+name ; locale; am_AQ
+
+expectedResult; ዋትሰን ጆን ሃሚሽ
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ጆን ሃሚሽ ዋትሰን
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; ዋጆሃ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; ጆሃዋ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+endName
+
+# nativeFull
+name ; title; አቶ
+name ; given; በርታሠዊáˆá‰ áˆ­áŽáˆ­áˆµ
+name ; given-informal; በርቲ
+name ; given2; ሄáŠáˆª ሮበርት
+name ; surname-core; ዉስተር
+name ; generation; ተማሪ
+name ; credentials; ኤáˆá’
+name ; locale; am_AQ
+
+expectedResult; አቶ በርታሠዊáˆá‰ áˆ­áŽáˆ­áˆµ ሄáŠáˆª ሮበርት ዉስተር ኤáˆá’
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; ዉስተር አቶ በርታሠዊáˆá‰ áˆ­áŽáˆ­áˆµ ሄáŠáˆª ሮበርት ኤáˆá’
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; በሄዉ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; ዉበሄ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; ሲንባድ
+name ; locale; ko_AQ
+
+expectedResult; ሲንባድ
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ሲ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; ካቲ
+name ; surname; ሙለር
+name ; locale; ko_AQ
+
+expectedResult; ሙለር ካቲ
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ካቲ ሙለር
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; ሙካ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; ካሙ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+endName
+
+# foreignGGS
+name ; given; ዛዚላ
+name ; given2; ሃሚሽ
+name ; surname; ስቶበር
+name ; locale; ko_AQ
+
+expectedResult; ስቶበር ዛዚላ ሃሚሽ
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ዛዚላ ሃሚሽ ስቶበር
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; ስዛሃ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; ዛሃስ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; á•/ር ዶ/ር
+name ; given; አዳ ኮርኔሊያ
+name ; given-informal; ኒáˆ
+name ; given2; ኢቫ ሶáŠá‹«
+name ; surname-prefix; ቫን ደን
+name ; surname-core; ብሩህáˆ
+name ; surname2; ጎንዛሌዠዶሚንጎ
+name ; generation; ተማሪ
+name ; credentials; ሚ/ዶ ዶ/ር
+name ; locale; ko_AQ
+
+expectedResult; ቫን ደን ብሩህሠጎንዛሌዠዶሚንጎ, á•/ር ዶ/ር አዳ ኮርኔሊያ ኢቫ ሶáŠá‹« ሚ/ዶ ዶ/ር
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ቫን ደን ብሩህሠጎንዛሌዠዶሚንጎ á•/ር ዶ/ር አዳ ኮርኔሊያ ኢቫ ሶáŠá‹« ሚ/ዶ ዶ/ር
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; á•/ር ዶ/ር አዳ ኮርኔሊያ ኢቫ ሶáŠá‹« ቫን ደን ብሩህሠጎንዛሌዠዶሚንጎ ሚ/ዶ ዶ/ር
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; ቫአኢ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; አኢቫ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ar.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ar.txt
new file mode 100644
index 00000000000..6776b1de52c
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ar.txt
@@ -0,0 +1,790 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: ar
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; منير
+name ; locale; ar_AQ
+
+expectedResult; منير
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ù…
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; سميرة
+name ; surname; النجار
+name ; locale; ar_AQ
+
+expectedResult; النجار، سميرة
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; medium; referring; formal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; النجار سميرة
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; سميرة النجار
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; النجار، س.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; س.. النجار
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; النجار س.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; س. النجار
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; النجار
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; سميرة
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ا.س
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; س.ا
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; ا
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; س
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; كمال
+name ; given2; مجدي
+name ; surname; العامر
+name ; locale; ar_AQ
+
+expectedResult; العامر، كمال مجدي
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+
+expectedResult; كمال مجدي العامر
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; العامر، كمال م.
+
+parameters; surnameFirst; medium; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; كمال م. العامر
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; العامر، ك. م.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; العامر، كمال
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; العامر كمال
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; كمال العامر
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; ك.. العامر
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; العامر ك.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ك. العامر
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; العامر
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ا.ك.م
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ك.م.ا
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; كمال
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ا.ك
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ك.ا
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; ا
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Ùƒ
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeFull
+name ; title; السيد
+name ; given; أحمد رامي
+name ; given-informal; وسام
+name ; given2; نجيب محÙوظ
+name ; surname-prefix; أبو
+name ; surname-core; الأغا
+name ; surname2; علم الدين
+name ; generation; الابن
+name ; credentials; النائب
+name ; locale; ar_AQ
+
+expectedResult; السيد أحمد رامي نجيب محÙوظ أبو الأغا الابن، النائب
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; أبو الأغا، أحمد رامي نجيب محÙوظ
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+
+expectedResult; السيد أحمد رامي ن. م. أبو الأغا
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; أبو الأغا، أحمد رامي ن. م.
+
+parameters; surnameFirst; medium; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; أبو الأغا، أ. ر. ن. م.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; السيد أ. ر. أبو الأغا
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; أبو الأغا أ. ر.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; أبو الأغا، وسام
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; السيد أبو الأغا
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; أبو الأغا وسام
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; وسام أبو الأغا
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; و.. أبو الأغا
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; أ.أ.ن
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; أ.ن.أ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; وسام
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; أ.أ
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; أ.و
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; Ùˆ.Ø£
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; أ
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Ùˆ
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; سندباد
+name ; locale; ja_AQ
+
+expectedResult; سندباد
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; س
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; كاثرين
+name ; surname; مولر
+name ; locale; ja_AQ
+
+expectedResult; مولر، كاثرين
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; medium; referring; formal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; كاثرين مولر
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; مولر كاثرين
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; ك.. مولر
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; مولر، ك.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; ك. مولر
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; مولر ك.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; كاثرين
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; مولر
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Ùƒ.Ù…
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; Ù….Ùƒ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; Ùƒ
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; Ù…
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; زيزينيا
+name ; given2; هاميش
+name ; surname; ستوبر
+name ; locale; ja_AQ
+
+expectedResult; ستوبر، زيزينيا هاميش
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+
+expectedResult; زيزينيا هاميش ستوبر
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; ستوبر، زيزينيا ه.
+
+parameters; surnameFirst; medium; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; زيزينيا ه. ستوبر
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; ستوبر، زيزينيا
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; زيزينيا ستوبر
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; ستوبر زيزينيا
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; ستوبر، ز. ه.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; ز.. ستوبر
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ز. ستوبر
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ستوبر ز.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; زيزينيا
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ز.ه.س
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; س.ز.ه
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ستوبر
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ز.س
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; س.ز
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ز
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; س
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignFull
+name ; title; الدكتور
+name ; given; عايدة كورنيليا
+name ; given-informal; نيللي
+name ; given2; سيزار مارتن
+name ; surname-prefix; Ùون
+name ; surname-core; برول
+name ; surname2; غونزاليس دومينغو
+name ; generation; الإبن
+name ; credentials; طبيب وجراح
+name ; locale; ja_AQ
+
+expectedResult; الدكتور عايدة كورنيليا سيزار مارتن Ùون برول الإبن، طبيب وجراح
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; الدكتور عايدة كورنيليا س. Ù…. Ùون برول
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Ùون برول، عايدة كورنيليا سيزار مارتن
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+
+expectedResult; Ùون برول، عايدة كورنيليا س. Ù….
+
+parameters; surnameFirst; medium; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; الدكتور ع. Ùƒ. Ùون برول
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Ùون برول، ع. Ùƒ. س. Ù….
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; الدكتور Ùون برول
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Ùون برول، نيللي
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ùون برول ع. Ùƒ.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Ùون برول نيللي
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; نيللي Ùون برول
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Ù†.. Ùون برول
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ع.س.Ù
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; Ù.ع.س
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; نيللي
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ع.Ù
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; Ù.Ù†
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; Ù†.Ù
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; Ù
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Ù†
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/as.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/as.txt
new file mode 100644
index 00000000000..6eeadad5cde
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/as.txt
@@ -0,0 +1,818 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: as
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; কিশোৰ
+name ; locale; as_AQ
+
+expectedResult; কিশোৰ
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; কি
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; নমিতা
+name ; surname; বৰà§à§±à¦¾
+name ; locale; as_AQ
+
+expectedResult; বৰà§à§±à¦¾, নমিতা
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; নমিতা বৰà§à§±à¦¾
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; বৰà§à§±à¦¾ নমিতা
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; বৰà§à§±à¦¾, ন.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; ন. বৰà§à§±à¦¾
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; নমিতা ব.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; বৰà§à§±à¦¾ ন.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; নমিতা
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; বৰà§à§±à¦¾
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; নব
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; বন
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ন
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; ব
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeGGS
+name ; given; ৰà§à¦²à¦¾ কলিতা
+name ; given2; যতীন
+name ; surname; শৰà§à¦®à¦¾
+name ; locale; as_AQ
+
+expectedResult; শৰà§à¦®à¦¾, ৰà§à¦²à¦¾ কলিতা যতীন
+
+parameters; sorting; long; referring; formal
+
+expectedResult; ৰà§à¦²à¦¾ কলিতা যতীন শৰà§à¦®à¦¾
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; শৰà§à¦®à¦¾ ৰà§à¦²à¦¾ কলিতা যতীন
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; শৰà§à¦®à¦¾, ৰà§à¦²à¦¾ কলিতা য.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; ৰà§à¦²à¦¾ কলিতা য. শৰà§à¦®à¦¾
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; শৰà§à¦®à¦¾ ৰà§à¦²à¦¾ কলিতা য.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; শৰà§à¦®à¦¾, ৰà§à¦²à¦¾ কলিতা
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; ৰà§à¦²à¦¾ কলিতা শৰà§à¦®à¦¾
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; শৰà§à¦®à¦¾ ৰà§à¦²à¦¾ কলিতা
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; শৰà§à¦®à¦¾, ৰà§. ক. য.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; ৰà§. ক. য. শৰà§à¦®à¦¾
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; শৰà§à¦®à¦¾ ৰà§. ক. য.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; ৰà§à¦²à¦¾ কলিতা শ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; শৰà§à¦®à¦¾ ৰà§. ক.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ৰà§à¦²à¦¾ কলিতা
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; শৰà§à¦®à¦¾
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ৰà§à¦¯à¦¶
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; শৰà§à¦¯
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ৰà§à¦¶
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; শৰà§
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ৰà§
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; শ
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; শà§à§°à§€
+name ; given; নৰেন কলিতা
+name ; given-informal; নমী
+name ; given2; ৰà§à¦®à§€ বৰà§à§±à¦¾
+name ; surname-core; কাকতি
+name ; generation; ক.
+name ; credentials; à¦à¦®. পি.
+name ; locale; as_AQ
+
+expectedResult; কাকতি নৰেন কলিতা ৰà§à¦®à§€ বৰà§à§±à¦¾ à¦à¦®. পি.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; নৰেন কলিতা ৰà§à¦®à§€ বৰà§à§±à¦¾ কাকতি à¦à¦®. পি.
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; কাকতি নৰেন কলিতা ৰà§. ব. à¦à¦®. পি.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; নৰেন কলিতা ৰà§. ব. কাকতি à¦à¦®. পি.
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; কাকতি, নৰেন কলিতা ৰà§à¦®à§€ বৰà§à§±à¦¾
+
+parameters; sorting; long; referring; formal
+
+expectedResult; কাকতি, নৰেন কলিতা ৰà§. ব.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; কাকতি, ন. ক. ৰà§. ব.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; কাকতি ন. ক. ৰà§. ব.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; ন. ক. ৰà§. ব. কাকতি
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; কাকতি ন. ক.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; কাকতি, নমী
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; শà§à§°à§€ কাকতি
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; কাকতি নমী
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; নমী কাকতি
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; নমী কা.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; কানৰà§
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; নৰà§à¦•à¦¾
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; কান
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; নকা
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; নমী
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; কা
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; ন
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; সতà§à¦¯à§°à¦¾à¦®
+name ; locale; ko_AQ
+
+expectedResult; সতà§à¦¯à§°à¦¾à¦®
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; স
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; নগেন
+name ; surname; বৰা
+name ; locale; ko_AQ
+
+expectedResult; বৰা, নগেন
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; নগেন বৰা
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; বৰা নগেন
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; নগেন ব.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; বৰা, ন.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; ন. বৰা
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; বৰা ন.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; নগেন
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; বৰা
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; নব
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; বন
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ন
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; ব
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; মণিমালা
+name ; given2; অজিত
+name ; surname; বৰà§à§±à¦¾
+name ; locale; ko_AQ
+
+expectedResult; বৰà§à§±à¦¾, মণিমালা অজিত
+
+parameters; sorting; long; referring; formal
+
+expectedResult; বৰà§à§±à¦¾ মণিমালা অজিত
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; মণিমালা অজিত বৰà§à§±à¦¾
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; বৰà§à§±à¦¾, মণিমালা অ.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; বৰà§à§±à¦¾ মণিমালা অ.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; মণিমালা অ. বৰà§à§±à¦¾
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; বৰà§à§±à¦¾, মণিমালা
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; বৰà§à§±à¦¾ মণিমালা
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; মণিমালা বৰà§à§±à¦¾
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; বৰà§à§±à¦¾, ম. অ.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; বৰà§à§±à¦¾ ম. অ.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; ম. অ. বৰà§à§±à¦¾
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; মণিমালা ব.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; বৰà§à§±à¦¾ ম.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; মণিমালা
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; বৰà§à§±à¦¾
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; বমঅ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; মঅব
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; বম
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; মব
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; ব
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; ম
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; পà§à§°à¦«. ডা০
+name ; given; আডা কৰà§à¦£à§‡à¦²à¦¿à¦¯à¦¼à¦¾
+name ; given-informal; নীলে
+name ; given2; ইভা চ’ফিয়া
+name ; surname-prefix; ভেন ডেন
+name ; surname-core; কà§à¦•à§à§°à¦¨à§‡à¦šà§€à¦¯à¦¼à¦¾
+name ; surname2; বেকাৰ সà§à¦®à¦¿à¦Ÿ
+name ; generation; কনিষà§à¦ 
+name ; credentials; à¦à¦®. ডি. ডি. ডি. à¦à¦›
+name ; locale; ko_AQ
+
+expectedResult; আডা কৰà§à¦£à§‡à¦²à¦¿à¦¯à¦¼à¦¾ ইভা চ’ফিয়া ভেন ডেন কà§à¦•à§à§°à¦¨à§‡à¦šà§€à¦¯à¦¼à¦¾ à¦à¦®. ডি. ডি. ডি. à¦à¦›
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; ভেন ডেন কà§à¦•à§à§°à¦¨à§‡à¦šà§€à¦¯à¦¼à¦¾ আডা কৰà§à¦£à§‡à¦²à¦¿à¦¯à¦¼à¦¾ ইভা চ’ফিয়া à¦à¦®. ডি. ডি. ডি. à¦à¦›
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; আডা কৰà§à¦£à§‡à¦²à¦¿à¦¯à¦¼à¦¾ ই. চ. ভেন ডেন কà§à¦•à§à§°à¦¨à§‡à¦šà§€à¦¯à¦¼à¦¾ à¦à¦®. ডি. ডি. ডি. à¦à¦›
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; ভেন ডেন কà§à¦•à§à§°à¦¨à§‡à¦šà§€à¦¯à¦¼à¦¾ আডা কৰà§à¦£à§‡à¦²à¦¿à¦¯à¦¼à¦¾ ই. চ. à¦à¦®. ডি. ডি. ডি. à¦à¦›
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; কà§à¦•à§à§°à¦¨à§‡à¦šà§€à¦¯à¦¼à¦¾, আডা কৰà§à¦£à§‡à¦²à¦¿à¦¯à¦¼à¦¾ ইভা চ’ফিয়া ভেন ডেন
+
+parameters; sorting; long; referring; formal
+
+expectedResult; কà§à¦•à§à§°à¦¨à§‡à¦šà§€à¦¯à¦¼à¦¾, আডা কৰà§à¦£à§‡à¦²à¦¿à¦¯à¦¼à¦¾ ই. চ. ভেন ডেন
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; কà§à¦•à§à§°à¦¨à§‡à¦šà§€à¦¯à¦¼à¦¾, আ. ক. ই. চ. ভেন ডেন
+
+parameters; sorting; short; referring; formal
+
+expectedResult; আ. ক. ই. চ. ভেন ডেন কà§à¦•à§à§°à¦¨à§‡à¦šà§€à¦¯à¦¼à¦¾
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ভেন ডেন কà§à¦•à§à§°à¦¨à§‡à¦šà§€à¦¯à¦¼à¦¾ আ. ক. ই. চ.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; পà§à§°à¦«. ডা০ ভেন ডেন কà§à¦•à§à§°à¦¨à§‡à¦šà§€à¦¯à¦¼à¦¾
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ভেন ডেন কà§à¦•à§à§°à¦¨à§‡à¦šà§€à¦¯à¦¼à¦¾ আ. ক.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ভেন ডেন কà§à¦•à§à§°à¦¨à§‡à¦šà§€à¦¯à¦¼à¦¾, নীলে
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; নীলে ভেন ডেন কà§à¦•à§à§°à¦¨à§‡à¦šà§€à¦¯à¦¼à¦¾
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; ভেন ডেন কà§à¦•à§à§°à¦¨à§‡à¦šà§€à¦¯à¦¼à¦¾ নীলে
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; নীলে ভে. ডে. কà§.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; আইভে
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; নীভে
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; নীলে
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ভেআই
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ভেনী
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; নী
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; ভে
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/az.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/az.txt
new file mode 100644
index 00000000000..2f1c236be5b
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/az.txt
@@ -0,0 +1,704 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: az
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Sinbad
+name ; locale; az_AQ
+
+expectedResult; Sinbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Ä°ren
+name ; surname; Adler
+name ; locale; az_AQ
+
+expectedResult; Adler Ä°ren
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ä°ren Adler
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Ä°. Adler
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Ä°ren A.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Adler
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; Ä°ren
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+
+expectedResult; AÄ°
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; Ä°A
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+
+expectedResult; Ä°
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; Con
+name ; given2; HamiÅŸ
+name ; surname; Vatson
+name ; locale; az_AQ
+
+expectedResult; Con HamiÅŸ Vatson
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Vatson Con HamiÅŸ
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Con H. Vatson
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; C. H. Vatson
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Con Vatson
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Con V.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Vatson
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; CHV
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; Con
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+
+expectedResult; VCH
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; CV
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VC
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; C
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; Cənab
+name ; given; Arif Aliyev
+name ; given-informal; Arif
+name ; given2; Ä°lvus Santak
+name ; surname-core; Aydan
+name ; generation; Kiçik
+name ; credentials; Deputat
+name ; locale; az_AQ
+
+expectedResult; Aydan Cənab Arif Aliyev İlvus Santak Deputat
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Cənab Arif Aliyev İlvus Santak Aydan Deputat
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Aydan Arif Aliyev Ä°lvus Santak Deputat
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Arif Aliyev Ä°. S. Aydan Deputat
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; A. A. Ä°. S. Aydan
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Cənab Aydan
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; Arif Aydan
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Arif A.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Arif
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+
+expectedResult; AAÄ°
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; AÄ°A
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; AA
+
+parameters; givenFirst; long; monogram; informal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; Sinbad
+name ; locale; ko_AQ
+
+expectedResult; Sinbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Käthe
+name ; surname; Müller
+name ; locale; ko_AQ
+
+expectedResult; Käthe Müller
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Müller Käthe
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; K. Müller
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Käthe M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Müller
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; Käthe
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Zazilia
+name ; given2; HamiÅŸ
+name ; surname; Ştöber
+name ; locale; ko_AQ
+
+expectedResult; Ştöber Zazilia Hamiş
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Zazilia Hamiş Ştöber
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Zazilia H. Ştöber
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Zazilia Ştöber
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Z. H. Ştöber
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Zazilia Åž.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Zazilia
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+
+expectedResult; Ştöber
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; ÅžZH
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; ZHÅž
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; ÅžZ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ZÅž
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; Åž
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+
+expectedResult; Z
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; Prof. Dr.
+name ; given; Ada Kornelia
+name ; given-informal; Neele
+name ; given2; Sezar Martin
+name ; surname-prefix; van den
+name ; surname-core; Volf
+name ; surname2; Becker Schmidt
+name ; generation; Kiçik
+name ; credentials; M.D. Ph.D.
+name ; locale; ko_AQ
+
+expectedResult; van den Volf Becker Schmidt, Prof. Dr. Ada Kornelia Sezar Martin M.D. Ph.D.
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Prof. Dr. Ada Kornelia Sezar Martin van den Volf Becker Schmidt M.D. Ph.D.
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; van den Volf Ada Kornelia Sezar Martin M.D. Ph.D.
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Ada Kornelia S. M. van den Volf M.D. Ph.D.
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; A. K. S. M. van den Volf
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Prof. Dr. van den Volf
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; Neele van den Volf
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Neele v. d. V.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Neele
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+
+expectedResult; ASV
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; VAS
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; NV
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VN
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; N
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/be.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/be.txt
new file mode 100644
index 00000000000..5be3444c897
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/be.txt
@@ -0,0 +1,762 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: be
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; ВаÑіль
+name ; locale; be_AQ
+
+expectedResult; ВаÑіль
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ð’
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Ірына
+name ; surname; Ðлейнік
+name ; locale; be_AQ
+
+expectedResult; Ðлейнік, Ірына
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ðлейнік Ірына
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Ірына Ðлейнік
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Ðлейнік І.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; І. Ðлейнік
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Ірына Ð.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Ðлейнік
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Ірына
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ÐІ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ІÐ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; Ð
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; І
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; Вольга
+name ; given2; Караліна
+name ; surname; РавенÑкаÑ
+name ; locale; be_AQ
+
+expectedResult; РавенÑкаÑ, Вольга Караліна
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; Вольга Караліна РавенÑкаÑ
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; РавенÑÐºÐ°Ñ Ð’Ð¾Ð»ÑŒÐ³Ð° Караліна
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; РавенÑкаÑ, Вольга
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Вольга РавенÑкаÑ
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; РавенÑÐºÐ°Ñ Ð’Ð¾Ð»ÑŒÐ³Ð°
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Ð’. К. РавенÑкаÑ
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; РавенÑÐºÐ°Ñ Ð’. К.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; РавенÑÐºÐ°Ñ Ð’.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Вольга Р.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; РавенÑкаÑ
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Вольга
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ВКР
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; РВК
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ВР
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; РВ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; Ð’
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; Р
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; Сп.
+name ; given; Мікалай
+name ; given-informal; МіхаÑÑŒ
+name ; given2; ÐлÑкÑандр
+name ; surname-core; Кавалёў
+name ; locale; be_AQ
+
+expectedResult; Кавалёў, Мікалай ÐлÑкÑандр
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; Кавалёў Мікалай ÐлÑкÑандр
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Мікалай ÐлÑкÑандр Кавалёў
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Кавалёў, МіхаÑÑŒ
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Кавалёў МіхаÑÑŒ
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; МіхаÑÑŒ Кавалёў
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Кавалёў Ðœ. Ð.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Ðœ. Ð. Кавалёў
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Сп. Кавалёў
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Кавалёў М.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; МіхаÑÑŒ К.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; МіхаÑÑŒ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; КМÐ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ÐœÐК
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; КМ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; МК
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; К
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; М
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; Сіндбад
+name ; locale; ja_AQ
+
+expectedResult; Сіндбад
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; С
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; КетÑ
+name ; surname; Мюлер
+name ; locale; ja_AQ
+
+expectedResult; Мюлер, КетÑ
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ÐšÐµÑ‚Ñ ÐœÑŽÐ»ÐµÑ€
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Мюлер КетÑ
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; К. Мюлер
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Мюлер К.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ÐšÐµÑ‚Ñ Ðœ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Мюлер
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; КетÑ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; КМ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; МК
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; К
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; М
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; ЗазіліÑ
+name ; given2; Ð¥Ñміш
+name ; surname; Шцёбер
+name ; locale; ja_AQ
+
+expectedResult; Шцёбер, Ð—Ð°Ð·Ñ–Ð»Ñ–Ñ Ð¥Ñміш
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; Ð—Ð°Ð·Ñ–Ð»Ñ–Ñ Ð¥Ñміш Шцёбер
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Шцёбер Ð—Ð°Ð·Ñ–Ð»Ñ–Ñ Ð¥Ñміш
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Шцёбер, ЗазіліÑ
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ð—Ð°Ð·Ñ–Ð»Ñ–Ñ Ð¨Ñ†Ñ‘Ð±ÐµÑ€
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Шцёбер ЗазіліÑ
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; З. Х. Шцёбер
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Шцёбер З. Х.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Ð—Ð°Ð·Ñ–Ð»Ñ–Ñ Ð¨.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Шцёбер З.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ЗазіліÑ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Шцёбер
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ЗХШ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; ШЗХ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ЗШ
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; ШЗ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; З
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; Ш
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignFull
+name ; title; праф., д-р
+name ; given; Ðда КарнÑліÑ
+name ; given-informal; Ðіл
+name ; given2; СеÑар Марцін
+name ; surname-prefix; фон
+name ; surname-core; Бруль
+name ; surname2; ГанÑÐ°Ð»ÐµÑ Ð”Ð°Ð¼Ñ–Ð½Ð³Ð°
+name ; generation; мал.
+name ; credentials; д-р
+name ; locale; ja_AQ
+
+expectedResult; Ðда КарнÑÐ»Ñ–Ñ Ð¡ÐµÑар Марцін фон Бруль д-Ñ€
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; фон Бруль Ðда КарнÑÐ»Ñ–Ñ Ð¡ÐµÑар Марцін д-Ñ€
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Бруль, Ðда КарнÑÐ»Ñ–Ñ Ð¡ÐµÑар Марцін фон
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; Ð. К. С. Ðœ. фон Бруль
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; фон Бруль Ð. К. С. Ðœ.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; праф., д-р фон Бруль
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; фон Бруль Ð. К.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; фон Бруль, Ðіл
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ðіл фон Бруль
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; фон Бруль Ðіл
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Ðіл Ñ„. Б.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ÐСФ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; Ðіл
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ФÐС
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ÐФ
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; ФÐ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; Ð
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; Ф
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/bg.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/bg.txt
new file mode 100644
index 00000000000..78861df6cea
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/bg.txt
@@ -0,0 +1,766 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: bg
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Иван
+name ; locale; bg_AQ
+
+expectedResult; Иван
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; И
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; МариÑ
+name ; surname; Петрова
+name ; locale; bg_AQ
+
+expectedResult; Петрова, МариÑ
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+
+expectedResult; ÐœÐ°Ñ€Ð¸Ñ ÐŸÐµÑ‚Ñ€Ð¾Ð²Ð°
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Петрова МариÑ
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Петрова, М.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; М. Петрова
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ÐœÐ°Ñ€Ð¸Ñ ÐŸ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Петрова
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; МариÑ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; МП
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+
+expectedResult; ПМ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; М
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; П
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeGGS
+name ; given; Ðна
+name ; given2; Иванова
+name ; surname; Димитрова
+name ; locale; bg_AQ
+
+expectedResult; Димитрова, Ðна Иванова
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+
+expectedResult; Ðна Иванова Димитрова
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Димитрова, Ðна И.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Димитрова Ðна И.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Димитрова, Ð. И.
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; Ð. И. Димитрова
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Димитрова, Ðна
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+
+expectedResult; Ðна Димитрова
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Димитрова, Ð.
+
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Димитрова
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Ðна Д.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ÐИД
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+
+expectedResult; Ðна
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ДÐИ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ДÐ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; Ð
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; Д
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; г-н
+name ; given; Иван
+name ; given-informal; Ванко
+name ; given2; ÐÑен
+name ; surname-prefix; фон
+name ; surname-core; Вернер
+name ; surname2; Иванов
+name ; generation; младши
+name ; credentials; проф. д-р
+name ; locale; bg_AQ
+
+expectedResult; фон Вернер Иван Ð. младши, проф. д-Ñ€
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; г-н Вернер, Иван ÐÑен, проф. д-Ñ€
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; г-н Иван ÐÑен Вернер, проф. д-Ñ€
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Вернер, Иван ÐÑен фон
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Вернер, Иван Ð. фон
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Вернер, И. Ð. фон
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Вернер, И. Ð.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Вернер, Иван
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+
+expectedResult; И. Ð. Вернер
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Иван Вернер
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Вернер, И.
+
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; г-н Вернер
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Иван В.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Иван
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ВИÐ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ИÐÐ’
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+
+expectedResult; ВИ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; Ð’
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; И
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; Джон
+name ; locale; ja_AQ
+
+expectedResult; Джон
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Д
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Кати
+name ; surname; Мюлер
+name ; locale; ja_AQ
+
+expectedResult; Мюлер, Кати
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+
+expectedResult; Кати Мюлер
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Мюлер Кати
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Мюлер, К.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; К. Мюлер
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Кати М.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Мюлер
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Кати
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; КМ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+
+expectedResult; МК
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; К
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; М
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Зара
+name ; given2; Мери
+name ; surname; ДжоунÑ
+name ; locale; ja_AQ
+
+expectedResult; ДжоунÑ, Зара Мери
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+
+expectedResult; Зара Мери ДжоунÑ
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; ДжоунÑ, Зара Ðœ.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Ð”Ð¶Ð¾ÑƒÐ½Ñ Ð—Ð°Ñ€Ð° Ðœ.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; ДжоунÑ, З. Ðœ.
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; ДжоунÑ, Зара
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+
+expectedResult; З. Ðœ. ДжоунÑ
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Зара ДжоунÑ
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; ДжоунÑ, З.
+
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Зара Д.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ДжоунÑ
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Зара
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ДЗМ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ЗМД
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+
+expectedResult; ДЗ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; Д
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; З
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; проф. д-р
+name ; given; Ðда КорнелиÑ
+name ; given-informal; Ðди
+name ; given2; Цезар Мартин
+name ; surname-prefix; фон
+name ; surname-core; Брюл
+name ; surname2; Ð“Ð¾Ð½Ð·Ð°Ð»ÐµÑ Ð”Ð¾Ð¼Ð¸Ð½Ð³Ð¾
+name ; generation; младша
+name ; credentials; доктор
+name ; locale; ja_AQ
+
+expectedResult; проф. д-Ñ€ Брюл, Ðда ÐšÐ¾Ñ€Ð½ÐµÐ»Ð¸Ñ Ð¦ÐµÐ·Ð°Ñ€ Мартин, доктор
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; проф. д-Ñ€ Ðда ÐšÐ¾Ñ€Ð½ÐµÐ»Ð¸Ñ Ð¦ÐµÐ·Ð°Ñ€ Мартин Брюл, доктор
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; фон Брюл Ðда ÐšÐ¾Ñ€Ð½ÐµÐ»Ð¸Ñ Ð¦. Ðœ. младша, доктор
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Брюл, Ðда ÐšÐ¾Ñ€Ð½ÐµÐ»Ð¸Ñ Ð¦ÐµÐ·Ð°Ñ€ Мартин фон
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Брюл, Ðда ÐšÐ¾Ñ€Ð½ÐµÐ»Ð¸Ñ Ð¦. Ðœ. фон
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Брюл, Ð. К. Ц. Ðœ. фон
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Брюл, Ðда КорнелиÑ
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+
+expectedResult; Ðда ÐšÐ¾Ñ€Ð½ÐµÐ»Ð¸Ñ Ð‘Ñ€ÑŽÐ»
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Брюл, Ð. К. Ц. Ðœ.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Ð. К. Ц. Ðœ. Брюл
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Ðда ÐšÐ¾Ñ€Ð½ÐµÐ»Ð¸Ñ Ð‘.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; проф. д-р Брюл
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Ðда КорнелиÑ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Брюл, Ð. К.
+
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; ÐЦБ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+
+expectedResult; БÐЦ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; БÐ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; Ð
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; Б
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/bn.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/bn.txt
new file mode 100644
index 00000000000..50982f61a40
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/bn.txt
@@ -0,0 +1,584 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: bn
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; জেনদায়া
+name ; locale; bn_AQ
+
+expectedResult; জেনদায়া
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; জে
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; আইরিন
+name ; surname; চৌধà§à¦°à§€
+name ; locale; bn_AQ
+
+expectedResult; আইরিন চৌধà§à¦°à§€
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; চৌধà§à¦°à§€ আইরিন
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; চৌধà§à¦°à§€
+
+parameters; givenFirst; long; addressing; formal
+
+expectedResult; আচৌ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; চৌআ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; মেরি সà§
+name ; given2; হামিশ
+name ; surname; রহমান
+name ; locale; bn_AQ
+
+expectedResult; মেরি সৠহামিশ রহমান
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; রহমান মেরি সৠহামিশ
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; মেহার
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; রমেহা
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; রহমান
+
+parameters; givenFirst; long; addressing; formal
+
+endName
+
+# nativeFull
+name ; title; জনাব
+name ; given; à¦à¦®à¦¦à¦¾à¦¦ আলি
+name ; given-informal; বরà§à¦¨
+name ; given2; অনিল কà§à¦®à¦¾à¦°
+name ; surname-core; গাঙà§à¦—à§à¦²à§€
+name ; generation; জà§à¦¨à¦¿à¦¯à¦¼à¦°
+name ; credentials; à¦à¦®à¦ªà¦¿
+name ; locale; bn_AQ
+
+expectedResult; গাঙà§à¦—à§à¦²à§€ জনাব à¦à¦®à¦¦à¦¾à¦¦ আলি অনিল কà§à¦®à¦¾à¦° à¦à¦®à¦ªà¦¿
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; addressing; formal
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; জনাব à¦à¦®à¦¦à¦¾à¦¦ আলি অনিল কà§à¦®à¦¾à¦° গাঙà§à¦—à§à¦²à§€ à¦à¦®à¦ªà¦¿
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; à¦à¦®à¦¦à¦¾à¦¦ আলি অনিল কà§à¦®à¦¾à¦° গাঙà§à¦—à§à¦²à§€
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; গাঙà§à¦—à§à¦²à§€ à¦à¦®à¦¦à¦¾à¦¦ আলি অনিল কà§à¦®à¦¾à¦°
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; জনাব গাঙà§à¦—à§à¦²à§€
+
+parameters; givenFirst; long; addressing; formal
+
+expectedResult; à¦à¦…গা
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; গাà¦à¦…
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; সিনবাদ
+name ; locale; ko_AQ
+
+expectedResult; সিনবাদ
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; সি
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; কিরণ
+name ; surname; আহমেদ
+name ; locale; ko_AQ
+
+expectedResult; আহমেদ কিরণ
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; কিরণ আহমেদ
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; আহমেদ
+
+parameters; givenFirst; long; addressing; formal
+
+expectedResult; আকি
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; কিআ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+endName
+
+# foreignGGS
+name ; given; জাজিলিয়া
+name ; given2; হামিশ
+name ; surname; মà§à¦¨à§à¦¸à¦¿
+name ; locale; ko_AQ
+
+expectedResult; জাজিলিয়া হামিশ মà§à¦¨à§à¦¸à¦¿
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; মà§à¦¨à§à¦¸à¦¿ জাজিলিয়া হামিশ
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; জাহামà§
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; মà§à¦œà¦¾à¦¹à¦¾
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; মà§à¦¨à§à¦¸à¦¿
+
+parameters; givenFirst; long; addressing; formal
+
+endName
+
+# foreignFull
+name ; title; পà§à¦°à¦ƒ ডঃ
+name ; given; আদিরা
+name ; given-informal; নীলা
+name ; given2; ইভা সোফিয়া
+name ; surname-prefix; রহমান
+name ; surname-core; আলি
+name ; surname2; তালà§à¦•à¦¦à¦¾à¦°
+name ; generation; জà§à¦¨à¦¿à¦¯à¦¼à¦°
+name ; credentials; à¦à¦®.ডি.পিà¦à¦‡à¦š.ডি.
+name ; locale; ko_AQ
+
+expectedResult; রহমান আলি তালà§à¦•à¦¦à¦¾à¦°, পà§à¦°à¦ƒ ডঃ আদিরা ইভা সোফিয়া à¦à¦®.ডি.পিà¦à¦‡à¦š.ডি.
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; পà§à¦°à¦ƒ ডঃ আদিরা ইভা সোফিয়া রহমান আলি তালà§à¦•à¦¦à¦¾à¦° à¦à¦®.ডি.পিà¦à¦‡à¦š.ডি.
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; রহমান আলি তালà§à¦•à¦¦à¦¾à¦° পà§à¦°à¦ƒ ডঃ আদিরা ইভা সোফিয়া à¦à¦®.ডি.পিà¦à¦‡à¦š.ডি.
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; রহমান আলি তালà§à¦•à¦¦à¦¾à¦°, আদিরা ইভা সোফিয়া
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; আদিরা ইভা সোফিয়া রহমান আলি তালà§à¦•à¦¦à¦¾à¦°
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; রহমান আলি তালà§à¦•à¦¦à¦¾à¦° আদিরা ইভা সোফিয়া
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; পà§à¦°à¦ƒ ডঃ রহমান আলি
+
+parameters; givenFirst; long; addressing; formal
+
+expectedResult; আইর
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; রআই
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/bs.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/bs.txt
new file mode 100644
index 00000000000..c6687f31c14
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/bs.txt
@@ -0,0 +1,779 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: bs
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Sinbad
+name ; locale; bs_AQ
+
+expectedResult; Sinbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Razija
+name ; surname; Mujanović
+name ; locale; bs_AQ
+
+expectedResult; Mujanović, Razija
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Mujanović Razija
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; Razija Mujanović
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Mujanović R.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; short; referring; formal
+
+expectedResult; R. Mujanović
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Mujanović
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Razija M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Razija
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; MR
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; RM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+
+expectedResult; M
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; R
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; Silvije
+name ; given2; Strahimir
+name ; surname; KranjÄević
+name ; locale; bs_AQ
+
+expectedResult; KranjÄević Silvije Strahimir
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+
+expectedResult; Silvije Strahimir KranjÄević
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; addressing; formal
+
+expectedResult; KranjÄević Silvije S.
+
+parameters; surnameFirst; medium; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; Silvije S. KranjÄević
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; KranjÄević, Silvije
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; KranjÄević Silvije
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Silvije KranjÄević
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; KranjÄević S. S.
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; S. S. KranjÄević
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; KranjÄević S.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; KranjÄević
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Silvije K.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Silvije
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; KSS
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; SSK
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+
+expectedResult; KS
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeFull
+name ; title; g.
+name ; given; Adnan
+name ; given-informal; Ado
+name ; given2; Mirza
+name ; surname-core; Hodžić
+name ; generation; ml.
+name ; credentials; zastupnik u parlamentu
+name ; locale; bs_AQ
+
+expectedResult; g. Hodžić Adnan Mirza, zastupnik u parlamentu
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+
+expectedResult; g. Adnan Mirza Hodžić zastupnik u parlamentu
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; addressing; formal
+
+expectedResult; g. Adnan M. Hodžić, zastupnik u parlamentu
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; g. Hodžić Adnan M., zastupnik u parlamentu
+
+parameters; surnameFirst; medium; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; g. A. M. Hodžić zastupnik u parlamentu
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; g. Hodžić A. M.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; g. Hodžić A.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Hodžić A. M.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Hodžić Adnan
+
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Hodžić, Ado
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ado Hodžić
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Hodžić Ado
+
+parameters; surnameFirst; long; referring; informal
+
+expectedResult; g. Hodžić
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Ado H.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Ado
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; AMH
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+
+expectedResult; HAM
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; HA
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; H
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; Sinbad
+name ; locale; ko_AQ
+
+expectedResult; Sinbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Käthe
+name ; surname; Müller
+name ; locale; ko_AQ
+
+expectedResult; Müller, Käthe
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Käthe Müller
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Müller Käthe
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; K. Müller
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Müller K.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; short; referring; formal
+
+expectedResult; Käthe M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Müller
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Käthe
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Zäzilia
+name ; given2; Hamish
+name ; surname; Stöber
+name ; locale; ko_AQ
+
+expectedResult; Stöber Zäzilia Hamish
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+
+expectedResult; Zäzilia Hamish Stöber
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; addressing; formal
+
+expectedResult; Stöber Zäzilia H.
+
+parameters; surnameFirst; medium; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; Zäzilia H. Stöber
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Stöber, Zäzilia
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Stöber Zäzilia
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Zäzilia Stöber
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Stöber Z. H.
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; Z. H. Stöber
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Zäzilia S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Stöber Z.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Zäzilia
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Stöber
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; SZH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ZHS
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+
+expectedResult; SZ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Z
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; prof. dr.
+name ; given; Izeta
+name ; given-informal; Beba
+name ; given2; Amra
+name ; surname-prefix; von
+name ; surname-core; Selimović
+name ; surname2; Hodžić
+name ; generation; ml.
+name ; credentials; dipl. stom.
+name ; locale; ko_AQ
+
+expectedResult; prof. dr. von Selimović Hodžić, Izeta Amra, dipl. stom.
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+
+expectedResult; prof. dr. Izeta Amra von Selimović Hodžić, dipl. stom.
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; addressing; formal
+
+expectedResult; prof. dr. von Selimović Hodžić, Izeta A., dipl. stom.
+
+parameters; surnameFirst; medium; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; prof. dr. I. A. von Selimović Hodžić, dipl. stom.
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; prof. dr. Izeta A. von Selimović, dipl. stom.
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; prof. dr. von Selimović Hodžić, I. A.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; prof. dr. von Selimović Hodžić, I.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; von Selimović Hodžić, I. A.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; von Selimović Hodžić, Izeta
+
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; von Selimović Hodžić, Beba
+
+parameters; surnameFirst; long; referring; informal
+
+expectedResult; prof. dr. von Selimović
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; von Selimović, Beba
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Beba von Selimović
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Beba v. S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Beba
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; IAV
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+
+expectedResult; VIA
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; VB
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; VH
+
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; B
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ca.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ca.txt
new file mode 100644
index 00000000000..259fec0cb8c
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ca.txt
@@ -0,0 +1,786 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: ca
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Carolina
+name ; locale; ca_AQ
+
+expectedResult; Carolina
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; C
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Gal·la
+name ; surname; Roig
+name ; locale; ca_AQ
+
+expectedResult; Roig, Gal·la
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; Gal·la Roig
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Roig Gal·la
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Gal·la R.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; G. Roig
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Roig G.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Gal·la
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Roig
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; GR
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; RG
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; G
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; R
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeGGS
+name ; given; Rosa Maria
+name ; given2; Ferran
+name ; surname; Ferrer
+name ; locale; ca_AQ
+
+expectedResult; Ferrer, Rosa Maria Ferran
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ferrer Rosa Maria Ferran
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Rosa Maria Ferran Ferrer
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Ferrer Rosa Maria F.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Ferrer Rosa Maria
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Rosa Maria Ferrer
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Ferrer R. M. F.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; R. M. F. Ferrer
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Rosa Maria F.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Ferrer R. M.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Rosa Maria
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Ferrer
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; FRF
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; RFF
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; FR
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; RF
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; F
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; R
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeFull
+name ; title; Sr.
+name ; given; Josep Antoni
+name ; given-informal; Pep
+name ; given2; Carles Joan
+name ; surname-core; Lloret
+name ; surname2; Palol
+name ; generation; II
+name ; credentials; Excm.
+name ; locale; ca_AQ
+
+expectedResult; Excm. Sr. Lloret Palol II, Josep Antoni Carles Joan
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Excm. Sr. Josep Antoni Carles Joan Lloret Palol II
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Excm. Sr. Josep Antoni Carles Joan Lloret Palol
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Excm. Lloret Palol II, Josep Antoni C. J.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Lloret Palol, Josep Antoni Carles Joan
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Lloret Palol, Josep Antoni C. J.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Lloret Palol, J. A. C. J.
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; J. A. C. J. Lloret Palol
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Lloret Palol, J. A.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Lloret Palol, Pep
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Pep Lloret Palol
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Sr. Lloret Palol
+
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Sr. Lloret
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; Pep L.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; JCL
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; LJC
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; Pep
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; LP
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; PL
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; L
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; P
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; Iñaki
+name ; locale; ko_AQ
+
+expectedResult; Iñaki
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; I
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Jacqueline
+name ; surname; Beauchêne
+name ; locale; ko_AQ
+
+expectedResult; Beauchêne, Jacqueline
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; Beauchêne Jacqueline
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Jacqueline Beauchêne
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Jacqueline B.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Beauchêne J.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; J. Beauchêne
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Jacqueline
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Beauchêne
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; BJ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; JB
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; B
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; J
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGGS
+name ; given; Adrian
+name ; given2; Dragos
+name ; surname; Ionescu
+name ; locale; ko_AQ
+
+expectedResult; Ionescu, Adrian Dragos
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Adrian Dragos Ionescu
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Ionescu Adrian Dragos
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Ionescu Adrian D.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Adrian Ionescu
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Ionescu Adrian
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; A. D. Ionescu
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Ionescu A. D.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Ionescu A.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Adrian I.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Ionescu
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Adrian
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ADI
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; IAD
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; AI
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; IA
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; I
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignFull
+name ; title; Dra.
+name ; given; Maria da Graça
+name ; given-informal; Lise
+name ; given2; César Martín
+name ; surname-prefix; van
+name ; surname-core; Dalen
+name ; surname2; Hoogeveen
+name ; generation; II
+name ; credentials; Excma.
+name ; locale; ko_AQ
+
+expectedResult; Excma. Dra. Van Dalen Hoogeveen II, Maria da Graça César Martín
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Excma. Dra. Maria da Graça César Martín van Dalen Hoogeveen II
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Excma. Dra. Maria da Graça César Martín van Dalen Hoogeveen
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Excma. van Dalen Hoogeveen II, Maria da Graça C. M.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Van Dalen Hoogeveen, Maria da Graça César Martín
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Van Dalen Hoogeveen, Maria da Graça C. M.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Van Dalen Hoogeveen, M. d. G. C. M.
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; M. d. G. C. M. van Dalen Hoogeveen
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Van Dalen Hoogeveen, M. d. G.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Van Dalen Hoogeveen, Lise
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Dra. Van Dalen Hoogeveen
+
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Lise van Dalen Hoogeveen
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Dra. van Dalen
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; Lise v. D.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Lise
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; MCV
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; VMC
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; LV
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VL
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; D
+
+parameters; givenFirst; short; monogram; formal
+
+expectedResult; L
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/catalog.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/catalog.txt
new file mode 100644
index 00000000000..55f5de7cdda
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/catalog.txt
@@ -0,0 +1,122 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+af.txt
+am.txt
+ar.txt
+as.txt
+az.txt
+be.txt
+bg.txt
+bn.txt
+bs.txt
+ca.txt
+chr.txt
+cs.txt
+cy.txt
+da.txt
+de.txt
+de_CH.txt
+dsb.txt
+el.txt
+en.txt
+en_AU.txt
+en_CA.txt
+en_GB.txt
+en_IN.txt
+es.txt
+es_419.txt
+es_MX.txt
+es_US.txt
+et.txt
+eu.txt
+fa.txt
+fi.txt
+fil.txt
+fr.txt
+fr_CA.txt
+ga.txt
+gd.txt
+gl.txt
+gu.txt
+ha.txt
+ha_NE.txt
+he.txt
+hi.txt
+hi_Latn.txt
+hr.txt
+hsb.txt
+hu.txt
+hy.txt
+id.txt
+ig.txt
+is.txt
+it.txt
+ja.txt
+jv.txt
+ka.txt
+kk.txt
+km.txt
+kn.txt
+ko.txt
+kok.txt
+ky.txt
+lo.txt
+lt.txt
+lv.txt
+mk.txt
+ml.txt
+mn.txt
+mr.txt
+ms.txt
+my.txt
+ne.txt
+nl.txt
+nn.txt
+no.txt
+or.txt
+pa.txt
+pl.txt
+ps.txt
+pt.txt
+pt_PT.txt
+qu.txt
+ro.txt
+ru.txt
+sc.txt
+sd.txt
+si.txt
+sk.txt
+sl.txt
+so.txt
+sq.txt
+sr.txt
+sr_Cyrl_BA.txt
+sr_Latn.txt
+sr_Latn_BA.txt
+sv.txt
+sw.txt
+sw_KE.txt
+ta.txt
+te.txt
+tg.txt
+th.txt
+ti.txt
+tk.txt
+tr.txt
+uk.txt
+ur.txt
+uz.txt
+vi.txt
+wo.txt
+yo.txt
+yo_BJ.txt
+yue.txt
+yue_Hans.txt
+zh.txt
+zh_Hant.txt
+zh_Hant_HK.txt
+zu.txt \ No newline at end of file
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/chr.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/chr.txt
new file mode 100644
index 00000000000..d1941bac64b
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/chr.txt
@@ -0,0 +1,781 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: chr
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Ꭸá“á¯
+name ; locale; chr_AQ
+
+expectedResult; Ꭸá“á¯
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ꭸ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Ꭰáªá
+name ; surname; Ꭰá•áŽ¸
+name ; locale; chr_AQ
+
+expectedResult; Ꭰá•áŽ¸, Ꭰáªá
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ꭰá•áŽ¸ Ꭰáªá
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Ꭰá•áŽ¸, Ꭰ.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Ꭰáªá Ꭰá•áŽ¸
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Ꭰá•áŽ¸ Ꭰ.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Ꭰáªá Ꭰ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Ꭰá•áŽ¸
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Ꭰáªá
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ᎠᎠ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; Ꭰ
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; ᎺᎵ á‘Ꭲ
+name ; given2; ᎭᎻá
+name ; surname; á©á”á’Ꭲ
+name ; locale; chr_AQ
+
+expectedResult; á©á”á’Ꭲ, ᎺᎵ á‘Ꭲ ᎭᎻá
+
+parameters; sorting; long; referring; formal
+
+expectedResult; ᎺᎵ á‘Ꭲ ᎭᎻá á©á”á’Ꭲ
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; short; referring; formal
+
+expectedResult; á©á”á’Ꭲ ᎺᎵ á‘Ꭲ ᎭᎻá
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; á©á”á’Ꭲ, Ꮊ. á‘. Ꭽ.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; á©á”á’Ꭲ, ᎺᎵ á‘Ꭲ Ꭽ.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; ᎺᎵ á‘Ꭲ Ꭽ. á©á”á’Ꭲ
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; á©á”á’Ꭲ ᎺᎵ á‘Ꭲ Ꭽ.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; á©á”á’Ꭲ, ᎺᎵ á‘Ꭲ
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; ᎺᎵ á‘Ꭲ á©á”á’Ꭲ
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; á©á”á’Ꭲ Ꮊ. á‘.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; á©á”á’Ꭲ ᎺᎵ á‘Ꭲ
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; ᎺᎵ á‘Ꭲ á©.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ᎺᎵ á‘Ꭲ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; á©á”á’Ꭲ
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ᎺᎭá©
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; á©áŽºáŽ­
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; Ꮊá©
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; á©áŽº
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; Ꮊ
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; á©
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; Ꮋáá–Ꭲ
+name ; given; á‡á”Ꮋ á«á‡á‰á
+name ; given-informal; á‡á˜
+name ; given2; Ꭾá‚ᇠá†á‡á˜
+name ; surname-core; á¬áá–Ꭲ
+name ; generation; á”Ꮅá
+name ; credentials; Ꮇá¢
+name ; locale; chr_AQ
+
+expectedResult; Ꮋáá–Ꭲ á‡á”Ꮋ á«á‡á‰á Ꭾá‚ᇠá†á‡á˜ á¬áá–Ꭲ á”Ꮅá, Ꮇá¢
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; short; referring; formal
+
+expectedResult; á¬áá–Ꭲ Ꮋáá–Ꭲ á‡á”Ꮋ á«á‡á‰á Ꭾá‚ᇠá†á‡á˜ á”Ꮅá, Ꮇá¢
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; á‡á”Ꮋ á«á‡á‰á Ꭾ. á†. á¬áá–Ꭲ á”Ꮅá, Ꮇá¢
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; á¬áá–Ꭲ á‡á”Ꮋ á«á‡á‰á Ꭾ. á†. á”Ꮅá, Ꮇá¢
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; á¬áá–Ꭲ, á‡á”Ꮋ á«á‡á‰á Ꭾá‚ᇠá†á‡á˜
+
+parameters; sorting; long; referring; formal
+
+expectedResult; á¬áá–Ꭲ, á‡á”Ꮋ á«á‡á‰á Ꭾ. á†.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; á¬áá–Ꭲ, á‡. á«. Ꭾ. á†.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; á¬áá–Ꭲ á‡. á«.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Ꮋáá–Ꭲ á¬áá–Ꭲ
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; á¬áá–Ꭲ, á‡á˜
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; á‡á˜ á¬áá–Ꭲ
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; á¬áá–Ꭲ á‡á˜
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; á‡á˜ á¬.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; á‡áŽ®á¬
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; á¬á‡áŽ®
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; á‡á˜
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; á‡á¬
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; á¬á‡
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; á‡
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; á¬
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; áᎾá†á—
+name ; locale; ja_AQ
+
+expectedResult; áᎾá†á—
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; á
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Ꭷá–
+name ; surname; ᎽᎴ
+name ; locale; ja_AQ
+
+expectedResult; ᎽᎴ, Ꭷ.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; ᎽᎴ, Ꭷá–
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; ᎧᖠᎽ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ᎧᖠᎽᎴ
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ᎽᎴ Ꭷ.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ᎽᎴ Ꭷá–
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; ᎧᎽ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; Ꭷá–
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ᎽᎧ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ᎽᎴ
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Ꭷ
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; Ꮍ
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; á†áᎵ
+name ; given2; ᎭᎻáᎯ
+name ; surname; áá™á‡áŽ¢
+name ; locale; ja_AQ
+
+expectedResult; áá™á‡áŽ¢, á†áᎵ ᎭᎻáᎯ
+
+parameters; sorting; long; referring; formal
+
+expectedResult; á†áᎵ ᎭᎻáᎯ áá™á‡áŽ¢
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; short; referring; formal
+
+expectedResult; áá™á‡áŽ¢ á†áᎵ ᎭᎻáᎯ
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; áá™á‡áŽ¢, á†áᎵ Ꭽ.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; á†áᎵ Ꭽ. áá™á‡áŽ¢
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; áá™á‡áŽ¢ á†áᎵ Ꭽ.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; áá™á‡áŽ¢, á†. Ꭽ.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; áá™á‡áŽ¢, á†áᎵ
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; á†áᎵ áá™á‡áŽ¢
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; áá™á‡áŽ¢ á†áᎵ
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; áá™á‡áŽ¢ á†.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; á†áᎵ á.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; áá™á‡áŽ¢
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; á†áŽ­á
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; á†áᎵ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; áá†áŽ­
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; á†á
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; áá†
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; á†
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; á
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignFull
+name ; title; á‰. á…á¬á˜
+name ; given; ᎠᓠᎪáᎵᎠ
+name ; given-informal; áᎴ
+name ; given2; áጠᎹá˜á‚
+name ; surname-prefix; á‰á‚
+name ; surname-core; á‡áŽ¯
+name ; generation; á”Ꮅá
+name ; credentials; ᎷᎠ ᎠᎠáš
+name ; locale; ja_AQ
+
+expectedResult; á‰. á…á¬á˜ ᎠᓠᎪáᎵᎠ áጠᎹá˜á‚ á‰á‚ á‡áŽ¯ á”Ꮅá, ᎷᎠ ᎠᎠáš
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; short; referring; formal
+
+expectedResult; á‰á‚ á‡áŽ¯ á‰. á…á¬á˜ ᎠᓠᎪáᎵᎠ áጠᎹá˜á‚ á”Ꮅá, ᎷᎠ ᎠᎠáš
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; ᎠᓠᎪáᎵᎠ á. Ꮉ. á‰á‚ á‡áŽ¯ á”Ꮅá, ᎷᎠ ᎠᎠáš
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; á‰á‚ á‡áŽ¯ ᎠᓠᎪáᎵᎠ á. Ꮉ. á”Ꮅá, ᎷᎠ ᎠᎠáš
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; á‡áŽ¯, ᎠᓠᎪáᎵᎠ áጠᎹá˜á‚ á‰á‚
+
+parameters; sorting; long; referring; formal
+
+expectedResult; á‡áŽ¯, ᎠᓠᎪáᎵᎠ á. Ꮉ. á‰á‚
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; á‡áŽ¯, Ꭰ. Ꭺ. á. Ꮉ. á‰á‚
+
+parameters; sorting; short; referring; formal
+
+expectedResult; á‰. á…á¬á˜ á‰á‚ á‡áŽ¯
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; á‰á‚ á‡áŽ¯ Ꭰ. Ꭺ.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; á‰á‚ á‡áŽ¯, áᎴ
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; áᎴ á‰. á‡.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; áᎴ á‰á‚ á‡áŽ¯
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; á‰á‚ á‡áŽ¯ áᎴ
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Ꭰáá‰
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; á‰áŽ á
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; áᎴ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; áá‰
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; á‰á
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; á
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; á‰
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/cs.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/cs.txt
new file mode 100644
index 00000000000..56e0c62890c
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/cs.txt
@@ -0,0 +1,783 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: cs
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Jiří
+name ; locale; cs_AQ
+
+expectedResult; Jiří
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; J
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Jana
+name ; surname; Nováková
+name ; locale; cs_AQ
+
+expectedResult; Nováková, Jana
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+
+expectedResult; Jana Nováková
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Nováková Jana
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Nováková, J.
+
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Nováková
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Jana
+
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; JN
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; NJ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; J
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; N
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeGGS
+name ; given; Josef
+name ; given2; Václav
+name ; surname; Svoboda
+name ; locale; cs_AQ
+
+expectedResult; Svoboda, Josef Václav
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Josef Václav Svoboda
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; addressing; formal
+
+expectedResult; Svoboda Josef Václav
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; addressing; formal
+
+expectedResult; Svoboda, Josef V.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Svoboda, J. V.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Svoboda, Josef
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+
+expectedResult; Josef Svoboda
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Svoboda Josef
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Svoboda, J.
+
+parameters; sorting; short; referring; informal
+
+expectedResult; Svoboda
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Josef
+
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; JVS
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; SJV
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; JS
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; SJ
+
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; J
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; paní
+name ; given; Alexandra
+name ; given-informal; Saša
+name ; given2; Zuzana
+name ; surname-core; Machová
+name ; surname2; Ondřejová
+name ; generation; st.
+name ; credentials; Ph.D.
+name ; locale; cs_AQ
+
+expectedResult; paní Alexandra Zuzana Machová Ondřejová, Ph.D.
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; paní Machová Ondřejová Alexandra Zuzana, Ph.D.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Machová, Alexandra Zuzana (paní, Ph.D.)
+
+parameters; sorting; long; referring; formal
+
+expectedResult; paní Alexandra Zuzana Machová Ondřejová
+
+parameters; givenFirst; long; addressing; formal
+
+expectedResult; paní Machová Ondřejová Alexandra Zuzana
+
+parameters; surnameFirst; long; addressing; formal
+
+expectedResult; paní Alexandra Machová
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; paní Machová Alexandra
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Machová, Alexandra Z.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Machová, A. Z.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Machová, Saša
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+
+expectedResult; Machová Saša
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; paní Machová
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; referring; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Saša Machová
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Machová, S.
+
+parameters; sorting; short; referring; informal
+
+expectedResult; Machová
+
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Saša
+
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; AZM
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; MAZ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; AM
+
+parameters; givenFirst; medium; monogram; formal
+
+expectedResult; MA
+
+parameters; surnameFirst; medium; monogram; formal
+
+expectedResult; MS
+
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; SM
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; S
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; Jack
+name ; locale; ko_AQ
+
+expectedResult; Jack
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; J
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Käthe
+name ; surname; Müller
+name ; locale; ko_AQ
+
+expectedResult; Müller, Käthe
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+
+expectedResult; Käthe Müller
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Müller Käthe
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Müller, K.
+
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Müller
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Käthe
+
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Zäzilia
+name ; given2; Hamish
+name ; surname; Stöber
+name ; locale; ko_AQ
+
+expectedResult; Stöber, Zäzilia Hamish
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Stöber Zäzilia Hamish
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; addressing; formal
+
+expectedResult; Zäzilia Hamish Stöber
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; addressing; formal
+
+expectedResult; Stöber, Zäzilia H.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Stöber, Zäzilia
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+
+expectedResult; Stöber Zäzilia
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Zäzilia Stöber
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Stöber, Z. H.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Stöber, Z.
+
+parameters; sorting; short; referring; informal
+
+expectedResult; Zäzilia
+
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Stöber
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; SZH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ZHS
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; SZ
+
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; ZS
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Z
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; Prof. Dr.
+name ; given; Ada Cornelia
+name ; given-informal; Neele
+name ; given2; César Martín
+name ; surname-prefix; von
+name ; surname-core; Brühl
+name ; surname2; González Domingo
+name ; generation; Jr.
+name ; credentials; M.D. DDS.
+name ; locale; ko_AQ
+
+expectedResult; Prof. Dr. Ada Cornelia César Martín von Brühl González Domingo, M.D. DDS.
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Prof. Dr. von Brühl González Domingo Ada Cornelia César Martín, M.D. DDS.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Prof. Dr. Ada Cornelia César Martín von Brühl González Domingo
+
+parameters; givenFirst; long; addressing; formal
+
+expectedResult; Prof. Dr. von Brühl González Domingo Ada Cornelia César Martín
+
+parameters; surnameFirst; long; addressing; formal
+
+expectedResult; Brühl, Ada Cornelia César Martín von (Prof. Dr., M.D. DDS.)
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Prof. Dr. Ada Cornelia von Brühl
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Prof. Dr. von Brühl Ada Cornelia
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Brühl, Ada Cornelia C. M. von
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Prof. Dr. von Brühl
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; referring; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Brühl, A. C. C. M.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Brühl, Neele von
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+
+expectedResult; Neele von Brühl
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; von Brühl Neele
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Brühl, N.
+
+parameters; sorting; short; referring; informal
+
+expectedResult; von Brühl
+
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Neele
+
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ACB
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; BAC
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; AB
+
+parameters; givenFirst; medium; monogram; formal
+
+expectedResult; BA
+
+parameters; surnameFirst; medium; monogram; formal
+
+expectedResult; BN
+
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; NB
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; B
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; N
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/cy.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/cy.txt
new file mode 100644
index 00000000000..dd32a7a687f
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/cy.txt
@@ -0,0 +1,818 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: cy
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Zendaya
+name ; locale; cy_AQ
+
+expectedResult; Zendaya
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Z
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Irene
+name ; surname; Adler
+name ; locale; cy_AQ
+
+expectedResult; Adler, Irene
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Adler Irene
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Irene Adler
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Adler, I.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Adler I.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; I. Adler
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Irene A.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Adler
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Irene
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; AI
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; IA
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; I
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; Mary Sue
+name ; given2; Hamish
+name ; surname; Watson
+name ; locale; cy_AQ
+
+expectedResult; Watson, Mary Sue Hamish
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Mary Sue Hamish Watson
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Watson Mary Sue Hamish
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Watson, Mary Sue H.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Mary Sue H. Watson
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Watson Mary Sue H.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Watson, M. S. H.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Watson, Mary Sue
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; M. S. H. Watson
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Mary Sue Watson
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Watson M. S. H.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Watson Mary Sue
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Watson M. S.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Mary Sue W.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Mary Sue
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Watson
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; MHW
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; WMH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; MW
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; WM
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; W
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; Mr.
+name ; given; Bertram Wilberforce
+name ; given-informal; Bertie
+name ; given2; Henry Robert
+name ; surname-core; Wooster
+name ; generation; Jr
+name ; credentials; AS
+name ; locale; cy_AQ
+
+expectedResult; Bertram Wilberforce Henry Robert Wooster AS
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Wooster Bertram Wilberforce Henry Robert AS
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Wooster, Bertram Wilberforce Henry Robert
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Bertram Wilberforce H. R. Wooster AS
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Wooster Bertram Wilberforce H. R. AS
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Wooster, Bertram Wilberforce H. R.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Wooster, B. W. H. R.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; B. W. H. R. Wooster
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Wooster B. W. H. R.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Wooster, Bertie
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Bertie Wooster
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Wooster Bertie
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Wooster B. W.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Mr. Wooster
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Bertie W.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Bertie
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; BHW
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; WBH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; BW
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; WB
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; B
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; W
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; Sinbad
+name ; locale; ja_AQ
+
+expectedResult; Sinbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Käthe
+name ; surname; Müller
+name ; locale; ja_AQ
+
+expectedResult; Müller, Käthe
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Käthe Müller
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Müller Käthe
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Müller, K.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; K. Müller
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Müller K.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Käthe M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Müller
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Käthe
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Zäzilia
+name ; given2; Hamish
+name ; surname; Stöber
+name ; locale; ja_AQ
+
+expectedResult; Stöber, Zäzilia Hamish
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Stöber Zäzilia Hamish
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Zäzilia Hamish Stöber
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Stöber, Zäzilia H.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Stöber Zäzilia H.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Zäzilia H. Stöber
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Stöber, Zäzilia
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Stöber Zäzilia
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Zäzilia Stöber
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Stöber, Z. H.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Stöber Z. H.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Z. H. Stöber
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Zäzilia S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Stöber Z.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Zäzilia
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Stöber
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; SZH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ZHS
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; SZ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ZS
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Z
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; Athro Dr
+name ; given; Ada Cornelia
+name ; given-informal; Neele
+name ; given2; Eva Sophia
+name ; surname-prefix; von
+name ; surname-core; Wolf
+name ; surname2; González Domingo
+name ; generation; Jr
+name ; credentials; MD DDS
+name ; locale; ja_AQ
+
+expectedResult; Ada Cornelia Eva Sophia von Wolf MD DDS
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; von Wolf Ada Cornelia Eva Sophia MD DDS
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Ada Cornelia E. S. von Wolf MD DDS
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; von Wolf Ada Cornelia E. S. MD DDS
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Wolf, Ada Cornelia Eva Sophia von
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Wolf, Ada Cornelia E. S. von
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Wolf, A. C. E. S. von
+
+parameters; sorting; short; referring; formal
+
+expectedResult; A. C. E. S. von Wolf
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; von Wolf A. C. E. S.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Athro Dr von Wolf
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; von Wolf, Neele
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Neele von Wolf
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; von Wolf A. C.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; von Wolf Neele
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Neele v. W.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Neele
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; AEV
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; VAE
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; NV
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VN
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; N
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/da.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/da.txt
new file mode 100644
index 00000000000..bda38f8d1b5
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/da.txt
@@ -0,0 +1,757 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: da
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Katrine
+name ; locale; da_AQ
+
+expectedResult; Katrine
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; K
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Irene
+name ; surname; Møller
+name ; locale; da_AQ
+
+expectedResult; Møller, Irene
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Irene Møller
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Møller, I.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; short; referring; formal
+
+expectedResult; I. Møller
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Irene M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Møller
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Irene
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; IM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MI
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; I
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeGGS
+name ; given; Anne Sofie
+name ; given2; Holm
+name ; surname; Hansen
+name ; locale; da_AQ
+
+expectedResult; Hansen, Anne Sofie Holm
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+
+expectedResult; Anne Sofie Holm Hansen
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Hansen, Anne Sofie H.
+
+parameters; surnameFirst; medium; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+
+expectedResult; Anne Sofie H. Hansen
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Hansen, Anne Sofie
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Anne Sofie Hansen
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Hansen, A. S. H.
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; A. S. H. Hansen
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Anne Sofie H.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Hansen, A. S.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Anne Sofie
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Hansen
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; AHH
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; HAH
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; H
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; hr.
+name ; given; Hans Henrik
+name ; given-informal; Hans
+name ; given2; Sven Ã…ge
+name ; surname-core; Møller
+name ; credentials; MF
+name ; locale; da_AQ
+
+expectedResult; Møller, hr. Hans Henrik Sven Åge, MF
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; hr. Hans Henrik Sven Åge Møller, MF
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Møller, Hans Henrik S. Å., MF
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Hans Henrik S. Å. Møller, MF
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Møller, Hans Henrik Sven Åge
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Møller, Hans Henrik S. Å.
+
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+
+expectedResult; Møller, H. H. S. Å.
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; Møller, Hans Henrik
+
+parameters; sorting; short; referring; informal
+
+expectedResult; H. H. S. Å. Møller
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Møller, H. H.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Møller, Hans
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+
+expectedResult; Hans Henrik
+
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+
+expectedResult; Hans Møller
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; hr. Møller
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Hans M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Hans
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; HSM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MHS
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; H
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; Sinbad
+name ; locale; ja_AQ
+
+expectedResult; Sinbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Käthe
+name ; surname; Müller
+name ; locale; ja_AQ
+
+expectedResult; Müller, Käthe
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Käthe Müller
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Müller, K.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; short; referring; formal
+
+expectedResult; K. Müller
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Käthe M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Müller
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Käthe
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Zäzilia
+name ; given2; Gültan
+name ; surname; Stöber
+name ; locale; ja_AQ
+
+expectedResult; Stöber, Zäzilia Gültan
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+
+expectedResult; Zäzilia Gültan Stöber
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Stöber, Zäzilia G.
+
+parameters; surnameFirst; medium; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+
+expectedResult; Zäzilia G. Stöber
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Stöber, Zäzilia
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Zäzilia Stöber
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Stöber, Z. G.
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; Z. G. Stöber
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Stöber, Z.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Zäzilia S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Zäzilia
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Stöber
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; SZG
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ZGS
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Z
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; dr.
+name ; given; Anastasia Eleni
+name ; given-informal; Anastasia
+name ; given2; César Martín
+name ; surname-prefix; von
+name ; surname-core; Brühl
+name ; surname2; González Domingo
+name ; generation; jr.
+name ; credentials; cand.odont.
+name ; locale; ja_AQ
+
+expectedResult; von Brühl, dr. Anastasia Eleni César Martín, cand.odont.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; dr. Anastasia Eleni César Martín von Brühl, cand.odont.
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; von Brühl, Anastasia Eleni C. M., cand.odont.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Anastasia Eleni C. M. von Brühl, cand.odont.
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; von Brühl, Anastasia Eleni César Martín
+
+parameters; sorting; long; referring; formal
+
+expectedResult; von Brühl, Anastasia Eleni C. M.
+
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+
+expectedResult; von Brühl, Anastasia Eleni
+
+parameters; sorting; short; referring; informal
+
+expectedResult; von Brühl, A. E. C. M.
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; A. E. C. M. von Brühl
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; von Brühl, Anastasia
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+
+expectedResult; Anastasia von Brühl
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; von Brühl, A. E.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Anastasia Eleni
+
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+
+expectedResult; Anastasia v. B.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; dr. von Brühl
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Anastasia
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ACV
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VAC
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/de.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/de.txt
new file mode 100644
index 00000000000..e719c9b60af
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/de.txt
@@ -0,0 +1,771 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: de
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Lena
+name ; locale; de_AQ
+
+expectedResult; Lena
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; L
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Iris
+name ; surname; Falke
+name ; locale; de_AQ
+
+expectedResult; Falke, Iris
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Iris Falke
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Falke, I.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; short; referring; formal
+
+expectedResult; I. Falke
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Iris F.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Falke
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Iris
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; FI
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; IF
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; F
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; I
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; Max
+name ; given2; Ben
+name ; surname; Mustermann
+name ; locale; de_AQ
+
+expectedResult; Mustermann, Max Ben
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+
+expectedResult; Max Ben Mustermann
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Mustermann, Max B.
+
+parameters; surnameFirst; medium; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; Max B. Mustermann
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Mustermann, M. B.
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; M. B. Mustermann
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Mustermann, Max
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Max Mustermann
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Mustermann, M.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Mustermann
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Max M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Max
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; MBM
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; MMB
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; MM
+
+parameters; givenFirst; long; monogram; informal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeFull
+name ; title; Dr.
+name ; given; Paul
+name ; given-informal; Pauli
+name ; given2; Vinzent
+name ; surname-prefix; von
+name ; surname-core; Fischer
+name ; generation; jr.
+name ; credentials; MdB
+name ; locale; de_AQ
+
+expectedResult; von Fischer, Dr. Paul Vinzent jr. MdB
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Dr. Paul Vinzent von Fischer jr. MdB
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; von Fischer, Paul V. jr. MdB
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Paul V. von Fischer jr. MdB
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Fischer, Paul Vinzent von
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Fischer, Paul V. von
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Fischer, P. V. von
+
+parameters; sorting; short; referring; formal
+
+expectedResult; von Fischer, P. V.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; von Fischer, Pauli
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; P. V. von Fischer
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Pauli von Fischer
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Dr. von Fischer
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; von Fischer, P.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Pauli v. F.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Pauli
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; PVV
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; VPV
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; PV
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VP
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; P
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; Tomás
+name ; locale; ko_AQ
+
+expectedResult; Tomás
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; T
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Adélaïde
+name ; surname; Lemaître
+name ; locale; ko_AQ
+
+expectedResult; Lemaître, Adélaïde
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Adélaïde Lemaître
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Lemaître, A.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; short; referring; formal
+
+expectedResult; A. Lemaître
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Adélaïde L.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Adélaïde
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Lemaître
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; AL
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; LA
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; L
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Kjetil
+name ; given2; Bjørn
+name ; surname; Løseth
+name ; locale; ko_AQ
+
+expectedResult; Løseth, Kjetil Bjørn
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+
+expectedResult; Kjetil Bjørn Løseth
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Løseth, Kjetil B.
+
+parameters; surnameFirst; medium; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; Kjetil B. Løseth
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Løseth, Kjetil
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Kjetil Løseth
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Løseth, K. B.
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; K. B. Løseth
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Løseth, K.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Kjetil L.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Kjetil
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Løseth
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; KBL
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; LKB
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; KL
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; LK
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; L
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignFull
+name ; title; Prof. Dr.
+name ; given; Anna Cornelia
+name ; given-informal; Nele
+name ; given2; Eva Sophia
+name ; surname-prefix; van den
+name ; surname-core; Wolf
+name ; surname2; Becker Schmidt
+name ; generation; jr.
+name ; credentials; M.D. Ph.D.
+name ; locale; ko_AQ
+
+expectedResult; van den Wolf, Prof. Dr. Anna Cornelia Eva Sophia jr. M.D. Ph.D.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Prof. Dr. Anna Cornelia Eva Sophia van den Wolf jr. M.D. Ph.D.
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; van den Wolf, Anna Cornelia E. S. jr. M.D. Ph.D.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Anna Cornelia E. S. van den Wolf jr. M.D. Ph.D.
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Wolf, Anna Cornelia Eva Sophia van den
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Wolf, Anna Cornelia E. S. van den
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; van den Wolf, A. C. E. S.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Wolf, A. C. E. S. van den
+
+parameters; sorting; short; referring; formal
+
+expectedResult; A. C. E. S. van den Wolf
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Prof. Dr. van den Wolf
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; van den Wolf, A. C.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; van den Wolf, Nele
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Nele van den Wolf
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Nele v. d. W.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Nele
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; AEV
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; VAE
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; NV
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VN
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; N
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/de_CH.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/de_CH.txt
new file mode 100644
index 00000000000..e2e11de0956
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/de_CH.txt
@@ -0,0 +1,772 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: de_CH
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Lena
+name ; locale; de_CH
+
+expectedResult; Lena
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; L
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Iris
+name ; surname; Falke
+name ; locale; de_CH
+
+expectedResult; Falke, Iris
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Iris Falke
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Falke, I.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; short; referring; formal
+
+expectedResult; I. Falke
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Iris F.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Falke
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Iris
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; FI
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; IF
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; F
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; I
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; Max
+name ; given2; Ben
+name ; surname; Mustermann
+name ; locale; de_CH
+
+expectedResult; Mustermann, Max Ben
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+
+expectedResult; Max Ben Mustermann
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Mustermann, Max B.
+
+parameters; surnameFirst; medium; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; Max B. Mustermann
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Mustermann, M. B.
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; M. B. Mustermann
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Mustermann, Max
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Max Mustermann
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Mustermann, M.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Mustermann
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Max M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Max
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; MBM
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; MMB
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; MM
+
+parameters; givenFirst; long; monogram; informal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeFull
+name ; title; Dr.
+name ; given; Paul
+name ; given-informal; Pauli
+name ; given2; Vinzent
+name ; surname-prefix; von
+name ; surname-core; Fischer
+name ; surname2; Müller
+name ; generation; jr.
+name ; credentials; MdB
+name ; locale; de_CH
+
+expectedResult; von Fischer, Dr. Paul Vinzent jr. MdB
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Dr. Paul Vinzent von Fischer jr. MdB
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; von Fischer, Paul V. jr. MdB
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Paul V. von Fischer jr. MdB
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Fischer, Paul Vinzent von
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Fischer, Paul V. von
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Fischer, P. V. von
+
+parameters; sorting; short; referring; formal
+
+expectedResult; von Fischer, P. V.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; von Fischer, Pauli
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; P. V. von Fischer
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Pauli von Fischer
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Dr. von Fischer
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; von Fischer, P.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Pauli v. F.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Pauli
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; PVV
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; VPV
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; PV
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VP
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; P
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; Tomás
+name ; locale; ko_AQ
+
+expectedResult; Tomás
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; T
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Adélaïde
+name ; surname; Lemaître
+name ; locale; ko_AQ
+
+expectedResult; Lemaître, Adélaïde
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Adélaïde Lemaître
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Lemaître, A.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; short; referring; formal
+
+expectedResult; A. Lemaître
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Adélaïde L.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Adélaïde
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Lemaître
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; AL
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; LA
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; L
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Kjetil
+name ; given2; Bjørn
+name ; surname; Løseth
+name ; locale; ko_AQ
+
+expectedResult; Løseth, Kjetil Bjørn
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+
+expectedResult; Kjetil Bjørn Løseth
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Løseth, Kjetil B.
+
+parameters; surnameFirst; medium; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; Kjetil B. Løseth
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Løseth, Kjetil
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Kjetil Løseth
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Løseth, K. B.
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; K. B. Løseth
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Løseth, K.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Kjetil L.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Kjetil
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Løseth
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; KBL
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; LKB
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; KL
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; LK
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; L
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignFull
+name ; title; Prof. Dr.
+name ; given; Anna Cornelia
+name ; given-informal; Nele
+name ; given2; Eva Sophia
+name ; surname-prefix; van den
+name ; surname-core; Wolf
+name ; surname2; Becker Schmidt
+name ; generation; jr.
+name ; credentials; M.D. Ph.D.
+name ; locale; ko_AQ
+
+expectedResult; van den Wolf, Prof. Dr. Anna Cornelia Eva Sophia jr. M.D. Ph.D.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Prof. Dr. Anna Cornelia Eva Sophia van den Wolf jr. M.D. Ph.D.
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; van den Wolf, Anna Cornelia E. S. jr. M.D. Ph.D.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Anna Cornelia E. S. van den Wolf jr. M.D. Ph.D.
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Wolf, Anna Cornelia Eva Sophia van den
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Wolf, Anna Cornelia E. S. van den
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; van den Wolf, A. C. E. S.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Wolf, A. C. E. S. van den
+
+parameters; sorting; short; referring; formal
+
+expectedResult; A. C. E. S. van den Wolf
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Prof. Dr. van den Wolf
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; van den Wolf, A. C.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; van den Wolf, Nele
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Nele van den Wolf
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Nele v. d. W.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Nele
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; AEV
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; VAE
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; NV
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VN
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; N
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/dsb.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/dsb.txt
new file mode 100644
index 00000000000..fcf81ed62b0
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/dsb.txt
@@ -0,0 +1,773 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: dsb
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Juro
+name ; locale; dsb_AQ
+
+expectedResult; Juro
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; J
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Hana
+name ; surname; Kulina
+name ; locale; dsb_AQ
+
+expectedResult; Kulina, Hana
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Hana Kulina
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Kulina, H.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; short; referring; formal
+
+expectedResult; H. Kulina
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Hana K.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Kulina
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Hana
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; HK
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; KH
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; H
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeGGS
+name ; given; Jan
+name ; given2; Měto
+name ; surname; Å ejc
+name ; locale; dsb_AQ
+
+expectedResult; Šejc, Jan Měto
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+
+expectedResult; Jan Měto Šejc
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Å ejc, Jan M.
+
+parameters; surnameFirst; medium; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; Jan M. Å ejc
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Å ejc, J. M.
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; J. M. Å ejc
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Å ejc, Jan
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Jan Å ejc
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Å ejc, J.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Jan Å .
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Å ejc
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Jan
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; JMÅ 
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; Å JM
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; JÅ 
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; Å J
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; J
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; Å 
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; dr.
+name ; given; Hejba-Marja
+name ; given-informal; Hejba
+name ; given2; Hana
+name ; surname-core; Lejnikowa
+name ; generation; jr.
+name ; credentials; phd
+name ; locale; dsb_AQ
+
+expectedResult; Lejnikowa, dr. Hejba-Marja Hana jr. phd
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; dr. Hejba-Marja Hana Lejnikowa jr. phd
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Lejnikowa, Hejba-Marja H. jr. phd
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Hejba-Marja H. Lejnikowa jr. phd
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Lejnikowa, Hejba-Marja Hana
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Lejnikowa, Hejba-Marja H.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Lejnikowa, H. M. H.
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; H. M. H. Lejnikowa
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Lejnikowa, H. M.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Lejnikowa, Hejba
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Hejba Lejnikowa
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; dr. Lejnikowa
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Hejba L.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Hejba
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; HHL
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; LHH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; HL
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; LH
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; H
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; L
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; Tomás
+name ; locale; ko_AQ
+
+expectedResult; Tomás
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; T
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Adélaïde
+name ; surname; Lemaître
+name ; locale; ko_AQ
+
+expectedResult; Lemaître, Adélaïde
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Adélaïde Lemaître
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Lemaître, A.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; short; referring; formal
+
+expectedResult; A. Lemaître
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Adélaïde L.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Adélaïde
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Lemaître
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; AL
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; LA
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; L
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Kjetil
+name ; given2; Bjørn
+name ; surname; Løseth
+name ; locale; ko_AQ
+
+expectedResult; Løseth, Kjetil Bjørn
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+
+expectedResult; Kjetil Bjørn Løseth
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Løseth, Kjetil B.
+
+parameters; surnameFirst; medium; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; Kjetil B. Løseth
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Løseth, Kjetil
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Kjetil Løseth
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Løseth, K. B.
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; K. B. Løseth
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Løseth, K.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Kjetil L.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Kjetil
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Løseth
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; KBL
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; LKB
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; KL
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; LK
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; L
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignFull
+name ; title; prof. dr.
+name ; given; Anna Cornelia
+name ; given-informal; Nele
+name ; given2; Eva Sophia
+name ; surname-prefix; van den
+name ; surname-core; Wolf
+name ; surname2; Becker Schmidt
+name ; generation; jr.
+name ; credentials; m.d. ph.d.
+name ; locale; ko_AQ
+
+expectedResult; van den Wolf, prof. dr. Anna Cornelia Eva Sophia jr. m.d. ph.d.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; prof. dr. Anna Cornelia Eva Sophia van den Wolf jr. m.d. ph.d.
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; van den Wolf, Anna Cornelia E. S. jr. m.d. ph.d.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Anna Cornelia E. S. van den Wolf jr. m.d. ph.d.
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Wolf, Anna Cornelia Eva Sophia van den
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Wolf, Anna Cornelia E. S. van den
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; van den Wolf, A. C. E. S.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Wolf, A. C. E. S. van den
+
+parameters; sorting; short; referring; formal
+
+expectedResult; A. C. E. S. van den Wolf
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; prof. dr. van den Wolf
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; van den Wolf, A. C.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; van den Wolf, Nele
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Nele van den Wolf
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Nele v. d. W.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Nele
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; AEV
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; VAE
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; NV
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VN
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; N
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/el.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/el.txt
new file mode 100644
index 00000000000..b7ad436f9d8
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/el.txt
@@ -0,0 +1,684 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: el
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; ΔημήτÏης
+name ; locale; el_AQ
+
+expectedResult; ΔημήτÏης
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Δ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; ΕιÏήνη
+name ; surname; Πολίτη
+name ; locale; el_AQ
+
+expectedResult; Πολίτη, ΕιÏήνη
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ΕιÏήνη Πολίτη
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; Πολίτη ΕιÏήνη
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Πολίτη Ε.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ΕιÏήνη
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Πολίτη
+
+parameters; givenFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ΕΠ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; ΠΕ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; ΠέτÏος
+name ; given2; Îικόλαος
+name ; surname; ΚαÏατζής
+name ; locale; el_AQ
+
+expectedResult; ΚαÏατζής, ΠέτÏος Îικόλαος
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; ΚαÏατζής ΠέτÏος Îικόλαος
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; ΠέτÏος Îικόλαος ΚαÏατζής
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; ΚαÏατζής ΠέτÏος Î.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; ΚαÏατζής, ΠέτÏος
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; ΚαÏατζής ΠέτÏος
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; ΠέτÏος ΚαÏατζής
+
+parameters; givenFirst; long; referring; informal
+
+expectedResult; ΚαÏατζής Π. Î.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; ΚαÏατζής Π.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ΚαÏατζής
+
+parameters; givenFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ΠέτÏος
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ΚΠÎ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; ΠÎΚ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+endName
+
+# nativeFull
+name ; title; Κος
+name ; given; Îικόλαος ΚαÏατζής
+name ; given-informal; Îίκος
+name ; given2; Κωνσταντίνος ΜάÏιος
+name ; surname-core; Χατζής
+name ; locale; el_AQ
+
+expectedResult; Κος Îικόλαος ΚαÏατζής Κωνσταντίνος ΜάÏιος Χατζής
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; Χατζής, Îικόλαος ΚαÏατζής Κωνσταντίνος ΜάÏιος
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; Χατζής Îικόλαος ΚαÏατζής Κωνσταντίνος ΜάÏιος
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Χατζής Îικόλαος ΚαÏατζής Κ. Îœ.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Χατζής Î. Κ. Κ. Îœ.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Îικόλαος ΚαÏατζής
+
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; Χατζής, Îίκος
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Îίκος Χατζής
+
+parameters; givenFirst; long; referring; informal
+
+expectedResult; Χατζής Î. Κ.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Χατζής Îίκος
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Κος Χατζής
+
+parameters; givenFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Îίκος
+
+parameters; givenFirst; long; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ÎΚΧ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; ΧÎΚ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; Σινμπάντ
+name ; locale; ja_AQ
+
+expectedResult; Σινμπάντ
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Σ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Κάτε
+name ; surname; ΜίλεÏ
+name ; locale; ja_AQ
+
+expectedResult; ΜίλεÏ, Κάτε
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Κάτε ΜίλεÏ
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; ÎœÎ¯Î»ÎµÏ ÎšÎ¬Ï„Îµ
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; ÎœÎ¯Î»ÎµÏ Îš.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ΜίλεÏ
+
+parameters; givenFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Κάτε
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ΚΜ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; ΜΚ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGGS
+name ; given; Ζεζίλια
+name ; given2; Χάμις
+name ; surname; ΣτέμπεÏ
+name ; locale; ja_AQ
+
+expectedResult; ΣτέμπεÏ, Ζεζίλια Χάμις
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; Ζεζίλια Χάμις ΣτέμπεÏ
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; Î£Ï„Î­Î¼Ï€ÎµÏ Î–ÎµÎ¶Î¯Î»Î¹Î± Χάμις
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Î£Ï„Î­Î¼Ï€ÎµÏ Î–ÎµÎ¶Î¯Î»Î¹Î± Χ.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; ΣτέμπεÏ, Ζεζίλια
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ζεζίλια ΣτέμπεÏ
+
+parameters; givenFirst; long; referring; informal
+
+expectedResult; Î£Ï„Î­Î¼Ï€ÎµÏ Î–ÎµÎ¶Î¯Î»Î¹Î±
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Î£Ï„Î­Î¼Ï€ÎµÏ Î–. Χ.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Î£Ï„Î­Î¼Ï€ÎµÏ Î–.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Ζεζίλια
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ΣτέμπεÏ
+
+parameters; givenFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ΖΧΣ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; ΣΖΧ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; Καθ. δÏ.
+name ; given; Άντα ΚοÏνέλια
+name ; given-informal; Îιλ
+name ; given2; Î£Î­ÏƒÎ±Ï ÎœÎ±Ïτίν
+name ; surname-prefix; φον
+name ; surname-core; ΜπÏιλ
+name ; surname2; Γκονθάλεθ Δομίνγκο
+name ; generation; ΤζοÏνιοÏ
+name ; credentials; ΔÏ.Ι. ΔÏ.Χ.Ο
+name ; locale; ja_AQ
+
+expectedResult; Καθ. δÏ. Άντα ΚοÏνέλια Î£Î­ÏƒÎ±Ï ÎœÎ±Ïτίν φον ΜπÏιλ Γκονθάλεθ Δομίνγκο ΔÏ.Ι. ΔÏ.Χ.Ο
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; φον ΜπÏιλ Άντα ΚοÏνέλια Î£Î­ÏƒÎ±Ï ÎœÎ±Ïτίν ΔÏ.Ι. ΔÏ.Χ.Ο
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; φον ΜπÏιλ Άντα ΚοÏνέλια Σ. Îœ. ΔÏ.Ι. ΔÏ.Χ.Ο
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; ΜπÏιλ, φον Άντα ΚοÏνέλια Î£Î­ÏƒÎ±Ï ÎœÎ±Ïτίν
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; φον ΜπÏιλ Ά. Κ. Σ. Îœ.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Καθ. δÏ. φον ΜπÏιλ
+
+parameters; givenFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; φον ΜπÏιλ Ά. Κ.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; φον ΜπÏιλ, Îιλ
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Άντα ΚοÏνέλια
+
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; Îιλ φον ΜπÏιλ
+
+parameters; givenFirst; long; referring; informal
+
+expectedResult; φον ΜπÏιλ Îιλ
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; ΑΣΦ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; Îιλ
+
+parameters; givenFirst; long; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ΦΑΣ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/en.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/en.txt
new file mode 100644
index 00000000000..06f447f2bfc
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/en.txt
@@ -0,0 +1,818 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: en
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Zendaya
+name ; locale; en_AQ
+
+expectedResult; Zendaya
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Z
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Irene
+name ; surname; Adler
+name ; locale; en_AQ
+
+expectedResult; Adler, Irene
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Adler Irene
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Irene Adler
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Adler, I.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Adler I.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; I. Adler
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Irene A.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Adler
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Irene
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; AI
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; IA
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; I
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; Mary Sue
+name ; given2; Hamish
+name ; surname; Watson
+name ; locale; en_AQ
+
+expectedResult; Watson, Mary Sue Hamish
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Mary Sue Hamish Watson
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Watson Mary Sue Hamish
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Watson, Mary Sue H.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Mary Sue H. Watson
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Watson Mary Sue H.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Watson, Mary Sue
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Mary Sue Watson
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Watson Mary Sue
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Watson, M.S.H.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; M.S.H. Watson
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Watson M.S.H.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Mary Sue W.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Watson M.S.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Mary Sue
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Watson
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; MHW
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; WMH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; MW
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; WM
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; W
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; Mr.
+name ; given; Bertram Wilberforce
+name ; given-informal; Bertie
+name ; given2; Henry Robert
+name ; surname-core; Wooster
+name ; generation; Jr
+name ; credentials; MP
+name ; locale; en_AQ
+
+expectedResult; Mr. Bertram Wilberforce Henry Robert Wooster Jr, MP
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Wooster Mr. Bertram Wilberforce Henry Robert Jr, MP
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Wooster, Bertram Wilberforce Henry Robert
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Bertram Wilberforce H.R. Wooster Jr, MP
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Wooster Bertram Wilberforce H.R. Jr, MP
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Wooster, Bertram Wilberforce H.R.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Wooster, B.W.H.R.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; B.W.H.R. Wooster
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Wooster B.W.H.R.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Wooster, Bertie
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Bertie Wooster
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Wooster Bertie
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Wooster B.W.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Mr. Wooster
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Bertie W.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Bertie
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; BHW
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; WBH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; BW
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; WB
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; B
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; W
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; Sinbad
+name ; locale; ja_AQ
+
+expectedResult; Sinbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Käthe
+name ; surname; Müller
+name ; locale; ja_AQ
+
+expectedResult; Müller, Käthe
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Käthe Müller
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Müller Käthe
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Müller, K.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; K. Müller
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Müller K.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Käthe M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Müller
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Käthe
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Zäzilia
+name ; given2; Hamish
+name ; surname; Stöber
+name ; locale; ja_AQ
+
+expectedResult; Stöber, Zäzilia Hamish
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Stöber Zäzilia Hamish
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Zäzilia Hamish Stöber
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Stöber, Zäzilia H.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Stöber Zäzilia H.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Zäzilia H. Stöber
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Stöber, Zäzilia
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Stöber Zäzilia
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Zäzilia Stöber
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Stöber, Z.H.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Stöber Z.H.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Z.H. Stöber
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Zäzilia S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Stöber Z.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Zäzilia
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Stöber
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; SZH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ZHS
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; SZ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ZS
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Z
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; Prof. Dr.
+name ; given; Ada Cornelia
+name ; given-informal; Neele
+name ; given2; César Martín
+name ; surname-prefix; von
+name ; surname-core; Brühl
+name ; surname2; González Domingo
+name ; generation; Jr
+name ; credentials; MD DDS
+name ; locale; ja_AQ
+
+expectedResult; Prof. Dr. Ada Cornelia César Martín von Brühl Jr, MD DDS
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; von Brühl Prof. Dr. Ada Cornelia César Martín Jr, MD DDS
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Ada Cornelia C.M. von Brühl Jr, MD DDS
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; von Brühl Ada Cornelia C.M. Jr, MD DDS
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Brühl, Ada Cornelia César Martín von
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Brühl, Ada Cornelia C.M. von
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Brühl, A.C.C.M. von
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Prof. Dr. von Brühl
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; A.C.C.M. von Brühl
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; von Brühl A.C.C.M.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; von Brühl, Neele
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Neele von Brühl
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; von Brühl Neele
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; von Brühl A.C.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Neele v.B.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Neele
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ACV
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; VAC
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; NV
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VN
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; N
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/en_AU.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/en_AU.txt
new file mode 100644
index 00000000000..d130d4ed4ac
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/en_AU.txt
@@ -0,0 +1,818 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: en_AU
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Zendaya
+name ; locale; en_AU
+
+expectedResult; Zendaya
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Z
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Irene
+name ; surname; Adler
+name ; locale; en_AU
+
+expectedResult; Adler, Irene
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Adler Irene
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Irene Adler
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Adler, I.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Adler I.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; I. Adler
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Irene A.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Adler
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Irene
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; AI
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; IA
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; I
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; Mary Sue
+name ; given2; Hamish
+name ; surname; Watson
+name ; locale; en_AU
+
+expectedResult; Watson, Mary Sue Hamish
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Mary Sue Hamish Watson
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Watson Mary Sue Hamish
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Watson, Mary Sue H.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Mary Sue H. Watson
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Watson Mary Sue H.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Watson, Mary Sue
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Mary Sue Watson
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Watson Mary Sue
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Watson, M.S.H.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; M.S.H. Watson
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Watson M.S.H.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Mary Sue W.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Watson M.S.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Mary Sue
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Watson
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; MHW
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; WMH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; MW
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; WM
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; W
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; Mr
+name ; given; Bertram Wilberforce
+name ; given-informal; Bertie
+name ; given2; Henry Robert
+name ; surname-core; Wooster
+name ; generation; Jr
+name ; credentials; MP
+name ; locale; en_AU
+
+expectedResult; Mr Bertram Wilberforce Henry Robert Wooster Jr, MP
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Wooster Mr Bertram Wilberforce Henry Robert Jr, MP
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Wooster, Bertram Wilberforce Henry Robert
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Bertram Wilberforce H.R. Wooster Jr, MP
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Wooster Bertram Wilberforce H.R. Jr, MP
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Wooster, Bertram Wilberforce H.R.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Wooster, B.W.H.R.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; B.W.H.R. Wooster
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Wooster B.W.H.R.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Wooster, Bertie
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Bertie Wooster
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Wooster Bertie
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Wooster B.W.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Mr Wooster
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Bertie W.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Bertie
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; BHW
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; WBH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; BW
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; WB
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; B
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; W
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; Sinbad
+name ; locale; ja_AQ
+
+expectedResult; Sinbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Käthe
+name ; surname; Müller
+name ; locale; ja_AQ
+
+expectedResult; Müller, Käthe
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Käthe Müller
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Müller Käthe
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Müller, K.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; K. Müller
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Müller K.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Käthe M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Müller
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Käthe
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Zäzilia
+name ; given2; Hamish
+name ; surname; Stöber
+name ; locale; ja_AQ
+
+expectedResult; Stöber, Zäzilia Hamish
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Stöber Zäzilia Hamish
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Zäzilia Hamish Stöber
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Stöber, Zäzilia H.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Stöber Zäzilia H.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Zäzilia H. Stöber
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Stöber, Zäzilia
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Stöber Zäzilia
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Zäzilia Stöber
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Stöber, Z.H.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Stöber Z.H.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Z.H. Stöber
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Zäzilia S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Stöber Z.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Zäzilia
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Stöber
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; SZH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ZHS
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; SZ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ZS
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Z
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; Prof Dr
+name ; given; Ada Cornelia
+name ; given-informal; Neele
+name ; given2; César Martín
+name ; surname-prefix; von
+name ; surname-core; Brühl
+name ; surname2; González Domingo
+name ; generation; Jr
+name ; credentials; MD DDS
+name ; locale; ja_AQ
+
+expectedResult; Prof Dr Ada Cornelia César Martín von Brühl Jr, MD DDS
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; von Brühl Prof Dr Ada Cornelia César Martín Jr, MD DDS
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Ada Cornelia C.M. von Brühl Jr, MD DDS
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; von Brühl Ada Cornelia C.M. Jr, MD DDS
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Brühl, Ada Cornelia César Martín von
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Brühl, Ada Cornelia C.M. von
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Brühl, A.C.C.M. von
+
+parameters; sorting; short; referring; formal
+
+expectedResult; A.C.C.M. von Brühl
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; von Brühl A.C.C.M.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Prof Dr von Brühl
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; von Brühl, Neele
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Neele von Brühl
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; von Brühl Neele
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; von Brühl A.C.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Neele v.B.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Neele
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ACV
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; VAC
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; NV
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VN
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; N
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/en_CA.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/en_CA.txt
new file mode 100644
index 00000000000..3424bc2adf7
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/en_CA.txt
@@ -0,0 +1,818 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: en_CA
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Zendaya
+name ; locale; en_CA
+
+expectedResult; Zendaya
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Z
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Irene
+name ; surname; Adler
+name ; locale; en_CA
+
+expectedResult; Adler, Irene
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Adler Irene
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Irene Adler
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Adler, I.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Adler I.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; I. Adler
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Irene A.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Adler
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Irene
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; AI
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; IA
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; I
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; Mary Sue
+name ; given2; Hamish
+name ; surname; Watson
+name ; locale; en_CA
+
+expectedResult; Watson, Mary Sue Hamish
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Mary Sue Hamish Watson
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Watson Mary Sue Hamish
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Watson, Mary Sue H.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Mary Sue H. Watson
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Watson Mary Sue H.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Watson, Mary Sue
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Mary Sue Watson
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Watson Mary Sue
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Watson, M.S.H.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; M.S.H. Watson
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Watson M.S.H.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Mary Sue W.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Watson M.S.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Mary Sue
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Watson
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; MHW
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; WMH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; MW
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; WM
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; W
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; Mr.
+name ; given; Bertram Wilberforce
+name ; given-informal; Bertie
+name ; given2; Henry Robert
+name ; surname-core; Wooster
+name ; generation; Jr.
+name ; credentials; MP
+name ; locale; en_CA
+
+expectedResult; Mr. Bertram Wilberforce Henry Robert Wooster Jr., MP
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Wooster Mr. Bertram Wilberforce Henry Robert Jr., MP
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Wooster, Bertram Wilberforce Henry Robert
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Bertram Wilberforce H.R. Wooster Jr., MP
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Wooster Bertram Wilberforce H.R. Jr., MP
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Wooster, Bertram Wilberforce H.R.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Wooster, B.W.H.R.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; B.W.H.R. Wooster
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Wooster B.W.H.R.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Wooster, Bertie
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Bertie Wooster
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Wooster Bertie
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Wooster B.W.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Mr. Wooster
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Bertie W.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Bertie
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; BHW
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; WBH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; BW
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; WB
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; B
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; W
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; Sinbad
+name ; locale; ja_AQ
+
+expectedResult; Sinbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Käthe
+name ; surname; Müller
+name ; locale; ja_AQ
+
+expectedResult; Müller, Käthe
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Käthe Müller
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Müller Käthe
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Müller, K.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; K. Müller
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Müller K.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Käthe M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Müller
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Käthe
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Zäzilia
+name ; given2; Hamish
+name ; surname; Stöber
+name ; locale; ja_AQ
+
+expectedResult; Stöber, Zäzilia Hamish
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Stöber Zäzilia Hamish
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Zäzilia Hamish Stöber
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Stöber, Zäzilia H.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Stöber Zäzilia H.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Zäzilia H. Stöber
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Stöber, Zäzilia
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Stöber Zäzilia
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Zäzilia Stöber
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Stöber, Z.H.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Stöber Z.H.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Z.H. Stöber
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Zäzilia S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Stöber Z.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Zäzilia
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Stöber
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; SZH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ZHS
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; SZ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ZS
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Z
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; Prof. Dr.
+name ; given; Ada Cornelia
+name ; given-informal; Neele
+name ; given2; César Martín
+name ; surname-prefix; von
+name ; surname-core; Brühl
+name ; surname2; González Domingo
+name ; generation; Jr.
+name ; credentials; MD DDS
+name ; locale; ja_AQ
+
+expectedResult; Prof. Dr. Ada Cornelia César Martín von Brühl Jr., MD DDS
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; von Brühl Prof. Dr. Ada Cornelia César Martín Jr., MD DDS
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Ada Cornelia C.M. von Brühl Jr., MD DDS
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; von Brühl Ada Cornelia C.M. Jr., MD DDS
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Brühl, Ada Cornelia César Martín von
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Brühl, Ada Cornelia C.M. von
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Brühl, A.C.C.M. von
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Prof. Dr. von Brühl
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; A.C.C.M. von Brühl
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; von Brühl A.C.C.M.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; von Brühl, Neele
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Neele von Brühl
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; von Brühl Neele
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; von Brühl A.C.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Neele v.B.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Neele
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ACV
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; VAC
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; NV
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VN
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; N
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/en_GB.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/en_GB.txt
new file mode 100644
index 00000000000..ff38d8a2974
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/en_GB.txt
@@ -0,0 +1,818 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: en_GB
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Zendaya
+name ; locale; en_GB
+
+expectedResult; Zendaya
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Z
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Irene
+name ; surname; Adler
+name ; locale; en_GB
+
+expectedResult; Adler, Irene
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Adler Irene
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Irene Adler
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Adler, I
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Adler I
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; I Adler
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Irene A
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Adler
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Irene
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; AI
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; IA
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; I
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; Mary Sue
+name ; given2; Hamish
+name ; surname; Watson
+name ; locale; en_GB
+
+expectedResult; Watson, Mary Sue Hamish
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Mary Sue Hamish Watson
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Watson Mary Sue Hamish
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Watson, Mary Sue H
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Mary Sue H Watson
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Watson Mary Sue H
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Watson, Mary Sue
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Mary Sue Watson
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Watson Mary Sue
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Watson, MSH
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Mary Sue W
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; MSH Watson
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Watson MSH
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Watson MS
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Mary Sue
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Watson
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; MHW
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; WMH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; MW
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; WM
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; W
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; Mr
+name ; given; Bertram Wilberforce
+name ; given-informal; Bertie
+name ; given2; Henry Robert
+name ; surname-core; Wooster
+name ; generation; Jr
+name ; credentials; MP
+name ; locale; en_GB
+
+expectedResult; Mr Bertram Wilberforce Henry Robert Wooster Jr, MP
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Wooster Mr Bertram Wilberforce Henry Robert Jr, MP
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Wooster, Bertram Wilberforce Henry Robert
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Bertram Wilberforce HR Wooster Jr, MP
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Wooster Bertram Wilberforce HR Jr, MP
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Wooster, Bertram Wilberforce HR
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Wooster, Bertie
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Bertie Wooster
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Wooster Bertie
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Wooster, BWHR
+
+parameters; sorting; short; referring; formal
+
+expectedResult; BWHR Wooster
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Wooster BWHR
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Mr Wooster
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Wooster BW
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Bertie W
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Bertie
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; BHW
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; WBH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; BW
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; WB
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; B
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; W
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; Sinbad
+name ; locale; ja_AQ
+
+expectedResult; Sinbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Käthe
+name ; surname; Müller
+name ; locale; ja_AQ
+
+expectedResult; Müller, Käthe
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Käthe Müller
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Müller Käthe
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Müller, K
+
+parameters; sorting; short; referring; formal
+
+expectedResult; K Müller
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Müller K
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Käthe M
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Müller
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Käthe
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Zäzilia
+name ; given2; Hamish
+name ; surname; Stöber
+name ; locale; ja_AQ
+
+expectedResult; Stöber, Zäzilia Hamish
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Stöber Zäzilia Hamish
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Zäzilia Hamish Stöber
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Stöber, Zäzilia H
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Stöber Zäzilia H
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Zäzilia H Stöber
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Stöber, Zäzilia
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Stöber Zäzilia
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Zäzilia Stöber
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Stöber, ZH
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Stöber ZH
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Zäzilia S
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ZH Stöber
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Stöber Z
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Zäzilia
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Stöber
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; SZH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ZHS
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; SZ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ZS
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Z
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; Prof Dr
+name ; given; Ada Cornelia
+name ; given-informal; Neele
+name ; given2; César Martín
+name ; surname-prefix; von
+name ; surname-core; Brühl
+name ; surname2; González Domingo
+name ; generation; Jr
+name ; credentials; MD DDS
+name ; locale; ja_AQ
+
+expectedResult; Prof Dr Ada Cornelia César Martín von Brühl Jr, MD DDS
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; von Brühl Prof Dr Ada Cornelia César Martín Jr, MD DDS
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Ada Cornelia CM von Brühl Jr, MD DDS
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Brühl, Ada Cornelia César Martín von
+
+parameters; sorting; long; referring; formal
+
+expectedResult; von Brühl Ada Cornelia CM Jr, MD DDS
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Brühl, Ada Cornelia CM von
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Prof Dr von Brühl
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; von Brühl, Neele
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Brühl, ACCM von
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Neele von Brühl
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; von Brühl Neele
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; ACCM von Brühl
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; von Brühl ACCM
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; von Brühl AC
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Neele vB
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Neele
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ACV
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; VAC
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; NV
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VN
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; N
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/en_IN.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/en_IN.txt
new file mode 100644
index 00000000000..8c5b8db1b23
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/en_IN.txt
@@ -0,0 +1,818 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: en_IN
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Zendaya
+name ; locale; en_IN
+
+expectedResult; Zendaya
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Z
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Irene
+name ; surname; Adler
+name ; locale; en_IN
+
+expectedResult; Adler, Irene
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Adler Irene
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Irene Adler
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Adler, I.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Adler I.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; I. Adler
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Irene A.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Adler
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Irene
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; AI
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; IA
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; I
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; Mary Sue
+name ; given2; Hamish
+name ; surname; Watson
+name ; locale; en_IN
+
+expectedResult; Watson, Mary Sue Hamish
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Mary Sue Hamish Watson
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Watson Mary Sue Hamish
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Watson, Mary Sue H.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Mary Sue H. Watson
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Watson Mary Sue H.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Watson, Mary Sue
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Mary Sue Watson
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Watson Mary Sue
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Watson, M.S.H.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; M.S.H. Watson
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Watson M.S.H.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Mary Sue W.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Watson M.S.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Mary Sue
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Watson
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; MHW
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; WMH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; MW
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; WM
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; W
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; Mr
+name ; given; Bertram Wilberforce
+name ; given-informal; Bertie
+name ; given2; Henry Robert
+name ; surname-core; Wooster
+name ; generation; Jr
+name ; credentials; MP
+name ; locale; en_IN
+
+expectedResult; Mr Bertram Wilberforce Henry Robert Wooster Jr, MP
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Wooster Mr Bertram Wilberforce Henry Robert Jr, MP
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Wooster, Bertram Wilberforce Henry Robert
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Bertram Wilberforce H.R. Wooster Jr, MP
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Wooster Bertram Wilberforce H.R. Jr, MP
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Wooster, Bertram Wilberforce H.R.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Wooster, B.W.H.R.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; B.W.H.R. Wooster
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Wooster B.W.H.R.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Wooster, Bertie
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Bertie Wooster
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Wooster Bertie
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Wooster B.W.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Mr Wooster
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Bertie W.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Bertie
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; BHW
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; WBH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; BW
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; WB
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; B
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; W
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; Sinbad
+name ; locale; ja_AQ
+
+expectedResult; Sinbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Käthe
+name ; surname; Müller
+name ; locale; ja_AQ
+
+expectedResult; Müller, Käthe
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Käthe Müller
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Müller Käthe
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Müller, K.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; K. Müller
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Müller K.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Käthe M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Müller
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Käthe
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Zäzilia
+name ; given2; Hamish
+name ; surname; Stöber
+name ; locale; ja_AQ
+
+expectedResult; Stöber, Zäzilia Hamish
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Stöber Zäzilia Hamish
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Zäzilia Hamish Stöber
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Stöber, Zäzilia H.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Stöber Zäzilia H.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Zäzilia H. Stöber
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Stöber, Zäzilia
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Stöber Zäzilia
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Zäzilia Stöber
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Stöber, Z.H.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Stöber Z.H.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Z.H. Stöber
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Zäzilia S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Stöber Z.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Zäzilia
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Stöber
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; SZH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ZHS
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; SZ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ZS
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Z
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; Prof Dr
+name ; given; Ada Cornelia
+name ; given-informal; Neele
+name ; given2; César Martín
+name ; surname-prefix; von
+name ; surname-core; Brühl
+name ; surname2; González Domingo
+name ; generation; Jr
+name ; credentials; MD DDS
+name ; locale; ja_AQ
+
+expectedResult; Prof Dr Ada Cornelia César Martín von Brühl Jr, MD DDS
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; von Brühl Prof Dr Ada Cornelia César Martín Jr, MD DDS
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Ada Cornelia C.M. von Brühl Jr, MD DDS
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; von Brühl Ada Cornelia C.M. Jr, MD DDS
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Brühl, Ada Cornelia César Martín von
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Brühl, Ada Cornelia C.M. von
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Brühl, A.C.C.M. von
+
+parameters; sorting; short; referring; formal
+
+expectedResult; A.C.C.M. von Brühl
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; von Brühl A.C.C.M.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Prof Dr von Brühl
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; von Brühl, Neele
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Neele von Brühl
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; von Brühl Neele
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; von Brühl A.C.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Neele v.B.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Neele
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ACV
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; VAC
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; NV
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VN
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; N
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/es.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/es.txt
new file mode 100644
index 00000000000..3cb56375b91
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/es.txt
@@ -0,0 +1,824 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: es
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Lola
+name ; locale; es_AQ
+
+expectedResult; Lola
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; L
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Lucía
+name ; surname; Pérez
+name ; locale; es_AQ
+
+expectedResult; Pérez, Lucía
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Lucía Pérez
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Pérez Lucía
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+
+expectedResult; Pérez, L.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; L. Pérez
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Lucía P.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Pérez L.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Lucía
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Pérez
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; LP
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; PL
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; L
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; P
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeGGS
+name ; given; Rosa
+name ; given2; María
+name ; surname; Ruiz
+name ; locale; es_AQ
+
+expectedResult; Ruiz, Rosa María
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Rosa María Ruiz
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Ruiz Rosa María
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Ruiz, Rosa M.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Rosa M. Ruiz
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Ruiz Rosa M.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Ruiz, R. M.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; R. M. Ruiz
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Ruiz R. M.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Ruiz, Rosa
+
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Rosa Ruiz
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Ruiz Rosa
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+
+expectedResult; Rosa R.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Ruiz R.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Rosa
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Ruiz
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; RRM
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; RR
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; R
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeFull
+name ; title; Sr.
+name ; given; Miguel Ãngel
+name ; given-informal; Migue
+name ; given2; Juan Antonio
+name ; surname-core; Pablo
+name ; surname2; Pérez
+name ; generation; II
+name ; locale; es_AQ
+
+expectedResult; Pablo Pérez, Sr. Miguel Ãngel Juan Antonio
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Pablo Pérez Miguel Ãngel Juan Antonio II
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Sr. Miguel Ãngel Juan Antonio Pablo II
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Pablo, Sr. Miguel Ãngel Juan Antonio
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Pablo Pérez, Sr. Miguel Ãngel J. A.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Miguel Ãngel J. A. Pablo II
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Pablo Miguel Ãngel J. A.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Pablo Pérez, Migue
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+
+expectedResult; M. Ã. J. A. Pablo
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Migue Pablo Pérez
+
+parameters; givenFirst; long; referring; informal
+
+expectedResult; Pablo M. Ã. J. A.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Pablo Pérez Migue
+
+parameters; surnameFirst; long; referring; informal
+
+expectedResult; Sr. Pablo Pérez
+
+parameters; givenFirst; long; addressing; formal
+
+expectedResult; Pablo, Migue
+
+parameters; sorting; short; referring; informal
+
+expectedResult; Migue Pablo
+
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Pablo M. Ã.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Pablo Migue
+
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Sr. Pablo
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Migue P.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Migue
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; MPP
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; PMJ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; PM
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; P
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; Peter
+name ; locale; ko_AQ
+
+expectedResult; Peter
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; P
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Martine
+name ; surname; Sodersen
+name ; locale; ko_AQ
+
+expectedResult; Sodersen, Martine
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Martine Sodersen
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Sodersen Martine
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+
+expectedResult; Sodersen, M.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; M. Sodersen
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Sodersen M.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Martine S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Sodersen
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Martine
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; MS
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; SM
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Christopher
+name ; given2; Hans
+name ; surname; Jacobsen
+name ; locale; ko_AQ
+
+expectedResult; Jacobsen, Christopher Hans
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Christopher Hans Jacobsen
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Jacobsen Christopher Hans
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Jacobsen, Christopher H.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Christopher H. Jacobsen
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Jacobsen Christopher H.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Jacobsen, Christopher
+
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Christopher Jacobsen
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Jacobsen Christopher
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+
+expectedResult; Jacobsen, C. H.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; C. H. Jacobsen
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Christopher J.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Jacobsen C. H.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Christopher
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Jacobsen C.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Jacobsen
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; JCH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; CJ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; JC
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; C
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; J
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignFull
+name ; title; Prof. Dr.
+name ; given; Mary Sue
+name ; given-informal; Marge
+name ; given2; Marie
+name ; surname-prefix; von
+name ; surname-core; Miller
+name ; surname2; Jones
+name ; generation; II
+name ; credentials; MD DDS
+name ; locale; ko_AQ
+
+expectedResult; Prof. Dr. Mary Sue Marie von Miller II, MD DDS
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; von Miller Jones Mary Sue Marie II, MD DDS
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; von Miller Jones, Prof. Dr. Mary Sue Marie
+
+parameters; sorting; long; referring; formal
+
+expectedResult; von Miller Jones, Prof. Dr. Mary Sue M.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; von Miller, Prof. Dr. Mary Sue Marie
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Mary Sue M. von Miller II, MD DDS
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Prof. Dr. von Miller Jones
+
+parameters; givenFirst; long; addressing; formal
+
+expectedResult; von Miller Jones, Marge
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+
+expectedResult; Marge von Miller Jones
+
+parameters; givenFirst; long; referring; informal
+
+expectedResult; von Miller Jones Marge
+
+parameters; surnameFirst; long; referring; informal
+
+expectedResult; von Miller Mary Sue M.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Prof. Dr. von Miller
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; M. S. M. von Miller
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; von Miller M. S. M.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; von Miller, Marge
+
+parameters; sorting; short; referring; informal
+
+expectedResult; Marge von Miller
+
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; von Miller M. S.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; von Miller Marge
+
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Marge v. M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Marge
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; MVJ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VMM
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; VM
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/es_419.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/es_419.txt
new file mode 100644
index 00000000000..3821f6ea0ca
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/es_419.txt
@@ -0,0 +1,830 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: es_419
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Diego
+name ; locale; es_419
+
+expectedResult; Diego
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; D
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Lucía
+name ; surname; García Pérez
+name ; locale; es_419
+
+expectedResult; García Pérez, Lucía
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; García Pérez Lucía
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+
+expectedResult; Lucía García Pérez
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; García Pérez, L.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; García Pérez L.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; L. García Pérez
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; García Pérez
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Lucía G. P.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Lucía
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; GL
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; LG
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; G
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; L
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; Juan
+name ; given2; Luis Antonio
+name ; surname; Rodríguez Ruiz
+name ; locale; es_419
+
+expectedResult; Rodríguez Ruiz, Juan Luis Antonio
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Juan Luis Antonio Rodríguez Ruiz
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Rodríguez Ruiz Juan Luis Antonio
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Rodríguez Ruiz, Juan L. A.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Juan L. A. Rodríguez Ruiz
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Rodríguez Ruiz Juan L. A.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Rodríguez Ruiz, J. L. A.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; J. L. A. Rodríguez Ruiz
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Rodríguez Ruiz J. L. A.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Rodríguez Ruiz, Juan
+
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Juan Rodríguez Ruiz
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Rodríguez Ruiz Juan
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+
+expectedResult; Rodríguez Ruiz J.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Rodríguez Ruiz
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Juan R. R.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Juan
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; RJL
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; JR
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; RJ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; J
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; R
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; Sr.
+name ; given; Miguel Ãngel
+name ; given-informal; Migue
+name ; given2; Juan Antonio
+name ; surname-core; Pablo
+name ; surname2; Pérez
+name ; generation; II
+name ; locale; es_419
+
+expectedResult; Pablo Pérez, Sr. Miguel Ãngel Juan Antonio
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Sr. Miguel Ãngel Juan Antonio Pablo II
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Pablo Pérez Miguel Ãngel Juan Antonio
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Pablo, Sr. Miguel Ãngel Juan Antonio
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Pablo Pérez, Sr. Miguel Ãngel J. A.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Miguel Ãngel J. A. Pablo
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Pablo Miguel Ãngel J. A.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Pablo Pérez, Migue
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+
+expectedResult; M. Ã. J. A. Pablo
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Migue Pablo Pérez
+
+parameters; givenFirst; long; referring; informal
+
+expectedResult; Pablo M. Ã. J. A.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Pablo Pérez Migue
+
+parameters; surnameFirst; long; referring; informal
+
+expectedResult; Sr. Pablo Pérez
+
+parameters; givenFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+
+expectedResult; Pablo, Migue
+
+parameters; sorting; short; referring; informal
+
+expectedResult; Migue Pablo
+
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Pablo M. Ã.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Pablo Migue
+
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Sr. Pablo
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Migue P.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Migue
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; MPP
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; PMJ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; PM
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; P
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; Peter
+name ; locale; ko_AQ
+
+expectedResult; Peter
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; P
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Martine
+name ; surname; Sodersen
+name ; locale; ko_AQ
+
+expectedResult; Sodersen, Martine
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Martine Sodersen
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Sodersen Martine
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+
+expectedResult; Sodersen, M.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; M. Sodersen
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Sodersen M.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Martine S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Sodersen
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Martine
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; MS
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; SM
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Christopher
+name ; given2; Hans
+name ; surname; Jacobsen
+name ; locale; ko_AQ
+
+expectedResult; Jacobsen, Christopher Hans
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Christopher Hans Jacobsen
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Jacobsen Christopher Hans
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Jacobsen, Christopher H.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Christopher H. Jacobsen
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Jacobsen Christopher H.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Jacobsen, Christopher
+
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Christopher Jacobsen
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Jacobsen Christopher
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+
+expectedResult; Jacobsen, C. H.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; C. H. Jacobsen
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Christopher J.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Jacobsen C. H.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Christopher
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Jacobsen C.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Jacobsen
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; JCH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; CJ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; JC
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; C
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; J
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignFull
+name ; title; Prof. Dra.
+name ; given; Mary Sue
+name ; given-informal; Marge
+name ; given2; Marie
+name ; surname-prefix; von
+name ; surname-core; Miller
+name ; surname2; Jones
+name ; generation; II
+name ; credentials; Dr./Dra.
+name ; locale; ko_AQ
+
+expectedResult; Prof. Dra. Mary Sue Marie von Miller II, Dr./Dra.
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; von Miller Jones, Prof. Dra. Mary Sue Marie
+
+parameters; sorting; long; referring; formal
+
+expectedResult; von Miller Jones Mary Sue Marie Dr./Dra.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; von Miller Jones, Prof. Dra. Mary Sue M.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; von Miller, Prof. Dra. Mary Sue Marie
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Mary Sue M. von Miller Dr./Dra.
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; von Miller Mary Sue M. Dr./Dra.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Prof. Dra. von Miller Jones
+
+parameters; givenFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+
+expectedResult; von Miller Jones, Marge
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+
+expectedResult; Marge von Miller Jones
+
+parameters; givenFirst; long; referring; informal
+
+expectedResult; von Miller Jones Marge
+
+parameters; surnameFirst; long; referring; informal
+
+expectedResult; Prof. Dra. von Miller
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; M. S. M. von Miller
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; von Miller M. S. M.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; von Miller, Marge
+
+parameters; sorting; short; referring; informal
+
+expectedResult; Marge von Miller
+
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; von Miller M. S.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; von Miller Marge
+
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Marge v. M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Marge
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; MVJ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VMM
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; VM
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/es_MX.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/es_MX.txt
new file mode 100644
index 00000000000..74c4a52d293
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/es_MX.txt
@@ -0,0 +1,831 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: es_MX
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Diego
+name ; locale; es_MX
+
+expectedResult; Diego
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; D
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Lucía
+name ; surname; García Pérez
+name ; locale; es_MX
+
+expectedResult; García Pérez, Lucía
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; García Pérez Lucía
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+
+expectedResult; Lucía García Pérez
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; García Pérez, L.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; García Pérez L.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; L. García Pérez
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; García Pérez
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Lucía G. P.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Lucía
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; GL
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; LG
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; G
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; L
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; Juan
+name ; given2; Luis Antonio
+name ; surname; Rodríguez Ruiz
+name ; locale; es_MX
+
+expectedResult; Rodríguez Ruiz, Juan Luis Antonio
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Juan Luis Antonio Rodríguez Ruiz
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Rodríguez Ruiz Juan Luis Antonio
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Rodríguez Ruiz, Juan L. A.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Juan L. A. Rodríguez Ruiz
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Rodríguez Ruiz Juan L. A.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Rodríguez Ruiz, J. L. A.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; J. L. A. Rodríguez Ruiz
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Rodríguez Ruiz J. L. A.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Rodríguez Ruiz, Juan
+
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Juan Rodríguez Ruiz
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Rodríguez Ruiz Juan
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+
+expectedResult; Rodríguez Ruiz J.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Rodríguez Ruiz
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Juan R. R.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Juan
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; RJL
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; JR
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; RJ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; J
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; R
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; Sr.
+name ; given; Marcelo Miguel
+name ; given-informal; Marce
+name ; given2; Javier Ariel
+name ; surname-core; Romero
+name ; surname2; Pérez
+name ; generation; Júnior
+name ; credentials; Miembro del Parlamento
+name ; locale; es_MX
+
+expectedResult; Romero Pérez Marcelo Miguel Javier Ariel Miembro del Parlamento
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Marcelo Miguel J. A. Romero Miembro del Parlamento
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Romero Marcelo Miguel J. A. Miembro del Parlamento
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Romero Pérez, Sr. Marcelo Miguel Javier Ariel
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Sr. Marcelo Miguel Javier Ariel Romero Pérez
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Romero, Sr. Marcelo Miguel Javier Ariel
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Romero Pérez, Sr. Marcelo Miguel J. A.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Romero Pérez, Marce
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+
+expectedResult; M. M. J. A. Romero
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Marce Romero Pérez
+
+parameters; givenFirst; long; referring; informal
+
+expectedResult; Romero M. M. J. A.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Romero Pérez Marce
+
+parameters; surnameFirst; long; referring; informal
+
+expectedResult; Sr. Romero Pérez
+
+parameters; givenFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+
+expectedResult; Romero, Marce
+
+parameters; sorting; short; referring; informal
+
+expectedResult; Marce Romero
+
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Romero M. M.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Romero Marce
+
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Sr. Romero
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Marce R.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Marce
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; MRP
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; RMJ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; RM
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; R
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; Mohammed
+name ; locale; ko_AQ
+
+expectedResult; Mohammed
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; M
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Zäzilia
+name ; surname; Stöber
+name ; locale; ko_AQ
+
+expectedResult; Stöber, Zäzilia
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Stöber Zäzilia
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+
+expectedResult; Zäzilia Stöber
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Stöber, Z.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Zäzilia S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Stöber Z.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Z. Stöber
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Zäzilia
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Stöber
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; SZ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ZS
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Z
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGGS
+name ; given; Käthe
+name ; given2; Kate
+name ; surname; Müller
+name ; locale; ko_AQ
+
+expectedResult; Müller, Käthe Kate
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Käthe Kate Müller
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Müller Käthe Kate
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Müller, Käthe K.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Käthe K. Müller
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Müller Käthe K.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Müller, K. K.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Müller, Käthe
+
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; K. K. Müller
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Käthe Müller
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Müller K. K.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Müller Käthe
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+
+expectedResult; Müller K.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Käthe M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Müller
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Käthe
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; MKK
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignFull
+name ; title; Prof. Dra.
+name ; given; Mary Sue
+name ; given-informal; Marge
+name ; given2; Marie
+name ; surname-prefix; von
+name ; surname-core; Miller
+name ; surname2; Jones
+name ; generation; II
+name ; credentials; Dr./Dra.
+name ; locale; ko_AQ
+
+expectedResult; von Miller Jones, Prof. Dra. Mary Sue Marie
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Prof. Dra. Mary Sue Marie von Miller Jones
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; von Miller Jones Mary Sue Marie Dr./Dra.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; von Miller Jones, Prof. Dra. Mary Sue M.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; von Miller, Prof. Dra. Mary Sue Marie
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Mary Sue M. von Miller Dr./Dra.
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; von Miller Mary Sue M. Dr./Dra.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Prof. Dra. von Miller Jones
+
+parameters; givenFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+
+expectedResult; von Miller Jones, Marge
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+
+expectedResult; Marge von Miller Jones
+
+parameters; givenFirst; long; referring; informal
+
+expectedResult; von Miller Jones Marge
+
+parameters; surnameFirst; long; referring; informal
+
+expectedResult; Prof. Dra. von Miller
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; M. S. M. von Miller
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; von Miller M. S. M.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; von Miller, Marge
+
+parameters; sorting; short; referring; informal
+
+expectedResult; Marge von Miller
+
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; von Miller M. S.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; von Miller Marge
+
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Marge v. M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Marge
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; MVJ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VMM
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; VM
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/es_US.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/es_US.txt
new file mode 100644
index 00000000000..8af3e97c769
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/es_US.txt
@@ -0,0 +1,801 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: es_US
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Diego
+name ; locale; es_US
+
+expectedResult; Diego
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; D
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Lucía
+name ; surname; García Pérez
+name ; locale; es_US
+
+expectedResult; García Pérez, Lucía
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; García Pérez Lucía
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+
+expectedResult; Lucía García Pérez
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; García Pérez L.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; L. García Pérez
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; García Pérez
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Lucía G. P.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Lucía
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; GL
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; LG
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; G
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; L
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; Juan
+name ; given2; Luis Antonio
+name ; surname; Rodríguez Ruiz
+name ; locale; es_US
+
+expectedResult; Rodríguez Ruiz, Juan Luis Antonio
+
+parameters; sorting; long; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; Juan Luis Antonio Rodríguez Ruiz
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Rodríguez Ruiz Juan Luis Antonio
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Rodríguez Ruiz, Juan L. A.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Juan L. A. Rodríguez Ruiz
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Rodríguez Ruiz Juan L. A.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; J. L. A. Rodríguez Ruiz
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Rodríguez Ruiz J. L. A.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Juan Rodríguez Ruiz
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Rodríguez Ruiz Juan
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Rodríguez Ruiz J.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Rodríguez Ruiz
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Juan R. R.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Juan
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; RJL
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; JR
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; RJ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; J
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; R
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; Sr.
+name ; given; Alejandro Martín
+name ; given-informal; Ale
+name ; given2; Carlos Miguel
+name ; surname-core; García
+name ; surname2; Pérez
+name ; generation; Júnior
+name ; credentials; Miembro del Parlamento
+name ; locale; es_US
+
+expectedResult; Sr. Alejandro Martín Carlos Miguel García Júnior, Miembro del Parlamento
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; García Pérez Alejandro Martín Carlos Miguel Miembro del Parlamento
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Alejandro Martín C. M. García Miembro del Parlamento
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; García Alejandro Martín C. M. Miembro del Parlamento
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; García Pérez, Alejandro Martín Carlos Miguel
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; García, Sr. Alejandro Martín Carlos Miguel
+
+parameters; sorting; long; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; García, Sr. Alejandro Martín C. M.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; A. M. C. M. García
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; García A. M. C. M.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Ale García Pérez
+
+parameters; givenFirst; long; referring; informal
+
+expectedResult; García Pérez Ale
+
+parameters; surnameFirst; long; referring; informal
+
+expectedResult; Sr. García Pérez
+
+parameters; givenFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+
+expectedResult; García A. M.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Ale García
+
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; García Ale
+
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Sr. García
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Ale G.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; AGP
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; Ale
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; GAC
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; GA
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; G
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; Aziz
+name ; locale; ko_AQ
+
+expectedResult; Aziz
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; A
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Kate
+name ; surname; Smith
+name ; locale; ko_AQ
+
+expectedResult; Smith, Kate
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Kate Smith
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Smith Kate
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+
+expectedResult; K. Smith
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Smith K.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Kate S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Smith
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Kate
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; KS
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; SK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Sarah
+name ; given2; Anna
+name ; surname; Johnson
+name ; locale; ko_AQ
+
+expectedResult; Johnson, Sarah Anna
+
+parameters; sorting; long; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; Johnson Sarah Anna
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Sarah Anna Johnson
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Johnson, Sarah A.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Johnson Sarah A.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Sarah A. Johnson
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Johnson S. A.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Johnson Sarah
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; S. A. Johnson
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Sarah Johnson
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Johnson S.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Sarah J.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Johnson
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Sarah
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; JSA
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; JS
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; SJ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; J
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; Prof. Dra.
+name ; given; Mary Sue
+name ; given-informal; Marge
+name ; given2; Marie
+name ; surname-prefix; de
+name ; surname-core; Miller
+name ; surname2; Jones
+name ; generation; II
+name ; credentials; Dr./Dra.
+name ; locale; ko_AQ
+
+expectedResult; Prof. Dra. Mary Sue Marie de Miller II, Dr./Dra.
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; de Miller Jones Mary Sue Marie Dr./Dra.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; de Miller, Prof. Dra. Mary Sue Marie
+
+parameters; sorting; long; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; de Miller, Prof. Dra. Mary Sue M.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; de Miller Jones, Mary Sue Marie
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; de Miller Mary Sue M. Dr./Dra.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Mary Sue M. de Miller Dr./Dra.
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Prof. Dra. de Miller Jones
+
+parameters; givenFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+
+expectedResult; de Miller Jones Marge
+
+parameters; surnameFirst; long; referring; informal
+
+expectedResult; Marge de Miller Jones
+
+parameters; givenFirst; long; referring; informal
+
+expectedResult; Prof. Dra. de Miller
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; de Miller M. S. M.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; M. S. M. de Miller
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; de Miller M. S.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; de Miller Marge
+
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Marge de Miller
+
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Marge d. M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Marge
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; DMM
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; MDJ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; DM
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; D
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/et.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/et.txt
new file mode 100644
index 00000000000..543ce3eb954
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/et.txt
@@ -0,0 +1,749 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: et
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Mari
+name ; locale; et_AQ
+
+expectedResult; Mari
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; M
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Anne
+name ; surname; Sepp
+name ; locale; et_AQ
+
+expectedResult; Sepp, Anne
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Anne Sepp
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Sepp Anne
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Sepp, A.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; short; referring; formal
+
+expectedResult; A. Sepp
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Anne S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Anne
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Sepp
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; AS
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; SA
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; A
+
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; S
+
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeGGS
+name ; given; Jaak
+name ; given2; Eerik
+name ; surname; Kask
+name ; locale; et_AQ
+
+expectedResult; Kask, Jaak Eerik
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+
+expectedResult; Jaak Eerik Kask
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Kask Jaak Eerik
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Kask, J. E.
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; J. E. Kask
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Kask, Jaak
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Jaak Kask
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Kask, J.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Jaak K.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Jaak
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Kask
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; JEK
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; KJE
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; J
+
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; K
+
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; hr
+name ; given; Mari-Ann
+name ; given-informal; Mari
+name ; given2; Henri Roobert
+name ; surname-core; Tammik
+name ; generation; jr
+name ; credentials; parlamendiliige
+name ; locale; et_AQ
+
+expectedResult; Tammik hr Mari-Ann Henri Roobert parlamendiliige
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Tammik, Mari-Ann Henri Roobert, parlamendiliige
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; Mari-Ann Henri Roobert Tammik, parlamendiliige
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Tammik, Mari-Ann Henri Roobert
+
+parameters; sorting; long; referring; informal
+
+expectedResult; Tammik, M. A. H. R.
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; M. A. H. R. Tammik
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Tammik, Mari-Ann
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Mari-Ann Tammik
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Tammik, M. A.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Tammik, Mari
+
+parameters; sorting; medium; referring; informal
+
+expectedResult; Mari-Ann T.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; hr Tammik
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Mari-Ann
+
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Mari
+
+parameters; givenFirst; long; addressing; informal
+
+expectedResult; MHT
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; TMH
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; M
+
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; T
+
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; Sinbad
+name ; locale; ja_AQ
+
+expectedResult; Sinbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Käthe
+name ; surname; Müller
+name ; locale; ja_AQ
+
+expectedResult; Müller, Käthe
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Käthe Müller
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Müller Käthe
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Müller, K.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; short; referring; formal
+
+expectedResult; K. Müller
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Käthe M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Müller
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Käthe
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; K
+
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Zäzilia
+name ; given2; Hamish
+name ; surname; Stöber
+name ; locale; ja_AQ
+
+expectedResult; Stöber, Zäzilia Hamish
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+
+expectedResult; Stöber Zäzilia Hamish
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Zäzilia Hamish Stöber
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Stöber, Zäzilia
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Zäzilia Stöber
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Stöber, Z. H.
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; Z. H. Stöber
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Stöber, Z.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Zäzilia S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Zäzilia
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Stöber
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; SZH
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; ZHS
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; S
+
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Z
+
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; Prof
+name ; given; Anna Liina
+name ; given-informal; Anni
+name ; given2; Eva Sofia
+name ; surname-prefix; von
+name ; surname-core; Vall
+name ; surname2; Heinmann Laas
+name ; generation; jr
+name ; credentials; MD, PhD
+name ; locale; ja_AQ
+
+expectedResult; von Vall Heinmann Laas Prof Anna Liina Eva Sofia MD, PhD
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; von Vall, Anna Liina Eva Sofia, MD, PhD
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; Anna Liina Eva Sofia von Vall, MD, PhD
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; von Vall, Anna Liina Eva Sofia
+
+parameters; sorting; long; referring; informal
+
+expectedResult; von Vall, A. L. E. S.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; A. L. E. S. von Vall
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; von Vall, Anna Liina
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Anna Liina von Vall
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Vall, A. L. E. S.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Anna Liina v. V.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; von Vall, A. L.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; von Vall, Anni
+
+parameters; sorting; medium; referring; informal
+
+expectedResult; Prof von Vall
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Anna Liina
+
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Anni
+
+parameters; givenFirst; long; addressing; informal
+
+expectedResult; AEV
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; VAE
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; A
+
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/eu.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/eu.txt
new file mode 100644
index 00000000000..eb47d520f42
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/eu.txt
@@ -0,0 +1,758 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: eu
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Maider
+name ; locale; eu_AQ
+
+expectedResult; Maider
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; M
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Irene
+name ; surname; Aduritz
+name ; locale; eu_AQ
+
+expectedResult; Aduritz, Irene
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Irene Aduritz
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Aduritz, I.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; short; referring; formal
+
+expectedResult; I. Aduritz
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Irene A.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Aduritz
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Irene
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; AI
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; IA
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; I
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; Ane
+name ; given2; Miren
+name ; surname; Urrestaratzu
+name ; locale; eu_AQ
+
+expectedResult; Urrestaratzu, Ane Miren
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+
+expectedResult; Ane Miren Urrestaratzu
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Urrestaratzu, Ane M.
+
+parameters; surnameFirst; medium; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; Ane M. Urrestaratzu
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Urrestaratzu, A. M.
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; A. M. Urrestaratzu
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Urrestaratzu, Ane
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ane Urrestaratzu
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Urrestaratzu, A.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Urrestaratzu
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Ane U.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; AMU
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; Ane
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; UAM
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; AU
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; UA
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; U
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; jn.
+name ; given; Jon
+name ; given-informal; Jontxu
+name ; given2; Andoni
+name ; surname-core; Urrestaratzu
+name ; surname2; Etxeberria
+name ; generation; jr.
+name ; locale; eu_AQ
+
+expectedResult; Urrestaratzu, Jon Andoni
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+
+expectedResult; Jon Andoni Urrestaratzu
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Urrestaratzu, Jon A.
+
+parameters; surnameFirst; medium; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; Urrestaratzu, Jontxu
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Jon A. Urrestaratzu
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Jontxu Urrestaratzu
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Urrestaratzu, J. A.
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; J. A. Urrestaratzu
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Urrestaratzu jn.
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Urrestaratzu, J.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Jontxu U.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Jontxu
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; JAU
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; UJA
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; JU
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; UJ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; J
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; U
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; Sinbad
+name ; locale; ko_AQ
+
+expectedResult; Sinbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Käthe
+name ; surname; Müller
+name ; locale; ko_AQ
+
+expectedResult; Müller, Käthe
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Käthe Müller
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Müller, K.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; short; referring; formal
+
+expectedResult; K. Müller
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Käthe M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Müller
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Käthe
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Zäzilia
+name ; given2; Hamish
+name ; surname; Stöber
+name ; locale; ko_AQ
+
+expectedResult; Stöber, Zäzilia Hamish
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+
+expectedResult; Zäzilia Hamish Stöber
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Stöber, Zäzilia H.
+
+parameters; surnameFirst; medium; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; Zäzilia H. Stöber
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Stöber, Zäzilia
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Zäzilia Stöber
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Stöber, Z. H.
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; Z. H. Stöber
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Stöber, Z.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Zäzilia S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Zäzilia
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Stöber
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; SZH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ZHS
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; SZ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ZS
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Z
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; irak. dk.
+name ; given; Ada Cornelia
+name ; given-informal; Neele
+name ; given2; César Martín
+name ; surname-prefix; von
+name ; surname-core; Brühl
+name ; surname2; González Domingo
+name ; generation; jr.
+name ; credentials; MD DDS
+name ; locale; ko_AQ
+
+expectedResult; von Brühl, Ada Cornelia César Martín MD DDS
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+
+expectedResult; Ada Cornelia César Martín von Brühl MD DDS
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; von Brühl, Ada Cornelia C. M. MD DDS
+
+parameters; surnameFirst; medium; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; Ada Cornelia C. M. von Brühl MD DDS
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; von Brühl, A. C. C. M.
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; A. C. C. M. von Brühl
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; von Brühl irak. dk.
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; von Brühl, A. C.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; von Brühl, Neele
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Neele von Brühl
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Neele v. B.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Neele
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ACV
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; VAC
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; NV
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VN
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; N
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/fa.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/fa.txt
new file mode 100644
index 00000000000..ee9efab2b5c
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/fa.txt
@@ -0,0 +1,734 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: fa
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; ژیلا
+name ; locale; fa_AQ
+
+expectedResult; ژیلا
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ú˜
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; آیتین
+name ; surname; عدلو
+name ; locale; fa_AQ
+
+expectedResult; عدلو، آیتین
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; آیتین عدلو
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; آیتین ع.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; عدلو، آ.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; short; referring; formal
+
+expectedResult; آ. عدلو
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; آیتین
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; عدلو
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; آ.ع
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; ع.آ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; آ
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; ع
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeGGS
+name ; given; امید
+name ; given2; رضا
+name ; surname; ملایری
+name ; locale; fa_AQ
+
+expectedResult; ملایری، امید رضا
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+
+expectedResult; امید رضا ملایری
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; ملایری، امید ر.
+
+parameters; surnameFirst; medium; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; ملایری، ا. ر.
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; ا. ر. ملایری
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ملایری، امید
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; امید ملایری
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; ملایری، ا.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; امید م.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ملایری
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ا.ر.م
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; م.ا.ر
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; امید
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ا
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; Ù…
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; آقای
+name ; given; امیر
+name ; given-informal; هومن
+name ; given2; هوشنگ
+name ; surname-core; رستگار
+name ; surname2; اسدآبادی
+name ; credentials; دکتر
+name ; locale; fa_AQ
+
+expectedResult; رستگار، آقای امیر هوشنگ دکتر
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; آقای امیر هوشنگ رستگار دکتر
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; رستگار، امیر ه. دکتر
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; رستگار، امیر هوشنگ
+
+parameters; sorting; long; referring; formal
+
+expectedResult; رستگار، امیر ه.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; رستگار، ا. ه.
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; ا. ه. رستگار
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; رستگار، هومن
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; آقای رستگار
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; هومن رستگار
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; رستگار، ا.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; هومن ر.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ا.ه.ر
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; ر.ا.ه
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; هومن
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ر
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Ù‡
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; سامانتا
+name ; locale; ko_AQ
+
+expectedResult; سامانتا
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; س
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; کاتیا
+name ; surname; مولر
+name ; locale; ko_AQ
+
+expectedResult; مولر، کاتیا
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; کاتیا مولر
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; کاتیا م.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; مولر، ک.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; short; referring; formal
+
+expectedResult; ک. مولر
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; کاتیا
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; مولر
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Ú©.Ù…
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; Ù….Ú©
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; Ú©
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; Ù…
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; زازیلیا
+name ; given2; هایمیش
+name ; surname; استوبر
+name ; locale; ko_AQ
+
+expectedResult; استوبر، زازیلیا هایمیش
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+
+expectedResult; زازیلیا هایمیش استوبر
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; استوبر، زازیلیا ه.
+
+parameters; surnameFirst; medium; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; استوبر، زازیلیا
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; زازیلیا استوبر
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; استوبر، ز. ه.
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; ز. ه. استوبر
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; استوبر، ز.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; زازیلیا ا.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; زازیلیا
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; استوبر
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ا.ز.ه
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ز.ه.ا
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; ا
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; ز
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; پروÙسور
+name ; given; آدا کورنلیا
+name ; given-informal; نیل
+name ; given2; سزار مارتین
+name ; surname-prefix; وان
+name ; surname-core; بروهل
+name ; surname2; گونزالس دومینگو
+name ; generation; جونیور
+name ; credentials; دکترای دندانپزشکی
+name ; locale; ko_AQ
+
+expectedResult; وان بروهل، پروÙسور آدا کورنلیا سزار مارتین جونیور، دکترای دندانپزشکی
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; پروÙسور آدا کورنلیا سزار مارتین وان بروهل جونیور، دکترای دندانپزشکی
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; وان بروهل، آدا کورنلیا س. م. جونیور، دکترای دندانپزشکی
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; بروهل، آدا کورنلیا سزار مارتین وان
+
+parameters; sorting; long; referring; formal
+
+expectedResult; بروهل، آدا کورنلیا س. م. وان
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; وان بروهل، آ. ک. س. م.
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; آ. ک. س. م. وان بروهل
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; پروÙسور وان بروهل
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; وان بروهل، آ. ک.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; وان بروهل، نیل
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; نیل وان بروهل
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; نیل و. ب.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; آ.س.و
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; و.آ.س
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; نیل
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Ù†
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; Ùˆ
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/fi.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/fi.txt
new file mode 100644
index 00000000000..7a456e3907d
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/fi.txt
@@ -0,0 +1,780 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: fi
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Louhi
+name ; locale; fi_AQ
+
+expectedResult; Louhi
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; L
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Seppo
+name ; surname; Ilmarinen
+name ; locale; fi_AQ
+
+expectedResult; Ilmarinen, Seppo
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ilmarinen Seppo
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Seppo Ilmarinen
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Ilmarinen, S.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Ilmarinen S.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; S. Ilmarinen
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Ilmarinen
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Seppo I.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Seppo
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; IS
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; SI
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; I
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; Ulrika
+name ; given2; Wilhelmina
+name ; surname; Canth
+name ; locale; fi_AQ
+
+expectedResult; Canth, Ulrika Wilhelmina
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Canth Ulrika Wilhelmina
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Ulrika Wilhelmina Canth
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Canth, Ulrika W.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Canth, Ulrika
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Canth Ulrika
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Canth, U. W.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Ulrika Canth
+
+parameters; givenFirst; long; referring; informal
+
+expectedResult; Canth U. W.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; U. W. Canth
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Ulrika C.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Canth U.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Ulrika
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Canth
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; CUW
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; UWC
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; C
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; U
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeFull
+name ; given; Marja-Liisa
+name ; given-informal; Maikki
+name ; given2; Katariina
+name ; surname-core; Lehtola-Aalto
+name ; credentials; kansanedustaja
+name ; locale; fi_AQ
+
+expectedResult; Lehtola-Aalto Marja-Liisa Katariina, kansanedustaja
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Marja-Liisa Katariina Lehtola-Aalto kansanedustaja
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Lehtola-Aalto, Marja-Liisa Katariina
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Marja-Liisa Katariina Lehtola-Aalto
+
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Lehtola-Aalto, Marja-Liisa K.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Lehtola-Aalto Marja-Liisa
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Marja-Liisa Lehtola-Aalto
+
+parameters; givenFirst; long; referring; informal
+
+expectedResult; Lehtola-Aalto, M. L. K.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Lehtola-Aalto M. L. K.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; M. L. K. Lehtola-Aalto
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Lehtola-Aalto, Maikki
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Lehtola-Aalto M. L.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Lehtola-Aalto
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Maikki L. A.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Maikki
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; LMK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; MKL
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; L
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; Sinbad
+name ; locale; ko_AQ
+
+expectedResult; Sinbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Käthe
+name ; surname; Müller
+name ; locale; ko_AQ
+
+expectedResult; Müller, Käthe
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Käthe Müller
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Müller Käthe
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Müller, K.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; K. Müller
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Müller K.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Käthe M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Müller
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Käthe
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; John
+name ; given2; Hamish
+name ; surname; Watson
+name ; locale; ko_AQ
+
+expectedResult; Watson, John Hamish
+
+parameters; sorting; long; referring; formal
+
+expectedResult; John Hamish Watson
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Watson John Hamish
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Watson, John H.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Watson, J. H.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; J. H. Watson
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Watson J. H.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Watson, John
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; John Watson
+
+parameters; givenFirst; long; referring; informal
+
+expectedResult; Watson John
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Watson J.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; John W.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Watson
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; John
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; JHW
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; WJH
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; J
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; W
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignFull
+name ; title; professori
+name ; given; Ana Christina
+name ; given-informal; Chrissy
+name ; given2; Lëja
+name ; surname-prefix; von
+name ; surname-core; Wright
+name ; surname2; González Domingo
+name ; generation; jr.
+name ; credentials; MD DDS
+name ; locale; ko_AQ
+
+expectedResult; professori Ana Christina Lëja von Wright González Domingo, MD DDS
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; von Wright González Domingo Ana Christina Lëja, professori MD DDS
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; von Wright González Domingo Ana Christina, professori
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Ana Christina Lëja von Wright González Domingo
+
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; professori von Wright González Domingo
+
+parameters; givenFirst; long; addressing; formal
+
+expectedResult; von Wright, Ana Christina Lëja
+
+parameters; sorting; long; referring; formal
+
+expectedResult; von Wright, Ana Christina L.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Ana Christina von Wright
+
+parameters; givenFirst; long; referring; informal
+
+expectedResult; von Wright Ana Christina
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; professori von Wright
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; von Wright, A. C. L.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; A. C. L. von Wright
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; von Wright A. C. L.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; von Wright, Chrissy
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; von Wright A. C.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Chrissy v. W.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Chrissy
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ALV
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VAL
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; C
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/fil.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/fil.txt
new file mode 100644
index 00000000000..c966189a0b6
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/fil.txt
@@ -0,0 +1,818 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: fil
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Zendaya
+name ; locale; fil_AQ
+
+expectedResult; Zendaya
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Z
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Irene
+name ; surname; Adler
+name ; locale; fil_AQ
+
+expectedResult; Adler, Irene
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Adler Irene
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Irene Adler
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Adler, I.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Adler I.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; I. Adler
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Irene A.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Adler
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Irene
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; AI
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; IA
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; I
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; Mary Sue
+name ; given2; Hamish
+name ; surname; Watson
+name ; locale; fil_AQ
+
+expectedResult; Watson, Mary Sue Hamish
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Mary Sue Hamish Watson
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Watson Mary Sue Hamish
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Watson, Mary Sue H.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Mary Sue H. Watson
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Watson Mary Sue H.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Watson, M. S. H.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Watson, Mary Sue
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; M. S. H. Watson
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Mary Sue Watson
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Watson M. S. H.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Watson Mary Sue
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Watson M. S.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Mary Sue W.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Mary Sue
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Watson
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; MHW
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; WMH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; MW
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; WM
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; W
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; Mr.
+name ; given; Bertram Wilberforce
+name ; given-informal; Bertie
+name ; given2; Henry Robert
+name ; surname-core; Wooster
+name ; generation; Jr
+name ; credentials; MP
+name ; locale; fil_AQ
+
+expectedResult; Mr. Bertram Wilberforce Henry Robert Wooster Jr, MP
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Wooster Mr. Bertram Wilberforce Henry Robert Jr, MP
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Wooster, Bertram Wilberforce Henry Robert
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Bertram Wilberforce H. R. Wooster Jr, MP
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Wooster Bertram Wilberforce H. R. Jr, MP
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Wooster, Bertram Wilberforce H. R.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Wooster, B. W. H. R.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; B. W. H. R. Wooster
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Wooster B. W. H. R.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Wooster, Bertie
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Bertie Wooster
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Wooster Bertie
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Wooster B. W.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Mr. Wooster
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Bertie W.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Bertie
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; BHW
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; WBH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; BW
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; WB
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; B
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; W
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; Sinbad
+name ; locale; ja_AQ
+
+expectedResult; Sinbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Käthe
+name ; surname; Müller
+name ; locale; ja_AQ
+
+expectedResult; Müller, Käthe
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Käthe Müller
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Müller Käthe
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Müller, K.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; K. Müller
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Müller K.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Käthe M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Müller
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Käthe
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Zäzilia
+name ; given2; Hamish
+name ; surname; Stöber
+name ; locale; ja_AQ
+
+expectedResult; Stöber, Zäzilia Hamish
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Stöber Zäzilia Hamish
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Zäzilia Hamish Stöber
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Stöber, Zäzilia H.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Stöber Zäzilia H.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Zäzilia H. Stöber
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Stöber, Zäzilia
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Stöber Zäzilia
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Zäzilia Stöber
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Stöber, Z. H.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Stöber Z. H.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Z. H. Stöber
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Zäzilia S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Stöber Z.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Zäzilia
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Stöber
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; SZH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ZHS
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; SZ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ZS
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Z
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; Prof. Dr.
+name ; given; Ada Cornelia
+name ; given-informal; Neele
+name ; given2; César Martín
+name ; surname-prefix; von
+name ; surname-core; Brühl
+name ; surname2; González Domingo
+name ; generation; Jr
+name ; credentials; MD DDS
+name ; locale; ja_AQ
+
+expectedResult; Prof. Dr. Ada Cornelia César Martín von Brühl Jr, MD DDS
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; von Brühl Prof. Dr. Ada Cornelia César Martín Jr, MD DDS
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Ada Cornelia C. M. von Brühl Jr, MD DDS
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; von Brühl Ada Cornelia C. M. Jr, MD DDS
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Brühl, Ada Cornelia César Martín von
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Brühl, Ada Cornelia C. M. von
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Brühl, A. C. C. M. von
+
+parameters; sorting; short; referring; formal
+
+expectedResult; A. C. C. M. von Brühl
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; von Brühl A. C. C. M.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Prof. Dr. von Brühl
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; von Brühl, Neele
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Neele von Brühl
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; von Brühl A. C.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; von Brühl Neele
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Neele v. B.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Neele
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ACV
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; VAC
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; NV
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VN
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; N
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/fr.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/fr.txt
new file mode 100644
index 00000000000..fba3bd02fc2
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/fr.txt
@@ -0,0 +1,830 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: fr
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Adèle
+name ; locale; fr_AQ
+
+expectedResult; Adèle
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; A
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Louise
+name ; surname; Péricourt
+name ; locale; fr_AQ
+
+expectedResult; Péricourt, Louise
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Louise Péricourt
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Péricourt Louise
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Péricourt, L.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; L. Péricourt
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Péricourt L.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Louise P.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Péricourt
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Louise
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; LP
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; PL
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; L
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; P
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeGGS
+name ; given; Marie-Agnès
+name ; given2; Suzanne
+name ; surname; Gilot
+name ; locale; fr_AQ
+
+expectedResult; Gilot, Marie-Agnès Suzanne
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Gilot Marie-Agnès Suzanne
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Marie-Agnès Suzanne Gilot
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Gilot, Marie-Agnès S.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Gilot Marie-Agnès S.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Marie-Agnès S. Gilot
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Gilot, Marie-Agnès
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Gilot Marie-Agnès
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Marie-Agnès Gilot
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Gilot, M.-A. S.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Gilot M.-A. S.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; M.-A. S. Gilot
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Marie-Agnès G.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Gilot M.-A.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Marie-Agnès
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Gilot
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; GMS
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; MSG
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; GM
+
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; MG
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; G
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; M
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeFull
+name ; title; M.
+name ; given; Jean-Nicolas
+name ; given-informal; Nico
+name ; given2; Louis Marcel
+name ; surname-prefix; de
+name ; surname-core; Bouchart
+name ; generation; fils
+name ; locale; fr_AQ
+
+expectedResult; M. de Bouchart Jean-Nicolas Louis Marcel fils
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; M. Jean-Nicolas Louis Marcel de Bouchart fils
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Bouchart, Jean-Nicolas Louis Marcel de
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Bouchart, Jean-Nicolas L. M. de
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; de Bouchart Jean-Nicolas L. M.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Jean-Nicolas L. M. de Bouchart
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Bouchart, J.-N. L. M. de
+
+parameters; sorting; short; referring; formal
+
+expectedResult; de Bouchart J.-N. L. M.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; J.-N. L. M. de Bouchart
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; de Bouchart J.-N.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; de Bouchart, Nico
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; de Bouchart Nico
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Nico de Bouchart
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; M. de Bouchart
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Nico d. B.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Nico
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; BJL
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; JLB
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; BJ
+
+parameters; surnameFirst; medium; monogram; formal
+
+expectedResult; BN
+
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; JB
+
+parameters; givenFirst; medium; monogram; formal
+
+expectedResult; NB
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; B
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; N
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; Asmar
+name ; locale; ko_AQ
+
+expectedResult; Asmar
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; A
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Hermione
+name ; surname; Granger
+name ; locale; ko_AQ
+
+expectedResult; Granger, Hermione
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Granger Hermione
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Hermione Granger
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Granger, H.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Hermione G.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Granger H.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; H. Granger
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Hermione
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Granger
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; GH
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; HG
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; G
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; H
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGGS
+name ; given; Ginevra
+name ; given2; Molly
+name ; surname; Weasley
+name ; locale; ko_AQ
+
+expectedResult; Weasley, Ginevra Molly
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Ginevra Molly Weasley
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Weasley Ginevra Molly
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Weasley, Ginevra M.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Ginevra M. Weasley
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Weasley Ginevra M.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Weasley, Ginevra
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ginevra Weasley
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Weasley Ginevra
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Weasley, G. M.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; G. M. Weasley
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Weasley G. M.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Ginevra W.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Weasley G.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Ginevra
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Weasley
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; GMW
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; WGM
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; GW
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; WG
+
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; G
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; W
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignFull
+name ; title; Prof. Dr.
+name ; given; María Florencia
+name ; given-informal; Flor
+name ; given2; Martina Cristina
+name ; surname-prefix; von
+name ; surname-core; Brühl
+name ; surname2; González Domingo
+name ; generation; Jr.
+name ; credentials; MD DDS
+name ; locale; ko_AQ
+
+expectedResult; Prof. Dr. María Florencia Martina Cristina von Brühl Jr., MD DDS
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Prof. Dr. von Brühl María Florencia Martina Cristina Jr., MD DDS
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Brühl, María Florencia Martina Cristina von
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Brühl, María Florencia M. C. von
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; María Florencia M. C. von Brühl
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; von Brühl María Florencia M. C.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Brühl, M. F. M. C. von
+
+parameters; sorting; short; referring; formal
+
+expectedResult; M. F. M. C. von Brühl
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; von Brühl M. F. M. C.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Prof. Dr. von Brühl
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; von Brühl M. F.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; von Brühl, Flor
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Flor von Brühl
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; von Brühl Flor
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Flor v. B.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Flor
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; BMM
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; MMB
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; BF
+
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; BM
+
+parameters; surnameFirst; medium; monogram; formal
+
+expectedResult; FB
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; MB
+
+parameters; givenFirst; medium; monogram; formal
+
+expectedResult; B
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; F
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/fr_CA.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/fr_CA.txt
new file mode 100644
index 00000000000..e6791fb5ae2
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/fr_CA.txt
@@ -0,0 +1,831 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: fr_CA
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Adèle
+name ; locale; fr_CA
+
+expectedResult; Adèle
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; A
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Louise
+name ; surname; Péricourt
+name ; locale; fr_CA
+
+expectedResult; Péricourt, Louise
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Louise Péricourt
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Péricourt Louise
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Péricourt, L.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; L. Péricourt
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Péricourt L.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Louise P.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Péricourt
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Louise
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; LP
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; PL
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; L
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; P
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeGGS
+name ; given; Marie-Agnès
+name ; given2; Suzanne
+name ; surname; Gilot
+name ; locale; fr_CA
+
+expectedResult; Gilot, Marie-Agnès Suzanne
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Gilot Marie-Agnès Suzanne
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Marie-Agnès Suzanne Gilot
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Gilot, Marie-Agnès S.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Gilot Marie-Agnès S.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Marie-Agnès S. Gilot
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Gilot, Marie-Agnès
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Gilot Marie-Agnès
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Marie-Agnès Gilot
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Gilot, M.-A. S.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Gilot M.-A. S.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; M.-A. S. Gilot
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Marie-Agnès G.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Gilot M.-A.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Marie-Agnès
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Gilot
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; GMS
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; MSG
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; GM
+
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; MG
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; G
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; M
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeFull
+name ; title; M.
+name ; given; Jean-Nicolas
+name ; given-informal; Nico
+name ; given2; Louis Marcel
+name ; surname-prefix; de
+name ; surname-core; Larochellière
+name ; surname2; Drainville
+name ; generation; fils
+name ; locale; fr_CA
+
+expectedResult; M. de Larochellière Jean-Nicolas Louis Marcel fils
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; M. Jean-Nicolas Louis Marcel de Larochellière fils
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Larochellière, Jean-Nicolas Louis Marcel de
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Larochellière, Jean-Nicolas L. M. de
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; de Larochellière Jean-Nicolas L. M.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Jean-Nicolas L. M. de Larochellière
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Larochellière, J.-N. L. M. de
+
+parameters; sorting; short; referring; formal
+
+expectedResult; de Larochellière J.-N. L. M.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; J.-N. L. M. de Larochellière
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; de Larochellière J.-N.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Larochellière, Nico de
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; de Larochellière Nico
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Nico de Larochellière
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; M. de Larochellière
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Nico d. L.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Nico
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; JLL
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; LJL
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; JL
+
+parameters; givenFirst; medium; monogram; formal
+
+expectedResult; LJ
+
+parameters; surnameFirst; medium; monogram; formal
+
+expectedResult; LN
+
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; NL
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; L
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; N
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; Asmar
+name ; locale; ko_AQ
+
+expectedResult; Asmar
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; A
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Hermione
+name ; surname; Granger
+name ; locale; ko_AQ
+
+expectedResult; Granger, Hermione
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Granger Hermione
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Hermione Granger
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Granger, H.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Hermione G.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Granger H.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; H. Granger
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Hermione
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Granger
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; GH
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; HG
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; G
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; H
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGGS
+name ; given; Ginevra
+name ; given2; Molly
+name ; surname; Weasley
+name ; locale; ko_AQ
+
+expectedResult; Weasley, Ginevra Molly
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Ginevra Molly Weasley
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Weasley Ginevra Molly
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Weasley, Ginevra M.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Ginevra M. Weasley
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Weasley Ginevra M.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Weasley, Ginevra
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ginevra Weasley
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Weasley Ginevra
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Weasley, G. M.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; G. M. Weasley
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Weasley G. M.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Ginevra W.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Weasley G.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Ginevra
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Weasley
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; GMW
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; WGM
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; GW
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; WG
+
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; G
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; W
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignFull
+name ; title; Prof. Dr.
+name ; given; María Florencia
+name ; given-informal; Flor
+name ; given2; Martina Cristina
+name ; surname-prefix; von
+name ; surname-core; Brühl
+name ; surname2; González Domingo
+name ; generation; Jr.
+name ; credentials; MD DDS
+name ; locale; ko_AQ
+
+expectedResult; Prof. Dr. María Florencia Martina Cristina von Brühl Jr., MD DDS
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Prof. Dr. von Brühl María Florencia Martina Cristina Jr., MD DDS
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Brühl, María Florencia Martina Cristina von
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Brühl, María Florencia M. C. von
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; María Florencia M. C. von Brühl
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; von Brühl María Florencia M. C.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Brühl, M. F. M. C. von
+
+parameters; sorting; short; referring; formal
+
+expectedResult; M. F. M. C. von Brühl
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; von Brühl M. F. M. C.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Prof. Dr. von Brühl
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Brühl, Flor von
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; von Brühl M. F.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Flor von Brühl
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; von Brühl Flor
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Flor v. B.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Flor
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; BMM
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; MMB
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; BF
+
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; BM
+
+parameters; surnameFirst; medium; monogram; formal
+
+expectedResult; FB
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; MB
+
+parameters; givenFirst; medium; monogram; formal
+
+expectedResult; B
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; F
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ga.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ga.txt
new file mode 100644
index 00000000000..3aba9ec8575
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ga.txt
@@ -0,0 +1,815 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: ga
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Hozier
+name ; locale; ga_AQ
+
+expectedResult; Hozier
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; H
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Irene
+name ; surname; Adler
+name ; locale; ga_AQ
+
+expectedResult; Adler, Irene
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Adler Irene
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Irene Adler
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Adler, I.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Adler I.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; I. Adler
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Irene A.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Adler
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Irene
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; AI
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; IA
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; short; monogram; formal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; I
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; Seán
+name ; given2; Seamas
+name ; surname; Watson
+name ; locale; ga_AQ
+
+expectedResult; Watson, Seán Seamas
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Seán Seamas Watson
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Watson Seán Seamas
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Watson, Seán S.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Seán S. Watson
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Watson Seán S.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Watson, S. S.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; S. S. Watson
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Watson S. S.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Watson, Seán
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Seán Watson
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Watson Seán
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Watson S.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Seán W.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Watson
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Seán
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; SSW
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; short; monogram; formal
+
+expectedResult; WSS
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; SW
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; WS
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; W
+
+parameters; givenFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; An tOll. An Dr.
+name ; given; Brigid
+name ; given2; Aoibhe Sophia
+name ; surname-core; de Bhulbh
+name ; locale; ga_AQ
+
+expectedResult; de Bhulbh, Brigid Aoibhe Sophia
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Brigid Aoibhe Sophia de Bhulbh
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; de Bhulbh Brigid Aoibhe Sophia
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; An tOll. An Dr. de Bhulbh
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; de Bhulbh, Brigid A. S.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Brigid A. S. de Bhulbh
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; de Bhulbh Brigid A. S.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; de Bhulbh, B. A. S.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; B. A. S. de Bhulbh
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; de Bhulbh B. A. S.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; de Bhulbh, Brigid
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Brigid de Bhulbh
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; de Bhulbh Brigid
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Brigid d. B.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; de Bhulbh B.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Brigid
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; BAD
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; short; monogram; formal
+
+expectedResult; DBA
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; BD
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; DB
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; B
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; D
+
+parameters; givenFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; Sinbad
+name ; locale; ko_AQ
+
+expectedResult; Sinbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Käthe
+name ; surname; Müller
+name ; locale; ko_AQ
+
+expectedResult; Müller, Käthe
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Käthe Müller
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Müller Käthe
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Müller, K.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; K. Müller
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Müller K.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Käthe M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Müller
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Käthe
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; short; monogram; formal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Zäzilia
+name ; given2; Hamish
+name ; surname; Stöber
+name ; locale; ko_AQ
+
+expectedResult; Stöber, Zäzilia Hamish
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Stöber Zäzilia Hamish
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Zäzilia Hamish Stöber
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Stöber, Zäzilia H.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Stöber Zäzilia H.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Zäzilia H. Stöber
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Stöber, Zäzilia
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Stöber Zäzilia
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Zäzilia Stöber
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Stöber, Z. H.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Stöber Z. H.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Z. H. Stöber
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Zäzilia S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Stöber Z.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Zäzilia
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Stöber
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; SZH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ZHS
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; short; monogram; formal
+
+expectedResult; SZ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ZS
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Z
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; Prof. Dr.
+name ; given; Ada Cornelia
+name ; given-informal; Neele
+name ; given2; César Martín
+name ; surname-prefix; von
+name ; surname-core; Brühl
+name ; surname2; González Domingo
+name ; generation; Jr
+name ; credentials; M.D. Ph.D.
+name ; locale; ko_AQ
+
+expectedResult; Ada Cornelia César Martín von Brühl M.D. Ph.D.
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; von Brühl Ada Cornelia César Martín M.D. Ph.D.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Ada Cornelia C. M. von Brühl M.D. Ph.D.
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; von Brühl Ada Cornelia C. M. M.D. Ph.D.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; von Brühl, Ada Cornelia César Martín
+
+parameters; sorting; long; referring; formal
+
+expectedResult; von Brühl, Ada Cornelia C. M.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; von Brühl, A. C. C. M.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; A. C. C. M. von Brühl
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; von Brühl A. C. C. M.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Prof. Dr. von Brühl
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; von Brühl, Neele
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Neele von Brühl
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; von Brühl A. C.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; von Brühl Neele
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Neele v. B.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Neele
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ACV
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; short; monogram; formal
+
+expectedResult; VAC
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; NV
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VN
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; N
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/gd.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/gd.txt
new file mode 100644
index 00000000000..c20b602147a
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/gd.txt
@@ -0,0 +1,818 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: gd
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Calum
+name ; locale; gd_AQ
+
+expectedResult; Calum
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; C
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Oighrig
+name ; surname; Dhòmhnallach
+name ; locale; gd_AQ
+
+expectedResult; Dhòmhnallach, Oighrig
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Dhòmhnallach Oighrig
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Oighrig Dhòmhnallach
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; Dhòmhnallach, O.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Dhòmhnallach O.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; O. Dhòmhnallach
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Dhòmhnallach
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Oighrig
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; DO
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; OD
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; D
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; O
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; Dòmhnall Iain
+name ; given2; Tormod
+name ; surname; Caimbeul
+name ; locale; gd_AQ
+
+expectedResult; Caimbeul, Dòmhnall Iain Tormod
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+
+expectedResult; Caimbeul Dòmhnall Iain Tormod
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Dòmhnall Iain Tormod Caimbeul
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Caimbeul, Dòmhnall Iain T.
+
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Caimbeul Dòmhnall Iain T.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Dòmhnall Iain T. Caimbeul
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Dòmhnall Iain Caimbeul
+
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; Dòmhnall Iain Tormod
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+
+expectedResult; Caimbeul, D. I. T.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Caimbeul D. I. T.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; D. I. T. Caimbeul
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Dòmhnall Iain T.
+
+parameters; givenFirst; short; referring; informal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Dòmhnall Iain
+
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Caimbeul
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; CDT
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; DTC
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; CD
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; DC
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; C
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; D
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeFull
+name ; title; Mgr.
+name ; given; Dòmhnall Iain
+name ; given-informal; Donaidh
+name ; given2; Bàn
+name ; surname-core; Mac a’ Ghobhainn
+name ; surname2; Chorùna
+name ; credentials; am post
+name ; locale; gd_AQ
+
+expectedResult; Mac a’ Ghobhainn Chorùna Mgr. Dòmhnall Iain Bàn am post
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Mgr. Dòmhnall Iain Bàn Mac a’ Ghobhainn Chorùna am post
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Dòmhnall Iain B. Mac a’ Ghobhainn am post
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Mac a’ Ghobhainn Dòmhnall Iain B. am post
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Mac a’ Ghobhainn Chorùna Donaidh Bàn
+
+parameters; surnameFirst; long; referring; informal
+
+expectedResult; Mac a’ Ghobhainn, Dòmhnall Iain Bàn
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Mac a’ Ghobhainn, Dòmhnall Iain B.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Dòmhnall Iain Mac a’ Ghobhainn
+
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; Mac a’ Ghobhainn, Donaidh Bàn
+
+parameters; sorting; long; referring; informal
+
+expectedResult; Donaidh Bàn Mac a’ Ghobhainn
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Mac a’ Ghobhainn Donaidh Bàn
+
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Mac a’ Ghobhainn, Donaidh B.
+
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Mac a’ Ghobhainn, D. I. B.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; D. I. B. Mac a’ Ghobhainn
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Mac a’ Ghobhainn D. I. B.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Mgr. Mac a’ Ghobhainn
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Donaidh Bàn
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+
+expectedResult; Donaidh B.
+
+parameters; givenFirst; short; referring; informal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Donaidh
+
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; DBM
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; MDB
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; DM
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MD
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; D
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; Sinbad
+name ; locale; ja_AQ
+
+expectedResult; Sinbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Kate
+name ; surname; Miller
+name ; locale; ja_AQ
+
+expectedResult; Miller, Kate
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Kate Miller
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; Miller Kate
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Miller, K.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; K. Miller
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Miller K.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Miller
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Kate
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Cecilia
+name ; given2; Angela
+name ; surname; Smith
+name ; locale; ja_AQ
+
+expectedResult; Smith, Cecilia Angela
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+
+expectedResult; Cecilia Angela Smith
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Smith Cecilia Angela
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Smith, Cecilia A.
+
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Cecilia A. Smith
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Smith Cecilia A.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Cecilia Angela
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+
+expectedResult; Cecilia Smith
+
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; Smith, C. A.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; C. A. Smith
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Smith C. A.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Cecilia A.
+
+parameters; givenFirst; short; referring; informal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Cecilia
+
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Smith
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; CAS
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; SCA
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; CS
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; SC
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; C
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignFull
+name ; title; Prof. Dr.
+name ; given; Ada Cornelia
+name ; given-informal; Neele
+name ; given2; César Martín
+name ; surname-prefix; von
+name ; surname-core; Brühl
+name ; surname2; González Domingo
+name ; generation; Jr
+name ; credentials; MD DDS
+name ; locale; ja_AQ
+
+expectedResult; Prof. Dr. Ada Cornelia César Martín von Brühl González Domingo Jr, MD DDS
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; von Brühl González Domingo Prof. Dr. Ada Cornelia César Martín Jr, MD DDS
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; von Brühl González Domingo Neele César Martín
+
+parameters; surnameFirst; long; referring; informal
+
+expectedResult; Ada Cornelia C. M. von Brühl Jr, MD DDS
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; von Brühl Ada Cornelia C. M. Jr, MD DDS
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Brühl, Ada Cornelia César Martín von
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Brühl, Ada Cornelia C. M. von
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; von Brühl, Neele César Martín
+
+parameters; sorting; long; referring; informal
+
+expectedResult; Neele César Martín von Brühl
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; von Brühl Neele César Martín
+
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Ada Cornelia von Brühl
+
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; Brühl, A. C. C. M. von
+
+parameters; sorting; short; referring; formal
+
+expectedResult; von Brühl, Neele C. M.
+
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; A. C. C. M. von Brühl
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; von Brühl A. C. C. M.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Prof. Dr. von Brühl
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Neele César Martín
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+
+expectedResult; Neele C. M.
+
+parameters; givenFirst; short; referring; informal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Neele
+
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ACV
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; VAC
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; NV
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VN
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; N
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/gl.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/gl.txt
new file mode 100644
index 00000000000..a05b02af47d
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/gl.txt
@@ -0,0 +1,824 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: gl
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Uxía
+name ; locale; gl_AQ
+
+expectedResult; Uxía
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; U
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Xiana
+name ; surname; Freire
+name ; locale; gl_AQ
+
+expectedResult; Freire, Xiana
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Freire Xiana
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Xiana Freire
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Freire, X.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Freire X.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; X. Freire
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Xiana F.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Freire
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Xiana
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; FX
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; XF
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; F
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; X
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; Brais
+name ; given2; Manoel
+name ; surname; Souto
+name ; locale; gl_AQ
+
+expectedResult; Souto, Brais Manoel
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Brais Manoel Souto
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Souto Brais Manoel
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Souto, Brais M.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Brais M. Souto
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Souto Brais M.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Souto, B. M.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Souto, Brais
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; B. M. Souto
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Brais Souto
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Souto B. M.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Souto Brais
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Brais S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Souto B.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Brais
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Souto
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; SBM
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; BS
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; SB
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; B
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; Sr.
+name ; given; Xosé Carlos
+name ; given-informal; Pepe
+name ; given2; Francisco Xavier
+name ; surname-prefix; de
+name ; surname-core; Castro
+name ; surname2; Sáez
+name ; locale; gl_AQ
+
+expectedResult; Sr. Xosé Carlos Francisco Xavier de Castro Sáez
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Castro Sáez, Xosé Carlos Francisco Xavier de
+
+parameters; sorting; long; referring; formal
+
+expectedResult; de Castro Xosé Carlos Francisco Xavier
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Castro Sáez, Xosé Carlos F. X. de
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Xosé Carlos F. X. de Castro Sáez
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Castro Sáez, X. C. F. X. de
+
+parameters; sorting; short; referring; formal
+
+expectedResult; de Castro Xosé Carlos F. X.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; X. C. F. X. de Castro Sáez
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; de Castro X. C. F. X.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Castro Sáez, Pepe de
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Pepe de Castro Sáez
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Sr. de Castro Sáez
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; de Castro X. C.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; de Castro Pepe
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Pepe d. C. S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Sr. de Castro
+
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Pepe
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; CXF
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; PCS
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; XCS
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; CP
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; CS
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+
+expectedResult; C
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; P
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; John
+name ; locale; ko_AQ
+
+expectedResult; John
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; J
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Annelise
+name ; surname; Weber
+name ; locale; ko_AQ
+
+expectedResult; Weber, Annelise
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Annelise Weber
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Weber Annelise
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Annelise W.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Weber, A.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; A. Weber
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Annelise
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Weber A.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Weber
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; AW
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; WA
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; W
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Benno
+name ; given2; Hans
+name ; surname; Meyer
+name ; locale; ko_AQ
+
+expectedResult; Meyer, Benno Hans
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Benno Hans Meyer
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Meyer Benno Hans
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Meyer, Benno H.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Benno H. Meyer
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Meyer Benno H.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Meyer, B. H.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Meyer, Benno
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; B. H. Meyer
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Benno Meyer
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Meyer B. H.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Meyer Benno
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Benno M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Meyer B.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Benno
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Meyer
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; MBH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; BM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MB
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; B
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignFull
+name ; title; Dra.
+name ; given; Erika Cornelia
+name ; given-informal; Neele
+name ; given2; Anna Isabelle
+name ; surname-prefix; von
+name ; surname-core; Brül
+name ; surname2; Cabral de Melo
+name ; generation; II
+name ; credentials; MD DDS
+name ; locale; ko_AQ
+
+expectedResult; Dra. Erika Cornelia Anna Isabelle von Brül Cabral de Melo II
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Brül Cabral de Melo, Erika Cornelia Anna Isabelle von
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Erika Cornelia A. I. von Brül Cabral de Melo II
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Brül Cabral de Melo, Erika Cornelia A. I. von
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; von Brül Erika Cornelia Anna Isabelle II
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Brül Cabral de Melo, E. C. A. I. von
+
+parameters; sorting; short; referring; formal
+
+expectedResult; E. C. A. I. von Brül Cabral de Melo
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; von Brül Erika Cornelia A. I. II
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Brül Cabral de Melo, Neele von
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Neele von Brül Cabral de Melo
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Dra. von Brül Cabral de Melo
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; Neele v. B. C. d. M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; von Brül E. C. A. I.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; von Brül E. C.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; von Brül Neele
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Dra. von Brül
+
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Neele
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; BEA
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; EBC
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; NBC
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; BC
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+
+expectedResult; BN
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; B
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; N
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/gu.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/gu.txt
new file mode 100644
index 00000000000..aa7aa5c2696
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/gu.txt
@@ -0,0 +1,820 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: gu
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; કિરણ
+name ; locale; gu_AQ
+
+expectedResult; કિરણ
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; કિ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; આઇરીન
+name ; surname; અદાણી
+name ; locale; gu_AQ
+
+expectedResult; આઇરીન . અદાણી
+
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; અદાણી, આઇરીન
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; અદાણી આઇરીન
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; short; referring; formal
+
+expectedResult; આઇરીન અદાણી
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; short; referring; formal
+
+expectedResult; અદાણી આ.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; આઇરીન અ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; અદાણી
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; આઇરીન
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; અઆ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; આઅ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; અ
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; આ
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; ખà«àª¶à«€ પટેલ
+name ; given2; હેતલ
+name ; surname; દવે
+name ; locale; gu_AQ
+
+expectedResult; દવે, ખà«àª¶à«€ પટેલ હેતલ
+
+parameters; sorting; long; referring; formal
+
+expectedResult; ખà«àª¶à«€ પટેલ હેતલ દવે
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; short; referring; formal
+
+expectedResult; દવે ખà«àª¶à«€ પટેલ હેતલ
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; દવે, ખà«àª¶à«€ પટેલ હે.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; ખà«àª¶à«€ પટેલ હે. દવે
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; દવે ખà«àª¶à«€ પટેલ હે.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; ખà«àª¶à«€ પટેલ . દવે
+
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; દવે ખà«. પ. હે.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; દવે, ખà«àª¶à«€ પટેલ
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; ખà«àª¶à«€ પટેલ દવે
+
+parameters; givenFirst; long; referring; informal
+
+expectedResult; દવે ખà«àª¶à«€ પટેલ
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; ખà«àª¶à«€ પટેલ દ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; દવે ખà«. પ.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ખà«àª¶à«€ પટેલ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ખà«àª¹à«‡àª¦
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; દખà«àª¹à«‡
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ખà«àª¦
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; દખà«
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; દવે
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ખà«
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; દ
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; શà«àª°à«€.
+name ; given; પટેલ ખà«àª¶à«€
+name ; given-informal; કિંજલ
+name ; given2; કિંજલ
+name ; surname-prefix; કà«àª®àª¾àª°
+name ; surname-core; શાહ
+name ; surname2; પટેલ
+name ; generation; જૂનિયર
+name ; credentials; àªàª®àªªà«€
+name ; locale; gu_AQ
+
+expectedResult; કà«àª®àª¾àª° શાહ શà«àª°à«€. પટેલ ખà«àª¶à«€ કિંજલ જૂનિયર, àªàª®àªªà«€
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; શà«àª°à«€. પટેલ ખà«àª¶à«€ કિંજલ કà«àª®àª¾àª° શાહ જૂનિયર, àªàª®àªªà«€
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; કà«àª®àª¾àª° શાહ પટેલ, શà«àª°à«€. પટેલ ખà«àª¶à«€ કિંજલ àªàª®àªªà«€
+
+parameters; sorting; short; referring; formal
+
+expectedResult; કà«àª®àª¾àª° શાહ પટેલ ખà«àª¶à«€ કિં. જૂનિયર, àªàª®àªªà«€
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; પટેલ ખà«àª¶à«€ કિં. કà«àª®àª¾àª° શાહ જૂનિયર, àªàª®àªªà«€
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; પટેલ ખà«àª¶à«€ કિંજલ કà«àª®àª¾àª° શાહ àªàª®àªªà«€
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; શાહ, પટેલ ખà«àª¶à«€ કિંજલ કà«àª®àª¾àª°
+
+parameters; sorting; long; referring; formal
+
+expectedResult; શાહ, પટેલ ખà«àª¶à«€ કિં. કà«àª®àª¾àª°
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; કà«àª®àª¾àª° શાહ પ. ખà«. કિં.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; કિંજલ . કà«àª®àª¾àª° શાહ
+
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; શà«àª°à«€. . કà«àª®àª¾àª° શાહ
+
+parameters; givenFirst; medium; addressing; formal
+
+expectedResult; કà«àª®àª¾àª° શાહ પ. ખà«.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; કà«àª®àª¾àª° શાહ, કિંજલ
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; કિંજલ કà«àª®àª¾àª° શાહ
+
+parameters; givenFirst; long; referring; informal
+
+expectedResult; કà«àª®àª¾àª° શાહ કિંજલ
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; શà«àª°à«€. કà«àª®àª¾àª° શાહ
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; કિંજલ કà«. શા.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; કà«àªªàª•àª¿àª‚
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; પકિંકà«
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; કિંકà«
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; કિંજલ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; કà«àª•àª¿àª‚
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; કિં
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; કà«
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; સિનબાદ
+name ; locale; ko_AQ
+
+expectedResult; સિનબાદ
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; સિ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; કૅથિ
+name ; surname; મà«àª²àª°
+name ; locale; ko_AQ
+
+expectedResult; કૅથિ . મà«àª²àª°
+
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; મà«àª²àª°, કૅથિ
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; કૅથિ મà«àª²àª°
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; short; referring; formal
+
+expectedResult; મà«àª²àª° કૅથિ
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; short; referring; formal
+
+expectedResult; કૅથિ મà«.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; મà«àª²àª° કૅ.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; કૅથિ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; કૅમà«
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; મà«àª•à«…
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; મà«àª²àª°
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; કૅ
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; મà«
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; જàªàª¿àª²à«€àª¯àª¾
+name ; given2; હૅમીશ
+name ; surname; સà«àªŸà«‚બર
+name ; locale; ko_AQ
+
+expectedResult; સà«àªŸà«‚બર, જàªàª¿àª²à«€àª¯àª¾ હૅમીશ
+
+parameters; sorting; long; referring; formal
+
+expectedResult; જàªàª¿àª²à«€àª¯àª¾ હૅમીશ સà«àªŸà«‚બર
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; short; referring; formal
+
+expectedResult; સà«àªŸà«‚બર જàªàª¿àª²à«€àª¯àª¾ હૅમીશ
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; સà«àªŸà«‚બર, જàªàª¿àª²à«€àª¯àª¾ હૅ.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; જàªàª¿àª²à«€àª¯àª¾ હૅ. સà«àªŸà«‚બર
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; સà«àªŸà«‚બર જàªàª¿àª²à«€àª¯àª¾ હૅ.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; જàªàª¿àª²à«€àª¯àª¾ . સà«àªŸà«‚બર
+
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; સà«àªŸà«‚બર, જàªàª¿àª²à«€àª¯àª¾
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; જàªàª¿àª²à«€àª¯àª¾ સà«àªŸà«‚બર
+
+parameters; givenFirst; long; referring; informal
+
+expectedResult; સà«àªŸà«‚બર જàªàª¿àª²à«€àª¯àª¾
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; જàªàª¿àª²à«€àª¯àª¾ સà«àªŸà«‚.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; સà«àªŸà«‚બર જ. હૅ.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; સà«àªŸà«‚બર જ.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; જàªàª¿àª²à«€àª¯àª¾
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; જહૅસà«àªŸà«‚
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; સà«àªŸà«‚જહૅ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; સà«àªŸà«‚બર
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; જસà«àªŸà«‚
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; સà«àªŸà«‚જ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; સà«àªŸà«‚
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; જ
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; પà«àª°à«‹. ડૉ.
+name ; given; àªàª¡àª¾ કૉરà«àª¨à«‡àª²àª¿àª¯àª¾
+name ; given-informal; નીલ
+name ; given2; સિàªàª° મારà«àªŸàª¿àª¨
+name ; surname-prefix; ફૉનà«
+name ; surname-core; બà«àª°àª¾àª‘લà«
+name ; surname2; ગૉનà«àªàª¾àª²àª¿àª¸ ડમિંગો
+name ; generation; જૂનિયર
+name ; credentials; àªàª®.ડી. ડી.ડી.àªàª¸.
+name ; locale; ko_AQ
+
+expectedResult; ફૉનૠબà«àª°àª¾àª‘લૠગૉનà«àªàª¾àª²àª¿àª¸ ડમિંગો, પà«àª°à«‹. ડૉ. àªàª¡àª¾ કૉરà«àª¨à«‡àª²àª¿àª¯àª¾ સિàªàª° મારà«àªŸàª¿àª¨ àªàª®.ડી. ડી.ડી.àªàª¸.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; પà«àª°à«‹. ડૉ. àªàª¡àª¾ કૉરà«àª¨à«‡àª²àª¿àª¯àª¾ સિàªàª° મારà«àªŸàª¿àª¨ ફૉનૠબà«àª°àª¾àª‘લૠજૂનિયર, àªàª®.ડી. ડી.ડી.àªàª¸.
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; ફૉનૠબà«àª°àª¾àª‘લૠપà«àª°à«‹. ડૉ. àªàª¡àª¾ કૉરà«àª¨à«‡àª²àª¿àª¯àª¾ સિàªàª° મારà«àªŸàª¿àª¨ જૂનિયર, àªàª®.ડી. ડી.ડી.àªàª¸.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; àªàª¡àª¾ કૉરà«àª¨à«‡àª²àª¿àª¯àª¾ સિ. મા. ફૉનૠબà«àª°àª¾àª‘લૠજૂનિયર, àªàª®.ડી. ડી.ડી.àªàª¸.
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; ફૉનૠબà«àª°àª¾àª‘લૠàªàª¡àª¾ કૉરà«àª¨à«‡àª²àª¿àª¯àª¾ સિ. મા. જૂનિયર, àªàª®.ડી. ડી.ડી.àªàª¸.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; àªàª¡àª¾ કૉરà«àª¨à«‡àª²àª¿àª¯àª¾ સિàªàª° મારà«àªŸàª¿àª¨ ફૉનૠબà«àª°àª¾àª‘લૠàªàª®.ડી. ડી.ડી.àªàª¸.
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; બà«àª°àª¾àª‘લà«, àªàª¡àª¾ કૉરà«àª¨à«‡àª²àª¿àª¯àª¾ સિàªàª° મારà«àªŸàª¿àª¨ ફૉનà«
+
+parameters; sorting; long; referring; formal
+
+expectedResult; બà«àª°àª¾àª‘લà«, àªàª¡àª¾ કૉરà«àª¨à«‡àª²àª¿àª¯àª¾ સિ. મા. ફૉનà«
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; ફૉનૠબà«àª°àª¾àª‘લૠàª. કૉ. સિ. મા.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; પà«àª°à«‹. ડૉ. . ફૉનૠબà«àª°àª¾àª‘લà«
+
+parameters; givenFirst; medium; addressing; formal
+
+expectedResult; પà«àª°à«‹. ડૉ. ફૉનૠબà«àª°àª¾àª‘લà«
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ફૉનૠબà«àª°àª¾àª‘લૠàª. કૉ.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; નીલ . ફૉનૠબà«àª°àª¾àª‘લà«
+
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; ફૉનૠબà«àª°àª¾àª‘લà«, નીલ
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; નીલ ફૉનૠબà«àª°àª¾àª‘લà«
+
+parameters; givenFirst; long; referring; informal
+
+expectedResult; ફૉનૠબà«àª°àª¾àª‘લૠનીલ
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; નીલ ફૉ. બà«àª°àª¾.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; àªàª¸àª¿àª«à«‰
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; ફૉàªàª¸àª¿
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; નીફૉ
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; ફૉની
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; નીલ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ની
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; ફૉ
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ha.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ha.txt
new file mode 100644
index 00000000000..474b7a3c3ad
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ha.txt
@@ -0,0 +1,762 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: ha
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Sule
+name ; locale; ha_AQ
+
+expectedResult; Sule
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Shehu
+name ; surname; Muhammed
+name ; locale; ha_AQ
+
+expectedResult; Muhammed, Shehu
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Muhammed Shehu
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Shehu Muhammed
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Muhammed S.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; S. Muhammed
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Muhammed
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Shehu M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Shehu
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; MS
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; SM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; S
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; Fatima
+name ; given2; Amina
+name ; surname; Umar
+name ; locale; ha_AQ
+
+expectedResult; Umar, Fatima Amina
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Fatima Amina Umar
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Umar Fatima Amina
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Umar Fatima A.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Umar, Fatima
+
+parameters; sorting; long; referring; informal
+
+expectedResult; Fatima Umar
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Umar Fatima
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; F. A. Umar
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Umar F. A.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Fatima U.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Umar F.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Fatima
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Umar
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; FAU
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; UFA
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; UF
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; F
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; U
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; Malam
+name ; given; Shehu
+name ; given2; Bello
+name ; surname-core; Modibbo
+name ; credentials; MP
+name ; locale; ha_AQ
+
+expectedResult; Malam Shehu Bello Modibbo MP
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Modibbo Malam Shehu Bello MP
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Modibbo, Shehu Bello
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Modibbo Shehu B. MP
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Modibbo, Shehu
+
+parameters; sorting; long; referring; informal
+
+expectedResult; Malam Modibbo
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Modibbo S. B.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Modibbo Shehu
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; S. B. Modibbo
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Shehu Modibbo
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Modibbo S.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Shehu M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Shehu
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; MSB
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; SBM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; MS
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; S
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; Sinbad
+name ; locale; ko_AQ
+
+expectedResult; Sinbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Käthe
+name ; surname; Müller
+name ; locale; ko_AQ
+
+expectedResult; Müller, Käthe
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Käthe Müller
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Müller Käthe
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; K. Müller
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Müller K.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Käthe M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Müller
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Käthe
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Zäzilia
+name ; given2; Hamish
+name ; surname; Stöber
+name ; locale; ko_AQ
+
+expectedResult; Stöber, Zäzilia Hamish
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Stöber Zäzilia Hamish
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Zäzilia Hamish Stöber
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Stöber Zäzilia H.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Stöber, Zäzilia
+
+parameters; sorting; long; referring; informal
+
+expectedResult; Stöber Zäzilia
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Zäzilia Stöber
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Stöber Z. H.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Z. H. Stöber
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Zäzilia S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Stöber Z.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Zäzilia
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Stöber
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; SZH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ZHS
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; SZ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Z
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; Farf. Dr.
+name ; given; Ada Cornelia
+name ; given-informal; Neele
+name ; given2; Eva Sophia
+name ; surname-prefix; van den
+name ; surname-core; Wolf
+name ; surname2; Becker Schmidt
+name ; generation; Jr
+name ; credentials; M.D. Ph.D.
+name ; locale; ko_AQ
+
+expectedResult; Farf. Dr. Ada Cornelia Eva Sophia van den Wolf Becker Schmidt M.D. Ph.D.
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; van den Wolf Becker Schmidt Farf. Dr. Ada Cornelia Eva Sophia M.D. Ph.D.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; van den Wolf Ada Cornelia E. S. Jr, M.D. Ph.D.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Wolf, Ada Cornelia Eva Sophia van den
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; A. C. E. S. van den Wolf
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; van den Wolf A. C. E. S.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Farf. Dr. van den Wolf
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; van den Wolf, Neele
+
+parameters; sorting; long; referring; informal
+
+expectedResult; Neele van den Wolf
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; van den Wolf A. C.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; van den Wolf Neele
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Neele v. d. W.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Neele
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; AEV
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; VAE
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; VN
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; N
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ha_NE.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ha_NE.txt
new file mode 100644
index 00000000000..d2c879c66c3
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ha_NE.txt
@@ -0,0 +1,762 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: ha_NE
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Sule
+name ; locale; ha_NE
+
+expectedResult; Sule
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Shehu
+name ; surname; Muhammed
+name ; locale; ha_NE
+
+expectedResult; Muhammed, Shehu
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Muhammed Shehu
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Shehu Muhammed
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Muhammed S.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; S. Muhammed
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Muhammed
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Shehu M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Shehu
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; MS
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; SM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; S
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; Fatima
+name ; given2; Amina
+name ; surname; Umar
+name ; locale; ha_NE
+
+expectedResult; Umar, Fatima Amina
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Fatima Amina Umar
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Umar Fatima Amina
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Umar Fatima A.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Umar, Fatima
+
+parameters; sorting; long; referring; informal
+
+expectedResult; Fatima Umar
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Umar Fatima
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; F. A. Umar
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Umar F. A.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Fatima U.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Umar F.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Fatima
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Umar
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; FAU
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; UFA
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; UF
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; F
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; U
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; Malam
+name ; given; Shehu
+name ; given2; Bello
+name ; surname-core; Modibbo
+name ; credentials; MP
+name ; locale; ha_NE
+
+expectedResult; Malam Shehu Bello Modibbo MP
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Modibbo Malam Shehu Bello MP
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Modibbo, Shehu Bello
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Modibbo Shehu B. MP
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Modibbo, Shehu
+
+parameters; sorting; long; referring; informal
+
+expectedResult; Malam Modibbo
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Modibbo S. B.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Modibbo Shehu
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; S. B. Modibbo
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Shehu Modibbo
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Modibbo S.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Shehu M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Shehu
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; MSB
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; SBM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; MS
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; S
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; Sinbad
+name ; locale; ko_AQ
+
+expectedResult; Sinbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Käthe
+name ; surname; Müller
+name ; locale; ko_AQ
+
+expectedResult; Müller, Käthe
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Käthe Müller
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Müller Käthe
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; K. Müller
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Müller K.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Käthe M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Müller
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Käthe
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Zäzilia
+name ; given2; Hamish
+name ; surname; Stöber
+name ; locale; ko_AQ
+
+expectedResult; Stöber, Zäzilia Hamish
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Stöber Zäzilia Hamish
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Zäzilia Hamish Stöber
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Stöber Zäzilia H.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Stöber, Zäzilia
+
+parameters; sorting; long; referring; informal
+
+expectedResult; Stöber Zäzilia
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Zäzilia Stöber
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Stöber Z. H.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Z. H. Stöber
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Zäzilia S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Stöber Z.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Zäzilia
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Stöber
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; SZH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ZHS
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; SZ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Z
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; Farf. Dr.
+name ; given; Ada Cornelia
+name ; given-informal; Neele
+name ; given2; Eva Sophia
+name ; surname-prefix; van den
+name ; surname-core; Wolf
+name ; surname2; Becker Schmidt
+name ; generation; Jr
+name ; credentials; M.D. Ph.D.
+name ; locale; ko_AQ
+
+expectedResult; Farf. Dr. Ada Cornelia Eva Sophia van den Wolf Becker Schmidt M.D. Ph.D.
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; van den Wolf Becker Schmidt Farf. Dr. Ada Cornelia Eva Sophia M.D. Ph.D.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; van den Wolf Ada Cornelia E. S. Jr, M.D. Ph.D.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Wolf, Ada Cornelia Eva Sophia van den
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; A. C. E. S. van den Wolf
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; van den Wolf A. C. E. S.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Farf. Dr. van den Wolf
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; van den Wolf, Neele
+
+parameters; sorting; long; referring; informal
+
+expectedResult; Neele van den Wolf
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; van den Wolf A. C.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; van den Wolf Neele
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Neele v. d. W.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Neele
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; AEV
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; VAE
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; VN
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; N
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/he.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/he.txt
new file mode 100644
index 00000000000..adccf761389
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/he.txt
@@ -0,0 +1,780 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: he
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; יונתן
+name ; locale; he_AQ
+
+expectedResult; יונתן
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ×™
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; דנית
+name ; surname; לוי
+name ; locale; he_AQ
+
+expectedResult; לוי, דנית
+
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; דנית לוי
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; לוי דנית
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+
+expectedResult; דנית ל.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; לוי, ד.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; ד. לוי
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; לוי ד.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; דנית
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ד״ל
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; לוי
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; לד
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ד
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; ל
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeGGS
+name ; given; יונתן
+name ; given2; ×—×™×™×
+name ; surname; כהן
+name ; locale; he_AQ
+
+expectedResult; יונתן ×—×™×™× ×›×”×Ÿ
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; כהן יונתן ×—×™×™×
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+
+expectedResult; כהן, יונתן ח.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; כהן יונתן ח.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; כהן, י. ח.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; כהן, יונתן
+
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; יונתן כהן
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; כהן י. ח.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; כהן יונתן
+
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; יונתן כ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; י. כהן
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; כהן י.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; יונתן
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ×™×—×´×›
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; כהן
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ×›×™×—
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ×™
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; ×›
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; מר
+name ; given; בנימין
+name ; given-informal; בני
+name ; given2; משה
+name ; surname-prefix; ×בן
+name ; surname-core; ×בן-גבירול
+name ; generation; ג׳וניור
+name ; credentials; ×—×´×›
+name ; locale; he_AQ
+
+expectedResult; ×בן ×בן-גבירול מר בנימין משה ×—×´×›
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+
+expectedResult; מר בנימין משה ×בן ×בן-גבירול ×—×´×›
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; ×בן ×בן-גבירול בנימין מ. ×—×´×›
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; ×בן-גבירול, בנימין מ. ×בן
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; ×בן-גבירול, ב. מ. ×בן
+
+parameters; sorting; short; referring; formal
+
+expectedResult; ×בן ×בן-גבירול ב. מ.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; מר ב. ×בן ×בן-גבירול
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ×בן ×בן-גבירול, בני
+
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; ×בן ×בן-גבירול בני
+
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; ×בן ×בן-גבירול, מר
+
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; בני ×בן ×בן-גבירול
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; ×בן ×בן-גבירול ב.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; מר ×בן ×בן-גבירול
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+
+expectedResult; בני ×. ×. ×’.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; במ״×
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; ×במ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; בני
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ×
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; ב
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; סינבד
+name ; locale; ko_AQ
+
+expectedResult; סינבד
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ס
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; קתה
+name ; surname; מולר
+name ; locale; ko_AQ
+
+expectedResult; מולר, קתה
+
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; מולר קתה
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+
+expectedResult; מולר, ק.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; קתה מולר
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; מולר ק.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ק. מולר
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; קתה מ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; מולר
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ק״מ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; קתה
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; מק
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; מ
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; ק
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGGS
+name ; given; זזיליה
+name ; given2; חמיש
+name ; surname; סטובר
+name ; locale; ko_AQ
+
+expectedResult; זזיליה חמיש סטובר
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; סטובר זזיליה חמיש
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+
+expectedResult; סטובר, זזיליה ח.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; סטובר זזיליה ח.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; סטובר, זזיליה
+
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; זזיליה סטובר
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; סטובר זזיליה
+
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; סטובר, ז. ח.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; סטובר ז. ח.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; זזיליה ס.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ז. סטובר
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; סטובר ז.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; זזיליה
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; סטובר
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; זח״ס
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; סזח
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ×–
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; ס
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignFull
+name ; title; פרופ׳
+name ; given; עדה קורנליה
+name ; given-informal; ניל
+name ; given2; סז×ר מרטין
+name ; surname-prefix; פון
+name ; surname-core; ברוהל
+name ; surname2; גונזלס דומינגו
+name ; generation; ג׳וניור
+name ; credentials; ד״ר
+name ; locale; ko_AQ
+
+expectedResult; פון ברוהל גונזלס דומינגו, פרופ׳ עדה קורנליה סז×ר מרטין ד״ר
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+
+expectedResult; פון ברוהל גונזלס דומינגו פרופ׳ עדה קורנליה סז×ר מרטין ד״ר
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+
+expectedResult; פרופ׳ עדה קורנליה סז×ר מרטין פון ברוהל גונזלס דומינגו ד״ר
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; פון ברוהל עדה קורנליה ס. מ. ד״ר
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; ברוהל, עדה קורנליה ס. מ. פון
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; ברוהל, ע. ק. ס. מ. פון
+
+parameters; sorting; short; referring; formal
+
+expectedResult; פון ברוהל ע. ק. ס. מ.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; פרופ׳ ע. ק. פון ברוהל
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; פון ברוהל, פרופ׳
+
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; פון ברוהל ע. ק.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; פרופ׳ פון ברוהל
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+
+expectedResult; פון ברוהל, ניל
+
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; ניל פון ברוהל
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; פון ברוהל ניל
+
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; ניל פ. ב.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; עס״פ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; ניל
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; פעס
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; × 
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; פ
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/hi.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/hi.txt
new file mode 100644
index 00000000000..d9021e942c6
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/hi.txt
@@ -0,0 +1,806 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: hi
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; ललित
+name ; locale; hi_AQ
+
+expectedResult; ललित
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ल
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; ललित
+name ; surname; शरà¥à¤®à¤¾
+name ; locale; hi_AQ
+
+expectedResult; शरà¥à¤®à¤¾, ललित
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; ललित शरà¥à¤®à¤¾
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; शरà¥à¤®à¤¾ ललित
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; शरà¥à¤®à¤¾, ल॰
+
+parameters; sorting; short; referring; formal
+
+expectedResult; ल॰ शरà¥à¤®à¤¾
+
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; short; referring; formal
+
+expectedResult; शरà¥à¤®à¤¾ ल॰
+
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; शरà¥à¤®à¤¾
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ललित
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; लश
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; शल
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ल
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; श
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeGGS
+name ; given; ललित
+name ; given2; मोहन
+name ; surname; शरà¥à¤®à¤¾
+name ; locale; hi_AQ
+
+expectedResult; शरà¥à¤®à¤¾, ललित मोहन
+
+parameters; sorting; long; referring; formal
+
+expectedResult; ललित मोहन शरà¥à¤®à¤¾
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; शरà¥à¤®à¤¾ ललित मोहन
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; शरà¥à¤®à¤¾, ललित मो॰
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; शरà¥à¤®à¤¾, ल॰ मो॰
+
+parameters; sorting; short; referring; formal
+
+expectedResult; ल॰ मो॰ शरà¥à¤®à¤¾
+
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; short; referring; formal
+
+expectedResult; शरà¥à¤®à¤¾ ल॰ मो॰
+
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; शरà¥à¤®à¤¾, ललित
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; ललित शरà¥à¤®à¤¾
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; शरà¥à¤®à¤¾ ललित
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; शरà¥à¤®à¤¾ ल॰
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; शरà¥à¤®à¤¾
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; लमोश
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; ललित
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; शलमो
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; लश
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; शल
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ल
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; श
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; शà¥à¤°à¥€
+name ; given; ललित
+name ; given-informal; लखन
+name ; given2; कà¥à¤®à¤¾à¤°
+name ; surname-core; शरà¥à¤®à¤¾
+name ; generation; दà¥à¤µà¤¿à¤¤à¥€à¤¯
+name ; credentials; à¤à¤®à¥°à¤¡à¥€à¥°
+name ; locale; hi_AQ
+
+expectedResult; शà¥à¤°à¥€ शरà¥à¤®à¤¾ ललित कà¥à¤®à¤¾à¤°, à¤à¤®à¥°à¤¡à¥€à¥°
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; शà¥à¤°à¥€ ललित कà¥à¤®à¤¾à¤° शरà¥à¤®à¤¾ à¤à¤®à¥°à¤¡à¥€à¥°
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; शà¥à¤°à¥€ ल॰ कà¥à¥° शरà¥à¤®à¤¾, à¤à¤®à¥°à¤¡à¥€à¥°
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; शà¥à¤°à¥€ शरà¥à¤®à¤¾ ल॰ कà¥à¥°, à¤à¤®à¥°à¤¡à¥€à¥°
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; शरà¥à¤®à¤¾, ललित कà¥à¤®à¤¾à¤° à¤à¤®à¥°à¤¡à¥€à¥°
+
+parameters; sorting; long; referring; formal
+
+expectedResult; शरà¥à¤®à¤¾, ललित कà¥à¥° à¤à¤®à¥°à¤¡à¥€à¥°
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; शà¥à¤°à¥€ लखन शरà¥à¤®à¤¾
+
+parameters; givenFirst; long; referring; informal
+
+expectedResult; शà¥à¤°à¥€ शरà¥à¤®à¤¾ लखन
+
+parameters; surnameFirst; long; referring; informal
+
+expectedResult; शरà¥à¤®à¤¾, ल॰ कà¥à¥°
+
+parameters; sorting; short; referring; formal
+
+expectedResult; ल॰ कà¥à¥° शरà¥à¤®à¤¾
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; शरà¥à¤®à¤¾ ल॰ कà¥à¥°
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; शरà¥à¤®à¤¾, लखन
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; शà¥à¤°à¥€ शरà¥à¤®à¤¾
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; लखन शरà¥à¤®à¤¾
+
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; शरà¥à¤®à¤¾ लखन
+
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; शरà¥à¤®à¤¾ ल॰
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; शà¥à¤°à¥€ लखन
+
+parameters; givenFirst; long; addressing; informal
+
+expectedResult; लकà¥à¤¶
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; शलकà¥
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; लखन
+
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; लश
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; शल
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ल
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; श
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; रॉबरà¥à¤Ÿ
+name ; locale; ko_AQ
+
+expectedResult; रॉबरà¥à¤Ÿ
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; रॉ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; कीथ
+name ; surname; बà¥à¤°à¤¾à¤‰à¤¨
+name ; locale; ko_AQ
+
+expectedResult; बà¥à¤°à¤¾à¤‰à¤¨, की॰
+
+parameters; sorting; short; referring; formal
+
+expectedResult; बà¥à¤°à¤¾à¤‰à¤¨, कीथ
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; की॰ बà¥à¤°à¤¾à¤‰à¤¨
+
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; short; referring; formal
+
+expectedResult; कीथ बà¥à¤°à¤¾à¤‰à¤¨
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; बà¥à¤°à¤¾à¤‰à¤¨ की॰
+
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; बà¥à¤°à¤¾à¤‰à¤¨ कीथ
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; कीबà¥à¤°à¤¾
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; बà¥à¤°à¤¾à¤‰à¤¨
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; बà¥à¤°à¤¾à¤•à¥€
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; बà¥à¤°à¤¾
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; कीथ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; की
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGGS
+name ; given; मैरी
+name ; given2; सिलविया
+name ; surname; जोनस
+name ; locale; ko_AQ
+
+expectedResult; जोनस, मैरी सिलविया
+
+parameters; sorting; long; referring; formal
+
+expectedResult; जोनस मैरी सिलविया
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; मैरी सिलविया जोनस
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; जोनस, मैरी सि॰
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; जोनस, मै॰ सि॰
+
+parameters; sorting; short; referring; formal
+
+expectedResult; जोनस मै॰ सि॰
+
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; मै॰ सि॰ जोनस
+
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; short; referring; formal
+
+expectedResult; जोनस, मैरी
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; जोनस मैरी
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; मैरी जोनस
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; जोनस मै॰
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; जोमैसि
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; मैसिजो
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; जोनस
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; जोमै
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; मैजो
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; मैरी
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; जो
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; मै
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; पà¥à¤°à¥‹à¥° डॉ॰
+name ; given; माइकल
+name ; given-informal; माइक
+name ; given2; जॉन
+name ; surname-prefix; वॉन
+name ; surname-core; वॉटसन
+name ; surname2; चेसà¥à¤Ÿà¤°
+name ; generation; जूनियर
+name ; credentials; à¤à¤®à¥°à¤¡à¥€à¥°, पी॰à¤à¤šà¥°à¤¡à¥€à¥°
+name ; locale; ko_AQ
+
+expectedResult; पà¥à¤°à¥‹à¥° डॉ॰ माइकल जॉन वॉन वॉटसन चेसà¥à¤Ÿà¤°, à¤à¤®à¥°à¤¡à¥€à¥°, पी॰à¤à¤šà¥°à¤¡à¥€à¥°
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; पà¥à¤°à¥‹à¥° डॉ॰ वॉन वॉटसन माइकल जॉन, à¤à¤®à¥°à¤¡à¥€à¥°, पी॰à¤à¤šà¥°à¤¡à¥€à¥°
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; पà¥à¤°à¥‹à¥° डॉ॰ मा॰ जॉ॰ वॉन वॉटसन, à¤à¤®à¥°à¤¡à¥€à¥°, पी॰à¤à¤šà¥°à¤¡à¥€à¥°
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; पà¥à¤°à¥‹à¥° डॉ॰ वॉन वॉटसन मा॰ जॉ॰, à¤à¤®à¥°à¤¡à¥€à¥°, पी॰à¤à¤šà¥°à¤¡à¥€à¥°
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; वॉन वॉटसन, माइकल जॉ॰ à¤à¤®à¥°à¤¡à¥€à¥°, पी॰à¤à¤šà¥°à¤¡à¥€à¥°
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; वॉन वॉटसन, माइकल जॉन à¤à¤®à¥°à¤¡à¥€à¥°, पी॰à¤à¤šà¥°à¤¡à¥€à¥°
+
+parameters; sorting; long; referring; formal
+
+expectedResult; पà¥à¤°à¥‹à¥° डॉ॰ माइक वॉन वॉटसन
+
+parameters; givenFirst; long; referring; informal
+
+expectedResult; पà¥à¤°à¥‹à¥° डॉ॰ वॉन वॉटसन माइक
+
+parameters; surnameFirst; long; referring; informal
+
+expectedResult; पà¥à¤°à¥‹à¥° डॉ॰ वॉन वॉटसन
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; वॉन वॉटसन, मा॰ जॉ॰
+
+parameters; sorting; short; referring; formal
+
+expectedResult; मा॰ जॉ॰ वॉन वॉटसन
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; वॉन वॉटसन मा॰ जॉ॰
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; वॉन वॉटसन, माइक
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; पà¥à¤°à¥‹à¥° डॉ॰ माइक
+
+parameters; givenFirst; long; addressing; informal
+
+expectedResult; माइक वॉन वॉटसन
+
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; वॉन वॉटसन माइक
+
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; वॉन वॉटसन मा॰
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; माजॉवॉ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; वॉमाजॉ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; माइक
+
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; मावॉ
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; वॉमा
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; मा
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; वॉ
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/hi_Latn.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/hi_Latn.txt
new file mode 100644
index 00000000000..4bac4f3444e
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/hi_Latn.txt
@@ -0,0 +1,818 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: hi_Latn
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Lalit
+name ; locale; hi_Latn_AQ
+
+expectedResult; Lalit
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; L
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Lalit
+name ; surname; Bharati
+name ; locale; hi_Latn_AQ
+
+expectedResult; Bharati, Lalit
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Bharati Lalit
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Lalit Bharati
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Bharati, L.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Bharati L.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; L. Bharati
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Lalit B.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Bharati
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Lalit
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; BL
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; LB
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; B
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; L
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; Lalit
+name ; given2; Mohan
+name ; surname; Bharati
+name ; locale; hi_Latn_AQ
+
+expectedResult; Bharati, Lalit Mohan
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Bharati Lalit Mohan
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Lalit Mohan Bharati
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Bharati, Lalit M.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Bharati Lalit M.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Lalit M. Bharati
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Bharati, Lalit
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Bharati Lalit
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Bharati, L.M.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Lalit Bharati
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Bharati L.M.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; L.M. Bharati
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Bharati L.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Lalit B.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Bharati
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Lalit
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; BLM
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; LMB
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; BL
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; LB
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; B
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; L
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeFull
+name ; title; Shree
+name ; given; Lalit
+name ; given-informal; Lakhan
+name ; given2; Kumaar
+name ; surname-core; Bharati
+name ; generation; Jr
+name ; credentials; MP
+name ; locale; hi_Latn_AQ
+
+expectedResult; Bharati Shree Lalit Kumaar Jr, MP
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Shree Lalit Kumaar Bharati Jr, MP
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Bharati Lalit K. Jr, MP
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Lalit K. Bharati Jr, MP
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Bharati, Lalit Kumaar
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Bharati, Lalit K.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Bharati, Lakhan
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Bharati Lakhan
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Lakhan Bharati
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Bharati, L.K.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Shree Bharati
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Bharati L.K.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; L.K. Bharati
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Bharati L.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Lakhan B.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Lakhan
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; BLK
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; LKB
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; BL
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; LB
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; B
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; L
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; Sinbad
+name ; locale; ko_AQ
+
+expectedResult; Sinbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Kathe
+name ; surname; Muller
+name ; locale; ko_AQ
+
+expectedResult; Muller, Kathe
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Kathe Muller
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Muller Kathe
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Muller, K.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; K. Muller
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Muller K.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Kathe M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Muller
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Kathe
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Zazilia
+name ; given2; Hamish
+name ; surname; Stober
+name ; locale; ko_AQ
+
+expectedResult; Stober, Zazilia Hamish
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Stober Zazilia Hamish
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Zazilia Hamish Stober
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Stober, Zazilia H.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Stober Zazilia H.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Zazilia H. Stober
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Stober, Zazilia
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Stober Zazilia
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Zazilia Stober
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Stober, Z.H.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Stober Z.H.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Z.H. Stober
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Zazilia S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Stober Z.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Zazilia
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Stober
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; SZH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ZHS
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; SZ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ZS
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Z
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; Prof. Dr.
+name ; given; Ada Cornelia
+name ; given-informal; Neele
+name ; given2; Cesar Martin
+name ; surname-prefix; von
+name ; surname-core; Bruhl
+name ; surname2; Gonzalez Domingo
+name ; generation; Jr
+name ; credentials; MD DDS
+name ; locale; ko_AQ
+
+expectedResult; Prof. Dr. Ada Cornelia Cesar Martin von Bruhl Jr, MD DDS
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; von Bruhl Prof. Dr. Ada Cornelia Cesar Martin Jr, MD DDS
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Ada Cornelia C.M. von Bruhl Jr, MD DDS
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; von Bruhl Ada Cornelia C.M. Jr, MD DDS
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Bruhl, Ada Cornelia Cesar Martin von
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Bruhl, Ada Cornelia C.M. von
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Bruhl, A.C.C.M. von
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Prof. Dr. von Bruhl
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; A.C.C.M. von Bruhl
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; von Bruhl A.C.C.M.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; von Bruhl, Neele
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Neele von Bruhl
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; von Bruhl Neele
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; von Bruhl A.C.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Neele v.B.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Neele
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ACV
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; VAC
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; NV
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VN
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; N
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/hr.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/hr.txt
new file mode 100644
index 00000000000..c8b4c45082a
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/hr.txt
@@ -0,0 +1,770 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: hr
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Zrinka
+name ; locale; hr_AQ
+
+expectedResult; Zrinka
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Z
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Irena
+name ; surname; Horvat
+name ; locale; hr_AQ
+
+expectedResult; Horvat, Irena
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Irena Horvat
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Horvat, I.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; short; referring; formal
+
+expectedResult; I. Horvat
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Irena H.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Horvat
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Irena
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; HI
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; IH
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; H
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; I
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; Marijana
+name ; given2; Tomislav
+name ; surname; Babić
+name ; locale; hr_AQ
+
+expectedResult; Babić, Marijana Tomislav
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+
+expectedResult; Marijana Tomislav Babić
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Babić, Marijana T.
+
+parameters; surnameFirst; medium; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; Marijana T. Babić
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Babić, Marijana
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Marijana Babić
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Babić, M. T.
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; M. T. Babić
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Marijana B.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Babić, M.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Marijana
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Babić
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; BMT
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; MTB
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; BM
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; MB
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; B
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeFull
+name ; title; dr. sc.
+name ; given; Branko
+name ; given-informal; Brane
+name ; given2; Hrvoje
+name ; surname-core; Marić
+name ; generation; mlađi
+name ; credentials; prof.
+name ; locale; hr_AQ
+
+expectedResult; Marić, dr. sc. Branko Hrvoje mlađi, prof.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; dr. sc. Branko Hrvoje Marić mlađi, prof.
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Marić, Branko H. mlađi, prof.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Branko H. Marić mlađi, prof.
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Marić, Branko Hrvoje
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Marić, Branko H.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; dr. sc. Marić
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Marić, B. H.
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; Marić, Brane
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; B. H. Marić
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Brane Marić
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Marić, B.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Brane M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Brane
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; BHM
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; MBH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; BM
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MB
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; B
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; Sinbad
+name ; locale; ja_AQ
+
+expectedResult; Sinbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Käthe
+name ; surname; Müller
+name ; locale; ja_AQ
+
+expectedResult; Müller, Käthe
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Käthe Müller
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Müller, K.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; short; referring; formal
+
+expectedResult; K. Müller
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Käthe M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Müller
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Käthe
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Zäzilia
+name ; given2; Hamish
+name ; surname; Stöber
+name ; locale; ja_AQ
+
+expectedResult; Stöber, Zäzilia Hamish
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+
+expectedResult; Zäzilia Hamish Stöber
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Stöber, Zäzilia H.
+
+parameters; surnameFirst; medium; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; Zäzilia H. Stöber
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Stöber, Zäzilia
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Zäzilia Stöber
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Stöber, Z. H.
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; Z. H. Stöber
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Stöber, Z.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Zäzilia S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Zäzilia
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Stöber
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; SZH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ZHS
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; SZ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ZS
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Z
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; prof. dr.
+name ; given; Ada Cornelia
+name ; given-informal; Neele
+name ; given2; César Martín
+name ; surname-prefix; von
+name ; surname-core; Brühl
+name ; surname2; González Domingo
+name ; generation; Jr
+name ; credentials; univ. bacc
+name ; locale; ja_AQ
+
+expectedResult; von Brühl, prof. dr. Ada Cornelia César Martín Jr, univ. bacc
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; prof. dr. Ada Cornelia César Martín von Brühl Jr, univ. bacc
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; von Brühl, Ada Cornelia C. M. Jr, univ. bacc
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Ada Cornelia C. M. von Brühl Jr, univ. bacc
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Brühl, Ada Cornelia César Martín von
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Brühl, Ada Cornelia C. M. von
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; von Brühl, A. C. C. M.
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; A. C. C. M. von Brühl
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; prof. dr. von Brühl
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; von Brühl, A. C.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; von Brühl, Neele
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Neele von Brühl
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Neele v. B.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Neele
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ACV
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; VAC
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; NV
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VN
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; N
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/hsb.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/hsb.txt
new file mode 100644
index 00000000000..40fa1470c17
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/hsb.txt
@@ -0,0 +1,773 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: hsb
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Jurij
+name ; locale; hsb_AQ
+
+expectedResult; Jurij
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; J
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Hanka
+name ; surname; Šołćina
+name ; locale; hsb_AQ
+
+expectedResult; Šołćina, Hanka
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Hanka Šołćina
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Šołćina, H.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; short; referring; formal
+
+expectedResult; H. Šołćina
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Hanka Å .
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Šołćina
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Hanka
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; HÅ 
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; Å H
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; H
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; Å 
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeGGS
+name ; given; Jan
+name ; given2; Beno
+name ; surname; Krawc
+name ; locale; hsb_AQ
+
+expectedResult; Krawc, Jan Beno
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+
+expectedResult; Jan Beno Krawc
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Krawc, Jan B.
+
+parameters; surnameFirst; medium; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; Jan B. Krawc
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Krawc, J. B.
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; J. B. Krawc
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Krawc, Jan
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Jan Krawc
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Krawc, J.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Jan K.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Krawc
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Jan
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; JBK
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; KJB
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; JK
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; KJ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; J
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; dr.
+name ; given; Jěwa-Marja
+name ; given-informal; Jěwa
+name ; given2; Hańža
+name ; surname-core; Wićazowa
+name ; generation; jr.
+name ; credentials; phd
+name ; locale; hsb_AQ
+
+expectedResult; Wićazowa, dr. Jěwa-Marja Hańža jr. phd
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; dr. Jěwa-Marja Hańža Wićazowa jr. phd
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Wićazowa, Jěwa-Marja H. jr. phd
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Jěwa-Marja H. Wićazowa jr. phd
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Wićazowa, Jěwa-Marja Hańža
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Wićazowa, Jěwa-Marja H.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Wićazowa, J. M. H.
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; J. M. H. Wićazowa
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Wićazowa, J. M.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Wićazowa, Jěwa
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Jěwa Wićazowa
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; dr. Wićazowa
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Jěwa W.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Jěwa
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; JHW
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; WJH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; JW
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; WJ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; J
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; W
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; Tomás
+name ; locale; ko_AQ
+
+expectedResult; Tomás
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; T
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Adélaïde
+name ; surname; Lemaître
+name ; locale; ko_AQ
+
+expectedResult; Lemaître, Adélaïde
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Adélaïde Lemaître
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Lemaître, A.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; short; referring; formal
+
+expectedResult; A. Lemaître
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Adélaïde L.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Adélaïde
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Lemaître
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; AL
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; LA
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; L
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Kjetil
+name ; given2; Bjørn
+name ; surname; Løseth
+name ; locale; ko_AQ
+
+expectedResult; Løseth, Kjetil Bjørn
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+
+expectedResult; Kjetil Bjørn Løseth
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Løseth, Kjetil B.
+
+parameters; surnameFirst; medium; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; Kjetil B. Løseth
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Løseth, Kjetil
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Kjetil Løseth
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Løseth, K. B.
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; K. B. Løseth
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Løseth, K.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Kjetil L.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Kjetil
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Løseth
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; KBL
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; LKB
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; KL
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; LK
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; L
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignFull
+name ; title; prof. dr.
+name ; given; Anna Cornelia
+name ; given-informal; Nele
+name ; given2; Eva Sophia
+name ; surname-prefix; van den
+name ; surname-core; Wolf
+name ; surname2; Becker Schmidt
+name ; generation; jr.
+name ; credentials; m.d. ph.d.
+name ; locale; ko_AQ
+
+expectedResult; van den Wolf, prof. dr. Anna Cornelia Eva Sophia jr. m.d. ph.d.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; prof. dr. Anna Cornelia Eva Sophia van den Wolf jr. m.d. ph.d.
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; van den Wolf, Anna Cornelia E. S. jr. m.d. ph.d.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Anna Cornelia E. S. van den Wolf jr. m.d. ph.d.
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Wolf, Anna Cornelia Eva Sophia van den
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Wolf, Anna Cornelia E. S. van den
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; van den Wolf, A. C. E. S.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Wolf, A. C. E. S. van den
+
+parameters; sorting; short; referring; formal
+
+expectedResult; A. C. E. S. van den Wolf
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; prof. dr. van den Wolf
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; van den Wolf, A. C.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; van den Wolf, Nele
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Nele van den Wolf
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Nele v. d. W.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Nele
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; AEV
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; VAE
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; NV
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VN
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; N
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/hu.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/hu.txt
new file mode 100644
index 00000000000..ffd6167bba5
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/hu.txt
@@ -0,0 +1,816 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: hu
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Vuk
+name ; locale; hu_AQ
+
+expectedResult; Vuk
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; V
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Dóra
+name ; surname; Mátrai
+name ; locale; hu_AQ
+
+expectedResult; Mátrai, Dóra
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Dóra Mátrai
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Mátrai Dóra
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Mátrai, D.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; D. Mátrai
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Mátrai D.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Dóra M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Mátrai
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Dóra
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; DM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MD
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; D
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeGGS
+name ; given; Máté
+name ; given2; Bendegúz
+name ; surname; Szabados
+name ; locale; hu_AQ
+
+expectedResult; Szabados, Máté Bendegúz
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Máté Bendegúz Szabados
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Szabados Máté Bendegúz
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Szabados, Máté B.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Máté B. Szabados
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Szabados Máté B.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Szabados, M. B.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; M. B. Szabados
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Szabados M. B.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Szabados, Máté
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Máté Szabados
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Szabados Máté
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Szabados M.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Szabados
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Máté S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Máté
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; MBS
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; SMB
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; MS
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; SM
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; given; Bertram Wilberforce
+name ; given-informal; Bertie
+name ; given2; Henry Robert
+name ; surname-core; Wooster
+name ; generation; ifj.
+name ; locale; hu_AQ
+
+expectedResult; Wooster, Bertram Wilberforce Henry Robert
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Bertram Wilberforce Henry Robert Wooster
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Wooster Bertram Wilberforce Henry Robert
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Wooster, Bertram Wilberforce H. R.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Bertram Wilberforce H. R. Wooster
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Wooster Bertram Wilberforce H. R.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Wooster, B. W. H. R.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; B. W. H. R. Wooster
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Wooster B. W. H. R.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Wooster, Bertie
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Bertie Wooster
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Wooster Bertie
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Wooster B. W.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Bertie W.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Wooster
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Bertie
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; BHW
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; WBH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; BW
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; WB
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; B
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; W
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; Sinbad
+name ; locale; fr_AQ
+
+expectedResult; Sinbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Käthe
+name ; surname; Müller
+name ; locale; fr_AQ
+
+expectedResult; Müller, Käthe
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Käthe Müller
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Müller Käthe
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Müller, K.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; K. Müller
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Müller K.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Käthe M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Müller
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Käthe
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Zäzilia
+name ; given2; Hamish
+name ; surname; Stöber
+name ; locale; fr_AQ
+
+expectedResult; Stöber, Zäzilia Hamish
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Stöber Zäzilia Hamish
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Zäzilia Hamish Stöber
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Stöber, Zäzilia H.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Stöber Zäzilia H.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Zäzilia H. Stöber
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Stöber, Zäzilia
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Stöber Zäzilia
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Zäzilia Stöber
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Stöber, Z. H.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Stöber Z. H.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Z. H. Stöber
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Zäzilia S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Stöber Z.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Zäzilia
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Stöber
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; SZH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ZHS
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; SZ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ZS
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Z
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; Prof. Dr.
+name ; given; Luca Sarolta
+name ; given-informal; Katus
+name ; given2; Éva Erzsébet
+name ; surname-prefix; von
+name ; surname-core; Kovács
+name ; surname2; Sallói-Horváth
+name ; generation; ifj.
+name ; credentials; M.D. Ph.D.
+name ; locale; fr_AQ
+
+expectedResult; von Kovács, Luca Sarolta Éva Erzsébet M.D. Ph.D.
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Luca Sarolta Éva Erzsébet von Kovács M.D. Ph.D.
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; von Kovács Luca Sarolta Éva Erzsébet M.D. Ph.D.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; von Kovács, Luca Sarolta É. E. M.D. Ph.D.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Luca Sarolta É. E. von Kovács M.D. Ph.D.
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; von Kovács Luca Sarolta É. E. M.D. Ph.D.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; von Kovács, L. S. É. E.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; L. S. É. E. von Kovács
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; von Kovács L. S. É. E.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Prof. Dr. von Kovács
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; von Kovács, Katus
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Katus von Kovács
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; von Kovács Katus
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; von Kovács L. S.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Katus v. K.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Katus
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; LÉV
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; VLÉ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; KV
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VK
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/hy.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/hy.txt
new file mode 100644
index 00000000000..98390483c60
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/hy.txt
@@ -0,0 +1,730 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: hy
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Ô±Ö€Õ©Õ¸Ö‚Ö€
+name ; locale; hy_AQ
+
+expectedResult; Ô±Ö€Õ©Õ¸Ö‚Ö€
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ô±
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Õ€Õ¥Õ²Õ«Õ¶Õ¥
+name ; surname; Ô±Õ¤Õ¡Õ´ÕµÕ¡Õ¶
+name ; locale; hy_AQ
+
+expectedResult; Ô±Õ¤Õ¡Õ´ÕµÕ¡Õ¶ Õ€Õ¥Õ²Õ«Õ¶Õ¥
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Õ€Õ¥Õ²Õ«Õ¶Õ¥ Ô±Õ¤Õ¡Õ´ÕµÕ¡Õ¶
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Ադամյան Հ․
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; short; referring; formal
+
+expectedResult; Հ․ Ադամյան
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Հեղինե Ա․
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Ô±Õ¤Õ¡Õ´ÕµÕ¡Õ¶
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Õ€Õ¥Õ²Õ«Õ¶Õ¥
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Ô±Õ€
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; Õ€Ô±
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; Ô±
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Õ€
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; Õ€Õ¸Õ¾Õ°Õ¡Õ¶Õ¶Õ¥Õ½
+name ; given2; Ô±Ö€Õ´Õ¥Õ¶Õ«
+name ; surname; Ô´Õ¡Ö€Õ¢Õ«Õ¶ÕµÕ¡Õ¶
+name ; locale; hy_AQ
+
+expectedResult; Ô´Õ¡Ö€Õ¢Õ«Õ¶ÕµÕ¡Õ¶ Õ€Õ¸Õ¾Õ°Õ¡Õ¶Õ¶Õ¥Õ½ Ô±Ö€Õ´Õ¥Õ¶Õ«
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Õ€Õ¸Õ¾Õ°Õ¡Õ¶Õ¶Õ¥Õ½ Ô±Ö€Õ´Õ¥Õ¶Õ« Ô´Õ¡Ö€Õ¢Õ«Õ¶ÕµÕ¡Õ¶
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Հովհաննես Ա․ Դարբինյան
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Ô´Õ¡Ö€Õ¢Õ«Õ¶ÕµÕ¡Õ¶ Õ€Õ¸Õ¾Õ°Õ¡Õ¶Õ¶Õ¥Õ½
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Õ€Õ¸Õ¾Õ°Õ¡Õ¶Õ¶Õ¥Õ½ Ô´Õ¡Ö€Õ¢Õ«Õ¶ÕµÕ¡Õ¶
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Դարբինյան Հ․
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; short; referring; formal
+
+expectedResult; Հ․ Դարբինյան
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Հովհաննես Դ․
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Ô´Õ¡Ö€Õ¢Õ«Õ¶ÕµÕ¡Õ¶
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Õ€Õ¸Õ¾Õ°Õ¡Õ¶Õ¶Õ¥Õ½
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Ô´Õ€
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; Õ€Ô´
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; Ô´
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Õ€
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeFull
+name ; title; ÕºÖ€Õ¶
+name ; given; Õ€Õ¡ÕµÕ¯
+name ; given-informal; Õ€Õ¡ÕµÕ¯Õ¸
+name ; given2; ÕŠÕ¡Ö€Õ£Ö‡Õ«
+name ; surname-core; ÕÕ¥Ö€-ÕŠÕ¸Õ²Õ¸Õ½ÕµÕ¡Õ¶
+name ; credentials; բ․գ․դ․
+name ; locale; hy_AQ
+
+expectedResult; բ․գ․դ․ ÕºÖ€Õ¶ Õ€Õ¡ÕµÕ¯ ÕŠÕ¡Ö€Õ£Ö‡Õ« ÕÕ¥Ö€-ÕŠÕ¸Õ²Õ¸Õ½ÕµÕ¡Õ¶
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; բ․գ․դ․ ÕÕ¥Ö€-ÕŠÕ¸Õ²Õ¸Õ½ÕµÕ¡Õ¶ Õ€Õ¡ÕµÕ¯ ÕŠÕ¡Ö€Õ£Ö‡Õ«
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; բ․գ․դ․ Õ€Õ¡ÕµÕ¯ Պ․ ÕÕ¥Ö€-ÕŠÕ¸Õ²Õ¸Õ½ÕµÕ¡Õ¶
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; բ․գ․դ․ ÕÕ¥Ö€-ÕŠÕ¸Õ²Õ¸Õ½ÕµÕ¡Õ¶ Õ€Õ¡ÕµÕ¯
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Õ€Õ¡ÕµÕ¯Õ¸ ÕÕ¥Ö€-ÕŠÕ¸Õ²Õ¸Õ½ÕµÕ¡Õ¶
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; ÕÕ¥Ö€-ÕŠÕ¸Õ²Õ¸Õ½ÕµÕ¡Õ¶ Õ€Õ¡ÕµÕ¯Õ¸
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; ÕÕ¥Ö€-ÕŠÕ¸Õ²Õ¸Õ½ÕµÕ¡Õ¶ Õ€Õ¡ÕµÕ¯
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+
+expectedResult; ÕºÖ€Õ¶ ÕÕ¥Ö€-ÕŠÕ¸Õ²Õ¸Õ½ÕµÕ¡Õ¶
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Հ․ ÕÕ¥Ö€-ÕŠÕ¸Õ²Õ¸Õ½ÕµÕ¡Õ¶
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ÕÕ¥Ö€-ÕŠÕ¸Õ²Õ¸Õ½ÕµÕ¡Õ¶ Հ․
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; short; referring; formal
+
+expectedResult; Õ€Õ¡ÕµÕ¯Õ¸ Õ․ Պ․
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Õ€Õ¡ÕµÕ¯Õ¸
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Õ€Õ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; ÕÕ€
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; Õ€
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; Õ
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; ÕÕ«Õ¶Õ¢Õ¡Õ¤
+name ; locale; ko_AQ
+
+expectedResult; ÕÕ«Õ¶Õ¢Õ¡Õ¤
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Õ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Õ”Õ¥ÕµÕ©
+name ; surname; Õ„ÕµÕ¸Ö‚Õ¬Õ¥Ö€
+name ; locale; ko_AQ
+
+expectedResult; Õ„ÕµÕ¸Ö‚Õ¬Õ¥Ö€ Õ”Õ¥ÕµÕ©
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Õ”Õ¥ÕµÕ© Õ„ÕµÕ¸Ö‚Õ¬Õ¥Ö€
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Մյուլեր Ք․
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; short; referring; formal
+
+expectedResult; Ք․ Մյուլեր
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Õ„ÕµÕ¸Ö‚Õ¬Õ¥Ö€
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Քեյթ Մ․
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Õ”Õ¥ÕµÕ©
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Õ„Õ”
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; Õ”Õ„
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; Õ„
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Õ”
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGGS
+name ; given; Õ‘Õ¥ÖÕ«Õ¬Õ«Õ¡
+name ; given2; Õ€Õ¡Õ´Õ«Õ·
+name ; surname; Õ‡Õ¿ÕµÕ¸Õ¢Õ¥Ö€
+name ; locale; ko_AQ
+
+expectedResult; Õ‡Õ¿ÕµÕ¸Õ¢Õ¥Ö€ Õ‘Õ¥ÖÕ«Õ¬Õ«Õ¡ Õ€Õ¡Õ´Õ«Õ·
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Õ‘Õ¥ÖÕ«Õ¬Õ«Õ¡ Õ€Õ¡Õ´Õ«Õ· Õ‡Õ¿ÕµÕ¸Õ¢Õ¥Ö€
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Õ‘Õ¥ÖÕ«Õ¬Õ«Õ¡ Հ․ Õ‡Õ¿ÕµÕ¸Õ¢Õ¥Ö€
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Õ‡Õ¿ÕµÕ¸Õ¢Õ¥Ö€ Õ‘Õ¥ÖÕ«Õ¬Õ«Õ¡
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Õ‘Õ¥ÖÕ«Õ¬Õ«Õ¡ Õ‡Õ¿ÕµÕ¸Õ¢Õ¥Ö€
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Շտյոբեր Ց․
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; short; referring; formal
+
+expectedResult; Ց․ Շտյոբեր
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Õ‘Õ¥ÖÕ«Õ¬Õ«Õ¡ Շ․
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Õ‡Õ¿ÕµÕ¸Õ¢Õ¥Ö€
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Õ‘Õ¥ÖÕ«Õ¬Õ«Õ¡
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Õ‡Õ‘
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; Õ‘Õ‡
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; Õ‡
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Õ‘
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; Õ¤-Ö€
+name ; given; Ô±Õ¤Õ¡ Ô¿Õ¸Õ¼Õ¶Õ¥Õ¬Õ«Õ¡
+name ; given-informal; Õ†Õ«Õ¬
+name ; given2; ÕÕ¥Õ¦Õ¡Ö€ Õ„Õ¡Ö€Õ¿Õ«Õ¶
+name ; surname-prefix; Õ¾Õ¡Õ¶ Õ¤Õ¥Õ¶
+name ; surname-core; ÕŽÕ¸Õ¬Ö†
+name ; surname2; Ô³Õ¸Õ¶Õ½Õ¡Õ¬Õ¥Õ½ Ô´Õ¸Õ´Õ«Õ¶Õ£Õ¸
+name ; generation; Õ¯Ö€Õ¿Õ½Õ¥Ö€
+name ; credentials; բ․գ․դ․
+name ; locale; ko_AQ
+
+expectedResult; բ․գ․դ․ Õ¤-Ö€ Ô±Õ¤Õ¡ Ô¿Õ¸Õ¼Õ¶Õ¥Õ¬Õ«Õ¡ ÕÕ¥Õ¦Õ¡Ö€ Õ„Õ¡Ö€Õ¿Õ«Õ¶ Õ¾Õ¡Õ¶ Õ¤Õ¥Õ¶ ÕŽÕ¸Õ¬Ö†
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; բ․գ․դ․ Õ¾Õ¡Õ¶ Õ¤Õ¥Õ¶ ÕŽÕ¸Õ¬Ö† Ô±Õ¤Õ¡ Ô¿Õ¸Õ¼Õ¶Õ¥Õ¬Õ«Õ¡ ÕÕ¥Õ¦Õ¡Ö€ Õ„Õ¡Ö€Õ¿Õ«Õ¶
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; բ․գ․դ․ Ô±Õ¤Õ¡ Ô¿Õ¸Õ¼Õ¶Õ¥Õ¬Õ«Õ¡ Õ․ Մ․ Õ¾Õ¡Õ¶ Õ¤Õ¥Õ¶ ÕŽÕ¸Õ¬Ö†
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; բ․գ․դ․ վան դեն Վոլֆ Ադա Կոռնելիա
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Ա․ Կ․ վան դեն Վոլֆ
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; վան դեն Վոլֆ Ա․ Կ․
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ÕŽÕ¸Õ¬Ö† Ô±Õ¤Õ¡ Ô¿Õ¸Õ¼Õ¶Õ¥Õ¬Õ«Õ¡
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+
+expectedResult; Õ¤-Ö€ Õ¾Õ¡Õ¶ Õ¤Õ¥Õ¶ ÕŽÕ¸Õ¬Ö†
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Õ†Õ«Õ¬ Õ¾Õ¡Õ¶ Õ¤Õ¥Õ¶ ÕŽÕ¸Õ¬Ö†
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Õ¾Õ¡Õ¶ Õ¤Õ¥Õ¶ ÕŽÕ¸Õ¬Ö† Õ†Õ«Õ¬
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Նիլ վ․ դ․ Վ․
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Վոլֆ Ա․ Կ․
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Õ†Õ«Õ¬
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Ô±ÕŽ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; Õ†ÕŽ
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; ÕŽÔ±
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ÕŽÕ†
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; Õ†
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; ÕŽ
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/id.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/id.txt
new file mode 100644
index 00000000000..0069dcc041f
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/id.txt
@@ -0,0 +1,766 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: id
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Budi
+name ; locale; id_AQ
+
+expectedResult; Budi
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; B
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Maria
+name ; surname; Wijaya
+name ; locale; id_AQ
+
+expectedResult; Wijaya, Maria
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Maria Wijaya
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Wijaya, M.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; short; referring; formal
+
+expectedResult; M. Wijaya
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Maria W.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Wijaya
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Maria
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; MW
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; WM
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; W
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeGGS
+name ; given; Ahmad Albar
+name ; given2; bin
+name ; surname; Akbar
+name ; locale; id_AQ
+
+expectedResult; Akbar, Ahmad Albar bin
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+
+expectedResult; Ahmad Albar bin Akbar
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Akbar, Ahmad Albar b.
+
+parameters; surnameFirst; medium; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; Ahmad Albar b. Akbar
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Akbar, Ahmad Albar
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ahmad Albar Akbar
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Akbar, A. A. b.
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; A. A. b. Akbar
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Ahmad Albar A.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Akbar, A. A.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Ahmad Albar
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Akbar
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; AAB
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ABA
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; AA
+
+parameters; givenFirst; long; monogram; informal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeFull
+name ; title; Bapak
+name ; given; Dwi Putro
+name ; given-informal; Dwi
+name ; given2; bin
+name ; surname-core; Adinata
+name ; credentials; MP
+name ; locale; id_AQ
+
+expectedResult; Bapak Adinata, Dwi Putro bin MP
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Bapak Dwi Putro bin Adinata MP
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Adinata, Dwi Putro b. MP
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Dwi Putro b. Adinata MP
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Adinata, Dwi Putro bin
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Adinata, Dwi Putro b.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Adinata, D. P. b.
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; D. P. b. Adinata
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Adinata, D. P.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Bapak Adinata
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Adinata, Dwi
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Dwi Adinata
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Dwi A.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ADB
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; DBA
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; Dwi
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; AD
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; DA
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; D
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; Sinbad
+name ; locale; ja_AQ
+
+expectedResult; Sinbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Kathe
+name ; surname; Muller
+name ; locale; ja_AQ
+
+expectedResult; Muller, Kathe
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Kathe Muller
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Muller, K.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; short; referring; formal
+
+expectedResult; K. Muller
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Kathe M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Muller
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Kathe
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Zazilia
+name ; given2; Hamish
+name ; surname; Stober
+name ; locale; ja_AQ
+
+expectedResult; Stober, Zazilia Hamish
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+
+expectedResult; Zazilia Hamish Stober
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Stober, Zazilia H.
+
+parameters; surnameFirst; medium; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; Zazilia H. Stober
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Stober, Zazilia
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Zazilia Stober
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Stober, Z. H.
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; Z. H. Stober
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Stober, Z.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Zazilia S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Zazilia
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Stober
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; SZH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ZHS
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; SZ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ZS
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Z
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; Prof. Dr.
+name ; given; Ada Cornelia
+name ; given-informal; Neele
+name ; given2; Cesar Martín
+name ; surname-prefix; von
+name ; surname-core; Bruhl
+name ; surname2; Gonzalez Domingo
+name ; generation; Jr
+name ; credentials; M.D., Ph.D.
+name ; locale; ja_AQ
+
+expectedResult; Prof. Dr. von Bruhl, Ada Cornelia Cesar Martín Jr, M.D., Ph.D.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Prof. Dr. Ada Cornelia Cesar Martín von Bruhl Jr, M.D., Ph.D.
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; von Bruhl, Ada Cornelia C. M. Jr, M.D., Ph.D.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Ada Cornelia C. M. von Bruhl Jr, M.D., Ph.D.
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Bruhl, Ada Cornelia Cesar Martín von
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Bruhl, Ada Cornelia C. M. von
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Bruhl, A. C. C. M. von
+
+parameters; sorting; short; referring; formal
+
+expectedResult; von Bruhl, A. C. C. M.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; A. C. C. M. von Bruhl
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Prof. Dr. von Bruhl
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; von Bruhl, A. C.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; von Bruhl, Neele
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Neele von Bruhl
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Neele v. B.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Neele
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ACV
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; VAC
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; NV
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VN
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; N
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ig.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ig.txt
new file mode 100644
index 00000000000..ba7c854cbbc
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ig.txt
@@ -0,0 +1,794 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: ig
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Ada
+name ; locale; ig_AQ
+
+expectedResult; Ada
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; A
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Irene
+name ; surname; Obidike
+name ; locale; ig_AQ
+
+expectedResult; Obidike, Irene
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Irene Obidike
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Obidike Irene
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Obidike, I.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; I. Obidike
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Obidike I.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Irene O.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Obidike
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Irene
+
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; IO
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; OI
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; I
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; O
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeGGS
+name ; given; John
+name ; given2; Chinedu
+name ; surname; Amadi
+name ; locale; ig_AQ
+
+expectedResult; Amadi, John Chinedu
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Amadi John Chinedu
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; John Chinedu Amadi
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Amadi, John C.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Amadi John C.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Amadi, J. C.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Amadi J. C.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Amadi, John
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; J. C. Amadi
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Amadi John
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; John Amadi
+
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Amadi J.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; John A.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Amadi
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; John
+
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; AJC
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; JCA
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; AJ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; J
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeFull
+name ; title; Mr.
+name ; given; Christopher
+name ; given-informal; Chris
+name ; given2; Chukwudike
+name ; surname-core; Amadi
+name ; generation; Jr
+name ; credentials; MP
+name ; locale; ig_AQ
+
+expectedResult; Amadi Mr. Christopher Chukwudike Jr, MP
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Mr. Christopher Chukwudike Amadi MP
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Amadi, Christopher Chukwudike
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Amadi Christopher C. Jr, MP
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Amadi, Christopher C.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Amadi, C. C.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Amadi, Chris
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Amadi C. C.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Amadi Chris
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; C. C. Amadi
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Chris Amadi
+
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Mr. Amadi
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Amadi C.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Chris A.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Chris
+
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ACC
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; CCA
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; AC
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; C
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; Sinbad
+name ; locale; ko_AQ
+
+expectedResult; Sinbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Käthe
+name ; surname; Müller
+name ; locale; ko_AQ
+
+expectedResult; Müller, Käthe
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Käthe Müller
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Müller Käthe
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Müller, K.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; K. Müller
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Müller K.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Käthe M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Müller
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Käthe
+
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Zäzilia
+name ; given2; Hamish
+name ; surname; Stöber
+name ; locale; ko_AQ
+
+expectedResult; Stöber, Zäzilia Hamish
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Stöber Zäzilia Hamish
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Zäzilia Hamish Stöber
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Stöber, Zäzilia H.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Stöber Zäzilia H.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Stöber, Zäzilia
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Stöber Zäzilia
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Zäzilia Stöber
+
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Stöber, Z. H.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Stöber Z. H.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Z. H. Stöber
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Zäzilia S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Stöber Z.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Zäzilia
+
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Stöber
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; SZH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ZHS
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; SZ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Z
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; Prof. Dr.
+name ; given; Ada Cornelia
+name ; given-informal; Neele
+name ; given2; Eva Sophia
+name ; surname-prefix; van den
+name ; surname-core; Wolf
+name ; surname2; Becker Schmidt
+name ; generation; Jr
+name ; credentials; M.D. Ph.D.
+name ; locale; ko_AQ
+
+expectedResult; Prof. Dr. Ada Cornelia Eva Sophia van den Wolf Becker Schmidt M.D. Ph.D.
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; van den Wolf Prof. Dr. Ada Cornelia Eva Sophia Jr, M.D. Ph.D.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; van den Wolf Ada Cornelia E. S. Jr, M.D. Ph.D.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Wolf, Ada Cornelia Eva Sophia van den
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Wolf, Ada Cornelia E. S. van den
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Wolf, A. C. E. S. van den
+
+parameters; sorting; short; referring; formal
+
+expectedResult; A. C. E. S. van den Wolf
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; van den Wolf A. C. E. S.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Prof. Dr. van den Wolf
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; van den Wolf, Neele
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Neele van den Wolf
+
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; van den Wolf A. C.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; van den Wolf Neele
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Neele v. d. W.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Neele
+
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; AEV
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VAE
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; VN
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; N
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/is.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/is.txt
new file mode 100644
index 00000000000..f276fc1c86c
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/is.txt
@@ -0,0 +1,806 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: is
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Sigurður
+name ; locale; is_AQ
+
+expectedResult; Sigurður
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Ãris
+name ; surname; Adólfsdóttir
+name ; locale; is_AQ
+
+expectedResult; Adólfsdóttir, Ãris
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Adólfsdóttir Ãris
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Ãris Adólfsdóttir
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Adólfsdóttir, Ã.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Ã. Adólfsdóttir
+
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; addressing; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; Adólfsdóttir
+
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+
+expectedResult; Ãris A.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Ãris
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; AÃ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ÃA
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Ã
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; Jón
+name ; given2; Hannes
+name ; surname; Valdimarsson
+name ; locale; is_AQ
+
+expectedResult; Jón Hannes Valdimarsson
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; addressing; formal
+parameters; sorting; long; referring; formal
+
+expectedResult; Valdimarsson Jón Hannes
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Valdimarsson, Jón H.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Jón H. Valdimarsson
+
+parameters; givenFirst; medium; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; Valdimarsson, J. H.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; J. H. Valdimarsson
+
+parameters; givenFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; Valdimarsson, Jón
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Jón Valdimarsson
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Valdimarsson, J.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; J. Valdimarsson
+
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; Valdimarsson
+
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+
+expectedResult; Jón V.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; JHV
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; Jón
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; VJH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; JV
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VJ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; J
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; Hr.
+name ; given; Geir Jón
+name ; given-informal; Geiri
+name ; given2; Magnús Brynjar
+name ; surname-core; Skeggjason
+name ; generation; yngri
+name ; credentials; þingmaður
+name ; locale; is_AQ
+
+expectedResult; Skeggjason Hr. Geir Jón Magnús Brynjar yngri, þingmaður
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Geir Jón Magnús Brynjar Skeggjason, þingmaður
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Geir Jón M. B. Skeggjason yngri, þingmaður
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Hr. Geir Jón Magnús Brynjar Skeggjason
+
+parameters; givenFirst; long; addressing; formal
+
+expectedResult; Skeggjason, Geir Jón M. B., þingmaður
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Geir Jón Magnús Brynjar Skeggjason
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Skeggjason, Hr. G. J. M. B.
+
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Geir Jón M. B. Skeggjason
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Hr. Geir Jón Skeggjason
+
+parameters; givenFirst; medium; addressing; formal
+
+expectedResult; Skeggjason, G. J. M. B.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; G. J. M. B. Skeggjason
+
+parameters; givenFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; Hr. G. J. Skeggjason
+
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; Skeggjason, G. J.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Skeggjason, Geiri
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Geiri Skeggjason
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Hr. Skeggjason
+
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+
+expectedResult; Geiri S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Geiri
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; GMS
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; SGM
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; GS
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; SG
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; G
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; Sinbad
+name ; locale; ko_AQ
+
+expectedResult; Sinbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Käthe
+name ; surname; Müller
+name ; locale; ko_AQ
+
+expectedResult; Müller, Käthe
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Käthe Müller
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Müller Käthe
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Müller, K.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; K. Müller
+
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; addressing; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; Käthe M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Müller
+
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+
+expectedResult; Käthe
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Zäzilia
+name ; given2; Hamish
+name ; surname; Stöber
+name ; locale; ko_AQ
+
+expectedResult; Stöber Zäzilia Hamish
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Zäzilia Hamish Stöber
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; addressing; formal
+parameters; sorting; long; referring; formal
+
+expectedResult; Stöber, Zäzilia H.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Zäzilia H. Stöber
+
+parameters; givenFirst; medium; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; Stöber, Zäzilia
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Zäzilia Stöber
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Stöber, Z. H.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Z. H. Stöber
+
+parameters; givenFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; Stöber, Z.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Zäzilia S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Z. Stöber
+
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; Zäzilia
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Stöber
+
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+
+expectedResult; SZH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ZHS
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; SZ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ZS
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Z
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; dr.
+name ; given; Sigríður Jóna
+name ; given-informal; Sigga
+name ; given2; Valgerður Fanndís
+name ; surname-prefix; von
+name ; surname-core; Bjarnadóttir
+name ; surname2; Jónsdóttir Möller
+name ; generation; yngri
+name ; credentials; M.A. í bókmenntafræði
+name ; locale; ko_AQ
+
+expectedResult; von Bjarnadóttir dr. Sigríður Jóna Valgerður Fanndís yngri, M.A. í bókmenntafræði
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Sigríður Jóna Valgerður Fanndís von Bjarnadóttir, M.A. í bókmenntafræði
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Sigríður Jóna V. F. von Bjarnadóttir yngri, M.A. í bókmenntafræði
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; von Bjarnadóttir, Sigríður Jóna V. F., M.A. í bókmenntafræði
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; dr. Sigríður Jóna Valgerður Fanndís von Bjarnadóttir
+
+parameters; givenFirst; long; addressing; formal
+
+expectedResult; Sigríður Jóna Valgerður Fanndís von Bjarnadóttir
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Sigríður Jóna V. F. von Bjarnadóttir
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; dr. Sigríður Jóna von Bjarnadóttir
+
+parameters; givenFirst; medium; addressing; formal
+
+expectedResult; von Bjarnadóttir, dr. S. J. V. F.
+
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; von Bjarnadóttir, S. J. V. F.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; S. J. V. F. von Bjarnadóttir
+
+parameters; givenFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; dr. S. J. von Bjarnadóttir
+
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; von Bjarnadóttir, S. J.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; von Bjarnadóttir, Sigga
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Sigga von Bjarnadóttir
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; dr. von Bjarnadóttir
+
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+
+expectedResult; Sigga v. B.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Sigga
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; SVV
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; VSV
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; SV
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VS
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/it.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/it.txt
new file mode 100644
index 00000000000..94d1f430828
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/it.txt
@@ -0,0 +1,812 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: it
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Mina
+name ; locale; it_AQ
+
+expectedResult; Mina
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; M
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Irene
+name ; surname; Fabbri
+name ; locale; it_AQ
+
+expectedResult; Fabbri, Irene
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Fabbri Irene
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Irene Fabbri
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Fabbri, I.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Fabbri I.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; I. Fabbri
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Irene F.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Fabbri
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Irene
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; FI
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; IF
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; F
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; I
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; Gian Carlo
+name ; given2; Maria
+name ; surname; Conti
+name ; locale; it_AQ
+
+expectedResult; Conti, Gian Carlo Maria
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Conti Gian Carlo Maria
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Gian Carlo Maria Conti
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Conti, Gian Carlo M.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Conti Gian Carlo M.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Gian Carlo M. Conti
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Conti, Gian Carlo
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Conti Gian Carlo
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Gian Carlo Conti
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Conti, G. C. M.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Conti G. C. M.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; G. C. M. Conti
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Gian Carlo C.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Conti G. C.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Gian Carlo
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Conti
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; CGM
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; GMC
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; CG
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; GC
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; C
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; G
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeFull
+name ; title; Sig.
+name ; given; Fabio Massimo
+name ; given-informal; Max
+name ; given2; Carlo Alberto
+name ; surname-core; Martini
+name ; generation; II
+name ; credentials; AD
+name ; locale; it_AQ
+
+expectedResult; Sig. Fabio Massimo Carlo Alberto Martini II, AD
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Sig. Martini Fabio Massimo Carlo Alberto II, AD
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Martini, Fabio Massimo Carlo Alberto
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Fabio Massimo C. A. Martini II, AD
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Martini Fabio Massimo C. A. II, AD
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Martini, Fabio Massimo C. A.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Martini, F. M. C. A.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; F. M. C. A. Martini
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Martini F. M. C. A.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Martini F. M.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Martini, Max
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Sig. Martini
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Martini Max
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Max Martini
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Max M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; FCM
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; Max
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; MFC
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; MM
+
+parameters; givenFirst; long; monogram; informal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; Sinbad
+name ; locale; ko_AQ
+
+expectedResult; Sinbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Julia
+name ; surname; Roberts
+name ; locale; ko_AQ
+
+expectedResult; Roberts, Julia
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Julia Roberts
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Roberts Julia
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Roberts, J.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; J. Roberts
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Roberts J.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Julia R.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Roberts
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Julia
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; JR
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; RJ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; J
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; R
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Zäzilia
+name ; given2; Hamish
+name ; surname; Stöber
+name ; locale; ko_AQ
+
+expectedResult; Stöber, Zäzilia Hamish
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Stöber Zäzilia Hamish
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Zäzilia Hamish Stöber
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Stöber, Zäzilia H.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Stöber Zäzilia H.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Zäzilia H. Stöber
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Stöber, Zäzilia
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Stöber Zäzilia
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Zäzilia Stöber
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Stöber, Z. H.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Stöber Z. H.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Z. H. Stöber
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Zäzilia S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Stöber Z.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Zäzilia
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Stöber
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; SZH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ZHS
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; SZ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ZS
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Z
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; Prof. Dr.
+name ; given; Ada Cornelia
+name ; given-informal; Neele
+name ; given2; César Martín
+name ; surname-prefix; von
+name ; surname-core; Brühl
+name ; surname2; González Domingo
+name ; generation; Jr
+name ; credentials; MD DDS
+name ; locale; ko_AQ
+
+expectedResult; Prof. Dr. Ada Cornelia César Martín von Brühl Jr, MD DDS
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Prof. Dr. von Brühl Ada Cornelia César Martín Jr, MD DDS
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Ada Cornelia C. M. von Brühl Jr, MD DDS
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; von Brühl Ada Cornelia C. M. Jr, MD DDS
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; von Brühl, Ada Cornelia César Martín
+
+parameters; sorting; long; referring; formal
+
+expectedResult; von Brühl, Ada Cornelia C. M.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; von Brühl, A. C. C. M.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; A. C. C. M. von Brühl
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; von Brühl A. C. C. M.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Prof. Dr. von Brühl
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; von Brühl, Neele
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Neele von Brühl
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; von Brühl A. C.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; von Brühl Neele
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Neele v. B.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Neele
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ACB
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; BAC
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; BN
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; NB
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; B
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; N
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ja.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ja.txt
new file mode 100644
index 00000000000..da3fd82e45d
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ja.txt
@@ -0,0 +1,619 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: ja
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; 慎太郎
+name ; locale; ja_AQ
+
+expectedResult; 慎太郎
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; æ…Ž
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; 一郎
+name ; surname; 安藤
+name ; locale; ja_AQ
+
+expectedResult; 一郎安藤
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; 安藤一郎
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; 一郎
+
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; 安藤
+
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; 一
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; 太郎
+name ; given2; トーマス
+name ; surname; 山田
+name ; locale; ja_AQ
+
+expectedResult; 太郎トーマス山田
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; 山田トーマス太郎
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; 太郎山田
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; 山田太郎
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; 太郎
+
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; 山田
+
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; 太
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeFull
+name ; title; ã•ã‚“
+name ; given; æµå­
+name ; given-informal; ã‘ã„ã“
+name ; given2; グレース
+name ; surname-core; ä½è—¤
+name ; generation; ジュニア
+name ; credentials; 国会議員
+name ; locale; ja_AQ
+
+expectedResult; æµå­ã‚°ãƒ¬ãƒ¼ã‚¹ä½è—¤ã‚¸ãƒ¥ãƒ‹ã‚¢ã•ã‚“
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; ä½è—¤ã‚°ãƒ¬ãƒ¼ã‚¹æµå­ã•ã‚“
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; ä½è—¤ã‚°ãƒ¬ãƒ¼ã‚¹æµå­
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; ã‘ã„ã“ä½è—¤ã•ã‚“
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ä½è—¤ã‘ã„ã“ã•ã‚“
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ä½è—¤æµå­ã•ã‚“
+
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; æµå­ä½è—¤ã•ã‚“
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ã‘ã„ã“ã•ã‚“
+
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ä½è—¤ã‘ã„ã“
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; ä½è—¤ã•ã‚“
+
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ä½è—¤æµå­
+
+parameters; sorting; short; referring; formal
+
+expectedResult; æµ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; マイケル
+name ; locale; fr_AQ
+
+expectedResult; マイケル
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; マ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; アルベルト
+name ; surname; アインシュタイン
+name ; locale; fr_AQ
+
+expectedResult; アインシュタイン・アルベルト
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; アルベルト・アインシュタイン
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; アインシュタイン
+
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; アルベルト
+
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ã‚¢
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGGS
+name ; given; セシリア
+name ; given2; ローズ
+name ; surname; ブラウン
+name ; locale; fr_AQ
+
+expectedResult; セシリア・ローズ・ブラウン
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; ブラウン・ローズ・セシリア
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; セシリア・ブラウン
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ブラウン・セシリア
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; セシリア
+
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ブラウン
+
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ã‚»
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; åšå£«
+name ; given; ジェニファー
+name ; given-informal; ジェニー
+name ; given2; ソフィア
+name ; surname-prefix; フォン
+name ; surname-core; スミス
+name ; generation; ジュニア
+name ; credentials; 医学åšå£«
+name ; locale; fr_AQ
+
+expectedResult; ジェニファー・ソフィア・フォン・スミス・ジュニアåšå£«
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; フォン・スミス・ソフィア・ジェニファーåšå£«
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; フォン・スミス・ソフィア・ジェニファー
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; ジェニファー・フォン・スミスåšå£«
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; referring; formal
+
+expectedResult; フォン・スミス・ジェニファーåšå£«
+
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; ジェニー・フォン・スミスåšå£«
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; フォン・スミス・ジェニーåšå£«
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; フォン・スミス・ジェニファー
+
+parameters; sorting; short; referring; formal
+
+expectedResult; フォン・スミス・ジェニー
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; フォン・スミスåšå£«
+
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ジェニーåšå£«
+
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ジ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/jv.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/jv.txt
new file mode 100644
index 00000000000..ecd4f818098
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/jv.txt
@@ -0,0 +1,812 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: jv
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Zendaya
+name ; locale; jv_AQ
+
+expectedResult; Zendaya
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Z
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Irene
+name ; surname; Adler
+name ; locale; jv_AQ
+
+expectedResult; Adler, Irene
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Adler Irene
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Irene Adler
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Adler, I.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Adler I.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; I. Adler
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Irene A.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Adler
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Irene
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; AI
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; IA
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; I
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; Mary Sue
+name ; given2; Hamish
+name ; surname; Watson
+name ; locale; jv_AQ
+
+expectedResult; Watson, Mary Sue Hamish
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+
+expectedResult; Mary Sue Hamish Watson
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Watson Mary Sue Hamish
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Watson, Mary Sue H.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Mary Sue H. Watson
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Watson Mary Sue H.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Watson, M. S. H.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Watson, Mary Sue
+
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; M. S. H. Watson
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Mary Sue Watson
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Watson M. S. H.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Watson Mary Sue
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Watson M. S.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Mary Sue W.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Mary Sue
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Watson
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; MHW
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; WMH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; MW
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; WM
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; W
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; Bp.
+name ; given; Bertram Wilberforce
+name ; given-informal; Bertie
+name ; given2; Henry Robert
+name ; surname-core; Wooster
+name ; generation; Jr
+name ; credentials; MP
+name ; locale; jv_AQ
+
+expectedResult; Wooster, Bertram Wilberforce Henry Robert MP
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+
+expectedResult; Bertram Wilberforce Henry Robert Wooster MP
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Wooster Bertram Wilberforce Henry Robert MP
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Bertram Wilberforce H. R. Wooster MP
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Wooster Bertram Wilberforce H. R. MP
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Wooster, Bertram Wilberforce H. R.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Wooster, B. W. H. R.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; B. W. H. R. Wooster
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Wooster B. W. H. R.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Wooster, Bertie
+
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Bertie Wooster
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Wooster Bertie
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Wooster B. W.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Bp. Wooster
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Bertie W.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Bertie
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; BHW
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; WBH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; BW
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; WB
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; B
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; W
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; Sinbad
+name ; locale; ko_AQ
+
+expectedResult; Sinbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Kathi
+name ; surname; Muller
+name ; locale; ko_AQ
+
+expectedResult; Muller, Kathi
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Kathi Muller
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Muller Kathi
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Muller, K.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; K. Muller
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Muller K.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Kathi M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Muller
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Kathi
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Sasilia
+name ; given2; Hamis
+name ; surname; Stober
+name ; locale; ko_AQ
+
+expectedResult; Stober, Sasilia Hamis
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+
+expectedResult; Sasilia Hamis Stober
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Stober Sasilia Hamis
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Stober, Sasilia H.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Sasilia H. Stober
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Stober Sasilia H.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Stober, Sasilia
+
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Sasilia Stober
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Stober Sasilia
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Stober, S. H.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; S. H. Stober
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Stober S. H.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Sasilia S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Stober S.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Sasilia
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Stober
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; SHS
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; SSH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; SS
+
+parameters; givenFirst; long; monogram; informal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; Prof. Dr.
+name ; given; Ada Cornelia
+name ; given-informal; Neele
+name ; given2; Eva Sophia
+name ; surname-prefix; van. den.
+name ; surname-core; Wolf
+name ; surname2; Becker Schmidt
+name ; generation; Jr
+name ; credentials; M.D. Ph.D.
+name ; locale; ko_AQ
+
+expectedResult; van. den. Wolf, Ada Cornelia Eva Sophia M.D. Ph.D.
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+
+expectedResult; Ada Cornelia Eva Sophia van. den. Wolf M.D. Ph.D.
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; van. den. Wolf Ada Cornelia Eva Sophia M.D. Ph.D.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Ada Cornelia E. S. van. den. Wolf M.D. Ph.D.
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; van. den. Wolf Ada Cornelia E. S. M.D. Ph.D.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Wolf, Ada Cornelia E. S. van. den.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; van. den. Wolf, A. C. E. S.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; A. C. E. S. van. den. Wolf
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; van. den. Wolf A. C. E. S.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Prof. Dr. van. den. Wolf
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; van. den. Wolf, Neele
+
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Neele van. den. Wolf
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; van. den. Wolf A. C.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; van. den. Wolf Neele
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Neele v. d. W.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Neele
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; AEV
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; VAE
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; NV
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VN
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; N
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ka.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ka.txt
new file mode 100644
index 00000000000..ced01ad4d5f
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ka.txt
@@ -0,0 +1,633 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: ka
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; ნინáƒ
+name ; locale; ka_AQ
+
+expectedResult; ნინáƒ
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ნ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; Ნ
+
+parameters; surnameFirst; long; monogram; formal
+
+endName
+
+# nativeGS
+name ; given; გიáƒáƒ áƒ’ი
+name ; surname; თáƒáƒ•áƒáƒ«áƒ”
+name ; locale; ka_AQ
+
+expectedResult; გიáƒáƒ áƒ’ი თáƒáƒ•áƒáƒ«áƒ”
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; თáƒáƒ•áƒáƒ«áƒ” გიáƒáƒ áƒ’ი
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; გიáƒáƒ áƒ’ი
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; გთ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; თგ
+
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; á²—á²’
+
+parameters; surnameFirst; long; monogram; formal
+
+endName
+
+# nativeGGS
+name ; given; თეკლáƒ
+name ; given2; მáƒáƒ áƒ˜áƒáƒ›
+name ; surname; ნáƒáƒ™áƒáƒ¨áƒ˜áƒ«áƒ”
+name ; locale; ka_AQ
+
+expectedResult; თეკლრმáƒáƒ áƒ˜áƒáƒ› ნáƒáƒ™áƒáƒ¨áƒ˜áƒ«áƒ”
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ნáƒáƒ™áƒáƒ¨áƒ˜áƒ«áƒ” თეკლრმáƒáƒ áƒ˜áƒáƒ›
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; თეკლრმ. ნáƒáƒ™áƒáƒ¨áƒ˜áƒ«áƒ”
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; თეკლრნáƒáƒ™áƒáƒ¨áƒ˜áƒ«áƒ”
+
+parameters; givenFirst; long; referring; informal
+
+expectedResult; თეკლáƒ
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; თმნ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; ნთმ
+
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; ᲜᲗᲛ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; თნ
+
+parameters; givenFirst; long; monogram; informal
+
+endName
+
+# nativeFull
+name ; given; მáƒáƒ áƒ˜áƒáƒ›
+name ; given-informal; მáƒáƒ áƒ˜
+name ; given2; მáƒáƒ áƒ—áƒ
+name ; surname-core; áƒáƒ‘áƒáƒ¨áƒ˜áƒ«áƒ”
+name ; generation; უმც.
+name ; locale; ka_AQ
+
+expectedResult; მáƒáƒ áƒ˜áƒáƒ› მ. áƒáƒ‘áƒáƒ¨áƒ˜áƒ«áƒ” უმც.
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; áƒáƒ‘áƒáƒ¨áƒ˜áƒ«áƒ” მáƒáƒ áƒ˜áƒáƒ› მáƒáƒ áƒ—áƒ
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; მáƒáƒ áƒ˜áƒáƒ› მáƒáƒ áƒ—რáƒáƒ‘áƒáƒ¨áƒ˜áƒ«áƒ”
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; მáƒáƒ áƒ˜ áƒáƒ‘áƒáƒ¨áƒ˜áƒ«áƒ”
+
+parameters; givenFirst; long; referring; informal
+
+expectedResult; მáƒáƒ áƒ˜áƒáƒ›
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; მáƒáƒ áƒ˜
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; áƒáƒ›áƒ›
+
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; á²á²›á²›
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; მმáƒ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; მáƒ
+
+parameters; givenFirst; long; monogram; informal
+
+endName
+
+# foreignG
+name ; given; სინდბáƒáƒ“
+name ; locale; ko_AQ
+
+expectedResult; სინდბáƒáƒ“
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ს
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; Ს
+
+parameters; surnameFirst; long; monogram; formal
+
+endName
+
+# foreignGS
+name ; given; მáƒáƒœáƒ˜áƒ™áƒ
+name ; surname; ბელუჩი
+name ; locale; ko_AQ
+
+expectedResult; ბელუჩი მáƒáƒœáƒ˜áƒ™áƒ
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; მáƒáƒœáƒ˜áƒ™áƒ ბელუჩი
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; მáƒáƒœáƒ˜áƒ™áƒ
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; ბმ
+
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; ᲑᲛ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; მბ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+endName
+
+# foreignGGS
+name ; given; ცეცილიáƒ
+name ; given2; ჰეიმიშ
+name ; surname; შტიáƒáƒ‘ერი
+name ; locale; ko_AQ
+
+expectedResult; შტიáƒáƒ‘ერი ცეცილირჰეიმიშ
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ცეცილირჰეიმიშ შტიáƒáƒ‘ერი
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ცეცილირჰ. შტიáƒáƒ‘ერი
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; ცეცილირშტიáƒáƒ‘ერი
+
+parameters; givenFirst; long; referring; informal
+
+expectedResult; ცეცილიáƒ
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; შცჰ
+
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; ᲨᲪᲰ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ცჰშ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; ცშ
+
+parameters; givenFirst; long; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; პრáƒáƒ¤. დáƒáƒ¥áƒ¢.
+name ; given; áƒáƒ“რკáƒáƒ áƒœáƒ”ლიáƒ
+name ; given-informal; ნილე
+name ; given2; სეზáƒáƒ  მáƒáƒ áƒ¢áƒ˜áƒœ
+name ; surname-prefix; ფáƒáƒœ
+name ; surname-core; ბრიული
+name ; surname2; გáƒáƒœáƒ¡áƒáƒšáƒ”ს დáƒáƒ›áƒ˜áƒœáƒ’áƒ
+name ; generation; უმც.
+name ; credentials; მეცნ. დáƒáƒ¥áƒ¢.
+name ; locale; ko_AQ
+
+expectedResult; ფáƒáƒœ ბრიული გáƒáƒœáƒ¡áƒáƒšáƒ”ს დáƒáƒ›áƒ˜áƒœáƒ’áƒ, პრáƒáƒ¤. დáƒáƒ¥áƒ¢. áƒáƒ“რკáƒáƒ áƒœáƒ”ლირსეზáƒáƒ  მáƒáƒ áƒ¢áƒ˜áƒœ მეცნ. დáƒáƒ¥áƒ¢.
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; პრáƒáƒ¤. დáƒáƒ¥áƒ¢. áƒáƒ“რკáƒáƒ áƒœáƒ”ლირსეზáƒáƒ  მáƒáƒ áƒ¢áƒ˜áƒœ ფáƒáƒœ ბრიული გáƒáƒœáƒ¡áƒáƒšáƒ”ს დáƒáƒ›áƒ˜áƒœáƒ’რმეცნ. დáƒáƒ¥áƒ¢.
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ფáƒáƒœ ბრიული გáƒáƒœáƒ¡áƒáƒšáƒ”ს დáƒáƒ›áƒ˜áƒœáƒ’რპრáƒáƒ¤. დáƒáƒ¥áƒ¢. áƒáƒ“რკáƒáƒ áƒœáƒ”ლირსეზáƒáƒ  მáƒáƒ áƒ¢áƒ˜áƒœ მეცნ. დáƒáƒ¥áƒ¢.
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; áƒáƒ“რკáƒáƒ áƒœáƒ”ლირს. მ. ფáƒáƒœ ბრიული უმც., მეცნ. დáƒáƒ¥áƒ¢.
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; პრáƒáƒ¤. დáƒáƒ¥áƒ¢. áƒáƒ“რკáƒáƒ áƒœáƒ”ლიáƒ
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; ნილე ფáƒáƒœ ბრიული
+
+parameters; givenFirst; long; referring; informal
+
+expectedResult; ნილე
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; áƒáƒ¡áƒ¤
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; ფáƒáƒ¡
+
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; Ფá²á²¡
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ნფ
+
+parameters; givenFirst; long; monogram; informal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/kk.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/kk.txt
new file mode 100644
index 00000000000..2a46fc875e5
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/kk.txt
@@ -0,0 +1,698 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: kk
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Ðұрлан
+name ; locale; kk_AQ
+
+expectedResult; Ðұрлан
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ð
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Ó˜Ñем
+name ; surname; Мұхамеджан
+name ; locale; kk_AQ
+
+expectedResult; Мұхамеджан, Ó˜Ñем
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ó˜Ñем Мұхамеджан
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Мұхамеджан Ó˜Ñем
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Ә. Мұхамеджан
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Мұхамеджан Ә.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Мұхамеджан
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Ó˜Ñем
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ӘМ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; МӘ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; Ó˜
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; М
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeGGS
+name ; given; Ðйдар
+name ; surname; ҚаÑым
+name ; locale; kk_AQ
+
+expectedResult; ҚаÑым, Ðйдар
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ðйдар ҚаÑым
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; ҚаÑым Ðйдар
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Ð. ҚаÑым
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ҚаÑым Ð.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Ðйдар
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ҚаÑым
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ÐÒš
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; ÒšÐ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; Ð
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; Òš
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; мырза
+name ; given; Заңғар
+name ; given-informal; Зәке
+name ; given2; Ермекұлы
+name ; surname-core; Тәуекел
+name ; locale; kk_AQ
+
+expectedResult; Тәуекел, Заңғар Ермекұлы
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Тәуекел, Заңғар
+
+parameters; sorting; medium; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; Заңғар Тәуекел
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Тәуекел Заңғар
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Тәуекел, Зәке
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Тәуекел Зәке
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; З. Тәуекел
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Тәуекел З.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Тәуекел
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Зәке
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ЗТ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; ТЗ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; З
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; Т
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; Синдбад
+name ; locale; ko_AQ
+
+expectedResult; Синдбад
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; С
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Кейт
+name ; surname; Мюллер
+name ; locale; ko_AQ
+
+expectedResult; Мюллер, Кейт
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Кейт Мюллер
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Мюллер Кейт
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; К. Мюллер
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Мюллер К.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Мюллер
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Кейт
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; КМ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; МК
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; К
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; М
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; СеÑилиÑ
+name ; given2; Ð¥Ñмиш
+name ; surname; Штобер
+name ; locale; ko_AQ
+
+expectedResult; Штобер, СеÑÐ¸Ð»Ð¸Ñ Ð¥Ñмиш
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Штобер, СеÑилиÑ
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; СеÑÐ¸Ð»Ð¸Ñ Ð¨Ñ‚Ð¾Ð±ÐµÑ€
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Штобер СеÑилиÑ
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; С. Штобер
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Штобер С.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; СеÑилиÑ
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Штобер
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; СШ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; ШС
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; С
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; Ш
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignFull
+name ; title; проф.
+name ; given; Ðда КорнелиÑ
+name ; given-informal; Ðелли
+name ; given2; Сезар Мартин
+name ; surname-prefix; фон
+name ; surname-core; Брюль
+name ; surname2; ГонÑалеÑ
+name ; generation; Джуниор
+name ; credentials; Ñ‚Ñ–Ñ Ð´Ó™Ñ€Ñ–Ð³ÐµÑ€Ñ–
+name ; locale; ko_AQ
+
+expectedResult; Ðда ÐšÐ¾Ñ€Ð½ÐµÐ»Ð¸Ñ Ñ„Ð¾Ð½ Брюль Джуниор, Ñ‚Ñ–Ñ Ð´Ó™Ñ€Ñ–Ð³ÐµÑ€Ñ–
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Брюль, Ðда ÐšÐ¾Ñ€Ð½ÐµÐ»Ð¸Ñ Ð¡ÐµÐ·Ð°Ñ€ Мартин фон
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Брюль, Ðда ÐšÐ¾Ñ€Ð½ÐµÐ»Ð¸Ñ Ñ„Ð¾Ð½
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; фон Брюль, Ðда КорнелиÑ
+
+parameters; sorting; short; referring; formal
+
+expectedResult; фон Брюль Ðда КорнелиÑ
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; фон Брюль, Ðелли
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ð. К. фон Брюль
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; фон Брюль Ð. К.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; фон Брюль Ðелли
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; фон Брюль
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Ðелли
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ÐФ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; ФÐ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ФÐ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; Ð
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; Ф
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/km.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/km.txt
new file mode 100644
index 00000000000..e2f529fbd71
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/km.txt
@@ -0,0 +1,811 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: km
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; សុážáž¶
+name ; locale; km_AQ
+
+expectedResult; សុážáž¶
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; សុ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; សុជាážáž·
+name ; surname; សុង
+name ; locale; km_AQ
+
+expectedResult; សុង, សុ. ជា.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; សុ. ជា. សុង
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; សុង សុ. ជា.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; សុង, សុជាážáž·
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; សុង សុជាážáž·
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; សុជាážáž· សុ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; សុជាážáž· សុង
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; សុជាážáž·
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; សុសុ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; សុង
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; សុ
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; រិទ្ធី
+name ; given2; មករា
+name ; surname; វ៉áŸáž„
+name ; locale; km_AQ
+
+expectedResult; វ៉áŸáž„, រិទ្ធី មករា
+
+parameters; sorting; long; referring; formal
+
+expectedResult; រិទ្ធី មករា វ៉áŸáž„
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; វ៉áŸáž„ រិទ្ធី មករា
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; វ៉áŸáž„, រិទ្ធី ម.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; រិទ្ធី ម. វ៉áŸáž„
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; រិទ្ធី វ៉áŸ. áž„.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; វ៉áŸáž„ រិទ្ធី ម.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; វ៉áŸáž„, ážšáž·. ម.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; វ៉áŸáž„, រិទ្ធី
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; ážšáž·. ម. វ៉áŸáž„
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; រិទ្ធី វ៉áŸáž„
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; វ៉áŸáž„ ážšáž·. ម.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; វ៉áŸáž„ រិទ្ធី
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; វ៉áŸáž„ ážšáž·.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; រិទ្ធី
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; រិមវ៉áŸ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; វ៉áŸážšáž·áž˜
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; រិវ៉áŸ
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; វ៉áŸážšáž·
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; វ៉áŸáž„
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; វ៉áŸ
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; ážšáž·
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeFull
+name ; title; លោក
+name ; given; សុវណ្ណážáŸáž
+name ; given-informal; ážáŸáž
+name ; given2; សុធារ៉ា
+name ; surname-core; ážœáŸáž áž¶
+name ; credentials; សមាជិកសភា
+name ; locale; km_AQ
+
+expectedResult; លោក សុវណ្ណážáŸáž សុធារ៉ា ážœáŸáž áž¶ សមាជិកសភា
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; ážœáŸáž áž¶ លោក សុវណ្ណážáŸáž សុធារ៉ា សមាជិកសភា
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; ážœáŸáž áž¶ សុវណ្ណážáŸáž សុ. រ៉ា. សមាជិកសភា
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; សុវណ្ណážáŸáž សុ. រ៉ា. ážœáŸáž áž¶ សមាជិកសភា
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; ážœáŸáž áž¶, សុ. ážáŸ. áž. សុ. រ៉ា.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; ážœáŸáž áž¶ សុ. ážáŸ. áž. សុ. រ៉ា.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; ážœáŸáž áž¶, សុវណ្ណážáŸáž សុ. រ៉ា.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; សុ. ážáŸ. áž. សុ. រ៉ា. ážœáŸáž áž¶
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ážœáŸáž áž¶, សុវណ្ណážáŸáž សុធារ៉ា
+
+parameters; sorting; long; referring; formal
+
+expectedResult; ážœáŸáž áž¶ សុ. ážáŸ. áž.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ážœáŸáž áž¶, ážáŸáž
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; ážáŸáž ážœáŸáž áž¶
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; លោក ážœáŸáž áž¶
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ážœáŸáž áž¶ ážáŸáž
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; ážáŸáž ážœáŸ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ážœáŸážŸáž»ážŸáž»
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; សុសុវáŸ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; ážáŸážœáŸ
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; ážœáŸážáŸ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ážáŸáž
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ážáŸ
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; ážœáŸ
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; ស៊ីនប៊ែáž
+name ; locale; fr_AQ
+
+expectedResult; ស៊ីនប៊ែáž
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ស៊ី
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; កាážáŸ
+name ; surname; មូលឡើ
+name ; locale; fr_AQ
+
+expectedResult; មូលឡើ, កា. ážáŸ.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; កា. ážáŸ. មូលឡើ
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; មូលឡើ កា. ážáŸ.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; កាážáŸ មូ. áž¡áž¾.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; មូលឡើ, កាážáŸ
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; កាážáŸ មូលឡើ
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; មូលឡើ កាážáŸ
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; មូលឡើ
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; កាážáŸ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; កាមូ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; មូកា
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; កា
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; មូ
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; ហ្សាហ្សីលៀ
+name ; given2; áž áŸáž˜áž¸ážŸ
+name ; surname; ស្ážáž¼áž”áž¾
+name ; locale; fr_AQ
+
+expectedResult; ស្ážáž¼áž”áž¾, ហ្សាហ្សីលៀ áž áŸ. មី.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; ស្ážáž¼áž”áž¾ ហ្សាហ្សីលៀ áž áŸ. មី.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; ហ្សាហ្សីលៀ áž áŸ. មី. ស្ážáž¼áž”áž¾
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; ស្ážáž¼áž”áž¾, ហ្សាហ្សីលៀ áž áŸáž˜áž¸ážŸ
+
+parameters; sorting; long; referring; formal
+
+expectedResult; ស្ážáž¼áž”áž¾ ហ្សាហ្សីលៀ áž áŸáž˜áž¸ážŸ
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; ហ្សាហ្សីលៀ áž áŸáž˜áž¸ážŸ ស្ážáž¼áž”áž¾
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; ស្ážáž¼áž”áž¾, ហ្. áž áŸ. មី.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; ស្ážáž¼áž”áž¾ ហ្. áž áŸ. មី.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; ស្ážáž¼áž”áž¾, ហ្សាហ្សីលៀ
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; ហ្. áž áŸ. មី. ស្ážáž¼áž”áž¾
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ស្ážáž¼áž”áž¾ ហ្សាហ្សីលៀ
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; ហ្សាហ្សីលៀ ស្ážáž¼áž”áž¾
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; ហ្សាហ្សីលៀ ស្.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ស្ážáž¼áž”áž¾ ហ្.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ហ្សាហ្សីលៀ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ស្ážáž¼áž”áž¾
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ស្ហ្ហáŸ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ហ្ហáŸážŸáŸ’
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; ស្ហ្
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ហ្ស្
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; ស្
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; ហ្
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; សាស្ážáŸ’រាចារ្យបណ្ឌិáž
+name ; given; អាដា ážážšáž“ែលៀ
+name ; given-informal; នីឡáŸ
+name ; given2; ឆáŸážŸáž¶ážš ម៉ាធីន
+name ; surname-prefix; វន់
+name ; surname-core; ប្រ៊ូល
+name ; surname2; ហ្កនហ្សាឡáŸážŸ ដូមីងហ្គោ
+name ; generation; ជូនៀ
+name ; credentials; ទន្ដបណ្ឌិáž
+name ; locale; fr_AQ
+
+expectedResult; វន់ ប្រ៊ូល សាស្ážáŸ’រាចារ្យបណ្ឌិហអាដា ážážšáž“ែលៀ ឆáŸážŸáž¶ážš ម៉ាធីន ជូនៀ, ទន្ដបណ្ឌិáž
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; សាស្ážáŸ’រាចារ្យបណ្ឌិហអាដា ážážšáž“ែលៀ ឆáŸážŸáž¶ážš ម៉ាធីន វន់ ប្រ៊ូល ជូនៀ, ទន្ដបណ្ឌិáž
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; វន់ ប្រ៊ូល អាដា ážážšáž“ែលៀ ឆáŸ. សា. ម៉ា. ធី. ជូនៀ, ទន្ដបណ្ឌិáž
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; អាដា ážážšáž“ែលៀ ឆáŸ. សា. ម៉ា. ធី. វន់ ប្រ៊ូល ជូនៀ, ទន្ដបណ្ឌិáž
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; ប្រ៊ូល, អា. ដា. áž. ážš. ឆáŸ. សា. ម៉ា. ធី. វន់
+
+parameters; sorting; short; referring; formal
+
+expectedResult; វន់ ប្រ៊ូល អា. ដា. áž. ážš. ឆáŸ. សា. ម៉ា. ធី.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; អា. ដា. áž. ážš. ឆáŸ. សា. ម៉ា. ធី. វន់ ប្រ៊ូល
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ប្រ៊ូល, អាដា ážážšáž“ែលៀ ឆáŸ. សា. ម៉ា. ធី. វន់
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; ប្រ៊ូល, អាដា ážážšáž“ែលៀ ឆáŸážŸáž¶ážš ម៉ាធីន វន់
+
+parameters; sorting; long; referring; formal
+
+expectedResult; សាស្ážáŸ’រាចារ្យបណ្ឌិហវន់ ប្រ៊ូល
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; វន់ ប្រ៊ូល អា. ដា. áž. ážš.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; វន់ ប្រ៊ូល, នីឡáŸ
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; នីឡ០វន់ ប្រ៊ូល
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; វន់ ប្រ៊ូល នីឡáŸ
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; នីឡ០វ. ប្.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ប្អាឆáŸ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; អាឆáŸáž”្
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; នីឡáŸ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; នីវ
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; វនី
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; នី
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; វ
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/kn.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/kn.txt
new file mode 100644
index 00000000000..295c955b8f2
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/kn.txt
@@ -0,0 +1,818 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: kn
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; à²à³†à²‚ಡಾಯಾ
+name ; locale; kn_AQ
+
+expectedResult; à²à³†à²‚ಡಾಯಾ
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; à²à³†à²‚
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; ರಶà³à²®à²¿à²•à²¾
+name ; surname; ಶೆಟà³à²Ÿà²¿
+name ; locale; kn_AQ
+
+expectedResult; ಶೆಟà³à²Ÿà²¿, ರಶà³à²®à²¿à²•à²¾
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; ರಶà³à²®à²¿à²•à²¾ ಶೆಟà³à²Ÿà²¿
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; ಶೆಟà³à²Ÿà²¿ ರಶà³à²®à²¿à²•à²¾
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; ರಶà³à²®à²¿à²•à²¾ ಶೆ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ಶೆಟà³à²Ÿà²¿, ರ.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; ರ. ಶೆಟà³à²Ÿà²¿
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ಶೆಟà³à²Ÿà²¿ ರ.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ರಶà³à²®à²¿à²•à²¾
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ಶೆಟà³à²Ÿà²¿
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ರಶೆ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; ಶೆರ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ಶೆ
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; ರ
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; ವಿಜಯ ಲಕà³à²·à³à²®à²¿
+name ; given2; ಹರೀಶà³
+name ; surname; ಯಶà³
+name ; locale; kn_AQ
+
+expectedResult; ಯಶà³, ವಿಜಯ ಲಕà³à²·à³à²®à²¿ ಹರೀಶà³
+
+parameters; sorting; long; referring; formal
+
+expectedResult; ಯಶೠವಿಜಯ ಲಕà³à²·à³à²®à²¿ ಹರೀಶà³
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; ವಿಜಯ ಲಕà³à²·à³à²®à²¿ ಹರೀಶೠಯಶà³
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; ಯಶà³, ವಿಜಯ ಲಕà³à²·à³à²®à²¿ ಹ.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; ಯಶೠವಿಜಯ ಲಕà³à²·à³à²®à²¿ ಹ.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; ವಿಜಯ ಲಕà³à²·à³à²®à²¿ ಹ. ಯಶà³
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; ಯಶà³, ವಿಜಯ ಲಕà³à²·à³à²®à²¿
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; ಯಶೠವಿಜಯ ಲಕà³à²·à³à²®à²¿
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; ವಿಜಯ ಲಕà³à²·à³à²®à²¿ ಯಶà³
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; ವಿಜಯ ಲಕà³à²·à³à²®à²¿ ಯ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ಯಶà³, ವಿ. ಲ. ಹ.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; ಯಶೠವಿ. ಲ. ಹ.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; ವಿ. ಲ. ಹ. ಯಶà³
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ವಿಜಯ ಲಕà³à²·à³à²®à²¿
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ಯಶೠವಿ. ಲ.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ಯವಿಹ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ವಿಹಯ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; ಯವಿ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ಯಶà³
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ವಿಯ
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; ವಿ
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; ಯ
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; ಶà³à²°à³€.
+name ; given; ನಾರಯಣ ಕà³à²®à²¾à²°à³
+name ; given-informal; ನಾಣಿ
+name ; given2; ಶಿವ ರಾಮ
+name ; surname-core; ಪಾಟೀಲà³
+name ; generation; ಕಿರಿ
+name ; credentials; ಎಮà³â€Œà²ªà²¿
+name ; locale; kn_AQ
+
+expectedResult; ಪಾಟೀಲೠಶà³à²°à³€. ನಾರಯಣ ಕà³à²®à²¾à²°à³ ಶಿವ ರಾಮ ಕಿರಿ, ಎಮà³â€Œà²ªà²¿
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; ಶà³à²°à³€. ನಾರಯಣ ಕà³à²®à²¾à²°à³ ಶಿವ ರಾಮ ಪಾಟೀಲೠಕಿರಿ, ಎಮà³â€Œà²ªà²¿
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; ನಾರಯಣ ಕà³à²®à²¾à²°à³ ಶಿ. ರಾ. ಪಾಟೀಲೠಕಿರಿ, ಎಮà³â€Œà²ªà²¿
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; ಪಾಟೀಲೠನಾರಯಣ ಕà³à²®à²¾à²°à³ ಶಿ. ರಾ. ಕಿರಿ, ಎಮà³â€Œà²ªà²¿
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; ಪಾಟೀಲà³, ನಾರಯಣ ಕà³à²®à²¾à²°à³ ಶಿ. ರಾ.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; ಪಾಟೀಲà³, ನಾರಯಣ ಕà³à²®à²¾à²°à³ ಶಿವ ರಾಮ
+
+parameters; sorting; long; referring; formal
+
+expectedResult; ಪಾಟೀಲà³, ನಾ. ಕà³. ಶಿ. ರಾ.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; ನಾ. ಕà³. ಶಿ. ರಾ. ಪಾಟೀಲà³
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ಪಾಟೀಲೠನಾ. ಕà³. ಶಿ. ರಾ.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; ಪಾಟೀಲೠನಾ. ಕà³.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ಪಾಟೀಲà³, ನಾಣಿ
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; ಶà³à²°à³€. ಪಾಟೀಲà³
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ನಾಣಿ ಪಾಟೀಲà³
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; ಪಾಟೀಲೠನಾಣಿ
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; ನಾಣಿ ಪಾ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ನಾಶಿಪಾ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; ಪಾನಾಶಿ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ನಾಣಿ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ನಾಪಾ
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; ಪಾನಾ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ನಾ
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; ಪಾ
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; ಸಿನà³â€à²¬à²¾à²¦à³
+name ; locale; ko_AQ
+
+expectedResult; ಸಿನà³â€à²¬à²¾à²¦à³
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ಸಿ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; ಕà³à²¯à²¾à²¥à²¿
+name ; surname; ಮಲà³à²²à²°à³
+name ; locale; ko_AQ
+
+expectedResult; ಮಲà³à²²à²°à³, ಕà³à²¯à²¾à²¥à²¿
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; ಕà³à²¯à²¾à²¥à²¿ ಮಲà³à²²à²°à³
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; ಮಲà³à²²à²°à³ ಕà³à²¯à²¾à²¥à²¿
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; ಮಲà³à²²à²°à³, ಕà³.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; ಕà³. ಮಲà³à²²à²°à³
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ಮಲà³à²²à²°à³ ಕà³.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ಕà³à²¯à²¾à²¥à²¿ ಮ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ಕà³à²¯à²¾à²¥à²¿
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ಮಲà³à²²à²°à³
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ಕà³à²®
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; ಮಕà³
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ಕà³
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; ಮ
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; à²à²à²¿à²²à²¿à²¯à²¾
+name ; given2; ಹಮಿಶà³
+name ; surname; ಸà³à²Ÿà³‹à²¬à²°à³
+name ; locale; ko_AQ
+
+expectedResult; ಸà³à²Ÿà³‹à²¬à²°à³, à²à²à²¿à²²à²¿à²¯à²¾ ಹಮಿಶà³
+
+parameters; sorting; long; referring; formal
+
+expectedResult; à²à²à²¿à²²à²¿à²¯à²¾ ಹಮಿಶೠಸà³à²Ÿà³‹à²¬à²°à³
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; ಸà³à²Ÿà³‹à²¬à²°à³ à²à²à²¿à²²à²¿à²¯à²¾ ಹಮಿಶà³
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; ಸà³à²Ÿà³‹à²¬à²°à³, à²à²à²¿à²²à²¿à²¯à²¾ ಹ.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; à²à²à²¿à²²à²¿à²¯à²¾ ಹ. ಸà³à²Ÿà³‹à²¬à²°à³
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; ಸà³à²Ÿà³‹à²¬à²°à³ à²à²à²¿à²²à²¿à²¯à²¾ ಹ.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; ಸà³à²Ÿà³‹à²¬à²°à³, à²à²à²¿à²²à²¿à²¯à²¾
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; à²à²à²¿à²²à²¿à²¯à²¾ ಸà³à²Ÿà³‹à²¬à²°à³
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; ಸà³à²Ÿà³‹à²¬à²°à³ à²à²à²¿à²²à²¿à²¯à²¾
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; ಸà³à²Ÿà³‹à²¬à²°à³, à². ಹ.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; à². ಹ. ಸà³à²Ÿà³‹à²¬à²°à³
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ಸà³à²Ÿà³‹à²¬à²°à³ à². ಹ.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; à²à²à²¿à²²à²¿à²¯à²¾ ಸà³.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ಸà³à²Ÿà³‹à²¬à²°à³ à².
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; à²à²à²¿à²²à²¿à²¯à²¾
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ಸà³à²Ÿà³‹à²¬à²°à³
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; à²à²¹à²¸à³
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; ಸà³à²à²¹
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; à²à²¸à³
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; ಸà³à²
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ಸà³
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; à²
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; ಪà³à²°à³Š. ಡಾ.
+name ; given; ಅಡಾ ಕಾರà³à²¨à³†à²²à²¿à²¯à²¾
+name ; given-informal; ನೀಲà³
+name ; given2; ಸಿಸಾರೠಮಾರà³à²Ÿà²¿à²¨à³
+name ; surname-prefix; ವಾನà³
+name ; surname-core; ಬà³à²°à²¾à²²à³
+name ; surname2; ಗೊನà³à²¸à²¾à²²à³€à²¸à³ ಡೊಮಿಂಗೊ
+name ; generation; ಜೂನಿಯರà³
+name ; credentials; ಎಂ.ಡಿ ಡಿ.ಡಿ.ಎಸà³
+name ; locale; ko_AQ
+
+expectedResult; ಪà³à²°à³Š. ಡಾ. ಅಡಾ ಕಾರà³à²¨à³†à²²à²¿à²¯à²¾ ಸಿಸಾರೠಮಾರà³à²Ÿà²¿à²¨à³ ವಾನೠಬà³à²°à²¾à²²à³ ಜೂನಿಯರà³, ಎಂ.ಡಿ ಡಿ.ಡಿ.ಎಸà³
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; ವಾನೠಬà³à²°à²¾à²²à³ ಪà³à²°à³Š. ಡಾ. ಅಡಾ ಕಾರà³à²¨à³†à²²à²¿à²¯à²¾ ಸಿಸಾರೠಮಾರà³à²Ÿà²¿à²¨à³ ಜೂನಿಯರà³, ಎಂ.ಡಿ ಡಿ.ಡಿ.ಎಸà³
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; ಅಡಾ ಕಾರà³à²¨à³†à²²à²¿à²¯à²¾ ಸಿ. ಮಾ. ವಾನೠಬà³à²°à²¾à²²à³ ಜೂನಿಯರà³, ಎಂ.ಡಿ ಡಿ.ಡಿ.ಎಸà³
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; ವಾನೠಬà³à²°à²¾à²²à³ ಅಡಾ ಕಾರà³à²¨à³†à²²à²¿à²¯à²¾ ಸಿ. ಮಾ. ಜೂನಿಯರà³, ಎಂ.ಡಿ ಡಿ.ಡಿ.ಎಸà³
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; ಬà³à²°à²¾à²²à³, ಅಡಾ ಕಾರà³à²¨à³†à²²à²¿à²¯à²¾ ಸಿಸಾರೠಮಾರà³à²Ÿà²¿à²¨à³ ವಾನà³
+
+parameters; sorting; long; referring; formal
+
+expectedResult; ಬà³à²°à²¾à²²à³, ಅಡಾ ಕಾರà³à²¨à³†à²²à²¿à²¯à²¾ ಸಿ. ಮಾ. ವಾನà³
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; ಬà³à²°à²¾à²²à³, ಅ. ಕಾ. ಸಿ. ಮಾ. ವಾನà³
+
+parameters; sorting; short; referring; formal
+
+expectedResult; ಅ. ಕಾ. ಸಿ. ಮಾ. ವಾನೠಬà³à²°à²¾à²²à³
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ವಾನೠಬà³à²°à²¾à²²à³ ಅ. ಕಾ. ಸಿ. ಮಾ.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; ಪà³à²°à³Š. ಡಾ. ವಾನೠಬà³à²°à²¾à²²à³
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ವಾನೠಬà³à²°à²¾à²²à³ ಅ. ಕಾ.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ವಾನೠಬà³à²°à²¾à²²à³, ನೀಲà³
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; ನೀಲೠವಾನೠಬà³à²°à²¾à²²à³
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; ವಾನೠಬà³à²°à²¾à²²à³ ನೀಲà³
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; ನೀಲೠವಾ. ಬà³.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ಅಸಿವಾ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; ವಾಅಸಿ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ನೀಲà³
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ನೀವಾ
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; ವಾನೀ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ನೀ
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; ವಾ
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ko.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ko.txt
new file mode 100644
index 00000000000..a04f3bc9173
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ko.txt
@@ -0,0 +1,611 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: ko
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; 유미
+name ; locale; ko_AQ
+
+expectedResult; 유미
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; 유
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; 유미
+name ; surname; ê°•
+name ; locale; ko_AQ
+
+expectedResult; 강유미
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; 유미강
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; 유미
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ê°•
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; 유
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; 소현
+name ; surname; ë°•
+name ; locale; ko_AQ
+
+expectedResult; 박소현
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; 소현박
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; 소현
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ë°•
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; 소
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+endName
+
+# nativeFull
+name ; title; 님
+name ; given; 민규
+name ; given-informal; 민규
+name ; given2; 헨리
+name ; surname-core; ê¹€
+name ; locale; ko_AQ
+
+expectedResult; 김민규헨리
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; 민규헨리김
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; 김민규
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; 민규김
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; 김님
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; 민규
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ê¹€
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; 민
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; 신밧드
+name ; locale; fr_AQ
+
+expectedResult; 신밧드
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ì‹ 
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; 케테
+name ; surname; ë®ëŸ¬
+name ; locale; fr_AQ
+
+expectedResult; ë®ëŸ¬ 케테
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; 케테 ë®ëŸ¬
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ë®ëŸ¬
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; 케테
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ë®
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; ì¼€
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+endName
+
+# foreignGGS
+name ; given; 제질리아
+name ; given2; 해미쉬
+name ; surname; 슈퇴버
+name ; locale; fr_AQ
+
+expectedResult; 슈퇴버 제질리아 해미쉬
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; 제질리아 해미쉬 슈퇴버
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; 슈퇴버 제질리아
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; 제질리아 슈퇴버
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; 제질리아
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; 슈퇴버
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; 슈
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; 제
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; êµìˆ˜
+name ; given; ì—ì´ë‹¤ 코넬리아
+name ; given-informal; ë‹
+name ; given2; 세사르 마르틴
+name ; surname-prefix; í°
+name ; surname-core; 볼프
+name ; surname2; 베커 슈미트
+name ; generation; 주니어
+name ; credentials; 박사
+name ; locale; fr_AQ
+
+expectedResult; ì—ì´ë‹¤ 코넬리아 세사르 마르틴 í° ë³¼í”„ 박사
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; í° ë³¼í”„ ì—ì´ë‹¤ 코넬리아 세사르 마르틴 박사
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; 볼프 ì—ì´ë‹¤ 코넬리아 세사르 마르틴 í°
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; í° ë³¼í”„ ì—ì´ë‹¤ 코넬리아 세사르 마르틴
+
+parameters; sorting; long; referring; formal
+
+expectedResult; ì—ì´ë‹¤ 코넬리아 í° ë³¼í”„ 박사
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; í° ë³¼í”„ ì—ì´ë‹¤ 코넬리아 박사
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; ì—ì´ë‹¤ 코넬리아 í° ë³¼í”„
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; í° ë³¼í”„ ì—ì´ë‹¤ 코넬리아
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; í° ë³¼í”„ êµìˆ˜
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ë‹ í° ë³¼í”„
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; í° ë³¼í”„ ë‹
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; ë‹
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ì—
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; í°
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/kok.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/kok.txt
new file mode 100644
index 00000000000..aef93c2ef85
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/kok.txt
@@ -0,0 +1,555 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: kok
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; दिशा
+name ; locale; kok_AQ
+
+expectedResult; दिशा
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; दि
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; उमेश
+name ; surname; भंडारकर
+name ; locale; kok_AQ
+
+expectedResult; उमेश भंडारकर
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; भंडारकर उमेश
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; उभं
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; भंउ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; अतà¥à¤²
+name ; given2; मनोहर
+name ; surname; पà¥à¤°à¤­à¥à¤•à¥‹à¤‚कार
+name ; locale; kok_AQ
+
+expectedResult; अतà¥à¤² मनोहर पà¥à¤°à¤­à¥à¤•à¥‹à¤‚कार
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; पà¥à¤°à¤­à¥à¤•à¥‹à¤‚कार अतà¥à¤² मनोहर
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; अमपà¥à¤°
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; पà¥à¤°à¤…म
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeFull
+name ; title; शà¥à¤°à¥€.
+name ; given; उमेश भंडारकर
+name ; given-informal; साकà¥à¤·à¥€
+name ; given2; अनà¥à¤¸à¥à¤¯à¤¾ कà¥à¤‚कळà¥à¤¯à¥‡à¤•à¤¾à¤°
+name ; surname-core; पà¥à¤°à¤­à¥
+name ; surname2; मावजो
+name ; generation; क.
+name ; credentials; à¤à¤®à¤ªà¥€
+name ; locale; kok_AQ
+
+expectedResult; पà¥à¤°à¤­à¥ मावजो, शà¥à¤°à¥€. उमेश भंडारकर अनà¥à¤¸à¥à¤¯à¤¾ कà¥à¤‚कळà¥à¤¯à¥‡à¤•à¤¾à¤° à¤à¤®à¤ªà¥€
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; पà¥à¤°à¤­à¥ मावजो शà¥à¤°à¥€. उमेश भंडारकर अनà¥à¤¸à¥à¤¯à¤¾ कà¥à¤‚कळà¥à¤¯à¥‡à¤•à¤¾à¤° à¤à¤®à¤ªà¥€
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; शà¥à¤°à¥€. उमेश भंडारकर अनà¥à¤¸à¥à¤¯à¤¾ कà¥à¤‚कळà¥à¤¯à¥‡à¤•à¤¾à¤° पà¥à¤°à¤­à¥ मावजो à¤à¤®à¤ªà¥€
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; उअपà¥à¤°
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; पà¥à¤°à¤‰à¤…
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; सिंदबाद
+name ; locale; ko_AQ
+
+expectedResult; सिंदबाद
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; सिं
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; आरवी
+name ; surname; कामत
+name ; locale; ko_AQ
+
+expectedResult; आरवी कामत
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; कामत आरवी
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; आका
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; काआ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGGS
+name ; given; मनोहर
+name ; given2; माधव
+name ; surname; नायक
+name ; locale; ko_AQ
+
+expectedResult; नायक मनोहर माधव
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; मनोहर माधव नायक
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; नाममा
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; ममाना
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; पà¥à¤°à¥‹. डॉ.
+name ; given; विकà¥à¤°à¤® सिंह
+name ; given-informal; विकी
+name ; given2; रामचरण दास
+name ; surname-prefix; शेणवी कà¥à¤‚कळà¥à¤¯à¥‡à¤•à¤¾à¤°
+name ; surname-core; शरà¥à¤®à¤¾
+name ; surname2; सरदेसाय
+name ; generation; जेआर
+name ; credentials; बी.à¤. à¤à¤².à¤à¤².बी
+name ; locale; ko_AQ
+
+expectedResult; शेणवी कà¥à¤‚कळà¥à¤¯à¥‡à¤•à¤¾à¤° शरà¥à¤®à¤¾ सरदेसाय, पà¥à¤°à¥‹. डॉ. विकà¥à¤°à¤® सिंह रामचरण दास बी.à¤. à¤à¤².à¤à¤².बी
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; पà¥à¤°à¥‹. डॉ. विकà¥à¤°à¤® सिंह रामचरण दास शेणवी कà¥à¤‚कळà¥à¤¯à¥‡à¤•à¤¾à¤° शरà¥à¤®à¤¾ सरदेसाय बी.à¤. à¤à¤².à¤à¤².बी
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; शेणवी कà¥à¤‚कळà¥à¤¯à¥‡à¤•à¤¾à¤° शरà¥à¤®à¤¾ सरदेसाय पà¥à¤°à¥‹. डॉ. विकà¥à¤°à¤® सिंह रामचरण दास बी.à¤. à¤à¤².à¤à¤².बी
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; विराशे
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; शेविरा
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ky.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ky.txt
new file mode 100644
index 00000000000..bdc49df6eef
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ky.txt
@@ -0,0 +1,664 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: ky
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Сыймык
+name ; locale; ky_AQ
+
+expectedResult; Сыймык
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; С
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Каныкей
+name ; surname; Ðлымбекова
+name ; locale; ky_AQ
+
+expectedResult; Ðлымбекова, Каныкей
+
+parameters; sorting; short; referring; informal
+
+expectedResult; Ðлымбекова Каныкей
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+
+expectedResult; Каныкей Ðлымбекова
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; Ðлымбекова К.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Ðлымбекова
+
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Каныкей
+
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ÐК
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; КÐ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; КаÑым
+name ; given2; Жоомарт
+name ; surname; Токаев
+name ; locale; ky_AQ
+
+expectedResult; КаÑым Жоомарт Токаев
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; Токаев КаÑым Жоомарт
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+
+expectedResult; Токаев КаÑым Ж.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Токаев, КаÑым
+
+parameters; sorting; short; referring; informal
+
+expectedResult; Токаев К. Ж.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Токаев КаÑым
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Токаев К.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Токаев
+
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; КаÑым
+
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; КЖТ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; ТКЖ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeFull
+name ; title; Мырза
+name ; given; Чыңгыз Ðйтматов
+name ; given-informal; Чыке
+name ; given2; ИÑхак Раззаков
+name ; surname-prefix; уулу
+name ; surname-core; Төрөкул
+name ; surname2; Махмудов
+name ; generation; Кенже
+name ; credentials; Парламент мүчөÑÒ¯
+name ; locale; ky_AQ
+
+expectedResult; уулу Төрөкул Махмудов, Мырза Чыңгыз Ðйтматов ИÑхак Раззаков Парламент мүчөÑÒ¯
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+
+expectedResult; Мырза Чыңгыз Ðйтматов ИÑхак Раззаков уулу Төрөкул Махмудов Парламент мүчөÑÒ¯
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; уулу Төрөкул Чыңгыз Ðйтматов ИÑхак Раззаков Парламент мүчөÑÒ¯
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; addressing; formal
+
+expectedResult; уулу Төрөкул Чыңгыз Ðйтматов И. Р. Парламент мүчөÑÒ¯
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; уулу Төрөкул Ч. Ð. И. Р.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Мырза уулу Төрөкул
+
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; уулу Төрөкул Ч. Ð.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; уулу Төрөкул, Чыке
+
+parameters; sorting; short; referring; informal
+
+expectedResult; уулу Төрөкул Чыке
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Чыке
+
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; УЧИ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; ЧИУ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; Синбад
+name ; locale; ja_AQ
+
+expectedResult; Синбад
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; С
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; КÑйт
+name ; surname; Мюллер
+name ; locale; ja_AQ
+
+expectedResult; Мюллер, КÑйт
+
+parameters; sorting; short; referring; informal
+
+expectedResult; КÑйт Мюллер
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; Мюллер КÑйт
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+
+expectedResult; Мюллер К.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Мюллер
+
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; КÑйт
+
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; КМ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; МК
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGGS
+name ; given; ЗазилиÑ
+name ; given2; Хамиш
+name ; surname; Штобер
+name ; locale; ja_AQ
+
+expectedResult; Ð—Ð°Ð·Ð¸Ð»Ð¸Ñ Ð¥Ð°Ð¼Ð¸Ñˆ Штобер
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; Штобер Ð—Ð°Ð·Ð¸Ð»Ð¸Ñ Ð¥Ð°Ð¼Ð¸Ñˆ
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+
+expectedResult; Штобер Ð—Ð°Ð·Ð¸Ð»Ð¸Ñ Ð¥.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Штобер, ЗазилиÑ
+
+parameters; sorting; short; referring; informal
+
+expectedResult; Штобер ЗазилиÑ
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Штобер З. Х.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Штобер З.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ЗазилиÑ
+
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Штобер
+
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ЗХШ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; ШЗХ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; Проф. Доктор.
+name ; given; Ðлтынай Сулайманова
+name ; given-informal; Чыке
+name ; given2; ÐÑель Сартбаева
+name ; surname-prefix; ван ден
+name ; surname-core; Вольф
+name ; surname2; Бекер Шмидт
+name ; generation; Кенже
+name ; credentials; Илимдин кандидаты
+name ; locale; ja_AQ
+
+expectedResult; ван ден Вольф Бекер Шмидт, Проф. Доктор. Ðлтынай Сулайманова ÐÑель Сартбаева Илимдин кандидаты
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+
+expectedResult; Проф. Доктор. Ðлтынай Сулайманова ÐÑель Сартбаева ван ден Вольф Бекер Шмидт Илимдин кандидаты
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; ван ден Вольф Ðлтынай Сулайманова ÐÑель Сартбаева Илимдин кандидаты
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; addressing; formal
+
+expectedResult; ван ден Вольф Ðлтынай Сулайманова Ð. С. Илимдин кандидаты
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Проф. Доктор. ван ден Вольф
+
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ван ден Вольф Ð. С. Ð. С.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; ван ден Вольф Ð. С.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ван ден Вольф, Чыке
+
+parameters; sorting; short; referring; informal
+
+expectedResult; ван ден Вольф Чыке
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Чыке
+
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ÐÐÐ’
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; Ð’ÐÐ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/lo.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/lo.txt
new file mode 100644
index 00000000000..094259ed568
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/lo.txt
@@ -0,0 +1,716 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: lo
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; ຄຳຫຼ້າ
+name ; locale; lo_AQ
+
+expectedResult; ຄຳຫຼ້າ
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ຄຳ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; ນາລິນ
+name ; surname; ເອàºàº°àºžàº»àº™
+name ; locale; lo_AQ
+
+expectedResult; ເອàºàº°àºžàº»àº™, ນາລິນ
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ນາລິນ ເອàºàº°àºžàº»àº™
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ເອàºàº°àºžàº»àº™ ນາລິນ
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ເອàºàº°àºžàº»àº™
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ນາລິນ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ນເ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; ເນ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ນ
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; ເ
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeGGS
+name ; given; ມະນີ
+name ; given2; ມະນີຈັນ
+name ; surname; ວັດທະນາ
+name ; locale; lo_AQ
+
+expectedResult; ວັດທະນາ, ມະນີ ມະນີຈັນ
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; ມະນີ ມະນີຈັນ ວັດທະນາ
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ວັດທະນາ ມະນີ ມະນີຈັນ
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; ວັດທະນາ, ມະນີ
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; ມະນີ ວັດທະນາ
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ວັດທະນາ ມະນີ
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ວັດທະນາ
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ມມວັ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; ມະນີ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ວັມມ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ມວັ
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; ວັ
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; ມ
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeFull
+name ; title; ທ.
+name ; given; ເບີà»àº—ຣັມ ວິວເບີຟອດຊ
+name ; given-informal; ເບີຕີ
+name ; given2; ເຮັນຣີ ໂຣເບີດ
+name ; surname-core; ວູສເຕີ
+name ; generation; ຮຸ່ນລູàº
+name ; credentials; ສ.ສ.
+name ; locale; lo_AQ
+
+expectedResult; ສ.ສ. ທ. ເບີà»àº—ຣັມ ວິວເບີຟອດຊ ເຮັນຣີ ໂຣເບີດ ວູສເຕີ ຮຸ່ນລູàº
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; ສ.ສ. ວູສເຕີ ທ. ເບີà»àº—ຣັມ ວິວເບີຟອດຊ ເຮັນຣີ ໂຣເບີດ ຮຸ່ນລູàº
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; ສ.ສ. ວູສເຕີ ເບີà»àº—ຣັມ ວິວເບີຟອດຊ ເຮັນຣີ ໂຣເບີດ ຮຸ່ນລູàº
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; ສ.ສ. ເບີà»àº—ຣັມ ວິວເບີຟອດຊ ເຮັນຣີ ໂຣເບີດ ວູສເຕີ
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; ວູສເຕີ, ເບີà»àº—ຣັມ ວິວເບີຟອດຊ ເຮັນຣີ ໂຣເບີດ
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; ເບີà»àº—ຣັມ ວິວເບີຟອດຊ ເຮັນຣີ ໂຣເບີດ ວູສເຕີ
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ວູສເຕີ ເບີà»àº—ຣັມ ວິວເບີຟອດຊ ເຮັນຣີ ໂຣເບີດ
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; ວູສເຕີ ເບີà»àº—ຣັມ ວິວເບີຟອດຊ
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ວູສເຕີ, ເບີຕີ
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; ເບີຕີ ວູສເຕີ
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ວູສເຕີ ເບີຕີ
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; ທ. ວູສເຕີ
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ເບີຕີ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ວູເເ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ເເວູ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; ເວູ
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; ວູ
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; ເ
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; ຊິນà»àºšàº”
+name ; locale; ko_AQ
+
+expectedResult; ຊິນà»àºšàº”
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ຊິ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; ເຄທີ
+name ; surname; ມູລເລີ
+name ; locale; ko_AQ
+
+expectedResult; ມູລເລີ, ເຄທີ
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ເຄທີ ມູລເລີ
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ມູລເລີ ເຄທີ
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ມູລເລີ
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ເຄທີ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ມູເ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ເມູ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; ມູ
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; ເ
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGGS
+name ; given; ຊາຊິເລàº
+name ; given2; ຮາມີສ
+name ; surname; ສໂຕເບີ
+name ; locale; ko_AQ
+
+expectedResult; ສໂຕເບີ, ຊາຊິເລຠຮາມີສ
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; ສໂຕເບີ ຊາຊິເລຠຮາມີສ
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; ຊາຊິເລຠຮາມີສ ສໂຕເບີ
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ສໂຕເບີ, ຊາຊິເລàº
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; ສໂຕເບີ ຊາຊິເລàº
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ຊາຊິເລຠສໂຕເບີ
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ຊາຊິເລàº
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ສໂຕເບີ
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ສຊຮ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ຊຮສ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; ຊສ
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; ສ
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; ຊ
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; ສຈ. ປອ.
+name ; given; ເອດາ ຄà»àº™àºµà»€àº¥àº
+name ; given-informal; ນີເລ
+name ; given2; ເຊຊາ ມາຕິນ
+name ; surname-prefix; ວອນ
+name ; surname-core; ບຣູລ
+name ; surname2; àºàº»àº‡àºŠàº²à»€àº¥ ໂດມິງໂàº
+name ; generation; ຮຸ່ນລູàº
+name ; credentials; ດຣ. ປອ.
+name ; locale; ko_AQ
+
+expectedResult; ດຣ. ປອ. ສຈ. ປອ. ເອດາ ຄà»àº™àºµà»€àº¥àº ເຊຊາ ມາຕິນ ວອນ ບຣູລ ຮຸ່ນລູàº
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; ດຣ. ປອ. ວອນ ບຣູລ ສຈ. ປອ. ເອດາ ຄà»àº™àºµà»€àº¥àº ເຊຊາ ມາຕິນ ຮຸ່ນລູàº
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; ດຣ. ປອ. ວອນ ບຣູລ ເອດາ ຄà»àº™àºµà»€àº¥àº ເຊຊາ ມາຕິນ ຮຸ່ນລູàº
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; ດຣ. ປອ. ເອດາ ຄà»àº™àºµà»€àº¥àº ເຊຊາ ມາຕິນ ວອນ ບຣູລ
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; ບຣູລ, ເອດາ ຄà»àº™àºµà»€àº¥àº ເຊຊາ ມາຕິນ ວອນ
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; ວອນ ບຣູລ ເອດາ ຄà»àº™àºµà»€àº¥àº ເຊຊາ ມາຕິນ
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; ເອດາ ຄà»àº™àºµà»€àº¥àº ເຊຊາ ມາຕິນ ວອນ ບຣູລ
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ວອນ ບຣູລ ເອດາ ຄà»àº™àºµà»€àº¥àº
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ສຈ. ປອ. ວອນ ບຣູລ
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ວອນ ບຣູລ, ນີເລ
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; ນີເລ ວອນ ບຣູລ
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ວອນ ບຣູລ ນີເລ
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; ນີເລ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ນີວ
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; ວເເ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ເເວ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; ນີ
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; ວ
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/lt.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/lt.txt
new file mode 100644
index 00000000000..ab79d6e884b
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/lt.txt
@@ -0,0 +1,746 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: lt
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Rokas
+name ; locale; lt_AQ
+
+expectedResult; Rokas
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; R
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Irena
+name ; surname; KazlauskienÄ—
+name ; locale; lt_AQ
+
+expectedResult; KazlauskienÄ—, Irena
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Irena KazlauskienÄ—
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; KazlauskienÄ— Irena
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; KazlauskienÄ—, I.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; I. KazlauskienÄ—
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; KazlauskienÄ—
+
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Irena
+
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; IK
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; KI
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; I
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; K
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeGGS
+name ; given; Jonas
+name ; given2; Lukas
+name ; surname; Petrauskas
+name ; locale; lt_AQ
+
+expectedResult; Petrauskas, Jonas Lukas
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Jonas Lukas Petrauskas
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+
+expectedResult; Petrauskas Jonas Lukas
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Petrauskas, Jonas L.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Petrauskas Jonas L.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Petrauskas, J. L.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Petrauskas, Jonas
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; J. L. Petrauskas
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Jonas Petrauskas
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Petrauskas Jonas
+
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Petrauskas
+
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Jonas
+
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; JLP
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; PJL
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; J
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; P
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; p.
+name ; given; GabrielÄ—
+name ; given-informal; GabrÄ—
+name ; given2; Aldona
+name ; surname-core; PetraitytÄ—
+name ; generation; jaun.
+name ; credentials; dr.
+name ; locale; lt_AQ
+
+expectedResult; dr. p. GabrielÄ— Aldona PetraitytÄ—
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; addressing; formal
+
+expectedResult; dr. PetraitytÄ— GabrielÄ— A. jaun.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; p. PetraitytÄ— GabrielÄ— Aldona
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; PetraitytÄ—, GabrielÄ— Aldona
+
+parameters; sorting; long; referring; formal
+
+expectedResult; GabrielÄ— Aldona PetraitytÄ—
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; informal
+
+expectedResult; PetraitytÄ— GabrielÄ— Aldona
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; PetraitytÄ—, GabrielÄ— A.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; PetraitytÄ—, G. A.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; PetraitytÄ—, GabrÄ—
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; G. A. PetraitytÄ—
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; GabrÄ— PetraitytÄ—
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; PetraitytÄ— GabrÄ—
+
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; p. PetraitytÄ—
+
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; GabrÄ—
+
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; GAP
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; PGA
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; G
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; P
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; Jurgis
+name ; locale; ja_AQ
+
+expectedResult; Jurgis
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; J
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Kotryna
+name ; surname; Miliūtė
+name ; locale; ja_AQ
+
+expectedResult; Miliūtė, Kotryna
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Kotryna Miliūtė
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Miliūtė Kotryna
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Miliūtė, K.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; K. Miliūtė
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Kotryna
+
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Miliūtė
+
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Sofija
+name ; given2; Rita
+name ; surname; PenkauskienÄ—
+name ; locale; ja_AQ
+
+expectedResult; PenkauskienÄ—, Sofija Rita
+
+parameters; sorting; long; referring; formal
+
+expectedResult; PenkauskienÄ— Sofija Rita
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Sofija Rita PenkauskienÄ—
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+
+expectedResult; PenkauskienÄ—, Sofija R.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; PenkauskienÄ— Sofija R.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; PenkauskienÄ—, Sofija
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; PenkauskienÄ— Sofija
+
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; PenkauskienÄ—, S. R.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Sofija PenkauskienÄ—
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; S. R. PenkauskienÄ—
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; PenkauskienÄ—
+
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Sofija
+
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; PSR
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; SRP
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; P
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; S
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; prof. dr.
+name ; given; Ada Kornelija
+name ; given-informal; Nilka
+name ; given2; Eva Sofija
+name ; surname-prefix; von
+name ; surname-core; Vilkas
+name ; surname2; Jankauskas-Baranauskas
+name ; generation; jaun.
+name ; credentials; med. m. dr.
+name ; locale; ja_AQ
+
+expectedResult; med. m. dr. prof. dr. Ada Kornelija Eva Sofija von Vilkas Jankauskas-Baranauskas
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; addressing; formal
+
+expectedResult; prof. dr. von Vilkas Jankauskas-Baranauskas, Ada Kornelija Eva Sofija
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; von Vilkas Jankauskas-Baranauskas, Ada Kornelija Eva Sofija
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Ada Kornelija Eva Sofija von Vilkas Jankauskas-Baranauskas
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; informal
+
+expectedResult; med. m. dr. von Vilkas Ada Kornelija E. S. jaun.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Vilkas, Ada Kornelija Eva Sofija von
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Vilkas, Ada Kornelija E. S. von
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Vilkas, A. K. E. S. von
+
+parameters; sorting; short; referring; formal
+
+expectedResult; A. K. E. S. von Vilkas
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; prof. dr. von Vilkas
+
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; von Vilkas, Nilka
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Nilka von Vilkas
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; von Vilkas Nilka
+
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Nilka
+
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; AEV
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; VAE
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; N
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/lv.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/lv.txt
new file mode 100644
index 00000000000..d7a6d14822d
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/lv.txt
@@ -0,0 +1,782 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: lv
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; JÄnis
+name ; locale; lv_AQ
+
+expectedResult; JÄnis
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; J
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Aina
+name ; surname; Kalniņa
+name ; locale; lv_AQ
+
+expectedResult; Kalniņa, Aina
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Aina Kalniņa
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Kalniņa Aina
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; Kalniņa, A.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; A. Kalniņa
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Kalniņa A.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Aina K.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Kalniņa
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+
+expectedResult; Aina
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; AK
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+
+expectedResult; KA
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; short; monogram; formal
+
+endName
+
+# nativeGGS
+name ; given; Anna
+name ; given2; Paula
+name ; surname; Bērziņa
+name ; locale; lv_AQ
+
+expectedResult; Bērziņa, Anna Paula
+
+parameters; sorting; long; referring; informal
+
+expectedResult; Anna Paula Bērziņa
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Bērziņa Anna Paula
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; Bērziņa Anna P.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Bērziņa, A. P.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; A. P. Bērziņa
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Bērziņa A. P.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Bērziņa, Anna
+
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Anna Bērziņa
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Bērziņa Anna
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Bērziņa A.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Anna B.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Bērziņa
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+
+expectedResult; Anna
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; APB
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+
+expectedResult; BAP
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; B
+
+parameters; givenFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; kungs
+name ; given; PÄ“teris
+name ; given-informal; PÄ“cis
+name ; given2; KÄrlis
+name ; surname-core; Ozoliņš
+name ; generation; jaunÄkais
+name ; credentials; MP
+name ; locale; lv_AQ
+
+expectedResult; MP PÄ“teris KÄrlis Ozoliņš
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Ozoliņš, PÄ“teris KÄrlis
+
+parameters; sorting; long; referring; informal
+
+expectedResult; Ozoliņš PÄ“teris KÄrlis
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; MP Ozoliņš Pēteris K.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Ozoliņš, Pēteris
+
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ozoliņš Pēteris
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Pēteris Ozoliņš
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Ozoliņš, P. K.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Ozoliņš kungs
+
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+
+expectedResult; Ozoliņš P. K.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; P. K. Ozoliņš
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Ozoliņš P.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; PÄ“teris O.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Ozoliņš
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; PÄ“teris
+
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; PÄ“cis
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+
+expectedResult; OPK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; PKO
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+
+expectedResult; O
+
+parameters; givenFirst; short; monogram; formal
+
+expectedResult; P
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; Sinbads
+name ; locale; ja_AQ
+
+expectedResult; Sinbads
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Keita
+name ; surname; Millere
+name ; locale; ja_AQ
+
+expectedResult; Millere, Keita
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Keita Millere
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Millere Keita
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; Millere, K.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; K. Millere
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Millere K.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Keita M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Millere
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+
+expectedResult; Keita
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; PÄ«ters
+name ; given2; Džims
+name ; surname; Millers
+name ; locale; ja_AQ
+
+expectedResult; Millers, Pīters Džims
+
+parameters; sorting; long; referring; informal
+
+expectedResult; Millers Pīters Džims
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; Pīters Džims Millers
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Millers PÄ«ters D.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Millers, PÄ«ters
+
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Millers PÄ«ters
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Millers, P. D.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; PÄ«ters Millers
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Millers P. D.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; P. D. Millers
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Millers P.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; PÄ«ters M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Millers
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+
+expectedResult; PÄ«ters
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; MPD
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; PDM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+
+expectedResult; M
+
+parameters; givenFirst; short; monogram; formal
+
+expectedResult; P
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; Prof.
+name ; given; Laima Kristīne
+name ; given-informal; Ella
+name ; given2; Eva Sofija
+name ; surname-prefix; van den
+name ; surname-core; Volfa
+name ; surname2; Bērziņa-Kalniņa
+name ; generation; jaunÄkÄ
+name ; credentials; Dr.philol.
+name ; locale; ja_AQ
+
+expectedResult; Dr.philol. Laima Kristīne Eva Sofija van den Volfa Bērziņa-Kalniņa
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Dr.philol. van den Volfa Laima Kristīne E. S.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; van den Volfa, Laima Kristīne Eva Sofija
+
+parameters; sorting; long; referring; informal
+
+expectedResult; van den Volfa Laima Kristīne Eva Sofija
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; van den Volfa, Laima Kristīne
+
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Laima Kristīne van den Volfa
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; van den Volfa Laima Kristīne
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; L. K. E. S. van den Volfa
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; van den Volfa L. K. E. S.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Laima Kristīne v. d. V.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; van den Volfa L. K.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; van den Volfa Prof.
+
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+
+expectedResult; Volfa, L. K. E. S.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Laima Kristīne
+
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; van den Volfa
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; Ella
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+
+expectedResult; LEV
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+
+expectedResult; VLE
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; E
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/mk.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/mk.txt
new file mode 100644
index 00000000000..fe66a9babd2
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/mk.txt
@@ -0,0 +1,787 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: mk
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; КрÑте
+name ; locale; mk_AQ
+
+expectedResult; КрÑте
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; К
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; КрÑте
+name ; surname; МиÑирков
+name ; locale; mk_AQ
+
+expectedResult; МиÑирков, КрÑте
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; КрÑте МиÑирков
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; МиÑирков КрÑте
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; МиÑирков, К.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; К. МиÑирков
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; МиÑирков К.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; КрÑте Ðœ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; МиÑирков
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; КрÑте
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; КМ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; МК
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; КрÑте
+name ; given2; Петков
+name ; surname; МиÑирков
+name ; locale; mk_AQ
+
+expectedResult; МиÑирков, КрÑте Петков
+
+parameters; sorting; long; referring; formal
+
+expectedResult; КрÑте Петков МиÑирков
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; МиÑирков КрÑте Петков
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; МиÑирков, КрÑте П.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; КрÑте П. МиÑирков
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; МиÑирков КрÑте П.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; МиÑирков, К. П.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; МиÑирков, КрÑте
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; К. П. МиÑирков
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; КрÑте МиÑирков
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; МиÑирков К. П.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; МиÑирков КрÑте
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; МиÑирков К.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; КрÑте Ðœ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; МиÑирков
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; КрÑте
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; КПМ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; МКП
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; КМ
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; МК
+
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeFull
+name ; title; проф. д-р
+name ; given; КрÑте
+name ; given-informal; Крки
+name ; given2; Петков
+name ; surname-core; МиÑирков
+name ; credentials; дипл. инг.
+name ; locale; mk_AQ
+
+expectedResult; проф. д-Ñ€ КрÑте Петков МиÑирков
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; проф. д-Ñ€ МиÑирков КрÑте Петков
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; МиÑирков, КрÑте Петков
+
+parameters; sorting; long; referring; formal
+
+expectedResult; МиÑирков, КрÑте П.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; проф. д-Ñ€ МиÑирков
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; КрÑте П. МиÑирков
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; МиÑирков КрÑте П.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; МиÑирков, К. П.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; К. П. МиÑирков
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; МиÑирков К. П.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; МиÑирков, Крки
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Крки МиÑирков
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; МиÑирков Крки
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; МиÑирков К.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Крки М.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Крки
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; КПМ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; МКП
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; КМ
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; МК
+
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; Синбад
+name ; locale; ko_AQ
+
+expectedResult; Синбад
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; С
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Кете
+name ; surname; Милер
+name ; locale; ko_AQ
+
+expectedResult; Милер, Кете
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Кете Милер
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Милер Кете
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Милер, К.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; К. Милер
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Милер К.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Кете М.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Милер
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Кете
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; КМ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; МК
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGGS
+name ; given; Цецилија
+name ; given2; Хамиш
+name ; surname; Штебер
+name ; locale; ko_AQ
+
+expectedResult; Штебер, Цецилија Хамиш
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Цецилија Хамиш Штебер
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Штебер Цецилија Хамиш
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Штебер, Цецилија Х.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Цецилија Х. Штебер
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Штебер Цецилија Х.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Штебер, Цецилија
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Цецилија Штебер
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Штебер Цецилија
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Штебер, Ц. Х.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Ц. Х. Штебер
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Штебер Ц. Х.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Цецилија Ш.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Штебер Ц.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Цецилија
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Штебер
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ЦХШ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; ШЦХ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ЦШ
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; ШЦ
+
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; проф. д-р
+name ; given; Ðна Марија
+name ; given-informal; Ен
+name ; given2; Цезар Мартин
+name ; surname-prefix; ван ден
+name ; surname-core; Волф
+name ; surname2; Бекер Шмит
+name ; generation; јуниор
+name ; credentials; дипл. инг.
+name ; locale; ko_AQ
+
+expectedResult; проф. д-Ñ€ Ðна Марија Цезар Мартин ван ден Волф
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; проф. д-Ñ€ ван ден Волф Ðна Марија Цезар Мартин
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Волф, Ðна Марија Цезар Мартин ван ден
+
+parameters; sorting; long; referring; formal
+
+expectedResult; ван ден Волф, Ðна Марија Ц. Ðœ.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Ðна Марија Ц. Ðœ. ван ден Волф
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; ван ден Волф Ðна Марија Ц. Ðœ.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; ван ден Волф, Ð. Ðœ. Ц. Ðœ.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Ð. Ðœ. Ц. Ðœ. ван ден Волф
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ван ден Волф Ð. Ðœ. Ц. Ðœ.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; проф. д-р ван ден Волф
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ван ден Волф Ð. Ðœ.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ван ден Волф Ен
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Ен ван ден Волф
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Ен в. д. В.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Волф, Ен
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; ÐЦВ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; Ð’ÐЦ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ÐÐ’
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; Ð’Ð
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; ВЕ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ЕВ
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; Ен
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ml.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ml.txt
new file mode 100644
index 00000000000..a2d58316764
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ml.txt
@@ -0,0 +1,818 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: ml
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; ദീപ
+name ; locale; ml_AQ
+
+expectedResult; ദീപ
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ദീ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; à´…à´¶àµà´µà´¤à´¿
+name ; surname; നായർ
+name ; locale; ml_AQ
+
+expectedResult; നായർ, à´…à´¶àµà´µà´¤à´¿
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; à´…à´¶àµà´µà´¤à´¿ നായർ
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; നായർ à´…à´¶àµà´µà´¤à´¿
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; à´…à´¶àµà´µà´¤à´¿ നാ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; നായർ, അ.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; അ. നായർ
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; നായർ അ.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; à´…à´¶àµà´µà´¤à´¿
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; നായർ
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; അനാ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; നാഅ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; നാ
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; à´…
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; ജോൺ
+name ; given2; ചാണàµà´Ÿà´¿
+name ; surname; പടവീടàµà´Ÿà´¿àµ½
+name ; locale; ml_AQ
+
+expectedResult; പടവീടàµà´Ÿà´¿àµ½, ജോൺ ചാണàµà´Ÿà´¿
+
+parameters; sorting; long; referring; formal
+
+expectedResult; ജോൺ ചാണàµà´Ÿà´¿ പടവീടàµà´Ÿà´¿àµ½
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; പടവീടàµà´Ÿà´¿àµ½ ജോൺ ചാണàµà´Ÿà´¿
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; പടവീടàµà´Ÿà´¿àµ½, ജോ. à´šà´¾.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; പടവീടàµà´Ÿà´¿àµ½, ജോൺ à´šà´¾.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; ജോ. à´šà´¾. പടവീടàµà´Ÿà´¿àµ½
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ജോൺ à´šà´¾. പടവീടàµà´Ÿà´¿àµ½
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; പടവീടàµà´Ÿà´¿àµ½ ജോ. à´šà´¾.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; പടവീടàµà´Ÿà´¿àµ½ ജോൺ à´šà´¾.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; പടവീടàµà´Ÿà´¿àµ½, ജോൺ
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; ജോൺ പടവീടàµà´Ÿà´¿àµ½
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; പടവീടàµà´Ÿà´¿àµ½ ജോ.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; പടവീടàµà´Ÿà´¿àµ½ ജോൺ
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; പടവീടàµà´Ÿà´¿àµ½
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ജോൺ പ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ജോചാപ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; പജോചാ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ജോൺ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ജോപ
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; പജോ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ജോ
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; à´ª
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; à´¶àµà´°àµ€.
+name ; given; തോമസൠകàµà´°àµà´µà´¿à´³
+name ; given-informal; ടോമിചàµà´šàµ»
+name ; given2; à´…à´¨àµà´¤àµ‹à´£à´¿
+name ; surname-core; à´•à´±àµà´µà´¾à´ªàµà´ªà´±à´®àµà´ªà´¿àµ½
+name ; generation; ജൂനിയർ
+name ; credentials; എംപി
+name ; locale; ml_AQ
+
+expectedResult; à´•à´±àµà´µà´¾à´ªàµà´ªà´±à´®àµà´ªà´¿àµ½ à´¶àµà´°àµ€. തോമസൠകàµà´°àµà´µà´¿à´³ à´…à´¨àµà´¤àµ‹à´£à´¿ ജൂനിയർ, എംപി
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; തോമസൠകàµà´°àµà´µà´¿à´³ à´…à´¨àµà´¤àµ‹à´£à´¿ à´•à´±àµà´µà´¾à´ªàµà´ªà´±à´®àµà´ªà´¿àµ½ എംപി
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; à´•à´±àµà´µà´¾à´ªàµà´ªà´±à´®àµà´ªà´¿àµ½, തോമസൠകàµà´°àµà´µà´¿à´³ à´…à´¨àµà´¤àµ‹à´£à´¿
+
+parameters; sorting; long; referring; formal
+
+expectedResult; à´•à´±àµà´µà´¾à´ªàµà´ªà´±à´®àµà´ªà´¿àµ½ തോമസൠകàµà´°àµà´µà´¿à´³ à´…. എംപി
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; തോമസൠകàµà´°àµà´µà´¿à´³ à´…. à´•à´±àµà´µà´¾à´ªàµà´ªà´±à´®àµà´ªà´¿àµ½ എംപി
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; à´•à´±àµà´µà´¾à´ªàµà´ªà´±à´®àµà´ªà´¿àµ½, തോമസൠകàµà´°àµà´µà´¿à´³ à´….
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; à´•à´±àµà´µà´¾à´ªàµà´ªà´±à´®àµà´ªà´¿àµ½, തോ. à´•àµ. à´….
+
+parameters; sorting; short; referring; formal
+
+expectedResult; à´•à´±àµà´µà´¾à´ªàµà´ªà´±à´®àµà´ªà´¿àµ½ തോ. à´•àµ. à´….
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; തോ. à´•àµ. à´…. à´•à´±àµà´µà´¾à´ªàµà´ªà´±à´®àµà´ªà´¿àµ½
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; à´•à´±àµà´µà´¾à´ªàµà´ªà´±à´®àµà´ªà´¿àµ½, ടോമിചàµà´šàµ»
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; à´•à´±àµà´µà´¾à´ªàµà´ªà´±à´®àµà´ªà´¿àµ½ ടോമിചàµà´šàµ»
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; ടോമിചàµà´šàµ» à´•à´±àµà´µà´¾à´ªàµà´ªà´±à´®àµà´ªà´¿àµ½
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; à´•à´±àµà´µà´¾à´ªàµà´ªà´±à´®àµà´ªà´¿àµ½ തോ. à´•àµ.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; à´¶àµà´°àµ€. à´•à´±àµà´µà´¾à´ªàµà´ªà´±à´®àµà´ªà´¿àµ½
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ടോമിചàµà´šàµ» à´•.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ടോമിചàµà´šàµ»
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; കതോഅ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; തോഅക
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; കടോ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ടോക
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; ടോ
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; à´•
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; സിൻബാദàµ
+name ; locale; ja_AQ
+
+expectedResult; സിൻബാദàµ
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; സി
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; കാതàµà´¤à´¿
+name ; surname; à´®àµà´³àµà´³àµ¼
+name ; locale; ja_AQ
+
+expectedResult; à´®àµà´³àµà´³àµ¼, കാതàµà´¤à´¿
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; കാതàµà´¤à´¿ à´®àµà´³àµà´³àµ¼
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; à´®àµà´³àµà´³àµ¼ കാതàµà´¤à´¿
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; à´®àµà´³àµà´³àµ¼, à´•à´¾.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; à´•à´¾. à´®àµà´³àµà´³àµ¼
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; കാതàµà´¤à´¿ à´®àµ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; à´®àµà´³àµà´³àµ¼ à´•à´¾.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; കാതàµà´¤à´¿
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; à´®àµà´³àµà´³àµ¼
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; കാമàµ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; à´®àµà´•à´¾
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; à´•à´¾
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; à´®àµ
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; സസിലിയ
+name ; given2; ഹാമിഷàµ
+name ; surname; à´¸àµâ€Œà´±àµà´±àµ‹à´¬àµ¼
+name ; locale; ja_AQ
+
+expectedResult; à´¸àµâ€Œà´±àµà´±àµ‹à´¬àµ¼, സസിലിയ ഹാമിഷàµ
+
+parameters; sorting; long; referring; formal
+
+expectedResult; സസിലിയ ഹാമിഷൠസàµâ€Œà´±àµà´±àµ‹à´¬àµ¼
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; à´¸àµâ€Œà´±àµà´±àµ‹à´¬àµ¼ സസിലിയ ഹാമിഷàµ
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; à´¸àµâ€Œà´±àµà´±àµ‹à´¬àµ¼, സസിലിയ ഹാ.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; സസിലിയ ഹാ. à´¸àµâ€Œà´±àµà´±àµ‹à´¬àµ¼
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; à´¸àµâ€Œà´±àµà´±àµ‹à´¬àµ¼ സസിലിയ ഹാ.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; à´¸àµâ€Œà´±àµà´±àµ‹à´¬àµ¼, à´¸. ഹാ.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; à´¸àµâ€Œà´±àµà´±àµ‹à´¬àµ¼, സസിലിയ
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; à´¸. ഹാ. à´¸àµâ€Œà´±àµà´±àµ‹à´¬àµ¼
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; സസിലിയ à´¸àµâ€Œà´±àµà´±àµ‹à´¬àµ¼
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; à´¸àµâ€Œà´±àµà´±àµ‹à´¬àµ¼ à´¸. ഹാ.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; à´¸àµâ€Œà´±àµà´±àµ‹à´¬àµ¼ സസിലിയ
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; à´¸àµâ€Œà´±àµà´±àµ‹à´¬àµ¼ à´¸.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; സസിലിയ à´¸àµâ€Œ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; à´¸àµâ€Œà´±àµà´±àµ‹à´¬àµ¼
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; സസിലിയ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; സഹാസàµâ€Œ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; à´¸àµâ€Œà´¸à´¹à´¾
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; സസàµâ€Œ
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; à´¸àµâ€Œà´¸
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; à´¸àµâ€Œ
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; à´¸
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; à´ªàµà´°àµŠà´«. ഡോ.
+name ; given; à´Žà´¯àµâ€Œà´¡ കോർണീലിയ
+name ; given-informal; നീൽ
+name ; given2; സീസ൪ മാ൪ടàµà´Ÿà´¿àµ»
+name ; surname-prefix; വാൻ
+name ; surname-core; à´¬àµà´°àµà´¯àµ‚ൾ
+name ; surname2; ഗോൺസാലെസൠഡൊമിംഗോ
+name ; generation; ജൂനിയർ
+name ; credentials; à´Žà´‚.à´¡à´¿. à´¡à´¿.à´¡à´¿.à´Žà´¸àµ
+name ; locale; ja_AQ
+
+expectedResult; വാൻ à´¬àµà´°àµà´¯àµ‚ൾ à´ªàµà´°àµŠà´«. ഡോ. à´Žà´¯àµâ€Œà´¡ കോർണീലിയ സീസ൪ മാ൪ടàµà´Ÿà´¿àµ» ജൂനിയർ, à´Žà´‚.à´¡à´¿. à´¡à´¿.à´¡à´¿.à´Žà´¸àµ
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; à´Žà´¯àµâ€Œà´¡ കോർണീലിയ സീസ൪ മാ൪ടàµà´Ÿà´¿àµ» വാൻ à´¬àµà´°àµà´¯àµ‚ൾ à´Žà´‚.à´¡à´¿. à´¡à´¿.à´¡à´¿.à´Žà´¸àµ
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; à´Žà´¯àµâ€Œà´¡ കോർണീലിയ സീ. മാ. വാൻ à´¬àµà´°àµà´¯àµ‚ൾ à´Žà´‚.à´¡à´¿. à´¡à´¿.à´¡à´¿.à´Žà´¸àµ
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; വാൻ à´¬àµà´°àµà´¯àµ‚ൾ à´Žà´¯àµâ€Œà´¡ കോർണീലിയ സീ. മാ. à´Žà´‚.à´¡à´¿. à´¡à´¿.à´¡à´¿.à´Žà´¸àµ
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; à´¬àµà´°àµà´¯àµ‚ൾ, à´Žà´¯àµâ€Œà´¡ കോർണീലിയ സീസ൪ മാ൪ടàµà´Ÿà´¿àµ» വാൻ
+
+parameters; sorting; long; referring; formal
+
+expectedResult; à´¬àµà´°àµà´¯àµ‚ൾ, à´Žà´¯àµâ€Œà´¡ കോർണീലിയ സീ. മാ. വാൻ
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; à´¬àµà´°àµà´¯àµ‚ൾ, à´Ž. കോ. സീ. മാ. വാൻ
+
+parameters; sorting; short; referring; formal
+
+expectedResult; à´Ž. കോ. സീ. മാ. വാൻ à´¬àµà´°àµà´¯àµ‚ൾ
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; വാൻ à´¬àµà´°àµà´¯àµ‚ൾ à´Ž. കോ. സീ. മാ.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; à´ªàµà´°àµŠà´«. ഡോ. വാൻ à´¬àµà´°àµà´¯àµ‚ൾ
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; വാൻ à´¬àµà´°àµà´¯àµ‚ൾ à´Ž. കോ.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; വാൻ à´¬àµà´°àµà´¯àµ‚ൾ, നീൽ
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; നീൽ വാ. à´¬àµà´°àµà´¯àµ‚.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; നീൽ വാൻ à´¬àµà´°àµà´¯àµ‚ൾ
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; വാൻ à´¬àµà´°àµà´¯àµ‚ൾ നീൽ
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; എസീവാ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; വാഎസീ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; നീവാ
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; വാനീ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; നീൽ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; നീ
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; വാ
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/mn.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/mn.txt
new file mode 100644
index 00000000000..23bff1e29ec
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/mn.txt
@@ -0,0 +1,762 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: mn
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Бат
+name ; locale; mn_AQ
+
+expectedResult; Бат
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Б
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; ЦÑцÑг
+name ; surname; Дорж
+name ; locale; mn_AQ
+
+expectedResult; Дорж, ЦÑцÑг
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Дорж ЦÑцÑг
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; ЦÑцÑг Дорж
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Дорж, Ц.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; ЦÑцÑг Д.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Дорж Ц.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Ц. Дорж
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ЦÑцÑг
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Дорж
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ДЦ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ЦД
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; Д
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Ц
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; Дулмаа
+name ; surname; Болд
+name ; locale; mn_AQ
+
+expectedResult; Болд, Дулмаа
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Болд Дулмаа
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Дулмаа Болд
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Дулмаа Б.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Болд, Д.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Болд Д.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Д. Болд
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Дулмаа
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Болд
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; БД
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ДБ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; Б
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Д
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeFull
+name ; title; Ðоён
+name ; given; Ðзжаргал
+name ; surname-core; Төмөр
+name ; locale; mn_AQ
+
+expectedResult; Ðоён Ðзжаргал Төмөр
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Төмөр Ðоён Ðзжаргал
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Төмөр, Ðзжаргал
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ðзжаргал Төмөр
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Төмөр Ðзжаргал
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Ðзжаргал Т.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Ðоён Төмөр
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Төмөр, Ð.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Ð. Төмөр
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Ðзжаргал
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Төмөр Ð.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ÐТ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; ТÐ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; Ð
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; Т
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; Синбад
+name ; locale; en_AQ
+
+expectedResult; Синбад
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; С
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Кате
+name ; surname; Мюллер
+name ; locale; en_AQ
+
+expectedResult; Мюллер, Кате
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Кате Мюллер
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Мюллер Кате
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Мюллер, К.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; К. Мюллер
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Мюллер К.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Кате М.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Мюллер
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Кате
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; КМ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; МК
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; К
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; М
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Зазилиа
+name ; given2; Хамиш
+name ; surname; Стобер
+name ; locale; en_AQ
+
+expectedResult; Стобер, Зазилиа Хамиш
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Зазилиа Хамиш Стобер
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Стобер Зазилиа Хамиш
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Стобер, Зазилиа Х.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Стобер Зазилиа Х.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Стобер, Зазилиа
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Зазилиа Стобер
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Стобер Зазилиа
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Стобер, З. Х.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; З. Х. Стобер
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Стобер З. Х.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Зазилиа С.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Стобер З.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Зазилиа
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Стобер
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ЗХС
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; СЗХ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ЗС
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; СЗ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; З
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; С
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignFull
+name ; title; Проф. Др.
+name ; given; Ðда Корнелиа
+name ; given-informal; Ðиль
+name ; given2; Эва Софиа
+name ; surname-prefix; вон
+name ; surname-core; Брюхл
+name ; surname2; Ð“Ð¾Ð½Ð·Ð°Ð»ÐµÑ Ð”Ð¾Ð¼Ð¸Ð½Ð³Ð¾
+name ; generation; Жр
+name ; credentials; Ðнагаах ухааны доктор
+name ; locale; en_AQ
+
+expectedResult; вон Брюхл Ð“Ð¾Ð½Ð·Ð°Ð»ÐµÑ Ð”Ð¾Ð¼Ð¸Ð½Ð³Ð¾ Проф. Др. Ðда Корнелиа Эва Софиа Ðнагаах ухааны доктор
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Проф. Др. Ðда Корнелиа Эва Софиа вон Брюхл Ð“Ð¾Ð½Ð·Ð°Ð»ÐµÑ Ð”Ð¾Ð¼Ð¸Ð½Ð³Ð¾ Ðнагаах ухааны доктор
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Проф. Др. Ðда Корнелиа Эва Софиа вон Брюхл Жр, Ðнагаах ухааны доктор
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; вон Брюхл Ðда Корнелиа Э. С. Жр, Ðнагаах ухааны доктор
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Брюхл, Ðда Корнелиа Эва Софиа вон
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Брюхл, Ðда Корнелиа Э. С. вон
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Брюхл, Ð. К. Э. С. вон
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Ð. К. Э. С. вон Брюхл
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; вон Брюхл Ð. К. Э. С.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Проф. Др. вон Брюхл
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; вон Брюхл Ð. К.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; вон Брюхл, Ðиль
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; вон Брюхл Ðиль
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Ðиль вон Брюхл
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Ðиль в. Б.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Ðиль
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ÐЭВ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; Ð’ÐЭ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; Ð’Ð
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ÐÐ’
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; Ð’
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Ð
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/mr.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/mr.txt
new file mode 100644
index 00000000000..f42c24ed6d1
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/mr.txt
@@ -0,0 +1,800 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: mr
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; माधà¥à¤°à¥€
+name ; locale; mr_AQ
+
+expectedResult; माधà¥à¤°à¥€
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; मा
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; धिरज
+name ; surname; देशपांडे
+name ; locale; mr_AQ
+
+expectedResult; देशपांडे, धिरज
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; देशपांडे धिरज
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; देशपांडे, धि.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; धिरज देशपांडे
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; देशपांडे धि.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; धि. देशपांडे
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; देशपांडे
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; धिरज दे.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; देधि
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; धिदे
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; धिरज
+
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; दे
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; धि
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; रिधान
+name ; given2; समीर
+name ; surname; फडके
+name ; locale; mr_AQ
+
+expectedResult; फडके, रिधान समीर
+
+parameters; sorting; long; referring; formal
+
+expectedResult; फडके रिधान समीर
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; रिधान समीर फडके
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; फडके, रिधान स.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; फडके, रि. स.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; फडके रि. स.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; फडके, रिधान
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; रि. स. फडके
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; फडके रिधान
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; रिधान फडके
+
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; फडके रि.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; रिधान फ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; रिधान
+
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; फडके
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; फरिस
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; रिसफ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; फरि
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; रिफ
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; रि
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; फ
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; शà¥à¤°à¥€.
+name ; given; धिरज देशपांडे
+name ; given-informal; धीरू
+name ; given2; विजय देशपांडे
+name ; surname-core; देशपांडे
+name ; generation; क.
+name ; credentials; à¤à¤®. पी.
+name ; locale; mr_AQ
+
+expectedResult; शà¥à¤°à¥€. धिरज देशपांडे विजय देशपांडे देशपांडे, à¤à¤®. पी.
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; शà¥à¤°à¥€. धिरज देशपांडे विजय देशपांडे देशपांडे à¤à¤®. पी.
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; देशपांडे धिरज देशपांडे विजय देशपांडे à¤à¤®. पी.
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; देशपांडे, धिरज देशपांडे विजय देशपांडे
+
+parameters; sorting; long; referring; formal
+
+expectedResult; देशपांडे, धिरज देशपांडे वि. दे.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; देशपांडे, धि. दे. वि. दे.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; देशपांडे धि. दे. वि. दे.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; धि. दे. वि. दे. देशपांडे
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; देशपांडे धि. दे.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; देशपांडे, धीरू
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; शà¥à¤°à¥€. देशपांडे
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; देशपांडे धीरू
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; धीरू देशपांडे
+
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; धीरू दे.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; देधिवि
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; धिविदे
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; देधी
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; धीदे
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; धीरू
+
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; दे
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; धी
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; सिंदबाद
+name ; locale; ko_AQ
+
+expectedResult; सिंदबाद
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; सिं
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; काठे
+name ; surname; मà¥à¤²à¤°
+name ; locale; ko_AQ
+
+expectedResult; मà¥à¤²à¤°, काठे
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; काठे मà¥à¤²à¤°
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; मà¥à¤²à¤° काठे
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; मà¥à¤²à¤°, का.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; का. मà¥à¤²à¤°
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; काठे मà¥.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; मà¥à¤²à¤° का.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; काठे
+
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; कामà¥
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; मà¥à¤•à¤¾
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; मà¥à¤²à¤°
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; का
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; मà¥
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; à¤à¤¾à¤à¤¿à¤²à¤¿à¤¯à¤¾
+name ; given2; हमीश
+name ; surname; सà¥à¤Ÿà¥‰à¤¬à¤°
+name ; locale; ko_AQ
+
+expectedResult; सà¥à¤Ÿà¥‰à¤¬à¤°, à¤à¤¾à¤à¤¿à¤²à¤¿à¤¯à¤¾ हमीश
+
+parameters; sorting; long; referring; formal
+
+expectedResult; à¤à¤¾à¤à¤¿à¤²à¤¿à¤¯à¤¾ हमीश सà¥à¤Ÿà¥‰à¤¬à¤°
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; सà¥à¤Ÿà¥‰à¤¬à¤° à¤à¤¾à¤à¤¿à¤²à¤¿à¤¯à¤¾ हमीश
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; सà¥à¤Ÿà¥‰à¤¬à¤°, à¤à¤¾à¤à¤¿à¤²à¤¿à¤¯à¤¾ ह.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; सà¥à¤Ÿà¥‰à¤¬à¤°, à¤à¤¾à¤à¤¿à¤²à¤¿à¤¯à¤¾
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; à¤à¤¾à¤à¤¿à¤²à¤¿à¤¯à¤¾ सà¥à¤Ÿà¥‰à¤¬à¤°
+
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; सà¥à¤Ÿà¥‰à¤¬à¤° à¤à¤¾à¤à¤¿à¤²à¤¿à¤¯à¤¾
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; à¤à¤¾à¤à¤¿à¤²à¤¿à¤¯à¤¾ सà¥à¤Ÿà¥‰.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; सà¥à¤Ÿà¥‰à¤¬à¤°, à¤à¤¾. ह.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; à¤à¤¾. ह. सà¥à¤Ÿà¥‰à¤¬à¤°
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; सà¥à¤Ÿà¥‰à¤¬à¤° à¤à¤¾. ह.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; सà¥à¤Ÿà¥‰à¤¬à¤° à¤à¤¾.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; à¤à¤¾à¤à¤¿à¤²à¤¿à¤¯à¤¾
+
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; à¤à¤¾à¤¹à¤¸à¥à¤Ÿà¥‰
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; सà¥à¤Ÿà¥‰à¤à¤¾à¤¹
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; à¤à¤¾à¤¸à¥à¤Ÿà¥‰
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; सà¥à¤Ÿà¥‰à¤à¤¾
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; सà¥à¤Ÿà¥‰à¤¬à¤°
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; सà¥à¤Ÿà¥‰
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; à¤à¤¾
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; पà¥à¤°à¥‹à¤«à¥‡.डॉ.
+name ; given; à¤à¤¡à¤¾ कॉरà¥à¤¨à¥‡à¤²à¤¿à¤¯à¤¾
+name ; given-informal; निले
+name ; given2; सीà¤à¤° मारà¥à¤Ÿà¤¿à¤¨
+name ; surname-prefix; वà¥à¤¹à¥‰à¤¨
+name ; surname-core; बà¥à¤°à¥à¤¯à¥‚ल
+name ; surname2; गोनà¥à¤à¤¾à¤²à¥‡à¤ डोमिंगो
+name ; generation; क.
+name ; credentials; à¤à¤®.डी.पीà¤à¤š.डी
+name ; locale; ko_AQ
+
+expectedResult; पà¥à¤°à¥‹à¤«à¥‡.डॉ. à¤à¤¡à¤¾ कॉरà¥à¤¨à¥‡à¤²à¤¿à¤¯à¤¾ सीà¤à¤° मारà¥à¤Ÿà¤¿à¤¨ वà¥à¤¹à¥‰à¤¨ बà¥à¤°à¥à¤¯à¥‚ल गोनà¥à¤à¤¾à¤²à¥‡à¤ डोमिंगो à¤à¤®.डी.पीà¤à¤š.डी
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; पà¥à¤°à¥‹à¤«à¥‡.डॉ. à¤à¤¡à¤¾ कॉरà¥à¤¨à¥‡à¤²à¤¿à¤¯à¤¾ सीà¤à¤° मारà¥à¤Ÿà¤¿à¤¨ वà¥à¤¹à¥‰à¤¨ बà¥à¤°à¥à¤¯à¥‚ल, à¤à¤®.डी.पीà¤à¤š.डी
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; वà¥à¤¹à¥‰à¤¨ बà¥à¤°à¥à¤¯à¥‚ल à¤à¤¡à¤¾ कॉरà¥à¤¨à¥‡à¤²à¤¿à¤¯à¤¾ सीà¤à¤° मारà¥à¤Ÿà¤¿à¤¨ à¤à¤®.डी.पीà¤à¤š.डी
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; बà¥à¤°à¥à¤¯à¥‚ल, à¤à¤¡à¤¾ कॉरà¥à¤¨à¥‡à¤²à¤¿à¤¯à¤¾ सीà¤à¤° मारà¥à¤Ÿà¤¿à¤¨ वà¥à¤¹à¥‰à¤¨
+
+parameters; sorting; long; referring; formal
+
+expectedResult; बà¥à¤°à¥à¤¯à¥‚ल, à¤à¤¡à¤¾ कॉरà¥à¤¨à¥‡à¤²à¤¿à¤¯à¤¾ सी. मा. वà¥à¤¹à¥‰à¤¨
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; बà¥à¤°à¥à¤¯à¥‚ल, à¤. कॉ. सी. मा. वà¥à¤¹à¥‰à¤¨
+
+parameters; sorting; short; referring; formal
+
+expectedResult; à¤. कॉ. सी. मा. वà¥à¤¹à¥‰à¤¨ बà¥à¤°à¥à¤¯à¥‚ल
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; वà¥à¤¹à¥‰à¤¨ बà¥à¤°à¥à¤¯à¥‚ल à¤. कॉ. सी. मा.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; पà¥à¤°à¥‹à¤«à¥‡.डॉ. वà¥à¤¹à¥‰à¤¨ बà¥à¤°à¥à¤¯à¥‚ल
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; वà¥à¤¹à¥‰à¤¨ बà¥à¤°à¥à¤¯à¥‚ल à¤. कॉ.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; वà¥à¤¹à¥‰à¤¨ बà¥à¤°à¥à¤¯à¥‚ल, निले
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; निले वà¥à¤¹à¥‰. बà¥à¤°à¥à¤¯à¥‚.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; निले वà¥à¤¹à¥‰à¤¨ बà¥à¤°à¥à¤¯à¥‚ल
+
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; वà¥à¤¹à¥‰à¤¨ बà¥à¤°à¥à¤¯à¥‚ल निले
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; à¤à¤¸à¥€à¤µà¥à¤¹à¥‰
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; वà¥à¤¹à¥‰à¤à¤¸à¥€
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; निवà¥à¤¹à¥‰
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; वà¥à¤¹à¥‰à¤¨à¤¿
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; निले
+
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; वà¥à¤¹à¥‰
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; नि
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ms.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ms.txt
new file mode 100644
index 00000000000..7d046ce6a17
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ms.txt
@@ -0,0 +1,724 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: ms
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Sulaiman
+name ; locale; ms_AQ
+
+expectedResult; Sulaiman
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Salimah
+name ; surname; Sulaiman
+name ; locale; ms_AQ
+
+expectedResult; Sulaiman, Salimah
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Salimah Sulaiman
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Sulaiman Salimah
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; S. Sulaiman
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Salimah S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Sulaiman
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+
+expectedResult; Salimah
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+
+expectedResult; SS
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; Syed
+name ; given2; Sadiq
+name ; surname; Syed Hassan
+name ; locale; ms_AQ
+
+expectedResult; Syed Hassan, Syed Sadiq
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Syed Hassan Syed Sadiq
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Syed Sadiq Syed Hassan
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Syed Hassan Syed S.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Syed S. Syed Hassan
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; S. S. Syed Hassan
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Syed Hassan Syed
+
+parameters; surnameFirst; long; referring; informal
+
+expectedResult; Syed Syed Hassan
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Syed Hassan
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+
+expectedResult; Syed S. H.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Syed
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+
+expectedResult; SSS
+
+parameters; givenFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; SS
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+endName
+
+# nativeFull
+name ; title; Tn.
+name ; given; Syed
+name ; given-informal; Razak
+name ; given2; Abd Aziz
+name ; surname-prefix; Syed A
+name ; surname-core; Ismail
+name ; surname2; Petra
+name ; generation; Jr
+name ; credentials; MP
+name ; locale; ms_AQ
+
+expectedResult; Tn. Syed Abd Aziz Syed A Ismail Petra MP
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Syed A. A. Syed A Ismail Jr, MP
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Syed A Ismail Syed Abd Aziz MP
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Ismail, Syed Abd Aziz Syed A
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Syed A Ismail Syed A. A. MP
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; S. A. A. Syed A Ismail
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Razak Syed A Ismail
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Syed A Ismail Razak
+
+parameters; surnameFirst; long; referring; informal
+
+expectedResult; Tn. Syed A Ismail
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+
+expectedResult; Razak S. A. I.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Razak
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+
+expectedResult; SAS
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; SSA
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; RS
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; R
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; John
+name ; locale; ja_AQ
+
+expectedResult; John
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; J
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Kathy
+name ; surname; Mueller
+name ; locale; ja_AQ
+
+expectedResult; Mueller, Kathy
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Kathy Mueller
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Mueller Kathy
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; K. Mueller
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Kathy M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Mueller
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+
+expectedResult; Kathy
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Zendaya
+name ; given2; Marie
+name ; surname; Coleman
+name ; locale; ja_AQ
+
+expectedResult; Coleman, Zendaya Marie
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Coleman Zendaya Marie
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Zendaya Marie Coleman
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Coleman Zendaya M.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Zendaya M. Coleman
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Coleman Zendaya
+
+parameters; surnameFirst; long; referring; informal
+
+expectedResult; Zendaya Coleman
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Z. M. Coleman
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Zendaya C.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Coleman
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+
+expectedResult; Zendaya
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+
+expectedResult; CZM
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; ZMC
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; ZC
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; C
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+
+expectedResult; Z
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; Prof. Dr.
+name ; given; Ada Cornelia
+name ; given-informal; Nelly
+name ; given2; Martina
+name ; surname-prefix; von
+name ; surname-core; Bruhel
+name ; surname2; Domingo
+name ; generation; Jr
+name ; credentials; MD DDS
+name ; locale; ja_AQ
+
+expectedResult; Prof. Dr. Ada Cornelia Martina von Bruhel Domingo MD DDS
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; von Bruhel Ada Cornelia Martina MD DDS
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Ada Cornelia M. von Bruhel Jr, MD DDS
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; von Bruhel Ada Cornelia M. MD DDS
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Bruhel, Ada Cornelia Martina von
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Prof. Dr. von Bruhel
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+
+expectedResult; A. C. M. von Bruhel
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Nelly von Bruhel
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; von Bruhel Nelly
+
+parameters; surnameFirst; long; referring; informal
+
+expectedResult; Nelly v. B.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Nelly
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+
+expectedResult; AMV
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; VAM
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; NV
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; N
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/my.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/my.txt
new file mode 100644
index 00000000000..e7fcdfcb50c
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/my.txt
@@ -0,0 +1,823 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: my
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; ဇင်ဒါယာ
+name ; locale; my_AQ
+
+expectedResult; ဇင်ဒါယာ
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ဇ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; အိုင်ရင်း
+name ; surname; အက်ဒ်လာ
+name ; locale; my_AQ
+
+expectedResult; အိုင်ရင်း အ. က်. ဒ်. လ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; အက်ဒ်လာአအိုင်ရင်း
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; အက်ဒ်လာ အိုင်ရင်း
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; အိုင်ရင်း အက်ဒ်လာ
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; အက်ဒ်လာአအို. ရ.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; အက်ဒ်လာ အို. ရ.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; အို. ရ. အက်ဒ်လာ
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; အိုင်ရင်း
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; အက်ဒ်လာ
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; အ အို
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; အို အ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; အအို
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; အို
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; အ
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeGGS
+name ; given; မေရီ စူး
+name ; given2; ဟာမစ်ရှ်
+name ; surname; á€á€•á€ºá€†á€„်
+name ; locale; my_AQ
+
+expectedResult; á€á€•á€ºá€†á€„်አမေ. ရီ. စူ. ဟ. မ. စ်. ရှ်.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; မေ. ရီ. စူ. ဟ. မ. စ်. ရှ်. á€á€•á€ºá€†á€„်
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; á€á€•á€ºá€†á€„် မေ. ရီ. စူ. ဟ. မ. စ်. ရှ်.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; á€á€•á€ºá€†á€„်አမေရီ စူး ဟ. မ. စ်. ရှ်.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; မေရီ စူး ဟ. မ. စ်. ရှ်. á€á€•á€ºá€†á€„်
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; á€á€•á€ºá€†á€„် မေရီ စူး ဟ. မ. စ်. ရှ်.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; á€á€•á€ºá€†á€„်አမေရီ စူး ဟာမစ်ရှ်
+
+parameters; sorting; long; referring; formal
+
+expectedResult; မေရီ စူး ဟာမစ်ရှ် á€á€•á€ºá€†á€„်
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; á€á€•á€ºá€†á€„် မေရီ စူး ဟာမစ်ရှ်
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; á€á€•á€ºá€†á€„် မေ. ရီ. စူ.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; á€á€•á€ºá€†á€„်አမေရီ စူး
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; မေရီ စူး á€á€•á€ºá€†á€„်
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; á€á€•á€ºá€†á€„် မေရီ စူး
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; မေရီ စူး á€. ဆ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; မေရီ စူး
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; မေ ဟ á€
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; ဠမေ ဟ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; á€á€•á€ºá€†á€„်
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; မေ á€
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; á€á€™á€±
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; မေ
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; á€
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; မစ္စá€á€¬
+name ; given; ဘာထရမ် á€á€²á€œá€ºá€˜á€¬á€–ို့စ်
+name ; given-informal; ဘာá€á€®
+name ; given2; ဟင်နရီ ရောဘá€á€º
+name ; surname-core; á€á€°á€…်á€á€¬
+name ; generation; ဂျူနီယာ
+name ; credentials; ဒေါက်á€á€¬
+name ; locale; my_AQ
+
+expectedResult; မစ္စá€á€¬ ဘာထရမ် á€á€²á€œá€ºá€˜á€¬á€–ို့စ် ဟင်နရီ ရောဘá€á€º á€á€°á€…်á€á€¬ ဂျူနီယာአဒေါက်á€á€¬
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; á€á€°á€…်á€á€¬ မစ္စá€á€¬ ဘာထရမ် á€á€²á€œá€ºá€˜á€¬á€–ို့စ် ဟင်နရီ ရောဘá€á€º ဂျူနီယာአဒေါက်á€á€¬
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; ဘာထရမ် á€á€²á€œá€ºá€˜á€¬á€–ို့စ် ဟ. န. ရီ. ရေ. ဘ. á€á€°á€…်á€á€¬ ဂျူနီယာአဒေါက်á€á€¬
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; á€á€°á€…်á€á€¬ ဘာထရမ် á€á€²á€œá€ºá€˜á€¬á€–ို့စ် ဟ. န. ရီ. ရေ. ဘ. ဂျူနီယာ, ဒေါက်á€á€¬
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; á€á€°á€…်á€á€¬áŠ ဘ. ထ. ရ. á€á€². လ်. ဘ. ဖို့. စ်. ဟ. န. ရီ. ရေ. ဘ.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; ဘ. ထ. ရ. á€á€². လ်. ဘ. ဖို့. စ်. ဟ. န. ရီ. ရေ. ဘ. á€á€°á€…်á€á€¬
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; á€á€°á€…်á€á€¬ ဘ. ထ. ရ. á€á€². လ်. ဘ. ဖို့. စ်. ဟ. န. ရီ. ရေ. ဘ.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; á€á€°á€…်á€á€¬áŠ ဘာထရမ် á€á€²á€œá€ºá€˜á€¬á€–ို့စ် ဟ. န. ရီ. ရေ. ဘ.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; á€á€°á€…်á€á€¬áŠ ဘာထရမ် á€á€²á€œá€ºá€˜á€¬á€–ို့စ် ဟင်နရီ ရောဘá€á€º
+
+parameters; sorting; long; referring; formal
+
+expectedResult; á€á€°á€…်á€á€¬ ဘ. ထ. ရ. á€á€². လ်. ဘ. ဖို့. စ်.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ဘာá€á€® á€á€°. စ်. á€.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; မစ္စá€á€¬ á€á€°á€…်á€á€¬
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; á€á€°á€…်á€á€¬áŠ ဘာá€á€®
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; ဘာá€á€® á€á€°á€…်á€á€¬
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; á€á€°á€…်á€á€¬ ဘာá€á€®
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; ဘ ဟ á€á€°
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; á€á€° ဘ ဟ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ဘ á€á€°
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; ဘာá€á€®
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; á€á€°á€˜
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; á€á€°
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; ဘ
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; ဆင်းဘá€á€º
+name ; locale; ko_AQ
+
+expectedResult; ဆင်းဘá€á€º
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ဆ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; ကက်သီ
+name ; surname; မူလာ
+name ; locale; ko_AQ
+
+expectedResult; ကက်သီ မူ. လ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; မူလာአက. သီ.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; က. သီ. မူလာ
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; မူလာ က. သီ.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; မူလာአကက်သီ
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; ကက်သီ မူလာ
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; မူလာ ကက်သီ
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; ကက်သီ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; က မူ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; မူ က
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; မူလာ
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; မူက
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; မူ
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; က
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGGS
+name ; given; ဇာဇီလာ
+name ; given2; ဟာမစ်ရှ်
+name ; surname; စá€á€­á€¯á€˜á€¬
+name ; locale; ko_AQ
+
+expectedResult; စá€á€­á€¯á€˜á€¬áŠ ဇ. ဇီ. လ. ဟ. မ. စ်. ရှ်.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; စá€á€­á€¯á€˜á€¬ ဇ. ဇီ. လ. ဟ. မ. စ်. ရှ်.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; ဇ. ဇီ. လ. ဟ. မ. စ်. ရှ်. စá€á€­á€¯á€˜á€¬
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; စá€á€­á€¯á€˜á€¬áŠ ဇာဇီလာ ဟ. မ. စ်. ရှ်.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; စá€á€­á€¯á€˜á€¬ ဇာဇီလာ ဟ. မ. စ်. ရှ်.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; ဇာဇီလာ ဟ. မ. စ်. ရှ်. စá€á€­á€¯á€˜á€¬
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; စá€á€­á€¯á€˜á€¬áŠ ဇာဇီလာ ဟာမစ်ရှ်
+
+parameters; sorting; long; referring; formal
+
+expectedResult; စá€á€­á€¯á€˜á€¬ ဇာဇီလာ ဟာမစ်ရှ်
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; ဇာဇီလာ ဟာမစ်ရှ် စá€á€­á€¯á€˜á€¬
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; ဇာဇီလာ စ. á€á€­á€¯. ဘ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; စá€á€­á€¯á€˜á€¬ ဇ. ဇီ. လ.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; စá€á€­á€¯á€˜á€¬áŠ ဇာဇီလာ
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; စá€á€­á€¯á€˜á€¬ ဇာဇီလာ
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; ဇာဇီလာ စá€á€­á€¯á€˜á€¬
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; စá€á€­á€¯á€˜á€¬
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ဇာဇီလာ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; စ ဇ ဟ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ဇ ဟ စ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; ဇ စ
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; စဇ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; စ
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; ဇ
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; ပရော်ဖက်ဆာ ဒေါက်á€á€¬
+name ; given; အာဒါ ကွန်နီလီယာ
+name ; given-informal; နီလီ
+name ; given2; ဆီဇာ မာá€á€„်
+name ; surname-prefix; á€á€°á€…်á€á€¬ ဗွန်
+name ; surname-core; á€á€°á€…်á€á€¬ ဘရူ
+name ; generation; ဂျူနီယာ
+name ; credentials; ဒေါက်á€á€¬
+name ; locale; ko_AQ
+
+expectedResult; ပရော်ဖက်ဆာ ဒေါက်á€á€¬ အာဒါ ကွန်နီလီယာ ဆီဇာ မာá€á€„် á€á€°á€…်á€á€¬ ဗွန် á€á€°á€…်á€á€¬ ဘရူ ဂျူနီယာአဒေါက်á€á€¬
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; á€á€°á€…်á€á€¬ ဗွန် á€á€°á€…်á€á€¬ ဘရူ ပရော်ဖက်ဆာ ဒေါက်á€á€¬ အာဒါ ကွန်နီလီယာ ဆီဇာ မာá€á€„် ဂျူနီယာአဒေါက်á€á€¬
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; á€á€°á€…်á€á€¬ ဗွန် á€á€°á€…်á€á€¬ ဘရူ အာဒါ ကွန်နီလီယာ ဆီ. ဇ. မ. ဂျူနီယာ, ဒေါက်á€á€¬
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; အာဒါ ကွန်နီလီယာ ဆီ. ဇ. မ. á€á€°á€…်á€á€¬ ဗွန် á€á€°á€…်á€á€¬ ဘရူ ဂျူနီယာአဒေါက်á€á€¬
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; á€á€°á€…်á€á€¬ ဘရူአအ. ဒ. ကွ. နီ. လီ. ယ. ဆီ. ဇ. မ. á€á€°á€…်á€á€¬ ဗွန်
+
+parameters; sorting; short; referring; formal
+
+expectedResult; á€á€°á€…်á€á€¬ ဗွန် á€á€°á€…်á€á€¬ ဘရူ အ. ဒ. ကွ. နီ. လီ. ယ. ဆီ. ဇ. မ.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; အ. ဒ. ကွ. နီ. လီ. ယ. ဆီ. ဇ. မ. á€á€°á€…်á€á€¬ ဗွန် á€á€°á€…်á€á€¬ ဘရူ
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; á€á€°á€…်á€á€¬ ဘရူአအာဒါ ကွန်နီလီယာ ဆီဇာ မာá€á€„် á€á€°á€…်á€á€¬ ဗွန်
+
+parameters; sorting; long; referring; formal
+
+expectedResult; á€á€°á€…်á€á€¬ ဘရူአအာဒါ ကွန်နီလီယာ ဆီ. ဇ. မ. á€á€°á€…်á€á€¬ ဗွန်
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; á€á€°á€…်á€á€¬ ဗွန် á€á€°á€…်á€á€¬ ဘရူ အ. ဒ. ကွ. နီ. လီ. ယ.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; နီလီ á€á€°. စ်. á€. ဗွ. န်. á€á€°. စ်. á€. ဘ. ရူ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ပရော်ဖက်ဆာ ဒေါက်á€á€¬ á€á€°á€…်á€á€¬ ဗွန် á€á€°á€…်á€á€¬ ဘရူ
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; á€á€°á€…်á€á€¬ ဗွန် á€á€°á€…်á€á€¬ ဘရူአနီလီ
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; နီလီ á€á€°á€…်á€á€¬ ဗွန် á€á€°á€…်á€á€¬ ဘရူ
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; á€á€°á€…်á€á€¬ ဗွန် á€á€°á€…်á€á€¬ ဘရူ နီလီ
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; á€á€° အ ဆီ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; အ ဆီ á€á€°
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; နီ á€á€°
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; နီလီ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; á€á€°á€”ီ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; နီ
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; á€á€°
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ne.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ne.txt
new file mode 100644
index 00000000000..771c007ea63
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ne.txt
@@ -0,0 +1,818 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: ne
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; सà¥à¤¨à¥à¤¦à¤°
+name ; locale; ne_AQ
+
+expectedResult; सà¥à¤¨à¥à¤¦à¤°
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; सà¥
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; रमिता
+name ; surname; पोखà¥à¤°à¥‡à¤²
+name ; locale; ne_AQ
+
+expectedResult; पोखà¥à¤°à¥‡à¤², रमिता
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; पोखà¥à¤°à¥‡à¤² रमिता
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; रमिता पोखà¥à¤°à¥‡à¤²
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; पोखà¥à¤°à¥‡à¤², र.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; पोखà¥à¤°à¥‡à¤² र.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; र. पोखà¥à¤°à¥‡à¤²
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; रमिता पो.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; पोखà¥à¤°à¥‡à¤²
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; रमिता
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; पोर
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; रपो
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; पो
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; र
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; पà¥à¤°à¥‡à¤®à¤ªà¥à¤°à¤¸à¤¾à¤¦
+name ; given2; हिमलाल
+name ; surname; वासà¥à¤¤à¥‹à¤²à¤¾
+name ; locale; ne_AQ
+
+expectedResult; वासà¥à¤¤à¥‹à¤²à¤¾, पà¥à¤°à¥‡à¤®à¤ªà¥à¤°à¤¸à¤¾à¤¦ हिमलाल
+
+parameters; sorting; long; referring; formal
+
+expectedResult; पà¥à¤°à¥‡à¤®à¤ªà¥à¤°à¤¸à¤¾à¤¦ हिमलाल वासà¥à¤¤à¥‹à¤²à¤¾
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; वासà¥à¤¤à¥‹à¤²à¤¾ पà¥à¤°à¥‡à¤®à¤ªà¥à¤°à¤¸à¤¾à¤¦ हिमलाल
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; वासà¥à¤¤à¥‹à¤²à¤¾, पà¥à¤°à¥‡à¤®à¤ªà¥à¤°à¤¸à¤¾à¤¦ हि.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; पà¥à¤°à¥‡à¤®à¤ªà¥à¤°à¤¸à¤¾à¤¦ हि. वासà¥à¤¤à¥‹à¤²à¤¾
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; वासà¥à¤¤à¥‹à¤²à¤¾ पà¥à¤°à¥‡à¤®à¤ªà¥à¤°à¤¸à¤¾à¤¦ हि.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; वासà¥à¤¤à¥‹à¤²à¤¾, पà¥à¤°à¥‡à¤®à¤ªà¥à¤°à¤¸à¤¾à¤¦
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; पà¥à¤°à¥‡à¤®à¤ªà¥à¤°à¤¸à¤¾à¤¦ वासà¥à¤¤à¥‹à¤²à¤¾
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; वासà¥à¤¤à¥‹à¤²à¤¾ पà¥à¤°à¥‡à¤®à¤ªà¥à¤°à¤¸à¤¾à¤¦
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; वासà¥à¤¤à¥‹à¤²à¤¾, पà¥à¤°à¥‡.हि.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; पà¥à¤°à¥‡.हि. वासà¥à¤¤à¥‹à¤²à¤¾
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; वासà¥à¤¤à¥‹à¤²à¤¾ पà¥à¤°à¥‡.हि.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; पà¥à¤°à¥‡à¤®à¤ªà¥à¤°à¤¸à¤¾à¤¦ वा.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; वासà¥à¤¤à¥‹à¤²à¤¾ पà¥à¤°à¥‡.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; पà¥à¤°à¥‡à¤®à¤ªà¥à¤°à¤¸à¤¾à¤¦
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; पà¥à¤°à¥‡à¤¹à¤¿à¤µà¤¾
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; वापà¥à¤°à¥‡à¤¹à¤¿
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; वासà¥à¤¤à¥‹à¤²à¤¾
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; पà¥à¤°à¥‡à¤µà¤¾
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; वापà¥à¤°à¥‡
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; पà¥à¤°à¥‡
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; वा
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; शà¥à¤°à¥€
+name ; given; बरà¥à¤Ÿà¥à¤°à¤¾à¤® विलबरफोरà¥à¤¸
+name ; given-informal; बरà¥à¤Ÿà¥€
+name ; given2; हेनरी रोबरà¥à¤Ÿ
+name ; surname-core; वà¥à¤¸à¥à¤Ÿà¤°
+name ; generation; जेआर
+name ; credentials; à¤à¤®à¤ªà¥€
+name ; locale; ne_AQ
+
+expectedResult; बरà¥à¤Ÿà¥à¤°à¤¾à¤® विलबरफोरà¥à¤¸ हेनरी रोबरà¥à¤Ÿ वà¥à¤¸à¥à¤Ÿà¤° à¤à¤®à¤ªà¥€
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; वà¥à¤¸à¥à¤Ÿà¤° बरà¥à¤Ÿà¥à¤°à¤¾à¤® विलबरफोरà¥à¤¸ हेनरी रोबरà¥à¤Ÿ à¤à¤®à¤ªà¥€
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; वà¥à¤¸à¥à¤Ÿà¤°, बरà¥à¤Ÿà¥à¤°à¤¾à¤® विलबरफोरà¥à¤¸ हेनरी रोबरà¥à¤Ÿ
+
+parameters; sorting; long; referring; formal
+
+expectedResult; बरà¥à¤Ÿà¥à¤°à¤¾à¤® विलबरफोरà¥à¤¸ हे.रो. वà¥à¤¸à¥à¤Ÿà¤° à¤à¤®à¤ªà¥€
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; वà¥à¤¸à¥à¤Ÿà¤° बरà¥à¤Ÿà¥à¤°à¤¾à¤® विलबरफोरà¥à¤¸ हे.रो. à¤à¤®à¤ªà¥€
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; वà¥à¤¸à¥à¤Ÿà¤°, बरà¥à¤Ÿà¥à¤°à¤¾à¤® विलबरफोरà¥à¤¸ हे.रो.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; वà¥à¤¸à¥à¤Ÿà¤°, ब.वि.हे.रो.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; ब.वि.हे.रो. वà¥à¤¸à¥à¤Ÿà¤°
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; वà¥à¤¸à¥à¤Ÿà¤° ब.वि.हे.रो.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; वà¥à¤¸à¥à¤Ÿà¤°, बरà¥à¤Ÿà¥€
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; बरà¥à¤Ÿà¥€ वà¥à¤¸à¥à¤Ÿà¤°
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; वà¥à¤¸à¥à¤Ÿà¤° ब.वि.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; वà¥à¤¸à¥à¤Ÿà¤° बरà¥à¤Ÿà¥€
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; शà¥à¤°à¥€ वà¥à¤¸à¥à¤Ÿà¤°
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; बरà¥à¤Ÿà¥€ वà¥.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; बरà¥à¤Ÿà¥€
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; बहेवà¥
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; वà¥à¤¬à¤¹à¥‡
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; बवà¥
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; वà¥à¤¬
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; वà¥
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; ब
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; सिनबाद
+name ; locale; ko_AQ
+
+expectedResult; सिनबाद
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; सि
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; कà¥à¤¯à¤¾à¤¥à¥€
+name ; surname; मà¥à¤²à¤°
+name ; locale; ko_AQ
+
+expectedResult; मà¥à¤²à¤°, कà¥à¤¯à¤¾à¤¥à¥€
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; कà¥à¤¯à¤¾à¤¥à¥€ मà¥à¤²à¤°
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; मà¥à¤²à¤° कà¥à¤¯à¤¾à¤¥à¥€
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; मà¥à¤²à¤°, कà¥à¤¯à¤¾.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; कà¥à¤¯à¤¾. मà¥à¤²à¤°
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; कà¥à¤¯à¤¾à¤¥à¥€ मà¥.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; मà¥à¤²à¤° कà¥à¤¯à¤¾.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; कà¥à¤¯à¤¾à¤¥à¥€
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; कà¥à¤¯à¤¾à¤®à¥
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; मà¥à¤•à¥à¤¯à¤¾
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; कà¥à¤¯à¤¾
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; मà¥à¤²à¤°
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; मà¥
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; जाजिला
+name ; given2; हारà¥à¤¨à¤¿à¤¸
+name ; surname; सà¥à¤Ÿà¥‹à¤¬à¤°
+name ; locale; ko_AQ
+
+expectedResult; सà¥à¤Ÿà¥‹à¤¬à¤°, जाजिला हारà¥à¤¨à¤¿à¤¸
+
+parameters; sorting; long; referring; formal
+
+expectedResult; जाजिला हारà¥à¤¨à¤¿à¤¸ सà¥à¤Ÿà¥‹à¤¬à¤°
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; सà¥à¤Ÿà¥‹à¤¬à¤° जाजिला हारà¥à¤¨à¤¿à¤¸
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; सà¥à¤Ÿà¥‹à¤¬à¤°, जाजिला हा.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; जाजिला हा. सà¥à¤Ÿà¥‹à¤¬à¤°
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; सà¥à¤Ÿà¥‹à¤¬à¤° जाजिला हा.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; सà¥à¤Ÿà¥‹à¤¬à¤°, जा.हा.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; सà¥à¤Ÿà¥‹à¤¬à¤°, जाजिला
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; जा.हा. सà¥à¤Ÿà¥‹à¤¬à¤°
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; जाजिला सà¥à¤Ÿà¥‹à¤¬à¤°
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; सà¥à¤Ÿà¥‹à¤¬à¤° जा.हा.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; सà¥à¤Ÿà¥‹à¤¬à¤° जाजिला
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; जाजिला सà¥à¤Ÿà¥‹.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; सà¥à¤Ÿà¥‹à¤¬à¤° जा.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; जाहासà¥à¤Ÿà¥‹
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; सà¥à¤Ÿà¥‹à¤œà¤¾à¤¹à¤¾
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; जाजिला
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; जासà¥à¤Ÿà¥‹
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; सà¥à¤Ÿà¥‹à¤œà¤¾
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; सà¥à¤Ÿà¥‹à¤¬à¤°
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; सà¥à¤Ÿà¥‹
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; जा
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; पà¥à¤°à¥‹à¤«à¥‡à¤¸à¤° डाकà¥à¤Ÿà¤°
+name ; given; à¤à¤¡à¤¾ करà¥à¤¨à¥‡à¤²à¤¿à¤¯à¤¾
+name ; given-informal; नीले
+name ; given2; सिजर मारà¥à¤Ÿà¤¿à¤¨
+name ; surname-prefix; भोन
+name ; surname-core; बà¥à¤°à¥à¤¹à¤²
+name ; surname2; गोनà¥à¤œà¤¾à¤²à¥‡à¤œ डोमिङà¥à¤—ोज
+name ; generation; जेनेरेसन
+name ; credentials; à¤à¤®à¤¡à¥€ डिडिà¤à¤¸
+name ; locale; ko_AQ
+
+expectedResult; à¤à¤¡à¤¾ करà¥à¤¨à¥‡à¤²à¤¿à¤¯à¤¾ सिजर मारà¥à¤Ÿà¤¿à¤¨ भोन बà¥à¤°à¥à¤¹à¤² à¤à¤®à¤¡à¥€ डिडिà¤à¤¸
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; भोन बà¥à¤°à¥à¤¹à¤² à¤à¤¡à¤¾ करà¥à¤¨à¥‡à¤²à¤¿à¤¯à¤¾ सिजर मारà¥à¤Ÿà¤¿à¤¨ à¤à¤®à¤¡à¥€ डिडिà¤à¤¸
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; à¤à¤¡à¤¾ करà¥à¤¨à¥‡à¤²à¤¿à¤¯à¤¾ सि.मा. भोन बà¥à¤°à¥à¤¹à¤² à¤à¤®à¤¡à¥€ डिडिà¤à¤¸
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; भोन बà¥à¤°à¥à¤¹à¤² à¤à¤¡à¤¾ करà¥à¤¨à¥‡à¤²à¤¿à¤¯à¤¾ सि.मा. à¤à¤®à¤¡à¥€ डिडिà¤à¤¸
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; बà¥à¤°à¥à¤¹à¤², à¤à¤¡à¤¾ करà¥à¤¨à¥‡à¤²à¤¿à¤¯à¤¾ सिजर मारà¥à¤Ÿà¤¿à¤¨ भोन
+
+parameters; sorting; long; referring; formal
+
+expectedResult; बà¥à¤°à¥à¤¹à¤², à¤à¤¡à¤¾ करà¥à¤¨à¥‡à¤²à¤¿à¤¯à¤¾ सि.मा. भोन
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; पà¥à¤°à¥‹à¤«à¥‡à¤¸à¤° डाकà¥à¤Ÿà¤° भोन बà¥à¤°à¥à¤¹à¤²
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; बà¥à¤°à¥à¤¹à¤², à¤.क.सि.मा. भोन
+
+parameters; sorting; short; referring; formal
+
+expectedResult; à¤.क.सि.मा. भोन बà¥à¤°à¥à¤¹à¤²
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; भोन बà¥à¤°à¥à¤¹à¤² à¤.क.सि.मा.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; भोन बà¥à¤°à¥à¤¹à¤², नीले
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; नीले भोन बà¥à¤°à¥à¤¹à¤²
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; भोन बà¥à¤°à¥à¤¹à¤² à¤.क.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; भोन बà¥à¤°à¥à¤¹à¤² नीले
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; नीले भो.बà¥à¤°à¥.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; à¤à¤¸à¤¿à¤­à¥‹
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; भोà¤à¤¸à¤¿
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; नीभो
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; नीले
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; भोनी
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; नी
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; भो
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/nl.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/nl.txt
new file mode 100644
index 00000000000..dcb197e3943
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/nl.txt
@@ -0,0 +1,819 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: nl
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Fatima
+name ; locale; nl_AQ
+
+expectedResult; Fatima
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; F
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Irene
+name ; surname; Bakker
+name ; locale; nl_AQ
+
+expectedResult; Bakker, Irene
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Bakker Irene
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Irene Bakker
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Bakker, I.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Bakker I.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; I. Bakker
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Irene B.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Bakker
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Irene
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; BI
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; IB
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; B
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; I
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; Heidi
+name ; given2; Johannes
+name ; surname; Willemse
+name ; locale; nl_AQ
+
+expectedResult; Willemse, Heidi Johannes
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Heidi Johannes Willemse
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Willemse Heidi Johannes
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Willemse, Heidi J.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Heidi J. Willemse
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Willemse Heidi J.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Willemse, Heidi
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Heidi Willemse
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Willemse Heidi
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Willemse, H.J.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; H.J. Willemse
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Willemse H.J.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Willemse H.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Heidi W.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Willemse
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Heidi
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; HJW
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; WHJ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; HW
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; WH
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; H
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; W
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; dhr.
+name ; given; Bertus Wevers
+name ; given-informal; Bert
+name ; given2; Harry Robert
+name ; surname-prefix; de
+name ; surname-core; Jong
+name ; generation; jr.
+name ; credentials; mp
+name ; locale; nl_AQ
+
+expectedResult; de Jong dhr. Bertus Wevers Harry Robert jr., mp
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; dhr. Bertus Wevers Harry Robert de Jong jr. mp
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Jong, Bertus Wevers Harry Robert de
+
+parameters; sorting; long; referring; formal
+
+expectedResult; de Jong Bertus Wevers H.R. jr., mp
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Bertus Wevers H.R. de Jong jr. mp
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Jong, Bertus Wevers H.R. de
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Jong, B.W.H.R. de
+
+parameters; sorting; short; referring; formal
+
+expectedResult; B.W.H.R. de Jong
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; de Jong B.W.H.R.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; de Jong, Bert
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Bert de Jong
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; de Jong B.W.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; de Jong Bert
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; dhr. de Jong
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Bert d.J.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Bert
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; BHD
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; DBH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; BD
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; DB
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; B
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; D
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; Sinbad
+name ; locale; ja_AQ
+
+expectedResult; Sinbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Käthe
+name ; surname; Müller
+name ; locale; ja_AQ
+
+expectedResult; Müller, Käthe
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Käthe Müller
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Müller Käthe
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Müller, K.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; K. Müller
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Müller K.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Käthe M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Müller
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Käthe
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Zäzilia
+name ; given2; Hamish
+name ; surname; Stöber
+name ; locale; ja_AQ
+
+expectedResult; Stöber, Zäzilia Hamish
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Stöber Zäzilia Hamish
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Zäzilia Hamish Stöber
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Stöber, Zäzilia H.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Stöber Zäzilia H.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Zäzilia H. Stöber
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Stöber, Zäzilia
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Stöber Zäzilia
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Zäzilia Stöber
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Stöber, Z.H.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Stöber Z.H.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Z.H. Stöber
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Zäzilia S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Stöber Z.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Zäzilia
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Stöber
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; SZH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ZHS
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; SZ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ZS
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Z
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; mevrouw
+name ; given; Ada Cornelia
+name ; given-informal; Neele
+name ; given2; César Martín
+name ; surname-prefix; von
+name ; surname-core; Brühl
+name ; surname2; González Domingo
+name ; generation; jr.
+name ; credentials; PhD
+name ; locale; ja_AQ
+
+expectedResult; von Brühl mevrouw Ada Cornelia César Martín jr., PhD
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; mevrouw Ada Cornelia César Martín von Brühl jr. PhD
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Brühl, Ada Cornelia César Martín von
+
+parameters; sorting; long; referring; formal
+
+expectedResult; von Brühl Ada Cornelia C.M. jr., PhD
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Ada Cornelia C.M. von Brühl jr. PhD
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Brühl, Ada Cornelia C.M. von
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Brühl, A.C.C.M. von
+
+parameters; sorting; short; referring; formal
+
+expectedResult; A.C.C.M. von Brühl
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; von Brühl A.C.C.M.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; mevrouw von Brühl
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; von Brühl, Neele
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Neele von Brühl
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; von Brühl Neele
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; von Brühl A.C.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Neele v.B.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Neele
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ACV
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; VAC
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; NV
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VN
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; N
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/nn.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/nn.txt
new file mode 100644
index 00000000000..0f3ffeb6308
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/nn.txt
@@ -0,0 +1,790 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: nn
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Harald
+name ; locale; nn_AQ
+
+expectedResult; Harald
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; H
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Irene
+name ; surname; Andersen
+name ; locale; nn_AQ
+
+expectedResult; Andersen, Irene
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Andersen Irene
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Irene Andersen
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Andersen I.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; I. Andersen
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Andersen
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Irene A.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Irene
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; AI
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; IA
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; I
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; Anne Berit
+name ; given2; Bernhard
+name ; surname; Nilsen
+name ; locale; nn_AQ
+
+expectedResult; Nilsen, Anne Berit Bernhard
+
+parameters; sorting; long; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; Anne Berit Bernhard Nilsen
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Nilsen Anne Berit Bernhard
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Nilsen, Anne Berit B.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Nilsen Anne Berit B.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Nilsen, Anne Berit
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Anne Berit Nilsen
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Nilsen Anne Berit
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; A. B. B. Nilsen
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Nilsen A. B. B.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Anne Berit N.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Nilsen A. B.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Anne Berit
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Nilsen
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ABN
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; NAB
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; AN
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; NA
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; N
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; hr.
+name ; given; Gregers Werle
+name ; given-informal; Bertram
+name ; given2; Marve Almar
+name ; surname-prefix; von
+name ; surname-core; Fleksnes
+name ; surname2; Hansen
+name ; generation; jr.
+name ; credentials; st.repr.
+name ; locale; nn_AQ
+
+expectedResult; st.repr. Gregers Werle Marve Almar von Fleksnes jr.
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; st.repr. von Fleksnes Gregers Werle Marve Almar
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; st.repr. von Fleksnes Gregers Werle M. A. jr.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Fleksnes, Gregers Werle Marve Almar von
+
+parameters; sorting; long; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; Fleksnes, Gregers Werle M. A. von
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; G. W. M. A. von Fleksnes
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; von Fleksnes G. W. M. A.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; von Fleksnes, Bertram
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Bertram von Fleksnes
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; von Fleksnes Bertram
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; von Fleksnes G. W.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; hr. von Fleksnes
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Bertram v. F.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Bertram
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; GMV
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; VGM
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; BV
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VB
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; B
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; Sinbad
+name ; locale; ko_AQ
+
+expectedResult; Sinbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Käthe
+name ; surname; Müller
+name ; locale; ko_AQ
+
+expectedResult; Müller, Käthe
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Käthe Müller
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Müller Käthe
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; K. Müller
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Müller K.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Käthe M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Müller
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Käthe
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Zelda
+name ; given2; Hamish
+name ; surname; Støver
+name ; locale; ko_AQ
+
+expectedResult; Støver, Zelda Hamish
+
+parameters; sorting; long; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; Støver Zelda Hamish
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Zelda Hamish Støver
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Støver, Zelda H.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Støver Zelda H.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Støver, Zelda
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Støver Z. H.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Støver Zelda
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Z. H. Støver
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Zelda Støver
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Støver Z.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Zelda S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Støver
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Zelda
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; SZH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ZHS
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; SZ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ZS
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Z
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; prof. dr.
+name ; given; Inger Marie
+name ; given-informal; Inger
+name ; given2; Adele Synnøve
+name ; surname-prefix; von
+name ; surname-core; Wolf
+name ; surname2; Meyer Hansen
+name ; generation; jr.
+name ; credentials; m.d ph.d.
+name ; locale; ko_AQ
+
+expectedResult; m.d ph.d. Inger Marie Adele Synnøve von Wolf jr.
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; m.d ph.d. von Wolf Inger Marie Adele Synnøve
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; m.d ph.d. von Wolf Inger Marie A. S. jr.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Wolf, Inger Marie Adele Synnøve von
+
+parameters; sorting; long; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; Wolf, Inger Marie A. S. von
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; I. M. A. S. von Wolf
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; von Wolf I. M. A. S.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; prof. dr. von Wolf
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; von Wolf, Inger
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Inger von Wolf
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; von Wolf I. M.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; von Wolf Inger
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Inger v. W.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Inger
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; IAV
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; VIA
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; IV
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VI
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; I
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/no.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/no.txt
new file mode 100644
index 00000000000..86734e65359
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/no.txt
@@ -0,0 +1,790 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: no
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Harald
+name ; locale; no_AQ
+
+expectedResult; Harald
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; H
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Irene
+name ; surname; Andersen
+name ; locale; no_AQ
+
+expectedResult; Andersen, Irene
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Andersen Irene
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Irene Andersen
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Andersen I.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; I. Andersen
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Andersen
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Irene A.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Irene
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; AI
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; IA
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; I
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; Anne Berit
+name ; given2; Bernhard
+name ; surname; Nilsen
+name ; locale; no_AQ
+
+expectedResult; Nilsen, Anne Berit Bernhard
+
+parameters; sorting; long; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; Anne Berit Bernhard Nilsen
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Nilsen Anne Berit Bernhard
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Nilsen, Anne Berit B.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Nilsen Anne Berit B.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Nilsen, Anne Berit
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Anne Berit Nilsen
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Nilsen Anne Berit
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; A. B. B. Nilsen
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Nilsen A. B. B.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Anne Berit N.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Nilsen A. B.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Anne Berit
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Nilsen
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ABN
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; NAB
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; AN
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; NA
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; N
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; hr.
+name ; given; Gregers Werle
+name ; given-informal; Bertram
+name ; given2; Marve Almar
+name ; surname-prefix; von
+name ; surname-core; Fleksnes
+name ; surname2; Hansen
+name ; generation; jr.
+name ; credentials; st.repr.
+name ; locale; no_AQ
+
+expectedResult; st.repr. Gregers Werle Marve Almar von Fleksnes jr.
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; st.repr. von Fleksnes Gregers Werle Marve Almar
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; st.repr. von Fleksnes Gregers Werle M. A. jr.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Fleksnes, Gregers Werle Marve Almar von
+
+parameters; sorting; long; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; Fleksnes, Gregers Werle M. A. von
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; G. W. M. A. von Fleksnes
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; von Fleksnes G. W. M. A.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; von Fleksnes, Bertram
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Bertram von Fleksnes
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; von Fleksnes Bertram
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; von Fleksnes G. W.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; hr. von Fleksnes
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Bertram v. F.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Bertram
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; GMV
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; VGM
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; BV
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VB
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; B
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; Sinbad
+name ; locale; ko_AQ
+
+expectedResult; Sinbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Käthe
+name ; surname; Müller
+name ; locale; ko_AQ
+
+expectedResult; Müller, Käthe
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Käthe Müller
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Müller Käthe
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; K. Müller
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Müller K.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Käthe M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Müller
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Käthe
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Zelda
+name ; given2; Hamish
+name ; surname; Støver
+name ; locale; ko_AQ
+
+expectedResult; Støver, Zelda Hamish
+
+parameters; sorting; long; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; Støver Zelda Hamish
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Zelda Hamish Støver
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Støver, Zelda H.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Støver Zelda H.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Støver, Zelda
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Støver Z. H.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Støver Zelda
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Z. H. Støver
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Zelda Støver
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Støver Z.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Zelda S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Støver
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Zelda
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; SZH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ZHS
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; SZ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ZS
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Z
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; prof. dr.
+name ; given; Inger Marie
+name ; given-informal; Inger
+name ; given2; Adele Synnøve
+name ; surname-prefix; von
+name ; surname-core; Wolf
+name ; surname2; Meyer Hansen
+name ; generation; jr.
+name ; credentials; m.d ph.d.
+name ; locale; ko_AQ
+
+expectedResult; m.d ph.d. Inger Marie Adele Synnøve von Wolf jr.
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; m.d ph.d. von Wolf Inger Marie Adele Synnøve
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; m.d ph.d. von Wolf Inger Marie A. S. jr.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Wolf, Inger Marie Adele Synnøve von
+
+parameters; sorting; long; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; Wolf, Inger Marie A. S. von
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; I. M. A. S. von Wolf
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; von Wolf I. M. A. S.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; prof. dr. von Wolf
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; von Wolf, Inger
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Inger von Wolf
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; von Wolf I. M.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; von Wolf Inger
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Inger v. W.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Inger
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; IAV
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; VIA
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; IV
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VI
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; I
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/or.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/or.txt
new file mode 100644
index 00000000000..fc4c7931ebe
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/or.txt
@@ -0,0 +1,812 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: or
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; ସିନବାଦà­
+name ; locale; or_AQ
+
+expectedResult; ସିନବାଦà­
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ସି
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; ଆଇରେନà­
+name ; surname; ଆଡଲରà­
+name ; locale; or_AQ
+
+expectedResult; ଆଡଲରà­, ଆଇରେନà­
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; ଆଇରେନୠଆଡଲରà­
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; ଆଡଲରୠଆଇରେନà­
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; ଆଇରେନୠଆ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ଆଡଲରà­, ଆ.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; ଆ. ଆଡଲରà­
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ଆଡଲରୠଆ.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ଆଇରେନà­
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ଆଡଲରà­
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ଆଆ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ଆ
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; ଜନà­
+name ; given2; ହାମିଶ
+name ; surname; ୱାଟସନà­
+name ; locale; or_AQ
+
+expectedResult; ୱାଟସନà­, ଜନୠହାମିଶ
+
+parameters; sorting; long; referring; formal
+
+expectedResult; ଜନୠହାମିଶ ୱାଟସନà­
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; ୱାଟସନୠଜନୠହାମିଶ
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; ୱାଟସନà­, ଜନୠହା.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; ଜନୠହା. ୱାଟସନà­
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; ୱାଟସନୠଜନୠହା.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; ୱାଟସନà­, ଜ. ହା.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; ଜ. ହା. ୱାଟସନà­
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ୱାଟସନୠଜ. ହା.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; ୱାଟସନà­, ଜନà­
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; ଜନୠୱାଟସନà­
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; ୱାଟସନୠଜନà­
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; ୱାଟସନୠଜ.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ଜନୠୱା.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ୱାଟସନà­
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ଜହାୱା
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; ୱାଜହା
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ଜନà­
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ଜୱା
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; ୱାଜ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ୱା
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; ଜ
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeFull
+name ; title; ଶà­à¬°à­€à¬¯à­à¬•à­à¬¤
+name ; given; ବରà­à¬Ÿà­à¬°à¬¾à¬® ୱିଲବରà­à¬«à­‹à¬°à­à¬¸
+name ; given-informal; ବରà­à¬Ÿà¬¿
+name ; given2; ହେନେରୀ ରୋବରà­à¬Ÿ
+name ; surname-core; ୱୋଷà­à¬Ÿà¬°
+name ; generation; ଜେଆରà­
+name ; credentials; à¬à¬®à¬ªà¬¿
+name ; locale; or_AQ
+
+expectedResult; ବରà­à¬Ÿà­à¬°à¬¾à¬® ୱିଲବରà­à¬«à­‹à¬°à­à¬¸ ହେନେରୀ ରୋବରà­à¬Ÿ ୱୋଷà­à¬Ÿà¬° à¬à¬®à¬ªà¬¿
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; ୱୋଷà­à¬Ÿà¬° ବରà­à¬Ÿà­à¬°à¬¾à¬® ୱିଲବରà­à¬«à­‹à¬°à­à¬¸ ହେନେରୀ ରୋବରà­à¬Ÿ à¬à¬®à¬ªà¬¿
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; ୱୋଷà­à¬Ÿà¬°, ବରà­à¬Ÿà­à¬°à¬¾à¬® ୱିଲବରà­à¬«à­‹à¬°à­à¬¸ ହେନେରୀ ରୋବରà­à¬Ÿ
+
+parameters; sorting; long; referring; formal
+
+expectedResult; ବରà­à¬Ÿà­à¬°à¬¾à¬® ୱିଲବରà­à¬«à­‹à¬°à­à¬¸ ହେ. ରୋ. ୱୋଷà­à¬Ÿà¬° à¬à¬®à¬ªà¬¿
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; ୱୋଷà­à¬Ÿà¬° ବରà­à¬Ÿà­à¬°à¬¾à¬® ୱିଲବରà­à¬«à­‹à¬°à­à¬¸ ହେ. ରୋ. à¬à¬®à¬ªà¬¿
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; ୱୋଷà­à¬Ÿà¬°, ବରà­à¬Ÿà­à¬°à¬¾à¬® ୱିଲବରà­à¬«à­‹à¬°à­à¬¸ ହେ. ରୋ.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; ୱୋଷà­à¬Ÿà¬°, ବ. ୱି. ହେ. ରୋ.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; ବ. ୱି. ହେ. ରୋ. ୱୋଷà­à¬Ÿà¬°
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ୱୋଷà­à¬Ÿà¬° ବ. ୱି. ହେ. ରୋ.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; ଶà­à¬°à­€à¬¯à­à¬•à­à¬¤ ୱୋଷà­à¬Ÿà¬°
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ୱୋଷà­à¬Ÿà¬° ବ. ୱି.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ୱୋଷà­à¬Ÿà¬°, ବରà­à¬Ÿà¬¿
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; ବରà­à¬Ÿà¬¿ ୱୋଷà­à¬Ÿà¬°
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; ୱୋଷà­à¬Ÿà¬° ବରà­à¬Ÿà¬¿
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; ବରà­à¬Ÿà¬¿ ୱୋ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ବରà­à¬Ÿà¬¿
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ବହେୱୋ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; ୱୋବହେ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ବୱୋ
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; ୱୋବ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ୱୋ
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; ବ
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; ସିନବାଦ
+name ; locale; ko_AQ
+
+expectedResult; ସିନବାଦ
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ସି
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; କାଥେ
+name ; surname; ମà­à¬²à­‡à¬°à­
+name ; locale; ko_AQ
+
+expectedResult; ମà­à¬²à­‡à¬°à­, କାଥେ
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; କାଥେ ମà­à¬²à­‡à¬°à­
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; ମà­à¬²à­‡à¬°à­ କାଥେ
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; ମà­à¬²à­‡à¬°à­, କା.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; କା. ମà­à¬²à­‡à¬°à­
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ମà­à¬²à­‡à¬°à­ କା.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; କାଥେ ମà­.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ମà­à¬²à­‡à¬°à­
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; କାଥେ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; କାମà­
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; ମà­à¬•à¬¾
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; କା
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; ମà­
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; ଜେଆରà­
+name ; given2; ହାମିଶ
+name ; surname; ଷà­à¬Ÿà­‹à¬¬à¬°
+name ; locale; ko_AQ
+
+expectedResult; ଷà­à¬Ÿà­‹à¬¬à¬°, ଜେଆରୠହାମିଶ
+
+parameters; sorting; long; referring; formal
+
+expectedResult; ଜେଆରୠହାମିଶ ଷà­à¬Ÿà­‹à¬¬à¬°
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; ଷà­à¬Ÿà­‹à¬¬à¬° ଜେଆରୠହାମିଶ
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; ଷà­à¬Ÿà­‹à¬¬à¬°, ଜେଆରୠହା.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; ଜେଆରୠହା. ଷà­à¬Ÿà­‹à¬¬à¬°
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; ଷà­à¬Ÿà­‹à¬¬à¬° ଜେଆରୠହା.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; ଷà­à¬Ÿà­‹à¬¬à¬°, ଜେ. ହା.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; ଜେ. ହା. ଷà­à¬Ÿà­‹à¬¬à¬°
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ଷà­à¬Ÿà­‹à¬¬à¬° ଜେ. ହା.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; ଷà­à¬Ÿà­‹à¬¬à¬°, ଜେଆରà­
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; ଜେଆରୠଷà­à¬Ÿà­‹à¬¬à¬°
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; ଷà­à¬Ÿà­‹à¬¬à¬° ଜେଆରà­
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; ଜେଆରୠଷà­à¬Ÿà­‹.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ଷà­à¬Ÿà­‹à¬¬à¬° ଜେ.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ଜେହାଷà­à¬Ÿà­‹
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; ଷà­à¬Ÿà­‹à¬œà­‡à¬¹à¬¾
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ଜେଷà­à¬Ÿà­‹
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; ଷà­à¬Ÿà­‹à¬œà­‡
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ଷà­à¬Ÿà­‹à¬¬à¬°
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ଜେଆରà­
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ଷà­à¬Ÿà­‹
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; ଜେ
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; ପà­à¬°à¬«à­‡à¬¸à¬° ଡ.
+name ; given; ଆଡା କରà­à¬£à­à¬£à­‡à¬²à¬¿à¬†
+name ; given-informal; ନୋà¬à¬²à­
+name ; given2; ଇଭା ସୋଫିଆ
+name ; surname-prefix; ୱାନୠଡେନà­
+name ; surname-core; ୱୋଲà­à¬«
+name ; surname2; ବେକରୠସà­à¬®à¬¿à¬¥à­
+name ; generation; ଜେଆରà­
+name ; credentials; à¬à¬®.ଡି.ପିà¬à¬š.ଡି
+name ; locale; ko_AQ
+
+expectedResult; ଆଡା କରà­à¬£à­à¬£à­‡à¬²à¬¿à¬† ଇଭା ସୋଫିଆ ୱାନୠଡେନୠୱୋଲà­à¬« à¬à¬®.ଡି.ପିà¬à¬š.ଡି
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; ୱାନୠଡେନୠୱୋଲà­à¬« ଆଡା କରà­à¬£à­à¬£à­‡à¬²à¬¿à¬† ଇଭା ସୋଫିଆ à¬à¬®.ଡି.ପିà¬à¬š.ଡି
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; ଆଡା କରà­à¬£à­à¬£à­‡à¬²à¬¿à¬† ଇ. ସୋ. ୱାନୠଡେନୠୱୋଲà­à¬« à¬à¬®.ଡି.ପିà¬à¬š.ଡି
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; ୱାନୠଡେନୠୱୋଲà­à¬« ଆଡା କରà­à¬£à­à¬£à­‡à¬²à¬¿à¬† ଇ. ସୋ. à¬à¬®.ଡି.ପିà¬à¬š.ଡି
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; ୱୋଲà­à¬«, ଆଡା କରà­à¬£à­à¬£à­‡à¬²à¬¿à¬† ଇଭା ସୋଫିଆ ୱାନୠଡେନà­
+
+parameters; sorting; long; referring; formal
+
+expectedResult; ୱୋଲà­à¬«, ଆଡା କରà­à¬£à­à¬£à­‡à¬²à¬¿à¬† ଇ. ସୋ. ୱାନୠଡେନà­
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; ୱୋଲà­à¬«, ଆ. କ. ଇ. ସୋ. ୱାନୠଡେନà­
+
+parameters; sorting; short; referring; formal
+
+expectedResult; ଆ. କ. ଇ. ସୋ. ୱାନୠଡେନୠୱୋଲà­à¬«
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ୱାନୠଡେନୠୱୋଲà­à¬« ଆ. କ. ଇ. ସୋ.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; ପà­à¬°à¬«à­‡à¬¸à¬° ଡ. ୱାନୠଡେନୠୱୋଲà­à¬«
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ୱାନୠଡେନୠୱୋଲà­à¬«, ନୋà¬à¬²à­
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; ନୋà¬à¬²à­ ୱାନୠଡେନୠୱୋଲà­à¬«
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; ୱାନୠଡେନୠୱୋଲà­à¬« ଆ. କ.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ୱାନୠଡେନୠୱୋଲà­à¬« ନୋà¬à¬²à­
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; ନୋà¬à¬²à­ ୱା. ଡେ. ୱୋ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ନୋà¬à¬²à­
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ଆଇୱା
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; ନୋୱା
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; ୱାଆଇ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ୱାନୋ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ନୋ
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; ୱା
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/pa.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/pa.txt
new file mode 100644
index 00000000000..55ce96617f3
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/pa.txt
@@ -0,0 +1,830 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: pa
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; ਜ਼ੈਨਡਿਆ
+name ; locale; pa_AQ
+
+expectedResult; ਜ਼ੈਨਡਿਆ
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ਜ਼ੈ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; ਆਰੀਨ
+name ; surname; à¨à¨¡à¨²à¨°
+name ; locale; pa_AQ
+
+expectedResult; à¨à¨¡à¨²à¨°, ਆਰੀਨ
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; ਆਰੀਨ à¨à¨¡à¨²à¨°
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; à¨à¨¡à¨²à¨° ਆਰੀਨ
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; à¨à¨¡à¨²à¨°, ਆ.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; ਆ. à¨à¨¡à¨²à¨°
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ਆਰੀਨ à¨.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; à¨à¨¡à¨²à¨° ਆ.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ਆਰੀਨ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; à¨à¨¡à¨²à¨°
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ਆ.à¨
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; à¨.ਆ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ਆà¨
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; à¨à¨†
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ਆ
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; à¨
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeGGS
+name ; given; ਜੌਨ
+name ; given2; ਹਾਮਿਸ਼
+name ; surname; ਵਾਟਸਨ
+name ; locale; pa_AQ
+
+expectedResult; ਵਾਟਸਨ, ਜੌਨ ਹਾਮਿਸ਼
+
+parameters; sorting; long; referring; formal
+
+expectedResult; ਜੌਨ ਹਾਮਿਸ਼ ਵਾਟਸਨ
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; ਵਾਟਸਨ ਜੌਨ ਹਾਮਿਸ਼
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; ਵਾਟਸਨ, ਜੌ. ਹਾ.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; ਵਾਟਸਨ, ਜੌਨ ਹਾ.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; ਜੌ. ਹਾ. ਵਾਟਸਨ
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ਜੌਨ ਹਾ. ਵਾਟਸਨ
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; ਵਾਟਸਨ ਜੌ. ਹਾ.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; ਵਾਟਸਨ ਜੌਨ ਹਾ.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; ਵਾਟਸਨ, ਜੌਨ
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; ਜੌਨ ਵਾਟਸਨ
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; ਵਾਟਸਨ ਜੌ.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ਵਾਟਸਨ ਜੌਨ
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; ਜੌ.ਹਾ.ਵਾ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; ਜੌਨ ਵਾ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ਜੌਹਾਵਾ
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; ਵਾਜੌਹਾ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ਵਾ.ਜੌ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ਵਾਟਸਨ
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ਜੌਨ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ਜੌ
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; ਵਾ
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; ਸ਼à©à¨°à©€
+name ; given; ਬਰਟਰਮ ਵਿਲਬਰਫ਼ੋਰਸ
+name ; given-informal; ਬਰਟੀ
+name ; given2; ਹੈਨਰੀ ਰਾਬਰਟ
+name ; surname-core; ਵੂਸਟਰ
+name ; generation; ਜੂ.
+name ; credentials; à¨à¨®.ਪੀ.
+name ; locale; pa_AQ
+
+expectedResult; ਸ਼à©à¨°à©€ ਬਰਟਰਮ ਵਿਲਬਰਫ਼ੋਰਸ ਹੈਨਰੀ ਰਾਬਰਟ ਵੂਸਟਰ à¨à¨®.ਪੀ.
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; ਵੂਸਟਰ ਬਰਟਰਮ ਵਿਲਬਰਫ਼ੋਰਸ ਹੈਨਰੀ ਰਾਬਰਟ à¨à¨®.ਪੀ.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; ਬਰਟਰਮ ਵਿਲਬਰਫ਼ੋਰਸ ਹੈ. ਰਾ. ਵੂਸਟਰ à¨à¨®.ਪੀ.
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; ਵੂਸਟਰ ਬਰਟਰਮ ਵਿਲਬਰਫ਼ੋਰਸ ਹੈ. ਰਾ. à¨à¨®.ਪੀ.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; ਵੂਸਟਰ, ਬਰਟਰਮ ਵਿਲਬਰਫ਼ੋਰਸ ਹੈਨਰੀ ਰਾਬਰਟ
+
+parameters; sorting; long; referring; formal
+
+expectedResult; ਵੂਸਟਰ, ਬਰਟਰਮ ਵਿਲਬਰਫ਼ੋਰਸ ਹੈ. ਰਾ.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; ਵੂਸਟਰ, ਬ. ਵਿ. ਹੈ. ਰਾ.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; ਬ. ਵਿ. ਹੈ. ਰਾ. ਵੂਸਟਰ
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ਵੂਸਟਰ ਬ. ਵਿ. ਹੈ. ਰਾ.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; ਵੂਸਟਰ ਬ. ਵਿ.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ਸ਼à©à¨°à©€ ਵੂਸਟਰ
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ਵੂਸਟਰ, ਬਰਟੀ
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; ਬਰਟੀ ਵੂਸਟਰ
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; ਵੂਸਟਰ ਬਰਟੀ
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; ਬਰਟੀ ਵੂ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ਬ.ਹੈ.ਵੂ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; ਬਹੈਵੂ
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; ਵੂਬਹੈ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ਬਰਟੀ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ਵੂ.ਬ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ਵੂ
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; ਬ
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; ਸਿੰਨਬੈਡ
+name ; locale; ko_AQ
+
+expectedResult; ਸਿੰਨਬੈਡ
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ਸਿੰ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; ਕੈਥੀ
+name ; surname; ਮੂਲਰ
+name ; locale; ko_AQ
+
+expectedResult; ਮੂਲਰ, ਕੈਥੀ
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; ਕੈਥੀ ਮੂਲਰ
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; ਮੂਲਰ ਕੈਥੀ
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; ਮੂਲਰ, ਕੈ.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; ਕੈ. ਮੂਲਰ
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ਕੈਥੀ ਮੂ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ਮੂਲਰ ਕੈ.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ਕੈ.ਮੂ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; ਮੂ.ਕੈ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ਕੈਥੀ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ਕੈਮੂ
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; ਮੂਕੈ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ਮੂਲਰ
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ਕੈ
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; ਮੂ
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; ਜ਼ਜ਼ਿਲੀਆ
+name ; given2; ਹੇਮਿਸ਼
+name ; surname; ਸਟੋਬਰ
+name ; locale; ko_AQ
+
+expectedResult; ਸਟੋਬਰ, ਜ਼ਜ਼ਿਲੀਆ ਹੇਮਿਸ਼
+
+parameters; sorting; long; referring; formal
+
+expectedResult; ਸਟੋਬਰ ਜ਼ਜ਼ਿਲੀਆ ਹੇਮਿਸ਼
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; ਜ਼ਜ਼ਿਲੀਆ ਹੇਮਿਸ਼ ਸਟੋਬਰ
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; ਸਟੋਬਰ, ਜ਼ਜ਼ਿਲੀਆ ਹੇ.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; ਸਟੋਬਰ ਜ਼ਜ਼ਿਲੀਆ ਹੇ.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; ਜ਼ਜ਼ਿਲੀਆ ਹੇ. ਸਟੋਬਰ
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; ਸਟੋਬਰ, ਜ਼ਜ਼ਿਲੀਆ
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; ਸਟੋਬਰ ਜ਼ਜ਼ਿਲੀਆ
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; ਸਟੋਬਰ, ਜ਼. ਹੇ.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; ਜ਼ਜ਼ਿਲੀਆ ਸਟੋਬਰ
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; ਸਟੋਬਰ ਜ਼. ਹੇ.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; ਜ਼. ਹੇ. ਸਟੋਬਰ
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ਜ਼ਜ਼ਿਲੀਆ ਸ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ਸਟੋਬਰ ਜ਼.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ਜ਼ਜ਼ਿਲੀਆ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ਜ਼.ਹੇ.ਸ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; ਸਜ਼ਹੇ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ਸਟੋਬਰ
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ਜ਼ਹੇਸ
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; ਸ.ਜ਼
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ਜ਼
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; ਸ
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignFull
+name ; title; ਪà©à¨°à©‹. ਡਾ.
+name ; given; à¨à¨¡à¨¾ ਕੋਰਨੇਲੀਆ
+name ; given-informal; ਨੀਲ
+name ; given2; ਈਵਾ ਸੋਫ਼ੀਆ
+name ; surname-prefix; ਵੈਨ ਡੇਨ
+name ; surname-core; ਵੌਲਫ਼
+name ; surname2; ਬੇਕਰ ਸਮਿੱਥ
+name ; generation; ਜੂ.
+name ; credentials; à¨à©±à¨®.ਡੀ. ਡੀ.ਡੀ.à¨à©±à¨¸.
+name ; locale; ko_AQ
+
+expectedResult; ਪà©à¨°à©‹. ਡਾ. à¨à¨¡à¨¾ ਕੋਰਨੇਲੀਆ ਈਵਾ ਸੋਫ਼ੀਆ ਵੈਨ ਡੇਨ ਵੌਲਫ਼ ਬੇਕਰ ਸਮਿੱਥ à¨à©±à¨®.ਡੀ. ਡੀ.ਡੀ.à¨à©±à¨¸.
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; ਵੈਨ ਡੇਨ ਵੌਲਫ਼ à¨à¨¡à¨¾ ਕੋਰਨੇਲੀਆ ਈਵਾ ਸੋਫ਼ੀਆ à¨à©±à¨®.ਡੀ. ਡੀ.ਡੀ.à¨à©±à¨¸.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; à¨à¨¡à¨¾ ਕੋਰਨੇਲੀਆ ਈ. ਸੋ. ਵੈਨ ਡੇਨ ਵੌਲਫ਼ à¨à©±à¨®.ਡੀ. ਡੀ.ਡੀ.à¨à©±à¨¸.
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; ਵੈਨ ਡੇਨ ਵੌਲਫ਼ à¨à¨¡à¨¾ ਕੋਰਨੇਲੀਆ ਈ. ਸੋ. à¨à©±à¨®.ਡੀ. ਡੀ.ਡੀ.à¨à©±à¨¸.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; ਵੌਲਫ਼, à¨à¨¡à¨¾ ਕੋਰਨੇਲੀਆ ਈਵਾ ਸੋਫ਼ੀਆ ਵੈਨ ਡੇਨ
+
+parameters; sorting; long; referring; formal
+
+expectedResult; ਵੌਲਫ਼, à¨à¨¡à¨¾ ਕੋਰਨੇਲੀਆ ਈ. ਸੋ. ਵੈਨ ਡੇਨ
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; ਵੌਲਫ਼, à¨. ਕੋ. ਈ. ਸੋ. ਵੈਨ ਡੇਨ
+
+parameters; sorting; short; referring; formal
+
+expectedResult; à¨. ਕੋ. ਈ. ਸੋ. ਵੈਨ ਡੇਨ ਵੌਲਫ਼
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ਵੈਨ ਡੇਨ ਵੌਲਫ਼ à¨. ਕੋ. ਈ. ਸੋ.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; ਪà©à¨°à©‹. ਡਾ. ਵੈਨ ਡੇਨ ਵੌਲਫ਼
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ਵੈਨ ਡੇਨ ਵੌਲਫ਼ à¨. ਕੋ.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ਵੈਨ ਡੇਨ ਵੌਲਫ਼, ਨੀਲ
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; ਨੀਲ ਵੈਨ ਡੇਨ ਵੌਲਫ਼
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; ਵੈਨ ਡੇਨ ਵੌਲਫ਼ ਨੀਲ
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; ਨੀਲ ਵੈ. ਡੇ. ਵੌ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; à¨.ਈ.ਵੈ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; ਵੈ.ਨੀ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; à¨à¨ˆà¨µà©ˆ
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; ਵੈà¨à¨ˆ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ਨੀਲ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ਨੀ
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; ਵੈ
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/pl.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/pl.txt
new file mode 100644
index 00000000000..dc2c1ff7a79
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/pl.txt
@@ -0,0 +1,762 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: pl
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Sindbad
+name ; locale; pl_AQ
+
+expectedResult; Sindbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Ewa
+name ; surname; Nowak
+name ; locale; pl_AQ
+
+expectedResult; Ewa Nowak
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Nowak Ewa
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; E. Nowak
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Nowak E.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; short; referring; formal
+
+expectedResult; Ewa N.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Nowak
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Ewa
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; EN
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; NE
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; E
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; N
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeGGS
+name ; given; Maria
+name ; given2; Kamila
+name ; surname; Kowalska
+name ; locale; pl_AQ
+
+expectedResult; Kowalska Maria Kamila
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+
+expectedResult; Kowalska Maria K.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Maria K. Kowalska
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Kowalska M. K.
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; Kowalska Maria
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; M. K. Kowalska
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Maria Kowalska
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Kowalska M.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Kowalska
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Maria K.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Maria
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; KMK
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; MKK
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; KM
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; MK
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeFull
+name ; title; Pan
+name ; given; Tomasz
+name ; given-informal; Tomek
+name ; given2; Jan
+name ; surname-core; Nowak
+name ; locale; pl_AQ
+
+expectedResult; Pan Nowak Tomasz Jan
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Pan Nowak Tomasz J.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Pan Tomasz J. Nowak
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Nowak Tomasz Jan
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Pan Tomasz Nowak
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Nowak Tomasz
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Nowak T. J.
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; Nowak Tomek
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; T. J. Nowak
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Tomek Nowak
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Pan Nowak
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Nowak T.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Tomek N.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Tomek
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; NTJ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; TJN
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; NT
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; TN
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; N
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; T
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; Sinbad
+name ; locale; ko_AQ
+
+expectedResult; Sinbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Käthe
+name ; surname; Müller
+name ; locale; ko_AQ
+
+expectedResult; Käthe Müller
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Müller Käthe
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; K. Müller
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Müller K.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; short; referring; formal
+
+expectedResult; Käthe M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Müller
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Käthe
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Zäzilia
+name ; given2; Hamish
+name ; surname; Stöber
+name ; locale; ko_AQ
+
+expectedResult; Stöber Zäzilia Hamish
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+
+expectedResult; Stöber Zäzilia H.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Zäzilia H. Stöber
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Stöber Zäzilia
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Zäzilia Stöber
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Stöber Z. H.
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; Z. H. Stöber
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Zäzilia S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Stöber Z.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Zäzilia
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Stöber
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; SZH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ZHS
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; SZ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ZS
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Z
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; prof. dr
+name ; given; Ada Cornelia
+name ; given-informal; Neele
+name ; given2; César Martín
+name ; surname-prefix; von
+name ; surname-core; Brühl
+name ; surname2; González Domingo
+name ; generation; Jr
+name ; credentials; MD DDS
+name ; locale; ko_AQ
+
+expectedResult; prof. dr von Brühl Ada Cornelia César Martín
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; prof. dr Ada Cornelia C. M. von Brühl
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; prof. dr von Brühl Ada Cornelia C. M.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; von Brühl Ada Cornelia César Martín
+
+parameters; sorting; long; referring; formal
+
+expectedResult; prof. dr Ada Cornelia von Brühl
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; von Brühl Ada Cornelia
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; A. C. C. M. von Brühl
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; von Brühl A. C. C. M.
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; prof. dr von Brühl
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Neele von Brühl
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; von Brühl A. C.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; von Brühl Neele
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Neele v. B.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Neele
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ACV
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; VAC
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; AV
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VN
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; N
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ps.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ps.txt
new file mode 100644
index 00000000000..b640ee021ba
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ps.txt
@@ -0,0 +1,566 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: ps
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; سنباد
+name ; locale; ps_AQ
+
+expectedResult; سنباد
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; س
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; ارین
+name ; surname; اډلر
+name ; locale; ps_AQ
+
+expectedResult; اډلر ارین
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ارین اډلر
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; ا.ا
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; اا
+
+parameters; surnameFirst; long; monogram; formal
+
+endName
+
+# nativeGGS
+name ; given; جان
+name ; given2; همیش
+name ; surname; واټسن
+name ; locale; ps_AQ
+
+expectedResult; جان همیش واټسن
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; واټسن جان همیش
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ج.ه.و
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; و.ج.ه
+
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; وجه
+
+parameters; surnameFirst; long; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; ښاغلی.
+name ; given; برټرام ولبرÙورس
+name ; given-informal; برټي
+name ; given2; هنري رابرټ
+name ; surname-core; ووسټر
+name ; generation; نسل
+name ; credentials; ایم پی
+name ; locale; ps_AQ
+
+expectedResult; ښاغلی. برټرام ولبرÙورس هنري رابرټ ووسټر ایم Ù¾ÛŒ
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; ووسټر ښاغلی. برټرام ولبرÙورس هنري رابرټ ایم Ù¾ÛŒ
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ب.ه.و
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; و.ب.ه
+
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; وبه
+
+parameters; surnameFirst; long; monogram; formal
+
+endName
+
+# foreignG
+name ; given; سنباد
+name ; locale; ko_AQ
+
+expectedResult; سنباد
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; س
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; کیتی
+name ; surname; مولر
+name ; locale; ko_AQ
+
+expectedResult; کیتی مولر
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; مولر کیتی
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ú©.Ù…
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; Ù….Ú©
+
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; Ù…Ú©
+
+parameters; surnameFirst; long; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; زیزیلیا
+name ; given2; همیش
+name ; surname; سټوبر
+name ; locale; ko_AQ
+
+expectedResult; زیزیلیا همیش سټوبر
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; سټوبر زیزیلیا همیش
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ز.ه.س
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; س.ز.ه
+
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; سزه
+
+parameters; surnameFirst; long; monogram; formal
+
+endName
+
+# foreignFull
+name ; title; پروÙیسور ډاکټر
+name ; given; اډا کورنیلیا
+name ; given-informal; نیلي
+name ; given2; ایوا سوÙیا
+name ; surname-prefix; وون
+name ; surname-core; لیوه
+name ; surname2; بیکر شمیت
+name ; generation; نسل
+name ; credentials; ایم ‌ډی ډیی ډیی ایس
+name ; locale; ko_AQ
+
+expectedResult; وون لیوه بیکر شمیت, پروÙیسور ډاکټر اډا کورنیلیا ایوا سوÙیا ایم ‌ډی ډیی ډیی ایس
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; پروÙیسور ډاکټر اډا کورنیلیا ایوا سوÙیا وون لیوه بیکر شمیت ایم ‌ډی ډیی ډیی ایس
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; وون لیوه بیکر شمیت پروÙیسور ډاکټر اډا کورنیلیا ایوا سوÙیا ایم ‌ډی ډیی ډیی ایس
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ا.ا.و
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; و.ا.ا
+
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; واا
+
+parameters; surnameFirst; long; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/pt.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/pt.txt
new file mode 100644
index 00000000000..d7d9f994815
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/pt.txt
@@ -0,0 +1,814 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: pt
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Maria
+name ; locale; pt_AQ
+
+expectedResult; Maria
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; M
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Maria
+name ; surname; Silva
+name ; locale; pt_AQ
+
+expectedResult; Silva, Maria
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Maria Silva
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; Silva Maria
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Silva, M.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; M. Silva
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Maria S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Silva M.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Maria
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; MS
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; SM
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeGGS
+name ; given; João
+name ; given2; Pedro
+name ; surname; Silva
+name ; locale; pt_AQ
+
+expectedResult; Silva, João Pedro
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; João Pedro Silva
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Silva João Pedro
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; João P. Silva
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Silva João P.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Silva, J. P.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; J. P. Silva
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Silva J. P.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Silva, João
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; João Pedro
+
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; João Silva
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; Silva João
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Silva J.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; João S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; João
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; JPS
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; SJP
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; JS
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; SJ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; J
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; Sr.
+name ; given; José
+name ; given-informal; Zé
+name ; given2; Pedro Eduardo
+name ; surname-prefix; da
+name ; surname-core; Silva
+name ; surname2; Silveira
+name ; generation; Jr.
+name ; credentials; MP
+name ; locale; pt_AQ
+
+expectedResult; da Silva Sr. José Pedro Eduardo Jr., MP
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Sr. José Pedro Eduardo da Silva Jr., MP
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Silva, José Pedro Eduardo da
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; da Silva José P. E. Jr., MP
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; José P. E. da Silva Jr., MP
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Sr. José Pedro Eduardo
+
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; da Silva, J. P. E.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; da Silva J. P. E.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; J. P. E. da Silva
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Sr. José da Silva
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; da Silva, Zé
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; da Silva J.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; da Silva Zé
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Zé da Silva
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Sr. José
+
+parameters; givenFirst; long; addressing; formal
+
+expectedResult; Zé d. S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; DJP
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; JPD
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; DZ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ZD
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; Zé
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; D
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Z
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; Sinbad
+name ; locale; ja_AQ
+
+expectedResult; Sinbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Käthe
+name ; surname; Müller
+name ; locale; ja_AQ
+
+expectedResult; Müller, Käthe
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Käthe Müller
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; Müller Käthe
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Müller, K.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; K. Müller
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Müller K.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Käthe M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Käthe
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Zäzilia
+name ; given2; Hamish
+name ; surname; Stöber
+name ; locale; ja_AQ
+
+expectedResult; Stöber, Zäzilia Hamish
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; Stöber Zäzilia Hamish
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Zäzilia Hamish Stöber
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Stöber Zäzilia H.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Zäzilia H. Stöber
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Stöber, Zäzilia
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Stöber Zäzilia
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Zäzilia Hamish
+
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Zäzilia Stöber
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; Stöber, Z. H.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Stöber Z. H.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Z. H. Stöber
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Zäzilia S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Stöber Z.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Zäzilia
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; SZH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ZHS
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; SZ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ZS
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Z
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; Prof. Dr.
+name ; given; Mary Lou
+name ; given-informal; Neele
+name ; given2; Cesare Martín
+name ; surname-prefix; von
+name ; surname-core; Brühl
+name ; surname2; González Domingo
+name ; generation; Jr.
+name ; credentials; Dr. Ph.D
+name ; locale; ja_AQ
+
+expectedResult; Prof. Dr. Mary Lou Cesare Martín von Brühl Jr., Dr. Ph.D
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; von Brühl Prof. Dr. Mary Lou Cesare Martín Jr., Dr. Ph.D
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Mary Lou C. M. von Brühl Jr., Dr. Ph.D
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; von Brühl Mary Lou C. M. Jr., Dr. Ph.D
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Brühl, Mary Lou Cesare Martín von
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; Prof. Dr. Mary Lou Cesare Martín
+
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Prof. Dr. Mary Lou von Brühl
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; von Brühl, M. L. C. M.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; M. L. C. M. von Brühl
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; von Brühl M. L. C. M.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Prof. Dr. Mary Lou
+
+parameters; givenFirst; long; addressing; formal
+
+expectedResult; von Brühl, Neele
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Neele von Brühl
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; von Brühl M. L.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; von Brühl Neele
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Neele v. B.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Neele
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; MCV
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; VMC
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; NV
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VN
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; N
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/pt_PT.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/pt_PT.txt
new file mode 100644
index 00000000000..5f4c0ffeb11
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/pt_PT.txt
@@ -0,0 +1,814 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: pt_PT
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Maria
+name ; locale; pt_PT
+
+expectedResult; Maria
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; M
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Maria
+name ; surname; Silva
+name ; locale; pt_PT
+
+expectedResult; Silva, Maria
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Maria Silva
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; Silva Maria
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Silva, M.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; M. Silva
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Maria S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Silva M.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Maria
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; MS
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; SM
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeGGS
+name ; given; Maria João
+name ; given2; Pedro
+name ; surname; Silva
+name ; locale; pt_PT
+
+expectedResult; Silva, Maria João Pedro
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; Maria João Pedro Silva
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Silva Maria João Pedro
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Maria João P. Silva
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Silva Maria João P.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Silva, Maria João
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Maria João Pedro
+
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Maria João Silva
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; Silva Maria João
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Silva, M. J. P.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; M. J. P. Silva
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Silva M. J. P.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Maria João S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Silva M. J.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Maria João
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; MPS
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; SMP
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; MS
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; SM
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; Sr.
+name ; given; José
+name ; given-informal; Zé
+name ; given2; Pedro Eduardo
+name ; surname-prefix; da
+name ; surname-core; Silva
+name ; surname2; Silveira
+name ; generation; Jr.
+name ; credentials; MP
+name ; locale; pt_PT
+
+expectedResult; da Silva Sr. José Pedro Eduardo Jr., MP
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Sr. José Pedro Eduardo da Silva Jr., MP
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Silva, José Pedro Eduardo da
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; da Silva José P. E. Jr., MP
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; José P. E. da Silva Jr., MP
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Sr. José Pedro Eduardo
+
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; da Silva, J. P. E.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; da Silva J. P. E.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; J. P. E. da Silva
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Sr. José da Silva
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; da Silva, Zé
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; da Silva J.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; da Silva Zé
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Zé da Silva
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Sr. José
+
+parameters; givenFirst; long; addressing; formal
+
+expectedResult; Zé d. S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; DJP
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; JPD
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; DZ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ZD
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; Zé
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; D
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Z
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; Sinbad
+name ; locale; ja_AQ
+
+expectedResult; Sinbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Käthe
+name ; surname; Müller
+name ; locale; ja_AQ
+
+expectedResult; Müller, Käthe
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Käthe Müller
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; Müller Käthe
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Müller, K.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; K. Müller
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Müller K.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Käthe M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Käthe
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Zäzilia
+name ; given2; Hamish
+name ; surname; Stöber
+name ; locale; ja_AQ
+
+expectedResult; Stöber, Zäzilia Hamish
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; Stöber Zäzilia Hamish
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Zäzilia Hamish Stöber
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Stöber Zäzilia H.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Zäzilia H. Stöber
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Stöber, Zäzilia
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Stöber Zäzilia
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Zäzilia Hamish
+
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Zäzilia Stöber
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; Stöber, Z. H.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Stöber Z. H.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Z. H. Stöber
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Zäzilia S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Stöber Z.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Zäzilia
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; SZH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ZHS
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; SZ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ZS
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Z
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; Prof. Dr.
+name ; given; Mary Lou
+name ; given-informal; Neele
+name ; given2; Cesare Martín
+name ; surname-prefix; von
+name ; surname-core; Brühl
+name ; surname2; González Domingo
+name ; generation; Jr
+name ; credentials; MD DDS
+name ; locale; ja_AQ
+
+expectedResult; Prof. Dr. Mary Lou Cesare Martín von Brühl Jr, MD DDS
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; von Brühl Prof. Dr. Mary Lou Cesare Martín Jr, MD DDS
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Mary Lou C. M. von Brühl Jr, MD DDS
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; von Brühl Mary Lou C. M. Jr, MD DDS
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Brühl, Mary Lou Cesare Martín von
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; Prof. Dr. Mary Lou Cesare Martín
+
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Prof. Dr. Mary Lou von Brühl
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; von Brühl, M. L. C. M.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; M. L. C. M. von Brühl
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; von Brühl M. L. C. M.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Prof. Dr. Mary Lou
+
+parameters; givenFirst; long; addressing; formal
+
+expectedResult; von Brühl, Neele
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Neele von Brühl
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; von Brühl M. L.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; von Brühl Neele
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Neele v. B.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Neele
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; MCV
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; VMC
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; NV
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VN
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; N
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/qu.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/qu.txt
new file mode 100644
index 00000000000..6122737fcd8
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/qu.txt
@@ -0,0 +1,820 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: qu
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Mario
+name ; locale; qu_AQ
+
+expectedResult; Mario
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; M
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Carlos
+name ; surname; Zabala
+name ; locale; qu_AQ
+
+expectedResult; Zabala, Carlos
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Carlos Zabala
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Zabala Carlos
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Zabala, C.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; C. Zabala
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Carlos Z.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Zabala C.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Carlos
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Zabala
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; CZ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; ZC
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; C
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; Z
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeGGS
+name ; given; Marco
+name ; given2; Antonio
+name ; surname; Flores
+name ; locale; qu_AQ
+
+expectedResult; Flores, Marco Antonio
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Flores Marco Antonio
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Marco Antonio Flores
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Flores, Marco A.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Flores Marco A.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Marco A. Flores
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Flores, M. A.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Flores, Marco
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Flores M. A.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Flores Marco
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; M. A. Flores
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Marco Flores
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Flores M.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Marco F.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Flores
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Marco
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; FMA
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; MAF
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; FM
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; MF
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; F
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeFull
+name ; title; Sr.
+name ; given; Maria García
+name ; given-informal; Mari
+name ; given2; Rosa
+name ; surname-prefix; de la
+name ; surname-core; Cruz
+name ; surname2; Quispe
+name ; generation; Jr.
+name ; credentials; A. R.
+name ; locale; qu_AQ
+
+expectedResult; A. R., Sr. de la Cruz Maria García Rosa Jr.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; A. R., Sr. Maria García Rosa de la Cruz Jr.
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; A. R., de la Cruz Maria García R. Jr.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; A. R., Maria García R. de la Cruz Jr.
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Cruz, de la Maria García Rosa
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Cruz, de la Maria García R.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Cruz, de la M. G. R.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; de la Cruz M. G. R.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; M. G. R. de la Cruz
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; de la Cruz M. G.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; de la Cruz, Mari
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; de la Cruz Mari
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Mari de la Cruz
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Sr. de la Cruz
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Mari d. l. C.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; DQMR
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; Mari
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; MRDQ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; DM
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; MD
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; D
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; Pedro
+name ; locale; ko_AQ
+
+expectedResult; Pedro
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; P
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Ana
+name ; surname; Torres
+name ; locale; ko_AQ
+
+expectedResult; Torres, Ana
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ana Torres
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Torres Ana
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Torres, A.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; A. Torres
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Torres A.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Ana T.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Torres
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Ana
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; AT
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; TA
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; T
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Edwin
+name ; given2; Segundo
+name ; surname; Condori
+name ; locale; ko_AQ
+
+expectedResult; Condori, Edwin Segundo
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Condori Edwin Segundo
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Edwin Segundo Condori
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Condori, Edwin S.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Condori Edwin S.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Edwin S. Condori
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Condori, E. S.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Condori, Edwin
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Condori E. S.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Condori Edwin
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; E. S. Condori
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Edwin Condori
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Condori E.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Edwin C.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Condori
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Edwin
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; CES
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ESC
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; CE
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; EC
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; C
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; E
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; Prof. Dr.
+name ; given; Alejandro Manuel
+name ; given-informal; Ale
+name ; given2; César Mamani
+name ; surname-prefix; de la
+name ; surname-core; Cruz
+name ; surname2; Guzmán Huamán
+name ; generation; Jr.
+name ; credentials; Ph. D.
+name ; locale; ko_AQ
+
+expectedResult; Ph. D., Prof. Dr. Alejandro Manuel César Mamani de la Cruz Jr.
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Ph. D., Prof. Dr. de la Cruz Alejandro Manuel César Mamani Jr.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Ph. D., Alejandro Manuel C. M. de la Cruz Jr.
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Ph. D., de la Cruz Alejandro Manuel C. M. Jr.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Cruz, de la Alejandro Manuel César Mamani
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Cruz, de la Alejandro Manuel C. M.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Cruz, de la A. M. C. M.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; A. M. C. M. de la Cruz
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; de la Cruz A. M. C. M.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Prof. Dr. de la Cruz
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; de la Cruz A. M.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; de la Cruz, Ale
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ale de la Cruz
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; de la Cruz Ale
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Ale d. l. C.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ACDG
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; DGAC
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; Ale
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; AD
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; DA
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; D
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ro.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ro.txt
new file mode 100644
index 00000000000..5b8e6b8e05c
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ro.txt
@@ -0,0 +1,818 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: ro
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Alina
+name ; locale; ro_AQ
+
+expectedResult; Alina
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; A
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Maria
+name ; surname; Popescu
+name ; locale; ro_AQ
+
+expectedResult; Popescu, Maria
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Maria Popescu
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Popescu Maria
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Popescu, M.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; M. Popescu
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Popescu M.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Maria P.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Popescu
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Maria
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; MP
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; PM
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; P
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; Alexandru
+name ; given2; Ioan
+name ; surname; Popa
+name ; locale; ro_AQ
+
+expectedResult; Popa, Alexandru Ioan
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Alexandru Ioan Popa
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Popa Alexandru Ioan
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Popa, Alexandru I.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Alexandru I. Popa
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Popa Alexandru I.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Popa, Alexandru
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Alexandru Popa
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Popa Alexandru
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Alexandru P.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Popa, A. I.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; A. I. Popa
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Popa A. I.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Alexandru
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Popa A.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Popa
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; AIP
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; PAI
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; AP
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; PA
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; P
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeFull
+name ; title; Dl
+name ; given; Daniel Ionescu
+name ; given-informal; Dani
+name ; given2; DragoÈ™ Ioan
+name ; surname-core; Ardelean
+name ; generation; Jr.
+name ; credentials; Dr.
+name ; locale; ro_AQ
+
+expectedResult; Dl Dr. Daniel Ionescu DragoÈ™ Ioan Ardelean Jr.
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Dr. Ardelean Dl Daniel Ionescu DragoÈ™ Ioan Jr.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Dr. Ardelean Daniel Ionescu D. I. Jr.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Dr. Daniel Ionescu D. I. Ardelean Jr.
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Ardelean, Daniel Ionescu DragoÈ™ Ioan
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Ardelean, Daniel Ionescu D. I.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Ardelean, D. I. D. I.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Ardelean D. I. D. I.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; D. I. D. I. Ardelean
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Ardelean D. I.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Ardelean, Dani
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ardelean Dani
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Dani Ardelean
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Dl Ardelean
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Dani A.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Dani
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ADD
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; DDA
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; AD
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; DA
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; D
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+
+endName
+
+# foreignG
+name ; given; Mark
+name ; locale; ko_AQ
+
+expectedResult; Mark
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; M
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Mary
+name ; surname; Johnson
+name ; locale; ko_AQ
+
+expectedResult; Johnson, Mary
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Johnson Mary
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Mary Johnson
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Johnson, M.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Johnson M.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; M. Johnson
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Johnson
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Mary J.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Mary
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; JM
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; MJ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; J
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+
+endName
+
+# foreignGGS
+name ; given; Noémie
+name ; given2; Katerina
+name ; surname; Yannaki
+name ; locale; ko_AQ
+
+expectedResult; Yannaki, Noémie Katerina
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Noémie Katerina Yannaki
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Yannaki Noémie Katerina
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Yannaki, Noémie K.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Noémie K. Yannaki
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Yannaki Noémie K.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Yannaki, Noémie
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Noémie Yannaki
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Yannaki Noémie
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Yannaki, N. K.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; N. K. Yannaki
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Yannaki N. K.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Yannaki N.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Noémie Y.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Yannaki
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Noémie
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; NKY
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; YNK
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; NY
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; YN
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; N
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; Y
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; Prof. dr.
+name ; given; Eva-Eleonora
+name ; given-informal; Teo
+name ; given2; Karl Hans
+name ; surname-prefix; von der
+name ; surname-core; Ruhr
+name ; surname2; Friedrich
+name ; generation; Jr.
+name ; credentials; MD Chirurgie dentară
+name ; locale; ko_AQ
+
+expectedResult; MD Chirurgie dentară von der Ruhr Prof. dr. Eva-Eleonora Karl Hans Jr.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Prof. dr. MD Chirurgie dentară Eva-Eleonora Karl Hans von der Ruhr Jr.
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; MD Chirurgie dentară Eva-Eleonora K. H. von der Ruhr Jr.
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; MD Chirurgie dentară von der Ruhr Eva-Eleonora K. H. Jr.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Ruhr, Eva-Eleonora Karl Hans von der
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Ruhr, Eva-Eleonora K. H. von der
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Ruhr, E. E. K. H. von der
+
+parameters; sorting; short; referring; formal
+
+expectedResult; E. E. K. H. von der Ruhr
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; von der Ruhr E. E. K. H.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Prof. dr. von der Ruhr
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; von der Ruhr E. E.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; von der Ruhr, Teo
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Teo von der Ruhr
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; von der Ruhr Teo
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Teo v. d. R.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; EKV
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; Teo
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; VEK
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; TV
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VT
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; T
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ru.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ru.txt
new file mode 100644
index 00000000000..070e3a3d5d1
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ru.txt
@@ -0,0 +1,803 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: ru
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Сергей
+name ; locale; ru_AQ
+
+expectedResult; Сергей
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; С
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Ирина
+name ; surname; ÐмоÑова
+name ; locale; ru_AQ
+
+expectedResult; ÐмоÑова, Ирина
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; ÐмоÑова Ирина
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Ирина ÐмоÑова
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; ÐмоÑова, И.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; ÐмоÑова И.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; И. ÐмоÑова
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Ирина Ð.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ÐмоÑова
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Ирина
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ÐИ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ИÐ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; Ð
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; И
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; Дмитрий
+name ; given2; Петрович
+name ; surname; ВаÑильев
+name ; locale; ru_AQ
+
+expectedResult; ВаÑильев, Дмитрий Петрович
+
+parameters; sorting; long; referring; formal
+
+expectedResult; ВаÑильев Дмитрий Петрович
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Дмитрий Петрович ВаÑильев
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; ВаÑильев, Дмитрий П.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; ВаÑильев Дмитрий П.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; ВаÑильев, Дмитрий
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; ВаÑильев Дмитрий
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Дмитрий ВаÑильев
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; ВаÑильев, Д. П.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; ВаÑильев Д. П.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Д. П. ВаÑильев
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ВаÑильев Д.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Дмитрий В.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ВаÑильев
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Дмитрий
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ВДП
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ДПВ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; ВД
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ДВ
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; Ð’
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Д
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeFull
+name ; given; Иван
+name ; given-informal; ВанÑ
+name ; given2; ВаÑильевич
+name ; surname-core; Купцов
+name ; locale; ru_AQ
+
+expectedResult; Купцов, Иван ВаÑильевич
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Иван ВаÑильевич Купцов
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Купцов Иван ВаÑильевич
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Купцов, Иван В.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Купцов Иван В.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Купцов, И. В.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; И. В. Купцов
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Купцов И. В.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Купцов, ВанÑ
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ð’Ð°Ð½Ñ ÐšÑƒÐ¿Ñ†Ð¾Ð²
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Купцов ВанÑ
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Купцов И.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Ð’Ð°Ð½Ñ Ðš.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Купцов
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ВанÑ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ИВК
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; КИВ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ВК
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; КВ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; Ð’
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; К
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; Синдбад
+name ; locale; ko_AQ
+
+expectedResult; Синдбад
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; С
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Кете
+name ; surname; Мюллер
+name ; locale; ko_AQ
+
+expectedResult; Мюллер, Кете
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Кете Мюллер
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Мюллер Кете
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Мюллер, К.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; К. Мюллер
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Мюллер К.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Кете М.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Мюллер
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Кете
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; КМ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; МК
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; К
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; М
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; ЦецилиÑ
+name ; given2; Ð¥Ñмиш
+name ; surname; Штёбер
+name ; locale; ko_AQ
+
+expectedResult; Штёбер, Ð¦ÐµÑ†Ð¸Ð»Ð¸Ñ Ð¥Ñмиш
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Ð¦ÐµÑ†Ð¸Ð»Ð¸Ñ Ð¥Ñмиш Штёбер
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Штёбер Ð¦ÐµÑ†Ð¸Ð»Ð¸Ñ Ð¥Ñмиш
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Штёбер, Ð¦ÐµÑ†Ð¸Ð»Ð¸Ñ Ð¥.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Штёбер Ð¦ÐµÑ†Ð¸Ð»Ð¸Ñ Ð¥.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Штёбер, ЦецилиÑ
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ð¦ÐµÑ†Ð¸Ð»Ð¸Ñ Ð¨Ñ‚Ñ‘Ð±ÐµÑ€
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Штёбер ЦецилиÑ
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Штёбер, Ц. Х.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Ц. Х. Штёбер
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Штёбер Ц. Х.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Ð¦ÐµÑ†Ð¸Ð»Ð¸Ñ Ð¨.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Штёбер Ц.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ЦецилиÑ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Штёбер
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ЦХШ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; ШЦХ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ЦШ
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; ШЦ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; Ц
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; Ш
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignFull
+name ; title; проф., д-р
+name ; given; Ðда КорнелиÑ
+name ; given-informal; Ðеле
+name ; given2; Сезар Мартин
+name ; surname-prefix; фон
+name ; surname-core; Брюль
+name ; surname2; ГонÑÐ°Ð»ÐµÑ Ð”Ð¾Ð¼Ð¸Ð½Ð³Ð¾
+name ; generation; мл.
+name ; credentials; к. м. н.
+name ; locale; ko_AQ
+
+expectedResult; проф., д-Ñ€ Ðда ÐšÐ¾Ñ€Ð½ÐµÐ»Ð¸Ñ Ð¡ÐµÐ·Ð°Ñ€ Мартин фон Брюль — мл., к. м. н.
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; фон Брюль Ðда ÐšÐ¾Ñ€Ð½ÐµÐ»Ð¸Ñ Ð¡ÐµÐ·Ð°Ñ€ Мартин, к. м. н.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; фон Брюль Ðда ÐšÐ¾Ñ€Ð½ÐµÐ»Ð¸Ñ Ð¡. Ðœ., к. м. н.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Брюль, Ðда ÐšÐ¾Ñ€Ð½ÐµÐ»Ð¸Ñ Ð¡ÐµÐ·Ð°Ñ€ Мартин фон
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Брюль, Ðда ÐšÐ¾Ñ€Ð½ÐµÐ»Ð¸Ñ Ð¡. Ðœ. фон
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Брюль, Ð. К. С. Ðœ. фон
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Ð. К. С. Ðœ. фон Брюль
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; фон Брюль Ð. К. С. Ðœ.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; проф., д-р фон Брюль
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; фон Брюль Ð. К.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; фон Брюль, Ðеле
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ðеле фон Брюль
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; фон Брюль Ðеле
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Ðеле Ñ„. Б.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Ðеле
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ÐСФ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; ФÐС
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ÐФ
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; ФÐ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; Ð
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; Ф
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/sc.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/sc.txt
new file mode 100644
index 00000000000..1c0c0cc60d6
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/sc.txt
@@ -0,0 +1,820 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: sc
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Frantziscu
+name ; locale; sc_AQ
+
+expectedResult; Frantziscu
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; F
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Lianora
+name ; surname; Sanna
+name ; locale; sc_AQ
+
+expectedResult; Sanna, Lianora
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Lianora Sanna
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Sanna Lianora
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; medium; referring; formal
+
+expectedResult; Lianora S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Sanna, L.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; L. Sanna
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Sanna L.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Lianora
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Sanna
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; LS
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; SL
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; L
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeGGS
+name ; given; Giuanne
+name ; given2; Marcu
+name ; surname; Piras
+name ; locale; sc_AQ
+
+expectedResult; Piras, Giuanne Marcu
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Giuanne Marcu Piras
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Piras Giuanne Marcu
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Giuanne M. Piras
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Piras Giuanne M.
+
+parameters; surnameFirst; medium; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; Piras, Giuanne
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Giuanne Piras
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Piras Giuanne
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Piras, G. M.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; G. M. Piras
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Piras G. M.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Giuanne P.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Piras G.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Giuanne
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Piras
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; GMP
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; medium; monogram; formal
+
+expectedResult; PGM
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; GP
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; PG
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; G
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; P
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; Sr.
+name ; given; Antoni Baìngiu
+name ; given-informal; Toninu
+name ; given2; Torchitòriu Comita
+name ; surname-prefix; de
+name ; surname-core; Lacon
+name ; surname2; Gunale
+name ; generation; II
+name ; credentials; onorèvole
+name ; locale; sc_AQ
+
+expectedResult; onorèvole Sr. de Lacon Gunale Antoni Baìngiu Torchitòriu Comita
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Sr. Antoni Baìngiu Torchitòriu Comita de Lacon Gunale
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; de Lacon Gunale Sr. Antoni Baìngiu T. C., onorèvole
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; de Lacon, Antoni Baìngiu Torchitòriu Comita
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Sr. Antoni Baìngiu T. C. de Lacon Gunale
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; de Lacon Gunale, Antoni Baìngiu T. C.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; de Lacon, A. B. T. C.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; A. B. T. C. de Lacon
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; de Lacon A. B. T. C.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Sr. de Lacon Gunale
+
+parameters; surnameFirst; long; addressing; formal
+
+expectedResult; de Lacon, Toninu
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; de Lacon Toninu
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Toninu de Lacon
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; de Lacon A. B.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Sr. de Lacon
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Toninu de L.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Toninu
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ATD
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; medium; monogram; formal
+
+expectedResult; DAT
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; DT
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; TD
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; D
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; T
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; Sinbad
+name ; locale; ko_AQ
+
+expectedResult; Sinbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Käthe
+name ; surname; Müller
+name ; locale; ko_AQ
+
+expectedResult; Müller, Käthe
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Käthe Müller
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Müller Käthe
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; medium; referring; formal
+
+expectedResult; Müller, K.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; K. Müller
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Müller K.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Käthe M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Müller
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Käthe
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Zäzilia
+name ; given2; Hamish
+name ; surname; Stöber
+name ; locale; ko_AQ
+
+expectedResult; Stöber, Zäzilia Hamish
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Stöber Zäzilia Hamish
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Zäzilia Hamish Stöber
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Stöber Zäzilia H.
+
+parameters; surnameFirst; medium; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; Zäzilia H. Stöber
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Stöber, Zäzilia
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Stöber Zäzilia
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Zäzilia Stöber
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Stöber, Z. H.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Stöber Z. H.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Z. H. Stöber
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Zäzilia S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Stöber Z.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Zäzilia
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Stöber
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; SZH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ZHS
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; medium; monogram; formal
+
+expectedResult; SZ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ZS
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Z
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; Dut.ra Prof.ra
+name ; given; Maria Giusepa
+name ; given-informal; Pipina
+name ; given2; Juana Teresa
+name ; surname-prefix; von
+name ; surname-core; Brühl
+name ; surname2; González Domingo
+name ; generation; Jr
+name ; credentials; MD DDS
+name ; locale; ko_AQ
+
+expectedResult; MD DDS Dut.ra Prof.ra von Brühl González Domingo Maria Giusepa Juana Teresa
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; von Brühl González Domingo Dut.ra Prof.ra Maria Giusepa J. T., MD DDS
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Dut.ra Prof.ra Maria Giusepa Juana Teresa von Brühl González Domingo
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Dut.ra Prof.ra Maria Giusepa J. T. von Brühl González Domingo
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; von Brühl González Domingo, Maria Giusepa J. T.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Dut.ra Prof.ra von Brühl González Domingo
+
+parameters; surnameFirst; long; addressing; formal
+
+expectedResult; von Brühl, Maria Giusepa Juana Teresa
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Dut.ra Prof.ra von Brühl
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; von Brühl, M. G. J. T.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; M. G. J. T. von Brühl
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; von Brühl M. G. J. T.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; von Brühl, Pipina
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Pipina von Brühl
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; von Brühl Pipina
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; von Brühl M. G.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Pipina von B.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Pipina
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; MJV
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; medium; monogram; formal
+
+expectedResult; VMJ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; PV
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; VP
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; P
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/sd.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/sd.txt
new file mode 100644
index 00000000000..33fecc3e3a6
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/sd.txt
@@ -0,0 +1,551 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: sd
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; سنباد
+name ; locale; sd_AQ
+
+expectedResult; سنباد
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; س
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; آئرين
+name ; surname; ائڊلر
+name ; locale; sd_AQ
+
+expectedResult; آئرين ائڊلر
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; ائڊلر آئرين
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; آا
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; اآ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; ميري سيو
+name ; given2; ھامش
+name ; surname; واٽسن
+name ; locale; sd_AQ
+
+expectedResult; ميري سيو ھامش واٽسن
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; واٽسن ميري سيو ھامش
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ù…Ú¾Ùˆ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; ومھ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeFull
+name ; title; محترم
+name ; given; برٽرم ولبرÙورس
+name ; given-informal; برٽي
+name ; given2; ھينري رابرٽ
+name ; surname-core; ووسٽر
+name ; generation; جونيئر
+name ; credentials; ايم پي
+name ; locale; sd_AQ
+
+expectedResult; محترم برٽرم ولبرÙورس ھينري رابرٽ ووسٽر ايم پي
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; ووسٽر محترم برٽرم ولبرÙورس ھينري رابرٽ ايم پي
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; بھو
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; وبھ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; سندباد
+name ; locale; ko_AQ
+
+expectedResult; سندباد
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; س
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; ڪئٿي
+name ; surname; ملر
+name ; locale; ko_AQ
+
+expectedResult; ڪئٿي ملر
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; ملر ڪئٿي
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ÚªÙ…
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; Ù…Úª
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGGS
+name ; given; زيزيليا
+name ; given2; ھئمش
+name ; surname; اسٽوبر
+name ; locale; ko_AQ
+
+expectedResult; اسٽوبر زيزيليا ھئمش
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; زيزيليا ھئمش اسٽوبر
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; ازھ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; زھا
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; پروÙيسر ڊاڪٽر
+name ; given; ايڊا ڪورنيليا
+name ; given-informal; نيل
+name ; given2; سيزر مارٽن
+name ; surname-prefix; وان
+name ; surname-core; برل
+name ; surname2; گونزالس ڊومنگو
+name ; generation; جونيئر
+name ; credentials; ايم ڊي ڊي ڊي ايس
+name ; locale; ko_AQ
+
+expectedResult; وان برل گونزالس ڊومنگو, پروÙيسر ڊاڪٽر ايڊا ڪورنيليا سيزر مارٽن ايم ÚŠÙŠ ÚŠÙŠ ÚŠÙŠ ايس
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; پروÙيسر ڊاڪٽر ايڊا ڪورنيليا سيزر مارٽن وان برل گونزالس ڊومنگو ايم ÚŠÙŠ ÚŠÙŠ ÚŠÙŠ ايس
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; وان برل گونزالس ڊومنگو پروÙيسر ڊاڪٽر ايڊا ڪورنيليا سيزر مارٽن ايم ÚŠÙŠ ÚŠÙŠ ÚŠÙŠ ايس
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; اسو
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; واس
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/si.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/si.txt
new file mode 100644
index 00000000000..e3231077e4f
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/si.txt
@@ -0,0 +1,812 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: si
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; සෙන්ඩයà·
+name ; locale; si_AQ
+
+expectedResult; සෙන්ඩයà·
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; සෙ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; අයිරින්
+name ; surname; ඇඩ්ලර්
+name ; locale; si_AQ
+
+expectedResult; අයිරින්, ඇඩ්ලර්
+
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; අයිරින් ඇඩ්ලර්
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+
+expectedResult; ඇඩ්ලර් අයිරින්
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; අයිරින් ඇ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; අ. ඇඩ්ලර්
+
+parameters; givenFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; ඇඩ්ලර් අ.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; අයිරින්
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ඇඩ්ලර්
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; අඇ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; ඇඅ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; අ
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; ඇ
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeGGS
+name ; given; මේරි සූ
+name ; given2; හමිෂ්
+name ; surname; වොට්සන්
+name ; locale; si_AQ
+
+expectedResult; මේරි සූ හමිෂ්, වොට්සන්
+
+parameters; sorting; long; referring; formal
+
+expectedResult; මේරි සූ හමිෂ් වොට්සන්
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; වොට්සන් මේරි සූ හමිෂ්
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; මේ. සූ. හ., වොට්සන්
+
+parameters; sorting; short; referring; formal
+
+expectedResult; මේ. සූ. හ. වොට්සන්
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; මේරි සූ හ. වොට්සන්
+
+parameters; givenFirst; medium; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; වොට්සන් මේ. සූ. හ.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; වොට්සන් මේරි සූ හ.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; මේරි සූ, වොට්සන්
+
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; මේරි සූ වොට්සන්
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+
+expectedResult; වොට්සන් මේ. සූ.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; වොට්සන් මේරි සූ
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; මේරි සූ වො.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; මේරි සූ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; වොට්සන්
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; මේහවො
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; වොමේහ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; මේවො
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; වොමේ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; මේ
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; වො
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; මහතà·
+name ; given; බර්ට්â€à¶»à¶¸à·Š විල්බර්ෆà·à·ƒà·Š
+name ; given-informal; බර්ටි
+name ; given2; හෙන්රි රොබට්
+name ; surname-core; වූස්ටර්
+name ; generation; බà·à¶½
+name ; credentials; පà·.ම.
+name ; locale; si_AQ
+
+expectedResult; වූස්ටර් මහත෠බර්ට්â€à¶»à¶¸à·Š විල්බර්ෆà·à·ƒà·Š හෙන්රි රොබට් බà·à¶½, පà·.ම.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; මහත෠බර්ට්â€à¶»à¶¸à·Š විල්බර්ෆà·à·ƒà·Š හෙන්රි රොබට් වූස්ටර් පà·.ම.
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; බර්ට්â€à¶»à¶¸à·Š විල්බර්ෆà·à·ƒà·Š à·„à·™. රො. වූස්ටර් බà·à¶½, පà·.ම.
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; වූස්ටර් බර්ට්â€à¶»à¶¸à·Š විල්බර්ෆà·à·ƒà·Š à·„à·™. රො. බà·à¶½, පà·.ම.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; බර්ට්â€à¶»à¶¸à·Š විල්බර්ෆà·à·ƒà·Š හෙන්රි රොබට්, වූස්ටර්
+
+parameters; sorting; long; referring; formal
+
+expectedResult; බර්ට්â€à¶»à¶¸à·Š විල්බර්ෆà·à·ƒà·Š à·„à·™. රො. වූස්ටර්
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; මහත෠බර්ට්â€à¶»à¶¸à·Š විල්බර්ෆà·à·ƒà·Š වූස්ටර්
+
+parameters; givenFirst; long; addressing; formal
+
+expectedResult; බ. වි. හෙ. රො., වූස්ටර්
+
+parameters; sorting; short; referring; formal
+
+expectedResult; බ. වි. හෙ. රො. වූස්ටර්
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; වූස්ටර් බ. වි. හෙ. රො.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; බර්ටි, වූස්ටර්
+
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; වූස්ටර් බ. වි.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; බර්ටි වූස්ටර්
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+
+expectedResult; වූස්ටර් බර්ටි
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; මහත෠වූස්ටර්
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; බර්ටි වූ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; බර්ටි
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; බහෙවූ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; වූබහෙ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; බවූ
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; වූබ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; වූ
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; බ
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; සින්බෑඩ්
+name ; locale; fr_AQ
+
+expectedResult; සින්බෑඩ්
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; සි
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; කේතේ
+name ; surname; මුලර්
+name ; locale; fr_AQ
+
+expectedResult; කේතේ, මුලර්
+
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; කේතේ මුලර්
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+
+expectedResult; මුලර් කේතේ
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; කේ. මුලර්
+
+parameters; givenFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; මුලර් කේ.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; කේතේ මු.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; මුලර්
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; කේතේ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; කේමු
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; මුකේ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; කේ
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; මු
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; à·ƒà·à·ƒà·’ලියà·
+name ; given2; හමිෂ්
+name ; surname; ස්ටà·à¶¶à¶»à·Š
+name ; locale; fr_AQ
+
+expectedResult; à·ƒà·à·ƒà·’ලිය෠හමිෂ්, ස්ටà·à¶¶à¶»à·Š
+
+parameters; sorting; long; referring; formal
+
+expectedResult; à·ƒà·à·ƒà·’ලිය෠හමිෂ් ස්ටà·à¶¶à¶»à·Š
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; ස්ටà·à¶¶à¶»à·Š à·ƒà·à·ƒà·’ලිය෠හමිෂ්
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; à·ƒà·à·ƒà·’ලිය෠හ. ස්ටà·à¶¶à¶»à·Š
+
+parameters; givenFirst; medium; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; ස්ටà·à¶¶à¶»à·Š à·ƒà·à·ƒà·’ලිය෠හ.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; à·ƒà·à·ƒà·’ලියà·, ස්ටà·à¶¶à¶»à·Š
+
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; à·ƒà·à·ƒà·’ලිය෠ස්ටà·à¶¶à¶»à·Š
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+
+expectedResult; ස්ටà·à¶¶à¶»à·Š à·ƒà·à·ƒà·’ලියà·
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; à·ƒà·. à·„., ස්ටà·à¶¶à¶»à·Š
+
+parameters; sorting; short; referring; formal
+
+expectedResult; à·ƒà·. à·„. ස්ටà·à¶¶à¶»à·Š
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ස්ටà·à¶¶à¶»à·Š à·ƒà·. à·„.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; à·ƒà·à·ƒà·’ලිය෠ස්.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ස්ටà·à¶¶à¶»à·Š à·ƒà·.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; à·ƒà·à·ƒà·’ලියà·
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ස්ටà·à¶¶à¶»à·Š
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; à·ƒà·à·„ස්
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; ස්සà·à·„
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; à·ƒà·à·ƒà·Š
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; ස්සà·
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; à·ƒà·
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; ස්
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignFull
+name ; title; මහà·à¶ à·à¶»à·Šà¶º. ආචà·à¶»à·Šà¶º.
+name ; given; ඇඩ෠කොර්නේලියà·
+name ; given-informal; නීලේ
+name ; given2; සීසර් මà·à¶§à·’න්
+name ; surname-prefix; වොන්
+name ; surname-core; බෲල්
+name ; surname2; ගොන්සà·à¶½à·™à·ƒà·Š ඩොමින්ගà·
+name ; generation; බà·à¶½
+name ; credentials; එම්.ඩී. පී.එච්.ඩී.
+name ; locale; fr_AQ
+
+expectedResult; මහà·à¶ à·à¶»à·Šà¶º. ආචà·à¶»à·Šà¶º. ඇඩ෠කොර්නේලිය෠සීසර් මà·à¶§à·’න් වොන් බෲල් ගොන්සà·à¶½à·™à·ƒà·Š ඩොමින්ග෠එම්.ඩී. පී.එච්.ඩී.
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; වොන් බෲල් මහà·à¶ à·à¶»à·Šà¶º. ආචà·à¶»à·Šà¶º. ඇඩ෠කොර්නේලිය෠සීසර් මà·à¶§à·’න් බà·à¶½, එම්.ඩී. පී.එච්.ඩී.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; ඇඩ෠කොර්නේලිය෠සී. මà·. වොන් බෲල් බà·à¶½, එම්.ඩී. පී.එච්.ඩී.
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; වොන් බෲල් ඇඩ෠කොර්නේලිය෠සී. මà·. බà·à¶½, එම්.ඩී. පී.එච්.ඩී.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; මහà·à¶ à·à¶»à·Šà¶º. ආචà·à¶»à·Šà¶º. ඇඩ෠කොර්නේලිය෠වොන් බෲල්
+
+parameters; givenFirst; long; addressing; formal
+
+expectedResult; ඇඩ෠කොර්නේලිය෠සීසර් මà·à¶§à·’න්, වොන් බෲල්
+
+parameters; sorting; long; referring; formal
+
+expectedResult; ඇඩ෠කොර්නේලිය෠සී. මà·. වොන් බෲල්
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; මහà·à¶ à·à¶»à·Šà¶º. ආචà·à¶»à·Šà¶º. වොන් බෲල්
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ඇ. කො. සී. මà·., වොන් බෲල්
+
+parameters; sorting; short; referring; formal
+
+expectedResult; ඇ. කො. සී. මà·. වොන් බෲල්
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; වොන් බෲල් ඇ. කො. සී. මà·.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; වොන් බෲල් ඇ. කො.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; නීලේ, වොන් බෲල්
+
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; නීලේ වොන් බෲල්
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+
+expectedResult; වොන් බෲල් නීලේ
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; නීලේ වො. බෲ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ඇසීවො
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; වොඇසී
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; නීලේ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; නීවො
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; වොනී
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; නී
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; වො
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/sk.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/sk.txt
new file mode 100644
index 00000000000..39569e58ff5
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/sk.txt
@@ -0,0 +1,782 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: sk
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Jozef
+name ; locale; sk_AQ
+
+expectedResult; Jozef
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; J
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Jana
+name ; surname; KováÄová
+name ; locale; sk_AQ
+
+expectedResult; KováÄová, Jana
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+
+expectedResult; Jana KováÄová
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; KováÄová Jana
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; KováÄová, J.
+
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; KováÄová
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Jana
+
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; JK
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; KJ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; J
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeGGS
+name ; given; Ján
+name ; given2; Matej
+name ; surname; Slovák
+name ; locale; sk_AQ
+
+expectedResult; Slovák, Ján Matej
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Ján Matej Slovák
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; addressing; formal
+
+expectedResult; Slovák Ján Matej
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; addressing; formal
+
+expectedResult; Slovák, Ján M.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Slovák, J. M.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Slovák, Ján
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+
+expectedResult; Ján Slovák
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Slovák Ján
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Slovák, J.
+
+parameters; sorting; short; referring; informal
+
+expectedResult; Slovák
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Ján
+
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; JMS
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; SJM
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; JS
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; SJ
+
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; J
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; pani
+name ; given; Alexandra
+name ; given-informal; Saša
+name ; given2; Zuzana
+name ; surname-core; Macáková
+name ; generation; ml.
+name ; credentials; PhD
+name ; locale; sk_AQ
+
+expectedResult; Macáková, Alexandra Zuzana (pani, PhD)
+
+parameters; sorting; long; referring; formal
+
+expectedResult; pani Macáková Alexandra Zuzana, PhD
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; pani Alexandra Zuzana Macáková PhD
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; pani Alexandra Zuzana Macáková
+
+parameters; givenFirst; long; addressing; formal
+
+expectedResult; pani Macáková Alexandra Zuzana
+
+parameters; surnameFirst; long; addressing; formal
+
+expectedResult; pani Alexandra Macáková
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; pani Macáková Alexandra
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Macáková, Alexandra Z.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Macáková, A. Z.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Macáková, Saša
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+
+expectedResult; Macáková Saša
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; pani Macáková
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; referring; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Saša Macáková
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Macáková, S.
+
+parameters; sorting; short; referring; informal
+
+expectedResult; Macáková
+
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Saša
+
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; AZM
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; MAZ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; AM
+
+parameters; givenFirst; medium; monogram; formal
+
+expectedResult; MA
+
+parameters; surnameFirst; medium; monogram; formal
+
+expectedResult; MS
+
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; SM
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; S
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; Jack
+name ; locale; ko_AQ
+
+expectedResult; Jack
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; J
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Käthe
+name ; surname; Müller
+name ; locale; ko_AQ
+
+expectedResult; Müller, Käthe
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+
+expectedResult; Käthe Müller
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Müller Käthe
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Müller, K.
+
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Müller
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Käthe
+
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Zäzilia
+name ; given2; Hamish
+name ; surname; Stöber
+name ; locale; ko_AQ
+
+expectedResult; Stöber, Zäzilia Hamish
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Stöber Zäzilia Hamish
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; addressing; formal
+
+expectedResult; Zäzilia Hamish Stöber
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; addressing; formal
+
+expectedResult; Stöber, Zäzilia H.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Stöber, Zäzilia
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+
+expectedResult; Stöber Zäzilia
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Zäzilia Stöber
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Stöber, Z. H.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Stöber, Z.
+
+parameters; sorting; short; referring; informal
+
+expectedResult; Zäzilia
+
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Stöber
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; SZH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ZHS
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; SZ
+
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; ZS
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Z
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; Mgr. Ing.
+name ; given; Anna Karolína
+name ; given-informal; Sofia
+name ; given2; Eva Kristína
+name ; surname-prefix; von
+name ; surname-core; Kant
+name ; surname2; Nováková Predná
+name ; generation; ml.
+name ; credentials; CSc.
+name ; locale; ko_AQ
+
+expectedResult; Mgr. Ing. Anna Karolína Eva Kristína von Kant Nováková Predná, CSc.
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Mgr. Ing. von Kant Nováková Predná Anna Karolína Eva Kristína, CSc.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Mgr. Ing. Anna Karolína Eva Kristína von Kant Nováková Predná
+
+parameters; givenFirst; long; addressing; formal
+
+expectedResult; Mgr. Ing. von Kant Nováková Predná Anna Karolína Eva Kristína
+
+parameters; surnameFirst; long; addressing; formal
+
+expectedResult; Kant, Anna Karolína Eva Kristína von (Mgr. Ing., CSc.)
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Mgr. Ing. Anna Karolína von Kant
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Mgr. Ing. von Kant Anna Karolína
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Kant, Anna Karolína E. K. von
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Mgr. Ing. von Kant
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; referring; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Kant, A. K. E. K.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Kant, Sofia von
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+
+expectedResult; Sofia von Kant
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; von Kant Sofia
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Kant, S.
+
+parameters; sorting; short; referring; informal
+
+expectedResult; von Kant
+
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Sofia
+
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; AEV
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; KAE
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; AK
+
+parameters; givenFirst; medium; monogram; formal
+
+expectedResult; KA
+
+parameters; surnameFirst; medium; monogram; formal
+
+expectedResult; KS
+
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; SK
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; S
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/sl.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/sl.txt
new file mode 100644
index 00000000000..6b0e0f7bc6b
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/sl.txt
@@ -0,0 +1,818 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: sl
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Svarun
+name ; locale; sl_AQ
+
+expectedResult; Svarun
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Irena
+name ; surname; Orel
+name ; locale; sl_AQ
+
+expectedResult; Orel, Irena
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Irena Orel
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Orel Irena
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Irena O.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Orel, I.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; I. Orel
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Orel I.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Irena
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Orel
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; IO
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; OI
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; I
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; O
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeGGS
+name ; given; Ana Marija
+name ; given2; Vera
+name ; surname; KovaÄ
+name ; locale; sl_AQ
+
+expectedResult; KovaÄ, Ana Marija Vera
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Ana Marija Vera KovaÄ
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; KovaÄ Ana Marija Vera
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; KovaÄ, Ana Marija V.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Ana Marija V. KovaÄ
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; KovaÄ Ana Marija V.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; KovaÄ, Ana Marija
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ana Marija KovaÄ
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; KovaÄ Ana Marija
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; KovaÄ, A. M. V.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; A. M. V. KovaÄ
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; KovaÄ A. M. V.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Ana Marija K.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; KovaÄ A. M.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Ana Marija
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; KovaÄ
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; AVK
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; KAV
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; AK
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; KA
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; g.
+name ; given; Janez
+name ; given-informal; Jani
+name ; given2; Peter
+name ; surname-core; Novak
+name ; generation; ml.
+name ; credentials; univ. dipl. inž.
+name ; locale; sl_AQ
+
+expectedResult; g. Janez Peter Novak ml., univ. dipl. inž.
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; g. Novak Janez Peter, univ. dipl. inž.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Janez P. Novak ml., univ. dipl. inž.
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Novak Janez P. ml., univ. dipl. inž.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Novak, Janez Peter
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Novak, Janez P.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Novak, J. P.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; J. P. Novak
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Novak J. P.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Novak, Jani
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Jani Novak
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Novak Jani
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; g. Novak
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Novak J.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Jani N.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Jani
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; JPN
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; NJP
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; JN
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; NJ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; J
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; N
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; Sinbad
+name ; locale; ko_AQ
+
+expectedResult; Sinbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Käthe
+name ; surname; Müller
+name ; locale; ko_AQ
+
+expectedResult; Müller, Käthe
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Käthe Müller
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Müller Käthe
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Müller, K.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; K. Müller
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Müller K.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Käthe M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Müller
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Käthe
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Zäzilia
+name ; given2; Hamish
+name ; surname; Stöber
+name ; locale; ko_AQ
+
+expectedResult; Stöber, Zäzilia Hamish
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Stöber Zäzilia Hamish
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Zäzilia Hamish Stöber
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Stöber, Zäzilia H.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Stöber Zäzilia H.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Zäzilia H. Stöber
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Stöber, Zäzilia
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Stöber Zäzilia
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Zäzilia Stöber
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Stöber, Z. H.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Stöber Z. H.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Z. H. Stöber
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Zäzilia S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Stöber Z.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Zäzilia
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Stöber
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; SZH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ZHS
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; SZ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ZS
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Z
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; prof. dr.
+name ; given; Ada Cornelia
+name ; given-informal; Neele
+name ; given2; César Martín
+name ; surname-prefix; von
+name ; surname-core; Brühl
+name ; surname2; González Domingo
+name ; generation; ml.
+name ; credentials; dr. med., dr. dent. med.
+name ; locale; ko_AQ
+
+expectedResult; prof. dr. Ada Cornelia César Martín von Brühl ml., dr. med., dr. dent. med.
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; prof. dr. von Brühl Ada Cornelia César Martín, dr. med., dr. dent. med.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Ada Cornelia C. M. von Brühl ml., dr. med., dr. dent. med.
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; von Brühl Ada Cornelia C. M. ml., dr. med., dr. dent. med.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Brühl, Ada Cornelia César Martín von
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Brühl, Ada Cornelia C. M. von
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Brühl, A. C. C. M. von
+
+parameters; sorting; short; referring; formal
+
+expectedResult; A. C. C. M. von Brühl
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; von Brühl A. C. C. M.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; prof. dr. von Brühl
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; von Brühl, Neele
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Neele von Brühl
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; von Brühl A. C.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; von Brühl Neele
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Neele v. B.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Neele
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ACV
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; VAC
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; NV
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VN
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; N
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/so.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/so.txt
new file mode 100644
index 00000000000..b07186c7707
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/so.txt
@@ -0,0 +1,812 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: so
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Zendaya
+name ; locale; so_AQ
+
+expectedResult; Zendaya
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Z
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Amina
+name ; surname; Ali
+name ; locale; so_AQ
+
+expectedResult; Ali, Amina
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ali Amina
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Amina Ali
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Amina A.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Ali, A.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; A. Ali
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Ali A.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Amina
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Ali
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; AA
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; Mariam Geedi
+name ; given2; Hamish
+name ; surname; Hussein
+name ; locale; so_AQ
+
+expectedResult; Hussein, Mariam Geedi Hamish
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Hussein Mariam Geedi Hamish
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Mariam Geedi Hamish Hussein
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Hussein, Mariam Geedi H.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Hussein Mariam Geedi H.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Mariam Geedi H. Hussein
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Hussein, Mariam Geedi
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Hussein Mariam Geedi
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Mariam Geedi Hussein
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Hussein, M. G. H.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Hussein M. G. H.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; M. G. H. Hussein
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Mariam Geedi H.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Hussein M. G.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Mariam Geedi
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Hussein
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; HMH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; MHH
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; HM
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; MH
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; H
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeFull
+name ; title; Mudane
+name ; given; Abdi Taban
+name ; given-informal; Shermake
+name ; given2; Nadifa Maxamed
+name ; surname-core; Iman
+name ; generation; Jr
+name ; credentials; MP
+name ; locale; so_AQ
+
+expectedResult; Iman Mudane Abdi Taban Nadifa Maxamed Jr, MP
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Mudane Abdi Taban Nadifa Maxamed Iman MP
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Iman, Abdi Taban Nadifa Maxamed
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Abdi Taban N. M. Iman MP
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Iman Abdi Taban N. M. MP
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Iman, Abdi Taban N. M.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Iman, A. T. N. M.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; A. T. N. M. Iman
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Iman A. T. N. M.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Iman, Shermake
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Iman Shermake
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Shermake Iman
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Mudane Iman
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Shermake I.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Iman A. T.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Shermake
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ANI
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; IAN
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; IS
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; SI
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; I
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; Sinbad
+name ; locale; ko_AQ
+
+expectedResult; Sinbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Käthe
+name ; surname; Müller
+name ; locale; ko_AQ
+
+expectedResult; Müller, Käthe
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Käthe Müller
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Müller Käthe
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Müller, K.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; K. Müller
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Müller K.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Käthe M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Müller
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Käthe
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Zäzilia
+name ; given2; Hamish
+name ; surname; Stöber
+name ; locale; ko_AQ
+
+expectedResult; Stöber, Zäzilia Hamish
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Stöber Zäzilia Hamish
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Zäzilia Hamish Stöber
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Stöber, Zäzilia H.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Stöber Zäzilia H.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Zäzilia H. Stöber
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Stöber, Zäzilia
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Stöber Zäzilia
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Zäzilia Stöber
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Stöber, Z. H.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Stöber Z. H.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Z. H. Stöber
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Zäzilia S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Stöber Z.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Zäzilia
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Stöber
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; SZH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ZHS
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; SZ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ZS
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Z
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; Prof. Dr.
+name ; given; Ada Cornelia
+name ; given-informal; Neele
+name ; given2; César Martín
+name ; surname-prefix; von
+name ; surname-core; Brühl
+name ; surname2; González Domingo
+name ; generation; Jr
+name ; credentials; MD DDS
+name ; locale; ko_AQ
+
+expectedResult; Prof. Dr. Ada Cornelia César Martín von Brühl González Domingo MD DDS
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; von Brühl Prof. Dr. Ada Cornelia César Martín Jr, MD DDS
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Brühl, Ada Cornelia César Martín von
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Ada Cornelia C. M. von Brühl MD DDS
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; von Brühl Ada Cornelia C. M. MD DDS
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Brühl, Ada Cornelia C. M. von
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Brühl, A. C. C. M. von
+
+parameters; sorting; short; referring; formal
+
+expectedResult; A. C. C. M. von Brühl
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; von Brühl A. C. C. M.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Prof. Dr. von Brühl
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; von Brühl, Neele
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Neele von Brühl
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; von Brühl A. C.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; von Brühl Neele
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Neele v. B.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Neele
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ACV
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; VAC
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; NV
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VN
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; N
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/sq.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/sq.txt
new file mode 100644
index 00000000000..e2f7e2d70be
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/sq.txt
@@ -0,0 +1,655 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: sq
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Blerim
+name ; locale; sq_AQ
+
+expectedResult; Blerim
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; B
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Majlinda
+name ; surname; Kraja
+name ; locale; sq_AQ
+
+expectedResult; Kraja, Majlinda
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Majlinda Kraja
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Majlinda
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Kraja
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; KM
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; MK
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; K
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; M
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; Ilir
+name ; given2; Ilia
+name ; surname; Rustemi
+name ; locale; sq_AQ
+
+expectedResult; Rustemi, Ilir I.
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Rustemi, Ilir
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ilir Rustemi
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Rustemi
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Ilir
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; RII
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; IR
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; RI
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; I
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; R
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; Z.
+name ; given; Gavril
+name ; given-informal; Gav
+name ; given2; Andrea
+name ; surname-core; Dara
+name ; generation; I riu
+name ; locale; sq_AQ
+
+expectedResult; Z. Dara, Gavril A.
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Z. Dara, Gavril
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; Z. Gavril Dara
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Z. Dara, Gav
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Z. Dara
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Z. Gav
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; DGA
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; DG
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; GD
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; D
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; G
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; Sinbad
+name ; locale; ko_AQ
+
+expectedResult; Sinbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Menada
+name ; surname; Fonda
+name ; locale; ko_AQ
+
+expectedResult; Fonda, Menada
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Menada Fonda
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Menada
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Fonda
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; FM
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; MF
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; F
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; M
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGGS
+name ; given; Amarildo
+name ; given2; Andrea
+name ; surname; Lombardi
+name ; locale; ko_AQ
+
+expectedResult; Lombardi, Amarildo A.
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Lombardi, Amarildo
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Amarildo Lombardi
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Amarildo
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Lombardi
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; LAA
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; AL
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; LA
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; L
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignFull
+name ; title; prof. dr.
+name ; given; Gentiana
+name ; given-informal; Genta
+name ; given2; Marie
+name ; surname-prefix; van den
+name ; surname-core; Popa
+name ; surname2; Prodani
+name ; generation; E reja
+name ; credentials; dr. shk. mjek.
+name ; locale; ko_AQ
+
+expectedResult; prof. dr. van den Popa, Gentiana M., dr. shk. mjek.
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; prof. dr. Gentiana van den Popa, dr. shk. mjek.
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; short; referring; formal
+
+expectedResult; prof. dr. Popa, Gentiana van den
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; prof. dr. van den Popa, Gentiana
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; prof. dr. Gentiana van den Popa
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; prof. dr. van den Popa, Genta
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; prof. dr. van den Popa
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; prof. dr. Genta
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; VGM
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; GV
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; VG
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; G
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/sr.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/sr.txt
new file mode 100644
index 00000000000..2167976d02b
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/sr.txt
@@ -0,0 +1,818 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: sr
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Иван
+name ; locale; sr_AQ
+
+expectedResult; Иван
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; И
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Ирена
+name ; surname; Марковић
+name ; locale; sr_AQ
+
+expectedResult; Марковић, Ирена
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ирена Марковић
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Марковић Ирена
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Марковић, И.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; И. Марковић
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Марковић И.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Ирена М.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Марковић
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Ирена
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ИМ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; МИ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; И
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; М
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeGGS
+name ; given; Јован
+name ; given2; Драган
+name ; surname; Поповић
+name ; locale; sr_AQ
+
+expectedResult; Поповић, Јован Драган
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Јован Драган Поповић
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Поповић Јован Драган
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Поповић, Јован Д.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Јован Д. Поповић
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Поповић Јован Д.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Поповић, Ј. Д.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Поповић, Јован
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ј. Д. Поповић
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Јован Поповић
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Поповић Ј. Д.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Поповић Јован
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Поповић Ј.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Јован П.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Поповић
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Јован
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ЈДП
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; ПЈД
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ЈП
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; ПЈ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; Ј
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; П
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; др
+name ; given; Слађана
+name ; given-informal; Слађа
+name ; given2; Вера
+name ; surname-core; Миленковић
+name ; generation; млађи
+name ; credentials; дипл. инж.
+name ; locale; sr_AQ
+
+expectedResult; Миленковић др Слађана Вера млађи, дипл. инж.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Миленковић Слађана В. млађи, дипл. инж.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Слађана В. Миленковић млађи, дипл. инж.
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; др Слађана Вера Миленковић дипл. инж.
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Миленковић, Слађана Вера
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Миленковић, Слађана В.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Миленковић, С. В.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Миленковић, Слађа
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Миленковић С. В.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Миленковић Слађа
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; С. В. Миленковић
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Слађа Миленковић
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; др Миленковић
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Миленковић С.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Слађа М.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Слађа
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; МСВ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; СВМ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; МС
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; СМ
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; М
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; С
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; Синбад
+name ; locale; ko_AQ
+
+expectedResult; Синбад
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; С
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Кете
+name ; surname; Милер
+name ; locale; ko_AQ
+
+expectedResult; Милер, Кете
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Кете Милер
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Милер Кете
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Милер, К.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; К. Милер
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Милер К.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Кете М.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Милер
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Кете
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; КМ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; МК
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; К
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; М
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Цецилија
+name ; given2; Хемиш
+name ; surname; Штебер
+name ; locale; ko_AQ
+
+expectedResult; Штебер, Цецилија Хемиш
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Цецилија Хемиш Штебер
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Штебер Цецилија Хемиш
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Штебер, Цецилија Х.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Цецилија Х. Штебер
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Штебер Цецилија Х.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Штебер, Цецилија
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Цецилија Штебер
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Штебер Цецилија
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Штебер, Ц. Х.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Ц. Х. Штебер
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Штебер Ц. Х.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Цецилија Ш.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Штебер Ц.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Цецилија
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Штебер
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ЦХШ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; ШЦХ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ЦШ
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; ШЦ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; Ц
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; Ш
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignFull
+name ; title; проф. др
+name ; given; ÐлекÑандра
+name ; given-informal; Сања
+name ; given2; Ева Сара
+name ; surname-prefix; ван ден
+name ; surname-core; Волф
+name ; surname2; Петровић Југовић
+name ; generation; млађи
+name ; credentials; дипл. инж.
+name ; locale; ko_AQ
+
+expectedResult; проф. др ÐлекÑандра Ева Сара ван ден Волф Петровић Југовић дипл. инж.
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; ван ден Волф проф. др ÐлекÑандра Ева Сара млађи, дипл. инж.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; ÐлекÑандра Е. С. ван ден Волф млађи, дипл. инж.
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; ван ден Волф ÐлекÑандра Е. С. млађи, дипл. инж.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Волф, ÐлекÑандра Ева Сара ван ден
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Волф, ÐлекÑандра Е. С. ван ден
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Волф, Ð. Е. С. ван ден
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Ð. Е. С. ван ден Волф
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ван ден Волф Ð. Е. С.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; проф. др ван ден Волф
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ван ден Волф, Сања
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; ван ден Волф Сања
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Сања ван ден Волф
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; ван ден Волф Ð.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Сања в. д. В.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Сања
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ÐЕВ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; Ð’ÐЕ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ВС
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; СВ
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; Ð’
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; С
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/sr_Cyrl_BA.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/sr_Cyrl_BA.txt
new file mode 100644
index 00000000000..e786482eb89
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/sr_Cyrl_BA.txt
@@ -0,0 +1,818 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: sr_Cyrl_BA
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Иван
+name ; locale; sr_Cyrl_BA
+
+expectedResult; Иван
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; И
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Ирена
+name ; surname; Марковић
+name ; locale; sr_Cyrl_BA
+
+expectedResult; Марковић, Ирена
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ирена Марковић
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Марковић Ирена
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Марковић, И.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; И. Марковић
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Марковић И.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Ирена М.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Марковић
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Ирена
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ИМ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; МИ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; И
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; М
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeGGS
+name ; given; Јован
+name ; given2; Драган
+name ; surname; Поповић
+name ; locale; sr_Cyrl_BA
+
+expectedResult; Поповић, Јован Драган
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Јован Драган Поповић
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Поповић Јован Драган
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Поповић, Јован Д.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Јован Д. Поповић
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Поповић Јован Д.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Поповић, Ј. Д.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Поповић, Јован
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ј. Д. Поповић
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Јован Поповић
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Поповић Ј. Д.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Поповић Јован
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Поповић Ј.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Јован П.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Поповић
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Јован
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ЈДП
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; ПЈД
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ЈП
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; ПЈ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; Ј
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; П
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; др
+name ; given; Слађана
+name ; given-informal; Слађа
+name ; given2; Вера
+name ; surname-core; Миленковић
+name ; generation; млађи
+name ; credentials; дипл. инж.
+name ; locale; sr_Cyrl_BA
+
+expectedResult; Миленковић др Слађана Вера млађи, дипл. инж.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Миленковић Слађана В. млађи, дипл. инж.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Слађана В. Миленковић млађи, дипл. инж.
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; др Слађана Вера Миленковић дипл. инж.
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Миленковић, Слађана Вера
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Миленковић, Слађана В.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Миленковић, С. В.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Миленковић, Слађа
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Миленковић С. В.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Миленковић Слађа
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; С. В. Миленковић
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Слађа Миленковић
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; др Миленковић
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Миленковић С.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Слађа М.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Слађа
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; МСВ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; СВМ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; МС
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; СМ
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; М
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; С
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; Синбад
+name ; locale; ko_AQ
+
+expectedResult; Синбад
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; С
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Кете
+name ; surname; Милер
+name ; locale; ko_AQ
+
+expectedResult; Милер, Кете
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Кете Милер
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Милер Кете
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Милер, К.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; К. Милер
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Милер К.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Кете М.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Милер
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Кете
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; КМ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; МК
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; К
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; М
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Цецилија
+name ; given2; Хемиш
+name ; surname; Штебер
+name ; locale; ko_AQ
+
+expectedResult; Штебер, Цецилија Хемиш
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Цецилија Хемиш Штебер
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Штебер Цецилија Хемиш
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Штебер, Цецилија Х.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Цецилија Х. Штебер
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Штебер Цецилија Х.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Штебер, Цецилија
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Цецилија Штебер
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Штебер Цецилија
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Штебер, Ц. Х.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Ц. Х. Штебер
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Штебер Ц. Х.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Цецилија Ш.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Штебер Ц.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Цецилија
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Штебер
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ЦХШ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; ШЦХ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ЦШ
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; ШЦ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; Ц
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; Ш
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignFull
+name ; title; проф. др
+name ; given; ÐлекÑандра
+name ; given-informal; Сања
+name ; given2; Ева Сара
+name ; surname-prefix; ван ден
+name ; surname-core; Волф
+name ; surname2; Петровић Југовић
+name ; generation; млађи
+name ; credentials; дипл. инж.
+name ; locale; ko_AQ
+
+expectedResult; проф. др ÐлекÑандра Ева Сара ван ден Волф Петровић Југовић дипл. инж.
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; ван ден Волф проф. др ÐлекÑандра Ева Сара млађи, дипл. инж.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; ÐлекÑандра Е. С. ван ден Волф млађи, дипл. инж.
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; ван ден Волф ÐлекÑандра Е. С. млађи, дипл. инж.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Волф, ÐлекÑандра Ева Сара ван ден
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Волф, ÐлекÑандра Е. С. ван ден
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Волф, Ð. Е. С. ван ден
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Ð. Е. С. ван ден Волф
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ван ден Волф Ð. Е. С.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; проф. др ван ден Волф
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ван ден Волф, Сања
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; ван ден Волф Сања
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Сања ван ден Волф
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; ван ден Волф Ð.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Сања в. д. В.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Сања
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ÐЕВ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; Ð’ÐЕ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ВС
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; СВ
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; Ð’
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; С
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/sr_Latn.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/sr_Latn.txt
new file mode 100644
index 00000000000..fb8c4342ea5
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/sr_Latn.txt
@@ -0,0 +1,818 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: sr_Latn
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Ivan
+name ; locale; sr_Latn_AQ
+
+expectedResult; Ivan
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; I
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Irena
+name ; surname; Marković
+name ; locale; sr_Latn_AQ
+
+expectedResult; Marković, Irena
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Irena Marković
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Marković Irena
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Marković, I.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; I. Marković
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Marković I.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Irena M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Marković
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Irena
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; IM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MI
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; I
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeGGS
+name ; given; Jovan
+name ; given2; Dragan
+name ; surname; Popović
+name ; locale; sr_Latn_AQ
+
+expectedResult; Popović, Jovan Dragan
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Jovan Dragan Popović
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Popović Jovan Dragan
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Popović, Jovan D.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Jovan D. Popović
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Popović Jovan D.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Popović, J. D.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Popović, Jovan
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; J. D. Popović
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Jovan Popović
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Popović J. D.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Popović Jovan
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Popović J.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Jovan P.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Popović
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Jovan
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; JDP
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; PJD
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; JP
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; PJ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; J
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; P
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; dr
+name ; given; Slađana
+name ; given-informal; Slađa
+name ; given2; Vera
+name ; surname-core; Milenković
+name ; generation; mlađi
+name ; credentials; dipl. inž.
+name ; locale; sr_Latn_AQ
+
+expectedResult; Milenković dr Slađana Vera mlađi, dipl. inž.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Milenković Slađana V. mlađi, dipl. inž.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Slađana V. Milenković mlađi, dipl. inž.
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; dr Slađana Vera Milenković dipl. inž.
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Milenković, Slađana Vera
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Milenković, Slađana V.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Milenković, S. V.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Milenković, Slađa
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Milenković S. V.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Milenković Slađa
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; S. V. Milenković
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Slađa Milenković
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; dr Milenković
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Milenković S.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Slađa M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Slađa
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; MSV
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; SVM
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; MS
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; SM
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; Sinbad
+name ; locale; ko_AQ
+
+expectedResult; Sinbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Kete
+name ; surname; Miler
+name ; locale; ko_AQ
+
+expectedResult; Miler, Kete
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Kete Miler
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Miler Kete
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Miler, K.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; K. Miler
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Miler K.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Kete M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Miler
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Kete
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Cecilija
+name ; given2; Hemiš
+name ; surname; Å teber
+name ; locale; ko_AQ
+
+expectedResult; Šteber, Cecilija Hemiš
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Cecilija Hemiš Šteber
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Šteber Cecilija Hemiš
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Å teber, Cecilija H.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Cecilija H. Å teber
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Å teber Cecilija H.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Å teber, Cecilija
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Cecilija Å teber
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Å teber Cecilija
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Å teber, C. H.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; C. H. Å teber
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Å teber C. H.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Cecilija Å .
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Å teber C.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Cecilija
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Å teber
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; CHÅ 
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; Å CH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; CÅ 
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; Å C
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; C
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; Å 
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignFull
+name ; title; prof. dr
+name ; given; Aleksandra
+name ; given-informal; Sanja
+name ; given2; Eva Sara
+name ; surname-prefix; van den
+name ; surname-core; Volf
+name ; surname2; Petrović Jugović
+name ; generation; mlađi
+name ; credentials; dipl. inž.
+name ; locale; ko_AQ
+
+expectedResult; prof. dr Aleksandra Eva Sara van den Volf Petrović Jugović dipl. inž.
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; van den Volf prof. dr Aleksandra Eva Sara mlađi, dipl. inž.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Aleksandra E. S. van den Volf mlađi, dipl. inž.
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; van den Volf Aleksandra E. S. mlađi, dipl. inž.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Volf, Aleksandra Eva Sara van den
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Volf, Aleksandra E. S. van den
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Volf, A. E. S. van den
+
+parameters; sorting; short; referring; formal
+
+expectedResult; A. E. S. van den Volf
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; prof. dr van den Volf
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; van den Volf A. E. S.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; van den Volf, Sanja
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Sanja van den Volf
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; van den Volf Sanja
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; van den Volf A.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Sanja v. d. V.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Sanja
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; AEV
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; VAE
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; SV
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VS
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/sr_Latn_BA.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/sr_Latn_BA.txt
new file mode 100644
index 00000000000..d37883f160c
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/sr_Latn_BA.txt
@@ -0,0 +1,818 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: sr_Latn_BA
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Ivan
+name ; locale; sr_Latn_BA
+
+expectedResult; Ivan
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; I
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Irena
+name ; surname; Marković
+name ; locale; sr_Latn_BA
+
+expectedResult; Marković, Irena
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Irena Marković
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Marković Irena
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Marković, I.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; I. Marković
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Marković I.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Irena M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Marković
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Irena
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; IM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MI
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; I
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeGGS
+name ; given; Jovan
+name ; given2; Dragan
+name ; surname; Popović
+name ; locale; sr_Latn_BA
+
+expectedResult; Popović, Jovan Dragan
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Jovan Dragan Popović
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Popović Jovan Dragan
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Popović, Jovan D.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Jovan D. Popović
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Popović Jovan D.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Popović, J. D.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Popović, Jovan
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; J. D. Popović
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Jovan Popović
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Popović J. D.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Popović Jovan
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Popović J.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Jovan P.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Popović
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Jovan
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; JDP
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; PJD
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; JP
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; PJ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; J
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; P
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; dr
+name ; given; Slađana
+name ; given-informal; Slađa
+name ; given2; Vera
+name ; surname-core; Milenković
+name ; generation; mlađi
+name ; credentials; dipl. inž.
+name ; locale; sr_Latn_BA
+
+expectedResult; Milenković dr Slađana Vera mlađi, dipl. inž.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Milenković Slađana V. mlađi, dipl. inž.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Slađana V. Milenković mlađi, dipl. inž.
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; dr Slađana Vera Milenković dipl. inž.
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Milenković, Slađana Vera
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Milenković, Slađana V.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Milenković, S. V.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Milenković, Slađa
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Milenković S. V.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Milenković Slađa
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; S. V. Milenković
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Slađa Milenković
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; dr Milenković
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Milenković S.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Slađa M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Slađa
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; MSV
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; SVM
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; MS
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; SM
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; Sinbad
+name ; locale; ko_AQ
+
+expectedResult; Sinbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Kete
+name ; surname; Miler
+name ; locale; ko_AQ
+
+expectedResult; Miler, Kete
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Kete Miler
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Miler Kete
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Miler, K.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; K. Miler
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Miler K.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Kete M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Miler
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Kete
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Cecilija
+name ; given2; Hemiš
+name ; surname; Å teber
+name ; locale; ko_AQ
+
+expectedResult; Šteber, Cecilija Hemiš
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Cecilija Hemiš Šteber
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Šteber Cecilija Hemiš
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Å teber, Cecilija H.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Cecilija H. Å teber
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Å teber Cecilija H.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Å teber, Cecilija
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Cecilija Å teber
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Å teber Cecilija
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Å teber, C. H.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; C. H. Å teber
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Å teber C. H.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Cecilija Å .
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Å teber C.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Cecilija
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Å teber
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; CHÅ 
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; Å CH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; CÅ 
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; Å C
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; C
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; Å 
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignFull
+name ; title; prof. dr
+name ; given; Aleksandra
+name ; given-informal; Sanja
+name ; given2; Eva Sara
+name ; surname-prefix; van den
+name ; surname-core; Volf
+name ; surname2; Petrović Jugović
+name ; generation; mlađi
+name ; credentials; dipl. inž.
+name ; locale; ko_AQ
+
+expectedResult; prof. dr Aleksandra Eva Sara van den Volf Petrović Jugović dipl. inž.
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; van den Volf prof. dr Aleksandra Eva Sara mlađi, dipl. inž.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Aleksandra E. S. van den Volf mlađi, dipl. inž.
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; van den Volf Aleksandra E. S. mlađi, dipl. inž.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Volf, Aleksandra Eva Sara van den
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Volf, Aleksandra E. S. van den
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Volf, A. E. S. van den
+
+parameters; sorting; short; referring; formal
+
+expectedResult; A. E. S. van den Volf
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; prof. dr van den Volf
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; van den Volf A. E. S.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; van den Volf, Sanja
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Sanja van den Volf
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; van den Volf Sanja
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; van den Volf A.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Sanja v. d. V.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Sanja
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; AEV
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; VAE
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; SV
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VS
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/sv.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/sv.txt
new file mode 100644
index 00000000000..bde78126282
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/sv.txt
@@ -0,0 +1,806 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: sv
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Stefan
+name ; locale; sv_AQ
+
+expectedResult; Stefan
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Ingrid
+name ; surname; Andersson
+name ; locale; sv_AQ
+
+expectedResult; Andersson, Ingrid
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Andersson Ingrid
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; Ingrid Andersson
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Andersson, I
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Andersson I
+
+parameters; sorting; short; referring; formal
+
+expectedResult; I Andersson
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Andersson
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Ingrid A
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Ingrid
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; AI
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; IA
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; I
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; Johan
+name ; given2; Harald
+name ; surname; Wallin
+name ; locale; sv_AQ
+
+expectedResult; Wallin, Johan Harald
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Johan Harald Wallin
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Wallin Johan Harald
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Wallin, Johan H
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Johan H Wallin
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Wallin Johan H
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Wallin, Johan
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Johan Wallin
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Wallin, J H
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; J H Wallin
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Wallin J H
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Wallin, J
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Johan W
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Wallin
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Johan
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; JHW
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; medium; monogram; formal
+
+expectedResult; WJH
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+
+expectedResult; JW
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; WJ
+
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; J
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; W
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; Herr
+name ; given; Lars-Ã…ke
+name ; given-informal; Lasse
+name ; given2; Karl
+name ; surname-core; Hermansson
+name ; generation; Jr.
+name ; credentials; Riksdagsledamot
+name ; locale; sv_AQ
+
+expectedResult; Hermansson, Herr Lars-Ã…ke Karl, Riksdagsledamot
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Riksdagsledamot Lars-Ã…ke Karl Hermansson
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Hermansson, Lars-Ã…ke K, Riksdagsledamot
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Riksdagsledamot Lars-Ã…ke K Hermansson
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Hermansson Lars-Ã…ke Karl
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Hermansson Lars-Ã…ke K
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Hermansson, L Ã… K
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Hermansson, Lasse
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Hermansson L Ã… K
+
+parameters; sorting; short; referring; formal
+
+expectedResult; L Ã… K Hermansson
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Lasse Hermansson
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Hermansson, L Ã…
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Herr Hermansson
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Lasse H
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Lasse
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; HLK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+
+expectedResult; LKH
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; medium; monogram; formal
+
+expectedResult; HL
+
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; LH
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; H
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; L
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; Sinbad
+name ; locale; ko_AQ
+
+expectedResult; Sinbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Käthe
+name ; surname; Müller
+name ; locale; ko_AQ
+
+expectedResult; Müller, Käthe
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Käthe Müller
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Müller Käthe
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; Müller, K
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; K Müller
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Müller K
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Käthe M
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Müller
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Käthe
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Zäzilia
+name ; given2; Hamish
+name ; surname; Stöber
+name ; locale; ko_AQ
+
+expectedResult; Stöber, Zäzilia Hamish
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Stöber Zäzilia Hamish
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Zäzilia Hamish Stöber
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Stöber, Zäzilia H
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Stöber Zäzilia H
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Zäzilia H Stöber
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Stöber, Zäzilia
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Zäzilia Stöber
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Stöber, Z H
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Stöber Z H
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Z H Stöber
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Stöber, Z
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Zäzilia S
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Zäzilia
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Stöber
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; SZH
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+
+expectedResult; ZHS
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; medium; monogram; formal
+
+expectedResult; SZ
+
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; ZS
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Z
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; Prof. dr.
+name ; given; Ann-Christine
+name ; given-informal; Anki
+name ; given2; Eva Sofia
+name ; surname-prefix; van den
+name ; surname-core; Karlsson
+name ; surname2; Beck Strand
+name ; generation; jr.
+name ; credentials; med. dr. fil. dr. jur. dr.
+name ; locale; ko_AQ
+
+expectedResult; med. dr. fil. dr. jur. dr. Ann-Christine Eva Sofia van den Karlsson Beck Strand
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; van den Karlsson, Prof. dr. Ann-Christine Eva Sofia, med. dr. fil. dr. jur. dr.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; van den Karlsson, Ann-Christine E S, med. dr. fil. dr. jur. dr.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; med. dr. fil. dr. jur. dr. Ann-Christine E S van den Karlsson
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; van den Karlsson Beck Strand, Ann-Christine Eva Sofia
+
+parameters; sorting; long; referring; formal
+
+expectedResult; van den Karlsson Beck Strand, Ann-Christine E S
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; van den Karlsson Beck Strand, A C E S
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Prof. dr. van den Karlsson
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; van den Karlsson, A C E S
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; A C E S van den Karlsson
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; van den Karlsson, Anki
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Anki van den Karlsson
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; van den Karlsson, A C
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Anki v d K
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Anki
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; AEV
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; medium; monogram; formal
+
+expectedResult; VAE
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+
+expectedResult; AV
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; VA
+
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/sw.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/sw.txt
new file mode 100644
index 00000000000..119cc16e849
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/sw.txt
@@ -0,0 +1,806 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: sw
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Hassan
+name ; locale; sw_AQ
+
+expectedResult; Hassan
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; H
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Maria
+name ; surname; Hasani
+name ; locale; sw_AQ
+
+expectedResult; Hasani, Maria
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Hasani Maria
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Maria Hasani
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Hasani, M.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Hasani M.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; M. Hasani
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Hasani
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Maria
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; HM
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; MH
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; H
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; Ali
+name ; given2; Juma
+name ; surname; Hamisi
+name ; locale; sw_AQ
+
+expectedResult; Hamisi, Ali Juma
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Ali Juma Hamisi
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Hamisi Ali Juma
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Hamisi, Ali J.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Ali J. Hamisi
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Hamisi Ali J.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Hamisi, A. J.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; A. J. Hamisi
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Hamisi A. J.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Hamisi, Ali
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ali Hamisi
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Hamisi Ali
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Hamisi A.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Hamisi
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; AJH
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; Ali
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; HAJ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; AH
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; HA
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; H
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; Bw.
+name ; given; Adam Juma
+name ; given-informal; Bita
+name ; given2; Agape Shukurani
+name ; surname-core; Masalu
+name ; generation; Jr
+name ; credentials; MB
+name ; locale; sw_AQ
+
+expectedResult; Bw. Adam Juma Agape Shukurani Masalu MB
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Adam Juma Agape Shukurani Masalu MB
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Masalu Adam Juma Agape Shukurani MB
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Masalu, Adam Juma Agape Shukurani
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Adam Juma A. S. Masalu Jr, MB
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Masalu Adam Juma A. S. MB
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Masalu, Adam Juma A. S.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Masalu, A. J. A. S.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; A. J. A. S. Masalu
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Masalu A. J. A. S.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Masalu A. J.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Masalu, Bita
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Bita Masalu
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Masalu Bita
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Bw. Masalu
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Bita
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; AAM
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; MAA
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; BM
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MB
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; B
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; Kevin
+name ; locale; ko_AQ
+
+expectedResult; Kevin
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; K
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; John
+name ; surname; Mkwawa
+name ; locale; ko_AQ
+
+expectedResult; Mkwawa, John
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; John Mkwawa
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Mkwawa John
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Mkwawa, J.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; J. Mkwawa
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Mkwawa J.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Mkwawa
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; John
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; JM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MJ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; J
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Zamara
+name ; given2; Imani
+name ; surname; Bukenya
+name ; locale; ko_AQ
+
+expectedResult; Bukenya, Zamara Imani
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Bukenya Zamara Imani
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Zamara Imani Bukenya
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Bukenya, Zamara I.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Bukenya Zamara I.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Zamara I. Bukenya
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Bukenya, Zamara
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Bukenya Zamara
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Bukenya, Z. I.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Zamara Bukenya
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Bukenya Z. I.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Z. I. Bukenya
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Bukenya Z.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Bukenya
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Zamara
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; BZI
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ZIB
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; BZ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ZB
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; B
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Z
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; Prof. Dk.
+name ; given; Salima
+name ; given-informal; Sarah
+name ; given2; Farida
+name ; surname-prefix; mwana
+name ; surname-core; Hamisi
+name ; surname2; Musa
+name ; generation; Jr
+name ; credentials; M.D. Ph.D.
+name ; locale; ko_AQ
+
+expectedResult; Prof. Dk. Salima Farida mwana Hamisi Musa M.D. Ph.D.
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; mwana Hamisi Salima Farida M.D. Ph.D.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Salima F. mwana Hamisi Jr, M.D. Ph.D.
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Salima Farida mwana Hamisi M.D. Ph.D.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; mwana Hamisi Salima F. M.D. Ph.D.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Hamisi, Salima Farida mwana
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Hamisi, Salima F. mwana
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Prof. Dk. mwana Hamisi
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Hamisi, S. F. mwana
+
+parameters; sorting; short; referring; formal
+
+expectedResult; mwana Hamisi, Sarah
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; mwana Hamisi S. F.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; mwana Hamisi Sarah
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; S. F. mwana Hamisi
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Sarah mwana Hamisi
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; mwana Hamisi S.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Sarah
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; MSF
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; SFM
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; MS
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; SM
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/sw_KE.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/sw_KE.txt
new file mode 100644
index 00000000000..07501b707fc
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/sw_KE.txt
@@ -0,0 +1,806 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: sw_KE
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Hassan
+name ; locale; sw_KE
+
+expectedResult; Hassan
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; H
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Maria
+name ; surname; Hasani
+name ; locale; sw_KE
+
+expectedResult; Hasani, Maria
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Hasani Maria
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Maria Hasani
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Hasani, M.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Hasani M.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; M. Hasani
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Hasani
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Maria
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; HM
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; MH
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; H
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; Ali
+name ; given2; Juma
+name ; surname; Hamisi
+name ; locale; sw_KE
+
+expectedResult; Hamisi, Ali Juma
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Ali Juma Hamisi
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Hamisi Ali Juma
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Hamisi, Ali J.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Ali J. Hamisi
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Hamisi Ali J.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Hamisi, A. J.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; A. J. Hamisi
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Hamisi A. J.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Hamisi, Ali
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ali Hamisi
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Hamisi Ali
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Hamisi A.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Hamisi
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; AJH
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; Ali
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; HAJ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; AH
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; HA
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; H
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; Bw.
+name ; given; Adam Juma
+name ; given-informal; Bita
+name ; given2; Agape Shukurani
+name ; surname-core; Masalu
+name ; generation; Jr
+name ; credentials; MB
+name ; locale; sw_KE
+
+expectedResult; Bw. Adam Juma Agape Shukurani Masalu MB
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Adam Juma Agape Shukurani Masalu MB
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Masalu Adam Juma Agape Shukurani MB
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Masalu, Adam Juma Agape Shukurani
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Adam Juma A. S. Masalu Jr, MB
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Masalu Adam Juma A. S. MB
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Masalu, Adam Juma A. S.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Masalu, A. J. A. S.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; A. J. A. S. Masalu
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Masalu A. J. A. S.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Masalu A. J.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Masalu, Bita
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Bita Masalu
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Masalu Bita
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Bw. Masalu
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Bita
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; AAM
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; MAA
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; BM
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MB
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; B
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; Kevin
+name ; locale; ko_AQ
+
+expectedResult; Kevin
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; K
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; John
+name ; surname; Mkwawa
+name ; locale; ko_AQ
+
+expectedResult; Mkwawa, John
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; John Mkwawa
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Mkwawa John
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Mkwawa, J.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; J. Mkwawa
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Mkwawa J.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Mkwawa
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; John
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; JM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MJ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; J
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Zamara
+name ; given2; Imani
+name ; surname; Bukenya
+name ; locale; ko_AQ
+
+expectedResult; Bukenya, Zamara Imani
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Bukenya Zamara Imani
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Zamara Imani Bukenya
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Bukenya, Zamara I.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Bukenya Zamara I.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Zamara I. Bukenya
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Bukenya, Zamara
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Bukenya Zamara
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Bukenya, Z. I.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Zamara Bukenya
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Bukenya Z. I.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Z. I. Bukenya
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Bukenya Z.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Bukenya
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Zamara
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; BZI
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ZIB
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; BZ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ZB
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; B
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Z
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; Prof. Dk.
+name ; given; Salima
+name ; given-informal; Sarah
+name ; given2; Farida
+name ; surname-prefix; mwana
+name ; surname-core; Hamisi
+name ; surname2; Musa
+name ; generation; Jr
+name ; credentials; M.D. Ph.D.
+name ; locale; ko_AQ
+
+expectedResult; Prof. Dk. Salima Farida mwana Hamisi Musa M.D. Ph.D.
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; mwana Hamisi Salima Farida M.D. Ph.D.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Salima F. mwana Hamisi Jr, M.D. Ph.D.
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Salima Farida mwana Hamisi M.D. Ph.D.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; mwana Hamisi Salima F. M.D. Ph.D.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Hamisi, Salima Farida mwana
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Hamisi, Salima F. mwana
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Prof. Dk. mwana Hamisi
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Hamisi, S. F. mwana
+
+parameters; sorting; short; referring; formal
+
+expectedResult; mwana Hamisi, Sarah
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; mwana Hamisi S. F.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; mwana Hamisi Sarah
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; S. F. mwana Hamisi
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Sarah mwana Hamisi
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; mwana Hamisi S.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Sarah
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; MSF
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; SFM
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; MS
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; SM
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ta.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ta.txt
new file mode 100644
index 00000000000..37cc63ea284
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ta.txt
@@ -0,0 +1,823 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: ta
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; ராஜேநà¯à®¤à®¿à®°à®©à¯
+name ; locale; ta_AQ
+
+expectedResult; ராஜேநà¯à®¤à®¿à®°à®©à¯
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ரா
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; ராஜேநà¯à®¤à®¿à®°
+name ; surname; சோழனà¯
+name ; locale; ta_AQ
+
+expectedResult; சோழன௠ராஜேநà¯à®¤à®¿à®°
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+
+expectedResult; ராஜேநà¯à®¤à®¿à®° சோழனà¯
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+
+expectedResult; சோ. ராஜேநà¯à®¤à®¿à®°
+
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; ராஜேநà¯à®¤à®¿à®° சோ.
+
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ரா. சோழனà¯
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ராஜேநà¯à®¤à®¿à®°
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; சோழனà¯
+
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; சோரா
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+
+expectedResult; ராசோ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; சோ
+
+parameters; givenFirst; short; monogram; formal
+
+expectedResult; ரா
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; ராஜ
+name ; given2; ராஜ
+name ; surname; சோழனà¯
+name ; locale; ta_AQ
+
+expectedResult; ராஜ ராஜ, சோழனà¯
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+
+expectedResult; சோழன௠ராஜ ராஜ
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; ரா. ரா. சோழனà¯
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ராஜ ரா. சோழனà¯
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; ராஜ ராஜ சோழனà¯
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; ராஜ ரா., சோ.
+
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ராஜ ராஜ, சோ.
+
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+
+expectedResult; சோ. ராஜ ராஜ
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; சோழன௠ராஜ
+
+parameters; surnameFirst; long; referring; informal
+
+expectedResult; ரா. சோழனà¯
+
+parameters; givenFirst; medium; addressing; formal
+
+expectedResult; ராஜ சோழனà¯
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; சோ. ராஜ
+
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; சோராரா
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ராராசோ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; சோழனà¯
+
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; சோரா
+
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+
+expectedResult; ராசோ
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; ராஜ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; சோ
+
+parameters; givenFirst; short; monogram; formal
+
+expectedResult; ரா
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeFull
+name ; title; திரà¯.
+name ; given; ராஜ ராஜனà¯
+name ; given-informal; ராஜனà¯
+name ; given2; ராஜனà¯
+name ; surname-core; சோழனà¯
+name ; generation; இளையவரà¯
+name ; credentials; எமà¯à®ªà®¿
+name ; locale; ta_AQ
+
+expectedResult; திரà¯. சோழன௠ராஜ ராஜன௠ராஜன௠எமà¯à®ªà®¿
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; ராஜ ராஜன௠ராஜன௠சோழன௠எமà¯à®ªà®¿
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; சோ. ராஜ ராஜன௠ராஜன௠எமà¯à®ªà®¿
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; ராஜ ராஜன௠ரா. சோழன௠எமà¯à®ªà®¿
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; ராஜ ராஜன௠ராஜனà¯, சோழனà¯
+
+parameters; sorting; long; referring; formal
+
+expectedResult; திரà¯. ராஜ ராஜன௠சோழனà¯
+
+parameters; givenFirst; long; addressing; formal
+
+expectedResult; ராஜ ராஜன௠ராஜனà¯, சோ.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; திரà¯. சோ. ராஜ ராஜனà¯
+
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+
+expectedResult; திரà¯. ரா. ரா. சோழனà¯
+
+parameters; givenFirst; medium; addressing; formal
+
+expectedResult; ராஜ ராஜன௠ரா., சோ.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; ராஜன௠ராஜனà¯, சோழனà¯
+
+parameters; sorting; long; referring; informal
+
+expectedResult; ரா. ரா. ரா. சோழனà¯
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ராஜன௠ராஜனà¯, சோ.
+
+parameters; sorting; medium; referring; informal
+
+expectedResult; திரà¯. ராஜ ராஜனà¯
+
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ராஜன௠ரா., சோ.
+
+parameters; sorting; short; referring; informal
+
+expectedResult; சோ. ராஜ ராஜனà¯
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; சோழன௠ராஜனà¯
+
+parameters; surnameFirst; long; referring; informal
+
+expectedResult; திரà¯. சோழனà¯
+
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; ராஜன௠சோழனà¯
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; சோ. ராஜனà¯
+
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; சோராரா
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ராராசோ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; ராஜனà¯
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; சோரா
+
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+
+expectedResult; ராசோ
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; சோ
+
+parameters; givenFirst; short; monogram; formal
+
+expectedResult; ரா
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; அலà¯à®ªà¯‹à®©à¯à®šà¯‹
+name ; locale; fr_AQ
+
+expectedResult; அலà¯à®ªà¯‹à®©à¯à®šà¯‹
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; à®…
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; அலà¯à®ªà¯‹à®©à¯à®šà¯‹
+name ; surname; ஹெரà¯à®©à®¾à®£à¯à®Ÿà®¸à¯
+name ; locale; fr_AQ
+
+expectedResult; அலà¯à®ªà¯‹à®©à¯à®šà¯‹ ஹெரà¯à®©à®¾à®£à¯à®Ÿà®¸à¯
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+
+expectedResult; ஹெரà¯à®©à®¾à®£à¯à®Ÿà®¸à¯ அலà¯à®ªà¯‹à®©à¯à®šà¯‹
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+
+expectedResult; à®…. ஹெரà¯à®©à®¾à®£à¯à®Ÿà®¸à¯
+
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; referring; formal
+
+expectedResult; அலà¯à®ªà¯‹à®©à¯à®šà¯‹ ஹெ.
+
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ஹெ. அலà¯à®ªà¯‹à®©à¯à®šà¯‹
+
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; ஹெரà¯à®©à®¾à®£à¯à®Ÿà®¸à¯
+
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; அலà¯à®ªà¯‹à®©à¯à®šà¯‹
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; அஹெ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; ஹெஅ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+
+expectedResult; ஹெ
+
+parameters; givenFirst; short; monogram; formal
+
+expectedResult; à®…
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGGS
+name ; given; அலà¯à®ªà¯‹à®©à¯à®šà¯‹
+name ; given2; எரà¯à®©à®¸à¯à®Ÿà¯‹
+name ; surname; ஹெரà¯à®©à®¾à®£à¯à®Ÿà®¸à¯
+name ; locale; fr_AQ
+
+expectedResult; அலà¯à®ªà¯‹à®©à¯à®šà¯‹ எரà¯à®©à®¸à¯à®Ÿà¯‹, ஹெரà¯à®©à®¾à®£à¯à®Ÿà®¸à¯
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+
+expectedResult; அலà¯à®ªà¯‹à®©à¯à®šà¯‹ எரà¯à®©à®¸à¯à®Ÿà¯‹ ஹெரà¯à®©à®¾à®£à¯à®Ÿà®¸à¯
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; ஹெரà¯à®©à®¾à®£à¯à®Ÿà®¸à¯ அலà¯à®ªà¯‹à®©à¯à®šà¯‹ எரà¯à®©à®¸à¯à®Ÿà¯‹
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; அலà¯à®ªà¯‹à®©à¯à®šà¯‹ எ. ஹெரà¯à®©à®¾à®£à¯à®Ÿà®¸à¯
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; அலà¯à®ªà¯‹à®©à¯à®šà¯‹ எரà¯à®©à®¸à¯à®Ÿà¯‹, ஹெ.
+
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+
+expectedResult; ஹெ. அலà¯à®ªà¯‹à®©à¯à®šà¯‹ எரà¯à®©à®¸à¯à®Ÿà¯‹
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; அலà¯à®ªà¯‹à®©à¯à®šà¯‹ ஹெரà¯à®©à®¾à®£à¯à®Ÿà®¸à¯
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; ஹெரà¯à®©à®¾à®£à¯à®Ÿà®¸à¯ அலà¯à®ªà¯‹à®©à¯à®šà¯‹
+
+parameters; surnameFirst; long; referring; informal
+
+expectedResult; à®…. எ. ஹெரà¯à®©à®¾à®£à¯à®Ÿà®¸à¯
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; அலà¯à®ªà¯‹à®©à¯à®šà¯‹ எ., ஹெ.
+
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; à®…. ஹெரà¯à®©à®¾à®£à¯à®Ÿà®¸à¯
+
+parameters; givenFirst; medium; addressing; formal
+
+expectedResult; ஹெ. அலà¯à®ªà¯‹à®©à¯à®šà¯‹
+
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; ஹெரà¯à®©à®¾à®£à¯à®Ÿà®¸à¯
+
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; அலà¯à®ªà¯‹à®©à¯à®šà¯‹
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; அஎஹெ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; ஹெஅஎ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; அஹெ
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; ஹெஅ
+
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+
+expectedResult; ஹெ
+
+parameters; givenFirst; short; monogram; formal
+
+expectedResult; à®…
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; பேராசிரியரà¯
+name ; given; அலà¯à®ªà¯‹à®©à¯à®šà¯‹
+name ; given-informal; அலà¯à®ªà¯‹à®©à¯à®¸à¯
+name ; given2; எரà¯à®©à®¸à¯à®Ÿà¯‹
+name ; surname-prefix; வானà¯
+name ; surname-core; ஹெரà¯à®©à®¾à®£à¯à®Ÿà®¸à¯
+name ; generation; இளைய
+name ; credentials; பிஎசà¯.டி
+name ; locale; fr_AQ
+
+expectedResult; பேராசிரியர௠வான௠ஹெரà¯à®©à®¾à®£à¯à®Ÿà®¸à¯ அலà¯à®ªà¯‹à®©à¯à®šà¯‹ எரà¯à®©à®¸à¯à®Ÿà¯‹ பிஎசà¯.டி
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; அலà¯à®ªà¯‹à®©à¯à®šà¯‹ எரà¯à®©à®¸à¯à®Ÿà¯‹ வான௠ஹெரà¯à®©à®¾à®£à¯à®Ÿà®¸à¯ பிஎசà¯.டி
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; அலà¯à®ªà¯‹à®©à¯à®šà¯‹ எ. வான௠ஹெரà¯à®©à®¾à®£à¯à®Ÿà®¸à¯ பிஎசà¯.டி
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; பேராசிரியர௠அலà¯à®ªà¯‹à®©à¯à®šà¯‹ வான௠ஹெரà¯à®©à®¾à®£à¯à®Ÿà®¸à¯
+
+parameters; givenFirst; long; addressing; formal
+
+expectedResult; அலà¯à®ªà¯‹à®©à¯à®šà¯‹ எரà¯à®©à®¸à¯à®Ÿà¯‹, வான௠ஹெரà¯à®©à®¾à®£à¯à®Ÿà®¸à¯
+
+parameters; sorting; long; referring; formal
+
+expectedResult; அலà¯à®ªà¯‹à®©à¯à®¸à¯ எரà¯à®©à®¸à¯à®Ÿà¯‹, வான௠ஹெரà¯à®©à®¾à®£à¯à®Ÿà®¸à¯
+
+parameters; sorting; long; referring; informal
+
+expectedResult; வா. ஹெ. அலà¯à®ªà¯‹à®©à¯à®šà¯‹ எரà¯à®©à®¸à¯à®Ÿà¯‹ பிஎசà¯.டி
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; பேராசிரியர௠அ. வான௠ஹெரà¯à®©à®¾à®£à¯à®Ÿà®¸à¯
+
+parameters; givenFirst; medium; addressing; formal
+
+expectedResult; பேராசிரியர௠வா. ஹெ. அலà¯à®ªà¯‹à®©à¯à®šà¯‹
+
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+
+expectedResult; பேராசிரியர௠வான௠ஹெரà¯à®©à®¾à®£à¯à®Ÿà®¸à¯
+
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; அலà¯à®ªà¯‹à®©à¯à®šà¯‹ எரà¯à®©à®¸à¯à®Ÿà¯‹, வா. ஹெ.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; அலà¯à®ªà¯‹à®©à¯à®¸à¯ எரà¯à®©à®¸à¯à®Ÿà¯‹, வா. ஹெ.
+
+parameters; sorting; medium; referring; informal
+
+expectedResult; அலà¯à®ªà¯‹à®©à¯à®¸à¯ வான௠ஹெரà¯à®©à®¾à®£à¯à®Ÿà®¸à¯
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; வான௠ஹெரà¯à®©à®¾à®£à¯à®Ÿà®¸à¯ அலà¯à®ªà¯‹à®©à¯à®¸à¯
+
+parameters; surnameFirst; long; referring; informal
+
+expectedResult; à®…. எ. வான௠ஹெரà¯à®©à®¾à®£à¯à®Ÿà®¸à¯
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; அலà¯à®ªà¯‹à®©à¯à®šà¯‹ எ., வா. ஹெ.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; அலà¯à®ªà¯‹à®©à¯à®¸à¯ எ., வா. ஹெ.
+
+parameters; sorting; short; referring; informal
+
+expectedResult; பேராசிரியர௠அலà¯à®ªà¯‹à®©à¯à®šà¯‹
+
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; வா. ஹெ. அலà¯à®ªà¯‹à®©à¯à®šà¯‹
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; வா. ஹெ. அலà¯à®ªà¯‹à®©à¯à®¸à¯
+
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; அலà¯à®ªà¯‹à®©à¯à®¸à¯
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; அஎவா
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; வாஅஎ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; அவா
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; வாஅ
+
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+
+expectedResult; வா
+
+parameters; givenFirst; short; monogram; formal
+
+expectedResult; à®…
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/te.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/te.txt
new file mode 100644
index 00000000000..4e7b4dc1ae6
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/te.txt
@@ -0,0 +1,794 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: te
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; రాజశేఖరà±
+name ; locale; te_AQ
+
+expectedResult; రాజశేఖరà±
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; à°°à°¾
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; రాజశేఖరà±
+name ; surname; రెడà±à°¡à°¿
+name ; locale; te_AQ
+
+expectedResult; రెడà±à°¡à°¿, రాజశేఖరà±
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; రాజశేఖరౠరెడà±à°¡à°¿
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; రెడà±à°¡à°¿ రాజశేఖరà±
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; రాజశేఖరౠరె.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; రెడà±à°¡à°¿, à°°à°¾.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; à°°à°¾. రెడà±à°¡à°¿
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; రెడà±à°¡à°¿ à°°à°¾.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; రాజశేఖరà±
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; రెడà±à°¡à°¿
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; రా.రె
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; రెరా
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; à°°à°¾
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; రె
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeGGS
+name ; given; సూరà±à°¯
+name ; given2; à°ªà±à°°à°¤à°¾à°ªà±
+name ; surname; వరà±à°®
+name ; locale; te_AQ
+
+expectedResult; వరà±à°®, సూరà±à°¯ à°ªà±à°°à°¤à°¾à°ªà±
+
+parameters; sorting; long; referring; formal
+
+expectedResult; వరà±à°® సూరà±à°¯ à°ªà±à°°à°¤à°¾à°ªà±
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; సూరà±à°¯ à°ªà±à°°à°¤à°¾à°ªà± వరà±à°®
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; వరà±à°®, సూరà±à°¯ à°ªà±à°°.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; సూరà±à°¯ à°ªà±à°°. వరà±à°®
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; వరà±à°®, సూ. à°ªà±à°°.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; వరà±à°® సూ. à°ªà±à°°.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; సూ. à°ªà±à°°. వరà±à°®
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; వరà±à°®, సూరà±à°¯
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; వరà±à°® సూరà±à°¯
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; సూరà±à°¯ వరà±à°®
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; వరà±à°® సూ.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; సూ.à°ªà±à°°.à°µ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; సూరà±à°¯ à°µ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; వసూపà±à°°
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; సూరà±à°¯
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; వరà±à°®
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; సూ.వ
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; సూ
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; à°µ
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; మిసà±à°Ÿà°°à±
+name ; given; à°šà°‚à°¦à±à°° శేఖరà±
+name ; given-informal; à°šà°‚à°¦à±
+name ; given2; à°…à°¬à±à°¦à±à°²à± ఆజాదà±
+name ; surname-core; à°à°²à±‡à°Ÿà°¿ à°•à±à°®à°¾à°°à±
+name ; generation; జూనియరà±
+name ; credentials; ఎం. పి.
+name ; locale; te_AQ
+
+expectedResult; à°à°²à±‡à°Ÿà°¿ à°•à±à°®à°¾à°°à± à°šà°‚à°¦à±à°° శేఖరౠఅబà±à°¦à±à°²à± ఆజాదౠఎం. పి.
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; à°šà°‚à°¦à±à°° శేఖరౠఅబà±à°¦à±à°²à± ఆజాదౠà°à°²à±‡à°Ÿà°¿ à°•à±à°®à°¾à°°à± à°Žà°‚. పి.
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; à°à°²à±‡à°Ÿà°¿ à°•à±à°®à°¾à°°à±, à°šà°‚à°¦à±à°° శేఖరౠఅబà±à°¦à±à°²à± ఆజాదà±
+
+parameters; sorting; long; referring; formal
+
+expectedResult; à°šà°‚à°¦à±à°° శేఖరౠఅ. à°†. à°à°²à±‡à°Ÿà°¿ à°•à±à°®à°¾à°°à± à°Žà°‚. పి.
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; à°à°²à±‡à°Ÿà°¿ à°•à±à°®à°¾à°°à±, à°šà°‚à°¦à±à°° శేఖరౠఅ. à°†.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; à°à°²à±‡à°Ÿà°¿ à°•à±à°®à°¾à°°à±, à°šà°‚. శే. à°…. à°†.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; à°à°²à±‡à°Ÿà°¿ à°•à±à°®à°¾à°°à± à°šà°‚. శే. à°…. à°†.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; à°šà°‚. శే. à°…. à°†. à°à°²à±‡à°Ÿà°¿ à°•à±à°®à°¾à°°à±
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; à°à°²à±‡à°Ÿà°¿ à°•à±à°®à°¾à°°à± à°šà°‚. శే.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; మిసà±à°Ÿà°°à± à°à°²à±‡à°Ÿà°¿ à°•à±à°®à°¾à°°à±
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; à°à°²à±‡à°Ÿà°¿ à°•à±à°®à°¾à°°à±, à°šà°‚à°¦à±
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; à°à°²à±‡à°Ÿà°¿ à°•à±à°®à°¾à°°à± à°šà°‚à°¦à±
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; చందౠà°à°²à±‡à°Ÿà°¿ à°•à±à°®à°¾à°°à±
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; చందౠà°. à°•à±.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; à°šà°‚.à°….à°
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; à°à°šà°‚à°…
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; à°šà°‚.à°
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; à°šà°‚à°¦à±
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; à°šà°‚
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; à°
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; రవి
+name ; locale; fr_AQ
+
+expectedResult; రవి
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; à°°
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; à°°à°˜à±
+name ; surname; à°­à°°à°¤à±
+name ; locale; fr_AQ
+
+expectedResult; à°­à°°à°¤à±, à°°à°˜à±
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; భరతౠరఘà±
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; à°­à°°à°¤à±, à°°.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; రఘౠభరతà±
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; భరతౠర.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; à°°. à°­à°°à°¤à±
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; రఘౠభ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; à°­à°°à°¤à±
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; à°°.à°­
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; à°°à°˜à±
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; à°­à°°
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; à°­
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; à°°
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGGS
+name ; given; శంకరà±
+name ; given2; నరేషà±
+name ; surname; à°ªà±à°°à°¸à°¾à°¦à±
+name ; locale; fr_AQ
+
+expectedResult; à°ªà±à°°à°¸à°¾à°¦à±, శంకరౠనరేషà±
+
+parameters; sorting; long; referring; formal
+
+expectedResult; à°ªà±à°°à°¸à°¾à°¦à± శంకరౠనరేషà±
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; శంకరౠనరేషౠపà±à°°à°¸à°¾à°¦à±
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; à°ªà±à°°à°¸à°¾à°¦à±, శంకరౠన.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; శంకరౠన. à°ªà±à°°à°¸à°¾à°¦à±
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; à°ªà±à°°à°¸à°¾à°¦à±, శం. à°¨.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; à°ªà±à°°à°¸à°¾à°¦à± శం. à°¨.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; à°ªà±à°°à°¸à°¾à°¦à±, శంకరà±
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; శం. à°¨. à°ªà±à°°à°¸à°¾à°¦à±
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; à°ªà±à°°à°¸à°¾à°¦à± శంకరà±
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; శంకరౠపà±à°°à°¸à°¾à°¦à±
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; à°ªà±à°°à°¸à°¾à°¦à± శం.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; శంకరౠపà±à°°.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; శం.à°¨.à°ªà±à°°
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; à°ªà±à°°à°¸à°¾à°¦à±
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; à°ªà±à°°à°¶à°‚à°¨
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; శం.à°ªà±à°°
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; శంకరà±
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; à°ªà±à°°
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; శం
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; à°ªà±à°°à±Š. à°¡à°¾.
+name ; given; సూరà±à°¯ à°ªà±à°°à°¤à°¾à°ªà±
+name ; given-informal; సంధà±à°¯
+name ; given2; లాసà±à°¯ à°ªà±à°°à°¿à°¯
+name ; surname-prefix; శరà±à°®
+name ; surname-core; చౌదరి
+name ; surname2; శరà±à°® చౌదరి
+name ; generation; జూ
+name ; credentials; à°Žà°‚. à°¡à°¿. పిహెచà±. à°¡à°¿.
+name ; locale; fr_AQ
+
+expectedResult; శరà±à°® చౌదరి సూరà±à°¯ à°ªà±à°°à°¤à°¾à°ªà± లాసà±à°¯ à°ªà±à°°à°¿à°¯ à°Žà°‚. à°¡à°¿. పిహెచà±. à°¡à°¿.
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; సూరà±à°¯ à°ªà±à°°à°¤à°¾à°ªà± లాసà±à°¯ à°ªà±à°°à°¿à°¯ శరà±à°® చౌదరి à°Žà°‚. à°¡à°¿. పిహెచà±. à°¡à°¿.
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; సూరà±à°¯ à°ªà±à°°à°¤à°¾à°ªà± లా. à°ªà±à°°à°¿. శరà±à°® చౌదరి à°Žà°‚. à°¡à°¿. పిహెచà±. à°¡à°¿.
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; చౌదరి, సూరà±à°¯ à°ªà±à°°à°¤à°¾à°ªà± లాసà±à°¯ à°ªà±à°°à°¿à°¯ శరà±à°®
+
+parameters; sorting; long; referring; formal
+
+expectedResult; చౌదరి, సూరà±à°¯ à°ªà±à°°à°¤à°¾à°ªà± లా. à°ªà±à°°à°¿. శరà±à°®
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; చౌదరి, సూ. à°ªà±à°°. లా. à°ªà±à°°à°¿. శరà±à°®
+
+parameters; sorting; short; referring; formal
+
+expectedResult; శరà±à°® చౌదరి సూ. à°ªà±à°°. లా. à°ªà±à°°à°¿.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; సూ. à°ªà±à°°. లా. à°ªà±à°°à°¿. శరà±à°® చౌదరి
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; à°ªà±à°°à±Š. à°¡à°¾. శరà±à°® చౌదరి
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; శరà±à°® చౌదరి సూ. à°ªà±à°°.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; శరà±à°® చౌదరి, సంధà±à°¯
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; శరà±à°® చౌదరి సంధà±à°¯
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; సంధà±à°¯ శరà±à°® చౌదరి
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; సంధà±à°¯ à°¶. చౌ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; సూ.లా.శ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; శసూలా
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; సంధà±à°¯
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; సూ.శ
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; సం
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; à°¶
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/tg.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/tg.txt
new file mode 100644
index 00000000000..e5e8f942488
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/tg.txt
@@ -0,0 +1,546 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: tg
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; ЗендаÑ
+name ; locale; tg_AQ
+
+expectedResult; ЗендаÑ
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; З
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Ирене
+name ; surname; Ðдлер
+name ; locale; tg_AQ
+
+expectedResult; Ðдлер Ирене
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ирене Ðдлер
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; ÐИ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; ИÐ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; ÐœÑри Сю
+name ; given2; Хамиш
+name ; surname; ВатÑон
+name ; locale; tg_AQ
+
+expectedResult; ВатÑон ÐœÑри Сю Хамиш
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ÐœÑри Сю Хамиш ВатÑон
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; ВМХ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; МХВ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+endName
+
+# nativeFull
+name ; given; Бертрам ВилберфорÑ
+name ; given-informal; Берти
+name ; given2; Ҳенру Роберт
+name ; surname-core; ВуÑтер
+name ; locale; tg_AQ
+
+expectedResult; Бертрам Ð’Ð¸Ð»Ð±ÐµÑ€Ñ„Ð¾Ñ€Ñ Ò²ÐµÐ½Ñ€Ñƒ Роберт ВуÑтер
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; ВуÑтер Бертрам Ð’Ð¸Ð»Ð±ÐµÑ€Ñ„Ð¾Ñ€Ñ Ò²ÐµÐ½Ñ€Ñƒ Роберт
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; БҲВ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; ВБҲ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; Синбад
+name ; locale; ko_AQ
+
+expectedResult; Синбад
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; С
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; КÑти
+name ; surname; Мюлер
+name ; locale; ko_AQ
+
+expectedResult; КÑти Мюлер
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; Мюлер КÑти
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; КМ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; МК
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGGS
+name ; given; ЗазилиÑ
+name ; given2; Ҳамиш
+name ; surname; Стобер
+name ; locale; ko_AQ
+
+expectedResult; Ð—Ð°Ð·Ð¸Ð»Ð¸Ñ Ò²Ð°Ð¼Ð¸Ñˆ Стобер
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; Стобер Ð—Ð°Ð·Ð¸Ð»Ð¸Ñ Ò²Ð°Ð¼Ð¸Ñˆ
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ЗҲС
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; СЗҲ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; Проф. Док.
+name ; given; Ðда Корнелиа
+name ; given-informal; Ðили
+name ; given2; Сезар Мартин
+name ; surname-prefix; вон
+name ; surname-core; Брухи
+name ; surname2; Ð“Ð¾Ð½Ð·Ð°Ð»ÐµÑ Ð”Ð¾Ð¼Ð¸Ð½Ð³Ð¾
+name ; locale; ko_AQ
+
+expectedResult; вон Брухи Ð“Ð¾Ð½Ð·Ð°Ð»ÐµÑ Ð”Ð¾Ð¼Ð¸Ð½Ð³Ð¾, Проф. Док. Ðда Корнелиа Сезар Мартин
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; вон Брухи Ð“Ð¾Ð½Ð·Ð°Ð»ÐµÑ Ð”Ð¾Ð¼Ð¸Ð½Ð³Ð¾ Проф. Док. Ðда Корнелиа Сезар Мартин
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Проф. Док. Ðда Корнелиа Сезар Мартин вон Брухи Ð“Ð¾Ð½Ð·Ð°Ð»ÐµÑ Ð”Ð¾Ð¼Ð¸Ð½Ð³Ð¾
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; ÐСВ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; Ð’ÐС
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/th.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/th.txt
new file mode 100644
index 00000000000..8ae86cbb398
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/th.txt
@@ -0,0 +1,660 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: th
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; ธนา
+name ; locale; th_AQ
+
+expectedResult; ธนา
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ธ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; ไอริณ
+name ; surname; à¸à¸¥à¹‰à¸²à¸«à¸²à¸
+name ; locale; th_AQ
+
+expectedResult; à¸à¸¥à¹‰à¸²à¸«à¸²à¸, ไอริณ
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; à¸à¸¥à¹‰à¸²à¸«à¸²à¸ ไอริณ
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ไอริณ à¸à¸¥à¹‰à¸²à¸«à¸²à¸
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; ไอริณ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; à¸à¹„
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ไà¸
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; à¸
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+
+expectedResult; ไ
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; มานี
+name ; given2; ชัยยศ
+name ; surname; พิชิตชัย
+name ; locale; th_AQ
+
+expectedResult; พิชิตชัย, มานี ชัยยศ
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; พิชิตชัย มานี ชัยยศ
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; มานี ชัยยศ พิชิตชัย
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; พิชิตชัย, มานี
+
+parameters; sorting; long; referring; informal
+
+expectedResult; มานี พิชิตชัย
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; มชัพิ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; มานี
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; พิม
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; มพิ
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; พิ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+
+expectedResult; ม
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeFull
+name ; title; คุณ
+name ; given; ปรีชา
+name ; given-informal; ชาติ
+name ; given2; à¸à¸¥à¹‰à¸²à¸«à¸²à¸
+name ; surname-core; à¹à¸ªà¸‡à¸£à¸°à¸§à¸µ
+name ; locale; th_AQ
+
+expectedResult; คุณ ปรีชา à¸à¸¥à¹‰à¸²à¸«à¸²à¸ à¹à¸ªà¸‡à¸£à¸°à¸§à¸µ
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; à¹à¸ªà¸‡à¸£à¸°à¸§à¸µ คุณ ปรีชา à¸à¸¥à¹‰à¸²à¸«à¸²à¸
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; à¹à¸ªà¸‡à¸£à¸°à¸§à¸µ, ปรีชา à¸à¸¥à¹‰à¸²à¸«à¸²à¸
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; คุณ ปรีชา à¹à¸ªà¸‡à¸£à¸°à¸§à¸µ
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; à¹à¸ªà¸‡à¸£à¸°à¸§à¸µ, ชาติ
+
+parameters; sorting; long; referring; informal
+
+expectedResult; ชาติ à¹à¸ªà¸‡à¸£à¸°à¸§à¸µ
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ชาติ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ปà¸à¹
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; à¹à¸Š
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ปà¹
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; ช
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; à¹
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+
+endName
+
+# foreignG
+name ; given; ซินà¹à¸šà¸”
+name ; locale; ja_AQ
+
+expectedResult; ซินà¹à¸šà¸”
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ซิ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; เคเทอ
+name ; surname; มึลเลอร์
+name ; locale; ja_AQ
+
+expectedResult; มึลเลอร์, เคเทอ
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; เคเทอ มึลเลอร์
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; มึลเลอร์ เคเทอ
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; เคเทอ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; มึเ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; เมึ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; มึ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+
+expectedResult; เ
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGGS
+name ; given; ซาซิเลีย
+name ; given2; ฮามิช
+name ; surname; สโตเบอร์
+name ; locale; ja_AQ
+
+expectedResult; สโตเบอร์, ซาซิเลีย ฮามิช
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ซาซิเลีย ฮามิช สโตเบอร์
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; สโตเบอร์ ซาซิเลีย ฮามิช
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; สโตเบอร์, ซาซิเลีย
+
+parameters; sorting; long; referring; informal
+
+expectedResult; ซาซิเลีย สโตเบอร์
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ซาซิเลีย
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ซฮส
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; ซส
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; สซ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ซ
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; ส
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+
+endName
+
+# foreignFull
+name ; title; ศ.ดร.
+name ; given; เอดา คอร์เนเลีย
+name ; given-informal; นีเลอะ
+name ; given2; เซซาร์ มาร์ติน
+name ; surname-prefix; วอน
+name ; surname-core; บรืล
+name ; surname2; à¸à¸­à¸™à¸‹à¸²à¹€à¸¥à¸‹ โดมิงโà¸
+name ; generation; จูเนียร์
+name ; credentials; พ.บ. ท.บ.
+name ; locale; ja_AQ
+
+expectedResult; วอน บรืล à¸à¸­à¸™à¸‹à¸²à¹€à¸¥à¸‹ โดมิงโภศ.ดร. เอดา คอร์เนเลีย เซซาร์ มาร์ติน พ.บ. ท.บ.
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ศ.ดร. เอดา คอร์เนเลีย เซซาร์ มาร์ติน วอน บรืล พ.บ. ท.บ.
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; บรืล, เอดา คอร์เนเลีย เซซาร์ มาร์ติน วอน
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ศ.ดร. เอดา คอร์เนเลีย วอน บรืล
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; วอน บรืล, นีเลอะ
+
+parameters; sorting; long; referring; informal
+
+expectedResult; นีเลอะ วอน บรืล
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; นีเลอะ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; วนี
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; เเว
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; นี
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; เว
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; ว
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ti.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ti.txt
new file mode 100644
index 00000000000..fc4873880db
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ti.txt
@@ -0,0 +1,761 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: ti
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; ዘንዳያ
+name ; locale; ti_AQ
+
+expectedResult; ዘንዳያ
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ዘ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; ኣይሪን
+name ; surname; ኣድለር
+name ; locale; ti_AQ
+
+expectedResult; ኣድለር, ኣይሪን
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ኣይሪን ኣድለር
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ኣድለር ኣይሪን
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; addressing; formal
+parameters; sorting; long; referring; informal
+
+expectedResult; ኣይሪን ኣ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ኣድለር ኣ.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ኣይሪን
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ኣድለር
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+
+expectedResult; ኣኣ
+
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ኣ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; ሜሪ ሱ
+name ; given2; ሃሚሽ
+name ; surname; ዋትሰን
+name ; locale; ti_AQ
+
+expectedResult; ዋትሰን, ሜሪ ሱ ሃሚሽ
+
+parameters; sorting; long; referring; formal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ሜሪ ሱ ሃሚሽ ዋትሰን
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ዋትሰን ሜሪ ሱ ሃሚሽ
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; addressing; formal
+parameters; sorting; long; referring; informal
+
+expectedResult; ዋትሰን, ሜሪ ሱ ሃ.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; ሜሪ ሱ ሃ. ዋትሰን
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; ዋትሰን ሜሪ ሱ ሃ.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; ዋትሰን ሜ. ሱ.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ዋትሰን, ሜሪ ሱ
+
+parameters; sorting; medium; referring; informal
+
+expectedResult; ሜሪ ሱ ዋትሰን
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; ዋትሰን ሜሪ ሱ
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; ሜሪ ሱ ዋ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ሜሪ ሱ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ዋትሰን
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+
+expectedResult; ሜሃዋ
+
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; ዋሜሃ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ዋሜ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ሜ
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; á‹‹
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; ኣይተ
+name ; given; በርትረሠዊáˆá‰ áˆ­áŽáˆ­áˆµ
+name ; given-informal; በርቲ
+name ; given2; ሄንሪ ሮበርት
+name ; surname-core; ዉስተር
+name ; generation; ማንáŒáˆµ
+name ; credentials; ኣባሠባይቶ
+name ; locale; ti_AQ
+
+expectedResult; ኣይተ ዉስተር በርትረሠዊáˆá‰ áˆ­áŽáˆ­áˆµ ሄንሪ ሮበርት ማንáŒáˆµ, ኣባሠባይቶ
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ኣይተ በርትረሠዊáˆá‰ áˆ­áŽáˆ­áˆµ ሄንሪ ሮበርት ዉስተር ኣባሠባይቶ
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ዉስተር ኣይተ በርትረሠዊáˆá‰ áˆ­áŽáˆ­áˆµ ሄንሪ ሮበርት ኣባሠባይቶ
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; long; referring; informal
+
+expectedResult; በርትረሠዊáˆá‰ áˆ­áŽáˆ­áˆµ ሄ. ሮ. ዉስተር ማንáŒáˆµ, ኣባሠባይቶ
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; ዉስተር በርትረሠዊáˆá‰ áˆ­áŽáˆ­áˆµ ሄ. ሮ. ማንáŒáˆµ, ኣባሠባይቶ
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; ዉስተር, በርትረሠዊáˆá‰ áˆ­áŽáˆ­áˆµ ሄንሪ ሮበርት
+
+parameters; sorting; long; referring; formal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ዉስተር, በርትረሠዊáˆá‰ áˆ­áŽáˆ­áˆµ ሄ. ሮ.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; ዉስተር በ. ዊ.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ዉስተር, በርቲ
+
+parameters; sorting; medium; referring; informal
+
+expectedResult; በርቲ ዉስተር
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; ኣይተ ዉስተር
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+
+expectedResult; ዉስተር በርቲ
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; በርቲ ዉ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; በሄዉ
+
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; በርቲ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ዉበሄ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ዉበ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; በ
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; ዉ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; ሲንባድ
+name ; locale; ko_AQ
+
+expectedResult; ሲንባድ
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ሲ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; ካቲ
+name ; surname; ሙለር
+name ; locale; ko_AQ
+
+expectedResult; ሙለር, ካቲ
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ሙለር ካ.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ሙለር ካቲ
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; addressing; formal
+parameters; sorting; long; referring; informal
+
+expectedResult; ካቲ ሙለር
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ካቲ ሙ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ሙለር
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+
+expectedResult; ሙካ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ካሙ
+
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; ካቲ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ሙ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; ካ
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGGS
+name ; given; ዛዚሊያ
+name ; given2; ሃሚሽ
+name ; surname; ስቶበር
+name ; locale; ko_AQ
+
+expectedResult; ስቶበር, ዛዚሊያ ሃሚሽ
+
+parameters; sorting; long; referring; formal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ስቶበር ዛዚሊያ ሃሚሽ
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; addressing; formal
+parameters; sorting; long; referring; informal
+
+expectedResult; ስቶበር, ዛዚሊያ ሃ.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; ዛዚሊያ ሃሚሽ ስቶበር
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ስቶበር ዛዚሊያ ሃ.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; ዛዚሊያ ሃ. ስቶበር
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; ስቶበር, ዛዚሊያ
+
+parameters; sorting; medium; referring; informal
+
+expectedResult; ስቶበር ዛዚሊያ
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; ዛዚሊያ ስቶበር
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; ስቶበር ዛ.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ዛዚሊያ ስ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ስቶበር
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+
+expectedResult; ዛዚሊያ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ስዛሃ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ዛሃስ
+
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; ስዛ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ስ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; á‹›
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; á•áˆ®. ዶር.
+name ; given; ኣዳ ኮርኒሊያ
+name ; given-informal; ኒሊ
+name ; given2; ሲዘር ማርቲን
+name ; surname-prefix; ቮን
+name ; surname-core; ብሩሂ
+name ; surname2; ጎንዛሌዠዶሚንáŒ
+name ; generation; ማንáŒáˆµ
+name ; credentials; ሓኪሠመጥባሕቲ ስኒ
+name ; locale; ko_AQ
+
+expectedResult; ቮን ብሩሂ ጎንዛሌዠዶሚንáŒ, á•áˆ®. ዶር. ኣዳ ኮርኒሊያ ሲዘር ማርቲን ሓኪሠመጥባሕቲ ስኒ
+
+parameters; sorting; long; referring; informal
+
+expectedResult; ቮን ብሩሂ ጎንዛሌዠዶሚንጠá•áˆ®. ዶር. ኣዳ ኮርኒሊያ ሲዘር ማርቲን ሓኪሠመጥባሕቲ ስኒ
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; á•áˆ®. ዶር. ኣዳ ኮርኒሊያ ሲዘር ማርቲን ቮን ብሩሂ ጎንዛሌዠዶሚንጠሓኪሠመጥባሕቲ ስኒ
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; short; referring; formal
+
+expectedResult; á•áˆ®. ዶር. ቮን ብሩሂ ኣዳ ኮርኒሊያ ሲዘር ማርቲን ማንáŒáˆµ, ሓኪሠመጥባሕቲ ስኒ
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ቮን ብሩሂ ኣዳ ኮርኒሊያ ሲ. ማ. ማንáŒáˆµ, ሓኪሠመጥባሕቲ ስኒ
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; ኣዳ ኮርኒሊያ ሲ. ማ. ቮን ብሩሂ ማንáŒáˆµ, ሓኪሠመጥባሕቲ ስኒ
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; ብሩሂ, ኣዳ ኮርኒሊያ ሲዘር ማርቲን ቮን
+
+parameters; sorting; long; referring; formal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ብሩሂ, ኣዳ ኮርኒሊያ ሲ. ማ. ቮን
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; á•áˆ®. ዶር. ቮን ብሩሂ
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+
+expectedResult; ቮን ብሩሂ ኣ. ኮ.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ቮን ብሩሂ, ኒሊ
+
+parameters; sorting; medium; referring; informal
+
+expectedResult; ቮን ብሩሂ ኒሊ
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; ኒሊ ቮን ብሩሂ
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; ኒሊ ቮ. ብ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ቮኣሲ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ኣሲቮ
+
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; ቮኒ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ኒሊ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ቮ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; ኒ
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/tk.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/tk.txt
new file mode 100644
index 00000000000..25434d2a902
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/tk.txt
@@ -0,0 +1,775 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: tk
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Gurban
+name ; locale; tk_AQ
+
+expectedResult; Gurban
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; G
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Amangeldi
+name ; surname; Saparow
+name ; locale; tk_AQ
+
+expectedResult; Saparow, Amangeldi
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+
+expectedResult; Amangeldi Saparow
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+
+expectedResult; Saparow Amangeldi
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Saparow, A.
+
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; A. Saparow
+
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Saparow A.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Amangeldi
+
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Saparow
+
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; AS
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; SA
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeGGS
+name ; given; Meretgeldi
+name ; given2; Durdyýewiç
+name ; surname; Gurbanow
+name ; locale; tk_AQ
+
+expectedResult; Gurbanow, Meretgeldi Durdyýewiç
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Gurbanow Meretgeldi Durdyýewiç
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Meretgeldi Durdyýewiç Gurbanow
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+
+expectedResult; Gurbanow, Meretgeldi
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+
+expectedResult; Gurbanow Meretgeldi
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Gurbanow, M. D.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Gurbanow M. D.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; M. D. Gurbanow
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Gurbanow, M.
+
+parameters; sorting; short; referring; informal
+
+expectedResult; Gurbanow M.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; M. Gurbanow
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Meretgeldi
+
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Gurbanow
+
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; GMD
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; MDG
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; GM
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; G
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; M
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeFull
+name ; title; jenap
+name ; given; Atajan
+name ; given-informal; AtaÅŸ
+name ; given2; Saparowiç
+name ; surname-core; Gurdow
+name ; credentials; magistr, ylymlaryň kandidaty
+name ; locale; tk_AQ
+
+expectedResult; jenap Atajan Saparowiç Gurdow magistr, ylymlaryň kandidaty
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+
+expectedResult; Gurdow Atajan Saparowiç, magistr, ylymlaryň kandidaty
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Gurdow, Atajan Saparowiç
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Gurdow, Atajan
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+
+expectedResult; Gurdow Atajan
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Gurdow, A. S.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; A. S. Gurdow
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Gurdow A. S.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; jenap Gurdow
+
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Gurdow, A.
+
+parameters; sorting; short; referring; informal
+
+expectedResult; A. Gurdow
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Gurdow A.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Atajan
+
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+
+expectedResult; AtaÅŸ
+
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ASG
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; GAS
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; GA
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; G
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; Sinbad
+name ; locale; fr_AQ
+
+expectedResult; Sinbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Kete
+name ; surname; Müller
+name ; locale; fr_AQ
+
+expectedResult; Müller, Kete
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+
+expectedResult; Kete Müller
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+
+expectedResult; Müller Kete
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Müller, K.
+
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; K. Müller
+
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Müller K.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Müller
+
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Kete
+
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Zezilia
+name ; given2; HemiÅŸ
+name ; surname; Stöber
+name ; locale; fr_AQ
+
+expectedResult; Stöber, Zezilia Hemiş
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Stöber Zezilia Hemiş
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Zezilia Hemiş Stöber
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+
+expectedResult; Stöber, Zezilia
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+
+expectedResult; Stöber Zezilia
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Stöber, Z. H.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Stöber Z. H.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Z. H. Stöber
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Stöber, Z.
+
+parameters; sorting; short; referring; informal
+
+expectedResult; Stöber Z.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Z. Stöber
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Zezilia
+
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Stöber
+
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; SZH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ZHS
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; SZ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Z
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; ylymlaryň doktory, professor
+name ; given; Ada Kornelia
+name ; given-informal; Nil
+name ; given2; Sezar Martin
+name ; surname-prefix; fon
+name ; surname-core; Brül
+name ; surname2; Gonzales Domingo
+name ; generation; kiçi
+name ; credentials; hirurg-stomatolog lukman
+name ; locale; fr_AQ
+
+expectedResult; ylymlaryň doktory, professor Ada Kornelia Sezar Martin fon Brül Gonzales Domingo, hirurg-stomatolog lukman
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+
+expectedResult; fon Brül Ada Kornelia Sezar Martin, hirurg-stomatolog lukman
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; ylymlaryň doktory, professor fon Brül
+
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Brül, Ada Kornelia Sezar Martin fon
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Brül, Ada Kornelia fon
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; fon Brül, Ada Kornelia
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+
+expectedResult; Brül, A. K. S. M. fon
+
+parameters; sorting; short; referring; formal
+
+expectedResult; fon Brül Ada Kornelia
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; A. K. S. M. fon Brül
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; fon Brül A. K. S. M.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; fon Brül, A. K.
+
+parameters; sorting; short; referring; informal
+
+expectedResult; A. K. fon Brül
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; fon Brül A. K.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Ada Kornelia
+
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+
+expectedResult; ASF
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; FAS
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; Nil
+
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; FA
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; F
+
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; N
+
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/tr.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/tr.txt
new file mode 100644
index 00000000000..f04baa7b06a
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/tr.txt
@@ -0,0 +1,752 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: tr
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Zeynep
+name ; locale; tr_AQ
+
+expectedResult; Zeynep
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Z
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Irmak
+name ; surname; Yılmaz
+name ; locale; tr_AQ
+
+expectedResult; Yılmaz, Irmak
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Irmak Yılmaz
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Yılmaz Irmak
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Yılmaz, I.
+
+parameters; sorting; medium; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; I. Yılmaz
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Yılmaz I.
+
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Yılmaz
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Irmak
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; IY
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; YI
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; Yağız
+name ; given2; Can
+name ; surname; Kaya
+name ; locale; tr_AQ
+
+expectedResult; Kaya, Yağız Can
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Kaya Yağız Can
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Yağız Can Kaya
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Yağız C. Kaya
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Kaya, Y. Can
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Kaya Y. Can
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Kaya, Y. C.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Kaya, Yağız
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Kaya Y. C.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Kaya Yağız
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Y. C. Kaya
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Yağız Kaya
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Yağız
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Kaya
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; KYC
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; YCK
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+
+expectedResult; KY
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; YK
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+
+endName
+
+# nativeFull
+name ; title; Sn.
+name ; given; Fatma
+name ; given-informal; FatoÅŸ
+name ; given2; Su
+name ; surname-core; Yıldırım
+name ; surname2; Kaya
+name ; credentials; Dr.
+name ; locale; tr_AQ
+
+expectedResult; Sn. Yıldırım Kaya Fatma Su, Dr.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Sn. Dr. Fatma Su Yıldırım
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Sn. Yıldırım F. Su, Dr.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Dr. Fatma S. Yıldırım
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Yıldırım, Fatma Su
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Yıldırım, F. S.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Yıldırım, F. Su
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Yıldırım, Fatma
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; F. S. Yıldırım
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Fatma Yıldırım
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Yıldırım F. S.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Yıldırım Fatma
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Sn. Yıldırım
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; FatoÅŸ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; FSY
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+
+expectedResult; YFS
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; FY
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; YF
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; Sinbad
+name ; locale; ko_AQ
+
+expectedResult; Sinbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Yoshi
+name ; surname; Emomoto
+name ; locale; ko_AQ
+
+expectedResult; Emomoto, Yoshi
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Emomoto Yoshi
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Yoshi Emomoto
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Emomoto, Y.
+
+parameters; sorting; medium; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; Emomoto Y.
+
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Y. Emomoto
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Emomoto
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Yoshi
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; EY
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; YE
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+endName
+
+# foreignGGS
+name ; given; Wolfgang
+name ; given2; Amadeus
+name ; surname; Mozart
+name ; locale; ko_AQ
+
+expectedResult; Mozart, Wolfgang Amadeus
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Mozart Wolfgang Amadeus
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Wolfgang Amadeus Mozart
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Mozart, W. Amadeus
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Wolfgang A. Mozart
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Mozart W. Amadeus
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Mozart, Wolfgang
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Mozart Wolfgang
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Wolfgang Mozart
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Mozart, W. A.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Mozart W. A.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; W. A. Mozart
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Wolfgang
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Mozart
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; MWA
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; WAM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+
+expectedResult; MW
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; WM
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; Prof. Dr.
+name ; given; Ada Cornelia
+name ; given-informal; Neele
+name ; given2; César Martín
+name ; surname-prefix; von
+name ; surname-core; Brühl
+name ; surname2; Plácido Domingo
+name ; generation; Jr
+name ; credentials; MD DDS
+name ; locale; ko_AQ
+
+expectedResult; Prof. Dr. von Brühl Plácido Domingo Ada Cornelia César Martín, MD DDS
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Prof. Dr. MD DDS Ada Cornelia César Martín von Brühl Jr
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Prof. Dr. von Brühl A. C. César Martín, MD DDS
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; MD DDS Ada Cornelia C. M. von Brühl Jr
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Brühl, Ada Cornelia César Martín von
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Brühl, A. C. César Martín von
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; von Brühl, Ada Cornelia
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ada Cornelia von Brühl
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Brühl, A. C. C. M. von
+
+parameters; sorting; short; referring; formal
+
+expectedResult; von Brühl Ada Cornelia
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; A. C. C. M. von Brühl
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; von Brühl A. C. C. M.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Prof. Dr. von Brühl
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Neele
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ACV
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+
+expectedResult; VAC
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; AV
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; VA
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/uk.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/uk.txt
new file mode 100644
index 00000000000..eb599d84e5a
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/uk.txt
@@ -0,0 +1,806 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: uk
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Юрій
+name ; locale; uk_AQ
+
+expectedResult; Юрій
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ю
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Ðнна
+name ; surname; Мельник
+name ; locale; uk_AQ
+
+expectedResult; Ðнна Мельник
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+
+expectedResult; Мельник Ðнна
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ð. Мельник
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Мельник Ð.
+
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+
+expectedResult; Ðнна Ðœ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Ðœ. Ðнна
+
+parameters; surnameFirst; medium; addressing; informal
+
+expectedResult; Мельник
+
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+
+expectedResult; Ðнна
+
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+
+expectedResult; ÐÐœ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; ÐœÐ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; Ð
+
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; М
+
+parameters; givenFirst; short; monogram; formal
+
+endName
+
+# nativeGGS
+name ; given; Єва
+name ; given2; МаріÑ
+name ; surname; Шевченко
+name ; locale; uk_AQ
+
+expectedResult; Єва ÐœÐ°Ñ€Ñ–Ñ Ð¨ÐµÐ²Ñ‡ÐµÐ½ÐºÐ¾
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; addressing; formal
+
+expectedResult; Шевченко Єва МаріÑ
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+
+expectedResult; Єва М. Шевченко
+
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; addressing; formal
+
+expectedResult; Шевченко Єва М.
+
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Є. М. Шевченко
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Шевченко Є. М.
+
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; addressing; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; Єва Шевченко
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; informal
+
+expectedResult; Шевченко Єва
+
+parameters; surnameFirst; long; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Шевченко Є.
+
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; medium; referring; informal
+
+expectedResult; Шевченко
+
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+
+expectedResult; Єва Ш.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Ш. Єва
+
+parameters; surnameFirst; medium; addressing; informal
+
+expectedResult; Єва
+
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+
+expectedResult; ЄМШ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; medium; monogram; formal
+
+expectedResult; ШЄМ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; ЄШ
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; ШЄ
+
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; Є
+
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; Ш
+
+parameters; givenFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; проф.
+name ; given; Ðнна МаріÑ
+name ; given-informal; МаруÑÑ
+name ; given2; Богдан-Зиновій
+name ; surname-core; Петренко
+name ; generation; мол.
+name ; credentials; доц.
+name ; locale; uk_AQ
+
+expectedResult; Петренко Ðнна ÐœÐ°Ñ€Ñ–Ñ Ð‘Ð¾Ð³Ð´Ð°Ð½-Зиновій, доц., проф.
+
+parameters; sorting; long; referring; formal
+
+expectedResult; проф. Ðнна ÐœÐ°Ñ€Ñ–Ñ Ð‘Ð¾Ð³Ð´Ð°Ð½-Зиновій Петренко доц.
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; addressing; formal
+
+expectedResult; проф. Петренко Ðнна ÐœÐ°Ñ€Ñ–Ñ Ð‘Ð¾Ð³Ð´Ð°Ð½-Зиновій доц.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; проф. Ðнна ÐœÐ°Ñ€Ñ–Ñ Ð‘. З. Петренко доц.
+
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; addressing; formal
+
+expectedResult; проф. Петренко Ðнна ÐœÐ°Ñ€Ñ–Ñ Ð‘. З. доц.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Петренко Ð. Ðœ. Б. З., доц., проф.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; проф. Ð. Ðœ. Б. З. Петренко доц.
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; проф. Петренко Ð. Ðœ. Б. З. доц.
+
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Петренко Ðнна ÐœÐ°Ñ€Ñ–Ñ Ð‘. З.
+
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Петренко Ð. Ðœ. Б. З.
+
+parameters; surnameFirst; short; addressing; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; МаруÑÑ ÐŸÐµÑ‚Ñ€ÐµÐ½ÐºÐ¾
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; informal
+
+expectedResult; Петренко МаруÑÑ
+
+parameters; surnameFirst; long; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; проф. Петренко
+
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+
+expectedResult; Петренко М.
+
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; medium; referring; informal
+
+expectedResult; МаруÑÑ ÐŸ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; П. МаруÑÑ
+
+parameters; surnameFirst; medium; addressing; informal
+
+expectedResult; МаруÑÑ
+
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+
+expectedResult; ÐБП
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; medium; monogram; formal
+
+expectedResult; ПÐБ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; МП
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; ПМ
+
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; М
+
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; П
+
+parameters; givenFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; Синдбад
+name ; locale; ja_AQ
+
+expectedResult; Синдбад
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; С
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Кейт
+name ; surname; Мюллер
+name ; locale; ja_AQ
+
+expectedResult; Кейт Мюллер
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+
+expectedResult; Мюллер Кейт
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; К. Мюллер
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Мюллер К.
+
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+
+expectedResult; Кейт М.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; М. Кейт
+
+parameters; surnameFirst; medium; addressing; informal
+
+expectedResult; Мюллер
+
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+
+expectedResult; Кейт
+
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+
+expectedResult; КМ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; МК
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; К
+
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; М
+
+parameters; givenFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; ЗазиліÑ
+name ; given2; Хеміш
+name ; surname; Стобер
+name ; locale; ja_AQ
+
+expectedResult; Ð—Ð°Ð·Ð¸Ð»Ñ–Ñ Ð¥ÐµÐ¼Ñ–Ñˆ Стобер
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; addressing; formal
+
+expectedResult; Стобер Ð—Ð°Ð·Ð¸Ð»Ñ–Ñ Ð¥ÐµÐ¼Ñ–Ñˆ
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+
+expectedResult; Ð—Ð°Ð·Ð¸Ð»Ñ–Ñ Ð¥. Стобер
+
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; addressing; formal
+
+expectedResult; Стобер Ð—Ð°Ð·Ð¸Ð»Ñ–Ñ Ð¥.
+
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Ð—Ð°Ð·Ð¸Ð»Ñ–Ñ Ð¡Ñ‚Ð¾Ð±ÐµÑ€
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; informal
+
+expectedResult; Стобер ЗазиліÑ
+
+parameters; surnameFirst; long; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; З. Х. Стобер
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Стобер З. Х.
+
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; addressing; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; Ð—Ð°Ð·Ð¸Ð»Ñ–Ñ Ð¡.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; С. ЗазиліÑ
+
+parameters; surnameFirst; medium; addressing; informal
+
+expectedResult; Стобер З.
+
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; medium; referring; informal
+
+expectedResult; ЗазиліÑ
+
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+
+expectedResult; Стобер
+
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+
+expectedResult; ЗХС
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; medium; monogram; formal
+
+expectedResult; СЗХ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; ЗС
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; СЗ
+
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; З
+
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; С
+
+parameters; givenFirst; short; monogram; formal
+
+endName
+
+# foreignFull
+name ; title; проф.
+name ; given; ÐнаÑтаÑÑ–Ñ
+name ; given-informal; ÐаÑÑ‚Ñ
+name ; given2; Єва СофіÑ
+name ; surname-prefix; фон
+name ; surname-core; Вольф
+name ; surname2; Ð“Ð¾Ð½Ð·Ð°Ð»ÐµÑ Ð”Ð¾Ð¼Ñ–Ð½Ð³Ð¾
+name ; generation; мол.
+name ; credentials; д-р
+name ; locale; ja_AQ
+
+expectedResult; фон Вольф Ð“Ð¾Ð½Ð·Ð°Ð»ÐµÑ Ð”Ð¾Ð¼Ñ–Ð½Ð³Ð¾ ÐнаÑтаÑÑ–Ñ Ð„Ð²Ð° СофіÑ, д-Ñ€, проф.
+
+parameters; sorting; long; referring; formal
+
+expectedResult; проф. ÐнаÑтаÑÑ–Ñ Ð„Ð²Ð° Ð¡Ð¾Ñ„Ñ–Ñ Ñ„Ð¾Ð½ Вольф Ð“Ð¾Ð½Ð·Ð°Ð»ÐµÑ Ð”Ð¾Ð¼Ñ–Ð½Ð³Ð¾, д-Ñ€
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; addressing; formal
+
+expectedResult; проф. фон Вольф Ð“Ð¾Ð½Ð·Ð°Ð»ÐµÑ Ð”Ð¾Ð¼Ñ–Ð½Ð³Ð¾ ÐнаÑтаÑÑ–Ñ Ð„Ð²Ð° Ð¡Ð¾Ñ„Ñ–Ñ Ð´-Ñ€
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; проф. ÐнаÑтаÑÑ–Ñ Ð„. С. фон Вольф Ð“Ð¾Ð½Ð·Ð°Ð»ÐµÑ Ð”Ð¾Ð¼Ñ–Ð½Ð³Ð¾ д-Ñ€
+
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; addressing; formal
+
+expectedResult; проф. фон Вольф Ð“Ð¾Ð½Ð·Ð°Ð»ÐµÑ Ð”Ð¾Ð¼Ñ–Ð½Ð³Ð¾ ÐнаÑтаÑÑ–Ñ Ð„. С. д-Ñ€
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; фон Вольф Ð“Ð¾Ð½Ð·Ð°Ð»ÐµÑ Ð”Ð¾Ð¼Ñ–Ð½Ð³Ð¾ Ð. Є. С., д-Ñ€, проф.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; проф. Ð. Є. С. фон Вольф Ð“Ð¾Ð½Ð·Ð°Ð»ÐµÑ Ð”Ð¾Ð¼Ñ–Ð½Ð³Ð¾ д-Ñ€
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; проф. фон Вольф Ð“Ð¾Ð½Ð·Ð°Ð»ÐµÑ Ð”Ð¾Ð¼Ñ–Ð½Ð³Ð¾ Ð. Є. С. д-Ñ€
+
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; фон Вольф Ð“Ð¾Ð½Ð·Ð°Ð»ÐµÑ Ð”Ð¾Ð¼Ñ–Ð½Ð³Ð¾ ÐнаÑтаÑÑ–Ñ Ð„. С.
+
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; фон Вольф Ð“Ð¾Ð½Ð·Ð°Ð»ÐµÑ Ð”Ð¾Ð¼Ñ–Ð½Ð³Ð¾ Ð. Є. С.
+
+parameters; surnameFirst; short; addressing; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; ÐаÑÑ‚Ñ Ñ„Ð¾Ð½ Вольф Ð“Ð¾Ð½Ð·Ð°Ð»ÐµÑ Ð”Ð¾Ð¼Ñ–Ð½Ð³Ð¾
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; informal
+
+expectedResult; фон Вольф Ð“Ð¾Ð½Ð·Ð°Ð»ÐµÑ Ð”Ð¾Ð¼Ñ–Ð½Ð³Ð¾ ÐаÑÑ‚Ñ
+
+parameters; surnameFirst; long; referring; informal
+parameters; sorting; long; referring; informal
+
+expectedResult; фон Вольф Ð“Ð¾Ð½Ð·Ð°Ð»ÐµÑ Ð”Ð¾Ð¼Ñ–Ð½Ð³Ð¾ Ð.
+
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; medium; referring; informal
+
+expectedResult; Ñ„. Ð’. Г. Д. ÐаÑÑ‚Ñ
+
+parameters; surnameFirst; medium; addressing; informal
+
+expectedResult; проф. фон Вольф
+
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+
+expectedResult; фон Вольф ÐаÑÑ‚Ñ
+
+parameters; sorting; short; referring; informal
+
+expectedResult; ÐаÑÑ‚Ñ Ñ„. Ð’.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ÐаÑÑ‚Ñ
+
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+
+expectedResult; ÐЄФГ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; medium; monogram; formal
+
+expectedResult; ФГÐЄ
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; ÐФГ
+
+parameters; givenFirst; medium; monogram; informal
+
+expectedResult; ФГÐ
+
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; ÐФ
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; Ð
+
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; Ф
+
+parameters; givenFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ur.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ur.txt
new file mode 100644
index 00000000000..01958458782
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/ur.txt
@@ -0,0 +1,818 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: ur
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; احمد
+name ; locale; ur_AQ
+
+expectedResult; احمد
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; ا
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; شازیÛ
+name ; surname; اصغر
+name ; locale; ur_AQ
+
+expectedResult; اصغر، شازیÛ
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; اصغر شازیÛ
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Ø´Ø§Ø²ÛŒÛ Ø§ØµØºØ±
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; اصغر، ش.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Ø´Ø§Ø²ÛŒÛ Ø§.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; اصغر ش.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ش. اصغر
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; شازیÛ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; اصغر
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ا ش
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ش ا
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; ا
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Ø´
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; مریم
+name ; given2; نواز
+name ; surname; خان
+name ; locale; ur_AQ
+
+expectedResult; خان، مریم نواز
+
+parameters; sorting; long; referring; formal
+
+expectedResult; خان مریم نواز
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; مریم نواز خان
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; خان، مریم ن.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; خان مریم ن.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; مریم ن. خان
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; خان، م. ن.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; خان م. ن.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; خان، مریم
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; م. ن. خان
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; خان مریم
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; مریم خان
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; مریم خ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; خان م.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; خ م ن
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; م ن خ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; مریم
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; خ م
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; خان
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; م خ
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; Ø®
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Ù…
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeFull
+name ; title; محترم
+name ; given; عبد الکریم
+name ; given-informal; پٹھان
+name ; given2; عبد الحمید
+name ; surname-core; سید
+name ; generation; جونیئر
+name ; credentials; ایم پی
+name ; locale; ur_AQ
+
+expectedResult; سید، عبد الکریم عبد الحمید ایم پی
+
+parameters; sorting; long; referring; formal
+
+expectedResult; سید عبد الکریم عبد الحمید ایم پی
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; عبد الکریم عبد الحمید سید ایم پی
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; سید، عبد الکریم ع. ا. ایم پی
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; سید عبد الکریم ع. ا. ایم پی
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; عبد الکریم ع. ا. سید ایم پی
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; سید، ع. ا. ع. ا.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; سید ع. ا. ع. ا.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; ع. ا. ع. ا. سید
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; سید، پٹھان
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; پٹھان سید
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; سید پٹھان
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; سید ع. ا.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; محترم سید
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; پٹھان س.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; پٹھان
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; س ع ع
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ع ع س
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; پ س
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; س پ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; Ù¾
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; س
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; سندباد
+name ; locale; ja_AQ
+
+expectedResult; سندباد
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; س
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; حاتم
+name ; surname; منصور
+name ; locale; ja_AQ
+
+expectedResult; منصور، حاتم
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; حاتم منصور
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; منصور حاتم
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; منصور، ح.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; ح. منصور
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; منصور ح.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; حاتم م.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; منصور
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; حاتم
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ح م
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; م ح
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; Ø­
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; Ù…
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; محمد
+name ; given2; Ûاشم
+name ; surname; صابری
+name ; locale; ja_AQ
+
+expectedResult; صابری، محمد Ûاشم
+
+parameters; sorting; long; referring; formal
+
+expectedResult; صابری محمد Ûاشم
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; محمد Ûاشم صابری
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; صابری، محمد Û.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; صابری محمد Û.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; محمد Û. صابری
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; صابری، Ù…. Û.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; صابری Ù…. Û.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; صابری، محمد
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ù…. Û. صابری
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; صابری محمد
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; محمد صابری
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; صابری م.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; محمد ص.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ص م Û
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; صابری
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; م Û ص
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; محمد
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ص م
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; م ص
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; ص
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Ù…
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; پروÙیسر ڈاکٹر
+name ; given; یاسمین راشد
+name ; given-informal; ملک
+name ; given2; Ø³Ø¯Ø±Û Ù…Ù†ÛŒØ±
+name ; surname-prefix; ندیم
+name ; surname-core; رضا
+name ; surname2; یوس٠زئی
+name ; generation; جونيئر
+name ; credentials; ایم ڈی ڈی ڈی ایس
+name ; locale; ja_AQ
+
+expectedResult; ندیم رضا، یاسمین راشد Ø³Ø¯Ø±Û Ù…Ù†ÛŒØ± ایم ÚˆÛŒ ÚˆÛŒ ÚˆÛŒ ایس
+
+parameters; sorting; long; referring; formal
+
+expectedResult; ندیم رضا یاسمین راشد Ø³Ø¯Ø±Û Ù…Ù†ÛŒØ± ایم ÚˆÛŒ ÚˆÛŒ ÚˆÛŒ ایس
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; یاسمین راشد Ø³Ø¯Ø±Û Ù…Ù†ÛŒØ± ندیم رضا ایم ÚˆÛŒ ÚˆÛŒ ÚˆÛŒ ایس
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; ندیم رضا، یاسمین راشد س. م. ایم ڈی ڈی ڈی ایس
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; ندیم رضا یاسمین راشد س. م. ایم ڈی ڈی ڈی ایس
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; یاسمین راشد س. م. ندیم رضا ایم ڈی ڈی ڈی ایس
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; پروÙیسر ڈاکٹر ندیم رضا
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; ندیم رضا، ی. ر. س. م.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; ندیم رضا ی. ر. س. م.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; ی. ر. س. م. ندیم رضا
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; ندیم رضا ی. ر.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; ندیم رضا، ملک
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; ملک ندیم رضا
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; ندیم رضا ملک
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; ملک ن. ر.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ن ی س
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ی س ن
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; م ن
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; ملک
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ن م
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; Ù…
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; Ù†
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/uz.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/uz.txt
new file mode 100644
index 00000000000..07ab62850f8
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/uz.txt
@@ -0,0 +1,818 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: uz
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Bobur
+name ; locale; uz_AQ
+
+expectedResult; Bobur
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; B
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Alisher
+name ; surname; Sattorov
+name ; locale; uz_AQ
+
+expectedResult; Sattorov, Alisher
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Alisher Sattorov
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Sattorov Alisher
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Sattorov, A.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; A. Sattorov
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Sattorov A.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Alisher S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Sattorov
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Alisher
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; AS
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; SA
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeGGS
+name ; given; Muhammad
+name ; given2; Yusuf
+name ; surname; Qodirov
+name ; locale; uz_AQ
+
+expectedResult; Qodirov, Muhammad Yusuf
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Muhammad Yusuf Qodirov
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Qodirov Muhammad Yusuf
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Qodirov, Muhammad Y.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Muhammad Y. Qodirov
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Qodirov Muhammad Y.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Qodirov, Muhammad
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Muhammad Qodirov
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Qodirov Muhammad
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Qodirov, M. Y.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; M. Y. Qodirov
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Qodirov M. Y.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Muhammad Q.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Qodirov M.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Muhammad
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Qodirov
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; MYQ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; QMY
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; MQ
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; QM
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; Q
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; Janob
+name ; given; Alisher
+name ; given-informal; Alisher
+name ; given2; Salimovich
+name ; surname-core; Qodirov
+name ; generation; Kichik
+name ; credentials; Deputat
+name ; locale; uz_AQ
+
+expectedResult; Alisher Salimovich Qodirov Deputat
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Qodirov Alisher Salimovich Deputat
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Qodirov, Alisher Salimovich
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Alisher S. Qodirov Deputat
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Qodirov Alisher S. Deputat
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Qodirov, Alisher S.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Qodirov, Alisher
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Alisher Qodirov
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Qodirov Alisher
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Qodirov, A. S.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; A. S. Qodirov
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Janob Qodirov
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Qodirov A. S.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Alisher Q.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Qodirov A.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Alisher
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ASQ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; QAS
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; AQ
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; QA
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; Q
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; Sinbad
+name ; locale; ko_AQ
+
+expectedResult; Sinbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Kete
+name ; surname; Myuller
+name ; locale; ko_AQ
+
+expectedResult; Myuller, Kete
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Kete Myuller
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Myuller Kete
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Myuller, K.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; K. Myuller
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Myuller K.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Kete M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Myuller
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Kete
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Zaziliya
+name ; given2; Hemish
+name ; surname; Shtober
+name ; locale; ko_AQ
+
+expectedResult; Shtober, Zaziliya Hemish
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Shtober Zaziliya Hemish
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Zaziliya Hemish Shtober
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Shtober, Zaziliya H.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Shtober Zaziliya H.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Zaziliya H. Shtober
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Shtober, Zaziliya
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Shtober Zaziliya
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Zaziliya Shtober
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Shtober, Z. H.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Shtober Z. H.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Z. H. Shtober
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Zaziliya S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Shtober Z.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Zaziliya
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Shtober
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; SZH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ZHS
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; SZ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ZS
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Z
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; Prof. Dr.
+name ; given; Ada Kornelia
+name ; given-informal; Nil
+name ; given2; Yeva Sofiya
+name ; surname-prefix; van den
+name ; surname-core; Volf
+name ; surname2; Bekker Shmidt
+name ; generation; Kichik
+name ; credentials; M.D. Ph.D.
+name ; locale; ko_AQ
+
+expectedResult; Ada Kornelia Yeva Sofiya van den Volf M.D. Ph.D.
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; van den Volf Ada Kornelia Yeva Sofiya M.D. Ph.D.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Ada Kornelia Y. S. van den Volf M.D. Ph.D.
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; van den Volf Ada Kornelia Y. S. M.D. Ph.D.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Volf, Ada Kornelia Yeva Sofiya van den
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Volf, Ada Kornelia Y. S. van den
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Volf, A. K. Y. S. van den
+
+parameters; sorting; short; referring; formal
+
+expectedResult; A. K. Y. S. van den Volf
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; van den Volf A. K. Y. S.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Prof. Dr. van den Volf
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; van den Volf A. K.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; van den Volf, Nil
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Nil van den Volf
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; van den Volf Nil
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Nil v. d. V.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; AYV
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; Nil
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; VAY
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; NV
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VN
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; N
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/vi.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/vi.txt
new file mode 100644
index 00000000000..895483649ea
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/vi.txt
@@ -0,0 +1,774 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: vi
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Anh
+name ; locale; vi_AQ
+
+expectedResult; Anh
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; A
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Anh
+name ; surname; Nguyá»…n
+name ; locale; vi_AQ
+
+expectedResult; Anh Nguyá»…n
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Nguyá»…n Anh
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; A. Nguyá»…n
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Nguyá»…n A.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; short; referring; formal
+
+expectedResult; Anh N.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Nguyá»…n
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; Anh
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; AN
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; NA
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; N
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeGGS
+name ; given; Anh
+name ; given2; Văn
+name ; surname; Nguyá»…n
+name ; locale; vi_AQ
+
+expectedResult; Anh Văn Nguyễn
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Nguyễn Văn Anh
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+
+expectedResult; Anh V. Nguyá»…n
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Nguyá»…n V. Anh
+
+parameters; surnameFirst; medium; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; A. V. Nguyá»…n
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Nguyá»…n V. A.
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; Anh Nguyá»…n
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Nguyá»…n Anh
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Nguyá»…n A.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Anh N.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Nguyá»…n
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; Anh
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; AVN
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; NVA
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; AN
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; NA
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; N
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; Ông
+name ; given; Anh
+name ; given2; Văn
+name ; surname-core; Nguyá»…n
+name ; credentials; ÄBQH
+name ; locale; vi_AQ
+
+expectedResult; Ông Anh Văn Nguyá»…n ÄBQH
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; ÄBQH Nguyá»…n Văn Anh
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Anh V. Nguyá»…n ÄBQH
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; ÄBQH Nguyá»…n V. Anh
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Nguyễn Văn Anh
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Nguyá»…n V. Anh
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; A. V. Nguyá»…n
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Nguyá»…n V. A.
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; Anh Nguyá»…n
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Nguyá»…n Anh
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ông Nguyễn
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; Nguyá»…n A.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Ông Anh
+
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Anh N.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Anh
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; AVN
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; NVA
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; AN
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; NA
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; N
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; Sinbad
+name ; locale; fr_AQ
+
+expectedResult; Sinbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Käthe
+name ; surname; Müller
+name ; locale; fr_AQ
+
+expectedResult; Käthe Müller
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Müller Käthe
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; K. Müller
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Müller K.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; short; referring; formal
+
+expectedResult; Käthe M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Müller
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; Käthe
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Zäzilia
+name ; given2; Hamish
+name ; surname; Stöber
+name ; locale; fr_AQ
+
+expectedResult; Stöber Hamish Zäzilia
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+
+expectedResult; Zäzilia Hamish Stöber
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Stöber H. Zäzilia
+
+parameters; surnameFirst; medium; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; Zäzilia H. Stöber
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Stöber Zäzilia
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Zäzilia Stöber
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Stöber H. Z.
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; Z. H. Stöber
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Zäzilia S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Stöber Z.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Zäzilia
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Stöber
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; SHZ
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ZHS
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; SZ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ZS
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Z
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; Giáo sư, Tiến sĩ
+name ; given; Ada Cornelia
+name ; given-informal; Neele
+name ; given2; César Martín
+name ; surname-prefix; von
+name ; surname-core; Brühl
+name ; surname2; González Domingo
+name ; generation; Jr
+name ; credentials; MD DDS
+name ; locale; fr_AQ
+
+expectedResult; Giáo sư, Tiến sĩ Ada Cornelia César Martín von Brühl Jr, MD DDS
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; MD DDS von Brühl César Martín Ada Cornelia
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Ada Cornelia C. M. von Brühl Jr, MD DDS
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; MD DDS von Brühl C. M. Ada Cornelia
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; von Brühl César Martín Ada Cornelia
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Giáo sư, Tiến sĩ Ada Cornelia
+
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; von Brühl C. M. Ada Cornelia
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Giáo sư, Tiến sĩ von Brühl
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; A. C. C. M. von Brühl
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; von Brühl C. M. A. C.
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; Neele von Brühl
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; von Brühl A. C.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; von Brühl Neele
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Neele v. B.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Neele
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ACV
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; VCA
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; NV
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VN
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; N
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/wo.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/wo.txt
new file mode 100644
index 00000000000..e16f3cffd1b
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/wo.txt
@@ -0,0 +1,551 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: wo
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Seynabu
+name ; locale; wo_AQ
+
+expectedResult; Seynabu
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Isseu
+name ; surname; Awa
+name ; locale; wo_AQ
+
+expectedResult; Awa Isseu
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Isseu Awa
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; AI
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; IA
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; Mari shu
+name ; given2; Halimatu
+name ; surname; Waly
+name ; locale; wo_AQ
+
+expectedResult; Mari shu Halimatu Waly
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; Waly Mari shu Halimatu
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; MHW
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; WMH
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeFull
+name ; title; Señ
+name ; given; Baba Wagué
+name ; given-informal; Binta
+name ; given2; Amdy Raas
+name ; surname-core; Sañsé
+name ; generation; Jr
+name ; credentials; MP
+name ; locale; wo_AQ
+
+expectedResult; Sañsé Señ Baba Wagué Amdy Raas MP
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Señ Baba Wagué Amdy Raas Sañsé MP
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; BAS
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; SBA
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; Samba
+name ; locale; ja_AQ
+
+expectedResult; Samba
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Katy
+name ; surname; Mané
+name ; locale; ja_AQ
+
+expectedResult; Katy Mané
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; Mané Katy
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGGS
+name ; given; Samira
+name ; given2; Ahmet
+name ; surname; Saar
+name ; locale; ja_AQ
+
+expectedResult; Saar Samira Ahmet
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Samira Ahmet Saar
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; SAS
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; SSA
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; Prof. Dr.
+name ; given; Adama Coulibaly
+name ; given-informal; Néné
+name ; given2; Camara Massamba
+name ; surname-prefix; won
+name ; surname-core; Baar
+name ; surname2; Dominique Goudiaby
+name ; generation; Jr
+name ; credentials; MD DDS
+name ; locale; ja_AQ
+
+expectedResult; won Baar Dominique Goudiaby, Prof. Dr. Adama Coulibaly Camara Massamba MD DDS
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; Prof. Dr. Adama Coulibaly Camara Massamba won Baar Dominique Goudiaby MD DDS
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; won Baar Dominique Goudiaby Prof. Dr. Adama Coulibaly Camara Massamba MD DDS
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ACW
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; WAC
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/yo.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/yo.txt
new file mode 100644
index 00000000000..fcb09dc7ee8
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/yo.txt
@@ -0,0 +1,809 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: yo
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Boluwatife
+name ; locale; yo_AQ
+
+expectedResult; Boluwatife
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; B
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Olabisi
+name ; surname; Adeboye
+name ; locale; yo_AQ
+
+expectedResult; Adeboye, Olabisi
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Adeboye Olabisi
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Olabisi Adeboye
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Adeboye, O.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Adeboye O.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; O. Adeboye
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Olabisi A.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Adeboye
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Olabisi
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; AO
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; OA
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; O
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; Adeolu
+name ; given2; Adegboyega
+name ; surname; Akintola
+name ; locale; yo_AQ
+
+expectedResult; Akintola, Adeolu Adegboyega
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Adeolu Adegboyega Akintola
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Akintola Adeolu Adegboyega
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Akintola, Adeolu A.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Adeolu A. Akintola
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Akintola Adeolu A.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Akintola, Adeolu
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Adeolu Akintola
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Akintola Adeolu
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Akintola, A. A.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; A. A. Akintola
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Akintola A. A.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Akintola A.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Adeolu A.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Akintola
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Adeolu
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; AAA
+
+parameters; givenFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; AA
+
+parameters; givenFirst; long; monogram; informal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeFull
+name ; title; Ọ̀gbẹÌni
+name ; given; Adebola Opeyemi
+name ; given-informal; Bolanle
+name ; given2; Olumide Ajao
+name ; surname-core; Adekunle
+name ; generation; Jr
+name ; credentials; Asofin
+name ; locale; yo_AQ
+
+expectedResult; Adebola Opeyemi Olumide Ajao Adekunle Asofin
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Adekunle Adebola Opeyemi Olumide Ajao Asofin
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Adekunle, Adebola Opeyemi Olumide Ajao
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Adebola Opeyemi O. A. Adekunle Asofin
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Adekunle Adebola Opeyemi O. A. Asofin
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Adekunle, Adebola Opeyemi O. A.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Adekunle, A. O. O. A.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; A. O. O. A. Adekunle
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Adekunle A. O. O. A.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Adekunle, Bolanle
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ọ̀gbẹÌni Adekunle
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Adekunle Bolanle
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Bolanle Adekunle
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Adekunle A. O.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Bolanle A.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Bolanle
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; AAO
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; AOA
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; AB
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; BA
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; B
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; Sinbad
+name ; locale; ko_AQ
+
+expectedResult; Sinbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Käthe
+name ; surname; Müller
+name ; locale; ko_AQ
+
+expectedResult; Müller, Käthe
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Käthe Müller
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Müller Käthe
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Müller, K.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; K. Müller
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Müller K.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Käthe M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Müller
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Käthe
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Zäzilia
+name ; given2; Hamish
+name ; surname; Stöber
+name ; locale; ko_AQ
+
+expectedResult; Stöber, Zäzilia Hamish
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Stöber Zäzilia Hamish
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Zäzilia Hamish Stöber
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Stöber, Zäzilia H.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Stöber Zäzilia H.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Zäzilia H. Stöber
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Stöber, Zäzilia
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Stöber Zäzilia
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Zäzilia Stöber
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Stöber, Z. H.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Stöber Z. H.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Z. H. Stöber
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Zäzilia S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Stöber Z.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Zäzilia
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Stöber
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; SZH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ZHS
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; SZ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ZS
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Z
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; Ọ̀já»Ì€gbá»Ìn Ọ̀má»Ì€wé
+name ; given; Ada Cornelia
+name ; given-informal; Neele
+name ; given2; César Martín
+name ; surname-prefix; von
+name ; surname-core; Brühl
+name ; surname2; González Domingo
+name ; generation; Jr
+name ; credentials; M.D. Ph.D.
+name ; locale; ko_AQ
+
+expectedResult; Ada Cornelia César Martín von Brühl M.D. Ph.D.
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; von Brühl Ada Cornelia César Martín M.D. Ph.D.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Ada Cornelia C. M. von Brühl M.D. Ph.D.
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; von Brühl Ada Cornelia C. M. M.D. Ph.D.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Brühl, Ada Cornelia César Martín von
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Brühl, Ada Cornelia C. M. von
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Ọ̀já»Ì€gbá»Ìn Ọ̀má»Ì€wé von Brühl
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Brühl, A. C. C. M. von
+
+parameters; sorting; short; referring; formal
+
+expectedResult; A. C. C. M. von Brühl
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; von Brühl A. C. C. M.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; von Brühl, Neele
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Neele von Brühl
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; von Brühl A. C.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; von Brühl Neele
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Neele v. B.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Neele
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ACV
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; VAC
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; NV
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VN
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; N
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/yo_BJ.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/yo_BJ.txt
new file mode 100644
index 00000000000..2acd74764fd
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/yo_BJ.txt
@@ -0,0 +1,809 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: yo_BJ
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Boluwatife
+name ; locale; yo_BJ
+
+expectedResult; Boluwatife
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; B
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; Olabisi
+name ; surname; Adeboye
+name ; locale; yo_BJ
+
+expectedResult; Adeboye, Olabisi
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Adeboye Olabisi
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Olabisi Adeboye
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Adeboye, O.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Adeboye O.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; O. Adeboye
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Olabisi A.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Adeboye
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Olabisi
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; AO
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; OA
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; O
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; Adeolu
+name ; given2; Adegboyega
+name ; surname; Akintola
+name ; locale; yo_BJ
+
+expectedResult; Akintola, Adeolu Adegboyega
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Adeolu Adegboyega Akintola
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Akintola Adeolu Adegboyega
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Akintola, Adeolu A.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Adeolu A. Akintola
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Akintola Adeolu A.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Akintola, Adeolu
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Adeolu Akintola
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Akintola Adeolu
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Akintola, A. A.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; A. A. Akintola
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Akintola A. A.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Akintola A.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Adeolu A.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Akintola
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Adeolu
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; AAA
+
+parameters; givenFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; AA
+
+parameters; givenFirst; long; monogram; informal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeFull
+name ; title; Ɔ̀gbÉ›Ìni
+name ; given; Adebola Opeyemi
+name ; given-informal; Bolanle
+name ; given2; Olumide Ajao
+name ; surname-core; Adekunle
+name ; generation; Jr
+name ; credentials; Asofin
+name ; locale; yo_BJ
+
+expectedResult; Adebola Opeyemi Olumide Ajao Adekunle Asofin
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Adekunle Adebola Opeyemi Olumide Ajao Asofin
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Adekunle, Adebola Opeyemi Olumide Ajao
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Adebola Opeyemi O. A. Adekunle Asofin
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Adekunle Adebola Opeyemi O. A. Asofin
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Adekunle, Adebola Opeyemi O. A.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Adekunle, A. O. O. A.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; A. O. O. A. Adekunle
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Adekunle A. O. O. A.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Adekunle, Bolanle
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Ɔ̀gbÉ›Ìni Adekunle
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Adekunle Bolanle
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Bolanle Adekunle
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Adekunle A. O.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Bolanle A.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Bolanle
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; AAO
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; AOA
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; AB
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; BA
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; A
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; B
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignG
+name ; given; Sinbad
+name ; locale; ko_AQ
+
+expectedResult; Sinbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Käthe
+name ; surname; Müller
+name ; locale; ko_AQ
+
+expectedResult; Müller, Käthe
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Käthe Müller
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Müller Käthe
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Müller, K.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; K. Müller
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Müller K.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Käthe M.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Müller
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Käthe
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Zäzilia
+name ; given2; Hamish
+name ; surname; Stöber
+name ; locale; ko_AQ
+
+expectedResult; Stöber, Zäzilia Hamish
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Stöber Zäzilia Hamish
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Zäzilia Hamish Stöber
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; Stöber, Zäzilia H.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Stöber Zäzilia H.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Zäzilia H. Stöber
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; Stöber, Zäzilia
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Stöber Zäzilia
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Zäzilia Stöber
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; Stöber, Z. H.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; Stöber Z. H.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; Z. H. Stöber
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; Zäzilia S.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Stöber Z.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; Zäzilia
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; Stöber
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; SZH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ZHS
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; SZ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ZS
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Z
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; Ɔ̀jɔ̀gbÉ”Ìn Ɔ̀mɔ̀wé
+name ; given; Ada Cornelia
+name ; given-informal; Neele
+name ; given2; César Martín
+name ; surname-prefix; von
+name ; surname-core; Brühl
+name ; surname2; González Domingo
+name ; generation; Jr
+name ; credentials; M.D. Ph.D.
+name ; locale; ko_AQ
+
+expectedResult; Ada Cornelia César Martín von Brühl M.D. Ph.D.
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; von Brühl Ada Cornelia César Martín M.D. Ph.D.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Ada Cornelia C. M. von Brühl M.D. Ph.D.
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; von Brühl Ada Cornelia C. M. M.D. Ph.D.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; Brühl, Ada Cornelia César Martín von
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Brühl, Ada Cornelia C. M. von
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Ɔ̀jɔ̀gbÉ”Ìn Ɔ̀mɔ̀wé von Brühl
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; Brühl, A. C. C. M. von
+
+parameters; sorting; short; referring; formal
+
+expectedResult; A. C. C. M. von Brühl
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; von Brühl A. C. C. M.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; von Brühl, Neele
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Neele von Brühl
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; von Brühl A. C.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; von Brühl Neele
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+
+expectedResult; Neele v. B.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; Neele
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; ACV
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; VAC
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; NV
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; VN
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; N
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; V
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/yue.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/yue.txt
new file mode 100644
index 00000000000..845bd7b19c4
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/yue.txt
@@ -0,0 +1,697 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: yue
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; 文傑
+name ; locale; yue_AQ
+
+expectedResult; 文傑
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; æ–‡
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; é›…å©·
+name ; surname; å¼µ
+name ; locale; yue_AQ
+
+expectedResult; 張雅婷
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; é›…å©·å¼µ
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; short; referring; formal
+
+expectedResult; 張雅
+
+parameters; givenFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; é›…å©·
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; å¼µ
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; é›…
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; 家豪
+name ; given2; 明德
+name ; surname; æž—
+name ; locale; yue_AQ
+
+expectedResult; 家豪明德林
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; 林家豪,明
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; 林家豪明德
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; 家豪明林
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; 林家豪明
+
+parameters; surnameFirst; medium; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; 家豪明
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; 明林家
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; 林家明
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; 林家豪
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; 家豪
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; 林家
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; 家
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; æž—
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; 先生
+name ; given; å­åªš
+name ; given-informal; 阿媚
+name ; given2; 惠儀
+name ; surname-core; 陳
+name ; generation; å°
+name ; credentials; 太平紳士
+name ; locale; yue_AQ
+
+expectedResult; 先生å­åªšæƒ å„€é™³å°ï¼Œå¤ªå¹³ç´³å£«
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; 陳å­åªšå…ˆç”Ÿï¼Œå°æƒ å„€å¤ªå¹³ç´³å£«
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; 陳å­åªšå¤ªå¹³ç´³å£«ï¼Œå°æƒ å„€
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; å­åªšå¤ªå¹³ç´³å£«ï¼Œå°æƒ å„€
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; 陳å­åªšï¼Œæƒ å„€
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; å­åªšæƒ å„€é™³
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; 陳å­åªšæƒ å„€
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; 惠陳å­
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; 陳先生
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; 陳å­åªš
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; 陳å­æƒ 
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; 陳阿媚
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; 阿媚
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; 陳阿
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; 阿
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; 陳
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; 凱晴
+name ; locale; fr_AQ
+
+expectedResult; 凱晴
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; 凱
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; 永翹
+name ; surname; 黃
+name ; locale; fr_AQ
+
+expectedResult; 永·翹·黃
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; 黃·永·翹
+
+parameters; sorting; short; referring; formal
+
+expectedResult; 永翹·黃
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; 黃·永翹
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; 永翹
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; 黃永
+
+parameters; givenFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; æ°¸
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; 黃
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; 永強
+name ; given2; 德安
+name ; surname; å³
+name ; locale; fr_AQ
+
+expectedResult; å³Â·æ°¸Â·å¼·Â·å¾·Â·å®‰
+
+parameters; sorting; short; referring; formal
+
+expectedResult; 永·強·德·安·å³
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; å³Â·æ°¸å¼·ï¼Œå¾·Â·å®‰
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; å³Â·æ°¸å¼·Â·å¾·Â·å®‰
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; å³Â·æ°¸å¼·Â·å¾·å®‰
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; 永強·德安·å³
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; 永強·德·安
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; å³Â·æ°¸å¼·
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; å³æ°¸å¾·
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; å¾·å³æ°¸
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; å³æ°¸
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; 永強
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; å³
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; æ°¸
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; 教授
+name ; given; 怡å›
+name ; given-informal; å°å›
+name ; given2; é”å°
+name ; surname-prefix; 陳
+name ; surname-core; 陳
+name ; generation; å°
+name ; credentials; åšå£«
+name ; locale; fr_AQ
+
+expectedResult; 教授·怡å›Â·é”å°Â·é™³Â·é™³Â·å°ï¼Œåšå£«
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; 陳·陳·怡å›Â·æ•™æŽˆï¼Œå°Â·é”å°Â·åšå£«
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; 陳·陳·怡å›Â·åšå£«ï¼Œå°Â·é”·å°
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; 怡·å›Â·é”·å°Â·é™³Â·é™³
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; 怡å›Â·åšå£«ï¼Œå°Â·é”·å°
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; 陳·陳·怡å›ï¼Œé”·å°
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; 陳·怡·å›Â·é”·å°
+
+parameters; sorting; short; referring; formal
+
+expectedResult; 陳·怡å›Â·é”å°
+
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; 陳·陳·å°å›
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; 陳·陳·怡å›
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; 陳·陳教授
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; é”陳怡
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; 陳怡é”
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; å°å›
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; 陳å°
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; å°
+
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; 陳
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/yue_Hans.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/yue_Hans.txt
new file mode 100644
index 00000000000..ff6d9876015
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/yue_Hans.txt
@@ -0,0 +1,631 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: yue_Hans
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; 大文
+name ; locale; yue_Hans_AQ
+
+expectedResult; 大文
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; 大
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; 大文
+name ; surname; 陈
+name ; locale; yue_Hans_AQ
+
+expectedResult; 大文陈
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; 陈大文
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; 大文
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; 大陈
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; 陈大
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; 大
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; 陈
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeGGS
+name ; given; 大文
+name ; given2; 明德
+name ; surname; 陈
+name ; locale; yue_Hans_AQ
+
+expectedResult; 大文明德陈
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; 陈大文明德
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+
+expectedResult; 陈大文明
+
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; 大明陈
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; 陈大文
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; 陈大明
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; 大文
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; 陈大
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; 大
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; 陈
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; 先生
+name ; given; å­åªš
+name ; given-informal; 阿媚
+name ; given2; 惠仪
+name ; surname-core; 陈
+name ; generation; å°
+name ; credentials; 太平绅士
+name ; locale; yue_Hans_AQ
+
+expectedResult; 先生å­åªšæƒ ä»ªé™ˆå¤ªå¹³ç»…士
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; 陈å­åªšå¤ªå¹³ç»…士惠仪
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; medium; referring; formal
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; 陈å­åªšæƒ ä»ª
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; å­æƒ é™ˆ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; 陈先生
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; 陈å­åªš
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; 陈å­æƒ 
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; 陈阿媚
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; 阿媚
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; 陈å­
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; 阿
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; 陈
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; 凯晴
+name ; locale; fr_AQ
+
+expectedResult; 凯晴
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; 凯
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; 永翘
+name ; surname; 黄
+name ; locale; fr_AQ
+
+expectedResult; 永翘 黄
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; 黄 永翘
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; 永翘
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; 永黄
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; 黄永
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; æ°¸
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; 黄
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; 永强
+name ; given2; 德安
+name ; surname; å´
+name ; locale; fr_AQ
+
+expectedResult; å´ æ°¸å¼º å¾· 安
+
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; å´ æ°¸å¼º 德安
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+
+expectedResult; 永强 德安 å´
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; å´ æ°¸å¼º
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; å´æ°¸å¾·
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; 永德å´
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; å´æ°¸
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; 永强
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; å´
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; æ°¸
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; 先生
+name ; given; 大文
+name ; given-informal; å°äºŒ
+name ; generation; å°
+name ; credentials; åšå£«
+name ; locale; fr_AQ
+
+expectedResult; 先生 大文 åšå£«
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; 大文 åšå£«
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; medium; referring; formal
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; 大文先生
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; 大文
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; short; referring; formal
+
+expectedResult; å°äºŒ
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; 大
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; å°
+
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/zh.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/zh.txt
new file mode 100644
index 00000000000..1fa6bd3dc19
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/zh.txt
@@ -0,0 +1,730 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: zh
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; 宇瀚
+name ; locale; zh_AQ
+
+expectedResult; 宇瀚
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; 宇
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; 安怡
+name ; surname; å¼ 
+name ; locale; zh_AQ
+
+expectedResult; 安怡张
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; 张安怡
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; 安张
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; 安怡
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; 张安
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; 安
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; å¼ 
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeGGS
+name ; given; ä¿Šå¹´
+name ; given2; æ°æ€
+name ; surname; 陈
+name ; locale; zh_AQ
+
+expectedResult; ä¿Šå¹´æ°æ€é™ˆ
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; short; referring; formal
+
+expectedResult; 陈俊年æ°æ€
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; 俊年陈
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; ä¿Šæ°é™ˆ
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; 陈俊年
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; 陈俊æ°
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ä¿Šå¹´
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; 俊陈
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; 陈俊
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ä¿Š
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; 陈
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; 先生
+name ; given; å¾·å¨
+name ; given-informal; å°å¾·
+name ; given2; 东å‡
+name ; surname-core; å½­
+name ; generation; å°
+name ; credentials; 议员
+name ; locale; zh_AQ
+
+expectedResult; å°å½­å¾·å¨ä¸œå‡è®®å‘˜å…ˆç”Ÿ
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; å°å¾·å¨ä¸œå‡å½­è®®å‘˜å…ˆç”Ÿ
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; å°å½­å¾·å¨ä¸œå‡è®®å‘˜
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; å°å¾·å¨ä¸œå‡å½­è®®å‘˜
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; å½­å¾·å¨ä¸œå‡
+
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; 彭德东å‡
+
+parameters; sorting; short; referring; formal
+
+expectedResult; 德东å‡å½­
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; å°å¾·å½­
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; informal
+
+expectedResult; 彭先生
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; å½­å°å¾·
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; 彭德东
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; å½­å¾·å¨
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; 德东彭
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; å°å½­
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; å°å¾·
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; å½­å°
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; å°
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; å½­
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; 辛巴达
+name ; locale; en_AQ
+
+expectedResult; 辛巴达
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; è¾›
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; 克特
+name ; surname; 米勒
+name ; locale; en_AQ
+
+expectedResult; 克·特·米勒
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; 米勒·克·特
+
+parameters; sorting; short; referring; formal
+
+expectedResult; 克特·米勒
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; 米勒·克特
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; 克特·米
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; 克特
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; å…‹ç±³
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; 米克
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; 米勒
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; å…‹
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; ç±³
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; 塞西莉亚
+name ; given2; 哈米什
+name ; surname; 施托è´å°”
+name ; locale; en_AQ
+
+expectedResult; 塞·西·莉·亚·哈·米·什·施托è´å°”
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; 施托è´å°”·塞·西·莉·亚·哈·米·什
+
+parameters; sorting; short; referring; formal
+
+expectedResult; 塞西莉亚·哈·米·什·施托è´å°”
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; 施托è´å°”·塞西莉亚·哈·米·什
+
+parameters; surnameFirst; medium; referring; formal
+parameters; sorting; medium; referring; formal
+
+expectedResult; 塞西莉亚·哈米什·施托è´å°”
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; 施托è´å°”·塞西莉亚·哈米什
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; short; referring; formal
+parameters; sorting; long; referring; formal
+
+expectedResult; 塞西莉亚·施·托·è´
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; 塞西莉亚·施托è´å°”
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; 施托è´å°”·塞西莉亚
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; short; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; 塞西莉亚
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; 施托è´å°”
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; 塞哈施
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; 施塞哈
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; å¡žæ–½
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; 施塞
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; å¡ž
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; æ–½
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignFull
+name ; title; 教授
+name ; given; 艾达·科妮莉亚
+name ; given-informal; 尼尔
+name ; given2; å¡žè¨å°”·马ä¸
+name ; surname-prefix; 冯
+name ; surname-core; 布é²èµ«
+name ; generation; å°
+name ; credentials; åšå£«
+name ; locale; en_AQ
+
+expectedResult; å°å†¯Â·å¸ƒé²èµ«Â·è‰¾è¾¾Â·ç§‘妮莉亚·塞è¨å°”·马ä¸Â·åšå£«æ•™æŽˆ
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; å°è‰¾è¾¾Â·ç§‘妮莉亚·塞è¨å°”·马ä¸Â·å†¯Â·å¸ƒé²èµ«åšå£«æ•™æŽˆ
+
+parameters; givenFirst; long; referring; formal
+
+expectedResult; 布é²èµ«Â·è‰¾Â·è¾¾Â·ç§‘·妮·莉·亚·塞·è¨Â·é©¬Â·å†¯
+
+parameters; sorting; short; referring; formal
+
+expectedResult; 艾·达·科·妮·莉·亚·塞·è¨Â·é©¬Â·å†¯Â·å¸ƒé²èµ«
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; å°å†¯Â·å¸ƒé²èµ«Â·è‰¾è¾¾Â·ç§‘妮莉亚·塞·è¨Â·é©¬åšå£«
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; å°è‰¾è¾¾Â·ç§‘妮莉亚·塞·è¨Â·é©¬Â·å†¯Â·å¸ƒé²èµ«åšå£«
+
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; 冯·布é²èµ«Â·è‰¾è¾¾Â·ç§‘妮莉亚·塞è¨å°”·马ä¸
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; 布é²èµ«Â·è‰¾è¾¾Â·ç§‘妮莉亚·塞è¨å°”·马ä¸Â·å†¯
+
+parameters; sorting; long; referring; formal
+
+expectedResult; 布é²èµ«Â·è‰¾è¾¾Â·ç§‘妮莉亚·塞·è¨Â·é©¬Â·å†¯
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; 冯·布é²èµ«Â·è‰¾è¾¾Â·ç§‘妮莉亚
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; 尼尔·冯·布·é²Â·èµ«
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; 冯·布é²èµ«Â·å°¼å°”
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; 尼尔·冯·布é²èµ«
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; 冯·布é²èµ«æ•™æŽˆ
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; 冯艾塞
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; 艾塞冯
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; 冯尼
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; 尼冯
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; 尼尔
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; 冯
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; å°¼
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/zh_Hant.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/zh_Hant.txt
new file mode 100644
index 00000000000..18698d5bf98
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/zh_Hant.txt
@@ -0,0 +1,727 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: zh_Hant
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; 文傑
+name ; locale; zh_Hant_AQ
+
+expectedResult; 文傑
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; æ–‡
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; é›…å©·
+name ; surname; å¼µ
+name ; locale; zh_Hant_AQ
+
+expectedResult; 張雅.婷.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; é›….å©·.å¼µ
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; é›…å©·å¼µ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; 張雅婷
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; é›…å©·å¼µ
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; 張雅
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; é›…å©·
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; é›…å¼µ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; å¼µ
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; é›…
+
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; 家豪
+name ; given2; 明德
+name ; surname; æž—
+name ; locale; zh_Hant_AQ
+
+expectedResult; 林家.豪.明.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; 家.豪.林
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; 家豪明德林
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; 林家.豪.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; 林家豪明.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; 林家豪明德
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+
+expectedResult; 家豪林.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; 家明林
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; 家豪林
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; 林家明
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; 林家豪
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; 家豪
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; 家
+
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; æž—
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; 先生
+name ; given; é›…å©·
+name ; given-informal; å©·å©·
+name ; given2; å©·å©·
+name ; surname-core; 王
+name ; generation; 二世
+name ; credentials; è­°å“¡
+name ; locale; zh_Hant_AQ
+
+expectedResult; 雅婷婷婷王二世先生,議員
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; 王雅婷婷.二世,議員
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; 王雅婷婷婷二世議員
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; 王雅.婷.婷.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; 王雅.婷.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; 王雅婷婷婷
+
+parameters; sorting; long; referring; formal
+
+expectedResult; 雅.婷.王
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; 婷婷王.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; 婷婷王
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; 王先生
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; 王婷婷
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; 王雅婷
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; 雅婷王
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; å©·å©·
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; å©·
+
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; 王
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; é›…å©·
+name ; locale; fr_AQ
+
+expectedResult; é›…å©·
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; é›…
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; é›…å©·
+name ; surname; 王
+name ; locale; fr_AQ
+
+expectedResult; 王·雅.·婷.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; 王雅.·婷.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; 雅.·婷.王
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; 王·雅婷
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; 雅婷王.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; 王雅婷
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+
+expectedResult; 雅婷王
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; 王雅
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; é›…å©·
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; 雅王
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; 王
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; é›…
+
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGGS
+name ; given; é›…å©·
+name ; given2; å©·å©·
+name ; surname; 王
+name ; locale; fr_AQ
+
+expectedResult; 王·雅.·婷.·婷.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; 王·雅婷·婷婷
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+
+expectedResult; 王雅.·婷.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; 雅.·婷.王
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; 王雅婷婷.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; 雅婷婷婷王
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; 王·雅婷
+
+parameters; sorting; medium; referring; formal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; 雅婷王.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; 王雅婷
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+
+expectedResult; 雅婷王
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; é›…å©·
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; 王
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; é›…
+
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; åšå£«
+name ; given; 怡å›
+name ; given-informal; å°å›
+name ; given2; é”å°
+name ; surname-prefix; 馮
+name ; surname-core; 陳
+name ; generation; 二世
+name ; credentials; 醫學åšå£«
+name ; locale; fr_AQ
+
+expectedResult; 馮·陳怡å›é”.·å°.二世,醫學åšå£«
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; 怡å›é”å°é¦®Â·é™³äºŒä¸–åšå£«ï¼Œé†«å­¸åšå£«
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+
+expectedResult; 馮·陳·怡å›Â·é”å°Â·äºŒä¸–醫學åšå£«
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; 馮·陳·怡.·å›.·é”.·å°.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; 馮·陳·怡å›Â·é”å°
+
+parameters; sorting; long; referring; formal
+
+expectedResult; 怡.·å›.馮·陳
+
+parameters; givenFirst; short; referring; formal
+
+expectedResult; 馮·陳怡.·å›.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; å°å›é¦®.·陳.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; 馮·陳·åšå£«
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; 馮·陳·å°å›
+
+parameters; sorting; short; referring; informal
+
+expectedResult; 馮·陳·怡å›
+
+parameters; sorting; medium; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; å°å›é¦®Â·é™³
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; 馮·陳åšå£«
+
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; 馮·陳å°å›
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+
+expectedResult; 怡é”馮
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; 馮怡é”
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; å°å›
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; å°
+
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; 馮
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/zh_Hant_HK.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/zh_Hant_HK.txt
new file mode 100644
index 00000000000..34596362e6d
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/zh_Hant_HK.txt
@@ -0,0 +1,712 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: zh_Hant_HK
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; 文傑
+name ; locale; zh_Hant_HK
+
+expectedResult; 文傑
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; æ–‡
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; é›…å©·
+name ; surname; å¼µ
+name ; locale; zh_Hant_HK
+
+expectedResult; 張雅.婷.
+
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; é›…å©·å¼µ.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; 張雅婷
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; é›…å©·å¼µ
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; short; referring; formal
+
+expectedResult; 張雅
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; é›…å©·
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; é›…å¼µ
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; å¼µ
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; é›…
+
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; 家豪
+name ; given2; 明德
+name ; surname; æž—
+name ; locale; zh_Hant_HK
+
+expectedResult; 林家.豪.明.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; 家豪明德林
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; short; referring; formal
+
+expectedResult; 林家.豪.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; 林家豪明.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; 林家豪明德
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+
+expectedResult; 家豪林.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; 家明林
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; 家豪林
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; 林家明
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; 林家豪
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; 家豪
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; 家
+
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; æž—
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# nativeFull
+name ; title; 先生
+name ; given; é›…å©·
+name ; given-informal; å©·å©·
+name ; given2; å©·å©·
+name ; surname-core; 王
+name ; generation; 二世
+name ; credentials; è­°å“¡
+name ; locale; zh_Hant_HK
+
+expectedResult; 先生雅婷婷婷王二世,議員
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; short; referring; formal
+
+expectedResult; 王雅婷婷.二世,議員
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; 王雅婷婷婷二世議員
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; 王雅.婷.婷.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; 王雅.婷.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; 王雅婷婷婷
+
+parameters; sorting; long; referring; formal
+
+expectedResult; 婷婷王.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; 婷婷王
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; 王先生
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; 王婷婷
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; 王雅婷
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; 雅婷王
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; å©·å©·
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; å©·
+
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; 王
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; é›…å©·
+name ; locale; fr_AQ
+
+expectedResult; é›…å©·
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; é›…
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; é›…å©·
+name ; surname; 王
+name ; locale; fr_AQ
+
+expectedResult; 王·雅.·婷.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; 王雅.·婷.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; 王·雅婷
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+parameters; sorting; medium; referring; formal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; 雅婷·王
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; short; referring; formal
+
+expectedResult; 雅婷王.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; 王雅婷
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+
+expectedResult; 雅婷王
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; 王雅
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; é›…å©·
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; 雅王
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; 王
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; é›…
+
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGGS
+name ; given; é›…å©·
+name ; given2; å©·å©·
+name ; surname; 王
+name ; locale; fr_AQ
+
+expectedResult; 王·雅.·婷.·婷.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; 王·雅婷·婷婷
+
+parameters; surnameFirst; long; referring; formal
+parameters; sorting; long; referring; formal
+
+expectedResult; 雅婷·婷婷·王
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; short; referring; formal
+
+expectedResult; 王雅.·婷.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; 王雅婷婷.
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; 王·雅婷
+
+parameters; sorting; medium; referring; formal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; 雅婷王.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; 王雅婷
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+
+expectedResult; 雅婷王
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; é›…å©·
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; 王
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; é›…
+
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; åšå£«
+name ; given; 怡å›
+name ; given-informal; å°å›
+name ; given2; é”å°
+name ; surname-prefix; 馮
+name ; surname-core; 陳
+name ; generation; 二世
+name ; credentials; 醫學åšå£«
+name ; locale; fr_AQ
+
+expectedResult; åšå£«Â·æ€¡å›Â·é”å°Â·é¦®Â·é™³Â·äºŒä¸–,·醫學åšå£«
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; short; referring; formal
+
+expectedResult; 馮·陳怡å›é”.·å°.二世,醫學åšå£«
+
+parameters; surnameFirst; medium; referring; formal
+
+expectedResult; 馮·陳·怡å›Â·é”å°Â·äºŒä¸–醫學åšå£«
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; 馮·陳·怡.·å›.·é”.·å°.
+
+parameters; surnameFirst; short; referring; formal
+
+expectedResult; 馮·陳·怡å›Â·é”å°
+
+parameters; sorting; long; referring; formal
+
+expectedResult; 馮·陳怡.·å›.
+
+parameters; surnameFirst; short; referring; informal
+
+expectedResult; å°å›é¦®.·陳.
+
+parameters; givenFirst; short; referring; informal
+
+expectedResult; 馮·陳·åšå£«
+
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; short; addressing; formal
+
+expectedResult; 馮·陳·å°å›
+
+parameters; sorting; short; referring; informal
+
+expectedResult; 馮·陳·怡å›
+
+parameters; sorting; medium; referring; formal
+parameters; sorting; short; referring; formal
+
+expectedResult; å°å›é¦®Â·é™³
+
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; medium; referring; informal
+
+expectedResult; 馮·陳åšå£«
+
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; short; addressing; formal
+
+expectedResult; 馮·陳å°å›
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; medium; referring; informal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+
+expectedResult; 怡é”馮
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+
+expectedResult; 馮怡é”
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+
+expectedResult; å°å›
+
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; å°
+
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; 馮
+
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/zu.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/zu.txt
new file mode 100644
index 00000000000..e9c2b0db57a
--- /dev/null
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/personNameTest/zu.txt
@@ -0,0 +1,635 @@
+# Test data for unit conversions
+# Copyright © 1991-2023 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/copyright.html
+# SPDX-License-Identifier: Unicode-DFS-2016
+# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+#
+# CLDR person name formatting test data for: zu
+#
+# Test lines have the following structure:
+#
+# enum ; <type> ; <value>(', ' <value)
+# For all the elements in <…> below, the possible choices that could appear in the file.
+# For example, <field> could be any of title, given, … credentials.
+# Verify that all of these values work with the implementation.
+#
+# name ; <field>('-'<modifier>) ; <value>
+# A sequence of these is to be used to build a person name object with the given field values.
+# If the <field> is 'locale', then the value is the locale of the name.
+# That will always be the last field in the name.
+# NOTE: the locale for the name (where different than the test file's locale) will generally not match the text.
+# It is chosen to exercise the person name formatting, by having a different given-surname order than the file's locale.
+#
+# expectedResult; <value>
+# This line follows a sequence of name lines, and indicates the that all the following parameter lines have this expected value.
+#
+# parameters; <options>; <length>; <usage>; <formality>
+# Each of these parameter lines should be tested to see that when formatting the current name with these parameters,
+# the expected value is produced.
+#
+# endName
+# Indicates the end of the values to be tested with the current name.
+#
+# =====
+# Example:
+# enum ; field ; title, given, given2, surname, surname2, generation, credentials
+# …
+#
+# name ; given; Iris
+# name ; surname; Falke
+# name ; locale; de
+#
+# expectedResult; Falke, Iris
+#
+# parameters; sorting; long; referring; formal
+# parameters; sorting; medium; referring; informal
+#
+# endName
+#
+# name ; given; Max
+# name ; given2; Ben
+# name ; surname; Mustermann
+# …
+# =====
+
+enum ; field ; title, given, given2, surname, surname2, generation, credentials
+enum ; modifiers ; informal, allCaps, initialCap, initial, retain, monogram, prefix, core, vocative, genitive
+enum ; order ; givenFirst, surnameFirst, sorting
+enum ; length ; long, medium, short
+enum ; usage ; referring, addressing, monogram
+enum ; formality ; formal, informal
+
+# nativeG
+name ; given; Sinbad
+name ; locale; zu_AQ
+
+expectedResult; Sinbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGS
+name ; given; u-Irene
+name ; surname; u-Adier
+name ; locale; zu_AQ
+
+expectedResult; u-Adier, u-Irene
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; u-Adier u-Irene
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; short; referring; formal
+
+expectedResult; u-Irene u-Adier
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; UU
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; U
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeGGS
+name ; given; u-John
+name ; given2; u-Hamish
+name ; surname; u-Watson
+name ; locale; zu_AQ
+
+expectedResult; u-Watson, u-John u-Hamish
+
+parameters; sorting; long; referring; formal
+
+expectedResult; u-John u-Hamish u-Watson
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; u-Watson u-John u-Hamish
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; short; referring; formal
+
+expectedResult; u-Watson, u-John u. H.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; u-Watson, u-John
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; UUU
+
+parameters; givenFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; UU
+
+parameters; givenFirst; long; monogram; informal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; U
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# nativeFull
+name ; title; Mr.
+name ; given; Bertram Wilberforce
+name ; given-informal; Bertie
+name ; given2; Henry Robert
+name ; surname-core; Wooster
+name ; generation; Jr
+name ; credentials; MP
+name ; locale; zu_AQ
+
+expectedResult; Wooster Mr. Bertram Wilberforce Henry Robert Jr, MP
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; Mr. Bertram Wilberforce Henry Robert Wooster MP
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; Wooster Mr. Bertram Wilberforce Henry Robert MP
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; short; referring; formal
+
+expectedResult; Wooster, Bertram Wilberforce Henry Robert
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Wooster, Bertram Wilberforce H. R.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Wooster, Bertie
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; BHW
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; WBH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; BW
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; WB
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; B
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; W
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignG
+name ; given; Sinbad
+name ; locale; ko_AQ
+
+expectedResult; Sinbad
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; formal
+parameters; sorting; short; referring; informal
+
+expectedResult; S
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignGS
+name ; given; Käthe
+name ; surname; Müller
+name ; locale; ko_AQ
+
+expectedResult; Müller, Käthe
+
+parameters; sorting; long; referring; formal
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; formal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; Käthe Müller
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; Müller Käthe
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; short; referring; formal
+
+expectedResult; KM
+
+parameters; givenFirst; long; monogram; formal
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; MK
+
+parameters; surnameFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; K
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+expectedResult; M
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+endName
+
+# foreignGGS
+name ; given; Zäzilia
+name ; given2; Hamish
+name ; surname; Stöber
+name ; locale; ko_AQ
+
+expectedResult; Stöber, Zäzilia Hamish
+
+parameters; sorting; long; referring; formal
+
+expectedResult; Stöber Zäzilia Hamish
+
+parameters; surnameFirst; long; referring; formal
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+parameters; sorting; short; referring; formal
+
+expectedResult; Zäzilia Hamish Stöber
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; Stöber, Zäzilia H.
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; Stöber, Zäzilia
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; SZH
+
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; ZHS
+
+parameters; givenFirst; long; monogram; formal
+
+expectedResult; SZ
+
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; ZS
+
+parameters; givenFirst; long; monogram; informal
+
+expectedResult; S
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; short; monogram; formal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; short; monogram; formal
+
+expectedResult; Z
+
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; informal
+
+endName
+
+# foreignFull
+name ; title; u-Prof. Dr.
+name ; given; u-Ada Cornelia
+name ; given-informal; u-Neele
+name ; given2; u-Eva Sophia
+name ; surname-prefix; u-van den
+name ; surname-core; u-Wold
+name ; surname2; u-Becker Schmidt
+name ; generation; isizukulwane
+name ; credentials; M.D. Ph.D.
+name ; locale; ko_AQ
+
+expectedResult; u-van den u-Wold u-Becker Schmidt, u-Prof. Dr. u-Ada Cornelia u-Eva Sophia M.D. Ph.D.
+
+parameters; sorting; short; referring; formal
+
+expectedResult; u-Prof. Dr. u-Ada Cornelia u-Eva Sophia u-van den u-Wold u-Becker Schmidt M.D. Ph.D.
+
+parameters; givenFirst; long; referring; formal
+parameters; givenFirst; long; referring; informal
+parameters; givenFirst; long; addressing; formal
+parameters; givenFirst; long; addressing; informal
+parameters; givenFirst; medium; referring; formal
+parameters; givenFirst; medium; referring; informal
+parameters; givenFirst; medium; addressing; formal
+parameters; givenFirst; medium; addressing; informal
+parameters; givenFirst; short; referring; formal
+parameters; givenFirst; short; referring; informal
+parameters; givenFirst; short; addressing; formal
+parameters; givenFirst; short; addressing; informal
+
+expectedResult; u-van den u-Wold u-Becker Schmidt u-Prof. Dr. u-Ada Cornelia u-Eva Sophia M.D. Ph.D.
+
+parameters; surnameFirst; long; referring; informal
+parameters; surnameFirst; long; addressing; formal
+parameters; surnameFirst; long; addressing; informal
+parameters; surnameFirst; medium; referring; formal
+parameters; surnameFirst; medium; referring; informal
+parameters; surnameFirst; medium; addressing; formal
+parameters; surnameFirst; medium; addressing; informal
+parameters; surnameFirst; short; referring; formal
+parameters; surnameFirst; short; referring; informal
+parameters; surnameFirst; short; addressing; formal
+parameters; surnameFirst; short; addressing; informal
+
+expectedResult; u-van den u-Wold u-Prof. Dr. u-Ada Cornelia u-Eva Sophia isizukulwane, M.D. Ph.D.
+
+parameters; surnameFirst; long; referring; formal
+
+expectedResult; u-Wold, u-Ada Cornelia u-Eva Sophia u-van den
+
+parameters; sorting; long; referring; formal
+
+expectedResult; u-Wold, u-Ada Cornelia u. E. S. u-van den
+
+parameters; sorting; medium; referring; formal
+
+expectedResult; u-van den u-Wold, u-Neele
+
+parameters; sorting; long; referring; informal
+parameters; sorting; medium; referring; informal
+parameters; sorting; short; referring; informal
+
+expectedResult; UUU
+
+parameters; givenFirst; long; monogram; formal
+parameters; surnameFirst; long; monogram; formal
+
+expectedResult; UU
+
+parameters; givenFirst; long; monogram; informal
+parameters; surnameFirst; long; monogram; informal
+
+expectedResult; U
+
+parameters; givenFirst; medium; monogram; formal
+parameters; givenFirst; medium; monogram; informal
+parameters; givenFirst; short; monogram; formal
+parameters; givenFirst; short; monogram; informal
+parameters; surnameFirst; medium; monogram; formal
+parameters; surnameFirst; medium; monogram; informal
+parameters; surnameFirst; short; monogram; formal
+parameters; surnameFirst; short; monogram; informal
+
+endName
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/units/unitPreferencesTest.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/units/unitPreferencesTest.txt
index 7df25542923..61abdcafd12 100644
--- a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/units/unitPreferencesTest.txt
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/units/unitPreferencesTest.txt
@@ -1,7 +1,8 @@
+
# Test data for unit preferences
-# Copyright © 1991-2021 Unicode, Inc.
+# Copyright © 1991-2023 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# SPDX-License-Identifier: Unicode-DFS-2016
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
#
# Format:
@@ -15,297 +16,297 @@
# The Output amount and Unit are repeated for mixed units. In such a case, only the smallest unit will have
# both a rational and decimal amount; the others will have a single integer value, such as:
# length; person-height; CA; 3429 / 12500; 0.27432; meter; 2; foot; 54 / 5; 10.8; inch
-# The input and output units are unit identifiers; in particular, the output does not have further processing:
+# The input and output units are unit identifers; in particular, the output does not have further processing:
# • no localization
# • no adjustment for pluralization
# • no formatted with the skeleton
# • no suppression of zero values (for secondary -and- units such as pound in stone-and-pound)
#
-# Generation: Set GENERATE_TESTS in TestUnits.java, and look at TestUnitPreferences results.
+# Generation: Set GENERATE_TESTS in TestUnits.java to regenerate unitPreferencesTest.txt.
-area; default; 001; 1100000; 1100000.0; square-meter; 11 / 10; 1.1; square-kilometer
+area; default; 001; 1100000; 1100000.0; square-meter; 11/10; 1.1; square-kilometer
area; default; 001; 1000000; 1000000.0; square-meter; 1; 1.0; square-kilometer
area; default; 001; 900000; 900000.0; square-meter; 90; 90.0; hectare
area; default; 001; 10000; 10000.0; square-meter; 1; 1.0; hectare
area; default; 001; 9000; 9000.0; square-meter; 9000; 9000.0; square-meter
area; default; 001; 1; 1.0; square-meter; 1; 1.0; square-meter
-area; default; 001; 9 / 10; 0.9; square-meter; 9000; 9000.0; square-centimeter
-area; default; 001; 1 / 10000; 1.0E-4; square-meter; 1; 1.0; square-centimeter
-area; default; 001; 9 / 100000; 9.0E-5; square-meter; 9 / 10; 0.9; square-centimeter
-
-area; default; GB; 222577103232 / 78125; 2848986.9213696; square-meter; 11 / 10; 1.1; square-mile
-area; default; GB; 40468564224 / 15625; 2589988.110336; square-meter; 1; 1.0; square-mile
-area; default; GB; 182108539008 / 78125; 2330989.2993024; square-meter; 576; 576.0; acre
-area; default; GB; 316160658 / 78125; 4046.8564224; square-meter; 1; 1.0; acre
-area; default; GB; 1422722961 / 390625; 3642.17078016; square-meter; 39204; 39204.0; square-foot
-area; default; GB; 145161 / 1562500; 0.09290304; square-meter; 1; 1.0; square-foot
-area; default; GB; 1306449 / 15625000; 0.083612736; square-meter; 648 / 5; 129.6; square-inch
-area; default; GB; 16129 / 25000000; 6.4516E-4; square-meter; 1; 1.0; square-inch
-area; default; GB; 145161 / 250000000; 5.80644E-4; square-meter; 9 / 10; 0.9; square-inch
-
-area; geograph; 001; 1100000; 1100000.0; square-meter; 11 / 10; 1.1; square-kilometer
+area; default; 001; 9/10; 0.9; square-meter; 9000; 9000.0; square-centimeter
+area; default; 001; 1/10000; 1.0E-4; square-meter; 1; 1.0; square-centimeter
+area; default; 001; 9/100000; 9.0E-5; square-meter; 9/10; 0.9; square-centimeter
+
+area; default; GB; 222577103232/78125; 2848986.9213696; square-meter; 11/10; 1.1; square-mile
+area; default; GB; 40468564224/15625; 2589988.110336; square-meter; 1; 1.0; square-mile
+area; default; GB; 182108539008/78125; 2330989.2993024; square-meter; 576; 576.0; acre
+area; default; GB; 316160658/78125; 4046.8564224; square-meter; 1; 1.0; acre
+area; default; GB; 1422722961/390625; 3642.17078016; square-meter; 39204; 39204.0; square-foot
+area; default; GB; 145161/1562500; 0.09290304; square-meter; 1; 1.0; square-foot
+area; default; GB; 1306449/15625000; 0.083612736; square-meter; 648/5; 129.6; square-inch
+area; default; GB; 16129/25000000; 6.4516E-4; square-meter; 1; 1.0; square-inch
+area; default; GB; 145161/250000000; 5.80644E-4; square-meter; 9/10; 0.9; square-inch
+
+area; floor; 001; 11/10; 1.1; square-meter; 11/10; 1.1; square-meter
+area; floor; 001; 1; 1.0; square-meter; 1; 1.0; square-meter
+area; floor; 001; 9/10; 0.9; square-meter; 9/10; 0.9; square-meter
+
+area; floor; CA; 1596771/15625000; 0.102193344; square-meter; 11/10; 1.1; square-foot
+area; floor; CA; 145161/1562500; 0.09290304; square-meter; 1; 1.0; square-foot
+area; floor; CA; 1306449/15625000; 0.083612736; square-meter; 9/10; 0.9; square-foot
+
+area; geograph; 001; 1100000; 1100000.0; square-meter; 11/10; 1.1; square-kilometer
area; geograph; 001; 1000000; 1000000.0; square-meter; 1; 1.0; square-kilometer
-area; geograph; 001; 900000; 900000.0; square-meter; 9 / 10; 0.9; square-kilometer
+area; geograph; 001; 900000; 900000.0; square-meter; 9/10; 0.9; square-kilometer
-area; geograph; GB; 222577103232 / 78125; 2848986.9213696; square-meter; 11 / 10; 1.1; square-mile
-area; geograph; GB; 40468564224 / 15625; 2589988.110336; square-meter; 1; 1.0; square-mile
-area; geograph; GB; 182108539008 / 78125; 2330989.2993024; square-meter; 9 / 10; 0.9; square-mile
+area; geograph; GB; 222577103232/78125; 2848986.9213696; square-meter; 11/10; 1.1; square-mile
+area; geograph; GB; 40468564224/15625; 2589988.110336; square-meter; 1; 1.0; square-mile
+area; geograph; GB; 182108539008/78125; 2330989.2993024; square-meter; 9/10; 0.9; square-mile
-area; land; 001; 11000; 11000.0; square-meter; 11 / 10; 1.1; hectare
+area; land; 001; 11000; 11000.0; square-meter; 11/10; 1.1; hectare
area; land; 001; 10000; 10000.0; square-meter; 1; 1.0; hectare
-area; land; 001; 9000; 9000.0; square-meter; 9 / 10; 0.9; hectare
+area; land; 001; 9000; 9000.0; square-meter; 9/10; 0.9; hectare
-area; land; GB; 1738883619 / 390625; 4451.54206464; square-meter; 11 / 10; 1.1; acre
-area; land; GB; 316160658 / 78125; 4046.8564224; square-meter; 1; 1.0; acre
-area; land; GB; 1422722961 / 390625; 3642.17078016; square-meter; 9 / 10; 0.9; acre
+area; land; GB; 1738883619/390625; 4451.54206464; square-meter; 11/10; 1.1; acre
+area; land; GB; 316160658/78125; 4046.8564224; square-meter; 1; 1.0; acre
+area; land; GB; 1422722961/390625; 3642.17078016; square-meter; 9/10; 0.9; acre
-concentration; blood-glucose; AG; 662435483600000000000000; 6.624354836E23; item-per-cubic-meter; 11 / 10; 1.1; millimole-per-liter
+concentration; blood-glucose; AG; 662435483600000000000000; 6.624354836E23; item-per-cubic-meter; 11/10; 1.1; millimole-per-liter
concentration; blood-glucose; AG; 602214076000000000000000; 6.02214076E23; item-per-cubic-meter; 1; 1.0; millimole-per-liter
-concentration; blood-glucose; AG; 541992668400000000000000; 5.419926684E23; item-per-cubic-meter; 9 / 10; 0.9; millimole-per-liter
+concentration; blood-glucose; AG; 541992668400000000000000; 5.419926684E23; item-per-cubic-meter; 9/10; 0.9; millimole-per-liter
-concentration; blood-glucose; 001; 66243548360000000000000000000 / 1801557; 3.67701651182838E22; item-per-cubic-meter; 11 / 10; 1.1; milligram-ofglucose-per-deciliter
-concentration; blood-glucose; 001; 60221407600000000000000000000 / 1801557; 3.342742283480345E22; item-per-cubic-meter; 1; 1.0; milligram-ofglucose-per-deciliter
-concentration; blood-glucose; 001; 6022140760000000000000000000 / 200173; 3.008468055132311E22; item-per-cubic-meter; 9 / 10; 0.9; milligram-ofglucose-per-deciliter
+concentration; blood-glucose; 001; 66243548360000000000000000000/1801557; 3.67701651182838E22; item-per-cubic-meter; 11/10; 1.1; milligram-ofglucose-per-deciliter
+concentration; blood-glucose; 001; 60221407600000000000000000000/1801557; 3.342742283480345E22; item-per-cubic-meter; 1; 1.0; milligram-ofglucose-per-deciliter
+concentration; blood-glucose; 001; 6022140760000000000000000000/200173; 3.008468055132311E22; item-per-cubic-meter; 9/10; 0.9; milligram-ofglucose-per-deciliter
-concentration; default; 001; 11 / 10; 1.1; item-per-cubic-meter; 11 / 10; 1.1; item-per-cubic-meter
+concentration; default; 001; 11/10; 1.1; item-per-cubic-meter; 11/10; 1.1; item-per-cubic-meter
concentration; default; 001; 1; 1.0; item-per-cubic-meter; 1; 1.0; item-per-cubic-meter
-concentration; default; 001; 9 / 10; 0.9; item-per-cubic-meter; 9 / 10; 0.9; item-per-cubic-meter
+concentration; default; 001; 9/10; 0.9; item-per-cubic-meter; 9/10; 0.9; item-per-cubic-meter
-consumption; default; 001; 11 / 1000000000; 1.1E-8; cubic-meter-per-meter; 11 / 10; 1.1; liter-per-100-kilometer
-consumption; default; 001; 1 / 100000000; 1.0E-8; cubic-meter-per-meter; 1; 1.0; liter-per-100-kilometer
-consumption; default; 001; 9 / 1000000000; 9.0E-9; cubic-meter-per-meter; 9 / 10; 0.9; liter-per-100-kilometer
+consumption; default; 001; 11/1000000000; 1.1E-8; cubic-meter-per-meter; 11/10; 1.1; liter-per-100-kilometer
+consumption; default; 001; 1/100000000; 1.0E-8; cubic-meter-per-meter; 1; 1.0; liter-per-100-kilometer
+consumption; default; 001; 9/1000000000; 9.0E-9; cubic-meter-per-meter; 9/10; 0.9; liter-per-100-kilometer
-consumption; vehicle-fuel; 001; 11 / 1000000000; 1.1E-8; cubic-meter-per-meter; 11 / 10; 1.1; liter-per-100-kilometer
-consumption; vehicle-fuel; 001; 1 / 100000000; 1.0E-8; cubic-meter-per-meter; 1; 1.0; liter-per-100-kilometer
-consumption; vehicle-fuel; 001; 9 / 1000000000; 9.0E-9; cubic-meter-per-meter; 9 / 10; 0.9; liter-per-100-kilometer
+consumption; vehicle-fuel; 001; 11/1000000000; 1.1E-8; cubic-meter-per-meter; 11/10; 1.1; liter-per-100-kilometer
+consumption; vehicle-fuel; 001; 1/100000000; 1.0E-8; cubic-meter-per-meter; 1; 1.0; liter-per-100-kilometer
+consumption; vehicle-fuel; 001; 9/1000000000; 9.0E-9; cubic-meter-per-meter; 9/10; 0.9; liter-per-100-kilometer
-consumption; vehicle-fuel; BR; 11 / 10000000; 1.1E-6; cubic-meter-per-meter; 11 / 10; 1.1; liter-per-kilometer
-consumption; vehicle-fuel; BR; 1 / 1000000; 1.0E-6; cubic-meter-per-meter; 1; 1.0; liter-per-kilometer
-consumption; vehicle-fuel; BR; 9 / 10000000; 9.0E-7; cubic-meter-per-meter; 9 / 10; 0.9; liter-per-kilometer
+consumption; vehicle-fuel; BR; 11/10000000; 1.1E-6; cubic-meter-per-meter; 11/10; 1.1; liter-per-kilometer
+consumption; vehicle-fuel; BR; 1/1000000; 1.0E-6; cubic-meter-per-meter; 1; 1.0; liter-per-kilometer
+consumption; vehicle-fuel; BR; 9/10000000; 9.0E-7; cubic-meter-per-meter; 9/10; 0.9; liter-per-kilometer
-consumption; vehicle-fuel; US; 112903 / 52800000000; 2.1383143939394E-6; cubic-meter-per-meter; 11 / 10; 1.1; mile-per-gallon
-consumption; vehicle-fuel; US; 112903 / 48000000000; 2.3521458333333E-6; cubic-meter-per-meter; 1; 1.0; mile-per-gallon
-consumption; vehicle-fuel; US; 112903 / 43200000000; 2.6134953703704E-6; cubic-meter-per-meter; 9 / 10; 0.9; mile-per-gallon
+consumption; vehicle-fuel; US; 112903/43200000000; 2.61349537037037E-6; cubic-meter-per-meter; 9/10; 0.9; mile-per-gallon
+consumption; vehicle-fuel; US; 112903/48000000000; 2.352145833333333E-6; cubic-meter-per-meter; 1; 1.0; mile-per-gallon
+consumption; vehicle-fuel; US; 112903/52800000000; 2.138314393939394E-6; cubic-meter-per-meter; 11/10; 1.1; mile-per-gallon
-consumption; vehicle-fuel; CA; 454609 / 177027840000; 2.5680085121075E-6; cubic-meter-per-meter; 11 / 10; 1.1; mile-per-gallon-imperial
-consumption; vehicle-fuel; CA; 454609 / 160934400000; 2.8248093633182E-6; cubic-meter-per-meter; 1; 1.0; mile-per-gallon-imperial
-consumption; vehicle-fuel; CA; 454609 / 144840960000; 3.1386770703536E-6; cubic-meter-per-meter; 9 / 10; 0.9; mile-per-gallon-imperial
+consumption; vehicle-fuel; CA; 454609/144840960000; 3.13867707035358E-6; cubic-meter-per-meter; 9/10; 0.9; mile-per-gallon-imperial
+consumption; vehicle-fuel; CA; 454609/160934400000; 2.824809363318222E-6; cubic-meter-per-meter; 1; 1.0; mile-per-gallon-imperial
+consumption; vehicle-fuel; CA; 454609/177027840000; 2.568008512107474E-6; cubic-meter-per-meter; 11/10; 1.1; mile-per-gallon-imperial
-duration; default; 001; 95040; 95040.0; second; 11 / 10; 1.1; day
+duration; default; 001; 95040; 95040.0; second; 11/10; 1.1; day
duration; default; 001; 86400; 86400.0; second; 1; 1.0; day
-duration; default; 001; 77760; 77760.0; second; 108 / 5; 21.6; hour
+duration; default; 001; 77760; 77760.0; second; 108/5; 21.6; hour
duration; default; 001; 3600; 3600.0; second; 1; 1.0; hour
duration; default; 001; 3240; 3240.0; second; 54; 54.0; minute
duration; default; 001; 60; 60.0; second; 1; 1.0; minute
duration; default; 001; 54; 54.0; second; 54; 54.0; second
duration; default; 001; 1; 1.0; second; 1; 1.0; second
-duration; default; 001; 9 / 10; 0.9; second; 900; 900.0; millisecond
-duration; default; 001; 1 / 1000; 0.001; second; 1; 1.0; millisecond
-duration; default; 001; 9 / 10000; 9.0E-4; second; 900; 900.0; microsecond
-duration; default; 001; 1 / 1000000; 1.0E-6; second; 1; 1.0; microsecond
-duration; default; 001; 9 / 10000000; 9.0E-7; second; 900; 900.0; nanosecond
-duration; default; 001; 1 / 1000000000; 1.0E-9; second; 1; 1.0; nanosecond
-duration; default; 001; 9 / 10000000000; 9.0E-10; second; 9 / 10; 0.9; nanosecond
+duration; default; 001; 9/10; 0.9; second; 900; 900.0; millisecond
+duration; default; 001; 1/1000; 0.001; second; 1; 1.0; millisecond
+duration; default; 001; 9/10000; 9.0E-4; second; 900; 900.0; microsecond
+duration; default; 001; 1/1000000; 1.0E-6; second; 1; 1.0; microsecond
+duration; default; 001; 9/10000000; 9.0E-7; second; 900; 900.0; nanosecond
+duration; default; 001; 1/1000000000; 1.0E-9; second; 1; 1.0; nanosecond
+duration; default; 001; 9/10000000000; 9.0E-10; second; 9/10; 0.9; nanosecond
duration; media; 001; 66; 66.0; second; 1; minute; 6; 6.0; second
duration; media; 001; 60; 60.0; second; 1; minute; 0; 0.0; second
duration; media; 001; 54; 54.0; second; 54; 54.0; second
duration; media; 001; 1; 1.0; second; 1; 1.0; second
-duration; media; 001; 9 / 10; 0.9; second; 9 / 10; 0.9; second
+duration; media; 001; 9/10; 0.9; second; 9/10; 0.9; second
-energy; default; 001; 3960000; 3960000.0; kilogram-square-meter-per-square-second; 11 / 10; 1.1; kilowatt-hour
+energy; default; 001; 3960000; 3960000.0; kilogram-square-meter-per-square-second; 11/10; 1.1; kilowatt-hour
energy; default; 001; 3600000; 3600000.0; kilogram-square-meter-per-square-second; 1; 1.0; kilowatt-hour
-energy; default; 001; 3240000; 3240000.0; kilogram-square-meter-per-square-second; 9 / 10; 0.9; kilowatt-hour
+energy; default; 001; 3240000; 3240000.0; kilogram-square-meter-per-square-second; 9/10; 0.9; kilowatt-hour
-energy; food; US; 23012 / 5; 4602.4; kilogram-square-meter-per-square-second; 11 / 10; 1.1; foodcalorie
+energy; food; US; 23012/5; 4602.4; kilogram-square-meter-per-square-second; 11/10; 1.1; foodcalorie
energy; food; US; 4184; 4184.0; kilogram-square-meter-per-square-second; 1; 1.0; foodcalorie
-energy; food; US; 18828 / 5; 3765.6; kilogram-square-meter-per-square-second; 9 / 10; 0.9; foodcalorie
+energy; food; US; 18828/5; 3765.6; kilogram-square-meter-per-square-second; 9/10; 0.9; foodcalorie
-energy; food; 001; 23012 / 5; 4602.4; kilogram-square-meter-per-square-second; 11 / 10; 1.1; kilocalorie
+energy; food; 001; 23012/5; 4602.4; kilogram-square-meter-per-square-second; 11/10; 1.1; kilocalorie
energy; food; 001; 4184; 4184.0; kilogram-square-meter-per-square-second; 1; 1.0; kilocalorie
-energy; food; 001; 18828 / 5; 3765.6; kilogram-square-meter-per-square-second; 9 / 10; 0.9; kilocalorie
+energy; food; 001; 18828/5; 3765.6; kilogram-square-meter-per-square-second; 9/10; 0.9; kilocalorie
-length; default; 001; 1100; 1100.0; meter; 11 / 10; 1.1; kilometer
+length; default; 001; 1100; 1100.0; meter; 11/10; 1.1; kilometer
length; default; 001; 1000; 1000.0; meter; 1; 1.0; kilometer
length; default; 001; 900; 900.0; meter; 900; 900.0; meter
length; default; 001; 1; 1.0; meter; 1; 1.0; meter
-length; default; 001; 9 / 10; 0.9; meter; 90; 90.0; centimeter
-length; default; 001; 1 / 100; 0.01; meter; 1; 1.0; centimeter
-length; default; 001; 9 / 1000; 0.009; meter; 9 / 10; 0.9; centimeter
-
-length; default; GB; 1106424 / 625; 1770.2784; meter; 11 / 10; 1.1; mile
-length; default; GB; 201168 / 125; 1609.344; meter; 1; 1.0; mile
-length; default; GB; 905256 / 625; 1448.4096; meter; 4752; 4752.0; foot
-length; default; GB; 381 / 1250; 0.3048; meter; 1; 1.0; foot
-length; default; GB; 3429 / 12500; 0.27432; meter; 54 / 5; 10.8; inch
-length; default; GB; 127 / 5000; 0.0254; meter; 1; 1.0; inch
-length; default; GB; 1143 / 50000; 0.02286; meter; 9 / 10; 0.9; inch
-
-length; focal-length; 001; 11 / 10000; 0.0011; meter; 11 / 10; 1.1; millimeter
-length; focal-length; 001; 1 / 1000; 0.001; meter; 1; 1.0; millimeter
-length; focal-length; 001; 9 / 10000; 9.0E-4; meter; 9 / 10; 0.9; millimeter
-
-length; person; 001; 11 / 1000; 0.011; meter; 11 / 10; 1.1; centimeter
-length; person; 001; 1 / 100; 0.01; meter; 1; 1.0; centimeter
-length; person; 001; 9 / 1000; 0.009; meter; 9 / 10; 0.9; centimeter
-
-length; person; CA; 1397 / 50000; 0.02794; meter; 11 / 10; 1.1; inch
-length; person; CA; 127 / 5000; 0.0254; meter; 1; 1.0; inch
-length; person; CA; 1143 / 50000; 0.02286; meter; 9 / 10; 0.9; inch
-
-length; person-height; 001; 11 / 1000; 0.011; meter; 11 / 10; 1.1; centimeter
-length; person-height; 001; 1 / 100; 0.01; meter; 1; 1.0; centimeter
-length; person-height; 001; 9 / 1000; 0.009; meter; 9 / 10; 0.9; centimeter
-
-length; person-height; CA; 11811 / 12500; 0.94488; meter; 3; foot; 6 / 5; 1.2; inch
-length; person-height; CA; 1143 / 1250; 0.9144; meter; 3; foot; 0; 0.0; inch
-length; person-height; CA; 11049 / 12500; 0.88392; meter; 174 / 5; 34.8; inch
-length; person-height; CA; 127 / 5000; 0.0254; meter; 1; 1.0; inch
-length; person-height; CA; 1143 / 50000; 0.02286; meter; 9 / 10; 0.9; inch
-
-length; person-height; AT; 11 / 10; 1.1; meter; 1; meter; 10; 10.0; centimeter
+length; default; 001; 9/10; 0.9; meter; 90; 90.0; centimeter
+length; default; 001; 1/100; 0.01; meter; 1; 1.0; centimeter
+length; default; 001; 9/1000; 0.009; meter; 9/10; 0.9; centimeter
+
+length; default; GB; 1106424/625; 1770.2784; meter; 11/10; 1.1; mile
+length; default; GB; 201168/125; 1609.344; meter; 1; 1.0; mile
+length; default; GB; 905256/625; 1448.4096; meter; 4752; 4752.0; foot
+length; default; GB; 381/1250; 0.3048; meter; 1; 1.0; foot
+length; default; GB; 3429/12500; 0.27432; meter; 54/5; 10.8; inch
+length; default; GB; 127/5000; 0.0254; meter; 1; 1.0; inch
+length; default; GB; 1143/50000; 0.02286; meter; 9/10; 0.9; inch
+
+length; focal-length; 001; 11/10000; 0.0011; meter; 11/10; 1.1; millimeter
+length; focal-length; 001; 1/1000; 0.001; meter; 1; 1.0; millimeter
+length; focal-length; 001; 9/10000; 9.0E-4; meter; 9/10; 0.9; millimeter
+
+length; person; 001; 11/1000; 0.011; meter; 11/10; 1.1; centimeter
+length; person; 001; 1/100; 0.01; meter; 1; 1.0; centimeter
+length; person; 001; 9/1000; 0.009; meter; 9/10; 0.9; centimeter
+
+length; person; CA; 1397/50000; 0.02794; meter; 11/10; 1.1; inch
+length; person; CA; 127/5000; 0.0254; meter; 1; 1.0; inch
+length; person; CA; 1143/50000; 0.02286; meter; 9/10; 0.9; inch
+
+length; person-height; 001; 11/1000; 0.011; meter; 11/10; 1.1; centimeter
+length; person-height; 001; 1/100; 0.01; meter; 1; 1.0; centimeter
+length; person-height; 001; 9/1000; 0.009; meter; 9/10; 0.9; centimeter
+
+length; person-height; CA; 11811/12500; 0.94488; meter; 3; foot; 6/5; 1.2; inch
+length; person-height; CA; 1143/1250; 0.9144; meter; 3; foot; 0; 0.0; inch
+length; person-height; CA; 11049/12500; 0.88392; meter; 174/5; 34.8; inch
+length; person-height; CA; 127/5000; 0.0254; meter; 1; 1.0; inch
+length; person-height; CA; 1143/50000; 0.02286; meter; 9/10; 0.9; inch
+
+length; person-height; AT; 11/10; 1.1; meter; 1; meter; 10; 10.0; centimeter
length; person-height; AT; 1; 1.0; meter; 1; meter; 0; 0.0; centimeter
-length; person-height; AT; 9 / 10; 0.9; meter; 0; meter; 90; 90.0; centimeter
+length; person-height; AT; 9/10; 0.9; meter; 0; meter; 90; 90.0; centimeter
-length; rainfall; BR; 11 / 1000; 0.011; meter; 11 / 10; 1.1; centimeter
-length; rainfall; BR; 1 / 100; 0.01; meter; 1; 1.0; centimeter
-length; rainfall; BR; 9 / 1000; 0.009; meter; 9 / 10; 0.9; centimeter
+length; rainfall; BR; 11/1000; 0.011; meter; 11/10; 1.1; centimeter
+length; rainfall; BR; 1/100; 0.01; meter; 1; 1.0; centimeter
+length; rainfall; BR; 9/1000; 0.009; meter; 9/10; 0.9; centimeter
-length; rainfall; US; 1397 / 50000; 0.02794; meter; 11 / 10; 1.1; inch
-length; rainfall; US; 127 / 5000; 0.0254; meter; 1; 1.0; inch
-length; rainfall; US; 1143 / 50000; 0.02286; meter; 9 / 10; 0.9; inch
+length; rainfall; US; 1397/50000; 0.02794; meter; 11/10; 1.1; inch
+length; rainfall; US; 127/5000; 0.0254; meter; 1; 1.0; inch
+length; rainfall; US; 1143/50000; 0.02286; meter; 9/10; 0.9; inch
-length; rainfall; 001; 11 / 10000; 0.0011; meter; 11 / 10; 1.1; millimeter
-length; rainfall; 001; 1 / 1000; 0.001; meter; 1; 1.0; millimeter
-length; rainfall; 001; 9 / 10000; 9.0E-4; meter; 9 / 10; 0.9; millimeter
+length; rainfall; 001; 11/10000; 0.0011; meter; 11/10; 1.1; millimeter
+length; rainfall; 001; 1/1000; 0.001; meter; 1; 1.0; millimeter
+length; rainfall; 001; 9/10000; 9.0E-4; meter; 9/10; 0.9; millimeter
length; road; 001; 1000; 1000.0; meter; 1; 1.0; kilometer
-length; road; 001; 900; 900.0; meter; 9 / 10; 0.9; kilometer
+length; road; 001; 900; 900.0; meter; 9/10; 0.9; kilometer
length; road; 001; 800; 800.0; meter; 800; 800.0; meter
length; road; 001; 300; 300.0; meter; 300; 300.0; meter
-length; road; 001; 2999 / 10; 299.9; meter; 2999 / 10; 299.9; meter
+length; road; 001; 2999/10; 299.9; meter; 2999/10; 299.9; meter
length; road; 001; 10; 10.0; meter; 10; 10.0; meter
-length; road; 001; 99 / 10; 9.9; meter; 99 / 10; 9.9; meter
+length; road; 001; 99/10; 9.9; meter; 99/10; 9.9; meter
length; road; 001; 1; 1.0; meter; 1; 1.0; meter
-length; road; 001; 9 / 10; 0.9; meter; 9 / 10; 0.9; meter
-
-length; road; US; 603504 / 625; 965.6064; meter; 3 / 5; 0.6; mile
-length; road; US; 100584 / 125; 804.672; meter; 1 / 2; 0.5; mile
-length; road; US; 402336 / 625; 643.7376; meter; 2112; 2112.0; foot
-length; road; US; 762 / 25; 30.48; meter; 100; 100.0; foot
-length; road; US; 380619 / 12500; 30.44952; meter; 999 / 10; 99.9; foot
-length; road; US; 381 / 125; 3.048; meter; 10; 10.0; foot
-length; road; US; 37719 / 12500; 3.01752; meter; 99 / 10; 9.9; foot
-length; road; US; 381 / 1250; 0.3048; meter; 1; 1.0; foot
-length; road; US; 3429 / 12500; 0.27432; meter; 9 / 10; 0.9; foot
-
-length; road; GB; 603504 / 625; 965.6064; meter; 3 / 5; 0.6; mile
-length; road; GB; 100584 / 125; 804.672; meter; 1 / 2; 0.5; mile
-length; road; GB; 402336 / 625; 643.7376; meter; 704; 704.0; yard
-length; road; GB; 2286 / 25; 91.44; meter; 100; 100.0; yard
-length; road; GB; 1141857 / 12500; 91.34856; meter; 999 / 10; 99.9; yard
-length; road; GB; 1143 / 125; 9.144; meter; 10; 10.0; yard
-length; road; GB; 113157 / 12500; 9.05256; meter; 99 / 10; 9.9; yard
-length; road; GB; 1143 / 1250; 0.9144; meter; 1; 1.0; yard
-length; road; GB; 10287 / 12500; 0.82296; meter; 9 / 10; 0.9; yard
-
-length; road; SE; 11000; 11000.0; meter; 11 / 10; 1.1; mile-scandinavian
+length; road; 001; 9/10; 0.9; meter; 9/10; 0.9; meter
+
+length; road; US; 603504/625; 965.6064; meter; 3/5; 0.6; mile
+length; road; US; 100584/125; 804.672; meter; 1/2; 0.5; mile
+length; road; US; 402336/625; 643.7376; meter; 2112; 2112.0; foot
+length; road; US; 762/25; 30.48; meter; 100; 100.0; foot
+length; road; US; 380619/12500; 30.44952; meter; 999/10; 99.9; foot
+length; road; US; 381/125; 3.048; meter; 10; 10.0; foot
+length; road; US; 37719/12500; 3.01752; meter; 99/10; 9.9; foot
+length; road; US; 381/1250; 0.3048; meter; 1; 1.0; foot
+length; road; US; 3429/12500; 0.27432; meter; 9/10; 0.9; foot
+
+length; road; GB; 603504/625; 965.6064; meter; 3/5; 0.6; mile
+length; road; GB; 100584/125; 804.672; meter; 1/2; 0.5; mile
+length; road; GB; 402336/625; 643.7376; meter; 704; 704.0; yard
+length; road; GB; 2286/25; 91.44; meter; 100; 100.0; yard
+length; road; GB; 1141857/12500; 91.34856; meter; 999/10; 99.9; yard
+length; road; GB; 1143/125; 9.144; meter; 10; 10.0; yard
+length; road; GB; 113157/12500; 9.05256; meter; 99/10; 9.9; yard
+length; road; GB; 1143/1250; 0.9144; meter; 1; 1.0; yard
+length; road; GB; 10287/12500; 0.82296; meter; 9/10; 0.9; yard
+
+length; road; SE; 11000; 11000.0; meter; 11/10; 1.1; mile-scandinavian
length; road; SE; 10000; 10000.0; meter; 1; 1.0; mile-scandinavian
length; road; SE; 9000; 9000.0; meter; 9; 9.0; kilometer
length; road; SE; 1000; 1000.0; meter; 1; 1.0; kilometer
length; road; SE; 900; 900.0; meter; 900; 900.0; meter
length; road; SE; 300; 300.0; meter; 300; 300.0; meter
-length; road; SE; 2999 / 10; 299.9; meter; 2999 / 10; 299.9; meter
+length; road; SE; 2999/10; 299.9; meter; 2999/10; 299.9; meter
length; road; SE; 10; 10.0; meter; 10; 10.0; meter
-length; road; SE; 99 / 10; 9.9; meter; 99 / 10; 9.9; meter
+length; road; SE; 99/10; 9.9; meter; 99/10; 9.9; meter
length; road; SE; 1; 1.0; meter; 1; 1.0; meter
-length; road; SE; 9 / 10; 0.9; meter; 9 / 10; 0.9; meter
+length; road; SE; 9/10; 0.9; meter; 9/10; 0.9; meter
-length; snowfall; 001; 11 / 1000; 0.011; meter; 11 / 10; 1.1; centimeter
-length; snowfall; 001; 1 / 100; 0.01; meter; 1; 1.0; centimeter
-length; snowfall; 001; 9 / 1000; 0.009; meter; 9 / 10; 0.9; centimeter
+length; snowfall; 001; 11/1000; 0.011; meter; 11/10; 1.1; centimeter
+length; snowfall; 001; 1/100; 0.01; meter; 1; 1.0; centimeter
+length; snowfall; 001; 9/1000; 0.009; meter; 9/10; 0.9; centimeter
-length; snowfall; US; 1397 / 50000; 0.02794; meter; 11 / 10; 1.1; inch
-length; snowfall; US; 127 / 5000; 0.0254; meter; 1; 1.0; inch
-length; snowfall; US; 1143 / 50000; 0.02286; meter; 9 / 10; 0.9; inch
+length; snowfall; US; 1397/50000; 0.02794; meter; 11/10; 1.1; inch
+length; snowfall; US; 127/5000; 0.0254; meter; 1; 1.0; inch
+length; snowfall; US; 1143/50000; 0.02286; meter; 9/10; 0.9; inch
-length; vehicle; GB; 4191 / 12500; 0.33528; meter; 1; foot; 6 / 5; 1.2; inch
-length; vehicle; GB; 381 / 1250; 0.3048; meter; 1; foot; 0; 0.0; inch
-length; vehicle; GB; 3429 / 12500; 0.27432; meter; 0; foot; 54 / 5; 10.8; inch
+length; vehicle; GB; 4191/12500; 0.33528; meter; 1; foot; 6/5; 1.2; inch
+length; vehicle; GB; 381/1250; 0.3048; meter; 1; foot; 0; 0.0; inch
+length; vehicle; GB; 3429/12500; 0.27432; meter; 0; foot; 54/5; 10.8; inch
-length; vehicle; 001; 11 / 10; 1.1; meter; 11 / 10; 1.1; meter
+length; vehicle; 001; 11/10; 1.1; meter; 11/10; 1.1; meter
length; vehicle; 001; 1; 1.0; meter; 1; 1.0; meter
-length; vehicle; 001; 9 / 10; 0.9; meter; 9 / 10; 0.9; meter
-
-length; vehicle; MX; 11 / 10; 1.1; meter; 11 / 10; 1.1; meter
-length; vehicle; MX; 1; 1.0; meter; 1; 1.0; meter
-length; vehicle; MX; 9 / 10; 0.9; meter; 9 / 10; 0.9; meter
+length; vehicle; 001; 9/10; 0.9; meter; 9/10; 0.9; meter
-length; visiblty; 001; 200; 200.0; meter; 1 / 5; 0.2; kilometer
-length; visiblty; 001; 100; 100.0; meter; 1 / 10; 0.1; kilometer
+length; visiblty; 001; 200; 200.0; meter; 1/5; 0.2; kilometer
+length; visiblty; 001; 100; 100.0; meter; 1/10; 0.1; kilometer
length; visiblty; 001; 1; 1.0; meter; 1; 1.0; meter
-length; visiblty; 001; 9 / 10; 0.9; meter; 9 / 10; 0.9; meter
+length; visiblty; 001; 9/10; 0.9; meter; 9/10; 0.9; meter
length; visiblty; 001; 0; 0.0; meter; 0; 0.0; meter
-length; visiblty; DE; 11 / 10; 1.1; meter; 11 / 10; 1.1; meter
+length; visiblty; DE; 11/10; 1.1; meter; 11/10; 1.1; meter
length; visiblty; DE; 1; 1.0; meter; 1; 1.0; meter
-length; visiblty; DE; 9 / 10; 0.9; meter; 9 / 10; 0.9; meter
+length; visiblty; DE; 9/10; 0.9; meter; 9/10; 0.9; meter
-length; visiblty; GB; 1106424 / 625; 1770.2784; meter; 11 / 10; 1.1; mile
-length; visiblty; GB; 201168 / 125; 1609.344; meter; 1; 1.0; mile
-length; visiblty; GB; 905256 / 625; 1448.4096; meter; 4752; 4752.0; foot
-length; visiblty; GB; 381 / 1250; 0.3048; meter; 1; 1.0; foot
-length; visiblty; GB; 3429 / 12500; 0.27432; meter; 9 / 10; 0.9; foot
+length; visiblty; GB; 1106424/625; 1770.2784; meter; 11/10; 1.1; mile
+length; visiblty; GB; 201168/125; 1609.344; meter; 1; 1.0; mile
+length; visiblty; GB; 905256/625; 1448.4096; meter; 4752; 4752.0; foot
+length; visiblty; GB; 381/1250; 0.3048; meter; 1; 1.0; foot
+length; visiblty; GB; 3429/12500; 0.27432; meter; 9/10; 0.9; foot
-mass; default; 001; 1100; 1100.0; kilogram; 11 / 10; 1.1; tonne
+mass; default; 001; 1100; 1100.0; kilogram; 11/10; 1.1; tonne
mass; default; 001; 1000; 1000.0; kilogram; 1; 1.0; tonne
mass; default; 001; 900; 900.0; kilogram; 900; 900.0; kilogram
mass; default; 001; 1; 1.0; kilogram; 1; 1.0; kilogram
-mass; default; 001; 9 / 10; 0.9; kilogram; 900; 900.0; gram
-mass; default; 001; 1 / 1000; 0.001; kilogram; 1; 1.0; gram
-mass; default; 001; 9 / 10000; 9.0E-4; kilogram; 900; 900.0; milligram
-mass; default; 001; 1 / 1000000; 1.0E-6; kilogram; 1; 1.0; milligram
-mass; default; 001; 9 / 10000000; 9.0E-7; kilogram; 900; 900.0; microgram
-mass; default; 001; 1 / 1000000000; 1.0E-9; kilogram; 1; 1.0; microgram
-mass; default; 001; 9 / 10000000000; 9.0E-10; kilogram; 9 / 10; 0.9; microgram
-
-mass; default; GB; 498951607 / 500000; 997.903214; kilogram; 11 / 10; 1.1; ton
-mass; default; GB; 45359237 / 50000; 907.18474; kilogram; 1; 1.0; ton
-mass; default; GB; 408233133 / 500000; 816.466266; kilogram; 1800; 1800.0; pound
-mass; default; GB; 45359237 / 100000000; 0.45359237; kilogram; 1; 1.0; pound
-mass; default; GB; 408233133 / 1000000000; 0.408233133; kilogram; 72 / 5; 14.4; ounce
-mass; default; GB; 45359237 / 1600000000; 0.028349523125; kilogram; 1; 1.0; ounce
-mass; default; GB; 408233133 / 16000000000; 0.0255145708125; kilogram; 9 / 10; 0.9; ounce
-
-mass; person; 001; 11 / 10; 1.1; kilogram; 11 / 10; 1.1; kilogram
+mass; default; 001; 9/10; 0.9; kilogram; 900; 900.0; gram
+mass; default; 001; 1/1000; 0.001; kilogram; 1; 1.0; gram
+mass; default; 001; 9/10000; 9.0E-4; kilogram; 900; 900.0; milligram
+mass; default; 001; 1/1000000; 1.0E-6; kilogram; 1; 1.0; milligram
+mass; default; 001; 9/10000000; 9.0E-7; kilogram; 900; 900.0; microgram
+mass; default; 001; 1/1000000000; 1.0E-9; kilogram; 1; 1.0; microgram
+mass; default; 001; 9/10000000000; 9.0E-10; kilogram; 9/10; 0.9; microgram
+
+mass; default; GB; 498951607/500000; 997.903214; kilogram; 11/10; 1.1; ton
+mass; default; GB; 45359237/50000; 907.18474; kilogram; 1; 1.0; ton
+mass; default; GB; 408233133/500000; 816.466266; kilogram; 1800; 1800.0; pound
+mass; default; GB; 45359237/100000000; 0.45359237; kilogram; 1; 1.0; pound
+mass; default; GB; 408233133/1000000000; 0.408233133; kilogram; 72/5; 14.4; ounce
+mass; default; GB; 45359237/1600000000; 0.028349523125; kilogram; 1; 1.0; ounce
+mass; default; GB; 408233133/16000000000; 0.0255145708125; kilogram; 9/10; 0.9; ounce
+
+mass; person; 001; 11/10; 1.1; kilogram; 11/10; 1.1; kilogram
mass; person; 001; 1; 1.0; kilogram; 1; 1.0; kilogram
-mass; person; 001; 9 / 10; 0.9; kilogram; 900; 900.0; gram
-mass; person; 001; 1 / 1000; 0.001; kilogram; 1; 1.0; gram
-mass; person; 001; 9 / 10000; 9.0E-4; kilogram; 9 / 10; 0.9; gram
-
-mass; person; DZ; 11 / 10; 1.1; kilogram; 11 / 10; 1.1; kilogram
-mass; person; DZ; 1; 1.0; kilogram; 1; 1.0; kilogram
-mass; person; DZ; 9 / 10; 0.9; kilogram; 900; 900.0; gram
+mass; person; 001; 9/10; 0.9; kilogram; 900; 900.0; gram
+mass; person; 001; 1/1000; 0.001; kilogram; 1; 1.0; gram
+mass; person; 001; 9/10000; 9.0E-4; kilogram; 9/10; 0.9; gram
-mass; person; US; 498951607 / 1000000000; 0.498951607; kilogram; 11 / 10; 1.1; pound
-mass; person; US; 45359237 / 100000000; 0.45359237; kilogram; 1; 1.0; pound
-mass; person; US; 408233133 / 1000000000; 0.408233133; kilogram; 0; pound; 72 / 5; 14.4; ounce
+mass; person; US; 498951607/1000000000; 0.498951607; kilogram; 11/10; 1.1; pound
+mass; person; US; 45359237/100000000; 0.45359237; kilogram; 1; 1.0; pound
+mass; person; US; 408233133/1000000000; 0.408233133; kilogram; 0; pound; 72/5; 14.4; ounce
-mass; person; GB; 3492661249 / 500000000; 6.985322498; kilogram; 1; stone; 7 / 5; 1.4; pound
-mass; person; GB; 317514659 / 50000000; 6.35029318; kilogram; 1; stone; 0; 0.0; pound
-mass; person; GB; 2857631931 / 500000000; 5.715263862; kilogram; 12; pound; 48 / 5; 9.6; ounce
-mass; person; GB; 45359237 / 100000000; 0.45359237; kilogram; 1; pound; 0; 0.0; ounce
-mass; person; GB; 408233133 / 1000000000; 0.408233133; kilogram; 0; pound; 72 / 5; 14.4; ounce
+mass; person; GB; 3492661249/500000000; 6.985322498; kilogram; 1; stone; 7/5; 1.4; pound
+mass; person; GB; 317514659/50000000; 6.35029318; kilogram; 1; stone; 0; 0.0; pound
+mass; person; GB; 2857631931/500000000; 5.715263862; kilogram; 12; pound; 48/5; 9.6; ounce
+mass; person; GB; 45359237/100000000; 0.45359237; kilogram; 1; pound; 0; 0.0; ounce
+mass; person; GB; 408233133/1000000000; 0.408233133; kilogram; 0; pound; 72/5; 14.4; ounce
-mass; person; HK; 498951607 / 1000000000; 0.498951607; kilogram; 1; pound; 8 / 5; 1.6; ounce
-mass; person; HK; 45359237 / 100000000; 0.45359237; kilogram; 1; pound; 0; 0.0; ounce
-mass; person; HK; 408233133 / 1000000000; 0.408233133; kilogram; 0; pound; 72 / 5; 14.4; ounce
+mass; person; HK; 498951607/1000000000; 0.498951607; kilogram; 1; pound; 8/5; 1.6; ounce
+mass; person; HK; 45359237/100000000; 0.45359237; kilogram; 1; pound; 0; 0.0; ounce
+mass; person; HK; 408233133/1000000000; 0.408233133; kilogram; 0; pound; 72/5; 14.4; ounce
-mass-density; default; 001; 11 / 10; 1.1; kilogram-per-cubic-meter; 11 / 10; 1.1; kilogram-per-cubic-meter
+mass-density; default; 001; 11/10; 1.1; kilogram-per-cubic-meter; 11/10; 1.1; kilogram-per-cubic-meter
mass-density; default; 001; 1; 1.0; kilogram-per-cubic-meter; 1; 1.0; kilogram-per-cubic-meter
-mass-density; default; 001; 9 / 10; 0.9; kilogram-per-cubic-meter; 9 / 10; 0.9; kilogram-per-cubic-meter
+mass-density; default; 001; 9/10; 0.9; kilogram-per-cubic-meter; 9/10; 0.9; kilogram-per-cubic-meter
-power; default; 001; 1100000000; 1.1E9; kilogram-square-meter-per-cubic-second; 11 / 10; 1.1; gigawatt
+power; default; 001; 1100000000; 1.1E9; kilogram-square-meter-per-cubic-second; 11/10; 1.1; gigawatt
power; default; 001; 1000000000; 1.0E9; kilogram-square-meter-per-cubic-second; 1; 1.0; gigawatt
power; default; 001; 900000000; 9.0E8; kilogram-square-meter-per-cubic-second; 900; 900.0; megawatt
power; default; 001; 1000000; 1000000.0; kilogram-square-meter-per-cubic-second; 1; 1.0; megawatt
@@ -313,142 +314,163 @@ power; default; 001; 900000; 900000.0; kilogram-square-meter-per-cubic-second; 9
power; default; 001; 1000; 1000.0; kilogram-square-meter-per-cubic-second; 1; 1.0; kilowatt
power; default; 001; 900; 900.0; kilogram-square-meter-per-cubic-second; 900; 900.0; watt
power; default; 001; 1; 1.0; kilogram-square-meter-per-cubic-second; 1; 1.0; watt
-power; default; 001; 9 / 10; 0.9; kilogram-square-meter-per-cubic-second; 900; 900.0; milliwatt
-power; default; 001; 1 / 1000; 0.001; kilogram-square-meter-per-cubic-second; 1; 1.0; milliwatt
-power; default; 001; 9 / 10000; 9.0E-4; kilogram-square-meter-per-cubic-second; 9 / 10; 0.9; milliwatt
+power; default; 001; 9/10; 0.9; kilogram-square-meter-per-cubic-second; 900; 900.0; milliwatt
+power; default; 001; 1/1000; 0.001; kilogram-square-meter-per-cubic-second; 1; 1.0; milliwatt
+power; default; 001; 9/10000; 9.0E-4; kilogram-square-meter-per-cubic-second; 9/10; 0.9; milliwatt
-power; engine; 001; 1100; 1100.0; kilogram-square-meter-per-cubic-second; 11 / 10; 1.1; kilowatt
+power; engine; 001; 1100; 1100.0; kilogram-square-meter-per-cubic-second; 11/10; 1.1; kilowatt
power; engine; 001; 1000; 1000.0; kilogram-square-meter-per-cubic-second; 1; 1.0; kilowatt
-power; engine; 001; 900; 900.0; kilogram-square-meter-per-cubic-second; 9 / 10; 0.9; kilowatt
+power; engine; 001; 900; 900.0; kilogram-square-meter-per-cubic-second; 9/10; 0.9; kilowatt
-power; engine; GB; 410134929370248621 / 500000000000000; 820.2698587404972; kilogram-square-meter-per-cubic-second; 11 / 10; 1.1; horsepower
-power; engine; GB; 37284993579113511 / 50000000000000; 745.6998715822702; kilogram-square-meter-per-cubic-second; 1; 1.0; horsepower
-power; engine; GB; 335564942212021599 / 500000000000000; 671.1298844240432; kilogram-square-meter-per-cubic-second; 9 / 10; 0.9; horsepower
+power; engine; GB; 410134929370248621/500000000000000; 820.2698587404972; kilogram-square-meter-per-cubic-second; 11/10; 1.1; horsepower
+power; engine; GB; 37284993579113511/50000000000000; 745.6998715822702; kilogram-square-meter-per-cubic-second; 1; 1.0; horsepower
+power; engine; GB; 335564942212021599/500000000000000; 671.1298844240432; kilogram-square-meter-per-cubic-second; 9/10; 0.9; horsepower
-pressure; baromtrc; 001; 110; 110.0; kilogram-per-meter-square-second; 11 / 10; 1.1; hectopascal
+pressure; baromtrc; 001; 110; 110.0; kilogram-per-meter-square-second; 11/10; 1.1; hectopascal
pressure; baromtrc; 001; 100; 100.0; kilogram-per-meter-square-second; 1; 1.0; hectopascal
-pressure; baromtrc; 001; 90; 90.0; kilogram-per-meter-square-second; 9 / 10; 0.9; hectopascal
+pressure; baromtrc; 001; 90; 90.0; kilogram-per-meter-square-second; 9/10; 0.9; hectopascal
-pressure; baromtrc; IN; 37250275043751 / 10000000000; 3725.0275043751; kilogram-per-meter-square-second; 11 / 10; 1.1; inch-ofhg
-pressure; baromtrc; IN; 3386388640341 / 1000000000; 3386.388640341; kilogram-per-meter-square-second; 1; 1.0; inch-ofhg
-pressure; baromtrc; IN; 30477497763069 / 10000000000; 3047.7497763069; kilogram-per-meter-square-second; 9 / 10; 0.9; inch-ofhg
+pressure; baromtrc; US; 37250275043751/10000000000; 3725.0275043751; kilogram-per-meter-square-second; 11/10; 1.1; inch-ofhg
+pressure; baromtrc; US; 3386388640341/1000000000; 3386.388640341; kilogram-per-meter-square-second; 1; 1.0; inch-ofhg
+pressure; baromtrc; US; 30477497763069/10000000000; 3047.7497763069; kilogram-per-meter-square-second; 9/10; 0.9; inch-ofhg
-pressure; baromtrc; BR; 110; 110.0; kilogram-per-meter-square-second; 11 / 10; 1.1; millibar
+pressure; baromtrc; BR; 110; 110.0; kilogram-per-meter-square-second; 11/10; 1.1; millibar
pressure; baromtrc; BR; 100; 100.0; kilogram-per-meter-square-second; 1; 1.0; millibar
-pressure; baromtrc; BR; 90; 90.0; kilogram-per-meter-square-second; 9 / 10; 0.9; millibar
+pressure; baromtrc; BR; 90; 90.0; kilogram-per-meter-square-second; 9/10; 0.9; millibar
-pressure; baromtrc; MX; 293309252313 / 2000000000; 146.6546261565; kilogram-per-meter-square-second; 11 / 10; 1.1; millimeter-ofhg
-pressure; baromtrc; MX; 26664477483 / 200000000; 133.322387415; kilogram-per-meter-square-second; 1; 1.0; millimeter-ofhg
-pressure; baromtrc; MX; 239980297347 / 2000000000; 119.9901486735; kilogram-per-meter-square-second; 9 / 10; 0.9; millimeter-ofhg
+pressure; baromtrc; MX; 293309252313/2000000000; 146.6546261565; kilogram-per-meter-square-second; 11/10; 1.1; millimeter-ofhg
+pressure; baromtrc; MX; 26664477483/200000000; 133.322387415; kilogram-per-meter-square-second; 1; 1.0; millimeter-ofhg
+pressure; baromtrc; MX; 239980297347/2000000000; 119.9901486735; kilogram-per-meter-square-second; 9/10; 0.9; millimeter-ofhg
-pressure; default; 001; 1100000; 1100000.0; kilogram-per-meter-square-second; 11 / 10; 1.1; megapascal
+pressure; default; 001; 1100000; 1100000.0; kilogram-per-meter-square-second; 11/10; 1.1; megapascal
pressure; default; 001; 1000000; 1000000.0; kilogram-per-meter-square-second; 1; 1.0; megapascal
pressure; default; 001; 900000; 900000.0; kilogram-per-meter-square-second; 900000; 900000.0; pascal
pressure; default; 001; 1; 1.0; kilogram-per-meter-square-second; 1; 1.0; pascal
-pressure; default; 001; 9 / 10; 0.9; kilogram-per-meter-square-second; 9 / 10; 0.9; pascal
+pressure; default; 001; 9/10; 0.9; kilogram-per-meter-square-second; 9/10; 0.9; pascal
+
+pressure; default; GB; 97860875535731/12903200000; 7584.233022485197; kilogram-per-meter-square-second; 11/10; 1.1; pound-force-per-square-inch
+pressure; default; GB; 8896443230521/1290320000; 6894.757293168361; kilogram-per-meter-square-second; 1; 1.0; pound-force-per-square-inch
+pressure; default; GB; 80067989074689/12903200000; 6205.281563851525; kilogram-per-meter-square-second; 9/10; 0.9; pound-force-per-square-inch
+
+speed; default; 001; 11/36; 0.3055555555555556; meter-per-second; 11/10; 1.1; kilometer-per-hour
+speed; default; 001; 5/18; 0.2777777777777778; meter-per-second; 1; 1.0; kilometer-per-hour
+speed; default; 001; 1/4; 0.25; meter-per-second; 9/10; 0.9; kilometer-per-hour
-pressure; default; GB; 97860875535731 / 12903200000; 7584.233022485197; kilogram-per-meter-square-second; 11 / 10; 1.1; pound-force-per-square-inch
-pressure; default; GB; 8896443230521 / 1290320000; 6894.757293168361; kilogram-per-meter-square-second; 1; 1.0; pound-force-per-square-inch
-pressure; default; GB; 80067989074689 / 12903200000; 6205.281563851525; kilogram-per-meter-square-second; 9 / 10; 0.9; pound-force-per-square-inch
+speed; default; GB; 15367/31250; 0.491744; meter-per-second; 11/10; 1.1; mile-per-hour
+speed; default; GB; 1397/3125; 0.44704; meter-per-second; 1; 1.0; mile-per-hour
+speed; default; GB; 12573/31250; 0.402336; meter-per-second; 9/10; 0.9; mile-per-hour
-speed; default; 001; 11 / 36; 0.3055555555555556; meter-per-second; 11 / 10; 1.1; kilometer-per-hour
-speed; default; 001; 5 / 18; 0.2777777777777778; meter-per-second; 1; 1.0; kilometer-per-hour
-speed; default; 001; 1 / 4; 0.25; meter-per-second; 9 / 10; 0.9; kilometer-per-hour
+speed; rainfall; 001; 11/36000000; 3.055555555555556E-7; meter-per-second; 11/10; 1.1; millimeter-per-hour
+speed; rainfall; 001; 1/3600000; 2.777777777777778E-7; meter-per-second; 1; 1.0; millimeter-per-hour
+speed; rainfall; 001; 1/4000000; 2.5E-7; meter-per-second; 9/10; 0.9; millimeter-per-hour
-speed; default; GB; 15367 / 31250; 0.491744; meter-per-second; 11 / 10; 1.1; mile-per-hour
-speed; default; GB; 1397 / 3125; 0.44704; meter-per-second; 1; 1.0; mile-per-hour
-speed; default; GB; 12573 / 31250; 0.402336; meter-per-second; 9 / 10; 0.9; mile-per-hour
+speed; rainfall; BR; 11/3600000; 3.055555555555556E-6; meter-per-second; 11/10; 1.1; centimeter-per-hour
+speed; rainfall; BR; 1/360000; 2.777777777777778E-6; meter-per-second; 1; 1.0; centimeter-per-hour
+speed; rainfall; BR; 1/400000; 2.5E-6; meter-per-second; 9/10; 0.9; centimeter-per-hour
-speed; wind; 001; 11 / 36; 0.3055555555555556; meter-per-second; 11 / 10; 1.1; kilometer-per-hour
-speed; wind; 001; 5 / 18; 0.2777777777777778; meter-per-second; 1; 1.0; kilometer-per-hour
-speed; wind; 001; 1 / 4; 0.25; meter-per-second; 9 / 10; 0.9; kilometer-per-hour
+speed; rainfall; US; 1397/180000000; 7.761111111111112E-6; meter-per-second; 11/10; 1.1; inch-per-hour
+speed; rainfall; US; 127/18000000; 7.055555555555556E-6; meter-per-second; 1; 1.0; inch-per-hour
+speed; rainfall; US; 127/20000000; 6.35E-6; meter-per-second; 9/10; 0.9; inch-per-hour
-speed; wind; FI; 11 / 10; 1.1; meter-per-second; 11 / 10; 1.1; meter-per-second
+speed; snowfall; 001; 11/3600000; 3.055555555555556E-6; meter-per-second; 11/10; 1.1; centimeter-per-hour
+speed; snowfall; 001; 1/360000; 2.777777777777778E-6; meter-per-second; 1; 1.0; centimeter-per-hour
+speed; snowfall; 001; 1/400000; 2.5E-6; meter-per-second; 9/10; 0.9; centimeter-per-hour
+
+speed; snowfall; US; 1397/180000000; 7.761111111111112E-6; meter-per-second; 11/10; 1.1; inch-per-hour
+speed; snowfall; US; 127/18000000; 7.055555555555556E-6; meter-per-second; 1; 1.0; inch-per-hour
+speed; snowfall; US; 127/20000000; 6.35E-6; meter-per-second; 9/10; 0.9; inch-per-hour
+
+speed; wind; 001; 11/36; 0.3055555555555556; meter-per-second; 11/10; 1.1; kilometer-per-hour
+speed; wind; 001; 5/18; 0.2777777777777778; meter-per-second; 1; 1.0; kilometer-per-hour
+speed; wind; 001; 1/4; 0.25; meter-per-second; 9/10; 0.9; kilometer-per-hour
+
+speed; wind; FI; 11/10; 1.1; meter-per-second; 11/10; 1.1; meter-per-second
speed; wind; FI; 1; 1.0; meter-per-second; 1; 1.0; meter-per-second
-speed; wind; FI; 9 / 10; 0.9; meter-per-second; 9 / 10; 0.9; meter-per-second
+speed; wind; FI; 9/10; 0.9; meter-per-second; 9/10; 0.9; meter-per-second
-speed; wind; US; 15367 / 31250; 0.491744; meter-per-second; 11 / 10; 1.1; mile-per-hour
-speed; wind; US; 1397 / 3125; 0.44704; meter-per-second; 1; 1.0; mile-per-hour
-speed; wind; US; 12573 / 31250; 0.402336; meter-per-second; 9 / 10; 0.9; mile-per-hour
+speed; wind; GB; 15367/31250; 0.491744; meter-per-second; 11/10; 1.1; mile-per-hour
+speed; wind; GB; 1397/3125; 0.44704; meter-per-second; 1; 1.0; mile-per-hour
+speed; wind; GB; 12573/31250; 0.402336; meter-per-second; 9/10; 0.9; mile-per-hour
-temperature; default; 001; 1097 / 4; 274.25; kelvin; 11 / 10; 1.1; celsius
-temperature; default; 001; 5483 / 20; 274.15; kelvin; 1; 1.0; celsius
-temperature; default; 001; 5481 / 20; 274.05; kelvin; 9 / 10; 0.9; celsius
+temperature; default; 001; 1097/4; 274.25; kelvin; 11/10; 1.1; celsius
+temperature; default; 001; 5483/20; 274.15; kelvin; 1; 1.0; celsius
+temperature; default; 001; 5481/20; 274.05; kelvin; 9/10; 0.9; celsius
-temperature; default; US; 15359 / 60; 255.9833333333333; kelvin; 11 / 10; 1.1; fahrenheit
-temperature; default; US; 46067 / 180; 255.9277777777778; kelvin; 1; 1.0; fahrenheit
-temperature; default; US; 46057 / 180; 255.8722222222222; kelvin; 9 / 10; 0.9; fahrenheit
+temperature; default; US; 15359/60; 255.9833333333333; kelvin; 11/10; 1.1; fahrenheit
+temperature; default; US; 46067/180; 255.9277777777778; kelvin; 1; 1.0; fahrenheit
+temperature; default; US; 46057/180; 255.8722222222222; kelvin; 9/10; 0.9; fahrenheit
-temperature; weather; 001; 1097 / 4; 274.25; kelvin; 11 / 10; 1.1; celsius
-temperature; weather; 001; 5483 / 20; 274.15; kelvin; 1; 1.0; celsius
-temperature; weather; 001; 5481 / 20; 274.05; kelvin; 9 / 10; 0.9; celsius
+temperature; weather; 001; 1097/4; 274.25; kelvin; 11/10; 1.1; celsius
+temperature; weather; 001; 5483/20; 274.15; kelvin; 1; 1.0; celsius
+temperature; weather; 001; 5481/20; 274.05; kelvin; 9/10; 0.9; celsius
-temperature; weather; BS; 15359 / 60; 255.9833333333333; kelvin; 11 / 10; 1.1; fahrenheit
-temperature; weather; BS; 46067 / 180; 255.9277777777778; kelvin; 1; 1.0; fahrenheit
-temperature; weather; BS; 46057 / 180; 255.8722222222222; kelvin; 9 / 10; 0.9; fahrenheit
+temperature; weather; BS; 15359/60; 255.9833333333333; kelvin; 11/10; 1.1; fahrenheit
+temperature; weather; BS; 46067/180; 255.9277777777778; kelvin; 1; 1.0; fahrenheit
+temperature; weather; BS; 46057/180; 255.8722222222222; kelvin; 9/10; 0.9; fahrenheit
-volume; default; 001; 11 / 10; 1.1; cubic-meter; 11 / 10; 1.1; cubic-meter
+volume; default; 001; 11/10; 1.1; cubic-meter; 11/10; 1.1; cubic-meter
volume; default; 001; 1; 1.0; cubic-meter; 1; 1.0; cubic-meter
-volume; default; 001; 9 / 10; 0.9; cubic-meter; 900000; 900000.0; cubic-centimeter
-volume; default; 001; 1 / 1000000; 1.0E-6; cubic-meter; 1; 1.0; cubic-centimeter
-volume; default; 001; 9 / 10000000; 9.0E-7; cubic-meter; 9 / 10; 0.9; cubic-centimeter
-
-volume; default; GB; 608369751 / 19531250000; 0.0311485312512; cubic-meter; 11 / 10; 1.1; cubic-foot
-volume; default; GB; 55306341 / 1953125000; 0.028316846592; cubic-meter; 1; 1.0; cubic-foot
-volume; default; GB; 497757069 / 19531250000; 0.0254851619328; cubic-meter; 7776 / 5; 1555.2; cubic-inch
-volume; default; GB; 2048383 / 125000000000; 1.6387064E-5; cubic-meter; 1; 1.0; cubic-inch
-volume; default; GB; 18435447 / 1250000000000; 1.47483576E-5; cubic-meter; 9 / 10; 0.9; cubic-inch
-
-volume; fluid; 001; 11 / 10000; 0.0011; cubic-meter; 11 / 10; 1.1; liter
-volume; fluid; 001; 1 / 1000; 0.001; cubic-meter; 1; 1.0; liter
-volume; fluid; 001; 9 / 10000; 9.0E-4; cubic-meter; 900; 900.0; milliliter
-volume; fluid; 001; 1 / 1000000; 1.0E-6; cubic-meter; 1; 1.0; milliliter
-volume; fluid; 001; 9 / 10000000; 9.0E-7; cubic-meter; 9 / 10; 0.9; milliliter
-
-volume; fluid; US; 5204941203 / 1250000000000; 0.0041639529624; cubic-meter; 11 / 10; 1.1; gallon
-volume; fluid; US; 473176473 / 125000000000; 0.003785411784; cubic-meter; 1; 1.0; gallon
-volume; fluid; US; 4258588257 / 1250000000000; 0.0034068706056; cubic-meter; 18 / 5; 3.6; quart
-volume; fluid; US; 473176473 / 500000000000; 9.46352946E-4; cubic-meter; 1; 1.0; quart
-volume; fluid; US; 4258588257 / 5000000000000; 8.517176514E-4; cubic-meter; 9 / 5; 1.8; pint
-volume; fluid; US; 473176473 / 1000000000000; 4.73176473E-4; cubic-meter; 1; 1.0; pint
-volume; fluid; US; 4258588257 / 10000000000000; 4.258588257E-4; cubic-meter; 9 / 5; 1.8; cup
-volume; fluid; US; 473176473 / 2000000000000; 2.365882365E-4; cubic-meter; 1; 1.0; cup
-volume; fluid; US; 4258588257 / 20000000000000; 2.1292941285E-4; cubic-meter; 36 / 5; 7.2; fluid-ounce
-volume; fluid; US; 473176473 / 16000000000000; 2.95735295625E-5; cubic-meter; 1; 1.0; fluid-ounce
-volume; fluid; US; 4258588257 / 160000000000000; 2.661617660625E-5; cubic-meter; 9 / 5; 1.8; tablespoon
-volume; fluid; US; 473176473 / 32000000000000; 1.478676478125E-5; cubic-meter; 1; 1.0; tablespoon
-volume; fluid; US; 4258588257 / 320000000000000; 1.3308088303125E-5; cubic-meter; 27 / 10; 2.7; teaspoon
-volume; fluid; US; 157725491 / 32000000000000; 4.92892159375E-6; cubic-meter; 1; 1.0; teaspoon
-volume; fluid; US; 1419529419 / 320000000000000; 4.436029434375E-6; cubic-meter; 9 / 10; 0.9; teaspoon
-
-volume; fluid; GB; 5000699 / 1000000000; 0.005000699; cubic-meter; 11 / 10; 1.1; gallon-imperial
-volume; fluid; GB; 454609 / 100000000; 0.00454609; cubic-meter; 1; 1.0; gallon-imperial
-volume; fluid; GB; 4091481 / 1000000000; 0.004091481; cubic-meter; 144; 144.0; fluid-ounce-imperial
-volume; fluid; GB; 454609 / 16000000000; 2.84130625E-5; cubic-meter; 1; 1.0; fluid-ounce-imperial
-volume; fluid; GB; 4091481 / 160000000000; 2.557175625E-5; cubic-meter; 9 / 10; 0.9; fluid-ounce-imperial
-
-volume; oil; 001; 109303765263 / 625000000000; 0.1748860244208; cubic-meter; 11 / 10; 1.1; barrel
-volume; oil; 001; 9936705933 / 62500000000; 0.158987294928; cubic-meter; 1; 1.0; barrel
-volume; oil; 001; 89430353397 / 625000000000; 0.1430885654352; cubic-meter; 9 / 10; 0.9; barrel
-
-volume; vehicle; US; 5204941203 / 1250000000000; 0.0041639529624; cubic-meter; 11 / 10; 1.1; gallon
-volume; vehicle; US; 473176473 / 125000000000; 0.003785411784; cubic-meter; 1; 1.0; gallon
-volume; vehicle; US; 4258588257 / 1250000000000; 0.0034068706056; cubic-meter; 9 / 10; 0.9; gallon
-
-volume; vehicle; 001; 11 / 10000; 0.0011; cubic-meter; 11 / 10; 1.1; liter
-volume; vehicle; 001; 1 / 1000; 0.001; cubic-meter; 1; 1.0; liter
-volume; vehicle; 001; 9 / 10000; 9.0E-4; cubic-meter; 9 / 10; 0.9; liter
-
-year-duration; default; 001; 11 / 10; 1.1; year; 11 / 10; 1.1; year
+volume; default; 001; 9/10; 0.9; cubic-meter; 900000; 900000.0; cubic-centimeter
+volume; default; 001; 1/1000000; 1.0E-6; cubic-meter; 1; 1.0; cubic-centimeter
+volume; default; 001; 9/10000000; 9.0E-7; cubic-meter; 9/10; 0.9; cubic-centimeter
+
+volume; default; GB; 608369751/19531250000; 0.0311485312512; cubic-meter; 11/10; 1.1; cubic-foot
+volume; default; GB; 55306341/1953125000; 0.028316846592; cubic-meter; 1; 1.0; cubic-foot
+volume; default; GB; 497757069/19531250000; 0.0254851619328; cubic-meter; 7776/5; 1555.2; cubic-inch
+volume; default; GB; 2048383/125000000000; 1.6387064E-5; cubic-meter; 1; 1.0; cubic-inch
+volume; default; GB; 18435447/1250000000000; 1.47483576E-5; cubic-meter; 9/10; 0.9; cubic-inch
+
+volume; fluid; 001; 11/10000; 0.0011; cubic-meter; 11/10; 1.1; liter
+volume; fluid; 001; 1/1000; 0.001; cubic-meter; 1; 1.0; liter
+volume; fluid; 001; 9/10000; 9.0E-4; cubic-meter; 900; 900.0; milliliter
+volume; fluid; 001; 1/1000000; 1.0E-6; cubic-meter; 1; 1.0; milliliter
+volume; fluid; 001; 9/10000000; 9.0E-7; cubic-meter; 9/10; 0.9; milliliter
+
+volume; fluid; US; 5204941203/1250000000000; 0.0041639529624; cubic-meter; 11/10; 1.1; gallon
+volume; fluid; US; 473176473/125000000000; 0.003785411784; cubic-meter; 1; 1.0; gallon
+volume; fluid; US; 4258588257/1250000000000; 0.0034068706056; cubic-meter; 18/5; 3.6; quart
+volume; fluid; US; 473176473/500000000000; 9.46352946E-4; cubic-meter; 1; 1.0; quart
+volume; fluid; US; 4258588257/5000000000000; 8.517176514E-4; cubic-meter; 9/5; 1.8; pint
+volume; fluid; US; 473176473/1000000000000; 4.73176473E-4; cubic-meter; 1; 1.0; pint
+volume; fluid; US; 4258588257/10000000000000; 4.258588257E-4; cubic-meter; 9/5; 1.8; cup
+volume; fluid; US; 473176473/2000000000000; 2.365882365E-4; cubic-meter; 1; 1.0; cup
+volume; fluid; US; 4258588257/20000000000000; 2.1292941285E-4; cubic-meter; 36/5; 7.2; fluid-ounce
+volume; fluid; US; 473176473/16000000000000; 2.95735295625E-5; cubic-meter; 1; 1.0; fluid-ounce
+volume; fluid; US; 4258588257/160000000000000; 2.661617660625E-5; cubic-meter; 9/5; 1.8; tablespoon
+volume; fluid; US; 473176473/32000000000000; 1.478676478125E-5; cubic-meter; 1; 1.0; tablespoon
+volume; fluid; US; 4258588257/320000000000000; 1.3308088303125E-5; cubic-meter; 27/10; 2.7; teaspoon
+volume; fluid; US; 157725491/32000000000000; 4.92892159375E-6; cubic-meter; 1; 1.0; teaspoon
+volume; fluid; US; 1419529419/320000000000000; 4.436029434375E-6; cubic-meter; 9/10; 0.9; teaspoon
+
+volume; fluid; GB; 5000699/1000000000; 0.005000699; cubic-meter; 11/10; 1.1; gallon-imperial
+volume; fluid; GB; 454609/100000000; 0.00454609; cubic-meter; 1; 1.0; gallon-imperial
+volume; fluid; GB; 4091481/1000000000; 0.004091481; cubic-meter; 144; 144.0; fluid-ounce-imperial
+volume; fluid; GB; 454609/16000000000; 2.84130625E-5; cubic-meter; 1; 1.0; fluid-ounce-imperial
+volume; fluid; GB; 4091481/160000000000; 2.557175625E-5; cubic-meter; 9/10; 0.9; fluid-ounce-imperial
+
+volume; oil; 001; 109303765263/625000000000; 0.1748860244208; cubic-meter; 11/10; 1.1; barrel
+volume; oil; 001; 9936705933/62500000000; 0.158987294928; cubic-meter; 1; 1.0; barrel
+volume; oil; 001; 89430353397/625000000000; 0.1430885654352; cubic-meter; 9/10; 0.9; barrel
+
+volume; vehicle; US; 5204941203/1250000000000; 0.0041639529624; cubic-meter; 11/10; 1.1; gallon
+volume; vehicle; US; 473176473/125000000000; 0.003785411784; cubic-meter; 1; 1.0; gallon
+volume; vehicle; US; 4258588257/1250000000000; 0.0034068706056; cubic-meter; 9/10; 0.9; gallon
+
+volume; vehicle; 001; 11/10000; 0.0011; cubic-meter; 11/10; 1.1; liter
+volume; vehicle; 001; 1/1000; 0.001; cubic-meter; 1; 1.0; liter
+volume; vehicle; 001; 9/10000; 9.0E-4; cubic-meter; 9/10; 0.9; liter
+
+year-duration; default; 001; 11/10; 1.1; year; 11/10; 1.1; year
year-duration; default; 001; 1; 1.0; year; 1; 1.0; year
-year-duration; default; 001; 9 / 10; 0.9; year; 54 / 5; 10.8; month
-year-duration; default; 001; 1 / 12; 0.08333333333333333; year; 1; 1.0; month
-year-duration; default; 001; 3 / 40; 0.075; year; 9 / 10; 0.9; month
+year-duration; default; 001; 9/10; 0.9; year; 54/5; 10.8; month
+year-duration; default; 001; 1/12; 0.08333333333333333; year; 1; 1.0; month
+year-duration; default; 001; 3/40; 0.075; year; 9/10; 0.9; month
-year-duration; person-age; 001; 13 / 5; 2.6; year; 13 / 5; 2.6; year-person
-year-duration; person-age; 001; 5 / 2; 2.5; year; 5 / 2; 2.5; year-person
-year-duration; person-age; 001; 12 / 5; 2.4; year; 2; year-person; 24 / 5; 4.8; month-person
+year-duration; person-age; 001; 13/5; 2.6; year; 13/5; 2.6; year-person
+year-duration; person-age; 001; 5/2; 2.5; year; 5/2; 2.5; year-person
+year-duration; person-age; 001; 12/5; 2.4; year; 2; year-person; 24/5; 4.8; month-person
year-duration; person-age; 001; 1; 1.0; year; 1; year-person; 0; 0.0; month-person
-year-duration; person-age; 001; 9 / 10; 0.9; year; 54 / 5; 10.8; month-person
-year-duration; person-age; 001; 1 / 12; 0.08333333333333333; year; 1; 1.0; month-person
-year-duration; person-age; 001; 3 / 40; 0.075; year; 9 / 10; 0.9; month-person \ No newline at end of file
+year-duration; person-age; 001; 9/10; 0.9; year; 54/5; 10.8; month-person
+year-duration; person-age; 001; 1/12; 0.08333333333333333; year; 1; 1.0; month-person
+year-duration; person-age; 001; 3/40; 0.075; year; 9/10; 0.9; month-person
+
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/units/unitsTest.txt b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/units/unitsTest.txt
index f24f0526499..233a9304ece 100644
--- a/Build/source/libs/icu/icu-src/source/test/testdata/cldr/units/unitsTest.txt
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/cldr/units/unitsTest.txt
@@ -1,7 +1,7 @@
# Test data for unit conversions
-# Copyright © 1991-2021 Unicode, Inc.
+# Copyright © 1991-2023 Unicode, Inc.
# For terms of use, see http://www.unicode.org/copyright.html
-# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# SPDX-License-Identifier: Unicode-DFS-2016
# CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
#
# Format:
@@ -12,32 +12,36 @@
# round to 4 decimal digits before comparing.
# Note that certain conversions are approximate, such as degrees to radians
#
-# Generation: Set GENERATE_TESTS in TestUnits.java, and look at TestParseUnit results.
+# Generation: Set GENERATE_TESTS in TestUnits.java to regenerate unitsTest.txt.
acceleration ; meter-per-square-second ; meter-per-square-second ; 1 * x ; 1,000.00
acceleration ; g-force ; meter-per-square-second ; 9.80665 * x ; 9806.65
angle ; arc-second ; revolution ; 0.0000625/81 * x ; 7.716049E-4
angle ; arc-minute ; revolution ; 0.00125/27 * x ; 0.0462963
angle ; degree ; revolution ; 0.025/9 * x ; 2.777778
-angle ; radian ; revolution ; 65,501,488/411,557,987 * x ; 159.1549
+angle ; radian ; revolution ; 65,501,488/411557987 * x ; 159.1549
angle ; revolution ; revolution ; 1 * x ; 1,000.00
area ; square-centimeter ; square-meter ; 0.0001 * x ; 0.1
area ; square-inch ; square-meter ; 0.00064516 * x ; 0.64516
area ; square-foot ; square-meter ; 0.09290304 * x ; 92.90304
area ; square-yard ; square-meter ; 0.83612736 * x ; 836.1274
area ; square-meter ; square-meter ; 1 * x ; 1,000.00
+area ; bu-jp ; square-meter ; 400/121 * x ; 3305.785
+area ; se-jp ; square-meter ; 12,000/121 * x ; 99173.55
area ; dunam ; square-meter ; 1,000 * x ; 1000000.0
area ; acre ; square-meter ; 4,046.8564224 * x ; 4046856.0
+area ; cho ; square-meter ; 1,200,000/121 * x ; 9917355.0
area ; hectare ; square-meter ; 10,000 * x ; 1.0E7
area ; square-kilometer ; square-meter ; 1,000,000 * x ; 1.0E9
area ; square-mile ; square-meter ; 2,589,988.110336 * x ; 2.589988E9
-concentration ; milligram-ofglucose-per-deciliter ; kilogram-item-per-kilogram-cubic-meter ; 60,221,407,600,000,000,000,000,000,000/1,801,557 * x ; 3.342742E25
+catalytic-activity ; katal ; item-per-second ; 602,214,076,000,000,000,000,000 * x ; 6.022141E26
+concentration ; milligram-ofglucose-per-deciliter ; kilogram-item-per-kilogram-cubic-meter ; 60,221,407,600,000,000,000,000,000,000/1801557 * x ; 3.342742E25
concentration ; millimole-per-liter ; item-per-cubic-meter ; 602,214,076,000,000,000,000,000 * x ; 6.022141E26
-concentration-mass ; ofglucose ; item-per-kilogram ; 6,022,140,760,000,000,000,000,000,000,000/1,801,557 * x ; 3.342742E27
+concentration-mass ; ofglucose ; item-per-kilogram ; 6,022,140,760,000,000,000,000,000,000,000/1801557 * x ; 3.342742E27
consumption ; liter-per-100-kilometer ; cubic-meter-per-meter ; 0.00000001 * x ; 1.0E-5
consumption ; liter-per-kilometer ; cubic-meter-per-meter ; 0.000001 * x ; 0.001
-consumption-inverse ; mile-per-gallon-imperial ; meter-per-cubic-meter ; 160,934,400,000/454,609 * x ; 3.540062E8
-consumption-inverse ; mile-per-gallon ; meter-per-cubic-meter ; 48,000,000,000/112,903 * x ; 4.251437E8
+consumption-inverse ; mile-per-gallon-imperial ; meter-per-cubic-meter ; 160,934,400,000/454609 * x ; 3.540062E8
+consumption-inverse ; mile-per-gallon ; meter-per-cubic-meter ; 48,000,000,000/112903 * x ; 4.251437E8
digital ; bit ; bit ; 1 * x ; 1,000.00
digital ; byte ; bit ; 8 * x ; 8000.0
digital ; kilobit ; bit ; 1,000 * x ; 1000000.0
@@ -59,23 +63,31 @@ duration ; day ; second ; 86,400 * x ; 8.64E7
duration ; day-person ; second ; 86,400 * x ; 8.64E7
duration ; week ; second ; 604,800 * x ; 6.048E8
duration ; week-person ; second ; 604,800 * x ; 6.048E8
+duration ; fortnight ; second ; 1,209,600 * x ; 1.2096E9
+electric-capacitance ; farad ; pow4-second-square-ampere-per-kilogram-square-meter ; 1 * x ; 1000.0
+electric-charge ; coulomb ; second-ampere ; 1 * x ; 1000.0
+electric-conductance ; siemens ; cubic-second-square-ampere-per-kilogram-square-meter ; 1 * x ; 1000.0
electric-current ; milliampere ; ampere ; 0.001 * x ; 1.0
electric-current ; ampere ; ampere ; 1 * x ; 1,000.00
+electric-inductance ; henry ; kilogram-square-meter-per-square-second-square-ampere ; 1 * x ; 1000.0
electric-resistance ; ohm ; kilogram-square-meter-per-cubic-second-square-ampere ; 1 * x ; 1000.0
energy ; electronvolt ; kilogram-square-meter-per-square-second ; 0.0000000000000000001602177 * x ; 1.602177E-16
-energy ; dalton ; kilogram-square-meter-per-square-second ; 0.00000000014924180856 * x ; 1.492418E-7
energy ; joule ; kilogram-square-meter-per-square-second ; 1 * x ; 1000.0
energy ; newton-meter ; kilogram-square-meter-per-square-second ; 1 * x ; 1000.0
energy ; pound-force-foot ; kilogram-square-meter-per-square-second ; 1.3558179483314004 * x ; 1355.818
energy ; calorie ; kilogram-square-meter-per-square-second ; 4.184 * x ; 4184.0
+energy ; calorie-it ; kilogram-square-meter-per-square-second ; 4.1868 * x ; 4186.8
energy ; kilojoule ; kilogram-square-meter-per-square-second ; 1,000 * x ; 1000000.0
energy ; british-thermal-unit ; kilogram-square-meter-per-square-second ; 9,489.1523804/9 * x ; 1054350.0
+energy ; british-thermal-unit-it ; kilogram-square-meter-per-square-second ; 1,055.05585262 * x ; 1055056.0
energy ; foodcalorie ; kilogram-square-meter-per-square-second ; 4,184 * x ; 4184000.0
energy ; kilocalorie ; kilogram-square-meter-per-square-second ; 4,184 * x ; 4184000.0
energy ; kilowatt-hour ; kilogram-square-meter-second-per-cubic-second ; 3,600,000 * x ; 3.6E9
energy ; therm-us ; kilogram-square-meter-per-square-second ; 105,480,400 * x ; 1.054804E11
force ; newton ; kilogram-meter-per-square-second ; 1 * x ; 1000.0
force ; pound-force ; kilogram-meter-per-square-second ; 4.4482216152605 * x ; 4448.222
+force ; kilogram-force ; kilogram-meter-per-square-second ; 9.80665 * x ; 9806.65
+force ; kilowatt-hour-per-100-kilometer ; kilogram-square-meter-second-per-meter-cubic-second ; 36 * x ; 36000.0
frequency ; hertz ; revolution-per-second ; 1 * x ; 1000.0
frequency ; kilohertz ; revolution-per-second ; 1,000 * x ; 1000000.0
frequency ; megahertz ; revolution-per-second ; 1,000,000 * x ; 1.0E9
@@ -84,19 +96,30 @@ graphics ; dot ; pixel ; 1 * x ; 1000.0
graphics ; pixel ; pixel ; 1 * x ; 1,000.00
graphics ; megapixel ; pixel ; 1,000,000 * x ; 1.0E9
illuminance ; lux ; candela-per-square-meter ; 1 * x ; 1000.0
+ionizing-radiation ; gray ; square-meter-per-square-second ; 1 * x ; 1000.0
+ionizing-radiation ; sievert ; square-meter-per-square-second ; 1 * x ; 1000.0
length ; picometer ; meter ; 0.000000000001 * x ; 1.0E-9
length ; nanometer ; meter ; 0.000000001 * x ; 1.0E-6
length ; micrometer ; meter ; 0.000001 * x ; 0.001
+length ; rin ; meter ; 0.004/121 * x ; 0.03305785
length ; point ; meter ; 0.003175/9 * x ; 0.3527778
length ; millimeter ; meter ; 0.001 * x ; 1.0
+length ; sun ; meter ; 0.4/121 * x ; 3.305785
length ; centimeter ; meter ; 0.01 * x ; 10.0
length ; inch ; meter ; 0.0254 * x ; 25.4
+length ; shaku-length ; meter ; 4/121 * x ; 33.05785
+length ; shaku-cloth ; meter ; 5/121 * x ; 41.32231
length ; decimeter ; meter ; 0.1 * x ; 100.0
+length ; ken ; meter ; 24/121 * x ; 198.3471
length ; foot ; meter ; 0.3048 * x ; 304.8
+length ; jo-jp ; meter ; 40/121 * x ; 330.5785
length ; yard ; meter ; 0.9144 * x ; 914.4
length ; meter ; meter ; 1 * x ; 1,000.00
length ; fathom ; meter ; 1.8288 * x ; 1828.8
+length ; rod ; meter ; 5.0292 * x ; 5029.2
+length ; chain ; meter ; 20.1168 * x ; 20116.8
length ; furlong ; meter ; 201.168 * x ; 201168.0
+length ; ri-jp ; meter ; 51,840/121 * x ; 428429.8
length ; kilometer ; meter ; 1,000 * x ; 1000000.0
length ; mile ; meter ; 1,609.344 * x ; 1609344.0
length ; nautical-mile ; meter ; 1,852 * x ; 1852000.0
@@ -104,21 +127,26 @@ length ; mile-scandinavian ; meter ; 10,000 * x ; 1.0E7
length ; 100-kilometer ; meter ; 100,000 * x ; 1.0E8
length ; earth-radius ; meter ; 6,378,100 * x ; 6.3781E9
length ; solar-radius ; meter ; 695,700,000 * x ; 6.957E11
-length ; astronomical-unit ; meter ; 149,597,900,000 * x ; 1.495979E14
-length ; light-year ; meter ; 9,460,730,000,000,000 * x ; 9.46073E18
-length ; parsec ; meter ; 30,856,780,000,000,000 * x ; 3.085678E19
+length ; astronomical-unit ; meter ; 149,597,870,700 * x ; 1.495979E14
+length ; light-year ; meter ; 9,460,730,472,580,800 * x ; 9.46073E18
+length ; parsec ; meter ; 12,699,352,539,696,155,673,600,000/411557987 * x ; 3.085678E19
luminous-flux ; lumen ; candela-square-meter-per-square-meter ; 1 * x ; 1000.0
luminous-intensity ; candela ; candela ; 1 * x ; 1,000.00
+magnetic-flux ; weber ; kilogram-square-meter-per-square-second-ampere ; 1 * x ; 1000.0
+magnetic-induction ; tesla ; kilogram-per-square-second-ampere ; 1 * x ; 1000.0
+mass ; dalton ; kilogram ; 0.00000000000000000000000000166053878283 * x ; 1.660539E-24
mass ; microgram ; kilogram ; 0.000000001 * x ; 1.0E-6
mass ; milligram ; kilogram ; 0.000001 * x ; 0.001
mass ; grain ; kilogram ; 0.00006479891 * x ; 0.06479891
mass ; carat ; kilogram ; 0.0002 * x ; 0.2
+mass ; fun ; kilogram ; 0.000375 * x ; 0.375
mass ; gram ; kilogram ; 0.001 * x ; 1.0
mass ; ounce ; kilogram ; 0.028349523125 * x ; 28.34952
mass ; ounce-troy ; kilogram ; 0.03110348 * x ; 31.10348
mass ; pound ; kilogram ; 0.45359237 * x ; 453.5924
mass ; kilogram ; kilogram ; 1 * x ; 1,000.00
mass ; stone ; kilogram ; 6.35029318 * x ; 6350.293
+mass ; slug ; kilogram ; 5,560.277019075625/381 * x ; 14593.9
mass ; ton ; kilogram ; 907.18474 * x ; 907184.7
mass ; tonne ; kilogram ; 1,000 * x ; 1000000.0
mass ; earth-mass ; kilogram ; 5,972,200,000,000,000,000,000,000 * x ; 5.9722E27
@@ -142,21 +170,25 @@ pressure ; millibar ; kilogram-per-meter-square-second ; 100 * x ; 100000.0
pressure ; millimeter-ofhg ; kilogram-meter-per-square-meter-square-second ; 133.322387415 * x ; 133322.4
pressure ; kilopascal ; kilogram-per-meter-square-second ; 1,000 * x ; 1000000.0
pressure ; inch-ofhg ; kilogram-meter-per-square-meter-square-second ; 3,386.388640341 * x ; 3386389.0
-pressure ; pound-force-per-square-inch ; kilogram-meter-per-square-meter-square-second ; 111,205,540.3815125/16,129 * x ; 6894757.0
+pressure ; pound-force-per-square-inch ; kilogram-meter-per-square-meter-square-second ; 111,205,540.3815125/16129 * x ; 6894757.0
pressure ; bar ; kilogram-per-meter-square-second ; 100,000 * x ; 1.0E8
pressure ; atmosphere ; kilogram-per-meter-square-second ; 101,325 * x ; 1.01325E8
pressure ; megapascal ; kilogram-per-meter-square-second ; 1,000,000 * x ; 1.0E9
+pressure ; gasoline-energy-density ; kilogram-per-meter-square-second ; 722,250,000,000,000,000/22532213 * x ; 3.205411E13
pressure-per-length ; ofhg ; kilogram-per-square-meter-square-second ; 133,322.387415 * x ; 1.333224E8
+radioactivity ; becquerel ; per-second ; 1 * x ; 1000.0
resolution ; dot-per-inch ; pixel-per-meter ; 5,000/127 * x ; 39370.08
resolution ; pixel-per-inch ; pixel-per-meter ; 5,000/127 * x ; 39370.08
resolution ; dot-per-centimeter ; pixel-per-meter ; 100 * x ; 100000.0
resolution ; pixel-per-centimeter ; pixel-per-meter ; 100 * x ; 100000.0
+solid-angle ; steradian ; square-revolution ; 4,290,444,930,214,144/169379976663492169 * x ; 25.3303
speed ; kilometer-per-hour ; meter-per-second ; 2.5/9 * x ; 277.7778
speed ; mile-per-hour ; meter-per-second ; 0.44704 * x ; 447.04
speed ; knot ; meter-per-second ; 4.63/9 * x ; 514.4444
speed ; meter-per-second ; meter-per-second ; 1 * x ; 1,000.00
substance-amount ; item ; item ; 1 * x ; 1,000.00
substance-amount ; mole ; item ; 602,214,076,000,000,000,000,000 * x ; 6.022141E26
+temperature ; rankine ; kelvin ; 5/9 * x ; 555.5556
temperature ; fahrenheit ; kelvin ; 5/9 * x - 2,298.35/9 ; 810.9278
temperature ; kelvin ; kelvin ; 1 * x ; 1,000.00
temperature ; celsius ; kelvin ; 1 * x - 273.15 ; 1273.15
@@ -166,30 +198,38 @@ volume ; drop ; cubic-meter ; 0.0000001540287998046875/3 * x ; 5.134293E-5
volume ; pinch ; cubic-meter ; 0.00000023104319970703125 * x ; 2.310432E-4
volume ; cubic-centimeter ; cubic-meter ; 0.000001 * x ; 0.001
volume ; milliliter ; cubic-meter ; 0.000001 * x ; 0.001
+volume ; sai ; cubic-meter ; 0.002401/1331 * x ; 0.001803907
volume ; dessert-spoon ; cubic-meter ; 0.00000184834559765625 * x ; 0.001848346
volume ; dessert-spoon-imperial ; cubic-meter ; 0.0000022197705078125 * x ; 0.002219771
volume ; dram ; cubic-meter ; 0.0000036966911953125 * x ; 0.003696691
volume ; teaspoon ; cubic-meter ; 0.00000492892159375 * x ; 0.004928922
+volume ; kosaji ; cubic-meter ; 0.000005 * x ; 0.005
volume ; centiliter ; cubic-meter ; 0.00001 * x ; 0.01
volume ; tablespoon ; cubic-meter ; 0.00001478676478125 * x ; 0.01478676
+volume ; osaji ; cubic-meter ; 0.000015 * x ; 0.015
volume ; cubic-inch ; cubic-meter ; 0.000016387064 * x ; 0.01638706
+volume ; shaku ; cubic-meter ; 0.02401/1331 * x ; 0.01803907
volume ; fluid-ounce-imperial ; cubic-meter ; 0.0000284130625 * x ; 0.02841306
volume ; fluid-ounce ; cubic-meter ; 0.0000295735295625 * x ; 0.02957353
volume ; jigger ; cubic-meter ; 0.00004436029434375 * x ; 0.04436029
+volume ; cup-jp ; cubic-meter ; 0.0001 * x ; 0.1
volume ; deciliter ; cubic-meter ; 0.0001 * x ; 0.1
volume ; cup ; cubic-meter ; 0.0002365882365 * x ; 0.2365882
volume ; cup-metric ; cubic-meter ; 0.00025 * x ; 0.25
volume ; pint ; cubic-meter ; 0.000473176473 * x ; 0.4731765
volume ; pint-metric ; cubic-meter ; 0.0005 * x ; 0.5
+volume ; pint-imperial ; cubic-meter ; 0.00056826125 * x ; 0.5682612
volume ; quart ; cubic-meter ; 0.000946352946 * x ; 0.9463529
volume ; liter ; cubic-meter ; 0.001 * x ; 1.0
volume ; quart-imperial ; cubic-meter ; 0.0011365225 * x ; 1.136522
volume ; gallon ; cubic-meter ; 0.003785411784 * x ; 3.785412
volume ; gallon-imperial ; cubic-meter ; 0.00454609 * x ; 4.54609
+volume ; to-jp ; cubic-meter ; 24.01/1331 * x ; 18.03907
volume ; cubic-foot ; cubic-meter ; 0.028316846592 * x ; 28.31685
volume ; bushel ; cubic-meter ; 0.03523907016688 * x ; 35.23907
volume ; hectoliter ; cubic-meter ; 0.1 * x ; 100.0
volume ; barrel ; cubic-meter ; 0.158987294928 * x ; 158.9873
+volume ; koku ; cubic-meter ; 240.1/1331 * x ; 180.3907
volume ; cubic-yard ; cubic-meter ; 0.764554857984 * x ; 764.5549
volume ; cubic-meter ; cubic-meter ; 1 * x ; 1,000.00
volume ; megaliter ; cubic-meter ; 1,000 * x ; 1000000.0
@@ -198,7 +238,8 @@ volume ; cubic-kilometer ; cubic-meter ; 1,000,000,000 * x ; 1.0E12
volume ; cubic-mile ; cubic-meter ; 4,168,181,825.440579584 * x ; 4.168182E12
year-duration ; month ; year ; 0.25/3 * x ; 83.33333
year-duration ; month-person ; year ; 0.25/3 * x ; 83.33333
+year-duration ; quarter ; year ; 0.25 * x ; 250.0
year-duration ; year ; year ; 1 * x ; 1,000.00
year-duration ; year-person ; year ; 1 * x ; 1000.0
year-duration ; decade ; year ; 10 * x ; 10000.0
-year-duration ; century ; year ; 100 * x ; 100000.0 \ No newline at end of file
+year-duration ; century ; year ; 100 * x ; 100000.0
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/conversion.txt b/Build/source/libs/icu/icu-src/source/test/testdata/conversion.txt
index bc8402fe4a2..8b430a53f89 100644
--- a/Build/source/libs/icu/icu-src/source/test/testdata/conversion.txt
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/conversion.txt
@@ -108,13 +108,21 @@ conversion:table(nofallback) {
:intvector{ 0,1,4,4,4,4,5,5,5,5,6,7,7,7,7,8,9,11 },
:int{1}, :int{0}, "", "&C", :bin{""}
}
- {
+ { // gb18030-2022 changes mapping for 0xFE90
"gb18030",
:bin{ 618130fc318130fc8181303c3e813cfc817afe90a8bc },
- "a\u05ed\\x810\u9f07\\x810<>\\x81<\u9f07z\ue854\u1e3f",
+ "a\u05ed\\x810\u9f07\\x810<>\\x81<\u9f07z\u9fba\u1e3f",
:intvector{ 0,1,5,5,5,5,6,7,9,9,9,9,10,11,12,13,13,13,13,14,15,17,18,20 },
:int{1}, :int{0}, "", "&C", :bin{""}
}
+ // GB18030: ICU-22420 adds two reverse fallbacks
+ {
+ "gb18030",
+ :bin{ 80a1a1a2e3a3a0 },
+ "\u20AC\u3000\u20AC\u3000",
+ :intvector{ 0,1,3,5 },
+ :int{1}, :int{0}, "", "&C", :bin{""}
+ }
{
"UTF-8",
:bin{ 61f1808182f180813cf18081fff180ff3cf1ff3c3e7a },
@@ -826,6 +834,27 @@ conversion:table(nofallback) {
:intvector{ 0, 4, 8, 12 },
:int{1}, :int{0}, "", "?", :bin{""}
}
+ { // gb18030->U 2005 vs 2022 part 1 (gb18030 2-byte)
+ "gb18030",
+ :bin{ A6D9 A6DA A6DB A6DC A6DF A6EC A6ED A6F3 FE59 FE61 FE66 FE67 FE6D FE7E FE90 FEA0 },
+ "\uFE10\uFE12\uFE11\uFE13\uFE16\uFE17\uFE18\uFE19\u9FB4\u9FB5\u9FB6\u9FB7\u9FB8\u9FB9\u9FBA\u9FBB", // -2005: "\uE78D\uE78E\uE78F\uE790\uE793\uE794\uE795\uE796\uE81E\uE826\uE82B\uE82C\uE832\uE843\uE854\uE864"
+ :intvector{ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30 },
+ :int{1}, :int{0}, "", "?", :bin{""}
+ }
+ { // gb18030->U 2005 vs 2022 part 2 (gb18030 4-byte)
+ "gb18030",
+ :bin{ 82359037 82359038 82359039 82359130 82359131 82359132 82359133 82359134 84318236 84318239 84318332 84318335 },
+ "\u9FB4\u9FB5\u9FB6\u9FB7\u9FB8\u9FB9\u9FBA\u9FBB\uFE10\uFE13\uFE16\uFE19", // unchanged from 2005 mapping
+ :intvector{ 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44 },
+ :int{1}, :int{0}, "", "?", :bin{""}
+ }
+ { // gb18030->U 2005 vs 2022 part 3 (gb18030 4-byte), non-changing mappings next to or in linear ranges partially overridden by new explicit maps
+ "gb18030",
+ :bin{ 82358F33823590368235913584318235843183368431843684318537 },
+ "\u9FA6\u9FB3\u9FBC\uFE0F\uFE1A\uFE24\uFE2F",
+ :intvector{ 0, 4, 8, 12, 16, 20, 24 },
+ :int{1}, :int{0}, "", "?", :bin{""}
+ }
{
"x11-compound-text",
:bin{ 1b242944b5ac1b2d41a5e31b2d43d5f51b2d4dd01b2d41411b2d43bc1b2d42ff1b2d54df1b2d44c0b31b2d46b41b2d47b01b2d48e01b2d4ca1 },
@@ -1817,13 +1846,34 @@ conversion:table(nofallback) {
:intvector{},
:int{1}, :int{0}, "", "0", ""
}
- {
+ { // gb18030-2022 changes mappings for 0xA6DC,0xA6DB
"gb18030",
- "\U00020087\ue790\ue78f\u1e3f",
+ "\U00020087\ufe13\ufe11\u1e3f",
:bin{ 95329031a6dca6dba8bc },
:intvector{ 0,0,0,0,2,2,3,3,4,4 },
:int{1}, :int{0}, "", "0", ""
}
+ { // U->gb18030 2005 vs 2022 part 1 (gb18030 2-byte)
+ "gb18030",
+ "\uFE10\uFE12\uFE11\uFE13\uFE16\uFE17\uFE18\uFE19\u9FB4\u9FB5\u9FB6\u9FB7\u9FB8\u9FB9\u9FBA\u9FBB", // -2005: "\uE78D\uE78E\uE78F\uE790\uE793\uE794\uE795\uE796\uE81E\uE826\uE82B\uE82C\uE832\uE843\uE854\uE864"
+ :bin{ A6D9A6DAA6DBA6DCA6DFA6ECA6EDA6F3FE59FE61FE66FE67FE6DFE7EFE90FEA0 },
+ :intvector{ 0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15 },
+ :int{1}, :int{0}, "", "0", ""
+ }
+ { // U->gb18030 2005 vs 2022 part 2 (gb18030 fallback mappings from Unicode PUA)
+ "gb18030",
+ "\uE78D\uE793\uE794\uE795\uE796\uE81E\uE826\uE82B\uE82C\uE832\uE843\uE854\uE864",
+ :bin{ A6D9A6DFA6ECA6EDA6F3FE59FE61FE66FE67FE6DFE7EFE90FEA0 },
+ :intvector{ 0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12 },
+ :int{1}, :int{0}, "", "0", ""
+ }
+ { // U->gb18030 2005 vs 2022 part 3 (gb18030 4-byte), non-changing mappings next to or in linear ranges partially overridden by new explicit maps
+ "gb18030",
+ "\u9FA6\u9FB3\u9FBC\uFE0F\uFE1A\uFE24\uFE2F",
+ :bin{ 82358F33823590368235913584318235843183368431843684318537 },
+ :intvector{ 0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6 },
+ :int{1}, :int{0}, "", "0", ""
+ }
{
"UTF-7",
"\u00a3I\u00a3\u00a4",
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/dcfmtest.txt b/Build/source/libs/icu/icu-src/source/test/testdata/dcfmtest.txt
index ad5583b0809..1ec2d37825d 100644
--- a/Build/source/libs/icu/icu-src/source/test/testdata/dcfmtest.txt
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/dcfmtest.txt
@@ -139,6 +139,14 @@ format @@@ unnecessary "1231" "Inexact"
format @@@@@@@@@@@@@@@@@@@@@@@@@ unnecessary "1234567890123456789012345" "1234567890123456789012345"
format @@@@@@@@@@@@@@@@@@@@@@@@@ unnecessary "12345678901234567890123456" "Inexact"
+# Other rounding modes
+format 0.00 halfodd "1.235" "1.23"
+format 0.00 halfodd "1.245" "1.25"
+format 0.00 halfceiling "1.235" "1.24"
+format 0.00 halfceiling "1.245" "1.25"
+format 0.00 halffloor "1.235" "1.23"
+format 0.00 halffloor "1.245" "1.24"
+
# Test cases generated by icuapps/roundmode/roundmode.cpp on 49.1
format 0.0 ceiling "-1.00" "-1.0"
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/numberformattestspecification.txt b/Build/source/libs/icu/icu-src/source/test/testdata/numberformattestspecification.txt
index aa4fa3c3f7a..1fd518b5c4e 100644
--- a/Build/source/libs/icu/icu-src/source/test/testdata/numberformattestspecification.txt
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/numberformattestspecification.txt
@@ -123,13 +123,12 @@ pattern format output breaks
''''# 1 ''1
'''''# 1 fail
'-''-'# 1 -'-1
-// K doesn't know the locale symbol for et
--'-'# 1 −-1 K
+-'-'# 1 −-1
'#'# 1 #1
''#'' 1 '1'
-''#- 1 '1− K
-'-'#- 1 -1− K
--#'-' 1 −1- K
+''#- 1 '1−
+'-'#- 1 -1−
+-#'-' 1 −1-
test int64
set locale en
@@ -299,8 +298,7 @@ set pattern 0.00+;(#)
begin
format output breaks
7 7.00+
-// JDK does not support negative suffixes
--3.5 (3.50) K
+-3.5 (3.50)
test minimum grouping digits
set locale en
@@ -681,7 +679,7 @@ set pattern [0.00];(#)
begin
format output breaks
Inf [\u221e]
--Inf (\u221e) K
+-Inf (\u221e)
// J does not print the affixes
// K prints \uFFFD
NaN [NaN] K
@@ -693,7 +691,7 @@ begin
format output breaks
Inf \u221e
-Inf -\u221e
-NaN NaN K
+NaN NaN
test nan and infinity with padding
set locale en_US
@@ -717,18 +715,14 @@ begin
// documentation says localizedPattern is not supported, change to pattern
locale pattern format output breaks
en #0% 0.4376 44%
-// This next test breaks JDK. JDK doesn't multiply by 100.
-fa \u0025\u00a0\u0023\u0030 0.4376 \u066a\u00a0\u06f4\u06f4 K
+fa \u0025\u00a0\u0023\u0030 0.4376 \u066a\u00a0\u06f4\u06f4
test localized pattern basic symbol coverage
begin
locale localizedPattern toPattern breaks
it #.##0,00 #,##0.00
-// JDK either doesn't know sl uses this character for minus sign
-// or doesn't support minus sign in localized pattern
-sl #.##0;#.##0− #,##0;#,##0- K
-// JDK does not have data for "×10^" in this locale
-en_SE 0,00×10^0;0,00×10^0- 0.00E0;0.00E0- K
+sl #.##0;#.##0− #,##0;#,##0-
+en_SE 0,00×10^0;0,00×10^0- 0.00E0;0.00E0-
// JDK does not seem to transform the digits in localized patterns
ar_SA #\u066C##\u0660\u066B\u0660\u0660;a# #,##0.00;a#,##0.00 K
@@ -752,7 +746,7 @@ pp#,000 pp#,000
#,#00.025 #,#00.025
// No secondary grouping in JDK
#,##,###.02500 #,##,###.02500 K
-pp#,000;(#) pp#,000;(#,000) K
+pp#,000;(#) pp#,000;(#,000)
**####,##,##0.0##;(#) **#,##,##,##0.0##;**(##,##,##0.0##) CJKP
// No significant digits in JDK
@@### @@### K
@@ -779,7 +773,8 @@ parse output breaks
+5347,,,d8 5347
(5,347.25) -5347.25
5,347.25 5347.25 K
-(5,347.25 -5347.25
+// JDK 11 stopped parsing this
+(5,347.25 -5347.25 K
// S is successful at parsing this as -5347.25 in lenient mode
-5,347.25 -5347.25 K
+3.52E4 35200
@@ -789,7 +784,8 @@ parse output breaks
(34,,25E-1) -342.5
// Trailing grouping separators are not OK.
// C/J/P stop at the offending separator.
-(34,,25,E-1) fail CJKP
+// JDK 11 gets this right
+(34,,25,E-1) fail CJP
(34,,25,E-1) -3425 K
(34 25 E-1) -342.5 K
(34,,25 E-1) -342.5 K
@@ -819,12 +815,13 @@ parse output breaks
( 19 45 ) -1945 K
(,,19,45) -1945
// C parses to the spaces
-(,,19 45) -19
+// JDK 11 stopped parsing this
+(,,19 45) -19 K
( 19,45) -1945 K
-(,,19,45,) -1945
+(,,19,45,) -1945 K
// C will parse up to the letter.
-(,,19,45,d1) -1945
-(,,19,45d1) -1945
+(,,19,45,d1) -1945 K
+(,,19,45d1) -1945 K
( 19 45 d1) -1945 K
( 19 45d1) -1945 K
(19,45,.25) -1945.25
@@ -845,8 +842,8 @@ parse output breaks
1,234,,,+ 1234 K
1,234- -1234
// C and P bail because of trailing separators
-1,234,- -1234 CJP
-1234 - -1234
+1,234,- -1234 CJKP
+1234 - -1234 K
@@ -874,8 +871,7 @@ parse output breaks
(63,425) -63425
(63,425E-1) -6342.5
// Both prefix and suffix needed for strict.
-// JDK accepts this and parses as -342.5
-(3425E-1 fail K
+(3425E-1 fail
+3.52EE4 3.52
+12,34,567.8901 1234567.8901
// With strict digit separators don't have to be the right type
@@ -900,8 +896,7 @@ parse output breaks
+79 79
+79 79
+ 79 fail
-// JDK parses as -1945
-(1,945d1) fail K
+(1,945d1) fail
test parse strict scientific
// See #13737: Old behavior should be retained in this case
@@ -1014,9 +1009,10 @@ begin
parse output breaks
१३ 13
१३.३१†13.31
-123'456 123456
-524'11.3 52411.3
-३'११†311
+// JDK 11 parses this as 123
+123'456 123456 K
+524'11.3 52411.3 K
+३'११†311 K
test parse with European-style comma/period
set locale pt
@@ -1326,8 +1322,8 @@ USD52.41 USD 52.41 K
EUR52.41 USD fail
$52.41 EUR fail
USD52.41 EUR fail
-\u20ac52.41 EUR 52.41 K
-EUR52.41 EUR 52.41
+\u20ac52.41 EUR 52.41
+EUR52.41 EUR 52.41 K
test parse currency ISO strict
set pattern 0.00 \u00a4\u00a4;(#) \u00a4\u00a4
@@ -1381,6 +1377,125 @@ begin
format output breaks
-0.99 -0 K
+// JDK seems to always round halfEven! Why? Bug in JDK or bug in test?
+test rounding mode ceil
+set locale en
+set roundingMode ceiling
+begin
+format output breaks
+-1.5 -1 K
+0.4 1 K
+0.5 1 K
+0.6 1
+1.5 2
+
+// JDK seems to always round halfEven! Why? Bug in JDK or bug in test?
+test rounding mode floor
+set locale en
+set roundingMode floor
+begin
+format output breaks
+-1.5 -2
+0.4 0
+0.5 0
+0.6 0 K
+1.5 1 K
+
+// JDK seems to always round halfEven! Why? Bug in JDK or bug in test?
+test rounding mode expand
+set locale en
+set roundingMode up
+begin
+format output breaks
+-1.5 -2
+0.4 1 K
+0.5 1 K
+0.6 1
+1.5 2
+
+// JDK seems to always round halfEven! Why? Bug in JDK or bug in test?
+test rounding mode trunc
+set locale en
+set roundingMode down
+begin
+format output breaks
+-1.5 -1 K
+0.4 0
+0.5 0
+0.6 0 K
+1.5 1 K
+
+// Not supported in Java BigDecimal
+test rounding mode halfCeil
+set locale en
+set roundingMode halfCeiling
+begin
+format output breaks
+-1.5 -1 JKP
+0.4 0 JP
+0.5 1 JKP
+0.6 1 JP
+1.5 2 JP
+
+// Not supported in Java BigDecimal
+test rounding mode halfFloor
+set locale en
+set roundingMode halfFloor
+begin
+format output breaks
+-1.5 -2 JP
+0.4 0 JP
+0.5 0 JP
+0.6 1 JP
+1.5 1 JKP
+
+// JDK seems to always round halfEven! Why? Bug in JDK or bug in test?
+test rounding mode halfExpand
+set locale en
+set roundingMode halfUp
+begin
+format output breaks
+-1.5 -2
+0.4 0
+0.5 1 K
+0.6 1
+1.5 2
+
+// JDK seems to always round halfEven! Why? Bug in JDK or bug in test?
+test rounding mode halfTrunc
+set locale en
+set roundingMode halfDown
+begin
+format output breaks
+-1.5 -1 K
+0.4 0
+0.5 0
+0.6 1
+1.5 1 K
+
+test rounding mode halfEven
+set locale en
+set roundingMode halfEven
+begin
+format output breaks
+-1.5 -2
+0.4 0
+0.5 0
+0.6 1
+1.5 2
+
+// Not supported in Java BigDecimal
+test rounding mode halfOdd
+set locale en
+set roundingMode halfOdd
+begin
+format output breaks
+-1.5 -1 JKP
+0.4 0 JP
+0.5 1 JKP
+0.6 1 JP
+1.5 1 JKP
+
test parse decimalPatternMatchRequired
set locale en
set decimalPatternMatchRequired 1
@@ -1431,8 +1546,8 @@ Aa1.23E3 1 1230
Aa1.23E3 0 1230
Aa1.23e3 1 1.23
Aa1.23e3 0 1230 K
-NaN 1 NaN K
-NaN 0 NaN K
+NaN 1 NaN
+NaN 0 NaN
nan 1 fail
nan 0 NaN K
@@ -1441,7 +1556,7 @@ set locale en
set lenient 1
begin
parse output breaks
-NaN NaN K
+NaN NaN
// JDK returns zero
1E999999999999999 Inf K
-1E999999999999999 -Inf K
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/rbbitst.txt b/Build/source/libs/icu/icu-src/source/test/testdata/rbbitst.txt
index 6f7555d2f6f..274b4051d24 100644
--- a/Build/source/libs/icu/icu-src/source/test/testdata/rbbitst.txt
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/rbbitst.txt
@@ -30,7 +30,7 @@
#
# There are two copies of this file in the source repository,
# [ICU4C] source/test/testdata/rbbitst.txt
-# [ICU4J] main/tests/core/src/com/ibm/icu/dev/test/rbbi/rbbitst.txt
+# [ICU4J] main/core/src/test/resources/com/ibm/icu/dev/test/rbbi/rbbitst.txt
#
# ICU4C's copy is the primary one. If any changes are made to ICU4J's copy, make sure they
# are merged back into ICU4C's copy of the file, lest they get overwritten later.
@@ -1586,7 +1586,7 @@ Bangkok)•</data>
<data>•Can't<200> •have<200> •breaks<200> •in<200> •xx<200>:•yy<200> •or<200> •struct.field<200> \
•for<200> •CS<200>-•types<200>.•</data>
<data>•\uFF92\uFF76\uFF9E<400> •</data>
-<data>•xx@yy<200>.•</data>
+<data>•xx<200>@•yy<200>.•</data>
<locale en_US_POSIX>
<word>
@@ -1594,21 +1594,21 @@ Bangkok)•</data>
•for<200> •CS<200>-•types<200>.•</data>
<data>•\u06c9<200>\uc799\ufffa•</data>
<data>•\uFF92\uFF76\uFF9E<400> •</data>
-<data>•xx@yy<200>.•</data>
+<data>•xx<200>@•yy<200>.•</data>
<locale fi>
<word>
<data>•Can't<200> •have<200> •breaks<200> •in<200> •xx:yy<200> •or<200> •struct.field<200> \
•for<200> •CS<200>-•types<200>.•</data>
<data>•\uFF92\uFF76\uFF9E<400> •</data>
-<data>•xx@yy<200>.•</data>
+<data>•xx<200>@•yy<200>.•</data>
<locale sv>
<word>
<data>•Can't<200> •have<200> •breaks<200> •in<200> •xx:yy<200> •or<200> •struct.field<200> \
•for<200> •CS<200>-•types<200>.•</data>
<data>•\uFF92\uFF76\uFF9E<400> •</data>
-<data>•xx@yy<200>.•</data>
+<data>•xx<200>@•yy<200>.•</data>
# UBreakIteratorType UBRK_CHARACTER, Locale "th"
@@ -1913,6 +1913,26 @@ Bangkok)•</data>
<data>•\U0001F469\u200D\U0001F680•\U0001F469\U0001F3FD\u200D\U0001F680\u0020•</data>
<locale ja@lw=phrase>
+#phrase breaking test cases for the ML solution
+<lineML>
+#9月ã«æ±äº¬ã‹ã‚‰å‹é”ãŒéŠã³ã«æ¥ãŸ -> 9月ã«â€¢æ±äº¬ã‹ã‚‰â€¢å‹é”ãŒâ€¢éŠã³ã«â€¢æ¥ãŸâ€¢
+<data>•\uff19\u6708\u306b•\u6771\u4eac\u304b\u3089•\u53cb\u9054\u304c•\u904a\u3073\u306b•\u6765\u305f•</data>
+#る文字「ãã†ã ã€äº¬éƒ½ã€-> る•文字•「ãã†ã ã€â€¢äº¬éƒ½ã€â€¢
+<data>•\u308b•\u6587\u5b57•\u300c\u305d\u3046\u3060\u3001•\u4eac\u90fd\u300d•</data>
+#Kana supplement: 𛛠(U+1B05B), 𛂦(U+1B0A6)
+#生 ð››ð›‚¦ã‚™ã‚’ã„ãŸã ã。-> 生 ð››ð›‚¦ã‚™ã‚’•ã„ãŸã ã。
+<data>•\u751F\U0001B05B\U0001B0A6\u3099\u3092•\u3044\u305F\u3060\u304F\u3002•</data>
+#中国ã®æºå¸¯ã¯ç´„5ï¼ï¼å…ƒã‹ã‚‰ï¼•ï¼ï¼ï¼å…ƒã§ã™ -> 中国ã®â–æºå¸¯ã¯â–ç´„â–5ï¼ï¼å…ƒã‹ã‚‰â–5ï¼ï¼ï¼å…ƒã§ã™
+<data>•\u4E2D\u56FD\u306E•\u643A\u5E2F\u306F•\u7D04•\uFF15\uFF10\uFF10\u5143\u304B\u3089•\uFF15\uFF10\uFF10\uFF10\u5143\u3067\u3059•</data>
+#ã—ã‹ã‚‚ロゴãŒï¼µï½Žï½‰ï½ƒï½ï½„ï½…ï¼ï¼ -> ã—ã‹ã‚‚â–ロゴãŒâ–Unicï½ï½„ï½…ï¼ï¼
+<data>•\u3057\u304B\u3082•\u30ED\u30B4\u304C•\uFF35\uFF4E\uFF49\uFF43\uFF4F\uFF44\uFF45\uFF01\uFF01•</data>
+#ãƒãƒƒãƒ†ãƒªãƒ¼ã‚’é•·æŒã¡ã•ã›ã€å……電を最é©åŒ–ã—ã¾ã™ -> ãƒãƒƒãƒ†ãƒªãƒ¼ã‚’â–é•·æŒã¡ã•ã›ã€â–充電をâ–最é©åŒ–ã—ã¾ã™
+<data>•\u30D0\u30C3\u30C6\u30EA\u30FC\u3092•\u9577\u6301\u3061\u3055\u305B\u3001•\u5145\u96FB\u3092•\u6700\u9069\u5316\u3057\u307E\u3059•</data>
+#データã®ã‚³ãƒ”ーã€ã‚¹ãƒžãƒ¼ãƒˆãƒ•ã‚©ãƒ³ã§ã®ãŠæ”¯æ‰•ã„ãªã© -> データã®â–コピーã€â–スマートフォンã§ã®â–ãŠæ”¯æ‰•ã„ãªã©
+<data>•\u30C7\u30FC\u30BF\u306E•\u30B3\u30D4\u30FC\u3001•\u30B9\u30DE\u30FC\u30C8\u30D5\u30A9\u30F3\u3067\u306E•\u304A\u652F\u6255\u3044\u306A\u3069•</data>
+
+<locale ja@lw=phrase>
+#phrase breaking test cases for the dictionary based solution
<line>
#[京都観光]時雨殿ã«è¡Œã£ãŸã€‚-> [京都•観光]•時雨•殿ã«â€¢è¡Œã£ãŸã€‚•
<data>•\uff3b\u4eac\u90fd•\u89b3\u5149\uff3d•\u6642\u96e8•\u6bbf\u306b•\u884c\u3063\u305f\u3002•</data>
@@ -1981,6 +2001,58 @@ Bangkok)•</data>
#ã“れらã®é€£çµ¡å…ˆã¯ãƒ‡ãƒã‚¤ã‚¹ã‚’ロック解除ã—ãªãã¦ã‚‚表示ã•ã‚Œ -> ã“れらã®â–連絡先ã¯â–デãƒã‚¤ã‚¹ã‚’â–ロックâ–解除ã—ãªãã¦ã‚‚â–表示ã•ã‚Œ
<data>•\u3053\u308C\u3089\u306E•\u9023\u7D61\u5148\u306F•\u30C7\u30D0\u30A4\u30B9\u3092•\u30ED\u30C3\u30AF•\u89E3\u9664\u3057\u306A\u304F\u3066\u3082•\u8868\u793A\u3055\u308C•</data>
+# Test the differences in ko with or without lw=phrase.
+<locale ko@lw=phrase>
+<line>
+#1948ë…„ 7ì›” 12ì¼ì— 제정ë˜ê³  8ì°¨ì— êµ­ë¯¼íˆ¬í‘œì— ì˜í•˜ì—¬ 개정한다.
+<data>•1948ë…„ •7ì›” •12ì¼ì— •제정ë˜ê³  •8ì°¨ì— â€¢êµ­ë¯¼íˆ¬í‘œì— â€¢ì˜í•˜ì—¬ •개정한다.•</data>
+#ëŒ€í•œë¯¼êµ­ì€ ë¯¼ì£¼ê³µí™”êµ­ì´ë‹¤.
+<data>â€¢ëŒ€í•œë¯¼êµ­ì€ â€¢ë¯¼ì£¼ê³µí™”êµ­ì´ë‹¤.•</data>
+#서울ì—ì„œ 부산까지 London까지
+<data>•서울ì—ì„œ •부산까지 •London까지•</data>
+#LTEê°€ 안 ë˜ë©´ WiFi를
+<data>•LTEê°€ •안 •ë˜ë©´ •WiFi를•</data>
+#<ë‹˜ì˜ ì¹¨ë¬µ>ì„ ì½ê³  ëŠë‚€ ì ì€?
+<data>•\u003cë‹˜ì˜ â€¢ì¹¨ë¬µ\u003eì„ â€¢ì½ê³  •ëŠë‚€ •ì ì€?•</data>
+# The following entry passes in ICU4C but fails in ICU4J for an unknown reason.
+#"ë‹˜ì˜ ì¹¨ë¬µ"ì„ ì½ê³ 
+#<data>•"ë‹˜ì˜ â€¢ì¹¨ë¬µ"ì„ â€¢ì½ê³ â€¢</data>
+# The following 3 lines are not handled properly, yet.
+#â€œë‹˜ì˜ ì¹¨ë¬µâ€ì„ ì½ê³ 
+#<data>â€¢â€œë‹˜ì˜ â€¢ì¹¨ë¬µâ€ì„ •ì½ê³ â€¢</data>
+#ã€Žë‹˜ì˜ ì¹¨ë¬µã€ì„ ì½ê³ 
+#<data>â€¢ã€Žë‹˜ì˜ â€¢ì¹¨ë¬µã€ì„ •ì½ê³ â€¢</data>
+#å¤§éŸ“æ°‘åœ‹ì€ æ°‘ä¸»å…±å’Œåœ‹ì´ë‹¤
+#<data>â€¢å¤§éŸ“æ°‘åœ‹ì€ â€¢æ°‘ä¸»â€¢å…±å’Œåœ‹ì´ë‹¤â€¢</data>
+# All the tests for ja@lw=phrase should also work in Korean.
+#る文字「ãã†ã ã€äº¬éƒ½ã€-> る•文字•「ãã†ã ã€â€¢äº¬éƒ½ã€â€¢
+<data>•\u308b•\u6587\u5b57•\u300c\u305d\u3046\u3060\u3001•\u4eac\u90fd\u300d•</data>
+#9月ã«æ±äº¬ã‹ã‚‰å‹é”ãŒéŠã³ã«æ¥ãŸ -> 9月ã«â€¢æ±äº¬ã‹ã‚‰â€¢å‹é”ãŒâ€¢éŠã³ã«â€¢æ¥ãŸâ€¢
+<data>•\uff19\u6708\u306b•\u6771\u4eac\u304b\u3089•\u53cb\u9054\u304c•\u904a\u3073\u306b•\u6765\u305f•</data>
+
+<locale ko>
+<line>
+#1948ë…„ 7ì›” 12ì¼ì— 제정ë˜ê³  8ì°¨ì— êµ­ë¯¼íˆ¬í‘œì— ì˜í•˜ì—¬ 개정한다.
+<data>•1948•년 •7•월 •12•ì¼â€¢ì— •제•정•ë˜â€¢ê³  •8â€¢ì°¨â€¢ì— â€¢êµ­â€¢ë¯¼â€¢íˆ¬â€¢í‘œâ€¢ì— â€¢ì˜â€¢í•˜â€¢ì—¬â€¢ê°œâ€¢ì •â€¢í•œâ€¢ë‹¤.•</data>
+#ëŒ€í•œë¯¼êµ­ì€ ë¯¼ì£¼ê³µí™”êµ­ì´ë‹¤.
+<data>â€¢ëŒ€â€¢í•œâ€¢ë¯¼â€¢êµ­â€¢ì€ â€¢ë¯¼â€¢ì£¼â€¢ê³µâ€¢í™”â€¢êµ­â€¢ì´â€¢ë‹¤.•</data>
+#서울ì—ì„œ 부산까지 London까지
+<data>•서•울•ì—•서 •부•산•까•지 •London•까•지•</data>
+#LTEê°€ 안 ë˜ë©´ WiFi를
+<data>•LTE•가 •안 •ë˜â€¢ë©´ •WiFi•를•</data>
+#<ë‹˜ì˜ ì¹¨ë¬µ>ì„ ì½ê³  ëŠë‚€ ì ì€?
+<data>•\u003câ€¢ë‹˜â€¢ì˜ â€¢ì¹¨â€¢ë¬µâ€¢\u003eâ€¢ì„ â€¢ì½â€¢ê³  •ëŠâ€¢ë‚€ •ì â€¢ì€?•</data>
+#"ë‹˜ì˜ ì¹¨ë¬µ"ì„ ì½ê³ 
+<data>•"ë‹˜â€¢ì˜ â€¢ì¹¨â€¢ë¬µ"ì„ â€¢ì½â€¢ê³ â€¢</data>
+#â€œë‹˜ì˜ ì¹¨ë¬µâ€ì„ ì½ê³ 
+<data>â€¢â€œë‹˜â€¢ì˜ â€¢ì¹¨â€¢ë¬µâ€ì„ •ì½â€¢ê³ â€¢</data>
+#ã€Žë‹˜ì˜ ì¹¨ë¬µã€ì„ ì½ê³ 
+<data>â€¢ã€Žë‹˜â€¢ì˜ â€¢ì¹¨â€¢ë¬µã€â€¢ì„ •ì½â€¢ê³ â€¢</data>
+#『foo barã€load
+<data>•『foo •barã€â€¢load•</data>
+#ã€Šë‹˜ì˜ ì¹¨ë¬µã€‹ì„ ì½ê³ 
+<data>â€¢ã€Šë‹˜â€¢ì˜ â€¢ì¹¨â€¢ë¬µã€‹â€¢ì„ â€¢ì½â€¢ê³ â€¢</data>
+
####################################################################################
#
# Test rule status values
@@ -2123,3 +2195,24 @@ Bangkok)•</data>
[y] [a] [b] [c] [d] {600};
</rules>
<data>•ab<100>c•d•ab<200>e•f•ab<300>e•g•abch<400>xab<500>c•d•yabcd<600></data>
+
+#
+# Examples for line breaking at orthographic syllable boundaries
+# From Unicode document L2/22-080R
+#
+
+<locale en>
+<line>
+<data>•\U00011F26•\U00011F02\U00011F2D•\U00011F26\U00011F42\U00011F26•\U00011F31\U00011F41•</data>
+<data>•\u1BD7\u1BEC•\u1BD2\u1BEA\u1BC9\u1BF3•\u1BC2\u1BE7\u1BC9\u1BF3•</data>
+<data>•\u1B18•\u1B27\u1B44\u200C\u1B2B\u1B38•\u1B31\u1B44\u1B1D\u1B36•</data>
+
+# Line breaking around quotation marks (LB 15a and LB 15b).
+<locale en>
+<line>
+<data>•Some •« basic » •quoting•</data>
+<data>•Some •»German« •quoting•</data>
+<data>•( « bracketed » ) •quoting•</data>
+<data>•« « Nesting » »•</data>
+<data>•« Complex »« chaining » •</data>
+<data>•« .618 »•</data> # Interaction with the ICU tailoring to break before such numbers. \ No newline at end of file
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/root.txt b/Build/source/libs/icu/icu-src/source/test/testdata/root.txt
index 98251a46d59..1d846c4956c 100644
--- a/Build/source/libs/icu/icu-src/source/test/testdata/root.txt
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/root.txt
@@ -13,8 +13,8 @@
root
{
Version { 44.0 }
- ExpectCLDRVersionAtLeast { 42.0 } // 'base' cldr version. Allow up to version =.=.* of this
- CurrentCLDRVersion { 42.0 } // Current CLDR version as of the test update. Warn if not an exact match.
+ ExpectCLDRVersionAtLeast { 44.1 } // 'base' cldr version. Allow up to version =.=.* of this
+ CurrentCLDRVersion { 44.1 } // Current CLDR version as of the test update. Warn if not an exact match.
ShortLanguage { xxx }
@@ -30,14 +30,14 @@ root
tagged_array_only_in_Root
{
- tag2 { ROOT2 }
- tag1 { ROOT1 }
- tag3 { ROOT3 }
- tag6 { ROOT6 }
- tag12 { ROOT12 }
- tag7 { ROOT7 }
- tag14 { ROOT14 }
- tag9 { ROOT9 }
+ tag2 { ROOT2 }
+ tag1 { ROOT1 }
+ tag3 { ROOT3 }
+ tag6 { ROOT6 }
+ tag12 { ROOT12 }
+ tag7 { ROOT7 }
+ tag14 { ROOT14 }
+ tag9 { ROOT9 }
}
string_in_Root_te_te_IN { ROOT }
@@ -54,9 +54,9 @@ root
tagged_array_in_Root_te_te_IN
{
- tag4 { ROOT4 }
- tag9 { ROOT9 }
- tag12 { ROOT12 }
+ tag4 { ROOT4 }
+ tag9 { ROOT9 }
+ tag12 { ROOT12 }
tag1 { ROOT1 }
}
@@ -74,10 +74,10 @@ root
tagged_array_in_Root_te
{
- tag12 { ROOT12 }
- tag1 { ROOT1 }
- tag7 { ROOT7 }
- tag3 { ROOT3 }
+ tag12 { ROOT12 }
+ tag1 { ROOT1 }
+ tag7 { ROOT7 }
+ tag3 { ROOT3 }
}
string_in_Root_te_IN { ROOT }
@@ -93,8 +93,8 @@ root
tagged_array_in_Root_te_IN
{
- tag13 { ROOT13 }
- tag8 { ROOT8 }
+ tag13 { ROOT13 }
+ tag8 { ROOT8 }
}
rootAliasClient:alias {"/LOCALE/rootAliasDestination"}
rootAliasDestination {"wrong"}
@@ -107,7 +107,7 @@ root
a2{"ar2"}
a3{"ar3"}
a4{"ar4"}
- }
+ }
tableT7996 {
b7996:alias {"/LOCALE/tableT7996/c7996"}
diff --git a/Build/source/libs/icu/icu-src/source/test/testdata/structLocale.txt b/Build/source/libs/icu/icu-src/source/test/testdata/structLocale.txt
index 52b0aae2d45..0f14f8bf6e4 100644
--- a/Build/source/libs/icu/icu-src/source/test/testdata/structLocale.txt
+++ b/Build/source/libs/icu/icu-src/source/test/testdata/structLocale.txt
@@ -98,7 +98,8 @@ structLocale:table(nofallback){
CM{""}
CN{""}
CO{""}
- CR{""}
+ CQ{""}
+ CR{""}
CS{""}
CU{""}
CV{""}
@@ -4147,51 +4148,51 @@ structLocale:table(nofallback){
2,
2,
}
- currencyName:intvector{
+ currencyName:intvector{
2,
2,
}
- day-format-except-narrow:intvector{
+ day-format-except-narrow:intvector{
2,
2,
}
- day-standalone-except-narrow:intvector{
+ day-standalone-except-narrow:intvector{
2,
2,
}
- era-abbr:intvector{
+ era-abbr:intvector{
2,
2,
}
- era-name:intvector{
+ era-name:intvector{
2,
2,
}
- keyValue:intvector{
+ keyValue:intvector{
2,
2,
}
- languages:intvector{
+ languages:intvector{
2,
2,
}
- month-format-except-narrow:intvector{
+ month-format-except-narrow:intvector{
2,
2,
}
- month-standalone-except-narrow:intvector{
+ month-standalone-except-narrow:intvector{
2,
2,
}
- number-spellout:intvector{
+ number-spellout:intvector{
2,
2,
}
- relative:intvector{
+ relative:intvector{
2,
2,
}
- script:intvector{
+ script:intvector{
2,
2,
}
@@ -5271,7 +5272,7 @@ structLocale:table(nofallback){
}
}
week{
- dn{""}
+ dn{""}
relative{
"-1"{""}
"0"{""}
@@ -5298,7 +5299,7 @@ structLocale:table(nofallback){
}
}
week-narrow{
- dn{""}
+ dn{""}
relative{
"-1"{""}
"0"{""}
@@ -5325,7 +5326,7 @@ structLocale:table(nofallback){
}
}
week-short{
- dn{""}
+ dn{""}
relative{
"-1"{""}
"0"{""}
@@ -5384,7 +5385,7 @@ structLocale:table(nofallback){
dn{""}
}
year{
- dn{""}
+ dn{""}
relative{
"-1"{""}
"-2"{""}
@@ -5411,7 +5412,7 @@ structLocale:table(nofallback){
}
}
year-narrow{
- dn{""}
+ dn{""}
relative{
"-1"{""}
"-2"{""}
@@ -5438,7 +5439,7 @@ structLocale:table(nofallback){
}
}
year-short{
- dn{""}
+ dn{""}
relative{
"-1"{""}
"-2"{""}
@@ -5566,6 +5567,7 @@ structLocale:table(nofallback){
bjn{""}
bkm{""}
bla{""}
+ blo{""}
bm{""}
bn{""}
bo{""}
@@ -5609,6 +5611,7 @@ structLocale:table(nofallback){
crh{""}
cs{""}
csb{""}
+ csw{""}
cu{""}
cv{""}
cy{""}
@@ -5789,6 +5792,7 @@ structLocale:table(nofallback){
kut{""}
kv{""}
kw{""}
+ kxv{""}
ky{""}
la{""}
lad{""}
@@ -6031,6 +6035,7 @@ structLocale:table(nofallback){
tn{""}
to{""}
tog{""}
+ tok{""}
tpi{""}
tr{""}
tru{""}
@@ -6062,6 +6067,7 @@ structLocale:table(nofallback){
vi{""}
vls{""}
vmf{""}
+ vmw{""}
vo{""}
vot{""}
vro{""}
@@ -6077,6 +6083,7 @@ structLocale:table(nofallback){
xal{""}
xh{""}
xmf{""}
+ xnr{""}
xog{""}
yao{""}
yap{""}
@@ -34529,6 +34536,12 @@ structLocale:table(nofallback){
d{""}
y{""}
}
+ GyMMMEEEEd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
GyMMMd{
G{""}
M{""}
@@ -35530,6 +35543,12 @@ structLocale:table(nofallback){
d{""}
y{""}
}
+ GyMMMEEEEd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
GyMMMd{
G{""}
M{""}
@@ -35921,6 +35940,12 @@ structLocale:table(nofallback){
d{""}
y{""}
}
+ GyMMMEEEEd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
GyMMMd{
G{""}
M{""}
@@ -37020,6 +37045,12 @@ structLocale:table(nofallback){
d{""}
y{""}
}
+ GyMMMEEEEd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
GyMMMd{
G{""}
M{""}
@@ -37416,6 +37447,12 @@ structLocale:table(nofallback){
d{""}
y{""}
}
+ GyMMMEEEEd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
GyMMMd{
G{""}
M{""}
@@ -37753,6 +37790,12 @@ structLocale:table(nofallback){
d{""}
y{""}
}
+ GyMMMEEEEd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
GyMMMd{
G{""}
M{""}
@@ -38140,6 +38183,12 @@ structLocale:table(nofallback){
d{""}
y{""}
}
+ GyMMMEEEEd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
GyMMMM{
G{""}
M{""}
@@ -38644,6 +38693,12 @@ structLocale:table(nofallback){
d{""}
y{""}
}
+ GyMMMEEEEd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
GyMMMM{
G{""}
M{""}
@@ -39068,6 +39123,12 @@ structLocale:table(nofallback){
d{""}
y{""}
}
+ GyMMMEEEEd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
GyMMMd{
G{""}
M{""}
@@ -39439,6 +39500,12 @@ structLocale:table(nofallback){
d{""}
y{""}
}
+ GyMMMEEEEd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
GyMMMd{
G{""}
M{""}
@@ -39853,6 +39920,12 @@ structLocale:table(nofallback){
d{""}
y{""}
}
+ GyMMMEEEEd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
GyMMMd{
G{""}
M{""}
@@ -40216,6 +40289,12 @@ structLocale:table(nofallback){
d{""}
y{""}
}
+ GyMMMEEEEd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
GyMMMd{
G{""}
M{""}
@@ -41287,6 +41366,12 @@ structLocale:table(nofallback){
d{""}
y{""}
}
+ GyMMMEEEEd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
GyMMMd{
G{""}
M{""}
@@ -41560,6 +41645,12 @@ structLocale:table(nofallback){
d{""}
y{""}
}
+ GyMMMEEEEd{
+ G{""}
+ M{""}
+ d{""}
+ y{""}
+ }
GyMMMd{
G{""}
M{""}
@@ -41892,6 +41983,11 @@ structLocale:table(nofallback){
surnameFirst-short-referring-formal{""}
surnameFirst-short-referring-informal{""}
}
+ nativeSpaceReplacement{""}
+ parameterDefault{
+ formality{""}
+ length{""}
+ }
}
transformNames{
BGN{""}
@@ -52730,4 +52826,3 @@ structLocale:table(nofallback){
}
}
}
-
diff --git a/Build/source/libs/icu/icu-src/source/test/thaitest/thaitest.cpp b/Build/source/libs/icu/icu-src/source/test/thaitest/thaitest.cpp
index ec35c03e555..f377b3aafd8 100644
--- a/Build/source/libs/icu/icu-src/source/test/thaitest/thaitest.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/thaitest/thaitest.cpp
@@ -40,7 +40,7 @@ public:
// The constructor:
// text - pointer to an array of UChars to iterate over
// count - the number of UChars in text
- SpaceBreakIterator(const UChar *text, int32_t count);
+ SpaceBreakIterator(const char16_t *text, int32_t count);
// the destructor
~SpaceBreakIterator();
@@ -61,8 +61,8 @@ private:
// The underlying BreakIterator
BreakIterator *fBreakIter;
- // address of the UChar array
- const UChar *fText;
+ // address of the char16_t array
+ const char16_t *fText;
// number of UChars in fText
int32_t fTextCount;
@@ -87,12 +87,12 @@ class ThaiWordbreakTest
{
public:
// The main constructor:
- // spaces - pointer to a UChar array for the text with spaces
+ // spaces - pointer to a char16_t array for the text with spaces
// spaceCount - the number of characters in the spaces array
- // noSpaces - pointer to a UChar array for the text without spaces
+ // noSpaces - pointer to a char16_t array for the text without spaces
// noSpaceCount - the number of characters in the noSpaces array
// verbose - report all breaks if true, otherwise just report differences
- ThaiWordbreakTest(const UChar *spaces, int32_t spaceCount, const UChar *noSpaces, int32_t noSpaceCount, UBool verbose);
+ ThaiWordbreakTest(const char16_t *spaces, int32_t spaceCount, const char16_t *noSpaces, int32_t noSpaceCount, UBool verbose);
~ThaiWordbreakTest();
// returns the number of breaks that are in the spaces array
@@ -109,28 +109,28 @@ public:
// reads the input Unicode text file:
// fileName - the path name of the file
// charCount - set to the number of UChars read from the file
- // returns - the address of the UChar array containing the characters
- static const UChar *readFile(char *fileName, int32_t &charCount);
+ // returns - the address of the char16_t array containing the characters
+ static const char16_t *readFile(char *fileName, int32_t &charCount);
- // removes spaces form the input UChar array:
- // spaces - pointer to the input UChar array
+ // removes spaces form the input char16_t array:
+ // spaces - pointer to the input char16_t array
// count - number of UChars in the spaces array
// nonSpaceCount - the number of UChars in the result array
- // returns - the address of the UChar array with spaces removed
- static const UChar *crunchSpaces(const UChar *spaces, int32_t count, int32_t &nonSpaceCount);
+ // returns - the address of the char16_t array with spaces removed
+ static const char16_t *crunchSpaces(const char16_t *spaces, int32_t count, int32_t &nonSpaceCount);
private:
// The no arg constructor - private so clients can't call it
ThaiWordbreakTest();
// This does the actual comparison:
- // spaces - the address of the UChar array for the text with spaces
+ // spaces - the address of the char16_t array for the text with spaces
// spaceCount - the number of UChars in the spaces array
- // noSpaces - the address of the UChar array for the text without spaces
+ // noSpaces - the address of the char16_t array for the text without spaces
// noSpaceCount - the number of UChars in the noSpaces array
// returns - true if all breaks match, false otherwise
- UBool compareWordBreaks(const UChar *spaces, int32_t spaceCount,
- const UChar *noSpaces, int32_t noSpaceCount);
+ UBool compareWordBreaks(const char16_t *spaces, int32_t spaceCount,
+ const char16_t *noSpaces, int32_t noSpaceCount);
// helper method to report a break in the spaces
// array that's not found in the noSpaces array
@@ -158,8 +158,8 @@ private:
/*
* The main constructor: it calls compareWordBreaks and reports any differences
*/
-ThaiWordbreakTest::ThaiWordbreakTest(const UChar *spaces, int32_t spaceCount,
- const UChar *noSpaces, int32_t noSpaceCount, UBool verbose)
+ThaiWordbreakTest::ThaiWordbreakTest(const char16_t *spaces, int32_t spaceCount,
+ const char16_t *noSpaces, int32_t noSpaceCount, UBool verbose)
: fBreaksNotFound(0), fInvalidBreaks(0), fWordCount(0), fVerbose(verbose)
{
compareWordBreaks(spaces, spaceCount, noSpaces, noSpaceCount);
@@ -213,8 +213,8 @@ inline int32_t ThaiWordbreakTest::getWordCount()
* and a word instance of a Thai BreakIterator to iterate over the text
* without spaces.
*/
-UBool ThaiWordbreakTest::compareWordBreaks(const UChar *spaces, int32_t spaceCount,
- const UChar *noSpaces, int32_t noSpaceCount)
+UBool ThaiWordbreakTest::compareWordBreaks(const char16_t *spaces, int32_t spaceCount,
+ const char16_t *noSpaces, int32_t noSpaceCount)
{
UBool result = true;
Locale thai("th");
@@ -304,17 +304,17 @@ void ThaiWordbreakTest::foundInvalidBreak(int32_t br)
* Read the text from a file. The text must start with a Unicode Byte
* Order Mark (BOM) so that we know what order to read the bytes in.
*/
-const UChar *ThaiWordbreakTest::readFile(char *fileName, int32_t &charCount)
+const char16_t *ThaiWordbreakTest::readFile(char *fileName, int32_t &charCount)
{
FILE *f;
int32_t fileSize;
- UChar *buffer;
+ char16_t *buffer;
char *bufferChars;
f = fopen(fileName, "rb");
- if( f == NULL ) {
+ if( f == nullptr ) {
fprintf(stderr,"Couldn't open %s reason: %s \n", fileName, strerror(errno));
return 0;
}
@@ -345,7 +345,7 @@ const UChar *ThaiWordbreakTest::readFile(char *fileName, int32_t &charCount)
delete[] bufferChars;
charCount = myText.length();
- buffer = new UChar[charCount];
+ buffer = new char16_t[charCount];
if(buffer == 0) {
fprintf(stderr,"Couldn't get memory for reading %s reason: %s \n", fileName, strerror(errno));
return 0;
@@ -353,19 +353,19 @@ const UChar *ThaiWordbreakTest::readFile(char *fileName, int32_t &charCount)
myText.extract(1, myText.length(), buffer);
charCount--; // skip the BOM
- buffer[charCount] = 0; // NULL terminate for easier reading in the debugger
+ buffer[charCount] = 0; // NUL terminate for easier reading in the debugger
return buffer;
}
/*
- * Remove spaces from the input UChar array.
+ * Remove spaces from the input char16_t array.
*
* We check explicitly for a Unicode code value of 0x0020
* because Unicode::isSpaceChar returns true for CR, LF, etc.
*
*/
-const UChar *ThaiWordbreakTest::crunchSpaces(const UChar *spaces, int32_t count, int32_t &nonSpaceCount)
+const char16_t *ThaiWordbreakTest::crunchSpaces(const char16_t *spaces, int32_t count, int32_t &nonSpaceCount)
{
int32_t i, out, spaceCount;
@@ -377,7 +377,7 @@ const UChar *ThaiWordbreakTest::crunchSpaces(const UChar *spaces, int32_t count,
}
nonSpaceCount = count - spaceCount;
- UChar *noSpaces = new UChar[nonSpaceCount];
+ char16_t *noSpaces = new char16_t[nonSpaceCount];
if (noSpaces == 0) {
fprintf(stderr, "Couldn't allocate memory for the space stripped text.\n");
@@ -396,7 +396,7 @@ const UChar *ThaiWordbreakTest::crunchSpaces(const UChar *spaces, int32_t count,
/*
* Generate a text file with spaces in it from a file without.
*/
-int generateFile(const UChar *chars, int32_t length) {
+int generateFile(const char16_t *chars, int32_t length) {
Locale root("");
UCharCharacterIterator *noSpaceIter = new UCharCharacterIterator(chars, length);
UErrorCode status = U_ZERO_ERROR;
@@ -406,7 +406,7 @@ int generateFile(const UChar *chars, int32_t length) {
breakIter->adoptText(noSpaceIter);
char outbuf[1024];
int32_t strlength;
- UChar bom = 0xFEFF;
+ char16_t bom = 0xFEFF;
printf("%s", u_strToUTF8(outbuf, sizeof(outbuf), &strlength, &bom, 1, &status));
int32_t prevbreak = 0;
@@ -464,7 +464,7 @@ int main(int argc, char **argv)
}
int32_t spaceCount, nonSpaceCount;
- const UChar *spaces, *noSpaces;
+ const char16_t *spaces, *noSpaces;
spaces = ThaiWordbreakTest::readFile(fileName, spaceCount);
@@ -495,7 +495,7 @@ int main(int argc, char **argv)
* The main constructor. Clear all the counts and construct a default
* word instance of a BreakIterator.
*/
-SpaceBreakIterator::SpaceBreakIterator(const UChar *text, int32_t count)
+SpaceBreakIterator::SpaceBreakIterator(const char16_t *text, int32_t count)
: fBreakIter(0), fText(text), fTextCount(count), fWordCount(0), fSpaceCount(0), fDone(false)
{
UCharCharacterIterator *iter = new UCharCharacterIterator(text, count);
diff --git a/Build/source/libs/icu/icu-src/source/tools/ctestfw/ctest.c b/Build/source/libs/icu/icu-src/source/tools/ctestfw/ctest.c
index 99f9789d3fb..f7bbb3ff023 100644
--- a/Build/source/libs/icu/icu-src/source/tools/ctestfw/ctest.c
+++ b/Build/source/libs/icu/icu-src/source/tools/ctestfw/ctest.c
@@ -688,7 +688,6 @@ static void vlog_err(const char *prefix, const char *pattern, va_list ap)
}
vfprintf(stdout, pattern, ap);
fflush(stdout);
- va_end(ap);
if((*pattern==0) || (pattern[strlen(pattern)-1]!='\n')) {
HANGING_OUTPUT=1;
} else {
@@ -730,7 +729,6 @@ vlog_info(const char *prefix, const char *pattern, va_list ap)
}
vfprintf(stdout, pattern, ap);
fflush(stdout);
- va_end(ap);
if((*pattern==0) || (pattern[strlen(pattern)-1]!='\n')) {
HANGING_OUTPUT=1;
} else {
@@ -779,7 +777,6 @@ static void vlog_verbose(const char *prefix, const char *pattern, va_list ap)
}
vfprintf(stdout, pattern, ap);
fflush(stdout);
- va_end(ap);
GLOBAL_PRINT_COUNT++;
if((*pattern==0) || (pattern[strlen(pattern)-1]!='\n')) {
HANGING_OUTPUT=1;
@@ -805,13 +802,16 @@ log_err(const char* pattern, ...)
}
va_start(ap, pattern);
vlog_err(NULL, pattern, ap);
+ va_end(ap);
}
UBool T_CTEST_EXPORT2
log_knownIssue(const char *ticket, const char *pattern, ...) {
va_list ap;
va_start(ap, pattern);
- return vlog_knownIssue(ticket, pattern, ap);
+ UBool result = vlog_knownIssue(ticket, pattern, ap);
+ va_end(ap);
+ return result;
}
void T_CTEST_EXPORT2
@@ -845,6 +845,7 @@ log_err_status(UErrorCode status, const char* pattern, ...)
}
vlog_err(NULL, pattern, ap); /* no need for prefix in default case */
}
+ va_end(ap);
}
void T_CTEST_EXPORT2
@@ -854,6 +855,7 @@ log_info(const char* pattern, ...)
va_start(ap, pattern);
vlog_info(NULL, pattern, ap);
+ va_end(ap);
}
void T_CTEST_EXPORT2
@@ -863,6 +865,7 @@ log_verbose(const char* pattern, ...)
va_start(ap, pattern);
vlog_verbose(NULL, pattern, ap);
+ va_end(ap);
}
@@ -884,6 +887,7 @@ log_data_err(const char* pattern, ...)
} else {
vlog_info("[DATA] ", pattern, ap);
}
+ va_end(ap);
}
diff --git a/Build/source/libs/icu/icu-src/source/tools/ctestfw/datamap.cpp b/Build/source/libs/icu/icu-src/source/tools/ctestfw/datamap.cpp
index d0ab0742a10..0dd86f4f5b3 100644
--- a/Build/source/libs/icu/icu-src/source/tools/ctestfw/datamap.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/ctestfw/datamap.cpp
@@ -21,7 +21,7 @@ int32_t
DataMap::utoi(const UnicodeString &s) const
{
char ch[256];
- const UChar *u = toUCharPtr(s.getBuffer());
+ const char16_t *u = toUCharPtr(s.getBuffer());
int32_t len = s.length();
u_UCharsToChars(u, ch, len);
ch[len] = 0; /* include terminating \0 */
@@ -72,7 +72,7 @@ RBDataMap::RBDataMap(UResourceBundle *headers, UResourceBundle *data, UErrorCode
void RBDataMap::init(UResourceBundle *data, UErrorCode &status) {
int32_t i = 0;
fData->removeAll();
- UResourceBundle *t = NULL;
+ UResourceBundle *t = nullptr;
for(i = 0; i < ures_getSize(data); i++) {
t = ures_getByIndex(data, i, t, &status);
fData->put(UnicodeString(ures_getKey(t), -1, US_INV), new ResourceBundle(t, status), status);
@@ -84,8 +84,8 @@ void RBDataMap::init(UResourceBundle *headers, UResourceBundle *data, UErrorCode
{
int32_t i = 0;
fData->removeAll();
- UResourceBundle *t = NULL;
- const UChar *key = NULL;
+ UResourceBundle *t = nullptr;
+ const char16_t *key = nullptr;
int32_t keyLen = 0;
if(ures_getSize(headers) == ures_getSize(data)) {
for(i = 0; i < ures_getSize(data); i++) {
@@ -103,16 +103,16 @@ void RBDataMap::init(UResourceBundle *headers, UResourceBundle *data, UErrorCode
const ResourceBundle *RBDataMap::getItem(const char* key, UErrorCode &status) const
{
if(U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
UnicodeString hashKey(key, -1, US_INV);
const ResourceBundle *r = (ResourceBundle *)fData->get(hashKey);
- if(r != NULL) {
+ if(r != nullptr) {
return r;
} else {
status = U_MISSING_RESOURCE_ERROR;
- return NULL;
+ return nullptr;
}
}
@@ -154,7 +154,7 @@ RBDataMap::getIntVector(int32_t &length, const char *key, UErrorCode &status) co
if(U_SUCCESS(status)) {
return r->getIntVector(length, status);
} else {
- return NULL;
+ return nullptr;
}
}
@@ -164,7 +164,7 @@ RBDataMap::getBinary(int32_t &length, const char *key, UErrorCode &status) const
if(U_SUCCESS(status)) {
return r->getBinary(length, status);
} else {
- return NULL;
+ return nullptr;
}
}
@@ -186,7 +186,7 @@ const UnicodeString* RBDataMap::getStringArray(int32_t& count, const char* key,
count = r->getSize();
if(count <= 0) {
- return NULL;
+ return nullptr;
}
UnicodeString *result = new UnicodeString[count];
@@ -195,7 +195,7 @@ const UnicodeString* RBDataMap::getStringArray(int32_t& count, const char* key,
}
return result;
} else {
- return NULL;
+ return nullptr;
}
}
@@ -207,7 +207,7 @@ const int32_t* RBDataMap::getIntArray(int32_t& count, const char* key, UErrorCod
count = r->getSize();
if(count <= 0) {
- return NULL;
+ return nullptr;
}
int32_t *result = new int32_t[count];
@@ -218,7 +218,7 @@ const int32_t* RBDataMap::getIntArray(int32_t& count, const char* key, UErrorCod
}
return result;
} else {
- return NULL;
+ return nullptr;
}
}
diff --git a/Build/source/libs/icu/icu-src/source/tools/ctestfw/testdata.cpp b/Build/source/libs/icu/icu-src/source/tools/ctestfw/testdata.cpp
index fe894352616..2fb93381dc0 100644
--- a/Build/source/libs/icu/icu-src/source/tools/ctestfw/testdata.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/ctestfw/testdata.cpp
@@ -13,9 +13,9 @@
TestData::TestData(const char* testName)
: name(testName),
-fInfo(NULL),
-fCurrSettings(NULL),
-fCurrCase(NULL),
+fInfo(nullptr),
+fCurrSettings(nullptr),
+fCurrCase(nullptr),
fSettingsSize(0),
fCasesSize(0),
fCurrentSettings(0),
@@ -25,13 +25,13 @@ fCurrentCase(0)
}
TestData::~TestData() {
- if(fInfo != NULL) {
+ if(fInfo != nullptr) {
delete fInfo;
}
- if(fCurrSettings != NULL) {
+ if(fCurrSettings != nullptr) {
delete fCurrSettings;
}
- if(fCurrCase != NULL) {
+ if(fCurrCase != nullptr) {
delete fCurrCase;
}
}
@@ -45,10 +45,10 @@ const char * TestData::getName() const
RBTestData::RBTestData(const char* testName)
: TestData(testName),
-fData(NULL),
-fHeaders(NULL),
-fSettings(NULL),
-fCases(NULL)
+fData(nullptr),
+fHeaders(nullptr),
+fSettings(nullptr),
+fCases(nullptr)
{
}
@@ -56,26 +56,26 @@ RBTestData::RBTestData(UResourceBundle *data, UResourceBundle *headers, UErrorCo
: TestData(ures_getKey(data)),
fData(data),
fHeaders(headers),
-fSettings(NULL),
-fCases(NULL)
+fSettings(nullptr),
+fCases(nullptr)
{
UErrorCode intStatus = U_ZERO_ERROR;
- UResourceBundle *currHeaders = ures_getByKey(data, "Headers", NULL, &intStatus);
+ UResourceBundle *currHeaders = ures_getByKey(data, "Headers", nullptr, &intStatus);
if(intStatus == U_ZERO_ERROR) {
ures_close(fHeaders);
fHeaders = currHeaders;
} else {
intStatus = U_ZERO_ERROR;
}
- fSettings = ures_getByKey(data, "Settings", NULL, &intStatus);
+ fSettings = ures_getByKey(data, "Settings", nullptr, &intStatus);
fSettingsSize = ures_getSize(fSettings);
- UResourceBundle *info = ures_getByKey(data, "Info", NULL, &intStatus);
+ UResourceBundle *info = ures_getByKey(data, "Info", nullptr, &intStatus);
if(U_SUCCESS(intStatus)) {
fInfo = new RBDataMap(info, status);
} else {
intStatus = U_ZERO_ERROR;
}
- fCases = ures_getByKey(data, "Cases", NULL, &status);
+ fCases = ures_getByKey(data, "Cases", nullptr, &status);
fCasesSize = ures_getSize(fCases);
ures_close(info);
@@ -96,7 +96,7 @@ UBool RBTestData::getInfo(const DataMap *& info, UErrorCode &/*status*/) const
info = fInfo;
return true;
} else {
- info = NULL;
+ info = nullptr;
return false;
}
}
@@ -104,11 +104,11 @@ UBool RBTestData::getInfo(const DataMap *& info, UErrorCode &/*status*/) const
UBool RBTestData::nextSettings(const DataMap *& settings, UErrorCode &status)
{
UErrorCode intStatus = U_ZERO_ERROR;
- UResourceBundle *data = ures_getByIndex(fSettings, fCurrentSettings++, NULL, &intStatus);
+ UResourceBundle *data = ures_getByIndex(fSettings, fCurrentSettings++, nullptr, &intStatus);
if(U_SUCCESS(intStatus)) {
// reset the cases iterator
fCurrentCase = 0;
- if(fCurrSettings == NULL) {
+ if(fCurrSettings == nullptr) {
fCurrSettings = new RBDataMap(data, status);
} else {
((RBDataMap *)fCurrSettings)->init(data, status);
@@ -117,7 +117,7 @@ UBool RBTestData::nextSettings(const DataMap *& settings, UErrorCode &status)
settings = fCurrSettings;
return true;
} else {
- settings = NULL;
+ settings = nullptr;
return false;
}
}
@@ -125,9 +125,9 @@ UBool RBTestData::nextSettings(const DataMap *& settings, UErrorCode &status)
UBool RBTestData::nextCase(const DataMap *& nextCase, UErrorCode &status)
{
UErrorCode intStatus = U_ZERO_ERROR;
- UResourceBundle *currCase = ures_getByIndex(fCases, fCurrentCase++, NULL, &intStatus);
+ UResourceBundle *currCase = ures_getByIndex(fCases, fCurrentCase++, nullptr, &intStatus);
if(U_SUCCESS(intStatus)) {
- if(fCurrCase == NULL) {
+ if(fCurrCase == nullptr) {
fCurrCase = new RBDataMap(fHeaders, currCase, status);
} else {
((RBDataMap *)fCurrCase)->init(fHeaders, currCase, status);
@@ -136,7 +136,7 @@ UBool RBTestData::nextCase(const DataMap *& nextCase, UErrorCode &status)
nextCase = fCurrCase;
return true;
} else {
- nextCase = NULL;
+ nextCase = nullptr;
return false;
}
}
diff --git a/Build/source/libs/icu/icu-src/source/tools/ctestfw/tstdtmod.cpp b/Build/source/libs/icu/icu-src/source/tools/ctestfw/tstdtmod.cpp
index 8808b10ba13..3ebe22466ec 100644
--- a/Build/source/libs/icu/icu-src/source/tools/ctestfw/tstdtmod.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/ctestfw/tstdtmod.cpp
@@ -41,7 +41,7 @@ UBool IcuTestErrorCode::errIfFailureAndReset(const char *fmt, ...) {
char buffer[4000];
va_list ap;
va_start(ap, fmt);
- vsprintf(buffer, fmt, ap);
+ vsnprintf(buffer, sizeof(buffer), fmt, ap);
va_end(ap);
errlog(false, u"expected success", buffer);
reset();
@@ -68,7 +68,7 @@ UBool IcuTestErrorCode::errDataIfFailureAndReset(const char *fmt, ...) {
char buffer[4000];
va_list ap;
va_start(ap, fmt);
- vsprintf(buffer, fmt, ap);
+ vsnprintf(buffer, sizeof(buffer), fmt, ap);
va_end(ap);
errlog(true, u"data: expected success", buffer);
reset();
@@ -93,7 +93,7 @@ UBool IcuTestErrorCode::expectErrorAndReset(UErrorCode expectedError, const char
char buffer[4000];
va_list ap;
va_start(ap, fmt);
- vsprintf(buffer, fmt, ap);
+ vsnprintf(buffer, sizeof(buffer), fmt, ap);
va_end(ap);
errlog(false, UnicodeString(u"expected: ") + u_errorName(expectedError), buffer);
}
@@ -137,9 +137,9 @@ void IcuTestErrorCode::errlog(UBool dataErr, const UnicodeString& mainMessage, c
TestDataModule *TestDataModule::getTestDataModule(const char* name, TestLog& log, UErrorCode &status)
{
if(U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
- TestDataModule *result = NULL;
+ TestDataModule *result = nullptr;
// TODO: probe for resource bundle and then for XML.
// According to that, construct an appropriate driver object
@@ -149,19 +149,19 @@ TestDataModule *TestDataModule::getTestDataModule(const char* name, TestLog& log
return result;
} else {
delete result;
- return NULL;
+ return nullptr;
}
}
TestDataModule::TestDataModule(const char* name, TestLog& log, UErrorCode& /*status*/)
: testName(name),
-fInfo(NULL),
+fInfo(nullptr),
fLog(log)
{
}
TestDataModule::~TestDataModule() {
- if(fInfo != NULL) {
+ if(fInfo != nullptr) {
delete fInfo;
}
}
@@ -183,18 +183,18 @@ RBTestDataModule::~RBTestDataModule()
RBTestDataModule::RBTestDataModule(const char* name, TestLog& log, UErrorCode& status)
: TestDataModule(name, log, status),
- fModuleBundle(NULL),
- fTestData(NULL),
- fInfoRB(NULL),
- tdpath(NULL)
+ fModuleBundle(nullptr),
+ fTestData(nullptr),
+ fInfoRB(nullptr),
+ tdpath(nullptr)
{
fNumberOfTests = 0;
fDataTestValid = true;
fModuleBundle = getTestBundle(name, status);
if(fDataTestValid) {
- fTestData = ures_getByKey(fModuleBundle, "TestData", NULL, &status);
+ fTestData = ures_getByKey(fModuleBundle, "TestData", nullptr, &status);
fNumberOfTests = ures_getSize(fTestData);
- fInfoRB = ures_getByKey(fModuleBundle, "Info", NULL, &status);
+ fInfoRB = ures_getByKey(fModuleBundle, "Info", nullptr, &status);
if(status != U_ZERO_ERROR) {
log.errln(UNICODE_STRING_SIMPLE("Unable to initialize test data - missing mandatory description resources!"));
fDataTestValid = false;
@@ -216,13 +216,13 @@ UBool RBTestDataModule::getInfo(const DataMap *& info, UErrorCode &/*status*/) c
TestData* RBTestDataModule::createTestData(int32_t index, UErrorCode &status) const
{
- TestData *result = NULL;
+ TestData *result = nullptr;
UErrorCode intStatus = U_ZERO_ERROR;
if(fDataTestValid == true) {
// Both of these resources get adopted by a TestData object.
- UResourceBundle *DataFillIn = ures_getByIndex(fTestData, index, NULL, &status);
- UResourceBundle *headers = ures_getByKey(fInfoRB, "Headers", NULL, &intStatus);
+ UResourceBundle *DataFillIn = ures_getByIndex(fTestData, index, nullptr, &status);
+ UResourceBundle *headers = ures_getByKey(fInfoRB, "Headers", nullptr, &intStatus);
if(U_SUCCESS(status)) {
result = new RBTestData(DataFillIn, headers, status);
@@ -239,18 +239,18 @@ TestData* RBTestDataModule::createTestData(int32_t index, UErrorCode &status) co
} else {
status = U_MISSING_RESOURCE_ERROR;
}
- return NULL;
+ return nullptr;
}
TestData* RBTestDataModule::createTestData(const char* name, UErrorCode &status) const
{
- TestData *result = NULL;
+ TestData *result = nullptr;
UErrorCode intStatus = U_ZERO_ERROR;
if(fDataTestValid == true) {
// Both of these resources get adopted by a TestData object.
- UResourceBundle *DataFillIn = ures_getByKey(fTestData, name, NULL, &status);
- UResourceBundle *headers = ures_getByKey(fInfoRB, "Headers", NULL, &intStatus);
+ UResourceBundle *DataFillIn = ures_getByKey(fTestData, name, nullptr, &status);
+ UResourceBundle *headers = ures_getByKey(fInfoRB, "Headers", nullptr, &intStatus);
if(U_SUCCESS(status)) {
result = new RBTestData(DataFillIn, headers, status);
@@ -266,7 +266,7 @@ TestData* RBTestDataModule::createTestData(const char* name, UErrorCode &status)
} else {
status = U_MISSING_RESOURCE_ERROR;
}
- return NULL;
+ return nullptr;
}
@@ -276,9 +276,9 @@ UResourceBundle*
RBTestDataModule::getTestBundle(const char* bundleName, UErrorCode &status)
{
if(U_SUCCESS(status)) {
- UResourceBundle *testBundle = NULL;
+ UResourceBundle *testBundle = nullptr;
const char* icu_data = fLog.getTestDataPath(status);
- if (testBundle == NULL) {
+ if (testBundle == nullptr) {
testBundle = ures_openDirect(icu_data, bundleName, &status);
if (status != U_ZERO_ERROR) {
fLog.dataerrln(UNICODE_STRING_SIMPLE("Could not load test data from resourcebundle: ") + UnicodeString(bundleName, -1, US_INV));
@@ -287,7 +287,7 @@ RBTestDataModule::getTestBundle(const char* bundleName, UErrorCode &status)
}
return testBundle;
} else {
- return NULL;
+ return nullptr;
}
}
diff --git a/Build/source/libs/icu/icu-src/source/tools/ctestfw/unicode/testdata.h b/Build/source/libs/icu/icu-src/source/tools/ctestfw/unicode/testdata.h
index ab0bc955866..77db9ceaf11 100644
--- a/Build/source/libs/icu/icu-src/source/tools/ctestfw/unicode/testdata.h
+++ b/Build/source/libs/icu/icu-src/source/tools/ctestfw/unicode/testdata.h
@@ -27,8 +27,8 @@
* the TestDataModule info section. The default headers will be overridden
* by per-test headers.
* Example:
- * DataMap *settings = NULL;
- * DataMap *cases = NULL;
+ * DataMap *settings = nullptr;
+ * DataMap *cases = nullptr;
* while(nextSettings(settings, status)) {
* // set settings for the subtest
* while(nextCase(cases, status) {
@@ -59,13 +59,13 @@ public:
/** Get a pointer to an object owned DataMap that contains more information on this
* TestData object.
* Usual fields is "Description".
- * @param info pass in a const DataMap pointer. If no info, it will be set to NULL
+ * @param info pass in a const DataMap pointer. If no info, it will be set to nullptr
*/
virtual UBool getInfo(const DataMap *& info, UErrorCode &status) const = 0;
/** Gets the next set of settings for the test. Resets the cases iterator.
* DataMap is owned by the object and should not be deleted.
- * @param settings a DataMap pointer provided by the user. Will be NULL if
+ * @param settings a DataMap pointer provided by the user. Will be nullptr if
* no more settings are available.
* @param status for reporting unexpected errors.
* @return A boolean, true if there are settings, false if there is no more
@@ -75,7 +75,7 @@ public:
/** Gets the next test case.
* DataMap is owned by the object and should not be deleted.
- * @param data a DataMap pointer provided by the user. Will be NULL if
+ * @param data a DataMap pointer provided by the user. Will be nullptr if
* no more cases are available.
* @param status for reporting unexpected errors.
* @return A boolean, true if there are cases, false if there is no more
diff --git a/Build/source/libs/icu/icu-src/source/tools/ctestfw/unicode/tstdtmod.h b/Build/source/libs/icu/icu-src/source/tools/ctestfw/unicode/tstdtmod.h
index 683a26c3398..fb2f19631df 100644
--- a/Build/source/libs/icu/icu-src/source/tools/ctestfw/unicode/tstdtmod.h
+++ b/Build/source/libs/icu/icu-src/source/tools/ctestfw/unicode/tstdtmod.h
@@ -64,7 +64,7 @@ public:
* Usual fields are "Description", "LongDescription", "Settings". Also, if containing a
* field "Headers" these will be used as the default headers, so that you don't have to
* to specify per test headers.
- * @param info pass in a const DataMap pointer. If no info, it will be set to NULL
+ * @param info pass in a const DataMap pointer. If no info, it will be set to nullptr
*/
virtual UBool getInfo(const DataMap *& info, UErrorCode &status) const = 0;
diff --git a/Build/source/libs/icu/icu-src/source/tools/ctestfw/unicode/uperf.h b/Build/source/libs/icu/icu-src/source/tools/ctestfw/unicode/uperf.h
index ea9ec1f255b..e578c466945 100644
--- a/Build/source/libs/icu/icu-src/source/tools/ctestfw/unicode/uperf.h
+++ b/Build/source/libs/icu/icu-src/source/tools/ctestfw/unicode/uperf.h
@@ -37,7 +37,7 @@ U_NAMESPACE_USE
//| name = "";
//| break;
//| }
-//| return NULL;
+//| return nullptr;
//| }
#define TESTCASE(id,test) \
case id: \
@@ -57,7 +57,7 @@ U_NAMESPACE_USE
//| TESTCASE_AUTO(TestSomethingElse);
//| TESTCASE_AUTO(TestAnotherThing);
//| TESTCASE_AUTO_END;
-//| return NULL;
+//| return nullptr;
//| }
#define TESTCASE_AUTO_BEGIN \
for(;;) { \
@@ -133,9 +133,9 @@ public:
class T_CTEST_EXPORT_API UPerfTest {
public:
UBool run();
- UBool runTest( char* name = NULL, char* par = NULL ); // not to be overridden
+ UBool runTest( char* name = nullptr, char* par = nullptr ); // not to be overridden
- virtual void usage( void ) ;
+ virtual void usage() ;
virtual ~UPerfTest();
@@ -145,7 +145,7 @@ public:
ULine* getLines(UErrorCode& status);
- const UChar* getBuffer(int32_t& len,UErrorCode& status);
+ const char16_t* getBuffer(int32_t& len,UErrorCode& status);
protected:
UPerfTest(int32_t argc, const char* argv[], UErrorCode& status);
@@ -158,7 +158,7 @@ protected:
void init(UOption addOptions[], int32_t addOptionsCount,
UErrorCode& status);
- virtual UPerfFunction* runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ); // override !
+ virtual UPerfFunction* runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = nullptr ); // override !
virtual UBool runTestLoop( char* testname, char* par );
@@ -177,7 +177,7 @@ protected:
ULine* lines;
int32_t numLines;
UBool line_mode;
- UChar* buffer;
+ char16_t* buffer;
int32_t bufferLen;
UBool verbose;
UBool bulk_mode;
diff --git a/Build/source/libs/icu/icu-src/source/tools/ctestfw/unicode/utimer.h b/Build/source/libs/icu/icu-src/source/tools/ctestfw/unicode/utimer.h
index e12485d9d37..10f80833cba 100644
--- a/Build/source/libs/icu/icu-src/source/tools/ctestfw/unicode/utimer.h
+++ b/Build/source/libs/icu/icu-src/source/tools/ctestfw/unicode/utimer.h
@@ -33,9 +33,9 @@
* <code>
* typedef Params Params;
* struct Params{
- * UChar* target;
+ * char16_t* target;
* int32_t targetLen;
- * const UChar* source;
+ * const char16_t* source;
* int32_t sourceLen;
* UNormalizationMode mode;
* }
@@ -68,13 +68,13 @@
* int line;
* int loops;
* UErrorCode error = U_ZERO_ERROR;
- * UChar* dest=NULL;
+ * char16_t* dest=nullptr;
* int32_t destCapacity=0;
* int len =-1;
* double elapsedTime = 0;
* int retVal=0;
*
- * UChar arr[5000];
+ * char16_t arr[5000];
* dest=arr;
* destCapacity = 5000;
* UTimer start;
@@ -125,7 +125,7 @@
* iii) Let a higher level function do the calculation of confidence levels etc.
* Example:
* <code>
- * void perf(UTimer* timer, UChar* source, int32_t sourceLen, UChar* target, int32_t targetLen, int32_t loopCount,UNormalizationMode mode, UErrorCode* error){
+ * void perf(UTimer* timer, char16_t* source, int32_t sourceLen, char16_t* target, int32_t targetLen, int32_t loopCount,UNormalizationMode mode, UErrorCode* error){
* int32_t loops;
* for (loops=0; loops<loopCount; loops++) {
* unorm_normalize(source,sourceLen,target, targetLen,mode,error);
diff --git a/Build/source/libs/icu/icu-src/source/tools/ctestfw/uperf.cpp b/Build/source/libs/icu/icu-src/source/tools/ctestfw/uperf.cpp
index 45811ddd030..9e92b7714bd 100644
--- a/Build/source/libs/icu/icu-src/source/tools/ctestfw/uperf.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/ctestfw/uperf.cpp
@@ -22,7 +22,7 @@ UPerfFunction::~UPerfFunction() {}
static const char delim = '/';
static int32_t execCount = 0;
-UPerfTest* UPerfTest::gTest = NULL;
+UPerfTest* UPerfTest::gTest = nullptr;
static const int MAXLINES = 40000;
const char UPerfTest::gUsageString[] =
"Usage: %s [OPTIONS] [FILES]\n"
@@ -81,16 +81,16 @@ static UOption options[OPTIONS_COUNT+20]={
};
UPerfTest::UPerfTest(int32_t argc, const char* argv[], UErrorCode& status)
- : _argc(argc), _argv(argv), _addUsage(NULL),
- ucharBuf(NULL), encoding(""),
+ : _argc(argc), _argv(argv), _addUsage(nullptr),
+ ucharBuf(nullptr), encoding(""),
uselen(false),
- fileName(NULL), sourceDir("."),
- lines(NULL), numLines(0), line_mode(true),
- buffer(NULL), bufferLen(0),
+ fileName(nullptr), sourceDir("."),
+ lines(nullptr), numLines(0), line_mode(true),
+ buffer(nullptr), bufferLen(0),
verbose(false), bulk_mode(false),
passes(1), iterations(0), time(0),
- locale(NULL) {
- init(NULL, 0, status);
+ locale(nullptr) {
+ init(nullptr, 0, status);
}
UPerfTest::UPerfTest(int32_t argc, const char* argv[],
@@ -98,14 +98,14 @@ UPerfTest::UPerfTest(int32_t argc, const char* argv[],
const char *addUsage,
UErrorCode& status)
: _argc(argc), _argv(argv), _addUsage(addUsage),
- ucharBuf(NULL), encoding(""),
+ ucharBuf(nullptr), encoding(""),
uselen(false),
- fileName(NULL), sourceDir("."),
- lines(NULL), numLines(0), line_mode(true),
- buffer(NULL), bufferLen(0),
+ fileName(nullptr), sourceDir("."),
+ lines(nullptr), numLines(0), line_mode(true),
+ buffer(nullptr), bufferLen(0),
verbose(false), bulk_mode(false),
passes(1), iterations(0), time(0),
- locale(NULL) {
+ locale(nullptr) {
init(addOptions, addOptionsCount, status);
}
@@ -114,7 +114,7 @@ void UPerfTest::init(UOption addOptions[], int32_t addOptionsCount,
//initialize the argument list
U_MAIN_INIT_ARGS(_argc, _argv);
- resolvedFileName = NULL;
+ resolvedFileName = nullptr;
// add specific options
int32_t optionsCount = OPTIONS_COUNT;
@@ -187,11 +187,11 @@ void UPerfTest::init(UOption addOptions[], int32_t addOptionsCount,
}
int32_t len = 0;
- if(fileName!=NULL){
+ if(fileName!=nullptr){
//pre-flight
- ucbuf_resolveFileName(sourceDir, fileName, NULL, &len, &status);
+ ucbuf_resolveFileName(sourceDir, fileName, nullptr, &len, &status);
resolvedFileName = (char*) uprv_malloc(len);
- if(resolvedFileName==NULL){
+ if(resolvedFileName==nullptr){
status= U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -210,22 +210,22 @@ void UPerfTest::init(UOption addOptions[], int32_t addOptionsCount,
ULine* UPerfTest::getLines(UErrorCode& status){
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
- if (lines != NULL) {
+ if (lines != nullptr) {
return lines; // don't do it again
}
lines = new ULine[MAXLINES];
int maxLines = MAXLINES;
numLines=0;
- const UChar* line=NULL;
+ const char16_t* line=nullptr;
int32_t len =0;
for (;;) {
line = ucbuf_readline(ucharBuf,&len,&status);
- if(line == NULL || U_FAILURE(status)){
+ if(line == nullptr || U_FAILURE(status)){
break;
}
- lines[numLines].name = new UChar[len];
+ lines[numLines].name = new char16_t[len];
lines[numLines].len = len;
memcpy(lines[numLines].name, line, len * U_SIZEOF_UCHAR);
@@ -234,11 +234,11 @@ ULine* UPerfTest::getLines(UErrorCode& status){
if (numLines >= maxLines) {
maxLines += MAXLINES;
ULine *newLines = new ULine[maxLines];
- if(newLines == NULL) {
+ if(newLines == nullptr) {
fprintf(stderr, "Out of memory reading line %d.\n", (int)numLines);
status= U_MEMORY_ALLOCATION_ERROR;
delete []lines;
- return NULL;
+ return nullptr;
}
memcpy(newLines, lines, numLines*sizeof(ULine));
@@ -248,12 +248,12 @@ ULine* UPerfTest::getLines(UErrorCode& status){
}
return lines;
}
-const UChar* UPerfTest::getBuffer(int32_t& len, UErrorCode& status){
+const char16_t* UPerfTest::getBuffer(int32_t& len, UErrorCode& status){
if (U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
len = ucbuf_size(ucharBuf);
- buffer = (UChar*) uprv_malloc(U_SIZEOF_UCHAR * (len+1));
+ buffer = (char16_t*) uprv_malloc(U_SIZEOF_UCHAR * (len+1));
u_strncpy(buffer,ucbuf_getBuffer(ucharBuf,&bufferLen,&status),len);
buffer[len]=0;
len = bufferLen;
@@ -290,7 +290,7 @@ UBool UPerfTest::run(){
}
UBool UPerfTest::runTest(char* name, char* par ){
UBool rval;
- char* pos = NULL;
+ char* pos = nullptr;
if (name)
pos = strchr( name, delim ); // check if name contains path (by looking for '/')
@@ -298,11 +298,11 @@ UBool UPerfTest::runTest(char* name, char* par ){
path = pos+1; // store subpath for calling subtest
*pos = 0; // split into two strings
}else{
- path = NULL;
+ path = nullptr;
}
if (!name || (name[0] == 0) || (strcmp(name, "*") == 0)) {
- rval = runTestLoop( NULL, NULL );
+ rval = runTestLoop( nullptr, nullptr );
}else if (strcmp( name, "LIST" ) == 0) {
this->usage();
@@ -335,7 +335,7 @@ UPerfFunction* UPerfTest::runIndexedTest( int32_t /*index*/, UBool /*exec*/, con
}
*/
fprintf(stderr,"*** runIndexedTest needs to be overridden! ***");
- return NULL;
+ return nullptr;
}
@@ -365,8 +365,8 @@ UBool UPerfTest::runTestLoop( char* testname, char* par )
UPerfFunction* testFunction = this->runIndexedTest( index, true, name, par );
execCount++;
rval=true;
- if(testFunction==NULL){
- fprintf(stderr,"%s function returned NULL", name);
+ if(testFunction==nullptr){
+ fprintf(stderr,"%s function returned nullptr", name);
return false;
}
ops = testFunction->getOperationsPerIteration();
@@ -475,10 +475,10 @@ UBool UPerfTest::runTestLoop( char* testname, char* par )
/**
* Print a usage message for this test class.
*/
-void UPerfTest::usage( void )
+void UPerfTest::usage()
{
puts(gUsageString);
- if (_addUsage != NULL) {
+ if (_addUsage != nullptr) {
puts(_addUsage);
}
@@ -488,7 +488,7 @@ void UPerfTest::usage( void )
fprintf(stdout,"-----------\n");
int32_t index = 0;
- const char* name = NULL;
+ const char* name = nullptr;
do{
this->runIndexedTest( index, false, name );
if (!name)
@@ -518,13 +518,13 @@ UBool UPerfTest::callTest( UPerfTest& testToBeCalled, char* par )
}
UPerfTest::~UPerfTest(){
- if(lines!=NULL){
+ if(lines!=nullptr){
delete[] lines;
}
- if(buffer!=NULL){
+ if(buffer!=nullptr){
uprv_free(buffer);
}
- if(resolvedFileName!=NULL){
+ if(resolvedFileName!=nullptr){
uprv_free(resolvedFileName);
}
ucbuf_close(ucharBuf);
diff --git a/Build/source/libs/icu/icu-src/source/tools/escapesrc/escapesrc.cpp b/Build/source/libs/icu/icu-src/source/tools/escapesrc/escapesrc.cpp
index ce14022bfc1..10ac3d1aef0 100644
--- a/Build/source/libs/icu/icu-src/source/tools/escapesrc/escapesrc.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/escapesrc/escapesrc.cpp
@@ -113,7 +113,7 @@ inline const char *skipws(const char *p, const char *e) {
void appendByte(std::string &outstr,
uint8_t byte) {
char tmp2[5];
- sprintf(tmp2, "\\x%02X", 0xFF & (int)(byte));
+ snprintf(tmp2, sizeof(tmp2), "\\x%02X", 0xFF & (int)(byte));
outstr += tmp2;
}
@@ -296,9 +296,9 @@ bool fixAt(std::string &linestr, size_t pos) {
char newSeq[20];
if( c <= 0xFFFF) {
- sprintf(newSeq, "\\u%04X", c);
+ snprintf(newSeq, sizeof(newSeq), "\\u%04X", c);
} else {
- sprintf(newSeq, "\\U%08X", c);
+ snprintf(newSeq, sizeof(newSeq), "\\U%08X", c);
}
linestr.replace(pos, seqLen, newSeq);
pos += strlen(newSeq) - 1;
diff --git a/Build/source/libs/icu/icu-src/source/tools/escapesrc/tblgen.cpp b/Build/source/libs/icu/icu-src/source/tools/escapesrc/tblgen.cpp
index e94fa9036bc..dce4af6867d 100644
--- a/Build/source/libs/icu/icu-src/source/tools/escapesrc/tblgen.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/escapesrc/tblgen.cpp
@@ -25,8 +25,8 @@ int main(int argc, const char *argv[]) {
for(int i=0x00; i<0x100; i++) {
char cp1047[1];
cp1047[0] = i;
- UChar u[1];
- UChar *target = u;
+ char16_t u[1];
+ char16_t *target = u;
const char *source = cp1047;
ucnv_toUnicode(cnv.getAlias(), &target, u+1, &source, cp1047+1, nullptr, true, &status);
if(U_FAILURE(status)) {
@@ -69,7 +69,7 @@ Some discussion at http://unicode.org/mail-arch/unicode-ml/y2003-m10/0471.html
printf("static const bool oldIllegal[256] = { \n");
- for(UChar i=0x00; i<0x100;i++) {
+ for(char16_t i=0x00; i<0x100;i++) {
printf(" %s, /* U+%04X */\n",
(oldIllegal.contains(i))?" true":"false",
i);
diff --git a/Build/source/libs/icu/icu-src/source/tools/genbrk/genbrk.cpp b/Build/source/libs/icu/icu-src/source/tools/genbrk/genbrk.cpp
index cc0133b439f..4cee4e12c6e 100644
--- a/Build/source/libs/icu/icu-src/source/tools/genbrk/genbrk.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/genbrk/genbrk.cpp
@@ -22,9 +22,8 @@
//
// The input rule file is a plain text file containing break rules
// in the input format accepted by RuleBasedBreakIterators. The
-// file can be encoded as utf-8, or utf-16 (either endian), or
-// in the default code page (platform dependent.). utf encoded
-// files must include a BOM.
+// file can be encoded as UTF-8 or UTF-16 (either endian). Files
+// encoded as UTF-16 must include a BOM.
//
//--------------------------------------------------------------------
@@ -53,8 +52,8 @@ static UOption options[]={
UOPTION_HELP_H, /* 0 */
UOPTION_HELP_QUESTION_MARK, /* 1 */
UOPTION_VERBOSE, /* 2 */
- { "rules", NULL, NULL, NULL, 'r', UOPT_REQUIRES_ARG, 0 }, /* 3 */
- { "out", NULL, NULL, NULL, 'o', UOPT_REQUIRES_ARG, 0 }, /* 4 */
+ { "rules", nullptr, nullptr, nullptr, 'r', UOPT_REQUIRES_ARG, 0 }, /* 3 */
+ { "out", nullptr, nullptr, nullptr, 'o', UOPT_REQUIRES_ARG, 0 }, /* 4 */
UOPTION_ICUDATADIR, /* 5 */
UOPTION_DESTDIR, /* 6 */
UOPTION_COPYRIGHT, /* 7 */
@@ -63,7 +62,9 @@ static UOption options[]={
void usageAndDie(int retCode) {
printf("Usage: %s [-v] [-options] -r rule-file -o output-file\n", progName);
- printf("\tRead in break iteration rules text and write out the binary data\n"
+ printf("\tRead in break iteration rules text and write out the binary data.\n"
+ "\tIf the rule file does not have a Unicode signature byte sequence, it is assumed\n"
+ "\tto be UTF-8.\n"
"options:\n"
"\t-h or -? or --help this usage text\n"
"\t-V or --version show a version message\n"
@@ -131,8 +132,8 @@ int main(int argc, char **argv) {
UErrorCode status = U_ZERO_ERROR;
const char *ruleFileName;
const char *outFileName;
- const char *outDir = NULL;
- const char *copyright = NULL;
+ const char *outDir = nullptr;
+ const char *copyright = nullptr;
//
// Pick up and check the command line arguments,
@@ -179,11 +180,11 @@ int main(int argc, char **argv) {
char msg[1024];
/* write message with just the name */
- sprintf(msg, "genbrk writes dummy %s because of UCONFIG_NO_BREAK_ITERATION and/or UCONFIG_NO_FILE_IO, see uconfig.h", outFileName);
+ snprintf(msg, sizeof(msg), "genbrk writes dummy %s because of UCONFIG_NO_BREAK_ITERATION and/or UCONFIG_NO_FILE_IO, see uconfig.h", outFileName);
fprintf(stderr, "%s\n", msg);
/* write the dummy data file */
- pData = udata_create(outDir, NULL, outFileName, &dummyDataInfo, NULL, &status);
+ pData = udata_create(outDir, nullptr, outFileName, &dummyDataInfo, nullptr, &status);
udata_writeBlock(pData, msg, strlen(msg));
udata_finish(pData, &status);
return (int)status;
@@ -234,7 +235,10 @@ int main(int argc, char **argv) {
if (U_FAILURE(status)) {
exit(status);
}
- if(encoding!=NULL ){
+ if (encoding == nullptr) {
+ // In the absence of a BOM, assume the rule file is in UTF-8.
+ encoding = "UTF-8";
+ } else {
ruleSourceC += signatureLength;
ruleFileSize -= signatureLength;
}
@@ -250,11 +254,11 @@ int main(int argc, char **argv) {
}
//
- // Convert the rules to UChar.
+ // Convert the rules to char16_t.
// Preflight first to determine required buffer size.
//
uint32_t destCap = ucnv_toUChars(conv,
- NULL, // dest,
+ nullptr, // dest,
0, // destCapacity,
ruleSourceC,
ruleFileSize,
@@ -265,7 +269,7 @@ int main(int argc, char **argv) {
}
status = U_ZERO_ERROR;
- UChar *ruleSourceU = new UChar[destCap+1];
+ char16_t *ruleSourceU = new char16_t[destCap+1];
ucnv_toUChars(conv,
ruleSourceU, // dest,
destCap+1,
@@ -314,7 +318,7 @@ int main(int argc, char **argv) {
//
size_t bytesWritten;
UNewDataMemory *pData;
- pData = udata_create(outDir, NULL, outFileName, &(dh.info), copyright, &status);
+ pData = udata_create(outDir, nullptr, outFileName, &(dh.info), copyright, &status);
if(U_FAILURE(status)) {
fprintf(stderr, "genbrk: Could not open output file \"%s\", \"%s\"\n",
outFileName, u_errorName(status));
diff --git a/Build/source/libs/icu/icu-src/source/tools/genccode/genccode.c b/Build/source/libs/icu/icu-src/source/tools/genccode/genccode.c
index 219335f183c..9fb7dbcdf2e 100644
--- a/Build/source/libs/icu/icu-src/source/tools/genccode/genccode.c
+++ b/Build/source/libs/icu/icu-src/source/tools/genccode/genccode.c
@@ -178,6 +178,7 @@ main(int argc, char* argv[]) {
switch (writeCode) {
case CALL_WRITECCODE:
writeCCode(filename, options[kOptDestDir].value,
+ options[kOptEntryPoint].doesOccur ? options[kOptEntryPoint].value : NULL,
options[kOptName].doesOccur ? options[kOptName].value : NULL,
options[kOptFilename].doesOccur ? options[kOptFilename].value : NULL,
NULL,
diff --git a/Build/source/libs/icu/icu-src/source/tools/gencfu/gencfu.cpp b/Build/source/libs/icu/icu-src/source/tools/gencfu/gencfu.cpp
index 073ddef6226..543cd76afa5 100644
--- a/Build/source/libs/icu/icu-src/source/tools/gencfu/gencfu.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/gencfu/gencfu.cpp
@@ -55,9 +55,9 @@ static UOption options[]={
UOPTION_HELP_H, /* 0 */
UOPTION_HELP_QUESTION_MARK, /* 1 */
UOPTION_VERBOSE, /* 2 */
- { "rules", NULL, NULL, NULL, 'r', UOPT_REQUIRES_ARG, 0 }, /* 3 */
- { "wsrules", NULL, NULL, NULL, 'w', UOPT_REQUIRES_ARG, 0}, /* 4 */ // deprecated
- { "out", NULL, NULL, NULL, 'o', UOPT_REQUIRES_ARG, 0 }, /* 5 */
+ { "rules", nullptr, nullptr, nullptr, 'r', UOPT_REQUIRES_ARG, 0 }, /* 3 */
+ { "wsrules", nullptr, nullptr, nullptr, 'w', UOPT_REQUIRES_ARG, 0}, /* 4 */ // deprecated
+ { "out", nullptr, nullptr, nullptr, 'o', UOPT_REQUIRES_ARG, 0 }, /* 5 */
UOPTION_ICUDATADIR, /* 6 */
UOPTION_DESTDIR, /* 7 */
UOPTION_COPYRIGHT, /* 8 */
@@ -137,8 +137,8 @@ int main(int argc, char **argv) {
UErrorCode status = U_ZERO_ERROR;
const char *confFileName;
const char *outFileName;
- const char *outDir = NULL;
- const char *copyright = NULL;
+ const char *outDir = nullptr;
+ const char *copyright = nullptr;
//
// Pick up and check the command line arguments,
@@ -193,11 +193,11 @@ int main(int argc, char **argv) {
char msg[1024];
/* write message with just the name */
- sprintf(msg, "gencfu writes dummy %s because of UCONFIG_NO_REGULAR_EXPRESSIONS and/or UCONFIG_NO_NORMALIZATION and/or UCONFIG_NO_FILE_IO, see uconfig.h", outFileName);
+ snprintf(msg, sizeof(msg), "gencfu writes dummy %s because of UCONFIG_NO_REGULAR_EXPRESSIONS and/or UCONFIG_NO_NORMALIZATION and/or UCONFIG_NO_FILE_IO, see uconfig.h", outFileName);
fprintf(stderr, "%s\n", msg);
/* write the dummy data file */
- pData = udata_create(outDir, NULL, outFileName, &dummyDataInfo, NULL, &status);
+ pData = udata_create(outDir, nullptr, outFileName, &dummyDataInfo, nullptr, &status);
udata_writeBlock(pData, msg, strlen(msg));
udata_finish(pData, &status);
return (int)status;
@@ -216,7 +216,7 @@ int main(int argc, char **argv) {
int32_t confusablesLen = 0;
const char *confusables = readFile(confFileName, &confusablesLen);
- if (confusables == NULL) {
+ if (confusables == nullptr) {
printf("gencfu: error reading file \"%s\"\n", confFileName);
exit(-1);
}
@@ -230,7 +230,7 @@ int main(int argc, char **argv) {
parseError.offset = 0;
int32_t errType;
USpoofChecker *sc = uspoof_openFromSource(confusables, confusablesLen,
- NULL, 0,
+ nullptr, 0,
&errType, &parseError, &status);
if (U_FAILURE(status)) {
fprintf(stderr, "gencfu: uspoof_openFromSource error \"%s\" at file %s, line %d, column %d\n",
@@ -244,7 +244,7 @@ int main(int argc, char **argv) {
//
uint32_t outDataSize;
uint8_t *outData;
- outDataSize = uspoof_serialize(sc, NULL, 0, &status);
+ outDataSize = uspoof_serialize(sc, nullptr, 0, &status);
if (status != U_BUFFER_OVERFLOW_ERROR) {
fprintf(stderr, "gencfu: uspoof_serialize() returned %s\n", u_errorName(status));
exit(status);
@@ -264,7 +264,7 @@ int main(int argc, char **argv) {
//
size_t bytesWritten;
UNewDataMemory *pData;
- pData = udata_create(outDir, NULL, outFileName, &(dh.info), copyright, &status);
+ pData = udata_create(outDir, nullptr, outFileName, &(dh.info), copyright, &status);
if(U_FAILURE(status)) {
fprintf(stderr, "gencfu: Could not open output file \"%s\", \"%s\"\n",
outFileName, u_errorName(status));
@@ -308,22 +308,22 @@ int main(int argc, char **argv) {
file = fopen(fileName, "rb");
if( file == 0 ) {
- return NULL;
+ return nullptr;
}
fseek(file, 0, SEEK_END);
fileSize = ftell(file);
fseek(file, 0, SEEK_SET);
result = new char[fileSize+10];
- if (result==NULL) {
+ if (result==nullptr) {
fclose(file);
- return NULL;
+ return nullptr;
}
long t = static_cast<long>(fread(result, 1, fileSize, file));
if (t != fileSize) {
delete [] result;
fclose(file);
- return NULL;
+ return nullptr;
}
result[fileSize]=0;
*len = static_cast<int32_t>(fileSize);
diff --git a/Build/source/libs/icu/icu-src/source/tools/gencolusb/extract_unsafe_backwards.cpp b/Build/source/libs/icu/icu-src/source/tools/gencolusb/extract_unsafe_backwards.cpp
index 0a0830169f1..ee12e69f9b3 100644
--- a/Build/source/libs/icu/icu-src/source/tools/gencolusb/extract_unsafe_backwards.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/gencolusb/extract_unsafe_backwards.cpp
@@ -43,7 +43,7 @@ int main(int argc, const char *argv[]) {
UErrorCode preflightCode = U_ZERO_ERROR;
// preflight
- int32_t serializedCount = unsafeBackwardSet->serialize(NULL,0,preflightCode);
+ int32_t serializedCount = unsafeBackwardSet->serialize(nullptr,0,preflightCode);
if(U_FAILURE(preflightCode) && preflightCode != U_BUFFER_OVERFLOW_ERROR) {
fprintf(stderr, "Err: %s preflighting unicode set\n", u_errorName(preflightCode));
return 1;
@@ -76,7 +76,7 @@ int main(int argc, const char *argv[]) {
}
- const UChar *buf = pattern.getBuffer();
+ const char16_t *buf = pattern.getBuffer();
int32_t needed = pattern.length();
// print
@@ -118,7 +118,7 @@ int main(int argc, const char *argv[]) {
#if PATTERN
printf("#define COLLUNSAFE_PATTERN 1\n");
printf("static const int32_t collunsafe_len = %d;\n", needed);
- printf("static const UChar collunsafe_pattern[collunsafe_len] = {\n");
+ printf("static const char16_t collunsafe_pattern[collunsafe_len] = {\n");
for(int i=0;i<needed;i++) {
if( (i>0) && (i%8 == 0) ) {
printf(" // %d\n", i);
diff --git a/Build/source/libs/icu/icu-src/source/tools/gencolusb/verify_uset.cpp b/Build/source/libs/icu/icu-src/source/tools/gencolusb/verify_uset.cpp
index fe2093c056a..03a49304894 100644
--- a/Build/source/libs/icu/icu-src/source/tools/gencolusb/verify_uset.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/gencolusb/verify_uset.cpp
@@ -53,7 +53,7 @@ int main(int argc, const char *argv[]) {
printf("Finished deserialize with %d ranges\n", u.getRangeCount());
}
#endif
-// if(tailoring.unsafeBackwardSet == NULL) {
+// if(tailoring.unsafeBackwardSet == nullptr) {
// errorCode = U_MEMORY_ALLOCATION_ERROR;
// fprintf(stderr, "\n%s:%d: err %s\n", __FILE__, __LINE__, u_errorName(errorCode));
// }
diff --git a/Build/source/libs/icu/icu-src/source/tools/gendict/gendict.cpp b/Build/source/libs/icu/icu-src/source/tools/gendict/gendict.cpp
index 7e6c7db615a..995bd327249 100644
--- a/Build/source/libs/icu/icu-src/source/tools/gendict/gendict.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/gendict/gendict.cpp
@@ -55,9 +55,9 @@ static UOption options[]={
UOPTION_VERBOSE, /* 2 */
UOPTION_ICUDATADIR, /* 4 */
UOPTION_COPYRIGHT, /* 5 */
- { "uchars", NULL, NULL, NULL, '\1', UOPT_NO_ARG, 0}, /* 6 */
- { "bytes", NULL, NULL, NULL, '\1', UOPT_NO_ARG, 0}, /* 7 */
- { "transform", NULL, NULL, NULL, '\1', UOPT_REQUIRES_ARG, 0}, /* 8 */
+ { "uchars", nullptr, nullptr, nullptr, '\1', UOPT_NO_ARG, 0}, /* 6 */
+ { "bytes", nullptr, nullptr, nullptr, '\1', UOPT_NO_ARG, 0}, /* 7 */
+ { "transform", nullptr, nullptr, nullptr, '\1', UOPT_REQUIRES_ARG, 0}, /* 8 */
UOPTION_QUIET, /* 9 */
};
@@ -127,7 +127,7 @@ public:
// it will be returned in status
// isBytesTrie != 0 will produce a BytesTrieBuilder,
// isBytesTrie == 0 will produce a UCharsTrieBuilder
- DataDict(UBool isBytesTrie, UErrorCode &status) : bt(NULL), ut(NULL),
+ DataDict(UBool isBytesTrie, UErrorCode &status) : bt(nullptr), ut(nullptr),
transformConstant(0), transformType(DictionaryData::TRANSFORM_NONE) {
if (isBytesTrie) {
bt = new BytesTrieBuilder(status);
@@ -217,16 +217,16 @@ public:
};
#endif
-static const UChar LINEFEED_CHARACTER = 0x000A;
-static const UChar CARRIAGE_RETURN_CHARACTER = 0x000D;
+static const char16_t LINEFEED_CHARACTER = 0x000A;
+static const char16_t CARRIAGE_RETURN_CHARACTER = 0x000D;
static UBool readLine(UCHARBUF *f, UnicodeString &fileLine, IcuToolErrorCode &errorCode) {
int32_t lineLength;
- const UChar *line = ucbuf_readline(f, &lineLength, errorCode);
- if(line == NULL || errorCode.isFailure()) { return false; }
+ const char16_t *line = ucbuf_readline(f, &lineLength, errorCode);
+ if(line == nullptr || errorCode.isFailure()) { return false; }
// Strip trailing CR/LF, comments, and spaces.
- const UChar *comment = u_memchr(line, 0x23, lineLength); // '#'
- if(comment != NULL) {
+ const char16_t *comment = u_memchr(line, 0x23, lineLength); // '#'
+ if(comment != nullptr) {
lineLength = (int32_t)(comment - line);
} else {
while(lineLength > 0 && (line[lineLength - 1] == CARRIAGE_RETURN_CHARACTER || line[lineLength - 1] == LINEFEED_CHARACTER)) { --lineLength; }
@@ -276,7 +276,7 @@ int main(int argc, char **argv) {
u_setDataDirectory(options[ARG_ICUDATADIR].value);
}
- const char *copyright = NULL;
+ const char *copyright = nullptr;
if (options[ARG_COPYRIGHT].doesOccur) {
copyright = U_COPYRIGHT_STRING;
}
@@ -294,18 +294,18 @@ int main(int argc, char **argv) {
IcuToolErrorCode status("gendict/main()");
#if UCONFIG_NO_BREAK_ITERATION || UCONFIG_NO_FILE_IO
- const char* outDir=NULL;
+ const char* outDir=nullptr;
UNewDataMemory *pData;
char msg[1024];
UErrorCode tempstatus = U_ZERO_ERROR;
/* write message with just the name */ // potential for a buffer overflow here...
- sprintf(msg, "gendict writes dummy %s because of UCONFIG_NO_BREAK_ITERATION and/or UCONFIG_NO_FILE_IO, see uconfig.h", outFileName);
+ snprintf(msg, sizeof(msg), "gendict writes dummy %s because of UCONFIG_NO_BREAK_ITERATION and/or UCONFIG_NO_FILE_IO, see uconfig.h", outFileName);
fprintf(stderr, "%s\n", msg);
/* write the dummy data file */
- pData = udata_create(outDir, NULL, outFileName, &dataInfo, NULL, &tempstatus);
+ pData = udata_create(outDir, nullptr, outFileName, &dataInfo, nullptr, &tempstatus);
udata_writeBlock(pData, msg, strlen(msg));
udata_finish(pData, &tempstatus);
return (int)tempstatus;
@@ -417,7 +417,7 @@ int main(int argc, char **argv) {
exit(status.reset());
}
if (verbose) { puts("Opening output file..."); }
- UNewDataMemory *pData = udata_create(NULL, NULL, outFileName, &dataInfo, copyright, status);
+ UNewDataMemory *pData = udata_create(nullptr, nullptr, outFileName, &dataInfo, copyright, status);
if (status.isFailure()) {
fprintf(stderr, "gendict: could not open output file \"%s\", \"%s\"\n", outFileName, status.errorName());
exit(status.reset());
@@ -463,7 +463,7 @@ int main(int argc, char **argv) {
printf("%s -> %i\n", s.data(), val);
}
} else {
- UCharsTrie::Iterator it((const UChar *)outData, outDataSize, status);
+ UCharsTrie::Iterator it((const char16_t *)outData, outDataSize, status);
while (it.hasNext()) {
it.next(status);
const UnicodeString s = it.getString();
diff --git a/Build/source/libs/icu/icu-src/source/tools/gennorm2/extradata.cpp b/Build/source/libs/icu/icu-src/source/tools/gennorm2/extradata.cpp
index 8c6d023acbb..f31bc418ea9 100644
--- a/Build/source/libs/icu/icu-src/source/tools/gennorm2/extradata.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/gennorm2/extradata.cpp
@@ -43,7 +43,7 @@ int32_t ExtraData::writeMapping(UChar32 c, const Norm &norm, UnicodeString &data
// Write the mapping & raw mapping extraData.
int32_t firstUnit=length|(norm.trailCC<<8);
int32_t preMappingLength=0;
- if(norm.rawMapping!=NULL) {
+ if(norm.rawMapping!=nullptr) {
UnicodeString &rm=*norm.rawMapping;
int32_t rmLength=rm.length();
if(rmLength>Normalizer2Impl::MAPPING_LENGTH_MASK) {
@@ -53,7 +53,7 @@ int32_t ExtraData::writeMapping(UChar32 c, const Norm &norm, UnicodeString &data
(long)c, Normalizer2Impl::MAPPING_LENGTH_MASK);
exit(U_INVALID_FORMAT_ERROR);
}
- UChar rm0=rm.charAt(0);
+ char16_t rm0=rm.charAt(0);
if( rmLength==length-1 &&
// 99: overlong substring lengths get pinned to remainder lengths anyway
0==rm.compare(1, 99, m, 2, 99) &&
@@ -71,18 +71,18 @@ int32_t ExtraData::writeMapping(UChar32 c, const Norm &norm, UnicodeString &data
} else {
// Store the raw mapping with its length.
dataString.append(rm);
- dataString.append((UChar)rmLength);
+ dataString.append((char16_t)rmLength);
preMappingLength=rmLength+1;
}
firstUnit|=Normalizer2Impl::MAPPING_HAS_RAW_MAPPING;
}
int32_t cccLccc=norm.cc|(norm.leadCC<<8);
if(cccLccc!=0) {
- dataString.append((UChar)cccLccc);
+ dataString.append((char16_t)cccLccc);
++preMappingLength;
firstUnit|=Normalizer2Impl::MAPPING_HAS_CCC_LCCC_WORD;
}
- dataString.append((UChar)firstUnit);
+ dataString.append((char16_t)firstUnit);
dataString.append(m);
return preMappingLength;
}
@@ -138,7 +138,7 @@ void ExtraData::writeCompositions(UChar32 c, const Norm &norm, UnicodeString &da
const CompositionPair &pair=pairs[i];
// 22 bits for the composite character and whether it combines forward.
UChar32 compositeAndFwd=pair.composite<<1;
- if(norms.getNormRef(pair.composite).compositions!=NULL) {
+ if(norms.getNormRef(pair.composite).compositions!=nullptr) {
compositeAndFwd|=1; // The composite character also combines-forward.
}
// Encode most pairs in two units and some in three.
@@ -165,9 +165,9 @@ void ExtraData::writeCompositions(UChar32 c, const Norm &norm, UnicodeString &da
if(i==(length-1)) {
firstUnit|=Normalizer2Impl::COMP_1_LAST_TUPLE;
}
- dataString.append((UChar)firstUnit).append((UChar)secondUnit);
+ dataString.append((char16_t)firstUnit).append((char16_t)secondUnit);
if(thirdUnit>=0) {
- dataString.append((UChar)thirdUnit);
+ dataString.append((char16_t)thirdUnit);
}
}
}
diff --git a/Build/source/libs/icu/icu-src/source/tools/gennorm2/extradata.h b/Build/source/libs/icu/icu-src/source/tools/gennorm2/extradata.h
index cd0d9403b58..0a8e73087d5 100644
--- a/Build/source/libs/icu/icu-src/source/tools/gennorm2/extradata.h
+++ b/Build/source/libs/icu/icu-src/source/tools/gennorm2/extradata.h
@@ -30,7 +30,7 @@ class ExtraData : public Norms::Enumerator {
public:
ExtraData(Norms &n, UBool fast);
- void rangeHandler(UChar32 start, UChar32 end, Norm &norm) U_OVERRIDE;
+ void rangeHandler(UChar32 start, UChar32 end, Norm &norm) override;
UnicodeString maybeYesCompositions;
UnicodeString yesYesCompositions;
diff --git a/Build/source/libs/icu/icu-src/source/tools/gennorm2/gennorm2.cpp b/Build/source/libs/icu/icu-src/source/tools/gennorm2/gennorm2.cpp
index 84461f281d2..2575bf7ed8e 100644
--- a/Build/source/libs/icu/icu-src/source/tools/gennorm2/gennorm2.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/gennorm2/gennorm2.cpp
@@ -146,7 +146,7 @@ main(int argc, char* argv[]) {
"gennorm2 writes a dummy binary data file "
"because UCONFIG_NO_NORMALIZATION is set, \n"
"see icu/source/common/unicode/uconfig.h\n");
- udata_createDummy(NULL, NULL, options[OUTPUT_FILENAME].value, errorCode);
+ udata_createDummy(nullptr, nullptr, options[OUTPUT_FILENAME].value, errorCode);
// Should not return an error since this is the expected behaviour if UCONFIG_NO_NORMALIZATION is on.
// return U_UNSUPPORTED_ERROR;
return 0;
@@ -238,13 +238,9 @@ void parseFile(std::ifstream &f, Normalizer2DataBuilder &builder) {
if (lineString.empty()) {
continue; // skip empty lines.
}
-#if (U_CPLUSPLUS_VERSION >= 11)
char *line = &lineString.front();
-#else
- char *line = &lineString.at(0);
-#endif
char *comment=(char *)strchr(line, '#');
- if(comment!=NULL) {
+ if(comment!=nullptr) {
*comment=0;
}
u_rtrim(line);
@@ -296,8 +292,8 @@ void parseFile(std::ifstream &f, Normalizer2DataBuilder &builder) {
continue;
}
if(*delimiter=='=' || *delimiter=='>') {
- UChar uchars[Normalizer2Impl::MAPPING_LENGTH_MASK];
- int32_t length=u_parseString(delimiter+1, uchars, UPRV_LENGTHOF(uchars), NULL, errorCode);
+ char16_t uchars[Normalizer2Impl::MAPPING_LENGTH_MASK];
+ int32_t length=u_parseString(delimiter+1, uchars, UPRV_LENGTHOF(uchars), nullptr, errorCode);
if(errorCode.isFailure()) {
fprintf(stderr, "gennorm2 error: parsing mapping string from %s\n", line);
exit(errorCode.reset());
diff --git a/Build/source/libs/icu/icu-src/source/tools/gennorm2/n2builder.cpp b/Build/source/libs/icu/icu-src/source/tools/gennorm2/n2builder.cpp
index 4ebfae8ebe1..a07327145d4 100644
--- a/Build/source/libs/icu/icu-src/source/tools/gennorm2/n2builder.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/gennorm2/n2builder.cpp
@@ -76,7 +76,7 @@ public:
if(rangeIndex<UPRV_LENGTHOF(ranges)) {
return ranges+rangeIndex++;
} else {
- return NULL;
+ return nullptr;
}
}
private:
@@ -123,7 +123,7 @@ Normalizer2DataBuilder::setUnicodeVersion(const char *v) {
}
Norm *Normalizer2DataBuilder::checkNormForMapping(Norm *p, UChar32 c) {
- if(p!=NULL) {
+ if(p!=nullptr) {
if(p->mappingType!=Norm::NONE) {
if( overrideHandling==OVERRIDE_NONE ||
(overrideHandling==OVERRIDE_PREVIOUS && p->mappingPhase==phase)
@@ -135,7 +135,7 @@ Norm *Normalizer2DataBuilder::checkNormForMapping(Norm *p, UChar32 c) {
exit(U_INVALID_FORMAT_ERROR);
}
delete p->mapping;
- p->mapping=NULL;
+ p->mapping=nullptr;
}
p->mappingPhase=phase;
}
@@ -154,7 +154,7 @@ void Normalizer2DataBuilder::setCC(UChar32 c, uint8_t cc) {
static UBool isWellFormed(const UnicodeString &s) {
UErrorCode errorCode=U_ZERO_ERROR;
- u_strToUTF8(NULL, 0, NULL, toUCharPtr(s.getBuffer()), s.length(), &errorCode);
+ u_strToUTF8(nullptr, 0, nullptr, toUCharPtr(s.getBuffer()), s.length(), &errorCode);
return U_SUCCESS(errorCode) || errorCode==U_BUFFER_OVERFLOW_ERROR;
}
@@ -360,13 +360,13 @@ void Normalizer2DataBuilder::postProcess(Norm &norm) {
if(norm.combinesBack) {
norm.error="combines-back and decomposes, not possible in Unicode normalization";
} else if(norm.mappingType==Norm::ROUND_TRIP) {
- if(norm.compositions!=NULL) {
+ if(norm.compositions!=nullptr) {
norm.type=Norm::YES_NO_COMBINES_FWD;
} else {
norm.type=Norm::YES_NO_MAPPING_ONLY;
}
} else { // one-way mapping
- if(norm.compositions!=NULL) {
+ if(norm.compositions!=nullptr) {
norm.error="combines-forward and has a one-way mapping, "
"not possible in Unicode normalization";
} else if(buffer.isEmpty()) {
@@ -410,7 +410,7 @@ class Norm16Writer : public Norms::Enumerator {
public:
Norm16Writer(UMutableCPTrie *trie, Norms &n, Normalizer2DataBuilder &b) :
Norms::Enumerator(n), builder(b), norm16Trie(trie) {}
- void rangeHandler(UChar32 start, UChar32 end, Norm &norm) U_OVERRIDE {
+ void rangeHandler(UChar32 start, UChar32 end, Norm &norm) override {
builder.writeNorm16(norm16Trie, start, end, norm);
}
Normalizer2DataBuilder &builder;
@@ -509,7 +509,7 @@ void Normalizer2DataBuilder::setHangulData(UMutableCPTrie *norm16Trie) {
HangulIterator hi;
const HangulIterator::Range *range;
// Check that none of the Hangul/Jamo code points have data.
- while((range=hi.nextRange())!=NULL) {
+ while((range=hi.nextRange())!=nullptr) {
for(UChar32 c=range->start; c<=range->end; ++c) {
if(umutablecptrie_get(norm16Trie, c)>Normalizer2Impl::INERT) {
fprintf(stderr,
@@ -596,7 +596,7 @@ LocalUCPTriePointer Normalizer2DataBuilder::processData() {
// Pad the maybeYesCompositions length to a multiple of 4,
// so that NO_NO_DELTA bits 2..1 can be used without subtracting the center.
while(extra.maybeYesCompositions.length()&3) {
- extra.maybeYesCompositions.append((UChar)0);
+ extra.maybeYesCompositions.append((char16_t)0);
}
extraData.insert(0, extra.maybeYesCompositions);
indexes[Normalizer2Impl::IX_MIN_MAYBE_YES]=
@@ -605,7 +605,7 @@ LocalUCPTriePointer Normalizer2DataBuilder::processData() {
// Pad to even length for 4-byte alignment of following data.
if(extraData.length()&1) {
- extraData.append((UChar)0);
+ extraData.append((char16_t)0);
}
int32_t minNoNoDelta=getMinNoNoDelta();
@@ -780,8 +780,8 @@ void Normalizer2DataBuilder::writeBinaryFile(const char *filename) {
IcuToolErrorCode errorCode("gennorm2/writeBinaryFile()");
UNewDataMemory *pData=
- udata_create(NULL, NULL, filename, &dataInfo,
- haveCopyright ? U_COPYRIGHT_STRING : NULL, errorCode);
+ udata_create(nullptr, nullptr, filename, &dataInfo,
+ haveCopyright ? U_COPYRIGHT_STRING : nullptr, errorCode);
if(errorCode.isFailure()) {
fprintf(stderr, "gennorm2 error: unable to create the output file %s - %s\n",
filename, errorCode.errorName());
@@ -813,14 +813,14 @@ Normalizer2DataBuilder::writeCSourceFile(const char *filename) {
CharString path(filename, (int32_t)(basename-filename), errorCode);
CharString dataName(basename, errorCode);
const char *extension=strrchr(basename, '.');
- if(extension!=NULL) {
+ if(extension!=nullptr) {
dataName.truncate((int32_t)(extension-basename));
}
const char *name=dataName.data();
errorCode.assertSuccess();
FILE *f=usrc_create(path.data(), basename, 2016, "icu/source/tools/gennorm2/n2builder.cpp");
- if(f==NULL) {
+ if(f==nullptr) {
fprintf(stderr, "gennorm2/writeCSourceFile() error: unable to create the output file %s\n",
filename);
exit(U_FILE_ACCESS_ERROR);
@@ -828,18 +828,18 @@ Normalizer2DataBuilder::writeCSourceFile(const char *filename) {
fputs("#ifdef INCLUDED_FROM_NORMALIZER2_CPP\n\n", f);
char line[100];
- sprintf(line, "static const UVersionInfo %s_formatVersion={", name);
+ snprintf(line, sizeof(line), "static const UVersionInfo %s_formatVersion={", name);
usrc_writeArray(f, line, dataInfo.formatVersion, 8, 4, "", "};\n");
- sprintf(line, "static const UVersionInfo %s_dataVersion={", name);
+ snprintf(line, sizeof(line), "static const UVersionInfo %s_dataVersion={", name);
usrc_writeArray(f, line, dataInfo.dataVersion, 8, 4, "", "};\n\n");
- sprintf(line, "static const int32_t %s_indexes[Normalizer2Impl::IX_COUNT]={\n", name);
+ snprintf(line, sizeof(line), "static const int32_t %s_indexes[Normalizer2Impl::IX_COUNT]={\n", name);
usrc_writeArray(f, line, indexes, 32, Normalizer2Impl::IX_COUNT, "", "\n};\n\n");
usrc_writeUCPTrie(f, name, norm16Trie.getAlias(), UPRV_TARGET_SYNTAX_CCODE);
- sprintf(line, "static const uint16_t %s_extraData[%%ld]={\n", name);
+ snprintf(line, sizeof(line), "static const uint16_t %s_extraData[%%ld]={\n", name);
usrc_writeArray(f, line, extraData.getBuffer(), 16, extraData.length(), "", "\n};\n\n");
- sprintf(line, "static const uint8_t %s_smallFCD[%%ld]={\n", name);
+ snprintf(line, sizeof(line), "static const uint8_t %s_smallFCD[%%ld]={\n", name);
usrc_writeArray(f, line, smallFCD, 8, sizeof(smallFCD), "", "\n};\n\n");
fputs("#endif // INCLUDED_FROM_NORMALIZER2_CPP\n", f);
diff --git a/Build/source/libs/icu/icu-src/source/tools/gennorm2/norms.cpp b/Build/source/libs/icu/icu-src/source/tools/gennorm2/norms.cpp
index b96c704ed42..9dd8dca977c 100644
--- a/Build/source/libs/icu/icu-src/source/tools/gennorm2/norms.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/gennorm2/norms.cpp
@@ -231,7 +231,7 @@ void Decomposer::rangeHandler(UChar32 start, UChar32 end, Norm &norm) {
if(!norm.hasMapping()) { return; }
const UnicodeString &m=*norm.mapping;
UnicodeString *decomposed=nullptr;
- const UChar *s=toUCharPtr(m.getBuffer());
+ const char16_t *s=toUCharPtr(m.getBuffer());
int32_t length=m.length();
int32_t prev, i=0;
UChar32 c;
@@ -286,7 +286,7 @@ void Decomposer::rangeHandler(UChar32 start, UChar32 end, Norm &norm) {
}
decomposed->append(*cNorm.mapping);
} else if(Hangul::isHangul(c)) {
- UChar buffer[3];
+ char16_t buffer[3];
int32_t hangulLength=Hangul::decompose(c, buffer);
if(norm.mappingType==Norm::ROUND_TRIP && prev!=0) {
fprintf(stderr,
diff --git a/Build/source/libs/icu/icu-src/source/tools/gennorm2/norms.h b/Build/source/libs/icu/icu-src/source/tools/gennorm2/norms.h
index e1c17b0999f..f2778d95096 100644
--- a/Build/source/libs/icu/icu-src/source/tools/gennorm2/norms.h
+++ b/Build/source/libs/icu/icu-src/source/tools/gennorm2/norms.h
@@ -197,14 +197,14 @@ class CompositionBuilder : public Norms::Enumerator {
public:
CompositionBuilder(Norms &n) : Norms::Enumerator(n) {}
/** Adds a composition mapping for the first character in a round-trip mapping. */
- void rangeHandler(UChar32 start, UChar32 end, Norm &norm) U_OVERRIDE;
+ void rangeHandler(UChar32 start, UChar32 end, Norm &norm) override;
};
class Decomposer : public Norms::Enumerator {
public:
Decomposer(Norms &n) : Norms::Enumerator(n), didDecompose(false) {}
/** Decomposes each character of the current mapping. Sets didDecompose if any. */
- void rangeHandler(UChar32 start, UChar32 end, Norm &norm) U_OVERRIDE;
+ void rangeHandler(UChar32 start, UChar32 end, Norm &norm) override;
UBool didDecompose;
};
diff --git a/Build/source/libs/icu/icu-src/source/tools/genrb/derb.cpp b/Build/source/libs/icu/icu-src/source/tools/genrb/derb.cpp
index aba5c595296..3b282895692 100644
--- a/Build/source/libs/icu/icu-src/source/tools/genrb/derb.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/genrb/derb.cpp
@@ -44,9 +44,9 @@ static UBool opt_truncate = false;
static const char *getEncodingName(const char *encoding);
static void reportError(const char *pname, UErrorCode *status, const char *when);
-static UChar *quotedString(const UChar *string);
+static char16_t *quotedString(const char16_t *string);
static void printOutBundle(UFILE *out, UResourceBundle *resource, int32_t indent, const char *pname, UErrorCode *status);
-static void printString(UFILE *out, const UChar *str, int32_t len);
+static void printString(UFILE *out, const char16_t *str, int32_t len);
static void printCString(UFILE *out, const char *str, int32_t len);
static void printIndent(UFILE *out, int32_t indent);
static void printHex(UFILE *out, uint8_t what);
@@ -55,32 +55,32 @@ static UOption options[]={
UOPTION_HELP_H,
UOPTION_HELP_QUESTION_MARK,
/* 2 */ UOPTION_ENCODING,
-/* 3 */ { "to-stdout", NULL, NULL, NULL, 'c', UOPT_NO_ARG, 0 } ,
-/* 4 */ { "truncate", NULL, NULL, NULL, 't', UOPT_OPTIONAL_ARG, 0 },
+/* 3 */ { "to-stdout", nullptr, nullptr, nullptr, 'c', UOPT_NO_ARG, 0 } ,
+/* 4 */ { "truncate", nullptr, nullptr, nullptr, 't', UOPT_OPTIONAL_ARG, 0 },
/* 5 */ UOPTION_VERBOSE,
/* 6 */ UOPTION_DESTDIR,
/* 7 */ UOPTION_SOURCEDIR,
-/* 8 */ { "bom", NULL, NULL, NULL, 0, UOPT_NO_ARG, 0 },
+/* 8 */ { "bom", nullptr, nullptr, nullptr, 0, UOPT_NO_ARG, 0 },
/* 9 */ UOPTION_ICUDATADIR,
/* 10 */ UOPTION_VERSION,
-/* 11 */ { "suppressAliases", NULL, NULL, NULL, 'A', UOPT_NO_ARG, 0 },
+/* 11 */ { "suppressAliases", nullptr, nullptr, nullptr, 'A', UOPT_NO_ARG, 0 },
};
static UBool verbose = false;
static UBool suppressAliases = false;
-static UFILE *ustderr = NULL;
+static UFILE *ustderr = nullptr;
extern int
main(int argc, char* argv[]) {
- const char *encoding = NULL;
- const char *outputDir = NULL; /* NULL = no output directory, use current */
+ const char *encoding = nullptr;
+ const char *outputDir = nullptr; /* nullptr = no output directory, use current */
const char *inputDir = ".";
int tostdout = 0;
int prbom = 0;
const char *pname;
- UResourceBundle *bundle = NULL;
+ UResourceBundle *bundle = nullptr;
int32_t i = 0;
const char* arg;
@@ -141,7 +141,7 @@ main(int argc, char* argv[]) {
if(options[4].doesOccur) {
opt_truncate = true;
- if(options[4].value != NULL) {
+ if(options[4].value != nullptr) {
truncsize = atoi(options[4].value); /* user defined printable size */
} else {
truncsize = DERB_DEFAULT_TRUNC; /* we'll use default omitting size */
@@ -175,10 +175,10 @@ main(int argc, char* argv[]) {
}
fflush(stderr); // use ustderr now.
- ustderr = u_finit(stderr, NULL, NULL);
+ ustderr = u_finit(stderr, nullptr, nullptr);
for (i = 1; i < argc; ++i) {
- static const UChar sp[] = { 0x0020 }; /* " " */
+ static const char16_t sp[] = { 0x0020 }; /* " " */
arg = getLongPathname(argv[i]);
@@ -191,7 +191,7 @@ main(int argc, char* argv[]) {
{
const char *p = findBasename(arg);
const char *q = uprv_strrchr(p, '.');
- if (q == NULL) {
+ if (q == nullptr) {
locale.append(p, status);
} else {
locale.append(p, (int32_t)(q - p), status);
@@ -202,7 +202,7 @@ main(int argc, char* argv[]) {
}
icu::CharString infile;
- const char *thename = NULL;
+ const char *thename = nullptr;
UBool fromICUData = !uprv_strcmp(inputDir, "-");
if (!fromICUData) {
UBool absfilename = *arg == U_FILE_SEP_CHAR;
@@ -217,12 +217,12 @@ main(int argc, char* argv[]) {
} else {
const char *q = uprv_strrchr(arg, U_FILE_SEP_CHAR);
#if U_FILE_SEP_CHAR != U_FILE_ALT_SEP_CHAR
- if (q == NULL) {
+ if (q == nullptr) {
q = uprv_strrchr(arg, U_FILE_ALT_SEP_CHAR);
}
#endif
infile.append(inputDir, status);
- if(q != NULL) {
+ if(q != nullptr) {
infile.appendPathPart(icu::StringPiece(arg, (int32_t)(q - arg)), status);
}
if (U_FAILURE(status)) {
@@ -237,7 +237,7 @@ main(int argc, char* argv[]) {
bundle = ures_open(fromICUData ? 0 : inputDir, locale.data(), &status);
}
if (U_SUCCESS(status)) {
- UFILE *out = NULL;
+ UFILE *out = nullptr;
const char *filename = 0;
const char *ext = 0;
@@ -266,7 +266,7 @@ main(int argc, char* argv[]) {
return status;
}
- out = u_fopen(thefile.data(), "w", NULL, encoding);
+ out = u_fopen(thefile.data(), "w", nullptr, encoding);
if (!out) {
u_fprintf(ustderr, "%s: couldn't create %s\n", pname, thefile.data());
u_fclose(ustderr);
@@ -319,11 +319,11 @@ main(int argc, char* argv[]) {
return 0;
}
-static UChar *quotedString(const UChar *string) {
+static char16_t *quotedString(const char16_t *string) {
int len = u_strlen(string);
int alen = len;
- const UChar *sp;
- UChar *newstr, *np;
+ const char16_t *sp;
+ char16_t *newstr, *np;
for (sp = string; *sp; ++sp) {
switch (*sp) {
@@ -334,7 +334,7 @@ static UChar *quotedString(const UChar *string) {
}
}
- newstr = (UChar *) uprv_malloc((1 + alen) * U_SIZEOF_UCHAR);
+ newstr = (char16_t *) uprv_malloc((1 + alen) * U_SIZEOF_UCHAR);
for (sp = string, np = newstr; *sp; ++sp) {
switch (*sp) {
case '\n':
@@ -356,7 +356,7 @@ static UChar *quotedString(const UChar *string) {
}
-static void printString(UFILE *out, const UChar *str, int32_t len) {
+static void printString(UFILE *out, const char16_t *str, int32_t len) {
u_file_write(str, len, out);
}
@@ -375,7 +375,7 @@ static void printIndent(UFILE *out, int32_t indent) {
static void printHex(UFILE *out, uint8_t what) {
static const char map[] = "0123456789ABCDEF";
- UChar hex[2];
+ char16_t hex[2];
hex[0] = map[what >> 4];
hex[1] = map[what & 0xf];
@@ -384,23 +384,23 @@ static void printHex(UFILE *out, uint8_t what) {
}
static void printOutAlias(UFILE *out, UResourceBundle *parent, Resource r, const char *key, int32_t indent, const char *pname, UErrorCode *status) {
- static const UChar cr[] = { 0xA }; // LF
+ static const char16_t cr[] = { 0xA }; // LF
int32_t len = 0;
- const UChar* thestr = res_getAlias(&(parent->getResData()), r, &len);
- UChar *string = quotedString(thestr);
+ const char16_t* thestr = res_getAlias(&(parent->getResData()), r, &len);
+ char16_t *string = quotedString(thestr);
if(opt_truncate && len > truncsize) {
char msg[128];
printIndent(out, indent);
- sprintf(msg, "// WARNING: this resource, size %li is truncated to %li\n",
+ snprintf(msg, sizeof(msg), "// WARNING: this resource, size %li is truncated to %li\n",
(long)len, (long)truncsize/2);
printCString(out, msg, -1);
len = truncsize;
}
if(U_SUCCESS(*status)) {
- static const UChar openStr[] = { 0x003A, 0x0061, 0x006C, 0x0069, 0x0061, 0x0073, 0x0020, 0x007B, 0x0020, 0x0022 }; /* ":alias { \"" */
- static const UChar closeStr[] = { 0x0022, 0x0020, 0x007D, 0x0020 }; /* "\" } " */
+ static const char16_t openStr[] = { 0x003A, 0x0061, 0x006C, 0x0069, 0x0061, 0x0073, 0x0020, 0x007B, 0x0020, 0x0022 }; /* ":alias { \"" */
+ static const char16_t closeStr[] = { 0x0022, 0x0020, 0x007D, 0x0020 }; /* "\" } " */
printIndent(out, indent);
- if(key != NULL) {
+ if(key != nullptr) {
printCString(out, key, -1);
}
printString(out, openStr, UPRV_LENGTHOF(openStr));
@@ -418,7 +418,7 @@ static void printOutAlias(UFILE *out, UResourceBundle *parent, Resource r, cons
static void printOutBundle(UFILE *out, UResourceBundle *resource, int32_t indent, const char *pname, UErrorCode *status)
{
- static const UChar cr[] = { 0xA }; // LF
+ static const char16_t cr[] = { 0xA }; // LF
/* int32_t noOfElements = ures_getSize(resource);*/
int32_t i = 0;
@@ -428,29 +428,29 @@ static void printOutBundle(UFILE *out, UResourceBundle *resource, int32_t indent
case URES_STRING :
{
int32_t len=0;
- const UChar* thestr = ures_getString(resource, &len, status);
- UChar *string = quotedString(thestr);
+ const char16_t* thestr = ures_getString(resource, &len, status);
+ char16_t *string = quotedString(thestr);
/* TODO: String truncation */
if(opt_truncate && len > truncsize) {
char msg[128];
printIndent(out, indent);
- sprintf(msg, "// WARNING: this resource, size %li is truncated to %li\n",
+ snprintf(msg, sizeof(msg), "// WARNING: this resource, size %li is truncated to %li\n",
(long)len, (long)(truncsize/2));
printCString(out, msg, -1);
len = truncsize/2;
}
printIndent(out, indent);
- if(key != NULL) {
- static const UChar openStr[] = { 0x0020, 0x007B, 0x0020, 0x0022 }; /* " { \"" */
- static const UChar closeStr[] = { 0x0022, 0x0020, 0x007D }; /* "\" }" */
+ if(key != nullptr) {
+ static const char16_t openStr[] = { 0x0020, 0x007B, 0x0020, 0x0022 }; /* " { \"" */
+ static const char16_t closeStr[] = { 0x0022, 0x0020, 0x007D }; /* "\" }" */
printCString(out, key, (int32_t)uprv_strlen(key));
printString(out, openStr, UPRV_LENGTHOF(openStr));
printString(out, string, len);
printString(out, closeStr, UPRV_LENGTHOF(closeStr));
} else {
- static const UChar openStr[] = { 0x0022 }; /* "\"" */
- static const UChar closeStr[] = { 0x0022, 0x002C }; /* "\"," */
+ static const char16_t openStr[] = { 0x0022 }; /* "\"" */
+ static const char16_t closeStr[] = { 0x0022, 0x002C }; /* "\"," */
printString(out, openStr, UPRV_LENGTHOF(openStr));
printString(out, string, (int32_t)(u_strlen(string)));
@@ -468,12 +468,12 @@ static void printOutBundle(UFILE *out, UResourceBundle *resource, int32_t indent
case URES_INT :
{
- static const UChar openStr[] = { 0x003A, 0x0069, 0x006E, 0x0074, 0x0020, 0x007B, 0x0020 }; /* ":int { " */
- static const UChar closeStr[] = { 0x0020, 0x007D }; /* " }" */
- UChar num[20];
+ static const char16_t openStr[] = { 0x003A, 0x0069, 0x006E, 0x0074, 0x0020, 0x007B, 0x0020 }; /* ":int { " */
+ static const char16_t closeStr[] = { 0x0020, 0x007D }; /* " }" */
+ char16_t num[20];
printIndent(out, indent);
- if(key != NULL) {
+ if(key != nullptr) {
printCString(out, key, -1);
}
printString(out, openStr, UPRV_LENGTHOF(openStr));
@@ -494,16 +494,16 @@ static void printOutBundle(UFILE *out, UResourceBundle *resource, int32_t indent
if(opt_truncate && len > truncsize) {
char msg[128];
printIndent(out, indent);
- sprintf(msg, "// WARNING: this resource, size %li is truncated to %li\n",
+ snprintf(msg, sizeof(msg), "// WARNING: this resource, size %li is truncated to %li\n",
(long)len, (long)(truncsize/2));
printCString(out, msg, -1);
len = truncsize;
}
if(U_SUCCESS(*status)) {
- static const UChar openStr[] = { 0x003A, 0x0062, 0x0069, 0x006E, 0x0061, 0x0072, 0x0079, 0x0020, 0x007B, 0x0020 }; /* ":binary { " */
- static const UChar closeStr[] = { 0x0020, 0x007D, 0x0020 }; /* " } " */
+ static const char16_t openStr[] = { 0x003A, 0x0062, 0x0069, 0x006E, 0x0061, 0x0072, 0x0079, 0x0020, 0x007B, 0x0020 }; /* ":binary { " */
+ static const char16_t closeStr[] = { 0x0020, 0x007D, 0x0020 }; /* " } " */
printIndent(out, indent);
- if(key != NULL) {
+ if(key != nullptr) {
printCString(out, key, -1);
}
printString(out, openStr, UPRV_LENGTHOF(openStr));
@@ -525,12 +525,12 @@ static void printOutBundle(UFILE *out, UResourceBundle *resource, int32_t indent
int32_t len = 0;
const int32_t *data = ures_getIntVector(resource, &len, status);
if(U_SUCCESS(*status)) {
- static const UChar openStr[] = { 0x003A, 0x0069, 0x006E, 0x0074, 0x0076, 0x0065, 0x0063, 0x0074, 0x006F, 0x0072, 0x0020, 0x007B, 0x0020 }; /* ":intvector { " */
- static const UChar closeStr[] = { 0x0020, 0x007D, 0x0020 }; /* " } " */
- UChar num[20];
+ static const char16_t openStr[] = { 0x003A, 0x0069, 0x006E, 0x0074, 0x0076, 0x0065, 0x0063, 0x0074, 0x006F, 0x0072, 0x0020, 0x007B, 0x0020 }; /* ":intvector { " */
+ static const char16_t closeStr[] = { 0x0020, 0x007D, 0x0020 }; /* " } " */
+ char16_t num[20];
printIndent(out, indent);
- if(key != NULL) {
+ if(key != nullptr) {
printCString(out, key, -1);
}
printString(out, openStr, UPRV_LENGTHOF(openStr));
@@ -558,13 +558,13 @@ static void printOutBundle(UFILE *out, UResourceBundle *resource, int32_t indent
case URES_TABLE :
case URES_ARRAY :
{
- static const UChar openStr[] = { 0x007B }; /* "{" */
- static const UChar closeStr[] = { 0x007D, '\n' }; /* "}\n" */
+ static const char16_t openStr[] = { 0x007B }; /* "{" */
+ static const char16_t closeStr[] = { 0x007D, '\n' }; /* "}\n" */
- UResourceBundle *t = NULL;
+ UResourceBundle *t = nullptr;
ures_resetIterator(resource);
printIndent(out, indent);
- if(key != NULL) {
+ if(key != nullptr) {
printCString(out, key, -1);
}
printString(out, openStr, UPRV_LENGTHOF(openStr));
diff --git a/Build/source/libs/icu/icu-src/source/tools/genrb/genrb.cpp b/Build/source/libs/icu/icu-src/source/tools/genrb/genrb.cpp
index 9deca097e94..fbf396d468a 100644
--- a/Build/source/libs/icu/icu-src/source/tools/genrb/genrb.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/genrb/genrb.cpp
@@ -49,16 +49,16 @@ static char *make_res_filename(const char *filename, const char *outputDir,
#define RES_SUFFIX ".res"
#define COL_SUFFIX ".col"
-const char *gCurrentFileName = NULL;
+const char *gCurrentFileName = nullptr;
#ifdef XP_MAC_CONSOLE
#include <console.h>
#endif
void ResFile::close() {
delete[] fBytes;
- fBytes = NULL;
+ fBytes = nullptr;
delete fStrings;
- fStrings = NULL;
+ fStrings = nullptr;
}
enum
@@ -125,17 +125,17 @@ static const char* outputEnc ="";
static ResFile poolBundle;
/*added by Jing*/
-static const char* language = NULL;
-static const char* xliffOutputFileName = NULL;
+static const char* language = nullptr;
+static const char* xliffOutputFileName = nullptr;
int
main(int argc,
char* argv[])
{
UErrorCode status = U_ZERO_ERROR;
- const char *arg = NULL;
- const char *outputDir = NULL; /* NULL = no output directory, use current */
- const char *inputDir = NULL;
- const char *filterDir = NULL;
+ const char *arg = nullptr;
+ const char *outputDir = nullptr; /* nullptr = no output directory, use current */
+ const char *inputDir = nullptr;
+ const char *filterDir = nullptr;
const char *encoding = "";
int i;
UBool illegalArg = false;
@@ -306,7 +306,7 @@ main(int argc,
if(options[WRITE_XLIFF].doesOccur) {
write_xliff = true;
- if(options[WRITE_XLIFF].value != NULL){
+ if(options[WRITE_XLIFF].value != nullptr){
xliffOutputFileName = options[WRITE_XLIFF].value;
}
}
@@ -329,14 +329,14 @@ main(int argc,
LocalPointer<SRBRoot> newPoolBundle;
if(options[WRITE_POOL_BUNDLE].doesOccur) {
- newPoolBundle.adoptInsteadAndCheckErrorCode(new SRBRoot(NULL, true, status), status);
+ newPoolBundle.adoptInsteadAndCheckErrorCode(new SRBRoot(nullptr, true, status), status);
if(U_FAILURE(status)) {
fprintf(stderr, "unable to create an empty bundle for the pool keys: %s\n", u_errorName(status));
return status;
} else {
const char *poolResName = "pool.res";
char *nameWithoutSuffix = static_cast<char *>(uprv_malloc(uprv_strlen(poolResName) + 1));
- if (nameWithoutSuffix == NULL) {
+ if (nameWithoutSuffix == nullptr) {
fprintf(stderr, "out of memory error\n");
return U_MEMORY_ALLOCATION_ERROR;
}
@@ -360,7 +360,7 @@ main(int argc,
* Also, make_res_filename() seems to be unused. Review and remove.
*/
CharString poolFileName;
- if (options[USE_POOL_BUNDLE].value!=NULL) {
+ if (options[USE_POOL_BUNDLE].value!=nullptr) {
poolFileName.append(options[USE_POOL_BUNDLE].value, status);
} else if (inputDir) {
poolFileName.append(inputDir, status);
@@ -370,7 +370,7 @@ main(int argc,
return status;
}
poolFile = T_FileStream_open(poolFileName.data(), "rb");
- if (poolFile == NULL) {
+ if (poolFile == nullptr) {
fprintf(stderr, "unable to open pool bundle file %s\n", poolFileName.data());
return 1;
}
@@ -380,7 +380,7 @@ main(int argc,
return 1;
}
poolBundle.fBytes = new uint8_t[(poolFileSize + 15) & ~15];
- if (poolFileSize > 0 && poolBundle.fBytes == NULL) {
+ if (poolFileSize > 0 && poolBundle.fBytes == nullptr) {
fprintf(stderr, "unable to allocate memory for the pool bundle file %s\n", poolFileName.data());
return U_MEMORY_ALLOCATION_ERROR;
}
@@ -441,15 +441,15 @@ main(int argc,
// an explicit string length that exceeds the number of remaining 16-bit units.
int32_t stringUnitsLength = (poolBundle.fIndexes[URES_INDEX_16BIT_TOP] - keysTop) * 2;
if (stringUnitsLength >= 2 && getFormatVersion() >= 3) {
- poolBundle.fStrings = new PseudoListResource(NULL, status);
- if (poolBundle.fStrings == NULL) {
+ poolBundle.fStrings = new PseudoListResource(nullptr, status);
+ if (poolBundle.fStrings == nullptr) {
fprintf(stderr, "unable to allocate memory for the pool bundle strings %s\n",
poolFileName.data());
return U_MEMORY_ALLOCATION_ERROR;
}
// The PseudoListResource constructor call did not allocate further memory.
assert(U_SUCCESS(status));
- const UChar *p = (const UChar *)(pRoot + keysTop);
+ const char16_t *p = (const char16_t *)(pRoot + keysTop);
int32_t remaining = stringUnitsLength;
do {
int32_t first = *p;
@@ -492,7 +492,7 @@ main(int argc,
StringResource *sr =
new StringResource(poolStringIndex, numCharsForLength,
p, length, status);
- if (sr == NULL) {
+ if (sr == nullptr) {
fprintf(stderr, "unable to allocate memory for a pool bundle string %s\n",
poolFileName.data());
return U_MEMORY_ALLOCATION_ERROR;
@@ -507,13 +507,13 @@ main(int argc,
} while (remaining > 0);
if (poolBundle.fStrings->fCount == 0) {
delete poolBundle.fStrings;
- poolBundle.fStrings = NULL;
+ poolBundle.fStrings = nullptr;
}
}
T_FileStream_close(poolFile);
setUsePoolBundle(true);
- if (isVerbose() && poolBundle.fStrings != NULL) {
+ if (isVerbose() && poolBundle.fStrings != nullptr) {
printf("number of shared strings: %d\n", (int)poolBundle.fStrings->fCount);
int32_t length = poolBundle.fStringIndexLimit + 1; // incl. last NUL
printf("16-bit units for strings: %6d = %6d bytes\n",
@@ -522,7 +522,7 @@ main(int argc,
}
if(!options[FORMAT_VERSION].doesOccur && getFormatVersion() == 3 &&
- poolBundle.fStrings == NULL &&
+ poolBundle.fStrings == nullptr &&
!options[WRITE_POOL_BUNDLE].doesOccur) {
// If we just default to formatVersion 3
// but there are no pool bundle strings to share
@@ -559,7 +559,7 @@ main(int argc,
if (isVerbose()) {
printf("Processing file \"%s\"\n", theCurrentFileName.data());
}
- processFile(arg, encoding, inputDir, outputDir, filterDir, NULL,
+ processFile(arg, encoding, inputDir, outputDir, filterDir, nullptr,
newPoolBundle.getAlias(),
options[NO_BINARY_COLLATION].doesOccur, status);
}
@@ -568,13 +568,13 @@ main(int argc,
if(U_SUCCESS(status) && options[WRITE_POOL_BUNDLE].doesOccur) {
const char* writePoolDir;
- if (options[WRITE_POOL_BUNDLE].value!=NULL) {
+ if (options[WRITE_POOL_BUNDLE].value!=nullptr) {
writePoolDir = options[WRITE_POOL_BUNDLE].value;
} else {
writePoolDir = outputDir;
}
char outputFileName[256];
- newPoolBundle->write(writePoolDir, NULL, outputFileName, sizeof(outputFileName), status);
+ newPoolBundle->write(writePoolDir, nullptr, outputFileName, sizeof(outputFileName), status);
if(U_FAILURE(status)) {
fprintf(stderr, "unable to write the pool bundle: %s\n", u_errorName(status));
}
@@ -608,14 +608,14 @@ processFile(const char *filename, const char *cp,
if (U_FAILURE(status)) {
return;
}
- if(filename==NULL){
+ if(filename==nullptr){
status=U_ILLEGAL_ARGUMENT_ERROR;
return;
}
- if(inputDir == NULL) {
+ if(inputDir == nullptr) {
const char *filenameBegin = uprv_strrchr(filename, U_FILE_SEP_CHAR);
- if (filenameBegin != NULL) {
+ if (filenameBegin != nullptr) {
/*
* When a filename ../../../data/root.txt is specified,
* we presume that the input directory is ../../../data
@@ -669,7 +669,7 @@ processFile(const char *filename, const char *cp,
return;
}
/* auto detected popular encodings? */
- if (cp!=NULL && isVerbose()) {
+ if (cp!=nullptr && isVerbose()) {
printf("autodetected encoding %s\n", cp);
}
/* Parse the data into an SRBRoot */
@@ -782,7 +782,7 @@ make_res_filename(const char *filename,
return 0;
}
- if(packageName != NULL)
+ if(packageName != nullptr)
{
pkgLen = (int32_t)(1 + uprv_strlen(packageName));
}
@@ -807,7 +807,7 @@ make_res_filename(const char *filename,
get_dirname(dirname, filename);
- if (outputDir == NULL) {
+ if (outputDir == nullptr) {
/* output in same dir as .txt */
resName = (char*) uprv_malloc(sizeof(char) * (uprv_strlen(dirname)
+ pkgLen
@@ -820,7 +820,7 @@ make_res_filename(const char *filename,
uprv_strcpy(resName, dirname);
- if(packageName != NULL)
+ if(packageName != nullptr)
{
uprv_strcat(resName, packageName);
uprv_strcat(resName, "_");
@@ -834,7 +834,7 @@ make_res_filename(const char *filename,
resName = (char*) uprv_malloc(sizeof(char) * (dirlen + pkgLen + basenamelen + 8));
- if (resName == NULL) {
+ if (resName == nullptr) {
status = U_MEMORY_ALLOCATION_ERROR;
goto finish;
}
@@ -846,7 +846,7 @@ make_res_filename(const char *filename,
resName[dirlen + 1] = '\0';
}
- if(packageName != NULL)
+ if(packageName != nullptr)
{
uprv_strcat(resName, packageName);
uprv_strcat(resName, "_");
diff --git a/Build/source/libs/icu/icu-src/source/tools/genrb/parse.cpp b/Build/source/libs/icu/icu-src/source/tools/genrb/parse.cpp
index 2c5d4952436..1e82bda6e5e 100644
--- a/Build/source/libs/icu/icu-src/source/tools/genrb/parse.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/genrb/parse.cpp
@@ -112,7 +112,7 @@ const char *tokenNames[TOK_TOKEN_COUNT] =
};
/* Just to store "TRUE" */
-//static const UChar trueValue[] = {0x0054, 0x0052, 0x0055, 0x0045, 0x0000};
+//static const char16_t trueValue[] = {0x0054, 0x0052, 0x0055, 0x0045, 0x0000};
typedef struct {
struct Lookahead lookahead[MAX_LOOKAHEAD + 1];
@@ -144,8 +144,8 @@ static struct SResource *parseResource(ParseState* state, char *tag, const struc
UString *value;
- getToken(&value, NULL, status);
- getToken(NULL, NULL, status); bad - value is now a different string
+ getToken(&value, nullptr, status);
+ getToken(nullptr, nullptr, status); bad - value is now a different string
*/
static void
initLookahead(ParseState* state, UCHARBUF *buf, UErrorCode *status)
@@ -195,17 +195,17 @@ getToken(ParseState* state, struct UString **tokenValue, struct UString* comment
result = state->lookahead[state->lookaheadPosition].type;
- if (tokenValue != NULL)
+ if (tokenValue != nullptr)
{
*tokenValue = &state->lookahead[state->lookaheadPosition].value;
}
- if (linenumber != NULL)
+ if (linenumber != nullptr)
{
*linenumber = state->lookahead[state->lookaheadPosition].line;
}
- if (comment != NULL)
+ if (comment != nullptr)
{
ustr_cpy(comment, &(state->lookahead[state->lookaheadPosition].comment), status);
}
@@ -237,17 +237,17 @@ peekToken(ParseState* state, uint32_t lookaheadCount, struct UString **tokenValu
return TOK_ERROR;
}
- if (tokenValue != NULL)
+ if (tokenValue != nullptr)
{
*tokenValue = &state->lookahead[i].value;
}
- if (linenumber != NULL)
+ if (linenumber != nullptr)
{
*linenumber = state->lookahead[i].line;
}
- if(comment != NULL){
+ if(comment != nullptr){
ustr_cpy(comment, &(state->lookahead[state->lookaheadPosition].comment), status);
}
@@ -261,7 +261,7 @@ expect(ParseState* state, enum ETokenType expectedToken, struct UString **tokenV
enum ETokenType token = getToken(state, tokenValue, comment, &line, status);
- if (linenumber != NULL)
+ if (linenumber != nullptr)
{
*linenumber = line;
}
@@ -292,21 +292,21 @@ static char *getInvariantString(ParseState* state, uint32_t *line, struct UStrin
if (U_FAILURE(*status))
{
- return NULL;
+ return nullptr;
}
if(!uprv_isInvariantUString(tokenValue->fChars, tokenValue->fLength)) {
*status = U_INVALID_FORMAT_ERROR;
error(*line, "invariant characters required for table keys, binary data, etc.");
- return NULL;
+ return nullptr;
}
result = static_cast<char *>(uprv_malloc(tokenValue->fLength+1));
- if (result == NULL)
+ if (result == nullptr)
{
*status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
u_UCharsToChars(tokenValue->fChars, result, tokenValue->fLength+1);
@@ -317,33 +317,33 @@ static char *getInvariantString(ParseState* state, uint32_t *line, struct UStrin
static struct SResource *
parseUCARules(ParseState* state, char *tag, uint32_t startline, const struct UString* /*comment*/, UErrorCode *status)
{
- struct SResource *result = NULL;
+ struct SResource *result = nullptr;
struct UString *tokenValue;
- FileStream *file = NULL;
+ FileStream *file = nullptr;
char filename[256] = { '\0' };
char cs[128] = { '\0' };
uint32_t line;
UBool quoted = false;
- UCHARBUF *ucbuf=NULL;
+ UCHARBUF *ucbuf=nullptr;
UChar32 c = 0;
- const char* cp = NULL;
- UChar *pTarget = NULL;
- UChar *target = NULL;
- UChar *targetLimit = NULL;
+ const char* cp = nullptr;
+ char16_t *pTarget = nullptr;
+ char16_t *target = nullptr;
+ char16_t *targetLimit = nullptr;
int32_t size = 0;
- expect(state, TOK_STRING, &tokenValue, NULL, &line, status);
+ expect(state, TOK_STRING, &tokenValue, nullptr, &line, status);
if(isVerbose()){
- printf(" %s at line %i \n", (tag == NULL) ? "(null)" : tag, (int)startline);
+ printf(" %s at line %i \n", (tag == nullptr) ? "(null)" : tag, (int)startline);
}
if (U_FAILURE(*status))
{
- return NULL;
+ return nullptr;
}
/* make the filename including the directory */
- if (state->inputdir != NULL)
+ if (state->inputdir != nullptr)
{
uprv_strcat(filename, state->inputdir);
@@ -355,11 +355,11 @@ parseUCARules(ParseState* state, char *tag, uint32_t startline, const struct USt
u_UCharsToChars(tokenValue->fChars, cs, tokenValue->fLength);
- expect(state, TOK_CLOSE_BRACE, NULL, NULL, NULL, status);
+ expect(state, TOK_CLOSE_BRACE, nullptr, nullptr, nullptr, status);
if (U_FAILURE(*status))
{
- return NULL;
+ return nullptr;
}
uprv_strcat(filename, cs);
@@ -371,7 +371,7 @@ parseUCARules(ParseState* state, char *tag, uint32_t startline, const struct USt
if (U_FAILURE(*status)) {
error(line, "An error occurred while opening the input file %s\n", filename);
- return NULL;
+ return nullptr;
}
/* We allocate more space than actually required
@@ -379,7 +379,7 @@ parseUCARules(ParseState* state, char *tag, uint32_t startline, const struct USt
* is not known in UTF-8 byte stream
*/
size = ucbuf_size(ucbuf) + 1;
- pTarget = (UChar*) uprv_malloc(U_SIZEOF_UCHAR * size);
+ pTarget = (char16_t*) uprv_malloc(U_SIZEOF_UCHAR * size);
uprv_memset(pTarget, 0, size*U_SIZEOF_UCHAR);
target = pTarget;
targetLimit = pTarget+size;
@@ -421,7 +421,7 @@ parseUCARules(ParseState* state, char *tag, uint32_t startline, const struct USt
{
uprv_free(pTarget);
T_FileStream_close(file);
- return NULL;
+ return nullptr;
}
}
else if (!quoted && (c == SPACE || c == TAB || c == CR || c == LF))
@@ -432,7 +432,7 @@ parseUCARules(ParseState* state, char *tag, uint32_t startline, const struct USt
continue;
}
- /* Append UChar * after dissembling if c > 0xffff*/
+ /* Append char16_t * after dissembling if c > 0xffff*/
if (c != (UChar32)U_EOF)
{
U_APPEND_CHAR32_ONLY(c, target);
@@ -448,7 +448,7 @@ parseUCARules(ParseState* state, char *tag, uint32_t startline, const struct USt
*target = 0x0000;
}
- result = string_open(state->bundle, tag, pTarget, (int32_t)(target - pTarget), NULL, status);
+ result = string_open(state->bundle, tag, pTarget, (int32_t)(target - pTarget), nullptr, status);
ucbuf_close(ucbuf);
@@ -461,30 +461,30 @@ parseUCARules(ParseState* state, char *tag, uint32_t startline, const struct USt
static struct SResource *
parseTransliterator(ParseState* state, char *tag, uint32_t startline, const struct UString* /*comment*/, UErrorCode *status)
{
- struct SResource *result = NULL;
+ struct SResource *result = nullptr;
struct UString *tokenValue;
- FileStream *file = NULL;
+ FileStream *file = nullptr;
char filename[256] = { '\0' };
char cs[128] = { '\0' };
uint32_t line;
- UCHARBUF *ucbuf=NULL;
- const char* cp = NULL;
- UChar *pTarget = NULL;
- const UChar *pSource = NULL;
+ UCHARBUF *ucbuf=nullptr;
+ const char* cp = nullptr;
+ char16_t *pTarget = nullptr;
+ const char16_t *pSource = nullptr;
int32_t size = 0;
- expect(state, TOK_STRING, &tokenValue, NULL, &line, status);
+ expect(state, TOK_STRING, &tokenValue, nullptr, &line, status);
if(isVerbose()){
- printf(" %s at line %i \n", (tag == NULL) ? "(null)" : tag, (int)startline);
+ printf(" %s at line %i \n", (tag == nullptr) ? "(null)" : tag, (int)startline);
}
if (U_FAILURE(*status))
{
- return NULL;
+ return nullptr;
}
/* make the filename including the directory */
- if (state->inputdir != NULL)
+ if (state->inputdir != nullptr)
{
uprv_strcat(filename, state->inputdir);
@@ -496,11 +496,11 @@ parseTransliterator(ParseState* state, char *tag, uint32_t startline, const stru
u_UCharsToChars(tokenValue->fChars, cs, tokenValue->fLength);
- expect(state, TOK_CLOSE_BRACE, NULL, NULL, NULL, status);
+ expect(state, TOK_CLOSE_BRACE, nullptr, nullptr, nullptr, status);
if (U_FAILURE(*status))
{
- return NULL;
+ return nullptr;
}
uprv_strcat(filename, cs);
@@ -509,7 +509,7 @@ parseTransliterator(ParseState* state, char *tag, uint32_t startline, const stru
if (U_FAILURE(*status)) {
error(line, "An error occurred while opening the input file %s\n", filename);
- return NULL;
+ return nullptr;
}
/* We allocate more space than actually required
@@ -517,7 +517,7 @@ parseTransliterator(ParseState* state, char *tag, uint32_t startline, const stru
* is not known in UTF-8 byte stream
*/
pSource = ucbuf_getBuffer(ucbuf, &size, status);
- pTarget = (UChar*) uprv_malloc(U_SIZEOF_UCHAR * (size + 1));
+ pTarget = (char16_t*) uprv_malloc(U_SIZEOF_UCHAR * (size + 1));
uprv_memset(pTarget, 0, size*U_SIZEOF_UCHAR);
#if !UCONFIG_NO_TRANSLITERATION
@@ -526,7 +526,7 @@ parseTransliterator(ParseState* state, char *tag, uint32_t startline, const stru
size = 0;
fprintf(stderr, " Warning: writing empty transliteration data ( UCONFIG_NO_TRANSLITERATION ) \n");
#endif
- result = string_open(state->bundle, tag, pTarget, size, NULL, status);
+ result = string_open(state->bundle, tag, pTarget, size, nullptr, status);
ucbuf_close(ucbuf);
uprv_free(pTarget);
@@ -534,30 +534,30 @@ parseTransliterator(ParseState* state, char *tag, uint32_t startline, const stru
return result;
}
-static ArrayResource* dependencyArray = NULL;
+static ArrayResource* dependencyArray = nullptr;
static struct SResource *
parseDependency(ParseState* state, char *tag, uint32_t startline, const struct UString* comment, UErrorCode *status)
{
- struct SResource *result = NULL;
- struct SResource *elem = NULL;
+ struct SResource *result = nullptr;
+ struct SResource *elem = nullptr;
struct UString *tokenValue;
uint32_t line;
char filename[256] = { '\0' };
char cs[128] = { '\0' };
- expect(state, TOK_STRING, &tokenValue, NULL, &line, status);
+ expect(state, TOK_STRING, &tokenValue, nullptr, &line, status);
if(isVerbose()){
- printf(" %s at line %i \n", (tag == NULL) ? "(null)" : tag, (int)startline);
+ printf(" %s at line %i \n", (tag == nullptr) ? "(null)" : tag, (int)startline);
}
if (U_FAILURE(*status))
{
- return NULL;
+ return nullptr;
}
/* make the filename including the directory */
- if (state->outputdir != NULL)
+ if (state->outputdir != nullptr)
{
uprv_strcat(filename, state->outputdir);
@@ -571,7 +571,7 @@ parseDependency(ParseState* state, char *tag, uint32_t startline, const struct U
if (U_FAILURE(*status))
{
- return NULL;
+ return nullptr;
}
uprv_strcat(filename, cs);
if(!T_FileStream_file_exists(filename)){
@@ -581,37 +581,37 @@ parseDependency(ParseState* state, char *tag, uint32_t startline, const struct U
warning(line, "The dependency file %s does not exist. Please make sure it exists.\n",filename);
}
}
- if(dependencyArray==NULL){
- dependencyArray = array_open(state->bundle, "%%DEPENDENCY", NULL, status);
+ if(dependencyArray==nullptr){
+ dependencyArray = array_open(state->bundle, "%%DEPENDENCY", nullptr, status);
}
- if(tag!=NULL){
+ if(tag!=nullptr){
result = string_open(state->bundle, tag, tokenValue->fChars, tokenValue->fLength, comment, status);
}
- elem = string_open(state->bundle, NULL, tokenValue->fChars, tokenValue->fLength, comment, status);
+ elem = string_open(state->bundle, nullptr, tokenValue->fChars, tokenValue->fLength, comment, status);
dependencyArray->add(elem);
if (U_FAILURE(*status))
{
- return NULL;
+ return nullptr;
}
- expect(state, TOK_CLOSE_BRACE, NULL, NULL, NULL, status);
+ expect(state, TOK_CLOSE_BRACE, nullptr, nullptr, nullptr, status);
return result;
}
static struct SResource *
parseString(ParseState* state, char *tag, uint32_t startline, const struct UString* comment, UErrorCode *status)
{
struct UString *tokenValue;
- struct SResource *result = NULL;
+ struct SResource *result = nullptr;
-/* if (tag != NULL && uprv_strcmp(tag, "%%UCARULES") == 0)
+/* if (tag != nullptr && uprv_strcmp(tag, "%%UCARULES") == 0)
{
return parseUCARules(tag, startline, status);
}*/
if(isVerbose()){
- printf(" string %s at line %i \n", (tag == NULL) ? "(null)" : tag, (int)startline);
+ printf(" string %s at line %i \n", (tag == nullptr) ? "(null)" : tag, (int)startline);
}
- expect(state, TOK_STRING, &tokenValue, NULL, NULL, status);
+ expect(state, TOK_STRING, &tokenValue, nullptr, nullptr, status);
if (U_SUCCESS(*status))
{
@@ -620,12 +620,12 @@ parseString(ParseState* state, char *tag, uint32_t startline, const struct UStri
result = string_open(state->bundle, tag, tokenValue->fChars, tokenValue->fLength, comment, status);
if(U_SUCCESS(*status) && result) {
- expect(state, TOK_CLOSE_BRACE, NULL, NULL, NULL, status);
+ expect(state, TOK_CLOSE_BRACE, nullptr, nullptr, nullptr, status);
if (U_FAILURE(*status))
{
res_close(result);
- return NULL;
+ return nullptr;
}
}
}
@@ -637,12 +637,12 @@ static struct SResource *
parseAlias(ParseState* state, char *tag, uint32_t startline, const struct UString *comment, UErrorCode *status)
{
struct UString *tokenValue;
- struct SResource *result = NULL;
+ struct SResource *result = nullptr;
- expect(state, TOK_STRING, &tokenValue, NULL, NULL, status);
+ expect(state, TOK_STRING, &tokenValue, nullptr, nullptr, status);
if(isVerbose()){
- printf(" alias %s at line %i \n", (tag == NULL) ? "(null)" : tag, (int)startline);
+ printf(" alias %s at line %i \n", (tag == nullptr) ? "(null)" : tag, (int)startline);
}
if (U_SUCCESS(*status))
@@ -652,12 +652,12 @@ parseAlias(ParseState* state, char *tag, uint32_t startline, const struct UStrin
result = alias_open(state->bundle, tag, tokenValue->fChars, tokenValue->fLength, comment, status);
- expect(state, TOK_CLOSE_BRACE, NULL, NULL, NULL, status);
+ expect(state, TOK_CLOSE_BRACE, nullptr, nullptr, nullptr, status);
if (U_FAILURE(*status))
{
res_close(result);
- return NULL;
+ return nullptr;
}
}
@@ -670,18 +670,18 @@ namespace {
static struct SResource* resLookup(struct SResource* res, const char* key){
if (res == res_none() || !res->isTable()) {
- return NULL;
+ return nullptr;
}
TableResource *list = static_cast<TableResource *>(res);
SResource *current = list->fFirst;
- while (current != NULL) {
+ while (current != nullptr) {
if (uprv_strcmp(((list->fRoot->fKeys) + (current->fKey)), key) == 0) {
return current;
}
current = current->fNext;
}
- return NULL;
+ return nullptr;
}
class GenrbImporter : public icu::CollationRuleParser::Importer {
@@ -717,9 +717,9 @@ GenrbImporter::getRules(
}
CharString inputDirBuf;
CharString openFileName;
- if(inputDir == NULL) {
+ if(inputDir == nullptr) {
const char *filenameBegin = uprv_strrchr(filename.data(), U_FILE_SEP_CHAR);
- if (filenameBegin != NULL) {
+ if (filenameBegin != nullptr) {
/*
* When a filename ../../../data/root.txt is specified,
* we presume that the input directory is ../../../data
@@ -779,11 +779,11 @@ GenrbImporter::getRules(
struct SResource *root = data->fRoot;
struct SResource *collations = resLookup(root, "collations");
- if (collations != NULL) {
+ if (collations != nullptr) {
struct SResource *collation = resLookup(collations, collationType);
- if (collation != NULL) {
+ if (collation != nullptr) {
struct SResource *sequence = resLookup(collation, "Sequence");
- if (sequence != NULL && sequence->isString()) {
+ if (sequence != nullptr && sequence->isString()) {
// No string pointer aliasing so that we need not hold onto the resource bundle.
StringResource *sr = static_cast<StringResource *>(sequence);
rules = sr->fString;
@@ -795,7 +795,7 @@ GenrbImporter::getRules(
// Quick-and-dirty escaping function.
// Assumes that we are on an ASCII-based platform.
static void
-escape(const UChar *s, char *buffer) {
+escape(const char16_t *s, char *buffer, size_t n) {
int32_t length = u_strlen(s);
int32_t i = 0;
for (;;) {
@@ -808,7 +808,7 @@ escape(const UChar *s, char *buffer) {
// printable ASCII
*buffer++ = (char)c; // assumes ASCII-based platform
} else {
- buffer += sprintf(buffer, "\\u%04X", (int)c);
+ buffer += snprintf(buffer, n, "\\u%04X", (int)c);
}
}
}
@@ -831,13 +831,13 @@ openTOML(const char* outputdir, const char* name, const char* collationType, con
outFileName.append(baseName, *status);
outFileName.append(".toml", *status);
if (U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
FILE* f = fopen(outFileName.data(), "w");
if (!f) {
*status = U_FILE_ACCESS_ERROR;
- return NULL;
+ return nullptr;
}
usrc_writeFileNameGeneratedBy(f, "#", baseName.data(), "genrb -X");
@@ -972,7 +972,7 @@ writeCollationDataTOML(const char* outputdir, const char* name, const char* coll
uint32_t trieDefault = root ? icu::Collation::UNASSIGNED_CE32 : icu::Collation::FALLBACK_CE32;
icu::LocalUMutableCPTriePointer builder(umutablecptrie_open(trieDefault, trieDefault, status));
- utrie2_enum(data->trie, NULL, &convertTrie, builder.getAlias());
+ utrie2_enum(data->trie, nullptr, &convertTrie, builder.getAlias());
// If the diacritic table was cut short, copy CE32s between the lowered
// limit and the max limit from the root to the tailoring. As of June 2022,
@@ -1149,7 +1149,7 @@ addCollation(ParseState* state, TableResource *result, const char *collationTyp
uint32_t startline, UErrorCode *status)
{
// TODO: Use LocalPointer for result, or make caller close it when there is a failure.
- struct SResource *member = NULL;
+ struct SResource *member = nullptr;
struct UString *tokenValue;
struct UString comment;
enum ETokenType token;
@@ -1186,7 +1186,7 @@ addCollation(ParseState* state, TableResource *result, const char *collationTyp
error(line, "Unexpected token %s", tokenNames[token]);
}
- return NULL;
+ return nullptr;
}
u_UCharsToChars(tokenValue->fChars, subtag, u_strlen(tokenValue->fChars) + 1);
@@ -1194,17 +1194,17 @@ addCollation(ParseState* state, TableResource *result, const char *collationTyp
if (U_FAILURE(*status))
{
res_close(result);
- return NULL;
+ return nullptr;
}
- member = parseResource(state, subtag, NULL, status);
+ member = parseResource(state, subtag, nullptr, status);
if (U_FAILURE(*status))
{
res_close(result);
- return NULL;
+ return nullptr;
}
- if (result == NULL)
+ if (result == nullptr)
{
// Ignore the parsed resources, continue parsing.
}
@@ -1223,7 +1223,7 @@ addCollation(ParseState* state, TableResource *result, const char *collationTyp
u_versionFromString(version, ver);
result->add(member, line, *status);
- member = NULL;
+ member = nullptr;
}
else if(uprv_strcmp(subtag, "%%CollationBin")==0)
{
@@ -1240,19 +1240,19 @@ addCollation(ParseState* state, TableResource *result, const char *collationTyp
/* to omit collation rules */
if(!state->omitCollationRules) {
result->add(member, line, *status);
- member = NULL;
+ member = nullptr;
}
}
else // Just copy non-special items.
{
result->add(member, line, *status);
- member = NULL;
+ member = nullptr;
}
res_close(member); // TODO: use LocalPointer
if (U_FAILURE(*status))
{
res_close(result);
- return NULL;
+ return nullptr;
}
}
@@ -1285,7 +1285,7 @@ addCollation(ParseState* state, TableResource *result, const char *collationTyp
if(U_FAILURE(intStatus)) {
error(line, "failed to load root collator (ucadata.icu) - %s", u_errorName(intStatus));
res_close(result);
- return NULL; // TODO: use LocalUResourceBundlePointer for result
+ return nullptr; // TODO: use LocalUResourceBundlePointer for result
}
icu::CollationBuilder builder(base, state->icu4xMode, intStatus);
if(state->icu4xMode || (uprv_strncmp(collationType, "search", 6) == 0)) {
@@ -1295,29 +1295,29 @@ addCollation(ParseState* state, TableResource *result, const char *collationTyp
builder.parseAndBuild(rules, version, &importer, &parseError, intStatus));
if(U_FAILURE(intStatus)) {
const char *reason = builder.getErrorReason();
- if(reason == NULL) { reason = ""; }
+ if(reason == nullptr) { reason = ""; }
error(line, "CollationBuilder failed at %s~%s/Sequence rule offset %ld: %s %s",
state->filename, collationType,
(long)parseError.offset, u_errorName(intStatus), reason);
if(parseError.preContext[0] != 0 || parseError.postContext[0] != 0) {
// Print pre- and post-context.
char preBuffer[100], postBuffer[100];
- escape(parseError.preContext, preBuffer);
- escape(parseError.postContext, postBuffer);
+ escape(parseError.preContext, preBuffer, sizeof(preBuffer));
+ escape(parseError.postContext, postBuffer, sizeof(postBuffer));
error(line, " error context: \"...%s\" ! \"%s...\"", preBuffer, postBuffer);
}
if(isStrict() || t.isNull()) {
*status = intStatus;
res_close(result);
- return NULL;
+ return nullptr;
}
}
if (state->icu4xMode) {
char *nameWithoutSuffix = static_cast<char *>(uprv_malloc(uprv_strlen(state->filename) + 1));
- if (nameWithoutSuffix == NULL) {
+ if (nameWithoutSuffix == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
res_close(result);
- return NULL;
+ return nullptr;
}
uprv_strcpy(nameWithoutSuffix, state->filename);
*uprv_strrchr(nameWithoutSuffix, '.') = 0;
@@ -1328,12 +1328,12 @@ addCollation(ParseState* state, TableResource *result, const char *collationTyp
icu::LocalMemory<uint8_t> buffer;
int32_t capacity = 100000;
uint8_t *dest = buffer.allocateInsteadAndCopy(capacity);
- if(dest == NULL) {
+ if(dest == nullptr) {
fprintf(stderr, "memory allocation (%ld bytes) for file contents failed\n",
(long)capacity);
*status = U_MEMORY_ALLOCATION_ERROR;
res_close(result);
- return NULL;
+ return nullptr;
}
int32_t indexes[icu::CollationDataReader::IX_TOTAL_SIZE + 1];
int32_t totalSize = icu::CollationDataWriter::writeTailoring(
@@ -1342,12 +1342,12 @@ addCollation(ParseState* state, TableResource *result, const char *collationTyp
intStatus = U_ZERO_ERROR;
capacity = totalSize;
dest = buffer.allocateInsteadAndCopy(capacity);
- if(dest == NULL) {
+ if(dest == nullptr) {
fprintf(stderr, "memory allocation (%ld bytes) for file contents failed\n",
(long)capacity);
*status = U_MEMORY_ALLOCATION_ERROR;
res_close(result);
- return NULL;
+ return nullptr;
}
totalSize = icu::CollationDataWriter::writeTailoring(
*t, *t->settings, indexes, dest, capacity, intStatus);
@@ -1356,7 +1356,7 @@ addCollation(ParseState* state, TableResource *result, const char *collationTyp
fprintf(stderr, "CollationDataWriter::writeTailoring() failed: %s\n",
u_errorName(intStatus));
res_close(result);
- return NULL;
+ return nullptr;
}
if(isVerbose()) {
printf("%s~%s collation tailoring part sizes:\n", state->filename, collationType);
@@ -1372,11 +1372,11 @@ addCollation(ParseState* state, TableResource *result, const char *collationTyp
icu::CollationInfo::printSizes(totalSize, indexes);
#endif
}
- struct SResource *collationBin = bin_open(state->bundle, "%%CollationBin", totalSize, dest, NULL, NULL, status);
+ struct SResource *collationBin = bin_open(state->bundle, "%%CollationBin", totalSize, dest, nullptr, nullptr, status);
result->add(collationBin, line, *status);
if (U_FAILURE(*status)) {
res_close(result);
- return NULL;
+ return nullptr;
}
#endif
return result;
@@ -1390,22 +1390,22 @@ keepCollationType(const char * /*type*/) {
static struct SResource *
parseCollationElements(ParseState* state, char *tag, uint32_t startline, UBool newCollation, UErrorCode *status)
{
- TableResource *result = NULL;
- struct SResource *member = NULL;
+ TableResource *result = nullptr;
+ struct SResource *member = nullptr;
struct UString *tokenValue;
struct UString comment;
enum ETokenType token;
char subtag[1024], typeKeyword[1024];
uint32_t line;
- result = table_open(state->bundle, tag, NULL, status);
+ result = table_open(state->bundle, tag, nullptr, status);
- if (result == NULL || U_FAILURE(*status))
+ if (result == nullptr || U_FAILURE(*status))
{
- return NULL;
+ return nullptr;
}
if(isVerbose()){
- printf(" collation elements %s at line %i \n", (tag == NULL) ? "(null)" : tag, (int)startline);
+ printf(" collation elements %s at line %i \n", (tag == nullptr) ? "(null)" : tag, (int)startline);
}
if(!newCollation) {
return addCollation(state, result, "(no type)", startline, status);
@@ -1434,7 +1434,7 @@ parseCollationElements(ParseState* state, char *tag, uint32_t startline, UBool n
error(line, "Unexpected token %s", tokenNames[token]);
}
- return NULL;
+ return nullptr;
}
u_UCharsToChars(tokenValue->fChars, subtag, u_strlen(tokenValue->fChars) + 1);
@@ -1442,17 +1442,17 @@ parseCollationElements(ParseState* state, char *tag, uint32_t startline, UBool n
if (U_FAILURE(*status))
{
res_close(result);
- return NULL;
+ return nullptr;
}
if (uprv_strcmp(subtag, "default") == 0)
{
- member = parseResource(state, subtag, NULL, status);
+ member = parseResource(state, subtag, nullptr, status);
if (U_FAILURE(*status))
{
res_close(result);
- return NULL;
+ return nullptr;
}
result->add(member, line, *status);
@@ -1467,13 +1467,13 @@ parseCollationElements(ParseState* state, char *tag, uint32_t startline, UBool n
token = getToken(state, &tokenValue, &comment, &line, status);
TableResource *collationRes;
if (keepCollationType(subtag)) {
- collationRes = table_open(state->bundle, subtag, NULL, status);
+ collationRes = table_open(state->bundle, subtag, nullptr, status);
} else {
- collationRes = NULL;
+ collationRes = nullptr;
}
// need to parse the collation data regardless
collationRes = addCollation(state, collationRes, subtag, startline, status);
- if (collationRes != NULL) {
+ if (collationRes != nullptr) {
result->add(collationRes, startline, *status);
}
} else if(token == TOK_COLON) { /* right now, we'll just try to see if we have aliases */
@@ -1481,34 +1481,34 @@ parseCollationElements(ParseState* state, char *tag, uint32_t startline, UBool n
token = peekToken(state, 1, &tokenValue, &line, &comment, status);
u_UCharsToChars(tokenValue->fChars, typeKeyword, u_strlen(tokenValue->fChars) + 1);
if(uprv_strcmp(typeKeyword, "alias") == 0) {
- member = parseResource(state, subtag, NULL, status);
+ member = parseResource(state, subtag, nullptr, status);
if (U_FAILURE(*status))
{
res_close(result);
- return NULL;
+ return nullptr;
}
result->add(member, line, *status);
} else {
res_close(result);
*status = U_INVALID_FORMAT_ERROR;
- return NULL;
+ return nullptr;
}
} else {
res_close(result);
*status = U_INVALID_FORMAT_ERROR;
- return NULL;
+ return nullptr;
}
}
/*member = string_open(bundle, subtag, tokenValue->fChars, tokenValue->fLength, status);*/
- /*expect(TOK_CLOSE_BRACE, NULL, NULL, status);*/
+ /*expect(TOK_CLOSE_BRACE, nullptr, nullptr, status);*/
if (U_FAILURE(*status))
{
res_close(result);
- return NULL;
+ return nullptr;
}
}
}
@@ -1519,8 +1519,8 @@ parseCollationElements(ParseState* state, char *tag, uint32_t startline, UBool n
static struct SResource *
realParseTable(ParseState* state, TableResource *table, char *tag, uint32_t startline, UErrorCode *status)
{
- struct SResource *member = NULL;
- struct UString *tokenValue=NULL;
+ struct SResource *member = nullptr;
+ struct UString *tokenValue=nullptr;
struct UString comment;
enum ETokenType token;
char subtag[1024];
@@ -1530,7 +1530,7 @@ realParseTable(ParseState* state, TableResource *table, char *tag, uint32_t star
/* '{' . (name resource)* '}' */
if(isVerbose()){
- printf(" parsing table %s at line %i \n", (tag == NULL) ? "(null)" : tag, (int)startline);
+ printf(" parsing table %s at line %i \n", (tag == nullptr) ? "(null)" : tag, (int)startline);
}
for (;;)
{
@@ -1558,7 +1558,7 @@ realParseTable(ParseState* state, TableResource *table, char *tag, uint32_t star
error(line, "unexpected token %s", tokenNames[token]);
}
- return NULL;
+ return nullptr;
}
if(uprv_isInvariantUString(tokenValue->fChars, -1)) {
@@ -1566,21 +1566,21 @@ realParseTable(ParseState* state, TableResource *table, char *tag, uint32_t star
} else {
*status = U_INVALID_FORMAT_ERROR;
error(line, "invariant characters required for table keys");
- return NULL;
+ return nullptr;
}
if (U_FAILURE(*status))
{
error(line, "parse error. Stopped parsing tokens with %s", u_errorName(*status));
- return NULL;
+ return nullptr;
}
member = parseResource(state, subtag, &comment, status);
- if (member == NULL || U_FAILURE(*status))
+ if (member == nullptr || U_FAILURE(*status))
{
error(line, "parse error. Stopped parsing resource with %s", u_errorName(*status));
- return NULL;
+ return nullptr;
}
table->add(member, line, *status);
@@ -1588,7 +1588,7 @@ realParseTable(ParseState* state, TableResource *table, char *tag, uint32_t star
if (U_FAILURE(*status))
{
error(line, "parse error. Stopped parsing table with %s", u_errorName(*status));
- return NULL;
+ return nullptr;
}
readToken = true;
ustr_deinit(&comment);
@@ -1597,29 +1597,29 @@ realParseTable(ParseState* state, TableResource *table, char *tag, uint32_t star
/* not reached */
/* A compiler warning will appear if all paths don't contain a return statement. */
/* *status = U_INTERNAL_PROGRAM_ERROR;
- return NULL;*/
+ return nullptr;*/
}
static struct SResource *
parseTable(ParseState* state, char *tag, uint32_t startline, const struct UString *comment, UErrorCode *status)
{
- if (tag != NULL && uprv_strcmp(tag, "CollationElements") == 0)
+ if (tag != nullptr && uprv_strcmp(tag, "CollationElements") == 0)
{
return parseCollationElements(state, tag, startline, false, status);
}
- if (tag != NULL && uprv_strcmp(tag, "collations") == 0)
+ if (tag != nullptr && uprv_strcmp(tag, "collations") == 0)
{
return parseCollationElements(state, tag, startline, true, status);
}
if(isVerbose()){
- printf(" table %s at line %i \n", (tag == NULL) ? "(null)" : tag, (int)startline);
+ printf(" table %s at line %i \n", (tag == nullptr) ? "(null)" : tag, (int)startline);
}
TableResource *result = table_open(state->bundle, tag, comment, status);
- if (result == NULL || U_FAILURE(*status))
+ if (result == nullptr || U_FAILURE(*status))
{
- return NULL;
+ return nullptr;
}
return realParseTable(state, result, tag, startline, status);
}
@@ -1627,7 +1627,7 @@ parseTable(ParseState* state, char *tag, uint32_t startline, const struct UStrin
static struct SResource *
parseArray(ParseState* state, char *tag, uint32_t startline, const struct UString *comment, UErrorCode *status)
{
- struct SResource *member = NULL;
+ struct SResource *member = nullptr;
struct UString *tokenValue;
struct UString memberComments;
enum ETokenType token;
@@ -1635,12 +1635,12 @@ parseArray(ParseState* state, char *tag, uint32_t startline, const struct UStrin
ArrayResource *result = array_open(state->bundle, tag, comment, status);
- if (result == NULL || U_FAILURE(*status))
+ if (result == nullptr || U_FAILURE(*status))
{
- return NULL;
+ return nullptr;
}
if(isVerbose()){
- printf(" array %s at line %i \n", (tag == NULL) ? "(null)" : tag, (int)startline);
+ printf(" array %s at line %i \n", (tag == nullptr) ? "(null)" : tag, (int)startline);
}
ustr_init(&memberComments);
@@ -1652,12 +1652,12 @@ parseArray(ParseState* state, char *tag, uint32_t startline, const struct UStrin
ustr_setlen(&memberComments, 0, status);
/* check for end of array, but don't consume next token unless it really is the end */
- token = peekToken(state, 0, &tokenValue, NULL, &memberComments, status);
+ token = peekToken(state, 0, &tokenValue, nullptr, &memberComments, status);
if (token == TOK_CLOSE_BRACE)
{
- getToken(state, NULL, NULL, NULL, status);
+ getToken(state, nullptr, nullptr, nullptr, status);
if (!readToken) {
warning(startline, "Encountered empty array");
}
@@ -1669,40 +1669,40 @@ parseArray(ParseState* state, char *tag, uint32_t startline, const struct UStrin
res_close(result);
*status = U_INVALID_FORMAT_ERROR;
error(startline, "unterminated array");
- return NULL;
+ return nullptr;
}
/* string arrays are a special case */
if (token == TOK_STRING)
{
- getToken(state, &tokenValue, &memberComments, NULL, status);
- member = string_open(state->bundle, NULL, tokenValue->fChars, tokenValue->fLength, &memberComments, status);
+ getToken(state, &tokenValue, &memberComments, nullptr, status);
+ member = string_open(state->bundle, nullptr, tokenValue->fChars, tokenValue->fLength, &memberComments, status);
}
else
{
- member = parseResource(state, NULL, &memberComments, status);
+ member = parseResource(state, nullptr, &memberComments, status);
}
- if (member == NULL || U_FAILURE(*status))
+ if (member == nullptr || U_FAILURE(*status))
{
res_close(result);
- return NULL;
+ return nullptr;
}
result->add(member);
/* eat optional comma if present */
- token = peekToken(state, 0, NULL, NULL, NULL, status);
+ token = peekToken(state, 0, nullptr, nullptr, nullptr, status);
if (token == TOK_COMMA)
{
- getToken(state, NULL, NULL, NULL, status);
+ getToken(state, nullptr, nullptr, nullptr, status);
}
if (U_FAILURE(*status))
{
res_close(result);
- return NULL;
+ return nullptr;
}
readToken = true;
}
@@ -1723,13 +1723,13 @@ parseIntVector(ParseState* state, char *tag, uint32_t startline, const struct US
IntVectorResource *result = intvector_open(state->bundle, tag, comment, status);
- if (result == NULL || U_FAILURE(*status))
+ if (result == nullptr || U_FAILURE(*status))
{
- return NULL;
+ return nullptr;
}
if(isVerbose()){
- printf(" vector %s at line %i \n", (tag == NULL) ? "(null)" : tag, (int)startline);
+ printf(" vector %s at line %i \n", (tag == nullptr) ? "(null)" : tag, (int)startline);
}
ustr_init(&memberComments);
/* '{' . string [','] '}' */
@@ -1738,12 +1738,12 @@ parseIntVector(ParseState* state, char *tag, uint32_t startline, const struct US
ustr_setlen(&memberComments, 0, status);
/* check for end of array, but don't consume next token unless it really is the end */
- token = peekToken(state, 0, NULL, NULL,&memberComments, status);
+ token = peekToken(state, 0, nullptr, nullptr,&memberComments, status);
if (token == TOK_CLOSE_BRACE)
{
/* it's the end, consume the close brace */
- getToken(state, NULL, NULL, NULL, status);
+ getToken(state, nullptr, nullptr, nullptr, status);
if (!readToken) {
warning(startline, "Encountered empty int vector");
}
@@ -1752,12 +1752,12 @@ parseIntVector(ParseState* state, char *tag, uint32_t startline, const struct US
}
int32_t stringLength;
- string = getInvariantString(state, NULL, NULL, stringLength, status);
+ string = getInvariantString(state, nullptr, nullptr, stringLength, status);
if (U_FAILURE(*status))
{
res_close(result);
- return NULL;
+ return nullptr;
}
/* For handling illegal char in the Intvector */
@@ -1768,7 +1768,7 @@ parseIntVector(ParseState* state, char *tag, uint32_t startline, const struct US
{
result->add(value, *status);
uprv_free(string);
- token = peekToken(state, 0, NULL, NULL, NULL, status);
+ token = peekToken(state, 0, nullptr, nullptr, nullptr, status);
}
else
{
@@ -1779,14 +1779,14 @@ parseIntVector(ParseState* state, char *tag, uint32_t startline, const struct US
if (U_FAILURE(*status))
{
res_close(result);
- return NULL;
+ return nullptr;
}
/* the comma is optional (even though it is required to prevent the reader from concatenating
consecutive entries) so that a missing comma on the last entry isn't an error */
if (token == TOK_COMMA)
{
- getToken(state, NULL, NULL, NULL, status);
+ getToken(state, nullptr, nullptr, nullptr, status);
}
readToken = true;
}
@@ -1795,7 +1795,7 @@ parseIntVector(ParseState* state, char *tag, uint32_t startline, const struct US
/* A compiler warning will appear if all paths don't contain a return statement. */
/* intvector_close(result, status);
*status = U_INTERNAL_PROGRAM_ERROR;
- return NULL;*/
+ return nullptr;*/
}
static struct SResource *
@@ -1803,28 +1803,28 @@ parseBinary(ParseState* state, char *tag, uint32_t startline, const struct UStri
{
uint32_t line;
int32_t stringLength;
- LocalMemory<char> string(getInvariantString(state, &line, NULL, stringLength, status));
+ LocalMemory<char> string(getInvariantString(state, &line, nullptr, stringLength, status));
if (string.isNull() || U_FAILURE(*status))
{
- return NULL;
+ return nullptr;
}
- expect(state, TOK_CLOSE_BRACE, NULL, NULL, NULL, status);
+ expect(state, TOK_CLOSE_BRACE, nullptr, nullptr, nullptr, status);
if (U_FAILURE(*status))
{
- return NULL;
+ return nullptr;
}
if(isVerbose()){
- printf(" binary %s at line %i \n", (tag == NULL) ? "(null)" : tag, (int)startline);
+ printf(" binary %s at line %i \n", (tag == nullptr) ? "(null)" : tag, (int)startline);
}
LocalMemory<uint8_t> value;
int32_t count = 0;
- if (stringLength > 0 && value.allocateInsteadAndCopy(stringLength) == NULL)
+ if (stringLength > 0 && value.allocateInsteadAndCopy(stringLength) == nullptr)
{
*status = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
char toConv[3] = {'\0', '\0', '\0'};
@@ -1836,7 +1836,7 @@ parseBinary(ParseState* state, char *tag, uint32_t startline, const struct UStri
if (i == stringLength) {
*status=U_INVALID_CHAR_FOUND;
error(line, "Encountered invalid binary value (odd number of hex digits)");
- return NULL;
+ return nullptr;
}
toConv[0] = c0;
toConv[1] = string[i++];
@@ -1849,44 +1849,44 @@ parseBinary(ParseState* state, char *tag, uint32_t startline, const struct UStri
{
*status=U_INVALID_CHAR_FOUND;
error(line, "Encountered invalid binary value (not all pairs of hex digits)");
- return NULL;
+ return nullptr;
}
}
if (count == 0) {
warning(startline, "Encountered empty binary value");
- return bin_open(state->bundle, tag, 0, NULL, "", comment, status);
+ return bin_open(state->bundle, tag, 0, nullptr, "", comment, status);
} else {
- return bin_open(state->bundle, tag, count, value.getAlias(), NULL, comment, status);
+ return bin_open(state->bundle, tag, count, value.getAlias(), nullptr, comment, status);
}
}
static struct SResource *
parseInteger(ParseState* state, char *tag, uint32_t startline, const struct UString *comment, UErrorCode *status)
{
- struct SResource *result = NULL;
+ struct SResource *result = nullptr;
int32_t value;
char *string;
char *stopstring;
int32_t stringLength;
- string = getInvariantString(state, NULL, NULL, stringLength, status);
+ string = getInvariantString(state, nullptr, nullptr, stringLength, status);
- if (string == NULL || U_FAILURE(*status))
+ if (string == nullptr || U_FAILURE(*status))
{
- return NULL;
+ return nullptr;
}
- expect(state, TOK_CLOSE_BRACE, NULL, NULL, NULL, status);
+ expect(state, TOK_CLOSE_BRACE, nullptr, nullptr, nullptr, status);
if (U_FAILURE(*status))
{
uprv_free(string);
- return NULL;
+ return nullptr;
}
if(isVerbose()){
- printf(" integer %s at line %i \n", (tag == NULL) ? "(null)" : tag, (int)startline);
+ printf(" integer %s at line %i \n", (tag == nullptr) ? "(null)" : tag, (int)startline);
}
if (stringLength == 0)
@@ -1916,48 +1916,48 @@ parseImport(ParseState* state, char *tag, uint32_t startline, const struct UStri
{
uint32_t line;
int32_t stringLength;
- LocalMemory<char> filename(getInvariantString(state, &line, NULL, stringLength, status));
+ LocalMemory<char> filename(getInvariantString(state, &line, nullptr, stringLength, status));
if (U_FAILURE(*status))
{
- return NULL;
+ return nullptr;
}
- expect(state, TOK_CLOSE_BRACE, NULL, NULL, NULL, status);
+ expect(state, TOK_CLOSE_BRACE, nullptr, nullptr, nullptr, status);
if (U_FAILURE(*status))
{
- return NULL;
+ return nullptr;
}
if(isVerbose()){
- printf(" import %s at line %i \n", (tag == NULL) ? "(null)" : tag, (int)startline);
+ printf(" import %s at line %i \n", (tag == nullptr) ? "(null)" : tag, (int)startline);
}
/* Open the input file for reading */
CharString fullname;
- if (state->inputdir != NULL) {
+ if (state->inputdir != nullptr) {
fullname.append(state->inputdir, *status);
}
fullname.appendPathPart(filename.getAlias(), *status);
if (U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
FileStream *file = T_FileStream_open(fullname.data(), "rb");
- if (file == NULL)
+ if (file == nullptr)
{
error(line, "couldn't open input file %s", filename.getAlias());
*status = U_FILE_ACCESS_ERROR;
- return NULL;
+ return nullptr;
}
int32_t len = T_FileStream_size(file);
LocalMemory<uint8_t> data;
- if(data.allocateInsteadAndCopy(len) == NULL)
+ if(data.allocateInsteadAndCopy(len) == nullptr)
{
*status = U_MEMORY_ALLOCATION_ERROR;
T_FileStream_close (file);
- return NULL;
+ return nullptr;
}
/* int32_t numRead = */ T_FileStream_read(file, data.getAlias(), len);
@@ -1973,43 +1973,43 @@ parseInclude(ParseState* state, char *tag, uint32_t startline, const struct UStr
int32_t len=0;
char *filename;
uint32_t line;
- UChar *pTarget = NULL;
+ char16_t *pTarget = nullptr;
UCHARBUF *ucbuf;
- char *fullname = NULL;
- const char* cp = NULL;
- const UChar* uBuffer = NULL;
+ char *fullname = nullptr;
+ const char* cp = nullptr;
+ const char16_t* uBuffer = nullptr;
int32_t stringLength;
- filename = getInvariantString(state, &line, NULL, stringLength, status);
+ filename = getInvariantString(state, &line, nullptr, stringLength, status);
if (U_FAILURE(*status))
{
- return NULL;
+ return nullptr;
}
- expect(state, TOK_CLOSE_BRACE, NULL, NULL, NULL, status);
+ expect(state, TOK_CLOSE_BRACE, nullptr, nullptr, nullptr, status);
if (U_FAILURE(*status))
{
uprv_free(filename);
- return NULL;
+ return nullptr;
}
if(isVerbose()){
- printf(" include %s at line %i \n", (tag == NULL) ? "(null)" : tag, (int)startline);
+ printf(" include %s at line %i \n", (tag == nullptr) ? "(null)" : tag, (int)startline);
}
fullname = (char *) uprv_malloc(state->inputdirLength + stringLength + 2);
- /* test for NULL */
- if(fullname == NULL)
+ /* test for nullptr */
+ if(fullname == nullptr)
{
*status = U_MEMORY_ALLOCATION_ERROR;
uprv_free(filename);
- return NULL;
+ return nullptr;
}
- if(state->inputdir!=NULL){
+ if(state->inputdir!=nullptr){
if (state->inputdir[state->inputdirLength - 1] != U_FILE_SEP_CHAR)
{
@@ -2033,7 +2033,7 @@ parseInclude(ParseState* state, char *tag, uint32_t startline, const struct UStr
if (U_FAILURE(*status)) {
error(line, "couldn't open input file %s\n", filename);
- return NULL;
+ return nullptr;
}
uBuffer = ucbuf_getBuffer(ucbuf,&len,status);
@@ -2094,14 +2094,14 @@ typedef enum EResourceType
static struct {
const char *nameChars; /* only used for debugging */
- const UChar *nameUChars;
+ const char16_t *nameUChars;
ParseResourceFunction *parseFunction;
} gResourceTypes[] = {
- {"Unknown", NULL, NULL},
+ {"Unknown", nullptr, nullptr},
{"string", k_type_string, parseString},
{"binary", k_type_binary, parseBinary},
{"table", k_type_table, parseTable},
- {"table(nofallback)", k_type_table_no_fallback, NULL}, /* parseFunction will never be called */
+ {"table(nofallback)", k_type_table_no_fallback, nullptr}, /* parseFunction will never be called */
{"integer", k_type_integer, parseInteger},
{"array", k_type_array, parseArray},
{"alias", k_type_alias, parseAlias},
@@ -2109,10 +2109,10 @@ static struct {
{"import", k_type_import, parseImport},
{"include", k_type_include, parseInclude},
{"process(uca_rules)", k_type_plugin_uca_rules, parseUCARules},
- {"process(collation)", k_type_plugin_collation, NULL /* not implemented yet */},
+ {"process(collation)", k_type_plugin_collation, nullptr /* not implemented yet */},
{"process(transliterator)", k_type_plugin_transliterator, parseTransliterator},
{"process(dependency)", k_type_plugin_dependency, parseDependency},
- {"reserved", NULL, NULL}
+ {"reserved", nullptr, nullptr}
};
void initParser()
@@ -2188,16 +2188,16 @@ parseResource(ParseState* state, char *tag, const struct UString *comment, UErro
{
enum ETokenType token;
enum EResourceType resType = RESTYPE_UNKNOWN;
- ParseResourceFunction *parseFunction = NULL;
+ ParseResourceFunction *parseFunction = nullptr;
struct UString *tokenValue;
uint32_t startline;
uint32_t line;
- token = getToken(state, &tokenValue, NULL, &startline, status);
+ token = getToken(state, &tokenValue, nullptr, &startline, status);
if(isVerbose()){
- printf(" resource %s at line %i \n", (tag == NULL) ? "(null)" : tag, (int)startline);
+ printf(" resource %s at line %i \n", (tag == nullptr) ? "(null)" : tag, (int)startline);
}
/* name . [ ':' type ] '{' resource '}' */
@@ -2209,19 +2209,19 @@ parseResource(ParseState* state, char *tag, const struct UString *comment, UErro
case TOK_EOF:
*status = U_INVALID_FORMAT_ERROR;
error(startline, "Unexpected EOF encountered");
- return NULL;
+ return nullptr;
case TOK_ERROR:
*status = U_INVALID_FORMAT_ERROR;
- return NULL;
+ return nullptr;
case TOK_COLON:
resType = parseResourceType(state, status);
- expect(state, TOK_OPEN_BRACE, &tokenValue, NULL, &startline, status);
+ expect(state, TOK_OPEN_BRACE, &tokenValue, nullptr, &startline, status);
if (U_FAILURE(*status))
{
- return NULL;
+ return nullptr;
}
break;
@@ -2232,7 +2232,7 @@ parseResource(ParseState* state, char *tag, const struct UString *comment, UErro
default:
*status = U_INVALID_FORMAT_ERROR;
error(startline, "syntax error while reading a resource, expected '{' or ':'");
- return NULL;
+ return nullptr;
}
@@ -2250,11 +2250,11 @@ parseResource(ParseState* state, char *tag, const struct UString *comment, UErro
{ string } => string
*/
- token = peekToken(state, 0, NULL, &line, NULL,status);
+ token = peekToken(state, 0, nullptr, &line, nullptr,status);
if (U_FAILURE(*status))
{
- return NULL;
+ return nullptr;
}
if (token == TOK_OPEN_BRACE || token == TOK_COLON ||token ==TOK_CLOSE_BRACE )
@@ -2263,11 +2263,11 @@ parseResource(ParseState* state, char *tag, const struct UString *comment, UErro
}
else if (token == TOK_STRING)
{
- token = peekToken(state, 1, NULL, &line, NULL, status);
+ token = peekToken(state, 1, nullptr, &line, nullptr, status);
if (U_FAILURE(*status))
{
- return NULL;
+ return nullptr;
}
switch (token)
@@ -2279,28 +2279,28 @@ parseResource(ParseState* state, char *tag, const struct UString *comment, UErro
default:
*status = U_INVALID_FORMAT_ERROR;
error(line, "Unexpected token after string, expected ',', '{' or '}'");
- return NULL;
+ return nullptr;
}
}
else
{
*status = U_INVALID_FORMAT_ERROR;
error(line, "Unexpected token after '{'");
- return NULL;
+ return nullptr;
}
/* printf("Type guessed as %s\n", resourceNames[resType]); */
} else if(resType == RESTYPE_TABLE_NO_FALLBACK) {
*status = U_INVALID_FORMAT_ERROR;
error(startline, "error: %s resource type not valid except on top bundle level", gResourceTypes[resType].nameChars);
- return NULL;
+ return nullptr;
}
/* We should now know what we need to parse next, so call the appropriate parser
function and return. */
parseFunction = gResourceTypes[resType].parseFunction;
- if (parseFunction != NULL) {
+ if (parseFunction != nullptr) {
return parseFunction(state, tag, startline, comment, status);
}
else {
@@ -2308,7 +2308,7 @@ parseResource(ParseState* state, char *tag, const struct UString *comment, UErro
error(startline, "internal error: %s resource type found and not handled", gResourceTypes[resType].nameChars);
}
- return NULL;
+ return nullptr;
}
/* parse the top-level resource */
@@ -2334,38 +2334,38 @@ parse(UCHARBUF *buf, const char *inputDir, const char *outputDir, const char *fi
initLookahead(&state, buf, status);
state.inputdir = inputDir;
- state.inputdirLength = (state.inputdir != NULL) ? (uint32_t)uprv_strlen(state.inputdir) : 0;
+ state.inputdirLength = (state.inputdir != nullptr) ? (uint32_t)uprv_strlen(state.inputdir) : 0;
state.outputdir = outputDir;
- state.outputdirLength = (state.outputdir != NULL) ? (uint32_t)uprv_strlen(state.outputdir) : 0;
+ state.outputdirLength = (state.outputdir != nullptr) ? (uint32_t)uprv_strlen(state.outputdir) : 0;
state.filename = filename;
state.makeBinaryCollation = makeBinaryCollation;
state.omitCollationRules = omitCollationRules;
state.icu4xMode = icu4xMode;
ustr_init(&comment);
- expect(&state, TOK_STRING, &tokenValue, &comment, NULL, status);
+ expect(&state, TOK_STRING, &tokenValue, &comment, nullptr, status);
state.bundle = new SRBRoot(&comment, false, *status);
- if (state.bundle == NULL || U_FAILURE(*status))
+ if (state.bundle == nullptr || U_FAILURE(*status))
{
delete state.bundle;
- return NULL;
+ return nullptr;
}
state.bundle->setLocale(tokenValue->fChars, *status);
/* The following code is to make Empty bundle work no matter with :table specifer or not */
- token = getToken(&state, NULL, NULL, &line, status);
+ token = getToken(&state, nullptr, nullptr, &line, status);
if(token==TOK_COLON) {
*status=U_ZERO_ERROR;
bundleType=parseResourceType(&state, status);
if(isTable(bundleType))
{
- expect(&state, TOK_OPEN_BRACE, NULL, NULL, &line, status);
+ expect(&state, TOK_OPEN_BRACE, nullptr, nullptr, &line, status);
}
else
{
@@ -2393,7 +2393,7 @@ parse(UCHARBUF *buf, const char *inputDir, const char *outputDir, const char *fi
if (U_FAILURE(*status))
{
delete state.bundle;
- return NULL;
+ return nullptr;
}
if(bundleType==RESTYPE_TABLE_NO_FALLBACK) {
@@ -2408,24 +2408,24 @@ parse(UCHARBUF *buf, const char *inputDir, const char *outputDir, const char *fi
assert(!state.bundle->fIsPoolBundle);
assert(state.bundle->fRoot->fType == URES_TABLE);
TableResource *rootTable = static_cast<TableResource *>(state.bundle->fRoot);
- realParseTable(&state, rootTable, NULL, line, status);
- if(dependencyArray!=NULL){
+ realParseTable(&state, rootTable, nullptr, line, status);
+ if(dependencyArray!=nullptr){
rootTable->add(dependencyArray, 0, *status);
- dependencyArray = NULL;
+ dependencyArray = nullptr;
}
if (U_FAILURE(*status))
{
delete state.bundle;
res_close(dependencyArray);
- return NULL;
+ return nullptr;
}
- if (getToken(&state, NULL, NULL, &line, status) != TOK_EOF)
+ if (getToken(&state, nullptr, nullptr, &line, status) != TOK_EOF)
{
warning(line, "extraneous text after resource bundle (perhaps unmatched braces)");
if(isStrict()){
*status = U_INVALID_FORMAT_ERROR;
- return NULL;
+ return nullptr;
}
}
diff --git a/Build/source/libs/icu/icu-src/source/tools/genrb/prscmnts.cpp b/Build/source/libs/icu/icu-src/source/tools/genrb/prscmnts.cpp
index cb835cb8c33..ea55352b41f 100644
--- a/Build/source/libs/icu/icu-src/source/tools/genrb/prscmnts.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/genrb/prscmnts.cpp
@@ -44,11 +44,11 @@ const char *patternStrings[UPC_LIMIT]={
};
U_CFUNC int32_t
-removeText(UChar *source, int32_t srcLen,
+removeText(char16_t *source, int32_t srcLen,
UnicodeString patString,uint32_t options,
UnicodeString replaceText, UErrorCode *status){
- if(status == NULL || U_FAILURE(*status)){
+ if(status == nullptr || U_FAILURE(*status)){
return 0;
}
@@ -68,7 +68,7 @@ removeText(UChar *source, int32_t srcLen,
}
U_CFUNC int32_t
-trim(UChar *src, int32_t srcLen, UErrorCode *status){
+trim(char16_t *src, int32_t srcLen, UErrorCode *status){
srcLen = removeText(src, srcLen, UnicodeString("^[ \\r\\n]+ "), 0, UnicodeString(), status); // remove leading new lines
srcLen = removeText(src, srcLen, UnicodeString("^\\s+"), 0, UnicodeString(), status); // remove leading spaces
srcLen = removeText(src, srcLen, UnicodeString("\\s+$"), 0, UnicodeString(), status); // remove trailing spcaes
@@ -76,7 +76,7 @@ trim(UChar *src, int32_t srcLen, UErrorCode *status){
}
U_CFUNC int32_t
-removeCmtText(UChar* source, int32_t srcLen, UErrorCode* status){
+removeCmtText(char16_t* source, int32_t srcLen, UErrorCode* status){
srcLen = trim(source, srcLen, status);
UnicodeString patString("^\\s*?\\*\\s*?"); // remove pattern like " * " at the beginning of the line
srcLen = removeText(source, srcLen, patString, UREGEX_MULTILINE, UnicodeString(), status);
@@ -84,12 +84,12 @@ removeCmtText(UChar* source, int32_t srcLen, UErrorCode* status){
}
U_CFUNC int32_t
-getText(const UChar* source, int32_t srcLen,
- UChar** dest, int32_t destCapacity,
+getText(const char16_t* source, int32_t srcLen,
+ char16_t** dest, int32_t destCapacity,
UnicodeString patternString,
UErrorCode* status){
- if(status == NULL || U_FAILURE(*status)){
+ if(status == nullptr || U_FAILURE(*status)){
return 0;
}
@@ -121,10 +121,10 @@ getText(const UChar* source, int32_t srcLen,
#define AT_SIGN 0x0040
U_CFUNC int32_t
-getDescription( const UChar* source, int32_t srcLen,
- UChar** dest, int32_t destCapacity,
+getDescription( const char16_t* source, int32_t srcLen,
+ char16_t** dest, int32_t destCapacity,
UErrorCode* status){
- if(status == NULL || U_FAILURE(*status)){
+ if(status == nullptr || U_FAILURE(*status)){
return 0;
}
@@ -137,7 +137,7 @@ getDescription( const UChar* source, int32_t srcLen,
}
pattern->split(src, stringArray,MAX_SPLIT_STRINGS , *status);
- if(stringArray[0].indexOf((UChar)AT_SIGN)==-1){
+ if(stringArray[0].indexOf((char16_t)AT_SIGN)==-1){
int32_t destLen = stringArray[0].extract(*dest, destCapacity, *status);
return trim(*dest, destLen, status);
}
@@ -145,10 +145,10 @@ getDescription( const UChar* source, int32_t srcLen,
}
U_CFUNC int32_t
-getCount(const UChar* source, int32_t srcLen,
+getCount(const char16_t* source, int32_t srcLen,
UParseCommentsOption option, UErrorCode *status){
- if(status == NULL || U_FAILURE(*status)){
+ if(status == nullptr || U_FAILURE(*status)){
return 0;
}
@@ -182,13 +182,13 @@ getCount(const UChar* source, int32_t srcLen,
}
U_CFUNC int32_t
-getAt(const UChar* source, int32_t srcLen,
- UChar** dest, int32_t destCapacity,
+getAt(const char16_t* source, int32_t srcLen,
+ char16_t** dest, int32_t destCapacity,
int32_t index,
UParseCommentsOption option,
UErrorCode* status){
- if(status == NULL || U_FAILURE(*status)){
+ if(status == nullptr || U_FAILURE(*status)){
return 0;
}
@@ -224,8 +224,8 @@ getAt(const UChar* source, int32_t srcLen,
}
U_CFUNC int32_t
-getTranslate( const UChar* source, int32_t srcLen,
- UChar** dest, int32_t destCapacity,
+getTranslate( const char16_t* source, int32_t srcLen,
+ char16_t** dest, int32_t destCapacity,
UErrorCode* status){
UnicodeString notePatternString("^translate\\s*?(.*)");
@@ -234,8 +234,8 @@ getTranslate( const UChar* source, int32_t srcLen,
}
U_CFUNC int32_t
-getNote(const UChar* source, int32_t srcLen,
- UChar** dest, int32_t destCapacity,
+getNote(const char16_t* source, int32_t srcLen,
+ char16_t** dest, int32_t destCapacity,
UErrorCode* status){
UnicodeString notePatternString("^note\\s*?(.*)");
diff --git a/Build/source/libs/icu/icu-src/source/tools/genrb/rbutil.c b/Build/source/libs/icu/icu-src/source/tools/genrb/rbutil.c
index 1983a2f4355..ed3e66b250a 100644
--- a/Build/source/libs/icu/icu-src/source/tools/genrb/rbutil.c
+++ b/Build/source/libs/icu/icu-src/source/tools/genrb/rbutil.c
@@ -30,7 +30,10 @@ void
get_dirname(char *dirname,
const char *filename)
{
- const char *lastSlash = uprv_strrchr(filename, U_FILE_SEP_CHAR) + 1;
+ const char *lastSlash = uprv_strrchr(filename, U_FILE_SEP_CHAR);
+ if (lastSlash != NULL) {
+ lastSlash++;
+ }
if(lastSlash>filename) {
uprv_strncpy(dirname, filename, (lastSlash - filename));
@@ -46,7 +49,10 @@ get_basename(char *basename,
const char *filename)
{
/* strip off any leading directory portions */
- const char *lastSlash = uprv_strrchr(filename, U_FILE_SEP_CHAR) + 1;
+ const char *lastSlash = uprv_strrchr(filename, U_FILE_SEP_CHAR);
+ if (lastSlash != NULL) {
+ lastSlash++;
+ }
char *lastDot;
if(lastSlash>filename) {
diff --git a/Build/source/libs/icu/icu-src/source/tools/genrb/reslist.cpp b/Build/source/libs/icu/icu-src/source/tools/genrb/reslist.cpp
index 4c854bd55b1..e1c2d25061c 100644
--- a/Build/source/libs/icu/icu-src/source/tools/genrb/reslist.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/genrb/reslist.cpp
@@ -89,7 +89,7 @@ static const ResFile kNoPoolBundle;
/*
* res_none() returns the address of kNoResource,
* for use in non-error cases when no resource is to be added to the bundle.
- * (NULL is used in error cases.)
+ * (nullptr is used in error cases.)
*/
static SResource kNoResource; // TODO: const
@@ -99,7 +99,7 @@ static UDataInfo dataInfo= {
U_IS_BIG_ENDIAN,
U_CHARSET_FAMILY,
- sizeof(UChar),
+ sizeof(char16_t),
0,
{0x52, 0x65, 0x73, 0x42}, /* dataFormat="ResB" */
@@ -126,7 +126,7 @@ void setIncludeCopyright(UBool val){
gIncludeCopyright=val;
}
-UBool getIncludeCopyright(void){
+UBool getIncludeCopyright(){
return gIncludeCopyright;
}
@@ -150,17 +150,17 @@ struct SResource* res_none() {
SResource::SResource()
: fType(URES_NONE), fWritten(false), fRes(RES_BOGUS), fRes16(-1), fKey(-1), fKey16(-1),
- line(0), fNext(NULL) {
+ line(0), fNext(nullptr) {
ustr_init(&fComment);
}
SResource::SResource(SRBRoot *bundle, const char *tag, int8_t type, const UString* comment,
UErrorCode &errorCode)
: fType(type), fWritten(false), fRes(RES_BOGUS), fRes16(-1),
- fKey(bundle != NULL ? bundle->addTag(tag, errorCode) : -1), fKey16(-1),
- line(0), fNext(NULL) {
+ fKey(bundle != nullptr ? bundle->addTag(tag, errorCode) : -1), fKey16(-1),
+ line(0), fNext(nullptr) {
ustr_init(&fComment);
- if(comment != NULL) {
+ if(comment != nullptr) {
ustr_cpy(&fComment, comment, &errorCode);
}
}
@@ -171,7 +171,7 @@ SResource::~SResource() {
ContainerResource::~ContainerResource() {
SResource *current = fFirst;
- while (current != NULL) {
+ while (current != nullptr) {
SResource *next = current->fNext;
delete current;
current = next;
@@ -182,7 +182,7 @@ TableResource::~TableResource() {}
// TODO: clarify that containers adopt new items, even in error cases; use LocalPointer
void TableResource::add(SResource *res, int linenumber, UErrorCode &errorCode) {
- if (U_FAILURE(errorCode) || res == NULL || res == &kNoResource) {
+ if (U_FAILURE(errorCode) || res == nullptr || res == &kNoResource) {
return;
}
@@ -193,9 +193,9 @@ void TableResource::add(SResource *res, int linenumber, UErrorCode &errorCode) {
++fCount;
/* is the list still empty? */
- if (fFirst == NULL) {
+ if (fFirst == nullptr) {
fFirst = res;
- res->fNext = NULL;
+ res->fNext = nullptr;
return;
}
@@ -203,8 +203,8 @@ void TableResource::add(SResource *res, int linenumber, UErrorCode &errorCode) {
SResource *current = fFirst;
- SResource *prev = NULL;
- while (current != NULL) {
+ SResource *prev = nullptr;
+ while (current != nullptr) {
const char *currentKeyString = fRoot->fKeys + current->fKey;
int diff;
/*
@@ -221,7 +221,7 @@ void TableResource::add(SResource *res, int linenumber, UErrorCode &errorCode) {
current = current->fNext;
} else if (diff > 0) {
/* we're either in front of the list, or in the middle */
- if (prev == NULL) {
+ if (prev == nullptr) {
/* front of the list */
fFirst = res;
} else {
@@ -241,14 +241,14 @@ void TableResource::add(SResource *res, int linenumber, UErrorCode &errorCode) {
/* end of list */
prev->fNext = res;
- res->fNext = NULL;
+ res->fNext = nullptr;
}
ArrayResource::~ArrayResource() {}
void ArrayResource::add(SResource *res) {
- if (res != NULL && res != &kNoResource) {
- if (fFirst == NULL) {
+ if (res != nullptr && res != &kNoResource) {
+ if (fFirst == nullptr) {
fFirst = res;
} else {
fLast->fNext = res;
@@ -261,7 +261,7 @@ void ArrayResource::add(SResource *res) {
PseudoListResource::~PseudoListResource() {}
void PseudoListResource::add(SResource *res) {
- if (res != NULL && res != &kNoResource) {
+ if (res != nullptr && res != &kNoResource) {
res->fNext = fFirst;
fFirst = res;
++fCount;
@@ -269,7 +269,7 @@ void PseudoListResource::add(SResource *res) {
}
StringBaseResource::StringBaseResource(SRBRoot *bundle, const char *tag, int8_t type,
- const UChar *value, int32_t len,
+ const char16_t *value, int32_t len,
const UString* comment, UErrorCode &errorCode)
: SResource(bundle, tag, type, comment, errorCode) {
if (len == 0 && gFormatVersion > 1) {
@@ -287,7 +287,7 @@ StringBaseResource::StringBaseResource(SRBRoot *bundle, const char *tag, int8_t
StringBaseResource::StringBaseResource(SRBRoot *bundle, int8_t type,
const icu::UnicodeString &value, UErrorCode &errorCode)
- : SResource(bundle, NULL, type, NULL, errorCode), fString(value) {
+ : SResource(bundle, nullptr, type, nullptr, errorCode), fString(value) {
if (value.isEmpty() && gFormatVersion > 1) {
fRes = URES_MAKE_EMPTY_RESOURCE(type);
fWritten = true;
@@ -301,9 +301,9 @@ StringBaseResource::StringBaseResource(SRBRoot *bundle, int8_t type,
}
// Pool bundle string, alias the buffer. Guaranteed NUL-terminated and not empty.
-StringBaseResource::StringBaseResource(int8_t type, const UChar *value, int32_t len,
+StringBaseResource::StringBaseResource(int8_t type, const char16_t *value, int32_t len,
UErrorCode &errorCode)
- : SResource(NULL, NULL, type, NULL, errorCode), fString(true, value, len) {
+ : SResource(nullptr, nullptr, type, nullptr, errorCode), fString(true, value, len) {
assert(len > 0);
assert(!fString.isBogus());
}
@@ -342,7 +342,7 @@ IntVectorResource::IntVectorResource(SRBRoot *bundle, const char *tag,
: SResource(bundle, tag, URES_INT_VECTOR, comment, errorCode),
fCount(0), fSize(RESLIST_INT_VECTOR_INIT_SIZE),
fArray(new uint32_t[fSize]) {
- if (fArray == NULL) {
+ if (fArray == nullptr) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -373,13 +373,13 @@ BinaryResource::BinaryResource(SRBRoot *bundle, const char *tag,
uint32_t length, uint8_t *data, const char* fileName,
const UString* comment, UErrorCode &errorCode)
: SResource(bundle, tag, URES_BINARY, comment, errorCode),
- fLength(length), fData(NULL), fFileName(NULL) {
+ fLength(length), fData(nullptr), fFileName(nullptr) {
if (U_FAILURE(errorCode)) {
return;
}
- if (fileName != NULL && *fileName != 0){
+ if (fileName != nullptr && *fileName != 0){
fFileName = new char[uprv_strlen(fileName)+1];
- if (fFileName == NULL) {
+ if (fFileName == nullptr) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -387,7 +387,7 @@ BinaryResource::BinaryResource(SRBRoot *bundle, const char *tag,
}
if (length > 0) {
fData = new uint8_t[length];
- if (fData == NULL) {
+ if (fData == nullptr) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -410,9 +410,9 @@ BinaryResource::~BinaryResource() {
void
StringResource::handlePreflightStrings(SRBRoot *bundle, UHashtable *stringSet,
UErrorCode &errorCode) {
- assert(fSame == NULL);
+ assert(fSame == nullptr);
fSame = static_cast<StringResource *>(uhash_get(stringSet, this));
- if (fSame != NULL) {
+ if (fSame != nullptr) {
// This is a duplicate of a pool bundle string or of an earlier-visited string.
if (++fSame->fNumCopies == 1) {
assert(fSame->fWritten);
@@ -430,7 +430,7 @@ StringResource::handlePreflightStrings(SRBRoot *bundle, UHashtable *stringSet,
if (bundle->fStringsForm != STRINGS_UTF16_V1) {
int32_t len = length();
if (len <= MAX_IMPLICIT_STRING_LENGTH &&
- !U16_IS_TRAIL(fString[0]) && fString.indexOf((UChar)0) < 0) {
+ !U16_IS_TRAIL(fString[0]) && fString.indexOf((char16_t)0) < 0) {
/*
* This string will be stored without an explicit length.
* Runtime will detect !U16_IS_TRAIL(s[0]) and call u_strlen().
@@ -450,7 +450,7 @@ StringResource::handlePreflightStrings(SRBRoot *bundle, UHashtable *stringSet,
void
ContainerResource::handlePreflightStrings(SRBRoot *bundle, UHashtable *stringSet,
UErrorCode &errorCode) {
- for (SResource *current = fFirst; current != NULL; current = current->fNext) {
+ for (SResource *current = fFirst; current != nullptr; current = current->fNext) {
current->preflightStrings(bundle, stringSet, errorCode);
}
}
@@ -503,7 +503,7 @@ SRBRoot::makeRes16(uint32_t resWord) const {
int32_t
SRBRoot::mapKey(int32_t oldpos) const {
const KeyMapEntry *map = fKeyMap;
- if (map == NULL) {
+ if (map == nullptr) {
return oldpos;
}
int32_t i, start, limit;
@@ -531,7 +531,7 @@ SRBRoot::mapKey(int32_t oldpos) const {
void
StringResource::handleWrite16(SRBRoot * /*bundle*/) {
SResource *same;
- if ((same = fSame) != NULL) {
+ if ((same = fSame) != nullptr) {
/* This is a duplicate. */
assert(same->fRes != RES_BOGUS && same->fWritten);
fRes = same->fRes;
@@ -541,8 +541,8 @@ StringResource::handleWrite16(SRBRoot * /*bundle*/) {
void
ContainerResource::writeAllRes16(SRBRoot *bundle) {
- for (SResource *current = fFirst; current != NULL; current = current->fNext) {
- bundle->f16BitUnits.append((UChar)current->fRes16);
+ for (SResource *current = fFirst; current != nullptr; current = current->fNext) {
+ bundle->f16BitUnits.append((char16_t)current->fRes16);
}
fWritten = true;
}
@@ -556,13 +556,13 @@ ArrayResource::handleWrite16(SRBRoot *bundle) {
}
int32_t res16 = 0;
- for (SResource *current = fFirst; current != NULL; current = current->fNext) {
+ for (SResource *current = fFirst; current != nullptr; current = current->fNext) {
current->write16(bundle);
res16 |= current->fRes16;
}
if (fCount <= 0xffff && res16 >= 0 && gFormatVersion > 1) {
fRes = URES_MAKE_RESOURCE(URES_ARRAY16, bundle->f16BitUnits.length());
- bundle->f16BitUnits.append((UChar)fCount);
+ bundle->f16BitUnits.append((char16_t)fCount);
writeAllRes16(bundle);
}
}
@@ -577,7 +577,7 @@ TableResource::handleWrite16(SRBRoot *bundle) {
/* Find the smallest table type that fits the data. */
int32_t key16 = 0;
int32_t res16 = 0;
- for (SResource *current = fFirst; current != NULL; current = current->fNext) {
+ for (SResource *current = fFirst; current != nullptr; current = current->fNext) {
current->write16(bundle);
key16 |= current->fKey16;
res16 |= current->fRes16;
@@ -589,9 +589,9 @@ TableResource::handleWrite16(SRBRoot *bundle) {
if (res16 >= 0 && gFormatVersion > 1) {
/* 16-bit count, key offsets and values */
fRes = URES_MAKE_RESOURCE(URES_TABLE16, bundle->f16BitUnits.length());
- bundle->f16BitUnits.append((UChar)fCount);
- for (SResource *current = fFirst; current != NULL; current = current->fNext) {
- bundle->f16BitUnits.append((UChar)current->fKey16);
+ bundle->f16BitUnits.append((char16_t)fCount);
+ for (SResource *current = fFirst; current != nullptr; current = current->fNext) {
+ bundle->f16BitUnits.append((char16_t)current->fKey16);
}
writeAllRes16(bundle);
} else {
@@ -691,7 +691,7 @@ BinaryResource::handlePreWrite(uint32_t *byteOffset) {
void
ContainerResource::preWriteAllRes(uint32_t *byteOffset) {
- for (SResource *current = fFirst; current != NULL; current = current->fNext) {
+ for (SResource *current = fFirst; current != nullptr; current = current->fNext) {
current->preWrite(byteOffset);
}
}
@@ -754,7 +754,7 @@ StringBaseResource::handleWrite(UNewDataMemory *mem, uint32_t *byteOffset) {
void
ContainerResource::writeAllRes(UNewDataMemory *mem, uint32_t *byteOffset) {
uint32_t i = 0;
- for (SResource *current = fFirst; current != NULL; ++i, current = current->fNext) {
+ for (SResource *current = fFirst; current != nullptr; ++i, current = current->fNext) {
current->write(mem, byteOffset);
}
assert(i == fCount);
@@ -762,7 +762,7 @@ ContainerResource::writeAllRes(UNewDataMemory *mem, uint32_t *byteOffset) {
void
ContainerResource::writeAllRes32(UNewDataMemory *mem, uint32_t *byteOffset) {
- for (SResource *current = fFirst; current != NULL; current = current->fNext) {
+ for (SResource *current = fFirst; current != nullptr; current = current->fNext) {
udata_write32(mem, current->fRes);
}
*byteOffset += fCount * 4;
@@ -808,7 +808,7 @@ TableResource::handleWrite(UNewDataMemory *mem, uint32_t *byteOffset) {
writeAllRes(mem, byteOffset);
if(fTableType == URES_TABLE) {
udata_write16(mem, (uint16_t)fCount);
- for (SResource *current = fFirst; current != NULL; current = current->fNext) {
+ for (SResource *current = fFirst; current != nullptr; current = current->fNext) {
udata_write16(mem, current->fKey16);
}
*byteOffset += (1 + fCount)* 2;
@@ -819,7 +819,7 @@ TableResource::handleWrite(UNewDataMemory *mem, uint32_t *byteOffset) {
}
} else /* URES_TABLE32 */ {
udata_write32(mem, fCount);
- for (SResource *current = fFirst; current != NULL; current = current->fNext) {
+ for (SResource *current = fFirst; current != nullptr; current = current->fNext) {
udata_write32(mem, (uint32_t)current->fKey);
}
*byteOffset += (1 + fCount)* 4;
@@ -850,7 +850,7 @@ SResource::handleWrite(UNewDataMemory * /*mem*/, uint32_t * /*byteOffset*/) {
void SRBRoot::write(const char *outputDir, const char *outputPkg,
char *writtenFilename, int writtenFilenameLen,
UErrorCode &errorCode) {
- UNewDataMemory *mem = NULL;
+ UNewDataMemory *mem = nullptr;
uint32_t byteOffset = 0;
uint32_t top, size;
char dataName[1024];
@@ -886,9 +886,9 @@ void SRBRoot::write(const char *outputDir, const char *outputPkg,
if (gFormatVersion > 1) {
stringSet = uhash_open(string_hash, string_comp, string_comp, &errorCode);
if (U_SUCCESS(errorCode) &&
- fUsePoolBundle != NULL && fUsePoolBundle->fStrings != NULL) {
+ fUsePoolBundle != nullptr && fUsePoolBundle->fStrings != nullptr) {
for (SResource *current = fUsePoolBundle->fStrings->fFirst;
- current != NULL;
+ current != nullptr;
current = current->fNext) {
StringResource *sr = static_cast<StringResource *>(current);
sr->fNumCopies = 0;
@@ -898,7 +898,7 @@ void SRBRoot::write(const char *outputDir, const char *outputPkg,
}
fRoot->preflightStrings(this, stringSet, errorCode);
} else {
- stringSet = NULL;
+ stringSet = nullptr;
}
if (fStringsForm == STRINGS_UTF16_V2 && f16BitStringsLength > 0) {
compactStringsV2(stringSet, errorCode);
@@ -938,7 +938,7 @@ void SRBRoot::write(const char *outputDir, const char *outputPkg,
return;
}
if (f16BitUnits.length() & 1) {
- f16BitUnits.append((UChar)0xaaaa); /* pad to multiple of 4 bytes */
+ f16BitUnits.append((char16_t)0xaaaa); /* pad to multiple of 4 bytes */
}
byteOffset = fKeysTop + f16BitUnits.length() * 2;
@@ -961,7 +961,7 @@ void SRBRoot::write(const char *outputDir, const char *outputPkg,
writtenFilename[off] = U_FILE_SEP_CHAR;
if (--writtenFilenameLen) {
++off;
- if(outputPkg != NULL)
+ if(outputPkg != nullptr)
{
uprv_strcpy(writtenFilename+off, outputPkg);
off += (int32_t)uprv_strlen(outputPkg);
@@ -996,7 +996,7 @@ void SRBRoot::write(const char *outputDir, const char *outputPkg,
uprv_memcpy(dataInfo.formatVersion, gFormatVersions + formatVersion, sizeof(UVersionInfo));
mem = udata_create(outputDir, "res", dataName,
- &dataInfo, (gIncludeCopyright==true)? U_COPYRIGHT_STRING:NULL, &errorCode);
+ &dataInfo, (gIncludeCopyright==true)? U_COPYRIGHT_STRING:nullptr, &errorCode);
if(U_FAILURE(errorCode)){
return;
}
@@ -1095,53 +1095,53 @@ void SRBRoot::write(const char *outputDir, const char *outputPkg,
TableResource* table_open(struct SRBRoot *bundle, const char *tag, const struct UString* comment, UErrorCode *status) {
LocalPointer<TableResource> res(new TableResource(bundle, tag, comment, *status), *status);
- return U_SUCCESS(*status) ? res.orphan() : NULL;
+ return U_SUCCESS(*status) ? res.orphan() : nullptr;
}
ArrayResource* array_open(struct SRBRoot *bundle, const char *tag, const struct UString* comment, UErrorCode *status) {
LocalPointer<ArrayResource> res(new ArrayResource(bundle, tag, comment, *status), *status);
- return U_SUCCESS(*status) ? res.orphan() : NULL;
+ return U_SUCCESS(*status) ? res.orphan() : nullptr;
}
-struct SResource *string_open(struct SRBRoot *bundle, const char *tag, const UChar *value, int32_t len, const struct UString* comment, UErrorCode *status) {
+struct SResource *string_open(struct SRBRoot *bundle, const char *tag, const char16_t *value, int32_t len, const struct UString* comment, UErrorCode *status) {
LocalPointer<SResource> res(
new StringResource(bundle, tag, value, len, comment, *status), *status);
- return U_SUCCESS(*status) ? res.orphan() : NULL;
+ return U_SUCCESS(*status) ? res.orphan() : nullptr;
}
-struct SResource *alias_open(struct SRBRoot *bundle, const char *tag, UChar *value, int32_t len, const struct UString* comment, UErrorCode *status) {
+struct SResource *alias_open(struct SRBRoot *bundle, const char *tag, char16_t *value, int32_t len, const struct UString* comment, UErrorCode *status) {
LocalPointer<SResource> res(
new AliasResource(bundle, tag, value, len, comment, *status), *status);
- return U_SUCCESS(*status) ? res.orphan() : NULL;
+ return U_SUCCESS(*status) ? res.orphan() : nullptr;
}
IntVectorResource *intvector_open(struct SRBRoot *bundle, const char *tag, const struct UString* comment, UErrorCode *status) {
LocalPointer<IntVectorResource> res(
new IntVectorResource(bundle, tag, comment, *status), *status);
- return U_SUCCESS(*status) ? res.orphan() : NULL;
+ return U_SUCCESS(*status) ? res.orphan() : nullptr;
}
struct SResource *int_open(struct SRBRoot *bundle, const char *tag, int32_t value, const struct UString* comment, UErrorCode *status) {
LocalPointer<SResource> res(new IntResource(bundle, tag, value, comment, *status), *status);
- return U_SUCCESS(*status) ? res.orphan() : NULL;
+ return U_SUCCESS(*status) ? res.orphan() : nullptr;
}
struct SResource *bin_open(struct SRBRoot *bundle, const char *tag, uint32_t length, uint8_t *data, const char* fileName, const struct UString* comment, UErrorCode *status) {
LocalPointer<SResource> res(
new BinaryResource(bundle, tag, length, data, fileName, comment, *status), *status);
- return U_SUCCESS(*status) ? res.orphan() : NULL;
+ return U_SUCCESS(*status) ? res.orphan() : nullptr;
}
SRBRoot::SRBRoot(const UString *comment, UBool isPoolBundle, UErrorCode &errorCode)
- : fRoot(NULL), fLocale(NULL), fIndexLength(0), fMaxTableLength(0), fNoFallback(false),
+ : fRoot(nullptr), fLocale(nullptr), fIndexLength(0), fMaxTableLength(0), fNoFallback(false),
fStringsForm(STRINGS_UTF16_V1), fIsPoolBundle(isPoolBundle),
- fKeys(NULL), fKeyMap(NULL),
+ fKeys(nullptr), fKeyMap(nullptr),
fKeysBottom(0), fKeysTop(0), fKeysCapacity(0),
fKeysCount(0), fLocalKeyLimit(0),
f16BitUnits(), f16BitStringsLength(0),
fUsePoolBundle(&kNoPoolBundle),
fPoolStringIndexLimit(0), fPoolStringIndex16Limit(0), fLocalStringIndexLimit(0),
- fWritePoolBundle(NULL) {
+ fWritePoolBundle(nullptr) {
if (U_FAILURE(errorCode)) {
return;
}
@@ -1149,16 +1149,16 @@ SRBRoot::SRBRoot(const UString *comment, UBool isPoolBundle, UErrorCode &errorCo
if (gFormatVersion > 1) {
// f16BitUnits must start with a zero for empty resources.
// We might be able to omit it if there are no empty 16-bit resources.
- f16BitUnits.append((UChar)0);
+ f16BitUnits.append((char16_t)0);
}
fKeys = (char *) uprv_malloc(sizeof(char) * KEY_SPACE_SIZE);
if (isPoolBundle) {
fRoot = new PseudoListResource(this, errorCode);
} else {
- fRoot = new TableResource(this, NULL, comment, errorCode);
+ fRoot = new TableResource(this, nullptr, comment, errorCode);
}
- if (fKeys == NULL || fRoot == NULL || U_FAILURE(errorCode)) {
+ if (fKeys == nullptr || fRoot == nullptr || U_FAILURE(errorCode)) {
if (U_SUCCESS(errorCode)) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
}
@@ -1200,14 +1200,14 @@ SRBRoot::~SRBRoot() {
/* Misc Functions */
-void SRBRoot::setLocale(UChar *locale, UErrorCode &errorCode) {
+void SRBRoot::setLocale(char16_t *locale, UErrorCode &errorCode) {
if(U_FAILURE(errorCode)) {
return;
}
uprv_free(fLocale);
fLocale = (char*) uprv_malloc(sizeof(char) * (u_strlen(locale)+1));
- if(fLocale == NULL) {
+ if(fLocale == nullptr) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -1227,7 +1227,7 @@ SRBRoot::getKeyString(int32_t key) const {
const char *
SResource::getKeyString(const SRBRoot *bundle) const {
if (fKey == -1) {
- return NULL;
+ return nullptr;
}
return bundle->getKeyString(fKey);
}
@@ -1248,7 +1248,7 @@ SRBRoot::addKeyBytes(const char *keyBytes, int32_t length, UErrorCode &errorCode
if (U_FAILURE(errorCode)) {
return -1;
}
- if (length < 0 || (keyBytes == NULL && length != 0)) {
+ if (length < 0 || (keyBytes == nullptr && length != 0)) {
errorCode = U_ILLEGAL_ARGUMENT_ERROR;
return -1;
}
@@ -1262,7 +1262,7 @@ SRBRoot::addKeyBytes(const char *keyBytes, int32_t length, UErrorCode &errorCode
/* overflow - resize the keys buffer */
fKeysCapacity += KEY_SPACE_SIZE;
fKeys = static_cast<char *>(uprv_realloc(fKeys, fKeysCapacity));
- if(fKeys == NULL) {
+ if(fKeys == nullptr) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
return -1;
}
@@ -1281,7 +1281,7 @@ SRBRoot::addTag(const char *tag, UErrorCode &errorCode) {
return -1;
}
- if (tag == NULL) {
+ if (tag == nullptr) {
/* no error: the root table and array items have no keys */
return -1;
}
@@ -1352,7 +1352,7 @@ void SResource::collectKeys(std::function<void(int32_t)> collector) const {
void ContainerResource::collectKeys(std::function<void(int32_t)> collector) const {
collector(fKey);
- for (SResource* curr = fFirst; curr != NULL; curr = curr->fNext) {
+ for (SResource* curr = fFirst; curr != nullptr; curr = curr->fNext) {
curr->collectKeys(collector);
}
}
@@ -1376,11 +1376,11 @@ SRBRoot::compactKeys(UErrorCode &errorCode) {
}
int32_t keysCount = fUsePoolBundle->fKeysCount + fKeysCount;
- if (U_FAILURE(errorCode) || fKeyMap != NULL) {
+ if (U_FAILURE(errorCode) || fKeyMap != nullptr) {
return;
}
map = (KeyMapEntry *)uprv_malloc(keysCount * sizeof(KeyMapEntry));
- if (map == NULL) {
+ if (map == nullptr) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -1466,7 +1466,7 @@ SRBRoot::compactKeys(UErrorCode &errorCode) {
* to squeeze out unused bytes, and readjust the newpos offsets.
*/
uprv_sortArray(map, keysCount, (int32_t)sizeof(KeyMapEntry),
- compareKeyNewpos, NULL, false, &errorCode);
+ compareKeyNewpos, nullptr, false, &errorCode);
if (U_SUCCESS(errorCode)) {
int32_t oldpos, newpos, limit;
oldpos = newpos = fKeysBottom;
@@ -1491,11 +1491,11 @@ SRBRoot::compactKeys(UErrorCode &errorCode) {
fKeysTop = newpos;
/* Re-sort once more, by old offsets for binary searching. */
uprv_sortArray(map, keysCount, (int32_t)sizeof(KeyMapEntry),
- compareKeyOldpos, NULL, false, &errorCode);
+ compareKeyOldpos, nullptr, false, &errorCode);
if (U_SUCCESS(errorCode)) {
/* key size reduction by limit - newpos */
fKeyMap = map;
- map = NULL;
+ map = nullptr;
}
}
}
@@ -1506,10 +1506,10 @@ static int32_t U_CALLCONV
compareStringSuffixes(const void * /*context*/, const void *l, const void *r) {
const StringResource *left = *((const StringResource **)l);
const StringResource *right = *((const StringResource **)r);
- const UChar *lStart = left->getBuffer();
- const UChar *lLimit = lStart + left->length();
- const UChar *rStart = right->getBuffer();
- const UChar *rLimit = rStart + right->length();
+ const char16_t *lStart = left->getBuffer();
+ const char16_t *lLimit = lStart + left->length();
+ const char16_t *rStart = right->getBuffer();
+ const char16_t *rLimit = rStart + right->length();
int32_t diff;
/* compare keys in reverse character order */
while (lStart < lLimit && rStart < rLimit) {
@@ -1528,7 +1528,7 @@ compareStringLengths(const void * /*context*/, const void *l, const void *r) {
const StringResource *right = *((const StringResource **)r);
int32_t diff;
/* Make "is suffix of another string" compare greater than a non-suffix. */
- diff = (int)(left->fSame != NULL) - (int)(right->fSame != NULL);
+ diff = (int)(left->fSame != nullptr) - (int)(right->fSame != nullptr);
if (diff != 0) {
return diff;
}
@@ -1555,22 +1555,22 @@ StringResource::writeUTF16v2(int32_t base, UnicodeString &dest) {
case 0:
break;
case 1:
- dest.append((UChar)(0xdc00 + len));
+ dest.append((char16_t)(0xdc00 + len));
break;
case 2:
- dest.append((UChar)(0xdfef + (len >> 16)));
- dest.append((UChar)len);
+ dest.append((char16_t)(0xdfef + (len >> 16)));
+ dest.append((char16_t)len);
break;
case 3:
- dest.append((UChar)0xdfff);
- dest.append((UChar)(len >> 16));
- dest.append((UChar)len);
+ dest.append((char16_t)0xdfff);
+ dest.append((char16_t)(len >> 16));
+ dest.append((char16_t)len);
break;
default:
break; /* will not occur */
}
dest.append(fString);
- dest.append((UChar)0);
+ dest.append((char16_t)0);
}
void
@@ -1591,7 +1591,7 @@ SRBRoot::compactStringsV2(UHashtable *stringSet, UErrorCode &errorCode) {
}
/* Sort the strings so that each one is immediately followed by all of its suffixes. */
uprv_sortArray(array.getAlias(), count, (int32_t)sizeof(struct SResource **),
- compareStringSuffixes, NULL, false, &errorCode);
+ compareStringSuffixes, nullptr, false, &errorCode);
if (U_FAILURE(errorCode)) {
return;
}
@@ -1649,7 +1649,7 @@ SRBRoot::compactStringsV2(UHashtable *stringSet, UErrorCode &errorCode) {
* Keep as many as possible within reach of 16-bit offsets.
*/
uprv_sortArray(array.getAlias(), count, (int32_t)sizeof(struct SResource **),
- compareStringLengths, NULL, false, &errorCode);
+ compareStringLengths, nullptr, false, &errorCode);
if (U_FAILURE(errorCode)) {
return;
}
@@ -1691,7 +1691,7 @@ SRBRoot::compactStringsV2(UHashtable *stringSet, UErrorCode &errorCode) {
assert(fPoolStringIndexLimit <= fUsePoolBundle->fStringIndexLimit);
/* Write the non-suffix strings. */
int32_t i;
- for (i = 0; i < count && array[i]->fSame == NULL; ++i) {
+ for (i = 0; i < count && array[i]->fSame == nullptr; ++i) {
StringResource *res = array[i];
if (!res->fWritten) {
int32_t localStringIndex = f16BitUnits.length();
@@ -1705,14 +1705,14 @@ SRBRoot::compactStringsV2(UHashtable *stringSet, UErrorCode &errorCode) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
return;
}
- if (fWritePoolBundle != NULL && gFormatVersion >= 3) {
+ if (fWritePoolBundle != nullptr && gFormatVersion >= 3) {
PseudoListResource *poolStrings =
static_cast<PseudoListResource *>(fWritePoolBundle->fRoot);
- for (i = 0; i < count && array[i]->fSame == NULL; ++i) {
+ for (i = 0; i < count && array[i]->fSame == nullptr; ++i) {
assert(!array[i]->fString.isEmpty());
StringResource *poolString =
new StringResource(fWritePoolBundle, array[i]->fString, errorCode);
- if (poolString == NULL) {
+ if (poolString == nullptr) {
errorCode = U_MEMORY_ALLOCATION_ERROR;
break;
}
diff --git a/Build/source/libs/icu/icu-src/source/tools/genrb/reslist.h b/Build/source/libs/icu/icu-src/source/tools/genrb/reslist.h
index c9731880ea6..17797bc36cb 100644
--- a/Build/source/libs/icu/icu-src/source/tools/genrb/reslist.h
+++ b/Build/source/libs/icu/icu-src/source/tools/genrb/reslist.h
@@ -44,9 +44,9 @@ class ResKeyPath;
struct ResFile {
ResFile()
- : fBytes(NULL), fIndexes(NULL),
- fKeys(NULL), fKeysLength(0), fKeysCount(0),
- fStrings(NULL), fStringIndexLimit(0),
+ : fBytes(nullptr), fIndexes(nullptr),
+ fKeys(nullptr), fKeysLength(0), fKeysCount(0),
+ fStrings(nullptr), fStringIndexLimit(0),
fChecksum(0) {}
~ResFile() { close(); }
@@ -78,7 +78,7 @@ struct SRBRoot {
void write(const char *outputDir, const char *outputPkg,
char *writtenFilename, int writtenFilenameLen, UErrorCode &errorCode);
- void setLocale(UChar *locale, UErrorCode &errorCode);
+ void setLocale(char16_t *locale, UErrorCode &errorCode);
int32_t addTag(const char *tag, UErrorCode &errorCode);
const char *getKeyString(int32_t key) const;
@@ -137,9 +137,9 @@ void bundle_write_xml(struct SRBRoot *bundle, const char *outputDir,const char*
/*
* Return a unique pointer to a dummy object,
* for use in non-error cases when no resource is to be added to the bundle.
- * (NULL is used in error cases.)
+ * (nullptr is used in error cases.)
*/
-struct SResource* res_none(void);
+struct SResource* res_none();
class ArrayResource;
class TableResource;
@@ -149,9 +149,9 @@ TableResource *table_open(struct SRBRoot *bundle, const char *tag, const struct
ArrayResource *array_open(struct SRBRoot *bundle, const char *tag, const struct UString* comment, UErrorCode *status);
-struct SResource *string_open(struct SRBRoot *bundle, const char *tag, const UChar *value, int32_t len, const struct UString* comment, UErrorCode *status);
+struct SResource *string_open(struct SRBRoot *bundle, const char *tag, const char16_t *value, int32_t len, const struct UString* comment, UErrorCode *status);
-struct SResource *alias_open(struct SRBRoot *bundle, const char *tag, UChar *value, int32_t len, const struct UString* comment, UErrorCode *status);
+struct SResource *alias_open(struct SRBRoot *bundle, const char *tag, char16_t *value, int32_t len, const struct UString* comment, UErrorCode *status);
IntVectorResource *intvector_open(struct SRBRoot *bundle, const char *tag, const struct UString* comment, UErrorCode *status);
@@ -245,7 +245,7 @@ public:
ContainerResource(SRBRoot *bundle, const char *tag, int8_t type,
const UString* comment, UErrorCode &errorCode)
: SResource(bundle, tag, type, comment, errorCode),
- fCount(0), fFirst(NULL) {}
+ fCount(0), fFirst(nullptr) {}
virtual ~ContainerResource();
void handlePreflightStrings(SRBRoot *bundle, UHashtable *stringSet, UErrorCode &errorCode) override;
@@ -289,7 +289,7 @@ public:
ArrayResource(SRBRoot *bundle, const char *tag,
const UString* comment, UErrorCode &errorCode)
: ContainerResource(bundle, tag, URES_ARRAY, comment, errorCode),
- fLast(NULL) {}
+ fLast(nullptr) {}
virtual ~ArrayResource();
void add(SResource *res);
@@ -308,7 +308,7 @@ public:
class PseudoListResource : public ContainerResource {
public:
PseudoListResource(SRBRoot *bundle, UErrorCode &errorCode)
- : ContainerResource(bundle, NULL, URES_TABLE, NULL, errorCode) {}
+ : ContainerResource(bundle, nullptr, URES_TABLE, nullptr, errorCode) {}
virtual ~PseudoListResource();
void add(SResource *res);
@@ -319,14 +319,14 @@ public:
class StringBaseResource : public SResource {
public:
StringBaseResource(SRBRoot *bundle, const char *tag, int8_t type,
- const UChar *value, int32_t len,
+ const char16_t *value, int32_t len,
const UString* comment, UErrorCode &errorCode);
StringBaseResource(SRBRoot *bundle, int8_t type,
const icu::UnicodeString &value, UErrorCode &errorCode);
- StringBaseResource(int8_t type, const UChar *value, int32_t len, UErrorCode &errorCode);
+ StringBaseResource(int8_t type, const char16_t *value, int32_t len, UErrorCode &errorCode);
virtual ~StringBaseResource();
- const UChar *getBuffer() const { return icu::toUCharPtr(fString.getBuffer()); }
+ const char16_t *getBuffer() const { return icu::toUCharPtr(fString.getBuffer()); }
int32_t length() const { return fString.length(); }
virtual void handlePreWrite(uint32_t *byteOffset) override;
@@ -338,20 +338,20 @@ public:
class StringResource : public StringBaseResource {
public:
- StringResource(SRBRoot *bundle, const char *tag, const UChar *value, int32_t len,
+ StringResource(SRBRoot *bundle, const char *tag, const char16_t *value, int32_t len,
const UString* comment, UErrorCode &errorCode)
: StringBaseResource(bundle, tag, URES_STRING, value, len, comment, errorCode),
- fSame(NULL), fSuffixOffset(0),
+ fSame(nullptr), fSuffixOffset(0),
fNumCopies(0), fNumUnitsSaved(0), fNumCharsForLength(0) {}
StringResource(SRBRoot *bundle, const icu::UnicodeString &value, UErrorCode &errorCode)
: StringBaseResource(bundle, URES_STRING, value, errorCode),
- fSame(NULL), fSuffixOffset(0),
+ fSame(nullptr), fSuffixOffset(0),
fNumCopies(0), fNumUnitsSaved(0), fNumCharsForLength(0) {}
StringResource(int32_t poolStringIndex, int8_t numCharsForLength,
- const UChar *value, int32_t length,
+ const char16_t *value, int32_t length,
UErrorCode &errorCode)
: StringBaseResource(URES_STRING, value, length, errorCode),
- fSame(NULL), fSuffixOffset(0),
+ fSame(nullptr), fSuffixOffset(0),
fNumCopies(0), fNumUnitsSaved(0), fNumCharsForLength(numCharsForLength) {
// v3 pool string encoded as string-v2 with low offset
fRes = URES_MAKE_RESOURCE(URES_STRING_V2, poolStringIndex);
@@ -377,7 +377,7 @@ public:
class AliasResource : public StringBaseResource {
public:
- AliasResource(SRBRoot *bundle, const char *tag, const UChar *value, int32_t len,
+ AliasResource(SRBRoot *bundle, const char *tag, const char16_t *value, int32_t len,
const UString* comment, UErrorCode &errorCode)
: StringBaseResource(bundle, tag, URES_ALIAS, value, len, comment, errorCode) {}
virtual ~AliasResource();
@@ -431,7 +431,7 @@ public:
void res_close(struct SResource *res);
void setIncludeCopyright(UBool val);
-UBool getIncludeCopyright(void);
+UBool getIncludeCopyright();
void setFormatVersion(int32_t formatVersion);
diff --git a/Build/source/libs/icu/icu-src/source/tools/genrb/wrtjava.cpp b/Build/source/libs/icu/icu-src/source/tools/genrb/wrtjava.cpp
index 0d2ddcd25ad..cb04b5a44ab 100644
--- a/Build/source/libs/icu/icu-src/source/tools/genrb/wrtjava.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/genrb/wrtjava.cpp
@@ -84,12 +84,12 @@ static const char* javaClass1= " extends ListResourceBundle {\n\n"
" static final Object[][] data = new Object[][] { \n";*/
static int tabCount = 3;
-static FileStream* out=NULL;
+static FileStream* out=nullptr;
static struct SRBRoot* srBundle ;
-/*static const char* outDir = NULL;*/
+/*static const char* outDir = nullptr;*/
-static const char* bName=NULL;
-static const char* pName=NULL;
+static const char* bName=nullptr;
+static const char* pName=nullptr;
static void write_tabs(FileStream* os){
int i=0;
@@ -101,10 +101,10 @@ static void write_tabs(FileStream* os){
#define ZERO 0x30
static const char* enc ="";
-static UConverter* conv = NULL;
+static UConverter* conv = nullptr;
static int32_t
-uCharsToChars(char *target, int32_t targetLen, const UChar *source, int32_t sourceLen, UErrorCode *status) {
+uCharsToChars(char *target, int32_t targetLen, const char16_t *source, int32_t sourceLen, UErrorCode *status) {
int i=0, j=0;
char str[30]={'\0'};
while(i<sourceLen){
@@ -229,14 +229,14 @@ static int32_t getColumnCount(int32_t len){
return columnCount;
}
static void
-str_write_java(const UChar *src, int32_t srcLen, UBool printEndLine, UErrorCode *status) {
+str_write_java(const char16_t *src, int32_t srcLen, UBool printEndLine, UErrorCode *status) {
uint32_t length = srcLen*8;
uint32_t bufLen = 0;
uint32_t columnCount;
char* buf = (char*) malloc(sizeof(char)*length);
- if(buf == NULL) {
+ if(buf == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
return;
}
@@ -332,7 +332,7 @@ array_write_java(const ArrayResource *res, UErrorCode *status) {
uint32_t i = 0;
const char* arr ="new String[] { \n";
- struct SResource *current = NULL;
+ struct SResource *current = nullptr;
UBool allStrings = true;
if (U_FAILURE(*status)) {
@@ -343,7 +343,7 @@ array_write_java(const ArrayResource *res, UErrorCode *status) {
current = res->fFirst;
i = 0;
- while(current != NULL){
+ while(current != nullptr){
if(!current->isString()){
allStrings = false;
break;
@@ -362,7 +362,7 @@ array_write_java(const ArrayResource *res, UErrorCode *status) {
T_FileStream_write(out, arr, (int32_t)uprv_strlen(arr));
tabCount++;
}
- while (current != NULL) {
+ while (current != nullptr) {
/*if(current->isString()){
write_tabs(out);
}*/
@@ -399,7 +399,7 @@ intvector_write_java(const IntVectorResource *res, UErrorCode * /*status*/) {
buf[0]=0;
write_tabs(out);
- if(resname != NULL && uprv_strcmp(resname,"DateTimeElements")==0){
+ if(resname != nullptr && uprv_strcmp(resname,"DateTimeElements")==0){
T_FileStream_write(out, stringArr, (int32_t)uprv_strlen(stringArr));
tabCount++;
for(i = 0; i<res->fCount; i++) {
@@ -449,7 +449,7 @@ bytes_write_java(const BinaryResource *res, UErrorCode * /*status*/) {
const char* type = "new byte[] {";
const char* byteDecl = "%i, ";
char byteBuffer[100] = { 0 };
- uint8_t* byteArray = NULL;
+ uint8_t* byteArray = nullptr;
int byteIterator = 0;
int32_t srcLen=res->fLength;
if(srcLen>0 )
@@ -470,11 +470,11 @@ bytes_write_java(const BinaryResource *res, UErrorCode * /*status*/) {
if (byteArray[byteIterator] < 128)
{
- sprintf(byteBuffer, byteDecl, byteArray[byteIterator]);
+ snprintf(byteBuffer, sizeof(byteBuffer), byteDecl, byteArray[byteIterator]);
}
else
{
- sprintf(byteBuffer, byteDecl, (byteArray[byteIterator]-256));
+ snprintf(byteBuffer, sizeof(byteBuffer), byteDecl, (byteArray[byteIterator]-256));
}
T_FileStream_write(out, byteBuffer, (int32_t)uprv_strlen(byteBuffer));
@@ -511,7 +511,7 @@ static UBool start = true;
static void
table_write_java(const TableResource *res, UErrorCode *status) {
uint32_t i = 0;
- struct SResource *current = NULL;
+ struct SResource *current = nullptr;
const char* obj = "new Object[][]{\n";
if (U_FAILURE(*status)) {
@@ -529,7 +529,7 @@ table_write_java(const TableResource *res, UErrorCode *status) {
i = 0;
- while (current != NULL) {
+ while (current != nullptr) {
const char *currentKeyString = current->getKeyString(srBundle);
assert(i < res->fCount);
@@ -541,7 +541,7 @@ table_write_java(const TableResource *res, UErrorCode *status) {
tabCount++;
write_tabs(out);
- if(currentKeyString != NULL) {
+ if(currentKeyString != nullptr) {
T_FileStream_write(out, "\"", 1);
T_FileStream_write(out, currentKeyString,
(int32_t)uprv_strlen(currentKeyString));
@@ -583,7 +583,7 @@ res_write_java(struct SResource *res,UErrorCode *status) {
return ;
}
- if (res != NULL) {
+ if (res != nullptr) {
switch (res->fType) {
case URES_STRING:
string_write_java (static_cast<const StringResource *>(res), status);
@@ -629,8 +629,8 @@ bundle_write_java(struct SRBRoot *bundle, const char *outputDir,const char* outp
start = true; /* Reset the start indicator*/
- bName = (bundleName==NULL) ? "LocaleElements" : bundleName;
- pName = (packageName==NULL)? "com.ibm.icu.impl.data" : packageName;
+ bName = (bundleName==nullptr) ? "LocaleElements" : bundleName;
+ pName = (packageName==nullptr)? "com.ibm.icu.impl.data" : packageName;
uprv_strcpy(className, bName);
srBundle = bundle;
@@ -660,7 +660,7 @@ bundle_write_java(struct SRBRoot *bundle, const char *outputDir,const char* outp
out= T_FileStream_open(fileName,"w");
- if(out==NULL){
+ if(out==nullptr){
*status = U_FILE_ACCESS_ERROR;
return;
}
diff --git a/Build/source/libs/icu/icu-src/source/tools/genrb/wrtxml.cpp b/Build/source/libs/icu/icu-src/source/tools/genrb/wrtxml.cpp
index 069f0916567..16f67fabcaf 100644
--- a/Build/source/libs/icu/icu-src/source/tools/genrb/wrtxml.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/genrb/wrtxml.cpp
@@ -53,11 +53,11 @@ U_NAMESPACE_USE
static int tabCount = 0;
-static FileStream* out=NULL;
+static FileStream* out=nullptr;
static struct SRBRoot* srBundle ;
-static const char* outDir = NULL;
+static const char* outDir = nullptr;
static const char* enc ="";
-static UConverter* conv = NULL;
+static UConverter* conv = nullptr;
const char* const* ISOLanguages;
const char* const* ISOCountries;
@@ -70,7 +70,7 @@ static int32_t write_utf8_file(FileStream* fileStream, UnicodeString outString)
int32_t len = 0;
// preflight to get the destination buffer size
- u_strToUTF8(NULL,
+ u_strToUTF8(nullptr,
0,
&len,
toUCharPtr(outString.getBuffer()),
@@ -105,7 +105,7 @@ static void write_tabs(FileStream* os){
/*get ID for each element. ID is globally unique.*/
static char* getID(const char* id, const char* curKey, char* result) {
- if(curKey == NULL) {
+ if(curKey == nullptr) {
result = (char *)uprv_malloc(sizeof(char)*uprv_strlen(id) + 1);
uprv_memset(result, 0, sizeof(char)*uprv_strlen(id) + 1);
uprv_strcpy(result, id);
@@ -190,13 +190,13 @@ static char* parseFilename(const char* id, char* /*lang*/) {
char* localeID = (char*) uprv_malloc(idLen);
int pos = 0;
int canonCapacity = 0;
- char* canon = NULL;
+ char* canon = nullptr;
int canonLen = 0;
/*int i;*/
UErrorCode status = U_ZERO_ERROR;
const char *ext = uprv_strchr(id, '.');
- if(ext != NULL){
+ if(ext != nullptr){
pos = (int) (ext - id);
} else {
pos = idLen;
@@ -233,23 +233,23 @@ static const char* bundleEnd = "</xliff>\n";
void res_write_xml(struct SResource *res, const char* id, const char* language, UBool isTopLevel, UErrorCode *status);
static char* convertAndEscape(char** pDest, int32_t destCap, int32_t* destLength,
- const UChar* src, int32_t srcLen, UErrorCode* status){
+ const char16_t* src, int32_t srcLen, UErrorCode* status){
int32_t srcIndex=0;
- char* dest=NULL;
- char* temp=NULL;
+ char* dest=nullptr;
+ char* temp=nullptr;
int32_t destLen=0;
UChar32 c = 0;
- if(status==NULL || U_FAILURE(*status) || pDest==NULL || srcLen==0 || src == NULL){
- return NULL;
+ if(status==nullptr || U_FAILURE(*status) || pDest==nullptr || srcLen==0 || src == nullptr){
+ return nullptr;
}
dest =*pDest;
- if(dest==NULL || destCap <=0){
+ if(dest==nullptr || destCap <=0){
destCap = srcLen * 8;
dest = (char*) uprv_malloc(sizeof(char) * destCap);
- if(dest==NULL){
+ if(dest==nullptr){
*status=U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
}
@@ -262,7 +262,7 @@ static char* convertAndEscape(char** pDest, int32_t destCap, int32_t* destLength
*status = U_ILLEGAL_CHAR_FOUND;
fprintf(stderr, "Illegal Surrogate! \n");
uprv_free(dest);
- return NULL;
+ return nullptr;
}
if((destLen+U8_LENGTH(c)) < destCap){
@@ -327,7 +327,7 @@ static char* convertAndEscape(char** pDest, int32_t destCap, int32_t* destLength
*status = U_ILLEGAL_CHAR_FOUND;
fprintf(stderr, "Illegal Character \\u%04X!\n",(int)c);
uprv_free(dest);
- return NULL;
+ return nullptr;
default:
dest[destLen++]=(char)c;
}
@@ -338,23 +338,23 @@ static char* convertAndEscape(char** pDest, int32_t destCap, int32_t* destLength
*status = U_ILLEGAL_CHAR_FOUND;
fprintf(stderr, "Illegal Character \\U%08X!\n",(int)c);
uprv_free(dest);
- return NULL;
+ return nullptr;
}
}
}else{
destCap += destLen;
temp = (char*) uprv_malloc(sizeof(char)*destCap);
- if(temp==NULL){
+ if(temp==nullptr){
*status=U_MEMORY_ALLOCATION_ERROR;
uprv_free(dest);
- return NULL;
+ return nullptr;
}
uprv_memmove(temp,dest,destLen);
destLen=0;
uprv_free(dest);
dest=temp;
- temp=NULL;
+ temp=nullptr;
}
}
@@ -372,9 +372,9 @@ static char* convertAndEscape(char** pDest, int32_t destCap, int32_t* destLength
static void
trim(char **src, int32_t *len){
- char *s = NULL;
+ char *s = nullptr;
int32_t i = 0;
- if(src == NULL || *src == NULL){
+ if(src == nullptr || *src == nullptr){
return;
}
s = *src;
@@ -397,9 +397,9 @@ trim(char **src, int32_t *len){
}
static void
-print(UChar* src, int32_t srcLen,const char *tagStart,const char *tagEnd, UErrorCode *status){
+print(char16_t* src, int32_t srcLen,const char *tagStart,const char *tagEnd, UErrorCode *status){
int32_t bufCapacity = srcLen*4;
- char *buf = NULL;
+ char *buf = nullptr;
int32_t bufLen = 0;
if(U_FAILURE(*status)){
@@ -429,16 +429,16 @@ printNoteElements(const UString *src, UErrorCode *status){
#if UCONFIG_NO_REGULAR_EXPRESSIONS==0 /* donot compile when no RegularExpressions are available */
int32_t capacity = 0;
- UChar* note = NULL;
+ char16_t* note = nullptr;
int32_t noteLen = 0;
int32_t count = 0,i;
- if(src == NULL){
+ if(src == nullptr){
return;
}
capacity = src->fLength;
- note = (UChar*) uprv_malloc(U_SIZEOF_UCHAR * capacity);
+ note = (char16_t*) uprv_malloc(U_SIZEOF_UCHAR * capacity);
count = getCount(src->fChars,src->fLength, UPC_NOTE, status);
if(U_FAILURE(*status)){
@@ -490,18 +490,18 @@ printComments(struct UString *src, const char *resName, UBool printTranslate, UE
#if UCONFIG_NO_REGULAR_EXPRESSIONS==0 /* donot compile when no RegularExpressions are available */
- if(status==NULL || U_FAILURE(*status)){
+ if(status==nullptr || U_FAILURE(*status)){
return;
}
int32_t capacity = src->fLength + 1;
- char* buf = NULL;
+ char* buf = nullptr;
int32_t bufLen = 0;
- UChar* desc = (UChar*) uprv_malloc(U_SIZEOF_UCHAR * capacity);
- UChar* trans = (UChar*) uprv_malloc(U_SIZEOF_UCHAR * capacity);
+ char16_t* desc = (char16_t*) uprv_malloc(U_SIZEOF_UCHAR * capacity);
+ char16_t* trans = (char16_t*) uprv_malloc(U_SIZEOF_UCHAR * capacity);
int32_t descLen = 0, transLen=0;
- if(desc==NULL || trans==NULL){
+ if(desc==nullptr || trans==nullptr){
*status = U_MEMORY_ALLOCATION_ERROR;
uprv_free(desc);
uprv_free(trans);
@@ -553,31 +553,31 @@ printComments(struct UString *src, const char *resName, UBool printTranslate, UE
*/
static char *printContainer(SResource *res, const char *container, const char *restype, const char *mimetype, const char *id, UErrorCode *status)
{
- const char *resname = NULL;
- char *sid = NULL;
+ const char *resname = nullptr;
+ char *sid = nullptr;
write_tabs(out);
resname = res->getKeyString(srBundle);
- if (resname != NULL && *resname != 0) {
+ if (resname != nullptr && *resname != 0) {
sid = getID(id, resname, sid);
} else {
- sid = getID(id, NULL, sid);
+ sid = getID(id, nullptr, sid);
}
write_utf8_file(out, UnicodeString("<"));
write_utf8_file(out, UnicodeString(container));
printAttribute("id", sid, (int32_t) uprv_strlen(sid));
- if (resname != NULL) {
+ if (resname != nullptr) {
printAttribute("resname", resname, (int32_t) uprv_strlen(resname));
}
- if (mimetype != NULL) {
+ if (mimetype != nullptr) {
printAttribute("mime-type", mimetype, (int32_t) uprv_strlen(mimetype));
}
- if (restype != NULL) {
+ if (restype != nullptr) {
printAttribute("restype", restype, (int32_t) uprv_strlen(restype));
}
@@ -622,15 +622,15 @@ static const char *table_restype = "x-icu-table";
static void
string_write_xml(StringResource *res, const char* id, const char* /*language*/, UErrorCode *status) {
- char *sid = NULL;
- char* buf = NULL;
+ char *sid = nullptr;
+ char* buf = nullptr;
int32_t bufLen = 0;
- if(status==NULL || U_FAILURE(*status)){
+ if(status==nullptr || U_FAILURE(*status)){
return;
}
- sid = printContainer(res, trans_unit, NULL, NULL, id, status);
+ sid = printContainer(res, trans_unit, nullptr, nullptr, id, status);
write_tabs(out);
@@ -658,11 +658,11 @@ string_write_xml(StringResource *res, const char* id, const char* /*language*/,
static void
alias_write_xml(AliasResource *res, const char* id, const char* /*language*/, UErrorCode *status) {
- char *sid = NULL;
- char* buf = NULL;
+ char *sid = nullptr;
+ char* buf = nullptr;
int32_t bufLen=0;
- sid = printContainer(res, trans_unit, alias_restype, NULL, id, status);
+ sid = printContainer(res, trans_unit, alias_restype, nullptr, id, status);
write_tabs(out);
@@ -689,18 +689,18 @@ alias_write_xml(AliasResource *res, const char* id, const char* /*language*/, UE
static void
array_write_xml(ArrayResource *res, const char* id, const char* language, UErrorCode *status) {
- char* sid = NULL;
+ char* sid = nullptr;
int index = 0;
- struct SResource *current = NULL;
+ struct SResource *current = nullptr;
- sid = printContainer(res, group, array_restype, NULL, id, status);
+ sid = printContainer(res, group, array_restype, nullptr, id, status);
current = res->fFirst;
- while (current != NULL) {
+ while (current != nullptr) {
char c[256] = {0};
- char* subId = NULL;
+ char* subId = nullptr;
itostr(c, index, 10, 0);
index += 1;
@@ -708,7 +708,7 @@ array_write_xml(ArrayResource *res, const char* id, const char* language, UError
res_write_xml(current, subId, language, false, status);
uprv_free(subId);
- subId = NULL;
+ subId = nullptr;
if(U_FAILURE(*status)){
return;
@@ -726,13 +726,13 @@ array_write_xml(ArrayResource *res, const char* id, const char* language, UError
static void
intvector_write_xml(IntVectorResource *res, const char* id, const char* /*language*/, UErrorCode *status) {
- char* sid = NULL;
- char* ivd = NULL;
+ char* sid = nullptr;
+ char* ivd = nullptr;
uint32_t i=0;
uint32_t len=0;
char buf[256] = {'0'};
- sid = printContainer(res, group, intvector_restype, NULL, id, status);
+ sid = printContainer(res, group, intvector_restype, nullptr, id, status);
for(i = 0; i < res->fCount; i += 1) {
char c[256] = {0};
@@ -762,7 +762,7 @@ intvector_write_xml(IntVectorResource *res, const char* id, const char* /*langua
write_utf8_file(out, UnicodeString(close_trans_unit));
uprv_free(ivd);
- ivd = NULL;
+ ivd = nullptr;
}
tabCount -= 1;
@@ -770,16 +770,16 @@ intvector_write_xml(IntVectorResource *res, const char* id, const char* /*langua
write_utf8_file(out, UnicodeString(close_group));
uprv_free(sid);
- sid = NULL;
+ sid = nullptr;
}
static void
int_write_xml(IntResource *res, const char* id, const char* /*language*/, UErrorCode *status) {
- char* sid = NULL;
+ char* sid = nullptr;
char buf[256] = {0};
uint32_t len = 0;
- sid = printContainer(res, trans_unit, integer_restype, NULL, id, status);
+ sid = printContainer(res, trans_unit, integer_restype, nullptr, id, status);
write_tabs(out);
@@ -798,31 +798,31 @@ int_write_xml(IntResource *res, const char* id, const char* /*language*/, UError
write_utf8_file(out, UnicodeString(close_trans_unit));
uprv_free(sid);
- sid = NULL;
+ sid = nullptr;
}
static void
bin_write_xml(BinaryResource *res, const char* id, const char* /*language*/, UErrorCode *status) {
const char* m_type = application_mimetype;
- char* sid = NULL;
+ char* sid = nullptr;
uint32_t crc = 0xFFFFFFFF;
char fileName[1024] ={0};
- int32_t tLen = ( outDir == NULL) ? 0 :(int32_t)uprv_strlen(outDir);
+ int32_t tLen = ( outDir == nullptr) ? 0 :(int32_t)uprv_strlen(outDir);
char* fn = (char*) uprv_malloc(sizeof(char) * (tLen+1024 +
- (res->fFileName !=NULL ?
+ (res->fFileName !=nullptr ?
uprv_strlen(res->fFileName) :0)));
- const char* ext = NULL;
+ const char* ext = nullptr;
- char* f = NULL;
+ char* f = nullptr;
fn[0]=0;
- if(res->fFileName != NULL){
+ if(res->fFileName != nullptr){
uprv_strcpy(fileName, res->fFileName);
f = uprv_strrchr(fileName, '\\');
- if (f != NULL) {
+ if (f != nullptr) {
f++;
} else {
f = fileName;
@@ -830,7 +830,7 @@ bin_write_xml(BinaryResource *res, const char* id, const char* /*language*/, UEr
ext = uprv_strrchr(fileName, '.');
- if (ext == NULL) {
+ if (ext == nullptr) {
fprintf(stderr, "Error: %s is an unknown binary filename type.\n", fileName);
exit(U_ILLEGAL_ARGUMENT_ERROR);
}
@@ -913,7 +913,7 @@ bin_write_xml(BinaryResource *res, const char* id, const char* /*language*/, UEr
write_utf8_file(out, UnicodeString(close_bin_unit));
uprv_free(sid);
- sid = NULL;
+ sid = nullptr;
}
uprv_free(fn);
@@ -924,14 +924,14 @@ bin_write_xml(BinaryResource *res, const char* id, const char* /*language*/, UEr
static void
table_write_xml(TableResource *res, const char* id, const char* language, UBool isTopLevel, UErrorCode *status) {
- struct SResource *current = NULL;
- char* sid = NULL;
+ struct SResource *current = nullptr;
+ char* sid = nullptr;
if (U_FAILURE(*status)) {
return ;
}
- sid = printContainer(res, group, table_restype, NULL, id, status);
+ sid = printContainer(res, group, table_restype, nullptr, id, status);
if(isTopLevel) {
sid[0] = '\0';
@@ -939,7 +939,7 @@ table_write_xml(TableResource *res, const char* id, const char* language, UBool
current = res->fFirst;
- while (current != NULL) {
+ while (current != nullptr) {
res_write_xml(current, sid, language, false, status);
if(U_FAILURE(*status)){
@@ -955,7 +955,7 @@ table_write_xml(TableResource *res, const char* id, const char* language, UBool
write_utf8_file(out, UnicodeString(close_group));
uprv_free(sid);
- sid = NULL;
+ sid = nullptr;
}
void
@@ -965,7 +965,7 @@ res_write_xml(struct SResource *res, const char* id, const char* language, UBoo
return ;
}
- if (res != NULL) {
+ if (res != nullptr) {
switch (res->fType) {
case URES_STRING:
string_write_xml (static_cast<StringResource *>(res), id, language, status);
@@ -1008,9 +1008,9 @@ bundle_write_xml(struct SRBRoot *bundle, const char *outputDir,const char* outpu
char *writtenFilename, int writtenFilenameLen,
const char* language, const char* outFileName, UErrorCode *status) {
- char* xmlfileName = NULL;
- char* outputFileName = NULL;
- char* originalFileName = NULL;
+ char* xmlfileName = nullptr;
+ char* outputFileName = nullptr;
+ char* originalFileName = nullptr;
const char* fileStart = "<file xml:space = \"preserve\" source-language = \"";
const char* file1 = "\" datatype = \"x-icu-resource-bundle\" ";
const char* file2 = "original = \"";
@@ -1025,9 +1025,9 @@ bundle_write_xml(struct SRBRoot *bundle, const char *outputDir,const char* outpu
const char *tool_id = "genrb-" GENRB_VERSION "-icu-" U_ICU_VERSION;
const char *tool_name = "genrb";
- char* temp = NULL;
- char* lang = NULL;
- const char* pos = NULL;
+ char* temp = nullptr;
+ char* lang = nullptr;
+ const char* pos = nullptr;
int32_t first, index;
time_t currTime;
char timeBuf[128];
@@ -1037,7 +1037,7 @@ bundle_write_xml(struct SRBRoot *bundle, const char *outputDir,const char* outpu
srBundle = bundle;
pos = uprv_strrchr(filename, '\\');
- if(pos != NULL) {
+ if(pos != nullptr) {
first = (int32_t)(pos - filename + 1);
} else {
first = 0;
@@ -1057,12 +1057,12 @@ bundle_write_xml(struct SRBRoot *bundle, const char *outputDir,const char* outpu
uprv_strcat(originalFileName, temp);
uprv_strcat(originalFileName, textExt);
uprv_free(temp);
- temp = NULL;
+ temp = nullptr;
- if (language == NULL) {
+ if (language == nullptr) {
/* lang = parseFilename(filename, lang);
- if (lang == NULL) {*/
+ if (lang == nullptr) {*/
/* now check if locale name is valid or not
* this is to cater for situation where
* pegasusServer.txt contains
@@ -1082,7 +1082,7 @@ bundle_write_xml(struct SRBRoot *bundle, const char *outputDir,const char* outpu
* ....
* }
*/
- if(lang==NULL){
+ if(lang==nullptr){
fprintf(stderr, "Error: The file name and table name do not contain a valid language code. Please use -l option to specify it.\n");
exit(U_ILLEGAL_ARGUMENT_ERROR);
}
@@ -1130,7 +1130,7 @@ bundle_write_xml(struct SRBRoot *bundle, const char *outputDir,const char* outpu
out= T_FileStream_open(xmlfileName,"w");
- if(out==NULL){
+ if(out==nullptr){
*status = U_FILE_ACCESS_ERROR;
goto cleanup_bundle_write_xml;
}
@@ -1148,7 +1148,7 @@ bundle_write_xml(struct SRBRoot *bundle, const char *outputDir,const char* outpu
write_tabs(out);
write_utf8_file(out, UnicodeString(fileStart));
/* check if lang and language are the same */
- if(language != NULL && uprv_strcmp(lang, srBundle->fLocale)!=0){
+ if(language != nullptr && uprv_strcmp(lang, srBundle->fLocale)!=0){
fprintf(stderr,"Warning: The top level tag in the resource and language specified are not the same. Please check the input.\n");
}
write_utf8_file(out, UnicodeString(lang));
@@ -1204,10 +1204,10 @@ bundle_write_xml(struct SRBRoot *bundle, const char *outputDir,const char* outpu
cleanup_bundle_write_xml:
uprv_free(originalFileName);
uprv_free(lang);
- if(xmlfileName != NULL) {
+ if(xmlfileName != nullptr) {
uprv_free(xmlfileName);
}
- if(outputFileName != NULL){
+ if(outputFileName != nullptr){
uprv_free(outputFileName);
}
}
diff --git a/Build/source/libs/icu/icu-src/source/tools/gentest/gentest.c b/Build/source/libs/icu/icu-src/source/tools/gentest/gentest.c
index 77076e9369c..aa1125d95b6 100644
--- a/Build/source/libs/icu/icu-src/source/tools/gentest/gentest.c
+++ b/Build/source/libs/icu/icu-src/source/tools/gentest/gentest.c
@@ -184,8 +184,13 @@ outputJavaStuff(const char* progname, const char *outputDir) {
fprintf(out, " /* %s, %d */\n", udbg_enumName(UDBG_UDebugEnumType,t), t);
fprintf(out, " { \n");
for(i=0;i<count;i++) {
- fprintf(out,
- " \"%s\", /* %d */ \n", udbg_enumName((UDebugEnumType)t,i), i);
+ fprintf(out, " ");
+#if !UCONFIG_NO_FORMATTING
+ if (t == UDBG_UCalendarDateFields && i == 23) {
+ fprintf(out, "//");
+ }
+#endif
+ fprintf(out, "\"%s\", /* %d */ \n", udbg_enumName((UDebugEnumType)t,i), i);
}
fprintf(out, " },\n");
}
@@ -206,6 +211,9 @@ outputJavaStuff(const char* progname, const char *outputDir) {
/* Temporary workaround for IS_LEAP_MONTH #6051 */
if (t == UDBG_UCalendarDateFields && i == 22) {
fprintf(out, "com.ibm.icu.util.ChineseCalendar.%s, /* %d */", udbg_enumName((UDebugEnumType)t,i), i);
+ /* Temporary workaround for ORDINAL_MONTH */
+ } else if (t == UDBG_UCalendarDateFields && i == 23) {
+ fprintf(out, "//com.ibm.icu.util.Calendar.%s, /* %d */", udbg_enumName((UDebugEnumType)t,i), i);
} else {
fprintf(out, "com.ibm.icu.util.Calendar.%s, /* %d */", udbg_enumName((UDebugEnumType)t,i), i);
}
diff --git a/Build/source/libs/icu/icu-src/source/tools/icuexportdata/icuexportdata.cpp b/Build/source/libs/icu/icu-src/source/tools/icuexportdata/icuexportdata.cpp
index cafdfb8847c..4aea2c1e285 100644
--- a/Build/source/libs/icu/icu-src/source/tools/icuexportdata/icuexportdata.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/icuexportdata/icuexportdata.cpp
@@ -5,11 +5,11 @@
#include <cstdint>
#include <cstdio>
#include <iostream>
-#include <unicode/localpointer.h>
-#include <unicode/umachine.h>
-#include <unicode/unistr.h>
-#include <unicode/urename.h>
-#include <unicode/uset.h>
+#include "unicode/localpointer.h"
+#include "unicode/umachine.h"
+#include "unicode/unistr.h"
+#include "unicode/urename.h"
+#include "unicode/uset.h"
#include <vector>
#include <algorithm>
#include "toolutil.h"
@@ -131,6 +131,29 @@ private:
PropertyValueNameGetter::~PropertyValueNameGetter() {}
+// Dump an aliases = [...] key for properties with aliases
+void dumpPropertyAliases(UProperty uproperty, FILE* f) {
+ int i = U_LONG_PROPERTY_NAME + 1;
+
+ while(true) {
+ // The API works by having extra names after U_LONG_PROPERTY_NAME, sequentially,
+ // and returning null after that
+ const char* alias = u_getPropertyName(uproperty, (UPropertyNameChoice) i);
+ if (!alias) {
+ break;
+ }
+ if (i == U_LONG_PROPERTY_NAME + 1) {
+ fprintf(f, "aliases = [\"%s\"", alias);
+ } else {
+ fprintf(f, ", \"%s\"", alias);
+ }
+ i++;
+ }
+ if (i != U_LONG_PROPERTY_NAME + 1) {
+ fprintf(f, "]\n");
+ }
+}
+
void dumpBinaryProperty(UProperty uproperty, FILE* f) {
IcuToolErrorCode status("icuexportdata: dumpBinaryProperty");
const char* fullPropName = u_getPropertyName(uproperty, U_LONG_PROPERTY_NAME);
@@ -141,9 +164,49 @@ void dumpBinaryProperty(UProperty uproperty, FILE* f) {
fputs("[[binary_property]]\n", f);
fprintf(f, "long_name = \"%s\"\n", fullPropName);
if (shortPropName) fprintf(f, "short_name = \"%s\"\n", shortPropName);
+ fprintf(f, "uproperty_discr = 0x%X\n", uproperty);
+ dumpPropertyAliases(uproperty, f);
usrc_writeUnicodeSet(f, uset, UPRV_TARGET_SYNTAX_TOML);
}
+// If the value exists, dump an indented entry of the format
+// `" {discr = <discriminant>, long = <longname>, short = <shortname>, aliases = [<aliases>]},"`
+void dumpValueEntry(UProperty uproperty, int v, bool is_mask, FILE* f) {
+ const char* fullValueName = u_getPropertyValueName(uproperty, v, U_LONG_PROPERTY_NAME);
+ const char* shortValueName = u_getPropertyValueName(uproperty, v, U_SHORT_PROPERTY_NAME);
+ if (!fullValueName) {
+ return;
+ }
+ if (is_mask) {
+ fprintf(f, " {discr = 0x%X", v);
+ } else {
+ fprintf(f, " {discr = %i", v);
+ }
+ fprintf(f, ", long = \"%s\"", fullValueName);
+ if (shortValueName) {
+ fprintf(f, ", short = \"%s\"", shortValueName);
+ }
+ int i = U_LONG_PROPERTY_NAME + 1;
+ while(true) {
+ // The API works by having extra names after U_LONG_PROPERTY_NAME, sequentially,
+ // and returning null after that
+ const char* alias = u_getPropertyValueName(uproperty, v, (UPropertyNameChoice) i);
+ if (!alias) {
+ break;
+ }
+ if (i == U_LONG_PROPERTY_NAME + 1) {
+ fprintf(f, ", aliases = [\"%s\"", alias);
+ } else {
+ fprintf(f, ", \"%s\"", alias);
+ }
+ i++;
+ }
+ if (i != U_LONG_PROPERTY_NAME + 1) {
+ fprintf(f, "]");
+ }
+ fprintf(f, "},\n");
+}
+
void dumpEnumeratedProperty(UProperty uproperty, FILE* f) {
IcuToolErrorCode status("icuexportdata: dumpEnumeratedProperty");
const char* fullPropName = u_getPropertyName(uproperty, U_LONG_PROPERTY_NAME);
@@ -154,13 +217,25 @@ void dumpEnumeratedProperty(UProperty uproperty, FILE* f) {
fputs("[[enum_property]]\n", f);
fprintf(f, "long_name = \"%s\"\n", fullPropName);
if (shortPropName) fprintf(f, "short_name = \"%s\"\n", shortPropName);
+ fprintf(f, "uproperty_discr = 0x%X\n", uproperty);
+ dumpPropertyAliases(uproperty, f);
+
+ int32_t minValue = u_getIntPropertyMinValue(uproperty);
+ U_ASSERT(minValue >= 0);
+ int32_t maxValue = u_getIntPropertyMaxValue(uproperty);
+ U_ASSERT(maxValue >= 0);
+
+ fprintf(f, "values = [\n");
+ for (int v = minValue; v <= maxValue; v++) {
+ dumpValueEntry(uproperty, v, false, f);
+ }
+ fprintf(f, "]\n");
+
PropertyValueNameGetter valueNameGetter(uproperty);
usrc_writeUCPMap(f, umap, &valueNameGetter, UPRV_TARGET_SYNTAX_TOML);
fputs("\n", f);
- U_ASSERT(u_getIntPropertyMinValue(uproperty) >= 0);
- int32_t maxValue = u_getIntPropertyMaxValue(uproperty);
- U_ASSERT(maxValue >= 0);
+
UCPTrieValueWidth width = UCPTRIE_VALUE_BITS_32;
if (maxValue <= 0xff) {
width = UCPTRIE_VALUE_BITS_8;
@@ -179,6 +254,106 @@ void dumpEnumeratedProperty(UProperty uproperty, FILE* f) {
usrc_writeUCPTrie(f, shortPropName, utrie.getAlias(), UPRV_TARGET_SYNTAX_TOML);
}
+/*
+* Export Bidi_Mirroring_Glyph values (code points) in a similar way to how enumerated
+* properties are dumped to file.
+* Note: the data will store 0 for code points without a value defined for
+* Bidi_Mirroring_Glyph.
+*/
+void dumpBidiMirroringGlyph(FILE* f) {
+ UProperty uproperty = UCHAR_BIDI_MIRRORING_GLYPH;
+ IcuToolErrorCode status("icuexportdata: dumpBidiMirroringGlyph");
+ const char* fullPropName = u_getPropertyName(uproperty, U_LONG_PROPERTY_NAME);
+ const char* shortPropName = u_getPropertyName(uproperty, U_SHORT_PROPERTY_NAME);
+ handleError(status, fullPropName);
+
+ // Store 21-bit code point as is
+ UCPTrieValueWidth width = UCPTRIE_VALUE_BITS_32;
+
+ // note: unlike dumpEnumeratedProperty, which can get inversion map data using
+ // u_getIntPropertyMap(uproperty), the only reliable way to get Bidi_Mirroring_Glyph
+ // is to use u_charMirror(cp) over the code point space.
+ LocalUMutableCPTriePointer builder(umutablecptrie_open(0, 0, status));
+ for(UChar32 c = UCHAR_MIN_VALUE; c <= UCHAR_MAX_VALUE; c++) {
+ UChar32 mirroringGlyph = u_charMirror(c);
+ // The trie builder code throws an error when it cannot compress the data sufficiently.
+ // Therefore, when the value is undefined for a code point, keep a 0 in the trie
+ // instead of the ICU API behavior of returning the code point value. Using 0
+ // results in a relatively significant space savings by not including redundant data.
+ if (c != mirroringGlyph) {
+ umutablecptrie_set(builder.getAlias(), c, mirroringGlyph, status);
+ }
+ }
+
+ LocalUCPTriePointer utrie(umutablecptrie_buildImmutable(
+ builder.getAlias(),
+ trieType,
+ width,
+ status));
+ handleError(status, fullPropName);
+
+ // currently a trie and inversion map are the same (as relied upon in characterproperties.cpp)
+ const UCPMap* umap = reinterpret_cast<UCPMap *>(utrie.getAlias());
+
+ fputs("[[enum_property]]\n", f);
+ fprintf(f, "long_name = \"%s\"\n", fullPropName);
+ if (shortPropName) {
+ fprintf(f, "short_name = \"%s\"\n", shortPropName);
+ }
+ fprintf(f, "uproperty_discr = 0x%X\n", uproperty);
+ dumpPropertyAliases(uproperty, f);
+
+ usrc_writeUCPMap(f, umap, nullptr, UPRV_TARGET_SYNTAX_TOML);
+ fputs("\n", f);
+
+ fputs("[enum_property.code_point_trie]\n", f);
+ usrc_writeUCPTrie(f, shortPropName, utrie.getAlias(), UPRV_TARGET_SYNTAX_TOML);
+}
+
+// After printing property value `v`, print `mask` if and only if `mask` comes immediately
+// after the property in the listing
+void maybeDumpMaskValue(UProperty uproperty, uint32_t v, uint32_t mask, FILE* f) {
+ if (U_MASK(v) < mask && U_MASK(v + 1) > mask)
+ dumpValueEntry(uproperty, mask, true, f);
+}
+
+void dumpGeneralCategoryMask(FILE* f) {
+ IcuToolErrorCode status("icuexportdata: dumpGeneralCategoryMask");
+ UProperty uproperty = UCHAR_GENERAL_CATEGORY_MASK;
+
+ fputs("[[mask_property]]\n", f);
+ const char* fullPropName = u_getPropertyName(uproperty, U_LONG_PROPERTY_NAME);
+ const char* shortPropName = u_getPropertyName(uproperty, U_SHORT_PROPERTY_NAME);
+ fprintf(f, "long_name = \"%s\"\n", fullPropName);
+ if (shortPropName) fprintf(f, "short_name = \"%s\"\n", shortPropName);
+ fprintf(f, "uproperty_discr = 0x%X\n", uproperty);
+ dumpPropertyAliases(uproperty, f);
+
+
+ fprintf(f, "mask_for = \"General_Category\"\n");
+ uint32_t minValue = u_getIntPropertyMinValue(UCHAR_GENERAL_CATEGORY);
+ U_ASSERT(minValue >= 0);
+ uint32_t maxValue = u_getIntPropertyMaxValue(UCHAR_GENERAL_CATEGORY);
+ U_ASSERT(maxValue >= 0);
+
+ fprintf(f, "values = [\n");
+ for (uint32_t v = minValue; v <= maxValue; v++) {
+ dumpValueEntry(uproperty, U_MASK(v), true, f);
+
+ // We want to dump these masks "in order", which means they
+ // should come immediately after every property they contain
+ maybeDumpMaskValue(uproperty, v, U_GC_L_MASK, f);
+ maybeDumpMaskValue(uproperty, v, U_GC_LC_MASK, f);
+ maybeDumpMaskValue(uproperty, v, U_GC_M_MASK, f);
+ maybeDumpMaskValue(uproperty, v, U_GC_N_MASK, f);
+ maybeDumpMaskValue(uproperty, v, U_GC_Z_MASK, f);
+ maybeDumpMaskValue(uproperty, v, U_GC_C_MASK, f);
+ maybeDumpMaskValue(uproperty, v, U_GC_P_MASK, f);
+ maybeDumpMaskValue(uproperty, v, U_GC_S_MASK, f);
+ }
+ fprintf(f, "]\n");
+}
+
void dumpScriptExtensions(FILE* f) {
IcuToolErrorCode status("icuexportdata: dumpScriptExtensions");
@@ -187,6 +362,8 @@ void dumpScriptExtensions(FILE* f) {
const char* scxShortPropName = u_getPropertyName(UCHAR_SCRIPT_EXTENSIONS, U_SHORT_PROPERTY_NAME);
fprintf(f, "long_name = \"%s\"\n", scxFullPropName);
if (scxShortPropName) fprintf(f, "short_name = \"%s\"\n", scxShortPropName);
+ fprintf(f, "uproperty_discr = 0x%X\n", UCHAR_SCRIPT_EXTENSIONS);
+ dumpPropertyAliases(UCHAR_SCRIPT_EXTENSIONS, f);
// We want to use 16 bits for our exported trie of sc/scx data because we
// need 12 bits to match the 12 bits of data stored for sc/scx in the trie
@@ -475,7 +652,6 @@ void writeDecompositionData(const char* basename, uint32_t baseSize16, uint32_t
status.set(U_INTERNAL_PROGRAM_ERROR);
handleError(status, basename);
}
- uset_close(halfWidthCheck);
uset_close(iotaSubscript);
uset_close(halfWidthVoicing);
@@ -533,6 +709,34 @@ UBool permissibleBmpPair(UBool knownToRoundTrip, UChar32 c, UChar32 second) {
return false;
}
+
+// Find the slice `needle` within `storage` and return its index, failing which,
+// append all elements of `needle` to `storage` and return the index of it at the end.
+template<typename T>
+size_t findOrAppend(std::vector<T>& storage, const UChar32* needle, size_t needleLen) {
+ // Last index where we might find the start of the complete needle.
+ // bounds check is `i + needleLen <= storage.size()` since the inner
+ // loop will range from `i` to `i + needleLen - 1` (the `-1` is why we use `<=`)
+ for (size_t i = 0; i + needleLen <= storage.size(); i++) {
+ for (size_t j = 0;; j++) {
+ if (j == needleLen) {
+ return i; // found a match
+ }
+ if (storage[i + j] != uint32_t(needle[j])) {
+ break;
+ }
+ }
+ }
+ // We didn't find anything. Append, keeping the append index in mind.
+ size_t index = storage.size();
+ for(size_t i = 0; i < needleLen; i++) {
+ storage.push_back(T(needle[i]));
+ }
+
+ return index;
+}
+
+
// Computes data for canonical decompositions
void computeDecompositions(const char* basename,
const USet* backwardCombiningStarters,
@@ -547,14 +751,14 @@ void computeDecompositions(const char* basename,
const Normalizer2* mainNormalizer;
const Normalizer2* nfdNormalizer = Normalizer2::getNFDInstance(status);
const Normalizer2* nfcNormalizer = Normalizer2::getNFCInstance(status);
- FILE* f = NULL;
+ FILE* f = nullptr;
std::vector<uint32_t> nonRecursive32;
LocalUMutableCPTriePointer nonRecursiveBuilder(umutablecptrie_open(0, 0, status));
if (uprv_strcmp(basename, "nfkd") == 0) {
mainNormalizer = Normalizer2::getNFKDInstance(status);
} else if (uprv_strcmp(basename, "uts46d") == 0) {
- mainNormalizer = Normalizer2::getInstance(NULL, "uts46", UNORM2_COMPOSE, status);
+ mainNormalizer = Normalizer2::getInstance(nullptr, "uts46", UNORM2_COMPOSE, status);
} else {
mainNormalizer = nfdNormalizer;
f = prepareOutputFile("decompositionex");
@@ -850,49 +1054,11 @@ void computeDecompositions(const char* basename,
handleError(status, basename);
}
size_t index = 0;
- bool writeToStorage = false;
- // Sadly, C++ lacks break and continue by label, so using goto in the
- // inner loops to break or continue the outer loop.
if (!supplementary) {
- outer16: for (;;) {
- if (index == storage16.size()) {
- writeToStorage = true;
- break;
- }
- if (storage16[index] == utf32[0]) {
- for (int32_t i = 1; i < len; ++i) {
- if (storage16[index + i] != uint32_t(utf32[i])) {
- ++index;
- // continue outer
- goto outer16;
- }
- }
- // break outer
- goto after;
- }
- ++index;
- }
+ index = findOrAppend(storage16, utf32, len);
} else {
- outer32: for (;;) {
- if (index == storage32.size()) {
- writeToStorage = true;
- break;
- }
- if (storage32[index] == uint32_t(utf32[0])) {
- for (int32_t i = 1; i < len; ++i) {
- if (storage32[index + i] != uint32_t(utf32[i])) {
- ++index;
- // continue outer
- goto outer32;
- }
- }
- // break outer
- goto after;
- }
- ++index;
- }
+ index = findOrAppend(storage32, utf32, len);
}
- after:
if (index > 0xFFF) {
status.set(U_INTERNAL_PROGRAM_ERROR);
handleError(status, basename);
@@ -904,18 +1070,6 @@ void computeDecompositions(const char* basename,
status.set(U_INTERNAL_PROGRAM_ERROR);
handleError(status, basename);
}
- if (writeToStorage) {
- if (!supplementary) {
- for (int32_t i = 0; i < len; ++i) {
- storage16.push_back(uint16_t(utf32[i]));
- }
- } else {
- for (int32_t i = 0; i < len; ++i) {
- storage32.push_back(uint32_t(utf32[i]));
- }
- }
- }
-
uint32_t nonRoundTripMarker = 0;
if (!nonNfdOrRoundTrips) {
nonRoundTripMarker = (NON_ROUND_TRIP_MARKER << 16);
@@ -1012,6 +1166,12 @@ int exportUprops(int argc, char* argv[]) {
i = UCHAR_INT_START;
}
if (i == UCHAR_INT_LIMIT) {
+ i = UCHAR_GENERAL_CATEGORY_MASK;
+ }
+ if (i == UCHAR_GENERAL_CATEGORY_MASK + 1) {
+ i = UCHAR_BIDI_MIRRORING_GLYPH;
+ }
+ if (i == UCHAR_BIDI_MIRRORING_GLYPH + 1) {
i = UCHAR_SCRIPT_EXTENSIONS;
}
if (i == UCHAR_SCRIPT_EXTENSIONS + 1) {
@@ -1019,13 +1179,13 @@ int exportUprops(int argc, char* argv[]) {
}
UProperty uprop = static_cast<UProperty>(i);
const char* propName = u_getPropertyName(uprop, U_SHORT_PROPERTY_NAME);
- if (propName == NULL) {
+ if (propName == nullptr) {
propName = u_getPropertyName(uprop, U_LONG_PROPERTY_NAME);
- if (propName != NULL && VERBOSE) {
+ if (propName != nullptr && VERBOSE) {
std::cerr << "Note: falling back to long name for: " << propName << std::endl;
}
}
- if (propName != NULL) {
+ if (propName != nullptr) {
propNames.push_back(propName);
} else {
std::cerr << "Warning: Could not find name for: " << uprop << std::endl;
@@ -1095,6 +1255,10 @@ int exportUprops(int argc, char* argv[]) {
dumpBinaryProperty(propEnum, f);
} else if (UCHAR_INT_START <= propEnum && propEnum <= UCHAR_INT_LIMIT) {
dumpEnumeratedProperty(propEnum, f);
+ } else if (propEnum == UCHAR_GENERAL_CATEGORY_MASK) {
+ dumpGeneralCategoryMask(f);
+ } else if (propEnum == UCHAR_BIDI_MIRRORING_GLYPH) {
+ dumpBidiMirroringGlyph(f);
} else if (propEnum == UCHAR_SCRIPT_EXTENSIONS) {
dumpScriptExtensions(f);
} else {
@@ -1149,7 +1313,7 @@ int exportCase(int argc, char* argv[]) {
const UTrie2* caseTrie = &caseProps->trie;
AddRangeHelper helper = { builder.getAlias() };
- utrie2_enum(caseTrie, NULL, addRangeToUCPTrie, &helper);
+ utrie2_enum(caseTrie, nullptr, addRangeToUCPTrie, &helper);
UCPTrieValueWidth width = UCPTRIE_VALUE_BITS_16;
LocalUCPTriePointer utrie(umutablecptrie_buildImmutable(
diff --git a/Build/source/libs/icu/icu-src/source/tools/icuinfo/icuinfo.cpp b/Build/source/libs/icu/icu-src/source/tools/icuinfo/icuinfo.cpp
index a3c1f5513d8..39dc6ab890d 100644
--- a/Build/source/libs/icu/icu-src/source/tools/icuinfo/icuinfo.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/icuinfo/icuinfo.cpp
@@ -168,26 +168,26 @@ void cmd_listplugins() {
printf( " >>> Error | Explanation \n");
printf( "-----------------------------------\n");
- for(i=0;(plug=uplug_getPlugInternal(i))!=NULL;i++) {
+ for(i=0;(plug=uplug_getPlugInternal(i))!=nullptr;i++) {
UErrorCode libStatus = U_ZERO_ERROR;
const char *name = uplug_getPlugName(plug);
const char *sym = uplug_getSymbolName(plug);
const char *lib = uplug_getLibraryName(plug, &libStatus);
const char *config = uplug_getConfiguration(plug);
UErrorCode loadStatus = uplug_getPlugLoadStatus(plug);
- const char *message = NULL;
+ const char *message = nullptr;
printf("\n#%d %-6s %s \n",
i+1,
udbg_enumName(UDBG_UPlugLevel,(int32_t)uplug_getPlugLevel(plug)),
- name!=NULL?(*name?name:"this plugin did not call uplug_setPlugName()"):"(null)"
+ name!=nullptr?(*name?name:"this plugin did not call uplug_setPlugName()"):"(null)"
);
printf(" plugin| %10s:%-10s\n",
- (U_SUCCESS(libStatus)?(lib!=NULL?lib:"(null)"):u_errorName(libStatus)),
- sym!=NULL?sym:"(null)"
+ (U_SUCCESS(libStatus)?(lib!=nullptr?lib:"(null)"):u_errorName(libStatus)),
+ sym!=nullptr?sym:"(null)"
);
- if(config!=NULL&&*config) {
+ if(config!=nullptr&&*config) {
printf(" config| %s\n", config);
}
@@ -205,7 +205,7 @@ void cmd_listplugins() {
break;
case U_ZERO_ERROR:
- message = NULL; /* no message */
+ message = nullptr; /* no message */
break;
default:
if(U_FAILURE(loadStatus)) {
@@ -215,7 +215,7 @@ void cmd_listplugins() {
}
}
- if(message!=NULL) {
+ if(message!=nullptr) {
printf("\\\\\\ status| %s\n"
"/// %s\n", u_errorName(loadStatus), message);
}
@@ -281,7 +281,7 @@ main(int argc, char* argv[]) {
if(options[7].doesOccur) { /* 2nd part of version: cleanup */
FILE *out = fopen(options[7].value, "w");
- if(out==NULL) {
+ if(out==nullptr) {
fprintf(stderr,"ERR: can't write to XML file %s\n", options[7].value);
return 1;
}
diff --git a/Build/source/libs/icu/icu-src/source/tools/icupkg/icupkg.cpp b/Build/source/libs/icu/icu-src/source/tools/icupkg/icupkg.cpp
index a12e956d199..392ed588991 100644
--- a/Build/source/libs/icu/icu-src/source/tools/icupkg/icupkg.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/icupkg/icupkg.cpp
@@ -283,7 +283,7 @@ main(int argc, char *argv[]) {
}
pkg=new Package;
- if(pkg==NULL) {
+ if(pkg==nullptr) {
fprintf(stderr, "icupkg: not enough memory\n");
return U_MEMORY_ALLOCATION_ERROR;
}
@@ -312,13 +312,13 @@ main(int argc, char *argv[]) {
sourcePath=options[OPT_SOURCEDIR].value;
} else {
// work relative to the current working directory
- sourcePath=NULL;
+ sourcePath=nullptr;
}
if(options[OPT_DESTDIR].doesOccur) {
destPath=options[OPT_DESTDIR].value;
} else {
// work relative to the current working directory
- destPath=NULL;
+ destPath=nullptr;
}
if(0==strcmp(argv[1], "new")) {
@@ -327,7 +327,7 @@ main(int argc, char *argv[]) {
printUsage(pname, false);
return U_ILLEGAL_ARGUMENT_ERROR;
}
- inFilename=NULL;
+ inFilename=nullptr;
isPackage=true;
} else {
inFilename=argv[1];
@@ -347,7 +347,7 @@ main(int argc, char *argv[]) {
isModified=true;
}
} else if(isPackage) {
- outFilename=NULL;
+ outFilename=nullptr;
} else /* !isPackage */ {
outFilename=inFilename;
isModified=(UBool)(sourcePath!=destPath);
@@ -420,7 +420,7 @@ main(int argc, char *argv[]) {
} else if(options[OPT_COPYRIGHT].doesOccur) {
outComment=U_COPYRIGHT_STRING;
} else {
- outComment=NULL;
+ outComment=nullptr;
}
if(options[OPT_MATCHMODE].doesOccur) {
@@ -435,11 +435,11 @@ main(int argc, char *argv[]) {
/* remove items */
if(options[OPT_REMOVE_LIST].doesOccur) {
listPkg=new Package();
- if(listPkg==NULL) {
+ if(listPkg==nullptr) {
fprintf(stderr, "icupkg: not enough memory\n");
exit(U_MEMORY_ALLOCATION_ERROR);
}
- if(readList(NULL, options[OPT_REMOVE_LIST].value, false, listPkg)) {
+ if(readList(nullptr, options[OPT_REMOVE_LIST].value, false, listPkg)) {
pkg->removeItems(*listPkg);
delete listPkg;
isModified=true;
@@ -454,10 +454,10 @@ main(int argc, char *argv[]) {
* use a separate Package so that its memory and items stay around
* as long as the main Package
*/
- addListPkg=NULL;
+ addListPkg=nullptr;
if(options[OPT_ADD_LIST].doesOccur) {
addListPkg=new Package();
- if(addListPkg==NULL) {
+ if(addListPkg==nullptr) {
fprintf(stderr, "icupkg: not enough memory\n");
exit(U_MEMORY_ALLOCATION_ERROR);
}
@@ -474,11 +474,11 @@ main(int argc, char *argv[]) {
/* extract items */
if(options[OPT_EXTRACT_LIST].doesOccur) {
listPkg=new Package();
- if(listPkg==NULL) {
+ if(listPkg==nullptr) {
fprintf(stderr, "icupkg: not enough memory\n");
exit(U_MEMORY_ALLOCATION_ERROR);
}
- if(readList(NULL, options[OPT_EXTRACT_LIST].value, false, listPkg)) {
+ if(readList(nullptr, options[OPT_EXTRACT_LIST].value, false, listPkg)) {
pkg->extractItems(destPath, *listPkg, outType);
delete listPkg;
} else {
@@ -493,7 +493,7 @@ main(int argc, char *argv[]) {
if (options[OPT_LIST_FILE].doesOccur) {
FileStream *out;
out = T_FileStream_open(options[OPT_LIST_FILE].value, "w");
- if (out != NULL) {
+ if (out != nullptr) {
for(i=0; i<pkg->getItemCount(); ++i) {
T_FileStream_writeLine(out, pkg->getItem(i)->name);
T_FileStream_writeLine(out, "\n");
@@ -519,8 +519,8 @@ main(int argc, char *argv[]) {
if(isModified) {
char outFilenameBuffer[1024]; // for auto-generated output filename, if necessary
- if(outFilename==NULL || outFilename[0]==0) {
- if(inFilename==NULL || inFilename[0]==0) {
+ if(outFilename==nullptr || outFilename[0]==0) {
+ if(inFilename==nullptr || inFilename[0]==0) {
fprintf(stderr, "icupkg: unable to auto-generate an output filename if there is no input filename\n");
exit(U_ILLEGAL_ARGUMENT_ERROR);
}
@@ -545,7 +545,7 @@ main(int argc, char *argv[]) {
if(options[OPT_TOC_PREFIX].doesOccur) {
pkg->setPrefix(options[OPT_TOC_PREFIX].value);
}
- result = writePackageDatFile(outFilename, outComment, NULL, NULL, pkg, outType);
+ result = writePackageDatFile(outFilename, outComment, nullptr, nullptr, pkg, outType);
}
delete addListPkg;
diff --git a/Build/source/libs/icu/icu-src/source/tools/icuswap/icuswap.cpp b/Build/source/libs/icu/icu-src/source/tools/icuswap/icuswap.cpp
index 92c2d603d24..db1eafc0252 100644
--- a/Build/source/libs/icu/icu-src/source/tools/icuswap/icuswap.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/icuswap/icuswap.cpp
@@ -122,10 +122,10 @@ main(int argc, char *argv[]) {
/* get the program basename */
pname=strrchr(argv[0], U_FILE_SEP_CHAR);
- if(pname==NULL) {
+ if(pname==nullptr) {
pname=strrchr(argv[0], '/');
}
- if(pname!=NULL) {
+ if(pname!=nullptr) {
++pname;
} else {
pname=argv[0];
@@ -160,12 +160,12 @@ main(int argc, char *argv[]) {
return printUsage(pname, false);
}
- in=out=NULL;
- data=NULL;
+ in=out=nullptr;
+ data=nullptr;
/* open the input file, get its length, allocate memory for it, read the file */
in=fopen(argv[1], "rb");
- if(in==NULL) {
+ if(in==nullptr) {
fprintf(stderr, "%s: unable to open input file \"%s\"\n", pname, argv[1]);
rc=2;
goto done;
@@ -185,7 +185,7 @@ main(int argc, char *argv[]) {
* additional padding bytes
*/
data=(char *)malloc(length+DEFAULT_PADDING_LENGTH);
- if(data==NULL) {
+ if(data==nullptr) {
fprintf(stderr, "%s: error allocating memory for \"%s\"\n", pname, argv[1]);
rc=2;
goto done;
@@ -201,7 +201,7 @@ main(int argc, char *argv[]) {
}
fclose(in);
- in=NULL;
+ in=nullptr;
/* swap the data in-place */
errorCode=U_ZERO_ERROR;
@@ -253,7 +253,7 @@ main(int argc, char *argv[]) {
}
out=fopen(argv[2], "wb");
- if(out==NULL) {
+ if(out==nullptr) {
fprintf(stderr, "%s: unable to open output file \"%s\"\n", pname, argv[2]);
rc=5;
goto done;
@@ -266,19 +266,19 @@ main(int argc, char *argv[]) {
}
fclose(out);
- out=NULL;
+ out=nullptr;
/* all done */
rc=0;
done:
- if(in!=NULL) {
+ if(in!=nullptr) {
fclose(in);
}
- if(out!=NULL) {
+ if(out!=nullptr) {
fclose(out);
}
- if(data!=NULL) {
+ if(data!=nullptr) {
free(data);
}
return rc;
@@ -356,7 +356,7 @@ udata_swapPackage(const char *inFilename, const char *outFilename,
/* udata_swapDataHeader checks the arguments */
headerSize=udata_swapDataHeader(ds, inData, length, outData, pErrorCode);
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return 0;
}
@@ -419,7 +419,7 @@ udata_swapPackage(const char *inFilename, const char *outFilename,
/* read the last item's offset and preflight it */
offset=ds->readUInt32(inEntries[itemCount-1].dataOffset);
- itemLength=udata_swap(ds, inBytes+offset, -1, NULL, pErrorCode);
+ itemLength=udata_swap(ds, inBytes+offset, -1, nullptr, pErrorCode);
if(U_SUCCESS(*pErrorCode)) {
return headerSize+offset+(uint32_t)itemLength;
@@ -522,7 +522,7 @@ udata_swapPackage(const char *inFilename, const char *outFilename,
if(inData==outData) {
/* +15: prepare for extra padding of a newly-last item */
table=(ToCEntry *)uprv_malloc(itemCount*sizeof(ToCEntry)+length+DEFAULT_PADDING_LENGTH);
- if(table!=NULL) {
+ if(table!=nullptr) {
outBytes=(uint8_t *)(table+itemCount);
/* copy the item count and the swapped strings */
@@ -532,7 +532,7 @@ udata_swapPackage(const char *inFilename, const char *outFilename,
} else {
table=(ToCEntry *)uprv_malloc(itemCount*sizeof(ToCEntry));
}
- if(table==NULL) {
+ if(table==nullptr) {
udata_printError(ds, "udata_swapPackage(): out of memory allocating %d bytes\n",
inData==outData ?
itemCount*sizeof(ToCEntry)+length+DEFAULT_PADDING_LENGTH :
diff --git a/Build/source/libs/icu/icu-src/source/tools/makeconv/genmbcs.cpp b/Build/source/libs/icu/icu-src/source/tools/makeconv/genmbcs.cpp
index 138d254d291..43b96d814fb 100644
--- a/Build/source/libs/icu/icu-src/source/tools/makeconv/genmbcs.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/makeconv/genmbcs.cpp
@@ -167,7 +167,7 @@ MBCSInit(MBCSData *mbcsData, UCMFile *ucm) {
U_CFUNC NewConverter *
MBCSOpen(UCMFile *ucm) {
MBCSData *mbcsData=(MBCSData *)uprv_malloc(sizeof(MBCSData));
- if(mbcsData==NULL) {
+ if(mbcsData==nullptr) {
printf("out of memory\n");
exit(U_MEMORY_ALLOCATION_ERROR);
}
@@ -186,7 +186,7 @@ U_CDECL_BEGIN
static void
MBCSClose(NewConverter *cnvData) {
MBCSData *mbcsData=(MBCSData *)cnvData;
- if(mbcsData!=NULL) {
+ if(mbcsData!=nullptr) {
MBCSDestruct(mbcsData);
uprv_free(mbcsData);
}
@@ -209,7 +209,7 @@ MBCSStartMappings(MBCSData *mbcsData) {
if(sum>0) {
mbcsData->unicodeCodeUnits=(uint16_t *)uprv_malloc(sum*sizeof(uint16_t));
- if(mbcsData->unicodeCodeUnits==NULL) {
+ if(mbcsData->unicodeCodeUnits==nullptr) {
fprintf(stderr, "error: out of memory allocating %ld 16-bit code units\n",
(long)sum);
return false;
@@ -231,7 +231,7 @@ MBCSStartMappings(MBCSData *mbcsData) {
sum=0x100000*maxCharLength;
}
mbcsData->fromUBytes=(uint8_t *)uprv_malloc(sum);
- if(mbcsData->fromUBytes==NULL) {
+ if(mbcsData->fromUBytes==nullptr) {
fprintf(stderr, "error: out of memory allocating %ld B for target mappings\n", (long)sum);
return false;
}
diff --git a/Build/source/libs/icu/icu-src/source/tools/makeconv/makeconv.cpp b/Build/source/libs/icu/icu-src/source/tools/makeconv/makeconv.cpp
index f007b80c7db..b14b4316f3b 100644
--- a/Build/source/libs/icu/icu-src/source/tools/makeconv/makeconv.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/makeconv/makeconv.cpp
@@ -56,17 +56,17 @@ initConvData(ConvData *data) {
static void
cleanupConvData(ConvData *data) {
- if(data!=NULL) {
- if(data->cnvData!=NULL) {
+ if(data!=nullptr) {
+ if(data->cnvData!=nullptr) {
data->cnvData->close(data->cnvData);
- data->cnvData=NULL;
+ data->cnvData=nullptr;
}
- if(data->extData!=NULL) {
+ if(data->extData!=nullptr) {
data->extData->close(data->extData);
- data->extData=NULL;
+ data->extData=nullptr;
}
ucm_close(data->ucm);
- data->ucm=NULL;
+ data->ucm=nullptr;
}
}
@@ -100,7 +100,7 @@ static UDataInfo dataInfo={
U_IS_BIG_ENDIAN,
U_CHARSET_FAMILY,
- sizeof(UChar),
+ sizeof(char16_t),
0,
{0x63, 0x6e, 0x76, 0x74}, /* dataFormat="cnvt" */
@@ -111,7 +111,7 @@ static UDataInfo dataInfo={
static void
writeConverterData(ConvData *data, const char *cnvName, const char *cnvDir, UErrorCode *status)
{
- UNewDataMemory *mem = NULL;
+ UNewDataMemory *mem = nullptr;
uint32_t sz2;
uint32_t size = 0;
int32_t tableType;
@@ -122,14 +122,14 @@ writeConverterData(ConvData *data, const char *cnvName, const char *cnvDir, UErr
}
tableType=TABLE_NONE;
- if(data->cnvData!=NULL) {
+ if(data->cnvData!=nullptr) {
tableType|=TABLE_BASE;
}
- if(data->extData!=NULL) {
+ if(data->extData!=nullptr) {
tableType|=TABLE_EXT;
}
- mem = udata_create(cnvDir, "cnv", cnvName, &dataInfo, haveCopyright ? U_COPYRIGHT_STRING : NULL, status);
+ mem = udata_create(cnvDir, "cnv", cnvName, &dataInfo, haveCopyright ? U_COPYRIGHT_STRING : nullptr, status);
if(U_FAILURE(*status))
{
@@ -191,8 +191,8 @@ static UOption options[]={
UOPTION_VERSION,
UOPTION_DESTDIR,
UOPTION_VERBOSE,
- { "small", NULL, NULL, NULL, '\1', UOPT_NO_ARG, 0 },
- { "ignore-siso-check", NULL, NULL, NULL, '\1', UOPT_NO_ARG, 0 },
+ { "small", nullptr, nullptr, nullptr, '\1', UOPT_NO_ARG, 0 },
+ { "ignore-siso-check", nullptr, nullptr, nullptr, '\1', UOPT_NO_ARG, 0 },
UOPTION_QUIET,
UOPTION_SOURCEDIR,
};
@@ -264,7 +264,7 @@ int main(int argc, char* argv[])
icu::CharString outFileName;
UErrorCode err = U_ZERO_ERROR;
- if (destdir != NULL && *destdir != 0) {
+ if (destdir != nullptr && *destdir != 0) {
outFileName.append(destdir, err).ensureEndsWithFileSeparator(err);
if (U_FAILURE(err)) {
return err;
@@ -292,7 +292,7 @@ int main(int argc, char* argv[])
const char *arg = getLongPathname(*argv);
const char* sourcedir = options[OPT_SOURCEDIR].value;
- if (sourcedir != NULL && *sourcedir != 0 && uprv_strcmp(sourcedir, ".") != 0) {
+ if (sourcedir != nullptr && *sourcedir != 0 && uprv_strcmp(sourcedir, ".") != 0) {
pathBuf.clear();
pathBuf.appendPathPart(sourcedir, localError);
pathBuf.appendPathPart(arg, localError);
@@ -358,10 +358,10 @@ int main(int argc, char* argv[])
char *p;
p = strrchr(cnvName, U_FILE_SEP_CHAR); /* Find last file separator */
- if(p == NULL) /* OK, try alternate */
+ if(p == nullptr) /* OK, try alternate */
{
p = strrchr(cnvName, U_FILE_ALT_SEP_CHAR);
- if(p == NULL)
+ if(p == nullptr)
{
p=cnvName; /* If no separators, no problem */
}
@@ -426,7 +426,7 @@ getPlatformAndCCSIDFromName(const char *name, int8_t *pPlatform, int32_t *pCCSID
++name;
}
*pPlatform=UCNV_IBM;
- *pCCSID=(int32_t)uprv_strtoul(name, NULL, 10);
+ *pCCSID=(int32_t)uprv_strtoul(name, nullptr, 10);
} else {
*pPlatform=UCNV_UNKNOWN;
*pCCSID=0;
@@ -516,7 +516,7 @@ readHeader(ConvData *data,
*/
if(data->ucm->baseName[0]==0) {
prototype=ucnv_converterStaticData[staticData->conversionType];
- if(prototype!=NULL) {
+ if(prototype!=nullptr) {
if(staticData->name[0]==0) {
uprv_strcpy((char *)staticData->name, prototype->name);
}
@@ -578,7 +578,7 @@ readFile(ConvData *data, const char* converterName,
data->ucm=ucm_open();
convFile=T_FileStream_open(converterName, "r");
- if(convFile==NULL) {
+ if(convFile==nullptr) {
*pErrorCode=U_FILE_ACCESS_ERROR;
return false;
}
@@ -594,7 +594,7 @@ readFile(ConvData *data, const char* converterName,
ucm_processStates(baseStates, IGNORE_SISO_CHECK);
} else {
dataIsBase=false;
- baseStates=NULL;
+ baseStates=nullptr;
}
/* read the base table */
@@ -663,7 +663,7 @@ createConverter(ConvData *data, const char *converterName, UErrorCode *pErrorCod
* and an optional extension table.
*/
data->cnvData=MBCSOpen(data->ucm);
- if(data->cnvData==NULL) {
+ if(data->cnvData==nullptr) {
*pErrorCode=U_MEMORY_ALLOCATION_ERROR;
} else if(!data->cnvData->isValid(data->cnvData,
@@ -710,7 +710,7 @@ createConverter(ConvData *data, const char *converterName, UErrorCode *pErrorCod
if(data->ucm->ext->mappingsLength>0) {
/* prepare the extension table, if there is one */
data->extData=CnvExtOpen(data->ucm);
- if(data->extData==NULL) {
+ if(data->extData==nullptr) {
*pErrorCode=U_MEMORY_ALLOCATION_ERROR;
} else if(
!data->extData->addTable(data->extData, data->ucm->ext, &data->staticData)
@@ -743,7 +743,7 @@ createConverter(ConvData *data, const char *converterName, UErrorCode *pErrorCod
} else {
/* prepare the extension table */
data->extData=CnvExtOpen(data->ucm);
- if(data->extData==NULL) {
+ if(data->extData==nullptr) {
*pErrorCode=U_MEMORY_ALLOCATION_ERROR;
} else {
/* fill in gaps in extension file header fields */
diff --git a/Build/source/libs/icu/icu-src/source/tools/pkgdata/pkgdata.cpp b/Build/source/libs/icu/icu-src/source/tools/pkgdata/pkgdata.cpp
index e1edcd3cac3..c2ac112f6ef 100644
--- a/Build/source/libs/icu/icu-src/source/tools/pkgdata/pkgdata.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/pkgdata/pkgdata.cpp
@@ -91,7 +91,7 @@ static void pkg_destroyOptMatchArch(char *optMatchArch);
#endif
static int32_t pkg_createWithAssemblyCode(const char *targetDir, const char mode, const char *gencFilePath);
-static int32_t pkg_generateLibraryFile(const char *targetDir, const char mode, const char *objectFile, char *command = NULL, UBool specialHandling=false);
+static int32_t pkg_generateLibraryFile(const char *targetDir, const char mode, const char *objectFile, char *command = nullptr, UBool specialHandling=false);
static int32_t pkg_archiveLibrary(const char *targetDir, const char *version, UBool reverseExt);
static void createFileNames(UPKGOptions *o, const char mode, const char *version_major, const char *version, const char *libName, const UBool reverseExt, UBool noVersion);
static int32_t initializePkgDataFlags(UPKGOptions *o);
@@ -215,7 +215,7 @@ static const char* FLAG_NAMES[PKGDATA_FLAGS_SIZE] = {
"RANLIB",
"INSTALL_CMD"
};
-static char **pkgDataFlags = NULL;
+static char **pkgDataFlags = nullptr;
enum {
LIB_FILE,
@@ -423,7 +423,7 @@ main(int argc, char* argv[]) {
if (options[BLDOPT].doesOccur) {
o.options = options[BLDOPT].value;
} else {
- o.options = NULL;
+ o.options = nullptr;
}
#endif
if(options[COPYRIGHT].doesOccur) {
@@ -449,7 +449,7 @@ main(int argc, char* argv[]) {
if( options[INSTALL].doesOccur ) {
o.install = options[INSTALL].value;
} else {
- o.install = NULL;
+ o.install = nullptr;
}
if( options[SOURCEDIR].doesOccur ) {
@@ -479,7 +479,7 @@ main(int argc, char* argv[]) {
}
/* OK options are set up. Now the file lists. */
- tail = NULL;
+ tail = nullptr;
for( n=1; n<argc; n++) {
o.fileListFiles = pkg_appendToList(o.fileListFiles, &tail, uprv_strdup(argv[n]));
}
@@ -493,32 +493,32 @@ main(int argc, char* argv[]) {
result = pkg_executeOptions(&o);
- if (pkgDataFlags != NULL) {
+ if (pkgDataFlags != nullptr) {
for (n = 0; n < PKGDATA_FLAGS_SIZE; n++) {
- if (pkgDataFlags[n] != NULL) {
+ if (pkgDataFlags[n] != nullptr) {
uprv_free(pkgDataFlags[n]);
}
}
uprv_free(pkgDataFlags);
}
- if (o.cShortName != NULL) {
+ if (o.cShortName != nullptr) {
uprv_free((char *)o.cShortName);
}
- if (o.fileListFiles != NULL) {
+ if (o.fileListFiles != nullptr) {
pkg_deleteList(o.fileListFiles);
}
- if (o.filePaths != NULL) {
+ if (o.filePaths != nullptr) {
pkg_deleteList(o.filePaths);
}
- if (o.files != NULL) {
+ if (o.files != nullptr) {
pkg_deleteList(o.files);
}
return result;
}
static int runCommand(const char* command, UBool specialHandling) {
- char *cmd = NULL;
+ char *cmd = nullptr;
char cmdBuffer[SMALL_BUFFER_MAX_SIZE];
int32_t len = static_cast<int32_t>(strlen(command));
@@ -528,16 +528,19 @@ static int runCommand(const char* command, UBool specialHandling) {
if (!specialHandling) {
#if defined(USING_CYGWIN) || U_PLATFORM == U_PF_MINGW || U_PLATFORM == U_PF_OS400
+ int32_t buff_len;
if ((len + BUFFER_PADDING_SIZE) >= SMALL_BUFFER_MAX_SIZE) {
cmd = (char *)uprv_malloc(len + BUFFER_PADDING_SIZE);
+ buff_len = len + BUFFER_PADDING_SIZE;
} else {
cmd = cmdBuffer;
+ buff_len = SMALL_BUFFER_MAX_SIZE;
}
#if defined(USING_CYGWIN) || U_PLATFORM == U_PF_MINGW
- sprintf(cmd, "bash -c \"%s\"", command);
+ snprintf(cmd, buff_len, "bash -c \"%s\"", command);
#elif U_PLATFORM == U_PF_OS400
- sprintf(cmd, "QSH CMD('%s')", command);
+ snprintf(cmd, buff_len "QSH CMD('%s')", command);
#endif
#else
goto normal_command_mode;
@@ -580,9 +583,9 @@ static int32_t pkg_executeOptions(UPKGOptions *o) {
if (IN_FILES_MODE(mode)) {
/* Copy the raw data to the installation directory. */
- if (o->install != NULL) {
+ if (o->install != nullptr) {
uprv_strcpy(targetDir, o->install);
- if (o->shortName != NULL) {
+ if (o->shortName != nullptr) {
uprv_strcat(targetDir, PKGDATA_FILE_SEP_STRING);
uprv_strcat(targetDir, o->shortName);
}
@@ -612,7 +615,7 @@ static int32_t pkg_executeOptions(UPKGOptions *o) {
if(o->verbose) {
fprintf(stdout, "# Writing package file %s ..\n", datFileNamePath);
}
- result = writePackageDatFile(datFileNamePath, o->comment, o->srcDir, o->fileListFiles->str, NULL, U_CHARSET_FAMILY ? 'e' : U_IS_BIG_ENDIAN ? 'b' : 'l');
+ result = writePackageDatFile(datFileNamePath, o->comment, o->srcDir, o->fileListFiles->str, nullptr, U_CHARSET_FAMILY ? 'e' : U_IS_BIG_ENDIAN ? 'b' : 'l');
if (result != 0) {
fprintf(stderr,"Error writing package dat file.\n");
return result;
@@ -649,7 +652,7 @@ static int32_t pkg_executeOptions(UPKGOptions *o) {
}
}
- if (o->install != NULL) {
+ if (o->install != nullptr) {
result = pkg_installCommonMode(o->install, targetFileNamePath);
}
@@ -661,7 +664,7 @@ static int32_t pkg_executeOptions(UPKGOptions *o) {
#if !defined(WINDOWS_WITH_MSVC) || defined(USING_CYGWIN)
/* Get the version major number. */
- if (o->version != NULL) {
+ if (o->version != nullptr) {
for (uint32_t i = 0;i < sizeof(version_major);i++) {
if (o->version[i] == '.') {
version_major[i] = 0;
@@ -685,14 +688,14 @@ static int32_t pkg_executeOptions(UPKGOptions *o) {
}
#endif
/* Using the base libName and version number, generate the library file names. */
- createFileNames(o, mode, version_major, o->version == NULL ? "" : o->version, o->libName, reverseExt, noVersion);
+ createFileNames(o, mode, version_major, o->version == nullptr ? "" : o->version, o->libName, reverseExt, noVersion);
- if ((o->version!=NULL || IN_STATIC_MODE(mode)) && o->rebuild == false && o->pdsbuild == false) {
+ if ((o->version!=nullptr || IN_STATIC_MODE(mode)) && o->rebuild == false && o->pdsbuild == false) {
/* Check to see if a previous built data library file exists and check if it is the latest. */
- sprintf(checkLibFile, "%s%s", targetDir, libFileNames[LIB_FILE_VERSION]);
+ snprintf(checkLibFile, sizeof(checkLibFile), "%s%s", targetDir, libFileNames[LIB_FILE_VERSION]);
if (T_FileStream_file_exists(checkLibFile)) {
if (isFileModTimeLater(checkLibFile, o->srcDir, true) && isFileModTimeLater(checkLibFile, o->options)) {
- if (o->install != NULL) {
+ if (o->install != nullptr) {
if(o->verbose) {
fprintf(stdout, "# Installing already-built library into %s\n", o->install);
}
@@ -703,15 +706,15 @@ static int32_t pkg_executeOptions(UPKGOptions *o) {
}
}
return result;
- } else if (o->verbose && (o->install!=NULL)) {
+ } else if (o->verbose && (o->install!=nullptr)) {
fprintf(stdout, "# Not installing up-to-date library %s into %s\n", checkLibFile, o->install);
}
- } else if(o->verbose && (o->install!=NULL)) {
+ } else if(o->verbose && (o->install!=nullptr)) {
fprintf(stdout, "# Not installing missing %s into %s\n", checkLibFile, o->install);
}
}
- if (pkg_checkFlag(o) == NULL) {
+ if (pkg_checkFlag(o) == nullptr) {
/* Error occurred. */
return result;
}
@@ -732,7 +735,7 @@ static int32_t pkg_executeOptions(UPKGOptions *o) {
datFileNamePath,
o->tmpDir,
o->entryName,
- NULL,
+ nullptr,
gencFilePath,
sizeof(gencFilePath));
@@ -741,7 +744,7 @@ static int32_t pkg_executeOptions(UPKGOptions *o) {
fprintf(stderr, "Error generating assembly code for data.\n");
return result;
} else if (IN_STATIC_MODE(mode)) {
- if(o->install != NULL) {
+ if(o->install != nullptr) {
if(o->verbose) {
fprintf(stdout, "# Installing static library into %s\n", o->install);
}
@@ -766,15 +769,15 @@ static int32_t pkg_executeOptions(UPKGOptions *o) {
#endif
} else {
#ifdef CAN_WRITE_OBJ_CODE
- /* Try to detect the arch type, use NULL if unsuccessful */
+ /* Try to detect the arch type, use nullptr if unsuccessful */
char optMatchArch[10] = { 0 };
pkg_createOptMatchArch(optMatchArch);
writeObjectCode(
datFileNamePath,
o->tmpDir,
o->entryName,
- (optMatchArch[0] == 0 ? NULL : optMatchArch),
- NULL,
+ (optMatchArch[0] == 0 ? nullptr : optMatchArch),
+ nullptr,
gencFilePath,
sizeof(gencFilePath),
true);
@@ -827,7 +830,7 @@ static int32_t pkg_executeOptions(UPKGOptions *o) {
#if !U_PLATFORM_USES_ONLY_WIN32_API
/* Install the libraries if option was set. */
- if (o->install != NULL) {
+ if (o->install != nullptr) {
if(o->verbose) {
fprintf(stdout, "# Installing library file to %s ..\n", o->install);
}
@@ -857,16 +860,16 @@ static int32_t initializePkgDataFlags(UPKGOptions *o) {
#if !defined(WINDOWS_WITH_MSVC) || defined(USING_CYGWIN)
do {
#endif
- if (pkgDataFlags != NULL) {
+ if (pkgDataFlags != nullptr) {
for (int32_t i = 0; i < PKGDATA_FLAGS_SIZE; i++) {
pkgDataFlags[i] = (char*)uprv_malloc(sizeof(char) * currentBufferSize);
- if (pkgDataFlags[i] != NULL) {
+ if (pkgDataFlags[i] != nullptr) {
pkgDataFlags[i][0] = 0;
} else {
fprintf(stderr,"Error allocating memory for pkgDataFlags.\n");
- /* If an error occurs, ensure that the rest of the array is NULL */
+ /* If an error occurs, ensure that the rest of the array is nullptr */
for (int32_t n = i + 1; n < PKGDATA_FLAGS_SIZE; n++) {
- pkgDataFlags[n] = NULL;
+ pkgDataFlags[n] = nullptr;
}
return -1;
}
@@ -876,7 +879,7 @@ static int32_t initializePkgDataFlags(UPKGOptions *o) {
return -1;
}
- if (o->options == NULL) {
+ if (o->options == nullptr) {
return result;
}
@@ -891,7 +894,7 @@ static int32_t initializePkgDataFlags(UPKGOptions *o) {
for (int32_t i = 0; i < PKGDATA_FLAGS_SIZE; i++) {
if (pkgDataFlags[i]) {
uprv_free(pkgDataFlags[i]);
- pkgDataFlags[i] = NULL;
+ pkgDataFlags[i] = nullptr;
}
}
currentBufferSize = tmpResult;
@@ -926,15 +929,15 @@ static void createFileNames(UPKGOptions *o, const char mode, const char *version
#if U_PLATFORM == U_PF_MINGW
/* MinGW does not need the library prefix when building in dll mode. */
if (IN_DLL_MODE(mode)) {
- sprintf(libFileNames[LIB_FILE], "%s", libName);
+ snprintf(libFileNames[LIB_FILE], sizeof(libFileNames[LIB_FILE]), "%s", libName);
} else {
- sprintf(libFileNames[LIB_FILE], "%s%s%s",
+ snprintf(libFileNames[LIB_FILE], sizeof(libFileNames[LIB_FILE]), "%s%s%s",
(strstr(libName, "icudt") ? "lib" : ""),
pkgDataFlags[LIBPREFIX],
libName);
}
#else
- sprintf(libFileNames[LIB_FILE], "%s%s",
+ snprintf(libFileNames[LIB_FILE], sizeof(libFileNames[LIB_FILE]), "%s%s",
pkgDataFlags[LIBPREFIX],
libName);
#endif
@@ -945,13 +948,13 @@ static void createFileNames(UPKGOptions *o, const char mode, const char *version
#if U_PLATFORM == U_PF_MINGW
// Name the import library lib*.dll.a
- sprintf(libFileNames[LIB_FILE_MINGW], "lib%s.dll.a", libName);
+ snprintf(libFileNames[LIB_FILE_MINGW], sizeof(libFileNames[LIB_FILE_MINGW]), "lib%s.dll.a", libName);
#elif U_PLATFORM == U_PF_CYGWIN
- sprintf(libFileNames[LIB_FILE_CYGWIN], "cyg%s%s%s",
+ snprintf(libFileNames[LIB_FILE_CYGWIN], sizeof(libFileNames[LIB_FILE_CYGWIN]), "cyg%s%s%s",
libName,
FILE_EXTENSION_SEP,
pkgDataFlags[SO_EXT]);
- sprintf(libFileNames[LIB_FILE_CYGWIN_VERSION], "cyg%s%s%s%s",
+ snprintf(libFileNames[LIB_FILE_CYGWIN_VERSION], sizeof(libFileNames[LIB_FILE_CYGWIN_VERSION]), "cyg%s%s%s%s",
libName,
version_major,
FILE_EXTENSION_SEP,
@@ -960,32 +963,32 @@ static void createFileNames(UPKGOptions *o, const char mode, const char *version
uprv_strcat(pkgDataFlags[SO_EXT], ".");
uprv_strcat(pkgDataFlags[SO_EXT], pkgDataFlags[A_EXT]);
#elif U_PLATFORM == U_PF_OS400 || defined(_AIX)
- sprintf(libFileNames[LIB_FILE_VERSION_TMP], "%s%s%s",
+ snprintf(libFileNames[LIB_FILE_VERSION_TMP], sizeof(libFileNames[LIB_FILE_VERSION_TMP]), "%s%s%s",
libFileNames[LIB_FILE],
FILE_EXTENSION_SEP,
pkgDataFlags[SOBJ_EXT]);
#elif U_PLATFORM == U_PF_OS390
- sprintf(libFileNames[LIB_FILE_VERSION_TMP], "%s%s%s%s%s",
+ snprintf(libFileNames[LIB_FILE_VERSION_TMP], sizeof(libFileNames[LIB_FILE_VERSION_TMP]), "%s%s%s%s%s",
libFileNames[LIB_FILE],
pkgDataFlags[LIB_EXT_ORDER][0] == '.' ? "." : "",
reverseExt ? version : pkgDataFlags[SOBJ_EXT],
FILE_EXTENSION_SEP,
reverseExt ? pkgDataFlags[SOBJ_EXT] : version);
- sprintf(libFileNames[LIB_FILE_OS390BATCH_VERSION], "%s%s.x",
+ snprintf(libFileNames[LIB_FILE_OS390BATCH_VERSION], sizeof(libFileNames[LIB_FILE_OS390BATCH_VERSION]), "%s%s.x",
libFileNames[LIB_FILE],
version);
- sprintf(libFileNames[LIB_FILE_OS390BATCH_MAJOR], "%s%s.x",
+ snprintf(libFileNames[LIB_FILE_OS390BATCH_MAJOR], sizeof(libFileNames[LIB_FILE_OS390BATCH_MAJOR]), "%s%s.x",
libFileNames[LIB_FILE],
version_major);
#else
if (noVersion && !reverseExt) {
- sprintf(libFileNames[LIB_FILE_VERSION_TMP], "%s%s%s",
+ snprintf(libFileNames[LIB_FILE_VERSION_TMP], sizeof(libFileNames[LIB_FILE_VERSION_TMP]), "%s%s%s",
libFileNames[LIB_FILE],
FILE_SUFFIX,
pkgDataFlags[SOBJ_EXT]);
} else {
- sprintf(libFileNames[LIB_FILE_VERSION_TMP], "%s%s%s%s%s",
+ snprintf(libFileNames[LIB_FILE_VERSION_TMP], sizeof(libFileNames[LIB_FILE_VERSION_TMP]), "%s%s%s%s%s",
libFileNames[LIB_FILE],
FILE_SUFFIX,
reverseExt ? version : pkgDataFlags[SOBJ_EXT],
@@ -994,24 +997,24 @@ static void createFileNames(UPKGOptions *o, const char mode, const char *version
}
#endif
if (noVersion && !reverseExt) {
- sprintf(libFileNames[LIB_FILE_VERSION_MAJOR], "%s%s%s",
+ snprintf(libFileNames[LIB_FILE_VERSION_MAJOR], sizeof(libFileNames[LIB_FILE_VERSION_TMP]), "%s%s%s",
libFileNames[LIB_FILE],
FILE_SUFFIX,
pkgDataFlags[SO_EXT]);
- sprintf(libFileNames[LIB_FILE_VERSION], "%s%s%s",
+ snprintf(libFileNames[LIB_FILE_VERSION], sizeof(libFileNames[LIB_FILE_VERSION]), "%s%s%s",
libFileNames[LIB_FILE],
FILE_SUFFIX,
pkgDataFlags[SO_EXT]);
} else {
- sprintf(libFileNames[LIB_FILE_VERSION_MAJOR], "%s%s%s%s%s",
+ snprintf(libFileNames[LIB_FILE_VERSION_MAJOR], sizeof(libFileNames[LIB_FILE_VERSION_MAJOR]), "%s%s%s%s%s",
libFileNames[LIB_FILE],
FILE_SUFFIX,
reverseExt ? version_major : pkgDataFlags[SO_EXT],
FILE_EXTENSION_SEP,
reverseExt ? pkgDataFlags[SO_EXT] : version_major);
- sprintf(libFileNames[LIB_FILE_VERSION], "%s%s%s%s%s",
+ snprintf(libFileNames[LIB_FILE_VERSION], sizeof(libFileNames[LIB_FILE_VERSION]), "%s%s%s%s%s",
libFileNames[LIB_FILE],
FILE_SUFFIX,
reverseExt ? version : pkgDataFlags[SO_EXT],
@@ -1029,7 +1032,7 @@ static void createFileNames(UPKGOptions *o, const char mode, const char *version
#endif
if(IN_STATIC_MODE(mode)) {
- sprintf(libFileNames[LIB_FILE_VERSION], "%s.%s", libFileNames[LIB_FILE], pkgDataFlags[A_EXT]);
+ snprintf(libFileNames[LIB_FILE_VERSION], sizeof(libFileNames[LIB_FILE_VERSION]), "%s.%s", libFileNames[LIB_FILE], pkgDataFlags[A_EXT]);
libFileNames[LIB_FILE_VERSION_MAJOR][0]=0;
if(o->verbose) {
fprintf(stdout, "# libFileName[LIB_FILE_VERSION] = %s (static)\n", libFileNames[LIB_FILE_VERSION]);
@@ -1052,7 +1055,7 @@ static int32_t pkg_createSymLinks(const char *targetDir, UBool specialHandling)
return result;
}
- sprintf(cmd, "cd %s && %s %s && %s %s %s",
+ snprintf(cmd, sizeof(cmd), "cd %s && %s %s && %s %s %s",
targetDir,
RM_CMD,
libFileNames[LIB_FILE_VERSION_MAJOR],
@@ -1068,14 +1071,14 @@ static int32_t pkg_createSymLinks(const char *targetDir, UBool specialHandling)
if (specialHandling) {
#if U_PLATFORM == U_PF_CYGWIN
- sprintf(name1, "%s", libFileNames[LIB_FILE_CYGWIN]);
- sprintf(name2, "%s", libFileNames[LIB_FILE_CYGWIN_VERSION]);
+ snprintf(name1, sizeof(name1), "%s", libFileNames[LIB_FILE_CYGWIN]);
+ snprintf(name2, sizeof(name2), "%s", libFileNames[LIB_FILE_CYGWIN_VERSION]);
#elif U_PLATFORM == U_PF_OS390
/* Create the symbolic links for the import data */
/* Use the cmd buffer to store path to import data file to check its existence */
- sprintf(cmd, "%s/%s", targetDir, libFileNames[LIB_FILE_OS390BATCH_VERSION]);
+ snprintf(cmd, sizeof(cmd), "%s/%s", targetDir, libFileNames[LIB_FILE_OS390BATCH_VERSION]);
if (T_FileStream_file_exists(cmd)) {
- sprintf(cmd, "cd %s && %s %s && %s %s %s",
+ snprintf(cmd, sizeof(cmd), "cd %s && %s %s && %s %s %s",
targetDir,
RM_CMD,
libFileNames[LIB_FILE_OS390BATCH_MAJOR],
@@ -1088,7 +1091,7 @@ static int32_t pkg_createSymLinks(const char *targetDir, UBool specialHandling)
return result;
}
- sprintf(cmd, "cd %s && %s %s.x && %s %s %s.x",
+ snprintf(cmd, sizeof(cmd), "cd %s && %s %s.x && %s %s %s.x",
targetDir,
RM_CMD,
libFileNames[LIB_FILE],
@@ -1103,8 +1106,8 @@ static int32_t pkg_createSymLinks(const char *targetDir, UBool specialHandling)
}
/* Needs to be set here because special handling skips it */
- sprintf(name1, "%s%s%s", libFileNames[LIB_FILE], FILE_EXTENSION_SEP, pkgDataFlags[SO_EXT]);
- sprintf(name2, "%s", libFileNames[LIB_FILE_VERSION]);
+ snprintf(name1, sizeof(name1), "%s%s%s", libFileNames[LIB_FILE], FILE_EXTENSION_SEP, pkgDataFlags[SO_EXT]);
+ snprintf(name2, sizeof(name2), "%s", libFileNames[LIB_FILE_VERSION]);
#else
goto normal_symlink_mode;
#endif
@@ -1112,11 +1115,11 @@ static int32_t pkg_createSymLinks(const char *targetDir, UBool specialHandling)
#if U_PLATFORM != U_PF_CYGWIN
normal_symlink_mode:
#endif
- sprintf(name1, "%s%s%s", libFileNames[LIB_FILE], FILE_EXTENSION_SEP, pkgDataFlags[SO_EXT]);
- sprintf(name2, "%s", libFileNames[LIB_FILE_VERSION]);
+ snprintf(name1, sizeof(name1), "%s%s%s", libFileNames[LIB_FILE], FILE_EXTENSION_SEP, pkgDataFlags[SO_EXT]);
+ snprintf(name2, sizeof(name2), "%s", libFileNames[LIB_FILE_VERSION]);
}
- sprintf(cmd, "cd %s && %s %s && %s %s %s",
+ snprintf(cmd, sizeof(cmd), "cd %s && %s %s && %s %s %s",
targetDir,
RM_CMD,
name1,
@@ -1134,7 +1137,7 @@ static int32_t pkg_installLibrary(const char *installDir, const char *targetDir,
char cmd[SMALL_BUFFER_MAX_SIZE];
auto ret = snprintf(cmd,
- SMALL_BUFFER_MAX_SIZE,
+ sizeof(cmd),
"cd %s && %s %s %s%s%s",
targetDir,
pkgDataFlags[INSTALL_CMD],
@@ -1151,7 +1154,7 @@ static int32_t pkg_installLibrary(const char *installDir, const char *targetDir,
}
#ifdef CYGWINMSVC
- sprintf(cmd, "cd %s && %s %s.lib %s",
+ snprintf(cmd, sizeof(cmd), "cd %s && %s %s.lib %s",
targetDir,
pkgDataFlags[INSTALL_CMD],
libFileNames[LIB_FILE],
@@ -1164,7 +1167,7 @@ static int32_t pkg_installLibrary(const char *installDir, const char *targetDir,
return result;
}
#elif U_PLATFORM == U_PF_CYGWIN
- sprintf(cmd, "cd %s && %s %s %s",
+ snprintf(cmd, sizeof(cmd), "cd %s && %s %s %s",
targetDir,
pkgDataFlags[INSTALL_CMD],
libFileNames[LIB_FILE_CYGWIN_VERSION],
@@ -1179,7 +1182,7 @@ static int32_t pkg_installLibrary(const char *installDir, const char *targetDir,
#elif U_PLATFORM == U_PF_OS390
if (T_FileStream_file_exists(libFileNames[LIB_FILE_OS390BATCH_VERSION])) {
- sprintf(cmd, "%s %s %s",
+ snprintf(cmd, sizeof(cmd), "%s %s %s",
pkgDataFlags[INSTALL_CMD],
libFileNames[LIB_FILE_OS390BATCH_VERSION],
installDir
@@ -1214,9 +1217,9 @@ static int32_t pkg_installCommonMode(const char *installDir, const char *fileNam
}
}
#ifndef U_WINDOWS_WITH_MSVC
- sprintf(cmd, "%s %s %s", pkgDataFlags[INSTALL_CMD], fileName, installDir);
+ snprintf(cmd, sizeof(cmd), "%s %s %s", pkgDataFlags[INSTALL_CMD], fileName, installDir);
#else
- sprintf(cmd, "%s %s %s %s", WIN_INSTALL_CMD, fileName, installDir, WIN_INSTALL_CMD_FLAGS);
+ snprintf(cmd, sizeof(cmd), "%s %s %s %s", WIN_INSTALL_CMD, fileName, installDir, WIN_INSTALL_CMD_FLAGS);
#endif
result = runCommand(cmd);
@@ -1250,9 +1253,9 @@ static int32_t pkg_installFileMode(const char *installDir, const char *srcDir, c
int32_t bufferLength = 0;
FileStream *f = T_FileStream_open(fileListName, "r");
- if (f != NULL) {
+ if (f != nullptr) {
for(;;) {
- if (T_FileStream_readLine(f, buffer, SMALL_BUFFER_MAX_SIZE) != NULL) {
+ if (T_FileStream_readLine(f, buffer, SMALL_BUFFER_MAX_SIZE) != nullptr) {
bufferLength = static_cast<int32_t>(uprv_strlen(buffer));
/* Remove new line character. */
if (bufferLength > 0) {
@@ -1260,7 +1263,7 @@ static int32_t pkg_installFileMode(const char *installDir, const char *srcDir, c
}
auto ret = snprintf(cmd,
- SMALL_BUFFER_MAX_SIZE,
+ sizeof(cmd),
"%s %s%s%s %s%s%s",
pkgDataFlags[INSTALL_CMD],
srcDir, PKGDATA_FILE_SEP_STRING, buffer,
@@ -1287,7 +1290,7 @@ static int32_t pkg_installFileMode(const char *installDir, const char *srcDir, c
fprintf(stderr, "Unable to open list file: %s\n", fileListName);
}
#else
- sprintf(cmd, "%s %s %s %s", WIN_INSTALL_CMD, srcDir, installDir, WIN_INSTALL_CMD_FLAGS);
+ snprintf(cmd, sizeof(cmd), "%s %s %s %s", WIN_INSTALL_CMD, srcDir, installDir, WIN_INSTALL_CMD_FLAGS);
result = runCommand(cmd);
if (result != 0) {
fprintf(stderr, "Failed to install data file with command: %s\n", cmd);
@@ -1308,13 +1311,13 @@ static int32_t pkg_archiveLibrary(const char *targetDir, const char *version, UB
* archive file suffix is the same, then the final library needs to be archived.
*/
if (uprv_strcmp(pkgDataFlags[SOBJ_EXT], pkgDataFlags[SO_EXT]) != 0 && uprv_strcmp(pkgDataFlags[A_EXT], pkgDataFlags[SO_EXT]) == 0) {
- sprintf(libFileNames[LIB_FILE_VERSION], "%s%s%s.%s",
+ snprintf(libFileNames[LIB_FILE_VERSION], sizeof(libFileNames[LIB_FILE_VERSION]), "%s%s%s.%s",
libFileNames[LIB_FILE],
pkgDataFlags[LIB_EXT_ORDER][0] == '.' ? "." : "",
reverseExt ? version : pkgDataFlags[SO_EXT],
reverseExt ? pkgDataFlags[SO_EXT] : version);
- sprintf(cmd, "%s %s %s%s %s%s",
+ snprintf(cmd, sizeof(cmd), "%s %s %s%s %s%s",
pkgDataFlags[AR],
pkgDataFlags[ARFLAGS],
targetDir,
@@ -1328,7 +1331,7 @@ static int32_t pkg_archiveLibrary(const char *targetDir, const char *version, UB
return result;
}
- sprintf(cmd, "%s %s%s",
+ snprintf(cmd, sizeof(cmd), "%s %s%s",
pkgDataFlags[RANLIB],
targetDir,
libFileNames[LIB_FILE_VERSION]);
@@ -1340,7 +1343,7 @@ static int32_t pkg_archiveLibrary(const char *targetDir, const char *version, UB
}
/* Remove unneeded library file. */
- sprintf(cmd, "%s %s%s",
+ snprintf(cmd, sizeof(cmd), "%s %s%s",
RM_CMD,
targetDir,
libFileNames[LIB_FILE_VERSION_TMP]);
@@ -1364,7 +1367,7 @@ static int32_t pkg_archiveLibrary(const char *targetDir, const char *version, UB
*/
static int32_t pkg_generateLibraryFile(const char *targetDir, const char mode, const char *objectFile, char *command, UBool specialHandling) {
int32_t result = 0;
- char *cmd = NULL;
+ char *cmd = nullptr;
UBool freeCmd = false;
int32_t length = 0;
@@ -1375,15 +1378,15 @@ static int32_t pkg_generateLibraryFile(const char *targetDir, const char mode, c
* containing many object files and so the calling function should supply a command buffer that is large
* enough to handle this. Otherwise, use the default size.
*/
- if (command != NULL) {
+ if (command != nullptr) {
cmd = command;
}
if (IN_STATIC_MODE(mode)) {
- if (cmd == NULL) {
+ if (cmd == nullptr) {
length = static_cast<int32_t>(uprv_strlen(pkgDataFlags[AR]) + uprv_strlen(pkgDataFlags[ARFLAGS]) + uprv_strlen(targetDir) +
uprv_strlen(libFileNames[LIB_FILE_VERSION]) + uprv_strlen(objectFile) + uprv_strlen(pkgDataFlags[RANLIB]) + BUFFER_PADDING_SIZE);
- if ((cmd = (char *)uprv_malloc(sizeof(char) * length)) == NULL) {
+ if ((cmd = (char *)uprv_malloc(sizeof(char) * length)) == nullptr) {
fprintf(stderr, "Unable to allocate memory for command.\n");
return -1;
}
@@ -1406,7 +1409,7 @@ static int32_t pkg_generateLibraryFile(const char *targetDir, const char mode, c
result = runCommand(cmd);
}
} else /* if (IN_DLL_MODE(mode)) */ {
- if (cmd == NULL) {
+ if (cmd == nullptr) {
length = static_cast<int32_t>(uprv_strlen(pkgDataFlags[GENLIB]) + uprv_strlen(pkgDataFlags[LDICUDTFLAGS]) +
((uprv_strlen(targetDir) + uprv_strlen(libFileNames[LIB_FILE_VERSION_TMP])) * 2) +
uprv_strlen(objectFile) + uprv_strlen(pkgDataFlags[LD_SONAME]) +
@@ -1417,7 +1420,7 @@ static int32_t pkg_generateLibraryFile(const char *targetDir, const char mode, c
#elif U_PLATFORM == U_PF_MINGW
length += static_cast<int32_t>(uprv_strlen(targetDir) + uprv_strlen(libFileNames[LIB_FILE_MINGW]));
#endif
- if ((cmd = (char *)uprv_malloc(sizeof(char) * length)) == NULL) {
+ if ((cmd = (char *)uprv_malloc(sizeof(char) * length)) == nullptr) {
fprintf(stderr, "Unable to allocate memory for command.\n");
return -1;
}
@@ -1554,7 +1557,7 @@ static int32_t pkg_createWithAssemblyCode(const char *targetDir, const char mode
}
/* Generate the object file. */
- sprintf(cmd.getAlias(), "%s %s -o %s %s",
+ snprintf(cmd.getAlias(), length, "%s %s -o %s %s",
pkgDataFlags[COMPILER],
pkgDataFlags[LIBFLAGS],
tempObjectFile,
@@ -1612,9 +1615,9 @@ static int32_t pkg_createWithoutAssemblyCode(UPKGOptions *o, const char *targetD
char tempObjectFile[SMALL_BUFFER_MAX_SIZE] = "";
#ifdef USE_SINGLE_CCODE_FILE
char icudtAll[SMALL_BUFFER_MAX_SIZE] = "";
- FileStream *icudtAllFile = NULL;
+ FileStream *icudtAllFile = nullptr;
- sprintf(icudtAll, "%s%s%sall.c",
+ snprintf(icudtAll, sizeof(icudtAll), "%s%s%sall.c",
o->tmpDir,
PKGDATA_FILE_SEP_STRING,
libFileNames[LIB_FILE]);
@@ -1624,23 +1627,23 @@ static int32_t pkg_createWithoutAssemblyCode(UPKGOptions *o, const char *targetD
return result;
}
- if((icudtAllFile = T_FileStream_open(icudtAll, "w"))==NULL) {
+ if((icudtAllFile = T_FileStream_open(icudtAll, "w"))==nullptr) {
fprintf(stderr, "Unable to write to icudtall file: %s\n", icudtAll);
return result;
}
#endif
- if (list == NULL || listNames == NULL) {
- /* list and listNames should never be NULL since we are looping through the CharList with
+ if (list == nullptr || listNames == nullptr) {
+ /* list and listNames should never be nullptr since we are looping through the CharList with
* the given size.
*/
return -1;
}
- if ((cmd = (char *)uprv_malloc((listSize + 2) * SMALL_BUFFER_MAX_SIZE)) == NULL) {
+ if ((cmd = (char *)uprv_malloc((listSize + 2) * SMALL_BUFFER_MAX_SIZE)) == nullptr) {
fprintf(stderr, "Unable to allocate memory for cmd.\n");
return -1;
- } else if ((buffer = (char *)uprv_malloc((listSize + 1) * SMALL_BUFFER_MAX_SIZE)) == NULL) {
+ } else if ((buffer = (char *)uprv_malloc((listSize + 1) * SMALL_BUFFER_MAX_SIZE)) == nullptr) {
fprintf(stderr, "Unable to allocate memory for buffer.\n");
uprv_free(cmd);
return -1;
@@ -1652,7 +1655,7 @@ static int32_t pkg_createWithoutAssemblyCode(UPKGOptions *o, const char *targetD
if (i == 0) {
/* The first iteration calls the gencmn function and initializes the buffer. */
- createCommonDataFile(o->tmpDir, o->shortName, o->entryName, NULL, o->srcDir, o->comment, o->fileListFiles->str, 0, true, o->verbose, gencmnFile);
+ createCommonDataFile(o->tmpDir, o->shortName, o->entryName, nullptr, o->srcDir, o->comment, o->fileListFiles->str, 0, true, o->verbose, gencmnFile);
buffer[0] = 0;
#ifdef USE_SINGLE_CCODE_FILE
uprv_strcpy(tempObjectFile, gencmnFile);
@@ -1685,7 +1688,7 @@ static int32_t pkg_createWithoutAssemblyCode(UPKGOptions *o, const char *targetD
sprintf(dataDirName, "%s%s", DATA_PREFIX[n], PKGDATA_FILE_SEP_STRING);
/* If the name contains a prefix (indicating directory), alter the new name accordingly. */
pSubstring = uprv_strstr(name, dataDirName);
- if (pSubstring != NULL) {
+ if (pSubstring != nullptr) {
char newNameTmp[SMALL_BUFFER_MAX_SIZE] = "";
const char *p = name + uprv_strlen(dataDirName);
for (int32_t i = 0;;i++) {
@@ -1699,14 +1702,14 @@ static int32_t pkg_createWithoutAssemblyCode(UPKGOptions *o, const char *targetD
}
}
auto ret = snprintf(newName,
- SMALL_BUFFER_MAX_SIZE,
+ sizeof(newName),
"%s_%s",
DATA_PREFIX[n],
newNameTmp);
(void)ret;
U_ASSERT(0 <= ret && ret < SMALL_BUFFER_MAX_SIZE);
ret = snprintf(dataName,
- SMALL_BUFFER_MAX_SIZE,
+ sizeof(dataName),
"%s_%s",
o->shortName,
DATA_PREFIX[n]);
@@ -1725,8 +1728,9 @@ static int32_t pkg_createWithoutAssemblyCode(UPKGOptions *o, const char *targetD
writeCCode(
file,
o->tmpDir,
+ nullptr,
dataName[0] != 0 ? dataName : o->shortName,
- newName[0] != 0 ? newName : NULL,
+ newName[0] != 0 ? newName : nullptr,
gencmnFile,
sizeof(gencmnFile));
@@ -1819,14 +1823,14 @@ static int32_t pkg_createWindowsDLL(const char mode, const char *gencFilePath, U
char staticLibFilePath[SMALL_BUFFER_MAX_SIZE] = "";
#ifdef CYGWINMSVC
- sprintf(staticLibFilePath, "%s%s%s%s%s",
+ snprintf(staticLibFilePath, sizeof(staticLibFilePath), "%s%s%s%s%s",
o->targetDir,
PKGDATA_FILE_SEP_STRING,
pkgDataFlags[LIBPREFIX],
o->libName,
LIB_EXT);
#else
- sprintf(staticLibFilePath, "%s%s%s%s%s",
+ snprintf(staticLibFilePath, sizeof(staticLibFilePath), "%s%s%s%s%s",
o->targetDir,
PKGDATA_FILE_SEP_STRING,
(strstr(o->libName, "icudt") ? "s" : ""),
@@ -1834,7 +1838,7 @@ static int32_t pkg_createWindowsDLL(const char mode, const char *gencFilePath, U
LIB_EXT);
#endif
- sprintf(cmd, "%s\"%s\" \"%s\"",
+ snprintf(cmd, sizeof(cmd), "%s\"%s\" \"%s\"",
LIB_CMD,
staticLibFilePath,
gencFilePath);
@@ -1874,7 +1878,7 @@ static int32_t pkg_createWindowsDLL(const char mode, const char *gencFilePath, U
uprv_strcat(tmpResFilePath, ICUDATA_RES_FILE);
if (T_FileStream_file_exists(tmpResFilePath)) {
- sprintf(resFilePath, "\"%s\"", tmpResFilePath);
+ snprintf(resFilePath, sizeof(resFilePath), "\"%s\"", tmpResFilePath);
}
/* Check if dll file and lib file exists and that it is not newer than genc file. */
@@ -1904,7 +1908,7 @@ static int32_t pkg_createWindowsDLL(const char mode, const char *gencFilePath, U
}
#endif
- sprintf(cmd, "%s\"%s\" %s %s\"%s\" \"%s\" %s",
+ snprintf(cmd, sizeof(cmd), "%s\"%s\" %s %s\"%s\" \"%s\" %s",
LINK_CMD,
dllFilePath,
extraFlags,
@@ -1927,11 +1931,11 @@ static int32_t pkg_createWindowsDLL(const char mode, const char *gencFilePath, U
static UPKGOptions *pkg_checkFlag(UPKGOptions *o) {
#if U_PLATFORM == U_PF_AIX
/* AIX needs a map file. */
- char *flag = NULL;
+ char *flag = nullptr;
int32_t length = 0;
char tmpbuffer[SMALL_BUFFER_MAX_SIZE];
const char MAP_FILE_EXT[] = ".map";
- FileStream *f = NULL;
+ FileStream *f = nullptr;
char mapFile[SMALL_BUFFER_MAX_SIZE] = "";
int32_t start = -1;
uint32_t count = 0;
@@ -1942,16 +1946,16 @@ static UPKGOptions *pkg_checkFlag(UPKGOptions *o) {
/* This portion of the code removes 'rm -f all' in the GENLIB.
* Only occurs in AIX.
*/
- if (uprv_strstr(flag, rm_cmd) != NULL) {
- char *tmpGenlibFlagBuffer = NULL;
+ if (uprv_strstr(flag, rm_cmd) != nullptr) {
+ char *tmpGenlibFlagBuffer = nullptr;
int32_t i, offset;
length = static_cast<int32_t>(uprv_strlen(flag) + 1);
tmpGenlibFlagBuffer = (char *)uprv_malloc(length);
- if (tmpGenlibFlagBuffer == NULL) {
+ if (tmpGenlibFlagBuffer == nullptr) {
/* Memory allocation error */
fprintf(stderr,"Unable to allocate buffer of size: %d.\n", length);
- return NULL;
+ return nullptr;
}
uprv_strcpy(tmpGenlibFlagBuffer, flag);
@@ -2012,11 +2016,11 @@ static UPKGOptions *pkg_checkFlag(UPKGOptions *o) {
uprv_strcat(mapFile, MAP_FILE_EXT);
f = T_FileStream_open(mapFile, "w");
- if (f == NULL) {
+ if (f == nullptr) {
fprintf(stderr,"Unable to create map file: %s.\n", mapFile);
- return NULL;
+ return nullptr;
} else {
- sprintf(tmpbuffer, "%s%s ", o->entryName, UDATA_CMN_INTERMEDIATE_SUFFIX);
+ snprintf(tmpbuffer, sizeof(tmpbuffer), "%s%s ", o->entryName, UDATA_CMN_INTERMEDIATE_SUFFIX);
T_FileStream_writeLine(f, tmpbuffer);
@@ -2025,7 +2029,7 @@ static UPKGOptions *pkg_checkFlag(UPKGOptions *o) {
}
#elif U_PLATFORM == U_PF_CYGWIN || U_PLATFORM == U_PF_MINGW
/* Cygwin needs to change flag options. */
- char *flag = NULL;
+ char *flag = nullptr;
int32_t length = 0;
flag = pkgDataFlags[GENLIB];
@@ -2043,7 +2047,7 @@ static UPKGOptions *pkg_checkFlag(UPKGOptions *o) {
uprv_memset(flag + position, 0, length - position);
#elif U_PLATFORM == U_PF_OS400
/* OS/400 needs to fix the ld options (swap single quote with double quote) */
- char *flag = NULL;
+ char *flag = nullptr;
int32_t length = 0;
flag = pkgDataFlags[GENLIB];
@@ -2064,7 +2068,7 @@ static UPKGOptions *pkg_checkFlag(UPKGOptions *o) {
static void loadLists(UPKGOptions *o, UErrorCode *status)
{
- CharList *l, *tail = NULL, *tail2 = NULL;
+ CharList *l, *tail = nullptr, *tail2 = nullptr;
FileStream *in;
char line[16384];
char *linePtr, *lineNext;
@@ -2087,7 +2091,7 @@ static void loadLists(UPKGOptions *o, UErrorCode *status)
return;
}
- while(T_FileStream_readLine(in, line, sizeof(line))!=NULL) { /* for each line */
+ while(T_FileStream_readLine(in, line, sizeof(line))!=nullptr) { /* for each line */
ln++;
if(uprv_strlen(line)>lineMax) {
fprintf(stderr, "%s:%d - line too long (over %d chars)\n", l->str, (int)ln, (int)lineMax);
@@ -2115,7 +2119,7 @@ static void loadLists(UPKGOptions *o, UErrorCode *status)
}
/* Now, process the line */
- lineNext = NULL;
+ lineNext = nullptr;
while(linePtr && *linePtr) { /* process space-separated items */
while(*linePtr == ' ') {
@@ -2125,7 +2129,7 @@ static void loadLists(UPKGOptions *o, UErrorCode *status)
if(linePtr[0] == '"')
{
lineNext = uprv_strchr(linePtr+1, '"');
- if(lineNext == NULL) {
+ if(lineNext == nullptr) {
fprintf(stderr, "%s:%d - missing trailing double quote (\")\n",
l->str, (int)ln);
exit(1);
@@ -2160,7 +2164,7 @@ static void loadLists(UPKGOptions *o, UErrorCode *status)
}
/* The +5 is to add a little extra space for, among other things, PKGDATA_FILE_SEP_STRING */
tmpLength = static_cast<int32_t>(uprv_strlen(o->srcDir) + uprv_strlen(s) + 5);
- if((tmp = (char *)uprv_malloc(tmpLength)) == NULL) {
+ if((tmp = (char *)uprv_malloc(tmpLength)) == nullptr) {
fprintf(stderr, "pkgdata: Error: Unable to allocate tmp buffer size: %d\n", tmpLength);
exit(U_MEMORY_ALLOCATION_ERROR);
}
@@ -2253,15 +2257,15 @@ static void pkg_createOptMatchArch(char *optMatchArch) {
const char* code = "void oma(){}";
const char* source = "oma.c";
const char* obj = "oma.obj";
- FileStream* stream = NULL;
+ FileStream* stream = nullptr;
stream = T_FileStream_open(source,"w");
- if (stream != NULL) {
+ if (stream != nullptr) {
T_FileStream_writeLine(stream, code);
T_FileStream_close(stream);
char cmd[LARGE_BUFFER_MAX_SIZE];
- sprintf(cmd, "%s %s -o %s",
+ snprintf(cmd, sizeof(cmd), "%s %s -o %s",
pkgDataFlags[COMPILER],
source,
obj);
diff --git a/Build/source/libs/icu/icu-src/source/tools/pkgdata/pkgtypes.h b/Build/source/libs/icu/icu-src/source/tools/pkgdata/pkgtypes.h
index 8ae1ec45a2b..51c11e0a14d 100644
--- a/Build/source/libs/icu/icu-src/source/tools/pkgdata/pkgtypes.h
+++ b/Build/source/libs/icu/icu-src/source/tools/pkgdata/pkgtypes.h
@@ -36,7 +36,7 @@ typedef struct _CharList
/*
- * write CharList 'l' into stream 's' using delimiter 'delim' (delim can be NULL). quoted: -1 remove, 0 as is, 1 add quotes
+ * write CharList 'l' into stream 's' using delimiter 'delim' (delim can be nullptr). quoted: -1 remove, 0 as is, 1 add quotes
*/
const char *pkg_writeCharList(FileStream *s, CharList *l, const char *delim, int32_t quoted);
@@ -68,7 +68,7 @@ CharList *pkg_appendToList(CharList *l, CharList** end, const char *str);
* will search strAlias for the directory name (with strrchr). Then, it will
* determine if that directory is already in list l. If not, it will add it
* with strdup(strAlias).
- * @param l list to append to , or NULL
+ * @param l list to append to , or nullptr
* @param end end pointer-to-pointer. Can point to null, or be null.
* @param strAlias alias to full path string
* @return new list
@@ -121,7 +121,7 @@ typedef struct UPKGOptions_
const char *mode; /* Mode of building */
const char *version; /* Library version */
const char *comment; /* comment string */
- const char *install; /* Where to install to (NULL = don't install) */
+ const char *install; /* Where to install to (nullptr = don't install) */
const char *icuroot; /* where does ICU lives */
const char *libName; /* name for library (default: shortName) */
UBool rebuild;
diff --git a/Build/source/libs/icu/icu-src/source/tools/toolutil/dbgutil.cpp b/Build/source/libs/icu/icu-src/source/tools/toolutil/dbgutil.cpp
index 7b72d424850..d42b267f730 100644
--- a/Build/source/libs/icu/icu-src/source/tools/toolutil/dbgutil.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/toolutil/dbgutil.cpp
@@ -22,11 +22,11 @@
U_NAMESPACE_USE
-static UnicodeString **strs = NULL;
+static UnicodeString **strs = nullptr;
static const UnicodeString& _fieldString(UDebugEnumType type, int32_t field, UnicodeString& fillin) {
const char *str = udbg_enumName(type, field);
- if(str == NULL) {
+ if(str == nullptr) {
return fillin.remove();
} else {
return fillin = UnicodeString(str, -1, US_INV);
@@ -34,29 +34,29 @@ static const UnicodeString& _fieldString(UDebugEnumType type, int32_t field, Un
}
U_CDECL_BEGIN
-static void udbg_cleanup(void) {
- if(strs != NULL) {
+static void udbg_cleanup() {
+ if(strs != nullptr) {
for(int t=0;t<=UDBG_ENUM_COUNT;t++) {
delete [] strs[t];
}
delete[] strs;
- strs = NULL;
+ strs = nullptr;
}
}
-static UBool tu_cleanup(void)
+static UBool tu_cleanup()
{
udbg_cleanup();
return true;
}
-static void udbg_register_cleanup(void) {
+static void udbg_register_cleanup() {
ucln_registerCleanup(UCLN_TOOLUTIL, tu_cleanup);
}
U_CDECL_END
-static void udbg_setup(void) {
- if(strs == NULL) {
+static void udbg_setup() {
+ if(strs == nullptr) {
udbg_register_cleanup();
//fprintf(stderr,"Initializing string cache..\n");
//fflush(stderr);
@@ -77,7 +77,7 @@ static void udbg_setup(void) {
U_TOOLUTIL_API const UnicodeString& U_EXPORT2 udbg_enumString(UDebugEnumType type, int32_t field) {
- if(strs == NULL ) {
+ if(strs == nullptr ) {
udbg_setup();
}
if(type<0||type>=UDBG_ENUM_COUNT) {
@@ -117,7 +117,7 @@ U_CAPI int32_t
udbg_stoi(const UnicodeString &s)
{
char ch[256];
- const UChar *u = toUCharPtr(s.getBuffer());
+ const char16_t *u = toUCharPtr(s.getBuffer());
int32_t len = s.length();
u_UCharsToChars(u, ch, len);
ch[len] = 0; /* include terminating \0 */
@@ -129,7 +129,7 @@ U_CAPI double
udbg_stod(const UnicodeString &s)
{
char ch[256];
- const UChar *u = toUCharPtr(s.getBuffer());
+ const char16_t *u = toUCharPtr(s.getBuffer());
int32_t len = s.length();
u_UCharsToChars(u, ch, len);
ch[len] = 0; /* include terminating \0 */
@@ -141,7 +141,7 @@ udbg_escape(const UnicodeString &src, UnicodeString *dst)
{
dst->remove();
for (int32_t i = 0; i < src.length(); ++i) {
- UChar c = src[i];
+ char16_t c = src[i];
if(ICU_Utility::isUnprintable(c)) {
*dst += UnicodeString("[");
ICU_Utility::escapeUnprintable(*dst, c);
diff --git a/Build/source/libs/icu/icu-src/source/tools/toolutil/filestrm.cpp b/Build/source/libs/icu/icu-src/source/tools/toolutil/filestrm.cpp
index d4bb448a799..9a2695197a6 100644
--- a/Build/source/libs/icu/icu-src/source/tools/toolutil/filestrm.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/toolutil/filestrm.cpp
@@ -32,11 +32,11 @@
U_CAPI FileStream* U_EXPORT2
T_FileStream_open(const char* filename, const char* mode)
{
- if(filename != NULL && *filename != 0 && mode != NULL && *mode != 0) {
+ if(filename != nullptr && *filename != 0 && mode != nullptr && *mode != 0) {
FILE *file = fopen(filename, mode);
return (FileStream*)file;
} else {
- return NULL;
+ return nullptr;
}
}
@@ -54,12 +54,12 @@ T_FileStream_wopen(const wchar_t* filename, const wchar_t* mode)
FILE *result;
// convert from wchar_t to char
- fnMbsSize = wcstombs(NULL, filename, ((size_t)-1) >> 1);
+ fnMbsSize = wcstombs(nullptr, filename, ((size_t)-1) >> 1);
fn = (char*)uprv_malloc(fnMbsSize+2);
wcstombs(fn, filename, fnMbsSize);
fn[fnMbsSize] = 0;
- mdMbsSize = wcstombs(NULL, mode, ((size_t)-1) >> 1);
+ mdMbsSize = wcstombs(nullptr, mode, ((size_t)-1) >> 1);
md = (char*)uprv_malloc(mdMbsSize+2);
wcstombs(md, mode, mdMbsSize);
md[mdMbsSize] = 0;
@@ -203,20 +203,20 @@ T_FileStream_setError(FileStream* fileStream)
*/
U_CAPI FileStream* U_EXPORT2
-T_FileStream_stdin(void)
+T_FileStream_stdin()
{
return (FileStream*)stdin;
}
U_CAPI FileStream* U_EXPORT2
-T_FileStream_stdout(void)
+T_FileStream_stdout()
{
return (FileStream*)stdout;
}
U_CAPI FileStream* U_EXPORT2
-T_FileStream_stderr(void)
+T_FileStream_stderr()
{
return (FileStream*)stderr;
}
diff --git a/Build/source/libs/icu/icu-src/source/tools/toolutil/filetools.cpp b/Build/source/libs/icu/icu-src/source/tools/toolutil/filetools.cpp
index 08bb9a4aef7..994d8e31f00 100644
--- a/Build/source/libs/icu/icu-src/source/tools/toolutil/filetools.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/toolutil/filetools.cpp
@@ -45,18 +45,18 @@ U_CAPI UBool U_EXPORT2
isFileModTimeLater(const char *filePath, const char *checkAgainst, UBool isDir) {
UBool isLatest = true;
- if (filePath == NULL || checkAgainst == NULL) {
+ if (filePath == nullptr || checkAgainst == nullptr) {
return false;
}
if (isDir == true) {
#if U_HAVE_DIRENT_H
- DIR *pDir = NULL;
- if ((pDir= opendir(checkAgainst)) != NULL) {
- DIR *subDirp = NULL;
- DIRENT *dirEntry = NULL;
+ DIR *pDir = nullptr;
+ if ((pDir= opendir(checkAgainst)) != nullptr) {
+ DIR *subDirp = nullptr;
+ DIRENT *dirEntry = nullptr;
- while ((dirEntry = readdir(pDir)) != NULL) {
+ while ((dirEntry = readdir(pDir)) != nullptr) {
if (uprv_strcmp(dirEntry->d_name, SKIP1) != 0 && uprv_strcmp(dirEntry->d_name, SKIP2) != 0) {
UErrorCode status = U_ZERO_ERROR;
icu::CharString newpath(checkAgainst, -1, status);
@@ -67,7 +67,7 @@ isFileModTimeLater(const char *filePath, const char *checkAgainst, UBool isDir)
return false;
}
- if ((subDirp = opendir(newpath.data())) != NULL) {
+ if ((subDirp = opendir(newpath.data())) != nullptr) {
/* If this new path is a directory, make a recursive call with the newpath. */
closedir(subDirp);
isLatest = isFileModTimeLater(filePath, newpath.data(), isDir);
diff --git a/Build/source/libs/icu/icu-src/source/tools/toolutil/flagparser.cpp b/Build/source/libs/icu/icu-src/source/tools/toolutil/flagparser.cpp
index 3fca179db47..8bbceb4f73e 100644
--- a/Build/source/libs/icu/icu-src/source/tools/toolutil/flagparser.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/toolutil/flagparser.cpp
@@ -23,14 +23,14 @@ static int32_t getFlagOffset(const char *buffer, int32_t bufferSize);
*/
U_CAPI int32_t U_EXPORT2
parseFlagsFile(const char *fileName, char **flagBuffer, int32_t flagBufferSize, const char ** flagNames, int32_t numOfFlags, UErrorCode *status) {
- char* buffer = NULL;
- char* tmpFlagBuffer = NULL;
+ char* buffer = nullptr;
+ char* tmpFlagBuffer = nullptr;
UBool allocateMoreSpace = false;
int32_t idx, i;
int32_t result = 0;
FileStream *f = T_FileStream_open(fileName, "r");
- if (f == NULL) {
+ if (f == nullptr) {
*status = U_FILE_ACCESS_ERROR;
goto parseFlagsFile_cleanup;
}
@@ -38,7 +38,7 @@ parseFlagsFile(const char *fileName, char **flagBuffer, int32_t flagBufferSize,
buffer = (char *)uprv_malloc(sizeof(char) * currentBufferSize);
tmpFlagBuffer = (char *)uprv_malloc(sizeof(char) * flagBufferSize);
- if (buffer == NULL || tmpFlagBuffer == NULL) {
+ if (buffer == nullptr || tmpFlagBuffer == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
goto parseFlagsFile_cleanup;
}
@@ -49,13 +49,13 @@ parseFlagsFile(const char *fileName, char **flagBuffer, int32_t flagBufferSize,
currentBufferSize *= 2;
uprv_free(buffer);
buffer = (char *)uprv_malloc(sizeof(char) * currentBufferSize);
- if (buffer == NULL) {
+ if (buffer == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
goto parseFlagsFile_cleanup;
}
}
for (i = 0; i < numOfFlags;) {
- if (T_FileStream_readLine(f, buffer, currentBufferSize) == NULL) {
+ if (T_FileStream_readLine(f, buffer, currentBufferSize) == nullptr) {
/* End of file reached. */
break;
}
@@ -78,7 +78,7 @@ parseFlagsFile(const char *fileName, char **flagBuffer, int32_t flagBufferSize,
}
break;
} else {
- if (flagNames != NULL) {
+ if (flagNames != nullptr) {
if (idx >= 0) {
uprv_strcpy(flagBuffer[idx], tmpFlagBuffer);
} else {
@@ -146,7 +146,7 @@ static int32_t extractFlag(char* buffer, int32_t bufferSize, char* flag, int32_t
flag[0] = 0;
}
- if (flagNames != NULL && offset>0) {
+ if (flagNames != nullptr && offset>0) {
offset--; /* Move offset back 1 because of '='*/
for (i = 0; i < numOfFlags; i++) {
if (uprv_strncmp(buffer, flagNames[i], offset) == 0) {
diff --git a/Build/source/libs/icu/icu-src/source/tools/toolutil/package.cpp b/Build/source/libs/icu/icu-src/source/tools/toolutil/package.cpp
index 2e8b5037c03..3098f5d57d4 100644
--- a/Build/source/libs/icu/icu-src/source/tools/toolutil/package.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/toolutil/package.cpp
@@ -51,7 +51,7 @@ static const UDataInfo dataInfo={
U_IS_BIG_ENDIAN,
U_CHARSET_FAMILY,
- (uint8_t)sizeof(UChar),
+ (uint8_t)sizeof(char16_t),
0,
{0x43, 0x6d, 0x6e, 0x44}, /* dataFormat="CmnD" */
@@ -115,14 +115,14 @@ getDataInfo(const uint8_t *data, int32_t length,
const DataHeader *pHeader;
const UDataInfo *pInfo;
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
- return NULL;
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
+ return nullptr;
}
- if( data==NULL ||
+ if( data==nullptr ||
(length>=0 && length<(int32_t)sizeof(DataHeader))
) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
pHeader=(const DataHeader *)data;
@@ -133,7 +133,7 @@ getDataInfo(const uint8_t *data, int32_t length,
pInfo->sizeofUChar!=2
) {
*pErrorCode=U_UNSUPPORTED_ERROR;
- return NULL;
+ return nullptr;
}
if(pInfo->isBigEndian==U_IS_BIG_ENDIAN) {
@@ -150,7 +150,7 @@ getDataInfo(const uint8_t *data, int32_t length,
(length>=0 && length<headerLength)
) {
*pErrorCode=U_UNSUPPORTED_ERROR;
- return NULL;
+ return nullptr;
}
return pInfo;
@@ -164,7 +164,7 @@ getTypeEnumForInputData(const uint8_t *data, int32_t length,
/* getDataInfo() checks for illegal arguments */
pInfo=getDataInfo(data, length, infoLength, headerLength, pErrorCode);
- if(pInfo==NULL) {
+ if(pInfo==nullptr) {
return -1;
}
@@ -252,8 +252,8 @@ makeFullFilename(const char *path, const char *name,
char *filename, int32_t capacity) {
char *s;
- // prepend the path unless NULL or empty
- if(path!=NULL && path[0]!=0) {
+ // prepend the path unless nullptr or empty
+ if(path!=nullptr && path[0]!=0) {
if((int32_t)(strlen(path)+1)>=capacity) {
fprintf(stderr, "pathname too long: \"%s\"\n", path);
exit(U_BUFFER_OVERFLOW_ERROR);
@@ -289,7 +289,7 @@ makeFullFilenameAndDirs(const char *path, const char *name,
// make tree directories
errorCode=U_ZERO_ERROR;
sep=strchr(filename, 0)-strlen(name);
- while((sep=strchr(sep, U_FILE_SEP_CHAR))!=NULL) {
+ while((sep=strchr(sep, U_FILE_SEP_CHAR))!=nullptr) {
if(sep!=filename) {
*sep=0; // truncate temporarily
uprv_mkdir(filename, &errorCode);
@@ -313,7 +313,7 @@ readFile(const char *path, const char *name, int32_t &length, char &type) {
/* open the input file, get its length, allocate memory for it, read the file */
file=fopen(filename, "rb");
- if(file==NULL) {
+ if(file==nullptr) {
fprintf(stderr, "icupkg: unable to open input file \"%s\"\n", filename);
exit(U_FILE_ACCESS_ERROR);
}
@@ -385,19 +385,19 @@ Package::Package()
: doAutoPrefix(false), prefixEndsWithType(false) {
inPkgName[0]=0;
pkgPrefix[0]=0;
- inData=NULL;
+ inData=nullptr;
inLength=0;
inCharset=U_CHARSET_FAMILY;
inIsBigEndian=U_IS_BIG_ENDIAN;
itemCount=0;
itemMax=0;
- items=NULL;
+ items=nullptr;
inStringTop=outStringTop=0;
matchMode=0;
- findPrefix=findSuffix=NULL;
+ findPrefix=findSuffix=nullptr;
findPrefixLength=findSuffixLength=0;
findNextIndex=-1;
@@ -457,7 +457,7 @@ Package::readPackage(const char *filename) {
extractPackageName(filename, inPkgName, (int32_t)sizeof(inPkgName));
/* read the file */
- inData=readFile(NULL, filename, inLength, type);
+ inData=readFile(nullptr, filename, inLength, type);
length=inLength;
/*
@@ -583,7 +583,7 @@ Package::readPackage(const char *filename) {
if(doAutoPrefix) {
// Use the first entry's prefix. Must be a new-style package.
const char *prefixLimit=strchr(s, U_TREE_ENTRY_SEP_CHAR);
- if(prefixLimit==NULL) {
+ if(prefixLimit==nullptr) {
fprintf(stderr,
"icupkg: --auto_toc_prefix[_with_type] but "
"the first entry \"%s\" does not contain a '%c'\n",
@@ -698,7 +698,7 @@ Package::writePackage(const char *filename, char outType, const char *comment) {
extractPackageName(filename, prefix, MAX_PKG_NAME_LENGTH);
// if there is an explicit comment, then use it, else use what's in the current header
- if(comment!=NULL) {
+ if(comment!=nullptr) {
/* get the header size minus the current comment */
DataHeader *pHeader;
int32_t length;
@@ -728,16 +728,16 @@ Package::writePackage(const char *filename, char outType, const char *comment) {
// one type (TYPE_LE) is bogus
errorCode=U_ZERO_ERROR;
i=makeTypeEnum(outType);
- ds[TYPE_B]= i==TYPE_B ? NULL : udata_openSwapper(true, U_ASCII_FAMILY, outIsBigEndian, outCharset, &errorCode);
- ds[TYPE_L]= i==TYPE_L ? NULL : udata_openSwapper(false, U_ASCII_FAMILY, outIsBigEndian, outCharset, &errorCode);
- ds[TYPE_LE]=NULL;
- ds[TYPE_E]= i==TYPE_E ? NULL : udata_openSwapper(true, U_EBCDIC_FAMILY, outIsBigEndian, outCharset, &errorCode);
+ ds[TYPE_B]= i==TYPE_B ? nullptr : udata_openSwapper(true, U_ASCII_FAMILY, outIsBigEndian, outCharset, &errorCode);
+ ds[TYPE_L]= i==TYPE_L ? nullptr : udata_openSwapper(false, U_ASCII_FAMILY, outIsBigEndian, outCharset, &errorCode);
+ ds[TYPE_LE]=nullptr;
+ ds[TYPE_E]= i==TYPE_E ? nullptr : udata_openSwapper(true, U_EBCDIC_FAMILY, outIsBigEndian, outCharset, &errorCode);
if(U_FAILURE(errorCode)) {
fprintf(stderr, "icupkg: udata_openSwapper() failed - %s\n", u_errorName(errorCode));
exit(errorCode);
}
for(i=0; i<TYPE_COUNT; ++i) {
- if(ds[i]!=NULL) {
+ if(ds[i]!=nullptr) {
ds[i]->printError=printPackageError;
ds[i]->printErrorContext=stderr;
}
@@ -747,13 +747,13 @@ Package::writePackage(const char *filename, char outType, const char *comment) {
// create the file and write its contents
file=fopen(filename, "wb");
- if(file==NULL) {
+ if(file==nullptr) {
fprintf(stderr, "icupkg: unable to create file \"%s\"\n", filename);
exit(U_FILE_ACCESS_ERROR);
}
// swap and write the header
- if(dsLocalToOut!=NULL) {
+ if(dsLocalToOut!=nullptr) {
udata_swapDataHeader(dsLocalToOut, header, headerLength, header, &errorCode);
if(U_FAILURE(errorCode)) {
fprintf(stderr, "icupkg: udata_swapDataHeader(local to out) failed - %s\n", u_errorName(errorCode));
@@ -779,7 +779,7 @@ Package::writePackage(const char *filename, char outType, const char *comment) {
}
prefix[prefixLength++]=U_TREE_ENTRY_SEP_CHAR;
prefix[prefixLength]=0;
- if(dsLocalToOut!=NULL) {
+ if(dsLocalToOut!=nullptr) {
dsLocalToOut->swapInvChars(dsLocalToOut, prefix, prefixLength, prefix, &errorCode);
if(U_FAILURE(errorCode)) {
fprintf(stderr, "icupkg: swapInvChars(output package name) failed - %s\n", u_errorName(errorCode));
@@ -817,7 +817,7 @@ Package::writePackage(const char *filename, char outType, const char *comment) {
// write the table of contents
// first the itemCount
outInt32=itemCount;
- if(dsLocalToOut!=NULL) {
+ if(dsLocalToOut!=nullptr) {
dsLocalToOut->swapArray32(dsLocalToOut, &outInt32, 4, &outInt32, &errorCode);
if(U_FAILURE(errorCode)) {
fprintf(stderr, "icupkg: swapArray32(item count) failed - %s\n", u_errorName(errorCode));
@@ -835,7 +835,7 @@ Package::writePackage(const char *filename, char outType, const char *comment) {
for(i=0; i<itemCount; ++i) {
entry.nameOffset=(uint32_t)(basenameOffset+(items[i].name-outStrings));
entry.dataOffset=(uint32_t)offset;
- if(dsLocalToOut!=NULL) {
+ if(dsLocalToOut!=nullptr) {
dsLocalToOut->swapArray32(dsLocalToOut, &entry, 8, &entry, &errorCode);
if(U_FAILURE(errorCode)) {
fprintf(stderr, "icupkg: swapArray32(item entry %ld) failed - %s\n", (long)i, u_errorName(errorCode));
@@ -865,7 +865,7 @@ Package::writePackage(const char *filename, char outType, const char *comment) {
// write the items
for(pItem=items, i=0; i<itemCount; ++pItem, ++i) {
int32_t type=makeTypeEnum(pItem->type);
- if(ds[type]!=NULL) {
+ if(ds[type]!=nullptr) {
// swap each item from its platform properties to the desired ones
udata_swap(
ds[type],
@@ -936,17 +936,17 @@ void
Package::findItems(const char *pattern) {
const char *wild;
- if(pattern==NULL || *pattern==0) {
+ if(pattern==nullptr || *pattern==0) {
findNextIndex=-1;
return;
}
findPrefix=pattern;
- findSuffix=NULL;
+ findSuffix=nullptr;
findSuffixLength=0;
wild=strchr(pattern, '*');
- if(wild==NULL) {
+ if(wild==nullptr) {
// no wildcard
findPrefixLength=(int32_t)strlen(pattern);
} else {
@@ -954,7 +954,7 @@ Package::findItems(const char *pattern) {
findPrefixLength=(int32_t)(wild-pattern);
findSuffix=wild+1;
findSuffixLength=(int32_t)strlen(findSuffix);
- if(NULL!=strchr(findSuffix, '*')) {
+ if(nullptr!=strchr(findSuffix, '*')) {
// two or more wildcards
fprintf(stderr, "icupkg: syntax error (more than one '*') in item pattern \"%s\"\n", pattern);
exit(U_PARSE_ERROR);
@@ -999,7 +999,7 @@ Package::findNextItem() {
if(matchMode&MATCH_NOSLASH) {
treeSep=strchr(middle, U_TREE_ENTRY_SEP_CHAR);
- if(treeSep!=NULL && (treeSep-middle)<middleLength) {
+ if(treeSep!=nullptr && (treeSep-middle)<middleLength) {
// the middle (matching the * wildcard) contains a tree separator /
continue;
}
@@ -1021,7 +1021,7 @@ Package::setMatchMode(uint32_t mode) {
void
Package::addItem(const char *name) {
- addItem(name, NULL, 0, false, U_ICUDATA_TYPE_LETTER[0]);
+ addItem(name, nullptr, 0, false, U_ICUDATA_TYPE_LETTER[0]);
}
void
@@ -1168,7 +1168,7 @@ Package::extractItem(const char *filesPath, const char *outName, int32_t idx, ch
// create the file and write its contents
makeFullFilenameAndDirs(filesPath, outName, filename, (int32_t)sizeof(filename));
file=fopen(filename, "wb");
- if(file==NULL) {
+ if(file==nullptr) {
fprintf(stderr, "icupkg: unable to create file \"%s\"\n", filename);
exit(U_FILE_ACCESS_ERROR);
}
@@ -1216,7 +1216,7 @@ Package::getItem(int32_t idx) const {
if (0 <= idx && idx < itemCount) {
return &items[idx];
}
- return NULL;
+ return nullptr;
}
void
@@ -1274,7 +1274,7 @@ Package::allocString(UBool in, int32_t length) {
void
Package::sortItems() {
UErrorCode errorCode=U_ZERO_ERROR;
- uprv_sortArray(items, itemCount, (int32_t)sizeof(Item), compareItems, NULL, false, &errorCode);
+ uprv_sortArray(items, itemCount, (int32_t)sizeof(Item), compareItems, nullptr, false, &errorCode);
if(U_FAILURE(errorCode)) {
fprintf(stderr, "icupkg: sorting item names failed - %s\n", u_errorName(errorCode));
exit(errorCode);
@@ -1288,7 +1288,7 @@ void Package::setItemCapacity(int32_t max)
}
Item *newItems = (Item*)uprv_malloc(max * sizeof(items[0]));
Item *oldItems = items;
- if(newItems == NULL) {
+ if(newItems == nullptr) {
fprintf(stderr, "icupkg: Out of memory trying to allocate %lu bytes for %d items\n",
(unsigned long)(max*sizeof(items[0])), max);
exit(U_MEMORY_ALLOCATION_ERROR);
diff --git a/Build/source/libs/icu/icu-src/source/tools/toolutil/pkg_genc.cpp b/Build/source/libs/icu/icu-src/source/tools/toolutil/pkg_genc.cpp
index 1f81bf94a42..741a8a5228c 100644
--- a/Build/source/libs/icu/icu-src/source/tools/toolutil/pkg_genc.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/toolutil/pkg_genc.cpp
@@ -158,6 +158,22 @@ static const struct AssemblyType {
".long ","",HEX_0X
},
+ /* macOS PPC should use `.p2align 4` instead `.balign 16` because is
+ * unknown pseudo ops for such legacy system*/
+ {"gcc-darwin-ppc",
+ /*"\t.section __TEXT,__text,regular,pure_instructions\n"
+ "\t.section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32\n"*/
+ ".globl _%s\n"
+ "#ifdef U_HIDE_DATA_SYMBOL\n"
+ "\t.private_extern _%s\n"
+ "#endif\n"
+ "\t.data\n"
+ "\t.const\n"
+ "\t.p2align 4\n"
+ "_%s:\n\n",
+
+ ".long ","",HEX_0X
+ },
{"gcc-cygwin",
".globl _%s\n"
"\t.section .rodata\n"
@@ -228,6 +244,16 @@ static const struct AssemblyType {
},
/* align 16 bytes */
/* http://msdn.microsoft.com/en-us/library/dwa9fwef.aspx */
+ {"nasm",
+ "global %s\n"
+#if defined(_WIN32)
+ "section .rdata align=16\n"
+#else
+ "section .rodata align=16\n"
+#endif
+ "%s:\n",
+ " dd ","",HEX_0X
+ },
{ "masm",
"\tTITLE %s\n"
"; generated by genccode\n"
@@ -238,6 +264,15 @@ static const struct AssemblyType {
"\tALIGN 16\n"
"_%s\tLABEL DWORD\n",
"\tDWORD ","\nICUDATA_%s\tENDS\n\tEND\n",HEX_0H
+ },
+ { "masm64",
+ "\tTITLE %s\n"
+ "; generated by genccode\n"
+ "\tPUBLIC _%s\n"
+ "ICUDATA_%s\tSEGMENT READONLY 'DATA'\n"
+ "\tALIGN 16\n"
+ "_%s\tLABEL DWORD\n",
+ "\tDWORD ","\nICUDATA_%s\tENDS\n\tEND\n",HEX_0H
}
};
@@ -261,7 +296,7 @@ checkAssemblyHeaderName(const char* optAssembly) {
U_CAPI void U_EXPORT2
-printAssemblyHeadersToStdErr(void) {
+printAssemblyHeadersToStdErr() {
int32_t idx;
fprintf(stderr, "%s", assemblyHeader[0].name);
for (idx = 1; idx < UPRV_LENGTHOF(assemblyHeader); idx++) {
@@ -289,11 +324,22 @@ writeAssemblyCode(
size_t i, length, count;
in=T_FileStream_open(filename, "rb");
- if(in==NULL) {
+ if(in==nullptr) {
fprintf(stderr, "genccode: unable to open input file %s\n", filename);
exit(U_FILE_ACCESS_ERROR);
}
+ const char* newSuffix = nullptr;
+
+ if (uprv_strcmp(assemblyHeader[assemblyHeaderIndex].name, "masm") == 0) {
+ newSuffix = ".masm";
+ }
+ else if (uprv_strcmp(assemblyHeader[assemblyHeaderIndex].name, "nasm") == 0) {
+ newSuffix = ".asm";
+ } else {
+ newSuffix = ".S";
+ }
+
getOutFilename(
filename,
destdir,
@@ -301,28 +347,27 @@ writeAssemblyCode(
sizeof(buffer.chars),
entry,
sizeof(entry),
- ".S",
+ newSuffix,
optFilename);
out=T_FileStream_open(buffer.chars, "w");
- if(out==NULL) {
+ if(out==nullptr) {
fprintf(stderr, "genccode: unable to open output file %s\n", buffer.chars);
exit(U_FILE_ACCESS_ERROR);
}
- if (outFilePath != NULL) {
+ if (outFilePath != nullptr) {
if (uprv_strlen(buffer.chars) >= outFilePathCapacity) {
fprintf(stderr, "genccode: filename too long\n");
exit(U_ILLEGAL_ARGUMENT_ERROR);
}
uprv_strcpy(outFilePath, buffer.chars);
- }
-
#if defined (WINDOWS_WITH_GNUC) && U_PLATFORM != U_PF_CYGWIN
- /* Need to fix the file separator character when using MinGW. */
- swapFileSepChar(outFilePath, U_FILE_SEP_CHAR, '/');
+ /* Need to fix the file separator character when using MinGW. */
+ swapFileSepChar(outFilePath, U_FILE_SEP_CHAR, '/');
#endif
+ }
- if(optEntryPoint != NULL) {
+ if(optEntryPoint != nullptr) {
uprv_strcpy(entry, optEntryPoint);
uprv_strcat(entry, "_dat");
}
@@ -390,6 +435,7 @@ U_CAPI void U_EXPORT2
writeCCode(
const char *filename,
const char *destdir,
+ const char *optEntryPoint,
const char *optName,
const char *optFilename,
char *outFilePath,
@@ -400,12 +446,12 @@ writeCCode(
size_t i, length, count;
in=T_FileStream_open(filename, "rb");
- if(in==NULL) {
+ if(in==nullptr) {
fprintf(stderr, "genccode: unable to open input file %s\n", filename);
exit(U_FILE_ACCESS_ERROR);
}
- if(optName != NULL) { /* prepend 'icudt28_' */
+ if(optName != nullptr) { /* prepend 'icudt28_' */
// +2 includes the _ and the NUL
if (uprv_strlen(optName) + 2 > sizeof(entry)) {
fprintf(stderr, "genccode: entry name too long (long filename?)\n");
@@ -427,20 +473,29 @@ writeCCode(
".c",
optFilename);
- if (outFilePath != NULL) {
+ if (outFilePath != nullptr) {
if (uprv_strlen(buffer) >= outFilePathCapacity) {
fprintf(stderr, "genccode: filename too long\n");
exit(U_ILLEGAL_ARGUMENT_ERROR);
}
uprv_strcpy(outFilePath, buffer);
+#if defined (WINDOWS_WITH_GNUC) && U_PLATFORM != U_PF_CYGWIN
+ /* Need to fix the file separator character when using MinGW. */
+ swapFileSepChar(outFilePath, U_FILE_SEP_CHAR, '/');
+#endif
}
out=T_FileStream_open(buffer, "w");
- if(out==NULL) {
+ if(out==nullptr) {
fprintf(stderr, "genccode: unable to open output file %s\n", buffer);
exit(U_FILE_ACCESS_ERROR);
}
+ if(optEntryPoint != nullptr) {
+ uprv_strcpy(entry, optEntryPoint);
+ uprv_strcat(entry, "_dat");
+ }
+
/* turn dashes or dots in the entry name into underscores */
length=uprv_strlen(entry);
for(i=0; i<length; ++i) {
@@ -641,9 +696,9 @@ write8str(FileStream *out, uint8_t byte, uint32_t column) {
char s[8];
if (byte > 7)
- sprintf(s, "\\x%X", byte);
+ snprintf(s, sizeof(s), "\\x%X", byte);
else
- sprintf(s, "\\%X", byte);
+ snprintf(s, sizeof(s), "\\%X", byte);
/* write the value, possibly with comma and newline */
if(column==MAX_COLUMN) {
@@ -678,7 +733,7 @@ getOutFilename(
icu::ErrorCode status;
/* copy path */
- if(destdir!=NULL && *destdir!=0) {
+ if(destdir!=nullptr && *destdir!=0) {
outFilenameBuilder.append(destdir, status);
outFilenameBuilder.ensureEndsWithFileSeparator(status);
} else {
@@ -686,10 +741,10 @@ getOutFilename(
}
inFilename=basename;
- if(suffix==NULL) {
+ if(suffix==nullptr) {
/* the filename does not have a suffix */
entryNameBuilder.append(inFilename, status);
- if(optFilename != NULL) {
+ if(optFilename != nullptr) {
outFilenameBuilder.append(optFilename, status);
} else {
outFilenameBuilder.append(inFilename, status);
@@ -715,7 +770,7 @@ getOutFilename(
outFilenameBuilder.append(inFilename, status);
entryNameBuilder.append(inFilename, status);
- if(optFilename != NULL) {
+ if(optFilename != nullptr) {
outFilenameBuilder.truncate(saveOutFilenameLength);
outFilenameBuilder.append(optFilename, status);
}
@@ -767,7 +822,7 @@ getArchitecture(uint16_t *pCPU, uint16_t *pBits, UBool *pIsBigEndian, const char
# error "Unknown platform for CAN_GENERATE_OBJECTS."
#endif
- if(optMatchArch != NULL) {
+ if(optMatchArch != nullptr) {
filename=optMatchArch;
} else {
/* set defaults */
@@ -808,7 +863,7 @@ getArchitecture(uint16_t *pCPU, uint16_t *pBits, UBool *pIsBigEndian, const char
}
in=T_FileStream_open(filename, "rb");
- if(in==NULL) {
+ if(in==nullptr) {
fprintf(stderr, "genccode: unable to open match-arch file %s\n", filename);
exit(U_FILE_ACCESS_ERROR);
}
@@ -1162,7 +1217,7 @@ writeObjectCode(
#endif
in=T_FileStream_open(filename, "rb");
- if(in==NULL) {
+ if(in==nullptr) {
fprintf(stderr, "genccode: unable to open input file %s\n", filename);
exit(U_FILE_ACCESS_ERROR);
}
@@ -1178,7 +1233,7 @@ writeObjectCode(
newSuffix,
optFilename);
- if (outFilePath != NULL) {
+ if (outFilePath != nullptr) {
if (uprv_strlen(buffer) >= outFilePathCapacity) {
fprintf(stderr, "genccode: filename too long\n");
exit(U_ILLEGAL_ARGUMENT_ERROR);
@@ -1186,7 +1241,7 @@ writeObjectCode(
uprv_strcpy(outFilePath, buffer);
}
- if(optEntryPoint != NULL) {
+ if(optEntryPoint != nullptr) {
uprv_strcpy(entry+entryOffset, optEntryPoint);
uprv_strcat(entry+entryOffset, "_dat");
}
@@ -1200,7 +1255,7 @@ writeObjectCode(
/* open the output file */
out=T_FileStream_open(buffer, "wb");
- if(out==NULL) {
+ if(out==nullptr) {
fprintf(stderr, "genccode: unable to open output file %s\n", buffer);
exit(U_FILE_ACCESS_ERROR);
}
@@ -1275,7 +1330,7 @@ writeObjectCode(
/* set the file header */
objHeader.fileHeader.Machine=cpu;
objHeader.fileHeader.NumberOfSections=2;
- objHeader.fileHeader.TimeDateStamp=(DWORD)time(NULL);
+ objHeader.fileHeader.TimeDateStamp=(DWORD)time(nullptr);
objHeader.fileHeader.PointerToSymbolTable=IMAGE_SIZEOF_FILE_HEADER+2*IMAGE_SIZEOF_SECTION_HEADER+length+size; /* start of symbol table */
objHeader.fileHeader.NumberOfSymbols=1;
diff --git a/Build/source/libs/icu/icu-src/source/tools/toolutil/pkg_genc.h b/Build/source/libs/icu/icu-src/source/tools/toolutil/pkg_genc.h
index 72d96870355..2dd1b45cde9 100644
--- a/Build/source/libs/icu/icu-src/source/tools/toolutil/pkg_genc.h
+++ b/Build/source/libs/icu/icu-src/source/tools/toolutil/pkg_genc.h
@@ -78,6 +78,7 @@ U_CAPI void U_EXPORT2
writeCCode(
const char *filename,
const char *destdir,
+ const char *optEntryPoint,
const char *optName,
const char *optFilename,
char *outFilePath,
diff --git a/Build/source/libs/icu/icu-src/source/tools/toolutil/pkg_gencmn.cpp b/Build/source/libs/icu/icu-src/source/tools/toolutil/pkg_gencmn.cpp
index 29a1f7bc180..a301c322ebe 100644
--- a/Build/source/libs/icu/icu-src/source/tools/toolutil/pkg_gencmn.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/toolutil/pkg_gencmn.cpp
@@ -68,7 +68,7 @@ static const UDataInfo dataInfo={
U_IS_BIG_ENDIAN,
U_CHARSET_FAMILY,
- sizeof(UChar),
+ sizeof(char16_t),
0,
{0x43, 0x6d, 0x6e, 0x44}, /* dataFormat="CmnD" */
@@ -87,12 +87,12 @@ typedef struct {
} File;
#define CHUNK_FILE_COUNT 256
-static File *files = NULL;
+static File *files = nullptr;
static uint32_t fileCount=0;
static uint32_t fileMax = 0;
-static char *symPrefix = NULL;
+static char *symPrefix = nullptr;
#define LINE_BUFFER_SIZE 512
/* prototypes --------------------------------------------------------------- */
@@ -122,13 +122,13 @@ createCommonDataFile(const char *destDir, const char *name, const char *entrypoi
static char buffer[4096];
char *line;
char *linePtr;
- char *s = NULL;
+ char *s = nullptr;
UErrorCode errorCode=U_ZERO_ERROR;
uint32_t i, fileOffset, basenameOffset, length, nread;
FileStream *in, *file;
line = (char *)uprv_malloc(sizeof(char) * LINE_BUFFER_SIZE);
- if (line == NULL) {
+ if (line == nullptr) {
fprintf(stderr, "gencmn: unable to allocate memory for line buffer of size %d\n", LINE_BUFFER_SIZE);
exit(U_MEMORY_ALLOCATION_ERROR);
}
@@ -137,24 +137,24 @@ createCommonDataFile(const char *destDir, const char *name, const char *entrypoi
maxSize = max_size;
- if (destDir == NULL) {
+ if (destDir == nullptr) {
destDir = u_getDataDirectory();
}
- if (name == NULL) {
+ if (name == nullptr) {
name = COMMON_DATA_NAME;
}
- if (type == NULL) {
+ if (type == nullptr) {
type = DATA_TYPE;
}
- if (source == NULL) {
+ if (source == nullptr) {
source = ".";
}
- if (dataFile == NULL) {
+ if (dataFile == nullptr) {
in = T_FileStream_stdin();
} else {
in = T_FileStream_open(dataFile, "r");
- if(in == NULL) {
+ if(in == nullptr) {
fprintf(stderr, "gencmn: unable to open input file %s\n", dataFile);
exit(U_FILE_ACCESS_ERROR);
}
@@ -169,10 +169,10 @@ createCommonDataFile(const char *destDir, const char *name, const char *entrypoi
}
/* read the list of files and get their lengths */
- while((s != NULL && *s != 0) || (s=T_FileStream_readLine(in, (line=linePtr),
- LINE_BUFFER_SIZE))!=NULL) {
+ while((s != nullptr && *s != 0) || (s=T_FileStream_readLine(in, (line=linePtr),
+ LINE_BUFFER_SIZE))!=nullptr) {
/* remove trailing newline characters and parse space separated items */
- if (s != NULL && *s != 0) {
+ if (s != nullptr && *s != 0) {
line=s;
} else {
s=line;
@@ -214,7 +214,7 @@ createCommonDataFile(const char *destDir, const char *name, const char *entrypoi
}
if(fileCount==0) {
- fprintf(stderr, "gencmn: no files listed in %s\n", dataFile == NULL ? "<stdin>" : dataFile);
+ fprintf(stderr, "gencmn: no files listed in %s\n", dataFile == nullptr ? "<stdin>" : dataFile);
return;
}
@@ -237,7 +237,7 @@ createCommonDataFile(const char *destDir, const char *name, const char *entrypoi
/* create the output file */
out=udata_create(destDir, type, name,
&dataInfo,
- copyRight == NULL ? U_COPYRIGHT_STRING : copyRight,
+ copyRight == nullptr ? U_COPYRIGHT_STRING : copyRight,
&errorCode);
if(U_FAILURE(errorCode)) {
fprintf(stderr, "gencmn: udata_create(-d %s -n %s -t %s) failed - %s\n",
@@ -273,7 +273,7 @@ createCommonDataFile(const char *destDir, const char *name, const char *entrypoi
/* copy the next file */
file=T_FileStream_open(files[i].pathname, "rb");
- if(file==NULL) {
+ if(file==nullptr) {
fprintf(stderr, "gencmn: unable to open listed file %s\n", files[i].pathname);
exit(U_FILE_ACCESS_ERROR);
}
@@ -329,16 +329,16 @@ createCommonDataFile(const char *destDir, const char *name, const char *entrypoi
/* open the output file */
out=T_FileStream_open(filename, "w");
- if (gencmnFileName != NULL) {
+ if (gencmnFileName != nullptr) {
uprv_strcpy(gencmnFileName, filename);
}
- if(out==NULL) {
+ if(out==nullptr) {
fprintf(stderr, "gencmn: unable to open .c output file %s\n", filename);
exit(U_FILE_ACCESS_ERROR);
}
/* write the source file */
- sprintf(buffer,
+ snprintf(buffer, sizeof(buffer),
"/*\n"
" * ICU common data table of contents for %s.%s\n"
" * Automatically generated by icu/source/tools/gencmn/gencmn .\n"
@@ -350,16 +350,16 @@ createCommonDataFile(const char *destDir, const char *name, const char *entrypoi
name, type, fileCount);
T_FileStream_writeLine(out, buffer);
- sprintf(buffer, "extern const char\n %s%s[]", symPrefix?symPrefix:"", files[0].pathname);
+ snprintf(buffer, sizeof(buffer), "extern const char\n %s%s[]", symPrefix?symPrefix:"", files[0].pathname);
T_FileStream_writeLine(out, buffer);
for(i=1; i<fileCount; ++i) {
- sprintf(buffer, ",\n %s%s[]", symPrefix?symPrefix:"", files[i].pathname);
+ snprintf(buffer, sizeof(buffer), ",\n %s%s[]", symPrefix?symPrefix:"", files[i].pathname);
T_FileStream_writeLine(out, buffer);
}
T_FileStream_writeLine(out, ";\n\n");
- sprintf(
- buffer,
+ snprintf(
+ buffer, sizeof(buffer),
"U_EXPORT struct {\n"
" uint16_t headerSize;\n"
" uint8_t magic1, magic2;\n"
@@ -390,10 +390,10 @@ createCommonDataFile(const char *destDir, const char *name, const char *entrypoi
);
T_FileStream_writeLine(out, buffer);
- sprintf(buffer, " { \"%s\", %s%s }", files[0].basename, symPrefix?symPrefix:"", files[0].pathname);
+ snprintf(buffer, sizeof(buffer), " { \"%s\", %s%s }", files[0].basename, symPrefix?symPrefix:"", files[0].pathname);
T_FileStream_writeLine(out, buffer);
for(i=1; i<fileCount; ++i) {
- sprintf(buffer, ",\n { \"%s\", %s%s }", files[i].basename, symPrefix?symPrefix:"", files[i].pathname);
+ snprintf(buffer, sizeof(buffer), ",\n { \"%s\", %s%s }", files[i].basename, symPrefix?symPrefix:"", files[i].pathname);
T_FileStream_writeLine(out, buffer);
}
@@ -408,12 +408,12 @@ static void
addFile(const char *filename, const char *name, const char *source, UBool sourceTOC, UBool verbose) {
char *s;
uint32_t length;
- char *fullPath = NULL;
+ char *fullPath = nullptr;
if(fileCount==fileMax) {
fileMax += CHUNK_FILE_COUNT;
files = (File *)uprv_realloc(files, fileMax*sizeof(files[0])); /* note: never freed. */
- if(files==NULL) {
+ if(files==nullptr) {
fprintf(stderr, "pkgdata/gencmn: Could not allocate %u bytes for %d files\n", (unsigned int)(fileMax*sizeof(files[0])), fileCount);
exit(U_MEMORY_ALLOCATION_ERROR);
}
@@ -445,7 +445,7 @@ addFile(const char *filename, const char *name, const char *source, UBool source
/* try to open the file */
file=T_FileStream_open(fullPath, "rb");
- if(file==NULL) {
+ if(file==nullptr) {
fprintf(stderr, "gencmn: unable to open listed file %s\n", fullPath);
exit(U_FILE_ACCESS_ERROR);
}
@@ -518,7 +518,7 @@ pathToFullPath(const char *path, const char *source) {
length = (uint32_t)(uprv_strlen(path) + 1);
newLength = (length + 1 + (int32_t)uprv_strlen(source));
fullPath = (char *)uprv_malloc(newLength);
- if(source != NULL) {
+ if(source != nullptr) {
uprv_strcpy(fullPath, source);
uprv_strcat(fullPath, U_FILE_SEP_STRING);
} else {
diff --git a/Build/source/libs/icu/icu-src/source/tools/toolutil/pkg_icu.cpp b/Build/source/libs/icu/icu-src/source/tools/toolutil/pkg_icu.cpp
index 06ddbb89b89..d9c6717ecd1 100644
--- a/Build/source/libs/icu/icu-src/source/tools/toolutil/pkg_icu.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/toolutil/pkg_icu.cpp
@@ -61,14 +61,14 @@ readList(const char *filesPath, const char *listname, UBool readContents, Packag
FILE *file;
const char *listNameEnd;
- if(listname==NULL || listname[0]==0) {
+ if(listname==nullptr || listname[0]==0) {
fprintf(stderr, "missing list file\n");
- return NULL;
+ return nullptr;
}
- if (listPkg == NULL) {
+ if (listPkg == nullptr) {
listPkg=new Package();
- if(listPkg==NULL) {
+ if(listPkg==nullptr) {
fprintf(stderr, "icupkg: not enough memory\n");
exit(U_MEMORY_ALLOCATION_ERROR);
}
@@ -82,7 +82,7 @@ readList(const char *filesPath, const char *listname, UBool readContents, Packag
const char *start;
file=fopen(listname, "r");
- if(file==NULL) {
+ if(file==nullptr) {
fprintf(stderr, "icupkg: unable to open list file \"%s\"\n", listname);
delete listPkg;
exit(U_FILE_ACCESS_ERROR);
@@ -91,7 +91,7 @@ readList(const char *filesPath, const char *listname, UBool readContents, Packag
while(fgets(line, sizeof(line), file)) {
// remove comments
end=strchr(line, '#');
- if(end!=NULL) {
+ if(end!=nullptr) {
*end=0;
} else {
// remove trailing CR LF
@@ -105,7 +105,7 @@ readList(const char *filesPath, const char *listname, UBool readContents, Packag
// skip empty lines and
// skip lines starting with reserved characters
start=u_skipWhitespace(line);
- if(*start==0 || NULL!=strchr(U_PKG_RESERVED_CHARS, *start)) {
+ if(*start==0 || nullptr!=strchr(U_PKG_RESERVED_CHARS, *start)) {
continue;
}
@@ -115,7 +115,7 @@ readList(const char *filesPath, const char *listname, UBool readContents, Packag
for(end=(char *)start; *end!=0 && *end!=' ' && *end!='\t'; ++end) {}
if(*end==0) {
// this item is the last one on the line
- end=NULL;
+ end=nullptr;
} else {
// the item is terminated by whitespace, terminate it with NUL
*end=0;
@@ -127,7 +127,7 @@ readList(const char *filesPath, const char *listname, UBool readContents, Packag
}
// find the start of the next item or exit the loop
- if(end==NULL || *(start=u_skipWhitespace(end+1))==0) {
+ if(end==nullptr || *(start=u_skipWhitespace(end+1))==0) {
break;
}
}
@@ -155,7 +155,7 @@ writePackageDatFile(const char *outFilename, const char *outComment, const char
LocalPointer<Package> ownedPkg;
LocalPointer<Package> addListPkg;
- if (pkg == NULL) {
+ if (pkg == nullptr) {
ownedPkg.adoptInstead(new Package);
if(ownedPkg.isNull()) {
fprintf(stderr, "icupkg: not enough memory\n");
@@ -163,7 +163,7 @@ writePackageDatFile(const char *outFilename, const char *outComment, const char
}
pkg = ownedPkg.getAlias();
- addListPkg.adoptInstead(readList(sourcePath, addList, true, NULL));
+ addListPkg.adoptInstead(readList(sourcePath, addList, true, nullptr));
if(addListPkg.isValid()) {
pkg->addItems(*addListPkg);
} else {
diff --git a/Build/source/libs/icu/icu-src/source/tools/toolutil/pkgitems.cpp b/Build/source/libs/icu/icu-src/source/tools/toolutil/pkgitems.cpp
index 79e076c0c23..e49775d56da 100644
--- a/Build/source/libs/icu/icu-src/source/tools/toolutil/pkgitems.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/toolutil/pkgitems.cpp
@@ -60,8 +60,8 @@ U_NAMESPACE_BEGIN
class NativeItem {
public:
- NativeItem() : pItem(NULL), pInfo(NULL), bytes(NULL), swapped(NULL), length(0) {}
- NativeItem(const Item *item, UDataSwapFn *swap) : swapped(NULL) {
+ NativeItem() : pItem(nullptr), pInfo(nullptr), bytes(nullptr), swapped(nullptr), length(0) {}
+ NativeItem(const Item *item, UDataSwapFn *swap) : swapped(nullptr) {
setItem(item, swap);
}
~NativeItem() {
@@ -101,7 +101,7 @@ public:
ds->printErrorContext=stderr;
swapped=new uint8_t[pItem->length];
- if(swapped==NULL) {
+ if(swapped==nullptr) {
fprintf(stderr, "icupkg: unable to allocate memory for swapping \"%s\"\n", pItem->name);
exit(U_MEMORY_ALLOCATION_ERROR);
}
@@ -135,7 +135,7 @@ makeTargetName(const char *itemName, const char *id, int32_t idLength, const cha
// get the item basename
itemID=strrchr(itemName, '/');
- if(itemID!=NULL) {
+ if(itemID!=nullptr) {
++itemID;
} else {
itemID=itemName;
@@ -180,7 +180,7 @@ checkParent(const char *itemName, CheckDependency check, void *context,
// get the item basename
itemID=strrchr(itemName, '/');
- if(itemID!=NULL) {
+ if(itemID!=nullptr) {
++itemID;
} else {
itemID=itemName;
@@ -188,7 +188,7 @@ checkParent(const char *itemName, CheckDependency check, void *context,
// get the item suffix
suffix=strrchr(itemID, '.');
- if(suffix==NULL) {
+ if(suffix==nullptr) {
// empty suffix, point to the end of the string
suffix=strrchr(itemID, 0);
}
@@ -214,14 +214,14 @@ checkParent(const char *itemName, CheckDependency check, void *context,
// get dependencies from resource bundles ---------------------------------- ***
-static const UChar SLASH=0x2f;
+static const char16_t SLASH=0x2f;
/*
* Check for the alias from the string or alias resource res.
*/
static void
checkAlias(const char *itemName,
- Resource res, const UChar *alias, int32_t length, UBool useResSuffix,
+ Resource res, const char16_t *alias, int32_t length, UBool useResSuffix,
CheckDependency check, void *context, UErrorCode *pErrorCode) {
int32_t i;
@@ -287,7 +287,7 @@ ures_enumDependencies(const char *itemName,
UBool doCheckParent = true; // always remains true if depth>1
switch(res_getPublicType(res)) {
case URES_STRING:
- if(depth==1 && inKey!=NULL &&
+ if(depth==1 && inKey!=nullptr &&
(0==strcmp(inKey, "%%ALIAS") || 0==strcmp(inKey, "%%Parent"))) {
// Top-level %%ALIAS string:
// The alias resource bundle will be used instead of this one.
@@ -297,16 +297,16 @@ ures_enumDependencies(const char *itemName,
doCheckParent = false;
// No tracing: build tool
int32_t length;
- const UChar *alias=res_getStringNoTrace(pResData, res, &length);
+ const char16_t *alias=res_getStringNoTrace(pResData, res, &length);
checkAlias(itemName, res, alias, length, /*useResSuffix=*/ true,
check, context, pErrorCode);
// If there is a %%ALIAS, then there should be nothing else in this resource bundle.
- } else if(depth==2 && parentKey!=NULL && 0==strcmp(parentKey, "%%DEPENDENCY")) {
+ } else if(depth==2 && parentKey!=nullptr && 0==strcmp(parentKey, "%%DEPENDENCY")) {
// Second-level %%DEPENDENCY string:
// Explicit declaration of a dependency of this item on that one.
// No tracing: build tool
int32_t length;
- const UChar *alias=res_getStringNoTrace(pResData, res, &length);
+ const char16_t *alias=res_getStringNoTrace(pResData, res, &length);
checkAlias(itemName, res, alias, length, /*useResSuffix=*/ false,
check, context, pErrorCode);
}
@@ -315,7 +315,7 @@ ures_enumDependencies(const char *itemName,
case URES_ALIAS:
{
int32_t length;
- const UChar *alias=res_getAlias(pResData, res, &length);
+ const char16_t *alias=res_getAlias(pResData, res, &length);
checkAlias(itemName, res, alias, length, true, check, context, pErrorCode);
}
break;
@@ -351,7 +351,7 @@ ures_enumDependencies(const char *itemName,
Resource item=res_getArrayItem(pResData, res, i);
ures_enumDependencies(
itemName, pResData,
- item, NULL,
+ item, nullptr,
inKey, depth+1,
check, context,
pkg,
@@ -427,7 +427,7 @@ ures_enumDependencies(const char *itemName, const UDataInfo *pInfo,
UBool doCheckParent = ures_enumDependencies(
itemName, &resData,
- resData.rootRes, NULL, NULL, 0,
+ resData.rootRes, nullptr, nullptr, 0,
check, context,
pkg,
pErrorCode);
diff --git a/Build/source/libs/icu/icu-src/source/tools/toolutil/ppucd.cpp b/Build/source/libs/icu/icu-src/source/tools/toolutil/ppucd.cpp
index b31755947d0..0d59b28ce48 100644
--- a/Build/source/libs/icu/icu-src/source/tools/toolutil/ppucd.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/toolutil/ppucd.cpp
@@ -51,8 +51,8 @@ UniProps::UniProps()
: start(U_SENTINEL), end(U_SENTINEL),
bmg(U_SENTINEL), bpb(U_SENTINEL),
scf(U_SENTINEL), slc(U_SENTINEL), stc(U_SENTINEL), suc(U_SENTINEL),
- digitValue(-1), numericValue(NULL),
- name(NULL), nameAlias(NULL) {
+ digitValue(-1), numericValue(nullptr),
+ name(nullptr), nameAlias(nullptr) {
memset(binProps, 0, sizeof(binProps));
memset(intProps, 0, sizeof(intProps));
memset(age, 0, 4);
@@ -64,20 +64,20 @@ const int32_t PreparsedUCD::kNumLineBuffers;
PreparsedUCD::PreparsedUCD(const char *filename, UErrorCode &errorCode)
: pnames(nullptr),
- file(NULL),
+ file(nullptr),
defaultLineIndex(-1), blockLineIndex(-1), lineIndex(0),
lineNumber(0),
lineType(NO_LINE),
- fieldLimit(NULL), lineLimit(NULL) {
+ fieldLimit(nullptr), lineLimit(nullptr) {
if(U_FAILURE(errorCode)) { return; }
- if(filename==NULL || *filename==0 || (*filename=='-' && filename[1]==0)) {
- filename=NULL;
+ if(filename==nullptr || *filename==0 || (*filename=='-' && filename[1]==0)) {
+ filename=nullptr;
file=stdin;
} else {
file=fopen(filename, "r");
}
- if(file==NULL) {
+ if(file==nullptr) {
perror("error opening preparsed UCD");
fprintf(stderr, "error opening preparsed UCD file %s\n", filename ? filename : "\"no file name given\"");
errorCode=U_FILE_ACCESS_ERROR;
@@ -96,8 +96,8 @@ PreparsedUCD::~PreparsedUCD() {
// Same order as the LineType values.
static const char *lineTypeStrings[]={
- NULL,
- NULL,
+ nullptr,
+ nullptr,
"ucd",
"property",
"binary",
@@ -124,7 +124,7 @@ PreparsedUCD::readLine(UErrorCode &errorCode) {
lineLimit=fieldLimit=line;
lineType=NO_LINE;
char *result=fgets(line, sizeof(lines[0]), file);
- if(result==NULL) {
+ if(result==nullptr) {
if(ferror(file)) {
perror("error reading preparsed UCD");
fprintf(stderr, "error reading preparsed UCD before line %ld\n", (long)lineNumber);
@@ -151,7 +151,7 @@ PreparsedUCD::readLine(UErrorCode &errorCode) {
}
// Split by ';'.
char *semi=line;
- while((semi=strchr(semi, ';'))!=NULL) { *semi++=0; }
+ while((semi=strchr(semi, ';'))!=nullptr) { *semi++=0; }
fieldLimit=strchr(line, 0);
// Determine the line type.
int32_t type;
@@ -183,7 +183,7 @@ PreparsedUCD::firstField() {
const char *
PreparsedUCD::nextField() {
- if(fieldLimit==lineLimit) { return NULL; }
+ if(fieldLimit==lineLimit) { return nullptr; }
char *field=fieldLimit+1;
fieldLimit=strchr(field, 0);
return field;
@@ -191,25 +191,25 @@ PreparsedUCD::nextField() {
const UniProps *
PreparsedUCD::getProps(UnicodeSet &newValues, UErrorCode &errorCode) {
- if(U_FAILURE(errorCode)) { return NULL; }
+ if(U_FAILURE(errorCode)) { return nullptr; }
newValues.clear();
if(!lineHasPropertyValues()) {
errorCode=U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
firstField();
const char *field=nextField();
- if(field==NULL) {
+ if(field==nullptr) {
// No range field after the type.
fprintf(stderr,
"error in preparsed UCD: missing default/block/cp range field "
"(no second field) on line %ld\n",
(long)lineNumber);
errorCode=U_PARSE_ERROR;
- return NULL;
+ return nullptr;
}
UChar32 start, end;
- if(!parseCodePointRange(field, start, end, errorCode)) { return NULL; }
+ if(!parseCodePointRange(field, start, end, errorCode)) { return nullptr; }
UniProps *props;
UBool insideBlock=false; // true if cp or unassigned range inside the block range.
switch(lineType) {
@@ -220,21 +220,21 @@ PreparsedUCD::getProps(UnicodeSet &newValues, UErrorCode &errorCode) {
"error in preparsed UCD: default line %ld after one or more block lines\n",
(long)lineNumber);
errorCode=U_PARSE_ERROR;
- return NULL;
+ return nullptr;
}
if(defaultLineIndex>=0) {
fprintf(stderr,
"error in preparsed UCD: second line with default properties on line %ld\n",
(long)lineNumber);
errorCode=U_PARSE_ERROR;
- return NULL;
+ return nullptr;
}
if(start!=0 || end!=0x10ffff) {
fprintf(stderr,
"error in preparsed UCD: default range must be 0..10FFFF, not '%s' on line %ld\n",
field, (long)lineNumber);
errorCode=U_PARSE_ERROR;
- return NULL;
+ return nullptr;
}
props=&defaultProps;
defaultLineIndex=lineIndex;
@@ -271,19 +271,19 @@ PreparsedUCD::getProps(UnicodeSet &newValues, UErrorCode &errorCode) {
"partially overlaps with block range %04lX..%04lX\n",
field, (long)lineNumber, (long)blockProps.start, (long)blockProps.end);
errorCode=U_PARSE_ERROR;
- return NULL;
+ return nullptr;
}
props=&cpProps;
break;
default:
// Will not occur because of the range check above.
errorCode=U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
props->start=start;
props->end=end;
- while((field=nextField())!=NULL) {
- if(!parseProperty(*props, field, newValues, errorCode)) { return NULL; }
+ while((field=nextField())!=nullptr) {
+ if(!parseProperty(*props, field, newValues, errorCode)) { return nullptr; }
}
if(lineType==BLOCK_LINE) {
blockValues=newValues;
@@ -322,7 +322,7 @@ PreparsedUCD::parseProperty(UniProps &props, const char *field, UnicodeSet &newV
const char *v=strchr(p, '=');
int binaryValue;
if(*p=='-') {
- if(v!=NULL) {
+ if(v!=nullptr) {
fprintf(stderr,
"error in preparsed UCD: mix of binary-property-no and "
"enum-property syntax '%s' on line %ld\n",
@@ -332,7 +332,7 @@ PreparsedUCD::parseProperty(UniProps &props, const char *field, UnicodeSet &newV
}
binaryValue=0;
++p;
- } else if(v==NULL) {
+ } else if(v==nullptr) {
binaryValue=1;
} else {
binaryValue=-1;
@@ -518,7 +518,7 @@ PreparsedUCD::getRangeForAlgNames(UChar32 &start, UChar32 &end, UErrorCode &erro
}
firstField();
const char *field=nextField();
- if(field==NULL) {
+ if(field==nullptr) {
// No range field after the type.
fprintf(stderr,
"error in preparsed UCD: missing algnamesrange range field "
@@ -561,13 +561,13 @@ PreparsedUCD::parseCodePointRange(const char *s, UChar32 &start, UChar32 &end, U
void
PreparsedUCD::parseString(const char *s, UnicodeString &uni, UErrorCode &errorCode) {
- UChar *buffer=toUCharPtr(uni.getBuffer(-1));
- int32_t length=u_parseString(s, buffer, uni.getCapacity(), NULL, &errorCode);
+ char16_t *buffer=toUCharPtr(uni.getBuffer(-1));
+ int32_t length=u_parseString(s, buffer, uni.getCapacity(), nullptr, &errorCode);
if(errorCode==U_BUFFER_OVERFLOW_ERROR) {
errorCode=U_ZERO_ERROR;
uni.releaseBuffer(0);
buffer=toUCharPtr(uni.getBuffer(length));
- length=u_parseString(s, buffer, uni.getCapacity(), NULL, &errorCode);
+ length=u_parseString(s, buffer, uni.getCapacity(), nullptr, &errorCode);
}
uni.releaseBuffer(length);
if(U_FAILURE(errorCode)) {
@@ -585,7 +585,7 @@ PreparsedUCD::parseScriptExtensions(const char *s, UnicodeSet &scx, UErrorCode &
for(;;) {
const char *scs;
const char *scLimit=strchr(s, ' ');
- if(scLimit!=NULL) {
+ if(scLimit!=nullptr) {
scs=scString.clear().append(s, (int32_t)(scLimit-s), errorCode).data();
if(U_FAILURE(errorCode)) { return; }
} else {
@@ -607,7 +607,7 @@ PreparsedUCD::parseScriptExtensions(const char *s, UnicodeSet &scx, UErrorCode &
} else {
scx.add(script);
}
- if(scLimit!=NULL) {
+ if(scLimit!=nullptr) {
s=scLimit+1;
} else {
break;
diff --git a/Build/source/libs/icu/icu-src/source/tools/toolutil/ppucd.h b/Build/source/libs/icu/icu-src/source/tools/toolutil/ppucd.h
index bf455d0e142..d5c63fab497 100644
--- a/Build/source/libs/icu/icu-src/source/tools/toolutil/ppucd.h
+++ b/Build/source/libs/icu/icu-src/source/tools/toolutil/ppucd.h
@@ -114,7 +114,7 @@ public:
/** Returns the number of the line read by readLine(). */
int32_t getLineNumber() const { return lineNumber; }
- /** Returns the line's next field, or NULL. */
+ /** Returns the line's next field, or nullptr. */
const char *nextField();
/** Returns the Unicode version when or after the UNICODE_VERSION_LINE has been read. */
@@ -129,7 +129,7 @@ public:
* Parses properties from the current line.
* Clears newValues and sets UProperty codes for property values mentioned
* on the current line (as opposed to being inherited).
- * Returns a pointer to the filled-in UniProps, or NULL if something went wrong.
+ * Returns a pointer to the filled-in UniProps, or nullptr if something went wrong.
* The returned UniProps are usable until the next line of the same type is read.
*/
const UniProps *getProps(UnicodeSet &newValues, UErrorCode &errorCode);
diff --git a/Build/source/libs/icu/icu-src/source/tools/toolutil/swapimpl.cpp b/Build/source/libs/icu/icu-src/source/tools/toolutil/swapimpl.cpp
index 8d669a93187..9c585639657 100644
--- a/Build/source/libs/icu/icu-src/source/tools/toolutil/swapimpl.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/toolutil/swapimpl.cpp
@@ -80,7 +80,7 @@ upname_swap(const UDataSwapper *ds,
UErrorCode *pErrorCode) {
/* udata_swapDataHeader checks the arguments */
int32_t headerSize=udata_swapDataHeader(ds, inData, length, outData, pErrorCode);
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return 0;
}
@@ -171,7 +171,7 @@ uprops_swap(const UDataSwapper *ds,
/* udata_swapDataHeader checks the arguments */
headerSize=udata_swapDataHeader(ds, inData, length, outData, pErrorCode);
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return 0;
}
@@ -264,7 +264,7 @@ uprops_swap(const UDataSwapper *ds,
/*
* swap the UChars
- * U const UChar uchars[2*(i3-i2)];
+ * U const char16_t uchars[2*(i3-i2)];
*/
ds->swapArray16(ds,
inData32+dataIndexes[UPROPS_EXCEPTIONS_TOP_INDEX],
@@ -324,7 +324,7 @@ ucase_swap(const UDataSwapper *ds,
/* udata_swapDataHeader checks the arguments */
headerSize=udata_swapDataHeader(ds, inData, length, outData, pErrorCode);
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return 0;
}
@@ -426,7 +426,7 @@ ubidi_swap(const UDataSwapper *ds,
/* udata_swapDataHeader checks the arguments */
headerSize=udata_swapDataHeader(ds, inData, length, outData, pErrorCode);
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return 0;
}
@@ -536,7 +536,7 @@ unorm_swap(const UDataSwapper *ds,
/* udata_swapDataHeader checks the arguments */
headerSize=udata_swapDataHeader(ds, inData, length, outData, pErrorCode);
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return 0;
}
@@ -866,8 +866,8 @@ test_swap(const UDataSwapper *ds,
/* udata_swapDataHeader checks the arguments */
headerSize=udata_swapDataHeader(ds, inData, length, outData, pErrorCode);
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
- udata_printError(ds, "test_swap(): data header swap failed %s\n", pErrorCode != NULL ? u_errorName(*pErrorCode) : "pErrorCode is NULL");
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
+ udata_printError(ds, "test_swap(): data header swap failed %s\n", pErrorCode != nullptr ? u_errorName(*pErrorCode) : "pErrorCode is nullptr");
return 0;
}
@@ -972,7 +972,7 @@ udata_swap(const UDataSwapper *ds,
const UDataInfo *pInfo;
int32_t i, swappedLength;
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return 0;
}
@@ -983,7 +983,7 @@ udata_swap(const UDataSwapper *ds,
* information. Otherwise we would have to pass some of the information
* and not be able to use the UDataSwapFn signature.
*/
- udata_swapDataHeader(ds, inData, -1, NULL, pErrorCode);
+ udata_swapDataHeader(ds, inData, -1, nullptr, pErrorCode);
/*
* If we wanted udata_swap() to also handle non-loadable data like a UTrie,
@@ -997,7 +997,7 @@ udata_swap(const UDataSwapper *ds,
{
/* convert the data format from ASCII to Unicode to the system charset */
- UChar u[4]={
+ char16_t u[4]={
pInfo->dataFormat[0], pInfo->dataFormat[1],
pInfo->dataFormat[2], pInfo->dataFormat[3]
};
diff --git a/Build/source/libs/icu/icu-src/source/tools/toolutil/toolutil.cpp b/Build/source/libs/icu/icu-src/source/tools/toolutil/toolutil.cpp
index 070c6034afa..7e7bdc78a12 100644
--- a/Build/source/libs/icu/icu-src/source/tools/toolutil/toolutil.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/toolutil/toolutil.cpp
@@ -121,8 +121,8 @@ getLongPathname(const char *pathname) {
U_CAPI const char * U_EXPORT2
findDirname(const char *path, char *buffer, int32_t bufLen, UErrorCode* status) {
- if(U_FAILURE(*status)) return NULL;
- const char *resultPtr = NULL;
+ if(U_FAILURE(*status)) return nullptr;
+ const char *resultPtr = nullptr;
int32_t resultLen = 0;
const char *basename=uprv_strrchr(path, U_FILE_SEP_CHAR);
@@ -150,7 +150,7 @@ findDirname(const char *path, char *buffer, int32_t bufLen, UErrorCode* status)
return buffer;
} else {
*status = U_BUFFER_OVERFLOW_ERROR;
- return NULL;
+ return nullptr;
}
}
@@ -167,7 +167,7 @@ findBasename(const char *filename) {
}
#endif
- if(basename!=NULL) {
+ if(basename!=nullptr) {
return basename+1;
} else {
return filename;
@@ -279,7 +279,7 @@ utm_open(const char *name, int32_t initialCapacity, int32_t maxCapacity, int32_t
}
mem=(UToolMemory *)uprv_malloc(sizeof(UToolMemory)+initialCapacity*size);
- if(mem==NULL) {
+ if(mem==nullptr) {
fprintf(stderr, "error: %s - out of memory\n", name);
exit(U_MEMORY_ALLOCATION_ERROR);
}
@@ -295,7 +295,7 @@ utm_open(const char *name, int32_t initialCapacity, int32_t maxCapacity, int32_t
U_CAPI void U_EXPORT2
utm_close(UToolMemory *mem) {
- if(mem!=NULL) {
+ if(mem!=nullptr) {
if(mem->array!=mem->staticArray) {
uprv_free(mem->array);
}
@@ -337,14 +337,14 @@ utm_hasCapacity(UToolMemory *mem, int32_t capacity) {
if(mem->array==mem->staticArray) {
mem->array=uprv_malloc(newCapacity*mem->size);
- if(mem->array!=NULL) {
+ if(mem->array!=nullptr) {
uprv_memcpy(mem->array, mem->staticArray, (size_t)mem->idx*mem->size);
}
} else {
mem->array=uprv_realloc(mem->array, newCapacity*mem->size);
}
- if(mem->array==NULL) {
+ if(mem->array==nullptr) {
fprintf(stderr, "error: %s - out of memory\n", mem->name);
exit(U_MEMORY_ALLOCATION_ERROR);
}
@@ -356,7 +356,7 @@ utm_hasCapacity(UToolMemory *mem, int32_t capacity) {
U_CAPI void * U_EXPORT2
utm_alloc(UToolMemory *mem) {
- char *p=NULL;
+ char *p=nullptr;
int32_t oldIndex=mem->idx;
int32_t newIndex=oldIndex+1;
if(utm_hasCapacity(mem, newIndex)) {
@@ -369,7 +369,7 @@ utm_alloc(UToolMemory *mem) {
U_CAPI void * U_EXPORT2
utm_allocN(UToolMemory *mem, int32_t n) {
- char *p=NULL;
+ char *p=nullptr;
int32_t oldIndex=mem->idx;
int32_t newIndex=oldIndex+n;
if(utm_hasCapacity(mem, newIndex)) {
diff --git a/Build/source/libs/icu/icu-src/source/tools/toolutil/toolutil.h b/Build/source/libs/icu/icu-src/source/tools/toolutil/toolutil.h
index 98b2155551e..b32a0b87628 100644
--- a/Build/source/libs/icu/icu-src/source/tools/toolutil/toolutil.h
+++ b/Build/source/libs/icu/icu-src/source/tools/toolutil/toolutil.h
@@ -99,7 +99,7 @@ findDirname(const char *path, char *buffer, int32_t bufLen, UErrorCode* status);
* Return the current year in the Gregorian calendar. Used for copyright generation.
*/
U_CAPI int32_t U_EXPORT2
-getCurrentYear(void);
+getCurrentYear();
/*
* Creates a directory with pathname.
diff --git a/Build/source/libs/icu/icu-src/source/tools/toolutil/ucbuf.cpp b/Build/source/libs/icu/icu-src/source/tools/toolutil/ucbuf.cpp
index f269748205e..1eb54e260e6 100644
--- a/Build/source/libs/icu/icu-src/source/tools/toolutil/ucbuf.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/toolutil/ucbuf.cpp
@@ -39,9 +39,9 @@
#define CONTEXT_LEN 20
struct UCHARBUF {
- UChar* buffer;
- UChar* currentPos;
- UChar* bufLimit;
+ char16_t* buffer;
+ char16_t* currentPos;
+ char16_t* bufLimit;
int32_t bufCapacity;
int32_t remaining;
int32_t signatureLength;
@@ -56,8 +56,8 @@ ucbuf_autodetect_fs(FileStream* in, const char** cp, UConverter** conv, int32_t*
char start[8];
int32_t numRead;
- UChar target[1]={ 0 };
- UChar* pTarget;
+ char16_t target[1]={ 0 };
+ char16_t* pTarget;
const char* pStart;
/* read a few bytes */
@@ -71,8 +71,8 @@ ucbuf_autodetect_fs(FileStream* in, const char** cp, UConverter** conv, int32_t*
T_FileStream_read(in, start, *signatureLength);
}
- if(*cp==NULL){
- *conv =NULL;
+ if(*cp==nullptr){
+ *conv =nullptr;
return false;
}
@@ -82,7 +82,7 @@ ucbuf_autodetect_fs(FileStream* in, const char** cp, UConverter** conv, int32_t*
/* convert and ignore initial U+FEFF, and the buffer overflow */
pTarget = target;
pStart = start;
- ucnv_toUnicode(*conv, &pTarget, target+1, &pStart, start+*signatureLength, NULL, false, error);
+ ucnv_toUnicode(*conv, &pTarget, target+1, &pStart, start+*signatureLength, nullptr, false, error);
*signatureLength = (int32_t)(pStart - start);
if(*error==U_BUFFER_OVERFLOW_ERROR) {
*error=U_ZERO_ERROR;
@@ -132,54 +132,54 @@ static UBool ucbuf_isCPKnown(const char* cp){
U_CAPI FileStream * U_EXPORT2
ucbuf_autodetect(const char* fileName, const char** cp,UConverter** conv, int32_t* signatureLength,UErrorCode* error){
- FileStream* in=NULL;
- if(error==NULL || U_FAILURE(*error)){
- return NULL;
+ FileStream* in=nullptr;
+ if(error==nullptr || U_FAILURE(*error)){
+ return nullptr;
}
- if(conv==NULL || cp==NULL || fileName==NULL){
+ if(conv==nullptr || cp==nullptr || fileName==nullptr){
*error = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
/* open the file */
in= T_FileStream_open(fileName,"rb");
- if(in == NULL){
+ if(in == nullptr){
*error=U_FILE_ACCESS_ERROR;
- return NULL;
+ return nullptr;
}
if(ucbuf_autodetect_fs(in,cp,conv,signatureLength,error)) {
return in;
} else {
ucnv_close(*conv);
- *conv=NULL;
+ *conv=nullptr;
T_FileStream_close(in);
- return NULL;
+ return nullptr;
}
}
/* fill the uchar buffer */
static UCHARBUF*
ucbuf_fillucbuf( UCHARBUF* buf,UErrorCode* error){
- UChar* pTarget=NULL;
- UChar* target=NULL;
- const char* source=NULL;
+ char16_t* pTarget=nullptr;
+ char16_t* target=nullptr;
+ const char* source=nullptr;
char carr[MAX_IN_BUF] = {'\0'};
char* cbuf = carr;
int32_t inputRead=0;
int32_t outputWritten=0;
int32_t offset=0;
- const char* sourceLimit =NULL;
+ const char* sourceLimit =nullptr;
int32_t cbufSize=0;
pTarget = buf->buffer;
/* check if we arrived here without exhausting the buffer*/
if(buf->currentPos<buf->bufLimit){
offset = (int32_t)(buf->bufLimit-buf->currentPos);
- memmove(buf->buffer,buf->currentPos,offset* sizeof(UChar));
+ memmove(buf->buffer,buf->currentPos,offset* sizeof(char16_t));
}
#ifdef UCBUF_DEBUG
- memset(pTarget+offset,0xff,sizeof(UChar)*(MAX_IN_BUF-offset));
+ memset(pTarget+offset,0xff,sizeof(char16_t)*(MAX_IN_BUF-offset));
#endif
if(buf->isBuffered){
cbufSize = MAX_IN_BUF;
@@ -190,9 +190,9 @@ ucbuf_fillucbuf( UCHARBUF* buf,UErrorCode* error){
}else{
cbufSize = T_FileStream_size(buf->in);
cbuf = (char*)uprv_malloc(cbufSize);
- if (cbuf == NULL) {
+ if (cbuf == nullptr) {
*error = U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
inputRead= T_FileStream_read(buf->in,cbuf,cbufSize);
buf->remaining-=inputRead;
@@ -208,7 +208,7 @@ ucbuf_fillucbuf( UCHARBUF* buf,UErrorCode* error){
/* set the callback to stop */
UConverterToUCallback toUOldAction ;
void* toUOldContext;
- void* toUNewContext=NULL;
+ void* toUNewContext=nullptr;
ucnv_setToUCallBack(buf->conv,
UCNV_TO_U_CALLBACK_STOP,
toUNewContext,
@@ -220,7 +220,7 @@ ucbuf_fillucbuf( UCHARBUF* buf,UErrorCode* error){
source = cbuf;
sourceLimit = source + inputRead;
ucnv_toUnicode(buf->conv,&target,target+(buf->bufCapacity-offset),
- &source,sourceLimit,NULL,
+ &source,sourceLimit,nullptr,
(UBool)(buf->remaining==0),error);
if(U_FAILURE(*error)){
@@ -289,7 +289,7 @@ ucbuf_fillucbuf( UCHARBUF* buf,UErrorCode* error){
/* re convert */
ucnv_toUnicode(buf->conv,&target,target+(buf->bufCapacity-offset),
- &source,sourceLimit,NULL,
+ &source,sourceLimit,nullptr,
(UBool)(buf->remaining==0),&error1);
}
@@ -320,10 +320,10 @@ ucbuf_fillucbuf( UCHARBUF* buf,UErrorCode* error){
-/* get a UChar from the stream*/
+/* get a char16_t from the stream*/
U_CAPI int32_t U_EXPORT2
ucbuf_getc(UCHARBUF* buf,UErrorCode* error){
- if(error==NULL || U_FAILURE(*error)){
+ if(error==nullptr || U_FAILURE(*error)){
return false;
}
if(buf->currentPos>=buf->bufLimit){
@@ -343,7 +343,7 @@ ucbuf_getc(UCHARBUF* buf,UErrorCode* error){
U_CAPI int32_t U_EXPORT2
ucbuf_getc32(UCHARBUF* buf,UErrorCode* error){
int32_t retVal = (int32_t)U_EOF;
- if(error==NULL || U_FAILURE(*error)){
+ if(error==nullptr || U_FAILURE(*error)){
return false;
}
if(buf->currentPos+1>=buf->bufLimit){
@@ -364,8 +364,8 @@ ucbuf_getc32(UCHARBUF* buf,UErrorCode* error){
return retVal;
}
-/* u_unescapeAt() callback to return a UChar*/
-static UChar U_CALLCONV
+/* u_unescapeAt() callback to return a char16_t*/
+static char16_t U_CALLCONV
_charAt(int32_t offset, void *context) {
return ((UCHARBUF*) context)->currentPos[offset];
}
@@ -376,7 +376,7 @@ ucbuf_getcx32(UCHARBUF* buf,UErrorCode* error) {
int32_t length;
int32_t offset;
UChar32 c32,c1,c2;
- if(error==NULL || U_FAILURE(*error)){
+ if(error==nullptr || U_FAILURE(*error)){
return false;
}
/* Fill the buffer if it is empty */
@@ -449,15 +449,15 @@ ucbuf_getcx32(UCHARBUF* buf,UErrorCode* error) {
U_CAPI UCHARBUF* U_EXPORT2
ucbuf_open(const char* fileName,const char** cp,UBool showWarning, UBool buffered, UErrorCode* error){
- FileStream* in = NULL;
+ FileStream* in = nullptr;
int32_t fileSize=0;
const char* knownCp;
- if(error==NULL || U_FAILURE(*error)){
- return NULL;
+ if(error==nullptr || U_FAILURE(*error)){
+ return nullptr;
}
- if(cp==NULL || fileName==NULL){
+ if(cp==nullptr || fileName==nullptr){
*error = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
if (!uprv_strcmp(fileName, "-")) {
in = T_FileStream_stdin();
@@ -465,37 +465,37 @@ ucbuf_open(const char* fileName,const char** cp,UBool showWarning, UBool buffere
in = T_FileStream_open(fileName, "rb");
}
- if(in!=NULL){
+ if(in!=nullptr){
UCHARBUF* buf =(UCHARBUF*) uprv_malloc(sizeof(UCHARBUF));
fileSize = T_FileStream_size(in);
- if(buf == NULL){
+ if(buf == nullptr){
*error = U_MEMORY_ALLOCATION_ERROR;
T_FileStream_close(in);
- return NULL;
+ return nullptr;
}
buf->in=in;
- buf->conv=NULL;
+ buf->conv=nullptr;
buf->showWarning = showWarning;
buf->isBuffered = buffered;
buf->signatureLength=0;
- if(*cp==NULL || **cp=='\0'){
+ if(*cp==nullptr || **cp=='\0'){
/* don't have code page name... try to autodetect */
ucbuf_autodetect_fs(in,cp,&buf->conv,&buf->signatureLength,error);
}else if(ucbuf_isCPKnown(*cp)){
/* discard BOM */
ucbuf_autodetect_fs(in,&knownCp,&buf->conv,&buf->signatureLength,error);
}
- if(U_SUCCESS(*error) && buf->conv==NULL) {
+ if(U_SUCCESS(*error) && buf->conv==nullptr) {
buf->conv=ucnv_open(*cp,error);
}
if(U_FAILURE(*error)){
ucnv_close(buf->conv);
uprv_free(buf);
T_FileStream_close(in);
- return NULL;
+ return nullptr;
}
- if((buf->conv==NULL) && (buf->showWarning==true)){
+ if((buf->conv==nullptr) && (buf->showWarning==true)){
fprintf(stderr,"###WARNING: No converter defined. Using codepage of system.\n");
}
buf->remaining=fileSize-buf->signatureLength;
@@ -504,28 +504,28 @@ ucbuf_open(const char* fileName,const char** cp,UBool showWarning, UBool buffere
}else{
buf->bufCapacity=buf->remaining+buf->signatureLength+1/*for terminating nul*/;
}
- buf->buffer=(UChar*) uprv_malloc(U_SIZEOF_UCHAR * buf->bufCapacity );
- if (buf->buffer == NULL) {
+ buf->buffer=(char16_t*) uprv_malloc(U_SIZEOF_UCHAR * buf->bufCapacity );
+ if (buf->buffer == nullptr) {
*error = U_MEMORY_ALLOCATION_ERROR;
ucbuf_close(buf);
- return NULL;
+ return nullptr;
}
buf->currentPos=buf->buffer;
buf->bufLimit=buf->buffer;
if(U_FAILURE(*error)){
fprintf(stderr, "Could not open codepage [%s]: %s\n", *cp, u_errorName(*error));
ucbuf_close(buf);
- return NULL;
+ return nullptr;
}
ucbuf_fillucbuf(buf,error);
if(U_FAILURE(*error)){
ucbuf_close(buf);
- return NULL;
+ return nullptr;
}
return buf;
}
*error =U_FILE_ACCESS_ERROR;
- return NULL;
+ return nullptr;
}
@@ -551,17 +551,17 @@ ucbuf_ungetc(int32_t c,UCHARBUF* buf){
}
}
-/* frees the resources of UChar* buffer */
+/* frees the resources of char16_t* buffer */
static void
ucbuf_closebuf(UCHARBUF* buf){
uprv_free(buf->buffer);
- buf->buffer = NULL;
+ buf->buffer = nullptr;
}
/* close the buf and release resources*/
U_CAPI void U_EXPORT2
ucbuf_close(UCHARBUF* buf){
- if(buf!=NULL){
+ if(buf!=nullptr){
if(buf->conv){
ucnv_close(buf->conv);
}
@@ -574,7 +574,7 @@ ucbuf_close(UCHARBUF* buf){
/* rewind the buf and file stream */
U_CAPI void U_EXPORT2
ucbuf_rewind(UCHARBUF* buf,UErrorCode* error){
- if(error==NULL || U_FAILURE(*error)){
+ if(error==nullptr || U_FAILURE(*error)){
return;
}
if(buf){
@@ -585,8 +585,8 @@ ucbuf_rewind(UCHARBUF* buf,UErrorCode* error){
ucnv_resetToUnicode(buf->conv);
if(buf->signatureLength>0) {
- UChar target[1]={ 0 };
- UChar* pTarget;
+ char16_t target[1]={ 0 };
+ char16_t* pTarget;
char start[8];
const char* pStart;
int32_t numRead;
@@ -597,7 +597,7 @@ ucbuf_rewind(UCHARBUF* buf,UErrorCode* error){
/* convert and ignore initial U+FEFF, and the buffer overflow */
pTarget = target;
pStart = start;
- ucnv_toUnicode(buf->conv, &pTarget, target+1, &pStart, start+numRead, NULL, false, error);
+ ucnv_toUnicode(buf->conv, &pTarget, target+1, &pStart, start+numRead, nullptr, false, error);
if(*error==U_BUFFER_OVERFLOW_ERROR) {
*error=U_ZERO_ERROR;
}
@@ -623,14 +623,14 @@ ucbuf_size(UCHARBUF* buf){
return 0;
}
-U_CAPI const UChar* U_EXPORT2
+U_CAPI const char16_t* U_EXPORT2
ucbuf_getBuffer(UCHARBUF* buf,int32_t* len,UErrorCode* error){
- if(error==NULL || U_FAILURE(*error)){
- return NULL;
+ if(error==nullptr || U_FAILURE(*error)){
+ return nullptr;
}
- if(buf==NULL || len==NULL){
+ if(buf==nullptr || len==nullptr){
*error = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
*len = (int32_t)(buf->bufLimit - buf->buffer);
return buf->buffer;
@@ -641,13 +641,13 @@ ucbuf_resolveFileName(const char* inputDir, const char* fileName, char* target,
int32_t requiredLen = 0;
int32_t dirlen = 0;
int32_t filelen = 0;
- if(status==NULL || U_FAILURE(*status)){
- return NULL;
+ if(status==nullptr || U_FAILURE(*status)){
+ return nullptr;
}
- if(inputDir == NULL || fileName == NULL || len==NULL || (target==NULL && *len>0)){
+ if(inputDir == nullptr || fileName == nullptr || len==nullptr || (target==nullptr && *len>0)){
*status = U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
@@ -655,10 +655,10 @@ ucbuf_resolveFileName(const char* inputDir, const char* fileName, char* target,
filelen = (int32_t)uprv_strlen(fileName);
if(inputDir[dirlen-1] != U_FILE_SEP_CHAR) {
requiredLen = dirlen + filelen + 2;
- if((*len < requiredLen) || target==NULL){
+ if((*len < requiredLen) || target==nullptr){
*len = requiredLen;
*status = U_BUFFER_OVERFLOW_ERROR;
- return NULL;
+ return nullptr;
}
target[0] = '\0';
@@ -680,10 +680,10 @@ ucbuf_resolveFileName(const char* inputDir, const char* fileName, char* target,
target[dirlen + 1] = '\0';
} else {
requiredLen = dirlen + filelen + 1;
- if((*len < requiredLen) || target==NULL){
+ if((*len < requiredLen) || target==nullptr){
*len = requiredLen;
*status = U_BUFFER_OVERFLOW_ERROR;
- return NULL;
+ return nullptr;
}
uprv_strcpy(target, inputDir);
@@ -698,7 +698,7 @@ ucbuf_resolveFileName(const char* inputDir, const char* fileName, char* target,
* to CR+LF combination which needs to be
* handled separately
*/
-static UBool ucbuf_isCharNewLine(UChar c){
+static UBool ucbuf_isCharNewLine(char16_t c){
switch(c){
case 0x000A: /* LF */
case 0x000D: /* CR */
@@ -712,11 +712,11 @@ static UBool ucbuf_isCharNewLine(UChar c){
}
}
-U_CAPI const UChar* U_EXPORT2
+U_CAPI const char16_t* U_EXPORT2
ucbuf_readline(UCHARBUF* buf,int32_t* len,UErrorCode* err){
- UChar* temp = buf->currentPos;
- UChar* savePos =NULL;
- UChar c=0x0000;
+ char16_t* temp = buf->currentPos;
+ char16_t* savePos =nullptr;
+ char16_t c=0x0000;
if(buf->isBuffered){
/* The input is buffered we have to do more
* for returning a pointer U_TRUNCATED_CHAR_FOUND
@@ -724,15 +724,15 @@ ucbuf_readline(UCHARBUF* buf,int32_t* len,UErrorCode* err){
for(;;){
c = *temp++;
if(buf->remaining==0){
- return NULL; /* end of file is reached return NULL */
+ return nullptr; /* end of file is reached return nullptr */
}
if(temp>=buf->bufLimit && buf->currentPos == buf->buffer){
*err= U_TRUNCATED_CHAR_FOUND;
- return NULL;
+ return nullptr;
}else{
ucbuf_fillucbuf(buf,err);
if(U_FAILURE(*err)){
- return NULL;
+ return nullptr;
}
}
/*
@@ -763,7 +763,7 @@ ucbuf_readline(UCHARBUF* buf,int32_t* len,UErrorCode* err){
c = *temp++;
if(buf->currentPos==buf->bufLimit){
- return NULL; /* end of file is reached return NULL */
+ return nullptr; /* end of file is reached return nullptr */
}
/* Windows CR LF */
if(c ==0x0d && temp <= buf->bufLimit && *temp == 0x0a ){
@@ -783,6 +783,6 @@ ucbuf_readline(UCHARBUF* buf,int32_t* len,UErrorCode* err){
}
/* not reached */
/* A compiler warning will appear if all paths don't contain a return statement. */
-/* return NULL;*/
+/* return nullptr;*/
}
#endif
diff --git a/Build/source/libs/icu/icu-src/source/tools/toolutil/ucln_tu.cpp b/Build/source/libs/icu/icu-src/source/tools/toolutil/ucln_tu.cpp
index 5354fe1753a..4727227ebfd 100644
--- a/Build/source/libs/icu/icu-src/source/tools/toolutil/ucln_tu.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/toolutil/ucln_tu.cpp
@@ -11,8 +11,8 @@
#define UCLN_TYPE UCLN_TOOLUTIL
#include "ucln_imp.h"
-int uprv_dummyFunction_TU(void);
-int uprv_dummyFunction_TU(void)
+int uprv_dummyFunction_TU();
+int uprv_dummyFunction_TU()
{
/* this is here to prevent the compiler from complaining about an empty file */
return 0;
diff --git a/Build/source/libs/icu/icu-src/source/tools/toolutil/ucm.cpp b/Build/source/libs/icu/icu-src/source/tools/toolutil/ucm.cpp
index f2f3a66e70e..272570e72f4 100644
--- a/Build/source/libs/icu/icu-src/source/tools/toolutil/ucm.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/toolutil/ucm.cpp
@@ -236,7 +236,7 @@ ucm_sortTable(UCMTable *t) {
false, &errorCode);
/* build the reverseMap */
- if(t->reverseMap==NULL) {
+ if(t->reverseMap==nullptr) {
/*
* allocate mappingsCapacity instead of mappingsLength so that
* if mappings are added, the reverseMap need not be
@@ -244,7 +244,7 @@ ucm_sortTable(UCMTable *t) {
* (see ucm_moveMappings() and ucm_addMapping())
*/
t->reverseMap=(int32_t *)uprv_malloc(t->mappingsCapacity*sizeof(int32_t));
- if(t->reverseMap==NULL) {
+ if(t->reverseMap==nullptr) {
fprintf(stderr, "ucm error: unable to allocate reverseMap\n");
exit(U_MEMORY_ALLOCATION_ERROR);
}
@@ -285,7 +285,7 @@ ucm_moveMappings(UCMTable *base, UCMTable *ext) {
/* reset the move flag */
mb->moveFlag=0;
- if(ext!=NULL && (flag&UCM_MOVE_TO_EXT)) {
+ if(ext!=nullptr && (flag&UCM_MOVE_TO_EXT)) {
/* add the mapping to the extension table */
ucm_addMapping(ext, mb, UCM_GET_CODE_POINTS(base, mb), UCM_GET_BYTES(base, mb));
}
@@ -575,19 +575,19 @@ ucm_checkBaseExt(UCMStates *baseStates,
/* check */
result=
- checkBaseExtUnicode(baseStates, base, ext, (UBool)(moveTarget!=NULL), intersectBase)|
- checkBaseExtBytes(baseStates, base, ext, (UBool)(moveTarget!=NULL), intersectBase);
+ checkBaseExtUnicode(baseStates, base, ext, (UBool)(moveTarget!=nullptr), intersectBase)|
+ checkBaseExtBytes(baseStates, base, ext, (UBool)(moveTarget!=nullptr), intersectBase);
if(result&HAS_ERRORS) {
return false;
}
if(result&NEEDS_MOVE) {
- ucm_moveMappings(ext, NULL);
+ ucm_moveMappings(ext, nullptr);
ucm_moveMappings(base, moveTarget);
ucm_sortTable(base);
ucm_sortTable(ext);
- if(moveTarget!=NULL) {
+ if(moveTarget!=nullptr) {
ucm_sortTable(moveTarget);
}
}
@@ -832,7 +832,7 @@ ucm_parseMappingLine(UCMapping *m,
m->u=codePoints[0];
} else {
UErrorCode errorCode=U_ZERO_ERROR;
- u_strFromUTF32(NULL, 0, &u16Length, codePoints, uLen, &errorCode);
+ u_strFromUTF32(nullptr, 0, &u16Length, codePoints, uLen, &errorCode);
if( (U_FAILURE(errorCode) && errorCode!=U_BUFFER_OVERFLOW_ERROR) ||
u16Length>UCNV_EXT_MAX_UCHARS
) {
@@ -882,7 +882,7 @@ ucm_parseMappingLine(UCMapping *m,
U_CAPI UCMTable * U_EXPORT2
ucm_openTable() {
UCMTable *table=(UCMTable *)uprv_malloc(sizeof(UCMTable));
- if(table==NULL) {
+ if(table==nullptr) {
fprintf(stderr, "ucm error: unable to allocate a UCMTable\n");
exit(U_MEMORY_ALLOCATION_ERROR);
}
@@ -893,7 +893,7 @@ ucm_openTable() {
U_CAPI void U_EXPORT2
ucm_closeTable(UCMTable *table) {
- if(table!=NULL) {
+ if(table!=nullptr) {
uprv_free(table->mappings);
uprv_free(table->codePoints);
uprv_free(table->bytes);
@@ -904,7 +904,7 @@ ucm_closeTable(UCMTable *table) {
U_CAPI void U_EXPORT2
ucm_resetTable(UCMTable *table) {
- if(table!=NULL) {
+ if(table!=nullptr) {
table->mappingsLength=0;
table->flagsType=0;
table->unicodeMask=0;
@@ -931,23 +931,23 @@ ucm_addMapping(UCMTable *table,
}
table->mappings=(UCMapping *)uprv_realloc(table->mappings,
table->mappingsCapacity*sizeof(UCMapping));
- if(table->mappings==NULL) {
+ if(table->mappings==nullptr) {
fprintf(stderr, "ucm error: unable to allocate %d UCMappings\n",
(int)table->mappingsCapacity);
exit(U_MEMORY_ALLOCATION_ERROR);
}
- if(table->reverseMap!=NULL) {
+ if(table->reverseMap!=nullptr) {
/* the reverseMap must be reallocated in a new sort */
uprv_free(table->reverseMap);
- table->reverseMap=NULL;
+ table->reverseMap=nullptr;
}
}
if(m->uLen>1 && table->codePointsCapacity==0) {
table->codePointsCapacity=10000;
table->codePoints=(UChar32 *)uprv_malloc(table->codePointsCapacity*4);
- if(table->codePoints==NULL) {
+ if(table->codePoints==nullptr) {
fprintf(stderr, "ucm error: unable to allocate %d UChar32s\n",
(int)table->codePointsCapacity);
exit(U_MEMORY_ALLOCATION_ERROR);
@@ -957,7 +957,7 @@ ucm_addMapping(UCMTable *table,
if(m->bLen>4 && table->bytesCapacity==0) {
table->bytesCapacity=10000;
table->bytes=(uint8_t *)uprv_malloc(table->bytesCapacity);
- if(table->bytes==NULL) {
+ if(table->bytes==nullptr) {
fprintf(stderr, "ucm error: unable to allocate %d bytes\n",
(int)table->bytesCapacity);
exit(U_MEMORY_ALLOCATION_ERROR);
@@ -1014,7 +1014,7 @@ ucm_addMapping(UCMTable *table,
U_CAPI UCMFile * U_EXPORT2
ucm_open() {
UCMFile *ucm=(UCMFile *)uprv_malloc(sizeof(UCMFile));
- if(ucm==NULL) {
+ if(ucm==nullptr) {
fprintf(stderr, "ucm error: unable to allocate a UCMFile\n");
exit(U_MEMORY_ALLOCATION_ERROR);
}
@@ -1034,7 +1034,7 @@ ucm_open() {
U_CAPI void U_EXPORT2
ucm_close(UCMFile *ucm) {
- if(ucm!=NULL) {
+ if(ucm!=nullptr) {
ucm_closeTable(ucm->base);
ucm_closeTable(ucm->ext);
uprv_free(ucm);
@@ -1102,7 +1102,7 @@ ucm_addMappingAuto(UCMFile *ucm, UBool forBase, UCMStates *baseStates,
return false;
}
- if(baseStates!=NULL) {
+ if(baseStates!=nullptr) {
/* check validity of the bytes and count the characters in them */
type=ucm_mappingType(baseStates, m, codePoints, bytes);
if(type<0) {
diff --git a/Build/source/libs/icu/icu-src/source/tools/toolutil/ucmstate.cpp b/Build/source/libs/icu/icu-src/source/tools/toolutil/ucmstate.cpp
index d46b73ed30c..08782f68d11 100644
--- a/Build/source/libs/icu/icu-src/source/tools/toolutil/ucmstate.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/toolutil/ucmstate.cpp
@@ -77,7 +77,7 @@ parseState(const char *s, int32_t state[256], uint32_t *pFlags) {
}
} else if(*s==0) {
/* empty state row: all-illegal */
- return NULL;
+ return nullptr;
}
for(;;) {
@@ -179,7 +179,7 @@ parseState(const char *s, int32_t state[256], uint32_t *pFlags) {
if(*s==',') {
++s;
} else {
- return *s==0 ? NULL : s;
+ return *s==0 ? nullptr : s;
}
}
}
@@ -195,7 +195,7 @@ ucm_addState(UCMStates *states, const char *s) {
error=parseState(s, states->stateTable[states->countStates],
&states->stateFlags[states->countStates]);
- if(error!=NULL) {
+ if(error!=nullptr) {
fprintf(stderr, "ucm error: parse error in state definition at '%s'\n", error);
exit(U_INVALID_TABLE_FORMAT);
}
@@ -704,7 +704,7 @@ compactToUnicode2(UCMStates *states,
/* make a copy of the state table */
oldStateTable=(int32_t (*)[256])uprv_malloc(states->countStates*1024);
- if(oldStateTable==NULL) {
+ if(oldStateTable==nullptr) {
fprintf(stderr, "cannot compact toUnicode: out of memory\n");
return;
}
@@ -747,15 +747,15 @@ compactToUnicode2(UCMStates *states,
/* allocate a new, smaller code units array */
oldUnicodeCodeUnits=*pUnicodeCodeUnits;
if(sum==0) {
- *pUnicodeCodeUnits=NULL;
- if(oldUnicodeCodeUnits!=NULL) {
+ *pUnicodeCodeUnits=nullptr;
+ if(oldUnicodeCodeUnits!=nullptr) {
uprv_free(oldUnicodeCodeUnits);
}
uprv_free(oldStateTable);
return;
}
*pUnicodeCodeUnits=(uint16_t *)uprv_malloc(sum*sizeof(uint16_t));
- if(*pUnicodeCodeUnits==NULL) {
+ if(*pUnicodeCodeUnits==nullptr) {
fprintf(stderr, "cannot compact toUnicode: out of memory allocating %ld 16-bit code units\n",
(long)sum);
/* revert to the old state table */
@@ -968,7 +968,7 @@ ucm_optimizeStates(UCMStates *states,
errorCode=U_ZERO_ERROR; /* nothing bad will happen... */
uprv_sortArray(toUFallbacks, countToUFallbacks,
sizeof(_MBCSToUFallback),
- compareFallbacks, NULL, false, &errorCode);
+ compareFallbacks, nullptr, false, &errorCode);
}
}
diff --git a/Build/source/libs/icu/icu-src/source/tools/toolutil/udbgutil.cpp b/Build/source/libs/icu/icu-src/source/tools/toolutil/udbgutil.cpp
index dcf71b28872..3f4bf3718ef 100644
--- a/Build/source/libs/icu/icu-src/source/tools/toolutil/udbgutil.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/toolutil/udbgutil.cpp
@@ -107,6 +107,9 @@ static const Field names_UCalendarDateFields[] =
FIELD_NAME_STR( LEN_UCAL, UCAL_JULIAN_DAY ),
FIELD_NAME_STR( LEN_UCAL, UCAL_MILLISECONDS_IN_DAY ),
FIELD_NAME_STR( LEN_UCAL, UCAL_IS_LEAP_MONTH ),
+#ifndef U_HIDE_DRAFT_API
+ FIELD_NAME_STR( LEN_UCAL, UCAL_ORDINAL_MONTH ),
+#endif // U_HIDE_DRAFT_API
};
@@ -233,7 +236,7 @@ static const Field names_UDebugEnumType[] =
#define COUNT_FAIL_CASE(x) case UDBG_##x: return -1;
#define FIELD_CASE(x) case UDBG_##x: return names_##x;
-#define FIELD_FAIL_CASE(x) case UDBG_##x: return NULL;
+#define FIELD_FAIL_CASE(x) case UDBG_##x: return nullptr;
// low level
@@ -281,7 +284,7 @@ static const Field* _udbg_enumFields(UDebugEnumType type) {
FIELD_CASE(UColAttributeValue)
#endif
default:
- return NULL;
+ return nullptr;
}
}
@@ -298,11 +301,11 @@ int32_t udbg_enumExpectedCount(UDebugEnumType type) {
const char * udbg_enumName(UDebugEnumType type, int32_t field) {
if(field<0 ||
field>=_udbg_enumCount(type,false)) { // also will catch unsupported items
- return NULL;
+ return nullptr;
} else {
const Field *fields = _udbg_enumFields(type);
- if(fields == NULL) {
- return NULL;
+ if(fields == nullptr) {
+ return nullptr;
} else {
return fields[field].str + fields[field].prefix;
}
@@ -315,7 +318,7 @@ int32_t udbg_enumArrayValue(UDebugEnumType type, int32_t field) {
return -1;
} else {
const Field *fields = _udbg_enumFields(type);
- if(fields == NULL) {
+ if(fields == nullptr) {
return -1;
} else {
return fields[field].num;
@@ -328,7 +331,7 @@ int32_t udbg_enumByName(UDebugEnumType type, const char *value) {
return -1; // type out of range
}
const Field *fields = _udbg_enumFields(type);
- if (fields != NULL) {
+ if (fields != nullptr) {
for(int32_t field = 0;field<_udbg_enumCount(type, false);field++) {
if(!strcmp(value, fields[field].str + fields[field].prefix)) {
return fields[field].num;
@@ -349,7 +352,7 @@ int32_t udbg_enumByName(UDebugEnumType type, const char *value) {
/**
* Print the current platform
*/
-U_CAPI const char *udbg_getPlatform(void)
+U_CAPI const char *udbg_getPlatform()
{
#if U_PLATFORM_USES_ONLY_WIN32_API
return "Windows";
@@ -398,10 +401,10 @@ paramEmpty(const USystemParams * /* param */, char *target, int32_t targetCapaci
U_CAPI int32_t
paramStatic(const USystemParams *param, char *target, int32_t targetCapacity, UErrorCode *status) {
- if(param->paramStr==NULL) return paramEmpty(param,target,targetCapacity,status);
+ if(param->paramStr==nullptr) return paramEmpty(param,target,targetCapacity,status);
if(U_FAILURE(*status))return 0;
int32_t len = static_cast<int32_t>(uprv_strlen(param->paramStr));
- if(target!=NULL) {
+ if(target!=nullptr) {
uprv_strncpy(target,param->paramStr,uprv_min(len,targetCapacity));
}
return u_terminateChars(target, targetCapacity, len, status);
@@ -410,17 +413,17 @@ paramStatic(const USystemParams *param, char *target, int32_t targetCapacity, UE
static const char *nullString = "(null)";
static int32_t stringToStringBuffer(char *target, int32_t targetCapacity, const char *str, UErrorCode *status) {
- if(str==NULL) str=nullString;
+ if(str==nullptr) str=nullString;
int32_t len = static_cast<int32_t>(uprv_strlen(str));
if (U_SUCCESS(*status)) {
- if(target!=NULL) {
+ if(target!=nullptr) {
uprv_strncpy(target,str,uprv_min(len,targetCapacity));
}
} else {
const char *s = u_errorName(*status);
len = static_cast<int32_t>(uprv_strlen(s));
- if(target!=NULL) {
+ if(target!=nullptr) {
uprv_strncpy(target,s,uprv_min(len,targetCapacity));
}
}
@@ -437,7 +440,7 @@ static int32_t integerToStringBuffer(char *target, int32_t targetCapacity, int32
U_CAPI int32_t
paramInteger(const USystemParams *param, char *target, int32_t targetCapacity, UErrorCode *status) {
if(U_FAILURE(*status))return 0;
- if(param->paramStr==NULL || param->paramStr[0]=='d') {
+ if(param->paramStr==nullptr || param->paramStr[0]=='d') {
return integerToStringBuffer(target,targetCapacity,param->paramInt, 10,status);
} else if(param->paramStr[0]=='x') {
return integerToStringBuffer(target,targetCapacity,param->paramInt, 16,status);
@@ -472,7 +475,7 @@ paramCldrVersion(const USystemParams * /* param */, char *target, int32_t target
U_CAPI int32_t
paramTimezoneDefault(const USystemParams * /* param */, char *target, int32_t targetCapacity, UErrorCode *status) {
if(U_FAILURE(*status))return 0;
- UChar buf[100];
+ char16_t buf[100];
char buf2[100];
int32_t len;
@@ -517,20 +520,20 @@ static const USystemParams systemParams[] = {
{ "version", paramStatic, U_ICU_VERSION,0 },
{ "version.unicode", paramStatic, U_UNICODE_VERSION,0 },
{ "platform.number", paramInteger, "d",U_PLATFORM},
- { "platform.type", paramPlatform, NULL ,0},
- { "locale.default", paramLocaleDefault, NULL, 0},
- { "locale.default.bcp47", paramLocaleDefaultBcp47, NULL, 0},
+ { "platform.type", paramPlatform, nullptr ,0},
+ { "locale.default", paramLocaleDefault, nullptr, 0},
+ { "locale.default.bcp47", paramLocaleDefaultBcp47, nullptr, 0},
#if !UCONFIG_NO_CONVERSION
- { "converter.default", paramConverterDefault, NULL, 0},
+ { "converter.default", paramConverterDefault, nullptr, 0},
#endif
{ "icudata.name", paramStatic, U_ICUDATA_NAME, 0},
- { "icudata.path", paramIcudataPath, NULL, 0},
+ { "icudata.path", paramIcudataPath, nullptr, 0},
- { "cldr.version", paramCldrVersion, NULL, 0},
+ { "cldr.version", paramCldrVersion, nullptr, 0},
#if !UCONFIG_NO_FORMATTING
- { "tz.version", paramTimezoneVersion, NULL, 0},
- { "tz.default", paramTimezoneDefault, NULL, 0},
+ { "tz.version", paramTimezoneVersion, nullptr, 0},
+ { "tz.default", paramTimezoneDefault, nullptr, 0},
#endif
{ "cpu.bits", paramInteger, "d", (sizeof(void*))*8},
@@ -564,7 +567,7 @@ U_CAPI const char *udbg_getSystemParameterNameByIndex(int32_t i) {
if(i>=0 && i < (int32_t)U_SYSPARAM_COUNT) {
return systemParams[i].paramName;
} else {
- return NULL;
+ return nullptr;
}
}
@@ -582,7 +585,7 @@ U_CAPI void udbg_writeIcuInfo(FILE *out) {
/* todo: API for writing DTD? */
fprintf(out, " <icuSystemParams type=\"icu4c\">\n");
const char *paramName;
- for(int32_t i=0;(paramName=udbg_getSystemParameterNameByIndex(i))!=NULL;i++) {
+ for(int32_t i=0;(paramName=udbg_getSystemParameterNameByIndex(i))!=nullptr;i++) {
UErrorCode status2 = U_ZERO_ERROR;
udbg_getSystemParameterValueByIndex(i, str,2000,&status2);
if(U_SUCCESS(status2)) {
@@ -611,7 +614,7 @@ class KnownIssues {
public:
KnownIssues();
~KnownIssues();
- void add(const char *ticket, const char *where, const UChar *msg, UBool *firstForTicket, UBool *firstForWhere);
+ void add(const char *ticket, const char *where, const char16_t *msg, UBool *firstForTicket, UBool *firstForWhere);
void add(const char *ticket, const char *where, const char *msg, UBool *firstForTicket, UBool *firstForWhere);
UBool print();
private:
@@ -646,24 +649,24 @@ static std::string mapTicketId(const char *ticketStr) {
return ticket;
}
-void KnownIssues::add(const char *ticketStr, const char *where, const UChar *msg, UBool *firstForTicket, UBool *firstForWhere)
+void KnownIssues::add(const char *ticketStr, const char *where, const char16_t *msg, UBool *firstForTicket, UBool *firstForWhere)
{
const std::string ticket = mapTicketId(ticketStr);
if(fTable.find(ticket) == fTable.end()) {
- if(firstForTicket!=NULL) *firstForTicket = true;
+ if(firstForTicket!=nullptr) *firstForTicket = true;
fTable[ticket] = std::map < std::string, std::set < std::string > >();
} else {
- if(firstForTicket!=NULL) *firstForTicket = false;
+ if(firstForTicket!=nullptr) *firstForTicket = false;
}
- if(where==NULL) return;
+ if(where==nullptr) return;
if(fTable[ticket].find(where) == fTable[ticket].end()) {
- if(firstForWhere!=NULL) *firstForWhere = true;
+ if(firstForWhere!=nullptr) *firstForWhere = true;
fTable[ticket][where] = std::set < std::string >();
} else {
- if(firstForWhere!=NULL) *firstForWhere = false;
+ if(firstForWhere!=nullptr) *firstForWhere = false;
}
- if(msg==NULL || !*msg) return;
+ if(msg==nullptr || !*msg) return;
const icu::UnicodeString ustr(msg);
@@ -674,20 +677,20 @@ void KnownIssues::add(const char *ticketStr, const char *where, const char *msg,
{
const std::string ticket = mapTicketId(ticketStr);
if(fTable.find(ticket) == fTable.end()) {
- if(firstForTicket!=NULL) *firstForTicket = true;
+ if(firstForTicket!=nullptr) *firstForTicket = true;
fTable[ticket] = std::map < std::string, std::set < std::string > >();
} else {
- if(firstForTicket!=NULL) *firstForTicket = false;
+ if(firstForTicket!=nullptr) *firstForTicket = false;
}
- if(where==NULL) return;
+ if(where==nullptr) return;
if(fTable[ticket].find(where) == fTable[ticket].end()) {
- if(firstForWhere!=NULL) *firstForWhere = true;
+ if(firstForWhere!=nullptr) *firstForWhere = true;
fTable[ticket][where] = std::set < std::string >();
} else {
- if(firstForWhere!=NULL) *firstForWhere = false;
+ if(firstForWhere!=nullptr) *firstForWhere = false;
}
- if(msg==NULL || !*msg) return;
+ if(msg==nullptr || !*msg) return;
std::string str(msg);
fTable[ticket][where].insert(str);
@@ -726,10 +729,10 @@ UBool KnownIssues::print()
return true;
}
-U_CAPI void *udbg_knownIssue_openU(void *ptr, const char *ticket, char *where, const UChar *msg, UBool *firstForTicket,
+U_CAPI void *udbg_knownIssue_openU(void *ptr, const char *ticket, char *where, const char16_t *msg, UBool *firstForTicket,
UBool *firstForWhere) {
KnownIssues *t = static_cast<KnownIssues*>(ptr);
- if(t==NULL) {
+ if(t==nullptr) {
t = new KnownIssues();
}
@@ -741,7 +744,7 @@ U_CAPI void *udbg_knownIssue_openU(void *ptr, const char *ticket, char *where, c
U_CAPI void *udbg_knownIssue_open(void *ptr, const char *ticket, char *where, const char *msg, UBool *firstForTicket,
UBool *firstForWhere) {
KnownIssues *t = static_cast<KnownIssues*>(ptr);
- if(t==NULL) {
+ if(t==nullptr) {
t = new KnownIssues();
}
@@ -752,7 +755,7 @@ U_CAPI void *udbg_knownIssue_open(void *ptr, const char *ticket, char *where, co
U_CAPI UBool udbg_knownIssue_print(void *ptr) {
KnownIssues *t = static_cast<KnownIssues*>(ptr);
- if(t==NULL) {
+ if(t==nullptr) {
return false;
} else {
t->print();
diff --git a/Build/source/libs/icu/icu-src/source/tools/toolutil/unewdata.cpp b/Build/source/libs/icu/icu-src/source/tools/toolutil/unewdata.cpp
index 43ff16b6eec..27414d2eba2 100644
--- a/Build/source/libs/icu/icu-src/source/tools/toolutil/unewdata.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/toolutil/unewdata.cpp
@@ -43,18 +43,18 @@ udata_create(const char *dir, const char *type, const char *name,
uint8_t bytes[16];
int32_t length;
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
- return NULL;
- } else if(name==NULL || *name==0 || pInfo==NULL) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
+ return nullptr;
+ } else if(name==nullptr || *name==0 || pInfo==nullptr) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
- return NULL;
+ return nullptr;
}
/* allocate the data structure */
pData=(UNewDataMemory *)uprv_malloc(sizeof(UNewDataMemory));
- if(pData==NULL) {
+ if(pData==nullptr) {
*pErrorCode=U_MEMORY_ALLOCATION_ERROR;
- return NULL;
+ return nullptr;
}
char dirSepChar = U_FILE_SEP_CHAR;
@@ -69,7 +69,7 @@ udata_create(const char *dir, const char *type, const char *name,
/* Check that the full path won't be too long */
length = 0; /* Start with nothing */
- if(dir != NULL && *dir !=0) /* Add directory length if one was given */
+ if(dir != nullptr && *dir !=0) /* Add directory length if one was given */
{
length += static_cast<int32_t>(strlen(dir));
@@ -80,7 +80,7 @@ udata_create(const char *dir, const char *type, const char *name,
}
length += static_cast<int32_t>(strlen(name)); /* Add the filename length */
- if(type != NULL && *type !=0) { /* Add directory length if given */
+ if(type != nullptr && *type !=0) { /* Add directory length if given */
length += static_cast<int32_t>(strlen(type));
}
@@ -90,11 +90,11 @@ udata_create(const char *dir, const char *type, const char *name,
{
*pErrorCode = U_BUFFER_OVERFLOW_ERROR;
uprv_free(pData);
- return NULL;
+ return nullptr;
}
/* open the output file */
- if(dir!=NULL && *dir!=0) { /* if dir has a value, we prepend it to the filename */
+ if(dir!=nullptr && *dir!=0) { /* if dir has a value, we prepend it to the filename */
char *p=filename+strlen(dir);
uprv_strcpy(filename, dir);
if (*(p-1)!=dirSepChar) {
@@ -105,20 +105,20 @@ udata_create(const char *dir, const char *type, const char *name,
filename[0]=0;
}
uprv_strcat(filename, name);
- if(type!=NULL && *type!=0) {
+ if(type!=nullptr && *type!=0) {
uprv_strcat(filename, ".");
uprv_strcat(filename, type);
}
pData->file=T_FileStream_open(filename, "wb");
- if(pData->file==NULL) {
+ if(pData->file==nullptr) {
uprv_free(pData);
*pErrorCode=U_FILE_ACCESS_ERROR;
- return NULL;
+ return nullptr;
}
/* write the header information */
headerSize=(uint16_t)(pInfo->size+4);
- if(comment!=NULL && *comment!=0) {
+ if(comment!=nullptr && *comment!=0) {
commentLength=(uint16_t)(uprv_strlen(comment)+1);
headerSize+=commentLength;
} else {
@@ -154,12 +154,12 @@ U_CAPI uint32_t U_EXPORT2
udata_finish(UNewDataMemory *pData, UErrorCode *pErrorCode) {
uint32_t fileLength=0;
- if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
+ if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return 0;
}
- if(pData!=NULL) {
- if(pData->file!=NULL) {
+ if(pData!=nullptr) {
+ if(pData->file!=nullptr) {
/* fflush(pData->file);*/
fileLength=T_FileStream_size(pData->file);
if(T_FileStream_error(pData->file)) {
@@ -193,7 +193,7 @@ static const UDataInfo dummyDataInfo = {
U_CAPI void U_EXPORT2
udata_createDummy(const char *dir, const char *type, const char *name, UErrorCode *pErrorCode) {
if(U_SUCCESS(*pErrorCode)) {
- udata_finish(udata_create(dir, type, name, &dummyDataInfo, NULL, pErrorCode), pErrorCode);
+ udata_finish(udata_create(dir, type, name, &dummyDataInfo, nullptr, pErrorCode), pErrorCode);
if(U_FAILURE(*pErrorCode)) {
fprintf(stderr, "error %s writing dummy data file %s" U_FILE_SEP_STRING "%s.%s\n",
u_errorName(*pErrorCode), dir, name, type);
@@ -204,28 +204,28 @@ udata_createDummy(const char *dir, const char *type, const char *name, UErrorCod
U_CAPI void U_EXPORT2
udata_write8(UNewDataMemory *pData, uint8_t byte) {
- if(pData!=NULL && pData->file!=NULL) {
+ if(pData!=nullptr && pData->file!=nullptr) {
T_FileStream_write(pData->file, &byte, 1);
}
}
U_CAPI void U_EXPORT2
udata_write16(UNewDataMemory *pData, uint16_t word) {
- if(pData!=NULL && pData->file!=NULL) {
+ if(pData!=nullptr && pData->file!=nullptr) {
T_FileStream_write(pData->file, &word, 2);
}
}
U_CAPI void U_EXPORT2
udata_write32(UNewDataMemory *pData, uint32_t wyde) {
- if(pData!=NULL && pData->file!=NULL) {
+ if(pData!=nullptr && pData->file!=nullptr) {
T_FileStream_write(pData->file, &wyde, 4);
}
}
U_CAPI void U_EXPORT2
udata_writeBlock(UNewDataMemory *pData, const void *s, int32_t length) {
- if(pData!=NULL && pData->file!=NULL) {
+ if(pData!=nullptr && pData->file!=nullptr) {
if(length>0) {
T_FileStream_write(pData->file, s, length);
}
@@ -240,7 +240,7 @@ udata_writePadding(UNewDataMemory *pData, int32_t length) {
0xaa, 0xaa, 0xaa, 0xaa,
0xaa, 0xaa, 0xaa, 0xaa
};
- if(pData!=NULL && pData->file!=NULL) {
+ if(pData!=nullptr && pData->file!=nullptr) {
while(length>=16) {
T_FileStream_write(pData->file, padding, 16);
length-=16;
@@ -253,7 +253,7 @@ udata_writePadding(UNewDataMemory *pData, int32_t length) {
U_CAPI void U_EXPORT2
udata_writeString(UNewDataMemory *pData, const char *s, int32_t length) {
- if(pData!=NULL && pData->file!=NULL) {
+ if(pData!=nullptr && pData->file!=nullptr) {
if(length==-1) {
length=(int32_t)uprv_strlen(s);
}
@@ -264,13 +264,13 @@ udata_writeString(UNewDataMemory *pData, const char *s, int32_t length) {
}
U_CAPI void U_EXPORT2
-udata_writeUString(UNewDataMemory *pData, const UChar *s, int32_t length) {
- if(pData!=NULL && pData->file!=NULL) {
+udata_writeUString(UNewDataMemory *pData, const char16_t *s, int32_t length) {
+ if(pData!=nullptr && pData->file!=nullptr) {
if(length==-1) {
length=u_strlen(s);
}
if(length>0) {
- T_FileStream_write(pData->file, s, length*sizeof(UChar));
+ T_FileStream_write(pData->file, s, length*sizeof(char16_t));
}
}
}
diff --git a/Build/source/libs/icu/icu-src/source/tools/toolutil/uoptions.cpp b/Build/source/libs/icu/icu-src/source/tools/toolutil/uoptions.cpp
index 53a77bcc4cc..808164ae4db 100644
--- a/Build/source/libs/icu/icu-src/source/tools/toolutil/uoptions.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/toolutil/uoptions.cpp
@@ -33,7 +33,7 @@ u_parseArgs(int argc, char* argv[],
arg=argv[i];
if(!stopOptions && *arg=='-' && (c=arg[1])!=0) {
/* process an option */
- UOption *option=NULL;
+ UOption *option=nullptr;
arg+=2;
if(c=='-') {
/* process a long option */
@@ -49,7 +49,7 @@ u_parseArgs(int argc, char* argv[],
break;
}
}
- if(option==NULL) {
+ if(option==nullptr) {
/* no option matches */
return -i;
}
@@ -67,7 +67,7 @@ u_parseArgs(int argc, char* argv[],
}
}
- if(option->optionFn!=NULL && option->optionFn(option->context, option)<0) {
+ if(option->optionFn!=nullptr && option->optionFn(option->context, option)<0) {
/* the option function was called and returned an error */
option->doesOccur=0;
return -i;
@@ -84,7 +84,7 @@ u_parseArgs(int argc, char* argv[],
break;
}
}
- if(option==NULL) {
+ if(option==nullptr) {
/* no option matches */
return -i;
}
@@ -109,14 +109,14 @@ u_parseArgs(int argc, char* argv[],
}
}
- if(option->optionFn!=NULL && option->optionFn(option->context, option)<0) {
+ if(option->optionFn!=nullptr && option->optionFn(option->context, option)<0) {
/* the option function was called and returned an error */
option->doesOccur=0;
return -i;
}
/* get the next option letter */
- option=NULL;
+ option=nullptr;
c=*arg++;
} while(c!=0);
}
diff --git a/Build/source/libs/icu/icu-src/source/tools/toolutil/uparse.cpp b/Build/source/libs/icu/icu-src/source/tools/toolutil/uparse.cpp
index 486fcc9a985..5aee48b5a45 100644
--- a/Build/source/libs/icu/icu-src/source/tools/toolutil/uparse.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/toolutil/uparse.cpp
@@ -85,23 +85,23 @@ u_parseDelimitedFile(const char *filename, char delimiter,
return;
}
- if(fields==NULL || lineFn==NULL || fieldCount<=0) {
+ if(fields==nullptr || lineFn==nullptr || fieldCount<=0) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return;
}
- if(filename==NULL || *filename==0 || (*filename=='-' && filename[1]==0)) {
- filename=NULL;
+ if(filename==nullptr || *filename==0 || (*filename=='-' && filename[1]==0)) {
+ filename=nullptr;
file=T_FileStream_stdin();
} else {
file=T_FileStream_open(filename, "r");
}
- if(file==NULL) {
+ if(file==nullptr) {
*pErrorCode=U_FILE_ACCESS_ERROR;
return;
}
- while(T_FileStream_readLine(file, line, sizeof(line))!=NULL) {
+ while(T_FileStream_readLine(file, line, sizeof(line))!=nullptr) {
/* remove trailing newline characters */
length=(int32_t)(u_rtrim(line)-line);
@@ -124,7 +124,7 @@ u_parseDelimitedFile(const char *filename, char delimiter,
/* remove in-line comments */
limit=uprv_strchr(start, '#');
- if(limit!=NULL) {
+ if(limit!=nullptr) {
/* get white space before the pound sign */
while(limit>start && U_IS_INV_WHITESPACE(*(limit-1))) {
--limit;
@@ -175,7 +175,7 @@ u_parseDelimitedFile(const char *filename, char delimiter,
}
}
- if(filename!=NULL) {
+ if(filename!=nullptr) {
T_FileStream_close(file);
}
}
@@ -196,7 +196,7 @@ u_parseCodePoints(const char *s,
if(U_FAILURE(*pErrorCode)) {
return 0;
}
- if(s==NULL || destCapacity<0 || (destCapacity>0 && dest==NULL)) {
+ if(s==nullptr || destCapacity<0 || (destCapacity>0 && dest==nullptr)) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
@@ -235,7 +235,7 @@ u_parseCodePoints(const char *s,
*/
U_CAPI int32_t U_EXPORT2
u_parseString(const char *s,
- UChar *dest, int32_t destCapacity,
+ char16_t *dest, int32_t destCapacity,
uint32_t *pFirst,
UErrorCode *pErrorCode) {
char *end;
@@ -245,12 +245,12 @@ u_parseString(const char *s,
if(U_FAILURE(*pErrorCode)) {
return 0;
}
- if(s==NULL || destCapacity<0 || (destCapacity>0 && dest==NULL)) {
+ if(s==nullptr || destCapacity<0 || (destCapacity>0 && dest==nullptr)) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
- if(pFirst!=NULL) {
+ if(pFirst!=nullptr) {
*pFirst=0xffffffff;
}
@@ -276,9 +276,9 @@ u_parseString(const char *s,
}
/* store the first code point */
- if(pFirst!=NULL) {
+ if(pFirst!=nullptr) {
*pFirst=value;
- pFirst=NULL;
+ pFirst=nullptr;
}
/* append it to the destination array */
@@ -305,7 +305,7 @@ u_parseCodePointRangeAnyTerminator(const char *s,
if(U_FAILURE(*pErrorCode)) {
return 0;
}
- if(s==NULL || pStart==NULL || pEnd==NULL) {
+ if(s==nullptr || pStart==nullptr || pEnd==nullptr) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return 0;
}
diff --git a/Build/source/libs/icu/icu-src/source/tools/toolutil/writesrc.cpp b/Build/source/libs/icu/icu-src/source/tools/toolutil/writesrc.cpp
index 0bd8b85bb8a..55c2f277b33 100644
--- a/Build/source/libs/icu/icu-src/source/tools/toolutil/writesrc.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/toolutil/writesrc.cpp
@@ -19,8 +19,17 @@
*/
#include <stdio.h>
-#include <inttypes.h>
#include <time.h>
+
+// The C99 standard suggested that C++ implementations not define PRId64 etc. constants
+// unless this macro is defined.
+// See the Notes at https://en.cppreference.com/w/cpp/types/integer .
+// Similar to defining __STDC_LIMIT_MACROS in unicode/ptypes.h .
+#ifndef __STDC_FORMAT_MACROS
+# define __STDC_FORMAT_MACROS
+#endif
+#include <cinttypes>
+
#include "unicode/utypes.h"
#include "unicode/putil.h"
#include "unicode/ucptrie.h"
@@ -49,7 +58,7 @@ usrc_createWithoutHeader(const char *path, const char *filename) {
FILE *f;
char c;
- if(path==NULL) {
+ if(path==nullptr) {
p=filename;
} else {
/* concatenate path and filename, with U_FILE_SEP_CHAR in between if necessary */
@@ -63,11 +72,11 @@ usrc_createWithoutHeader(const char *path, const char *filename) {
}
f=fopen(p, "w");
- if (f==NULL) {
+ if (f==nullptr) {
fprintf(
stderr,
"usrc_create(%s, %s): unable to create file\n",
- path!=NULL ? path : "", filename);
+ path!=nullptr ? path : "", filename);
}
return f;
}
@@ -75,7 +84,7 @@ usrc_createWithoutHeader(const char *path, const char *filename) {
U_CAPI FILE * U_EXPORT2
usrc_create(const char *path, const char *filename, int32_t copyrightYear, const char *generator) {
FILE *f = usrc_createWithoutHeader(path, filename);
- if (f == NULL) {
+ if (f == nullptr) {
return f;
}
usrc_writeCopyrightHeader(f, "//", copyrightYear);
@@ -86,7 +95,7 @@ usrc_create(const char *path, const char *filename, int32_t copyrightYear, const
U_CAPI FILE * U_EXPORT2
usrc_createTextData(const char *path, const char *filename, int32_t copyrightYear, const char *generator) {
FILE *f = usrc_createWithoutHeader(path, filename);
- if (f == NULL) {
+ if (f == nullptr) {
return f;
}
usrc_writeCopyrightHeader(f, "#", copyrightYear);
@@ -127,7 +136,7 @@ usrc_writeFileNameGeneratedBy(
time(&t);
lt=localtime(&t);
- if(generator==NULL) {
+ if(generator==nullptr) {
strftime(buffer, sizeof(buffer), "%Y-%m-%d", lt);
fprintf(f, pattern, prefix, prefix, filename, prefix, prefix, buffer);
} else {
@@ -148,10 +157,10 @@ usrc_writeArray(FILE *f,
int64_t value; // Signed due to TOML!
int32_t i, col;
- p8=NULL;
- p16=NULL;
- p32=NULL;
- p64=NULL;
+ p8=nullptr;
+ p16=nullptr;
+ p32=nullptr;
+ p64=nullptr;
switch(width) {
case 8:
p8=(const uint8_t *)p;
@@ -169,7 +178,7 @@ usrc_writeArray(FILE *f,
fprintf(stderr, "usrc_writeArray(width=%ld) unrecognized width\n", (long)width);
return;
}
- if(prefix!=NULL) {
+ if(prefix!=nullptr) {
fprintf(f, prefix, (long)length);
}
for(i=col=0; i<length; ++i, ++col) {
@@ -201,7 +210,7 @@ usrc_writeArray(FILE *f,
}
fprintf(f, value<=9 ? "%" PRId64 : "0x%" PRIx64, value);
}
- if(postfix!=NULL) {
+ if(postfix!=nullptr) {
fputs(postfix, f);
}
}
@@ -211,7 +220,7 @@ usrc_writeUTrie2Arrays(FILE *f,
const char *indexPrefix, const char *data32Prefix,
const UTrie2 *pTrie,
const char *postfix) {
- if(pTrie->data32==NULL) {
+ if(pTrie->data32==nullptr) {
/* 16-bit trie */
usrc_writeArray(f, indexPrefix, pTrie->index, 16, pTrie->indexLength+pTrie->dataLength, "", postfix);
} else {
@@ -227,16 +236,16 @@ usrc_writeUTrie2Struct(FILE *f,
const UTrie2 *pTrie,
const char *indexName, const char *data32Name,
const char *postfix) {
- if(prefix!=NULL) {
+ if(prefix!=nullptr) {
fputs(prefix, f);
}
- if(pTrie->data32==NULL) {
+ if(pTrie->data32==nullptr) {
/* 16-bit trie */
fprintf(
f,
" %s,\n" /* index */
" %s+%ld,\n" /* data16 */
- " NULL,\n", /* data32 */
+ " nullptr,\n", /* data32 */
indexName,
indexName,
(long)pTrie->indexLength);
@@ -245,7 +254,7 @@ usrc_writeUTrie2Struct(FILE *f,
fprintf(
f,
" %s,\n" /* index */
- " NULL,\n" /* data16 */
+ " nullptr,\n" /* data16 */
" %s,\n", /* data32 */
indexName,
data32Name);
@@ -260,12 +269,12 @@ usrc_writeUTrie2Struct(FILE *f,
" 0x%lx,\n" /* errorValue */
" 0x%lx,\n" /* highStart */
" 0x%lx,\n" /* highValueIndex */
- " NULL, 0, false, false, 0, NULL\n",
+ " nullptr, 0, false, false, 0, nullptr\n",
(long)pTrie->indexLength, (long)pTrie->dataLength,
(short)pTrie->index2NullOffset, (short)pTrie->dataNullOffset,
(long)pTrie->initialValue, (long)pTrie->errorValue,
(long)pTrie->highStart, (long)pTrie->highValueIndex);
- if(postfix!=NULL) {
+ if(postfix!=nullptr) {
fputs(postfix, f);
}
}
@@ -292,7 +301,7 @@ usrc_writeUCPTrieStruct(FILE *f,
const char *indexName, const char *dataName,
const char *postfix,
UTargetSyntax syntax) {
- if(prefix!=NULL) {
+ if(prefix!=nullptr) {
fputs(prefix, f);
}
if (syntax == UPRV_TARGET_SYNTAX_CCODE) {
@@ -330,7 +339,7 @@ usrc_writeUCPTrieStruct(FILE *f,
pTrie->type, pTrie->valueWidth,
pTrie->index3NullOffset, (long)pTrie->dataNullOffset,
(long)pTrie->nullValue);
- if(postfix!=NULL) {
+ if(postfix!=nullptr) {
fputs(postfix, f);
}
}
@@ -345,14 +354,14 @@ usrc_writeUCPTrie(FILE *f, const char *name, const UCPTrie *pTrie, UTargetSyntax
switch (syntax) {
case UPRV_TARGET_SYNTAX_CCODE:
- sprintf(line, "static const uint16_t %s_trieIndex[%%ld]={\n", name);
- sprintf(line2, "static const uint%d_t %s_trieData[%%ld]={\n", (int)width, name);
- sprintf(line3, "\n};\n\n");
+ snprintf(line, sizeof(line), "static const uint16_t %s_trieIndex[%%ld]={\n", name);
+ snprintf(line2, sizeof(line2), "static const uint%d_t %s_trieData[%%ld]={\n", (int)width, name);
+ snprintf(line3, sizeof(line3), "\n};\n\n");
break;
case UPRV_TARGET_SYNTAX_TOML:
- sprintf(line, "index = [\n ");
- sprintf(line2, "data_%d = [\n ", (int)width);
- sprintf(line3, "\n]\n");
+ snprintf(line, sizeof(line), "index = [\n ");
+ snprintf(line2, sizeof(line2), "data_%d = [\n ", (int)width);
+ snprintf(line3, sizeof(line3), "\n]\n");
break;
default:
UPRV_UNREACHABLE_EXIT;
@@ -361,10 +370,10 @@ usrc_writeUCPTrie(FILE *f, const char *name, const UCPTrie *pTrie, UTargetSyntax
switch (syntax) {
case UPRV_TARGET_SYNTAX_CCODE:
- sprintf(line, "static const UCPTrie %s_trie={\n", name);
- sprintf(line2, "%s_trieIndex", name);
- sprintf(line3, "%s_trieData", name);
- sprintf(line4, "};\n\n");
+ snprintf(line, sizeof(line), "static const UCPTrie %s_trie={\n", name);
+ snprintf(line2, sizeof(line2), "%s_trieIndex", name);
+ snprintf(line3, sizeof(line3), "%s_trieData", name);
+ snprintf(line4, sizeof(line4), "};\n\n");
break;
case UPRV_TARGET_SYNTAX_TOML:
line[0] = 0;
@@ -447,7 +456,7 @@ usrc_writeArrayOfMostlyInvChars(FILE *f,
int32_t i, col;
int prev2, prev, c;
- if(prefix!=NULL) {
+ if(prefix!=nullptr) {
fprintf(f, prefix, (long)length);
}
prev2=prev=-1;
@@ -473,14 +482,14 @@ usrc_writeArrayOfMostlyInvChars(FILE *f,
prev2=prev;
prev=c;
}
- if(postfix!=NULL) {
+ if(postfix!=nullptr) {
fputs(postfix, f);
}
}
U_CAPI void U_EXPORT2
usrc_writeStringAsASCII(FILE *f,
- const UChar* ptr, int32_t length,
+ const char16_t* ptr, int32_t length,
UTargetSyntax) {
// For now, assume all UTargetSyntax values are valid here.
fprintf(f, "\"");
diff --git a/Build/source/libs/icu/icu-src/source/tools/toolutil/xmlparser.cpp b/Build/source/libs/icu/icu-src/source/tools/toolutil/xmlparser.cpp
index 104a99c93e7..edb85bdab0e 100644
--- a/Build/source/libs/icu/icu-src/source/tools/toolutil/xmlparser.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/toolutil/xmlparser.cpp
@@ -146,14 +146,14 @@ UXMLParser::UXMLParser(UErrorCode &status) :
fNames(status),
fElementStack(status),
- fOneLF((UChar)0x0a) // Plain new-line string, used in new line normalization.
+ fOneLF((char16_t)0x0a) // Plain new-line string, used in new line normalization.
{
}
UXMLParser *
UXMLParser::createParser(UErrorCode &errorCode) {
if (U_FAILURE(errorCode)) {
- return NULL;
+ return nullptr;
} else {
return new UXMLParser(errorCode);
}
@@ -168,18 +168,18 @@ UXMLParser::parseFile(const char *filename, UErrorCode &errorCode) {
const char *charset, *pb;
UnicodeString src;
UConverter *cnv;
- UChar *buffer, *pu;
+ char16_t *buffer, *pu;
int32_t fileLength, bytesLength, length, capacity;
UBool flush;
if(U_FAILURE(errorCode)) {
- return NULL;
+ return nullptr;
}
f=T_FileStream_open(filename, "rb");
- if(f==NULL) {
+ if(f==nullptr) {
errorCode=U_FILE_ACCESS_ERROR;
- return NULL;
+ return nullptr;
}
bytesLength=T_FileStream_read(f, bytes, (int32_t)sizeof(bytes));
@@ -197,8 +197,8 @@ UXMLParser::parseFile(const char *filename, UErrorCode &errorCode) {
* 2. treat as ISO-8859-1 and read XML encoding="charser"
* 3. default to UTF-8
*/
- charset=ucnv_detectUnicodeSignature(bytes, bytesLength, NULL, &errorCode);
- if(U_SUCCESS(errorCode) && charset!=NULL) {
+ charset=ucnv_detectUnicodeSignature(bytes, bytesLength, nullptr, &errorCode);
+ if(U_SUCCESS(errorCode) && charset!=nullptr) {
// open converter according to Unicode signature
cnv=ucnv_open(charset, &errorCode);
} else {
@@ -210,7 +210,7 @@ UXMLParser::parseFile(const char *filename, UErrorCode &errorCode) {
}
buffer=toUCharPtr(src.getBuffer(bytesLength));
- if(buffer==NULL) {
+ if(buffer==nullptr) {
// unexpected failure to reserve some string capacity
errorCode=U_MEMORY_ALLOCATION_ERROR;
goto exit;
@@ -221,10 +221,10 @@ UXMLParser::parseFile(const char *filename, UErrorCode &errorCode) {
cnv,
&pu, buffer+src.getCapacity(),
&pb, bytes+bytesLength,
- NULL, true, &errorCode);
+ nullptr, true, &errorCode);
src.releaseBuffer(U_SUCCESS(errorCode) ? (int32_t)(pu-buffer) : 0);
ucnv_close(cnv);
- cnv=NULL;
+ cnv=nullptr;
if(U_FAILURE(errorCode)) {
// unexpected error in conversion from Latin-1
src.remove();
@@ -235,7 +235,7 @@ UXMLParser::parseFile(const char *filename, UErrorCode &errorCode) {
if(mXMLDecl.reset(src).lookingAt(0, errorCode)) {
int32_t declEnd=mXMLDecl.end(errorCode);
// go beyond <?xml
- int32_t pos=src.indexOf((UChar)x_l)+1;
+ int32_t pos=src.indexOf((char16_t)x_l)+1;
mAttrValue.reset(src);
while(pos<declEnd && mAttrValue.lookingAt(pos, errorCode)) { // loop runs once per attribute on this element.
@@ -255,7 +255,7 @@ UXMLParser::parseFile(const char *filename, UErrorCode &errorCode) {
pos = mAttrValue.end(2, errorCode);
}
- if(charset==NULL) {
+ if(charset==nullptr) {
// default to UTF-8
charset="UTF-8";
}
@@ -279,7 +279,7 @@ UXMLParser::parseFile(const char *filename, UErrorCode &errorCode) {
for(;;) {
length=src.length();
buffer=toUCharPtr(src.getBuffer(capacity));
- if(buffer==NULL) {
+ if(buffer==nullptr) {
// unexpected failure to reserve some string capacity
errorCode=U_MEMORY_ALLOCATION_ERROR;
goto exit;
@@ -289,7 +289,7 @@ UXMLParser::parseFile(const char *filename, UErrorCode &errorCode) {
ucnv_toUnicode(
cnv, &pu, buffer+src.getCapacity(),
&pb, bytes+bytesLength,
- NULL, false, &errorCode);
+ nullptr, false, &errorCode);
src.releaseBuffer(U_SUCCESS(errorCode) ? (int32_t)(pu-buffer) : 0);
if(errorCode==U_BUFFER_OVERFLOW_ERROR) {
errorCode=U_ZERO_ERROR;
@@ -322,17 +322,17 @@ exit:
if(U_SUCCESS(errorCode)) {
return parse(src, errorCode);
} else {
- return NULL;
+ return nullptr;
}
}
UXMLElement *
UXMLParser::parse(const UnicodeString &src, UErrorCode &status) {
if(U_FAILURE(status)) {
- return NULL;
+ return nullptr;
}
- UXMLElement *root = NULL;
+ UXMLElement *root = nullptr;
fPos = 0; // TODO use just a local pos variable and pass it into functions
// where necessary?
@@ -435,7 +435,7 @@ UXMLParser::parse(const UnicodeString &src, UErrorCode &status) {
}
if (fElementStack.empty()) {
// Close of the root element. We're done with the doc.
- el = NULL;
+ el = nullptr;
break;
}
el = (UXMLElement *)fElementStack.pop();
@@ -455,7 +455,7 @@ UXMLParser::parse(const UnicodeString &src, UErrorCode &status) {
break;
}
- if (el != NULL || !fElementStack.empty()) {
+ if (el != nullptr || !fElementStack.empty()) {
// We bailed out early, for some reason.
error("Root element not closed.", status);
goto errorExit;
@@ -477,7 +477,7 @@ UXMLParser::parse(const UnicodeString &src, UErrorCode &status) {
errorExit:
delete root;
- return NULL;
+ return nullptr;
}
//
@@ -514,7 +514,7 @@ UXMLParser::createElement(RegexMatcher &mEl, UErrorCode &status) {
// Next change all xml white space chars to plain \u0020 spaces.
mAttrNormalizer.reset(attValue);
- UnicodeString oneSpace((UChar)0x0020);
+ UnicodeString oneSpace((char16_t)0x0020);
attValue = mAttrNormalizer.replaceAll(oneSpace, status);
// Replace character entities.
@@ -595,15 +595,15 @@ UXMLParser::replaceCharRefs(UnicodeString &s, UErrorCode &status) {
// which is flagged by start() of that group not being -1.
while (mAmps.find()) {
if (mAmps.start(1, status) != -1) {
- replacement.setTo((UChar)x_AMP);
+ replacement.setTo((char16_t)x_AMP);
} else if (mAmps.start(2, status) != -1) {
- replacement.setTo((UChar)x_LT);
+ replacement.setTo((char16_t)x_LT);
} else if (mAmps.start(3, status) != -1) {
- replacement.setTo((UChar)x_GT);
+ replacement.setTo((char16_t)x_GT);
} else if (mAmps.start(4, status) != -1) {
- replacement.setTo((UChar)x_APOS);
+ replacement.setTo((char16_t)x_APOS);
} else if (mAmps.start(5, status) != -1) {
- replacement.setTo((UChar)x_QUOT);
+ replacement.setTo((char16_t)x_QUOT);
} else if (mAmps.start(6, status) != -1) {
UnicodeString hexString = mAmps.group(6, status);
UChar32 val = 0;
@@ -639,7 +639,7 @@ UXMLParser::error(const char *message, UErrorCode &status) {
int line = 0;
int ci = 0;
while (ci < fPos && ci>=0) {
- ci = src.indexOf((UChar)0x0a, ci+1);
+ ci = src.indexOf((char16_t)0x0a, ci+1);
line++;
}
fprintf(stderr, "Error: %s at line %d\n", message, line);
@@ -653,7 +653,7 @@ UXMLParser::error(const char *message, UErrorCode &status) {
const UnicodeString *
UXMLParser::intern(const UnicodeString &s, UErrorCode &errorCode) {
const UHashElement *he=fNames.find(s);
- if(he!=NULL) {
+ if(he!=nullptr) {
// already a known name, return its hashed key pointer
return (const UnicodeString *)he->key.pointer;
} else {
@@ -667,12 +667,12 @@ UXMLParser::intern(const UnicodeString &s, UErrorCode &errorCode) {
const UnicodeString *
UXMLParser::findName(const UnicodeString &s) const {
const UHashElement *he=fNames.find(s);
- if(he!=NULL) {
+ if(he!=nullptr) {
// a known name, return its hashed key pointer
return (const UnicodeString *)he->key.pointer;
} else {
// unknown name
- return NULL;
+ return nullptr;
}
}
@@ -684,7 +684,7 @@ UXMLElement::UXMLElement(const UXMLParser *parser, const UnicodeString *name, UE
fAttNames(errorCode),
fAttValues(errorCode),
fChildren(errorCode),
- fParent(NULL)
+ fParent(nullptr)
{
}
@@ -718,7 +718,7 @@ UXMLElement::appendText(UnicodeString &text, UBool recurse) const {
for(i=0; i<count; ++i) {
node=(const UObject *)fChildren.elementAt(i);
const UnicodeString *s=dynamic_cast<const UnicodeString *>(node);
- if(s!=NULL) {
+ if(s!=nullptr) {
text.append(*s);
} else if(recurse) /* must be a UXMLElement */ {
((const UXMLElement *)node)->appendText(text, recurse);
@@ -738,7 +738,7 @@ UXMLElement::getAttribute(int32_t i, UnicodeString &name, UnicodeString &value)
value.setTo(*(const UnicodeString *)fAttValues.elementAt(i));
return &value; // or return (UnicodeString *)fAttValues.elementAt(i);
} else {
- return NULL;
+ return nullptr;
}
}
@@ -747,8 +747,8 @@ UXMLElement::getAttribute(const UnicodeString &name) const {
// search for the attribute name by comparing the interned pointer,
// not the string contents
const UnicodeString *p=fParser->findName(name);
- if(p==NULL) {
- return NULL; // no such attribute seen by the parser at all
+ if(p==nullptr) {
+ return nullptr; // no such attribute seen by the parser at all
}
int32_t i, count=fAttNames.size();
@@ -757,7 +757,7 @@ UXMLElement::getAttribute(const UnicodeString &name) const {
return (const UnicodeString *)fAttValues.elementAt(i);
}
}
- return NULL;
+ return nullptr;
}
int32_t
@@ -769,21 +769,21 @@ const UObject *
UXMLElement::getChild(int32_t i, UXMLNodeType &type) const {
if(0<=i && i<fChildren.size()) {
const UObject *node=(const UObject *)fChildren.elementAt(i);
- if(dynamic_cast<const UXMLElement *>(node)!=NULL) {
+ if(dynamic_cast<const UXMLElement *>(node)!=nullptr) {
type=UXML_NODE_TYPE_ELEMENT;
} else {
type=UXML_NODE_TYPE_STRING;
}
return node;
} else {
- return NULL;
+ return nullptr;
}
}
const UXMLElement *
UXMLElement::nextChildElement(int32_t &i) const {
if(i<0) {
- return NULL;
+ return nullptr;
}
const UObject *node;
@@ -791,11 +791,11 @@ UXMLElement::nextChildElement(int32_t &i) const {
while(i<count) {
node=(const UObject *)fChildren.elementAt(i++);
const UXMLElement *elem=dynamic_cast<const UXMLElement *>(node);
- if(elem!=NULL) {
+ if(elem!=nullptr) {
return elem;
}
}
- return NULL;
+ return nullptr;
}
const UXMLElement *
@@ -803,8 +803,8 @@ UXMLElement::getChildElement(const UnicodeString &name) const {
// search for the element name by comparing the interned pointer,
// not the string contents
const UnicodeString *p=fParser->findName(name);
- if(p==NULL) {
- return NULL; // no such element seen by the parser at all
+ if(p==nullptr) {
+ return nullptr; // no such element seen by the parser at all
}
const UObject *node;
@@ -812,13 +812,13 @@ UXMLElement::getChildElement(const UnicodeString &name) const {
for(i=0; i<count; ++i) {
node=(const UObject *)fChildren.elementAt(i);
const UXMLElement *elem=dynamic_cast<const UXMLElement *>(node);
- if(elem!=NULL) {
+ if(elem!=nullptr) {
if(p==elem->fName) {
return elem;
}
}
}
- return NULL;
+ return nullptr;
}
U_NAMESPACE_END
diff --git a/Build/source/libs/icu/icu-src/source/tools/toolutil/xmlparser.h b/Build/source/libs/icu/icu-src/source/tools/toolutil/xmlparser.h
index 7f798f66f77..d0dcd9a48a2 100644
--- a/Build/source/libs/icu/icu-src/source/tools/toolutil/xmlparser.h
+++ b/Build/source/libs/icu/icu-src/source/tools/toolutil/xmlparser.h
@@ -76,13 +76,13 @@ public:
* @param name Output parameter, receives the attribute name.
* @param value Output parameter, receives the attribute value.
* @return A pointer to the attribute value (may be &value or a pointer to an
- * internal string object), or NULL if i is out of bounds.
+ * internal string object), or nullptr if i is out of bounds.
*/
const UnicodeString *getAttribute(int32_t i, UnicodeString &name, UnicodeString &value) const;
/**
* Get the value of the attribute with the given name.
* @param name Attribute name to be looked up.
- * @return A pointer to the attribute value, or NULL if this element
+ * @return A pointer to the attribute value, or nullptr if this element
* does not have this attribute.
*/
const UnicodeString *getAttribute(const UnicodeString &name) const;
@@ -94,13 +94,13 @@ public:
* Get the i-th child node.
* @param i Index of the child node.
* @param type The child node type.
- * @return A pointer to the child node object, or NULL if i is out of bounds.
+ * @return A pointer to the child node object, or nullptr if i is out of bounds.
*/
const UObject *getChild(int32_t i, UXMLNodeType &type) const;
/**
* Get the next child element node, skipping non-element child nodes.
* @param i Enumeration index; initialize to 0 before getting the first child element.
- * @return A pointer to the next child element, or NULL if there is none.
+ * @return A pointer to the next child element, or nullptr if there is none.
*/
const UXMLElement *nextChildElement(int32_t &i) const;
/**
@@ -108,7 +108,7 @@ public:
* If there are multiple child elements with this name, then return
* the first one.
* @param name Element name to be looked up.
- * @return A pointer to the element node, or NULL if this element
+ * @return A pointer to the element node, or nullptr if this element
* does not have this immediate child element.
*/
const UXMLElement *getChildElement(const UnicodeString &name) const;
diff --git a/Build/source/libs/icu/icu-src/source/tools/tzcode/icuregions b/Build/source/libs/icu/icu-src/source/tools/tzcode/icuregions
index ed9dfe534cc..2cf5d2f7015 100644
--- a/Build/source/libs/icu/icu-src/source/tools/tzcode/icuregions
+++ b/Build/source/libs/icu/icu-src/source/tools/tzcode/icuregions
@@ -13,6 +13,7 @@ Africa/Asmera ER
Africa/Timbuktu ML
America/Coral_Harbour CA
America/Montreal CA
+America/Pangnirtung CA
America/Virgin VI
Antarctica/South_Pole AQ
Atlantic/Jan_Mayen SJ
diff --git a/Build/source/libs/icu/icu-src/source/tools/tzcode/icuzdump.cpp b/Build/source/libs/icu/icu-src/source/tools/tzcode/icuzdump.cpp
index 78d84ff445a..c82fc433732 100644
--- a/Build/source/libs/icu/icu-src/source/tools/tzcode/icuzdump.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/tzcode/icuzdump.cpp
@@ -98,7 +98,7 @@ public:
loyear = 1902;
hiyear = 2050;
tick = 1000;
- linesep = NULL;
+ linesep = nullptr;
}
~ICUZDump() {
@@ -176,7 +176,7 @@ public:
str.remove();
formatter->format(hit, newRawOffset + newDstOffset, (newDstOffset == 0 ? false : true), str);
out << str;
- if (linesep != NULL) {
+ if (linesep != nullptr) {
out << linesep;
} else {
out << endl;
@@ -218,38 +218,38 @@ public:
// TODO: Add error case handling later.
}
else {
- zenum = NULL;
- zids = NULL;
+ zenum = nullptr;
+ zids = nullptr;
idx = 0;
numids = 1;
}
}
ZoneIterator(const char** ids, int32_t num) {
- zenum = NULL;
+ zenum = nullptr;
zids = ids;
idx = 0;
numids = num;
}
~ZoneIterator() {
- if (zenum != NULL) {
+ if (zenum != nullptr) {
delete zenum;
}
}
TimeZone* next() {
- TimeZone* tz = NULL;
- if (zenum != NULL) {
+ TimeZone* tz = nullptr;
+ if (zenum != nullptr) {
UErrorCode status = U_ZERO_ERROR;
const UnicodeString* zid = zenum->snext(status);
- if (zid != NULL) {
+ if (zid != nullptr) {
tz = TimeZone::createTimeZone(*zid);
}
}
else {
if (idx < numids) {
- if (zids != NULL) {
+ if (zids != nullptr) {
tz = TimeZone::createTimeZone((const UnicodeString&)zids[idx]);
}
else {
@@ -291,8 +291,8 @@ main(int argc, char *argv[]) {
int32_t low = 1902;
int32_t high = 2038;
UBool bAll = false;
- const char *dir = NULL;
- const char *linesep = NULL;
+ const char *dir = nullptr;
+ const char *linesep = nullptr;
U_MAIN_INIT_ARGS(argc, argv);
argc = u_parseArgs(argc, argv, UPRV_LENGTHOF(options), options);
@@ -338,7 +338,7 @@ main(int argc, char *argv[]) {
if (options[kOptCutover].doesOccur) {
char* comma = (char*)strchr(options[kOptCutover].value, ',');
- if (comma == NULL) {
+ if (comma == nullptr) {
high = atoi(options[kOptCutover].value);
} else {
*comma = 0;
@@ -350,7 +350,7 @@ main(int argc, char *argv[]) {
ICUZDump dumper;
dumper.setLowYear(low);
dumper.setHighYear(high);
- if (dir != NULL && linesep != NULL) {
+ if (dir != nullptr && linesep != nullptr) {
// use the specified line separator only for file output
dumper.setLineSeparator((const char*)linesep);
}
@@ -367,16 +367,16 @@ main(int argc, char *argv[]) {
}
UnicodeString id;
- if (dir != NULL) {
+ if (dir != nullptr) {
// file output
ostringstream path;
ios::openmode mode = ios::out;
- if (linesep != NULL) {
+ if (linesep != nullptr) {
mode |= ios::binary;
}
for (;;) {
TimeZone* tz = zit->next();
- if (tz == NULL) {
+ if (tz == nullptr) {
break;
}
dumper.setTimeZone(tz);
@@ -407,7 +407,7 @@ main(int argc, char *argv[]) {
UBool bFirst = true;
for (;;) {
TimeZone* tz = zit->next();
- if (tz == NULL) {
+ if (tz == nullptr) {
break;
}
dumper.setTimeZone(tz);
diff --git a/Build/source/libs/icu/icu-src/source/tools/tzcode/tz2icu.cpp b/Build/source/libs/icu/icu-src/source/tools/tzcode/tz2icu.cpp
index fada95d79ac..0adb1bdeb34 100644
--- a/Build/source/libs/icu/icu-src/source/tools/tzcode/tz2icu.cpp
+++ b/Build/source/libs/icu/icu-src/source/tools/tzcode/tz2icu.cpp
@@ -650,7 +650,7 @@ void scandir(string dir, string prefix="") {
vector<string> subdirs;
vector<string> subfiles;
- if ((dp = opendir(dir.c_str())) == NULL) {
+ if ((dp = opendir(dir.c_str())) == nullptr) {
cerr << "Error: Invalid directory: " << dir << endl;
exit(1);
}
@@ -659,7 +659,7 @@ void scandir(string dir, string prefix="") {
exit(1);
}
chdir(dir.c_str());
- while ((dir_entry = readdir(dp)) != NULL) {
+ while ((dir_entry = readdir(dp)) != nullptr) {
string name = dir_entry->d_name;
string path = dir + "/" + name;
lstat(dir_entry->d_name,&stat_info);